{
  "version": 3,
  "sources": ["../../../node_modules/async/dist/async.js", "../../../node_modules/nconf/node_modules/ini/ini.js", "../../../node_modules/nconf/lib/nconf/formats.js", "../../../node_modules/nconf/lib/nconf/stores/memory.js", "../../../node_modules/nconf/lib/nconf/common.js", "../../../node_modules/nconf/lib/nconf/provider.js", "../../../node_modules/nconf/package.json", "../../../node_modules/y18n/build/index.cjs", "../../../node_modules/nconf/node_modules/yargs-parser/build/index.cjs", "../../../node_modules/ansi-regex/index.js", "../../../node_modules/strip-ansi/index.js", "../../../node_modules/is-fullwidth-code-point/index.js", "../../../node_modules/emoji-regex/index.js", "../../../node_modules/string-width/index.js", "../../../node_modules/wrap-ansi/node_modules/color-name/index.js", "../../../node_modules/wrap-ansi/node_modules/color-convert/conversions.js", "../../../node_modules/wrap-ansi/node_modules/color-convert/route.js", "../../../node_modules/wrap-ansi/node_modules/color-convert/index.js", "../../../node_modules/wrap-ansi/node_modules/ansi-styles/index.js", "../../../node_modules/wrap-ansi/index.js", "../../../node_modules/nconf/node_modules/cliui/build/index.cjs", "../../../node_modules/escalade/sync/index.js", "../../../node_modules/get-caller-file/index.ts", "../../../node_modules/require-directory/index.js", "../../../node_modules/nconf/node_modules/yargs/build/index.cjs", "../../../node_modules/nconf/node_modules/yargs/index.cjs", "../../../node_modules/nconf/lib/nconf/stores/argv.js", "../../../node_modules/nconf/lib/nconf/stores/env.js", "../../../node_modules/secure-keys/index.js", "../../../node_modules/nconf/lib/nconf/stores/file.js", "../../../node_modules/nconf/lib/nconf/stores/literal.js", "../../../node_modules/nconf/lib/nconf.js", "../../service-config/src/index.ts", "../../../node_modules/source-map/lib/base64.js", "../../../node_modules/source-map/lib/base64-vlq.js", "../../../node_modules/source-map/lib/util.js", "../../../node_modules/source-map/lib/array-set.js", "../../../node_modules/source-map/lib/mapping-list.js", "../../../node_modules/source-map/lib/source-map-generator.js", "../../../node_modules/source-map/lib/binary-search.js", "../../../node_modules/source-map/lib/quick-sort.js", "../../../node_modules/source-map/lib/source-map-consumer.js", "../../../node_modules/source-map/lib/source-node.js", "../../../node_modules/source-map/source-map.js", "../../../node_modules/buffer-from/index.js", "../../../node_modules/source-map-support/source-map-support.js", "../../../node_modules/source-map-support/register.js", "../../../node_modules/logform/format.js", "../../../node_modules/@colors/colors/lib/styles.js", "../../../node_modules/@colors/colors/lib/system/has-flag.js", "../../../node_modules/@colors/colors/lib/system/supports-colors.js", "../../../node_modules/@colors/colors/lib/custom/trap.js", "../../../node_modules/@colors/colors/lib/custom/zalgo.js", "../../../node_modules/@colors/colors/lib/maps/america.js", "../../../node_modules/@colors/colors/lib/maps/zebra.js", "../../../node_modules/@colors/colors/lib/maps/rainbow.js", "../../../node_modules/@colors/colors/lib/maps/random.js", "../../../node_modules/@colors/colors/lib/colors.js", "../../../node_modules/@colors/colors/safe.js", "../../../node_modules/triple-beam/config/cli.js", "../../../node_modules/triple-beam/config/npm.js", "../../../node_modules/triple-beam/config/syslog.js", "../../../node_modules/triple-beam/config/index.js", "../../../node_modules/triple-beam/index.js", "../../../node_modules/logform/colorize.js", "../../../node_modules/logform/levels.js", "../../../node_modules/logform/align.js", "../../../node_modules/logform/errors.js", "../../../node_modules/logform/pad-levels.js", "../../../node_modules/logform/cli.js", "../../../node_modules/logform/combine.js", "../../../node_modules/safe-stable-stringify/index.js", "../../../node_modules/logform/json.js", "../../../node_modules/logform/label.js", "../../../node_modules/logform/logstash.js", "../../../node_modules/logform/metadata.js", "../../../node_modules/ms/index.js", "../../../node_modules/logform/ms.js", "../../../node_modules/logform/pretty-print.js", "../../../node_modules/logform/printf.js", "../../../node_modules/logform/simple.js", "../../../node_modules/logform/splat.js", "../../../node_modules/fecha/src/fecha.ts", "../../../node_modules/logform/timestamp.js", "../../../node_modules/logform/uncolorize.js", "../../../node_modules/logform/index.js", "../../../node_modules/winston/lib/winston/common.js", "../../../node_modules/winston/package.json", "../../../node_modules/util-deprecate/node.js", "../../../node_modules/readable-stream/lib/internal/streams/stream.js", "../../../node_modules/readable-stream/lib/internal/streams/destroy.js", "../../../node_modules/readable-stream/errors.js", "../../../node_modules/readable-stream/lib/internal/streams/state.js", "../../../node_modules/inherits/inherits_browser.js", "../../../node_modules/inherits/inherits.js", "../../../node_modules/readable-stream/lib/internal/streams/buffer_list.js", "../../../node_modules/safe-buffer/index.js", "../../../node_modules/string_decoder/lib/string_decoder.js", "../../../node_modules/readable-stream/lib/internal/streams/end-of-stream.js", "../../../node_modules/readable-stream/lib/internal/streams/async_iterator.js", "../../../node_modules/readable-stream/lib/internal/streams/from.js", "../../../node_modules/readable-stream/lib/_stream_readable.js", "../../../node_modules/readable-stream/lib/_stream_duplex.js", "../../../node_modules/readable-stream/lib/_stream_writable.js", "../../../node_modules/winston-transport/modern.js", "../../../node_modules/winston-transport/legacy.js", "../../../node_modules/winston-transport/index.js", "../../../node_modules/winston/lib/winston/transports/console.js", "../../../node_modules/async/internal/isArrayLike.js", "../../../node_modules/async/internal/initialParams.js", "../../../node_modules/async/internal/setImmediate.js", "../../../node_modules/async/asyncify.js", "../../../node_modules/async/internal/wrapAsync.js", "../../../node_modules/async/internal/awaitify.js", "../../../node_modules/async/internal/parallel.js", "../../../node_modules/async/internal/once.js", "../../../node_modules/async/internal/getIterator.js", "../../../node_modules/async/internal/iterator.js", "../../../node_modules/async/internal/onlyOnce.js", "../../../node_modules/async/internal/breakLoop.js", "../../../node_modules/async/internal/asyncEachOfLimit.js", "../../../node_modules/async/internal/eachOfLimit.js", "../../../node_modules/async/eachOfLimit.js", "../../../node_modules/async/eachOfSeries.js", "../../../node_modules/async/series.js", "../../../node_modules/readable-stream/lib/_stream_transform.js", "../../../node_modules/readable-stream/lib/_stream_passthrough.js", "../../../node_modules/readable-stream/lib/internal/streams/pipeline.js", "../../../node_modules/readable-stream/readable.js", "../../../node_modules/@dabh/diagnostics/diagnostics.js", "../../../node_modules/@dabh/diagnostics/node/production.js", "../../../node_modules/@so-ric/colorspace/dist/index.cjs.js", "../../../node_modules/kuler/index.js", "../../../node_modules/@dabh/diagnostics/modifiers/namespace-ansi.js", "../../../node_modules/enabled/index.js", "../../../node_modules/@dabh/diagnostics/adapters/index.js", "../../../node_modules/@dabh/diagnostics/adapters/process.env.js", "../../../node_modules/@dabh/diagnostics/logger/console.js", "../../../node_modules/@dabh/diagnostics/node/development.js", "../../../node_modules/@dabh/diagnostics/node/index.js", "../../../node_modules/winston/lib/winston/tail-file.js", "../../../node_modules/winston/lib/winston/transports/file.js", "../../../node_modules/winston/lib/winston/transports/http.js", "../../../node_modules/is-stream/index.js", "../../../node_modules/winston/lib/winston/transports/stream.js", "../../../node_modules/winston/lib/winston/transports/index.js", "../../../node_modules/winston/lib/winston/config/index.js", "../../../node_modules/async/eachOf.js", "../../../node_modules/async/internal/withoutIndex.js", "../../../node_modules/async/forEach.js", "../../../node_modules/fn.name/index.js", "../../../node_modules/one-time/index.js", "../../../node_modules/stack-trace/lib/stack-trace.js", "../../../node_modules/winston/lib/winston/exception-stream.js", "../../../node_modules/winston/lib/winston/exception-handler.js", "../../../node_modules/winston/lib/winston/rejection-stream.js", "../../../node_modules/winston/lib/winston/rejection-handler.js", "../../../node_modules/winston/lib/winston/profiler.js", "../../../node_modules/winston/lib/winston/logger.js", "../../../node_modules/winston/lib/winston/create-logger.js", "../../../node_modules/winston/lib/winston/container.js", "../../../node_modules/winston/lib/winston.js", "../../../node_modules/cls-rtracer/src/util.js", "../../../node_modules/uuid/dist/esm-node/rng.js", "../../../node_modules/uuid/dist/esm-node/regex.js", "../../../node_modules/uuid/dist/esm-node/validate.js", "../../../node_modules/uuid/dist/esm-node/stringify.js", "../../../node_modules/uuid/dist/esm-node/v1.js", "../../../node_modules/uuid/dist/esm-node/parse.js", "../../../node_modules/uuid/dist/esm-node/v35.js", "../../../node_modules/uuid/dist/esm-node/md5.js", "../../../node_modules/uuid/dist/esm-node/v3.js", "../../../node_modules/uuid/dist/esm-node/native.js", "../../../node_modules/uuid/dist/esm-node/v4.js", "../../../node_modules/uuid/dist/esm-node/sha1.js", "../../../node_modules/uuid/dist/esm-node/v5.js", "../../../node_modules/uuid/dist/esm-node/nil.js", "../../../node_modules/uuid/dist/esm-node/version.js", "../../../node_modules/uuid/dist/esm-node/index.js", "../../../node_modules/cls-rtracer/src/rtracer.js", "../../../node_modules/cls-rtracer/index.js", "../../../node_modules/lodash/lodash.js", "../../logger/src/utils.ts", "../../logger/src/console.ts", "../../logger/src/file.ts", "../../../node_modules/dayjs/dayjs.min.js", "../../../node_modules/lodash.defaults/index.js", "../../../node_modules/lodash.omit/index.js", "../../../node_modules/@elastic/transport/src/security.ts", "../../../node_modules/@elastic/transport/src/errors.ts", "../../../node_modules/@elastic/transport/src/Diagnostic.ts", "../../../node_modules/tslib/tslib.es6.mjs", "../../../node_modules/debug/src/common.js", "../../../node_modules/debug/src/browser.js", "../../../node_modules/has-flag/index.js", "../../../node_modules/supports-color/index.js", "../../../node_modules/debug/src/node.js", "../../../node_modules/debug/src/index.js", "../../../node_modules/@elastic/transport/src/symbols.ts", "../../../node_modules/@elastic/transport/src/connection/BaseConnection.ts", "../../../node_modules/secure-json-parse/index.js", "../../../node_modules/@elastic/transport/src/Serializer.ts", "../../../node_modules/@opentelemetry/api/src/platform/node/globalThis.ts", "../../../node_modules/@opentelemetry/api/src/platform/node/index.ts", "../../../node_modules/@opentelemetry/api/src/platform/index.ts", "../../../node_modules/@opentelemetry/api/src/version.ts", "../../../node_modules/@opentelemetry/api/src/internal/semver.ts", "../../../node_modules/@opentelemetry/api/src/internal/global-utils.ts", "../../../node_modules/@opentelemetry/api/src/diag/ComponentLogger.ts", "../../../node_modules/@opentelemetry/api/src/diag/types.ts", "../../../node_modules/@opentelemetry/api/src/diag/internal/logLevelLogger.ts", "../../../node_modules/@opentelemetry/api/src/api/diag.ts", "../../../node_modules/@opentelemetry/api/src/baggage/internal/baggage-impl.ts", "../../../node_modules/@opentelemetry/api/src/baggage/internal/symbol.ts", "../../../node_modules/@opentelemetry/api/src/baggage/utils.ts", "../../../node_modules/@opentelemetry/api/src/context/context.ts", "../../../node_modules/@opentelemetry/api/src/diag/consoleLogger.ts", "../../../node_modules/@opentelemetry/api/src/metrics/NoopMeter.ts", "../../../node_modules/@opentelemetry/api/src/metrics/Metric.ts", "../../../node_modules/@opentelemetry/api/src/propagation/TextMapPropagator.ts", "../../../node_modules/@opentelemetry/api/src/context/NoopContextManager.ts", "../../../node_modules/@opentelemetry/api/src/api/context.ts", "../../../node_modules/@opentelemetry/api/src/trace/trace_flags.ts", "../../../node_modules/@opentelemetry/api/src/trace/invalid-span-constants.ts", "../../../node_modules/@opentelemetry/api/src/trace/NonRecordingSpan.ts", "../../../node_modules/@opentelemetry/api/src/trace/context-utils.ts", "../../../node_modules/@opentelemetry/api/src/trace/spancontext-utils.ts", "../../../node_modules/@opentelemetry/api/src/trace/NoopTracer.ts", "../../../node_modules/@opentelemetry/api/src/trace/ProxyTracer.ts", "../../../node_modules/@opentelemetry/api/src/trace/NoopTracerProvider.ts", "../../../node_modules/@opentelemetry/api/src/trace/ProxyTracerProvider.ts", "../../../node_modules/@opentelemetry/api/src/trace/SamplingResult.ts", "../../../node_modules/@opentelemetry/api/src/trace/span_kind.ts", "../../../node_modules/@opentelemetry/api/src/trace/status.ts", "../../../node_modules/@opentelemetry/api/src/trace/internal/tracestate-validators.ts", "../../../node_modules/@opentelemetry/api/src/trace/internal/tracestate-impl.ts", "../../../node_modules/@opentelemetry/api/src/trace/internal/utils.ts", "../../../node_modules/@opentelemetry/api/src/context-api.ts", "../../../node_modules/@opentelemetry/api/src/diag-api.ts", "../../../node_modules/@opentelemetry/api/src/metrics/NoopMeterProvider.ts", "../../../node_modules/@opentelemetry/api/src/api/metrics.ts", "../../../node_modules/@opentelemetry/api/src/metrics-api.ts", "../../../node_modules/@opentelemetry/api/src/propagation/NoopTextMapPropagator.ts", "../../../node_modules/@opentelemetry/api/src/baggage/context-helpers.ts", "../../../node_modules/@opentelemetry/api/src/api/propagation.ts", "../../../node_modules/@opentelemetry/api/src/propagation-api.ts", "../../../node_modules/@opentelemetry/api/src/api/trace.ts", "../../../node_modules/@opentelemetry/api/src/trace-api.ts", "../../../node_modules/@opentelemetry/api/src/index.ts", "../../../node_modules/@opentelemetry/core/src/trace/suppress-tracing.ts", "../../../node_modules/@opentelemetry/core/src/baggage/constants.ts", "../../../node_modules/@opentelemetry/core/src/baggage/utils.ts", "../../../node_modules/@opentelemetry/core/src/baggage/propagation/W3CBaggagePropagator.ts", "../../../node_modules/@opentelemetry/core/src/common/anchored-clock.ts", "../../../node_modules/@opentelemetry/core/src/common/attributes.ts", "../../../node_modules/@opentelemetry/core/src/common/logging-error-handler.ts", "../../../node_modules/@opentelemetry/core/src/common/global-error-handler.ts", "../../../node_modules/@opentelemetry/core/src/platform/node/environment.ts", "../../../node_modules/@opentelemetry/core/src/platform/node/globalThis.ts", "../../../node_modules/@opentelemetry/core/src/platform/node/performance.ts", "../../../node_modules/@opentelemetry/core/src/version.ts", "../../../node_modules/@opentelemetry/semantic-conventions/src/internal/utils.ts", "../../../node_modules/@opentelemetry/semantic-conventions/src/trace/SemanticAttributes.ts", "../../../node_modules/@opentelemetry/semantic-conventions/src/trace/index.ts", "../../../node_modules/@opentelemetry/semantic-conventions/src/resource/SemanticResourceAttributes.ts", "../../../node_modules/@opentelemetry/semantic-conventions/src/resource/index.ts", "../../../node_modules/@opentelemetry/semantic-conventions/src/stable_attributes.ts", "../../../node_modules/@opentelemetry/semantic-conventions/src/stable_metrics.ts", "../../../node_modules/@opentelemetry/semantic-conventions/src/stable_events.ts", "../../../node_modules/@opentelemetry/semantic-conventions/src/index.ts", "../../../node_modules/@opentelemetry/core/src/semconv.ts", "../../../node_modules/@opentelemetry/core/src/platform/node/sdk-info.ts", "../../../node_modules/@opentelemetry/core/src/platform/node/index.ts", "../../../node_modules/@opentelemetry/core/src/platform/index.ts", "../../../node_modules/@opentelemetry/core/src/common/time.ts", "../../../node_modules/@opentelemetry/core/src/common/timer-util.ts", "../../../node_modules/@opentelemetry/core/src/ExportResult.ts", "../../../node_modules/@opentelemetry/core/src/propagation/composite.ts", "../../../node_modules/@opentelemetry/core/src/internal/validators.ts", "../../../node_modules/@opentelemetry/core/src/trace/TraceState.ts", "../../../node_modules/@opentelemetry/core/src/trace/W3CTraceContextPropagator.ts", "../../../node_modules/@opentelemetry/core/src/trace/rpc-metadata.ts", "../../../node_modules/@opentelemetry/core/src/utils/lodash.merge.ts", "../../../node_modules/@opentelemetry/core/src/utils/merge.ts", "../../../node_modules/@opentelemetry/core/src/utils/timeout.ts", "../../../node_modules/@opentelemetry/core/src/utils/url.ts", "../../../node_modules/@opentelemetry/core/src/utils/promise.ts", "../../../node_modules/@opentelemetry/core/src/utils/callback.ts", "../../../node_modules/@opentelemetry/core/src/utils/configuration.ts", "../../../node_modules/@opentelemetry/core/src/internal/exporter.ts", "../../../node_modules/@opentelemetry/core/src/index.ts", "../../../node_modules/@elastic/transport/package.json", "../../../node_modules/@elastic/transport/src/Transport.ts", "../../../node_modules/hpagent/index.js", "../../../node_modules/@elastic/transport/src/connection/HttpConnection.ts", "../../../node_modules/undici/lib/core/symbols.js", "../../../node_modules/undici/lib/core/errors.js", "../../../node_modules/undici/lib/core/constants.js", "../../../node_modules/undici/lib/core/tree.js", "../../../node_modules/undici/lib/core/util.js", "../../../node_modules/undici/lib/core/diagnostics.js", "../../../node_modules/undici/lib/core/request.js", "../../../node_modules/undici/lib/dispatcher/dispatcher.js", "../../../node_modules/undici/lib/dispatcher/dispatcher-base.js", "../../../node_modules/undici/lib/util/timers.js", "../../../node_modules/undici/lib/core/connect.js", "../../../node_modules/undici/lib/llhttp/utils.js", "../../../node_modules/undici/lib/llhttp/constants.js", "../../../node_modules/undici/lib/llhttp/llhttp-wasm.js", "../../../node_modules/undici/lib/llhttp/llhttp_simd-wasm.js", "../../../node_modules/undici/lib/web/fetch/constants.js", "../../../node_modules/undici/lib/web/fetch/global.js", "../../../node_modules/undici/lib/web/fetch/data-url.js", "../../../node_modules/undici/lib/web/fetch/webidl.js", "../../../node_modules/undici/lib/web/fetch/util.js", "../../../node_modules/undici/lib/web/fetch/symbols.js", "../../../node_modules/undici/lib/web/fetch/file.js", "../../../node_modules/undici/lib/web/fetch/formdata.js", "../../../node_modules/undici/lib/web/fetch/formdata-parser.js", "../../../node_modules/undici/lib/web/fetch/body.js", "../../../node_modules/undici/lib/dispatcher/client-h1.js", "../../../node_modules/undici/lib/dispatcher/client-h2.js", "../../../node_modules/undici/lib/handler/redirect-handler.js", "../../../node_modules/undici/lib/interceptor/redirect-interceptor.js", "../../../node_modules/undici/lib/dispatcher/client.js", "../../../node_modules/undici/lib/dispatcher/fixed-queue.js", "../../../node_modules/undici/lib/dispatcher/pool-stats.js", "../../../node_modules/undici/lib/dispatcher/pool-base.js", "../../../node_modules/undici/lib/dispatcher/pool.js", "../../../node_modules/undici/lib/dispatcher/balanced-pool.js", "../../../node_modules/undici/lib/dispatcher/agent.js", "../../../node_modules/undici/lib/dispatcher/proxy-agent.js", "../../../node_modules/undici/lib/dispatcher/env-http-proxy-agent.js", "../../../node_modules/undici/lib/handler/retry-handler.js", "../../../node_modules/undici/lib/dispatcher/retry-agent.js", "../../../node_modules/undici/lib/api/readable.js", "../../../node_modules/undici/lib/api/util.js", "../../../node_modules/undici/lib/api/api-request.js", "../../../node_modules/undici/lib/api/abort-signal.js", "../../../node_modules/undici/lib/api/api-stream.js", "../../../node_modules/undici/lib/api/api-pipeline.js", "../../../node_modules/undici/lib/api/api-upgrade.js", "../../../node_modules/undici/lib/api/api-connect.js", "../../../node_modules/undici/lib/api/index.js", "../../../node_modules/undici/lib/mock/mock-errors.js", "../../../node_modules/undici/lib/mock/mock-symbols.js", "../../../node_modules/undici/lib/mock/mock-utils.js", "../../../node_modules/undici/lib/mock/mock-interceptor.js", "../../../node_modules/undici/lib/mock/mock-client.js", "../../../node_modules/undici/lib/mock/mock-pool.js", "../../../node_modules/undici/lib/mock/pluralizer.js", "../../../node_modules/undici/lib/mock/pending-interceptors-formatter.js", "../../../node_modules/undici/lib/mock/mock-agent.js", "../../../node_modules/undici/lib/global.js", "../../../node_modules/undici/lib/handler/decorator-handler.js", "../../../node_modules/undici/lib/interceptor/redirect.js", "../../../node_modules/undici/lib/interceptor/retry.js", "../../../node_modules/undici/lib/interceptor/dump.js", "../../../node_modules/undici/lib/interceptor/dns.js", "../../../node_modules/undici/lib/web/fetch/headers.js", "../../../node_modules/undici/lib/web/fetch/response.js", "../../../node_modules/undici/lib/web/fetch/dispatcher-weakref.js", "../../../node_modules/undici/lib/web/fetch/request.js", "../../../node_modules/undici/lib/web/fetch/index.js", "../../../node_modules/undici/lib/web/fileapi/symbols.js", "../../../node_modules/undici/lib/web/fileapi/progressevent.js", "../../../node_modules/undici/lib/web/fileapi/encoding.js", "../../../node_modules/undici/lib/web/fileapi/util.js", "../../../node_modules/undici/lib/web/fileapi/filereader.js", "../../../node_modules/undici/lib/web/cache/symbols.js", "../../../node_modules/undici/lib/web/cache/util.js", "../../../node_modules/undici/lib/web/cache/cache.js", "../../../node_modules/undici/lib/web/cache/cachestorage.js", "../../../node_modules/undici/lib/web/cookies/constants.js", "../../../node_modules/undici/lib/web/cookies/util.js", "../../../node_modules/undici/lib/web/cookies/parse.js", "../../../node_modules/undici/lib/web/cookies/index.js", "../../../node_modules/undici/lib/web/websocket/events.js", "../../../node_modules/undici/lib/web/websocket/constants.js", "../../../node_modules/undici/lib/web/websocket/symbols.js", "../../../node_modules/undici/lib/web/websocket/util.js", "../../../node_modules/undici/lib/web/websocket/frame.js", "../../../node_modules/undici/lib/web/websocket/connection.js", "../../../node_modules/undici/lib/web/websocket/permessage-deflate.js", "../../../node_modules/undici/lib/web/websocket/receiver.js", "../../../node_modules/undici/lib/web/websocket/sender.js", "../../../node_modules/undici/lib/web/websocket/websocket.js", "../../../node_modules/undici/lib/web/eventsource/util.js", "../../../node_modules/undici/lib/web/eventsource/eventsource-stream.js", "../../../node_modules/undici/lib/web/eventsource/eventsource.js", "../../../node_modules/undici/index.js", "../../../node_modules/@elastic/transport/src/connection/UndiciConnection.ts", "../../../node_modules/@elastic/transport/src/connection/index.ts", "../../../node_modules/@elastic/transport/src/pool/BaseConnectionPool.ts", "../../../node_modules/@elastic/transport/src/pool/WeightedConnectionPool.ts", "../../../node_modules/@elastic/transport/src/pool/ClusterConnectionPool.ts", "../../../node_modules/@elastic/transport/src/pool/CloudConnectionPool.ts", "../../../node_modules/@elastic/transport/src/pool/index.ts", "../../../node_modules/@elastic/transport/index.js", "../../../node_modules/@elastic/src/sniffingTransport.ts", "../../../node_modules/apache-arrow/util/utf8.ts", "../../../node_modules/apache-arrow/util/compat.ts", "../../../node_modules/apache-arrow/util/buffer.ts", "../../../node_modules/apache-arrow/io/adapters.ts", "../../../node_modules/apache-arrow/fb/metadata-version.ts", "../../../node_modules/apache-arrow/fb/union-mode.ts", "../../../node_modules/apache-arrow/fb/precision.ts", "../../../node_modules/apache-arrow/fb/date-unit.ts", "../../../node_modules/apache-arrow/fb/time-unit.ts", "../../../node_modules/apache-arrow/fb/interval-unit.ts", "../../../node_modules/flatbuffers/js/constants.js", "../../../node_modules/flatbuffers/js/utils.js", "../../../node_modules/flatbuffers/js/encoding.js", "../../../node_modules/flatbuffers/js/byte-buffer.js", "../../../node_modules/flatbuffers/js/builder.js", "../../../node_modules/flatbuffers/js/flatbuffers.js", "../../../node_modules/apache-arrow/fb/body-compression-method.ts", "../../../node_modules/apache-arrow/fb/compression-type.ts", "../../../node_modules/apache-arrow/fb/body-compression.ts", "../../../node_modules/apache-arrow/fb/buffer.ts", "../../../node_modules/apache-arrow/fb/field-node.ts", "../../../node_modules/apache-arrow/fb/record-batch.ts", "../../../node_modules/apache-arrow/fb/dictionary-batch.ts", "../../../node_modules/apache-arrow/fb/endianness.ts", "../../../node_modules/apache-arrow/fb/dictionary-kind.ts", "../../../node_modules/apache-arrow/fb/int.ts", "../../../node_modules/apache-arrow/fb/dictionary-encoding.ts", "../../../node_modules/apache-arrow/fb/key-value.ts", "../../../node_modules/apache-arrow/fb/binary.ts", "../../../node_modules/apache-arrow/fb/bool.ts", "../../../node_modules/apache-arrow/fb/date.ts", "../../../node_modules/apache-arrow/fb/decimal.ts", "../../../node_modules/apache-arrow/fb/duration.ts", "../../../node_modules/apache-arrow/fb/fixed-size-binary.ts", "../../../node_modules/apache-arrow/fb/fixed-size-list.ts", "../../../node_modules/apache-arrow/fb/floating-point.ts", "../../../node_modules/apache-arrow/fb/interval.ts", "../../../node_modules/apache-arrow/fb/large-binary.ts", "../../../node_modules/apache-arrow/fb/large-list.ts", "../../../node_modules/apache-arrow/fb/large-utf8.ts", "../../../node_modules/apache-arrow/fb/list.ts", "../../../node_modules/apache-arrow/fb/map.ts", "../../../node_modules/apache-arrow/fb/null.ts", "../../../node_modules/apache-arrow/fb/run-end-encoded.ts", "../../../node_modules/apache-arrow/fb/struct-.ts", "../../../node_modules/apache-arrow/fb/time.ts", "../../../node_modules/apache-arrow/fb/timestamp.ts", "../../../node_modules/apache-arrow/fb/union.ts", "../../../node_modules/apache-arrow/fb/utf8.ts", "../../../node_modules/apache-arrow/fb/type.ts", "../../../node_modules/apache-arrow/fb/field.ts", "../../../node_modules/apache-arrow/fb/schema.ts", "../../../node_modules/apache-arrow/fb/sparse-matrix-compressed-axis.ts", "../../../node_modules/apache-arrow/fb/sparse-matrix-index-csx.ts", "../../../node_modules/apache-arrow/fb/sparse-tensor-index-coo.ts", "../../../node_modules/apache-arrow/fb/sparse-tensor-index-csf.ts", "../../../node_modules/apache-arrow/fb/sparse-tensor-index.ts", "../../../node_modules/apache-arrow/fb/tensor-dim.ts", "../../../node_modules/apache-arrow/fb/sparse-tensor.ts", "../../../node_modules/apache-arrow/fb/tensor.ts", "../../../node_modules/apache-arrow/fb/message-header.ts", "../../../node_modules/apache-arrow/src/enum.ts", "../../../node_modules/apache-arrow/util/pretty.ts", "../../../node_modules/apache-arrow/util/bigint.ts", "../../../node_modules/apache-arrow/util/bn.ts", "../../../node_modules/apache-arrow/src/type.ts", "../../../node_modules/apache-arrow/src/visitor.ts", "../../../node_modules/apache-arrow/util/math.ts", "../../../node_modules/apache-arrow/visitor/set.ts", "../../../node_modules/apache-arrow/row/struct.ts", "../../../node_modules/apache-arrow/visitor/get.ts", "../../../node_modules/apache-arrow/row/map.ts", "../../../node_modules/apache-arrow/util/vector.ts", "../../../node_modules/apache-arrow/util/bit.ts", "../../../node_modules/apache-arrow/src/data.ts", "../../../node_modules/apache-arrow/util/chunk.ts", "../../../node_modules/apache-arrow/visitor/indexof.ts", "../../../node_modules/apache-arrow/visitor/iterator.ts", "../../../node_modules/apache-arrow/src/vector.ts", "../../../node_modules/apache-arrow/builder/valid.ts", "../../../node_modules/apache-arrow/builder/buffer.ts", "../../../node_modules/apache-arrow/src/builder.ts", "../../../node_modules/apache-arrow/fb/block.ts", "../../../node_modules/apache-arrow/fb/footer.ts", "../../../node_modules/apache-arrow/src/schema.ts", "../../../node_modules/apache-arrow/ipc/metadata/file.ts", "../../../node_modules/apache-arrow/fb/message.ts", "../../../node_modules/apache-arrow/visitor/typeassembler.ts", "../../../node_modules/apache-arrow/ipc/metadata/json.ts", "../../../node_modules/apache-arrow/ipc/metadata/message.ts", "../../../node_modules/apache-arrow/io/interfaces.ts", "../../../node_modules/apache-arrow/io/stream.ts", "../../../node_modules/apache-arrow/io/file.ts", "../../../node_modules/apache-arrow/util/int.ts", "../../../node_modules/apache-arrow/util/interval.ts", "../../../node_modules/apache-arrow/visitor/vectorloader.ts", "../../../node_modules/apache-arrow/builder/binary.ts", "../../../node_modules/apache-arrow/builder/largebinary.ts", "../../../node_modules/apache-arrow/builder/bool.ts", "../../../node_modules/apache-arrow/builder/date.ts", "../../../node_modules/apache-arrow/builder/decimal.ts", "../../../node_modules/apache-arrow/builder/dictionary.ts", "../../../node_modules/apache-arrow/builder/fixedsizebinary.ts", "../../../node_modules/apache-arrow/builder/fixedsizelist.ts", "../../../node_modules/apache-arrow/builder/float.ts", "../../../node_modules/apache-arrow/builder/interval.ts", "../../../node_modules/apache-arrow/builder/duration.ts", "../../../node_modules/apache-arrow/builder/int.ts", "../../../node_modules/apache-arrow/builder/list.ts", "../../../node_modules/apache-arrow/builder/map.ts", "../../../node_modules/apache-arrow/builder/null.ts", "../../../node_modules/apache-arrow/builder/struct.ts", "../../../node_modules/apache-arrow/builder/timestamp.ts", "../../../node_modules/apache-arrow/builder/time.ts", "../../../node_modules/apache-arrow/builder/union.ts", "../../../node_modules/apache-arrow/builder/utf8.ts", "../../../node_modules/apache-arrow/builder/largeutf8.ts", "../../../node_modules/apache-arrow/visitor/builderctor.ts", "../../../node_modules/apache-arrow/visitor/typecomparator.ts", "../../../node_modules/apache-arrow/src/factories.ts", "../../../node_modules/apache-arrow/util/recordbatch.ts", "../../../node_modules/apache-arrow/src/table.ts", "../../../node_modules/apache-arrow/src/recordbatch.ts", "../../../node_modules/apache-arrow/ipc/message.ts", "../../../node_modules/apache-arrow/ipc/compression/validators.ts", "../../../node_modules/apache-arrow/ipc/compression/registry.ts", "../../../node_modules/apache-arrow/ipc/compression/constants.ts", "../../../node_modules/apache-arrow/ipc/reader.ts", "../../../node_modules/apache-arrow/visitor/vectorassembler.ts", "../../../node_modules/apache-arrow/visitor/jsontypeassembler.ts", "../../../node_modules/apache-arrow/visitor/jsonvectorassembler.ts", "../../../node_modules/apache-arrow/ipc/writer.ts", "../../../node_modules/apache-arrow/io/node/iterable.ts", "../../../node_modules/apache-arrow/io/node/builder.ts", "../../../node_modules/apache-arrow/io/node/reader.ts", "../../../node_modules/apache-arrow/io/node/writer.ts", "../../../node_modules/apache-arrow/io/whatwg/iterable.ts", "../../../node_modules/apache-arrow/io/whatwg/builder.ts", "../../../node_modules/apache-arrow/io/whatwg/reader.ts", "../../../node_modules/apache-arrow/io/whatwg/writer.ts", "../../../node_modules/apache-arrow/ipc/serialization.ts", "../../../node_modules/apache-arrow/src/Arrow.ts", "../../../node_modules/apache-arrow/src/Arrow.dom.ts", "../../../node_modules/apache-arrow/src/Arrow.node.ts", "../../../node_modules/@elastic/src/helpers.ts", "../../../node_modules/@elastic/src/api/api/async_search.ts", "../../../node_modules/@elastic/src/api/api/autoscaling.ts", "../../../node_modules/@elastic/src/api/api/bulk.ts", "../../../node_modules/@elastic/src/api/api/capabilities.ts", "../../../node_modules/@elastic/src/api/api/cat.ts", "../../../node_modules/@elastic/src/api/api/ccr.ts", "../../../node_modules/@elastic/src/api/api/clear_scroll.ts", "../../../node_modules/@elastic/src/api/api/close_point_in_time.ts", "../../../node_modules/@elastic/src/api/api/cluster.ts", "../../../node_modules/@elastic/src/api/api/connector.ts", "../../../node_modules/@elastic/src/api/api/count.ts", "../../../node_modules/@elastic/src/api/api/create.ts", "../../../node_modules/@elastic/src/api/api/dangling_indices.ts", "../../../node_modules/@elastic/src/api/api/delete.ts", "../../../node_modules/@elastic/src/api/api/delete_by_query.ts", "../../../node_modules/@elastic/src/api/api/delete_by_query_rethrottle.ts", "../../../node_modules/@elastic/src/api/api/delete_script.ts", "../../../node_modules/@elastic/src/api/api/enrich.ts", "../../../node_modules/@elastic/src/api/api/eql.ts", "../../../node_modules/@elastic/src/api/api/esql.ts", "../../../node_modules/@elastic/src/api/api/exists.ts", "../../../node_modules/@elastic/src/api/api/exists_source.ts", "../../../node_modules/@elastic/src/api/api/explain.ts", "../../../node_modules/@elastic/src/api/api/features.ts", "../../../node_modules/@elastic/src/api/api/field_caps.ts", "../../../node_modules/@elastic/src/api/api/fleet.ts", "../../../node_modules/@elastic/src/api/api/get.ts", "../../../node_modules/@elastic/src/api/api/get_script.ts", "../../../node_modules/@elastic/src/api/api/get_script_context.ts", "../../../node_modules/@elastic/src/api/api/get_script_languages.ts", "../../../node_modules/@elastic/src/api/api/get_source.ts", "../../../node_modules/@elastic/src/api/api/graph.ts", "../../../node_modules/@elastic/src/api/api/health_report.ts", "../../../node_modules/@elastic/src/api/api/ilm.ts", "../../../node_modules/@elastic/src/api/api/index.ts", "../../../node_modules/@elastic/src/api/api/indices.ts", "../../../node_modules/@elastic/src/api/api/inference.ts", "../../../node_modules/@elastic/src/api/api/info.ts", "../../../node_modules/@elastic/src/api/api/ingest.ts", "../../../node_modules/@elastic/src/api/api/knn_search.ts", "../../../node_modules/@elastic/src/api/api/license.ts", "../../../node_modules/@elastic/src/api/api/logstash.ts", "../../../node_modules/@elastic/src/api/api/mget.ts", "../../../node_modules/@elastic/src/api/api/migration.ts", "../../../node_modules/@elastic/src/api/api/ml.ts", "../../../node_modules/@elastic/src/api/api/monitoring.ts", "../../../node_modules/@elastic/src/api/api/msearch.ts", "../../../node_modules/@elastic/src/api/api/msearch_template.ts", "../../../node_modules/@elastic/src/api/api/mtermvectors.ts", "../../../node_modules/@elastic/src/api/api/nodes.ts", "../../../node_modules/@elastic/src/api/api/open_point_in_time.ts", "../../../node_modules/@elastic/src/api/api/ping.ts", "../../../node_modules/@elastic/src/api/api/profiling.ts", "../../../node_modules/@elastic/src/api/api/put_script.ts", "../../../node_modules/@elastic/src/api/api/query_rules.ts", "../../../node_modules/@elastic/src/api/api/rank_eval.ts", "../../../node_modules/@elastic/src/api/api/reindex.ts", "../../../node_modules/@elastic/src/api/api/reindex_rethrottle.ts", "../../../node_modules/@elastic/src/api/api/render_search_template.ts", "../../../node_modules/@elastic/src/api/api/rollup.ts", "../../../node_modules/@elastic/src/api/api/scripts_painless_execute.ts", "../../../node_modules/@elastic/src/api/api/scroll.ts", "../../../node_modules/@elastic/src/api/api/search.ts", "../../../node_modules/@elastic/src/api/api/search_application.ts", "../../../node_modules/@elastic/src/api/api/search_mvt.ts", "../../../node_modules/@elastic/src/api/api/search_shards.ts", "../../../node_modules/@elastic/src/api/api/search_template.ts", "../../../node_modules/@elastic/src/api/api/searchable_snapshots.ts", "../../../node_modules/@elastic/src/api/api/security.ts", "../../../node_modules/@elastic/src/api/api/shutdown.ts", "../../../node_modules/@elastic/src/api/api/simulate.ts", "../../../node_modules/@elastic/src/api/api/slm.ts", "../../../node_modules/@elastic/src/api/api/snapshot.ts", "../../../node_modules/@elastic/src/api/api/sql.ts", "../../../node_modules/@elastic/src/api/api/ssl.ts", "../../../node_modules/@elastic/src/api/api/streams.ts", "../../../node_modules/@elastic/src/api/api/synonyms.ts", "../../../node_modules/@elastic/src/api/api/tasks.ts", "../../../node_modules/@elastic/src/api/api/terms_enum.ts", "../../../node_modules/@elastic/src/api/api/termvectors.ts", "../../../node_modules/@elastic/src/api/api/text_structure.ts", "../../../node_modules/@elastic/src/api/api/transform.ts", "../../../node_modules/@elastic/src/api/api/update.ts", "../../../node_modules/@elastic/src/api/api/update_by_query.ts", "../../../node_modules/@elastic/src/api/api/update_by_query_rethrottle.ts", "../../../node_modules/@elastic/src/api/api/watcher.ts", "../../../node_modules/@elastic/src/api/api/xpack.ts", "../../../node_modules/@elastic/src/api/index.ts", "../../../node_modules/@elastic/elasticsearch/package.json", "../../../node_modules/@elastic/src/client.ts", "../../../node_modules/@elastic/elasticsearch/index.js", "../../../node_modules/winston-elasticsearch/transformer.js", "../../../node_modules/asap/raw.js", "../../../node_modules/winston-elasticsearch/node_modules/promise/lib/core.js", "../../../node_modules/winston-elasticsearch/node_modules/promise/lib/done.js", "../../../node_modules/winston-elasticsearch/node_modules/promise/lib/finally.js", "../../../node_modules/winston-elasticsearch/node_modules/promise/lib/es6-extensions.js", "../../../node_modules/asap/asap.js", "../../../node_modules/winston-elasticsearch/node_modules/promise/lib/node-extensions.js", "../../../node_modules/winston-elasticsearch/node_modules/promise/lib/synchronous.js", "../../../node_modules/winston-elasticsearch/node_modules/promise/lib/index.js", "../../../node_modules/winston-elasticsearch/node_modules/promise/index.js", "../../../node_modules/retry/lib/retry_operation.js", "../../../node_modules/retry/lib/retry.js", "../../../node_modules/retry/index.js", "../../../node_modules/winston-elasticsearch/bulk_writer.js", "../../../node_modules/winston-elasticsearch/index-template-mapping.json", "../../../node_modules/winston-elasticsearch/index.js", "../../logger/lib/elasticsearch-index-template.json", "../../logger/src/elasticsearch.ts", "../../logger/src/index.ts", "../../../node_modules/ee-first/index.js", "../../../node_modules/on-finished/index.js", "../../../node_modules/koa-compose/index.js", "../node_modules/statuses/codes.json", "../node_modules/statuses/index.js", "../../../node_modules/depd/index.js", "../../../node_modules/setprototypeof/index.js", "../../../node_modules/toidentifier/index.js", "../node_modules/http-errors/index.js", "../../../node_modules/accepts/node_modules/negotiator/lib/charset.js", "../../../node_modules/accepts/node_modules/negotiator/lib/encoding.js", "../../../node_modules/accepts/node_modules/negotiator/lib/language.js", "../../../node_modules/accepts/node_modules/negotiator/lib/mediaType.js", "../../../node_modules/accepts/node_modules/negotiator/index.js", "../../../node_modules/mime-db/db.json", "../../../node_modules/mime-db/index.js", "../../../node_modules/mime-types/index.js", "../../../node_modules/accepts/index.js", "../../../node_modules/content-type/index.js", "../../../node_modules/parseurl/index.js", "../node_modules/koa/lib/search-params.js", "../node_modules/mime-db/db.json", "../node_modules/mime-db/index.js", "../node_modules/mime-types/mimeScore.js", "../node_modules/mime-types/index.js", "../node_modules/media-typer/index.js", "../node_modules/type-is/index.js", "../../../node_modules/fresh/index.js", "../node_modules/koa/lib/only.js", "../node_modules/koa/lib/request.js", "../../../node_modules/content-disposition/index.js", "../../../node_modules/escape-html/index.js", "../../../node_modules/destroy/index.js", "../../../node_modules/encodeurl/index.js", "../../../node_modules/vary/index.js", "../node_modules/koa/lib/is-stream.js", "../node_modules/koa/lib/response.js", "../../../node_modules/http-assert/node_modules/depd/lib/compat/callsite-tostring.js", "../../../node_modules/http-assert/node_modules/depd/lib/compat/event-listener-count.js", "../../../node_modules/http-assert/node_modules/depd/lib/compat/index.js", "../../../node_modules/http-assert/node_modules/depd/index.js", "../../../node_modules/http-assert/node_modules/statuses/codes.json", "../../../node_modules/http-assert/node_modules/statuses/index.js", "../../../node_modules/http-assert/node_modules/http-errors/index.js", "../../../node_modules/http-assert/node_modules/deep-equal/lib/keys.js", "../../../node_modules/http-assert/node_modules/deep-equal/lib/is_arguments.js", "../../../node_modules/http-assert/node_modules/deep-equal/index.js", "../../../node_modules/http-assert/index.js", "../../../node_modules/delegates/index.js", "../../../node_modules/tsscmp/lib/index.js", "../../../node_modules/keygrip/index.js", "../../../node_modules/cookies/index.js", "../node_modules/koa/lib/context.js", "../node_modules/koa/lib/application.js", "../node_modules/@apollo/utils.isnodelike/src/index.ts", "../node_modules/@apollo/utils.keyvaluecache/src/PrefixingKeyValueCache.ts", "../../../node_modules/lru-cache/src/index.ts", "../node_modules/@apollo/utils.keyvaluecache/src/InMemoryLRUCache.ts", "../node_modules/@apollo/utils.keyvaluecache/src/ErrorsAreMissesCache.ts", "../node_modules/@apollo/utils.keyvaluecache/src/index.ts", "../../../node_modules/graphql/version.js", "../../../node_modules/graphql/jsutils/devAssert.js", "../../../node_modules/graphql/jsutils/isPromise.js", "../../../node_modules/graphql/jsutils/isObjectLike.js", "../../../node_modules/graphql/jsutils/invariant.js", "../../../node_modules/graphql/language/location.js", "../../../node_modules/graphql/language/printLocation.js", "../../../node_modules/graphql/error/GraphQLError.js", "../../../node_modules/graphql/error/syntaxError.js", "../../../node_modules/graphql/language/ast.js", "../../../node_modules/graphql/language/directiveLocation.js", "../../../node_modules/graphql/language/kinds.js", "../../../node_modules/graphql/language/characterClasses.js", "../../../node_modules/graphql/language/blockString.js", "../../../node_modules/graphql/language/tokenKind.js", "../../../node_modules/graphql/language/lexer.js", "../../../node_modules/graphql/language/schemaCoordinateLexer.js", "../../../node_modules/graphql/jsutils/inspect.js", "../../../node_modules/graphql/jsutils/instanceOf.js", "../../../node_modules/graphql/language/source.js", "../../../node_modules/graphql/language/parser.js", "../../../node_modules/graphql/jsutils/didYouMean.js", "../../../node_modules/graphql/jsutils/identityFunc.js", "../../../node_modules/graphql/jsutils/keyMap.js", "../../../node_modules/graphql/jsutils/keyValMap.js", "../../../node_modules/graphql/jsutils/mapValue.js", "../../../node_modules/graphql/jsutils/naturalCompare.js", "../../../node_modules/graphql/jsutils/suggestionList.js", "../../../node_modules/graphql/jsutils/toObjMap.js", "../../../node_modules/graphql/language/printString.js", "../../../node_modules/graphql/language/visitor.js", "../../../node_modules/graphql/language/printer.js", "../../../node_modules/graphql/utilities/valueFromASTUntyped.js", "../../../node_modules/graphql/type/assertName.js", "../../../node_modules/graphql/type/definition.js", "../../../node_modules/graphql/utilities/typeComparators.js", "../../../node_modules/graphql/type/scalars.js", "../../../node_modules/graphql/type/directives.js", "../../../node_modules/graphql/jsutils/isIterableObject.js", "../../../node_modules/graphql/utilities/astFromValue.js", "../../../node_modules/graphql/type/introspection.js", "../../../node_modules/graphql/type/schema.js", "../../../node_modules/graphql/type/validate.js", "../../../node_modules/graphql/utilities/typeFromAST.js", "../../../node_modules/graphql/utilities/TypeInfo.js", "../../../node_modules/graphql/language/predicates.js", "../../../node_modules/graphql/validation/rules/ExecutableDefinitionsRule.js", "../../../node_modules/graphql/validation/rules/FieldsOnCorrectTypeRule.js", "../../../node_modules/graphql/validation/rules/FragmentsOnCompositeTypesRule.js", "../../../node_modules/graphql/validation/rules/KnownArgumentNamesRule.js", "../../../node_modules/graphql/validation/rules/KnownDirectivesRule.js", "../../../node_modules/graphql/validation/rules/KnownFragmentNamesRule.js", "../../../node_modules/graphql/validation/rules/KnownTypeNamesRule.js", "../../../node_modules/graphql/validation/rules/LoneAnonymousOperationRule.js", "../../../node_modules/graphql/validation/rules/LoneSchemaDefinitionRule.js", "../../../node_modules/graphql/validation/rules/MaxIntrospectionDepthRule.js", "../../../node_modules/graphql/validation/rules/NoFragmentCyclesRule.js", "../../../node_modules/graphql/validation/rules/NoUndefinedVariablesRule.js", "../../../node_modules/graphql/validation/rules/NoUnusedFragmentsRule.js", "../../../node_modules/graphql/validation/rules/NoUnusedVariablesRule.js", "../../../node_modules/graphql/utilities/sortValueNode.js", "../../../node_modules/graphql/validation/rules/OverlappingFieldsCanBeMergedRule.js", "../../../node_modules/graphql/validation/rules/PossibleFragmentSpreadsRule.js", "../../../node_modules/graphql/validation/rules/PossibleTypeExtensionsRule.js", "../../../node_modules/graphql/validation/rules/ProvidedRequiredArgumentsRule.js", "../../../node_modules/graphql/validation/rules/ScalarLeafsRule.js", "../../../node_modules/graphql/jsutils/printPathArray.js", "../../../node_modules/graphql/jsutils/Path.js", "../../../node_modules/graphql/utilities/coerceInputValue.js", "../../../node_modules/graphql/utilities/valueFromAST.js", "../../../node_modules/graphql/execution/values.js", "../../../node_modules/graphql/execution/collectFields.js", "../../../node_modules/graphql/validation/rules/SingleFieldSubscriptionsRule.js", "../../../node_modules/graphql/jsutils/groupBy.js", "../../../node_modules/graphql/validation/rules/UniqueArgumentDefinitionNamesRule.js", "../../../node_modules/graphql/validation/rules/UniqueArgumentNamesRule.js", "../../../node_modules/graphql/validation/rules/UniqueDirectiveNamesRule.js", "../../../node_modules/graphql/validation/rules/UniqueDirectivesPerLocationRule.js", "../../../node_modules/graphql/validation/rules/UniqueEnumValueNamesRule.js", "../../../node_modules/graphql/validation/rules/UniqueFieldDefinitionNamesRule.js", "../../../node_modules/graphql/validation/rules/UniqueFragmentNamesRule.js", "../../../node_modules/graphql/validation/rules/UniqueInputFieldNamesRule.js", "../../../node_modules/graphql/validation/rules/UniqueOperationNamesRule.js", "../../../node_modules/graphql/validation/rules/UniqueOperationTypesRule.js", "../../../node_modules/graphql/validation/rules/UniqueTypeNamesRule.js", "../../../node_modules/graphql/validation/rules/UniqueVariableNamesRule.js", "../../../node_modules/graphql/validation/rules/ValuesOfCorrectTypeRule.js", "../../../node_modules/graphql/validation/rules/VariablesAreInputTypesRule.js", "../../../node_modules/graphql/validation/rules/VariablesInAllowedPositionRule.js", "../../../node_modules/graphql/validation/specifiedRules.js", "../../../node_modules/graphql/validation/ValidationContext.js", "../../../node_modules/graphql/validation/validate.js", "../../../node_modules/graphql/jsutils/memoize3.js", "../../../node_modules/graphql/jsutils/promiseForObject.js", "../../../node_modules/graphql/jsutils/promiseReduce.js", "../../../node_modules/graphql/jsutils/toError.js", "../../../node_modules/graphql/error/locatedError.js", "../../../node_modules/graphql/execution/execute.js", "../../../node_modules/graphql/graphql.js", "../../../node_modules/graphql/type/index.js", "../../../node_modules/graphql/language/index.js", "../../../node_modules/graphql/jsutils/isAsyncIterable.js", "../../../node_modules/graphql/execution/mapAsyncIterator.js", "../../../node_modules/graphql/execution/subscribe.js", "../../../node_modules/graphql/execution/index.js", "../../../node_modules/graphql/validation/rules/custom/NoDeprecatedCustomRule.js", "../../../node_modules/graphql/validation/rules/custom/NoSchemaIntrospectionCustomRule.js", "../../../node_modules/graphql/validation/index.js", "../../../node_modules/graphql/error/index.js", "../../../node_modules/graphql/utilities/getIntrospectionQuery.js", "../../../node_modules/graphql/utilities/getOperationAST.js", "../../../node_modules/graphql/utilities/getOperationRootType.js", "../../../node_modules/graphql/utilities/introspectionFromSchema.js", "../../../node_modules/graphql/utilities/buildClientSchema.js", "../../../node_modules/graphql/utilities/extendSchema.js", "../../../node_modules/graphql/utilities/buildASTSchema.js", "../../../node_modules/graphql/utilities/lexicographicSortSchema.js", "../../../node_modules/graphql/utilities/printSchema.js", "../../../node_modules/graphql/utilities/concatAST.js", "../../../node_modules/graphql/utilities/separateOperations.js", "../../../node_modules/graphql/utilities/stripIgnoredCharacters.js", "../../../node_modules/graphql/utilities/assertValidName.js", "../../../node_modules/graphql/utilities/findBreakingChanges.js", "../../../node_modules/graphql/utilities/resolveSchemaCoordinate.js", "../../../node_modules/graphql/utilities/index.js", "../../../node_modules/graphql/index.js", "../../../node_modules/loglevel/lib/loglevel.js", "../node_modules/negotiator/lib/charset.js", "../node_modules/negotiator/lib/encoding.js", "../node_modules/negotiator/lib/language.js", "../node_modules/negotiator/lib/mediaType.js", "../node_modules/negotiator/index.js", "../node_modules/@apollo/server/src/cachePolicy.ts", "../../../node_modules/isarray/index.js", "../../../node_modules/es-errors/type.js", "../../../node_modules/es-object-atoms/index.js", "../../../node_modules/es-errors/index.js", "../../../node_modules/es-errors/eval.js", "../../../node_modules/es-errors/range.js", "../../../node_modules/es-errors/ref.js", "../../../node_modules/es-errors/syntax.js", "../../../node_modules/es-errors/uri.js", "../../../node_modules/math-intrinsics/abs.js", "../../../node_modules/math-intrinsics/floor.js", "../../../node_modules/math-intrinsics/max.js", "../../../node_modules/math-intrinsics/min.js", "../../../node_modules/math-intrinsics/pow.js", "../../../node_modules/math-intrinsics/round.js", "../../../node_modules/math-intrinsics/isNaN.js", "../../../node_modules/math-intrinsics/sign.js", "../../../node_modules/gopd/gOPD.js", "../../../node_modules/gopd/index.js", "../../../node_modules/es-define-property/index.js", "../../../node_modules/has-symbols/shams.js", "../../../node_modules/has-symbols/index.js", "../../../node_modules/get-proto/Reflect.getPrototypeOf.js", "../../../node_modules/get-proto/Object.getPrototypeOf.js", "../../../node_modules/function-bind/implementation.js", "../../../node_modules/function-bind/index.js", "../../../node_modules/call-bind-apply-helpers/functionCall.js", "../../../node_modules/call-bind-apply-helpers/functionApply.js", "../../../node_modules/call-bind-apply-helpers/reflectApply.js", "../../../node_modules/call-bind-apply-helpers/actualApply.js", "../../../node_modules/call-bind-apply-helpers/index.js", "../../../node_modules/dunder-proto/get.js", "../../../node_modules/get-proto/index.js", "../../../node_modules/hasown/index.js", "../../../node_modules/get-intrinsic/index.js", "../../../node_modules/call-bound/index.js", "../../../node_modules/is-callable/index.js", "../../../node_modules/for-each/index.js", "../../../node_modules/possible-typed-array-names/index.js", "../../../node_modules/available-typed-arrays/index.js", "../../../node_modules/define-data-property/index.js", "../../../node_modules/has-property-descriptors/index.js", "../../../node_modules/set-function-length/index.js", "../../../node_modules/call-bind-apply-helpers/applyBind.js", "../../../node_modules/call-bind/index.js", "../../../node_modules/has-tostringtag/shams.js", "../../../node_modules/which-typed-array/index.js", "../../../node_modules/is-typed-array/index.js", "../../../node_modules/typed-array-buffer/index.js", "../../../node_modules/to-buffer/index.js", "../../../node_modules/sha.js/hash.js", "../../../node_modules/sha.js/sha.js", "../../../node_modules/sha.js/sha1.js", "../../../node_modules/sha.js/sha256.js", "../../../node_modules/sha.js/sha224.js", "../../../node_modules/sha.js/sha512.js", "../../../node_modules/sha.js/sha384.js", "../../../node_modules/sha.js/index.js", "../node_modules/@apollo/utils.createhash/src/index.ts", "../node_modules/@apollo/server/src/internalPlugin.ts", "../node_modules/whatwg-mimetype/lib/utils.js", "../node_modules/whatwg-mimetype/lib/mime-type-parameters.js", "../node_modules/whatwg-mimetype/lib/parser.js", "../node_modules/whatwg-mimetype/lib/serializer.js", "../node_modules/whatwg-mimetype/lib/mime-type.js", "../node_modules/@apollo/server/src/utils/UnreachableCaseError.ts", "../node_modules/@apollo/server/src/utils/computeCoreSchemaHash.ts", "../../../node_modules/lru-cache/src/index.ts", "../node_modules/@apollo/server/src/plugin/cacheControl/index.ts", "../../../node_modules/@protobufjs/aspromise/index.js", "../../../node_modules/@protobufjs/base64/index.js", "../../../node_modules/@protobufjs/eventemitter/index.js", "../../../node_modules/@protobufjs/float/index.js", "../../../node_modules/@protobufjs/inquire/index.js", "../../../node_modules/@protobufjs/utf8/index.js", "../../../node_modules/@protobufjs/pool/index.js", "../../../node_modules/@apollo/protobufjs/src/util/longbits.js", "../../../node_modules/@apollo/protobufjs/src/util/minimal.js", "../../../node_modules/@apollo/protobufjs/src/writer.js", "../../../node_modules/@apollo/protobufjs/src/writer_buffer.js", "../../../node_modules/@apollo/protobufjs/src/reader.js", "../../../node_modules/@apollo/protobufjs/src/reader_buffer.js", "../../../node_modules/@apollo/protobufjs/src/rpc/service.js", "../../../node_modules/@apollo/protobufjs/src/rpc.js", "../../../node_modules/@apollo/protobufjs/src/roots.js", "../../../node_modules/@apollo/protobufjs/src/index-minimal.js", "../../../node_modules/@apollo/protobufjs/minimal.js", "../../../node_modules/@apollo/usage-reporting-protobuf/generated/esm/protobuf.js", "../../../node_modules/@apollo/usage-reporting-protobuf/generated/cjs/protobuf.js", "../../../node_modules/@apollo/utils.usagereporting/src/calculateReferencedFieldsByType.ts", "../../../node_modules/@apollo/utils.dropunuseddefinitions/src/index.ts", "../../../node_modules/@apollo/utils.stripsensitiveliterals/src/index.ts", "../../../node_modules/@apollo/utils.printwithreducedwhitespace/src/index.ts", "../../../node_modules/@apollo/utils.removealiases/src/index.ts", "../../../node_modules/lodash.sortby/index.js", "../../../node_modules/@apollo/utils.sortast/src/index.ts", "../../../node_modules/@apollo/utils.usagereporting/src/signature.ts", "../../../node_modules/@apollo/utils.usagereporting/src/index.ts", "../../../node_modules/async-retry/lib/index.js", "../node_modules/@apollo/server/src/plugin/traceTreeBuilder.ts", "../node_modules/@apollo/server/src/plugin/usageReporting/iterateOverTrace.ts", "../node_modules/@apollo/server/src/plugin/usageReporting/durationHistogram.ts", "../node_modules/@apollo/server/src/plugin/usageReporting/defaultSendOperationsAsTrace.ts", "../node_modules/@apollo/server/src/plugin/usageReporting/operationDerivedDataCache.ts", "../node_modules/@apollo/server/src/plugin/usageReporting/stats.ts", "../node_modules/@apollo/server/src/plugin/usageReporting/traceDetails.ts", "../node_modules/@apollo/server/src/generated/packageVersion.ts", "../node_modules/@apollo/server/src/plugin/schemaIsSubgraph.ts", "../node_modules/@apollo/server/src/plugin/usageReporting/plugin.ts", "../node_modules/@apollo/server/src/plugin/usageReporting/index.ts", "../node_modules/uuid/dist/esm/stringify.js", "../node_modules/uuid/dist/esm/rng.js", "../node_modules/uuid/dist/esm/native.js", "../node_modules/uuid/dist/esm/v4.js", "../node_modules/uuid/dist/esm/index.js", "../node_modules/@apollo/server/src/plugin/schemaReporting/schemaReporter.ts", "../node_modules/@apollo/server/src/plugin/schemaReporting/index.ts", "../node_modules/@apollo/server/src/plugin/inlineTrace/index.ts", "../node_modules/@apollo/server/src/plugin/landingPage/default/getEmbeddedHTML.ts", "../node_modules/@apollo/server/src/plugin/landingPage/default/index.ts", "../node_modules/@apollo/server/src/plugin/disableSuggestions/index.ts", "../../../node_modules/@apollo/utils.isnodelike/src/index.ts", "../../../node_modules/@apollo/utils.keyvaluecache/src/PrefixingKeyValueCache.ts", "../../../node_modules/@apollo/utils.keyvaluecache/node_modules/lru-cache/index.js", "../../../node_modules/@apollo/utils.keyvaluecache/src/InMemoryLRUCache.ts", "../../../node_modules/@apollo/utils.keyvaluecache/src/ErrorsAreMissesCache.ts", "../../../node_modules/@apollo/utils.keyvaluecache/src/index.ts", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/loaders.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/helpers.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/jsutils.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/errors.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/AggregateError.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/inspect.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/getArgumentValues.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/get-directives.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/get-fields-with-directives.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/get-arguments-with-directives.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/get-implementing-types.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/astFromType.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/astFromValueUntyped.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/memoize.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/rootTypes.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/print-schema-with-directives.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/validate-documents.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/parse-graphql-json.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/comments.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/parse-graphql-sdl.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/build-operation-for-field.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/types.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/Interfaces.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/getObjectTypeFromTypeMap.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/stub.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/rewire.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/transformInputValue.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/mapSchema.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/filterSchema.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/heal.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/getResolversFromSchema.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/forEachField.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/forEachDefaultValue.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/addTypes.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/prune.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/mergeDeep.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/selectionSets.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/getResponseKeyFromInfo.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/fields.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/renameType.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/mapAsyncIterator.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/updateArgument.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/implementsAbstractType.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/observableToAsyncIterable.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/getOperationASTFromRequest.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/directives.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/AccumulatorMap.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/collectFields.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/visitResult.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/valueMatchesCriteria.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/isAsyncIterable.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/isDocumentNode.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/executor.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/withCancel.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/fixSchemaAst.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/extractExtensionsFromSchema.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/Path.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/utils/cjs/index.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/schema/cjs/assertResolversPresent.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/schema/cjs/chainResolvers.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/schema/cjs/checkForResolveTypeResolver.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/schema/cjs/extendResolversFromInterfaces.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/schema/cjs/addResolversToSchema.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/merge/cjs/merge-resolvers.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/merge/cjs/typedefs-mergers/arguments.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/merge/cjs/typedefs-mergers/directives.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/merge/cjs/typedefs-mergers/enum-values.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/merge/cjs/typedefs-mergers/enum.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/merge/cjs/typedefs-mergers/utils.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/merge/cjs/typedefs-mergers/fields.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/merge/cjs/typedefs-mergers/input-type.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/merge/cjs/typedefs-mergers/merge-named-type-array.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/merge/cjs/typedefs-mergers/interface.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/merge/cjs/typedefs-mergers/type.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/merge/cjs/typedefs-mergers/scalar.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/merge/cjs/typedefs-mergers/union.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/merge/cjs/typedefs-mergers/schema-def.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/merge/cjs/typedefs-mergers/merge-nodes.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/merge/cjs/typedefs-mergers/merge-typedefs.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/merge/cjs/typedefs-mergers/index.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/merge/cjs/extensions.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/merge/cjs/index.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/schema/cjs/makeExecutableSchema.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/schema/cjs/types.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/schema/cjs/merge-schemas.js", "../../../node_modules/@apollo/server/node_modules/@graphql-tools/schema/cjs/index.js", "../../../node_modules/@apollo/server/src/utils/resolvable.ts", "../../../node_modules/negotiator/lib/charset.js", "../../../node_modules/negotiator/lib/encoding.js", "../../../node_modules/negotiator/lib/language.js", "../../../node_modules/negotiator/lib/mediaType.js", "../../../node_modules/negotiator/index.js", "../../../node_modules/@apollo/server/src/cachePolicy.ts", "../../../node_modules/@apollo/utils.createhash/src/index.ts", "../../../node_modules/@apollo/server/src/determineApolloConfig.ts", "../../../node_modules/@apollo/server/src/errors/index.ts", "../../../node_modules/@apollo/server/src/utils/HeaderMap.ts", "../../../node_modules/@apollo/server/src/internalErrorClasses.ts", "../../../node_modules/@apollo/server/src/runHttpQuery.ts", "../../../node_modules/@apollo/server/src/errorNormalize.ts", "../../../node_modules/@apollo/server/src/httpBatching.ts", "../../../node_modules/@apollo/server/src/internalPlugin.ts", "../../../node_modules/whatwg-mimetype/lib/utils.js", "../../../node_modules/whatwg-mimetype/lib/mime-type-parameters.js", "../../../node_modules/whatwg-mimetype/lib/parser.js", "../../../node_modules/whatwg-mimetype/lib/serializer.js", "../../../node_modules/whatwg-mimetype/lib/mime-type.js", "../../../node_modules/@apollo/server/src/preventCsrf.ts", "../../../node_modules/@apollo/server/src/utils/schemaInstrumentation.ts", "../../../node_modules/@apollo/server/src/utils/isDefined.ts", "../../../node_modules/@apollo/server/src/utils/invokeHooks.ts", "../../../node_modules/@apollo/server/src/utils/makeGatewayGraphQLRequestContext.ts", "../../../node_modules/@apollo/server/src/incrementalDeliveryPolyfill.ts", "../../../node_modules/@apollo/server/src/requestPipeline.ts", "../../../node_modules/@apollo/server/src/utils/UnreachableCaseError.ts", "../../../node_modules/@apollo/server/src/utils/computeCoreSchemaHash.ts", "../../../node_modules/@apollo/server/src/utils/schemaManager.ts", "../../../node_modules/@apollo/server/src/validationRules/NoIntrospection.ts", "../../../node_modules/@apollo/server/src/validationRules/RecursiveSelectionsLimit.ts", "../../../node_modules/@apollo/server/src/validationRules/index.ts", "../../../node_modules/@apollo/server/node_modules/lru-cache/index.js", "../../../node_modules/@apollo/server/src/plugin/cacheControl/index.ts", "../../../node_modules/node-abort-controller/index.js", "../../../node_modules/webidl-conversions/lib/index.js", "../../../node_modules/whatwg-url/lib/utils.js", "../../../node_modules/tr46/lib/mappingTable.json", "../../../node_modules/tr46/index.js", "../../../node_modules/whatwg-url/lib/url-state-machine.js", "../../../node_modules/whatwg-url/lib/URL-impl.js", "../../../node_modules/whatwg-url/lib/URL.js", "../../../node_modules/whatwg-url/lib/public-api.js", "../../../node_modules/@apollo/server/node_modules/node-fetch/lib/index.js", "../../../node_modules/@apollo/server/src/plugin/traceTreeBuilder.ts", "../../../node_modules/@apollo/server/src/plugin/usageReporting/iterateOverTrace.ts", "../../../node_modules/@apollo/server/src/plugin/usageReporting/durationHistogram.ts", "../../../node_modules/@apollo/server/src/plugin/usageReporting/defaultSendOperationsAsTrace.ts", "../../../node_modules/@apollo/server/src/plugin/usageReporting/operationDerivedDataCache.ts", "../../../node_modules/@apollo/server/src/plugin/usageReporting/stats.ts", "../../../node_modules/@apollo/server/src/plugin/usageReporting/traceDetails.ts", "../../../node_modules/@apollo/server/src/generated/packageVersion.ts", "../../../node_modules/@apollo/server/src/plugin/schemaIsSubgraph.ts", "../../../node_modules/@apollo/server/src/plugin/usageReporting/plugin.ts", "../../../node_modules/@apollo/server/src/plugin/usageReporting/index.ts", "../../../node_modules/@apollo/server/src/plugin/schemaReporting/schemaReporter.ts", "../../../node_modules/@apollo/server/src/plugin/schemaReporting/index.ts", "../../../node_modules/@apollo/server/src/plugin/inlineTrace/index.ts", "../../../node_modules/@apollo/server/src/plugin/landingPage/default/getEmbeddedHTML.ts", "../../../node_modules/@apollo/server/src/plugin/landingPage/default/index.ts", "../../../node_modules/@apollo/server/src/plugin/disableSuggestions/index.ts", "../../../node_modules/@apollo/server/src/ApolloServer.ts", "../../../node_modules/@apollo/server/dist/cjs/externalTypes/index.js", "../../../node_modules/@apollo/server/src/index.ts", "../../../node_modules/@as-integrations/koa/src/index.ts", "../../../node_modules/@apollo/federation-internals/src/types.ts", "../../../node_modules/@apollo/federation-internals/src/utils.ts", "../../../node_modules/@apollo/federation-internals/src/error.ts", "../../../node_modules/js-levenshtein/index.js", "../../../node_modules/@apollo/federation-internals/src/suggestions.ts", "../../../node_modules/@apollo/federation-internals/src/values.ts", "../../../node_modules/@apollo/federation-internals/src/knownCoreFeatures.ts", "../../../node_modules/@apollo/federation-internals/src/directiveAndTypeSpecification.ts", "../../../node_modules/@apollo/federation-internals/src/specs/coreSpec.ts", "../../../node_modules/@apollo/federation-internals/src/specs/inaccessibleSpec.ts", "../../../node_modules/@apollo/federation-internals/src/print.ts", "../../../node_modules/@apollo/federation-internals/src/introspection.ts", "../../../node_modules/@apollo/federation-internals/src/validate.ts", "../../../node_modules/@apollo/federation-internals/src/definitions.ts", "../../../node_modules/@apollo/federation-internals/src/specs/connectSpec.ts", "../../../node_modules/@apollo/federation-internals/src/buildSchema.ts", "../../../node_modules/@apollo/federation-internals/src/validation/KnownTypeNamesInFederationRule.ts", "../../../node_modules/@apollo/federation-internals/src/operations.ts", "../../../node_modules/@apollo/federation-internals/src/specs/tagSpec.ts", "../../../node_modules/@apollo/federation-internals/src/precompute.ts", "../../../node_modules/@apollo/federation-internals/src/specs/authenticatedSpec.ts", "../../../node_modules/@apollo/federation-internals/src/argumentCompositionStrategies.ts", "../../../node_modules/@apollo/federation-internals/src/specs/requiresScopesSpec.ts", "../../../node_modules/@apollo/federation-internals/src/specs/policySpec.ts", "../../../node_modules/@apollo/federation-internals/src/specs/contextSpec.ts", "../../../node_modules/@apollo/federation-internals/src/specs/costSpec.ts", "../../../node_modules/@apollo/federation-internals/src/specs/cacheTagSpec.ts", "../../../node_modules/@apollo/federation-internals/src/specs/federationSpec.ts", "../../../node_modules/@apollo/federation-internals/src/specs/joinSpec.ts", "../../../node_modules/@apollo/federation-internals/src/federation.ts", "../../../node_modules/@apollo/federation-internals/node_modules/color-name/index.js", "../../../node_modules/@apollo/federation-internals/node_modules/color-convert/conversions.js", "../../../node_modules/@apollo/federation-internals/node_modules/color-convert/route.js", "../../../node_modules/@apollo/federation-internals/node_modules/color-convert/index.js", "../../../node_modules/@apollo/federation-internals/node_modules/ansi-styles/index.js", "../../../node_modules/@apollo/federation-internals/node_modules/has-flag/index.js", "../../../node_modules/@apollo/federation-internals/node_modules/supports-color/index.js", "../../../node_modules/@apollo/federation-internals/node_modules/chalk/source/util.js", "../../../node_modules/@apollo/federation-internals/node_modules/chalk/source/templates.js", "../../../node_modules/@apollo/federation-internals/node_modules/chalk/source/index.js", "../../../node_modules/@apollo/federation-internals/src/debug.ts", "../../../node_modules/@apollo/federation-internals/src/extractSubgraphsFromSupergraph.ts", "../../../node_modules/@apollo/federation-internals/src/supergraphs.ts", "../../../node_modules/@apollo/federation-internals/src/schemaUpgrader.ts", "../../../node_modules/@apollo/federation-internals/src/graphQLJSSchemaToAST.ts", "../../../node_modules/@apollo/federation-internals/src/index.ts", "../../../node_modules/@apollo/gateway/src/operationContext.ts", "../../../node_modules/@apollo/gateway/node_modules/node-fetch/lib/index.js", "../../../node_modules/@apollo/gateway/src/datasources/types.ts", "../../../node_modules/@apollo/query-planner/src/snapshotSerializers/queryPlanSerializer.ts", "../../../node_modules/@apollo/query-planner/src/snapshotSerializers/astSerializer.ts", "../../../node_modules/@apollo/query-planner/src/snapshotSerializers/index.ts", "../../../node_modules/pretty-format/node_modules/ansi-styles/index.js", "../../../node_modules/pretty-format/build/collections.js", "../../../node_modules/pretty-format/build/plugins/AsymmetricMatcher.js", "../../../node_modules/pretty-format/build/plugins/DOMCollection.js", "../../../node_modules/pretty-format/build/plugins/lib/escapeHTML.js", "../../../node_modules/pretty-format/build/plugins/lib/markup.js", "../../../node_modules/pretty-format/build/plugins/DOMElement.js", "../../../node_modules/pretty-format/build/plugins/Immutable.js", "../../../node_modules/pretty-format/node_modules/react-is/cjs/react-is.production.min.js", "../../../node_modules/pretty-format/node_modules/react-is/cjs/react-is.development.js", "../../../node_modules/pretty-format/node_modules/react-is/index.js", "../../../node_modules/pretty-format/build/plugins/ReactElement.js", "../../../node_modules/pretty-format/build/plugins/ReactTestComponent.js", "../../../node_modules/pretty-format/build/index.js", "../../../node_modules/@apollo/query-planner/src/prettyFormatQueryPlan.ts", "../../../node_modules/@apollo/query-planner/src/QueryPlan.ts", "../../../node_modules/@apollo/query-graphs/src/transition.ts", "../../../node_modules/@apollo/query-graphs/src/nonTrivialEdgePrecomputing.ts", "../../../node_modules/@apollo/query-graphs/src/nonLocalSelectionsEstimation.ts", "../../../node_modules/@apollo/query-graphs/src/querygraph.ts", "../../../node_modules/object-keys/isArguments.js", "../../../node_modules/object-keys/implementation.js", "../../../node_modules/object-keys/index.js", "../../../node_modules/define-properties/index.js", "../../../node_modules/object.assign/implementation.js", "../../../node_modules/object.assign/polyfill.js", "../../../node_modules/object.assign/shim.js", "../../../node_modules/object.assign/index.js", "../../../node_modules/call-bind/callBound.js", "../../../node_modules/functions-have-names/index.js", "../../../node_modules/set-function-name/index.js", "../../../node_modules/regexp.prototype.flags/implementation.js", "../../../node_modules/regexp.prototype.flags/polyfill.js", "../../../node_modules/regexp.prototype.flags/shim.js", "../../../node_modules/regexp.prototype.flags/index.js", "../../../node_modules/es-get-iterator/node.js", "../../../node_modules/object-inspect/util.inspect.js", "../../../node_modules/object-inspect/index.js", "../../../node_modules/side-channel-list/index.js", "../../../node_modules/side-channel-map/index.js", "../../../node_modules/side-channel-weakmap/index.js", "../../../node_modules/side-channel/index.js", "../../../node_modules/object-is/implementation.js", "../../../node_modules/object-is/polyfill.js", "../../../node_modules/object-is/shim.js", "../../../node_modules/object-is/index.js", "../../../node_modules/is-arguments/index.js", "../../../node_modules/is-array-buffer/index.js", "../../../node_modules/is-date-object/index.js", "../../../node_modules/is-regex/index.js", "../../../node_modules/is-shared-array-buffer/index.js", "../../../node_modules/is-string/index.js", "../../../node_modules/is-number-object/index.js", "../../../node_modules/is-boolean-object/index.js", "../../../node_modules/safe-regex-test/index.js", "../../../node_modules/is-symbol/index.js", "../../../node_modules/has-bigints/index.js", "../../../node_modules/is-bigint/index.js", "../../../node_modules/which-boxed-primitive/index.js", "../../../node_modules/is-map/index.js", "../../../node_modules/is-set/index.js", "../../../node_modules/is-weakmap/index.js", "../../../node_modules/is-weakset/index.js", "../../../node_modules/which-collection/index.js", "../../../node_modules/array-buffer-byte-length/index.js", "../../../node_modules/deep-equal/index.js", "../../../node_modules/@apollo/query-graphs/src/pathContext.ts", "../../../node_modules/@apollo/query-graphs/src/pathTree.ts", "../../../node_modules/@apollo/query-graphs/src/graphPath.ts", "../../../node_modules/ts-graphviz/lib/common/index.cjs", "../../../node_modules/ts-graphviz/lib/utils/index.cjs", "../../../node_modules/ts-graphviz/lib/ast/index.cjs", "../../../node_modules/ts-graphviz/lib/core/index.cjs", "../../../node_modules/ts-graphviz/lib/index.cjs", "../../../node_modules/@apollo/query-graphs/src/graphviz.ts", "../../../node_modules/@apollo/query-graphs/src/conditionsCaching.ts", "../../../node_modules/@apollo/query-graphs/src/conditionsValidation.ts", "../../../node_modules/@apollo/query-graphs/src/mermaid.ts", "../../../node_modules/@apollo/query-graphs/src/index.ts", "../../../node_modules/@apollo/query-planner/src/conditions.ts", "../../../node_modules/@apollo/query-planner/src/config.ts", "../../../node_modules/@apollo/query-planner/src/generateAllPlans.ts", "../../../node_modules/@apollo/query-planner/src/recursiveSelectionsLimit.ts", "../../../node_modules/@apollo/query-planner/src/buildPlan.ts", "../../../node_modules/@apollo/query-planner/src/index.ts", "../../../node_modules/@apollo/gateway/src/utilities/predicates.ts", "../../../node_modules/@apollo/gateway/src/utilities/deepMerge.ts", "../../../node_modules/@apollo/gateway/src/utilities/array.ts", "../../../node_modules/@apollo/gateway/package.json", "../../../node_modules/@apollo/gateway/src/utilities/opentelemetry.ts", "../../../node_modules/@apollo/gateway/src/resultShaping.ts", "../../../node_modules/@apollo/gateway/src/dataRewrites.ts", "../../../node_modules/@apollo/gateway/src/executeQueryPlan.ts", "../../../node_modules/@apollo/gateway/src/datasources/parseCacheControlHeader.ts", "../../../node_modules/minizlib/constants.js", "../../../node_modules/minizlib/node_modules/minipass/index.js", "../../../node_modules/minizlib/index.js", "../../../node_modules/minipass/src/index.ts", "../../../node_modules/minipass-sized/node_modules/minipass/index.js", "../../../node_modules/minipass-sized/index.js", "../../../node_modules/minipass-fetch/lib/blob.js", "../../../node_modules/minipass-fetch/lib/fetch-error.js", "../../../node_modules/minipass-fetch/lib/body.js", "../../../node_modules/minipass-fetch/lib/headers.js", "../../../node_modules/minipass-fetch/lib/response.js", "../../../node_modules/minipass-fetch/package.json", "../../../node_modules/minipass-fetch/lib/request.js", "../../../node_modules/minipass-fetch/lib/abort-error.js", "../../../node_modules/minipass-fetch/lib/index.js", "../../../node_modules/make-fetch-happen/lib/options.js", "../../../node_modules/http-cache-semantics/index.js", "../../../node_modules/ssri/lib/index.js", "../../../node_modules/make-fetch-happen/lib/cache/policy.js", "../../../node_modules/make-fetch-happen/lib/cache/errors.js", "../../../node_modules/make-fetch-happen/node_modules/minipass/index.js", "../../../node_modules/minipass-flush/node_modules/minipass/index.js", "../../../node_modules/minipass-flush/index.js", "../../../node_modules/make-fetch-happen/node_modules/minipass-collect/node_modules/minipass/index.js", "../../../node_modules/make-fetch-happen/node_modules/minipass-collect/index.js", "../../../node_modules/make-fetch-happen/node_modules/cacache/node_modules/minipass/src/index.ts", "../../../node_modules/minipass-pipeline/node_modules/minipass/index.js", "../../../node_modules/minipass-pipeline/index.js", "../../../node_modules/imurmurhash/imurmurhash.js", "../../../node_modules/unique-slug/lib/index.js", "../../../node_modules/unique-filename/lib/index.js", "../../../node_modules/make-fetch-happen/node_modules/cacache/package.json", "../../../node_modules/make-fetch-happen/node_modules/cacache/lib/util/hash-to-segments.js", "../../../node_modules/make-fetch-happen/node_modules/cacache/lib/content/path.js", "../../../node_modules/@npmcli/fs/lib/common/get-options.js", "../../../node_modules/semver/internal/constants.js", "../../../node_modules/semver/internal/debug.js", "../../../node_modules/semver/internal/re.js", "../../../node_modules/semver/internal/parse-options.js", "../../../node_modules/semver/internal/identifiers.js", "../../../node_modules/semver/classes/semver.js", "../../../node_modules/semver/functions/parse.js", "../../../node_modules/semver/functions/valid.js", "../../../node_modules/semver/functions/clean.js", "../../../node_modules/semver/functions/inc.js", "../../../node_modules/semver/functions/diff.js", "../../../node_modules/semver/functions/major.js", "../../../node_modules/semver/functions/minor.js", "../../../node_modules/semver/functions/patch.js", "../../../node_modules/semver/functions/prerelease.js", "../../../node_modules/semver/functions/compare.js", "../../../node_modules/semver/functions/rcompare.js", "../../../node_modules/semver/functions/compare-loose.js", "../../../node_modules/semver/functions/compare-build.js", "../../../node_modules/semver/functions/sort.js", "../../../node_modules/semver/functions/rsort.js", "../../../node_modules/semver/functions/gt.js", "../../../node_modules/semver/functions/lt.js", "../../../node_modules/semver/functions/eq.js", "../../../node_modules/semver/functions/neq.js", "../../../node_modules/semver/functions/gte.js", "../../../node_modules/semver/functions/lte.js", "../../../node_modules/semver/functions/cmp.js", "../../../node_modules/semver/functions/coerce.js", "../../../node_modules/semver/internal/lrucache.js", "../../../node_modules/semver/classes/range.js", "../../../node_modules/semver/classes/comparator.js", "../../../node_modules/semver/functions/satisfies.js", "../../../node_modules/semver/ranges/to-comparators.js", "../../../node_modules/semver/ranges/max-satisfying.js", "../../../node_modules/semver/ranges/min-satisfying.js", "../../../node_modules/semver/ranges/min-version.js", "../../../node_modules/semver/ranges/valid.js", "../../../node_modules/semver/ranges/outside.js", "../../../node_modules/semver/ranges/gtr.js", "../../../node_modules/semver/ranges/ltr.js", "../../../node_modules/semver/ranges/intersects.js", "../../../node_modules/semver/ranges/simplify.js", "../../../node_modules/semver/ranges/subset.js", "../../../node_modules/semver/index.js", "../../../node_modules/@npmcli/fs/lib/common/node.js", "../../../node_modules/@npmcli/fs/lib/cp/errors.js", "../../../node_modules/@npmcli/fs/lib/cp/polyfill.js", "../../../node_modules/@npmcli/fs/lib/cp/index.js", "../../../node_modules/@npmcli/fs/lib/with-temp-dir.js", "../../../node_modules/@npmcli/fs/lib/readdir-scoped.js", "../../../node_modules/@npmcli/fs/lib/move-file.js", "../../../node_modules/@npmcli/fs/lib/index.js", "../../../node_modules/make-fetch-happen/node_modules/cacache/lib/entry-index.js", "../../../node_modules/make-fetch-happen/node_modules/lru-cache/index.js", "../../../node_modules/make-fetch-happen/node_modules/cacache/lib/memoization.js", "../../../node_modules/fs-minipass/lib/index.js", "../../../node_modules/make-fetch-happen/node_modules/cacache/lib/content/read.js", "../../../node_modules/make-fetch-happen/node_modules/cacache/lib/get.js", "../../../node_modules/make-fetch-happen/node_modules/cacache/lib/content/write.js", "../../../node_modules/make-fetch-happen/node_modules/cacache/lib/put.js", "../../../node_modules/balanced-match/index.js", "../../../node_modules/brace-expansion/index.js", "../../../node_modules/minimatch/src/assert-valid-pattern.ts", "../../../node_modules/minimatch/src/brace-expressions.ts", "../../../node_modules/minimatch/src/unescape.ts", "../../../node_modules/minimatch/src/ast.ts", "../../../node_modules/minimatch/src/escape.ts", "../../../node_modules/minimatch/src/index.ts", "../../../node_modules/make-fetch-happen/node_modules/path-scurry/node_modules/lru-cache/src/index.ts", "../../../node_modules/make-fetch-happen/node_modules/path-scurry/src/index.ts", "../../../node_modules/make-fetch-happen/node_modules/glob/src/pattern.ts", "../../../node_modules/make-fetch-happen/node_modules/glob/node_modules/minipass/src/index.ts", "../../../node_modules/make-fetch-happen/node_modules/glob/src/ignore.ts", "../../../node_modules/make-fetch-happen/node_modules/glob/src/processor.ts", "../../../node_modules/make-fetch-happen/node_modules/glob/src/walker.ts", "../../../node_modules/make-fetch-happen/node_modules/glob/src/glob.ts", "../../../node_modules/make-fetch-happen/node_modules/glob/src/has-magic.ts", "../../../node_modules/make-fetch-happen/node_modules/glob/src/index.ts", "../../../node_modules/make-fetch-happen/node_modules/cacache/lib/util/glob.js", "../../../node_modules/make-fetch-happen/node_modules/cacache/lib/content/rm.js", "../../../node_modules/make-fetch-happen/node_modules/cacache/lib/rm.js", "../../../node_modules/indent-string/index.js", "../../../node_modules/clean-stack/index.js", "../../../node_modules/aggregate-error/index.js", "../../../node_modules/p-map/index.js", "../../../node_modules/make-fetch-happen/node_modules/cacache/lib/verify.js", "../../../node_modules/make-fetch-happen/node_modules/cacache/lib/util/tmp.js", "../../../node_modules/make-fetch-happen/node_modules/cacache/lib/index.js", "../../../node_modules/make-fetch-happen/lib/pipeline.js", "../../../node_modules/make-fetch-happen/lib/cache/key.js", "../../../node_modules/err-code/index.js", "../../../node_modules/promise-retry/node_modules/retry/lib/retry_operation.js", "../../../node_modules/promise-retry/node_modules/retry/lib/retry.js", "../../../node_modules/promise-retry/node_modules/retry/index.js", "../../../node_modules/promise-retry/index.js", "../../../node_modules/is-lambda/index.js", "../../../node_modules/make-fetch-happen/lib/dns.js", "../../../node_modules/humanize-ms/index.js", "../../../node_modules/agentkeepalive/lib/constants.js", "../../../node_modules/agentkeepalive/lib/agent.js", "../../../node_modules/agentkeepalive/lib/https_agent.js", "../../../node_modules/agentkeepalive/index.js", "../../../node_modules/@tootallnate/once/src/index.ts", "../../../node_modules/agent-base/src/promisify.ts", "../../../node_modules/agent-base/src/index.ts", "../../../node_modules/http-proxy-agent/src/agent.ts", "../../../node_modules/http-proxy-agent/src/index.ts", "../../../node_modules/https-proxy-agent/src/parse-proxy-response.ts", "../../../node_modules/https-proxy-agent/src/agent.ts", "../../../node_modules/https-proxy-agent/src/index.ts", "../../../node_modules/smart-buffer/src/utils.ts", "../../../node_modules/smart-buffer/src/smartbuffer.ts", "../../../node_modules/socks/src/common/constants.ts", "../../../node_modules/socks/src/common/util.ts", "../../../node_modules/ip-address/src/common.ts", "../../../node_modules/ip-address/src/v4/constants.ts", "../../../node_modules/ip-address/src/address-error.ts", "../../../node_modules/ip-address/src/ipv4.ts", "../../../node_modules/ip-address/src/v6/constants.ts", "../../../node_modules/ip-address/src/v6/helpers.ts", "../../../node_modules/ip-address/src/v6/regular-expressions.ts", "../../../node_modules/ip-address/src/ipv6.ts", "../../../node_modules/ip-address/src/ip-address.ts", "../../../node_modules/socks/src/common/helpers.ts", "../../../node_modules/socks/src/common/receivebuffer.ts", "../../../node_modules/socks/src/client/socksclient.ts", "../../../node_modules/socks/src/index.ts", "../../../node_modules/socks-proxy-agent/src/index.ts", "../../../node_modules/make-fetch-happen/lib/agent.js", "../../../node_modules/make-fetch-happen/package.json", "../../../node_modules/make-fetch-happen/lib/remote.js", "../../../node_modules/make-fetch-happen/lib/cache/entry.js", "../../../node_modules/make-fetch-happen/lib/cache/index.js", "../../../node_modules/make-fetch-happen/lib/fetch.js", "../../../node_modules/make-fetch-happen/lib/index.js", "../../../node_modules/@apollo/gateway/src/datasources/RemoteGraphQLDataSource.ts", "../../../node_modules/@apollo/composition/src/hints.ts", "../../../node_modules/@apollo/composition/src/merging/reporter.ts", "../../../node_modules/@apollo/composition/src/composeDirectiveManager.ts", "../../../node_modules/@apollo/composition/src/merging/coreDirectiveCollector.ts", "../../../node_modules/@apollo/composition/src/merging/merge.ts", "../../../node_modules/@apollo/composition/src/merging/index.ts", "../../../node_modules/@apollo/composition/src/validate.ts", "../../../node_modules/@apollo/composition/src/compose.ts", "../../../node_modules/@apollo/composition/src/index.ts", "../../../node_modules/@apollo/gateway/src/supergraphManagers/LocalCompose/index.ts", "../../../node_modules/@josephg/resolvable/index.ts", "../../../node_modules/@apollo/gateway/src/supergraphManagers/LegacyFetcher/index.ts", "../../../node_modules/@apollo/gateway/src/supergraphManagers/IntrospectAndCompose/loadServicesFromRemoteEndpoint.ts", "../../../node_modules/@apollo/gateway/src/supergraphManagers/IntrospectAndCompose/index.ts", "../../../node_modules/@apollo/gateway/src/logger.ts", "../../../node_modules/@apollo/gateway/src/supergraphManagers/UplinkSupergraphManager/loadSupergraphSdlFromStorage.ts", "../../../node_modules/@apollo/gateway/src/supergraphManagers/UplinkSupergraphManager/index.ts", "../../../node_modules/@apollo/gateway/src/supergraphManagers/index.ts", "../../../node_modules/@apollo/gateway/src/config.ts", "../../../node_modules/@apollo/gateway/src/schema-helper/addExtensions.ts", "../../../node_modules/@apollo/gateway/src/datasources/LocalGraphQLDataSource.ts", "../../../node_modules/@apollo/gateway/src/datasources/index.ts", "../../../node_modules/@apollo/gateway/src/index.ts", "../../../node_modules/@apollo/subgraph/dist/schema-helper/resolverMap.js", "../../../node_modules/@apollo/subgraph/src/schema-helper/error.ts", "../../../node_modules/@apollo/subgraph/src/schema-helper/buildSchemaFromSDL.ts", "../../../node_modules/@apollo/subgraph/src/schema-helper/transformSchema.ts", "../../../node_modules/@apollo/subgraph/src/schema-helper/index.ts", "../../../node_modules/@apollo/cache-control-types/src/index.ts", "../../../node_modules/@apollo/subgraph/src/types.ts", "../../../node_modules/@apollo/subgraph/src/buildSubgraphSchema.ts", "../../../node_modules/@apollo/subgraph/src/printSubgraphSchema.ts", "../../../node_modules/@apollo/subgraph/src/index.ts", "../../../node_modules/koa-mount/index.js", "../../../node_modules/@bufbuild/protobuf/dist/cjs/wire/varint.js", "../../../node_modules/@bufbuild/protobuf/dist/cjs/proto-int64.js", "../../../node_modules/@bufbuild/protobuf/dist/cjs/wire/text-encoding.js", "../../../node_modules/@bufbuild/protobuf/dist/cjs/wire/binary-encoding.js", "../../../node_modules/@bufbuild/protobuf/dist/cjs/wire/base64-encoding.js", "../../../node_modules/@bufbuild/protobuf/dist/cjs/descriptors.js", "../../../node_modules/@bufbuild/protobuf/dist/cjs/wire/text-format.js", "../../../node_modules/@bufbuild/protobuf/dist/cjs/is-message.js", "../../../node_modules/@bufbuild/protobuf/dist/cjs/reflect/error.js", "../../../node_modules/@bufbuild/protobuf/dist/cjs/reflect/scalar.js", "../../../node_modules/@bufbuild/protobuf/dist/cjs/reflect/unsafe.js", "../../../node_modules/@bufbuild/protobuf/dist/cjs/reflect/guard.js", "../../../node_modules/@bufbuild/protobuf/dist/cjs/reflect/reflect-check.js", "../../../node_modules/@bufbuild/protobuf/dist/cjs/wkt/wrappers.js", "../../../node_modules/@bufbuild/protobuf/dist/cjs/create.js", "../../../node_modules/@bufbuild/protobuf/dist/cjs/reflect/reflect.js", "../../../node_modules/@bufbuild/protobuf/dist/cjs/to-binary.js", "../../../node_modules/@bufbuild/protobuf/dist/cjs/from-binary.js", "../../../node_modules/@bufbuild/protobuf/dist/cjs/wire/size-delimited.js", "../../../node_modules/@bufbuild/protobuf/dist/cjs/wire/index.js", "../../rc-grpc-clients/src/generated/google/protobuf/any.ts", "../../rc-grpc-clients/src/generated/google/protobuf/timestamp.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/attribute.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/auth.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/image.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/meta.ts", "../../rc-grpc-clients/src/generated/google/protobuf/descriptor.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/options.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/filter.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/status.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/resource_base.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/locale.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/role.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/timezone.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/user.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/authentication_log.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/token.ts", "../../rc-grpc-clients/src/generated/google/protobuf/empty.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/oauth.ts", "../node_modules/lodash/lodash.js", "../../../node_modules/ts-proto-descriptors/dist/google/protobuf/descriptor.js", "../../../node_modules/ts-proto-descriptors/dist/google/protobuf/compiler/plugin.js", "../../../node_modules/ts-proto-descriptors/dist/index.js", "../../../node_modules/nice-grpc-common/src/Metadata.ts", "../../../node_modules/nice-grpc-common/src/Status.ts", "../../../node_modules/nice-grpc-common/lib/MethodDescriptor.js", "../../../node_modules/nice-grpc-common/lib/client/CallOptions.js", "../../../node_modules/nice-grpc-common/lib/client/ClientMiddleware.js", "../../../node_modules/nice-grpc-common/src/client/composeClientMiddleware.ts", "../../../node_modules/ts-error/lib/helpers.js", "../../../node_modules/ts-error/lib/cjs.js", "../../../node_modules/nice-grpc-common/src/client/ClientError.ts", "../../../node_modules/nice-grpc-common/lib/server/CallContext.js", "../../../node_modules/nice-grpc-common/lib/server/ServerMiddleware.js", "../../../node_modules/nice-grpc-common/src/server/composeServerMiddleware.ts", "../../../node_modules/nice-grpc-common/src/server/ServerError.ts", "../../../node_modules/nice-grpc-common/src/index.ts", "../../../node_modules/@grpc/grpc-js/src/constants.ts", "../../../node_modules/@grpc/grpc-js/package.json", "../../../node_modules/@grpc/grpc-js/src/logging.ts", "../../../node_modules/@grpc/grpc-js/src/error.ts", "../../../node_modules/@grpc/grpc-js/src/metadata.ts", "../../../node_modules/@grpc/grpc-js/src/call-credentials.ts", "../../../node_modules/@grpc/grpc-js/src/tls-helpers.ts", "../../../node_modules/@grpc/grpc-js/src/uri-parser.ts", "../../../node_modules/@grpc/grpc-js/src/resolver.ts", "../../../node_modules/@grpc/grpc-js/src/channel-credentials.ts", "../../../node_modules/@grpc/grpc-js/src/load-balancer.ts", "../../../node_modules/@grpc/grpc-js/src/service-config.ts", "../../../node_modules/@grpc/grpc-js/src/connectivity-state.ts", "../../../node_modules/@grpc/grpc-js/src/picker.ts", "../../../node_modules/@grpc/grpc-js/src/backoff-timeout.ts", "../../../node_modules/@grpc/grpc-js/src/load-balancer-child-handler.ts", "../../../node_modules/@grpc/grpc-js/src/resolving-load-balancer.ts", "../../../node_modules/@grpc/grpc-js/src/channel-options.ts", "../../../node_modules/@grpc/grpc-js/src/subchannel-address.ts", "../../../node_modules/@js-sdsl/ordered-map/dist/cjs/index.js", "../../../node_modules/@js-sdsl/.build-data/copied-source/src/container/TreeContainer/Base/TreeNode.ts", "../../../node_modules/@js-sdsl/.build-data/copied-source/src/container/ContainerBase/index.ts", "../../../node_modules/@js-sdsl/.build-data/copied-source/src/utils/throwError.ts", "../../../node_modules/@js-sdsl/.build-data/copied-source/src/container/TreeContainer/Base/index.ts", "../../../node_modules/@js-sdsl/.build-data/copied-source/src/container/TreeContainer/Base/TreeIterator.ts", "../../../node_modules/@js-sdsl/.build-data/copied-source/src/container/TreeContainer/OrderedMap.ts", "../../../node_modules/@grpc/grpc-js/src/admin.ts", "../../../node_modules/@grpc/grpc-js/src/call.ts", "../../../node_modules/@grpc/grpc-js/src/call-interface.ts", "../../../node_modules/@grpc/grpc-js/src/client-interceptors.ts", "../../../node_modules/@grpc/grpc-js/src/client.ts", "../../../node_modules/@grpc/grpc-js/src/make-client.ts", "../../../node_modules/lodash.camelcase/index.js", "../../../node_modules/protobufjs/src/util/longbits.js", "../../../node_modules/protobufjs/src/util/minimal.js", "../../../node_modules/protobufjs/src/writer.js", "../../../node_modules/protobufjs/src/writer_buffer.js", "../../../node_modules/protobufjs/src/reader.js", "../../../node_modules/protobufjs/src/reader_buffer.js", "../../../node_modules/protobufjs/src/rpc/service.js", "../../../node_modules/protobufjs/src/rpc.js", "../../../node_modules/protobufjs/src/roots.js", "../../../node_modules/protobufjs/src/index-minimal.js", "../../../node_modules/@protobufjs/codegen/index.js", "../../../node_modules/@protobufjs/fetch/index.js", "../../../node_modules/@protobufjs/path/index.js", "../../../node_modules/protobufjs/src/namespace.js", "../../../node_modules/protobufjs/src/mapfield.js", "../../../node_modules/protobufjs/src/method.js", "../../../node_modules/protobufjs/src/service.js", "../../../node_modules/protobufjs/src/message.js", "../../../node_modules/protobufjs/src/decoder.js", "../../../node_modules/protobufjs/src/verifier.js", "../../../node_modules/protobufjs/src/converter.js", "../../../node_modules/protobufjs/src/wrappers.js", "../../../node_modules/protobufjs/src/type.js", "../../../node_modules/protobufjs/src/root.js", "../../../node_modules/protobufjs/src/util.js", "../../../node_modules/protobufjs/src/types.js", "../../../node_modules/protobufjs/src/field.js", "../../../node_modules/protobufjs/src/oneof.js", "../../../node_modules/protobufjs/src/object.js", "../../../node_modules/protobufjs/src/enum.js", "../../../node_modules/protobufjs/src/encoder.js", "../../../node_modules/protobufjs/src/index-light.js", "../../../node_modules/protobufjs/src/tokenize.js", "../../../node_modules/protobufjs/src/parse.js", "../../../node_modules/protobufjs/src/common.js", "../../../node_modules/protobufjs/src/index.js", "../../../node_modules/protobufjs/index.js", "../../../node_modules/protobufjs/google/protobuf/descriptor.json", "../../../node_modules/protobufjs/ext/descriptor/index.js", "../../../node_modules/protobufjs/google/protobuf/api.json", "../../../node_modules/protobufjs/google/protobuf/source_context.json", "../../../node_modules/protobufjs/google/protobuf/type.json", "../../../node_modules/@grpc/proto-loader/src/util.ts", "../../../node_modules/long/umd/index.js", "../../../node_modules/@grpc/proto-loader/src/index.ts", "../../../node_modules/@grpc/grpc-js/src/channelz.ts", "../../../node_modules/@grpc/grpc-js/src/call-number.ts", "../../../node_modules/@grpc/grpc-js/src/compression-algorithms.ts", "../../../node_modules/@grpc/grpc-js/src/filter.ts", "../../../node_modules/@grpc/grpc-js/src/compression-filter.ts", "../../../node_modules/@grpc/grpc-js/src/control-plane-status.ts", "../../../node_modules/@grpc/grpc-js/src/deadline.ts", "../../../node_modules/@grpc/grpc-js/src/filter-stack.ts", "../../../node_modules/@grpc/grpc-js/src/single-subchannel-channel.ts", "../../../node_modules/@grpc/grpc-js/src/subchannel.ts", "../../../node_modules/@grpc/grpc-js/src/environment.ts", "../../../node_modules/@grpc/grpc-js/src/resolver-dns.ts", "../../../node_modules/@grpc/grpc-js/src/http_proxy.ts", "../../../node_modules/@grpc/grpc-js/src/stream-decoder.ts", "../../../node_modules/@grpc/grpc-js/src/subchannel-call.ts", "../../../node_modules/@grpc/grpc-js/src/transport.ts", "../../../node_modules/@grpc/grpc-js/src/subchannel-pool.ts", "../../../node_modules/@grpc/grpc-js/src/load-balancing-call.ts", "../../../node_modules/@grpc/grpc-js/src/resolving-call.ts", "../../../node_modules/@grpc/grpc-js/src/retrying-call.ts", "../../../node_modules/@grpc/grpc-js/src/subchannel-interface.ts", "../../../node_modules/@grpc/grpc-js/src/internal-channel.ts", "../../../node_modules/@grpc/grpc-js/src/channel.ts", "../../../node_modules/@grpc/grpc-js/src/server-call.ts", "../../../node_modules/@grpc/grpc-js/src/server-credentials.ts", "../../../node_modules/@grpc/grpc-js/src/duration.ts", "../../../node_modules/@grpc/grpc-js/src/orca.ts", "../../../node_modules/@grpc/grpc-js/src/server-interceptors.ts", "../../../node_modules/@grpc/grpc-js/src/server.ts", "../../../node_modules/@grpc/grpc-js/src/status-builder.ts", "../../../node_modules/@grpc/grpc-js/src/load-balancer-pick-first.ts", "../../../node_modules/@grpc/grpc-js/src/certificate-provider.ts", "../../../node_modules/@grpc/grpc-js/src/experimental.ts", "../../../node_modules/@grpc/grpc-js/src/resolver-uds.ts", "../../../node_modules/@grpc/grpc-js/src/resolver-ip.ts", "../../../node_modules/@grpc/grpc-js/src/load-balancer-round-robin.ts", "../../../node_modules/@grpc/grpc-js/src/load-balancer-outlier-detection.ts", "../../../node_modules/@grpc/grpc-js/src/priority-queue.ts", "../../../node_modules/@grpc/grpc-js/src/load-balancer-weighted-round-robin.ts", "../../../node_modules/@grpc/grpc-js/src/index.ts", "../../../node_modules/nice-grpc/src/service-definitions/grpc-js.ts", "../../../node_modules/nice-grpc/src/service-definitions/ts-proto.ts", "../../../node_modules/nice-grpc/src/service-definitions/index.ts", "../../../node_modules/abort-controller-x/src/AbortError.ts", "../../../node_modules/abort-controller-x/src/execute.ts", "../../../node_modules/abort-controller-x/src/abortable.ts", "../../../node_modules/abort-controller-x/src/delay.ts", "../../../node_modules/abort-controller-x/src/forever.ts", "../../../node_modules/abort-controller-x/src/waitForEvent.ts", "../../../node_modules/abort-controller-x/src/all.ts", "../../../node_modules/abort-controller-x/src/race.ts", "../../../node_modules/abort-controller-x/src/retry.ts", "../../../node_modules/abort-controller-x/src/spawn.ts", "../../../node_modules/abort-controller-x/src/run.ts", "../../../node_modules/abort-controller-x/src/proactiveRetry.ts", "../../../node_modules/abort-controller-x/src/index.ts", "../../../node_modules/nice-grpc/src/utils/convertMetadata.ts", "../../../node_modules/nice-grpc/src/utils/isAsyncIterable.ts", "../../../node_modules/nice-grpc/src/utils/readableToAsyncIterable.ts", "../../../node_modules/nice-grpc/src/server/createCallContext.ts", "../../../node_modules/nice-grpc/src/server/createErrorStatusObject.ts", "../../../node_modules/nice-grpc/src/server/handleBidiStreamingCall.ts", "../../../node_modules/nice-grpc/src/server/handleClientStreamingCall.ts", "../../../node_modules/nice-grpc/src/server/handleServerStreamingCall.ts", "../../../node_modules/nice-grpc/src/server/handleUnaryCall.ts", "../../../node_modules/nice-grpc/src/server/Server.ts", "../../../node_modules/nice-grpc/lib/server/ServiceImplementation.js", "../../../node_modules/nice-grpc/src/client/channel.ts", "../../../node_modules/nice-grpc/src/client/wrapClientError.ts", "../../../node_modules/nice-grpc/src/client/createBidiStreamingMethod.ts", "../../../node_modules/nice-grpc/src/client/createClientStreamingMethod.ts", "../../../node_modules/nice-grpc/src/client/createServerStreamingMethod.ts", "../../../node_modules/nice-grpc/src/client/createUnaryMethod.ts", "../../../node_modules/nice-grpc/src/client/ClientFactory.ts", "../../../node_modules/nice-grpc/lib/client/Client.js", "../../../node_modules/nice-grpc/src/index.ts", "../../grpc-client/src/middleware.ts", "../../../node_modules/nice-grpc-client-middleware-deadline/src/index.ts", "../../../node_modules/nice-grpc-client-middleware-retry/src/index.ts", "../../grpc-client/src/index.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/commandinterface.ts", "../../rc-grpc-clients/src/grpc-client.ts", "../../rc-grpc-clients/src/index.ts", "../../../node_modules/ajv/lib/compile/codegen/code.ts", "../../../node_modules/ajv/lib/compile/codegen/scope.ts", "../../../node_modules/ajv/lib/compile/codegen/index.ts", "../../../node_modules/ajv/lib/compile/util.ts", "../../../node_modules/ajv/lib/compile/names.ts", "../../../node_modules/ajv/lib/compile/errors.ts", "../../../node_modules/ajv/lib/compile/validate/boolSchema.ts", "../../../node_modules/ajv/lib/compile/rules.ts", "../../../node_modules/ajv/lib/compile/validate/applicability.ts", "../../../node_modules/ajv/lib/compile/validate/dataType.ts", "../../../node_modules/ajv/lib/compile/validate/defaults.ts", "../../../node_modules/ajv/lib/vocabularies/code.ts", "../../../node_modules/ajv/lib/compile/validate/keyword.ts", "../../../node_modules/ajv/lib/compile/validate/subschema.ts", "../../../node_modules/fast-deep-equal/index.js", "../../../node_modules/json-schema-traverse/index.js", "../../../node_modules/ajv/lib/compile/resolve.ts", "../../../node_modules/ajv/lib/compile/validate/index.ts", "../../../node_modules/ajv/lib/runtime/validation_error.ts", "../../../node_modules/ajv/lib/compile/ref_error.ts", "../../../node_modules/ajv/lib/compile/index.ts", "../../../node_modules/ajv/dist/refs/data.json", "../../../node_modules/fast-uri/lib/utils.js", "../../../node_modules/fast-uri/lib/schemes.js", "../../../node_modules/fast-uri/index.js", "../../../node_modules/ajv/lib/runtime/uri.ts", "../../../node_modules/ajv/lib/core.ts", "../../../node_modules/ajv/lib/vocabularies/core/id.ts", "../../../node_modules/ajv/lib/vocabularies/core/ref.ts", "../../../node_modules/ajv/lib/vocabularies/core/index.ts", "../../../node_modules/ajv/lib/vocabularies/validation/limitNumber.ts", "../../../node_modules/ajv/lib/vocabularies/validation/multipleOf.ts", "../../../node_modules/ajv/lib/runtime/ucs2length.ts", "../../../node_modules/ajv/lib/vocabularies/validation/limitLength.ts", "../../../node_modules/ajv/lib/vocabularies/validation/pattern.ts", "../../../node_modules/ajv/lib/vocabularies/validation/limitProperties.ts", "../../../node_modules/ajv/lib/vocabularies/validation/required.ts", "../../../node_modules/ajv/lib/vocabularies/validation/limitItems.ts", "../../../node_modules/ajv/lib/runtime/equal.ts", "../../../node_modules/ajv/lib/vocabularies/validation/uniqueItems.ts", "../../../node_modules/ajv/lib/vocabularies/validation/const.ts", "../../../node_modules/ajv/lib/vocabularies/validation/enum.ts", "../../../node_modules/ajv/lib/vocabularies/validation/index.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/additionalItems.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/items.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/prefixItems.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/items2020.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/contains.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/dependencies.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/propertyNames.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/additionalProperties.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/properties.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/patternProperties.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/not.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/anyOf.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/oneOf.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/allOf.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/if.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/thenElse.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/index.ts", "../../../node_modules/ajv/lib/vocabularies/dynamic/dynamicAnchor.ts", "../../../node_modules/ajv/lib/vocabularies/dynamic/dynamicRef.ts", "../../../node_modules/ajv/lib/vocabularies/dynamic/recursiveAnchor.ts", "../../../node_modules/ajv/lib/vocabularies/dynamic/recursiveRef.ts", "../../../node_modules/ajv/lib/vocabularies/dynamic/index.ts", "../../../node_modules/ajv/lib/vocabularies/validation/dependentRequired.ts", "../../../node_modules/ajv/lib/vocabularies/applicator/dependentSchemas.ts", "../../../node_modules/ajv/lib/vocabularies/validation/limitContains.ts", "../../../node_modules/ajv/lib/vocabularies/next.ts", "../../../node_modules/ajv/lib/vocabularies/unevaluated/unevaluatedProperties.ts", "../../../node_modules/ajv/lib/vocabularies/unevaluated/unevaluatedItems.ts", "../../../node_modules/ajv/lib/vocabularies/unevaluated/index.ts", "../../../node_modules/ajv/lib/vocabularies/format/format.ts", "../../../node_modules/ajv/lib/vocabularies/format/index.ts", "../../../node_modules/ajv/lib/vocabularies/metadata.ts", "../../../node_modules/ajv/lib/vocabularies/draft2020.ts", "../../../node_modules/ajv/lib/vocabularies/discriminator/types.ts", "../../../node_modules/ajv/lib/vocabularies/discriminator/index.ts", "../../../node_modules/ajv/dist/refs/json-schema-2020-12/schema.json", "../../../node_modules/ajv/dist/refs/json-schema-2020-12/meta/applicator.json", "../../../node_modules/ajv/dist/refs/json-schema-2020-12/meta/unevaluated.json", "../../../node_modules/ajv/dist/refs/json-schema-2020-12/meta/content.json", "../../../node_modules/ajv/dist/refs/json-schema-2020-12/meta/core.json", "../../../node_modules/ajv/dist/refs/json-schema-2020-12/meta/format-annotation.json", "../../../node_modules/ajv/dist/refs/json-schema-2020-12/meta/meta-data.json", "../../../node_modules/ajv/dist/refs/json-schema-2020-12/meta/validation.json", "../../../node_modules/ajv/lib/refs/json-schema-2020-12/index.ts", "../../../node_modules/ajv/lib/2020.ts", "../../../node_modules/reusify/reusify.js", "../../../node_modules/fastq/queue.js", "../../../node_modules/mnemonist/utils/comparators.js", "../../../node_modules/obliterator/support.js", "../../../node_modules/obliterator/foreach.js", "../../../node_modules/mnemonist/fibonacci-heap.js", "../../../node_modules/mnemonist/utils/typed-arrays.js", "../../../node_modules/mnemonist/utils/iterables.js", "../../../node_modules/mnemonist/heap.js", "../../../node_modules/mnemonist/suffix-array.js", "../../../node_modules/obliterator/iterator.js", "../../../node_modules/mnemonist/vector.js", "../../../node_modules/mnemonist/lru-cache.js", "../../../node_modules/oidc-provider/node_modules/statuses/codes.json", "../../../node_modules/oidc-provider/node_modules/statuses/index.js", "../../../node_modules/oidc-provider/node_modules/http-errors/index.js", "../../../node_modules/oidc-provider/node_modules/koa/lib/search-params.js", "../../../node_modules/oidc-provider/node_modules/mime-db/db.json", "../../../node_modules/oidc-provider/node_modules/mime-db/index.js", "../../../node_modules/oidc-provider/node_modules/mime-types/mimeScore.js", "../../../node_modules/oidc-provider/node_modules/mime-types/index.js", "../../../node_modules/oidc-provider/node_modules/media-typer/index.js", "../../../node_modules/oidc-provider/node_modules/type-is/index.js", "../../../node_modules/oidc-provider/node_modules/koa/lib/only.js", "../../../node_modules/oidc-provider/node_modules/koa/lib/request.js", "../../../node_modules/oidc-provider/node_modules/koa/lib/is-stream.js", "../../../node_modules/oidc-provider/node_modules/koa/lib/response.js", "../../../node_modules/oidc-provider/node_modules/koa/lib/context.js", "../../../node_modules/oidc-provider/node_modules/koa/lib/application.js", "../../../node_modules/@koa/router/node_modules/statuses/codes.json", "../../../node_modules/@koa/router/node_modules/statuses/index.js", "../../../node_modules/@koa/router/node_modules/http-errors/index.js", "../../../node_modules/@koa/router/node_modules/path-to-regexp/src/index.ts", "../../../node_modules/bytes/index.js", "../../../node_modules/safer-buffer/safer.js", "../../../node_modules/oidc-provider/node_modules/iconv-lite/lib/bom-handling.js", "../../../node_modules/oidc-provider/node_modules/iconv-lite/lib/helpers/merge-exports.js", "../../../node_modules/oidc-provider/node_modules/iconv-lite/encodings/internal.js", "../../../node_modules/oidc-provider/node_modules/iconv-lite/encodings/utf32.js", "../../../node_modules/oidc-provider/node_modules/iconv-lite/encodings/utf16.js", "../../../node_modules/oidc-provider/node_modules/iconv-lite/encodings/utf7.js", "../../../node_modules/oidc-provider/node_modules/iconv-lite/encodings/sbcs-codec.js", "../../../node_modules/oidc-provider/node_modules/iconv-lite/encodings/sbcs-data.js", "../../../node_modules/oidc-provider/node_modules/iconv-lite/encodings/sbcs-data-generated.js", "../../../node_modules/oidc-provider/node_modules/iconv-lite/encodings/dbcs-codec.js", "../../../node_modules/oidc-provider/node_modules/iconv-lite/encodings/tables/shiftjis.json", "../../../node_modules/oidc-provider/node_modules/iconv-lite/encodings/tables/eucjp.json", "../../../node_modules/oidc-provider/node_modules/iconv-lite/encodings/tables/cp936.json", "../../../node_modules/oidc-provider/node_modules/iconv-lite/encodings/tables/gbk-added.json", "../../../node_modules/oidc-provider/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json", "../../../node_modules/oidc-provider/node_modules/iconv-lite/encodings/tables/cp949.json", "../../../node_modules/oidc-provider/node_modules/iconv-lite/encodings/tables/cp950.json", "../../../node_modules/oidc-provider/node_modules/iconv-lite/encodings/tables/big5-added.json", "../../../node_modules/oidc-provider/node_modules/iconv-lite/encodings/dbcs-data.js", "../../../node_modules/oidc-provider/node_modules/iconv-lite/encodings/index.js", "../../../node_modules/oidc-provider/node_modules/iconv-lite/lib/streams.js", "../../../node_modules/oidc-provider/node_modules/iconv-lite/lib/index.js", "../../../node_modules/unpipe/index.js", "../../../node_modules/oidc-provider/node_modules/raw-body/index.js", "../../../node_modules/@koa/cors/index.js", "../../../node_modules/jsesc/jsesc.js", "../../../node_modules/statuses/codes.json", "../../../node_modules/statuses/index.js", "../../../node_modules/http-errors/index.js", "../../../node_modules/koa-router/node_modules/path-to-regexp/src/index.ts", "../../../node_modules/koa-router/lib/layer.js", "../../../node_modules/koa-router/lib/router.js", "../../../node_modules/media-typer/index.js", "../../../node_modules/type-is/index.js", "../../../node_modules/iconv-lite/lib/bom-handling.js", "../../../node_modules/iconv-lite/encodings/internal.js", "../../../node_modules/iconv-lite/encodings/utf16.js", "../../../node_modules/iconv-lite/encodings/utf7.js", "../../../node_modules/iconv-lite/encodings/sbcs-codec.js", "../../../node_modules/iconv-lite/encodings/sbcs-data.js", "../../../node_modules/iconv-lite/encodings/sbcs-data-generated.js", "../../../node_modules/iconv-lite/encodings/dbcs-codec.js", "../../../node_modules/iconv-lite/encodings/tables/shiftjis.json", "../../../node_modules/iconv-lite/encodings/tables/eucjp.json", "../../../node_modules/iconv-lite/encodings/tables/cp936.json", "../../../node_modules/iconv-lite/encodings/tables/gbk-added.json", "../../../node_modules/iconv-lite/encodings/tables/gb18030-ranges.json", "../../../node_modules/iconv-lite/encodings/tables/cp949.json", "../../../node_modules/iconv-lite/encodings/tables/cp950.json", "../../../node_modules/iconv-lite/encodings/tables/big5-added.json", "../../../node_modules/iconv-lite/encodings/dbcs-data.js", "../../../node_modules/iconv-lite/encodings/index.js", "../../../node_modules/iconv-lite/lib/streams.js", "../../../node_modules/iconv-lite/lib/extend-node.js", "../../../node_modules/iconv-lite/lib/index.js", "../../../node_modules/raw-body/index.js", "../../../node_modules/inflation/index.js", "../../../node_modules/@hapi/bourne/lib/index.js", "../../../node_modules/co-body/lib/utils.js", "../../../node_modules/co-body/lib/json.js", "../../../node_modules/qs/lib/formats.js", "../../../node_modules/qs/lib/utils.js", "../../../node_modules/qs/lib/stringify.js", "../../../node_modules/qs/lib/parse.js", "../../../node_modules/qs/lib/index.js", "../../../node_modules/co-body/lib/form.js", "../../../node_modules/co-body/lib/text.js", "../../../node_modules/co-body/lib/any.js", "../../../node_modules/co-body/index.js", "../../../node_modules/@noble/hashes/src/_u64.ts", "../../../node_modules/@noble/hashes/src/cryptoNode.ts", "../../../node_modules/@noble/hashes/src/utils.ts", "../../../node_modules/@noble/hashes/src/sha3.ts", "../../../node_modules/@paralleldrive/cuid2/src/index.js", "../../../node_modules/@paralleldrive/cuid2/index.js", "../../../node_modules/wrappy/wrappy.js", "../../../node_modules/dezalgo/dezalgo.js", "../../../node_modules/once/once.js", "../../../node_modules/handlebars/lib/handlebars/utils.js", "../../../node_modules/handlebars/lib/handlebars/exception.js", "../../../node_modules/handlebars/lib/handlebars/helpers/block-helper-missing.js", "../../../node_modules/handlebars/lib/handlebars/helpers/each.js", "../../../node_modules/handlebars/lib/handlebars/helpers/helper-missing.js", "../../../node_modules/handlebars/lib/handlebars/helpers/if.js", "../../../node_modules/handlebars/lib/handlebars/helpers/log.js", "../../../node_modules/handlebars/lib/handlebars/helpers/lookup.js", "../../../node_modules/handlebars/lib/handlebars/helpers/with.js", "../../../node_modules/handlebars/lib/handlebars/helpers.js", "../../../node_modules/handlebars/lib/handlebars/decorators/inline.js", "../../../node_modules/handlebars/lib/handlebars/decorators.js", "../../../node_modules/handlebars/lib/handlebars/logger.js", "../../../node_modules/handlebars/lib/handlebars/internal/create-new-lookup-object.js", "../../../node_modules/handlebars/lib/handlebars/internal/proto-access.js", "../../../node_modules/handlebars/lib/handlebars/base.js", "../../../node_modules/handlebars/lib/handlebars/safe-string.js", "../../../node_modules/handlebars/lib/handlebars/internal/wrapHelper.js", "../../../node_modules/handlebars/lib/handlebars/runtime.js", "../../../node_modules/handlebars/lib/handlebars/no-conflict.js", "../../../node_modules/handlebars/lib/handlebars.runtime.js", "../../../node_modules/handlebars/lib/handlebars/compiler/ast.js", "../../../node_modules/handlebars/lib/handlebars/compiler/parser.js", "../../../node_modules/handlebars/lib/handlebars/compiler/visitor.js", "../../../node_modules/handlebars/lib/handlebars/compiler/whitespace-control.js", "../../../node_modules/handlebars/lib/handlebars/compiler/helpers.js", "../../../node_modules/handlebars/lib/handlebars/compiler/base.js", "../../../node_modules/handlebars/lib/handlebars/compiler/compiler.js", "../../../node_modules/handlebars/lib/handlebars/compiler/code-gen.js", "../../../node_modules/handlebars/lib/handlebars/compiler/javascript-compiler.js", "../../../node_modules/handlebars/lib/handlebars.js", "../../../node_modules/handlebars/lib/handlebars/compiler/printer.js", "../../../node_modules/handlebars/lib/index.js", "../../../node_modules/request-ip/lib/is.js", "../../../node_modules/request-ip/lib/index.js", "../../rc-grpc-clients/src/generated/io/restorecommerce/country.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/address.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/currency.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/tax_type.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/tax.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/amount.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/contact_point_type.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/contact_point.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/payment_method.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/organization.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/setting.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/customer.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/file.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/price.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/geometry.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/manufacturer.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/price_group.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/product_category.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/product_prototype.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/property.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/shop.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/product.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/reference.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/invoice.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/fulfillment.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/fulfillment_courier.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/fulfillment_product.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/order.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/payment.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/credential.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/location.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/unit_code.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/template.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/command.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/search.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/rule.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/policy.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/policy_set.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/access_control.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/job.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/notification.ts", "../../rc-grpc-clients/src/generated/io/restorecommerce/ostorage.ts", "../../../node_modules/copy-to/index.js", "../../../node_modules/koa-bodyparser/index.js", "../../rc-grpc-clients/src/generated/io/restorecommerce/pdf_rendering.ts", "../../../node_modules/ws/lib/constants.js", "../../../node_modules/ws/lib/buffer-util.js", "../../../node_modules/ws/lib/limiter.js", "../../../node_modules/ws/lib/permessage-deflate.js", "../../../node_modules/ws/lib/validation.js", "../../../node_modules/ws/lib/receiver.js", "../../../node_modules/ws/lib/sender.js", "../../../node_modules/ws/lib/event-target.js", "../../../node_modules/ws/lib/extension.js", "../../../node_modules/ws/lib/websocket.js", "../../../node_modules/ws/lib/stream.js", "../../../node_modules/ws/lib/subprotocol.js", "../../../node_modules/ws/lib/websocket-server.js", "../../../node_modules/busboy/lib/utils.js", "../../../node_modules/streamsearch/lib/sbmh.js", "../../../node_modules/busboy/lib/types/multipart.js", "../../../node_modules/busboy/lib/types/urlencoded.js", "../../../node_modules/busboy/lib/index.js", "../../../node_modules/object-path/index.js", "../debug.ts", "../src/index.ts", "../node_modules/koa/dist/koa.mjs", "../node_modules/@apollo/server/src/ApolloServer.ts", "../../../node_modules/@graphql-tools/schema/esm/assertResolversPresent.js", "../../../node_modules/@graphql-tools/schema/node_modules/@graphql-tools/utils/esm/helpers.js", "../../../node_modules/cross-inspect/esm/index.js", "../../../node_modules/@graphql-tools/schema/node_modules/@graphql-tools/utils/esm/Interfaces.js", "../../../node_modules/@graphql-tools/schema/node_modules/@graphql-tools/utils/esm/mapSchema.js", "../../../node_modules/@graphql-tools/schema/node_modules/@graphql-tools/utils/esm/getObjectTypeFromTypeMap.js", "../../../node_modules/@graphql-tools/schema/node_modules/@graphql-tools/utils/esm/rewire.js", "../../../node_modules/@graphql-tools/schema/node_modules/@graphql-tools/utils/esm/stub.js", "../../../node_modules/@graphql-tools/schema/node_modules/@graphql-tools/utils/esm/transformInputValue.js", "../../../node_modules/@graphql-tools/schema/node_modules/@graphql-tools/utils/esm/heal.js", "../../../node_modules/@graphql-tools/schema/node_modules/@graphql-tools/utils/esm/forEachField.js", "../../../node_modules/@graphql-tools/schema/node_modules/@graphql-tools/utils/esm/forEachDefaultValue.js", "../../../node_modules/@graphql-tools/schema/esm/addResolversToSchema.js", "../../../node_modules/@graphql-tools/schema/esm/checkForResolveTypeResolver.js", "../../../node_modules/@graphql-tools/schema/esm/extendResolversFromInterfaces.js", "../../../node_modules/@graphql-tools/schema/esm/makeExecutableSchema.js", "../../../node_modules/@graphql-tools/merge/node_modules/@graphql-tools/utils/esm/helpers.js", "../../../node_modules/@graphql-tools/merge/node_modules/@graphql-tools/utils/esm/getDirectiveExtensions.js", "../../../node_modules/@graphql-tools/merge/node_modules/@graphql-tools/utils/esm/getArgumentValues.js", "../../../node_modules/@graphql-tools/merge/node_modules/@graphql-tools/utils/esm/errors.js", "../../../node_modules/@graphql-tools/merge/node_modules/@graphql-tools/utils/esm/jsutils.js", "../../../node_modules/@graphql-tools/merge/node_modules/@graphql-tools/utils/esm/memoize.js", "../../../node_modules/@graphql-tools/merge/node_modules/@graphql-tools/utils/esm/get-directives.js", "../../../node_modules/@graphql-tools/merge/node_modules/@graphql-tools/utils/esm/print-schema-with-directives.js", "../../../node_modules/@graphql-tools/merge/node_modules/@graphql-tools/utils/esm/astFromType.js", "../../../node_modules/@graphql-tools/merge/node_modules/@graphql-tools/utils/esm/astFromValue.js", "../../../node_modules/@graphql-tools/merge/node_modules/@graphql-tools/utils/esm/astFromValueUntyped.js", "../../../node_modules/@graphql-tools/merge/node_modules/@graphql-tools/utils/esm/descriptionFromObject.js", "../../../node_modules/@graphql-tools/merge/node_modules/@graphql-tools/utils/esm/rootTypes.js", "../../../node_modules/@graphql-tools/merge/node_modules/@graphql-tools/utils/esm/comments.js", "../../../node_modules/@graphql-tools/merge/node_modules/@graphql-tools/utils/esm/mergeDeep.js", "../../../node_modules/@graphql-tools/merge/node_modules/@graphql-tools/utils/esm/isDocumentNode.js", "../../../node_modules/@graphql-tools/merge/esm/merge-resolvers.js", "../../../node_modules/@graphql-tools/merge/esm/typedefs-mergers/arguments.js", "../../../node_modules/@graphql-tools/merge/esm/typedefs-mergers/directives.js", "../../../node_modules/@graphql-tools/merge/esm/typedefs-mergers/enum-values.js", "../../../node_modules/@graphql-tools/merge/esm/typedefs-mergers/enum.js", "../../../node_modules/@graphql-tools/merge/esm/typedefs-mergers/utils.js", "../../../node_modules/@graphql-tools/merge/esm/typedefs-mergers/fields.js", "../../../node_modules/@graphql-tools/merge/esm/typedefs-mergers/input-type.js", "../../../node_modules/@graphql-tools/merge/esm/typedefs-mergers/interface.js", "../../../node_modules/@graphql-tools/merge/esm/typedefs-mergers/merge-named-type-array.js", "../../../node_modules/@graphql-tools/merge/esm/typedefs-mergers/merge-nodes.js", "../../../node_modules/@graphql-tools/merge/esm/typedefs-mergers/scalar.js", "../../../node_modules/@graphql-tools/merge/esm/typedefs-mergers/schema-def.js", "../../../node_modules/@graphql-tools/merge/esm/typedefs-mergers/type.js", "../../../node_modules/@graphql-tools/merge/esm/typedefs-mergers/union.js", "../../../node_modules/@graphql-tools/merge/esm/typedefs-mergers/merge-typedefs.js", "../../../node_modules/@graphql-tools/merge/esm/links.js", "../../../node_modules/@graphql-tools/merge/esm/extensions.js", "../node_modules/@apollo/server/src/utils/resolvable.ts", "../node_modules/@apollo/server/src/determineApolloConfig.ts", "../node_modules/@apollo/server/src/errorNormalize.ts", "../node_modules/@apollo/server/src/errors/index.ts", "../node_modules/@apollo/server/src/runHttpQuery.ts", "../node_modules/@apollo/server/src/internalErrorClasses.ts", "../node_modules/@apollo/server/src/utils/HeaderMap.ts", "../node_modules/@apollo/server/src/httpBatching.ts", "../node_modules/@apollo/server/src/preventCsrf.ts", "../node_modules/@apollo/server/src/requestPipeline.ts", "../node_modules/@apollo/server/src/utils/schemaInstrumentation.ts", "../node_modules/@apollo/server/src/utils/isDefined.ts", "../node_modules/@apollo/server/src/utils/invokeHooks.ts", "../node_modules/@apollo/server/src/utils/makeGatewayGraphQLRequestContext.ts", "../node_modules/@apollo/server/src/incrementalDeliveryPolyfill.ts", "../node_modules/@apollo/server/src/utils/schemaManager.ts", "../node_modules/@apollo/server/src/validationRules/NoIntrospection.ts", "../node_modules/@apollo/server/src/validationRules/RecursiveSelectionsLimit.ts", "../src/utils.ts", "../src/modules/facade-status/gql/index.ts", "../src/modules/facade-status/gql/resolvers.ts", "../src/modules/facade-status/gql/schema.ts", "../src/modules/facade-status/gql/types.ts", "../src/modules/facade-status/index.ts", "../src/modules/identity/index.ts", "../src/modules/identity/gql/types.ts", "../src/gql/protos/types.ts", "../src/gql/protos/registry.ts", "../../../node_modules/graphql-upload/GraphQLUpload.mjs", "../../../node_modules/graphql-upload/Upload.mjs", "../src/gql/protos/utils.ts", "../src/gql/protos/graphql.ts", "../src/gql/protos/federation.ts", "../src/gql/protos/resolvers.ts", "../../../node_modules/remeda/src/internal/lazyDataLastImpl.ts", "../../../node_modules/remeda/src/purry.ts", "../../../node_modules/remeda/src/clone.ts", "../../../node_modules/remeda/src/internal/utilityEvaluators.ts", "../../../node_modules/remeda/src/filter.ts", "../../../node_modules/remeda/src/isArray.ts", "../../../node_modules/remeda/src/isIncludedIn.ts", "../../../node_modules/remeda/src/isNullish.ts", "../../../node_modules/remeda/src/isString.ts", "../../../node_modules/remeda/src/pick.ts", "../../kafka-client/src/events/index.ts", "../../kafka-client/src/events/provider/kafka/index.ts", "../../../node_modules/@platformatic/kafka/dist/diagnostic.js", "../../../node_modules/@platformatic/kafka/dist/protocol/apis.js", "../../../node_modules/@platformatic/kafka/dist/protocol/errors.js", "../../../node_modules/@platformatic/kafka/dist/errors.js", "../../../node_modules/@platformatic/kafka/dist/utils.js", "../../../node_modules/@platformatic/kafka/dist/network/connection-pool.js", "../../../node_modules/@platformatic/kafka/dist/apis/callbacks.js", "../../../node_modules/@platformatic/kafka/dist/network/connection.js", "../../../node_modules/@platformatic/kafka/dist/apis/enumerations.js", "../../../node_modules/@platformatic/kafka/dist/apis/index.js", "../../../node_modules/@platformatic/kafka/dist/apis/definitions.js", "../../../node_modules/@platformatic/kafka/dist/apis/admin/alter-client-quotas-v1.js", "../../../node_modules/@platformatic/kafka/dist/protocol/definitions.js", "../../../node_modules/@platformatic/kafka/dist/protocol/varint.js", "../../../node_modules/@platformatic/kafka/dist/protocol/dynamic-buffer.js", "../../../node_modules/@platformatic/kafka/dist/protocol/writer.js", "../../../node_modules/@platformatic/kafka/dist/apis/admin/alter-configs-v2.js", "../../../node_modules/@platformatic/kafka/dist/apis/admin/alter-partition-reassignments-v0.js", "../../../node_modules/@platformatic/kafka/dist/apis/admin/alter-partition-v3.js", "../../../node_modules/@platformatic/kafka/dist/apis/admin/alter-replica-log-dirs-v2.js", "../../../node_modules/@platformatic/kafka/dist/apis/admin/alter-user-scram-credentials-v0.js", "../../../node_modules/@platformatic/kafka/dist/apis/admin/consumer-group-describe-v0.js", "../../../node_modules/@platformatic/kafka/dist/apis/admin/create-acls-v3.js", "../../../node_modules/@platformatic/kafka/dist/apis/admin/create-delegation-token-v3.js", "../../../node_modules/@platformatic/kafka/dist/apis/admin/create-partitions-v3.js", "../../../node_modules/@platformatic/kafka/dist/apis/admin/create-topics-v7.js", "../../../node_modules/@platformatic/kafka/dist/apis/admin/delete-acls-v3.js", "../../../node_modules/@platformatic/kafka/dist/apis/admin/delete-groups-v2.js", "../../../node_modules/@platformatic/kafka/dist/apis/admin/delete-records-v2.js", "../../../node_modules/@platformatic/kafka/dist/apis/admin/delete-topics-v6.js", "../../../node_modules/@platformatic/kafka/dist/apis/admin/describe-acls-v3.js", "../../../node_modules/@platformatic/kafka/dist/apis/admin/describe-client-quotas-v0.js", "../../../node_modules/@platformatic/kafka/dist/apis/admin/describe-cluster-v1.js", "../../../node_modules/@platformatic/kafka/dist/apis/admin/describe-configs-v4.js", "../../../node_modules/@platformatic/kafka/dist/apis/admin/describe-delegation-token-v3.js", "../../../node_modules/@platformatic/kafka/dist/apis/admin/describe-groups-v5.js", "../../../node_modules/@platformatic/kafka/dist/apis/admin/describe-log-dirs-v4.js", "../../../node_modules/@platformatic/kafka/dist/apis/admin/describe-producers-v0.js", "../../../node_modules/@platformatic/kafka/dist/apis/admin/describe-quorum-v2.js", "../../../node_modules/@platformatic/kafka/dist/apis/admin/describe-topic-partitions-v0.js", "../../../node_modules/@platformatic/kafka/dist/apis/admin/describe-transactions-v0.js", "../../../node_modules/@platformatic/kafka/dist/apis/admin/describe-user-scram-credentials-v0.js", "../../../node_modules/@platformatic/kafka/dist/apis/admin/envelope-v0.js", "../../../node_modules/@platformatic/kafka/dist/apis/admin/expire-delegation-token-v2.js", "../../../node_modules/@platformatic/kafka/dist/apis/admin/incremental-alter-configs-v1.js", "../../../node_modules/@platformatic/kafka/dist/apis/admin/list-groups-v4.js", "../../../node_modules/scule/dist/index.mjs", "../../../node_modules/@platformatic/kafka/dist/apis/admin/list-groups-v5.js", "../../../node_modules/@platformatic/kafka/dist/apis/admin/list-partition-reassignments-v0.js", "../../../node_modules/@platformatic/kafka/dist/apis/admin/list-transactions-v1.js", "../../../node_modules/@platformatic/kafka/dist/apis/admin/offset-delete-v0.js", "../../../node_modules/@platformatic/kafka/dist/apis/admin/renew-delegation-token-v2.js", "../../../node_modules/@platformatic/kafka/dist/apis/admin/unregister-broker-v0.js", "../../../node_modules/@platformatic/kafka/dist/apis/admin/update-features-v1.js", "../../../node_modules/@platformatic/kafka/dist/apis/consumer/consumer-group-heartbeat-v0.js", "../../../node_modules/@platformatic/kafka/dist/apis/consumer/fetch-v15.js", "../../../node_modules/@platformatic/kafka/dist/protocol/reader.js", "../../../node_modules/@platformatic/kafka/dist/protocol/compression.js", "../../../node_modules/@platformatic/kafka/dist/protocol/crc32c.js", "../../../node_modules/@platformatic/kafka/dist/protocol/records.js", "../../../node_modules/@platformatic/kafka/dist/apis/consumer/fetch-v16.js", "../../../node_modules/@platformatic/kafka/dist/apis/consumer/fetch-v17.js", "../../../node_modules/@platformatic/kafka/dist/apis/consumer/heartbeat-v4.js", "../../../node_modules/@platformatic/kafka/dist/apis/consumer/join-group-v9.js", "../../../node_modules/@platformatic/kafka/dist/apis/consumer/leave-group-v5.js", "../../../node_modules/@platformatic/kafka/dist/apis/consumer/list-offsets-v8.js", "../../../node_modules/@platformatic/kafka/dist/apis/consumer/list-offsets-v9.js", "../../../node_modules/@platformatic/kafka/dist/apis/consumer/offset-commit-v8.js", "../../../node_modules/@platformatic/kafka/dist/apis/consumer/offset-commit-v9.js", "../../../node_modules/@platformatic/kafka/dist/apis/consumer/offset-fetch-v8.js", "../../../node_modules/@platformatic/kafka/dist/apis/consumer/offset-fetch-v9.js", "../../../node_modules/@platformatic/kafka/dist/apis/consumer/sync-group-v5.js", "../../../node_modules/@platformatic/kafka/dist/apis/metadata/api-versions-v3.js", "../../../node_modules/@platformatic/kafka/dist/apis/metadata/api-versions-v4.js", "../../../node_modules/@platformatic/kafka/dist/apis/metadata/find-coordinator-v4.js", "../../../node_modules/@platformatic/kafka/dist/apis/metadata/find-coordinator-v5.js", "../../../node_modules/@platformatic/kafka/dist/apis/metadata/find-coordinator-v6.js", "../../../node_modules/@platformatic/kafka/dist/apis/metadata/metadata-v12.js", "../../../node_modules/@platformatic/kafka/dist/apis/producer/add-offsets-to-txn-v4.js", "../../../node_modules/@platformatic/kafka/dist/apis/producer/add-partitions-to-txn-v5.js", "../../../node_modules/@platformatic/kafka/dist/apis/producer/end-txn-v4.js", "../../../node_modules/@platformatic/kafka/dist/apis/producer/init-producer-id-v4.js", "../../../node_modules/@platformatic/kafka/dist/apis/producer/init-producer-id-v5.js", "../../../node_modules/@platformatic/kafka/dist/apis/producer/produce-v10.js", "../../../node_modules/@platformatic/kafka/dist/apis/producer/produce-v11.js", "../../../node_modules/@platformatic/kafka/dist/apis/producer/produce-v9.js", "../../../node_modules/@platformatic/kafka/dist/apis/producer/txn-offset-commit-v4.js", "../../../node_modules/@platformatic/kafka/dist/apis/security/sasl-authenticate-v2.js", "../../../node_modules/@platformatic/kafka/dist/apis/security/sasl-handshake-v1.js", "../../../node_modules/@platformatic/kafka/dist/apis/telemetry/get-telemetry-subscriptions-v0.js", "../../../node_modules/@platformatic/kafka/dist/apis/telemetry/list-client-metrics-resources-v0.js", "../../../node_modules/@platformatic/kafka/dist/apis/telemetry/push-telemetry-v0.js", "../../../node_modules/mnemonist/index.mjs", "../../../node_modules/@platformatic/kafka/dist/protocol/murmur2.js", "../../../node_modules/@platformatic/kafka/dist/protocol/sasl/oauth-bearer.js", "../../../node_modules/@platformatic/kafka/dist/protocol/sasl/credential-provider.js", "../../../node_modules/@platformatic/kafka/dist/protocol/sasl/plain.js", "../../../node_modules/@platformatic/kafka/dist/protocol/sasl/scram-sha.js", "../../../node_modules/@platformatic/kafka/dist/network/utils.js", "../../../node_modules/@platformatic/kafka/dist/clients/serde.js", "../../../node_modules/@platformatic/kafka/dist/clients/base/base.js", "../../../node_modules/@platformatic/kafka/dist/symbols.js", "../../../node_modules/@platformatic/kafka/dist/version.js", "../../../node_modules/@platformatic/kafka/dist/clients/base/options.js", "../../../node_modules/@platformatic/kafka/dist/clients/admin/options.js", "../../../node_modules/@platformatic/kafka/dist/clients/admin/admin.js", "../../../node_modules/@platformatic/kafka/dist/clients/metrics.js", "../../../node_modules/@platformatic/kafka/dist/clients/consumer/messages-stream.js", "../../../node_modules/@platformatic/kafka/dist/clients/consumer/types.js", "../../../node_modules/@platformatic/kafka/dist/clients/consumer/options.js", "../../../node_modules/@platformatic/kafka/dist/clients/consumer/partitions-assigners.js", "../../../node_modules/@platformatic/kafka/dist/clients/consumer/topics-map.js", "../../../node_modules/@platformatic/kafka/dist/clients/consumer/consumer.js", "../../../node_modules/@platformatic/kafka/dist/clients/producer/options.js", "../../../node_modules/@platformatic/kafka/dist/clients/producer/producer.js", "../../kafka-client/src/protos.ts", "../../kafka-client/src/utils.ts", "../../kafka-client/src/events/provider/local/index.ts", "../src/gql/protos/stream-to-async-iterator.ts", "../src/gql/protos/schema.ts", "../src/modules/identity/interfaces.ts", "../src/modules/identity/gql/schema.ts", "../src/modules/identity/gql/federation.ts", "../../../node_modules/oidc-provider/lib/helpers/attention.js", "../../../node_modules/oidc-provider/lib/provider.js", "../../../node_modules/oidc-provider/node_modules/quick-lru/index.js", "../../../node_modules/oidc-provider/node_modules/koa/dist/koa.mjs", "../../../node_modules/oidc-provider/lib/consts/param_list.js", "../../../node_modules/oidc-provider/lib/consts/dev_keystore.js", "../../../node_modules/oidc-provider/lib/consts/client_attributes.js", "../../../node_modules/oidc-provider/lib/consts/jwa.js", "../../../node_modules/oidc-provider/lib/consts/index.js", "../../../node_modules/oidc-provider/lib/helpers/_/is_plain_object.js", "../../../node_modules/oidc-provider/lib/helpers/_/remove.js", "../../../node_modules/oidc-provider/lib/helpers/_/merge.js", "../../../node_modules/oidc-provider/lib/helpers/_/pick.js", "../../../node_modules/oidc-provider/lib/helpers/_/set.js", "../../../node_modules/oidc-provider/lib/helpers/formatters.js", "../../../node_modules/oidc-provider/lib/helpers/defaults.js", "../../../node_modules/nanoid/index.js", "../../../node_modules/nanoid/url-alphabet/index.js", "../../../node_modules/oidc-provider/lib/helpers/nanoid.js", "../../../node_modules/oidc-provider/lib/helpers/interaction_policy/check.js", "../../../node_modules/oidc-provider/lib/helpers/interaction_policy/prompt.js", "../../../node_modules/oidc-provider/lib/helpers/errors.js", "../../../node_modules/oidc-provider/lib/helpers/_/upper_first.js", "../../../node_modules/oidc-provider/lib/helpers/_/camel_case.js", "../../../node_modules/oidc-provider/lib/helpers/weak_cache.js", "../../../node_modules/oidc-provider/lib/helpers/interaction_policy/prompts/login.js", "../../../node_modules/oidc-provider/lib/helpers/interaction_policy/prompts/consent.js", "../../../node_modules/oidc-provider/lib/helpers/interaction_policy/index.js", "../../../node_modules/oidc-provider/lib/helpers/html_safe.js", "../../../node_modules/oidc-provider/lib/helpers/features.js", "../../../node_modules/oidc-provider/lib/helpers/configuration.js", "../../../node_modules/oidc-provider/lib/helpers/initialize_keystore.js", "../../../node_modules/oidc-provider/lib/helpers/keystore.js", "../../../node_modules/oidc-provider/lib/helpers/initialize_adapter.js", "../../../node_modules/oidc-provider/lib/helpers/epoch_time.js", "../../../node_modules/oidc-provider/lib/adapters/memory_adapter.js", "../../../node_modules/oidc-provider/lib/helpers/type_validators.js", "../../../node_modules/oidc-provider/lib/helpers/initialize_app.js", "../../../node_modules/@koa/router/dist/index.mjs", "../../../node_modules/oidc-provider/lib/actions/interaction.js", "../../../node_modules/oidc-provider/lib/shared/selective_body.js", "../../../node_modules/oidc-provider/lib/views/index.js", "../../../node_modules/eta/src/err.ts", "../../../node_modules/eta/src/compile.ts", "../../../node_modules/eta/src/compile-string.ts", "../../../node_modules/eta/src/utils.ts", "../../../node_modules/eta/src/config.ts", "../../../node_modules/eta/src/parse.ts", "../../../node_modules/eta/src/render.ts", "../../../node_modules/eta/src/storage.ts", "../../../node_modules/eta/src/internal.ts", "../../../node_modules/eta/src/core.ts", "../../../node_modules/oidc-provider/lib/views/layout.js", "../../../node_modules/oidc-provider/lib/views/login.js", "../../../node_modules/oidc-provider/lib/views/interaction.js", "../../../node_modules/oidc-provider/lib/shared/no_cache.js", "../../../node_modules/oidc-provider/lib/shared/cors.js", "../../../node_modules/oidc-provider/lib/actions/grants/index.js", "../../../node_modules/oidc-provider/lib/actions/grants/authorization_code.js", "../../../node_modules/oidc-provider/lib/helpers/validate_presence.js", "../../../node_modules/oidc-provider/lib/helpers/pkce.js", "../../../node_modules/oidc-provider/lib/helpers/pkce_format.js", "../../../node_modules/oidc-provider/lib/helpers/constant_equals.js", "../../../node_modules/oidc-provider/lib/helpers/revoke.js", "../../../node_modules/oidc-provider/lib/helpers/filter_claims.js", "../../../node_modules/oidc-provider/lib/helpers/validate_dpop.js", "../../../node_modules/jose/dist/webapi/lib/buffer_utils.js", "../../../node_modules/jose/dist/webapi/lib/base64.js", "../../../node_modules/jose/dist/webapi/util/base64url.js", "../../../node_modules/jose/dist/webapi/util/errors.js", "../../../node_modules/jose/dist/webapi/lib/iv.js", "../../../node_modules/jose/dist/webapi/lib/check_iv_length.js", "../../../node_modules/jose/dist/webapi/lib/check_cek_length.js", "../../../node_modules/jose/dist/webapi/lib/crypto_key.js", "../../../node_modules/jose/dist/webapi/lib/invalid_key_input.js", "../../../node_modules/jose/dist/webapi/lib/is_key_like.js", "../../../node_modules/jose/dist/webapi/lib/decrypt.js", "../../../node_modules/jose/dist/webapi/lib/is_disjoint.js", "../../../node_modules/jose/dist/webapi/lib/is_object.js", "../../../node_modules/jose/dist/webapi/lib/aeskw.js", "../../../node_modules/jose/dist/webapi/lib/digest.js", "../../../node_modules/jose/dist/webapi/lib/ecdhes.js", "../../../node_modules/jose/dist/webapi/lib/pbes2kw.js", "../../../node_modules/jose/dist/webapi/lib/check_key_length.js", "../../../node_modules/jose/dist/webapi/lib/rsaes.js", "../../../node_modules/jose/dist/webapi/lib/cek.js", "../../../node_modules/jose/dist/webapi/lib/jwk_to_key.js", "../../../node_modules/jose/dist/webapi/key/import.js", "../../../node_modules/jose/dist/webapi/lib/encrypt.js", "../../../node_modules/jose/dist/webapi/lib/aesgcmkw.js", "../../../node_modules/jose/dist/webapi/lib/decrypt_key_management.js", "../../../node_modules/jose/dist/webapi/lib/validate_crit.js", "../../../node_modules/jose/dist/webapi/lib/validate_algorithms.js", "../../../node_modules/jose/dist/webapi/lib/is_jwk.js", "../../../node_modules/jose/dist/webapi/lib/normalize_key.js", "../../../node_modules/jose/dist/webapi/lib/check_key_type.js", "../../../node_modules/jose/dist/webapi/jwe/flattened/decrypt.js", "../../../node_modules/jose/dist/webapi/jwe/compact/decrypt.js", "../../../node_modules/jose/dist/webapi/lib/private_symbols.js", "../../../node_modules/jose/dist/webapi/lib/key_to_jwk.js", "../../../node_modules/jose/dist/webapi/key/export.js", "../../../node_modules/jose/dist/webapi/lib/encrypt_key_management.js", "../../../node_modules/jose/dist/webapi/jwe/flattened/encrypt.js", "../../../node_modules/jose/dist/webapi/lib/subtle_dsa.js", "../../../node_modules/jose/dist/webapi/lib/get_sign_verify_key.js", "../../../node_modules/jose/dist/webapi/lib/verify.js", "../../../node_modules/jose/dist/webapi/jws/flattened/verify.js", "../../../node_modules/jose/dist/webapi/jws/compact/verify.js", "../../../node_modules/jose/dist/webapi/lib/jwt_claims_set.js", "../../../node_modules/jose/dist/webapi/jwt/verify.js", "../../../node_modules/jose/dist/webapi/jwe/compact/encrypt.js", "../../../node_modules/jose/dist/webapi/lib/sign.js", "../../../node_modules/jose/dist/webapi/jws/flattened/sign.js", "../../../node_modules/jose/dist/webapi/jws/compact/sign.js", "../../../node_modules/jose/dist/webapi/jwk/thumbprint.js", "../../../node_modules/jose/dist/webapi/jwk/embedded.js", "../../../node_modules/jose/dist/webapi/jwt/unsecured.js", "../../../node_modules/jose/dist/webapi/util/decode_protected_header.js", "../../../node_modules/jose/dist/webapi/util/decode_jwt.js", "../../../node_modules/oidc-provider/lib/helpers/challenge.js", "../../../node_modules/oidc-provider/lib/helpers/base64url.js", "../../../node_modules/oidc-provider/lib/helpers/resolve_resource.js", "../../../node_modules/oidc-provider/lib/shared/check_rar.js", "../../../node_modules/oidc-provider/lib/helpers/account_claims.js", "../../../node_modules/oidc-provider/lib/helpers/set_rt_bindings.js", "../../../node_modules/oidc-provider/lib/helpers/check_attest_binding.js", "../../../node_modules/oidc-provider/lib/actions/grants/client_credentials.js", "../../../node_modules/oidc-provider/lib/shared/check_resource.js", "../../../node_modules/oidc-provider/lib/actions/grants/refresh_token.js", "../../../node_modules/oidc-provider/lib/helpers/_/difference.js", "../../../node_modules/oidc-provider/lib/helpers/certificate_thumbprint.js", "../../../node_modules/oidc-provider/lib/actions/grants/device_code.js", "../../../node_modules/oidc-provider/lib/actions/grants/ciba.js", "../../../node_modules/oidc-provider/lib/response_modes/index.js", "../../../node_modules/oidc-provider/lib/helpers/script_src_sha.js", "../../../node_modules/oidc-provider/lib/response_modes/form_post.js", "../../../node_modules/oidc-provider/lib/helpers/redirect_uri.js", "../../../node_modules/oidc-provider/lib/response_modes/fragment.js", "../../../node_modules/oidc-provider/lib/response_modes/query.js", "../../../node_modules/oidc-provider/lib/response_modes/web_message.js", "../../../node_modules/oidc-provider/lib/response_modes/jwt.js", "../../../node_modules/oidc-provider/lib/shared/error_handler.js", "../../../node_modules/oidc-provider/lib/helpers/user_code_form.js", "../../../node_modules/oidc-provider/lib/helpers/re_render_errors.js", "../../../node_modules/oidc-provider/lib/helpers/err_out.js", "../../../node_modules/oidc-provider/lib/shared/authorization_error_handler.js", "../../../node_modules/oidc-provider/lib/helpers/resolve_response_mode.js", "../../../node_modules/oidc-provider/lib/actions/authorization/one_redirect_uri_clients.js", "../../../node_modules/oidc-provider/lib/shared/conditional_body.js", "../../../node_modules/oidc-provider/lib/shared/reject_dupes.js", "../../../node_modules/oidc-provider/lib/helpers/params.js", "../../../node_modules/oidc-provider/lib/helpers/_/omit_by.js", "../../../node_modules/oidc-provider/lib/shared/assemble_params.js", "../../../node_modules/oidc-provider/lib/shared/session.js", "../../../node_modules/oidc-provider/lib/helpers/append_www_authenticate.js", "../../../node_modules/oidc-provider/lib/helpers/jwt.js", "../../../node_modules/oidc-provider/lib/shared/jwt_client_auth.js", "../../../node_modules/oidc-provider/lib/shared/attest_client_auth.js", "../../../node_modules/oidc-provider/lib/shared/client_auth.js", "../../../node_modules/oidc-provider/lib/actions/authorization/check_client.js", "../../../node_modules/oidc-provider/lib/actions/authorization/check_response_mode.js", "../../../node_modules/oidc-provider/lib/actions/authorization/reject_unsupported.js", "../../../node_modules/oidc-provider/lib/actions/authorization/reject_registration.js", "../../../node_modules/oidc-provider/lib/actions/authorization/oauth_required.js", "../../../node_modules/oidc-provider/lib/actions/authorization/reject_request_and_uri.js", "../../../node_modules/oidc-provider/lib/actions/authorization/load_pushed_authorization_request.js", "../../../node_modules/oidc-provider/lib/actions/authorization/process_request_object.js", "../../../node_modules/oidc-provider/lib/actions/authorization/oidc_required.js", "../../../node_modules/oidc-provider/lib/actions/authorization/ciba_required.js", "../../../node_modules/oidc-provider/lib/actions/authorization/check_prompt.js", "../../../node_modules/oidc-provider/lib/actions/authorization/check_max_age.js", "../../../node_modules/oidc-provider/lib/actions/authorization/check_id_token_hint.js", "../../../node_modules/oidc-provider/lib/actions/authorization/check_scope.js", "../../../node_modules/oidc-provider/lib/actions/authorization/check_response_type.js", "../../../node_modules/oidc-provider/lib/actions/authorization/check_redirect_uri.js", "../../../node_modules/oidc-provider/lib/actions/authorization/assign_defaults.js", "../../../node_modules/oidc-provider/lib/actions/authorization/check_claims.js", "../../../node_modules/oidc-provider/lib/actions/authorization/assign_claims.js", "../../../node_modules/oidc-provider/lib/actions/authorization/load_account.js", "../../../node_modules/oidc-provider/lib/actions/authorization/load_grant.js", "../../../node_modules/oidc-provider/lib/actions/authorization/interactions.js", "../../../node_modules/oidc-provider/lib/helpers/combined_scope.js", "../../../node_modules/oidc-provider/lib/helpers/process_response_types.js", "../../../node_modules/oidc-provider/lib/actions/authorization/respond.js", "../../../node_modules/oidc-provider/lib/actions/authorization/check_pkce.js", "../../../node_modules/oidc-provider/lib/actions/authorization/interaction_emit.js", "../../../node_modules/oidc-provider/lib/actions/authorization/resume.js", "../../../node_modules/oidc-provider/lib/actions/authorization/check_client_grant_type.js", "../../../node_modules/oidc-provider/lib/actions/authorization/check_openid_scope.js", "../../../node_modules/oidc-provider/lib/helpers/user_codes.js", "../../../node_modules/oidc-provider/lib/actions/authorization/device_authorization_response.js", "../../../node_modules/oidc-provider/lib/actions/authorization/authenticated_client_id.js", "../../../node_modules/oidc-provider/lib/actions/authorization/device_user_flow.js", "../../../node_modules/oidc-provider/lib/actions/authorization/device_user_flow_errors.js", "../../../node_modules/oidc-provider/lib/actions/authorization/device_user_flow_response.js", "../../../node_modules/oidc-provider/lib/actions/authorization/pushed_authorization_request_remap_errors.js", "../../../node_modules/oidc-provider/lib/actions/authorization/backchannel_request_remap_errors.js", "../../../node_modules/oidc-provider/lib/actions/authorization/strip_outside_jar_params.js", "../../../node_modules/oidc-provider/lib/actions/authorization/pushed_authorization_request_response.js", "../../../node_modules/oidc-provider/lib/actions/authorization/ciba_load_account.js", "../../../node_modules/oidc-provider/lib/actions/authorization/check_requested_expiry.js", "../../../node_modules/oidc-provider/lib/actions/authorization/backchannel_request_response.js", "../../../node_modules/oidc-provider/lib/actions/authorization/check_ciba_context.js", "../../../node_modules/oidc-provider/lib/actions/authorization/check_dpop_jkt.js", "../../../node_modules/oidc-provider/lib/actions/authorization/check_extra_params.js", "../../../node_modules/oidc-provider/lib/actions/authorization/unsupported_rar.js", "../../../node_modules/oidc-provider/lib/actions/authorization/index.js", "../../../node_modules/oidc-provider/lib/actions/userinfo.js", "../../../node_modules/oidc-provider/lib/actions/token.js", "../../../node_modules/oidc-provider/lib/actions/jwks.js", "../../../node_modules/oidc-provider/lib/actions/registration.js", "../../../node_modules/oidc-provider/lib/helpers/sector_validate.js", "../../../node_modules/oidc-provider/lib/helpers/add_client.js", "../../../node_modules/oidc-provider/lib/shared/reject_structured_tokens.js", "../../../node_modules/oidc-provider/lib/actions/revocation.js", "../../../node_modules/oidc-provider/lib/actions/introspection.js", "../../../node_modules/oidc-provider/lib/helpers/_/defaults.js", "../../../node_modules/oidc-provider/lib/actions/discovery.js", "../../../node_modules/oidc-provider/lib/actions/challenge.js", "../../../node_modules/oidc-provider/lib/actions/end_session.js", "../../../node_modules/oidc-provider/lib/actions/code_verification.js", "../../../node_modules/oidc-provider/lib/helpers/als.js", "../../../node_modules/oidc-provider/lib/helpers/initialize_clients.js", "../../../node_modules/oidc-provider/lib/helpers/resource_server.js", "../../../node_modules/oidc-provider/lib/helpers/valid_url.js", "../../../node_modules/oidc-provider/lib/helpers/claims.js", "../../../node_modules/oidc-provider/lib/helpers/oidc_context.js", "../../../node_modules/oidc-provider/lib/models/mixins/apply.js", "../../../node_modules/oidc-provider/lib/helpers/_/pick_by.js", "../../../node_modules/oidc-provider/lib/models/formats/opaque.js", "../../../node_modules/oidc-provider/lib/models/formats/jwt.js", "../../../node_modules/oidc-provider/lib/models/formats/dynamic.js", "../../../node_modules/oidc-provider/lib/models/formats/index.js", "../../../node_modules/oidc-provider/lib/models/mixins/has_format.js", "../../../node_modules/oidc-provider/lib/models/mixins/has_grant_type.js", "../../../node_modules/oidc-provider/lib/models/mixins/has_grant_id.js", "../../../node_modules/oidc-provider/lib/models/mixins/is_sender_constrained.js", "../../../node_modules/oidc-provider/lib/models/mixins/is_session_bound.js", "../../../node_modules/oidc-provider/lib/models/mixins/set_audience.js", "../../../node_modules/oidc-provider/lib/models/access_token.js", "../../../node_modules/oidc-provider/lib/models/mixins/consumable.js", "../../../node_modules/oidc-provider/lib/models/mixins/is_attestation_constrained.js", "../../../node_modules/oidc-provider/lib/models/mixins/stores_auth.js", "../../../node_modules/oidc-provider/lib/models/mixins/stores_pkce.js", "../../../node_modules/oidc-provider/lib/models/authorization_code.js", "../../../node_modules/oidc-provider/lib/helpers/_/snake_case.js", "../../../node_modules/oidc-provider/lib/models/base_model.js", "../../../node_modules/oidc-provider/lib/models/base_token.js", "../../../node_modules/oidc-provider/lib/models/client.js", "../../../node_modules/oidc-provider/lib/helpers/_/map_keys.js", "../../../node_modules/oidc-provider/lib/helpers/sector_identifier.js", "../../../node_modules/oidc-provider/lib/helpers/client_schema.js", "../../../node_modules/oidc-provider/lib/models/client_credentials.js", "../../../node_modules/oidc-provider/lib/models/device_code.js", "../../../node_modules/oidc-provider/lib/models/backchannel_authentication_request.js", "../../../node_modules/oidc-provider/lib/models/id_token.js", "../../../node_modules/oidc-provider/lib/models/mixins/has_policies.js", "../../../node_modules/oidc-provider/lib/models/initial_access_token.js", "../../../node_modules/oidc-provider/lib/models/interaction.js", "../../../node_modules/oidc-provider/lib/models/pushed_authorization_request.js", "../../../node_modules/oidc-provider/lib/models/refresh_token.js", "../../../node_modules/oidc-provider/lib/models/registration_access_token.js", "../../../node_modules/oidc-provider/lib/models/replay_detection.js", "../../../node_modules/oidc-provider/lib/models/session.js", "../../../node_modules/oidc-provider/lib/models/grant.js", "../../../node_modules/oidc-provider/lib/index.js", "../src/modules/identity/oidc/router.ts", "../../../node_modules/koa-body/src/index.ts", "../../../node_modules/zod/v4/classic/external.js", "../../../node_modules/zod/v4/core/index.js", "../../../node_modules/zod/v4/core/core.js", "../../../node_modules/zod/v4/core/util.js", "../../../node_modules/zod/v4/core/errors.js", "../../../node_modules/zod/v4/core/parse.js", "../../../node_modules/zod/v4/core/regexes.js", "../../../node_modules/zod/v4/core/checks.js", "../../../node_modules/zod/v4/core/doc.js", "../../../node_modules/zod/v4/core/versions.js", "../../../node_modules/zod/v4/core/schemas.js", "../../../node_modules/zod/v4/locales/index.js", "../../../node_modules/zod/v4/locales/ar.js", "../../../node_modules/zod/v4/locales/az.js", "../../../node_modules/zod/v4/locales/be.js", "../../../node_modules/zod/v4/locales/bg.js", "../../../node_modules/zod/v4/locales/ca.js", "../../../node_modules/zod/v4/locales/cs.js", "../../../node_modules/zod/v4/locales/da.js", "../../../node_modules/zod/v4/locales/de.js", "../../../node_modules/zod/v4/locales/en.js", "../../../node_modules/zod/v4/locales/eo.js", "../../../node_modules/zod/v4/locales/es.js", "../../../node_modules/zod/v4/locales/fa.js", "../../../node_modules/zod/v4/locales/fi.js", "../../../node_modules/zod/v4/locales/fr.js", "../../../node_modules/zod/v4/locales/fr-CA.js", "../../../node_modules/zod/v4/locales/he.js", "../../../node_modules/zod/v4/locales/hu.js", "../../../node_modules/zod/v4/locales/hy.js", "../../../node_modules/zod/v4/locales/id.js", "../../../node_modules/zod/v4/locales/is.js", "../../../node_modules/zod/v4/locales/it.js", "../../../node_modules/zod/v4/locales/ja.js", "../../../node_modules/zod/v4/locales/ka.js", "../../../node_modules/zod/v4/locales/km.js", "../../../node_modules/zod/v4/locales/kh.js", "../../../node_modules/zod/v4/locales/ko.js", "../../../node_modules/zod/v4/locales/lt.js", "../../../node_modules/zod/v4/locales/mk.js", "../../../node_modules/zod/v4/locales/ms.js", "../../../node_modules/zod/v4/locales/nl.js", "../../../node_modules/zod/v4/locales/no.js", "../../../node_modules/zod/v4/locales/ota.js", "../../../node_modules/zod/v4/locales/ps.js", "../../../node_modules/zod/v4/locales/pl.js", "../../../node_modules/zod/v4/locales/pt.js", "../../../node_modules/zod/v4/locales/ru.js", "../../../node_modules/zod/v4/locales/sl.js", "../../../node_modules/zod/v4/locales/sv.js", "../../../node_modules/zod/v4/locales/ta.js", "../../../node_modules/zod/v4/locales/th.js", "../../../node_modules/zod/v4/locales/tr.js", "../../../node_modules/zod/v4/locales/uk.js", "../../../node_modules/zod/v4/locales/ua.js", "../../../node_modules/zod/v4/locales/ur.js", "../../../node_modules/zod/v4/locales/uz.js", "../../../node_modules/zod/v4/locales/vi.js", "../../../node_modules/zod/v4/locales/zh-CN.js", "../../../node_modules/zod/v4/locales/zh-TW.js", "../../../node_modules/zod/v4/locales/yo.js", "../../../node_modules/zod/v4/core/registries.js", "../../../node_modules/zod/v4/core/api.js", "../../../node_modules/zod/v4/core/to-json-schema.js", "../../../node_modules/zod/v4/core/json-schema-processors.js", "../../../node_modules/zod/v4/core/json-schema-generator.js", "../../../node_modules/zod/v4/core/json-schema.js", "../../../node_modules/zod/v4/classic/schemas.js", "../../../node_modules/zod/v4/classic/checks.js", "../../../node_modules/zod/v4/classic/iso.js", "../../../node_modules/zod/v4/classic/errors.js", "../../../node_modules/zod/v4/classic/parse.js", "../../../node_modules/zod/v4/classic/compat.js", "../../../node_modules/zod/v4/classic/from-json-schema.js", "../../../node_modules/zod/v4/classic/coerce.js", "../../../node_modules/koa-body/src/types.ts", "../../../node_modules/koa-body/src/utils/body-type-util.ts", "../../../node_modules/formidable/src/PersistentFile.js", "../../../node_modules/formidable/src/VolatileFile.js", "../../../node_modules/formidable/src/Formidable.js", "../../../node_modules/formidable/src/FormidableError.js", "../../../node_modules/formidable/src/parsers/Dummy.js", "../../../node_modules/formidable/src/parsers/Multipart.js", "../../../node_modules/formidable/src/parsers/OctetStream.js", "../../../node_modules/formidable/src/plugins/octetstream.js", "../../../node_modules/formidable/src/parsers/Querystring.js", "../../../node_modules/formidable/src/plugins/querystring.js", "../../../node_modules/formidable/src/plugins/multipart.js", "../../../node_modules/formidable/src/parsers/JSON.js", "../../../node_modules/formidable/src/plugins/json.js", "../../../node_modules/formidable/src/index.js", "../../../node_modules/koa-body/src/utils/parse-with-formidable.ts", "../../../node_modules/koa-body/src/utils/patch-util.ts", "../../../node_modules/koa-body/src/utils/string-method-to-enum-method.ts", "../../../node_modules/koa-body/src/utils/throwable-to-error.ts", "../src/modules/identity/oidc/templates.ts", "../src/modules/identity/oidc/adapter.ts", "../src/modules/identity/oidc/in-memory-adapter.ts", "../src/modules/identity/oidc/utils.ts", "../src/modules/identity/oidc/user.ts", "../src/modules/identity/oidc/password-grant.ts", "../../../node_modules/ua-parser-js/src/main/ua-parser.mjs", "../src/modules/identity/oidc/interfaces.ts", "../src/modules/identity/oidc/index.ts", "../src/modules/identity/grpc/index.ts", "../src/modules/identity/oauth/oauth.ts", "../src/modules/ordering/gql/types.ts", "../src/modules/ordering/interfaces.ts", "../src/modules/ordering/gql/schema.ts", "../src/modules/ordering/gql/federation.ts", "../src/modules/ordering/grpc/index.ts", "../src/modules/ordering/index.ts", "../src/modules/payment/gql/types.ts", "../src/modules/payment/interfaces.ts", "../src/modules/payment/gql/schema.ts", "../src/modules/payment/gql/federation.ts", "../src/modules/payment/grpc/index.ts", "../src/modules/payment/index.ts", "../src/modules/master_data/gql/types.ts", "../src/modules/master_data/interfaces.ts", "../src/modules/master_data/gql/schema.ts", "../src/modules/master_data/gql/federation.ts", "../src/modules/master_data/grpc/index.ts", "../src/modules/master_data/index.ts", "../src/modules/catalog/gql/types.ts", "../src/modules/catalog/interfaces.ts", "../src/modules/catalog/gql/schema.ts", "../src/modules/catalog/gql/federation.ts", "../src/modules/catalog/grpc/index.ts", "../src/modules/catalog/index.ts", "../src/modules/invoicing/gql/types.ts", "../src/modules/invoicing/interfaces.ts", "../src/modules/invoicing/gql/schema.ts", "../src/modules/invoicing/gql/federation.ts", "../src/modules/invoicing/grpc/index.ts", "../src/modules/invoicing/index.ts", "../src/modules/fulfillment/gql/types.ts", "../src/modules/fulfillment/interfaces.ts", "../src/modules/fulfillment/gql/schema.ts", "../src/modules/fulfillment/gql/federation.ts", "../src/modules/fulfillment/grpc/index.ts", "../src/modules/fulfillment/index.ts", "../src/modules/indexing/gql/types.ts", "../src/modules/indexing/interfaces.ts", "../src/modules/indexing/gql/schema.ts", "../src/modules/access-control/gql/types.ts", "../src/modules/indexing/gql/federation.ts", "../src/modules/indexing/grpc/index.ts", "../src/modules/indexing/index.ts", "../src/modules/scheduling/gql/types.ts", "../src/modules/scheduling/interfaces.ts", "../src/modules/scheduling/gql/schema.ts", "../src/modules/scheduling/gql/federation.ts", "../src/modules/scheduling/grpc/index.ts", "../src/modules/scheduling/index.ts", "../src/modules/notification/gql/types.ts", "../src/modules/notification/interfaces.ts", "../src/modules/notification/gql/schema.ts", "../src/modules/notification/gql/federation.ts", "../src/modules/notification/grpc/index.ts", "../src/modules/notification/index.ts", "../src/modules/access-control/interfaces.ts", "../src/modules/access-control/gql/schema.ts", "../src/modules/access-control/gql/federation.ts", "../src/modules/access-control/grpc/index.ts", "../src/modules/access-control/index.ts", "../src/modules/ostorage/gql/types.ts", "../src/modules/ostorage/interfaces.ts", "../src/modules/ostorage/gql/schema.ts", "../src/modules/ostorage/gql/federation.ts", "../src/modules/ostorage/grpc/index.ts", "../src/modules/ostorage/objectDownloadReqHandler.ts", "../../../node_modules/into-stream/index.js", "../src/modules/ostorage/index.ts", "../src/modules/pdf-rendering/gql/types.ts", "../src/modules/pdf-rendering/interfaces.ts", "../src/modules/pdf-rendering/gql/schema.ts", "../src/modules/pdf-rendering/gql/federation.ts", "../src/modules/pdf-rendering/grpc/index.ts", "../src/modules/pdf-rendering/index.ts", "../node_modules/@apollo/server/src/plugin/drainHttpServer/stoppable.ts", "../node_modules/@apollo/server/src/plugin/drainHttpServer/index.ts", "../../../node_modules/ws/wrapper.mjs", "../../../node_modules/graphql-ws/dist/common-CGW11Fyb.js", "../../../node_modules/graphql-ws/dist/server-3ewaJSjp.js", "../../../node_modules/graphql-ws/dist/use/ws.js", "../../../node_modules/graphql-upload/processRequest.mjs", "../../../node_modules/fs-capacitor/src/index.ts", "../../../node_modules/graphql-upload/GRAPHQL_MULTIPART_REQUEST_SPEC_URL.mjs", "../../../node_modules/graphql-upload/ignoreStream.mjs", "../../../node_modules/graphql-upload/graphqlUploadKoa.mjs", "../src/middlewares/req-res-logger/index.ts", "../src/gql/types/AccessControlTypes.ts", "../src/gql/types/DateType.ts", "../src/gql/types/FilterType.ts", "../src/gql/types/MetaType.ts", "../src/gql/types/ScopeType.ts", "../src/gql/types/SortType.ts", "../src/gql/types/StatusType.ts", "../test/jwks.json"],
  "sourcesContent": ["(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n    typeof define === 'function' && define.amd ? define(['exports'], factory) :\n    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.async = {}));\n})(this, (function (exports) { 'use strict';\n\n    /**\n     * Creates a continuation function with some arguments already applied.\n     *\n     * Useful as a shorthand when combined with other control flow functions. Any\n     * arguments passed to the returned function are added to the arguments\n     * originally passed to apply.\n     *\n     * @name apply\n     * @static\n     * @memberOf module:Utils\n     * @method\n     * @category Util\n     * @param {Function} fn - The function you want to eventually apply all\n     * arguments to. Invokes with (arguments...).\n     * @param {...*} arguments... - Any number of arguments to automatically apply\n     * when the continuation is called.\n     * @returns {Function} the partially-applied function\n     * @example\n     *\n     * // using apply\n     * async.parallel([\n     *     async.apply(fs.writeFile, 'testfile1', 'test1'),\n     *     async.apply(fs.writeFile, 'testfile2', 'test2')\n     * ]);\n     *\n     *\n     * // the same process without using apply\n     * async.parallel([\n     *     function(callback) {\n     *         fs.writeFile('testfile1', 'test1', callback);\n     *     },\n     *     function(callback) {\n     *         fs.writeFile('testfile2', 'test2', callback);\n     *     }\n     * ]);\n     *\n     * // It's possible to pass any number of additional arguments when calling the\n     * // continuation:\n     *\n     * node> var fn = async.apply(sys.puts, 'one');\n     * node> fn('two', 'three');\n     * one\n     * two\n     * three\n     */\n    function apply(fn, ...args) {\n        return (...callArgs) => fn(...args,...callArgs);\n    }\n\n    function initialParams (fn) {\n        return function (...args/*, callback*/) {\n            var callback = args.pop();\n            return fn.call(this, args, callback);\n        };\n    }\n\n    /* istanbul ignore file */\n\n    var hasQueueMicrotask = typeof queueMicrotask === 'function' && queueMicrotask;\n    var hasSetImmediate = typeof setImmediate === 'function' && setImmediate;\n    var hasNextTick = typeof process === 'object' && typeof process.nextTick === 'function';\n\n    function fallback(fn) {\n        setTimeout(fn, 0);\n    }\n\n    function wrap(defer) {\n        return (fn, ...args) => defer(() => fn(...args));\n    }\n\n    var _defer$1;\n\n    if (hasQueueMicrotask) {\n        _defer$1 = queueMicrotask;\n    } else if (hasSetImmediate) {\n        _defer$1 = setImmediate;\n    } else if (hasNextTick) {\n        _defer$1 = process.nextTick;\n    } else {\n        _defer$1 = fallback;\n    }\n\n    var setImmediate$1 = wrap(_defer$1);\n\n    /**\n     * Take a sync function and make it async, passing its return value to a\n     * callback. This is useful for plugging sync functions into a waterfall,\n     * series, or other async functions. Any arguments passed to the generated\n     * function will be passed to the wrapped function (except for the final\n     * callback argument). Errors thrown will be passed to the callback.\n     *\n     * If the function passed to `asyncify` returns a Promise, that promises's\n     * resolved/rejected state will be used to call the callback, rather than simply\n     * the synchronous return value.\n     *\n     * This also means you can asyncify ES2017 `async` functions.\n     *\n     * @name asyncify\n     * @static\n     * @memberOf module:Utils\n     * @method\n     * @alias wrapSync\n     * @category Util\n     * @param {Function} func - The synchronous function, or Promise-returning\n     * function to convert to an {@link AsyncFunction}.\n     * @returns {AsyncFunction} An asynchronous wrapper of the `func`. To be\n     * invoked with `(args..., callback)`.\n     * @example\n     *\n     * // passing a regular synchronous function\n     * async.waterfall([\n     *     async.apply(fs.readFile, filename, \"utf8\"),\n     *     async.asyncify(JSON.parse),\n     *     function (data, next) {\n     *         // data is the result of parsing the text.\n     *         // If there was a parsing error, it would have been caught.\n     *     }\n     * ], callback);\n     *\n     * // passing a function returning a promise\n     * async.waterfall([\n     *     async.apply(fs.readFile, filename, \"utf8\"),\n     *     async.asyncify(function (contents) {\n     *         return db.model.create(contents);\n     *     }),\n     *     function (model, next) {\n     *         // `model` is the instantiated model object.\n     *         // If there was an error, this function would be skipped.\n     *     }\n     * ], callback);\n     *\n     * // es2017 example, though `asyncify` is not needed if your JS environment\n     * // supports async functions out of the box\n     * var q = async.queue(async.asyncify(async function(file) {\n     *     var intermediateStep = await processFile(file);\n     *     return await somePromise(intermediateStep)\n     * }));\n     *\n     * q.push(files);\n     */\n    function asyncify(func) {\n        if (isAsync(func)) {\n            return function (...args/*, callback*/) {\n                const callback = args.pop();\n                const promise = func.apply(this, args);\n                return handlePromise(promise, callback)\n            }\n        }\n\n        return initialParams(function (args, callback) {\n            var result;\n            try {\n                result = func.apply(this, args);\n            } catch (e) {\n                return callback(e);\n            }\n            // if result is Promise object\n            if (result && typeof result.then === 'function') {\n                return handlePromise(result, callback)\n            } else {\n                callback(null, result);\n            }\n        });\n    }\n\n    function handlePromise(promise, callback) {\n        return promise.then(value => {\n            invokeCallback(callback, null, value);\n        }, err => {\n            invokeCallback(callback, err && (err instanceof Error || err.message) ? err : new Error(err));\n        });\n    }\n\n    function invokeCallback(callback, error, value) {\n        try {\n            callback(error, value);\n        } catch (err) {\n            setImmediate$1(e => { throw e }, err);\n        }\n    }\n\n    function isAsync(fn) {\n        return fn[Symbol.toStringTag] === 'AsyncFunction';\n    }\n\n    function isAsyncGenerator(fn) {\n        return fn[Symbol.toStringTag] === 'AsyncGenerator';\n    }\n\n    function isAsyncIterable(obj) {\n        return typeof obj[Symbol.asyncIterator] === 'function';\n    }\n\n    function wrapAsync(asyncFn) {\n        if (typeof asyncFn !== 'function') throw new Error('expected a function')\n        return isAsync(asyncFn) ? asyncify(asyncFn) : asyncFn;\n    }\n\n    // conditionally promisify a function.\n    // only return a promise if a callback is omitted\n    function awaitify (asyncFn, arity) {\n        if (!arity) arity = asyncFn.length;\n        if (!arity) throw new Error('arity is undefined')\n        function awaitable (...args) {\n            if (typeof args[arity - 1] === 'function') {\n                return asyncFn.apply(this, args)\n            }\n\n            return new Promise((resolve, reject) => {\n                args[arity - 1] = (err, ...cbArgs) => {\n                    if (err) return reject(err)\n                    resolve(cbArgs.length > 1 ? cbArgs : cbArgs[0]);\n                };\n                asyncFn.apply(this, args);\n            })\n        }\n\n        return awaitable\n    }\n\n    function applyEach$1 (eachfn) {\n        return function applyEach(fns, ...callArgs) {\n            const go = awaitify(function (callback) {\n                var that = this;\n                return eachfn(fns, (fn, cb) => {\n                    wrapAsync(fn).apply(that, callArgs.concat(cb));\n                }, callback);\n            });\n            return go;\n        };\n    }\n\n    function _asyncMap(eachfn, arr, iteratee, callback) {\n        arr = arr || [];\n        var results = [];\n        var counter = 0;\n        var _iteratee = wrapAsync(iteratee);\n\n        return eachfn(arr, (value, _, iterCb) => {\n            var index = counter++;\n            _iteratee(value, (err, v) => {\n                results[index] = v;\n                iterCb(err);\n            });\n        }, err => {\n            callback(err, results);\n        });\n    }\n\n    function isArrayLike(value) {\n        return value &&\n            typeof value.length === 'number' &&\n            value.length >= 0 &&\n            value.length % 1 === 0;\n    }\n\n    // A temporary value used to identify if the loop should be broken.\n    // See #1064, #1293\n    const breakLoop = {};\n\n    function once(fn) {\n        function wrapper (...args) {\n            if (fn === null) return;\n            var callFn = fn;\n            fn = null;\n            callFn.apply(this, args);\n        }\n        Object.assign(wrapper, fn);\n        return wrapper\n    }\n\n    function getIterator (coll) {\n        return coll[Symbol.iterator] && coll[Symbol.iterator]();\n    }\n\n    function createArrayIterator(coll) {\n        var i = -1;\n        var len = coll.length;\n        return function next() {\n            return ++i < len ? {value: coll[i], key: i} : null;\n        }\n    }\n\n    function createES2015Iterator(iterator) {\n        var i = -1;\n        return function next() {\n            var item = iterator.next();\n            if (item.done)\n                return null;\n            i++;\n            return {value: item.value, key: i};\n        }\n    }\n\n    function createObjectIterator(obj) {\n        var okeys = obj ? Object.keys(obj) : [];\n        var i = -1;\n        var len = okeys.length;\n        return function next() {\n            var key = okeys[++i];\n            if (key === '__proto__') {\n                return next();\n            }\n            return i < len ? {value: obj[key], key} : null;\n        };\n    }\n\n    function createIterator(coll) {\n        if (isArrayLike(coll)) {\n            return createArrayIterator(coll);\n        }\n\n        var iterator = getIterator(coll);\n        return iterator ? createES2015Iterator(iterator) : createObjectIterator(coll);\n    }\n\n    function onlyOnce(fn) {\n        return function (...args) {\n            if (fn === null) throw new Error(\"Callback was already called.\");\n            var callFn = fn;\n            fn = null;\n            callFn.apply(this, args);\n        };\n    }\n\n    // for async generators\n    function asyncEachOfLimit(generator, limit, iteratee, callback) {\n        let done = false;\n        let canceled = false;\n        let awaiting = false;\n        let running = 0;\n        let idx = 0;\n\n        function replenish() {\n            //console.log('replenish')\n            if (running >= limit || awaiting || done) return\n            //console.log('replenish awaiting')\n            awaiting = true;\n            generator.next().then(({value, done: iterDone}) => {\n                //console.log('got value', value)\n                if (canceled || done) return\n                awaiting = false;\n                if (iterDone) {\n                    done = true;\n                    if (running <= 0) {\n                        //console.log('done nextCb')\n                        callback(null);\n                    }\n                    return;\n                }\n                running++;\n                iteratee(value, idx, iterateeCallback);\n                idx++;\n                replenish();\n            }).catch(handleError);\n        }\n\n        function iterateeCallback(err, result) {\n            //console.log('iterateeCallback')\n            running -= 1;\n            if (canceled) return\n            if (err) return handleError(err)\n\n            if (err === false) {\n                done = true;\n                canceled = true;\n                return\n            }\n\n            if (result === breakLoop || (done && running <= 0)) {\n                done = true;\n                //console.log('done iterCb')\n                return callback(null);\n            }\n            replenish();\n        }\n\n        function handleError(err) {\n            if (canceled) return\n            awaiting = false;\n            done = true;\n            callback(err);\n        }\n\n        replenish();\n    }\n\n    var eachOfLimit$2 = (limit) => {\n        return (obj, iteratee, callback) => {\n            callback = once(callback);\n            if (limit <= 0) {\n                throw new RangeError('concurrency limit cannot be less than 1')\n            }\n            if (!obj) {\n                return callback(null);\n            }\n            if (isAsyncGenerator(obj)) {\n                return asyncEachOfLimit(obj, limit, iteratee, callback)\n            }\n            if (isAsyncIterable(obj)) {\n                return asyncEachOfLimit(obj[Symbol.asyncIterator](), limit, iteratee, callback)\n            }\n            var nextElem = createIterator(obj);\n            var done = false;\n            var canceled = false;\n            var running = 0;\n            var looping = false;\n\n            function iterateeCallback(err, value) {\n                if (canceled) return\n                running -= 1;\n                if (err) {\n                    done = true;\n                    callback(err);\n                }\n                else if (err === false) {\n                    done = true;\n                    canceled = true;\n                }\n                else if (value === breakLoop || (done && running <= 0)) {\n                    done = true;\n                    return callback(null);\n                }\n                else if (!looping) {\n                    replenish();\n                }\n            }\n\n            function replenish () {\n                looping = true;\n                while (running < limit && !done) {\n                    var elem = nextElem();\n                    if (elem === null) {\n                        done = true;\n                        if (running <= 0) {\n                            callback(null);\n                        }\n                        return;\n                    }\n                    running += 1;\n                    iteratee(elem.value, elem.key, onlyOnce(iterateeCallback));\n                }\n                looping = false;\n            }\n\n            replenish();\n        };\n    };\n\n    /**\n     * The same as [`eachOf`]{@link module:Collections.eachOf} but runs a maximum of `limit` async operations at a\n     * time.\n     *\n     * @name eachOfLimit\n     * @static\n     * @memberOf module:Collections\n     * @method\n     * @see [async.eachOf]{@link module:Collections.eachOf}\n     * @alias forEachOfLimit\n     * @category Collection\n     * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n     * @param {number} limit - The maximum number of async operations at a time.\n     * @param {AsyncFunction} iteratee - An async function to apply to each\n     * item in `coll`. The `key` is the item's key, or index in the case of an\n     * array.\n     * Invoked with (item, key, callback).\n     * @param {Function} [callback] - A callback which is called when all\n     * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n     * @returns {Promise} a promise, if a callback is omitted\n     */\n    function eachOfLimit(coll, limit, iteratee, callback) {\n        return eachOfLimit$2(limit)(coll, wrapAsync(iteratee), callback);\n    }\n\n    var eachOfLimit$1 = awaitify(eachOfLimit, 4);\n\n    // eachOf implementation optimized for array-likes\n    function eachOfArrayLike(coll, iteratee, callback) {\n        callback = once(callback);\n        var index = 0,\n            completed = 0,\n            {length} = coll,\n            canceled = false;\n        if (length === 0) {\n            callback(null);\n        }\n\n        function iteratorCallback(err, value) {\n            if (err === false) {\n                canceled = true;\n            }\n            if (canceled === true) return\n            if (err) {\n                callback(err);\n            } else if ((++completed === length) || value === breakLoop) {\n                callback(null);\n            }\n        }\n\n        for (; index < length; index++) {\n            iteratee(coll[index], index, onlyOnce(iteratorCallback));\n        }\n    }\n\n    // a generic version of eachOf which can handle array, object, and iterator cases.\n    function eachOfGeneric (coll, iteratee, callback) {\n        return eachOfLimit$1(coll, Infinity, iteratee, callback);\n    }\n\n    /**\n     * Like [`each`]{@link module:Collections.each}, except that it passes the key (or index) as the second argument\n     * to the iteratee.\n     *\n     * @name eachOf\n     * @static\n     * @memberOf module:Collections\n     * @method\n     * @alias forEachOf\n     * @category Collection\n     * @see [async.each]{@link module:Collections.each}\n     * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n     * @param {AsyncFunction} iteratee - A function to apply to each\n     * item in `coll`.\n     * The `key` is the item's key, or index in the case of an array.\n     * Invoked with (item, key, callback).\n     * @param {Function} [callback] - A callback which is called when all\n     * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n     * @returns {Promise} a promise, if a callback is omitted\n     * @example\n     *\n     * // dev.json is a file containing a valid json object config for dev environment\n     * // dev.json is a file containing a valid json object config for test environment\n     * // prod.json is a file containing a valid json object config for prod environment\n     * // invalid.json is a file with a malformed json object\n     *\n     * let configs = {}; //global variable\n     * let validConfigFileMap = {dev: 'dev.json', test: 'test.json', prod: 'prod.json'};\n     * let invalidConfigFileMap = {dev: 'dev.json', test: 'test.json', invalid: 'invalid.json'};\n     *\n     * // asynchronous function that reads a json file and parses the contents as json object\n     * function parseFile(file, key, callback) {\n     *     fs.readFile(file, \"utf8\", function(err, data) {\n     *         if (err) return calback(err);\n     *         try {\n     *             configs[key] = JSON.parse(data);\n     *         } catch (e) {\n     *             return callback(e);\n     *         }\n     *         callback();\n     *     });\n     * }\n     *\n     * // Using callbacks\n     * async.forEachOf(validConfigFileMap, parseFile, function (err) {\n     *     if (err) {\n     *         console.error(err);\n     *     } else {\n     *         console.log(configs);\n     *         // configs is now a map of JSON data, e.g.\n     *         // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json}\n     *     }\n     * });\n     *\n     * //Error handing\n     * async.forEachOf(invalidConfigFileMap, parseFile, function (err) {\n     *     if (err) {\n     *         console.error(err);\n     *         // JSON parse error exception\n     *     } else {\n     *         console.log(configs);\n     *     }\n     * });\n     *\n     * // Using Promises\n     * async.forEachOf(validConfigFileMap, parseFile)\n     * .then( () => {\n     *     console.log(configs);\n     *     // configs is now a map of JSON data, e.g.\n     *     // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json}\n     * }).catch( err => {\n     *     console.error(err);\n     * });\n     *\n     * //Error handing\n     * async.forEachOf(invalidConfigFileMap, parseFile)\n     * .then( () => {\n     *     console.log(configs);\n     * }).catch( err => {\n     *     console.error(err);\n     *     // JSON parse error exception\n     * });\n     *\n     * // Using async/await\n     * async () => {\n     *     try {\n     *         let result = await async.forEachOf(validConfigFileMap, parseFile);\n     *         console.log(configs);\n     *         // configs is now a map of JSON data, e.g.\n     *         // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json}\n     *     }\n     *     catch (err) {\n     *         console.log(err);\n     *     }\n     * }\n     *\n     * //Error handing\n     * async () => {\n     *     try {\n     *         let result = await async.forEachOf(invalidConfigFileMap, parseFile);\n     *         console.log(configs);\n     *     }\n     *     catch (err) {\n     *         console.log(err);\n     *         // JSON parse error exception\n     *     }\n     * }\n     *\n     */\n    function eachOf(coll, iteratee, callback) {\n        var eachOfImplementation = isArrayLike(coll) ? eachOfArrayLike : eachOfGeneric;\n        return eachOfImplementation(coll, wrapAsync(iteratee), callback);\n    }\n\n    var eachOf$1 = awaitify(eachOf, 3);\n\n    /**\n     * Produces a new collection of values by mapping each value in `coll` through\n     * the `iteratee` function. The `iteratee` is called with an item from `coll`\n     * and a callback for when it has finished processing. Each of these callbacks\n     * takes 2 arguments: an `error`, and the transformed item from `coll`. If\n     * `iteratee` passes an error to its callback, the main `callback` (for the\n     * `map` function) is immediately called with the error.\n     *\n     * Note, that since this function applies the `iteratee` to each item in\n     * parallel, there is no guarantee that the `iteratee` functions will complete\n     * in order. However, the results array will be in the same order as the\n     * original `coll`.\n     *\n     * If `map` is passed an Object, the results will be an Array.  The results\n     * will roughly be in the order of the original Objects' keys (but this can\n     * vary across JavaScript engines).\n     *\n     * @name map\n     * @static\n     * @memberOf module:Collections\n     * @method\n     * @category Collection\n     * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n     * @param {AsyncFunction} iteratee - An async function to apply to each item in\n     * `coll`.\n     * The iteratee should complete with the transformed item.\n     * Invoked with (item, callback).\n     * @param {Function} [callback] - A callback which is called when all `iteratee`\n     * functions have finished, or an error occurs. Results is an Array of the\n     * transformed items from the `coll`. Invoked with (err, results).\n     * @returns {Promise} a promise, if no callback is passed\n     * @example\n     *\n     * // file1.txt is a file that is 1000 bytes in size\n     * // file2.txt is a file that is 2000 bytes in size\n     * // file3.txt is a file that is 3000 bytes in size\n     * // file4.txt does not exist\n     *\n     * const fileList = ['file1.txt','file2.txt','file3.txt'];\n     * const withMissingFileList = ['file1.txt','file2.txt','file4.txt'];\n     *\n     * // asynchronous function that returns the file size in bytes\n     * function getFileSizeInBytes(file, callback) {\n     *     fs.stat(file, function(err, stat) {\n     *         if (err) {\n     *             return callback(err);\n     *         }\n     *         callback(null, stat.size);\n     *     });\n     * }\n     *\n     * // Using callbacks\n     * async.map(fileList, getFileSizeInBytes, function(err, results) {\n     *     if (err) {\n     *         console.log(err);\n     *     } else {\n     *         console.log(results);\n     *         // results is now an array of the file size in bytes for each file, e.g.\n     *         // [ 1000, 2000, 3000]\n     *     }\n     * });\n     *\n     * // Error Handling\n     * async.map(withMissingFileList, getFileSizeInBytes, function(err, results) {\n     *     if (err) {\n     *         console.log(err);\n     *         // [ Error: ENOENT: no such file or directory ]\n     *     } else {\n     *         console.log(results);\n     *     }\n     * });\n     *\n     * // Using Promises\n     * async.map(fileList, getFileSizeInBytes)\n     * .then( results => {\n     *     console.log(results);\n     *     // results is now an array of the file size in bytes for each file, e.g.\n     *     // [ 1000, 2000, 3000]\n     * }).catch( err => {\n     *     console.log(err);\n     * });\n     *\n     * // Error Handling\n     * async.map(withMissingFileList, getFileSizeInBytes)\n     * .then( results => {\n     *     console.log(results);\n     * }).catch( err => {\n     *     console.log(err);\n     *     // [ Error: ENOENT: no such file or directory ]\n     * });\n     *\n     * // Using async/await\n     * async () => {\n     *     try {\n     *         let results = await async.map(fileList, getFileSizeInBytes);\n     *         console.log(results);\n     *         // results is now an array of the file size in bytes for each file, e.g.\n     *         // [ 1000, 2000, 3000]\n     *     }\n     *     catch (err) {\n     *         console.log(err);\n     *     }\n     * }\n     *\n     * // Error Handling\n     * async () => {\n     *     try {\n     *         let results = await async.map(withMissingFileList, getFileSizeInBytes);\n     *         console.log(results);\n     *     }\n     *     catch (err) {\n     *         console.log(err);\n     *         // [ Error: ENOENT: no such file or directory ]\n     *     }\n     * }\n     *\n     */\n    function map (coll, iteratee, callback) {\n        return _asyncMap(eachOf$1, coll, iteratee, callback)\n    }\n    var map$1 = awaitify(map, 3);\n\n    /**\n     * Applies the provided arguments to each function in the array, calling\n     * `callback` after all functions have completed. If you only provide the first\n     * argument, `fns`, then it will return a function which lets you pass in the\n     * arguments as if it were a single function call. If more arguments are\n     * provided, `callback` is required while `args` is still optional. The results\n     * for each of the applied async functions are passed to the final callback\n     * as an array.\n     *\n     * @name applyEach\n     * @static\n     * @memberOf module:ControlFlow\n     * @method\n     * @category Control Flow\n     * @param {Array|Iterable|AsyncIterable|Object} fns - A collection of {@link AsyncFunction}s\n     * to all call with the same arguments\n     * @param {...*} [args] - any number of separate arguments to pass to the\n     * function.\n     * @param {Function} [callback] - the final argument should be the callback,\n     * called when all functions have completed processing.\n     * @returns {AsyncFunction} - Returns a function that takes no args other than\n     * an optional callback, that is the result of applying the `args` to each\n     * of the functions.\n     * @example\n     *\n     * const appliedFn = async.applyEach([enableSearch, updateSchema], 'bucket')\n     *\n     * appliedFn((err, results) => {\n     *     // results[0] is the results for `enableSearch`\n     *     // results[1] is the results for `updateSchema`\n     * });\n     *\n     * // partial application example:\n     * async.each(\n     *     buckets,\n     *     async (bucket) => async.applyEach([enableSearch, updateSchema], bucket)(),\n     *     callback\n     * );\n     */\n    var applyEach = applyEach$1(map$1);\n\n    /**\n     * The same as [`eachOf`]{@link module:Collections.eachOf} but runs only a single async operation at a time.\n     *\n     * @name eachOfSeries\n     * @static\n     * @memberOf module:Collections\n     * @method\n     * @see [async.eachOf]{@link module:Collections.eachOf}\n     * @alias forEachOfSeries\n     * @category Collection\n     * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n     * @param {AsyncFunction} iteratee - An async function to apply to each item in\n     * `coll`.\n     * Invoked with (item, key, callback).\n     * @param {Function} [callback] - A callback which is called when all `iteratee`\n     * functions have finished, or an error occurs. Invoked with (err).\n     * @returns {Promise} a promise, if a callback is omitted\n     */\n    function eachOfSeries(coll, iteratee, callback) {\n        return eachOfLimit$1(coll, 1, iteratee, callback)\n    }\n    var eachOfSeries$1 = awaitify(eachOfSeries, 3);\n\n    /**\n     * The same as [`map`]{@link module:Collections.map} but runs only a single async operation at a time.\n     *\n     * @name mapSeries\n     * @static\n     * @memberOf module:Collections\n     * @method\n     * @see [async.map]{@link module:Collections.map}\n     * @category Collection\n     * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n     * @param {AsyncFunction} iteratee - An async function to apply to each item in\n     * `coll`.\n     * The iteratee should complete with the transformed item.\n     * Invoked with (item, callback).\n     * @param {Function} [callback] - A callback which is called when all `iteratee`\n     * functions have finished, or an error occurs. Results is an array of the\n     * transformed items from the `coll`. Invoked with (err, results).\n     * @returns {Promise} a promise, if no callback is passed\n     */\n    function mapSeries (coll, iteratee, callback) {\n        return _asyncMap(eachOfSeries$1, coll, iteratee, callback)\n    }\n    var mapSeries$1 = awaitify(mapSeries, 3);\n\n    /**\n     * The same as [`applyEach`]{@link module:ControlFlow.applyEach} but runs only a single async operation at a time.\n     *\n     * @name applyEachSeries\n     * @static\n     * @memberOf module:ControlFlow\n     * @method\n     * @see [async.applyEach]{@link module:ControlFlow.applyEach}\n     * @category Control Flow\n     * @param {Array|Iterable|AsyncIterable|Object} fns - A collection of {@link AsyncFunction}s to all\n     * call with the same arguments\n     * @param {...*} [args] - any number of separate arguments to pass to the\n     * function.\n     * @param {Function} [callback] - the final argument should be the callback,\n     * called when all functions have completed processing.\n     * @returns {AsyncFunction} - A function, that when called, is the result of\n     * appling the `args` to the list of functions.  It takes no args, other than\n     * a callback.\n     */\n    var applyEachSeries = applyEach$1(mapSeries$1);\n\n    const PROMISE_SYMBOL = Symbol('promiseCallback');\n\n    function promiseCallback () {\n        let resolve, reject;\n        function callback (err, ...args) {\n            if (err) return reject(err)\n            resolve(args.length > 1 ? args : args[0]);\n        }\n\n        callback[PROMISE_SYMBOL] = new Promise((res, rej) => {\n            resolve = res,\n            reject = rej;\n        });\n\n        return callback\n    }\n\n    /**\n     * Determines the best order for running the {@link AsyncFunction}s in `tasks`, based on\n     * their requirements. Each function can optionally depend on other functions\n     * being completed first, and each function is run as soon as its requirements\n     * are satisfied.\n     *\n     * If any of the {@link AsyncFunction}s pass an error to their callback, the `auto` sequence\n     * will stop. Further tasks will not execute (so any other functions depending\n     * on it will not run), and the main `callback` is immediately called with the\n     * error.\n     *\n     * {@link AsyncFunction}s also receive an object containing the results of functions which\n     * have completed so far as the first argument, if they have dependencies. If a\n     * task function has no dependencies, it will only be passed a callback.\n     *\n     * @name auto\n     * @static\n     * @memberOf module:ControlFlow\n     * @method\n     * @category Control Flow\n     * @param {Object} tasks - An object. Each of its properties is either a\n     * function or an array of requirements, with the {@link AsyncFunction} itself the last item\n     * in the array. The object's key of a property serves as the name of the task\n     * defined by that property, i.e. can be used when specifying requirements for\n     * other tasks. The function receives one or two arguments:\n     * * a `results` object, containing the results of the previously executed\n     *   functions, only passed if the task has any dependencies,\n     * * a `callback(err, result)` function, which must be called when finished,\n     *   passing an `error` (which can be `null`) and the result of the function's\n     *   execution.\n     * @param {number} [concurrency=Infinity] - An optional `integer` for\n     * determining the maximum number of tasks that can be run in parallel. By\n     * default, as many as possible.\n     * @param {Function} [callback] - An optional callback which is called when all\n     * the tasks have been completed. It receives the `err` argument if any `tasks`\n     * pass an error to their callback. Results are always returned; however, if an\n     * error occurs, no further `tasks` will be performed, and the results object\n     * will only contain partial results. Invoked with (err, results).\n     * @returns {Promise} a promise, if a callback is not passed\n     * @example\n     *\n     * //Using Callbacks\n     * async.auto({\n     *     get_data: function(callback) {\n     *         // async code to get some data\n     *         callback(null, 'data', 'converted to array');\n     *     },\n     *     make_folder: function(callback) {\n     *         // async code to create a directory to store a file in\n     *         // this is run at the same time as getting the data\n     *         callback(null, 'folder');\n     *     },\n     *     write_file: ['get_data', 'make_folder', function(results, callback) {\n     *         // once there is some data and the directory exists,\n     *         // write the data to a file in the directory\n     *         callback(null, 'filename');\n     *     }],\n     *     email_link: ['write_file', function(results, callback) {\n     *         // once the file is written let's email a link to it...\n     *         callback(null, {'file':results.write_file, 'email':'user@example.com'});\n     *     }]\n     * }, function(err, results) {\n     *     if (err) {\n     *         console.log('err = ', err);\n     *     }\n     *     console.log('results = ', results);\n     *     // results = {\n     *     //     get_data: ['data', 'converted to array']\n     *     //     make_folder; 'folder',\n     *     //     write_file: 'filename'\n     *     //     email_link: { file: 'filename', email: 'user@example.com' }\n     *     // }\n     * });\n     *\n     * //Using Promises\n     * async.auto({\n     *     get_data: function(callback) {\n     *         console.log('in get_data');\n     *         // async code to get some data\n     *         callback(null, 'data', 'converted to array');\n     *     },\n     *     make_folder: function(callback) {\n     *         console.log('in make_folder');\n     *         // async code to create a directory to store a file in\n     *         // this is run at the same time as getting the data\n     *         callback(null, 'folder');\n     *     },\n     *     write_file: ['get_data', 'make_folder', function(results, callback) {\n     *         // once there is some data and the directory exists,\n     *         // write the data to a file in the directory\n     *         callback(null, 'filename');\n     *     }],\n     *     email_link: ['write_file', function(results, callback) {\n     *         // once the file is written let's email a link to it...\n     *         callback(null, {'file':results.write_file, 'email':'user@example.com'});\n     *     }]\n     * }).then(results => {\n     *     console.log('results = ', results);\n     *     // results = {\n     *     //     get_data: ['data', 'converted to array']\n     *     //     make_folder; 'folder',\n     *     //     write_file: 'filename'\n     *     //     email_link: { file: 'filename', email: 'user@example.com' }\n     *     // }\n     * }).catch(err => {\n     *     console.log('err = ', err);\n     * });\n     *\n     * //Using async/await\n     * async () => {\n     *     try {\n     *         let results = await async.auto({\n     *             get_data: function(callback) {\n     *                 // async code to get some data\n     *                 callback(null, 'data', 'converted to array');\n     *             },\n     *             make_folder: function(callback) {\n     *                 // async code to create a directory to store a file in\n     *                 // this is run at the same time as getting the data\n     *                 callback(null, 'folder');\n     *             },\n     *             write_file: ['get_data', 'make_folder', function(results, callback) {\n     *                 // once there is some data and the directory exists,\n     *                 // write the data to a file in the directory\n     *                 callback(null, 'filename');\n     *             }],\n     *             email_link: ['write_file', function(results, callback) {\n     *                 // once the file is written let's email a link to it...\n     *                 callback(null, {'file':results.write_file, 'email':'user@example.com'});\n     *             }]\n     *         });\n     *         console.log('results = ', results);\n     *         // results = {\n     *         //     get_data: ['data', 'converted to array']\n     *         //     make_folder; 'folder',\n     *         //     write_file: 'filename'\n     *         //     email_link: { file: 'filename', email: 'user@example.com' }\n     *         // }\n     *     }\n     *     catch (err) {\n     *         console.log(err);\n     *     }\n     * }\n     *\n     */\n    function auto(tasks, concurrency, callback) {\n        if (typeof concurrency !== 'number') {\n            // concurrency is optional, shift the args.\n            callback = concurrency;\n            concurrency = null;\n        }\n        callback = once(callback || promiseCallback());\n        var numTasks = Object.keys(tasks).length;\n        if (!numTasks) {\n            return callback(null);\n        }\n        if (!concurrency) {\n            concurrency = numTasks;\n        }\n\n        var results = {};\n        var runningTasks = 0;\n        var canceled = false;\n        var hasError = false;\n\n        var listeners = Object.create(null);\n\n        var readyTasks = [];\n\n        // for cycle detection:\n        var readyToCheck = []; // tasks that have been identified as reachable\n        // without the possibility of returning to an ancestor task\n        var uncheckedDependencies = {};\n\n        Object.keys(tasks).forEach(key => {\n            var task = tasks[key];\n            if (!Array.isArray(task)) {\n                // no dependencies\n                enqueueTask(key, [task]);\n                readyToCheck.push(key);\n                return;\n            }\n\n            var dependencies = task.slice(0, task.length - 1);\n            var remainingDependencies = dependencies.length;\n            if (remainingDependencies === 0) {\n                enqueueTask(key, task);\n                readyToCheck.push(key);\n                return;\n            }\n            uncheckedDependencies[key] = remainingDependencies;\n\n            dependencies.forEach(dependencyName => {\n                if (!tasks[dependencyName]) {\n                    throw new Error('async.auto task `' + key +\n                        '` has a non-existent dependency `' +\n                        dependencyName + '` in ' +\n                        dependencies.join(', '));\n                }\n                addListener(dependencyName, () => {\n                    remainingDependencies--;\n                    if (remainingDependencies === 0) {\n                        enqueueTask(key, task);\n                    }\n                });\n            });\n        });\n\n        checkForDeadlocks();\n        processQueue();\n\n        function enqueueTask(key, task) {\n            readyTasks.push(() => runTask(key, task));\n        }\n\n        function processQueue() {\n            if (canceled) return\n            if (readyTasks.length === 0 && runningTasks === 0) {\n                return callback(null, results);\n            }\n            while(readyTasks.length && runningTasks < concurrency) {\n                var run = readyTasks.shift();\n                run();\n            }\n\n        }\n\n        function addListener(taskName, fn) {\n            var taskListeners = listeners[taskName];\n            if (!taskListeners) {\n                taskListeners = listeners[taskName] = [];\n            }\n\n            taskListeners.push(fn);\n        }\n\n        function taskComplete(taskName) {\n            var taskListeners = listeners[taskName] || [];\n            taskListeners.forEach(fn => fn());\n            processQueue();\n        }\n\n\n        function runTask(key, task) {\n            if (hasError) return;\n\n            var taskCallback = onlyOnce((err, ...result) => {\n                runningTasks--;\n                if (err === false) {\n                    canceled = true;\n                    return\n                }\n                if (result.length < 2) {\n                    [result] = result;\n                }\n                if (err) {\n                    var safeResults = {};\n                    Object.keys(results).forEach(rkey => {\n                        safeResults[rkey] = results[rkey];\n                    });\n                    safeResults[key] = result;\n                    hasError = true;\n                    listeners = Object.create(null);\n                    if (canceled) return\n                    callback(err, safeResults);\n                } else {\n                    results[key] = result;\n                    taskComplete(key);\n                }\n            });\n\n            runningTasks++;\n            var taskFn = wrapAsync(task[task.length - 1]);\n            if (task.length > 1) {\n                taskFn(results, taskCallback);\n            } else {\n                taskFn(taskCallback);\n            }\n        }\n\n        function checkForDeadlocks() {\n            // Kahn's algorithm\n            // https://en.wikipedia.org/wiki/Topological_sorting#Kahn.27s_algorithm\n            // http://connalle.blogspot.com/2013/10/topological-sortingkahn-algorithm.html\n            var currentTask;\n            var counter = 0;\n            while (readyToCheck.length) {\n                currentTask = readyToCheck.pop();\n                counter++;\n                getDependents(currentTask).forEach(dependent => {\n                    if (--uncheckedDependencies[dependent] === 0) {\n                        readyToCheck.push(dependent);\n                    }\n                });\n            }\n\n            if (counter !== numTasks) {\n                throw new Error(\n                    'async.auto cannot execute tasks due to a recursive dependency'\n                );\n            }\n        }\n\n        function getDependents(taskName) {\n            var result = [];\n            Object.keys(tasks).forEach(key => {\n                const task = tasks[key];\n                if (Array.isArray(task) && task.indexOf(taskName) >= 0) {\n                    result.push(key);\n                }\n            });\n            return result;\n        }\n\n        return callback[PROMISE_SYMBOL]\n    }\n\n    var FN_ARGS = /^(?:async\\s)?(?:function)?\\s*(?:\\w+\\s*)?\\(([^)]+)\\)(?:\\s*{)/;\n    var ARROW_FN_ARGS = /^(?:async\\s)?\\s*(?:\\(\\s*)?((?:[^)=\\s]\\s*)*)(?:\\)\\s*)?=>/;\n    var FN_ARG_SPLIT = /,/;\n    var FN_ARG = /(=.+)?(\\s*)$/;\n\n    function stripComments(string) {\n        let stripped = '';\n        let index = 0;\n        let endBlockComment = string.indexOf('*/');\n        while (index < string.length) {\n            if (string[index] === '/' && string[index+1] === '/') {\n                // inline comment\n                let endIndex = string.indexOf('\\n', index);\n                index = (endIndex === -1) ? string.length : endIndex;\n            } else if ((endBlockComment !== -1) && (string[index] === '/') && (string[index+1] === '*')) {\n                // block comment\n                let endIndex = string.indexOf('*/', index);\n                if (endIndex !== -1) {\n                    index = endIndex + 2;\n                    endBlockComment = string.indexOf('*/', index);\n                } else {\n                    stripped += string[index];\n                    index++;\n                }\n            } else {\n                stripped += string[index];\n                index++;\n            }\n        }\n        return stripped;\n    }\n\n    function parseParams(func) {\n        const src = stripComments(func.toString());\n        let match = src.match(FN_ARGS);\n        if (!match) {\n            match = src.match(ARROW_FN_ARGS);\n        }\n        if (!match) throw new Error('could not parse args in autoInject\\nSource:\\n' + src)\n        let [, args] = match;\n        return args\n            .replace(/\\s/g, '')\n            .split(FN_ARG_SPLIT)\n            .map((arg) => arg.replace(FN_ARG, '').trim());\n    }\n\n    /**\n     * A dependency-injected version of the [async.auto]{@link module:ControlFlow.auto} function. Dependent\n     * tasks are specified as parameters to the function, after the usual callback\n     * parameter, with the parameter names matching the names of the tasks it\n     * depends on. This can provide even more readable task graphs which can be\n     * easier to maintain.\n     *\n     * If a final callback is specified, the task results are similarly injected,\n     * specified as named parameters after the initial error parameter.\n     *\n     * The autoInject function is purely syntactic sugar and its semantics are\n     * otherwise equivalent to [async.auto]{@link module:ControlFlow.auto}.\n     *\n     * @name autoInject\n     * @static\n     * @memberOf module:ControlFlow\n     * @method\n     * @see [async.auto]{@link module:ControlFlow.auto}\n     * @category Control Flow\n     * @param {Object} tasks - An object, each of whose properties is an {@link AsyncFunction} of\n     * the form 'func([dependencies...], callback). The object's key of a property\n     * serves as the name of the task defined by that property, i.e. can be used\n     * when specifying requirements for other tasks.\n     * * The `callback` parameter is a `callback(err, result)` which must be called\n     *   when finished, passing an `error` (which can be `null`) and the result of\n     *   the function's execution. The remaining parameters name other tasks on\n     *   which the task is dependent, and the results from those tasks are the\n     *   arguments of those parameters.\n     * @param {Function} [callback] - An optional callback which is called when all\n     * the tasks have been completed. It receives the `err` argument if any `tasks`\n     * pass an error to their callback, and a `results` object with any completed\n     * task results, similar to `auto`.\n     * @returns {Promise} a promise, if no callback is passed\n     * @example\n     *\n     * //  The example from `auto` can be rewritten as follows:\n     * async.autoInject({\n     *     get_data: function(callback) {\n     *         // async code to get some data\n     *         callback(null, 'data', 'converted to array');\n     *     },\n     *     make_folder: function(callback) {\n     *         // async code to create a directory to store a file in\n     *         // this is run at the same time as getting the data\n     *         callback(null, 'folder');\n     *     },\n     *     write_file: function(get_data, make_folder, callback) {\n     *         // once there is some data and the directory exists,\n     *         // write the data to a file in the directory\n     *         callback(null, 'filename');\n     *     },\n     *     email_link: function(write_file, callback) {\n     *         // once the file is written let's email a link to it...\n     *         // write_file contains the filename returned by write_file.\n     *         callback(null, {'file':write_file, 'email':'user@example.com'});\n     *     }\n     * }, function(err, results) {\n     *     console.log('err = ', err);\n     *     console.log('email_link = ', results.email_link);\n     * });\n     *\n     * // If you are using a JS minifier that mangles parameter names, `autoInject`\n     * // will not work with plain functions, since the parameter names will be\n     * // collapsed to a single letter identifier.  To work around this, you can\n     * // explicitly specify the names of the parameters your task function needs\n     * // in an array, similar to Angular.js dependency injection.\n     *\n     * // This still has an advantage over plain `auto`, since the results a task\n     * // depends on are still spread into arguments.\n     * async.autoInject({\n     *     //...\n     *     write_file: ['get_data', 'make_folder', function(get_data, make_folder, callback) {\n     *         callback(null, 'filename');\n     *     }],\n     *     email_link: ['write_file', function(write_file, callback) {\n     *         callback(null, {'file':write_file, 'email':'user@example.com'});\n     *     }]\n     *     //...\n     * }, function(err, results) {\n     *     console.log('err = ', err);\n     *     console.log('email_link = ', results.email_link);\n     * });\n     */\n    function autoInject(tasks, callback) {\n        var newTasks = {};\n\n        Object.keys(tasks).forEach(key => {\n            var taskFn = tasks[key];\n            var params;\n            var fnIsAsync = isAsync(taskFn);\n            var hasNoDeps =\n                (!fnIsAsync && taskFn.length === 1) ||\n                (fnIsAsync && taskFn.length === 0);\n\n            if (Array.isArray(taskFn)) {\n                params = [...taskFn];\n                taskFn = params.pop();\n\n                newTasks[key] = params.concat(params.length > 0 ? newTask : taskFn);\n            } else if (hasNoDeps) {\n                // no dependencies, use the function as-is\n                newTasks[key] = taskFn;\n            } else {\n                params = parseParams(taskFn);\n                if ((taskFn.length === 0 && !fnIsAsync) && params.length === 0) {\n                    throw new Error(\"autoInject task functions require explicit parameters.\");\n                }\n\n                // remove callback param\n                if (!fnIsAsync) params.pop();\n\n                newTasks[key] = params.concat(newTask);\n            }\n\n            function newTask(results, taskCb) {\n                var newArgs = params.map(name => results[name]);\n                newArgs.push(taskCb);\n                wrapAsync(taskFn)(...newArgs);\n            }\n        });\n\n        return auto(newTasks, callback);\n    }\n\n    // Simple doubly linked list (https://en.wikipedia.org/wiki/Doubly_linked_list) implementation\n    // used for queues. This implementation assumes that the node provided by the user can be modified\n    // to adjust the next and last properties. We implement only the minimal functionality\n    // for queue support.\n    class DLL {\n        constructor() {\n            this.head = this.tail = null;\n            this.length = 0;\n        }\n\n        removeLink(node) {\n            if (node.prev) node.prev.next = node.next;\n            else this.head = node.next;\n            if (node.next) node.next.prev = node.prev;\n            else this.tail = node.prev;\n\n            node.prev = node.next = null;\n            this.length -= 1;\n            return node;\n        }\n\n        empty () {\n            while(this.head) this.shift();\n            return this;\n        }\n\n        insertAfter(node, newNode) {\n            newNode.prev = node;\n            newNode.next = node.next;\n            if (node.next) node.next.prev = newNode;\n            else this.tail = newNode;\n            node.next = newNode;\n            this.length += 1;\n        }\n\n        insertBefore(node, newNode) {\n            newNode.prev = node.prev;\n            newNode.next = node;\n            if (node.prev) node.prev.next = newNode;\n            else this.head = newNode;\n            node.prev = newNode;\n            this.length += 1;\n        }\n\n        unshift(node) {\n            if (this.head) this.insertBefore(this.head, node);\n            else setInitial(this, node);\n        }\n\n        push(node) {\n            if (this.tail) this.insertAfter(this.tail, node);\n            else setInitial(this, node);\n        }\n\n        shift() {\n            return this.head && this.removeLink(this.head);\n        }\n\n        pop() {\n            return this.tail && this.removeLink(this.tail);\n        }\n\n        toArray() {\n            return [...this]\n        }\n\n        *[Symbol.iterator] () {\n            var cur = this.head;\n            while (cur) {\n                yield cur.data;\n                cur = cur.next;\n            }\n        }\n\n        remove (testFn) {\n            var curr = this.head;\n            while(curr) {\n                var {next} = curr;\n                if (testFn(curr)) {\n                    this.removeLink(curr);\n                }\n                curr = next;\n            }\n            return this;\n        }\n    }\n\n    function setInitial(dll, node) {\n        dll.length = 1;\n        dll.head = dll.tail = node;\n    }\n\n    function queue$1(worker, concurrency, payload) {\n        if (concurrency == null) {\n            concurrency = 1;\n        }\n        else if(concurrency === 0) {\n            throw new RangeError('Concurrency must not be zero');\n        }\n\n        var _worker = wrapAsync(worker);\n        var numRunning = 0;\n        var workersList = [];\n        const events = {\n            error: [],\n            drain: [],\n            saturated: [],\n            unsaturated: [],\n            empty: []\n        };\n\n        function on (event, handler) {\n            events[event].push(handler);\n        }\n\n        function once (event, handler) {\n            const handleAndRemove = (...args) => {\n                off(event, handleAndRemove);\n                handler(...args);\n            };\n            events[event].push(handleAndRemove);\n        }\n\n        function off (event, handler) {\n            if (!event) return Object.keys(events).forEach(ev => events[ev] = [])\n            if (!handler) return events[event] = []\n            events[event] = events[event].filter(ev => ev !== handler);\n        }\n\n        function trigger (event, ...args) {\n            events[event].forEach(handler => handler(...args));\n        }\n\n        var processingScheduled = false;\n        function _insert(data, insertAtFront, rejectOnError, callback) {\n            if (callback != null && typeof callback !== 'function') {\n                throw new Error('task callback must be a function');\n            }\n            q.started = true;\n\n            var res, rej;\n            function promiseCallback (err, ...args) {\n                // we don't care about the error, let the global error handler\n                // deal with it\n                if (err) return rejectOnError ? rej(err) : res()\n                if (args.length <= 1) return res(args[0])\n                res(args);\n            }\n\n            var item = q._createTaskItem(\n                data,\n                rejectOnError ? promiseCallback :\n                    (callback || promiseCallback)\n            );\n\n            if (insertAtFront) {\n                q._tasks.unshift(item);\n            } else {\n                q._tasks.push(item);\n            }\n\n            if (!processingScheduled) {\n                processingScheduled = true;\n                setImmediate$1(() => {\n                    processingScheduled = false;\n                    q.process();\n                });\n            }\n\n            if (rejectOnError || !callback) {\n                return new Promise((resolve, reject) => {\n                    res = resolve;\n                    rej = reject;\n                })\n            }\n        }\n\n        function _createCB(tasks) {\n            return function (err, ...args) {\n                numRunning -= 1;\n\n                for (var i = 0, l = tasks.length; i < l; i++) {\n                    var task = tasks[i];\n\n                    var index = workersList.indexOf(task);\n                    if (index === 0) {\n                        workersList.shift();\n                    } else if (index > 0) {\n                        workersList.splice(index, 1);\n                    }\n\n                    task.callback(err, ...args);\n\n                    if (err != null) {\n                        trigger('error', err, task.data);\n                    }\n                }\n\n                if (numRunning <= (q.concurrency - q.buffer) ) {\n                    trigger('unsaturated');\n                }\n\n                if (q.idle()) {\n                    trigger('drain');\n                }\n                q.process();\n            };\n        }\n\n        function _maybeDrain(data) {\n            if (data.length === 0 && q.idle()) {\n                // call drain immediately if there are no tasks\n                setImmediate$1(() => trigger('drain'));\n                return true\n            }\n            return false\n        }\n\n        const eventMethod = (name) => (handler) => {\n            if (!handler) {\n                return new Promise((resolve, reject) => {\n                    once(name, (err, data) => {\n                        if (err) return reject(err)\n                        resolve(data);\n                    });\n                })\n            }\n            off(name);\n            on(name, handler);\n\n        };\n\n        var isProcessing = false;\n        var q = {\n            _tasks: new DLL(),\n            _createTaskItem (data, callback) {\n                return {\n                    data,\n                    callback\n                };\n            },\n            *[Symbol.iterator] () {\n                yield* q._tasks[Symbol.iterator]();\n            },\n            concurrency,\n            payload,\n            buffer: concurrency / 4,\n            started: false,\n            paused: false,\n            push (data, callback) {\n                if (Array.isArray(data)) {\n                    if (_maybeDrain(data)) return\n                    return data.map(datum => _insert(datum, false, false, callback))\n                }\n                return _insert(data, false, false, callback);\n            },\n            pushAsync (data, callback) {\n                if (Array.isArray(data)) {\n                    if (_maybeDrain(data)) return\n                    return data.map(datum => _insert(datum, false, true, callback))\n                }\n                return _insert(data, false, true, callback);\n            },\n            kill () {\n                off();\n                q._tasks.empty();\n            },\n            unshift (data, callback) {\n                if (Array.isArray(data)) {\n                    if (_maybeDrain(data)) return\n                    return data.map(datum => _insert(datum, true, false, callback))\n                }\n                return _insert(data, true, false, callback);\n            },\n            unshiftAsync (data, callback) {\n                if (Array.isArray(data)) {\n                    if (_maybeDrain(data)) return\n                    return data.map(datum => _insert(datum, true, true, callback))\n                }\n                return _insert(data, true, true, callback);\n            },\n            remove (testFn) {\n                q._tasks.remove(testFn);\n            },\n            process () {\n                // Avoid trying to start too many processing operations. This can occur\n                // when callbacks resolve synchronously (#1267).\n                if (isProcessing) {\n                    return;\n                }\n                isProcessing = true;\n                while(!q.paused && numRunning < q.concurrency && q._tasks.length){\n                    var tasks = [], data = [];\n                    var l = q._tasks.length;\n                    if (q.payload) l = Math.min(l, q.payload);\n                    for (var i = 0; i < l; i++) {\n                        var node = q._tasks.shift();\n                        tasks.push(node);\n                        workersList.push(node);\n                        data.push(node.data);\n                    }\n\n                    numRunning += 1;\n\n                    if (q._tasks.length === 0) {\n                        trigger('empty');\n                    }\n\n                    if (numRunning === q.concurrency) {\n                        trigger('saturated');\n                    }\n\n                    var cb = onlyOnce(_createCB(tasks));\n                    _worker(data, cb);\n                }\n                isProcessing = false;\n            },\n            length () {\n                return q._tasks.length;\n            },\n            running () {\n                return numRunning;\n            },\n            workersList () {\n                return workersList;\n            },\n            idle() {\n                return q._tasks.length + numRunning === 0;\n            },\n            pause () {\n                q.paused = true;\n            },\n            resume () {\n                if (q.paused === false) { return; }\n                q.paused = false;\n                setImmediate$1(q.process);\n            }\n        };\n        // define these as fixed properties, so people get useful errors when updating\n        Object.defineProperties(q, {\n            saturated: {\n                writable: false,\n                value: eventMethod('saturated')\n            },\n            unsaturated: {\n                writable: false,\n                value: eventMethod('unsaturated')\n            },\n            empty: {\n                writable: false,\n                value: eventMethod('empty')\n            },\n            drain: {\n                writable: false,\n                value: eventMethod('drain')\n            },\n            error: {\n                writable: false,\n                value: eventMethod('error')\n            },\n        });\n        return q;\n    }\n\n    /**\n     * Creates a `cargo` object with the specified payload. Tasks added to the\n     * cargo will be processed altogether (up to the `payload` limit). If the\n     * `worker` is in progress, the task is queued until it becomes available. Once\n     * the `worker` has completed some tasks, each callback of those tasks is\n     * called. Check out [these](https://camo.githubusercontent.com/6bbd36f4cf5b35a0f11a96dcd2e97711ffc2fb37/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130382f62626330636662302d356632392d313165322d393734662d3333393763363464633835382e676966) [animations](https://camo.githubusercontent.com/f4810e00e1c5f5f8addbe3e9f49064fd5d102699/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130312f38346339323036362d356632392d313165322d383134662d3964336430323431336266642e676966)\n     * for how `cargo` and `queue` work.\n     *\n     * While [`queue`]{@link module:ControlFlow.queue} passes only one task to one of a group of workers\n     * at a time, cargo passes an array of tasks to a single worker, repeating\n     * when the worker is finished.\n     *\n     * @name cargo\n     * @static\n     * @memberOf module:ControlFlow\n     * @method\n     * @see [async.queue]{@link module:ControlFlow.queue}\n     * @category Control Flow\n     * @param {AsyncFunction} worker - An asynchronous function for processing an array\n     * of queued tasks. Invoked with `(tasks, callback)`.\n     * @param {number} [payload=Infinity] - An optional `integer` for determining\n     * how many tasks should be processed per round; if omitted, the default is\n     * unlimited.\n     * @returns {module:ControlFlow.QueueObject} A cargo object to manage the tasks. Callbacks can\n     * attached as certain properties to listen for specific events during the\n     * lifecycle of the cargo and inner queue.\n     * @example\n     *\n     * // create a cargo object with payload 2\n     * var cargo = async.cargo(function(tasks, callback) {\n     *     for (var i=0; i<tasks.length; i++) {\n     *         console.log('hello ' + tasks[i].name);\n     *     }\n     *     callback();\n     * }, 2);\n     *\n     * // add some items\n     * cargo.push({name: 'foo'}, function(err) {\n     *     console.log('finished processing foo');\n     * });\n     * cargo.push({name: 'bar'}, function(err) {\n     *     console.log('finished processing bar');\n     * });\n     * await cargo.push({name: 'baz'});\n     * console.log('finished processing baz');\n     */\n    function cargo$1(worker, payload) {\n        return queue$1(worker, 1, payload);\n    }\n\n    /**\n     * Creates a `cargoQueue` object with the specified payload. Tasks added to the\n     * cargoQueue will be processed together (up to the `payload` limit) in `concurrency` parallel workers.\n     * If the all `workers` are in progress, the task is queued until one becomes available. Once\n     * a `worker` has completed some tasks, each callback of those tasks is\n     * called. Check out [these](https://camo.githubusercontent.com/6bbd36f4cf5b35a0f11a96dcd2e97711ffc2fb37/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130382f62626330636662302d356632392d313165322d393734662d3333393763363464633835382e676966) [animations](https://camo.githubusercontent.com/f4810e00e1c5f5f8addbe3e9f49064fd5d102699/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313637363837312f36383130312f38346339323036362d356632392d313165322d383134662d3964336430323431336266642e676966)\n     * for how `cargo` and `queue` work.\n     *\n     * While [`queue`]{@link module:ControlFlow.queue} passes only one task to one of a group of workers\n     * at a time, and [`cargo`]{@link module:ControlFlow.cargo} passes an array of tasks to a single worker,\n     * the cargoQueue passes an array of tasks to multiple parallel workers.\n     *\n     * @name cargoQueue\n     * @static\n     * @memberOf module:ControlFlow\n     * @method\n     * @see [async.queue]{@link module:ControlFlow.queue}\n     * @see [async.cargo]{@link module:ControlFLow.cargo}\n     * @category Control Flow\n     * @param {AsyncFunction} worker - An asynchronous function for processing an array\n     * of queued tasks. Invoked with `(tasks, callback)`.\n     * @param {number} [concurrency=1] - An `integer` for determining how many\n     * `worker` functions should be run in parallel.  If omitted, the concurrency\n     * defaults to `1`.  If the concurrency is `0`, an error is thrown.\n     * @param {number} [payload=Infinity] - An optional `integer` for determining\n     * how many tasks should be processed per round; if omitted, the default is\n     * unlimited.\n     * @returns {module:ControlFlow.QueueObject} A cargoQueue object to manage the tasks. Callbacks can\n     * attached as certain properties to listen for specific events during the\n     * lifecycle of the cargoQueue and inner queue.\n     * @example\n     *\n     * // create a cargoQueue object with payload 2 and concurrency 2\n     * var cargoQueue = async.cargoQueue(function(tasks, callback) {\n     *     for (var i=0; i<tasks.length; i++) {\n     *         console.log('hello ' + tasks[i].name);\n     *     }\n     *     callback();\n     * }, 2, 2);\n     *\n     * // add some items\n     * cargoQueue.push({name: 'foo'}, function(err) {\n     *     console.log('finished processing foo');\n     * });\n     * cargoQueue.push({name: 'bar'}, function(err) {\n     *     console.log('finished processing bar');\n     * });\n     * cargoQueue.push({name: 'baz'}, function(err) {\n     *     console.log('finished processing baz');\n     * });\n     * cargoQueue.push({name: 'boo'}, function(err) {\n     *     console.log('finished processing boo');\n     * });\n     */\n    function cargo(worker, concurrency, payload) {\n        return queue$1(worker, concurrency, payload);\n    }\n\n    /**\n     * Reduces `coll` into a single value using an async `iteratee` to return each\n     * successive step. `memo` is the initial state of the reduction. This function\n     * only operates in series.\n     *\n     * For performance reasons, it may make sense to split a call to this function\n     * into a parallel map, and then use the normal `Array.prototype.reduce` on the\n     * results. This function is for situations where each step in the reduction\n     * needs to be async; if you can get the data before reducing it, then it's\n     * probably a good idea to do so.\n     *\n     * @name reduce\n     * @static\n     * @memberOf module:Collections\n     * @method\n     * @alias inject\n     * @alias foldl\n     * @category Collection\n     * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n     * @param {*} memo - The initial state of the reduction.\n     * @param {AsyncFunction} iteratee - A function applied to each item in the\n     * array to produce the next step in the reduction.\n     * The `iteratee` should complete with the next state of the reduction.\n     * If the iteratee completes with an error, the reduction is stopped and the\n     * main `callback` is immediately called with the error.\n     * Invoked with (memo, item, callback).\n     * @param {Function} [callback] - A callback which is called after all the\n     * `iteratee` functions have finished. Result is the reduced value. Invoked with\n     * (err, result).\n     * @returns {Promise} a promise, if no callback is passed\n     * @example\n     *\n     * // file1.txt is a file that is 1000 bytes in size\n     * // file2.txt is a file that is 2000 bytes in size\n     * // file3.txt is a file that is 3000 bytes in size\n     * // file4.txt does not exist\n     *\n     * const fileList = ['file1.txt','file2.txt','file3.txt'];\n     * const withMissingFileList = ['file1.txt','file2.txt','file3.txt', 'file4.txt'];\n     *\n     * // asynchronous function that computes the file size in bytes\n     * // file size is added to the memoized value, then returned\n     * function getFileSizeInBytes(memo, file, callback) {\n     *     fs.stat(file, function(err, stat) {\n     *         if (err) {\n     *             return callback(err);\n     *         }\n     *         callback(null, memo + stat.size);\n     *     });\n     * }\n     *\n     * // Using callbacks\n     * async.reduce(fileList, 0, getFileSizeInBytes, function(err, result) {\n     *     if (err) {\n     *         console.log(err);\n     *     } else {\n     *         console.log(result);\n     *         // 6000\n     *         // which is the sum of the file sizes of the three files\n     *     }\n     * });\n     *\n     * // Error Handling\n     * async.reduce(withMissingFileList, 0, getFileSizeInBytes, function(err, result) {\n     *     if (err) {\n     *         console.log(err);\n     *         // [ Error: ENOENT: no such file or directory ]\n     *     } else {\n     *         console.log(result);\n     *     }\n     * });\n     *\n     * // Using Promises\n     * async.reduce(fileList, 0, getFileSizeInBytes)\n     * .then( result => {\n     *     console.log(result);\n     *     // 6000\n     *     // which is the sum of the file sizes of the three files\n     * }).catch( err => {\n     *     console.log(err);\n     * });\n     *\n     * // Error Handling\n     * async.reduce(withMissingFileList, 0, getFileSizeInBytes)\n     * .then( result => {\n     *     console.log(result);\n     * }).catch( err => {\n     *     console.log(err);\n     *     // [ Error: ENOENT: no such file or directory ]\n     * });\n     *\n     * // Using async/await\n     * async () => {\n     *     try {\n     *         let result = await async.reduce(fileList, 0, getFileSizeInBytes);\n     *         console.log(result);\n     *         // 6000\n     *         // which is the sum of the file sizes of the three files\n     *     }\n     *     catch (err) {\n     *         console.log(err);\n     *     }\n     * }\n     *\n     * // Error Handling\n     * async () => {\n     *     try {\n     *         let result = await async.reduce(withMissingFileList, 0, getFileSizeInBytes);\n     *         console.log(result);\n     *     }\n     *     catch (err) {\n     *         console.log(err);\n     *         // [ Error: ENOENT: no such file or directory ]\n     *     }\n     * }\n     *\n     */\n    function reduce(coll, memo, iteratee, callback) {\n        callback = once(callback);\n        var _iteratee = wrapAsync(iteratee);\n        return eachOfSeries$1(coll, (x, i, iterCb) => {\n            _iteratee(memo, x, (err, v) => {\n                memo = v;\n                iterCb(err);\n            });\n        }, err => callback(err, memo));\n    }\n    var reduce$1 = awaitify(reduce, 4);\n\n    /**\n     * Version of the compose function that is more natural to read. Each function\n     * consumes the return value of the previous function. It is the equivalent of\n     * [compose]{@link module:ControlFlow.compose} with the arguments reversed.\n     *\n     * Each function is executed with the `this` binding of the composed function.\n     *\n     * @name seq\n     * @static\n     * @memberOf module:ControlFlow\n     * @method\n     * @see [async.compose]{@link module:ControlFlow.compose}\n     * @category Control Flow\n     * @param {...AsyncFunction} functions - the asynchronous functions to compose\n     * @returns {Function} a function that composes the `functions` in order\n     * @example\n     *\n     * // Requires lodash (or underscore), express3 and dresende's orm2.\n     * // Part of an app, that fetches cats of the logged user.\n     * // This example uses `seq` function to avoid overnesting and error\n     * // handling clutter.\n     * app.get('/cats', function(request, response) {\n     *     var User = request.models.User;\n     *     async.seq(\n     *         User.get.bind(User),  // 'User.get' has signature (id, callback(err, data))\n     *         function(user, fn) {\n     *             user.getCats(fn);      // 'getCats' has signature (callback(err, data))\n     *         }\n     *     )(req.session.user_id, function (err, cats) {\n     *         if (err) {\n     *             console.error(err);\n     *             response.json({ status: 'error', message: err.message });\n     *         } else {\n     *             response.json({ status: 'ok', message: 'Cats found', data: cats });\n     *         }\n     *     });\n     * });\n     */\n    function seq(...functions) {\n        var _functions = functions.map(wrapAsync);\n        return function (...args) {\n            var that = this;\n\n            var cb = args[args.length - 1];\n            if (typeof cb == 'function') {\n                args.pop();\n            } else {\n                cb = promiseCallback();\n            }\n\n            reduce$1(_functions, args, (newargs, fn, iterCb) => {\n                fn.apply(that, newargs.concat((err, ...nextargs) => {\n                    iterCb(err, nextargs);\n                }));\n            },\n            (err, results) => cb(err, ...results));\n\n            return cb[PROMISE_SYMBOL]\n        };\n    }\n\n    /**\n     * Creates a function which is a composition of the passed asynchronous\n     * functions. Each function consumes the return value of the function that\n     * follows. Composing functions `f()`, `g()`, and `h()` would produce the result\n     * of `f(g(h()))`, only this version uses callbacks to obtain the return values.\n     *\n     * If the last argument to the composed function is not a function, a promise\n     * is returned when you call it.\n     *\n     * Each function is executed with the `this` binding of the composed function.\n     *\n     * @name compose\n     * @static\n     * @memberOf module:ControlFlow\n     * @method\n     * @category Control Flow\n     * @param {...AsyncFunction} functions - the asynchronous functions to compose\n     * @returns {Function} an asynchronous function that is the composed\n     * asynchronous `functions`\n     * @example\n     *\n     * function add1(n, callback) {\n     *     setTimeout(function () {\n     *         callback(null, n + 1);\n     *     }, 10);\n     * }\n     *\n     * function mul3(n, callback) {\n     *     setTimeout(function () {\n     *         callback(null, n * 3);\n     *     }, 10);\n     * }\n     *\n     * var add1mul3 = async.compose(mul3, add1);\n     * add1mul3(4, function (err, result) {\n     *     // result now equals 15\n     * });\n     */\n    function compose(...args) {\n        return seq(...args.reverse());\n    }\n\n    /**\n     * The same as [`map`]{@link module:Collections.map} but runs a maximum of `limit` async operations at a time.\n     *\n     * @name mapLimit\n     * @static\n     * @memberOf module:Collections\n     * @method\n     * @see [async.map]{@link module:Collections.map}\n     * @category Collection\n     * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n     * @param {number} limit - The maximum number of async operations at a time.\n     * @param {AsyncFunction} iteratee - An async function to apply to each item in\n     * `coll`.\n     * The iteratee should complete with the transformed item.\n     * Invoked with (item, callback).\n     * @param {Function} [callback] - A callback which is called when all `iteratee`\n     * functions have finished, or an error occurs. Results is an array of the\n     * transformed items from the `coll`. Invoked with (err, results).\n     * @returns {Promise} a promise, if no callback is passed\n     */\n    function mapLimit (coll, limit, iteratee, callback) {\n        return _asyncMap(eachOfLimit$2(limit), coll, iteratee, callback)\n    }\n    var mapLimit$1 = awaitify(mapLimit, 4);\n\n    /**\n     * The same as [`concat`]{@link module:Collections.concat} but runs a maximum of `limit` async operations at a time.\n     *\n     * @name concatLimit\n     * @static\n     * @memberOf module:Collections\n     * @method\n     * @see [async.concat]{@link module:Collections.concat}\n     * @category Collection\n     * @alias flatMapLimit\n     * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n     * @param {number} limit - The maximum number of async operations at a time.\n     * @param {AsyncFunction} iteratee - A function to apply to each item in `coll`,\n     * which should use an array as its result. Invoked with (item, callback).\n     * @param {Function} [callback] - A callback which is called after all the\n     * `iteratee` functions have finished, or an error occurs. Results is an array\n     * containing the concatenated results of the `iteratee` function. Invoked with\n     * (err, results).\n     * @returns A Promise, if no callback is passed\n     */\n    function concatLimit(coll, limit, iteratee, callback) {\n        var _iteratee = wrapAsync(iteratee);\n        return mapLimit$1(coll, limit, (val, iterCb) => {\n            _iteratee(val, (err, ...args) => {\n                if (err) return iterCb(err);\n                return iterCb(err, args);\n            });\n        }, (err, mapResults) => {\n            var result = [];\n            for (var i = 0; i < mapResults.length; i++) {\n                if (mapResults[i]) {\n                    result = result.concat(...mapResults[i]);\n                }\n            }\n\n            return callback(err, result);\n        });\n    }\n    var concatLimit$1 = awaitify(concatLimit, 4);\n\n    /**\n     * Applies `iteratee` to each item in `coll`, concatenating the results. Returns\n     * the concatenated list. The `iteratee`s are called in parallel, and the\n     * results are concatenated as they return. The results array will be returned in\n     * the original order of `coll` passed to the `iteratee` function.\n     *\n     * @name concat\n     * @static\n     * @memberOf module:Collections\n     * @method\n     * @category Collection\n     * @alias flatMap\n     * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n     * @param {AsyncFunction} iteratee - A function to apply to each item in `coll`,\n     * which should use an array as its result. Invoked with (item, callback).\n     * @param {Function} [callback] - A callback which is called after all the\n     * `iteratee` functions have finished, or an error occurs. Results is an array\n     * containing the concatenated results of the `iteratee` function. Invoked with\n     * (err, results).\n     * @returns A Promise, if no callback is passed\n     * @example\n     *\n     * // dir1 is a directory that contains file1.txt, file2.txt\n     * // dir2 is a directory that contains file3.txt, file4.txt\n     * // dir3 is a directory that contains file5.txt\n     * // dir4 does not exist\n     *\n     * let directoryList = ['dir1','dir2','dir3'];\n     * let withMissingDirectoryList = ['dir1','dir2','dir3', 'dir4'];\n     *\n     * // Using callbacks\n     * async.concat(directoryList, fs.readdir, function(err, results) {\n     *    if (err) {\n     *        console.log(err);\n     *    } else {\n     *        console.log(results);\n     *        // [ 'file1.txt', 'file2.txt', 'file3.txt', 'file4.txt', file5.txt ]\n     *    }\n     * });\n     *\n     * // Error Handling\n     * async.concat(withMissingDirectoryList, fs.readdir, function(err, results) {\n     *    if (err) {\n     *        console.log(err);\n     *        // [ Error: ENOENT: no such file or directory ]\n     *        // since dir4 does not exist\n     *    } else {\n     *        console.log(results);\n     *    }\n     * });\n     *\n     * // Using Promises\n     * async.concat(directoryList, fs.readdir)\n     * .then(results => {\n     *     console.log(results);\n     *     // [ 'file1.txt', 'file2.txt', 'file3.txt', 'file4.txt', file5.txt ]\n     * }).catch(err => {\n     *      console.log(err);\n     * });\n     *\n     * // Error Handling\n     * async.concat(withMissingDirectoryList, fs.readdir)\n     * .then(results => {\n     *     console.log(results);\n     * }).catch(err => {\n     *     console.log(err);\n     *     // [ Error: ENOENT: no such file or directory ]\n     *     // since dir4 does not exist\n     * });\n     *\n     * // Using async/await\n     * async () => {\n     *     try {\n     *         let results = await async.concat(directoryList, fs.readdir);\n     *         console.log(results);\n     *         // [ 'file1.txt', 'file2.txt', 'file3.txt', 'file4.txt', file5.txt ]\n     *     } catch (err) {\n     *         console.log(err);\n     *     }\n     * }\n     *\n     * // Error Handling\n     * async () => {\n     *     try {\n     *         let results = await async.concat(withMissingDirectoryList, fs.readdir);\n     *         console.log(results);\n     *     } catch (err) {\n     *         console.log(err);\n     *         // [ Error: ENOENT: no such file or directory ]\n     *         // since dir4 does not exist\n     *     }\n     * }\n     *\n     */\n    function concat(coll, iteratee, callback) {\n        return concatLimit$1(coll, Infinity, iteratee, callback)\n    }\n    var concat$1 = awaitify(concat, 3);\n\n    /**\n     * The same as [`concat`]{@link module:Collections.concat} but runs only a single async operation at a time.\n     *\n     * @name concatSeries\n     * @static\n     * @memberOf module:Collections\n     * @method\n     * @see [async.concat]{@link module:Collections.concat}\n     * @category Collection\n     * @alias flatMapSeries\n     * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n     * @param {AsyncFunction} iteratee - A function to apply to each item in `coll`.\n     * The iteratee should complete with an array an array of results.\n     * Invoked with (item, callback).\n     * @param {Function} [callback] - A callback which is called after all the\n     * `iteratee` functions have finished, or an error occurs. Results is an array\n     * containing the concatenated results of the `iteratee` function. Invoked with\n     * (err, results).\n     * @returns A Promise, if no callback is passed\n     */\n    function concatSeries(coll, iteratee, callback) {\n        return concatLimit$1(coll, 1, iteratee, callback)\n    }\n    var concatSeries$1 = awaitify(concatSeries, 3);\n\n    /**\n     * Returns a function that when called, calls-back with the values provided.\n     * Useful as the first function in a [`waterfall`]{@link module:ControlFlow.waterfall}, or for plugging values in to\n     * [`auto`]{@link module:ControlFlow.auto}.\n     *\n     * @name constant\n     * @static\n     * @memberOf module:Utils\n     * @method\n     * @category Util\n     * @param {...*} arguments... - Any number of arguments to automatically invoke\n     * callback with.\n     * @returns {AsyncFunction} Returns a function that when invoked, automatically\n     * invokes the callback with the previous given arguments.\n     * @example\n     *\n     * async.waterfall([\n     *     async.constant(42),\n     *     function (value, next) {\n     *         // value === 42\n     *     },\n     *     //...\n     * ], callback);\n     *\n     * async.waterfall([\n     *     async.constant(filename, \"utf8\"),\n     *     fs.readFile,\n     *     function (fileData, next) {\n     *         //...\n     *     }\n     *     //...\n     * ], callback);\n     *\n     * async.auto({\n     *     hostname: async.constant(\"https://server.net/\"),\n     *     port: findFreePort,\n     *     launchServer: [\"hostname\", \"port\", function (options, cb) {\n     *         startServer(options, cb);\n     *     }],\n     *     //...\n     * }, callback);\n     */\n    function constant$1(...args) {\n        return function (...ignoredArgs/*, callback*/) {\n            var callback = ignoredArgs.pop();\n            return callback(null, ...args);\n        };\n    }\n\n    function _createTester(check, getResult) {\n        return (eachfn, arr, _iteratee, cb) => {\n            var testPassed = false;\n            var testResult;\n            const iteratee = wrapAsync(_iteratee);\n            eachfn(arr, (value, _, callback) => {\n                iteratee(value, (err, result) => {\n                    if (err || err === false) return callback(err);\n\n                    if (check(result) && !testResult) {\n                        testPassed = true;\n                        testResult = getResult(true, value);\n                        return callback(null, breakLoop);\n                    }\n                    callback();\n                });\n            }, err => {\n                if (err) return cb(err);\n                cb(null, testPassed ? testResult : getResult(false));\n            });\n        };\n    }\n\n    /**\n     * Returns the first value in `coll` that passes an async truth test. The\n     * `iteratee` is applied in parallel, meaning the first iteratee to return\n     * `true` will fire the detect `callback` with that result. That means the\n     * result might not be the first item in the original `coll` (in terms of order)\n     * that passes the test.\n\n     * If order within the original `coll` is important, then look at\n     * [`detectSeries`]{@link module:Collections.detectSeries}.\n     *\n     * @name detect\n     * @static\n     * @memberOf module:Collections\n     * @method\n     * @alias find\n     * @category Collections\n     * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n     * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`.\n     * The iteratee must complete with a boolean value as its result.\n     * Invoked with (item, callback).\n     * @param {Function} [callback] - A callback which is called as soon as any\n     * iteratee returns `true`, or after all the `iteratee` functions have finished.\n     * Result will be the first item in the array that passes the truth test\n     * (iteratee) or the value `undefined` if none passed. Invoked with\n     * (err, result).\n     * @returns {Promise} a promise, if a callback is omitted\n     * @example\n     *\n     * // dir1 is a directory that contains file1.txt, file2.txt\n     * // dir2 is a directory that contains file3.txt, file4.txt\n     * // dir3 is a directory that contains file5.txt\n     *\n     * // asynchronous function that checks if a file exists\n     * function fileExists(file, callback) {\n     *    fs.access(file, fs.constants.F_OK, (err) => {\n     *        callback(null, !err);\n     *    });\n     * }\n     *\n     * async.detect(['file3.txt','file2.txt','dir1/file1.txt'], fileExists,\n     *    function(err, result) {\n     *        console.log(result);\n     *        // dir1/file1.txt\n     *        // result now equals the first file in the list that exists\n     *    }\n     *);\n     *\n     * // Using Promises\n     * async.detect(['file3.txt','file2.txt','dir1/file1.txt'], fileExists)\n     * .then(result => {\n     *     console.log(result);\n     *     // dir1/file1.txt\n     *     // result now equals the first file in the list that exists\n     * }).catch(err => {\n     *     console.log(err);\n     * });\n     *\n     * // Using async/await\n     * async () => {\n     *     try {\n     *         let result = await async.detect(['file3.txt','file2.txt','dir1/file1.txt'], fileExists);\n     *         console.log(result);\n     *         // dir1/file1.txt\n     *         // result now equals the file in the list that exists\n     *     }\n     *     catch (err) {\n     *         console.log(err);\n     *     }\n     * }\n     *\n     */\n    function detect(coll, iteratee, callback) {\n        return _createTester(bool => bool, (res, item) => item)(eachOf$1, coll, iteratee, callback)\n    }\n    var detect$1 = awaitify(detect, 3);\n\n    /**\n     * The same as [`detect`]{@link module:Collections.detect} but runs a maximum of `limit` async operations at a\n     * time.\n     *\n     * @name detectLimit\n     * @static\n     * @memberOf module:Collections\n     * @method\n     * @see [async.detect]{@link module:Collections.detect}\n     * @alias findLimit\n     * @category Collections\n     * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n     * @param {number} limit - The maximum number of async operations at a time.\n     * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`.\n     * The iteratee must complete with a boolean value as its result.\n     * Invoked with (item, callback).\n     * @param {Function} [callback] - A callback which is called as soon as any\n     * iteratee returns `true`, or after all the `iteratee` functions have finished.\n     * Result will be the first item in the array that passes the truth test\n     * (iteratee) or the value `undefined` if none passed. Invoked with\n     * (err, result).\n     * @returns {Promise} a promise, if a callback is omitted\n     */\n    function detectLimit(coll, limit, iteratee, callback) {\n        return _createTester(bool => bool, (res, item) => item)(eachOfLimit$2(limit), coll, iteratee, callback)\n    }\n    var detectLimit$1 = awaitify(detectLimit, 4);\n\n    /**\n     * The same as [`detect`]{@link module:Collections.detect} but runs only a single async operation at a time.\n     *\n     * @name detectSeries\n     * @static\n     * @memberOf module:Collections\n     * @method\n     * @see [async.detect]{@link module:Collections.detect}\n     * @alias findSeries\n     * @category Collections\n     * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n     * @param {AsyncFunction} iteratee - A truth test to apply to each item in `coll`.\n     * The iteratee must complete with a boolean value as its result.\n     * Invoked with (item, callback).\n     * @param {Function} [callback] - A callback which is called as soon as any\n     * iteratee returns `true`, or after all the `iteratee` functions have finished.\n     * Result will be the first item in the array that passes the truth test\n     * (iteratee) or the value `undefined` if none passed. Invoked with\n     * (err, result).\n     * @returns {Promise} a promise, if a callback is omitted\n     */\n    function detectSeries(coll, iteratee, callback) {\n        return _createTester(bool => bool, (res, item) => item)(eachOfLimit$2(1), coll, iteratee, callback)\n    }\n\n    var detectSeries$1 = awaitify(detectSeries, 3);\n\n    function consoleFunc(name) {\n        return (fn, ...args) => wrapAsync(fn)(...args, (err, ...resultArgs) => {\n            /* istanbul ignore else */\n            if (typeof console === 'object') {\n                /* istanbul ignore else */\n                if (err) {\n                    /* istanbul ignore else */\n                    if (console.error) {\n                        console.error(err);\n                    }\n                } else if (console[name]) { /* istanbul ignore else */\n                    resultArgs.forEach(x => console[name](x));\n                }\n            }\n        })\n    }\n\n    /**\n     * Logs the result of an [`async` function]{@link AsyncFunction} to the\n     * `console` using `console.dir` to display the properties of the resulting object.\n     * Only works in Node.js or in browsers that support `console.dir` and\n     * `console.error` (such as FF and Chrome).\n     * If multiple arguments are returned from the async function,\n     * `console.dir` is called on each argument in order.\n     *\n     * @name dir\n     * @static\n     * @memberOf module:Utils\n     * @method\n     * @category Util\n     * @param {AsyncFunction} function - The function you want to eventually apply\n     * all arguments to.\n     * @param {...*} arguments... - Any number of arguments to apply to the function.\n     * @example\n     *\n     * // in a module\n     * var hello = function(name, callback) {\n     *     setTimeout(function() {\n     *         callback(null, {hello: name});\n     *     }, 1000);\n     * };\n     *\n     * // in the node repl\n     * node> async.dir(hello, 'world');\n     * {hello: 'world'}\n     */\n    var dir = consoleFunc('dir');\n\n    /**\n     * The post-check version of [`whilst`]{@link module:ControlFlow.whilst}. To reflect the difference in\n     * the order of operations, the arguments `test` and `iteratee` are switched.\n     *\n     * `doWhilst` is to `whilst` as `do while` is to `while` in plain JavaScript.\n     *\n     * @name doWhilst\n     * @static\n     * @memberOf module:ControlFlow\n     * @method\n     * @see [async.whilst]{@link module:ControlFlow.whilst}\n     * @category Control Flow\n     * @param {AsyncFunction} iteratee - A function which is called each time `test`\n     * passes. Invoked with (callback).\n     * @param {AsyncFunction} test - asynchronous truth test to perform after each\n     * execution of `iteratee`. Invoked with (...args, callback), where `...args` are the\n     * non-error args from the previous callback of `iteratee`.\n     * @param {Function} [callback] - A callback which is called after the test\n     * function has failed and repeated execution of `iteratee` has stopped.\n     * `callback` will be passed an error and any arguments passed to the final\n     * `iteratee`'s callback. Invoked with (err, [results]);\n     * @returns {Promise} a promise, if no callback is passed\n     */\n    function doWhilst(iteratee, test, callback) {\n        callback = onlyOnce(callback);\n        var _fn = wrapAsync(iteratee);\n        var _test = wrapAsync(test);\n        var results;\n\n        function next(err, ...args) {\n            if (err) return callback(err);\n            if (err === false) return;\n            results = args;\n            _test(...args, check);\n        }\n\n        function check(err, truth) {\n            if (err) return callback(err);\n            if (err === false) return;\n            if (!truth) return callback(null, ...results);\n            _fn(next);\n        }\n\n        return check(null, true);\n    }\n\n    var doWhilst$1 = awaitify(doWhilst, 3);\n\n    /**\n     * Like ['doWhilst']{@link module:ControlFlow.doWhilst}, except the `test` is inverted. Note the\n     * argument ordering differs from `until`.\n     *\n     * @name doUntil\n     * @static\n     * @memberOf module:ControlFlow\n     * @method\n     * @see [async.doWhilst]{@link module:ControlFlow.doWhilst}\n     * @category Control Flow\n     * @param {AsyncFunction} iteratee - An async function which is called each time\n     * `test` fails. Invoked with (callback).\n     * @param {AsyncFunction} test - asynchronous truth test to perform after each\n     * execution of `iteratee`. Invoked with (...args, callback), where `...args` are the\n     * non-error args from the previous callback of `iteratee`\n     * @param {Function} [callback] - A callback which is called after the test\n     * function has passed and repeated execution of `iteratee` has stopped. `callback`\n     * will be passed an error and any arguments passed to the final `iteratee`'s\n     * callback. Invoked with (err, [results]);\n     * @returns {Promise} a promise, if no callback is passed\n     */\n    function doUntil(iteratee, test, callback) {\n        const _test = wrapAsync(test);\n        return doWhilst$1(iteratee, (...args) => {\n            const cb = args.pop();\n            _test(...args, (err, truth) => cb (err, !truth));\n        }, callback);\n    }\n\n    function _withoutIndex(iteratee) {\n        return (value, index, callback) => iteratee(value, callback);\n    }\n\n    /**\n     * Applies the function `iteratee` to each item in `coll`, in parallel.\n     * The `iteratee` is called with an item from the list, and a callback for when\n     * it has finished. If the `iteratee` passes an error to its `callback`, the\n     * main `callback` (for the `each` function) is immediately called with the\n     * error.\n     *\n     * Note, that since this function applies `iteratee` to each item in parallel,\n     * there is no guarantee that the iteratee functions will complete in order.\n     *\n     * @name each\n     * @static\n     * @memberOf module:Collections\n     * @method\n     * @alias forEach\n     * @category Collection\n     * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n     * @param {AsyncFunction} iteratee - An async function to apply to\n     * each item in `coll`. Invoked with (item, callback).\n     * The array index is not passed to the iteratee.\n     * If you need the index, use `eachOf`.\n     * @param {Function} [callback] - A callback which is called when all\n     * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n     * @returns {Promise} a promise, if a callback is omitted\n     * @example\n     *\n     * // dir1 is a directory that contains file1.txt, file2.txt\n     * // dir2 is a directory that contains file3.txt, file4.txt\n     * // dir3 is a directory that contains file5.txt\n     * // dir4 does not exist\n     *\n     * const fileList = [ 'dir1/file2.txt', 'dir2/file3.txt', 'dir/file5.txt'];\n     * const withMissingFileList = ['dir1/file1.txt', 'dir4/file2.txt'];\n     *\n     * // asynchronous function that deletes a file\n     * const deleteFile = function(file, callback) {\n     *     fs.unlink(file, callback);\n     * };\n     *\n     * // Using callbacks\n     * async.each(fileList, deleteFile, function(err) {\n     *     if( err ) {\n     *         console.log(err);\n     *     } else {\n     *         console.log('All files have been deleted successfully');\n     *     }\n     * });\n     *\n     * // Error Handling\n     * async.each(withMissingFileList, deleteFile, function(err){\n     *     console.log(err);\n     *     // [ Error: ENOENT: no such file or directory ]\n     *     // since dir4/file2.txt does not exist\n     *     // dir1/file1.txt could have been deleted\n     * });\n     *\n     * // Using Promises\n     * async.each(fileList, deleteFile)\n     * .then( () => {\n     *     console.log('All files have been deleted successfully');\n     * }).catch( err => {\n     *     console.log(err);\n     * });\n     *\n     * // Error Handling\n     * async.each(fileList, deleteFile)\n     * .then( () => {\n     *     console.log('All files have been deleted successfully');\n     * }).catch( err => {\n     *     console.log(err);\n     *     // [ Error: ENOENT: no such file or directory ]\n     *     // since dir4/file2.txt does not exist\n     *     // dir1/file1.txt could have been deleted\n     * });\n     *\n     * // Using async/await\n     * async () => {\n     *     try {\n     *         await async.each(files, deleteFile);\n     *     }\n     *     catch (err) {\n     *         console.log(err);\n     *     }\n     * }\n     *\n     * // Error Handling\n     * async () => {\n     *     try {\n     *         await async.each(withMissingFileList, deleteFile);\n     *     }\n     *     catch (err) {\n     *         console.log(err);\n     *         // [ Error: ENOENT: no such file or directory ]\n     *         // since dir4/file2.txt does not exist\n     *         // dir1/file1.txt could have been deleted\n     *     }\n     * }\n     *\n     */\n    function eachLimit$2(coll, iteratee, callback) {\n        return eachOf$1(coll, _withoutIndex(wrapAsync(iteratee)), callback);\n    }\n\n    var each = awaitify(eachLimit$2, 3);\n\n    /**\n     * The same as [`each`]{@link module:Collections.each} but runs a maximum of `limit` async operations at a time.\n     *\n     * @name eachLimit\n     * @static\n     * @memberOf module:Collections\n     * @method\n     * @see [async.each]{@link module:Collections.each}\n     * @alias forEachLimit\n     * @category Collection\n     * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n     * @param {number} limit - The maximum number of async operations at a time.\n     * @param {AsyncFunction} iteratee - An async function to apply to each item in\n     * `coll`.\n     * The array index is not passed to the iteratee.\n     * If you need the index, use `eachOfLimit`.\n     * Invoked with (item, callback).\n     * @param {Function} [callback] - A callback which is called when all\n     * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n     * @returns {Promise} a promise, if a callback is omitted\n     */\n    function eachLimit(coll, limit, iteratee, callback) {\n        return eachOfLimit$2(limit)(coll, _withoutIndex(wrapAsync(iteratee)), callback);\n    }\n    var eachLimit$1 = awaitify(eachLimit, 4);\n\n    /**\n     * The same as [`each`]{@link module:Collections.each} but runs only a single async operation at a time.\n     *\n     * Note, that unlike [`each`]{@link module:Collections.each}, this function applies iteratee to each item\n     * in series and therefore the iteratee functions will complete in order.\n\n     * @name eachSeries\n     * @static\n     * @memberOf module:Collections\n     * @method\n     * @see [async.each]{@link module:Collections.each}\n     * @alias forEachSeries\n     * @category Collection\n     * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n     * @param {AsyncFunction} iteratee - An async function to apply to each\n     * item in `coll`.\n     * The array index is not passed to the iteratee.\n     * If you need the index, use `eachOfSeries`.\n     * Invoked with (item, callback).\n     * @param {Function} [callback] - A callback which is called when all\n     * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n     * @returns {Promise} a promise, if a callback is omitted\n     */\n    function eachSeries(coll, iteratee, callback) {\n        return eachLimit$1(coll, 1, iteratee, callback)\n    }\n    var eachSeries$1 = awaitify(eachSeries, 3);\n\n    /**\n     * Wrap an async function and ensure it calls its callback on a later tick of\n     * the event loop.  If the function already calls its callback on a next tick,\n     * no extra deferral is added. This is useful for preventing stack overflows\n     * (`RangeError: Maximum call stack size exceeded`) and generally keeping\n     * [Zalgo](http://blog.izs.me/post/59142742143/designing-apis-for-asynchrony)\n     * contained. ES2017 `async` functions are returned as-is -- they are immune\n     * to Zalgo's corrupting influences, as they always resolve on a later tick.\n     *\n     * @name ensureAsync\n     * @static\n     * @memberOf module:Utils\n     * @method\n     * @category Util\n     * @param {AsyncFunction} fn - an async function, one that expects a node-style\n     * callback as its last argument.\n     * @returns {AsyncFunction} Returns a wrapped function with the exact same call\n     * signature as the function passed in.\n     * @example\n     *\n     * function sometimesAsync(arg, callback) {\n     *     if (cache[arg]) {\n     *         return callback(null, cache[arg]); // this would be synchronous!!\n     *     } else {\n     *         doSomeIO(arg, callback); // this IO would be asynchronous\n     *     }\n     * }\n     *\n     * // this has a risk of stack overflows if many results are cached in a row\n     * async.mapSeries(args, sometimesAsync, done);\n     *\n     * // this will defer sometimesAsync's callback if necessary,\n     * // preventing stack overflows\n     * async.mapSeries(args, async.ensureAsync(sometimesAsync), done);\n     */\n    function ensureAsync(fn) {\n        if (isAsync(fn)) return fn;\n        return function (...args/*, callback*/) {\n            var callback = args.pop();\n            var sync = true;\n            args.push((...innerArgs) => {\n                if (sync) {\n                    setImmediate$1(() => callback(...innerArgs));\n                } else {\n                    callback(...innerArgs);\n                }\n            });\n            fn.apply(this, args);\n            sync = false;\n        };\n    }\n\n    /**\n     * Returns `true` if every element in `coll` satisfies an async test. If any\n     * iteratee call returns `false`, the main `callback` is immediately called.\n     *\n     * @name every\n     * @static\n     * @memberOf module:Collections\n     * @method\n     * @alias all\n     * @category Collection\n     * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n     * @param {AsyncFunction} iteratee - An async truth test to apply to each item\n     * in the collection in parallel.\n     * The iteratee must complete with a boolean result value.\n     * Invoked with (item, callback).\n     * @param {Function} [callback] - A callback which is called after all the\n     * `iteratee` functions have finished. Result will be either `true` or `false`\n     * depending on the values of the async tests. Invoked with (err, result).\n     * @returns {Promise} a promise, if no callback provided\n     * @example\n     *\n     * // dir1 is a directory that contains file1.txt, file2.txt\n     * // dir2 is a directory that contains file3.txt, file4.txt\n     * // dir3 is a directory that contains file5.txt\n     * // dir4 does not exist\n     *\n     * const fileList = ['dir1/file1.txt','dir2/file3.txt','dir3/file5.txt'];\n     * const withMissingFileList = ['file1.txt','file2.txt','file4.txt'];\n     *\n     * // asynchronous function that checks if a file exists\n     * function fileExists(file, callback) {\n     *    fs.access(file, fs.constants.F_OK, (err) => {\n     *        callback(null, !err);\n     *    });\n     * }\n     *\n     * // Using callbacks\n     * async.every(fileList, fileExists, function(err, result) {\n     *     console.log(result);\n     *     // true\n     *     // result is true since every file exists\n     * });\n     *\n     * async.every(withMissingFileList, fileExists, function(err, result) {\n     *     console.log(result);\n     *     // false\n     *     // result is false since NOT every file exists\n     * });\n     *\n     * // Using Promises\n     * async.every(fileList, fileExists)\n     * .then( result => {\n     *     console.log(result);\n     *     // true\n     *     // result is true since every file exists\n     * }).catch( err => {\n     *     console.log(err);\n     * });\n     *\n     * async.every(withMissingFileList, fileExists)\n     * .then( result => {\n     *     console.log(result);\n     *     // false\n     *     // result is false since NOT every file exists\n     * }).catch( err => {\n     *     console.log(err);\n     * });\n     *\n     * // Using async/await\n     * async () => {\n     *     try {\n     *         let result = await async.every(fileList, fileExists);\n     *         console.log(result);\n     *         // true\n     *         // result is true since every file exists\n     *     }\n     *     catch (err) {\n     *         console.log(err);\n     *     }\n     * }\n     *\n     * async () => {\n     *     try {\n     *         let result = await async.every(withMissingFileList, fileExists);\n     *         console.log(result);\n     *         // false\n     *         // result is false since NOT every file exists\n     *     }\n     *     catch (err) {\n     *         console.log(err);\n     *     }\n     * }\n     *\n     */\n    function every(coll, iteratee, callback) {\n        return _createTester(bool => !bool, res => !res)(eachOf$1, coll, iteratee, callback)\n    }\n    var every$1 = awaitify(every, 3);\n\n    /**\n     * The same as [`every`]{@link module:Collections.every} but runs a maximum of `limit` async operations at a time.\n     *\n     * @name everyLimit\n     * @static\n     * @memberOf module:Collections\n     * @method\n     * @see [async.every]{@link module:Collections.every}\n     * @alias allLimit\n     * @category Collection\n     * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n     * @param {number} limit - The maximum number of async operations at a time.\n     * @param {AsyncFunction} iteratee - An async truth test to apply to each item\n     * in the collection in parallel.\n     * The iteratee must complete with a boolean result value.\n     * Invoked with (item, callback).\n     * @param {Function} [callback] - A callback which is called after all the\n     * `iteratee` functions have finished. Result will be either `true` or `false`\n     * depending on the values of the async tests. Invoked with (err, result).\n     * @returns {Promise} a promise, if no callback provided\n     */\n    function everyLimit(coll, limit, iteratee, callback) {\n        return _createTester(bool => !bool, res => !res)(eachOfLimit$2(limit), coll, iteratee, callback)\n    }\n    var everyLimit$1 = awaitify(everyLimit, 4);\n\n    /**\n     * The same as [`every`]{@link module:Collections.every} but runs only a single async operation at a time.\n     *\n     * @name everySeries\n     * @static\n     * @memberOf module:Collections\n     * @method\n     * @see [async.every]{@link module:Collections.every}\n     * @alias allSeries\n     * @category Collection\n     * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n     * @param {AsyncFunction} iteratee - An async truth test to apply to each item\n     * in the collection in series.\n     * The iteratee must complete with a boolean result value.\n     * Invoked with (item, callback).\n     * @param {Function} [callback] - A callback which is called after all the\n     * `iteratee` functions have finished. Result will be either `true` or `false`\n     * depending on the values of the async tests. Invoked with (err, result).\n     * @returns {Promise} a promise, if no callback provided\n     */\n    function everySeries(coll, iteratee, callback) {\n        return _createTester(bool => !bool, res => !res)(eachOfSeries$1, coll, iteratee, callback)\n    }\n    var everySeries$1 = awaitify(everySeries, 3);\n\n    function filterArray(eachfn, arr, iteratee, callback) {\n        var truthValues = new Array(arr.length);\n        eachfn(arr, (x, index, iterCb) => {\n            iteratee(x, (err, v) => {\n                truthValues[index] = !!v;\n                iterCb(err);\n            });\n        }, err => {\n            if (err) return callback(err);\n            var results = [];\n            for (var i = 0; i < arr.length; i++) {\n                if (truthValues[i]) results.push(arr[i]);\n            }\n            callback(null, results);\n        });\n    }\n\n    function filterGeneric(eachfn, coll, iteratee, callback) {\n        var results = [];\n        eachfn(coll, (x, index, iterCb) => {\n            iteratee(x, (err, v) => {\n                if (err) return iterCb(err);\n                if (v) {\n                    results.push({index, value: x});\n                }\n                iterCb(err);\n            });\n        }, err => {\n            if (err) return callback(err);\n            callback(null, results\n                .sort((a, b) => a.index - b.index)\n                .map(v => v.value));\n        });\n    }\n\n    function _filter(eachfn, coll, iteratee, callback) {\n        var filter = isArrayLike(coll) ? filterArray : filterGeneric;\n        return filter(eachfn, coll, wrapAsync(iteratee), callback);\n    }\n\n    /**\n     * Returns a new array of all the values in `coll` which pass an async truth\n     * test. This operation is performed in parallel, but the results array will be\n     * in the same order as the original.\n     *\n     * @name filter\n     * @static\n     * @memberOf module:Collections\n     * @method\n     * @alias select\n     * @category Collection\n     * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n     * @param {Function} iteratee - A truth test to apply to each item in `coll`.\n     * The `iteratee` is passed a `callback(err, truthValue)`, which must be called\n     * with a boolean argument once it has completed. Invoked with (item, callback).\n     * @param {Function} [callback] - A callback which is called after all the\n     * `iteratee` functions have finished. Invoked with (err, results).\n     * @returns {Promise} a promise, if no callback provided\n     * @example\n     *\n     * // dir1 is a directory that contains file1.txt, file2.txt\n     * // dir2 is a directory that contains file3.txt, file4.txt\n     * // dir3 is a directory that contains file5.txt\n     *\n     * const files = ['dir1/file1.txt','dir2/file3.txt','dir3/file6.txt'];\n     *\n     * // asynchronous function that checks if a file exists\n     * function fileExists(file, callback) {\n     *    fs.access(file, fs.constants.F_OK, (err) => {\n     *        callback(null, !err);\n     *    });\n     * }\n     *\n     * // Using callbacks\n     * async.filter(files, fileExists, function(err, results) {\n     *    if(err) {\n     *        console.log(err);\n     *    } else {\n     *        console.log(results);\n     *        // [ 'dir1/file1.txt', 'dir2/file3.txt' ]\n     *        // results is now an array of the existing files\n     *    }\n     * });\n     *\n     * // Using Promises\n     * async.filter(files, fileExists)\n     * .then(results => {\n     *     console.log(results);\n     *     // [ 'dir1/file1.txt', 'dir2/file3.txt' ]\n     *     // results is now an array of the existing files\n     * }).catch(err => {\n     *     console.log(err);\n     * });\n     *\n     * // Using async/await\n     * async () => {\n     *     try {\n     *         let results = await async.filter(files, fileExists);\n     *         console.log(results);\n     *         // [ 'dir1/file1.txt', 'dir2/file3.txt' ]\n     *         // results is now an array of the existing files\n     *     }\n     *     catch (err) {\n     *         console.log(err);\n     *     }\n     * }\n     *\n     */\n    function filter (coll, iteratee, callback) {\n        return _filter(eachOf$1, coll, iteratee, callback)\n    }\n    var filter$1 = awaitify(filter, 3);\n\n    /**\n     * The same as [`filter`]{@link module:Collections.filter} but runs a maximum of `limit` async operations at a\n     * time.\n     *\n     * @name filterLimit\n     * @static\n     * @memberOf module:Collections\n     * @method\n     * @see [async.filter]{@link module:Collections.filter}\n     * @alias selectLimit\n     * @category Collection\n     * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n     * @param {number} limit - The maximum number of async operations at a time.\n     * @param {Function} iteratee - A truth test to apply to each item in `coll`.\n     * The `iteratee` is passed a `callback(err, truthValue)`, which must be called\n     * with a boolean argument once it has completed. Invoked with (item, callback).\n     * @param {Function} [callback] - A callback which is called after all the\n     * `iteratee` functions have finished. Invoked with (err, results).\n     * @returns {Promise} a promise, if no callback provided\n     */\n    function filterLimit (coll, limit, iteratee, callback) {\n        return _filter(eachOfLimit$2(limit), coll, iteratee, callback)\n    }\n    var filterLimit$1 = awaitify(filterLimit, 4);\n\n    /**\n     * The same as [`filter`]{@link module:Collections.filter} but runs only a single async operation at a time.\n     *\n     * @name filterSeries\n     * @static\n     * @memberOf module:Collections\n     * @method\n     * @see [async.filter]{@link module:Collections.filter}\n     * @alias selectSeries\n     * @category Collection\n     * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n     * @param {Function} iteratee - A truth test to apply to each item in `coll`.\n     * The `iteratee` is passed a `callback(err, truthValue)`, which must be called\n     * with a boolean argument once it has completed. Invoked with (item, callback).\n     * @param {Function} [callback] - A callback which is called after all the\n     * `iteratee` functions have finished. Invoked with (err, results)\n     * @returns {Promise} a promise, if no callback provided\n     */\n    function filterSeries (coll, iteratee, callback) {\n        return _filter(eachOfSeries$1, coll, iteratee, callback)\n    }\n    var filterSeries$1 = awaitify(filterSeries, 3);\n\n    /**\n     * Calls the asynchronous function `fn` with a callback parameter that allows it\n     * to call itself again, in series, indefinitely.\n\n     * If an error is passed to the callback then `errback` is called with the\n     * error, and execution stops, otherwise it will never be called.\n     *\n     * @name forever\n     * @static\n     * @memberOf module:ControlFlow\n     * @method\n     * @category Control Flow\n     * @param {AsyncFunction} fn - an async function to call repeatedly.\n     * Invoked with (next).\n     * @param {Function} [errback] - when `fn` passes an error to it's callback,\n     * this function will be called, and execution stops. Invoked with (err).\n     * @returns {Promise} a promise that rejects if an error occurs and an errback\n     * is not passed\n     * @example\n     *\n     * async.forever(\n     *     function(next) {\n     *         // next is suitable for passing to things that need a callback(err [, whatever]);\n     *         // it will result in this function being called again.\n     *     },\n     *     function(err) {\n     *         // if next is called with a value in its first parameter, it will appear\n     *         // in here as 'err', and execution will stop.\n     *     }\n     * );\n     */\n    function forever(fn, errback) {\n        var done = onlyOnce(errback);\n        var task = wrapAsync(ensureAsync(fn));\n\n        function next(err) {\n            if (err) return done(err);\n            if (err === false) return;\n            task(next);\n        }\n        return next();\n    }\n    var forever$1 = awaitify(forever, 2);\n\n    /**\n     * The same as [`groupBy`]{@link module:Collections.groupBy} but runs a maximum of `limit` async operations at a time.\n     *\n     * @name groupByLimit\n     * @static\n     * @memberOf module:Collections\n     * @method\n     * @see [async.groupBy]{@link module:Collections.groupBy}\n     * @category Collection\n     * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n     * @param {number} limit - The maximum number of async operations at a time.\n     * @param {AsyncFunction} iteratee - An async function to apply to each item in\n     * `coll`.\n     * The iteratee should complete with a `key` to group the value under.\n     * Invoked with (value, callback).\n     * @param {Function} [callback] - A callback which is called when all `iteratee`\n     * functions have finished, or an error occurs. Result is an `Object` whoses\n     * properties are arrays of values which returned the corresponding key.\n     * @returns {Promise} a promise, if no callback is passed\n     */\n    function groupByLimit(coll, limit, iteratee, callback) {\n        var _iteratee = wrapAsync(iteratee);\n        return mapLimit$1(coll, limit, (val, iterCb) => {\n            _iteratee(val, (err, key) => {\n                if (err) return iterCb(err);\n                return iterCb(err, {key, val});\n            });\n        }, (err, mapResults) => {\n            var result = {};\n            // from MDN, handle object having an `hasOwnProperty` prop\n            var {hasOwnProperty} = Object.prototype;\n\n            for (var i = 0; i < mapResults.length; i++) {\n                if (mapResults[i]) {\n                    var {key} = mapResults[i];\n                    var {val} = mapResults[i];\n\n                    if (hasOwnProperty.call(result, key)) {\n                        result[key].push(val);\n                    } else {\n                        result[key] = [val];\n                    }\n                }\n            }\n\n            return callback(err, result);\n        });\n    }\n\n    var groupByLimit$1 = awaitify(groupByLimit, 4);\n\n    /**\n     * Returns a new object, where each value corresponds to an array of items, from\n     * `coll`, that returned the corresponding key. That is, the keys of the object\n     * correspond to the values passed to the `iteratee` callback.\n     *\n     * Note: Since this function applies the `iteratee` to each item in parallel,\n     * there is no guarantee that the `iteratee` functions will complete in order.\n     * However, the values for each key in the `result` will be in the same order as\n     * the original `coll`. For Objects, the values will roughly be in the order of\n     * the original Objects' keys (but this can vary across JavaScript engines).\n     *\n     * @name groupBy\n     * @static\n     * @memberOf module:Collections\n     * @method\n     * @category Collection\n     * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n     * @param {AsyncFunction} iteratee - An async function to apply to each item in\n     * `coll`.\n     * The iteratee should complete with a `key` to group the value under.\n     * Invoked with (value, callback).\n     * @param {Function} [callback] - A callback which is called when all `iteratee`\n     * functions have finished, or an error occurs. Result is an `Object` whoses\n     * properties are arrays of values which returned the corresponding key.\n     * @returns {Promise} a promise, if no callback is passed\n     * @example\n     *\n     * // dir1 is a directory that contains file1.txt, file2.txt\n     * // dir2 is a directory that contains file3.txt, file4.txt\n     * // dir3 is a directory that contains file5.txt\n     * // dir4 does not exist\n     *\n     * const files = ['dir1/file1.txt','dir2','dir4']\n     *\n     * // asynchronous function that detects file type as none, file, or directory\n     * function detectFile(file, callback) {\n     *     fs.stat(file, function(err, stat) {\n     *         if (err) {\n     *             return callback(null, 'none');\n     *         }\n     *         callback(null, stat.isDirectory() ? 'directory' : 'file');\n     *     });\n     * }\n     *\n     * //Using callbacks\n     * async.groupBy(files, detectFile, function(err, result) {\n     *     if(err) {\n     *         console.log(err);\n     *     } else {\n     *\t       console.log(result);\n     *         // {\n     *         //     file: [ 'dir1/file1.txt' ],\n     *         //     none: [ 'dir4' ],\n     *         //     directory: [ 'dir2']\n     *         // }\n     *         // result is object containing the files grouped by type\n     *     }\n     * });\n     *\n     * // Using Promises\n     * async.groupBy(files, detectFile)\n     * .then( result => {\n     *     console.log(result);\n     *     // {\n     *     //     file: [ 'dir1/file1.txt' ],\n     *     //     none: [ 'dir4' ],\n     *     //     directory: [ 'dir2']\n     *     // }\n     *     // result is object containing the files grouped by type\n     * }).catch( err => {\n     *     console.log(err);\n     * });\n     *\n     * // Using async/await\n     * async () => {\n     *     try {\n     *         let result = await async.groupBy(files, detectFile);\n     *         console.log(result);\n     *         // {\n     *         //     file: [ 'dir1/file1.txt' ],\n     *         //     none: [ 'dir4' ],\n     *         //     directory: [ 'dir2']\n     *         // }\n     *         // result is object containing the files grouped by type\n     *     }\n     *     catch (err) {\n     *         console.log(err);\n     *     }\n     * }\n     *\n     */\n    function groupBy (coll, iteratee, callback) {\n        return groupByLimit$1(coll, Infinity, iteratee, callback)\n    }\n\n    /**\n     * The same as [`groupBy`]{@link module:Collections.groupBy} but runs only a single async operation at a time.\n     *\n     * @name groupBySeries\n     * @static\n     * @memberOf module:Collections\n     * @method\n     * @see [async.groupBy]{@link module:Collections.groupBy}\n     * @category Collection\n     * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n     * @param {AsyncFunction} iteratee - An async function to apply to each item in\n     * `coll`.\n     * The iteratee should complete with a `key` to group the value under.\n     * Invoked with (value, callback).\n     * @param {Function} [callback] - A callback which is called when all `iteratee`\n     * functions have finished, or an error occurs. Result is an `Object` whose\n     * properties are arrays of values which returned the corresponding key.\n     * @returns {Promise} a promise, if no callback is passed\n     */\n    function groupBySeries (coll, iteratee, callback) {\n        return groupByLimit$1(coll, 1, iteratee, callback)\n    }\n\n    /**\n     * Logs the result of an `async` function to the `console`. Only works in\n     * Node.js or in browsers that support `console.log` and `console.error` (such\n     * as FF and Chrome). If multiple arguments are returned from the async\n     * function, `console.log` is called on each argument in order.\n     *\n     * @name log\n     * @static\n     * @memberOf module:Utils\n     * @method\n     * @category Util\n     * @param {AsyncFunction} function - The function you want to eventually apply\n     * all arguments to.\n     * @param {...*} arguments... - Any number of arguments to apply to the function.\n     * @example\n     *\n     * // in a module\n     * var hello = function(name, callback) {\n     *     setTimeout(function() {\n     *         callback(null, 'hello ' + name);\n     *     }, 1000);\n     * };\n     *\n     * // in the node repl\n     * node> async.log(hello, 'world');\n     * 'hello world'\n     */\n    var log = consoleFunc('log');\n\n    /**\n     * The same as [`mapValues`]{@link module:Collections.mapValues} but runs a maximum of `limit` async operations at a\n     * time.\n     *\n     * @name mapValuesLimit\n     * @static\n     * @memberOf module:Collections\n     * @method\n     * @see [async.mapValues]{@link module:Collections.mapValues}\n     * @category Collection\n     * @param {Object} obj - A collection to iterate over.\n     * @param {number} limit - The maximum number of async operations at a time.\n     * @param {AsyncFunction} iteratee - A function to apply to each value and key\n     * in `coll`.\n     * The iteratee should complete with the transformed value as its result.\n     * Invoked with (value, key, callback).\n     * @param {Function} [callback] - A callback which is called when all `iteratee`\n     * functions have finished, or an error occurs. `result` is a new object consisting\n     * of each key from `obj`, with each transformed value on the right-hand side.\n     * Invoked with (err, result).\n     * @returns {Promise} a promise, if no callback is passed\n     */\n    function mapValuesLimit(obj, limit, iteratee, callback) {\n        callback = once(callback);\n        var newObj = {};\n        var _iteratee = wrapAsync(iteratee);\n        return eachOfLimit$2(limit)(obj, (val, key, next) => {\n            _iteratee(val, key, (err, result) => {\n                if (err) return next(err);\n                newObj[key] = result;\n                next(err);\n            });\n        }, err => callback(err, newObj));\n    }\n\n    var mapValuesLimit$1 = awaitify(mapValuesLimit, 4);\n\n    /**\n     * A relative of [`map`]{@link module:Collections.map}, designed for use with objects.\n     *\n     * Produces a new Object by mapping each value of `obj` through the `iteratee`\n     * function. The `iteratee` is called each `value` and `key` from `obj` and a\n     * callback for when it has finished processing. Each of these callbacks takes\n     * two arguments: an `error`, and the transformed item from `obj`. If `iteratee`\n     * passes an error to its callback, the main `callback` (for the `mapValues`\n     * function) is immediately called with the error.\n     *\n     * Note, the order of the keys in the result is not guaranteed.  The keys will\n     * be roughly in the order they complete, (but this is very engine-specific)\n     *\n     * @name mapValues\n     * @static\n     * @memberOf module:Collections\n     * @method\n     * @category Collection\n     * @param {Object} obj - A collection to iterate over.\n     * @param {AsyncFunction} iteratee - A function to apply to each value and key\n     * in `coll`.\n     * The iteratee should complete with the transformed value as its result.\n     * Invoked with (value, key, callback).\n     * @param {Function} [callback] - A callback which is called when all `iteratee`\n     * functions have finished, or an error occurs. `result` is a new object consisting\n     * of each key from `obj`, with each transformed value on the right-hand side.\n     * Invoked with (err, result).\n     * @returns {Promise} a promise, if no callback is passed\n     * @example\n     *\n     * // file1.txt is a file that is 1000 bytes in size\n     * // file2.txt is a file that is 2000 bytes in size\n     * // file3.txt is a file that is 3000 bytes in size\n     * // file4.txt does not exist\n     *\n     * const fileMap = {\n     *     f1: 'file1.txt',\n     *     f2: 'file2.txt',\n     *     f3: 'file3.txt'\n     * };\n     *\n     * const withMissingFileMap = {\n     *     f1: 'file1.txt',\n     *     f2: 'file2.txt',\n     *     f3: 'file4.txt'\n     * };\n     *\n     * // asynchronous function that returns the file size in bytes\n     * function getFileSizeInBytes(file, key, callback) {\n     *     fs.stat(file, function(err, stat) {\n     *         if (err) {\n     *             return callback(err);\n     *         }\n     *         callback(null, stat.size);\n     *     });\n     * }\n     *\n     * // Using callbacks\n     * async.mapValues(fileMap, getFileSizeInBytes, function(err, result) {\n     *     if (err) {\n     *         console.log(err);\n     *     } else {\n     *         console.log(result);\n     *         // result is now a map of file size in bytes for each file, e.g.\n     *         // {\n     *         //     f1: 1000,\n     *         //     f2: 2000,\n     *         //     f3: 3000\n     *         // }\n     *     }\n     * });\n     *\n     * // Error handling\n     * async.mapValues(withMissingFileMap, getFileSizeInBytes, function(err, result) {\n     *     if (err) {\n     *         console.log(err);\n     *         // [ Error: ENOENT: no such file or directory ]\n     *     } else {\n     *         console.log(result);\n     *     }\n     * });\n     *\n     * // Using Promises\n     * async.mapValues(fileMap, getFileSizeInBytes)\n     * .then( result => {\n     *     console.log(result);\n     *     // result is now a map of file size in bytes for each file, e.g.\n     *     // {\n     *     //     f1: 1000,\n     *     //     f2: 2000,\n     *     //     f3: 3000\n     *     // }\n     * }).catch (err => {\n     *     console.log(err);\n     * });\n     *\n     * // Error Handling\n     * async.mapValues(withMissingFileMap, getFileSizeInBytes)\n     * .then( result => {\n     *     console.log(result);\n     * }).catch (err => {\n     *     console.log(err);\n     *     // [ Error: ENOENT: no such file or directory ]\n     * });\n     *\n     * // Using async/await\n     * async () => {\n     *     try {\n     *         let result = await async.mapValues(fileMap, getFileSizeInBytes);\n     *         console.log(result);\n     *         // result is now a map of file size in bytes for each file, e.g.\n     *         // {\n     *         //     f1: 1000,\n     *         //     f2: 2000,\n     *         //     f3: 3000\n     *         // }\n     *     }\n     *     catch (err) {\n     *         console.log(err);\n     *     }\n     * }\n     *\n     * // Error Handling\n     * async () => {\n     *     try {\n     *         let result = await async.mapValues(withMissingFileMap, getFileSizeInBytes);\n     *         console.log(result);\n     *     }\n     *     catch (err) {\n     *         console.log(err);\n     *         // [ Error: ENOENT: no such file or directory ]\n     *     }\n     * }\n     *\n     */\n    function mapValues(obj, iteratee, callback) {\n        return mapValuesLimit$1(obj, Infinity, iteratee, callback)\n    }\n\n    /**\n     * The same as [`mapValues`]{@link module:Collections.mapValues} but runs only a single async operation at a time.\n     *\n     * @name mapValuesSeries\n     * @static\n     * @memberOf module:Collections\n     * @method\n     * @see [async.mapValues]{@link module:Collections.mapValues}\n     * @category Collection\n     * @param {Object} obj - A collection to iterate over.\n     * @param {AsyncFunction} iteratee - A function to apply to each value and key\n     * in `coll`.\n     * The iteratee should complete with the transformed value as its result.\n     * Invoked with (value, key, callback).\n     * @param {Function} [callback] - A callback which is called when all `iteratee`\n     * functions have finished, or an error occurs. `result` is a new object consisting\n     * of each key from `obj`, with each transformed value on the right-hand side.\n     * Invoked with (err, result).\n     * @returns {Promise} a promise, if no callback is passed\n     */\n    function mapValuesSeries(obj, iteratee, callback) {\n        return mapValuesLimit$1(obj, 1, iteratee, callback)\n    }\n\n    /**\n     * Caches the results of an async function. When creating a hash to store\n     * function results against, the callback is omitted from the hash and an\n     * optional hash function can be used.\n     *\n     * **Note: if the async function errs, the result will not be cached and\n     * subsequent calls will call the wrapped function.**\n     *\n     * If no hash function is specified, the first argument is used as a hash key,\n     * which may work reasonably if it is a string or a data type that converts to a\n     * distinct string. Note that objects and arrays will not behave reasonably.\n     * Neither will cases where the other arguments are significant. In such cases,\n     * specify your own hash function.\n     *\n     * The cache of results is exposed as the `memo` property of the function\n     * returned by `memoize`.\n     *\n     * @name memoize\n     * @static\n     * @memberOf module:Utils\n     * @method\n     * @category Util\n     * @param {AsyncFunction} fn - The async function to proxy and cache results from.\n     * @param {Function} hasher - An optional function for generating a custom hash\n     * for storing results. It has all the arguments applied to it apart from the\n     * callback, and must be synchronous.\n     * @returns {AsyncFunction} a memoized version of `fn`\n     * @example\n     *\n     * var slow_fn = function(name, callback) {\n     *     // do something\n     *     callback(null, result);\n     * };\n     * var fn = async.memoize(slow_fn);\n     *\n     * // fn can now be used as if it were slow_fn\n     * fn('some name', function() {\n     *     // callback\n     * });\n     */\n    function memoize(fn, hasher = v => v) {\n        var memo = Object.create(null);\n        var queues = Object.create(null);\n        var _fn = wrapAsync(fn);\n        var memoized = initialParams((args, callback) => {\n            var key = hasher(...args);\n            if (key in memo) {\n                setImmediate$1(() => callback(null, ...memo[key]));\n            } else if (key in queues) {\n                queues[key].push(callback);\n            } else {\n                queues[key] = [callback];\n                _fn(...args, (err, ...resultArgs) => {\n                    // #1465 don't memoize if an error occurred\n                    if (!err) {\n                        memo[key] = resultArgs;\n                    }\n                    var q = queues[key];\n                    delete queues[key];\n                    for (var i = 0, l = q.length; i < l; i++) {\n                        q[i](err, ...resultArgs);\n                    }\n                });\n            }\n        });\n        memoized.memo = memo;\n        memoized.unmemoized = fn;\n        return memoized;\n    }\n\n    /* istanbul ignore file */\n\n    /**\n     * Calls `callback` on a later loop around the event loop. In Node.js this just\n     * calls `process.nextTick`.  In the browser it will use `setImmediate` if\n     * available, otherwise `setTimeout(callback, 0)`, which means other higher\n     * priority events may precede the execution of `callback`.\n     *\n     * This is used internally for browser-compatibility purposes.\n     *\n     * @name nextTick\n     * @static\n     * @memberOf module:Utils\n     * @method\n     * @see [async.setImmediate]{@link module:Utils.setImmediate}\n     * @category Util\n     * @param {Function} callback - The function to call on a later loop around\n     * the event loop. Invoked with (args...).\n     * @param {...*} args... - any number of additional arguments to pass to the\n     * callback on the next tick.\n     * @example\n     *\n     * var call_order = [];\n     * async.nextTick(function() {\n     *     call_order.push('two');\n     *     // call_order now equals ['one','two']\n     * });\n     * call_order.push('one');\n     *\n     * async.setImmediate(function (a, b, c) {\n     *     // a, b, and c equal 1, 2, and 3\n     * }, 1, 2, 3);\n     */\n    var _defer;\n\n    if (hasNextTick) {\n        _defer = process.nextTick;\n    } else if (hasSetImmediate) {\n        _defer = setImmediate;\n    } else {\n        _defer = fallback;\n    }\n\n    var nextTick = wrap(_defer);\n\n    var _parallel = awaitify((eachfn, tasks, callback) => {\n        var results = isArrayLike(tasks) ? [] : {};\n\n        eachfn(tasks, (task, key, taskCb) => {\n            wrapAsync(task)((err, ...result) => {\n                if (result.length < 2) {\n                    [result] = result;\n                }\n                results[key] = result;\n                taskCb(err);\n            });\n        }, err => callback(err, results));\n    }, 3);\n\n    /**\n     * Run the `tasks` collection of functions in parallel, without waiting until\n     * the previous function has completed. If any of the functions pass an error to\n     * its callback, the main `callback` is immediately called with the value of the\n     * error. Once the `tasks` have completed, the results are passed to the final\n     * `callback` as an array.\n     *\n     * **Note:** `parallel` is about kicking-off I/O tasks in parallel, not about\n     * parallel execution of code.  If your tasks do not use any timers or perform\n     * any I/O, they will actually be executed in series.  Any synchronous setup\n     * sections for each task will happen one after the other.  JavaScript remains\n     * single-threaded.\n     *\n     * **Hint:** Use [`reflect`]{@link module:Utils.reflect} to continue the\n     * execution of other tasks when a task fails.\n     *\n     * It is also possible to use an object instead of an array. Each property will\n     * be run as a function and the results will be passed to the final `callback`\n     * as an object instead of an array. This can be a more readable way of handling\n     * results from {@link async.parallel}.\n     *\n     * @name parallel\n     * @static\n     * @memberOf module:ControlFlow\n     * @method\n     * @category Control Flow\n     * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection of\n     * [async functions]{@link AsyncFunction} to run.\n     * Each async function can complete with any number of optional `result` values.\n     * @param {Function} [callback] - An optional callback to run once all the\n     * functions have completed successfully. This function gets a results array\n     * (or object) containing all the result arguments passed to the task callbacks.\n     * Invoked with (err, results).\n     * @returns {Promise} a promise, if a callback is not passed\n     *\n     * @example\n     *\n     * //Using Callbacks\n     * async.parallel([\n     *     function(callback) {\n     *         setTimeout(function() {\n     *             callback(null, 'one');\n     *         }, 200);\n     *     },\n     *     function(callback) {\n     *         setTimeout(function() {\n     *             callback(null, 'two');\n     *         }, 100);\n     *     }\n     * ], function(err, results) {\n     *     console.log(results);\n     *     // results is equal to ['one','two'] even though\n     *     // the second function had a shorter timeout.\n     * });\n     *\n     * // an example using an object instead of an array\n     * async.parallel({\n     *     one: function(callback) {\n     *         setTimeout(function() {\n     *             callback(null, 1);\n     *         }, 200);\n     *     },\n     *     two: function(callback) {\n     *         setTimeout(function() {\n     *             callback(null, 2);\n     *         }, 100);\n     *     }\n     * }, function(err, results) {\n     *     console.log(results);\n     *     // results is equal to: { one: 1, two: 2 }\n     * });\n     *\n     * //Using Promises\n     * async.parallel([\n     *     function(callback) {\n     *         setTimeout(function() {\n     *             callback(null, 'one');\n     *         }, 200);\n     *     },\n     *     function(callback) {\n     *         setTimeout(function() {\n     *             callback(null, 'two');\n     *         }, 100);\n     *     }\n     * ]).then(results => {\n     *     console.log(results);\n     *     // results is equal to ['one','two'] even though\n     *     // the second function had a shorter timeout.\n     * }).catch(err => {\n     *     console.log(err);\n     * });\n     *\n     * // an example using an object instead of an array\n     * async.parallel({\n     *     one: function(callback) {\n     *         setTimeout(function() {\n     *             callback(null, 1);\n     *         }, 200);\n     *     },\n     *     two: function(callback) {\n     *         setTimeout(function() {\n     *             callback(null, 2);\n     *         }, 100);\n     *     }\n     * }).then(results => {\n     *     console.log(results);\n     *     // results is equal to: { one: 1, two: 2 }\n     * }).catch(err => {\n     *     console.log(err);\n     * });\n     *\n     * //Using async/await\n     * async () => {\n     *     try {\n     *         let results = await async.parallel([\n     *             function(callback) {\n     *                 setTimeout(function() {\n     *                     callback(null, 'one');\n     *                 }, 200);\n     *             },\n     *             function(callback) {\n     *                 setTimeout(function() {\n     *                     callback(null, 'two');\n     *                 }, 100);\n     *             }\n     *         ]);\n     *         console.log(results);\n     *         // results is equal to ['one','two'] even though\n     *         // the second function had a shorter timeout.\n     *     }\n     *     catch (err) {\n     *         console.log(err);\n     *     }\n     * }\n     *\n     * // an example using an object instead of an array\n     * async () => {\n     *     try {\n     *         let results = await async.parallel({\n     *             one: function(callback) {\n     *                 setTimeout(function() {\n     *                     callback(null, 1);\n     *                 }, 200);\n     *             },\n     *            two: function(callback) {\n     *                 setTimeout(function() {\n     *                     callback(null, 2);\n     *                 }, 100);\n     *            }\n     *         });\n     *         console.log(results);\n     *         // results is equal to: { one: 1, two: 2 }\n     *     }\n     *     catch (err) {\n     *         console.log(err);\n     *     }\n     * }\n     *\n     */\n    function parallel(tasks, callback) {\n        return _parallel(eachOf$1, tasks, callback);\n    }\n\n    /**\n     * The same as [`parallel`]{@link module:ControlFlow.parallel} but runs a maximum of `limit` async operations at a\n     * time.\n     *\n     * @name parallelLimit\n     * @static\n     * @memberOf module:ControlFlow\n     * @method\n     * @see [async.parallel]{@link module:ControlFlow.parallel}\n     * @category Control Flow\n     * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection of\n     * [async functions]{@link AsyncFunction} to run.\n     * Each async function can complete with any number of optional `result` values.\n     * @param {number} limit - The maximum number of async operations at a time.\n     * @param {Function} [callback] - An optional callback to run once all the\n     * functions have completed successfully. This function gets a results array\n     * (or object) containing all the result arguments passed to the task callbacks.\n     * Invoked with (err, results).\n     * @returns {Promise} a promise, if a callback is not passed\n     */\n    function parallelLimit(tasks, limit, callback) {\n        return _parallel(eachOfLimit$2(limit), tasks, callback);\n    }\n\n    /**\n     * A queue of tasks for the worker function to complete.\n     * @typedef {Iterable} QueueObject\n     * @memberOf module:ControlFlow\n     * @property {Function} length - a function returning the number of items\n     * waiting to be processed. Invoke with `queue.length()`.\n     * @property {boolean} started - a boolean indicating whether or not any\n     * items have been pushed and processed by the queue.\n     * @property {Function} running - a function returning the number of items\n     * currently being processed. Invoke with `queue.running()`.\n     * @property {Function} workersList - a function returning the array of items\n     * currently being processed. Invoke with `queue.workersList()`.\n     * @property {Function} idle - a function returning false if there are items\n     * waiting or being processed, or true if not. Invoke with `queue.idle()`.\n     * @property {number} concurrency - an integer for determining how many `worker`\n     * functions should be run in parallel. This property can be changed after a\n     * `queue` is created to alter the concurrency on-the-fly.\n     * @property {number} payload - an integer that specifies how many items are\n     * passed to the worker function at a time. only applies if this is a\n     * [cargo]{@link module:ControlFlow.cargo} object\n     * @property {AsyncFunction} push - add a new task to the `queue`. Calls `callback`\n     * once the `worker` has finished processing the task. Instead of a single task,\n     * a `tasks` array can be submitted. The respective callback is used for every\n     * task in the list. Invoke with `queue.push(task, [callback])`,\n     * @property {AsyncFunction} unshift - add a new task to the front of the `queue`.\n     * Invoke with `queue.unshift(task, [callback])`.\n     * @property {AsyncFunction} pushAsync - the same as `q.push`, except this returns\n     * a promise that rejects if an error occurs.\n     * @property {AsyncFunction} unshiftAsync - the same as `q.unshift`, except this returns\n     * a promise that rejects if an error occurs.\n     * @property {Function} remove - remove items from the queue that match a test\n     * function.  The test function will be passed an object with a `data` property,\n     * and a `priority` property, if this is a\n     * [priorityQueue]{@link module:ControlFlow.priorityQueue} object.\n     * Invoked with `queue.remove(testFn)`, where `testFn` is of the form\n     * `function ({data, priority}) {}` and returns a Boolean.\n     * @property {Function} saturated - a function that sets a callback that is\n     * called when the number of running workers hits the `concurrency` limit, and\n     * further tasks will be queued.  If the callback is omitted, `q.saturated()`\n     * returns a promise for the next occurrence.\n     * @property {Function} unsaturated - a function that sets a callback that is\n     * called when the number of running workers is less than the `concurrency` &\n     * `buffer` limits, and further tasks will not be queued. If the callback is\n     * omitted, `q.unsaturated()` returns a promise for the next occurrence.\n     * @property {number} buffer - A minimum threshold buffer in order to say that\n     * the `queue` is `unsaturated`.\n     * @property {Function} empty - a function that sets a callback that is called\n     * when the last item from the `queue` is given to a `worker`. If the callback\n     * is omitted, `q.empty()` returns a promise for the next occurrence.\n     * @property {Function} drain - a function that sets a callback that is called\n     * when the last item from the `queue` has returned from the `worker`. If the\n     * callback is omitted, `q.drain()` returns a promise for the next occurrence.\n     * @property {Function} error - a function that sets a callback that is called\n     * when a task errors. Has the signature `function(error, task)`. If the\n     * callback is omitted, `error()` returns a promise that rejects on the next\n     * error.\n     * @property {boolean} paused - a boolean for determining whether the queue is\n     * in a paused state.\n     * @property {Function} pause - a function that pauses the processing of tasks\n     * until `resume()` is called. Invoke with `queue.pause()`.\n     * @property {Function} resume - a function that resumes the processing of\n     * queued tasks when the queue is paused. Invoke with `queue.resume()`.\n     * @property {Function} kill - a function that removes the `drain` callback and\n     * empties remaining tasks from the queue forcing it to go idle. No more tasks\n     * should be pushed to the queue after calling this function. Invoke with `queue.kill()`.\n     *\n     * @example\n     * const q = async.queue(worker, 2)\n     * q.push(item1)\n     * q.push(item2)\n     * q.push(item3)\n     * // queues are iterable, spread into an array to inspect\n     * const items = [...q] // [item1, item2, item3]\n     * // or use for of\n     * for (let item of q) {\n     *     console.log(item)\n     * }\n     *\n     * q.drain(() => {\n     *     console.log('all done')\n     * })\n     * // or\n     * await q.drain()\n     */\n\n    /**\n     * Creates a `queue` object with the specified `concurrency`. Tasks added to the\n     * `queue` are processed in parallel (up to the `concurrency` limit). If all\n     * `worker`s are in progress, the task is queued until one becomes available.\n     * Once a `worker` completes a `task`, that `task`'s callback is called.\n     *\n     * @name queue\n     * @static\n     * @memberOf module:ControlFlow\n     * @method\n     * @category Control Flow\n     * @param {AsyncFunction} worker - An async function for processing a queued task.\n     * If you want to handle errors from an individual task, pass a callback to\n     * `q.push()`. Invoked with (task, callback).\n     * @param {number} [concurrency=1] - An `integer` for determining how many\n     * `worker` functions should be run in parallel.  If omitted, the concurrency\n     * defaults to `1`.  If the concurrency is `0`, an error is thrown.\n     * @returns {module:ControlFlow.QueueObject} A queue object to manage the tasks. Callbacks can be\n     * attached as certain properties to listen for specific events during the\n     * lifecycle of the queue.\n     * @example\n     *\n     * // create a queue object with concurrency 2\n     * var q = async.queue(function(task, callback) {\n     *     console.log('hello ' + task.name);\n     *     callback();\n     * }, 2);\n     *\n     * // assign a callback\n     * q.drain(function() {\n     *     console.log('all items have been processed');\n     * });\n     * // or await the end\n     * await q.drain()\n     *\n     * // assign an error callback\n     * q.error(function(err, task) {\n     *     console.error('task experienced an error');\n     * });\n     *\n     * // add some items to the queue\n     * q.push({name: 'foo'}, function(err) {\n     *     console.log('finished processing foo');\n     * });\n     * // callback is optional\n     * q.push({name: 'bar'});\n     *\n     * // add some items to the queue (batch-wise)\n     * q.push([{name: 'baz'},{name: 'bay'},{name: 'bax'}], function(err) {\n     *     console.log('finished processing item');\n     * });\n     *\n     * // add some items to the front of the queue\n     * q.unshift({name: 'bar'}, function (err) {\n     *     console.log('finished processing bar');\n     * });\n     */\n    function queue (worker, concurrency) {\n        var _worker = wrapAsync(worker);\n        return queue$1((items, cb) => {\n            _worker(items[0], cb);\n        }, concurrency, 1);\n    }\n\n    // Binary min-heap implementation used for priority queue.\n    // Implementation is stable, i.e. push time is considered for equal priorities\n    class Heap {\n        constructor() {\n            this.heap = [];\n            this.pushCount = Number.MIN_SAFE_INTEGER;\n        }\n\n        get length() {\n            return this.heap.length;\n        }\n\n        empty () {\n            this.heap = [];\n            return this;\n        }\n\n        percUp(index) {\n            let p;\n\n            while (index > 0 && smaller(this.heap[index], this.heap[p=parent(index)])) {\n                let t = this.heap[index];\n                this.heap[index] = this.heap[p];\n                this.heap[p] = t;\n\n                index = p;\n            }\n        }\n\n        percDown(index) {\n            let l;\n\n            while ((l=leftChi(index)) < this.heap.length) {\n                if (l+1 < this.heap.length && smaller(this.heap[l+1], this.heap[l])) {\n                    l = l+1;\n                }\n\n                if (smaller(this.heap[index], this.heap[l])) {\n                    break;\n                }\n\n                let t = this.heap[index];\n                this.heap[index] = this.heap[l];\n                this.heap[l] = t;\n\n                index = l;\n            }\n        }\n\n        push(node) {\n            node.pushCount = ++this.pushCount;\n            this.heap.push(node);\n            this.percUp(this.heap.length-1);\n        }\n\n        unshift(node) {\n            return this.heap.push(node);\n        }\n\n        shift() {\n            let [top] = this.heap;\n\n            this.heap[0] = this.heap[this.heap.length-1];\n            this.heap.pop();\n            this.percDown(0);\n\n            return top;\n        }\n\n        toArray() {\n            return [...this];\n        }\n\n        *[Symbol.iterator] () {\n            for (let i = 0; i < this.heap.length; i++) {\n                yield this.heap[i].data;\n            }\n        }\n\n        remove (testFn) {\n            let j = 0;\n            for (let i = 0; i < this.heap.length; i++) {\n                if (!testFn(this.heap[i])) {\n                    this.heap[j] = this.heap[i];\n                    j++;\n                }\n            }\n\n            this.heap.splice(j);\n\n            for (let i = parent(this.heap.length-1); i >= 0; i--) {\n                this.percDown(i);\n            }\n\n            return this;\n        }\n    }\n\n    function leftChi(i) {\n        return (i<<1)+1;\n    }\n\n    function parent(i) {\n        return ((i+1)>>1)-1;\n    }\n\n    function smaller(x, y) {\n        if (x.priority !== y.priority) {\n            return x.priority < y.priority;\n        }\n        else {\n            return x.pushCount < y.pushCount;\n        }\n    }\n\n    /**\n     * The same as [async.queue]{@link module:ControlFlow.queue} only tasks are assigned a priority and\n     * completed in ascending priority order.\n     *\n     * @name priorityQueue\n     * @static\n     * @memberOf module:ControlFlow\n     * @method\n     * @see [async.queue]{@link module:ControlFlow.queue}\n     * @category Control Flow\n     * @param {AsyncFunction} worker - An async function for processing a queued task.\n     * If you want to handle errors from an individual task, pass a callback to\n     * `q.push()`.\n     * Invoked with (task, callback).\n     * @param {number} concurrency - An `integer` for determining how many `worker`\n     * functions should be run in parallel.  If omitted, the concurrency defaults to\n     * `1`.  If the concurrency is `0`, an error is thrown.\n     * @returns {module:ControlFlow.QueueObject} A priorityQueue object to manage the tasks. There are three\n     * differences between `queue` and `priorityQueue` objects:\n     * * `push(task, priority, [callback])` - `priority` should be a number. If an\n     *   array of `tasks` is given, all tasks will be assigned the same priority.\n     * * `pushAsync(task, priority, [callback])` - the same as `priorityQueue.push`,\n     *   except this returns a promise that rejects if an error occurs.\n     * * The `unshift` and `unshiftAsync` methods were removed.\n     */\n    function priorityQueue(worker, concurrency) {\n        // Start with a normal queue\n        var q = queue(worker, concurrency);\n\n        var {\n            push,\n            pushAsync\n        } = q;\n\n        q._tasks = new Heap();\n        q._createTaskItem = ({data, priority}, callback) => {\n            return {\n                data,\n                priority,\n                callback\n            };\n        };\n\n        function createDataItems(tasks, priority) {\n            if (!Array.isArray(tasks)) {\n                return {data: tasks, priority};\n            }\n            return tasks.map(data => { return {data, priority}; });\n        }\n\n        // Override push to accept second parameter representing priority\n        q.push = function(data, priority = 0, callback) {\n            return push(createDataItems(data, priority), callback);\n        };\n\n        q.pushAsync = function(data, priority = 0, callback) {\n            return pushAsync(createDataItems(data, priority), callback);\n        };\n\n        // Remove unshift functions\n        delete q.unshift;\n        delete q.unshiftAsync;\n\n        return q;\n    }\n\n    /**\n     * Runs the `tasks` array of functions in parallel, without waiting until the\n     * previous function has completed. Once any of the `tasks` complete or pass an\n     * error to its callback, the main `callback` is immediately called. It's\n     * equivalent to `Promise.race()`.\n     *\n     * @name race\n     * @static\n     * @memberOf module:ControlFlow\n     * @method\n     * @category Control Flow\n     * @param {Array} tasks - An array containing [async functions]{@link AsyncFunction}\n     * to run. Each function can complete with an optional `result` value.\n     * @param {Function} callback - A callback to run once any of the functions have\n     * completed. This function gets an error or result from the first function that\n     * completed. Invoked with (err, result).\n     * @returns {Promise} a promise, if a callback is omitted\n     * @example\n     *\n     * async.race([\n     *     function(callback) {\n     *         setTimeout(function() {\n     *             callback(null, 'one');\n     *         }, 200);\n     *     },\n     *     function(callback) {\n     *         setTimeout(function() {\n     *             callback(null, 'two');\n     *         }, 100);\n     *     }\n     * ],\n     * // main callback\n     * function(err, result) {\n     *     // the result will be equal to 'two' as it finishes earlier\n     * });\n     */\n    function race(tasks, callback) {\n        callback = once(callback);\n        if (!Array.isArray(tasks)) return callback(new TypeError('First argument to race must be an array of functions'));\n        if (!tasks.length) return callback();\n        for (var i = 0, l = tasks.length; i < l; i++) {\n            wrapAsync(tasks[i])(callback);\n        }\n    }\n\n    var race$1 = awaitify(race, 2);\n\n    /**\n     * Same as [`reduce`]{@link module:Collections.reduce}, only operates on `array` in reverse order.\n     *\n     * @name reduceRight\n     * @static\n     * @memberOf module:Collections\n     * @method\n     * @see [async.reduce]{@link module:Collections.reduce}\n     * @alias foldr\n     * @category Collection\n     * @param {Array} array - A collection to iterate over.\n     * @param {*} memo - The initial state of the reduction.\n     * @param {AsyncFunction} iteratee - A function applied to each item in the\n     * array to produce the next step in the reduction.\n     * The `iteratee` should complete with the next state of the reduction.\n     * If the iteratee completes with an error, the reduction is stopped and the\n     * main `callback` is immediately called with the error.\n     * Invoked with (memo, item, callback).\n     * @param {Function} [callback] - A callback which is called after all the\n     * `iteratee` functions have finished. Result is the reduced value. Invoked with\n     * (err, result).\n     * @returns {Promise} a promise, if no callback is passed\n     */\n    function reduceRight (array, memo, iteratee, callback) {\n        var reversed = [...array].reverse();\n        return reduce$1(reversed, memo, iteratee, callback);\n    }\n\n    /**\n     * Wraps the async function in another function that always completes with a\n     * result object, even when it errors.\n     *\n     * The result object has either the property `error` or `value`.\n     *\n     * @name reflect\n     * @static\n     * @memberOf module:Utils\n     * @method\n     * @category Util\n     * @param {AsyncFunction} fn - The async function you want to wrap\n     * @returns {Function} - A function that always passes null to it's callback as\n     * the error. The second argument to the callback will be an `object` with\n     * either an `error` or a `value` property.\n     * @example\n     *\n     * async.parallel([\n     *     async.reflect(function(callback) {\n     *         // do some stuff ...\n     *         callback(null, 'one');\n     *     }),\n     *     async.reflect(function(callback) {\n     *         // do some more stuff but error ...\n     *         callback('bad stuff happened');\n     *     }),\n     *     async.reflect(function(callback) {\n     *         // do some more stuff ...\n     *         callback(null, 'two');\n     *     })\n     * ],\n     * // optional callback\n     * function(err, results) {\n     *     // values\n     *     // results[0].value = 'one'\n     *     // results[1].error = 'bad stuff happened'\n     *     // results[2].value = 'two'\n     * });\n     */\n    function reflect(fn) {\n        var _fn = wrapAsync(fn);\n        return initialParams(function reflectOn(args, reflectCallback) {\n            args.push((error, ...cbArgs) => {\n                let retVal = {};\n                if (error) {\n                    retVal.error = error;\n                }\n                if (cbArgs.length > 0){\n                    var value = cbArgs;\n                    if (cbArgs.length <= 1) {\n                        [value] = cbArgs;\n                    }\n                    retVal.value = value;\n                }\n                reflectCallback(null, retVal);\n            });\n\n            return _fn.apply(this, args);\n        });\n    }\n\n    /**\n     * A helper function that wraps an array or an object of functions with `reflect`.\n     *\n     * @name reflectAll\n     * @static\n     * @memberOf module:Utils\n     * @method\n     * @see [async.reflect]{@link module:Utils.reflect}\n     * @category Util\n     * @param {Array|Object|Iterable} tasks - The collection of\n     * [async functions]{@link AsyncFunction} to wrap in `async.reflect`.\n     * @returns {Array} Returns an array of async functions, each wrapped in\n     * `async.reflect`\n     * @example\n     *\n     * let tasks = [\n     *     function(callback) {\n     *         setTimeout(function() {\n     *             callback(null, 'one');\n     *         }, 200);\n     *     },\n     *     function(callback) {\n     *         // do some more stuff but error ...\n     *         callback(new Error('bad stuff happened'));\n     *     },\n     *     function(callback) {\n     *         setTimeout(function() {\n     *             callback(null, 'two');\n     *         }, 100);\n     *     }\n     * ];\n     *\n     * async.parallel(async.reflectAll(tasks),\n     * // optional callback\n     * function(err, results) {\n     *     // values\n     *     // results[0].value = 'one'\n     *     // results[1].error = Error('bad stuff happened')\n     *     // results[2].value = 'two'\n     * });\n     *\n     * // an example using an object instead of an array\n     * let tasks = {\n     *     one: function(callback) {\n     *         setTimeout(function() {\n     *             callback(null, 'one');\n     *         }, 200);\n     *     },\n     *     two: function(callback) {\n     *         callback('two');\n     *     },\n     *     three: function(callback) {\n     *         setTimeout(function() {\n     *             callback(null, 'three');\n     *         }, 100);\n     *     }\n     * };\n     *\n     * async.parallel(async.reflectAll(tasks),\n     * // optional callback\n     * function(err, results) {\n     *     // values\n     *     // results.one.value = 'one'\n     *     // results.two.error = 'two'\n     *     // results.three.value = 'three'\n     * });\n     */\n    function reflectAll(tasks) {\n        var results;\n        if (Array.isArray(tasks)) {\n            results = tasks.map(reflect);\n        } else {\n            results = {};\n            Object.keys(tasks).forEach(key => {\n                results[key] = reflect.call(this, tasks[key]);\n            });\n        }\n        return results;\n    }\n\n    function reject$2(eachfn, arr, _iteratee, callback) {\n        const iteratee = wrapAsync(_iteratee);\n        return _filter(eachfn, arr, (value, cb) => {\n            iteratee(value, (err, v) => {\n                cb(err, !v);\n            });\n        }, callback);\n    }\n\n    /**\n     * The opposite of [`filter`]{@link module:Collections.filter}. Removes values that pass an `async` truth test.\n     *\n     * @name reject\n     * @static\n     * @memberOf module:Collections\n     * @method\n     * @see [async.filter]{@link module:Collections.filter}\n     * @category Collection\n     * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n     * @param {Function} iteratee - An async truth test to apply to each item in\n     * `coll`.\n     * The should complete with a boolean value as its `result`.\n     * Invoked with (item, callback).\n     * @param {Function} [callback] - A callback which is called after all the\n     * `iteratee` functions have finished. Invoked with (err, results).\n     * @returns {Promise} a promise, if no callback is passed\n     * @example\n     *\n     * // dir1 is a directory that contains file1.txt, file2.txt\n     * // dir2 is a directory that contains file3.txt, file4.txt\n     * // dir3 is a directory that contains file5.txt\n     *\n     * const fileList = ['dir1/file1.txt','dir2/file3.txt','dir3/file6.txt'];\n     *\n     * // asynchronous function that checks if a file exists\n     * function fileExists(file, callback) {\n     *    fs.access(file, fs.constants.F_OK, (err) => {\n     *        callback(null, !err);\n     *    });\n     * }\n     *\n     * // Using callbacks\n     * async.reject(fileList, fileExists, function(err, results) {\n     *    // [ 'dir3/file6.txt' ]\n     *    // results now equals an array of the non-existing files\n     * });\n     *\n     * // Using Promises\n     * async.reject(fileList, fileExists)\n     * .then( results => {\n     *     console.log(results);\n     *     // [ 'dir3/file6.txt' ]\n     *     // results now equals an array of the non-existing files\n     * }).catch( err => {\n     *     console.log(err);\n     * });\n     *\n     * // Using async/await\n     * async () => {\n     *     try {\n     *         let results = await async.reject(fileList, fileExists);\n     *         console.log(results);\n     *         // [ 'dir3/file6.txt' ]\n     *         // results now equals an array of the non-existing files\n     *     }\n     *     catch (err) {\n     *         console.log(err);\n     *     }\n     * }\n     *\n     */\n    function reject (coll, iteratee, callback) {\n        return reject$2(eachOf$1, coll, iteratee, callback)\n    }\n    var reject$1 = awaitify(reject, 3);\n\n    /**\n     * The same as [`reject`]{@link module:Collections.reject} but runs a maximum of `limit` async operations at a\n     * time.\n     *\n     * @name rejectLimit\n     * @static\n     * @memberOf module:Collections\n     * @method\n     * @see [async.reject]{@link module:Collections.reject}\n     * @category Collection\n     * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n     * @param {number} limit - The maximum number of async operations at a time.\n     * @param {Function} iteratee - An async truth test to apply to each item in\n     * `coll`.\n     * The should complete with a boolean value as its `result`.\n     * Invoked with (item, callback).\n     * @param {Function} [callback] - A callback which is called after all the\n     * `iteratee` functions have finished. Invoked with (err, results).\n     * @returns {Promise} a promise, if no callback is passed\n     */\n    function rejectLimit (coll, limit, iteratee, callback) {\n        return reject$2(eachOfLimit$2(limit), coll, iteratee, callback)\n    }\n    var rejectLimit$1 = awaitify(rejectLimit, 4);\n\n    /**\n     * The same as [`reject`]{@link module:Collections.reject} but runs only a single async operation at a time.\n     *\n     * @name rejectSeries\n     * @static\n     * @memberOf module:Collections\n     * @method\n     * @see [async.reject]{@link module:Collections.reject}\n     * @category Collection\n     * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n     * @param {Function} iteratee - An async truth test to apply to each item in\n     * `coll`.\n     * The should complete with a boolean value as its `result`.\n     * Invoked with (item, callback).\n     * @param {Function} [callback] - A callback which is called after all the\n     * `iteratee` functions have finished. Invoked with (err, results).\n     * @returns {Promise} a promise, if no callback is passed\n     */\n    function rejectSeries (coll, iteratee, callback) {\n        return reject$2(eachOfSeries$1, coll, iteratee, callback)\n    }\n    var rejectSeries$1 = awaitify(rejectSeries, 3);\n\n    function constant(value) {\n        return function () {\n            return value;\n        }\n    }\n\n    /**\n     * Attempts to get a successful response from `task` no more than `times` times\n     * before returning an error. If the task is successful, the `callback` will be\n     * passed the result of the successful task. If all attempts fail, the callback\n     * will be passed the error and result (if any) of the final attempt.\n     *\n     * @name retry\n     * @static\n     * @memberOf module:ControlFlow\n     * @method\n     * @category Control Flow\n     * @see [async.retryable]{@link module:ControlFlow.retryable}\n     * @param {Object|number} [opts = {times: 5, interval: 0}| 5] - Can be either an\n     * object with `times` and `interval` or a number.\n     * * `times` - The number of attempts to make before giving up.  The default\n     *   is `5`.\n     * * `interval` - The time to wait between retries, in milliseconds.  The\n     *   default is `0`. The interval may also be specified as a function of the\n     *   retry count (see example).\n     * * `errorFilter` - An optional synchronous function that is invoked on\n     *   erroneous result. If it returns `true` the retry attempts will continue;\n     *   if the function returns `false` the retry flow is aborted with the current\n     *   attempt's error and result being returned to the final callback.\n     *   Invoked with (err).\n     * * If `opts` is a number, the number specifies the number of times to retry,\n     *   with the default interval of `0`.\n     * @param {AsyncFunction} task - An async function to retry.\n     * Invoked with (callback).\n     * @param {Function} [callback] - An optional callback which is called when the\n     * task has succeeded, or after the final failed attempt. It receives the `err`\n     * and `result` arguments of the last attempt at completing the `task`. Invoked\n     * with (err, results).\n     * @returns {Promise} a promise if no callback provided\n     *\n     * @example\n     *\n     * // The `retry` function can be used as a stand-alone control flow by passing\n     * // a callback, as shown below:\n     *\n     * // try calling apiMethod 3 times\n     * async.retry(3, apiMethod, function(err, result) {\n     *     // do something with the result\n     * });\n     *\n     * // try calling apiMethod 3 times, waiting 200 ms between each retry\n     * async.retry({times: 3, interval: 200}, apiMethod, function(err, result) {\n     *     // do something with the result\n     * });\n     *\n     * // try calling apiMethod 10 times with exponential backoff\n     * // (i.e. intervals of 100, 200, 400, 800, 1600, ... milliseconds)\n     * async.retry({\n     *   times: 10,\n     *   interval: function(retryCount) {\n     *     return 50 * Math.pow(2, retryCount);\n     *   }\n     * }, apiMethod, function(err, result) {\n     *     // do something with the result\n     * });\n     *\n     * // try calling apiMethod the default 5 times no delay between each retry\n     * async.retry(apiMethod, function(err, result) {\n     *     // do something with the result\n     * });\n     *\n     * // try calling apiMethod only when error condition satisfies, all other\n     * // errors will abort the retry control flow and return to final callback\n     * async.retry({\n     *   errorFilter: function(err) {\n     *     return err.message === 'Temporary error'; // only retry on a specific error\n     *   }\n     * }, apiMethod, function(err, result) {\n     *     // do something with the result\n     * });\n     *\n     * // to retry individual methods that are not as reliable within other\n     * // control flow functions, use the `retryable` wrapper:\n     * async.auto({\n     *     users: api.getUsers.bind(api),\n     *     payments: async.retryable(3, api.getPayments.bind(api))\n     * }, function(err, results) {\n     *     // do something with the results\n     * });\n     *\n     */\n    const DEFAULT_TIMES = 5;\n    const DEFAULT_INTERVAL = 0;\n\n    function retry(opts, task, callback) {\n        var options = {\n            times: DEFAULT_TIMES,\n            intervalFunc: constant(DEFAULT_INTERVAL)\n        };\n\n        if (arguments.length < 3 && typeof opts === 'function') {\n            callback = task || promiseCallback();\n            task = opts;\n        } else {\n            parseTimes(options, opts);\n            callback = callback || promiseCallback();\n        }\n\n        if (typeof task !== 'function') {\n            throw new Error(\"Invalid arguments for async.retry\");\n        }\n\n        var _task = wrapAsync(task);\n\n        var attempt = 1;\n        function retryAttempt() {\n            _task((err, ...args) => {\n                if (err === false) return\n                if (err && attempt++ < options.times &&\n                    (typeof options.errorFilter != 'function' ||\n                        options.errorFilter(err))) {\n                    setTimeout(retryAttempt, options.intervalFunc(attempt - 1));\n                } else {\n                    callback(err, ...args);\n                }\n            });\n        }\n\n        retryAttempt();\n        return callback[PROMISE_SYMBOL]\n    }\n\n    function parseTimes(acc, t) {\n        if (typeof t === 'object') {\n            acc.times = +t.times || DEFAULT_TIMES;\n\n            acc.intervalFunc = typeof t.interval === 'function' ?\n                t.interval :\n                constant(+t.interval || DEFAULT_INTERVAL);\n\n            acc.errorFilter = t.errorFilter;\n        } else if (typeof t === 'number' || typeof t === 'string') {\n            acc.times = +t || DEFAULT_TIMES;\n        } else {\n            throw new Error(\"Invalid arguments for async.retry\");\n        }\n    }\n\n    /**\n     * A close relative of [`retry`]{@link module:ControlFlow.retry}.  This method\n     * wraps a task and makes it retryable, rather than immediately calling it\n     * with retries.\n     *\n     * @name retryable\n     * @static\n     * @memberOf module:ControlFlow\n     * @method\n     * @see [async.retry]{@link module:ControlFlow.retry}\n     * @category Control Flow\n     * @param {Object|number} [opts = {times: 5, interval: 0}| 5] - optional\n     * options, exactly the same as from `retry`, except for a `opts.arity` that\n     * is the arity of the `task` function, defaulting to `task.length`\n     * @param {AsyncFunction} task - the asynchronous function to wrap.\n     * This function will be passed any arguments passed to the returned wrapper.\n     * Invoked with (...args, callback).\n     * @returns {AsyncFunction} The wrapped function, which when invoked, will\n     * retry on an error, based on the parameters specified in `opts`.\n     * This function will accept the same parameters as `task`.\n     * @example\n     *\n     * async.auto({\n     *     dep1: async.retryable(3, getFromFlakyService),\n     *     process: [\"dep1\", async.retryable(3, function (results, cb) {\n     *         maybeProcessData(results.dep1, cb);\n     *     })]\n     * }, callback);\n     */\n    function retryable (opts, task) {\n        if (!task) {\n            task = opts;\n            opts = null;\n        }\n        let arity = (opts && opts.arity) || task.length;\n        if (isAsync(task)) {\n            arity += 1;\n        }\n        var _task = wrapAsync(task);\n        return initialParams((args, callback) => {\n            if (args.length < arity - 1 || callback == null) {\n                args.push(callback);\n                callback = promiseCallback();\n            }\n            function taskFn(cb) {\n                _task(...args, cb);\n            }\n\n            if (opts) retry(opts, taskFn, callback);\n            else retry(taskFn, callback);\n\n            return callback[PROMISE_SYMBOL]\n        });\n    }\n\n    /**\n     * Run the functions in the `tasks` collection in series, each one running once\n     * the previous function has completed. If any functions in the series pass an\n     * error to its callback, no more functions are run, and `callback` is\n     * immediately called with the value of the error. Otherwise, `callback`\n     * receives an array of results when `tasks` have completed.\n     *\n     * It is also possible to use an object instead of an array. Each property will\n     * be run as a function, and the results will be passed to the final `callback`\n     * as an object instead of an array. This can be a more readable way of handling\n     *  results from {@link async.series}.\n     *\n     * **Note** that while many implementations preserve the order of object\n     * properties, the [ECMAScript Language Specification](http://www.ecma-international.org/ecma-262/5.1/#sec-8.6)\n     * explicitly states that\n     *\n     * > The mechanics and order of enumerating the properties is not specified.\n     *\n     * So if you rely on the order in which your series of functions are executed,\n     * and want this to work on all platforms, consider using an array.\n     *\n     * @name series\n     * @static\n     * @memberOf module:ControlFlow\n     * @method\n     * @category Control Flow\n     * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection containing\n     * [async functions]{@link AsyncFunction} to run in series.\n     * Each function can complete with any number of optional `result` values.\n     * @param {Function} [callback] - An optional callback to run once all the\n     * functions have completed. This function gets a results array (or object)\n     * containing all the result arguments passed to the `task` callbacks. Invoked\n     * with (err, result).\n     * @return {Promise} a promise, if no callback is passed\n     * @example\n     *\n     * //Using Callbacks\n     * async.series([\n     *     function(callback) {\n     *         setTimeout(function() {\n     *             // do some async task\n     *             callback(null, 'one');\n     *         }, 200);\n     *     },\n     *     function(callback) {\n     *         setTimeout(function() {\n     *             // then do another async task\n     *             callback(null, 'two');\n     *         }, 100);\n     *     }\n     * ], function(err, results) {\n     *     console.log(results);\n     *     // results is equal to ['one','two']\n     * });\n     *\n     * // an example using objects instead of arrays\n     * async.series({\n     *     one: function(callback) {\n     *         setTimeout(function() {\n     *             // do some async task\n     *             callback(null, 1);\n     *         }, 200);\n     *     },\n     *     two: function(callback) {\n     *         setTimeout(function() {\n     *             // then do another async task\n     *             callback(null, 2);\n     *         }, 100);\n     *     }\n     * }, function(err, results) {\n     *     console.log(results);\n     *     // results is equal to: { one: 1, two: 2 }\n     * });\n     *\n     * //Using Promises\n     * async.series([\n     *     function(callback) {\n     *         setTimeout(function() {\n     *             callback(null, 'one');\n     *         }, 200);\n     *     },\n     *     function(callback) {\n     *         setTimeout(function() {\n     *             callback(null, 'two');\n     *         }, 100);\n     *     }\n     * ]).then(results => {\n     *     console.log(results);\n     *     // results is equal to ['one','two']\n     * }).catch(err => {\n     *     console.log(err);\n     * });\n     *\n     * // an example using an object instead of an array\n     * async.series({\n     *     one: function(callback) {\n     *         setTimeout(function() {\n     *             // do some async task\n     *             callback(null, 1);\n     *         }, 200);\n     *     },\n     *     two: function(callback) {\n     *         setTimeout(function() {\n     *             // then do another async task\n     *             callback(null, 2);\n     *         }, 100);\n     *     }\n     * }).then(results => {\n     *     console.log(results);\n     *     // results is equal to: { one: 1, two: 2 }\n     * }).catch(err => {\n     *     console.log(err);\n     * });\n     *\n     * //Using async/await\n     * async () => {\n     *     try {\n     *         let results = await async.series([\n     *             function(callback) {\n     *                 setTimeout(function() {\n     *                     // do some async task\n     *                     callback(null, 'one');\n     *                 }, 200);\n     *             },\n     *             function(callback) {\n     *                 setTimeout(function() {\n     *                     // then do another async task\n     *                     callback(null, 'two');\n     *                 }, 100);\n     *             }\n     *         ]);\n     *         console.log(results);\n     *         // results is equal to ['one','two']\n     *     }\n     *     catch (err) {\n     *         console.log(err);\n     *     }\n     * }\n     *\n     * // an example using an object instead of an array\n     * async () => {\n     *     try {\n     *         let results = await async.parallel({\n     *             one: function(callback) {\n     *                 setTimeout(function() {\n     *                     // do some async task\n     *                     callback(null, 1);\n     *                 }, 200);\n     *             },\n     *            two: function(callback) {\n     *                 setTimeout(function() {\n     *                     // then do another async task\n     *                     callback(null, 2);\n     *                 }, 100);\n     *            }\n     *         });\n     *         console.log(results);\n     *         // results is equal to: { one: 1, two: 2 }\n     *     }\n     *     catch (err) {\n     *         console.log(err);\n     *     }\n     * }\n     *\n     */\n    function series(tasks, callback) {\n        return _parallel(eachOfSeries$1, tasks, callback);\n    }\n\n    /**\n     * Returns `true` if at least one element in the `coll` satisfies an async test.\n     * If any iteratee call returns `true`, the main `callback` is immediately\n     * called.\n     *\n     * @name some\n     * @static\n     * @memberOf module:Collections\n     * @method\n     * @alias any\n     * @category Collection\n     * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n     * @param {AsyncFunction} iteratee - An async truth test to apply to each item\n     * in the collections in parallel.\n     * The iteratee should complete with a boolean `result` value.\n     * Invoked with (item, callback).\n     * @param {Function} [callback] - A callback which is called as soon as any\n     * iteratee returns `true`, or after all the iteratee functions have finished.\n     * Result will be either `true` or `false` depending on the values of the async\n     * tests. Invoked with (err, result).\n     * @returns {Promise} a promise, if no callback provided\n     * @example\n     *\n     * // dir1 is a directory that contains file1.txt, file2.txt\n     * // dir2 is a directory that contains file3.txt, file4.txt\n     * // dir3 is a directory that contains file5.txt\n     * // dir4 does not exist\n     *\n     * // asynchronous function that checks if a file exists\n     * function fileExists(file, callback) {\n     *    fs.access(file, fs.constants.F_OK, (err) => {\n     *        callback(null, !err);\n     *    });\n     * }\n     *\n     * // Using callbacks\n     * async.some(['dir1/missing.txt','dir2/missing.txt','dir3/file5.txt'], fileExists,\n     *    function(err, result) {\n     *        console.log(result);\n     *        // true\n     *        // result is true since some file in the list exists\n     *    }\n     *);\n     *\n     * async.some(['dir1/missing.txt','dir2/missing.txt','dir4/missing.txt'], fileExists,\n     *    function(err, result) {\n     *        console.log(result);\n     *        // false\n     *        // result is false since none of the files exists\n     *    }\n     *);\n     *\n     * // Using Promises\n     * async.some(['dir1/missing.txt','dir2/missing.txt','dir3/file5.txt'], fileExists)\n     * .then( result => {\n     *     console.log(result);\n     *     // true\n     *     // result is true since some file in the list exists\n     * }).catch( err => {\n     *     console.log(err);\n     * });\n     *\n     * async.some(['dir1/missing.txt','dir2/missing.txt','dir4/missing.txt'], fileExists)\n     * .then( result => {\n     *     console.log(result);\n     *     // false\n     *     // result is false since none of the files exists\n     * }).catch( err => {\n     *     console.log(err);\n     * });\n     *\n     * // Using async/await\n     * async () => {\n     *     try {\n     *         let result = await async.some(['dir1/missing.txt','dir2/missing.txt','dir3/file5.txt'], fileExists);\n     *         console.log(result);\n     *         // true\n     *         // result is true since some file in the list exists\n     *     }\n     *     catch (err) {\n     *         console.log(err);\n     *     }\n     * }\n     *\n     * async () => {\n     *     try {\n     *         let result = await async.some(['dir1/missing.txt','dir2/missing.txt','dir4/missing.txt'], fileExists);\n     *         console.log(result);\n     *         // false\n     *         // result is false since none of the files exists\n     *     }\n     *     catch (err) {\n     *         console.log(err);\n     *     }\n     * }\n     *\n     */\n    function some(coll, iteratee, callback) {\n        return _createTester(Boolean, res => res)(eachOf$1, coll, iteratee, callback)\n    }\n    var some$1 = awaitify(some, 3);\n\n    /**\n     * The same as [`some`]{@link module:Collections.some} but runs a maximum of `limit` async operations at a time.\n     *\n     * @name someLimit\n     * @static\n     * @memberOf module:Collections\n     * @method\n     * @see [async.some]{@link module:Collections.some}\n     * @alias anyLimit\n     * @category Collection\n     * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n     * @param {number} limit - The maximum number of async operations at a time.\n     * @param {AsyncFunction} iteratee - An async truth test to apply to each item\n     * in the collections in parallel.\n     * The iteratee should complete with a boolean `result` value.\n     * Invoked with (item, callback).\n     * @param {Function} [callback] - A callback which is called as soon as any\n     * iteratee returns `true`, or after all the iteratee functions have finished.\n     * Result will be either `true` or `false` depending on the values of the async\n     * tests. Invoked with (err, result).\n     * @returns {Promise} a promise, if no callback provided\n     */\n    function someLimit(coll, limit, iteratee, callback) {\n        return _createTester(Boolean, res => res)(eachOfLimit$2(limit), coll, iteratee, callback)\n    }\n    var someLimit$1 = awaitify(someLimit, 4);\n\n    /**\n     * The same as [`some`]{@link module:Collections.some} but runs only a single async operation at a time.\n     *\n     * @name someSeries\n     * @static\n     * @memberOf module:Collections\n     * @method\n     * @see [async.some]{@link module:Collections.some}\n     * @alias anySeries\n     * @category Collection\n     * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n     * @param {AsyncFunction} iteratee - An async truth test to apply to each item\n     * in the collections in series.\n     * The iteratee should complete with a boolean `result` value.\n     * Invoked with (item, callback).\n     * @param {Function} [callback] - A callback which is called as soon as any\n     * iteratee returns `true`, or after all the iteratee functions have finished.\n     * Result will be either `true` or `false` depending on the values of the async\n     * tests. Invoked with (err, result).\n     * @returns {Promise} a promise, if no callback provided\n     */\n    function someSeries(coll, iteratee, callback) {\n        return _createTester(Boolean, res => res)(eachOfSeries$1, coll, iteratee, callback)\n    }\n    var someSeries$1 = awaitify(someSeries, 3);\n\n    /**\n     * Sorts a list by the results of running each `coll` value through an async\n     * `iteratee`.\n     *\n     * @name sortBy\n     * @static\n     * @memberOf module:Collections\n     * @method\n     * @category Collection\n     * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n     * @param {AsyncFunction} iteratee - An async function to apply to each item in\n     * `coll`.\n     * The iteratee should complete with a value to use as the sort criteria as\n     * its `result`.\n     * Invoked with (item, callback).\n     * @param {Function} callback - A callback which is called after all the\n     * `iteratee` functions have finished, or an error occurs. Results is the items\n     * from the original `coll` sorted by the values returned by the `iteratee`\n     * calls. Invoked with (err, results).\n     * @returns {Promise} a promise, if no callback passed\n     * @example\n     *\n     * // bigfile.txt is a file that is 251100 bytes in size\n     * // mediumfile.txt is a file that is 11000 bytes in size\n     * // smallfile.txt is a file that is 121 bytes in size\n     *\n     * // asynchronous function that returns the file size in bytes\n     * function getFileSizeInBytes(file, callback) {\n     *     fs.stat(file, function(err, stat) {\n     *         if (err) {\n     *             return callback(err);\n     *         }\n     *         callback(null, stat.size);\n     *     });\n     * }\n     *\n     * // Using callbacks\n     * async.sortBy(['mediumfile.txt','smallfile.txt','bigfile.txt'], getFileSizeInBytes,\n     *     function(err, results) {\n     *         if (err) {\n     *             console.log(err);\n     *         } else {\n     *             console.log(results);\n     *             // results is now the original array of files sorted by\n     *             // file size (ascending by default), e.g.\n     *             // [ 'smallfile.txt', 'mediumfile.txt', 'bigfile.txt']\n     *         }\n     *     }\n     * );\n     *\n     * // By modifying the callback parameter the\n     * // sorting order can be influenced:\n     *\n     * // ascending order\n     * async.sortBy(['mediumfile.txt','smallfile.txt','bigfile.txt'], function(file, callback) {\n     *     getFileSizeInBytes(file, function(getFileSizeErr, fileSize) {\n     *         if (getFileSizeErr) return callback(getFileSizeErr);\n     *         callback(null, fileSize);\n     *     });\n     * }, function(err, results) {\n     *         if (err) {\n     *             console.log(err);\n     *         } else {\n     *             console.log(results);\n     *             // results is now the original array of files sorted by\n     *             // file size (ascending by default), e.g.\n     *             // [ 'smallfile.txt', 'mediumfile.txt', 'bigfile.txt']\n     *         }\n     *     }\n     * );\n     *\n     * // descending order\n     * async.sortBy(['bigfile.txt','mediumfile.txt','smallfile.txt'], function(file, callback) {\n     *     getFileSizeInBytes(file, function(getFileSizeErr, fileSize) {\n     *         if (getFileSizeErr) {\n     *             return callback(getFileSizeErr);\n     *         }\n     *         callback(null, fileSize * -1);\n     *     });\n     * }, function(err, results) {\n     *         if (err) {\n     *             console.log(err);\n     *         } else {\n     *             console.log(results);\n     *             // results is now the original array of files sorted by\n     *             // file size (ascending by default), e.g.\n     *             // [ 'bigfile.txt', 'mediumfile.txt', 'smallfile.txt']\n     *         }\n     *     }\n     * );\n     *\n     * // Error handling\n     * async.sortBy(['mediumfile.txt','smallfile.txt','missingfile.txt'], getFileSizeInBytes,\n     *     function(err, results) {\n     *         if (err) {\n     *             console.log(err);\n     *             // [ Error: ENOENT: no such file or directory ]\n     *         } else {\n     *             console.log(results);\n     *         }\n     *     }\n     * );\n     *\n     * // Using Promises\n     * async.sortBy(['mediumfile.txt','smallfile.txt','bigfile.txt'], getFileSizeInBytes)\n     * .then( results => {\n     *     console.log(results);\n     *     // results is now the original array of files sorted by\n     *     // file size (ascending by default), e.g.\n     *     // [ 'smallfile.txt', 'mediumfile.txt', 'bigfile.txt']\n     * }).catch( err => {\n     *     console.log(err);\n     * });\n     *\n     * // Error handling\n     * async.sortBy(['mediumfile.txt','smallfile.txt','missingfile.txt'], getFileSizeInBytes)\n     * .then( results => {\n     *     console.log(results);\n     * }).catch( err => {\n     *     console.log(err);\n     *     // [ Error: ENOENT: no such file or directory ]\n     * });\n     *\n     * // Using async/await\n     * (async () => {\n     *     try {\n     *         let results = await async.sortBy(['bigfile.txt','mediumfile.txt','smallfile.txt'], getFileSizeInBytes);\n     *         console.log(results);\n     *         // results is now the original array of files sorted by\n     *         // file size (ascending by default), e.g.\n     *         // [ 'smallfile.txt', 'mediumfile.txt', 'bigfile.txt']\n     *     }\n     *     catch (err) {\n     *         console.log(err);\n     *     }\n     * })();\n     *\n     * // Error handling\n     * async () => {\n     *     try {\n     *         let results = await async.sortBy(['missingfile.txt','mediumfile.txt','smallfile.txt'], getFileSizeInBytes);\n     *         console.log(results);\n     *     }\n     *     catch (err) {\n     *         console.log(err);\n     *         // [ Error: ENOENT: no such file or directory ]\n     *     }\n     * }\n     *\n     */\n    function sortBy (coll, iteratee, callback) {\n        var _iteratee = wrapAsync(iteratee);\n        return map$1(coll, (x, iterCb) => {\n            _iteratee(x, (err, criteria) => {\n                if (err) return iterCb(err);\n                iterCb(err, {value: x, criteria});\n            });\n        }, (err, results) => {\n            if (err) return callback(err);\n            callback(null, results.sort(comparator).map(v => v.value));\n        });\n\n        function comparator(left, right) {\n            var a = left.criteria, b = right.criteria;\n            return a < b ? -1 : a > b ? 1 : 0;\n        }\n    }\n    var sortBy$1 = awaitify(sortBy, 3);\n\n    /**\n     * Sets a time limit on an asynchronous function. If the function does not call\n     * its callback within the specified milliseconds, it will be called with a\n     * timeout error. The code property for the error object will be `'ETIMEDOUT'`.\n     *\n     * @name timeout\n     * @static\n     * @memberOf module:Utils\n     * @method\n     * @category Util\n     * @param {AsyncFunction} asyncFn - The async function to limit in time.\n     * @param {number} milliseconds - The specified time limit.\n     * @param {*} [info] - Any variable you want attached (`string`, `object`, etc)\n     * to timeout Error for more information..\n     * @returns {AsyncFunction} Returns a wrapped function that can be used with any\n     * of the control flow functions.\n     * Invoke this function with the same parameters as you would `asyncFunc`.\n     * @example\n     *\n     * function myFunction(foo, callback) {\n     *     doAsyncTask(foo, function(err, data) {\n     *         // handle errors\n     *         if (err) return callback(err);\n     *\n     *         // do some stuff ...\n     *\n     *         // return processed data\n     *         return callback(null, data);\n     *     });\n     * }\n     *\n     * var wrapped = async.timeout(myFunction, 1000);\n     *\n     * // call `wrapped` as you would `myFunction`\n     * wrapped({ bar: 'bar' }, function(err, data) {\n     *     // if `myFunction` takes < 1000 ms to execute, `err`\n     *     // and `data` will have their expected values\n     *\n     *     // else `err` will be an Error with the code 'ETIMEDOUT'\n     * });\n     */\n    function timeout(asyncFn, milliseconds, info) {\n        var fn = wrapAsync(asyncFn);\n\n        return initialParams((args, callback) => {\n            var timedOut = false;\n            var timer;\n\n            function timeoutCallback() {\n                var name = asyncFn.name || 'anonymous';\n                var error  = new Error('Callback function \"' + name + '\" timed out.');\n                error.code = 'ETIMEDOUT';\n                if (info) {\n                    error.info = info;\n                }\n                timedOut = true;\n                callback(error);\n            }\n\n            args.push((...cbArgs) => {\n                if (!timedOut) {\n                    callback(...cbArgs);\n                    clearTimeout(timer);\n                }\n            });\n\n            // setup timer and call original function\n            timer = setTimeout(timeoutCallback, milliseconds);\n            fn(...args);\n        });\n    }\n\n    function range(size) {\n        var result = Array(size);\n        while (size--) {\n            result[size] = size;\n        }\n        return result;\n    }\n\n    /**\n     * The same as [times]{@link module:ControlFlow.times} but runs a maximum of `limit` async operations at a\n     * time.\n     *\n     * @name timesLimit\n     * @static\n     * @memberOf module:ControlFlow\n     * @method\n     * @see [async.times]{@link module:ControlFlow.times}\n     * @category Control Flow\n     * @param {number} count - The number of times to run the function.\n     * @param {number} limit - The maximum number of async operations at a time.\n     * @param {AsyncFunction} iteratee - The async function to call `n` times.\n     * Invoked with the iteration index and a callback: (n, next).\n     * @param {Function} callback - see [async.map]{@link module:Collections.map}.\n     * @returns {Promise} a promise, if no callback is provided\n     */\n    function timesLimit(count, limit, iteratee, callback) {\n        var _iteratee = wrapAsync(iteratee);\n        return mapLimit$1(range(count), limit, _iteratee, callback);\n    }\n\n    /**\n     * Calls the `iteratee` function `n` times, and accumulates results in the same\n     * manner you would use with [map]{@link module:Collections.map}.\n     *\n     * @name times\n     * @static\n     * @memberOf module:ControlFlow\n     * @method\n     * @see [async.map]{@link module:Collections.map}\n     * @category Control Flow\n     * @param {number} n - The number of times to run the function.\n     * @param {AsyncFunction} iteratee - The async function to call `n` times.\n     * Invoked with the iteration index and a callback: (n, next).\n     * @param {Function} callback - see {@link module:Collections.map}.\n     * @returns {Promise} a promise, if no callback is provided\n     * @example\n     *\n     * // Pretend this is some complicated async factory\n     * var createUser = function(id, callback) {\n     *     callback(null, {\n     *         id: 'user' + id\n     *     });\n     * };\n     *\n     * // generate 5 users\n     * async.times(5, function(n, next) {\n     *     createUser(n, function(err, user) {\n     *         next(err, user);\n     *     });\n     * }, function(err, users) {\n     *     // we should now have 5 users\n     * });\n     */\n    function times (n, iteratee, callback) {\n        return timesLimit(n, Infinity, iteratee, callback)\n    }\n\n    /**\n     * The same as [times]{@link module:ControlFlow.times} but runs only a single async operation at a time.\n     *\n     * @name timesSeries\n     * @static\n     * @memberOf module:ControlFlow\n     * @method\n     * @see [async.times]{@link module:ControlFlow.times}\n     * @category Control Flow\n     * @param {number} n - The number of times to run the function.\n     * @param {AsyncFunction} iteratee - The async function to call `n` times.\n     * Invoked with the iteration index and a callback: (n, next).\n     * @param {Function} callback - see {@link module:Collections.map}.\n     * @returns {Promise} a promise, if no callback is provided\n     */\n    function timesSeries (n, iteratee, callback) {\n        return timesLimit(n, 1, iteratee, callback)\n    }\n\n    /**\n     * A relative of `reduce`.  Takes an Object or Array, and iterates over each\n     * element in parallel, each step potentially mutating an `accumulator` value.\n     * The type of the accumulator defaults to the type of collection passed in.\n     *\n     * @name transform\n     * @static\n     * @memberOf module:Collections\n     * @method\n     * @category Collection\n     * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n     * @param {*} [accumulator] - The initial state of the transform.  If omitted,\n     * it will default to an empty Object or Array, depending on the type of `coll`\n     * @param {AsyncFunction} iteratee - A function applied to each item in the\n     * collection that potentially modifies the accumulator.\n     * Invoked with (accumulator, item, key, callback).\n     * @param {Function} [callback] - A callback which is called after all the\n     * `iteratee` functions have finished. Result is the transformed accumulator.\n     * Invoked with (err, result).\n     * @returns {Promise} a promise, if no callback provided\n     * @example\n     *\n     * // file1.txt is a file that is 1000 bytes in size\n     * // file2.txt is a file that is 2000 bytes in size\n     * // file3.txt is a file that is 3000 bytes in size\n     *\n     * // helper function that returns human-readable size format from bytes\n     * function formatBytes(bytes, decimals = 2) {\n     *   // implementation not included for brevity\n     *   return humanReadbleFilesize;\n     * }\n     *\n     * const fileList = ['file1.txt','file2.txt','file3.txt'];\n     *\n     * // asynchronous function that returns the file size, transformed to human-readable format\n     * // e.g. 1024 bytes = 1KB, 1234 bytes = 1.21 KB, 1048576 bytes = 1MB, etc.\n     * function transformFileSize(acc, value, key, callback) {\n     *     fs.stat(value, function(err, stat) {\n     *         if (err) {\n     *             return callback(err);\n     *         }\n     *         acc[key] = formatBytes(stat.size);\n     *         callback(null);\n     *     });\n     * }\n     *\n     * // Using callbacks\n     * async.transform(fileList, transformFileSize, function(err, result) {\n     *     if(err) {\n     *         console.log(err);\n     *     } else {\n     *         console.log(result);\n     *         // [ '1000 Bytes', '1.95 KB', '2.93 KB' ]\n     *     }\n     * });\n     *\n     * // Using Promises\n     * async.transform(fileList, transformFileSize)\n     * .then(result => {\n     *     console.log(result);\n     *     // [ '1000 Bytes', '1.95 KB', '2.93 KB' ]\n     * }).catch(err => {\n     *     console.log(err);\n     * });\n     *\n     * // Using async/await\n     * (async () => {\n     *     try {\n     *         let result = await async.transform(fileList, transformFileSize);\n     *         console.log(result);\n     *         // [ '1000 Bytes', '1.95 KB', '2.93 KB' ]\n     *     }\n     *     catch (err) {\n     *         console.log(err);\n     *     }\n     * })();\n     *\n     * @example\n     *\n     * // file1.txt is a file that is 1000 bytes in size\n     * // file2.txt is a file that is 2000 bytes in size\n     * // file3.txt is a file that is 3000 bytes in size\n     *\n     * // helper function that returns human-readable size format from bytes\n     * function formatBytes(bytes, decimals = 2) {\n     *   // implementation not included for brevity\n     *   return humanReadbleFilesize;\n     * }\n     *\n     * const fileMap = { f1: 'file1.txt', f2: 'file2.txt', f3: 'file3.txt' };\n     *\n     * // asynchronous function that returns the file size, transformed to human-readable format\n     * // e.g. 1024 bytes = 1KB, 1234 bytes = 1.21 KB, 1048576 bytes = 1MB, etc.\n     * function transformFileSize(acc, value, key, callback) {\n     *     fs.stat(value, function(err, stat) {\n     *         if (err) {\n     *             return callback(err);\n     *         }\n     *         acc[key] = formatBytes(stat.size);\n     *         callback(null);\n     *     });\n     * }\n     *\n     * // Using callbacks\n     * async.transform(fileMap, transformFileSize, function(err, result) {\n     *     if(err) {\n     *         console.log(err);\n     *     } else {\n     *         console.log(result);\n     *         // { f1: '1000 Bytes', f2: '1.95 KB', f3: '2.93 KB' }\n     *     }\n     * });\n     *\n     * // Using Promises\n     * async.transform(fileMap, transformFileSize)\n     * .then(result => {\n     *     console.log(result);\n     *     // { f1: '1000 Bytes', f2: '1.95 KB', f3: '2.93 KB' }\n     * }).catch(err => {\n     *     console.log(err);\n     * });\n     *\n     * // Using async/await\n     * async () => {\n     *     try {\n     *         let result = await async.transform(fileMap, transformFileSize);\n     *         console.log(result);\n     *         // { f1: '1000 Bytes', f2: '1.95 KB', f3: '2.93 KB' }\n     *     }\n     *     catch (err) {\n     *         console.log(err);\n     *     }\n     * }\n     *\n     */\n    function transform (coll, accumulator, iteratee, callback) {\n        if (arguments.length <= 3 && typeof accumulator === 'function') {\n            callback = iteratee;\n            iteratee = accumulator;\n            accumulator = Array.isArray(coll) ? [] : {};\n        }\n        callback = once(callback || promiseCallback());\n        var _iteratee = wrapAsync(iteratee);\n\n        eachOf$1(coll, (v, k, cb) => {\n            _iteratee(accumulator, v, k, cb);\n        }, err => callback(err, accumulator));\n        return callback[PROMISE_SYMBOL]\n    }\n\n    /**\n     * It runs each task in series but stops whenever any of the functions were\n     * successful. If one of the tasks were successful, the `callback` will be\n     * passed the result of the successful task. If all tasks fail, the callback\n     * will be passed the error and result (if any) of the final attempt.\n     *\n     * @name tryEach\n     * @static\n     * @memberOf module:ControlFlow\n     * @method\n     * @category Control Flow\n     * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection containing functions to\n     * run, each function is passed a `callback(err, result)` it must call on\n     * completion with an error `err` (which can be `null`) and an optional `result`\n     * value.\n     * @param {Function} [callback] - An optional callback which is called when one\n     * of the tasks has succeeded, or all have failed. It receives the `err` and\n     * `result` arguments of the last attempt at completing the `task`. Invoked with\n     * (err, results).\n     * @returns {Promise} a promise, if no callback is passed\n     * @example\n     * async.tryEach([\n     *     function getDataFromFirstWebsite(callback) {\n     *         // Try getting the data from the first website\n     *         callback(err, data);\n     *     },\n     *     function getDataFromSecondWebsite(callback) {\n     *         // First website failed,\n     *         // Try getting the data from the backup website\n     *         callback(err, data);\n     *     }\n     * ],\n     * // optional callback\n     * function(err, results) {\n     *     Now do something with the data.\n     * });\n     *\n     */\n    function tryEach(tasks, callback) {\n        var error = null;\n        var result;\n        return eachSeries$1(tasks, (task, taskCb) => {\n            wrapAsync(task)((err, ...args) => {\n                if (err === false) return taskCb(err);\n\n                if (args.length < 2) {\n                    [result] = args;\n                } else {\n                    result = args;\n                }\n                error = err;\n                taskCb(err ? null : {});\n            });\n        }, () => callback(error, result));\n    }\n\n    var tryEach$1 = awaitify(tryEach);\n\n    /**\n     * Undoes a [memoize]{@link module:Utils.memoize}d function, reverting it to the original,\n     * unmemoized form. Handy for testing.\n     *\n     * @name unmemoize\n     * @static\n     * @memberOf module:Utils\n     * @method\n     * @see [async.memoize]{@link module:Utils.memoize}\n     * @category Util\n     * @param {AsyncFunction} fn - the memoized function\n     * @returns {AsyncFunction} a function that calls the original unmemoized function\n     */\n    function unmemoize(fn) {\n        return (...args) => {\n            return (fn.unmemoized || fn)(...args);\n        };\n    }\n\n    /**\n     * Repeatedly call `iteratee`, while `test` returns `true`. Calls `callback` when\n     * stopped, or an error occurs.\n     *\n     * @name whilst\n     * @static\n     * @memberOf module:ControlFlow\n     * @method\n     * @category Control Flow\n     * @param {AsyncFunction} test - asynchronous truth test to perform before each\n     * execution of `iteratee`. Invoked with (callback).\n     * @param {AsyncFunction} iteratee - An async function which is called each time\n     * `test` passes. Invoked with (callback).\n     * @param {Function} [callback] - A callback which is called after the test\n     * function has failed and repeated execution of `iteratee` has stopped. `callback`\n     * will be passed an error and any arguments passed to the final `iteratee`'s\n     * callback. Invoked with (err, [results]);\n     * @returns {Promise} a promise, if no callback is passed\n     * @example\n     *\n     * var count = 0;\n     * async.whilst(\n     *     function test(cb) { cb(null, count < 5); },\n     *     function iter(callback) {\n     *         count++;\n     *         setTimeout(function() {\n     *             callback(null, count);\n     *         }, 1000);\n     *     },\n     *     function (err, n) {\n     *         // 5 seconds have passed, n = 5\n     *     }\n     * );\n     */\n    function whilst(test, iteratee, callback) {\n        callback = onlyOnce(callback);\n        var _fn = wrapAsync(iteratee);\n        var _test = wrapAsync(test);\n        var results = [];\n\n        function next(err, ...rest) {\n            if (err) return callback(err);\n            results = rest;\n            if (err === false) return;\n            _test(check);\n        }\n\n        function check(err, truth) {\n            if (err) return callback(err);\n            if (err === false) return;\n            if (!truth) return callback(null, ...results);\n            _fn(next);\n        }\n\n        return _test(check);\n    }\n    var whilst$1 = awaitify(whilst, 3);\n\n    /**\n     * Repeatedly call `iteratee` until `test` returns `true`. Calls `callback` when\n     * stopped, or an error occurs. `callback` will be passed an error and any\n     * arguments passed to the final `iteratee`'s callback.\n     *\n     * The inverse of [whilst]{@link module:ControlFlow.whilst}.\n     *\n     * @name until\n     * @static\n     * @memberOf module:ControlFlow\n     * @method\n     * @see [async.whilst]{@link module:ControlFlow.whilst}\n     * @category Control Flow\n     * @param {AsyncFunction} test - asynchronous truth test to perform before each\n     * execution of `iteratee`. Invoked with (callback).\n     * @param {AsyncFunction} iteratee - An async function which is called each time\n     * `test` fails. Invoked with (callback).\n     * @param {Function} [callback] - A callback which is called after the test\n     * function has passed and repeated execution of `iteratee` has stopped. `callback`\n     * will be passed an error and any arguments passed to the final `iteratee`'s\n     * callback. Invoked with (err, [results]);\n     * @returns {Promise} a promise, if a callback is not passed\n     *\n     * @example\n     * const results = []\n     * let finished = false\n     * async.until(function test(cb) {\n     *     cb(null, finished)\n     * }, function iter(next) {\n     *     fetchPage(url, (err, body) => {\n     *         if (err) return next(err)\n     *         results = results.concat(body.objects)\n     *         finished = !!body.next\n     *         next(err)\n     *     })\n     * }, function done (err) {\n     *     // all pages have been fetched\n     * })\n     */\n    function until(test, iteratee, callback) {\n        const _test = wrapAsync(test);\n        return whilst$1((cb) => _test((err, truth) => cb (err, !truth)), iteratee, callback);\n    }\n\n    /**\n     * Runs the `tasks` array of functions in series, each passing their results to\n     * the next in the array. However, if any of the `tasks` pass an error to their\n     * own callback, the next function is not executed, and the main `callback` is\n     * immediately called with the error.\n     *\n     * @name waterfall\n     * @static\n     * @memberOf module:ControlFlow\n     * @method\n     * @category Control Flow\n     * @param {Array} tasks - An array of [async functions]{@link AsyncFunction}\n     * to run.\n     * Each function should complete with any number of `result` values.\n     * The `result` values will be passed as arguments, in order, to the next task.\n     * @param {Function} [callback] - An optional callback to run once all the\n     * functions have completed. This will be passed the results of the last task's\n     * callback. Invoked with (err, [results]).\n     * @returns {Promise} a promise, if a callback is omitted\n     * @example\n     *\n     * async.waterfall([\n     *     function(callback) {\n     *         callback(null, 'one', 'two');\n     *     },\n     *     function(arg1, arg2, callback) {\n     *         // arg1 now equals 'one' and arg2 now equals 'two'\n     *         callback(null, 'three');\n     *     },\n     *     function(arg1, callback) {\n     *         // arg1 now equals 'three'\n     *         callback(null, 'done');\n     *     }\n     * ], function (err, result) {\n     *     // result now equals 'done'\n     * });\n     *\n     * // Or, with named functions:\n     * async.waterfall([\n     *     myFirstFunction,\n     *     mySecondFunction,\n     *     myLastFunction,\n     * ], function (err, result) {\n     *     // result now equals 'done'\n     * });\n     * function myFirstFunction(callback) {\n     *     callback(null, 'one', 'two');\n     * }\n     * function mySecondFunction(arg1, arg2, callback) {\n     *     // arg1 now equals 'one' and arg2 now equals 'two'\n     *     callback(null, 'three');\n     * }\n     * function myLastFunction(arg1, callback) {\n     *     // arg1 now equals 'three'\n     *     callback(null, 'done');\n     * }\n     */\n    function waterfall (tasks, callback) {\n        callback = once(callback);\n        if (!Array.isArray(tasks)) return callback(new Error('First argument to waterfall must be an array of functions'));\n        if (!tasks.length) return callback();\n        var taskIndex = 0;\n\n        function nextTask(args) {\n            var task = wrapAsync(tasks[taskIndex++]);\n            task(...args, onlyOnce(next));\n        }\n\n        function next(err, ...args) {\n            if (err === false) return\n            if (err || taskIndex === tasks.length) {\n                return callback(err, ...args);\n            }\n            nextTask(args);\n        }\n\n        nextTask([]);\n    }\n\n    var waterfall$1 = awaitify(waterfall);\n\n    /**\n     * An \"async function\" in the context of Async is an asynchronous function with\n     * a variable number of parameters, with the final parameter being a callback.\n     * (`function (arg1, arg2, ..., callback) {}`)\n     * The final callback is of the form `callback(err, results...)`, which must be\n     * called once the function is completed.  The callback should be called with a\n     * Error as its first argument to signal that an error occurred.\n     * Otherwise, if no error occurred, it should be called with `null` as the first\n     * argument, and any additional `result` arguments that may apply, to signal\n     * successful completion.\n     * The callback must be called exactly once, ideally on a later tick of the\n     * JavaScript event loop.\n     *\n     * This type of function is also referred to as a \"Node-style async function\",\n     * or a \"continuation passing-style function\" (CPS). Most of the methods of this\n     * library are themselves CPS/Node-style async functions, or functions that\n     * return CPS/Node-style async functions.\n     *\n     * Wherever we accept a Node-style async function, we also directly accept an\n     * [ES2017 `async` function]{@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function}.\n     * In this case, the `async` function will not be passed a final callback\n     * argument, and any thrown error will be used as the `err` argument of the\n     * implicit callback, and the return value will be used as the `result` value.\n     * (i.e. a `rejected` of the returned Promise becomes the `err` callback\n     * argument, and a `resolved` value becomes the `result`.)\n     *\n     * Note, due to JavaScript limitations, we can only detect native `async`\n     * functions and not transpilied implementations.\n     * Your environment must have `async`/`await` support for this to work.\n     * (e.g. Node > v7.6, or a recent version of a modern browser).\n     * If you are using `async` functions through a transpiler (e.g. Babel), you\n     * must still wrap the function with [asyncify]{@link module:Utils.asyncify},\n     * because the `async function` will be compiled to an ordinary function that\n     * returns a promise.\n     *\n     * @typedef {Function} AsyncFunction\n     * @static\n     */\n\n\n    var index = {\n        apply,\n        applyEach,\n        applyEachSeries,\n        asyncify,\n        auto,\n        autoInject,\n        cargo: cargo$1,\n        cargoQueue: cargo,\n        compose,\n        concat: concat$1,\n        concatLimit: concatLimit$1,\n        concatSeries: concatSeries$1,\n        constant: constant$1,\n        detect: detect$1,\n        detectLimit: detectLimit$1,\n        detectSeries: detectSeries$1,\n        dir,\n        doUntil,\n        doWhilst: doWhilst$1,\n        each,\n        eachLimit: eachLimit$1,\n        eachOf: eachOf$1,\n        eachOfLimit: eachOfLimit$1,\n        eachOfSeries: eachOfSeries$1,\n        eachSeries: eachSeries$1,\n        ensureAsync,\n        every: every$1,\n        everyLimit: everyLimit$1,\n        everySeries: everySeries$1,\n        filter: filter$1,\n        filterLimit: filterLimit$1,\n        filterSeries: filterSeries$1,\n        forever: forever$1,\n        groupBy,\n        groupByLimit: groupByLimit$1,\n        groupBySeries,\n        log,\n        map: map$1,\n        mapLimit: mapLimit$1,\n        mapSeries: mapSeries$1,\n        mapValues,\n        mapValuesLimit: mapValuesLimit$1,\n        mapValuesSeries,\n        memoize,\n        nextTick,\n        parallel,\n        parallelLimit,\n        priorityQueue,\n        queue,\n        race: race$1,\n        reduce: reduce$1,\n        reduceRight,\n        reflect,\n        reflectAll,\n        reject: reject$1,\n        rejectLimit: rejectLimit$1,\n        rejectSeries: rejectSeries$1,\n        retry,\n        retryable,\n        seq,\n        series,\n        setImmediate: setImmediate$1,\n        some: some$1,\n        someLimit: someLimit$1,\n        someSeries: someSeries$1,\n        sortBy: sortBy$1,\n        timeout,\n        times,\n        timesLimit,\n        timesSeries,\n        transform,\n        tryEach: tryEach$1,\n        unmemoize,\n        until,\n        waterfall: waterfall$1,\n        whilst: whilst$1,\n\n        // aliases\n        all: every$1,\n        allLimit: everyLimit$1,\n        allSeries: everySeries$1,\n        any: some$1,\n        anyLimit: someLimit$1,\n        anySeries: someSeries$1,\n        find: detect$1,\n        findLimit: detectLimit$1,\n        findSeries: detectSeries$1,\n        flatMap: concat$1,\n        flatMapLimit: concatLimit$1,\n        flatMapSeries: concatSeries$1,\n        forEach: each,\n        forEachSeries: eachSeries$1,\n        forEachLimit: eachLimit$1,\n        forEachOf: eachOf$1,\n        forEachOfSeries: eachOfSeries$1,\n        forEachOfLimit: eachOfLimit$1,\n        inject: reduce$1,\n        foldl: reduce$1,\n        foldr: reduceRight,\n        select: filter$1,\n        selectLimit: filterLimit$1,\n        selectSeries: filterSeries$1,\n        wrapSync: asyncify,\n        during: whilst$1,\n        doDuring: doWhilst$1\n    };\n\n    exports.all = every$1;\n    exports.allLimit = everyLimit$1;\n    exports.allSeries = everySeries$1;\n    exports.any = some$1;\n    exports.anyLimit = someLimit$1;\n    exports.anySeries = someSeries$1;\n    exports.apply = apply;\n    exports.applyEach = applyEach;\n    exports.applyEachSeries = applyEachSeries;\n    exports.asyncify = asyncify;\n    exports.auto = auto;\n    exports.autoInject = autoInject;\n    exports.cargo = cargo$1;\n    exports.cargoQueue = cargo;\n    exports.compose = compose;\n    exports.concat = concat$1;\n    exports.concatLimit = concatLimit$1;\n    exports.concatSeries = concatSeries$1;\n    exports.constant = constant$1;\n    exports.default = index;\n    exports.detect = detect$1;\n    exports.detectLimit = detectLimit$1;\n    exports.detectSeries = detectSeries$1;\n    exports.dir = dir;\n    exports.doDuring = doWhilst$1;\n    exports.doUntil = doUntil;\n    exports.doWhilst = doWhilst$1;\n    exports.during = whilst$1;\n    exports.each = each;\n    exports.eachLimit = eachLimit$1;\n    exports.eachOf = eachOf$1;\n    exports.eachOfLimit = eachOfLimit$1;\n    exports.eachOfSeries = eachOfSeries$1;\n    exports.eachSeries = eachSeries$1;\n    exports.ensureAsync = ensureAsync;\n    exports.every = every$1;\n    exports.everyLimit = everyLimit$1;\n    exports.everySeries = everySeries$1;\n    exports.filter = filter$1;\n    exports.filterLimit = filterLimit$1;\n    exports.filterSeries = filterSeries$1;\n    exports.find = detect$1;\n    exports.findLimit = detectLimit$1;\n    exports.findSeries = detectSeries$1;\n    exports.flatMap = concat$1;\n    exports.flatMapLimit = concatLimit$1;\n    exports.flatMapSeries = concatSeries$1;\n    exports.foldl = reduce$1;\n    exports.foldr = reduceRight;\n    exports.forEach = each;\n    exports.forEachLimit = eachLimit$1;\n    exports.forEachOf = eachOf$1;\n    exports.forEachOfLimit = eachOfLimit$1;\n    exports.forEachOfSeries = eachOfSeries$1;\n    exports.forEachSeries = eachSeries$1;\n    exports.forever = forever$1;\n    exports.groupBy = groupBy;\n    exports.groupByLimit = groupByLimit$1;\n    exports.groupBySeries = groupBySeries;\n    exports.inject = reduce$1;\n    exports.log = log;\n    exports.map = map$1;\n    exports.mapLimit = mapLimit$1;\n    exports.mapSeries = mapSeries$1;\n    exports.mapValues = mapValues;\n    exports.mapValuesLimit = mapValuesLimit$1;\n    exports.mapValuesSeries = mapValuesSeries;\n    exports.memoize = memoize;\n    exports.nextTick = nextTick;\n    exports.parallel = parallel;\n    exports.parallelLimit = parallelLimit;\n    exports.priorityQueue = priorityQueue;\n    exports.queue = queue;\n    exports.race = race$1;\n    exports.reduce = reduce$1;\n    exports.reduceRight = reduceRight;\n    exports.reflect = reflect;\n    exports.reflectAll = reflectAll;\n    exports.reject = reject$1;\n    exports.rejectLimit = rejectLimit$1;\n    exports.rejectSeries = rejectSeries$1;\n    exports.retry = retry;\n    exports.retryable = retryable;\n    exports.select = filter$1;\n    exports.selectLimit = filterLimit$1;\n    exports.selectSeries = filterSeries$1;\n    exports.seq = seq;\n    exports.series = series;\n    exports.setImmediate = setImmediate$1;\n    exports.some = some$1;\n    exports.someLimit = someLimit$1;\n    exports.someSeries = someSeries$1;\n    exports.sortBy = sortBy$1;\n    exports.timeout = timeout;\n    exports.times = times;\n    exports.timesLimit = timesLimit;\n    exports.timesSeries = timesSeries;\n    exports.transform = transform;\n    exports.tryEach = tryEach$1;\n    exports.unmemoize = unmemoize;\n    exports.until = until;\n    exports.waterfall = waterfall$1;\n    exports.whilst = whilst$1;\n    exports.wrapSync = asyncify;\n\n    Object.defineProperty(exports, '__esModule', { value: true });\n\n}));\n", "const { hasOwnProperty } = Object.prototype\n\nconst eol = typeof process !== 'undefined' &&\n  process.platform === 'win32' ? '\\r\\n' : '\\n'\n\nconst encode = (obj, opt) => {\n  const children = []\n  let out = ''\n\n  if (typeof opt === 'string') {\n    opt = {\n      section: opt,\n      whitespace: false,\n    }\n  } else {\n    opt = opt || Object.create(null)\n    opt.whitespace = opt.whitespace === true\n  }\n\n  const separator = opt.whitespace ? ' = ' : '='\n\n  for (const k of Object.keys(obj)) {\n    const val = obj[k]\n    if (val && Array.isArray(val)) {\n      for (const item of val)\n        out += safe(k + '[]') + separator + safe(item) + '\\n'\n    } else if (val && typeof val === 'object')\n      children.push(k)\n    else\n      out += safe(k) + separator + safe(val) + eol\n  }\n\n  if (opt.section && out.length)\n    out = '[' + safe(opt.section) + ']' + eol + out\n\n  for (const k of children) {\n    const nk = dotSplit(k).join('\\\\.')\n    const section = (opt.section ? opt.section + '.' : '') + nk\n    const { whitespace } = opt\n    const child = encode(obj[k], {\n      section,\n      whitespace,\n    })\n    if (out.length && child.length)\n      out += eol\n\n    out += child\n  }\n\n  return out\n}\n\nconst dotSplit = str =>\n  str.replace(/\\1/g, '\\u0002LITERAL\\\\1LITERAL\\u0002')\n    .replace(/\\\\\\./g, '\\u0001')\n    .split(/\\./)\n    .map(part =>\n      part.replace(/\\1/g, '\\\\.')\n        .replace(/\\2LITERAL\\\\1LITERAL\\2/g, '\\u0001'))\n\nconst decode = str => {\n  const out = Object.create(null)\n  let p = out\n  let section = null\n  //          section     |key      = value\n  const re = /^\\[([^\\]]*)\\]$|^([^=]+)(=(.*))?$/i\n  const lines = str.split(/[\\r\\n]+/g)\n\n  for (const line of lines) {\n    if (!line || line.match(/^\\s*[;#]/))\n      continue\n    const match = line.match(re)\n    if (!match)\n      continue\n    if (match[1] !== undefined) {\n      section = unsafe(match[1])\n      if (section === '__proto__') {\n        // not allowed\n        // keep parsing the section, but don't attach it.\n        p = Object.create(null)\n        continue\n      }\n      p = out[section] = out[section] || Object.create(null)\n      continue\n    }\n    const keyRaw = unsafe(match[2])\n    const isArray = keyRaw.length > 2 && keyRaw.slice(-2) === '[]'\n    const key = isArray ? keyRaw.slice(0, -2) : keyRaw\n    if (key === '__proto__')\n      continue\n    const valueRaw = match[3] ? unsafe(match[4]) : true\n    const value = valueRaw === 'true' ||\n      valueRaw === 'false' ||\n      valueRaw === 'null' ? JSON.parse(valueRaw)\n      : valueRaw\n\n    // Convert keys with '[]' suffix to an array\n    if (isArray) {\n      if (!hasOwnProperty.call(p, key))\n        p[key] = []\n      else if (!Array.isArray(p[key]))\n        p[key] = [p[key]]\n    }\n\n    // safeguard against resetting a previously defined\n    // array by accidentally forgetting the brackets\n    if (Array.isArray(p[key]))\n      p[key].push(value)\n    else\n      p[key] = value\n  }\n\n  // {a:{y:1},\"a.b\":{x:2}} --> {a:{y:1,b:{x:2}}}\n  // use a filter to return the keys that have to be deleted.\n  const remove = []\n  for (const k of Object.keys(out)) {\n    if (!hasOwnProperty.call(out, k) ||\n        typeof out[k] !== 'object' ||\n        Array.isArray(out[k]))\n      continue\n\n    // see if the parent section is also an object.\n    // if so, add it to that, and mark this one for deletion\n    const parts = dotSplit(k)\n    let p = out\n    const l = parts.pop()\n    const nl = l.replace(/\\\\\\./g, '.')\n    for (const part of parts) {\n      if (part === '__proto__')\n        continue\n      if (!hasOwnProperty.call(p, part) || typeof p[part] !== 'object')\n        p[part] = Object.create(null)\n      p = p[part]\n    }\n    if (p === out && nl === l)\n      continue\n\n    p[nl] = out[k]\n    remove.push(k)\n  }\n  for (const del of remove)\n    delete out[del]\n\n  return out\n}\n\nconst isQuoted = val =>\n  (val.charAt(0) === '\"' && val.slice(-1) === '\"') ||\n    (val.charAt(0) === \"'\" && val.slice(-1) === \"'\")\n\nconst safe = val =>\n  (typeof val !== 'string' ||\n    val.match(/[=\\r\\n]/) ||\n    val.match(/^\\[/) ||\n    (val.length > 1 &&\n     isQuoted(val)) ||\n    val !== val.trim())\n    ? JSON.stringify(val)\n    : val.replace(/;/g, '\\\\;').replace(/#/g, '\\\\#')\n\nconst unsafe = (val, doUnesc) => {\n  val = (val || '').trim()\n  if (isQuoted(val)) {\n    // remove the single quotes before calling JSON.parse\n    if (val.charAt(0) === \"'\")\n      val = val.substr(1, val.length - 2)\n\n    try {\n      val = JSON.parse(val)\n    } catch (_) {}\n  } else {\n    // walk the val to find the first not-escaped ; character\n    let esc = false\n    let unesc = ''\n    for (let i = 0, l = val.length; i < l; i++) {\n      const c = val.charAt(i)\n      if (esc) {\n        if ('\\\\;#'.indexOf(c) !== -1)\n          unesc += c\n        else\n          unesc += '\\\\' + c\n\n        esc = false\n      } else if (';#'.indexOf(c) !== -1)\n        break\n      else if (c === '\\\\')\n        esc = true\n      else\n        unesc += c\n    }\n    if (esc)\n      unesc += '\\\\'\n\n    return unesc.trim()\n  }\n  return val\n}\n\nmodule.exports = {\n  parse: decode,\n  decode,\n  stringify: encode,\n  encode,\n  safe,\n  unsafe,\n}\n", "/*\n * formats.js: Default formats supported by nconf\n *\n * (C) 2011, Charlie Robbins and the Contributors.\n *\n */\n\nvar ini = require('ini');\n\nvar formats = exports;\n\n//\n// ### @json\n// Standard JSON format which pretty prints `.stringify()`.\n//\nformats.json = {\n  stringify: function (obj, replacer, spacing) {\n    return JSON.stringify(obj, replacer || null, spacing || 2)\n  },\n  parse: JSON.parse\n};\n\n//\n// ### @ini\n// Standard INI format supplied from the `ini` module\n// http://en.wikipedia.org/wiki/INI_file\n//\nformats.ini = ini;\n", "/*\n * memory.js: Simple memory storage engine for nconf configuration(s)\n *\n * (C) 2011, Charlie Robbins and the Contributors.\n *\n */\n\nvar common = require('../common');\n\n//\n// ### function Memory (options)\n// #### @options {Object} Options for this instance\n// Constructor function for the Memory nconf store which maintains\n// a nested json structure based on key delimiters `:`.\n//\n// e.g. `my:nested:key` ==> `{ my: { nested: { key: } } }`\n//\nvar Memory = exports.Memory = function (options) {\n  options       = options || {};\n  this.type     = 'memory';\n  this.store    = {};\n  this.mtimes   = {};\n  this.readOnly = false;\n  this.loadFrom = options.loadFrom || null;\n  this.logicalSeparator = options.logicalSeparator || ':';\n  this.parseValues = options.parseValues || false;\n\n  if (this.loadFrom) {\n    this.store = common.loadFilesSync(this.loadFrom);\n  }\n};\n\n//\n// ### function get (key)\n// #### @key {string} Key to retrieve for this instance.\n// Retrieves the value for the specified key (if any).\n//\nMemory.prototype.get = function (key) {\n  var target = this.store,\n      path   = common.path(key, this.logicalSeparator);\n\n  //\n  // Scope into the object to get the appropriate nested context\n  //\n  while (path.length > 0) {\n    key = path.shift();\n    if (target && typeof target !== 'string' && Object.hasOwnProperty.call(target, key)) {\n      target = target[key];\n      continue;\n    }\n    return undefined;\n  }\n\n  return target;\n};\n\n//\n// ### function set (key, value)\n// #### @key {string} Key to set in this instance\n// #### @value {literal|Object} Value for the specified key\n// Sets the `value` for the specified `key` in this instance.\n//\nMemory.prototype.set = function (key, value) {\n  if (this.readOnly) {\n    return false;\n  }\n\n  var target = this.store,\n      path   = common.path(key, this.logicalSeparator);\n\n  if (path.length === 0) {\n    //\n    // Root must be an object\n    //\n    if (!value || typeof value !== 'object') {\n      return false;\n    }\n    else {\n      this.reset();\n      this.store = value;\n      return true;\n    }\n  }\n\n  //\n  // Update the `mtime` (modified time) of the key\n  //\n  this.mtimes[key] = Date.now();\n\n  //\n  // Scope into the object to get the appropriate nested context\n  //\n  while (path.length > 1) {\n    key = path.shift();\n    if (!target[key] || typeof target[key] !== 'object' || !Object.hasOwnProperty.call(target, key)) {\n      target[key] = {};\n    }\n\n    target = target[key];\n  }\n\n  // Set the specified value in the nested JSON structure\n  key = path.shift();\n  if (this.parseValues) {\n    value = common.parseValues.call(common, value);\n  }\n  target[key] = value;\n  return true;\n};\n\n//\n// ### function clear (key)\n// #### @key {string} Key to remove from this instance\n// Removes the value for the specified `key` from this instance.\n//\nMemory.prototype.clear = function (key) {\n  if (this.readOnly) {\n    return false;\n  }\n\n  var target = this.store,\n      value  = target,\n      path   = common.path(key, this.logicalSeparator);\n\n  //\n  // Remove the key from the set of `mtimes` (modified times)\n  //\n  delete this.mtimes[key];\n\n  //\n  // Scope into the object to get the appropriate nested context\n  //\n  for (var i = 0; i < path.length - 1; i++) {\n    key = path[i];\n    value = target[key];\n    if (typeof value !== 'function' && typeof value !== 'object') {\n      return false;\n    }\n    target = value;\n  }\n\n  // Delete the key from the nested JSON structure\n  key = path[i];\n  delete target[key];\n  return true;\n};\n\n//\n// ### function merge (key, value)\n// #### @key {string} Key to merge the value into\n// #### @value {literal|Object} Value to merge into the key\n// Merges the properties in `value` into the existing object value\n// at `key`. If the existing value `key` is not an Object, it will be\n// completely overwritten.\n//\nMemory.prototype.merge = function (key, value) {\n  if (this.readOnly) {\n    return false;\n  }\n\n  //\n  // If the key is not an `Object` or is an `Array`,\n  // then simply set it. Merging is for Objects.\n  //\n  if (typeof value !== 'object' || Array.isArray(value) || value === null) {\n    return this.set(key, value);\n  }\n\n  var self    = this,\n      target  = this.store,\n      path    = common.path(key, this.logicalSeparator),\n      fullKey = key;\n\n  //\n  // Update the `mtime` (modified time) of the key\n  //\n  this.mtimes[key] = Date.now();\n\n  //\n  // Scope into the object to get the appropriate nested context\n  //\n  while (path.length > 1) {\n    key = path.shift();\n    if (!target[key]) {\n      target[key] = {};\n    }\n\n    target = target[key];\n  }\n\n  // Set the specified value in the nested JSON structure\n  key = path.shift();\n\n  //\n  // If the current value at the key target is not an `Object`,\n  // or is an `Array` then simply override it because the new value\n  // is an Object.\n  //\n  if (typeof target[key] !== 'object' || Array.isArray(target[key])) {\n    target[key] = value;\n    return true;\n  }\n\n  return Object.keys(value).every(function (nested) {\n    return self.merge(common.keyed(self.logicalSeparator, fullKey, nested), value[nested]);\n  });\n};\n\n//\n// ### function reset (callback)\n// Clears all keys associated with this instance.\n//\nMemory.prototype.reset = function () {\n  if (this.readOnly) {\n    return false;\n  }\n\n  this.mtimes = {};\n  this.store  = {};\n  return true;\n};\n\n//\n// ### function loadSync\n// Returns the store managed by this instance\n//\nMemory.prototype.loadSync = function () {\n  return this.store || {};\n};\n", "/*\n * utils.js: Utility functions for the nconf module.\n *\n * (C) 2011, Charlie Robbins and the Contributors.\n *\n */\n\nvar fs = require('fs'),\n    async = require('async'),\n    formats = require('./formats'),\n    Memory = require('./stores/memory').Memory;\n\nvar common = exports;\n\n//\n// ### function path (key)\n// #### @key {string} The ':' delimited key to split\n// Returns a fully-qualified path to a nested nconf key.\n// If given null or undefined it should return an empty path.\n// '' should still be respected as a path.\n//\ncommon.path = function (key, separator) {\n  separator = separator || ':';\n  return key == null ? [] : key.split(separator);\n};\n\n//\n// ### function key (arguments)\n// Returns a `:` joined string from the `arguments`.\n//\ncommon.key = function () {\n  return Array.prototype.slice.call(arguments).join(':');\n};\n\n//\n// ### function key (arguments)\n// Returns a joined string from the `arguments`,\n// first argument is the join delimiter.\n//\ncommon.keyed = function () {\n  return Array.prototype.slice.call(arguments, 1).join(arguments[0]);\n};\n\n//\n// ### function loadFiles (files, callback)\n// #### @files {Object|Array} List of files (or settings object) to load.\n// #### @callback {function} Continuation to respond to when complete.\n// Loads all the data in the specified `files`.\n//\ncommon.loadFiles = function (files, callback) {\n  if (!files) {\n    return callback(null, {});\n  }\n\n  var options = Array.isArray(files) ? { files: files } : files;\n\n  //\n  // Set the default JSON format if not already\n  // specified\n  //\n  options.format = options.format || formats.json;\n\n  function parseFile (file, next) {\n    fs.readFile(file, function (err, data) {\n      return !err\n        ? next(null, options.format.parse(data.toString()))\n        : next(err);\n    });\n  }\n\n  async.map(options.files, parseFile, function (err, objs) {\n    return err ? callback(err) : callback(null, common.merge(objs));\n  });\n};\n\n//\n// ### function loadFilesSync (files)\n// #### @files {Object|Array} List of files (or settings object) to load.\n// Loads all the data in the specified `files` synchronously.\n//\ncommon.loadFilesSync = function (files) {\n  if (!files) {\n    return;\n  }\n\n  //\n  // Set the default JSON format if not already\n  // specified\n  //\n  var options = Array.isArray(files) ? { files: files } : files;\n  options.format = options.format || formats.json;\n\n  return common.merge(options.files.map(function (file) {\n    return options.format.parse(fs.readFileSync(file, 'utf8'));\n  }));\n};\n\n//\n// ### function merge (objs)\n// #### @objs {Array} Array of object literals to merge\n// Merges the specified `objs` using a temporary instance\n// of `stores.Memory`.\n//\ncommon.merge = function (objs) {\n  var store = new Memory();\n\n  objs.forEach(function (obj) {\n    Object.keys(obj).forEach(function (key) {\n      store.merge(key, obj[key]);\n    });\n  });\n\n  return store.store;\n};\n\n//\n// ### function capitalize (str)\n// #### @str {string} String to capitalize\n// Capitalizes the specified `str`.\n//\ncommon.capitalize = function (str) {\n  return str && str[0].toUpperCase() + str.slice(1);\n};\n\n//\n// ### function parseValues (any)\n// #### @any {string} String to parse as native data-type or return as is\n// try to parse `any` as a native data-type\n//\ncommon.parseValues = function (value) {\n  var val = value;\n  \n  try {\n    val = JSON.parse(value);\n  } catch (ignore) {\n    // Check for any other well-known strings that should be \"parsed\"\n    if (value === 'undefined'){\n      val = void 0;\n    }\n  }\n\n  return val;\n};\n\n//\n// ### function transform(map, fn)\n// #### @map {object} Object of key/value pairs to apply `fn` to\n// #### @fn {function} Transformation function that will be applied to every key/value pair\n// transform a set of key/value pairs and return the transformed result\ncommon.transform = function(map, fn) {\n  var pairs = Object.keys(map).map(function(key) {\n    var obj = { key: key, value: map[key]};\n    var result = fn.call(null, obj);\n\n    if (!result) {\n      return null;\n    } else if (result.key) {\n      return result;\n    }\n\n    var error = new Error('Transform function passed to store returned an invalid format: ' + JSON.stringify(result));\n    error.name = 'RuntimeError';\n    throw error;\n  });\n\n\n  return pairs\n    .filter(function(pair) {\n      return pair !== null;\n    })\n    .reduce(function(accumulator, pair) {\n      accumulator[pair.key] = pair.value;\n      return accumulator;\n    }, {});\n}\n", "/*\n * provider.js: Abstraction providing an interface into pluggable configuration storage.\n *\n * (C) 2011, Charlie Robbins and the Contributors.\n *\n */\n\nvar async = require('async'),\n    common = require('./common');\n\n//\n// ### function Provider (options)\n// #### @options {Object} Options for this instance.\n// Constructor function for the Provider object responsible\n// for exposing the pluggable storage features of `nconf`.\n//\nvar Provider = exports.Provider = function (options) {\n  //\n  // Setup default options for working with `stores`,\n  // `overrides`, `process.env` and `process.argv`.\n  //\n  options       = options || {};\n  this.stores  = {};\n  this.sources = [];\n  this.init(options);\n};\n\n//\n// Define wrapper functions for using basic stores\n// in this instance\n//\n\n['argv', 'env'].forEach(function (type) {\n  Provider.prototype[type] = function () {\n    var args = [type].concat(Array.prototype.slice.call(arguments));\n    return this.add.apply(this, args);\n  };\n});\n\n//\n// ### function file (key, options)\n// #### @key {string|Object} Fully qualified options, name of file store, or path.\n// #### @path {string|Object} **Optional** Full qualified options, or path.\n// Adds a new `File` store to this instance. Accepts the following options\n//\n//    nconf.file({ file: '.jitsuconf', dir: process.env.HOME, search: true });\n//    nconf.file('path/to/config/file');\n//    nconf.file('userconfig', 'path/to/config/file');\n//    nconf.file('userconfig', { file: '.jitsuconf', search: true });\n//\nProvider.prototype.file = function (key, options) {\n  if (arguments.length == 1) {\n    options = typeof key === 'string' ? { file: key } : key;\n    key = 'file';\n  }\n  else {\n    options = typeof options === 'string'\n      ? { file: options }\n      : options;\n  }\n\n  options.type = 'file';\n  return this.add(key, options);\n};\n\n//\n// Define wrapper functions for using\n// overrides and defaults\n//\n['defaults', 'overrides'].forEach(function (type) {\n  Provider.prototype[type] = function (options) {\n    options = options || {};\n    if (!options.type) {\n      options.type = 'literal';\n    }\n\n    return this.add(type, options);\n  };\n});\n\n//\n// ### function use (name, options)\n// #### @type {string} Type of the nconf store to use.\n// #### @options {Object} Options for the store instance.\n// Adds (or replaces) a new store with the specified `name`\n// and `options`. If `options.type` is not set, then `name`\n// will be used instead:\n//\n//    provider.use('file');\n//    provider.use('file', { type: 'file', filename: '/path/to/userconf' })\n//\nProvider.prototype.use = function (name, options) {\n  options  = options      || {};\n\n  function sameOptions (store) {\n    return Object.keys(options).every(function (key) {\n      return options[key] === store[key];\n    });\n  }\n\n  var store = this.stores[name],\n      update = store && !sameOptions(store);\n\n  if (!store || update) {\n    if (update) {\n      this.remove(name);\n    }\n\n    this.add(name, options);\n  }\n\n  return this;\n};\n\n//\n// ### function add (name, options)\n// #### @name {string} Name of the store to add to this instance\n// #### @options {Object} Options for the store to create\n// Adds a new store with the specified `name` and `options`. If `options.type`\n// is not set, then `name` will be used instead:\n//\n//    provider.add('memory');\n//    provider.add('userconf', { type: 'file', filename: '/path/to/userconf' })\n//\nProvider.prototype.add = function (name, options, usage) {\n  options  = options      || {};\n  var type = options.type || name;\n\n  if (!require('../nconf')[common.capitalize(type)]) {\n    throw new Error('Cannot add store with unknown type: ' + type);\n  }\n\n  this.stores[name] = this.create(type, options, usage);\n\n  if (this.stores[name].loadSync) {\n    this.stores[name].loadSync();\n  }\n\n  return this;\n};\n\n//\n// ### function remove (name)\n// #### @name {string} Name of the store to remove from this instance\n// Removes a store with the specified `name` from this instance. Users\n// are allowed to pass in a type argument (e.g. `memory`) as name if\n// this was used in the call to `.add()`.\n//\nProvider.prototype.remove = function (name) {\n  delete this.stores[name];\n  return this;\n};\n\n//\n// ### function create (type, options)\n// #### @type {string} Type of the nconf store to use.\n// #### @options {Object} Options for the store instance.\n// Creates a store of the specified `type` using the\n// specified `options`.\n//\nProvider.prototype.create = function (type, options, usage) {\n  return new (require('../nconf')[common.capitalize(type.toLowerCase())])(options, usage);\n};\n\n//\n// ### function init (options)\n// #### @options {Object} Options to initialize this instance with.\n// Initializes this instance with additional `stores` or `sources` in the\n// `options` supplied.\n//\nProvider.prototype.init = function (options) {\n  var self = this;\n\n  //\n  // Add any stores passed in through the options\n  // to this instance.\n  //\n  if (options.type) {\n    this.add(options.type, options);\n  }\n  else if (options.store) {\n    this.add(options.store.name || options.store.type, options.store);\n  }\n  else if (options.stores) {\n    Object.keys(options.stores).forEach(function (name) {\n      var store = options.stores[name];\n      self.add(store.name || name || store.type, store);\n    });\n  }\n\n  //\n  // Add any read-only sources to this instance\n  //\n  if (options.source) {\n    this.sources.push(this.create(options.source.type || options.source.name, options.source));\n  }\n  else if (options.sources) {\n    Object.keys(options.sources).forEach(function (name) {\n      var source = options.sources[name];\n      self.sources.push(self.create(source.type || source.name || name, source));\n    });\n  }\n};\n\n//\n// ### function get (key, callback)\n// #### @key {string} Key to retrieve for this instance.\n// #### @callback {function} **Optional** Continuation to respond to when complete.\n// Retrieves the value for the specified key (if any).\n//\nProvider.prototype.get = function (key, callback) {\n  if (typeof key === 'function') {\n    // Allow a * key call to be made\n    callback = key;\n    key = null;\n  }\n\n  //\n  // If there is no callback we can short-circuit into the default\n  // logic for traversing stores.\n  //\n  if (!callback) {\n    return this._execute('get', 1, key, callback);\n  }\n\n  //\n  // Otherwise the asynchronous, hierarchical `get` is\n  // slightly more complicated because we do not need to traverse\n  // the entire set of stores, but up until there is a defined value.\n  //\n  var current = 0,\n      names = Object.keys(this.stores),\n      self = this,\n      response,\n      mergeObjs = [];\n\n  async.whilst(function (cb) {\n    cb(null, typeof response === 'undefined' && current < names.length);\n  }, function (next) {\n    var store = self.stores[names[current]];\n    current++;\n\n    if (store.get.length >= 2) {\n      return store.get(key, function (err, value) {\n        if (err) {\n          return next(err);\n        }\n\n        response = value;\n\n        // Merge objects if necessary\n        if (response && typeof response === 'object' && !Array.isArray(response)) {\n          mergeObjs.push(response);\n          response = undefined;\n        }\n\n        next();\n      });\n    }\n\n    response = store.get(key);\n\n    // Merge objects if necessary\n    if (response && typeof response === 'object' && !Array.isArray(response)) {\n      mergeObjs.push(response);\n      response = undefined;\n    }\n\n    next();\n  }, function (err) {\n    if (!err && mergeObjs.length) {\n      response = common.merge(mergeObjs.reverse());\n    }\n    return err ? callback(err) : callback(null, response);\n  });\n};\n\n\n//\n// ### function any (keys, callback)\n// #### @keys {array|string...} Array of keys to query, or a variable list of strings\n// #### @callback {function} **Optional** Continuation to respond to when complete.\n// Retrieves the first truthy value (if any) for the specified list of keys.\n//\nProvider.prototype.any = function (keys, callback) {\n\n  if (!Array.isArray(keys)) {\n    keys = Array.prototype.slice.call(arguments);\n    if (keys.length > 0 && typeof keys[keys.length - 1] === 'function') {\n      callback = keys.pop();\n    } else {\n      callback = null;\n    }\n  }\n\n  //\n  // If there is no callback, use the short-circuited \"get\"\n  // on each key in turn.\n  //\n  if (!callback) {\n    var val;\n    for (var i = 0; i < keys.length; ++i) {\n      val = this._execute('get', 1, keys[i], callback);\n      if (val) {\n        return val;\n      }\n    }\n    return null;\n  }\n\n  var keyIndex = 0,\n      result,\n      self = this;\n  \n  async.whilst(function(cb) {\n    cb(null, !result && keyIndex < keys.length);\n  }, function(next) {\n    var key = keys[keyIndex];\n    keyIndex++;\n\n    self.get(key, function(err, v) {\n      if (err) {\n        next(err);\n      } else {\n        result = v;\n        next();\n      }\n    });\n  }, function(err) {\n    return err ? callback(err) : callback(null, result);\n  });\n};\n\n\n//\n// ### function set (key, value, callback)\n// #### @key {string} Key to set in this instance\n// #### @value {literal|Object} Value for the specified key\n// #### @callback {function} **Optional** Continuation to respond to when complete.\n// Sets the `value` for the specified `key` in this instance.\n//\nProvider.prototype.set = function (key, value, callback) {\n  return this._execute('set', 2, key, value, callback);\n};\n\n\n//\n// ### function required (keys)\n// #### @keys {array} List of keys\n// Throws an error if any of `keys` has no value, otherwise returns `true`\nProvider.prototype.required = function (keys) {\n  if (!Array.isArray(keys)) {\n    throw new Error('Incorrect parameter, array expected');\n  }\n\n  var missing = [];\n  keys.forEach(function(key) {\n    if (typeof this.get(key) === 'undefined') {\n      missing.push(key);\n    }\n  }, this);\n\n  if (missing.length) {\n    throw new Error('Missing required keys: ' + missing.join(', '));\n  } else {\n    return true;\n  }\n\n};\n\n//\n// ### function reset (callback)\n// #### @callback {function} **Optional** Continuation to respond to when complete.\n// Clears all keys associated with this instance.\n//\nProvider.prototype.reset = function (callback) {\n  return this._execute('reset', 0, callback);\n};\n\n//\n// ### function clear (key, callback)\n// #### @key {string} Key to remove from this instance\n// #### @callback {function} **Optional** Continuation to respond to when complete.\n// Removes the value for the specified `key` from this instance.\n//\nProvider.prototype.clear = function (key, callback) {\n  return this._execute('clear', 1, key, callback);\n};\n\n//\n// ### function merge ([key,] value [, callback])\n// #### @key {string} Key to merge the value into\n// #### @value {literal|Object} Value to merge into the key\n// #### @callback {function} **Optional** Continuation to respond to when complete.\n// Merges the properties in `value` into the existing object value at `key`.\n//\n// 1. If the existing value `key` is not an Object, it will be completely overwritten.\n// 2. If `key` is not supplied, then the `value` will be merged into the root.\n//\nProvider.prototype.merge = function () {\n  var self = this,\n      args = Array.prototype.slice.call(arguments),\n      callback = typeof args[args.length - 1] === 'function' && args.pop(),\n      value = args.pop(),\n      key = args.pop();\n\n  function mergeProperty (prop, next) {\n    return self._execute('merge', 2, prop, value[prop], next);\n  }\n\n  if (!key) {\n    if (Array.isArray(value) || typeof value !== 'object') {\n      return onError(new Error('Cannot merge non-Object into top-level.'), callback);\n    }\n\n    return async.forEach(Object.keys(value), mergeProperty, callback || function () { })\n  }\n\n  return this._execute('merge', 2, key, value, callback);\n};\n\n//\n// ### function load (callback)\n// #### @callback {function} Continuation to respond to when complete.\n// Responds with an Object representing all keys associated in this instance.\n//\nProvider.prototype.load = function (callback) {\n  var self = this;\n\n  function getStores () {\n    var stores = Object.keys(self.stores);\n    stores.reverse();\n    return stores.map(function (name) {\n      return self.stores[name];\n    });\n  }\n\n  function loadStoreSync(store) {\n    if (!store.loadSync) {\n      throw new Error('nconf store ' + store.type + ' has no loadSync() method');\n    }\n\n    return store.loadSync();\n  }\n\n  function loadStore(store, next) {\n    if (!store.load && !store.loadSync) {\n      return next(new Error('nconf store ' + store.type + ' has no load() method'));\n    }\n\n    return store.loadSync\n      ? next(null, store.loadSync())\n      : store.load(next);\n  }\n\n  function loadBatch (targets, done) {\n    if (!done) {\n      return common.merge(targets.map(loadStoreSync));\n    }\n\n    async.map(targets, loadStore, function (err, objs) {\n      return err ? done(err) : done(null, common.merge(objs));\n    });\n  }\n\n  function mergeSources (data) {\n    //\n    // If `data` was returned then merge it into\n    // the system store.\n    //\n    if (data && typeof data === 'object') {\n      self.use('sources', {\n        type: 'literal',\n        store: data\n      });\n    }\n  }\n\n  function loadSources () {\n    var sourceHierarchy = self.sources.splice(0);\n    sourceHierarchy.reverse();\n\n    //\n    // If we don't have a callback and the current\n    // store is capable of loading synchronously\n    // then do so.\n    //\n    if (!callback) {\n      mergeSources(loadBatch(sourceHierarchy));\n      return loadBatch(getStores());\n    }\n\n    loadBatch(sourceHierarchy, function (err, data) {\n      if (err) {\n        return callback(err);\n      }\n\n      mergeSources(data);\n      return loadBatch(getStores(), callback);\n    });\n  }\n\n  return self.sources.length\n    ? loadSources()\n    : loadBatch(getStores(), callback);\n};\n\n//\n// ### function save (callback)\n// #### @callback {function} **optional**  Continuation to respond to when\n// complete.\n// Instructs each provider to save.  If a callback is provided, we will attempt\n// asynchronous saves on the providers, falling back to synchronous saves if\n// this isn't possible.  If a provider does not know how to save, it will be\n// ignored.  Returns an object consisting of all of the data which was\n// actually saved.\n//\nProvider.prototype.save = function (value, callback) {\n  if (!callback && typeof value === 'function') {\n    callback = value;\n    value = null;\n  }\n\n  var self = this,\n      names = Object.keys(this.stores);\n\n  function saveStoreSync(memo, name) {\n    var store = self.stores[name];\n\n    //\n    // If the `store` doesn't have a `saveSync` method,\n    // just ignore it and continue.\n    //\n    if (store.saveSync) {\n      var ret = store.saveSync();\n      if (typeof ret == 'object' && ret !== null) {\n        memo.push(ret);\n      }\n    }\n    return memo;\n  }\n\n  function saveStore(memo, name, next) {\n    var store = self.stores[name];\n\n    //\n    // If the `store` doesn't have a `save` or saveSync`\n    // method(s), just ignore it and continue.\n    //\n\n    if (store.save) {\n      return store.save(value, function (err, data) {\n        if (err) {\n          return next(err);\n        }\n\n        if (typeof data == 'object' && data !== null) {\n          memo.push(data);\n        }\n\n        next(null, memo);\n      });\n    }\n    else if (store.saveSync) {\n      memo.push(store.saveSync());\n    }\n\n    next(null, memo);\n  }\n\n  //\n  // If we don't have a callback and the current\n  // store is capable of saving synchronously\n  // then do so.\n  //\n  if (!callback) {\n    return common.merge(names.reduce(saveStoreSync, []));\n  }\n\n  async.reduce(names, [], saveStore, function (err, objs) {\n    return err ? callback(err) : callback(null, common.merge(objs));\n  });\n};\n\n//\n// ### @private function _execute (action, syncLength, [arguments])\n// #### @action {string} Action to execute on `this.store`.\n// #### @syncLength {number} Function length of the sync version.\n// #### @arguments {Array} Arguments array to apply to the action\n// Executes the specified `action` on all stores for this instance, ensuring a callback supplied\n// to a synchronous store function is still invoked.\n//\nProvider.prototype._execute = function (action, syncLength /* [arguments] */) {\n  var args = Array.prototype.slice.call(arguments, 2),\n      callback = typeof args[args.length - 1] === 'function' && args.pop(),\n      destructive = ['set', 'clear', 'merge', 'reset'].indexOf(action) !== -1,\n      self = this,\n      response,\n      mergeObjs = [],\n      keys = Object.keys(this.stores);\n\n\n  function runAction (name, next) {\n    var store = self.stores[name];\n\n    if (destructive && store.readOnly) {\n      return next();\n    }\n\n    return store[action].length > syncLength\n      ? store[action].apply(store, args.concat(next))\n      : next(null, store[action].apply(store, args));\n  }\n\n  if (callback) {\n    return async.forEach(keys, runAction, function (err) {\n      return err ? callback(err) : callback();\n    });\n  }\n\n  keys.forEach(function (name) {\n    if (typeof response === 'undefined') {\n      var store = self.stores[name];\n\n      if (destructive && store.readOnly) {\n        return;\n      }\n\n      response = store[action].apply(store, args);\n\n      // Merge objects if necessary\n      if (response && action === 'get' && typeof response === 'object' && !Array.isArray(response)) {\n        mergeObjs.push(response);\n        response = undefined;\n      }\n    }\n  });\n\n  if (mergeObjs.length) {\n    response = common.merge(mergeObjs.reverse());\n  }\n\n  return response;\n}\n\n//\n// Throw the `err` if a callback is not supplied\n//\nfunction onError(err, callback) {\n  if (callback) {\n    return callback(err);\n  }\n\n  throw err;\n}\n", "{\n  \"name\": \"nconf\",\n  \"description\": \"Hierarchical node.js configuration with files, environment variables, command-line arguments, and atomic object merging.\",\n  \"version\": \"0.12.1\",\n  \"author\": \"Charlie Robbins <charlie.robbins@gmail.com>\",\n  \"contributors\": [\n    \"Matt Hamann <matthew.hamann@gmail.com>\",\n    \"Maciej Ma\u0142ecki <me@mmalecki.com>\",\n    \"Jarrett Cruger <jcrugzz@gmail.com>\",\n    \"Adrien Becchis\"\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"http://github.com/flatiron/nconf.git\"\n  },\n  \"keywords\": [\n    \"configuration\",\n    \"key value store\",\n    \"plugabble\"\n  ],\n  \"dependencies\": {\n    \"async\": \"^3.0.0\",\n    \"ini\": \"^2.0.0\",\n    \"secure-keys\": \"^1.0.0\",\n    \"yargs\": \"^16.1.1\"\n  },\n  \"devDependencies\": {\n    \"@release-it/conventional-changelog\": \"^7.0.2\",\n    \"coveralls\": \"^3.1.0\",\n    \"eslint\": \"^7.0.0\",\n    \"nconf-yaml\": \"^1.0.2\",\n    \"nyc\": \"^15.1.0\",\n    \"release-it\": \"^16.2.1\",\n    \"vows\": \"^0.8.3\"\n  },\n  \"main\": \"./lib/nconf\",\n  \"scripts\": {\n    \"test\": \"vows test/*-test.js test/**/*-test.js --spec\",\n    \"cover\": \"nyc --reporter=lcov npm test\",\n    \"coveralls\": \"cat coverage/lcov.info | coveralls\",\n    \"lint\": \"eslint .\",\n    \"release\": \"release-it\"\n  },\n  \"engines\": {\n    \"node\": \">= 0.4.0\"\n  },\n  \"license\": \"MIT\"\n}\n", "'use strict';\n\nvar fs = require('fs');\nvar util = require('util');\nvar path = require('path');\n\nlet shim;\nclass Y18N {\n    constructor(opts) {\n        // configurable options.\n        opts = opts || {};\n        this.directory = opts.directory || './locales';\n        this.updateFiles = typeof opts.updateFiles === 'boolean' ? opts.updateFiles : true;\n        this.locale = opts.locale || 'en';\n        this.fallbackToLanguage = typeof opts.fallbackToLanguage === 'boolean' ? opts.fallbackToLanguage : true;\n        // internal stuff.\n        this.cache = Object.create(null);\n        this.writeQueue = [];\n    }\n    __(...args) {\n        if (typeof arguments[0] !== 'string') {\n            return this._taggedLiteral(arguments[0], ...arguments);\n        }\n        const str = args.shift();\n        let cb = function () { }; // start with noop.\n        if (typeof args[args.length - 1] === 'function')\n            cb = args.pop();\n        cb = cb || function () { }; // noop.\n        if (!this.cache[this.locale])\n            this._readLocaleFile();\n        // we've observed a new string, update the language file.\n        if (!this.cache[this.locale][str] && this.updateFiles) {\n            this.cache[this.locale][str] = str;\n            // include the current directory and locale,\n            // since these values could change before the\n            // write is performed.\n            this._enqueueWrite({\n                directory: this.directory,\n                locale: this.locale,\n                cb\n            });\n        }\n        else {\n            cb();\n        }\n        return shim.format.apply(shim.format, [this.cache[this.locale][str] || str].concat(args));\n    }\n    __n() {\n        const args = Array.prototype.slice.call(arguments);\n        const singular = args.shift();\n        const plural = args.shift();\n        const quantity = args.shift();\n        let cb = function () { }; // start with noop.\n        if (typeof args[args.length - 1] === 'function')\n            cb = args.pop();\n        if (!this.cache[this.locale])\n            this._readLocaleFile();\n        let str = quantity === 1 ? singular : plural;\n        if (this.cache[this.locale][singular]) {\n            const entry = this.cache[this.locale][singular];\n            str = entry[quantity === 1 ? 'one' : 'other'];\n        }\n        // we've observed a new string, update the language file.\n        if (!this.cache[this.locale][singular] && this.updateFiles) {\n            this.cache[this.locale][singular] = {\n                one: singular,\n                other: plural\n            };\n            // include the current directory and locale,\n            // since these values could change before the\n            // write is performed.\n            this._enqueueWrite({\n                directory: this.directory,\n                locale: this.locale,\n                cb\n            });\n        }\n        else {\n            cb();\n        }\n        // if a %d placeholder is provided, add quantity\n        // to the arguments expanded by util.format.\n        const values = [str];\n        if (~str.indexOf('%d'))\n            values.push(quantity);\n        return shim.format.apply(shim.format, values.concat(args));\n    }\n    setLocale(locale) {\n        this.locale = locale;\n    }\n    getLocale() {\n        return this.locale;\n    }\n    updateLocale(obj) {\n        if (!this.cache[this.locale])\n            this._readLocaleFile();\n        for (const key in obj) {\n            if (Object.prototype.hasOwnProperty.call(obj, key)) {\n                this.cache[this.locale][key] = obj[key];\n            }\n        }\n    }\n    _taggedLiteral(parts, ...args) {\n        let str = '';\n        parts.forEach(function (part, i) {\n            const arg = args[i + 1];\n            str += part;\n            if (typeof arg !== 'undefined') {\n                str += '%s';\n            }\n        });\n        return this.__.apply(this, [str].concat([].slice.call(args, 1)));\n    }\n    _enqueueWrite(work) {\n        this.writeQueue.push(work);\n        if (this.writeQueue.length === 1)\n            this._processWriteQueue();\n    }\n    _processWriteQueue() {\n        const _this = this;\n        const work = this.writeQueue[0];\n        // destructure the enqueued work.\n        const directory = work.directory;\n        const locale = work.locale;\n        const cb = work.cb;\n        const languageFile = this._resolveLocaleFile(directory, locale);\n        const serializedLocale = JSON.stringify(this.cache[locale], null, 2);\n        shim.fs.writeFile(languageFile, serializedLocale, 'utf-8', function (err) {\n            _this.writeQueue.shift();\n            if (_this.writeQueue.length > 0)\n                _this._processWriteQueue();\n            cb(err);\n        });\n    }\n    _readLocaleFile() {\n        let localeLookup = {};\n        const languageFile = this._resolveLocaleFile(this.directory, this.locale);\n        try {\n            // When using a bundler such as webpack, readFileSync may not be defined:\n            if (shim.fs.readFileSync) {\n                localeLookup = JSON.parse(shim.fs.readFileSync(languageFile, 'utf-8'));\n            }\n        }\n        catch (err) {\n            if (err instanceof SyntaxError) {\n                err.message = 'syntax error in ' + languageFile;\n            }\n            if (err.code === 'ENOENT')\n                localeLookup = {};\n            else\n                throw err;\n        }\n        this.cache[this.locale] = localeLookup;\n    }\n    _resolveLocaleFile(directory, locale) {\n        let file = shim.resolve(directory, './', locale + '.json');\n        if (this.fallbackToLanguage && !this._fileExistsSync(file) && ~locale.lastIndexOf('_')) {\n            // attempt fallback to language only\n            const languageFile = shim.resolve(directory, './', locale.split('_')[0] + '.json');\n            if (this._fileExistsSync(languageFile))\n                file = languageFile;\n        }\n        return file;\n    }\n    _fileExistsSync(file) {\n        return shim.exists(file);\n    }\n}\nfunction y18n$1(opts, _shim) {\n    shim = _shim;\n    const y18n = new Y18N(opts);\n    return {\n        __: y18n.__.bind(y18n),\n        __n: y18n.__n.bind(y18n),\n        setLocale: y18n.setLocale.bind(y18n),\n        getLocale: y18n.getLocale.bind(y18n),\n        updateLocale: y18n.updateLocale.bind(y18n),\n        locale: y18n.locale\n    };\n}\n\nvar nodePlatformShim = {\n    fs: {\n        readFileSync: fs.readFileSync,\n        writeFile: fs.writeFile\n    },\n    format: util.format,\n    resolve: path.resolve,\n    exists: (file) => {\n        try {\n            return fs.statSync(file).isFile();\n        }\n        catch (err) {\n            return false;\n        }\n    }\n};\n\nconst y18n = (opts) => {\n    return y18n$1(opts, nodePlatformShim);\n};\n\nmodule.exports = y18n;\n", "'use strict';\n\nvar util = require('util');\nvar fs = require('fs');\nvar path = require('path');\n\nfunction camelCase(str) {\n    const isCamelCase = str !== str.toLowerCase() && str !== str.toUpperCase();\n    if (!isCamelCase) {\n        str = str.toLowerCase();\n    }\n    if (str.indexOf('-') === -1 && str.indexOf('_') === -1) {\n        return str;\n    }\n    else {\n        let camelcase = '';\n        let nextChrUpper = false;\n        const leadingHyphens = str.match(/^-+/);\n        for (let i = leadingHyphens ? leadingHyphens[0].length : 0; i < str.length; i++) {\n            let chr = str.charAt(i);\n            if (nextChrUpper) {\n                nextChrUpper = false;\n                chr = chr.toUpperCase();\n            }\n            if (i !== 0 && (chr === '-' || chr === '_')) {\n                nextChrUpper = true;\n            }\n            else if (chr !== '-' && chr !== '_') {\n                camelcase += chr;\n            }\n        }\n        return camelcase;\n    }\n}\nfunction decamelize(str, joinString) {\n    const lowercase = str.toLowerCase();\n    joinString = joinString || '-';\n    let notCamelcase = '';\n    for (let i = 0; i < str.length; i++) {\n        const chrLower = lowercase.charAt(i);\n        const chrString = str.charAt(i);\n        if (chrLower !== chrString && i > 0) {\n            notCamelcase += `${joinString}${lowercase.charAt(i)}`;\n        }\n        else {\n            notCamelcase += chrString;\n        }\n    }\n    return notCamelcase;\n}\nfunction looksLikeNumber(x) {\n    if (x === null || x === undefined)\n        return false;\n    if (typeof x === 'number')\n        return true;\n    if (/^0x[0-9a-f]+$/i.test(x))\n        return true;\n    if (/^0[^.]/.test(x))\n        return false;\n    return /^[-]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(e[-+]?\\d+)?$/.test(x);\n}\n\nfunction tokenizeArgString(argString) {\n    if (Array.isArray(argString)) {\n        return argString.map(e => typeof e !== 'string' ? e + '' : e);\n    }\n    argString = argString.trim();\n    let i = 0;\n    let prevC = null;\n    let c = null;\n    let opening = null;\n    const args = [];\n    for (let ii = 0; ii < argString.length; ii++) {\n        prevC = c;\n        c = argString.charAt(ii);\n        if (c === ' ' && !opening) {\n            if (!(prevC === ' ')) {\n                i++;\n            }\n            continue;\n        }\n        if (c === opening) {\n            opening = null;\n        }\n        else if ((c === \"'\" || c === '\"') && !opening) {\n            opening = c;\n        }\n        if (!args[i])\n            args[i] = '';\n        args[i] += c;\n    }\n    return args;\n}\n\nvar DefaultValuesForTypeKey;\n(function (DefaultValuesForTypeKey) {\n    DefaultValuesForTypeKey[\"BOOLEAN\"] = \"boolean\";\n    DefaultValuesForTypeKey[\"STRING\"] = \"string\";\n    DefaultValuesForTypeKey[\"NUMBER\"] = \"number\";\n    DefaultValuesForTypeKey[\"ARRAY\"] = \"array\";\n})(DefaultValuesForTypeKey || (DefaultValuesForTypeKey = {}));\n\nlet mixin;\nclass YargsParser {\n    constructor(_mixin) {\n        mixin = _mixin;\n    }\n    parse(argsInput, options) {\n        const opts = Object.assign({\n            alias: undefined,\n            array: undefined,\n            boolean: undefined,\n            config: undefined,\n            configObjects: undefined,\n            configuration: undefined,\n            coerce: undefined,\n            count: undefined,\n            default: undefined,\n            envPrefix: undefined,\n            narg: undefined,\n            normalize: undefined,\n            string: undefined,\n            number: undefined,\n            __: undefined,\n            key: undefined\n        }, options);\n        const args = tokenizeArgString(argsInput);\n        const aliases = combineAliases(Object.assign(Object.create(null), opts.alias));\n        const configuration = Object.assign({\n            'boolean-negation': true,\n            'camel-case-expansion': true,\n            'combine-arrays': false,\n            'dot-notation': true,\n            'duplicate-arguments-array': true,\n            'flatten-duplicate-arrays': true,\n            'greedy-arrays': true,\n            'halt-at-non-option': false,\n            'nargs-eats-options': false,\n            'negation-prefix': 'no-',\n            'parse-numbers': true,\n            'parse-positional-numbers': true,\n            'populate--': false,\n            'set-placeholder-key': false,\n            'short-option-groups': true,\n            'strip-aliased': false,\n            'strip-dashed': false,\n            'unknown-options-as-args': false\n        }, opts.configuration);\n        const defaults = Object.assign(Object.create(null), opts.default);\n        const configObjects = opts.configObjects || [];\n        const envPrefix = opts.envPrefix;\n        const notFlagsOption = configuration['populate--'];\n        const notFlagsArgv = notFlagsOption ? '--' : '_';\n        const newAliases = Object.create(null);\n        const defaulted = Object.create(null);\n        const __ = opts.__ || mixin.format;\n        const flags = {\n            aliases: Object.create(null),\n            arrays: Object.create(null),\n            bools: Object.create(null),\n            strings: Object.create(null),\n            numbers: Object.create(null),\n            counts: Object.create(null),\n            normalize: Object.create(null),\n            configs: Object.create(null),\n            nargs: Object.create(null),\n            coercions: Object.create(null),\n            keys: []\n        };\n        const negative = /^-([0-9]+(\\.[0-9]+)?|\\.[0-9]+)$/;\n        const negatedBoolean = new RegExp('^--' + configuration['negation-prefix'] + '(.+)');\n        [].concat(opts.array || []).filter(Boolean).forEach(function (opt) {\n            const key = typeof opt === 'object' ? opt.key : opt;\n            const assignment = Object.keys(opt).map(function (key) {\n                const arrayFlagKeys = {\n                    boolean: 'bools',\n                    string: 'strings',\n                    number: 'numbers'\n                };\n                return arrayFlagKeys[key];\n            }).filter(Boolean).pop();\n            if (assignment) {\n                flags[assignment][key] = true;\n            }\n            flags.arrays[key] = true;\n            flags.keys.push(key);\n        });\n        [].concat(opts.boolean || []).filter(Boolean).forEach(function (key) {\n            flags.bools[key] = true;\n            flags.keys.push(key);\n        });\n        [].concat(opts.string || []).filter(Boolean).forEach(function (key) {\n            flags.strings[key] = true;\n            flags.keys.push(key);\n        });\n        [].concat(opts.number || []).filter(Boolean).forEach(function (key) {\n            flags.numbers[key] = true;\n            flags.keys.push(key);\n        });\n        [].concat(opts.count || []).filter(Boolean).forEach(function (key) {\n            flags.counts[key] = true;\n            flags.keys.push(key);\n        });\n        [].concat(opts.normalize || []).filter(Boolean).forEach(function (key) {\n            flags.normalize[key] = true;\n            flags.keys.push(key);\n        });\n        if (typeof opts.narg === 'object') {\n            Object.entries(opts.narg).forEach(([key, value]) => {\n                if (typeof value === 'number') {\n                    flags.nargs[key] = value;\n                    flags.keys.push(key);\n                }\n            });\n        }\n        if (typeof opts.coerce === 'object') {\n            Object.entries(opts.coerce).forEach(([key, value]) => {\n                if (typeof value === 'function') {\n                    flags.coercions[key] = value;\n                    flags.keys.push(key);\n                }\n            });\n        }\n        if (typeof opts.config !== 'undefined') {\n            if (Array.isArray(opts.config) || typeof opts.config === 'string') {\n                [].concat(opts.config).filter(Boolean).forEach(function (key) {\n                    flags.configs[key] = true;\n                });\n            }\n            else if (typeof opts.config === 'object') {\n                Object.entries(opts.config).forEach(([key, value]) => {\n                    if (typeof value === 'boolean' || typeof value === 'function') {\n                        flags.configs[key] = value;\n                    }\n                });\n            }\n        }\n        extendAliases(opts.key, aliases, opts.default, flags.arrays);\n        Object.keys(defaults).forEach(function (key) {\n            (flags.aliases[key] || []).forEach(function (alias) {\n                defaults[alias] = defaults[key];\n            });\n        });\n        let error = null;\n        checkConfiguration();\n        let notFlags = [];\n        const argv = Object.assign(Object.create(null), { _: [] });\n        const argvReturn = {};\n        for (let i = 0; i < args.length; i++) {\n            const arg = args[i];\n            const truncatedArg = arg.replace(/^-{3,}/, '---');\n            let broken;\n            let key;\n            let letters;\n            let m;\n            let next;\n            let value;\n            if (arg !== '--' && isUnknownOptionAsArg(arg)) {\n                pushPositional(arg);\n            }\n            else if (truncatedArg.match(/---+(=|$)/)) {\n                pushPositional(arg);\n                continue;\n            }\n            else if (arg.match(/^--.+=/) || (!configuration['short-option-groups'] && arg.match(/^-.+=/))) {\n                m = arg.match(/^--?([^=]+)=([\\s\\S]*)$/);\n                if (m !== null && Array.isArray(m) && m.length >= 3) {\n                    if (checkAllAliases(m[1], flags.arrays)) {\n                        i = eatArray(i, m[1], args, m[2]);\n                    }\n                    else if (checkAllAliases(m[1], flags.nargs) !== false) {\n                        i = eatNargs(i, m[1], args, m[2]);\n                    }\n                    else {\n                        setArg(m[1], m[2]);\n                    }\n                }\n            }\n            else if (arg.match(negatedBoolean) && configuration['boolean-negation']) {\n                m = arg.match(negatedBoolean);\n                if (m !== null && Array.isArray(m) && m.length >= 2) {\n                    key = m[1];\n                    setArg(key, checkAllAliases(key, flags.arrays) ? [false] : false);\n                }\n            }\n            else if (arg.match(/^--.+/) || (!configuration['short-option-groups'] && arg.match(/^-[^-]+/))) {\n                m = arg.match(/^--?(.+)/);\n                if (m !== null && Array.isArray(m) && m.length >= 2) {\n                    key = m[1];\n                    if (checkAllAliases(key, flags.arrays)) {\n                        i = eatArray(i, key, args);\n                    }\n                    else if (checkAllAliases(key, flags.nargs) !== false) {\n                        i = eatNargs(i, key, args);\n                    }\n                    else {\n                        next = args[i + 1];\n                        if (next !== undefined && (!next.match(/^-/) ||\n                            next.match(negative)) &&\n                            !checkAllAliases(key, flags.bools) &&\n                            !checkAllAliases(key, flags.counts)) {\n                            setArg(key, next);\n                            i++;\n                        }\n                        else if (/^(true|false)$/.test(next)) {\n                            setArg(key, next);\n                            i++;\n                        }\n                        else {\n                            setArg(key, defaultValue(key));\n                        }\n                    }\n                }\n            }\n            else if (arg.match(/^-.\\..+=/)) {\n                m = arg.match(/^-([^=]+)=([\\s\\S]*)$/);\n                if (m !== null && Array.isArray(m) && m.length >= 3) {\n                    setArg(m[1], m[2]);\n                }\n            }\n            else if (arg.match(/^-.\\..+/) && !arg.match(negative)) {\n                next = args[i + 1];\n                m = arg.match(/^-(.\\..+)/);\n                if (m !== null && Array.isArray(m) && m.length >= 2) {\n                    key = m[1];\n                    if (next !== undefined && !next.match(/^-/) &&\n                        !checkAllAliases(key, flags.bools) &&\n                        !checkAllAliases(key, flags.counts)) {\n                        setArg(key, next);\n                        i++;\n                    }\n                    else {\n                        setArg(key, defaultValue(key));\n                    }\n                }\n            }\n            else if (arg.match(/^-[^-]+/) && !arg.match(negative)) {\n                letters = arg.slice(1, -1).split('');\n                broken = false;\n                for (let j = 0; j < letters.length; j++) {\n                    next = arg.slice(j + 2);\n                    if (letters[j + 1] && letters[j + 1] === '=') {\n                        value = arg.slice(j + 3);\n                        key = letters[j];\n                        if (checkAllAliases(key, flags.arrays)) {\n                            i = eatArray(i, key, args, value);\n                        }\n                        else if (checkAllAliases(key, flags.nargs) !== false) {\n                            i = eatNargs(i, key, args, value);\n                        }\n                        else {\n                            setArg(key, value);\n                        }\n                        broken = true;\n                        break;\n                    }\n                    if (next === '-') {\n                        setArg(letters[j], next);\n                        continue;\n                    }\n                    if (/[A-Za-z]/.test(letters[j]) &&\n                        /^-?\\d+(\\.\\d*)?(e-?\\d+)?$/.test(next) &&\n                        checkAllAliases(next, flags.bools) === false) {\n                        setArg(letters[j], next);\n                        broken = true;\n                        break;\n                    }\n                    if (letters[j + 1] && letters[j + 1].match(/\\W/)) {\n                        setArg(letters[j], next);\n                        broken = true;\n                        break;\n                    }\n                    else {\n                        setArg(letters[j], defaultValue(letters[j]));\n                    }\n                }\n                key = arg.slice(-1)[0];\n                if (!broken && key !== '-') {\n                    if (checkAllAliases(key, flags.arrays)) {\n                        i = eatArray(i, key, args);\n                    }\n                    else if (checkAllAliases(key, flags.nargs) !== false) {\n                        i = eatNargs(i, key, args);\n                    }\n                    else {\n                        next = args[i + 1];\n                        if (next !== undefined && (!/^(-|--)[^-]/.test(next) ||\n                            next.match(negative)) &&\n                            !checkAllAliases(key, flags.bools) &&\n                            !checkAllAliases(key, flags.counts)) {\n                            setArg(key, next);\n                            i++;\n                        }\n                        else if (/^(true|false)$/.test(next)) {\n                            setArg(key, next);\n                            i++;\n                        }\n                        else {\n                            setArg(key, defaultValue(key));\n                        }\n                    }\n                }\n            }\n            else if (arg.match(/^-[0-9]$/) &&\n                arg.match(negative) &&\n                checkAllAliases(arg.slice(1), flags.bools)) {\n                key = arg.slice(1);\n                setArg(key, defaultValue(key));\n            }\n            else if (arg === '--') {\n                notFlags = args.slice(i + 1);\n                break;\n            }\n            else if (configuration['halt-at-non-option']) {\n                notFlags = args.slice(i);\n                break;\n            }\n            else {\n                pushPositional(arg);\n            }\n        }\n        applyEnvVars(argv, true);\n        applyEnvVars(argv, false);\n        setConfig(argv);\n        setConfigObjects();\n        applyDefaultsAndAliases(argv, flags.aliases, defaults, true);\n        applyCoercions(argv);\n        if (configuration['set-placeholder-key'])\n            setPlaceholderKeys(argv);\n        Object.keys(flags.counts).forEach(function (key) {\n            if (!hasKey(argv, key.split('.')))\n                setArg(key, 0);\n        });\n        if (notFlagsOption && notFlags.length)\n            argv[notFlagsArgv] = [];\n        notFlags.forEach(function (key) {\n            argv[notFlagsArgv].push(key);\n        });\n        if (configuration['camel-case-expansion'] && configuration['strip-dashed']) {\n            Object.keys(argv).filter(key => key !== '--' && key.includes('-')).forEach(key => {\n                delete argv[key];\n            });\n        }\n        if (configuration['strip-aliased']) {\n            [].concat(...Object.keys(aliases).map(k => aliases[k])).forEach(alias => {\n                if (configuration['camel-case-expansion'] && alias.includes('-')) {\n                    delete argv[alias.split('.').map(prop => camelCase(prop)).join('.')];\n                }\n                delete argv[alias];\n            });\n        }\n        function pushPositional(arg) {\n            const maybeCoercedNumber = maybeCoerceNumber('_', arg);\n            if (typeof maybeCoercedNumber === 'string' || typeof maybeCoercedNumber === 'number') {\n                argv._.push(maybeCoercedNumber);\n            }\n        }\n        function eatNargs(i, key, args, argAfterEqualSign) {\n            let ii;\n            let toEat = checkAllAliases(key, flags.nargs);\n            toEat = typeof toEat !== 'number' || isNaN(toEat) ? 1 : toEat;\n            if (toEat === 0) {\n                if (!isUndefined(argAfterEqualSign)) {\n                    error = Error(__('Argument unexpected for: %s', key));\n                }\n                setArg(key, defaultValue(key));\n                return i;\n            }\n            let available = isUndefined(argAfterEqualSign) ? 0 : 1;\n            if (configuration['nargs-eats-options']) {\n                if (args.length - (i + 1) + available < toEat) {\n                    error = Error(__('Not enough arguments following: %s', key));\n                }\n                available = toEat;\n            }\n            else {\n                for (ii = i + 1; ii < args.length; ii++) {\n                    if (!args[ii].match(/^-[^0-9]/) || args[ii].match(negative) || isUnknownOptionAsArg(args[ii]))\n                        available++;\n                    else\n                        break;\n                }\n                if (available < toEat)\n                    error = Error(__('Not enough arguments following: %s', key));\n            }\n            let consumed = Math.min(available, toEat);\n            if (!isUndefined(argAfterEqualSign) && consumed > 0) {\n                setArg(key, argAfterEqualSign);\n                consumed--;\n            }\n            for (ii = i + 1; ii < (consumed + i + 1); ii++) {\n                setArg(key, args[ii]);\n            }\n            return (i + consumed);\n        }\n        function eatArray(i, key, args, argAfterEqualSign) {\n            let argsToSet = [];\n            let next = argAfterEqualSign || args[i + 1];\n            const nargsCount = checkAllAliases(key, flags.nargs);\n            if (checkAllAliases(key, flags.bools) && !(/^(true|false)$/.test(next))) {\n                argsToSet.push(true);\n            }\n            else if (isUndefined(next) ||\n                (isUndefined(argAfterEqualSign) && /^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next))) {\n                if (defaults[key] !== undefined) {\n                    const defVal = defaults[key];\n                    argsToSet = Array.isArray(defVal) ? defVal : [defVal];\n                }\n            }\n            else {\n                if (!isUndefined(argAfterEqualSign)) {\n                    argsToSet.push(processValue(key, argAfterEqualSign));\n                }\n                for (let ii = i + 1; ii < args.length; ii++) {\n                    if ((!configuration['greedy-arrays'] && argsToSet.length > 0) ||\n                        (nargsCount && typeof nargsCount === 'number' && argsToSet.length >= nargsCount))\n                        break;\n                    next = args[ii];\n                    if (/^-/.test(next) && !negative.test(next) && !isUnknownOptionAsArg(next))\n                        break;\n                    i = ii;\n                    argsToSet.push(processValue(key, next));\n                }\n            }\n            if (typeof nargsCount === 'number' && ((nargsCount && argsToSet.length < nargsCount) ||\n                (isNaN(nargsCount) && argsToSet.length === 0))) {\n                error = Error(__('Not enough arguments following: %s', key));\n            }\n            setArg(key, argsToSet);\n            return i;\n        }\n        function setArg(key, val) {\n            if (/-/.test(key) && configuration['camel-case-expansion']) {\n                const alias = key.split('.').map(function (prop) {\n                    return camelCase(prop);\n                }).join('.');\n                addNewAlias(key, alias);\n            }\n            const value = processValue(key, val);\n            const splitKey = key.split('.');\n            setKey(argv, splitKey, value);\n            if (flags.aliases[key]) {\n                flags.aliases[key].forEach(function (x) {\n                    const keyProperties = x.split('.');\n                    setKey(argv, keyProperties, value);\n                });\n            }\n            if (splitKey.length > 1 && configuration['dot-notation']) {\n                (flags.aliases[splitKey[0]] || []).forEach(function (x) {\n                    let keyProperties = x.split('.');\n                    const a = [].concat(splitKey);\n                    a.shift();\n                    keyProperties = keyProperties.concat(a);\n                    if (!(flags.aliases[key] || []).includes(keyProperties.join('.'))) {\n                        setKey(argv, keyProperties, value);\n                    }\n                });\n            }\n            if (checkAllAliases(key, flags.normalize) && !checkAllAliases(key, flags.arrays)) {\n                const keys = [key].concat(flags.aliases[key] || []);\n                keys.forEach(function (key) {\n                    Object.defineProperty(argvReturn, key, {\n                        enumerable: true,\n                        get() {\n                            return val;\n                        },\n                        set(value) {\n                            val = typeof value === 'string' ? mixin.normalize(value) : value;\n                        }\n                    });\n                });\n            }\n        }\n        function addNewAlias(key, alias) {\n            if (!(flags.aliases[key] && flags.aliases[key].length)) {\n                flags.aliases[key] = [alias];\n                newAliases[alias] = true;\n            }\n            if (!(flags.aliases[alias] && flags.aliases[alias].length)) {\n                addNewAlias(alias, key);\n            }\n        }\n        function processValue(key, val) {\n            if (typeof val === 'string' &&\n                (val[0] === \"'\" || val[0] === '\"') &&\n                val[val.length - 1] === val[0]) {\n                val = val.substring(1, val.length - 1);\n            }\n            if (checkAllAliases(key, flags.bools) || checkAllAliases(key, flags.counts)) {\n                if (typeof val === 'string')\n                    val = val === 'true';\n            }\n            let value = Array.isArray(val)\n                ? val.map(function (v) { return maybeCoerceNumber(key, v); })\n                : maybeCoerceNumber(key, val);\n            if (checkAllAliases(key, flags.counts) && (isUndefined(value) || typeof value === 'boolean')) {\n                value = increment();\n            }\n            if (checkAllAliases(key, flags.normalize) && checkAllAliases(key, flags.arrays)) {\n                if (Array.isArray(val))\n                    value = val.map((val) => { return mixin.normalize(val); });\n                else\n                    value = mixin.normalize(val);\n            }\n            return value;\n        }\n        function maybeCoerceNumber(key, value) {\n            if (!configuration['parse-positional-numbers'] && key === '_')\n                return value;\n            if (!checkAllAliases(key, flags.strings) && !checkAllAliases(key, flags.bools) && !Array.isArray(value)) {\n                const shouldCoerceNumber = looksLikeNumber(value) && configuration['parse-numbers'] && (Number.isSafeInteger(Math.floor(parseFloat(`${value}`))));\n                if (shouldCoerceNumber || (!isUndefined(value) && checkAllAliases(key, flags.numbers))) {\n                    value = Number(value);\n                }\n            }\n            return value;\n        }\n        function setConfig(argv) {\n            const configLookup = Object.create(null);\n            applyDefaultsAndAliases(configLookup, flags.aliases, defaults);\n            Object.keys(flags.configs).forEach(function (configKey) {\n                const configPath = argv[configKey] || configLookup[configKey];\n                if (configPath) {\n                    try {\n                        let config = null;\n                        const resolvedConfigPath = mixin.resolve(mixin.cwd(), configPath);\n                        const resolveConfig = flags.configs[configKey];\n                        if (typeof resolveConfig === 'function') {\n                            try {\n                                config = resolveConfig(resolvedConfigPath);\n                            }\n                            catch (e) {\n                                config = e;\n                            }\n                            if (config instanceof Error) {\n                                error = config;\n                                return;\n                            }\n                        }\n                        else {\n                            config = mixin.require(resolvedConfigPath);\n                        }\n                        setConfigObject(config);\n                    }\n                    catch (ex) {\n                        if (ex.name === 'PermissionDenied')\n                            error = ex;\n                        else if (argv[configKey])\n                            error = Error(__('Invalid JSON config file: %s', configPath));\n                    }\n                }\n            });\n        }\n        function setConfigObject(config, prev) {\n            Object.keys(config).forEach(function (key) {\n                const value = config[key];\n                const fullKey = prev ? prev + '.' + key : key;\n                if (typeof value === 'object' && value !== null && !Array.isArray(value) && configuration['dot-notation']) {\n                    setConfigObject(value, fullKey);\n                }\n                else {\n                    if (!hasKey(argv, fullKey.split('.')) || (checkAllAliases(fullKey, flags.arrays) && configuration['combine-arrays'])) {\n                        setArg(fullKey, value);\n                    }\n                }\n            });\n        }\n        function setConfigObjects() {\n            if (typeof configObjects !== 'undefined') {\n                configObjects.forEach(function (configObject) {\n                    setConfigObject(configObject);\n                });\n            }\n        }\n        function applyEnvVars(argv, configOnly) {\n            if (typeof envPrefix === 'undefined')\n                return;\n            const prefix = typeof envPrefix === 'string' ? envPrefix : '';\n            const env = mixin.env();\n            Object.keys(env).forEach(function (envVar) {\n                if (prefix === '' || envVar.lastIndexOf(prefix, 0) === 0) {\n                    const keys = envVar.split('__').map(function (key, i) {\n                        if (i === 0) {\n                            key = key.substring(prefix.length);\n                        }\n                        return camelCase(key);\n                    });\n                    if (((configOnly && flags.configs[keys.join('.')]) || !configOnly) && !hasKey(argv, keys)) {\n                        setArg(keys.join('.'), env[envVar]);\n                    }\n                }\n            });\n        }\n        function applyCoercions(argv) {\n            let coerce;\n            const applied = new Set();\n            Object.keys(argv).forEach(function (key) {\n                if (!applied.has(key)) {\n                    coerce = checkAllAliases(key, flags.coercions);\n                    if (typeof coerce === 'function') {\n                        try {\n                            const value = maybeCoerceNumber(key, coerce(argv[key]));\n                            ([].concat(flags.aliases[key] || [], key)).forEach(ali => {\n                                applied.add(ali);\n                                argv[ali] = value;\n                            });\n                        }\n                        catch (err) {\n                            error = err;\n                        }\n                    }\n                }\n            });\n        }\n        function setPlaceholderKeys(argv) {\n            flags.keys.forEach((key) => {\n                if (~key.indexOf('.'))\n                    return;\n                if (typeof argv[key] === 'undefined')\n                    argv[key] = undefined;\n            });\n            return argv;\n        }\n        function applyDefaultsAndAliases(obj, aliases, defaults, canLog = false) {\n            Object.keys(defaults).forEach(function (key) {\n                if (!hasKey(obj, key.split('.'))) {\n                    setKey(obj, key.split('.'), defaults[key]);\n                    if (canLog)\n                        defaulted[key] = true;\n                    (aliases[key] || []).forEach(function (x) {\n                        if (hasKey(obj, x.split('.')))\n                            return;\n                        setKey(obj, x.split('.'), defaults[key]);\n                    });\n                }\n            });\n        }\n        function hasKey(obj, keys) {\n            let o = obj;\n            if (!configuration['dot-notation'])\n                keys = [keys.join('.')];\n            keys.slice(0, -1).forEach(function (key) {\n                o = (o[key] || {});\n            });\n            const key = keys[keys.length - 1];\n            if (typeof o !== 'object')\n                return false;\n            else\n                return key in o;\n        }\n        function setKey(obj, keys, value) {\n            let o = obj;\n            if (!configuration['dot-notation'])\n                keys = [keys.join('.')];\n            keys.slice(0, -1).forEach(function (key) {\n                key = sanitizeKey(key);\n                if (typeof o === 'object' && o[key] === undefined) {\n                    o[key] = {};\n                }\n                if (typeof o[key] !== 'object' || Array.isArray(o[key])) {\n                    if (Array.isArray(o[key])) {\n                        o[key].push({});\n                    }\n                    else {\n                        o[key] = [o[key], {}];\n                    }\n                    o = o[key][o[key].length - 1];\n                }\n                else {\n                    o = o[key];\n                }\n            });\n            const key = sanitizeKey(keys[keys.length - 1]);\n            const isTypeArray = checkAllAliases(keys.join('.'), flags.arrays);\n            const isValueArray = Array.isArray(value);\n            let duplicate = configuration['duplicate-arguments-array'];\n            if (!duplicate && checkAllAliases(key, flags.nargs)) {\n                duplicate = true;\n                if ((!isUndefined(o[key]) && flags.nargs[key] === 1) || (Array.isArray(o[key]) && o[key].length === flags.nargs[key])) {\n                    o[key] = undefined;\n                }\n            }\n            if (value === increment()) {\n                o[key] = increment(o[key]);\n            }\n            else if (Array.isArray(o[key])) {\n                if (duplicate && isTypeArray && isValueArray) {\n                    o[key] = configuration['flatten-duplicate-arrays'] ? o[key].concat(value) : (Array.isArray(o[key][0]) ? o[key] : [o[key]]).concat([value]);\n                }\n                else if (!duplicate && Boolean(isTypeArray) === Boolean(isValueArray)) {\n                    o[key] = value;\n                }\n                else {\n                    o[key] = o[key].concat([value]);\n                }\n            }\n            else if (o[key] === undefined && isTypeArray) {\n                o[key] = isValueArray ? value : [value];\n            }\n            else if (duplicate && !(o[key] === undefined ||\n                checkAllAliases(key, flags.counts) ||\n                checkAllAliases(key, flags.bools))) {\n                o[key] = [o[key], value];\n            }\n            else {\n                o[key] = value;\n            }\n        }\n        function extendAliases(...args) {\n            args.forEach(function (obj) {\n                Object.keys(obj || {}).forEach(function (key) {\n                    if (flags.aliases[key])\n                        return;\n                    flags.aliases[key] = [].concat(aliases[key] || []);\n                    flags.aliases[key].concat(key).forEach(function (x) {\n                        if (/-/.test(x) && configuration['camel-case-expansion']) {\n                            const c = camelCase(x);\n                            if (c !== key && flags.aliases[key].indexOf(c) === -1) {\n                                flags.aliases[key].push(c);\n                                newAliases[c] = true;\n                            }\n                        }\n                    });\n                    flags.aliases[key].concat(key).forEach(function (x) {\n                        if (x.length > 1 && /[A-Z]/.test(x) && configuration['camel-case-expansion']) {\n                            const c = decamelize(x, '-');\n                            if (c !== key && flags.aliases[key].indexOf(c) === -1) {\n                                flags.aliases[key].push(c);\n                                newAliases[c] = true;\n                            }\n                        }\n                    });\n                    flags.aliases[key].forEach(function (x) {\n                        flags.aliases[x] = [key].concat(flags.aliases[key].filter(function (y) {\n                            return x !== y;\n                        }));\n                    });\n                });\n            });\n        }\n        function checkAllAliases(key, flag) {\n            const toCheck = [].concat(flags.aliases[key] || [], key);\n            const keys = Object.keys(flag);\n            const setAlias = toCheck.find(key => keys.includes(key));\n            return setAlias ? flag[setAlias] : false;\n        }\n        function hasAnyFlag(key) {\n            const flagsKeys = Object.keys(flags);\n            const toCheck = [].concat(flagsKeys.map(k => flags[k]));\n            return toCheck.some(function (flag) {\n                return Array.isArray(flag) ? flag.includes(key) : flag[key];\n            });\n        }\n        function hasFlagsMatching(arg, ...patterns) {\n            const toCheck = [].concat(...patterns);\n            return toCheck.some(function (pattern) {\n                const match = arg.match(pattern);\n                return match && hasAnyFlag(match[1]);\n            });\n        }\n        function hasAllShortFlags(arg) {\n            if (arg.match(negative) || !arg.match(/^-[^-]+/)) {\n                return false;\n            }\n            let hasAllFlags = true;\n            let next;\n            const letters = arg.slice(1).split('');\n            for (let j = 0; j < letters.length; j++) {\n                next = arg.slice(j + 2);\n                if (!hasAnyFlag(letters[j])) {\n                    hasAllFlags = false;\n                    break;\n                }\n                if ((letters[j + 1] && letters[j + 1] === '=') ||\n                    next === '-' ||\n                    (/[A-Za-z]/.test(letters[j]) && /^-?\\d+(\\.\\d*)?(e-?\\d+)?$/.test(next)) ||\n                    (letters[j + 1] && letters[j + 1].match(/\\W/))) {\n                    break;\n                }\n            }\n            return hasAllFlags;\n        }\n        function isUnknownOptionAsArg(arg) {\n            return configuration['unknown-options-as-args'] && isUnknownOption(arg);\n        }\n        function isUnknownOption(arg) {\n            arg = arg.replace(/^-{3,}/, '--');\n            if (arg.match(negative)) {\n                return false;\n            }\n            if (hasAllShortFlags(arg)) {\n                return false;\n            }\n            const flagWithEquals = /^-+([^=]+?)=[\\s\\S]*$/;\n            const normalFlag = /^-+([^=]+?)$/;\n            const flagEndingInHyphen = /^-+([^=]+?)-$/;\n            const flagEndingInDigits = /^-+([^=]+?\\d+)$/;\n            const flagEndingInNonWordCharacters = /^-+([^=]+?)\\W+.*$/;\n            return !hasFlagsMatching(arg, flagWithEquals, negatedBoolean, normalFlag, flagEndingInHyphen, flagEndingInDigits, flagEndingInNonWordCharacters);\n        }\n        function defaultValue(key) {\n            if (!checkAllAliases(key, flags.bools) &&\n                !checkAllAliases(key, flags.counts) &&\n                `${key}` in defaults) {\n                return defaults[key];\n            }\n            else {\n                return defaultForType(guessType(key));\n            }\n        }\n        function defaultForType(type) {\n            const def = {\n                [DefaultValuesForTypeKey.BOOLEAN]: true,\n                [DefaultValuesForTypeKey.STRING]: '',\n                [DefaultValuesForTypeKey.NUMBER]: undefined,\n                [DefaultValuesForTypeKey.ARRAY]: []\n            };\n            return def[type];\n        }\n        function guessType(key) {\n            let type = DefaultValuesForTypeKey.BOOLEAN;\n            if (checkAllAliases(key, flags.strings))\n                type = DefaultValuesForTypeKey.STRING;\n            else if (checkAllAliases(key, flags.numbers))\n                type = DefaultValuesForTypeKey.NUMBER;\n            else if (checkAllAliases(key, flags.bools))\n                type = DefaultValuesForTypeKey.BOOLEAN;\n            else if (checkAllAliases(key, flags.arrays))\n                type = DefaultValuesForTypeKey.ARRAY;\n            return type;\n        }\n        function isUndefined(num) {\n            return num === undefined;\n        }\n        function checkConfiguration() {\n            Object.keys(flags.counts).find(key => {\n                if (checkAllAliases(key, flags.arrays)) {\n                    error = Error(__('Invalid configuration: %s, opts.count excludes opts.array.', key));\n                    return true;\n                }\n                else if (checkAllAliases(key, flags.nargs)) {\n                    error = Error(__('Invalid configuration: %s, opts.count excludes opts.narg.', key));\n                    return true;\n                }\n                return false;\n            });\n        }\n        return {\n            aliases: Object.assign({}, flags.aliases),\n            argv: Object.assign(argvReturn, argv),\n            configuration: configuration,\n            defaulted: Object.assign({}, defaulted),\n            error: error,\n            newAliases: Object.assign({}, newAliases)\n        };\n    }\n}\nfunction combineAliases(aliases) {\n    const aliasArrays = [];\n    const combined = Object.create(null);\n    let change = true;\n    Object.keys(aliases).forEach(function (key) {\n        aliasArrays.push([].concat(aliases[key], key));\n    });\n    while (change) {\n        change = false;\n        for (let i = 0; i < aliasArrays.length; i++) {\n            for (let ii = i + 1; ii < aliasArrays.length; ii++) {\n                const intersect = aliasArrays[i].filter(function (v) {\n                    return aliasArrays[ii].indexOf(v) !== -1;\n                });\n                if (intersect.length) {\n                    aliasArrays[i] = aliasArrays[i].concat(aliasArrays[ii]);\n                    aliasArrays.splice(ii, 1);\n                    change = true;\n                    break;\n                }\n            }\n        }\n    }\n    aliasArrays.forEach(function (aliasArray) {\n        aliasArray = aliasArray.filter(function (v, i, self) {\n            return self.indexOf(v) === i;\n        });\n        const lastAlias = aliasArray.pop();\n        if (lastAlias !== undefined && typeof lastAlias === 'string') {\n            combined[lastAlias] = aliasArray;\n        }\n    });\n    return combined;\n}\nfunction increment(orig) {\n    return orig !== undefined ? orig + 1 : 1;\n}\nfunction sanitizeKey(key) {\n    if (key === '__proto__')\n        return '___proto___';\n    return key;\n}\n\nconst minNodeVersion = (process && process.env && process.env.YARGS_MIN_NODE_VERSION)\n    ? Number(process.env.YARGS_MIN_NODE_VERSION)\n    : 10;\nif (process && process.version) {\n    const major = Number(process.version.match(/v([^.]+)/)[1]);\n    if (major < minNodeVersion) {\n        throw Error(`yargs parser supports a minimum Node.js version of ${minNodeVersion}. Read our version support policy: https://github.com/yargs/yargs-parser#supported-nodejs-versions`);\n    }\n}\nconst env = process ? process.env : {};\nconst parser = new YargsParser({\n    cwd: process.cwd,\n    env: () => {\n        return env;\n    },\n    format: util.format,\n    normalize: path.normalize,\n    resolve: path.resolve,\n    require: (path) => {\n        if (typeof require !== 'undefined') {\n            return require(path);\n        }\n        else if (path.match(/\\.json$/)) {\n            return fs.readFileSync(path, 'utf8');\n        }\n        else {\n            throw Error('only .json config files are supported in ESM');\n        }\n    }\n});\nconst yargsParser = function Parser(args, opts) {\n    const result = parser.parse(args.slice(), opts);\n    return result.argv;\n};\nyargsParser.detailed = function (args, opts) {\n    return parser.parse(args.slice(), opts);\n};\nyargsParser.camelCase = camelCase;\nyargsParser.decamelize = decamelize;\nyargsParser.looksLikeNumber = looksLikeNumber;\n\nmodule.exports = yargsParser;\n", "'use strict';\n\nmodule.exports = ({onlyFirst = false} = {}) => {\n\tconst pattern = [\n\t\t'[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)',\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))'\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n};\n", "'use strict';\nconst ansiRegex = require('ansi-regex');\n\nmodule.exports = string => typeof string === 'string' ? string.replace(ansiRegex(), '') : string;\n", "/* eslint-disable yoda */\n'use strict';\n\nconst isFullwidthCodePoint = codePoint => {\n\tif (Number.isNaN(codePoint)) {\n\t\treturn false;\n\t}\n\n\t// Code points are derived from:\n\t// http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt\n\tif (\n\t\tcodePoint >= 0x1100 && (\n\t\t\tcodePoint <= 0x115F || // Hangul Jamo\n\t\t\tcodePoint === 0x2329 || // LEFT-POINTING ANGLE BRACKET\n\t\t\tcodePoint === 0x232A || // RIGHT-POINTING ANGLE BRACKET\n\t\t\t// CJK Radicals Supplement .. Enclosed CJK Letters and Months\n\t\t\t(0x2E80 <= codePoint && codePoint <= 0x3247 && codePoint !== 0x303F) ||\n\t\t\t// Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A\n\t\t\t(0x3250 <= codePoint && codePoint <= 0x4DBF) ||\n\t\t\t// CJK Unified Ideographs .. Yi Radicals\n\t\t\t(0x4E00 <= codePoint && codePoint <= 0xA4C6) ||\n\t\t\t// Hangul Jamo Extended-A\n\t\t\t(0xA960 <= codePoint && codePoint <= 0xA97C) ||\n\t\t\t// Hangul Syllables\n\t\t\t(0xAC00 <= codePoint && codePoint <= 0xD7A3) ||\n\t\t\t// CJK Compatibility Ideographs\n\t\t\t(0xF900 <= codePoint && codePoint <= 0xFAFF) ||\n\t\t\t// Vertical Forms\n\t\t\t(0xFE10 <= codePoint && codePoint <= 0xFE19) ||\n\t\t\t// CJK Compatibility Forms .. Small Form Variants\n\t\t\t(0xFE30 <= codePoint && codePoint <= 0xFE6B) ||\n\t\t\t// Halfwidth and Fullwidth Forms\n\t\t\t(0xFF01 <= codePoint && codePoint <= 0xFF60) ||\n\t\t\t(0xFFE0 <= codePoint && codePoint <= 0xFFE6) ||\n\t\t\t// Kana Supplement\n\t\t\t(0x1B000 <= codePoint && codePoint <= 0x1B001) ||\n\t\t\t// Enclosed Ideographic Supplement\n\t\t\t(0x1F200 <= codePoint && codePoint <= 0x1F251) ||\n\t\t\t// CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane\n\t\t\t(0x20000 <= codePoint && codePoint <= 0x3FFFD)\n\t\t)\n\t) {\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\nmodule.exports = isFullwidthCodePoint;\nmodule.exports.default = isFullwidthCodePoint;\n", "\"use strict\";\n\nmodule.exports = function () {\n  // https://mths.be/emoji\n  return /\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F|\\uD83D\\uDC68(?:\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C\\uDFFB|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFE])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83D\\uDC68|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D[\\uDC66\\uDC67])|[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83D[\\uDC66\\uDC67]|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|(?:\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708])\\uFE0F|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C[\\uDFFB-\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFB\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)\\uD83C\\uDFFB|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1)|(?:\\uD83E\\uDDD1\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFE])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83D\\uDC69(?:\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|(?:\\uD83E\\uDDD1\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83D\\uDC69(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|(?:(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)\\uFE0F|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF])\\u200D[\\u2640\\u2642]|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|\\u200D[\\u2640\\u2642])|\\uD83C\\uDFF4\\u200D\\u2620)\\uFE0F|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|\\uD83D\\uDC15\\u200D\\uD83E\\uDDBA|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83C\\uDDF6\\uD83C\\uDDE6|[#\\*0-9]\\uFE0F\\u20E3|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83D\\uDC69(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC70\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDCAA\\uDD74\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD36\\uDDB5\\uDDB6\\uDDBB\\uDDD2-\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5\\uDEEB\\uDEEC\\uDEF4-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])|(?:[#\\*0-9\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u261D\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A1\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5\\u26F7-\\u26FA\\u26FD\\u2702\\u2705\\u2708-\\u270D\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u2764\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-\\uDF93\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFF0\\uDFF3-\\uDFF5\\uDFF7-\\uDFFF]|\\uD83D[\\uDC00-\\uDCFD\\uDCFF-\\uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73-\\uDD7A\\uDD87\\uDD8A-\\uDD8D\\uDD90\\uDD95\\uDD96\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE4F\\uDE80-\\uDEC5\\uDECB-\\uDED2\\uDED5\\uDEE0-\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])\\uFE0F|(?:[\\u261D\\u26F9\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2-\\uDFC4\\uDFC7\\uDFCA-\\uDFCC]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66-\\uDC78\\uDC7C\\uDC81-\\uDC83\\uDC85-\\uDC87\\uDC8F\\uDC91\\uDCAA\\uDD74\\uDD75\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE45-\\uDE47\\uDE4B-\\uDE4F\\uDEA3\\uDEB4-\\uDEB6\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1F\\uDD26\\uDD30-\\uDD39\\uDD3C-\\uDD3E\\uDDB5\\uDDB6\\uDDB8\\uDDB9\\uDDBB\\uDDCD-\\uDDCF\\uDDD1-\\uDDDD])/g;\n};\n", "'use strict';\nconst stripAnsi = require('strip-ansi');\nconst isFullwidthCodePoint = require('is-fullwidth-code-point');\nconst emojiRegex = require('emoji-regex');\n\nconst stringWidth = string => {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstring = stripAnsi(string);\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstring = string.replace(emojiRegex(), '  ');\n\n\tlet width = 0;\n\n\tfor (let i = 0; i < string.length; i++) {\n\t\tconst code = string.codePointAt(i);\n\n\t\t// Ignore control characters\n\t\tif (code <= 0x1F || (code >= 0x7F && code <= 0x9F)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore combining characters\n\t\tif (code >= 0x300 && code <= 0x36F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Surrogates\n\t\tif (code > 0xFFFF) {\n\t\t\ti++;\n\t\t}\n\n\t\twidth += isFullwidthCodePoint(code) ? 2 : 1;\n\t}\n\n\treturn width;\n};\n\nmodule.exports = stringWidth;\n// TODO: remove this in the next major version\nmodule.exports.default = stringWidth;\n", "'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n", "/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n//       values that give correct `typeof` results).\n//       do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v;  g = n;  b = wh; break;\n\t\tcase 1: r = n;  g = v;  b = wh; break;\n\t\tcase 2: r = wh; g = v;  b = n; break;\n\t\tcase 3: r = wh; g = n;  b = v; break;\n\t\tcase 4: r = n;  g = wh; b = v; break;\n\t\tcase 5: r = v;  g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n", "const conversions = require('./conversions');\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n", "const conversions = require('./conversions');\nconst route = require('./route');\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n", "'use strict';\n\nconst wrapAnsi16 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => (...args) => {\n\tconst rgb = fn(...args);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nconst ansi2ansi = n => n;\nconst rgb2rgb = (r, g, b) => [r, g, b];\n\nconst setLazyProperty = (object, property, get) => {\n\tObject.defineProperty(object, property, {\n\t\tget: () => {\n\t\t\tconst value = get();\n\n\t\t\tObject.defineProperty(object, property, {\n\t\t\t\tvalue,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true\n\t\t\t});\n\n\t\t\treturn value;\n\t\t},\n\t\tenumerable: true,\n\t\tconfigurable: true\n\t});\n};\n\n/** @type {typeof import('color-convert')} */\nlet colorConvert;\nconst makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => {\n\tif (colorConvert === undefined) {\n\t\tcolorConvert = require('color-convert');\n\t}\n\n\tconst offset = isBackground ? 10 : 0;\n\tconst styles = {};\n\n\tfor (const [sourceSpace, suite] of Object.entries(colorConvert)) {\n\t\tconst name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace;\n\t\tif (sourceSpace === targetSpace) {\n\t\t\tstyles[name] = wrap(identity, offset);\n\t\t} else if (typeof suite === 'object') {\n\t\t\tstyles[name] = wrap(suite[targetSpace], offset);\n\t\t}\n\t}\n\n\treturn styles;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tsetLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false));\n\tsetLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true));\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n", "'use strict';\nconst stringWidth = require('string-width');\nconst stripAnsi = require('strip-ansi');\nconst ansiStyles = require('ansi-styles');\n\nconst ESCAPES = new Set([\n\t'\\u001B',\n\t'\\u009B'\n]);\n\nconst END_CODE = 39;\n\nconst ANSI_ESCAPE_BELL = '\\u0007';\nconst ANSI_CSI = '[';\nconst ANSI_OSC = ']';\nconst ANSI_SGR_TERMINATOR = 'm';\nconst ANSI_ESCAPE_LINK = `${ANSI_OSC}8;;`;\n\nconst wrapAnsi = code => `${ESCAPES.values().next().value}${ANSI_CSI}${code}${ANSI_SGR_TERMINATOR}`;\nconst wrapAnsiHyperlink = uri => `${ESCAPES.values().next().value}${ANSI_ESCAPE_LINK}${uri}${ANSI_ESCAPE_BELL}`;\n\n// Calculate the length of words split on ' ', ignoring\n// the extra characters added by ansi escape codes\nconst wordLengths = string => string.split(' ').map(character => stringWidth(character));\n\n// Wrap a long word across multiple rows\n// Ansi escape codes do not count towards length\nconst wrapWord = (rows, word, columns) => {\n\tconst characters = [...word];\n\n\tlet isInsideEscape = false;\n\tlet isInsideLinkEscape = false;\n\tlet visible = stringWidth(stripAnsi(rows[rows.length - 1]));\n\n\tfor (const [index, character] of characters.entries()) {\n\t\tconst characterLength = stringWidth(character);\n\n\t\tif (visible + characterLength <= columns) {\n\t\t\trows[rows.length - 1] += character;\n\t\t} else {\n\t\t\trows.push(character);\n\t\t\tvisible = 0;\n\t\t}\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tisInsideEscape = true;\n\t\t\tisInsideLinkEscape = characters.slice(index + 1).join('').startsWith(ANSI_ESCAPE_LINK);\n\t\t}\n\n\t\tif (isInsideEscape) {\n\t\t\tif (isInsideLinkEscape) {\n\t\t\t\tif (character === ANSI_ESCAPE_BELL) {\n\t\t\t\t\tisInsideEscape = false;\n\t\t\t\t\tisInsideLinkEscape = false;\n\t\t\t\t}\n\t\t\t} else if (character === ANSI_SGR_TERMINATOR) {\n\t\t\t\tisInsideEscape = false;\n\t\t\t}\n\n\t\t\tcontinue;\n\t\t}\n\n\t\tvisible += characterLength;\n\n\t\tif (visible === columns && index < characters.length - 1) {\n\t\t\trows.push('');\n\t\t\tvisible = 0;\n\t\t}\n\t}\n\n\t// It's possible that the last row we copy over is only\n\t// ansi escape characters, handle this edge-case\n\tif (!visible && rows[rows.length - 1].length > 0 && rows.length > 1) {\n\t\trows[rows.length - 2] += rows.pop();\n\t}\n};\n\n// Trims spaces from a string ignoring invisible sequences\nconst stringVisibleTrimSpacesRight = string => {\n\tconst words = string.split(' ');\n\tlet last = words.length;\n\n\twhile (last > 0) {\n\t\tif (stringWidth(words[last - 1]) > 0) {\n\t\t\tbreak;\n\t\t}\n\n\t\tlast--;\n\t}\n\n\tif (last === words.length) {\n\t\treturn string;\n\t}\n\n\treturn words.slice(0, last).join(' ') + words.slice(last).join('');\n};\n\n// The wrap-ansi module can be invoked in either 'hard' or 'soft' wrap mode\n//\n// 'hard' will never allow a string to take up more than columns characters\n//\n// 'soft' allows long words to expand past the column length\nconst exec = (string, columns, options = {}) => {\n\tif (options.trim !== false && string.trim() === '') {\n\t\treturn '';\n\t}\n\n\tlet returnValue = '';\n\tlet escapeCode;\n\tlet escapeUrl;\n\n\tconst lengths = wordLengths(string);\n\tlet rows = [''];\n\n\tfor (const [index, word] of string.split(' ').entries()) {\n\t\tif (options.trim !== false) {\n\t\t\trows[rows.length - 1] = rows[rows.length - 1].trimStart();\n\t\t}\n\n\t\tlet rowLength = stringWidth(rows[rows.length - 1]);\n\n\t\tif (index !== 0) {\n\t\t\tif (rowLength >= columns && (options.wordWrap === false || options.trim === false)) {\n\t\t\t\t// If we start with a new word but the current row length equals the length of the columns, add a new row\n\t\t\t\trows.push('');\n\t\t\t\trowLength = 0;\n\t\t\t}\n\n\t\t\tif (rowLength > 0 || options.trim === false) {\n\t\t\t\trows[rows.length - 1] += ' ';\n\t\t\t\trowLength++;\n\t\t\t}\n\t\t}\n\n\t\t// In 'hard' wrap mode, the length of a line is never allowed to extend past 'columns'\n\t\tif (options.hard && lengths[index] > columns) {\n\t\t\tconst remainingColumns = (columns - rowLength);\n\t\t\tconst breaksStartingThisLine = 1 + Math.floor((lengths[index] - remainingColumns - 1) / columns);\n\t\t\tconst breaksStartingNextLine = Math.floor((lengths[index] - 1) / columns);\n\t\t\tif (breaksStartingNextLine < breaksStartingThisLine) {\n\t\t\t\trows.push('');\n\t\t\t}\n\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && rowLength > 0 && lengths[index] > 0) {\n\t\t\tif (options.wordWrap === false && rowLength < columns) {\n\t\t\t\twrapWord(rows, word, columns);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\trows.push('');\n\t\t}\n\n\t\tif (rowLength + lengths[index] > columns && options.wordWrap === false) {\n\t\t\twrapWord(rows, word, columns);\n\t\t\tcontinue;\n\t\t}\n\n\t\trows[rows.length - 1] += word;\n\t}\n\n\tif (options.trim !== false) {\n\t\trows = rows.map(stringVisibleTrimSpacesRight);\n\t}\n\n\tconst pre = [...rows.join('\\n')];\n\n\tfor (const [index, character] of pre.entries()) {\n\t\treturnValue += character;\n\n\t\tif (ESCAPES.has(character)) {\n\t\t\tconst {groups} = new RegExp(`(?:\\\\${ANSI_CSI}(?<code>\\\\d+)m|\\\\${ANSI_ESCAPE_LINK}(?<uri>.*)${ANSI_ESCAPE_BELL})`).exec(pre.slice(index).join('')) || {groups: {}};\n\t\t\tif (groups.code !== undefined) {\n\t\t\t\tconst code = Number.parseFloat(groups.code);\n\t\t\t\tescapeCode = code === END_CODE ? undefined : code;\n\t\t\t} else if (groups.uri !== undefined) {\n\t\t\t\tescapeUrl = groups.uri.length === 0 ? undefined : groups.uri;\n\t\t\t}\n\t\t}\n\n\t\tconst code = ansiStyles.codes.get(Number(escapeCode));\n\n\t\tif (pre[index + 1] === '\\n') {\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink('');\n\t\t\t}\n\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsi(code);\n\t\t\t}\n\t\t} else if (character === '\\n') {\n\t\t\tif (escapeCode && code) {\n\t\t\t\treturnValue += wrapAnsi(escapeCode);\n\t\t\t}\n\n\t\t\tif (escapeUrl) {\n\t\t\t\treturnValue += wrapAnsiHyperlink(escapeUrl);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn returnValue;\n};\n\n// For each newline, invoke the method separately\nmodule.exports = (string, columns, options) => {\n\treturn String(string)\n\t\t.normalize()\n\t\t.replace(/\\r\\n/g, '\\n')\n\t\t.split('\\n')\n\t\t.map(line => exec(line, columns, options))\n\t\t.join('\\n');\n};\n", "'use strict';\n\nconst align = {\n    right: alignRight,\n    center: alignCenter\n};\nconst top = 0;\nconst right = 1;\nconst bottom = 2;\nconst left = 3;\nclass UI {\n    constructor(opts) {\n        var _a;\n        this.width = opts.width;\n        this.wrap = (_a = opts.wrap) !== null && _a !== void 0 ? _a : true;\n        this.rows = [];\n    }\n    span(...args) {\n        const cols = this.div(...args);\n        cols.span = true;\n    }\n    resetOutput() {\n        this.rows = [];\n    }\n    div(...args) {\n        if (args.length === 0) {\n            this.div('');\n        }\n        if (this.wrap && this.shouldApplyLayoutDSL(...args) && typeof args[0] === 'string') {\n            return this.applyLayoutDSL(args[0]);\n        }\n        const cols = args.map(arg => {\n            if (typeof arg === 'string') {\n                return this.colFromString(arg);\n            }\n            return arg;\n        });\n        this.rows.push(cols);\n        return cols;\n    }\n    shouldApplyLayoutDSL(...args) {\n        return args.length === 1 && typeof args[0] === 'string' &&\n            /[\\t\\n]/.test(args[0]);\n    }\n    applyLayoutDSL(str) {\n        const rows = str.split('\\n').map(row => row.split('\\t'));\n        let leftColumnWidth = 0;\n        // simple heuristic for layout, make sure the\n        // second column lines up along the left-hand.\n        // don't allow the first column to take up more\n        // than 50% of the screen.\n        rows.forEach(columns => {\n            if (columns.length > 1 && mixin.stringWidth(columns[0]) > leftColumnWidth) {\n                leftColumnWidth = Math.min(Math.floor(this.width * 0.5), mixin.stringWidth(columns[0]));\n            }\n        });\n        // generate a table:\n        //  replacing ' ' with padding calculations.\n        //  using the algorithmically generated width.\n        rows.forEach(columns => {\n            this.div(...columns.map((r, i) => {\n                return {\n                    text: r.trim(),\n                    padding: this.measurePadding(r),\n                    width: (i === 0 && columns.length > 1) ? leftColumnWidth : undefined\n                };\n            }));\n        });\n        return this.rows[this.rows.length - 1];\n    }\n    colFromString(text) {\n        return {\n            text,\n            padding: this.measurePadding(text)\n        };\n    }\n    measurePadding(str) {\n        // measure padding without ansi escape codes\n        const noAnsi = mixin.stripAnsi(str);\n        return [0, noAnsi.match(/\\s*$/)[0].length, 0, noAnsi.match(/^\\s*/)[0].length];\n    }\n    toString() {\n        const lines = [];\n        this.rows.forEach(row => {\n            this.rowToString(row, lines);\n        });\n        // don't display any lines with the\n        // hidden flag set.\n        return lines\n            .filter(line => !line.hidden)\n            .map(line => line.text)\n            .join('\\n');\n    }\n    rowToString(row, lines) {\n        this.rasterize(row).forEach((rrow, r) => {\n            let str = '';\n            rrow.forEach((col, c) => {\n                const { width } = row[c]; // the width with padding.\n                const wrapWidth = this.negatePadding(row[c]); // the width without padding.\n                let ts = col; // temporary string used during alignment/padding.\n                if (wrapWidth > mixin.stringWidth(col)) {\n                    ts += ' '.repeat(wrapWidth - mixin.stringWidth(col));\n                }\n                // align the string within its column.\n                if (row[c].align && row[c].align !== 'left' && this.wrap) {\n                    const fn = align[row[c].align];\n                    ts = fn(ts, wrapWidth);\n                    if (mixin.stringWidth(ts) < wrapWidth) {\n                        ts += ' '.repeat((width || 0) - mixin.stringWidth(ts) - 1);\n                    }\n                }\n                // apply border and padding to string.\n                const padding = row[c].padding || [0, 0, 0, 0];\n                if (padding[left]) {\n                    str += ' '.repeat(padding[left]);\n                }\n                str += addBorder(row[c], ts, '| ');\n                str += ts;\n                str += addBorder(row[c], ts, ' |');\n                if (padding[right]) {\n                    str += ' '.repeat(padding[right]);\n                }\n                // if prior row is span, try to render the\n                // current row on the prior line.\n                if (r === 0 && lines.length > 0) {\n                    str = this.renderInline(str, lines[lines.length - 1]);\n                }\n            });\n            // remove trailing whitespace.\n            lines.push({\n                text: str.replace(/ +$/, ''),\n                span: row.span\n            });\n        });\n        return lines;\n    }\n    // if the full 'source' can render in\n    // the target line, do so.\n    renderInline(source, previousLine) {\n        const match = source.match(/^ */);\n        const leadingWhitespace = match ? match[0].length : 0;\n        const target = previousLine.text;\n        const targetTextWidth = mixin.stringWidth(target.trimRight());\n        if (!previousLine.span) {\n            return source;\n        }\n        // if we're not applying wrapping logic,\n        // just always append to the span.\n        if (!this.wrap) {\n            previousLine.hidden = true;\n            return target + source;\n        }\n        if (leadingWhitespace < targetTextWidth) {\n            return source;\n        }\n        previousLine.hidden = true;\n        return target.trimRight() + ' '.repeat(leadingWhitespace - targetTextWidth) + source.trimLeft();\n    }\n    rasterize(row) {\n        const rrows = [];\n        const widths = this.columnWidths(row);\n        let wrapped;\n        // word wrap all columns, and create\n        // a data-structure that is easy to rasterize.\n        row.forEach((col, c) => {\n            // leave room for left and right padding.\n            col.width = widths[c];\n            if (this.wrap) {\n                wrapped = mixin.wrap(col.text, this.negatePadding(col), { hard: true }).split('\\n');\n            }\n            else {\n                wrapped = col.text.split('\\n');\n            }\n            if (col.border) {\n                wrapped.unshift('.' + '-'.repeat(this.negatePadding(col) + 2) + '.');\n                wrapped.push(\"'\" + '-'.repeat(this.negatePadding(col) + 2) + \"'\");\n            }\n            // add top and bottom padding.\n            if (col.padding) {\n                wrapped.unshift(...new Array(col.padding[top] || 0).fill(''));\n                wrapped.push(...new Array(col.padding[bottom] || 0).fill(''));\n            }\n            wrapped.forEach((str, r) => {\n                if (!rrows[r]) {\n                    rrows.push([]);\n                }\n                const rrow = rrows[r];\n                for (let i = 0; i < c; i++) {\n                    if (rrow[i] === undefined) {\n                        rrow.push('');\n                    }\n                }\n                rrow.push(str);\n            });\n        });\n        return rrows;\n    }\n    negatePadding(col) {\n        let wrapWidth = col.width || 0;\n        if (col.padding) {\n            wrapWidth -= (col.padding[left] || 0) + (col.padding[right] || 0);\n        }\n        if (col.border) {\n            wrapWidth -= 4;\n        }\n        return wrapWidth;\n    }\n    columnWidths(row) {\n        if (!this.wrap) {\n            return row.map(col => {\n                return col.width || mixin.stringWidth(col.text);\n            });\n        }\n        let unset = row.length;\n        let remainingWidth = this.width;\n        // column widths can be set in config.\n        const widths = row.map(col => {\n            if (col.width) {\n                unset--;\n                remainingWidth -= col.width;\n                return col.width;\n            }\n            return undefined;\n        });\n        // any unset widths should be calculated.\n        const unsetWidth = unset ? Math.floor(remainingWidth / unset) : 0;\n        return widths.map((w, i) => {\n            if (w === undefined) {\n                return Math.max(unsetWidth, _minWidth(row[i]));\n            }\n            return w;\n        });\n    }\n}\nfunction addBorder(col, ts, style) {\n    if (col.border) {\n        if (/[.']-+[.']/.test(ts)) {\n            return '';\n        }\n        if (ts.trim().length !== 0) {\n            return style;\n        }\n        return '  ';\n    }\n    return '';\n}\n// calculates the minimum width of\n// a column, based on padding preferences.\nfunction _minWidth(col) {\n    const padding = col.padding || [];\n    const minWidth = 1 + (padding[left] || 0) + (padding[right] || 0);\n    if (col.border) {\n        return minWidth + 4;\n    }\n    return minWidth;\n}\nfunction getWindowWidth() {\n    /* istanbul ignore next: depends on terminal */\n    if (typeof process === 'object' && process.stdout && process.stdout.columns) {\n        return process.stdout.columns;\n    }\n    return 80;\n}\nfunction alignRight(str, width) {\n    str = str.trim();\n    const strWidth = mixin.stringWidth(str);\n    if (strWidth < width) {\n        return ' '.repeat(width - strWidth) + str;\n    }\n    return str;\n}\nfunction alignCenter(str, width) {\n    str = str.trim();\n    const strWidth = mixin.stringWidth(str);\n    /* istanbul ignore next */\n    if (strWidth >= width) {\n        return str;\n    }\n    return ' '.repeat((width - strWidth) >> 1) + str;\n}\nlet mixin;\nfunction cliui(opts, _mixin) {\n    mixin = _mixin;\n    return new UI({\n        width: (opts === null || opts === void 0 ? void 0 : opts.width) || getWindowWidth(),\n        wrap: opts === null || opts === void 0 ? void 0 : opts.wrap\n    });\n}\n\n// Bootstrap cliui with CommonJS dependencies:\nconst stringWidth = require('string-width');\nconst stripAnsi = require('strip-ansi');\nconst wrap = require('wrap-ansi');\nfunction ui(opts) {\n    return cliui(opts, {\n        stringWidth,\n        stripAnsi,\n        wrap\n    });\n}\n\nmodule.exports = ui;\n", "const { dirname, resolve } = require('path');\nconst { readdirSync, statSync } = require('fs');\n\nmodule.exports = function (start, callback) {\n\tlet dir = resolve('.', start);\n\tlet tmp, stats = statSync(dir);\n\n\tif (!stats.isDirectory()) {\n\t\tdir = dirname(dir);\n\t}\n\n\twhile (true) {\n\t\ttmp = callback(dir, readdirSync(dir));\n\t\tif (tmp) return resolve(dir, tmp);\n\t\tdir = dirname(tmp = dir);\n\t\tif (tmp === dir) break;\n\t}\n}\n", null, "'use strict';\n\nvar fs = require('fs'),\n  join = require('path').join,\n  resolve = require('path').resolve,\n  dirname = require('path').dirname,\n  defaultOptions = {\n    extensions: ['js', 'json', 'coffee'],\n    recurse: true,\n    rename: function (name) {\n      return name;\n    },\n    visit: function (obj) {\n      return obj;\n    }\n  };\n\nfunction checkFileInclusion(path, filename, options) {\n  return (\n    // verify file has valid extension\n    (new RegExp('\\\\.(' + options.extensions.join('|') + ')$', 'i').test(filename)) &&\n\n    // if options.include is a RegExp, evaluate it and make sure the path passes\n    !(options.include && options.include instanceof RegExp && !options.include.test(path)) &&\n\n    // if options.include is a function, evaluate it and make sure the path passes\n    !(options.include && typeof options.include === 'function' && !options.include(path, filename)) &&\n\n    // if options.exclude is a RegExp, evaluate it and make sure the path doesn't pass\n    !(options.exclude && options.exclude instanceof RegExp && options.exclude.test(path)) &&\n\n    // if options.exclude is a function, evaluate it and make sure the path doesn't pass\n    !(options.exclude && typeof options.exclude === 'function' && options.exclude(path, filename))\n  );\n}\n\nfunction requireDirectory(m, path, options) {\n  var retval = {};\n\n  // path is optional\n  if (path && !options && typeof path !== 'string') {\n    options = path;\n    path = null;\n  }\n\n  // default options\n  options = options || {};\n  for (var prop in defaultOptions) {\n    if (typeof options[prop] === 'undefined') {\n      options[prop] = defaultOptions[prop];\n    }\n  }\n\n  // if no path was passed in, assume the equivelant of __dirname from caller\n  // otherwise, resolve path relative to the equivalent of __dirname\n  path = !path ? dirname(m.filename) : resolve(dirname(m.filename), path);\n\n  // get the path of each file in specified directory, append to current tree node, recurse\n  fs.readdirSync(path).forEach(function (filename) {\n    var joined = join(path, filename),\n      files,\n      key,\n      obj;\n\n    if (fs.statSync(joined).isDirectory() && options.recurse) {\n      // this node is a directory; recurse\n      files = requireDirectory(m, joined, options);\n      // exclude empty directories\n      if (Object.keys(files).length) {\n        retval[options.rename(filename, joined, filename)] = files;\n      }\n    } else {\n      if (joined !== m.filename && checkFileInclusion(joined, filename, options)) {\n        // hash node key shouldn't include file extension\n        key = filename.substring(0, filename.lastIndexOf('.'));\n        obj = m.require(joined);\n        retval[options.rename(key, joined, filename)] = options.visit(obj, joined, filename) || obj;\n      }\n    }\n  });\n\n  return retval;\n}\n\nmodule.exports = requireDirectory;\nmodule.exports.defaults = defaultOptions;\n", "'use strict';\n\nvar assert = require('assert');\n\nclass YError extends Error {\n    constructor(msg) {\n        super(msg || 'yargs error');\n        this.name = 'YError';\n        Error.captureStackTrace(this, YError);\n    }\n}\n\nlet previouslyVisitedConfigs = [];\nlet shim;\nfunction applyExtends(config, cwd, mergeExtends, _shim) {\n    shim = _shim;\n    let defaultConfig = {};\n    if (Object.prototype.hasOwnProperty.call(config, 'extends')) {\n        if (typeof config.extends !== 'string')\n            return defaultConfig;\n        const isPath = /\\.json|\\..*rc$/.test(config.extends);\n        let pathToDefault = null;\n        if (!isPath) {\n            try {\n                pathToDefault = require.resolve(config.extends);\n            }\n            catch (_err) {\n                return config;\n            }\n        }\n        else {\n            pathToDefault = getPathToDefaultConfig(cwd, config.extends);\n        }\n        checkForCircularExtends(pathToDefault);\n        previouslyVisitedConfigs.push(pathToDefault);\n        defaultConfig = isPath\n            ? JSON.parse(shim.readFileSync(pathToDefault, 'utf8'))\n            : require(config.extends);\n        delete config.extends;\n        defaultConfig = applyExtends(defaultConfig, shim.path.dirname(pathToDefault), mergeExtends, shim);\n    }\n    previouslyVisitedConfigs = [];\n    return mergeExtends\n        ? mergeDeep(defaultConfig, config)\n        : Object.assign({}, defaultConfig, config);\n}\nfunction checkForCircularExtends(cfgPath) {\n    if (previouslyVisitedConfigs.indexOf(cfgPath) > -1) {\n        throw new YError(`Circular extended configurations: '${cfgPath}'.`);\n    }\n}\nfunction getPathToDefaultConfig(cwd, pathToExtend) {\n    return shim.path.resolve(cwd, pathToExtend);\n}\nfunction mergeDeep(config1, config2) {\n    const target = {};\n    function isObject(obj) {\n        return obj && typeof obj === 'object' && !Array.isArray(obj);\n    }\n    Object.assign(target, config1);\n    for (const key of Object.keys(config2)) {\n        if (isObject(config2[key]) && isObject(target[key])) {\n            target[key] = mergeDeep(config1[key], config2[key]);\n        }\n        else {\n            target[key] = config2[key];\n        }\n    }\n    return target;\n}\n\nfunction parseCommand(cmd) {\n    const extraSpacesStrippedCommand = cmd.replace(/\\s{2,}/g, ' ');\n    const splitCommand = extraSpacesStrippedCommand.split(/\\s+(?![^[]*]|[^<]*>)/);\n    const bregex = /\\.*[\\][<>]/g;\n    const firstCommand = splitCommand.shift();\n    if (!firstCommand)\n        throw new Error(`No command found in: ${cmd}`);\n    const parsedCommand = {\n        cmd: firstCommand.replace(bregex, ''),\n        demanded: [],\n        optional: [],\n    };\n    splitCommand.forEach((cmd, i) => {\n        let variadic = false;\n        cmd = cmd.replace(/\\s/g, '');\n        if (/\\.+[\\]>]/.test(cmd) && i === splitCommand.length - 1)\n            variadic = true;\n        if (/^\\[/.test(cmd)) {\n            parsedCommand.optional.push({\n                cmd: cmd.replace(bregex, '').split('|'),\n                variadic,\n            });\n        }\n        else {\n            parsedCommand.demanded.push({\n                cmd: cmd.replace(bregex, '').split('|'),\n                variadic,\n            });\n        }\n    });\n    return parsedCommand;\n}\n\nconst positionName = ['first', 'second', 'third', 'fourth', 'fifth', 'sixth'];\nfunction argsert(arg1, arg2, arg3) {\n    function parseArgs() {\n        return typeof arg1 === 'object'\n            ? [{ demanded: [], optional: [] }, arg1, arg2]\n            : [\n                parseCommand(`cmd ${arg1}`),\n                arg2,\n                arg3,\n            ];\n    }\n    try {\n        let position = 0;\n        const [parsed, callerArguments, _length] = parseArgs();\n        const args = [].slice.call(callerArguments);\n        while (args.length && args[args.length - 1] === undefined)\n            args.pop();\n        const length = _length || args.length;\n        if (length < parsed.demanded.length) {\n            throw new YError(`Not enough arguments provided. Expected ${parsed.demanded.length} but received ${args.length}.`);\n        }\n        const totalCommands = parsed.demanded.length + parsed.optional.length;\n        if (length > totalCommands) {\n            throw new YError(`Too many arguments provided. Expected max ${totalCommands} but received ${length}.`);\n        }\n        parsed.demanded.forEach(demanded => {\n            const arg = args.shift();\n            const observedType = guessType(arg);\n            const matchingTypes = demanded.cmd.filter(type => type === observedType || type === '*');\n            if (matchingTypes.length === 0)\n                argumentTypeError(observedType, demanded.cmd, position);\n            position += 1;\n        });\n        parsed.optional.forEach(optional => {\n            if (args.length === 0)\n                return;\n            const arg = args.shift();\n            const observedType = guessType(arg);\n            const matchingTypes = optional.cmd.filter(type => type === observedType || type === '*');\n            if (matchingTypes.length === 0)\n                argumentTypeError(observedType, optional.cmd, position);\n            position += 1;\n        });\n    }\n    catch (err) {\n        console.warn(err.stack);\n    }\n}\nfunction guessType(arg) {\n    if (Array.isArray(arg)) {\n        return 'array';\n    }\n    else if (arg === null) {\n        return 'null';\n    }\n    return typeof arg;\n}\nfunction argumentTypeError(observedType, allowedTypes, position) {\n    throw new YError(`Invalid ${positionName[position] || 'manyith'} argument. Expected ${allowedTypes.join(' or ')} but received ${observedType}.`);\n}\n\nfunction isPromise(maybePromise) {\n    return (!!maybePromise &&\n        !!maybePromise.then &&\n        typeof maybePromise.then === 'function');\n}\n\nfunction assertNotStrictEqual(actual, expected, shim, message) {\n    shim.assert.notStrictEqual(actual, expected, message);\n}\nfunction assertSingleKey(actual, shim) {\n    shim.assert.strictEqual(typeof actual, 'string');\n}\nfunction objectKeys(object) {\n    return Object.keys(object);\n}\n\nfunction objFilter(original = {}, filter = () => true) {\n    const obj = {};\n    objectKeys(original).forEach(key => {\n        if (filter(key, original[key])) {\n            obj[key] = original[key];\n        }\n    });\n    return obj;\n}\n\nfunction globalMiddlewareFactory(globalMiddleware, context) {\n    return function (callback, applyBeforeValidation = false) {\n        argsert('<array|function> [boolean]', [callback, applyBeforeValidation], arguments.length);\n        if (Array.isArray(callback)) {\n            for (let i = 0; i < callback.length; i++) {\n                if (typeof callback[i] !== 'function') {\n                    throw Error('middleware must be a function');\n                }\n                callback[i].applyBeforeValidation = applyBeforeValidation;\n            }\n            Array.prototype.push.apply(globalMiddleware, callback);\n        }\n        else if (typeof callback === 'function') {\n            callback.applyBeforeValidation = applyBeforeValidation;\n            globalMiddleware.push(callback);\n        }\n        return context;\n    };\n}\nfunction commandMiddlewareFactory(commandMiddleware) {\n    if (!commandMiddleware)\n        return [];\n    return commandMiddleware.map(middleware => {\n        middleware.applyBeforeValidation = false;\n        return middleware;\n    });\n}\nfunction applyMiddleware(argv, yargs, middlewares, beforeValidation) {\n    const beforeValidationError = new Error('middleware cannot return a promise when applyBeforeValidation is true');\n    return middlewares.reduce((acc, middleware) => {\n        if (middleware.applyBeforeValidation !== beforeValidation) {\n            return acc;\n        }\n        if (isPromise(acc)) {\n            return acc\n                .then(initialObj => Promise.all([\n                initialObj,\n                middleware(initialObj, yargs),\n            ]))\n                .then(([initialObj, middlewareObj]) => Object.assign(initialObj, middlewareObj));\n        }\n        else {\n            const result = middleware(acc, yargs);\n            if (beforeValidation && isPromise(result))\n                throw beforeValidationError;\n            return isPromise(result)\n                ? result.then(middlewareObj => Object.assign(acc, middlewareObj))\n                : Object.assign(acc, result);\n        }\n    }, argv);\n}\n\nfunction getProcessArgvBinIndex() {\n    if (isBundledElectronApp())\n        return 0;\n    return 1;\n}\nfunction isBundledElectronApp() {\n    return isElectronApp() && !process.defaultApp;\n}\nfunction isElectronApp() {\n    return !!process.versions.electron;\n}\nfunction hideBin(argv) {\n    return argv.slice(getProcessArgvBinIndex() + 1);\n}\nfunction getProcessArgvBin() {\n    return process.argv[getProcessArgvBinIndex()];\n}\n\nvar processArgv = /*#__PURE__*/Object.freeze({\n  __proto__: null,\n  hideBin: hideBin,\n  getProcessArgvBin: getProcessArgvBin\n});\n\nfunction whichModule(exported) {\n    if (typeof require === 'undefined')\n        return null;\n    for (let i = 0, files = Object.keys(require.cache), mod; i < files.length; i++) {\n        mod = require.cache[files[i]];\n        if (mod.exports === exported)\n            return mod;\n    }\n    return null;\n}\n\nconst DEFAULT_MARKER = /(^\\*)|(^\\$0)/;\nfunction command(yargs, usage, validation, globalMiddleware = [], shim) {\n    const self = {};\n    let handlers = {};\n    let aliasMap = {};\n    let defaultCommand;\n    self.addHandler = function addHandler(cmd, description, builder, handler, commandMiddleware, deprecated) {\n        let aliases = [];\n        const middlewares = commandMiddlewareFactory(commandMiddleware);\n        handler = handler || (() => { });\n        if (Array.isArray(cmd)) {\n            if (isCommandAndAliases(cmd)) {\n                [cmd, ...aliases] = cmd;\n            }\n            else {\n                for (const command of cmd) {\n                    self.addHandler(command);\n                }\n            }\n        }\n        else if (isCommandHandlerDefinition(cmd)) {\n            let command = Array.isArray(cmd.command) || typeof cmd.command === 'string'\n                ? cmd.command\n                : moduleName(cmd);\n            if (cmd.aliases)\n                command = [].concat(command).concat(cmd.aliases);\n            self.addHandler(command, extractDesc(cmd), cmd.builder, cmd.handler, cmd.middlewares, cmd.deprecated);\n            return;\n        }\n        else if (isCommandBuilderDefinition(builder)) {\n            self.addHandler([cmd].concat(aliases), description, builder.builder, builder.handler, builder.middlewares, builder.deprecated);\n            return;\n        }\n        if (typeof cmd === 'string') {\n            const parsedCommand = parseCommand(cmd);\n            aliases = aliases.map(alias => parseCommand(alias).cmd);\n            let isDefault = false;\n            const parsedAliases = [parsedCommand.cmd].concat(aliases).filter(c => {\n                if (DEFAULT_MARKER.test(c)) {\n                    isDefault = true;\n                    return false;\n                }\n                return true;\n            });\n            if (parsedAliases.length === 0 && isDefault)\n                parsedAliases.push('$0');\n            if (isDefault) {\n                parsedCommand.cmd = parsedAliases[0];\n                aliases = parsedAliases.slice(1);\n                cmd = cmd.replace(DEFAULT_MARKER, parsedCommand.cmd);\n            }\n            aliases.forEach(alias => {\n                aliasMap[alias] = parsedCommand.cmd;\n            });\n            if (description !== false) {\n                usage.command(cmd, description, isDefault, aliases, deprecated);\n            }\n            handlers[parsedCommand.cmd] = {\n                original: cmd,\n                description,\n                handler,\n                builder: builder || {},\n                middlewares,\n                deprecated,\n                demanded: parsedCommand.demanded,\n                optional: parsedCommand.optional,\n            };\n            if (isDefault)\n                defaultCommand = handlers[parsedCommand.cmd];\n        }\n    };\n    self.addDirectory = function addDirectory(dir, context, req, callerFile, opts) {\n        opts = opts || {};\n        if (typeof opts.recurse !== 'boolean')\n            opts.recurse = false;\n        if (!Array.isArray(opts.extensions))\n            opts.extensions = ['js'];\n        const parentVisit = typeof opts.visit === 'function' ? opts.visit : (o) => o;\n        opts.visit = function visit(obj, joined, filename) {\n            const visited = parentVisit(obj, joined, filename);\n            if (visited) {\n                if (~context.files.indexOf(joined))\n                    return visited;\n                context.files.push(joined);\n                self.addHandler(visited);\n            }\n            return visited;\n        };\n        shim.requireDirectory({ require: req, filename: callerFile }, dir, opts);\n    };\n    function moduleName(obj) {\n        const mod = whichModule(obj);\n        if (!mod)\n            throw new Error(`No command name given for module: ${shim.inspect(obj)}`);\n        return commandFromFilename(mod.filename);\n    }\n    function commandFromFilename(filename) {\n        return shim.path.basename(filename, shim.path.extname(filename));\n    }\n    function extractDesc({ describe, description, desc, }) {\n        for (const test of [describe, description, desc]) {\n            if (typeof test === 'string' || test === false)\n                return test;\n            assertNotStrictEqual(test, true, shim);\n        }\n        return false;\n    }\n    self.getCommands = () => Object.keys(handlers).concat(Object.keys(aliasMap));\n    self.getCommandHandlers = () => handlers;\n    self.hasDefaultCommand = () => !!defaultCommand;\n    self.runCommand = function runCommand(command, yargs, parsed, commandIndex) {\n        let aliases = parsed.aliases;\n        const commandHandler = handlers[command] || handlers[aliasMap[command]] || defaultCommand;\n        const currentContext = yargs.getContext();\n        let numFiles = currentContext.files.length;\n        const parentCommands = currentContext.commands.slice();\n        let innerArgv = parsed.argv;\n        let positionalMap = {};\n        if (command) {\n            currentContext.commands.push(command);\n            currentContext.fullCommands.push(commandHandler.original);\n        }\n        const builder = commandHandler.builder;\n        if (isCommandBuilderCallback(builder)) {\n            const builderOutput = builder(yargs.reset(parsed.aliases));\n            const innerYargs = isYargsInstance(builderOutput) ? builderOutput : yargs;\n            if (shouldUpdateUsage(innerYargs)) {\n                innerYargs\n                    .getUsageInstance()\n                    .usage(usageFromParentCommandsCommandHandler(parentCommands, commandHandler), commandHandler.description);\n            }\n            innerArgv = innerYargs._parseArgs(null, null, true, commandIndex);\n            aliases = innerYargs.parsed.aliases;\n        }\n        else if (isCommandBuilderOptionDefinitions(builder)) {\n            const innerYargs = yargs.reset(parsed.aliases);\n            if (shouldUpdateUsage(innerYargs)) {\n                innerYargs\n                    .getUsageInstance()\n                    .usage(usageFromParentCommandsCommandHandler(parentCommands, commandHandler), commandHandler.description);\n            }\n            Object.keys(commandHandler.builder).forEach(key => {\n                innerYargs.option(key, builder[key]);\n            });\n            innerArgv = innerYargs._parseArgs(null, null, true, commandIndex);\n            aliases = innerYargs.parsed.aliases;\n        }\n        if (!yargs._hasOutput()) {\n            positionalMap = populatePositionals(commandHandler, innerArgv, currentContext);\n        }\n        const middlewares = globalMiddleware\n            .slice(0)\n            .concat(commandHandler.middlewares);\n        applyMiddleware(innerArgv, yargs, middlewares, true);\n        if (!yargs._hasOutput()) {\n            yargs._runValidation(innerArgv, aliases, positionalMap, yargs.parsed.error, !command);\n        }\n        if (commandHandler.handler && !yargs._hasOutput()) {\n            yargs._setHasOutput();\n            const populateDoubleDash = !!yargs.getOptions().configuration['populate--'];\n            yargs._postProcess(innerArgv, populateDoubleDash);\n            innerArgv = applyMiddleware(innerArgv, yargs, middlewares, false);\n            let handlerResult;\n            if (isPromise(innerArgv)) {\n                handlerResult = innerArgv.then(argv => commandHandler.handler(argv));\n            }\n            else {\n                handlerResult = commandHandler.handler(innerArgv);\n            }\n            const handlerFinishCommand = yargs.getHandlerFinishCommand();\n            if (isPromise(handlerResult)) {\n                yargs.getUsageInstance().cacheHelpMessage();\n                handlerResult\n                    .then(value => {\n                    if (handlerFinishCommand) {\n                        handlerFinishCommand(value);\n                    }\n                })\n                    .catch(error => {\n                    try {\n                        yargs.getUsageInstance().fail(null, error);\n                    }\n                    catch (err) {\n                    }\n                })\n                    .then(() => {\n                    yargs.getUsageInstance().clearCachedHelpMessage();\n                });\n            }\n            else {\n                if (handlerFinishCommand) {\n                    handlerFinishCommand(handlerResult);\n                }\n            }\n        }\n        if (command) {\n            currentContext.commands.pop();\n            currentContext.fullCommands.pop();\n        }\n        numFiles = currentContext.files.length - numFiles;\n        if (numFiles > 0)\n            currentContext.files.splice(numFiles * -1, numFiles);\n        return innerArgv;\n    };\n    function shouldUpdateUsage(yargs) {\n        return (!yargs.getUsageInstance().getUsageDisabled() &&\n            yargs.getUsageInstance().getUsage().length === 0);\n    }\n    function usageFromParentCommandsCommandHandler(parentCommands, commandHandler) {\n        const c = DEFAULT_MARKER.test(commandHandler.original)\n            ? commandHandler.original.replace(DEFAULT_MARKER, '').trim()\n            : commandHandler.original;\n        const pc = parentCommands.filter(c => {\n            return !DEFAULT_MARKER.test(c);\n        });\n        pc.push(c);\n        return `$0 ${pc.join(' ')}`;\n    }\n    self.runDefaultBuilderOn = function (yargs) {\n        assertNotStrictEqual(defaultCommand, undefined, shim);\n        if (shouldUpdateUsage(yargs)) {\n            const commandString = DEFAULT_MARKER.test(defaultCommand.original)\n                ? defaultCommand.original\n                : defaultCommand.original.replace(/^[^[\\]<>]*/, '$0 ');\n            yargs.getUsageInstance().usage(commandString, defaultCommand.description);\n        }\n        const builder = defaultCommand.builder;\n        if (isCommandBuilderCallback(builder)) {\n            builder(yargs);\n        }\n        else if (!isCommandBuilderDefinition(builder)) {\n            Object.keys(builder).forEach(key => {\n                yargs.option(key, builder[key]);\n            });\n        }\n    };\n    function populatePositionals(commandHandler, argv, context) {\n        argv._ = argv._.slice(context.commands.length);\n        const demanded = commandHandler.demanded.slice(0);\n        const optional = commandHandler.optional.slice(0);\n        const positionalMap = {};\n        validation.positionalCount(demanded.length, argv._.length);\n        while (demanded.length) {\n            const demand = demanded.shift();\n            populatePositional(demand, argv, positionalMap);\n        }\n        while (optional.length) {\n            const maybe = optional.shift();\n            populatePositional(maybe, argv, positionalMap);\n        }\n        argv._ = context.commands.concat(argv._.map(a => '' + a));\n        postProcessPositionals(argv, positionalMap, self.cmdToParseOptions(commandHandler.original));\n        return positionalMap;\n    }\n    function populatePositional(positional, argv, positionalMap) {\n        const cmd = positional.cmd[0];\n        if (positional.variadic) {\n            positionalMap[cmd] = argv._.splice(0).map(String);\n        }\n        else {\n            if (argv._.length)\n                positionalMap[cmd] = [String(argv._.shift())];\n        }\n    }\n    function postProcessPositionals(argv, positionalMap, parseOptions) {\n        const options = Object.assign({}, yargs.getOptions());\n        options.default = Object.assign(parseOptions.default, options.default);\n        for (const key of Object.keys(parseOptions.alias)) {\n            options.alias[key] = (options.alias[key] || []).concat(parseOptions.alias[key]);\n        }\n        options.array = options.array.concat(parseOptions.array);\n        options.config = {};\n        const unparsed = [];\n        Object.keys(positionalMap).forEach(key => {\n            positionalMap[key].map(value => {\n                if (options.configuration['unknown-options-as-args'])\n                    options.key[key] = true;\n                unparsed.push(`--${key}`);\n                unparsed.push(value);\n            });\n        });\n        if (!unparsed.length)\n            return;\n        const config = Object.assign({}, options.configuration, {\n            'populate--': true,\n        });\n        const parsed = shim.Parser.detailed(unparsed, Object.assign({}, options, {\n            configuration: config,\n        }));\n        if (parsed.error) {\n            yargs.getUsageInstance().fail(parsed.error.message, parsed.error);\n        }\n        else {\n            const positionalKeys = Object.keys(positionalMap);\n            Object.keys(positionalMap).forEach(key => {\n                positionalKeys.push(...parsed.aliases[key]);\n            });\n            Object.keys(parsed.argv).forEach(key => {\n                if (positionalKeys.indexOf(key) !== -1) {\n                    if (!positionalMap[key])\n                        positionalMap[key] = parsed.argv[key];\n                    argv[key] = parsed.argv[key];\n                }\n            });\n        }\n    }\n    self.cmdToParseOptions = function (cmdString) {\n        const parseOptions = {\n            array: [],\n            default: {},\n            alias: {},\n            demand: {},\n        };\n        const parsed = parseCommand(cmdString);\n        parsed.demanded.forEach(d => {\n            const [cmd, ...aliases] = d.cmd;\n            if (d.variadic) {\n                parseOptions.array.push(cmd);\n                parseOptions.default[cmd] = [];\n            }\n            parseOptions.alias[cmd] = aliases;\n            parseOptions.demand[cmd] = true;\n        });\n        parsed.optional.forEach(o => {\n            const [cmd, ...aliases] = o.cmd;\n            if (o.variadic) {\n                parseOptions.array.push(cmd);\n                parseOptions.default[cmd] = [];\n            }\n            parseOptions.alias[cmd] = aliases;\n        });\n        return parseOptions;\n    };\n    self.reset = () => {\n        handlers = {};\n        aliasMap = {};\n        defaultCommand = undefined;\n        return self;\n    };\n    const frozens = [];\n    self.freeze = () => {\n        frozens.push({\n            handlers,\n            aliasMap,\n            defaultCommand,\n        });\n    };\n    self.unfreeze = () => {\n        const frozen = frozens.pop();\n        assertNotStrictEqual(frozen, undefined, shim);\n        ({ handlers, aliasMap, defaultCommand } = frozen);\n    };\n    return self;\n}\nfunction isCommandBuilderDefinition(builder) {\n    return (typeof builder === 'object' &&\n        !!builder.builder &&\n        typeof builder.handler === 'function');\n}\nfunction isCommandAndAliases(cmd) {\n    if (cmd.every(c => typeof c === 'string')) {\n        return true;\n    }\n    else {\n        return false;\n    }\n}\nfunction isCommandBuilderCallback(builder) {\n    return typeof builder === 'function';\n}\nfunction isCommandBuilderOptionDefinitions(builder) {\n    return typeof builder === 'object';\n}\nfunction isCommandHandlerDefinition(cmd) {\n    return typeof cmd === 'object' && !Array.isArray(cmd);\n}\n\nfunction setBlocking(blocking) {\n    if (typeof process === 'undefined')\n        return;\n    [process.stdout, process.stderr].forEach(_stream => {\n        const stream = _stream;\n        if (stream._handle &&\n            stream.isTTY &&\n            typeof stream._handle.setBlocking === 'function') {\n            stream._handle.setBlocking(blocking);\n        }\n    });\n}\n\nfunction usage(yargs, y18n, shim) {\n    const __ = y18n.__;\n    const self = {};\n    const fails = [];\n    self.failFn = function failFn(f) {\n        fails.push(f);\n    };\n    let failMessage = null;\n    let showHelpOnFail = true;\n    self.showHelpOnFail = function showHelpOnFailFn(arg1 = true, arg2) {\n        function parseFunctionArgs() {\n            return typeof arg1 === 'string' ? [true, arg1] : [arg1, arg2];\n        }\n        const [enabled, message] = parseFunctionArgs();\n        failMessage = message;\n        showHelpOnFail = enabled;\n        return self;\n    };\n    let failureOutput = false;\n    self.fail = function fail(msg, err) {\n        const logger = yargs._getLoggerInstance();\n        if (fails.length) {\n            for (let i = fails.length - 1; i >= 0; --i) {\n                fails[i](msg, err, self);\n            }\n        }\n        else {\n            if (yargs.getExitProcess())\n                setBlocking(true);\n            if (!failureOutput) {\n                failureOutput = true;\n                if (showHelpOnFail) {\n                    yargs.showHelp('error');\n                    logger.error();\n                }\n                if (msg || err)\n                    logger.error(msg || err);\n                if (failMessage) {\n                    if (msg || err)\n                        logger.error('');\n                    logger.error(failMessage);\n                }\n            }\n            err = err || new YError(msg);\n            if (yargs.getExitProcess()) {\n                return yargs.exit(1);\n            }\n            else if (yargs._hasParseCallback()) {\n                return yargs.exit(1, err);\n            }\n            else {\n                throw err;\n            }\n        }\n    };\n    let usages = [];\n    let usageDisabled = false;\n    self.usage = (msg, description) => {\n        if (msg === null) {\n            usageDisabled = true;\n            usages = [];\n            return self;\n        }\n        usageDisabled = false;\n        usages.push([msg, description || '']);\n        return self;\n    };\n    self.getUsage = () => {\n        return usages;\n    };\n    self.getUsageDisabled = () => {\n        return usageDisabled;\n    };\n    self.getPositionalGroupName = () => {\n        return __('Positionals:');\n    };\n    let examples = [];\n    self.example = (cmd, description) => {\n        examples.push([cmd, description || '']);\n    };\n    let commands = [];\n    self.command = function command(cmd, description, isDefault, aliases, deprecated = false) {\n        if (isDefault) {\n            commands = commands.map(cmdArray => {\n                cmdArray[2] = false;\n                return cmdArray;\n            });\n        }\n        commands.push([cmd, description || '', isDefault, aliases, deprecated]);\n    };\n    self.getCommands = () => commands;\n    let descriptions = {};\n    self.describe = function describe(keyOrKeys, desc) {\n        if (Array.isArray(keyOrKeys)) {\n            keyOrKeys.forEach(k => {\n                self.describe(k, desc);\n            });\n        }\n        else if (typeof keyOrKeys === 'object') {\n            Object.keys(keyOrKeys).forEach(k => {\n                self.describe(k, keyOrKeys[k]);\n            });\n        }\n        else {\n            descriptions[keyOrKeys] = desc;\n        }\n    };\n    self.getDescriptions = () => descriptions;\n    let epilogs = [];\n    self.epilog = msg => {\n        epilogs.push(msg);\n    };\n    let wrapSet = false;\n    let wrap;\n    self.wrap = cols => {\n        wrapSet = true;\n        wrap = cols;\n    };\n    function getWrap() {\n        if (!wrapSet) {\n            wrap = windowWidth();\n            wrapSet = true;\n        }\n        return wrap;\n    }\n    const deferY18nLookupPrefix = '__yargsString__:';\n    self.deferY18nLookup = str => deferY18nLookupPrefix + str;\n    self.help = function help() {\n        if (cachedHelpMessage)\n            return cachedHelpMessage;\n        normalizeAliases();\n        const base$0 = yargs.customScriptName\n            ? yargs.$0\n            : shim.path.basename(yargs.$0);\n        const demandedOptions = yargs.getDemandedOptions();\n        const demandedCommands = yargs.getDemandedCommands();\n        const deprecatedOptions = yargs.getDeprecatedOptions();\n        const groups = yargs.getGroups();\n        const options = yargs.getOptions();\n        let keys = [];\n        keys = keys.concat(Object.keys(descriptions));\n        keys = keys.concat(Object.keys(demandedOptions));\n        keys = keys.concat(Object.keys(demandedCommands));\n        keys = keys.concat(Object.keys(options.default));\n        keys = keys.filter(filterHiddenOptions);\n        keys = Object.keys(keys.reduce((acc, key) => {\n            if (key !== '_')\n                acc[key] = true;\n            return acc;\n        }, {}));\n        const theWrap = getWrap();\n        const ui = shim.cliui({\n            width: theWrap,\n            wrap: !!theWrap,\n        });\n        if (!usageDisabled) {\n            if (usages.length) {\n                usages.forEach(usage => {\n                    ui.div(`${usage[0].replace(/\\$0/g, base$0)}`);\n                    if (usage[1]) {\n                        ui.div({ text: `${usage[1]}`, padding: [1, 0, 0, 0] });\n                    }\n                });\n                ui.div();\n            }\n            else if (commands.length) {\n                let u = null;\n                if (demandedCommands._) {\n                    u = `${base$0} <${__('command')}>\\n`;\n                }\n                else {\n                    u = `${base$0} [${__('command')}]\\n`;\n                }\n                ui.div(`${u}`);\n            }\n        }\n        if (commands.length) {\n            ui.div(__('Commands:'));\n            const context = yargs.getContext();\n            const parentCommands = context.commands.length\n                ? `${context.commands.join(' ')} `\n                : '';\n            if (yargs.getParserConfiguration()['sort-commands'] === true) {\n                commands = commands.sort((a, b) => a[0].localeCompare(b[0]));\n            }\n            commands.forEach(command => {\n                const commandString = `${base$0} ${parentCommands}${command[0].replace(/^\\$0 ?/, '')}`;\n                ui.span({\n                    text: commandString,\n                    padding: [0, 2, 0, 2],\n                    width: maxWidth(commands, theWrap, `${base$0}${parentCommands}`) + 4,\n                }, { text: command[1] });\n                const hints = [];\n                if (command[2])\n                    hints.push(`[${__('default')}]`);\n                if (command[3] && command[3].length) {\n                    hints.push(`[${__('aliases:')} ${command[3].join(', ')}]`);\n                }\n                if (command[4]) {\n                    if (typeof command[4] === 'string') {\n                        hints.push(`[${__('deprecated: %s', command[4])}]`);\n                    }\n                    else {\n                        hints.push(`[${__('deprecated')}]`);\n                    }\n                }\n                if (hints.length) {\n                    ui.div({\n                        text: hints.join(' '),\n                        padding: [0, 0, 0, 2],\n                        align: 'right',\n                    });\n                }\n                else {\n                    ui.div();\n                }\n            });\n            ui.div();\n        }\n        const aliasKeys = (Object.keys(options.alias) || []).concat(Object.keys(yargs.parsed.newAliases) || []);\n        keys = keys.filter(key => !yargs.parsed.newAliases[key] &&\n            aliasKeys.every(alias => (options.alias[alias] || []).indexOf(key) === -1));\n        const defaultGroup = __('Options:');\n        if (!groups[defaultGroup])\n            groups[defaultGroup] = [];\n        addUngroupedKeys(keys, options.alias, groups, defaultGroup);\n        const isLongSwitch = (sw) => /^--/.test(getText(sw));\n        const displayedGroups = Object.keys(groups)\n            .filter(groupName => groups[groupName].length > 0)\n            .map(groupName => {\n            const normalizedKeys = groups[groupName]\n                .filter(filterHiddenOptions)\n                .map(key => {\n                if (~aliasKeys.indexOf(key))\n                    return key;\n                for (let i = 0, aliasKey; (aliasKey = aliasKeys[i]) !== undefined; i++) {\n                    if (~(options.alias[aliasKey] || []).indexOf(key))\n                        return aliasKey;\n                }\n                return key;\n            });\n            return { groupName, normalizedKeys };\n        })\n            .filter(({ normalizedKeys }) => normalizedKeys.length > 0)\n            .map(({ groupName, normalizedKeys }) => {\n            const switches = normalizedKeys.reduce((acc, key) => {\n                acc[key] = [key]\n                    .concat(options.alias[key] || [])\n                    .map(sw => {\n                    if (groupName === self.getPositionalGroupName())\n                        return sw;\n                    else {\n                        return ((/^[0-9]$/.test(sw)\n                            ? ~options.boolean.indexOf(key)\n                                ? '-'\n                                : '--'\n                            : sw.length > 1\n                                ? '--'\n                                : '-') + sw);\n                    }\n                })\n                    .sort((sw1, sw2) => isLongSwitch(sw1) === isLongSwitch(sw2)\n                    ? 0\n                    : isLongSwitch(sw1)\n                        ? 1\n                        : -1)\n                    .join(', ');\n                return acc;\n            }, {});\n            return { groupName, normalizedKeys, switches };\n        });\n        const shortSwitchesUsed = displayedGroups\n            .filter(({ groupName }) => groupName !== self.getPositionalGroupName())\n            .some(({ normalizedKeys, switches }) => !normalizedKeys.every(key => isLongSwitch(switches[key])));\n        if (shortSwitchesUsed) {\n            displayedGroups\n                .filter(({ groupName }) => groupName !== self.getPositionalGroupName())\n                .forEach(({ normalizedKeys, switches }) => {\n                normalizedKeys.forEach(key => {\n                    if (isLongSwitch(switches[key])) {\n                        switches[key] = addIndentation(switches[key], '-x, '.length);\n                    }\n                });\n            });\n        }\n        displayedGroups.forEach(({ groupName, normalizedKeys, switches }) => {\n            ui.div(groupName);\n            normalizedKeys.forEach(key => {\n                const kswitch = switches[key];\n                let desc = descriptions[key] || '';\n                let type = null;\n                if (~desc.lastIndexOf(deferY18nLookupPrefix))\n                    desc = __(desc.substring(deferY18nLookupPrefix.length));\n                if (~options.boolean.indexOf(key))\n                    type = `[${__('boolean')}]`;\n                if (~options.count.indexOf(key))\n                    type = `[${__('count')}]`;\n                if (~options.string.indexOf(key))\n                    type = `[${__('string')}]`;\n                if (~options.normalize.indexOf(key))\n                    type = `[${__('string')}]`;\n                if (~options.array.indexOf(key))\n                    type = `[${__('array')}]`;\n                if (~options.number.indexOf(key))\n                    type = `[${__('number')}]`;\n                const deprecatedExtra = (deprecated) => typeof deprecated === 'string'\n                    ? `[${__('deprecated: %s', deprecated)}]`\n                    : `[${__('deprecated')}]`;\n                const extra = [\n                    key in deprecatedOptions\n                        ? deprecatedExtra(deprecatedOptions[key])\n                        : null,\n                    type,\n                    key in demandedOptions ? `[${__('required')}]` : null,\n                    options.choices && options.choices[key]\n                        ? `[${__('choices:')} ${self.stringifiedValues(options.choices[key])}]`\n                        : null,\n                    defaultString(options.default[key], options.defaultDescription[key]),\n                ]\n                    .filter(Boolean)\n                    .join(' ');\n                ui.span({\n                    text: getText(kswitch),\n                    padding: [0, 2, 0, 2 + getIndentation(kswitch)],\n                    width: maxWidth(switches, theWrap) + 4,\n                }, desc);\n                if (extra)\n                    ui.div({ text: extra, padding: [0, 0, 0, 2], align: 'right' });\n                else\n                    ui.div();\n            });\n            ui.div();\n        });\n        if (examples.length) {\n            ui.div(__('Examples:'));\n            examples.forEach(example => {\n                example[0] = example[0].replace(/\\$0/g, base$0);\n            });\n            examples.forEach(example => {\n                if (example[1] === '') {\n                    ui.div({\n                        text: example[0],\n                        padding: [0, 2, 0, 2],\n                    });\n                }\n                else {\n                    ui.div({\n                        text: example[0],\n                        padding: [0, 2, 0, 2],\n                        width: maxWidth(examples, theWrap) + 4,\n                    }, {\n                        text: example[1],\n                    });\n                }\n            });\n            ui.div();\n        }\n        if (epilogs.length > 0) {\n            const e = epilogs\n                .map(epilog => epilog.replace(/\\$0/g, base$0))\n                .join('\\n');\n            ui.div(`${e}\\n`);\n        }\n        return ui.toString().replace(/\\s*$/, '');\n    };\n    function maxWidth(table, theWrap, modifier) {\n        let width = 0;\n        if (!Array.isArray(table)) {\n            table = Object.values(table).map(v => [v]);\n        }\n        table.forEach(v => {\n            width = Math.max(shim.stringWidth(modifier ? `${modifier} ${getText(v[0])}` : getText(v[0])) + getIndentation(v[0]), width);\n        });\n        if (theWrap)\n            width = Math.min(width, parseInt((theWrap * 0.5).toString(), 10));\n        return width;\n    }\n    function normalizeAliases() {\n        const demandedOptions = yargs.getDemandedOptions();\n        const options = yargs.getOptions();\n        (Object.keys(options.alias) || []).forEach(key => {\n            options.alias[key].forEach(alias => {\n                if (descriptions[alias])\n                    self.describe(key, descriptions[alias]);\n                if (alias in demandedOptions)\n                    yargs.demandOption(key, demandedOptions[alias]);\n                if (~options.boolean.indexOf(alias))\n                    yargs.boolean(key);\n                if (~options.count.indexOf(alias))\n                    yargs.count(key);\n                if (~options.string.indexOf(alias))\n                    yargs.string(key);\n                if (~options.normalize.indexOf(alias))\n                    yargs.normalize(key);\n                if (~options.array.indexOf(alias))\n                    yargs.array(key);\n                if (~options.number.indexOf(alias))\n                    yargs.number(key);\n            });\n        });\n    }\n    let cachedHelpMessage;\n    self.cacheHelpMessage = function () {\n        cachedHelpMessage = this.help();\n    };\n    self.clearCachedHelpMessage = function () {\n        cachedHelpMessage = undefined;\n    };\n    function addUngroupedKeys(keys, aliases, groups, defaultGroup) {\n        let groupedKeys = [];\n        let toCheck = null;\n        Object.keys(groups).forEach(group => {\n            groupedKeys = groupedKeys.concat(groups[group]);\n        });\n        keys.forEach(key => {\n            toCheck = [key].concat(aliases[key]);\n            if (!toCheck.some(k => groupedKeys.indexOf(k) !== -1)) {\n                groups[defaultGroup].push(key);\n            }\n        });\n        return groupedKeys;\n    }\n    function filterHiddenOptions(key) {\n        return (yargs.getOptions().hiddenOptions.indexOf(key) < 0 ||\n            yargs.parsed.argv[yargs.getOptions().showHiddenOpt]);\n    }\n    self.showHelp = (level) => {\n        const logger = yargs._getLoggerInstance();\n        if (!level)\n            level = 'error';\n        const emit = typeof level === 'function' ? level : logger[level];\n        emit(self.help());\n    };\n    self.functionDescription = fn => {\n        const description = fn.name\n            ? shim.Parser.decamelize(fn.name, '-')\n            : __('generated-value');\n        return ['(', description, ')'].join('');\n    };\n    self.stringifiedValues = function stringifiedValues(values, separator) {\n        let string = '';\n        const sep = separator || ', ';\n        const array = [].concat(values);\n        if (!values || !array.length)\n            return string;\n        array.forEach(value => {\n            if (string.length)\n                string += sep;\n            string += JSON.stringify(value);\n        });\n        return string;\n    };\n    function defaultString(value, defaultDescription) {\n        let string = `[${__('default:')} `;\n        if (value === undefined && !defaultDescription)\n            return null;\n        if (defaultDescription) {\n            string += defaultDescription;\n        }\n        else {\n            switch (typeof value) {\n                case 'string':\n                    string += `\"${value}\"`;\n                    break;\n                case 'object':\n                    string += JSON.stringify(value);\n                    break;\n                default:\n                    string += value;\n            }\n        }\n        return `${string}]`;\n    }\n    function windowWidth() {\n        const maxWidth = 80;\n        if (shim.process.stdColumns) {\n            return Math.min(maxWidth, shim.process.stdColumns);\n        }\n        else {\n            return maxWidth;\n        }\n    }\n    let version = null;\n    self.version = ver => {\n        version = ver;\n    };\n    self.showVersion = () => {\n        const logger = yargs._getLoggerInstance();\n        logger.log(version);\n    };\n    self.reset = function reset(localLookup) {\n        failMessage = null;\n        failureOutput = false;\n        usages = [];\n        usageDisabled = false;\n        epilogs = [];\n        examples = [];\n        commands = [];\n        descriptions = objFilter(descriptions, k => !localLookup[k]);\n        return self;\n    };\n    const frozens = [];\n    self.freeze = function freeze() {\n        frozens.push({\n            failMessage,\n            failureOutput,\n            usages,\n            usageDisabled,\n            epilogs,\n            examples,\n            commands,\n            descriptions,\n        });\n    };\n    self.unfreeze = function unfreeze() {\n        const frozen = frozens.pop();\n        assertNotStrictEqual(frozen, undefined, shim);\n        ({\n            failMessage,\n            failureOutput,\n            usages,\n            usageDisabled,\n            epilogs,\n            examples,\n            commands,\n            descriptions,\n        } = frozen);\n    };\n    return self;\n}\nfunction isIndentedText(text) {\n    return typeof text === 'object';\n}\nfunction addIndentation(text, indent) {\n    return isIndentedText(text)\n        ? { text: text.text, indentation: text.indentation + indent }\n        : { text, indentation: indent };\n}\nfunction getIndentation(text) {\n    return isIndentedText(text) ? text.indentation : 0;\n}\nfunction getText(text) {\n    return isIndentedText(text) ? text.text : text;\n}\n\nconst completionShTemplate = `###-begin-{{app_name}}-completions-###\n#\n# yargs command completion script\n#\n# Installation: {{app_path}} {{completion_command}} >> ~/.bashrc\n#    or {{app_path}} {{completion_command}} >> ~/.bash_profile on OSX.\n#\n_yargs_completions()\n{\n    local cur_word args type_list\n\n    cur_word=\"\\${COMP_WORDS[COMP_CWORD]}\"\n    args=(\"\\${COMP_WORDS[@]}\")\n\n    # ask yargs to generate completions.\n    type_list=$({{app_path}} --get-yargs-completions \"\\${args[@]}\")\n\n    COMPREPLY=( $(compgen -W \"\\${type_list}\" -- \\${cur_word}) )\n\n    # if no match was found, fall back to filename completion\n    if [ \\${#COMPREPLY[@]} -eq 0 ]; then\n      COMPREPLY=()\n    fi\n\n    return 0\n}\ncomplete -o default -F _yargs_completions {{app_name}}\n###-end-{{app_name}}-completions-###\n`;\nconst completionZshTemplate = `###-begin-{{app_name}}-completions-###\n#\n# yargs command completion script\n#\n# Installation: {{app_path}} {{completion_command}} >> ~/.zshrc\n#    or {{app_path}} {{completion_command}} >> ~/.zsh_profile on OSX.\n#\n_{{app_name}}_yargs_completions()\n{\n  local reply\n  local si=$IFS\n  IFS=$'\\n' reply=($(COMP_CWORD=\"$((CURRENT-1))\" COMP_LINE=\"$BUFFER\" COMP_POINT=\"$CURSOR\" {{app_path}} --get-yargs-completions \"\\${words[@]}\"))\n  IFS=$si\n  _describe 'values' reply\n}\ncompdef _{{app_name}}_yargs_completions {{app_name}}\n###-end-{{app_name}}-completions-###\n`;\n\nfunction completion(yargs, usage, command, shim) {\n    const self = {\n        completionKey: 'get-yargs-completions',\n    };\n    let aliases;\n    self.setParsed = function setParsed(parsed) {\n        aliases = parsed.aliases;\n    };\n    const zshShell = (shim.getEnv('SHELL') && shim.getEnv('SHELL').indexOf('zsh') !== -1) ||\n        (shim.getEnv('ZSH_NAME') && shim.getEnv('ZSH_NAME').indexOf('zsh') !== -1);\n    self.getCompletion = function getCompletion(args, done) {\n        const completions = [];\n        const current = args.length ? args[args.length - 1] : '';\n        const argv = yargs.parse(args, true);\n        const parentCommands = yargs.getContext().commands;\n        function runCompletionFunction(argv) {\n            assertNotStrictEqual(completionFunction, null, shim);\n            if (isSyncCompletionFunction(completionFunction)) {\n                const result = completionFunction(current, argv);\n                if (isPromise(result)) {\n                    return result\n                        .then(list => {\n                        shim.process.nextTick(() => {\n                            done(list);\n                        });\n                    })\n                        .catch(err => {\n                        shim.process.nextTick(() => {\n                            throw err;\n                        });\n                    });\n                }\n                return done(result);\n            }\n            else {\n                return completionFunction(current, argv, completions => {\n                    done(completions);\n                });\n            }\n        }\n        if (completionFunction) {\n            return isPromise(argv)\n                ? argv.then(runCompletionFunction)\n                : runCompletionFunction(argv);\n        }\n        const handlers = command.getCommandHandlers();\n        for (let i = 0, ii = args.length; i < ii; ++i) {\n            if (handlers[args[i]] && handlers[args[i]].builder) {\n                const builder = handlers[args[i]].builder;\n                if (isCommandBuilderCallback(builder)) {\n                    const y = yargs.reset();\n                    builder(y);\n                    return y.argv;\n                }\n            }\n        }\n        if (!current.match(/^-/) &&\n            parentCommands[parentCommands.length - 1] !== current) {\n            usage.getCommands().forEach(usageCommand => {\n                const commandName = parseCommand(usageCommand[0]).cmd;\n                if (args.indexOf(commandName) === -1) {\n                    if (!zshShell) {\n                        completions.push(commandName);\n                    }\n                    else {\n                        const desc = usageCommand[1] || '';\n                        completions.push(commandName.replace(/:/g, '\\\\:') + ':' + desc);\n                    }\n                }\n            });\n        }\n        if (current.match(/^-/) || (current === '' && completions.length === 0)) {\n            const descs = usage.getDescriptions();\n            const options = yargs.getOptions();\n            Object.keys(options.key).forEach(key => {\n                const negable = !!options.configuration['boolean-negation'] &&\n                    options.boolean.includes(key);\n                let keyAndAliases = [key].concat(aliases[key] || []);\n                if (negable)\n                    keyAndAliases = keyAndAliases.concat(keyAndAliases.map(key => `no-${key}`));\n                function completeOptionKey(key) {\n                    const notInArgs = keyAndAliases.every(val => args.indexOf(`--${val}`) === -1);\n                    if (notInArgs) {\n                        const startsByTwoDashes = (s) => /^--/.test(s);\n                        const isShortOption = (s) => /^[^0-9]$/.test(s);\n                        const dashes = !startsByTwoDashes(current) && isShortOption(key) ? '-' : '--';\n                        if (!zshShell) {\n                            completions.push(dashes + key);\n                        }\n                        else {\n                            const desc = descs[key] || '';\n                            completions.push(dashes +\n                                `${key.replace(/:/g, '\\\\:')}:${desc.replace('__yargsString__:', '')}`);\n                        }\n                    }\n                }\n                completeOptionKey(key);\n                if (negable && !!options.default[key])\n                    completeOptionKey(`no-${key}`);\n            });\n        }\n        done(completions);\n    };\n    self.generateCompletionScript = function generateCompletionScript($0, cmd) {\n        let script = zshShell\n            ? completionZshTemplate\n            : completionShTemplate;\n        const name = shim.path.basename($0);\n        if ($0.match(/\\.js$/))\n            $0 = `./${$0}`;\n        script = script.replace(/{{app_name}}/g, name);\n        script = script.replace(/{{completion_command}}/g, cmd);\n        return script.replace(/{{app_path}}/g, $0);\n    };\n    let completionFunction = null;\n    self.registerFunction = fn => {\n        completionFunction = fn;\n    };\n    return self;\n}\nfunction isSyncCompletionFunction(completionFunction) {\n    return completionFunction.length < 3;\n}\n\nfunction levenshtein(a, b) {\n    if (a.length === 0)\n        return b.length;\n    if (b.length === 0)\n        return a.length;\n    const matrix = [];\n    let i;\n    for (i = 0; i <= b.length; i++) {\n        matrix[i] = [i];\n    }\n    let j;\n    for (j = 0; j <= a.length; j++) {\n        matrix[0][j] = j;\n    }\n    for (i = 1; i <= b.length; i++) {\n        for (j = 1; j <= a.length; j++) {\n            if (b.charAt(i - 1) === a.charAt(j - 1)) {\n                matrix[i][j] = matrix[i - 1][j - 1];\n            }\n            else {\n                matrix[i][j] = Math.min(matrix[i - 1][j - 1] + 1, Math.min(matrix[i][j - 1] + 1, matrix[i - 1][j] + 1));\n            }\n        }\n    }\n    return matrix[b.length][a.length];\n}\n\nconst specialKeys = ['$0', '--', '_'];\nfunction validation(yargs, usage, y18n, shim) {\n    const __ = y18n.__;\n    const __n = y18n.__n;\n    const self = {};\n    self.nonOptionCount = function nonOptionCount(argv) {\n        const demandedCommands = yargs.getDemandedCommands();\n        const positionalCount = argv._.length + (argv['--'] ? argv['--'].length : 0);\n        const _s = positionalCount - yargs.getContext().commands.length;\n        if (demandedCommands._ &&\n            (_s < demandedCommands._.min || _s > demandedCommands._.max)) {\n            if (_s < demandedCommands._.min) {\n                if (demandedCommands._.minMsg !== undefined) {\n                    usage.fail(demandedCommands._.minMsg\n                        ? demandedCommands._.minMsg\n                            .replace(/\\$0/g, _s.toString())\n                            .replace(/\\$1/, demandedCommands._.min.toString())\n                        : null);\n                }\n                else {\n                    usage.fail(__n('Not enough non-option arguments: got %s, need at least %s', 'Not enough non-option arguments: got %s, need at least %s', _s, _s.toString(), demandedCommands._.min.toString()));\n                }\n            }\n            else if (_s > demandedCommands._.max) {\n                if (demandedCommands._.maxMsg !== undefined) {\n                    usage.fail(demandedCommands._.maxMsg\n                        ? demandedCommands._.maxMsg\n                            .replace(/\\$0/g, _s.toString())\n                            .replace(/\\$1/, demandedCommands._.max.toString())\n                        : null);\n                }\n                else {\n                    usage.fail(__n('Too many non-option arguments: got %s, maximum of %s', 'Too many non-option arguments: got %s, maximum of %s', _s, _s.toString(), demandedCommands._.max.toString()));\n                }\n            }\n        }\n    };\n    self.positionalCount = function positionalCount(required, observed) {\n        if (observed < required) {\n            usage.fail(__n('Not enough non-option arguments: got %s, need at least %s', 'Not enough non-option arguments: got %s, need at least %s', observed, observed + '', required + ''));\n        }\n    };\n    self.requiredArguments = function requiredArguments(argv) {\n        const demandedOptions = yargs.getDemandedOptions();\n        let missing = null;\n        for (const key of Object.keys(demandedOptions)) {\n            if (!Object.prototype.hasOwnProperty.call(argv, key) ||\n                typeof argv[key] === 'undefined') {\n                missing = missing || {};\n                missing[key] = demandedOptions[key];\n            }\n        }\n        if (missing) {\n            const customMsgs = [];\n            for (const key of Object.keys(missing)) {\n                const msg = missing[key];\n                if (msg && customMsgs.indexOf(msg) < 0) {\n                    customMsgs.push(msg);\n                }\n            }\n            const customMsg = customMsgs.length ? `\\n${customMsgs.join('\\n')}` : '';\n            usage.fail(__n('Missing required argument: %s', 'Missing required arguments: %s', Object.keys(missing).length, Object.keys(missing).join(', ') + customMsg));\n        }\n    };\n    self.unknownArguments = function unknownArguments(argv, aliases, positionalMap, isDefaultCommand, checkPositionals = true) {\n        const commandKeys = yargs.getCommandInstance().getCommands();\n        const unknown = [];\n        const currentContext = yargs.getContext();\n        Object.keys(argv).forEach(key => {\n            if (specialKeys.indexOf(key) === -1 &&\n                !Object.prototype.hasOwnProperty.call(positionalMap, key) &&\n                !Object.prototype.hasOwnProperty.call(yargs._getParseContext(), key) &&\n                !self.isValidAndSomeAliasIsNotNew(key, aliases)) {\n                unknown.push(key);\n            }\n        });\n        if (checkPositionals &&\n            (currentContext.commands.length > 0 ||\n                commandKeys.length > 0 ||\n                isDefaultCommand)) {\n            argv._.slice(currentContext.commands.length).forEach(key => {\n                if (commandKeys.indexOf('' + key) === -1) {\n                    unknown.push('' + key);\n                }\n            });\n        }\n        if (unknown.length > 0) {\n            usage.fail(__n('Unknown argument: %s', 'Unknown arguments: %s', unknown.length, unknown.join(', ')));\n        }\n    };\n    self.unknownCommands = function unknownCommands(argv) {\n        const commandKeys = yargs.getCommandInstance().getCommands();\n        const unknown = [];\n        const currentContext = yargs.getContext();\n        if (currentContext.commands.length > 0 || commandKeys.length > 0) {\n            argv._.slice(currentContext.commands.length).forEach(key => {\n                if (commandKeys.indexOf('' + key) === -1) {\n                    unknown.push('' + key);\n                }\n            });\n        }\n        if (unknown.length > 0) {\n            usage.fail(__n('Unknown command: %s', 'Unknown commands: %s', unknown.length, unknown.join(', ')));\n            return true;\n        }\n        else {\n            return false;\n        }\n    };\n    self.isValidAndSomeAliasIsNotNew = function isValidAndSomeAliasIsNotNew(key, aliases) {\n        if (!Object.prototype.hasOwnProperty.call(aliases, key)) {\n            return false;\n        }\n        const newAliases = yargs.parsed.newAliases;\n        for (const a of [key, ...aliases[key]]) {\n            if (!Object.prototype.hasOwnProperty.call(newAliases, a) ||\n                !newAliases[key]) {\n                return true;\n            }\n        }\n        return false;\n    };\n    self.limitedChoices = function limitedChoices(argv) {\n        const options = yargs.getOptions();\n        const invalid = {};\n        if (!Object.keys(options.choices).length)\n            return;\n        Object.keys(argv).forEach(key => {\n            if (specialKeys.indexOf(key) === -1 &&\n                Object.prototype.hasOwnProperty.call(options.choices, key)) {\n                [].concat(argv[key]).forEach(value => {\n                    if (options.choices[key].indexOf(value) === -1 &&\n                        value !== undefined) {\n                        invalid[key] = (invalid[key] || []).concat(value);\n                    }\n                });\n            }\n        });\n        const invalidKeys = Object.keys(invalid);\n        if (!invalidKeys.length)\n            return;\n        let msg = __('Invalid values:');\n        invalidKeys.forEach(key => {\n            msg += `\\n  ${__('Argument: %s, Given: %s, Choices: %s', key, usage.stringifiedValues(invalid[key]), usage.stringifiedValues(options.choices[key]))}`;\n        });\n        usage.fail(msg);\n    };\n    let checks = [];\n    self.check = function check(f, global) {\n        checks.push({\n            func: f,\n            global,\n        });\n    };\n    self.customChecks = function customChecks(argv, aliases) {\n        for (let i = 0, f; (f = checks[i]) !== undefined; i++) {\n            const func = f.func;\n            let result = null;\n            try {\n                result = func(argv, aliases);\n            }\n            catch (err) {\n                usage.fail(err.message ? err.message : err, err);\n                continue;\n            }\n            if (!result) {\n                usage.fail(__('Argument check failed: %s', func.toString()));\n            }\n            else if (typeof result === 'string' || result instanceof Error) {\n                usage.fail(result.toString(), result);\n            }\n        }\n    };\n    let implied = {};\n    self.implies = function implies(key, value) {\n        argsert('<string|object> [array|number|string]', [key, value], arguments.length);\n        if (typeof key === 'object') {\n            Object.keys(key).forEach(k => {\n                self.implies(k, key[k]);\n            });\n        }\n        else {\n            yargs.global(key);\n            if (!implied[key]) {\n                implied[key] = [];\n            }\n            if (Array.isArray(value)) {\n                value.forEach(i => self.implies(key, i));\n            }\n            else {\n                assertNotStrictEqual(value, undefined, shim);\n                implied[key].push(value);\n            }\n        }\n    };\n    self.getImplied = function getImplied() {\n        return implied;\n    };\n    function keyExists(argv, val) {\n        const num = Number(val);\n        val = isNaN(num) ? val : num;\n        if (typeof val === 'number') {\n            val = argv._.length >= val;\n        }\n        else if (val.match(/^--no-.+/)) {\n            val = val.match(/^--no-(.+)/)[1];\n            val = !argv[val];\n        }\n        else {\n            val = argv[val];\n        }\n        return val;\n    }\n    self.implications = function implications(argv) {\n        const implyFail = [];\n        Object.keys(implied).forEach(key => {\n            const origKey = key;\n            (implied[key] || []).forEach(value => {\n                let key = origKey;\n                const origValue = value;\n                key = keyExists(argv, key);\n                value = keyExists(argv, value);\n                if (key && !value) {\n                    implyFail.push(` ${origKey} -> ${origValue}`);\n                }\n            });\n        });\n        if (implyFail.length) {\n            let msg = `${__('Implications failed:')}\\n`;\n            implyFail.forEach(value => {\n                msg += value;\n            });\n            usage.fail(msg);\n        }\n    };\n    let conflicting = {};\n    self.conflicts = function conflicts(key, value) {\n        argsert('<string|object> [array|string]', [key, value], arguments.length);\n        if (typeof key === 'object') {\n            Object.keys(key).forEach(k => {\n                self.conflicts(k, key[k]);\n            });\n        }\n        else {\n            yargs.global(key);\n            if (!conflicting[key]) {\n                conflicting[key] = [];\n            }\n            if (Array.isArray(value)) {\n                value.forEach(i => self.conflicts(key, i));\n            }\n            else {\n                conflicting[key].push(value);\n            }\n        }\n    };\n    self.getConflicting = () => conflicting;\n    self.conflicting = function conflictingFn(argv) {\n        Object.keys(argv).forEach(key => {\n            if (conflicting[key]) {\n                conflicting[key].forEach(value => {\n                    if (value && argv[key] !== undefined && argv[value] !== undefined) {\n                        usage.fail(__('Arguments %s and %s are mutually exclusive', key, value));\n                    }\n                });\n            }\n        });\n    };\n    self.recommendCommands = function recommendCommands(cmd, potentialCommands) {\n        const threshold = 3;\n        potentialCommands = potentialCommands.sort((a, b) => b.length - a.length);\n        let recommended = null;\n        let bestDistance = Infinity;\n        for (let i = 0, candidate; (candidate = potentialCommands[i]) !== undefined; i++) {\n            const d = levenshtein(cmd, candidate);\n            if (d <= threshold && d < bestDistance) {\n                bestDistance = d;\n                recommended = candidate;\n            }\n        }\n        if (recommended)\n            usage.fail(__('Did you mean %s?', recommended));\n    };\n    self.reset = function reset(localLookup) {\n        implied = objFilter(implied, k => !localLookup[k]);\n        conflicting = objFilter(conflicting, k => !localLookup[k]);\n        checks = checks.filter(c => c.global);\n        return self;\n    };\n    const frozens = [];\n    self.freeze = function freeze() {\n        frozens.push({\n            implied,\n            checks,\n            conflicting,\n        });\n    };\n    self.unfreeze = function unfreeze() {\n        const frozen = frozens.pop();\n        assertNotStrictEqual(frozen, undefined, shim);\n        ({ implied, checks, conflicting } = frozen);\n    };\n    return self;\n}\n\nlet shim$1;\nfunction YargsWithShim(_shim) {\n    shim$1 = _shim;\n    return Yargs;\n}\nfunction Yargs(processArgs = [], cwd = shim$1.process.cwd(), parentRequire) {\n    const self = {};\n    let command$1;\n    let completion$1 = null;\n    let groups = {};\n    const globalMiddleware = [];\n    let output = '';\n    const preservedGroups = {};\n    let usage$1;\n    let validation$1;\n    let handlerFinishCommand = null;\n    const y18n = shim$1.y18n;\n    self.middleware = globalMiddlewareFactory(globalMiddleware, self);\n    self.scriptName = function (scriptName) {\n        self.customScriptName = true;\n        self.$0 = scriptName;\n        return self;\n    };\n    let default$0;\n    if (/\\b(node|iojs|electron)(\\.exe)?$/.test(shim$1.process.argv()[0])) {\n        default$0 = shim$1.process.argv().slice(1, 2);\n    }\n    else {\n        default$0 = shim$1.process.argv().slice(0, 1);\n    }\n    self.$0 = default$0\n        .map(x => {\n        const b = rebase(cwd, x);\n        return x.match(/^(\\/|([a-zA-Z]:)?\\\\)/) && b.length < x.length ? b : x;\n    })\n        .join(' ')\n        .trim();\n    if (shim$1.getEnv('_') && shim$1.getProcessArgvBin() === shim$1.getEnv('_')) {\n        self.$0 = shim$1\n            .getEnv('_')\n            .replace(`${shim$1.path.dirname(shim$1.process.execPath())}/`, '');\n    }\n    const context = { resets: -1, commands: [], fullCommands: [], files: [] };\n    self.getContext = () => context;\n    let hasOutput = false;\n    let exitError = null;\n    self.exit = (code, err) => {\n        hasOutput = true;\n        exitError = err;\n        if (exitProcess)\n            shim$1.process.exit(code);\n    };\n    let completionCommand = null;\n    self.completion = function (cmd, desc, fn) {\n        argsert('[string] [string|boolean|function] [function]', [cmd, desc, fn], arguments.length);\n        if (typeof desc === 'function') {\n            fn = desc;\n            desc = undefined;\n        }\n        completionCommand = cmd || completionCommand || 'completion';\n        if (!desc && desc !== false) {\n            desc = 'generate completion script';\n        }\n        self.command(completionCommand, desc);\n        if (fn)\n            completion$1.registerFunction(fn);\n        return self;\n    };\n    let options;\n    self.resetOptions = self.reset = function resetOptions(aliases = {}) {\n        context.resets++;\n        options = options || {};\n        const tmpOptions = {};\n        tmpOptions.local = options.local ? options.local : [];\n        tmpOptions.configObjects = options.configObjects\n            ? options.configObjects\n            : [];\n        const localLookup = {};\n        tmpOptions.local.forEach(l => {\n            localLookup[l] = true;\n            (aliases[l] || []).forEach(a => {\n                localLookup[a] = true;\n            });\n        });\n        Object.assign(preservedGroups, Object.keys(groups).reduce((acc, groupName) => {\n            const keys = groups[groupName].filter(key => !(key in localLookup));\n            if (keys.length > 0) {\n                acc[groupName] = keys;\n            }\n            return acc;\n        }, {}));\n        groups = {};\n        const arrayOptions = [\n            'array',\n            'boolean',\n            'string',\n            'skipValidation',\n            'count',\n            'normalize',\n            'number',\n            'hiddenOptions',\n        ];\n        const objectOptions = [\n            'narg',\n            'key',\n            'alias',\n            'default',\n            'defaultDescription',\n            'config',\n            'choices',\n            'demandedOptions',\n            'demandedCommands',\n            'coerce',\n            'deprecatedOptions',\n        ];\n        arrayOptions.forEach(k => {\n            tmpOptions[k] = (options[k] || []).filter((k) => !localLookup[k]);\n        });\n        objectOptions.forEach((k) => {\n            tmpOptions[k] = objFilter(options[k], k => !localLookup[k]);\n        });\n        tmpOptions.envPrefix = options.envPrefix;\n        options = tmpOptions;\n        usage$1 = usage$1 ? usage$1.reset(localLookup) : usage(self, y18n, shim$1);\n        validation$1 = validation$1\n            ? validation$1.reset(localLookup)\n            : validation(self, usage$1, y18n, shim$1);\n        command$1 = command$1\n            ? command$1.reset()\n            : command(self, usage$1, validation$1, globalMiddleware, shim$1);\n        if (!completion$1)\n            completion$1 = completion(self, usage$1, command$1, shim$1);\n        completionCommand = null;\n        output = '';\n        exitError = null;\n        hasOutput = false;\n        self.parsed = false;\n        return self;\n    };\n    self.resetOptions();\n    const frozens = [];\n    function freeze() {\n        frozens.push({\n            options,\n            configObjects: options.configObjects.slice(0),\n            exitProcess,\n            groups,\n            strict,\n            strictCommands,\n            strictOptions,\n            completionCommand,\n            output,\n            exitError,\n            hasOutput,\n            parsed: self.parsed,\n            parseFn,\n            parseContext,\n            handlerFinishCommand,\n        });\n        usage$1.freeze();\n        validation$1.freeze();\n        command$1.freeze();\n    }\n    function unfreeze() {\n        const frozen = frozens.pop();\n        assertNotStrictEqual(frozen, undefined, shim$1);\n        let configObjects;\n        ({\n            options,\n            configObjects,\n            exitProcess,\n            groups,\n            output,\n            exitError,\n            hasOutput,\n            parsed: self.parsed,\n            strict,\n            strictCommands,\n            strictOptions,\n            completionCommand,\n            parseFn,\n            parseContext,\n            handlerFinishCommand,\n        } = frozen);\n        options.configObjects = configObjects;\n        usage$1.unfreeze();\n        validation$1.unfreeze();\n        command$1.unfreeze();\n    }\n    self.boolean = function (keys) {\n        argsert('<array|string>', [keys], arguments.length);\n        populateParserHintArray('boolean', keys);\n        return self;\n    };\n    self.array = function (keys) {\n        argsert('<array|string>', [keys], arguments.length);\n        populateParserHintArray('array', keys);\n        return self;\n    };\n    self.number = function (keys) {\n        argsert('<array|string>', [keys], arguments.length);\n        populateParserHintArray('number', keys);\n        return self;\n    };\n    self.normalize = function (keys) {\n        argsert('<array|string>', [keys], arguments.length);\n        populateParserHintArray('normalize', keys);\n        return self;\n    };\n    self.count = function (keys) {\n        argsert('<array|string>', [keys], arguments.length);\n        populateParserHintArray('count', keys);\n        return self;\n    };\n    self.string = function (keys) {\n        argsert('<array|string>', [keys], arguments.length);\n        populateParserHintArray('string', keys);\n        return self;\n    };\n    self.requiresArg = function (keys) {\n        argsert('<array|string|object> [number]', [keys], arguments.length);\n        if (typeof keys === 'string' && options.narg[keys]) {\n            return self;\n        }\n        else {\n            populateParserHintSingleValueDictionary(self.requiresArg, 'narg', keys, NaN);\n        }\n        return self;\n    };\n    self.skipValidation = function (keys) {\n        argsert('<array|string>', [keys], arguments.length);\n        populateParserHintArray('skipValidation', keys);\n        return self;\n    };\n    function populateParserHintArray(type, keys) {\n        keys = [].concat(keys);\n        keys.forEach(key => {\n            key = sanitizeKey(key);\n            options[type].push(key);\n        });\n    }\n    self.nargs = function (key, value) {\n        argsert('<string|object|array> [number]', [key, value], arguments.length);\n        populateParserHintSingleValueDictionary(self.nargs, 'narg', key, value);\n        return self;\n    };\n    self.choices = function (key, value) {\n        argsert('<object|string|array> [string|array]', [key, value], arguments.length);\n        populateParserHintArrayDictionary(self.choices, 'choices', key, value);\n        return self;\n    };\n    self.alias = function (key, value) {\n        argsert('<object|string|array> [string|array]', [key, value], arguments.length);\n        populateParserHintArrayDictionary(self.alias, 'alias', key, value);\n        return self;\n    };\n    self.default = self.defaults = function (key, value, defaultDescription) {\n        argsert('<object|string|array> [*] [string]', [key, value, defaultDescription], arguments.length);\n        if (defaultDescription) {\n            assertSingleKey(key, shim$1);\n            options.defaultDescription[key] = defaultDescription;\n        }\n        if (typeof value === 'function') {\n            assertSingleKey(key, shim$1);\n            if (!options.defaultDescription[key])\n                options.defaultDescription[key] = usage$1.functionDescription(value);\n            value = value.call();\n        }\n        populateParserHintSingleValueDictionary(self.default, 'default', key, value);\n        return self;\n    };\n    self.describe = function (key, desc) {\n        argsert('<object|string|array> [string]', [key, desc], arguments.length);\n        setKey(key, true);\n        usage$1.describe(key, desc);\n        return self;\n    };\n    function setKey(key, set) {\n        populateParserHintSingleValueDictionary(setKey, 'key', key, set);\n        return self;\n    }\n    function demandOption(keys, msg) {\n        argsert('<object|string|array> [string]', [keys, msg], arguments.length);\n        populateParserHintSingleValueDictionary(self.demandOption, 'demandedOptions', keys, msg);\n        return self;\n    }\n    self.demandOption = demandOption;\n    self.coerce = function (keys, value) {\n        argsert('<object|string|array> [function]', [keys, value], arguments.length);\n        populateParserHintSingleValueDictionary(self.coerce, 'coerce', keys, value);\n        return self;\n    };\n    function populateParserHintSingleValueDictionary(builder, type, key, value) {\n        populateParserHintDictionary(builder, type, key, value, (type, key, value) => {\n            options[type][key] = value;\n        });\n    }\n    function populateParserHintArrayDictionary(builder, type, key, value) {\n        populateParserHintDictionary(builder, type, key, value, (type, key, value) => {\n            options[type][key] = (options[type][key] || []).concat(value);\n        });\n    }\n    function populateParserHintDictionary(builder, type, key, value, singleKeyHandler) {\n        if (Array.isArray(key)) {\n            key.forEach(k => {\n                builder(k, value);\n            });\n        }\n        else if (((key) => typeof key === 'object')(key)) {\n            for (const k of objectKeys(key)) {\n                builder(k, key[k]);\n            }\n        }\n        else {\n            singleKeyHandler(type, sanitizeKey(key), value);\n        }\n    }\n    function sanitizeKey(key) {\n        if (key === '__proto__')\n            return '___proto___';\n        return key;\n    }\n    function deleteFromParserHintObject(optionKey) {\n        objectKeys(options).forEach((hintKey) => {\n            if (((key) => key === 'configObjects')(hintKey))\n                return;\n            const hint = options[hintKey];\n            if (Array.isArray(hint)) {\n                if (~hint.indexOf(optionKey))\n                    hint.splice(hint.indexOf(optionKey), 1);\n            }\n            else if (typeof hint === 'object') {\n                delete hint[optionKey];\n            }\n        });\n        delete usage$1.getDescriptions()[optionKey];\n    }\n    self.config = function config(key = 'config', msg, parseFn) {\n        argsert('[object|string] [string|function] [function]', [key, msg, parseFn], arguments.length);\n        if (typeof key === 'object' && !Array.isArray(key)) {\n            key = applyExtends(key, cwd, self.getParserConfiguration()['deep-merge-config'] || false, shim$1);\n            options.configObjects = (options.configObjects || []).concat(key);\n            return self;\n        }\n        if (typeof msg === 'function') {\n            parseFn = msg;\n            msg = undefined;\n        }\n        self.describe(key, msg || usage$1.deferY18nLookup('Path to JSON config file'));\n        (Array.isArray(key) ? key : [key]).forEach(k => {\n            options.config[k] = parseFn || true;\n        });\n        return self;\n    };\n    self.example = function (cmd, description) {\n        argsert('<string|array> [string]', [cmd, description], arguments.length);\n        if (Array.isArray(cmd)) {\n            cmd.forEach(exampleParams => self.example(...exampleParams));\n        }\n        else {\n            usage$1.example(cmd, description);\n        }\n        return self;\n    };\n    self.command = function (cmd, description, builder, handler, middlewares, deprecated) {\n        argsert('<string|array|object> [string|boolean] [function|object] [function] [array] [boolean|string]', [cmd, description, builder, handler, middlewares, deprecated], arguments.length);\n        command$1.addHandler(cmd, description, builder, handler, middlewares, deprecated);\n        return self;\n    };\n    self.commandDir = function (dir, opts) {\n        argsert('<string> [object]', [dir, opts], arguments.length);\n        const req = parentRequire || shim$1.require;\n        command$1.addDirectory(dir, self.getContext(), req, shim$1.getCallerFile(), opts);\n        return self;\n    };\n    self.demand = self.required = self.require = function demand(keys, max, msg) {\n        if (Array.isArray(max)) {\n            max.forEach(key => {\n                assertNotStrictEqual(msg, true, shim$1);\n                demandOption(key, msg);\n            });\n            max = Infinity;\n        }\n        else if (typeof max !== 'number') {\n            msg = max;\n            max = Infinity;\n        }\n        if (typeof keys === 'number') {\n            assertNotStrictEqual(msg, true, shim$1);\n            self.demandCommand(keys, max, msg, msg);\n        }\n        else if (Array.isArray(keys)) {\n            keys.forEach(key => {\n                assertNotStrictEqual(msg, true, shim$1);\n                demandOption(key, msg);\n            });\n        }\n        else {\n            if (typeof msg === 'string') {\n                demandOption(keys, msg);\n            }\n            else if (msg === true || typeof msg === 'undefined') {\n                demandOption(keys);\n            }\n        }\n        return self;\n    };\n    self.demandCommand = function demandCommand(min = 1, max, minMsg, maxMsg) {\n        argsert('[number] [number|string] [string|null|undefined] [string|null|undefined]', [min, max, minMsg, maxMsg], arguments.length);\n        if (typeof max !== 'number') {\n            minMsg = max;\n            max = Infinity;\n        }\n        self.global('_', false);\n        options.demandedCommands._ = {\n            min,\n            max,\n            minMsg,\n            maxMsg,\n        };\n        return self;\n    };\n    self.getDemandedOptions = () => {\n        argsert([], 0);\n        return options.demandedOptions;\n    };\n    self.getDemandedCommands = () => {\n        argsert([], 0);\n        return options.demandedCommands;\n    };\n    self.deprecateOption = function deprecateOption(option, message) {\n        argsert('<string> [string|boolean]', [option, message], arguments.length);\n        options.deprecatedOptions[option] = message;\n        return self;\n    };\n    self.getDeprecatedOptions = () => {\n        argsert([], 0);\n        return options.deprecatedOptions;\n    };\n    self.implies = function (key, value) {\n        argsert('<string|object> [number|string|array]', [key, value], arguments.length);\n        validation$1.implies(key, value);\n        return self;\n    };\n    self.conflicts = function (key1, key2) {\n        argsert('<string|object> [string|array]', [key1, key2], arguments.length);\n        validation$1.conflicts(key1, key2);\n        return self;\n    };\n    self.usage = function (msg, description, builder, handler) {\n        argsert('<string|null|undefined> [string|boolean] [function|object] [function]', [msg, description, builder, handler], arguments.length);\n        if (description !== undefined) {\n            assertNotStrictEqual(msg, null, shim$1);\n            if ((msg || '').match(/^\\$0( |$)/)) {\n                return self.command(msg, description, builder, handler);\n            }\n            else {\n                throw new YError('.usage() description must start with $0 if being used as alias for .command()');\n            }\n        }\n        else {\n            usage$1.usage(msg);\n            return self;\n        }\n    };\n    self.epilogue = self.epilog = function (msg) {\n        argsert('<string>', [msg], arguments.length);\n        usage$1.epilog(msg);\n        return self;\n    };\n    self.fail = function (f) {\n        argsert('<function>', [f], arguments.length);\n        usage$1.failFn(f);\n        return self;\n    };\n    self.onFinishCommand = function (f) {\n        argsert('<function>', [f], arguments.length);\n        handlerFinishCommand = f;\n        return self;\n    };\n    self.getHandlerFinishCommand = () => handlerFinishCommand;\n    self.check = function (f, _global) {\n        argsert('<function> [boolean]', [f, _global], arguments.length);\n        validation$1.check(f, _global !== false);\n        return self;\n    };\n    self.global = function global(globals, global) {\n        argsert('<string|array> [boolean]', [globals, global], arguments.length);\n        globals = [].concat(globals);\n        if (global !== false) {\n            options.local = options.local.filter(l => globals.indexOf(l) === -1);\n        }\n        else {\n            globals.forEach(g => {\n                if (options.local.indexOf(g) === -1)\n                    options.local.push(g);\n            });\n        }\n        return self;\n    };\n    self.pkgConf = function pkgConf(key, rootPath) {\n        argsert('<string> [string]', [key, rootPath], arguments.length);\n        let conf = null;\n        const obj = pkgUp(rootPath || cwd);\n        if (obj[key] && typeof obj[key] === 'object') {\n            conf = applyExtends(obj[key], rootPath || cwd, self.getParserConfiguration()['deep-merge-config'] || false, shim$1);\n            options.configObjects = (options.configObjects || []).concat(conf);\n        }\n        return self;\n    };\n    const pkgs = {};\n    function pkgUp(rootPath) {\n        const npath = rootPath || '*';\n        if (pkgs[npath])\n            return pkgs[npath];\n        let obj = {};\n        try {\n            let startDir = rootPath || shim$1.mainFilename;\n            if (!rootPath && shim$1.path.extname(startDir)) {\n                startDir = shim$1.path.dirname(startDir);\n            }\n            const pkgJsonPath = shim$1.findUp(startDir, (dir, names) => {\n                if (names.includes('package.json')) {\n                    return 'package.json';\n                }\n                else {\n                    return undefined;\n                }\n            });\n            assertNotStrictEqual(pkgJsonPath, undefined, shim$1);\n            obj = JSON.parse(shim$1.readFileSync(pkgJsonPath, 'utf8'));\n        }\n        catch (_noop) { }\n        pkgs[npath] = obj || {};\n        return pkgs[npath];\n    }\n    let parseFn = null;\n    let parseContext = null;\n    self.parse = function parse(args, shortCircuit, _parseFn) {\n        argsert('[string|array] [function|boolean|object] [function]', [args, shortCircuit, _parseFn], arguments.length);\n        freeze();\n        if (typeof args === 'undefined') {\n            const argv = self._parseArgs(processArgs);\n            const tmpParsed = self.parsed;\n            unfreeze();\n            self.parsed = tmpParsed;\n            return argv;\n        }\n        if (typeof shortCircuit === 'object') {\n            parseContext = shortCircuit;\n            shortCircuit = _parseFn;\n        }\n        if (typeof shortCircuit === 'function') {\n            parseFn = shortCircuit;\n            shortCircuit = false;\n        }\n        if (!shortCircuit)\n            processArgs = args;\n        if (parseFn)\n            exitProcess = false;\n        const parsed = self._parseArgs(args, !!shortCircuit);\n        completion$1.setParsed(self.parsed);\n        if (parseFn)\n            parseFn(exitError, parsed, output);\n        unfreeze();\n        return parsed;\n    };\n    self._getParseContext = () => parseContext || {};\n    self._hasParseCallback = () => !!parseFn;\n    self.option = self.options = function option(key, opt) {\n        argsert('<string|object> [object]', [key, opt], arguments.length);\n        if (typeof key === 'object') {\n            Object.keys(key).forEach(k => {\n                self.options(k, key[k]);\n            });\n        }\n        else {\n            if (typeof opt !== 'object') {\n                opt = {};\n            }\n            options.key[key] = true;\n            if (opt.alias)\n                self.alias(key, opt.alias);\n            const deprecate = opt.deprecate || opt.deprecated;\n            if (deprecate) {\n                self.deprecateOption(key, deprecate);\n            }\n            const demand = opt.demand || opt.required || opt.require;\n            if (demand) {\n                self.demand(key, demand);\n            }\n            if (opt.demandOption) {\n                self.demandOption(key, typeof opt.demandOption === 'string' ? opt.demandOption : undefined);\n            }\n            if (opt.conflicts) {\n                self.conflicts(key, opt.conflicts);\n            }\n            if ('default' in opt) {\n                self.default(key, opt.default);\n            }\n            if (opt.implies !== undefined) {\n                self.implies(key, opt.implies);\n            }\n            if (opt.nargs !== undefined) {\n                self.nargs(key, opt.nargs);\n            }\n            if (opt.config) {\n                self.config(key, opt.configParser);\n            }\n            if (opt.normalize) {\n                self.normalize(key);\n            }\n            if (opt.choices) {\n                self.choices(key, opt.choices);\n            }\n            if (opt.coerce) {\n                self.coerce(key, opt.coerce);\n            }\n            if (opt.group) {\n                self.group(key, opt.group);\n            }\n            if (opt.boolean || opt.type === 'boolean') {\n                self.boolean(key);\n                if (opt.alias)\n                    self.boolean(opt.alias);\n            }\n            if (opt.array || opt.type === 'array') {\n                self.array(key);\n                if (opt.alias)\n                    self.array(opt.alias);\n            }\n            if (opt.number || opt.type === 'number') {\n                self.number(key);\n                if (opt.alias)\n                    self.number(opt.alias);\n            }\n            if (opt.string || opt.type === 'string') {\n                self.string(key);\n                if (opt.alias)\n                    self.string(opt.alias);\n            }\n            if (opt.count || opt.type === 'count') {\n                self.count(key);\n            }\n            if (typeof opt.global === 'boolean') {\n                self.global(key, opt.global);\n            }\n            if (opt.defaultDescription) {\n                options.defaultDescription[key] = opt.defaultDescription;\n            }\n            if (opt.skipValidation) {\n                self.skipValidation(key);\n            }\n            const desc = opt.describe || opt.description || opt.desc;\n            self.describe(key, desc);\n            if (opt.hidden) {\n                self.hide(key);\n            }\n            if (opt.requiresArg) {\n                self.requiresArg(key);\n            }\n        }\n        return self;\n    };\n    self.getOptions = () => options;\n    self.positional = function (key, opts) {\n        argsert('<string> <object>', [key, opts], arguments.length);\n        if (context.resets === 0) {\n            throw new YError(\".positional() can only be called in a command's builder function\");\n        }\n        const supportedOpts = [\n            'default',\n            'defaultDescription',\n            'implies',\n            'normalize',\n            'choices',\n            'conflicts',\n            'coerce',\n            'type',\n            'describe',\n            'desc',\n            'description',\n            'alias',\n        ];\n        opts = objFilter(opts, (k, v) => {\n            let accept = supportedOpts.indexOf(k) !== -1;\n            if (k === 'type' && ['string', 'number', 'boolean'].indexOf(v) === -1)\n                accept = false;\n            return accept;\n        });\n        const fullCommand = context.fullCommands[context.fullCommands.length - 1];\n        const parseOptions = fullCommand\n            ? command$1.cmdToParseOptions(fullCommand)\n            : {\n                array: [],\n                alias: {},\n                default: {},\n                demand: {},\n            };\n        objectKeys(parseOptions).forEach(pk => {\n            const parseOption = parseOptions[pk];\n            if (Array.isArray(parseOption)) {\n                if (parseOption.indexOf(key) !== -1)\n                    opts[pk] = true;\n            }\n            else {\n                if (parseOption[key] && !(pk in opts))\n                    opts[pk] = parseOption[key];\n            }\n        });\n        self.group(key, usage$1.getPositionalGroupName());\n        return self.option(key, opts);\n    };\n    self.group = function group(opts, groupName) {\n        argsert('<string|array> <string>', [opts, groupName], arguments.length);\n        const existing = preservedGroups[groupName] || groups[groupName];\n        if (preservedGroups[groupName]) {\n            delete preservedGroups[groupName];\n        }\n        const seen = {};\n        groups[groupName] = (existing || []).concat(opts).filter(key => {\n            if (seen[key])\n                return false;\n            return (seen[key] = true);\n        });\n        return self;\n    };\n    self.getGroups = () => Object.assign({}, groups, preservedGroups);\n    self.env = function (prefix) {\n        argsert('[string|boolean]', [prefix], arguments.length);\n        if (prefix === false)\n            delete options.envPrefix;\n        else\n            options.envPrefix = prefix || '';\n        return self;\n    };\n    self.wrap = function (cols) {\n        argsert('<number|null|undefined>', [cols], arguments.length);\n        usage$1.wrap(cols);\n        return self;\n    };\n    let strict = false;\n    self.strict = function (enabled) {\n        argsert('[boolean]', [enabled], arguments.length);\n        strict = enabled !== false;\n        return self;\n    };\n    self.getStrict = () => strict;\n    let strictCommands = false;\n    self.strictCommands = function (enabled) {\n        argsert('[boolean]', [enabled], arguments.length);\n        strictCommands = enabled !== false;\n        return self;\n    };\n    self.getStrictCommands = () => strictCommands;\n    let strictOptions = false;\n    self.strictOptions = function (enabled) {\n        argsert('[boolean]', [enabled], arguments.length);\n        strictOptions = enabled !== false;\n        return self;\n    };\n    self.getStrictOptions = () => strictOptions;\n    let parserConfig = {};\n    self.parserConfiguration = function parserConfiguration(config) {\n        argsert('<object>', [config], arguments.length);\n        parserConfig = config;\n        return self;\n    };\n    self.getParserConfiguration = () => parserConfig;\n    self.showHelp = function (level) {\n        argsert('[string|function]', [level], arguments.length);\n        if (!self.parsed)\n            self._parseArgs(processArgs);\n        if (command$1.hasDefaultCommand()) {\n            context.resets++;\n            command$1.runDefaultBuilderOn(self);\n        }\n        usage$1.showHelp(level);\n        return self;\n    };\n    let versionOpt = null;\n    self.version = function version(opt, msg, ver) {\n        const defaultVersionOpt = 'version';\n        argsert('[boolean|string] [string] [string]', [opt, msg, ver], arguments.length);\n        if (versionOpt) {\n            deleteFromParserHintObject(versionOpt);\n            usage$1.version(undefined);\n            versionOpt = null;\n        }\n        if (arguments.length === 0) {\n            ver = guessVersion();\n            opt = defaultVersionOpt;\n        }\n        else if (arguments.length === 1) {\n            if (opt === false) {\n                return self;\n            }\n            ver = opt;\n            opt = defaultVersionOpt;\n        }\n        else if (arguments.length === 2) {\n            ver = msg;\n            msg = undefined;\n        }\n        versionOpt = typeof opt === 'string' ? opt : defaultVersionOpt;\n        msg = msg || usage$1.deferY18nLookup('Show version number');\n        usage$1.version(ver || undefined);\n        self.boolean(versionOpt);\n        self.describe(versionOpt, msg);\n        return self;\n    };\n    function guessVersion() {\n        const obj = pkgUp();\n        return obj.version || 'unknown';\n    }\n    let helpOpt = null;\n    self.addHelpOpt = self.help = function addHelpOpt(opt, msg) {\n        const defaultHelpOpt = 'help';\n        argsert('[string|boolean] [string]', [opt, msg], arguments.length);\n        if (helpOpt) {\n            deleteFromParserHintObject(helpOpt);\n            helpOpt = null;\n        }\n        if (arguments.length === 1) {\n            if (opt === false)\n                return self;\n        }\n        helpOpt = typeof opt === 'string' ? opt : defaultHelpOpt;\n        self.boolean(helpOpt);\n        self.describe(helpOpt, msg || usage$1.deferY18nLookup('Show help'));\n        return self;\n    };\n    const defaultShowHiddenOpt = 'show-hidden';\n    options.showHiddenOpt = defaultShowHiddenOpt;\n    self.addShowHiddenOpt = self.showHidden = function addShowHiddenOpt(opt, msg) {\n        argsert('[string|boolean] [string]', [opt, msg], arguments.length);\n        if (arguments.length === 1) {\n            if (opt === false)\n                return self;\n        }\n        const showHiddenOpt = typeof opt === 'string' ? opt : defaultShowHiddenOpt;\n        self.boolean(showHiddenOpt);\n        self.describe(showHiddenOpt, msg || usage$1.deferY18nLookup('Show hidden options'));\n        options.showHiddenOpt = showHiddenOpt;\n        return self;\n    };\n    self.hide = function hide(key) {\n        argsert('<string>', [key], arguments.length);\n        options.hiddenOptions.push(key);\n        return self;\n    };\n    self.showHelpOnFail = function showHelpOnFail(enabled, message) {\n        argsert('[boolean|string] [string]', [enabled, message], arguments.length);\n        usage$1.showHelpOnFail(enabled, message);\n        return self;\n    };\n    let exitProcess = true;\n    self.exitProcess = function (enabled = true) {\n        argsert('[boolean]', [enabled], arguments.length);\n        exitProcess = enabled;\n        return self;\n    };\n    self.getExitProcess = () => exitProcess;\n    self.showCompletionScript = function ($0, cmd) {\n        argsert('[string] [string]', [$0, cmd], arguments.length);\n        $0 = $0 || self.$0;\n        _logger.log(completion$1.generateCompletionScript($0, cmd || completionCommand || 'completion'));\n        return self;\n    };\n    self.getCompletion = function (args, done) {\n        argsert('<array> <function>', [args, done], arguments.length);\n        completion$1.getCompletion(args, done);\n    };\n    self.locale = function (locale) {\n        argsert('[string]', [locale], arguments.length);\n        if (!locale) {\n            guessLocale();\n            return y18n.getLocale();\n        }\n        detectLocale = false;\n        y18n.setLocale(locale);\n        return self;\n    };\n    self.updateStrings = self.updateLocale = function (obj) {\n        argsert('<object>', [obj], arguments.length);\n        detectLocale = false;\n        y18n.updateLocale(obj);\n        return self;\n    };\n    let detectLocale = true;\n    self.detectLocale = function (detect) {\n        argsert('<boolean>', [detect], arguments.length);\n        detectLocale = detect;\n        return self;\n    };\n    self.getDetectLocale = () => detectLocale;\n    const _logger = {\n        log(...args) {\n            if (!self._hasParseCallback())\n                console.log(...args);\n            hasOutput = true;\n            if (output.length)\n                output += '\\n';\n            output += args.join(' ');\n        },\n        error(...args) {\n            if (!self._hasParseCallback())\n                console.error(...args);\n            hasOutput = true;\n            if (output.length)\n                output += '\\n';\n            output += args.join(' ');\n        },\n    };\n    self._getLoggerInstance = () => _logger;\n    self._hasOutput = () => hasOutput;\n    self._setHasOutput = () => {\n        hasOutput = true;\n    };\n    let recommendCommands;\n    self.recommendCommands = function (recommend = true) {\n        argsert('[boolean]', [recommend], arguments.length);\n        recommendCommands = recommend;\n        return self;\n    };\n    self.getUsageInstance = () => usage$1;\n    self.getValidationInstance = () => validation$1;\n    self.getCommandInstance = () => command$1;\n    self.terminalWidth = () => {\n        argsert([], 0);\n        return shim$1.process.stdColumns;\n    };\n    Object.defineProperty(self, 'argv', {\n        get: () => self._parseArgs(processArgs),\n        enumerable: true,\n    });\n    self._parseArgs = function parseArgs(args, shortCircuit, _calledFromCommand, commandIndex) {\n        let skipValidation = !!_calledFromCommand;\n        args = args || processArgs;\n        options.__ = y18n.__;\n        options.configuration = self.getParserConfiguration();\n        const populateDoubleDash = !!options.configuration['populate--'];\n        const config = Object.assign({}, options.configuration, {\n            'populate--': true,\n        });\n        const parsed = shim$1.Parser.detailed(args, Object.assign({}, options, {\n            configuration: Object.assign({ 'parse-positional-numbers': false }, config),\n        }));\n        let argv = parsed.argv;\n        if (parseContext)\n            argv = Object.assign({}, argv, parseContext);\n        const aliases = parsed.aliases;\n        argv.$0 = self.$0;\n        self.parsed = parsed;\n        try {\n            guessLocale();\n            if (shortCircuit) {\n                return self._postProcess(argv, populateDoubleDash, _calledFromCommand);\n            }\n            if (helpOpt) {\n                const helpCmds = [helpOpt]\n                    .concat(aliases[helpOpt] || [])\n                    .filter(k => k.length > 1);\n                if (~helpCmds.indexOf('' + argv._[argv._.length - 1])) {\n                    argv._.pop();\n                    argv[helpOpt] = true;\n                }\n            }\n            const handlerKeys = command$1.getCommands();\n            const requestCompletions = completion$1.completionKey in argv;\n            const skipRecommendation = argv[helpOpt] || requestCompletions;\n            const skipDefaultCommand = skipRecommendation &&\n                (handlerKeys.length > 1 || handlerKeys[0] !== '$0');\n            if (argv._.length) {\n                if (handlerKeys.length) {\n                    let firstUnknownCommand;\n                    for (let i = commandIndex || 0, cmd; argv._[i] !== undefined; i++) {\n                        cmd = String(argv._[i]);\n                        if (~handlerKeys.indexOf(cmd) && cmd !== completionCommand) {\n                            const innerArgv = command$1.runCommand(cmd, self, parsed, i + 1);\n                            return self._postProcess(innerArgv, populateDoubleDash);\n                        }\n                        else if (!firstUnknownCommand && cmd !== completionCommand) {\n                            firstUnknownCommand = cmd;\n                            break;\n                        }\n                    }\n                    if (command$1.hasDefaultCommand() && !skipDefaultCommand) {\n                        const innerArgv = command$1.runCommand(null, self, parsed);\n                        return self._postProcess(innerArgv, populateDoubleDash);\n                    }\n                    if (recommendCommands && firstUnknownCommand && !skipRecommendation) {\n                        validation$1.recommendCommands(firstUnknownCommand, handlerKeys);\n                    }\n                }\n                if (completionCommand &&\n                    ~argv._.indexOf(completionCommand) &&\n                    !requestCompletions) {\n                    if (exitProcess)\n                        setBlocking(true);\n                    self.showCompletionScript();\n                    self.exit(0);\n                }\n            }\n            else if (command$1.hasDefaultCommand() && !skipDefaultCommand) {\n                const innerArgv = command$1.runCommand(null, self, parsed);\n                return self._postProcess(innerArgv, populateDoubleDash);\n            }\n            if (requestCompletions) {\n                if (exitProcess)\n                    setBlocking(true);\n                args = [].concat(args);\n                const completionArgs = args.slice(args.indexOf(`--${completion$1.completionKey}`) + 1);\n                completion$1.getCompletion(completionArgs, completions => {\n                    (completions || []).forEach(completion => {\n                        _logger.log(completion);\n                    });\n                    self.exit(0);\n                });\n                return self._postProcess(argv, !populateDoubleDash, _calledFromCommand);\n            }\n            if (!hasOutput) {\n                Object.keys(argv).forEach(key => {\n                    if (key === helpOpt && argv[key]) {\n                        if (exitProcess)\n                            setBlocking(true);\n                        skipValidation = true;\n                        self.showHelp('log');\n                        self.exit(0);\n                    }\n                    else if (key === versionOpt && argv[key]) {\n                        if (exitProcess)\n                            setBlocking(true);\n                        skipValidation = true;\n                        usage$1.showVersion();\n                        self.exit(0);\n                    }\n                });\n            }\n            if (!skipValidation && options.skipValidation.length > 0) {\n                skipValidation = Object.keys(argv).some(key => options.skipValidation.indexOf(key) >= 0 && argv[key] === true);\n            }\n            if (!skipValidation) {\n                if (parsed.error)\n                    throw new YError(parsed.error.message);\n                if (!requestCompletions) {\n                    self._runValidation(argv, aliases, {}, parsed.error);\n                }\n            }\n        }\n        catch (err) {\n            if (err instanceof YError)\n                usage$1.fail(err.message, err);\n            else\n                throw err;\n        }\n        return self._postProcess(argv, populateDoubleDash, _calledFromCommand);\n    };\n    self._postProcess = function (argv, populateDoubleDash, calledFromCommand = false) {\n        if (isPromise(argv))\n            return argv;\n        if (calledFromCommand)\n            return argv;\n        if (!populateDoubleDash) {\n            argv = self._copyDoubleDash(argv);\n        }\n        const parsePositionalNumbers = self.getParserConfiguration()['parse-positional-numbers'] ||\n            self.getParserConfiguration()['parse-positional-numbers'] === undefined;\n        if (parsePositionalNumbers) {\n            argv = self._parsePositionalNumbers(argv);\n        }\n        return argv;\n    };\n    self._copyDoubleDash = function (argv) {\n        if (!argv._ || !argv['--'])\n            return argv;\n        argv._.push.apply(argv._, argv['--']);\n        try {\n            delete argv['--'];\n        }\n        catch (_err) { }\n        return argv;\n    };\n    self._parsePositionalNumbers = function (argv) {\n        const args = argv['--'] ? argv['--'] : argv._;\n        for (let i = 0, arg; (arg = args[i]) !== undefined; i++) {\n            if (shim$1.Parser.looksLikeNumber(arg) &&\n                Number.isSafeInteger(Math.floor(parseFloat(`${arg}`)))) {\n                args[i] = Number(arg);\n            }\n        }\n        return argv;\n    };\n    self._runValidation = function runValidation(argv, aliases, positionalMap, parseErrors, isDefaultCommand = false) {\n        if (parseErrors)\n            throw new YError(parseErrors.message);\n        validation$1.nonOptionCount(argv);\n        validation$1.requiredArguments(argv);\n        let failedStrictCommands = false;\n        if (strictCommands) {\n            failedStrictCommands = validation$1.unknownCommands(argv);\n        }\n        if (strict && !failedStrictCommands) {\n            validation$1.unknownArguments(argv, aliases, positionalMap, isDefaultCommand);\n        }\n        else if (strictOptions) {\n            validation$1.unknownArguments(argv, aliases, {}, false, false);\n        }\n        validation$1.customChecks(argv, aliases);\n        validation$1.limitedChoices(argv);\n        validation$1.implications(argv);\n        validation$1.conflicting(argv);\n    };\n    function guessLocale() {\n        if (!detectLocale)\n            return;\n        const locale = shim$1.getEnv('LC_ALL') ||\n            shim$1.getEnv('LC_MESSAGES') ||\n            shim$1.getEnv('LANG') ||\n            shim$1.getEnv('LANGUAGE') ||\n            'en_US';\n        self.locale(locale.replace(/[.:].*/, ''));\n    }\n    self.help();\n    self.version();\n    return self;\n}\nconst rebase = (base, dir) => shim$1.path.relative(base, dir);\nfunction isYargsInstance(y) {\n    return !!y && typeof y._parseArgs === 'function';\n}\n\nvar _a, _b;\nconst { readFileSync } = require('fs');\nconst { inspect } = require('util');\nconst { resolve } = require('path');\nconst y18n = require('y18n');\nconst Parser = require('yargs-parser');\nvar cjsPlatformShim = {\n    assert: {\n        notStrictEqual: assert.notStrictEqual,\n        strictEqual: assert.strictEqual,\n    },\n    cliui: require('cliui'),\n    findUp: require('escalade/sync'),\n    getEnv: (key) => {\n        return process.env[key];\n    },\n    getCallerFile: require('get-caller-file'),\n    getProcessArgvBin: getProcessArgvBin,\n    inspect,\n    mainFilename: (_b = (_a = require === null || require === void 0 ? void 0 : require.main) === null || _a === void 0 ? void 0 : _a.filename) !== null && _b !== void 0 ? _b : process.cwd(),\n    Parser,\n    path: require('path'),\n    process: {\n        argv: () => process.argv,\n        cwd: process.cwd,\n        execPath: () => process.execPath,\n        exit: (code) => {\n            process.exit(code);\n        },\n        nextTick: process.nextTick,\n        stdColumns: typeof process.stdout.columns !== 'undefined'\n            ? process.stdout.columns\n            : null,\n    },\n    readFileSync,\n    require: require,\n    requireDirectory: require('require-directory'),\n    stringWidth: require('string-width'),\n    y18n: y18n({\n        directory: resolve(__dirname, '../locales'),\n        updateFiles: false,\n    }),\n};\n\nconst minNodeVersion = process && process.env && process.env.YARGS_MIN_NODE_VERSION\n    ? Number(process.env.YARGS_MIN_NODE_VERSION)\n    : 10;\nif (process && process.version) {\n    const major = Number(process.version.match(/v([^.]+)/)[1]);\n    if (major < minNodeVersion) {\n        throw Error(`yargs supports a minimum Node.js version of ${minNodeVersion}. Read our version support policy: https://github.com/yargs/yargs#supported-nodejs-versions`);\n    }\n}\nconst Parser$1 = require('yargs-parser');\nconst Yargs$1 = YargsWithShim(cjsPlatformShim);\nvar cjs = {\n    applyExtends,\n    cjsPlatformShim,\n    Yargs: Yargs$1,\n    argsert,\n    globalMiddlewareFactory,\n    isPromise,\n    objFilter,\n    parseCommand,\n    Parser: Parser$1,\n    processArgv,\n    rebase,\n    YError,\n};\n\nmodule.exports = cjs;\n", "'use strict';\n// classic singleton yargs API, to use yargs\n// without running as a singleton do:\n// require('yargs/yargs')(process.argv.slice(2))\nconst {Yargs, processArgv} = require('./build/index.cjs');\n\nArgv(processArgv.hideBin(process.argv));\n\nmodule.exports = Argv;\n\nfunction Argv(processArgs, cwd) {\n  const argv = Yargs(processArgs, cwd, require);\n  singletonify(argv);\n  return argv;\n}\n\n/*  Hack an instance of Argv with process.argv into Argv\n    so people can do\n    require('yargs')(['--beeble=1','-z','zizzle']).argv\n    to parse a list of args and\n    require('yargs').argv\n    to get a parsed version of process.argv.\n*/\nfunction singletonify(inst) {\n  Object.keys(inst).forEach(key => {\n    if (key === 'argv') {\n      Argv.__defineGetter__(key, inst.__lookupGetter__(key));\n    } else if (typeof inst[key] === 'function') {\n      Argv[key] = inst[key].bind(inst);\n    } else {\n      Argv.__defineGetter__('$0', () => {\n        return inst.$0;\n      });\n      Argv.__defineGetter__('parsed', () => {\n        return inst.parsed;\n      });\n    }\n  });\n}\n", "/*\n * argv.js: Simple memory-based store for command-line arguments.\n *\n * (C) 2011, Charlie Robbins and the Contributors.\n *\n */\n\nvar util = require('util'),\n    common = require('../common'),\n    Memory = require('./memory').Memory;\n\n//\n// ### function Argv (options)\n// #### @options {Object} Options for this instance.\n// Constructor function for the Argv nconf store, a simple abstraction\n// around the Memory store that can read command-line arguments.\n//\nvar Argv = exports.Argv = function (options, usage) {\n  Memory.call(this, options);\n\n  options        = options || {};\n  this.type     = 'argv';\n  this.readOnly = true;\n  this.options  = options;\n  this.usage    = usage;\n  if(typeof options.parseValues === 'boolean') {\n      this.parseValues = options.parseValues;\n      delete options.parseValues;\n  } else {\n      this.parseValues = false;\n  }\n  if (typeof options.transform === 'function')\u00A0{\n      this.transform = options.transform;\n      delete options.transform;\n  } else {\n      this.transform = false;\n  }\n  if (typeof options.separator === 'string' || options.separator instanceof RegExp) {\n    this.separator = options.separator;\n    delete options.separator;\n  } else {\n    this.separator = '';\n  }\n};\n\n// Inherit from the Memory store\nutil.inherits(Argv, Memory);\n\n//\n// ### function loadSync ()\n// Loads the data passed in from `process.argv` into this instance.\n//\nArgv.prototype.loadSync = function () {\n  this.loadArgv();\n  return this.store;\n};\n\n//\n// ### function loadArgv ()\n// Loads the data passed in from the command-line arguments\n// into this instance.\n//\nArgv.prototype.loadArgv = function () {\n  var self = this,\n      yargs, argv;\n\n  yargs = isYargs(this.options) ?\n    this.options :\n    typeof this.options === 'object' ?\n      require('yargs')(process.argv.slice(2)).options(this.options) :\n      require('yargs')(process.argv.slice(2));\n\n  if (typeof this.usage === 'string') { yargs.usage(this.usage) }\n\n  argv = yargs.argv\n\n  if (!argv) {\n    return;\n  }\n\n  if (this.transform) {\n    argv = common.transform(argv, this.transform);\n  }\n\n  this.readOnly = false;\n  Object.keys(argv).forEach(function (key) {\n    var val = argv[key];\n\n    if (typeof val !== 'undefined') {\n      if (self.parseValues) {\n        val = common.parseValues(val);\n      }\n\n      if (self.separator) {\n        self.set(common.key.apply(common, key.split(self.separator)), val);\n      }\n      else {\n        self.set(key, val);\n      }\n    }\n  });\n\n  this.showHelp = yargs.showHelp\n  this.help     = yargs.help\n\n  this.readOnly = true;\n  return this.store;\n};\n\nfunction isYargs(obj) {\n  return (typeof obj === 'function' || typeof obj === 'object') && ('argv' in obj);\n}\n", "/*\n * env.js: Simple memory-based store for environment variables\n *\n * (C) 2011, Charlie Robbins and the Contributors.\n *\n */\n\nvar util = require('util'),\n    common = require('../common'),\n    Memory = require('./memory').Memory;\n\n//\n// ### function Env (options)\n// #### @options {Object} Options for this instance.\n// Constructor function for the Env nconf store, a simple abstraction\n// around the Memory store that can read process environment variables.\n//\nvar Env = exports.Env = function (options) {\n  Memory.call(this, options);\n\n  options        = options || {};\n  this.type      = 'env';\n  this.readOnly  = true;\n  this.whitelist = options.whitelist || [];\n  this.separator = options.separator || '';\n  this.lowerCase = options.lowerCase || false;\n  this.parseValues = options.parseValues || false;\n  this.transform = options.transform || false;\n\n  if (({}).toString.call(options.match) === '[object RegExp]'\n      && typeof options !== 'string') {\n    this.match = options.match;\n  }\n\n  if (options instanceof Array) {\n    this.whitelist = options;\n  }\n  if (typeof(options) === 'string' || options instanceof RegExp) {\n    this.separator = options;\n  }\n};\n\n// Inherit from the Memory store\nutil.inherits(Env, Memory);\n\n//\n// ### function loadSync ()\n// Loads the data passed in from `process.env` into this instance.\n//\nEnv.prototype.loadSync = function () {\n  this.loadEnv();\n  return this.store;\n};\n\n//\n// ### function loadEnv ()\n// Loads the data passed in from `process.env` into this instance.\n//\nEnv.prototype.loadEnv = function () {\n  var self = this;\n\n  var env = process.env;\n\n  if (this.lowerCase) {\n    env = {};\n    Object.keys(process.env).forEach(function (key) {\n      env[key.toLowerCase()] = process.env[key];\n    });\n  }\n\n  if (this.transform) {\n    env = common.transform(env, this.transform);\n  }\n\n  this.readOnly = false;\n  Object.keys(env).filter(function (key) {\n    if (self.match && self.whitelist.length) {\n      return key.match(self.match) || self.whitelist.indexOf(key) !== -1\n    }\n    else if (self.match) {\n      return key.match(self.match);\n    }\n    else {\n      return !self.whitelist.length || self.whitelist.indexOf(key) !== -1\n    }\n  }).forEach(function (key) {\n    \n    var val = env[key];\n\n    if (self.parseValues) {\n      val = common.parseValues(val);\n    }\n\n    if (self.separator) {\n      self.set(common.key.apply(common, key.split(self.separator)), val);\n    }\n    else {\n      self.set(key, val);\n    }\n  });\n\n  this.readOnly = true;\n  return this.store;\n};\n\n", "'use strict';\n\nvar crypto = require('crypto');\n\nvar json = {\n  stringify: function (obj, replacer, spacing) {\n    return JSON.stringify(obj, replacer || null, spacing || 2)\n  },\n  parse: JSON.parse\n};\n\nmodule.exports = Secure;\n/**\n * @constructor\n * Simple Object used to serialize and deserialize\n */\nfunction Secure(opts) {\n  opts = opts || {};\n  this.secret = typeof opts !== 'string'\n    ? opts.secret\n    : opts;\n\n  this.format = opts.format || json;\n  this.alg = opts.alg || 'aes-256-ctr';\n\n  if (!this.secret) throw new Error('Secret is a required option');\n}\n\nSecure.prototype.encrypt = function encrypt(data, callback) {\n  var self = this;\n\n  return Object.keys(data).reduce(function (acc, key) {\n    var value = self.format.stringify(data[key]);\n    acc[key] = {\n      alg: self.alg,\n      value: cipherConvert(value, {\n        alg: self.alg,\n        secret: self.secret,\n        encs: { input: 'utf8', output: 'hex' }\n      })\n    };\n\n    return acc;\n  }, {});\n\n };\n\nSecure.prototype.decrypt = function decrypt(data, callback) {\n  var self = this;\n\n  return Object.keys(data).reduce(function (acc, key) {\n    var decrypted = cipherConvert(data[key].value, {\n      alg: data[key].alg || self.alg,\n      secret: self.secret,\n      encs: { input: 'hex', output: 'utf8' }\n    });\n\n    acc[key] = self.format.parse(decrypted);\n    return acc;\n  }, {});\n\n };\n\n//\n// ### function cipherConvert (contents, opts)\n// Returns the result of the cipher operation\n// on the contents contents.\n//\nfunction cipherConvert(contents, opts) {\n  var encs = opts.encs;\n  var cipher = crypto.createCipher(opts.alg, opts.secret);\n  return cipher.update(contents, encs.input, encs.output)\n    + cipher.final(encs.output);\n}\n", "/*\n * file.js: Simple file storage engine for nconf files\n *\n * (C) 2011, Charlie Robbins and the Contributors.\n *\n */\n\nvar fs = require('fs'),\n    path = require('path'),\n    util = require('util'),\n    Secure = require('secure-keys'),\n    formats = require('../formats'),\n    Memory = require('./memory').Memory;\n\nvar exists = fs.exists || path.exists,\n    existsSync = fs.existsSync || path.existsSync;\n\n//\n// ### function File (options)\n// #### @options {Object} Options for this instance\n// Constructor function for the File nconf store, a simple abstraction\n// around the Memory store that can persist configuration to disk.\n//\nvar File = exports.File = function (options) {\n  if (!options || !options.file) {\n    throw new Error('Missing required option `file`');\n  }\n\n  Memory.call(this, options);\n\n  this.type    = 'file';\n  this.file    = options.file;\n  this.dir     = options.dir    || process.cwd();\n  this.format  = options.format || formats.json;\n  this.secure  = options.secure;\n  this.spacing = options.json_spacing\n    || options.spacing\n    || 2;\n\n  if (this.secure) {\n    this.secure = Buffer.isBuffer(this.secure) || typeof this.secure === 'string'\n      ? { secret: this.secure.toString() }\n      : this.secure;\n\n    this.secure.alg = this.secure.alg || 'aes-256-ctr';\n    if (this.secure.secretPath) {\n      this.secure.secret = fs.readFileSync(this.secure.secretPath, 'utf8');\n    }\n\n    if (!this.secure.secret) {\n      throw new Error('secure.secret option is required');\n    }\n\n    this.keys = new Secure({\n      secret: this.secure.secret,\n      alg: this.secure.alg,\n      format: this.format\n    });\n  }\n\n  if (options.search) {\n    this.search(this.dir);\n  }\n};\n\n// Inherit from the Memory store\nutil.inherits(File, Memory);\n\n//\n// ### function save (value, callback)\n// #### @value {Object} _Ignored_ Left here for consistency\n// #### @callback {function} Continuation to respond to when complete.\n// Saves the current configuration object to disk at `this.file`\n// using the format specified by `this.format`.\n//\nFile.prototype.save = function (value, callback) {\n  this.saveToFile(this.file, value, callback);\n};\n\n//\n// ### function saveToFile (path, value, callback)\n// #### @path {string} The path to the file where we save the configuration to  \n// #### @format {Object} Optional formatter, default behing the one of the store\n// #### @callback {function} Continuation to respond to when complete.\n// Saves the current configuration object to disk at `this.file`\n// using the format specified by `this.format`.\n//\nFile.prototype.saveToFile = function (path, format, callback) {\n  if (!callback) {\n    callback = format;\n    format = this.format;\n  }\n\n  fs.writeFile(path, this.stringify(format), callback);\n};\n\n//\n// ### function saveSync (value, callback)\n// Saves the current configuration object to disk at `this.file`\n// using the format specified by `this.format` synchronously.\n//\nFile.prototype.saveSync = function () {\n  fs.writeFileSync(this.file, this.stringify());\n  return this.store;\n};\n\n//\n// ### function load (callback)\n// #### @callback {function} Continuation to respond to when complete.\n// Responds with an Object representing all keys associated in this instance.\n//\nFile.prototype.load = function (callback) {\n  var self = this;\n\n  exists(self.file, function (exists) {\n    if (!exists) {\n      return callback(null, {});\n    }\n\n    //\n    // Else, the path exists, read it from disk\n    //\n    fs.readFile(self.file, function (err, data) {\n      if (err) {\n        return callback(err);\n      }\n\n      try {\n        // Deals with string that include BOM\n        var stringData = data.toString();\n        if (stringData.charAt(0) === '\\uFEFF') {\n          stringData = stringData.substr(1);\n        }\n\n        self.store = self.parse(stringData);\n      }\n      catch (ex) {\n        return callback(new Error(\"Error parsing your configuration file: [\" + self.file + ']: ' + ex.message));\n      }\n\n      callback(null, self.store);\n    });\n  });\n};\n\n//\n// ### function loadSync (callback)\n// Attempts to load the data stored in `this.file` synchronously\n// and responds appropriately.\n//\nFile.prototype.loadSync = function () {\n  if (!existsSync(this.file)) {\n    this.store = {};\n    return this.store;\n  }\n\n  //\n  // Else, the path exists, read it from disk\n  //\n  try {\n    // Deals with file that include BOM\n    var fileData = fs.readFileSync(this.file, 'utf8');\n    if (fileData.charAt(0) === '\\uFEFF') {\n      fileData = fileData.substr(1);\n    }\n\n    this.store = this.parse(fileData);\n  }\n  catch (ex) {\n    throw new Error(\"Error parsing your configuration file: [\" + this.file + ']: ' + ex.message);\n  }\n\n  return this.store;\n};\n\n//\n// ### function stringify ()\n// Returns an encrypted version of the contents IIF\n// `this.secure` is enabled\n//\nFile.prototype.stringify = function (format) {\n  var data = this.store;\n  if (!format) {\n      format = this.format\n  }\n\n  if (this.secure) {\n    data = this.keys.encrypt(data);\n  }\n\n  return format.stringify(data, null, this.spacing);\n};\n\n//\n// ### function parse (contents)\n// Returns a decrypted version of the contents IFF\n// `this.secure` is enabled.\n//\nFile.prototype.parse = function (contents) {\n  var parsed = this.format.parse(contents);\n\n  if (!this.secure) {\n    return parsed;\n  }\n\n  return this.keys.decrypt(parsed);\n\n};\n\n\n//\n// ### function search (base)\n// #### @base {string} Base directory (or file) to begin searching for the target file.\n// Attempts to find `this.file` by iteratively searching up the\n// directory structure\n//\nFile.prototype.search = function (base) {\n  var looking = true,\n      fullpath,\n      previous,\n      stats;\n\n  base = base || process.cwd();\n\n  if (this.file[0] === '/') {\n    //\n    // If filename for this instance is a fully qualified path\n    // (i.e. it starts with a `'/'`) then check if it exists\n    //\n    try {\n      stats = fs.statSync(fs.realpathSync(this.file));\n      if (stats.isFile()) {\n        fullpath = this.file;\n        looking = false;\n      }\n    }\n    catch (ex) {\n      //\n      // Ignore errors\n      //\n    }\n  }\n\n  if (looking && base) {\n    //\n    // Attempt to stat the realpath located at `base`\n    // if the directory does not exist then return false.\n    //\n    try {\n      var stat = fs.statSync(fs.realpathSync(base));\n      looking = stat.isDirectory();\n    }\n    catch (ex) {\n      return false;\n    }\n  }\n\n  while (looking) {\n    //\n    // Iteratively look up the directory structure from `base`\n    //\n    try {\n      stats = fs.statSync(fs.realpathSync(fullpath = path.join(base, this.file)));\n      looking = stats.isDirectory();\n    }\n    catch (ex) {\n      previous = base;\n      base = path.dirname(base);\n\n      if (previous === base) {\n        //\n        // If we've reached the top of the directory structure then simply use\n        // the default file path.\n        //\n        try {\n          stats = fs.statSync(fs.realpathSync(fullpath = path.join(this.dir, this.file)));\n          if (stats.isDirectory()) {\n            fullpath = undefined;\n          }\n        }\n        catch (ex) {\n          //\n          // Ignore errors\n          //\n        }\n\n        looking = false;\n      }\n    }\n  }\n\n  //\n  // Set the file for this instance to the fullpath\n  // that we have found during the search. In the event that\n  // the search was unsuccessful use the original value for `this.file`.\n  //\n  this.file = fullpath || this.file;\n\n  return fullpath;\n};\n", "/*\n * literal.js: Simple literal Object store for nconf.\n *\n * (C) 2011, Charlie Robbins and the Contributors.\n *\n */\n\nvar util = require('util'),\n    Memory = require('./memory').Memory\n\nvar Literal = exports.Literal = function Literal (options) {\n  Memory.call(this, options);\n\n  options       = options || {}\n  this.type     = 'literal';\n  this.readOnly = true;\n  this.store    = options.store || options;\n};\n\n// Inherit from Memory store.\nutil.inherits(Literal, Memory);\n\n//\n// ### function loadSync (callback)\n// Returns the data stored in `this.store` synchronously.\n//\nLiteral.prototype.loadSync = function () {\n  return this.store;\n};", "/*\n * nconf.js: Top-level include for the nconf module\n *\n * (C) 2011, Charlie Robbins and the Contributors.\n *\n */\n\nvar common = require('./nconf/common'),\n    Provider = require('./nconf/provider').Provider;\n\n//\n// `nconf` is by default an instance of `nconf.Provider`.\n//\nvar nconf = module.exports = new Provider();\n\n//\n// Expose the version from the package.json\n//\nnconf.version = require('../package.json').version;\n\n//\n// Setup all stores as lazy-loaded getters.\n//\nnconf.__defineGetter__('Argv', function () {\n    return require('./nconf/stores/argv').Argv;\n});\n\nnconf.__defineGetter__('Env', function () {\n    return require('./nconf/stores/env').Env;\n});\n\nnconf.__defineGetter__('File', function () {\n    return require('./nconf/stores/file').File;\n});\n\nnconf.__defineGetter__('Literal', function () {\n    return require('./nconf/stores/literal').Literal;\n});\n\nnconf.__defineGetter__('Memory', function () {\n    return require('./nconf/stores/memory').Memory;\n});\n\n//\n// Expose the various components included with nconf\n//\nnconf.key           = common.key;\nnconf.path          = common.path;\nnconf.loadFiles     = common.loadFiles;\nnconf.loadFilesSync = common.loadFilesSync;\nnconf.formats       = require('./nconf/formats');\nnconf.Provider      = Provider;\n", "import * as path from 'path';\nimport { ICallbackFunction, Provider } from 'nconf';\n\nexport class ServiceConfig extends Provider {\n  public override get<T = any>(key: string, callback?: ICallbackFunction) {\n    return super.get(key, callback) as T;\n  }\n};\n\nexport interface ServiceConfigLogger {\n  verbose(...args: any[]): any;\n}\n\n// log config file usages\nfunction logConfigFile(configFile: string, logger?: ServiceConfigLogger) {\n  let message: string;\n  if (process.env.WORKER_ID !== undefined) {\n    message = `Worker ${process.env.WORKER_ID} uses configuration file: ${configFile}`;\n  } else {\n    message = `Supervisor uses configuration file: ${configFile}`;\n  }\n  if (logger?.verbose) {\n    logger.verbose(message);\n  } else {\n    // eslint-disable-next-line no-console\n    console.log(message);\n  }\n}\n\nexport interface ServiceConfigOptions {\n  stageVar?: string;\n  logger?: ServiceConfigLogger;\n}\n\n// read the layered configurations and merge into one\nexport function createServiceConfig(\n  baseDir: string,\n  opts?: ServiceConfigOptions,\n  defaults?: any,\n): ServiceConfig {\n  const nconfInstance = new ServiceConfig();\n  const logger = opts?.logger;\n  // static data from runtime\n  const STAGE_VAR = opts?.stageVar ?? 'NODE_ENV';\n  defaults ??= {};\n  defaults[STAGE_VAR] = 'development';\n  nconfInstance.argv({\n    separator: '__',\n    parseValues: true,\n  }); // import `process.argv` as highest priority\n  nconfInstance.env({\n    separator: '__',\n    parseValues: true,\n  }); // import `process.env` as second highest priority\n  // Set defaults with second lowest priority\n  nconfInstance.defaults(defaults);\n\n  // apply the existing config file\n  const parts = nconfInstance.get<string>(STAGE_VAR).split(':');\n  for (let i = parts.length - 1; i >= 0; i--) { // eslint-disable-line no-plusplus\n    const filename = parts.slice(0, i + 1).join('_');\n    const configFile = path.resolve(baseDir, 'cfg', `config_${filename}.json`);\n    logConfigFile(configFile, logger);\n    nconfInstance.file(filename, configFile);\n  }\n  const configFile = path.resolve(baseDir, 'cfg', 'config.json');\n  logConfigFile(configFile, logger);\n  nconfInstance.file('default', configFile);\n\n  return nconfInstance;\n};\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar intToCharMap = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'.split('');\n\n/**\n * Encode an integer in the range of 0 to 63 to a single base 64 digit.\n */\nexports.encode = function (number) {\n  if (0 <= number && number < intToCharMap.length) {\n    return intToCharMap[number];\n  }\n  throw new TypeError(\"Must be between 0 and 63: \" + number);\n};\n\n/**\n * Decode a single base 64 character code digit to an integer. Returns -1 on\n * failure.\n */\nexports.decode = function (charCode) {\n  var bigA = 65;     // 'A'\n  var bigZ = 90;     // 'Z'\n\n  var littleA = 97;  // 'a'\n  var littleZ = 122; // 'z'\n\n  var zero = 48;     // '0'\n  var nine = 57;     // '9'\n\n  var plus = 43;     // '+'\n  var slash = 47;    // '/'\n\n  var littleOffset = 26;\n  var numberOffset = 52;\n\n  // 0 - 25: ABCDEFGHIJKLMNOPQRSTUVWXYZ\n  if (bigA <= charCode && charCode <= bigZ) {\n    return (charCode - bigA);\n  }\n\n  // 26 - 51: abcdefghijklmnopqrstuvwxyz\n  if (littleA <= charCode && charCode <= littleZ) {\n    return (charCode - littleA + littleOffset);\n  }\n\n  // 52 - 61: 0123456789\n  if (zero <= charCode && charCode <= nine) {\n    return (charCode - zero + numberOffset);\n  }\n\n  // 62: +\n  if (charCode == plus) {\n    return 62;\n  }\n\n  // 63: /\n  if (charCode == slash) {\n    return 63;\n  }\n\n  // Invalid base64 digit.\n  return -1;\n};\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n *\n * Based on the Base 64 VLQ implementation in Closure Compiler:\n * https://code.google.com/p/closure-compiler/source/browse/trunk/src/com/google/debugging/sourcemap/Base64VLQ.java\n *\n * Copyright 2011 The Closure Compiler Authors. All rights reserved.\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions are\n * met:\n *\n *  * Redistributions of source code must retain the above copyright\n *    notice, this list of conditions and the following disclaimer.\n *  * Redistributions in binary form must reproduce the above\n *    copyright notice, this list of conditions and the following\n *    disclaimer in the documentation and/or other materials provided\n *    with the distribution.\n *  * Neither the name of Google Inc. nor the names of its\n *    contributors may be used to endorse or promote products derived\n *    from this software without specific prior written permission.\n *\n * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n * \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n */\n\nvar base64 = require('./base64');\n\n// A single base 64 digit can contain 6 bits of data. For the base 64 variable\n// length quantities we use in the source map spec, the first bit is the sign,\n// the next four bits are the actual value, and the 6th bit is the\n// continuation bit. The continuation bit tells us whether there are more\n// digits in this value following this digit.\n//\n//   Continuation\n//   |    Sign\n//   |    |\n//   V    V\n//   101011\n\nvar VLQ_BASE_SHIFT = 5;\n\n// binary: 100000\nvar VLQ_BASE = 1 << VLQ_BASE_SHIFT;\n\n// binary: 011111\nvar VLQ_BASE_MASK = VLQ_BASE - 1;\n\n// binary: 100000\nvar VLQ_CONTINUATION_BIT = VLQ_BASE;\n\n/**\n * Converts from a two-complement value to a value where the sign bit is\n * placed in the least significant bit.  For example, as decimals:\n *   1 becomes 2 (10 binary), -1 becomes 3 (11 binary)\n *   2 becomes 4 (100 binary), -2 becomes 5 (101 binary)\n */\nfunction toVLQSigned(aValue) {\n  return aValue < 0\n    ? ((-aValue) << 1) + 1\n    : (aValue << 1) + 0;\n}\n\n/**\n * Converts to a two-complement value from a value where the sign bit is\n * placed in the least significant bit.  For example, as decimals:\n *   2 (10 binary) becomes 1, 3 (11 binary) becomes -1\n *   4 (100 binary) becomes 2, 5 (101 binary) becomes -2\n */\nfunction fromVLQSigned(aValue) {\n  var isNegative = (aValue & 1) === 1;\n  var shifted = aValue >> 1;\n  return isNegative\n    ? -shifted\n    : shifted;\n}\n\n/**\n * Returns the base 64 VLQ encoded value.\n */\nexports.encode = function base64VLQ_encode(aValue) {\n  var encoded = \"\";\n  var digit;\n\n  var vlq = toVLQSigned(aValue);\n\n  do {\n    digit = vlq & VLQ_BASE_MASK;\n    vlq >>>= VLQ_BASE_SHIFT;\n    if (vlq > 0) {\n      // There are still more digits in this value, so we must make sure the\n      // continuation bit is marked.\n      digit |= VLQ_CONTINUATION_BIT;\n    }\n    encoded += base64.encode(digit);\n  } while (vlq > 0);\n\n  return encoded;\n};\n\n/**\n * Decodes the next base 64 VLQ value from the given string and returns the\n * value and the rest of the string via the out parameter.\n */\nexports.decode = function base64VLQ_decode(aStr, aIndex, aOutParam) {\n  var strLen = aStr.length;\n  var result = 0;\n  var shift = 0;\n  var continuation, digit;\n\n  do {\n    if (aIndex >= strLen) {\n      throw new Error(\"Expected more digits in base 64 VLQ value.\");\n    }\n\n    digit = base64.decode(aStr.charCodeAt(aIndex++));\n    if (digit === -1) {\n      throw new Error(\"Invalid base64 digit: \" + aStr.charAt(aIndex - 1));\n    }\n\n    continuation = !!(digit & VLQ_CONTINUATION_BIT);\n    digit &= VLQ_BASE_MASK;\n    result = result + (digit << shift);\n    shift += VLQ_BASE_SHIFT;\n  } while (continuation);\n\n  aOutParam.value = fromVLQSigned(result);\n  aOutParam.rest = aIndex;\n};\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n/**\n * This is a helper function for getting values from parameter/options\n * objects.\n *\n * @param args The object we are extracting values from\n * @param name The name of the property we are getting.\n * @param defaultValue An optional value to return if the property is missing\n * from the object. If this is not specified and the property is missing, an\n * error will be thrown.\n */\nfunction getArg(aArgs, aName, aDefaultValue) {\n  if (aName in aArgs) {\n    return aArgs[aName];\n  } else if (arguments.length === 3) {\n    return aDefaultValue;\n  } else {\n    throw new Error('\"' + aName + '\" is a required argument.');\n  }\n}\nexports.getArg = getArg;\n\nvar urlRegexp = /^(?:([\\w+\\-.]+):)?\\/\\/(?:(\\w+:\\w+)@)?([\\w.-]*)(?::(\\d+))?(.*)$/;\nvar dataUrlRegexp = /^data:.+\\,.+$/;\n\nfunction urlParse(aUrl) {\n  var match = aUrl.match(urlRegexp);\n  if (!match) {\n    return null;\n  }\n  return {\n    scheme: match[1],\n    auth: match[2],\n    host: match[3],\n    port: match[4],\n    path: match[5]\n  };\n}\nexports.urlParse = urlParse;\n\nfunction urlGenerate(aParsedUrl) {\n  var url = '';\n  if (aParsedUrl.scheme) {\n    url += aParsedUrl.scheme + ':';\n  }\n  url += '//';\n  if (aParsedUrl.auth) {\n    url += aParsedUrl.auth + '@';\n  }\n  if (aParsedUrl.host) {\n    url += aParsedUrl.host;\n  }\n  if (aParsedUrl.port) {\n    url += \":\" + aParsedUrl.port\n  }\n  if (aParsedUrl.path) {\n    url += aParsedUrl.path;\n  }\n  return url;\n}\nexports.urlGenerate = urlGenerate;\n\n/**\n * Normalizes a path, or the path portion of a URL:\n *\n * - Replaces consecutive slashes with one slash.\n * - Removes unnecessary '.' parts.\n * - Removes unnecessary '<dir>/..' parts.\n *\n * Based on code in the Node.js 'path' core module.\n *\n * @param aPath The path or url to normalize.\n */\nfunction normalize(aPath) {\n  var path = aPath;\n  var url = urlParse(aPath);\n  if (url) {\n    if (!url.path) {\n      return aPath;\n    }\n    path = url.path;\n  }\n  var isAbsolute = exports.isAbsolute(path);\n\n  var parts = path.split(/\\/+/);\n  for (var part, up = 0, i = parts.length - 1; i >= 0; i--) {\n    part = parts[i];\n    if (part === '.') {\n      parts.splice(i, 1);\n    } else if (part === '..') {\n      up++;\n    } else if (up > 0) {\n      if (part === '') {\n        // The first part is blank if the path is absolute. Trying to go\n        // above the root is a no-op. Therefore we can remove all '..' parts\n        // directly after the root.\n        parts.splice(i + 1, up);\n        up = 0;\n      } else {\n        parts.splice(i, 2);\n        up--;\n      }\n    }\n  }\n  path = parts.join('/');\n\n  if (path === '') {\n    path = isAbsolute ? '/' : '.';\n  }\n\n  if (url) {\n    url.path = path;\n    return urlGenerate(url);\n  }\n  return path;\n}\nexports.normalize = normalize;\n\n/**\n * Joins two paths/URLs.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be joined with the root.\n *\n * - If aPath is a URL or a data URI, aPath is returned, unless aPath is a\n *   scheme-relative URL: Then the scheme of aRoot, if any, is prepended\n *   first.\n * - Otherwise aPath is a path. If aRoot is a URL, then its path portion\n *   is updated with the result and aRoot is returned. Otherwise the result\n *   is returned.\n *   - If aPath is absolute, the result is aPath.\n *   - Otherwise the two paths are joined with a slash.\n * - Joining for example 'http://' and 'www.example.com' is also supported.\n */\nfunction join(aRoot, aPath) {\n  if (aRoot === \"\") {\n    aRoot = \".\";\n  }\n  if (aPath === \"\") {\n    aPath = \".\";\n  }\n  var aPathUrl = urlParse(aPath);\n  var aRootUrl = urlParse(aRoot);\n  if (aRootUrl) {\n    aRoot = aRootUrl.path || '/';\n  }\n\n  // `join(foo, '//www.example.org')`\n  if (aPathUrl && !aPathUrl.scheme) {\n    if (aRootUrl) {\n      aPathUrl.scheme = aRootUrl.scheme;\n    }\n    return urlGenerate(aPathUrl);\n  }\n\n  if (aPathUrl || aPath.match(dataUrlRegexp)) {\n    return aPath;\n  }\n\n  // `join('http://', 'www.example.com')`\n  if (aRootUrl && !aRootUrl.host && !aRootUrl.path) {\n    aRootUrl.host = aPath;\n    return urlGenerate(aRootUrl);\n  }\n\n  var joined = aPath.charAt(0) === '/'\n    ? aPath\n    : normalize(aRoot.replace(/\\/+$/, '') + '/' + aPath);\n\n  if (aRootUrl) {\n    aRootUrl.path = joined;\n    return urlGenerate(aRootUrl);\n  }\n  return joined;\n}\nexports.join = join;\n\nexports.isAbsolute = function (aPath) {\n  return aPath.charAt(0) === '/' || urlRegexp.test(aPath);\n};\n\n/**\n * Make a path relative to a URL or another path.\n *\n * @param aRoot The root path or URL.\n * @param aPath The path or URL to be made relative to aRoot.\n */\nfunction relative(aRoot, aPath) {\n  if (aRoot === \"\") {\n    aRoot = \".\";\n  }\n\n  aRoot = aRoot.replace(/\\/$/, '');\n\n  // It is possible for the path to be above the root. In this case, simply\n  // checking whether the root is a prefix of the path won't work. Instead, we\n  // need to remove components from the root one by one, until either we find\n  // a prefix that fits, or we run out of components to remove.\n  var level = 0;\n  while (aPath.indexOf(aRoot + '/') !== 0) {\n    var index = aRoot.lastIndexOf(\"/\");\n    if (index < 0) {\n      return aPath;\n    }\n\n    // If the only part of the root that is left is the scheme (i.e. http://,\n    // file:///, etc.), one or more slashes (/), or simply nothing at all, we\n    // have exhausted all components, so the path is not relative to the root.\n    aRoot = aRoot.slice(0, index);\n    if (aRoot.match(/^([^\\/]+:\\/)?\\/*$/)) {\n      return aPath;\n    }\n\n    ++level;\n  }\n\n  // Make sure we add a \"../\" for each component we removed from the root.\n  return Array(level + 1).join(\"../\") + aPath.substr(aRoot.length + 1);\n}\nexports.relative = relative;\n\nvar supportsNullProto = (function () {\n  var obj = Object.create(null);\n  return !('__proto__' in obj);\n}());\n\nfunction identity (s) {\n  return s;\n}\n\n/**\n * Because behavior goes wacky when you set `__proto__` on objects, we\n * have to prefix all the strings in our set with an arbitrary character.\n *\n * See https://github.com/mozilla/source-map/pull/31 and\n * https://github.com/mozilla/source-map/issues/30\n *\n * @param String aStr\n */\nfunction toSetString(aStr) {\n  if (isProtoString(aStr)) {\n    return '$' + aStr;\n  }\n\n  return aStr;\n}\nexports.toSetString = supportsNullProto ? identity : toSetString;\n\nfunction fromSetString(aStr) {\n  if (isProtoString(aStr)) {\n    return aStr.slice(1);\n  }\n\n  return aStr;\n}\nexports.fromSetString = supportsNullProto ? identity : fromSetString;\n\nfunction isProtoString(s) {\n  if (!s) {\n    return false;\n  }\n\n  var length = s.length;\n\n  if (length < 9 /* \"__proto__\".length */) {\n    return false;\n  }\n\n  if (s.charCodeAt(length - 1) !== 95  /* '_' */ ||\n      s.charCodeAt(length - 2) !== 95  /* '_' */ ||\n      s.charCodeAt(length - 3) !== 111 /* 'o' */ ||\n      s.charCodeAt(length - 4) !== 116 /* 't' */ ||\n      s.charCodeAt(length - 5) !== 111 /* 'o' */ ||\n      s.charCodeAt(length - 6) !== 114 /* 'r' */ ||\n      s.charCodeAt(length - 7) !== 112 /* 'p' */ ||\n      s.charCodeAt(length - 8) !== 95  /* '_' */ ||\n      s.charCodeAt(length - 9) !== 95  /* '_' */) {\n    return false;\n  }\n\n  for (var i = length - 10; i >= 0; i--) {\n    if (s.charCodeAt(i) !== 36 /* '$' */) {\n      return false;\n    }\n  }\n\n  return true;\n}\n\n/**\n * Comparator between two mappings where the original positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same original source/line/column, but different generated\n * line and column the same. Useful when searching for a mapping with a\n * stubbed out mapping.\n */\nfunction compareByOriginalPositions(mappingA, mappingB, onlyCompareOriginal) {\n  var cmp = strcmp(mappingA.source, mappingB.source);\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalLine - mappingB.originalLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalColumn - mappingB.originalColumn;\n  if (cmp !== 0 || onlyCompareOriginal) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedLine - mappingB.generatedLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByOriginalPositions = compareByOriginalPositions;\n\n/**\n * Comparator between two mappings with deflated source and name indices where\n * the generated positions are compared.\n *\n * Optionally pass in `true` as `onlyCompareGenerated` to consider two\n * mappings with the same generated line and column, but different\n * source/name/original line and column the same. Useful when searching for a\n * mapping with a stubbed out mapping.\n */\nfunction compareByGeneratedPositionsDeflated(mappingA, mappingB, onlyCompareGenerated) {\n  var cmp = mappingA.generatedLine - mappingB.generatedLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n  if (cmp !== 0 || onlyCompareGenerated) {\n    return cmp;\n  }\n\n  cmp = strcmp(mappingA.source, mappingB.source);\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalLine - mappingB.originalLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalColumn - mappingB.originalColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsDeflated = compareByGeneratedPositionsDeflated;\n\nfunction strcmp(aStr1, aStr2) {\n  if (aStr1 === aStr2) {\n    return 0;\n  }\n\n  if (aStr1 === null) {\n    return 1; // aStr2 !== null\n  }\n\n  if (aStr2 === null) {\n    return -1; // aStr1 !== null\n  }\n\n  if (aStr1 > aStr2) {\n    return 1;\n  }\n\n  return -1;\n}\n\n/**\n * Comparator between two mappings with inflated source and name strings where\n * the generated positions are compared.\n */\nfunction compareByGeneratedPositionsInflated(mappingA, mappingB) {\n  var cmp = mappingA.generatedLine - mappingB.generatedLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.generatedColumn - mappingB.generatedColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = strcmp(mappingA.source, mappingB.source);\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalLine - mappingB.originalLine;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  cmp = mappingA.originalColumn - mappingB.originalColumn;\n  if (cmp !== 0) {\n    return cmp;\n  }\n\n  return strcmp(mappingA.name, mappingB.name);\n}\nexports.compareByGeneratedPositionsInflated = compareByGeneratedPositionsInflated;\n\n/**\n * Strip any JSON XSSI avoidance prefix from the string (as documented\n * in the source maps specification), and then parse the string as\n * JSON.\n */\nfunction parseSourceMapInput(str) {\n  return JSON.parse(str.replace(/^\\)]}'[^\\n]*\\n/, ''));\n}\nexports.parseSourceMapInput = parseSourceMapInput;\n\n/**\n * Compute the URL of a source given the the source root, the source's\n * URL, and the source map's URL.\n */\nfunction computeSourceURL(sourceRoot, sourceURL, sourceMapURL) {\n  sourceURL = sourceURL || '';\n\n  if (sourceRoot) {\n    // This follows what Chrome does.\n    if (sourceRoot[sourceRoot.length - 1] !== '/' && sourceURL[0] !== '/') {\n      sourceRoot += '/';\n    }\n    // The spec says:\n    //   Line 4: An optional source root, useful for relocating source\n    //   files on a server or removing repeated values in the\n    //   \u201Csources\u201D entry.  This value is prepended to the individual\n    //   entries in the \u201Csource\u201D field.\n    sourceURL = sourceRoot + sourceURL;\n  }\n\n  // Historically, SourceMapConsumer did not take the sourceMapURL as\n  // a parameter.  This mode is still somewhat supported, which is why\n  // this code block is conditional.  However, it's preferable to pass\n  // the source map URL to SourceMapConsumer, so that this function\n  // can implement the source URL resolution algorithm as outlined in\n  // the spec.  This block is basically the equivalent of:\n  //    new URL(sourceURL, sourceMapURL).toString()\n  // ... except it avoids using URL, which wasn't available in the\n  // older releases of node still supported by this library.\n  //\n  // The spec says:\n  //   If the sources are not absolute URLs after prepending of the\n  //   \u201CsourceRoot\u201D, the sources are resolved relative to the\n  //   SourceMap (like resolving script src in a html document).\n  if (sourceMapURL) {\n    var parsed = urlParse(sourceMapURL);\n    if (!parsed) {\n      throw new Error(\"sourceMapURL could not be parsed\");\n    }\n    if (parsed.path) {\n      // Strip the last path component, but keep the \"/\".\n      var index = parsed.path.lastIndexOf('/');\n      if (index >= 0) {\n        parsed.path = parsed.path.substring(0, index + 1);\n      }\n    }\n    sourceURL = join(urlGenerate(parsed), sourceURL);\n  }\n\n  return normalize(sourceURL);\n}\nexports.computeSourceURL = computeSourceURL;\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar has = Object.prototype.hasOwnProperty;\nvar hasNativeMap = typeof Map !== \"undefined\";\n\n/**\n * A data structure which is a combination of an array and a set. Adding a new\n * member is O(1), testing for membership is O(1), and finding the index of an\n * element is O(1). Removing elements from the set is not supported. Only\n * strings are supported for membership.\n */\nfunction ArraySet() {\n  this._array = [];\n  this._set = hasNativeMap ? new Map() : Object.create(null);\n}\n\n/**\n * Static method for creating ArraySet instances from an existing array.\n */\nArraySet.fromArray = function ArraySet_fromArray(aArray, aAllowDuplicates) {\n  var set = new ArraySet();\n  for (var i = 0, len = aArray.length; i < len; i++) {\n    set.add(aArray[i], aAllowDuplicates);\n  }\n  return set;\n};\n\n/**\n * Return how many unique items are in this ArraySet. If duplicates have been\n * added, than those do not count towards the size.\n *\n * @returns Number\n */\nArraySet.prototype.size = function ArraySet_size() {\n  return hasNativeMap ? this._set.size : Object.getOwnPropertyNames(this._set).length;\n};\n\n/**\n * Add the given string to this set.\n *\n * @param String aStr\n */\nArraySet.prototype.add = function ArraySet_add(aStr, aAllowDuplicates) {\n  var sStr = hasNativeMap ? aStr : util.toSetString(aStr);\n  var isDuplicate = hasNativeMap ? this.has(aStr) : has.call(this._set, sStr);\n  var idx = this._array.length;\n  if (!isDuplicate || aAllowDuplicates) {\n    this._array.push(aStr);\n  }\n  if (!isDuplicate) {\n    if (hasNativeMap) {\n      this._set.set(aStr, idx);\n    } else {\n      this._set[sStr] = idx;\n    }\n  }\n};\n\n/**\n * Is the given string a member of this set?\n *\n * @param String aStr\n */\nArraySet.prototype.has = function ArraySet_has(aStr) {\n  if (hasNativeMap) {\n    return this._set.has(aStr);\n  } else {\n    var sStr = util.toSetString(aStr);\n    return has.call(this._set, sStr);\n  }\n};\n\n/**\n * What is the index of the given string in the array?\n *\n * @param String aStr\n */\nArraySet.prototype.indexOf = function ArraySet_indexOf(aStr) {\n  if (hasNativeMap) {\n    var idx = this._set.get(aStr);\n    if (idx >= 0) {\n        return idx;\n    }\n  } else {\n    var sStr = util.toSetString(aStr);\n    if (has.call(this._set, sStr)) {\n      return this._set[sStr];\n    }\n  }\n\n  throw new Error('\"' + aStr + '\" is not in the set.');\n};\n\n/**\n * What is the element at the given index?\n *\n * @param Number aIdx\n */\nArraySet.prototype.at = function ArraySet_at(aIdx) {\n  if (aIdx >= 0 && aIdx < this._array.length) {\n    return this._array[aIdx];\n  }\n  throw new Error('No element indexed by ' + aIdx);\n};\n\n/**\n * Returns the array representation of this set (which has the proper indices\n * indicated by indexOf). Note that this is a copy of the internal array used\n * for storing the members so that no one can mess with internal state.\n */\nArraySet.prototype.toArray = function ArraySet_toArray() {\n  return this._array.slice();\n};\n\nexports.ArraySet = ArraySet;\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2014 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\n\n/**\n * Determine whether mappingB is after mappingA with respect to generated\n * position.\n */\nfunction generatedPositionAfter(mappingA, mappingB) {\n  // Optimized for most common case\n  var lineA = mappingA.generatedLine;\n  var lineB = mappingB.generatedLine;\n  var columnA = mappingA.generatedColumn;\n  var columnB = mappingB.generatedColumn;\n  return lineB > lineA || lineB == lineA && columnB >= columnA ||\n         util.compareByGeneratedPositionsInflated(mappingA, mappingB) <= 0;\n}\n\n/**\n * A data structure to provide a sorted view of accumulated mappings in a\n * performance conscious manner. It trades a neglibable overhead in general\n * case for a large speedup in case of mappings being added in order.\n */\nfunction MappingList() {\n  this._array = [];\n  this._sorted = true;\n  // Serves as infimum\n  this._last = {generatedLine: -1, generatedColumn: 0};\n}\n\n/**\n * Iterate through internal items. This method takes the same arguments that\n * `Array.prototype.forEach` takes.\n *\n * NOTE: The order of the mappings is NOT guaranteed.\n */\nMappingList.prototype.unsortedForEach =\n  function MappingList_forEach(aCallback, aThisArg) {\n    this._array.forEach(aCallback, aThisArg);\n  };\n\n/**\n * Add the given source mapping.\n *\n * @param Object aMapping\n */\nMappingList.prototype.add = function MappingList_add(aMapping) {\n  if (generatedPositionAfter(this._last, aMapping)) {\n    this._last = aMapping;\n    this._array.push(aMapping);\n  } else {\n    this._sorted = false;\n    this._array.push(aMapping);\n  }\n};\n\n/**\n * Returns the flat, sorted array of mappings. The mappings are sorted by\n * generated position.\n *\n * WARNING: This method returns internal data without copying, for\n * performance. The return value must NOT be mutated, and should be treated as\n * an immutable borrow. If you want to take ownership, you must make your own\n * copy.\n */\nMappingList.prototype.toArray = function MappingList_toArray() {\n  if (!this._sorted) {\n    this._array.sort(util.compareByGeneratedPositionsInflated);\n    this._sorted = true;\n  }\n  return this._array;\n};\n\nexports.MappingList = MappingList;\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar base64VLQ = require('./base64-vlq');\nvar util = require('./util');\nvar ArraySet = require('./array-set').ArraySet;\nvar MappingList = require('./mapping-list').MappingList;\n\n/**\n * An instance of the SourceMapGenerator represents a source map which is\n * being built incrementally. You may pass an object with the following\n * properties:\n *\n *   - file: The filename of the generated source.\n *   - sourceRoot: A root for all relative URLs in this source map.\n */\nfunction SourceMapGenerator(aArgs) {\n  if (!aArgs) {\n    aArgs = {};\n  }\n  this._file = util.getArg(aArgs, 'file', null);\n  this._sourceRoot = util.getArg(aArgs, 'sourceRoot', null);\n  this._skipValidation = util.getArg(aArgs, 'skipValidation', false);\n  this._sources = new ArraySet();\n  this._names = new ArraySet();\n  this._mappings = new MappingList();\n  this._sourcesContents = null;\n}\n\nSourceMapGenerator.prototype._version = 3;\n\n/**\n * Creates a new SourceMapGenerator based on a SourceMapConsumer\n *\n * @param aSourceMapConsumer The SourceMap.\n */\nSourceMapGenerator.fromSourceMap =\n  function SourceMapGenerator_fromSourceMap(aSourceMapConsumer) {\n    var sourceRoot = aSourceMapConsumer.sourceRoot;\n    var generator = new SourceMapGenerator({\n      file: aSourceMapConsumer.file,\n      sourceRoot: sourceRoot\n    });\n    aSourceMapConsumer.eachMapping(function (mapping) {\n      var newMapping = {\n        generated: {\n          line: mapping.generatedLine,\n          column: mapping.generatedColumn\n        }\n      };\n\n      if (mapping.source != null) {\n        newMapping.source = mapping.source;\n        if (sourceRoot != null) {\n          newMapping.source = util.relative(sourceRoot, newMapping.source);\n        }\n\n        newMapping.original = {\n          line: mapping.originalLine,\n          column: mapping.originalColumn\n        };\n\n        if (mapping.name != null) {\n          newMapping.name = mapping.name;\n        }\n      }\n\n      generator.addMapping(newMapping);\n    });\n    aSourceMapConsumer.sources.forEach(function (sourceFile) {\n      var sourceRelative = sourceFile;\n      if (sourceRoot !== null) {\n        sourceRelative = util.relative(sourceRoot, sourceFile);\n      }\n\n      if (!generator._sources.has(sourceRelative)) {\n        generator._sources.add(sourceRelative);\n      }\n\n      var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n      if (content != null) {\n        generator.setSourceContent(sourceFile, content);\n      }\n    });\n    return generator;\n  };\n\n/**\n * Add a single mapping from original source line and column to the generated\n * source's line and column for this source map being created. The mapping\n * object should have the following properties:\n *\n *   - generated: An object with the generated line and column positions.\n *   - original: An object with the original line and column positions.\n *   - source: The original source file (relative to the sourceRoot).\n *   - name: An optional original token name for this mapping.\n */\nSourceMapGenerator.prototype.addMapping =\n  function SourceMapGenerator_addMapping(aArgs) {\n    var generated = util.getArg(aArgs, 'generated');\n    var original = util.getArg(aArgs, 'original', null);\n    var source = util.getArg(aArgs, 'source', null);\n    var name = util.getArg(aArgs, 'name', null);\n\n    if (!this._skipValidation) {\n      this._validateMapping(generated, original, source, name);\n    }\n\n    if (source != null) {\n      source = String(source);\n      if (!this._sources.has(source)) {\n        this._sources.add(source);\n      }\n    }\n\n    if (name != null) {\n      name = String(name);\n      if (!this._names.has(name)) {\n        this._names.add(name);\n      }\n    }\n\n    this._mappings.add({\n      generatedLine: generated.line,\n      generatedColumn: generated.column,\n      originalLine: original != null && original.line,\n      originalColumn: original != null && original.column,\n      source: source,\n      name: name\n    });\n  };\n\n/**\n * Set the source content for a source file.\n */\nSourceMapGenerator.prototype.setSourceContent =\n  function SourceMapGenerator_setSourceContent(aSourceFile, aSourceContent) {\n    var source = aSourceFile;\n    if (this._sourceRoot != null) {\n      source = util.relative(this._sourceRoot, source);\n    }\n\n    if (aSourceContent != null) {\n      // Add the source content to the _sourcesContents map.\n      // Create a new _sourcesContents map if the property is null.\n      if (!this._sourcesContents) {\n        this._sourcesContents = Object.create(null);\n      }\n      this._sourcesContents[util.toSetString(source)] = aSourceContent;\n    } else if (this._sourcesContents) {\n      // Remove the source file from the _sourcesContents map.\n      // If the _sourcesContents map is empty, set the property to null.\n      delete this._sourcesContents[util.toSetString(source)];\n      if (Object.keys(this._sourcesContents).length === 0) {\n        this._sourcesContents = null;\n      }\n    }\n  };\n\n/**\n * Applies the mappings of a sub-source-map for a specific source file to the\n * source map being generated. Each mapping to the supplied source file is\n * rewritten using the supplied source map. Note: The resolution for the\n * resulting mappings is the minimium of this map and the supplied map.\n *\n * @param aSourceMapConsumer The source map to be applied.\n * @param aSourceFile Optional. The filename of the source file.\n *        If omitted, SourceMapConsumer's file property will be used.\n * @param aSourceMapPath Optional. The dirname of the path to the source map\n *        to be applied. If relative, it is relative to the SourceMapConsumer.\n *        This parameter is needed when the two source maps aren't in the same\n *        directory, and the source map to be applied contains relative source\n *        paths. If so, those relative source paths need to be rewritten\n *        relative to the SourceMapGenerator.\n */\nSourceMapGenerator.prototype.applySourceMap =\n  function SourceMapGenerator_applySourceMap(aSourceMapConsumer, aSourceFile, aSourceMapPath) {\n    var sourceFile = aSourceFile;\n    // If aSourceFile is omitted, we will use the file property of the SourceMap\n    if (aSourceFile == null) {\n      if (aSourceMapConsumer.file == null) {\n        throw new Error(\n          'SourceMapGenerator.prototype.applySourceMap requires either an explicit source file, ' +\n          'or the source map\\'s \"file\" property. Both were omitted.'\n        );\n      }\n      sourceFile = aSourceMapConsumer.file;\n    }\n    var sourceRoot = this._sourceRoot;\n    // Make \"sourceFile\" relative if an absolute Url is passed.\n    if (sourceRoot != null) {\n      sourceFile = util.relative(sourceRoot, sourceFile);\n    }\n    // Applying the SourceMap can add and remove items from the sources and\n    // the names array.\n    var newSources = new ArraySet();\n    var newNames = new ArraySet();\n\n    // Find mappings for the \"sourceFile\"\n    this._mappings.unsortedForEach(function (mapping) {\n      if (mapping.source === sourceFile && mapping.originalLine != null) {\n        // Check if it can be mapped by the source map, then update the mapping.\n        var original = aSourceMapConsumer.originalPositionFor({\n          line: mapping.originalLine,\n          column: mapping.originalColumn\n        });\n        if (original.source != null) {\n          // Copy mapping\n          mapping.source = original.source;\n          if (aSourceMapPath != null) {\n            mapping.source = util.join(aSourceMapPath, mapping.source)\n          }\n          if (sourceRoot != null) {\n            mapping.source = util.relative(sourceRoot, mapping.source);\n          }\n          mapping.originalLine = original.line;\n          mapping.originalColumn = original.column;\n          if (original.name != null) {\n            mapping.name = original.name;\n          }\n        }\n      }\n\n      var source = mapping.source;\n      if (source != null && !newSources.has(source)) {\n        newSources.add(source);\n      }\n\n      var name = mapping.name;\n      if (name != null && !newNames.has(name)) {\n        newNames.add(name);\n      }\n\n    }, this);\n    this._sources = newSources;\n    this._names = newNames;\n\n    // Copy sourcesContents of applied map.\n    aSourceMapConsumer.sources.forEach(function (sourceFile) {\n      var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n      if (content != null) {\n        if (aSourceMapPath != null) {\n          sourceFile = util.join(aSourceMapPath, sourceFile);\n        }\n        if (sourceRoot != null) {\n          sourceFile = util.relative(sourceRoot, sourceFile);\n        }\n        this.setSourceContent(sourceFile, content);\n      }\n    }, this);\n  };\n\n/**\n * A mapping can have one of the three levels of data:\n *\n *   1. Just the generated position.\n *   2. The Generated position, original position, and original source.\n *   3. Generated and original position, original source, as well as a name\n *      token.\n *\n * To maintain consistency, we validate that any new mapping being added falls\n * in to one of these categories.\n */\nSourceMapGenerator.prototype._validateMapping =\n  function SourceMapGenerator_validateMapping(aGenerated, aOriginal, aSource,\n                                              aName) {\n    // When aOriginal is truthy but has empty values for .line and .column,\n    // it is most likely a programmer error. In this case we throw a very\n    // specific error message to try to guide them the right way.\n    // For example: https://github.com/Polymer/polymer-bundler/pull/519\n    if (aOriginal && typeof aOriginal.line !== 'number' && typeof aOriginal.column !== 'number') {\n        throw new Error(\n            'original.line and original.column are not numbers -- you probably meant to omit ' +\n            'the original mapping entirely and only map the generated position. If so, pass ' +\n            'null for the original mapping instead of an object with empty or null values.'\n        );\n    }\n\n    if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n        && aGenerated.line > 0 && aGenerated.column >= 0\n        && !aOriginal && !aSource && !aName) {\n      // Case 1.\n      return;\n    }\n    else if (aGenerated && 'line' in aGenerated && 'column' in aGenerated\n             && aOriginal && 'line' in aOriginal && 'column' in aOriginal\n             && aGenerated.line > 0 && aGenerated.column >= 0\n             && aOriginal.line > 0 && aOriginal.column >= 0\n             && aSource) {\n      // Cases 2 and 3.\n      return;\n    }\n    else {\n      throw new Error('Invalid mapping: ' + JSON.stringify({\n        generated: aGenerated,\n        source: aSource,\n        original: aOriginal,\n        name: aName\n      }));\n    }\n  };\n\n/**\n * Serialize the accumulated mappings in to the stream of base 64 VLQs\n * specified by the source map format.\n */\nSourceMapGenerator.prototype._serializeMappings =\n  function SourceMapGenerator_serializeMappings() {\n    var previousGeneratedColumn = 0;\n    var previousGeneratedLine = 1;\n    var previousOriginalColumn = 0;\n    var previousOriginalLine = 0;\n    var previousName = 0;\n    var previousSource = 0;\n    var result = '';\n    var next;\n    var mapping;\n    var nameIdx;\n    var sourceIdx;\n\n    var mappings = this._mappings.toArray();\n    for (var i = 0, len = mappings.length; i < len; i++) {\n      mapping = mappings[i];\n      next = ''\n\n      if (mapping.generatedLine !== previousGeneratedLine) {\n        previousGeneratedColumn = 0;\n        while (mapping.generatedLine !== previousGeneratedLine) {\n          next += ';';\n          previousGeneratedLine++;\n        }\n      }\n      else {\n        if (i > 0) {\n          if (!util.compareByGeneratedPositionsInflated(mapping, mappings[i - 1])) {\n            continue;\n          }\n          next += ',';\n        }\n      }\n\n      next += base64VLQ.encode(mapping.generatedColumn\n                                 - previousGeneratedColumn);\n      previousGeneratedColumn = mapping.generatedColumn;\n\n      if (mapping.source != null) {\n        sourceIdx = this._sources.indexOf(mapping.source);\n        next += base64VLQ.encode(sourceIdx - previousSource);\n        previousSource = sourceIdx;\n\n        // lines are stored 0-based in SourceMap spec version 3\n        next += base64VLQ.encode(mapping.originalLine - 1\n                                   - previousOriginalLine);\n        previousOriginalLine = mapping.originalLine - 1;\n\n        next += base64VLQ.encode(mapping.originalColumn\n                                   - previousOriginalColumn);\n        previousOriginalColumn = mapping.originalColumn;\n\n        if (mapping.name != null) {\n          nameIdx = this._names.indexOf(mapping.name);\n          next += base64VLQ.encode(nameIdx - previousName);\n          previousName = nameIdx;\n        }\n      }\n\n      result += next;\n    }\n\n    return result;\n  };\n\nSourceMapGenerator.prototype._generateSourcesContent =\n  function SourceMapGenerator_generateSourcesContent(aSources, aSourceRoot) {\n    return aSources.map(function (source) {\n      if (!this._sourcesContents) {\n        return null;\n      }\n      if (aSourceRoot != null) {\n        source = util.relative(aSourceRoot, source);\n      }\n      var key = util.toSetString(source);\n      return Object.prototype.hasOwnProperty.call(this._sourcesContents, key)\n        ? this._sourcesContents[key]\n        : null;\n    }, this);\n  };\n\n/**\n * Externalize the source map.\n */\nSourceMapGenerator.prototype.toJSON =\n  function SourceMapGenerator_toJSON() {\n    var map = {\n      version: this._version,\n      sources: this._sources.toArray(),\n      names: this._names.toArray(),\n      mappings: this._serializeMappings()\n    };\n    if (this._file != null) {\n      map.file = this._file;\n    }\n    if (this._sourceRoot != null) {\n      map.sourceRoot = this._sourceRoot;\n    }\n    if (this._sourcesContents) {\n      map.sourcesContent = this._generateSourcesContent(map.sources, map.sourceRoot);\n    }\n\n    return map;\n  };\n\n/**\n * Render the source map being generated to a string.\n */\nSourceMapGenerator.prototype.toString =\n  function SourceMapGenerator_toString() {\n    return JSON.stringify(this.toJSON());\n  };\n\nexports.SourceMapGenerator = SourceMapGenerator;\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nexports.GREATEST_LOWER_BOUND = 1;\nexports.LEAST_UPPER_BOUND = 2;\n\n/**\n * Recursive implementation of binary search.\n *\n * @param aLow Indices here and lower do not contain the needle.\n * @param aHigh Indices here and higher do not contain the needle.\n * @param aNeedle The element being searched for.\n * @param aHaystack The non-empty array being searched.\n * @param aCompare Function which takes two elements and returns -1, 0, or 1.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n *     'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n *     closest element that is smaller than or greater than the one we are\n *     searching for, respectively, if the exact element cannot be found.\n */\nfunction recursiveSearch(aLow, aHigh, aNeedle, aHaystack, aCompare, aBias) {\n  // This function terminates when one of the following is true:\n  //\n  //   1. We find the exact element we are looking for.\n  //\n  //   2. We did not find the exact element, but we can return the index of\n  //      the next-closest element.\n  //\n  //   3. We did not find the exact element, and there is no next-closest\n  //      element than the one we are searching for, so we return -1.\n  var mid = Math.floor((aHigh - aLow) / 2) + aLow;\n  var cmp = aCompare(aNeedle, aHaystack[mid], true);\n  if (cmp === 0) {\n    // Found the element we are looking for.\n    return mid;\n  }\n  else if (cmp > 0) {\n    // Our needle is greater than aHaystack[mid].\n    if (aHigh - mid > 1) {\n      // The element is in the upper half.\n      return recursiveSearch(mid, aHigh, aNeedle, aHaystack, aCompare, aBias);\n    }\n\n    // The exact needle element was not found in this haystack. Determine if\n    // we are in termination case (3) or (2) and return the appropriate thing.\n    if (aBias == exports.LEAST_UPPER_BOUND) {\n      return aHigh < aHaystack.length ? aHigh : -1;\n    } else {\n      return mid;\n    }\n  }\n  else {\n    // Our needle is less than aHaystack[mid].\n    if (mid - aLow > 1) {\n      // The element is in the lower half.\n      return recursiveSearch(aLow, mid, aNeedle, aHaystack, aCompare, aBias);\n    }\n\n    // we are in termination case (3) or (2) and return the appropriate thing.\n    if (aBias == exports.LEAST_UPPER_BOUND) {\n      return mid;\n    } else {\n      return aLow < 0 ? -1 : aLow;\n    }\n  }\n}\n\n/**\n * This is an implementation of binary search which will always try and return\n * the index of the closest element if there is no exact hit. This is because\n * mappings between original and generated line/col pairs are single points,\n * and there is an implicit region between each of them, so a miss just means\n * that you aren't on the very start of a region.\n *\n * @param aNeedle The element you are looking for.\n * @param aHaystack The array that is being searched.\n * @param aCompare A function which takes the needle and an element in the\n *     array and returns -1, 0, or 1 depending on whether the needle is less\n *     than, equal to, or greater than the element, respectively.\n * @param aBias Either 'binarySearch.GREATEST_LOWER_BOUND' or\n *     'binarySearch.LEAST_UPPER_BOUND'. Specifies whether to return the\n *     closest element that is smaller than or greater than the one we are\n *     searching for, respectively, if the exact element cannot be found.\n *     Defaults to 'binarySearch.GREATEST_LOWER_BOUND'.\n */\nexports.search = function search(aNeedle, aHaystack, aCompare, aBias) {\n  if (aHaystack.length === 0) {\n    return -1;\n  }\n\n  var index = recursiveSearch(-1, aHaystack.length, aNeedle, aHaystack,\n                              aCompare, aBias || exports.GREATEST_LOWER_BOUND);\n  if (index < 0) {\n    return -1;\n  }\n\n  // We have found either the exact element, or the next-closest element than\n  // the one we are searching for. However, there may be more than one such\n  // element. Make sure we always return the smallest of these.\n  while (index - 1 >= 0) {\n    if (aCompare(aHaystack[index], aHaystack[index - 1], true) !== 0) {\n      break;\n    }\n    --index;\n  }\n\n  return index;\n};\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\n// It turns out that some (most?) JavaScript engines don't self-host\n// `Array.prototype.sort`. This makes sense because C++ will likely remain\n// faster than JS when doing raw CPU-intensive sorting. However, when using a\n// custom comparator function, calling back and forth between the VM's C++ and\n// JIT'd JS is rather slow *and* loses JIT type information, resulting in\n// worse generated code for the comparator function than would be optimal. In\n// fact, when sorting with a comparator, these costs outweigh the benefits of\n// sorting in C++. By using our own JS-implemented Quick Sort (below), we get\n// a ~3500ms mean speed-up in `bench/bench.html`.\n\n/**\n * Swap the elements indexed by `x` and `y` in the array `ary`.\n *\n * @param {Array} ary\n *        The array.\n * @param {Number} x\n *        The index of the first item.\n * @param {Number} y\n *        The index of the second item.\n */\nfunction swap(ary, x, y) {\n  var temp = ary[x];\n  ary[x] = ary[y];\n  ary[y] = temp;\n}\n\n/**\n * Returns a random integer within the range `low .. high` inclusive.\n *\n * @param {Number} low\n *        The lower bound on the range.\n * @param {Number} high\n *        The upper bound on the range.\n */\nfunction randomIntInRange(low, high) {\n  return Math.round(low + (Math.random() * (high - low)));\n}\n\n/**\n * The Quick Sort algorithm.\n *\n * @param {Array} ary\n *        An array to sort.\n * @param {function} comparator\n *        Function to use to compare two items.\n * @param {Number} p\n *        Start index of the array\n * @param {Number} r\n *        End index of the array\n */\nfunction doQuickSort(ary, comparator, p, r) {\n  // If our lower bound is less than our upper bound, we (1) partition the\n  // array into two pieces and (2) recurse on each half. If it is not, this is\n  // the empty array and our base case.\n\n  if (p < r) {\n    // (1) Partitioning.\n    //\n    // The partitioning chooses a pivot between `p` and `r` and moves all\n    // elements that are less than or equal to the pivot to the before it, and\n    // all the elements that are greater than it after it. The effect is that\n    // once partition is done, the pivot is in the exact place it will be when\n    // the array is put in sorted order, and it will not need to be moved\n    // again. This runs in O(n) time.\n\n    // Always choose a random pivot so that an input array which is reverse\n    // sorted does not cause O(n^2) running time.\n    var pivotIndex = randomIntInRange(p, r);\n    var i = p - 1;\n\n    swap(ary, pivotIndex, r);\n    var pivot = ary[r];\n\n    // Immediately after `j` is incremented in this loop, the following hold\n    // true:\n    //\n    //   * Every element in `ary[p .. i]` is less than or equal to the pivot.\n    //\n    //   * Every element in `ary[i+1 .. j-1]` is greater than the pivot.\n    for (var j = p; j < r; j++) {\n      if (comparator(ary[j], pivot) <= 0) {\n        i += 1;\n        swap(ary, i, j);\n      }\n    }\n\n    swap(ary, i + 1, j);\n    var q = i + 1;\n\n    // (2) Recurse on each half.\n\n    doQuickSort(ary, comparator, p, q - 1);\n    doQuickSort(ary, comparator, q + 1, r);\n  }\n}\n\n/**\n * Sort the given array in-place with the given comparator function.\n *\n * @param {Array} ary\n *        An array to sort.\n * @param {function} comparator\n *        Function to use to compare two items.\n */\nexports.quickSort = function (ary, comparator) {\n  doQuickSort(ary, comparator, 0, ary.length - 1);\n};\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar util = require('./util');\nvar binarySearch = require('./binary-search');\nvar ArraySet = require('./array-set').ArraySet;\nvar base64VLQ = require('./base64-vlq');\nvar quickSort = require('./quick-sort').quickSort;\n\nfunction SourceMapConsumer(aSourceMap, aSourceMapURL) {\n  var sourceMap = aSourceMap;\n  if (typeof aSourceMap === 'string') {\n    sourceMap = util.parseSourceMapInput(aSourceMap);\n  }\n\n  return sourceMap.sections != null\n    ? new IndexedSourceMapConsumer(sourceMap, aSourceMapURL)\n    : new BasicSourceMapConsumer(sourceMap, aSourceMapURL);\n}\n\nSourceMapConsumer.fromSourceMap = function(aSourceMap, aSourceMapURL) {\n  return BasicSourceMapConsumer.fromSourceMap(aSourceMap, aSourceMapURL);\n}\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nSourceMapConsumer.prototype._version = 3;\n\n// `__generatedMappings` and `__originalMappings` are arrays that hold the\n// parsed mapping coordinates from the source map's \"mappings\" attribute. They\n// are lazily instantiated, accessed via the `_generatedMappings` and\n// `_originalMappings` getters respectively, and we only parse the mappings\n// and create these arrays once queried for a source location. We jump through\n// these hoops because there can be many thousands of mappings, and parsing\n// them is expensive, so we only want to do it if we must.\n//\n// Each object in the arrays is of the form:\n//\n//     {\n//       generatedLine: The line number in the generated code,\n//       generatedColumn: The column number in the generated code,\n//       source: The path to the original source file that generated this\n//               chunk of code,\n//       originalLine: The line number in the original source that\n//                     corresponds to this chunk of generated code,\n//       originalColumn: The column number in the original source that\n//                       corresponds to this chunk of generated code,\n//       name: The name of the original symbol which generated this chunk of\n//             code.\n//     }\n//\n// All properties except for `generatedLine` and `generatedColumn` can be\n// `null`.\n//\n// `_generatedMappings` is ordered by the generated positions.\n//\n// `_originalMappings` is ordered by the original positions.\n\nSourceMapConsumer.prototype.__generatedMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_generatedMappings', {\n  configurable: true,\n  enumerable: true,\n  get: function () {\n    if (!this.__generatedMappings) {\n      this._parseMappings(this._mappings, this.sourceRoot);\n    }\n\n    return this.__generatedMappings;\n  }\n});\n\nSourceMapConsumer.prototype.__originalMappings = null;\nObject.defineProperty(SourceMapConsumer.prototype, '_originalMappings', {\n  configurable: true,\n  enumerable: true,\n  get: function () {\n    if (!this.__originalMappings) {\n      this._parseMappings(this._mappings, this.sourceRoot);\n    }\n\n    return this.__originalMappings;\n  }\n});\n\nSourceMapConsumer.prototype._charIsMappingSeparator =\n  function SourceMapConsumer_charIsMappingSeparator(aStr, index) {\n    var c = aStr.charAt(index);\n    return c === \";\" || c === \",\";\n  };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nSourceMapConsumer.prototype._parseMappings =\n  function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n    throw new Error(\"Subclasses must implement _parseMappings\");\n  };\n\nSourceMapConsumer.GENERATED_ORDER = 1;\nSourceMapConsumer.ORIGINAL_ORDER = 2;\n\nSourceMapConsumer.GREATEST_LOWER_BOUND = 1;\nSourceMapConsumer.LEAST_UPPER_BOUND = 2;\n\n/**\n * Iterate over each mapping between an original source/line/column and a\n * generated line/column in this source map.\n *\n * @param Function aCallback\n *        The function that is called with each mapping.\n * @param Object aContext\n *        Optional. If specified, this object will be the value of `this` every\n *        time that `aCallback` is called.\n * @param aOrder\n *        Either `SourceMapConsumer.GENERATED_ORDER` or\n *        `SourceMapConsumer.ORIGINAL_ORDER`. Specifies whether you want to\n *        iterate over the mappings sorted by the generated file's line/column\n *        order or the original's source/line/column order, respectively. Defaults to\n *        `SourceMapConsumer.GENERATED_ORDER`.\n */\nSourceMapConsumer.prototype.eachMapping =\n  function SourceMapConsumer_eachMapping(aCallback, aContext, aOrder) {\n    var context = aContext || null;\n    var order = aOrder || SourceMapConsumer.GENERATED_ORDER;\n\n    var mappings;\n    switch (order) {\n    case SourceMapConsumer.GENERATED_ORDER:\n      mappings = this._generatedMappings;\n      break;\n    case SourceMapConsumer.ORIGINAL_ORDER:\n      mappings = this._originalMappings;\n      break;\n    default:\n      throw new Error(\"Unknown order of iteration.\");\n    }\n\n    var sourceRoot = this.sourceRoot;\n    mappings.map(function (mapping) {\n      var source = mapping.source === null ? null : this._sources.at(mapping.source);\n      source = util.computeSourceURL(sourceRoot, source, this._sourceMapURL);\n      return {\n        source: source,\n        generatedLine: mapping.generatedLine,\n        generatedColumn: mapping.generatedColumn,\n        originalLine: mapping.originalLine,\n        originalColumn: mapping.originalColumn,\n        name: mapping.name === null ? null : this._names.at(mapping.name)\n      };\n    }, this).forEach(aCallback, context);\n  };\n\n/**\n * Returns all generated line and column information for the original source,\n * line, and column provided. If no column is provided, returns all mappings\n * corresponding to a either the line we are searching for or the next\n * closest line that has any mappings. Otherwise, returns all mappings\n * corresponding to the given line and either the column we are searching for\n * or the next closest column that has any offsets.\n *\n * The only argument is an object with the following properties:\n *\n *   - source: The filename of the original source.\n *   - line: The line number in the original source.  The line number is 1-based.\n *   - column: Optional. the column number in the original source.\n *    The column number is 0-based.\n *\n * and an array of objects is returned, each with the following properties:\n *\n *   - line: The line number in the generated source, or null.  The\n *    line number is 1-based.\n *   - column: The column number in the generated source, or null.\n *    The column number is 0-based.\n */\nSourceMapConsumer.prototype.allGeneratedPositionsFor =\n  function SourceMapConsumer_allGeneratedPositionsFor(aArgs) {\n    var line = util.getArg(aArgs, 'line');\n\n    // When there is no exact match, BasicSourceMapConsumer.prototype._findMapping\n    // returns the index of the closest mapping less than the needle. By\n    // setting needle.originalColumn to 0, we thus find the last mapping for\n    // the given line, provided such a mapping exists.\n    var needle = {\n      source: util.getArg(aArgs, 'source'),\n      originalLine: line,\n      originalColumn: util.getArg(aArgs, 'column', 0)\n    };\n\n    needle.source = this._findSourceIndex(needle.source);\n    if (needle.source < 0) {\n      return [];\n    }\n\n    var mappings = [];\n\n    var index = this._findMapping(needle,\n                                  this._originalMappings,\n                                  \"originalLine\",\n                                  \"originalColumn\",\n                                  util.compareByOriginalPositions,\n                                  binarySearch.LEAST_UPPER_BOUND);\n    if (index >= 0) {\n      var mapping = this._originalMappings[index];\n\n      if (aArgs.column === undefined) {\n        var originalLine = mapping.originalLine;\n\n        // Iterate until either we run out of mappings, or we run into\n        // a mapping for a different line than the one we found. Since\n        // mappings are sorted, this is guaranteed to find all mappings for\n        // the line we found.\n        while (mapping && mapping.originalLine === originalLine) {\n          mappings.push({\n            line: util.getArg(mapping, 'generatedLine', null),\n            column: util.getArg(mapping, 'generatedColumn', null),\n            lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n          });\n\n          mapping = this._originalMappings[++index];\n        }\n      } else {\n        var originalColumn = mapping.originalColumn;\n\n        // Iterate until either we run out of mappings, or we run into\n        // a mapping for a different line than the one we were searching for.\n        // Since mappings are sorted, this is guaranteed to find all mappings for\n        // the line we are searching for.\n        while (mapping &&\n               mapping.originalLine === line &&\n               mapping.originalColumn == originalColumn) {\n          mappings.push({\n            line: util.getArg(mapping, 'generatedLine', null),\n            column: util.getArg(mapping, 'generatedColumn', null),\n            lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n          });\n\n          mapping = this._originalMappings[++index];\n        }\n      }\n    }\n\n    return mappings;\n  };\n\nexports.SourceMapConsumer = SourceMapConsumer;\n\n/**\n * A BasicSourceMapConsumer instance represents a parsed source map which we can\n * query for information about the original file positions by giving it a file\n * position in the generated source.\n *\n * The first parameter is the raw source map (either as a JSON string, or\n * already parsed to an object). According to the spec, source maps have the\n * following attributes:\n *\n *   - version: Which version of the source map spec this map is following.\n *   - sources: An array of URLs to the original source files.\n *   - names: An array of identifiers which can be referrenced by individual mappings.\n *   - sourceRoot: Optional. The URL root from which all sources are relative.\n *   - sourcesContent: Optional. An array of contents of the original source files.\n *   - mappings: A string of base64 VLQs which contain the actual mappings.\n *   - file: Optional. The generated file this source map is associated with.\n *\n * Here is an example source map, taken from the source map spec[0]:\n *\n *     {\n *       version : 3,\n *       file: \"out.js\",\n *       sourceRoot : \"\",\n *       sources: [\"foo.js\", \"bar.js\"],\n *       names: [\"src\", \"maps\", \"are\", \"fun\"],\n *       mappings: \"AA,AB;;ABCDE;\"\n *     }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found.  This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit?pli=1#\n */\nfunction BasicSourceMapConsumer(aSourceMap, aSourceMapURL) {\n  var sourceMap = aSourceMap;\n  if (typeof aSourceMap === 'string') {\n    sourceMap = util.parseSourceMapInput(aSourceMap);\n  }\n\n  var version = util.getArg(sourceMap, 'version');\n  var sources = util.getArg(sourceMap, 'sources');\n  // Sass 3.3 leaves out the 'names' array, so we deviate from the spec (which\n  // requires the array) to play nice here.\n  var names = util.getArg(sourceMap, 'names', []);\n  var sourceRoot = util.getArg(sourceMap, 'sourceRoot', null);\n  var sourcesContent = util.getArg(sourceMap, 'sourcesContent', null);\n  var mappings = util.getArg(sourceMap, 'mappings');\n  var file = util.getArg(sourceMap, 'file', null);\n\n  // Once again, Sass deviates from the spec and supplies the version as a\n  // string rather than a number, so we use loose equality checking here.\n  if (version != this._version) {\n    throw new Error('Unsupported version: ' + version);\n  }\n\n  if (sourceRoot) {\n    sourceRoot = util.normalize(sourceRoot);\n  }\n\n  sources = sources\n    .map(String)\n    // Some source maps produce relative source paths like \"./foo.js\" instead of\n    // \"foo.js\".  Normalize these first so that future comparisons will succeed.\n    // See bugzil.la/1090768.\n    .map(util.normalize)\n    // Always ensure that absolute sources are internally stored relative to\n    // the source root, if the source root is absolute. Not doing this would\n    // be particularly problematic when the source root is a prefix of the\n    // source (valid, but why??). See github issue #199 and bugzil.la/1188982.\n    .map(function (source) {\n      return sourceRoot && util.isAbsolute(sourceRoot) && util.isAbsolute(source)\n        ? util.relative(sourceRoot, source)\n        : source;\n    });\n\n  // Pass `true` below to allow duplicate names and sources. While source maps\n  // are intended to be compressed and deduplicated, the TypeScript compiler\n  // sometimes generates source maps with duplicates in them. See Github issue\n  // #72 and bugzil.la/889492.\n  this._names = ArraySet.fromArray(names.map(String), true);\n  this._sources = ArraySet.fromArray(sources, true);\n\n  this._absoluteSources = this._sources.toArray().map(function (s) {\n    return util.computeSourceURL(sourceRoot, s, aSourceMapURL);\n  });\n\n  this.sourceRoot = sourceRoot;\n  this.sourcesContent = sourcesContent;\n  this._mappings = mappings;\n  this._sourceMapURL = aSourceMapURL;\n  this.file = file;\n}\n\nBasicSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nBasicSourceMapConsumer.prototype.consumer = SourceMapConsumer;\n\n/**\n * Utility function to find the index of a source.  Returns -1 if not\n * found.\n */\nBasicSourceMapConsumer.prototype._findSourceIndex = function(aSource) {\n  var relativeSource = aSource;\n  if (this.sourceRoot != null) {\n    relativeSource = util.relative(this.sourceRoot, relativeSource);\n  }\n\n  if (this._sources.has(relativeSource)) {\n    return this._sources.indexOf(relativeSource);\n  }\n\n  // Maybe aSource is an absolute URL as returned by |sources|.  In\n  // this case we can't simply undo the transform.\n  var i;\n  for (i = 0; i < this._absoluteSources.length; ++i) {\n    if (this._absoluteSources[i] == aSource) {\n      return i;\n    }\n  }\n\n  return -1;\n};\n\n/**\n * Create a BasicSourceMapConsumer from a SourceMapGenerator.\n *\n * @param SourceMapGenerator aSourceMap\n *        The source map that will be consumed.\n * @param String aSourceMapURL\n *        The URL at which the source map can be found (optional)\n * @returns BasicSourceMapConsumer\n */\nBasicSourceMapConsumer.fromSourceMap =\n  function SourceMapConsumer_fromSourceMap(aSourceMap, aSourceMapURL) {\n    var smc = Object.create(BasicSourceMapConsumer.prototype);\n\n    var names = smc._names = ArraySet.fromArray(aSourceMap._names.toArray(), true);\n    var sources = smc._sources = ArraySet.fromArray(aSourceMap._sources.toArray(), true);\n    smc.sourceRoot = aSourceMap._sourceRoot;\n    smc.sourcesContent = aSourceMap._generateSourcesContent(smc._sources.toArray(),\n                                                            smc.sourceRoot);\n    smc.file = aSourceMap._file;\n    smc._sourceMapURL = aSourceMapURL;\n    smc._absoluteSources = smc._sources.toArray().map(function (s) {\n      return util.computeSourceURL(smc.sourceRoot, s, aSourceMapURL);\n    });\n\n    // Because we are modifying the entries (by converting string sources and\n    // names to indices into the sources and names ArraySets), we have to make\n    // a copy of the entry or else bad things happen. Shared mutable state\n    // strikes again! See github issue #191.\n\n    var generatedMappings = aSourceMap._mappings.toArray().slice();\n    var destGeneratedMappings = smc.__generatedMappings = [];\n    var destOriginalMappings = smc.__originalMappings = [];\n\n    for (var i = 0, length = generatedMappings.length; i < length; i++) {\n      var srcMapping = generatedMappings[i];\n      var destMapping = new Mapping;\n      destMapping.generatedLine = srcMapping.generatedLine;\n      destMapping.generatedColumn = srcMapping.generatedColumn;\n\n      if (srcMapping.source) {\n        destMapping.source = sources.indexOf(srcMapping.source);\n        destMapping.originalLine = srcMapping.originalLine;\n        destMapping.originalColumn = srcMapping.originalColumn;\n\n        if (srcMapping.name) {\n          destMapping.name = names.indexOf(srcMapping.name);\n        }\n\n        destOriginalMappings.push(destMapping);\n      }\n\n      destGeneratedMappings.push(destMapping);\n    }\n\n    quickSort(smc.__originalMappings, util.compareByOriginalPositions);\n\n    return smc;\n  };\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nBasicSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(BasicSourceMapConsumer.prototype, 'sources', {\n  get: function () {\n    return this._absoluteSources.slice();\n  }\n});\n\n/**\n * Provide the JIT with a nice shape / hidden class.\n */\nfunction Mapping() {\n  this.generatedLine = 0;\n  this.generatedColumn = 0;\n  this.source = null;\n  this.originalLine = null;\n  this.originalColumn = null;\n  this.name = null;\n}\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nBasicSourceMapConsumer.prototype._parseMappings =\n  function SourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n    var generatedLine = 1;\n    var previousGeneratedColumn = 0;\n    var previousOriginalLine = 0;\n    var previousOriginalColumn = 0;\n    var previousSource = 0;\n    var previousName = 0;\n    var length = aStr.length;\n    var index = 0;\n    var cachedSegments = {};\n    var temp = {};\n    var originalMappings = [];\n    var generatedMappings = [];\n    var mapping, str, segment, end, value;\n\n    while (index < length) {\n      if (aStr.charAt(index) === ';') {\n        generatedLine++;\n        index++;\n        previousGeneratedColumn = 0;\n      }\n      else if (aStr.charAt(index) === ',') {\n        index++;\n      }\n      else {\n        mapping = new Mapping();\n        mapping.generatedLine = generatedLine;\n\n        // Because each offset is encoded relative to the previous one,\n        // many segments often have the same encoding. We can exploit this\n        // fact by caching the parsed variable length fields of each segment,\n        // allowing us to avoid a second parse if we encounter the same\n        // segment again.\n        for (end = index; end < length; end++) {\n          if (this._charIsMappingSeparator(aStr, end)) {\n            break;\n          }\n        }\n        str = aStr.slice(index, end);\n\n        segment = cachedSegments[str];\n        if (segment) {\n          index += str.length;\n        } else {\n          segment = [];\n          while (index < end) {\n            base64VLQ.decode(aStr, index, temp);\n            value = temp.value;\n            index = temp.rest;\n            segment.push(value);\n          }\n\n          if (segment.length === 2) {\n            throw new Error('Found a source, but no line and column');\n          }\n\n          if (segment.length === 3) {\n            throw new Error('Found a source and line, but no column');\n          }\n\n          cachedSegments[str] = segment;\n        }\n\n        // Generated column.\n        mapping.generatedColumn = previousGeneratedColumn + segment[0];\n        previousGeneratedColumn = mapping.generatedColumn;\n\n        if (segment.length > 1) {\n          // Original source.\n          mapping.source = previousSource + segment[1];\n          previousSource += segment[1];\n\n          // Original line.\n          mapping.originalLine = previousOriginalLine + segment[2];\n          previousOriginalLine = mapping.originalLine;\n          // Lines are stored 0-based\n          mapping.originalLine += 1;\n\n          // Original column.\n          mapping.originalColumn = previousOriginalColumn + segment[3];\n          previousOriginalColumn = mapping.originalColumn;\n\n          if (segment.length > 4) {\n            // Original name.\n            mapping.name = previousName + segment[4];\n            previousName += segment[4];\n          }\n        }\n\n        generatedMappings.push(mapping);\n        if (typeof mapping.originalLine === 'number') {\n          originalMappings.push(mapping);\n        }\n      }\n    }\n\n    quickSort(generatedMappings, util.compareByGeneratedPositionsDeflated);\n    this.__generatedMappings = generatedMappings;\n\n    quickSort(originalMappings, util.compareByOriginalPositions);\n    this.__originalMappings = originalMappings;\n  };\n\n/**\n * Find the mapping that best matches the hypothetical \"needle\" mapping that\n * we are searching for in the given \"haystack\" of mappings.\n */\nBasicSourceMapConsumer.prototype._findMapping =\n  function SourceMapConsumer_findMapping(aNeedle, aMappings, aLineName,\n                                         aColumnName, aComparator, aBias) {\n    // To return the position we are searching for, we must first find the\n    // mapping for the given position and then return the opposite position it\n    // points to. Because the mappings are sorted, we can use binary search to\n    // find the best mapping.\n\n    if (aNeedle[aLineName] <= 0) {\n      throw new TypeError('Line must be greater than or equal to 1, got '\n                          + aNeedle[aLineName]);\n    }\n    if (aNeedle[aColumnName] < 0) {\n      throw new TypeError('Column must be greater than or equal to 0, got '\n                          + aNeedle[aColumnName]);\n    }\n\n    return binarySearch.search(aNeedle, aMappings, aComparator, aBias);\n  };\n\n/**\n * Compute the last column for each generated mapping. The last column is\n * inclusive.\n */\nBasicSourceMapConsumer.prototype.computeColumnSpans =\n  function SourceMapConsumer_computeColumnSpans() {\n    for (var index = 0; index < this._generatedMappings.length; ++index) {\n      var mapping = this._generatedMappings[index];\n\n      // Mappings do not contain a field for the last generated columnt. We\n      // can come up with an optimistic estimate, however, by assuming that\n      // mappings are contiguous (i.e. given two consecutive mappings, the\n      // first mapping ends where the second one starts).\n      if (index + 1 < this._generatedMappings.length) {\n        var nextMapping = this._generatedMappings[index + 1];\n\n        if (mapping.generatedLine === nextMapping.generatedLine) {\n          mapping.lastGeneratedColumn = nextMapping.generatedColumn - 1;\n          continue;\n        }\n      }\n\n      // The last mapping for each line spans the entire line.\n      mapping.lastGeneratedColumn = Infinity;\n    }\n  };\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n *   - line: The line number in the generated source.  The line number\n *     is 1-based.\n *   - column: The column number in the generated source.  The column\n *     number is 0-based.\n *   - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n *     'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n *     closest element that is smaller than or greater than the one we are\n *     searching for, respectively, if the exact element cannot be found.\n *     Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n *   - source: The original source file, or null.\n *   - line: The line number in the original source, or null.  The\n *     line number is 1-based.\n *   - column: The column number in the original source, or null.  The\n *     column number is 0-based.\n *   - name: The original identifier, or null.\n */\nBasicSourceMapConsumer.prototype.originalPositionFor =\n  function SourceMapConsumer_originalPositionFor(aArgs) {\n    var needle = {\n      generatedLine: util.getArg(aArgs, 'line'),\n      generatedColumn: util.getArg(aArgs, 'column')\n    };\n\n    var index = this._findMapping(\n      needle,\n      this._generatedMappings,\n      \"generatedLine\",\n      \"generatedColumn\",\n      util.compareByGeneratedPositionsDeflated,\n      util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n    );\n\n    if (index >= 0) {\n      var mapping = this._generatedMappings[index];\n\n      if (mapping.generatedLine === needle.generatedLine) {\n        var source = util.getArg(mapping, 'source', null);\n        if (source !== null) {\n          source = this._sources.at(source);\n          source = util.computeSourceURL(this.sourceRoot, source, this._sourceMapURL);\n        }\n        var name = util.getArg(mapping, 'name', null);\n        if (name !== null) {\n          name = this._names.at(name);\n        }\n        return {\n          source: source,\n          line: util.getArg(mapping, 'originalLine', null),\n          column: util.getArg(mapping, 'originalColumn', null),\n          name: name\n        };\n      }\n    }\n\n    return {\n      source: null,\n      line: null,\n      column: null,\n      name: null\n    };\n  };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nBasicSourceMapConsumer.prototype.hasContentsOfAllSources =\n  function BasicSourceMapConsumer_hasContentsOfAllSources() {\n    if (!this.sourcesContent) {\n      return false;\n    }\n    return this.sourcesContent.length >= this._sources.size() &&\n      !this.sourcesContent.some(function (sc) { return sc == null; });\n  };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nBasicSourceMapConsumer.prototype.sourceContentFor =\n  function SourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n    if (!this.sourcesContent) {\n      return null;\n    }\n\n    var index = this._findSourceIndex(aSource);\n    if (index >= 0) {\n      return this.sourcesContent[index];\n    }\n\n    var relativeSource = aSource;\n    if (this.sourceRoot != null) {\n      relativeSource = util.relative(this.sourceRoot, relativeSource);\n    }\n\n    var url;\n    if (this.sourceRoot != null\n        && (url = util.urlParse(this.sourceRoot))) {\n      // XXX: file:// URIs and absolute paths lead to unexpected behavior for\n      // many users. We can help them out when they expect file:// URIs to\n      // behave like it would if they were running a local HTTP server. See\n      // https://bugzilla.mozilla.org/show_bug.cgi?id=885597.\n      var fileUriAbsPath = relativeSource.replace(/^file:\\/\\//, \"\");\n      if (url.scheme == \"file\"\n          && this._sources.has(fileUriAbsPath)) {\n        return this.sourcesContent[this._sources.indexOf(fileUriAbsPath)]\n      }\n\n      if ((!url.path || url.path == \"/\")\n          && this._sources.has(\"/\" + relativeSource)) {\n        return this.sourcesContent[this._sources.indexOf(\"/\" + relativeSource)];\n      }\n    }\n\n    // This function is used recursively from\n    // IndexedSourceMapConsumer.prototype.sourceContentFor. In that case, we\n    // don't want to throw if we can't find the source - we just want to\n    // return null, so we provide a flag to exit gracefully.\n    if (nullOnMissing) {\n      return null;\n    }\n    else {\n      throw new Error('\"' + relativeSource + '\" is not in the SourceMap.');\n    }\n  };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n *   - source: The filename of the original source.\n *   - line: The line number in the original source.  The line number\n *     is 1-based.\n *   - column: The column number in the original source.  The column\n *     number is 0-based.\n *   - bias: Either 'SourceMapConsumer.GREATEST_LOWER_BOUND' or\n *     'SourceMapConsumer.LEAST_UPPER_BOUND'. Specifies whether to return the\n *     closest element that is smaller than or greater than the one we are\n *     searching for, respectively, if the exact element cannot be found.\n *     Defaults to 'SourceMapConsumer.GREATEST_LOWER_BOUND'.\n *\n * and an object is returned with the following properties:\n *\n *   - line: The line number in the generated source, or null.  The\n *     line number is 1-based.\n *   - column: The column number in the generated source, or null.\n *     The column number is 0-based.\n */\nBasicSourceMapConsumer.prototype.generatedPositionFor =\n  function SourceMapConsumer_generatedPositionFor(aArgs) {\n    var source = util.getArg(aArgs, 'source');\n    source = this._findSourceIndex(source);\n    if (source < 0) {\n      return {\n        line: null,\n        column: null,\n        lastColumn: null\n      };\n    }\n\n    var needle = {\n      source: source,\n      originalLine: util.getArg(aArgs, 'line'),\n      originalColumn: util.getArg(aArgs, 'column')\n    };\n\n    var index = this._findMapping(\n      needle,\n      this._originalMappings,\n      \"originalLine\",\n      \"originalColumn\",\n      util.compareByOriginalPositions,\n      util.getArg(aArgs, 'bias', SourceMapConsumer.GREATEST_LOWER_BOUND)\n    );\n\n    if (index >= 0) {\n      var mapping = this._originalMappings[index];\n\n      if (mapping.source === needle.source) {\n        return {\n          line: util.getArg(mapping, 'generatedLine', null),\n          column: util.getArg(mapping, 'generatedColumn', null),\n          lastColumn: util.getArg(mapping, 'lastGeneratedColumn', null)\n        };\n      }\n    }\n\n    return {\n      line: null,\n      column: null,\n      lastColumn: null\n    };\n  };\n\nexports.BasicSourceMapConsumer = BasicSourceMapConsumer;\n\n/**\n * An IndexedSourceMapConsumer instance represents a parsed source map which\n * we can query for information. It differs from BasicSourceMapConsumer in\n * that it takes \"indexed\" source maps (i.e. ones with a \"sections\" field) as\n * input.\n *\n * The first parameter is a raw source map (either as a JSON string, or already\n * parsed to an object). According to the spec for indexed source maps, they\n * have the following attributes:\n *\n *   - version: Which version of the source map spec this map is following.\n *   - file: Optional. The generated file this source map is associated with.\n *   - sections: A list of section definitions.\n *\n * Each value under the \"sections\" field has two fields:\n *   - offset: The offset into the original specified at which this section\n *       begins to apply, defined as an object with a \"line\" and \"column\"\n *       field.\n *   - map: A source map definition. This source map could also be indexed,\n *       but doesn't have to be.\n *\n * Instead of the \"map\" field, it's also possible to have a \"url\" field\n * specifying a URL to retrieve a source map from, but that's currently\n * unsupported.\n *\n * Here's an example source map, taken from the source map spec[0], but\n * modified to omit a section which uses the \"url\" field.\n *\n *  {\n *    version : 3,\n *    file: \"app.js\",\n *    sections: [{\n *      offset: {line:100, column:10},\n *      map: {\n *        version : 3,\n *        file: \"section.js\",\n *        sources: [\"foo.js\", \"bar.js\"],\n *        names: [\"src\", \"maps\", \"are\", \"fun\"],\n *        mappings: \"AAAA,E;;ABCDE;\"\n *      }\n *    }],\n *  }\n *\n * The second parameter, if given, is a string whose value is the URL\n * at which the source map was found.  This URL is used to compute the\n * sources array.\n *\n * [0]: https://docs.google.com/document/d/1U1RGAehQwRypUTovF1KRlpiOFze0b-_2gc6fAH0KY0k/edit#heading=h.535es3xeprgt\n */\nfunction IndexedSourceMapConsumer(aSourceMap, aSourceMapURL) {\n  var sourceMap = aSourceMap;\n  if (typeof aSourceMap === 'string') {\n    sourceMap = util.parseSourceMapInput(aSourceMap);\n  }\n\n  var version = util.getArg(sourceMap, 'version');\n  var sections = util.getArg(sourceMap, 'sections');\n\n  if (version != this._version) {\n    throw new Error('Unsupported version: ' + version);\n  }\n\n  this._sources = new ArraySet();\n  this._names = new ArraySet();\n\n  var lastOffset = {\n    line: -1,\n    column: 0\n  };\n  this._sections = sections.map(function (s) {\n    if (s.url) {\n      // The url field will require support for asynchronicity.\n      // See https://github.com/mozilla/source-map/issues/16\n      throw new Error('Support for url field in sections not implemented.');\n    }\n    var offset = util.getArg(s, 'offset');\n    var offsetLine = util.getArg(offset, 'line');\n    var offsetColumn = util.getArg(offset, 'column');\n\n    if (offsetLine < lastOffset.line ||\n        (offsetLine === lastOffset.line && offsetColumn < lastOffset.column)) {\n      throw new Error('Section offsets must be ordered and non-overlapping.');\n    }\n    lastOffset = offset;\n\n    return {\n      generatedOffset: {\n        // The offset fields are 0-based, but we use 1-based indices when\n        // encoding/decoding from VLQ.\n        generatedLine: offsetLine + 1,\n        generatedColumn: offsetColumn + 1\n      },\n      consumer: new SourceMapConsumer(util.getArg(s, 'map'), aSourceMapURL)\n    }\n  });\n}\n\nIndexedSourceMapConsumer.prototype = Object.create(SourceMapConsumer.prototype);\nIndexedSourceMapConsumer.prototype.constructor = SourceMapConsumer;\n\n/**\n * The version of the source mapping spec that we are consuming.\n */\nIndexedSourceMapConsumer.prototype._version = 3;\n\n/**\n * The list of original sources.\n */\nObject.defineProperty(IndexedSourceMapConsumer.prototype, 'sources', {\n  get: function () {\n    var sources = [];\n    for (var i = 0; i < this._sections.length; i++) {\n      for (var j = 0; j < this._sections[i].consumer.sources.length; j++) {\n        sources.push(this._sections[i].consumer.sources[j]);\n      }\n    }\n    return sources;\n  }\n});\n\n/**\n * Returns the original source, line, and column information for the generated\n * source's line and column positions provided. The only argument is an object\n * with the following properties:\n *\n *   - line: The line number in the generated source.  The line number\n *     is 1-based.\n *   - column: The column number in the generated source.  The column\n *     number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n *   - source: The original source file, or null.\n *   - line: The line number in the original source, or null.  The\n *     line number is 1-based.\n *   - column: The column number in the original source, or null.  The\n *     column number is 0-based.\n *   - name: The original identifier, or null.\n */\nIndexedSourceMapConsumer.prototype.originalPositionFor =\n  function IndexedSourceMapConsumer_originalPositionFor(aArgs) {\n    var needle = {\n      generatedLine: util.getArg(aArgs, 'line'),\n      generatedColumn: util.getArg(aArgs, 'column')\n    };\n\n    // Find the section containing the generated position we're trying to map\n    // to an original position.\n    var sectionIndex = binarySearch.search(needle, this._sections,\n      function(needle, section) {\n        var cmp = needle.generatedLine - section.generatedOffset.generatedLine;\n        if (cmp) {\n          return cmp;\n        }\n\n        return (needle.generatedColumn -\n                section.generatedOffset.generatedColumn);\n      });\n    var section = this._sections[sectionIndex];\n\n    if (!section) {\n      return {\n        source: null,\n        line: null,\n        column: null,\n        name: null\n      };\n    }\n\n    return section.consumer.originalPositionFor({\n      line: needle.generatedLine -\n        (section.generatedOffset.generatedLine - 1),\n      column: needle.generatedColumn -\n        (section.generatedOffset.generatedLine === needle.generatedLine\n         ? section.generatedOffset.generatedColumn - 1\n         : 0),\n      bias: aArgs.bias\n    });\n  };\n\n/**\n * Return true if we have the source content for every source in the source\n * map, false otherwise.\n */\nIndexedSourceMapConsumer.prototype.hasContentsOfAllSources =\n  function IndexedSourceMapConsumer_hasContentsOfAllSources() {\n    return this._sections.every(function (s) {\n      return s.consumer.hasContentsOfAllSources();\n    });\n  };\n\n/**\n * Returns the original source content. The only argument is the url of the\n * original source file. Returns null if no original source content is\n * available.\n */\nIndexedSourceMapConsumer.prototype.sourceContentFor =\n  function IndexedSourceMapConsumer_sourceContentFor(aSource, nullOnMissing) {\n    for (var i = 0; i < this._sections.length; i++) {\n      var section = this._sections[i];\n\n      var content = section.consumer.sourceContentFor(aSource, true);\n      if (content) {\n        return content;\n      }\n    }\n    if (nullOnMissing) {\n      return null;\n    }\n    else {\n      throw new Error('\"' + aSource + '\" is not in the SourceMap.');\n    }\n  };\n\n/**\n * Returns the generated line and column information for the original source,\n * line, and column positions provided. The only argument is an object with\n * the following properties:\n *\n *   - source: The filename of the original source.\n *   - line: The line number in the original source.  The line number\n *     is 1-based.\n *   - column: The column number in the original source.  The column\n *     number is 0-based.\n *\n * and an object is returned with the following properties:\n *\n *   - line: The line number in the generated source, or null.  The\n *     line number is 1-based. \n *   - column: The column number in the generated source, or null.\n *     The column number is 0-based.\n */\nIndexedSourceMapConsumer.prototype.generatedPositionFor =\n  function IndexedSourceMapConsumer_generatedPositionFor(aArgs) {\n    for (var i = 0; i < this._sections.length; i++) {\n      var section = this._sections[i];\n\n      // Only consider this section if the requested source is in the list of\n      // sources of the consumer.\n      if (section.consumer._findSourceIndex(util.getArg(aArgs, 'source')) === -1) {\n        continue;\n      }\n      var generatedPosition = section.consumer.generatedPositionFor(aArgs);\n      if (generatedPosition) {\n        var ret = {\n          line: generatedPosition.line +\n            (section.generatedOffset.generatedLine - 1),\n          column: generatedPosition.column +\n            (section.generatedOffset.generatedLine === generatedPosition.line\n             ? section.generatedOffset.generatedColumn - 1\n             : 0)\n        };\n        return ret;\n      }\n    }\n\n    return {\n      line: null,\n      column: null\n    };\n  };\n\n/**\n * Parse the mappings in a string in to a data structure which we can easily\n * query (the ordered arrays in the `this.__generatedMappings` and\n * `this.__originalMappings` properties).\n */\nIndexedSourceMapConsumer.prototype._parseMappings =\n  function IndexedSourceMapConsumer_parseMappings(aStr, aSourceRoot) {\n    this.__generatedMappings = [];\n    this.__originalMappings = [];\n    for (var i = 0; i < this._sections.length; i++) {\n      var section = this._sections[i];\n      var sectionMappings = section.consumer._generatedMappings;\n      for (var j = 0; j < sectionMappings.length; j++) {\n        var mapping = sectionMappings[j];\n\n        var source = section.consumer._sources.at(mapping.source);\n        source = util.computeSourceURL(section.consumer.sourceRoot, source, this._sourceMapURL);\n        this._sources.add(source);\n        source = this._sources.indexOf(source);\n\n        var name = null;\n        if (mapping.name) {\n          name = section.consumer._names.at(mapping.name);\n          this._names.add(name);\n          name = this._names.indexOf(name);\n        }\n\n        // The mappings coming from the consumer for the section have\n        // generated positions relative to the start of the section, so we\n        // need to offset them to be relative to the start of the concatenated\n        // generated file.\n        var adjustedMapping = {\n          source: source,\n          generatedLine: mapping.generatedLine +\n            (section.generatedOffset.generatedLine - 1),\n          generatedColumn: mapping.generatedColumn +\n            (section.generatedOffset.generatedLine === mapping.generatedLine\n            ? section.generatedOffset.generatedColumn - 1\n            : 0),\n          originalLine: mapping.originalLine,\n          originalColumn: mapping.originalColumn,\n          name: name\n        };\n\n        this.__generatedMappings.push(adjustedMapping);\n        if (typeof adjustedMapping.originalLine === 'number') {\n          this.__originalMappings.push(adjustedMapping);\n        }\n      }\n    }\n\n    quickSort(this.__generatedMappings, util.compareByGeneratedPositionsDeflated);\n    quickSort(this.__originalMappings, util.compareByOriginalPositions);\n  };\n\nexports.IndexedSourceMapConsumer = IndexedSourceMapConsumer;\n", "/* -*- Mode: js; js-indent-level: 2; -*- */\n/*\n * Copyright 2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\n\nvar SourceMapGenerator = require('./source-map-generator').SourceMapGenerator;\nvar util = require('./util');\n\n// Matches a Windows-style `\\r\\n` newline or a `\\n` newline used by all other\n// operating systems these days (capturing the result).\nvar REGEX_NEWLINE = /(\\r?\\n)/;\n\n// Newline character code for charCodeAt() comparisons\nvar NEWLINE_CODE = 10;\n\n// Private symbol for identifying `SourceNode`s when multiple versions of\n// the source-map library are loaded. This MUST NOT CHANGE across\n// versions!\nvar isSourceNode = \"$$$isSourceNode$$$\";\n\n/**\n * SourceNodes provide a way to abstract over interpolating/concatenating\n * snippets of generated JavaScript source code while maintaining the line and\n * column information associated with the original source code.\n *\n * @param aLine The original line number.\n * @param aColumn The original column number.\n * @param aSource The original source's filename.\n * @param aChunks Optional. An array of strings which are snippets of\n *        generated JS, or other SourceNodes.\n * @param aName The original identifier.\n */\nfunction SourceNode(aLine, aColumn, aSource, aChunks, aName) {\n  this.children = [];\n  this.sourceContents = {};\n  this.line = aLine == null ? null : aLine;\n  this.column = aColumn == null ? null : aColumn;\n  this.source = aSource == null ? null : aSource;\n  this.name = aName == null ? null : aName;\n  this[isSourceNode] = true;\n  if (aChunks != null) this.add(aChunks);\n}\n\n/**\n * Creates a SourceNode from generated code and a SourceMapConsumer.\n *\n * @param aGeneratedCode The generated code\n * @param aSourceMapConsumer The SourceMap for the generated code\n * @param aRelativePath Optional. The path that relative sources in the\n *        SourceMapConsumer should be relative to.\n */\nSourceNode.fromStringWithSourceMap =\n  function SourceNode_fromStringWithSourceMap(aGeneratedCode, aSourceMapConsumer, aRelativePath) {\n    // The SourceNode we want to fill with the generated code\n    // and the SourceMap\n    var node = new SourceNode();\n\n    // All even indices of this array are one line of the generated code,\n    // while all odd indices are the newlines between two adjacent lines\n    // (since `REGEX_NEWLINE` captures its match).\n    // Processed fragments are accessed by calling `shiftNextLine`.\n    var remainingLines = aGeneratedCode.split(REGEX_NEWLINE);\n    var remainingLinesIndex = 0;\n    var shiftNextLine = function() {\n      var lineContents = getNextLine();\n      // The last line of a file might not have a newline.\n      var newLine = getNextLine() || \"\";\n      return lineContents + newLine;\n\n      function getNextLine() {\n        return remainingLinesIndex < remainingLines.length ?\n            remainingLines[remainingLinesIndex++] : undefined;\n      }\n    };\n\n    // We need to remember the position of \"remainingLines\"\n    var lastGeneratedLine = 1, lastGeneratedColumn = 0;\n\n    // The generate SourceNodes we need a code range.\n    // To extract it current and last mapping is used.\n    // Here we store the last mapping.\n    var lastMapping = null;\n\n    aSourceMapConsumer.eachMapping(function (mapping) {\n      if (lastMapping !== null) {\n        // We add the code from \"lastMapping\" to \"mapping\":\n        // First check if there is a new line in between.\n        if (lastGeneratedLine < mapping.generatedLine) {\n          // Associate first line with \"lastMapping\"\n          addMappingWithCode(lastMapping, shiftNextLine());\n          lastGeneratedLine++;\n          lastGeneratedColumn = 0;\n          // The remaining code is added without mapping\n        } else {\n          // There is no new line in between.\n          // Associate the code between \"lastGeneratedColumn\" and\n          // \"mapping.generatedColumn\" with \"lastMapping\"\n          var nextLine = remainingLines[remainingLinesIndex] || '';\n          var code = nextLine.substr(0, mapping.generatedColumn -\n                                        lastGeneratedColumn);\n          remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn -\n                                              lastGeneratedColumn);\n          lastGeneratedColumn = mapping.generatedColumn;\n          addMappingWithCode(lastMapping, code);\n          // No more remaining code, continue\n          lastMapping = mapping;\n          return;\n        }\n      }\n      // We add the generated code until the first mapping\n      // to the SourceNode without any mapping.\n      // Each line is added as separate string.\n      while (lastGeneratedLine < mapping.generatedLine) {\n        node.add(shiftNextLine());\n        lastGeneratedLine++;\n      }\n      if (lastGeneratedColumn < mapping.generatedColumn) {\n        var nextLine = remainingLines[remainingLinesIndex] || '';\n        node.add(nextLine.substr(0, mapping.generatedColumn));\n        remainingLines[remainingLinesIndex] = nextLine.substr(mapping.generatedColumn);\n        lastGeneratedColumn = mapping.generatedColumn;\n      }\n      lastMapping = mapping;\n    }, this);\n    // We have processed all mappings.\n    if (remainingLinesIndex < remainingLines.length) {\n      if (lastMapping) {\n        // Associate the remaining code in the current line with \"lastMapping\"\n        addMappingWithCode(lastMapping, shiftNextLine());\n      }\n      // and add the remaining lines without any mapping\n      node.add(remainingLines.splice(remainingLinesIndex).join(\"\"));\n    }\n\n    // Copy sourcesContent into SourceNode\n    aSourceMapConsumer.sources.forEach(function (sourceFile) {\n      var content = aSourceMapConsumer.sourceContentFor(sourceFile);\n      if (content != null) {\n        if (aRelativePath != null) {\n          sourceFile = util.join(aRelativePath, sourceFile);\n        }\n        node.setSourceContent(sourceFile, content);\n      }\n    });\n\n    return node;\n\n    function addMappingWithCode(mapping, code) {\n      if (mapping === null || mapping.source === undefined) {\n        node.add(code);\n      } else {\n        var source = aRelativePath\n          ? util.join(aRelativePath, mapping.source)\n          : mapping.source;\n        node.add(new SourceNode(mapping.originalLine,\n                                mapping.originalColumn,\n                                source,\n                                code,\n                                mapping.name));\n      }\n    }\n  };\n\n/**\n * Add a chunk of generated JS to this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n *        SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.add = function SourceNode_add(aChunk) {\n  if (Array.isArray(aChunk)) {\n    aChunk.forEach(function (chunk) {\n      this.add(chunk);\n    }, this);\n  }\n  else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n    if (aChunk) {\n      this.children.push(aChunk);\n    }\n  }\n  else {\n    throw new TypeError(\n      \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n    );\n  }\n  return this;\n};\n\n/**\n * Add a chunk of generated JS to the beginning of this source node.\n *\n * @param aChunk A string snippet of generated JS code, another instance of\n *        SourceNode, or an array where each member is one of those things.\n */\nSourceNode.prototype.prepend = function SourceNode_prepend(aChunk) {\n  if (Array.isArray(aChunk)) {\n    for (var i = aChunk.length-1; i >= 0; i--) {\n      this.prepend(aChunk[i]);\n    }\n  }\n  else if (aChunk[isSourceNode] || typeof aChunk === \"string\") {\n    this.children.unshift(aChunk);\n  }\n  else {\n    throw new TypeError(\n      \"Expected a SourceNode, string, or an array of SourceNodes and strings. Got \" + aChunk\n    );\n  }\n  return this;\n};\n\n/**\n * Walk over the tree of JS snippets in this node and its children. The\n * walking function is called once for each snippet of JS and is passed that\n * snippet and the its original associated source's line/column location.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walk = function SourceNode_walk(aFn) {\n  var chunk;\n  for (var i = 0, len = this.children.length; i < len; i++) {\n    chunk = this.children[i];\n    if (chunk[isSourceNode]) {\n      chunk.walk(aFn);\n    }\n    else {\n      if (chunk !== '') {\n        aFn(chunk, { source: this.source,\n                     line: this.line,\n                     column: this.column,\n                     name: this.name });\n      }\n    }\n  }\n};\n\n/**\n * Like `String.prototype.join` except for SourceNodes. Inserts `aStr` between\n * each of `this.children`.\n *\n * @param aSep The separator.\n */\nSourceNode.prototype.join = function SourceNode_join(aSep) {\n  var newChildren;\n  var i;\n  var len = this.children.length;\n  if (len > 0) {\n    newChildren = [];\n    for (i = 0; i < len-1; i++) {\n      newChildren.push(this.children[i]);\n      newChildren.push(aSep);\n    }\n    newChildren.push(this.children[i]);\n    this.children = newChildren;\n  }\n  return this;\n};\n\n/**\n * Call String.prototype.replace on the very right-most source snippet. Useful\n * for trimming whitespace from the end of a source node, etc.\n *\n * @param aPattern The pattern to replace.\n * @param aReplacement The thing to replace the pattern with.\n */\nSourceNode.prototype.replaceRight = function SourceNode_replaceRight(aPattern, aReplacement) {\n  var lastChild = this.children[this.children.length - 1];\n  if (lastChild[isSourceNode]) {\n    lastChild.replaceRight(aPattern, aReplacement);\n  }\n  else if (typeof lastChild === 'string') {\n    this.children[this.children.length - 1] = lastChild.replace(aPattern, aReplacement);\n  }\n  else {\n    this.children.push(''.replace(aPattern, aReplacement));\n  }\n  return this;\n};\n\n/**\n * Set the source content for a source file. This will be added to the SourceMapGenerator\n * in the sourcesContent field.\n *\n * @param aSourceFile The filename of the source file\n * @param aSourceContent The content of the source file\n */\nSourceNode.prototype.setSourceContent =\n  function SourceNode_setSourceContent(aSourceFile, aSourceContent) {\n    this.sourceContents[util.toSetString(aSourceFile)] = aSourceContent;\n  };\n\n/**\n * Walk over the tree of SourceNodes. The walking function is called for each\n * source file content and is passed the filename and source content.\n *\n * @param aFn The traversal function.\n */\nSourceNode.prototype.walkSourceContents =\n  function SourceNode_walkSourceContents(aFn) {\n    for (var i = 0, len = this.children.length; i < len; i++) {\n      if (this.children[i][isSourceNode]) {\n        this.children[i].walkSourceContents(aFn);\n      }\n    }\n\n    var sources = Object.keys(this.sourceContents);\n    for (var i = 0, len = sources.length; i < len; i++) {\n      aFn(util.fromSetString(sources[i]), this.sourceContents[sources[i]]);\n    }\n  };\n\n/**\n * Return the string representation of this source node. Walks over the tree\n * and concatenates all the various snippets together to one string.\n */\nSourceNode.prototype.toString = function SourceNode_toString() {\n  var str = \"\";\n  this.walk(function (chunk) {\n    str += chunk;\n  });\n  return str;\n};\n\n/**\n * Returns the string representation of this source node along with a source\n * map.\n */\nSourceNode.prototype.toStringWithSourceMap = function SourceNode_toStringWithSourceMap(aArgs) {\n  var generated = {\n    code: \"\",\n    line: 1,\n    column: 0\n  };\n  var map = new SourceMapGenerator(aArgs);\n  var sourceMappingActive = false;\n  var lastOriginalSource = null;\n  var lastOriginalLine = null;\n  var lastOriginalColumn = null;\n  var lastOriginalName = null;\n  this.walk(function (chunk, original) {\n    generated.code += chunk;\n    if (original.source !== null\n        && original.line !== null\n        && original.column !== null) {\n      if(lastOriginalSource !== original.source\n         || lastOriginalLine !== original.line\n         || lastOriginalColumn !== original.column\n         || lastOriginalName !== original.name) {\n        map.addMapping({\n          source: original.source,\n          original: {\n            line: original.line,\n            column: original.column\n          },\n          generated: {\n            line: generated.line,\n            column: generated.column\n          },\n          name: original.name\n        });\n      }\n      lastOriginalSource = original.source;\n      lastOriginalLine = original.line;\n      lastOriginalColumn = original.column;\n      lastOriginalName = original.name;\n      sourceMappingActive = true;\n    } else if (sourceMappingActive) {\n      map.addMapping({\n        generated: {\n          line: generated.line,\n          column: generated.column\n        }\n      });\n      lastOriginalSource = null;\n      sourceMappingActive = false;\n    }\n    for (var idx = 0, length = chunk.length; idx < length; idx++) {\n      if (chunk.charCodeAt(idx) === NEWLINE_CODE) {\n        generated.line++;\n        generated.column = 0;\n        // Mappings end at eol\n        if (idx + 1 === length) {\n          lastOriginalSource = null;\n          sourceMappingActive = false;\n        } else if (sourceMappingActive) {\n          map.addMapping({\n            source: original.source,\n            original: {\n              line: original.line,\n              column: original.column\n            },\n            generated: {\n              line: generated.line,\n              column: generated.column\n            },\n            name: original.name\n          });\n        }\n      } else {\n        generated.column++;\n      }\n    }\n  });\n  this.walkSourceContents(function (sourceFile, sourceContent) {\n    map.setSourceContent(sourceFile, sourceContent);\n  });\n\n  return { code: generated.code, map: map };\n};\n\nexports.SourceNode = SourceNode;\n", "/*\n * Copyright 2009-2011 Mozilla Foundation and contributors\n * Licensed under the New BSD license. See LICENSE.txt or:\n * http://opensource.org/licenses/BSD-3-Clause\n */\nexports.SourceMapGenerator = require('./lib/source-map-generator').SourceMapGenerator;\nexports.SourceMapConsumer = require('./lib/source-map-consumer').SourceMapConsumer;\nexports.SourceNode = require('./lib/source-node').SourceNode;\n", "/* eslint-disable node/no-deprecated-api */\n\nvar toString = Object.prototype.toString\n\nvar isModern = (\n  typeof Buffer !== 'undefined' &&\n  typeof Buffer.alloc === 'function' &&\n  typeof Buffer.allocUnsafe === 'function' &&\n  typeof Buffer.from === 'function'\n)\n\nfunction isArrayBuffer (input) {\n  return toString.call(input).slice(8, -1) === 'ArrayBuffer'\n}\n\nfunction fromArrayBuffer (obj, byteOffset, length) {\n  byteOffset >>>= 0\n\n  var maxLength = obj.byteLength - byteOffset\n\n  if (maxLength < 0) {\n    throw new RangeError(\"'offset' is out of bounds\")\n  }\n\n  if (length === undefined) {\n    length = maxLength\n  } else {\n    length >>>= 0\n\n    if (length > maxLength) {\n      throw new RangeError(\"'length' is out of bounds\")\n    }\n  }\n\n  return isModern\n    ? Buffer.from(obj.slice(byteOffset, byteOffset + length))\n    : new Buffer(new Uint8Array(obj.slice(byteOffset, byteOffset + length)))\n}\n\nfunction fromString (string, encoding) {\n  if (typeof encoding !== 'string' || encoding === '') {\n    encoding = 'utf8'\n  }\n\n  if (!Buffer.isEncoding(encoding)) {\n    throw new TypeError('\"encoding\" must be a valid string encoding')\n  }\n\n  return isModern\n    ? Buffer.from(string, encoding)\n    : new Buffer(string, encoding)\n}\n\nfunction bufferFrom (value, encodingOrOffset, length) {\n  if (typeof value === 'number') {\n    throw new TypeError('\"value\" argument must not be a number')\n  }\n\n  if (isArrayBuffer(value)) {\n    return fromArrayBuffer(value, encodingOrOffset, length)\n  }\n\n  if (typeof value === 'string') {\n    return fromString(value, encodingOrOffset)\n  }\n\n  return isModern\n    ? Buffer.from(value)\n    : new Buffer(value)\n}\n\nmodule.exports = bufferFrom\n", "var SourceMapConsumer = require('source-map').SourceMapConsumer;\nvar path = require('path');\n\nvar fs;\ntry {\n  fs = require('fs');\n  if (!fs.existsSync || !fs.readFileSync) {\n    // fs doesn't have all methods we need\n    fs = null;\n  }\n} catch (err) {\n  /* nop */\n}\n\nvar bufferFrom = require('buffer-from');\n\n/**\n * Requires a module which is protected against bundler minification.\n *\n * @param {NodeModule} mod\n * @param {string} request\n */\nfunction dynamicRequire(mod, request) {\n  return mod.require(request);\n}\n\n// Only install once if called multiple times\nvar errorFormatterInstalled = false;\nvar uncaughtShimInstalled = false;\n\n// If true, the caches are reset before a stack trace formatting operation\nvar emptyCacheBetweenOperations = false;\n\n// Supports {browser, node, auto}\nvar environment = \"auto\";\n\n// Maps a file path to a string containing the file contents\nvar fileContentsCache = {};\n\n// Maps a file path to a source map for that file\nvar sourceMapCache = {};\n\n// Regex for detecting source maps\nvar reSourceMap = /^data:application\\/json[^,]+base64,/;\n\n// Priority list of retrieve handlers\nvar retrieveFileHandlers = [];\nvar retrieveMapHandlers = [];\n\nfunction isInBrowser() {\n  if (environment === \"browser\")\n    return true;\n  if (environment === \"node\")\n    return false;\n  return ((typeof window !== 'undefined') && (typeof XMLHttpRequest === 'function') && !(window.require && window.module && window.process && window.process.type === \"renderer\"));\n}\n\nfunction hasGlobalProcessEventEmitter() {\n  return ((typeof process === 'object') && (process !== null) && (typeof process.on === 'function'));\n}\n\nfunction globalProcessVersion() {\n  if ((typeof process === 'object') && (process !== null)) {\n    return process.version;\n  } else {\n    return '';\n  }\n}\n\nfunction globalProcessStderr() {\n  if ((typeof process === 'object') && (process !== null)) {\n    return process.stderr;\n  }\n}\n\nfunction globalProcessExit(code) {\n  if ((typeof process === 'object') && (process !== null) && (typeof process.exit === 'function')) {\n    return process.exit(code);\n  }\n}\n\nfunction handlerExec(list) {\n  return function(arg) {\n    for (var i = 0; i < list.length; i++) {\n      var ret = list[i](arg);\n      if (ret) {\n        return ret;\n      }\n    }\n    return null;\n  };\n}\n\nvar retrieveFile = handlerExec(retrieveFileHandlers);\n\nretrieveFileHandlers.push(function(path) {\n  // Trim the path to make sure there is no extra whitespace.\n  path = path.trim();\n  if (/^file:/.test(path)) {\n    // existsSync/readFileSync can't handle file protocol, but once stripped, it works\n    path = path.replace(/file:\\/\\/\\/(\\w:)?/, function(protocol, drive) {\n      return drive ?\n        '' : // file:///C:/dir/file -> C:/dir/file\n        '/'; // file:///root-dir/file -> /root-dir/file\n    });\n  }\n  if (path in fileContentsCache) {\n    return fileContentsCache[path];\n  }\n\n  var contents = '';\n  try {\n    if (!fs) {\n      // Use SJAX if we are in the browser\n      var xhr = new XMLHttpRequest();\n      xhr.open('GET', path, /** async */ false);\n      xhr.send(null);\n      if (xhr.readyState === 4 && xhr.status === 200) {\n        contents = xhr.responseText;\n      }\n    } else if (fs.existsSync(path)) {\n      // Otherwise, use the filesystem\n      contents = fs.readFileSync(path, 'utf8');\n    }\n  } catch (er) {\n    /* ignore any errors */\n  }\n\n  return fileContentsCache[path] = contents;\n});\n\n// Support URLs relative to a directory, but be careful about a protocol prefix\n// in case we are in the browser (i.e. directories may start with \"http://\" or \"file:///\")\nfunction supportRelativeURL(file, url) {\n  if (!file) return url;\n  var dir = path.dirname(file);\n  var match = /^\\w+:\\/\\/[^\\/]*/.exec(dir);\n  var protocol = match ? match[0] : '';\n  var startPath = dir.slice(protocol.length);\n  if (protocol && /^\\/\\w\\:/.test(startPath)) {\n    // handle file:///C:/ paths\n    protocol += '/';\n    return protocol + path.resolve(dir.slice(protocol.length), url).replace(/\\\\/g, '/');\n  }\n  return protocol + path.resolve(dir.slice(protocol.length), url);\n}\n\nfunction retrieveSourceMapURL(source) {\n  var fileData;\n\n  if (isInBrowser()) {\n     try {\n       var xhr = new XMLHttpRequest();\n       xhr.open('GET', source, false);\n       xhr.send(null);\n       fileData = xhr.readyState === 4 ? xhr.responseText : null;\n\n       // Support providing a sourceMappingURL via the SourceMap header\n       var sourceMapHeader = xhr.getResponseHeader(\"SourceMap\") ||\n                             xhr.getResponseHeader(\"X-SourceMap\");\n       if (sourceMapHeader) {\n         return sourceMapHeader;\n       }\n     } catch (e) {\n     }\n  }\n\n  // Get the URL of the source map\n  fileData = retrieveFile(source);\n  var re = /(?:\\/\\/[@#][\\s]*sourceMappingURL=([^\\s'\"]+)[\\s]*$)|(?:\\/\\*[@#][\\s]*sourceMappingURL=([^\\s*'\"]+)[\\s]*(?:\\*\\/)[\\s]*$)/mg;\n  // Keep executing the search to find the *last* sourceMappingURL to avoid\n  // picking up sourceMappingURLs from comments, strings, etc.\n  var lastMatch, match;\n  while (match = re.exec(fileData)) lastMatch = match;\n  if (!lastMatch) return null;\n  return lastMatch[1];\n};\n\n// Can be overridden by the retrieveSourceMap option to install. Takes a\n// generated source filename; returns a {map, optional url} object, or null if\n// there is no source map.  The map field may be either a string or the parsed\n// JSON object (ie, it must be a valid argument to the SourceMapConsumer\n// constructor).\nvar retrieveSourceMap = handlerExec(retrieveMapHandlers);\nretrieveMapHandlers.push(function(source) {\n  var sourceMappingURL = retrieveSourceMapURL(source);\n  if (!sourceMappingURL) return null;\n\n  // Read the contents of the source map\n  var sourceMapData;\n  if (reSourceMap.test(sourceMappingURL)) {\n    // Support source map URL as a data url\n    var rawData = sourceMappingURL.slice(sourceMappingURL.indexOf(',') + 1);\n    sourceMapData = bufferFrom(rawData, \"base64\").toString();\n    sourceMappingURL = source;\n  } else {\n    // Support source map URLs relative to the source URL\n    sourceMappingURL = supportRelativeURL(source, sourceMappingURL);\n    sourceMapData = retrieveFile(sourceMappingURL);\n  }\n\n  if (!sourceMapData) {\n    return null;\n  }\n\n  return {\n    url: sourceMappingURL,\n    map: sourceMapData\n  };\n});\n\nfunction mapSourcePosition(position) {\n  var sourceMap = sourceMapCache[position.source];\n  if (!sourceMap) {\n    // Call the (overrideable) retrieveSourceMap function to get the source map.\n    var urlAndMap = retrieveSourceMap(position.source);\n    if (urlAndMap) {\n      sourceMap = sourceMapCache[position.source] = {\n        url: urlAndMap.url,\n        map: new SourceMapConsumer(urlAndMap.map)\n      };\n\n      // Load all sources stored inline with the source map into the file cache\n      // to pretend like they are already loaded. They may not exist on disk.\n      if (sourceMap.map.sourcesContent) {\n        sourceMap.map.sources.forEach(function(source, i) {\n          var contents = sourceMap.map.sourcesContent[i];\n          if (contents) {\n            var url = supportRelativeURL(sourceMap.url, source);\n            fileContentsCache[url] = contents;\n          }\n        });\n      }\n    } else {\n      sourceMap = sourceMapCache[position.source] = {\n        url: null,\n        map: null\n      };\n    }\n  }\n\n  // Resolve the source URL relative to the URL of the source map\n  if (sourceMap && sourceMap.map && typeof sourceMap.map.originalPositionFor === 'function') {\n    var originalPosition = sourceMap.map.originalPositionFor(position);\n\n    // Only return the original position if a matching line was found. If no\n    // matching line is found then we return position instead, which will cause\n    // the stack trace to print the path and line for the compiled file. It is\n    // better to give a precise location in the compiled file than a vague\n    // location in the original file.\n    if (originalPosition.source !== null) {\n      originalPosition.source = supportRelativeURL(\n        sourceMap.url, originalPosition.source);\n      return originalPosition;\n    }\n  }\n\n  return position;\n}\n\n// Parses code generated by FormatEvalOrigin(), a function inside V8:\n// https://code.google.com/p/v8/source/browse/trunk/src/messages.js\nfunction mapEvalOrigin(origin) {\n  // Most eval() calls are in this format\n  var match = /^eval at ([^(]+) \\((.+):(\\d+):(\\d+)\\)$/.exec(origin);\n  if (match) {\n    var position = mapSourcePosition({\n      source: match[2],\n      line: +match[3],\n      column: match[4] - 1\n    });\n    return 'eval at ' + match[1] + ' (' + position.source + ':' +\n      position.line + ':' + (position.column + 1) + ')';\n  }\n\n  // Parse nested eval() calls using recursion\n  match = /^eval at ([^(]+) \\((.+)\\)$/.exec(origin);\n  if (match) {\n    return 'eval at ' + match[1] + ' (' + mapEvalOrigin(match[2]) + ')';\n  }\n\n  // Make sure we still return useful information if we didn't find anything\n  return origin;\n}\n\n// This is copied almost verbatim from the V8 source code at\n// https://code.google.com/p/v8/source/browse/trunk/src/messages.js. The\n// implementation of wrapCallSite() used to just forward to the actual source\n// code of CallSite.prototype.toString but unfortunately a new release of V8\n// did something to the prototype chain and broke the shim. The only fix I\n// could find was copy/paste.\nfunction CallSiteToString() {\n  var fileName;\n  var fileLocation = \"\";\n  if (this.isNative()) {\n    fileLocation = \"native\";\n  } else {\n    fileName = this.getScriptNameOrSourceURL();\n    if (!fileName && this.isEval()) {\n      fileLocation = this.getEvalOrigin();\n      fileLocation += \", \";  // Expecting source position to follow.\n    }\n\n    if (fileName) {\n      fileLocation += fileName;\n    } else {\n      // Source code does not originate from a file and is not native, but we\n      // can still get the source position inside the source string, e.g. in\n      // an eval string.\n      fileLocation += \"<anonymous>\";\n    }\n    var lineNumber = this.getLineNumber();\n    if (lineNumber != null) {\n      fileLocation += \":\" + lineNumber;\n      var columnNumber = this.getColumnNumber();\n      if (columnNumber) {\n        fileLocation += \":\" + columnNumber;\n      }\n    }\n  }\n\n  var line = \"\";\n  var functionName = this.getFunctionName();\n  var addSuffix = true;\n  var isConstructor = this.isConstructor();\n  var isMethodCall = !(this.isToplevel() || isConstructor);\n  if (isMethodCall) {\n    var typeName = this.getTypeName();\n    // Fixes shim to be backward compatable with Node v0 to v4\n    if (typeName === \"[object Object]\") {\n      typeName = \"null\";\n    }\n    var methodName = this.getMethodName();\n    if (functionName) {\n      if (typeName && functionName.indexOf(typeName) != 0) {\n        line += typeName + \".\";\n      }\n      line += functionName;\n      if (methodName && functionName.indexOf(\".\" + methodName) != functionName.length - methodName.length - 1) {\n        line += \" [as \" + methodName + \"]\";\n      }\n    } else {\n      line += typeName + \".\" + (methodName || \"<anonymous>\");\n    }\n  } else if (isConstructor) {\n    line += \"new \" + (functionName || \"<anonymous>\");\n  } else if (functionName) {\n    line += functionName;\n  } else {\n    line += fileLocation;\n    addSuffix = false;\n  }\n  if (addSuffix) {\n    line += \" (\" + fileLocation + \")\";\n  }\n  return line;\n}\n\nfunction cloneCallSite(frame) {\n  var object = {};\n  Object.getOwnPropertyNames(Object.getPrototypeOf(frame)).forEach(function(name) {\n    object[name] = /^(?:is|get)/.test(name) ? function() { return frame[name].call(frame); } : frame[name];\n  });\n  object.toString = CallSiteToString;\n  return object;\n}\n\nfunction wrapCallSite(frame, state) {\n  // provides interface backward compatibility\n  if (state === undefined) {\n    state = { nextPosition: null, curPosition: null }\n  }\n  if(frame.isNative()) {\n    state.curPosition = null;\n    return frame;\n  }\n\n  // Most call sites will return the source file from getFileName(), but code\n  // passed to eval() ending in \"//# sourceURL=...\" will return the source file\n  // from getScriptNameOrSourceURL() instead\n  var source = frame.getFileName() || frame.getScriptNameOrSourceURL();\n  if (source) {\n    var line = frame.getLineNumber();\n    var column = frame.getColumnNumber() - 1;\n\n    // Fix position in Node where some (internal) code is prepended.\n    // See https://github.com/evanw/node-source-map-support/issues/36\n    // Header removed in node at ^10.16 || >=11.11.0\n    // v11 is not an LTS candidate, we can just test the one version with it.\n    // Test node versions for: 10.16-19, 10.20+, 12-19, 20-99, 100+, or 11.11\n    var noHeader = /^v(10\\.1[6-9]|10\\.[2-9][0-9]|10\\.[0-9]{3,}|1[2-9]\\d*|[2-9]\\d|\\d{3,}|11\\.11)/;\n    var headerLength = noHeader.test(globalProcessVersion()) ? 0 : 62;\n    if (line === 1 && column > headerLength && !isInBrowser() && !frame.isEval()) {\n      column -= headerLength;\n    }\n\n    var position = mapSourcePosition({\n      source: source,\n      line: line,\n      column: column\n    });\n    state.curPosition = position;\n    frame = cloneCallSite(frame);\n    var originalFunctionName = frame.getFunctionName;\n    frame.getFunctionName = function() {\n      if (state.nextPosition == null) {\n        return originalFunctionName();\n      }\n      return state.nextPosition.name || originalFunctionName();\n    };\n    frame.getFileName = function() { return position.source; };\n    frame.getLineNumber = function() { return position.line; };\n    frame.getColumnNumber = function() { return position.column + 1; };\n    frame.getScriptNameOrSourceURL = function() { return position.source; };\n    return frame;\n  }\n\n  // Code called using eval() needs special handling\n  var origin = frame.isEval() && frame.getEvalOrigin();\n  if (origin) {\n    origin = mapEvalOrigin(origin);\n    frame = cloneCallSite(frame);\n    frame.getEvalOrigin = function() { return origin; };\n    return frame;\n  }\n\n  // If we get here then we were unable to change the source position\n  return frame;\n}\n\n// This function is part of the V8 stack trace API, for more info see:\n// https://v8.dev/docs/stack-trace-api\nfunction prepareStackTrace(error, stack) {\n  if (emptyCacheBetweenOperations) {\n    fileContentsCache = {};\n    sourceMapCache = {};\n  }\n\n  var name = error.name || 'Error';\n  var message = error.message || '';\n  var errorString = name + \": \" + message;\n\n  var state = { nextPosition: null, curPosition: null };\n  var processedStack = [];\n  for (var i = stack.length - 1; i >= 0; i--) {\n    processedStack.push('\\n    at ' + wrapCallSite(stack[i], state));\n    state.nextPosition = state.curPosition;\n  }\n  state.curPosition = state.nextPosition = null;\n  return errorString + processedStack.reverse().join('');\n}\n\n// Generate position and snippet of original source with pointer\nfunction getErrorSource(error) {\n  var match = /\\n    at [^(]+ \\((.*):(\\d+):(\\d+)\\)/.exec(error.stack);\n  if (match) {\n    var source = match[1];\n    var line = +match[2];\n    var column = +match[3];\n\n    // Support the inline sourceContents inside the source map\n    var contents = fileContentsCache[source];\n\n    // Support files on disk\n    if (!contents && fs && fs.existsSync(source)) {\n      try {\n        contents = fs.readFileSync(source, 'utf8');\n      } catch (er) {\n        contents = '';\n      }\n    }\n\n    // Format the line from the original source code like node does\n    if (contents) {\n      var code = contents.split(/(?:\\r\\n|\\r|\\n)/)[line - 1];\n      if (code) {\n        return source + ':' + line + '\\n' + code + '\\n' +\n          new Array(column).join(' ') + '^';\n      }\n    }\n  }\n  return null;\n}\n\nfunction printErrorAndExit (error) {\n  var source = getErrorSource(error);\n\n  // Ensure error is printed synchronously and not truncated\n  var stderr = globalProcessStderr();\n  if (stderr && stderr._handle && stderr._handle.setBlocking) {\n    stderr._handle.setBlocking(true);\n  }\n\n  if (source) {\n    console.error();\n    console.error(source);\n  }\n\n  console.error(error.stack);\n  globalProcessExit(1);\n}\n\nfunction shimEmitUncaughtException () {\n  var origEmit = process.emit;\n\n  process.emit = function (type) {\n    if (type === 'uncaughtException') {\n      var hasStack = (arguments[1] && arguments[1].stack);\n      var hasListeners = (this.listeners(type).length > 0);\n\n      if (hasStack && !hasListeners) {\n        return printErrorAndExit(arguments[1]);\n      }\n    }\n\n    return origEmit.apply(this, arguments);\n  };\n}\n\nvar originalRetrieveFileHandlers = retrieveFileHandlers.slice(0);\nvar originalRetrieveMapHandlers = retrieveMapHandlers.slice(0);\n\nexports.wrapCallSite = wrapCallSite;\nexports.getErrorSource = getErrorSource;\nexports.mapSourcePosition = mapSourcePosition;\nexports.retrieveSourceMap = retrieveSourceMap;\n\nexports.install = function(options) {\n  options = options || {};\n\n  if (options.environment) {\n    environment = options.environment;\n    if ([\"node\", \"browser\", \"auto\"].indexOf(environment) === -1) {\n      throw new Error(\"environment \" + environment + \" was unknown. Available options are {auto, browser, node}\")\n    }\n  }\n\n  // Allow sources to be found by methods other than reading the files\n  // directly from disk.\n  if (options.retrieveFile) {\n    if (options.overrideRetrieveFile) {\n      retrieveFileHandlers.length = 0;\n    }\n\n    retrieveFileHandlers.unshift(options.retrieveFile);\n  }\n\n  // Allow source maps to be found by methods other than reading the files\n  // directly from disk.\n  if (options.retrieveSourceMap) {\n    if (options.overrideRetrieveSourceMap) {\n      retrieveMapHandlers.length = 0;\n    }\n\n    retrieveMapHandlers.unshift(options.retrieveSourceMap);\n  }\n\n  // Support runtime transpilers that include inline source maps\n  if (options.hookRequire && !isInBrowser()) {\n    // Use dynamicRequire to avoid including in browser bundles\n    var Module = dynamicRequire(module, 'module');\n    var $compile = Module.prototype._compile;\n\n    if (!$compile.__sourceMapSupport) {\n      Module.prototype._compile = function(content, filename) {\n        fileContentsCache[filename] = content;\n        sourceMapCache[filename] = undefined;\n        return $compile.call(this, content, filename);\n      };\n\n      Module.prototype._compile.__sourceMapSupport = true;\n    }\n  }\n\n  // Configure options\n  if (!emptyCacheBetweenOperations) {\n    emptyCacheBetweenOperations = 'emptyCacheBetweenOperations' in options ?\n      options.emptyCacheBetweenOperations : false;\n  }\n\n  // Install the error reformatter\n  if (!errorFormatterInstalled) {\n    errorFormatterInstalled = true;\n    Error.prepareStackTrace = prepareStackTrace;\n  }\n\n  if (!uncaughtShimInstalled) {\n    var installHandler = 'handleUncaughtExceptions' in options ?\n      options.handleUncaughtExceptions : true;\n\n    // Do not override 'uncaughtException' with our own handler in Node.js\n    // Worker threads. Workers pass the error to the main thread as an event,\n    // rather than printing something to stderr and exiting.\n    try {\n      // We need to use `dynamicRequire` because `require` on it's own will be optimized by WebPack/Browserify.\n      var worker_threads = dynamicRequire(module, 'worker_threads');\n      if (worker_threads.isMainThread === false) {\n        installHandler = false;\n      }\n    } catch(e) {}\n\n    // Provide the option to not install the uncaught exception handler. This is\n    // to support other uncaught exception handlers (in test frameworks, for\n    // example). If this handler is not installed and there are no other uncaught\n    // exception handlers, uncaught exceptions will be caught by node's built-in\n    // exception handler and the process will still be terminated. However, the\n    // generated JavaScript code will be shown above the stack trace instead of\n    // the original source code.\n    if (installHandler && hasGlobalProcessEventEmitter()) {\n      uncaughtShimInstalled = true;\n      shimEmitUncaughtException();\n    }\n  }\n};\n\nexports.resetRetrieveHandlers = function() {\n  retrieveFileHandlers.length = 0;\n  retrieveMapHandlers.length = 0;\n\n  retrieveFileHandlers = originalRetrieveFileHandlers.slice(0);\n  retrieveMapHandlers = originalRetrieveMapHandlers.slice(0);\n\n  retrieveSourceMap = handlerExec(retrieveMapHandlers);\n  retrieveFile = handlerExec(retrieveFileHandlers);\n}\n", "require('./').install();\n", "'use strict';\n\n/*\n * Displays a helpful message and the source of\n * the format when it is invalid.\n */\nclass InvalidFormatError extends Error {\n  constructor(formatFn) {\n    super(`Format functions must be synchronous taking a two arguments: (info, opts)\nFound: ${formatFn.toString().split('\\n')[0]}\\n`);\n\n    Error.captureStackTrace(this, InvalidFormatError);\n  }\n}\n\n/*\n * function format (formatFn)\n * Returns a create function for the `formatFn`.\n */\nmodule.exports = formatFn => {\n  if (formatFn.length > 2) {\n    throw new InvalidFormatError(formatFn);\n  }\n\n  /*\n   * function Format (options)\n   * Base prototype which calls a `_format`\n   * function and pushes the result.\n   */\n  function Format(options = {}) {\n    this.options = options;\n  }\n\n  Format.prototype.transform = formatFn;\n\n  //\n  // Create a function which returns new instances of\n  // FormatWrap for simple syntax like:\n  //\n  // require('winston').formats.json();\n  //\n  function createFormatWrap(opts) {\n    return new Format(opts);\n  }\n\n  //\n  // Expose the FormatWrap through the create function\n  // for testability.\n  //\n  createFormatWrap.Format = Format;\n  return createFormatWrap;\n};\n", "/*\nThe MIT License (MIT)\n\nCopyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n*/\n\nvar styles = {};\nmodule['exports'] = styles;\n\nvar codes = {\n  reset: [0, 0],\n\n  bold: [1, 22],\n  dim: [2, 22],\n  italic: [3, 23],\n  underline: [4, 24],\n  inverse: [7, 27],\n  hidden: [8, 28],\n  strikethrough: [9, 29],\n\n  black: [30, 39],\n  red: [31, 39],\n  green: [32, 39],\n  yellow: [33, 39],\n  blue: [34, 39],\n  magenta: [35, 39],\n  cyan: [36, 39],\n  white: [37, 39],\n  gray: [90, 39],\n  grey: [90, 39],\n\n  brightRed: [91, 39],\n  brightGreen: [92, 39],\n  brightYellow: [93, 39],\n  brightBlue: [94, 39],\n  brightMagenta: [95, 39],\n  brightCyan: [96, 39],\n  brightWhite: [97, 39],\n\n  bgBlack: [40, 49],\n  bgRed: [41, 49],\n  bgGreen: [42, 49],\n  bgYellow: [43, 49],\n  bgBlue: [44, 49],\n  bgMagenta: [45, 49],\n  bgCyan: [46, 49],\n  bgWhite: [47, 49],\n  bgGray: [100, 49],\n  bgGrey: [100, 49],\n\n  bgBrightRed: [101, 49],\n  bgBrightGreen: [102, 49],\n  bgBrightYellow: [103, 49],\n  bgBrightBlue: [104, 49],\n  bgBrightMagenta: [105, 49],\n  bgBrightCyan: [106, 49],\n  bgBrightWhite: [107, 49],\n\n  // legacy styles for colors pre v1.0.0\n  blackBG: [40, 49],\n  redBG: [41, 49],\n  greenBG: [42, 49],\n  yellowBG: [43, 49],\n  blueBG: [44, 49],\n  magentaBG: [45, 49],\n  cyanBG: [46, 49],\n  whiteBG: [47, 49],\n\n};\n\nObject.keys(codes).forEach(function(key) {\n  var val = codes[key];\n  var style = styles[key] = [];\n  style.open = '\\u001b[' + val[0] + 'm';\n  style.close = '\\u001b[' + val[1] + 'm';\n});\n", "/*\nMIT License\n\nCopyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of\nthis software and associated documentation files (the \"Software\"), to deal in\nthe Software without restriction, including without limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit persons to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n*/\n\n'use strict';\n\nmodule.exports = function(flag, argv) {\n  argv = argv || process.argv || [];\n\n  var terminatorPos = argv.indexOf('--');\n  var prefix = /^-{1,2}/.test(flag) ? '' : '--';\n  var pos = argv.indexOf(prefix + flag);\n\n  return pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos);\n};\n", "/*\nThe MIT License (MIT)\n\nCopyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n*/\n\n'use strict';\n\nvar os = require('os');\nvar hasFlag = require('./has-flag.js');\n\nvar env = process.env;\n\nvar forceColor = void 0;\nif (hasFlag('no-color') || hasFlag('no-colors') || hasFlag('color=false')) {\n  forceColor = false;\n} else if (hasFlag('color') || hasFlag('colors') || hasFlag('color=true')\n           || hasFlag('color=always')) {\n  forceColor = true;\n}\nif ('FORCE_COLOR' in env) {\n  forceColor = env.FORCE_COLOR.length === 0\n    || parseInt(env.FORCE_COLOR, 10) !== 0;\n}\n\nfunction translateLevel(level) {\n  if (level === 0) {\n    return false;\n  }\n\n  return {\n    level: level,\n    hasBasic: true,\n    has256: level >= 2,\n    has16m: level >= 3,\n  };\n}\n\nfunction supportsColor(stream) {\n  if (forceColor === false) {\n    return 0;\n  }\n\n  if (hasFlag('color=16m') || hasFlag('color=full')\n      || hasFlag('color=truecolor')) {\n    return 3;\n  }\n\n  if (hasFlag('color=256')) {\n    return 2;\n  }\n\n  if (stream && !stream.isTTY && forceColor !== true) {\n    return 0;\n  }\n\n  var min = forceColor ? 1 : 0;\n\n  if (process.platform === 'win32') {\n    // Node.js 7.5.0 is the first version of Node.js to include a patch to\n    // libuv that enables 256 color output on Windows. Anything earlier and it\n    // won't work. However, here we target Node.js 8 at minimum as it is an LTS\n    // release, and Node.js 7 is not. Windows 10 build 10586 is the first\n    // Windows release that supports 256 colors. Windows 10 build 14931 is the\n    // first release that supports 16m/TrueColor.\n    var osRelease = os.release().split('.');\n    if (Number(process.versions.node.split('.')[0]) >= 8\n        && Number(osRelease[0]) >= 10 && Number(osRelease[2]) >= 10586) {\n      return Number(osRelease[2]) >= 14931 ? 3 : 2;\n    }\n\n    return 1;\n  }\n\n  if ('CI' in env) {\n    if (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(function(sign) {\n      return sign in env;\n    }) || env.CI_NAME === 'codeship') {\n      return 1;\n    }\n\n    return min;\n  }\n\n  if ('TEAMCITY_VERSION' in env) {\n    return (/^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0\n    );\n  }\n\n  if ('TERM_PROGRAM' in env) {\n    var version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n    switch (env.TERM_PROGRAM) {\n      case 'iTerm.app':\n        return version >= 3 ? 3 : 2;\n      case 'Hyper':\n        return 3;\n      case 'Apple_Terminal':\n        return 2;\n      // No default\n    }\n  }\n\n  if (/-256(color)?$/i.test(env.TERM)) {\n    return 2;\n  }\n\n  if (/^screen|^xterm|^vt100|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n    return 1;\n  }\n\n  if ('COLORTERM' in env) {\n    return 1;\n  }\n\n  if (env.TERM === 'dumb') {\n    return min;\n  }\n\n  return min;\n}\n\nfunction getSupportLevel(stream) {\n  var level = supportsColor(stream);\n  return translateLevel(level);\n}\n\nmodule.exports = {\n  supportsColor: getSupportLevel,\n  stdout: getSupportLevel(process.stdout),\n  stderr: getSupportLevel(process.stderr),\n};\n", "module['exports'] = function runTheTrap(text, options) {\n  var result = '';\n  text = text || 'Run the trap, drop the bass';\n  text = text.split('');\n  var trap = {\n    a: ['\\u0040', '\\u0104', '\\u023a', '\\u0245', '\\u0394', '\\u039b', '\\u0414'],\n    b: ['\\u00df', '\\u0181', '\\u0243', '\\u026e', '\\u03b2', '\\u0e3f'],\n    c: ['\\u00a9', '\\u023b', '\\u03fe'],\n    d: ['\\u00d0', '\\u018a', '\\u0500', '\\u0501', '\\u0502', '\\u0503'],\n    e: ['\\u00cb', '\\u0115', '\\u018e', '\\u0258', '\\u03a3', '\\u03be', '\\u04bc',\n      '\\u0a6c'],\n    f: ['\\u04fa'],\n    g: ['\\u0262'],\n    h: ['\\u0126', '\\u0195', '\\u04a2', '\\u04ba', '\\u04c7', '\\u050a'],\n    i: ['\\u0f0f'],\n    j: ['\\u0134'],\n    k: ['\\u0138', '\\u04a0', '\\u04c3', '\\u051e'],\n    l: ['\\u0139'],\n    m: ['\\u028d', '\\u04cd', '\\u04ce', '\\u0520', '\\u0521', '\\u0d69'],\n    n: ['\\u00d1', '\\u014b', '\\u019d', '\\u0376', '\\u03a0', '\\u048a'],\n    o: ['\\u00d8', '\\u00f5', '\\u00f8', '\\u01fe', '\\u0298', '\\u047a', '\\u05dd',\n      '\\u06dd', '\\u0e4f'],\n    p: ['\\u01f7', '\\u048e'],\n    q: ['\\u09cd'],\n    r: ['\\u00ae', '\\u01a6', '\\u0210', '\\u024c', '\\u0280', '\\u042f'],\n    s: ['\\u00a7', '\\u03de', '\\u03df', '\\u03e8'],\n    t: ['\\u0141', '\\u0166', '\\u0373'],\n    u: ['\\u01b1', '\\u054d'],\n    v: ['\\u05d8'],\n    w: ['\\u0428', '\\u0460', '\\u047c', '\\u0d70'],\n    x: ['\\u04b2', '\\u04fe', '\\u04fc', '\\u04fd'],\n    y: ['\\u00a5', '\\u04b0', '\\u04cb'],\n    z: ['\\u01b5', '\\u0240'],\n  };\n  text.forEach(function(c) {\n    c = c.toLowerCase();\n    var chars = trap[c] || [' '];\n    var rand = Math.floor(Math.random() * chars.length);\n    if (typeof trap[c] !== 'undefined') {\n      result += trap[c][rand];\n    } else {\n      result += c;\n    }\n  });\n  return result;\n};\n", "// please no\nmodule['exports'] = function zalgo(text, options) {\n  text = text || '   he is here   ';\n  var soul = {\n    'up': [\n      '\u030D', '\u030E', '\u0304', '\u0305',\n      '\u033F', '\u0311', '\u0306', '\u0310',\n      '\u0352', '\u0357', '\u0351', '\u0307',\n      '\u0308', '\u030A', '\u0342', '\u0313',\n      '\u0308', '\u034A', '\u034B', '\u034C',\n      '\u0303', '\u0302', '\u030C', '\u0350',\n      '\u0300', '\u0301', '\u030B', '\u030F',\n      '\u0312', '\u0313', '\u0314', '\u033D',\n      '\u0309', '\u0363', '\u0364', '\u0365',\n      '\u0366', '\u0367', '\u0368', '\u0369',\n      '\u036A', '\u036B', '\u036C', '\u036D',\n      '\u036E', '\u036F', '\u033E', '\u035B',\n      '\u0346', '\u031A',\n    ],\n    'down': [\n      '\u0316', '\u0317', '\u0318', '\u0319',\n      '\u031C', '\u031D', '\u031E', '\u031F',\n      '\u0320', '\u0324', '\u0325', '\u0326',\n      '\u0329', '\u032A', '\u032B', '\u032C',\n      '\u032D', '\u032E', '\u032F', '\u0330',\n      '\u0331', '\u0332', '\u0333', '\u0339',\n      '\u033A', '\u033B', '\u033C', '\u0345',\n      '\u0347', '\u0348', '\u0349', '\u034D',\n      '\u034E', '\u0353', '\u0354', '\u0355',\n      '\u0356', '\u0359', '\u035A', '\u0323',\n    ],\n    'mid': [\n      '\u0315', '\u031B', '\u0300', '\u0301',\n      '\u0358', '\u0321', '\u0322', '\u0327',\n      '\u0328', '\u0334', '\u0335', '\u0336',\n      '\u035C', '\u035D', '\u035E',\n      '\u035F', '\u0360', '\u0362', '\u0338',\n      '\u0337', '\u0361', ' \u0489',\n    ],\n  };\n  var all = [].concat(soul.up, soul.down, soul.mid);\n\n  function randomNumber(range) {\n    var r = Math.floor(Math.random() * range);\n    return r;\n  }\n\n  function isChar(character) {\n    var bool = false;\n    all.filter(function(i) {\n      bool = (i === character);\n    });\n    return bool;\n  }\n\n\n  function heComes(text, options) {\n    var result = '';\n    var counts;\n    var l;\n    options = options || {};\n    options['up'] =\n      typeof options['up'] !== 'undefined' ? options['up'] : true;\n    options['mid'] =\n      typeof options['mid'] !== 'undefined' ? options['mid'] : true;\n    options['down'] =\n      typeof options['down'] !== 'undefined' ? options['down'] : true;\n    options['size'] =\n      typeof options['size'] !== 'undefined' ? options['size'] : 'maxi';\n    text = text.split('');\n    for (l in text) {\n      if (isChar(l)) {\n        continue;\n      }\n      result = result + text[l];\n      counts = {'up': 0, 'down': 0, 'mid': 0};\n      switch (options.size) {\n        case 'mini':\n          counts.up = randomNumber(8);\n          counts.mid = randomNumber(2);\n          counts.down = randomNumber(8);\n          break;\n        case 'maxi':\n          counts.up = randomNumber(16) + 3;\n          counts.mid = randomNumber(4) + 1;\n          counts.down = randomNumber(64) + 3;\n          break;\n        default:\n          counts.up = randomNumber(8) + 1;\n          counts.mid = randomNumber(6) / 2;\n          counts.down = randomNumber(8) + 1;\n          break;\n      }\n\n      var arr = ['up', 'mid', 'down'];\n      for (var d in arr) {\n        var index = arr[d];\n        for (var i = 0; i <= counts[index]; i++) {\n          if (options[index]) {\n            result = result + soul[index][randomNumber(soul[index].length)];\n          }\n        }\n      }\n    }\n    return result;\n  }\n  // don't summon him\n  return heComes(text, options);\n};\n\n", "module['exports'] = function(colors) {\n  return function(letter, i, exploded) {\n    if (letter === ' ') return letter;\n    switch (i%3) {\n      case 0: return colors.red(letter);\n      case 1: return colors.white(letter);\n      case 2: return colors.blue(letter);\n    }\n  };\n};\n", "module['exports'] = function(colors) {\n  return function(letter, i, exploded) {\n    return i % 2 === 0 ? letter : colors.inverse(letter);\n  };\n};\n", "module['exports'] = function(colors) {\n  // RoY G BiV\n  var rainbowColors = ['red', 'yellow', 'green', 'blue', 'magenta'];\n  return function(letter, i, exploded) {\n    if (letter === ' ') {\n      return letter;\n    } else {\n      return colors[rainbowColors[i++ % rainbowColors.length]](letter);\n    }\n  };\n};\n\n", "module['exports'] = function(colors) {\n  var available = ['underline', 'inverse', 'grey', 'yellow', 'red', 'green',\n    'blue', 'white', 'cyan', 'magenta', 'brightYellow', 'brightRed',\n    'brightGreen', 'brightBlue', 'brightWhite', 'brightCyan', 'brightMagenta'];\n  return function(letter, i, exploded) {\n    return letter === ' ' ? letter :\n      colors[\n          available[Math.round(Math.random() * (available.length - 2))]\n      ](letter);\n  };\n};\n", "/*\n\nThe MIT License (MIT)\n\nOriginal Library\n  - Copyright (c) Marak Squires\n\nAdditional functionality\n - Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n*/\n\nvar colors = {};\nmodule['exports'] = colors;\n\ncolors.themes = {};\n\nvar util = require('util');\nvar ansiStyles = colors.styles = require('./styles');\nvar defineProps = Object.defineProperties;\nvar newLineRegex = new RegExp(/[\\r\\n]+/g);\n\ncolors.supportsColor = require('./system/supports-colors').supportsColor;\n\nif (typeof colors.enabled === 'undefined') {\n  colors.enabled = colors.supportsColor() !== false;\n}\n\ncolors.enable = function() {\n  colors.enabled = true;\n};\n\ncolors.disable = function() {\n  colors.enabled = false;\n};\n\ncolors.stripColors = colors.strip = function(str) {\n  return ('' + str).replace(/\\x1B\\[\\d+m/g, '');\n};\n\n// eslint-disable-next-line no-unused-vars\nvar stylize = colors.stylize = function stylize(str, style) {\n  if (!colors.enabled) {\n    return str+'';\n  }\n\n  var styleMap = ansiStyles[style];\n\n  // Stylize should work for non-ANSI styles, too\n  if (!styleMap && style in colors) {\n    // Style maps like trap operate as functions on strings;\n    // they don't have properties like open or close.\n    return colors[style](str);\n  }\n\n  return styleMap.open + str + styleMap.close;\n};\n\nvar matchOperatorsRe = /[|\\\\{}()[\\]^$+*?.]/g;\nvar escapeStringRegexp = function(str) {\n  if (typeof str !== 'string') {\n    throw new TypeError('Expected a string');\n  }\n  return str.replace(matchOperatorsRe, '\\\\$&');\n};\n\nfunction build(_styles) {\n  var builder = function builder() {\n    return applyStyle.apply(builder, arguments);\n  };\n  builder._styles = _styles;\n  // __proto__ is used because we must return a function, but there is\n  // no way to create a function with a different prototype.\n  builder.__proto__ = proto;\n  return builder;\n}\n\nvar styles = (function() {\n  var ret = {};\n  ansiStyles.grey = ansiStyles.gray;\n  Object.keys(ansiStyles).forEach(function(key) {\n    ansiStyles[key].closeRe =\n      new RegExp(escapeStringRegexp(ansiStyles[key].close), 'g');\n    ret[key] = {\n      get: function() {\n        return build(this._styles.concat(key));\n      },\n    };\n  });\n  return ret;\n})();\n\nvar proto = defineProps(function colors() {}, styles);\n\nfunction applyStyle() {\n  var args = Array.prototype.slice.call(arguments);\n\n  var str = args.map(function(arg) {\n    // Use weak equality check so we can colorize null/undefined in safe mode\n    if (arg != null && arg.constructor === String) {\n      return arg;\n    } else {\n      return util.inspect(arg);\n    }\n  }).join(' ');\n\n  if (!colors.enabled || !str) {\n    return str;\n  }\n\n  var newLinesPresent = str.indexOf('\\n') != -1;\n\n  var nestedStyles = this._styles;\n\n  var i = nestedStyles.length;\n  while (i--) {\n    var code = ansiStyles[nestedStyles[i]];\n    str = code.open + str.replace(code.closeRe, code.open) + code.close;\n    if (newLinesPresent) {\n      str = str.replace(newLineRegex, function(match) {\n        return code.close + match + code.open;\n      });\n    }\n  }\n\n  return str;\n}\n\ncolors.setTheme = function(theme) {\n  if (typeof theme === 'string') {\n    console.log('colors.setTheme now only accepts an object, not a string.  ' +\n      'If you are trying to set a theme from a file, it is now your (the ' +\n      'caller\\'s) responsibility to require the file.  The old syntax ' +\n      'looked like colors.setTheme(__dirname + ' +\n      '\\'/../themes/generic-logging.js\\'); The new syntax looks like '+\n      'colors.setTheme(require(__dirname + ' +\n      '\\'/../themes/generic-logging.js\\'));');\n    return;\n  }\n  for (var style in theme) {\n    (function(style) {\n      colors[style] = function(str) {\n        if (typeof theme[style] === 'object') {\n          var out = str;\n          for (var i in theme[style]) {\n            out = colors[theme[style][i]](out);\n          }\n          return out;\n        }\n        return colors[theme[style]](str);\n      };\n    })(style);\n  }\n};\n\nfunction init() {\n  var ret = {};\n  Object.keys(styles).forEach(function(name) {\n    ret[name] = {\n      get: function() {\n        return build([name]);\n      },\n    };\n  });\n  return ret;\n}\n\nvar sequencer = function sequencer(map, str) {\n  var exploded = str.split('');\n  exploded = exploded.map(map);\n  return exploded.join('');\n};\n\n// custom formatter methods\ncolors.trap = require('./custom/trap');\ncolors.zalgo = require('./custom/zalgo');\n\n// maps\ncolors.maps = {};\ncolors.maps.america = require('./maps/america')(colors);\ncolors.maps.zebra = require('./maps/zebra')(colors);\ncolors.maps.rainbow = require('./maps/rainbow')(colors);\ncolors.maps.random = require('./maps/random')(colors);\n\nfor (var map in colors.maps) {\n  (function(map) {\n    colors[map] = function(str) {\n      return sequencer(colors.maps[map], str);\n    };\n  })(map);\n}\n\ndefineProps(colors, init());\n", "//\n// Remark: Requiring this file will use the \"safe\" colors API,\n// which will not touch String.prototype.\n//\n//   var colors = require('colors/safe');\n//   colors.red(\"foo\")\n//\n//\nvar colors = require('./lib/colors');\nmodule['exports'] = colors;\n", "/**\n * cli.js: Config that conform to commonly used CLI logging levels.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\n/**\n * Default levels for the CLI configuration.\n * @type {Object}\n */\nexports.levels = {\n  error: 0,\n  warn: 1,\n  help: 2,\n  data: 3,\n  info: 4,\n  debug: 5,\n  prompt: 6,\n  verbose: 7,\n  input: 8,\n  silly: 9\n};\n\n/**\n * Default colors for the CLI configuration.\n * @type {Object}\n */\nexports.colors = {\n  error: 'red',\n  warn: 'yellow',\n  help: 'cyan',\n  data: 'grey',\n  info: 'green',\n  debug: 'blue',\n  prompt: 'grey',\n  verbose: 'cyan',\n  input: 'grey',\n  silly: 'magenta'\n};\n", "/**\n * npm.js: Config that conform to npm logging levels.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\n/**\n * Default levels for the npm configuration.\n * @type {Object}\n */\nexports.levels = {\n  error: 0,\n  warn: 1,\n  info: 2,\n  http: 3,\n  verbose: 4,\n  debug: 5,\n  silly: 6\n};\n\n/**\n * Default levels for the npm configuration.\n * @type {Object}\n */\nexports.colors = {\n  error: 'red',\n  warn: 'yellow',\n  info: 'green',\n  http: 'green',\n  verbose: 'cyan',\n  debug: 'blue',\n  silly: 'magenta'\n};\n", "/**\n * syslog.js: Config that conform to syslog logging levels.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\n/**\n * Default levels for the syslog configuration.\n * @type {Object}\n */\nexports.levels = {\n  emerg: 0,\n  alert: 1,\n  crit: 2,\n  error: 3,\n  warning: 4,\n  notice: 5,\n  info: 6,\n  debug: 7\n};\n\n/**\n * Default levels for the syslog configuration.\n * @type {Object}\n */\nexports.colors = {\n  emerg: 'red',\n  alert: 'yellow',\n  crit: 'red',\n  error: 'red',\n  warning: 'red',\n  notice: 'yellow',\n  info: 'green',\n  debug: 'blue'\n};\n", "/**\n * index.js: Default settings for all levels that winston knows about.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\n/**\n * Export config set for the CLI.\n * @type {Object}\n */\nObject.defineProperty(exports, 'cli', {\n  value: require('./cli')\n});\n\n/**\n * Export config set for npm.\n * @type {Object}\n */\nObject.defineProperty(exports, 'npm', {\n  value: require('./npm')\n});\n\n/**\n * Export config set for the syslog.\n * @type {Object}\n */\nObject.defineProperty(exports, 'syslog', {\n  value: require('./syslog')\n});\n", "'use strict';\n\n/**\n * A shareable symbol constant that can be used\n * as a non-enumerable / semi-hidden level identifier\n * to allow the readable level property to be mutable for\n * operations like colorization\n *\n * @type {Symbol}\n */\nObject.defineProperty(exports, 'LEVEL', {\n  value: Symbol.for('level')\n});\n\n/**\n * A shareable symbol constant that can be used\n * as a non-enumerable / semi-hidden message identifier\n * to allow the final message property to not have\n * side effects on another.\n *\n * @type {Symbol}\n */\nObject.defineProperty(exports, 'MESSAGE', {\n  value: Symbol.for('message')\n});\n\n/**\n * A shareable symbol constant that can be used\n * as a non-enumerable / semi-hidden message identifier\n * to allow the extracted splat property be hidden\n *\n * @type {Symbol}\n */\nObject.defineProperty(exports, 'SPLAT', {\n  value: Symbol.for('splat')\n});\n\n/**\n * A shareable object constant  that can be used\n * as a standard configuration for winston@3.\n *\n * @type {Object}\n */\nObject.defineProperty(exports, 'configs', {\n  value: require('./config')\n});\n", "'use strict';\n\nconst colors = require('@colors/colors/safe');\nconst { LEVEL, MESSAGE } = require('triple-beam');\n\n//\n// Fix colors not appearing in non-tty environments\n//\ncolors.enabled = true;\n\n/**\n * @property {RegExp} hasSpace\n * Simple regex to check for presence of spaces.\n */\nconst hasSpace = /\\s+/;\n\n/*\n * Colorizer format. Wraps the `level` and/or `message` properties\n * of the `info` objects with ANSI color codes based on a few options.\n */\nclass Colorizer {\n  constructor(opts = {}) {\n    if (opts.colors) {\n      this.addColors(opts.colors);\n    }\n\n    this.options = opts;\n  }\n\n  /*\n   * Adds the colors Object to the set of allColors\n   * known by the Colorizer\n   *\n   * @param {Object} colors Set of color mappings to add.\n   */\n  static addColors(clrs) {\n    const nextColors = Object.keys(clrs).reduce((acc, level) => {\n      acc[level] = hasSpace.test(clrs[level])\n        ? clrs[level].split(hasSpace)\n        : clrs[level];\n\n      return acc;\n    }, {});\n\n    Colorizer.allColors = Object.assign({}, Colorizer.allColors || {}, nextColors);\n    return Colorizer.allColors;\n  }\n\n  /*\n   * Adds the colors Object to the set of allColors\n   * known by the Colorizer\n   *\n   * @param {Object} colors Set of color mappings to add.\n   */\n  addColors(clrs) {\n    return Colorizer.addColors(clrs);\n  }\n\n  /*\n   * function colorize (lookup, level, message)\n   * Performs multi-step colorization using @colors/colors/safe\n   */\n  colorize(lookup, level, message) {\n    if (typeof message === 'undefined') {\n      message = level;\n    }\n\n    //\n    // If the color for the level is just a string\n    // then attempt to colorize the message with it.\n    //\n    if (!Array.isArray(Colorizer.allColors[lookup])) {\n      return colors[Colorizer.allColors[lookup]](message);\n    }\n\n    //\n    // If it is an Array then iterate over that Array, applying\n    // the colors function for each item.\n    //\n    for (let i = 0, len = Colorizer.allColors[lookup].length; i < len; i++) {\n      message = colors[Colorizer.allColors[lookup][i]](message);\n    }\n\n    return message;\n  }\n\n  /*\n   * function transform (info, opts)\n   * Attempts to colorize the { level, message } of the given\n   * `logform` info object.\n   */\n  transform(info, opts) {\n    if (opts.all && typeof info[MESSAGE] === 'string') {\n      info[MESSAGE] = this.colorize(info[LEVEL], info.level, info[MESSAGE]);\n    }\n\n    if (opts.level || opts.all || !opts.message) {\n      info.level = this.colorize(info[LEVEL], info.level);\n    }\n\n    if (opts.all || opts.message) {\n      info.message = this.colorize(info[LEVEL], info.level, info.message);\n    }\n\n    return info;\n  }\n}\n\n/*\n * function colorize (info)\n * Returns a new instance of the colorize Format that applies\n * level colors to `info` objects. This was previously exposed\n * as { colorize: true } to transports in `winston < 3.0.0`.\n */\nmodule.exports = opts => new Colorizer(opts);\n\n//\n// Attach the Colorizer for registration purposes\n//\nmodule.exports.Colorizer\n  = module.exports.Format\n  = Colorizer;\n", "'use strict';\n\nconst { Colorizer } = require('./colorize');\n\n/*\n * Simple method to register colors with a simpler require\n * path within the module.\n */\nmodule.exports = config => {\n  Colorizer.addColors(config.colors || config);\n  return config;\n};\n", "'use strict';\n\nconst format = require('./format');\n\n/*\n * function align (info)\n * Returns a new instance of the align Format which adds a `\\t`\n * delimiter before the message to properly align it in the same place.\n * It was previously { align: true } in winston < 3.0.0\n */\nmodule.exports = format(info => {\n  info.message = `\\t${info.message}`;\n  return info;\n});\n", "/* eslint no-undefined: 0 */\n'use strict';\n\nconst format = require('./format');\nconst { LEVEL, MESSAGE } = require('triple-beam');\n\n/*\n * function errors (info)\n * If the `message` property of the `info` object is an instance of `Error`,\n * replace the `Error` object its own `message` property.\n *\n * Optionally, the Error's `stack` and/or `cause` properties can also be appended to the `info` object.\n */\nmodule.exports = format((einfo, { stack, cause }) => {\n  if (einfo instanceof Error) {\n    const info = Object.assign({}, einfo, {\n      level: einfo.level,\n      [LEVEL]: einfo[LEVEL] || einfo.level,\n      message: einfo.message,\n      [MESSAGE]: einfo[MESSAGE] || einfo.message\n    });\n\n    if (stack) info.stack = einfo.stack;\n    if (cause) info.cause = einfo.cause;\n    return info;\n  }\n\n  if (!(einfo.message instanceof Error)) return einfo;\n\n  // Assign all enumerable properties and the\n  // message property from the error provided.\n  const err = einfo.message;\n  Object.assign(einfo, err);\n  einfo.message = err.message;\n  einfo[MESSAGE] = err.message;\n\n  // Assign the stack and/or cause if requested.\n  if (stack) einfo.stack = err.stack;\n  if (cause) einfo.cause = err.cause;\n  return einfo;\n});\n", "/* eslint no-unused-vars: 0 */\n'use strict';\n\nconst { configs, LEVEL, MESSAGE } = require('triple-beam');\n\nclass Padder {\n  constructor(opts = { levels: configs.npm.levels }) {\n    this.paddings = Padder.paddingForLevels(opts.levels, opts.filler);\n    this.options = opts;\n  }\n\n  /**\n   * Returns the maximum length of keys in the specified `levels` Object.\n   * @param  {Object} levels Set of all levels to calculate longest level against.\n   * @returns {Number} Maximum length of the longest level string.\n   */\n  static getLongestLevel(levels) {\n    const lvls = Object.keys(levels).map(level => level.length);\n    return Math.max(...lvls);\n  }\n\n  /**\n   * Returns the padding for the specified `level` assuming that the\n   * maximum length of all levels it's associated with is `maxLength`.\n   * @param  {String} level Level to calculate padding for.\n   * @param  {String} filler Repeatable text to use for padding.\n   * @param  {Number} maxLength Length of the longest level\n   * @returns {String} Padding string for the `level`\n   */\n  static paddingForLevel(level, filler, maxLength) {\n    const targetLen = maxLength + 1 - level.length;\n    const rep = Math.floor(targetLen / filler.length);\n    const padding = `${filler}${filler.repeat(rep)}`;\n    return padding.slice(0, targetLen);\n  }\n\n  /**\n   * Returns an object with the string paddings for the given `levels`\n   * using the specified `filler`.\n   * @param  {Object} levels Set of all levels to calculate padding for.\n   * @param  {String} filler Repeatable text to use for padding.\n   * @returns {Object} Mapping of level to desired padding.\n   */\n  static paddingForLevels(levels, filler = ' ') {\n    const maxLength = Padder.getLongestLevel(levels);\n    return Object.keys(levels).reduce((acc, level) => {\n      acc[level] = Padder.paddingForLevel(level, filler, maxLength);\n      return acc;\n    }, {});\n  }\n\n  /**\n   * Prepends the padding onto the `message` based on the `LEVEL` of\n   * the `info`. This is based on the behavior of `winston@2` which also\n   * prepended the level onto the message.\n   *\n   * See: https://github.com/winstonjs/winston/blob/2.x/lib/winston/logger.js#L198-L201\n   *\n   * @param  {Info} info Logform info object\n   * @param  {Object} opts Options passed along to this instance.\n   * @returns {Info} Modified logform info object.\n   */\n  transform(info, opts) {\n    info.message = `${this.paddings[info[LEVEL]]}${info.message}`;\n    if (info[MESSAGE]) {\n      info[MESSAGE] = `${this.paddings[info[LEVEL]]}${info[MESSAGE]}`;\n    }\n\n    return info;\n  }\n}\n\n/*\n * function padLevels (info)\n * Returns a new instance of the padLevels Format which pads\n * levels to be the same length. This was previously exposed as\n * { padLevels: true } to transports in `winston < 3.0.0`.\n */\nmodule.exports = opts => new Padder(opts);\n\nmodule.exports.Padder\n  = module.exports.Format\n  = Padder;\n", "'use strict';\n\nconst { Colorizer } = require('./colorize');\nconst { Padder } = require('./pad-levels');\nconst { configs, MESSAGE } = require('triple-beam');\n\n\n/**\n * Cli format class that handles initial state for a a separate\n * Colorizer and Padder instance.\n */\nclass CliFormat {\n  constructor(opts = {}) {\n    if (!opts.levels) {\n      opts.levels = configs.cli.levels;\n    }\n\n    this.colorizer = new Colorizer(opts);\n    this.padder = new Padder(opts);\n    this.options = opts;\n  }\n\n  /*\n   * function transform (info, opts)\n   * Attempts to both:\n   * 1. Pad the { level }\n   * 2. Colorize the { level, message }\n   * of the given `logform` info object depending on the `opts`.\n   */\n  transform(info, opts) {\n    this.colorizer.transform(\n      this.padder.transform(info, opts),\n      opts\n    );\n\n    info[MESSAGE] = `${info.level}:${info.message}`;\n    return info;\n  }\n}\n\n/*\n * function cli (opts)\n * Returns a new instance of the CLI format that turns a log\n * `info` object into the same format previously available\n * in `winston.cli()` in `winston < 3.0.0`.\n */\nmodule.exports = opts => new CliFormat(opts);\n\n//\n// Attach the CliFormat for registration purposes\n//\nmodule.exports.Format = CliFormat;\n", "'use strict';\n\nconst format = require('./format');\n\n/*\n * function cascade(formats)\n * Returns a function that invokes the `._format` function in-order\n * for the specified set of `formats`. In this manner we say that Formats\n * are \"pipe-like\", but not a pure pumpify implementation. Since there is no back\n * pressure we can remove all of the \"readable\" plumbing in Node streams.\n */\nfunction cascade(formats) {\n  if (!formats.every(isValidFormat)) {\n    return;\n  }\n\n  return info => {\n    let obj = info;\n    for (let i = 0; i < formats.length; i++) {\n      obj = formats[i].transform(obj, formats[i].options);\n      if (!obj) {\n        return false;\n      }\n    }\n\n    return obj;\n  };\n}\n\n/*\n * function isValidFormat(format)\n * If the format does not define a `transform` function throw an error\n * with more detailed usage.\n */\nfunction isValidFormat(fmt) {\n  if (typeof fmt.transform !== 'function') {\n    throw new Error([\n      'No transform function found on format. Did you create a format instance?',\n      'const myFormat = format(formatFn);',\n      'const instance = myFormat();'\n    ].join('\\n'));\n  }\n\n  return true;\n}\n\n/*\n * function combine (info)\n * Returns a new instance of the combine Format which combines the specified\n * formats into a new format. This is similar to a pipe-chain in transform streams.\n * We choose to combine the prototypes this way because there is no back pressure in\n * an in-memory transform chain.\n */\nmodule.exports = (...formats) => {\n  const combinedFormat = format(cascade(formats));\n  const instance = combinedFormat();\n  instance.Format = combinedFormat.Format;\n  return instance;\n};\n\n//\n// Export the cascade method for use in cli and other\n// combined formats that should not be assumed to be\n// singletons.\n//\nmodule.exports.cascade = cascade;\n", "'use strict'\n\nconst { hasOwnProperty } = Object.prototype\n\nconst stringify = configure()\n\n// @ts-expect-error\nstringify.configure = configure\n// @ts-expect-error\nstringify.stringify = stringify\n\n// @ts-expect-error\nstringify.default = stringify\n\n// @ts-expect-error used for named export\nexports.stringify = stringify\n// @ts-expect-error used for named export\nexports.configure = configure\n\nmodule.exports = stringify\n\n// eslint-disable-next-line no-control-regex\nconst strEscapeSequencesRegExp = /[\\u0000-\\u001f\\u0022\\u005c\\ud800-\\udfff]/\n\n// Escape C0 control characters, double quotes, the backslash and every code\n// unit with a numeric value in the inclusive range 0xD800 to 0xDFFF.\nfunction strEscape (str) {\n  // Some magic numbers that worked out fine while benchmarking with v8 8.0\n  if (str.length < 5000 && !strEscapeSequencesRegExp.test(str)) {\n    return `\"${str}\"`\n  }\n  return JSON.stringify(str)\n}\n\nfunction sort (array, comparator) {\n  // Insertion sort is very efficient for small input sizes, but it has a bad\n  // worst case complexity. Thus, use native array sort for bigger values.\n  if (array.length > 2e2 || comparator) {\n    return array.sort(comparator)\n  }\n  for (let i = 1; i < array.length; i++) {\n    const currentValue = array[i]\n    let position = i\n    while (position !== 0 && array[position - 1] > currentValue) {\n      array[position] = array[position - 1]\n      position--\n    }\n    array[position] = currentValue\n  }\n  return array\n}\n\nconst typedArrayPrototypeGetSymbolToStringTag =\n  Object.getOwnPropertyDescriptor(\n    Object.getPrototypeOf(\n      Object.getPrototypeOf(\n        new Int8Array()\n      )\n    ),\n    Symbol.toStringTag\n  ).get\n\nfunction isTypedArrayWithEntries (value) {\n  return typedArrayPrototypeGetSymbolToStringTag.call(value) !== undefined && value.length !== 0\n}\n\nfunction stringifyTypedArray (array, separator, maximumBreadth) {\n  if (array.length < maximumBreadth) {\n    maximumBreadth = array.length\n  }\n  const whitespace = separator === ',' ? '' : ' '\n  let res = `\"0\":${whitespace}${array[0]}`\n  for (let i = 1; i < maximumBreadth; i++) {\n    res += `${separator}\"${i}\":${whitespace}${array[i]}`\n  }\n  return res\n}\n\nfunction getCircularValueOption (options) {\n  if (hasOwnProperty.call(options, 'circularValue')) {\n    const circularValue = options.circularValue\n    if (typeof circularValue === 'string') {\n      return `\"${circularValue}\"`\n    }\n    if (circularValue == null) {\n      return circularValue\n    }\n    if (circularValue === Error || circularValue === TypeError) {\n      return {\n        toString () {\n          throw new TypeError('Converting circular structure to JSON')\n        }\n      }\n    }\n    throw new TypeError('The \"circularValue\" argument must be of type string or the value null or undefined')\n  }\n  return '\"[Circular]\"'\n}\n\nfunction getDeterministicOption (options) {\n  let value\n  if (hasOwnProperty.call(options, 'deterministic')) {\n    value = options.deterministic\n    if (typeof value !== 'boolean' && typeof value !== 'function') {\n      throw new TypeError('The \"deterministic\" argument must be of type boolean or comparator function')\n    }\n  }\n  return value === undefined ? true : value\n}\n\nfunction getBooleanOption (options, key) {\n  let value\n  if (hasOwnProperty.call(options, key)) {\n    value = options[key]\n    if (typeof value !== 'boolean') {\n      throw new TypeError(`The \"${key}\" argument must be of type boolean`)\n    }\n  }\n  return value === undefined ? true : value\n}\n\nfunction getPositiveIntegerOption (options, key) {\n  let value\n  if (hasOwnProperty.call(options, key)) {\n    value = options[key]\n    if (typeof value !== 'number') {\n      throw new TypeError(`The \"${key}\" argument must be of type number`)\n    }\n    if (!Number.isInteger(value)) {\n      throw new TypeError(`The \"${key}\" argument must be an integer`)\n    }\n    if (value < 1) {\n      throw new RangeError(`The \"${key}\" argument must be >= 1`)\n    }\n  }\n  return value === undefined ? Infinity : value\n}\n\nfunction getItemCount (number) {\n  if (number === 1) {\n    return '1 item'\n  }\n  return `${number} items`\n}\n\nfunction getUniqueReplacerSet (replacerArray) {\n  const replacerSet = new Set()\n  for (const value of replacerArray) {\n    if (typeof value === 'string' || typeof value === 'number') {\n      replacerSet.add(String(value))\n    }\n  }\n  return replacerSet\n}\n\nfunction getStrictOption (options) {\n  if (hasOwnProperty.call(options, 'strict')) {\n    const value = options.strict\n    if (typeof value !== 'boolean') {\n      throw new TypeError('The \"strict\" argument must be of type boolean')\n    }\n    if (value) {\n      return (value) => {\n        let message = `Object can not safely be stringified. Received type ${typeof value}`\n        if (typeof value !== 'function') message += ` (${value.toString()})`\n        throw new Error(message)\n      }\n    }\n  }\n}\n\nfunction configure (options) {\n  options = { ...options }\n  const fail = getStrictOption(options)\n  if (fail) {\n    if (options.bigint === undefined) {\n      options.bigint = false\n    }\n    if (!('circularValue' in options)) {\n      options.circularValue = Error\n    }\n  }\n  const circularValue = getCircularValueOption(options)\n  const bigint = getBooleanOption(options, 'bigint')\n  const deterministic = getDeterministicOption(options)\n  const comparator = typeof deterministic === 'function' ? deterministic : undefined\n  const maximumDepth = getPositiveIntegerOption(options, 'maximumDepth')\n  const maximumBreadth = getPositiveIntegerOption(options, 'maximumBreadth')\n\n  function stringifyFnReplacer (key, parent, stack, replacer, spacer, indentation) {\n    let value = parent[key]\n\n    if (typeof value === 'object' && value !== null && typeof value.toJSON === 'function') {\n      value = value.toJSON(key)\n    }\n    value = replacer.call(parent, key, value)\n\n    switch (typeof value) {\n      case 'string':\n        return strEscape(value)\n      case 'object': {\n        if (value === null) {\n          return 'null'\n        }\n        if (stack.indexOf(value) !== -1) {\n          return circularValue\n        }\n\n        let res = ''\n        let join = ','\n        const originalIndentation = indentation\n\n        if (Array.isArray(value)) {\n          if (value.length === 0) {\n            return '[]'\n          }\n          if (maximumDepth < stack.length + 1) {\n            return '\"[Array]\"'\n          }\n          stack.push(value)\n          if (spacer !== '') {\n            indentation += spacer\n            res += `\\n${indentation}`\n            join = `,\\n${indentation}`\n          }\n          const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n          let i = 0\n          for (; i < maximumValuesToStringify - 1; i++) {\n            const tmp = stringifyFnReplacer(String(i), value, stack, replacer, spacer, indentation)\n            res += tmp !== undefined ? tmp : 'null'\n            res += join\n          }\n          const tmp = stringifyFnReplacer(String(i), value, stack, replacer, spacer, indentation)\n          res += tmp !== undefined ? tmp : 'null'\n          if (value.length - 1 > maximumBreadth) {\n            const removedKeys = value.length - maximumBreadth - 1\n            res += `${join}\"... ${getItemCount(removedKeys)} not stringified\"`\n          }\n          if (spacer !== '') {\n            res += `\\n${originalIndentation}`\n          }\n          stack.pop()\n          return `[${res}]`\n        }\n\n        let keys = Object.keys(value)\n        const keyLength = keys.length\n        if (keyLength === 0) {\n          return '{}'\n        }\n        if (maximumDepth < stack.length + 1) {\n          return '\"[Object]\"'\n        }\n        let whitespace = ''\n        let separator = ''\n        if (spacer !== '') {\n          indentation += spacer\n          join = `,\\n${indentation}`\n          whitespace = ' '\n        }\n        const maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth)\n        if (deterministic && !isTypedArrayWithEntries(value)) {\n          keys = sort(keys, comparator)\n        }\n        stack.push(value)\n        for (let i = 0; i < maximumPropertiesToStringify; i++) {\n          const key = keys[i]\n          const tmp = stringifyFnReplacer(key, value, stack, replacer, spacer, indentation)\n          if (tmp !== undefined) {\n            res += `${separator}${strEscape(key)}:${whitespace}${tmp}`\n            separator = join\n          }\n        }\n        if (keyLength > maximumBreadth) {\n          const removedKeys = keyLength - maximumBreadth\n          res += `${separator}\"...\":${whitespace}\"${getItemCount(removedKeys)} not stringified\"`\n          separator = join\n        }\n        if (spacer !== '' && separator.length > 1) {\n          res = `\\n${indentation}${res}\\n${originalIndentation}`\n        }\n        stack.pop()\n        return `{${res}}`\n      }\n      case 'number':\n        return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n      case 'boolean':\n        return value === true ? 'true' : 'false'\n      case 'undefined':\n        return undefined\n      case 'bigint':\n        if (bigint) {\n          return String(value)\n        }\n        // fallthrough\n      default:\n        return fail ? fail(value) : undefined\n    }\n  }\n\n  function stringifyArrayReplacer (key, value, stack, replacer, spacer, indentation) {\n    if (typeof value === 'object' && value !== null && typeof value.toJSON === 'function') {\n      value = value.toJSON(key)\n    }\n\n    switch (typeof value) {\n      case 'string':\n        return strEscape(value)\n      case 'object': {\n        if (value === null) {\n          return 'null'\n        }\n        if (stack.indexOf(value) !== -1) {\n          return circularValue\n        }\n\n        const originalIndentation = indentation\n        let res = ''\n        let join = ','\n\n        if (Array.isArray(value)) {\n          if (value.length === 0) {\n            return '[]'\n          }\n          if (maximumDepth < stack.length + 1) {\n            return '\"[Array]\"'\n          }\n          stack.push(value)\n          if (spacer !== '') {\n            indentation += spacer\n            res += `\\n${indentation}`\n            join = `,\\n${indentation}`\n          }\n          const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n          let i = 0\n          for (; i < maximumValuesToStringify - 1; i++) {\n            const tmp = stringifyArrayReplacer(String(i), value[i], stack, replacer, spacer, indentation)\n            res += tmp !== undefined ? tmp : 'null'\n            res += join\n          }\n          const tmp = stringifyArrayReplacer(String(i), value[i], stack, replacer, spacer, indentation)\n          res += tmp !== undefined ? tmp : 'null'\n          if (value.length - 1 > maximumBreadth) {\n            const removedKeys = value.length - maximumBreadth - 1\n            res += `${join}\"... ${getItemCount(removedKeys)} not stringified\"`\n          }\n          if (spacer !== '') {\n            res += `\\n${originalIndentation}`\n          }\n          stack.pop()\n          return `[${res}]`\n        }\n        stack.push(value)\n        let whitespace = ''\n        if (spacer !== '') {\n          indentation += spacer\n          join = `,\\n${indentation}`\n          whitespace = ' '\n        }\n        let separator = ''\n        for (const key of replacer) {\n          const tmp = stringifyArrayReplacer(key, value[key], stack, replacer, spacer, indentation)\n          if (tmp !== undefined) {\n            res += `${separator}${strEscape(key)}:${whitespace}${tmp}`\n            separator = join\n          }\n        }\n        if (spacer !== '' && separator.length > 1) {\n          res = `\\n${indentation}${res}\\n${originalIndentation}`\n        }\n        stack.pop()\n        return `{${res}}`\n      }\n      case 'number':\n        return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n      case 'boolean':\n        return value === true ? 'true' : 'false'\n      case 'undefined':\n        return undefined\n      case 'bigint':\n        if (bigint) {\n          return String(value)\n        }\n        // fallthrough\n      default:\n        return fail ? fail(value) : undefined\n    }\n  }\n\n  function stringifyIndent (key, value, stack, spacer, indentation) {\n    switch (typeof value) {\n      case 'string':\n        return strEscape(value)\n      case 'object': {\n        if (value === null) {\n          return 'null'\n        }\n        if (typeof value.toJSON === 'function') {\n          value = value.toJSON(key)\n          // Prevent calling `toJSON` again.\n          if (typeof value !== 'object') {\n            return stringifyIndent(key, value, stack, spacer, indentation)\n          }\n          if (value === null) {\n            return 'null'\n          }\n        }\n        if (stack.indexOf(value) !== -1) {\n          return circularValue\n        }\n        const originalIndentation = indentation\n\n        if (Array.isArray(value)) {\n          if (value.length === 0) {\n            return '[]'\n          }\n          if (maximumDepth < stack.length + 1) {\n            return '\"[Array]\"'\n          }\n          stack.push(value)\n          indentation += spacer\n          let res = `\\n${indentation}`\n          const join = `,\\n${indentation}`\n          const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n          let i = 0\n          for (; i < maximumValuesToStringify - 1; i++) {\n            const tmp = stringifyIndent(String(i), value[i], stack, spacer, indentation)\n            res += tmp !== undefined ? tmp : 'null'\n            res += join\n          }\n          const tmp = stringifyIndent(String(i), value[i], stack, spacer, indentation)\n          res += tmp !== undefined ? tmp : 'null'\n          if (value.length - 1 > maximumBreadth) {\n            const removedKeys = value.length - maximumBreadth - 1\n            res += `${join}\"... ${getItemCount(removedKeys)} not stringified\"`\n          }\n          res += `\\n${originalIndentation}`\n          stack.pop()\n          return `[${res}]`\n        }\n\n        let keys = Object.keys(value)\n        const keyLength = keys.length\n        if (keyLength === 0) {\n          return '{}'\n        }\n        if (maximumDepth < stack.length + 1) {\n          return '\"[Object]\"'\n        }\n        indentation += spacer\n        const join = `,\\n${indentation}`\n        let res = ''\n        let separator = ''\n        let maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth)\n        if (isTypedArrayWithEntries(value)) {\n          res += stringifyTypedArray(value, join, maximumBreadth)\n          keys = keys.slice(value.length)\n          maximumPropertiesToStringify -= value.length\n          separator = join\n        }\n        if (deterministic) {\n          keys = sort(keys, comparator)\n        }\n        stack.push(value)\n        for (let i = 0; i < maximumPropertiesToStringify; i++) {\n          const key = keys[i]\n          const tmp = stringifyIndent(key, value[key], stack, spacer, indentation)\n          if (tmp !== undefined) {\n            res += `${separator}${strEscape(key)}: ${tmp}`\n            separator = join\n          }\n        }\n        if (keyLength > maximumBreadth) {\n          const removedKeys = keyLength - maximumBreadth\n          res += `${separator}\"...\": \"${getItemCount(removedKeys)} not stringified\"`\n          separator = join\n        }\n        if (separator !== '') {\n          res = `\\n${indentation}${res}\\n${originalIndentation}`\n        }\n        stack.pop()\n        return `{${res}}`\n      }\n      case 'number':\n        return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n      case 'boolean':\n        return value === true ? 'true' : 'false'\n      case 'undefined':\n        return undefined\n      case 'bigint':\n        if (bigint) {\n          return String(value)\n        }\n        // fallthrough\n      default:\n        return fail ? fail(value) : undefined\n    }\n  }\n\n  function stringifySimple (key, value, stack) {\n    switch (typeof value) {\n      case 'string':\n        return strEscape(value)\n      case 'object': {\n        if (value === null) {\n          return 'null'\n        }\n        if (typeof value.toJSON === 'function') {\n          value = value.toJSON(key)\n          // Prevent calling `toJSON` again\n          if (typeof value !== 'object') {\n            return stringifySimple(key, value, stack)\n          }\n          if (value === null) {\n            return 'null'\n          }\n        }\n        if (stack.indexOf(value) !== -1) {\n          return circularValue\n        }\n\n        let res = ''\n\n        const hasLength = value.length !== undefined\n        if (hasLength && Array.isArray(value)) {\n          if (value.length === 0) {\n            return '[]'\n          }\n          if (maximumDepth < stack.length + 1) {\n            return '\"[Array]\"'\n          }\n          stack.push(value)\n          const maximumValuesToStringify = Math.min(value.length, maximumBreadth)\n          let i = 0\n          for (; i < maximumValuesToStringify - 1; i++) {\n            const tmp = stringifySimple(String(i), value[i], stack)\n            res += tmp !== undefined ? tmp : 'null'\n            res += ','\n          }\n          const tmp = stringifySimple(String(i), value[i], stack)\n          res += tmp !== undefined ? tmp : 'null'\n          if (value.length - 1 > maximumBreadth) {\n            const removedKeys = value.length - maximumBreadth - 1\n            res += `,\"... ${getItemCount(removedKeys)} not stringified\"`\n          }\n          stack.pop()\n          return `[${res}]`\n        }\n\n        let keys = Object.keys(value)\n        const keyLength = keys.length\n        if (keyLength === 0) {\n          return '{}'\n        }\n        if (maximumDepth < stack.length + 1) {\n          return '\"[Object]\"'\n        }\n        let separator = ''\n        let maximumPropertiesToStringify = Math.min(keyLength, maximumBreadth)\n        if (hasLength && isTypedArrayWithEntries(value)) {\n          res += stringifyTypedArray(value, ',', maximumBreadth)\n          keys = keys.slice(value.length)\n          maximumPropertiesToStringify -= value.length\n          separator = ','\n        }\n        if (deterministic) {\n          keys = sort(keys, comparator)\n        }\n        stack.push(value)\n        for (let i = 0; i < maximumPropertiesToStringify; i++) {\n          const key = keys[i]\n          const tmp = stringifySimple(key, value[key], stack)\n          if (tmp !== undefined) {\n            res += `${separator}${strEscape(key)}:${tmp}`\n            separator = ','\n          }\n        }\n        if (keyLength > maximumBreadth) {\n          const removedKeys = keyLength - maximumBreadth\n          res += `${separator}\"...\":\"${getItemCount(removedKeys)} not stringified\"`\n        }\n        stack.pop()\n        return `{${res}}`\n      }\n      case 'number':\n        return isFinite(value) ? String(value) : fail ? fail(value) : 'null'\n      case 'boolean':\n        return value === true ? 'true' : 'false'\n      case 'undefined':\n        return undefined\n      case 'bigint':\n        if (bigint) {\n          return String(value)\n        }\n        // fallthrough\n      default:\n        return fail ? fail(value) : undefined\n    }\n  }\n\n  function stringify (value, replacer, space) {\n    if (arguments.length > 1) {\n      let spacer = ''\n      if (typeof space === 'number') {\n        spacer = ' '.repeat(Math.min(space, 10))\n      } else if (typeof space === 'string') {\n        spacer = space.slice(0, 10)\n      }\n      if (replacer != null) {\n        if (typeof replacer === 'function') {\n          return stringifyFnReplacer('', { '': value }, [], replacer, spacer, '')\n        }\n        if (Array.isArray(replacer)) {\n          return stringifyArrayReplacer('', value, [], getUniqueReplacerSet(replacer), spacer, '')\n        }\n      }\n      if (spacer.length !== 0) {\n        return stringifyIndent('', value, [], spacer, '')\n      }\n    }\n    return stringifySimple('', value, [])\n  }\n\n  return stringify\n}\n", "'use strict';\n\nconst format = require('./format');\nconst { MESSAGE } = require('triple-beam');\nconst stringify = require('safe-stable-stringify');\n\n/*\n * function replacer (key, value)\n * Handles proper stringification of Buffer and bigint output.\n */\nfunction replacer(key, value) {\n  // safe-stable-stringify does support BigInt, however, it doesn't wrap the value in quotes.\n  // Leading to a loss in fidelity if the resulting string is parsed.\n  // It would also be a breaking change for logform.\n  if (typeof value === 'bigint')\n    return value.toString();\n  return value;\n}\n\n/*\n * function json (info)\n * Returns a new instance of the JSON format that turns a log `info`\n * object into pure JSON. This was previously exposed as { json: true }\n * to transports in `winston < 3.0.0`.\n */\nmodule.exports = format((info, opts) => {\n  const jsonStringify = stringify.configure(opts);\n  info[MESSAGE] = jsonStringify(info, opts.replacer || replacer, opts.space);\n  return info;\n});\n", "'use strict';\n\nconst format = require('./format');\n\n/*\n * function label (info)\n * Returns a new instance of the label Format which adds the specified\n * `opts.label` before the message. This was previously exposed as\n * { label: 'my label' } to transports in `winston < 3.0.0`.\n */\nmodule.exports = format((info, opts) => {\n  if (opts.message) {\n    info.message = `[${opts.label}] ${info.message}`;\n    return info;\n  }\n\n  info.label = opts.label;\n  return info;\n});\n", "'use strict';\n\nconst format = require('./format');\nconst { MESSAGE } = require('triple-beam');\nconst jsonStringify = require('safe-stable-stringify');\n\n/*\n * function logstash (info)\n * Returns a new instance of the LogStash Format that turns a\n * log `info` object into pure JSON with the appropriate logstash\n * options. This was previously exposed as { logstash: true }\n * to transports in `winston < 3.0.0`.\n */\nmodule.exports = format(info => {\n  const logstash = {};\n  if (info.message) {\n    logstash['@message'] = info.message;\n    delete info.message;\n  }\n\n  if (info.timestamp) {\n    logstash['@timestamp'] = info.timestamp;\n    delete info.timestamp;\n  }\n\n  logstash['@fields'] = info;\n  info[MESSAGE] = jsonStringify(logstash);\n  return info;\n});\n", "'use strict';\n\nconst format = require('./format');\n\nfunction fillExcept(info, fillExceptKeys, metadataKey) {\n  const savedKeys = fillExceptKeys.reduce((acc, key) => {\n    acc[key] = info[key];\n    delete info[key];\n    return acc;\n  }, {});\n  const metadata = Object.keys(info).reduce((acc, key) => {\n    acc[key] = info[key];\n    delete info[key];\n    return acc;\n  }, {});\n\n  Object.assign(info, savedKeys, {\n    [metadataKey]: metadata\n  });\n  return info;\n}\n\nfunction fillWith(info, fillWithKeys, metadataKey) {\n  info[metadataKey] = fillWithKeys.reduce((acc, key) => {\n    acc[key] = info[key];\n    delete info[key];\n    return acc;\n  }, {});\n  return info;\n}\n\n/**\n * Adds in a \"metadata\" object to collect extraneous data, similar to the metadata\n * object in winston 2.x.\n */\nmodule.exports = format((info, opts = {}) => {\n  let metadataKey = 'metadata';\n  if (opts.key) {\n    metadataKey = opts.key;\n  }\n\n  let fillExceptKeys = [];\n  if (!opts.fillExcept && !opts.fillWith) {\n    fillExceptKeys.push('level');\n    fillExceptKeys.push('message');\n  }\n\n  if (opts.fillExcept) {\n    fillExceptKeys = opts.fillExcept;\n  }\n\n  if (fillExceptKeys.length > 0) {\n    return fillExcept(info, fillExceptKeys, metadataKey);\n  }\n\n  if (opts.fillWith) {\n    return fillWith(info, opts.fillWith, metadataKey);\n  }\n\n  return info;\n});\n", "/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n *  - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n  options = options || {};\n  var type = typeof val;\n  if (type === 'string' && val.length > 0) {\n    return parse(val);\n  } else if (type === 'number' && isFinite(val)) {\n    return options.long ? fmtLong(val) : fmtShort(val);\n  }\n  throw new Error(\n    'val is not a non-empty string or a valid number. val=' +\n      JSON.stringify(val)\n  );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n  str = String(str);\n  if (str.length > 100) {\n    return;\n  }\n  var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n    str\n  );\n  if (!match) {\n    return;\n  }\n  var n = parseFloat(match[1]);\n  var type = (match[2] || 'ms').toLowerCase();\n  switch (type) {\n    case 'years':\n    case 'year':\n    case 'yrs':\n    case 'yr':\n    case 'y':\n      return n * y;\n    case 'weeks':\n    case 'week':\n    case 'w':\n      return n * w;\n    case 'days':\n    case 'day':\n    case 'd':\n      return n * d;\n    case 'hours':\n    case 'hour':\n    case 'hrs':\n    case 'hr':\n    case 'h':\n      return n * h;\n    case 'minutes':\n    case 'minute':\n    case 'mins':\n    case 'min':\n    case 'm':\n      return n * m;\n    case 'seconds':\n    case 'second':\n    case 'secs':\n    case 'sec':\n    case 's':\n      return n * s;\n    case 'milliseconds':\n    case 'millisecond':\n    case 'msecs':\n    case 'msec':\n    case 'ms':\n      return n;\n    default:\n      return undefined;\n  }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n  var msAbs = Math.abs(ms);\n  if (msAbs >= d) {\n    return Math.round(ms / d) + 'd';\n  }\n  if (msAbs >= h) {\n    return Math.round(ms / h) + 'h';\n  }\n  if (msAbs >= m) {\n    return Math.round(ms / m) + 'm';\n  }\n  if (msAbs >= s) {\n    return Math.round(ms / s) + 's';\n  }\n  return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n  var msAbs = Math.abs(ms);\n  if (msAbs >= d) {\n    return plural(ms, msAbs, d, 'day');\n  }\n  if (msAbs >= h) {\n    return plural(ms, msAbs, h, 'hour');\n  }\n  if (msAbs >= m) {\n    return plural(ms, msAbs, m, 'minute');\n  }\n  if (msAbs >= s) {\n    return plural(ms, msAbs, s, 'second');\n  }\n  return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n  var isPlural = msAbs >= n * 1.5;\n  return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n", "'use strict';\n\nconst format = require('./format');\nconst ms = require('ms');\n\n/*\n * function ms (info)\n * Returns an `info` with a `ms` property. The `ms` property holds the Value\n * of the time difference between two calls in milliseconds.\n */\nmodule.exports = format(info => {\n  const curr = +new Date();\n  this.diff = curr - (this.prevTime || curr);\n  this.prevTime = curr;\n  info.ms = `+${ms(this.diff)}`;\n\n  return info;\n});\n", "'use strict';\n\nconst inspect = require('util').inspect;\nconst format = require('./format');\nconst { LEVEL, MESSAGE, SPLAT } = require('triple-beam');\n\n/*\n * function prettyPrint (info)\n * Returns a new instance of the prettyPrint Format that \"prettyPrint\"\n * serializes `info` objects. This was previously exposed as\n * { prettyPrint: true } to transports in `winston < 3.0.0`.\n */\nmodule.exports = format((info, opts = {}) => {\n  //\n  // info[{LEVEL, MESSAGE, SPLAT}] are enumerable here. Since they\n  // are internal, we remove them before util.inspect so they\n  // are not printed.\n  //\n  const stripped = Object.assign({}, info);\n\n  // Remark (indexzero): update this technique in April 2019\n  // when node@6 is EOL\n  delete stripped[LEVEL];\n  delete stripped[MESSAGE];\n  delete stripped[SPLAT];\n\n  info[MESSAGE] = inspect(stripped, false, opts.depth || null, opts.colorize);\n  return info;\n});\n", "'use strict';\n\nconst { MESSAGE } = require('triple-beam');\n\nclass Printf {\n  constructor(templateFn) {\n    this.template = templateFn;\n  }\n\n  transform(info) {\n    info[MESSAGE] = this.template(info);\n    return info;\n  }\n}\n\n/*\n * function printf (templateFn)\n * Returns a new instance of the printf Format that creates an\n * intermediate prototype to store the template string-based formatter\n * function.\n */\nmodule.exports = opts => new Printf(opts);\n\nmodule.exports.Printf\n  = module.exports.Format\n  = Printf;\n", "/* eslint no-undefined: 0 */\n'use strict';\n\nconst format = require('./format');\nconst { MESSAGE } = require('triple-beam');\nconst jsonStringify = require('safe-stable-stringify');\n\n/*\n * function simple (info)\n * Returns a new instance of the simple format TransformStream\n * which writes a simple representation of logs.\n *\n *    const { level, message, splat, ...rest } = info;\n *\n *    ${level}: ${message}                            if rest is empty\n *    ${level}: ${message} ${JSON.stringify(rest)}    otherwise\n */\nmodule.exports = format(info => {\n  const stringifiedRest = jsonStringify(Object.assign({}, info, {\n    level: undefined,\n    message: undefined,\n    splat: undefined\n  }));\n\n  const padding = info.padding && info.padding[info.level] || '';\n  if (stringifiedRest !== '{}') {\n    info[MESSAGE] = `${info.level}:${padding} ${info.message} ${stringifiedRest}`;\n  } else {\n    info[MESSAGE] = `${info.level}:${padding} ${info.message}`;\n  }\n\n  return info;\n});\n", "'use strict';\n\nconst util = require('util');\nconst { SPLAT } = require('triple-beam');\n\n/**\n * Captures the number of format (i.e. %s strings) in a given string.\n * Based on `util.format`, see Node.js source:\n * https://github.com/nodejs/node/blob/b1c8f15c5f169e021f7c46eb7b219de95fe97603/lib/util.js#L201-L230\n * @type {RegExp}\n */\nconst formatRegExp = /%[scdjifoO%]/g;\n\n/**\n * Captures the number of escaped % signs in a format string (i.e. %s strings).\n * @type {RegExp}\n */\nconst escapedPercent = /%%/g;\n\nclass Splatter {\n  constructor(opts) {\n    this.options = opts;\n  }\n\n  /**\n     * Check to see if tokens <= splat.length, assign { splat, meta } into the\n     * `info` accordingly, and write to this instance.\n     *\n     * @param  {Info} info Logform info message.\n     * @param  {String[]} tokens Set of string interpolation tokens.\n     * @returns {Info} Modified info message\n     * @private\n     */\n  _splat(info, tokens) {\n    const msg = info.message;\n    const splat = info[SPLAT] || info.splat || [];\n    const percents = msg.match(escapedPercent);\n    const escapes = percents && percents.length || 0;\n\n    // The expected splat is the number of tokens minus the number of escapes\n    // e.g.\n    // - { expectedSplat: 3 } '%d %s %j'\n    // - { expectedSplat: 5 } '[%s] %d%% %d%% %s %j'\n    //\n    // Any \"meta\" will be arugments in addition to the expected splat size\n    // regardless of type. e.g.\n    //\n    // logger.log('info', '%d%% %s %j', 100, 'wow', { such: 'js' }, { thisIsMeta: true });\n    // would result in splat of four (4), but only three (3) are expected. Therefore:\n    //\n    // extraSplat = 3 - 4 = -1\n    // metas = [100, 'wow', { such: 'js' }, { thisIsMeta: true }].splice(-1, -1 * -1);\n    // splat = [100, 'wow', { such: 'js' }]\n    const expectedSplat = tokens.length - escapes;\n    const extraSplat = expectedSplat - splat.length;\n    const metas = extraSplat < 0\n      ? splat.splice(extraSplat, -1 * extraSplat)\n      : [];\n\n    // Now that { splat } has been separated from any potential { meta }. we\n    // can assign this to the `info` object and write it to our format stream.\n    // If the additional metas are **NOT** objects or **LACK** enumerable properties\n    // you are going to have a bad time.\n    const metalen = metas.length;\n    if (metalen) {\n      for (let i = 0; i < metalen; i++) {\n        Object.assign(info, metas[i]);\n      }\n    }\n\n    info.message = util.format(msg, ...splat);\n    return info;\n  }\n\n  /**\n    * Transforms the `info` message by using `util.format` to complete\n    * any `info.message` provided it has string interpolation tokens.\n    * If no tokens exist then `info` is immutable.\n    *\n    * @param  {Info} info Logform info message.\n    * @param  {Object} opts Options for this instance.\n    * @returns {Info} Modified info message\n    */\n  transform(info) {\n    const msg = info.message;\n    const splat = info[SPLAT] || info.splat;\n\n    // No need to process anything if splat is undefined\n    if (!splat || !splat.length) {\n      return info;\n    }\n\n    // Extract tokens, if none available default to empty array to\n    // ensure consistancy in expected results\n    const tokens = msg && msg.match && msg.match(formatRegExp);\n\n    // This condition will take care of inputs with info[SPLAT]\n    // but no tokens present\n    if (!tokens && (splat || splat.length)) {\n      const metas = splat.length > 1\n        ? splat.splice(0)\n        : splat;\n\n      // Now that { splat } has been separated from any potential { meta }. we\n      // can assign this to the `info` object and write it to our format stream.\n      // If the additional metas are **NOT** objects or **LACK** enumerable properties\n      // you are going to have a bad time.\n      const metalen = metas.length;\n      if (metalen) {\n        for (let i = 0; i < metalen; i++) {\n          Object.assign(info, metas[i]);\n        }\n      }\n\n      return info;\n    }\n\n    if (tokens) {\n      return this._splat(info, tokens);\n    }\n\n    return info;\n  }\n}\n\n/*\n * function splat (info)\n * Returns a new instance of the splat format TransformStream\n * which performs string interpolation from `info` objects. This was\n * previously exposed implicitly in `winston < 3.0.0`.\n */\nmodule.exports = opts => new Splatter(opts);\n", "const token = /d{1,4}|M{1,4}|YY(?:YY)?|S{1,3}|Do|ZZ|Z|([HhMsDm])\\1?|[aA]|\"[^\"]*\"|'[^']*'/g;\nconst twoDigitsOptional = \"\\\\d\\\\d?\";\nconst twoDigits = \"\\\\d\\\\d\";\nconst threeDigits = \"\\\\d{3}\";\nconst fourDigits = \"\\\\d{4}\";\nconst word = \"[^\\\\s]+\";\nconst literal = /\\[([^]*?)\\]/gm;\n\ntype DateInfo = {\n  year: number;\n  month: number;\n  day: number;\n  hour: number;\n  minute: number;\n  second: number;\n  millisecond: number;\n  isPm: number | null;\n  timezoneOffset: number | null;\n};\n\nexport type I18nSettings = {\n  amPm: [string, string];\n  dayNames: Days;\n  dayNamesShort: Days;\n  monthNames: Months;\n  monthNamesShort: Months;\n  DoFn(dayOfMonth: number): string;\n};\n\nexport type I18nSettingsOptional = Partial<I18nSettings>;\n\nexport type Days = [string, string, string, string, string, string, string];\nexport type Months = [\n  string,\n  string,\n  string,\n  string,\n  string,\n  string,\n  string,\n  string,\n  string,\n  string,\n  string,\n  string\n];\n\nfunction shorten<T extends string[]>(arr: T, sLen: number): string[] {\n  const newArr: string[] = [];\n  for (let i = 0, len = arr.length; i < len; i++) {\n    newArr.push(arr[i].substr(0, sLen));\n  }\n  return newArr;\n}\n\nconst monthUpdate = (\n  arrName: \"monthNames\" | \"monthNamesShort\" | \"dayNames\" | \"dayNamesShort\"\n) => (v: string, i18n: I18nSettings): number | null => {\n  const lowerCaseArr = i18n[arrName].map(v => v.toLowerCase());\n  const index = lowerCaseArr.indexOf(v.toLowerCase());\n  if (index > -1) {\n    return index;\n  }\n  return null;\n};\n\nexport function assign<A>(a: A): A;\nexport function assign<A, B>(a: A, b: B): A & B;\nexport function assign<A, B, C>(a: A, b: B, c: C): A & B & C;\nexport function assign<A, B, C, D>(a: A, b: B, c: C, d: D): A & B & C & D;\nexport function assign(origObj: any, ...args: any[]): any {\n  for (const obj of args) {\n    for (const key in obj) {\n      // @ts-ignore ex\n      origObj[key] = obj[key];\n    }\n  }\n  return origObj;\n}\n\nconst dayNames: Days = [\n  \"Sunday\",\n  \"Monday\",\n  \"Tuesday\",\n  \"Wednesday\",\n  \"Thursday\",\n  \"Friday\",\n  \"Saturday\"\n];\nconst monthNames: Months = [\n  \"January\",\n  \"February\",\n  \"March\",\n  \"April\",\n  \"May\",\n  \"June\",\n  \"July\",\n  \"August\",\n  \"September\",\n  \"October\",\n  \"November\",\n  \"December\"\n];\n\nconst monthNamesShort: Months = shorten(monthNames, 3) as Months;\nconst dayNamesShort: Days = shorten(dayNames, 3) as Days;\n\nconst defaultI18n: I18nSettings = {\n  dayNamesShort,\n  dayNames,\n  monthNamesShort,\n  monthNames,\n  amPm: [\"am\", \"pm\"],\n  DoFn(dayOfMonth: number) {\n    return (\n      dayOfMonth +\n      [\"th\", \"st\", \"nd\", \"rd\"][\n        dayOfMonth % 10 > 3\n          ? 0\n          : ((dayOfMonth - (dayOfMonth % 10) !== 10 ? 1 : 0) * dayOfMonth) % 10\n      ]\n    );\n  }\n};\nlet globalI18n = assign({}, defaultI18n);\nconst setGlobalDateI18n = (i18n: I18nSettingsOptional): I18nSettings =>\n  (globalI18n = assign(globalI18n, i18n));\n\nconst regexEscape = (str: string): string =>\n  str.replace(/[|\\\\{()[^$+*?.-]/g, \"\\\\$&\");\n\nconst pad = (val: string | number, len = 2): string => {\n  val = String(val);\n  while (val.length < len) {\n    val = \"0\" + val;\n  }\n  return val;\n};\n\nconst formatFlags: Record<\n  string,\n  (dateObj: Date, i18n: I18nSettings) => string\n> = {\n  D: (dateObj: Date): string => String(dateObj.getDate()),\n  DD: (dateObj: Date): string => pad(dateObj.getDate()),\n  Do: (dateObj: Date, i18n: I18nSettings): string =>\n    i18n.DoFn(dateObj.getDate()),\n  d: (dateObj: Date): string => String(dateObj.getDay()),\n  dd: (dateObj: Date): string => pad(dateObj.getDay()),\n  ddd: (dateObj: Date, i18n: I18nSettings): string =>\n    i18n.dayNamesShort[dateObj.getDay()],\n  dddd: (dateObj: Date, i18n: I18nSettings): string =>\n    i18n.dayNames[dateObj.getDay()],\n  M: (dateObj: Date): string => String(dateObj.getMonth() + 1),\n  MM: (dateObj: Date): string => pad(dateObj.getMonth() + 1),\n  MMM: (dateObj: Date, i18n: I18nSettings): string =>\n    i18n.monthNamesShort[dateObj.getMonth()],\n  MMMM: (dateObj: Date, i18n: I18nSettings): string =>\n    i18n.monthNames[dateObj.getMonth()],\n  YY: (dateObj: Date): string =>\n    pad(String(dateObj.getFullYear()), 4).substr(2),\n  YYYY: (dateObj: Date): string => pad(dateObj.getFullYear(), 4),\n  h: (dateObj: Date): string => String(dateObj.getHours() % 12 || 12),\n  hh: (dateObj: Date): string => pad(dateObj.getHours() % 12 || 12),\n  H: (dateObj: Date): string => String(dateObj.getHours()),\n  HH: (dateObj: Date): string => pad(dateObj.getHours()),\n  m: (dateObj: Date): string => String(dateObj.getMinutes()),\n  mm: (dateObj: Date): string => pad(dateObj.getMinutes()),\n  s: (dateObj: Date): string => String(dateObj.getSeconds()),\n  ss: (dateObj: Date): string => pad(dateObj.getSeconds()),\n  S: (dateObj: Date): string =>\n    String(Math.round(dateObj.getMilliseconds() / 100)),\n  SS: (dateObj: Date): string =>\n    pad(Math.round(dateObj.getMilliseconds() / 10), 2),\n  SSS: (dateObj: Date): string => pad(dateObj.getMilliseconds(), 3),\n  a: (dateObj: Date, i18n: I18nSettings): string =>\n    dateObj.getHours() < 12 ? i18n.amPm[0] : i18n.amPm[1],\n  A: (dateObj: Date, i18n: I18nSettings): string =>\n    dateObj.getHours() < 12\n      ? i18n.amPm[0].toUpperCase()\n      : i18n.amPm[1].toUpperCase(),\n  ZZ(dateObj: Date): string {\n    const offset = dateObj.getTimezoneOffset();\n    return (\n      (offset > 0 ? \"-\" : \"+\") +\n      pad(Math.floor(Math.abs(offset) / 60) * 100 + (Math.abs(offset) % 60), 4)\n    );\n  },\n  Z(dateObj: Date): string {\n    const offset = dateObj.getTimezoneOffset();\n    return (\n      (offset > 0 ? \"-\" : \"+\") +\n      pad(Math.floor(Math.abs(offset) / 60), 2) +\n      \":\" +\n      pad(Math.abs(offset) % 60, 2)\n    );\n  }\n};\n\ntype ParseInfo = [\n  keyof DateInfo,\n  string,\n  ((v: string, i18n: I18nSettings) => number | null)?,\n  string?\n];\nconst monthParse = (v: string): number => +v - 1;\nconst emptyDigits: ParseInfo = [null, twoDigitsOptional];\nconst emptyWord: ParseInfo = [null, word];\nconst amPm: ParseInfo = [\n  \"isPm\",\n  word,\n  (v: string, i18n: I18nSettings): number | null => {\n    const val = v.toLowerCase();\n    if (val === i18n.amPm[0]) {\n      return 0;\n    } else if (val === i18n.amPm[1]) {\n      return 1;\n    }\n    return null;\n  }\n];\nconst timezoneOffset: ParseInfo = [\n  \"timezoneOffset\",\n  \"[^\\\\s]*?[\\\\+\\\\-]\\\\d\\\\d:?\\\\d\\\\d|[^\\\\s]*?Z?\",\n  (v: string): number | null => {\n    const parts = (v + \"\").match(/([+-]|\\d\\d)/gi);\n\n    if (parts) {\n      const minutes = +parts[1] * 60 + parseInt(parts[2], 10);\n      return parts[0] === \"+\" ? minutes : -minutes;\n    }\n\n    return 0;\n  }\n];\nconst parseFlags: Record<string, ParseInfo> = {\n  D: [\"day\", twoDigitsOptional],\n  DD: [\"day\", twoDigits],\n  Do: [\"day\", twoDigitsOptional + word, (v: string): number => parseInt(v, 10)],\n  M: [\"month\", twoDigitsOptional, monthParse],\n  MM: [\"month\", twoDigits, monthParse],\n  YY: [\n    \"year\",\n    twoDigits,\n    (v: string): number => {\n      const now = new Date();\n      const cent = +(\"\" + now.getFullYear()).substr(0, 2);\n      return +(\"\" + (+v > 68 ? cent - 1 : cent) + v);\n    }\n  ],\n  h: [\"hour\", twoDigitsOptional, undefined, \"isPm\"],\n  hh: [\"hour\", twoDigits, undefined, \"isPm\"],\n  H: [\"hour\", twoDigitsOptional],\n  HH: [\"hour\", twoDigits],\n  m: [\"minute\", twoDigitsOptional],\n  mm: [\"minute\", twoDigits],\n  s: [\"second\", twoDigitsOptional],\n  ss: [\"second\", twoDigits],\n  YYYY: [\"year\", fourDigits],\n  S: [\"millisecond\", \"\\\\d\", (v: string): number => +v * 100],\n  SS: [\"millisecond\", twoDigits, (v: string): number => +v * 10],\n  SSS: [\"millisecond\", threeDigits],\n  d: emptyDigits,\n  dd: emptyDigits,\n  ddd: emptyWord,\n  dddd: emptyWord,\n  MMM: [\"month\", word, monthUpdate(\"monthNamesShort\")],\n  MMMM: [\"month\", word, monthUpdate(\"monthNames\")],\n  a: amPm,\n  A: amPm,\n  ZZ: timezoneOffset,\n  Z: timezoneOffset\n};\n\n// Some common format strings\nconst globalMasks: { [key: string]: string } = {\n  default: \"ddd MMM DD YYYY HH:mm:ss\",\n  shortDate: \"M/D/YY\",\n  mediumDate: \"MMM D, YYYY\",\n  longDate: \"MMMM D, YYYY\",\n  fullDate: \"dddd, MMMM D, YYYY\",\n  isoDate: \"YYYY-MM-DD\",\n  isoDateTime: \"YYYY-MM-DDTHH:mm:ssZ\",\n  shortTime: \"HH:mm\",\n  mediumTime: \"HH:mm:ss\",\n  longTime: \"HH:mm:ss.SSS\"\n};\nconst setGlobalDateMasks = (masks: {\n  [key: string]: string;\n}): { [key: string]: string } => assign(globalMasks, masks);\n\n/***\n * Format a date\n * @method format\n * @param {Date|number} dateObj\n * @param {string} mask Format of the date, i.e. 'mm-dd-yy' or 'shortDate'\n * @returns {string} Formatted date string\n */\nconst format = (\n  dateObj: Date,\n  mask: string = globalMasks[\"default\"],\n  i18n: I18nSettingsOptional = {}\n): string => {\n  if (typeof dateObj === \"number\") {\n    dateObj = new Date(dateObj);\n  }\n\n  if (\n    Object.prototype.toString.call(dateObj) !== \"[object Date]\" ||\n    isNaN(dateObj.getTime())\n  ) {\n    throw new Error(\"Invalid Date pass to format\");\n  }\n\n  mask = globalMasks[mask] || mask;\n\n  const literals: string[] = [];\n\n  // Make literals inactive by replacing them with @@@\n  mask = mask.replace(literal, function($0, $1) {\n    literals.push($1);\n    return \"@@@\";\n  });\n\n  const combinedI18nSettings: I18nSettings = assign(\n    assign({}, globalI18n),\n    i18n\n  );\n  // Apply formatting rules\n  mask = mask.replace(token, $0 =>\n    formatFlags[$0](dateObj, combinedI18nSettings)\n  );\n  // Inline literal values back into the formatted value\n  return mask.replace(/@@@/g, () => literals.shift());\n};\n\n/**\n * Parse a date string into a Javascript Date object /\n * @method parse\n * @param {string} dateStr Date string\n * @param {string} format Date parse format\n * @param {i18n} I18nSettingsOptional Full or subset of I18N settings\n * @returns {Date|null} Returns Date object. Returns null what date string is invalid or doesn't match format\n */\nfunction parse(\n  dateStr: string,\n  format: string,\n  i18n: I18nSettingsOptional = {}\n): Date | null {\n  if (typeof format !== \"string\") {\n    throw new Error(\"Invalid format in fecha parse\");\n  }\n\n  // Check to see if the format is actually a mask\n  format = globalMasks[format] || format;\n\n  // Avoid regular expression denial of service, fail early for really long strings\n  // https://www.owasp.org/index.php/Regular_expression_Denial_of_Service_-_ReDoS\n  if (dateStr.length > 1000) {\n    return null;\n  }\n\n  // Default to the beginning of the year.\n  const today = new Date();\n  const dateInfo: DateInfo = {\n    year: today.getFullYear(),\n    month: 0,\n    day: 1,\n    hour: 0,\n    minute: 0,\n    second: 0,\n    millisecond: 0,\n    isPm: null,\n    timezoneOffset: null\n  };\n  const parseInfo: ParseInfo[] = [];\n  const literals: string[] = [];\n\n  // Replace all the literals with @@@. Hopefully a string that won't exist in the format\n  let newFormat = format.replace(literal, ($0, $1) => {\n    literals.push(regexEscape($1));\n    return \"@@@\";\n  });\n  const specifiedFields: { [field: string]: boolean } = {};\n  const requiredFields: { [field: string]: boolean } = {};\n\n  // Change every token that we find into the correct regex\n  newFormat = regexEscape(newFormat).replace(token, $0 => {\n    const info = parseFlags[$0];\n    const [field, regex, , requiredField] = info;\n\n    // Check if the person has specified the same field twice. This will lead to confusing results.\n    if (specifiedFields[field]) {\n      throw new Error(`Invalid format. ${field} specified twice in format`);\n    }\n\n    specifiedFields[field] = true;\n\n    // Check if there are any required fields. For instance, 12 hour time requires AM/PM specified\n    if (requiredField) {\n      requiredFields[requiredField] = true;\n    }\n\n    parseInfo.push(info);\n    return \"(\" + regex + \")\";\n  });\n\n  // Check all the required fields are present\n  Object.keys(requiredFields).forEach(field => {\n    if (!specifiedFields[field]) {\n      throw new Error(\n        `Invalid format. ${field} is required in specified format`\n      );\n    }\n  });\n\n  // Add back all the literals after\n  newFormat = newFormat.replace(/@@@/g, () => literals.shift());\n\n  // Check if the date string matches the format. If it doesn't return null\n  const matches = dateStr.match(new RegExp(newFormat, \"i\"));\n  if (!matches) {\n    return null;\n  }\n\n  const combinedI18nSettings: I18nSettings = assign(\n    assign({}, globalI18n),\n    i18n\n  );\n\n  // For each match, call the parser function for that date part\n  for (let i = 1; i < matches.length; i++) {\n    const [field, , parser] = parseInfo[i - 1];\n    const value = parser\n      ? parser(matches[i], combinedI18nSettings)\n      : +matches[i];\n\n    // If the parser can't make sense of the value, return null\n    if (value == null) {\n      return null;\n    }\n\n    dateInfo[field] = value;\n  }\n\n  if (dateInfo.isPm === 1 && dateInfo.hour != null && +dateInfo.hour !== 12) {\n    dateInfo.hour = +dateInfo.hour + 12;\n  } else if (dateInfo.isPm === 0 && +dateInfo.hour === 12) {\n    dateInfo.hour = 0;\n  }\n\n  let dateTZ: Date;\n  if (dateInfo.timezoneOffset == null) {\n    dateTZ = new Date(\n      dateInfo.year,\n      dateInfo.month,\n      dateInfo.day,\n      dateInfo.hour,\n      dateInfo.minute,\n      dateInfo.second,\n      dateInfo.millisecond\n    );\n    const validateFields: [\n      \"month\" | \"day\" | \"hour\" | \"minute\" | \"second\",\n      \"getMonth\" | \"getDate\" | \"getHours\" | \"getMinutes\" | \"getSeconds\"\n    ][] = [\n      [\"month\", \"getMonth\"],\n      [\"day\", \"getDate\"],\n      [\"hour\", \"getHours\"],\n      [\"minute\", \"getMinutes\"],\n      [\"second\", \"getSeconds\"]\n    ];\n    for (let i = 0, len = validateFields.length; i < len; i++) {\n      // Check to make sure the date field is within the allowed range. Javascript dates allows values\n      // outside the allowed range. If the values don't match the value was invalid\n      if (\n        specifiedFields[validateFields[i][0]] &&\n        dateInfo[validateFields[i][0]] !== dateTZ[validateFields[i][1]]()\n      ) {\n        return null;\n      }\n    }\n  } else {\n    dateTZ = new Date(\n      Date.UTC(\n        dateInfo.year,\n        dateInfo.month,\n        dateInfo.day,\n        dateInfo.hour,\n        dateInfo.minute - dateInfo.timezoneOffset,\n        dateInfo.second,\n        dateInfo.millisecond\n      )\n    );\n\n    // We can't validate dates in another timezone unfortunately. Do a basic check instead\n    if (\n      dateInfo.month > 11 ||\n      dateInfo.month < 0 ||\n      dateInfo.day > 31 ||\n      dateInfo.day < 1 ||\n      dateInfo.hour > 23 ||\n      dateInfo.hour < 0 ||\n      dateInfo.minute > 59 ||\n      dateInfo.minute < 0 ||\n      dateInfo.second > 59 ||\n      dateInfo.second < 0\n    ) {\n      return null;\n    }\n  }\n\n  // Don't allow invalid dates\n\n  return dateTZ;\n}\nexport default {\n  format,\n  parse,\n  defaultI18n,\n  setGlobalDateI18n,\n  setGlobalDateMasks\n};\nexport { format, parse, defaultI18n, setGlobalDateI18n, setGlobalDateMasks };\n", "'use strict';\n\nconst fecha = require('fecha');\nconst format = require('./format');\n\n/*\n * function timestamp (info)\n * Returns a new instance of the timestamp Format which adds a timestamp\n * to the info. It was previously available in winston < 3.0.0 as:\n *\n * - { timestamp: true }             // `new Date.toISOString()`\n * - { timestamp: function:String }  // Value returned by `timestamp()`\n */\nmodule.exports = format((info, opts = {}) => {\n  if (opts.format) {\n    info.timestamp = typeof opts.format === 'function'\n      ? opts.format()\n      : fecha.format(new Date(), opts.format);\n  }\n\n  if (!info.timestamp) {\n    info.timestamp = new Date().toISOString();\n  }\n\n  if (opts.alias) {\n    info[opts.alias] = info.timestamp;\n  }\n\n  return info;\n});\n", "'use strict';\n\nconst colors = require('@colors/colors/safe');\nconst format = require('./format');\nconst { MESSAGE } = require('triple-beam');\n\n/*\n * function uncolorize (info)\n * Returns a new instance of the uncolorize Format that strips colors\n * from `info` objects. This was previously exposed as { stripColors: true }\n * to transports in `winston < 3.0.0`.\n */\nmodule.exports = format((info, opts) => {\n  if (opts.level !== false) {\n    info.level = colors.strip(info.level);\n  }\n\n  if (opts.message\u00A0!== false) {\n    info.message = colors.strip(String(info.message));\n  }\n\n  if (opts.raw !== false && info[MESSAGE]) {\n    info[MESSAGE] = colors.strip(String(info[MESSAGE]));\n  }\n\n  return info;\n});\n", "'use strict';\n\n/*\n * @api public\n * @property {function} format\n * Both the construction method and set of exposed\n * formats.\n */\nconst format = exports.format = require('./format');\n\n/*\n * @api public\n * @method {function} levels\n * Registers the specified levels with logform.\n */\nexports.levels = require('./levels');\n\n/*\n * @api private\n * method {function} exposeFormat\n * Exposes a sub-format on the main format object\n * as a lazy-loaded getter.\n */\nfunction exposeFormat(name, requireFormat) {\n  Object.defineProperty(format, name, {\n    get() {\n      return requireFormat();\n    },\n    configurable: true\n  });\n}\n\n//\n// Setup all transports as lazy-loaded getters.\n//\nexposeFormat('align', function () { return require('./align'); });\nexposeFormat('errors', function () { return require('./errors'); });\nexposeFormat('cli', function () { return require('./cli'); });\nexposeFormat('combine', function () { return require('./combine'); });\nexposeFormat('colorize', function () { return require('./colorize'); });\nexposeFormat('json', function () { return require('./json'); });\nexposeFormat('label', function () { return require('./label'); });\nexposeFormat('logstash', function () { return require('./logstash'); });\nexposeFormat('metadata', function () { return require('./metadata'); });\nexposeFormat('ms', function () { return require('./ms'); });\nexposeFormat('padLevels', function () { return require('./pad-levels'); });\nexposeFormat('prettyPrint', function () { return require('./pretty-print'); });\nexposeFormat('printf', function () { return require('./printf'); });\nexposeFormat('simple', function () { return require('./simple'); });\nexposeFormat('splat', function () { return require('./splat'); });\nexposeFormat('timestamp', function () { return require('./timestamp'); });\nexposeFormat('uncolorize', function () { return require('./uncolorize'); });\n", "/**\n * common.js: Internal helper and utility functions for winston.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst { format } = require('util');\n\n/**\n * Set of simple deprecation notices and a way to expose them for a set of\n * properties.\n * @type {Object}\n * @private\n */\nexports.warn = {\n  deprecated(prop) {\n    return () => {\n      throw new Error(format('{ %s } was removed in winston@3.0.0.', prop));\n    };\n  },\n  useFormat(prop) {\n    return () => {\n      throw new Error([\n        format('{ %s } was removed in winston@3.0.0.', prop),\n        'Use a custom winston.format = winston.format(function) instead.'\n      ].join('\\n'));\n    };\n  },\n  forFunctions(obj, type, props) {\n    props.forEach(prop => {\n      obj[prop] = exports.warn[type](prop);\n    });\n  },\n  forProperties(obj, type, props) {\n    props.forEach(prop => {\n      const notice = exports.warn[type](prop);\n      Object.defineProperty(obj, prop, {\n        get: notice,\n        set: notice\n      });\n    });\n  }\n};\n", "{\n  \"name\": \"winston\",\n  \"description\": \"A logger for just about everything.\",\n  \"version\": \"3.18.3\",\n  \"author\": \"Charlie Robbins <charlie.robbins@gmail.com>\",\n  \"maintainers\": [\n    \"David Hyde <dabh@alumni.stanford.edu>\"\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/winstonjs/winston.git\"\n  },\n  \"keywords\": [\n    \"winston\",\n    \"logger\",\n    \"logging\",\n    \"logs\",\n    \"sysadmin\",\n    \"bunyan\",\n    \"pino\",\n    \"loglevel\",\n    \"tools\",\n    \"json\",\n    \"stream\"\n  ],\n  \"dependencies\": {\n    \"@dabh/diagnostics\": \"^2.0.8\",\n    \"@colors/colors\": \"^1.6.0\",\n    \"async\": \"^3.2.3\",\n    \"is-stream\": \"^2.0.0\",\n    \"logform\": \"^2.7.0\",\n    \"one-time\": \"^1.0.0\",\n    \"readable-stream\": \"^3.4.0\",\n    \"safe-stable-stringify\": \"^2.3.1\",\n    \"stack-trace\": \"0.0.x\",\n    \"triple-beam\": \"^1.3.0\",\n    \"winston-transport\": \"^4.9.0\"\n  },\n  \"devDependencies\": {\n    \"@babel/cli\": \"^7.23.9\",\n    \"@babel/core\": \"^7.24.0\",\n    \"@babel/preset-env\": \"^7.24.0\",\n    \"@dabh/eslint-config-populist\": \"^4.4.0\",\n    \"@types/node\": \"^20.11.24\",\n    \"abstract-winston-transport\": \"^0.5.1\",\n    \"assume\": \"^2.2.0\",\n    \"cross-spawn-async\": \"^2.2.5\",\n    \"eslint\": \"^8.57.0\",\n    \"hock\": \"^1.4.1\",\n    \"mocha\": \"^10.3.0\",\n    \"nyc\": \"^17.1.0\",\n    \"rimraf\": \"5.0.1\",\n    \"split2\": \"^4.1.0\",\n    \"std-mocks\": \"^2.0.0\",\n    \"through2\": \"^4.0.2\",\n    \"winston-compat\": \"^0.1.5\"\n  },\n  \"main\": \"./lib/winston.js\",\n  \"browser\": \"./dist/winston\",\n  \"types\": \"./index.d.ts\",\n  \"scripts\": {\n    \"lint\": \"eslint lib/*.js lib/winston/*.js lib/winston/**/*.js --resolve-plugins-relative-to ./node_modules/@dabh/eslint-config-populist\",\n    \"test\": \"rimraf test/fixtures/logs/* && mocha\",\n    \"test:coverage\": \"nyc npm run test:unit\",\n    \"test:unit\": \"mocha test/unit\",\n    \"test:integration\": \"mocha test/integration\",\n    \"build\": \"rimraf dist && babel lib -d dist\",\n    \"prepublishOnly\": \"npm run build\"\n  },\n  \"engines\": {\n    \"node\": \">= 12.0.0\"\n  },\n  \"license\": \"MIT\"\n}\n", "\n/**\n * For Node.js, simply re-export the core `util.deprecate` function.\n */\n\nmodule.exports = require('util').deprecate;\n", "module.exports = require('stream');\n", "'use strict';\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n  var _this = this;\n  var readableDestroyed = this._readableState && this._readableState.destroyed;\n  var writableDestroyed = this._writableState && this._writableState.destroyed;\n  if (readableDestroyed || writableDestroyed) {\n    if (cb) {\n      cb(err);\n    } else if (err) {\n      if (!this._writableState) {\n        process.nextTick(emitErrorNT, this, err);\n      } else if (!this._writableState.errorEmitted) {\n        this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorNT, this, err);\n      }\n    }\n    return this;\n  }\n\n  // we set destroyed to true before firing error callbacks in order\n  // to make it re-entrance safe in case destroy() is called within callbacks\n\n  if (this._readableState) {\n    this._readableState.destroyed = true;\n  }\n\n  // if this is a duplex stream mark the writable part as destroyed as well\n  if (this._writableState) {\n    this._writableState.destroyed = true;\n  }\n  this._destroy(err || null, function (err) {\n    if (!cb && err) {\n      if (!_this._writableState) {\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else if (!_this._writableState.errorEmitted) {\n        _this._writableState.errorEmitted = true;\n        process.nextTick(emitErrorAndCloseNT, _this, err);\n      } else {\n        process.nextTick(emitCloseNT, _this);\n      }\n    } else if (cb) {\n      process.nextTick(emitCloseNT, _this);\n      cb(err);\n    } else {\n      process.nextTick(emitCloseNT, _this);\n    }\n  });\n  return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n  emitErrorNT(self, err);\n  emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n  if (self._writableState && !self._writableState.emitClose) return;\n  if (self._readableState && !self._readableState.emitClose) return;\n  self.emit('close');\n}\nfunction undestroy() {\n  if (this._readableState) {\n    this._readableState.destroyed = false;\n    this._readableState.reading = false;\n    this._readableState.ended = false;\n    this._readableState.endEmitted = false;\n  }\n  if (this._writableState) {\n    this._writableState.destroyed = false;\n    this._writableState.ended = false;\n    this._writableState.ending = false;\n    this._writableState.finalCalled = false;\n    this._writableState.prefinished = false;\n    this._writableState.finished = false;\n    this._writableState.errorEmitted = false;\n  }\n}\nfunction emitErrorNT(self, err) {\n  self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n  // We have tests that rely on errors being emitted\n  // in the same tick, so changing this is semver major.\n  // For now when you opt-in to autoDestroy we allow\n  // the error to be emitted nextTick. In a future\n  // semver major update we should change the default to this.\n\n  var rState = stream._readableState;\n  var wState = stream._writableState;\n  if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n  destroy: destroy,\n  undestroy: undestroy,\n  errorOrDestroy: errorOrDestroy\n};", "'use strict';\n\nconst codes = {};\n\nfunction createErrorType(code, message, Base) {\n  if (!Base) {\n    Base = Error\n  }\n\n  function getMessage (arg1, arg2, arg3) {\n    if (typeof message === 'string') {\n      return message\n    } else {\n      return message(arg1, arg2, arg3)\n    }\n  }\n\n  class NodeError extends Base {\n    constructor (arg1, arg2, arg3) {\n      super(getMessage(arg1, arg2, arg3));\n    }\n  }\n\n  NodeError.prototype.name = Base.name;\n  NodeError.prototype.code = code;\n\n  codes[code] = NodeError;\n}\n\n// https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\nfunction oneOf(expected, thing) {\n  if (Array.isArray(expected)) {\n    const len = expected.length;\n    expected = expected.map((i) => String(i));\n    if (len > 2) {\n      return `one of ${thing} ${expected.slice(0, len - 1).join(', ')}, or ` +\n             expected[len - 1];\n    } else if (len === 2) {\n      return `one of ${thing} ${expected[0]} or ${expected[1]}`;\n    } else {\n      return `of ${thing} ${expected[0]}`;\n    }\n  } else {\n    return `of ${thing} ${String(expected)}`;\n  }\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\nfunction startsWith(str, search, pos) {\n\treturn str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\nfunction endsWith(str, search, this_len) {\n\tif (this_len === undefined || this_len > str.length) {\n\t\tthis_len = str.length;\n\t}\n\treturn str.substring(this_len - search.length, this_len) === search;\n}\n\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\nfunction includes(str, search, start) {\n  if (typeof start !== 'number') {\n    start = 0;\n  }\n\n  if (start + search.length > str.length) {\n    return false;\n  } else {\n    return str.indexOf(search, start) !== -1;\n  }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n  return 'The value \"' + value + '\" is invalid for option \"' + name + '\"'\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n  // determiner: 'must be' or 'must not be'\n  let determiner;\n  if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n    determiner = 'must not be';\n    expected = expected.replace(/^not /, '');\n  } else {\n    determiner = 'must be';\n  }\n\n  let msg;\n  if (endsWith(name, ' argument')) {\n    // For cases like 'first argument'\n    msg = `The ${name} ${determiner} ${oneOf(expected, 'type')}`;\n  } else {\n    const type = includes(name, '.') ? 'property' : 'argument';\n    msg = `The \"${name}\" ${type} ${determiner} ${oneOf(expected, 'type')}`;\n  }\n\n  msg += `. Received type ${typeof actual}`;\n  return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n  return 'The ' + name + ' method is not implemented'\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n  return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n  return 'Unknown encoding: ' + arg\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\n\nmodule.exports.codes = codes;\n", "'use strict';\n\nvar ERR_INVALID_OPT_VALUE = require('../../../errors').codes.ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n  return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n  var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n  if (hwm != null) {\n    if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n      var name = isDuplex ? duplexKey : 'highWaterMark';\n      throw new ERR_INVALID_OPT_VALUE(name, hwm);\n    }\n    return Math.floor(hwm);\n  }\n\n  // Default value\n  return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n  getHighWaterMark: getHighWaterMark\n};", "if (typeof Object.create === 'function') {\n  // implementation from standard node.js 'util' module\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      ctor.prototype = Object.create(superCtor.prototype, {\n        constructor: {\n          value: ctor,\n          enumerable: false,\n          writable: true,\n          configurable: true\n        }\n      })\n    }\n  };\n} else {\n  // old school shim for old browsers\n  module.exports = function inherits(ctor, superCtor) {\n    if (superCtor) {\n      ctor.super_ = superCtor\n      var TempCtor = function () {}\n      TempCtor.prototype = superCtor.prototype\n      ctor.prototype = new TempCtor()\n      ctor.prototype.constructor = ctor\n    }\n  }\n}\n", "try {\n  var util = require('util');\n  /* istanbul ignore next */\n  if (typeof util.inherits !== 'function') throw '';\n  module.exports = util.inherits;\n} catch (e) {\n  /* istanbul ignore next */\n  module.exports = require('./inherits_browser.js');\n}\n", "'use strict';\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar _require = require('buffer'),\n  Buffer = _require.Buffer;\nvar _require2 = require('util'),\n  inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || 'inspect';\nfunction copyBuffer(src, target, offset) {\n  Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n  function BufferList() {\n    _classCallCheck(this, BufferList);\n    this.head = null;\n    this.tail = null;\n    this.length = 0;\n  }\n  _createClass(BufferList, [{\n    key: \"push\",\n    value: function push(v) {\n      var entry = {\n        data: v,\n        next: null\n      };\n      if (this.length > 0) this.tail.next = entry;else this.head = entry;\n      this.tail = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"unshift\",\n    value: function unshift(v) {\n      var entry = {\n        data: v,\n        next: this.head\n      };\n      if (this.length === 0) this.tail = entry;\n      this.head = entry;\n      ++this.length;\n    }\n  }, {\n    key: \"shift\",\n    value: function shift() {\n      if (this.length === 0) return;\n      var ret = this.head.data;\n      if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n      --this.length;\n      return ret;\n    }\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      this.head = this.tail = null;\n      this.length = 0;\n    }\n  }, {\n    key: \"join\",\n    value: function join(s) {\n      if (this.length === 0) return '';\n      var p = this.head;\n      var ret = '' + p.data;\n      while (p = p.next) ret += s + p.data;\n      return ret;\n    }\n  }, {\n    key: \"concat\",\n    value: function concat(n) {\n      if (this.length === 0) return Buffer.alloc(0);\n      var ret = Buffer.allocUnsafe(n >>> 0);\n      var p = this.head;\n      var i = 0;\n      while (p) {\n        copyBuffer(p.data, ret, i);\n        i += p.data.length;\n        p = p.next;\n      }\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes or characters from the buffered data.\n  }, {\n    key: \"consume\",\n    value: function consume(n, hasStrings) {\n      var ret;\n      if (n < this.head.data.length) {\n        // `slice` is the same for buffers and strings.\n        ret = this.head.data.slice(0, n);\n        this.head.data = this.head.data.slice(n);\n      } else if (n === this.head.data.length) {\n        // First chunk is a perfect match.\n        ret = this.shift();\n      } else {\n        // Result spans more than one buffer.\n        ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n      }\n      return ret;\n    }\n  }, {\n    key: \"first\",\n    value: function first() {\n      return this.head.data;\n    }\n\n    // Consumes a specified amount of characters from the buffered data.\n  }, {\n    key: \"_getString\",\n    value: function _getString(n) {\n      var p = this.head;\n      var c = 1;\n      var ret = p.data;\n      n -= ret.length;\n      while (p = p.next) {\n        var str = p.data;\n        var nb = n > str.length ? str.length : n;\n        if (nb === str.length) ret += str;else ret += str.slice(0, n);\n        n -= nb;\n        if (n === 0) {\n          if (nb === str.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = str.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Consumes a specified amount of bytes from the buffered data.\n  }, {\n    key: \"_getBuffer\",\n    value: function _getBuffer(n) {\n      var ret = Buffer.allocUnsafe(n);\n      var p = this.head;\n      var c = 1;\n      p.data.copy(ret);\n      n -= p.data.length;\n      while (p = p.next) {\n        var buf = p.data;\n        var nb = n > buf.length ? buf.length : n;\n        buf.copy(ret, ret.length - n, 0, nb);\n        n -= nb;\n        if (n === 0) {\n          if (nb === buf.length) {\n            ++c;\n            if (p.next) this.head = p.next;else this.head = this.tail = null;\n          } else {\n            this.head = p;\n            p.data = buf.slice(nb);\n          }\n          break;\n        }\n        ++c;\n      }\n      this.length -= c;\n      return ret;\n    }\n\n    // Make sure the linked list only shows the minimal necessary information.\n  }, {\n    key: custom,\n    value: function value(_, options) {\n      return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n        // Only inspect one level.\n        depth: 0,\n        // It should not recurse.\n        customInspect: false\n      }));\n    }\n  }]);\n  return BufferList;\n}();", "/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n  for (var key in src) {\n    dst[key] = src[key]\n  }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n  module.exports = buffer\n} else {\n  // Copy properties from require('buffer')\n  copyProps(buffer, exports)\n  exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n  if (typeof arg === 'number') {\n    throw new TypeError('Argument must not be a number')\n  }\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  var buf = Buffer(size)\n  if (fill !== undefined) {\n    if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n  } else {\n    buf.fill(0)\n  }\n  return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return buffer.SlowBuffer(size)\n}\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n  encoding = '' + encoding;\n  switch (encoding && encoding.toLowerCase()) {\n    case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n      return true;\n    default:\n      return false;\n  }\n};\n\nfunction _normalizeEncoding(enc) {\n  if (!enc) return 'utf8';\n  var retried;\n  while (true) {\n    switch (enc) {\n      case 'utf8':\n      case 'utf-8':\n        return 'utf8';\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return 'utf16le';\n      case 'latin1':\n      case 'binary':\n        return 'latin1';\n      case 'base64':\n      case 'ascii':\n      case 'hex':\n        return enc;\n      default:\n        if (retried) return; // undefined\n        enc = ('' + enc).toLowerCase();\n        retried = true;\n    }\n  }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n  var nenc = _normalizeEncoding(enc);\n  if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n  return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n  this.encoding = normalizeEncoding(encoding);\n  var nb;\n  switch (this.encoding) {\n    case 'utf16le':\n      this.text = utf16Text;\n      this.end = utf16End;\n      nb = 4;\n      break;\n    case 'utf8':\n      this.fillLast = utf8FillLast;\n      nb = 4;\n      break;\n    case 'base64':\n      this.text = base64Text;\n      this.end = base64End;\n      nb = 3;\n      break;\n    default:\n      this.write = simpleWrite;\n      this.end = simpleEnd;\n      return;\n  }\n  this.lastNeed = 0;\n  this.lastTotal = 0;\n  this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n  if (buf.length === 0) return '';\n  var r;\n  var i;\n  if (this.lastNeed) {\n    r = this.fillLast(buf);\n    if (r === undefined) return '';\n    i = this.lastNeed;\n    this.lastNeed = 0;\n  } else {\n    i = 0;\n  }\n  if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n  return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n  this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n  if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n  return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n  var j = buf.length - 1;\n  if (j < i) return 0;\n  var nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 1;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 2;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) {\n      if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n    }\n    return nb;\n  }\n  return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n  if ((buf[0] & 0xC0) !== 0x80) {\n    self.lastNeed = 0;\n    return '\\ufffd';\n  }\n  if (self.lastNeed > 1 && buf.length > 1) {\n    if ((buf[1] & 0xC0) !== 0x80) {\n      self.lastNeed = 1;\n      return '\\ufffd';\n    }\n    if (self.lastNeed > 2 && buf.length > 2) {\n      if ((buf[2] & 0xC0) !== 0x80) {\n        self.lastNeed = 2;\n        return '\\ufffd';\n      }\n    }\n  }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n  var p = this.lastTotal - this.lastNeed;\n  var r = utf8CheckExtraBytes(this, buf, p);\n  if (r !== undefined) return r;\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, p, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, p, 0, buf.length);\n  this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n  var total = utf8CheckIncomplete(this, buf, i);\n  if (!this.lastNeed) return buf.toString('utf8', i);\n  this.lastTotal = total;\n  var end = buf.length - (total - this.lastNeed);\n  buf.copy(this.lastChar, 0, end);\n  return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + '\\ufffd';\n  return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n  if ((buf.length - i) % 2 === 0) {\n    var r = buf.toString('utf16le', i);\n    if (r) {\n      var c = r.charCodeAt(r.length - 1);\n      if (c >= 0xD800 && c <= 0xDBFF) {\n        this.lastNeed = 2;\n        this.lastTotal = 4;\n        this.lastChar[0] = buf[buf.length - 2];\n        this.lastChar[1] = buf[buf.length - 1];\n        return r.slice(0, -1);\n      }\n    }\n    return r;\n  }\n  this.lastNeed = 1;\n  this.lastTotal = 2;\n  this.lastChar[0] = buf[buf.length - 1];\n  return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) {\n    var end = this.lastTotal - this.lastNeed;\n    return r + this.lastChar.toString('utf16le', 0, end);\n  }\n  return r;\n}\n\nfunction base64Text(buf, i) {\n  var n = (buf.length - i) % 3;\n  if (n === 0) return buf.toString('base64', i);\n  this.lastNeed = 3 - n;\n  this.lastTotal = 3;\n  if (n === 1) {\n    this.lastChar[0] = buf[buf.length - 1];\n  } else {\n    this.lastChar[0] = buf[buf.length - 2];\n    this.lastChar[1] = buf[buf.length - 1];\n  }\n  return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n  return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n  return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n  return buf && buf.length ? this.write(buf) : '';\n}", "// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar ERR_STREAM_PREMATURE_CLOSE = require('../../../errors').codes.ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    callback.apply(this, args);\n  };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n  if (typeof opts === 'function') return eos(stream, null, opts);\n  if (!opts) opts = {};\n  callback = once(callback || noop);\n  var readable = opts.readable || opts.readable !== false && stream.readable;\n  var writable = opts.writable || opts.writable !== false && stream.writable;\n  var onlegacyfinish = function onlegacyfinish() {\n    if (!stream.writable) onfinish();\n  };\n  var writableEnded = stream._writableState && stream._writableState.finished;\n  var onfinish = function onfinish() {\n    writable = false;\n    writableEnded = true;\n    if (!readable) callback.call(stream);\n  };\n  var readableEnded = stream._readableState && stream._readableState.endEmitted;\n  var onend = function onend() {\n    readable = false;\n    readableEnded = true;\n    if (!writable) callback.call(stream);\n  };\n  var onerror = function onerror(err) {\n    callback.call(stream, err);\n  };\n  var onclose = function onclose() {\n    var err;\n    if (readable && !readableEnded) {\n      if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n    if (writable && !writableEnded) {\n      if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n      return callback.call(stream, err);\n    }\n  };\n  var onrequest = function onrequest() {\n    stream.req.on('finish', onfinish);\n  };\n  if (isRequest(stream)) {\n    stream.on('complete', onfinish);\n    stream.on('abort', onclose);\n    if (stream.req) onrequest();else stream.on('request', onrequest);\n  } else if (writable && !stream._writableState) {\n    // legacy streams\n    stream.on('end', onlegacyfinish);\n    stream.on('close', onlegacyfinish);\n  }\n  stream.on('end', onend);\n  stream.on('finish', onfinish);\n  if (opts.error !== false) stream.on('error', onerror);\n  stream.on('close', onclose);\n  return function () {\n    stream.removeListener('complete', onfinish);\n    stream.removeListener('abort', onclose);\n    stream.removeListener('request', onrequest);\n    if (stream.req) stream.req.removeListener('finish', onfinish);\n    stream.removeListener('end', onlegacyfinish);\n    stream.removeListener('close', onlegacyfinish);\n    stream.removeListener('finish', onfinish);\n    stream.removeListener('end', onend);\n    stream.removeListener('error', onerror);\n    stream.removeListener('close', onclose);\n  };\n}\nmodule.exports = eos;", "'use strict';\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = require('./end-of-stream');\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n  return {\n    value: value,\n    done: done\n  };\n}\nfunction readAndResolve(iter) {\n  var resolve = iter[kLastResolve];\n  if (resolve !== null) {\n    var data = iter[kStream].read();\n    // we defer if data is null\n    // we can be expecting either 'end' or\n    // 'error'\n    if (data !== null) {\n      iter[kLastPromise] = null;\n      iter[kLastResolve] = null;\n      iter[kLastReject] = null;\n      resolve(createIterResult(data, false));\n    }\n  }\n}\nfunction onReadable(iter) {\n  // we wait for the next tick, because it might\n  // emit an error with process.nextTick\n  process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n  return function (resolve, reject) {\n    lastPromise.then(function () {\n      if (iter[kEnded]) {\n        resolve(createIterResult(undefined, true));\n        return;\n      }\n      iter[kHandlePromise](resolve, reject);\n    }, reject);\n  };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n  get stream() {\n    return this[kStream];\n  },\n  next: function next() {\n    var _this = this;\n    // if we have detected an error in the meanwhile\n    // reject straight away\n    var error = this[kError];\n    if (error !== null) {\n      return Promise.reject(error);\n    }\n    if (this[kEnded]) {\n      return Promise.resolve(createIterResult(undefined, true));\n    }\n    if (this[kStream].destroyed) {\n      // We need to defer via nextTick because if .destroy(err) is\n      // called, the error will be emitted via nextTick, and\n      // we cannot guarantee that there is no error lingering around\n      // waiting to be emitted.\n      return new Promise(function (resolve, reject) {\n        process.nextTick(function () {\n          if (_this[kError]) {\n            reject(_this[kError]);\n          } else {\n            resolve(createIterResult(undefined, true));\n          }\n        });\n      });\n    }\n\n    // if we have multiple next() calls\n    // we will wait for the previous Promise to finish\n    // this logic is optimized to support for await loops,\n    // where next() is only called once at a time\n    var lastPromise = this[kLastPromise];\n    var promise;\n    if (lastPromise) {\n      promise = new Promise(wrapForNext(lastPromise, this));\n    } else {\n      // fast path needed to support multiple this.push()\n      // without triggering the next() queue\n      var data = this[kStream].read();\n      if (data !== null) {\n        return Promise.resolve(createIterResult(data, false));\n      }\n      promise = new Promise(this[kHandlePromise]);\n    }\n    this[kLastPromise] = promise;\n    return promise;\n  }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n  return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n  var _this2 = this;\n  // destroy(err, cb) is a private API\n  // we can guarantee we have that here, because we control the\n  // Readable class this is attached to\n  return new Promise(function (resolve, reject) {\n    _this2[kStream].destroy(null, function (err) {\n      if (err) {\n        reject(err);\n        return;\n      }\n      resolve(createIterResult(undefined, true));\n    });\n  });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n  var _Object$create;\n  var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n    value: stream,\n    writable: true\n  }), _defineProperty(_Object$create, kLastResolve, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kLastReject, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kError, {\n    value: null,\n    writable: true\n  }), _defineProperty(_Object$create, kEnded, {\n    value: stream._readableState.endEmitted,\n    writable: true\n  }), _defineProperty(_Object$create, kHandlePromise, {\n    value: function value(resolve, reject) {\n      var data = iterator[kStream].read();\n      if (data) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        resolve(createIterResult(data, false));\n      } else {\n        iterator[kLastResolve] = resolve;\n        iterator[kLastReject] = reject;\n      }\n    },\n    writable: true\n  }), _Object$create));\n  iterator[kLastPromise] = null;\n  finished(stream, function (err) {\n    if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n      var reject = iterator[kLastReject];\n      // reject if we are waiting for data in the Promise\n      // returned by next() and store the error\n      if (reject !== null) {\n        iterator[kLastPromise] = null;\n        iterator[kLastResolve] = null;\n        iterator[kLastReject] = null;\n        reject(err);\n      }\n      iterator[kError] = err;\n      return;\n    }\n    var resolve = iterator[kLastResolve];\n    if (resolve !== null) {\n      iterator[kLastPromise] = null;\n      iterator[kLastResolve] = null;\n      iterator[kLastReject] = null;\n      resolve(createIterResult(undefined, true));\n    }\n    iterator[kEnded] = true;\n  });\n  stream.on('readable', onReadable.bind(null, iterator));\n  return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;", "'use strict';\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar ERR_INVALID_ARG_TYPE = require('../../../errors').codes.ERR_INVALID_ARG_TYPE;\nfunction from(Readable, iterable, opts) {\n  var iterator;\n  if (iterable && typeof iterable.next === 'function') {\n    iterator = iterable;\n  } else if (iterable && iterable[Symbol.asyncIterator]) iterator = iterable[Symbol.asyncIterator]();else if (iterable && iterable[Symbol.iterator]) iterator = iterable[Symbol.iterator]();else throw new ERR_INVALID_ARG_TYPE('iterable', ['Iterable'], iterable);\n  var readable = new Readable(_objectSpread({\n    objectMode: true\n  }, opts));\n  // Reading boolean to protect against _read\n  // being called before last iteration completion.\n  var reading = false;\n  readable._read = function () {\n    if (!reading) {\n      reading = true;\n      next();\n    }\n  };\n  function next() {\n    return _next2.apply(this, arguments);\n  }\n  function _next2() {\n    _next2 = _asyncToGenerator(function* () {\n      try {\n        var _yield$iterator$next = yield iterator.next(),\n          value = _yield$iterator$next.value,\n          done = _yield$iterator$next.done;\n        if (done) {\n          readable.push(null);\n        } else if (readable.push(yield value)) {\n          next();\n        } else {\n          reading = false;\n        }\n      } catch (err) {\n        readable.destroy(err);\n      }\n    });\n    return _next2.apply(this, arguments);\n  }\n  return readable;\n}\nmodule.exports = from;\n", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nmodule.exports = Readable;\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nReadable.ReadableState = ReadableState;\n\n/*<replacement>*/\nvar EE = require('events').EventEmitter;\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n  return emitter.listeners(type).length;\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/*<replacement>*/\nvar debugUtil = require('util');\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n  debug = debugUtil.debuglog('stream');\n} else {\n  debug = function debug() {};\n}\n/*</replacement>*/\n\nvar BufferList = require('./internal/streams/buffer_list');\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n  ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n  ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\nrequire('inherits')(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n  // Sadly this is not cacheable as some libraries bundle their own\n  // event emitter implementation with them.\n  if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n  // This is a hack to make sure that our error handler is attached before any\n  // userland ones.  NEVER DO THIS. This is here only because this code needs\n  // to continue to work with older versions of Node.js that do not include\n  // the prependListener() method. The goal is to eventually remove this hack.\n  if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream.\n  // These options can be provided separately as readableXXX and writableXXX.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag. Used to make read(n) ignore n and to\n  // make all the buffer merging and length checks go away\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n  // the point at which it stops calling _read() to fill the buffer\n  // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n  this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n  // A linked list is used to store data chunks instead of an array because the\n  // linked list can remove elements from the beginning faster than\n  // array.shift()\n  this.buffer = new BufferList();\n  this.length = 0;\n  this.pipes = null;\n  this.pipesCount = 0;\n  this.flowing = null;\n  this.ended = false;\n  this.endEmitted = false;\n  this.reading = false;\n\n  // a flag to be able to tell if the event 'readable'/'data' is emitted\n  // immediately, or on a later tick.  We set this to true at first, because\n  // any actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first read call.\n  this.sync = true;\n\n  // whenever we return null, then we set a flag to say\n  // that we're awaiting a 'readable' event emission.\n  this.needReadable = false;\n  this.emittedReadable = false;\n  this.readableListening = false;\n  this.resumeScheduled = false;\n  this.paused = true;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'end' (and potentially 'finish')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // the number of writers that are awaiting a drain event in .pipe()s\n  this.awaitDrain = 0;\n\n  // if true, a maybeReadMore has been scheduled\n  this.readingMore = false;\n  this.decoder = null;\n  this.encoding = null;\n  if (options.encoding) {\n    if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n    this.decoder = new StringDecoder(options.encoding);\n    this.encoding = options.encoding;\n  }\n}\nfunction Readable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n  if (!(this instanceof Readable)) return new Readable(options);\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the ReadableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  this._readableState = new ReadableState(options, this, isDuplex);\n\n  // legacy\n  this.readable = true;\n  if (options) {\n    if (typeof options.read === 'function') this._read = options.read;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n  }\n  Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._readableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n  }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n  cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n  var state = this._readableState;\n  var skipChunkCheck;\n  if (!state.objectMode) {\n    if (typeof chunk === 'string') {\n      encoding = encoding || state.defaultEncoding;\n      if (encoding !== state.encoding) {\n        chunk = Buffer.from(chunk, encoding);\n        encoding = '';\n      }\n      skipChunkCheck = true;\n    }\n  } else {\n    skipChunkCheck = true;\n  }\n  return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n  return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n  debug('readableAddChunk', chunk);\n  var state = stream._readableState;\n  if (chunk === null) {\n    state.reading = false;\n    onEofChunk(stream, state);\n  } else {\n    var er;\n    if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n    if (er) {\n      errorOrDestroy(stream, er);\n    } else if (state.objectMode || chunk && chunk.length > 0) {\n      if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n        chunk = _uint8ArrayToBuffer(chunk);\n      }\n      if (addToFront) {\n        if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n      } else if (state.ended) {\n        errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n      } else if (state.destroyed) {\n        return false;\n      } else {\n        state.reading = false;\n        if (state.decoder && !encoding) {\n          chunk = state.decoder.write(chunk);\n          if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n        } else {\n          addChunk(stream, state, chunk, false);\n        }\n      }\n    } else if (!addToFront) {\n      state.reading = false;\n      maybeReadMore(stream, state);\n    }\n  }\n\n  // We can push more data if we are below the highWaterMark.\n  // Also, if we have no data yet, we can stand some more bytes.\n  // This is to work around cases where hwm=0, such as the repl.\n  return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n  if (state.flowing && state.length === 0 && !state.sync) {\n    state.awaitDrain = 0;\n    stream.emit('data', chunk);\n  } else {\n    // update the buffer info.\n    state.length += state.objectMode ? 1 : chunk.length;\n    if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n    if (state.needReadable) emitReadable(stream);\n  }\n  maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n  var er;\n  if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n  }\n  return er;\n}\nReadable.prototype.isPaused = function () {\n  return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n  if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n  var decoder = new StringDecoder(enc);\n  this._readableState.decoder = decoder;\n  // If setEncoding(null), decoder.encoding equals utf8\n  this._readableState.encoding = this._readableState.decoder.encoding;\n\n  // Iterate over current buffer to convert already stored Buffers:\n  var p = this._readableState.buffer.head;\n  var content = '';\n  while (p !== null) {\n    content += decoder.write(p.data);\n    p = p.next;\n  }\n  this._readableState.buffer.clear();\n  if (content !== '') this._readableState.buffer.push(content);\n  this._readableState.length = content.length;\n  return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n  if (n >= MAX_HWM) {\n    // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n    n = MAX_HWM;\n  } else {\n    // Get the next highest power of 2 to prevent increasing hwm excessively in\n    // tiny amounts\n    n--;\n    n |= n >>> 1;\n    n |= n >>> 2;\n    n |= n >>> 4;\n    n |= n >>> 8;\n    n |= n >>> 16;\n    n++;\n  }\n  return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n  if (n <= 0 || state.length === 0 && state.ended) return 0;\n  if (state.objectMode) return 1;\n  if (n !== n) {\n    // Only flow one buffer at a time\n    if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n  }\n  // If we're asking for more than the current hwm, then raise the hwm.\n  if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n  if (n <= state.length) return n;\n  // Don't have enough\n  if (!state.ended) {\n    state.needReadable = true;\n    return 0;\n  }\n  return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n  debug('read', n);\n  n = parseInt(n, 10);\n  var state = this._readableState;\n  var nOrig = n;\n  if (n !== 0) state.emittedReadable = false;\n\n  // if we're doing read(0) to trigger a readable event, but we\n  // already have a bunch of data in the buffer, then just trigger\n  // the 'readable' event and move on.\n  if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n    debug('read: emitReadable', state.length, state.ended);\n    if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n    return null;\n  }\n  n = howMuchToRead(n, state);\n\n  // if we've ended, and we're now clear, then finish it up.\n  if (n === 0 && state.ended) {\n    if (state.length === 0) endReadable(this);\n    return null;\n  }\n\n  // All the actual chunk generation logic needs to be\n  // *below* the call to _read.  The reason is that in certain\n  // synthetic stream cases, such as passthrough streams, _read\n  // may be a completely synchronous operation which may change\n  // the state of the read buffer, providing enough data when\n  // before there was *not* enough.\n  //\n  // So, the steps are:\n  // 1. Figure out what the state of things will be after we do\n  // a read from the buffer.\n  //\n  // 2. If that resulting state will trigger a _read, then call _read.\n  // Note that this may be asynchronous, or synchronous.  Yes, it is\n  // deeply ugly to write APIs this way, but that still doesn't mean\n  // that the Readable class should behave improperly, as streams are\n  // designed to be sync/async agnostic.\n  // Take note if the _read call is sync or async (ie, if the read call\n  // has returned yet), so that we know whether or not it's safe to emit\n  // 'readable' etc.\n  //\n  // 3. Actually pull the requested chunks out of the buffer and return.\n\n  // if we need a readable event, then we need to do some reading.\n  var doRead = state.needReadable;\n  debug('need readable', doRead);\n\n  // if we currently have less than the highWaterMark, then also read some\n  if (state.length === 0 || state.length - n < state.highWaterMark) {\n    doRead = true;\n    debug('length less than watermark', doRead);\n  }\n\n  // however, if we've ended, then there's no point, and if we're already\n  // reading, then it's unnecessary.\n  if (state.ended || state.reading) {\n    doRead = false;\n    debug('reading or ended', doRead);\n  } else if (doRead) {\n    debug('do read');\n    state.reading = true;\n    state.sync = true;\n    // if the length is currently zero, then we *need* a readable event.\n    if (state.length === 0) state.needReadable = true;\n    // call internal read method\n    this._read(state.highWaterMark);\n    state.sync = false;\n    // If _read pushed data synchronously, then `reading` will be false,\n    // and we need to re-evaluate how much data we can return to the user.\n    if (!state.reading) n = howMuchToRead(nOrig, state);\n  }\n  var ret;\n  if (n > 0) ret = fromList(n, state);else ret = null;\n  if (ret === null) {\n    state.needReadable = state.length <= state.highWaterMark;\n    n = 0;\n  } else {\n    state.length -= n;\n    state.awaitDrain = 0;\n  }\n  if (state.length === 0) {\n    // If we have nothing in the buffer, then we want to know\n    // as soon as we *do* get something into the buffer.\n    if (!state.ended) state.needReadable = true;\n\n    // If we tried to read() past the EOF, then emit end on the next tick.\n    if (nOrig !== n && state.ended) endReadable(this);\n  }\n  if (ret !== null) this.emit('data', ret);\n  return ret;\n};\nfunction onEofChunk(stream, state) {\n  debug('onEofChunk');\n  if (state.ended) return;\n  if (state.decoder) {\n    var chunk = state.decoder.end();\n    if (chunk && chunk.length) {\n      state.buffer.push(chunk);\n      state.length += state.objectMode ? 1 : chunk.length;\n    }\n  }\n  state.ended = true;\n  if (state.sync) {\n    // if we are sync, wait until next tick to emit the data.\n    // Otherwise we risk emitting data in the flow()\n    // the readable code triggers during a read() call\n    emitReadable(stream);\n  } else {\n    // emit 'readable' now to make sure it gets picked up.\n    state.needReadable = false;\n    if (!state.emittedReadable) {\n      state.emittedReadable = true;\n      emitReadable_(stream);\n    }\n  }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow.  This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n  var state = stream._readableState;\n  debug('emitReadable', state.needReadable, state.emittedReadable);\n  state.needReadable = false;\n  if (!state.emittedReadable) {\n    debug('emitReadable', state.flowing);\n    state.emittedReadable = true;\n    process.nextTick(emitReadable_, stream);\n  }\n}\nfunction emitReadable_(stream) {\n  var state = stream._readableState;\n  debug('emitReadable_', state.destroyed, state.length, state.ended);\n  if (!state.destroyed && (state.length || state.ended)) {\n    stream.emit('readable');\n    state.emittedReadable = false;\n  }\n\n  // The stream needs another readable event if\n  // 1. It is not flowing, as the flow mechanism will take\n  //    care of it.\n  // 2. It is not ended.\n  // 3. It is below the highWaterMark, so we can schedule\n  //    another readable later.\n  state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n  flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data.  that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n  if (!state.readingMore) {\n    state.readingMore = true;\n    process.nextTick(maybeReadMore_, stream, state);\n  }\n}\nfunction maybeReadMore_(stream, state) {\n  // Attempt to read more data if we should.\n  //\n  // The conditions for reading more data are (one of):\n  // - Not enough data buffered (state.length < state.highWaterMark). The loop\n  //   is responsible for filling the buffer with enough data if such data\n  //   is available. If highWaterMark is 0 and we are not in the flowing mode\n  //   we should _not_ attempt to buffer any extra data. We'll get more data\n  //   when the stream consumer calls read() instead.\n  // - No data in the buffer, and the stream is in flowing mode. In this mode\n  //   the loop below is responsible for ensuring read() is called. Failing to\n  //   call read here would abort the flow and there's no other mechanism for\n  //   continuing the flow if the stream consumer has just subscribed to the\n  //   'data' event.\n  //\n  // In addition to the above conditions to keep reading data, the following\n  // conditions prevent the data from being read:\n  // - The stream has ended (state.ended).\n  // - There is already a pending 'read' operation (state.reading). This is a\n  //   case where the the stream has called the implementation defined _read()\n  //   method, but they are processing the call asynchronously and have _not_\n  //   called push() with new data. In this case we skip performing more\n  //   read()s. The execution ends in this method again after the _read() ends\n  //   up calling push() with more data.\n  while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n    var len = state.length;\n    debug('maybeReadMore read 0');\n    stream.read(0);\n    if (len === state.length)\n      // didn't get any data, stop spinning.\n      break;\n  }\n  state.readingMore = false;\n}\n\n// abstract method.  to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n  errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n  var src = this;\n  var state = this._readableState;\n  switch (state.pipesCount) {\n    case 0:\n      state.pipes = dest;\n      break;\n    case 1:\n      state.pipes = [state.pipes, dest];\n      break;\n    default:\n      state.pipes.push(dest);\n      break;\n  }\n  state.pipesCount += 1;\n  debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n  var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n  var endFn = doEnd ? onend : unpipe;\n  if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n  dest.on('unpipe', onunpipe);\n  function onunpipe(readable, unpipeInfo) {\n    debug('onunpipe');\n    if (readable === src) {\n      if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n        unpipeInfo.hasUnpiped = true;\n        cleanup();\n      }\n    }\n  }\n  function onend() {\n    debug('onend');\n    dest.end();\n  }\n\n  // when the dest drains, it reduces the awaitDrain counter\n  // on the source.  This would be more elegant with a .once()\n  // handler in flow(), but adding and removing repeatedly is\n  // too slow.\n  var ondrain = pipeOnDrain(src);\n  dest.on('drain', ondrain);\n  var cleanedUp = false;\n  function cleanup() {\n    debug('cleanup');\n    // cleanup event handlers once the pipe is broken\n    dest.removeListener('close', onclose);\n    dest.removeListener('finish', onfinish);\n    dest.removeListener('drain', ondrain);\n    dest.removeListener('error', onerror);\n    dest.removeListener('unpipe', onunpipe);\n    src.removeListener('end', onend);\n    src.removeListener('end', unpipe);\n    src.removeListener('data', ondata);\n    cleanedUp = true;\n\n    // if the reader is waiting for a drain event from this\n    // specific writer, then it would cause it to never start\n    // flowing again.\n    // So, if this is awaiting a drain, then we just call it now.\n    // If we don't know, then assume that we are waiting for one.\n    if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n  }\n  src.on('data', ondata);\n  function ondata(chunk) {\n    debug('ondata');\n    var ret = dest.write(chunk);\n    debug('dest.write', ret);\n    if (ret === false) {\n      // If the user unpiped during `dest.write()`, it is possible\n      // to get stuck in a permanently paused state if that write\n      // also returned false.\n      // => Check whether `dest` is still a piping destination.\n      if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n        debug('false write response, pause', state.awaitDrain);\n        state.awaitDrain++;\n      }\n      src.pause();\n    }\n  }\n\n  // if the dest has an error, then stop piping into it.\n  // however, don't suppress the throwing behavior for this.\n  function onerror(er) {\n    debug('onerror', er);\n    unpipe();\n    dest.removeListener('error', onerror);\n    if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n  }\n\n  // Make sure our error handler is attached before userland ones.\n  prependListener(dest, 'error', onerror);\n\n  // Both close and finish should trigger unpipe, but only once.\n  function onclose() {\n    dest.removeListener('finish', onfinish);\n    unpipe();\n  }\n  dest.once('close', onclose);\n  function onfinish() {\n    debug('onfinish');\n    dest.removeListener('close', onclose);\n    unpipe();\n  }\n  dest.once('finish', onfinish);\n  function unpipe() {\n    debug('unpipe');\n    src.unpipe(dest);\n  }\n\n  // tell the dest that it's being piped to\n  dest.emit('pipe', src);\n\n  // start the flow if it hasn't been started already.\n  if (!state.flowing) {\n    debug('pipe resume');\n    src.resume();\n  }\n  return dest;\n};\nfunction pipeOnDrain(src) {\n  return function pipeOnDrainFunctionResult() {\n    var state = src._readableState;\n    debug('pipeOnDrain', state.awaitDrain);\n    if (state.awaitDrain) state.awaitDrain--;\n    if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n      state.flowing = true;\n      flow(src);\n    }\n  };\n}\nReadable.prototype.unpipe = function (dest) {\n  var state = this._readableState;\n  var unpipeInfo = {\n    hasUnpiped: false\n  };\n\n  // if we're not piping anywhere, then do nothing.\n  if (state.pipesCount === 0) return this;\n\n  // just one destination.  most common case.\n  if (state.pipesCount === 1) {\n    // passed in one, but it's not the right one.\n    if (dest && dest !== state.pipes) return this;\n    if (!dest) dest = state.pipes;\n\n    // got a match.\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    if (dest) dest.emit('unpipe', this, unpipeInfo);\n    return this;\n  }\n\n  // slow case. multiple pipe destinations.\n\n  if (!dest) {\n    // remove all.\n    var dests = state.pipes;\n    var len = state.pipesCount;\n    state.pipes = null;\n    state.pipesCount = 0;\n    state.flowing = false;\n    for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n      hasUnpiped: false\n    });\n    return this;\n  }\n\n  // try to find the right one.\n  var index = indexOf(state.pipes, dest);\n  if (index === -1) return this;\n  state.pipes.splice(index, 1);\n  state.pipesCount -= 1;\n  if (state.pipesCount === 1) state.pipes = state.pipes[0];\n  dest.emit('unpipe', this, unpipeInfo);\n  return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n  var res = Stream.prototype.on.call(this, ev, fn);\n  var state = this._readableState;\n  if (ev === 'data') {\n    // update readableListening so that resume() may be a no-op\n    // a few lines down. This is needed to support once('readable').\n    state.readableListening = this.listenerCount('readable') > 0;\n\n    // Try start flowing on next tick if stream isn't explicitly paused\n    if (state.flowing !== false) this.resume();\n  } else if (ev === 'readable') {\n    if (!state.endEmitted && !state.readableListening) {\n      state.readableListening = state.needReadable = true;\n      state.flowing = false;\n      state.emittedReadable = false;\n      debug('on readable', state.length, state.reading);\n      if (state.length) {\n        emitReadable(this);\n      } else if (!state.reading) {\n        process.nextTick(nReadingNextTick, this);\n      }\n    }\n  }\n  return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n  var res = Stream.prototype.removeListener.call(this, ev, fn);\n  if (ev === 'readable') {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n  return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n  var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n  if (ev === 'readable' || ev === undefined) {\n    // We need to check if there is someone still listening to\n    // readable and reset the state. However this needs to happen\n    // after readable has been emitted but before I/O (nextTick) to\n    // support once('readable', fn) cycles. This means that calling\n    // resume within the same tick will have no\n    // effect.\n    process.nextTick(updateReadableListening, this);\n  }\n  return res;\n};\nfunction updateReadableListening(self) {\n  var state = self._readableState;\n  state.readableListening = self.listenerCount('readable') > 0;\n  if (state.resumeScheduled && !state.paused) {\n    // flowing needs to be set to true now, otherwise\n    // the upcoming resume will not flow.\n    state.flowing = true;\n\n    // crude way to check if we should resume\n  } else if (self.listenerCount('data') > 0) {\n    self.resume();\n  }\n}\nfunction nReadingNextTick(self) {\n  debug('readable nexttick read 0');\n  self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n  var state = this._readableState;\n  if (!state.flowing) {\n    debug('resume');\n    // we flow only if there is no one listening\n    // for readable, but we still have to call\n    // resume()\n    state.flowing = !state.readableListening;\n    resume(this, state);\n  }\n  state.paused = false;\n  return this;\n};\nfunction resume(stream, state) {\n  if (!state.resumeScheduled) {\n    state.resumeScheduled = true;\n    process.nextTick(resume_, stream, state);\n  }\n}\nfunction resume_(stream, state) {\n  debug('resume', state.reading);\n  if (!state.reading) {\n    stream.read(0);\n  }\n  state.resumeScheduled = false;\n  stream.emit('resume');\n  flow(stream);\n  if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n  debug('call pause flowing=%j', this._readableState.flowing);\n  if (this._readableState.flowing !== false) {\n    debug('pause');\n    this._readableState.flowing = false;\n    this.emit('pause');\n  }\n  this._readableState.paused = true;\n  return this;\n};\nfunction flow(stream) {\n  var state = stream._readableState;\n  debug('flow', state.flowing);\n  while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n  var _this = this;\n  var state = this._readableState;\n  var paused = false;\n  stream.on('end', function () {\n    debug('wrapped end');\n    if (state.decoder && !state.ended) {\n      var chunk = state.decoder.end();\n      if (chunk && chunk.length) _this.push(chunk);\n    }\n    _this.push(null);\n  });\n  stream.on('data', function (chunk) {\n    debug('wrapped data');\n    if (state.decoder) chunk = state.decoder.write(chunk);\n\n    // don't skip over falsy values in objectMode\n    if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n    var ret = _this.push(chunk);\n    if (!ret) {\n      paused = true;\n      stream.pause();\n    }\n  });\n\n  // proxy all the other methods.\n  // important when wrapping filters and duplexes.\n  for (var i in stream) {\n    if (this[i] === undefined && typeof stream[i] === 'function') {\n      this[i] = function methodWrap(method) {\n        return function methodWrapReturnFunction() {\n          return stream[method].apply(stream, arguments);\n        };\n      }(i);\n    }\n  }\n\n  // proxy certain important events.\n  for (var n = 0; n < kProxyEvents.length; n++) {\n    stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n  }\n\n  // when we try to consume some more bytes, simply unpause the\n  // underlying stream.\n  this._read = function (n) {\n    debug('wrapped _read', n);\n    if (paused) {\n      paused = false;\n      stream.resume();\n    }\n  };\n  return this;\n};\nif (typeof Symbol === 'function') {\n  Readable.prototype[Symbol.asyncIterator] = function () {\n    if (createReadableStreamAsyncIterator === undefined) {\n      createReadableStreamAsyncIterator = require('./internal/streams/async_iterator');\n    }\n    return createReadableStreamAsyncIterator(this);\n  };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.highWaterMark;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState && this._readableState.buffer;\n  }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.flowing;\n  },\n  set: function set(state) {\n    if (this._readableState) {\n      this._readableState.flowing = state;\n    }\n  }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._readableState.length;\n  }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n  // nothing buffered\n  if (state.length === 0) return null;\n  var ret;\n  if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n    // read it all, truncate the list\n    if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n    state.buffer.clear();\n  } else {\n    // read part of list\n    ret = state.buffer.consume(n, state.decoder);\n  }\n  return ret;\n}\nfunction endReadable(stream) {\n  var state = stream._readableState;\n  debug('endReadable', state.endEmitted);\n  if (!state.endEmitted) {\n    state.ended = true;\n    process.nextTick(endReadableNT, state, stream);\n  }\n}\nfunction endReadableNT(state, stream) {\n  debug('endReadableNT', state.endEmitted, state.length);\n\n  // Check that we didn't get one last unshift.\n  if (!state.endEmitted && state.length === 0) {\n    state.endEmitted = true;\n    stream.readable = false;\n    stream.emit('end');\n    if (state.autoDestroy) {\n      // In case of duplex streams we need a way to detect\n      // if the writable side is ready for autoDestroy as well\n      var wState = stream._writableState;\n      if (!wState || wState.autoDestroy && wState.finished) {\n        stream.destroy();\n      }\n    }\n  }\n}\nif (typeof Symbol === 'function') {\n  Readable.from = function (iterable, opts) {\n    if (from === undefined) {\n      from = require('./internal/streams/from');\n    }\n    return from(Readable, iterable, opts);\n  };\n}\nfunction indexOf(xs, x) {\n  for (var i = 0, l = xs.length; i < l; i++) {\n    if (xs[i] === x) return i;\n  }\n  return -1;\n}", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/*<replacement>*/\nvar objectKeys = Object.keys || function (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n};\n/*</replacement>*/\n\nmodule.exports = Duplex;\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\nrequire('inherits')(Duplex, Readable);\n{\n  // Allow the keys array to be GC'ed.\n  var keys = objectKeys(Writable.prototype);\n  for (var v = 0; v < keys.length; v++) {\n    var method = keys[v];\n    if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n  }\n}\nfunction Duplex(options) {\n  if (!(this instanceof Duplex)) return new Duplex(options);\n  Readable.call(this, options);\n  Writable.call(this, options);\n  this.allowHalfOpen = true;\n  if (options) {\n    if (options.readable === false) this.readable = false;\n    if (options.writable === false) this.writable = false;\n    if (options.allowHalfOpen === false) {\n      this.allowHalfOpen = false;\n      this.once('end', onend);\n    }\n  }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n  // If the writable side ended, then we're ok.\n  if (this._writableState.ended) return;\n\n  // no more data can be written.\n  // But allow more writes to happen in this tick.\n  process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n  self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return false;\n    }\n    return this._readableState.destroyed && this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (this._readableState === undefined || this._writableState === undefined) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._readableState.destroyed = value;\n    this._writableState.destroyed = value;\n  }\n});", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/* <replacement> */\nfunction WriteReq(chunk, encoding, cb) {\n  this.chunk = chunk;\n  this.encoding = encoding;\n  this.callback = cb;\n  this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n  var _this = this;\n  this.next = null;\n  this.entry = null;\n  this.finish = function () {\n    onCorkedFinish(_this, state);\n  };\n}\n/* </replacement> */\n\n/*<replacement>*/\nvar Duplex;\n/*</replacement>*/\n\nWritable.WritableState = WritableState;\n\n/*<replacement>*/\nvar internalUtil = {\n  deprecate: require('util-deprecate')\n};\n/*</replacement>*/\n\n/*<replacement>*/\nvar Stream = require('./internal/streams/stream');\n/*</replacement>*/\n\nvar Buffer = require('buffer').Buffer;\nvar OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n  return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n  return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = require('./internal/streams/destroy');\nvar _require = require('./internal/streams/state'),\n  getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = require('../errors').codes,\n  ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n  ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n  ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n  ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n  ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nrequire('inherits')(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n  Duplex = Duplex || require('./_stream_duplex');\n  options = options || {};\n\n  // Duplex streams are both readable and writable, but share\n  // the same options object.\n  // However, some cases require setting options to different\n  // values for the readable and the writable sides of the duplex stream,\n  // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n  if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n  // object stream flag to indicate whether or not this stream\n  // contains buffers or objects.\n  this.objectMode = !!options.objectMode;\n  if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n  // the point at which write() starts returning false\n  // Note: 0 is a valid value, means that we always return false if\n  // the entire buffer is not flushed immediately on write()\n  this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n  // if _final has been called\n  this.finalCalled = false;\n\n  // drain event flag.\n  this.needDrain = false;\n  // at the start of calling end()\n  this.ending = false;\n  // when end() has been called, and returned\n  this.ended = false;\n  // when 'finish' is emitted\n  this.finished = false;\n\n  // has it been destroyed\n  this.destroyed = false;\n\n  // should we decode strings into buffers before passing to _write?\n  // this is here so that some node-core streams can optimize string\n  // handling at a lower level.\n  var noDecode = options.decodeStrings === false;\n  this.decodeStrings = !noDecode;\n\n  // Crypto is kind of old and crusty.  Historically, its default string\n  // encoding is 'binary' so we have to make this configurable.\n  // Everything else in the universe uses 'utf8', though.\n  this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n  // not an actual buffer we keep track of, but a measurement\n  // of how much we're waiting to get pushed to some underlying\n  // socket or file.\n  this.length = 0;\n\n  // a flag to see when we're in the middle of a write.\n  this.writing = false;\n\n  // when true all writes will be buffered until .uncork() call\n  this.corked = 0;\n\n  // a flag to be able to tell if the onwrite cb is called immediately,\n  // or on a later tick.  We set this to true at first, because any\n  // actions that shouldn't happen until \"later\" should generally also\n  // not happen before the first write call.\n  this.sync = true;\n\n  // a flag to know if we're processing previously buffered items, which\n  // may call the _write() callback in the same tick, so that we don't\n  // end up in an overlapped onwrite situation.\n  this.bufferProcessing = false;\n\n  // the callback that's passed to _write(chunk,cb)\n  this.onwrite = function (er) {\n    onwrite(stream, er);\n  };\n\n  // the callback that the user supplies to write(chunk,encoding,cb)\n  this.writecb = null;\n\n  // the amount that is being written when _write is called.\n  this.writelen = 0;\n  this.bufferedRequest = null;\n  this.lastBufferedRequest = null;\n\n  // number of pending user-supplied write callbacks\n  // this must be 0 before 'finish' can be emitted\n  this.pendingcb = 0;\n\n  // emit prefinish if the only thing we're waiting for is _write cbs\n  // This is relevant for synchronous Transform streams\n  this.prefinished = false;\n\n  // True if the error was already emitted and should not be thrown again\n  this.errorEmitted = false;\n\n  // Should close be emitted on destroy. Defaults to true.\n  this.emitClose = options.emitClose !== false;\n\n  // Should .destroy() be called after 'finish' (and potentially 'end')\n  this.autoDestroy = !!options.autoDestroy;\n\n  // count buffered requests\n  this.bufferedRequestCount = 0;\n\n  // allocate the first CorkedRequest, there is always\n  // one allocated and free to use, and we maintain at most two\n  this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n  var current = this.bufferedRequest;\n  var out = [];\n  while (current) {\n    out.push(current);\n    current = current.next;\n  }\n  return out;\n};\n(function () {\n  try {\n    Object.defineProperty(WritableState.prototype, 'buffer', {\n      get: internalUtil.deprecate(function writableStateBufferGetter() {\n        return this.getBuffer();\n      }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n    });\n  } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n  realHasInstance = Function.prototype[Symbol.hasInstance];\n  Object.defineProperty(Writable, Symbol.hasInstance, {\n    value: function value(object) {\n      if (realHasInstance.call(this, object)) return true;\n      if (this !== Writable) return false;\n      return object && object._writableState instanceof WritableState;\n    }\n  });\n} else {\n  realHasInstance = function realHasInstance(object) {\n    return object instanceof this;\n  };\n}\nfunction Writable(options) {\n  Duplex = Duplex || require('./_stream_duplex');\n\n  // Writable ctor is applied to Duplexes, too.\n  // `realHasInstance` is necessary because using plain `instanceof`\n  // would return false, as no `_writableState` property is attached.\n\n  // Trying to use the custom `instanceof` for Writable here will also break the\n  // Node.js LazyTransform implementation, which has a non-trivial getter for\n  // `_writableState` that would lead to infinite recursion.\n\n  // Checking for a Stream.Duplex instance is faster here instead of inside\n  // the WritableState constructor, at least with V8 6.5\n  var isDuplex = this instanceof Duplex;\n  if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n  this._writableState = new WritableState(options, this, isDuplex);\n\n  // legacy.\n  this.writable = true;\n  if (options) {\n    if (typeof options.write === 'function') this._write = options.write;\n    if (typeof options.writev === 'function') this._writev = options.writev;\n    if (typeof options.destroy === 'function') this._destroy = options.destroy;\n    if (typeof options.final === 'function') this._final = options.final;\n  }\n  Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n  errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n  var er = new ERR_STREAM_WRITE_AFTER_END();\n  // TODO: defer error events consistently everywhere, not just the cb\n  errorOrDestroy(stream, er);\n  process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n  var er;\n  if (chunk === null) {\n    er = new ERR_STREAM_NULL_VALUES();\n  } else if (typeof chunk !== 'string' && !state.objectMode) {\n    er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n  }\n  if (er) {\n    errorOrDestroy(stream, er);\n    process.nextTick(cb, er);\n    return false;\n  }\n  return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  var ret = false;\n  var isBuf = !state.objectMode && _isUint8Array(chunk);\n  if (isBuf && !Buffer.isBuffer(chunk)) {\n    chunk = _uint8ArrayToBuffer(chunk);\n  }\n  if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n  if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n  if (typeof cb !== 'function') cb = nop;\n  if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n    state.pendingcb++;\n    ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n  }\n  return ret;\n};\nWritable.prototype.cork = function () {\n  this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n  var state = this._writableState;\n  if (state.corked) {\n    state.corked--;\n    if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n  }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n  // node::ParseEncoding() requires lower case.\n  if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n  if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n  this._writableState.defaultEncoding = encoding;\n  return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState && this._writableState.getBuffer();\n  }\n});\nfunction decodeChunk(state, chunk, encoding) {\n  if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n    chunk = Buffer.from(chunk, encoding);\n  }\n  return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.highWaterMark;\n  }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn.  Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n  if (!isBuf) {\n    var newChunk = decodeChunk(state, chunk, encoding);\n    if (chunk !== newChunk) {\n      isBuf = true;\n      encoding = 'buffer';\n      chunk = newChunk;\n    }\n  }\n  var len = state.objectMode ? 1 : chunk.length;\n  state.length += len;\n  var ret = state.length < state.highWaterMark;\n  // we must ensure that previous needDrain will not be reset to false.\n  if (!ret) state.needDrain = true;\n  if (state.writing || state.corked) {\n    var last = state.lastBufferedRequest;\n    state.lastBufferedRequest = {\n      chunk: chunk,\n      encoding: encoding,\n      isBuf: isBuf,\n      callback: cb,\n      next: null\n    };\n    if (last) {\n      last.next = state.lastBufferedRequest;\n    } else {\n      state.bufferedRequest = state.lastBufferedRequest;\n    }\n    state.bufferedRequestCount += 1;\n  } else {\n    doWrite(stream, state, false, len, chunk, encoding, cb);\n  }\n  return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n  state.writelen = len;\n  state.writecb = cb;\n  state.writing = true;\n  state.sync = true;\n  if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n  state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n  --state.pendingcb;\n  if (sync) {\n    // defer the callback if we are being called synchronously\n    // to avoid piling up things on the stack\n    process.nextTick(cb, er);\n    // this can emit finish, and it will always happen\n    // after error\n    process.nextTick(finishMaybe, stream, state);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er);\n  } else {\n    // the caller expect this to happen before if\n    // it is async\n    cb(er);\n    stream._writableState.errorEmitted = true;\n    errorOrDestroy(stream, er);\n    // this can emit finish, but finish must\n    // always follow error\n    finishMaybe(stream, state);\n  }\n}\nfunction onwriteStateUpdate(state) {\n  state.writing = false;\n  state.writecb = null;\n  state.length -= state.writelen;\n  state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n  var state = stream._writableState;\n  var sync = state.sync;\n  var cb = state.writecb;\n  if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n  onwriteStateUpdate(state);\n  if (er) onwriteError(stream, state, sync, er, cb);else {\n    // Check if we're actually ready to finish, but don't emit yet\n    var finished = needFinish(state) || stream.destroyed;\n    if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n      clearBuffer(stream, state);\n    }\n    if (sync) {\n      process.nextTick(afterWrite, stream, state, finished, cb);\n    } else {\n      afterWrite(stream, state, finished, cb);\n    }\n  }\n}\nfunction afterWrite(stream, state, finished, cb) {\n  if (!finished) onwriteDrain(stream, state);\n  state.pendingcb--;\n  cb();\n  finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n  if (state.length === 0 && state.needDrain) {\n    state.needDrain = false;\n    stream.emit('drain');\n  }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n  state.bufferProcessing = true;\n  var entry = state.bufferedRequest;\n  if (stream._writev && entry && entry.next) {\n    // Fast case, write everything using _writev()\n    var l = state.bufferedRequestCount;\n    var buffer = new Array(l);\n    var holder = state.corkedRequestsFree;\n    holder.entry = entry;\n    var count = 0;\n    var allBuffers = true;\n    while (entry) {\n      buffer[count] = entry;\n      if (!entry.isBuf) allBuffers = false;\n      entry = entry.next;\n      count += 1;\n    }\n    buffer.allBuffers = allBuffers;\n    doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n    // doWrite is almost always async, defer these to save a bit of time\n    // as the hot path ends with doWrite\n    state.pendingcb++;\n    state.lastBufferedRequest = null;\n    if (holder.next) {\n      state.corkedRequestsFree = holder.next;\n      holder.next = null;\n    } else {\n      state.corkedRequestsFree = new CorkedRequest(state);\n    }\n    state.bufferedRequestCount = 0;\n  } else {\n    // Slow case, write chunks one-by-one\n    while (entry) {\n      var chunk = entry.chunk;\n      var encoding = entry.encoding;\n      var cb = entry.callback;\n      var len = state.objectMode ? 1 : chunk.length;\n      doWrite(stream, state, false, len, chunk, encoding, cb);\n      entry = entry.next;\n      state.bufferedRequestCount--;\n      // if we didn't call the onwrite immediately, then\n      // it means that we need to wait until it does.\n      // also, that means that the chunk and cb are currently\n      // being processed, so move the buffer counter past them.\n      if (state.writing) {\n        break;\n      }\n    }\n    if (entry === null) state.lastBufferedRequest = null;\n  }\n  state.bufferedRequest = entry;\n  state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n  var state = this._writableState;\n  if (typeof chunk === 'function') {\n    cb = chunk;\n    chunk = null;\n    encoding = null;\n  } else if (typeof encoding === 'function') {\n    cb = encoding;\n    encoding = null;\n  }\n  if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n  // .end() fully uncorks\n  if (state.corked) {\n    state.corked = 1;\n    this.uncork();\n  }\n\n  // ignore unnecessary end() calls.\n  if (!state.ending) endWritable(this, state, cb);\n  return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    return this._writableState.length;\n  }\n});\nfunction needFinish(state) {\n  return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n  stream._final(function (err) {\n    state.pendingcb--;\n    if (err) {\n      errorOrDestroy(stream, err);\n    }\n    state.prefinished = true;\n    stream.emit('prefinish');\n    finishMaybe(stream, state);\n  });\n}\nfunction prefinish(stream, state) {\n  if (!state.prefinished && !state.finalCalled) {\n    if (typeof stream._final === 'function' && !state.destroyed) {\n      state.pendingcb++;\n      state.finalCalled = true;\n      process.nextTick(callFinal, stream, state);\n    } else {\n      state.prefinished = true;\n      stream.emit('prefinish');\n    }\n  }\n}\nfunction finishMaybe(stream, state) {\n  var need = needFinish(state);\n  if (need) {\n    prefinish(stream, state);\n    if (state.pendingcb === 0) {\n      state.finished = true;\n      stream.emit('finish');\n      if (state.autoDestroy) {\n        // In case of duplex streams we need a way to detect\n        // if the readable side is ready for autoDestroy as well\n        var rState = stream._readableState;\n        if (!rState || rState.autoDestroy && rState.endEmitted) {\n          stream.destroy();\n        }\n      }\n    }\n  }\n  return need;\n}\nfunction endWritable(stream, state, cb) {\n  state.ending = true;\n  finishMaybe(stream, state);\n  if (cb) {\n    if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n  }\n  state.ended = true;\n  stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n  var entry = corkReq.entry;\n  corkReq.entry = null;\n  while (entry) {\n    var cb = entry.callback;\n    state.pendingcb--;\n    cb(err);\n    entry = entry.next;\n  }\n\n  // reuse the free corkReq.\n  state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n  // making it explicit this property is not enumerable\n  // because otherwise some prototype manipulation in\n  // userland will fail\n  enumerable: false,\n  get: function get() {\n    if (this._writableState === undefined) {\n      return false;\n    }\n    return this._writableState.destroyed;\n  },\n  set: function set(value) {\n    // we ignore the value if the stream\n    // has not been initialized yet\n    if (!this._writableState) {\n      return;\n    }\n\n    // backward compatibility, the user is explicitly\n    // managing destroyed\n    this._writableState.destroyed = value;\n  }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n  cb(err);\n};", "'use strict';\n\nconst util = require('util');\nconst Writable = require('readable-stream/lib/_stream_writable.js');\nconst { LEVEL } = require('triple-beam');\n\n/**\n * Constructor function for the TransportStream. This is the base prototype\n * that all `winston >= 3` transports should inherit from.\n * @param {Object} options - Options for this TransportStream instance\n * @param {String} options.level - Highest level according to RFC5424.\n * @param {Boolean} options.handleExceptions - If true, info with\n * { exception: true } will be written.\n * @param {Function} options.log - Custom log function for simple Transport\n * creation\n * @param {Function} options.close - Called on \"unpipe\" from parent.\n */\nconst TransportStream = module.exports = function TransportStream(options = {}) {\n  Writable.call(this, { objectMode: true, highWaterMark: options.highWaterMark });\n\n  this.format = options.format;\n  this.level = options.level;\n  this.handleExceptions = options.handleExceptions;\n  this.handleRejections = options.handleRejections;\n  this.silent = options.silent;\n\n  if (options.log) this.log = options.log;\n  if (options.logv) this.logv = options.logv;\n  if (options.close) this.close = options.close;\n\n  // Get the levels from the source we are piped from.\n  this.once('pipe', logger => {\n    // Remark (indexzero): this bookkeeping can only support multiple\n    // Logger parents with the same `levels`. This comes into play in\n    // the `winston.Container` code in which `container.add` takes\n    // a fully realized set of options with pre-constructed TransportStreams.\n    this.levels = logger.levels;\n    this.parent = logger;\n  });\n\n  // If and/or when the transport is removed from this instance\n  this.once('unpipe', src => {\n    // Remark (indexzero): this bookkeeping can only support multiple\n    // Logger parents with the same `levels`. This comes into play in\n    // the `winston.Container` code in which `container.add` takes\n    // a fully realized set of options with pre-constructed TransportStreams.\n    if (src === this.parent) {\n      this.parent = null;\n      if (this.close) {\n        this.close();\n      }\n    }\n  });\n};\n\n/*\n * Inherit from Writeable using Node.js built-ins\n */\nutil.inherits(TransportStream, Writable);\n\n/**\n * Writes the info object to our transport instance.\n * @param {mixed} info - TODO: add param description.\n * @param {mixed} enc - TODO: add param description.\n * @param {function} callback - TODO: add param description.\n * @returns {undefined}\n * @private\n */\nTransportStream.prototype._write = function _write(info, enc, callback) {\n  if (this.silent || (info.exception === true && !this.handleExceptions)) {\n    return callback(null);\n  }\n\n  // Remark: This has to be handled in the base transport now because we\n  // cannot conditionally write to our pipe targets as stream. We always\n  // prefer any explicit level set on the Transport itself falling back to\n  // any level set on the parent.\n  const level = this.level || (this.parent && this.parent.level);\n\n  if (!level || this.levels[level] >= this.levels[info[LEVEL]]) {\n    if (info && !this.format) {\n      return this.log(info, callback);\n    }\n\n    let errState;\n    let transformed;\n\n    // We trap(and re-throw) any errors generated by the user-provided format, but also\n    // guarantee that the streams callback is invoked so that we can continue flowing.\n    try {\n      transformed = this.format.transform(Object.assign({}, info), this.format.options);\n    } catch (err) {\n      errState = err;\n    }\n\n    if (errState || !transformed) {\n      // eslint-disable-next-line callback-return\n      callback();\n      if (errState) throw errState;\n      return;\n    }\n\n    return this.log(transformed, callback);\n  }\n  this._writableState.sync = false;\n  return callback(null);\n};\n\n/**\n * Writes the batch of info objects (i.e. \"object chunks\") to our transport\n * instance after performing any necessary filtering.\n * @param {mixed} chunks - TODO: add params description.\n * @param {function} callback - TODO: add params description.\n * @returns {mixed} - TODO: add returns description.\n * @private\n */\nTransportStream.prototype._writev = function _writev(chunks, callback) {\n  if (this.logv) {\n    const infos = chunks.filter(this._accept, this);\n    if (!infos.length) {\n      return callback(null);\n    }\n\n    // Remark (indexzero): from a performance perspective if Transport\n    // implementers do choose to implement logv should we make it their\n    // responsibility to invoke their format?\n    return this.logv(infos, callback);\n  }\n\n  for (let i = 0; i < chunks.length; i++) {\n    if (!this._accept(chunks[i])) continue;\n\n    if (chunks[i].chunk && !this.format) {\n      this.log(chunks[i].chunk, chunks[i].callback);\n      continue;\n    }\n\n    let errState;\n    let transformed;\n\n    // We trap(and re-throw) any errors generated by the user-provided format, but also\n    // guarantee that the streams callback is invoked so that we can continue flowing.\n    try {\n      transformed = this.format.transform(\n        Object.assign({}, chunks[i].chunk),\n        this.format.options\n      );\n    } catch (err) {\n      errState = err;\n    }\n\n    if (errState || !transformed) {\n      // eslint-disable-next-line callback-return\n      chunks[i].callback();\n      if (errState) {\n        // eslint-disable-next-line callback-return\n        callback(null);\n        throw errState;\n      }\n    } else {\n      this.log(transformed, chunks[i].callback);\n    }\n  }\n\n  return callback(null);\n};\n\n/**\n * Predicate function that returns true if the specfied `info` on the\n * WriteReq, `write`, should be passed down into the derived\n * TransportStream's I/O via `.log(info, callback)`.\n * @param {WriteReq} write - winston@3 Node.js WriteReq for the `info` object\n * representing the log message.\n * @returns {Boolean} - Value indicating if the `write` should be accepted &\n * logged.\n */\nTransportStream.prototype._accept = function _accept(write) {\n  const info = write.chunk;\n  if (this.silent) {\n    return false;\n  }\n\n  // We always prefer any explicit level set on the Transport itself\n  // falling back to any level set on the parent.\n  const level = this.level || (this.parent && this.parent.level);\n\n  // Immediately check the average case: log level filtering.\n  if (\n    info.exception === true ||\n    !level ||\n    this.levels[level] >= this.levels[info[LEVEL]]\n  ) {\n    // Ensure the info object is valid based on `{ exception }`:\n    // 1. { handleExceptions: true }: all `info` objects are valid\n    // 2. { exception: false }: accepted by all transports.\n    if (this.handleExceptions || info.exception !== true) {\n      return true;\n    }\n  }\n\n  return false;\n};\n\n/**\n * _nop is short for \"No operation\"\n * @returns {Boolean} Intentionally false.\n */\nTransportStream.prototype._nop = function _nop() {\n  // eslint-disable-next-line no-undefined\n  return void undefined;\n};\n", "'use strict';\n\nconst util = require('util');\nconst { LEVEL } = require('triple-beam');\nconst TransportStream = require('./modern');\n\n/**\n * Constructor function for the LegacyTransportStream. This is an internal\n * wrapper `winston >= 3` uses to wrap older transports implementing\n * log(level, message, meta).\n * @param {Object} options - Options for this TransportStream instance.\n * @param {Transpot} options.transport - winston@2 or older Transport to wrap.\n */\n\nconst LegacyTransportStream = module.exports = function LegacyTransportStream(options = {}) {\n  TransportStream.call(this, options);\n  if (!options.transport || typeof options.transport.log !== 'function') {\n    throw new Error('Invalid transport, must be an object with a log method.');\n  }\n\n  this.transport = options.transport;\n  this.level = this.level || options.transport.level;\n  this.handleExceptions = this.handleExceptions || options.transport.handleExceptions;\n\n  // Display our deprecation notice.\n  this._deprecated();\n\n  // Properly bubble up errors from the transport to the\n  // LegacyTransportStream instance, but only once no matter how many times\n  // this transport is shared.\n  function transportError(err) {\n    this.emit('error', err, this.transport);\n  }\n\n  if (!this.transport.__winstonError) {\n    this.transport.__winstonError = transportError.bind(this);\n    this.transport.on('error', this.transport.__winstonError);\n  }\n};\n\n/*\n * Inherit from TransportStream using Node.js built-ins\n */\nutil.inherits(LegacyTransportStream, TransportStream);\n\n/**\n * Writes the info object to our transport instance.\n * @param {mixed} info - TODO: add param description.\n * @param {mixed} enc - TODO: add param description.\n * @param {function} callback - TODO: add param description.\n * @returns {undefined}\n * @private\n */\nLegacyTransportStream.prototype._write = function _write(info, enc, callback) {\n  if (this.silent || (info.exception === true && !this.handleExceptions)) {\n    return callback(null);\n  }\n\n  // Remark: This has to be handled in the base transport now because we\n  // cannot conditionally write to our pipe targets as stream.\n  if (!this.level || this.levels[this.level] >= this.levels[info[LEVEL]]) {\n    this.transport.log(info[LEVEL], info.message, info, this._nop);\n  }\n\n  callback(null);\n};\n\n/**\n * Writes the batch of info objects (i.e. \"object chunks\") to our transport\n * instance after performing any necessary filtering.\n * @param {mixed} chunks - TODO: add params description.\n * @param {function} callback - TODO: add params description.\n * @returns {mixed} - TODO: add returns description.\n * @private\n */\nLegacyTransportStream.prototype._writev = function _writev(chunks, callback) {\n  for (let i = 0; i < chunks.length; i++) {\n    if (this._accept(chunks[i])) {\n      this.transport.log(\n        chunks[i].chunk[LEVEL],\n        chunks[i].chunk.message,\n        chunks[i].chunk,\n        this._nop\n      );\n      chunks[i].callback();\n    }\n  }\n\n  return callback(null);\n};\n\n/**\n * Displays a deprecation notice. Defined as a function so it can be\n * overriden in tests.\n * @returns {undefined}\n */\nLegacyTransportStream.prototype._deprecated = function _deprecated() {\n  // eslint-disable-next-line no-console\n  console.error([\n    `${this.transport.name} is a legacy winston transport. Consider upgrading: `,\n    '- Upgrade docs: https://github.com/winstonjs/winston/blob/master/UPGRADE-3.0.md'\n  ].join('\\n'));\n};\n\n/**\n * Clean up error handling state on the legacy transport associated\n * with this instance.\n * @returns {undefined}\n */\nLegacyTransportStream.prototype.close = function close() {\n  if (this.transport.close) {\n    this.transport.close();\n  }\n\n  if (this.transport.__winstonError) {\n    this.transport.removeListener('error', this.transport.__winstonError);\n    this.transport.__winstonError = null;\n  }\n};\n", "'use strict';\n\n// Expose modern transport directly as the export\nmodule.exports = require('./modern');\n\n// Expose legacy stream\nmodule.exports.LegacyTransportStream = require('./legacy');\n", "/* eslint-disable no-console */\n/*\n * console.js: Transport for outputting to the console.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst os = require('os');\nconst { LEVEL, MESSAGE } = require('triple-beam');\nconst TransportStream = require('winston-transport');\n\n/**\n * Transport for outputting to the console.\n * @type {Console}\n * @extends {TransportStream}\n */\nmodule.exports = class Console extends TransportStream {\n  /**\n   * Constructor function for the Console transport object responsible for\n   * persisting log messages and metadata to a terminal or TTY.\n   * @param {!Object} [options={}] - Options for this instance.\n   */\n  constructor(options = {}) {\n    super(options);\n\n    // Expose the name of this Transport on the prototype\n    this.name = options.name || 'console';\n    this.stderrLevels = this._stringArrayToSet(options.stderrLevels);\n    this.consoleWarnLevels = this._stringArrayToSet(options.consoleWarnLevels);\n    this.eol = typeof options.eol === 'string' ? options.eol : os.EOL;\n    this.forceConsole = options.forceConsole || false;\n\n    // Keep a reference to the log, warn, and error console methods\n    // in case they get redirected to this transport after the logger is\n    // instantiated. This prevents a circular reference issue.\n    this._consoleLog = console.log.bind(console);\n    this._consoleWarn = console.warn.bind(console);\n    this._consoleError = console.error.bind(console);\n\n    this.setMaxListeners(30);\n  }\n\n  /**\n   * Core logging method exposed to Winston.\n   * @param {Object} info - TODO: add param description.\n   * @param {Function} callback - TODO: add param description.\n   * @returns {undefined}\n   */\n  log(info, callback) {\n    setImmediate(() => this.emit('logged', info));\n\n    // Remark: what if there is no raw...?\n    if (this.stderrLevels[info[LEVEL]]) {\n      if (console._stderr && !this.forceConsole) {\n        // Node.js maps `process.stderr` to `console._stderr`.\n        console._stderr.write(`${info[MESSAGE]}${this.eol}`);\n      } else {\n        // console.error adds a newline\n        this._consoleError(info[MESSAGE]);\n      }\n\n      if (callback) {\n        callback(); // eslint-disable-line callback-return\n      }\n      return;\n    } else if (this.consoleWarnLevels[info[LEVEL]]) {\n      if (console._stderr && !this.forceConsole) {\n        // Node.js maps `process.stderr` to `console._stderr`.\n        // in Node.js console.warn is an alias for console.error\n        console._stderr.write(`${info[MESSAGE]}${this.eol}`);\n      } else {\n        // console.warn adds a newline\n        this._consoleWarn(info[MESSAGE]);\n      }\n\n      if (callback) {\n        callback(); // eslint-disable-line callback-return\n      }\n      return;\n    }\n\n    if (console._stdout && !this.forceConsole) {\n      // Node.js maps `process.stdout` to `console._stdout`.\n      console._stdout.write(`${info[MESSAGE]}${this.eol}`);\n    } else {\n      // console.log adds a newline.\n      this._consoleLog(info[MESSAGE]);\n    }\n\n    if (callback) {\n      callback(); // eslint-disable-line callback-return\n    }\n  }\n\n  /**\n   * Returns a Set-like object with strArray's elements as keys (each with the\n   * value true).\n   * @param {Array} strArray - Array of Set-elements as strings.\n   * @param {?string} [errMsg] - Custom error message thrown on invalid input.\n   * @returns {Object} - TODO: add return description.\n   * @private\n   */\n  _stringArrayToSet(strArray, errMsg) {\n    if (!strArray) return {};\n\n    errMsg =\n      errMsg || 'Cannot make set from type other than Array of string elements';\n\n    if (!Array.isArray(strArray)) {\n      throw new Error(errMsg);\n    }\n\n    return strArray.reduce((set, el) => {\n      if (typeof el !== 'string') {\n        throw new Error(errMsg);\n      }\n      set[el] = true;\n\n      return set;\n    }, {});\n  }\n};\n", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = isArrayLike;\nfunction isArrayLike(value) {\n    return value && typeof value.length === 'number' && value.length >= 0 && value.length % 1 === 0;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nexports.default = function (fn) {\n    return function (...args /*, callback*/) {\n        var callback = args.pop();\n        return fn.call(this, args, callback);\n    };\n};\n\nmodule.exports = exports.default;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.fallback = fallback;\nexports.wrap = wrap;\n/* istanbul ignore file */\n\nvar hasQueueMicrotask = exports.hasQueueMicrotask = typeof queueMicrotask === 'function' && queueMicrotask;\nvar hasSetImmediate = exports.hasSetImmediate = typeof setImmediate === 'function' && setImmediate;\nvar hasNextTick = exports.hasNextTick = typeof process === 'object' && typeof process.nextTick === 'function';\n\nfunction fallback(fn) {\n    setTimeout(fn, 0);\n}\n\nfunction wrap(defer) {\n    return (fn, ...args) => defer(() => fn(...args));\n}\n\nvar _defer;\n\nif (hasQueueMicrotask) {\n    _defer = queueMicrotask;\n} else if (hasSetImmediate) {\n    _defer = setImmediate;\n} else if (hasNextTick) {\n    _defer = process.nextTick;\n} else {\n    _defer = fallback;\n}\n\nexports.default = wrap(_defer);", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = asyncify;\n\nvar _initialParams = require('./internal/initialParams.js');\n\nvar _initialParams2 = _interopRequireDefault(_initialParams);\n\nvar _setImmediate = require('./internal/setImmediate.js');\n\nvar _setImmediate2 = _interopRequireDefault(_setImmediate);\n\nvar _wrapAsync = require('./internal/wrapAsync.js');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Take a sync function and make it async, passing its return value to a\n * callback. This is useful for plugging sync functions into a waterfall,\n * series, or other async functions. Any arguments passed to the generated\n * function will be passed to the wrapped function (except for the final\n * callback argument). Errors thrown will be passed to the callback.\n *\n * If the function passed to `asyncify` returns a Promise, that promises's\n * resolved/rejected state will be used to call the callback, rather than simply\n * the synchronous return value.\n *\n * This also means you can asyncify ES2017 `async` functions.\n *\n * @name asyncify\n * @static\n * @memberOf module:Utils\n * @method\n * @alias wrapSync\n * @category Util\n * @param {Function} func - The synchronous function, or Promise-returning\n * function to convert to an {@link AsyncFunction}.\n * @returns {AsyncFunction} An asynchronous wrapper of the `func`. To be\n * invoked with `(args..., callback)`.\n * @example\n *\n * // passing a regular synchronous function\n * async.waterfall([\n *     async.apply(fs.readFile, filename, \"utf8\"),\n *     async.asyncify(JSON.parse),\n *     function (data, next) {\n *         // data is the result of parsing the text.\n *         // If there was a parsing error, it would have been caught.\n *     }\n * ], callback);\n *\n * // passing a function returning a promise\n * async.waterfall([\n *     async.apply(fs.readFile, filename, \"utf8\"),\n *     async.asyncify(function (contents) {\n *         return db.model.create(contents);\n *     }),\n *     function (model, next) {\n *         // `model` is the instantiated model object.\n *         // If there was an error, this function would be skipped.\n *     }\n * ], callback);\n *\n * // es2017 example, though `asyncify` is not needed if your JS environment\n * // supports async functions out of the box\n * var q = async.queue(async.asyncify(async function(file) {\n *     var intermediateStep = await processFile(file);\n *     return await somePromise(intermediateStep)\n * }));\n *\n * q.push(files);\n */\nfunction asyncify(func) {\n    if ((0, _wrapAsync.isAsync)(func)) {\n        return function (...args /*, callback*/) {\n            const callback = args.pop();\n            const promise = func.apply(this, args);\n            return handlePromise(promise, callback);\n        };\n    }\n\n    return (0, _initialParams2.default)(function (args, callback) {\n        var result;\n        try {\n            result = func.apply(this, args);\n        } catch (e) {\n            return callback(e);\n        }\n        // if result is Promise object\n        if (result && typeof result.then === 'function') {\n            return handlePromise(result, callback);\n        } else {\n            callback(null, result);\n        }\n    });\n}\n\nfunction handlePromise(promise, callback) {\n    return promise.then(value => {\n        invokeCallback(callback, null, value);\n    }, err => {\n        invokeCallback(callback, err && (err instanceof Error || err.message) ? err : new Error(err));\n    });\n}\n\nfunction invokeCallback(callback, error, value) {\n    try {\n        callback(error, value);\n    } catch (err) {\n        (0, _setImmediate2.default)(e => {\n            throw e;\n        }, err);\n    }\n}\nmodule.exports = exports.default;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.isAsyncIterable = exports.isAsyncGenerator = exports.isAsync = undefined;\n\nvar _asyncify = require('../asyncify.js');\n\nvar _asyncify2 = _interopRequireDefault(_asyncify);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction isAsync(fn) {\n    return fn[Symbol.toStringTag] === 'AsyncFunction';\n}\n\nfunction isAsyncGenerator(fn) {\n    return fn[Symbol.toStringTag] === 'AsyncGenerator';\n}\n\nfunction isAsyncIterable(obj) {\n    return typeof obj[Symbol.asyncIterator] === 'function';\n}\n\nfunction wrapAsync(asyncFn) {\n    if (typeof asyncFn !== 'function') throw new Error('expected a function');\n    return isAsync(asyncFn) ? (0, _asyncify2.default)(asyncFn) : asyncFn;\n}\n\nexports.default = wrapAsync;\nexports.isAsync = isAsync;\nexports.isAsyncGenerator = isAsyncGenerator;\nexports.isAsyncIterable = isAsyncIterable;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = awaitify;\n// conditionally promisify a function.\n// only return a promise if a callback is omitted\nfunction awaitify(asyncFn, arity) {\n    if (!arity) arity = asyncFn.length;\n    if (!arity) throw new Error('arity is undefined');\n    function awaitable(...args) {\n        if (typeof args[arity - 1] === 'function') {\n            return asyncFn.apply(this, args);\n        }\n\n        return new Promise((resolve, reject) => {\n            args[arity - 1] = (err, ...cbArgs) => {\n                if (err) return reject(err);\n                resolve(cbArgs.length > 1 ? cbArgs : cbArgs[0]);\n            };\n            asyncFn.apply(this, args);\n        });\n    }\n\n    return awaitable;\n}\nmodule.exports = exports.default;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _isArrayLike = require('./isArrayLike.js');\n\nvar _isArrayLike2 = _interopRequireDefault(_isArrayLike);\n\nvar _wrapAsync = require('./wrapAsync.js');\n\nvar _wrapAsync2 = _interopRequireDefault(_wrapAsync);\n\nvar _awaitify = require('./awaitify.js');\n\nvar _awaitify2 = _interopRequireDefault(_awaitify);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = (0, _awaitify2.default)((eachfn, tasks, callback) => {\n    var results = (0, _isArrayLike2.default)(tasks) ? [] : {};\n\n    eachfn(tasks, (task, key, taskCb) => {\n        (0, _wrapAsync2.default)(task)((err, ...result) => {\n            if (result.length < 2) {\n                [result] = result;\n            }\n            results[key] = result;\n            taskCb(err);\n        });\n    }, err => callback(err, results));\n}, 3);\nmodule.exports = exports.default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = once;\nfunction once(fn) {\n    function wrapper(...args) {\n        if (fn === null) return;\n        var callFn = fn;\n        fn = null;\n        callFn.apply(this, args);\n    }\n    Object.assign(wrapper, fn);\n    return wrapper;\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nexports.default = function (coll) {\n    return coll[Symbol.iterator] && coll[Symbol.iterator]();\n};\n\nmodule.exports = exports.default;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = createIterator;\n\nvar _isArrayLike = require('./isArrayLike.js');\n\nvar _isArrayLike2 = _interopRequireDefault(_isArrayLike);\n\nvar _getIterator = require('./getIterator.js');\n\nvar _getIterator2 = _interopRequireDefault(_getIterator);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction createArrayIterator(coll) {\n    var i = -1;\n    var len = coll.length;\n    return function next() {\n        return ++i < len ? { value: coll[i], key: i } : null;\n    };\n}\n\nfunction createES2015Iterator(iterator) {\n    var i = -1;\n    return function next() {\n        var item = iterator.next();\n        if (item.done) return null;\n        i++;\n        return { value: item.value, key: i };\n    };\n}\n\nfunction createObjectIterator(obj) {\n    var okeys = obj ? Object.keys(obj) : [];\n    var i = -1;\n    var len = okeys.length;\n    return function next() {\n        var key = okeys[++i];\n        if (key === '__proto__') {\n            return next();\n        }\n        return i < len ? { value: obj[key], key } : null;\n    };\n}\n\nfunction createIterator(coll) {\n    if ((0, _isArrayLike2.default)(coll)) {\n        return createArrayIterator(coll);\n    }\n\n    var iterator = (0, _getIterator2.default)(coll);\n    return iterator ? createES2015Iterator(iterator) : createObjectIterator(coll);\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = onlyOnce;\nfunction onlyOnce(fn) {\n    return function (...args) {\n        if (fn === null) throw new Error(\"Callback was already called.\");\n        var callFn = fn;\n        fn = null;\n        callFn.apply(this, args);\n    };\n}\nmodule.exports = exports.default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n// A temporary value used to identify if the loop should be broken.\n// See #1064, #1293\nconst breakLoop = {};\nexports.default = breakLoop;\nmodule.exports = exports.default;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = asyncEachOfLimit;\n\nvar _breakLoop = require('./breakLoop.js');\n\nvar _breakLoop2 = _interopRequireDefault(_breakLoop);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// for async generators\nfunction asyncEachOfLimit(generator, limit, iteratee, callback) {\n    let done = false;\n    let canceled = false;\n    let awaiting = false;\n    let running = 0;\n    let idx = 0;\n\n    function replenish() {\n        //console.log('replenish')\n        if (running >= limit || awaiting || done) return;\n        //console.log('replenish awaiting')\n        awaiting = true;\n        generator.next().then(({ value, done: iterDone }) => {\n            //console.log('got value', value)\n            if (canceled || done) return;\n            awaiting = false;\n            if (iterDone) {\n                done = true;\n                if (running <= 0) {\n                    //console.log('done nextCb')\n                    callback(null);\n                }\n                return;\n            }\n            running++;\n            iteratee(value, idx, iterateeCallback);\n            idx++;\n            replenish();\n        }).catch(handleError);\n    }\n\n    function iterateeCallback(err, result) {\n        //console.log('iterateeCallback')\n        running -= 1;\n        if (canceled) return;\n        if (err) return handleError(err);\n\n        if (err === false) {\n            done = true;\n            canceled = true;\n            return;\n        }\n\n        if (result === _breakLoop2.default || done && running <= 0) {\n            done = true;\n            //console.log('done iterCb')\n            return callback(null);\n        }\n        replenish();\n    }\n\n    function handleError(err) {\n        if (canceled) return;\n        awaiting = false;\n        done = true;\n        callback(err);\n    }\n\n    replenish();\n}\nmodule.exports = exports.default;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _once = require('./once.js');\n\nvar _once2 = _interopRequireDefault(_once);\n\nvar _iterator = require('./iterator.js');\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _onlyOnce = require('./onlyOnce.js');\n\nvar _onlyOnce2 = _interopRequireDefault(_onlyOnce);\n\nvar _wrapAsync = require('./wrapAsync.js');\n\nvar _asyncEachOfLimit = require('./asyncEachOfLimit.js');\n\nvar _asyncEachOfLimit2 = _interopRequireDefault(_asyncEachOfLimit);\n\nvar _breakLoop = require('./breakLoop.js');\n\nvar _breakLoop2 = _interopRequireDefault(_breakLoop);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = limit => {\n    return (obj, iteratee, callback) => {\n        callback = (0, _once2.default)(callback);\n        if (limit <= 0) {\n            throw new RangeError('concurrency limit cannot be less than 1');\n        }\n        if (!obj) {\n            return callback(null);\n        }\n        if ((0, _wrapAsync.isAsyncGenerator)(obj)) {\n            return (0, _asyncEachOfLimit2.default)(obj, limit, iteratee, callback);\n        }\n        if ((0, _wrapAsync.isAsyncIterable)(obj)) {\n            return (0, _asyncEachOfLimit2.default)(obj[Symbol.asyncIterator](), limit, iteratee, callback);\n        }\n        var nextElem = (0, _iterator2.default)(obj);\n        var done = false;\n        var canceled = false;\n        var running = 0;\n        var looping = false;\n\n        function iterateeCallback(err, value) {\n            if (canceled) return;\n            running -= 1;\n            if (err) {\n                done = true;\n                callback(err);\n            } else if (err === false) {\n                done = true;\n                canceled = true;\n            } else if (value === _breakLoop2.default || done && running <= 0) {\n                done = true;\n                return callback(null);\n            } else if (!looping) {\n                replenish();\n            }\n        }\n\n        function replenish() {\n            looping = true;\n            while (running < limit && !done) {\n                var elem = nextElem();\n                if (elem === null) {\n                    done = true;\n                    if (running <= 0) {\n                        callback(null);\n                    }\n                    return;\n                }\n                running += 1;\n                iteratee(elem.value, elem.key, (0, _onlyOnce2.default)(iterateeCallback));\n            }\n            looping = false;\n        }\n\n        replenish();\n    };\n};\n\nmodule.exports = exports.default;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _eachOfLimit2 = require('./internal/eachOfLimit.js');\n\nvar _eachOfLimit3 = _interopRequireDefault(_eachOfLimit2);\n\nvar _wrapAsync = require('./internal/wrapAsync.js');\n\nvar _wrapAsync2 = _interopRequireDefault(_wrapAsync);\n\nvar _awaitify = require('./internal/awaitify.js');\n\nvar _awaitify2 = _interopRequireDefault(_awaitify);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * The same as [`eachOf`]{@link module:Collections.eachOf} but runs a maximum of `limit` async operations at a\n * time.\n *\n * @name eachOfLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.eachOf]{@link module:Collections.eachOf}\n * @alias forEachOfLimit\n * @category Collection\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - An async function to apply to each\n * item in `coll`. The `key` is the item's key, or index in the case of an\n * array.\n * Invoked with (item, key, callback).\n * @param {Function} [callback] - A callback which is called when all\n * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n * @returns {Promise} a promise, if a callback is omitted\n */\nfunction eachOfLimit(coll, limit, iteratee, callback) {\n    return (0, _eachOfLimit3.default)(limit)(coll, (0, _wrapAsync2.default)(iteratee), callback);\n}\n\nexports.default = (0, _awaitify2.default)(eachOfLimit, 4);\nmodule.exports = exports.default;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _eachOfLimit = require('./eachOfLimit.js');\n\nvar _eachOfLimit2 = _interopRequireDefault(_eachOfLimit);\n\nvar _awaitify = require('./internal/awaitify.js');\n\nvar _awaitify2 = _interopRequireDefault(_awaitify);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * The same as [`eachOf`]{@link module:Collections.eachOf} but runs only a single async operation at a time.\n *\n * @name eachOfSeries\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.eachOf]{@link module:Collections.eachOf}\n * @alias forEachOfSeries\n * @category Collection\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async function to apply to each item in\n * `coll`.\n * Invoked with (item, key, callback).\n * @param {Function} [callback] - A callback which is called when all `iteratee`\n * functions have finished, or an error occurs. Invoked with (err).\n * @returns {Promise} a promise, if a callback is omitted\n */\nfunction eachOfSeries(coll, iteratee, callback) {\n    return (0, _eachOfLimit2.default)(coll, 1, iteratee, callback);\n}\nexports.default = (0, _awaitify2.default)(eachOfSeries, 3);\nmodule.exports = exports.default;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = series;\n\nvar _parallel2 = require('./internal/parallel.js');\n\nvar _parallel3 = _interopRequireDefault(_parallel2);\n\nvar _eachOfSeries = require('./eachOfSeries.js');\n\nvar _eachOfSeries2 = _interopRequireDefault(_eachOfSeries);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Run the functions in the `tasks` collection in series, each one running once\n * the previous function has completed. If any functions in the series pass an\n * error to its callback, no more functions are run, and `callback` is\n * immediately called with the value of the error. Otherwise, `callback`\n * receives an array of results when `tasks` have completed.\n *\n * It is also possible to use an object instead of an array. Each property will\n * be run as a function, and the results will be passed to the final `callback`\n * as an object instead of an array. This can be a more readable way of handling\n *  results from {@link async.series}.\n *\n * **Note** that while many implementations preserve the order of object\n * properties, the [ECMAScript Language Specification](http://www.ecma-international.org/ecma-262/5.1/#sec-8.6)\n * explicitly states that\n *\n * > The mechanics and order of enumerating the properties is not specified.\n *\n * So if you rely on the order in which your series of functions are executed,\n * and want this to work on all platforms, consider using an array.\n *\n * @name series\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {Array|Iterable|AsyncIterable|Object} tasks - A collection containing\n * [async functions]{@link AsyncFunction} to run in series.\n * Each function can complete with any number of optional `result` values.\n * @param {Function} [callback] - An optional callback to run once all the\n * functions have completed. This function gets a results array (or object)\n * containing all the result arguments passed to the `task` callbacks. Invoked\n * with (err, result).\n * @return {Promise} a promise, if no callback is passed\n * @example\n *\n * //Using Callbacks\n * async.series([\n *     function(callback) {\n *         setTimeout(function() {\n *             // do some async task\n *             callback(null, 'one');\n *         }, 200);\n *     },\n *     function(callback) {\n *         setTimeout(function() {\n *             // then do another async task\n *             callback(null, 'two');\n *         }, 100);\n *     }\n * ], function(err, results) {\n *     console.log(results);\n *     // results is equal to ['one','two']\n * });\n *\n * // an example using objects instead of arrays\n * async.series({\n *     one: function(callback) {\n *         setTimeout(function() {\n *             // do some async task\n *             callback(null, 1);\n *         }, 200);\n *     },\n *     two: function(callback) {\n *         setTimeout(function() {\n *             // then do another async task\n *             callback(null, 2);\n *         }, 100);\n *     }\n * }, function(err, results) {\n *     console.log(results);\n *     // results is equal to: { one: 1, two: 2 }\n * });\n *\n * //Using Promises\n * async.series([\n *     function(callback) {\n *         setTimeout(function() {\n *             callback(null, 'one');\n *         }, 200);\n *     },\n *     function(callback) {\n *         setTimeout(function() {\n *             callback(null, 'two');\n *         }, 100);\n *     }\n * ]).then(results => {\n *     console.log(results);\n *     // results is equal to ['one','two']\n * }).catch(err => {\n *     console.log(err);\n * });\n *\n * // an example using an object instead of an array\n * async.series({\n *     one: function(callback) {\n *         setTimeout(function() {\n *             // do some async task\n *             callback(null, 1);\n *         }, 200);\n *     },\n *     two: function(callback) {\n *         setTimeout(function() {\n *             // then do another async task\n *             callback(null, 2);\n *         }, 100);\n *     }\n * }).then(results => {\n *     console.log(results);\n *     // results is equal to: { one: 1, two: 2 }\n * }).catch(err => {\n *     console.log(err);\n * });\n *\n * //Using async/await\n * async () => {\n *     try {\n *         let results = await async.series([\n *             function(callback) {\n *                 setTimeout(function() {\n *                     // do some async task\n *                     callback(null, 'one');\n *                 }, 200);\n *             },\n *             function(callback) {\n *                 setTimeout(function() {\n *                     // then do another async task\n *                     callback(null, 'two');\n *                 }, 100);\n *             }\n *         ]);\n *         console.log(results);\n *         // results is equal to ['one','two']\n *     }\n *     catch (err) {\n *         console.log(err);\n *     }\n * }\n *\n * // an example using an object instead of an array\n * async () => {\n *     try {\n *         let results = await async.parallel({\n *             one: function(callback) {\n *                 setTimeout(function() {\n *                     // do some async task\n *                     callback(null, 1);\n *                 }, 200);\n *             },\n *            two: function(callback) {\n *                 setTimeout(function() {\n *                     // then do another async task\n *                     callback(null, 2);\n *                 }, 100);\n *            }\n *         });\n *         console.log(results);\n *         // results is equal to: { one: 1, two: 2 }\n *     }\n *     catch (err) {\n *         console.log(err);\n *     }\n * }\n *\n */\nfunction series(tasks, callback) {\n    return (0, _parallel3.default)(_eachOfSeries2.default, tasks, callback);\n}\nmodule.exports = exports.default;", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data.  Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored.  (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation.  For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes.  When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up.  When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer.  When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks.  If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk.  However,\n// a pathological inflate type of transform can cause excessive buffering\n// here.  For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output.  Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output.  In this case, you could write a very small\n// amount of input, and end up with a very large amount of output.  In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform.  A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\nvar _require$codes = require('../errors').codes,\n  ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n  ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n  ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n  ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = require('./_stream_duplex');\nrequire('inherits')(Transform, Duplex);\nfunction afterTransform(er, data) {\n  var ts = this._transformState;\n  ts.transforming = false;\n  var cb = ts.writecb;\n  if (cb === null) {\n    return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n  }\n  ts.writechunk = null;\n  ts.writecb = null;\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    this.push(data);\n  cb(er);\n  var rs = this._readableState;\n  rs.reading = false;\n  if (rs.needReadable || rs.length < rs.highWaterMark) {\n    this._read(rs.highWaterMark);\n  }\n}\nfunction Transform(options) {\n  if (!(this instanceof Transform)) return new Transform(options);\n  Duplex.call(this, options);\n  this._transformState = {\n    afterTransform: afterTransform.bind(this),\n    needTransform: false,\n    transforming: false,\n    writecb: null,\n    writechunk: null,\n    writeencoding: null\n  };\n\n  // start out asking for a readable event once data is transformed.\n  this._readableState.needReadable = true;\n\n  // we have implemented the _read method, and done the other things\n  // that Readable wants before the first _read call, so unset the\n  // sync guard flag.\n  this._readableState.sync = false;\n  if (options) {\n    if (typeof options.transform === 'function') this._transform = options.transform;\n    if (typeof options.flush === 'function') this._flush = options.flush;\n  }\n\n  // When the writable side finishes, then flush out anything remaining.\n  this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n  var _this = this;\n  if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n    this._flush(function (er, data) {\n      done(_this, er, data);\n    });\n  } else {\n    done(this, null, null);\n  }\n}\nTransform.prototype.push = function (chunk, encoding) {\n  this._transformState.needTransform = false;\n  return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side.  You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk.  If you pass\n// an error, then that'll put the hurt on the whole operation.  If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n  cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n  var ts = this._transformState;\n  ts.writecb = cb;\n  ts.writechunk = chunk;\n  ts.writeencoding = encoding;\n  if (!ts.transforming) {\n    var rs = this._readableState;\n    if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n  }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n  var ts = this._transformState;\n  if (ts.writechunk !== null && !ts.transforming) {\n    ts.transforming = true;\n    this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n  } else {\n    // mark that we need a transform, so that any data that comes in\n    // will get processed, now that we've asked for it.\n    ts.needTransform = true;\n  }\n};\nTransform.prototype._destroy = function (err, cb) {\n  Duplex.prototype._destroy.call(this, err, function (err2) {\n    cb(err2);\n  });\n};\nfunction done(stream, er, data) {\n  if (er) return stream.emit('error', er);\n  if (data != null)\n    // single equals check for both `null` and `undefined`\n    stream.push(data);\n\n  // TODO(BridgeAR): Write a test for these two error cases\n  // if there's nothing in the write buffer, then that means\n  // that nothing more will ever be provided\n  if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n  if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n  return stream.push(null);\n}", "// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\nvar Transform = require('./_stream_transform');\nrequire('inherits')(PassThrough, Transform);\nfunction PassThrough(options) {\n  if (!(this instanceof PassThrough)) return new PassThrough(options);\n  Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n  cb(null, chunk);\n};", "// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n'use strict';\n\nvar eos;\nfunction once(callback) {\n  var called = false;\n  return function () {\n    if (called) return;\n    called = true;\n    callback.apply(void 0, arguments);\n  };\n}\nvar _require$codes = require('../../../errors').codes,\n  ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n  ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n  // Rethrow the error if it exists to avoid swallowing it\n  if (err) throw err;\n}\nfunction isRequest(stream) {\n  return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n  callback = once(callback);\n  var closed = false;\n  stream.on('close', function () {\n    closed = true;\n  });\n  if (eos === undefined) eos = require('./end-of-stream');\n  eos(stream, {\n    readable: reading,\n    writable: writing\n  }, function (err) {\n    if (err) return callback(err);\n    closed = true;\n    callback();\n  });\n  var destroyed = false;\n  return function (err) {\n    if (closed) return;\n    if (destroyed) return;\n    destroyed = true;\n\n    // request.destroy just do .end - .abort is what we want\n    if (isRequest(stream)) return stream.abort();\n    if (typeof stream.destroy === 'function') return stream.destroy();\n    callback(err || new ERR_STREAM_DESTROYED('pipe'));\n  };\n}\nfunction call(fn) {\n  fn();\n}\nfunction pipe(from, to) {\n  return from.pipe(to);\n}\nfunction popCallback(streams) {\n  if (!streams.length) return noop;\n  if (typeof streams[streams.length - 1] !== 'function') return noop;\n  return streams.pop();\n}\nfunction pipeline() {\n  for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n    streams[_key] = arguments[_key];\n  }\n  var callback = popCallback(streams);\n  if (Array.isArray(streams[0])) streams = streams[0];\n  if (streams.length < 2) {\n    throw new ERR_MISSING_ARGS('streams');\n  }\n  var error;\n  var destroys = streams.map(function (stream, i) {\n    var reading = i < streams.length - 1;\n    var writing = i > 0;\n    return destroyer(stream, reading, writing, function (err) {\n      if (!error) error = err;\n      if (err) destroys.forEach(call);\n      if (reading) return;\n      destroys.forEach(call);\n      callback(error);\n    });\n  });\n  return streams.reduce(pipe);\n}\nmodule.exports = pipeline;", "var Stream = require('stream');\nif (process.env.READABLE_STREAM === 'disable' && Stream) {\n  module.exports = Stream.Readable;\n  Object.assign(module.exports, Stream);\n  module.exports.Stream = Stream;\n} else {\n  exports = module.exports = require('./lib/_stream_readable.js');\n  exports.Stream = Stream || exports;\n  exports.Readable = exports;\n  exports.Writable = require('./lib/_stream_writable.js');\n  exports.Duplex = require('./lib/_stream_duplex.js');\n  exports.Transform = require('./lib/_stream_transform.js');\n  exports.PassThrough = require('./lib/_stream_passthrough.js');\n  exports.finished = require('./lib/internal/streams/end-of-stream.js');\n  exports.pipeline = require('./lib/internal/streams/pipeline.js');\n}\n", "/**\n * Contains all configured adapters for the given environment.\n *\n * @type {Array}\n * @public\n */\nvar adapters = [];\n\n/**\n * Contains all modifier functions.\n *\n * @typs {Array}\n * @public\n */\nvar modifiers = [];\n\n/**\n * Our default logger.\n *\n * @public\n */\nvar logger = function devnull() {};\n\n/**\n * Register a new adapter that will used to find environments.\n *\n * @param {Function} adapter A function that will return the possible env.\n * @returns {Boolean} Indication of a successful add.\n * @public\n */\nfunction use(adapter) {\n  if (~adapters.indexOf(adapter)) return false;\n\n  adapters.push(adapter);\n  return true;\n}\n\n/**\n * Assign a new log method.\n *\n * @param {Function} custom The log method.\n * @public\n */\nfunction set(custom) {\n  logger = custom;\n}\n\n/**\n * Check if the namespace is allowed by any of our adapters.\n *\n * @param {String} namespace The namespace that needs to be enabled\n * @returns {Boolean|Promise} Indication if the namespace is enabled by our adapters.\n * @public\n */\nfunction enabled(namespace) {\n  var async = [];\n\n  for (var i = 0; i < adapters.length; i++) {\n    if (adapters[i].async) {\n      async.push(adapters[i]);\n      continue;\n    }\n\n    if (adapters[i](namespace)) return true;\n  }\n\n  if (!async.length) return false;\n\n  //\n  // Now that we know that we Async functions, we know we run in an ES6\n  // environment and can use all the API's that they offer, in this case\n  // we want to return a Promise so that we can `await` in React-Native\n  // for an async adapter.\n  //\n  return new Promise(function pinky(resolve) {\n    Promise.all(\n      async.map(function prebind(fn) {\n        return fn(namespace);\n      })\n    ).then(function resolved(values) {\n      resolve(values.some(Boolean));\n    });\n  });\n}\n\n/**\n * Add a new message modifier to the debugger.\n *\n * @param {Function} fn Modification function.\n * @returns {Boolean} Indication of a successful add.\n * @public\n */\nfunction modify(fn) {\n  if (~modifiers.indexOf(fn)) return false;\n\n  modifiers.push(fn);\n  return true;\n}\n\n/**\n * Write data to the supplied logger.\n *\n * @param {Object} meta Meta information about the log.\n * @param {Array} args Arguments for console.log.\n * @public\n */\nfunction write() {\n  logger.apply(logger, arguments);\n}\n\n/**\n * Process the message with the modifiers.\n *\n * @param {Mixed} message The message to be transformed by modifers.\n * @returns {String} Transformed message.\n * @public\n */\nfunction process(message) {\n  for (var i = 0; i < modifiers.length; i++) {\n    message = modifiers[i].apply(modifiers[i], arguments);\n  }\n\n  return message;\n}\n\n/**\n * Introduce options to the logger function.\n *\n * @param {Function} fn Calback function.\n * @param {Object} options Properties to introduce on fn.\n * @returns {Function} The passed function\n * @public\n */\nfunction introduce(fn, options) {\n  var has = Object.prototype.hasOwnProperty;\n\n  for (var key in options) {\n    if (has.call(options, key)) {\n      fn[key] = options[key];\n    }\n  }\n\n  return fn;\n}\n\n/**\n * Nope, we're not allowed to write messages.\n *\n * @returns {Boolean} false\n * @public\n */\nfunction nope(options) {\n  options.enabled = false;\n  options.modify = modify;\n  options.set = set;\n  options.use = use;\n\n  return introduce(function diagnopes() {\n    return false;\n  }, options);\n}\n\n/**\n * Yep, we're allowed to write debug messages.\n *\n * @param {Object} options The options for the process.\n * @returns {Function} The function that does the logging.\n * @public\n */\nfunction yep(options) {\n  /**\n   * The function that receives the actual debug information.\n   *\n   * @returns {Boolean} indication that we're logging.\n   * @public\n   */\n  function diagnostics() {\n    var args = Array.prototype.slice.call(arguments, 0);\n\n    write.call(write, options, process(args, options));\n    return true;\n  }\n\n  options.enabled = true;\n  options.modify = modify;\n  options.set = set;\n  options.use = use;\n\n  return introduce(diagnostics, options);\n}\n\n/**\n * Simple helper function to introduce various of helper methods to our given\n * diagnostics function.\n *\n * @param {Function} diagnostics The diagnostics function.\n * @returns {Function} diagnostics\n * @public\n */\nmodule.exports = function create(diagnostics) {\n  diagnostics.introduce = introduce;\n  diagnostics.enabled = enabled;\n  diagnostics.process = process;\n  diagnostics.modify = modify;\n  diagnostics.write = write;\n  diagnostics.nope = nope;\n  diagnostics.yep = yep;\n  diagnostics.set = set;\n  diagnostics.use = use;\n\n  return diagnostics;\n}\n", "var create = require('../diagnostics');\n\n/**\n * Create a new diagnostics logger.\n *\n * @param {String} namespace The namespace it should enable.\n * @param {Object} options Additional options.\n * @returns {Function} The logger.\n * @public\n */\nvar diagnostics = create(function prod(namespace, options) {\n  options = options || {};\n  options.namespace = namespace;\n  options.prod = true;\n  options.dev = false;\n\n  if (!(options.force || prod.force)) return prod.nope(options);\n  return prod.yep(options);\n});\n\n//\n// Expose the diagnostics logger.\n//\nmodule.exports = diagnostics;\n", "'use strict';\n\nvar cssKeywords = {\n\taliceblue: [240, 248, 255],\n\tantiquewhite: [250, 235, 215],\n\taqua: [0, 255, 255],\n\taquamarine: [127, 255, 212],\n\tazure: [240, 255, 255],\n\tbeige: [245, 245, 220],\n\tbisque: [255, 228, 196],\n\tblack: [0, 0, 0],\n\tblanchedalmond: [255, 235, 205],\n\tblue: [0, 0, 255],\n\tblueviolet: [138, 43, 226],\n\tbrown: [165, 42, 42],\n\tburlywood: [222, 184, 135],\n\tcadetblue: [95, 158, 160],\n\tchartreuse: [127, 255, 0],\n\tchocolate: [210, 105, 30],\n\tcoral: [255, 127, 80],\n\tcornflowerblue: [100, 149, 237],\n\tcornsilk: [255, 248, 220],\n\tcrimson: [220, 20, 60],\n\tcyan: [0, 255, 255],\n\tdarkblue: [0, 0, 139],\n\tdarkcyan: [0, 139, 139],\n\tdarkgoldenrod: [184, 134, 11],\n\tdarkgray: [169, 169, 169],\n\tdarkgreen: [0, 100, 0],\n\tdarkgrey: [169, 169, 169],\n\tdarkkhaki: [189, 183, 107],\n\tdarkmagenta: [139, 0, 139],\n\tdarkolivegreen: [85, 107, 47],\n\tdarkorange: [255, 140, 0],\n\tdarkorchid: [153, 50, 204],\n\tdarkred: [139, 0, 0],\n\tdarksalmon: [233, 150, 122],\n\tdarkseagreen: [143, 188, 143],\n\tdarkslateblue: [72, 61, 139],\n\tdarkslategray: [47, 79, 79],\n\tdarkslategrey: [47, 79, 79],\n\tdarkturquoise: [0, 206, 209],\n\tdarkviolet: [148, 0, 211],\n\tdeeppink: [255, 20, 147],\n\tdeepskyblue: [0, 191, 255],\n\tdimgray: [105, 105, 105],\n\tdimgrey: [105, 105, 105],\n\tdodgerblue: [30, 144, 255],\n\tfirebrick: [178, 34, 34],\n\tfloralwhite: [255, 250, 240],\n\tforestgreen: [34, 139, 34],\n\tfuchsia: [255, 0, 255],\n\tgainsboro: [220, 220, 220],\n\tghostwhite: [248, 248, 255],\n\tgold: [255, 215, 0],\n\tgoldenrod: [218, 165, 32],\n\tgray: [128, 128, 128],\n\tgreen: [0, 128, 0],\n\tgreenyellow: [173, 255, 47],\n\tgrey: [128, 128, 128],\n\thoneydew: [240, 255, 240],\n\thotpink: [255, 105, 180],\n\tindianred: [205, 92, 92],\n\tindigo: [75, 0, 130],\n\tivory: [255, 255, 240],\n\tkhaki: [240, 230, 140],\n\tlavender: [230, 230, 250],\n\tlavenderblush: [255, 240, 245],\n\tlawngreen: [124, 252, 0],\n\tlemonchiffon: [255, 250, 205],\n\tlightblue: [173, 216, 230],\n\tlightcoral: [240, 128, 128],\n\tlightcyan: [224, 255, 255],\n\tlightgoldenrodyellow: [250, 250, 210],\n\tlightgray: [211, 211, 211],\n\tlightgreen: [144, 238, 144],\n\tlightgrey: [211, 211, 211],\n\tlightpink: [255, 182, 193],\n\tlightsalmon: [255, 160, 122],\n\tlightseagreen: [32, 178, 170],\n\tlightskyblue: [135, 206, 250],\n\tlightslategray: [119, 136, 153],\n\tlightslategrey: [119, 136, 153],\n\tlightsteelblue: [176, 196, 222],\n\tlightyellow: [255, 255, 224],\n\tlime: [0, 255, 0],\n\tlimegreen: [50, 205, 50],\n\tlinen: [250, 240, 230],\n\tmagenta: [255, 0, 255],\n\tmaroon: [128, 0, 0],\n\tmediumaquamarine: [102, 205, 170],\n\tmediumblue: [0, 0, 205],\n\tmediumorchid: [186, 85, 211],\n\tmediumpurple: [147, 112, 219],\n\tmediumseagreen: [60, 179, 113],\n\tmediumslateblue: [123, 104, 238],\n\tmediumspringgreen: [0, 250, 154],\n\tmediumturquoise: [72, 209, 204],\n\tmediumvioletred: [199, 21, 133],\n\tmidnightblue: [25, 25, 112],\n\tmintcream: [245, 255, 250],\n\tmistyrose: [255, 228, 225],\n\tmoccasin: [255, 228, 181],\n\tnavajowhite: [255, 222, 173],\n\tnavy: [0, 0, 128],\n\toldlace: [253, 245, 230],\n\tolive: [128, 128, 0],\n\tolivedrab: [107, 142, 35],\n\torange: [255, 165, 0],\n\torangered: [255, 69, 0],\n\torchid: [218, 112, 214],\n\tpalegoldenrod: [238, 232, 170],\n\tpalegreen: [152, 251, 152],\n\tpaleturquoise: [175, 238, 238],\n\tpalevioletred: [219, 112, 147],\n\tpapayawhip: [255, 239, 213],\n\tpeachpuff: [255, 218, 185],\n\tperu: [205, 133, 63],\n\tpink: [255, 192, 203],\n\tplum: [221, 160, 221],\n\tpowderblue: [176, 224, 230],\n\tpurple: [128, 0, 128],\n\trebeccapurple: [102, 51, 153],\n\tred: [255, 0, 0],\n\trosybrown: [188, 143, 143],\n\troyalblue: [65, 105, 225],\n\tsaddlebrown: [139, 69, 19],\n\tsalmon: [250, 128, 114],\n\tsandybrown: [244, 164, 96],\n\tseagreen: [46, 139, 87],\n\tseashell: [255, 245, 238],\n\tsienna: [160, 82, 45],\n\tsilver: [192, 192, 192],\n\tskyblue: [135, 206, 235],\n\tslateblue: [106, 90, 205],\n\tslategray: [112, 128, 144],\n\tslategrey: [112, 128, 144],\n\tsnow: [255, 250, 250],\n\tspringgreen: [0, 255, 127],\n\tsteelblue: [70, 130, 180],\n\ttan: [210, 180, 140],\n\tteal: [0, 128, 128],\n\tthistle: [216, 191, 216],\n\ttomato: [255, 99, 71],\n\tturquoise: [64, 224, 208],\n\tviolet: [238, 130, 238],\n\twheat: [245, 222, 179],\n\twhite: [255, 255, 255],\n\twhitesmoke: [245, 245, 245],\n\tyellow: [255, 255, 0],\n\tyellowgreen: [154, 205, 50]\n};\n\nconst reverseNames = Object.create(null);\n\n// Create a list of reverse color names\nfor (const name in cssKeywords) {\n\tif (Object.hasOwn(cssKeywords, name)) {\n\t\treverseNames[cssKeywords[name]] = name;\n\t}\n}\n\nconst cs = {\n\tto: {},\n\tget: {},\n};\n\ncs.get = function (string) {\n\tconst prefix = string.slice(0, 3).toLowerCase();\n\tlet value;\n\tlet model;\n\tswitch (prefix) {\n\t\tcase 'hsl': {\n\t\t\tvalue = cs.get.hsl(string);\n\t\t\tmodel = 'hsl';\n\t\t\tbreak;\n\t\t}\n\n\t\tcase 'hwb': {\n\t\t\tvalue = cs.get.hwb(string);\n\t\t\tmodel = 'hwb';\n\t\t\tbreak;\n\t\t}\n\n\t\tdefault: {\n\t\t\tvalue = cs.get.rgb(string);\n\t\t\tmodel = 'rgb';\n\t\t\tbreak;\n\t\t}\n\t}\n\n\tif (!value) {\n\t\treturn null;\n\t}\n\n\treturn {model, value};\n};\n\ncs.get.rgb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tconst abbr = /^#([a-f\\d]{3,4})$/i;\n\tconst hex = /^#([a-f\\d]{6})([a-f\\d]{2})?$/i;\n\tconst rgba = /^rgba?\\(\\s*([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)(?=[\\s,])\\s*(?:,\\s*)?([+-]?\\d+)\\s*(?:[\\s,|/]\\s*([+-]?[\\d.]+)(%?)\\s*)?\\)$/;\n\tconst per = /^rgba?\\(\\s*([+-]?[\\d.]+)%\\s*,?\\s*([+-]?[\\d.]+)%\\s*,?\\s*([+-]?[\\d.]+)%\\s*(?:[\\s,|/]\\s*([+-]?[\\d.]+)(%?)\\s*)?\\)$/;\n\tconst keyword = /^(\\w+)$/;\n\n\tlet rgb = [0, 0, 0, 1];\n\tlet match;\n\tlet i;\n\tlet hexAlpha;\n\n\tif (match = string.match(hex)) {\n\t\thexAlpha = match[2];\n\t\tmatch = match[1];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\t// https://jsperf.com/slice-vs-substr-vs-substring-methods-long-string/19\n\t\t\tconst i2 = i * 2;\n\t\t\trgb[i] = Number.parseInt(match.slice(i2, i2 + 2), 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = Number.parseInt(hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(abbr)) {\n\t\tmatch = match[1];\n\t\thexAlpha = match[3];\n\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Number.parseInt(match[i] + match[i], 16);\n\t\t}\n\n\t\tif (hexAlpha) {\n\t\t\trgb[3] = Number.parseInt(hexAlpha + hexAlpha, 16) / 255;\n\t\t}\n\t} else if (match = string.match(rgba)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Number.parseInt(match[i + 1], 10);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = match[5] ? Number.parseFloat(match[4]) * 0.01 : Number.parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.match(per)) {\n\t\tfor (i = 0; i < 3; i++) {\n\t\t\trgb[i] = Math.round(Number.parseFloat(match[i + 1]) * 2.55);\n\t\t}\n\n\t\tif (match[4]) {\n\t\t\trgb[3] = match[5] ? Number.parseFloat(match[4]) * 0.01 : Number.parseFloat(match[4]);\n\t\t}\n\t} else if (match = string.match(keyword)) {\n\t\tif (match[1] === 'transparent') {\n\t\t\treturn [0, 0, 0, 0];\n\t\t}\n\n\t\tif (!Object.hasOwn(cssKeywords, match[1])) {\n\t\t\treturn null;\n\t\t}\n\n\t\trgb = cssKeywords[match[1]];\n\t\trgb[3] = 1;\n\n\t\treturn rgb;\n\t} else {\n\t\treturn null;\n\t}\n\n\tfor (i = 0; i < 3; i++) {\n\t\trgb[i] = clamp(rgb[i], 0, 255);\n\t}\n\n\trgb[3] = clamp(rgb[3], 0, 1);\n\n\treturn rgb;\n};\n\ncs.get.hsl = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tconst hsl = /^hsla?\\(\\s*([+-]?(?:\\d{0,3}\\.)?\\d+)(?:deg)?\\s*,?\\s*([+-]?[\\d.]+)%\\s*,?\\s*([+-]?[\\d.]+)%\\s*(?:[,|/]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tconst match = string.match(hsl);\n\n\tif (match) {\n\t\tconst alpha = Number.parseFloat(match[4]);\n\t\tconst h = ((Number.parseFloat(match[1]) % 360) + 360) % 360;\n\t\tconst s = clamp(Number.parseFloat(match[2]), 0, 100);\n\t\tconst l = clamp(Number.parseFloat(match[3]), 0, 100);\n\t\tconst a = clamp(Number.isNaN(alpha) ? 1 : alpha, 0, 1);\n\n\t\treturn [h, s, l, a];\n\t}\n\n\treturn null;\n};\n\ncs.get.hwb = function (string) {\n\tif (!string) {\n\t\treturn null;\n\t}\n\n\tconst hwb = /^hwb\\(\\s*([+-]?\\d{0,3}(?:\\.\\d+)?)(?:deg)?\\s*[\\s,]\\s*([+-]?[\\d.]+)%\\s*[\\s,]\\s*([+-]?[\\d.]+)%\\s*(?:[\\s,]\\s*([+-]?(?=\\.\\d|\\d)(?:0|[1-9]\\d*)?(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)\\s*)?\\)$/;\n\tconst match = string.match(hwb);\n\n\tif (match) {\n\t\tconst alpha = Number.parseFloat(match[4]);\n\t\tconst h = ((Number.parseFloat(match[1]) % 360) + 360) % 360;\n\t\tconst w = clamp(Number.parseFloat(match[2]), 0, 100);\n\t\tconst b = clamp(Number.parseFloat(match[3]), 0, 100);\n\t\tconst a = clamp(Number.isNaN(alpha) ? 1 : alpha, 0, 1);\n\t\treturn [h, w, b, a];\n\t}\n\n\treturn null;\n};\n\ncs.to.hex = function (...rgba) {\n\treturn (\n\t\t'#' +\n\t\thexDouble(rgba[0]) +\n\t\thexDouble(rgba[1]) +\n\t\thexDouble(rgba[2]) +\n\t\t(rgba[3] < 1\n\t\t\t? (hexDouble(Math.round(rgba[3] * 255)))\n\t\t\t: '')\n\t);\n};\n\ncs.to.rgb = function (...rgba) {\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ')'\n\t\t: 'rgba(' + Math.round(rgba[0]) + ', ' + Math.round(rgba[1]) + ', ' + Math.round(rgba[2]) + ', ' + rgba[3] + ')';\n};\n\ncs.to.rgb.percent = function (...rgba) {\n\tconst r = Math.round(rgba[0] / 255 * 100);\n\tconst g = Math.round(rgba[1] / 255 * 100);\n\tconst b = Math.round(rgba[2] / 255 * 100);\n\n\treturn rgba.length < 4 || rgba[3] === 1\n\t\t? 'rgb(' + r + '%, ' + g + '%, ' + b + '%)'\n\t\t: 'rgba(' + r + '%, ' + g + '%, ' + b + '%, ' + rgba[3] + ')';\n};\n\ncs.to.hsl = function (...hsla) {\n\treturn hsla.length < 4 || hsla[3] === 1\n\t\t? 'hsl(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%)'\n\t\t: 'hsla(' + hsla[0] + ', ' + hsla[1] + '%, ' + hsla[2] + '%, ' + hsla[3] + ')';\n};\n\n// Hwb is a bit different than rgb(a) & hsl(a) since there is no alpha specific syntax\n// (hwb have alpha optional & 1 is default value)\ncs.to.hwb = function (...hwba) {\n\tlet a = '';\n\tif (hwba.length >= 4 && hwba[3] !== 1) {\n\t\ta = ', ' + hwba[3];\n\t}\n\n\treturn 'hwb(' + hwba[0] + ', ' + hwba[1] + '%, ' + hwba[2] + '%' + a + ')';\n};\n\ncs.to.keyword = function (...rgb) {\n\treturn reverseNames[rgb.slice(0, 3)];\n};\n\n// Helpers\nfunction clamp(number_, min, max) {\n\treturn Math.min(Math.max(min, number_), max);\n}\n\nfunction hexDouble(number_) {\n\tconst string_ = Math.round(number_).toString(16).toUpperCase();\n\treturn (string_.length < 2) ? '0' + string_ : string_;\n}\n\n/* MIT license */\n/* eslint-disable no-mixed-operators */\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n//       values that give correct `typeof` results).\n//       do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert$1 = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\toklab: {channels: 3, labels: ['okl', 'oka', 'okb']},\n\tlch: {channels: 3, labels: 'lch'},\n\toklch: {channels: 3, labels: ['okl', 'okc', 'okh']},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']},\n};\n\n// LAB f(t) constant\nconst LAB_FT = (6 / 29) ** 3;\n\n// SRGB non-linear transform functions\nfunction srgbNonlinearTransform(c) {\n\tconst cc = c > 0.003_130_8\n\t\t? ((1.055 * (c ** (1 / 2.4))) - 0.055)\n\t\t: c * 12.92;\n\treturn Math.min(Math.max(0, cc), 1);\n}\n\nfunction srgbNonlinearTransformInv(c) {\n\treturn c > 0.040_45 ? (((c + 0.055) / 1.055) ** 2.4) : (c / 12.92);\n}\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert$1)) {\n\tif (!('channels' in convert$1[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert$1[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert$1[model].labels.length !== convert$1[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert$1[model];\n\tdelete convert$1[model].channels;\n\tdelete convert$1[model].labels;\n\tObject.defineProperty(convert$1[model], 'channels', {value: channels});\n\tObject.defineProperty(convert$1[model], 'labels', {value: labels});\n}\n\nconvert$1.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tswitch (max) {\n\t\tcase min: {\n\t\t\th = 0;\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase r: {\n\t\t\th = (g - b) / delta;\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase g: {\n\t\t\th = 2 + (b - r) / delta;\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase b: {\n\t\t\th = 4 + (r - g) / delta;\n\n\t\t\tbreak;\n\t\t}\n\t// No default\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert$1.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tswitch (v) {\n\t\t\tcase r: {\n\t\t\t\th = bdif - gdif;\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase g: {\n\t\t\t\th = (1 / 3) + rdif - bdif;\n\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase b: {\n\t\t\t\th = (2 / 3) + gdif - rdif;\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t// No default\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100,\n\t];\n};\n\nconvert$1.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert$1.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert$1.rgb.oklab = function (rgb) {\n\t// Assume sRGB\n\tconst r = srgbNonlinearTransformInv(rgb[0] / 255);\n\tconst g = srgbNonlinearTransformInv(rgb[1] / 255);\n\tconst b = srgbNonlinearTransformInv(rgb[2] / 255);\n\n\tconst lp = Math.cbrt(0.412_221_470_8 * r + 0.536_332_536_3 * g + 0.051_445_992_9 * b);\n\tconst mp = Math.cbrt(0.211_903_498_2 * r + 0.680_699_545_1 * g + 0.107_396_956_6 * b);\n\tconst sp = Math.cbrt(0.088_302_461_9 * r + 0.281_718_837_6 * g + 0.629_978_700_5 * b);\n\n\tconst l = 0.210_454_255_3 * lp + 0.793_617_785 * mp - 0.004_072_046_8 * sp;\n\tconst aa = 1.977_998_495_1 * lp - 2.428_592_205 * mp + 0.450_593_709_9 * sp;\n\tconst bb = 0.025_904_037_1 * lp + 0.782_771_766_2 * mp - 0.808_675_766 * sp;\n\n\treturn [l * 100, aa * 100, bb * 100];\n};\n\nconvert$1.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert$1.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Number.POSITIVE_INFINITY;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert$1.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert$1.rgb.xyz = function (rgb) {\n\t// Assume sRGB\n\tconst r = srgbNonlinearTransformInv(rgb[0] / 255);\n\tconst g = srgbNonlinearTransformInv(rgb[1] / 255);\n\tconst b = srgbNonlinearTransformInv(rgb[2] / 255);\n\n\tconst x = (r * 0.412_456_4) + (g * 0.357_576_1) + (b * 0.180_437_5);\n\tconst y = (r * 0.212_672_9) + (g * 0.715_152_2) + (b * 0.072_175);\n\tconst z = (r * 0.019_333_9) + (g * 0.119_192) + (b * 0.950_304_1);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert$1.rgb.lab = function (rgb) {\n\tconst xyz = convert$1.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > LAB_FT ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > LAB_FT ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > LAB_FT ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert$1.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t3;\n\tlet value;\n\n\tif (s === 0) {\n\t\tvalue = l * 255;\n\t\treturn [value, value, value];\n\t}\n\n\tconst t2 = l < 0.5 ? l * (1 + s) : l + s - l * s;\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tvalue = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tvalue = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tvalue = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tvalue = t1;\n\t\t}\n\n\t\trgb[i] = value * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert$1.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert$1.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0: {\n\t\t\treturn [v, t, p];\n\t\t}\n\n\t\tcase 1: {\n\t\t\treturn [q, v, p];\n\t\t}\n\n\t\tcase 2: {\n\t\t\treturn [p, v, t];\n\t\t}\n\n\t\tcase 3: {\n\t\t\treturn [p, q, v];\n\t\t}\n\n\t\tcase 4: {\n\t\t\treturn [t, p, v];\n\t\t}\n\n\t\tcase 5: {\n\t\t\treturn [v, p, q];\n\t\t}\n\t}\n};\n\nconvert$1.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert$1.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\t// eslint-disable-next-line no-bitwise\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces, default-case-last */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: { r = v;  g = n;  b = wh; break;\n\t\t}\n\n\t\tcase 1: { r = n;  g = v;  b = wh; break;\n\t\t}\n\n\t\tcase 2: { r = wh; g = v;  b = n; break;\n\t\t}\n\n\t\tcase 3: { r = wh; g = n;  b = v; break;\n\t\t}\n\n\t\tcase 4: { r = n;  g = wh; b = v; break;\n\t\t}\n\n\t\tcase 5: { r = v;  g = wh; b = n; break;\n\t\t}\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces, default-case-last */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert$1.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert$1.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.240_454_2) + (y * -1.537_138_5) + (z * -0.498_531_4);\n\tg = (x * -0.969_266) + (y * 1.876_010_8) + (z * 0.041_556);\n\tb = (x * 0.055_643_4) + (y * -0.204_025_9) + (z * 1.057_225_2);\n\n\t// Assume sRGB\n\tr = srgbNonlinearTransform(r);\n\tg = srgbNonlinearTransform(g);\n\tb = srgbNonlinearTransform(b);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert$1.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > LAB_FT ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > LAB_FT ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > LAB_FT ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert$1.xyz.oklab = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\n\tconst lp = Math.cbrt(0.818_933_010_1 * x + 0.361_866_742_4 * y - 0.128_859_713_7 * z);\n\tconst mp = Math.cbrt(0.032_984_543_6 * x + 0.929_311_871_5 * y + 0.036_145_638_7 * z);\n\tconst sp = Math.cbrt(0.048_200_301_8 * x + 0.264_366_269_1 * y + 0.633_851_707 * z);\n\n\tconst l = 0.210_454_255_3 * lp + 0.793_617_785 * mp - 0.004_072_046_8 * sp;\n\tconst a = 1.977_998_495_1 * lp - 2.428_592_205 * mp + 0.450_593_709_9 * sp;\n\tconst b = 0.025_904_037_1 * lp + 0.782_771_766_2 * mp - 0.808_675_766 * sp;\n\n\treturn [l * 100, a * 100, b * 100];\n};\n\nconvert$1.oklab.oklch = function (oklab) {\n\treturn convert$1.lab.lch(oklab);\n};\n\nconvert$1.oklab.xyz = function (oklab) {\n\tconst ll = oklab[0] / 100;\n\tconst a = oklab[1] / 100;\n\tconst b = oklab[2] / 100;\n\n\tconst l = (0.999_999_998 * ll + 0.396_337_792 * a + 0.215_803_758 * b) ** 3;\n\tconst m = (1.000_000_008 * ll - 0.105_561_342 * a - 0.063_854_175 * b) ** 3;\n\tconst s = (1.000_000_055 * ll - 0.089_484_182 * a - 1.291_485_538 * b) ** 3;\n\n\tconst x = 1.227_013_851 * l - 0.557_799_98 * m + 0.281_256_149 * s;\n\tconst y = -0.040_580_178 * l + 1.112_256_87 * m - 0.071_676_679 * s;\n\tconst z = -0.076_381_285 * l - 0.421_481_978 * m + 1.586_163_22 * s;\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert$1.oklab.rgb = function (oklab) {\n\tconst ll = oklab[0] / 100;\n\tconst aa = oklab[1] / 100;\n\tconst bb = oklab[2] / 100;\n\n\tconst l = (ll + 0.396_337_777_4 * aa + 0.215_803_757_3 * bb) ** 3;\n\tconst m = (ll - 0.105_561_345_8 * aa - 0.063_854_172_8 * bb) ** 3;\n\tconst s = (ll - 0.089_484_177_5 * aa - 1.291_485_548 * bb) ** 3;\n\n\t// Assume sRGB\n\tconst r = srgbNonlinearTransform(4.076_741_662_1 * l - 3.307_711_591_3 * m + 0.230_969_929_2 * s);\n\tconst g = srgbNonlinearTransform(-1.268_438_004_6 * l + 2.609_757_401_1 * m - 0.341_319_396_5 * s);\n\tconst b = srgbNonlinearTransform(-0.004_196_086_3 * l - 0.703_418_614_7 * m + 1.707_614_701 * s);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert$1.oklch.oklab = function (oklch) {\n\treturn convert$1.lch.lab(oklch);\n};\n\nconvert$1.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > LAB_FT ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > LAB_FT ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > LAB_FT ? z2 : (z - 16 / 116) / 7.787;\n\n\t// Illuminant D65 XYZ Tristrimulus Values\n\t// https://en.wikipedia.org/wiki/CIE_1931_color_space\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert$1.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert$1.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert$1.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert$1.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t/* eslint-disable no-bitwise */\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\t\t/* eslint-enable no-bitwise */\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert$1.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert$1.rgb.ansi16(convert$1.hsv.rgb(args), args[2]);\n};\n\nconvert$1.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\t// eslint-disable-next-line no-bitwise\n\tif (r >> 4 === g >> 4 && g >> 4 === b >> 4) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert$1.ansi16.rgb = function (args) {\n\targs = args[0];\n\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (Math.trunc(args > 50) + 1) * 0.5;\n\t/* eslint-disable no-bitwise */\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\t/* eslint-enable no-bitwise */\n\n\treturn [r, g, b];\n};\n\nconvert$1.ansi256.rgb = function (args) {\n\targs = args[0];\n\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert$1.rgb.hex = function (args) {\n\t/* eslint-disable no-bitwise */\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\t/* eslint-enable no-bitwise */\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.slice(string.length) + string;\n};\n\nconvert$1.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f\\d]{6}|[a-f\\d]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = [...colorString].map(char => char + char).join('');\n\t}\n\n\tconst integer = Number.parseInt(colorString, 16);\n\t/* eslint-disable no-bitwise */\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\t/* eslint-enable no-bitwise */\n\n\treturn [r, g, b];\n};\n\nconvert$1.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet hue;\n\n\tconst grayscale = chroma < 1 ? min / (1 - chroma) : 0;\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else if (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else if (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert$1.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2 * s * l) : (2 * s * (1 - l));\n\n\tlet f = 0;\n\tif (c < 1) {\n\t\tf = (l - 0.5 * c) / (1 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert$1.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert$1.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0: {\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\t}\n\n\t\tcase 1: {\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\t}\n\n\t\tcase 2: {\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\t}\n\n\t\tcase 3: {\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\t}\n\n\t\tcase 4: {\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\t}\n\n\t\tdefault: {\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t\t}\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255,\n\t];\n};\n\nconvert$1.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1 - c);\n\tlet f = 0;\n\n\tif (v > 0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert$1.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else if (l >= 0.5 && l < 1) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert$1.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert$1.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert$1.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65_535) * 255, (apple[1] / 65_535) * 255, (apple[2] / 65_535) * 255];\n};\n\nconvert$1.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65_535, (rgb[1] / 255) * 65_535, (rgb[2] / 255) * 65_535];\n};\n\nconvert$1.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert$1.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert$1.gray.hsv = convert$1.gray.hsl;\n\nconvert$1.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert$1.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert$1.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert$1.gray.hex = function (gray) {\n\t/* eslint-disable no-bitwise */\n\tconst value = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (value << 16) + (value << 8) + value;\n\t/* eslint-enable no-bitwise */\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.slice(string.length) + string;\n};\n\nconvert$1.rgb.gray = function (rgb) {\n\tconst value = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [value / 255 * 100];\n};\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(convert$1);\n\n\tfor (let {length} = models, i = 0; i < length; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null,\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length > 0) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(convert$1[current]);\n\n\t\tfor (let {length} = adjacents, i = 0; i < length; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = convert$1[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(convert$1[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nfunction route(fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let {length} = models, i = 0; i < length; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n}\n\nconst convert = {};\n\nconst models = Object.keys(convert$1);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let {length} = result, i = 0; i < length; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfor (const fromModel of models) {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: convert$1[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: convert$1[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\tfor (const toModel of routeModels) {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t}\n}\n\nconst skippedModels = [\n\t// To be honest, I don't really feel like keyword belongs in color convert, but eh.\n\t'keyword',\n\n\t// Gray conflicts with some method names, and has its own method defined.\n\t'gray',\n\n\t// Shouldn't really be in color-convert either...\n\t'hex',\n];\n\nconst hashedModelKeys = {};\nfor (const model of Object.keys(convert)) {\n\thashedModelKeys[[...convert[model].labels].sort().join('')] = model;\n}\n\nconst limiters = {};\n\nfunction Color(object, model) {\n\tif (!(this instanceof Color)) {\n\t\treturn new Color(object, model);\n\t}\n\n\tif (model && model in skippedModels) {\n\t\tmodel = null;\n\t}\n\n\tif (model && !(model in convert)) {\n\t\tthrow new Error('Unknown model: ' + model);\n\t}\n\n\tlet i;\n\tlet channels;\n\n\tif (object == null) { // eslint-disable-line no-eq-null,eqeqeq\n\t\tthis.model = 'rgb';\n\t\tthis.color = [0, 0, 0];\n\t\tthis.valpha = 1;\n\t} else if (object instanceof Color) {\n\t\tthis.model = object.model;\n\t\tthis.color = [...object.color];\n\t\tthis.valpha = object.valpha;\n\t} else if (typeof object === 'string') {\n\t\tconst result = cs.get(object);\n\t\tif (result === null) {\n\t\t\tthrow new Error('Unable to parse color from string: ' + object);\n\t\t}\n\n\t\tthis.model = result.model;\n\t\tchannels = convert[this.model].channels;\n\t\tthis.color = result.value.slice(0, channels);\n\t\tthis.valpha = typeof result.value[channels] === 'number' ? result.value[channels] : 1;\n\t} else if (object.length > 0) {\n\t\tthis.model = model || 'rgb';\n\t\tchannels = convert[this.model].channels;\n\t\tconst newArray = Array.prototype.slice.call(object, 0, channels);\n\t\tthis.color = zeroArray(newArray, channels);\n\t\tthis.valpha = typeof object[channels] === 'number' ? object[channels] : 1;\n\t} else if (typeof object === 'number') {\n\t\t// This is always RGB - can be converted later on.\n\t\tthis.model = 'rgb';\n\t\tthis.color = [\n\t\t\t(object >> 16) & 0xFF,\n\t\t\t(object >> 8) & 0xFF,\n\t\t\tobject & 0xFF,\n\t\t];\n\t\tthis.valpha = 1;\n\t} else {\n\t\tthis.valpha = 1;\n\n\t\tconst keys = Object.keys(object);\n\t\tif ('alpha' in object) {\n\t\t\tkeys.splice(keys.indexOf('alpha'), 1);\n\t\t\tthis.valpha = typeof object.alpha === 'number' ? object.alpha : 0;\n\t\t}\n\n\t\tconst hashedKeys = keys.sort().join('');\n\t\tif (!(hashedKeys in hashedModelKeys)) {\n\t\t\tthrow new Error('Unable to parse color from object: ' + JSON.stringify(object));\n\t\t}\n\n\t\tthis.model = hashedModelKeys[hashedKeys];\n\n\t\tconst {labels} = convert[this.model];\n\t\tconst color = [];\n\t\tfor (i = 0; i < labels.length; i++) {\n\t\t\tcolor.push(object[labels[i]]);\n\t\t}\n\n\t\tthis.color = zeroArray(color);\n\t}\n\n\t// Perform limitations (clamping, etc.)\n\tif (limiters[this.model]) {\n\t\tchannels = convert[this.model].channels;\n\t\tfor (i = 0; i < channels; i++) {\n\t\t\tconst limit = limiters[this.model][i];\n\t\t\tif (limit) {\n\t\t\t\tthis.color[i] = limit(this.color[i]);\n\t\t\t}\n\t\t}\n\t}\n\n\tthis.valpha = Math.max(0, Math.min(1, this.valpha));\n\n\tif (Object.freeze) {\n\t\tObject.freeze(this);\n\t}\n}\n\nColor.prototype = {\n\ttoString() {\n\t\treturn this.string();\n\t},\n\n\ttoJSON() {\n\t\treturn this[this.model]();\n\t},\n\n\tstring(places) {\n\t\tlet self = this.model in cs.to ? this : this.rgb();\n\t\tself = self.round(typeof places === 'number' ? places : 1);\n\t\tconst arguments_ = self.valpha === 1 ? self.color : [...self.color, this.valpha];\n\t\treturn cs.to[self.model](...arguments_);\n\t},\n\n\tpercentString(places) {\n\t\tconst self = this.rgb().round(typeof places === 'number' ? places : 1);\n\t\tconst arguments_ = self.valpha === 1 ? self.color : [...self.color, this.valpha];\n\t\treturn cs.to.rgb.percent(...arguments_);\n\t},\n\n\tarray() {\n\t\treturn this.valpha === 1 ? [...this.color] : [...this.color, this.valpha];\n\t},\n\n\tobject() {\n\t\tconst result = {};\n\t\tconst {channels} = convert[this.model];\n\t\tconst {labels} = convert[this.model];\n\n\t\tfor (let i = 0; i < channels; i++) {\n\t\t\tresult[labels[i]] = this.color[i];\n\t\t}\n\n\t\tif (this.valpha !== 1) {\n\t\t\tresult.alpha = this.valpha;\n\t\t}\n\n\t\treturn result;\n\t},\n\n\tunitArray() {\n\t\tconst rgb = this.rgb().color;\n\t\trgb[0] /= 255;\n\t\trgb[1] /= 255;\n\t\trgb[2] /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.push(this.valpha);\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tunitObject() {\n\t\tconst rgb = this.rgb().object();\n\t\trgb.r /= 255;\n\t\trgb.g /= 255;\n\t\trgb.b /= 255;\n\n\t\tif (this.valpha !== 1) {\n\t\t\trgb.alpha = this.valpha;\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tround(places) {\n\t\tplaces = Math.max(places || 0, 0);\n\t\treturn new Color([...this.color.map(roundToPlace(places)), this.valpha], this.model);\n\t},\n\n\talpha(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color([...this.color, Math.max(0, Math.min(1, value))], this.model);\n\t\t}\n\n\t\treturn this.valpha;\n\t},\n\n\t// Rgb\n\tred: getset('rgb', 0, maxfn(255)),\n\tgreen: getset('rgb', 1, maxfn(255)),\n\tblue: getset('rgb', 2, maxfn(255)),\n\n\thue: getset(['hsl', 'hsv', 'hsl', 'hwb', 'hcg'], 0, value => ((value % 360) + 360) % 360),\n\n\tsaturationl: getset('hsl', 1, maxfn(100)),\n\tlightness: getset('hsl', 2, maxfn(100)),\n\n\tsaturationv: getset('hsv', 1, maxfn(100)),\n\tvalue: getset('hsv', 2, maxfn(100)),\n\n\tchroma: getset('hcg', 1, maxfn(100)),\n\tgray: getset('hcg', 2, maxfn(100)),\n\n\twhite: getset('hwb', 1, maxfn(100)),\n\twblack: getset('hwb', 2, maxfn(100)),\n\n\tcyan: getset('cmyk', 0, maxfn(100)),\n\tmagenta: getset('cmyk', 1, maxfn(100)),\n\tyellow: getset('cmyk', 2, maxfn(100)),\n\tblack: getset('cmyk', 3, maxfn(100)),\n\n\tx: getset('xyz', 0, maxfn(95.047)),\n\ty: getset('xyz', 1, maxfn(100)),\n\tz: getset('xyz', 2, maxfn(108.833)),\n\n\tl: getset('lab', 0, maxfn(100)),\n\ta: getset('lab', 1),\n\tb: getset('lab', 2),\n\n\tkeyword(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\treturn convert[this.model].keyword(this.color);\n\t},\n\n\thex(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\treturn cs.to.hex(...this.rgb().round().color);\n\t},\n\n\thexa(value) {\n\t\tif (value !== undefined) {\n\t\t\treturn new Color(value);\n\t\t}\n\n\t\tconst rgbArray = this.rgb().round().color;\n\n\t\tlet alphaHex = Math.round(this.valpha * 255).toString(16).toUpperCase();\n\t\tif (alphaHex.length === 1) {\n\t\t\talphaHex = '0' + alphaHex;\n\t\t}\n\n\t\treturn cs.to.hex(...rgbArray) + alphaHex;\n\t},\n\n\trgbNumber() {\n\t\tconst rgb = this.rgb().color;\n\t\treturn ((rgb[0] & 0xFF) << 16) | ((rgb[1] & 0xFF) << 8) | (rgb[2] & 0xFF);\n\t},\n\n\tluminosity() {\n\t\t// http://www.w3.org/TR/WCAG20/#relativeluminancedef\n\t\tconst rgb = this.rgb().color;\n\n\t\tconst lum = [];\n\t\tfor (const [i, element] of rgb.entries()) {\n\t\t\tconst chan = element / 255;\n\t\t\tlum[i] = (chan <= 0.04045) ? chan / 12.92 : ((chan + 0.055) / 1.055) ** 2.4;\n\t\t}\n\n\t\treturn 0.2126 * lum[0] + 0.7152 * lum[1] + 0.0722 * lum[2];\n\t},\n\n\tcontrast(color2) {\n\t\t// http://www.w3.org/TR/WCAG20/#contrast-ratiodef\n\t\tconst lum1 = this.luminosity();\n\t\tconst lum2 = color2.luminosity();\n\n\t\tif (lum1 > lum2) {\n\t\t\treturn (lum1 + 0.05) / (lum2 + 0.05);\n\t\t}\n\n\t\treturn (lum2 + 0.05) / (lum1 + 0.05);\n\t},\n\n\tlevel(color2) {\n\t\t// https://www.w3.org/TR/WCAG/#contrast-enhanced\n\t\tconst contrastRatio = this.contrast(color2);\n\t\tif (contrastRatio >= 7) {\n\t\t\treturn 'AAA';\n\t\t}\n\n\t\treturn (contrastRatio >= 4.5) ? 'AA' : '';\n\t},\n\n\tisDark() {\n\t\t// YIQ equation from http://24ways.org/2010/calculating-color-contrast\n\t\tconst rgb = this.rgb().color;\n\t\tconst yiq = (rgb[0] * 2126 + rgb[1] * 7152 + rgb[2] * 722) / 10000;\n\t\treturn yiq < 128;\n\t},\n\n\tisLight() {\n\t\treturn !this.isDark();\n\t},\n\n\tnegate() {\n\t\tconst rgb = this.rgb();\n\t\tfor (let i = 0; i < 3; i++) {\n\t\t\trgb.color[i] = 255 - rgb.color[i];\n\t\t}\n\n\t\treturn rgb;\n\t},\n\n\tlighten(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[2] += hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdarken(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[2] -= hsl.color[2] * ratio;\n\t\treturn hsl;\n\t},\n\n\tsaturate(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[1] += hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\tdesaturate(ratio) {\n\t\tconst hsl = this.hsl();\n\t\thsl.color[1] -= hsl.color[1] * ratio;\n\t\treturn hsl;\n\t},\n\n\twhiten(ratio) {\n\t\tconst hwb = this.hwb();\n\t\thwb.color[1] += hwb.color[1] * ratio;\n\t\treturn hwb;\n\t},\n\n\tblacken(ratio) {\n\t\tconst hwb = this.hwb();\n\t\thwb.color[2] += hwb.color[2] * ratio;\n\t\treturn hwb;\n\t},\n\n\tgrayscale() {\n\t\t// http://en.wikipedia.org/wiki/Grayscale#Converting_colour_to_grayscale\n\t\tconst rgb = this.rgb().color;\n\t\tconst value = rgb[0] * 0.3 + rgb[1] * 0.59 + rgb[2] * 0.11;\n\t\treturn Color.rgb(value, value, value);\n\t},\n\n\tfade(ratio) {\n\t\treturn this.alpha(this.valpha - (this.valpha * ratio));\n\t},\n\n\topaquer(ratio) {\n\t\treturn this.alpha(this.valpha + (this.valpha * ratio));\n\t},\n\n\trotate(degrees) {\n\t\tconst hsl = this.hsl();\n\t\tlet hue = hsl.color[0];\n\t\thue = (hue + degrees) % 360;\n\t\thue = hue < 0 ? 360 + hue : hue;\n\t\thsl.color[0] = hue;\n\t\treturn hsl;\n\t},\n\n\tmix(mixinColor, weight) {\n\t\t// Ported from sass implementation in C\n\t\t// https://github.com/sass/libsass/blob/0e6b4a2850092356aa3ece07c6b249f0221caced/functions.cpp#L209\n\t\tif (!mixinColor || !mixinColor.rgb) {\n\t\t\tthrow new Error('Argument to \"mix\" was not a Color instance, but rather an instance of ' + typeof mixinColor);\n\t\t}\n\n\t\tconst color1 = mixinColor.rgb();\n\t\tconst color2 = this.rgb();\n\t\tconst p = weight === undefined ? 0.5 : weight;\n\n\t\tconst w = 2 * p - 1;\n\t\tconst a = color1.alpha() - color2.alpha();\n\n\t\tconst w1 = (((w * a === -1) ? w : (w + a) / (1 + w * a)) + 1) / 2;\n\t\tconst w2 = 1 - w1;\n\n\t\treturn Color.rgb(\n\t\t\tw1 * color1.red() + w2 * color2.red(),\n\t\t\tw1 * color1.green() + w2 * color2.green(),\n\t\t\tw1 * color1.blue() + w2 * color2.blue(),\n\t\t\tcolor1.alpha() * p + color2.alpha() * (1 - p));\n\t},\n};\n\n// Model conversion methods and static constructors\nfor (const model of Object.keys(convert)) {\n\tif (skippedModels.includes(model)) {\n\t\tcontinue;\n\t}\n\n\tconst {channels} = convert[model];\n\n\t// Conversion methods\n\tColor.prototype[model] = function (...arguments_) {\n\t\tif (this.model === model) {\n\t\t\treturn new Color(this);\n\t\t}\n\n\t\tif (arguments_.length > 0) {\n\t\t\treturn new Color(arguments_, model);\n\t\t}\n\n\t\treturn new Color([...assertArray(convert[this.model][model].raw(this.color)), this.valpha], model);\n\t};\n\n\t// 'static' construction methods\n\tColor[model] = function (...arguments_) {\n\t\tlet color = arguments_[0];\n\t\tif (typeof color === 'number') {\n\t\t\tcolor = zeroArray(arguments_, channels);\n\t\t}\n\n\t\treturn new Color(color, model);\n\t};\n}\n\nfunction roundTo(number, places) {\n\treturn Number(number.toFixed(places));\n}\n\nfunction roundToPlace(places) {\n\treturn function (number) {\n\t\treturn roundTo(number, places);\n\t};\n}\n\nfunction getset(model, channel, modifier) {\n\tmodel = Array.isArray(model) ? model : [model];\n\n\tfor (const m of model) {\n\t\t(limiters[m] ||= [])[channel] = modifier;\n\t}\n\n\tmodel = model[0];\n\n\treturn function (value) {\n\t\tlet result;\n\n\t\tif (value !== undefined) {\n\t\t\tif (modifier) {\n\t\t\t\tvalue = modifier(value);\n\t\t\t}\n\n\t\t\tresult = this[model]();\n\t\t\tresult.color[channel] = value;\n\t\t\treturn result;\n\t\t}\n\n\t\tresult = this[model]().color[channel];\n\t\tif (modifier) {\n\t\t\tresult = modifier(result);\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nfunction maxfn(max) {\n\treturn function (v) {\n\t\treturn Math.max(0, Math.min(max, v));\n\t};\n}\n\nfunction assertArray(value) {\n\treturn Array.isArray(value) ? value : [value];\n}\n\nfunction zeroArray(array, length) {\n\tfor (let i = 0; i < length; i++) {\n\t\tif (typeof array[i] !== 'number') {\n\t\t\tarray[i] = 0;\n\t\t}\n\t}\n\n\treturn array;\n}\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\n/***\n * Convert string to hex color.\n *\n * @param {String} str Text to hash and convert to hex.\n * @returns {String}\n * @api public\n */\nvar textHex = function hex(str) {\n  for (\n    var i = 0, hash = 0;\n    i < str.length;\n    hash = str.charCodeAt(i++) + ((hash << 5) - hash)\n  );\n\n  var color = Math.floor(\n    Math.abs(\n      (Math.sin(hash) * 10000) % 1 * 16777216\n    )\n  ).toString(16);\n\n  return '#' + Array(6 - color.length + 1).join('0') + color;\n};\n\nvar hex = /*@__PURE__*/getDefaultExportFromCjs(textHex);\n\n/**\r\n * Generate a color for a given name. But be reasonably smart about it by\r\n * understanding name spaces and coloring each namespace a bit lighter so they\r\n * still have the same base color as the root.\r\n *\r\n * @param {string} namespace The namespace\r\n * @param {string} [delimiter] The delimiter\r\n * @returns {string} color\r\n */\nfunction colorspace(namespace, delimiter) {\n  const split = namespace.split(delimiter || ':');\n  let base = hex(split[0]);\n  if (!split.length) return base;\n  for (let i = 0, l = split.length - 1; i < l; i++) {\n    base = Color(base).mix(Color(hex(split[i + 1]))).saturate(1).hex();\n  }\n  return base;\n}\n\nmodule.exports = colorspace;\n", "'use strict';\n\n/**\n * Kuler: Color text using CSS colors\n *\n * @constructor\n * @param {String} text The text that needs to be styled\n * @param {String} color Optional color for alternate API.\n * @api public\n */\nfunction Kuler(text, color) {\n  if (color) return (new Kuler(text)).style(color);\n  if (!(this instanceof Kuler)) return new Kuler(text);\n\n  this.text = text;\n}\n\n/**\n * ANSI color codes.\n *\n * @type {String}\n * @private\n */\nKuler.prototype.prefix = '\\x1b[';\nKuler.prototype.suffix = 'm';\n\n/**\n * Parse a hex color string and parse it to it's RGB equiv.\n *\n * @param {String} color\n * @returns {Array}\n * @api private\n */\nKuler.prototype.hex = function hex(color) {\n  color = color[0] === '#' ? color.substring(1) : color;\n\n  //\n  // Pre-parse for shorthand hex colors.\n  //\n  if (color.length === 3) {\n    color = color.split('');\n\n    color[5] = color[2]; // F60##0\n    color[4] = color[2]; // F60#00\n    color[3] = color[1]; // F60600\n    color[2] = color[1]; // F66600\n    color[1] = color[0]; // FF6600\n\n    color = color.join('');\n  }\n\n  var r = color.substring(0, 2)\n    , g = color.substring(2, 4)\n    , b = color.substring(4, 6);\n\n  return [ parseInt(r, 16), parseInt(g, 16), parseInt(b, 16) ];\n};\n\n/**\n * Transform a 255 RGB value to an RGV code.\n *\n * @param {Number} r Red color channel.\n * @param {Number} g Green color channel.\n * @param {Number} b Blue color channel.\n * @returns {String}\n * @api public\n */\nKuler.prototype.rgb = function rgb(r, g, b) {\n  var red = r / 255 * 5\n    , green = g / 255 * 5\n    , blue = b / 255 * 5;\n\n  return this.ansi(red, green, blue);\n};\n\n/**\n * Turns RGB 0-5 values into a single ANSI code.\n *\n * @param {Number} r Red color channel.\n * @param {Number} g Green color channel.\n * @param {Number} b Blue color channel.\n * @returns {String}\n * @api public\n */\nKuler.prototype.ansi = function ansi(r, g, b) {\n  var red = Math.round(r)\n    , green = Math.round(g)\n    , blue = Math.round(b);\n\n  return 16 + (red * 36) + (green * 6) + blue;\n};\n\n/**\n * Marks an end of color sequence.\n *\n * @returns {String} Reset sequence.\n * @api public\n */\nKuler.prototype.reset = function reset() {\n  return this.prefix +'39;49'+ this.suffix;\n};\n\n/**\n * Colour the terminal using CSS.\n *\n * @param {String} color The HEX color code.\n * @returns {String} the escape code.\n * @api public\n */\nKuler.prototype.style = function style(color) {\n  return this.prefix +'38;5;'+ this.rgb.apply(this, this.hex(color)) + this.suffix + this.text + this.reset();\n};\n\n\n//\n// Expose the actual interface.\n//\nmodule.exports = Kuler;\n", "var colorspace = require('@so-ric/colorspace');\nvar kuler = require('kuler');\n\n/**\n * Prefix the messages with a colored namespace.\n *\n * @param {Array} args The messages array that is getting written.\n * @param {Object} options Options for diagnostics.\n * @returns {Array} Altered messages array.\n * @public\n */\nmodule.exports = function ansiModifier(args, options) {\n  var namespace = options.namespace;\n  var ansi = options.colors !== false\n  ? kuler(namespace +':', colorspace(namespace))\n  : namespace +':';\n\n  args[0] = ansi +' '+ args[0];\n  return args;\n};\n", "'use strict';\n\n/**\n * Checks if a given namespace is allowed by the given variable.\n *\n * @param {String} name namespace that should be included.\n * @param {String} variable Value that needs to be tested.\n * @returns {Boolean} Indication if namespace is enabled.\n * @public\n */\nmodule.exports = function enabled(name, variable) {\n  if (!variable) return false;\n\n  var variables = variable.split(/[\\s,]+/)\n    , i = 0;\n\n  for (; i < variables.length; i++) {\n    variable = variables[i].replace('*', '.*?');\n\n    if ('-' === variable.charAt(0)) {\n      if ((new RegExp('^'+ variable.substr(1) +'$')).test(name)) {\n        return false;\n      }\n\n      continue;\n    }\n\n    if ((new RegExp('^'+ variable +'$')).test(name)) {\n      return true;\n    }\n  }\n\n  return false;\n};\n", "var enabled = require('enabled');\n\n/**\n * Creates a new Adapter.\n *\n * @param {Function} fn Function that returns the value.\n * @returns {Function} The adapter logic.\n * @public\n */\nmodule.exports = function create(fn) {\n  return function adapter(namespace) {\n    try {\n      return enabled(namespace, fn());\n    } catch (e) { /* Any failure means that we found nothing */ }\n\n    return false;\n  };\n}\n", "var adapter = require('./');\n\n/**\n * Extracts the values from process.env.\n *\n * @type {Function}\n * @public\n */\nmodule.exports = adapter(function processenv() {\n  return process.env.DEBUG || process.env.DIAGNOSTICS;\n});\n", "/**\n * An idiot proof logger to be used as default. We've wrapped it in a try/catch\n * statement to ensure the environments without the `console` API do not crash\n * as well as an additional fix for ancient browsers like IE8 where the\n * `console.log` API doesn't have an `apply`, so we need to use the Function's\n * apply functionality to apply the arguments.\n *\n * @param {Object} meta Options of the logger.\n * @param {Array} messages The actuall message that needs to be logged.\n * @public\n */\nmodule.exports = function (meta, messages) {\n  //\n  // So yea. IE8 doesn't have an apply so we need a work around to puke the\n  // arguments in place.\n  //\n  try { Function.prototype.apply.call(console.log, console, messages); }\n  catch (e) {}\n}\n", "var create = require('../diagnostics');\nvar tty = require('tty').isatty(1);\n\n/**\n * Create a new diagnostics logger.\n *\n * @param {String} namespace The namespace it should enable.\n * @param {Object} options Additional options.\n * @returns {Function} The logger.\n * @public\n */\nvar diagnostics = create(function dev(namespace, options) {\n  options = options || {};\n  options.colors = 'colors' in options ? options.colors : tty;\n  options.namespace = namespace;\n  options.prod = false;\n  options.dev = true;\n\n  if (!dev.enabled(namespace) && !(options.force || dev.force)) {\n    return dev.nope(options);\n  }\n  \n  return dev.yep(options);\n});\n\n//\n// Configure the logger for the given environment.\n//\ndiagnostics.modify(require('../modifiers/namespace-ansi'));\ndiagnostics.use(require('../adapters/process.env'));\ndiagnostics.set(require('../logger/console'));\n\n//\n// Expose the diagnostics logger.\n//\nmodule.exports = diagnostics;\n", "//\n// Select the correct build version depending on the environment.\n//\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./production.js');\n} else {\n  module.exports = require('./development.js');\n}\n", "/**\n * tail-file.js: TODO: add file header description.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst fs = require('fs');\nconst { StringDecoder } = require('string_decoder');\nconst { Stream } = require('readable-stream');\n\n/**\n * Simple no-op function.\n * @returns {undefined}\n */\nfunction noop() {}\n\n/**\n * TODO: add function description.\n * @param {Object} options - Options for tail.\n * @param {function} iter - Iterator function to execute on every line.\n* `tail -f` a file. Options must include file.\n * @returns {mixed} - TODO: add return description.\n */\nmodule.exports = (options, iter) => {\n  const buffer = Buffer.alloc(64 * 1024);\n  const decode = new StringDecoder('utf8');\n  const stream = new Stream();\n  let buff = '';\n  let pos = 0;\n  let row = 0;\n\n  if (options.start === -1) {\n    delete options.start;\n  }\n\n  stream.readable = true;\n  stream.destroy = () => {\n    stream.destroyed = true;\n    stream.emit('end');\n    stream.emit('close');\n  };\n\n  fs.open(options.file, 'a+', '0644', (err, fd) => {\n    if (err) {\n      if (!iter) {\n        stream.emit('error', err);\n      } else {\n        iter(err);\n      }\n      stream.destroy();\n      return;\n    }\n\n    (function read() {\n      if (stream.destroyed) {\n        fs.close(fd, noop);\n        return;\n      }\n\n      return fs.read(fd, buffer, 0, buffer.length, pos, (error, bytes) => {\n        if (error) {\n          if (!iter) {\n            stream.emit('error', error);\n          } else {\n            iter(error);\n          }\n          stream.destroy();\n          return;\n        }\n\n        if (!bytes) {\n          if (buff) {\n            // eslint-disable-next-line eqeqeq\n            if (options.start == null || row > options.start) {\n              if (!iter) {\n                stream.emit('line', buff);\n              } else {\n                iter(null, buff);\n              }\n            }\n            row++;\n            buff = '';\n          }\n          return setTimeout(read, 1000);\n        }\n\n        let data = decode.write(buffer.slice(0, bytes));\n        if (!iter) {\n          stream.emit('data', data);\n        }\n\n        data = (buff + data).split(/\\n+/);\n\n        const l = data.length - 1;\n        let i = 0;\n\n        for (; i < l; i++) {\n          // eslint-disable-next-line eqeqeq\n          if (options.start == null || row > options.start) {\n            if (!iter) {\n              stream.emit('line', data[i]);\n            } else {\n              iter(null, data[i]);\n            }\n          }\n          row++;\n        }\n\n        buff = data[l];\n        pos += bytes;\n        return read();\n      });\n    }());\n  });\n\n  if (!iter) {\n    return stream;\n  }\n\n  return stream.destroy;\n};\n", "/* eslint-disable complexity,max-statements */\n/**\n * file.js: Transport for outputting to a local log file.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst fs = require('fs');\nconst path = require('path');\nconst asyncSeries = require('async/series');\nconst zlib = require('zlib');\nconst { MESSAGE } = require('triple-beam');\nconst { Stream, PassThrough } = require('readable-stream');\nconst TransportStream = require('winston-transport');\nconst debug = require('@dabh/diagnostics')('winston:file');\nconst os = require('os');\nconst tailFile = require('../tail-file');\n\n/**\n * Transport for outputting to a local log file.\n * @type {File}\n * @extends {TransportStream}\n */\nmodule.exports = class File extends TransportStream {\n  /**\n   * Constructor function for the File transport object responsible for\n   * persisting log messages and metadata to one or more files.\n   * @param {Object} options - Options for this instance.\n   */\n  constructor(options = {}) {\n    super(options);\n\n    // Expose the name of this Transport on the prototype.\n    this.name = options.name || 'file';\n\n    // Helper function which throws an `Error` in the event that any of the\n    // rest of the arguments is present in `options`.\n    function throwIf(target, ...args) {\n      args.slice(1).forEach(name => {\n        if (options[name]) {\n          throw new Error(`Cannot set ${name} and ${target} together`);\n        }\n      });\n    }\n\n    // Setup the base stream that always gets piped to to handle buffering.\n    this._stream = new PassThrough();\n    this._stream.setMaxListeners(30);\n\n    // Bind this context for listener methods.\n    this._onError = this._onError.bind(this);\n\n    if (options.filename || options.dirname) {\n      throwIf('filename or dirname', 'stream');\n      this._basename = this.filename = options.filename\n        ? path.basename(options.filename)\n        : 'winston.log';\n\n      this.dirname = options.dirname || path.dirname(options.filename);\n      this.options = options.options || { flags: 'a' };\n    } else if (options.stream) {\n      // eslint-disable-next-line no-console\n      console.warn('options.stream will be removed in winston@4. Use winston.transports.Stream');\n      throwIf('stream', 'filename', 'maxsize');\n      this._dest = this._stream.pipe(this._setupStream(options.stream));\n      this.dirname = path.dirname(this._dest.path);\n      // We need to listen for drain events when write() returns false. This\n      // can make node mad at times.\n    } else {\n      throw new Error('Cannot log to file without filename or stream.');\n    }\n\n    this.maxsize = options.maxsize || null;\n    this.rotationFormat = options.rotationFormat || false;\n    this.zippedArchive = options.zippedArchive || false;\n    this.maxFiles = options.maxFiles || null;\n    this.eol = (typeof options.eol === 'string') ? options.eol : os.EOL;\n    this.tailable = options.tailable || false;\n    this.lazy = options.lazy || false;\n\n    // Internal state variables representing the number of files this instance\n    // has created and the current size (in bytes) of the current logfile.\n    this._size = 0;\n    this._pendingSize = 0;\n    this._created = 0;\n    this._drain = false;\n    this._opening = false;\n    this._ending = false;\n    this._fileExist = false;\n\n    if (this.dirname) this._createLogDirIfNotExist(this.dirname);\n    if (!this.lazy) this.open();\n  }\n\n  finishIfEnding() {\n    if (this._ending) {\n      if (this._opening) {\n        this.once('open', () => {\n          this._stream.once('finish', () => this.emit('finish'));\n          setImmediate(() => this._stream.end());\n        });\n      } else {\n        this._stream.once('finish', () => this.emit('finish'));\n        setImmediate(() => this._stream.end());\n      }\n    }\n  }\n\n  /**\n   * Core logging method exposed to Winston. Metadata is optional.\n   * @param {Object} info - TODO: add param description.\n   * @param {Function} callback - TODO: add param description.\n   * @returns {undefined}\n   */\n  log(info, callback = () => { }) {\n    // Remark: (jcrugzz) What is necessary about this callback(null, true) now\n    // when thinking about 3.x? Should silent be handled in the base\n    // TransportStream _write method?\n    if (this.silent) {\n      callback();\n      return true;\n    }\n\n\n    // Output stream buffer is full and has asked us to wait for the drain event\n    if (this._drain) {\n      this._stream.once('drain', () => {\n        this._drain = false;\n        this.log(info, callback);\n      });\n      return;\n    }\n    if (this._rotate) {\n      this._stream.once('rotate', () => {\n        this._rotate = false;\n        this.log(info, callback);\n      });\n      return;\n    }\n    if (this.lazy) {\n      if (!this._fileExist) {\n        if (!this._opening) {\n          this.open();\n        }\n        this.once('open', () => {\n          this._fileExist = true;\n          this.log(info, callback);\n          return;\n        });\n        return;\n      }\n      if (this._needsNewFile(this._pendingSize)) {\n        this._dest.once('close', () => {\n          if (!this._opening) {\n            this.open();\n          }\n          this.once('open', () => {\n            this.log(info, callback);\n            return;\n          });\n          return;\n        });\n        return;\n      }\n    }\n\n    // Grab the raw string and append the expected EOL.\n    const output = `${info[MESSAGE]}${this.eol}`;\n    const bytes = Buffer.byteLength(output);\n\n    // After we have written to the PassThrough check to see if we need\n    // to rotate to the next file.\n    //\n    // Remark: This gets called too early and does not depict when data\n    // has been actually flushed to disk.\n    function logged() {\n      this._size += bytes;\n      this._pendingSize -= bytes;\n\n      debug('logged %s %s', this._size, output);\n      this.emit('logged', info);\n\n      // Do not attempt to rotate files while rotating\n      if (this._rotate) {\n        return;\n      }\n\n      // Do not attempt to rotate files while opening\n      if (this._opening) {\n        return;\n      }\n\n      // Check to see if we need to end the stream and create a new one.\n      if (!this._needsNewFile()) {\n        return;\n      }\n      if (this.lazy) {\n        this._endStream(() => {this.emit('fileclosed');});\n        return;\n      }\n\n      // End the current stream, ensure it flushes and create a new one.\n      // This could potentially be optimized to not run a stat call but its\n      // the safest way since we are supporting `maxFiles`.\n      this._rotate = true;\n      this._endStream(() => this._rotateFile());\n    }\n\n    // Keep track of the pending bytes being written while files are opening\n    // in order to properly rotate the PassThrough this._stream when the file\n    // eventually does open.\n    this._pendingSize += bytes;\n    if (this._opening\n      && !this.rotatedWhileOpening\n      && this._needsNewFile(this._size + this._pendingSize)) {\n      this.rotatedWhileOpening = true;\n    }\n\n    const written = this._stream.write(output, logged.bind(this));\n    if (!written) {\n      this._drain = true;\n      this._stream.once('drain', () => {\n        this._drain = false;\n        callback();\n      });\n    } else {\n      callback(); // eslint-disable-line callback-return\n    }\n\n    debug('written', written, this._drain);\n\n    this.finishIfEnding();\n\n    return written;\n  }\n\n  /**\n   * Query the transport. Options object is optional.\n   * @param {Object} options - Loggly-like query options for this instance.\n   * @param {function} callback - Continuation to respond to when complete.\n   * TODO: Refactor me.\n   */\n  query(options, callback) {\n    if (typeof options === 'function') {\n      callback = options;\n      options = {};\n    }\n\n    options = normalizeQuery(options);\n    const file = path.join(this.dirname, this.filename);\n    let buff = '';\n    let results = [];\n    let row = 0;\n\n    const stream = fs.createReadStream(file, {\n      encoding: 'utf8'\n    });\n\n    stream.on('error', err => {\n      if (stream.readable) {\n        stream.destroy();\n      }\n      if (!callback) {\n        return;\n      }\n\n      return err.code !== 'ENOENT' ? callback(err) : callback(null, results);\n    });\n\n    stream.on('data', data => {\n      data = (buff + data).split(/\\n+/);\n      const l = data.length - 1;\n      let i = 0;\n\n      for (; i < l; i++) {\n        if (!options.start || row >= options.start) {\n          add(data[i]);\n        }\n        row++;\n      }\n\n      buff = data[l];\n    });\n\n    stream.on('close', () => {\n      if (buff) {\n        add(buff, true);\n      }\n      if (options.order === 'desc') {\n        results = results.reverse();\n      }\n\n      // eslint-disable-next-line callback-return\n      if (callback) callback(null, results);\n    });\n\n    function add(buff, attempt) {\n      try {\n        const log = JSON.parse(buff);\n        if (check(log)) {\n          push(log);\n        }\n      } catch (e) {\n        if (!attempt) {\n          stream.emit('error', e);\n        }\n      }\n    }\n\n    function push(log) {\n      if (\n        options.rows &&\n        results.length >= options.rows &&\n        options.order !== 'desc'\n      ) {\n        if (stream.readable) {\n          stream.destroy();\n        }\n        return;\n      }\n\n      if (options.fields) {\n        log = options.fields.reduce((obj, key) => {\n          obj[key] = log[key];\n          return obj;\n        }, {});\n      }\n\n      if (options.order === 'desc') {\n        if (results.length >= options.rows) {\n          results.shift();\n        }\n      }\n      results.push(log);\n    }\n\n    function check(log) {\n      if (!log) {\n        return;\n      }\n\n      if (typeof log !== 'object') {\n        return;\n      }\n\n      const time = new Date(log.timestamp);\n      if (\n        (options.from && time < options.from) ||\n        (options.until && time > options.until) ||\n        (options.level && options.level !== log.level)\n      ) {\n        return;\n      }\n\n      return true;\n    }\n\n    function normalizeQuery(options) {\n      options = options || {};\n\n      // limit\n      options.rows = options.rows || options.limit || 10;\n\n      // starting row offset\n      options.start = options.start || 0;\n\n      // now\n      options.until = options.until || new Date();\n      if (typeof options.until !== 'object') {\n        options.until = new Date(options.until);\n      }\n\n      // now - 24\n      options.from = options.from || (options.until - (24 * 60 * 60 * 1000));\n      if (typeof options.from !== 'object') {\n        options.from = new Date(options.from);\n      }\n\n      // 'asc' or 'desc'\n      options.order = options.order || 'desc';\n\n      return options;\n    }\n  }\n\n  /**\n   * Returns a log stream for this transport. Options object is optional.\n   * @param {Object} options - Stream options for this instance.\n   * @returns {Stream} - TODO: add return description.\n   * TODO: Refactor me.\n   */\n  stream(options = {}) {\n    const file = path.join(this.dirname, this.filename);\n    const stream = new Stream();\n    const tail = {\n      file,\n      start: options.start\n    };\n\n    stream.destroy = tailFile(tail, (err, line) => {\n      if (err) {\n        return stream.emit('error', err);\n      }\n\n      try {\n        stream.emit('data', line);\n        line = JSON.parse(line);\n        stream.emit('log', line);\n      } catch (e) {\n        stream.emit('error', e);\n      }\n    });\n\n    return stream;\n  }\n\n  /**\n   * Checks to see the filesize of.\n   * @returns {undefined}\n   */\n  open() {\n    // If we do not have a filename then we were passed a stream and\n    // don't need to keep track of size.\n    if (!this.filename) return;\n    if (this._opening) return;\n\n    this._opening = true;\n\n    // Stat the target file to get the size and create the stream.\n    this.stat((err, size) => {\n      if (err) {\n        return this.emit('error', err);\n      }\n      debug('stat done: %s { size: %s }', this.filename, size);\n      this._size = size;\n      this._dest = this._createStream(this._stream);\n      this._opening = false;\n      this.once('open', () => {\n        if (!this._stream.emit('rotate')) {\n          this._rotate = false;\n        }\n      });\n    });\n  }\n\n  /**\n   * Stat the file and assess information in order to create the proper stream.\n   * @param {function} callback - TODO: add param description.\n   * @returns {undefined}\n   */\n  stat(callback) {\n    const target = this._getFile();\n    const fullpath = path.join(this.dirname, target);\n\n    fs.stat(fullpath, (err, stat) => {\n      if (err && err.code === 'ENOENT') {\n        debug('ENOENT\u00A0ok', fullpath);\n        // Update internally tracked filename with the new target name.\n        this.filename = target;\n        return callback(null, 0);\n      }\n\n      if (err) {\n        debug(`err ${err.code} ${fullpath}`);\n        return callback(err);\n      }\n\n      if (!stat || this._needsNewFile(stat.size)) {\n        // If `stats.size` is greater than the `maxsize` for this\n        // instance then try again.\n        return this._incFile(() => this.stat(callback));\n      }\n\n      // Once we have figured out what the filename is, set it\n      // and return the size.\n      this.filename = target;\n      callback(null, stat.size);\n    });\n  }\n\n  /**\n   * Closes the stream associated with this instance.\n   * @param {function} cb - TODO: add param description.\n   * @returns {undefined}\n   */\n  close(cb) {\n    if (!this._stream) {\n      return;\n    }\n\n    this._stream.end(() => {\n      if (cb) {\n        cb(); // eslint-disable-line callback-return\n      }\n      this.emit('flush');\n      this.emit('closed');\n    });\n  }\n\n  /**\n   * TODO: add method description.\n   * @param {number} size - TODO: add param description.\n   * @returns {undefined}\n   */\n  _needsNewFile(size) {\n    size = size || this._size;\n    return this.maxsize && size >= this.maxsize;\n  }\n\n  /**\n   * TODO: add method description.\n   * @param {Error} err - TODO: add param description.\n   * @returns {undefined}\n   */\n  _onError(err) {\n    this.emit('error', err);\n  }\n\n  /**\n   * TODO: add method description.\n   * @param {Stream} stream - TODO: add param description.\n   * @returns {mixed} - TODO: add return description.\n   */\n  _setupStream(stream) {\n    stream.on('error', this._onError);\n\n    return stream;\n  }\n\n  /**\n   * TODO: add method description.\n   * @param {Stream} stream - TODO: add param description.\n   * @returns {mixed} - TODO: add return description.\n   */\n  _cleanupStream(stream) {\n    stream.removeListener('error', this._onError);\n    stream.destroy();\n    return stream;\n  }\n\n  /**\n   * TODO: add method description.\n   */\n  _rotateFile() {\n    this._incFile(() => this.open());\n  }\n\n  /**\n   * Unpipe from the stream that has been marked as full and end it so it\n   * flushes to disk.\n   *\n   * @param {function} callback - Callback for when the current file has closed.\n   * @private\n   */\n  _endStream(callback = () => { }) {\n    if (this._dest) {\n      this._stream.unpipe(this._dest);\n      this._dest.end(() => {\n        this._cleanupStream(this._dest);\n        callback();\n      });\n    } else {\n      callback(); // eslint-disable-line callback-return\n    }\n  }\n\n  /**\n   * Returns the WritableStream for the active file on this instance. If we\n   * should gzip the file then a zlib stream is returned.\n   *\n   * @param {ReadableStream} source \u2013PassThrough to pipe to the file when open.\n   * @returns {WritableStream} Stream that writes to disk for the active file.\n   */\n  _createStream(source) {\n    const fullpath = path.join(this.dirname, this.filename);\n\n    debug('create stream start', fullpath, this.options);\n    const dest = fs.createWriteStream(fullpath, this.options)\n      // TODO: What should we do with errors here?\n      .on('error', err => debug(err))\n      .on('close', () => debug('close', dest.path, dest.bytesWritten))\n      .on('open', () => {\n        debug('file open ok', fullpath);\n        this.emit('open', fullpath);\n        source.pipe(dest);\n\n        // If rotation occured during the open operation then we immediately\n        // start writing to a new PassThrough, begin opening the next file\n        // and cleanup the previous source and dest once the source has drained.\n        if (this.rotatedWhileOpening) {\n          this._stream = new PassThrough();\n          this._stream.setMaxListeners(30);\n          this._rotateFile();\n          this.rotatedWhileOpening = false;\n          this._cleanupStream(dest);\n          source.end();\n        }\n      });\n\n    debug('create stream ok', fullpath);\n    return dest;\n  }\n\n  /**\n   * TODO: add method description.\n   * @param {function} callback - TODO: add param description.\n   * @returns {undefined}\n   */\n  _incFile(callback) {\n    debug('_incFile', this.filename);\n    const ext = path.extname(this._basename);\n    const basename = path.basename(this._basename, ext);\n    const tasks = [];\n\n    if (this.zippedArchive) {\n      tasks.push(\n        function (cb) {\n          const num = this._created > 0 && !this.tailable ? this._created : '';\n          this._compressFile(\n            path.join(this.dirname, `${basename}${num}${ext}`),\n            path.join(this.dirname, `${basename}${num}${ext}.gz`),\n            cb\n          );\n        }.bind(this)\n      );\n    }\n\n    tasks.push(\n      function (cb) {\n        if (!this.tailable) {\n          this._created += 1;\n          this._checkMaxFilesIncrementing(ext, basename, cb);\n        } else {\n          this._checkMaxFilesTailable(ext, basename, cb);\n        }\n      }.bind(this)\n    );\n\n    asyncSeries(tasks, callback);\n  }\n\n  /**\n   * Gets the next filename to use for this instance in the case that log\n   * filesizes are being capped.\n   * @returns {string} - TODO: add return description.\n   * @private\n   */\n  _getFile() {\n    const ext = path.extname(this._basename);\n    const basename = path.basename(this._basename, ext);\n    const isRotation = this.rotationFormat\n      ? this.rotationFormat()\n      : this._created;\n\n    // Caveat emptor (indexzero): rotationFormat() was broken by design When\n    // combined with max files because the set of files to unlink is never\n    // stored.\n    return !this.tailable && this._created\n      ? `${basename}${isRotation}${ext}`\n      : `${basename}${ext}`;\n  }\n\n  /**\n   * Increment the number of files created or checked by this instance.\n   * @param {mixed} ext - TODO: add param description.\n   * @param {mixed} basename - TODO: add param description.\n   * @param {mixed} callback - TODO: add param description.\n   * @returns {undefined}\n   * @private\n   */\n  _checkMaxFilesIncrementing(ext, basename, callback) {\n    // Check for maxFiles option and delete file.\n    if (!this.maxFiles || this._created < this.maxFiles) {\n      return setImmediate(callback);\n    }\n\n    const oldest = this._created - this.maxFiles;\n    const isOldest = oldest !== 0 ? oldest : '';\n    const isZipped = this.zippedArchive ? '.gz' : '';\n    const filePath = `${basename}${isOldest}${ext}${isZipped}`;\n    const target = path.join(this.dirname, filePath);\n\n    fs.unlink(target, callback);\n  }\n\n  /**\n   * Roll files forward based on integer, up to maxFiles. e.g. if base if\n   * file.log and it becomes oversized, roll to file1.log, and allow file.log\n   * to be re-used. If file is oversized again, roll file1.log to file2.log,\n   * roll file.log to file1.log, and so on.\n   * @param {mixed} ext - TODO: add param description.\n   * @param {mixed} basename - TODO: add param description.\n   * @param {mixed} callback - TODO: add param description.\n   * @returns {undefined}\n   * @private\n   */\n  _checkMaxFilesTailable(ext, basename, callback) {\n    const tasks = [];\n    if (!this.maxFiles) {\n      return;\n    }\n\n    // const isZipped = this.zippedArchive ? '.gz' : '';\n    const isZipped = this.zippedArchive ? '.gz' : '';\n    for (let x = this.maxFiles - 1; x > 1; x--) {\n      tasks.push(function (i, cb) {\n        let fileName = `${basename}${(i - 1)}${ext}${isZipped}`;\n        const tmppath = path.join(this.dirname, fileName);\n\n        fs.exists(tmppath, exists => {\n          if (!exists) {\n            return cb(null);\n          }\n\n          fileName = `${basename}${i}${ext}${isZipped}`;\n          fs.rename(tmppath, path.join(this.dirname, fileName), cb);\n        });\n      }.bind(this, x));\n    }\n\n    asyncSeries(tasks, () => {\n      fs.rename(\n        path.join(this.dirname, `${basename}${ext}${isZipped}`),\n        path.join(this.dirname, `${basename}1${ext}${isZipped}`),\n        callback\n      );\n    });\n  }\n\n  /**\n   * Compresses src to dest with gzip and unlinks src\n   * @param {string} src - path to source file.\n   * @param {string} dest - path to zipped destination file.\n   * @param {Function} callback - callback called after file has been compressed.\n   * @returns {undefined}\n   * @private\n   */\n  _compressFile(src, dest, callback) {\n    fs.access(src, fs.F_OK, (err) => {\n      if (err) {\n        return callback();\n      }\n      var gzip = zlib.createGzip();\n      var inp = fs.createReadStream(src);\n      var out = fs.createWriteStream(dest);\n      out.on('finish', () => {\n        fs.unlink(src, callback);\n      });\n      inp.pipe(gzip).pipe(out);\n    });\n  }\n\n  _createLogDirIfNotExist(dirPath) {\n    /* eslint-disable no-sync */\n    if (!fs.existsSync(dirPath)) {\n      fs.mkdirSync(dirPath, { recursive: true });\n    }\n    /* eslint-enable no-sync */\n  }\n};\n", "/**\n * http.js: Transport for outputting to a json-rpcserver.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst http = require('http');\nconst https = require('https');\nconst { Stream } = require('readable-stream');\nconst TransportStream = require('winston-transport');\nconst { configure } = require('safe-stable-stringify');\n\n/**\n * Transport for outputting to a json-rpc server.\n * @type {Stream}\n * @extends {TransportStream}\n */\nmodule.exports = class Http extends TransportStream {\n  /**\n   * Constructor function for the Http transport object responsible for\n   * persisting log messages and metadata to a terminal or TTY.\n   * @param {!Object} [options={}] - Options for this instance.\n   */\n  // eslint-disable-next-line max-statements\n  constructor(options = {}) {\n    super(options);\n\n    this.options = options;\n    this.name = options.name || 'http';\n    this.ssl = !!options.ssl;\n    this.host = options.host || 'localhost';\n    this.port = options.port;\n    this.auth = options.auth;\n    this.path = options.path || '';\n    this.maximumDepth = options.maximumDepth;\n    this.agent = options.agent;\n    this.headers = options.headers || {};\n    this.headers['content-type'] = 'application/json';\n    this.batch = options.batch || false;\n    this.batchInterval = options.batchInterval || 5000;\n    this.batchCount = options.batchCount || 10;\n    this.batchOptions = [];\n    this.batchTimeoutID = -1;\n    this.batchCallback = {};\n\n    if (!this.port) {\n      this.port = this.ssl ? 443 : 80;\n    }\n  }\n\n  /**\n   * Core logging method exposed to Winston.\n   * @param {Object} info - TODO: add param description.\n   * @param {function} callback - TODO: add param description.\n   * @returns {undefined}\n   */\n  log(info, callback) {\n    this._request(info, null, null, (err, res) => {\n      if (res && res.statusCode !== 200) {\n        err = new Error(`Invalid HTTP Status Code: ${res.statusCode}`);\n      }\n\n      if (err) {\n        this.emit('warn', err);\n      } else {\n        this.emit('logged', info);\n      }\n    });\n\n    // Remark: (jcrugzz) Fire and forget here so requests dont cause buffering\n    // and block more requests from happening?\n    if (callback) {\n      setImmediate(callback);\n    }\n  }\n\n  /**\n   * Query the transport. Options object is optional.\n   * @param {Object} options -  Loggly-like query options for this instance.\n   * @param {function} callback - Continuation to respond to when complete.\n   * @returns {undefined}\n   */\n  query(options, callback) {\n    if (typeof options === 'function') {\n      callback = options;\n      options = {};\n    }\n\n    options = {\n      method: 'query',\n      params: this.normalizeQuery(options)\n    };\n\n    const auth = options.params.auth || null;\n    delete options.params.auth;\n\n    const path = options.params.path || null;\n    delete options.params.path;\n\n    this._request(options, auth, path, (err, res, body) => {\n      if (res && res.statusCode !== 200) {\n        err = new Error(`Invalid HTTP Status Code: ${res.statusCode}`);\n      }\n\n      if (err) {\n        return callback(err);\n      }\n\n      if (typeof body === 'string') {\n        try {\n          body = JSON.parse(body);\n        } catch (e) {\n          return callback(e);\n        }\n      }\n\n      callback(null, body);\n    });\n  }\n\n  /**\n   * Returns a log stream for this transport. Options object is optional.\n   * @param {Object} options - Stream options for this instance.\n   * @returns {Stream} - TODO: add return description\n   */\n  stream(options = {}) {\n    const stream = new Stream();\n    options = {\n      method: 'stream',\n      params: options\n    };\n\n    const path = options.params.path || null;\n    delete options.params.path;\n\n    const auth = options.params.auth || null;\n    delete options.params.auth;\n\n    let buff = '';\n    const req = this._request(options, auth, path);\n\n    stream.destroy = () => req.destroy();\n    req.on('data', data => {\n      data = (buff + data).split(/\\n+/);\n      const l = data.length - 1;\n\n      let i = 0;\n      for (; i < l; i++) {\n        try {\n          stream.emit('log', JSON.parse(data[i]));\n        } catch (e) {\n          stream.emit('error', e);\n        }\n      }\n\n      buff = data[l];\n    });\n    req.on('error', err => stream.emit('error', err));\n\n    return stream;\n  }\n\n  /**\n   * Make a request to a winstond server or any http server which can\n   * handle json-rpc.\n   * @param {function} options - Options to sent the request.\n   * @param {Object?} auth - authentication options\n   * @param {string} path - request path\n   * @param {function} callback - Continuation to respond to when complete.\n   */\n  _request(options, auth, path, callback) {\n    options = options || {};\n\n    auth = auth || this.auth;\n    path = path || this.path || '';\n\n    if (this.batch) {\n      this._doBatch(options, callback, auth, path);\n    } else {\n      this._doRequest(options, callback, auth, path);\n    }\n  }\n\n  /**\n   * Send or memorize the options according to batch configuration\n   * @param {function} options - Options to sent the request.\n   * @param {function} callback - Continuation to respond to when complete.\n   * @param {Object?} auth - authentication options\n   * @param {string} path - request path\n   */\n  _doBatch(options, callback, auth, path) {\n    this.batchOptions.push(options);\n    if (this.batchOptions.length === 1) {\n      // First message stored, it's time to start the timeout!\n      const me = this;\n      this.batchCallback = callback;\n      this.batchTimeoutID = setTimeout(function () {\n        // timeout is reached, send all messages to endpoint\n        me.batchTimeoutID = -1;\n        me._doBatchRequest(me.batchCallback, auth, path);\n      }, this.batchInterval);\n    }\n    if (this.batchOptions.length === this.batchCount) {\n      // max batch count is reached, send all messages to endpoint\n      this._doBatchRequest(this.batchCallback, auth, path);\n    }\n  }\n\n  /**\n   * Initiate a request with the memorized batch options, stop the batch timeout\n   * @param {function} callback - Continuation to respond to when complete.\n   * @param {Object?} auth - authentication options\n   * @param {string} path - request path\n   */\n  _doBatchRequest(callback, auth, path) {\n    if (this.batchTimeoutID > 0) {\n      clearTimeout(this.batchTimeoutID);\n      this.batchTimeoutID = -1;\n    }\n    const batchOptionsCopy = this.batchOptions.slice();\n    this.batchOptions = [];\n    this._doRequest(batchOptionsCopy, callback, auth, path);\n  }\n\n  /**\n   * Make a request to a winstond server or any http server which can\n   * handle json-rpc.\n   * @param {function} options - Options to sent the request.\n   * @param {function} callback - Continuation to respond to when complete.\n   * @param {Object?} auth - authentication options\n   * @param {string} path - request path\n   */\n  _doRequest(options, callback, auth, path) {\n    // Prepare options for outgoing HTTP request\n    const headers = Object.assign({}, this.headers);\n    if (auth && auth.bearer) {\n      headers.Authorization = `Bearer ${auth.bearer}`;\n    }\n    const req = (this.ssl ? https : http).request({\n      ...this.options,\n      method: 'POST',\n      host: this.host,\n      port: this.port,\n      path: `/${path.replace(/^\\//, '')}`,\n      headers: headers,\n      auth: (auth && auth.username && auth.password) ? (`${auth.username}:${auth.password}`) : '',\n      agent: this.agent\n    });\n\n    req.on('error', callback);\n    req.on('response', res => (\n      res.on('end', () => callback(null, res)).resume()\n    ));\n    const jsonStringify = configure({\n      ...(this.maximumDepth && { maximumDepth: this.maximumDepth })\n    });\n    req.end(Buffer.from(jsonStringify(options, this.options.replacer), 'utf8'));\n  }\n};\n", "'use strict';\n\nconst isStream = stream =>\n\tstream !== null &&\n\ttypeof stream === 'object' &&\n\ttypeof stream.pipe === 'function';\n\nisStream.writable = stream =>\n\tisStream(stream) &&\n\tstream.writable !== false &&\n\ttypeof stream._write === 'function' &&\n\ttypeof stream._writableState === 'object';\n\nisStream.readable = stream =>\n\tisStream(stream) &&\n\tstream.readable !== false &&\n\ttypeof stream._read === 'function' &&\n\ttypeof stream._readableState === 'object';\n\nisStream.duplex = stream =>\n\tisStream.writable(stream) &&\n\tisStream.readable(stream);\n\nisStream.transform = stream =>\n\tisStream.duplex(stream) &&\n\ttypeof stream._transform === 'function' &&\n\ttypeof stream._transformState === 'object';\n\nmodule.exports = isStream;\n", "/**\n * stream.js: Transport for outputting to any arbitrary stream.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst isStream = require('is-stream');\nconst { MESSAGE } = require('triple-beam');\nconst os = require('os');\nconst TransportStream = require('winston-transport');\n\n/**\n * Transport for outputting to any arbitrary stream.\n * @type {Stream}\n * @extends {TransportStream}\n */\nmodule.exports = class Stream extends TransportStream {\n  /**\n   * Constructor function for the Console transport object responsible for\n   * persisting log messages and metadata to a terminal or TTY.\n   * @param {!Object} [options={}] - Options for this instance.\n   */\n  constructor(options = {}) {\n    super(options);\n\n    if (!options.stream || !isStream(options.stream)) {\n      throw new Error('options.stream is required.');\n    }\n\n    // We need to listen for drain events when write() returns false. This can\n    // make node mad at times.\n    this._stream = options.stream;\n    this._stream.setMaxListeners(Infinity);\n    this.isObjectMode = options.stream._writableState.objectMode;\n    this.eol = (typeof options.eol === 'string') ? options.eol : os.EOL;\n  }\n\n  /**\n   * Core logging method exposed to Winston.\n   * @param {Object} info - TODO: add param description.\n   * @param {Function} callback - TODO: add param description.\n   * @returns {undefined}\n   */\n  log(info, callback) {\n    setImmediate(() => this.emit('logged', info));\n    if (this.isObjectMode) {\n      this._stream.write(info);\n      if (callback) {\n        callback(); // eslint-disable-line callback-return\n      }\n      return;\n    }\n\n    this._stream.write(`${info[MESSAGE]}${this.eol}`);\n    if (callback) {\n      callback(); // eslint-disable-line callback-return\n    }\n    return;\n  }\n};\n", "/**\n * transports.js: Set of all transports Winston knows about.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\n/**\n * TODO: add property description.\n * @type {Console}\n */\nObject.defineProperty(exports, 'Console', {\n  configurable: true,\n  enumerable: true,\n  get() {\n    return require('./console');\n  }\n});\n\n/**\n * TODO: add property description.\n * @type {File}\n */\nObject.defineProperty(exports, 'File', {\n  configurable: true,\n  enumerable: true,\n  get() {\n    return require('./file');\n  }\n});\n\n/**\n * TODO: add property description.\n * @type {Http}\n */\nObject.defineProperty(exports, 'Http', {\n  configurable: true,\n  enumerable: true,\n  get() {\n    return require('./http');\n  }\n});\n\n/**\n * TODO: add property description.\n * @type {Stream}\n */\nObject.defineProperty(exports, 'Stream', {\n  configurable: true,\n  enumerable: true,\n  get() {\n    return require('./stream');\n  }\n});\n", "/**\n * index.js: Default settings for all levels that winston knows about.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst logform = require('logform');\nconst { configs } = require('triple-beam');\n\n/**\n * Export config set for the CLI.\n * @type {Object}\n */\nexports.cli = logform.levels(configs.cli);\n\n/**\n * Export config set for npm.\n * @type {Object}\n */\nexports.npm = logform.levels(configs.npm);\n\n/**\n * Export config set for the syslog.\n * @type {Object}\n */\nexports.syslog = logform.levels(configs.syslog);\n\n/**\n * Hoist addColors from logform where it was refactored into in winston@3.\n * @type {Object}\n */\nexports.addColors = logform.levels;\n", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _isArrayLike = require('./internal/isArrayLike.js');\n\nvar _isArrayLike2 = _interopRequireDefault(_isArrayLike);\n\nvar _breakLoop = require('./internal/breakLoop.js');\n\nvar _breakLoop2 = _interopRequireDefault(_breakLoop);\n\nvar _eachOfLimit = require('./eachOfLimit.js');\n\nvar _eachOfLimit2 = _interopRequireDefault(_eachOfLimit);\n\nvar _once = require('./internal/once.js');\n\nvar _once2 = _interopRequireDefault(_once);\n\nvar _onlyOnce = require('./internal/onlyOnce.js');\n\nvar _onlyOnce2 = _interopRequireDefault(_onlyOnce);\n\nvar _wrapAsync = require('./internal/wrapAsync.js');\n\nvar _wrapAsync2 = _interopRequireDefault(_wrapAsync);\n\nvar _awaitify = require('./internal/awaitify.js');\n\nvar _awaitify2 = _interopRequireDefault(_awaitify);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// eachOf implementation optimized for array-likes\nfunction eachOfArrayLike(coll, iteratee, callback) {\n    callback = (0, _once2.default)(callback);\n    var index = 0,\n        completed = 0,\n        { length } = coll,\n        canceled = false;\n    if (length === 0) {\n        callback(null);\n    }\n\n    function iteratorCallback(err, value) {\n        if (err === false) {\n            canceled = true;\n        }\n        if (canceled === true) return;\n        if (err) {\n            callback(err);\n        } else if (++completed === length || value === _breakLoop2.default) {\n            callback(null);\n        }\n    }\n\n    for (; index < length; index++) {\n        iteratee(coll[index], index, (0, _onlyOnce2.default)(iteratorCallback));\n    }\n}\n\n// a generic version of eachOf which can handle array, object, and iterator cases.\nfunction eachOfGeneric(coll, iteratee, callback) {\n    return (0, _eachOfLimit2.default)(coll, Infinity, iteratee, callback);\n}\n\n/**\n * Like [`each`]{@link module:Collections.each}, except that it passes the key (or index) as the second argument\n * to the iteratee.\n *\n * @name eachOf\n * @static\n * @memberOf module:Collections\n * @method\n * @alias forEachOf\n * @category Collection\n * @see [async.each]{@link module:Collections.each}\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - A function to apply to each\n * item in `coll`.\n * The `key` is the item's key, or index in the case of an array.\n * Invoked with (item, key, callback).\n * @param {Function} [callback] - A callback which is called when all\n * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n * @returns {Promise} a promise, if a callback is omitted\n * @example\n *\n * // dev.json is a file containing a valid json object config for dev environment\n * // dev.json is a file containing a valid json object config for test environment\n * // prod.json is a file containing a valid json object config for prod environment\n * // invalid.json is a file with a malformed json object\n *\n * let configs = {}; //global variable\n * let validConfigFileMap = {dev: 'dev.json', test: 'test.json', prod: 'prod.json'};\n * let invalidConfigFileMap = {dev: 'dev.json', test: 'test.json', invalid: 'invalid.json'};\n *\n * // asynchronous function that reads a json file and parses the contents as json object\n * function parseFile(file, key, callback) {\n *     fs.readFile(file, \"utf8\", function(err, data) {\n *         if (err) return calback(err);\n *         try {\n *             configs[key] = JSON.parse(data);\n *         } catch (e) {\n *             return callback(e);\n *         }\n *         callback();\n *     });\n * }\n *\n * // Using callbacks\n * async.forEachOf(validConfigFileMap, parseFile, function (err) {\n *     if (err) {\n *         console.error(err);\n *     } else {\n *         console.log(configs);\n *         // configs is now a map of JSON data, e.g.\n *         // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json}\n *     }\n * });\n *\n * //Error handing\n * async.forEachOf(invalidConfigFileMap, parseFile, function (err) {\n *     if (err) {\n *         console.error(err);\n *         // JSON parse error exception\n *     } else {\n *         console.log(configs);\n *     }\n * });\n *\n * // Using Promises\n * async.forEachOf(validConfigFileMap, parseFile)\n * .then( () => {\n *     console.log(configs);\n *     // configs is now a map of JSON data, e.g.\n *     // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json}\n * }).catch( err => {\n *     console.error(err);\n * });\n *\n * //Error handing\n * async.forEachOf(invalidConfigFileMap, parseFile)\n * .then( () => {\n *     console.log(configs);\n * }).catch( err => {\n *     console.error(err);\n *     // JSON parse error exception\n * });\n *\n * // Using async/await\n * async () => {\n *     try {\n *         let result = await async.forEachOf(validConfigFileMap, parseFile);\n *         console.log(configs);\n *         // configs is now a map of JSON data, e.g.\n *         // { dev: //parsed dev.json, test: //parsed test.json, prod: //parsed prod.json}\n *     }\n *     catch (err) {\n *         console.log(err);\n *     }\n * }\n *\n * //Error handing\n * async () => {\n *     try {\n *         let result = await async.forEachOf(invalidConfigFileMap, parseFile);\n *         console.log(configs);\n *     }\n *     catch (err) {\n *         console.log(err);\n *         // JSON parse error exception\n *     }\n * }\n *\n */\nfunction eachOf(coll, iteratee, callback) {\n    var eachOfImplementation = (0, _isArrayLike2.default)(coll) ? eachOfArrayLike : eachOfGeneric;\n    return eachOfImplementation(coll, (0, _wrapAsync2.default)(iteratee), callback);\n}\n\nexports.default = (0, _awaitify2.default)(eachOf, 3);\nmodule.exports = exports.default;", "\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\nexports.default = _withoutIndex;\nfunction _withoutIndex(iteratee) {\n    return (value, index, callback) => iteratee(value, callback);\n}\nmodule.exports = exports.default;", "'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n    value: true\n});\n\nvar _eachOf = require('./eachOf.js');\n\nvar _eachOf2 = _interopRequireDefault(_eachOf);\n\nvar _withoutIndex = require('./internal/withoutIndex.js');\n\nvar _withoutIndex2 = _interopRequireDefault(_withoutIndex);\n\nvar _wrapAsync = require('./internal/wrapAsync.js');\n\nvar _wrapAsync2 = _interopRequireDefault(_wrapAsync);\n\nvar _awaitify = require('./internal/awaitify.js');\n\nvar _awaitify2 = _interopRequireDefault(_awaitify);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Applies the function `iteratee` to each item in `coll`, in parallel.\n * The `iteratee` is called with an item from the list, and a callback for when\n * it has finished. If the `iteratee` passes an error to its `callback`, the\n * main `callback` (for the `each` function) is immediately called with the\n * error.\n *\n * Note, that since this function applies `iteratee` to each item in parallel,\n * there is no guarantee that the iteratee functions will complete in order.\n *\n * @name each\n * @static\n * @memberOf module:Collections\n * @method\n * @alias forEach\n * @category Collection\n * @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async function to apply to\n * each item in `coll`. Invoked with (item, callback).\n * The array index is not passed to the iteratee.\n * If you need the index, use `eachOf`.\n * @param {Function} [callback] - A callback which is called when all\n * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n * @returns {Promise} a promise, if a callback is omitted\n * @example\n *\n * // dir1 is a directory that contains file1.txt, file2.txt\n * // dir2 is a directory that contains file3.txt, file4.txt\n * // dir3 is a directory that contains file5.txt\n * // dir4 does not exist\n *\n * const fileList = [ 'dir1/file2.txt', 'dir2/file3.txt', 'dir/file5.txt'];\n * const withMissingFileList = ['dir1/file1.txt', 'dir4/file2.txt'];\n *\n * // asynchronous function that deletes a file\n * const deleteFile = function(file, callback) {\n *     fs.unlink(file, callback);\n * };\n *\n * // Using callbacks\n * async.each(fileList, deleteFile, function(err) {\n *     if( err ) {\n *         console.log(err);\n *     } else {\n *         console.log('All files have been deleted successfully');\n *     }\n * });\n *\n * // Error Handling\n * async.each(withMissingFileList, deleteFile, function(err){\n *     console.log(err);\n *     // [ Error: ENOENT: no such file or directory ]\n *     // since dir4/file2.txt does not exist\n *     // dir1/file1.txt could have been deleted\n * });\n *\n * // Using Promises\n * async.each(fileList, deleteFile)\n * .then( () => {\n *     console.log('All files have been deleted successfully');\n * }).catch( err => {\n *     console.log(err);\n * });\n *\n * // Error Handling\n * async.each(fileList, deleteFile)\n * .then( () => {\n *     console.log('All files have been deleted successfully');\n * }).catch( err => {\n *     console.log(err);\n *     // [ Error: ENOENT: no such file or directory ]\n *     // since dir4/file2.txt does not exist\n *     // dir1/file1.txt could have been deleted\n * });\n *\n * // Using async/await\n * async () => {\n *     try {\n *         await async.each(files, deleteFile);\n *     }\n *     catch (err) {\n *         console.log(err);\n *     }\n * }\n *\n * // Error Handling\n * async () => {\n *     try {\n *         await async.each(withMissingFileList, deleteFile);\n *     }\n *     catch (err) {\n *         console.log(err);\n *         // [ Error: ENOENT: no such file or directory ]\n *         // since dir4/file2.txt does not exist\n *         // dir1/file1.txt could have been deleted\n *     }\n * }\n *\n */\nfunction eachLimit(coll, iteratee, callback) {\n    return (0, _eachOf2.default)(coll, (0, _withoutIndex2.default)((0, _wrapAsync2.default)(iteratee)), callback);\n}\n\nexports.default = (0, _awaitify2.default)(eachLimit, 3);\nmodule.exports = exports.default;", "'use strict';\n\nvar toString = Object.prototype.toString;\n\n/**\n * Extract names from functions.\n *\n * @param {Function} fn The function who's name we need to extract.\n * @returns {String} The name of the function.\n * @public\n */\nmodule.exports = function name(fn) {\n  if ('string' === typeof fn.displayName && fn.constructor.name) {\n    return fn.displayName;\n  } else if ('string' === typeof fn.name && fn.name) {\n    return fn.name;\n  }\n\n  //\n  // Check to see if the constructor has a name.\n  //\n  if (\n       'object' === typeof fn\n    && fn.constructor\n    && 'string' === typeof fn.constructor.name\n  ) return fn.constructor.name;\n\n  //\n  // toString the given function and attempt to parse it out of it, or determine\n  // the class.\n  //\n  var named = fn.toString()\n    , type = toString.call(fn).slice(8, -1);\n\n  if ('Function' === type) {\n    named = named.substring(named.indexOf('(') + 1, named.indexOf(')'));\n  } else {\n    named = type;\n  }\n\n  return named || 'anonymous';\n};\n", "'use strict';\n\nvar name = require('fn.name');\n\n/**\n * Wrap callbacks to prevent double execution.\n *\n * @param {Function} fn Function that should only be called once.\n * @returns {Function} A wrapped callback which prevents multiple executions.\n * @public\n */\nmodule.exports = function one(fn) {\n  var called = 0\n    , value;\n\n  /**\n   * The function that prevents double execution.\n   *\n   * @private\n   */\n  function onetime() {\n    if (called) return value;\n\n    called = 1;\n    value = fn.apply(this, arguments);\n    fn = null;\n\n    return value;\n  }\n\n  //\n  // To make debugging more easy we want to use the name of the supplied\n  // function. So when you look at the functions that are assigned to event\n  // listeners you don't see a load of `onetime` functions but actually the\n  // names of the functions that this module will call.\n  //\n  // NOTE: We cannot override the `name` property, as that is `readOnly`\n  // property, so displayName will have to do.\n  //\n  onetime.displayName = name(fn);\n  return onetime;\n};\n", "exports.get = function(belowFn) {\n  var oldLimit = Error.stackTraceLimit;\n  Error.stackTraceLimit = Infinity;\n\n  var dummyObject = {};\n\n  var v8Handler = Error.prepareStackTrace;\n  Error.prepareStackTrace = function(dummyObject, v8StackTrace) {\n    return v8StackTrace;\n  };\n  Error.captureStackTrace(dummyObject, belowFn || exports.get);\n\n  var v8StackTrace = dummyObject.stack;\n  Error.prepareStackTrace = v8Handler;\n  Error.stackTraceLimit = oldLimit;\n\n  return v8StackTrace;\n};\n\nexports.parse = function(err) {\n  if (!err.stack) {\n    return [];\n  }\n\n  var self = this;\n  var lines = err.stack.split('\\n').slice(1);\n\n  return lines\n    .map(function(line) {\n      if (line.match(/^\\s*[-]{4,}$/)) {\n        return self._createParsedCallSite({\n          fileName: line,\n          lineNumber: null,\n          functionName: null,\n          typeName: null,\n          methodName: null,\n          columnNumber: null,\n          'native': null,\n        });\n      }\n\n      var lineMatch = line.match(/at (?:(.+)\\s+\\()?(?:(.+?):(\\d+)(?::(\\d+))?|([^)]+))\\)?/);\n      if (!lineMatch) {\n        return;\n      }\n\n      var object = null;\n      var method = null;\n      var functionName = null;\n      var typeName = null;\n      var methodName = null;\n      var isNative = (lineMatch[5] === 'native');\n\n      if (lineMatch[1]) {\n        functionName = lineMatch[1];\n        var methodStart = functionName.lastIndexOf('.');\n        if (functionName[methodStart-1] == '.')\n          methodStart--;\n        if (methodStart > 0) {\n          object = functionName.substr(0, methodStart);\n          method = functionName.substr(methodStart + 1);\n          var objectEnd = object.indexOf('.Module');\n          if (objectEnd > 0) {\n            functionName = functionName.substr(objectEnd + 1);\n            object = object.substr(0, objectEnd);\n          }\n        }\n        typeName = null;\n      }\n\n      if (method) {\n        typeName = object;\n        methodName = method;\n      }\n\n      if (method === '<anonymous>') {\n        methodName = null;\n        functionName = null;\n      }\n\n      var properties = {\n        fileName: lineMatch[2] || null,\n        lineNumber: parseInt(lineMatch[3], 10) || null,\n        functionName: functionName,\n        typeName: typeName,\n        methodName: methodName,\n        columnNumber: parseInt(lineMatch[4], 10) || null,\n        'native': isNative,\n      };\n\n      return self._createParsedCallSite(properties);\n    })\n    .filter(function(callSite) {\n      return !!callSite;\n    });\n};\n\nfunction CallSite(properties) {\n  for (var property in properties) {\n    this[property] = properties[property];\n  }\n}\n\nvar strProperties = [\n  'this',\n  'typeName',\n  'functionName',\n  'methodName',\n  'fileName',\n  'lineNumber',\n  'columnNumber',\n  'function',\n  'evalOrigin'\n];\nvar boolProperties = [\n  'topLevel',\n  'eval',\n  'native',\n  'constructor'\n];\nstrProperties.forEach(function (property) {\n  CallSite.prototype[property] = null;\n  CallSite.prototype['get' + property[0].toUpperCase() + property.substr(1)] = function () {\n    return this[property];\n  }\n});\nboolProperties.forEach(function (property) {\n  CallSite.prototype[property] = false;\n  CallSite.prototype['is' + property[0].toUpperCase() + property.substr(1)] = function () {\n    return this[property];\n  }\n});\n\nexports._createParsedCallSite = function(properties) {\n  return new CallSite(properties);\n};\n", "/**\n * exception-stream.js: TODO: add file header handler.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst { Writable } = require('readable-stream');\n\n/**\n * TODO: add class description.\n * @type {ExceptionStream}\n * @extends {Writable}\n */\nmodule.exports = class ExceptionStream extends Writable {\n  /**\n   * Constructor function for the ExceptionStream responsible for wrapping a\n   * TransportStream; only allowing writes of `info` objects with\n   * `info.exception` set to true.\n   * @param {!TransportStream} transport - Stream to filter to exceptions\n   */\n  constructor(transport) {\n    super({ objectMode: true });\n\n    if (!transport) {\n      throw new Error('ExceptionStream requires a TransportStream instance.');\n    }\n\n    // Remark (indexzero): we set `handleExceptions` here because it's the\n    // predicate checked in ExceptionHandler.prototype.__getExceptionHandlers\n    this.handleExceptions = true;\n    this.transport = transport;\n  }\n\n  /**\n   * Writes the info object to our transport instance if (and only if) the\n   * `exception` property is set on the info.\n   * @param {mixed} info - TODO: add param description.\n   * @param {mixed} enc - TODO: add param description.\n   * @param {mixed} callback - TODO: add param description.\n   * @returns {mixed} - TODO: add return description.\n   * @private\n   */\n  _write(info, enc, callback) {\n    if (info.exception) {\n      return this.transport.log(info, callback);\n    }\n\n    callback();\n    return true;\n  }\n};\n", "/**\n * exception-handler.js: Object for handling uncaughtException events.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst os = require('os');\nconst asyncForEach = require('async/forEach');\nconst debug = require('@dabh/diagnostics')('winston:exception');\nconst once = require('one-time');\nconst stackTrace = require('stack-trace');\nconst ExceptionStream = require('./exception-stream');\n\n/**\n * Object for handling uncaughtException events.\n * @type {ExceptionHandler}\n */\nmodule.exports = class ExceptionHandler {\n  /**\n   * TODO: add contructor description\n   * @param {!Logger} logger - TODO: add param description\n   */\n  constructor(logger) {\n    if (!logger) {\n      throw new Error('Logger is required to handle exceptions');\n    }\n\n    this.logger = logger;\n    this.handlers = new Map();\n  }\n\n  /**\n   * Handles `uncaughtException` events for the current process by adding any\n   * handlers passed in.\n   * @returns {undefined}\n   */\n  handle(...args) {\n    args.forEach(arg => {\n      if (Array.isArray(arg)) {\n        return arg.forEach(handler => this._addHandler(handler));\n      }\n\n      this._addHandler(arg);\n    });\n\n    if (!this.catcher) {\n      this.catcher = this._uncaughtException.bind(this);\n      process.on('uncaughtException', this.catcher);\n    }\n  }\n\n  /**\n   * Removes any handlers to `uncaughtException` events for the current\n   * process. This does not modify the state of the `this.handlers` set.\n   * @returns {undefined}\n   */\n  unhandle() {\n    if (this.catcher) {\n      process.removeListener('uncaughtException', this.catcher);\n      this.catcher = false;\n\n      Array.from(this.handlers.values())\n        .forEach(wrapper => this.logger.unpipe(wrapper));\n    }\n  }\n\n  /**\n   * TODO: add method description\n   * @param {Error} err - Error to get information about.\n   * @returns {mixed} - TODO: add return description.\n   */\n  getAllInfo(err) {\n    let message = null;\n    if (err) {\n      message = typeof err === 'string' ? err : err.message;\n    }\n\n    return {\n      error: err,\n      // TODO (indexzero): how do we configure this?\n      level: 'error',\n      message: [\n        `uncaughtException: ${(message || '(no error message)')}`,\n        err && err.stack || '  No stack trace'\n      ].join('\\n'),\n      stack: err && err.stack,\n      exception: true,\n      date: new Date().toString(),\n      process: this.getProcessInfo(),\n      os: this.getOsInfo(),\n      trace: this.getTrace(err)\n    };\n  }\n\n  /**\n   * Gets all relevant process information for the currently running process.\n   * @returns {mixed} - TODO: add return description.\n   */\n  getProcessInfo() {\n    return {\n      pid: process.pid,\n      uid: process.getuid ? process.getuid() : null,\n      gid: process.getgid ? process.getgid() : null,\n      cwd: process.cwd(),\n      execPath: process.execPath,\n      version: process.version,\n      argv: process.argv,\n      memoryUsage: process.memoryUsage()\n    };\n  }\n\n  /**\n   * Gets all relevant OS information for the currently running process.\n   * @returns {mixed} - TODO: add return description.\n   */\n  getOsInfo() {\n    return {\n      loadavg: os.loadavg(),\n      uptime: os.uptime()\n    };\n  }\n\n  /**\n   * Gets a stack trace for the specified error.\n   * @param {mixed} err - TODO: add param description.\n   * @returns {mixed} - TODO: add return description.\n   */\n  getTrace(err) {\n    const trace = err ? stackTrace.parse(err) : stackTrace.get();\n    return trace.map(site => {\n      return {\n        column: site.getColumnNumber(),\n        file: site.getFileName(),\n        function: site.getFunctionName(),\n        line: site.getLineNumber(),\n        method: site.getMethodName(),\n        native: site.isNative()\n      };\n    });\n  }\n\n  /**\n   * Helper method to add a transport as an exception handler.\n   * @param {Transport} handler - The transport to add as an exception handler.\n   * @returns {void}\n   */\n  _addHandler(handler) {\n    if (!this.handlers.has(handler)) {\n      handler.handleExceptions = true;\n      const wrapper = new ExceptionStream(handler);\n      this.handlers.set(handler, wrapper);\n      this.logger.pipe(wrapper);\n    }\n  }\n\n  /**\n   * Logs all relevant information around the `err` and exits the current\n   * process.\n   * @param {Error} err - Error to handle\n   * @returns {mixed} - TODO: add return description.\n   * @private\n   */\n  _uncaughtException(err) {\n    const info = this.getAllInfo(err);\n    const handlers = this._getExceptionHandlers();\n    // Calculate if we should exit on this error\n    let doExit = typeof this.logger.exitOnError === 'function'\n      ? this.logger.exitOnError(err)\n      : this.logger.exitOnError;\n    let timeout;\n\n    if (!handlers.length && doExit) {\n      // eslint-disable-next-line no-console\n      console.warn('winston: exitOnError cannot be true with no exception handlers.');\n      // eslint-disable-next-line no-console\n      console.warn('winston: not exiting process.');\n      doExit = false;\n    }\n\n    function gracefulExit() {\n      debug('doExit', doExit);\n      debug('process._exiting', process._exiting);\n\n      if (doExit && !process._exiting) {\n        // Remark: Currently ignoring any exceptions from transports when\n        // catching uncaught exceptions.\n        if (timeout) {\n          clearTimeout(timeout);\n        }\n        // eslint-disable-next-line no-process-exit\n        process.exit(1);\n      }\n    }\n\n    if (!handlers || handlers.length === 0) {\n      return process.nextTick(gracefulExit);\n    }\n\n    // Log to all transports attempting to listen for when they are completed.\n    asyncForEach(handlers, (handler, next) => {\n      const done = once(next);\n      const transport = handler.transport || handler;\n\n      // Debug wrapping so that we can inspect what's going on under the covers.\n      function onDone(event) {\n        return () => {\n          debug(event);\n          done();\n        };\n      }\n\n      transport._ending = true;\n      transport.once('finish', onDone('finished'));\n      transport.once('error', onDone('error'));\n    }, () => doExit && gracefulExit());\n\n    this.logger.log(info);\n\n    // If exitOnError is true, then only allow the logging of exceptions to\n    // take up to `3000ms`.\n    if (doExit) {\n      timeout = setTimeout(gracefulExit, 3000);\n    }\n  }\n\n  /**\n   * Returns the list of transports and exceptionHandlers for this instance.\n   * @returns {Array} - List of transports and exceptionHandlers for this\n   * instance.\n   * @private\n   */\n  _getExceptionHandlers() {\n    // Remark (indexzero): since `logger.transports` returns all of the pipes\n    // from the _readableState of the stream we actually get the join of the\n    // explicit handlers and the implicit transports with\n    // `handleExceptions: true`\n    return this.logger.transports.filter(wrap => {\n      const transport = wrap.transport || wrap;\n      return transport.handleExceptions;\n    });\n  }\n};\n", "/**\n * rejection-stream.js: TODO: add file header handler.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst { Writable } = require('readable-stream');\n\n/**\n * TODO: add class description.\n * @type {RejectionStream}\n * @extends {Writable}\n */\nmodule.exports = class RejectionStream extends Writable {\n  /**\n   * Constructor function for the RejectionStream responsible for wrapping a\n   * TransportStream; only allowing writes of `info` objects with\n   * `info.rejection` set to true.\n   * @param {!TransportStream} transport - Stream to filter to rejections\n   */\n  constructor(transport) {\n    super({ objectMode: true });\n\n    if (!transport) {\n      throw new Error('RejectionStream requires a TransportStream instance.');\n    }\n\n    this.handleRejections = true;\n    this.transport = transport;\n  }\n\n  /**\n   * Writes the info object to our transport instance if (and only if) the\n   * `rejection` property is set on the info.\n   * @param {mixed} info - TODO: add param description.\n   * @param {mixed} enc - TODO: add param description.\n   * @param {mixed} callback - TODO: add param description.\n   * @returns {mixed} - TODO: add return description.\n   * @private\n   */\n  _write(info, enc, callback) {\n    if (info.rejection) {\n      return this.transport.log(info, callback);\n    }\n\n    callback();\n    return true;\n  }\n};\n", "/**\n * exception-handler.js: Object for handling uncaughtException events.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst os = require('os');\nconst asyncForEach = require('async/forEach');\nconst debug = require('@dabh/diagnostics')('winston:rejection');\nconst once = require('one-time');\nconst stackTrace = require('stack-trace');\nconst RejectionStream = require('./rejection-stream');\n\n/**\n * Object for handling unhandledRejection events.\n * @type {RejectionHandler}\n */\nmodule.exports = class RejectionHandler {\n  /**\n   * TODO: add contructor description\n   * @param {!Logger} logger - TODO: add param description\n   */\n  constructor(logger) {\n    if (!logger) {\n      throw new Error('Logger is required to handle rejections');\n    }\n\n    this.logger = logger;\n    this.handlers = new Map();\n  }\n\n  /**\n   * Handles `unhandledRejection` events for the current process by adding any\n   * handlers passed in.\n   * @returns {undefined}\n   */\n  handle(...args) {\n    args.forEach(arg => {\n      if (Array.isArray(arg)) {\n        return arg.forEach(handler => this._addHandler(handler));\n      }\n\n      this._addHandler(arg);\n    });\n\n    if (!this.catcher) {\n      this.catcher = this._unhandledRejection.bind(this);\n      process.on('unhandledRejection', this.catcher);\n    }\n  }\n\n  /**\n   * Removes any handlers to `unhandledRejection` events for the current\n   * process. This does not modify the state of the `this.handlers` set.\n   * @returns {undefined}\n   */\n  unhandle() {\n    if (this.catcher) {\n      process.removeListener('unhandledRejection', this.catcher);\n      this.catcher = false;\n\n      Array.from(this.handlers.values()).forEach(wrapper =>\n        this.logger.unpipe(wrapper)\n      );\n    }\n  }\n\n  /**\n   * TODO: add method description\n   * @param {Error} err - Error to get information about.\n   * @returns {mixed} - TODO: add return description.\n   */\n  getAllInfo(err) {\n    let message = null;\n    if (err) {\n      message = typeof err === 'string' ? err : err.message;\n    }\n\n    return {\n      error: err,\n      // TODO (indexzero): how do we configure this?\n      level: 'error',\n      message: [\n        `unhandledRejection: ${message || '(no error message)'}`,\n        err && err.stack || '  No stack trace'\n      ].join('\\n'),\n      stack: err && err.stack,\n      rejection: true,\n      date: new Date().toString(),\n      process: this.getProcessInfo(),\n      os: this.getOsInfo(),\n      trace: this.getTrace(err)\n    };\n  }\n\n  /**\n   * Gets all relevant process information for the currently running process.\n   * @returns {mixed} - TODO: add return description.\n   */\n  getProcessInfo() {\n    return {\n      pid: process.pid,\n      uid: process.getuid ? process.getuid() : null,\n      gid: process.getgid ? process.getgid() : null,\n      cwd: process.cwd(),\n      execPath: process.execPath,\n      version: process.version,\n      argv: process.argv,\n      memoryUsage: process.memoryUsage()\n    };\n  }\n\n  /**\n   * Gets all relevant OS information for the currently running process.\n   * @returns {mixed} - TODO: add return description.\n   */\n  getOsInfo() {\n    return {\n      loadavg: os.loadavg(),\n      uptime: os.uptime()\n    };\n  }\n\n  /**\n   * Gets a stack trace for the specified error.\n   * @param {mixed} err - TODO: add param description.\n   * @returns {mixed} - TODO: add return description.\n   */\n  getTrace(err) {\n    const trace = err ? stackTrace.parse(err) : stackTrace.get();\n    return trace.map(site => {\n      return {\n        column: site.getColumnNumber(),\n        file: site.getFileName(),\n        function: site.getFunctionName(),\n        line: site.getLineNumber(),\n        method: site.getMethodName(),\n        native: site.isNative()\n      };\n    });\n  }\n\n  /**\n   * Helper method to add a transport as an exception handler.\n   * @param {Transport} handler - The transport to add as an exception handler.\n   * @returns {void}\n   */\n  _addHandler(handler) {\n    if (!this.handlers.has(handler)) {\n      handler.handleRejections = true;\n      const wrapper = new RejectionStream(handler);\n      this.handlers.set(handler, wrapper);\n      this.logger.pipe(wrapper);\n    }\n  }\n\n  /**\n   * Logs all relevant information around the `err` and exits the current\n   * process.\n   * @param {Error} err - Error to handle\n   * @returns {mixed} - TODO: add return description.\n   * @private\n   */\n  _unhandledRejection(err) {\n    const info = this.getAllInfo(err);\n    const handlers = this._getRejectionHandlers();\n    // Calculate if we should exit on this error\n    let doExit =\n      typeof this.logger.exitOnError === 'function'\n        ? this.logger.exitOnError(err)\n        : this.logger.exitOnError;\n    let timeout;\n\n    if (!handlers.length && doExit) {\n      // eslint-disable-next-line no-console\n      console.warn('winston: exitOnError cannot be true with no rejection handlers.');\n      // eslint-disable-next-line no-console\n      console.warn('winston: not exiting process.');\n      doExit = false;\n    }\n\n    function gracefulExit() {\n      debug('doExit', doExit);\n      debug('process._exiting', process._exiting);\n\n      if (doExit && !process._exiting) {\n        // Remark: Currently ignoring any rejections from transports when\n        // catching unhandled rejections.\n        if (timeout) {\n          clearTimeout(timeout);\n        }\n        // eslint-disable-next-line no-process-exit\n        process.exit(1);\n      }\n    }\n\n    if (!handlers || handlers.length === 0) {\n      return process.nextTick(gracefulExit);\n    }\n\n    // Log to all transports attempting to listen for when they are completed.\n    asyncForEach(\n      handlers,\n      (handler, next) => {\n        const done = once(next);\n        const transport = handler.transport || handler;\n\n        // Debug wrapping so that we can inspect what's going on under the covers.\n        function onDone(event) {\n          return () => {\n            debug(event);\n            done();\n          };\n        }\n\n        transport._ending = true;\n        transport.once('finish', onDone('finished'));\n        transport.once('error', onDone('error'));\n      },\n      () => doExit && gracefulExit()\n    );\n\n    this.logger.log(info);\n\n    // If exitOnError is true, then only allow the logging of exceptions to\n    // take up to `3000ms`.\n    if (doExit) {\n      timeout = setTimeout(gracefulExit, 3000);\n    }\n  }\n\n  /**\n   * Returns the list of transports and exceptionHandlers for this instance.\n   * @returns {Array} - List of transports and exceptionHandlers for this\n   * instance.\n   * @private\n   */\n  _getRejectionHandlers() {\n    // Remark (indexzero): since `logger.transports` returns all of the pipes\n    // from the _readableState of the stream we actually get the join of the\n    // explicit handlers and the implicit transports with\n    // `handleRejections: true`\n    return this.logger.transports.filter(wrap => {\n      const transport = wrap.transport || wrap;\n      return transport.handleRejections;\n    });\n  }\n};\n", "/**\n * profiler.js: TODO: add file header description.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n/**\n * TODO: add class description.\n * @type {Profiler}\n * @private\n */\nclass Profiler {\n  /**\n   * Constructor function for the Profiler instance used by\n   * `Logger.prototype.startTimer`. When done is called the timer will finish\n   * and log the duration.\n   * @param {!Logger} logger - TODO: add param description.\n   * @private\n   */\n  constructor(logger) {\n    const Logger = require('./logger');\n    if (typeof logger !== 'object' || Array.isArray(logger) || !(logger instanceof Logger)) {\n      throw new Error('Logger is required for profiling');\n    } else {\n      this.logger = logger;\n      this.start = Date.now();\n    }\n  }\n\n  /**\n   * Ends the current timer (i.e. Profiler) instance and logs the `msg` along\n   * with the duration since creation.\n   * @returns {mixed} - TODO: add return description.\n   * @private\n   */\n  done(...args) {\n    if (typeof args[args.length - 1] === 'function') {\n      // eslint-disable-next-line no-console\n      console.warn('Callback function no longer supported as of winston@3.0.0');\n      args.pop();\n    }\n\n    const info = typeof args[args.length - 1] === 'object' ? args.pop() : {};\n    info.level = info.level || 'info';\n    info.durationMs = (Date.now()) - this.start;\n\n    return this.logger.write(info);\n  }\n};\n\nmodule.exports = Profiler;\n", "/**\n * logger.js: TODO: add file header description.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst { Stream, Transform } = require('readable-stream');\nconst asyncForEach = require('async/forEach');\nconst { LEVEL, SPLAT } = require('triple-beam');\nconst isStream = require('is-stream');\nconst ExceptionHandler = require('./exception-handler');\nconst RejectionHandler = require('./rejection-handler');\nconst LegacyTransportStream = require('winston-transport/legacy');\nconst Profiler = require('./profiler');\nconst { warn } = require('./common');\nconst config = require('./config');\n\n/**\n * Captures the number of format (i.e. %s strings) in a given string.\n * Based on `util.format`, see Node.js source:\n * https://github.com/nodejs/node/blob/b1c8f15c5f169e021f7c46eb7b219de95fe97603/lib/util.js#L201-L230\n * @type {RegExp}\n */\nconst formatRegExp = /%[scdjifoO%]/g;\n\n/**\n * TODO: add class description.\n * @type {Logger}\n * @extends {Transform}\n */\nclass Logger extends Transform {\n  /**\n   * Constructor function for the Logger object responsible for persisting log\n   * messages and metadata to one or more transports.\n   * @param {!Object} options - foo\n   */\n  constructor(options) {\n    super({ objectMode: true });\n    this.configure(options);\n  }\n\n  child(defaultRequestMetadata) {\n    const logger = this;\n    return Object.create(logger, {\n      write: {\n        value: function (info) {\n          const infoClone = Object.assign(\n            {},\n            defaultRequestMetadata,\n            info\n          );\n\n          // Object.assign doesn't copy inherited Error\n          // properties so we have to do that explicitly\n          //\n          // Remark (indexzero): we should remove this\n          // since the errors format will handle this case.\n          //\n          if (info instanceof Error) {\n            infoClone.stack = info.stack;\n            infoClone.message = info.message;\n          }\n\n          logger.write(infoClone);\n        }\n      }\n    });\n  }\n\n  /**\n   * This will wholesale reconfigure this instance by:\n   * 1. Resetting all transports. Older transports will be removed implicitly.\n   * 2. Set all other options including levels, colors, rewriters, filters,\n   *    exceptionHandlers, etc.\n   * @param {!Object} options - TODO: add param description.\n   * @returns {undefined}\n   */\n  configure({\n    silent,\n    format,\n    defaultMeta,\n    levels,\n    level = 'info',\n    exitOnError = true,\n    transports,\n    colors,\n    emitErrs,\n    formatters,\n    padLevels,\n    rewriters,\n    stripColors,\n    exceptionHandlers,\n    rejectionHandlers\n  } = {}) {\n    // Reset transports if we already have them\n    if (this.transports.length) {\n      this.clear();\n    }\n\n    this.silent = silent;\n    this.format = format || this.format || require('logform/json')();\n\n    this.defaultMeta = defaultMeta || null;\n    // Hoist other options onto this instance.\n    this.levels = levels || this.levels || config.npm.levels;\n    this.level = level;\n    if (this.exceptions) {\n      this.exceptions.unhandle();\n    }\n    if (this.rejections) {\n      this.rejections.unhandle();\n    }\n    this.exceptions = new ExceptionHandler(this);\n    this.rejections = new RejectionHandler(this);\n    this.profilers = {};\n    this.exitOnError = exitOnError;\n\n    // Add all transports we have been provided.\n    if (transports) {\n      transports = Array.isArray(transports) ? transports : [transports];\n      transports.forEach(transport => this.add(transport));\n    }\n\n    if (\n      colors ||\n      emitErrs ||\n      formatters ||\n      padLevels ||\n      rewriters ||\n      stripColors\n    ) {\n      throw new Error(\n        [\n          '{ colors, emitErrs, formatters, padLevels, rewriters, stripColors } were removed in winston@3.0.0.',\n          'Use a custom winston.format(function) instead.',\n          'See: https://github.com/winstonjs/winston/tree/master/UPGRADE-3.0.md'\n        ].join('\\n')\n      );\n    }\n\n    if (exceptionHandlers) {\n      this.exceptions.handle(exceptionHandlers);\n    }\n    if (rejectionHandlers) {\n      this.rejections.handle(rejectionHandlers);\n    }\n  }\n\n  /* eslint-disable valid-jsdoc */\n  /**\n   * Helper method to get the highest logging level associated with a logger\n   *\n   * @returns { number | null } - The highest configured logging level, null\n   * for invalid configuration\n   */\n  getHighestLogLevel() {\n    // This can be null, if this.level has an invalid value\n    const configuredLevelValue = getLevelValue(this.levels, this.level);\n\n    // If there are no transports, return the level configured at the logger level\n    if (!this.transports || this.transports.length === 0) {\n      return configuredLevelValue;\n    }\n\n    return this.transports.reduce((max, transport) => {\n      const levelValue = getLevelValue(this.levels, transport.level);\n      return levelValue !== null && levelValue > max ? levelValue : max;\n    }, configuredLevelValue);\n  }\n\n  isLevelEnabled(level) {\n    const givenLevelValue = getLevelValue(this.levels, level);\n    if (givenLevelValue === null) {\n      return false;\n    }\n\n    const configuredLevelValue = getLevelValue(this.levels, this.level);\n    if (configuredLevelValue === null) {\n      return false;\n    }\n\n    if (!this.transports || this.transports.length === 0) {\n      return configuredLevelValue >= givenLevelValue;\n    }\n\n    const index = this.transports.findIndex(transport => {\n      let transportLevelValue = getLevelValue(this.levels, transport.level);\n      if (transportLevelValue === null) {\n        transportLevelValue = configuredLevelValue;\n      }\n      return transportLevelValue >= givenLevelValue;\n    });\n    return index !== -1;\n  }\n\n  /* eslint-disable valid-jsdoc */\n  /**\n   * Ensure backwards compatibility with a `log` method\n   * @param {mixed} level - Level the log message is written at.\n   * @param {mixed} msg - TODO: add param description.\n   * @param {mixed} meta - TODO: add param description.\n   * @returns {Logger} - TODO: add return description.\n   *\n   * @example\n   *    // Supports the existing API:\n   *    logger.log('info', 'Hello world', { custom: true });\n   *    logger.log('info', new Error('Yo, it\\'s on fire'));\n   *\n   *    // Requires winston.format.splat()\n   *    logger.log('info', '%s %d%%', 'A string', 50, { thisIsMeta: true });\n   *\n   *    // And the new API with a single JSON literal:\n   *    logger.log({ level: 'info', message: 'Hello world', custom: true });\n   *    logger.log({ level: 'info', message: new Error('Yo, it\\'s on fire') });\n   *\n   *    // Also requires winston.format.splat()\n   *    logger.log({\n   *      level: 'info',\n   *      message: '%s %d%%',\n   *      [SPLAT]: ['A string', 50],\n   *      meta: { thisIsMeta: true }\n   *    });\n   *\n   */\n  /* eslint-enable valid-jsdoc */\n  log(level, msg, ...splat) {\n    // eslint-disable-line max-params\n    // Optimize for the hotpath of logging JSON literals\n    if (arguments.length === 1) {\n      // Yo dawg, I heard you like levels ... seriously ...\n      // In this context the LHS `level` here is actually the `info` so read\n      // this as: info[LEVEL] = info.level;\n      level[LEVEL] = level.level;\n      this._addDefaultMeta(level);\n      this.write(level);\n      return this;\n    }\n\n    // Slightly less hotpath, but worth optimizing for.\n    if (arguments.length === 2) {\n      if (msg && typeof msg === 'object') {\n        msg[LEVEL] = msg.level = level;\n        this._addDefaultMeta(msg);\n        this.write(msg);\n        return this;\n      }\n\n      msg = { [LEVEL]: level, level, message: msg };\n      this._addDefaultMeta(msg);\n      this.write(msg);\n      return this;\n    }\n\n    const [meta] = splat;\n    if (typeof meta === 'object' && meta !== null) {\n      // Extract tokens, if none available default to empty array to\n      // ensure consistancy in expected results\n      const tokens = msg && msg.match && msg.match(formatRegExp);\n\n      if (!tokens) {\n        const info = Object.assign({}, this.defaultMeta, meta, {\n          [LEVEL]: level,\n          [SPLAT]: splat,\n          level,\n          message: msg\n        });\n\n        if (meta.message) info.message = `${info.message} ${meta.message}`;\n        if (meta.stack) info.stack = meta.stack;\n        if (meta.cause) info.cause = meta.cause;\n\n        this.write(info);\n        return this;\n      }\n    }\n\n    this.write(Object.assign({}, this.defaultMeta, {\n      [LEVEL]: level,\n      [SPLAT]: splat,\n      level,\n      message: msg\n    }));\n\n    return this;\n  }\n\n  /**\n   * Pushes data so that it can be picked up by all of our pipe targets.\n   * @param {mixed} info - TODO: add param description.\n   * @param {mixed} enc - TODO: add param description.\n   * @param {mixed} callback - Continues stream processing.\n   * @returns {undefined}\n   * @private\n   */\n  _transform(info, enc, callback) {\n    if (this.silent) {\n      return callback();\n    }\n\n    // [LEVEL] is only soft guaranteed to be set here since we are a proper\n    // stream. It is likely that `info` came in through `.log(info)` or\n    // `.info(info)`. If it is not defined, however, define it.\n    // This LEVEL symbol is provided by `triple-beam` and also used in:\n    // - logform\n    // - winston-transport\n    // - abstract-winston-transport\n    if (!info[LEVEL]) {\n      info[LEVEL] = info.level;\n    }\n\n    // Remark: really not sure what to do here, but this has been reported as\n    // very confusing by pre winston@2.0.0 users as quite confusing when using\n    // custom levels.\n    if (!this.levels[info[LEVEL]] && this.levels[info[LEVEL]] !== 0) {\n      // eslint-disable-next-line no-console\n      console.error('[winston] Unknown logger level: %s', info[LEVEL]);\n    }\n\n    // Remark: not sure if we should simply error here.\n    if (!this._readableState.pipes) {\n      // eslint-disable-next-line no-console\n      console.error(\n        '[winston] Attempt to write logs with no transports, which can increase memory usage: %j',\n        info\n      );\n    }\n\n    // Here we write to the `format` pipe-chain, which on `readable` above will\n    // push the formatted `info` Object onto the buffer for this instance. We trap\n    // (and re-throw) any errors generated by the user-provided format, but also\n    // guarantee that the streams callback is invoked so that we can continue flowing.\n    try {\n      this.push(this.format.transform(info, this.format.options));\n    } finally {\n      this._writableState.sync = false;\n      // eslint-disable-next-line callback-return\n      callback();\n    }\n  }\n\n  /**\n   * Delays the 'finish' event until all transport pipe targets have\n   * also emitted 'finish' or are already finished.\n   * @param {mixed} callback - Continues stream processing.\n   */\n  _final(callback) {\n    const transports = this.transports.slice();\n    asyncForEach(\n      transports,\n      (transport, next) => {\n        if (!transport || transport.finished) return setImmediate(next);\n        transport.once('finish', next);\n        transport.end();\n      },\n      callback\n    );\n  }\n\n  /**\n   * Adds the transport to this logger instance by piping to it.\n   * @param {mixed} transport - TODO: add param description.\n   * @returns {Logger} - TODO: add return description.\n   */\n  add(transport) {\n    // Support backwards compatibility with all existing `winston < 3.x.x`\n    // transports which meet one of two criteria:\n    // 1. They inherit from winston.Transport in  < 3.x.x which is NOT a stream.\n    // 2. They expose a log method which has a length greater than 2 (i.e. more then\n    //    just `log(info, callback)`.\n    const target =\n      !isStream(transport) || transport.log.length > 2\n        ? new LegacyTransportStream({ transport })\n        : transport;\n\n    if (!target._writableState || !target._writableState.objectMode) {\n      throw new Error(\n        'Transports must WritableStreams in objectMode. Set { objectMode: true }.'\n      );\n    }\n\n    // Listen for the `error` event and the `warn` event on the new Transport.\n    this._onEvent('error', target);\n    this._onEvent('warn', target);\n    this.pipe(target);\n\n    if (transport.handleExceptions) {\n      this.exceptions.handle();\n    }\n\n    if (transport.handleRejections) {\n      this.rejections.handle();\n    }\n\n    return this;\n  }\n\n  /**\n   * Removes the transport from this logger instance by unpiping from it.\n   * @param {mixed} transport - TODO: add param description.\n   * @returns {Logger} - TODO: add return description.\n   */\n  remove(transport) {\n    if (!transport) return this;\n    let target = transport;\n    if (!isStream(transport) || transport.log.length > 2) {\n      target = this.transports.filter(\n        match => match.transport === transport\n      )[0];\n    }\n\n    if (target) {\n      this.unpipe(target);\n    }\n    return this;\n  }\n\n  /**\n   * Removes all transports from this logger instance.\n   * @returns {Logger} - TODO: add return description.\n   */\n  clear() {\n    this.unpipe();\n    return this;\n  }\n\n  /**\n   * Cleans up resources (streams, event listeners) for all transports\n   * associated with this instance (if necessary).\n   * @returns {Logger} - TODO: add return description.\n   */\n  close() {\n    this.exceptions.unhandle();\n    this.rejections.unhandle();\n    this.clear();\n    this.emit('close');\n    return this;\n  }\n\n  /**\n   * Sets the `target` levels specified on this instance.\n   * @param {Object} Target levels to use on this instance.\n   */\n  setLevels() {\n    warn.deprecated('setLevels');\n  }\n\n  /**\n   * Queries the all transports for this instance with the specified `options`.\n   * This will aggregate each transport's results into one object containing\n   * a property per transport.\n   * @param {Object} options - Query options for this instance.\n   * @param {function} callback - Continuation to respond to when complete.\n   */\n  query(options, callback) {\n    if (typeof options === 'function') {\n      callback = options;\n      options = {};\n    }\n\n    options = options || {};\n    const results = {};\n    const queryObject = Object.assign({}, options.query || {});\n\n    // Helper function to query a single transport\n    function queryTransport(transport, next) {\n      if (options.query && typeof transport.formatQuery === 'function') {\n        options.query = transport.formatQuery(queryObject);\n      }\n\n      transport.query(options, (err, res) => {\n        if (err) {\n          return next(err);\n        }\n\n        if (typeof transport.formatResults === 'function') {\n          res = transport.formatResults(res, options.format);\n        }\n\n        next(null, res);\n      });\n    }\n\n    // Helper function to accumulate the results from `queryTransport` into\n    // the `results`.\n    function addResults(transport, next) {\n      queryTransport(transport, (err, result) => {\n        // queryTransport could potentially invoke the callback multiple times\n        // since Transport code can be unpredictable.\n        if (next) {\n          result = err || result;\n          if (result) {\n            results[transport.name] = result;\n          }\n\n          // eslint-disable-next-line callback-return\n          next();\n        }\n\n        next = null;\n      });\n    }\n\n    // Iterate over the transports in parallel setting the appropriate key in\n    // the `results`.\n    asyncForEach(\n      this.transports.filter(transport => !!transport.query),\n      addResults,\n      () => callback(null, results)\n    );\n  }\n\n  /**\n   * Returns a log stream for all transports. Options object is optional.\n   * @param{Object} options={} - Stream options for this instance.\n   * @returns {Stream} - TODO: add return description.\n   */\n  stream(options = {}) {\n    const out = new Stream();\n    const streams = [];\n\n    out._streams = streams;\n    out.destroy = () => {\n      let i = streams.length;\n      while (i--) {\n        streams[i].destroy();\n      }\n    };\n\n    // Create a list of all transports for this instance.\n    this.transports\n      .filter(transport => !!transport.stream)\n      .forEach(transport => {\n        const str = transport.stream(options);\n        if (!str) {\n          return;\n        }\n\n        streams.push(str);\n\n        str.on('log', log => {\n          log.transport = log.transport || [];\n          log.transport.push(transport.name);\n          out.emit('log', log);\n        });\n\n        str.on('error', err => {\n          err.transport = err.transport || [];\n          err.transport.push(transport.name);\n          out.emit('error', err);\n        });\n      });\n\n    return out;\n  }\n\n  /**\n   * Returns an object corresponding to a specific timing. When done is called\n   * the timer will finish and log the duration. e.g.:\n   * @returns {Profile} - TODO: add return description.\n   * @example\n   *    const timer = winston.startTimer()\n   *    setTimeout(() => {\n   *      timer.done({\n   *        message: 'Logging message'\n   *      });\n   *    }, 1000);\n   */\n  startTimer() {\n    return new Profiler(this);\n  }\n\n  /**\n   * Tracks the time inbetween subsequent calls to this method with the same\n   * `id` parameter. The second call to this method will log the difference in\n   * milliseconds along with the message.\n   * @param {string} id Unique id of the profiler\n   * @returns {Logger} - TODO: add return description.\n   */\n  profile(id, ...args) {\n    const time = Date.now();\n    if (this.profilers[id]) {\n      const timeEnd = this.profilers[id];\n      delete this.profilers[id];\n\n      // Attempt to be kind to users if they are still using older APIs.\n      if (typeof args[args.length - 2] === 'function') {\n        // eslint-disable-next-line no-console\n        console.warn(\n          'Callback function no longer supported as of winston@3.0.0'\n        );\n        args.pop();\n      }\n\n      // Set the duration property of the metadata\n      const info = typeof args[args.length - 1] === 'object' ? args.pop() : {};\n      info.level = info.level || 'info';\n      info.durationMs = time - timeEnd;\n      info.message = info.message || id;\n      return this.write(info);\n    }\n\n    this.profilers[id] = time;\n    return this;\n  }\n\n  /**\n   * Backwards compatibility to `exceptions.handle` in winston < 3.0.0.\n   * @returns {undefined}\n   * @deprecated\n   */\n  handleExceptions(...args) {\n    // eslint-disable-next-line no-console\n    console.warn(\n      'Deprecated: .handleExceptions() will be removed in winston@4. Use .exceptions.handle()'\n    );\n    this.exceptions.handle(...args);\n  }\n\n  /**\n   * Backwards compatibility to `exceptions.handle` in winston < 3.0.0.\n   * @returns {undefined}\n   * @deprecated\n   */\n  unhandleExceptions(...args) {\n    // eslint-disable-next-line no-console\n    console.warn(\n      'Deprecated: .unhandleExceptions() will be removed in winston@4. Use .exceptions.unhandle()'\n    );\n    this.exceptions.unhandle(...args);\n  }\n\n  /**\n   * Throw a more meaningful deprecation notice\n   * @throws {Error} - TODO: add throws description.\n   */\n  cli() {\n    throw new Error(\n      [\n        'Logger.cli() was removed in winston@3.0.0',\n        'Use a custom winston.formats.cli() instead.',\n        'See: https://github.com/winstonjs/winston/tree/master/UPGRADE-3.0.md'\n      ].join('\\n')\n    );\n  }\n\n  /**\n   * Bubbles the `event` that occured on the specified `transport` up\n   * from this instance.\n   * @param {string} event - The event that occured\n   * @param {Object} transport - Transport on which the event occured\n   * @private\n   */\n  _onEvent(event, transport) {\n    function transportEvent(err) {\n      // https://github.com/winstonjs/winston/issues/1364\n      if (event === 'error' && !this.transports.includes(transport)) {\n        this.add(transport);\n      }\n      this.emit(event, err, transport);\n    }\n\n    if (!transport['__winston' + event]) {\n      transport['__winston' + event] = transportEvent.bind(this);\n      transport.on(event, transport['__winston' + event]);\n    }\n  }\n\n  _addDefaultMeta(msg) {\n    if (this.defaultMeta) {\n      Object.assign(msg, this.defaultMeta);\n    }\n  }\n}\n\nfunction getLevelValue(levels, level) {\n  const value = levels[level];\n  if (!value && value !== 0) {\n    return null;\n  }\n  return value;\n}\n\n/**\n * Represents the current readableState pipe targets for this Logger instance.\n * @type {Array|Object}\n */\nObject.defineProperty(Logger.prototype, 'transports', {\n  configurable: false,\n  enumerable: true,\n  get() {\n    const { pipes } = this._readableState;\n    return !Array.isArray(pipes) ? [pipes].filter(Boolean) : pipes;\n  }\n});\n\nmodule.exports = Logger;\n", "/**\n * create-logger.js: Logger factory for winston logger instances.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst { LEVEL } = require('triple-beam');\nconst config = require('./config');\nconst Logger = require('./logger');\nconst debug = require('@dabh/diagnostics')('winston:create-logger');\n\nfunction isLevelEnabledFunctionName(level) {\n  return 'is' + level.charAt(0).toUpperCase() + level.slice(1) + 'Enabled';\n}\n\n/**\n * Create a new instance of a winston Logger. Creates a new\n * prototype for each instance.\n * @param {!Object} opts - Options for the created logger.\n * @returns {Logger} - A newly created logger instance.\n */\nmodule.exports = function (opts = {}) {\n  //\n  // Default levels: npm\n  //\n  opts.levels = opts.levels || config.npm.levels;\n\n  /**\n   * DerivedLogger to attach the logs level methods.\n   * @type {DerivedLogger}\n   * @extends {Logger}\n   */\n  class DerivedLogger extends Logger {\n    /**\n     * Create a new class derived logger for which the levels can be attached to\n     * the prototype of. This is a V8 optimization that is well know to increase\n     * performance of prototype functions.\n     * @param {!Object} options - Options for the created logger.\n     */\n    constructor(options) {\n      super(options);\n    }\n  }\n\n  const logger = new DerivedLogger(opts);\n\n  //\n  // Create the log level methods for the derived logger.\n  //\n  Object.keys(opts.levels).forEach(function (level) {\n    debug('Define prototype method for \"%s\"', level);\n    if (level === 'log') {\n      // eslint-disable-next-line no-console\n      console.warn('Level \"log\" not defined: conflicts with the method \"log\". Use a different level name.');\n      return;\n    }\n\n    //\n    // Define prototype methods for each log level e.g.:\n    // logger.log('info', msg) implies these methods are defined:\n    // - logger.info(msg)\n    // - logger.isInfoEnabled()\n    //\n    // Remark: to support logger.child this **MUST** be a function\n    // so it'll always be called on the instance instead of a fixed\n    // place in the prototype chain.\n    //\n    DerivedLogger.prototype[level] = function (...args) {\n      // Prefer any instance scope, but default to \"root\" logger\n      const self = this || logger;\n\n      // Optimize the hot-path which is the single object.\n      if (args.length === 1) {\n        const [msg] = args;\n        const info = msg && msg.message && msg || { message: msg };\n        info.level = info[LEVEL] = level;\n        self._addDefaultMeta(info);\n        self.write(info);\n        return (this || logger);\n      }\n\n      // When provided nothing assume the empty string\n      if (args.length === 0) {\n        self.log(level, '');\n        return self;\n      }\n\n      // Otherwise build argument list which could potentially conform to\n      // either:\n      // . v3 API: log(obj)\n      // 2. v1/v2 API: log(level, msg, ... [string interpolate], [{metadata}], [callback])\n      return self.log(level, ...args);\n    };\n\n    DerivedLogger.prototype[isLevelEnabledFunctionName(level)] = function () {\n      return (this || logger).isLevelEnabled(level);\n    };\n  });\n\n  return logger;\n};\n", "/**\n * container.js: Inversion of control container for winston logger instances.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst createLogger = require('./create-logger');\n\n/**\n * Inversion of control container for winston logger instances.\n * @type {Container}\n */\nmodule.exports = class Container {\n  /**\n   * Constructor function for the Container object responsible for managing a\n   * set of `winston.Logger` instances based on string ids.\n   * @param {!Object} [options={}] - Default pass-thru options for Loggers.\n   */\n  constructor(options = {}) {\n    this.loggers = new Map();\n    this.options = options;\n  }\n\n  /**\n   * Retrieves a `winston.Logger` instance for the specified `id`. If an\n   * instance does not exist, one is created.\n   * @param {!string} id - The id of the Logger to get.\n   * @param {?Object} [options] - Options for the Logger instance.\n   * @returns {Logger} - A configured Logger instance with a specified id.\n   */\n  add(id, options) {\n    if (!this.loggers.has(id)) {\n      // Remark: Simple shallow clone for configuration options in case we pass\n      // in instantiated protoypal objects\n      options = Object.assign({}, options || this.options);\n      const existing = options.transports || this.options.transports;\n\n      // Remark: Make sure if we have an array of transports we slice it to\n      // make copies of those references.\n      if (existing) {\n        options.transports = Array.isArray(existing) ? existing.slice() : [existing];\n      } else {\n        options.transports = [];\n      }\n\n      const logger = createLogger(options);\n      logger.on('close', () => this._delete(id));\n      this.loggers.set(id, logger);\n    }\n\n    return this.loggers.get(id);\n  }\n\n  /**\n   * Retreives a `winston.Logger` instance for the specified `id`. If\n   * an instance does not exist, one is created.\n   * @param {!string} id - The id of the Logger to get.\n   * @param {?Object} [options] - Options for the Logger instance.\n   * @returns {Logger} - A configured Logger instance with a specified id.\n   */\n  get(id, options) {\n    return this.add(id, options);\n  }\n\n  /**\n   * Check if the container has a logger with the id.\n   * @param {?string} id - The id of the Logger instance to find.\n   * @returns {boolean} - Boolean value indicating if this instance has a\n   * logger with the specified `id`.\n   */\n  has(id) {\n    return !!this.loggers.has(id);\n  }\n\n  /**\n   * Closes a `Logger` instance with the specified `id` if it exists.\n   * If no `id` is supplied then all Loggers are closed.\n   * @param {?string} id - The id of the Logger instance to close.\n   * @returns {undefined}\n   */\n  close(id) {\n    if (id) {\n      return this._removeLogger(id);\n    }\n\n    this.loggers.forEach((val, key) => this._removeLogger(key));\n  }\n\n  /**\n   * Remove a logger based on the id.\n   * @param {!string} id - The id of the logger to remove.\n   * @returns {undefined}\n   * @private\n   */\n  _removeLogger(id) {\n    if (!this.loggers.has(id)) {\n      return;\n    }\n\n    const logger = this.loggers.get(id);\n    logger.close();\n    this._delete(id);\n  }\n\n  /**\n   * Deletes a `Logger` instance with the specified `id`.\n   * @param {!string} id - The id of the Logger instance to delete from\n   * container.\n   * @returns {undefined}\n   * @private\n   */\n  _delete(id) {\n    this.loggers.delete(id);\n  }\n};\n", "/**\n * winston.js: Top-level include defining Winston.\n *\n * (C) 2010 Charlie Robbins\n * MIT LICENCE\n */\n\n'use strict';\n\nconst logform = require('logform');\nconst { warn } = require('./winston/common');\n\n/**\n * Expose version. Use `require` method for `webpack` support.\n * @type {string}\n */\nexports.version = require('../package.json').version;\n/**\n * Include transports defined by default by winston\n * @type {Array}\n */\nexports.transports = require('./winston/transports');\n/**\n * Expose utility methods\n * @type {Object}\n */\nexports.config = require('./winston/config');\n/**\n * Hoist format-related functionality from logform.\n * @type {Object}\n */\nexports.addColors = logform.levels;\n/**\n * Hoist format-related functionality from logform.\n * @type {Object}\n */\nexports.format = logform.format;\n/**\n * Expose core Logging-related prototypes.\n * @type {function}\n */\nexports.createLogger = require('./winston/create-logger');\n/**\n * Expose core Logging-related prototypes.\n * @type {function}\n */\nexports.Logger = require('./winston/logger');\n/**\n * Expose core Logging-related prototypes.\n * @type {Object}\n */\nexports.ExceptionHandler = require('./winston/exception-handler');\n/**\n * Expose core Logging-related prototypes.\n * @type {Object}\n */\nexports.RejectionHandler = require('./winston/rejection-handler');\n/**\n * Expose core Logging-related prototypes.\n * @type {Container}\n */\nexports.Container = require('./winston/container');\n/**\n * Expose core Logging-related prototypes.\n * @type {Object}\n */\nexports.Transport = require('winston-transport');\n/**\n * We create and expose a default `Container` to `winston.loggers` so that the\n * programmer may manage multiple `winston.Logger` instances without any\n * additional overhead.\n * @example\n *   // some-file1.js\n *   const logger = require('winston').loggers.get('something');\n *\n *   // some-file2.js\n *   const logger = require('winston').loggers.get('something');\n */\nexports.loggers = new exports.Container();\n\n/**\n * We create and expose a 'defaultLogger' so that the programmer may do the\n * following without the need to create an instance of winston.Logger directly:\n * @example\n *   const winston = require('winston');\n *   winston.log('info', 'some message');\n *   winston.error('some error');\n */\nconst defaultLogger = exports.createLogger();\n\n// Pass through the target methods onto `winston.\nObject.keys(exports.config.npm.levels)\n  .concat([\n    'log',\n    'query',\n    'stream',\n    'add',\n    'remove',\n    'clear',\n    'profile',\n    'startTimer',\n    'handleExceptions',\n    'unhandleExceptions',\n    'handleRejections',\n    'unhandleRejections',\n    'configure',\n    'child'\n  ])\n  .forEach(\n    method => (exports[method] = (...args) => defaultLogger[method](...args))\n  );\n\n/**\n * Define getter / setter for the default logger level which need to be exposed\n * by winston.\n * @type {string}\n */\nObject.defineProperty(exports, 'level', {\n  get() {\n    return defaultLogger.level;\n  },\n  set(val) {\n    defaultLogger.level = val;\n  }\n});\n\n/**\n * Define getter for `exceptions` which replaces `handleExceptions` and\n * `unhandleExceptions`.\n * @type {Object}\n */\nObject.defineProperty(exports, 'exceptions', {\n  get() {\n    return defaultLogger.exceptions;\n  }\n});\n\n/**\n * Define getter for `rejections` which replaces `handleRejections` and\n * `unhandleRejections`.\n * @type {Object}\n */\nObject.defineProperty(exports, 'rejections', {\n  get() {\n    return defaultLogger.rejections;\n  }\n});\n\n/**\n * Define getters / setters for appropriate properties of the default logger\n * which need to be exposed by winston.\n * @type {Logger}\n */\n['exitOnError'].forEach(prop => {\n  Object.defineProperty(exports, prop, {\n    get() {\n      return defaultLogger[prop];\n    },\n    set(val) {\n      defaultLogger[prop] = val;\n    }\n  });\n});\n\n/**\n * The default transports and exceptionHandlers for the default winston logger.\n * @type {Object}\n */\nObject.defineProperty(exports, 'default', {\n  get() {\n    return {\n      exceptionHandlers: defaultLogger.exceptionHandlers,\n      rejectionHandlers: defaultLogger.rejectionHandlers,\n      transports: defaultLogger.transports\n    };\n  }\n});\n\n// Have friendlier breakage notices for properties that were exposed by default\n// on winston < 3.0.\nwarn.deprecated(exports, 'setLevels');\nwarn.forFunctions(exports, 'useFormat', ['cli']);\nwarn.forProperties(exports, 'useFormat', ['padLevels', 'stripColors']);\nwarn.forFunctions(exports, 'deprecated', [\n  'addRewriter',\n  'addFilter',\n  'clone',\n  'extend'\n]);\nwarn.forProperties(exports, 'deprecated', ['emitErrs', 'levelLength']);\n\n", "'use strict'\n\nconst isWrappedSymbol = Symbol('cls-rtracer-is-wrapped')\nconst wrappedSymbol = Symbol('cls-rtracer-wrapped-function')\n\nfunction wrapEmitterMethod (emitter, method, wrapper) {\n  if (emitter[method][isWrappedSymbol]) {\n    return\n  }\n\n  const original = emitter[method]\n  const wrapped = wrapper(original)\n  wrapped[isWrappedSymbol] = true\n  emitter[method] = wrapped\n\n  return wrapped\n}\n\nconst addMethods = [\n  'on',\n  'addListener',\n  'prependListener'\n]\n\nconst removeMethods = [\n  'off',\n  'removeListener'\n]\n\n/**\n * Wraps EventEmitter listener registration methods of the given emitter,\n * so that all listeners are run in scope of the provided async resource.\n *\n * Supports registering same listener function to multiple events (or\n * even the same one), as well as subsequent deregistering.\n */\nfunction wrapEmitter (emitter, asyncResource) {\n  for (const method of addMethods) {\n    wrapEmitterMethod(emitter, method, (original) => function (event, handler) {\n      let wrapped = emitter[wrappedSymbol]\n      if (wrapped === undefined) {\n        wrapped = {}\n        emitter[wrappedSymbol] = wrapped\n      }\n      const wrappedHandler = asyncResource.runInAsyncScope.bind(asyncResource, handler, emitter)\n      const existing = wrapped[event]\n      if (existing === undefined) {\n        wrapped[event] = wrappedHandler\n      } else if (typeof existing === 'function') {\n        wrapped[event] = [existing, wrappedHandler]\n      } else {\n        wrapped[event].push(wrappedHandler)\n      }\n      return original.call(this, event, wrappedHandler)\n    })\n  }\n\n  for (const method of removeMethods) {\n    wrapEmitterMethod(emitter, method, (original) => function (event, handler) {\n      let wrappedHandler\n      const wrapped = emitter[wrappedSymbol]\n      if (wrapped !== undefined) {\n        const existing = wrapped[event]\n        if (existing !== undefined) {\n          if (typeof existing === 'function') {\n            wrappedHandler = existing\n            delete wrapped[event]\n          } else {\n            wrappedHandler = existing.pop()\n          }\n        }\n      }\n      return original.call(this, event, wrappedHandler || handler)\n    })\n  }\n}\n\nmodule.exports = {\n  wrapEmitter\n}\n", "import crypto from 'crypto';\nconst rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate\n\nlet poolPtr = rnds8Pool.length;\nexport default function rng() {\n  if (poolPtr > rnds8Pool.length - 16) {\n    crypto.randomFillSync(rnds8Pool);\n    poolPtr = 0;\n  }\n\n  return rnds8Pool.slice(poolPtr, poolPtr += 16);\n}", "export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;", "import REGEX from './regex.js';\n\nfunction validate(uuid) {\n  return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;", "import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n  byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n  // Note: Be careful editing this code!  It's been tuned for performance\n  // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n  return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n  const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID.  If this throws, it's likely due to one\n  // of the following:\n  // - One or more input array values don't map to a hex octet (leading to\n  // \"undefined\" in the uuid)\n  // - Invalid input values for the RFC `version` or `variant` fields\n\n  if (!validate(uuid)) {\n    throw TypeError('Stringified UUID is invalid');\n  }\n\n  return uuid;\n}\n\nexport default stringify;", "import rng from './rng.js';\nimport { unsafeStringify } from './stringify.js'; // **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\n\nlet _nodeId;\n\nlet _clockseq; // Previous uuid creation time\n\n\nlet _lastMSecs = 0;\nlet _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n  let i = buf && offset || 0;\n  const b = buf || new Array(16);\n  options = options || {};\n  let node = options.node || _nodeId;\n  let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n  // specified.  We do this lazily to minimize issues related to insufficient\n  // system entropy.  See #189\n\n  if (node == null || clockseq == null) {\n    const seedBytes = options.random || (options.rng || rng)();\n\n    if (node == null) {\n      // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n      node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n    }\n\n    if (clockseq == null) {\n      // Per 4.2.2, randomize (14 bit) clockseq\n      clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n    }\n  } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n  // (1582-10-15 00:00).  JSNumbers aren't precise enough for this, so\n  // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n  // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n  let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n  // cycle to simulate higher resolution clock\n\n  let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n  const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n  if (dt < 0 && options.clockseq === undefined) {\n    clockseq = clockseq + 1 & 0x3fff;\n  } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n  // time interval\n\n\n  if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n    nsecs = 0;\n  } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n  if (nsecs >= 10000) {\n    throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n  }\n\n  _lastMSecs = msecs;\n  _lastNSecs = nsecs;\n  _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n  msecs += 12219292800000; // `time_low`\n\n  const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n  b[i++] = tl >>> 24 & 0xff;\n  b[i++] = tl >>> 16 & 0xff;\n  b[i++] = tl >>> 8 & 0xff;\n  b[i++] = tl & 0xff; // `time_mid`\n\n  const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n  b[i++] = tmh >>> 8 & 0xff;\n  b[i++] = tmh & 0xff; // `time_high_and_version`\n\n  b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n  b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n  b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n  b[i++] = clockseq & 0xff; // `node`\n\n  for (let n = 0; n < 6; ++n) {\n    b[i + n] = node[n];\n  }\n\n  return buf || unsafeStringify(b);\n}\n\nexport default v1;", "import validate from './validate.js';\n\nfunction parse(uuid) {\n  if (!validate(uuid)) {\n    throw TypeError('Invalid UUID');\n  }\n\n  let v;\n  const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n  arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n  arr[1] = v >>> 16 & 0xff;\n  arr[2] = v >>> 8 & 0xff;\n  arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n  arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n  arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n  arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n  arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n  arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n  arr[9] = v & 0xff; // Parse ........-....-....-....-############\n  // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n  arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n  arr[11] = v / 0x100000000 & 0xff;\n  arr[12] = v >>> 24 & 0xff;\n  arr[13] = v >>> 16 & 0xff;\n  arr[14] = v >>> 8 & 0xff;\n  arr[15] = v & 0xff;\n  return arr;\n}\n\nexport default parse;", "import { unsafeStringify } from './stringify.js';\nimport parse from './parse.js';\n\nfunction stringToBytes(str) {\n  str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n  const bytes = [];\n\n  for (let i = 0; i < str.length; ++i) {\n    bytes.push(str.charCodeAt(i));\n  }\n\n  return bytes;\n}\n\nexport const DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexport const URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexport default function v35(name, version, hashfunc) {\n  function generateUUID(value, namespace, buf, offset) {\n    var _namespace;\n\n    if (typeof value === 'string') {\n      value = stringToBytes(value);\n    }\n\n    if (typeof namespace === 'string') {\n      namespace = parse(namespace);\n    }\n\n    if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) {\n      throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n    } // Compute hash of namespace and value, Per 4.3\n    // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n    // hashfunc([...namespace, ... value])`\n\n\n    let bytes = new Uint8Array(16 + value.length);\n    bytes.set(namespace);\n    bytes.set(value, namespace.length);\n    bytes = hashfunc(bytes);\n    bytes[6] = bytes[6] & 0x0f | version;\n    bytes[8] = bytes[8] & 0x3f | 0x80;\n\n    if (buf) {\n      offset = offset || 0;\n\n      for (let i = 0; i < 16; ++i) {\n        buf[offset + i] = bytes[i];\n      }\n\n      return buf;\n    }\n\n    return unsafeStringify(bytes);\n  } // Function#name is not settable on some platforms (#270)\n\n\n  try {\n    generateUUID.name = name; // eslint-disable-next-line no-empty\n  } catch (err) {} // For CommonJS default export support\n\n\n  generateUUID.DNS = DNS;\n  generateUUID.URL = URL;\n  return generateUUID;\n}", "import crypto from 'crypto';\n\nfunction md5(bytes) {\n  if (Array.isArray(bytes)) {\n    bytes = Buffer.from(bytes);\n  } else if (typeof bytes === 'string') {\n    bytes = Buffer.from(bytes, 'utf8');\n  }\n\n  return crypto.createHash('md5').update(bytes).digest();\n}\n\nexport default md5;", "import v35 from './v35.js';\nimport md5 from './md5.js';\nconst v3 = v35('v3', 0x30, md5);\nexport default v3;", "import crypto from 'crypto';\nexport default {\n  randomUUID: crypto.randomUUID\n};", "import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n  if (native.randomUUID && !buf && !options) {\n    return native.randomUUID();\n  }\n\n  options = options || {};\n  const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n  rnds[6] = rnds[6] & 0x0f | 0x40;\n  rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n  if (buf) {\n    offset = offset || 0;\n\n    for (let i = 0; i < 16; ++i) {\n      buf[offset + i] = rnds[i];\n    }\n\n    return buf;\n  }\n\n  return unsafeStringify(rnds);\n}\n\nexport default v4;", "import crypto from 'crypto';\n\nfunction sha1(bytes) {\n  if (Array.isArray(bytes)) {\n    bytes = Buffer.from(bytes);\n  } else if (typeof bytes === 'string') {\n    bytes = Buffer.from(bytes, 'utf8');\n  }\n\n  return crypto.createHash('sha1').update(bytes).digest();\n}\n\nexport default sha1;", "import v35 from './v35.js';\nimport sha1 from './sha1.js';\nconst v5 = v35('v5', 0x50, sha1);\nexport default v5;", "export default '00000000-0000-0000-0000-000000000000';", "import validate from './validate.js';\n\nfunction version(uuid) {\n  if (!validate(uuid)) {\n    throw TypeError('Invalid UUID');\n  }\n\n  return parseInt(uuid.slice(14, 15), 16);\n}\n\nexport default version;", "export { default as v1 } from './v1.js';\nexport { default as v3 } from './v3.js';\nexport { default as v4 } from './v4.js';\nexport { default as v5 } from './v5.js';\nexport { default as NIL } from './nil.js';\nexport { default as version } from './version.js';\nexport { default as validate } from './validate.js';\nexport { default as stringify } from './stringify.js';\nexport { default as parse } from './parse.js';", "'use strict'\n\nconst { wrapEmitter } = require('./util')\nconst { v1: uuidv1 } = require('uuid')\nconst { AsyncLocalStorage, AsyncResource } = require('async_hooks')\n\nconst pluginName = 'cls-rtracer'\n\nconst als = new AsyncLocalStorage()\n\nconst wrapHttpEmitters = (req, res) => {\n  const asyncResource = new AsyncResource('cls-rtracer')\n  wrapEmitter(req, asyncResource)\n  wrapEmitter(res, asyncResource)\n}\n\nconst expressSetResHeaderFn = (res, headerName, requestId) => {\n  res.set(headerName, requestId)\n}\nconst fastifySetResHeaderFn = (res, headerName, requestId) => {\n  res.setHeader(headerName, requestId)\n}\n\n/**\n * Generates a function to generate tracer middleware for Express/Fastify.\n * @param setResHeaderFn {function} function used to set response header\n */\nconst expressMiddleware = (setResHeaderFn) => {\n  /**\n   * Generates a request tracer middleware for Express/Fastify.\n   *\n   * @param {Object} options possible options\n   * @param {boolean} options.useHeader respect request header flag\n   *                                    (default: `false`)\n   * @param {string} options.headerName request header name, used if `useHeader`/`echoHeader` is set to `true`\n   *                                    (default: `X-Request-Id`)\n   * @param {function} options.requestIdFactory function used to generate request ids\n   *                                    (default: UUIDs v1)\n   * @param {boolean} options.echoHeader injects `headerName` header into the response\n   *                                    (default: `false`)\n   */\n  return ({\n    useHeader = false,\n    headerName = 'X-Request-Id',\n    requestIdFactory = uuidv1,\n    echoHeader = false\n  } = {}) => {\n    return (req, res, next) => {\n      let requestId\n      if (useHeader) {\n        requestId = req.headers[headerName.toLowerCase()]\n      }\n      requestId = requestId || requestIdFactory(req)\n\n      if (echoHeader) {\n        setResHeaderFn(res, headerName, requestId)\n      }\n\n      als.run(requestId, () => {\n        wrapHttpEmitters(req, res)\n        next()\n      })\n    }\n  }\n}\n\n/**\n * Request tracer plugin for Fastify.\n *\n * @param {Object} options possible options\n * @param {boolean} options.useHeader respect request header flag\n *                                    (default: `false`)\n * @param {string} options.headerName request header name, used if `useHeader`/`echoHeader` is set to `true`\n *                                    (default: `X-Request-Id`)\n * @param {boolean} options.useFastifyRequestId respect Fastify request id flag\n *                                    (default: `false`)\n * @param {function} options.requestIdFactory function used to generate request ids\n *                                    (default: UUIDs v1)\n * @param {boolean} options.echoHeader injects `headerName` header into the response\n *                                    (default: `false`)\n */\nconst fastifyPlugin = (fastify, options, next) => {\n  const {\n    useHeader = false,\n    headerName = 'X-Request-Id',\n    useFastifyRequestId = false,\n    requestIdFactory = uuidv1,\n    echoHeader = false\n  } = options\n\n  fastify.addHook('onRequest', (request, reply, done) => {\n    let requestId\n    if (useHeader) {\n      requestId = request.headers[headerName.toLowerCase()]\n    }\n    if (useFastifyRequestId) {\n      requestId = requestId || request.id\n    }\n    requestId = requestId || requestIdFactory(request)\n\n    if (echoHeader) {\n      reply.header(headerName, requestId)\n    }\n\n    als.run(requestId, () => {\n      wrapHttpEmitters(request.raw, reply.raw || reply.res)\n      done()\n    })\n  })\n  next()\n}\n\nfastifyPlugin[Symbol.for('skip-override')] = true\nfastifyPlugin[Symbol.for('fastify.display-name')] = pluginName\n\n/**\n * Generates a request tracer middleware for Koa v2.\n *\n * @param {Object} options possible options\n * @param {boolean} options.useHeader respect request header flag\n *                                    (default: `false`)\n * @param {string} options.headerName request header name, used if `useHeader`/`echoHeader` is set to `true`\n *                                    (default: `X-Request-Id`)\n * @param {function} options.requestIdFactory function used to generate request ids\n *                                    (default: UUIDs v1)\n * @param {boolean} options.echoHeader injects `headerName` header into the response\n *                                    (default: `false`)\n */\nconst koaMiddleware = ({\n  useHeader = false,\n  headerName = 'X-Request-Id',\n  requestIdFactory = uuidv1,\n  echoHeader = false\n} = {}) => {\n  return (ctx, next) => {\n    let requestId\n    if (useHeader) {\n      requestId = ctx.request.headers[headerName.toLowerCase()]\n    }\n    requestId = requestId || requestIdFactory(ctx.request)\n\n    if (echoHeader) {\n      ctx.set(headerName, requestId)\n    }\n\n    return als.run(requestId, () => {\n      wrapHttpEmitters(ctx.req, ctx.res)\n      return next()\n    })\n  }\n}\n\n/**\n * Generates a request tracer middleware for Koa v1.\n *\n * @param {Object} options possible options\n * @param {boolean} options.useHeader respect request header flag\n *                                    (default: `false`)\n * @param {string} options.headerName request header name, used if `useHeader`/`echoHeader` is set to `true`\n *                                    (default: `X-Request-Id`)\n * @param {function} options.requestIdFactory function used to generate request ids\n *                                    (default: UUIDs v1)\n * @param {boolean} options.echoHeader injects `headerName` header into the response\n *                                    (default: `false`)\n */\nconst koaV1Middleware = ({\n  useHeader = false,\n  headerName = 'X-Request-Id',\n  requestIdFactory = uuidv1,\n  echoHeader = false\n} = {}) => {\n  return function * (next) {\n    let requestId\n    if (useHeader) {\n      requestId = this.request.headers[headerName.toLowerCase()]\n    }\n    requestId = requestId || requestIdFactory(this.request)\n\n    if (echoHeader) {\n      this.response.set(headerName, requestId)\n    }\n\n    als.enterWith(requestId)\n    try {\n      wrapHttpEmitters(this.req, this.res)\n      yield next\n    } finally {\n      als.enterWith(undefined)\n    }\n  }\n}\n\n/**\n * Request tracer plugin for Hapi.\n *\n * @type {{once: boolean, name: string, register: hapiPlugin.register}}\n */\nconst hapiPlugin = ({\n  name: pluginName,\n  once: true,\n  register: async (server, options) => {\n    const {\n      useHeader = false,\n      headerName = 'X-Request-Id',\n      requestIdFactory = uuidv1,\n      echoHeader = false\n    } = options\n\n    server.ext('onRequest', (request, h) => {\n      let requestId\n      if (useHeader) {\n        requestId = request.headers[headerName.toLowerCase()]\n      }\n      requestId = requestId || requestIdFactory(request)\n\n      als.enterWith(requestId)\n      wrapHttpEmitters(request.raw.req, request.raw.res)\n\n      return h.continue\n    })\n\n    if (echoHeader) {\n      server.ext('onPreResponse', async (request, h) => {\n        if (request.response.output) { // Response is a Boom error\n          request.response.output.headers[headerName] = id()\n        } else {\n          request.response.header(headerName, id())\n        }\n        return h.continue\n      })\n    }\n\n    server.events.on('response', () => {\n      als.enterWith(undefined)\n    })\n  }\n})\n\n/**\n * Runs the given function in scope of the id.\n *\n * @param {Function} fn function to run\n * @param {*} id optional id to be available in the function\n */\nconst runWithId = (fn, id) => {\n  id = id || uuidv1()\n  return als.run(id, fn)\n}\n\n/**\n * Returns request tracer id or `undefined` in case if the call\n * is made outside of the CLS context.\n */\nconst id = () => als.getStore()\n\nmodule.exports = {\n  expressMiddleware: expressMiddleware(expressSetResHeaderFn),\n  fastifyPlugin,\n  fastifyMiddleware: expressMiddleware(fastifySetResHeaderFn),\n  koaMiddleware,\n  koaV1Middleware,\n  hapiPlugin,\n  runWithId,\n  id\n}\n", "'use strict'\n\nconst {\n  expressMiddleware,\n  fastifyPlugin,\n  fastifyMiddleware,\n  koaMiddleware,\n  koaV1Middleware,\n  hapiPlugin,\n  runWithId,\n  id\n} = require('./src/rtracer')\n\nmodule.exports = {\n  expressMiddleware,\n  fastifyPlugin,\n  fastifyMiddleware,\n  koaMiddleware,\n  koaV1Middleware,\n  hapiPlugin,\n  runWithId,\n  id\n}\n", "/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n  /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n  var undefined;\n\n  /** Used as the semantic version number. */\n  var VERSION = '4.17.21';\n\n  /** Used as the size to enable large array optimizations. */\n  var LARGE_ARRAY_SIZE = 200;\n\n  /** Error message constants. */\n  var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n      FUNC_ERROR_TEXT = 'Expected a function',\n      INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n  /** Used to stand-in for `undefined` hash values. */\n  var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n  /** Used as the maximum memoize cache size. */\n  var MAX_MEMOIZE_SIZE = 500;\n\n  /** Used as the internal argument placeholder. */\n  var PLACEHOLDER = '__lodash_placeholder__';\n\n  /** Used to compose bitmasks for cloning. */\n  var CLONE_DEEP_FLAG = 1,\n      CLONE_FLAT_FLAG = 2,\n      CLONE_SYMBOLS_FLAG = 4;\n\n  /** Used to compose bitmasks for value comparisons. */\n  var COMPARE_PARTIAL_FLAG = 1,\n      COMPARE_UNORDERED_FLAG = 2;\n\n  /** Used to compose bitmasks for function metadata. */\n  var WRAP_BIND_FLAG = 1,\n      WRAP_BIND_KEY_FLAG = 2,\n      WRAP_CURRY_BOUND_FLAG = 4,\n      WRAP_CURRY_FLAG = 8,\n      WRAP_CURRY_RIGHT_FLAG = 16,\n      WRAP_PARTIAL_FLAG = 32,\n      WRAP_PARTIAL_RIGHT_FLAG = 64,\n      WRAP_ARY_FLAG = 128,\n      WRAP_REARG_FLAG = 256,\n      WRAP_FLIP_FLAG = 512;\n\n  /** Used as default options for `_.truncate`. */\n  var DEFAULT_TRUNC_LENGTH = 30,\n      DEFAULT_TRUNC_OMISSION = '...';\n\n  /** Used to detect hot functions by number of calls within a span of milliseconds. */\n  var HOT_COUNT = 800,\n      HOT_SPAN = 16;\n\n  /** Used to indicate the type of lazy iteratees. */\n  var LAZY_FILTER_FLAG = 1,\n      LAZY_MAP_FLAG = 2,\n      LAZY_WHILE_FLAG = 3;\n\n  /** Used as references for various `Number` constants. */\n  var INFINITY = 1 / 0,\n      MAX_SAFE_INTEGER = 9007199254740991,\n      MAX_INTEGER = 1.7976931348623157e+308,\n      NAN = 0 / 0;\n\n  /** Used as references for the maximum length and index of an array. */\n  var MAX_ARRAY_LENGTH = 4294967295,\n      MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n      HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n  /** Used to associate wrap methods with their bit flags. */\n  var wrapFlags = [\n    ['ary', WRAP_ARY_FLAG],\n    ['bind', WRAP_BIND_FLAG],\n    ['bindKey', WRAP_BIND_KEY_FLAG],\n    ['curry', WRAP_CURRY_FLAG],\n    ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n    ['flip', WRAP_FLIP_FLAG],\n    ['partial', WRAP_PARTIAL_FLAG],\n    ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n    ['rearg', WRAP_REARG_FLAG]\n  ];\n\n  /** `Object#toString` result references. */\n  var argsTag = '[object Arguments]',\n      arrayTag = '[object Array]',\n      asyncTag = '[object AsyncFunction]',\n      boolTag = '[object Boolean]',\n      dateTag = '[object Date]',\n      domExcTag = '[object DOMException]',\n      errorTag = '[object Error]',\n      funcTag = '[object Function]',\n      genTag = '[object GeneratorFunction]',\n      mapTag = '[object Map]',\n      numberTag = '[object Number]',\n      nullTag = '[object Null]',\n      objectTag = '[object Object]',\n      promiseTag = '[object Promise]',\n      proxyTag = '[object Proxy]',\n      regexpTag = '[object RegExp]',\n      setTag = '[object Set]',\n      stringTag = '[object String]',\n      symbolTag = '[object Symbol]',\n      undefinedTag = '[object Undefined]',\n      weakMapTag = '[object WeakMap]',\n      weakSetTag = '[object WeakSet]';\n\n  var arrayBufferTag = '[object ArrayBuffer]',\n      dataViewTag = '[object DataView]',\n      float32Tag = '[object Float32Array]',\n      float64Tag = '[object Float64Array]',\n      int8Tag = '[object Int8Array]',\n      int16Tag = '[object Int16Array]',\n      int32Tag = '[object Int32Array]',\n      uint8Tag = '[object Uint8Array]',\n      uint8ClampedTag = '[object Uint8ClampedArray]',\n      uint16Tag = '[object Uint16Array]',\n      uint32Tag = '[object Uint32Array]';\n\n  /** Used to match empty string literals in compiled template source. */\n  var reEmptyStringLeading = /\\b__p \\+= '';/g,\n      reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n      reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n  /** Used to match HTML entities and HTML characters. */\n  var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n      reUnescapedHtml = /[&<>\"']/g,\n      reHasEscapedHtml = RegExp(reEscapedHtml.source),\n      reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n  /** Used to match template delimiters. */\n  var reEscape = /<%-([\\s\\S]+?)%>/g,\n      reEvaluate = /<%([\\s\\S]+?)%>/g,\n      reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n  /** Used to match property names within property paths. */\n  var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n      reIsPlainProp = /^\\w*$/,\n      rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n  /**\n   * Used to match `RegExp`\n   * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n   */\n  var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n      reHasRegExpChar = RegExp(reRegExpChar.source);\n\n  /** Used to match leading whitespace. */\n  var reTrimStart = /^\\s+/;\n\n  /** Used to match a single whitespace character. */\n  var reWhitespace = /\\s/;\n\n  /** Used to match wrap detail comments. */\n  var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n      reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n      reSplitDetails = /,? & /;\n\n  /** Used to match words composed of alphanumeric characters. */\n  var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n  /**\n   * Used to validate the `validate` option in `_.template` variable.\n   *\n   * Forbids characters which could potentially change the meaning of the function argument definition:\n   * - \"(),\" (modification of function parameters)\n   * - \"=\" (default value)\n   * - \"[]{}\" (destructuring of function parameters)\n   * - \"/\" (beginning of a comment)\n   * - whitespace\n   */\n  var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n  /** Used to match backslashes in property paths. */\n  var reEscapeChar = /\\\\(\\\\)?/g;\n\n  /**\n   * Used to match\n   * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n   */\n  var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n  /** Used to match `RegExp` flags from their coerced string values. */\n  var reFlags = /\\w*$/;\n\n  /** Used to detect bad signed hexadecimal string values. */\n  var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n  /** Used to detect binary string values. */\n  var reIsBinary = /^0b[01]+$/i;\n\n  /** Used to detect host constructors (Safari). */\n  var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n  /** Used to detect octal string values. */\n  var reIsOctal = /^0o[0-7]+$/i;\n\n  /** Used to detect unsigned integer values. */\n  var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n  /** Used to match Latin Unicode letters (excluding mathematical operators). */\n  var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n  /** Used to ensure capturing order of template delimiters. */\n  var reNoMatch = /($^)/;\n\n  /** Used to match unescaped characters in compiled string literals. */\n  var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n  /** Used to compose unicode character classes. */\n  var rsAstralRange = '\\\\ud800-\\\\udfff',\n      rsComboMarksRange = '\\\\u0300-\\\\u036f',\n      reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n      rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n      rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n      rsDingbatRange = '\\\\u2700-\\\\u27bf',\n      rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n      rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n      rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n      rsPunctuationRange = '\\\\u2000-\\\\u206f',\n      rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n      rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n      rsVarRange = '\\\\ufe0e\\\\ufe0f',\n      rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n  /** Used to compose unicode capture groups. */\n  var rsApos = \"['\\u2019]\",\n      rsAstral = '[' + rsAstralRange + ']',\n      rsBreak = '[' + rsBreakRange + ']',\n      rsCombo = '[' + rsComboRange + ']',\n      rsDigits = '\\\\d+',\n      rsDingbat = '[' + rsDingbatRange + ']',\n      rsLower = '[' + rsLowerRange + ']',\n      rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n      rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n      rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n      rsNonAstral = '[^' + rsAstralRange + ']',\n      rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n      rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n      rsUpper = '[' + rsUpperRange + ']',\n      rsZWJ = '\\\\u200d';\n\n  /** Used to compose unicode regexes. */\n  var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n      rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n      rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n      rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n      reOptMod = rsModifier + '?',\n      rsOptVar = '[' + rsVarRange + ']?',\n      rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n      rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n      rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n      rsSeq = rsOptVar + reOptMod + rsOptJoin,\n      rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n      rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n  /** Used to match apostrophes. */\n  var reApos = RegExp(rsApos, 'g');\n\n  /**\n   * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n   * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n   */\n  var reComboMark = RegExp(rsCombo, 'g');\n\n  /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n  var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n  /** Used to match complex or compound words. */\n  var reUnicodeWord = RegExp([\n    rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n    rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n    rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n    rsUpper + '+' + rsOptContrUpper,\n    rsOrdUpper,\n    rsOrdLower,\n    rsDigits,\n    rsEmoji\n  ].join('|'), 'g');\n\n  /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n  var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');\n\n  /** Used to detect strings that need a more robust regexp to match words. */\n  var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n  /** Used to assign default `context` object properties. */\n  var contextProps = [\n    'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n    'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n    'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n    'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n    '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n  ];\n\n  /** Used to make template sourceURLs easier to identify. */\n  var templateCounter = -1;\n\n  /** Used to identify `toStringTag` values of typed arrays. */\n  var typedArrayTags = {};\n  typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n  typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n  typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n  typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n  typedArrayTags[uint32Tag] = true;\n  typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n  typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n  typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n  typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n  typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n  typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n  typedArrayTags[setTag] = typedArrayTags[stringTag] =\n  typedArrayTags[weakMapTag] = false;\n\n  /** Used to identify `toStringTag` values supported by `_.clone`. */\n  var cloneableTags = {};\n  cloneableTags[argsTag] = cloneableTags[arrayTag] =\n  cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n  cloneableTags[boolTag] = cloneableTags[dateTag] =\n  cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n  cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n  cloneableTags[int32Tag] = cloneableTags[mapTag] =\n  cloneableTags[numberTag] = cloneableTags[objectTag] =\n  cloneableTags[regexpTag] = cloneableTags[setTag] =\n  cloneableTags[stringTag] = cloneableTags[symbolTag] =\n  cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n  cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n  cloneableTags[errorTag] = cloneableTags[funcTag] =\n  cloneableTags[weakMapTag] = false;\n\n  /** Used to map Latin Unicode letters to basic Latin letters. */\n  var deburredLetters = {\n    // Latin-1 Supplement block.\n    '\\xc0': 'A',  '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n    '\\xe0': 'a',  '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n    '\\xc7': 'C',  '\\xe7': 'c',\n    '\\xd0': 'D',  '\\xf0': 'd',\n    '\\xc8': 'E',  '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n    '\\xe8': 'e',  '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n    '\\xcc': 'I',  '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n    '\\xec': 'i',  '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n    '\\xd1': 'N',  '\\xf1': 'n',\n    '\\xd2': 'O',  '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n    '\\xf2': 'o',  '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n    '\\xd9': 'U',  '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n    '\\xf9': 'u',  '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n    '\\xdd': 'Y',  '\\xfd': 'y', '\\xff': 'y',\n    '\\xc6': 'Ae', '\\xe6': 'ae',\n    '\\xde': 'Th', '\\xfe': 'th',\n    '\\xdf': 'ss',\n    // Latin Extended-A block.\n    '\\u0100': 'A',  '\\u0102': 'A', '\\u0104': 'A',\n    '\\u0101': 'a',  '\\u0103': 'a', '\\u0105': 'a',\n    '\\u0106': 'C',  '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n    '\\u0107': 'c',  '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n    '\\u010e': 'D',  '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n    '\\u0112': 'E',  '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n    '\\u0113': 'e',  '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n    '\\u011c': 'G',  '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n    '\\u011d': 'g',  '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n    '\\u0124': 'H',  '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n    '\\u0128': 'I',  '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n    '\\u0129': 'i',  '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n    '\\u0134': 'J',  '\\u0135': 'j',\n    '\\u0136': 'K',  '\\u0137': 'k', '\\u0138': 'k',\n    '\\u0139': 'L',  '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n    '\\u013a': 'l',  '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n    '\\u0143': 'N',  '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n    '\\u0144': 'n',  '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n    '\\u014c': 'O',  '\\u014e': 'O', '\\u0150': 'O',\n    '\\u014d': 'o',  '\\u014f': 'o', '\\u0151': 'o',\n    '\\u0154': 'R',  '\\u0156': 'R', '\\u0158': 'R',\n    '\\u0155': 'r',  '\\u0157': 'r', '\\u0159': 'r',\n    '\\u015a': 'S',  '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n    '\\u015b': 's',  '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n    '\\u0162': 'T',  '\\u0164': 'T', '\\u0166': 'T',\n    '\\u0163': 't',  '\\u0165': 't', '\\u0167': 't',\n    '\\u0168': 'U',  '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n    '\\u0169': 'u',  '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n    '\\u0174': 'W',  '\\u0175': 'w',\n    '\\u0176': 'Y',  '\\u0177': 'y', '\\u0178': 'Y',\n    '\\u0179': 'Z',  '\\u017b': 'Z', '\\u017d': 'Z',\n    '\\u017a': 'z',  '\\u017c': 'z', '\\u017e': 'z',\n    '\\u0132': 'IJ', '\\u0133': 'ij',\n    '\\u0152': 'Oe', '\\u0153': 'oe',\n    '\\u0149': \"'n\", '\\u017f': 's'\n  };\n\n  /** Used to map characters to HTML entities. */\n  var htmlEscapes = {\n    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;',\n    '\"': '&quot;',\n    \"'\": '&#39;'\n  };\n\n  /** Used to map HTML entities to characters. */\n  var htmlUnescapes = {\n    '&amp;': '&',\n    '&lt;': '<',\n    '&gt;': '>',\n    '&quot;': '\"',\n    '&#39;': \"'\"\n  };\n\n  /** Used to escape characters for inclusion in compiled string literals. */\n  var stringEscapes = {\n    '\\\\': '\\\\',\n    \"'\": \"'\",\n    '\\n': 'n',\n    '\\r': 'r',\n    '\\u2028': 'u2028',\n    '\\u2029': 'u2029'\n  };\n\n  /** Built-in method references without a dependency on `root`. */\n  var freeParseFloat = parseFloat,\n      freeParseInt = parseInt;\n\n  /** Detect free variable `global` from Node.js. */\n  var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n  /** Detect free variable `self`. */\n  var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n  /** Used as a reference to the global object. */\n  var root = freeGlobal || freeSelf || Function('return this')();\n\n  /** Detect free variable `exports`. */\n  var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n  /** Detect free variable `module`. */\n  var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n  /** Detect the popular CommonJS extension `module.exports`. */\n  var moduleExports = freeModule && freeModule.exports === freeExports;\n\n  /** Detect free variable `process` from Node.js. */\n  var freeProcess = moduleExports && freeGlobal.process;\n\n  /** Used to access faster Node.js helpers. */\n  var nodeUtil = (function() {\n    try {\n      // Use `util.types` for Node.js 10+.\n      var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n      if (types) {\n        return types;\n      }\n\n      // Legacy `process.binding('util')` for Node.js < 10.\n      return freeProcess && freeProcess.binding && freeProcess.binding('util');\n    } catch (e) {}\n  }());\n\n  /* Node.js helper references. */\n  var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n      nodeIsDate = nodeUtil && nodeUtil.isDate,\n      nodeIsMap = nodeUtil && nodeUtil.isMap,\n      nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n      nodeIsSet = nodeUtil && nodeUtil.isSet,\n      nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n  /*--------------------------------------------------------------------------*/\n\n  /**\n   * A faster alternative to `Function#apply`, this function invokes `func`\n   * with the `this` binding of `thisArg` and the arguments of `args`.\n   *\n   * @private\n   * @param {Function} func The function to invoke.\n   * @param {*} thisArg The `this` binding of `func`.\n   * @param {Array} args The arguments to invoke `func` with.\n   * @returns {*} Returns the result of `func`.\n   */\n  function apply(func, thisArg, args) {\n    switch (args.length) {\n      case 0: return func.call(thisArg);\n      case 1: return func.call(thisArg, args[0]);\n      case 2: return func.call(thisArg, args[0], args[1]);\n      case 3: return func.call(thisArg, args[0], args[1], args[2]);\n    }\n    return func.apply(thisArg, args);\n  }\n\n  /**\n   * A specialized version of `baseAggregator` for arrays.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} setter The function to set `accumulator` values.\n   * @param {Function} iteratee The iteratee to transform keys.\n   * @param {Object} accumulator The initial aggregated object.\n   * @returns {Function} Returns `accumulator`.\n   */\n  function arrayAggregator(array, setter, iteratee, accumulator) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      var value = array[index];\n      setter(accumulator, value, iteratee(value), array);\n    }\n    return accumulator;\n  }\n\n  /**\n   * A specialized version of `_.forEach` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns `array`.\n   */\n  function arrayEach(array, iteratee) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (iteratee(array[index], index, array) === false) {\n        break;\n      }\n    }\n    return array;\n  }\n\n  /**\n   * A specialized version of `_.forEachRight` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns `array`.\n   */\n  function arrayEachRight(array, iteratee) {\n    var length = array == null ? 0 : array.length;\n\n    while (length--) {\n      if (iteratee(array[length], length, array) === false) {\n        break;\n      }\n    }\n    return array;\n  }\n\n  /**\n   * A specialized version of `_.every` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} predicate The function invoked per iteration.\n   * @returns {boolean} Returns `true` if all elements pass the predicate check,\n   *  else `false`.\n   */\n  function arrayEvery(array, predicate) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (!predicate(array[index], index, array)) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  /**\n   * A specialized version of `_.filter` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} predicate The function invoked per iteration.\n   * @returns {Array} Returns the new filtered array.\n   */\n  function arrayFilter(array, predicate) {\n    var index = -1,\n        length = array == null ? 0 : array.length,\n        resIndex = 0,\n        result = [];\n\n    while (++index < length) {\n      var value = array[index];\n      if (predicate(value, index, array)) {\n        result[resIndex++] = value;\n      }\n    }\n    return result;\n  }\n\n  /**\n   * A specialized version of `_.includes` for arrays without support for\n   * specifying an index to search from.\n   *\n   * @private\n   * @param {Array} [array] The array to inspect.\n   * @param {*} target The value to search for.\n   * @returns {boolean} Returns `true` if `target` is found, else `false`.\n   */\n  function arrayIncludes(array, value) {\n    var length = array == null ? 0 : array.length;\n    return !!length && baseIndexOf(array, value, 0) > -1;\n  }\n\n  /**\n   * This function is like `arrayIncludes` except that it accepts a comparator.\n   *\n   * @private\n   * @param {Array} [array] The array to inspect.\n   * @param {*} target The value to search for.\n   * @param {Function} comparator The comparator invoked per element.\n   * @returns {boolean} Returns `true` if `target` is found, else `false`.\n   */\n  function arrayIncludesWith(array, value, comparator) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (comparator(value, array[index])) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * A specialized version of `_.map` for arrays without support for iteratee\n   * shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns the new mapped array.\n   */\n  function arrayMap(array, iteratee) {\n    var index = -1,\n        length = array == null ? 0 : array.length,\n        result = Array(length);\n\n    while (++index < length) {\n      result[index] = iteratee(array[index], index, array);\n    }\n    return result;\n  }\n\n  /**\n   * Appends the elements of `values` to `array`.\n   *\n   * @private\n   * @param {Array} array The array to modify.\n   * @param {Array} values The values to append.\n   * @returns {Array} Returns `array`.\n   */\n  function arrayPush(array, values) {\n    var index = -1,\n        length = values.length,\n        offset = array.length;\n\n    while (++index < length) {\n      array[offset + index] = values[index];\n    }\n    return array;\n  }\n\n  /**\n   * A specialized version of `_.reduce` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @param {*} [accumulator] The initial value.\n   * @param {boolean} [initAccum] Specify using the first element of `array` as\n   *  the initial value.\n   * @returns {*} Returns the accumulated value.\n   */\n  function arrayReduce(array, iteratee, accumulator, initAccum) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    if (initAccum && length) {\n      accumulator = array[++index];\n    }\n    while (++index < length) {\n      accumulator = iteratee(accumulator, array[index], index, array);\n    }\n    return accumulator;\n  }\n\n  /**\n   * A specialized version of `_.reduceRight` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @param {*} [accumulator] The initial value.\n   * @param {boolean} [initAccum] Specify using the last element of `array` as\n   *  the initial value.\n   * @returns {*} Returns the accumulated value.\n   */\n  function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n    var length = array == null ? 0 : array.length;\n    if (initAccum && length) {\n      accumulator = array[--length];\n    }\n    while (length--) {\n      accumulator = iteratee(accumulator, array[length], length, array);\n    }\n    return accumulator;\n  }\n\n  /**\n   * A specialized version of `_.some` for arrays without support for iteratee\n   * shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} predicate The function invoked per iteration.\n   * @returns {boolean} Returns `true` if any element passes the predicate check,\n   *  else `false`.\n   */\n  function arraySome(array, predicate) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (predicate(array[index], index, array)) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * Gets the size of an ASCII `string`.\n   *\n   * @private\n   * @param {string} string The string inspect.\n   * @returns {number} Returns the string size.\n   */\n  var asciiSize = baseProperty('length');\n\n  /**\n   * Converts an ASCII `string` to an array.\n   *\n   * @private\n   * @param {string} string The string to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function asciiToArray(string) {\n    return string.split('');\n  }\n\n  /**\n   * Splits an ASCII `string` into an array of its words.\n   *\n   * @private\n   * @param {string} The string to inspect.\n   * @returns {Array} Returns the words of `string`.\n   */\n  function asciiWords(string) {\n    return string.match(reAsciiWord) || [];\n  }\n\n  /**\n   * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n   * without support for iteratee shorthands, which iterates over `collection`\n   * using `eachFunc`.\n   *\n   * @private\n   * @param {Array|Object} collection The collection to inspect.\n   * @param {Function} predicate The function invoked per iteration.\n   * @param {Function} eachFunc The function to iterate over `collection`.\n   * @returns {*} Returns the found element or its key, else `undefined`.\n   */\n  function baseFindKey(collection, predicate, eachFunc) {\n    var result;\n    eachFunc(collection, function(value, key, collection) {\n      if (predicate(value, key, collection)) {\n        result = key;\n        return false;\n      }\n    });\n    return result;\n  }\n\n  /**\n   * The base implementation of `_.findIndex` and `_.findLastIndex` without\n   * support for iteratee shorthands.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {Function} predicate The function invoked per iteration.\n   * @param {number} fromIndex The index to search from.\n   * @param {boolean} [fromRight] Specify iterating from right to left.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function baseFindIndex(array, predicate, fromIndex, fromRight) {\n    var length = array.length,\n        index = fromIndex + (fromRight ? 1 : -1);\n\n    while ((fromRight ? index-- : ++index < length)) {\n      if (predicate(array[index], index, array)) {\n        return index;\n      }\n    }\n    return -1;\n  }\n\n  /**\n   * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function baseIndexOf(array, value, fromIndex) {\n    return value === value\n      ? strictIndexOf(array, value, fromIndex)\n      : baseFindIndex(array, baseIsNaN, fromIndex);\n  }\n\n  /**\n   * This function is like `baseIndexOf` except that it accepts a comparator.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @param {Function} comparator The comparator invoked per element.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function baseIndexOfWith(array, value, fromIndex, comparator) {\n    var index = fromIndex - 1,\n        length = array.length;\n\n    while (++index < length) {\n      if (comparator(array[index], value)) {\n        return index;\n      }\n    }\n    return -1;\n  }\n\n  /**\n   * The base implementation of `_.isNaN` without support for number objects.\n   *\n   * @private\n   * @param {*} value The value to check.\n   * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n   */\n  function baseIsNaN(value) {\n    return value !== value;\n  }\n\n  /**\n   * The base implementation of `_.mean` and `_.meanBy` without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} array The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {number} Returns the mean.\n   */\n  function baseMean(array, iteratee) {\n    var length = array == null ? 0 : array.length;\n    return length ? (baseSum(array, iteratee) / length) : NAN;\n  }\n\n  /**\n   * The base implementation of `_.property` without support for deep paths.\n   *\n   * @private\n   * @param {string} key The key of the property to get.\n   * @returns {Function} Returns the new accessor function.\n   */\n  function baseProperty(key) {\n    return function(object) {\n      return object == null ? undefined : object[key];\n    };\n  }\n\n  /**\n   * The base implementation of `_.propertyOf` without support for deep paths.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @returns {Function} Returns the new accessor function.\n   */\n  function basePropertyOf(object) {\n    return function(key) {\n      return object == null ? undefined : object[key];\n    };\n  }\n\n  /**\n   * The base implementation of `_.reduce` and `_.reduceRight`, without support\n   * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n   *\n   * @private\n   * @param {Array|Object} collection The collection to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @param {*} accumulator The initial value.\n   * @param {boolean} initAccum Specify using the first or last element of\n   *  `collection` as the initial value.\n   * @param {Function} eachFunc The function to iterate over `collection`.\n   * @returns {*} Returns the accumulated value.\n   */\n  function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n    eachFunc(collection, function(value, index, collection) {\n      accumulator = initAccum\n        ? (initAccum = false, value)\n        : iteratee(accumulator, value, index, collection);\n    });\n    return accumulator;\n  }\n\n  /**\n   * The base implementation of `_.sortBy` which uses `comparer` to define the\n   * sort order of `array` and replaces criteria objects with their corresponding\n   * values.\n   *\n   * @private\n   * @param {Array} array The array to sort.\n   * @param {Function} comparer The function to define sort order.\n   * @returns {Array} Returns `array`.\n   */\n  function baseSortBy(array, comparer) {\n    var length = array.length;\n\n    array.sort(comparer);\n    while (length--) {\n      array[length] = array[length].value;\n    }\n    return array;\n  }\n\n  /**\n   * The base implementation of `_.sum` and `_.sumBy` without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} array The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {number} Returns the sum.\n   */\n  function baseSum(array, iteratee) {\n    var result,\n        index = -1,\n        length = array.length;\n\n    while (++index < length) {\n      var current = iteratee(array[index]);\n      if (current !== undefined) {\n        result = result === undefined ? current : (result + current);\n      }\n    }\n    return result;\n  }\n\n  /**\n   * The base implementation of `_.times` without support for iteratee shorthands\n   * or max array length checks.\n   *\n   * @private\n   * @param {number} n The number of times to invoke `iteratee`.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns the array of results.\n   */\n  function baseTimes(n, iteratee) {\n    var index = -1,\n        result = Array(n);\n\n    while (++index < n) {\n      result[index] = iteratee(index);\n    }\n    return result;\n  }\n\n  /**\n   * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n   * of key-value pairs for `object` corresponding to the property names of `props`.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @param {Array} props The property names to get values for.\n   * @returns {Object} Returns the key-value pairs.\n   */\n  function baseToPairs(object, props) {\n    return arrayMap(props, function(key) {\n      return [key, object[key]];\n    });\n  }\n\n  /**\n   * The base implementation of `_.trim`.\n   *\n   * @private\n   * @param {string} string The string to trim.\n   * @returns {string} Returns the trimmed string.\n   */\n  function baseTrim(string) {\n    return string\n      ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n      : string;\n  }\n\n  /**\n   * The base implementation of `_.unary` without support for storing metadata.\n   *\n   * @private\n   * @param {Function} func The function to cap arguments for.\n   * @returns {Function} Returns the new capped function.\n   */\n  function baseUnary(func) {\n    return function(value) {\n      return func(value);\n    };\n  }\n\n  /**\n   * The base implementation of `_.values` and `_.valuesIn` which creates an\n   * array of `object` property values corresponding to the property names\n   * of `props`.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @param {Array} props The property names to get values for.\n   * @returns {Object} Returns the array of property values.\n   */\n  function baseValues(object, props) {\n    return arrayMap(props, function(key) {\n      return object[key];\n    });\n  }\n\n  /**\n   * Checks if a `cache` value for `key` exists.\n   *\n   * @private\n   * @param {Object} cache The cache to query.\n   * @param {string} key The key of the entry to check.\n   * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n   */\n  function cacheHas(cache, key) {\n    return cache.has(key);\n  }\n\n  /**\n   * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n   * that is not found in the character symbols.\n   *\n   * @private\n   * @param {Array} strSymbols The string symbols to inspect.\n   * @param {Array} chrSymbols The character symbols to find.\n   * @returns {number} Returns the index of the first unmatched string symbol.\n   */\n  function charsStartIndex(strSymbols, chrSymbols) {\n    var index = -1,\n        length = strSymbols.length;\n\n    while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n    return index;\n  }\n\n  /**\n   * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n   * that is not found in the character symbols.\n   *\n   * @private\n   * @param {Array} strSymbols The string symbols to inspect.\n   * @param {Array} chrSymbols The character symbols to find.\n   * @returns {number} Returns the index of the last unmatched string symbol.\n   */\n  function charsEndIndex(strSymbols, chrSymbols) {\n    var index = strSymbols.length;\n\n    while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n    return index;\n  }\n\n  /**\n   * Gets the number of `placeholder` occurrences in `array`.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} placeholder The placeholder to search for.\n   * @returns {number} Returns the placeholder count.\n   */\n  function countHolders(array, placeholder) {\n    var length = array.length,\n        result = 0;\n\n    while (length--) {\n      if (array[length] === placeholder) {\n        ++result;\n      }\n    }\n    return result;\n  }\n\n  /**\n   * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n   * letters to basic Latin letters.\n   *\n   * @private\n   * @param {string} letter The matched letter to deburr.\n   * @returns {string} Returns the deburred letter.\n   */\n  var deburrLetter = basePropertyOf(deburredLetters);\n\n  /**\n   * Used by `_.escape` to convert characters to HTML entities.\n   *\n   * @private\n   * @param {string} chr The matched character to escape.\n   * @returns {string} Returns the escaped character.\n   */\n  var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n  /**\n   * Used by `_.template` to escape characters for inclusion in compiled string literals.\n   *\n   * @private\n   * @param {string} chr The matched character to escape.\n   * @returns {string} Returns the escaped character.\n   */\n  function escapeStringChar(chr) {\n    return '\\\\' + stringEscapes[chr];\n  }\n\n  /**\n   * Gets the value at `key` of `object`.\n   *\n   * @private\n   * @param {Object} [object] The object to query.\n   * @param {string} key The key of the property to get.\n   * @returns {*} Returns the property value.\n   */\n  function getValue(object, key) {\n    return object == null ? undefined : object[key];\n  }\n\n  /**\n   * Checks if `string` contains Unicode symbols.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n   */\n  function hasUnicode(string) {\n    return reHasUnicode.test(string);\n  }\n\n  /**\n   * Checks if `string` contains a word composed of Unicode symbols.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {boolean} Returns `true` if a word is found, else `false`.\n   */\n  function hasUnicodeWord(string) {\n    return reHasUnicodeWord.test(string);\n  }\n\n  /**\n   * Converts `iterator` to an array.\n   *\n   * @private\n   * @param {Object} iterator The iterator to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function iteratorToArray(iterator) {\n    var data,\n        result = [];\n\n    while (!(data = iterator.next()).done) {\n      result.push(data.value);\n    }\n    return result;\n  }\n\n  /**\n   * Converts `map` to its key-value pairs.\n   *\n   * @private\n   * @param {Object} map The map to convert.\n   * @returns {Array} Returns the key-value pairs.\n   */\n  function mapToArray(map) {\n    var index = -1,\n        result = Array(map.size);\n\n    map.forEach(function(value, key) {\n      result[++index] = [key, value];\n    });\n    return result;\n  }\n\n  /**\n   * Creates a unary function that invokes `func` with its argument transformed.\n   *\n   * @private\n   * @param {Function} func The function to wrap.\n   * @param {Function} transform The argument transform.\n   * @returns {Function} Returns the new function.\n   */\n  function overArg(func, transform) {\n    return function(arg) {\n      return func(transform(arg));\n    };\n  }\n\n  /**\n   * Replaces all `placeholder` elements in `array` with an internal placeholder\n   * and returns an array of their indexes.\n   *\n   * @private\n   * @param {Array} array The array to modify.\n   * @param {*} placeholder The placeholder to replace.\n   * @returns {Array} Returns the new array of placeholder indexes.\n   */\n  function replaceHolders(array, placeholder) {\n    var index = -1,\n        length = array.length,\n        resIndex = 0,\n        result = [];\n\n    while (++index < length) {\n      var value = array[index];\n      if (value === placeholder || value === PLACEHOLDER) {\n        array[index] = PLACEHOLDER;\n        result[resIndex++] = index;\n      }\n    }\n    return result;\n  }\n\n  /**\n   * Converts `set` to an array of its values.\n   *\n   * @private\n   * @param {Object} set The set to convert.\n   * @returns {Array} Returns the values.\n   */\n  function setToArray(set) {\n    var index = -1,\n        result = Array(set.size);\n\n    set.forEach(function(value) {\n      result[++index] = value;\n    });\n    return result;\n  }\n\n  /**\n   * Converts `set` to its value-value pairs.\n   *\n   * @private\n   * @param {Object} set The set to convert.\n   * @returns {Array} Returns the value-value pairs.\n   */\n  function setToPairs(set) {\n    var index = -1,\n        result = Array(set.size);\n\n    set.forEach(function(value) {\n      result[++index] = [value, value];\n    });\n    return result;\n  }\n\n  /**\n   * A specialized version of `_.indexOf` which performs strict equality\n   * comparisons of values, i.e. `===`.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function strictIndexOf(array, value, fromIndex) {\n    var index = fromIndex - 1,\n        length = array.length;\n\n    while (++index < length) {\n      if (array[index] === value) {\n        return index;\n      }\n    }\n    return -1;\n  }\n\n  /**\n   * A specialized version of `_.lastIndexOf` which performs strict equality\n   * comparisons of values, i.e. `===`.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function strictLastIndexOf(array, value, fromIndex) {\n    var index = fromIndex + 1;\n    while (index--) {\n      if (array[index] === value) {\n        return index;\n      }\n    }\n    return index;\n  }\n\n  /**\n   * Gets the number of symbols in `string`.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {number} Returns the string size.\n   */\n  function stringSize(string) {\n    return hasUnicode(string)\n      ? unicodeSize(string)\n      : asciiSize(string);\n  }\n\n  /**\n   * Converts `string` to an array.\n   *\n   * @private\n   * @param {string} string The string to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function stringToArray(string) {\n    return hasUnicode(string)\n      ? unicodeToArray(string)\n      : asciiToArray(string);\n  }\n\n  /**\n   * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n   * character of `string`.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {number} Returns the index of the last non-whitespace character.\n   */\n  function trimmedEndIndex(string) {\n    var index = string.length;\n\n    while (index-- && reWhitespace.test(string.charAt(index))) {}\n    return index;\n  }\n\n  /**\n   * Used by `_.unescape` to convert HTML entities to characters.\n   *\n   * @private\n   * @param {string} chr The matched character to unescape.\n   * @returns {string} Returns the unescaped character.\n   */\n  var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n  /**\n   * Gets the size of a Unicode `string`.\n   *\n   * @private\n   * @param {string} string The string inspect.\n   * @returns {number} Returns the string size.\n   */\n  function unicodeSize(string) {\n    var result = reUnicode.lastIndex = 0;\n    while (reUnicode.test(string)) {\n      ++result;\n    }\n    return result;\n  }\n\n  /**\n   * Converts a Unicode `string` to an array.\n   *\n   * @private\n   * @param {string} string The string to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function unicodeToArray(string) {\n    return string.match(reUnicode) || [];\n  }\n\n  /**\n   * Splits a Unicode `string` into an array of its words.\n   *\n   * @private\n   * @param {string} The string to inspect.\n   * @returns {Array} Returns the words of `string`.\n   */\n  function unicodeWords(string) {\n    return string.match(reUnicodeWord) || [];\n  }\n\n  /*--------------------------------------------------------------------------*/\n\n  /**\n   * Create a new pristine `lodash` function using the `context` object.\n   *\n   * @static\n   * @memberOf _\n   * @since 1.1.0\n   * @category Util\n   * @param {Object} [context=root] The context object.\n   * @returns {Function} Returns a new `lodash` function.\n   * @example\n   *\n   * _.mixin({ 'foo': _.constant('foo') });\n   *\n   * var lodash = _.runInContext();\n   * lodash.mixin({ 'bar': lodash.constant('bar') });\n   *\n   * _.isFunction(_.foo);\n   * // => true\n   * _.isFunction(_.bar);\n   * // => false\n   *\n   * lodash.isFunction(lodash.foo);\n   * // => false\n   * lodash.isFunction(lodash.bar);\n   * // => true\n   *\n   * // Create a suped-up `defer` in Node.js.\n   * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n   */\n  var runInContext = (function runInContext(context) {\n    context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n    /** Built-in constructor references. */\n    var Array = context.Array,\n        Date = context.Date,\n        Error = context.Error,\n        Function = context.Function,\n        Math = context.Math,\n        Object = context.Object,\n        RegExp = context.RegExp,\n        String = context.String,\n        TypeError = context.TypeError;\n\n    /** Used for built-in method references. */\n    var arrayProto = Array.prototype,\n        funcProto = Function.prototype,\n        objectProto = Object.prototype;\n\n    /** Used to detect overreaching core-js shims. */\n    var coreJsData = context['__core-js_shared__'];\n\n    /** Used to resolve the decompiled source of functions. */\n    var funcToString = funcProto.toString;\n\n    /** Used to check objects for own properties. */\n    var hasOwnProperty = objectProto.hasOwnProperty;\n\n    /** Used to generate unique IDs. */\n    var idCounter = 0;\n\n    /** Used to detect methods masquerading as native. */\n    var maskSrcKey = (function() {\n      var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n      return uid ? ('Symbol(src)_1.' + uid) : '';\n    }());\n\n    /**\n     * Used to resolve the\n     * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n     * of values.\n     */\n    var nativeObjectToString = objectProto.toString;\n\n    /** Used to infer the `Object` constructor. */\n    var objectCtorString = funcToString.call(Object);\n\n    /** Used to restore the original `_` reference in `_.noConflict`. */\n    var oldDash = root._;\n\n    /** Used to detect if a method is native. */\n    var reIsNative = RegExp('^' +\n      funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n      .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n    );\n\n    /** Built-in value references. */\n    var Buffer = moduleExports ? context.Buffer : undefined,\n        Symbol = context.Symbol,\n        Uint8Array = context.Uint8Array,\n        allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n        getPrototype = overArg(Object.getPrototypeOf, Object),\n        objectCreate = Object.create,\n        propertyIsEnumerable = objectProto.propertyIsEnumerable,\n        splice = arrayProto.splice,\n        spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n        symIterator = Symbol ? Symbol.iterator : undefined,\n        symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n    var defineProperty = (function() {\n      try {\n        var func = getNative(Object, 'defineProperty');\n        func({}, '', {});\n        return func;\n      } catch (e) {}\n    }());\n\n    /** Mocked built-ins. */\n    var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n        ctxNow = Date && Date.now !== root.Date.now && Date.now,\n        ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n    /* Built-in method references for those with the same name as other `lodash` methods. */\n    var nativeCeil = Math.ceil,\n        nativeFloor = Math.floor,\n        nativeGetSymbols = Object.getOwnPropertySymbols,\n        nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n        nativeIsFinite = context.isFinite,\n        nativeJoin = arrayProto.join,\n        nativeKeys = overArg(Object.keys, Object),\n        nativeMax = Math.max,\n        nativeMin = Math.min,\n        nativeNow = Date.now,\n        nativeParseInt = context.parseInt,\n        nativeRandom = Math.random,\n        nativeReverse = arrayProto.reverse;\n\n    /* Built-in method references that are verified to be native. */\n    var DataView = getNative(context, 'DataView'),\n        Map = getNative(context, 'Map'),\n        Promise = getNative(context, 'Promise'),\n        Set = getNative(context, 'Set'),\n        WeakMap = getNative(context, 'WeakMap'),\n        nativeCreate = getNative(Object, 'create');\n\n    /** Used to store function metadata. */\n    var metaMap = WeakMap && new WeakMap;\n\n    /** Used to lookup unminified function names. */\n    var realNames = {};\n\n    /** Used to detect maps, sets, and weakmaps. */\n    var dataViewCtorString = toSource(DataView),\n        mapCtorString = toSource(Map),\n        promiseCtorString = toSource(Promise),\n        setCtorString = toSource(Set),\n        weakMapCtorString = toSource(WeakMap);\n\n    /** Used to convert symbols to primitives and strings. */\n    var symbolProto = Symbol ? Symbol.prototype : undefined,\n        symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n        symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a `lodash` object which wraps `value` to enable implicit method\n     * chain sequences. Methods that operate on and return arrays, collections,\n     * and functions can be chained together. Methods that retrieve a single value\n     * or may return a primitive value will automatically end the chain sequence\n     * and return the unwrapped value. Otherwise, the value must be unwrapped\n     * with `_#value`.\n     *\n     * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n     * enabled using `_.chain`.\n     *\n     * The execution of chained methods is lazy, that is, it's deferred until\n     * `_#value` is implicitly or explicitly called.\n     *\n     * Lazy evaluation allows several methods to support shortcut fusion.\n     * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n     * the creation of intermediate arrays and can greatly reduce the number of\n     * iteratee executions. Sections of a chain sequence qualify for shortcut\n     * fusion if the section is applied to an array and iteratees accept only\n     * one argument. The heuristic for whether a section qualifies for shortcut\n     * fusion is subject to change.\n     *\n     * Chaining is supported in custom builds as long as the `_#value` method is\n     * directly or indirectly included in the build.\n     *\n     * In addition to lodash methods, wrappers have `Array` and `String` methods.\n     *\n     * The wrapper `Array` methods are:\n     * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n     *\n     * The wrapper `String` methods are:\n     * `replace` and `split`\n     *\n     * The wrapper methods that support shortcut fusion are:\n     * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n     * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n     * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n     *\n     * The chainable wrapper methods are:\n     * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n     * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n     * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n     * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n     * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n     * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n     * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n     * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n     * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n     * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n     * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n     * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n     * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n     * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n     * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n     * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n     * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n     * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n     * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n     * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n     * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n     * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n     * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n     * `zipObject`, `zipObjectDeep`, and `zipWith`\n     *\n     * The wrapper methods that are **not** chainable by default are:\n     * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n     * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n     * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n     * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n     * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n     * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n     * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n     * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n     * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n     * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n     * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n     * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n     * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n     * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n     * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n     * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n     * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n     * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n     * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n     * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n     * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n     * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n     * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n     * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n     * `upperFirst`, `value`, and `words`\n     *\n     * @name _\n     * @constructor\n     * @category Seq\n     * @param {*} value The value to wrap in a `lodash` instance.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var wrapped = _([1, 2, 3]);\n     *\n     * // Returns an unwrapped value.\n     * wrapped.reduce(_.add);\n     * // => 6\n     *\n     * // Returns a wrapped value.\n     * var squares = wrapped.map(square);\n     *\n     * _.isArray(squares);\n     * // => false\n     *\n     * _.isArray(squares.value());\n     * // => true\n     */\n    function lodash(value) {\n      if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n        if (value instanceof LodashWrapper) {\n          return value;\n        }\n        if (hasOwnProperty.call(value, '__wrapped__')) {\n          return wrapperClone(value);\n        }\n      }\n      return new LodashWrapper(value);\n    }\n\n    /**\n     * The base implementation of `_.create` without support for assigning\n     * properties to the created object.\n     *\n     * @private\n     * @param {Object} proto The object to inherit from.\n     * @returns {Object} Returns the new object.\n     */\n    var baseCreate = (function() {\n      function object() {}\n      return function(proto) {\n        if (!isObject(proto)) {\n          return {};\n        }\n        if (objectCreate) {\n          return objectCreate(proto);\n        }\n        object.prototype = proto;\n        var result = new object;\n        object.prototype = undefined;\n        return result;\n      };\n    }());\n\n    /**\n     * The function whose prototype chain sequence wrappers inherit from.\n     *\n     * @private\n     */\n    function baseLodash() {\n      // No operation performed.\n    }\n\n    /**\n     * The base constructor for creating `lodash` wrapper objects.\n     *\n     * @private\n     * @param {*} value The value to wrap.\n     * @param {boolean} [chainAll] Enable explicit method chain sequences.\n     */\n    function LodashWrapper(value, chainAll) {\n      this.__wrapped__ = value;\n      this.__actions__ = [];\n      this.__chain__ = !!chainAll;\n      this.__index__ = 0;\n      this.__values__ = undefined;\n    }\n\n    /**\n     * By default, the template delimiters used by lodash are like those in\n     * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n     * following template settings to use alternative delimiters.\n     *\n     * @static\n     * @memberOf _\n     * @type {Object}\n     */\n    lodash.templateSettings = {\n\n      /**\n       * Used to detect `data` property values to be HTML-escaped.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'escape': reEscape,\n\n      /**\n       * Used to detect code to be evaluated.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'evaluate': reEvaluate,\n\n      /**\n       * Used to detect `data` property values to inject.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'interpolate': reInterpolate,\n\n      /**\n       * Used to reference the data object in the template text.\n       *\n       * @memberOf _.templateSettings\n       * @type {string}\n       */\n      'variable': '',\n\n      /**\n       * Used to import variables into the compiled template.\n       *\n       * @memberOf _.templateSettings\n       * @type {Object}\n       */\n      'imports': {\n\n        /**\n         * A reference to the `lodash` function.\n         *\n         * @memberOf _.templateSettings.imports\n         * @type {Function}\n         */\n        '_': lodash\n      }\n    };\n\n    // Ensure wrappers are instances of `baseLodash`.\n    lodash.prototype = baseLodash.prototype;\n    lodash.prototype.constructor = lodash;\n\n    LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n    LodashWrapper.prototype.constructor = LodashWrapper;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n     *\n     * @private\n     * @constructor\n     * @param {*} value The value to wrap.\n     */\n    function LazyWrapper(value) {\n      this.__wrapped__ = value;\n      this.__actions__ = [];\n      this.__dir__ = 1;\n      this.__filtered__ = false;\n      this.__iteratees__ = [];\n      this.__takeCount__ = MAX_ARRAY_LENGTH;\n      this.__views__ = [];\n    }\n\n    /**\n     * Creates a clone of the lazy wrapper object.\n     *\n     * @private\n     * @name clone\n     * @memberOf LazyWrapper\n     * @returns {Object} Returns the cloned `LazyWrapper` object.\n     */\n    function lazyClone() {\n      var result = new LazyWrapper(this.__wrapped__);\n      result.__actions__ = copyArray(this.__actions__);\n      result.__dir__ = this.__dir__;\n      result.__filtered__ = this.__filtered__;\n      result.__iteratees__ = copyArray(this.__iteratees__);\n      result.__takeCount__ = this.__takeCount__;\n      result.__views__ = copyArray(this.__views__);\n      return result;\n    }\n\n    /**\n     * Reverses the direction of lazy iteration.\n     *\n     * @private\n     * @name reverse\n     * @memberOf LazyWrapper\n     * @returns {Object} Returns the new reversed `LazyWrapper` object.\n     */\n    function lazyReverse() {\n      if (this.__filtered__) {\n        var result = new LazyWrapper(this);\n        result.__dir__ = -1;\n        result.__filtered__ = true;\n      } else {\n        result = this.clone();\n        result.__dir__ *= -1;\n      }\n      return result;\n    }\n\n    /**\n     * Extracts the unwrapped value from its lazy wrapper.\n     *\n     * @private\n     * @name value\n     * @memberOf LazyWrapper\n     * @returns {*} Returns the unwrapped value.\n     */\n    function lazyValue() {\n      var array = this.__wrapped__.value(),\n          dir = this.__dir__,\n          isArr = isArray(array),\n          isRight = dir < 0,\n          arrLength = isArr ? array.length : 0,\n          view = getView(0, arrLength, this.__views__),\n          start = view.start,\n          end = view.end,\n          length = end - start,\n          index = isRight ? end : (start - 1),\n          iteratees = this.__iteratees__,\n          iterLength = iteratees.length,\n          resIndex = 0,\n          takeCount = nativeMin(length, this.__takeCount__);\n\n      if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n        return baseWrapperValue(array, this.__actions__);\n      }\n      var result = [];\n\n      outer:\n      while (length-- && resIndex < takeCount) {\n        index += dir;\n\n        var iterIndex = -1,\n            value = array[index];\n\n        while (++iterIndex < iterLength) {\n          var data = iteratees[iterIndex],\n              iteratee = data.iteratee,\n              type = data.type,\n              computed = iteratee(value);\n\n          if (type == LAZY_MAP_FLAG) {\n            value = computed;\n          } else if (!computed) {\n            if (type == LAZY_FILTER_FLAG) {\n              continue outer;\n            } else {\n              break outer;\n            }\n          }\n        }\n        result[resIndex++] = value;\n      }\n      return result;\n    }\n\n    // Ensure `LazyWrapper` is an instance of `baseLodash`.\n    LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n    LazyWrapper.prototype.constructor = LazyWrapper;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a hash object.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function Hash(entries) {\n      var index = -1,\n          length = entries == null ? 0 : entries.length;\n\n      this.clear();\n      while (++index < length) {\n        var entry = entries[index];\n        this.set(entry[0], entry[1]);\n      }\n    }\n\n    /**\n     * Removes all key-value entries from the hash.\n     *\n     * @private\n     * @name clear\n     * @memberOf Hash\n     */\n    function hashClear() {\n      this.__data__ = nativeCreate ? nativeCreate(null) : {};\n      this.size = 0;\n    }\n\n    /**\n     * Removes `key` and its value from the hash.\n     *\n     * @private\n     * @name delete\n     * @memberOf Hash\n     * @param {Object} hash The hash to modify.\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function hashDelete(key) {\n      var result = this.has(key) && delete this.__data__[key];\n      this.size -= result ? 1 : 0;\n      return result;\n    }\n\n    /**\n     * Gets the hash value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf Hash\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function hashGet(key) {\n      var data = this.__data__;\n      if (nativeCreate) {\n        var result = data[key];\n        return result === HASH_UNDEFINED ? undefined : result;\n      }\n      return hasOwnProperty.call(data, key) ? data[key] : undefined;\n    }\n\n    /**\n     * Checks if a hash value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf Hash\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function hashHas(key) {\n      var data = this.__data__;\n      return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n    }\n\n    /**\n     * Sets the hash `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf Hash\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the hash instance.\n     */\n    function hashSet(key, value) {\n      var data = this.__data__;\n      this.size += this.has(key) ? 0 : 1;\n      data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n      return this;\n    }\n\n    // Add methods to `Hash`.\n    Hash.prototype.clear = hashClear;\n    Hash.prototype['delete'] = hashDelete;\n    Hash.prototype.get = hashGet;\n    Hash.prototype.has = hashHas;\n    Hash.prototype.set = hashSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an list cache object.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function ListCache(entries) {\n      var index = -1,\n          length = entries == null ? 0 : entries.length;\n\n      this.clear();\n      while (++index < length) {\n        var entry = entries[index];\n        this.set(entry[0], entry[1]);\n      }\n    }\n\n    /**\n     * Removes all key-value entries from the list cache.\n     *\n     * @private\n     * @name clear\n     * @memberOf ListCache\n     */\n    function listCacheClear() {\n      this.__data__ = [];\n      this.size = 0;\n    }\n\n    /**\n     * Removes `key` and its value from the list cache.\n     *\n     * @private\n     * @name delete\n     * @memberOf ListCache\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function listCacheDelete(key) {\n      var data = this.__data__,\n          index = assocIndexOf(data, key);\n\n      if (index < 0) {\n        return false;\n      }\n      var lastIndex = data.length - 1;\n      if (index == lastIndex) {\n        data.pop();\n      } else {\n        splice.call(data, index, 1);\n      }\n      --this.size;\n      return true;\n    }\n\n    /**\n     * Gets the list cache value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf ListCache\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function listCacheGet(key) {\n      var data = this.__data__,\n          index = assocIndexOf(data, key);\n\n      return index < 0 ? undefined : data[index][1];\n    }\n\n    /**\n     * Checks if a list cache value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf ListCache\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function listCacheHas(key) {\n      return assocIndexOf(this.__data__, key) > -1;\n    }\n\n    /**\n     * Sets the list cache `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf ListCache\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the list cache instance.\n     */\n    function listCacheSet(key, value) {\n      var data = this.__data__,\n          index = assocIndexOf(data, key);\n\n      if (index < 0) {\n        ++this.size;\n        data.push([key, value]);\n      } else {\n        data[index][1] = value;\n      }\n      return this;\n    }\n\n    // Add methods to `ListCache`.\n    ListCache.prototype.clear = listCacheClear;\n    ListCache.prototype['delete'] = listCacheDelete;\n    ListCache.prototype.get = listCacheGet;\n    ListCache.prototype.has = listCacheHas;\n    ListCache.prototype.set = listCacheSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a map cache object to store key-value pairs.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function MapCache(entries) {\n      var index = -1,\n          length = entries == null ? 0 : entries.length;\n\n      this.clear();\n      while (++index < length) {\n        var entry = entries[index];\n        this.set(entry[0], entry[1]);\n      }\n    }\n\n    /**\n     * Removes all key-value entries from the map.\n     *\n     * @private\n     * @name clear\n     * @memberOf MapCache\n     */\n    function mapCacheClear() {\n      this.size = 0;\n      this.__data__ = {\n        'hash': new Hash,\n        'map': new (Map || ListCache),\n        'string': new Hash\n      };\n    }\n\n    /**\n     * Removes `key` and its value from the map.\n     *\n     * @private\n     * @name delete\n     * @memberOf MapCache\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function mapCacheDelete(key) {\n      var result = getMapData(this, key)['delete'](key);\n      this.size -= result ? 1 : 0;\n      return result;\n    }\n\n    /**\n     * Gets the map value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf MapCache\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function mapCacheGet(key) {\n      return getMapData(this, key).get(key);\n    }\n\n    /**\n     * Checks if a map value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf MapCache\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function mapCacheHas(key) {\n      return getMapData(this, key).has(key);\n    }\n\n    /**\n     * Sets the map `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf MapCache\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the map cache instance.\n     */\n    function mapCacheSet(key, value) {\n      var data = getMapData(this, key),\n          size = data.size;\n\n      data.set(key, value);\n      this.size += data.size == size ? 0 : 1;\n      return this;\n    }\n\n    // Add methods to `MapCache`.\n    MapCache.prototype.clear = mapCacheClear;\n    MapCache.prototype['delete'] = mapCacheDelete;\n    MapCache.prototype.get = mapCacheGet;\n    MapCache.prototype.has = mapCacheHas;\n    MapCache.prototype.set = mapCacheSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     *\n     * Creates an array cache object to store unique values.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [values] The values to cache.\n     */\n    function SetCache(values) {\n      var index = -1,\n          length = values == null ? 0 : values.length;\n\n      this.__data__ = new MapCache;\n      while (++index < length) {\n        this.add(values[index]);\n      }\n    }\n\n    /**\n     * Adds `value` to the array cache.\n     *\n     * @private\n     * @name add\n     * @memberOf SetCache\n     * @alias push\n     * @param {*} value The value to cache.\n     * @returns {Object} Returns the cache instance.\n     */\n    function setCacheAdd(value) {\n      this.__data__.set(value, HASH_UNDEFINED);\n      return this;\n    }\n\n    /**\n     * Checks if `value` is in the array cache.\n     *\n     * @private\n     * @name has\n     * @memberOf SetCache\n     * @param {*} value The value to search for.\n     * @returns {number} Returns `true` if `value` is found, else `false`.\n     */\n    function setCacheHas(value) {\n      return this.__data__.has(value);\n    }\n\n    // Add methods to `SetCache`.\n    SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n    SetCache.prototype.has = setCacheHas;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a stack cache object to store key-value pairs.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function Stack(entries) {\n      var data = this.__data__ = new ListCache(entries);\n      this.size = data.size;\n    }\n\n    /**\n     * Removes all key-value entries from the stack.\n     *\n     * @private\n     * @name clear\n     * @memberOf Stack\n     */\n    function stackClear() {\n      this.__data__ = new ListCache;\n      this.size = 0;\n    }\n\n    /**\n     * Removes `key` and its value from the stack.\n     *\n     * @private\n     * @name delete\n     * @memberOf Stack\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function stackDelete(key) {\n      var data = this.__data__,\n          result = data['delete'](key);\n\n      this.size = data.size;\n      return result;\n    }\n\n    /**\n     * Gets the stack value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf Stack\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function stackGet(key) {\n      return this.__data__.get(key);\n    }\n\n    /**\n     * Checks if a stack value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf Stack\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function stackHas(key) {\n      return this.__data__.has(key);\n    }\n\n    /**\n     * Sets the stack `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf Stack\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the stack cache instance.\n     */\n    function stackSet(key, value) {\n      var data = this.__data__;\n      if (data instanceof ListCache) {\n        var pairs = data.__data__;\n        if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n          pairs.push([key, value]);\n          this.size = ++data.size;\n          return this;\n        }\n        data = this.__data__ = new MapCache(pairs);\n      }\n      data.set(key, value);\n      this.size = data.size;\n      return this;\n    }\n\n    // Add methods to `Stack`.\n    Stack.prototype.clear = stackClear;\n    Stack.prototype['delete'] = stackDelete;\n    Stack.prototype.get = stackGet;\n    Stack.prototype.has = stackHas;\n    Stack.prototype.set = stackSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an array of the enumerable property names of the array-like `value`.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @param {boolean} inherited Specify returning inherited property names.\n     * @returns {Array} Returns the array of property names.\n     */\n    function arrayLikeKeys(value, inherited) {\n      var isArr = isArray(value),\n          isArg = !isArr && isArguments(value),\n          isBuff = !isArr && !isArg && isBuffer(value),\n          isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n          skipIndexes = isArr || isArg || isBuff || isType,\n          result = skipIndexes ? baseTimes(value.length, String) : [],\n          length = result.length;\n\n      for (var key in value) {\n        if ((inherited || hasOwnProperty.call(value, key)) &&\n            !(skipIndexes && (\n               // Safari 9 has enumerable `arguments.length` in strict mode.\n               key == 'length' ||\n               // Node.js 0.10 has enumerable non-index properties on buffers.\n               (isBuff && (key == 'offset' || key == 'parent')) ||\n               // PhantomJS 2 has enumerable non-index properties on typed arrays.\n               (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n               // Skip index properties.\n               isIndex(key, length)\n            ))) {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * A specialized version of `_.sample` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to sample.\n     * @returns {*} Returns the random element.\n     */\n    function arraySample(array) {\n      var length = array.length;\n      return length ? array[baseRandom(0, length - 1)] : undefined;\n    }\n\n    /**\n     * A specialized version of `_.sampleSize` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to sample.\n     * @param {number} n The number of elements to sample.\n     * @returns {Array} Returns the random elements.\n     */\n    function arraySampleSize(array, n) {\n      return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n    }\n\n    /**\n     * A specialized version of `_.shuffle` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     */\n    function arrayShuffle(array) {\n      return shuffleSelf(copyArray(array));\n    }\n\n    /**\n     * This function is like `assignValue` except that it doesn't assign\n     * `undefined` values.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {string} key The key of the property to assign.\n     * @param {*} value The value to assign.\n     */\n    function assignMergeValue(object, key, value) {\n      if ((value !== undefined && !eq(object[key], value)) ||\n          (value === undefined && !(key in object))) {\n        baseAssignValue(object, key, value);\n      }\n    }\n\n    /**\n     * Assigns `value` to `key` of `object` if the existing value is not equivalent\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {string} key The key of the property to assign.\n     * @param {*} value The value to assign.\n     */\n    function assignValue(object, key, value) {\n      var objValue = object[key];\n      if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n          (value === undefined && !(key in object))) {\n        baseAssignValue(object, key, value);\n      }\n    }\n\n    /**\n     * Gets the index at which the `key` is found in `array` of key-value pairs.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {*} key The key to search for.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     */\n    function assocIndexOf(array, key) {\n      var length = array.length;\n      while (length--) {\n        if (eq(array[length][0], key)) {\n          return length;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * Aggregates elements of `collection` on `accumulator` with keys transformed\n     * by `iteratee` and values set by `setter`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} setter The function to set `accumulator` values.\n     * @param {Function} iteratee The iteratee to transform keys.\n     * @param {Object} accumulator The initial aggregated object.\n     * @returns {Function} Returns `accumulator`.\n     */\n    function baseAggregator(collection, setter, iteratee, accumulator) {\n      baseEach(collection, function(value, key, collection) {\n        setter(accumulator, value, iteratee(value), collection);\n      });\n      return accumulator;\n    }\n\n    /**\n     * The base implementation of `_.assign` without support for multiple sources\n     * or `customizer` functions.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @returns {Object} Returns `object`.\n     */\n    function baseAssign(object, source) {\n      return object && copyObject(source, keys(source), object);\n    }\n\n    /**\n     * The base implementation of `_.assignIn` without support for multiple sources\n     * or `customizer` functions.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @returns {Object} Returns `object`.\n     */\n    function baseAssignIn(object, source) {\n      return object && copyObject(source, keysIn(source), object);\n    }\n\n    /**\n     * The base implementation of `assignValue` and `assignMergeValue` without\n     * value checks.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {string} key The key of the property to assign.\n     * @param {*} value The value to assign.\n     */\n    function baseAssignValue(object, key, value) {\n      if (key == '__proto__' && defineProperty) {\n        defineProperty(object, key, {\n          'configurable': true,\n          'enumerable': true,\n          'value': value,\n          'writable': true\n        });\n      } else {\n        object[key] = value;\n      }\n    }\n\n    /**\n     * The base implementation of `_.at` without support for individual paths.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {string[]} paths The property paths to pick.\n     * @returns {Array} Returns the picked elements.\n     */\n    function baseAt(object, paths) {\n      var index = -1,\n          length = paths.length,\n          result = Array(length),\n          skip = object == null;\n\n      while (++index < length) {\n        result[index] = skip ? undefined : get(object, paths[index]);\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.clamp` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {number} number The number to clamp.\n     * @param {number} [lower] The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the clamped number.\n     */\n    function baseClamp(number, lower, upper) {\n      if (number === number) {\n        if (upper !== undefined) {\n          number = number <= upper ? number : upper;\n        }\n        if (lower !== undefined) {\n          number = number >= lower ? number : lower;\n        }\n      }\n      return number;\n    }\n\n    /**\n     * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n     * traversed objects.\n     *\n     * @private\n     * @param {*} value The value to clone.\n     * @param {boolean} bitmask The bitmask flags.\n     *  1 - Deep clone\n     *  2 - Flatten inherited properties\n     *  4 - Clone symbols\n     * @param {Function} [customizer] The function to customize cloning.\n     * @param {string} [key] The key of `value`.\n     * @param {Object} [object] The parent object of `value`.\n     * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n     * @returns {*} Returns the cloned value.\n     */\n    function baseClone(value, bitmask, customizer, key, object, stack) {\n      var result,\n          isDeep = bitmask & CLONE_DEEP_FLAG,\n          isFlat = bitmask & CLONE_FLAT_FLAG,\n          isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n      if (customizer) {\n        result = object ? customizer(value, key, object, stack) : customizer(value);\n      }\n      if (result !== undefined) {\n        return result;\n      }\n      if (!isObject(value)) {\n        return value;\n      }\n      var isArr = isArray(value);\n      if (isArr) {\n        result = initCloneArray(value);\n        if (!isDeep) {\n          return copyArray(value, result);\n        }\n      } else {\n        var tag = getTag(value),\n            isFunc = tag == funcTag || tag == genTag;\n\n        if (isBuffer(value)) {\n          return cloneBuffer(value, isDeep);\n        }\n        if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n          result = (isFlat || isFunc) ? {} : initCloneObject(value);\n          if (!isDeep) {\n            return isFlat\n              ? copySymbolsIn(value, baseAssignIn(result, value))\n              : copySymbols(value, baseAssign(result, value));\n          }\n        } else {\n          if (!cloneableTags[tag]) {\n            return object ? value : {};\n          }\n          result = initCloneByTag(value, tag, isDeep);\n        }\n      }\n      // Check for circular references and return its corresponding clone.\n      stack || (stack = new Stack);\n      var stacked = stack.get(value);\n      if (stacked) {\n        return stacked;\n      }\n      stack.set(value, result);\n\n      if (isSet(value)) {\n        value.forEach(function(subValue) {\n          result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n        });\n      } else if (isMap(value)) {\n        value.forEach(function(subValue, key) {\n          result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n        });\n      }\n\n      var keysFunc = isFull\n        ? (isFlat ? getAllKeysIn : getAllKeys)\n        : (isFlat ? keysIn : keys);\n\n      var props = isArr ? undefined : keysFunc(value);\n      arrayEach(props || value, function(subValue, key) {\n        if (props) {\n          key = subValue;\n          subValue = value[key];\n        }\n        // Recursively populate clone (susceptible to call stack limits).\n        assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.conforms` which doesn't clone `source`.\n     *\n     * @private\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {Function} Returns the new spec function.\n     */\n    function baseConforms(source) {\n      var props = keys(source);\n      return function(object) {\n        return baseConformsTo(object, source, props);\n      };\n    }\n\n    /**\n     * The base implementation of `_.conformsTo` which accepts `props` to check.\n     *\n     * @private\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n     */\n    function baseConformsTo(object, source, props) {\n      var length = props.length;\n      if (object == null) {\n        return !length;\n      }\n      object = Object(object);\n      while (length--) {\n        var key = props[length],\n            predicate = source[key],\n            value = object[key];\n\n        if ((value === undefined && !(key in object)) || !predicate(value)) {\n          return false;\n        }\n      }\n      return true;\n    }\n\n    /**\n     * The base implementation of `_.delay` and `_.defer` which accepts `args`\n     * to provide to `func`.\n     *\n     * @private\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @param {Array} args The arguments to provide to `func`.\n     * @returns {number|Object} Returns the timer id or timeout object.\n     */\n    function baseDelay(func, wait, args) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      return setTimeout(function() { func.apply(undefined, args); }, wait);\n    }\n\n    /**\n     * The base implementation of methods like `_.difference` without support\n     * for excluding multiple arrays or iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {Array} values The values to exclude.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     */\n    function baseDifference(array, values, iteratee, comparator) {\n      var index = -1,\n          includes = arrayIncludes,\n          isCommon = true,\n          length = array.length,\n          result = [],\n          valuesLength = values.length;\n\n      if (!length) {\n        return result;\n      }\n      if (iteratee) {\n        values = arrayMap(values, baseUnary(iteratee));\n      }\n      if (comparator) {\n        includes = arrayIncludesWith;\n        isCommon = false;\n      }\n      else if (values.length >= LARGE_ARRAY_SIZE) {\n        includes = cacheHas;\n        isCommon = false;\n        values = new SetCache(values);\n      }\n      outer:\n      while (++index < length) {\n        var value = array[index],\n            computed = iteratee == null ? value : iteratee(value);\n\n        value = (comparator || value !== 0) ? value : 0;\n        if (isCommon && computed === computed) {\n          var valuesIndex = valuesLength;\n          while (valuesIndex--) {\n            if (values[valuesIndex] === computed) {\n              continue outer;\n            }\n          }\n          result.push(value);\n        }\n        else if (!includes(values, computed, comparator)) {\n          result.push(value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.forEach` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     */\n    var baseEach = createBaseEach(baseForOwn);\n\n    /**\n     * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     */\n    var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n    /**\n     * The base implementation of `_.every` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} predicate The function invoked per iteration.\n     * @returns {boolean} Returns `true` if all elements pass the predicate check,\n     *  else `false`\n     */\n    function baseEvery(collection, predicate) {\n      var result = true;\n      baseEach(collection, function(value, index, collection) {\n        result = !!predicate(value, index, collection);\n        return result;\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of methods like `_.max` and `_.min` which accepts a\n     * `comparator` to determine the extremum value.\n     *\n     * @private\n     * @param {Array} array The array to iterate over.\n     * @param {Function} iteratee The iteratee invoked per iteration.\n     * @param {Function} comparator The comparator used to compare values.\n     * @returns {*} Returns the extremum value.\n     */\n    function baseExtremum(array, iteratee, comparator) {\n      var index = -1,\n          length = array.length;\n\n      while (++index < length) {\n        var value = array[index],\n            current = iteratee(value);\n\n        if (current != null && (computed === undefined\n              ? (current === current && !isSymbol(current))\n              : comparator(current, computed)\n            )) {\n          var computed = current,\n              result = value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.fill` without an iteratee call guard.\n     *\n     * @private\n     * @param {Array} array The array to fill.\n     * @param {*} value The value to fill `array` with.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns `array`.\n     */\n    function baseFill(array, value, start, end) {\n      var length = array.length;\n\n      start = toInteger(start);\n      if (start < 0) {\n        start = -start > length ? 0 : (length + start);\n      }\n      end = (end === undefined || end > length) ? length : toInteger(end);\n      if (end < 0) {\n        end += length;\n      }\n      end = start > end ? 0 : toLength(end);\n      while (start < end) {\n        array[start++] = value;\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.filter` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} predicate The function invoked per iteration.\n     * @returns {Array} Returns the new filtered array.\n     */\n    function baseFilter(collection, predicate) {\n      var result = [];\n      baseEach(collection, function(value, index, collection) {\n        if (predicate(value, index, collection)) {\n          result.push(value);\n        }\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.flatten` with support for restricting flattening.\n     *\n     * @private\n     * @param {Array} array The array to flatten.\n     * @param {number} depth The maximum recursion depth.\n     * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n     * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n     * @param {Array} [result=[]] The initial result value.\n     * @returns {Array} Returns the new flattened array.\n     */\n    function baseFlatten(array, depth, predicate, isStrict, result) {\n      var index = -1,\n          length = array.length;\n\n      predicate || (predicate = isFlattenable);\n      result || (result = []);\n\n      while (++index < length) {\n        var value = array[index];\n        if (depth > 0 && predicate(value)) {\n          if (depth > 1) {\n            // Recursively flatten arrays (susceptible to call stack limits).\n            baseFlatten(value, depth - 1, predicate, isStrict, result);\n          } else {\n            arrayPush(result, value);\n          }\n        } else if (!isStrict) {\n          result[result.length] = value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `baseForOwn` which iterates over `object`\n     * properties returned by `keysFunc` and invokes `iteratee` for each property.\n     * Iteratee functions may exit iteration early by explicitly returning `false`.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @param {Function} keysFunc The function to get the keys of `object`.\n     * @returns {Object} Returns `object`.\n     */\n    var baseFor = createBaseFor();\n\n    /**\n     * This function is like `baseFor` except that it iterates over properties\n     * in the opposite order.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @param {Function} keysFunc The function to get the keys of `object`.\n     * @returns {Object} Returns `object`.\n     */\n    var baseForRight = createBaseFor(true);\n\n    /**\n     * The base implementation of `_.forOwn` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     */\n    function baseForOwn(object, iteratee) {\n      return object && baseFor(object, iteratee, keys);\n    }\n\n    /**\n     * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     */\n    function baseForOwnRight(object, iteratee) {\n      return object && baseForRight(object, iteratee, keys);\n    }\n\n    /**\n     * The base implementation of `_.functions` which creates an array of\n     * `object` function property names filtered from `props`.\n     *\n     * @private\n     * @param {Object} object The object to inspect.\n     * @param {Array} props The property names to filter.\n     * @returns {Array} Returns the function names.\n     */\n    function baseFunctions(object, props) {\n      return arrayFilter(props, function(key) {\n        return isFunction(object[key]);\n      });\n    }\n\n    /**\n     * The base implementation of `_.get` without support for default values.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the property to get.\n     * @returns {*} Returns the resolved value.\n     */\n    function baseGet(object, path) {\n      path = castPath(path, object);\n\n      var index = 0,\n          length = path.length;\n\n      while (object != null && index < length) {\n        object = object[toKey(path[index++])];\n      }\n      return (index && index == length) ? object : undefined;\n    }\n\n    /**\n     * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n     * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n     * symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Function} keysFunc The function to get the keys of `object`.\n     * @param {Function} symbolsFunc The function to get the symbols of `object`.\n     * @returns {Array} Returns the array of property names and symbols.\n     */\n    function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n      var result = keysFunc(object);\n      return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n    }\n\n    /**\n     * The base implementation of `getTag` without fallbacks for buggy environments.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @returns {string} Returns the `toStringTag`.\n     */\n    function baseGetTag(value) {\n      if (value == null) {\n        return value === undefined ? undefinedTag : nullTag;\n      }\n      return (symToStringTag && symToStringTag in Object(value))\n        ? getRawTag(value)\n        : objectToString(value);\n    }\n\n    /**\n     * The base implementation of `_.gt` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is greater than `other`,\n     *  else `false`.\n     */\n    function baseGt(value, other) {\n      return value > other;\n    }\n\n    /**\n     * The base implementation of `_.has` without support for deep paths.\n     *\n     * @private\n     * @param {Object} [object] The object to query.\n     * @param {Array|string} key The key to check.\n     * @returns {boolean} Returns `true` if `key` exists, else `false`.\n     */\n    function baseHas(object, key) {\n      return object != null && hasOwnProperty.call(object, key);\n    }\n\n    /**\n     * The base implementation of `_.hasIn` without support for deep paths.\n     *\n     * @private\n     * @param {Object} [object] The object to query.\n     * @param {Array|string} key The key to check.\n     * @returns {boolean} Returns `true` if `key` exists, else `false`.\n     */\n    function baseHasIn(object, key) {\n      return object != null && key in Object(object);\n    }\n\n    /**\n     * The base implementation of `_.inRange` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {number} number The number to check.\n     * @param {number} start The start of the range.\n     * @param {number} end The end of the range.\n     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n     */\n    function baseInRange(number, start, end) {\n      return number >= nativeMin(start, end) && number < nativeMax(start, end);\n    }\n\n    /**\n     * The base implementation of methods like `_.intersection`, without support\n     * for iteratee shorthands, that accepts an array of arrays to inspect.\n     *\n     * @private\n     * @param {Array} arrays The arrays to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of shared values.\n     */\n    function baseIntersection(arrays, iteratee, comparator) {\n      var includes = comparator ? arrayIncludesWith : arrayIncludes,\n          length = arrays[0].length,\n          othLength = arrays.length,\n          othIndex = othLength,\n          caches = Array(othLength),\n          maxLength = Infinity,\n          result = [];\n\n      while (othIndex--) {\n        var array = arrays[othIndex];\n        if (othIndex && iteratee) {\n          array = arrayMap(array, baseUnary(iteratee));\n        }\n        maxLength = nativeMin(array.length, maxLength);\n        caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n          ? new SetCache(othIndex && array)\n          : undefined;\n      }\n      array = arrays[0];\n\n      var index = -1,\n          seen = caches[0];\n\n      outer:\n      while (++index < length && result.length < maxLength) {\n        var value = array[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        value = (comparator || value !== 0) ? value : 0;\n        if (!(seen\n              ? cacheHas(seen, computed)\n              : includes(result, computed, comparator)\n            )) {\n          othIndex = othLength;\n          while (--othIndex) {\n            var cache = caches[othIndex];\n            if (!(cache\n                  ? cacheHas(cache, computed)\n                  : includes(arrays[othIndex], computed, comparator))\n                ) {\n              continue outer;\n            }\n          }\n          if (seen) {\n            seen.push(computed);\n          }\n          result.push(value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.invert` and `_.invertBy` which inverts\n     * `object` with values transformed by `iteratee` and set by `setter`.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} setter The function to set `accumulator` values.\n     * @param {Function} iteratee The iteratee to transform values.\n     * @param {Object} accumulator The initial inverted object.\n     * @returns {Function} Returns `accumulator`.\n     */\n    function baseInverter(object, setter, iteratee, accumulator) {\n      baseForOwn(object, function(value, key, object) {\n        setter(accumulator, iteratee(value), key, object);\n      });\n      return accumulator;\n    }\n\n    /**\n     * The base implementation of `_.invoke` without support for individual\n     * method arguments.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the method to invoke.\n     * @param {Array} args The arguments to invoke the method with.\n     * @returns {*} Returns the result of the invoked method.\n     */\n    function baseInvoke(object, path, args) {\n      path = castPath(path, object);\n      object = parent(object, path);\n      var func = object == null ? object : object[toKey(last(path))];\n      return func == null ? undefined : apply(func, object, args);\n    }\n\n    /**\n     * The base implementation of `_.isArguments`.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n     */\n    function baseIsArguments(value) {\n      return isObjectLike(value) && baseGetTag(value) == argsTag;\n    }\n\n    /**\n     * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n     */\n    function baseIsArrayBuffer(value) {\n      return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n    }\n\n    /**\n     * The base implementation of `_.isDate` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n     */\n    function baseIsDate(value) {\n      return isObjectLike(value) && baseGetTag(value) == dateTag;\n    }\n\n    /**\n     * The base implementation of `_.isEqual` which supports partial comparisons\n     * and tracks traversed objects.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @param {boolean} bitmask The bitmask flags.\n     *  1 - Unordered comparison\n     *  2 - Partial comparison\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     */\n    function baseIsEqual(value, other, bitmask, customizer, stack) {\n      if (value === other) {\n        return true;\n      }\n      if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n        return value !== value && other !== other;\n      }\n      return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n    }\n\n    /**\n     * A specialized version of `baseIsEqual` for arrays and objects which performs\n     * deep comparisons and tracks traversed objects enabling objects with circular\n     * references to be compared.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n     */\n    function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n      var objIsArr = isArray(object),\n          othIsArr = isArray(other),\n          objTag = objIsArr ? arrayTag : getTag(object),\n          othTag = othIsArr ? arrayTag : getTag(other);\n\n      objTag = objTag == argsTag ? objectTag : objTag;\n      othTag = othTag == argsTag ? objectTag : othTag;\n\n      var objIsObj = objTag == objectTag,\n          othIsObj = othTag == objectTag,\n          isSameTag = objTag == othTag;\n\n      if (isSameTag && isBuffer(object)) {\n        if (!isBuffer(other)) {\n          return false;\n        }\n        objIsArr = true;\n        objIsObj = false;\n      }\n      if (isSameTag && !objIsObj) {\n        stack || (stack = new Stack);\n        return (objIsArr || isTypedArray(object))\n          ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n          : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n      }\n      if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n        var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n            othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n        if (objIsWrapped || othIsWrapped) {\n          var objUnwrapped = objIsWrapped ? object.value() : object,\n              othUnwrapped = othIsWrapped ? other.value() : other;\n\n          stack || (stack = new Stack);\n          return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n        }\n      }\n      if (!isSameTag) {\n        return false;\n      }\n      stack || (stack = new Stack);\n      return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n    }\n\n    /**\n     * The base implementation of `_.isMap` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n     */\n    function baseIsMap(value) {\n      return isObjectLike(value) && getTag(value) == mapTag;\n    }\n\n    /**\n     * The base implementation of `_.isMatch` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property values to match.\n     * @param {Array} matchData The property names, values, and compare flags to match.\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n     */\n    function baseIsMatch(object, source, matchData, customizer) {\n      var index = matchData.length,\n          length = index,\n          noCustomizer = !customizer;\n\n      if (object == null) {\n        return !length;\n      }\n      object = Object(object);\n      while (index--) {\n        var data = matchData[index];\n        if ((noCustomizer && data[2])\n              ? data[1] !== object[data[0]]\n              : !(data[0] in object)\n            ) {\n          return false;\n        }\n      }\n      while (++index < length) {\n        data = matchData[index];\n        var key = data[0],\n            objValue = object[key],\n            srcValue = data[1];\n\n        if (noCustomizer && data[2]) {\n          if (objValue === undefined && !(key in object)) {\n            return false;\n          }\n        } else {\n          var stack = new Stack;\n          if (customizer) {\n            var result = customizer(objValue, srcValue, key, object, source, stack);\n          }\n          if (!(result === undefined\n                ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n                : result\n              )) {\n            return false;\n          }\n        }\n      }\n      return true;\n    }\n\n    /**\n     * The base implementation of `_.isNative` without bad shim checks.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a native function,\n     *  else `false`.\n     */\n    function baseIsNative(value) {\n      if (!isObject(value) || isMasked(value)) {\n        return false;\n      }\n      var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n      return pattern.test(toSource(value));\n    }\n\n    /**\n     * The base implementation of `_.isRegExp` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n     */\n    function baseIsRegExp(value) {\n      return isObjectLike(value) && baseGetTag(value) == regexpTag;\n    }\n\n    /**\n     * The base implementation of `_.isSet` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n     */\n    function baseIsSet(value) {\n      return isObjectLike(value) && getTag(value) == setTag;\n    }\n\n    /**\n     * The base implementation of `_.isTypedArray` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n     */\n    function baseIsTypedArray(value) {\n      return isObjectLike(value) &&\n        isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n    }\n\n    /**\n     * The base implementation of `_.iteratee`.\n     *\n     * @private\n     * @param {*} [value=_.identity] The value to convert to an iteratee.\n     * @returns {Function} Returns the iteratee.\n     */\n    function baseIteratee(value) {\n      // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n      // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n      if (typeof value == 'function') {\n        return value;\n      }\n      if (value == null) {\n        return identity;\n      }\n      if (typeof value == 'object') {\n        return isArray(value)\n          ? baseMatchesProperty(value[0], value[1])\n          : baseMatches(value);\n      }\n      return property(value);\n    }\n\n    /**\n     * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     */\n    function baseKeys(object) {\n      if (!isPrototype(object)) {\n        return nativeKeys(object);\n      }\n      var result = [];\n      for (var key in Object(object)) {\n        if (hasOwnProperty.call(object, key) && key != 'constructor') {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     */\n    function baseKeysIn(object) {\n      if (!isObject(object)) {\n        return nativeKeysIn(object);\n      }\n      var isProto = isPrototype(object),\n          result = [];\n\n      for (var key in object) {\n        if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.lt` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is less than `other`,\n     *  else `false`.\n     */\n    function baseLt(value, other) {\n      return value < other;\n    }\n\n    /**\n     * The base implementation of `_.map` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Array} Returns the new mapped array.\n     */\n    function baseMap(collection, iteratee) {\n      var index = -1,\n          result = isArrayLike(collection) ? Array(collection.length) : [];\n\n      baseEach(collection, function(value, key, collection) {\n        result[++index] = iteratee(value, key, collection);\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.matches` which doesn't clone `source`.\n     *\n     * @private\n     * @param {Object} source The object of property values to match.\n     * @returns {Function} Returns the new spec function.\n     */\n    function baseMatches(source) {\n      var matchData = getMatchData(source);\n      if (matchData.length == 1 && matchData[0][2]) {\n        return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n      }\n      return function(object) {\n        return object === source || baseIsMatch(object, source, matchData);\n      };\n    }\n\n    /**\n     * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n     *\n     * @private\n     * @param {string} path The path of the property to get.\n     * @param {*} srcValue The value to match.\n     * @returns {Function} Returns the new spec function.\n     */\n    function baseMatchesProperty(path, srcValue) {\n      if (isKey(path) && isStrictComparable(srcValue)) {\n        return matchesStrictComparable(toKey(path), srcValue);\n      }\n      return function(object) {\n        var objValue = get(object, path);\n        return (objValue === undefined && objValue === srcValue)\n          ? hasIn(object, path)\n          : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n      };\n    }\n\n    /**\n     * The base implementation of `_.merge` without support for multiple sources.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @param {number} srcIndex The index of `source`.\n     * @param {Function} [customizer] The function to customize merged values.\n     * @param {Object} [stack] Tracks traversed source values and their merged\n     *  counterparts.\n     */\n    function baseMerge(object, source, srcIndex, customizer, stack) {\n      if (object === source) {\n        return;\n      }\n      baseFor(source, function(srcValue, key) {\n        stack || (stack = new Stack);\n        if (isObject(srcValue)) {\n          baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n        }\n        else {\n          var newValue = customizer\n            ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n            : undefined;\n\n          if (newValue === undefined) {\n            newValue = srcValue;\n          }\n          assignMergeValue(object, key, newValue);\n        }\n      }, keysIn);\n    }\n\n    /**\n     * A specialized version of `baseMerge` for arrays and objects which performs\n     * deep merges and tracks traversed objects enabling objects with circular\n     * references to be merged.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @param {string} key The key of the value to merge.\n     * @param {number} srcIndex The index of `source`.\n     * @param {Function} mergeFunc The function to merge values.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @param {Object} [stack] Tracks traversed source values and their merged\n     *  counterparts.\n     */\n    function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n      var objValue = safeGet(object, key),\n          srcValue = safeGet(source, key),\n          stacked = stack.get(srcValue);\n\n      if (stacked) {\n        assignMergeValue(object, key, stacked);\n        return;\n      }\n      var newValue = customizer\n        ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n        : undefined;\n\n      var isCommon = newValue === undefined;\n\n      if (isCommon) {\n        var isArr = isArray(srcValue),\n            isBuff = !isArr && isBuffer(srcValue),\n            isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n        newValue = srcValue;\n        if (isArr || isBuff || isTyped) {\n          if (isArray(objValue)) {\n            newValue = objValue;\n          }\n          else if (isArrayLikeObject(objValue)) {\n            newValue = copyArray(objValue);\n          }\n          else if (isBuff) {\n            isCommon = false;\n            newValue = cloneBuffer(srcValue, true);\n          }\n          else if (isTyped) {\n            isCommon = false;\n            newValue = cloneTypedArray(srcValue, true);\n          }\n          else {\n            newValue = [];\n          }\n        }\n        else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n          newValue = objValue;\n          if (isArguments(objValue)) {\n            newValue = toPlainObject(objValue);\n          }\n          else if (!isObject(objValue) || isFunction(objValue)) {\n            newValue = initCloneObject(srcValue);\n          }\n        }\n        else {\n          isCommon = false;\n        }\n      }\n      if (isCommon) {\n        // Recursively merge objects and arrays (susceptible to call stack limits).\n        stack.set(srcValue, newValue);\n        mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n        stack['delete'](srcValue);\n      }\n      assignMergeValue(object, key, newValue);\n    }\n\n    /**\n     * The base implementation of `_.nth` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {Array} array The array to query.\n     * @param {number} n The index of the element to return.\n     * @returns {*} Returns the nth element of `array`.\n     */\n    function baseNth(array, n) {\n      var length = array.length;\n      if (!length) {\n        return;\n      }\n      n += n < 0 ? length : 0;\n      return isIndex(n, length) ? array[n] : undefined;\n    }\n\n    /**\n     * The base implementation of `_.orderBy` without param guards.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n     * @param {string[]} orders The sort orders of `iteratees`.\n     * @returns {Array} Returns the new sorted array.\n     */\n    function baseOrderBy(collection, iteratees, orders) {\n      if (iteratees.length) {\n        iteratees = arrayMap(iteratees, function(iteratee) {\n          if (isArray(iteratee)) {\n            return function(value) {\n              return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n            }\n          }\n          return iteratee;\n        });\n      } else {\n        iteratees = [identity];\n      }\n\n      var index = -1;\n      iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n      var result = baseMap(collection, function(value, key, collection) {\n        var criteria = arrayMap(iteratees, function(iteratee) {\n          return iteratee(value);\n        });\n        return { 'criteria': criteria, 'index': ++index, 'value': value };\n      });\n\n      return baseSortBy(result, function(object, other) {\n        return compareMultiple(object, other, orders);\n      });\n    }\n\n    /**\n     * The base implementation of `_.pick` without support for individual\n     * property identifiers.\n     *\n     * @private\n     * @param {Object} object The source object.\n     * @param {string[]} paths The property paths to pick.\n     * @returns {Object} Returns the new object.\n     */\n    function basePick(object, paths) {\n      return basePickBy(object, paths, function(value, path) {\n        return hasIn(object, path);\n      });\n    }\n\n    /**\n     * The base implementation of  `_.pickBy` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The source object.\n     * @param {string[]} paths The property paths to pick.\n     * @param {Function} predicate The function invoked per property.\n     * @returns {Object} Returns the new object.\n     */\n    function basePickBy(object, paths, predicate) {\n      var index = -1,\n          length = paths.length,\n          result = {};\n\n      while (++index < length) {\n        var path = paths[index],\n            value = baseGet(object, path);\n\n        if (predicate(value, path)) {\n          baseSet(result, castPath(path, object), value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * A specialized version of `baseProperty` which supports deep paths.\n     *\n     * @private\n     * @param {Array|string} path The path of the property to get.\n     * @returns {Function} Returns the new accessor function.\n     */\n    function basePropertyDeep(path) {\n      return function(object) {\n        return baseGet(object, path);\n      };\n    }\n\n    /**\n     * The base implementation of `_.pullAllBy` without support for iteratee\n     * shorthands.\n     *\n     * @private\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns `array`.\n     */\n    function basePullAll(array, values, iteratee, comparator) {\n      var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n          index = -1,\n          length = values.length,\n          seen = array;\n\n      if (array === values) {\n        values = copyArray(values);\n      }\n      if (iteratee) {\n        seen = arrayMap(array, baseUnary(iteratee));\n      }\n      while (++index < length) {\n        var fromIndex = 0,\n            value = values[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n          if (seen !== array) {\n            splice.call(seen, fromIndex, 1);\n          }\n          splice.call(array, fromIndex, 1);\n        }\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.pullAt` without support for individual\n     * indexes or capturing the removed elements.\n     *\n     * @private\n     * @param {Array} array The array to modify.\n     * @param {number[]} indexes The indexes of elements to remove.\n     * @returns {Array} Returns `array`.\n     */\n    function basePullAt(array, indexes) {\n      var length = array ? indexes.length : 0,\n          lastIndex = length - 1;\n\n      while (length--) {\n        var index = indexes[length];\n        if (length == lastIndex || index !== previous) {\n          var previous = index;\n          if (isIndex(index)) {\n            splice.call(array, index, 1);\n          } else {\n            baseUnset(array, index);\n          }\n        }\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.random` without support for returning\n     * floating-point numbers.\n     *\n     * @private\n     * @param {number} lower The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the random number.\n     */\n    function baseRandom(lower, upper) {\n      return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n    }\n\n    /**\n     * The base implementation of `_.range` and `_.rangeRight` which doesn't\n     * coerce arguments.\n     *\n     * @private\n     * @param {number} start The start of the range.\n     * @param {number} end The end of the range.\n     * @param {number} step The value to increment or decrement by.\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Array} Returns the range of numbers.\n     */\n    function baseRange(start, end, step, fromRight) {\n      var index = -1,\n          length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n          result = Array(length);\n\n      while (length--) {\n        result[fromRight ? length : ++index] = start;\n        start += step;\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.repeat` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {string} string The string to repeat.\n     * @param {number} n The number of times to repeat the string.\n     * @returns {string} Returns the repeated string.\n     */\n    function baseRepeat(string, n) {\n      var result = '';\n      if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n        return result;\n      }\n      // Leverage the exponentiation by squaring algorithm for a faster repeat.\n      // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n      do {\n        if (n % 2) {\n          result += string;\n        }\n        n = nativeFloor(n / 2);\n        if (n) {\n          string += string;\n        }\n      } while (n);\n\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n     *\n     * @private\n     * @param {Function} func The function to apply a rest parameter to.\n     * @param {number} [start=func.length-1] The start position of the rest parameter.\n     * @returns {Function} Returns the new function.\n     */\n    function baseRest(func, start) {\n      return setToString(overRest(func, start, identity), func + '');\n    }\n\n    /**\n     * The base implementation of `_.sample`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to sample.\n     * @returns {*} Returns the random element.\n     */\n    function baseSample(collection) {\n      return arraySample(values(collection));\n    }\n\n    /**\n     * The base implementation of `_.sampleSize` without param guards.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to sample.\n     * @param {number} n The number of elements to sample.\n     * @returns {Array} Returns the random elements.\n     */\n    function baseSampleSize(collection, n) {\n      var array = values(collection);\n      return shuffleSelf(array, baseClamp(n, 0, array.length));\n    }\n\n    /**\n     * The base implementation of `_.set`.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {*} value The value to set.\n     * @param {Function} [customizer] The function to customize path creation.\n     * @returns {Object} Returns `object`.\n     */\n    function baseSet(object, path, value, customizer) {\n      if (!isObject(object)) {\n        return object;\n      }\n      path = castPath(path, object);\n\n      var index = -1,\n          length = path.length,\n          lastIndex = length - 1,\n          nested = object;\n\n      while (nested != null && ++index < length) {\n        var key = toKey(path[index]),\n            newValue = value;\n\n        if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n          return object;\n        }\n\n        if (index != lastIndex) {\n          var objValue = nested[key];\n          newValue = customizer ? customizer(objValue, key, nested) : undefined;\n          if (newValue === undefined) {\n            newValue = isObject(objValue)\n              ? objValue\n              : (isIndex(path[index + 1]) ? [] : {});\n          }\n        }\n        assignValue(nested, key, newValue);\n        nested = nested[key];\n      }\n      return object;\n    }\n\n    /**\n     * The base implementation of `setData` without support for hot loop shorting.\n     *\n     * @private\n     * @param {Function} func The function to associate metadata with.\n     * @param {*} data The metadata.\n     * @returns {Function} Returns `func`.\n     */\n    var baseSetData = !metaMap ? identity : function(func, data) {\n      metaMap.set(func, data);\n      return func;\n    };\n\n    /**\n     * The base implementation of `setToString` without support for hot loop shorting.\n     *\n     * @private\n     * @param {Function} func The function to modify.\n     * @param {Function} string The `toString` result.\n     * @returns {Function} Returns `func`.\n     */\n    var baseSetToString = !defineProperty ? identity : function(func, string) {\n      return defineProperty(func, 'toString', {\n        'configurable': true,\n        'enumerable': false,\n        'value': constant(string),\n        'writable': true\n      });\n    };\n\n    /**\n     * The base implementation of `_.shuffle`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     */\n    function baseShuffle(collection) {\n      return shuffleSelf(values(collection));\n    }\n\n    /**\n     * The base implementation of `_.slice` without an iteratee call guard.\n     *\n     * @private\n     * @param {Array} array The array to slice.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns the slice of `array`.\n     */\n    function baseSlice(array, start, end) {\n      var index = -1,\n          length = array.length;\n\n      if (start < 0) {\n        start = -start > length ? 0 : (length + start);\n      }\n      end = end > length ? length : end;\n      if (end < 0) {\n        end += length;\n      }\n      length = start > end ? 0 : ((end - start) >>> 0);\n      start >>>= 0;\n\n      var result = Array(length);\n      while (++index < length) {\n        result[index] = array[index + start];\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.some` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} predicate The function invoked per iteration.\n     * @returns {boolean} Returns `true` if any element passes the predicate check,\n     *  else `false`.\n     */\n    function baseSome(collection, predicate) {\n      var result;\n\n      baseEach(collection, function(value, index, collection) {\n        result = predicate(value, index, collection);\n        return !result;\n      });\n      return !!result;\n    }\n\n    /**\n     * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n     * performs a binary search of `array` to determine the index at which `value`\n     * should be inserted into `array` in order to maintain its sort order.\n     *\n     * @private\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {boolean} [retHighest] Specify returning the highest qualified index.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     */\n    function baseSortedIndex(array, value, retHighest) {\n      var low = 0,\n          high = array == null ? low : array.length;\n\n      if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n        while (low < high) {\n          var mid = (low + high) >>> 1,\n              computed = array[mid];\n\n          if (computed !== null && !isSymbol(computed) &&\n              (retHighest ? (computed <= value) : (computed < value))) {\n            low = mid + 1;\n          } else {\n            high = mid;\n          }\n        }\n        return high;\n      }\n      return baseSortedIndexBy(array, value, identity, retHighest);\n    }\n\n    /**\n     * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n     * which invokes `iteratee` for `value` and each element of `array` to compute\n     * their sort ranking. The iteratee is invoked with one argument; (value).\n     *\n     * @private\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} iteratee The iteratee invoked per element.\n     * @param {boolean} [retHighest] Specify returning the highest qualified index.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     */\n    function baseSortedIndexBy(array, value, iteratee, retHighest) {\n      var low = 0,\n          high = array == null ? 0 : array.length;\n      if (high === 0) {\n        return 0;\n      }\n\n      value = iteratee(value);\n      var valIsNaN = value !== value,\n          valIsNull = value === null,\n          valIsSymbol = isSymbol(value),\n          valIsUndefined = value === undefined;\n\n      while (low < high) {\n        var mid = nativeFloor((low + high) / 2),\n            computed = iteratee(array[mid]),\n            othIsDefined = computed !== undefined,\n            othIsNull = computed === null,\n            othIsReflexive = computed === computed,\n            othIsSymbol = isSymbol(computed);\n\n        if (valIsNaN) {\n          var setLow = retHighest || othIsReflexive;\n        } else if (valIsUndefined) {\n          setLow = othIsReflexive && (retHighest || othIsDefined);\n        } else if (valIsNull) {\n          setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n        } else if (valIsSymbol) {\n          setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n        } else if (othIsNull || othIsSymbol) {\n          setLow = false;\n        } else {\n          setLow = retHighest ? (computed <= value) : (computed < value);\n        }\n        if (setLow) {\n          low = mid + 1;\n        } else {\n          high = mid;\n        }\n      }\n      return nativeMin(high, MAX_ARRAY_INDEX);\n    }\n\n    /**\n     * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n     * support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     */\n    function baseSortedUniq(array, iteratee) {\n      var index = -1,\n          length = array.length,\n          resIndex = 0,\n          result = [];\n\n      while (++index < length) {\n        var value = array[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        if (!index || !eq(computed, seen)) {\n          var seen = computed;\n          result[resIndex++] = value === 0 ? 0 : value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.toNumber` which doesn't ensure correct\n     * conversions of binary, hexadecimal, or octal string values.\n     *\n     * @private\n     * @param {*} value The value to process.\n     * @returns {number} Returns the number.\n     */\n    function baseToNumber(value) {\n      if (typeof value == 'number') {\n        return value;\n      }\n      if (isSymbol(value)) {\n        return NAN;\n      }\n      return +value;\n    }\n\n    /**\n     * The base implementation of `_.toString` which doesn't convert nullish\n     * values to empty strings.\n     *\n     * @private\n     * @param {*} value The value to process.\n     * @returns {string} Returns the string.\n     */\n    function baseToString(value) {\n      // Exit early for strings to avoid a performance hit in some environments.\n      if (typeof value == 'string') {\n        return value;\n      }\n      if (isArray(value)) {\n        // Recursively convert values (susceptible to call stack limits).\n        return arrayMap(value, baseToString) + '';\n      }\n      if (isSymbol(value)) {\n        return symbolToString ? symbolToString.call(value) : '';\n      }\n      var result = (value + '');\n      return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n    }\n\n    /**\n     * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     */\n    function baseUniq(array, iteratee, comparator) {\n      var index = -1,\n          includes = arrayIncludes,\n          length = array.length,\n          isCommon = true,\n          result = [],\n          seen = result;\n\n      if (comparator) {\n        isCommon = false;\n        includes = arrayIncludesWith;\n      }\n      else if (length >= LARGE_ARRAY_SIZE) {\n        var set = iteratee ? null : createSet(array);\n        if (set) {\n          return setToArray(set);\n        }\n        isCommon = false;\n        includes = cacheHas;\n        seen = new SetCache;\n      }\n      else {\n        seen = iteratee ? [] : result;\n      }\n      outer:\n      while (++index < length) {\n        var value = array[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        value = (comparator || value !== 0) ? value : 0;\n        if (isCommon && computed === computed) {\n          var seenIndex = seen.length;\n          while (seenIndex--) {\n            if (seen[seenIndex] === computed) {\n              continue outer;\n            }\n          }\n          if (iteratee) {\n            seen.push(computed);\n          }\n          result.push(value);\n        }\n        else if (!includes(seen, computed, comparator)) {\n          if (seen !== result) {\n            seen.push(computed);\n          }\n          result.push(value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.unset`.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The property path to unset.\n     * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n     */\n    function baseUnset(object, path) {\n      path = castPath(path, object);\n      object = parent(object, path);\n      return object == null || delete object[toKey(last(path))];\n    }\n\n    /**\n     * The base implementation of `_.update`.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to update.\n     * @param {Function} updater The function to produce the updated value.\n     * @param {Function} [customizer] The function to customize path creation.\n     * @returns {Object} Returns `object`.\n     */\n    function baseUpdate(object, path, updater, customizer) {\n      return baseSet(object, path, updater(baseGet(object, path)), customizer);\n    }\n\n    /**\n     * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n     * without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to query.\n     * @param {Function} predicate The function invoked per iteration.\n     * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Array} Returns the slice of `array`.\n     */\n    function baseWhile(array, predicate, isDrop, fromRight) {\n      var length = array.length,\n          index = fromRight ? length : -1;\n\n      while ((fromRight ? index-- : ++index < length) &&\n        predicate(array[index], index, array)) {}\n\n      return isDrop\n        ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n        : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n    }\n\n    /**\n     * The base implementation of `wrapperValue` which returns the result of\n     * performing a sequence of actions on the unwrapped `value`, where each\n     * successive action is supplied the return value of the previous.\n     *\n     * @private\n     * @param {*} value The unwrapped value.\n     * @param {Array} actions Actions to perform to resolve the unwrapped value.\n     * @returns {*} Returns the resolved value.\n     */\n    function baseWrapperValue(value, actions) {\n      var result = value;\n      if (result instanceof LazyWrapper) {\n        result = result.value();\n      }\n      return arrayReduce(actions, function(result, action) {\n        return action.func.apply(action.thisArg, arrayPush([result], action.args));\n      }, result);\n    }\n\n    /**\n     * The base implementation of methods like `_.xor`, without support for\n     * iteratee shorthands, that accepts an array of arrays to inspect.\n     *\n     * @private\n     * @param {Array} arrays The arrays to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of values.\n     */\n    function baseXor(arrays, iteratee, comparator) {\n      var length = arrays.length;\n      if (length < 2) {\n        return length ? baseUniq(arrays[0]) : [];\n      }\n      var index = -1,\n          result = Array(length);\n\n      while (++index < length) {\n        var array = arrays[index],\n            othIndex = -1;\n\n        while (++othIndex < length) {\n          if (othIndex != index) {\n            result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n          }\n        }\n      }\n      return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n    }\n\n    /**\n     * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n     *\n     * @private\n     * @param {Array} props The property identifiers.\n     * @param {Array} values The property values.\n     * @param {Function} assignFunc The function to assign values.\n     * @returns {Object} Returns the new object.\n     */\n    function baseZipObject(props, values, assignFunc) {\n      var index = -1,\n          length = props.length,\n          valsLength = values.length,\n          result = {};\n\n      while (++index < length) {\n        var value = index < valsLength ? values[index] : undefined;\n        assignFunc(result, props[index], value);\n      }\n      return result;\n    }\n\n    /**\n     * Casts `value` to an empty array if it's not an array like object.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @returns {Array|Object} Returns the cast array-like object.\n     */\n    function castArrayLikeObject(value) {\n      return isArrayLikeObject(value) ? value : [];\n    }\n\n    /**\n     * Casts `value` to `identity` if it's not a function.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @returns {Function} Returns cast function.\n     */\n    function castFunction(value) {\n      return typeof value == 'function' ? value : identity;\n    }\n\n    /**\n     * Casts `value` to a path array if it's not one.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @param {Object} [object] The object to query keys on.\n     * @returns {Array} Returns the cast property path array.\n     */\n    function castPath(value, object) {\n      if (isArray(value)) {\n        return value;\n      }\n      return isKey(value, object) ? [value] : stringToPath(toString(value));\n    }\n\n    /**\n     * A `baseRest` alias which can be replaced with `identity` by module\n     * replacement plugins.\n     *\n     * @private\n     * @type {Function}\n     * @param {Function} func The function to apply a rest parameter to.\n     * @returns {Function} Returns the new function.\n     */\n    var castRest = baseRest;\n\n    /**\n     * Casts `array` to a slice if it's needed.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {number} start The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns the cast slice.\n     */\n    function castSlice(array, start, end) {\n      var length = array.length;\n      end = end === undefined ? length : end;\n      return (!start && end >= length) ? array : baseSlice(array, start, end);\n    }\n\n    /**\n     * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n     *\n     * @private\n     * @param {number|Object} id The timer id or timeout object of the timer to clear.\n     */\n    var clearTimeout = ctxClearTimeout || function(id) {\n      return root.clearTimeout(id);\n    };\n\n    /**\n     * Creates a clone of  `buffer`.\n     *\n     * @private\n     * @param {Buffer} buffer The buffer to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Buffer} Returns the cloned buffer.\n     */\n    function cloneBuffer(buffer, isDeep) {\n      if (isDeep) {\n        return buffer.slice();\n      }\n      var length = buffer.length,\n          result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n      buffer.copy(result);\n      return result;\n    }\n\n    /**\n     * Creates a clone of `arrayBuffer`.\n     *\n     * @private\n     * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n     * @returns {ArrayBuffer} Returns the cloned array buffer.\n     */\n    function cloneArrayBuffer(arrayBuffer) {\n      var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n      new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n      return result;\n    }\n\n    /**\n     * Creates a clone of `dataView`.\n     *\n     * @private\n     * @param {Object} dataView The data view to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Object} Returns the cloned data view.\n     */\n    function cloneDataView(dataView, isDeep) {\n      var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n      return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n    }\n\n    /**\n     * Creates a clone of `regexp`.\n     *\n     * @private\n     * @param {Object} regexp The regexp to clone.\n     * @returns {Object} Returns the cloned regexp.\n     */\n    function cloneRegExp(regexp) {\n      var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n      result.lastIndex = regexp.lastIndex;\n      return result;\n    }\n\n    /**\n     * Creates a clone of the `symbol` object.\n     *\n     * @private\n     * @param {Object} symbol The symbol object to clone.\n     * @returns {Object} Returns the cloned symbol object.\n     */\n    function cloneSymbol(symbol) {\n      return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n    }\n\n    /**\n     * Creates a clone of `typedArray`.\n     *\n     * @private\n     * @param {Object} typedArray The typed array to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Object} Returns the cloned typed array.\n     */\n    function cloneTypedArray(typedArray, isDeep) {\n      var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n      return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n    }\n\n    /**\n     * Compares values to sort them in ascending order.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {number} Returns the sort order indicator for `value`.\n     */\n    function compareAscending(value, other) {\n      if (value !== other) {\n        var valIsDefined = value !== undefined,\n            valIsNull = value === null,\n            valIsReflexive = value === value,\n            valIsSymbol = isSymbol(value);\n\n        var othIsDefined = other !== undefined,\n            othIsNull = other === null,\n            othIsReflexive = other === other,\n            othIsSymbol = isSymbol(other);\n\n        if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n            (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n            (valIsNull && othIsDefined && othIsReflexive) ||\n            (!valIsDefined && othIsReflexive) ||\n            !valIsReflexive) {\n          return 1;\n        }\n        if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n            (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n            (othIsNull && valIsDefined && valIsReflexive) ||\n            (!othIsDefined && valIsReflexive) ||\n            !othIsReflexive) {\n          return -1;\n        }\n      }\n      return 0;\n    }\n\n    /**\n     * Used by `_.orderBy` to compare multiple properties of a value to another\n     * and stable sort them.\n     *\n     * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n     * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n     * of corresponding values.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {boolean[]|string[]} orders The order to sort by for each property.\n     * @returns {number} Returns the sort order indicator for `object`.\n     */\n    function compareMultiple(object, other, orders) {\n      var index = -1,\n          objCriteria = object.criteria,\n          othCriteria = other.criteria,\n          length = objCriteria.length,\n          ordersLength = orders.length;\n\n      while (++index < length) {\n        var result = compareAscending(objCriteria[index], othCriteria[index]);\n        if (result) {\n          if (index >= ordersLength) {\n            return result;\n          }\n          var order = orders[index];\n          return result * (order == 'desc' ? -1 : 1);\n        }\n      }\n      // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n      // that causes it, under certain circumstances, to provide the same value for\n      // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n      // for more details.\n      //\n      // This also ensures a stable sort in V8 and other engines.\n      // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n      return object.index - other.index;\n    }\n\n    /**\n     * Creates an array that is the composition of partially applied arguments,\n     * placeholders, and provided arguments into a single array of arguments.\n     *\n     * @private\n     * @param {Array} args The provided arguments.\n     * @param {Array} partials The arguments to prepend to those provided.\n     * @param {Array} holders The `partials` placeholder indexes.\n     * @params {boolean} [isCurried] Specify composing for a curried function.\n     * @returns {Array} Returns the new array of composed arguments.\n     */\n    function composeArgs(args, partials, holders, isCurried) {\n      var argsIndex = -1,\n          argsLength = args.length,\n          holdersLength = holders.length,\n          leftIndex = -1,\n          leftLength = partials.length,\n          rangeLength = nativeMax(argsLength - holdersLength, 0),\n          result = Array(leftLength + rangeLength),\n          isUncurried = !isCurried;\n\n      while (++leftIndex < leftLength) {\n        result[leftIndex] = partials[leftIndex];\n      }\n      while (++argsIndex < holdersLength) {\n        if (isUncurried || argsIndex < argsLength) {\n          result[holders[argsIndex]] = args[argsIndex];\n        }\n      }\n      while (rangeLength--) {\n        result[leftIndex++] = args[argsIndex++];\n      }\n      return result;\n    }\n\n    /**\n     * This function is like `composeArgs` except that the arguments composition\n     * is tailored for `_.partialRight`.\n     *\n     * @private\n     * @param {Array} args The provided arguments.\n     * @param {Array} partials The arguments to append to those provided.\n     * @param {Array} holders The `partials` placeholder indexes.\n     * @params {boolean} [isCurried] Specify composing for a curried function.\n     * @returns {Array} Returns the new array of composed arguments.\n     */\n    function composeArgsRight(args, partials, holders, isCurried) {\n      var argsIndex = -1,\n          argsLength = args.length,\n          holdersIndex = -1,\n          holdersLength = holders.length,\n          rightIndex = -1,\n          rightLength = partials.length,\n          rangeLength = nativeMax(argsLength - holdersLength, 0),\n          result = Array(rangeLength + rightLength),\n          isUncurried = !isCurried;\n\n      while (++argsIndex < rangeLength) {\n        result[argsIndex] = args[argsIndex];\n      }\n      var offset = argsIndex;\n      while (++rightIndex < rightLength) {\n        result[offset + rightIndex] = partials[rightIndex];\n      }\n      while (++holdersIndex < holdersLength) {\n        if (isUncurried || argsIndex < argsLength) {\n          result[offset + holders[holdersIndex]] = args[argsIndex++];\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Copies the values of `source` to `array`.\n     *\n     * @private\n     * @param {Array} source The array to copy values from.\n     * @param {Array} [array=[]] The array to copy values to.\n     * @returns {Array} Returns `array`.\n     */\n    function copyArray(source, array) {\n      var index = -1,\n          length = source.length;\n\n      array || (array = Array(length));\n      while (++index < length) {\n        array[index] = source[index];\n      }\n      return array;\n    }\n\n    /**\n     * Copies properties of `source` to `object`.\n     *\n     * @private\n     * @param {Object} source The object to copy properties from.\n     * @param {Array} props The property identifiers to copy.\n     * @param {Object} [object={}] The object to copy properties to.\n     * @param {Function} [customizer] The function to customize copied values.\n     * @returns {Object} Returns `object`.\n     */\n    function copyObject(source, props, object, customizer) {\n      var isNew = !object;\n      object || (object = {});\n\n      var index = -1,\n          length = props.length;\n\n      while (++index < length) {\n        var key = props[index];\n\n        var newValue = customizer\n          ? customizer(object[key], source[key], key, object, source)\n          : undefined;\n\n        if (newValue === undefined) {\n          newValue = source[key];\n        }\n        if (isNew) {\n          baseAssignValue(object, key, newValue);\n        } else {\n          assignValue(object, key, newValue);\n        }\n      }\n      return object;\n    }\n\n    /**\n     * Copies own symbols of `source` to `object`.\n     *\n     * @private\n     * @param {Object} source The object to copy symbols from.\n     * @param {Object} [object={}] The object to copy symbols to.\n     * @returns {Object} Returns `object`.\n     */\n    function copySymbols(source, object) {\n      return copyObject(source, getSymbols(source), object);\n    }\n\n    /**\n     * Copies own and inherited symbols of `source` to `object`.\n     *\n     * @private\n     * @param {Object} source The object to copy symbols from.\n     * @param {Object} [object={}] The object to copy symbols to.\n     * @returns {Object} Returns `object`.\n     */\n    function copySymbolsIn(source, object) {\n      return copyObject(source, getSymbolsIn(source), object);\n    }\n\n    /**\n     * Creates a function like `_.groupBy`.\n     *\n     * @private\n     * @param {Function} setter The function to set accumulator values.\n     * @param {Function} [initializer] The accumulator object initializer.\n     * @returns {Function} Returns the new aggregator function.\n     */\n    function createAggregator(setter, initializer) {\n      return function(collection, iteratee) {\n        var func = isArray(collection) ? arrayAggregator : baseAggregator,\n            accumulator = initializer ? initializer() : {};\n\n        return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n      };\n    }\n\n    /**\n     * Creates a function like `_.assign`.\n     *\n     * @private\n     * @param {Function} assigner The function to assign values.\n     * @returns {Function} Returns the new assigner function.\n     */\n    function createAssigner(assigner) {\n      return baseRest(function(object, sources) {\n        var index = -1,\n            length = sources.length,\n            customizer = length > 1 ? sources[length - 1] : undefined,\n            guard = length > 2 ? sources[2] : undefined;\n\n        customizer = (assigner.length > 3 && typeof customizer == 'function')\n          ? (length--, customizer)\n          : undefined;\n\n        if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n          customizer = length < 3 ? undefined : customizer;\n          length = 1;\n        }\n        object = Object(object);\n        while (++index < length) {\n          var source = sources[index];\n          if (source) {\n            assigner(object, source, index, customizer);\n          }\n        }\n        return object;\n      });\n    }\n\n    /**\n     * Creates a `baseEach` or `baseEachRight` function.\n     *\n     * @private\n     * @param {Function} eachFunc The function to iterate over a collection.\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new base function.\n     */\n    function createBaseEach(eachFunc, fromRight) {\n      return function(collection, iteratee) {\n        if (collection == null) {\n          return collection;\n        }\n        if (!isArrayLike(collection)) {\n          return eachFunc(collection, iteratee);\n        }\n        var length = collection.length,\n            index = fromRight ? length : -1,\n            iterable = Object(collection);\n\n        while ((fromRight ? index-- : ++index < length)) {\n          if (iteratee(iterable[index], index, iterable) === false) {\n            break;\n          }\n        }\n        return collection;\n      };\n    }\n\n    /**\n     * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n     *\n     * @private\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new base function.\n     */\n    function createBaseFor(fromRight) {\n      return function(object, iteratee, keysFunc) {\n        var index = -1,\n            iterable = Object(object),\n            props = keysFunc(object),\n            length = props.length;\n\n        while (length--) {\n          var key = props[fromRight ? length : ++index];\n          if (iteratee(iterable[key], key, iterable) === false) {\n            break;\n          }\n        }\n        return object;\n      };\n    }\n\n    /**\n     * Creates a function that wraps `func` to invoke it with the optional `this`\n     * binding of `thisArg`.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createBind(func, bitmask, thisArg) {\n      var isBind = bitmask & WRAP_BIND_FLAG,\n          Ctor = createCtor(func);\n\n      function wrapper() {\n        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n        return fn.apply(isBind ? thisArg : this, arguments);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a function like `_.lowerFirst`.\n     *\n     * @private\n     * @param {string} methodName The name of the `String` case method to use.\n     * @returns {Function} Returns the new case function.\n     */\n    function createCaseFirst(methodName) {\n      return function(string) {\n        string = toString(string);\n\n        var strSymbols = hasUnicode(string)\n          ? stringToArray(string)\n          : undefined;\n\n        var chr = strSymbols\n          ? strSymbols[0]\n          : string.charAt(0);\n\n        var trailing = strSymbols\n          ? castSlice(strSymbols, 1).join('')\n          : string.slice(1);\n\n        return chr[methodName]() + trailing;\n      };\n    }\n\n    /**\n     * Creates a function like `_.camelCase`.\n     *\n     * @private\n     * @param {Function} callback The function to combine each word.\n     * @returns {Function} Returns the new compounder function.\n     */\n    function createCompounder(callback) {\n      return function(string) {\n        return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n      };\n    }\n\n    /**\n     * Creates a function that produces an instance of `Ctor` regardless of\n     * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n     *\n     * @private\n     * @param {Function} Ctor The constructor to wrap.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createCtor(Ctor) {\n      return function() {\n        // Use a `switch` statement to work with class constructors. See\n        // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n        // for more details.\n        var args = arguments;\n        switch (args.length) {\n          case 0: return new Ctor;\n          case 1: return new Ctor(args[0]);\n          case 2: return new Ctor(args[0], args[1]);\n          case 3: return new Ctor(args[0], args[1], args[2]);\n          case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n          case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n          case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n          case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n        }\n        var thisBinding = baseCreate(Ctor.prototype),\n            result = Ctor.apply(thisBinding, args);\n\n        // Mimic the constructor's `return` behavior.\n        // See https://es5.github.io/#x13.2.2 for more details.\n        return isObject(result) ? result : thisBinding;\n      };\n    }\n\n    /**\n     * Creates a function that wraps `func` to enable currying.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {number} arity The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createCurry(func, bitmask, arity) {\n      var Ctor = createCtor(func);\n\n      function wrapper() {\n        var length = arguments.length,\n            args = Array(length),\n            index = length,\n            placeholder = getHolder(wrapper);\n\n        while (index--) {\n          args[index] = arguments[index];\n        }\n        var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n          ? []\n          : replaceHolders(args, placeholder);\n\n        length -= holders.length;\n        if (length < arity) {\n          return createRecurry(\n            func, bitmask, createHybrid, wrapper.placeholder, undefined,\n            args, holders, undefined, undefined, arity - length);\n        }\n        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n        return apply(fn, this, args);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a `_.find` or `_.findLast` function.\n     *\n     * @private\n     * @param {Function} findIndexFunc The function to find the collection index.\n     * @returns {Function} Returns the new find function.\n     */\n    function createFind(findIndexFunc) {\n      return function(collection, predicate, fromIndex) {\n        var iterable = Object(collection);\n        if (!isArrayLike(collection)) {\n          var iteratee = getIteratee(predicate, 3);\n          collection = keys(collection);\n          predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n        }\n        var index = findIndexFunc(collection, predicate, fromIndex);\n        return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n      };\n    }\n\n    /**\n     * Creates a `_.flow` or `_.flowRight` function.\n     *\n     * @private\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new flow function.\n     */\n    function createFlow(fromRight) {\n      return flatRest(function(funcs) {\n        var length = funcs.length,\n            index = length,\n            prereq = LodashWrapper.prototype.thru;\n\n        if (fromRight) {\n          funcs.reverse();\n        }\n        while (index--) {\n          var func = funcs[index];\n          if (typeof func != 'function') {\n            throw new TypeError(FUNC_ERROR_TEXT);\n          }\n          if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n            var wrapper = new LodashWrapper([], true);\n          }\n        }\n        index = wrapper ? index : length;\n        while (++index < length) {\n          func = funcs[index];\n\n          var funcName = getFuncName(func),\n              data = funcName == 'wrapper' ? getData(func) : undefined;\n\n          if (data && isLaziable(data[0]) &&\n                data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n                !data[4].length && data[9] == 1\n              ) {\n            wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n          } else {\n            wrapper = (func.length == 1 && isLaziable(func))\n              ? wrapper[funcName]()\n              : wrapper.thru(func);\n          }\n        }\n        return function() {\n          var args = arguments,\n              value = args[0];\n\n          if (wrapper && args.length == 1 && isArray(value)) {\n            return wrapper.plant(value).value();\n          }\n          var index = 0,\n              result = length ? funcs[index].apply(this, args) : value;\n\n          while (++index < length) {\n            result = funcs[index].call(this, result);\n          }\n          return result;\n        };\n      });\n    }\n\n    /**\n     * Creates a function that wraps `func` to invoke it with optional `this`\n     * binding of `thisArg`, partial application, and currying.\n     *\n     * @private\n     * @param {Function|string} func The function or method name to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to prepend to those provided to\n     *  the new function.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [partialsRight] The arguments to append to those provided\n     *  to the new function.\n     * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n      var isAry = bitmask & WRAP_ARY_FLAG,\n          isBind = bitmask & WRAP_BIND_FLAG,\n          isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n          isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n          isFlip = bitmask & WRAP_FLIP_FLAG,\n          Ctor = isBindKey ? undefined : createCtor(func);\n\n      function wrapper() {\n        var length = arguments.length,\n            args = Array(length),\n            index = length;\n\n        while (index--) {\n          args[index] = arguments[index];\n        }\n        if (isCurried) {\n          var placeholder = getHolder(wrapper),\n              holdersCount = countHolders(args, placeholder);\n        }\n        if (partials) {\n          args = composeArgs(args, partials, holders, isCurried);\n        }\n        if (partialsRight) {\n          args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n        }\n        length -= holdersCount;\n        if (isCurried && length < arity) {\n          var newHolders = replaceHolders(args, placeholder);\n          return createRecurry(\n            func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n            args, newHolders, argPos, ary, arity - length\n          );\n        }\n        var thisBinding = isBind ? thisArg : this,\n            fn = isBindKey ? thisBinding[func] : func;\n\n        length = args.length;\n        if (argPos) {\n          args = reorder(args, argPos);\n        } else if (isFlip && length > 1) {\n          args.reverse();\n        }\n        if (isAry && ary < length) {\n          args.length = ary;\n        }\n        if (this && this !== root && this instanceof wrapper) {\n          fn = Ctor || createCtor(fn);\n        }\n        return fn.apply(thisBinding, args);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a function like `_.invertBy`.\n     *\n     * @private\n     * @param {Function} setter The function to set accumulator values.\n     * @param {Function} toIteratee The function to resolve iteratees.\n     * @returns {Function} Returns the new inverter function.\n     */\n    function createInverter(setter, toIteratee) {\n      return function(object, iteratee) {\n        return baseInverter(object, setter, toIteratee(iteratee), {});\n      };\n    }\n\n    /**\n     * Creates a function that performs a mathematical operation on two values.\n     *\n     * @private\n     * @param {Function} operator The function to perform the operation.\n     * @param {number} [defaultValue] The value used for `undefined` arguments.\n     * @returns {Function} Returns the new mathematical operation function.\n     */\n    function createMathOperation(operator, defaultValue) {\n      return function(value, other) {\n        var result;\n        if (value === undefined && other === undefined) {\n          return defaultValue;\n        }\n        if (value !== undefined) {\n          result = value;\n        }\n        if (other !== undefined) {\n          if (result === undefined) {\n            return other;\n          }\n          if (typeof value == 'string' || typeof other == 'string') {\n            value = baseToString(value);\n            other = baseToString(other);\n          } else {\n            value = baseToNumber(value);\n            other = baseToNumber(other);\n          }\n          result = operator(value, other);\n        }\n        return result;\n      };\n    }\n\n    /**\n     * Creates a function like `_.over`.\n     *\n     * @private\n     * @param {Function} arrayFunc The function to iterate over iteratees.\n     * @returns {Function} Returns the new over function.\n     */\n    function createOver(arrayFunc) {\n      return flatRest(function(iteratees) {\n        iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n        return baseRest(function(args) {\n          var thisArg = this;\n          return arrayFunc(iteratees, function(iteratee) {\n            return apply(iteratee, thisArg, args);\n          });\n        });\n      });\n    }\n\n    /**\n     * Creates the padding for `string` based on `length`. The `chars` string\n     * is truncated if the number of characters exceeds `length`.\n     *\n     * @private\n     * @param {number} length The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padding for `string`.\n     */\n    function createPadding(length, chars) {\n      chars = chars === undefined ? ' ' : baseToString(chars);\n\n      var charsLength = chars.length;\n      if (charsLength < 2) {\n        return charsLength ? baseRepeat(chars, length) : chars;\n      }\n      var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n      return hasUnicode(chars)\n        ? castSlice(stringToArray(result), 0, length).join('')\n        : result.slice(0, length);\n    }\n\n    /**\n     * Creates a function that wraps `func` to invoke it with the `this` binding\n     * of `thisArg` and `partials` prepended to the arguments it receives.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} thisArg The `this` binding of `func`.\n     * @param {Array} partials The arguments to prepend to those provided to\n     *  the new function.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createPartial(func, bitmask, thisArg, partials) {\n      var isBind = bitmask & WRAP_BIND_FLAG,\n          Ctor = createCtor(func);\n\n      function wrapper() {\n        var argsIndex = -1,\n            argsLength = arguments.length,\n            leftIndex = -1,\n            leftLength = partials.length,\n            args = Array(leftLength + argsLength),\n            fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n        while (++leftIndex < leftLength) {\n          args[leftIndex] = partials[leftIndex];\n        }\n        while (argsLength--) {\n          args[leftIndex++] = arguments[++argsIndex];\n        }\n        return apply(fn, isBind ? thisArg : this, args);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a `_.range` or `_.rangeRight` function.\n     *\n     * @private\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new range function.\n     */\n    function createRange(fromRight) {\n      return function(start, end, step) {\n        if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n          end = step = undefined;\n        }\n        // Ensure the sign of `-0` is preserved.\n        start = toFinite(start);\n        if (end === undefined) {\n          end = start;\n          start = 0;\n        } else {\n          end = toFinite(end);\n        }\n        step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n        return baseRange(start, end, step, fromRight);\n      };\n    }\n\n    /**\n     * Creates a function that performs a relational operation on two values.\n     *\n     * @private\n     * @param {Function} operator The function to perform the operation.\n     * @returns {Function} Returns the new relational operation function.\n     */\n    function createRelationalOperation(operator) {\n      return function(value, other) {\n        if (!(typeof value == 'string' && typeof other == 'string')) {\n          value = toNumber(value);\n          other = toNumber(other);\n        }\n        return operator(value, other);\n      };\n    }\n\n    /**\n     * Creates a function that wraps `func` to continue currying.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {Function} wrapFunc The function to create the `func` wrapper.\n     * @param {*} placeholder The placeholder value.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to prepend to those provided to\n     *  the new function.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n      var isCurry = bitmask & WRAP_CURRY_FLAG,\n          newHolders = isCurry ? holders : undefined,\n          newHoldersRight = isCurry ? undefined : holders,\n          newPartials = isCurry ? partials : undefined,\n          newPartialsRight = isCurry ? undefined : partials;\n\n      bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n      bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n      if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n        bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n      }\n      var newData = [\n        func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n        newHoldersRight, argPos, ary, arity\n      ];\n\n      var result = wrapFunc.apply(undefined, newData);\n      if (isLaziable(func)) {\n        setData(result, newData);\n      }\n      result.placeholder = placeholder;\n      return setWrapToString(result, func, bitmask);\n    }\n\n    /**\n     * Creates a function like `_.round`.\n     *\n     * @private\n     * @param {string} methodName The name of the `Math` method to use when rounding.\n     * @returns {Function} Returns the new round function.\n     */\n    function createRound(methodName) {\n      var func = Math[methodName];\n      return function(number, precision) {\n        number = toNumber(number);\n        precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n        if (precision && nativeIsFinite(number)) {\n          // Shift with exponential notation to avoid floating-point issues.\n          // See [MDN](https://mdn.io/round#Examples) for more details.\n          var pair = (toString(number) + 'e').split('e'),\n              value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n          pair = (toString(value) + 'e').split('e');\n          return +(pair[0] + 'e' + (+pair[1] - precision));\n        }\n        return func(number);\n      };\n    }\n\n    /**\n     * Creates a set object of `values`.\n     *\n     * @private\n     * @param {Array} values The values to add to the set.\n     * @returns {Object} Returns the new set.\n     */\n    var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n      return new Set(values);\n    };\n\n    /**\n     * Creates a `_.toPairs` or `_.toPairsIn` function.\n     *\n     * @private\n     * @param {Function} keysFunc The function to get the keys of a given object.\n     * @returns {Function} Returns the new pairs function.\n     */\n    function createToPairs(keysFunc) {\n      return function(object) {\n        var tag = getTag(object);\n        if (tag == mapTag) {\n          return mapToArray(object);\n        }\n        if (tag == setTag) {\n          return setToPairs(object);\n        }\n        return baseToPairs(object, keysFunc(object));\n      };\n    }\n\n    /**\n     * Creates a function that either curries or invokes `func` with optional\n     * `this` binding and partially applied arguments.\n     *\n     * @private\n     * @param {Function|string} func The function or method name to wrap.\n     * @param {number} bitmask The bitmask flags.\n     *    1 - `_.bind`\n     *    2 - `_.bindKey`\n     *    4 - `_.curry` or `_.curryRight` of a bound function\n     *    8 - `_.curry`\n     *   16 - `_.curryRight`\n     *   32 - `_.partial`\n     *   64 - `_.partialRight`\n     *  128 - `_.rearg`\n     *  256 - `_.ary`\n     *  512 - `_.flip`\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to be partially applied.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n      var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n      if (!isBindKey && typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      var length = partials ? partials.length : 0;\n      if (!length) {\n        bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n        partials = holders = undefined;\n      }\n      ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n      arity = arity === undefined ? arity : toInteger(arity);\n      length -= holders ? holders.length : 0;\n\n      if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n        var partialsRight = partials,\n            holdersRight = holders;\n\n        partials = holders = undefined;\n      }\n      var data = isBindKey ? undefined : getData(func);\n\n      var newData = [\n        func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n        argPos, ary, arity\n      ];\n\n      if (data) {\n        mergeData(newData, data);\n      }\n      func = newData[0];\n      bitmask = newData[1];\n      thisArg = newData[2];\n      partials = newData[3];\n      holders = newData[4];\n      arity = newData[9] = newData[9] === undefined\n        ? (isBindKey ? 0 : func.length)\n        : nativeMax(newData[9] - length, 0);\n\n      if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n        bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n      }\n      if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n        var result = createBind(func, bitmask, thisArg);\n      } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n        result = createCurry(func, bitmask, arity);\n      } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n        result = createPartial(func, bitmask, thisArg, partials);\n      } else {\n        result = createHybrid.apply(undefined, newData);\n      }\n      var setter = data ? baseSetData : setData;\n      return setWrapToString(setter(result, newData), func, bitmask);\n    }\n\n    /**\n     * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n     * of source objects to the destination object for all destination properties\n     * that resolve to `undefined`.\n     *\n     * @private\n     * @param {*} objValue The destination value.\n     * @param {*} srcValue The source value.\n     * @param {string} key The key of the property to assign.\n     * @param {Object} object The parent object of `objValue`.\n     * @returns {*} Returns the value to assign.\n     */\n    function customDefaultsAssignIn(objValue, srcValue, key, object) {\n      if (objValue === undefined ||\n          (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n        return srcValue;\n      }\n      return objValue;\n    }\n\n    /**\n     * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n     * objects into destination objects that are passed thru.\n     *\n     * @private\n     * @param {*} objValue The destination value.\n     * @param {*} srcValue The source value.\n     * @param {string} key The key of the property to merge.\n     * @param {Object} object The parent object of `objValue`.\n     * @param {Object} source The parent object of `srcValue`.\n     * @param {Object} [stack] Tracks traversed source values and their merged\n     *  counterparts.\n     * @returns {*} Returns the value to assign.\n     */\n    function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n      if (isObject(objValue) && isObject(srcValue)) {\n        // Recursively merge objects and arrays (susceptible to call stack limits).\n        stack.set(srcValue, objValue);\n        baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n        stack['delete'](srcValue);\n      }\n      return objValue;\n    }\n\n    /**\n     * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n     * objects.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @param {string} key The key of the property to inspect.\n     * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n     */\n    function customOmitClone(value) {\n      return isPlainObject(value) ? undefined : value;\n    }\n\n    /**\n     * A specialized version of `baseIsEqualDeep` for arrays with support for\n     * partial deep comparisons.\n     *\n     * @private\n     * @param {Array} array The array to compare.\n     * @param {Array} other The other array to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} stack Tracks traversed `array` and `other` objects.\n     * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n     */\n    function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n          arrLength = array.length,\n          othLength = other.length;\n\n      if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n        return false;\n      }\n      // Check that cyclic values are equal.\n      var arrStacked = stack.get(array);\n      var othStacked = stack.get(other);\n      if (arrStacked && othStacked) {\n        return arrStacked == other && othStacked == array;\n      }\n      var index = -1,\n          result = true,\n          seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n      stack.set(array, other);\n      stack.set(other, array);\n\n      // Ignore non-index properties.\n      while (++index < arrLength) {\n        var arrValue = array[index],\n            othValue = other[index];\n\n        if (customizer) {\n          var compared = isPartial\n            ? customizer(othValue, arrValue, index, other, array, stack)\n            : customizer(arrValue, othValue, index, array, other, stack);\n        }\n        if (compared !== undefined) {\n          if (compared) {\n            continue;\n          }\n          result = false;\n          break;\n        }\n        // Recursively compare arrays (susceptible to call stack limits).\n        if (seen) {\n          if (!arraySome(other, function(othValue, othIndex) {\n                if (!cacheHas(seen, othIndex) &&\n                    (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n                  return seen.push(othIndex);\n                }\n              })) {\n            result = false;\n            break;\n          }\n        } else if (!(\n              arrValue === othValue ||\n                equalFunc(arrValue, othValue, bitmask, customizer, stack)\n            )) {\n          result = false;\n          break;\n        }\n      }\n      stack['delete'](array);\n      stack['delete'](other);\n      return result;\n    }\n\n    /**\n     * A specialized version of `baseIsEqualDeep` for comparing objects of\n     * the same `toStringTag`.\n     *\n     * **Note:** This function only supports comparing values with tags of\n     * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {string} tag The `toStringTag` of the objects to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} stack Tracks traversed `object` and `other` objects.\n     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n     */\n    function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n      switch (tag) {\n        case dataViewTag:\n          if ((object.byteLength != other.byteLength) ||\n              (object.byteOffset != other.byteOffset)) {\n            return false;\n          }\n          object = object.buffer;\n          other = other.buffer;\n\n        case arrayBufferTag:\n          if ((object.byteLength != other.byteLength) ||\n              !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n            return false;\n          }\n          return true;\n\n        case boolTag:\n        case dateTag:\n        case numberTag:\n          // Coerce booleans to `1` or `0` and dates to milliseconds.\n          // Invalid dates are coerced to `NaN`.\n          return eq(+object, +other);\n\n        case errorTag:\n          return object.name == other.name && object.message == other.message;\n\n        case regexpTag:\n        case stringTag:\n          // Coerce regexes to strings and treat strings, primitives and objects,\n          // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n          // for more details.\n          return object == (other + '');\n\n        case mapTag:\n          var convert = mapToArray;\n\n        case setTag:\n          var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n          convert || (convert = setToArray);\n\n          if (object.size != other.size && !isPartial) {\n            return false;\n          }\n          // Assume cyclic values are equal.\n          var stacked = stack.get(object);\n          if (stacked) {\n            return stacked == other;\n          }\n          bitmask |= COMPARE_UNORDERED_FLAG;\n\n          // Recursively compare objects (susceptible to call stack limits).\n          stack.set(object, other);\n          var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n          stack['delete'](object);\n          return result;\n\n        case symbolTag:\n          if (symbolValueOf) {\n            return symbolValueOf.call(object) == symbolValueOf.call(other);\n          }\n      }\n      return false;\n    }\n\n    /**\n     * A specialized version of `baseIsEqualDeep` for objects with support for\n     * partial deep comparisons.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} stack Tracks traversed `object` and `other` objects.\n     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n     */\n    function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n          objProps = getAllKeys(object),\n          objLength = objProps.length,\n          othProps = getAllKeys(other),\n          othLength = othProps.length;\n\n      if (objLength != othLength && !isPartial) {\n        return false;\n      }\n      var index = objLength;\n      while (index--) {\n        var key = objProps[index];\n        if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n          return false;\n        }\n      }\n      // Check that cyclic values are equal.\n      var objStacked = stack.get(object);\n      var othStacked = stack.get(other);\n      if (objStacked && othStacked) {\n        return objStacked == other && othStacked == object;\n      }\n      var result = true;\n      stack.set(object, other);\n      stack.set(other, object);\n\n      var skipCtor = isPartial;\n      while (++index < objLength) {\n        key = objProps[index];\n        var objValue = object[key],\n            othValue = other[key];\n\n        if (customizer) {\n          var compared = isPartial\n            ? customizer(othValue, objValue, key, other, object, stack)\n            : customizer(objValue, othValue, key, object, other, stack);\n        }\n        // Recursively compare objects (susceptible to call stack limits).\n        if (!(compared === undefined\n              ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n              : compared\n            )) {\n          result = false;\n          break;\n        }\n        skipCtor || (skipCtor = key == 'constructor');\n      }\n      if (result && !skipCtor) {\n        var objCtor = object.constructor,\n            othCtor = other.constructor;\n\n        // Non `Object` object instances with different constructors are not equal.\n        if (objCtor != othCtor &&\n            ('constructor' in object && 'constructor' in other) &&\n            !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n              typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n          result = false;\n        }\n      }\n      stack['delete'](object);\n      stack['delete'](other);\n      return result;\n    }\n\n    /**\n     * A specialized version of `baseRest` which flattens the rest array.\n     *\n     * @private\n     * @param {Function} func The function to apply a rest parameter to.\n     * @returns {Function} Returns the new function.\n     */\n    function flatRest(func) {\n      return setToString(overRest(func, undefined, flatten), func + '');\n    }\n\n    /**\n     * Creates an array of own enumerable property names and symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names and symbols.\n     */\n    function getAllKeys(object) {\n      return baseGetAllKeys(object, keys, getSymbols);\n    }\n\n    /**\n     * Creates an array of own and inherited enumerable property names and\n     * symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names and symbols.\n     */\n    function getAllKeysIn(object) {\n      return baseGetAllKeys(object, keysIn, getSymbolsIn);\n    }\n\n    /**\n     * Gets metadata for `func`.\n     *\n     * @private\n     * @param {Function} func The function to query.\n     * @returns {*} Returns the metadata for `func`.\n     */\n    var getData = !metaMap ? noop : function(func) {\n      return metaMap.get(func);\n    };\n\n    /**\n     * Gets the name of `func`.\n     *\n     * @private\n     * @param {Function} func The function to query.\n     * @returns {string} Returns the function name.\n     */\n    function getFuncName(func) {\n      var result = (func.name + ''),\n          array = realNames[result],\n          length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n      while (length--) {\n        var data = array[length],\n            otherFunc = data.func;\n        if (otherFunc == null || otherFunc == func) {\n          return data.name;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Gets the argument placeholder value for `func`.\n     *\n     * @private\n     * @param {Function} func The function to inspect.\n     * @returns {*} Returns the placeholder value.\n     */\n    function getHolder(func) {\n      var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n      return object.placeholder;\n    }\n\n    /**\n     * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n     * this function returns the custom method, otherwise it returns `baseIteratee`.\n     * If arguments are provided, the chosen function is invoked with them and\n     * its result is returned.\n     *\n     * @private\n     * @param {*} [value] The value to convert to an iteratee.\n     * @param {number} [arity] The arity of the created iteratee.\n     * @returns {Function} Returns the chosen function or its result.\n     */\n    function getIteratee() {\n      var result = lodash.iteratee || iteratee;\n      result = result === iteratee ? baseIteratee : result;\n      return arguments.length ? result(arguments[0], arguments[1]) : result;\n    }\n\n    /**\n     * Gets the data for `map`.\n     *\n     * @private\n     * @param {Object} map The map to query.\n     * @param {string} key The reference key.\n     * @returns {*} Returns the map data.\n     */\n    function getMapData(map, key) {\n      var data = map.__data__;\n      return isKeyable(key)\n        ? data[typeof key == 'string' ? 'string' : 'hash']\n        : data.map;\n    }\n\n    /**\n     * Gets the property names, values, and compare flags of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the match data of `object`.\n     */\n    function getMatchData(object) {\n      var result = keys(object),\n          length = result.length;\n\n      while (length--) {\n        var key = result[length],\n            value = object[key];\n\n        result[length] = [key, value, isStrictComparable(value)];\n      }\n      return result;\n    }\n\n    /**\n     * Gets the native function at `key` of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {string} key The key of the method to get.\n     * @returns {*} Returns the function if it's native, else `undefined`.\n     */\n    function getNative(object, key) {\n      var value = getValue(object, key);\n      return baseIsNative(value) ? value : undefined;\n    }\n\n    /**\n     * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @returns {string} Returns the raw `toStringTag`.\n     */\n    function getRawTag(value) {\n      var isOwn = hasOwnProperty.call(value, symToStringTag),\n          tag = value[symToStringTag];\n\n      try {\n        value[symToStringTag] = undefined;\n        var unmasked = true;\n      } catch (e) {}\n\n      var result = nativeObjectToString.call(value);\n      if (unmasked) {\n        if (isOwn) {\n          value[symToStringTag] = tag;\n        } else {\n          delete value[symToStringTag];\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Creates an array of the own enumerable symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of symbols.\n     */\n    var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n      if (object == null) {\n        return [];\n      }\n      object = Object(object);\n      return arrayFilter(nativeGetSymbols(object), function(symbol) {\n        return propertyIsEnumerable.call(object, symbol);\n      });\n    };\n\n    /**\n     * Creates an array of the own and inherited enumerable symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of symbols.\n     */\n    var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n      var result = [];\n      while (object) {\n        arrayPush(result, getSymbols(object));\n        object = getPrototype(object);\n      }\n      return result;\n    };\n\n    /**\n     * Gets the `toStringTag` of `value`.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @returns {string} Returns the `toStringTag`.\n     */\n    var getTag = baseGetTag;\n\n    // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n    if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n        (Map && getTag(new Map) != mapTag) ||\n        (Promise && getTag(Promise.resolve()) != promiseTag) ||\n        (Set && getTag(new Set) != setTag) ||\n        (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n      getTag = function(value) {\n        var result = baseGetTag(value),\n            Ctor = result == objectTag ? value.constructor : undefined,\n            ctorString = Ctor ? toSource(Ctor) : '';\n\n        if (ctorString) {\n          switch (ctorString) {\n            case dataViewCtorString: return dataViewTag;\n            case mapCtorString: return mapTag;\n            case promiseCtorString: return promiseTag;\n            case setCtorString: return setTag;\n            case weakMapCtorString: return weakMapTag;\n          }\n        }\n        return result;\n      };\n    }\n\n    /**\n     * Gets the view, applying any `transforms` to the `start` and `end` positions.\n     *\n     * @private\n     * @param {number} start The start of the view.\n     * @param {number} end The end of the view.\n     * @param {Array} transforms The transformations to apply to the view.\n     * @returns {Object} Returns an object containing the `start` and `end`\n     *  positions of the view.\n     */\n    function getView(start, end, transforms) {\n      var index = -1,\n          length = transforms.length;\n\n      while (++index < length) {\n        var data = transforms[index],\n            size = data.size;\n\n        switch (data.type) {\n          case 'drop':      start += size; break;\n          case 'dropRight': end -= size; break;\n          case 'take':      end = nativeMin(end, start + size); break;\n          case 'takeRight': start = nativeMax(start, end - size); break;\n        }\n      }\n      return { 'start': start, 'end': end };\n    }\n\n    /**\n     * Extracts wrapper details from the `source` body comment.\n     *\n     * @private\n     * @param {string} source The source to inspect.\n     * @returns {Array} Returns the wrapper details.\n     */\n    function getWrapDetails(source) {\n      var match = source.match(reWrapDetails);\n      return match ? match[1].split(reSplitDetails) : [];\n    }\n\n    /**\n     * Checks if `path` exists on `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path to check.\n     * @param {Function} hasFunc The function to check properties.\n     * @returns {boolean} Returns `true` if `path` exists, else `false`.\n     */\n    function hasPath(object, path, hasFunc) {\n      path = castPath(path, object);\n\n      var index = -1,\n          length = path.length,\n          result = false;\n\n      while (++index < length) {\n        var key = toKey(path[index]);\n        if (!(result = object != null && hasFunc(object, key))) {\n          break;\n        }\n        object = object[key];\n      }\n      if (result || ++index != length) {\n        return result;\n      }\n      length = object == null ? 0 : object.length;\n      return !!length && isLength(length) && isIndex(key, length) &&\n        (isArray(object) || isArguments(object));\n    }\n\n    /**\n     * Initializes an array clone.\n     *\n     * @private\n     * @param {Array} array The array to clone.\n     * @returns {Array} Returns the initialized clone.\n     */\n    function initCloneArray(array) {\n      var length = array.length,\n          result = new array.constructor(length);\n\n      // Add properties assigned by `RegExp#exec`.\n      if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n        result.index = array.index;\n        result.input = array.input;\n      }\n      return result;\n    }\n\n    /**\n     * Initializes an object clone.\n     *\n     * @private\n     * @param {Object} object The object to clone.\n     * @returns {Object} Returns the initialized clone.\n     */\n    function initCloneObject(object) {\n      return (typeof object.constructor == 'function' && !isPrototype(object))\n        ? baseCreate(getPrototype(object))\n        : {};\n    }\n\n    /**\n     * Initializes an object clone based on its `toStringTag`.\n     *\n     * **Note:** This function only supports cloning values with tags of\n     * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n     *\n     * @private\n     * @param {Object} object The object to clone.\n     * @param {string} tag The `toStringTag` of the object to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Object} Returns the initialized clone.\n     */\n    function initCloneByTag(object, tag, isDeep) {\n      var Ctor = object.constructor;\n      switch (tag) {\n        case arrayBufferTag:\n          return cloneArrayBuffer(object);\n\n        case boolTag:\n        case dateTag:\n          return new Ctor(+object);\n\n        case dataViewTag:\n          return cloneDataView(object, isDeep);\n\n        case float32Tag: case float64Tag:\n        case int8Tag: case int16Tag: case int32Tag:\n        case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n          return cloneTypedArray(object, isDeep);\n\n        case mapTag:\n          return new Ctor;\n\n        case numberTag:\n        case stringTag:\n          return new Ctor(object);\n\n        case regexpTag:\n          return cloneRegExp(object);\n\n        case setTag:\n          return new Ctor;\n\n        case symbolTag:\n          return cloneSymbol(object);\n      }\n    }\n\n    /**\n     * Inserts wrapper `details` in a comment at the top of the `source` body.\n     *\n     * @private\n     * @param {string} source The source to modify.\n     * @returns {Array} details The details to insert.\n     * @returns {string} Returns the modified source.\n     */\n    function insertWrapDetails(source, details) {\n      var length = details.length;\n      if (!length) {\n        return source;\n      }\n      var lastIndex = length - 1;\n      details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n      details = details.join(length > 2 ? ', ' : ' ');\n      return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n    }\n\n    /**\n     * Checks if `value` is a flattenable `arguments` object or array.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n     */\n    function isFlattenable(value) {\n      return isArray(value) || isArguments(value) ||\n        !!(spreadableSymbol && value && value[spreadableSymbol]);\n    }\n\n    /**\n     * Checks if `value` is a valid array-like index.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n     * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n     */\n    function isIndex(value, length) {\n      var type = typeof value;\n      length = length == null ? MAX_SAFE_INTEGER : length;\n\n      return !!length &&\n        (type == 'number' ||\n          (type != 'symbol' && reIsUint.test(value))) &&\n            (value > -1 && value % 1 == 0 && value < length);\n    }\n\n    /**\n     * Checks if the given arguments are from an iteratee call.\n     *\n     * @private\n     * @param {*} value The potential iteratee value argument.\n     * @param {*} index The potential iteratee index or key argument.\n     * @param {*} object The potential iteratee object argument.\n     * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n     *  else `false`.\n     */\n    function isIterateeCall(value, index, object) {\n      if (!isObject(object)) {\n        return false;\n      }\n      var type = typeof index;\n      if (type == 'number'\n            ? (isArrayLike(object) && isIndex(index, object.length))\n            : (type == 'string' && index in object)\n          ) {\n        return eq(object[index], value);\n      }\n      return false;\n    }\n\n    /**\n     * Checks if `value` is a property name and not a property path.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @param {Object} [object] The object to query keys on.\n     * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n     */\n    function isKey(value, object) {\n      if (isArray(value)) {\n        return false;\n      }\n      var type = typeof value;\n      if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n          value == null || isSymbol(value)) {\n        return true;\n      }\n      return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n        (object != null && value in Object(object));\n    }\n\n    /**\n     * Checks if `value` is suitable for use as unique object key.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n     */\n    function isKeyable(value) {\n      var type = typeof value;\n      return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n        ? (value !== '__proto__')\n        : (value === null);\n    }\n\n    /**\n     * Checks if `func` has a lazy counterpart.\n     *\n     * @private\n     * @param {Function} func The function to check.\n     * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n     *  else `false`.\n     */\n    function isLaziable(func) {\n      var funcName = getFuncName(func),\n          other = lodash[funcName];\n\n      if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n        return false;\n      }\n      if (func === other) {\n        return true;\n      }\n      var data = getData(other);\n      return !!data && func === data[0];\n    }\n\n    /**\n     * Checks if `func` has its source masked.\n     *\n     * @private\n     * @param {Function} func The function to check.\n     * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n     */\n    function isMasked(func) {\n      return !!maskSrcKey && (maskSrcKey in func);\n    }\n\n    /**\n     * Checks if `func` is capable of being masked.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n     */\n    var isMaskable = coreJsData ? isFunction : stubFalse;\n\n    /**\n     * Checks if `value` is likely a prototype object.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n     */\n    function isPrototype(value) {\n      var Ctor = value && value.constructor,\n          proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n      return value === proto;\n    }\n\n    /**\n     * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` if suitable for strict\n     *  equality comparisons, else `false`.\n     */\n    function isStrictComparable(value) {\n      return value === value && !isObject(value);\n    }\n\n    /**\n     * A specialized version of `matchesProperty` for source values suitable\n     * for strict equality comparisons, i.e. `===`.\n     *\n     * @private\n     * @param {string} key The key of the property to get.\n     * @param {*} srcValue The value to match.\n     * @returns {Function} Returns the new spec function.\n     */\n    function matchesStrictComparable(key, srcValue) {\n      return function(object) {\n        if (object == null) {\n          return false;\n        }\n        return object[key] === srcValue &&\n          (srcValue !== undefined || (key in Object(object)));\n      };\n    }\n\n    /**\n     * A specialized version of `_.memoize` which clears the memoized function's\n     * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n     *\n     * @private\n     * @param {Function} func The function to have its output memoized.\n     * @returns {Function} Returns the new memoized function.\n     */\n    function memoizeCapped(func) {\n      var result = memoize(func, function(key) {\n        if (cache.size === MAX_MEMOIZE_SIZE) {\n          cache.clear();\n        }\n        return key;\n      });\n\n      var cache = result.cache;\n      return result;\n    }\n\n    /**\n     * Merges the function metadata of `source` into `data`.\n     *\n     * Merging metadata reduces the number of wrappers used to invoke a function.\n     * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n     * may be applied regardless of execution order. Methods like `_.ary` and\n     * `_.rearg` modify function arguments, making the order in which they are\n     * executed important, preventing the merging of metadata. However, we make\n     * an exception for a safe combined case where curried functions have `_.ary`\n     * and or `_.rearg` applied.\n     *\n     * @private\n     * @param {Array} data The destination metadata.\n     * @param {Array} source The source metadata.\n     * @returns {Array} Returns `data`.\n     */\n    function mergeData(data, source) {\n      var bitmask = data[1],\n          srcBitmask = source[1],\n          newBitmask = bitmask | srcBitmask,\n          isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n      var isCombo =\n        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n        ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n      // Exit early if metadata can't be merged.\n      if (!(isCommon || isCombo)) {\n        return data;\n      }\n      // Use source `thisArg` if available.\n      if (srcBitmask & WRAP_BIND_FLAG) {\n        data[2] = source[2];\n        // Set when currying a bound function.\n        newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n      }\n      // Compose partial arguments.\n      var value = source[3];\n      if (value) {\n        var partials = data[3];\n        data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n        data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n      }\n      // Compose partial right arguments.\n      value = source[5];\n      if (value) {\n        partials = data[5];\n        data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n        data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n      }\n      // Use source `argPos` if available.\n      value = source[7];\n      if (value) {\n        data[7] = value;\n      }\n      // Use source `ary` if it's smaller.\n      if (srcBitmask & WRAP_ARY_FLAG) {\n        data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n      }\n      // Use source `arity` if one is not provided.\n      if (data[9] == null) {\n        data[9] = source[9];\n      }\n      // Use source `func` and merge bitmasks.\n      data[0] = source[0];\n      data[1] = newBitmask;\n\n      return data;\n    }\n\n    /**\n     * This function is like\n     * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n     * except that it includes inherited enumerable properties.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     */\n    function nativeKeysIn(object) {\n      var result = [];\n      if (object != null) {\n        for (var key in Object(object)) {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Converts `value` to a string using `Object.prototype.toString`.\n     *\n     * @private\n     * @param {*} value The value to convert.\n     * @returns {string} Returns the converted string.\n     */\n    function objectToString(value) {\n      return nativeObjectToString.call(value);\n    }\n\n    /**\n     * A specialized version of `baseRest` which transforms the rest array.\n     *\n     * @private\n     * @param {Function} func The function to apply a rest parameter to.\n     * @param {number} [start=func.length-1] The start position of the rest parameter.\n     * @param {Function} transform The rest array transform.\n     * @returns {Function} Returns the new function.\n     */\n    function overRest(func, start, transform) {\n      start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n      return function() {\n        var args = arguments,\n            index = -1,\n            length = nativeMax(args.length - start, 0),\n            array = Array(length);\n\n        while (++index < length) {\n          array[index] = args[start + index];\n        }\n        index = -1;\n        var otherArgs = Array(start + 1);\n        while (++index < start) {\n          otherArgs[index] = args[index];\n        }\n        otherArgs[start] = transform(array);\n        return apply(func, this, otherArgs);\n      };\n    }\n\n    /**\n     * Gets the parent value at `path` of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array} path The path to get the parent value of.\n     * @returns {*} Returns the parent value.\n     */\n    function parent(object, path) {\n      return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n    }\n\n    /**\n     * Reorder `array` according to the specified indexes where the element at\n     * the first index is assigned as the first element, the element at\n     * the second index is assigned as the second element, and so on.\n     *\n     * @private\n     * @param {Array} array The array to reorder.\n     * @param {Array} indexes The arranged array indexes.\n     * @returns {Array} Returns `array`.\n     */\n    function reorder(array, indexes) {\n      var arrLength = array.length,\n          length = nativeMin(indexes.length, arrLength),\n          oldArray = copyArray(array);\n\n      while (length--) {\n        var index = indexes[length];\n        array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n      }\n      return array;\n    }\n\n    /**\n     * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {string} key The key of the property to get.\n     * @returns {*} Returns the property value.\n     */\n    function safeGet(object, key) {\n      if (key === 'constructor' && typeof object[key] === 'function') {\n        return;\n      }\n\n      if (key == '__proto__') {\n        return;\n      }\n\n      return object[key];\n    }\n\n    /**\n     * Sets metadata for `func`.\n     *\n     * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n     * period of time, it will trip its breaker and transition to an identity\n     * function to avoid garbage collection pauses in V8. See\n     * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n     * for more details.\n     *\n     * @private\n     * @param {Function} func The function to associate metadata with.\n     * @param {*} data The metadata.\n     * @returns {Function} Returns `func`.\n     */\n    var setData = shortOut(baseSetData);\n\n    /**\n     * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n     *\n     * @private\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @returns {number|Object} Returns the timer id or timeout object.\n     */\n    var setTimeout = ctxSetTimeout || function(func, wait) {\n      return root.setTimeout(func, wait);\n    };\n\n    /**\n     * Sets the `toString` method of `func` to return `string`.\n     *\n     * @private\n     * @param {Function} func The function to modify.\n     * @param {Function} string The `toString` result.\n     * @returns {Function} Returns `func`.\n     */\n    var setToString = shortOut(baseSetToString);\n\n    /**\n     * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n     * with wrapper details in a comment at the top of the source body.\n     *\n     * @private\n     * @param {Function} wrapper The function to modify.\n     * @param {Function} reference The reference function.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @returns {Function} Returns `wrapper`.\n     */\n    function setWrapToString(wrapper, reference, bitmask) {\n      var source = (reference + '');\n      return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n    }\n\n    /**\n     * Creates a function that'll short out and invoke `identity` instead\n     * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n     * milliseconds.\n     *\n     * @private\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new shortable function.\n     */\n    function shortOut(func) {\n      var count = 0,\n          lastCalled = 0;\n\n      return function() {\n        var stamp = nativeNow(),\n            remaining = HOT_SPAN - (stamp - lastCalled);\n\n        lastCalled = stamp;\n        if (remaining > 0) {\n          if (++count >= HOT_COUNT) {\n            return arguments[0];\n          }\n        } else {\n          count = 0;\n        }\n        return func.apply(undefined, arguments);\n      };\n    }\n\n    /**\n     * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n     *\n     * @private\n     * @param {Array} array The array to shuffle.\n     * @param {number} [size=array.length] The size of `array`.\n     * @returns {Array} Returns `array`.\n     */\n    function shuffleSelf(array, size) {\n      var index = -1,\n          length = array.length,\n          lastIndex = length - 1;\n\n      size = size === undefined ? length : size;\n      while (++index < size) {\n        var rand = baseRandom(index, lastIndex),\n            value = array[rand];\n\n        array[rand] = array[index];\n        array[index] = value;\n      }\n      array.length = size;\n      return array;\n    }\n\n    /**\n     * Converts `string` to a property path array.\n     *\n     * @private\n     * @param {string} string The string to convert.\n     * @returns {Array} Returns the property path array.\n     */\n    var stringToPath = memoizeCapped(function(string) {\n      var result = [];\n      if (string.charCodeAt(0) === 46 /* . */) {\n        result.push('');\n      }\n      string.replace(rePropName, function(match, number, quote, subString) {\n        result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n      });\n      return result;\n    });\n\n    /**\n     * Converts `value` to a string key if it's not a string or symbol.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @returns {string|symbol} Returns the key.\n     */\n    function toKey(value) {\n      if (typeof value == 'string' || isSymbol(value)) {\n        return value;\n      }\n      var result = (value + '');\n      return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n    }\n\n    /**\n     * Converts `func` to its source code.\n     *\n     * @private\n     * @param {Function} func The function to convert.\n     * @returns {string} Returns the source code.\n     */\n    function toSource(func) {\n      if (func != null) {\n        try {\n          return funcToString.call(func);\n        } catch (e) {}\n        try {\n          return (func + '');\n        } catch (e) {}\n      }\n      return '';\n    }\n\n    /**\n     * Updates wrapper `details` based on `bitmask` flags.\n     *\n     * @private\n     * @returns {Array} details The details to modify.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @returns {Array} Returns `details`.\n     */\n    function updateWrapDetails(details, bitmask) {\n      arrayEach(wrapFlags, function(pair) {\n        var value = '_.' + pair[0];\n        if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n          details.push(value);\n        }\n      });\n      return details.sort();\n    }\n\n    /**\n     * Creates a clone of `wrapper`.\n     *\n     * @private\n     * @param {Object} wrapper The wrapper to clone.\n     * @returns {Object} Returns the cloned wrapper.\n     */\n    function wrapperClone(wrapper) {\n      if (wrapper instanceof LazyWrapper) {\n        return wrapper.clone();\n      }\n      var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n      result.__actions__ = copyArray(wrapper.__actions__);\n      result.__index__  = wrapper.__index__;\n      result.__values__ = wrapper.__values__;\n      return result;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an array of elements split into groups the length of `size`.\n     * If `array` can't be split evenly, the final chunk will be the remaining\n     * elements.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to process.\n     * @param {number} [size=1] The length of each chunk\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the new array of chunks.\n     * @example\n     *\n     * _.chunk(['a', 'b', 'c', 'd'], 2);\n     * // => [['a', 'b'], ['c', 'd']]\n     *\n     * _.chunk(['a', 'b', 'c', 'd'], 3);\n     * // => [['a', 'b', 'c'], ['d']]\n     */\n    function chunk(array, size, guard) {\n      if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n        size = 1;\n      } else {\n        size = nativeMax(toInteger(size), 0);\n      }\n      var length = array == null ? 0 : array.length;\n      if (!length || size < 1) {\n        return [];\n      }\n      var index = 0,\n          resIndex = 0,\n          result = Array(nativeCeil(length / size));\n\n      while (index < length) {\n        result[resIndex++] = baseSlice(array, index, (index += size));\n      }\n      return result;\n    }\n\n    /**\n     * Creates an array with all falsey values removed. The values `false`, `null`,\n     * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to compact.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.compact([0, 1, false, 2, '', 3]);\n     * // => [1, 2, 3]\n     */\n    function compact(array) {\n      var index = -1,\n          length = array == null ? 0 : array.length,\n          resIndex = 0,\n          result = [];\n\n      while (++index < length) {\n        var value = array[index];\n        if (value) {\n          result[resIndex++] = value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Creates a new array concatenating `array` with any additional arrays\n     * and/or values.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to concatenate.\n     * @param {...*} [values] The values to concatenate.\n     * @returns {Array} Returns the new concatenated array.\n     * @example\n     *\n     * var array = [1];\n     * var other = _.concat(array, 2, [3], [[4]]);\n     *\n     * console.log(other);\n     * // => [1, 2, 3, [4]]\n     *\n     * console.log(array);\n     * // => [1]\n     */\n    function concat() {\n      var length = arguments.length;\n      if (!length) {\n        return [];\n      }\n      var args = Array(length - 1),\n          array = arguments[0],\n          index = length;\n\n      while (index--) {\n        args[index - 1] = arguments[index];\n      }\n      return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n    }\n\n    /**\n     * Creates an array of `array` values not included in the other given arrays\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons. The order and references of result values are\n     * determined by the first array.\n     *\n     * **Note:** Unlike `_.pullAll`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @returns {Array} Returns the new array of filtered values.\n     * @see _.without, _.xor\n     * @example\n     *\n     * _.difference([2, 1], [2, 3]);\n     * // => [1]\n     */\n    var difference = baseRest(function(array, values) {\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n        : [];\n    });\n\n    /**\n     * This method is like `_.difference` except that it accepts `iteratee` which\n     * is invoked for each element of `array` and `values` to generate the criterion\n     * by which they're compared. The order and references of result values are\n     * determined by the first array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n     * // => [{ 'x': 2 }]\n     */\n    var differenceBy = baseRest(function(array, values) {\n      var iteratee = last(values);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n        : [];\n    });\n\n    /**\n     * This method is like `_.difference` except that it accepts `comparator`\n     * which is invoked to compare elements of `array` to `values`. The order and\n     * references of result values are determined by the first array. The comparator\n     * is invoked with two arguments: (arrVal, othVal).\n     *\n     * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     *\n     * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n     * // => [{ 'x': 2, 'y': 1 }]\n     */\n    var differenceWith = baseRest(function(array, values) {\n      var comparator = last(values);\n      if (isArrayLikeObject(comparator)) {\n        comparator = undefined;\n      }\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n        : [];\n    });\n\n    /**\n     * Creates a slice of `array` with `n` elements dropped from the beginning.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.5.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to drop.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.drop([1, 2, 3]);\n     * // => [2, 3]\n     *\n     * _.drop([1, 2, 3], 2);\n     * // => [3]\n     *\n     * _.drop([1, 2, 3], 5);\n     * // => []\n     *\n     * _.drop([1, 2, 3], 0);\n     * // => [1, 2, 3]\n     */\n    function drop(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      return baseSlice(array, n < 0 ? 0 : n, length);\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements dropped from the end.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to drop.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.dropRight([1, 2, 3]);\n     * // => [1, 2]\n     *\n     * _.dropRight([1, 2, 3], 2);\n     * // => [1]\n     *\n     * _.dropRight([1, 2, 3], 5);\n     * // => []\n     *\n     * _.dropRight([1, 2, 3], 0);\n     * // => [1, 2, 3]\n     */\n    function dropRight(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      n = length - n;\n      return baseSlice(array, 0, n < 0 ? 0 : n);\n    }\n\n    /**\n     * Creates a slice of `array` excluding elements dropped from the end.\n     * Elements are dropped until `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.dropRightWhile(users, function(o) { return !o.active; });\n     * // => objects for ['barney']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.dropRightWhile(users, ['active', false]);\n     * // => objects for ['barney']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.dropRightWhile(users, 'active');\n     * // => objects for ['barney', 'fred', 'pebbles']\n     */\n    function dropRightWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), true, true)\n        : [];\n    }\n\n    /**\n     * Creates a slice of `array` excluding elements dropped from the beginning.\n     * Elements are dropped until `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.dropWhile(users, function(o) { return !o.active; });\n     * // => objects for ['pebbles']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.dropWhile(users, { 'user': 'barney', 'active': false });\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.dropWhile(users, ['active', false]);\n     * // => objects for ['pebbles']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.dropWhile(users, 'active');\n     * // => objects for ['barney', 'fred', 'pebbles']\n     */\n    function dropWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), true)\n        : [];\n    }\n\n    /**\n     * Fills elements of `array` with `value` from `start` up to, but not\n     * including, `end`.\n     *\n     * **Note:** This method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Array\n     * @param {Array} array The array to fill.\n     * @param {*} value The value to fill `array` with.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _.fill(array, 'a');\n     * console.log(array);\n     * // => ['a', 'a', 'a']\n     *\n     * _.fill(Array(3), 2);\n     * // => [2, 2, 2]\n     *\n     * _.fill([4, 6, 8, 10], '*', 1, 3);\n     * // => [4, '*', '*', 10]\n     */\n    function fill(array, value, start, end) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n        start = 0;\n        end = length;\n      }\n      return baseFill(array, value, start, end);\n    }\n\n    /**\n     * This method is like `_.find` except that it returns the index of the first\n     * element `predicate` returns truthy for instead of the element itself.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @returns {number} Returns the index of the found element, else `-1`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.findIndex(users, function(o) { return o.user == 'barney'; });\n     * // => 0\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findIndex(users, { 'user': 'fred', 'active': false });\n     * // => 1\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findIndex(users, ['active', false]);\n     * // => 0\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findIndex(users, 'active');\n     * // => 2\n     */\n    function findIndex(array, predicate, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = fromIndex == null ? 0 : toInteger(fromIndex);\n      if (index < 0) {\n        index = nativeMax(length + index, 0);\n      }\n      return baseFindIndex(array, getIteratee(predicate, 3), index);\n    }\n\n    /**\n     * This method is like `_.findIndex` except that it iterates over elements\n     * of `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=array.length-1] The index to search from.\n     * @returns {number} Returns the index of the found element, else `-1`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n     * // => 2\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n     * // => 0\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findLastIndex(users, ['active', false]);\n     * // => 2\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findLastIndex(users, 'active');\n     * // => 0\n     */\n    function findLastIndex(array, predicate, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = length - 1;\n      if (fromIndex !== undefined) {\n        index = toInteger(fromIndex);\n        index = fromIndex < 0\n          ? nativeMax(length + index, 0)\n          : nativeMin(index, length - 1);\n      }\n      return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n    }\n\n    /**\n     * Flattens `array` a single level deep.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to flatten.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * _.flatten([1, [2, [3, [4]], 5]]);\n     * // => [1, 2, [3, [4]], 5]\n     */\n    function flatten(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseFlatten(array, 1) : [];\n    }\n\n    /**\n     * Recursively flattens `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to flatten.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * _.flattenDeep([1, [2, [3, [4]], 5]]);\n     * // => [1, 2, 3, 4, 5]\n     */\n    function flattenDeep(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseFlatten(array, INFINITY) : [];\n    }\n\n    /**\n     * Recursively flatten `array` up to `depth` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.4.0\n     * @category Array\n     * @param {Array} array The array to flatten.\n     * @param {number} [depth=1] The maximum recursion depth.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * var array = [1, [2, [3, [4]], 5]];\n     *\n     * _.flattenDepth(array, 1);\n     * // => [1, 2, [3, [4]], 5]\n     *\n     * _.flattenDepth(array, 2);\n     * // => [1, 2, 3, [4], 5]\n     */\n    function flattenDepth(array, depth) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      depth = depth === undefined ? 1 : toInteger(depth);\n      return baseFlatten(array, depth);\n    }\n\n    /**\n     * The inverse of `_.toPairs`; this method returns an object composed\n     * from key-value `pairs`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} pairs The key-value pairs.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * _.fromPairs([['a', 1], ['b', 2]]);\n     * // => { 'a': 1, 'b': 2 }\n     */\n    function fromPairs(pairs) {\n      var index = -1,\n          length = pairs == null ? 0 : pairs.length,\n          result = {};\n\n      while (++index < length) {\n        var pair = pairs[index];\n        result[pair[0]] = pair[1];\n      }\n      return result;\n    }\n\n    /**\n     * Gets the first element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @alias first\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {*} Returns the first element of `array`.\n     * @example\n     *\n     * _.head([1, 2, 3]);\n     * // => 1\n     *\n     * _.head([]);\n     * // => undefined\n     */\n    function head(array) {\n      return (array && array.length) ? array[0] : undefined;\n    }\n\n    /**\n     * Gets the index at which the first occurrence of `value` is found in `array`\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons. If `fromIndex` is negative, it's used as the\n     * offset from the end of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.indexOf([1, 2, 1, 2], 2);\n     * // => 1\n     *\n     * // Search from the `fromIndex`.\n     * _.indexOf([1, 2, 1, 2], 2, 2);\n     * // => 3\n     */\n    function indexOf(array, value, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = fromIndex == null ? 0 : toInteger(fromIndex);\n      if (index < 0) {\n        index = nativeMax(length + index, 0);\n      }\n      return baseIndexOf(array, value, index);\n    }\n\n    /**\n     * Gets all but the last element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.initial([1, 2, 3]);\n     * // => [1, 2]\n     */\n    function initial(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseSlice(array, 0, -1) : [];\n    }\n\n    /**\n     * Creates an array of unique values that are included in all given arrays\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons. The order and references of result values are\n     * determined by the first array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @returns {Array} Returns the new array of intersecting values.\n     * @example\n     *\n     * _.intersection([2, 1], [2, 3]);\n     * // => [2]\n     */\n    var intersection = baseRest(function(arrays) {\n      var mapped = arrayMap(arrays, castArrayLikeObject);\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped)\n        : [];\n    });\n\n    /**\n     * This method is like `_.intersection` except that it accepts `iteratee`\n     * which is invoked for each element of each `arrays` to generate the criterion\n     * by which they're compared. The order and references of result values are\n     * determined by the first array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of intersecting values.\n     * @example\n     *\n     * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [2.1]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }]\n     */\n    var intersectionBy = baseRest(function(arrays) {\n      var iteratee = last(arrays),\n          mapped = arrayMap(arrays, castArrayLikeObject);\n\n      if (iteratee === last(mapped)) {\n        iteratee = undefined;\n      } else {\n        mapped.pop();\n      }\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped, getIteratee(iteratee, 2))\n        : [];\n    });\n\n    /**\n     * This method is like `_.intersection` except that it accepts `comparator`\n     * which is invoked to compare elements of `arrays`. The order and references\n     * of result values are determined by the first array. The comparator is\n     * invoked with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of intersecting values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.intersectionWith(objects, others, _.isEqual);\n     * // => [{ 'x': 1, 'y': 2 }]\n     */\n    var intersectionWith = baseRest(function(arrays) {\n      var comparator = last(arrays),\n          mapped = arrayMap(arrays, castArrayLikeObject);\n\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      if (comparator) {\n        mapped.pop();\n      }\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped, undefined, comparator)\n        : [];\n    });\n\n    /**\n     * Converts all elements in `array` into a string separated by `separator`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to convert.\n     * @param {string} [separator=','] The element separator.\n     * @returns {string} Returns the joined string.\n     * @example\n     *\n     * _.join(['a', 'b', 'c'], '~');\n     * // => 'a~b~c'\n     */\n    function join(array, separator) {\n      return array == null ? '' : nativeJoin.call(array, separator);\n    }\n\n    /**\n     * Gets the last element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {*} Returns the last element of `array`.\n     * @example\n     *\n     * _.last([1, 2, 3]);\n     * // => 3\n     */\n    function last(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? array[length - 1] : undefined;\n    }\n\n    /**\n     * This method is like `_.indexOf` except that it iterates over elements of\n     * `array` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=array.length-1] The index to search from.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.lastIndexOf([1, 2, 1, 2], 2);\n     * // => 3\n     *\n     * // Search from the `fromIndex`.\n     * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n     * // => 1\n     */\n    function lastIndexOf(array, value, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = length;\n      if (fromIndex !== undefined) {\n        index = toInteger(fromIndex);\n        index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n      }\n      return value === value\n        ? strictLastIndexOf(array, value, index)\n        : baseFindIndex(array, baseIsNaN, index, true);\n    }\n\n    /**\n     * Gets the element at index `n` of `array`. If `n` is negative, the nth\n     * element from the end is returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.11.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=0] The index of the element to return.\n     * @returns {*} Returns the nth element of `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'd'];\n     *\n     * _.nth(array, 1);\n     * // => 'b'\n     *\n     * _.nth(array, -2);\n     * // => 'c';\n     */\n    function nth(array, n) {\n      return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n    }\n\n    /**\n     * Removes all given values from `array` using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n     * to remove elements from an array by predicate.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {...*} [values] The values to remove.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n     *\n     * _.pull(array, 'a', 'c');\n     * console.log(array);\n     * // => ['b', 'b']\n     */\n    var pull = baseRest(pullAll);\n\n    /**\n     * This method is like `_.pull` except that it accepts an array of values to remove.\n     *\n     * **Note:** Unlike `_.difference`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n     *\n     * _.pullAll(array, ['a', 'c']);\n     * console.log(array);\n     * // => ['b', 'b']\n     */\n    function pullAll(array, values) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values)\n        : array;\n    }\n\n    /**\n     * This method is like `_.pullAll` except that it accepts `iteratee` which is\n     * invoked for each element of `array` and `values` to generate the criterion\n     * by which they're compared. The iteratee is invoked with one argument: (value).\n     *\n     * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n     *\n     * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n     * console.log(array);\n     * // => [{ 'x': 2 }]\n     */\n    function pullAllBy(array, values, iteratee) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values, getIteratee(iteratee, 2))\n        : array;\n    }\n\n    /**\n     * This method is like `_.pullAll` except that it accepts `comparator` which\n     * is invoked to compare elements of `array` to `values`. The comparator is\n     * invoked with two arguments: (arrVal, othVal).\n     *\n     * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n     *\n     * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n     * console.log(array);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n     */\n    function pullAllWith(array, values, comparator) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values, undefined, comparator)\n        : array;\n    }\n\n    /**\n     * Removes elements from `array` corresponding to `indexes` and returns an\n     * array of removed elements.\n     *\n     * **Note:** Unlike `_.at`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n     * @returns {Array} Returns the new array of removed elements.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'd'];\n     * var pulled = _.pullAt(array, [1, 3]);\n     *\n     * console.log(array);\n     * // => ['a', 'c']\n     *\n     * console.log(pulled);\n     * // => ['b', 'd']\n     */\n    var pullAt = flatRest(function(array, indexes) {\n      var length = array == null ? 0 : array.length,\n          result = baseAt(array, indexes);\n\n      basePullAt(array, arrayMap(indexes, function(index) {\n        return isIndex(index, length) ? +index : index;\n      }).sort(compareAscending));\n\n      return result;\n    });\n\n    /**\n     * Removes all elements from `array` that `predicate` returns truthy for\n     * and returns an array of the removed elements. The predicate is invoked\n     * with three arguments: (value, index, array).\n     *\n     * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n     * to pull elements from an array by value.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new array of removed elements.\n     * @example\n     *\n     * var array = [1, 2, 3, 4];\n     * var evens = _.remove(array, function(n) {\n     *   return n % 2 == 0;\n     * });\n     *\n     * console.log(array);\n     * // => [1, 3]\n     *\n     * console.log(evens);\n     * // => [2, 4]\n     */\n    function remove(array, predicate) {\n      var result = [];\n      if (!(array && array.length)) {\n        return result;\n      }\n      var index = -1,\n          indexes = [],\n          length = array.length;\n\n      predicate = getIteratee(predicate, 3);\n      while (++index < length) {\n        var value = array[index];\n        if (predicate(value, index, array)) {\n          result.push(value);\n          indexes.push(index);\n        }\n      }\n      basePullAt(array, indexes);\n      return result;\n    }\n\n    /**\n     * Reverses `array` so that the first element becomes the last, the second\n     * element becomes the second to last, and so on.\n     *\n     * **Note:** This method mutates `array` and is based on\n     * [`Array#reverse`](https://mdn.io/Array/reverse).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _.reverse(array);\n     * // => [3, 2, 1]\n     *\n     * console.log(array);\n     * // => [3, 2, 1]\n     */\n    function reverse(array) {\n      return array == null ? array : nativeReverse.call(array);\n    }\n\n    /**\n     * Creates a slice of `array` from `start` up to, but not including, `end`.\n     *\n     * **Note:** This method is used instead of\n     * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n     * returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to slice.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns the slice of `array`.\n     */\n    function slice(array, start, end) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n        start = 0;\n        end = length;\n      }\n      else {\n        start = start == null ? 0 : toInteger(start);\n        end = end === undefined ? length : toInteger(end);\n      }\n      return baseSlice(array, start, end);\n    }\n\n    /**\n     * Uses a binary search to determine the lowest index at which `value`\n     * should be inserted into `array` in order to maintain its sort order.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * _.sortedIndex([30, 50], 40);\n     * // => 1\n     */\n    function sortedIndex(array, value) {\n      return baseSortedIndex(array, value);\n    }\n\n    /**\n     * This method is like `_.sortedIndex` except that it accepts `iteratee`\n     * which is invoked for `value` and each element of `array` to compute their\n     * sort ranking. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * var objects = [{ 'x': 4 }, { 'x': 5 }];\n     *\n     * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n     * // => 0\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n     * // => 0\n     */\n    function sortedIndexBy(array, value, iteratee) {\n      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n    }\n\n    /**\n     * This method is like `_.indexOf` except that it performs a binary\n     * search on a sorted `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n     * // => 1\n     */\n    function sortedIndexOf(array, value) {\n      var length = array == null ? 0 : array.length;\n      if (length) {\n        var index = baseSortedIndex(array, value);\n        if (index < length && eq(array[index], value)) {\n          return index;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * This method is like `_.sortedIndex` except that it returns the highest\n     * index at which `value` should be inserted into `array` in order to\n     * maintain its sort order.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n     * // => 4\n     */\n    function sortedLastIndex(array, value) {\n      return baseSortedIndex(array, value, true);\n    }\n\n    /**\n     * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n     * which is invoked for `value` and each element of `array` to compute their\n     * sort ranking. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * var objects = [{ 'x': 4 }, { 'x': 5 }];\n     *\n     * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n     * // => 1\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n     * // => 1\n     */\n    function sortedLastIndexBy(array, value, iteratee) {\n      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n    }\n\n    /**\n     * This method is like `_.lastIndexOf` except that it performs a binary\n     * search on a sorted `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n     * // => 3\n     */\n    function sortedLastIndexOf(array, value) {\n      var length = array == null ? 0 : array.length;\n      if (length) {\n        var index = baseSortedIndex(array, value, true) - 1;\n        if (eq(array[index], value)) {\n          return index;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * This method is like `_.uniq` except that it's designed and optimized\n     * for sorted arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.sortedUniq([1, 1, 2]);\n     * // => [1, 2]\n     */\n    function sortedUniq(array) {\n      return (array && array.length)\n        ? baseSortedUniq(array)\n        : [];\n    }\n\n    /**\n     * This method is like `_.uniqBy` except that it's designed and optimized\n     * for sorted arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n     * // => [1.1, 2.3]\n     */\n    function sortedUniqBy(array, iteratee) {\n      return (array && array.length)\n        ? baseSortedUniq(array, getIteratee(iteratee, 2))\n        : [];\n    }\n\n    /**\n     * Gets all but the first element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.tail([1, 2, 3]);\n     * // => [2, 3]\n     */\n    function tail(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseSlice(array, 1, length) : [];\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements taken from the beginning.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to take.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.take([1, 2, 3]);\n     * // => [1]\n     *\n     * _.take([1, 2, 3], 2);\n     * // => [1, 2]\n     *\n     * _.take([1, 2, 3], 5);\n     * // => [1, 2, 3]\n     *\n     * _.take([1, 2, 3], 0);\n     * // => []\n     */\n    function take(array, n, guard) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      return baseSlice(array, 0, n < 0 ? 0 : n);\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements taken from the end.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to take.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.takeRight([1, 2, 3]);\n     * // => [3]\n     *\n     * _.takeRight([1, 2, 3], 2);\n     * // => [2, 3]\n     *\n     * _.takeRight([1, 2, 3], 5);\n     * // => [1, 2, 3]\n     *\n     * _.takeRight([1, 2, 3], 0);\n     * // => []\n     */\n    function takeRight(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      n = length - n;\n      return baseSlice(array, n < 0 ? 0 : n, length);\n    }\n\n    /**\n     * Creates a slice of `array` with elements taken from the end. Elements are\n     * taken until `predicate` returns falsey. The predicate is invoked with\n     * three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.takeRightWhile(users, function(o) { return !o.active; });\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n     * // => objects for ['pebbles']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.takeRightWhile(users, ['active', false]);\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.takeRightWhile(users, 'active');\n     * // => []\n     */\n    function takeRightWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), false, true)\n        : [];\n    }\n\n    /**\n     * Creates a slice of `array` with elements taken from the beginning. Elements\n     * are taken until `predicate` returns falsey. The predicate is invoked with\n     * three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.takeWhile(users, function(o) { return !o.active; });\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.takeWhile(users, { 'user': 'barney', 'active': false });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.takeWhile(users, ['active', false]);\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.takeWhile(users, 'active');\n     * // => []\n     */\n    function takeWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3))\n        : [];\n    }\n\n    /**\n     * Creates an array of unique values, in order, from all given arrays using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @returns {Array} Returns the new array of combined values.\n     * @example\n     *\n     * _.union([2], [1, 2]);\n     * // => [2, 1]\n     */\n    var union = baseRest(function(arrays) {\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n    });\n\n    /**\n     * This method is like `_.union` except that it accepts `iteratee` which is\n     * invoked for each element of each `arrays` to generate the criterion by\n     * which uniqueness is computed. Result values are chosen from the first\n     * array in which the value occurs. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of combined values.\n     * @example\n     *\n     * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n     * // => [2.1, 1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }, { 'x': 2 }]\n     */\n    var unionBy = baseRest(function(arrays) {\n      var iteratee = last(arrays);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n    });\n\n    /**\n     * This method is like `_.union` except that it accepts `comparator` which\n     * is invoked to compare elements of `arrays`. Result values are chosen from\n     * the first array in which the value occurs. The comparator is invoked\n     * with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of combined values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.unionWith(objects, others, _.isEqual);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n     */\n    var unionWith = baseRest(function(arrays) {\n      var comparator = last(arrays);\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n    });\n\n    /**\n     * Creates a duplicate-free version of an array, using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons, in which only the first occurrence of each element\n     * is kept. The order of result values is determined by the order they occur\n     * in the array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.uniq([2, 1, 2]);\n     * // => [2, 1]\n     */\n    function uniq(array) {\n      return (array && array.length) ? baseUniq(array) : [];\n    }\n\n    /**\n     * This method is like `_.uniq` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * uniqueness is computed. The order of result values is determined by the\n     * order they occur in the array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n     * // => [2.1, 1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }, { 'x': 2 }]\n     */\n    function uniqBy(array, iteratee) {\n      return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n    }\n\n    /**\n     * This method is like `_.uniq` except that it accepts `comparator` which\n     * is invoked to compare elements of `array`. The order of result values is\n     * determined by the order they occur in the array.The comparator is invoked\n     * with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.uniqWith(objects, _.isEqual);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n     */\n    function uniqWith(array, comparator) {\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n    }\n\n    /**\n     * This method is like `_.zip` except that it accepts an array of grouped\n     * elements and creates an array regrouping the elements to their pre-zip\n     * configuration.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.2.0\n     * @category Array\n     * @param {Array} array The array of grouped elements to process.\n     * @returns {Array} Returns the new array of regrouped elements.\n     * @example\n     *\n     * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n     * // => [['a', 1, true], ['b', 2, false]]\n     *\n     * _.unzip(zipped);\n     * // => [['a', 'b'], [1, 2], [true, false]]\n     */\n    function unzip(array) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      var length = 0;\n      array = arrayFilter(array, function(group) {\n        if (isArrayLikeObject(group)) {\n          length = nativeMax(group.length, length);\n          return true;\n        }\n      });\n      return baseTimes(length, function(index) {\n        return arrayMap(array, baseProperty(index));\n      });\n    }\n\n    /**\n     * This method is like `_.unzip` except that it accepts `iteratee` to specify\n     * how regrouped values should be combined. The iteratee is invoked with the\n     * elements of each group: (...group).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Array\n     * @param {Array} array The array of grouped elements to process.\n     * @param {Function} [iteratee=_.identity] The function to combine\n     *  regrouped values.\n     * @returns {Array} Returns the new array of regrouped elements.\n     * @example\n     *\n     * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n     * // => [[1, 10, 100], [2, 20, 200]]\n     *\n     * _.unzipWith(zipped, _.add);\n     * // => [3, 30, 300]\n     */\n    function unzipWith(array, iteratee) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      var result = unzip(array);\n      if (iteratee == null) {\n        return result;\n      }\n      return arrayMap(result, function(group) {\n        return apply(iteratee, undefined, group);\n      });\n    }\n\n    /**\n     * Creates an array excluding all given values using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * **Note:** Unlike `_.pull`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...*} [values] The values to exclude.\n     * @returns {Array} Returns the new array of filtered values.\n     * @see _.difference, _.xor\n     * @example\n     *\n     * _.without([2, 1, 2, 3], 1, 2);\n     * // => [3]\n     */\n    var without = baseRest(function(array, values) {\n      return isArrayLikeObject(array)\n        ? baseDifference(array, values)\n        : [];\n    });\n\n    /**\n     * Creates an array of unique values that is the\n     * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n     * of the given arrays. The order of result values is determined by the order\n     * they occur in the arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @returns {Array} Returns the new array of filtered values.\n     * @see _.difference, _.without\n     * @example\n     *\n     * _.xor([2, 1], [2, 3]);\n     * // => [1, 3]\n     */\n    var xor = baseRest(function(arrays) {\n      return baseXor(arrayFilter(arrays, isArrayLikeObject));\n    });\n\n    /**\n     * This method is like `_.xor` except that it accepts `iteratee` which is\n     * invoked for each element of each `arrays` to generate the criterion by\n     * which by which they're compared. The order of result values is determined\n     * by the order they occur in the arrays. The iteratee is invoked with one\n     * argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [1.2, 3.4]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 2 }]\n     */\n    var xorBy = baseRest(function(arrays) {\n      var iteratee = last(arrays);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n    });\n\n    /**\n     * This method is like `_.xor` except that it accepts `comparator` which is\n     * invoked to compare elements of `arrays`. The order of result values is\n     * determined by the order they occur in the arrays. The comparator is invoked\n     * with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.xorWith(objects, others, _.isEqual);\n     * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n     */\n    var xorWith = baseRest(function(arrays) {\n      var comparator = last(arrays);\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n    });\n\n    /**\n     * Creates an array of grouped elements, the first of which contains the\n     * first elements of the given arrays, the second of which contains the\n     * second elements of the given arrays, and so on.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to process.\n     * @returns {Array} Returns the new array of grouped elements.\n     * @example\n     *\n     * _.zip(['a', 'b'], [1, 2], [true, false]);\n     * // => [['a', 1, true], ['b', 2, false]]\n     */\n    var zip = baseRest(unzip);\n\n    /**\n     * This method is like `_.fromPairs` except that it accepts two arrays,\n     * one of property identifiers and one of corresponding values.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.4.0\n     * @category Array\n     * @param {Array} [props=[]] The property identifiers.\n     * @param {Array} [values=[]] The property values.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * _.zipObject(['a', 'b'], [1, 2]);\n     * // => { 'a': 1, 'b': 2 }\n     */\n    function zipObject(props, values) {\n      return baseZipObject(props || [], values || [], assignValue);\n    }\n\n    /**\n     * This method is like `_.zipObject` except that it supports property paths.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.1.0\n     * @category Array\n     * @param {Array} [props=[]] The property identifiers.\n     * @param {Array} [values=[]] The property values.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n     * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n     */\n    function zipObjectDeep(props, values) {\n      return baseZipObject(props || [], values || [], baseSet);\n    }\n\n    /**\n     * This method is like `_.zip` except that it accepts `iteratee` to specify\n     * how grouped values should be combined. The iteratee is invoked with the\n     * elements of each group: (...group).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to process.\n     * @param {Function} [iteratee=_.identity] The function to combine\n     *  grouped values.\n     * @returns {Array} Returns the new array of grouped elements.\n     * @example\n     *\n     * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n     *   return a + b + c;\n     * });\n     * // => [111, 222]\n     */\n    var zipWith = baseRest(function(arrays) {\n      var length = arrays.length,\n          iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n      iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n      return unzipWith(arrays, iteratee);\n    });\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n     * chain sequences enabled. The result of such sequences must be unwrapped\n     * with `_#value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.3.0\n     * @category Seq\n     * @param {*} value The value to wrap.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36 },\n     *   { 'user': 'fred',    'age': 40 },\n     *   { 'user': 'pebbles', 'age': 1 }\n     * ];\n     *\n     * var youngest = _\n     *   .chain(users)\n     *   .sortBy('age')\n     *   .map(function(o) {\n     *     return o.user + ' is ' + o.age;\n     *   })\n     *   .head()\n     *   .value();\n     * // => 'pebbles is 1'\n     */\n    function chain(value) {\n      var result = lodash(value);\n      result.__chain__ = true;\n      return result;\n    }\n\n    /**\n     * This method invokes `interceptor` and returns `value`. The interceptor\n     * is invoked with one argument; (value). The purpose of this method is to\n     * \"tap into\" a method chain sequence in order to modify intermediate results.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @param {*} value The value to provide to `interceptor`.\n     * @param {Function} interceptor The function to invoke.\n     * @returns {*} Returns `value`.\n     * @example\n     *\n     * _([1, 2, 3])\n     *  .tap(function(array) {\n     *    // Mutate input array.\n     *    array.pop();\n     *  })\n     *  .reverse()\n     *  .value();\n     * // => [2, 1]\n     */\n    function tap(value, interceptor) {\n      interceptor(value);\n      return value;\n    }\n\n    /**\n     * This method is like `_.tap` except that it returns the result of `interceptor`.\n     * The purpose of this method is to \"pass thru\" values replacing intermediate\n     * results in a method chain sequence.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Seq\n     * @param {*} value The value to provide to `interceptor`.\n     * @param {Function} interceptor The function to invoke.\n     * @returns {*} Returns the result of `interceptor`.\n     * @example\n     *\n     * _('  abc  ')\n     *  .chain()\n     *  .trim()\n     *  .thru(function(value) {\n     *    return [value];\n     *  })\n     *  .value();\n     * // => ['abc']\n     */\n    function thru(value, interceptor) {\n      return interceptor(value);\n    }\n\n    /**\n     * This method is the wrapper version of `_.at`.\n     *\n     * @name at\n     * @memberOf _\n     * @since 1.0.0\n     * @category Seq\n     * @param {...(string|string[])} [paths] The property paths to pick.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n     *\n     * _(object).at(['a[0].b.c', 'a[1]']).value();\n     * // => [3, 4]\n     */\n    var wrapperAt = flatRest(function(paths) {\n      var length = paths.length,\n          start = length ? paths[0] : 0,\n          value = this.__wrapped__,\n          interceptor = function(object) { return baseAt(object, paths); };\n\n      if (length > 1 || this.__actions__.length ||\n          !(value instanceof LazyWrapper) || !isIndex(start)) {\n        return this.thru(interceptor);\n      }\n      value = value.slice(start, +start + (length ? 1 : 0));\n      value.__actions__.push({\n        'func': thru,\n        'args': [interceptor],\n        'thisArg': undefined\n      });\n      return new LodashWrapper(value, this.__chain__).thru(function(array) {\n        if (length && !array.length) {\n          array.push(undefined);\n        }\n        return array;\n      });\n    });\n\n    /**\n     * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n     *\n     * @name chain\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36 },\n     *   { 'user': 'fred',   'age': 40 }\n     * ];\n     *\n     * // A sequence without explicit chaining.\n     * _(users).head();\n     * // => { 'user': 'barney', 'age': 36 }\n     *\n     * // A sequence with explicit chaining.\n     * _(users)\n     *   .chain()\n     *   .head()\n     *   .pick('user')\n     *   .value();\n     * // => { 'user': 'barney' }\n     */\n    function wrapperChain() {\n      return chain(this);\n    }\n\n    /**\n     * Executes the chain sequence and returns the wrapped result.\n     *\n     * @name commit\n     * @memberOf _\n     * @since 3.2.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var array = [1, 2];\n     * var wrapped = _(array).push(3);\n     *\n     * console.log(array);\n     * // => [1, 2]\n     *\n     * wrapped = wrapped.commit();\n     * console.log(array);\n     * // => [1, 2, 3]\n     *\n     * wrapped.last();\n     * // => 3\n     *\n     * console.log(array);\n     * // => [1, 2, 3]\n     */\n    function wrapperCommit() {\n      return new LodashWrapper(this.value(), this.__chain__);\n    }\n\n    /**\n     * Gets the next value on a wrapped object following the\n     * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n     *\n     * @name next\n     * @memberOf _\n     * @since 4.0.0\n     * @category Seq\n     * @returns {Object} Returns the next iterator value.\n     * @example\n     *\n     * var wrapped = _([1, 2]);\n     *\n     * wrapped.next();\n     * // => { 'done': false, 'value': 1 }\n     *\n     * wrapped.next();\n     * // => { 'done': false, 'value': 2 }\n     *\n     * wrapped.next();\n     * // => { 'done': true, 'value': undefined }\n     */\n    function wrapperNext() {\n      if (this.__values__ === undefined) {\n        this.__values__ = toArray(this.value());\n      }\n      var done = this.__index__ >= this.__values__.length,\n          value = done ? undefined : this.__values__[this.__index__++];\n\n      return { 'done': done, 'value': value };\n    }\n\n    /**\n     * Enables the wrapper to be iterable.\n     *\n     * @name Symbol.iterator\n     * @memberOf _\n     * @since 4.0.0\n     * @category Seq\n     * @returns {Object} Returns the wrapper object.\n     * @example\n     *\n     * var wrapped = _([1, 2]);\n     *\n     * wrapped[Symbol.iterator]() === wrapped;\n     * // => true\n     *\n     * Array.from(wrapped);\n     * // => [1, 2]\n     */\n    function wrapperToIterator() {\n      return this;\n    }\n\n    /**\n     * Creates a clone of the chain sequence planting `value` as the wrapped value.\n     *\n     * @name plant\n     * @memberOf _\n     * @since 3.2.0\n     * @category Seq\n     * @param {*} value The value to plant.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var wrapped = _([1, 2]).map(square);\n     * var other = wrapped.plant([3, 4]);\n     *\n     * other.value();\n     * // => [9, 16]\n     *\n     * wrapped.value();\n     * // => [1, 4]\n     */\n    function wrapperPlant(value) {\n      var result,\n          parent = this;\n\n      while (parent instanceof baseLodash) {\n        var clone = wrapperClone(parent);\n        clone.__index__ = 0;\n        clone.__values__ = undefined;\n        if (result) {\n          previous.__wrapped__ = clone;\n        } else {\n          result = clone;\n        }\n        var previous = clone;\n        parent = parent.__wrapped__;\n      }\n      previous.__wrapped__ = value;\n      return result;\n    }\n\n    /**\n     * This method is the wrapper version of `_.reverse`.\n     *\n     * **Note:** This method mutates the wrapped array.\n     *\n     * @name reverse\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _(array).reverse().value()\n     * // => [3, 2, 1]\n     *\n     * console.log(array);\n     * // => [3, 2, 1]\n     */\n    function wrapperReverse() {\n      var value = this.__wrapped__;\n      if (value instanceof LazyWrapper) {\n        var wrapped = value;\n        if (this.__actions__.length) {\n          wrapped = new LazyWrapper(this);\n        }\n        wrapped = wrapped.reverse();\n        wrapped.__actions__.push({\n          'func': thru,\n          'args': [reverse],\n          'thisArg': undefined\n        });\n        return new LodashWrapper(wrapped, this.__chain__);\n      }\n      return this.thru(reverse);\n    }\n\n    /**\n     * Executes the chain sequence to resolve the unwrapped value.\n     *\n     * @name value\n     * @memberOf _\n     * @since 0.1.0\n     * @alias toJSON, valueOf\n     * @category Seq\n     * @returns {*} Returns the resolved unwrapped value.\n     * @example\n     *\n     * _([1, 2, 3]).value();\n     * // => [1, 2, 3]\n     */\n    function wrapperValue() {\n      return baseWrapperValue(this.__wrapped__, this.__actions__);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The corresponding value of\n     * each key is the number of times the key was returned by `iteratee`. The\n     * iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.5.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * _.countBy([6.1, 4.2, 6.3], Math.floor);\n     * // => { '4': 1, '6': 2 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.countBy(['one', 'two', 'three'], 'length');\n     * // => { '3': 2, '5': 1 }\n     */\n    var countBy = createAggregator(function(result, value, key) {\n      if (hasOwnProperty.call(result, key)) {\n        ++result[key];\n      } else {\n        baseAssignValue(result, key, 1);\n      }\n    });\n\n    /**\n     * Checks if `predicate` returns truthy for **all** elements of `collection`.\n     * Iteration is stopped once `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index|key, collection).\n     *\n     * **Note:** This method returns `true` for\n     * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n     * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n     * elements of empty collections.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {boolean} Returns `true` if all elements pass the predicate check,\n     *  else `false`.\n     * @example\n     *\n     * _.every([true, 1, null, 'yes'], Boolean);\n     * // => false\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': false },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.every(users, { 'user': 'barney', 'active': false });\n     * // => false\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.every(users, ['active', false]);\n     * // => true\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.every(users, 'active');\n     * // => false\n     */\n    function every(collection, predicate, guard) {\n      var func = isArray(collection) ? arrayEvery : baseEvery;\n      if (guard && isIterateeCall(collection, predicate, guard)) {\n        predicate = undefined;\n      }\n      return func(collection, getIteratee(predicate, 3));\n    }\n\n    /**\n     * Iterates over elements of `collection`, returning an array of all elements\n     * `predicate` returns truthy for. The predicate is invoked with three\n     * arguments: (value, index|key, collection).\n     *\n     * **Note:** Unlike `_.remove`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new filtered array.\n     * @see _.reject\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': true },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * _.filter(users, function(o) { return !o.active; });\n     * // => objects for ['fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.filter(users, { 'age': 36, 'active': true });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.filter(users, ['active', false]);\n     * // => objects for ['fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.filter(users, 'active');\n     * // => objects for ['barney']\n     *\n     * // Combining several predicates using `_.overEvery` or `_.overSome`.\n     * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n     * // => objects for ['fred', 'barney']\n     */\n    function filter(collection, predicate) {\n      var func = isArray(collection) ? arrayFilter : baseFilter;\n      return func(collection, getIteratee(predicate, 3));\n    }\n\n    /**\n     * Iterates over elements of `collection`, returning the first element\n     * `predicate` returns truthy for. The predicate is invoked with three\n     * arguments: (value, index|key, collection).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @returns {*} Returns the matched element, else `undefined`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36, 'active': true },\n     *   { 'user': 'fred',    'age': 40, 'active': false },\n     *   { 'user': 'pebbles', 'age': 1,  'active': true }\n     * ];\n     *\n     * _.find(users, function(o) { return o.age < 40; });\n     * // => object for 'barney'\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.find(users, { 'age': 1, 'active': true });\n     * // => object for 'pebbles'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.find(users, ['active', false]);\n     * // => object for 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.find(users, 'active');\n     * // => object for 'barney'\n     */\n    var find = createFind(findIndex);\n\n    /**\n     * This method is like `_.find` except that it iterates over elements of\n     * `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=collection.length-1] The index to search from.\n     * @returns {*} Returns the matched element, else `undefined`.\n     * @example\n     *\n     * _.findLast([1, 2, 3, 4], function(n) {\n     *   return n % 2 == 1;\n     * });\n     * // => 3\n     */\n    var findLast = createFind(findLastIndex);\n\n    /**\n     * Creates a flattened array of values by running each element in `collection`\n     * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n     * with three arguments: (value, index|key, collection).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [n, n];\n     * }\n     *\n     * _.flatMap([1, 2], duplicate);\n     * // => [1, 1, 2, 2]\n     */\n    function flatMap(collection, iteratee) {\n      return baseFlatten(map(collection, iteratee), 1);\n    }\n\n    /**\n     * This method is like `_.flatMap` except that it recursively flattens the\n     * mapped results.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [[[n, n]]];\n     * }\n     *\n     * _.flatMapDeep([1, 2], duplicate);\n     * // => [1, 1, 2, 2]\n     */\n    function flatMapDeep(collection, iteratee) {\n      return baseFlatten(map(collection, iteratee), INFINITY);\n    }\n\n    /**\n     * This method is like `_.flatMap` except that it recursively flattens the\n     * mapped results up to `depth` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {number} [depth=1] The maximum recursion depth.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [[[n, n]]];\n     * }\n     *\n     * _.flatMapDepth([1, 2], duplicate, 2);\n     * // => [[1, 1], [2, 2]]\n     */\n    function flatMapDepth(collection, iteratee, depth) {\n      depth = depth === undefined ? 1 : toInteger(depth);\n      return baseFlatten(map(collection, iteratee), depth);\n    }\n\n    /**\n     * Iterates over elements of `collection` and invokes `iteratee` for each element.\n     * The iteratee is invoked with three arguments: (value, index|key, collection).\n     * Iteratee functions may exit iteration early by explicitly returning `false`.\n     *\n     * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n     * property are iterated like arrays. To avoid this behavior use `_.forIn`\n     * or `_.forOwn` for object iteration.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @alias each\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     * @see _.forEachRight\n     * @example\n     *\n     * _.forEach([1, 2], function(value) {\n     *   console.log(value);\n     * });\n     * // => Logs `1` then `2`.\n     *\n     * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n     */\n    function forEach(collection, iteratee) {\n      var func = isArray(collection) ? arrayEach : baseEach;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.forEach` except that it iterates over elements of\n     * `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @alias eachRight\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     * @see _.forEach\n     * @example\n     *\n     * _.forEachRight([1, 2], function(value) {\n     *   console.log(value);\n     * });\n     * // => Logs `2` then `1`.\n     */\n    function forEachRight(collection, iteratee) {\n      var func = isArray(collection) ? arrayEachRight : baseEachRight;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The order of grouped values\n     * is determined by the order they occur in `collection`. The corresponding\n     * value of each key is an array of elements responsible for generating the\n     * key. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n     * // => { '4': [4.2], '6': [6.1, 6.3] }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.groupBy(['one', 'two', 'three'], 'length');\n     * // => { '3': ['one', 'two'], '5': ['three'] }\n     */\n    var groupBy = createAggregator(function(result, value, key) {\n      if (hasOwnProperty.call(result, key)) {\n        result[key].push(value);\n      } else {\n        baseAssignValue(result, key, [value]);\n      }\n    });\n\n    /**\n     * Checks if `value` is in `collection`. If `collection` is a string, it's\n     * checked for a substring of `value`, otherwise\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * is used for equality comparisons. If `fromIndex` is negative, it's used as\n     * the offset from the end of `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object|string} collection The collection to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n     * @returns {boolean} Returns `true` if `value` is found, else `false`.\n     * @example\n     *\n     * _.includes([1, 2, 3], 1);\n     * // => true\n     *\n     * _.includes([1, 2, 3], 1, 2);\n     * // => false\n     *\n     * _.includes({ 'a': 1, 'b': 2 }, 1);\n     * // => true\n     *\n     * _.includes('abcd', 'bc');\n     * // => true\n     */\n    function includes(collection, value, fromIndex, guard) {\n      collection = isArrayLike(collection) ? collection : values(collection);\n      fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n      var length = collection.length;\n      if (fromIndex < 0) {\n        fromIndex = nativeMax(length + fromIndex, 0);\n      }\n      return isString(collection)\n        ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n        : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n    }\n\n    /**\n     * Invokes the method at `path` of each element in `collection`, returning\n     * an array of the results of each invoked method. Any additional arguments\n     * are provided to each invoked method. If `path` is a function, it's invoked\n     * for, and `this` bound to, each element in `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Array|Function|string} path The path of the method to invoke or\n     *  the function invoked per iteration.\n     * @param {...*} [args] The arguments to invoke each method with.\n     * @returns {Array} Returns the array of results.\n     * @example\n     *\n     * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n     * // => [[1, 5, 7], [1, 2, 3]]\n     *\n     * _.invokeMap([123, 456], String.prototype.split, '');\n     * // => [['1', '2', '3'], ['4', '5', '6']]\n     */\n    var invokeMap = baseRest(function(collection, path, args) {\n      var index = -1,\n          isFunc = typeof path == 'function',\n          result = isArrayLike(collection) ? Array(collection.length) : [];\n\n      baseEach(collection, function(value) {\n        result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n      });\n      return result;\n    });\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The corresponding value of\n     * each key is the last element responsible for generating the key. The\n     * iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * var array = [\n     *   { 'dir': 'left', 'code': 97 },\n     *   { 'dir': 'right', 'code': 100 }\n     * ];\n     *\n     * _.keyBy(array, function(o) {\n     *   return String.fromCharCode(o.code);\n     * });\n     * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n     *\n     * _.keyBy(array, 'dir');\n     * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n     */\n    var keyBy = createAggregator(function(result, value, key) {\n      baseAssignValue(result, key, value);\n    });\n\n    /**\n     * Creates an array of values by running each element in `collection` thru\n     * `iteratee`. The iteratee is invoked with three arguments:\n     * (value, index|key, collection).\n     *\n     * Many lodash methods are guarded to work as iteratees for methods like\n     * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n     *\n     * The guarded methods are:\n     * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n     * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n     * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n     * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new mapped array.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * _.map([4, 8], square);\n     * // => [16, 64]\n     *\n     * _.map({ 'a': 4, 'b': 8 }, square);\n     * // => [16, 64] (iteration order is not guaranteed)\n     *\n     * var users = [\n     *   { 'user': 'barney' },\n     *   { 'user': 'fred' }\n     * ];\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.map(users, 'user');\n     * // => ['barney', 'fred']\n     */\n    function map(collection, iteratee) {\n      var func = isArray(collection) ? arrayMap : baseMap;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.sortBy` except that it allows specifying the sort\n     * orders of the iteratees to sort by. If `orders` is unspecified, all values\n     * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n     * descending or \"asc\" for ascending sort order of corresponding values.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n     *  The iteratees to sort by.\n     * @param {string[]} [orders] The sort orders of `iteratees`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n     * @returns {Array} Returns the new sorted array.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'fred',   'age': 48 },\n     *   { 'user': 'barney', 'age': 34 },\n     *   { 'user': 'fred',   'age': 40 },\n     *   { 'user': 'barney', 'age': 36 }\n     * ];\n     *\n     * // Sort by `user` in ascending order and by `age` in descending order.\n     * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n     * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n     */\n    function orderBy(collection, iteratees, orders, guard) {\n      if (collection == null) {\n        return [];\n      }\n      if (!isArray(iteratees)) {\n        iteratees = iteratees == null ? [] : [iteratees];\n      }\n      orders = guard ? undefined : orders;\n      if (!isArray(orders)) {\n        orders = orders == null ? [] : [orders];\n      }\n      return baseOrderBy(collection, iteratees, orders);\n    }\n\n    /**\n     * Creates an array of elements split into two groups, the first of which\n     * contains elements `predicate` returns truthy for, the second of which\n     * contains elements `predicate` returns falsey for. The predicate is\n     * invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the array of grouped elements.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36, 'active': false },\n     *   { 'user': 'fred',    'age': 40, 'active': true },\n     *   { 'user': 'pebbles', 'age': 1,  'active': false }\n     * ];\n     *\n     * _.partition(users, function(o) { return o.active; });\n     * // => objects for [['fred'], ['barney', 'pebbles']]\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.partition(users, { 'age': 1, 'active': false });\n     * // => objects for [['pebbles'], ['barney', 'fred']]\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.partition(users, ['active', false]);\n     * // => objects for [['barney', 'pebbles'], ['fred']]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.partition(users, 'active');\n     * // => objects for [['fred'], ['barney', 'pebbles']]\n     */\n    var partition = createAggregator(function(result, value, key) {\n      result[key ? 0 : 1].push(value);\n    }, function() { return [[], []]; });\n\n    /**\n     * Reduces `collection` to a value which is the accumulated result of running\n     * each element in `collection` thru `iteratee`, where each successive\n     * invocation is supplied the return value of the previous. If `accumulator`\n     * is not given, the first element of `collection` is used as the initial\n     * value. The iteratee is invoked with four arguments:\n     * (accumulator, value, index|key, collection).\n     *\n     * Many lodash methods are guarded to work as iteratees for methods like\n     * `_.reduce`, `_.reduceRight`, and `_.transform`.\n     *\n     * The guarded methods are:\n     * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n     * and `sortBy`\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {*} [accumulator] The initial value.\n     * @returns {*} Returns the accumulated value.\n     * @see _.reduceRight\n     * @example\n     *\n     * _.reduce([1, 2], function(sum, n) {\n     *   return sum + n;\n     * }, 0);\n     * // => 3\n     *\n     * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n     *   (result[value] || (result[value] = [])).push(key);\n     *   return result;\n     * }, {});\n     * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n     */\n    function reduce(collection, iteratee, accumulator) {\n      var func = isArray(collection) ? arrayReduce : baseReduce,\n          initAccum = arguments.length < 3;\n\n      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n    }\n\n    /**\n     * This method is like `_.reduce` except that it iterates over elements of\n     * `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {*} [accumulator] The initial value.\n     * @returns {*} Returns the accumulated value.\n     * @see _.reduce\n     * @example\n     *\n     * var array = [[0, 1], [2, 3], [4, 5]];\n     *\n     * _.reduceRight(array, function(flattened, other) {\n     *   return flattened.concat(other);\n     * }, []);\n     * // => [4, 5, 2, 3, 0, 1]\n     */\n    function reduceRight(collection, iteratee, accumulator) {\n      var func = isArray(collection) ? arrayReduceRight : baseReduce,\n          initAccum = arguments.length < 3;\n\n      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n    }\n\n    /**\n     * The opposite of `_.filter`; this method returns the elements of `collection`\n     * that `predicate` does **not** return truthy for.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new filtered array.\n     * @see _.filter\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': false },\n     *   { 'user': 'fred',   'age': 40, 'active': true }\n     * ];\n     *\n     * _.reject(users, function(o) { return !o.active; });\n     * // => objects for ['fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.reject(users, { 'age': 40, 'active': true });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.reject(users, ['active', false]);\n     * // => objects for ['fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.reject(users, 'active');\n     * // => objects for ['barney']\n     */\n    function reject(collection, predicate) {\n      var func = isArray(collection) ? arrayFilter : baseFilter;\n      return func(collection, negate(getIteratee(predicate, 3)));\n    }\n\n    /**\n     * Gets a random element from `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to sample.\n     * @returns {*} Returns the random element.\n     * @example\n     *\n     * _.sample([1, 2, 3, 4]);\n     * // => 2\n     */\n    function sample(collection) {\n      var func = isArray(collection) ? arraySample : baseSample;\n      return func(collection);\n    }\n\n    /**\n     * Gets `n` random elements at unique keys from `collection` up to the\n     * size of `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to sample.\n     * @param {number} [n=1] The number of elements to sample.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the random elements.\n     * @example\n     *\n     * _.sampleSize([1, 2, 3], 2);\n     * // => [3, 1]\n     *\n     * _.sampleSize([1, 2, 3], 4);\n     * // => [2, 3, 1]\n     */\n    function sampleSize(collection, n, guard) {\n      if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n        n = 1;\n      } else {\n        n = toInteger(n);\n      }\n      var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n      return func(collection, n);\n    }\n\n    /**\n     * Creates an array of shuffled values, using a version of the\n     * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     * @example\n     *\n     * _.shuffle([1, 2, 3, 4]);\n     * // => [4, 1, 3, 2]\n     */\n    function shuffle(collection) {\n      var func = isArray(collection) ? arrayShuffle : baseShuffle;\n      return func(collection);\n    }\n\n    /**\n     * Gets the size of `collection` by returning its length for array-like\n     * values or the number of own enumerable string keyed properties for objects.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object|string} collection The collection to inspect.\n     * @returns {number} Returns the collection size.\n     * @example\n     *\n     * _.size([1, 2, 3]);\n     * // => 3\n     *\n     * _.size({ 'a': 1, 'b': 2 });\n     * // => 2\n     *\n     * _.size('pebbles');\n     * // => 7\n     */\n    function size(collection) {\n      if (collection == null) {\n        return 0;\n      }\n      if (isArrayLike(collection)) {\n        return isString(collection) ? stringSize(collection) : collection.length;\n      }\n      var tag = getTag(collection);\n      if (tag == mapTag || tag == setTag) {\n        return collection.size;\n      }\n      return baseKeys(collection).length;\n    }\n\n    /**\n     * Checks if `predicate` returns truthy for **any** element of `collection`.\n     * Iteration is stopped once `predicate` returns truthy. The predicate is\n     * invoked with three arguments: (value, index|key, collection).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {boolean} Returns `true` if any element passes the predicate check,\n     *  else `false`.\n     * @example\n     *\n     * _.some([null, 0, 'yes', false], Boolean);\n     * // => true\n     *\n     * var users = [\n     *   { 'user': 'barney', 'active': true },\n     *   { 'user': 'fred',   'active': false }\n     * ];\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.some(users, { 'user': 'barney', 'active': false });\n     * // => false\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.some(users, ['active', false]);\n     * // => true\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.some(users, 'active');\n     * // => true\n     */\n    function some(collection, predicate, guard) {\n      var func = isArray(collection) ? arraySome : baseSome;\n      if (guard && isIterateeCall(collection, predicate, guard)) {\n        predicate = undefined;\n      }\n      return func(collection, getIteratee(predicate, 3));\n    }\n\n    /**\n     * Creates an array of elements, sorted in ascending order by the results of\n     * running each element in a collection thru each iteratee. This method\n     * performs a stable sort, that is, it preserves the original sort order of\n     * equal elements. The iteratees are invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {...(Function|Function[])} [iteratees=[_.identity]]\n     *  The iteratees to sort by.\n     * @returns {Array} Returns the new sorted array.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'fred',   'age': 48 },\n     *   { 'user': 'barney', 'age': 36 },\n     *   { 'user': 'fred',   'age': 30 },\n     *   { 'user': 'barney', 'age': 34 }\n     * ];\n     *\n     * _.sortBy(users, [function(o) { return o.user; }]);\n     * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n     *\n     * _.sortBy(users, ['user', 'age']);\n     * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n     */\n    var sortBy = baseRest(function(collection, iteratees) {\n      if (collection == null) {\n        return [];\n      }\n      var length = iteratees.length;\n      if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n        iteratees = [];\n      } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n        iteratees = [iteratees[0]];\n      }\n      return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n    });\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Gets the timestamp of the number of milliseconds that have elapsed since\n     * the Unix epoch (1 January 1970 00:00:00 UTC).\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Date\n     * @returns {number} Returns the timestamp.\n     * @example\n     *\n     * _.defer(function(stamp) {\n     *   console.log(_.now() - stamp);\n     * }, _.now());\n     * // => Logs the number of milliseconds it took for the deferred invocation.\n     */\n    var now = ctxNow || function() {\n      return root.Date.now();\n    };\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * The opposite of `_.before`; this method creates a function that invokes\n     * `func` once it's called `n` or more times.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {number} n The number of calls before `func` is invoked.\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * var saves = ['profile', 'settings'];\n     *\n     * var done = _.after(saves.length, function() {\n     *   console.log('done saving!');\n     * });\n     *\n     * _.forEach(saves, function(type) {\n     *   asyncSave({ 'type': type, 'complete': done });\n     * });\n     * // => Logs 'done saving!' after the two async saves have completed.\n     */\n    function after(n, func) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      n = toInteger(n);\n      return function() {\n        if (--n < 1) {\n          return func.apply(this, arguments);\n        }\n      };\n    }\n\n    /**\n     * Creates a function that invokes `func`, with up to `n` arguments,\n     * ignoring any additional arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to cap arguments for.\n     * @param {number} [n=func.length] The arity cap.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new capped function.\n     * @example\n     *\n     * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n     * // => [6, 8, 10]\n     */\n    function ary(func, n, guard) {\n      n = guard ? undefined : n;\n      n = (func && n == null) ? func.length : n;\n      return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n    }\n\n    /**\n     * Creates a function that invokes `func`, with the `this` binding and arguments\n     * of the created function, while it's called less than `n` times. Subsequent\n     * calls to the created function return the result of the last `func` invocation.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {number} n The number of calls at which `func` is no longer invoked.\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * jQuery(element).on('click', _.before(5, addContactToList));\n     * // => Allows adding up to 4 contacts to the list.\n     */\n    function before(n, func) {\n      var result;\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      n = toInteger(n);\n      return function() {\n        if (--n > 0) {\n          result = func.apply(this, arguments);\n        }\n        if (n <= 1) {\n          func = undefined;\n        }\n        return result;\n      };\n    }\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of `thisArg`\n     * and `partials` prepended to the arguments it receives.\n     *\n     * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n     * may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n     * property of bound functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to bind.\n     * @param {*} thisArg The `this` binding of `func`.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new bound function.\n     * @example\n     *\n     * function greet(greeting, punctuation) {\n     *   return greeting + ' ' + this.user + punctuation;\n     * }\n     *\n     * var object = { 'user': 'fred' };\n     *\n     * var bound = _.bind(greet, object, 'hi');\n     * bound('!');\n     * // => 'hi fred!'\n     *\n     * // Bound with placeholders.\n     * var bound = _.bind(greet, object, _, '!');\n     * bound('hi');\n     * // => 'hi fred!'\n     */\n    var bind = baseRest(function(func, thisArg, partials) {\n      var bitmask = WRAP_BIND_FLAG;\n      if (partials.length) {\n        var holders = replaceHolders(partials, getHolder(bind));\n        bitmask |= WRAP_PARTIAL_FLAG;\n      }\n      return createWrap(func, bitmask, thisArg, partials, holders);\n    });\n\n    /**\n     * Creates a function that invokes the method at `object[key]` with `partials`\n     * prepended to the arguments it receives.\n     *\n     * This method differs from `_.bind` by allowing bound functions to reference\n     * methods that may be redefined or don't yet exist. See\n     * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n     * for more details.\n     *\n     * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.10.0\n     * @category Function\n     * @param {Object} object The object to invoke the method on.\n     * @param {string} key The key of the method.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new bound function.\n     * @example\n     *\n     * var object = {\n     *   'user': 'fred',\n     *   'greet': function(greeting, punctuation) {\n     *     return greeting + ' ' + this.user + punctuation;\n     *   }\n     * };\n     *\n     * var bound = _.bindKey(object, 'greet', 'hi');\n     * bound('!');\n     * // => 'hi fred!'\n     *\n     * object.greet = function(greeting, punctuation) {\n     *   return greeting + 'ya ' + this.user + punctuation;\n     * };\n     *\n     * bound('!');\n     * // => 'hiya fred!'\n     *\n     * // Bound with placeholders.\n     * var bound = _.bindKey(object, 'greet', _, '!');\n     * bound('hi');\n     * // => 'hiya fred!'\n     */\n    var bindKey = baseRest(function(object, key, partials) {\n      var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n      if (partials.length) {\n        var holders = replaceHolders(partials, getHolder(bindKey));\n        bitmask |= WRAP_PARTIAL_FLAG;\n      }\n      return createWrap(key, bitmask, object, partials, holders);\n    });\n\n    /**\n     * Creates a function that accepts arguments of `func` and either invokes\n     * `func` returning its result, if at least `arity` number of arguments have\n     * been provided, or returns a function that accepts the remaining `func`\n     * arguments, and so on. The arity of `func` may be specified if `func.length`\n     * is not sufficient.\n     *\n     * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n     * may be used as a placeholder for provided arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of curried functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Function\n     * @param {Function} func The function to curry.\n     * @param {number} [arity=func.length] The arity of `func`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new curried function.\n     * @example\n     *\n     * var abc = function(a, b, c) {\n     *   return [a, b, c];\n     * };\n     *\n     * var curried = _.curry(abc);\n     *\n     * curried(1)(2)(3);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2)(3);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2, 3);\n     * // => [1, 2, 3]\n     *\n     * // Curried with placeholders.\n     * curried(1)(_, 3)(2);\n     * // => [1, 2, 3]\n     */\n    function curry(func, arity, guard) {\n      arity = guard ? undefined : arity;\n      var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n      result.placeholder = curry.placeholder;\n      return result;\n    }\n\n    /**\n     * This method is like `_.curry` except that arguments are applied to `func`\n     * in the manner of `_.partialRight` instead of `_.partial`.\n     *\n     * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for provided arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of curried functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to curry.\n     * @param {number} [arity=func.length] The arity of `func`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new curried function.\n     * @example\n     *\n     * var abc = function(a, b, c) {\n     *   return [a, b, c];\n     * };\n     *\n     * var curried = _.curryRight(abc);\n     *\n     * curried(3)(2)(1);\n     * // => [1, 2, 3]\n     *\n     * curried(2, 3)(1);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2, 3);\n     * // => [1, 2, 3]\n     *\n     * // Curried with placeholders.\n     * curried(3)(1, _)(2);\n     * // => [1, 2, 3]\n     */\n    function curryRight(func, arity, guard) {\n      arity = guard ? undefined : arity;\n      var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n      result.placeholder = curryRight.placeholder;\n      return result;\n    }\n\n    /**\n     * Creates a debounced function that delays invoking `func` until after `wait`\n     * milliseconds have elapsed since the last time the debounced function was\n     * invoked. The debounced function comes with a `cancel` method to cancel\n     * delayed `func` invocations and a `flush` method to immediately invoke them.\n     * Provide `options` to indicate whether `func` should be invoked on the\n     * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n     * with the last arguments provided to the debounced function. Subsequent\n     * calls to the debounced function return the result of the last `func`\n     * invocation.\n     *\n     * **Note:** If `leading` and `trailing` options are `true`, `func` is\n     * invoked on the trailing edge of the timeout only if the debounced function\n     * is invoked more than once during the `wait` timeout.\n     *\n     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n     * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n     *\n     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n     * for details over the differences between `_.debounce` and `_.throttle`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to debounce.\n     * @param {number} [wait=0] The number of milliseconds to delay.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.leading=false]\n     *  Specify invoking on the leading edge of the timeout.\n     * @param {number} [options.maxWait]\n     *  The maximum time `func` is allowed to be delayed before it's invoked.\n     * @param {boolean} [options.trailing=true]\n     *  Specify invoking on the trailing edge of the timeout.\n     * @returns {Function} Returns the new debounced function.\n     * @example\n     *\n     * // Avoid costly calculations while the window size is in flux.\n     * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n     *\n     * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n     * jQuery(element).on('click', _.debounce(sendMail, 300, {\n     *   'leading': true,\n     *   'trailing': false\n     * }));\n     *\n     * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n     * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n     * var source = new EventSource('/stream');\n     * jQuery(source).on('message', debounced);\n     *\n     * // Cancel the trailing debounced invocation.\n     * jQuery(window).on('popstate', debounced.cancel);\n     */\n    function debounce(func, wait, options) {\n      var lastArgs,\n          lastThis,\n          maxWait,\n          result,\n          timerId,\n          lastCallTime,\n          lastInvokeTime = 0,\n          leading = false,\n          maxing = false,\n          trailing = true;\n\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      wait = toNumber(wait) || 0;\n      if (isObject(options)) {\n        leading = !!options.leading;\n        maxing = 'maxWait' in options;\n        maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n        trailing = 'trailing' in options ? !!options.trailing : trailing;\n      }\n\n      function invokeFunc(time) {\n        var args = lastArgs,\n            thisArg = lastThis;\n\n        lastArgs = lastThis = undefined;\n        lastInvokeTime = time;\n        result = func.apply(thisArg, args);\n        return result;\n      }\n\n      function leadingEdge(time) {\n        // Reset any `maxWait` timer.\n        lastInvokeTime = time;\n        // Start the timer for the trailing edge.\n        timerId = setTimeout(timerExpired, wait);\n        // Invoke the leading edge.\n        return leading ? invokeFunc(time) : result;\n      }\n\n      function remainingWait(time) {\n        var timeSinceLastCall = time - lastCallTime,\n            timeSinceLastInvoke = time - lastInvokeTime,\n            timeWaiting = wait - timeSinceLastCall;\n\n        return maxing\n          ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n          : timeWaiting;\n      }\n\n      function shouldInvoke(time) {\n        var timeSinceLastCall = time - lastCallTime,\n            timeSinceLastInvoke = time - lastInvokeTime;\n\n        // Either this is the first call, activity has stopped and we're at the\n        // trailing edge, the system time has gone backwards and we're treating\n        // it as the trailing edge, or we've hit the `maxWait` limit.\n        return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n          (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n      }\n\n      function timerExpired() {\n        var time = now();\n        if (shouldInvoke(time)) {\n          return trailingEdge(time);\n        }\n        // Restart the timer.\n        timerId = setTimeout(timerExpired, remainingWait(time));\n      }\n\n      function trailingEdge(time) {\n        timerId = undefined;\n\n        // Only invoke if we have `lastArgs` which means `func` has been\n        // debounced at least once.\n        if (trailing && lastArgs) {\n          return invokeFunc(time);\n        }\n        lastArgs = lastThis = undefined;\n        return result;\n      }\n\n      function cancel() {\n        if (timerId !== undefined) {\n          clearTimeout(timerId);\n        }\n        lastInvokeTime = 0;\n        lastArgs = lastCallTime = lastThis = timerId = undefined;\n      }\n\n      function flush() {\n        return timerId === undefined ? result : trailingEdge(now());\n      }\n\n      function debounced() {\n        var time = now(),\n            isInvoking = shouldInvoke(time);\n\n        lastArgs = arguments;\n        lastThis = this;\n        lastCallTime = time;\n\n        if (isInvoking) {\n          if (timerId === undefined) {\n            return leadingEdge(lastCallTime);\n          }\n          if (maxing) {\n            // Handle invocations in a tight loop.\n            clearTimeout(timerId);\n            timerId = setTimeout(timerExpired, wait);\n            return invokeFunc(lastCallTime);\n          }\n        }\n        if (timerId === undefined) {\n          timerId = setTimeout(timerExpired, wait);\n        }\n        return result;\n      }\n      debounced.cancel = cancel;\n      debounced.flush = flush;\n      return debounced;\n    }\n\n    /**\n     * Defers invoking the `func` until the current call stack has cleared. Any\n     * additional arguments are provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to defer.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {number} Returns the timer id.\n     * @example\n     *\n     * _.defer(function(text) {\n     *   console.log(text);\n     * }, 'deferred');\n     * // => Logs 'deferred' after one millisecond.\n     */\n    var defer = baseRest(function(func, args) {\n      return baseDelay(func, 1, args);\n    });\n\n    /**\n     * Invokes `func` after `wait` milliseconds. Any additional arguments are\n     * provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {number} Returns the timer id.\n     * @example\n     *\n     * _.delay(function(text) {\n     *   console.log(text);\n     * }, 1000, 'later');\n     * // => Logs 'later' after one second.\n     */\n    var delay = baseRest(function(func, wait, args) {\n      return baseDelay(func, toNumber(wait) || 0, args);\n    });\n\n    /**\n     * Creates a function that invokes `func` with arguments reversed.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\n     * @param {Function} func The function to flip arguments for.\n     * @returns {Function} Returns the new flipped function.\n     * @example\n     *\n     * var flipped = _.flip(function() {\n     *   return _.toArray(arguments);\n     * });\n     *\n     * flipped('a', 'b', 'c', 'd');\n     * // => ['d', 'c', 'b', 'a']\n     */\n    function flip(func) {\n      return createWrap(func, WRAP_FLIP_FLAG);\n    }\n\n    /**\n     * Creates a function that memoizes the result of `func`. If `resolver` is\n     * provided, it determines the cache key for storing the result based on the\n     * arguments provided to the memoized function. By default, the first argument\n     * provided to the memoized function is used as the map cache key. The `func`\n     * is invoked with the `this` binding of the memoized function.\n     *\n     * **Note:** The cache is exposed as the `cache` property on the memoized\n     * function. Its creation may be customized by replacing the `_.memoize.Cache`\n     * constructor with one whose instances implement the\n     * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n     * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to have its output memoized.\n     * @param {Function} [resolver] The function to resolve the cache key.\n     * @returns {Function} Returns the new memoized function.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2 };\n     * var other = { 'c': 3, 'd': 4 };\n     *\n     * var values = _.memoize(_.values);\n     * values(object);\n     * // => [1, 2]\n     *\n     * values(other);\n     * // => [3, 4]\n     *\n     * object.a = 2;\n     * values(object);\n     * // => [1, 2]\n     *\n     * // Modify the result cache.\n     * values.cache.set(object, ['a', 'b']);\n     * values(object);\n     * // => ['a', 'b']\n     *\n     * // Replace `_.memoize.Cache`.\n     * _.memoize.Cache = WeakMap;\n     */\n    function memoize(func, resolver) {\n      if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      var memoized = function() {\n        var args = arguments,\n            key = resolver ? resolver.apply(this, args) : args[0],\n            cache = memoized.cache;\n\n        if (cache.has(key)) {\n          return cache.get(key);\n        }\n        var result = func.apply(this, args);\n        memoized.cache = cache.set(key, result) || cache;\n        return result;\n      };\n      memoized.cache = new (memoize.Cache || MapCache);\n      return memoized;\n    }\n\n    // Expose `MapCache`.\n    memoize.Cache = MapCache;\n\n    /**\n     * Creates a function that negates the result of the predicate `func`. The\n     * `func` predicate is invoked with the `this` binding and arguments of the\n     * created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} predicate The predicate to negate.\n     * @returns {Function} Returns the new negated function.\n     * @example\n     *\n     * function isEven(n) {\n     *   return n % 2 == 0;\n     * }\n     *\n     * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n     * // => [1, 3, 5]\n     */\n    function negate(predicate) {\n      if (typeof predicate != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      return function() {\n        var args = arguments;\n        switch (args.length) {\n          case 0: return !predicate.call(this);\n          case 1: return !predicate.call(this, args[0]);\n          case 2: return !predicate.call(this, args[0], args[1]);\n          case 3: return !predicate.call(this, args[0], args[1], args[2]);\n        }\n        return !predicate.apply(this, args);\n      };\n    }\n\n    /**\n     * Creates a function that is restricted to invoking `func` once. Repeat calls\n     * to the function return the value of the first invocation. The `func` is\n     * invoked with the `this` binding and arguments of the created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * var initialize = _.once(createApplication);\n     * initialize();\n     * initialize();\n     * // => `createApplication` is invoked once\n     */\n    function once(func) {\n      return before(2, func);\n    }\n\n    /**\n     * Creates a function that invokes `func` with its arguments transformed.\n     *\n     * @static\n     * @since 4.0.0\n     * @memberOf _\n     * @category Function\n     * @param {Function} func The function to wrap.\n     * @param {...(Function|Function[])} [transforms=[_.identity]]\n     *  The argument transforms.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * function doubled(n) {\n     *   return n * 2;\n     * }\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var func = _.overArgs(function(x, y) {\n     *   return [x, y];\n     * }, [square, doubled]);\n     *\n     * func(9, 3);\n     * // => [81, 6]\n     *\n     * func(10, 5);\n     * // => [100, 10]\n     */\n    var overArgs = castRest(function(func, transforms) {\n      transforms = (transforms.length == 1 && isArray(transforms[0]))\n        ? arrayMap(transforms[0], baseUnary(getIteratee()))\n        : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n      var funcsLength = transforms.length;\n      return baseRest(function(args) {\n        var index = -1,\n            length = nativeMin(args.length, funcsLength);\n\n        while (++index < length) {\n          args[index] = transforms[index].call(this, args[index]);\n        }\n        return apply(func, this, args);\n      });\n    });\n\n    /**\n     * Creates a function that invokes `func` with `partials` prepended to the\n     * arguments it receives. This method is like `_.bind` except it does **not**\n     * alter the `this` binding.\n     *\n     * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of partially\n     * applied functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.2.0\n     * @category Function\n     * @param {Function} func The function to partially apply arguments to.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new partially applied function.\n     * @example\n     *\n     * function greet(greeting, name) {\n     *   return greeting + ' ' + name;\n     * }\n     *\n     * var sayHelloTo = _.partial(greet, 'hello');\n     * sayHelloTo('fred');\n     * // => 'hello fred'\n     *\n     * // Partially applied with placeholders.\n     * var greetFred = _.partial(greet, _, 'fred');\n     * greetFred('hi');\n     * // => 'hi fred'\n     */\n    var partial = baseRest(function(func, partials) {\n      var holders = replaceHolders(partials, getHolder(partial));\n      return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n    });\n\n    /**\n     * This method is like `_.partial` except that partially applied arguments\n     * are appended to the arguments it receives.\n     *\n     * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of partially\n     * applied functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Function\n     * @param {Function} func The function to partially apply arguments to.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new partially applied function.\n     * @example\n     *\n     * function greet(greeting, name) {\n     *   return greeting + ' ' + name;\n     * }\n     *\n     * var greetFred = _.partialRight(greet, 'fred');\n     * greetFred('hi');\n     * // => 'hi fred'\n     *\n     * // Partially applied with placeholders.\n     * var sayHelloTo = _.partialRight(greet, 'hello', _);\n     * sayHelloTo('fred');\n     * // => 'hello fred'\n     */\n    var partialRight = baseRest(function(func, partials) {\n      var holders = replaceHolders(partials, getHolder(partialRight));\n      return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n    });\n\n    /**\n     * Creates a function that invokes `func` with arguments arranged according\n     * to the specified `indexes` where the argument value at the first index is\n     * provided as the first argument, the argument value at the second index is\n     * provided as the second argument, and so on.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to rearrange arguments for.\n     * @param {...(number|number[])} indexes The arranged argument indexes.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var rearged = _.rearg(function(a, b, c) {\n     *   return [a, b, c];\n     * }, [2, 0, 1]);\n     *\n     * rearged('b', 'c', 'a')\n     * // => ['a', 'b', 'c']\n     */\n    var rearg = flatRest(function(func, indexes) {\n      return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n    });\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of the\n     * created function and arguments from `start` and beyond provided as\n     * an array.\n     *\n     * **Note:** This method is based on the\n     * [rest parameter](https://mdn.io/rest_parameters).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\n     * @param {Function} func The function to apply a rest parameter to.\n     * @param {number} [start=func.length-1] The start position of the rest parameter.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var say = _.rest(function(what, names) {\n     *   return what + ' ' + _.initial(names).join(', ') +\n     *     (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n     * });\n     *\n     * say('hello', 'fred', 'barney', 'pebbles');\n     * // => 'hello fred, barney, & pebbles'\n     */\n    function rest(func, start) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      start = start === undefined ? start : toInteger(start);\n      return baseRest(func, start);\n    }\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of the\n     * create function and an array of arguments much like\n     * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n     *\n     * **Note:** This method is based on the\n     * [spread operator](https://mdn.io/spread_operator).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Function\n     * @param {Function} func The function to spread arguments over.\n     * @param {number} [start=0] The start position of the spread.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var say = _.spread(function(who, what) {\n     *   return who + ' says ' + what;\n     * });\n     *\n     * say(['fred', 'hello']);\n     * // => 'fred says hello'\n     *\n     * var numbers = Promise.all([\n     *   Promise.resolve(40),\n     *   Promise.resolve(36)\n     * ]);\n     *\n     * numbers.then(_.spread(function(x, y) {\n     *   return x + y;\n     * }));\n     * // => a Promise of 76\n     */\n    function spread(func, start) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      start = start == null ? 0 : nativeMax(toInteger(start), 0);\n      return baseRest(function(args) {\n        var array = args[start],\n            otherArgs = castSlice(args, 0, start);\n\n        if (array) {\n          arrayPush(otherArgs, array);\n        }\n        return apply(func, this, otherArgs);\n      });\n    }\n\n    /**\n     * Creates a throttled function that only invokes `func` at most once per\n     * every `wait` milliseconds. The throttled function comes with a `cancel`\n     * method to cancel delayed `func` invocations and a `flush` method to\n     * immediately invoke them. Provide `options` to indicate whether `func`\n     * should be invoked on the leading and/or trailing edge of the `wait`\n     * timeout. The `func` is invoked with the last arguments provided to the\n     * throttled function. Subsequent calls to the throttled function return the\n     * result of the last `func` invocation.\n     *\n     * **Note:** If `leading` and `trailing` options are `true`, `func` is\n     * invoked on the trailing edge of the timeout only if the throttled function\n     * is invoked more than once during the `wait` timeout.\n     *\n     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n     * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n     *\n     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n     * for details over the differences between `_.throttle` and `_.debounce`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to throttle.\n     * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.leading=true]\n     *  Specify invoking on the leading edge of the timeout.\n     * @param {boolean} [options.trailing=true]\n     *  Specify invoking on the trailing edge of the timeout.\n     * @returns {Function} Returns the new throttled function.\n     * @example\n     *\n     * // Avoid excessively updating the position while scrolling.\n     * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n     *\n     * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n     * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n     * jQuery(element).on('click', throttled);\n     *\n     * // Cancel the trailing throttled invocation.\n     * jQuery(window).on('popstate', throttled.cancel);\n     */\n    function throttle(func, wait, options) {\n      var leading = true,\n          trailing = true;\n\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      if (isObject(options)) {\n        leading = 'leading' in options ? !!options.leading : leading;\n        trailing = 'trailing' in options ? !!options.trailing : trailing;\n      }\n      return debounce(func, wait, {\n        'leading': leading,\n        'maxWait': wait,\n        'trailing': trailing\n      });\n    }\n\n    /**\n     * Creates a function that accepts up to one argument, ignoring any\n     * additional arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\n     * @param {Function} func The function to cap arguments for.\n     * @returns {Function} Returns the new capped function.\n     * @example\n     *\n     * _.map(['6', '8', '10'], _.unary(parseInt));\n     * // => [6, 8, 10]\n     */\n    function unary(func) {\n      return ary(func, 1);\n    }\n\n    /**\n     * Creates a function that provides `value` to `wrapper` as its first\n     * argument. Any additional arguments provided to the function are appended\n     * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n     * binding of the created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {*} value The value to wrap.\n     * @param {Function} [wrapper=identity] The wrapper function.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var p = _.wrap(_.escape, function(func, text) {\n     *   return '<p>' + func(text) + '</p>';\n     * });\n     *\n     * p('fred, barney, & pebbles');\n     * // => '<p>fred, barney, &amp; pebbles</p>'\n     */\n    function wrap(value, wrapper) {\n      return partial(castFunction(wrapper), value);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Casts `value` as an array if it's not one.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.4.0\n     * @category Lang\n     * @param {*} value The value to inspect.\n     * @returns {Array} Returns the cast array.\n     * @example\n     *\n     * _.castArray(1);\n     * // => [1]\n     *\n     * _.castArray({ 'a': 1 });\n     * // => [{ 'a': 1 }]\n     *\n     * _.castArray('abc');\n     * // => ['abc']\n     *\n     * _.castArray(null);\n     * // => [null]\n     *\n     * _.castArray(undefined);\n     * // => [undefined]\n     *\n     * _.castArray();\n     * // => []\n     *\n     * var array = [1, 2, 3];\n     * console.log(_.castArray(array) === array);\n     * // => true\n     */\n    function castArray() {\n      if (!arguments.length) {\n        return [];\n      }\n      var value = arguments[0];\n      return isArray(value) ? value : [value];\n    }\n\n    /**\n     * Creates a shallow clone of `value`.\n     *\n     * **Note:** This method is loosely based on the\n     * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n     * and supports cloning arrays, array buffers, booleans, date objects, maps,\n     * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n     * arrays. The own enumerable properties of `arguments` objects are cloned\n     * as plain objects. An empty object is returned for uncloneable values such\n     * as error objects, functions, DOM nodes, and WeakMaps.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to clone.\n     * @returns {*} Returns the cloned value.\n     * @see _.cloneDeep\n     * @example\n     *\n     * var objects = [{ 'a': 1 }, { 'b': 2 }];\n     *\n     * var shallow = _.clone(objects);\n     * console.log(shallow[0] === objects[0]);\n     * // => true\n     */\n    function clone(value) {\n      return baseClone(value, CLONE_SYMBOLS_FLAG);\n    }\n\n    /**\n     * This method is like `_.clone` except that it accepts `customizer` which\n     * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n     * cloning is handled by the method instead. The `customizer` is invoked with\n     * up to four arguments; (value [, index|key, object, stack]).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to clone.\n     * @param {Function} [customizer] The function to customize cloning.\n     * @returns {*} Returns the cloned value.\n     * @see _.cloneDeepWith\n     * @example\n     *\n     * function customizer(value) {\n     *   if (_.isElement(value)) {\n     *     return value.cloneNode(false);\n     *   }\n     * }\n     *\n     * var el = _.cloneWith(document.body, customizer);\n     *\n     * console.log(el === document.body);\n     * // => false\n     * console.log(el.nodeName);\n     * // => 'BODY'\n     * console.log(el.childNodes.length);\n     * // => 0\n     */\n    function cloneWith(value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n    }\n\n    /**\n     * This method is like `_.clone` except that it recursively clones `value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Lang\n     * @param {*} value The value to recursively clone.\n     * @returns {*} Returns the deep cloned value.\n     * @see _.clone\n     * @example\n     *\n     * var objects = [{ 'a': 1 }, { 'b': 2 }];\n     *\n     * var deep = _.cloneDeep(objects);\n     * console.log(deep[0] === objects[0]);\n     * // => false\n     */\n    function cloneDeep(value) {\n      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n    }\n\n    /**\n     * This method is like `_.cloneWith` except that it recursively clones `value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to recursively clone.\n     * @param {Function} [customizer] The function to customize cloning.\n     * @returns {*} Returns the deep cloned value.\n     * @see _.cloneWith\n     * @example\n     *\n     * function customizer(value) {\n     *   if (_.isElement(value)) {\n     *     return value.cloneNode(true);\n     *   }\n     * }\n     *\n     * var el = _.cloneDeepWith(document.body, customizer);\n     *\n     * console.log(el === document.body);\n     * // => false\n     * console.log(el.nodeName);\n     * // => 'BODY'\n     * console.log(el.childNodes.length);\n     * // => 20\n     */\n    function cloneDeepWith(value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n    }\n\n    /**\n     * Checks if `object` conforms to `source` by invoking the predicate\n     * properties of `source` with the corresponding property values of `object`.\n     *\n     * **Note:** This method is equivalent to `_.conforms` when `source` is\n     * partially applied.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.14.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2 };\n     *\n     * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n     * // => true\n     *\n     * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n     * // => false\n     */\n    function conformsTo(object, source) {\n      return source == null || baseConformsTo(object, source, keys(source));\n    }\n\n    /**\n     * Performs a\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * comparison between two values to determine if they are equivalent.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1 };\n     * var other = { 'a': 1 };\n     *\n     * _.eq(object, object);\n     * // => true\n     *\n     * _.eq(object, other);\n     * // => false\n     *\n     * _.eq('a', 'a');\n     * // => true\n     *\n     * _.eq('a', Object('a'));\n     * // => false\n     *\n     * _.eq(NaN, NaN);\n     * // => true\n     */\n    function eq(value, other) {\n      return value === other || (value !== value && other !== other);\n    }\n\n    /**\n     * Checks if `value` is greater than `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is greater than `other`,\n     *  else `false`.\n     * @see _.lt\n     * @example\n     *\n     * _.gt(3, 1);\n     * // => true\n     *\n     * _.gt(3, 3);\n     * // => false\n     *\n     * _.gt(1, 3);\n     * // => false\n     */\n    var gt = createRelationalOperation(baseGt);\n\n    /**\n     * Checks if `value` is greater than or equal to `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is greater than or equal to\n     *  `other`, else `false`.\n     * @see _.lte\n     * @example\n     *\n     * _.gte(3, 1);\n     * // => true\n     *\n     * _.gte(3, 3);\n     * // => true\n     *\n     * _.gte(1, 3);\n     * // => false\n     */\n    var gte = createRelationalOperation(function(value, other) {\n      return value >= other;\n    });\n\n    /**\n     * Checks if `value` is likely an `arguments` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n     *  else `false`.\n     * @example\n     *\n     * _.isArguments(function() { return arguments; }());\n     * // => true\n     *\n     * _.isArguments([1, 2, 3]);\n     * // => false\n     */\n    var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n      return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n        !propertyIsEnumerable.call(value, 'callee');\n    };\n\n    /**\n     * Checks if `value` is classified as an `Array` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n     * @example\n     *\n     * _.isArray([1, 2, 3]);\n     * // => true\n     *\n     * _.isArray(document.body.children);\n     * // => false\n     *\n     * _.isArray('abc');\n     * // => false\n     *\n     * _.isArray(_.noop);\n     * // => false\n     */\n    var isArray = Array.isArray;\n\n    /**\n     * Checks if `value` is classified as an `ArrayBuffer` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n     * @example\n     *\n     * _.isArrayBuffer(new ArrayBuffer(2));\n     * // => true\n     *\n     * _.isArrayBuffer(new Array(2));\n     * // => false\n     */\n    var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n    /**\n     * Checks if `value` is array-like. A value is considered array-like if it's\n     * not a function and has a `value.length` that's an integer greater than or\n     * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n     * @example\n     *\n     * _.isArrayLike([1, 2, 3]);\n     * // => true\n     *\n     * _.isArrayLike(document.body.children);\n     * // => true\n     *\n     * _.isArrayLike('abc');\n     * // => true\n     *\n     * _.isArrayLike(_.noop);\n     * // => false\n     */\n    function isArrayLike(value) {\n      return value != null && isLength(value.length) && !isFunction(value);\n    }\n\n    /**\n     * This method is like `_.isArrayLike` except that it also checks if `value`\n     * is an object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array-like object,\n     *  else `false`.\n     * @example\n     *\n     * _.isArrayLikeObject([1, 2, 3]);\n     * // => true\n     *\n     * _.isArrayLikeObject(document.body.children);\n     * // => true\n     *\n     * _.isArrayLikeObject('abc');\n     * // => false\n     *\n     * _.isArrayLikeObject(_.noop);\n     * // => false\n     */\n    function isArrayLikeObject(value) {\n      return isObjectLike(value) && isArrayLike(value);\n    }\n\n    /**\n     * Checks if `value` is classified as a boolean primitive or object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n     * @example\n     *\n     * _.isBoolean(false);\n     * // => true\n     *\n     * _.isBoolean(null);\n     * // => false\n     */\n    function isBoolean(value) {\n      return value === true || value === false ||\n        (isObjectLike(value) && baseGetTag(value) == boolTag);\n    }\n\n    /**\n     * Checks if `value` is a buffer.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n     * @example\n     *\n     * _.isBuffer(new Buffer(2));\n     * // => true\n     *\n     * _.isBuffer(new Uint8Array(2));\n     * // => false\n     */\n    var isBuffer = nativeIsBuffer || stubFalse;\n\n    /**\n     * Checks if `value` is classified as a `Date` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n     * @example\n     *\n     * _.isDate(new Date);\n     * // => true\n     *\n     * _.isDate('Mon April 23 2012');\n     * // => false\n     */\n    var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n    /**\n     * Checks if `value` is likely a DOM element.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n     * @example\n     *\n     * _.isElement(document.body);\n     * // => true\n     *\n     * _.isElement('<body>');\n     * // => false\n     */\n    function isElement(value) {\n      return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n    }\n\n    /**\n     * Checks if `value` is an empty object, collection, map, or set.\n     *\n     * Objects are considered empty if they have no own enumerable string keyed\n     * properties.\n     *\n     * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n     * jQuery-like collections are considered empty if they have a `length` of `0`.\n     * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n     * @example\n     *\n     * _.isEmpty(null);\n     * // => true\n     *\n     * _.isEmpty(true);\n     * // => true\n     *\n     * _.isEmpty(1);\n     * // => true\n     *\n     * _.isEmpty([1, 2, 3]);\n     * // => false\n     *\n     * _.isEmpty({ 'a': 1 });\n     * // => false\n     */\n    function isEmpty(value) {\n      if (value == null) {\n        return true;\n      }\n      if (isArrayLike(value) &&\n          (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n            isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n        return !value.length;\n      }\n      var tag = getTag(value);\n      if (tag == mapTag || tag == setTag) {\n        return !value.size;\n      }\n      if (isPrototype(value)) {\n        return !baseKeys(value).length;\n      }\n      for (var key in value) {\n        if (hasOwnProperty.call(value, key)) {\n          return false;\n        }\n      }\n      return true;\n    }\n\n    /**\n     * Performs a deep comparison between two values to determine if they are\n     * equivalent.\n     *\n     * **Note:** This method supports comparing arrays, array buffers, booleans,\n     * date objects, error objects, maps, numbers, `Object` objects, regexes,\n     * sets, strings, symbols, and typed arrays. `Object` objects are compared\n     * by their own, not inherited, enumerable properties. Functions and DOM\n     * nodes are compared by strict equality, i.e. `===`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1 };\n     * var other = { 'a': 1 };\n     *\n     * _.isEqual(object, other);\n     * // => true\n     *\n     * object === other;\n     * // => false\n     */\n    function isEqual(value, other) {\n      return baseIsEqual(value, other);\n    }\n\n    /**\n     * This method is like `_.isEqual` except that it accepts `customizer` which\n     * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n     * are handled by the method instead. The `customizer` is invoked with up to\n     * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     * @example\n     *\n     * function isGreeting(value) {\n     *   return /^h(?:i|ello)$/.test(value);\n     * }\n     *\n     * function customizer(objValue, othValue) {\n     *   if (isGreeting(objValue) && isGreeting(othValue)) {\n     *     return true;\n     *   }\n     * }\n     *\n     * var array = ['hello', 'goodbye'];\n     * var other = ['hi', 'goodbye'];\n     *\n     * _.isEqualWith(array, other, customizer);\n     * // => true\n     */\n    function isEqualWith(value, other, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      var result = customizer ? customizer(value, other) : undefined;\n      return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n    }\n\n    /**\n     * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n     * `SyntaxError`, `TypeError`, or `URIError` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n     * @example\n     *\n     * _.isError(new Error);\n     * // => true\n     *\n     * _.isError(Error);\n     * // => false\n     */\n    function isError(value) {\n      if (!isObjectLike(value)) {\n        return false;\n      }\n      var tag = baseGetTag(value);\n      return tag == errorTag || tag == domExcTag ||\n        (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n    }\n\n    /**\n     * Checks if `value` is a finite primitive number.\n     *\n     * **Note:** This method is based on\n     * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n     * @example\n     *\n     * _.isFinite(3);\n     * // => true\n     *\n     * _.isFinite(Number.MIN_VALUE);\n     * // => true\n     *\n     * _.isFinite(Infinity);\n     * // => false\n     *\n     * _.isFinite('3');\n     * // => false\n     */\n    function isFinite(value) {\n      return typeof value == 'number' && nativeIsFinite(value);\n    }\n\n    /**\n     * Checks if `value` is classified as a `Function` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n     * @example\n     *\n     * _.isFunction(_);\n     * // => true\n     *\n     * _.isFunction(/abc/);\n     * // => false\n     */\n    function isFunction(value) {\n      if (!isObject(value)) {\n        return false;\n      }\n      // The use of `Object#toString` avoids issues with the `typeof` operator\n      // in Safari 9 which returns 'object' for typed arrays and other constructors.\n      var tag = baseGetTag(value);\n      return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n    }\n\n    /**\n     * Checks if `value` is an integer.\n     *\n     * **Note:** This method is based on\n     * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n     * @example\n     *\n     * _.isInteger(3);\n     * // => true\n     *\n     * _.isInteger(Number.MIN_VALUE);\n     * // => false\n     *\n     * _.isInteger(Infinity);\n     * // => false\n     *\n     * _.isInteger('3');\n     * // => false\n     */\n    function isInteger(value) {\n      return typeof value == 'number' && value == toInteger(value);\n    }\n\n    /**\n     * Checks if `value` is a valid array-like length.\n     *\n     * **Note:** This method is loosely based on\n     * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n     * @example\n     *\n     * _.isLength(3);\n     * // => true\n     *\n     * _.isLength(Number.MIN_VALUE);\n     * // => false\n     *\n     * _.isLength(Infinity);\n     * // => false\n     *\n     * _.isLength('3');\n     * // => false\n     */\n    function isLength(value) {\n      return typeof value == 'number' &&\n        value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n    }\n\n    /**\n     * Checks if `value` is the\n     * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n     * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n     * @example\n     *\n     * _.isObject({});\n     * // => true\n     *\n     * _.isObject([1, 2, 3]);\n     * // => true\n     *\n     * _.isObject(_.noop);\n     * // => true\n     *\n     * _.isObject(null);\n     * // => false\n     */\n    function isObject(value) {\n      var type = typeof value;\n      return value != null && (type == 'object' || type == 'function');\n    }\n\n    /**\n     * Checks if `value` is object-like. A value is object-like if it's not `null`\n     * and has a `typeof` result of \"object\".\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n     * @example\n     *\n     * _.isObjectLike({});\n     * // => true\n     *\n     * _.isObjectLike([1, 2, 3]);\n     * // => true\n     *\n     * _.isObjectLike(_.noop);\n     * // => false\n     *\n     * _.isObjectLike(null);\n     * // => false\n     */\n    function isObjectLike(value) {\n      return value != null && typeof value == 'object';\n    }\n\n    /**\n     * Checks if `value` is classified as a `Map` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n     * @example\n     *\n     * _.isMap(new Map);\n     * // => true\n     *\n     * _.isMap(new WeakMap);\n     * // => false\n     */\n    var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n    /**\n     * Performs a partial deep comparison between `object` and `source` to\n     * determine if `object` contains equivalent property values.\n     *\n     * **Note:** This method is equivalent to `_.matches` when `source` is\n     * partially applied.\n     *\n     * Partial comparisons will match empty array and empty object `source`\n     * values against any array or object value, respectively. See `_.isEqual`\n     * for a list of supported value comparisons.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property values to match.\n     * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2 };\n     *\n     * _.isMatch(object, { 'b': 2 });\n     * // => true\n     *\n     * _.isMatch(object, { 'b': 1 });\n     * // => false\n     */\n    function isMatch(object, source) {\n      return object === source || baseIsMatch(object, source, getMatchData(source));\n    }\n\n    /**\n     * This method is like `_.isMatch` except that it accepts `customizer` which\n     * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n     * are handled by the method instead. The `customizer` is invoked with five\n     * arguments: (objValue, srcValue, index|key, object, source).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property values to match.\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n     * @example\n     *\n     * function isGreeting(value) {\n     *   return /^h(?:i|ello)$/.test(value);\n     * }\n     *\n     * function customizer(objValue, srcValue) {\n     *   if (isGreeting(objValue) && isGreeting(srcValue)) {\n     *     return true;\n     *   }\n     * }\n     *\n     * var object = { 'greeting': 'hello' };\n     * var source = { 'greeting': 'hi' };\n     *\n     * _.isMatchWith(object, source, customizer);\n     * // => true\n     */\n    function isMatchWith(object, source, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseIsMatch(object, source, getMatchData(source), customizer);\n    }\n\n    /**\n     * Checks if `value` is `NaN`.\n     *\n     * **Note:** This method is based on\n     * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n     * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n     * `undefined` and other non-number values.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n     * @example\n     *\n     * _.isNaN(NaN);\n     * // => true\n     *\n     * _.isNaN(new Number(NaN));\n     * // => true\n     *\n     * isNaN(undefined);\n     * // => true\n     *\n     * _.isNaN(undefined);\n     * // => false\n     */\n    function isNaN(value) {\n      // An `NaN` primitive is the only value that is not equal to itself.\n      // Perform the `toStringTag` check first to avoid errors with some\n      // ActiveX objects in IE.\n      return isNumber(value) && value != +value;\n    }\n\n    /**\n     * Checks if `value` is a pristine native function.\n     *\n     * **Note:** This method can't reliably detect native functions in the presence\n     * of the core-js package because core-js circumvents this kind of detection.\n     * Despite multiple requests, the core-js maintainer has made it clear: any\n     * attempt to fix the detection will be obstructed. As a result, we're left\n     * with little choice but to throw an error. Unfortunately, this also affects\n     * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n     * which rely on core-js.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a native function,\n     *  else `false`.\n     * @example\n     *\n     * _.isNative(Array.prototype.push);\n     * // => true\n     *\n     * _.isNative(_);\n     * // => false\n     */\n    function isNative(value) {\n      if (isMaskable(value)) {\n        throw new Error(CORE_ERROR_TEXT);\n      }\n      return baseIsNative(value);\n    }\n\n    /**\n     * Checks if `value` is `null`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n     * @example\n     *\n     * _.isNull(null);\n     * // => true\n     *\n     * _.isNull(void 0);\n     * // => false\n     */\n    function isNull(value) {\n      return value === null;\n    }\n\n    /**\n     * Checks if `value` is `null` or `undefined`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n     * @example\n     *\n     * _.isNil(null);\n     * // => true\n     *\n     * _.isNil(void 0);\n     * // => true\n     *\n     * _.isNil(NaN);\n     * // => false\n     */\n    function isNil(value) {\n      return value == null;\n    }\n\n    /**\n     * Checks if `value` is classified as a `Number` primitive or object.\n     *\n     * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n     * classified as numbers, use the `_.isFinite` method.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n     * @example\n     *\n     * _.isNumber(3);\n     * // => true\n     *\n     * _.isNumber(Number.MIN_VALUE);\n     * // => true\n     *\n     * _.isNumber(Infinity);\n     * // => true\n     *\n     * _.isNumber('3');\n     * // => false\n     */\n    function isNumber(value) {\n      return typeof value == 'number' ||\n        (isObjectLike(value) && baseGetTag(value) == numberTag);\n    }\n\n    /**\n     * Checks if `value` is a plain object, that is, an object created by the\n     * `Object` constructor or one with a `[[Prototype]]` of `null`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.8.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     * }\n     *\n     * _.isPlainObject(new Foo);\n     * // => false\n     *\n     * _.isPlainObject([1, 2, 3]);\n     * // => false\n     *\n     * _.isPlainObject({ 'x': 0, 'y': 0 });\n     * // => true\n     *\n     * _.isPlainObject(Object.create(null));\n     * // => true\n     */\n    function isPlainObject(value) {\n      if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n        return false;\n      }\n      var proto = getPrototype(value);\n      if (proto === null) {\n        return true;\n      }\n      var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n      return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n        funcToString.call(Ctor) == objectCtorString;\n    }\n\n    /**\n     * Checks if `value` is classified as a `RegExp` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n     * @example\n     *\n     * _.isRegExp(/abc/);\n     * // => true\n     *\n     * _.isRegExp('/abc/');\n     * // => false\n     */\n    var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n    /**\n     * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n     * double precision number which isn't the result of a rounded unsafe integer.\n     *\n     * **Note:** This method is based on\n     * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n     * @example\n     *\n     * _.isSafeInteger(3);\n     * // => true\n     *\n     * _.isSafeInteger(Number.MIN_VALUE);\n     * // => false\n     *\n     * _.isSafeInteger(Infinity);\n     * // => false\n     *\n     * _.isSafeInteger('3');\n     * // => false\n     */\n    function isSafeInteger(value) {\n      return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n    }\n\n    /**\n     * Checks if `value` is classified as a `Set` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n     * @example\n     *\n     * _.isSet(new Set);\n     * // => true\n     *\n     * _.isSet(new WeakSet);\n     * // => false\n     */\n    var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n    /**\n     * Checks if `value` is classified as a `String` primitive or object.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n     * @example\n     *\n     * _.isString('abc');\n     * // => true\n     *\n     * _.isString(1);\n     * // => false\n     */\n    function isString(value) {\n      return typeof value == 'string' ||\n        (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n    }\n\n    /**\n     * Checks if `value` is classified as a `Symbol` primitive or object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n     * @example\n     *\n     * _.isSymbol(Symbol.iterator);\n     * // => true\n     *\n     * _.isSymbol('abc');\n     * // => false\n     */\n    function isSymbol(value) {\n      return typeof value == 'symbol' ||\n        (isObjectLike(value) && baseGetTag(value) == symbolTag);\n    }\n\n    /**\n     * Checks if `value` is classified as a typed array.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n     * @example\n     *\n     * _.isTypedArray(new Uint8Array);\n     * // => true\n     *\n     * _.isTypedArray([]);\n     * // => false\n     */\n    var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n    /**\n     * Checks if `value` is `undefined`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n     * @example\n     *\n     * _.isUndefined(void 0);\n     * // => true\n     *\n     * _.isUndefined(null);\n     * // => false\n     */\n    function isUndefined(value) {\n      return value === undefined;\n    }\n\n    /**\n     * Checks if `value` is classified as a `WeakMap` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n     * @example\n     *\n     * _.isWeakMap(new WeakMap);\n     * // => true\n     *\n     * _.isWeakMap(new Map);\n     * // => false\n     */\n    function isWeakMap(value) {\n      return isObjectLike(value) && getTag(value) == weakMapTag;\n    }\n\n    /**\n     * Checks if `value` is classified as a `WeakSet` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n     * @example\n     *\n     * _.isWeakSet(new WeakSet);\n     * // => true\n     *\n     * _.isWeakSet(new Set);\n     * // => false\n     */\n    function isWeakSet(value) {\n      return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n    }\n\n    /**\n     * Checks if `value` is less than `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is less than `other`,\n     *  else `false`.\n     * @see _.gt\n     * @example\n     *\n     * _.lt(1, 3);\n     * // => true\n     *\n     * _.lt(3, 3);\n     * // => false\n     *\n     * _.lt(3, 1);\n     * // => false\n     */\n    var lt = createRelationalOperation(baseLt);\n\n    /**\n     * Checks if `value` is less than or equal to `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is less than or equal to\n     *  `other`, else `false`.\n     * @see _.gte\n     * @example\n     *\n     * _.lte(1, 3);\n     * // => true\n     *\n     * _.lte(3, 3);\n     * // => true\n     *\n     * _.lte(3, 1);\n     * // => false\n     */\n    var lte = createRelationalOperation(function(value, other) {\n      return value <= other;\n    });\n\n    /**\n     * Converts `value` to an array.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {Array} Returns the converted array.\n     * @example\n     *\n     * _.toArray({ 'a': 1, 'b': 2 });\n     * // => [1, 2]\n     *\n     * _.toArray('abc');\n     * // => ['a', 'b', 'c']\n     *\n     * _.toArray(1);\n     * // => []\n     *\n     * _.toArray(null);\n     * // => []\n     */\n    function toArray(value) {\n      if (!value) {\n        return [];\n      }\n      if (isArrayLike(value)) {\n        return isString(value) ? stringToArray(value) : copyArray(value);\n      }\n      if (symIterator && value[symIterator]) {\n        return iteratorToArray(value[symIterator]());\n      }\n      var tag = getTag(value),\n          func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n      return func(value);\n    }\n\n    /**\n     * Converts `value` to a finite number.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.12.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted number.\n     * @example\n     *\n     * _.toFinite(3.2);\n     * // => 3.2\n     *\n     * _.toFinite(Number.MIN_VALUE);\n     * // => 5e-324\n     *\n     * _.toFinite(Infinity);\n     * // => 1.7976931348623157e+308\n     *\n     * _.toFinite('3.2');\n     * // => 3.2\n     */\n    function toFinite(value) {\n      if (!value) {\n        return value === 0 ? value : 0;\n      }\n      value = toNumber(value);\n      if (value === INFINITY || value === -INFINITY) {\n        var sign = (value < 0 ? -1 : 1);\n        return sign * MAX_INTEGER;\n      }\n      return value === value ? value : 0;\n    }\n\n    /**\n     * Converts `value` to an integer.\n     *\n     * **Note:** This method is loosely based on\n     * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.toInteger(3.2);\n     * // => 3\n     *\n     * _.toInteger(Number.MIN_VALUE);\n     * // => 0\n     *\n     * _.toInteger(Infinity);\n     * // => 1.7976931348623157e+308\n     *\n     * _.toInteger('3.2');\n     * // => 3\n     */\n    function toInteger(value) {\n      var result = toFinite(value),\n          remainder = result % 1;\n\n      return result === result ? (remainder ? result - remainder : result) : 0;\n    }\n\n    /**\n     * Converts `value` to an integer suitable for use as the length of an\n     * array-like object.\n     *\n     * **Note:** This method is based on\n     * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.toLength(3.2);\n     * // => 3\n     *\n     * _.toLength(Number.MIN_VALUE);\n     * // => 0\n     *\n     * _.toLength(Infinity);\n     * // => 4294967295\n     *\n     * _.toLength('3.2');\n     * // => 3\n     */\n    function toLength(value) {\n      return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n    }\n\n    /**\n     * Converts `value` to a number.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to process.\n     * @returns {number} Returns the number.\n     * @example\n     *\n     * _.toNumber(3.2);\n     * // => 3.2\n     *\n     * _.toNumber(Number.MIN_VALUE);\n     * // => 5e-324\n     *\n     * _.toNumber(Infinity);\n     * // => Infinity\n     *\n     * _.toNumber('3.2');\n     * // => 3.2\n     */\n    function toNumber(value) {\n      if (typeof value == 'number') {\n        return value;\n      }\n      if (isSymbol(value)) {\n        return NAN;\n      }\n      if (isObject(value)) {\n        var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n        value = isObject(other) ? (other + '') : other;\n      }\n      if (typeof value != 'string') {\n        return value === 0 ? value : +value;\n      }\n      value = baseTrim(value);\n      var isBinary = reIsBinary.test(value);\n      return (isBinary || reIsOctal.test(value))\n        ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n        : (reIsBadHex.test(value) ? NAN : +value);\n    }\n\n    /**\n     * Converts `value` to a plain object flattening inherited enumerable string\n     * keyed properties of `value` to own properties of the plain object.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {Object} Returns the converted plain object.\n     * @example\n     *\n     * function Foo() {\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.assign({ 'a': 1 }, new Foo);\n     * // => { 'a': 1, 'b': 2 }\n     *\n     * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n     * // => { 'a': 1, 'b': 2, 'c': 3 }\n     */\n    function toPlainObject(value) {\n      return copyObject(value, keysIn(value));\n    }\n\n    /**\n     * Converts `value` to a safe integer. A safe integer can be compared and\n     * represented correctly.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.toSafeInteger(3.2);\n     * // => 3\n     *\n     * _.toSafeInteger(Number.MIN_VALUE);\n     * // => 0\n     *\n     * _.toSafeInteger(Infinity);\n     * // => 9007199254740991\n     *\n     * _.toSafeInteger('3.2');\n     * // => 3\n     */\n    function toSafeInteger(value) {\n      return value\n        ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n        : (value === 0 ? value : 0);\n    }\n\n    /**\n     * Converts `value` to a string. An empty string is returned for `null`\n     * and `undefined` values. The sign of `-0` is preserved.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {string} Returns the converted string.\n     * @example\n     *\n     * _.toString(null);\n     * // => ''\n     *\n     * _.toString(-0);\n     * // => '-0'\n     *\n     * _.toString([1, 2, 3]);\n     * // => '1,2,3'\n     */\n    function toString(value) {\n      return value == null ? '' : baseToString(value);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Assigns own enumerable string keyed properties of source objects to the\n     * destination object. Source objects are applied from left to right.\n     * Subsequent sources overwrite property assignments of previous sources.\n     *\n     * **Note:** This method mutates `object` and is loosely based on\n     * [`Object.assign`](https://mdn.io/Object/assign).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.10.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.assignIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     * }\n     *\n     * function Bar() {\n     *   this.c = 3;\n     * }\n     *\n     * Foo.prototype.b = 2;\n     * Bar.prototype.d = 4;\n     *\n     * _.assign({ 'a': 0 }, new Foo, new Bar);\n     * // => { 'a': 1, 'c': 3 }\n     */\n    var assign = createAssigner(function(object, source) {\n      if (isPrototype(source) || isArrayLike(source)) {\n        copyObject(source, keys(source), object);\n        return;\n      }\n      for (var key in source) {\n        if (hasOwnProperty.call(source, key)) {\n          assignValue(object, key, source[key]);\n        }\n      }\n    });\n\n    /**\n     * This method is like `_.assign` except that it iterates over own and\n     * inherited source properties.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias extend\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.assign\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     * }\n     *\n     * function Bar() {\n     *   this.c = 3;\n     * }\n     *\n     * Foo.prototype.b = 2;\n     * Bar.prototype.d = 4;\n     *\n     * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n     * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n     */\n    var assignIn = createAssigner(function(object, source) {\n      copyObject(source, keysIn(source), object);\n    });\n\n    /**\n     * This method is like `_.assignIn` except that it accepts `customizer`\n     * which is invoked to produce the assigned values. If `customizer` returns\n     * `undefined`, assignment is handled by the method instead. The `customizer`\n     * is invoked with five arguments: (objValue, srcValue, key, object, source).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias extendWith\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} sources The source objects.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @see _.assignWith\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   return _.isUndefined(objValue) ? srcValue : objValue;\n     * }\n     *\n     * var defaults = _.partialRight(_.assignInWith, customizer);\n     *\n     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n      copyObject(source, keysIn(source), object, customizer);\n    });\n\n    /**\n     * This method is like `_.assign` except that it accepts `customizer`\n     * which is invoked to produce the assigned values. If `customizer` returns\n     * `undefined`, assignment is handled by the method instead. The `customizer`\n     * is invoked with five arguments: (objValue, srcValue, key, object, source).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} sources The source objects.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @see _.assignInWith\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   return _.isUndefined(objValue) ? srcValue : objValue;\n     * }\n     *\n     * var defaults = _.partialRight(_.assignWith, customizer);\n     *\n     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n      copyObject(source, keys(source), object, customizer);\n    });\n\n    /**\n     * Creates an array of values corresponding to `paths` of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {...(string|string[])} [paths] The property paths to pick.\n     * @returns {Array} Returns the picked values.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n     *\n     * _.at(object, ['a[0].b.c', 'a[1]']);\n     * // => [3, 4]\n     */\n    var at = flatRest(baseAt);\n\n    /**\n     * Creates an object that inherits from the `prototype` object. If a\n     * `properties` object is given, its own enumerable string keyed properties\n     * are assigned to the created object.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.3.0\n     * @category Object\n     * @param {Object} prototype The object to inherit from.\n     * @param {Object} [properties] The properties to assign to the object.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * function Shape() {\n     *   this.x = 0;\n     *   this.y = 0;\n     * }\n     *\n     * function Circle() {\n     *   Shape.call(this);\n     * }\n     *\n     * Circle.prototype = _.create(Shape.prototype, {\n     *   'constructor': Circle\n     * });\n     *\n     * var circle = new Circle;\n     * circle instanceof Circle;\n     * // => true\n     *\n     * circle instanceof Shape;\n     * // => true\n     */\n    function create(prototype, properties) {\n      var result = baseCreate(prototype);\n      return properties == null ? result : baseAssign(result, properties);\n    }\n\n    /**\n     * Assigns own and inherited enumerable string keyed properties of source\n     * objects to the destination object for all destination properties that\n     * resolve to `undefined`. Source objects are applied from left to right.\n     * Once a property is set, additional values of the same property are ignored.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.defaultsDeep\n     * @example\n     *\n     * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var defaults = baseRest(function(object, sources) {\n      object = Object(object);\n\n      var index = -1;\n      var length = sources.length;\n      var guard = length > 2 ? sources[2] : undefined;\n\n      if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n        length = 1;\n      }\n\n      while (++index < length) {\n        var source = sources[index];\n        var props = keysIn(source);\n        var propsIndex = -1;\n        var propsLength = props.length;\n\n        while (++propsIndex < propsLength) {\n          var key = props[propsIndex];\n          var value = object[key];\n\n          if (value === undefined ||\n              (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n            object[key] = source[key];\n          }\n        }\n      }\n\n      return object;\n    });\n\n    /**\n     * This method is like `_.defaults` except that it recursively assigns\n     * default properties.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.defaults\n     * @example\n     *\n     * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n     * // => { 'a': { 'b': 2, 'c': 3 } }\n     */\n    var defaultsDeep = baseRest(function(args) {\n      args.push(undefined, customDefaultsMerge);\n      return apply(mergeWith, undefined, args);\n    });\n\n    /**\n     * This method is like `_.find` except that it returns the key of the first\n     * element `predicate` returns truthy for instead of the element itself.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.1.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {string|undefined} Returns the key of the matched element,\n     *  else `undefined`.\n     * @example\n     *\n     * var users = {\n     *   'barney':  { 'age': 36, 'active': true },\n     *   'fred':    { 'age': 40, 'active': false },\n     *   'pebbles': { 'age': 1,  'active': true }\n     * };\n     *\n     * _.findKey(users, function(o) { return o.age < 40; });\n     * // => 'barney' (iteration order is not guaranteed)\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findKey(users, { 'age': 1, 'active': true });\n     * // => 'pebbles'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findKey(users, ['active', false]);\n     * // => 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findKey(users, 'active');\n     * // => 'barney'\n     */\n    function findKey(object, predicate) {\n      return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n    }\n\n    /**\n     * This method is like `_.findKey` except that it iterates over elements of\n     * a collection in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {string|undefined} Returns the key of the matched element,\n     *  else `undefined`.\n     * @example\n     *\n     * var users = {\n     *   'barney':  { 'age': 36, 'active': true },\n     *   'fred':    { 'age': 40, 'active': false },\n     *   'pebbles': { 'age': 1,  'active': true }\n     * };\n     *\n     * _.findLastKey(users, function(o) { return o.age < 40; });\n     * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findLastKey(users, { 'age': 36, 'active': true });\n     * // => 'barney'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findLastKey(users, ['active', false]);\n     * // => 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findLastKey(users, 'active');\n     * // => 'pebbles'\n     */\n    function findLastKey(object, predicate) {\n      return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n    }\n\n    /**\n     * Iterates over own and inherited enumerable string keyed properties of an\n     * object and invokes `iteratee` for each property. The iteratee is invoked\n     * with three arguments: (value, key, object). Iteratee functions may exit\n     * iteration early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.3.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forInRight\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forIn(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n     */\n    function forIn(object, iteratee) {\n      return object == null\n        ? object\n        : baseFor(object, getIteratee(iteratee, 3), keysIn);\n    }\n\n    /**\n     * This method is like `_.forIn` except that it iterates over properties of\n     * `object` in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forInRight(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n     */\n    function forInRight(object, iteratee) {\n      return object == null\n        ? object\n        : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n    }\n\n    /**\n     * Iterates over own enumerable string keyed properties of an object and\n     * invokes `iteratee` for each property. The iteratee is invoked with three\n     * arguments: (value, key, object). Iteratee functions may exit iteration\n     * early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.3.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forOwnRight\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forOwn(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n     */\n    function forOwn(object, iteratee) {\n      return object && baseForOwn(object, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.forOwn` except that it iterates over properties of\n     * `object` in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forOwn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forOwnRight(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n     */\n    function forOwnRight(object, iteratee) {\n      return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * Creates an array of function property names from own enumerable properties\n     * of `object`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @returns {Array} Returns the function names.\n     * @see _.functionsIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = _.constant('a');\n     *   this.b = _.constant('b');\n     * }\n     *\n     * Foo.prototype.c = _.constant('c');\n     *\n     * _.functions(new Foo);\n     * // => ['a', 'b']\n     */\n    function functions(object) {\n      return object == null ? [] : baseFunctions(object, keys(object));\n    }\n\n    /**\n     * Creates an array of function property names from own and inherited\n     * enumerable properties of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @returns {Array} Returns the function names.\n     * @see _.functions\n     * @example\n     *\n     * function Foo() {\n     *   this.a = _.constant('a');\n     *   this.b = _.constant('b');\n     * }\n     *\n     * Foo.prototype.c = _.constant('c');\n     *\n     * _.functionsIn(new Foo);\n     * // => ['a', 'b', 'c']\n     */\n    function functionsIn(object) {\n      return object == null ? [] : baseFunctions(object, keysIn(object));\n    }\n\n    /**\n     * Gets the value at `path` of `object`. If the resolved value is\n     * `undefined`, the `defaultValue` is returned in its place.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the property to get.\n     * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n     * @returns {*} Returns the resolved value.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n     *\n     * _.get(object, 'a[0].b.c');\n     * // => 3\n     *\n     * _.get(object, ['a', '0', 'b', 'c']);\n     * // => 3\n     *\n     * _.get(object, 'a.b.c', 'default');\n     * // => 'default'\n     */\n    function get(object, path, defaultValue) {\n      var result = object == null ? undefined : baseGet(object, path);\n      return result === undefined ? defaultValue : result;\n    }\n\n    /**\n     * Checks if `path` is a direct property of `object`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path to check.\n     * @returns {boolean} Returns `true` if `path` exists, else `false`.\n     * @example\n     *\n     * var object = { 'a': { 'b': 2 } };\n     * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n     *\n     * _.has(object, 'a');\n     * // => true\n     *\n     * _.has(object, 'a.b');\n     * // => true\n     *\n     * _.has(object, ['a', 'b']);\n     * // => true\n     *\n     * _.has(other, 'a');\n     * // => false\n     */\n    function has(object, path) {\n      return object != null && hasPath(object, path, baseHas);\n    }\n\n    /**\n     * Checks if `path` is a direct or inherited property of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path to check.\n     * @returns {boolean} Returns `true` if `path` exists, else `false`.\n     * @example\n     *\n     * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n     *\n     * _.hasIn(object, 'a');\n     * // => true\n     *\n     * _.hasIn(object, 'a.b');\n     * // => true\n     *\n     * _.hasIn(object, ['a', 'b']);\n     * // => true\n     *\n     * _.hasIn(object, 'b');\n     * // => false\n     */\n    function hasIn(object, path) {\n      return object != null && hasPath(object, path, baseHasIn);\n    }\n\n    /**\n     * Creates an object composed of the inverted keys and values of `object`.\n     * If `object` contains duplicate values, subsequent values overwrite\n     * property assignments of previous values.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.7.0\n     * @category Object\n     * @param {Object} object The object to invert.\n     * @returns {Object} Returns the new inverted object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2, 'c': 1 };\n     *\n     * _.invert(object);\n     * // => { '1': 'c', '2': 'b' }\n     */\n    var invert = createInverter(function(result, value, key) {\n      if (value != null &&\n          typeof value.toString != 'function') {\n        value = nativeObjectToString.call(value);\n      }\n\n      result[value] = key;\n    }, constant(identity));\n\n    /**\n     * This method is like `_.invert` except that the inverted object is generated\n     * from the results of running each element of `object` thru `iteratee`. The\n     * corresponding inverted value of each inverted key is an array of keys\n     * responsible for generating the inverted value. The iteratee is invoked\n     * with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.1.0\n     * @category Object\n     * @param {Object} object The object to invert.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Object} Returns the new inverted object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2, 'c': 1 };\n     *\n     * _.invertBy(object);\n     * // => { '1': ['a', 'c'], '2': ['b'] }\n     *\n     * _.invertBy(object, function(value) {\n     *   return 'group' + value;\n     * });\n     * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n     */\n    var invertBy = createInverter(function(result, value, key) {\n      if (value != null &&\n          typeof value.toString != 'function') {\n        value = nativeObjectToString.call(value);\n      }\n\n      if (hasOwnProperty.call(result, value)) {\n        result[value].push(key);\n      } else {\n        result[value] = [key];\n      }\n    }, getIteratee);\n\n    /**\n     * Invokes the method at `path` of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the method to invoke.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {*} Returns the result of the invoked method.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n     *\n     * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n     * // => [2, 3]\n     */\n    var invoke = baseRest(baseInvoke);\n\n    /**\n     * Creates an array of the own enumerable property names of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects. See the\n     * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n     * for more details.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.keys(new Foo);\n     * // => ['a', 'b'] (iteration order is not guaranteed)\n     *\n     * _.keys('hi');\n     * // => ['0', '1']\n     */\n    function keys(object) {\n      return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n    }\n\n    /**\n     * Creates an array of the own and inherited enumerable property names of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.keysIn(new Foo);\n     * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n     */\n    function keysIn(object) {\n      return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n    }\n\n    /**\n     * The opposite of `_.mapValues`; this method creates an object with the\n     * same values as `object` and keys generated by running each own enumerable\n     * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n     * with three arguments: (value, key, object).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns the new mapped object.\n     * @see _.mapValues\n     * @example\n     *\n     * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n     *   return key + value;\n     * });\n     * // => { 'a1': 1, 'b2': 2 }\n     */\n    function mapKeys(object, iteratee) {\n      var result = {};\n      iteratee = getIteratee(iteratee, 3);\n\n      baseForOwn(object, function(value, key, object) {\n        baseAssignValue(result, iteratee(value, key, object), value);\n      });\n      return result;\n    }\n\n    /**\n     * Creates an object with the same keys as `object` and values generated\n     * by running each own enumerable string keyed property of `object` thru\n     * `iteratee`. The iteratee is invoked with three arguments:\n     * (value, key, object).\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns the new mapped object.\n     * @see _.mapKeys\n     * @example\n     *\n     * var users = {\n     *   'fred':    { 'user': 'fred',    'age': 40 },\n     *   'pebbles': { 'user': 'pebbles', 'age': 1 }\n     * };\n     *\n     * _.mapValues(users, function(o) { return o.age; });\n     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.mapValues(users, 'age');\n     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n     */\n    function mapValues(object, iteratee) {\n      var result = {};\n      iteratee = getIteratee(iteratee, 3);\n\n      baseForOwn(object, function(value, key, object) {\n        baseAssignValue(result, key, iteratee(value, key, object));\n      });\n      return result;\n    }\n\n    /**\n     * This method is like `_.assign` except that it recursively merges own and\n     * inherited enumerable string keyed properties of source objects into the\n     * destination object. Source properties that resolve to `undefined` are\n     * skipped if a destination value exists. Array and plain object properties\n     * are merged recursively. Other objects and value types are overridden by\n     * assignment. Source objects are applied from left to right. Subsequent\n     * sources overwrite property assignments of previous sources.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.5.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = {\n     *   'a': [{ 'b': 2 }, { 'd': 4 }]\n     * };\n     *\n     * var other = {\n     *   'a': [{ 'c': 3 }, { 'e': 5 }]\n     * };\n     *\n     * _.merge(object, other);\n     * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n     */\n    var merge = createAssigner(function(object, source, srcIndex) {\n      baseMerge(object, source, srcIndex);\n    });\n\n    /**\n     * This method is like `_.merge` except that it accepts `customizer` which\n     * is invoked to produce the merged values of the destination and source\n     * properties. If `customizer` returns `undefined`, merging is handled by the\n     * method instead. The `customizer` is invoked with six arguments:\n     * (objValue, srcValue, key, object, source, stack).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} sources The source objects.\n     * @param {Function} customizer The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   if (_.isArray(objValue)) {\n     *     return objValue.concat(srcValue);\n     *   }\n     * }\n     *\n     * var object = { 'a': [1], 'b': [2] };\n     * var other = { 'a': [3], 'b': [4] };\n     *\n     * _.mergeWith(object, other, customizer);\n     * // => { 'a': [1, 3], 'b': [2, 4] }\n     */\n    var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n      baseMerge(object, source, srcIndex, customizer);\n    });\n\n    /**\n     * The opposite of `_.pick`; this method creates an object composed of the\n     * own and inherited enumerable property paths of `object` that are not omitted.\n     *\n     * **Note:** This method is considerably slower than `_.pick`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {...(string|string[])} [paths] The property paths to omit.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.omit(object, ['a', 'c']);\n     * // => { 'b': '2' }\n     */\n    var omit = flatRest(function(object, paths) {\n      var result = {};\n      if (object == null) {\n        return result;\n      }\n      var isDeep = false;\n      paths = arrayMap(paths, function(path) {\n        path = castPath(path, object);\n        isDeep || (isDeep = path.length > 1);\n        return path;\n      });\n      copyObject(object, getAllKeysIn(object), result);\n      if (isDeep) {\n        result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n      }\n      var length = paths.length;\n      while (length--) {\n        baseUnset(result, paths[length]);\n      }\n      return result;\n    });\n\n    /**\n     * The opposite of `_.pickBy`; this method creates an object composed of\n     * the own and inherited enumerable string keyed properties of `object` that\n     * `predicate` doesn't return truthy for. The predicate is invoked with two\n     * arguments: (value, key).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {Function} [predicate=_.identity] The function invoked per property.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.omitBy(object, _.isNumber);\n     * // => { 'b': '2' }\n     */\n    function omitBy(object, predicate) {\n      return pickBy(object, negate(getIteratee(predicate)));\n    }\n\n    /**\n     * Creates an object composed of the picked `object` properties.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {...(string|string[])} [paths] The property paths to pick.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.pick(object, ['a', 'c']);\n     * // => { 'a': 1, 'c': 3 }\n     */\n    var pick = flatRest(function(object, paths) {\n      return object == null ? {} : basePick(object, paths);\n    });\n\n    /**\n     * Creates an object composed of the `object` properties `predicate` returns\n     * truthy for. The predicate is invoked with two arguments: (value, key).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {Function} [predicate=_.identity] The function invoked per property.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.pickBy(object, _.isNumber);\n     * // => { 'a': 1, 'c': 3 }\n     */\n    function pickBy(object, predicate) {\n      if (object == null) {\n        return {};\n      }\n      var props = arrayMap(getAllKeysIn(object), function(prop) {\n        return [prop];\n      });\n      predicate = getIteratee(predicate);\n      return basePickBy(object, props, function(value, path) {\n        return predicate(value, path[0]);\n      });\n    }\n\n    /**\n     * This method is like `_.get` except that if the resolved value is a\n     * function it's invoked with the `this` binding of its parent object and\n     * its result is returned.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the property to resolve.\n     * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n     * @returns {*} Returns the resolved value.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n     *\n     * _.result(object, 'a[0].b.c1');\n     * // => 3\n     *\n     * _.result(object, 'a[0].b.c2');\n     * // => 4\n     *\n     * _.result(object, 'a[0].b.c3', 'default');\n     * // => 'default'\n     *\n     * _.result(object, 'a[0].b.c3', _.constant('default'));\n     * // => 'default'\n     */\n    function result(object, path, defaultValue) {\n      path = castPath(path, object);\n\n      var index = -1,\n          length = path.length;\n\n      // Ensure the loop is entered when path is empty.\n      if (!length) {\n        length = 1;\n        object = undefined;\n      }\n      while (++index < length) {\n        var value = object == null ? undefined : object[toKey(path[index])];\n        if (value === undefined) {\n          index = length;\n          value = defaultValue;\n        }\n        object = isFunction(value) ? value.call(object) : value;\n      }\n      return object;\n    }\n\n    /**\n     * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n     * it's created. Arrays are created for missing index properties while objects\n     * are created for all other missing properties. Use `_.setWith` to customize\n     * `path` creation.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n     *\n     * _.set(object, 'a[0].b.c', 4);\n     * console.log(object.a[0].b.c);\n     * // => 4\n     *\n     * _.set(object, ['x', '0', 'y', 'z'], 5);\n     * console.log(object.x[0].y.z);\n     * // => 5\n     */\n    function set(object, path, value) {\n      return object == null ? object : baseSet(object, path, value);\n    }\n\n    /**\n     * This method is like `_.set` except that it accepts `customizer` which is\n     * invoked to produce the objects of `path`.  If `customizer` returns `undefined`\n     * path creation is handled by the method instead. The `customizer` is invoked\n     * with three arguments: (nsValue, key, nsObject).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {*} value The value to set.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = {};\n     *\n     * _.setWith(object, '[0][1]', 'a', Object);\n     * // => { '0': { '1': 'a' } }\n     */\n    function setWith(object, path, value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return object == null ? object : baseSet(object, path, value, customizer);\n    }\n\n    /**\n     * Creates an array of own enumerable string keyed-value pairs for `object`\n     * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n     * entries are returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias entries\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the key-value pairs.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.toPairs(new Foo);\n     * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n     */\n    var toPairs = createToPairs(keys);\n\n    /**\n     * Creates an array of own and inherited enumerable string keyed-value pairs\n     * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n     * or set, its entries are returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias entriesIn\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the key-value pairs.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.toPairsIn(new Foo);\n     * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n     */\n    var toPairsIn = createToPairs(keysIn);\n\n    /**\n     * An alternative to `_.reduce`; this method transforms `object` to a new\n     * `accumulator` object which is the result of running each of its own\n     * enumerable string keyed properties thru `iteratee`, with each invocation\n     * potentially mutating the `accumulator` object. If `accumulator` is not\n     * provided, a new object with the same `[[Prototype]]` will be used. The\n     * iteratee is invoked with four arguments: (accumulator, value, key, object).\n     * Iteratee functions may exit iteration early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.3.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {*} [accumulator] The custom accumulator value.\n     * @returns {*} Returns the accumulated value.\n     * @example\n     *\n     * _.transform([2, 3, 4], function(result, n) {\n     *   result.push(n *= n);\n     *   return n % 2 == 0;\n     * }, []);\n     * // => [4, 9]\n     *\n     * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n     *   (result[value] || (result[value] = [])).push(key);\n     * }, {});\n     * // => { '1': ['a', 'c'], '2': ['b'] }\n     */\n    function transform(object, iteratee, accumulator) {\n      var isArr = isArray(object),\n          isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n      iteratee = getIteratee(iteratee, 4);\n      if (accumulator == null) {\n        var Ctor = object && object.constructor;\n        if (isArrLike) {\n          accumulator = isArr ? new Ctor : [];\n        }\n        else if (isObject(object)) {\n          accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n        }\n        else {\n          accumulator = {};\n        }\n      }\n      (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n        return iteratee(accumulator, value, index, object);\n      });\n      return accumulator;\n    }\n\n    /**\n     * Removes the property at `path` of `object`.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to unset.\n     * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n     * _.unset(object, 'a[0].b.c');\n     * // => true\n     *\n     * console.log(object);\n     * // => { 'a': [{ 'b': {} }] };\n     *\n     * _.unset(object, ['a', '0', 'b', 'c']);\n     * // => true\n     *\n     * console.log(object);\n     * // => { 'a': [{ 'b': {} }] };\n     */\n    function unset(object, path) {\n      return object == null ? true : baseUnset(object, path);\n    }\n\n    /**\n     * This method is like `_.set` except that accepts `updater` to produce the\n     * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n     * is invoked with one argument: (value).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {Function} updater The function to produce the updated value.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n     *\n     * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n     * console.log(object.a[0].b.c);\n     * // => 9\n     *\n     * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n     * console.log(object.x[0].y.z);\n     * // => 0\n     */\n    function update(object, path, updater) {\n      return object == null ? object : baseUpdate(object, path, castFunction(updater));\n    }\n\n    /**\n     * This method is like `_.update` except that it accepts `customizer` which is\n     * invoked to produce the objects of `path`.  If `customizer` returns `undefined`\n     * path creation is handled by the method instead. The `customizer` is invoked\n     * with three arguments: (nsValue, key, nsObject).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {Function} updater The function to produce the updated value.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = {};\n     *\n     * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n     * // => { '0': { '1': 'a' } }\n     */\n    function updateWith(object, path, updater, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n    }\n\n    /**\n     * Creates an array of the own enumerable string keyed property values of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property values.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.values(new Foo);\n     * // => [1, 2] (iteration order is not guaranteed)\n     *\n     * _.values('hi');\n     * // => ['h', 'i']\n     */\n    function values(object) {\n      return object == null ? [] : baseValues(object, keys(object));\n    }\n\n    /**\n     * Creates an array of the own and inherited enumerable string keyed property\n     * values of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property values.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.valuesIn(new Foo);\n     * // => [1, 2, 3] (iteration order is not guaranteed)\n     */\n    function valuesIn(object) {\n      return object == null ? [] : baseValues(object, keysIn(object));\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Clamps `number` within the inclusive `lower` and `upper` bounds.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Number\n     * @param {number} number The number to clamp.\n     * @param {number} [lower] The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the clamped number.\n     * @example\n     *\n     * _.clamp(-10, -5, 5);\n     * // => -5\n     *\n     * _.clamp(10, -5, 5);\n     * // => 5\n     */\n    function clamp(number, lower, upper) {\n      if (upper === undefined) {\n        upper = lower;\n        lower = undefined;\n      }\n      if (upper !== undefined) {\n        upper = toNumber(upper);\n        upper = upper === upper ? upper : 0;\n      }\n      if (lower !== undefined) {\n        lower = toNumber(lower);\n        lower = lower === lower ? lower : 0;\n      }\n      return baseClamp(toNumber(number), lower, upper);\n    }\n\n    /**\n     * Checks if `n` is between `start` and up to, but not including, `end`. If\n     * `end` is not specified, it's set to `start` with `start` then set to `0`.\n     * If `start` is greater than `end` the params are swapped to support\n     * negative ranges.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.3.0\n     * @category Number\n     * @param {number} number The number to check.\n     * @param {number} [start=0] The start of the range.\n     * @param {number} end The end of the range.\n     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n     * @see _.range, _.rangeRight\n     * @example\n     *\n     * _.inRange(3, 2, 4);\n     * // => true\n     *\n     * _.inRange(4, 8);\n     * // => true\n     *\n     * _.inRange(4, 2);\n     * // => false\n     *\n     * _.inRange(2, 2);\n     * // => false\n     *\n     * _.inRange(1.2, 2);\n     * // => true\n     *\n     * _.inRange(5.2, 4);\n     * // => false\n     *\n     * _.inRange(-3, -2, -6);\n     * // => true\n     */\n    function inRange(number, start, end) {\n      start = toFinite(start);\n      if (end === undefined) {\n        end = start;\n        start = 0;\n      } else {\n        end = toFinite(end);\n      }\n      number = toNumber(number);\n      return baseInRange(number, start, end);\n    }\n\n    /**\n     * Produces a random number between the inclusive `lower` and `upper` bounds.\n     * If only one argument is provided a number between `0` and the given number\n     * is returned. If `floating` is `true`, or either `lower` or `upper` are\n     * floats, a floating-point number is returned instead of an integer.\n     *\n     * **Note:** JavaScript follows the IEEE-754 standard for resolving\n     * floating-point values which can produce unexpected results.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.7.0\n     * @category Number\n     * @param {number} [lower=0] The lower bound.\n     * @param {number} [upper=1] The upper bound.\n     * @param {boolean} [floating] Specify returning a floating-point number.\n     * @returns {number} Returns the random number.\n     * @example\n     *\n     * _.random(0, 5);\n     * // => an integer between 0 and 5\n     *\n     * _.random(5);\n     * // => also an integer between 0 and 5\n     *\n     * _.random(5, true);\n     * // => a floating-point number between 0 and 5\n     *\n     * _.random(1.2, 5.2);\n     * // => a floating-point number between 1.2 and 5.2\n     */\n    function random(lower, upper, floating) {\n      if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n        upper = floating = undefined;\n      }\n      if (floating === undefined) {\n        if (typeof upper == 'boolean') {\n          floating = upper;\n          upper = undefined;\n        }\n        else if (typeof lower == 'boolean') {\n          floating = lower;\n          lower = undefined;\n        }\n      }\n      if (lower === undefined && upper === undefined) {\n        lower = 0;\n        upper = 1;\n      }\n      else {\n        lower = toFinite(lower);\n        if (upper === undefined) {\n          upper = lower;\n          lower = 0;\n        } else {\n          upper = toFinite(upper);\n        }\n      }\n      if (lower > upper) {\n        var temp = lower;\n        lower = upper;\n        upper = temp;\n      }\n      if (floating || lower % 1 || upper % 1) {\n        var rand = nativeRandom();\n        return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n      }\n      return baseRandom(lower, upper);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the camel cased string.\n     * @example\n     *\n     * _.camelCase('Foo Bar');\n     * // => 'fooBar'\n     *\n     * _.camelCase('--foo-bar--');\n     * // => 'fooBar'\n     *\n     * _.camelCase('__FOO_BAR__');\n     * // => 'fooBar'\n     */\n    var camelCase = createCompounder(function(result, word, index) {\n      word = word.toLowerCase();\n      return result + (index ? capitalize(word) : word);\n    });\n\n    /**\n     * Converts the first character of `string` to upper case and the remaining\n     * to lower case.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to capitalize.\n     * @returns {string} Returns the capitalized string.\n     * @example\n     *\n     * _.capitalize('FRED');\n     * // => 'Fred'\n     */\n    function capitalize(string) {\n      return upperFirst(toString(string).toLowerCase());\n    }\n\n    /**\n     * Deburrs `string` by converting\n     * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n     * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n     * letters to basic Latin letters and removing\n     * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to deburr.\n     * @returns {string} Returns the deburred string.\n     * @example\n     *\n     * _.deburr('d\u00E9j\u00E0 vu');\n     * // => 'deja vu'\n     */\n    function deburr(string) {\n      string = toString(string);\n      return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n    }\n\n    /**\n     * Checks if `string` ends with the given target string.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {string} [target] The string to search for.\n     * @param {number} [position=string.length] The position to search up to.\n     * @returns {boolean} Returns `true` if `string` ends with `target`,\n     *  else `false`.\n     * @example\n     *\n     * _.endsWith('abc', 'c');\n     * // => true\n     *\n     * _.endsWith('abc', 'b');\n     * // => false\n     *\n     * _.endsWith('abc', 'b', 2);\n     * // => true\n     */\n    function endsWith(string, target, position) {\n      string = toString(string);\n      target = baseToString(target);\n\n      var length = string.length;\n      position = position === undefined\n        ? length\n        : baseClamp(toInteger(position), 0, length);\n\n      var end = position;\n      position -= target.length;\n      return position >= 0 && string.slice(position, end) == target;\n    }\n\n    /**\n     * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n     * corresponding HTML entities.\n     *\n     * **Note:** No other characters are escaped. To escape additional\n     * characters use a third-party library like [_he_](https://mths.be/he).\n     *\n     * Though the \">\" character is escaped for symmetry, characters like\n     * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n     * unless they're part of a tag or unquoted attribute value. See\n     * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n     * (under \"semi-related fun fact\") for more details.\n     *\n     * When working with HTML you should always\n     * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n     * XSS vectors.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category String\n     * @param {string} [string=''] The string to escape.\n     * @returns {string} Returns the escaped string.\n     * @example\n     *\n     * _.escape('fred, barney, & pebbles');\n     * // => 'fred, barney, &amp; pebbles'\n     */\n    function escape(string) {\n      string = toString(string);\n      return (string && reHasUnescapedHtml.test(string))\n        ? string.replace(reUnescapedHtml, escapeHtmlChar)\n        : string;\n    }\n\n    /**\n     * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n     * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to escape.\n     * @returns {string} Returns the escaped string.\n     * @example\n     *\n     * _.escapeRegExp('[lodash](https://lodash.com/)');\n     * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n     */\n    function escapeRegExp(string) {\n      string = toString(string);\n      return (string && reHasRegExpChar.test(string))\n        ? string.replace(reRegExpChar, '\\\\$&')\n        : string;\n    }\n\n    /**\n     * Converts `string` to\n     * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the kebab cased string.\n     * @example\n     *\n     * _.kebabCase('Foo Bar');\n     * // => 'foo-bar'\n     *\n     * _.kebabCase('fooBar');\n     * // => 'foo-bar'\n     *\n     * _.kebabCase('__FOO_BAR__');\n     * // => 'foo-bar'\n     */\n    var kebabCase = createCompounder(function(result, word, index) {\n      return result + (index ? '-' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Converts `string`, as space separated words, to lower case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the lower cased string.\n     * @example\n     *\n     * _.lowerCase('--Foo-Bar--');\n     * // => 'foo bar'\n     *\n     * _.lowerCase('fooBar');\n     * // => 'foo bar'\n     *\n     * _.lowerCase('__FOO_BAR__');\n     * // => 'foo bar'\n     */\n    var lowerCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Converts the first character of `string` to lower case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the converted string.\n     * @example\n     *\n     * _.lowerFirst('Fred');\n     * // => 'fred'\n     *\n     * _.lowerFirst('FRED');\n     * // => 'fRED'\n     */\n    var lowerFirst = createCaseFirst('toLowerCase');\n\n    /**\n     * Pads `string` on the left and right sides if it's shorter than `length`.\n     * Padding characters are truncated if they can't be evenly divided by `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.pad('abc', 8);\n     * // => '  abc   '\n     *\n     * _.pad('abc', 8, '_-');\n     * // => '_-abc_-_'\n     *\n     * _.pad('abc', 3);\n     * // => 'abc'\n     */\n    function pad(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      if (!length || strLength >= length) {\n        return string;\n      }\n      var mid = (length - strLength) / 2;\n      return (\n        createPadding(nativeFloor(mid), chars) +\n        string +\n        createPadding(nativeCeil(mid), chars)\n      );\n    }\n\n    /**\n     * Pads `string` on the right side if it's shorter than `length`. Padding\n     * characters are truncated if they exceed `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.padEnd('abc', 6);\n     * // => 'abc   '\n     *\n     * _.padEnd('abc', 6, '_-');\n     * // => 'abc_-_'\n     *\n     * _.padEnd('abc', 3);\n     * // => 'abc'\n     */\n    function padEnd(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      return (length && strLength < length)\n        ? (string + createPadding(length - strLength, chars))\n        : string;\n    }\n\n    /**\n     * Pads `string` on the left side if it's shorter than `length`. Padding\n     * characters are truncated if they exceed `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.padStart('abc', 6);\n     * // => '   abc'\n     *\n     * _.padStart('abc', 6, '_-');\n     * // => '_-_abc'\n     *\n     * _.padStart('abc', 3);\n     * // => 'abc'\n     */\n    function padStart(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      return (length && strLength < length)\n        ? (createPadding(length - strLength, chars) + string)\n        : string;\n    }\n\n    /**\n     * Converts `string` to an integer of the specified radix. If `radix` is\n     * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n     * hexadecimal, in which case a `radix` of `16` is used.\n     *\n     * **Note:** This method aligns with the\n     * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.1.0\n     * @category String\n     * @param {string} string The string to convert.\n     * @param {number} [radix=10] The radix to interpret `value` by.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.parseInt('08');\n     * // => 8\n     *\n     * _.map(['6', '08', '10'], _.parseInt);\n     * // => [6, 8, 10]\n     */\n    function parseInt(string, radix, guard) {\n      if (guard || radix == null) {\n        radix = 0;\n      } else if (radix) {\n        radix = +radix;\n      }\n      return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n    }\n\n    /**\n     * Repeats the given string `n` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to repeat.\n     * @param {number} [n=1] The number of times to repeat the string.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the repeated string.\n     * @example\n     *\n     * _.repeat('*', 3);\n     * // => '***'\n     *\n     * _.repeat('abc', 2);\n     * // => 'abcabc'\n     *\n     * _.repeat('abc', 0);\n     * // => ''\n     */\n    function repeat(string, n, guard) {\n      if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n        n = 1;\n      } else {\n        n = toInteger(n);\n      }\n      return baseRepeat(toString(string), n);\n    }\n\n    /**\n     * Replaces matches for `pattern` in `string` with `replacement`.\n     *\n     * **Note:** This method is based on\n     * [`String#replace`](https://mdn.io/String/replace).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to modify.\n     * @param {RegExp|string} pattern The pattern to replace.\n     * @param {Function|string} replacement The match replacement.\n     * @returns {string} Returns the modified string.\n     * @example\n     *\n     * _.replace('Hi Fred', 'Fred', 'Barney');\n     * // => 'Hi Barney'\n     */\n    function replace() {\n      var args = arguments,\n          string = toString(args[0]);\n\n      return args.length < 3 ? string : string.replace(args[1], args[2]);\n    }\n\n    /**\n     * Converts `string` to\n     * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the snake cased string.\n     * @example\n     *\n     * _.snakeCase('Foo Bar');\n     * // => 'foo_bar'\n     *\n     * _.snakeCase('fooBar');\n     * // => 'foo_bar'\n     *\n     * _.snakeCase('--FOO-BAR--');\n     * // => 'foo_bar'\n     */\n    var snakeCase = createCompounder(function(result, word, index) {\n      return result + (index ? '_' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Splits `string` by `separator`.\n     *\n     * **Note:** This method is based on\n     * [`String#split`](https://mdn.io/String/split).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to split.\n     * @param {RegExp|string} separator The separator pattern to split by.\n     * @param {number} [limit] The length to truncate results to.\n     * @returns {Array} Returns the string segments.\n     * @example\n     *\n     * _.split('a-b-c', '-', 2);\n     * // => ['a', 'b']\n     */\n    function split(string, separator, limit) {\n      if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n        separator = limit = undefined;\n      }\n      limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n      if (!limit) {\n        return [];\n      }\n      string = toString(string);\n      if (string && (\n            typeof separator == 'string' ||\n            (separator != null && !isRegExp(separator))\n          )) {\n        separator = baseToString(separator);\n        if (!separator && hasUnicode(string)) {\n          return castSlice(stringToArray(string), 0, limit);\n        }\n      }\n      return string.split(separator, limit);\n    }\n\n    /**\n     * Converts `string` to\n     * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.1.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the start cased string.\n     * @example\n     *\n     * _.startCase('--foo-bar--');\n     * // => 'Foo Bar'\n     *\n     * _.startCase('fooBar');\n     * // => 'Foo Bar'\n     *\n     * _.startCase('__FOO_BAR__');\n     * // => 'FOO BAR'\n     */\n    var startCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + upperFirst(word);\n    });\n\n    /**\n     * Checks if `string` starts with the given target string.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {string} [target] The string to search for.\n     * @param {number} [position=0] The position to search from.\n     * @returns {boolean} Returns `true` if `string` starts with `target`,\n     *  else `false`.\n     * @example\n     *\n     * _.startsWith('abc', 'a');\n     * // => true\n     *\n     * _.startsWith('abc', 'b');\n     * // => false\n     *\n     * _.startsWith('abc', 'b', 1);\n     * // => true\n     */\n    function startsWith(string, target, position) {\n      string = toString(string);\n      position = position == null\n        ? 0\n        : baseClamp(toInteger(position), 0, string.length);\n\n      target = baseToString(target);\n      return string.slice(position, position + target.length) == target;\n    }\n\n    /**\n     * Creates a compiled template function that can interpolate data properties\n     * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n     * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n     * properties may be accessed as free variables in the template. If a setting\n     * object is given, it takes precedence over `_.templateSettings` values.\n     *\n     * **Note:** In the development build `_.template` utilizes\n     * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n     * for easier debugging.\n     *\n     * For more information on precompiling templates see\n     * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n     *\n     * For more information on Chrome extension sandboxes see\n     * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category String\n     * @param {string} [string=''] The template string.\n     * @param {Object} [options={}] The options object.\n     * @param {RegExp} [options.escape=_.templateSettings.escape]\n     *  The HTML \"escape\" delimiter.\n     * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n     *  The \"evaluate\" delimiter.\n     * @param {Object} [options.imports=_.templateSettings.imports]\n     *  An object to import into the template as free variables.\n     * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n     *  The \"interpolate\" delimiter.\n     * @param {string} [options.sourceURL='lodash.templateSources[n]']\n     *  The sourceURL of the compiled template.\n     * @param {string} [options.variable='obj']\n     *  The data object variable name.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the compiled template function.\n     * @example\n     *\n     * // Use the \"interpolate\" delimiter to create a compiled template.\n     * var compiled = _.template('hello <%= user %>!');\n     * compiled({ 'user': 'fred' });\n     * // => 'hello fred!'\n     *\n     * // Use the HTML \"escape\" delimiter to escape data property values.\n     * var compiled = _.template('<b><%- value %></b>');\n     * compiled({ 'value': '<script>' });\n     * // => '<b>&lt;script&gt;</b>'\n     *\n     * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n     * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n     * compiled({ 'users': ['fred', 'barney'] });\n     * // => '<li>fred</li><li>barney</li>'\n     *\n     * // Use the internal `print` function in \"evaluate\" delimiters.\n     * var compiled = _.template('<% print(\"hello \" + user); %>!');\n     * compiled({ 'user': 'barney' });\n     * // => 'hello barney!'\n     *\n     * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n     * // Disable support by replacing the \"interpolate\" delimiter.\n     * var compiled = _.template('hello ${ user }!');\n     * compiled({ 'user': 'pebbles' });\n     * // => 'hello pebbles!'\n     *\n     * // Use backslashes to treat delimiters as plain text.\n     * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n     * compiled({ 'value': 'ignored' });\n     * // => '<%- value %>'\n     *\n     * // Use the `imports` option to import `jQuery` as `jq`.\n     * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n     * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n     * compiled({ 'users': ['fred', 'barney'] });\n     * // => '<li>fred</li><li>barney</li>'\n     *\n     * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n     * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n     * compiled(data);\n     * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n     *\n     * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n     * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n     * compiled.source;\n     * // => function(data) {\n     * //   var __t, __p = '';\n     * //   __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n     * //   return __p;\n     * // }\n     *\n     * // Use custom template delimiters.\n     * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n     * var compiled = _.template('hello {{ user }}!');\n     * compiled({ 'user': 'mustache' });\n     * // => 'hello mustache!'\n     *\n     * // Use the `source` property to inline compiled templates for meaningful\n     * // line numbers in error messages and stack traces.\n     * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n     *   var JST = {\\\n     *     \"main\": ' + _.template(mainText).source + '\\\n     *   };\\\n     * ');\n     */\n    function template(string, options, guard) {\n      // Based on John Resig's `tmpl` implementation\n      // (http://ejohn.org/blog/javascript-micro-templating/)\n      // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n      var settings = lodash.templateSettings;\n\n      if (guard && isIterateeCall(string, options, guard)) {\n        options = undefined;\n      }\n      string = toString(string);\n      options = assignInWith({}, options, settings, customDefaultsAssignIn);\n\n      var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n          importsKeys = keys(imports),\n          importsValues = baseValues(imports, importsKeys);\n\n      var isEscaping,\n          isEvaluating,\n          index = 0,\n          interpolate = options.interpolate || reNoMatch,\n          source = \"__p += '\";\n\n      // Compile the regexp to match each delimiter.\n      var reDelimiters = RegExp(\n        (options.escape || reNoMatch).source + '|' +\n        interpolate.source + '|' +\n        (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n        (options.evaluate || reNoMatch).source + '|$'\n      , 'g');\n\n      // Use a sourceURL for easier debugging.\n      // The sourceURL gets injected into the source that's eval-ed, so be careful\n      // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in\n      // and escape the comment, thus injecting code that gets evaled.\n      var sourceURL = '//# sourceURL=' +\n        (hasOwnProperty.call(options, 'sourceURL')\n          ? (options.sourceURL + '').replace(/\\s/g, ' ')\n          : ('lodash.templateSources[' + (++templateCounter) + ']')\n        ) + '\\n';\n\n      string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n        interpolateValue || (interpolateValue = esTemplateValue);\n\n        // Escape characters that can't be included in string literals.\n        source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n        // Replace delimiters with snippets.\n        if (escapeValue) {\n          isEscaping = true;\n          source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n        }\n        if (evaluateValue) {\n          isEvaluating = true;\n          source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n        }\n        if (interpolateValue) {\n          source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n        }\n        index = offset + match.length;\n\n        // The JS engine embedded in Adobe products needs `match` returned in\n        // order to produce the correct `offset` value.\n        return match;\n      });\n\n      source += \"';\\n\";\n\n      // If `variable` is not specified wrap a with-statement around the generated\n      // code to add the data object to the top of the scope chain.\n      var variable = hasOwnProperty.call(options, 'variable') && options.variable;\n      if (!variable) {\n        source = 'with (obj) {\\n' + source + '\\n}\\n';\n      }\n      // Throw an error if a forbidden character was found in `variable`, to prevent\n      // potential command injection attacks.\n      else if (reForbiddenIdentifierChars.test(variable)) {\n        throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT);\n      }\n\n      // Cleanup code by stripping empty strings.\n      source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n        .replace(reEmptyStringMiddle, '$1')\n        .replace(reEmptyStringTrailing, '$1;');\n\n      // Frame code as the function body.\n      source = 'function(' + (variable || 'obj') + ') {\\n' +\n        (variable\n          ? ''\n          : 'obj || (obj = {});\\n'\n        ) +\n        \"var __t, __p = ''\" +\n        (isEscaping\n           ? ', __e = _.escape'\n           : ''\n        ) +\n        (isEvaluating\n          ? ', __j = Array.prototype.join;\\n' +\n            \"function print() { __p += __j.call(arguments, '') }\\n\"\n          : ';\\n'\n        ) +\n        source +\n        'return __p\\n}';\n\n      var result = attempt(function() {\n        return Function(importsKeys, sourceURL + 'return ' + source)\n          .apply(undefined, importsValues);\n      });\n\n      // Provide the compiled function's source by its `toString` method or\n      // the `source` property as a convenience for inlining compiled templates.\n      result.source = source;\n      if (isError(result)) {\n        throw result;\n      }\n      return result;\n    }\n\n    /**\n     * Converts `string`, as a whole, to lower case just like\n     * [String#toLowerCase](https://mdn.io/toLowerCase).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the lower cased string.\n     * @example\n     *\n     * _.toLower('--Foo-Bar--');\n     * // => '--foo-bar--'\n     *\n     * _.toLower('fooBar');\n     * // => 'foobar'\n     *\n     * _.toLower('__FOO_BAR__');\n     * // => '__foo_bar__'\n     */\n    function toLower(value) {\n      return toString(value).toLowerCase();\n    }\n\n    /**\n     * Converts `string`, as a whole, to upper case just like\n     * [String#toUpperCase](https://mdn.io/toUpperCase).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the upper cased string.\n     * @example\n     *\n     * _.toUpper('--foo-bar--');\n     * // => '--FOO-BAR--'\n     *\n     * _.toUpper('fooBar');\n     * // => 'FOOBAR'\n     *\n     * _.toUpper('__foo_bar__');\n     * // => '__FOO_BAR__'\n     */\n    function toUpper(value) {\n      return toString(value).toUpperCase();\n    }\n\n    /**\n     * Removes leading and trailing whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trim('  abc  ');\n     * // => 'abc'\n     *\n     * _.trim('-_-abc-_-', '_-');\n     * // => 'abc'\n     *\n     * _.map(['  foo  ', '  bar  '], _.trim);\n     * // => ['foo', 'bar']\n     */\n    function trim(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return baseTrim(string);\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          chrSymbols = stringToArray(chars),\n          start = charsStartIndex(strSymbols, chrSymbols),\n          end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n      return castSlice(strSymbols, start, end).join('');\n    }\n\n    /**\n     * Removes trailing whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trimEnd('  abc  ');\n     * // => '  abc'\n     *\n     * _.trimEnd('-_-abc-_-', '_-');\n     * // => '-_-abc'\n     */\n    function trimEnd(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return string.slice(0, trimmedEndIndex(string) + 1);\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n      return castSlice(strSymbols, 0, end).join('');\n    }\n\n    /**\n     * Removes leading whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trimStart('  abc  ');\n     * // => 'abc  '\n     *\n     * _.trimStart('-_-abc-_-', '_-');\n     * // => 'abc-_-'\n     */\n    function trimStart(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return string.replace(reTrimStart, '');\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          start = charsStartIndex(strSymbols, stringToArray(chars));\n\n      return castSlice(strSymbols, start).join('');\n    }\n\n    /**\n     * Truncates `string` if it's longer than the given maximum string length.\n     * The last characters of the truncated string are replaced with the omission\n     * string which defaults to \"...\".\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to truncate.\n     * @param {Object} [options={}] The options object.\n     * @param {number} [options.length=30] The maximum string length.\n     * @param {string} [options.omission='...'] The string to indicate text is omitted.\n     * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n     * @returns {string} Returns the truncated string.\n     * @example\n     *\n     * _.truncate('hi-diddly-ho there, neighborino');\n     * // => 'hi-diddly-ho there, neighbo...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'length': 24,\n     *   'separator': ' '\n     * });\n     * // => 'hi-diddly-ho there,...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'length': 24,\n     *   'separator': /,? +/\n     * });\n     * // => 'hi-diddly-ho there...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'omission': ' [...]'\n     * });\n     * // => 'hi-diddly-ho there, neig [...]'\n     */\n    function truncate(string, options) {\n      var length = DEFAULT_TRUNC_LENGTH,\n          omission = DEFAULT_TRUNC_OMISSION;\n\n      if (isObject(options)) {\n        var separator = 'separator' in options ? options.separator : separator;\n        length = 'length' in options ? toInteger(options.length) : length;\n        omission = 'omission' in options ? baseToString(options.omission) : omission;\n      }\n      string = toString(string);\n\n      var strLength = string.length;\n      if (hasUnicode(string)) {\n        var strSymbols = stringToArray(string);\n        strLength = strSymbols.length;\n      }\n      if (length >= strLength) {\n        return string;\n      }\n      var end = length - stringSize(omission);\n      if (end < 1) {\n        return omission;\n      }\n      var result = strSymbols\n        ? castSlice(strSymbols, 0, end).join('')\n        : string.slice(0, end);\n\n      if (separator === undefined) {\n        return result + omission;\n      }\n      if (strSymbols) {\n        end += (result.length - end);\n      }\n      if (isRegExp(separator)) {\n        if (string.slice(end).search(separator)) {\n          var match,\n              substring = result;\n\n          if (!separator.global) {\n            separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n          }\n          separator.lastIndex = 0;\n          while ((match = separator.exec(substring))) {\n            var newEnd = match.index;\n          }\n          result = result.slice(0, newEnd === undefined ? end : newEnd);\n        }\n      } else if (string.indexOf(baseToString(separator), end) != end) {\n        var index = result.lastIndexOf(separator);\n        if (index > -1) {\n          result = result.slice(0, index);\n        }\n      }\n      return result + omission;\n    }\n\n    /**\n     * The inverse of `_.escape`; this method converts the HTML entities\n     * `&amp;`, `&lt;`, `&gt;`, `&quot;`, and `&#39;` in `string` to\n     * their corresponding characters.\n     *\n     * **Note:** No other HTML entities are unescaped. To unescape additional\n     * HTML entities use a third-party library like [_he_](https://mths.be/he).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.6.0\n     * @category String\n     * @param {string} [string=''] The string to unescape.\n     * @returns {string} Returns the unescaped string.\n     * @example\n     *\n     * _.unescape('fred, barney, &amp; pebbles');\n     * // => 'fred, barney, & pebbles'\n     */\n    function unescape(string) {\n      string = toString(string);\n      return (string && reHasEscapedHtml.test(string))\n        ? string.replace(reEscapedHtml, unescapeHtmlChar)\n        : string;\n    }\n\n    /**\n     * Converts `string`, as space separated words, to upper case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the upper cased string.\n     * @example\n     *\n     * _.upperCase('--foo-bar');\n     * // => 'FOO BAR'\n     *\n     * _.upperCase('fooBar');\n     * // => 'FOO BAR'\n     *\n     * _.upperCase('__foo_bar__');\n     * // => 'FOO BAR'\n     */\n    var upperCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + word.toUpperCase();\n    });\n\n    /**\n     * Converts the first character of `string` to upper case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the converted string.\n     * @example\n     *\n     * _.upperFirst('fred');\n     * // => 'Fred'\n     *\n     * _.upperFirst('FRED');\n     * // => 'FRED'\n     */\n    var upperFirst = createCaseFirst('toUpperCase');\n\n    /**\n     * Splits `string` into an array of its words.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {RegExp|string} [pattern] The pattern to match words.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the words of `string`.\n     * @example\n     *\n     * _.words('fred, barney, & pebbles');\n     * // => ['fred', 'barney', 'pebbles']\n     *\n     * _.words('fred, barney, & pebbles', /[^, ]+/g);\n     * // => ['fred', 'barney', '&', 'pebbles']\n     */\n    function words(string, pattern, guard) {\n      string = toString(string);\n      pattern = guard ? undefined : pattern;\n\n      if (pattern === undefined) {\n        return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n      }\n      return string.match(pattern) || [];\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Attempts to invoke `func`, returning either the result or the caught error\n     * object. Any additional arguments are provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Function} func The function to attempt.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {*} Returns the `func` result or error object.\n     * @example\n     *\n     * // Avoid throwing errors for invalid selectors.\n     * var elements = _.attempt(function(selector) {\n     *   return document.querySelectorAll(selector);\n     * }, '>_>');\n     *\n     * if (_.isError(elements)) {\n     *   elements = [];\n     * }\n     */\n    var attempt = baseRest(function(func, args) {\n      try {\n        return apply(func, undefined, args);\n      } catch (e) {\n        return isError(e) ? e : new Error(e);\n      }\n    });\n\n    /**\n     * Binds methods of an object to the object itself, overwriting the existing\n     * method.\n     *\n     * **Note:** This method doesn't set the \"length\" property of bound functions.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {Object} object The object to bind and assign the bound methods to.\n     * @param {...(string|string[])} methodNames The object method names to bind.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var view = {\n     *   'label': 'docs',\n     *   'click': function() {\n     *     console.log('clicked ' + this.label);\n     *   }\n     * };\n     *\n     * _.bindAll(view, ['click']);\n     * jQuery(element).on('click', view.click);\n     * // => Logs 'clicked docs' when clicked.\n     */\n    var bindAll = flatRest(function(object, methodNames) {\n      arrayEach(methodNames, function(key) {\n        key = toKey(key);\n        baseAssignValue(object, key, bind(object[key], object));\n      });\n      return object;\n    });\n\n    /**\n     * Creates a function that iterates over `pairs` and invokes the corresponding\n     * function of the first predicate to return truthy. The predicate-function\n     * pairs are invoked with the `this` binding and arguments of the created\n     * function.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {Array} pairs The predicate-function pairs.\n     * @returns {Function} Returns the new composite function.\n     * @example\n     *\n     * var func = _.cond([\n     *   [_.matches({ 'a': 1 }),           _.constant('matches A')],\n     *   [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n     *   [_.stubTrue,                      _.constant('no match')]\n     * ]);\n     *\n     * func({ 'a': 1, 'b': 2 });\n     * // => 'matches A'\n     *\n     * func({ 'a': 0, 'b': 1 });\n     * // => 'matches B'\n     *\n     * func({ 'a': '1', 'b': '2' });\n     * // => 'no match'\n     */\n    function cond(pairs) {\n      var length = pairs == null ? 0 : pairs.length,\n          toIteratee = getIteratee();\n\n      pairs = !length ? [] : arrayMap(pairs, function(pair) {\n        if (typeof pair[1] != 'function') {\n          throw new TypeError(FUNC_ERROR_TEXT);\n        }\n        return [toIteratee(pair[0]), pair[1]];\n      });\n\n      return baseRest(function(args) {\n        var index = -1;\n        while (++index < length) {\n          var pair = pairs[index];\n          if (apply(pair[0], this, args)) {\n            return apply(pair[1], this, args);\n          }\n        }\n      });\n    }\n\n    /**\n     * Creates a function that invokes the predicate properties of `source` with\n     * the corresponding property values of a given object, returning `true` if\n     * all predicates return truthy, else `false`.\n     *\n     * **Note:** The created function is equivalent to `_.conformsTo` with\n     * `source` partially applied.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {Function} Returns the new spec function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': 2, 'b': 1 },\n     *   { 'a': 1, 'b': 2 }\n     * ];\n     *\n     * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n     * // => [{ 'a': 1, 'b': 2 }]\n     */\n    function conforms(source) {\n      return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that returns `value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Util\n     * @param {*} value The value to return from the new function.\n     * @returns {Function} Returns the new constant function.\n     * @example\n     *\n     * var objects = _.times(2, _.constant({ 'a': 1 }));\n     *\n     * console.log(objects);\n     * // => [{ 'a': 1 }, { 'a': 1 }]\n     *\n     * console.log(objects[0] === objects[1]);\n     * // => true\n     */\n    function constant(value) {\n      return function() {\n        return value;\n      };\n    }\n\n    /**\n     * Checks `value` to determine whether a default value should be returned in\n     * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n     * or `undefined`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.14.0\n     * @category Util\n     * @param {*} value The value to check.\n     * @param {*} defaultValue The default value.\n     * @returns {*} Returns the resolved value.\n     * @example\n     *\n     * _.defaultTo(1, 10);\n     * // => 1\n     *\n     * _.defaultTo(undefined, 10);\n     * // => 10\n     */\n    function defaultTo(value, defaultValue) {\n      return (value == null || value !== value) ? defaultValue : value;\n    }\n\n    /**\n     * Creates a function that returns the result of invoking the given functions\n     * with the `this` binding of the created function, where each successive\n     * invocation is supplied the return value of the previous.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [funcs] The functions to invoke.\n     * @returns {Function} Returns the new composite function.\n     * @see _.flowRight\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var addSquare = _.flow([_.add, square]);\n     * addSquare(1, 2);\n     * // => 9\n     */\n    var flow = createFlow();\n\n    /**\n     * This method is like `_.flow` except that it creates a function that\n     * invokes the given functions from right to left.\n     *\n     * @static\n     * @since 3.0.0\n     * @memberOf _\n     * @category Util\n     * @param {...(Function|Function[])} [funcs] The functions to invoke.\n     * @returns {Function} Returns the new composite function.\n     * @see _.flow\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var addSquare = _.flowRight([square, _.add]);\n     * addSquare(1, 2);\n     * // => 9\n     */\n    var flowRight = createFlow(true);\n\n    /**\n     * This method returns the first argument it receives.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {*} value Any value.\n     * @returns {*} Returns `value`.\n     * @example\n     *\n     * var object = { 'a': 1 };\n     *\n     * console.log(_.identity(object) === object);\n     * // => true\n     */\n    function identity(value) {\n      return value;\n    }\n\n    /**\n     * Creates a function that invokes `func` with the arguments of the created\n     * function. If `func` is a property name, the created function returns the\n     * property value for a given element. If `func` is an array or object, the\n     * created function returns `true` for elements that contain the equivalent\n     * source properties, otherwise it returns `false`.\n     *\n     * @static\n     * @since 4.0.0\n     * @memberOf _\n     * @category Util\n     * @param {*} [func=_.identity] The value to convert to a callback.\n     * @returns {Function} Returns the callback.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': true },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n     * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.filter(users, _.iteratee(['user', 'fred']));\n     * // => [{ 'user': 'fred', 'age': 40 }]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.map(users, _.iteratee('user'));\n     * // => ['barney', 'fred']\n     *\n     * // Create custom iteratee shorthands.\n     * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n     *   return !_.isRegExp(func) ? iteratee(func) : function(string) {\n     *     return func.test(string);\n     *   };\n     * });\n     *\n     * _.filter(['abc', 'def'], /ef/);\n     * // => ['def']\n     */\n    function iteratee(func) {\n      return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that performs a partial deep comparison between a given\n     * object and `source`, returning `true` if the given object has equivalent\n     * property values, else `false`.\n     *\n     * **Note:** The created function is equivalent to `_.isMatch` with `source`\n     * partially applied.\n     *\n     * Partial comparisons will match empty array and empty object `source`\n     * values against any array or object value, respectively. See `_.isEqual`\n     * for a list of supported value comparisons.\n     *\n     * **Note:** Multiple values can be checked by combining several matchers\n     * using `_.overSome`\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Object} source The object of property values to match.\n     * @returns {Function} Returns the new spec function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': 1, 'b': 2, 'c': 3 },\n     *   { 'a': 4, 'b': 5, 'c': 6 }\n     * ];\n     *\n     * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n     * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n     *\n     * // Checking for several possible values\n     * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));\n     * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n     */\n    function matches(source) {\n      return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that performs a partial deep comparison between the\n     * value at `path` of a given object to `srcValue`, returning `true` if the\n     * object value is equivalent, else `false`.\n     *\n     * **Note:** Partial comparisons will match empty array and empty object\n     * `srcValue` values against any array or object value, respectively. See\n     * `_.isEqual` for a list of supported value comparisons.\n     *\n     * **Note:** Multiple values can be checked by combining several matchers\n     * using `_.overSome`\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Util\n     * @param {Array|string} path The path of the property to get.\n     * @param {*} srcValue The value to match.\n     * @returns {Function} Returns the new spec function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': 1, 'b': 2, 'c': 3 },\n     *   { 'a': 4, 'b': 5, 'c': 6 }\n     * ];\n     *\n     * _.find(objects, _.matchesProperty('a', 4));\n     * // => { 'a': 4, 'b': 5, 'c': 6 }\n     *\n     * // Checking for several possible values\n     * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));\n     * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n     */\n    function matchesProperty(path, srcValue) {\n      return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that invokes the method at `path` of a given object.\n     * Any additional arguments are provided to the invoked method.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Util\n     * @param {Array|string} path The path of the method to invoke.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {Function} Returns the new invoker function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': { 'b': _.constant(2) } },\n     *   { 'a': { 'b': _.constant(1) } }\n     * ];\n     *\n     * _.map(objects, _.method('a.b'));\n     * // => [2, 1]\n     *\n     * _.map(objects, _.method(['a', 'b']));\n     * // => [2, 1]\n     */\n    var method = baseRest(function(path, args) {\n      return function(object) {\n        return baseInvoke(object, path, args);\n      };\n    });\n\n    /**\n     * The opposite of `_.method`; this method creates a function that invokes\n     * the method at a given path of `object`. Any additional arguments are\n     * provided to the invoked method.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Util\n     * @param {Object} object The object to query.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {Function} Returns the new invoker function.\n     * @example\n     *\n     * var array = _.times(3, _.constant),\n     *     object = { 'a': array, 'b': array, 'c': array };\n     *\n     * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n     * // => [2, 0]\n     *\n     * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n     * // => [2, 0]\n     */\n    var methodOf = baseRest(function(object, args) {\n      return function(path) {\n        return baseInvoke(object, path, args);\n      };\n    });\n\n    /**\n     * Adds all own enumerable string keyed function properties of a source\n     * object to the destination object. If `object` is a function, then methods\n     * are added to its prototype as well.\n     *\n     * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n     * avoid conflicts caused by modifying the original.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {Function|Object} [object=lodash] The destination object.\n     * @param {Object} source The object of functions to add.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n     * @returns {Function|Object} Returns `object`.\n     * @example\n     *\n     * function vowels(string) {\n     *   return _.filter(string, function(v) {\n     *     return /[aeiou]/i.test(v);\n     *   });\n     * }\n     *\n     * _.mixin({ 'vowels': vowels });\n     * _.vowels('fred');\n     * // => ['e']\n     *\n     * _('fred').vowels().value();\n     * // => ['e']\n     *\n     * _.mixin({ 'vowels': vowels }, { 'chain': false });\n     * _('fred').vowels();\n     * // => ['e']\n     */\n    function mixin(object, source, options) {\n      var props = keys(source),\n          methodNames = baseFunctions(source, props);\n\n      if (options == null &&\n          !(isObject(source) && (methodNames.length || !props.length))) {\n        options = source;\n        source = object;\n        object = this;\n        methodNames = baseFunctions(source, keys(source));\n      }\n      var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n          isFunc = isFunction(object);\n\n      arrayEach(methodNames, function(methodName) {\n        var func = source[methodName];\n        object[methodName] = func;\n        if (isFunc) {\n          object.prototype[methodName] = function() {\n            var chainAll = this.__chain__;\n            if (chain || chainAll) {\n              var result = object(this.__wrapped__),\n                  actions = result.__actions__ = copyArray(this.__actions__);\n\n              actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n              result.__chain__ = chainAll;\n              return result;\n            }\n            return func.apply(object, arrayPush([this.value()], arguments));\n          };\n        }\n      });\n\n      return object;\n    }\n\n    /**\n     * Reverts the `_` variable to its previous value and returns a reference to\n     * the `lodash` function.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @returns {Function} Returns the `lodash` function.\n     * @example\n     *\n     * var lodash = _.noConflict();\n     */\n    function noConflict() {\n      if (root._ === this) {\n        root._ = oldDash;\n      }\n      return this;\n    }\n\n    /**\n     * This method returns `undefined`.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.3.0\n     * @category Util\n     * @example\n     *\n     * _.times(2, _.noop);\n     * // => [undefined, undefined]\n     */\n    function noop() {\n      // No operation performed.\n    }\n\n    /**\n     * Creates a function that gets the argument at index `n`. If `n` is negative,\n     * the nth argument from the end is returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {number} [n=0] The index of the argument to return.\n     * @returns {Function} Returns the new pass-thru function.\n     * @example\n     *\n     * var func = _.nthArg(1);\n     * func('a', 'b', 'c', 'd');\n     * // => 'b'\n     *\n     * var func = _.nthArg(-2);\n     * func('a', 'b', 'c', 'd');\n     * // => 'c'\n     */\n    function nthArg(n) {\n      n = toInteger(n);\n      return baseRest(function(args) {\n        return baseNth(args, n);\n      });\n    }\n\n    /**\n     * Creates a function that invokes `iteratees` with the arguments it receives\n     * and returns their results.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [iteratees=[_.identity]]\n     *  The iteratees to invoke.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.over([Math.max, Math.min]);\n     *\n     * func(1, 2, 3, 4);\n     * // => [4, 1]\n     */\n    var over = createOver(arrayMap);\n\n    /**\n     * Creates a function that checks if **all** of the `predicates` return\n     * truthy when invoked with the arguments it receives.\n     *\n     * Following shorthands are possible for providing predicates.\n     * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n     * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [predicates=[_.identity]]\n     *  The predicates to check.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.overEvery([Boolean, isFinite]);\n     *\n     * func('1');\n     * // => true\n     *\n     * func(null);\n     * // => false\n     *\n     * func(NaN);\n     * // => false\n     */\n    var overEvery = createOver(arrayEvery);\n\n    /**\n     * Creates a function that checks if **any** of the `predicates` return\n     * truthy when invoked with the arguments it receives.\n     *\n     * Following shorthands are possible for providing predicates.\n     * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n     * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [predicates=[_.identity]]\n     *  The predicates to check.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.overSome([Boolean, isFinite]);\n     *\n     * func('1');\n     * // => true\n     *\n     * func(null);\n     * // => true\n     *\n     * func(NaN);\n     * // => false\n     *\n     * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }])\n     * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]])\n     */\n    var overSome = createOver(arraySome);\n\n    /**\n     * Creates a function that returns the value at `path` of a given object.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Util\n     * @param {Array|string} path The path of the property to get.\n     * @returns {Function} Returns the new accessor function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': { 'b': 2 } },\n     *   { 'a': { 'b': 1 } }\n     * ];\n     *\n     * _.map(objects, _.property('a.b'));\n     * // => [2, 1]\n     *\n     * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n     * // => [1, 2]\n     */\n    function property(path) {\n      return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n    }\n\n    /**\n     * The opposite of `_.property`; this method creates a function that returns\n     * the value at a given path of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Object} object The object to query.\n     * @returns {Function} Returns the new accessor function.\n     * @example\n     *\n     * var array = [0, 1, 2],\n     *     object = { 'a': array, 'b': array, 'c': array };\n     *\n     * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n     * // => [2, 0]\n     *\n     * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n     * // => [2, 0]\n     */\n    function propertyOf(object) {\n      return function(path) {\n        return object == null ? undefined : baseGet(object, path);\n      };\n    }\n\n    /**\n     * Creates an array of numbers (positive and/or negative) progressing from\n     * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n     * `start` is specified without an `end` or `step`. If `end` is not specified,\n     * it's set to `start` with `start` then set to `0`.\n     *\n     * **Note:** JavaScript follows the IEEE-754 standard for resolving\n     * floating-point values which can produce unexpected results.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {number} [start=0] The start of the range.\n     * @param {number} end The end of the range.\n     * @param {number} [step=1] The value to increment or decrement by.\n     * @returns {Array} Returns the range of numbers.\n     * @see _.inRange, _.rangeRight\n     * @example\n     *\n     * _.range(4);\n     * // => [0, 1, 2, 3]\n     *\n     * _.range(-4);\n     * // => [0, -1, -2, -3]\n     *\n     * _.range(1, 5);\n     * // => [1, 2, 3, 4]\n     *\n     * _.range(0, 20, 5);\n     * // => [0, 5, 10, 15]\n     *\n     * _.range(0, -4, -1);\n     * // => [0, -1, -2, -3]\n     *\n     * _.range(1, 4, 0);\n     * // => [1, 1, 1]\n     *\n     * _.range(0);\n     * // => []\n     */\n    var range = createRange();\n\n    /**\n     * This method is like `_.range` except that it populates values in\n     * descending order.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {number} [start=0] The start of the range.\n     * @param {number} end The end of the range.\n     * @param {number} [step=1] The value to increment or decrement by.\n     * @returns {Array} Returns the range of numbers.\n     * @see _.inRange, _.range\n     * @example\n     *\n     * _.rangeRight(4);\n     * // => [3, 2, 1, 0]\n     *\n     * _.rangeRight(-4);\n     * // => [-3, -2, -1, 0]\n     *\n     * _.rangeRight(1, 5);\n     * // => [4, 3, 2, 1]\n     *\n     * _.rangeRight(0, 20, 5);\n     * // => [15, 10, 5, 0]\n     *\n     * _.rangeRight(0, -4, -1);\n     * // => [-3, -2, -1, 0]\n     *\n     * _.rangeRight(1, 4, 0);\n     * // => [1, 1, 1]\n     *\n     * _.rangeRight(0);\n     * // => []\n     */\n    var rangeRight = createRange(true);\n\n    /**\n     * This method returns a new empty array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {Array} Returns the new empty array.\n     * @example\n     *\n     * var arrays = _.times(2, _.stubArray);\n     *\n     * console.log(arrays);\n     * // => [[], []]\n     *\n     * console.log(arrays[0] === arrays[1]);\n     * // => false\n     */\n    function stubArray() {\n      return [];\n    }\n\n    /**\n     * This method returns `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {boolean} Returns `false`.\n     * @example\n     *\n     * _.times(2, _.stubFalse);\n     * // => [false, false]\n     */\n    function stubFalse() {\n      return false;\n    }\n\n    /**\n     * This method returns a new empty object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {Object} Returns the new empty object.\n     * @example\n     *\n     * var objects = _.times(2, _.stubObject);\n     *\n     * console.log(objects);\n     * // => [{}, {}]\n     *\n     * console.log(objects[0] === objects[1]);\n     * // => false\n     */\n    function stubObject() {\n      return {};\n    }\n\n    /**\n     * This method returns an empty string.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {string} Returns the empty string.\n     * @example\n     *\n     * _.times(2, _.stubString);\n     * // => ['', '']\n     */\n    function stubString() {\n      return '';\n    }\n\n    /**\n     * This method returns `true`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {boolean} Returns `true`.\n     * @example\n     *\n     * _.times(2, _.stubTrue);\n     * // => [true, true]\n     */\n    function stubTrue() {\n      return true;\n    }\n\n    /**\n     * Invokes the iteratee `n` times, returning an array of the results of\n     * each invocation. The iteratee is invoked with one argument; (index).\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {number} n The number of times to invoke `iteratee`.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the array of results.\n     * @example\n     *\n     * _.times(3, String);\n     * // => ['0', '1', '2']\n     *\n     *  _.times(4, _.constant(0));\n     * // => [0, 0, 0, 0]\n     */\n    function times(n, iteratee) {\n      n = toInteger(n);\n      if (n < 1 || n > MAX_SAFE_INTEGER) {\n        return [];\n      }\n      var index = MAX_ARRAY_LENGTH,\n          length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n      iteratee = getIteratee(iteratee);\n      n -= MAX_ARRAY_LENGTH;\n\n      var result = baseTimes(length, iteratee);\n      while (++index < n) {\n        iteratee(index);\n      }\n      return result;\n    }\n\n    /**\n     * Converts `value` to a property path array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {*} value The value to convert.\n     * @returns {Array} Returns the new property path array.\n     * @example\n     *\n     * _.toPath('a.b.c');\n     * // => ['a', 'b', 'c']\n     *\n     * _.toPath('a[0].b.c');\n     * // => ['a', '0', 'b', 'c']\n     */\n    function toPath(value) {\n      if (isArray(value)) {\n        return arrayMap(value, toKey);\n      }\n      return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n    }\n\n    /**\n     * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {string} [prefix=''] The value to prefix the ID with.\n     * @returns {string} Returns the unique ID.\n     * @example\n     *\n     * _.uniqueId('contact_');\n     * // => 'contact_104'\n     *\n     * _.uniqueId();\n     * // => '105'\n     */\n    function uniqueId(prefix) {\n      var id = ++idCounter;\n      return toString(prefix) + id;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Adds two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.4.0\n     * @category Math\n     * @param {number} augend The first number in an addition.\n     * @param {number} addend The second number in an addition.\n     * @returns {number} Returns the total.\n     * @example\n     *\n     * _.add(6, 4);\n     * // => 10\n     */\n    var add = createMathOperation(function(augend, addend) {\n      return augend + addend;\n    }, 0);\n\n    /**\n     * Computes `number` rounded up to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round up.\n     * @param {number} [precision=0] The precision to round up to.\n     * @returns {number} Returns the rounded up number.\n     * @example\n     *\n     * _.ceil(4.006);\n     * // => 5\n     *\n     * _.ceil(6.004, 2);\n     * // => 6.01\n     *\n     * _.ceil(6040, -2);\n     * // => 6100\n     */\n    var ceil = createRound('ceil');\n\n    /**\n     * Divide two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {number} dividend The first number in a division.\n     * @param {number} divisor The second number in a division.\n     * @returns {number} Returns the quotient.\n     * @example\n     *\n     * _.divide(6, 4);\n     * // => 1.5\n     */\n    var divide = createMathOperation(function(dividend, divisor) {\n      return dividend / divisor;\n    }, 1);\n\n    /**\n     * Computes `number` rounded down to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round down.\n     * @param {number} [precision=0] The precision to round down to.\n     * @returns {number} Returns the rounded down number.\n     * @example\n     *\n     * _.floor(4.006);\n     * // => 4\n     *\n     * _.floor(0.046, 2);\n     * // => 0.04\n     *\n     * _.floor(4060, -2);\n     * // => 4000\n     */\n    var floor = createRound('floor');\n\n    /**\n     * Computes the maximum value of `array`. If `array` is empty or falsey,\n     * `undefined` is returned.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {*} Returns the maximum value.\n     * @example\n     *\n     * _.max([4, 2, 8, 6]);\n     * // => 8\n     *\n     * _.max([]);\n     * // => undefined\n     */\n    function max(array) {\n      return (array && array.length)\n        ? baseExtremum(array, identity, baseGt)\n        : undefined;\n    }\n\n    /**\n     * This method is like `_.max` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * the value is ranked. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {*} Returns the maximum value.\n     * @example\n     *\n     * var objects = [{ 'n': 1 }, { 'n': 2 }];\n     *\n     * _.maxBy(objects, function(o) { return o.n; });\n     * // => { 'n': 2 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.maxBy(objects, 'n');\n     * // => { 'n': 2 }\n     */\n    function maxBy(array, iteratee) {\n      return (array && array.length)\n        ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n        : undefined;\n    }\n\n    /**\n     * Computes the mean of the values in `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {number} Returns the mean.\n     * @example\n     *\n     * _.mean([4, 2, 8, 6]);\n     * // => 5\n     */\n    function mean(array) {\n      return baseMean(array, identity);\n    }\n\n    /**\n     * This method is like `_.mean` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the value to be averaged.\n     * The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the mean.\n     * @example\n     *\n     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n     *\n     * _.meanBy(objects, function(o) { return o.n; });\n     * // => 5\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.meanBy(objects, 'n');\n     * // => 5\n     */\n    function meanBy(array, iteratee) {\n      return baseMean(array, getIteratee(iteratee, 2));\n    }\n\n    /**\n     * Computes the minimum value of `array`. If `array` is empty or falsey,\n     * `undefined` is returned.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {*} Returns the minimum value.\n     * @example\n     *\n     * _.min([4, 2, 8, 6]);\n     * // => 2\n     *\n     * _.min([]);\n     * // => undefined\n     */\n    function min(array) {\n      return (array && array.length)\n        ? baseExtremum(array, identity, baseLt)\n        : undefined;\n    }\n\n    /**\n     * This method is like `_.min` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * the value is ranked. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {*} Returns the minimum value.\n     * @example\n     *\n     * var objects = [{ 'n': 1 }, { 'n': 2 }];\n     *\n     * _.minBy(objects, function(o) { return o.n; });\n     * // => { 'n': 1 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.minBy(objects, 'n');\n     * // => { 'n': 1 }\n     */\n    function minBy(array, iteratee) {\n      return (array && array.length)\n        ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n        : undefined;\n    }\n\n    /**\n     * Multiply two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {number} multiplier The first number in a multiplication.\n     * @param {number} multiplicand The second number in a multiplication.\n     * @returns {number} Returns the product.\n     * @example\n     *\n     * _.multiply(6, 4);\n     * // => 24\n     */\n    var multiply = createMathOperation(function(multiplier, multiplicand) {\n      return multiplier * multiplicand;\n    }, 1);\n\n    /**\n     * Computes `number` rounded to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round.\n     * @param {number} [precision=0] The precision to round to.\n     * @returns {number} Returns the rounded number.\n     * @example\n     *\n     * _.round(4.006);\n     * // => 4\n     *\n     * _.round(4.006, 2);\n     * // => 4.01\n     *\n     * _.round(4060, -2);\n     * // => 4100\n     */\n    var round = createRound('round');\n\n    /**\n     * Subtract two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {number} minuend The first number in a subtraction.\n     * @param {number} subtrahend The second number in a subtraction.\n     * @returns {number} Returns the difference.\n     * @example\n     *\n     * _.subtract(6, 4);\n     * // => 2\n     */\n    var subtract = createMathOperation(function(minuend, subtrahend) {\n      return minuend - subtrahend;\n    }, 0);\n\n    /**\n     * Computes the sum of the values in `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.4.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {number} Returns the sum.\n     * @example\n     *\n     * _.sum([4, 2, 8, 6]);\n     * // => 20\n     */\n    function sum(array) {\n      return (array && array.length)\n        ? baseSum(array, identity)\n        : 0;\n    }\n\n    /**\n     * This method is like `_.sum` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the value to be summed.\n     * The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the sum.\n     * @example\n     *\n     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n     *\n     * _.sumBy(objects, function(o) { return o.n; });\n     * // => 20\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sumBy(objects, 'n');\n     * // => 20\n     */\n    function sumBy(array, iteratee) {\n      return (array && array.length)\n        ? baseSum(array, getIteratee(iteratee, 2))\n        : 0;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    // Add methods that return wrapped values in chain sequences.\n    lodash.after = after;\n    lodash.ary = ary;\n    lodash.assign = assign;\n    lodash.assignIn = assignIn;\n    lodash.assignInWith = assignInWith;\n    lodash.assignWith = assignWith;\n    lodash.at = at;\n    lodash.before = before;\n    lodash.bind = bind;\n    lodash.bindAll = bindAll;\n    lodash.bindKey = bindKey;\n    lodash.castArray = castArray;\n    lodash.chain = chain;\n    lodash.chunk = chunk;\n    lodash.compact = compact;\n    lodash.concat = concat;\n    lodash.cond = cond;\n    lodash.conforms = conforms;\n    lodash.constant = constant;\n    lodash.countBy = countBy;\n    lodash.create = create;\n    lodash.curry = curry;\n    lodash.curryRight = curryRight;\n    lodash.debounce = debounce;\n    lodash.defaults = defaults;\n    lodash.defaultsDeep = defaultsDeep;\n    lodash.defer = defer;\n    lodash.delay = delay;\n    lodash.difference = difference;\n    lodash.differenceBy = differenceBy;\n    lodash.differenceWith = differenceWith;\n    lodash.drop = drop;\n    lodash.dropRight = dropRight;\n    lodash.dropRightWhile = dropRightWhile;\n    lodash.dropWhile = dropWhile;\n    lodash.fill = fill;\n    lodash.filter = filter;\n    lodash.flatMap = flatMap;\n    lodash.flatMapDeep = flatMapDeep;\n    lodash.flatMapDepth = flatMapDepth;\n    lodash.flatten = flatten;\n    lodash.flattenDeep = flattenDeep;\n    lodash.flattenDepth = flattenDepth;\n    lodash.flip = flip;\n    lodash.flow = flow;\n    lodash.flowRight = flowRight;\n    lodash.fromPairs = fromPairs;\n    lodash.functions = functions;\n    lodash.functionsIn = functionsIn;\n    lodash.groupBy = groupBy;\n    lodash.initial = initial;\n    lodash.intersection = intersection;\n    lodash.intersectionBy = intersectionBy;\n    lodash.intersectionWith = intersectionWith;\n    lodash.invert = invert;\n    lodash.invertBy = invertBy;\n    lodash.invokeMap = invokeMap;\n    lodash.iteratee = iteratee;\n    lodash.keyBy = keyBy;\n    lodash.keys = keys;\n    lodash.keysIn = keysIn;\n    lodash.map = map;\n    lodash.mapKeys = mapKeys;\n    lodash.mapValues = mapValues;\n    lodash.matches = matches;\n    lodash.matchesProperty = matchesProperty;\n    lodash.memoize = memoize;\n    lodash.merge = merge;\n    lodash.mergeWith = mergeWith;\n    lodash.method = method;\n    lodash.methodOf = methodOf;\n    lodash.mixin = mixin;\n    lodash.negate = negate;\n    lodash.nthArg = nthArg;\n    lodash.omit = omit;\n    lodash.omitBy = omitBy;\n    lodash.once = once;\n    lodash.orderBy = orderBy;\n    lodash.over = over;\n    lodash.overArgs = overArgs;\n    lodash.overEvery = overEvery;\n    lodash.overSome = overSome;\n    lodash.partial = partial;\n    lodash.partialRight = partialRight;\n    lodash.partition = partition;\n    lodash.pick = pick;\n    lodash.pickBy = pickBy;\n    lodash.property = property;\n    lodash.propertyOf = propertyOf;\n    lodash.pull = pull;\n    lodash.pullAll = pullAll;\n    lodash.pullAllBy = pullAllBy;\n    lodash.pullAllWith = pullAllWith;\n    lodash.pullAt = pullAt;\n    lodash.range = range;\n    lodash.rangeRight = rangeRight;\n    lodash.rearg = rearg;\n    lodash.reject = reject;\n    lodash.remove = remove;\n    lodash.rest = rest;\n    lodash.reverse = reverse;\n    lodash.sampleSize = sampleSize;\n    lodash.set = set;\n    lodash.setWith = setWith;\n    lodash.shuffle = shuffle;\n    lodash.slice = slice;\n    lodash.sortBy = sortBy;\n    lodash.sortedUniq = sortedUniq;\n    lodash.sortedUniqBy = sortedUniqBy;\n    lodash.split = split;\n    lodash.spread = spread;\n    lodash.tail = tail;\n    lodash.take = take;\n    lodash.takeRight = takeRight;\n    lodash.takeRightWhile = takeRightWhile;\n    lodash.takeWhile = takeWhile;\n    lodash.tap = tap;\n    lodash.throttle = throttle;\n    lodash.thru = thru;\n    lodash.toArray = toArray;\n    lodash.toPairs = toPairs;\n    lodash.toPairsIn = toPairsIn;\n    lodash.toPath = toPath;\n    lodash.toPlainObject = toPlainObject;\n    lodash.transform = transform;\n    lodash.unary = unary;\n    lodash.union = union;\n    lodash.unionBy = unionBy;\n    lodash.unionWith = unionWith;\n    lodash.uniq = uniq;\n    lodash.uniqBy = uniqBy;\n    lodash.uniqWith = uniqWith;\n    lodash.unset = unset;\n    lodash.unzip = unzip;\n    lodash.unzipWith = unzipWith;\n    lodash.update = update;\n    lodash.updateWith = updateWith;\n    lodash.values = values;\n    lodash.valuesIn = valuesIn;\n    lodash.without = without;\n    lodash.words = words;\n    lodash.wrap = wrap;\n    lodash.xor = xor;\n    lodash.xorBy = xorBy;\n    lodash.xorWith = xorWith;\n    lodash.zip = zip;\n    lodash.zipObject = zipObject;\n    lodash.zipObjectDeep = zipObjectDeep;\n    lodash.zipWith = zipWith;\n\n    // Add aliases.\n    lodash.entries = toPairs;\n    lodash.entriesIn = toPairsIn;\n    lodash.extend = assignIn;\n    lodash.extendWith = assignInWith;\n\n    // Add methods to `lodash.prototype`.\n    mixin(lodash, lodash);\n\n    /*------------------------------------------------------------------------*/\n\n    // Add methods that return unwrapped values in chain sequences.\n    lodash.add = add;\n    lodash.attempt = attempt;\n    lodash.camelCase = camelCase;\n    lodash.capitalize = capitalize;\n    lodash.ceil = ceil;\n    lodash.clamp = clamp;\n    lodash.clone = clone;\n    lodash.cloneDeep = cloneDeep;\n    lodash.cloneDeepWith = cloneDeepWith;\n    lodash.cloneWith = cloneWith;\n    lodash.conformsTo = conformsTo;\n    lodash.deburr = deburr;\n    lodash.defaultTo = defaultTo;\n    lodash.divide = divide;\n    lodash.endsWith = endsWith;\n    lodash.eq = eq;\n    lodash.escape = escape;\n    lodash.escapeRegExp = escapeRegExp;\n    lodash.every = every;\n    lodash.find = find;\n    lodash.findIndex = findIndex;\n    lodash.findKey = findKey;\n    lodash.findLast = findLast;\n    lodash.findLastIndex = findLastIndex;\n    lodash.findLastKey = findLastKey;\n    lodash.floor = floor;\n    lodash.forEach = forEach;\n    lodash.forEachRight = forEachRight;\n    lodash.forIn = forIn;\n    lodash.forInRight = forInRight;\n    lodash.forOwn = forOwn;\n    lodash.forOwnRight = forOwnRight;\n    lodash.get = get;\n    lodash.gt = gt;\n    lodash.gte = gte;\n    lodash.has = has;\n    lodash.hasIn = hasIn;\n    lodash.head = head;\n    lodash.identity = identity;\n    lodash.includes = includes;\n    lodash.indexOf = indexOf;\n    lodash.inRange = inRange;\n    lodash.invoke = invoke;\n    lodash.isArguments = isArguments;\n    lodash.isArray = isArray;\n    lodash.isArrayBuffer = isArrayBuffer;\n    lodash.isArrayLike = isArrayLike;\n    lodash.isArrayLikeObject = isArrayLikeObject;\n    lodash.isBoolean = isBoolean;\n    lodash.isBuffer = isBuffer;\n    lodash.isDate = isDate;\n    lodash.isElement = isElement;\n    lodash.isEmpty = isEmpty;\n    lodash.isEqual = isEqual;\n    lodash.isEqualWith = isEqualWith;\n    lodash.isError = isError;\n    lodash.isFinite = isFinite;\n    lodash.isFunction = isFunction;\n    lodash.isInteger = isInteger;\n    lodash.isLength = isLength;\n    lodash.isMap = isMap;\n    lodash.isMatch = isMatch;\n    lodash.isMatchWith = isMatchWith;\n    lodash.isNaN = isNaN;\n    lodash.isNative = isNative;\n    lodash.isNil = isNil;\n    lodash.isNull = isNull;\n    lodash.isNumber = isNumber;\n    lodash.isObject = isObject;\n    lodash.isObjectLike = isObjectLike;\n    lodash.isPlainObject = isPlainObject;\n    lodash.isRegExp = isRegExp;\n    lodash.isSafeInteger = isSafeInteger;\n    lodash.isSet = isSet;\n    lodash.isString = isString;\n    lodash.isSymbol = isSymbol;\n    lodash.isTypedArray = isTypedArray;\n    lodash.isUndefined = isUndefined;\n    lodash.isWeakMap = isWeakMap;\n    lodash.isWeakSet = isWeakSet;\n    lodash.join = join;\n    lodash.kebabCase = kebabCase;\n    lodash.last = last;\n    lodash.lastIndexOf = lastIndexOf;\n    lodash.lowerCase = lowerCase;\n    lodash.lowerFirst = lowerFirst;\n    lodash.lt = lt;\n    lodash.lte = lte;\n    lodash.max = max;\n    lodash.maxBy = maxBy;\n    lodash.mean = mean;\n    lodash.meanBy = meanBy;\n    lodash.min = min;\n    lodash.minBy = minBy;\n    lodash.stubArray = stubArray;\n    lodash.stubFalse = stubFalse;\n    lodash.stubObject = stubObject;\n    lodash.stubString = stubString;\n    lodash.stubTrue = stubTrue;\n    lodash.multiply = multiply;\n    lodash.nth = nth;\n    lodash.noConflict = noConflict;\n    lodash.noop = noop;\n    lodash.now = now;\n    lodash.pad = pad;\n    lodash.padEnd = padEnd;\n    lodash.padStart = padStart;\n    lodash.parseInt = parseInt;\n    lodash.random = random;\n    lodash.reduce = reduce;\n    lodash.reduceRight = reduceRight;\n    lodash.repeat = repeat;\n    lodash.replace = replace;\n    lodash.result = result;\n    lodash.round = round;\n    lodash.runInContext = runInContext;\n    lodash.sample = sample;\n    lodash.size = size;\n    lodash.snakeCase = snakeCase;\n    lodash.some = some;\n    lodash.sortedIndex = sortedIndex;\n    lodash.sortedIndexBy = sortedIndexBy;\n    lodash.sortedIndexOf = sortedIndexOf;\n    lodash.sortedLastIndex = sortedLastIndex;\n    lodash.sortedLastIndexBy = sortedLastIndexBy;\n    lodash.sortedLastIndexOf = sortedLastIndexOf;\n    lodash.startCase = startCase;\n    lodash.startsWith = startsWith;\n    lodash.subtract = subtract;\n    lodash.sum = sum;\n    lodash.sumBy = sumBy;\n    lodash.template = template;\n    lodash.times = times;\n    lodash.toFinite = toFinite;\n    lodash.toInteger = toInteger;\n    lodash.toLength = toLength;\n    lodash.toLower = toLower;\n    lodash.toNumber = toNumber;\n    lodash.toSafeInteger = toSafeInteger;\n    lodash.toString = toString;\n    lodash.toUpper = toUpper;\n    lodash.trim = trim;\n    lodash.trimEnd = trimEnd;\n    lodash.trimStart = trimStart;\n    lodash.truncate = truncate;\n    lodash.unescape = unescape;\n    lodash.uniqueId = uniqueId;\n    lodash.upperCase = upperCase;\n    lodash.upperFirst = upperFirst;\n\n    // Add aliases.\n    lodash.each = forEach;\n    lodash.eachRight = forEachRight;\n    lodash.first = head;\n\n    mixin(lodash, (function() {\n      var source = {};\n      baseForOwn(lodash, function(func, methodName) {\n        if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n          source[methodName] = func;\n        }\n      });\n      return source;\n    }()), { 'chain': false });\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * The semantic version number.\n     *\n     * @static\n     * @memberOf _\n     * @type {string}\n     */\n    lodash.VERSION = VERSION;\n\n    // Assign default placeholders.\n    arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n      lodash[methodName].placeholder = lodash;\n    });\n\n    // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n    arrayEach(['drop', 'take'], function(methodName, index) {\n      LazyWrapper.prototype[methodName] = function(n) {\n        n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n        var result = (this.__filtered__ && !index)\n          ? new LazyWrapper(this)\n          : this.clone();\n\n        if (result.__filtered__) {\n          result.__takeCount__ = nativeMin(n, result.__takeCount__);\n        } else {\n          result.__views__.push({\n            'size': nativeMin(n, MAX_ARRAY_LENGTH),\n            'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n          });\n        }\n        return result;\n      };\n\n      LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n        return this.reverse()[methodName](n).reverse();\n      };\n    });\n\n    // Add `LazyWrapper` methods that accept an `iteratee` value.\n    arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n      var type = index + 1,\n          isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n      LazyWrapper.prototype[methodName] = function(iteratee) {\n        var result = this.clone();\n        result.__iteratees__.push({\n          'iteratee': getIteratee(iteratee, 3),\n          'type': type\n        });\n        result.__filtered__ = result.__filtered__ || isFilter;\n        return result;\n      };\n    });\n\n    // Add `LazyWrapper` methods for `_.head` and `_.last`.\n    arrayEach(['head', 'last'], function(methodName, index) {\n      var takeName = 'take' + (index ? 'Right' : '');\n\n      LazyWrapper.prototype[methodName] = function() {\n        return this[takeName](1).value()[0];\n      };\n    });\n\n    // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n    arrayEach(['initial', 'tail'], function(methodName, index) {\n      var dropName = 'drop' + (index ? '' : 'Right');\n\n      LazyWrapper.prototype[methodName] = function() {\n        return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n      };\n    });\n\n    LazyWrapper.prototype.compact = function() {\n      return this.filter(identity);\n    };\n\n    LazyWrapper.prototype.find = function(predicate) {\n      return this.filter(predicate).head();\n    };\n\n    LazyWrapper.prototype.findLast = function(predicate) {\n      return this.reverse().find(predicate);\n    };\n\n    LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n      if (typeof path == 'function') {\n        return new LazyWrapper(this);\n      }\n      return this.map(function(value) {\n        return baseInvoke(value, path, args);\n      });\n    });\n\n    LazyWrapper.prototype.reject = function(predicate) {\n      return this.filter(negate(getIteratee(predicate)));\n    };\n\n    LazyWrapper.prototype.slice = function(start, end) {\n      start = toInteger(start);\n\n      var result = this;\n      if (result.__filtered__ && (start > 0 || end < 0)) {\n        return new LazyWrapper(result);\n      }\n      if (start < 0) {\n        result = result.takeRight(-start);\n      } else if (start) {\n        result = result.drop(start);\n      }\n      if (end !== undefined) {\n        end = toInteger(end);\n        result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n      }\n      return result;\n    };\n\n    LazyWrapper.prototype.takeRightWhile = function(predicate) {\n      return this.reverse().takeWhile(predicate).reverse();\n    };\n\n    LazyWrapper.prototype.toArray = function() {\n      return this.take(MAX_ARRAY_LENGTH);\n    };\n\n    // Add `LazyWrapper` methods to `lodash.prototype`.\n    baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n      var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n          isTaker = /^(?:head|last)$/.test(methodName),\n          lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n          retUnwrapped = isTaker || /^find/.test(methodName);\n\n      if (!lodashFunc) {\n        return;\n      }\n      lodash.prototype[methodName] = function() {\n        var value = this.__wrapped__,\n            args = isTaker ? [1] : arguments,\n            isLazy = value instanceof LazyWrapper,\n            iteratee = args[0],\n            useLazy = isLazy || isArray(value);\n\n        var interceptor = function(value) {\n          var result = lodashFunc.apply(lodash, arrayPush([value], args));\n          return (isTaker && chainAll) ? result[0] : result;\n        };\n\n        if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n          // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n          isLazy = useLazy = false;\n        }\n        var chainAll = this.__chain__,\n            isHybrid = !!this.__actions__.length,\n            isUnwrapped = retUnwrapped && !chainAll,\n            onlyLazy = isLazy && !isHybrid;\n\n        if (!retUnwrapped && useLazy) {\n          value = onlyLazy ? value : new LazyWrapper(this);\n          var result = func.apply(value, args);\n          result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n          return new LodashWrapper(result, chainAll);\n        }\n        if (isUnwrapped && onlyLazy) {\n          return func.apply(this, args);\n        }\n        result = this.thru(interceptor);\n        return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n      };\n    });\n\n    // Add `Array` methods to `lodash.prototype`.\n    arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n      var func = arrayProto[methodName],\n          chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n          retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n      lodash.prototype[methodName] = function() {\n        var args = arguments;\n        if (retUnwrapped && !this.__chain__) {\n          var value = this.value();\n          return func.apply(isArray(value) ? value : [], args);\n        }\n        return this[chainName](function(value) {\n          return func.apply(isArray(value) ? value : [], args);\n        });\n      };\n    });\n\n    // Map minified method names to their real names.\n    baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n      var lodashFunc = lodash[methodName];\n      if (lodashFunc) {\n        var key = lodashFunc.name + '';\n        if (!hasOwnProperty.call(realNames, key)) {\n          realNames[key] = [];\n        }\n        realNames[key].push({ 'name': methodName, 'func': lodashFunc });\n      }\n    });\n\n    realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n      'name': 'wrapper',\n      'func': undefined\n    }];\n\n    // Add methods to `LazyWrapper`.\n    LazyWrapper.prototype.clone = lazyClone;\n    LazyWrapper.prototype.reverse = lazyReverse;\n    LazyWrapper.prototype.value = lazyValue;\n\n    // Add chain sequence methods to the `lodash` wrapper.\n    lodash.prototype.at = wrapperAt;\n    lodash.prototype.chain = wrapperChain;\n    lodash.prototype.commit = wrapperCommit;\n    lodash.prototype.next = wrapperNext;\n    lodash.prototype.plant = wrapperPlant;\n    lodash.prototype.reverse = wrapperReverse;\n    lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n    // Add lazy aliases.\n    lodash.prototype.first = lodash.prototype.head;\n\n    if (symIterator) {\n      lodash.prototype[symIterator] = wrapperToIterator;\n    }\n    return lodash;\n  });\n\n  /*--------------------------------------------------------------------------*/\n\n  // Export lodash.\n  var _ = runInContext();\n\n  // Some AMD build optimizers, like r.js, check for condition patterns like:\n  if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n    // Expose Lodash on the global object to prevent errors when Lodash is\n    // loaded by a script tag in the presence of an AMD loader.\n    // See http://requirejs.org/docs/errors.html#mismatch for more details.\n    // Use `_.noConflict` to remove Lodash from the global object.\n    root._ = _;\n\n    // Define as an anonymous module so, through path mapping, it can be\n    // referenced as the \"underscore\" module.\n    define(function() {\n      return _;\n    });\n  }\n  // Check for `exports` after `define` in case a build optimizer adds it.\n  else if (freeModule) {\n    // Export for Node.js.\n    (freeModule.exports = _)._ = _;\n    // Export for CommonJS support.\n    freeExports._ = _;\n  }\n  else {\n    // Export to the global object.\n    root._ = _;\n  }\n}.call(this));\n", "import { format } from 'winston';\nimport { RestoreFieldsOptions } from './index';\nimport * as _ from 'lodash';\n\nconst parse = (stack: string): any[] => {\n  const lines = stack.split('\\n').slice(1);\n  return lines\n    .map((line: string) => {\n      if (line.match(/^\\s*[-]{4,}$/)) {\n        return {\n          file: line,\n          line: null,\n          functionName: null,\n          typeName: null,\n          methodName: null,\n          columnNumber: null,\n          'native': null,\n        };\n      }\n\n      const lineMatch = line.match(/at (?:(.+?)\\s+\\()?(?:(.+?):(\\d+)(?::(\\d+))?|([^)]+))\\)?/);\n      if (!lineMatch) {\n        return;\n      }\n\n      let object: string | null = null;\n      let method: string | null = null;\n      let functionName: string | null = null;\n      let typeName: string | null = null;\n      let methodName: string | null = null;\n      const isNative = (lineMatch[5] === 'native');\n\n      if (lineMatch[1]) {\n        functionName = lineMatch[1];\n\n        let methodStart = functionName.lastIndexOf('.');\n        if (functionName[methodStart - 1] == '.') {\n          methodStart--;\n        }\n\n        if (methodStart > 0) {\n          object = functionName.substring(0, methodStart);\n          method = functionName.substring(methodStart + 1);\n          const objectEnd = object.indexOf('.Module');\n          if (objectEnd > 0) {\n            functionName = functionName.substring(objectEnd + 1);\n            object = object.substring(0, objectEnd);\n          }\n        }\n      }\n\n      if (method) {\n        typeName = object;\n        methodName = method;\n      }\n\n      if (method === '<anonymous>') {\n        methodName = null;\n        functionName = null;\n      }\n\n      return {\n        file: lineMatch[2] || null,\n        line: parseInt(lineMatch[3], 10) || null,\n        functionName: functionName,\n        typeName: typeName,\n        methodName: methodName,\n        columnNumber: parseInt(lineMatch[4], 10) || null,\n        'native': isNative,\n      };\n    })\n    .filter((callSite: any) => !!callSite);\n}\n\nexport const getStackTrace = (obj?: any) => {\n  const oldLimit = Error.stackTraceLimit;\n  Error.stackTraceLimit = Infinity;\n\n  const dummyObject = obj || {};\n\n  Error.captureStackTrace(dummyObject, getStackTrace);\n\n  const v8StackTrace = (dummyObject as any).stack;\n  Error.stackTraceLimit = oldLimit;\n\n  return v8StackTrace;\n}\n\nexport const traceFormatter = format((info, opts) => {\n  if (!(info as any)[Symbol.for('source')]) {\n    (info as any)[Symbol.for('source')] = {};\n  }\n  (info as any)[Symbol.for('source')] = getRealTrace();\n  return info;\n});\n\nconst ignoredRegex = /node_modules\\/winston|node_modules\\/readable-stream|node:events/;\nconst ignoredList = ['node:events', 'events.js'];\n\nexport const getRealTrace = (): any => {\n  const stackTrace = parse(getStackTrace());\n\n  if (!stackTrace || stackTrace.length == 0) {\n    return {\n      file: null,\n      line: null\n    }\n  }\n\n  let sourceTrace = stackTrace[stackTrace.length - 1];\n  if (stackTrace.length > 4) {\n    const potentialTrace = stackTrace.slice(4)\n      .find(t => !t['native'] && t.file && t.file.indexOf('/') >= 0 && !t.file.match(ignoredRegex) && ignoredList.indexOf(t.file) < 0);\n\n    if (potentialTrace) {\n      sourceTrace = potentialTrace;\n    }\n  }\n\n  if (!sourceTrace) {\n    return {\n      file: null,\n      line: null\n    }\n  }\n\n  const resultTrace: any = {\n    file: sourceTrace.file,\n    line: sourceTrace.line\n  }\n\n  if (sourceTrace.functionName) {\n    resultTrace.functionName = sourceTrace.functionName;\n  }\n\n  return resultTrace;\n}\n\n// A symbol used as key in the global name space to put the AsyncLocalStorage store under\nexport const globalLoggerCtxKey: symbol = Symbol('loggerCtx');\n\nexport const getCircularReplacer = () => {\n  const seen = new WeakSet();\n  return (key: string, value: unknown) => {\n    if (typeof value === 'object' && value !== null) {\n      if (seen.has(value)) {\n        return;\n      }\n      seen.add(value);\n    }\n    return value;\n  };\n};\n\nclass PrecompiledData {\n  fieldList: string[];\n  array: boolean;\n\n  public constructor(\n    public fieldPath: string,\n    public enableLogging = false\n  ) {\n    this.fieldList = fieldPath.split(/\\.?\\[|\\]\\.|\\./);\n    this.array = !!fieldPath.match(/\\[.?\\]/);\n  }\n}\n\nexport interface PrecompiledFieldOptions {\n  maskFields: PrecompiledData[];\n  omitFields: PrecompiledData[];\n  bufferFields: PrecompiledData[];\n}\n\n\n// This gets called when logger is initialized\nexport const precompile = (fieldOptions?: RestoreFieldsOptions) => {\n  return {\n    maskFields: fieldOptions?.maskFields?.map(fieldPath => new PrecompiledData(fieldPath)),\n    omitFields: fieldOptions?.omitFields?.map(fieldPath => new PrecompiledData(fieldPath)),\n    bufferFields: fieldOptions?.bufferFields?.map(buffer => new PrecompiledData(\n      buffer.fieldPath,\n      buffer.enableLogging\n    )),\n  };\n}\n\nexport type FieldOperation = 'maskFields' | 'omitFields' | 'bufferFields';\nexport const updateObject = (\n  obj: any,\n  path: string[],\n  operation: FieldOperation,\n  enableLogging = false,\n) => {\n  const target = _.get(obj, path);\n  if (target) {\n    switch (operation) {\n      case 'maskFields':\n        _.set(obj, path, '******');\n        break;\n      case 'omitFields':\n        _.unset(obj, path);\n        break;\n      case 'bufferFields':\n        if (enableLogging) {\n          let unmarshalled: any;\n          try {\n            unmarshalled = JSON.parse(target.value?.toString() ?? target.toString());\n          }\n          catch {\n            unmarshalled = Buffer.from(target.value ?? target).toString('base64');\n          }\n          _.set(obj, path, unmarshalled);\n        } else {\n          _.unset(obj, path);\n        }\n        break;\n      default:\n        break;\n    }\n  }\n};\n\nexport const setNestedPath = (\n  object: any,\n  fieldList: string[],\n  operation: FieldOperation,\n  enableLogging?: boolean\n) => {\n  const prefix = fieldList.slice(0, fieldList.indexOf('0'));\n  const suffix = fieldList.slice(fieldList.indexOf('0') + 1);\n  const hasSubArray = suffix.includes('0');\n  if (prefix?.length) {\n    const array = _.get(object, prefix);\n    array?.forEach?.((obj: any) => {\n      // maskFields or omitFields or handle bufferFields depending on operation\n      if (hasSubArray) {\n        setNestedPath(obj, suffix, operation, enableLogging);\n      }\n      else {\n        updateObject(obj, suffix, operation, enableLogging);\n      }\n    });\n  }\n};\n\nconst setIfExists = (\n  obj: any,\n  fieldList: string[],\n  operation: FieldOperation,\n  array = false,\n  enableLogging = false,\n): void => {\n  // fieldList contains the split Path to individual fields for fieldPath\n  if (array) {\n    setNestedPath(obj, fieldList, operation, enableLogging);\n  } else {\n    updateObject(obj, fieldList, operation, enableLogging);\n  }\n};\n\nexport const logFieldsHandler = (object: any, precompiled?: PrecompiledFieldOptions) => {\n  if (!precompiled) {\n    return object;\n  }\n  // if none of bufferFields or maskFields or omitFields are set then do not proceed further\n  if (\n    _.isEmpty(precompiled?.maskFields)\n    && _.isEmpty(precompiled?.omitFields)\n    && _.isEmpty(precompiled?.bufferFields)\n  ) {\n    return object;\n  }\n  let objectFieldsMod;\n  try {\n    objectFieldsMod = JSON.parse(JSON.stringify(object, getCircularReplacer()));\n  } catch (error) {\n    console.error('Error parsing object part of log message', object);\n  }\n  // since multiple comma separated  objects can be passed as fields for logging\n  if (!Array.isArray(objectFieldsMod)) {\n    objectFieldsMod = [objectFieldsMod];\n  }\n  for (const obj of objectFieldsMod) {\n    // iterate to check each mask field\n    precompiled?.maskFields?.forEach((maskCfg) => {\n      setIfExists(obj, maskCfg.fieldList, 'maskFields', maskCfg.array);\n    });\n\n    // iterate to check each omit field\n    precompiled?.omitFields?.forEach((omitCfg) => {\n      setIfExists(obj, omitCfg.fieldList, 'omitFields', omitCfg.array);\n    });\n\n    // iterate to check each buffer field\n    precompiled?.bufferFields?.forEach((bufferFieldObj) => {\n      setIfExists(obj, bufferFieldObj.fieldList, 'bufferFields', bufferFieldObj.array, bufferFieldObj.enableLogging);\n    });\n  }\n  return objectFieldsMod;\n};\n", "import { format, transports } from 'winston';\nimport * as rTracer from 'cls-rtracer';\nimport { getCircularReplacer, globalLoggerCtxKey, traceFormatter, logFieldsHandler, PrecompiledFieldOptions } from './utils';\nimport { RestoreFieldsOptions } from './index';\n\nexport interface RestoreLoggerConsoleTransportOptions extends transports.ConsoleTransportOptions {\n  prettyPrint?:  boolean | any;\n  colorize?: boolean | any;\n  sourcePointer?: boolean;\n  fieldOptions?: RestoreFieldsOptions;\n}\n\n// a custom format that outputs request id\nfunction createTracerFormat(opts: RestoreLoggerConsoleTransportOptions, precompiled?: PrecompiledFieldOptions) {\n  return format.printf((info) => {\n    const rid = rTracer.id();\n    const time = info.timestamp;\n    const level = info.level;\n    let message = info.message;\n    const splatSym: any = Object.getOwnPropertySymbols(info).find((s) => {\n      return String(s) === 'Symbol(splat)';\n    });\n    const splat = info[splatSym];\n\n    delete info.timestamp;\n    const object = splat ? JSON.stringify(logFieldsHandler(splat, precompiled), getCircularReplacer()) : {};\n    if (message && Object.entries(message).length !== 0 && message.constructor === Object) {\n      message = JSON.stringify(logFieldsHandler(message, precompiled), getCircularReplacer());\n    }\n    const ret: string[] = [];\n    ret.push(`${level}: ${time}`);\n    if (opts.sourcePointer) {\n      const sourceSym: any = Object.getOwnPropertySymbols(info).find((s) => {\n        return String(s) === 'Symbol(source)';\n      });\n      const source = info[sourceSym] as any;\n      const sourceFile = source.file;\n      const sourceLine = source.line;\n      ret.push(` ${sourceFile}:${sourceLine}`);\n    }\n    if (rid) {\n      ret.push(` [rid:${rid}]`);\n    }\n\n    if ((globalThis as any)[globalLoggerCtxKey as unknown as any]) {\n      const store = (global as any)[globalLoggerCtxKey].getStore() as any;\n      if (store && store.size > 0) {\n        let i = store.size;\n        ret.push(` [`);\n        for (const [key, value] of store.entries()) {\n          ret.push(`${key}:${value}`);\n          i--;\n          if (i > 0) {\n            ret.push(`, `);\n          }\n        }\n        ret.push(`]`);\n      }\n    }\n\n    ret.push(`: ${message}`);\n\n    if (splat) {\n      ret.push(` ${object}`);\n    }\n\n    return ret.join('');\n  });\n}\n\nexport function createConsoleTransport(opts: RestoreLoggerConsoleTransportOptions = {}, precompiled?: PrecompiledFieldOptions ) {\n  const formats: any[] = [\n    format.simple(),\n    format.timestamp(),\n    createTracerFormat(opts, precompiled),\n  ]\n\n  if (opts.prettyPrint !== false) {\n    const prettyPrintOpts = typeof opts.prettyPrint === 'object' ? opts.prettyPrint : undefined;\n    formats.unshift(format.prettyPrint(prettyPrintOpts))\n  }\n\n  if (opts.colorize !== false) {\n    const colorizeOpts = typeof opts.colorize === 'object' ? opts.colorize : undefined;\n    formats.unshift(format.colorize(colorizeOpts))\n  }\n\n  if (opts.sourcePointer) {\n    formats.unshift(traceFormatter());\n  }\n\n  return new transports.Console({\n    format: format.combine(...formats),\n    ...opts,\n  });\n}\n", "import { transports } from 'winston';\n\nexport interface RestoreLoggerFileTransportOptions extends transports.FileTransportOptions {\n  sourcePointer?: boolean;\n}\n\nexport function createFileTransport(opts: RestoreLoggerFileTransportOptions) {\n  return new transports.File({\n    ...opts,\n  });\n}\n", "!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));", "/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]';\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  // Safari 9 makes `arguments.length` enumerable in strict mode.\n  var result = (isArray(value) || isArguments(value))\n    ? baseTimes(value.length, String)\n    : [];\n\n  var length = result.length,\n      skipIndexes = !!length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Used by `_.defaults` to customize its `_.assignIn` use.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\nfunction assignInDefaults(objValue, srcValue, key, object) {\n  if (objValue === undefined ||\n      (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n    return srcValue;\n  }\n  return objValue;\n}\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n  var objValue = object[key];\n  if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n      (value === undefined && !(key in object))) {\n    object[key] = value;\n  }\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n  if (!isObject(object)) {\n    return nativeKeysIn(object);\n  }\n  var isProto = isPrototype(object),\n      result = [];\n\n  for (var key in object) {\n    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = array;\n    return apply(func, this, otherArgs);\n  };\n}\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n  object || (object = {});\n\n  var index = -1,\n      length = props.length;\n\n  while (++index < length) {\n    var key = props[index];\n\n    var newValue = customizer\n      ? customizer(object[key], source[key], key, object, source)\n      : undefined;\n\n    assignValue(object, key, newValue === undefined ? source[key] : newValue);\n  }\n  return object;\n}\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n  return baseRest(function(object, sources) {\n    var index = -1,\n        length = sources.length,\n        customizer = length > 1 ? sources[length - 1] : undefined,\n        guard = length > 2 ? sources[2] : undefined;\n\n    customizer = (assigner.length > 3 && typeof customizer == 'function')\n      ? (length--, customizer)\n      : undefined;\n\n    if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n      customizer = length < 3 ? undefined : customizer;\n      length = 1;\n    }\n    object = Object(object);\n    while (++index < length) {\n      var source = sources[index];\n      if (source) {\n        assigner(object, source, index, customizer);\n      }\n    }\n    return object;\n  });\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  length = length == null ? MAX_SAFE_INTEGER : length;\n  return !!length &&\n    (typeof value == 'number' || reIsUint.test(value)) &&\n    (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n *  else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n  if (!isObject(object)) {\n    return false;\n  }\n  var type = typeof index;\n  if (type == 'number'\n        ? (isArrayLike(object) && isIndex(index, object.length))\n        : (type == 'string' && index in object)\n      ) {\n    return eq(object[index], value);\n  }\n  return false;\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n *   return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n  copyObject(source, keysIn(source), object, customizer);\n});\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = baseRest(function(args) {\n  args.push(undefined, assignInDefaults);\n  return apply(assignInWith, undefined, args);\n});\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = defaults;\n", "/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    symbolTag = '[object Symbol]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n  var length = array ? array.length : 0;\n  return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\n/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n  var index = -1,\n      length = array ? array.length : 0;\n\n  while (++index < length) {\n    if (comparator(value, array[index])) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array ? array.length : 0,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\n/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n  var length = array.length,\n      index = fromIndex + (fromRight ? 1 : -1);\n\n  while ((fromRight ? index-- : ++index < length)) {\n    if (predicate(array[index], index, array)) {\n      return index;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n  if (value !== value) {\n    return baseFindIndex(array, baseIsNaN, fromIndex);\n  }\n  var index = fromIndex - 1,\n      length = array.length;\n\n  while (++index < length) {\n    if (array[index] === value) {\n      return index;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n  return value !== value;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\n/**\n * Checks if a cache value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n  return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n  // Many host objects are `Object` objects that can coerce to strings\n  // despite having improperly defined `toString` methods.\n  var result = false;\n  if (value != null && typeof value.toString != 'function') {\n    try {\n      result = !!(value + '');\n    } catch (e) {}\n  }\n  return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n    funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n    getPrototype = overArg(Object.getPrototypeOf, Object),\n    propertyIsEnumerable = objectProto.propertyIsEnumerable,\n    splice = arrayProto.splice,\n    spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n    nativeMax = Math.max;\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map'),\n    nativeCreate = getNative(Object, 'create');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  getMapData(this, key).set(key, value);\n  return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values ? values.length : 0;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  // Safari 9 makes `arguments.length` enumerable in strict mode.\n  var result = (isArray(value) || isArguments(value))\n    ? baseTimes(value.length, String)\n    : [];\n\n  var length = result.length,\n      skipIndexes = !!length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n  var index = -1,\n      includes = arrayIncludes,\n      isCommon = true,\n      length = array.length,\n      result = [],\n      valuesLength = values.length;\n\n  if (!length) {\n    return result;\n  }\n  if (iteratee) {\n    values = arrayMap(values, baseUnary(iteratee));\n  }\n  if (comparator) {\n    includes = arrayIncludesWith;\n    isCommon = false;\n  }\n  else if (values.length >= LARGE_ARRAY_SIZE) {\n    includes = cacheHas;\n    isCommon = false;\n    values = new SetCache(values);\n  }\n  outer:\n  while (++index < length) {\n    var value = array[index],\n        computed = iteratee ? iteratee(value) : value;\n\n    value = (comparator || value !== 0) ? value : 0;\n    if (isCommon && computed === computed) {\n      var valuesIndex = valuesLength;\n      while (valuesIndex--) {\n        if (values[valuesIndex] === computed) {\n          continue outer;\n        }\n      }\n      result.push(value);\n    }\n    else if (!includes(values, computed, comparator)) {\n      result.push(value);\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n  var index = -1,\n      length = array.length;\n\n  predicate || (predicate = isFlattenable);\n  result || (result = []);\n\n  while (++index < length) {\n    var value = array[index];\n    if (depth > 0 && predicate(value)) {\n      if (depth > 1) {\n        // Recursively flatten arrays (susceptible to call stack limits).\n        baseFlatten(value, depth - 1, predicate, isStrict, result);\n      } else {\n        arrayPush(result, value);\n      }\n    } else if (!isStrict) {\n      result[result.length] = value;\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n  var result = keysFunc(object);\n  return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n  if (!isObject(object)) {\n    return nativeKeysIn(object);\n  }\n  var isProto = isPrototype(object),\n      result = [];\n\n  for (var key in object) {\n    if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} props The property identifiers to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, props) {\n  object = Object(object);\n  return basePickBy(object, props, function(value, key) {\n    return key in object;\n  });\n}\n\n/**\n * The base implementation of  `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} props The property identifiers to pick from.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, props, predicate) {\n  var index = -1,\n      length = props.length,\n      result = {};\n\n  while (++index < length) {\n    var key = props[index],\n        value = object[key];\n\n    if (predicate(value, key)) {\n      result[key] = value;\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = array;\n    return apply(func, this, otherArgs);\n  };\n}\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n  return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Creates an array of the own enumerable symbol properties of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = nativeGetSymbols ? overArg(nativeGetSymbols, Object) : stubArray;\n\n/**\n * Creates an array of the own and inherited enumerable symbol properties\n * of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n  var result = [];\n  while (object) {\n    arrayPush(result, getSymbols(object));\n    object = getPrototype(object);\n  }\n  return result;\n};\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n  return isArray(value) || isArguments(value) ||\n    !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  length = length == null ? MAX_SAFE_INTEGER : length;\n  return !!length &&\n    (typeof value == 'number' || reIsUint.test(value)) &&\n    (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\n/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n  var result = [];\n  if (object != null) {\n    for (var key in Object(object)) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\n/**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable string keyed properties of `object` that are\n * not omitted.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [props] The property identifiers to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\nvar omit = baseRest(function(object, props) {\n  if (object == null) {\n    return {};\n  }\n  props = arrayMap(baseFlatten(props, 1), toKey);\n  return basePick(object, baseDifference(getAllKeysIn(object), props));\n});\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n  return [];\n}\n\nmodule.exports = omit;\n", null, null, null, "/******************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\n\nvar extendStatics = function(d, b) {\n  extendStatics = Object.setPrototypeOf ||\n      ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n      function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n  return extendStatics(d, b);\n};\n\nexport function __extends(d, b) {\n  if (typeof b !== \"function\" && b !== null)\n      throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n  extendStatics(d, b);\n  function __() { this.constructor = d; }\n  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n}\n\nexport var __assign = function() {\n  __assign = Object.assign || function __assign(t) {\n      for (var s, i = 1, n = arguments.length; i < n; i++) {\n          s = arguments[i];\n          for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n      }\n      return t;\n  }\n  return __assign.apply(this, arguments);\n}\n\nexport function __rest(s, e) {\n  var t = {};\n  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n      t[p] = s[p];\n  if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n      for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n          if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n              t[p[i]] = s[p[i]];\n      }\n  return t;\n}\n\nexport function __decorate(decorators, target, key, desc) {\n  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n  if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n  else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n  return c > 3 && r && Object.defineProperty(target, key, r), r;\n}\n\nexport function __param(paramIndex, decorator) {\n  return function (target, key) { decorator(target, key, paramIndex); }\n}\n\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\n  function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\n  var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\n  var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\n  var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\n  var _, done = false;\n  for (var i = decorators.length - 1; i >= 0; i--) {\n      var context = {};\n      for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\n      for (var p in contextIn.access) context.access[p] = contextIn.access[p];\n      context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\n      var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\n      if (kind === \"accessor\") {\n          if (result === void 0) continue;\n          if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\n          if (_ = accept(result.get)) descriptor.get = _;\n          if (_ = accept(result.set)) descriptor.set = _;\n          if (_ = accept(result.init)) initializers.unshift(_);\n      }\n      else if (_ = accept(result)) {\n          if (kind === \"field\") initializers.unshift(_);\n          else descriptor[key] = _;\n      }\n  }\n  if (target) Object.defineProperty(target, contextIn.name, descriptor);\n  done = true;\n};\n\nexport function __runInitializers(thisArg, initializers, value) {\n  var useValue = arguments.length > 2;\n  for (var i = 0; i < initializers.length; i++) {\n      value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\n  }\n  return useValue ? value : void 0;\n};\n\nexport function __propKey(x) {\n  return typeof x === \"symbol\" ? x : \"\".concat(x);\n};\n\nexport function __setFunctionName(f, name, prefix) {\n  if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\n  return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\n};\n\nexport function __metadata(metadataKey, metadataValue) {\n  if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n}\n\nexport function __awaiter(thisArg, _arguments, P, generator) {\n  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n  return new (P || (P = Promise))(function (resolve, reject) {\n      function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n      function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n      function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n      step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n}\n\nexport function __generator(thisArg, body) {\n  var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\n  return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n  function verb(n) { return function (v) { return step([n, v]); }; }\n  function step(op) {\n      if (f) throw new TypeError(\"Generator is already executing.\");\n      while (g && (g = 0, op[0] && (_ = 0)), _) try {\n          if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n          if (y = 0, t) op = [op[0] & 2, t.value];\n          switch (op[0]) {\n              case 0: case 1: t = op; break;\n              case 4: _.label++; return { value: op[1], done: false };\n              case 5: _.label++; y = op[1]; op = [0]; continue;\n              case 7: op = _.ops.pop(); _.trys.pop(); continue;\n              default:\n                  if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                  if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                  if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                  if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                  if (t[2]) _.ops.pop();\n                  _.trys.pop(); continue;\n          }\n          op = body.call(thisArg, _);\n      } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n      if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n  }\n}\n\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  var desc = Object.getOwnPropertyDescriptor(m, k);\n  if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n  }\n  Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n  if (k2 === undefined) k2 = k;\n  o[k2] = m[k];\n});\n\nexport function __exportStar(m, o) {\n  for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n}\n\nexport function __values(o) {\n  var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n  if (m) return m.call(o);\n  if (o && typeof o.length === \"number\") return {\n      next: function () {\n          if (o && i >= o.length) o = void 0;\n          return { value: o && o[i++], done: !o };\n      }\n  };\n  throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n}\n\nexport function __read(o, n) {\n  var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n  if (!m) return o;\n  var i = m.call(o), r, ar = [], e;\n  try {\n      while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\n  }\n  catch (error) { e = { error: error }; }\n  finally {\n      try {\n          if (r && !r.done && (m = i[\"return\"])) m.call(i);\n      }\n      finally { if (e) throw e.error; }\n  }\n  return ar;\n}\n\n/** @deprecated */\nexport function __spread() {\n  for (var ar = [], i = 0; i < arguments.length; i++)\n      ar = ar.concat(__read(arguments[i]));\n  return ar;\n}\n\n/** @deprecated */\nexport function __spreadArrays() {\n  for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n  for (var r = Array(s), k = 0, i = 0; i < il; i++)\n      for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n          r[k] = a[j];\n  return r;\n}\n\nexport function __spreadArray(to, from, pack) {\n  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n      if (ar || !(i in from)) {\n          if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n          ar[i] = from[i];\n      }\n  }\n  return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nexport function __await(v) {\n  return this instanceof __await ? (this.v = v, this) : new __await(v);\n}\n\nexport function __asyncGenerator(thisArg, _arguments, generator) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var g = generator.apply(thisArg, _arguments || []), i, q = [];\n  return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n  function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n  function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n  function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n  function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n  function fulfill(value) { resume(\"next\", value); }\n  function reject(value) { resume(\"throw\", value); }\n  function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n}\n\nexport function __asyncDelegator(o) {\n  var i, p;\n  return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\n  function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\n}\n\nexport function __asyncValues(o) {\n  if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n  var m = o[Symbol.asyncIterator], i;\n  return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n  function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n  function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n}\n\nexport function __makeTemplateObject(cooked, raw) {\n  if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\n  return cooked;\n};\n\nvar __setModuleDefault = Object.create ? (function(o, v) {\n  Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n  o[\"default\"] = v;\n};\n\nvar ownKeys = function(o) {\n  ownKeys = Object.getOwnPropertyNames || function (o) {\n    var ar = [];\n    for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n    return ar;\n  };\n  return ownKeys(o);\n};\n\nexport function __importStar(mod) {\n  if (mod && mod.__esModule) return mod;\n  var result = {};\n  if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n  __setModuleDefault(result, mod);\n  return result;\n}\n\nexport function __importDefault(mod) {\n  return (mod && mod.__esModule) ? mod : { default: mod };\n}\n\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\n  return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\n}\n\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\n  if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\n  if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\n  if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\n  return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\n}\n\nexport function __classPrivateFieldIn(state, receiver) {\n  if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\n  return typeof state === \"function\" ? receiver === state : state.has(receiver);\n}\n\nexport function __addDisposableResource(env, value, async) {\n  if (value !== null && value !== void 0) {\n    if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\n    var dispose, inner;\n    if (async) {\n      if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\n      dispose = value[Symbol.asyncDispose];\n    }\n    if (dispose === void 0) {\n      if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\n      dispose = value[Symbol.dispose];\n      if (async) inner = dispose;\n    }\n    if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\n    if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\n    env.stack.push({ value: value, dispose: dispose, async: async });\n  }\n  else if (async) {\n    env.stack.push({ async: true });\n  }\n  return value;\n}\n\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\n  var e = new Error(message);\n  return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\n};\n\nexport function __disposeResources(env) {\n  function fail(e) {\n    env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\n    env.hasError = true;\n  }\n  var r, s = 0;\n  function next() {\n    while (r = env.stack.pop()) {\n      try {\n        if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\n        if (r.dispose) {\n          var result = r.dispose.call(r.value);\n          if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\n        }\n        else s |= 1;\n      }\n      catch (e) {\n        fail(e);\n      }\n    }\n    if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\n    if (env.hasError) throw env.error;\n  }\n  return next();\n}\n\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\n  if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\n      return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\n          return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\n      });\n  }\n  return path;\n}\n\nexport default {\n  __extends,\n  __assign,\n  __rest,\n  __decorate,\n  __param,\n  __esDecorate,\n  __runInitializers,\n  __propKey,\n  __setFunctionName,\n  __metadata,\n  __awaiter,\n  __generator,\n  __createBinding,\n  __exportStar,\n  __values,\n  __read,\n  __spread,\n  __spreadArrays,\n  __spreadArray,\n  __await,\n  __asyncGenerator,\n  __asyncDelegator,\n  __asyncValues,\n  __makeTemplateObject,\n  __importStar,\n  __importDefault,\n  __classPrivateFieldGet,\n  __classPrivateFieldSet,\n  __classPrivateFieldIn,\n  __addDisposableResource,\n  __disposeResources,\n  __rewriteRelativeImportExtension,\n};\n", "\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n", "/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n", "'use strict';\nmodule.exports = (flag, argv) => {\n\targv = argv || process.argv;\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst pos = argv.indexOf(prefix + flag);\n\tconst terminatorPos = argv.indexOf('--');\n\treturn pos !== -1 && (terminatorPos === -1 ? true : pos < terminatorPos);\n};\n", "'use strict';\nconst os = require('os');\nconst hasFlag = require('has-flag');\n\nconst env = process.env;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false')) {\n\tforceColor = false;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = true;\n}\nif ('FORCE_COLOR' in env) {\n\tforceColor = env.FORCE_COLOR.length === 0 || parseInt(env.FORCE_COLOR, 10) !== 0;\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(stream) {\n\tif (forceColor === false) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (stream && !stream.isTTY && forceColor !== true) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor ? 1 : 0;\n\n\tif (process.platform === 'win32') {\n\t\t// Node.js 7.5.0 is the first version of Node.js to include a patch to\n\t\t// libuv that enables 256 color output on Windows. Anything earlier and it\n\t\t// won't work. However, here we target Node.js 8 at minimum as it is an LTS\n\t\t// release, and Node.js 7 is not. Windows 10 build 10586 is the first Windows\n\t\t// release that supports 256 colors. Windows 10 build 14931 is the first release\n\t\t// that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(process.versions.node.split('.')[0]) >= 8 &&\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: getSupportLevel(process.stdout),\n\tstderr: getSupportLevel(process.stderr)\n};\n", "/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n *   $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = `  ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n", "/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n", null, null, "'use strict'\n\nconst hasBuffer = typeof Buffer !== 'undefined'\nconst suspectProtoRx = /\"(?:_|\\\\u005[Ff])(?:_|\\\\u005[Ff])(?:p|\\\\u0070)(?:r|\\\\u0072)(?:o|\\\\u006[Ff])(?:t|\\\\u0074)(?:o|\\\\u006[Ff])(?:_|\\\\u005[Ff])(?:_|\\\\u005[Ff])\"\\s*:/\nconst suspectConstructorRx = /\"(?:c|\\\\u0063)(?:o|\\\\u006[Ff])(?:n|\\\\u006[Ee])(?:s|\\\\u0073)(?:t|\\\\u0074)(?:r|\\\\u0072)(?:u|\\\\u0075)(?:c|\\\\u0063)(?:t|\\\\u0074)(?:o|\\\\u006[Ff])(?:r|\\\\u0072)\"\\s*:/\n\nfunction _parse (text, reviver, options) {\n  // Normalize arguments\n  if (options == null) {\n    if (reviver !== null && typeof reviver === 'object') {\n      options = reviver\n      reviver = undefined\n    }\n  }\n\n  if (hasBuffer && Buffer.isBuffer(text)) {\n    text = text.toString()\n  }\n\n  // BOM checker\n  if (text && text.charCodeAt(0) === 0xFEFF) {\n    text = text.slice(1)\n  }\n\n  // Parse normally, allowing exceptions\n  const obj = JSON.parse(text, reviver)\n\n  // Ignore null and non-objects\n  if (obj === null || typeof obj !== 'object') {\n    return obj\n  }\n\n  const protoAction = (options && options.protoAction) || 'error'\n  const constructorAction = (options && options.constructorAction) || 'error'\n\n  // options: 'error' (default) / 'remove' / 'ignore'\n  if (protoAction === 'ignore' && constructorAction === 'ignore') {\n    return obj\n  }\n\n  if (protoAction !== 'ignore' && constructorAction !== 'ignore') {\n    if (suspectProtoRx.test(text) === false && suspectConstructorRx.test(text) === false) {\n      return obj\n    }\n  } else if (protoAction !== 'ignore' && constructorAction === 'ignore') {\n    if (suspectProtoRx.test(text) === false) {\n      return obj\n    }\n  } else {\n    if (suspectConstructorRx.test(text) === false) {\n      return obj\n    }\n  }\n\n  // Scan result for proto keys\n  return filter(obj, { protoAction, constructorAction, safe: options && options.safe })\n}\n\nfunction filter (obj, { protoAction = 'error', constructorAction = 'error', safe } = {}) {\n  let next = [obj]\n\n  while (next.length) {\n    const nodes = next\n    next = []\n\n    for (const node of nodes) {\n      if (protoAction !== 'ignore' && Object.prototype.hasOwnProperty.call(node, '__proto__')) { // Avoid calling node.hasOwnProperty directly\n        if (safe === true) {\n          return null\n        } else if (protoAction === 'error') {\n          throw new SyntaxError('Object contains forbidden prototype property')\n        }\n\n        delete node.__proto__ // eslint-disable-line no-proto\n      }\n\n      if (constructorAction !== 'ignore' &&\n          Object.prototype.hasOwnProperty.call(node, 'constructor') &&\n          Object.prototype.hasOwnProperty.call(node.constructor, 'prototype')) { // Avoid calling node.hasOwnProperty directly\n        if (safe === true) {\n          return null\n        } else if (constructorAction === 'error') {\n          throw new SyntaxError('Object contains forbidden prototype property')\n        }\n\n        delete node.constructor\n      }\n\n      for (const key in node) {\n        const value = node[key]\n        if (value && typeof value === 'object') {\n          next.push(value)\n        }\n      }\n    }\n  }\n  return obj\n}\n\nfunction parse (text, reviver, options) {\n  const { stackTraceLimit } = Error\n  Error.stackTraceLimit = 0\n  try {\n    return _parse(text, reviver, options)\n  } finally {\n    Error.stackTraceLimit = stackTraceLimit\n  }\n}\n\nfunction safeParse (text, reviver) {\n  const { stackTraceLimit } = Error\n  Error.stackTraceLimit = 0\n  try {\n    return _parse(text, reviver, { safe: true })\n  } catch (_e) {\n    return null\n  } finally {\n    Error.stackTraceLimit = stackTraceLimit\n  }\n}\n\nmodule.exports = parse\nmodule.exports.default = parse\nmodule.exports.parse = parse\nmodule.exports.safeParse = safeParse\nmodule.exports.scan = filter\n", null, "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** only globals that common to node and browsers are allowed */\n// eslint-disable-next-line node/no-unsupported-features/es-builtins\nexport const _globalThis = typeof globalThis === 'object' ? globalThis : global;\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './globalThis';\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport * from './node';\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '1.9.0';\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { VERSION } from '../version';\n\nconst re = /^(\\d+)\\.(\\d+)\\.(\\d+)(-(.+))?$/;\n\n/**\n * Create a function to test an API version to see if it is compatible with the provided ownVersion.\n *\n * The returned function has the following semantics:\n * - Exact match is always compatible\n * - Major versions must match exactly\n *    - 1.x package cannot use global 2.x package\n *    - 2.x package cannot use global 1.x package\n * - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API\n *    - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects\n *    - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3\n * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor\n * - Patch and build tag differences are not considered at this time\n *\n * @param ownVersion version which should be checked against\n */\nexport function _makeCompatibilityCheck(\n  ownVersion: string\n): (globalVersion: string) => boolean {\n  const acceptedVersions = new Set<string>([ownVersion]);\n  const rejectedVersions = new Set<string>();\n\n  const myVersionMatch = ownVersion.match(re);\n  if (!myVersionMatch) {\n    // we cannot guarantee compatibility so we always return noop\n    return () => false;\n  }\n\n  const ownVersionParsed = {\n    major: +myVersionMatch[1],\n    minor: +myVersionMatch[2],\n    patch: +myVersionMatch[3],\n    prerelease: myVersionMatch[4],\n  };\n\n  // if ownVersion has a prerelease tag, versions must match exactly\n  if (ownVersionParsed.prerelease != null) {\n    return function isExactmatch(globalVersion: string): boolean {\n      return globalVersion === ownVersion;\n    };\n  }\n\n  function _reject(v: string) {\n    rejectedVersions.add(v);\n    return false;\n  }\n\n  function _accept(v: string) {\n    acceptedVersions.add(v);\n    return true;\n  }\n\n  return function isCompatible(globalVersion: string): boolean {\n    if (acceptedVersions.has(globalVersion)) {\n      return true;\n    }\n\n    if (rejectedVersions.has(globalVersion)) {\n      return false;\n    }\n\n    const globalVersionMatch = globalVersion.match(re);\n    if (!globalVersionMatch) {\n      // cannot parse other version\n      // we cannot guarantee compatibility so we always noop\n      return _reject(globalVersion);\n    }\n\n    const globalVersionParsed = {\n      major: +globalVersionMatch[1],\n      minor: +globalVersionMatch[2],\n      patch: +globalVersionMatch[3],\n      prerelease: globalVersionMatch[4],\n    };\n\n    // if globalVersion has a prerelease tag, versions must match exactly\n    if (globalVersionParsed.prerelease != null) {\n      return _reject(globalVersion);\n    }\n\n    // major versions must match\n    if (ownVersionParsed.major !== globalVersionParsed.major) {\n      return _reject(globalVersion);\n    }\n\n    if (ownVersionParsed.major === 0) {\n      if (\n        ownVersionParsed.minor === globalVersionParsed.minor &&\n        ownVersionParsed.patch <= globalVersionParsed.patch\n      ) {\n        return _accept(globalVersion);\n      }\n\n      return _reject(globalVersion);\n    }\n\n    if (ownVersionParsed.minor <= globalVersionParsed.minor) {\n      return _accept(globalVersion);\n    }\n\n    return _reject(globalVersion);\n  };\n}\n\n/**\n * Test an API version to see if it is compatible with this API.\n *\n * - Exact match is always compatible\n * - Major versions must match exactly\n *    - 1.x package cannot use global 2.x package\n *    - 2.x package cannot use global 1.x package\n * - The minor version of the API module requesting access to the global API must be less than or equal to the minor version of this API\n *    - 1.3 package may use 1.4 global because the later global contains all functions 1.3 expects\n *    - 1.4 package may NOT use 1.3 global because it may try to call functions which don't exist on 1.3\n * - If the major version is 0, the minor version is treated as the major and the patch is treated as the minor\n * - Patch and build tag differences are not considered at this time\n *\n * @param version version of the API requesting an instance of the global API\n */\nexport const isCompatible = _makeCompatibilityCheck(VERSION);\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { MeterProvider } from '../metrics/MeterProvider';\nimport { ContextManager } from '../context/types';\nimport { DiagLogger } from '../diag/types';\nimport { _globalThis } from '../platform';\nimport { TextMapPropagator } from '../propagation/TextMapPropagator';\nimport type { TracerProvider } from '../trace/tracer_provider';\nimport { VERSION } from '../version';\nimport { isCompatible } from './semver';\n\nconst major = VERSION.split('.')[0];\nconst GLOBAL_OPENTELEMETRY_API_KEY = Symbol.for(\n  `opentelemetry.js.api.${major}`\n);\n\nconst _global = _globalThis as OTelGlobal;\n\nexport function registerGlobal<Type extends keyof OTelGlobalAPI>(\n  type: Type,\n  instance: OTelGlobalAPI[Type],\n  diag: DiagLogger,\n  allowOverride = false\n): boolean {\n  const api = (_global[GLOBAL_OPENTELEMETRY_API_KEY] = _global[\n    GLOBAL_OPENTELEMETRY_API_KEY\n  ] ?? {\n    version: VERSION,\n  });\n\n  if (!allowOverride && api[type]) {\n    // already registered an API of this type\n    const err = new Error(\n      `@opentelemetry/api: Attempted duplicate registration of API: ${type}`\n    );\n    diag.error(err.stack || err.message);\n    return false;\n  }\n\n  if (api.version !== VERSION) {\n    // All registered APIs must be of the same version exactly\n    const err = new Error(\n      `@opentelemetry/api: Registration of version v${api.version} for ${type} does not match previously registered API v${VERSION}`\n    );\n    diag.error(err.stack || err.message);\n    return false;\n  }\n\n  api[type] = instance;\n  diag.debug(\n    `@opentelemetry/api: Registered a global for ${type} v${VERSION}.`\n  );\n\n  return true;\n}\n\nexport function getGlobal<Type extends keyof OTelGlobalAPI>(\n  type: Type\n): OTelGlobalAPI[Type] | undefined {\n  const globalVersion = _global[GLOBAL_OPENTELEMETRY_API_KEY]?.version;\n  if (!globalVersion || !isCompatible(globalVersion)) {\n    return;\n  }\n  return _global[GLOBAL_OPENTELEMETRY_API_KEY]?.[type];\n}\n\nexport function unregisterGlobal(type: keyof OTelGlobalAPI, diag: DiagLogger) {\n  diag.debug(\n    `@opentelemetry/api: Unregistering a global for ${type} v${VERSION}.`\n  );\n  const api = _global[GLOBAL_OPENTELEMETRY_API_KEY];\n\n  if (api) {\n    delete api[type];\n  }\n}\n\ntype OTelGlobal = {\n  [GLOBAL_OPENTELEMETRY_API_KEY]?: OTelGlobalAPI;\n};\n\ntype OTelGlobalAPI = {\n  version: string;\n\n  diag?: DiagLogger;\n  trace?: TracerProvider;\n  context?: ContextManager;\n  metrics?: MeterProvider;\n  propagation?: TextMapPropagator;\n};\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getGlobal } from '../internal/global-utils';\nimport { ComponentLoggerOptions, DiagLogger, DiagLogFunction } from './types';\n\n/**\n * Component Logger which is meant to be used as part of any component which\n * will add automatically additional namespace in front of the log message.\n * It will then forward all message to global diag logger\n * @example\n * const cLogger = diag.createComponentLogger({ namespace: '@opentelemetry/instrumentation-http' });\n * cLogger.debug('test');\n * // @opentelemetry/instrumentation-http test\n */\nexport class DiagComponentLogger implements DiagLogger {\n  private _namespace: string;\n\n  constructor(props: ComponentLoggerOptions) {\n    this._namespace = props.namespace || 'DiagComponentLogger';\n  }\n\n  public debug(...args: any[]): void {\n    return logProxy('debug', this._namespace, args);\n  }\n\n  public error(...args: any[]): void {\n    return logProxy('error', this._namespace, args);\n  }\n\n  public info(...args: any[]): void {\n    return logProxy('info', this._namespace, args);\n  }\n\n  public warn(...args: any[]): void {\n    return logProxy('warn', this._namespace, args);\n  }\n\n  public verbose(...args: any[]): void {\n    return logProxy('verbose', this._namespace, args);\n  }\n}\n\nfunction logProxy(\n  funcName: keyof DiagLogger,\n  namespace: string,\n  args: any\n): void {\n  const logger = getGlobal('diag');\n  // shortcut if logger not set\n  if (!logger) {\n    return;\n  }\n\n  args.unshift(namespace);\n  return logger[funcName](...(args as Parameters<DiagLogFunction>));\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport type DiagLogFunction = (message: string, ...args: unknown[]) => void;\n\n/**\n * Defines an internal diagnostic logger interface which is used to log internal diagnostic\n * messages, you can set the default diagnostic logger via the {@link DiagAPI} setLogger function.\n * API provided implementations include :-\n * - a No-Op {@link createNoopDiagLogger}\n * - a {@link DiagLogLevel} filtering wrapper {@link createLogLevelDiagLogger}\n * - a general Console {@link DiagConsoleLogger} version.\n */\nexport interface DiagLogger {\n  /** Log an error scenario that was not expected and caused the requested operation to fail. */\n  error: DiagLogFunction;\n\n  /**\n   * Log a warning scenario to inform the developer of an issues that should be investigated.\n   * The requested operation may or may not have succeeded or completed.\n   */\n  warn: DiagLogFunction;\n\n  /**\n   * Log a general informational message, this should not affect functionality.\n   * This is also the default logging level so this should NOT be used for logging\n   * debugging level information.\n   */\n  info: DiagLogFunction;\n\n  /**\n   * Log a general debug message that can be useful for identifying a failure.\n   * Information logged at this level may include diagnostic details that would\n   * help identify a failure scenario.\n   * For example: Logging the order of execution of async operations.\n   */\n  debug: DiagLogFunction;\n\n  /**\n   * Log a detailed (verbose) trace level logging that can be used to identify failures\n   * where debug level logging would be insufficient, this level of tracing can include\n   * input and output parameters and as such may include PII information passing through\n   * the API. As such it is recommended that this level of tracing should not be enabled\n   * in a production environment.\n   */\n  verbose: DiagLogFunction;\n}\n\n/**\n * Defines the available internal logging levels for the diagnostic logger, the numeric values\n * of the levels are defined to match the original values from the initial LogLevel to avoid\n * compatibility/migration issues for any implementation that assume the numeric ordering.\n */\nexport enum DiagLogLevel {\n  /** Diagnostic Logging level setting to disable all logging (except and forced logs) */\n  NONE = 0,\n\n  /** Identifies an error scenario */\n  ERROR = 30,\n\n  /** Identifies a warning scenario */\n  WARN = 50,\n\n  /** General informational log message */\n  INFO = 60,\n\n  /** General debug log message */\n  DEBUG = 70,\n\n  /**\n   * Detailed trace level logging should only be used for development, should only be set\n   * in a development environment.\n   */\n  VERBOSE = 80,\n\n  /** Used to set the logging level to include all logging */\n  ALL = 9999,\n}\n\n/**\n * Defines options for ComponentLogger\n */\nexport interface ComponentLoggerOptions {\n  namespace: string;\n}\n\nexport interface DiagLoggerOptions {\n  /**\n   * The {@link DiagLogLevel} used to filter logs sent to the logger.\n   *\n   * @defaultValue DiagLogLevel.INFO\n   */\n  logLevel?: DiagLogLevel;\n\n  /**\n   * Setting this value to `true` will suppress the warning message normally emitted when registering a logger when another logger is already registered.\n   */\n  suppressOverrideMessage?: boolean;\n}\n\nexport interface DiagLoggerApi {\n  /**\n   * Set the global DiagLogger and DiagLogLevel.\n   * If a global diag logger is already set, this will override it.\n   *\n   * @param logger - The {@link DiagLogger} instance to set as the default logger.\n   * @param options - A {@link DiagLoggerOptions} object. If not provided, default values will be set.\n   * @returns `true` if the logger was successfully registered, else `false`\n   */\n  setLogger(logger: DiagLogger, options?: DiagLoggerOptions): boolean;\n\n  /**\n   *\n   * @param logger - The {@link DiagLogger} instance to set as the default logger.\n   * @param logLevel - The {@link DiagLogLevel} used to filter logs sent to the logger. If not provided it will default to {@link DiagLogLevel.INFO}.\n   * @returns `true` if the logger was successfully registered, else `false`\n   */\n  setLogger(logger: DiagLogger, logLevel?: DiagLogLevel): boolean;\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DiagLogFunction, DiagLogger, DiagLogLevel } from '../types';\n\nexport function createLogLevelDiagLogger(\n  maxLevel: DiagLogLevel,\n  logger: DiagLogger\n): DiagLogger {\n  if (maxLevel < DiagLogLevel.NONE) {\n    maxLevel = DiagLogLevel.NONE;\n  } else if (maxLevel > DiagLogLevel.ALL) {\n    maxLevel = DiagLogLevel.ALL;\n  }\n\n  // In case the logger is null or undefined\n  logger = logger || {};\n\n  function _filterFunc(\n    funcName: keyof DiagLogger,\n    theLevel: DiagLogLevel\n  ): DiagLogFunction {\n    const theFunc = logger[funcName];\n\n    if (typeof theFunc === 'function' && maxLevel >= theLevel) {\n      return theFunc.bind(logger);\n    }\n    return function () {};\n  }\n\n  return {\n    error: _filterFunc('error', DiagLogLevel.ERROR),\n    warn: _filterFunc('warn', DiagLogLevel.WARN),\n    info: _filterFunc('info', DiagLogLevel.INFO),\n    debug: _filterFunc('debug', DiagLogLevel.DEBUG),\n    verbose: _filterFunc('verbose', DiagLogLevel.VERBOSE),\n  };\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DiagComponentLogger } from '../diag/ComponentLogger';\nimport { createLogLevelDiagLogger } from '../diag/internal/logLevelLogger';\nimport {\n  ComponentLoggerOptions,\n  DiagLogFunction,\n  DiagLogger,\n  DiagLoggerApi,\n  DiagLogLevel,\n} from '../diag/types';\nimport {\n  getGlobal,\n  registerGlobal,\n  unregisterGlobal,\n} from '../internal/global-utils';\n\nconst API_NAME = 'diag';\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry internal\n * diagnostic API\n */\nexport class DiagAPI implements DiagLogger, DiagLoggerApi {\n  private static _instance?: DiagAPI;\n\n  /** Get the singleton instance of the DiagAPI API */\n  public static instance(): DiagAPI {\n    if (!this._instance) {\n      this._instance = new DiagAPI();\n    }\n\n    return this._instance;\n  }\n\n  /**\n   * Private internal constructor\n   * @private\n   */\n  private constructor() {\n    function _logProxy(funcName: keyof DiagLogger): DiagLogFunction {\n      return function (...args) {\n        const logger = getGlobal('diag');\n        // shortcut if logger not set\n        if (!logger) return;\n        return logger[funcName](...args);\n      };\n    }\n\n    // Using self local variable for minification purposes as 'this' cannot be minified\n    const self = this;\n\n    // DiagAPI specific functions\n\n    const setLogger: DiagLoggerApi['setLogger'] = (\n      logger,\n      optionsOrLogLevel = { logLevel: DiagLogLevel.INFO }\n    ) => {\n      if (logger === self) {\n        // There isn't much we can do here.\n        // Logging to the console might break the user application.\n        // Try to log to self. If a logger was previously registered it will receive the log.\n        const err = new Error(\n          'Cannot use diag as the logger for itself. Please use a DiagLogger implementation like ConsoleDiagLogger or a custom implementation'\n        );\n        self.error(err.stack ?? err.message);\n        return false;\n      }\n\n      if (typeof optionsOrLogLevel === 'number') {\n        optionsOrLogLevel = {\n          logLevel: optionsOrLogLevel,\n        };\n      }\n\n      const oldLogger = getGlobal('diag');\n      const newLogger = createLogLevelDiagLogger(\n        optionsOrLogLevel.logLevel ?? DiagLogLevel.INFO,\n        logger\n      );\n      // There already is an logger registered. We'll let it know before overwriting it.\n      if (oldLogger && !optionsOrLogLevel.suppressOverrideMessage) {\n        const stack = new Error().stack ?? '<failed to generate stacktrace>';\n        oldLogger.warn(`Current logger will be overwritten from ${stack}`);\n        newLogger.warn(\n          `Current logger will overwrite one already registered from ${stack}`\n        );\n      }\n\n      return registerGlobal('diag', newLogger, self, true);\n    };\n\n    self.setLogger = setLogger;\n\n    self.disable = () => {\n      unregisterGlobal(API_NAME, self);\n    };\n\n    self.createComponentLogger = (options: ComponentLoggerOptions) => {\n      return new DiagComponentLogger(options);\n    };\n\n    self.verbose = _logProxy('verbose');\n    self.debug = _logProxy('debug');\n    self.info = _logProxy('info');\n    self.warn = _logProxy('warn');\n    self.error = _logProxy('error');\n  }\n\n  public setLogger!: DiagLoggerApi['setLogger'];\n  /**\n   *\n   */\n  public createComponentLogger!: (\n    options: ComponentLoggerOptions\n  ) => DiagLogger;\n\n  // DiagLogger implementation\n  public verbose!: DiagLogFunction;\n  public debug!: DiagLogFunction;\n  public info!: DiagLogFunction;\n  public warn!: DiagLogFunction;\n  public error!: DiagLogFunction;\n\n  /**\n   * Unregister the global logger and return to Noop\n   */\n  public disable!: () => void;\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { Baggage, BaggageEntry } from '../types';\n\nexport class BaggageImpl implements Baggage {\n  private _entries: Map<string, BaggageEntry>;\n\n  constructor(entries?: Map<string, BaggageEntry>) {\n    this._entries = entries ? new Map(entries) : new Map();\n  }\n\n  getEntry(key: string): BaggageEntry | undefined {\n    const entry = this._entries.get(key);\n    if (!entry) {\n      return undefined;\n    }\n\n    return Object.assign({}, entry);\n  }\n\n  getAllEntries(): [string, BaggageEntry][] {\n    return Array.from(this._entries.entries()).map(([k, v]) => [k, v]);\n  }\n\n  setEntry(key: string, entry: BaggageEntry): BaggageImpl {\n    const newBaggage = new BaggageImpl(this._entries);\n    newBaggage._entries.set(key, entry);\n    return newBaggage;\n  }\n\n  removeEntry(key: string): BaggageImpl {\n    const newBaggage = new BaggageImpl(this._entries);\n    newBaggage._entries.delete(key);\n    return newBaggage;\n  }\n\n  removeEntries(...keys: string[]): BaggageImpl {\n    const newBaggage = new BaggageImpl(this._entries);\n    for (const key of keys) {\n      newBaggage._entries.delete(key);\n    }\n    return newBaggage;\n  }\n\n  clear(): BaggageImpl {\n    return new BaggageImpl();\n  }\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Symbol used to make BaggageEntryMetadata an opaque type\n */\nexport const baggageEntryMetadataSymbol = Symbol('BaggageEntryMetadata');\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DiagAPI } from '../api/diag';\nimport { BaggageImpl } from './internal/baggage-impl';\nimport { baggageEntryMetadataSymbol } from './internal/symbol';\nimport { Baggage, BaggageEntry, BaggageEntryMetadata } from './types';\n\nconst diag = DiagAPI.instance();\n\n/**\n * Create a new Baggage with optional entries\n *\n * @param entries An array of baggage entries the new baggage should contain\n */\nexport function createBaggage(\n  entries: Record<string, BaggageEntry> = {}\n): Baggage {\n  return new BaggageImpl(new Map(Object.entries(entries)));\n}\n\n/**\n * Create a serializable BaggageEntryMetadata object from a string.\n *\n * @param str string metadata. Format is currently not defined by the spec and has no special meaning.\n *\n */\nexport function baggageEntryMetadataFromString(\n  str: string\n): BaggageEntryMetadata {\n  if (typeof str !== 'string') {\n    diag.error(\n      `Cannot create baggage metadata from unknown type: ${typeof str}`\n    );\n    str = '';\n  }\n\n  return {\n    __TYPE__: baggageEntryMetadataSymbol,\n    toString() {\n      return str;\n    },\n  };\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Context } from './types';\n\n/** Get a key to uniquely identify a context value */\nexport function createContextKey(description: string) {\n  // The specification states that for the same input, multiple calls should\n  // return different keys. Due to the nature of the JS dependency management\n  // system, this creates problems where multiple versions of some package\n  // could hold different keys for the same property.\n  //\n  // Therefore, we use Symbol.for which returns the same key for the same input.\n  return Symbol.for(description);\n}\n\nclass BaseContext implements Context {\n  private _currentContext!: Map<symbol, unknown>;\n\n  /**\n   * Construct a new context which inherits values from an optional parent context.\n   *\n   * @param parentContext a context from which to inherit values\n   */\n  constructor(parentContext?: Map<symbol, unknown>) {\n    // for minification\n    const self = this;\n\n    self._currentContext = parentContext ? new Map(parentContext) : new Map();\n\n    self.getValue = (key: symbol) => self._currentContext.get(key);\n\n    self.setValue = (key: symbol, value: unknown): Context => {\n      const context = new BaseContext(self._currentContext);\n      context._currentContext.set(key, value);\n      return context;\n    };\n\n    self.deleteValue = (key: symbol): Context => {\n      const context = new BaseContext(self._currentContext);\n      context._currentContext.delete(key);\n      return context;\n    };\n  }\n\n  /**\n   * Get a value from the context.\n   *\n   * @param key key which identifies a context value\n   */\n  public getValue!: (key: symbol) => unknown;\n\n  /**\n   * Create a new context which inherits from this context and has\n   * the given key set to the given value.\n   *\n   * @param key context key for which to set the value\n   * @param value value to set for the given key\n   */\n  public setValue!: (key: symbol, value: unknown) => Context;\n\n  /**\n   * Return a new context which inherits from this context but does\n   * not contain a value for the given key.\n   *\n   * @param key context key for which to clear a value\n   */\n  public deleteValue!: (key: symbol) => Context;\n}\n\n/** The root context is used as the default parent context when there is no active context */\nexport const ROOT_CONTEXT: Context = new BaseContext();\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DiagLogger, DiagLogFunction } from './types';\n\ntype ConsoleMapKeys = 'error' | 'warn' | 'info' | 'debug' | 'trace';\nconst consoleMap: { n: keyof DiagLogger; c: ConsoleMapKeys }[] = [\n  { n: 'error', c: 'error' },\n  { n: 'warn', c: 'warn' },\n  { n: 'info', c: 'info' },\n  { n: 'debug', c: 'debug' },\n  { n: 'verbose', c: 'trace' },\n];\n\n/**\n * A simple Immutable Console based diagnostic logger which will output any messages to the Console.\n * If you want to limit the amount of logging to a specific level or lower use the\n * {@link createLogLevelDiagLogger}\n */\nexport class DiagConsoleLogger implements DiagLogger {\n  constructor() {\n    function _consoleFunc(funcName: ConsoleMapKeys): DiagLogFunction {\n      return function (...args) {\n        if (console) {\n          // Some environments only expose the console when the F12 developer console is open\n          // eslint-disable-next-line no-console\n          let theFunc = console[funcName];\n          if (typeof theFunc !== 'function') {\n            // Not all environments support all functions\n            // eslint-disable-next-line no-console\n            theFunc = console.log;\n          }\n\n          // One last final check\n          if (typeof theFunc === 'function') {\n            return theFunc.apply(console, args);\n          }\n        }\n      };\n    }\n\n    for (let i = 0; i < consoleMap.length; i++) {\n      this[consoleMap[i].n] = _consoleFunc(consoleMap[i].c);\n    }\n  }\n\n  /** Log an error scenario that was not expected and caused the requested operation to fail. */\n  public error!: DiagLogFunction;\n\n  /**\n   * Log a warning scenario to inform the developer of an issues that should be investigated.\n   * The requested operation may or may not have succeeded or completed.\n   */\n  public warn!: DiagLogFunction;\n\n  /**\n   * Log a general informational message, this should not affect functionality.\n   * This is also the default logging level so this should NOT be used for logging\n   * debugging level information.\n   */\n  public info!: DiagLogFunction;\n\n  /**\n   * Log a general debug message that can be useful for identifying a failure.\n   * Information logged at this level may include diagnostic details that would\n   * help identify a failure scenario. Useful scenarios would be to log the execution\n   * order of async operations\n   */\n  public debug!: DiagLogFunction;\n\n  /**\n   * Log a detailed (verbose) trace level logging that can be used to identify failures\n   * where debug level logging would be insufficient, this level of tracing can include\n   * input and output parameters and as such may include PII information passing through\n   * the API. As such it is recommended that this level of tracing should not be enabled\n   * in a production environment.\n   */\n  public verbose!: DiagLogFunction;\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Meter } from './Meter';\nimport {\n  BatchObservableCallback,\n  Counter,\n  Gauge,\n  Histogram,\n  MetricAttributes,\n  MetricOptions,\n  Observable,\n  ObservableCallback,\n  ObservableCounter,\n  ObservableGauge,\n  ObservableUpDownCounter,\n  UpDownCounter,\n} from './Metric';\n\n/**\n * NoopMeter is a noop implementation of the {@link Meter} interface. It reuses\n * constant NoopMetrics for all of its methods.\n */\nexport class NoopMeter implements Meter {\n  constructor() {}\n\n  /**\n   * @see {@link Meter.createGauge}\n   */\n  createGauge(_name: string, _options?: MetricOptions): Gauge {\n    return NOOP_GAUGE_METRIC;\n  }\n\n  /**\n   * @see {@link Meter.createHistogram}\n   */\n  createHistogram(_name: string, _options?: MetricOptions): Histogram {\n    return NOOP_HISTOGRAM_METRIC;\n  }\n\n  /**\n   * @see {@link Meter.createCounter}\n   */\n  createCounter(_name: string, _options?: MetricOptions): Counter {\n    return NOOP_COUNTER_METRIC;\n  }\n\n  /**\n   * @see {@link Meter.createUpDownCounter}\n   */\n  createUpDownCounter(_name: string, _options?: MetricOptions): UpDownCounter {\n    return NOOP_UP_DOWN_COUNTER_METRIC;\n  }\n\n  /**\n   * @see {@link Meter.createObservableGauge}\n   */\n  createObservableGauge(\n    _name: string,\n    _options?: MetricOptions\n  ): ObservableGauge {\n    return NOOP_OBSERVABLE_GAUGE_METRIC;\n  }\n\n  /**\n   * @see {@link Meter.createObservableCounter}\n   */\n  createObservableCounter(\n    _name: string,\n    _options?: MetricOptions\n  ): ObservableCounter {\n    return NOOP_OBSERVABLE_COUNTER_METRIC;\n  }\n\n  /**\n   * @see {@link Meter.createObservableUpDownCounter}\n   */\n  createObservableUpDownCounter(\n    _name: string,\n    _options?: MetricOptions\n  ): ObservableUpDownCounter {\n    return NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC;\n  }\n\n  /**\n   * @see {@link Meter.addBatchObservableCallback}\n   */\n  addBatchObservableCallback(\n    _callback: BatchObservableCallback,\n    _observables: Observable[]\n  ): void {}\n\n  /**\n   * @see {@link Meter.removeBatchObservableCallback}\n   */\n  removeBatchObservableCallback(_callback: BatchObservableCallback): void {}\n}\n\nexport class NoopMetric {}\n\nexport class NoopCounterMetric extends NoopMetric implements Counter {\n  add(_value: number, _attributes: MetricAttributes): void {}\n}\n\nexport class NoopUpDownCounterMetric\n  extends NoopMetric\n  implements UpDownCounter\n{\n  add(_value: number, _attributes: MetricAttributes): void {}\n}\n\nexport class NoopGaugeMetric extends NoopMetric implements Gauge {\n  record(_value: number, _attributes: MetricAttributes): void {}\n}\n\nexport class NoopHistogramMetric extends NoopMetric implements Histogram {\n  record(_value: number, _attributes: MetricAttributes): void {}\n}\n\nexport class NoopObservableMetric {\n  addCallback(_callback: ObservableCallback) {}\n\n  removeCallback(_callback: ObservableCallback) {}\n}\n\nexport class NoopObservableCounterMetric\n  extends NoopObservableMetric\n  implements ObservableCounter {}\n\nexport class NoopObservableGaugeMetric\n  extends NoopObservableMetric\n  implements ObservableGauge {}\n\nexport class NoopObservableUpDownCounterMetric\n  extends NoopObservableMetric\n  implements ObservableUpDownCounter {}\n\nexport const NOOP_METER = new NoopMeter();\n\n// Synchronous instruments\nexport const NOOP_COUNTER_METRIC = new NoopCounterMetric();\nexport const NOOP_GAUGE_METRIC = new NoopGaugeMetric();\nexport const NOOP_HISTOGRAM_METRIC = new NoopHistogramMetric();\nexport const NOOP_UP_DOWN_COUNTER_METRIC = new NoopUpDownCounterMetric();\n\n// Asynchronous instruments\nexport const NOOP_OBSERVABLE_COUNTER_METRIC = new NoopObservableCounterMetric();\nexport const NOOP_OBSERVABLE_GAUGE_METRIC = new NoopObservableGaugeMetric();\nexport const NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC =\n  new NoopObservableUpDownCounterMetric();\n\n/**\n * Create a no-op Meter\n */\nexport function createNoopMeter(): Meter {\n  return NOOP_METER;\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Attributes, AttributeValue } from '../common/Attributes';\nimport { Context } from '../context/types';\nimport { BatchObservableResult, ObservableResult } from './ObservableResult';\n\n/**\n * Advisory options influencing aggregation configuration parameters.\n * @experimental\n */\nexport interface MetricAdvice {\n  /**\n   * Hint the explicit bucket boundaries for SDK if the metric is been\n   * aggregated with a HistogramAggregator.\n   */\n  explicitBucketBoundaries?: number[];\n}\n\n/**\n * Options needed for metric creation\n */\nexport interface MetricOptions {\n  /**\n   * The description of the Metric.\n   * @default ''\n   */\n  description?: string;\n\n  /**\n   * The unit of the Metric values.\n   * @default ''\n   */\n  unit?: string;\n\n  /**\n   * Indicates the type of the recorded value.\n   * @default {@link ValueType.DOUBLE}\n   */\n  valueType?: ValueType;\n\n  /**\n   * The advice influencing aggregation configuration parameters.\n   * @experimental\n   */\n  advice?: MetricAdvice;\n}\n\n/** The Type of value. It describes how the data is reported. */\nexport enum ValueType {\n  INT,\n  DOUBLE,\n}\n\n/**\n * Counter is the most common synchronous instrument. This instrument supports\n * an `Add(increment)` function for reporting a sum, and is restricted to\n * non-negative increments. The default aggregation is Sum, as for any additive\n * instrument.\n *\n * Example uses for Counter:\n * <ol>\n *   <li> count the number of bytes received. </li>\n *   <li> count the number of requests completed. </li>\n *   <li> count the number of accounts created. </li>\n *   <li> count the number of checkpoints run. </li>\n *   <li> count the number of 5xx errors. </li>\n * <ol>\n */\nexport interface Counter<\n  AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n  /**\n   * Increment value of counter by the input. Inputs must not be negative.\n   */\n  add(value: number, attributes?: AttributesTypes, context?: Context): void;\n}\n\nexport interface UpDownCounter<\n  AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n  /**\n   * Increment value of counter by the input. Inputs may be negative.\n   */\n  add(value: number, attributes?: AttributesTypes, context?: Context): void;\n}\n\nexport interface Gauge<\n  AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n  /**\n   * Records a measurement.\n   */\n  record(value: number, attributes?: AttributesTypes, context?: Context): void;\n}\n\nexport interface Histogram<\n  AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n  /**\n   * Records a measurement. Value of the measurement must not be negative.\n   */\n  record(value: number, attributes?: AttributesTypes, context?: Context): void;\n}\n\n/**\n * @deprecated please use {@link Attributes}\n */\nexport type MetricAttributes = Attributes;\n\n/**\n * @deprecated please use {@link AttributeValue}\n */\nexport type MetricAttributeValue = AttributeValue;\n\n/**\n * The observable callback for Observable instruments.\n */\nexport type ObservableCallback<\n  AttributesTypes extends MetricAttributes = MetricAttributes,\n> = (\n  observableResult: ObservableResult<AttributesTypes>\n) => void | Promise<void>;\n\n/**\n * The observable callback for a batch of Observable instruments.\n */\nexport type BatchObservableCallback<\n  AttributesTypes extends MetricAttributes = MetricAttributes,\n> = (\n  observableResult: BatchObservableResult<AttributesTypes>\n) => void | Promise<void>;\n\nexport interface Observable<\n  AttributesTypes extends MetricAttributes = MetricAttributes,\n> {\n  /**\n   * Sets up a function that will be called whenever a metric collection is initiated.\n   *\n   * If the function is already in the list of callbacks for this Observable, the function is not added a second time.\n   */\n  addCallback(callback: ObservableCallback<AttributesTypes>): void;\n\n  /**\n   * Removes a callback previously registered with {@link Observable.addCallback}.\n   */\n  removeCallback(callback: ObservableCallback<AttributesTypes>): void;\n}\n\nexport type ObservableCounter<\n  AttributesTypes extends MetricAttributes = MetricAttributes,\n> = Observable<AttributesTypes>;\nexport type ObservableUpDownCounter<\n  AttributesTypes extends MetricAttributes = MetricAttributes,\n> = Observable<AttributesTypes>;\nexport type ObservableGauge<\n  AttributesTypes extends MetricAttributes = MetricAttributes,\n> = Observable<AttributesTypes>;\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Context } from '../context/types';\n\n/**\n * Injects `Context` into and extracts it from carriers that travel\n * in-band across process boundaries. Encoding is expected to conform to the\n * HTTP Header Field semantics. Values are often encoded as RPC/HTTP request\n * headers.\n *\n * The carrier of propagated data on both the client (injector) and server\n * (extractor) side is usually an object such as http headers. Propagation is\n * usually implemented via library-specific request interceptors, where the\n * client-side injects values and the server-side extracts them.\n */\nexport interface TextMapPropagator<Carrier = any> {\n  /**\n   * Injects values from a given `Context` into a carrier.\n   *\n   * OpenTelemetry defines a common set of format values (TextMapPropagator),\n   * and each has an expected `carrier` type.\n   *\n   * @param context the Context from which to extract values to transmit over\n   *     the wire.\n   * @param carrier the carrier of propagation fields, such as http request\n   *     headers.\n   * @param setter an optional {@link TextMapSetter}. If undefined, values will be\n   *     set by direct object assignment.\n   */\n  inject(\n    context: Context,\n    carrier: Carrier,\n    setter: TextMapSetter<Carrier>\n  ): void;\n\n  /**\n   * Given a `Context` and a carrier, extract context values from a\n   * carrier and return a new context, created from the old context, with the\n   * extracted values.\n   *\n   * @param context the Context from which to extract values to transmit over\n   *     the wire.\n   * @param carrier the carrier of propagation fields, such as http request\n   *     headers.\n   * @param getter an optional {@link TextMapGetter}. If undefined, keys will be all\n   *     own properties, and keys will be accessed by direct object access.\n   */\n  extract(\n    context: Context,\n    carrier: Carrier,\n    getter: TextMapGetter<Carrier>\n  ): Context;\n\n  /**\n   * Return a list of all fields which may be used by the propagator.\n   */\n  fields(): string[];\n}\n\n/**\n * A setter is specified by the caller to define a specific method\n * to set key/value pairs on the carrier within a propagator.\n */\nexport interface TextMapSetter<Carrier = any> {\n  /**\n   * Callback used to set a key/value pair on an object.\n   *\n   * Should be called by the propagator each time a key/value pair\n   * should be set, and should set that key/value pair on the propagator.\n   *\n   * @param carrier object or class which carries key/value pairs\n   * @param key string key to modify\n   * @param value value to be set to the key on the carrier\n   */\n  set(carrier: Carrier, key: string, value: string): void;\n}\n\n/**\n * A getter is specified by the caller to define a specific method\n * to get the value of a key from a carrier.\n */\nexport interface TextMapGetter<Carrier = any> {\n  /**\n   * Get a list of all keys available on the carrier.\n   *\n   * @param carrier\n   */\n  keys(carrier: Carrier): string[];\n\n  /**\n   * Get the value of a specific key from the carrier.\n   *\n   * @param carrier\n   * @param key\n   */\n  get(carrier: Carrier, key: string): undefined | string | string[];\n}\n\nexport const defaultTextMapGetter: TextMapGetter = {\n  get(carrier, key) {\n    if (carrier == null) {\n      return undefined;\n    }\n    return carrier[key];\n  },\n\n  keys(carrier) {\n    if (carrier == null) {\n      return [];\n    }\n    return Object.keys(carrier);\n  },\n};\n\nexport const defaultTextMapSetter: TextMapSetter = {\n  set(carrier, key, value) {\n    if (carrier == null) {\n      return;\n    }\n\n    carrier[key] = value;\n  },\n};\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ROOT_CONTEXT } from './context';\nimport * as types from './types';\n\nexport class NoopContextManager implements types.ContextManager {\n  active(): types.Context {\n    return ROOT_CONTEXT;\n  }\n\n  with<A extends unknown[], F extends (...args: A) => ReturnType<F>>(\n    _context: types.Context,\n    fn: F,\n    thisArg?: ThisParameterType<F>,\n    ...args: A\n  ): ReturnType<F> {\n    return fn.call(thisArg, ...args);\n  }\n\n  bind<T>(_context: types.Context, target: T): T {\n    return target;\n  }\n\n  enable(): this {\n    return this;\n  }\n\n  disable(): this {\n    return this;\n  }\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NoopContextManager } from '../context/NoopContextManager';\nimport { Context, ContextManager } from '../context/types';\nimport {\n  getGlobal,\n  registerGlobal,\n  unregisterGlobal,\n} from '../internal/global-utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'context';\nconst NOOP_CONTEXT_MANAGER = new NoopContextManager();\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Context API\n */\nexport class ContextAPI {\n  private static _instance?: ContextAPI;\n\n  /** Empty private constructor prevents end users from constructing a new instance of the API */\n  private constructor() {}\n\n  /** Get the singleton instance of the Context API */\n  public static getInstance(): ContextAPI {\n    if (!this._instance) {\n      this._instance = new ContextAPI();\n    }\n\n    return this._instance;\n  }\n\n  /**\n   * Set the current context manager.\n   *\n   * @returns true if the context manager was successfully registered, else false\n   */\n  public setGlobalContextManager(contextManager: ContextManager): boolean {\n    return registerGlobal(API_NAME, contextManager, DiagAPI.instance());\n  }\n\n  /**\n   * Get the currently active context\n   */\n  public active(): Context {\n    return this._getContextManager().active();\n  }\n\n  /**\n   * Execute a function with an active context\n   *\n   * @param context context to be active during function execution\n   * @param fn function to execute in a context\n   * @param thisArg optional receiver to be used for calling fn\n   * @param args optional arguments forwarded to fn\n   */\n  public with<A extends unknown[], F extends (...args: A) => ReturnType<F>>(\n    context: Context,\n    fn: F,\n    thisArg?: ThisParameterType<F>,\n    ...args: A\n  ): ReturnType<F> {\n    return this._getContextManager().with(context, fn, thisArg, ...args);\n  }\n\n  /**\n   * Bind a context to a target function or event emitter\n   *\n   * @param context context to bind to the event emitter or function. Defaults to the currently active context\n   * @param target function or event emitter to bind\n   */\n  public bind<T>(context: Context, target: T): T {\n    return this._getContextManager().bind(context, target);\n  }\n\n  private _getContextManager(): ContextManager {\n    return getGlobal(API_NAME) || NOOP_CONTEXT_MANAGER;\n  }\n\n  /** Disable and remove the global context manager */\n  public disable() {\n    this._getContextManager().disable();\n    unregisterGlobal(API_NAME, DiagAPI.instance());\n  }\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport enum TraceFlags {\n  /** Represents no flag set. */\n  NONE = 0x0,\n  /** Bit to represent whether trace is sampled in trace flags. */\n  SAMPLED = 0x1 << 0,\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SpanContext } from './span_context';\nimport { TraceFlags } from './trace_flags';\n\nexport const INVALID_SPANID = '0000000000000000';\nexport const INVALID_TRACEID = '00000000000000000000000000000000';\nexport const INVALID_SPAN_CONTEXT: SpanContext = {\n  traceId: INVALID_TRACEID,\n  spanId: INVALID_SPANID,\n  traceFlags: TraceFlags.NONE,\n};\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Exception } from '../common/Exception';\nimport { TimeInput } from '../common/Time';\nimport { SpanAttributes } from './attributes';\nimport { INVALID_SPAN_CONTEXT } from './invalid-span-constants';\nimport { Span } from './span';\nimport { SpanContext } from './span_context';\nimport { SpanStatus } from './status';\nimport { Link } from './link';\n\n/**\n * The NonRecordingSpan is the default {@link Span} that is used when no Span\n * implementation is available. All operations are no-op including context\n * propagation.\n */\nexport class NonRecordingSpan implements Span {\n  constructor(\n    private readonly _spanContext: SpanContext = INVALID_SPAN_CONTEXT\n  ) {}\n\n  // Returns a SpanContext.\n  spanContext(): SpanContext {\n    return this._spanContext;\n  }\n\n  // By default does nothing\n  setAttribute(_key: string, _value: unknown): this {\n    return this;\n  }\n\n  // By default does nothing\n  setAttributes(_attributes: SpanAttributes): this {\n    return this;\n  }\n\n  // By default does nothing\n  addEvent(_name: string, _attributes?: SpanAttributes): this {\n    return this;\n  }\n\n  addLink(_link: Link): this {\n    return this;\n  }\n\n  addLinks(_links: Link[]): this {\n    return this;\n  }\n\n  // By default does nothing\n  setStatus(_status: SpanStatus): this {\n    return this;\n  }\n\n  // By default does nothing\n  updateName(_name: string): this {\n    return this;\n  }\n\n  // By default does nothing\n  end(_endTime?: TimeInput): void {}\n\n  // isRecording always returns false for NonRecordingSpan.\n  isRecording(): boolean {\n    return false;\n  }\n\n  // By default does nothing\n  recordException(_exception: Exception, _time?: TimeInput): void {}\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createContextKey } from '../context/context';\nimport { Context } from '../context/types';\nimport { Span } from './span';\nimport { SpanContext } from './span_context';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nimport { ContextAPI } from '../api/context';\n\n/**\n * span key\n */\nconst SPAN_KEY = createContextKey('OpenTelemetry Context Key SPAN');\n\n/**\n * Return the span if one exists\n *\n * @param context context to get span from\n */\nexport function getSpan(context: Context): Span | undefined {\n  return (context.getValue(SPAN_KEY) as Span) || undefined;\n}\n\n/**\n * Gets the span from the current context, if one exists.\n */\nexport function getActiveSpan(): Span | undefined {\n  return getSpan(ContextAPI.getInstance().active());\n}\n\n/**\n * Set the span on a context\n *\n * @param context context to use as parent\n * @param span span to set active\n */\nexport function setSpan(context: Context, span: Span): Context {\n  return context.setValue(SPAN_KEY, span);\n}\n\n/**\n * Remove current span stored in the context\n *\n * @param context context to delete span from\n */\nexport function deleteSpan(context: Context): Context {\n  return context.deleteValue(SPAN_KEY);\n}\n\n/**\n * Wrap span context in a NoopSpan and set as span in a new\n * context\n *\n * @param context context to set active span on\n * @param spanContext span context to be wrapped\n */\nexport function setSpanContext(\n  context: Context,\n  spanContext: SpanContext\n): Context {\n  return setSpan(context, new NonRecordingSpan(spanContext));\n}\n\n/**\n * Get the span context of the span if it exists.\n *\n * @param context context to get values from\n */\nexport function getSpanContext(context: Context): SpanContext | undefined {\n  return getSpan(context)?.spanContext();\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { INVALID_SPANID, INVALID_TRACEID } from './invalid-span-constants';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nimport { Span } from './span';\nimport { SpanContext } from './span_context';\n\nconst VALID_TRACEID_REGEX = /^([0-9a-f]{32})$/i;\nconst VALID_SPANID_REGEX = /^[0-9a-f]{16}$/i;\n\nexport function isValidTraceId(traceId: string): boolean {\n  return VALID_TRACEID_REGEX.test(traceId) && traceId !== INVALID_TRACEID;\n}\n\nexport function isValidSpanId(spanId: string): boolean {\n  return VALID_SPANID_REGEX.test(spanId) && spanId !== INVALID_SPANID;\n}\n\n/**\n * Returns true if this {@link SpanContext} is valid.\n * @return true if this {@link SpanContext} is valid.\n */\nexport function isSpanContextValid(spanContext: SpanContext): boolean {\n  return (\n    isValidTraceId(spanContext.traceId) && isValidSpanId(spanContext.spanId)\n  );\n}\n\n/**\n * Wrap the given {@link SpanContext} in a new non-recording {@link Span}\n *\n * @param spanContext span context to be wrapped\n * @returns a new non-recording {@link Span} with the provided context\n */\nexport function wrapSpanContext(spanContext: SpanContext): Span {\n  return new NonRecordingSpan(spanContext);\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ContextAPI } from '../api/context';\nimport { Context } from '../context/types';\nimport { getSpanContext, setSpan } from '../trace/context-utils';\nimport { NonRecordingSpan } from './NonRecordingSpan';\nimport { Span } from './span';\nimport { isSpanContextValid } from './spancontext-utils';\nimport { SpanOptions } from './SpanOptions';\nimport { SpanContext } from './span_context';\nimport { Tracer } from './tracer';\n\nconst contextApi = ContextAPI.getInstance();\n\n/**\n * No-op implementations of {@link Tracer}.\n */\nexport class NoopTracer implements Tracer {\n  // startSpan starts a noop span.\n  startSpan(\n    name: string,\n    options?: SpanOptions,\n    context = contextApi.active()\n  ): Span {\n    const root = Boolean(options?.root);\n    if (root) {\n      return new NonRecordingSpan();\n    }\n\n    const parentFromContext = context && getSpanContext(context);\n\n    if (\n      isSpanContext(parentFromContext) &&\n      isSpanContextValid(parentFromContext)\n    ) {\n      return new NonRecordingSpan(parentFromContext);\n    } else {\n      return new NonRecordingSpan();\n    }\n  }\n\n  startActiveSpan<F extends (span: Span) => ReturnType<F>>(\n    name: string,\n    fn: F\n  ): ReturnType<F>;\n  startActiveSpan<F extends (span: Span) => ReturnType<F>>(\n    name: string,\n    opts: SpanOptions | undefined,\n    fn: F\n  ): ReturnType<F>;\n  startActiveSpan<F extends (span: Span) => ReturnType<F>>(\n    name: string,\n    opts: SpanOptions | undefined,\n    ctx: Context | undefined,\n    fn: F\n  ): ReturnType<F>;\n  startActiveSpan<F extends (span: Span) => ReturnType<F>>(\n    name: string,\n    arg2?: F | SpanOptions,\n    arg3?: F | Context,\n    arg4?: F\n  ): ReturnType<F> | undefined {\n    let opts: SpanOptions | undefined;\n    let ctx: Context | undefined;\n    let fn: F;\n\n    if (arguments.length < 2) {\n      return;\n    } else if (arguments.length === 2) {\n      fn = arg2 as F;\n    } else if (arguments.length === 3) {\n      opts = arg2 as SpanOptions | undefined;\n      fn = arg3 as F;\n    } else {\n      opts = arg2 as SpanOptions | undefined;\n      ctx = arg3 as Context | undefined;\n      fn = arg4 as F;\n    }\n\n    const parentContext = ctx ?? contextApi.active();\n    const span = this.startSpan(name, opts, parentContext);\n    const contextWithSpanSet = setSpan(parentContext, span);\n\n    return contextApi.with(contextWithSpanSet, fn, undefined, span);\n  }\n}\n\nfunction isSpanContext(spanContext: any): spanContext is SpanContext {\n  return (\n    typeof spanContext === 'object' &&\n    typeof spanContext['spanId'] === 'string' &&\n    typeof spanContext['traceId'] === 'string' &&\n    typeof spanContext['traceFlags'] === 'number'\n  );\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Context } from '../context/types';\nimport { NoopTracer } from './NoopTracer';\nimport { Span } from './span';\nimport { SpanOptions } from './SpanOptions';\nimport { Tracer } from './tracer';\nimport { TracerOptions } from './tracer_options';\n\nconst NOOP_TRACER = new NoopTracer();\n\n/**\n * Proxy tracer provided by the proxy tracer provider\n */\nexport class ProxyTracer implements Tracer {\n  // When a real implementation is provided, this will be it\n  private _delegate?: Tracer;\n\n  constructor(\n    private _provider: TracerDelegator,\n    public readonly name: string,\n    public readonly version?: string,\n    public readonly options?: TracerOptions\n  ) {}\n\n  startSpan(name: string, options?: SpanOptions, context?: Context): Span {\n    return this._getTracer().startSpan(name, options, context);\n  }\n\n  startActiveSpan<F extends (span: Span) => unknown>(\n    _name: string,\n    _options: F | SpanOptions,\n    _context?: F | Context,\n    _fn?: F\n  ): ReturnType<F> {\n    const tracer = this._getTracer();\n    return Reflect.apply(tracer.startActiveSpan, tracer, arguments);\n  }\n\n  /**\n   * Try to get a tracer from the proxy tracer provider.\n   * If the proxy tracer provider has no delegate, return a noop tracer.\n   */\n  private _getTracer() {\n    if (this._delegate) {\n      return this._delegate;\n    }\n\n    const tracer = this._provider.getDelegateTracer(\n      this.name,\n      this.version,\n      this.options\n    );\n\n    if (!tracer) {\n      return NOOP_TRACER;\n    }\n\n    this._delegate = tracer;\n    return this._delegate;\n  }\n}\n\nexport interface TracerDelegator {\n  getDelegateTracer(\n    name: string,\n    version?: string,\n    options?: TracerOptions\n  ): Tracer | undefined;\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { NoopTracer } from './NoopTracer';\nimport { Tracer } from './tracer';\nimport { TracerOptions } from './tracer_options';\nimport { TracerProvider } from './tracer_provider';\n\n/**\n * An implementation of the {@link TracerProvider} which returns an impotent\n * Tracer for all calls to `getTracer`.\n *\n * All operations are no-op.\n */\nexport class NoopTracerProvider implements TracerProvider {\n  getTracer(\n    _name?: string,\n    _version?: string,\n    _options?: TracerOptions\n  ): Tracer {\n    return new NoopTracer();\n  }\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Tracer } from './tracer';\nimport { TracerProvider } from './tracer_provider';\nimport { ProxyTracer } from './ProxyTracer';\nimport { NoopTracerProvider } from './NoopTracerProvider';\nimport { TracerOptions } from './tracer_options';\n\nconst NOOP_TRACER_PROVIDER = new NoopTracerProvider();\n\n/**\n * Tracer provider which provides {@link ProxyTracer}s.\n *\n * Before a delegate is set, tracers provided are NoOp.\n *   When a delegate is set, traces are provided from the delegate.\n *   When a delegate is set after tracers have already been provided,\n *   all tracers already provided will use the provided delegate implementation.\n */\nexport class ProxyTracerProvider implements TracerProvider {\n  private _delegate?: TracerProvider;\n\n  /**\n   * Get a {@link ProxyTracer}\n   */\n  getTracer(name: string, version?: string, options?: TracerOptions): Tracer {\n    return (\n      this.getDelegateTracer(name, version, options) ??\n      new ProxyTracer(this, name, version, options)\n    );\n  }\n\n  getDelegate(): TracerProvider {\n    return this._delegate ?? NOOP_TRACER_PROVIDER;\n  }\n\n  /**\n   * Set the delegate tracer provider\n   */\n  setDelegate(delegate: TracerProvider) {\n    this._delegate = delegate;\n  }\n\n  getDelegateTracer(\n    name: string,\n    version?: string,\n    options?: TracerOptions\n  ): Tracer | undefined {\n    return this._delegate?.getTracer(name, version, options);\n  }\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { SpanAttributes } from './attributes';\nimport { TraceState } from './trace_state';\n\n/**\n * @deprecated use the one declared in @opentelemetry/sdk-trace-base instead.\n * A sampling decision that determines how a {@link Span} will be recorded\n * and collected.\n */\nexport enum SamplingDecision {\n  /**\n   * `Span.isRecording() === false`, span will not be recorded and all events\n   * and attributes will be dropped.\n   */\n  NOT_RECORD,\n  /**\n   * `Span.isRecording() === true`, but `Sampled` flag in {@link TraceFlags}\n   * MUST NOT be set.\n   */\n  RECORD,\n  /**\n   * `Span.isRecording() === true` AND `Sampled` flag in {@link TraceFlags}\n   * MUST be set.\n   */\n  RECORD_AND_SAMPLED,\n}\n\n/**\n * @deprecated use the one declared in @opentelemetry/sdk-trace-base instead.\n * A sampling result contains a decision for a {@link Span} and additional\n * attributes the sampler would like to added to the Span.\n */\nexport interface SamplingResult {\n  /**\n   * A sampling decision, refer to {@link SamplingDecision} for details.\n   */\n  decision: SamplingDecision;\n  /**\n   * The list of attributes returned by SamplingResult MUST be immutable.\n   * Caller may call {@link Sampler}.shouldSample any number of times and\n   * can safely cache the returned value.\n   */\n  attributes?: Readonly<SpanAttributes>;\n  /**\n   * A {@link TraceState} that will be associated with the {@link Span} through\n   * the new {@link SpanContext}. Samplers SHOULD return the TraceState from\n   * the passed-in {@link Context} if they do not intend to change it. Leaving\n   * the value undefined will also leave the TraceState unchanged.\n   */\n  traceState?: TraceState;\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport enum SpanKind {\n  /** Default value. Indicates that the span is used internally. */\n  INTERNAL = 0,\n\n  /**\n   * Indicates that the span covers server-side handling of an RPC or other\n   * remote request.\n   */\n  SERVER = 1,\n\n  /**\n   * Indicates that the span covers the client-side wrapper around an RPC or\n   * other remote request.\n   */\n  CLIENT = 2,\n\n  /**\n   * Indicates that the span describes producer sending a message to a\n   * broker. Unlike client and server, there is no direct critical path latency\n   * relationship between producer and consumer spans.\n   */\n  PRODUCER = 3,\n\n  /**\n   * Indicates that the span describes consumer receiving a message from a\n   * broker. Unlike client and server, there is no direct critical path latency\n   * relationship between producer and consumer spans.\n   */\n  CONSUMER = 4,\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport interface SpanStatus {\n  /** The status code of this message. */\n  code: SpanStatusCode;\n  /** A developer-facing error message. */\n  message?: string;\n}\n\n/**\n * An enumeration of status codes.\n */\nexport enum SpanStatusCode {\n  /**\n   * The default status.\n   */\n  UNSET = 0,\n  /**\n   * The operation has been validated by an Application developer or\n   * Operator to have completed successfully.\n   */\n  OK = 1,\n  /**\n   * The operation contains an error.\n   */\n  ERROR = 2,\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst VALID_KEY_CHAR_RANGE = '[_0-9a-z-*/]';\nconst VALID_KEY = `[a-z]${VALID_KEY_CHAR_RANGE}{0,255}`;\nconst VALID_VENDOR_KEY = `[a-z0-9]${VALID_KEY_CHAR_RANGE}{0,240}@[a-z]${VALID_KEY_CHAR_RANGE}{0,13}`;\nconst VALID_KEY_REGEX = new RegExp(`^(?:${VALID_KEY}|${VALID_VENDOR_KEY})$`);\nconst VALID_VALUE_BASE_REGEX = /^[ -~]{0,255}[!-~]$/;\nconst INVALID_VALUE_COMMA_EQUAL_REGEX = /,|=/;\n\n/**\n * Key is opaque string up to 256 characters printable. It MUST begin with a\n * lowercase letter, and can only contain lowercase letters a-z, digits 0-9,\n * underscores _, dashes -, asterisks *, and forward slashes /.\n * For multi-tenant vendor scenarios, an at sign (@) can be used to prefix the\n * vendor name. Vendors SHOULD set the tenant ID at the beginning of the key.\n * see https://www.w3.org/TR/trace-context/#key\n */\nexport function validateKey(key: string): boolean {\n  return VALID_KEY_REGEX.test(key);\n}\n\n/**\n * Value is opaque string up to 256 characters printable ASCII RFC0020\n * characters (i.e., the range 0x20 to 0x7E) except comma , and =.\n */\nexport function validateValue(value: string): boolean {\n  return (\n    VALID_VALUE_BASE_REGEX.test(value) &&\n    !INVALID_VALUE_COMMA_EQUAL_REGEX.test(value)\n  );\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TraceState } from '../trace_state';\nimport { validateKey, validateValue } from './tracestate-validators';\n\nconst MAX_TRACE_STATE_ITEMS = 32;\nconst MAX_TRACE_STATE_LEN = 512;\nconst LIST_MEMBERS_SEPARATOR = ',';\nconst LIST_MEMBER_KEY_VALUE_SPLITTER = '=';\n\n/**\n * TraceState must be a class and not a simple object type because of the spec\n * requirement (https://www.w3.org/TR/trace-context/#tracestate-field).\n *\n * Here is the list of allowed mutations:\n * - New key-value pair should be added into the beginning of the list\n * - The value of any key can be updated. Modified keys MUST be moved to the\n * beginning of the list.\n */\nexport class TraceStateImpl implements TraceState {\n  private _internalState: Map<string, string> = new Map();\n\n  constructor(rawTraceState?: string) {\n    if (rawTraceState) this._parse(rawTraceState);\n  }\n\n  set(key: string, value: string): TraceStateImpl {\n    // TODO: Benchmark the different approaches(map vs list) and\n    // use the faster one.\n    const traceState = this._clone();\n    if (traceState._internalState.has(key)) {\n      traceState._internalState.delete(key);\n    }\n    traceState._internalState.set(key, value);\n    return traceState;\n  }\n\n  unset(key: string): TraceStateImpl {\n    const traceState = this._clone();\n    traceState._internalState.delete(key);\n    return traceState;\n  }\n\n  get(key: string): string | undefined {\n    return this._internalState.get(key);\n  }\n\n  serialize(): string {\n    return this._keys()\n      .reduce((agg: string[], key) => {\n        agg.push(key + LIST_MEMBER_KEY_VALUE_SPLITTER + this.get(key));\n        return agg;\n      }, [])\n      .join(LIST_MEMBERS_SEPARATOR);\n  }\n\n  private _parse(rawTraceState: string) {\n    if (rawTraceState.length > MAX_TRACE_STATE_LEN) return;\n    this._internalState = rawTraceState\n      .split(LIST_MEMBERS_SEPARATOR)\n      .reverse() // Store in reverse so new keys (.set(...)) will be placed at the beginning\n      .reduce((agg: Map<string, string>, part: string) => {\n        const listMember = part.trim(); // Optional Whitespace (OWS) handling\n        const i = listMember.indexOf(LIST_MEMBER_KEY_VALUE_SPLITTER);\n        if (i !== -1) {\n          const key = listMember.slice(0, i);\n          const value = listMember.slice(i + 1, part.length);\n          if (validateKey(key) && validateValue(value)) {\n            agg.set(key, value);\n          } else {\n            // TODO: Consider to add warning log\n          }\n        }\n        return agg;\n      }, new Map());\n\n    // Because of the reverse() requirement, trunc must be done after map is created\n    if (this._internalState.size > MAX_TRACE_STATE_ITEMS) {\n      this._internalState = new Map(\n        Array.from(this._internalState.entries())\n          .reverse() // Use reverse same as original tracestate parse chain\n          .slice(0, MAX_TRACE_STATE_ITEMS)\n      );\n    }\n  }\n\n  private _keys(): string[] {\n    return Array.from(this._internalState.keys()).reverse();\n  }\n\n  private _clone(): TraceStateImpl {\n    const traceState = new TraceStateImpl();\n    traceState._internalState = new Map(this._internalState);\n    return traceState;\n  }\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { TraceState } from '../trace_state';\nimport { TraceStateImpl } from './tracestate-impl';\n\nexport function createTraceState(rawTraceState?: string): TraceState {\n  return new TraceStateImpl(rawTraceState);\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { ContextAPI } from './api/context';\n/** Entrypoint for context API */\nexport const context = ContextAPI.getInstance();\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { DiagAPI } from './api/diag';\n/**\n * Entrypoint for Diag API.\n * Defines Diagnostic handler used for internal diagnostic logging operations.\n * The default provides a Noop DiagLogger implementation which may be changed via the\n * diag.setLogger(logger: DiagLogger) function.\n */\nexport const diag = DiagAPI.instance();\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Meter, MeterOptions } from './Meter';\nimport { MeterProvider } from './MeterProvider';\nimport { NOOP_METER } from './NoopMeter';\n\n/**\n * An implementation of the {@link MeterProvider} which returns an impotent Meter\n * for all calls to `getMeter`\n */\nexport class NoopMeterProvider implements MeterProvider {\n  getMeter(_name: string, _version?: string, _options?: MeterOptions): Meter {\n    return NOOP_METER;\n  }\n}\n\nexport const NOOP_METER_PROVIDER = new NoopMeterProvider();\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Meter, MeterOptions } from '../metrics/Meter';\nimport { MeterProvider } from '../metrics/MeterProvider';\nimport { NOOP_METER_PROVIDER } from '../metrics/NoopMeterProvider';\nimport {\n  getGlobal,\n  registerGlobal,\n  unregisterGlobal,\n} from '../internal/global-utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'metrics';\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Metrics API\n */\nexport class MetricsAPI {\n  private static _instance?: MetricsAPI;\n\n  /** Empty private constructor prevents end users from constructing a new instance of the API */\n  private constructor() {}\n\n  /** Get the singleton instance of the Metrics API */\n  public static getInstance(): MetricsAPI {\n    if (!this._instance) {\n      this._instance = new MetricsAPI();\n    }\n\n    return this._instance;\n  }\n\n  /**\n   * Set the current global meter provider.\n   * Returns true if the meter provider was successfully registered, else false.\n   */\n  public setGlobalMeterProvider(provider: MeterProvider): boolean {\n    return registerGlobal(API_NAME, provider, DiagAPI.instance());\n  }\n\n  /**\n   * Returns the global meter provider.\n   */\n  public getMeterProvider(): MeterProvider {\n    return getGlobal(API_NAME) || NOOP_METER_PROVIDER;\n  }\n\n  /**\n   * Returns a meter from the global meter provider.\n   */\n  public getMeter(\n    name: string,\n    version?: string,\n    options?: MeterOptions\n  ): Meter {\n    return this.getMeterProvider().getMeter(name, version, options);\n  }\n\n  /** Remove the global meter provider */\n  public disable(): void {\n    unregisterGlobal(API_NAME, DiagAPI.instance());\n  }\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { MetricsAPI } from './api/metrics';\n/** Entrypoint for metrics API */\nexport const metrics = MetricsAPI.getInstance();\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Context } from '../context/types';\nimport { TextMapPropagator } from './TextMapPropagator';\n\n/**\n * No-op implementations of {@link TextMapPropagator}.\n */\nexport class NoopTextMapPropagator implements TextMapPropagator {\n  /** Noop inject function does nothing */\n  inject(_context: Context, _carrier: unknown): void {}\n  /** Noop extract function does nothing and returns the input context */\n  extract(context: Context, _carrier: unknown): Context {\n    return context;\n  }\n  fields(): string[] {\n    return [];\n  }\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ContextAPI } from '../api/context';\nimport { createContextKey } from '../context/context';\nimport { Context } from '../context/types';\nimport { Baggage } from './types';\n\n/**\n * Baggage key\n */\nconst BAGGAGE_KEY = createContextKey('OpenTelemetry Baggage Key');\n\n/**\n * Retrieve the current baggage from the given context\n *\n * @param {Context} Context that manage all context values\n * @returns {Baggage} Extracted baggage from the context\n */\nexport function getBaggage(context: Context): Baggage | undefined {\n  return (context.getValue(BAGGAGE_KEY) as Baggage) || undefined;\n}\n\n/**\n * Retrieve the current baggage from the active/current context\n *\n * @returns {Baggage} Extracted baggage from the context\n */\nexport function getActiveBaggage(): Baggage | undefined {\n  return getBaggage(ContextAPI.getInstance().active());\n}\n\n/**\n * Store a baggage in the given context\n *\n * @param {Context} Context that manage all context values\n * @param {Baggage} baggage that will be set in the actual context\n */\nexport function setBaggage(context: Context, baggage: Baggage): Context {\n  return context.setValue(BAGGAGE_KEY, baggage);\n}\n\n/**\n * Delete the baggage stored in the given context\n *\n * @param {Context} Context that manage all context values\n */\nexport function deleteBaggage(context: Context): Context {\n  return context.deleteValue(BAGGAGE_KEY);\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Context } from '../context/types';\nimport {\n  getGlobal,\n  registerGlobal,\n  unregisterGlobal,\n} from '../internal/global-utils';\nimport { NoopTextMapPropagator } from '../propagation/NoopTextMapPropagator';\nimport {\n  defaultTextMapGetter,\n  defaultTextMapSetter,\n  TextMapGetter,\n  TextMapPropagator,\n  TextMapSetter,\n} from '../propagation/TextMapPropagator';\nimport {\n  getBaggage,\n  getActiveBaggage,\n  setBaggage,\n  deleteBaggage,\n} from '../baggage/context-helpers';\nimport { createBaggage } from '../baggage/utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'propagation';\nconst NOOP_TEXT_MAP_PROPAGATOR = new NoopTextMapPropagator();\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Propagation API\n */\nexport class PropagationAPI {\n  private static _instance?: PropagationAPI;\n\n  /** Empty private constructor prevents end users from constructing a new instance of the API */\n  private constructor() {}\n\n  /** Get the singleton instance of the Propagator API */\n  public static getInstance(): PropagationAPI {\n    if (!this._instance) {\n      this._instance = new PropagationAPI();\n    }\n\n    return this._instance;\n  }\n\n  /**\n   * Set the current propagator.\n   *\n   * @returns true if the propagator was successfully registered, else false\n   */\n  public setGlobalPropagator(propagator: TextMapPropagator): boolean {\n    return registerGlobal(API_NAME, propagator, DiagAPI.instance());\n  }\n\n  /**\n   * Inject context into a carrier to be propagated inter-process\n   *\n   * @param context Context carrying tracing data to inject\n   * @param carrier carrier to inject context into\n   * @param setter Function used to set values on the carrier\n   */\n  public inject<Carrier>(\n    context: Context,\n    carrier: Carrier,\n    setter: TextMapSetter<Carrier> = defaultTextMapSetter\n  ): void {\n    return this._getGlobalPropagator().inject(context, carrier, setter);\n  }\n\n  /**\n   * Extract context from a carrier\n   *\n   * @param context Context which the newly created context will inherit from\n   * @param carrier Carrier to extract context from\n   * @param getter Function used to extract keys from a carrier\n   */\n  public extract<Carrier>(\n    context: Context,\n    carrier: Carrier,\n    getter: TextMapGetter<Carrier> = defaultTextMapGetter\n  ): Context {\n    return this._getGlobalPropagator().extract(context, carrier, getter);\n  }\n\n  /**\n   * Return a list of all fields which may be used by the propagator.\n   */\n  public fields(): string[] {\n    return this._getGlobalPropagator().fields();\n  }\n\n  /** Remove the global propagator */\n  public disable() {\n    unregisterGlobal(API_NAME, DiagAPI.instance());\n  }\n\n  public createBaggage = createBaggage;\n\n  public getBaggage = getBaggage;\n\n  public getActiveBaggage = getActiveBaggage;\n\n  public setBaggage = setBaggage;\n\n  public deleteBaggage = deleteBaggage;\n\n  private _getGlobalPropagator(): TextMapPropagator {\n    return getGlobal(API_NAME) || NOOP_TEXT_MAP_PROPAGATOR;\n  }\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { PropagationAPI } from './api/propagation';\n/** Entrypoint for propagation API */\nexport const propagation = PropagationAPI.getInstance();\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  getGlobal,\n  registerGlobal,\n  unregisterGlobal,\n} from '../internal/global-utils';\nimport { ProxyTracerProvider } from '../trace/ProxyTracerProvider';\nimport {\n  isSpanContextValid,\n  wrapSpanContext,\n} from '../trace/spancontext-utils';\nimport { Tracer } from '../trace/tracer';\nimport { TracerProvider } from '../trace/tracer_provider';\nimport {\n  deleteSpan,\n  getActiveSpan,\n  getSpan,\n  getSpanContext,\n  setSpan,\n  setSpanContext,\n} from '../trace/context-utils';\nimport { DiagAPI } from './diag';\n\nconst API_NAME = 'trace';\n\n/**\n * Singleton object which represents the entry point to the OpenTelemetry Tracing API\n */\nexport class TraceAPI {\n  private static _instance?: TraceAPI;\n\n  private _proxyTracerProvider = new ProxyTracerProvider();\n\n  /** Empty private constructor prevents end users from constructing a new instance of the API */\n  private constructor() {}\n\n  /** Get the singleton instance of the Trace API */\n  public static getInstance(): TraceAPI {\n    if (!this._instance) {\n      this._instance = new TraceAPI();\n    }\n\n    return this._instance;\n  }\n\n  /**\n   * Set the current global tracer.\n   *\n   * @returns true if the tracer provider was successfully registered, else false\n   */\n  public setGlobalTracerProvider(provider: TracerProvider): boolean {\n    const success = registerGlobal(\n      API_NAME,\n      this._proxyTracerProvider,\n      DiagAPI.instance()\n    );\n    if (success) {\n      this._proxyTracerProvider.setDelegate(provider);\n    }\n    return success;\n  }\n\n  /**\n   * Returns the global tracer provider.\n   */\n  public getTracerProvider(): TracerProvider {\n    return getGlobal(API_NAME) || this._proxyTracerProvider;\n  }\n\n  /**\n   * Returns a tracer from the global tracer provider.\n   */\n  public getTracer(name: string, version?: string): Tracer {\n    return this.getTracerProvider().getTracer(name, version);\n  }\n\n  /** Remove the global tracer provider */\n  public disable() {\n    unregisterGlobal(API_NAME, DiagAPI.instance());\n    this._proxyTracerProvider = new ProxyTracerProvider();\n  }\n\n  public wrapSpanContext = wrapSpanContext;\n\n  public isSpanContextValid = isSpanContextValid;\n\n  public deleteSpan = deleteSpan;\n\n  public getSpan = getSpan;\n\n  public getActiveSpan = getActiveSpan;\n\n  public getSpanContext = getSpanContext;\n\n  public setSpan = setSpan;\n\n  public setSpanContext = setSpanContext;\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { TraceAPI } from './api/trace';\n/** Entrypoint for trace API */\nexport const trace = TraceAPI.getInstance();\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport { BaggageEntry, BaggageEntryMetadata, Baggage } from './baggage/types';\nexport { baggageEntryMetadataFromString } from './baggage/utils';\nexport { Exception } from './common/Exception';\nexport { HrTime, TimeInput } from './common/Time';\nexport { Attributes, AttributeValue } from './common/Attributes';\n\n// Context APIs\nexport { createContextKey, ROOT_CONTEXT } from './context/context';\nexport { Context, ContextManager } from './context/types';\nexport type { ContextAPI } from './api/context';\n\n// Diag APIs\nexport { DiagConsoleLogger } from './diag/consoleLogger';\nexport {\n  DiagLogFunction,\n  DiagLogger,\n  DiagLogLevel,\n  ComponentLoggerOptions,\n  DiagLoggerOptions,\n} from './diag/types';\nexport type { DiagAPI } from './api/diag';\n\n// Metrics APIs\nexport { createNoopMeter } from './metrics/NoopMeter';\nexport { MeterOptions, Meter } from './metrics/Meter';\nexport { MeterProvider } from './metrics/MeterProvider';\nexport {\n  ValueType,\n  Counter,\n  Gauge,\n  Histogram,\n  MetricOptions,\n  Observable,\n  ObservableCounter,\n  ObservableGauge,\n  ObservableUpDownCounter,\n  UpDownCounter,\n  BatchObservableCallback,\n  MetricAdvice,\n  MetricAttributes,\n  MetricAttributeValue,\n  ObservableCallback,\n} from './metrics/Metric';\nexport {\n  BatchObservableResult,\n  ObservableResult,\n} from './metrics/ObservableResult';\nexport type { MetricsAPI } from './api/metrics';\n\n// Propagation APIs\nexport {\n  TextMapPropagator,\n  TextMapSetter,\n  TextMapGetter,\n  defaultTextMapGetter,\n  defaultTextMapSetter,\n} from './propagation/TextMapPropagator';\nexport type { PropagationAPI } from './api/propagation';\n\n// Trace APIs\nexport { SpanAttributes, SpanAttributeValue } from './trace/attributes';\nexport { Link } from './trace/link';\nexport { ProxyTracer, TracerDelegator } from './trace/ProxyTracer';\nexport { ProxyTracerProvider } from './trace/ProxyTracerProvider';\nexport { Sampler } from './trace/Sampler';\nexport { SamplingDecision, SamplingResult } from './trace/SamplingResult';\nexport { SpanContext } from './trace/span_context';\nexport { SpanKind } from './trace/span_kind';\nexport { Span } from './trace/span';\nexport { SpanOptions } from './trace/SpanOptions';\nexport { SpanStatus, SpanStatusCode } from './trace/status';\nexport { TraceFlags } from './trace/trace_flags';\nexport { TraceState } from './trace/trace_state';\nexport { createTraceState } from './trace/internal/utils';\nexport { TracerProvider } from './trace/tracer_provider';\nexport { Tracer } from './trace/tracer';\nexport { TracerOptions } from './trace/tracer_options';\nexport {\n  isSpanContextValid,\n  isValidTraceId,\n  isValidSpanId,\n} from './trace/spancontext-utils';\nexport {\n  INVALID_SPANID,\n  INVALID_TRACEID,\n  INVALID_SPAN_CONTEXT,\n} from './trace/invalid-span-constants';\nexport type { TraceAPI } from './api/trace';\n\n// Split module-level variable definition into separate files to allow\n// tree-shaking on each api instance.\nimport { context } from './context-api';\nimport { diag } from './diag-api';\nimport { metrics } from './metrics-api';\nimport { propagation } from './propagation-api';\nimport { trace } from './trace-api';\n\n// Named export.\nexport { context, diag, metrics, propagation, trace };\n// Default export.\nexport default {\n  context,\n  diag,\n  metrics,\n  propagation,\n  trace,\n};\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Context, createContextKey } from '@opentelemetry/api';\n\nconst SUPPRESS_TRACING_KEY = createContextKey(\n  'OpenTelemetry SDK Context Key SUPPRESS_TRACING'\n);\n\nexport function suppressTracing(context: Context): Context {\n  return context.setValue(SUPPRESS_TRACING_KEY, true);\n}\n\nexport function unsuppressTracing(context: Context): Context {\n  return context.deleteValue(SUPPRESS_TRACING_KEY);\n}\n\nexport function isTracingSuppressed(context: Context): boolean {\n  return context.getValue(SUPPRESS_TRACING_KEY) === true;\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport const BAGGAGE_KEY_PAIR_SEPARATOR = '=';\nexport const BAGGAGE_PROPERTIES_SEPARATOR = ';';\nexport const BAGGAGE_ITEMS_SEPARATOR = ',';\n\n// Name of the http header used to propagate the baggage\nexport const BAGGAGE_HEADER = 'baggage';\n// Maximum number of name-value pairs allowed by w3c spec\nexport const BAGGAGE_MAX_NAME_VALUE_PAIRS = 180;\n// Maximum number of bytes per a single name-value pair allowed by w3c spec\nexport const BAGGAGE_MAX_PER_NAME_VALUE_PAIRS = 4096;\n// Maximum total length of all name-value pairs allowed by w3c spec\nexport const BAGGAGE_MAX_TOTAL_LENGTH = 8192;\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport {\n  Baggage,\n  BaggageEntryMetadata,\n  baggageEntryMetadataFromString,\n} from '@opentelemetry/api';\nimport {\n  BAGGAGE_ITEMS_SEPARATOR,\n  BAGGAGE_PROPERTIES_SEPARATOR,\n  BAGGAGE_KEY_PAIR_SEPARATOR,\n  BAGGAGE_MAX_TOTAL_LENGTH,\n} from './constants';\n\ntype ParsedBaggageKeyValue = {\n  key: string;\n  value: string;\n  metadata: BaggageEntryMetadata | undefined;\n};\n\nexport function serializeKeyPairs(keyPairs: string[]): string {\n  return keyPairs.reduce((hValue: string, current: string) => {\n    const value = `${hValue}${\n      hValue !== '' ? BAGGAGE_ITEMS_SEPARATOR : ''\n    }${current}`;\n    return value.length > BAGGAGE_MAX_TOTAL_LENGTH ? hValue : value;\n  }, '');\n}\n\nexport function getKeyPairs(baggage: Baggage): string[] {\n  return baggage.getAllEntries().map(([key, value]) => {\n    let entry = `${encodeURIComponent(key)}=${encodeURIComponent(value.value)}`;\n\n    // include opaque metadata if provided\n    // NOTE: we intentionally don't URI-encode the metadata - that responsibility falls on the metadata implementation\n    if (value.metadata !== undefined) {\n      entry += BAGGAGE_PROPERTIES_SEPARATOR + value.metadata.toString();\n    }\n\n    return entry;\n  });\n}\n\nexport function parsePairKeyValue(\n  entry: string\n): ParsedBaggageKeyValue | undefined {\n  const valueProps = entry.split(BAGGAGE_PROPERTIES_SEPARATOR);\n  if (valueProps.length <= 0) return;\n  const keyPairPart = valueProps.shift();\n  if (!keyPairPart) return;\n  const separatorIndex = keyPairPart.indexOf(BAGGAGE_KEY_PAIR_SEPARATOR);\n  if (separatorIndex <= 0) return;\n  const key = decodeURIComponent(\n    keyPairPart.substring(0, separatorIndex).trim()\n  );\n  const value = decodeURIComponent(\n    keyPairPart.substring(separatorIndex + 1).trim()\n  );\n  let metadata;\n  if (valueProps.length > 0) {\n    metadata = baggageEntryMetadataFromString(\n      valueProps.join(BAGGAGE_PROPERTIES_SEPARATOR)\n    );\n  }\n  return { key, value, metadata };\n}\n\n/**\n * Parse a string serialized in the baggage HTTP Format (without metadata):\n * https://github.com/w3c/baggage/blob/master/baggage/HTTP_HEADER_FORMAT.md\n */\nexport function parseKeyPairsIntoRecord(\n  value?: string\n): Record<string, string> {\n  const result: Record<string, string> = {};\n\n  if (typeof value === 'string' && value.length > 0) {\n    value.split(BAGGAGE_ITEMS_SEPARATOR).forEach(entry => {\n      const keyPair = parsePairKeyValue(entry);\n\n      if (keyPair !== undefined && keyPair.value.length > 0) {\n        result[keyPair.key] = keyPair.value;\n      }\n    });\n  }\n\n  return result;\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  BaggageEntry,\n  Context,\n  propagation,\n  TextMapGetter,\n  TextMapPropagator,\n  TextMapSetter,\n} from '@opentelemetry/api';\n\nimport { isTracingSuppressed } from '../../trace/suppress-tracing';\nimport {\n  BAGGAGE_HEADER,\n  BAGGAGE_ITEMS_SEPARATOR,\n  BAGGAGE_MAX_NAME_VALUE_PAIRS,\n  BAGGAGE_MAX_PER_NAME_VALUE_PAIRS,\n} from '../constants';\nimport { getKeyPairs, parsePairKeyValue, serializeKeyPairs } from '../utils';\n\n/**\n * Propagates {@link Baggage} through Context format propagation.\n *\n * Based on the Baggage specification:\n * https://w3c.github.io/baggage/\n */\nexport class W3CBaggagePropagator implements TextMapPropagator {\n  inject(context: Context, carrier: unknown, setter: TextMapSetter): void {\n    const baggage = propagation.getBaggage(context);\n    if (!baggage || isTracingSuppressed(context)) return;\n    const keyPairs = getKeyPairs(baggage)\n      .filter((pair: string) => {\n        return pair.length <= BAGGAGE_MAX_PER_NAME_VALUE_PAIRS;\n      })\n      .slice(0, BAGGAGE_MAX_NAME_VALUE_PAIRS);\n    const headerValue = serializeKeyPairs(keyPairs);\n    if (headerValue.length > 0) {\n      setter.set(carrier, BAGGAGE_HEADER, headerValue);\n    }\n  }\n\n  extract(context: Context, carrier: unknown, getter: TextMapGetter): Context {\n    const headerValue = getter.get(carrier, BAGGAGE_HEADER);\n    const baggageString = Array.isArray(headerValue)\n      ? headerValue.join(BAGGAGE_ITEMS_SEPARATOR)\n      : headerValue;\n    if (!baggageString) return context;\n    const baggage: Record<string, BaggageEntry> = {};\n    if (baggageString.length === 0) {\n      return context;\n    }\n    const pairs = baggageString.split(BAGGAGE_ITEMS_SEPARATOR);\n    pairs.forEach(entry => {\n      const keyPair = parsePairKeyValue(entry);\n      if (keyPair) {\n        const baggageEntry: BaggageEntry = { value: keyPair.value };\n        if (keyPair.metadata) {\n          baggageEntry.metadata = keyPair.metadata;\n        }\n        baggage[keyPair.key] = baggageEntry;\n      }\n    });\n    if (Object.entries(baggage).length === 0) {\n      return context;\n    }\n    return propagation.setBaggage(context, propagation.createBaggage(baggage));\n  }\n\n  fields(): string[] {\n    return [BAGGAGE_HEADER];\n  }\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface Clock {\n  /**\n   * Return the current time in milliseconds from some epoch such as the Unix epoch or process start\n   */\n  now(): number;\n}\n\n/**\n * A utility for returning wall times anchored to a given point in time. Wall time measurements will\n * not be taken from the system, but instead are computed by adding a monotonic clock time\n * to the anchor point.\n *\n * This is needed because the system time can change and result in unexpected situations like\n * spans ending before they are started. Creating an anchored clock for each local root span\n * ensures that span timings and durations are accurate while preventing span times from drifting\n * too far from the system clock.\n *\n * Only creating an anchored clock once per local trace ensures span times are correct relative\n * to each other. For example, a child span will never have a start time before its parent even\n * if the system clock is corrected during the local trace.\n *\n * Heavily inspired by the OTel Java anchored clock\n * https://github.com/open-telemetry/opentelemetry-java/blob/main/sdk/trace/src/main/java/io/opentelemetry/sdk/trace/AnchoredClock.java\n */\nexport class AnchoredClock implements Clock {\n  private _monotonicClock: Clock;\n  private _epochMillis: number;\n  private _performanceMillis: number;\n\n  /**\n   * Create a new AnchoredClock anchored to the current time returned by systemClock.\n   *\n   * @param systemClock should be a clock that returns the number of milliseconds since January 1 1970 such as Date\n   * @param monotonicClock should be a clock that counts milliseconds monotonically such as window.performance or perf_hooks.performance\n   */\n  public constructor(systemClock: Clock, monotonicClock: Clock) {\n    this._monotonicClock = monotonicClock;\n    this._epochMillis = systemClock.now();\n    this._performanceMillis = monotonicClock.now();\n  }\n\n  /**\n   * Returns the current time by adding the number of milliseconds since the\n   * AnchoredClock was created to the creation epoch time\n   */\n  public now(): number {\n    const delta = this._monotonicClock.now() - this._performanceMillis;\n    return this._epochMillis + delta;\n  }\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { diag, AttributeValue, Attributes } from '@opentelemetry/api';\n\nexport function sanitizeAttributes(attributes: unknown): Attributes {\n  const out: Attributes = {};\n\n  if (typeof attributes !== 'object' || attributes == null) {\n    return out;\n  }\n\n  for (const key in attributes) {\n    if (!Object.prototype.hasOwnProperty.call(attributes, key)) {\n      continue;\n    }\n    if (!isAttributeKey(key)) {\n      diag.warn(`Invalid attribute key: ${key}`);\n      continue;\n    }\n    const val = (attributes as Record<string, unknown>)[key];\n    if (!isAttributeValue(val)) {\n      diag.warn(`Invalid attribute value set for key: ${key}`);\n      continue;\n    }\n    if (Array.isArray(val)) {\n      out[key] = val.slice();\n    } else {\n      out[key] = val;\n    }\n  }\n\n  return out;\n}\n\nexport function isAttributeKey(key: unknown): key is string {\n  return typeof key === 'string' && key !== '';\n}\n\nexport function isAttributeValue(val: unknown): val is AttributeValue {\n  if (val == null) {\n    return true;\n  }\n\n  if (Array.isArray(val)) {\n    return isHomogeneousAttributeValueArray(val);\n  }\n\n  return isValidPrimitiveAttributeValueType(typeof val);\n}\n\nfunction isHomogeneousAttributeValueArray(arr: unknown[]): boolean {\n  let type: string | undefined;\n\n  for (const element of arr) {\n    // null/undefined elements are allowed\n    if (element == null) continue;\n    const elementType = typeof element;\n\n    if (elementType === type) {\n      continue;\n    }\n\n    if (!type) {\n      if (isValidPrimitiveAttributeValueType(elementType)) {\n        type = elementType;\n        continue;\n      }\n      // encountered an invalid primitive\n      return false;\n    }\n\n    return false;\n  }\n\n  return true;\n}\n\nfunction isValidPrimitiveAttributeValueType(valType: string): boolean {\n  switch (valType) {\n    case 'number':\n    case 'boolean':\n    case 'string':\n      return true;\n  }\n\n  return false;\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { diag, Exception } from '@opentelemetry/api';\nimport { ErrorHandler } from './types';\n\n/**\n * Returns a function that logs an error using the provided logger, or a\n * console logger if one was not provided.\n */\nexport function loggingErrorHandler(): ErrorHandler {\n  return (ex: Exception) => {\n    diag.error(stringifyException(ex));\n  };\n}\n\n/**\n * Converts an exception into a string representation\n * @param {Exception} ex\n */\nfunction stringifyException(ex: Exception | string): string {\n  if (typeof ex === 'string') {\n    return ex;\n  } else {\n    return JSON.stringify(flattenException(ex));\n  }\n}\n\n/**\n * Flattens an exception into key-value pairs by traversing the prototype chain\n * and coercing values to strings. Duplicate properties will not be overwritten;\n * the first insert wins.\n */\nfunction flattenException(ex: Exception): Record<string, string> {\n  const result = {} as Record<string, string>;\n  let current = ex;\n\n  while (current !== null) {\n    Object.getOwnPropertyNames(current).forEach(propertyName => {\n      if (result[propertyName]) return;\n      const value = current[propertyName as keyof typeof current];\n      if (value) {\n        result[propertyName] = String(value);\n      }\n    });\n    current = Object.getPrototypeOf(current);\n  }\n\n  return result;\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Exception } from '@opentelemetry/api';\nimport { loggingErrorHandler } from './logging-error-handler';\nimport { ErrorHandler } from './types';\n\n/** The global error handler delegate */\nlet delegateHandler = loggingErrorHandler();\n\n/**\n * Set the global error handler\n * @param {ErrorHandler} handler\n */\nexport function setGlobalErrorHandler(handler: ErrorHandler): void {\n  delegateHandler = handler;\n}\n\n/**\n * Return the global error handler\n * @param {Exception} ex\n */\nexport function globalErrorHandler(ex: Exception): void {\n  try {\n    delegateHandler(ex);\n  } catch {} // eslint-disable-line no-empty\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { diag } from '@opentelemetry/api';\nimport { inspect } from 'util';\n\n/**\n * Retrieves a number from an environment variable.\n * - Returns `undefined` if the environment variable is empty, unset, contains only whitespace, or is not a number.\n * - Returns a number in all other cases.\n *\n * @param {string} key - The name of the environment variable to retrieve.\n * @returns {number | undefined} - The number value or `undefined`.\n */\nexport function getNumberFromEnv(key: string): number | undefined {\n  const raw = process.env[key];\n  if (raw == null || raw.trim() === '') {\n    return undefined;\n  }\n\n  const value = Number(raw);\n  if (isNaN(value)) {\n    diag.warn(\n      `Unknown value ${inspect(raw)} for ${key}, expected a number, using defaults`\n    );\n    return undefined;\n  }\n\n  return value;\n}\n\n/**\n * Retrieves a string from an environment variable.\n * - Returns `undefined` if the environment variable is empty, unset, or contains only whitespace.\n *\n * @param {string} key - The name of the environment variable to retrieve.\n * @returns {string | undefined} - The string value or `undefined`.\n */\nexport function getStringFromEnv(key: string): string | undefined {\n  const raw = process.env[key];\n  if (raw == null || raw.trim() === '') {\n    return undefined;\n  }\n  return raw;\n}\n\n/**\n * Retrieves a boolean value from an environment variable.\n * - Trims leading and trailing whitespace and ignores casing.\n * - Returns `false` if the environment variable is empty, unset, or contains only whitespace.\n * - Returns `false` for strings that cannot be mapped to a boolean.\n *\n * @param {string} key - The name of the environment variable to retrieve.\n * @returns {boolean} - The boolean value or `false` if the environment variable is unset empty, unset, or contains only whitespace.\n */\nexport function getBooleanFromEnv(key: string): boolean {\n  const raw = process.env[key]?.trim().toLowerCase();\n  if (raw == null || raw === '') {\n    // NOTE: falling back to `false` instead of `undefined` as required by the specification.\n    // If you have a use-case that requires `undefined`, consider using `getStringFromEnv()` and applying the necessary\n    // normalizations in the consuming code.\n    return false;\n  }\n  if (raw === 'true') {\n    return true;\n  } else if (raw === 'false') {\n    return false;\n  } else {\n    diag.warn(\n      `Unknown value ${inspect(raw)} for ${key}, expected 'true' or 'false', falling back to 'false' (default)`\n    );\n    return false;\n  }\n}\n\n/**\n * Retrieves a list of strings from an environment variable.\n * - Uses ',' as the delimiter.\n * - Trims leading and trailing whitespace from each entry.\n * - Excludes empty entries.\n * - Returns `undefined` if the environment variable is empty or contains only whitespace.\n * - Returns an empty array if all entries are empty or whitespace.\n *\n * @param {string} key - The name of the environment variable to retrieve.\n * @returns {string[] | undefined} - The list of strings or `undefined`.\n */\nexport function getStringListFromEnv(key: string): string[] | undefined {\n  return getStringFromEnv(key)\n    ?.split(',')\n    .map(v => v.trim())\n    .filter(s => s !== '');\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** only globals that common to node and browsers are allowed */\n// eslint-disable-next-line n/no-unsupported-features/es-builtins\nexport const _globalThis = typeof globalThis === 'object' ? globalThis : global;\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { performance } from 'perf_hooks';\n\nexport const otperformance: { now(): number; readonly timeOrigin: number } =\n  performance;\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// this is autogenerated file, see scripts/version-update.js\nexport const VERSION = '2.2.0';\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Creates a const map from the given values\n * @param values - An array of values to be used as keys and values in the map.\n * @returns A populated version of the map with the values and keys derived from the values.\n */\n/*#__NO_SIDE_EFFECTS__*/\nexport function createConstMap<T>(values: Array<T[keyof T]>): T {\n  // eslint-disable-next-line prefer-const, @typescript-eslint/no-explicit-any\n  let res: any = {};\n  const len = values.length;\n  for (let lp = 0; lp < len; lp++) {\n    const val = values[lp];\n    if (val) {\n      res[String(val).toUpperCase().replace(/[-.]/g, '_')] = val;\n    }\n  }\n\n  return res as T;\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createConstMap } from '../internal/utils';\n\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates//templates/SemanticAttributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n\n//----------------------------------------------------------------------------------------------------------\n// Constant values for SemanticAttributes\n//----------------------------------------------------------------------------------------------------------\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_AWS_LAMBDA_INVOKED_ARN = 'aws.lambda.invoked_arn';\nconst TMP_DB_SYSTEM = 'db.system';\nconst TMP_DB_CONNECTION_STRING = 'db.connection_string';\nconst TMP_DB_USER = 'db.user';\nconst TMP_DB_JDBC_DRIVER_CLASSNAME = 'db.jdbc.driver_classname';\nconst TMP_DB_NAME = 'db.name';\nconst TMP_DB_STATEMENT = 'db.statement';\nconst TMP_DB_OPERATION = 'db.operation';\nconst TMP_DB_MSSQL_INSTANCE_NAME = 'db.mssql.instance_name';\nconst TMP_DB_CASSANDRA_KEYSPACE = 'db.cassandra.keyspace';\nconst TMP_DB_CASSANDRA_PAGE_SIZE = 'db.cassandra.page_size';\nconst TMP_DB_CASSANDRA_CONSISTENCY_LEVEL = 'db.cassandra.consistency_level';\nconst TMP_DB_CASSANDRA_TABLE = 'db.cassandra.table';\nconst TMP_DB_CASSANDRA_IDEMPOTENCE = 'db.cassandra.idempotence';\nconst TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT =\n  'db.cassandra.speculative_execution_count';\nconst TMP_DB_CASSANDRA_COORDINATOR_ID = 'db.cassandra.coordinator.id';\nconst TMP_DB_CASSANDRA_COORDINATOR_DC = 'db.cassandra.coordinator.dc';\nconst TMP_DB_HBASE_NAMESPACE = 'db.hbase.namespace';\nconst TMP_DB_REDIS_DATABASE_INDEX = 'db.redis.database_index';\nconst TMP_DB_MONGODB_COLLECTION = 'db.mongodb.collection';\nconst TMP_DB_SQL_TABLE = 'db.sql.table';\nconst TMP_EXCEPTION_TYPE = 'exception.type';\nconst TMP_EXCEPTION_MESSAGE = 'exception.message';\nconst TMP_EXCEPTION_STACKTRACE = 'exception.stacktrace';\nconst TMP_EXCEPTION_ESCAPED = 'exception.escaped';\nconst TMP_FAAS_TRIGGER = 'faas.trigger';\nconst TMP_FAAS_EXECUTION = 'faas.execution';\nconst TMP_FAAS_DOCUMENT_COLLECTION = 'faas.document.collection';\nconst TMP_FAAS_DOCUMENT_OPERATION = 'faas.document.operation';\nconst TMP_FAAS_DOCUMENT_TIME = 'faas.document.time';\nconst TMP_FAAS_DOCUMENT_NAME = 'faas.document.name';\nconst TMP_FAAS_TIME = 'faas.time';\nconst TMP_FAAS_CRON = 'faas.cron';\nconst TMP_FAAS_COLDSTART = 'faas.coldstart';\nconst TMP_FAAS_INVOKED_NAME = 'faas.invoked_name';\nconst TMP_FAAS_INVOKED_PROVIDER = 'faas.invoked_provider';\nconst TMP_FAAS_INVOKED_REGION = 'faas.invoked_region';\nconst TMP_NET_TRANSPORT = 'net.transport';\nconst TMP_NET_PEER_IP = 'net.peer.ip';\nconst TMP_NET_PEER_PORT = 'net.peer.port';\nconst TMP_NET_PEER_NAME = 'net.peer.name';\nconst TMP_NET_HOST_IP = 'net.host.ip';\nconst TMP_NET_HOST_PORT = 'net.host.port';\nconst TMP_NET_HOST_NAME = 'net.host.name';\nconst TMP_NET_HOST_CONNECTION_TYPE = 'net.host.connection.type';\nconst TMP_NET_HOST_CONNECTION_SUBTYPE = 'net.host.connection.subtype';\nconst TMP_NET_HOST_CARRIER_NAME = 'net.host.carrier.name';\nconst TMP_NET_HOST_CARRIER_MCC = 'net.host.carrier.mcc';\nconst TMP_NET_HOST_CARRIER_MNC = 'net.host.carrier.mnc';\nconst TMP_NET_HOST_CARRIER_ICC = 'net.host.carrier.icc';\nconst TMP_PEER_SERVICE = 'peer.service';\nconst TMP_ENDUSER_ID = 'enduser.id';\nconst TMP_ENDUSER_ROLE = 'enduser.role';\nconst TMP_ENDUSER_SCOPE = 'enduser.scope';\nconst TMP_THREAD_ID = 'thread.id';\nconst TMP_THREAD_NAME = 'thread.name';\nconst TMP_CODE_FUNCTION = 'code.function';\nconst TMP_CODE_NAMESPACE = 'code.namespace';\nconst TMP_CODE_FILEPATH = 'code.filepath';\nconst TMP_CODE_LINENO = 'code.lineno';\nconst TMP_HTTP_METHOD = 'http.method';\nconst TMP_HTTP_URL = 'http.url';\nconst TMP_HTTP_TARGET = 'http.target';\nconst TMP_HTTP_HOST = 'http.host';\nconst TMP_HTTP_SCHEME = 'http.scheme';\nconst TMP_HTTP_STATUS_CODE = 'http.status_code';\nconst TMP_HTTP_FLAVOR = 'http.flavor';\nconst TMP_HTTP_USER_AGENT = 'http.user_agent';\nconst TMP_HTTP_REQUEST_CONTENT_LENGTH = 'http.request_content_length';\nconst TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED =\n  'http.request_content_length_uncompressed';\nconst TMP_HTTP_RESPONSE_CONTENT_LENGTH = 'http.response_content_length';\nconst TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED =\n  'http.response_content_length_uncompressed';\nconst TMP_HTTP_SERVER_NAME = 'http.server_name';\nconst TMP_HTTP_ROUTE = 'http.route';\nconst TMP_HTTP_CLIENT_IP = 'http.client_ip';\nconst TMP_AWS_DYNAMODB_TABLE_NAMES = 'aws.dynamodb.table_names';\nconst TMP_AWS_DYNAMODB_CONSUMED_CAPACITY = 'aws.dynamodb.consumed_capacity';\nconst TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS =\n  'aws.dynamodb.item_collection_metrics';\nconst TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY =\n  'aws.dynamodb.provisioned_read_capacity';\nconst TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY =\n  'aws.dynamodb.provisioned_write_capacity';\nconst TMP_AWS_DYNAMODB_CONSISTENT_READ = 'aws.dynamodb.consistent_read';\nconst TMP_AWS_DYNAMODB_PROJECTION = 'aws.dynamodb.projection';\nconst TMP_AWS_DYNAMODB_LIMIT = 'aws.dynamodb.limit';\nconst TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET = 'aws.dynamodb.attributes_to_get';\nconst TMP_AWS_DYNAMODB_INDEX_NAME = 'aws.dynamodb.index_name';\nconst TMP_AWS_DYNAMODB_SELECT = 'aws.dynamodb.select';\nconst TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES =\n  'aws.dynamodb.global_secondary_indexes';\nconst TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES =\n  'aws.dynamodb.local_secondary_indexes';\nconst TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE =\n  'aws.dynamodb.exclusive_start_table';\nconst TMP_AWS_DYNAMODB_TABLE_COUNT = 'aws.dynamodb.table_count';\nconst TMP_AWS_DYNAMODB_SCAN_FORWARD = 'aws.dynamodb.scan_forward';\nconst TMP_AWS_DYNAMODB_SEGMENT = 'aws.dynamodb.segment';\nconst TMP_AWS_DYNAMODB_TOTAL_SEGMENTS = 'aws.dynamodb.total_segments';\nconst TMP_AWS_DYNAMODB_COUNT = 'aws.dynamodb.count';\nconst TMP_AWS_DYNAMODB_SCANNED_COUNT = 'aws.dynamodb.scanned_count';\nconst TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS =\n  'aws.dynamodb.attribute_definitions';\nconst TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES =\n  'aws.dynamodb.global_secondary_index_updates';\nconst TMP_MESSAGING_SYSTEM = 'messaging.system';\nconst TMP_MESSAGING_DESTINATION = 'messaging.destination';\nconst TMP_MESSAGING_DESTINATION_KIND = 'messaging.destination_kind';\nconst TMP_MESSAGING_TEMP_DESTINATION = 'messaging.temp_destination';\nconst TMP_MESSAGING_PROTOCOL = 'messaging.protocol';\nconst TMP_MESSAGING_PROTOCOL_VERSION = 'messaging.protocol_version';\nconst TMP_MESSAGING_URL = 'messaging.url';\nconst TMP_MESSAGING_MESSAGE_ID = 'messaging.message_id';\nconst TMP_MESSAGING_CONVERSATION_ID = 'messaging.conversation_id';\nconst TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES =\n  'messaging.message_payload_size_bytes';\nconst TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES =\n  'messaging.message_payload_compressed_size_bytes';\nconst TMP_MESSAGING_OPERATION = 'messaging.operation';\nconst TMP_MESSAGING_CONSUMER_ID = 'messaging.consumer_id';\nconst TMP_MESSAGING_RABBITMQ_ROUTING_KEY = 'messaging.rabbitmq.routing_key';\nconst TMP_MESSAGING_KAFKA_MESSAGE_KEY = 'messaging.kafka.message_key';\nconst TMP_MESSAGING_KAFKA_CONSUMER_GROUP = 'messaging.kafka.consumer_group';\nconst TMP_MESSAGING_KAFKA_CLIENT_ID = 'messaging.kafka.client_id';\nconst TMP_MESSAGING_KAFKA_PARTITION = 'messaging.kafka.partition';\nconst TMP_MESSAGING_KAFKA_TOMBSTONE = 'messaging.kafka.tombstone';\nconst TMP_RPC_SYSTEM = 'rpc.system';\nconst TMP_RPC_SERVICE = 'rpc.service';\nconst TMP_RPC_METHOD = 'rpc.method';\nconst TMP_RPC_GRPC_STATUS_CODE = 'rpc.grpc.status_code';\nconst TMP_RPC_JSONRPC_VERSION = 'rpc.jsonrpc.version';\nconst TMP_RPC_JSONRPC_REQUEST_ID = 'rpc.jsonrpc.request_id';\nconst TMP_RPC_JSONRPC_ERROR_CODE = 'rpc.jsonrpc.error_code';\nconst TMP_RPC_JSONRPC_ERROR_MESSAGE = 'rpc.jsonrpc.error_message';\nconst TMP_MESSAGE_TYPE = 'message.type';\nconst TMP_MESSAGE_ID = 'message.id';\nconst TMP_MESSAGE_COMPRESSED_SIZE = 'message.compressed_size';\nconst TMP_MESSAGE_UNCOMPRESSED_SIZE = 'message.uncompressed_size';\n\n/**\n * The full invoked ARN as provided on the `Context` passed to the function (`Lambda-Runtime-Invoked-Function-Arn` header on the `/runtime/invocation/next` applicable).\n *\n * Note: This may be different from `faas.id` if an alias is involved.\n *\n * @deprecated Use ATTR_AWS_LAMBDA_INVOKED_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_LAMBDA_INVOKED_ARN = TMP_AWS_LAMBDA_INVOKED_ARN;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use ATTR_DB_SYSTEM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_SYSTEM = TMP_DB_SYSTEM;\n\n/**\n * The connection string used to connect to the database. It is recommended to remove embedded credentials.\n *\n * @deprecated Use ATTR_DB_CONNECTION_STRING in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_CONNECTION_STRING = TMP_DB_CONNECTION_STRING;\n\n/**\n * Username for accessing the database.\n *\n * @deprecated Use ATTR_DB_USER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_USER = TMP_DB_USER;\n\n/**\n * The fully-qualified class name of the [Java Database Connectivity (JDBC)](https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/) driver used to connect.\n *\n * @deprecated Use ATTR_DB_JDBC_DRIVER_CLASSNAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_JDBC_DRIVER_CLASSNAME = TMP_DB_JDBC_DRIVER_CLASSNAME;\n\n/**\n * If no [tech-specific attribute](#call-level-attributes-for-specific-technologies) is defined, this attribute is used to report the name of the database being accessed. For commands that switch the database, this should be set to the target database (even if the command fails).\n *\n * Note: In some SQL databases, the database name to be used is called &#34;schema name&#34;.\n *\n * @deprecated Use ATTR_DB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_NAME = TMP_DB_NAME;\n\n/**\n * The database statement being executed.\n *\n * Note: The value may be sanitized to exclude sensitive information.\n *\n * @deprecated Use ATTR_DB_STATEMENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_STATEMENT = TMP_DB_STATEMENT;\n\n/**\n * The name of the operation being executed, e.g. the [MongoDB command name](https://docs.mongodb.com/manual/reference/command/#database-operations) such as `findAndModify`, or the SQL keyword.\n *\n * Note: When setting this to an SQL keyword, it is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if the operation name is provided by the library being instrumented. If the SQL statement has an ambiguous operation, or performs more than one operation, this value may be omitted.\n *\n * @deprecated Use ATTR_DB_OPERATION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_OPERATION = TMP_DB_OPERATION;\n\n/**\n * The Microsoft SQL Server [instance name](https://docs.microsoft.com/en-us/sql/connect/jdbc/building-the-connection-url?view=sql-server-ver15) connecting to. This name is used to determine the port of a named instance.\n *\n * Note: If setting a `db.mssql.instance_name`, `net.peer.port` is no longer required (but still recommended if non-standard).\n *\n * @deprecated Use ATTR_DB_MSSQL_INSTANCE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_MSSQL_INSTANCE_NAME = TMP_DB_MSSQL_INSTANCE_NAME;\n\n/**\n * The name of the keyspace being accessed. To be used instead of the generic `db.name` attribute.\n *\n * @deprecated Use ATTR_DB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_CASSANDRA_KEYSPACE = TMP_DB_CASSANDRA_KEYSPACE;\n\n/**\n * The fetch size used for paging, i.e. how many rows will be returned at once.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_PAGE_SIZE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_CASSANDRA_PAGE_SIZE = TMP_DB_CASSANDRA_PAGE_SIZE;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use ATTR_DB_CASSANDRA_CONSISTENCY_LEVEL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_CASSANDRA_CONSISTENCY_LEVEL =\n  TMP_DB_CASSANDRA_CONSISTENCY_LEVEL;\n\n/**\n * The name of the primary table that the operation is acting upon, including the schema name (if applicable).\n *\n * Note: This mirrors the db.sql.table attribute but references cassandra rather than sql. It is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if it is provided by the library being instrumented. If the operation is acting upon an anonymous table, or more than one table, this value MUST NOT be set.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_TABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_CASSANDRA_TABLE = TMP_DB_CASSANDRA_TABLE;\n\n/**\n * Whether or not the query is idempotent.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_IDEMPOTENCE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_CASSANDRA_IDEMPOTENCE = TMP_DB_CASSANDRA_IDEMPOTENCE;\n\n/**\n * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT =\n  TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT;\n\n/**\n * The ID of the coordinating node for a query.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_COORDINATOR_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_CASSANDRA_COORDINATOR_ID =\n  TMP_DB_CASSANDRA_COORDINATOR_ID;\n\n/**\n * The data center of the coordinating node for a query.\n *\n * @deprecated Use ATTR_DB_CASSANDRA_COORDINATOR_DC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_CASSANDRA_COORDINATOR_DC =\n  TMP_DB_CASSANDRA_COORDINATOR_DC;\n\n/**\n * The [HBase namespace](https://hbase.apache.org/book.html#_namespace) being accessed. To be used instead of the generic `db.name` attribute.\n *\n * @deprecated Use ATTR_DB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_HBASE_NAMESPACE = TMP_DB_HBASE_NAMESPACE;\n\n/**\n * The index of the database being accessed as used in the [`SELECT` command](https://redis.io/commands/select), provided as an integer. To be used instead of the generic `db.name` attribute.\n *\n * @deprecated Use ATTR_DB_REDIS_DATABASE_INDEX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_REDIS_DATABASE_INDEX = TMP_DB_REDIS_DATABASE_INDEX;\n\n/**\n * The collection being accessed within the database stated in `db.name`.\n *\n * @deprecated Use ATTR_DB_MONGODB_COLLECTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_MONGODB_COLLECTION = TMP_DB_MONGODB_COLLECTION;\n\n/**\n * The name of the primary table that the operation is acting upon, including the schema name (if applicable).\n *\n * Note: It is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if it is provided by the library being instrumented. If the operation is acting upon an anonymous table, or more than one table, this value MUST NOT be set.\n *\n * @deprecated Use ATTR_DB_SQL_TABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_DB_SQL_TABLE = TMP_DB_SQL_TABLE;\n\n/**\n * The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it.\n *\n * @deprecated Use ATTR_EXCEPTION_TYPE.\n */\nexport const SEMATTRS_EXCEPTION_TYPE = TMP_EXCEPTION_TYPE;\n\n/**\n * The exception message.\n *\n * @deprecated Use ATTR_EXCEPTION_MESSAGE.\n */\nexport const SEMATTRS_EXCEPTION_MESSAGE = TMP_EXCEPTION_MESSAGE;\n\n/**\n * A stacktrace as a string in the natural representation for the language runtime. The representation is to be determined and documented by each language SIG.\n *\n * @deprecated Use ATTR_EXCEPTION_STACKTRACE.\n */\nexport const SEMATTRS_EXCEPTION_STACKTRACE = TMP_EXCEPTION_STACKTRACE;\n\n/**\n* SHOULD be set to true if the exception event is recorded at a point where it is known that the exception is escaping the scope of the span.\n*\n* Note: An exception is considered to have escaped (or left) the scope of a span,\nif that span is ended while the exception is still logically &#34;in flight&#34;.\nThis may be actually &#34;in flight&#34; in some languages (e.g. if the exception\nis passed to a Context manager&#39;s `__exit__` method in Python) but will\nusually be caught at the point of recording the exception in most languages.\n\nIt is usually not possible to determine at the point where an exception is thrown\nwhether it will escape the scope of a span.\nHowever, it is trivial to know that an exception\nwill escape, if one checks for an active exception just before ending the span,\nas done in the [example above](#exception-end-example).\n\nIt follows that an exception may still escape the scope of the span\neven if the `exception.escaped` attribute was not set or set to false,\nsince the event might have been recorded at a time where it was not\nclear whether the exception will escape.\n*\n* @deprecated Use ATTR_EXCEPTION_ESCAPED.\n*/\nexport const SEMATTRS_EXCEPTION_ESCAPED = TMP_EXCEPTION_ESCAPED;\n\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use ATTR_FAAS_TRIGGER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_TRIGGER = TMP_FAAS_TRIGGER;\n\n/**\n * The execution ID of the current function execution.\n *\n * @deprecated Use ATTR_FAAS_INVOCATION_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_EXECUTION = TMP_FAAS_EXECUTION;\n\n/**\n * The name of the source on which the triggering operation was performed. For example, in Cloud Storage or S3 corresponds to the bucket name, and in Cosmos DB to the database name.\n *\n * @deprecated Use ATTR_FAAS_DOCUMENT_COLLECTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_DOCUMENT_COLLECTION = TMP_FAAS_DOCUMENT_COLLECTION;\n\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @deprecated Use ATTR_FAAS_DOCUMENT_OPERATION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_DOCUMENT_OPERATION = TMP_FAAS_DOCUMENT_OPERATION;\n\n/**\n * A string containing the time when the data was accessed in the [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime).\n *\n * @deprecated Use ATTR_FAAS_DOCUMENT_TIME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_DOCUMENT_TIME = TMP_FAAS_DOCUMENT_TIME;\n\n/**\n * The document name/table subjected to the operation. For example, in Cloud Storage or S3 is the name of the file, and in Cosmos DB the table name.\n *\n * @deprecated Use ATTR_FAAS_DOCUMENT_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_DOCUMENT_NAME = TMP_FAAS_DOCUMENT_NAME;\n\n/**\n * A string containing the function invocation time in the [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime).\n *\n * @deprecated Use ATTR_FAAS_TIME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_TIME = TMP_FAAS_TIME;\n\n/**\n * A string containing the schedule period as [Cron Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm).\n *\n * @deprecated Use ATTR_FAAS_CRON in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_CRON = TMP_FAAS_CRON;\n\n/**\n * A boolean that is true if the serverless function is executed for the first time (aka cold-start).\n *\n * @deprecated Use ATTR_FAAS_COLDSTART in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_COLDSTART = TMP_FAAS_COLDSTART;\n\n/**\n * The name of the invoked function.\n *\n * Note: SHOULD be equal to the `faas.name` resource attribute of the invoked function.\n *\n * @deprecated Use ATTR_FAAS_INVOKED_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_INVOKED_NAME = TMP_FAAS_INVOKED_NAME;\n\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use ATTR_FAAS_INVOKED_PROVIDER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_INVOKED_PROVIDER = TMP_FAAS_INVOKED_PROVIDER;\n\n/**\n * The cloud region of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.region` resource attribute of the invoked function.\n *\n * @deprecated Use ATTR_FAAS_INVOKED_REGION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_FAAS_INVOKED_REGION = TMP_FAAS_INVOKED_REGION;\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use ATTR_NET_TRANSPORT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_TRANSPORT = TMP_NET_TRANSPORT;\n\n/**\n * Remote address of the peer (dotted decimal for IPv4 or [RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6).\n *\n * @deprecated Use ATTR_NET_PEER_IP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_PEER_IP = TMP_NET_PEER_IP;\n\n/**\n * Remote port number.\n *\n * @deprecated Use ATTR_NET_PEER_PORT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_PEER_PORT = TMP_NET_PEER_PORT;\n\n/**\n * Remote hostname or similar, see note below.\n *\n * @deprecated Use ATTR_NET_PEER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_PEER_NAME = TMP_NET_PEER_NAME;\n\n/**\n * Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.\n *\n * @deprecated Use ATTR_NET_HOST_IP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_HOST_IP = TMP_NET_HOST_IP;\n\n/**\n * Like `net.peer.port` but for the host port.\n *\n * @deprecated Use ATTR_NET_HOST_PORT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_HOST_PORT = TMP_NET_HOST_PORT;\n\n/**\n * Local hostname or similar, see note below.\n *\n * @deprecated Use ATTR_NET_HOST_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_HOST_NAME = TMP_NET_HOST_NAME;\n\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use ATTR_NETWORK_CONNECTION_TYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_HOST_CONNECTION_TYPE = TMP_NET_HOST_CONNECTION_TYPE;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use ATTR_NETWORK_CONNECTION_SUBTYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_HOST_CONNECTION_SUBTYPE =\n  TMP_NET_HOST_CONNECTION_SUBTYPE;\n\n/**\n * The name of the mobile carrier.\n *\n * @deprecated Use ATTR_NETWORK_CARRIER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_HOST_CARRIER_NAME = TMP_NET_HOST_CARRIER_NAME;\n\n/**\n * The mobile carrier country code.\n *\n * @deprecated Use ATTR_NETWORK_CARRIER_MCC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_HOST_CARRIER_MCC = TMP_NET_HOST_CARRIER_MCC;\n\n/**\n * The mobile carrier network code.\n *\n * @deprecated Use ATTR_NETWORK_CARRIER_MNC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_HOST_CARRIER_MNC = TMP_NET_HOST_CARRIER_MNC;\n\n/**\n * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network.\n *\n * @deprecated Use ATTR_NETWORK_CARRIER_ICC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_NET_HOST_CARRIER_ICC = TMP_NET_HOST_CARRIER_ICC;\n\n/**\n * The [`service.name`](../../resource/semantic_conventions/README.md#service) of the remote service. SHOULD be equal to the actual `service.name` resource attribute of the remote service if any.\n *\n * @deprecated Use ATTR_PEER_SERVICE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_PEER_SERVICE = TMP_PEER_SERVICE;\n\n/**\n * Username or client_id extracted from the access token or [Authorization](https://tools.ietf.org/html/rfc7235#section-4.2) header in the inbound request from outside the system.\n *\n * @deprecated Use ATTR_ENDUSER_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_ENDUSER_ID = TMP_ENDUSER_ID;\n\n/**\n * Actual/assumed role the client is making the request under extracted from token or application security context.\n *\n * @deprecated Use ATTR_ENDUSER_ROLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_ENDUSER_ROLE = TMP_ENDUSER_ROLE;\n\n/**\n * Scopes or granted authorities the client currently possesses extracted from token or application security context. The value would come from the scope associated with an [OAuth 2.0 Access Token](https://tools.ietf.org/html/rfc6749#section-3.3) or an attribute value in a [SAML 2.0 Assertion](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html).\n *\n * @deprecated Use ATTR_ENDUSER_SCOPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_ENDUSER_SCOPE = TMP_ENDUSER_SCOPE;\n\n/**\n * Current &#34;managed&#34; thread ID (as opposed to OS thread ID).\n *\n * @deprecated Use ATTR_THREAD_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_THREAD_ID = TMP_THREAD_ID;\n\n/**\n * Current thread name.\n *\n * @deprecated Use ATTR_THREAD_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_THREAD_NAME = TMP_THREAD_NAME;\n\n/**\n * The method or function name, or equivalent (usually rightmost part of the code unit&#39;s name).\n *\n * @deprecated Use ATTR_CODE_FUNCTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_CODE_FUNCTION = TMP_CODE_FUNCTION;\n\n/**\n * The &#34;namespace&#34; within which `code.function` is defined. Usually the qualified class or module name, such that `code.namespace` + some separator + `code.function` form a unique identifier for the code unit.\n *\n * @deprecated Use ATTR_CODE_NAMESPACE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_CODE_NAMESPACE = TMP_CODE_NAMESPACE;\n\n/**\n * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).\n *\n * @deprecated Use ATTR_CODE_FILEPATH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_CODE_FILEPATH = TMP_CODE_FILEPATH;\n\n/**\n * The line number in `code.filepath` best representing the operation. It SHOULD point within the code unit named in `code.function`.\n *\n * @deprecated Use ATTR_CODE_LINENO in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_CODE_LINENO = TMP_CODE_LINENO;\n\n/**\n * HTTP request method.\n *\n * @deprecated Use ATTR_HTTP_METHOD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_METHOD = TMP_HTTP_METHOD;\n\n/**\n * Full HTTP request URL in the form `scheme://host[:port]/path?query[#fragment]`. Usually the fragment is not transmitted over HTTP, but if it is known, it should be included nevertheless.\n *\n * Note: `http.url` MUST NOT contain credentials passed via URL in form of `https://username:password@www.example.com/`. In such case the attribute&#39;s value should be `https://www.example.com/`.\n *\n * @deprecated Use ATTR_HTTP_URL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_URL = TMP_HTTP_URL;\n\n/**\n * The full request target as passed in a HTTP request line or equivalent.\n *\n * @deprecated Use ATTR_HTTP_TARGET in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_TARGET = TMP_HTTP_TARGET;\n\n/**\n * The value of the [HTTP host header](https://tools.ietf.org/html/rfc7230#section-5.4). An empty Host header should also be reported, see note.\n *\n * Note: When the header is present but empty the attribute SHOULD be set to the empty string. Note that this is a valid situation that is expected in certain cases, according the aforementioned [section of RFC 7230](https://tools.ietf.org/html/rfc7230#section-5.4). When the header is not set the attribute MUST NOT be set.\n *\n * @deprecated Use ATTR_HTTP_HOST in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_HOST = TMP_HTTP_HOST;\n\n/**\n * The URI scheme identifying the used protocol.\n *\n * @deprecated Use ATTR_HTTP_SCHEME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_SCHEME = TMP_HTTP_SCHEME;\n\n/**\n * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).\n *\n * @deprecated Use ATTR_HTTP_STATUS_CODE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_STATUS_CODE = TMP_HTTP_STATUS_CODE;\n\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use ATTR_HTTP_FLAVOR in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_FLAVOR = TMP_HTTP_FLAVOR;\n\n/**\n * Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client.\n *\n * @deprecated Use ATTR_HTTP_USER_AGENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_USER_AGENT = TMP_HTTP_USER_AGENT;\n\n/**\n * The size of the request payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the [Content-Length](https://tools.ietf.org/html/rfc7230#section-3.3.2) header. For requests using transport encoding, this should be the compressed size.\n *\n * @deprecated Use ATTR_HTTP_REQUEST_CONTENT_LENGTH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH =\n  TMP_HTTP_REQUEST_CONTENT_LENGTH;\n\n/**\n * The size of the uncompressed request payload body after transport decoding. Not set if transport encoding not used.\n *\n * @deprecated Use ATTR_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED =\n  TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED;\n\n/**\n * The size of the response payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the [Content-Length](https://tools.ietf.org/html/rfc7230#section-3.3.2) header. For requests using transport encoding, this should be the compressed size.\n *\n * @deprecated Use ATTR_HTTP_RESPONSE_CONTENT_LENGTH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH =\n  TMP_HTTP_RESPONSE_CONTENT_LENGTH;\n\n/**\n * The size of the uncompressed response payload body after transport decoding. Not set if transport encoding not used.\n *\n * @deprecated Use ATTR_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED =\n  TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED;\n\n/**\n * The primary server name of the matched virtual host. This should be obtained via configuration. If no such configuration can be obtained, this attribute MUST NOT be set ( `net.host.name` should be used instead).\n *\n * Note: `http.url` is usually not readily available on the server side but would have to be assembled in a cumbersome and sometimes lossy process from other information (see e.g. open-telemetry/opentelemetry-python/pull/148). It is thus preferred to supply the raw data that is available.\n *\n * @deprecated Use ATTR_HTTP_SERVER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_HTTP_SERVER_NAME = TMP_HTTP_SERVER_NAME;\n\n/**\n * The matched route (path template).\n *\n * @deprecated Use ATTR_HTTP_ROUTE.\n */\nexport const SEMATTRS_HTTP_ROUTE = TMP_HTTP_ROUTE;\n\n/**\n* The IP address of the original client behind all proxies, if known (e.g. from [X-Forwarded-For](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For)).\n*\n* Note: This is not necessarily the same as `net.peer.ip`, which would\nidentify the network-level peer, which may be a proxy.\n\nThis attribute should be set when a source of information different\nfrom the one used for `net.peer.ip`, is available even if that other\nsource just confirms the same value as `net.peer.ip`.\nRationale: For `net.peer.ip`, one typically does not know if it\ncomes from a proxy, reverse proxy, or the actual client. Setting\n`http.client_ip` when it&#39;s the same as `net.peer.ip` means that\none is at least somewhat confident that the address is not that of\nthe closest proxy.\n*\n* @deprecated Use ATTR_HTTP_CLIENT_IP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n*/\nexport const SEMATTRS_HTTP_CLIENT_IP = TMP_HTTP_CLIENT_IP;\n\n/**\n * The keys in the `RequestItems` object field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_TABLE_NAMES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_TABLE_NAMES = TMP_AWS_DYNAMODB_TABLE_NAMES;\n\n/**\n * The JSON-serialized value of each item in the `ConsumedCapacity` response field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_CONSUMED_CAPACITY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY =\n  TMP_AWS_DYNAMODB_CONSUMED_CAPACITY;\n\n/**\n * The JSON-serialized value of the `ItemCollectionMetrics` response field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_ITEM_COLLECTION_METRICS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS =\n  TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS;\n\n/**\n * The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY =\n  TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY;\n\n/**\n * The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY =\n  TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY;\n\n/**\n * The value of the `ConsistentRead` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_CONSISTENT_READ in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ =\n  TMP_AWS_DYNAMODB_CONSISTENT_READ;\n\n/**\n * The value of the `ProjectionExpression` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_PROJECTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_PROJECTION = TMP_AWS_DYNAMODB_PROJECTION;\n\n/**\n * The value of the `Limit` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_LIMIT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_LIMIT = TMP_AWS_DYNAMODB_LIMIT;\n\n/**\n * The value of the `AttributesToGet` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_ATTRIBUTES_TO_GET in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_ATTRIBUTES_TO_GET =\n  TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET;\n\n/**\n * The value of the `IndexName` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_INDEX_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_INDEX_NAME = TMP_AWS_DYNAMODB_INDEX_NAME;\n\n/**\n * The value of the `Select` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_SELECT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_SELECT = TMP_AWS_DYNAMODB_SELECT;\n\n/**\n * The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES =\n  TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES;\n\n/**\n * The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES =\n  TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES;\n\n/**\n * The value of the `ExclusiveStartTableName` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_EXCLUSIVE_START_TABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE =\n  TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE;\n\n/**\n * The the number of items in the `TableNames` response parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_TABLE_COUNT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_TABLE_COUNT = TMP_AWS_DYNAMODB_TABLE_COUNT;\n\n/**\n * The value of the `ScanIndexForward` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_SCAN_FORWARD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD = TMP_AWS_DYNAMODB_SCAN_FORWARD;\n\n/**\n * The value of the `Segment` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_SEGMENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_SEGMENT = TMP_AWS_DYNAMODB_SEGMENT;\n\n/**\n * The value of the `TotalSegments` request parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_TOTAL_SEGMENTS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS =\n  TMP_AWS_DYNAMODB_TOTAL_SEGMENTS;\n\n/**\n * The value of the `Count` response parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_COUNT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_COUNT = TMP_AWS_DYNAMODB_COUNT;\n\n/**\n * The value of the `ScannedCount` response parameter.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_SCANNED_COUNT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT =\n  TMP_AWS_DYNAMODB_SCANNED_COUNT;\n\n/**\n * The JSON-serialized value of each item in the `AttributeDefinitions` request field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS =\n  TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS;\n\n/**\n * The JSON-serialized value of each item in the the `GlobalSecondaryIndexUpdates` request field.\n *\n * @deprecated Use ATTR_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES =\n  TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES;\n\n/**\n * A string identifying the messaging system.\n *\n * @deprecated Use ATTR_MESSAGING_SYSTEM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_SYSTEM = TMP_MESSAGING_SYSTEM;\n\n/**\n * The message destination name. This might be equal to the span name but is required nevertheless.\n *\n * @deprecated Use ATTR_MESSAGING_DESTINATION_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_DESTINATION = TMP_MESSAGING_DESTINATION;\n\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport const SEMATTRS_MESSAGING_DESTINATION_KIND =\n  TMP_MESSAGING_DESTINATION_KIND;\n\n/**\n * A boolean that is true if the message destination is temporary.\n *\n * @deprecated Use ATTR_MESSAGING_DESTINATION_TEMPORARY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_TEMP_DESTINATION =\n  TMP_MESSAGING_TEMP_DESTINATION;\n\n/**\n * The name of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_NAME.\n */\nexport const SEMATTRS_MESSAGING_PROTOCOL = TMP_MESSAGING_PROTOCOL;\n\n/**\n * The version of the transport protocol.\n *\n * @deprecated Use ATTR_NETWORK_PROTOCOL_VERSION.\n */\nexport const SEMATTRS_MESSAGING_PROTOCOL_VERSION =\n  TMP_MESSAGING_PROTOCOL_VERSION;\n\n/**\n * Connection string.\n *\n * @deprecated Removed in semconv v1.17.0.\n */\nexport const SEMATTRS_MESSAGING_URL = TMP_MESSAGING_URL;\n\n/**\n * A value used by the messaging system as an identifier for the message, represented as a string.\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_MESSAGE_ID = TMP_MESSAGING_MESSAGE_ID;\n\n/**\n * The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called &#34;Correlation ID&#34;.\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_CONVERSATION_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_CONVERSATION_ID = TMP_MESSAGING_CONVERSATION_ID;\n\n/**\n * The (uncompressed) size of the message payload in bytes. Also use this attribute if it is unknown whether the compressed or uncompressed payload size is reported.\n *\n * @deprecated Use ATTR_MESSAGING_MESSAGE_BODY_SIZE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES =\n  TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES;\n\n/**\n * The compressed size of the message payload in bytes.\n *\n * @deprecated Removed in semconv v1.22.0.\n */\nexport const SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES =\n  TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES;\n\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is &#34;send&#34;, this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n *\n * @deprecated Use ATTR_MESSAGING_OPERATION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_OPERATION = TMP_MESSAGING_OPERATION;\n\n/**\n * The identifier for the consumer receiving a message. For Kafka, set it to `{messaging.kafka.consumer_group} - {messaging.kafka.client_id}`, if both are present, or only `messaging.kafka.consumer_group`. For brokers, such as RabbitMQ and Artemis, set it to the `client_id` of the client consuming the message.\n *\n * @deprecated Removed in semconv v1.21.0.\n */\nexport const SEMATTRS_MESSAGING_CONSUMER_ID = TMP_MESSAGING_CONSUMER_ID;\n\n/**\n * RabbitMQ message routing key.\n *\n * @deprecated Use ATTR_MESSAGING_RABBITMQ_DESTINATION_ROUTING_KEY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY =\n  TMP_MESSAGING_RABBITMQ_ROUTING_KEY;\n\n/**\n * Message keys in Kafka are used for grouping alike messages to ensure they&#39;re processed on the same partition. They differ from `messaging.message_id` in that they&#39;re not unique. If the key is `null`, the attribute MUST NOT be set.\n *\n * Note: If the key type is not string, it&#39;s string representation has to be supplied for the attribute. If the key has no unambiguous, canonical string form, don&#39;t include its value.\n *\n * @deprecated Use ATTR_MESSAGING_KAFKA_MESSAGE_KEY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_KAFKA_MESSAGE_KEY =\n  TMP_MESSAGING_KAFKA_MESSAGE_KEY;\n\n/**\n * Name of the Kafka Consumer Group that is handling the message. Only applies to consumers, not producers.\n *\n * @deprecated Use ATTR_MESSAGING_KAFKA_CONSUMER_GROUP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_KAFKA_CONSUMER_GROUP =\n  TMP_MESSAGING_KAFKA_CONSUMER_GROUP;\n\n/**\n * Client Id for the Consumer or Producer that is handling the message.\n *\n * @deprecated Use ATTR_MESSAGING_CLIENT_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_KAFKA_CLIENT_ID = TMP_MESSAGING_KAFKA_CLIENT_ID;\n\n/**\n * Partition the message is sent to.\n *\n * @deprecated Use ATTR_MESSAGING_KAFKA_DESTINATION_PARTITION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_KAFKA_PARTITION = TMP_MESSAGING_KAFKA_PARTITION;\n\n/**\n * A boolean that is true if the message is a tombstone.\n *\n * @deprecated Use ATTR_MESSAGING_KAFKA_MESSAGE_TOMBSTONE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGING_KAFKA_TOMBSTONE = TMP_MESSAGING_KAFKA_TOMBSTONE;\n\n/**\n * A string identifying the remoting system.\n *\n * @deprecated Use ATTR_RPC_SYSTEM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_RPC_SYSTEM = TMP_RPC_SYSTEM;\n\n/**\n * The full (logical) name of the service being called, including its package name, if applicable.\n *\n * Note: This is the logical name of the service from the RPC interface perspective, which can be different from the name of any implementing class. The `code.namespace` attribute may be used to store the latter (despite the attribute name, it may include a class name; e.g., class with method actually executing the call on the server side, RPC client stub class on the client side).\n *\n * @deprecated Use ATTR_RPC_SERVICE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_RPC_SERVICE = TMP_RPC_SERVICE;\n\n/**\n * The name of the (logical) method being called, must be equal to the $method part in the span name.\n *\n * Note: This is the logical name of the method from the RPC interface perspective, which can be different from the name of any implementing method/function. The `code.function` attribute may be used to store the latter (e.g., method actually executing the call on the server side, RPC client stub method on the client side).\n *\n * @deprecated Use ATTR_RPC_METHOD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_RPC_METHOD = TMP_RPC_METHOD;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use ATTR_RPC_GRPC_STATUS_CODE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_RPC_GRPC_STATUS_CODE = TMP_RPC_GRPC_STATUS_CODE;\n\n/**\n * Protocol version as in `jsonrpc` property of request/response. Since JSON-RPC 1.0 does not specify this, the value can be omitted.\n *\n * @deprecated Use ATTR_RPC_JSONRPC_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_RPC_JSONRPC_VERSION = TMP_RPC_JSONRPC_VERSION;\n\n/**\n * `id` property of request or response. Since protocol allows id to be int, string, `null` or missing (for notifications), value is expected to be cast to string for simplicity. Use empty string in case of `null` value. Omit entirely if this is a notification.\n *\n * @deprecated Use ATTR_RPC_JSONRPC_REQUEST_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_RPC_JSONRPC_REQUEST_ID = TMP_RPC_JSONRPC_REQUEST_ID;\n\n/**\n * `error.code` property of response if it is an error response.\n *\n * @deprecated Use ATTR_RPC_JSONRPC_ERROR_CODE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_RPC_JSONRPC_ERROR_CODE = TMP_RPC_JSONRPC_ERROR_CODE;\n\n/**\n * `error.message` property of response if it is an error response.\n *\n * @deprecated Use ATTR_RPC_JSONRPC_ERROR_MESSAGE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_RPC_JSONRPC_ERROR_MESSAGE = TMP_RPC_JSONRPC_ERROR_MESSAGE;\n\n/**\n * Whether this is a received or sent message.\n *\n * @deprecated Use ATTR_MESSAGE_TYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGE_TYPE = TMP_MESSAGE_TYPE;\n\n/**\n * MUST be calculated as two different counters starting from `1` one for sent messages and one for received message.\n *\n * Note: This way we guarantee that the values will be consistent between different implementations.\n *\n * @deprecated Use ATTR_MESSAGE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGE_ID = TMP_MESSAGE_ID;\n\n/**\n * Compressed size of the message in bytes.\n *\n * @deprecated Use ATTR_MESSAGE_COMPRESSED_SIZE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGE_COMPRESSED_SIZE = TMP_MESSAGE_COMPRESSED_SIZE;\n\n/**\n * Uncompressed size of the message in bytes.\n *\n * @deprecated Use ATTR_MESSAGE_UNCOMPRESSED_SIZE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMATTRS_MESSAGE_UNCOMPRESSED_SIZE = TMP_MESSAGE_UNCOMPRESSED_SIZE;\n\n/**\n * Definition of available values for SemanticAttributes\n * This type is used for backward compatibility, you should use the individual exported\n * constants SemanticAttributes_XXXXX rather than the exported constant map. As any single reference\n * to a constant map value will result in all strings being included into your bundle.\n * @deprecated Use the SEMATTRS_XXXXX constants rather than the SemanticAttributes.XXXXX for bundle minification.\n */\nexport type SemanticAttributes = {\n  /**\n   * The full invoked ARN as provided on the `Context` passed to the function (`Lambda-Runtime-Invoked-Function-Arn` header on the `/runtime/invocation/next` applicable).\n   *\n   * Note: This may be different from `faas.id` if an alias is involved.\n   */\n  AWS_LAMBDA_INVOKED_ARN: 'aws.lambda.invoked_arn';\n\n  /**\n   * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n   */\n  DB_SYSTEM: 'db.system';\n\n  /**\n   * The connection string used to connect to the database. It is recommended to remove embedded credentials.\n   */\n  DB_CONNECTION_STRING: 'db.connection_string';\n\n  /**\n   * Username for accessing the database.\n   */\n  DB_USER: 'db.user';\n\n  /**\n   * The fully-qualified class name of the [Java Database Connectivity (JDBC)](https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/) driver used to connect.\n   */\n  DB_JDBC_DRIVER_CLASSNAME: 'db.jdbc.driver_classname';\n\n  /**\n   * If no [tech-specific attribute](#call-level-attributes-for-specific-technologies) is defined, this attribute is used to report the name of the database being accessed. For commands that switch the database, this should be set to the target database (even if the command fails).\n   *\n   * Note: In some SQL databases, the database name to be used is called &#34;schema name&#34;.\n   */\n  DB_NAME: 'db.name';\n\n  /**\n   * The database statement being executed.\n   *\n   * Note: The value may be sanitized to exclude sensitive information.\n   */\n  DB_STATEMENT: 'db.statement';\n\n  /**\n   * The name of the operation being executed, e.g. the [MongoDB command name](https://docs.mongodb.com/manual/reference/command/#database-operations) such as `findAndModify`, or the SQL keyword.\n   *\n   * Note: When setting this to an SQL keyword, it is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if the operation name is provided by the library being instrumented. If the SQL statement has an ambiguous operation, or performs more than one operation, this value may be omitted.\n   */\n  DB_OPERATION: 'db.operation';\n\n  /**\n   * The Microsoft SQL Server [instance name](https://docs.microsoft.com/en-us/sql/connect/jdbc/building-the-connection-url?view=sql-server-ver15) connecting to. This name is used to determine the port of a named instance.\n   *\n   * Note: If setting a `db.mssql.instance_name`, `net.peer.port` is no longer required (but still recommended if non-standard).\n   */\n  DB_MSSQL_INSTANCE_NAME: 'db.mssql.instance_name';\n\n  /**\n   * The name of the keyspace being accessed. To be used instead of the generic `db.name` attribute.\n   */\n  DB_CASSANDRA_KEYSPACE: 'db.cassandra.keyspace';\n\n  /**\n   * The fetch size used for paging, i.e. how many rows will be returned at once.\n   */\n  DB_CASSANDRA_PAGE_SIZE: 'db.cassandra.page_size';\n\n  /**\n   * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n   */\n  DB_CASSANDRA_CONSISTENCY_LEVEL: 'db.cassandra.consistency_level';\n\n  /**\n   * The name of the primary table that the operation is acting upon, including the schema name (if applicable).\n   *\n   * Note: This mirrors the db.sql.table attribute but references cassandra rather than sql. It is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if it is provided by the library being instrumented. If the operation is acting upon an anonymous table, or more than one table, this value MUST NOT be set.\n   */\n  DB_CASSANDRA_TABLE: 'db.cassandra.table';\n\n  /**\n   * Whether or not the query is idempotent.\n   */\n  DB_CASSANDRA_IDEMPOTENCE: 'db.cassandra.idempotence';\n\n  /**\n   * The number of times a query was speculatively executed. Not set or `0` if the query was not executed speculatively.\n   */\n  DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT: 'db.cassandra.speculative_execution_count';\n\n  /**\n   * The ID of the coordinating node for a query.\n   */\n  DB_CASSANDRA_COORDINATOR_ID: 'db.cassandra.coordinator.id';\n\n  /**\n   * The data center of the coordinating node for a query.\n   */\n  DB_CASSANDRA_COORDINATOR_DC: 'db.cassandra.coordinator.dc';\n\n  /**\n   * The [HBase namespace](https://hbase.apache.org/book.html#_namespace) being accessed. To be used instead of the generic `db.name` attribute.\n   */\n  DB_HBASE_NAMESPACE: 'db.hbase.namespace';\n\n  /**\n   * The index of the database being accessed as used in the [`SELECT` command](https://redis.io/commands/select), provided as an integer. To be used instead of the generic `db.name` attribute.\n   */\n  DB_REDIS_DATABASE_INDEX: 'db.redis.database_index';\n\n  /**\n   * The collection being accessed within the database stated in `db.name`.\n   */\n  DB_MONGODB_COLLECTION: 'db.mongodb.collection';\n\n  /**\n   * The name of the primary table that the operation is acting upon, including the schema name (if applicable).\n   *\n   * Note: It is not recommended to attempt any client-side parsing of `db.statement` just to get this property, but it should be set if it is provided by the library being instrumented. If the operation is acting upon an anonymous table, or more than one table, this value MUST NOT be set.\n   */\n  DB_SQL_TABLE: 'db.sql.table';\n\n  /**\n   * The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it.\n   */\n  EXCEPTION_TYPE: 'exception.type';\n\n  /**\n   * The exception message.\n   */\n  EXCEPTION_MESSAGE: 'exception.message';\n\n  /**\n   * A stacktrace as a string in the natural representation for the language runtime. The representation is to be determined and documented by each language SIG.\n   */\n  EXCEPTION_STACKTRACE: 'exception.stacktrace';\n\n  /**\n  * SHOULD be set to true if the exception event is recorded at a point where it is known that the exception is escaping the scope of the span.\n  *\n  * Note: An exception is considered to have escaped (or left) the scope of a span,\nif that span is ended while the exception is still logically &#34;in flight&#34;.\nThis may be actually &#34;in flight&#34; in some languages (e.g. if the exception\nis passed to a Context manager&#39;s `__exit__` method in Python) but will\nusually be caught at the point of recording the exception in most languages.\n\nIt is usually not possible to determine at the point where an exception is thrown\nwhether it will escape the scope of a span.\nHowever, it is trivial to know that an exception\nwill escape, if one checks for an active exception just before ending the span,\nas done in the [example above](#exception-end-example).\n\nIt follows that an exception may still escape the scope of the span\neven if the `exception.escaped` attribute was not set or set to false,\nsince the event might have been recorded at a time where it was not\nclear whether the exception will escape.\n  */\n  EXCEPTION_ESCAPED: 'exception.escaped';\n\n  /**\n   * Type of the trigger on which the function is executed.\n   */\n  FAAS_TRIGGER: 'faas.trigger';\n\n  /**\n   * The execution ID of the current function execution.\n   */\n  FAAS_EXECUTION: 'faas.execution';\n\n  /**\n   * The name of the source on which the triggering operation was performed. For example, in Cloud Storage or S3 corresponds to the bucket name, and in Cosmos DB to the database name.\n   */\n  FAAS_DOCUMENT_COLLECTION: 'faas.document.collection';\n\n  /**\n   * Describes the type of the operation that was performed on the data.\n   */\n  FAAS_DOCUMENT_OPERATION: 'faas.document.operation';\n\n  /**\n   * A string containing the time when the data was accessed in the [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime).\n   */\n  FAAS_DOCUMENT_TIME: 'faas.document.time';\n\n  /**\n   * The document name/table subjected to the operation. For example, in Cloud Storage or S3 is the name of the file, and in Cosmos DB the table name.\n   */\n  FAAS_DOCUMENT_NAME: 'faas.document.name';\n\n  /**\n   * A string containing the function invocation time in the [ISO 8601](https://www.iso.org/iso-8601-date-and-time-format.html) format expressed in [UTC](https://www.w3.org/TR/NOTE-datetime).\n   */\n  FAAS_TIME: 'faas.time';\n\n  /**\n   * A string containing the schedule period as [Cron Expression](https://docs.oracle.com/cd/E12058_01/doc/doc.1014/e12030/cron_expressions.htm).\n   */\n  FAAS_CRON: 'faas.cron';\n\n  /**\n   * A boolean that is true if the serverless function is executed for the first time (aka cold-start).\n   */\n  FAAS_COLDSTART: 'faas.coldstart';\n\n  /**\n   * The name of the invoked function.\n   *\n   * Note: SHOULD be equal to the `faas.name` resource attribute of the invoked function.\n   */\n  FAAS_INVOKED_NAME: 'faas.invoked_name';\n\n  /**\n   * The cloud provider of the invoked function.\n   *\n   * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n   */\n  FAAS_INVOKED_PROVIDER: 'faas.invoked_provider';\n\n  /**\n   * The cloud region of the invoked function.\n   *\n   * Note: SHOULD be equal to the `cloud.region` resource attribute of the invoked function.\n   */\n  FAAS_INVOKED_REGION: 'faas.invoked_region';\n\n  /**\n   * Transport protocol used. See note below.\n   */\n  NET_TRANSPORT: 'net.transport';\n\n  /**\n   * Remote address of the peer (dotted decimal for IPv4 or [RFC5952](https://tools.ietf.org/html/rfc5952) for IPv6).\n   */\n  NET_PEER_IP: 'net.peer.ip';\n\n  /**\n   * Remote port number.\n   */\n  NET_PEER_PORT: 'net.peer.port';\n\n  /**\n   * Remote hostname or similar, see note below.\n   */\n  NET_PEER_NAME: 'net.peer.name';\n\n  /**\n   * Like `net.peer.ip` but for the host IP. Useful in case of a multi-IP host.\n   */\n  NET_HOST_IP: 'net.host.ip';\n\n  /**\n   * Like `net.peer.port` but for the host port.\n   */\n  NET_HOST_PORT: 'net.host.port';\n\n  /**\n   * Local hostname or similar, see note below.\n   */\n  NET_HOST_NAME: 'net.host.name';\n\n  /**\n   * The internet connection type currently being used by the host.\n   */\n  NET_HOST_CONNECTION_TYPE: 'net.host.connection.type';\n\n  /**\n   * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n   */\n  NET_HOST_CONNECTION_SUBTYPE: 'net.host.connection.subtype';\n\n  /**\n   * The name of the mobile carrier.\n   */\n  NET_HOST_CARRIER_NAME: 'net.host.carrier.name';\n\n  /**\n   * The mobile carrier country code.\n   */\n  NET_HOST_CARRIER_MCC: 'net.host.carrier.mcc';\n\n  /**\n   * The mobile carrier network code.\n   */\n  NET_HOST_CARRIER_MNC: 'net.host.carrier.mnc';\n\n  /**\n   * The ISO 3166-1 alpha-2 2-character country code associated with the mobile carrier network.\n   */\n  NET_HOST_CARRIER_ICC: 'net.host.carrier.icc';\n\n  /**\n   * The [`service.name`](../../resource/semantic_conventions/README.md#service) of the remote service. SHOULD be equal to the actual `service.name` resource attribute of the remote service if any.\n   */\n  PEER_SERVICE: 'peer.service';\n\n  /**\n   * Username or client_id extracted from the access token or [Authorization](https://tools.ietf.org/html/rfc7235#section-4.2) header in the inbound request from outside the system.\n   */\n  ENDUSER_ID: 'enduser.id';\n\n  /**\n   * Actual/assumed role the client is making the request under extracted from token or application security context.\n   */\n  ENDUSER_ROLE: 'enduser.role';\n\n  /**\n   * Scopes or granted authorities the client currently possesses extracted from token or application security context. The value would come from the scope associated with an [OAuth 2.0 Access Token](https://tools.ietf.org/html/rfc6749#section-3.3) or an attribute value in a [SAML 2.0 Assertion](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.html).\n   */\n  ENDUSER_SCOPE: 'enduser.scope';\n\n  /**\n   * Current &#34;managed&#34; thread ID (as opposed to OS thread ID).\n   */\n  THREAD_ID: 'thread.id';\n\n  /**\n   * Current thread name.\n   */\n  THREAD_NAME: 'thread.name';\n\n  /**\n   * The method or function name, or equivalent (usually rightmost part of the code unit&#39;s name).\n   */\n  CODE_FUNCTION: 'code.function';\n\n  /**\n   * The &#34;namespace&#34; within which `code.function` is defined. Usually the qualified class or module name, such that `code.namespace` + some separator + `code.function` form a unique identifier for the code unit.\n   */\n  CODE_NAMESPACE: 'code.namespace';\n\n  /**\n   * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path).\n   */\n  CODE_FILEPATH: 'code.filepath';\n\n  /**\n   * The line number in `code.filepath` best representing the operation. It SHOULD point within the code unit named in `code.function`.\n   */\n  CODE_LINENO: 'code.lineno';\n\n  /**\n   * HTTP request method.\n   */\n  HTTP_METHOD: 'http.method';\n\n  /**\n   * Full HTTP request URL in the form `scheme://host[:port]/path?query[#fragment]`. Usually the fragment is not transmitted over HTTP, but if it is known, it should be included nevertheless.\n   *\n   * Note: `http.url` MUST NOT contain credentials passed via URL in form of `https://username:password@www.example.com/`. In such case the attribute&#39;s value should be `https://www.example.com/`.\n   */\n  HTTP_URL: 'http.url';\n\n  /**\n   * The full request target as passed in a HTTP request line or equivalent.\n   */\n  HTTP_TARGET: 'http.target';\n\n  /**\n   * The value of the [HTTP host header](https://tools.ietf.org/html/rfc7230#section-5.4). An empty Host header should also be reported, see note.\n   *\n   * Note: When the header is present but empty the attribute SHOULD be set to the empty string. Note that this is a valid situation that is expected in certain cases, according the aforementioned [section of RFC 7230](https://tools.ietf.org/html/rfc7230#section-5.4). When the header is not set the attribute MUST NOT be set.\n   */\n  HTTP_HOST: 'http.host';\n\n  /**\n   * The URI scheme identifying the used protocol.\n   */\n  HTTP_SCHEME: 'http.scheme';\n\n  /**\n   * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).\n   */\n  HTTP_STATUS_CODE: 'http.status_code';\n\n  /**\n   * Kind of HTTP protocol used.\n   *\n   * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n   */\n  HTTP_FLAVOR: 'http.flavor';\n\n  /**\n   * Value of the [HTTP User-Agent](https://tools.ietf.org/html/rfc7231#section-5.5.3) header sent by the client.\n   */\n  HTTP_USER_AGENT: 'http.user_agent';\n\n  /**\n   * The size of the request payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the [Content-Length](https://tools.ietf.org/html/rfc7230#section-3.3.2) header. For requests using transport encoding, this should be the compressed size.\n   */\n  HTTP_REQUEST_CONTENT_LENGTH: 'http.request_content_length';\n\n  /**\n   * The size of the uncompressed request payload body after transport decoding. Not set if transport encoding not used.\n   */\n  HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED: 'http.request_content_length_uncompressed';\n\n  /**\n   * The size of the response payload body in bytes. This is the number of bytes transferred excluding headers and is often, but not always, present as the [Content-Length](https://tools.ietf.org/html/rfc7230#section-3.3.2) header. For requests using transport encoding, this should be the compressed size.\n   */\n  HTTP_RESPONSE_CONTENT_LENGTH: 'http.response_content_length';\n\n  /**\n   * The size of the uncompressed response payload body after transport decoding. Not set if transport encoding not used.\n   */\n  HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED: 'http.response_content_length_uncompressed';\n\n  /**\n   * The primary server name of the matched virtual host. This should be obtained via configuration. If no such configuration can be obtained, this attribute MUST NOT be set ( `net.host.name` should be used instead).\n   *\n   * Note: `http.url` is usually not readily available on the server side but would have to be assembled in a cumbersome and sometimes lossy process from other information (see e.g. open-telemetry/opentelemetry-python/pull/148). It is thus preferred to supply the raw data that is available.\n   */\n  HTTP_SERVER_NAME: 'http.server_name';\n\n  /**\n   * The matched route (path template).\n   */\n  HTTP_ROUTE: 'http.route';\n\n  /**\n  * The IP address of the original client behind all proxies, if known (e.g. from [X-Forwarded-For](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Forwarded-For)).\n  *\n  * Note: This is not necessarily the same as `net.peer.ip`, which would\nidentify the network-level peer, which may be a proxy.\n\nThis attribute should be set when a source of information different\nfrom the one used for `net.peer.ip`, is available even if that other\nsource just confirms the same value as `net.peer.ip`.\nRationale: For `net.peer.ip`, one typically does not know if it\ncomes from a proxy, reverse proxy, or the actual client. Setting\n`http.client_ip` when it&#39;s the same as `net.peer.ip` means that\none is at least somewhat confident that the address is not that of\nthe closest proxy.\n  */\n  HTTP_CLIENT_IP: 'http.client_ip';\n\n  /**\n   * The keys in the `RequestItems` object field.\n   */\n  AWS_DYNAMODB_TABLE_NAMES: 'aws.dynamodb.table_names';\n\n  /**\n   * The JSON-serialized value of each item in the `ConsumedCapacity` response field.\n   */\n  AWS_DYNAMODB_CONSUMED_CAPACITY: 'aws.dynamodb.consumed_capacity';\n\n  /**\n   * The JSON-serialized value of the `ItemCollectionMetrics` response field.\n   */\n  AWS_DYNAMODB_ITEM_COLLECTION_METRICS: 'aws.dynamodb.item_collection_metrics';\n\n  /**\n   * The value of the `ProvisionedThroughput.ReadCapacityUnits` request parameter.\n   */\n  AWS_DYNAMODB_PROVISIONED_READ_CAPACITY: 'aws.dynamodb.provisioned_read_capacity';\n\n  /**\n   * The value of the `ProvisionedThroughput.WriteCapacityUnits` request parameter.\n   */\n  AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY: 'aws.dynamodb.provisioned_write_capacity';\n\n  /**\n   * The value of the `ConsistentRead` request parameter.\n   */\n  AWS_DYNAMODB_CONSISTENT_READ: 'aws.dynamodb.consistent_read';\n\n  /**\n   * The value of the `ProjectionExpression` request parameter.\n   */\n  AWS_DYNAMODB_PROJECTION: 'aws.dynamodb.projection';\n\n  /**\n   * The value of the `Limit` request parameter.\n   */\n  AWS_DYNAMODB_LIMIT: 'aws.dynamodb.limit';\n\n  /**\n   * The value of the `AttributesToGet` request parameter.\n   */\n  AWS_DYNAMODB_ATTRIBUTES_TO_GET: 'aws.dynamodb.attributes_to_get';\n\n  /**\n   * The value of the `IndexName` request parameter.\n   */\n  AWS_DYNAMODB_INDEX_NAME: 'aws.dynamodb.index_name';\n\n  /**\n   * The value of the `Select` request parameter.\n   */\n  AWS_DYNAMODB_SELECT: 'aws.dynamodb.select';\n\n  /**\n   * The JSON-serialized value of each item of the `GlobalSecondaryIndexes` request field.\n   */\n  AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES: 'aws.dynamodb.global_secondary_indexes';\n\n  /**\n   * The JSON-serialized value of each item of the `LocalSecondaryIndexes` request field.\n   */\n  AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES: 'aws.dynamodb.local_secondary_indexes';\n\n  /**\n   * The value of the `ExclusiveStartTableName` request parameter.\n   */\n  AWS_DYNAMODB_EXCLUSIVE_START_TABLE: 'aws.dynamodb.exclusive_start_table';\n\n  /**\n   * The the number of items in the `TableNames` response parameter.\n   */\n  AWS_DYNAMODB_TABLE_COUNT: 'aws.dynamodb.table_count';\n\n  /**\n   * The value of the `ScanIndexForward` request parameter.\n   */\n  AWS_DYNAMODB_SCAN_FORWARD: 'aws.dynamodb.scan_forward';\n\n  /**\n   * The value of the `Segment` request parameter.\n   */\n  AWS_DYNAMODB_SEGMENT: 'aws.dynamodb.segment';\n\n  /**\n   * The value of the `TotalSegments` request parameter.\n   */\n  AWS_DYNAMODB_TOTAL_SEGMENTS: 'aws.dynamodb.total_segments';\n\n  /**\n   * The value of the `Count` response parameter.\n   */\n  AWS_DYNAMODB_COUNT: 'aws.dynamodb.count';\n\n  /**\n   * The value of the `ScannedCount` response parameter.\n   */\n  AWS_DYNAMODB_SCANNED_COUNT: 'aws.dynamodb.scanned_count';\n\n  /**\n   * The JSON-serialized value of each item in the `AttributeDefinitions` request field.\n   */\n  AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS: 'aws.dynamodb.attribute_definitions';\n\n  /**\n   * The JSON-serialized value of each item in the the `GlobalSecondaryIndexUpdates` request field.\n   */\n  AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES: 'aws.dynamodb.global_secondary_index_updates';\n\n  /**\n   * A string identifying the messaging system.\n   */\n  MESSAGING_SYSTEM: 'messaging.system';\n\n  /**\n   * The message destination name. This might be equal to the span name but is required nevertheless.\n   */\n  MESSAGING_DESTINATION: 'messaging.destination';\n\n  /**\n   * The kind of message destination.\n   */\n  MESSAGING_DESTINATION_KIND: 'messaging.destination_kind';\n\n  /**\n   * A boolean that is true if the message destination is temporary.\n   */\n  MESSAGING_TEMP_DESTINATION: 'messaging.temp_destination';\n\n  /**\n   * The name of the transport protocol.\n   */\n  MESSAGING_PROTOCOL: 'messaging.protocol';\n\n  /**\n   * The version of the transport protocol.\n   */\n  MESSAGING_PROTOCOL_VERSION: 'messaging.protocol_version';\n\n  /**\n   * Connection string.\n   */\n  MESSAGING_URL: 'messaging.url';\n\n  /**\n   * A value used by the messaging system as an identifier for the message, represented as a string.\n   */\n  MESSAGING_MESSAGE_ID: 'messaging.message_id';\n\n  /**\n   * The [conversation ID](#conversations) identifying the conversation to which the message belongs, represented as a string. Sometimes called &#34;Correlation ID&#34;.\n   */\n  MESSAGING_CONVERSATION_ID: 'messaging.conversation_id';\n\n  /**\n   * The (uncompressed) size of the message payload in bytes. Also use this attribute if it is unknown whether the compressed or uncompressed payload size is reported.\n   */\n  MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES: 'messaging.message_payload_size_bytes';\n\n  /**\n   * The compressed size of the message payload in bytes.\n   */\n  MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES: 'messaging.message_payload_compressed_size_bytes';\n\n  /**\n   * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is &#34;send&#34;, this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n   */\n  MESSAGING_OPERATION: 'messaging.operation';\n\n  /**\n   * The identifier for the consumer receiving a message. For Kafka, set it to `{messaging.kafka.consumer_group} - {messaging.kafka.client_id}`, if both are present, or only `messaging.kafka.consumer_group`. For brokers, such as RabbitMQ and Artemis, set it to the `client_id` of the client consuming the message.\n   */\n  MESSAGING_CONSUMER_ID: 'messaging.consumer_id';\n\n  /**\n   * RabbitMQ message routing key.\n   */\n  MESSAGING_RABBITMQ_ROUTING_KEY: 'messaging.rabbitmq.routing_key';\n\n  /**\n   * Message keys in Kafka are used for grouping alike messages to ensure they&#39;re processed on the same partition. They differ from `messaging.message_id` in that they&#39;re not unique. If the key is `null`, the attribute MUST NOT be set.\n   *\n   * Note: If the key type is not string, it&#39;s string representation has to be supplied for the attribute. If the key has no unambiguous, canonical string form, don&#39;t include its value.\n   */\n  MESSAGING_KAFKA_MESSAGE_KEY: 'messaging.kafka.message_key';\n\n  /**\n   * Name of the Kafka Consumer Group that is handling the message. Only applies to consumers, not producers.\n   */\n  MESSAGING_KAFKA_CONSUMER_GROUP: 'messaging.kafka.consumer_group';\n\n  /**\n   * Client Id for the Consumer or Producer that is handling the message.\n   */\n  MESSAGING_KAFKA_CLIENT_ID: 'messaging.kafka.client_id';\n\n  /**\n   * Partition the message is sent to.\n   */\n  MESSAGING_KAFKA_PARTITION: 'messaging.kafka.partition';\n\n  /**\n   * A boolean that is true if the message is a tombstone.\n   */\n  MESSAGING_KAFKA_TOMBSTONE: 'messaging.kafka.tombstone';\n\n  /**\n   * A string identifying the remoting system.\n   */\n  RPC_SYSTEM: 'rpc.system';\n\n  /**\n   * The full (logical) name of the service being called, including its package name, if applicable.\n   *\n   * Note: This is the logical name of the service from the RPC interface perspective, which can be different from the name of any implementing class. The `code.namespace` attribute may be used to store the latter (despite the attribute name, it may include a class name; e.g., class with method actually executing the call on the server side, RPC client stub class on the client side).\n   */\n  RPC_SERVICE: 'rpc.service';\n\n  /**\n   * The name of the (logical) method being called, must be equal to the $method part in the span name.\n   *\n   * Note: This is the logical name of the method from the RPC interface perspective, which can be different from the name of any implementing method/function. The `code.function` attribute may be used to store the latter (e.g., method actually executing the call on the server side, RPC client stub method on the client side).\n   */\n  RPC_METHOD: 'rpc.method';\n\n  /**\n   * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n   */\n  RPC_GRPC_STATUS_CODE: 'rpc.grpc.status_code';\n\n  /**\n   * Protocol version as in `jsonrpc` property of request/response. Since JSON-RPC 1.0 does not specify this, the value can be omitted.\n   */\n  RPC_JSONRPC_VERSION: 'rpc.jsonrpc.version';\n\n  /**\n   * `id` property of request or response. Since protocol allows id to be int, string, `null` or missing (for notifications), value is expected to be cast to string for simplicity. Use empty string in case of `null` value. Omit entirely if this is a notification.\n   */\n  RPC_JSONRPC_REQUEST_ID: 'rpc.jsonrpc.request_id';\n\n  /**\n   * `error.code` property of response if it is an error response.\n   */\n  RPC_JSONRPC_ERROR_CODE: 'rpc.jsonrpc.error_code';\n\n  /**\n   * `error.message` property of response if it is an error response.\n   */\n  RPC_JSONRPC_ERROR_MESSAGE: 'rpc.jsonrpc.error_message';\n\n  /**\n   * Whether this is a received or sent message.\n   */\n  MESSAGE_TYPE: 'message.type';\n\n  /**\n   * MUST be calculated as two different counters starting from `1` one for sent messages and one for received message.\n   *\n   * Note: This way we guarantee that the values will be consistent between different implementations.\n   */\n  MESSAGE_ID: 'message.id';\n\n  /**\n   * Compressed size of the message in bytes.\n   */\n  MESSAGE_COMPRESSED_SIZE: 'message.compressed_size';\n\n  /**\n   * Uncompressed size of the message in bytes.\n   */\n  MESSAGE_UNCOMPRESSED_SIZE: 'message.uncompressed_size';\n};\n\n/**\n * Create exported Value Map for SemanticAttributes values\n * @deprecated Use the SEMATTRS_XXXXX constants rather than the SemanticAttributes.XXXXX for bundle minification\n */\nexport const SemanticAttributes: SemanticAttributes =\n  /*#__PURE__*/ createConstMap<SemanticAttributes>([\n    TMP_AWS_LAMBDA_INVOKED_ARN,\n    TMP_DB_SYSTEM,\n    TMP_DB_CONNECTION_STRING,\n    TMP_DB_USER,\n    TMP_DB_JDBC_DRIVER_CLASSNAME,\n    TMP_DB_NAME,\n    TMP_DB_STATEMENT,\n    TMP_DB_OPERATION,\n    TMP_DB_MSSQL_INSTANCE_NAME,\n    TMP_DB_CASSANDRA_KEYSPACE,\n    TMP_DB_CASSANDRA_PAGE_SIZE,\n    TMP_DB_CASSANDRA_CONSISTENCY_LEVEL,\n    TMP_DB_CASSANDRA_TABLE,\n    TMP_DB_CASSANDRA_IDEMPOTENCE,\n    TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT,\n    TMP_DB_CASSANDRA_COORDINATOR_ID,\n    TMP_DB_CASSANDRA_COORDINATOR_DC,\n    TMP_DB_HBASE_NAMESPACE,\n    TMP_DB_REDIS_DATABASE_INDEX,\n    TMP_DB_MONGODB_COLLECTION,\n    TMP_DB_SQL_TABLE,\n    TMP_EXCEPTION_TYPE,\n    TMP_EXCEPTION_MESSAGE,\n    TMP_EXCEPTION_STACKTRACE,\n    TMP_EXCEPTION_ESCAPED,\n    TMP_FAAS_TRIGGER,\n    TMP_FAAS_EXECUTION,\n    TMP_FAAS_DOCUMENT_COLLECTION,\n    TMP_FAAS_DOCUMENT_OPERATION,\n    TMP_FAAS_DOCUMENT_TIME,\n    TMP_FAAS_DOCUMENT_NAME,\n    TMP_FAAS_TIME,\n    TMP_FAAS_CRON,\n    TMP_FAAS_COLDSTART,\n    TMP_FAAS_INVOKED_NAME,\n    TMP_FAAS_INVOKED_PROVIDER,\n    TMP_FAAS_INVOKED_REGION,\n    TMP_NET_TRANSPORT,\n    TMP_NET_PEER_IP,\n    TMP_NET_PEER_PORT,\n    TMP_NET_PEER_NAME,\n    TMP_NET_HOST_IP,\n    TMP_NET_HOST_PORT,\n    TMP_NET_HOST_NAME,\n    TMP_NET_HOST_CONNECTION_TYPE,\n    TMP_NET_HOST_CONNECTION_SUBTYPE,\n    TMP_NET_HOST_CARRIER_NAME,\n    TMP_NET_HOST_CARRIER_MCC,\n    TMP_NET_HOST_CARRIER_MNC,\n    TMP_NET_HOST_CARRIER_ICC,\n    TMP_PEER_SERVICE,\n    TMP_ENDUSER_ID,\n    TMP_ENDUSER_ROLE,\n    TMP_ENDUSER_SCOPE,\n    TMP_THREAD_ID,\n    TMP_THREAD_NAME,\n    TMP_CODE_FUNCTION,\n    TMP_CODE_NAMESPACE,\n    TMP_CODE_FILEPATH,\n    TMP_CODE_LINENO,\n    TMP_HTTP_METHOD,\n    TMP_HTTP_URL,\n    TMP_HTTP_TARGET,\n    TMP_HTTP_HOST,\n    TMP_HTTP_SCHEME,\n    TMP_HTTP_STATUS_CODE,\n    TMP_HTTP_FLAVOR,\n    TMP_HTTP_USER_AGENT,\n    TMP_HTTP_REQUEST_CONTENT_LENGTH,\n    TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED,\n    TMP_HTTP_RESPONSE_CONTENT_LENGTH,\n    TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED,\n    TMP_HTTP_SERVER_NAME,\n    TMP_HTTP_ROUTE,\n    TMP_HTTP_CLIENT_IP,\n    TMP_AWS_DYNAMODB_TABLE_NAMES,\n    TMP_AWS_DYNAMODB_CONSUMED_CAPACITY,\n    TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS,\n    TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY,\n    TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY,\n    TMP_AWS_DYNAMODB_CONSISTENT_READ,\n    TMP_AWS_DYNAMODB_PROJECTION,\n    TMP_AWS_DYNAMODB_LIMIT,\n    TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET,\n    TMP_AWS_DYNAMODB_INDEX_NAME,\n    TMP_AWS_DYNAMODB_SELECT,\n    TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES,\n    TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES,\n    TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE,\n    TMP_AWS_DYNAMODB_TABLE_COUNT,\n    TMP_AWS_DYNAMODB_SCAN_FORWARD,\n    TMP_AWS_DYNAMODB_SEGMENT,\n    TMP_AWS_DYNAMODB_TOTAL_SEGMENTS,\n    TMP_AWS_DYNAMODB_COUNT,\n    TMP_AWS_DYNAMODB_SCANNED_COUNT,\n    TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS,\n    TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES,\n    TMP_MESSAGING_SYSTEM,\n    TMP_MESSAGING_DESTINATION,\n    TMP_MESSAGING_DESTINATION_KIND,\n    TMP_MESSAGING_TEMP_DESTINATION,\n    TMP_MESSAGING_PROTOCOL,\n    TMP_MESSAGING_PROTOCOL_VERSION,\n    TMP_MESSAGING_URL,\n    TMP_MESSAGING_MESSAGE_ID,\n    TMP_MESSAGING_CONVERSATION_ID,\n    TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES,\n    TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES,\n    TMP_MESSAGING_OPERATION,\n    TMP_MESSAGING_CONSUMER_ID,\n    TMP_MESSAGING_RABBITMQ_ROUTING_KEY,\n    TMP_MESSAGING_KAFKA_MESSAGE_KEY,\n    TMP_MESSAGING_KAFKA_CONSUMER_GROUP,\n    TMP_MESSAGING_KAFKA_CLIENT_ID,\n    TMP_MESSAGING_KAFKA_PARTITION,\n    TMP_MESSAGING_KAFKA_TOMBSTONE,\n    TMP_RPC_SYSTEM,\n    TMP_RPC_SERVICE,\n    TMP_RPC_METHOD,\n    TMP_RPC_GRPC_STATUS_CODE,\n    TMP_RPC_JSONRPC_VERSION,\n    TMP_RPC_JSONRPC_REQUEST_ID,\n    TMP_RPC_JSONRPC_ERROR_CODE,\n    TMP_RPC_JSONRPC_ERROR_MESSAGE,\n    TMP_MESSAGE_TYPE,\n    TMP_MESSAGE_ID,\n    TMP_MESSAGE_COMPRESSED_SIZE,\n    TMP_MESSAGE_UNCOMPRESSED_SIZE,\n  ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for DbSystemValues enum definition\n *\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_DBSYSTEMVALUES_OTHER_SQL = 'other_sql';\nconst TMP_DBSYSTEMVALUES_MSSQL = 'mssql';\nconst TMP_DBSYSTEMVALUES_MYSQL = 'mysql';\nconst TMP_DBSYSTEMVALUES_ORACLE = 'oracle';\nconst TMP_DBSYSTEMVALUES_DB2 = 'db2';\nconst TMP_DBSYSTEMVALUES_POSTGRESQL = 'postgresql';\nconst TMP_DBSYSTEMVALUES_REDSHIFT = 'redshift';\nconst TMP_DBSYSTEMVALUES_HIVE = 'hive';\nconst TMP_DBSYSTEMVALUES_CLOUDSCAPE = 'cloudscape';\nconst TMP_DBSYSTEMVALUES_HSQLDB = 'hsqldb';\nconst TMP_DBSYSTEMVALUES_PROGRESS = 'progress';\nconst TMP_DBSYSTEMVALUES_MAXDB = 'maxdb';\nconst TMP_DBSYSTEMVALUES_HANADB = 'hanadb';\nconst TMP_DBSYSTEMVALUES_INGRES = 'ingres';\nconst TMP_DBSYSTEMVALUES_FIRSTSQL = 'firstsql';\nconst TMP_DBSYSTEMVALUES_EDB = 'edb';\nconst TMP_DBSYSTEMVALUES_CACHE = 'cache';\nconst TMP_DBSYSTEMVALUES_ADABAS = 'adabas';\nconst TMP_DBSYSTEMVALUES_FIREBIRD = 'firebird';\nconst TMP_DBSYSTEMVALUES_DERBY = 'derby';\nconst TMP_DBSYSTEMVALUES_FILEMAKER = 'filemaker';\nconst TMP_DBSYSTEMVALUES_INFORMIX = 'informix';\nconst TMP_DBSYSTEMVALUES_INSTANTDB = 'instantdb';\nconst TMP_DBSYSTEMVALUES_INTERBASE = 'interbase';\nconst TMP_DBSYSTEMVALUES_MARIADB = 'mariadb';\nconst TMP_DBSYSTEMVALUES_NETEZZA = 'netezza';\nconst TMP_DBSYSTEMVALUES_PERVASIVE = 'pervasive';\nconst TMP_DBSYSTEMVALUES_POINTBASE = 'pointbase';\nconst TMP_DBSYSTEMVALUES_SQLITE = 'sqlite';\nconst TMP_DBSYSTEMVALUES_SYBASE = 'sybase';\nconst TMP_DBSYSTEMVALUES_TERADATA = 'teradata';\nconst TMP_DBSYSTEMVALUES_VERTICA = 'vertica';\nconst TMP_DBSYSTEMVALUES_H2 = 'h2';\nconst TMP_DBSYSTEMVALUES_COLDFUSION = 'coldfusion';\nconst TMP_DBSYSTEMVALUES_CASSANDRA = 'cassandra';\nconst TMP_DBSYSTEMVALUES_HBASE = 'hbase';\nconst TMP_DBSYSTEMVALUES_MONGODB = 'mongodb';\nconst TMP_DBSYSTEMVALUES_REDIS = 'redis';\nconst TMP_DBSYSTEMVALUES_COUCHBASE = 'couchbase';\nconst TMP_DBSYSTEMVALUES_COUCHDB = 'couchdb';\nconst TMP_DBSYSTEMVALUES_COSMOSDB = 'cosmosdb';\nconst TMP_DBSYSTEMVALUES_DYNAMODB = 'dynamodb';\nconst TMP_DBSYSTEMVALUES_NEO4J = 'neo4j';\nconst TMP_DBSYSTEMVALUES_GEODE = 'geode';\nconst TMP_DBSYSTEMVALUES_ELASTICSEARCH = 'elasticsearch';\nconst TMP_DBSYSTEMVALUES_MEMCACHED = 'memcached';\nconst TMP_DBSYSTEMVALUES_COCKROACHDB = 'cockroachdb';\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_OTHER_SQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_OTHER_SQL = TMP_DBSYSTEMVALUES_OTHER_SQL;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MSSQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_MSSQL = TMP_DBSYSTEMVALUES_MSSQL;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MYSQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_MYSQL = TMP_DBSYSTEMVALUES_MYSQL;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_ORACLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_ORACLE = TMP_DBSYSTEMVALUES_ORACLE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_DB2 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_DB2 = TMP_DBSYSTEMVALUES_DB2;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_POSTGRESQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_POSTGRESQL = TMP_DBSYSTEMVALUES_POSTGRESQL;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_REDSHIFT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_REDSHIFT = TMP_DBSYSTEMVALUES_REDSHIFT;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_HIVE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_HIVE = TMP_DBSYSTEMVALUES_HIVE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_CLOUDSCAPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_CLOUDSCAPE = TMP_DBSYSTEMVALUES_CLOUDSCAPE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_HSQLDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_HSQLDB = TMP_DBSYSTEMVALUES_HSQLDB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_PROGRESS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_PROGRESS = TMP_DBSYSTEMVALUES_PROGRESS;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MAXDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_MAXDB = TMP_DBSYSTEMVALUES_MAXDB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_HANADB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_HANADB = TMP_DBSYSTEMVALUES_HANADB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_INGRES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_INGRES = TMP_DBSYSTEMVALUES_INGRES;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_FIRSTSQL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_FIRSTSQL = TMP_DBSYSTEMVALUES_FIRSTSQL;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_EDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_EDB = TMP_DBSYSTEMVALUES_EDB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_CACHE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_CACHE = TMP_DBSYSTEMVALUES_CACHE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_ADABAS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_ADABAS = TMP_DBSYSTEMVALUES_ADABAS;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_FIREBIRD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_FIREBIRD = TMP_DBSYSTEMVALUES_FIREBIRD;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_DERBY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_DERBY = TMP_DBSYSTEMVALUES_DERBY;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_FILEMAKER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_FILEMAKER = TMP_DBSYSTEMVALUES_FILEMAKER;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_INFORMIX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_INFORMIX = TMP_DBSYSTEMVALUES_INFORMIX;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_INSTANTDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_INSTANTDB = TMP_DBSYSTEMVALUES_INSTANTDB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_INTERBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_INTERBASE = TMP_DBSYSTEMVALUES_INTERBASE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MARIADB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_MARIADB = TMP_DBSYSTEMVALUES_MARIADB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_NETEZZA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_NETEZZA = TMP_DBSYSTEMVALUES_NETEZZA;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_PERVASIVE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_PERVASIVE = TMP_DBSYSTEMVALUES_PERVASIVE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_POINTBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_POINTBASE = TMP_DBSYSTEMVALUES_POINTBASE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_SQLITE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_SQLITE = TMP_DBSYSTEMVALUES_SQLITE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_SYBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_SYBASE = TMP_DBSYSTEMVALUES_SYBASE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_TERADATA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_TERADATA = TMP_DBSYSTEMVALUES_TERADATA;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_VERTICA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_VERTICA = TMP_DBSYSTEMVALUES_VERTICA;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_H2 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_H2 = TMP_DBSYSTEMVALUES_H2;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COLDFUSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_COLDFUSION = TMP_DBSYSTEMVALUES_COLDFUSION;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_CASSANDRA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_CASSANDRA = TMP_DBSYSTEMVALUES_CASSANDRA;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_HBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_HBASE = TMP_DBSYSTEMVALUES_HBASE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MONGODB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_MONGODB = TMP_DBSYSTEMVALUES_MONGODB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_REDIS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_REDIS = TMP_DBSYSTEMVALUES_REDIS;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COUCHBASE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_COUCHBASE = TMP_DBSYSTEMVALUES_COUCHBASE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COUCHDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_COUCHDB = TMP_DBSYSTEMVALUES_COUCHDB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COSMOSDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_COSMOSDB = TMP_DBSYSTEMVALUES_COSMOSDB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_DYNAMODB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_DYNAMODB = TMP_DBSYSTEMVALUES_DYNAMODB;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_NEO4J in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_NEO4J = TMP_DBSYSTEMVALUES_NEO4J;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_GEODE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_GEODE = TMP_DBSYSTEMVALUES_GEODE;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_ELASTICSEARCH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_ELASTICSEARCH = TMP_DBSYSTEMVALUES_ELASTICSEARCH;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_MEMCACHED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_MEMCACHED = TMP_DBSYSTEMVALUES_MEMCACHED;\n\n/**\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n *\n * @deprecated Use DB_SYSTEM_VALUE_COCKROACHDB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBSYSTEMVALUES_COCKROACHDB = TMP_DBSYSTEMVALUES_COCKROACHDB;\n\n/**\n * Identifies the Values for DbSystemValues enum definition\n *\n * An identifier for the database management system (DBMS) product being used. See below for a list of well-known identifiers.\n * @deprecated Use the DBSYSTEMVALUES_XXXXX constants rather than the DbSystemValues.XXXXX for bundle minification.\n */\nexport type DbSystemValues = {\n  /** Some other SQL database. Fallback only. See notes. */\n  OTHER_SQL: 'other_sql';\n\n  /** Microsoft SQL Server. */\n  MSSQL: 'mssql';\n\n  /** MySQL. */\n  MYSQL: 'mysql';\n\n  /** Oracle Database. */\n  ORACLE: 'oracle';\n\n  /** IBM Db2. */\n  DB2: 'db2';\n\n  /** PostgreSQL. */\n  POSTGRESQL: 'postgresql';\n\n  /** Amazon Redshift. */\n  REDSHIFT: 'redshift';\n\n  /** Apache Hive. */\n  HIVE: 'hive';\n\n  /** Cloudscape. */\n  CLOUDSCAPE: 'cloudscape';\n\n  /** HyperSQL DataBase. */\n  HSQLDB: 'hsqldb';\n\n  /** Progress Database. */\n  PROGRESS: 'progress';\n\n  /** SAP MaxDB. */\n  MAXDB: 'maxdb';\n\n  /** SAP HANA. */\n  HANADB: 'hanadb';\n\n  /** Ingres. */\n  INGRES: 'ingres';\n\n  /** FirstSQL. */\n  FIRSTSQL: 'firstsql';\n\n  /** EnterpriseDB. */\n  EDB: 'edb';\n\n  /** InterSystems Caché. */\n  CACHE: 'cache';\n\n  /** Adabas (Adaptable Database System). */\n  ADABAS: 'adabas';\n\n  /** Firebird. */\n  FIREBIRD: 'firebird';\n\n  /** Apache Derby. */\n  DERBY: 'derby';\n\n  /** FileMaker. */\n  FILEMAKER: 'filemaker';\n\n  /** Informix. */\n  INFORMIX: 'informix';\n\n  /** InstantDB. */\n  INSTANTDB: 'instantdb';\n\n  /** InterBase. */\n  INTERBASE: 'interbase';\n\n  /** MariaDB. */\n  MARIADB: 'mariadb';\n\n  /** Netezza. */\n  NETEZZA: 'netezza';\n\n  /** Pervasive PSQL. */\n  PERVASIVE: 'pervasive';\n\n  /** PointBase. */\n  POINTBASE: 'pointbase';\n\n  /** SQLite. */\n  SQLITE: 'sqlite';\n\n  /** Sybase. */\n  SYBASE: 'sybase';\n\n  /** Teradata. */\n  TERADATA: 'teradata';\n\n  /** Vertica. */\n  VERTICA: 'vertica';\n\n  /** H2. */\n  H2: 'h2';\n\n  /** ColdFusion IMQ. */\n  COLDFUSION: 'coldfusion';\n\n  /** Apache Cassandra. */\n  CASSANDRA: 'cassandra';\n\n  /** Apache HBase. */\n  HBASE: 'hbase';\n\n  /** MongoDB. */\n  MONGODB: 'mongodb';\n\n  /** Redis. */\n  REDIS: 'redis';\n\n  /** Couchbase. */\n  COUCHBASE: 'couchbase';\n\n  /** CouchDB. */\n  COUCHDB: 'couchdb';\n\n  /** Microsoft Azure Cosmos DB. */\n  COSMOSDB: 'cosmosdb';\n\n  /** Amazon DynamoDB. */\n  DYNAMODB: 'dynamodb';\n\n  /** Neo4j. */\n  NEO4J: 'neo4j';\n\n  /** Apache Geode. */\n  GEODE: 'geode';\n\n  /** Elasticsearch. */\n  ELASTICSEARCH: 'elasticsearch';\n\n  /** Memcached. */\n  MEMCACHED: 'memcached';\n\n  /** CockroachDB. */\n  COCKROACHDB: 'cockroachdb';\n};\n\n/**\n * The constant map of values for DbSystemValues.\n * @deprecated Use the DBSYSTEMVALUES_XXXXX constants rather than the DbSystemValues.XXXXX for bundle minification.\n */\nexport const DbSystemValues: DbSystemValues =\n  /*#__PURE__*/ createConstMap<DbSystemValues>([\n    TMP_DBSYSTEMVALUES_OTHER_SQL,\n    TMP_DBSYSTEMVALUES_MSSQL,\n    TMP_DBSYSTEMVALUES_MYSQL,\n    TMP_DBSYSTEMVALUES_ORACLE,\n    TMP_DBSYSTEMVALUES_DB2,\n    TMP_DBSYSTEMVALUES_POSTGRESQL,\n    TMP_DBSYSTEMVALUES_REDSHIFT,\n    TMP_DBSYSTEMVALUES_HIVE,\n    TMP_DBSYSTEMVALUES_CLOUDSCAPE,\n    TMP_DBSYSTEMVALUES_HSQLDB,\n    TMP_DBSYSTEMVALUES_PROGRESS,\n    TMP_DBSYSTEMVALUES_MAXDB,\n    TMP_DBSYSTEMVALUES_HANADB,\n    TMP_DBSYSTEMVALUES_INGRES,\n    TMP_DBSYSTEMVALUES_FIRSTSQL,\n    TMP_DBSYSTEMVALUES_EDB,\n    TMP_DBSYSTEMVALUES_CACHE,\n    TMP_DBSYSTEMVALUES_ADABAS,\n    TMP_DBSYSTEMVALUES_FIREBIRD,\n    TMP_DBSYSTEMVALUES_DERBY,\n    TMP_DBSYSTEMVALUES_FILEMAKER,\n    TMP_DBSYSTEMVALUES_INFORMIX,\n    TMP_DBSYSTEMVALUES_INSTANTDB,\n    TMP_DBSYSTEMVALUES_INTERBASE,\n    TMP_DBSYSTEMVALUES_MARIADB,\n    TMP_DBSYSTEMVALUES_NETEZZA,\n    TMP_DBSYSTEMVALUES_PERVASIVE,\n    TMP_DBSYSTEMVALUES_POINTBASE,\n    TMP_DBSYSTEMVALUES_SQLITE,\n    TMP_DBSYSTEMVALUES_SYBASE,\n    TMP_DBSYSTEMVALUES_TERADATA,\n    TMP_DBSYSTEMVALUES_VERTICA,\n    TMP_DBSYSTEMVALUES_H2,\n    TMP_DBSYSTEMVALUES_COLDFUSION,\n    TMP_DBSYSTEMVALUES_CASSANDRA,\n    TMP_DBSYSTEMVALUES_HBASE,\n    TMP_DBSYSTEMVALUES_MONGODB,\n    TMP_DBSYSTEMVALUES_REDIS,\n    TMP_DBSYSTEMVALUES_COUCHBASE,\n    TMP_DBSYSTEMVALUES_COUCHDB,\n    TMP_DBSYSTEMVALUES_COSMOSDB,\n    TMP_DBSYSTEMVALUES_DYNAMODB,\n    TMP_DBSYSTEMVALUES_NEO4J,\n    TMP_DBSYSTEMVALUES_GEODE,\n    TMP_DBSYSTEMVALUES_ELASTICSEARCH,\n    TMP_DBSYSTEMVALUES_MEMCACHED,\n    TMP_DBSYSTEMVALUES_COCKROACHDB,\n  ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for DbCassandraConsistencyLevelValues enum definition\n *\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL = 'all';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM = 'each_quorum';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM = 'quorum';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM = 'local_quorum';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE = 'one';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO = 'two';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE = 'three';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE = 'local_one';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY = 'any';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL = 'serial';\nconst TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL = 'local_serial';\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ALL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_ALL =\n  TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_EACH_QUORUM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM =\n  TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_QUORUM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM =\n  TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_QUORUM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM =\n  TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ONE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_ONE =\n  TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_TWO in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_TWO =\n  TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_THREE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_THREE =\n  TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_ONE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE =\n  TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_ANY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_ANY =\n  TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_SERIAL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL =\n  TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL;\n\n/**\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n *\n * @deprecated Use DB_CASSANDRA_CONSISTENCY_LEVEL_VALUE_LOCAL_SERIAL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL =\n  TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL;\n\n/**\n * Identifies the Values for DbCassandraConsistencyLevelValues enum definition\n *\n * The consistency level of the query. Based on consistency values from [CQL](https://docs.datastax.com/en/cassandra-oss/3.0/cassandra/dml/dmlConfigConsistency.html).\n * @deprecated Use the DBCASSANDRACONSISTENCYLEVELVALUES_XXXXX constants rather than the DbCassandraConsistencyLevelValues.XXXXX for bundle minification.\n */\nexport type DbCassandraConsistencyLevelValues = {\n  /** all. */\n  ALL: 'all';\n\n  /** each_quorum. */\n  EACH_QUORUM: 'each_quorum';\n\n  /** quorum. */\n  QUORUM: 'quorum';\n\n  /** local_quorum. */\n  LOCAL_QUORUM: 'local_quorum';\n\n  /** one. */\n  ONE: 'one';\n\n  /** two. */\n  TWO: 'two';\n\n  /** three. */\n  THREE: 'three';\n\n  /** local_one. */\n  LOCAL_ONE: 'local_one';\n\n  /** any. */\n  ANY: 'any';\n\n  /** serial. */\n  SERIAL: 'serial';\n\n  /** local_serial. */\n  LOCAL_SERIAL: 'local_serial';\n};\n\n/**\n * The constant map of values for DbCassandraConsistencyLevelValues.\n * @deprecated Use the DBCASSANDRACONSISTENCYLEVELVALUES_XXXXX constants rather than the DbCassandraConsistencyLevelValues.XXXXX for bundle minification.\n */\nexport const DbCassandraConsistencyLevelValues: DbCassandraConsistencyLevelValues =\n  /*#__PURE__*/ createConstMap<DbCassandraConsistencyLevelValues>([\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL,\n    TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL,\n  ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for FaasTriggerValues enum definition\n *\n * Type of the trigger on which the function is executed.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_FAASTRIGGERVALUES_DATASOURCE = 'datasource';\nconst TMP_FAASTRIGGERVALUES_HTTP = 'http';\nconst TMP_FAASTRIGGERVALUES_PUBSUB = 'pubsub';\nconst TMP_FAASTRIGGERVALUES_TIMER = 'timer';\nconst TMP_FAASTRIGGERVALUES_OTHER = 'other';\n\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_DATASOURCE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASTRIGGERVALUES_DATASOURCE = TMP_FAASTRIGGERVALUES_DATASOURCE;\n\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_HTTP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASTRIGGERVALUES_HTTP = TMP_FAASTRIGGERVALUES_HTTP;\n\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_PUBSUB in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASTRIGGERVALUES_PUBSUB = TMP_FAASTRIGGERVALUES_PUBSUB;\n\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_TIMER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASTRIGGERVALUES_TIMER = TMP_FAASTRIGGERVALUES_TIMER;\n\n/**\n * Type of the trigger on which the function is executed.\n *\n * @deprecated Use FAAS_TRIGGER_VALUE_OTHER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASTRIGGERVALUES_OTHER = TMP_FAASTRIGGERVALUES_OTHER;\n\n/**\n * Identifies the Values for FaasTriggerValues enum definition\n *\n * Type of the trigger on which the function is executed.\n * @deprecated Use the FAASTRIGGERVALUES_XXXXX constants rather than the FaasTriggerValues.XXXXX for bundle minification.\n */\nexport type FaasTriggerValues = {\n  /** A response to some data source operation such as a database or filesystem read/write. */\n  DATASOURCE: 'datasource';\n\n  /** To provide an answer to an inbound HTTP request. */\n  HTTP: 'http';\n\n  /** A function is set to be executed when messages are sent to a messaging system. */\n  PUBSUB: 'pubsub';\n\n  /** A function is scheduled to be executed regularly. */\n  TIMER: 'timer';\n\n  /** If none of the others apply. */\n  OTHER: 'other';\n};\n\n/**\n * The constant map of values for FaasTriggerValues.\n * @deprecated Use the FAASTRIGGERVALUES_XXXXX constants rather than the FaasTriggerValues.XXXXX for bundle minification.\n */\nexport const FaasTriggerValues: FaasTriggerValues =\n  /*#__PURE__*/ createConstMap<FaasTriggerValues>([\n    TMP_FAASTRIGGERVALUES_DATASOURCE,\n    TMP_FAASTRIGGERVALUES_HTTP,\n    TMP_FAASTRIGGERVALUES_PUBSUB,\n    TMP_FAASTRIGGERVALUES_TIMER,\n    TMP_FAASTRIGGERVALUES_OTHER,\n  ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for FaasDocumentOperationValues enum definition\n *\n * Describes the type of the operation that was performed on the data.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_FAASDOCUMENTOPERATIONVALUES_INSERT = 'insert';\nconst TMP_FAASDOCUMENTOPERATIONVALUES_EDIT = 'edit';\nconst TMP_FAASDOCUMENTOPERATIONVALUES_DELETE = 'delete';\n\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @deprecated Use FAAS_DOCUMENT_OPERATION_VALUE_INSERT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASDOCUMENTOPERATIONVALUES_INSERT =\n  TMP_FAASDOCUMENTOPERATIONVALUES_INSERT;\n\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @deprecated Use FAAS_DOCUMENT_OPERATION_VALUE_EDIT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASDOCUMENTOPERATIONVALUES_EDIT =\n  TMP_FAASDOCUMENTOPERATIONVALUES_EDIT;\n\n/**\n * Describes the type of the operation that was performed on the data.\n *\n * @deprecated Use FAAS_DOCUMENT_OPERATION_VALUE_DELETE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASDOCUMENTOPERATIONVALUES_DELETE =\n  TMP_FAASDOCUMENTOPERATIONVALUES_DELETE;\n\n/**\n * Identifies the Values for FaasDocumentOperationValues enum definition\n *\n * Describes the type of the operation that was performed on the data.\n * @deprecated Use the FAASDOCUMENTOPERATIONVALUES_XXXXX constants rather than the FaasDocumentOperationValues.XXXXX for bundle minification.\n */\nexport type FaasDocumentOperationValues = {\n  /** When a new object is created. */\n  INSERT: 'insert';\n\n  /** When an object is modified. */\n  EDIT: 'edit';\n\n  /** When an object is deleted. */\n  DELETE: 'delete';\n};\n\n/**\n * The constant map of values for FaasDocumentOperationValues.\n * @deprecated Use the FAASDOCUMENTOPERATIONVALUES_XXXXX constants rather than the FaasDocumentOperationValues.XXXXX for bundle minification.\n */\nexport const FaasDocumentOperationValues: FaasDocumentOperationValues =\n  /*#__PURE__*/ createConstMap<FaasDocumentOperationValues>([\n    TMP_FAASDOCUMENTOPERATIONVALUES_INSERT,\n    TMP_FAASDOCUMENTOPERATIONVALUES_EDIT,\n    TMP_FAASDOCUMENTOPERATIONVALUES_DELETE,\n  ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for FaasInvokedProviderValues enum definition\n *\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD = 'alibaba_cloud';\nconst TMP_FAASINVOKEDPROVIDERVALUES_AWS = 'aws';\nconst TMP_FAASINVOKEDPROVIDERVALUES_AZURE = 'azure';\nconst TMP_FAASINVOKEDPROVIDERVALUES_GCP = 'gcp';\n\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use FAAS_INVOKED_PROVIDER_VALUE_ALIBABA_CLOUD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD =\n  TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD;\n\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use FAAS_INVOKED_PROVIDER_VALUE_AWS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASINVOKEDPROVIDERVALUES_AWS = TMP_FAASINVOKEDPROVIDERVALUES_AWS;\n\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use FAAS_INVOKED_PROVIDER_VALUE_AZURE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASINVOKEDPROVIDERVALUES_AZURE =\n  TMP_FAASINVOKEDPROVIDERVALUES_AZURE;\n\n/**\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n *\n * @deprecated Use FAAS_INVOKED_PROVIDER_VALUE_GCP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const FAASINVOKEDPROVIDERVALUES_GCP = TMP_FAASINVOKEDPROVIDERVALUES_GCP;\n\n/**\n * Identifies the Values for FaasInvokedProviderValues enum definition\n *\n * The cloud provider of the invoked function.\n *\n * Note: SHOULD be equal to the `cloud.provider` resource attribute of the invoked function.\n * @deprecated Use the FAASINVOKEDPROVIDERVALUES_XXXXX constants rather than the FaasInvokedProviderValues.XXXXX for bundle minification.\n */\nexport type FaasInvokedProviderValues = {\n  /** Alibaba Cloud. */\n  ALIBABA_CLOUD: 'alibaba_cloud';\n\n  /** Amazon Web Services. */\n  AWS: 'aws';\n\n  /** Microsoft Azure. */\n  AZURE: 'azure';\n\n  /** Google Cloud Platform. */\n  GCP: 'gcp';\n};\n\n/**\n * The constant map of values for FaasInvokedProviderValues.\n * @deprecated Use the FAASINVOKEDPROVIDERVALUES_XXXXX constants rather than the FaasInvokedProviderValues.XXXXX for bundle minification.\n */\nexport const FaasInvokedProviderValues: FaasInvokedProviderValues =\n  /*#__PURE__*/ createConstMap<FaasInvokedProviderValues>([\n    TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD,\n    TMP_FAASINVOKEDPROVIDERVALUES_AWS,\n    TMP_FAASINVOKEDPROVIDERVALUES_AZURE,\n    TMP_FAASINVOKEDPROVIDERVALUES_GCP,\n  ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetTransportValues enum definition\n *\n * Transport protocol used. See note below.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_NETTRANSPORTVALUES_IP_TCP = 'ip_tcp';\nconst TMP_NETTRANSPORTVALUES_IP_UDP = 'ip_udp';\nconst TMP_NETTRANSPORTVALUES_IP = 'ip';\nconst TMP_NETTRANSPORTVALUES_UNIX = 'unix';\nconst TMP_NETTRANSPORTVALUES_PIPE = 'pipe';\nconst TMP_NETTRANSPORTVALUES_INPROC = 'inproc';\nconst TMP_NETTRANSPORTVALUES_OTHER = 'other';\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_IP_TCP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETTRANSPORTVALUES_IP_TCP = TMP_NETTRANSPORTVALUES_IP_TCP;\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_IP_UDP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETTRANSPORTVALUES_IP_UDP = TMP_NETTRANSPORTVALUES_IP_UDP;\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Removed in v1.21.0.\n */\nexport const NETTRANSPORTVALUES_IP = TMP_NETTRANSPORTVALUES_IP;\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Removed in v1.21.0.\n */\nexport const NETTRANSPORTVALUES_UNIX = TMP_NETTRANSPORTVALUES_UNIX;\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_PIPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETTRANSPORTVALUES_PIPE = TMP_NETTRANSPORTVALUES_PIPE;\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_INPROC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETTRANSPORTVALUES_INPROC = TMP_NETTRANSPORTVALUES_INPROC;\n\n/**\n * Transport protocol used. See note below.\n *\n * @deprecated Use NET_TRANSPORT_VALUE_OTHER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETTRANSPORTVALUES_OTHER = TMP_NETTRANSPORTVALUES_OTHER;\n\n/**\n * Identifies the Values for NetTransportValues enum definition\n *\n * Transport protocol used. See note below.\n * @deprecated Use the NETTRANSPORTVALUES_XXXXX constants rather than the NetTransportValues.XXXXX for bundle minification.\n */\nexport type NetTransportValues = {\n  /** ip_tcp. */\n  IP_TCP: 'ip_tcp';\n\n  /** ip_udp. */\n  IP_UDP: 'ip_udp';\n\n  /** Another IP-based protocol. */\n  IP: 'ip';\n\n  /** Unix Domain socket. See below. */\n  UNIX: 'unix';\n\n  /** Named or anonymous pipe. See note below. */\n  PIPE: 'pipe';\n\n  /** In-process communication. */\n  INPROC: 'inproc';\n\n  /** Something else (non IP-based). */\n  OTHER: 'other';\n};\n\n/**\n * The constant map of values for NetTransportValues.\n * @deprecated Use the NETTRANSPORTVALUES_XXXXX constants rather than the NetTransportValues.XXXXX for bundle minification.\n */\nexport const NetTransportValues: NetTransportValues =\n  /*#__PURE__*/ createConstMap<NetTransportValues>([\n    TMP_NETTRANSPORTVALUES_IP_TCP,\n    TMP_NETTRANSPORTVALUES_IP_UDP,\n    TMP_NETTRANSPORTVALUES_IP,\n    TMP_NETTRANSPORTVALUES_UNIX,\n    TMP_NETTRANSPORTVALUES_PIPE,\n    TMP_NETTRANSPORTVALUES_INPROC,\n    TMP_NETTRANSPORTVALUES_OTHER,\n  ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetHostConnectionTypeValues enum definition\n *\n * The internet connection type currently being used by the host.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI = 'wifi';\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED = 'wired';\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_CELL = 'cell';\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE = 'unavailable';\nconst TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN = 'unknown';\n\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_WIFI in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONTYPEVALUES_WIFI =\n  TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI;\n\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_WIRED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONTYPEVALUES_WIRED =\n  TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED;\n\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_CELL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONTYPEVALUES_CELL =\n  TMP_NETHOSTCONNECTIONTYPEVALUES_CELL;\n\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_UNAVAILABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE =\n  TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE;\n\n/**\n * The internet connection type currently being used by the host.\n *\n * @deprecated Use NETWORK_CONNECTION_TYPE_VALUE_UNKNOWN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONTYPEVALUES_UNKNOWN =\n  TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN;\n\n/**\n * Identifies the Values for NetHostConnectionTypeValues enum definition\n *\n * The internet connection type currently being used by the host.\n * @deprecated Use the NETHOSTCONNECTIONTYPEVALUES_XXXXX constants rather than the NetHostConnectionTypeValues.XXXXX for bundle minification.\n */\nexport type NetHostConnectionTypeValues = {\n  /** wifi. */\n  WIFI: 'wifi';\n\n  /** wired. */\n  WIRED: 'wired';\n\n  /** cell. */\n  CELL: 'cell';\n\n  /** unavailable. */\n  UNAVAILABLE: 'unavailable';\n\n  /** unknown. */\n  UNKNOWN: 'unknown';\n};\n\n/**\n * The constant map of values for NetHostConnectionTypeValues.\n * @deprecated Use the NETHOSTCONNECTIONTYPEVALUES_XXXXX constants rather than the NetHostConnectionTypeValues.XXXXX for bundle minification.\n */\nexport const NetHostConnectionTypeValues: NetHostConnectionTypeValues =\n  /*#__PURE__*/ createConstMap<NetHostConnectionTypeValues>([\n    TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI,\n    TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED,\n    TMP_NETHOSTCONNECTIONTYPEVALUES_CELL,\n    TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE,\n    TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN,\n  ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for NetHostConnectionSubtypeValues enum definition\n *\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS = 'gprs';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE = 'edge';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS = 'umts';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA = 'cdma';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0 = 'evdo_0';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A = 'evdo_a';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT = 'cdma2000_1xrtt';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA = 'hsdpa';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA = 'hsupa';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA = 'hspa';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN = 'iden';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B = 'evdo_b';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE = 'lte';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD = 'ehrpd';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP = 'hspap';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM = 'gsm';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA = 'td_scdma';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN = 'iwlan';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR = 'nr';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA = 'nrnsa';\nconst TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA = 'lte_ca';\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_GPRS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_GPRS =\n  TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EDGE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_EDGE =\n  TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_UMTS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_UMTS =\n  TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_CDMA =\n  TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_0 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0 =\n  TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_A in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A =\n  TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_CDMA2000_1XRTT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT =\n  TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_HSDPA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA =\n  TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_HSUPA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA =\n  TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_HSPA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_HSPA =\n  TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_IDEN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_IDEN =\n  TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EVDO_B in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B =\n  TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_LTE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_LTE =\n  TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_EHRPD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD =\n  TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_HSPAP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP =\n  TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_GSM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_GSM =\n  TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_TD_SCDMA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA =\n  TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_IWLAN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN =\n  TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_NR in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_NR =\n  TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_NRNSA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA =\n  TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA;\n\n/**\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n *\n * @deprecated Use NETWORK_CONNECTION_SUBTYPE_VALUE_LTE_CA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA =\n  TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA;\n\n/**\n * Identifies the Values for NetHostConnectionSubtypeValues enum definition\n *\n * This describes more details regarding the connection.type. It may be the type of cell technology connection, but it could be used for describing details about a wifi connection.\n * @deprecated Use the NETHOSTCONNECTIONSUBTYPEVALUES_XXXXX constants rather than the NetHostConnectionSubtypeValues.XXXXX for bundle minification.\n */\nexport type NetHostConnectionSubtypeValues = {\n  /** GPRS. */\n  GPRS: 'gprs';\n\n  /** EDGE. */\n  EDGE: 'edge';\n\n  /** UMTS. */\n  UMTS: 'umts';\n\n  /** CDMA. */\n  CDMA: 'cdma';\n\n  /** EVDO Rel. 0. */\n  EVDO_0: 'evdo_0';\n\n  /** EVDO Rev. A. */\n  EVDO_A: 'evdo_a';\n\n  /** CDMA2000 1XRTT. */\n  CDMA2000_1XRTT: 'cdma2000_1xrtt';\n\n  /** HSDPA. */\n  HSDPA: 'hsdpa';\n\n  /** HSUPA. */\n  HSUPA: 'hsupa';\n\n  /** HSPA. */\n  HSPA: 'hspa';\n\n  /** IDEN. */\n  IDEN: 'iden';\n\n  /** EVDO Rev. B. */\n  EVDO_B: 'evdo_b';\n\n  /** LTE. */\n  LTE: 'lte';\n\n  /** EHRPD. */\n  EHRPD: 'ehrpd';\n\n  /** HSPAP. */\n  HSPAP: 'hspap';\n\n  /** GSM. */\n  GSM: 'gsm';\n\n  /** TD-SCDMA. */\n  TD_SCDMA: 'td_scdma';\n\n  /** IWLAN. */\n  IWLAN: 'iwlan';\n\n  /** 5G NR (New Radio). */\n  NR: 'nr';\n\n  /** 5G NRNSA (New Radio Non-Standalone). */\n  NRNSA: 'nrnsa';\n\n  /** LTE CA. */\n  LTE_CA: 'lte_ca';\n};\n\n/**\n * The constant map of values for NetHostConnectionSubtypeValues.\n * @deprecated Use the NETHOSTCONNECTIONSUBTYPEVALUES_XXXXX constants rather than the NetHostConnectionSubtypeValues.XXXXX for bundle minification.\n */\nexport const NetHostConnectionSubtypeValues: NetHostConnectionSubtypeValues =\n  /*#__PURE__*/ createConstMap<NetHostConnectionSubtypeValues>([\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA,\n    TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA,\n  ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for HttpFlavorValues enum definition\n *\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_HTTPFLAVORVALUES_HTTP_1_0 = '1.0';\nconst TMP_HTTPFLAVORVALUES_HTTP_1_1 = '1.1';\nconst TMP_HTTPFLAVORVALUES_HTTP_2_0 = '2.0';\nconst TMP_HTTPFLAVORVALUES_SPDY = 'SPDY';\nconst TMP_HTTPFLAVORVALUES_QUIC = 'QUIC';\n\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_HTTP_1_0 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HTTPFLAVORVALUES_HTTP_1_0 = TMP_HTTPFLAVORVALUES_HTTP_1_0;\n\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_HTTP_1_1 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HTTPFLAVORVALUES_HTTP_1_1 = TMP_HTTPFLAVORVALUES_HTTP_1_1;\n\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_HTTP_2_0 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HTTPFLAVORVALUES_HTTP_2_0 = TMP_HTTPFLAVORVALUES_HTTP_2_0;\n\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_SPDY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HTTPFLAVORVALUES_SPDY = TMP_HTTPFLAVORVALUES_SPDY;\n\n/**\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n *\n * @deprecated Use HTTP_FLAVOR_VALUE_QUIC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HTTPFLAVORVALUES_QUIC = TMP_HTTPFLAVORVALUES_QUIC;\n\n/**\n * Identifies the Values for HttpFlavorValues enum definition\n *\n * Kind of HTTP protocol used.\n *\n * Note: If `net.transport` is not specified, it can be assumed to be `IP.TCP` except if `http.flavor` is `QUIC`, in which case `IP.UDP` is assumed.\n * @deprecated Use the HTTPFLAVORVALUES_XXXXX constants rather than the HttpFlavorValues.XXXXX for bundle minification.\n */\nexport type HttpFlavorValues = {\n  /** HTTP 1.0. */\n  HTTP_1_0: '1.0';\n\n  /** HTTP 1.1. */\n  HTTP_1_1: '1.1';\n\n  /** HTTP 2. */\n  HTTP_2_0: '2.0';\n\n  /** SPDY protocol. */\n  SPDY: 'SPDY';\n\n  /** QUIC protocol. */\n  QUIC: 'QUIC';\n};\n\n/**\n * The constant map of values for HttpFlavorValues.\n * @deprecated Use the HTTPFLAVORVALUES_XXXXX constants rather than the HttpFlavorValues.XXXXX for bundle minification.\n */\nexport const HttpFlavorValues: HttpFlavorValues = {\n  HTTP_1_0: TMP_HTTPFLAVORVALUES_HTTP_1_0,\n  HTTP_1_1: TMP_HTTPFLAVORVALUES_HTTP_1_1,\n  HTTP_2_0: TMP_HTTPFLAVORVALUES_HTTP_2_0,\n  SPDY: TMP_HTTPFLAVORVALUES_SPDY,\n  QUIC: TMP_HTTPFLAVORVALUES_QUIC,\n};\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessagingDestinationKindValues enum definition\n *\n * The kind of message destination.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE = 'queue';\nconst TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC = 'topic';\n\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport const MESSAGINGDESTINATIONKINDVALUES_QUEUE =\n  TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE;\n\n/**\n * The kind of message destination.\n *\n * @deprecated Removed in semconv v1.20.0.\n */\nexport const MESSAGINGDESTINATIONKINDVALUES_TOPIC =\n  TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC;\n\n/**\n * Identifies the Values for MessagingDestinationKindValues enum definition\n *\n * The kind of message destination.\n * @deprecated Use the MESSAGINGDESTINATIONKINDVALUES_XXXXX constants rather than the MessagingDestinationKindValues.XXXXX for bundle minification.\n */\nexport type MessagingDestinationKindValues = {\n  /** A message sent to a queue. */\n  QUEUE: 'queue';\n\n  /** A message sent to a topic. */\n  TOPIC: 'topic';\n};\n\n/**\n * The constant map of values for MessagingDestinationKindValues.\n * @deprecated Use the MESSAGINGDESTINATIONKINDVALUES_XXXXX constants rather than the MessagingDestinationKindValues.XXXXX for bundle minification.\n */\nexport const MessagingDestinationKindValues: MessagingDestinationKindValues =\n  /*#__PURE__*/ createConstMap<MessagingDestinationKindValues>([\n    TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE,\n    TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC,\n  ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessagingOperationValues enum definition\n *\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is &#34;send&#34;, this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_MESSAGINGOPERATIONVALUES_RECEIVE = 'receive';\nconst TMP_MESSAGINGOPERATIONVALUES_PROCESS = 'process';\n\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is &#34;send&#34;, this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n *\n * @deprecated Use MESSAGING_OPERATION_TYPE_VALUE_RECEIVE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const MESSAGINGOPERATIONVALUES_RECEIVE =\n  TMP_MESSAGINGOPERATIONVALUES_RECEIVE;\n\n/**\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is &#34;send&#34;, this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n *\n * @deprecated Use MESSAGING_OPERATION_TYPE_VALUE_PROCESS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const MESSAGINGOPERATIONVALUES_PROCESS =\n  TMP_MESSAGINGOPERATIONVALUES_PROCESS;\n\n/**\n * Identifies the Values for MessagingOperationValues enum definition\n *\n * A string identifying the kind of message consumption as defined in the [Operation names](#operation-names) section above. If the operation is &#34;send&#34;, this attribute MUST NOT be set, since the operation can be inferred from the span kind in that case.\n * @deprecated Use the MESSAGINGOPERATIONVALUES_XXXXX constants rather than the MessagingOperationValues.XXXXX for bundle minification.\n */\nexport type MessagingOperationValues = {\n  /** receive. */\n  RECEIVE: 'receive';\n\n  /** process. */\n  PROCESS: 'process';\n};\n\n/**\n * The constant map of values for MessagingOperationValues.\n * @deprecated Use the MESSAGINGOPERATIONVALUES_XXXXX constants rather than the MessagingOperationValues.XXXXX for bundle minification.\n */\nexport const MessagingOperationValues: MessagingOperationValues =\n  /*#__PURE__*/ createConstMap<MessagingOperationValues>([\n    TMP_MESSAGINGOPERATIONVALUES_RECEIVE,\n    TMP_MESSAGINGOPERATIONVALUES_PROCESS,\n  ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for RpcGrpcStatusCodeValues enum definition\n *\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_RPCGRPCSTATUSCODEVALUES_OK = 0;\nconst TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED = 1;\nconst TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN = 2;\nconst TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT = 3;\nconst TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED = 4;\nconst TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND = 5;\nconst TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS = 6;\nconst TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED = 7;\nconst TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED = 8;\nconst TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION = 9;\nconst TMP_RPCGRPCSTATUSCODEVALUES_ABORTED = 10;\nconst TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE = 11;\nconst TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED = 12;\nconst TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL = 13;\nconst TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE = 14;\nconst TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS = 15;\nconst TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED = 16;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_OK in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_OK = TMP_RPCGRPCSTATUSCODEVALUES_OK;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_CANCELLED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_CANCELLED =\n  TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_UNKNOWN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_UNKNOWN =\n  TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_INVALID_ARGUMENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT =\n  TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_DEADLINE_EXCEEDED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED =\n  TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_NOT_FOUND in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_NOT_FOUND =\n  TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_ALREADY_EXISTS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS =\n  TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_PERMISSION_DENIED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED =\n  TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_RESOURCE_EXHAUSTED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED =\n  TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_FAILED_PRECONDITION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION =\n  TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_ABORTED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_ABORTED =\n  TMP_RPCGRPCSTATUSCODEVALUES_ABORTED;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_OUT_OF_RANGE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE =\n  TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_UNIMPLEMENTED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED =\n  TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_INTERNAL in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_INTERNAL =\n  TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_UNAVAILABLE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_UNAVAILABLE =\n  TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_DATA_LOSS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_DATA_LOSS =\n  TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS;\n\n/**\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n *\n * @deprecated Use RPC_GRPC_STATUS_CODE_VALUE_UNAUTHENTICATED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED =\n  TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED;\n\n/**\n * Identifies the Values for RpcGrpcStatusCodeValues enum definition\n *\n * The [numeric status code](https://github.com/grpc/grpc/blob/v1.33.2/doc/statuscodes.md) of the gRPC request.\n * @deprecated Use the RPCGRPCSTATUSCODEVALUES_XXXXX constants rather than the RpcGrpcStatusCodeValues.XXXXX for bundle minification.\n */\nexport type RpcGrpcStatusCodeValues = {\n  /** OK. */\n  OK: 0;\n\n  /** CANCELLED. */\n  CANCELLED: 1;\n\n  /** UNKNOWN. */\n  UNKNOWN: 2;\n\n  /** INVALID_ARGUMENT. */\n  INVALID_ARGUMENT: 3;\n\n  /** DEADLINE_EXCEEDED. */\n  DEADLINE_EXCEEDED: 4;\n\n  /** NOT_FOUND. */\n  NOT_FOUND: 5;\n\n  /** ALREADY_EXISTS. */\n  ALREADY_EXISTS: 6;\n\n  /** PERMISSION_DENIED. */\n  PERMISSION_DENIED: 7;\n\n  /** RESOURCE_EXHAUSTED. */\n  RESOURCE_EXHAUSTED: 8;\n\n  /** FAILED_PRECONDITION. */\n  FAILED_PRECONDITION: 9;\n\n  /** ABORTED. */\n  ABORTED: 10;\n\n  /** OUT_OF_RANGE. */\n  OUT_OF_RANGE: 11;\n\n  /** UNIMPLEMENTED. */\n  UNIMPLEMENTED: 12;\n\n  /** INTERNAL. */\n  INTERNAL: 13;\n\n  /** UNAVAILABLE. */\n  UNAVAILABLE: 14;\n\n  /** DATA_LOSS. */\n  DATA_LOSS: 15;\n\n  /** UNAUTHENTICATED. */\n  UNAUTHENTICATED: 16;\n};\n\n/**\n * The constant map of values for RpcGrpcStatusCodeValues.\n * @deprecated Use the RPCGRPCSTATUSCODEVALUES_XXXXX constants rather than the RpcGrpcStatusCodeValues.XXXXX for bundle minification.\n */\nexport const RpcGrpcStatusCodeValues: RpcGrpcStatusCodeValues = {\n  OK: TMP_RPCGRPCSTATUSCODEVALUES_OK,\n  CANCELLED: TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED,\n  UNKNOWN: TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN,\n  INVALID_ARGUMENT: TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT,\n  DEADLINE_EXCEEDED: TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED,\n  NOT_FOUND: TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND,\n  ALREADY_EXISTS: TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS,\n  PERMISSION_DENIED: TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED,\n  RESOURCE_EXHAUSTED: TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED,\n  FAILED_PRECONDITION: TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION,\n  ABORTED: TMP_RPCGRPCSTATUSCODEVALUES_ABORTED,\n  OUT_OF_RANGE: TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE,\n  UNIMPLEMENTED: TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED,\n  INTERNAL: TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL,\n  UNAVAILABLE: TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE,\n  DATA_LOSS: TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS,\n  UNAUTHENTICATED: TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED,\n};\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for MessageTypeValues enum definition\n *\n * Whether this is a received or sent message.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_MESSAGETYPEVALUES_SENT = 'SENT';\nconst TMP_MESSAGETYPEVALUES_RECEIVED = 'RECEIVED';\n\n/**\n * Whether this is a received or sent message.\n *\n * @deprecated Use MESSAGE_TYPE_VALUE_SENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const MESSAGETYPEVALUES_SENT = TMP_MESSAGETYPEVALUES_SENT;\n\n/**\n * Whether this is a received or sent message.\n *\n * @deprecated Use MESSAGE_TYPE_VALUE_RECEIVED in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const MESSAGETYPEVALUES_RECEIVED = TMP_MESSAGETYPEVALUES_RECEIVED;\n\n/**\n * Identifies the Values for MessageTypeValues enum definition\n *\n * Whether this is a received or sent message.\n * @deprecated Use the MESSAGETYPEVALUES_XXXXX constants rather than the MessageTypeValues.XXXXX for bundle minification.\n */\nexport type MessageTypeValues = {\n  /** sent. */\n  SENT: 'SENT';\n\n  /** received. */\n  RECEIVED: 'RECEIVED';\n};\n\n/**\n * The constant map of values for MessageTypeValues.\n * @deprecated Use the MESSAGETYPEVALUES_XXXXX constants rather than the MessageTypeValues.XXXXX for bundle minification.\n */\nexport const MessageTypeValues: MessageTypeValues =\n  /*#__PURE__*/ createConstMap<MessageTypeValues>([\n    TMP_MESSAGETYPEVALUES_SENT,\n    TMP_MESSAGETYPEVALUES_RECEIVED,\n  ]);\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable no-restricted-syntax --\n * These re-exports are only of constants, only one-level deep at this point,\n * and should not cause problems for tree-shakers.\n */\nexport * from './SemanticAttributes';\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { createConstMap } from '../internal/utils';\n\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates//templates/SemanticAttributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n\n//----------------------------------------------------------------------------------------------------------\n// Constant values for SemanticResourceAttributes\n//----------------------------------------------------------------------------------------------------------\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_CLOUD_PROVIDER = 'cloud.provider';\nconst TMP_CLOUD_ACCOUNT_ID = 'cloud.account.id';\nconst TMP_CLOUD_REGION = 'cloud.region';\nconst TMP_CLOUD_AVAILABILITY_ZONE = 'cloud.availability_zone';\nconst TMP_CLOUD_PLATFORM = 'cloud.platform';\nconst TMP_AWS_ECS_CONTAINER_ARN = 'aws.ecs.container.arn';\nconst TMP_AWS_ECS_CLUSTER_ARN = 'aws.ecs.cluster.arn';\nconst TMP_AWS_ECS_LAUNCHTYPE = 'aws.ecs.launchtype';\nconst TMP_AWS_ECS_TASK_ARN = 'aws.ecs.task.arn';\nconst TMP_AWS_ECS_TASK_FAMILY = 'aws.ecs.task.family';\nconst TMP_AWS_ECS_TASK_REVISION = 'aws.ecs.task.revision';\nconst TMP_AWS_EKS_CLUSTER_ARN = 'aws.eks.cluster.arn';\nconst TMP_AWS_LOG_GROUP_NAMES = 'aws.log.group.names';\nconst TMP_AWS_LOG_GROUP_ARNS = 'aws.log.group.arns';\nconst TMP_AWS_LOG_STREAM_NAMES = 'aws.log.stream.names';\nconst TMP_AWS_LOG_STREAM_ARNS = 'aws.log.stream.arns';\nconst TMP_CONTAINER_NAME = 'container.name';\nconst TMP_CONTAINER_ID = 'container.id';\nconst TMP_CONTAINER_RUNTIME = 'container.runtime';\nconst TMP_CONTAINER_IMAGE_NAME = 'container.image.name';\nconst TMP_CONTAINER_IMAGE_TAG = 'container.image.tag';\nconst TMP_DEPLOYMENT_ENVIRONMENT = 'deployment.environment';\nconst TMP_DEVICE_ID = 'device.id';\nconst TMP_DEVICE_MODEL_IDENTIFIER = 'device.model.identifier';\nconst TMP_DEVICE_MODEL_NAME = 'device.model.name';\nconst TMP_FAAS_NAME = 'faas.name';\nconst TMP_FAAS_ID = 'faas.id';\nconst TMP_FAAS_VERSION = 'faas.version';\nconst TMP_FAAS_INSTANCE = 'faas.instance';\nconst TMP_FAAS_MAX_MEMORY = 'faas.max_memory';\nconst TMP_HOST_ID = 'host.id';\nconst TMP_HOST_NAME = 'host.name';\nconst TMP_HOST_TYPE = 'host.type';\nconst TMP_HOST_ARCH = 'host.arch';\nconst TMP_HOST_IMAGE_NAME = 'host.image.name';\nconst TMP_HOST_IMAGE_ID = 'host.image.id';\nconst TMP_HOST_IMAGE_VERSION = 'host.image.version';\nconst TMP_K8S_CLUSTER_NAME = 'k8s.cluster.name';\nconst TMP_K8S_NODE_NAME = 'k8s.node.name';\nconst TMP_K8S_NODE_UID = 'k8s.node.uid';\nconst TMP_K8S_NAMESPACE_NAME = 'k8s.namespace.name';\nconst TMP_K8S_POD_UID = 'k8s.pod.uid';\nconst TMP_K8S_POD_NAME = 'k8s.pod.name';\nconst TMP_K8S_CONTAINER_NAME = 'k8s.container.name';\nconst TMP_K8S_REPLICASET_UID = 'k8s.replicaset.uid';\nconst TMP_K8S_REPLICASET_NAME = 'k8s.replicaset.name';\nconst TMP_K8S_DEPLOYMENT_UID = 'k8s.deployment.uid';\nconst TMP_K8S_DEPLOYMENT_NAME = 'k8s.deployment.name';\nconst TMP_K8S_STATEFULSET_UID = 'k8s.statefulset.uid';\nconst TMP_K8S_STATEFULSET_NAME = 'k8s.statefulset.name';\nconst TMP_K8S_DAEMONSET_UID = 'k8s.daemonset.uid';\nconst TMP_K8S_DAEMONSET_NAME = 'k8s.daemonset.name';\nconst TMP_K8S_JOB_UID = 'k8s.job.uid';\nconst TMP_K8S_JOB_NAME = 'k8s.job.name';\nconst TMP_K8S_CRONJOB_UID = 'k8s.cronjob.uid';\nconst TMP_K8S_CRONJOB_NAME = 'k8s.cronjob.name';\nconst TMP_OS_TYPE = 'os.type';\nconst TMP_OS_DESCRIPTION = 'os.description';\nconst TMP_OS_NAME = 'os.name';\nconst TMP_OS_VERSION = 'os.version';\nconst TMP_PROCESS_PID = 'process.pid';\nconst TMP_PROCESS_EXECUTABLE_NAME = 'process.executable.name';\nconst TMP_PROCESS_EXECUTABLE_PATH = 'process.executable.path';\nconst TMP_PROCESS_COMMAND = 'process.command';\nconst TMP_PROCESS_COMMAND_LINE = 'process.command_line';\nconst TMP_PROCESS_COMMAND_ARGS = 'process.command_args';\nconst TMP_PROCESS_OWNER = 'process.owner';\nconst TMP_PROCESS_RUNTIME_NAME = 'process.runtime.name';\nconst TMP_PROCESS_RUNTIME_VERSION = 'process.runtime.version';\nconst TMP_PROCESS_RUNTIME_DESCRIPTION = 'process.runtime.description';\nconst TMP_SERVICE_NAME = 'service.name';\nconst TMP_SERVICE_NAMESPACE = 'service.namespace';\nconst TMP_SERVICE_INSTANCE_ID = 'service.instance.id';\nconst TMP_SERVICE_VERSION = 'service.version';\nconst TMP_TELEMETRY_SDK_NAME = 'telemetry.sdk.name';\nconst TMP_TELEMETRY_SDK_LANGUAGE = 'telemetry.sdk.language';\nconst TMP_TELEMETRY_SDK_VERSION = 'telemetry.sdk.version';\nconst TMP_TELEMETRY_AUTO_VERSION = 'telemetry.auto.version';\nconst TMP_WEBENGINE_NAME = 'webengine.name';\nconst TMP_WEBENGINE_VERSION = 'webengine.version';\nconst TMP_WEBENGINE_DESCRIPTION = 'webengine.description';\n\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use ATTR_CLOUD_PROVIDER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CLOUD_PROVIDER = TMP_CLOUD_PROVIDER;\n\n/**\n * The cloud account ID the resource is assigned to.\n *\n * @deprecated Use ATTR_CLOUD_ACCOUNT_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CLOUD_ACCOUNT_ID = TMP_CLOUD_ACCOUNT_ID;\n\n/**\n * The geographical region the resource is running. Refer to your provider&#39;s docs to see the available regions, for example [Alibaba Cloud regions](https://www.alibabacloud.com/help/doc-detail/40654.htm), [AWS regions](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/), [Azure regions](https://azure.microsoft.com/en-us/global-infrastructure/geographies/), or [Google Cloud regions](https://cloud.google.com/about/locations).\n *\n * @deprecated Use ATTR_CLOUD_REGION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CLOUD_REGION = TMP_CLOUD_REGION;\n\n/**\n * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running.\n *\n * Note: Availability zones are called &#34;zones&#34; on Alibaba Cloud and Google Cloud.\n *\n * @deprecated Use ATTR_CLOUD_AVAILABILITY_ZONE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CLOUD_AVAILABILITY_ZONE = TMP_CLOUD_AVAILABILITY_ZONE;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use ATTR_CLOUD_PLATFORM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CLOUD_PLATFORM = TMP_CLOUD_PLATFORM;\n\n/**\n * The Amazon Resource Name (ARN) of an [ECS container instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html).\n *\n * @deprecated Use ATTR_AWS_ECS_CONTAINER_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_ECS_CONTAINER_ARN = TMP_AWS_ECS_CONTAINER_ARN;\n\n/**\n * The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html).\n *\n * @deprecated Use ATTR_AWS_ECS_CLUSTER_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_ECS_CLUSTER_ARN = TMP_AWS_ECS_CLUSTER_ARN;\n\n/**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n *\n * @deprecated Use ATTR_AWS_ECS_LAUNCHTYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_ECS_LAUNCHTYPE = TMP_AWS_ECS_LAUNCHTYPE;\n\n/**\n * The ARN of an [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html).\n *\n * @deprecated Use ATTR_AWS_ECS_TASK_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_ECS_TASK_ARN = TMP_AWS_ECS_TASK_ARN;\n\n/**\n * The task definition family this task definition is a member of.\n *\n * @deprecated Use ATTR_AWS_ECS_TASK_FAMILY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_ECS_TASK_FAMILY = TMP_AWS_ECS_TASK_FAMILY;\n\n/**\n * The revision for this task definition.\n *\n * @deprecated Use ATTR_AWS_ECS_TASK_REVISION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_ECS_TASK_REVISION = TMP_AWS_ECS_TASK_REVISION;\n\n/**\n * The ARN of an EKS cluster.\n *\n * @deprecated Use ATTR_AWS_EKS_CLUSTER_ARN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_EKS_CLUSTER_ARN = TMP_AWS_EKS_CLUSTER_ARN;\n\n/**\n * The name(s) of the AWS log group(s) an application is writing to.\n *\n * Note: Multiple log groups must be supported for cases like multi-container applications, where a single application has sidecar containers, and each write to their own log group.\n *\n * @deprecated Use ATTR_AWS_LOG_GROUP_NAMES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_LOG_GROUP_NAMES = TMP_AWS_LOG_GROUP_NAMES;\n\n/**\n * The Amazon Resource Name(s) (ARN) of the AWS log group(s).\n *\n * Note: See the [log group ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format).\n *\n * @deprecated Use ATTR_AWS_LOG_GROUP_ARNS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_LOG_GROUP_ARNS = TMP_AWS_LOG_GROUP_ARNS;\n\n/**\n * The name(s) of the AWS log stream(s) an application is writing to.\n *\n * @deprecated Use ATTR_AWS_LOG_STREAM_NAMES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_LOG_STREAM_NAMES = TMP_AWS_LOG_STREAM_NAMES;\n\n/**\n * The ARN(s) of the AWS log stream(s).\n *\n * Note: See the [log stream ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format). One log group can contain several log streams, so these ARNs necessarily identify both a log group and a log stream.\n *\n * @deprecated Use ATTR_AWS_LOG_STREAM_ARNS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_AWS_LOG_STREAM_ARNS = TMP_AWS_LOG_STREAM_ARNS;\n\n/**\n * Container name.\n *\n * @deprecated Use ATTR_CONTAINER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CONTAINER_NAME = TMP_CONTAINER_NAME;\n\n/**\n * Container ID. Usually a UUID, as for example used to [identify Docker containers](https://docs.docker.com/engine/reference/run/#container-identification). The UUID might be abbreviated.\n *\n * @deprecated Use ATTR_CONTAINER_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CONTAINER_ID = TMP_CONTAINER_ID;\n\n/**\n * The container runtime managing this container.\n *\n * @deprecated Use ATTR_CONTAINER_RUNTIME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CONTAINER_RUNTIME = TMP_CONTAINER_RUNTIME;\n\n/**\n * Name of the image the container was built on.\n *\n * @deprecated Use ATTR_CONTAINER_IMAGE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CONTAINER_IMAGE_NAME = TMP_CONTAINER_IMAGE_NAME;\n\n/**\n * Container image tag.\n *\n * @deprecated Use ATTR_CONTAINER_IMAGE_TAGS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_CONTAINER_IMAGE_TAG = TMP_CONTAINER_IMAGE_TAG;\n\n/**\n * Name of the [deployment environment](https://en.wikipedia.org/wiki/Deployment_environment) (aka deployment tier).\n *\n * @deprecated Use ATTR_DEPLOYMENT_ENVIRONMENT in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_DEPLOYMENT_ENVIRONMENT = TMP_DEPLOYMENT_ENVIRONMENT;\n\n/**\n * A unique identifier representing the device.\n *\n * Note: The device identifier MUST only be defined using the values outlined below. This value is not an advertising identifier and MUST NOT be used as such. On iOS (Swift or Objective-C), this value MUST be equal to the [vendor identifier](https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor). On Android (Java or Kotlin), this value MUST be equal to the Firebase Installation ID or a globally unique UUID which is persisted across sessions in your application. More information can be found [here](https://developer.android.com/training/articles/user-data-ids) on best practices and exact implementation details. Caution should be taken when storing personal data or anything which can identify a user. GDPR and data protection laws may apply, ensure you do your own due diligence.\n *\n * @deprecated Use ATTR_DEVICE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_DEVICE_ID = TMP_DEVICE_ID;\n\n/**\n * The model identifier for the device.\n *\n * Note: It&#39;s recommended this value represents a machine readable version of the model identifier rather than the market or consumer-friendly name of the device.\n *\n * @deprecated Use ATTR_DEVICE_MODEL_IDENTIFIER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_DEVICE_MODEL_IDENTIFIER = TMP_DEVICE_MODEL_IDENTIFIER;\n\n/**\n * The marketing name for the device model.\n *\n * Note: It&#39;s recommended this value represents a human readable version of the device model rather than a machine readable alternative.\n *\n * @deprecated Use ATTR_DEVICE_MODEL_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_DEVICE_MODEL_NAME = TMP_DEVICE_MODEL_NAME;\n\n/**\n * The name of the single function that this runtime instance executes.\n *\n * Note: This is the name of the function as configured/deployed on the FaaS platform and is usually different from the name of the callback function (which may be stored in the [`code.namespace`/`code.function`](../../trace/semantic_conventions/span-general.md#source-code-attributes) span attributes).\n *\n * @deprecated Use ATTR_FAAS_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_FAAS_NAME = TMP_FAAS_NAME;\n\n/**\n* The unique ID of the single function that this runtime instance executes.\n*\n* Note: Depending on the cloud provider, use:\n\n* **AWS Lambda:** The function [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).\nTake care not to use the &#34;invoked ARN&#34; directly but replace any\n[alias suffix](https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html) with the resolved function version, as the same runtime instance may be invokable with multiple\ndifferent aliases.\n* **GCP:** The [URI of the resource](https://cloud.google.com/iam/docs/full-resource-names)\n* **Azure:** The [Fully Qualified Resource ID](https://docs.microsoft.com/en-us/rest/api/resources/resources/get-by-id).\n\nOn some providers, it may not be possible to determine the full ID at startup,\nwhich is why this field cannot be made required. For example, on AWS the account ID\npart of the ARN is not available without calling another AWS API\nwhich may be deemed too slow for a short-running lambda function.\nAs an alternative, consider setting `faas.id` as a span attribute instead.\n*\n* @deprecated Use ATTR_CLOUD_RESOURCE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n*/\nexport const SEMRESATTRS_FAAS_ID = TMP_FAAS_ID;\n\n/**\n* The immutable version of the function being executed.\n*\n* Note: Depending on the cloud provider and platform, use:\n\n* **AWS Lambda:** The [function version](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html)\n  (an integer represented as a decimal string).\n* **Google Cloud Run:** The [revision](https://cloud.google.com/run/docs/managing/revisions)\n  (i.e., the function name plus the revision suffix).\n* **Google Cloud Functions:** The value of the\n  [`K_REVISION` environment variable](https://cloud.google.com/functions/docs/env-var#runtime_environment_variables_set_automatically).\n* **Azure Functions:** Not applicable. Do not set this attribute.\n*\n* @deprecated Use ATTR_FAAS_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n*/\nexport const SEMRESATTRS_FAAS_VERSION = TMP_FAAS_VERSION;\n\n/**\n * The execution environment ID as a string, that will be potentially reused for other invocations to the same function/function version.\n *\n * Note: * **AWS Lambda:** Use the (full) log stream name.\n *\n * @deprecated Use ATTR_FAAS_INSTANCE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_FAAS_INSTANCE = TMP_FAAS_INSTANCE;\n\n/**\n * The amount of memory available to the serverless function in MiB.\n *\n * Note: It&#39;s recommended to set this attribute since e.g. too little memory can easily stop a Java AWS Lambda function from working correctly. On AWS Lambda, the environment variable `AWS_LAMBDA_FUNCTION_MEMORY_SIZE` provides this information.\n *\n * @deprecated Use ATTR_FAAS_MAX_MEMORY in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_FAAS_MAX_MEMORY = TMP_FAAS_MAX_MEMORY;\n\n/**\n * Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider.\n *\n * @deprecated Use ATTR_HOST_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_HOST_ID = TMP_HOST_ID;\n\n/**\n * Name of the host. On Unix systems, it may contain what the hostname command returns, or the fully qualified hostname, or another name specified by the user.\n *\n * @deprecated Use ATTR_HOST_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_HOST_NAME = TMP_HOST_NAME;\n\n/**\n * Type of host. For Cloud, this must be the machine type.\n *\n * @deprecated Use ATTR_HOST_TYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_HOST_TYPE = TMP_HOST_TYPE;\n\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use ATTR_HOST_ARCH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_HOST_ARCH = TMP_HOST_ARCH;\n\n/**\n * Name of the VM image or OS install the host was instantiated from.\n *\n * @deprecated Use ATTR_HOST_IMAGE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_HOST_IMAGE_NAME = TMP_HOST_IMAGE_NAME;\n\n/**\n * VM image ID. For Cloud, this value is from the provider.\n *\n * @deprecated Use ATTR_HOST_IMAGE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_HOST_IMAGE_ID = TMP_HOST_IMAGE_ID;\n\n/**\n * The version string of the VM image as defined in [Version Attributes](README.md#version-attributes).\n *\n * @deprecated Use ATTR_HOST_IMAGE_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_HOST_IMAGE_VERSION = TMP_HOST_IMAGE_VERSION;\n\n/**\n * The name of the cluster.\n *\n * @deprecated Use ATTR_K8S_CLUSTER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_CLUSTER_NAME = TMP_K8S_CLUSTER_NAME;\n\n/**\n * The name of the Node.\n *\n * @deprecated Use ATTR_K8S_NODE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_NODE_NAME = TMP_K8S_NODE_NAME;\n\n/**\n * The UID of the Node.\n *\n * @deprecated Use ATTR_K8S_NODE_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_NODE_UID = TMP_K8S_NODE_UID;\n\n/**\n * The name of the namespace that the pod is running in.\n *\n * @deprecated Use ATTR_K8S_NAMESPACE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_NAMESPACE_NAME = TMP_K8S_NAMESPACE_NAME;\n\n/**\n * The UID of the Pod.\n *\n * @deprecated Use ATTR_K8S_POD_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_POD_UID = TMP_K8S_POD_UID;\n\n/**\n * The name of the Pod.\n *\n * @deprecated Use ATTR_K8S_POD_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_POD_NAME = TMP_K8S_POD_NAME;\n\n/**\n * The name of the Container in a Pod template.\n *\n * @deprecated Use ATTR_K8S_CONTAINER_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_CONTAINER_NAME = TMP_K8S_CONTAINER_NAME;\n\n/**\n * The UID of the ReplicaSet.\n *\n * @deprecated Use ATTR_K8S_REPLICASET_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_REPLICASET_UID = TMP_K8S_REPLICASET_UID;\n\n/**\n * The name of the ReplicaSet.\n *\n * @deprecated Use ATTR_K8S_REPLICASET_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_REPLICASET_NAME = TMP_K8S_REPLICASET_NAME;\n\n/**\n * The UID of the Deployment.\n *\n * @deprecated Use ATTR_K8S_DEPLOYMENT_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_DEPLOYMENT_UID = TMP_K8S_DEPLOYMENT_UID;\n\n/**\n * The name of the Deployment.\n *\n * @deprecated Use ATTR_K8S_DEPLOYMENT_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_DEPLOYMENT_NAME = TMP_K8S_DEPLOYMENT_NAME;\n\n/**\n * The UID of the StatefulSet.\n *\n * @deprecated Use ATTR_K8S_STATEFULSET_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_STATEFULSET_UID = TMP_K8S_STATEFULSET_UID;\n\n/**\n * The name of the StatefulSet.\n *\n * @deprecated Use ATTR_K8S_STATEFULSET_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_STATEFULSET_NAME = TMP_K8S_STATEFULSET_NAME;\n\n/**\n * The UID of the DaemonSet.\n *\n * @deprecated Use ATTR_K8S_DAEMONSET_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_DAEMONSET_UID = TMP_K8S_DAEMONSET_UID;\n\n/**\n * The name of the DaemonSet.\n *\n * @deprecated Use ATTR_K8S_DAEMONSET_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_DAEMONSET_NAME = TMP_K8S_DAEMONSET_NAME;\n\n/**\n * The UID of the Job.\n *\n * @deprecated Use ATTR_K8S_JOB_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_JOB_UID = TMP_K8S_JOB_UID;\n\n/**\n * The name of the Job.\n *\n * @deprecated Use ATTR_K8S_JOB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_JOB_NAME = TMP_K8S_JOB_NAME;\n\n/**\n * The UID of the CronJob.\n *\n * @deprecated Use ATTR_K8S_CRONJOB_UID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_CRONJOB_UID = TMP_K8S_CRONJOB_UID;\n\n/**\n * The name of the CronJob.\n *\n * @deprecated Use ATTR_K8S_CRONJOB_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_K8S_CRONJOB_NAME = TMP_K8S_CRONJOB_NAME;\n\n/**\n * The operating system type.\n *\n * @deprecated Use ATTR_OS_TYPE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_OS_TYPE = TMP_OS_TYPE;\n\n/**\n * Human readable (not intended to be parsed) OS version information, like e.g. reported by `ver` or `lsb_release -a` commands.\n *\n * @deprecated Use ATTR_OS_DESCRIPTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_OS_DESCRIPTION = TMP_OS_DESCRIPTION;\n\n/**\n * Human readable operating system name.\n *\n * @deprecated Use ATTR_OS_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_OS_NAME = TMP_OS_NAME;\n\n/**\n * The version string of the operating system as defined in [Version Attributes](../../resource/semantic_conventions/README.md#version-attributes).\n *\n * @deprecated Use ATTR_OS_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_OS_VERSION = TMP_OS_VERSION;\n\n/**\n * Process identifier (PID).\n *\n * @deprecated Use ATTR_PROCESS_PID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_PID = TMP_PROCESS_PID;\n\n/**\n * The name of the process executable. On Linux based systems, can be set to the `Name` in `proc/[pid]/status`. On Windows, can be set to the base name of `GetProcessImageFileNameW`.\n *\n * @deprecated Use ATTR_PROCESS_EXECUTABLE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_EXECUTABLE_NAME = TMP_PROCESS_EXECUTABLE_NAME;\n\n/**\n * The full path to the process executable. On Linux based systems, can be set to the target of `proc/[pid]/exe`. On Windows, can be set to the result of `GetProcessImageFileNameW`.\n *\n * @deprecated Use ATTR_PROCESS_EXECUTABLE_PATH in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_EXECUTABLE_PATH = TMP_PROCESS_EXECUTABLE_PATH;\n\n/**\n * The command used to launch the process (i.e. the command name). On Linux based systems, can be set to the zeroth string in `proc/[pid]/cmdline`. On Windows, can be set to the first parameter extracted from `GetCommandLineW`.\n *\n * @deprecated Use ATTR_PROCESS_COMMAND in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_COMMAND = TMP_PROCESS_COMMAND;\n\n/**\n * The full command used to launch the process as a single string representing the full command. On Windows, can be set to the result of `GetCommandLineW`. Do not set this if you have to assemble it just for monitoring; use `process.command_args` instead.\n *\n * @deprecated Use ATTR_PROCESS_COMMAND_LINE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_COMMAND_LINE = TMP_PROCESS_COMMAND_LINE;\n\n/**\n * All the command arguments (including the command/executable itself) as received by the process. On Linux-based systems (and some other Unixoid systems supporting procfs), can be set according to the list of null-delimited strings extracted from `proc/[pid]/cmdline`. For libc-based executables, this would be the full argv vector passed to `main`.\n *\n * @deprecated Use ATTR_PROCESS_COMMAND_ARGS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_COMMAND_ARGS = TMP_PROCESS_COMMAND_ARGS;\n\n/**\n * The username of the user that owns the process.\n *\n * @deprecated Use ATTR_PROCESS_OWNER in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_OWNER = TMP_PROCESS_OWNER;\n\n/**\n * The name of the runtime of this process. For compiled native binaries, this SHOULD be the name of the compiler.\n *\n * @deprecated Use ATTR_PROCESS_RUNTIME_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_RUNTIME_NAME = TMP_PROCESS_RUNTIME_NAME;\n\n/**\n * The version of the runtime of this process, as returned by the runtime without modification.\n *\n * @deprecated Use ATTR_PROCESS_RUNTIME_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_RUNTIME_VERSION = TMP_PROCESS_RUNTIME_VERSION;\n\n/**\n * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment.\n *\n * @deprecated Use ATTR_PROCESS_RUNTIME_DESCRIPTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_PROCESS_RUNTIME_DESCRIPTION =\n  TMP_PROCESS_RUNTIME_DESCRIPTION;\n\n/**\n * Logical name of the service.\n *\n * Note: MUST be the same for all instances of horizontally scaled services. If the value was not specified, SDKs MUST fallback to `unknown_service:` concatenated with [`process.executable.name`](process.md#process), e.g. `unknown_service:bash`. If `process.executable.name` is not available, the value MUST be set to `unknown_service`.\n *\n * @deprecated Use ATTR_SERVICE_NAME.\n */\nexport const SEMRESATTRS_SERVICE_NAME = TMP_SERVICE_NAME;\n\n/**\n * A namespace for `service.name`.\n *\n * Note: A string value having a meaning that helps to distinguish a group of services, for example the team name that owns a group of services. `service.name` is expected to be unique within the same namespace. If `service.namespace` is not specified in the Resource then `service.name` is expected to be unique for all services that have no explicit namespace defined (so the empty/unspecified namespace is simply one more valid namespace). Zero-length namespace string is assumed equal to unspecified namespace.\n *\n * @deprecated Use ATTR_SERVICE_NAMESPACE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_SERVICE_NAMESPACE = TMP_SERVICE_NAMESPACE;\n\n/**\n * The string ID of the service instance.\n *\n * Note: MUST be unique for each instance of the same `service.namespace,service.name` pair (in other words `service.namespace,service.name,service.instance.id` triplet MUST be globally unique). The ID helps to distinguish instances of the same service that exist at the same time (e.g. instances of a horizontally scaled service). It is preferable for the ID to be persistent and stay the same for the lifetime of the service instance, however it is acceptable that the ID is ephemeral and changes during important lifetime events for the service (e.g. service restarts). If the service has no inherent unique ID that can be used as the value of this attribute it is recommended to generate a random Version 1 or Version 4 RFC 4122 UUID (services aiming for reproducible UUIDs may also use Version 5, see RFC 4122 for more recommendations).\n *\n * @deprecated Use ATTR_SERVICE_INSTANCE_ID in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_SERVICE_INSTANCE_ID = TMP_SERVICE_INSTANCE_ID;\n\n/**\n * The version string of the service API or implementation.\n *\n * @deprecated Use ATTR_SERVICE_VERSION.\n */\nexport const SEMRESATTRS_SERVICE_VERSION = TMP_SERVICE_VERSION;\n\n/**\n * The name of the telemetry SDK as defined above.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_NAME.\n */\nexport const SEMRESATTRS_TELEMETRY_SDK_NAME = TMP_TELEMETRY_SDK_NAME;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_LANGUAGE.\n */\nexport const SEMRESATTRS_TELEMETRY_SDK_LANGUAGE = TMP_TELEMETRY_SDK_LANGUAGE;\n\n/**\n * The version string of the telemetry SDK.\n *\n * @deprecated Use ATTR_TELEMETRY_SDK_VERSION.\n */\nexport const SEMRESATTRS_TELEMETRY_SDK_VERSION = TMP_TELEMETRY_SDK_VERSION;\n\n/**\n * The version string of the auto instrumentation agent, if used.\n *\n * @deprecated Use ATTR_TELEMETRY_DISTRO_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_TELEMETRY_AUTO_VERSION = TMP_TELEMETRY_AUTO_VERSION;\n\n/**\n * The name of the web engine.\n *\n * @deprecated Use ATTR_WEBENGINE_NAME in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_WEBENGINE_NAME = TMP_WEBENGINE_NAME;\n\n/**\n * The version of the web engine.\n *\n * @deprecated Use ATTR_WEBENGINE_VERSION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_WEBENGINE_VERSION = TMP_WEBENGINE_VERSION;\n\n/**\n * Additional description of the web engine (e.g. detailed version and edition information).\n *\n * @deprecated Use ATTR_WEBENGINE_DESCRIPTION in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const SEMRESATTRS_WEBENGINE_DESCRIPTION = TMP_WEBENGINE_DESCRIPTION;\n\n/**\n * Definition of available values for SemanticResourceAttributes\n * This type is used for backward compatibility, you should use the individual exported\n * constants SemanticResourceAttributes_XXXXX rather than the exported constant map. As any single reference\n * to a constant map value will result in all strings being included into your bundle.\n * @deprecated Use the SEMRESATTRS_XXXXX constants rather than the SemanticResourceAttributes.XXXXX for bundle minification.\n */\nexport type SemanticResourceAttributes = {\n  /**\n   * Name of the cloud provider.\n   */\n  CLOUD_PROVIDER: 'cloud.provider';\n\n  /**\n   * The cloud account ID the resource is assigned to.\n   */\n  CLOUD_ACCOUNT_ID: 'cloud.account.id';\n\n  /**\n   * The geographical region the resource is running. Refer to your provider&#39;s docs to see the available regions, for example [Alibaba Cloud regions](https://www.alibabacloud.com/help/doc-detail/40654.htm), [AWS regions](https://aws.amazon.com/about-aws/global-infrastructure/regions_az/), [Azure regions](https://azure.microsoft.com/en-us/global-infrastructure/geographies/), or [Google Cloud regions](https://cloud.google.com/about/locations).\n   */\n  CLOUD_REGION: 'cloud.region';\n\n  /**\n   * Cloud regions often have multiple, isolated locations known as zones to increase availability. Availability zone represents the zone where the resource is running.\n   *\n   * Note: Availability zones are called &#34;zones&#34; on Alibaba Cloud and Google Cloud.\n   */\n  CLOUD_AVAILABILITY_ZONE: 'cloud.availability_zone';\n\n  /**\n   * The cloud platform in use.\n   *\n   * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n   */\n  CLOUD_PLATFORM: 'cloud.platform';\n\n  /**\n   * The Amazon Resource Name (ARN) of an [ECS container instance](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ECS_instances.html).\n   */\n  AWS_ECS_CONTAINER_ARN: 'aws.ecs.container.arn';\n\n  /**\n   * The ARN of an [ECS cluster](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/clusters.html).\n   */\n  AWS_ECS_CLUSTER_ARN: 'aws.ecs.cluster.arn';\n\n  /**\n   * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n   */\n  AWS_ECS_LAUNCHTYPE: 'aws.ecs.launchtype';\n\n  /**\n   * The ARN of an [ECS task definition](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definitions.html).\n   */\n  AWS_ECS_TASK_ARN: 'aws.ecs.task.arn';\n\n  /**\n   * The task definition family this task definition is a member of.\n   */\n  AWS_ECS_TASK_FAMILY: 'aws.ecs.task.family';\n\n  /**\n   * The revision for this task definition.\n   */\n  AWS_ECS_TASK_REVISION: 'aws.ecs.task.revision';\n\n  /**\n   * The ARN of an EKS cluster.\n   */\n  AWS_EKS_CLUSTER_ARN: 'aws.eks.cluster.arn';\n\n  /**\n   * The name(s) of the AWS log group(s) an application is writing to.\n   *\n   * Note: Multiple log groups must be supported for cases like multi-container applications, where a single application has sidecar containers, and each write to their own log group.\n   */\n  AWS_LOG_GROUP_NAMES: 'aws.log.group.names';\n\n  /**\n   * The Amazon Resource Name(s) (ARN) of the AWS log group(s).\n   *\n   * Note: See the [log group ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format).\n   */\n  AWS_LOG_GROUP_ARNS: 'aws.log.group.arns';\n\n  /**\n   * The name(s) of the AWS log stream(s) an application is writing to.\n   */\n  AWS_LOG_STREAM_NAMES: 'aws.log.stream.names';\n\n  /**\n   * The ARN(s) of the AWS log stream(s).\n   *\n   * Note: See the [log stream ARN format documentation](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/iam-access-control-overview-cwl.html#CWL_ARN_Format). One log group can contain several log streams, so these ARNs necessarily identify both a log group and a log stream.\n   */\n  AWS_LOG_STREAM_ARNS: 'aws.log.stream.arns';\n\n  /**\n   * Container name.\n   */\n  CONTAINER_NAME: 'container.name';\n\n  /**\n   * Container ID. Usually a UUID, as for example used to [identify Docker containers](https://docs.docker.com/engine/reference/run/#container-identification). The UUID might be abbreviated.\n   */\n  CONTAINER_ID: 'container.id';\n\n  /**\n   * The container runtime managing this container.\n   */\n  CONTAINER_RUNTIME: 'container.runtime';\n\n  /**\n   * Name of the image the container was built on.\n   */\n  CONTAINER_IMAGE_NAME: 'container.image.name';\n\n  /**\n   * Container image tag.\n   */\n  CONTAINER_IMAGE_TAG: 'container.image.tag';\n\n  /**\n   * Name of the [deployment environment](https://en.wikipedia.org/wiki/Deployment_environment) (aka deployment tier).\n   */\n  DEPLOYMENT_ENVIRONMENT: 'deployment.environment';\n\n  /**\n   * A unique identifier representing the device.\n   *\n   * Note: The device identifier MUST only be defined using the values outlined below. This value is not an advertising identifier and MUST NOT be used as such. On iOS (Swift or Objective-C), this value MUST be equal to the [vendor identifier](https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor). On Android (Java or Kotlin), this value MUST be equal to the Firebase Installation ID or a globally unique UUID which is persisted across sessions in your application. More information can be found [here](https://developer.android.com/training/articles/user-data-ids) on best practices and exact implementation details. Caution should be taken when storing personal data or anything which can identify a user. GDPR and data protection laws may apply, ensure you do your own due diligence.\n   */\n  DEVICE_ID: 'device.id';\n\n  /**\n   * The model identifier for the device.\n   *\n   * Note: It&#39;s recommended this value represents a machine readable version of the model identifier rather than the market or consumer-friendly name of the device.\n   */\n  DEVICE_MODEL_IDENTIFIER: 'device.model.identifier';\n\n  /**\n   * The marketing name for the device model.\n   *\n   * Note: It&#39;s recommended this value represents a human readable version of the device model rather than a machine readable alternative.\n   */\n  DEVICE_MODEL_NAME: 'device.model.name';\n\n  /**\n   * The name of the single function that this runtime instance executes.\n   *\n   * Note: This is the name of the function as configured/deployed on the FaaS platform and is usually different from the name of the callback function (which may be stored in the [`code.namespace`/`code.function`](../../trace/semantic_conventions/span-general.md#source-code-attributes) span attributes).\n   */\n  FAAS_NAME: 'faas.name';\n\n  /**\n  * The unique ID of the single function that this runtime instance executes.\n  *\n  * Note: Depending on the cloud provider, use:\n\n* **AWS Lambda:** The function [ARN](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html).\nTake care not to use the &#34;invoked ARN&#34; directly but replace any\n[alias suffix](https://docs.aws.amazon.com/lambda/latest/dg/configuration-aliases.html) with the resolved function version, as the same runtime instance may be invokable with multiple\ndifferent aliases.\n* **GCP:** The [URI of the resource](https://cloud.google.com/iam/docs/full-resource-names)\n* **Azure:** The [Fully Qualified Resource ID](https://docs.microsoft.com/en-us/rest/api/resources/resources/get-by-id).\n\nOn some providers, it may not be possible to determine the full ID at startup,\nwhich is why this field cannot be made required. For example, on AWS the account ID\npart of the ARN is not available without calling another AWS API\nwhich may be deemed too slow for a short-running lambda function.\nAs an alternative, consider setting `faas.id` as a span attribute instead.\n  */\n  FAAS_ID: 'faas.id';\n\n  /**\n  * The immutable version of the function being executed.\n  *\n  * Note: Depending on the cloud provider and platform, use:\n\n* **AWS Lambda:** The [function version](https://docs.aws.amazon.com/lambda/latest/dg/configuration-versions.html)\n  (an integer represented as a decimal string).\n* **Google Cloud Run:** The [revision](https://cloud.google.com/run/docs/managing/revisions)\n  (i.e., the function name plus the revision suffix).\n* **Google Cloud Functions:** The value of the\n  [`K_REVISION` environment variable](https://cloud.google.com/functions/docs/env-var#runtime_environment_variables_set_automatically).\n* **Azure Functions:** Not applicable. Do not set this attribute.\n  */\n  FAAS_VERSION: 'faas.version';\n\n  /**\n   * The execution environment ID as a string, that will be potentially reused for other invocations to the same function/function version.\n   *\n   * Note: * **AWS Lambda:** Use the (full) log stream name.\n   */\n  FAAS_INSTANCE: 'faas.instance';\n\n  /**\n   * The amount of memory available to the serverless function in MiB.\n   *\n   * Note: It&#39;s recommended to set this attribute since e.g. too little memory can easily stop a Java AWS Lambda function from working correctly. On AWS Lambda, the environment variable `AWS_LAMBDA_FUNCTION_MEMORY_SIZE` provides this information.\n   */\n  FAAS_MAX_MEMORY: 'faas.max_memory';\n\n  /**\n   * Unique host ID. For Cloud, this must be the instance_id assigned by the cloud provider.\n   */\n  HOST_ID: 'host.id';\n\n  /**\n   * Name of the host. On Unix systems, it may contain what the hostname command returns, or the fully qualified hostname, or another name specified by the user.\n   */\n  HOST_NAME: 'host.name';\n\n  /**\n   * Type of host. For Cloud, this must be the machine type.\n   */\n  HOST_TYPE: 'host.type';\n\n  /**\n   * The CPU architecture the host system is running on.\n   */\n  HOST_ARCH: 'host.arch';\n\n  /**\n   * Name of the VM image or OS install the host was instantiated from.\n   */\n  HOST_IMAGE_NAME: 'host.image.name';\n\n  /**\n   * VM image ID. For Cloud, this value is from the provider.\n   */\n  HOST_IMAGE_ID: 'host.image.id';\n\n  /**\n   * The version string of the VM image as defined in [Version Attributes](README.md#version-attributes).\n   */\n  HOST_IMAGE_VERSION: 'host.image.version';\n\n  /**\n   * The name of the cluster.\n   */\n  K8S_CLUSTER_NAME: 'k8s.cluster.name';\n\n  /**\n   * The name of the Node.\n   */\n  K8S_NODE_NAME: 'k8s.node.name';\n\n  /**\n   * The UID of the Node.\n   */\n  K8S_NODE_UID: 'k8s.node.uid';\n\n  /**\n   * The name of the namespace that the pod is running in.\n   */\n  K8S_NAMESPACE_NAME: 'k8s.namespace.name';\n\n  /**\n   * The UID of the Pod.\n   */\n  K8S_POD_UID: 'k8s.pod.uid';\n\n  /**\n   * The name of the Pod.\n   */\n  K8S_POD_NAME: 'k8s.pod.name';\n\n  /**\n   * The name of the Container in a Pod template.\n   */\n  K8S_CONTAINER_NAME: 'k8s.container.name';\n\n  /**\n   * The UID of the ReplicaSet.\n   */\n  K8S_REPLICASET_UID: 'k8s.replicaset.uid';\n\n  /**\n   * The name of the ReplicaSet.\n   */\n  K8S_REPLICASET_NAME: 'k8s.replicaset.name';\n\n  /**\n   * The UID of the Deployment.\n   */\n  K8S_DEPLOYMENT_UID: 'k8s.deployment.uid';\n\n  /**\n   * The name of the Deployment.\n   */\n  K8S_DEPLOYMENT_NAME: 'k8s.deployment.name';\n\n  /**\n   * The UID of the StatefulSet.\n   */\n  K8S_STATEFULSET_UID: 'k8s.statefulset.uid';\n\n  /**\n   * The name of the StatefulSet.\n   */\n  K8S_STATEFULSET_NAME: 'k8s.statefulset.name';\n\n  /**\n   * The UID of the DaemonSet.\n   */\n  K8S_DAEMONSET_UID: 'k8s.daemonset.uid';\n\n  /**\n   * The name of the DaemonSet.\n   */\n  K8S_DAEMONSET_NAME: 'k8s.daemonset.name';\n\n  /**\n   * The UID of the Job.\n   */\n  K8S_JOB_UID: 'k8s.job.uid';\n\n  /**\n   * The name of the Job.\n   */\n  K8S_JOB_NAME: 'k8s.job.name';\n\n  /**\n   * The UID of the CronJob.\n   */\n  K8S_CRONJOB_UID: 'k8s.cronjob.uid';\n\n  /**\n   * The name of the CronJob.\n   */\n  K8S_CRONJOB_NAME: 'k8s.cronjob.name';\n\n  /**\n   * The operating system type.\n   */\n  OS_TYPE: 'os.type';\n\n  /**\n   * Human readable (not intended to be parsed) OS version information, like e.g. reported by `ver` or `lsb_release -a` commands.\n   */\n  OS_DESCRIPTION: 'os.description';\n\n  /**\n   * Human readable operating system name.\n   */\n  OS_NAME: 'os.name';\n\n  /**\n   * The version string of the operating system as defined in [Version Attributes](../../resource/semantic_conventions/README.md#version-attributes).\n   */\n  OS_VERSION: 'os.version';\n\n  /**\n   * Process identifier (PID).\n   */\n  PROCESS_PID: 'process.pid';\n\n  /**\n   * The name of the process executable. On Linux based systems, can be set to the `Name` in `proc/[pid]/status`. On Windows, can be set to the base name of `GetProcessImageFileNameW`.\n   */\n  PROCESS_EXECUTABLE_NAME: 'process.executable.name';\n\n  /**\n   * The full path to the process executable. On Linux based systems, can be set to the target of `proc/[pid]/exe`. On Windows, can be set to the result of `GetProcessImageFileNameW`.\n   */\n  PROCESS_EXECUTABLE_PATH: 'process.executable.path';\n\n  /**\n   * The command used to launch the process (i.e. the command name). On Linux based systems, can be set to the zeroth string in `proc/[pid]/cmdline`. On Windows, can be set to the first parameter extracted from `GetCommandLineW`.\n   */\n  PROCESS_COMMAND: 'process.command';\n\n  /**\n   * The full command used to launch the process as a single string representing the full command. On Windows, can be set to the result of `GetCommandLineW`. Do not set this if you have to assemble it just for monitoring; use `process.command_args` instead.\n   */\n  PROCESS_COMMAND_LINE: 'process.command_line';\n\n  /**\n   * All the command arguments (including the command/executable itself) as received by the process. On Linux-based systems (and some other Unixoid systems supporting procfs), can be set according to the list of null-delimited strings extracted from `proc/[pid]/cmdline`. For libc-based executables, this would be the full argv vector passed to `main`.\n   */\n  PROCESS_COMMAND_ARGS: 'process.command_args';\n\n  /**\n   * The username of the user that owns the process.\n   */\n  PROCESS_OWNER: 'process.owner';\n\n  /**\n   * The name of the runtime of this process. For compiled native binaries, this SHOULD be the name of the compiler.\n   */\n  PROCESS_RUNTIME_NAME: 'process.runtime.name';\n\n  /**\n   * The version of the runtime of this process, as returned by the runtime without modification.\n   */\n  PROCESS_RUNTIME_VERSION: 'process.runtime.version';\n\n  /**\n   * An additional description about the runtime of the process, for example a specific vendor customization of the runtime environment.\n   */\n  PROCESS_RUNTIME_DESCRIPTION: 'process.runtime.description';\n\n  /**\n   * Logical name of the service.\n   *\n   * Note: MUST be the same for all instances of horizontally scaled services. If the value was not specified, SDKs MUST fallback to `unknown_service:` concatenated with [`process.executable.name`](process.md#process), e.g. `unknown_service:bash`. If `process.executable.name` is not available, the value MUST be set to `unknown_service`.\n   */\n  SERVICE_NAME: 'service.name';\n\n  /**\n   * A namespace for `service.name`.\n   *\n   * Note: A string value having a meaning that helps to distinguish a group of services, for example the team name that owns a group of services. `service.name` is expected to be unique within the same namespace. If `service.namespace` is not specified in the Resource then `service.name` is expected to be unique for all services that have no explicit namespace defined (so the empty/unspecified namespace is simply one more valid namespace). Zero-length namespace string is assumed equal to unspecified namespace.\n   */\n  SERVICE_NAMESPACE: 'service.namespace';\n\n  /**\n   * The string ID of the service instance.\n   *\n   * Note: MUST be unique for each instance of the same `service.namespace,service.name` pair (in other words `service.namespace,service.name,service.instance.id` triplet MUST be globally unique). The ID helps to distinguish instances of the same service that exist at the same time (e.g. instances of a horizontally scaled service). It is preferable for the ID to be persistent and stay the same for the lifetime of the service instance, however it is acceptable that the ID is ephemeral and changes during important lifetime events for the service (e.g. service restarts). If the service has no inherent unique ID that can be used as the value of this attribute it is recommended to generate a random Version 1 or Version 4 RFC 4122 UUID (services aiming for reproducible UUIDs may also use Version 5, see RFC 4122 for more recommendations).\n   */\n  SERVICE_INSTANCE_ID: 'service.instance.id';\n\n  /**\n   * The version string of the service API or implementation.\n   */\n  SERVICE_VERSION: 'service.version';\n\n  /**\n   * The name of the telemetry SDK as defined above.\n   */\n  TELEMETRY_SDK_NAME: 'telemetry.sdk.name';\n\n  /**\n   * The language of the telemetry SDK.\n   */\n  TELEMETRY_SDK_LANGUAGE: 'telemetry.sdk.language';\n\n  /**\n   * The version string of the telemetry SDK.\n   */\n  TELEMETRY_SDK_VERSION: 'telemetry.sdk.version';\n\n  /**\n   * The version string of the auto instrumentation agent, if used.\n   */\n  TELEMETRY_AUTO_VERSION: 'telemetry.auto.version';\n\n  /**\n   * The name of the web engine.\n   */\n  WEBENGINE_NAME: 'webengine.name';\n\n  /**\n   * The version of the web engine.\n   */\n  WEBENGINE_VERSION: 'webengine.version';\n\n  /**\n   * Additional description of the web engine (e.g. detailed version and edition information).\n   */\n  WEBENGINE_DESCRIPTION: 'webengine.description';\n};\n\n/**\n * Create exported Value Map for SemanticResourceAttributes values\n * @deprecated Use the SEMRESATTRS_XXXXX constants rather than the SemanticResourceAttributes.XXXXX for bundle minification\n */\nexport const SemanticResourceAttributes: SemanticResourceAttributes =\n  /*#__PURE__*/ createConstMap<SemanticResourceAttributes>([\n    TMP_CLOUD_PROVIDER,\n    TMP_CLOUD_ACCOUNT_ID,\n    TMP_CLOUD_REGION,\n    TMP_CLOUD_AVAILABILITY_ZONE,\n    TMP_CLOUD_PLATFORM,\n    TMP_AWS_ECS_CONTAINER_ARN,\n    TMP_AWS_ECS_CLUSTER_ARN,\n    TMP_AWS_ECS_LAUNCHTYPE,\n    TMP_AWS_ECS_TASK_ARN,\n    TMP_AWS_ECS_TASK_FAMILY,\n    TMP_AWS_ECS_TASK_REVISION,\n    TMP_AWS_EKS_CLUSTER_ARN,\n    TMP_AWS_LOG_GROUP_NAMES,\n    TMP_AWS_LOG_GROUP_ARNS,\n    TMP_AWS_LOG_STREAM_NAMES,\n    TMP_AWS_LOG_STREAM_ARNS,\n    TMP_CONTAINER_NAME,\n    TMP_CONTAINER_ID,\n    TMP_CONTAINER_RUNTIME,\n    TMP_CONTAINER_IMAGE_NAME,\n    TMP_CONTAINER_IMAGE_TAG,\n    TMP_DEPLOYMENT_ENVIRONMENT,\n    TMP_DEVICE_ID,\n    TMP_DEVICE_MODEL_IDENTIFIER,\n    TMP_DEVICE_MODEL_NAME,\n    TMP_FAAS_NAME,\n    TMP_FAAS_ID,\n    TMP_FAAS_VERSION,\n    TMP_FAAS_INSTANCE,\n    TMP_FAAS_MAX_MEMORY,\n    TMP_HOST_ID,\n    TMP_HOST_NAME,\n    TMP_HOST_TYPE,\n    TMP_HOST_ARCH,\n    TMP_HOST_IMAGE_NAME,\n    TMP_HOST_IMAGE_ID,\n    TMP_HOST_IMAGE_VERSION,\n    TMP_K8S_CLUSTER_NAME,\n    TMP_K8S_NODE_NAME,\n    TMP_K8S_NODE_UID,\n    TMP_K8S_NAMESPACE_NAME,\n    TMP_K8S_POD_UID,\n    TMP_K8S_POD_NAME,\n    TMP_K8S_CONTAINER_NAME,\n    TMP_K8S_REPLICASET_UID,\n    TMP_K8S_REPLICASET_NAME,\n    TMP_K8S_DEPLOYMENT_UID,\n    TMP_K8S_DEPLOYMENT_NAME,\n    TMP_K8S_STATEFULSET_UID,\n    TMP_K8S_STATEFULSET_NAME,\n    TMP_K8S_DAEMONSET_UID,\n    TMP_K8S_DAEMONSET_NAME,\n    TMP_K8S_JOB_UID,\n    TMP_K8S_JOB_NAME,\n    TMP_K8S_CRONJOB_UID,\n    TMP_K8S_CRONJOB_NAME,\n    TMP_OS_TYPE,\n    TMP_OS_DESCRIPTION,\n    TMP_OS_NAME,\n    TMP_OS_VERSION,\n    TMP_PROCESS_PID,\n    TMP_PROCESS_EXECUTABLE_NAME,\n    TMP_PROCESS_EXECUTABLE_PATH,\n    TMP_PROCESS_COMMAND,\n    TMP_PROCESS_COMMAND_LINE,\n    TMP_PROCESS_COMMAND_ARGS,\n    TMP_PROCESS_OWNER,\n    TMP_PROCESS_RUNTIME_NAME,\n    TMP_PROCESS_RUNTIME_VERSION,\n    TMP_PROCESS_RUNTIME_DESCRIPTION,\n    TMP_SERVICE_NAME,\n    TMP_SERVICE_NAMESPACE,\n    TMP_SERVICE_INSTANCE_ID,\n    TMP_SERVICE_VERSION,\n    TMP_TELEMETRY_SDK_NAME,\n    TMP_TELEMETRY_SDK_LANGUAGE,\n    TMP_TELEMETRY_SDK_VERSION,\n    TMP_TELEMETRY_AUTO_VERSION,\n    TMP_WEBENGINE_NAME,\n    TMP_WEBENGINE_VERSION,\n    TMP_WEBENGINE_DESCRIPTION,\n  ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for CloudProviderValues enum definition\n *\n * Name of the cloud provider.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD = 'alibaba_cloud';\nconst TMP_CLOUDPROVIDERVALUES_AWS = 'aws';\nconst TMP_CLOUDPROVIDERVALUES_AZURE = 'azure';\nconst TMP_CLOUDPROVIDERVALUES_GCP = 'gcp';\n\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use CLOUD_PROVIDER_VALUE_ALIBABA_CLOUD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPROVIDERVALUES_ALIBABA_CLOUD =\n  TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD;\n\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use CLOUD_PROVIDER_VALUE_AWS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPROVIDERVALUES_AWS = TMP_CLOUDPROVIDERVALUES_AWS;\n\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use CLOUD_PROVIDER_VALUE_AZURE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPROVIDERVALUES_AZURE = TMP_CLOUDPROVIDERVALUES_AZURE;\n\n/**\n * Name of the cloud provider.\n *\n * @deprecated Use CLOUD_PROVIDER_VALUE_GCP in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPROVIDERVALUES_GCP = TMP_CLOUDPROVIDERVALUES_GCP;\n\n/**\n * Identifies the Values for CloudProviderValues enum definition\n *\n * Name of the cloud provider.\n * @deprecated Use the CLOUDPROVIDERVALUES_XXXXX constants rather than the CloudProviderValues.XXXXX for bundle minification.\n */\nexport type CloudProviderValues = {\n  /** Alibaba Cloud. */\n  ALIBABA_CLOUD: 'alibaba_cloud';\n\n  /** Amazon Web Services. */\n  AWS: 'aws';\n\n  /** Microsoft Azure. */\n  AZURE: 'azure';\n\n  /** Google Cloud Platform. */\n  GCP: 'gcp';\n};\n\n/**\n * The constant map of values for CloudProviderValues.\n * @deprecated Use the CLOUDPROVIDERVALUES_XXXXX constants rather than the CloudProviderValues.XXXXX for bundle minification.\n */\nexport const CloudProviderValues: CloudProviderValues =\n  /*#__PURE__*/ createConstMap<CloudProviderValues>([\n    TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD,\n    TMP_CLOUDPROVIDERVALUES_AWS,\n    TMP_CLOUDPROVIDERVALUES_AZURE,\n    TMP_CLOUDPROVIDERVALUES_GCP,\n  ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for CloudPlatformValues enum definition\n *\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS = 'alibaba_cloud_ecs';\nconst TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC = 'alibaba_cloud_fc';\nconst TMP_CLOUDPLATFORMVALUES_AWS_EC2 = 'aws_ec2';\nconst TMP_CLOUDPLATFORMVALUES_AWS_ECS = 'aws_ecs';\nconst TMP_CLOUDPLATFORMVALUES_AWS_EKS = 'aws_eks';\nconst TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA = 'aws_lambda';\nconst TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK = 'aws_elastic_beanstalk';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_VM = 'azure_vm';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES =\n  'azure_container_instances';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_AKS = 'azure_aks';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS = 'azure_functions';\nconst TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE = 'azure_app_service';\nconst TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE = 'gcp_compute_engine';\nconst TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN = 'gcp_cloud_run';\nconst TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE = 'gcp_kubernetes_engine';\nconst TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS = 'gcp_cloud_functions';\nconst TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE = 'gcp_app_engine';\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_ECS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS =\n  TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_ALIBABA_CLOUD_FC in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC =\n  TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_EC2 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AWS_EC2 = TMP_CLOUDPLATFORMVALUES_AWS_EC2;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_ECS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AWS_ECS = TMP_CLOUDPLATFORMVALUES_AWS_ECS;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_EKS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AWS_EKS = TMP_CLOUDPLATFORMVALUES_AWS_EKS;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_LAMBDA in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AWS_LAMBDA =\n  TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AWS_ELASTIC_BEANSTALK in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK =\n  TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_VM in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AZURE_VM = TMP_CLOUDPLATFORMVALUES_AZURE_VM;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_CONTAINER_INSTANCES in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES =\n  TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_AKS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AZURE_AKS = TMP_CLOUDPLATFORMVALUES_AZURE_AKS;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_FUNCTIONS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AZURE_FUNCTIONS =\n  TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_AZURE_APP_SERVICE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_AZURE_APP_SERVICE =\n  TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_COMPUTE_ENGINE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE =\n  TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_CLOUD_RUN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_GCP_CLOUD_RUN =\n  TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_KUBERNETES_ENGINE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE =\n  TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_CLOUD_FUNCTIONS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS =\n  TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS;\n\n/**\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n *\n * @deprecated Use CLOUD_PLATFORM_VALUE_GCP_APP_ENGINE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const CLOUDPLATFORMVALUES_GCP_APP_ENGINE =\n  TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE;\n\n/**\n * Identifies the Values for CloudPlatformValues enum definition\n *\n * The cloud platform in use.\n *\n * Note: The prefix of the service SHOULD match the one specified in `cloud.provider`.\n * @deprecated Use the CLOUDPLATFORMVALUES_XXXXX constants rather than the CloudPlatformValues.XXXXX for bundle minification.\n */\nexport type CloudPlatformValues = {\n  /** Alibaba Cloud Elastic Compute Service. */\n  ALIBABA_CLOUD_ECS: 'alibaba_cloud_ecs';\n\n  /** Alibaba Cloud Function Compute. */\n  ALIBABA_CLOUD_FC: 'alibaba_cloud_fc';\n\n  /** AWS Elastic Compute Cloud. */\n  AWS_EC2: 'aws_ec2';\n\n  /** AWS Elastic Container Service. */\n  AWS_ECS: 'aws_ecs';\n\n  /** AWS Elastic Kubernetes Service. */\n  AWS_EKS: 'aws_eks';\n\n  /** AWS Lambda. */\n  AWS_LAMBDA: 'aws_lambda';\n\n  /** AWS Elastic Beanstalk. */\n  AWS_ELASTIC_BEANSTALK: 'aws_elastic_beanstalk';\n\n  /** Azure Virtual Machines. */\n  AZURE_VM: 'azure_vm';\n\n  /** Azure Container Instances. */\n  AZURE_CONTAINER_INSTANCES: 'azure_container_instances';\n\n  /** Azure Kubernetes Service. */\n  AZURE_AKS: 'azure_aks';\n\n  /** Azure Functions. */\n  AZURE_FUNCTIONS: 'azure_functions';\n\n  /** Azure App Service. */\n  AZURE_APP_SERVICE: 'azure_app_service';\n\n  /** Google Cloud Compute Engine (GCE). */\n  GCP_COMPUTE_ENGINE: 'gcp_compute_engine';\n\n  /** Google Cloud Run. */\n  GCP_CLOUD_RUN: 'gcp_cloud_run';\n\n  /** Google Cloud Kubernetes Engine (GKE). */\n  GCP_KUBERNETES_ENGINE: 'gcp_kubernetes_engine';\n\n  /** Google Cloud Functions (GCF). */\n  GCP_CLOUD_FUNCTIONS: 'gcp_cloud_functions';\n\n  /** Google Cloud App Engine (GAE). */\n  GCP_APP_ENGINE: 'gcp_app_engine';\n};\n\n/**\n * The constant map of values for CloudPlatformValues.\n * @deprecated Use the CLOUDPLATFORMVALUES_XXXXX constants rather than the CloudPlatformValues.XXXXX for bundle minification.\n */\nexport const CloudPlatformValues: CloudPlatformValues =\n  /*#__PURE__*/ createConstMap<CloudPlatformValues>([\n    TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS,\n    TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC,\n    TMP_CLOUDPLATFORMVALUES_AWS_EC2,\n    TMP_CLOUDPLATFORMVALUES_AWS_ECS,\n    TMP_CLOUDPLATFORMVALUES_AWS_EKS,\n    TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA,\n    TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK,\n    TMP_CLOUDPLATFORMVALUES_AZURE_VM,\n    TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES,\n    TMP_CLOUDPLATFORMVALUES_AZURE_AKS,\n    TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS,\n    TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE,\n    TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE,\n    TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN,\n    TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE,\n    TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS,\n    TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE,\n  ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for AwsEcsLaunchtypeValues enum definition\n *\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_AWSECSLAUNCHTYPEVALUES_EC2 = 'ec2';\nconst TMP_AWSECSLAUNCHTYPEVALUES_FARGATE = 'fargate';\n\n/**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n *\n * @deprecated Use AWS_ECS_LAUNCHTYPE_VALUE_EC2 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const AWSECSLAUNCHTYPEVALUES_EC2 = TMP_AWSECSLAUNCHTYPEVALUES_EC2;\n\n/**\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n *\n * @deprecated Use AWS_ECS_LAUNCHTYPE_VALUE_FARGATE in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const AWSECSLAUNCHTYPEVALUES_FARGATE =\n  TMP_AWSECSLAUNCHTYPEVALUES_FARGATE;\n\n/**\n * Identifies the Values for AwsEcsLaunchtypeValues enum definition\n *\n * The [launch type](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_types.html) for an ECS task.\n * @deprecated Use the AWSECSLAUNCHTYPEVALUES_XXXXX constants rather than the AwsEcsLaunchtypeValues.XXXXX for bundle minification.\n */\nexport type AwsEcsLaunchtypeValues = {\n  /** ec2. */\n  EC2: 'ec2';\n\n  /** fargate. */\n  FARGATE: 'fargate';\n};\n\n/**\n * The constant map of values for AwsEcsLaunchtypeValues.\n * @deprecated Use the AWSECSLAUNCHTYPEVALUES_XXXXX constants rather than the AwsEcsLaunchtypeValues.XXXXX for bundle minification.\n */\nexport const AwsEcsLaunchtypeValues: AwsEcsLaunchtypeValues =\n  /*#__PURE__*/ createConstMap<AwsEcsLaunchtypeValues>([\n    TMP_AWSECSLAUNCHTYPEVALUES_EC2,\n    TMP_AWSECSLAUNCHTYPEVALUES_FARGATE,\n  ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for HostArchValues enum definition\n *\n * The CPU architecture the host system is running on.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_HOSTARCHVALUES_AMD64 = 'amd64';\nconst TMP_HOSTARCHVALUES_ARM32 = 'arm32';\nconst TMP_HOSTARCHVALUES_ARM64 = 'arm64';\nconst TMP_HOSTARCHVALUES_IA64 = 'ia64';\nconst TMP_HOSTARCHVALUES_PPC32 = 'ppc32';\nconst TMP_HOSTARCHVALUES_PPC64 = 'ppc64';\nconst TMP_HOSTARCHVALUES_X86 = 'x86';\n\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_AMD64 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HOSTARCHVALUES_AMD64 = TMP_HOSTARCHVALUES_AMD64;\n\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_ARM32 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HOSTARCHVALUES_ARM32 = TMP_HOSTARCHVALUES_ARM32;\n\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_ARM64 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HOSTARCHVALUES_ARM64 = TMP_HOSTARCHVALUES_ARM64;\n\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_IA64 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HOSTARCHVALUES_IA64 = TMP_HOSTARCHVALUES_IA64;\n\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_PPC32 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HOSTARCHVALUES_PPC32 = TMP_HOSTARCHVALUES_PPC32;\n\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_PPC64 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HOSTARCHVALUES_PPC64 = TMP_HOSTARCHVALUES_PPC64;\n\n/**\n * The CPU architecture the host system is running on.\n *\n * @deprecated Use HOST_ARCH_VALUE_X86 in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const HOSTARCHVALUES_X86 = TMP_HOSTARCHVALUES_X86;\n\n/**\n * Identifies the Values for HostArchValues enum definition\n *\n * The CPU architecture the host system is running on.\n * @deprecated Use the HOSTARCHVALUES_XXXXX constants rather than the HostArchValues.XXXXX for bundle minification.\n */\nexport type HostArchValues = {\n  /** AMD64. */\n  AMD64: 'amd64';\n\n  /** ARM32. */\n  ARM32: 'arm32';\n\n  /** ARM64. */\n  ARM64: 'arm64';\n\n  /** Itanium. */\n  IA64: 'ia64';\n\n  /** 32-bit PowerPC. */\n  PPC32: 'ppc32';\n\n  /** 64-bit PowerPC. */\n  PPC64: 'ppc64';\n\n  /** 32-bit x86. */\n  X86: 'x86';\n};\n\n/**\n * The constant map of values for HostArchValues.\n * @deprecated Use the HOSTARCHVALUES_XXXXX constants rather than the HostArchValues.XXXXX for bundle minification.\n */\nexport const HostArchValues: HostArchValues =\n  /*#__PURE__*/ createConstMap<HostArchValues>([\n    TMP_HOSTARCHVALUES_AMD64,\n    TMP_HOSTARCHVALUES_ARM32,\n    TMP_HOSTARCHVALUES_ARM64,\n    TMP_HOSTARCHVALUES_IA64,\n    TMP_HOSTARCHVALUES_PPC32,\n    TMP_HOSTARCHVALUES_PPC64,\n    TMP_HOSTARCHVALUES_X86,\n  ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for OsTypeValues enum definition\n *\n * The operating system type.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_OSTYPEVALUES_WINDOWS = 'windows';\nconst TMP_OSTYPEVALUES_LINUX = 'linux';\nconst TMP_OSTYPEVALUES_DARWIN = 'darwin';\nconst TMP_OSTYPEVALUES_FREEBSD = 'freebsd';\nconst TMP_OSTYPEVALUES_NETBSD = 'netbsd';\nconst TMP_OSTYPEVALUES_OPENBSD = 'openbsd';\nconst TMP_OSTYPEVALUES_DRAGONFLYBSD = 'dragonflybsd';\nconst TMP_OSTYPEVALUES_HPUX = 'hpux';\nconst TMP_OSTYPEVALUES_AIX = 'aix';\nconst TMP_OSTYPEVALUES_SOLARIS = 'solaris';\nconst TMP_OSTYPEVALUES_Z_OS = 'z_os';\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_WINDOWS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_WINDOWS = TMP_OSTYPEVALUES_WINDOWS;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_LINUX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_LINUX = TMP_OSTYPEVALUES_LINUX;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_DARWIN in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_DARWIN = TMP_OSTYPEVALUES_DARWIN;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_FREEBSD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_FREEBSD = TMP_OSTYPEVALUES_FREEBSD;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_NETBSD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_NETBSD = TMP_OSTYPEVALUES_NETBSD;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_OPENBSD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_OPENBSD = TMP_OSTYPEVALUES_OPENBSD;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_DRAGONFLYBSD in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_DRAGONFLYBSD = TMP_OSTYPEVALUES_DRAGONFLYBSD;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_HPUX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_HPUX = TMP_OSTYPEVALUES_HPUX;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_AIX in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_AIX = TMP_OSTYPEVALUES_AIX;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_SOLARIS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_SOLARIS = TMP_OSTYPEVALUES_SOLARIS;\n\n/**\n * The operating system type.\n *\n * @deprecated Use OS_TYPE_VALUE_Z_OS in [incubating entry-point]({@link https://github.com/open-telemetry/opentelemetry-js/blob/main/semantic-conventions/README.md#unstable-semconv}).\n */\nexport const OSTYPEVALUES_Z_OS = TMP_OSTYPEVALUES_Z_OS;\n\n/**\n * Identifies the Values for OsTypeValues enum definition\n *\n * The operating system type.\n * @deprecated Use the OSTYPEVALUES_XXXXX constants rather than the OsTypeValues.XXXXX for bundle minification.\n */\nexport type OsTypeValues = {\n  /** Microsoft Windows. */\n  WINDOWS: 'windows';\n\n  /** Linux. */\n  LINUX: 'linux';\n\n  /** Apple Darwin. */\n  DARWIN: 'darwin';\n\n  /** FreeBSD. */\n  FREEBSD: 'freebsd';\n\n  /** NetBSD. */\n  NETBSD: 'netbsd';\n\n  /** OpenBSD. */\n  OPENBSD: 'openbsd';\n\n  /** DragonFly BSD. */\n  DRAGONFLYBSD: 'dragonflybsd';\n\n  /** HP-UX (Hewlett Packard Unix). */\n  HPUX: 'hpux';\n\n  /** AIX (Advanced Interactive eXecutive). */\n  AIX: 'aix';\n\n  /** Oracle Solaris. */\n  SOLARIS: 'solaris';\n\n  /** IBM z/OS. */\n  Z_OS: 'z_os';\n};\n\n/**\n * The constant map of values for OsTypeValues.\n * @deprecated Use the OSTYPEVALUES_XXXXX constants rather than the OsTypeValues.XXXXX for bundle minification.\n */\nexport const OsTypeValues: OsTypeValues =\n  /*#__PURE__*/ createConstMap<OsTypeValues>([\n    TMP_OSTYPEVALUES_WINDOWS,\n    TMP_OSTYPEVALUES_LINUX,\n    TMP_OSTYPEVALUES_DARWIN,\n    TMP_OSTYPEVALUES_FREEBSD,\n    TMP_OSTYPEVALUES_NETBSD,\n    TMP_OSTYPEVALUES_OPENBSD,\n    TMP_OSTYPEVALUES_DRAGONFLYBSD,\n    TMP_OSTYPEVALUES_HPUX,\n    TMP_OSTYPEVALUES_AIX,\n    TMP_OSTYPEVALUES_SOLARIS,\n    TMP_OSTYPEVALUES_Z_OS,\n  ]);\n\n/* ----------------------------------------------------------------------------------------------------------\n * Constant values for TelemetrySdkLanguageValues enum definition\n *\n * The language of the telemetry SDK.\n * ---------------------------------------------------------------------------------------------------------- */\n\n// Temporary local constants to assign to the individual exports and the namespaced version\n// Required to avoid the namespace exports using the unminifiable export names for some package types\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_CPP = 'cpp';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET = 'dotnet';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG = 'erlang';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_GO = 'go';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA = 'java';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS = 'nodejs';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_PHP = 'php';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON = 'python';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY = 'ruby';\nconst TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS = 'webjs';\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_CPP.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_CPP =\n  TMP_TELEMETRYSDKLANGUAGEVALUES_CPP;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_DOTNET =\n  TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_ERLANG =\n  TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_GO.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_GO = TMP_TELEMETRYSDKLANGUAGEVALUES_GO;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_JAVA.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_JAVA =\n  TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_NODEJS =\n  TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PHP.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_PHP =\n  TMP_TELEMETRYSDKLANGUAGEVALUES_PHP;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_PYTHON =\n  TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_RUBY.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_RUBY =\n  TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY;\n\n/**\n * The language of the telemetry SDK.\n *\n * @deprecated Use TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS.\n */\nexport const TELEMETRYSDKLANGUAGEVALUES_WEBJS =\n  TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS;\n\n/**\n * Identifies the Values for TelemetrySdkLanguageValues enum definition\n *\n * The language of the telemetry SDK.\n * @deprecated Use the TELEMETRYSDKLANGUAGEVALUES_XXXXX constants rather than the TelemetrySdkLanguageValues.XXXXX for bundle minification.\n */\nexport type TelemetrySdkLanguageValues = {\n  /** cpp. */\n  CPP: 'cpp';\n\n  /** dotnet. */\n  DOTNET: 'dotnet';\n\n  /** erlang. */\n  ERLANG: 'erlang';\n\n  /** go. */\n  GO: 'go';\n\n  /** java. */\n  JAVA: 'java';\n\n  /** nodejs. */\n  NODEJS: 'nodejs';\n\n  /** php. */\n  PHP: 'php';\n\n  /** python. */\n  PYTHON: 'python';\n\n  /** ruby. */\n  RUBY: 'ruby';\n\n  /** webjs. */\n  WEBJS: 'webjs';\n};\n\n/**\n * The constant map of values for TelemetrySdkLanguageValues.\n * @deprecated Use the TELEMETRYSDKLANGUAGEVALUES_XXXXX constants rather than the TelemetrySdkLanguageValues.XXXXX for bundle minification.\n */\nexport const TelemetrySdkLanguageValues: TelemetrySdkLanguageValues =\n  /*#__PURE__*/ createConstMap<TelemetrySdkLanguageValues>([\n    TMP_TELEMETRYSDKLANGUAGEVALUES_CPP,\n    TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET,\n    TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG,\n    TMP_TELEMETRYSDKLANGUAGEVALUES_GO,\n    TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA,\n    TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS,\n    TMP_TELEMETRYSDKLANGUAGEVALUES_PHP,\n    TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON,\n    TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY,\n    TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS,\n  ]);\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable no-restricted-syntax --\n * These re-exports are only of constants, only one-level deep at this point,\n * and should not cause problems for tree-shakers.\n */\nexport * from './SemanticResourceAttributes';\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/stable/attributes.ts.j2\n//----------------------------------------------------------------------------------------------------------\n\n/**\n * ASP.NET Core exception middleware handling result.\n *\n * @example handled\n * @example unhandled\n */\nexport const ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT = 'aspnetcore.diagnostics.exception.result' as const;\n\n/**\n * Enum value \"aborted\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n *\n * Exception handling didn't run because the request was aborted.\n */\nexport const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_ABORTED = \"aborted\" as const;\n\n/**\n * Enum value \"handled\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n *\n * Exception was handled by the exception handling middleware.\n */\nexport const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_HANDLED = \"handled\" as const;\n\n/**\n * Enum value \"skipped\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n *\n * Exception handling was skipped because the response had started.\n */\nexport const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_SKIPPED = \"skipped\" as const;\n\n/**\n * Enum value \"unhandled\" for attribute {@link ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT}.\n *\n * Exception was not handled by the exception handling middleware.\n */\nexport const ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_UNHANDLED = \"unhandled\" as const;\n\n/**\n * Full type name of the [`IExceptionHandler`](https://learn.microsoft.com/dotnet/api/microsoft.aspnetcore.diagnostics.iexceptionhandler) implementation that handled the exception.\n *\n * @example Contoso.MyHandler\n */\nexport const ATTR_ASPNETCORE_DIAGNOSTICS_HANDLER_TYPE = 'aspnetcore.diagnostics.handler.type' as const;\n\n/**\n * Rate limiting policy name.\n *\n * @example fixed\n * @example sliding\n * @example token\n */\nexport const ATTR_ASPNETCORE_RATE_LIMITING_POLICY = 'aspnetcore.rate_limiting.policy' as const;\n\n/**\n * Rate-limiting result, shows whether the lease was acquired or contains a rejection reason\n *\n * @example acquired\n * @example request_canceled\n */\nexport const ATTR_ASPNETCORE_RATE_LIMITING_RESULT = 'aspnetcore.rate_limiting.result' as const;\n\n/**\n * Enum value \"acquired\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n *\n * Lease was acquired\n */\nexport const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ACQUIRED = \"acquired\" as const;\n\n/**\n * Enum value \"endpoint_limiter\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n *\n * Lease request was rejected by the endpoint limiter\n */\nexport const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ENDPOINT_LIMITER = \"endpoint_limiter\" as const;\n\n/**\n * Enum value \"global_limiter\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n *\n * Lease request was rejected by the global limiter\n */\nexport const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_GLOBAL_LIMITER = \"global_limiter\" as const;\n\n/**\n * Enum value \"request_canceled\" for attribute {@link ATTR_ASPNETCORE_RATE_LIMITING_RESULT}.\n *\n * Lease request was canceled\n */\nexport const ASPNETCORE_RATE_LIMITING_RESULT_VALUE_REQUEST_CANCELED = \"request_canceled\" as const;\n\n/**\n * Flag indicating if request was handled by the application pipeline.\n *\n * @example true\n */\nexport const ATTR_ASPNETCORE_REQUEST_IS_UNHANDLED = 'aspnetcore.request.is_unhandled' as const;\n\n/**\n * A value that indicates whether the matched route is a fallback route.\n *\n * @example true\n */\nexport const ATTR_ASPNETCORE_ROUTING_IS_FALLBACK = 'aspnetcore.routing.is_fallback' as const;\n\n/**\n * Match result - success or failure\n *\n * @example success\n * @example failure\n */\nexport const ATTR_ASPNETCORE_ROUTING_MATCH_STATUS = 'aspnetcore.routing.match_status' as const;\n\n/**\n * Enum value \"failure\" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}.\n *\n * Match failed\n */\nexport const ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_FAILURE = \"failure\" as const;\n\n/**\n * Enum value \"success\" for attribute {@link ATTR_ASPNETCORE_ROUTING_MATCH_STATUS}.\n *\n * Match succeeded\n */\nexport const ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_SUCCESS = \"success\" as const;\n\n/**\n * A value that indicates whether the user is authenticated.\n *\n * @example true\n */\nexport const ATTR_ASPNETCORE_USER_IS_AUTHENTICATED = 'aspnetcore.user.is_authenticated' as const;\n\n/**\n * Client address - domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.\n *\n * @example client.example.com\n * @example 10.1.2.80\n * @example /tmp/my.sock\n *\n * @note When observed from the server side, and when communicating through an intermediary, `client.address` **SHOULD** represent the client address behind any intermediaries,  for example proxies, if it's available.\n */\nexport const ATTR_CLIENT_ADDRESS = 'client.address' as const;\n\n/**\n * Client port number.\n *\n * @example 65123\n *\n * @note When observed from the server side, and when communicating through an intermediary, `client.port` **SHOULD** represent the client port behind any intermediaries,  for example proxies, if it's available.\n */\nexport const ATTR_CLIENT_PORT = 'client.port' as const;\n\n/**\n * The column number in `code.file.path` best representing the operation. It **SHOULD** point within the code unit named in `code.function.name`. This attribute **MUST NOT** be used on the Profile signal since the data is already captured in 'message Line'. This constraint is imposed to prevent redundancy and maintain data integrity.\n *\n * @example 16\n */\nexport const ATTR_CODE_COLUMN_NUMBER = 'code.column.number' as const;\n\n/**\n * The source code file name that identifies the code unit as uniquely as possible (preferably an absolute file path). This attribute **MUST NOT** be used on the Profile signal since the data is already captured in 'message Function'. This constraint is imposed to prevent redundancy and maintain data integrity.\n *\n * @example \"/usr/local/MyApplication/content_root/app/index.php\"\n */\nexport const ATTR_CODE_FILE_PATH = 'code.file.path' as const;\n\n/**\n * The method or function fully-qualified name without arguments. The value should fit the natural representation of the language runtime, which is also likely the same used within `code.stacktrace` attribute value. This attribute **MUST NOT** be used on the Profile signal since the data is already captured in 'message Function'. This constraint is imposed to prevent redundancy and maintain data integrity.\n *\n * @example com.example.MyHttpService.serveRequest\n * @example GuzzleHttp\\\\Client::transfer\n * @example fopen\n *\n * @note Values and format depends on each language runtime, thus it is impossible to provide an exhaustive list of examples.\n * The values are usually the same (or prefixes of) the ones found in native stack trace representation stored in\n * `code.stacktrace` without information on arguments.\n *\n * Examples:\n *\n *   - Java method: `com.example.MyHttpService.serveRequest`\n *   - Java anonymous class method: `com.mycompany.Main$1.myMethod`\n *   - Java lambda method: `com.mycompany.Main$$Lambda/0x0000748ae4149c00.myMethod`\n *   - PHP function: `GuzzleHttp\\Client::transfer`\n *   - Go function: `github.com/my/repo/pkg.foo.func5`\n *   - Elixir: `OpenTelemetry.Ctx.new`\n *   - Erlang: `opentelemetry_ctx:new`\n *   - Rust: `playground::my_module::my_cool_func`\n *   - C function: `fopen`\n */\nexport const ATTR_CODE_FUNCTION_NAME = 'code.function.name' as const;\n\n/**\n * The line number in `code.file.path` best representing the operation. It **SHOULD** point within the code unit named in `code.function.name`. This attribute **MUST NOT** be used on the Profile signal since the data is already captured in 'message Line'. This constraint is imposed to prevent redundancy and maintain data integrity.\n *\n * @example 42\n */\nexport const ATTR_CODE_LINE_NUMBER = 'code.line.number' as const;\n\n/**\n * A stacktrace as a string in the natural representation for the language runtime. The representation is identical to [`exception.stacktrace`](/docs/exceptions/exceptions-spans.md#stacktrace-representation). This attribute **MUST NOT** be used on the Profile signal since the data is already captured in 'message Location'. This constraint is imposed to prevent redundancy and maintain data integrity.\n *\n * @example \"at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\\\\n at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\\\\n at com.example.GenerateTrace.main(GenerateTrace.java:5)\\\\n\"\n */\nexport const ATTR_CODE_STACKTRACE = 'code.stacktrace' as const;\n\n/**\n * The name of a collection (table, container) within the database.\n *\n * @example public.users\n * @example customers\n *\n * @note It is **RECOMMENDED** to capture the value as provided by the application\n * without attempting to do any case normalization.\n *\n * The collection name **SHOULD NOT** be extracted from `db.query.text`,\n * when the database system supports query text with multiple collections\n * in non-batch operations.\n *\n * For batch operations, if the individual operations are known to have the same\n * collection name then that collection name **SHOULD** be used.\n */\nexport const ATTR_DB_COLLECTION_NAME = 'db.collection.name' as const;\n\n/**\n * The name of the database, fully qualified within the server address and port.\n *\n * @example customers\n * @example test.users\n *\n * @note If a database system has multiple namespace components, they **SHOULD** be concatenated from the most general to the most specific namespace component, using `|` as a separator between the components. Any missing components (and their associated separators) **SHOULD** be omitted.\n * Semantic conventions for individual database systems **SHOULD** document what `db.namespace` means in the context of that system.\n * It is **RECOMMENDED** to capture the value as provided by the application without attempting to do any case normalization.\n */\nexport const ATTR_DB_NAMESPACE = 'db.namespace' as const;\n\n/**\n * The number of queries included in a batch operation.\n *\n * @example 2\n * @example 3\n * @example 4\n *\n * @note Operations are only considered batches when they contain two or more operations, and so `db.operation.batch.size` **SHOULD** never be `1`.\n */\nexport const ATTR_DB_OPERATION_BATCH_SIZE = 'db.operation.batch.size' as const;\n\n/**\n * The name of the operation or command being executed.\n *\n * @example findAndModify\n * @example HMSET\n * @example SELECT\n *\n * @note It is **RECOMMENDED** to capture the value as provided by the application\n * without attempting to do any case normalization.\n *\n * The operation name **SHOULD NOT** be extracted from `db.query.text`,\n * when the database system supports query text with multiple operations\n * in non-batch operations.\n *\n * If spaces can occur in the operation name, multiple consecutive spaces\n * **SHOULD** be normalized to a single space.\n *\n * For batch operations, if the individual operations are known to have the same operation name\n * then that operation name **SHOULD** be used prepended by `BATCH `,\n * otherwise `db.operation.name` **SHOULD** be `BATCH` or some other database\n * system specific term if more applicable.\n */\nexport const ATTR_DB_OPERATION_NAME = 'db.operation.name' as const;\n\n/**\n * Low cardinality summary of a database query.\n *\n * @example SELECT wuser_table\n * @example INSERT shipping_details SELECT orders\n * @example get user by id\n *\n * @note The query summary describes a class of database queries and is useful\n * as a grouping key, especially when analyzing telemetry for database\n * calls involving complex queries.\n *\n * Summary may be available to the instrumentation through\n * instrumentation hooks or other means. If it is not available, instrumentations\n * that support query parsing **SHOULD** generate a summary following\n * [Generating query summary](/docs/database/database-spans.md#generating-a-summary-of-the-query)\n * section.\n */\nexport const ATTR_DB_QUERY_SUMMARY = 'db.query.summary' as const;\n\n/**\n * The database query being executed.\n *\n * @example SELECT * FROM wuser_table where username = ?\n * @example SET mykey ?\n *\n * @note For sanitization see [Sanitization of `db.query.text`](/docs/database/database-spans.md#sanitization-of-dbquerytext).\n * For batch operations, if the individual operations are known to have the same query text then that query text **SHOULD** be used, otherwise all of the individual query texts **SHOULD** be concatenated with separator `; ` or some other database system specific separator if more applicable.\n * Parameterized query text **SHOULD NOT** be sanitized. Even though parameterized query text can potentially have sensitive data, by using a parameterized query the user is giving a strong signal that any sensitive data will be passed as parameter values, and the benefit to observability of capturing the static part of the query text by default outweighs the risk.\n */\nexport const ATTR_DB_QUERY_TEXT = 'db.query.text' as const;\n\n/**\n * Database response status code.\n *\n * @example 102\n * @example ORA-17002\n * @example 08P01\n * @example 404\n *\n * @note The status code returned by the database. Usually it represents an error code, but may also represent partial success, warning, or differentiate between various types of successful outcomes.\n * Semantic conventions for individual database systems **SHOULD** document what `db.response.status_code` means in the context of that system.\n */\nexport const ATTR_DB_RESPONSE_STATUS_CODE = 'db.response.status_code' as const;\n\n/**\n * The name of a stored procedure within the database.\n *\n * @example GetCustomer\n *\n * @note It is **RECOMMENDED** to capture the value as provided by the application\n * without attempting to do any case normalization.\n *\n * For batch operations, if the individual operations are known to have the same\n * stored procedure name then that stored procedure name **SHOULD** be used.\n */\nexport const ATTR_DB_STORED_PROCEDURE_NAME = 'db.stored_procedure.name' as const;\n\n/**\n * The database management system (DBMS) product as identified by the client instrumentation.\n *\n * @note The actual DBMS may differ from the one identified by the client. For example, when using PostgreSQL client libraries to connect to a CockroachDB, the `db.system.name` is set to `postgresql` based on the instrumentation's best knowledge.\n */\nexport const ATTR_DB_SYSTEM_NAME = 'db.system.name' as const;\n\n/**\n * Enum value \"mariadb\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [MariaDB](https://mariadb.org/)\n */\nexport const DB_SYSTEM_NAME_VALUE_MARIADB = \"mariadb\" as const;\n\n/**\n * Enum value \"microsoft.sql_server\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [Microsoft SQL Server](https://www.microsoft.com/sql-server)\n */\nexport const DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER = \"microsoft.sql_server\" as const;\n\n/**\n * Enum value \"mysql\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [MySQL](https://www.mysql.com/)\n */\nexport const DB_SYSTEM_NAME_VALUE_MYSQL = \"mysql\" as const;\n\n/**\n * Enum value \"postgresql\" for attribute {@link ATTR_DB_SYSTEM_NAME}.\n *\n * [PostgreSQL](https://www.postgresql.org/)\n */\nexport const DB_SYSTEM_NAME_VALUE_POSTGRESQL = \"postgresql\" as const;\n\n/**\n * Name of the garbage collector managed heap generation.\n *\n * @example gen0\n * @example gen1\n * @example gen2\n */\nexport const ATTR_DOTNET_GC_HEAP_GENERATION = 'dotnet.gc.heap.generation' as const;\n\n/**\n * Enum value \"gen0\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Generation 0\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_GEN0 = \"gen0\" as const;\n\n/**\n * Enum value \"gen1\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Generation 1\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_GEN1 = \"gen1\" as const;\n\n/**\n * Enum value \"gen2\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Generation 2\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_GEN2 = \"gen2\" as const;\n\n/**\n * Enum value \"loh\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Large Object Heap\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_LOH = \"loh\" as const;\n\n/**\n * Enum value \"poh\" for attribute {@link ATTR_DOTNET_GC_HEAP_GENERATION}.\n *\n * Pinned Object Heap\n */\nexport const DOTNET_GC_HEAP_GENERATION_VALUE_POH = \"poh\" as const;\n\n/**\n * Describes a class of error the operation ended with.\n *\n * @example timeout\n * @example java.net.UnknownHostException\n * @example server_certificate_invalid\n * @example 500\n *\n * @note The `error.type` **SHOULD** be predictable, and **SHOULD** have low cardinality.\n *\n * When `error.type` is set to a type (e.g., an exception type), its\n * canonical class name identifying the type within the artifact **SHOULD** be used.\n *\n * Instrumentations **SHOULD** document the list of errors they report.\n *\n * The cardinality of `error.type` within one instrumentation library **SHOULD** be low.\n * Telemetry consumers that aggregate data from multiple instrumentation libraries and applications\n * should be prepared for `error.type` to have high cardinality at query time when no\n * additional filters are applied.\n *\n * If the operation has completed successfully, instrumentations **SHOULD NOT** set `error.type`.\n *\n * If a specific domain defines its own set of error identifiers (such as HTTP or gRPC status codes),\n * it's **RECOMMENDED** to:\n *\n *   - Use a domain-specific attribute\n *   - Set `error.type` to capture all errors, regardless of whether they are defined within the domain-specific set or not.\n */\nexport const ATTR_ERROR_TYPE = 'error.type' as const;\n\n/**\n * Enum value \"_OTHER\" for attribute {@link ATTR_ERROR_TYPE}.\n *\n * A fallback error value to be used when the instrumentation doesn't define a custom value.\n */\nexport const ERROR_TYPE_VALUE_OTHER = \"_OTHER\" as const;\n\n/**\n * Indicates that the exception is escaping the scope of the span.\n *\n * @deprecated It's no longer recommended to record exceptions that are handled and do not escape the scope of a span.\n */\nexport const ATTR_EXCEPTION_ESCAPED = 'exception.escaped' as const;\n\n/**\n * The exception message.\n *\n * @example Division by zero\n * @example Can't convert 'int' object to str implicitly\n */\nexport const ATTR_EXCEPTION_MESSAGE = 'exception.message' as const;\n\n/**\n * A stacktrace as a string in the natural representation for the language runtime. The representation is to be determined and documented by each language SIG.\n *\n * @example \"Exception in thread \"main\" java.lang.RuntimeException: Test exception\\\\n at com.example.GenerateTrace.methodB(GenerateTrace.java:13)\\\\n at com.example.GenerateTrace.methodA(GenerateTrace.java:9)\\\\n at com.example.GenerateTrace.main(GenerateTrace.java:5)\\\\n\"\n */\nexport const ATTR_EXCEPTION_STACKTRACE = 'exception.stacktrace' as const;\n\n/**\n * The type of the exception (its fully-qualified class name, if applicable). The dynamic type of the exception should be preferred over the static type in languages that support it.\n *\n * @example java.net.ConnectException\n * @example OSError\n */\nexport const ATTR_EXCEPTION_TYPE = 'exception.type' as const;\n\n/**\n * HTTP request headers, `<key>` being the normalized HTTP Header name (lowercase), the value being the header values.\n *\n * @example [\"application/json\"]\n * @example [\"1.2.3.4\", \"1.2.3.5\"]\n *\n * @note Instrumentations **SHOULD** require an explicit configuration of which headers are to be captured.\n * Including all request headers can be a security risk - explicit configuration helps avoid leaking sensitive information.\n *\n * The `User-Agent` header is already captured in the `user_agent.original` attribute.\n * Users **MAY** explicitly configure instrumentations to capture them even though it is not recommended.\n *\n * The attribute value **MUST** consist of either multiple header values as an array of strings\n * or a single-item array containing a possibly comma-concatenated string, depending on the way\n * the HTTP library provides access to headers.\n *\n * Examples:\n *\n *   - A header `Content-Type: application/json` **SHOULD** be recorded as the `http.request.header.content-type`\n *     attribute with value `[\"application/json\"]`.\n *   - A header `X-Forwarded-For: 1.2.3.4, 1.2.3.5` **SHOULD** be recorded as the `http.request.header.x-forwarded-for`\n *     attribute with value `[\"1.2.3.4\", \"1.2.3.5\"]` or `[\"1.2.3.4, 1.2.3.5\"]` depending on the HTTP library.\n */\nexport const ATTR_HTTP_REQUEST_HEADER = (key: string) => `http.request.header.${key}`;\n\n/**\n * HTTP request method.\n *\n * @example GET\n * @example POST\n * @example HEAD\n *\n * @note HTTP request method value **SHOULD** be \"known\" to the instrumentation.\n * By default, this convention defines \"known\" methods as the ones listed in [RFC9110](https://www.rfc-editor.org/rfc/rfc9110.html#name-methods)\n * and the PATCH method defined in [RFC5789](https://www.rfc-editor.org/rfc/rfc5789.html).\n *\n * If the HTTP request method is not known to instrumentation, it **MUST** set the `http.request.method` attribute to `_OTHER`.\n *\n * If the HTTP instrumentation could end up converting valid HTTP request methods to `_OTHER`, then it **MUST** provide a way to override\n * the list of known HTTP methods. If this override is done via environment variable, then the environment variable **MUST** be named\n * OTEL_INSTRUMENTATION_HTTP_KNOWN_METHODS and support a comma-separated list of case-sensitive known HTTP methods\n * (this list **MUST** be a full override of the default known method, it is not a list of known methods in addition to the defaults).\n *\n * HTTP method names are case-sensitive and `http.request.method` attribute value **MUST** match a known HTTP method name exactly.\n * Instrumentations for specific web frameworks that consider HTTP methods to be case insensitive, **SHOULD** populate a canonical equivalent.\n * Tracing instrumentations that do so, **MUST** also set `http.request.method_original` to the original value.\n */\nexport const ATTR_HTTP_REQUEST_METHOD = 'http.request.method' as const;\n\n/**\n * Enum value \"_OTHER\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * Any HTTP method that the instrumentation has no prior knowledge of.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_OTHER = \"_OTHER\" as const;\n\n/**\n * Enum value \"CONNECT\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * CONNECT method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_CONNECT = \"CONNECT\" as const;\n\n/**\n * Enum value \"DELETE\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * DELETE method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_DELETE = \"DELETE\" as const;\n\n/**\n * Enum value \"GET\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * GET method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_GET = \"GET\" as const;\n\n/**\n * Enum value \"HEAD\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * HEAD method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_HEAD = \"HEAD\" as const;\n\n/**\n * Enum value \"OPTIONS\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * OPTIONS method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_OPTIONS = \"OPTIONS\" as const;\n\n/**\n * Enum value \"PATCH\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * PATCH method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_PATCH = \"PATCH\" as const;\n\n/**\n * Enum value \"POST\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * POST method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_POST = \"POST\" as const;\n\n/**\n * Enum value \"PUT\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * PUT method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_PUT = \"PUT\" as const;\n\n/**\n * Enum value \"TRACE\" for attribute {@link ATTR_HTTP_REQUEST_METHOD}.\n *\n * TRACE method.\n */\nexport const HTTP_REQUEST_METHOD_VALUE_TRACE = \"TRACE\" as const;\n\n/**\n * Original HTTP method sent by the client in the request line.\n *\n * @example GeT\n * @example ACL\n * @example foo\n */\nexport const ATTR_HTTP_REQUEST_METHOD_ORIGINAL = 'http.request.method_original' as const;\n\n/**\n * The ordinal number of request resending attempt (for any reason, including redirects).\n *\n * @example 3\n *\n * @note The resend count **SHOULD** be updated each time an HTTP request gets resent by the client, regardless of what was the cause of the resending (e.g. redirection, authorization failure, 503 Server Unavailable, network issues, or any other).\n */\nexport const ATTR_HTTP_REQUEST_RESEND_COUNT = 'http.request.resend_count' as const;\n\n/**\n * HTTP response headers, `<key>` being the normalized HTTP Header name (lowercase), the value being the header values.\n *\n * @example [\"application/json\"]\n * @example [\"abc\", \"def\"]\n *\n * @note Instrumentations **SHOULD** require an explicit configuration of which headers are to be captured.\n * Including all response headers can be a security risk - explicit configuration helps avoid leaking sensitive information.\n *\n * Users **MAY** explicitly configure instrumentations to capture them even though it is not recommended.\n *\n * The attribute value **MUST** consist of either multiple header values as an array of strings\n * or a single-item array containing a possibly comma-concatenated string, depending on the way\n * the HTTP library provides access to headers.\n *\n * Examples:\n *\n *   - A header `Content-Type: application/json` header **SHOULD** be recorded as the `http.request.response.content-type`\n *     attribute with value `[\"application/json\"]`.\n *   - A header `My-custom-header: abc, def` header **SHOULD** be recorded as the `http.response.header.my-custom-header`\n *     attribute with value `[\"abc\", \"def\"]` or `[\"abc, def\"]` depending on the HTTP library.\n */\nexport const ATTR_HTTP_RESPONSE_HEADER = (key: string) => `http.response.header.${key}`;\n\n/**\n * [HTTP response status code](https://tools.ietf.org/html/rfc7231#section-6).\n *\n * @example 200\n */\nexport const ATTR_HTTP_RESPONSE_STATUS_CODE = 'http.response.status_code' as const;\n\n/**\n * The matched route, that is, the path template in the format used by the respective server framework.\n *\n * @example /users/:userID?\n * @example {controller}/{action}/{id?}\n *\n * @note **MUST NOT** be populated when this is not supported by the HTTP server framework as the route attribute should have low-cardinality and the URI path can NOT substitute it.\n * **SHOULD** include the [application root](/docs/http/http-spans.md#http-server-definitions) if there is one.\n */\nexport const ATTR_HTTP_ROUTE = 'http.route' as const;\n\n/**\n * Name of the garbage collector action.\n *\n * @example end of minor GC\n * @example end of major GC\n *\n * @note Garbage collector action is generally obtained via [GarbageCollectionNotificationInfo#getGcAction()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcAction()).\n */\nexport const ATTR_JVM_GC_ACTION = 'jvm.gc.action' as const;\n\n/**\n * Name of the garbage collector.\n *\n * @example G1 Young Generation\n * @example G1 Old Generation\n *\n * @note Garbage collector name is generally obtained via [GarbageCollectionNotificationInfo#getGcName()](https://docs.oracle.com/en/java/javase/11/docs/api/jdk.management/com/sun/management/GarbageCollectionNotificationInfo.html#getGcName()).\n */\nexport const ATTR_JVM_GC_NAME = 'jvm.gc.name' as const;\n\n/**\n * Name of the memory pool.\n *\n * @example G1 Old Gen\n * @example G1 Eden space\n * @example G1 Survivor Space\n *\n * @note Pool names are generally obtained via [MemoryPoolMXBean#getName()](https://docs.oracle.com/en/java/javase/11/docs/api/java.management/java/lang/management/MemoryPoolMXBean.html#getName()).\n */\nexport const ATTR_JVM_MEMORY_POOL_NAME = 'jvm.memory.pool.name' as const;\n\n/**\n * The type of memory.\n *\n * @example heap\n * @example non_heap\n */\nexport const ATTR_JVM_MEMORY_TYPE = 'jvm.memory.type' as const;\n\n/**\n * Enum value \"heap\" for attribute {@link ATTR_JVM_MEMORY_TYPE}.\n *\n * Heap memory.\n */\nexport const JVM_MEMORY_TYPE_VALUE_HEAP = \"heap\" as const;\n\n/**\n * Enum value \"non_heap\" for attribute {@link ATTR_JVM_MEMORY_TYPE}.\n *\n * Non-heap memory\n */\nexport const JVM_MEMORY_TYPE_VALUE_NON_HEAP = \"non_heap\" as const;\n\n/**\n * Whether the thread is daemon or not.\n */\nexport const ATTR_JVM_THREAD_DAEMON = 'jvm.thread.daemon' as const;\n\n/**\n * State of the thread.\n *\n * @example runnable\n * @example blocked\n */\nexport const ATTR_JVM_THREAD_STATE = 'jvm.thread.state' as const;\n\n/**\n * Enum value \"blocked\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that is blocked waiting for a monitor lock is in this state.\n */\nexport const JVM_THREAD_STATE_VALUE_BLOCKED = \"blocked\" as const;\n\n/**\n * Enum value \"new\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that has not yet started is in this state.\n */\nexport const JVM_THREAD_STATE_VALUE_NEW = \"new\" as const;\n\n/**\n * Enum value \"runnable\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread executing in the Java virtual machine is in this state.\n */\nexport const JVM_THREAD_STATE_VALUE_RUNNABLE = \"runnable\" as const;\n\n/**\n * Enum value \"terminated\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that has exited is in this state.\n */\nexport const JVM_THREAD_STATE_VALUE_TERMINATED = \"terminated\" as const;\n\n/**\n * Enum value \"timed_waiting\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that is waiting for another thread to perform an action for up to a specified waiting time is in this state.\n */\nexport const JVM_THREAD_STATE_VALUE_TIMED_WAITING = \"timed_waiting\" as const;\n\n/**\n * Enum value \"waiting\" for attribute {@link ATTR_JVM_THREAD_STATE}.\n *\n * A thread that is waiting indefinitely for another thread to perform a particular action is in this state.\n */\nexport const JVM_THREAD_STATE_VALUE_WAITING = \"waiting\" as const;\n\n/**\n * Local address of the network connection - IP address or Unix domain socket name.\n *\n * @example 10.1.2.80\n * @example /tmp/my.sock\n */\nexport const ATTR_NETWORK_LOCAL_ADDRESS = 'network.local.address' as const;\n\n/**\n * Local port number of the network connection.\n *\n * @example 65123\n */\nexport const ATTR_NETWORK_LOCAL_PORT = 'network.local.port' as const;\n\n/**\n * Peer address of the network connection - IP address or Unix domain socket name.\n *\n * @example 10.1.2.80\n * @example /tmp/my.sock\n */\nexport const ATTR_NETWORK_PEER_ADDRESS = 'network.peer.address' as const;\n\n/**\n * Peer port number of the network connection.\n *\n * @example 65123\n */\nexport const ATTR_NETWORK_PEER_PORT = 'network.peer.port' as const;\n\n/**\n * [OSI application layer](https://wikipedia.org/wiki/Application_layer) or non-OSI equivalent.\n *\n * @example amqp\n * @example http\n * @example mqtt\n *\n * @note The value **SHOULD** be normalized to lowercase.\n */\nexport const ATTR_NETWORK_PROTOCOL_NAME = 'network.protocol.name' as const;\n\n/**\n * The actual version of the protocol used for network communication.\n *\n * @example 1.1\n * @example 2\n *\n * @note If protocol version is subject to negotiation (for example using [ALPN](https://www.rfc-editor.org/rfc/rfc7301.html)), this attribute **SHOULD** be set to the negotiated version. If the actual protocol version is not known, this attribute **SHOULD NOT** be set.\n */\nexport const ATTR_NETWORK_PROTOCOL_VERSION = 'network.protocol.version' as const;\n\n/**\n * [OSI transport layer](https://wikipedia.org/wiki/Transport_layer) or [inter-process communication method](https://wikipedia.org/wiki/Inter-process_communication).\n *\n * @example tcp\n * @example udp\n *\n * @note The value **SHOULD** be normalized to lowercase.\n *\n * Consider always setting the transport when setting a port number, since\n * a port number is ambiguous without knowing the transport. For example\n * different processes could be listening on TCP port 12345 and UDP port 12345.\n */\nexport const ATTR_NETWORK_TRANSPORT = 'network.transport' as const;\n\n/**\n * Enum value \"pipe\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * Named or anonymous pipe.\n */\nexport const NETWORK_TRANSPORT_VALUE_PIPE = \"pipe\" as const;\n\n/**\n * Enum value \"quic\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * QUIC\n */\nexport const NETWORK_TRANSPORT_VALUE_QUIC = \"quic\" as const;\n\n/**\n * Enum value \"tcp\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * TCP\n */\nexport const NETWORK_TRANSPORT_VALUE_TCP = \"tcp\" as const;\n\n/**\n * Enum value \"udp\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * UDP\n */\nexport const NETWORK_TRANSPORT_VALUE_UDP = \"udp\" as const;\n\n/**\n * Enum value \"unix\" for attribute {@link ATTR_NETWORK_TRANSPORT}.\n *\n * Unix domain socket\n */\nexport const NETWORK_TRANSPORT_VALUE_UNIX = \"unix\" as const;\n\n/**\n * [OSI network layer](https://wikipedia.org/wiki/Network_layer) or non-OSI equivalent.\n *\n * @example ipv4\n * @example ipv6\n *\n * @note The value **SHOULD** be normalized to lowercase.\n */\nexport const ATTR_NETWORK_TYPE = 'network.type' as const;\n\n/**\n * Enum value \"ipv4\" for attribute {@link ATTR_NETWORK_TYPE}.\n *\n * IPv4\n */\nexport const NETWORK_TYPE_VALUE_IPV4 = \"ipv4\" as const;\n\n/**\n * Enum value \"ipv6\" for attribute {@link ATTR_NETWORK_TYPE}.\n *\n * IPv6\n */\nexport const NETWORK_TYPE_VALUE_IPV6 = \"ipv6\" as const;\n\n/**\n * The name of the instrumentation scope - (`InstrumentationScope.Name` in OTLP).\n *\n * @example io.opentelemetry.contrib.mongodb\n */\nexport const ATTR_OTEL_SCOPE_NAME = 'otel.scope.name' as const;\n\n/**\n * The version of the instrumentation scope - (`InstrumentationScope.Version` in OTLP).\n *\n * @example 1.0.0\n */\nexport const ATTR_OTEL_SCOPE_VERSION = 'otel.scope.version' as const;\n\n/**\n * Name of the code, either \"OK\" or \"ERROR\". **MUST NOT** be set if the status code is UNSET.\n */\nexport const ATTR_OTEL_STATUS_CODE = 'otel.status_code' as const;\n\n/**\n * Enum value \"ERROR\" for attribute {@link ATTR_OTEL_STATUS_CODE}.\n *\n * The operation contains an error.\n */\nexport const OTEL_STATUS_CODE_VALUE_ERROR = \"ERROR\" as const;\n\n/**\n * Enum value \"OK\" for attribute {@link ATTR_OTEL_STATUS_CODE}.\n *\n * The operation has been validated by an Application developer or Operator to have completed successfully.\n */\nexport const OTEL_STATUS_CODE_VALUE_OK = \"OK\" as const;\n\n/**\n * Description of the Status if it has a value, otherwise not set.\n *\n * @example resource not found\n */\nexport const ATTR_OTEL_STATUS_DESCRIPTION = 'otel.status_description' as const;\n\n/**\n * Server domain name if available without reverse DNS lookup; otherwise, IP address or Unix domain socket name.\n *\n * @example example.com\n * @example 10.1.2.80\n * @example /tmp/my.sock\n *\n * @note When observed from the client side, and when communicating through an intermediary, `server.address` **SHOULD** represent the server address behind any intermediaries, for example proxies, if it's available.\n */\nexport const ATTR_SERVER_ADDRESS = 'server.address' as const;\n\n/**\n * Server port number.\n *\n * @example 80\n * @example 8080\n * @example 443\n *\n * @note When observed from the client side, and when communicating through an intermediary, `server.port` **SHOULD** represent the server port behind any intermediaries, for example proxies, if it's available.\n */\nexport const ATTR_SERVER_PORT = 'server.port' as const;\n\n/**\n * Logical name of the service.\n *\n * @example shoppingcart\n *\n * @note **MUST** be the same for all instances of horizontally scaled services. If the value was not specified, SDKs **MUST** fallback to `unknown_service:` concatenated with [`process.executable.name`](process.md), e.g. `unknown_service:bash`. If `process.executable.name` is not available, the value **MUST** be set to `unknown_service`.\n */\nexport const ATTR_SERVICE_NAME = 'service.name' as const;\n\n/**\n * The version string of the service API or implementation. The format is not defined by these conventions.\n *\n * @example 2.0.0\n * @example a01dbef8a\n */\nexport const ATTR_SERVICE_VERSION = 'service.version' as const;\n\n/**\n * SignalR HTTP connection closure status.\n *\n * @example app_shutdown\n * @example timeout\n */\nexport const ATTR_SIGNALR_CONNECTION_STATUS = 'signalr.connection.status' as const;\n\n/**\n * Enum value \"app_shutdown\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n *\n * The connection was closed because the app is shutting down.\n */\nexport const SIGNALR_CONNECTION_STATUS_VALUE_APP_SHUTDOWN = \"app_shutdown\" as const;\n\n/**\n * Enum value \"normal_closure\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n *\n * The connection was closed normally.\n */\nexport const SIGNALR_CONNECTION_STATUS_VALUE_NORMAL_CLOSURE = \"normal_closure\" as const;\n\n/**\n * Enum value \"timeout\" for attribute {@link ATTR_SIGNALR_CONNECTION_STATUS}.\n *\n * The connection was closed due to a timeout.\n */\nexport const SIGNALR_CONNECTION_STATUS_VALUE_TIMEOUT = \"timeout\" as const;\n\n/**\n * [SignalR transport type](https://github.com/dotnet/aspnetcore/blob/main/src/SignalR/docs/specs/TransportProtocols.md)\n *\n * @example web_sockets\n * @example long_polling\n */\nexport const ATTR_SIGNALR_TRANSPORT = 'signalr.transport' as const;\n\n/**\n * Enum value \"long_polling\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n *\n * LongPolling protocol\n */\nexport const SIGNALR_TRANSPORT_VALUE_LONG_POLLING = \"long_polling\" as const;\n\n/**\n * Enum value \"server_sent_events\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n *\n * ServerSentEvents protocol\n */\nexport const SIGNALR_TRANSPORT_VALUE_SERVER_SENT_EVENTS = \"server_sent_events\" as const;\n\n/**\n * Enum value \"web_sockets\" for attribute {@link ATTR_SIGNALR_TRANSPORT}.\n *\n * WebSockets protocol\n */\nexport const SIGNALR_TRANSPORT_VALUE_WEB_SOCKETS = \"web_sockets\" as const;\n\n/**\n * The language of the telemetry SDK.\n */\nexport const ATTR_TELEMETRY_SDK_LANGUAGE = 'telemetry.sdk.language' as const;\n\n/**\n * Enum value \"cpp\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_CPP = \"cpp\" as const;\n\n/**\n * Enum value \"dotnet\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET = \"dotnet\" as const;\n\n/**\n * Enum value \"erlang\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG = \"erlang\" as const;\n\n/**\n * Enum value \"go\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_GO = \"go\" as const;\n\n/**\n * Enum value \"java\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_JAVA = \"java\" as const;\n\n/**\n * Enum value \"nodejs\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS = \"nodejs\" as const;\n\n/**\n * Enum value \"php\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_PHP = \"php\" as const;\n\n/**\n * Enum value \"python\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON = \"python\" as const;\n\n/**\n * Enum value \"ruby\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_RUBY = \"ruby\" as const;\n\n/**\n * Enum value \"rust\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_RUST = \"rust\" as const;\n\n/**\n * Enum value \"swift\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_SWIFT = \"swift\" as const;\n\n/**\n * Enum value \"webjs\" for attribute {@link ATTR_TELEMETRY_SDK_LANGUAGE}.\n */\nexport const TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS = \"webjs\" as const;\n\n/**\n * The name of the telemetry SDK as defined above.\n *\n * @example opentelemetry\n *\n * @note The OpenTelemetry SDK **MUST** set the `telemetry.sdk.name` attribute to `opentelemetry`.\n * If another SDK, like a fork or a vendor-provided implementation, is used, this SDK **MUST** set the\n * `telemetry.sdk.name` attribute to the fully-qualified class or module name of this SDK's main entry point\n * or another suitable identifier depending on the language.\n * The identifier `opentelemetry` is reserved and **MUST NOT** be used in this case.\n * All custom identifiers **SHOULD** be stable across different versions of an implementation.\n */\nexport const ATTR_TELEMETRY_SDK_NAME = 'telemetry.sdk.name' as const;\n\n/**\n * The version string of the telemetry SDK.\n *\n * @example 1.2.3\n */\nexport const ATTR_TELEMETRY_SDK_VERSION = 'telemetry.sdk.version' as const;\n\n/**\n * The [URI fragment](https://www.rfc-editor.org/rfc/rfc3986#section-3.5) component\n *\n * @example SemConv\n */\nexport const ATTR_URL_FRAGMENT = 'url.fragment' as const;\n\n/**\n * Absolute URL describing a network resource according to [RFC3986](https://www.rfc-editor.org/rfc/rfc3986)\n *\n * @example https://www.foo.bar/search?q=OpenTelemetry#SemConv\n * @example //localhost\n *\n * @note For network calls, URL usually has `scheme://host[:port][path][?query][#fragment]` format, where the fragment\n * is not transmitted over HTTP, but if it is known, it **SHOULD** be included nevertheless.\n *\n * `url.full` **MUST NOT** contain credentials passed via URL in form of `https://username:password@www.example.com/`.\n * In such case username and password **SHOULD** be redacted and attribute's value **SHOULD** be `https://REDACTED:REDACTED@www.example.com/`.\n *\n * `url.full` **SHOULD** capture the absolute URL when it is available (or can be reconstructed).\n *\n * Sensitive content provided in `url.full` **SHOULD** be scrubbed when instrumentations can identify it.\n *\n *\n * Query string values for the following keys **SHOULD** be redacted by default and replaced by the\n * value `REDACTED`:\n *\n *   - [`AWSAccessKeyId`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth)\n *   - [`Signature`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth)\n *   - [`sig`](https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token)\n *   - [`X-Goog-Signature`](https://cloud.google.com/storage/docs/access-control/signed-urls)\n *\n * This list is subject to change over time.\n *\n * When a query string value is redacted, the query string key **SHOULD** still be preserved, e.g.\n * `https://www.example.com/path?color=blue&sig=REDACTED`.\n */\nexport const ATTR_URL_FULL = 'url.full' as const;\n\n/**\n * The [URI path](https://www.rfc-editor.org/rfc/rfc3986#section-3.3) component\n *\n * @example /search\n *\n * @note Sensitive content provided in `url.path` **SHOULD** be scrubbed when instrumentations can identify it.\n */\nexport const ATTR_URL_PATH = 'url.path' as const;\n\n/**\n * The [URI query](https://www.rfc-editor.org/rfc/rfc3986#section-3.4) component\n *\n * @example q=OpenTelemetry\n *\n * @note Sensitive content provided in `url.query` **SHOULD** be scrubbed when instrumentations can identify it.\n *\n *\n * Query string values for the following keys **SHOULD** be redacted by default and replaced by the value `REDACTED`:\n *\n *   - [`AWSAccessKeyId`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth)\n *   - [`Signature`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html#RESTAuthenticationQueryStringAuth)\n *   - [`sig`](https://learn.microsoft.com/azure/storage/common/storage-sas-overview#sas-token)\n *   - [`X-Goog-Signature`](https://cloud.google.com/storage/docs/access-control/signed-urls)\n *\n * This list is subject to change over time.\n *\n * When a query string value is redacted, the query string key **SHOULD** still be preserved, e.g.\n * `q=OpenTelemetry&sig=REDACTED`.\n */\nexport const ATTR_URL_QUERY = 'url.query' as const;\n\n/**\n * The [URI scheme](https://www.rfc-editor.org/rfc/rfc3986#section-3.1) component identifying the used protocol.\n *\n * @example https\n * @example ftp\n * @example telnet\n */\nexport const ATTR_URL_SCHEME = 'url.scheme' as const;\n\n/**\n * Value of the [HTTP User-Agent](https://www.rfc-editor.org/rfc/rfc9110.html#field.user-agent) header sent by the client.\n *\n * @example CERN-LineMode/2.15 libwww/2.17b3\n * @example Mozilla/5.0 (iPhone; CPU iPhone OS 14_7_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.2 Mobile/15E148 Safari/604.1\n * @example YourApp/1.0.0 grpc-java-okhttp/1.27.2\n */\nexport const ATTR_USER_AGENT_ORIGINAL = 'user_agent.original' as const;\n\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n//----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/register/stable/metrics.ts.j2\n//----------------------------------------------------------------------------------------------------------\n\n/**\n * Number of exceptions caught by exception handling middleware.\n *\n * @note Meter name: `Microsoft.AspNetCore.Diagnostics`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_ASPNETCORE_DIAGNOSTICS_EXCEPTIONS = 'aspnetcore.diagnostics.exceptions' as const;\n\n/**\n * Number of requests that are currently active on the server that hold a rate limiting lease.\n *\n * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_ASPNETCORE_RATE_LIMITING_ACTIVE_REQUEST_LEASES = 'aspnetcore.rate_limiting.active_request_leases' as const;\n\n/**\n * Number of requests that are currently queued, waiting to acquire a rate limiting lease.\n *\n * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_ASPNETCORE_RATE_LIMITING_QUEUED_REQUESTS = 'aspnetcore.rate_limiting.queued_requests' as const;\n\n/**\n * The time the request spent in a queue waiting to acquire a rate limiting lease.\n *\n * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_TIME_IN_QUEUE = 'aspnetcore.rate_limiting.request.time_in_queue' as const;\n\n/**\n * The duration of rate limiting lease held by requests on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_LEASE_DURATION = 'aspnetcore.rate_limiting.request_lease.duration' as const;\n\n/**\n * Number of requests that tried to acquire a rate limiting lease.\n *\n * @note Requests could be:\n *\n *   - Rejected by global or endpoint rate limiting policies\n *   - Canceled while waiting for the lease.\n *\n * Meter name: `Microsoft.AspNetCore.RateLimiting`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_ASPNETCORE_RATE_LIMITING_REQUESTS = 'aspnetcore.rate_limiting.requests' as const;\n\n/**\n * Number of requests that were attempted to be matched to an endpoint.\n *\n * @note Meter name: `Microsoft.AspNetCore.Routing`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_ASPNETCORE_ROUTING_MATCH_ATTEMPTS = 'aspnetcore.routing.match_attempts' as const;\n\n/**\n * Duration of database client operations.\n *\n * @note Batch operations **SHOULD** be recorded as a single operation.\n */\nexport const METRIC_DB_CLIENT_OPERATION_DURATION = 'db.client.operation.duration' as const;\n\n/**\n * The number of .NET assemblies that are currently loaded.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`AppDomain.CurrentDomain.GetAssemblies().Length`](https://learn.microsoft.com/dotnet/api/system.appdomain.getassemblies).\n */\nexport const METRIC_DOTNET_ASSEMBLY_COUNT = 'dotnet.assembly.count' as const;\n\n/**\n * The number of exceptions that have been thrown in managed code.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as counting calls to [`AppDomain.CurrentDomain.FirstChanceException`](https://learn.microsoft.com/dotnet/api/system.appdomain.firstchanceexception).\n */\nexport const METRIC_DOTNET_EXCEPTIONS = 'dotnet.exceptions' as const;\n\n/**\n * The number of garbage collections that have occurred since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric uses the [`GC.CollectionCount(int generation)`](https://learn.microsoft.com/dotnet/api/system.gc.collectioncount) API to calculate exclusive collections per generation.\n */\nexport const METRIC_DOTNET_GC_COLLECTIONS = 'dotnet.gc.collections' as const;\n\n/**\n * The *approximate* number of bytes allocated on the managed GC heap since the process has started. The returned value does not include any native allocations.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`GC.GetTotalAllocatedBytes()`](https://learn.microsoft.com/dotnet/api/system.gc.gettotalallocatedbytes).\n */\nexport const METRIC_DOTNET_GC_HEAP_TOTAL_ALLOCATED = 'dotnet.gc.heap.total_allocated' as const;\n\n/**\n * The heap fragmentation, as observed during the latest garbage collection.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`GC.GetGCMemoryInfo().GenerationInfo.FragmentationAfterBytes`](https://learn.microsoft.com/dotnet/api/system.gcgenerationinfo.fragmentationafterbytes).\n */\nexport const METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_FRAGMENTATION_SIZE = 'dotnet.gc.last_collection.heap.fragmentation.size' as const;\n\n/**\n * The managed GC heap size (including fragmentation), as observed during the latest garbage collection.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`GC.GetGCMemoryInfo().GenerationInfo.SizeAfterBytes`](https://learn.microsoft.com/dotnet/api/system.gcgenerationinfo.sizeafterbytes).\n */\nexport const METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_SIZE = 'dotnet.gc.last_collection.heap.size' as const;\n\n/**\n * The amount of committed virtual memory in use by the .NET GC, as observed during the latest garbage collection.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`GC.GetGCMemoryInfo().TotalCommittedBytes`](https://learn.microsoft.com/dotnet/api/system.gcmemoryinfo.totalcommittedbytes). Committed virtual memory may be larger than the heap size because it includes both memory for storing existing objects (the heap size) and some extra memory that is ready to handle newly allocated objects in the future.\n */\nexport const METRIC_DOTNET_GC_LAST_COLLECTION_MEMORY_COMMITTED_SIZE = 'dotnet.gc.last_collection.memory.committed_size' as const;\n\n/**\n * The total amount of time paused in GC since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`GC.GetTotalPauseDuration()`](https://learn.microsoft.com/dotnet/api/system.gc.gettotalpauseduration).\n */\nexport const METRIC_DOTNET_GC_PAUSE_TIME = 'dotnet.gc.pause.time' as const;\n\n/**\n * The amount of time the JIT compiler has spent compiling methods since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`JitInfo.GetCompilationTime()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompilationtime).\n */\nexport const METRIC_DOTNET_JIT_COMPILATION_TIME = 'dotnet.jit.compilation.time' as const;\n\n/**\n * Count of bytes of intermediate language that have been compiled since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`JitInfo.GetCompiledILBytes()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompiledilbytes).\n */\nexport const METRIC_DOTNET_JIT_COMPILED_IL_SIZE = 'dotnet.jit.compiled_il.size' as const;\n\n/**\n * The number of times the JIT compiler (re)compiled methods since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`JitInfo.GetCompiledMethodCount()`](https://learn.microsoft.com/dotnet/api/system.runtime.jitinfo.getcompiledmethodcount).\n */\nexport const METRIC_DOTNET_JIT_COMPILED_METHODS = 'dotnet.jit.compiled_methods' as const;\n\n/**\n * The number of times there was contention when trying to acquire a monitor lock since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`Monitor.LockContentionCount`](https://learn.microsoft.com/dotnet/api/system.threading.monitor.lockcontentioncount).\n */\nexport const METRIC_DOTNET_MONITOR_LOCK_CONTENTIONS = 'dotnet.monitor.lock_contentions' as const;\n\n/**\n * The number of processors available to the process.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as accessing [`Environment.ProcessorCount`](https://learn.microsoft.com/dotnet/api/system.environment.processorcount).\n */\nexport const METRIC_DOTNET_PROCESS_CPU_COUNT = 'dotnet.process.cpu.count' as const;\n\n/**\n * CPU time used by the process.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as accessing the corresponding processor time properties on [`System.Diagnostics.Process`](https://learn.microsoft.com/dotnet/api/system.diagnostics.process).\n */\nexport const METRIC_DOTNET_PROCESS_CPU_TIME = 'dotnet.process.cpu.time' as const;\n\n/**\n * The number of bytes of physical memory mapped to the process context.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`Environment.WorkingSet`](https://learn.microsoft.com/dotnet/api/system.environment.workingset).\n */\nexport const METRIC_DOTNET_PROCESS_MEMORY_WORKING_SET = 'dotnet.process.memory.working_set' as const;\n\n/**\n * The number of work items that are currently queued to be processed by the thread pool.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`ThreadPool.PendingWorkItemCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.pendingworkitemcount).\n */\nexport const METRIC_DOTNET_THREAD_POOL_QUEUE_LENGTH = 'dotnet.thread_pool.queue.length' as const;\n\n/**\n * The number of thread pool threads that currently exist.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`ThreadPool.ThreadCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.threadcount).\n */\nexport const METRIC_DOTNET_THREAD_POOL_THREAD_COUNT = 'dotnet.thread_pool.thread.count' as const;\n\n/**\n * The number of work items that the thread pool has completed since the process has started.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`ThreadPool.CompletedWorkItemCount`](https://learn.microsoft.com/dotnet/api/system.threading.threadpool.completedworkitemcount).\n */\nexport const METRIC_DOTNET_THREAD_POOL_WORK_ITEM_COUNT = 'dotnet.thread_pool.work_item.count' as const;\n\n/**\n * The number of timer instances that are currently active.\n *\n * @note Meter name: `System.Runtime`; Added in: .NET 9.0.\n * This metric reports the same values as calling [`Timer.ActiveCount`](https://learn.microsoft.com/dotnet/api/system.threading.timer.activecount).\n */\nexport const METRIC_DOTNET_TIMER_COUNT = 'dotnet.timer.count' as const;\n\n/**\n * Duration of HTTP client requests.\n */\nexport const METRIC_HTTP_CLIENT_REQUEST_DURATION = 'http.client.request.duration' as const;\n\n/**\n * Duration of HTTP server requests.\n */\nexport const METRIC_HTTP_SERVER_REQUEST_DURATION = 'http.server.request.duration' as const;\n\n/**\n * Number of classes currently loaded.\n */\nexport const METRIC_JVM_CLASS_COUNT = 'jvm.class.count' as const;\n\n/**\n * Number of classes loaded since JVM start.\n */\nexport const METRIC_JVM_CLASS_LOADED = 'jvm.class.loaded' as const;\n\n/**\n * Number of classes unloaded since JVM start.\n */\nexport const METRIC_JVM_CLASS_UNLOADED = 'jvm.class.unloaded' as const;\n\n/**\n * Number of processors available to the Java virtual machine.\n */\nexport const METRIC_JVM_CPU_COUNT = 'jvm.cpu.count' as const;\n\n/**\n * Recent CPU utilization for the process as reported by the JVM.\n *\n * @note The value range is [0.0,1.0]. This utilization is not defined as being for the specific interval since last measurement (unlike `system.cpu.utilization`). [Reference](https://docs.oracle.com/en/java/javase/17/docs/api/jdk.management/com/sun/management/OperatingSystemMXBean.html#getProcessCpuLoad()).\n */\nexport const METRIC_JVM_CPU_RECENT_UTILIZATION = 'jvm.cpu.recent_utilization' as const;\n\n/**\n * CPU time used by the process as reported by the JVM.\n */\nexport const METRIC_JVM_CPU_TIME = 'jvm.cpu.time' as const;\n\n/**\n * Duration of JVM garbage collection actions.\n */\nexport const METRIC_JVM_GC_DURATION = 'jvm.gc.duration' as const;\n\n/**\n * Measure of memory committed.\n */\nexport const METRIC_JVM_MEMORY_COMMITTED = 'jvm.memory.committed' as const;\n\n/**\n * Measure of max obtainable memory.\n */\nexport const METRIC_JVM_MEMORY_LIMIT = 'jvm.memory.limit' as const;\n\n/**\n * Measure of memory used.\n */\nexport const METRIC_JVM_MEMORY_USED = 'jvm.memory.used' as const;\n\n/**\n * Measure of memory used, as measured after the most recent garbage collection event on this pool.\n */\nexport const METRIC_JVM_MEMORY_USED_AFTER_LAST_GC = 'jvm.memory.used_after_last_gc' as const;\n\n/**\n * Number of executing platform threads.\n */\nexport const METRIC_JVM_THREAD_COUNT = 'jvm.thread.count' as const;\n\n/**\n * Number of connections that are currently active on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_KESTREL_ACTIVE_CONNECTIONS = 'kestrel.active_connections' as const;\n\n/**\n * Number of TLS handshakes that are currently in progress on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_KESTREL_ACTIVE_TLS_HANDSHAKES = 'kestrel.active_tls_handshakes' as const;\n\n/**\n * The duration of connections on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_KESTREL_CONNECTION_DURATION = 'kestrel.connection.duration' as const;\n\n/**\n * Number of connections that are currently queued and are waiting to start.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_KESTREL_QUEUED_CONNECTIONS = 'kestrel.queued_connections' as const;\n\n/**\n * Number of HTTP requests on multiplexed connections (HTTP/2 and HTTP/3) that are currently queued and are waiting to start.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_KESTREL_QUEUED_REQUESTS = 'kestrel.queued_requests' as const;\n\n/**\n * Number of connections rejected by the server.\n *\n * @note Connections are rejected when the currently active count exceeds the value configured with `MaxConcurrentConnections`.\n * Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_KESTREL_REJECTED_CONNECTIONS = 'kestrel.rejected_connections' as const;\n\n/**\n * The duration of TLS handshakes on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_KESTREL_TLS_HANDSHAKE_DURATION = 'kestrel.tls_handshake.duration' as const;\n\n/**\n * Number of connections that are currently upgraded (WebSockets). .\n *\n * @note The counter only tracks HTTP/1.1 connections.\n *\n * Meter name: `Microsoft.AspNetCore.Server.Kestrel`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_KESTREL_UPGRADED_CONNECTIONS = 'kestrel.upgraded_connections' as const;\n\n/**\n * Number of connections that are currently active on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Http.Connections`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_SIGNALR_SERVER_ACTIVE_CONNECTIONS = 'signalr.server.active_connections' as const;\n\n/**\n * The duration of connections on the server.\n *\n * @note Meter name: `Microsoft.AspNetCore.Http.Connections`; Added in: ASP.NET Core 8.0\n */\nexport const METRIC_SIGNALR_SERVER_CONNECTION_DURATION = 'signalr.server.connection.duration' as const;\n\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n//-----------------------------------------------------------------------------------------------------------\n// DO NOT EDIT, this is an Auto-generated file from scripts/semconv/templates/registry/ts-stable/events.ts.j2\n//-----------------------------------------------------------------------------------------------------------\n\n/**\n * This event describes a single exception.\n */\nexport const EVENT_EXCEPTION = 'exception' as const;\n\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable no-restricted-syntax --\n * These re-exports are only of constants, only two-levels deep, and\n * should not cause problems for tree-shakers.\n */\n\n// Deprecated. These are kept around for compatibility purposes\nexport * from './trace';\nexport * from './resource';\n\n// Use these instead\nexport * from './stable_attributes';\nexport * from './stable_metrics';\nexport * from './stable_events';\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/*\n * This file contains a copy of unstable semantic convention definitions\n * used by this package.\n * @see https://github.com/open-telemetry/opentelemetry-js/tree/main/semantic-conventions#unstable-semconv\n */\n\n/**\n * The name of the runtime of this process.\n *\n * @example OpenJDK Runtime Environment\n *\n * @experimental This attribute is experimental and is subject to breaking changes in minor releases of `@opentelemetry/semantic-conventions`.\n */\nexport const ATTR_PROCESS_RUNTIME_NAME = 'process.runtime.name' as const;\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { VERSION } from '../../version';\nimport {\n  ATTR_TELEMETRY_SDK_NAME,\n  ATTR_TELEMETRY_SDK_LANGUAGE,\n  TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS,\n  ATTR_TELEMETRY_SDK_VERSION,\n} from '@opentelemetry/semantic-conventions';\nimport { ATTR_PROCESS_RUNTIME_NAME } from '../../semconv';\n\n/** Constants describing the SDK in use */\nexport const SDK_INFO = {\n  [ATTR_TELEMETRY_SDK_NAME]: 'opentelemetry',\n  [ATTR_PROCESS_RUNTIME_NAME]: 'node',\n  [ATTR_TELEMETRY_SDK_LANGUAGE]: TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS,\n  [ATTR_TELEMETRY_SDK_VERSION]: VERSION,\n};\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport {\n  getStringFromEnv,\n  getBooleanFromEnv,\n  getNumberFromEnv,\n  getStringListFromEnv,\n} from './environment';\nexport { _globalThis } from './globalThis';\nexport { otperformance } from './performance';\nexport { SDK_INFO } from './sdk-info';\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport {\n  SDK_INFO,\n  _globalThis,\n  otperformance,\n  getBooleanFromEnv,\n  getStringFromEnv,\n  getNumberFromEnv,\n  getStringListFromEnv,\n} from './node';\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as api from '@opentelemetry/api';\nimport { otperformance as performance } from '../platform';\nimport { TimeOriginLegacy } from './types';\n\nconst NANOSECOND_DIGITS = 9;\nconst NANOSECOND_DIGITS_IN_MILLIS = 6;\nconst MILLISECONDS_TO_NANOSECONDS = Math.pow(10, NANOSECOND_DIGITS_IN_MILLIS);\nconst SECOND_TO_NANOSECONDS = Math.pow(10, NANOSECOND_DIGITS);\n\n/**\n * Converts a number of milliseconds from epoch to HrTime([seconds, remainder in nanoseconds]).\n * @param epochMillis\n */\nexport function millisToHrTime(epochMillis: number): api.HrTime {\n  const epochSeconds = epochMillis / 1000;\n  // Decimals only.\n  const seconds = Math.trunc(epochSeconds);\n  // Round sub-nanosecond accuracy to nanosecond.\n  const nanos = Math.round((epochMillis % 1000) * MILLISECONDS_TO_NANOSECONDS);\n  return [seconds, nanos];\n}\n\nexport function getTimeOrigin(): number {\n  let timeOrigin = performance.timeOrigin;\n  if (typeof timeOrigin !== 'number') {\n    const perf: TimeOriginLegacy = performance as unknown as TimeOriginLegacy;\n    timeOrigin = perf.timing && perf.timing.fetchStart;\n  }\n  return timeOrigin;\n}\n\n/**\n * Returns an hrtime calculated via performance component.\n * @param performanceNow\n */\nexport function hrTime(performanceNow?: number): api.HrTime {\n  const timeOrigin = millisToHrTime(getTimeOrigin());\n  const now = millisToHrTime(\n    typeof performanceNow === 'number' ? performanceNow : performance.now()\n  );\n\n  return addHrTimes(timeOrigin, now);\n}\n\n/**\n *\n * Converts a TimeInput to an HrTime, defaults to _hrtime().\n * @param time\n */\nexport function timeInputToHrTime(time: api.TimeInput): api.HrTime {\n  // process.hrtime\n  if (isTimeInputHrTime(time)) {\n    return time as api.HrTime;\n  } else if (typeof time === 'number') {\n    // Must be a performance.now() if it's smaller than process start time.\n    if (time < getTimeOrigin()) {\n      return hrTime(time);\n    } else {\n      // epoch milliseconds or performance.timeOrigin\n      return millisToHrTime(time);\n    }\n  } else if (time instanceof Date) {\n    return millisToHrTime(time.getTime());\n  } else {\n    throw TypeError('Invalid input type');\n  }\n}\n\n/**\n * Returns a duration of two hrTime.\n * @param startTime\n * @param endTime\n */\nexport function hrTimeDuration(\n  startTime: api.HrTime,\n  endTime: api.HrTime\n): api.HrTime {\n  let seconds = endTime[0] - startTime[0];\n  let nanos = endTime[1] - startTime[1];\n\n  // overflow\n  if (nanos < 0) {\n    seconds -= 1;\n    // negate\n    nanos += SECOND_TO_NANOSECONDS;\n  }\n\n  return [seconds, nanos];\n}\n\n/**\n * Convert hrTime to timestamp, for example \"2019-05-14T17:00:00.000123456Z\"\n * @param time\n */\nexport function hrTimeToTimeStamp(time: api.HrTime): string {\n  const precision = NANOSECOND_DIGITS;\n  const tmp = `${'0'.repeat(precision)}${time[1]}Z`;\n  const nanoString = tmp.substring(tmp.length - precision - 1);\n  const date = new Date(time[0] * 1000).toISOString();\n  return date.replace('000Z', nanoString);\n}\n\n/**\n * Convert hrTime to nanoseconds.\n * @param time\n */\nexport function hrTimeToNanoseconds(time: api.HrTime): number {\n  return time[0] * SECOND_TO_NANOSECONDS + time[1];\n}\n\n/**\n * Convert hrTime to milliseconds.\n * @param time\n */\nexport function hrTimeToMilliseconds(time: api.HrTime): number {\n  return time[0] * 1e3 + time[1] / 1e6;\n}\n\n/**\n * Convert hrTime to microseconds.\n * @param time\n */\nexport function hrTimeToMicroseconds(time: api.HrTime): number {\n  return time[0] * 1e6 + time[1] / 1e3;\n}\n\n/**\n * check if time is HrTime\n * @param value\n */\nexport function isTimeInputHrTime(value: unknown): value is api.HrTime {\n  return (\n    Array.isArray(value) &&\n    value.length === 2 &&\n    typeof value[0] === 'number' &&\n    typeof value[1] === 'number'\n  );\n}\n\n/**\n * check if input value is a correct types.TimeInput\n * @param value\n */\nexport function isTimeInput(\n  value: unknown\n): value is api.HrTime | number | Date {\n  return (\n    isTimeInputHrTime(value) ||\n    typeof value === 'number' ||\n    value instanceof Date\n  );\n}\n\n/**\n * Given 2 HrTime formatted times, return their sum as an HrTime.\n */\nexport function addHrTimes(time1: api.HrTime, time2: api.HrTime): api.HrTime {\n  const out = [time1[0] + time2[0], time1[1] + time2[1]] as api.HrTime;\n\n  // Nanoseconds\n  if (out[1] >= SECOND_TO_NANOSECONDS) {\n    out[1] -= SECOND_TO_NANOSECONDS;\n    out[0] += 1;\n  }\n\n  return out;\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @deprecated please copy this code to your implementation instead, this function will be removed in the next major version of this package.\n * @param timer\n */\nexport function unrefTimer(timer: { unref(): unknown } | number): void {\n  if (typeof timer !== 'number') {\n    timer.unref();\n  }\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport interface ExportResult {\n  code: ExportResultCode;\n  error?: Error;\n}\n\nexport enum ExportResultCode {\n  SUCCESS,\n  FAILED,\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  Context,\n  TextMapGetter,\n  TextMapPropagator,\n  diag,\n  TextMapSetter,\n} from '@opentelemetry/api';\n\n/** Configuration object for composite propagator */\nexport interface CompositePropagatorConfig {\n  /**\n   * List of propagators to run. Propagators run in the\n   * list order. If a propagator later in the list writes the same context\n   * key as a propagator earlier in the list, the later on will \"win\".\n   */\n  propagators?: TextMapPropagator[];\n}\n\n/** Combines multiple propagators into a single propagator. */\nexport class CompositePropagator implements TextMapPropagator {\n  private readonly _propagators: TextMapPropagator[];\n  private readonly _fields: string[];\n\n  /**\n   * Construct a composite propagator from a list of propagators.\n   *\n   * @param [config] Configuration object for composite propagator\n   */\n  constructor(config: CompositePropagatorConfig = {}) {\n    this._propagators = config.propagators ?? [];\n\n    this._fields = Array.from(\n      new Set(\n        this._propagators\n          // older propagators may not have fields function, null check to be sure\n          .map(p => (typeof p.fields === 'function' ? p.fields() : []))\n          .reduce((x, y) => x.concat(y), [])\n      )\n    );\n  }\n\n  /**\n   * Run each of the configured propagators with the given context and carrier.\n   * Propagators are run in the order they are configured, so if multiple\n   * propagators write the same carrier key, the propagator later in the list\n   * will \"win\".\n   *\n   * @param context Context to inject\n   * @param carrier Carrier into which context will be injected\n   */\n  inject(context: Context, carrier: unknown, setter: TextMapSetter): void {\n    for (const propagator of this._propagators) {\n      try {\n        propagator.inject(context, carrier, setter);\n      } catch (err) {\n        diag.warn(\n          `Failed to inject with ${propagator.constructor.name}. Err: ${err.message}`\n        );\n      }\n    }\n  }\n\n  /**\n   * Run each of the configured propagators with the given context and carrier.\n   * Propagators are run in the order they are configured, so if multiple\n   * propagators write the same context key, the propagator later in the list\n   * will \"win\".\n   *\n   * @param context Context to add values to\n   * @param carrier Carrier from which to extract context\n   */\n  extract(context: Context, carrier: unknown, getter: TextMapGetter): Context {\n    return this._propagators.reduce((ctx, propagator) => {\n      try {\n        return propagator.extract(ctx, carrier, getter);\n      } catch (err) {\n        diag.warn(\n          `Failed to extract with ${propagator.constructor.name}. Err: ${err.message}`\n        );\n      }\n      return ctx;\n    }, context);\n  }\n\n  fields(): string[] {\n    // return a new array so our fields cannot be modified\n    return this._fields.slice();\n  }\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nconst VALID_KEY_CHAR_RANGE = '[_0-9a-z-*/]';\nconst VALID_KEY = `[a-z]${VALID_KEY_CHAR_RANGE}{0,255}`;\nconst VALID_VENDOR_KEY = `[a-z0-9]${VALID_KEY_CHAR_RANGE}{0,240}@[a-z]${VALID_KEY_CHAR_RANGE}{0,13}`;\nconst VALID_KEY_REGEX = new RegExp(`^(?:${VALID_KEY}|${VALID_VENDOR_KEY})$`);\nconst VALID_VALUE_BASE_REGEX = /^[ -~]{0,255}[!-~]$/;\nconst INVALID_VALUE_COMMA_EQUAL_REGEX = /,|=/;\n\n/**\n * Key is opaque string up to 256 characters printable. It MUST begin with a\n * lowercase letter, and can only contain lowercase letters a-z, digits 0-9,\n * underscores _, dashes -, asterisks *, and forward slashes /.\n * For multi-tenant vendor scenarios, an at sign (@) can be used to prefix the\n * vendor name. Vendors SHOULD set the tenant ID at the beginning of the key.\n * see https://www.w3.org/TR/trace-context/#key\n */\nexport function validateKey(key: string): boolean {\n  return VALID_KEY_REGEX.test(key);\n}\n\n/**\n * Value is opaque string up to 256 characters printable ASCII RFC0020\n * characters (i.e., the range 0x20 to 0x7E) except comma , and =.\n */\nexport function validateValue(value: string): boolean {\n  return (\n    VALID_VALUE_BASE_REGEX.test(value) &&\n    !INVALID_VALUE_COMMA_EQUAL_REGEX.test(value)\n  );\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as api from '@opentelemetry/api';\nimport { validateKey, validateValue } from '../internal/validators';\n\nconst MAX_TRACE_STATE_ITEMS = 32;\nconst MAX_TRACE_STATE_LEN = 512;\nconst LIST_MEMBERS_SEPARATOR = ',';\nconst LIST_MEMBER_KEY_VALUE_SPLITTER = '=';\n\n/**\n * TraceState must be a class and not a simple object type because of the spec\n * requirement (https://www.w3.org/TR/trace-context/#tracestate-field).\n *\n * Here is the list of allowed mutations:\n * - New key-value pair should be added into the beginning of the list\n * - The value of any key can be updated. Modified keys MUST be moved to the\n * beginning of the list.\n */\nexport class TraceState implements api.TraceState {\n  private _internalState: Map<string, string> = new Map();\n\n  constructor(rawTraceState?: string) {\n    if (rawTraceState) this._parse(rawTraceState);\n  }\n\n  set(key: string, value: string): TraceState {\n    // TODO: Benchmark the different approaches(map vs list) and\n    // use the faster one.\n    const traceState = this._clone();\n    if (traceState._internalState.has(key)) {\n      traceState._internalState.delete(key);\n    }\n    traceState._internalState.set(key, value);\n    return traceState;\n  }\n\n  unset(key: string): TraceState {\n    const traceState = this._clone();\n    traceState._internalState.delete(key);\n    return traceState;\n  }\n\n  get(key: string): string | undefined {\n    return this._internalState.get(key);\n  }\n\n  serialize(): string {\n    return this._keys()\n      .reduce((agg: string[], key) => {\n        agg.push(key + LIST_MEMBER_KEY_VALUE_SPLITTER + this.get(key));\n        return agg;\n      }, [])\n      .join(LIST_MEMBERS_SEPARATOR);\n  }\n\n  private _parse(rawTraceState: string) {\n    if (rawTraceState.length > MAX_TRACE_STATE_LEN) return;\n    this._internalState = rawTraceState\n      .split(LIST_MEMBERS_SEPARATOR)\n      .reverse() // Store in reverse so new keys (.set(...)) will be placed at the beginning\n      .reduce((agg: Map<string, string>, part: string) => {\n        const listMember = part.trim(); // Optional Whitespace (OWS) handling\n        const i = listMember.indexOf(LIST_MEMBER_KEY_VALUE_SPLITTER);\n        if (i !== -1) {\n          const key = listMember.slice(0, i);\n          const value = listMember.slice(i + 1, part.length);\n          if (validateKey(key) && validateValue(value)) {\n            agg.set(key, value);\n          } else {\n            // TODO: Consider to add warning log\n          }\n        }\n        return agg;\n      }, new Map());\n\n    // Because of the reverse() requirement, trunc must be done after map is created\n    if (this._internalState.size > MAX_TRACE_STATE_ITEMS) {\n      this._internalState = new Map(\n        Array.from(this._internalState.entries())\n          .reverse() // Use reverse same as original tracestate parse chain\n          .slice(0, MAX_TRACE_STATE_ITEMS)\n      );\n    }\n  }\n\n  private _keys(): string[] {\n    return Array.from(this._internalState.keys()).reverse();\n  }\n\n  private _clone(): TraceState {\n    const traceState = new TraceState();\n    traceState._internalState = new Map(this._internalState);\n    return traceState;\n  }\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  Context,\n  isSpanContextValid,\n  SpanContext,\n  TextMapGetter,\n  TextMapPropagator,\n  TextMapSetter,\n  trace,\n  TraceFlags,\n} from '@opentelemetry/api';\nimport { isTracingSuppressed } from './suppress-tracing';\nimport { TraceState } from './TraceState';\n\nexport const TRACE_PARENT_HEADER = 'traceparent';\nexport const TRACE_STATE_HEADER = 'tracestate';\n\nconst VERSION = '00';\nconst VERSION_PART = '(?!ff)[\\\\da-f]{2}';\nconst TRACE_ID_PART = '(?![0]{32})[\\\\da-f]{32}';\nconst PARENT_ID_PART = '(?![0]{16})[\\\\da-f]{16}';\nconst FLAGS_PART = '[\\\\da-f]{2}';\nconst TRACE_PARENT_REGEX = new RegExp(\n  `^\\\\s?(${VERSION_PART})-(${TRACE_ID_PART})-(${PARENT_ID_PART})-(${FLAGS_PART})(-.*)?\\\\s?$`\n);\n\n/**\n * Parses information from the [traceparent] span tag and converts it into {@link SpanContext}\n * @param traceParent - A meta property that comes from server.\n *     It should be dynamically generated server side to have the server's request trace Id,\n *     a parent span Id that was set on the server's request span,\n *     and the trace flags to indicate the server's sampling decision\n *     (01 = sampled, 00 = not sampled).\n *     for example: '{version}-{traceId}-{spanId}-{sampleDecision}'\n *     For more information see {@link https://www.w3.org/TR/trace-context/}\n */\nexport function parseTraceParent(traceParent: string): SpanContext | null {\n  const match = TRACE_PARENT_REGEX.exec(traceParent);\n  if (!match) return null;\n\n  // According to the specification the implementation should be compatible\n  // with future versions. If there are more parts, we only reject it if it's using version 00\n  // See https://www.w3.org/TR/trace-context/#versioning-of-traceparent\n  if (match[1] === '00' && match[5]) return null;\n\n  return {\n    traceId: match[2],\n    spanId: match[3],\n    traceFlags: parseInt(match[4], 16),\n  };\n}\n\n/**\n * Propagates {@link SpanContext} through Trace Context format propagation.\n *\n * Based on the Trace Context specification:\n * https://www.w3.org/TR/trace-context/\n */\nexport class W3CTraceContextPropagator implements TextMapPropagator {\n  inject(context: Context, carrier: unknown, setter: TextMapSetter): void {\n    const spanContext = trace.getSpanContext(context);\n    if (\n      !spanContext ||\n      isTracingSuppressed(context) ||\n      !isSpanContextValid(spanContext)\n    )\n      return;\n\n    const traceParent = `${VERSION}-${spanContext.traceId}-${\n      spanContext.spanId\n    }-0${Number(spanContext.traceFlags || TraceFlags.NONE).toString(16)}`;\n\n    setter.set(carrier, TRACE_PARENT_HEADER, traceParent);\n    if (spanContext.traceState) {\n      setter.set(\n        carrier,\n        TRACE_STATE_HEADER,\n        spanContext.traceState.serialize()\n      );\n    }\n  }\n\n  extract(context: Context, carrier: unknown, getter: TextMapGetter): Context {\n    const traceParentHeader = getter.get(carrier, TRACE_PARENT_HEADER);\n    if (!traceParentHeader) return context;\n    const traceParent = Array.isArray(traceParentHeader)\n      ? traceParentHeader[0]\n      : traceParentHeader;\n    if (typeof traceParent !== 'string') return context;\n    const spanContext = parseTraceParent(traceParent);\n    if (!spanContext) return context;\n\n    spanContext.isRemote = true;\n\n    const traceStateHeader = getter.get(carrier, TRACE_STATE_HEADER);\n    if (traceStateHeader) {\n      // If more than one `tracestate` header is found, we merge them into a\n      // single header.\n      const state = Array.isArray(traceStateHeader)\n        ? traceStateHeader.join(',')\n        : traceStateHeader;\n      spanContext.traceState = new TraceState(\n        typeof state === 'string' ? state : undefined\n      );\n    }\n    return trace.setSpanContext(context, spanContext);\n  }\n\n  fields(): string[] {\n    return [TRACE_PARENT_HEADER, TRACE_STATE_HEADER];\n  }\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Context, createContextKey, Span } from '@opentelemetry/api';\n\nconst RPC_METADATA_KEY = createContextKey(\n  'OpenTelemetry SDK Context Key RPC_METADATA'\n);\n\nexport enum RPCType {\n  HTTP = 'http',\n}\n\ntype HTTPMetadata = {\n  type: RPCType.HTTP;\n  route?: string;\n  span: Span;\n};\n\n/**\n * Allows for future rpc metadata to be used with this mechanism\n */\nexport type RPCMetadata = HTTPMetadata;\n\nexport function setRPCMetadata(context: Context, meta: RPCMetadata): Context {\n  return context.setValue(RPC_METADATA_KEY, meta);\n}\n\nexport function deleteRPCMetadata(context: Context): Context {\n  return context.deleteValue(RPC_METADATA_KEY);\n}\n\nexport function getRPCMetadata(context: Context): RPCMetadata | undefined {\n  return context.getValue(RPC_METADATA_KEY) as RPCMetadata | undefined;\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * based on lodash in order to support esm builds without esModuleInterop.\n * lodash is using MIT License.\n **/\n\nconst objectTag = '[object Object]';\nconst nullTag = '[object Null]';\nconst undefinedTag = '[object Undefined]';\nconst funcProto = Function.prototype;\nconst funcToString = funcProto.toString;\nconst objectCtorString = funcToString.call(Object);\nconst getPrototypeOf = Object.getPrototypeOf;\nconst objectProto = Object.prototype;\nconst hasOwnProperty = objectProto.hasOwnProperty;\nconst symToStringTag = Symbol ? Symbol.toStringTag : undefined;\nconst nativeObjectToString = objectProto.toString;\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nexport function isPlainObject(value: any) {\n  if (!isObjectLike(value) || baseGetTag(value) !== objectTag) {\n    return false;\n  }\n  const proto = getPrototypeOf(value);\n  if (proto === null) {\n    return true;\n  }\n  const Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n  return (\n    typeof Ctor == 'function' &&\n    Ctor instanceof Ctor &&\n    funcToString.call(Ctor) === objectCtorString\n  );\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value: any) {\n  return value != null && typeof value == 'object';\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value: any) {\n  if (value == null) {\n    return value === undefined ? undefinedTag : nullTag;\n  }\n  return symToStringTag && symToStringTag in Object(value)\n    ? getRawTag(value)\n    : objectToString(value);\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value: any) {\n  const isOwn = hasOwnProperty.call(value, symToStringTag as any),\n    tag = value[symToStringTag as any];\n  let unmasked = false;\n\n  try {\n    value[symToStringTag as any] = undefined;\n    unmasked = true;\n  } catch {\n    // silence\n  }\n\n  const result = nativeObjectToString.call(value);\n  if (unmasked) {\n    if (isOwn) {\n      value[symToStringTag as any] = tag;\n    } else {\n      delete value[symToStringTag as any];\n    }\n  }\n  return result;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value: any) {\n  return nativeObjectToString.call(value);\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { isPlainObject } from './lodash.merge';\n\nconst MAX_LEVEL = 20;\n\ninterface ObjectInto {\n  obj: any;\n  key: string;\n}\n\n/**\n * Merges objects together\n * @param args - objects / values to be merged\n */\nexport function merge(...args: any[]): any {\n  let result: any = args.shift();\n  const objects: WeakMap<any, ObjectInto[]> | undefined = new WeakMap<\n    any,\n    ObjectInto[]\n  >();\n  while (args.length > 0) {\n    result = mergeTwoObjects(result, args.shift(), 0, objects);\n  }\n\n  return result;\n}\n\nfunction takeValue(value: any): any {\n  if (isArray(value)) {\n    return value.slice();\n  }\n  return value;\n}\n\n/**\n * Merges two objects\n * @param one - first object\n * @param two - second object\n * @param level - current deep level\n * @param objects - objects holder that has been already referenced - to prevent\n * cyclic dependency\n */\nfunction mergeTwoObjects(\n  one: any,\n  two: any,\n  level = 0,\n  objects: WeakMap<any, ObjectInto[]>\n): any {\n  let result: any;\n  if (level > MAX_LEVEL) {\n    return undefined;\n  }\n  level++;\n  if (isPrimitive(one) || isPrimitive(two) || isFunction(two)) {\n    result = takeValue(two);\n  } else if (isArray(one)) {\n    result = one.slice();\n    if (isArray(two)) {\n      for (let i = 0, j = two.length; i < j; i++) {\n        result.push(takeValue(two[i]));\n      }\n    } else if (isObject(two)) {\n      const keys = Object.keys(two);\n      for (let i = 0, j = keys.length; i < j; i++) {\n        const key = keys[i];\n        result[key] = takeValue(two[key]);\n      }\n    }\n  } else if (isObject(one)) {\n    if (isObject(two)) {\n      if (!shouldMerge(one, two)) {\n        return two;\n      }\n      result = Object.assign({}, one);\n      const keys = Object.keys(two);\n\n      for (let i = 0, j = keys.length; i < j; i++) {\n        const key = keys[i];\n        const twoValue = two[key];\n\n        if (isPrimitive(twoValue)) {\n          if (typeof twoValue === 'undefined') {\n            delete result[key];\n          } else {\n            // result[key] = takeValue(twoValue);\n            result[key] = twoValue;\n          }\n        } else {\n          const obj1 = result[key];\n          const obj2 = twoValue;\n\n          if (\n            wasObjectReferenced(one, key, objects) ||\n            wasObjectReferenced(two, key, objects)\n          ) {\n            delete result[key];\n          } else {\n            if (isObject(obj1) && isObject(obj2)) {\n              const arr1 = objects.get(obj1) || [];\n              const arr2 = objects.get(obj2) || [];\n              arr1.push({ obj: one, key });\n              arr2.push({ obj: two, key });\n              objects.set(obj1, arr1);\n              objects.set(obj2, arr2);\n            }\n\n            result[key] = mergeTwoObjects(\n              result[key],\n              twoValue,\n              level,\n              objects\n            );\n          }\n        }\n      }\n    } else {\n      result = two;\n    }\n  }\n\n  return result;\n}\n\n/**\n * Function to check if object has been already reference\n * @param obj\n * @param key\n * @param objects\n */\nfunction wasObjectReferenced(\n  obj: any,\n  key: string,\n  objects: WeakMap<any, ObjectInto[]>\n): boolean {\n  const arr = objects.get(obj[key]) || [];\n  for (let i = 0, j = arr.length; i < j; i++) {\n    const info = arr[i];\n    if (info.key === key && info.obj === obj) {\n      return true;\n    }\n  }\n  return false;\n}\n\nfunction isArray(value: any): boolean {\n  return Array.isArray(value);\n}\n\nfunction isFunction(value: any): boolean {\n  return typeof value === 'function';\n}\n\nfunction isObject(value: any): boolean {\n  return (\n    !isPrimitive(value) &&\n    !isArray(value) &&\n    !isFunction(value) &&\n    typeof value === 'object'\n  );\n}\n\nfunction isPrimitive(value: any): boolean {\n  return (\n    typeof value === 'string' ||\n    typeof value === 'number' ||\n    typeof value === 'boolean' ||\n    typeof value === 'undefined' ||\n    value instanceof Date ||\n    value instanceof RegExp ||\n    value === null\n  );\n}\n\nfunction shouldMerge(one: any, two: any): boolean {\n  if (!isPlainObject(one) || !isPlainObject(two)) {\n    return false;\n  }\n\n  return true;\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Error that is thrown on timeouts.\n */\nexport class TimeoutError extends Error {\n  constructor(message?: string) {\n    super(message);\n\n    // manually adjust prototype to retain `instanceof` functionality when targeting ES5, see:\n    // https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\n    Object.setPrototypeOf(this, TimeoutError.prototype);\n  }\n}\n\n/**\n * Adds a timeout to a promise and rejects if the specified timeout has elapsed. Also rejects if the specified promise\n * rejects, and resolves if the specified promise resolves.\n *\n * <p> NOTE: this operation will continue even after it throws a {@link TimeoutError}.\n *\n * @param promise promise to use with timeout.\n * @param timeout the timeout in milliseconds until the returned promise is rejected.\n */\nexport function callWithTimeout<T>(\n  promise: Promise<T>,\n  timeout: number\n): Promise<T> {\n  let timeoutHandle: ReturnType<typeof setTimeout>;\n\n  const timeoutPromise = new Promise<never>(function timeoutFunction(\n    _resolve,\n    reject\n  ) {\n    timeoutHandle = setTimeout(function timeoutHandler() {\n      reject(new TimeoutError('Operation timed out.'));\n    }, timeout);\n  });\n\n  return Promise.race([promise, timeoutPromise]).then(\n    result => {\n      clearTimeout(timeoutHandle);\n      return result;\n    },\n    reason => {\n      clearTimeout(timeoutHandle);\n      throw reason;\n    }\n  );\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nexport function urlMatches(url: string, urlToMatch: string | RegExp): boolean {\n  if (typeof urlToMatch === 'string') {\n    return url === urlToMatch;\n  } else {\n    return !!url.match(urlToMatch);\n  }\n}\n/**\n * Check if {@param url} should be ignored when comparing against {@param ignoredUrls}\n * @param url\n * @param ignoredUrls\n */\nexport function isUrlIgnored(\n  url: string,\n  ignoredUrls?: Array<string | RegExp>\n): boolean {\n  if (!ignoredUrls) {\n    return false;\n  }\n\n  for (const ignoreUrl of ignoredUrls) {\n    if (urlMatches(url, ignoreUrl)) {\n      return true;\n    }\n  }\n  return false;\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport class Deferred<T> {\n  private _promise: Promise<T>;\n  private _resolve!: (val: T) => void;\n  private _reject!: (error: unknown) => void;\n  constructor() {\n    this._promise = new Promise((resolve, reject) => {\n      this._resolve = resolve;\n      this._reject = reject;\n    });\n  }\n\n  get promise() {\n    return this._promise;\n  }\n\n  resolve(val: T) {\n    this._resolve(val);\n  }\n\n  reject(err: unknown) {\n    this._reject(err);\n  }\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Deferred } from './promise';\n\n/**\n * Bind the callback and only invoke the callback once regardless how many times `BindOnceFuture.call` is invoked.\n */\nexport class BindOnceFuture<\n  R,\n  This = unknown,\n  T extends (this: This, ...args: unknown[]) => R = () => R,\n> {\n  private _isCalled = false;\n  private _deferred = new Deferred<R>();\n  constructor(\n    private _callback: T,\n    private _that: This\n  ) {}\n\n  get isCalled() {\n    return this._isCalled;\n  }\n\n  get promise() {\n    return this._deferred.promise;\n  }\n\n  call(...args: Parameters<T>): Promise<R> {\n    if (!this._isCalled) {\n      this._isCalled = true;\n      try {\n        Promise.resolve(this._callback.call(this._that, ...args)).then(\n          val => this._deferred.resolve(val),\n          err => this._deferred.reject(err)\n        );\n      } catch (err) {\n        this._deferred.reject(err);\n      }\n    }\n    return this._deferred.promise;\n  }\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { diag, DiagLogLevel } from '@opentelemetry/api';\n\nconst logLevelMap: { [key: string]: DiagLogLevel } = {\n  ALL: DiagLogLevel.ALL,\n  VERBOSE: DiagLogLevel.VERBOSE,\n  DEBUG: DiagLogLevel.DEBUG,\n  INFO: DiagLogLevel.INFO,\n  WARN: DiagLogLevel.WARN,\n  ERROR: DiagLogLevel.ERROR,\n  NONE: DiagLogLevel.NONE,\n};\n\n/**\n * Convert a string to a {@link DiagLogLevel}, defaults to {@link DiagLogLevel} if the log level does not exist or undefined if the input is undefined.\n * @param value\n */\nexport function diagLogLevelFromString(\n  value: string | undefined\n): DiagLogLevel | undefined {\n  if (value == null) {\n    // don't fall back to default - no value set has different semantics for ús than an incorrect value (do not set vs. fall back to default)\n    return undefined;\n  }\n\n  const resolvedLogLevel = logLevelMap[value.toUpperCase()];\n\n  if (resolvedLogLevel == null) {\n    diag.warn(\n      `Unknown log level \"${value}\", expected one of ${Object.keys(logLevelMap)}, using default`\n    );\n    return DiagLogLevel.INFO;\n  }\n\n  return resolvedLogLevel;\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { context } from '@opentelemetry/api';\nimport { ExportResult } from '../ExportResult';\nimport { suppressTracing } from '../trace/suppress-tracing';\n\nexport interface Exporter<T> {\n  export(arg: T, resultCallback: (result: ExportResult) => void): void;\n}\n\n/**\n * @internal\n * Shared functionality used by Exporters while exporting data, including suppression of Traces.\n */\nexport function _export<T>(\n  exporter: Exporter<T>,\n  arg: T\n): Promise<ExportResult> {\n  return new Promise(resolve => {\n    // prevent downstream exporter calls from generating spans\n    context.with(suppressTracing(context.active()), () => {\n      exporter.export(arg, (result: ExportResult) => {\n        resolve(result);\n      });\n    });\n  });\n}\n", "/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nexport { W3CBaggagePropagator } from './baggage/propagation/W3CBaggagePropagator';\nexport { AnchoredClock } from './common/anchored-clock';\nexport type { Clock } from './common/anchored-clock';\nexport { isAttributeValue, sanitizeAttributes } from './common/attributes';\nexport {\n  globalErrorHandler,\n  setGlobalErrorHandler,\n} from './common/global-error-handler';\nexport { loggingErrorHandler } from './common/logging-error-handler';\nexport {\n  addHrTimes,\n  getTimeOrigin,\n  hrTime,\n  hrTimeDuration,\n  hrTimeToMicroseconds,\n  hrTimeToMilliseconds,\n  hrTimeToNanoseconds,\n  hrTimeToTimeStamp,\n  isTimeInput,\n  isTimeInputHrTime,\n  millisToHrTime,\n  timeInputToHrTime,\n} from './common/time';\nexport { unrefTimer } from './common/timer-util';\nexport type { ErrorHandler, InstrumentationScope } from './common/types';\nexport { ExportResultCode } from './ExportResult';\nexport type { ExportResult } from './ExportResult';\nexport { parseKeyPairsIntoRecord } from './baggage/utils';\nexport {\n  SDK_INFO,\n  _globalThis,\n  getStringFromEnv,\n  getBooleanFromEnv,\n  getNumberFromEnv,\n  getStringListFromEnv,\n  otperformance,\n} from './platform';\nexport { CompositePropagator } from './propagation/composite';\nexport type { CompositePropagatorConfig } from './propagation/composite';\nexport {\n  TRACE_PARENT_HEADER,\n  TRACE_STATE_HEADER,\n  W3CTraceContextPropagator,\n  parseTraceParent,\n} from './trace/W3CTraceContextPropagator';\nexport {\n  RPCType,\n  deleteRPCMetadata,\n  getRPCMetadata,\n  setRPCMetadata,\n} from './trace/rpc-metadata';\nexport type { RPCMetadata } from './trace/rpc-metadata';\nexport {\n  isTracingSuppressed,\n  suppressTracing,\n  unsuppressTracing,\n} from './trace/suppress-tracing';\nexport { TraceState } from './trace/TraceState';\nexport { merge } from './utils/merge';\nexport { TimeoutError, callWithTimeout } from './utils/timeout';\nexport { isUrlIgnored, urlMatches } from './utils/url';\nexport { BindOnceFuture } from './utils/callback';\nexport { diagLogLevelFromString } from './utils/configuration';\nimport { _export } from './internal/exporter';\nexport const internal = {\n  _export,\n};\n", "{\n  \"name\": \"@elastic/transport\",\n  \"version\": \"8.10.0\",\n  \"description\": \"Transport classes and utilities shared among Node.js Elastic client libraries\",\n  \"main\": \"./index.js\",\n  \"types\": \"index.d.ts\",\n  \"exports\": {\n    \".\": \"./index.js\",\n    \"./package.json\": \"./package.json\",\n    \"./connection/BaseConnection\": \"./lib/connection/BaseConnection.js\",\n    \"./lib/connection/BaseConnection\": \"./lib/connection/BaseConnection.js\",\n    \"./pool/BaseConnectionPool\": \"./lib/pool/BaseConnectionPool.js\",\n    \"./lib/pool/BaseConnectionPool\": \"./lib/pool/BaseConnectionPool.js\",\n    \"./pool/CloudConnectionPool\": \"./lib/pool/CloudConnectionPool.js\",\n    \"./lib/pool/CloudConnectionPool\": \"./lib/pool/CloudConnectionPool.js\",\n    \"./pool/ClusterConnectionPool\": \"./lib/pool/ClusterConnectionPool.js\",\n    \"./lib/pool/ClusterConnectionPool\": \"./lib/pool/ClusterConnectionPool.js\",\n    \"./Diagnostic\": \"./lib/Diagnostic.js\",\n    \"./lib/Diagnostic\": \"./lib/Diagnostic.js\",\n    \"./errors\": \"./lib/errors.js\",\n    \"./lib/errors\": \"./lib/errors.js\",\n    \"./connection/HttpConnection\": \"./lib/connection/HttpConnection.js\",\n    \"./lib/connection/HttpConnection\": \"./lib/connection/HttpConnection.js\",\n    \"./connection\": \"./lib/connection/index.js\",\n    \"./lib/connection\": \"./lib/connection/index.js\",\n    \"./pool\": \"./lib/pool/index.js\",\n    \"./lib/pool\": \"./lib/pool/index.js\",\n    \"./security\": \"./lib/security.js\",\n    \"./lib/security\": \"./lib/security.js\",\n    \"./Serializer\": \"./lib/Serializer.js\",\n    \"./lib/Serializer\": \"./lib/Serializer.js\",\n    \"./symbols\": \"./lib/symbols.js\",\n    \"./lib/symbols\": \"./lib/symbols.js\",\n    \"./Transport\": \"./lib/Transport.js\",\n    \"./lib/Transport\": \"./lib/Transport.js\",\n    \"./types\": \"./lib/types.js\",\n    \"./lib/types\": \"./lib/types.js\",\n    \"./connection/UndiciConnection\": \"./lib/connection/UndiciConnection.js\",\n    \"./lib/connection/UndiciConnection\": \"./lib/connection/UndiciConnection.js\",\n    \"./pool/WeightedConnectionPool\": \"./lib/pool/WeightedConnectionPool.js\",\n    \"./lib/pool/WeightedConnectionPool\": \"./lib/pool/WeightedConnectionPool.js\"\n  },\n  \"scripts\": {\n    \"test\": \"npm run build && npm run lint && tap test/{unit,acceptance}/{*,**/*}.test.ts\",\n    \"test:unit\": \"npm run build && tap test/unit/{*,**/*}.test.ts --disable-coverage\",\n    \"test:acceptance\": \"npm run build && tap test/acceptance/*.test.ts --disable-coverage\",\n    \"test:coverage-100\": \"npm run build && tap test/{unit,acceptance}/{*,**/*}.test.ts --show-full-coverage\",\n    \"test:coverage-report\": \"npm test && tap report --coverage-report=lcov\",\n    \"test:coverage-ui\": \"npm run build && tap test/{unit,acceptance}/{*,**/*}.test.ts --coverage-report=html\",\n    \"lint\": \"ts-standard src\",\n    \"lint:fix\": \"ts-standard --fix src\",\n    \"license-checker\": \"license-checker --production --onlyAllow='MIT;Apache-2.0;Apache1.1;ISC;BSD-3-Clause;BSD-2-Clause;0BSD'\",\n    \"license-header\": \"./scripts/check-spdx\",\n    \"prebuild\": \"npm run clean-build && npm run lint\",\n    \"build\": \"tsc\",\n    \"clean-build\": \"rimraf ./lib && mkdir lib\",\n    \"prepublishOnly\": \"npm run build\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/elastic/elastic-transport-js.git\"\n  },\n  \"keywords\": [],\n  \"author\": {\n    \"name\": \"Elastic Client Library Maintainers\",\n    \"company\": \"Elastic BV\"\n  },\n  \"license\": \"Apache-2.0\",\n  \"bugs\": {\n    \"url\": \"https://github.com/elastic/elastic-transport-js/issues\"\n  },\n  \"homepage\": \"https://github.com/elastic/elastic-transport-js#readme\",\n  \"engines\": {\n    \"node\": \">=18\"\n  },\n  \"devDependencies\": {\n    \"@opentelemetry/sdk-trace-base\": \"1.30.1\",\n    \"@sinonjs/fake-timers\": \"14.0.0\",\n    \"@tapjs/clock\": \"3.0.0\",\n    \"@types/debug\": \"4.1.12\",\n    \"@types/ms\": \"0.7.34\",\n    \"@types/node\": \"22.10.7\",\n    \"@types/sinonjs__fake-timers\": \"8.1.5\",\n    \"@types/stoppable\": \"1.1.3\",\n    \"into-stream\": \"6.0.0\",\n    \"license-checker\": \"25.0.1\",\n    \"node-abort-controller\": \"3.1.1\",\n    \"proxy\": \"2.2.0\",\n    \"rimraf\": \"6.0.1\",\n    \"stoppable\": \"1.1.0\",\n    \"tap\": \"21.0.1\",\n    \"ts-node\": \"10.9.2\",\n    \"ts-standard\": \"12.0.2\",\n    \"typescript\": \"5.7.3\",\n    \"workq\": \"3.0.0\"\n  },\n  \"dependencies\": {\n    \"@opentelemetry/api\": \"1.x\",\n    \"@opentelemetry/core\": \"2.x\",\n    \"debug\": \"^4.4.1\",\n    \"hpagent\": \"^1.2.0\",\n    \"ms\": \"^2.1.3\",\n    \"secure-json-parse\": \"^3.0.1\",\n    \"tslib\": \"^2.8.1\",\n    \"undici\": \"^6.21.1\"\n  },\n  \"tap\": {\n    \"allow-incomplete-coverage\": true,\n    \"plugin\": [\n      \"@tapjs/clock\",\n      \"@tapjs/before\"\n    ]\n  }\n}\n", null, "'use strict'\n\nconst https = require('https')\nconst http = require('http')\nconst { URL } = require('url')\n\nclass HttpProxyAgent extends http.Agent {\n  constructor (options) {\n    const { proxy, proxyRequestOptions, ...opts } = options\n    super(opts)\n    this.proxy = typeof proxy === 'string'\n      ? new URL(proxy)\n      : proxy\n    this.proxyRequestOptions = proxyRequestOptions || {}\n  }\n\n  createConnection (options, callback) {\n    const requestOptions = {\n      ...this.proxyRequestOptions,\n      method: 'CONNECT',\n      host: this.proxy.hostname,\n      port: this.proxy.port,\n      path: `${options.host}:${options.port}`,\n      setHost: false,\n      headers: { ...this.proxyRequestOptions.headers, connection: this.keepAlive ? 'keep-alive' : 'close', host: `${options.host}:${options.port}` },\n      agent: false,\n      timeout: options.timeout || 0\n    }\n\n    if (this.proxy.username || this.proxy.password) {\n      const base64 = Buffer.from(`${decodeURIComponent(this.proxy.username || '')}:${decodeURIComponent(this.proxy.password || '')}`).toString('base64')\n      requestOptions.headers['proxy-authorization'] = `Basic ${base64}`\n    }\n\n    if (this.proxy.protocol === 'https:') {\n      requestOptions.servername = this.proxy.hostname\n    }\n\n    const request = (this.proxy.protocol === 'http:' ? http : https).request(requestOptions)\n    request.once('connect', (response, socket, head) => {\n      request.removeAllListeners()\n      socket.removeAllListeners()\n      if (response.statusCode === 200) {\n        callback(null, socket)\n      } else {\n        socket.destroy()\n        callback(new Error(`Bad response: ${response.statusCode}`), null)\n      }\n    })\n\n    request.once('timeout', () => {\n      request.destroy(new Error('Proxy timeout'))\n    })\n\n    request.once('error', err => {\n      request.removeAllListeners()\n      callback(err, null)\n    })\n\n    request.end()\n  }\n}\n\nclass HttpsProxyAgent extends https.Agent {\n  constructor (options) {\n    const { proxy, proxyRequestOptions, ...opts } = options\n    super(opts)\n    this.proxy = typeof proxy === 'string'\n      ? new URL(proxy)\n      : proxy\n    this.proxyRequestOptions = proxyRequestOptions || {}\n  }\n\n  createConnection (options, callback) {\n    const requestOptions = {\n      ...this.proxyRequestOptions,\n      method: 'CONNECT',\n      host: this.proxy.hostname,\n      port: this.proxy.port,\n      path: `${options.host}:${options.port}`,\n      setHost: false,\n      headers: { ...this.proxyRequestOptions.headers, connection: this.keepAlive ? 'keep-alive' : 'close', host: `${options.host}:${options.port}` },\n      agent: false,\n      timeout: options.timeout || 0\n    }\n\n    if (this.proxy.username || this.proxy.password) {\n      const base64 = Buffer.from(`${decodeURIComponent(this.proxy.username || '')}:${decodeURIComponent(this.proxy.password || '')}`).toString('base64')\n      requestOptions.headers['proxy-authorization'] = `Basic ${base64}`\n    }\n\n    // Necessary for the TLS check with the proxy to succeed.\n    if (this.proxy.protocol === 'https:') {\n      requestOptions.servername = this.proxy.hostname\n    }\n\n    const request = (this.proxy.protocol === 'http:' ? http : https).request(requestOptions)\n    request.once('connect', (response, socket, head) => {\n      request.removeAllListeners()\n      socket.removeAllListeners()\n      if (response.statusCode === 200) {\n        const secureSocket = super.createConnection({ ...options, socket })\n        callback(null, secureSocket)\n      } else {\n        socket.destroy()\n        callback(new Error(`Bad response: ${response.statusCode}`), null)\n      }\n    })\n\n    request.once('timeout', () => {\n      request.destroy(new Error('Proxy timeout'))\n    })\n\n    request.once('error', err => {\n      request.removeAllListeners()\n      callback(err, null)\n    })\n\n    request.end()\n  }\n}\n\nmodule.exports = {\n  HttpProxyAgent,\n  HttpsProxyAgent\n}\n", null, "module.exports = {\n  kClose: Symbol('close'),\n  kDestroy: Symbol('destroy'),\n  kDispatch: Symbol('dispatch'),\n  kUrl: Symbol('url'),\n  kWriting: Symbol('writing'),\n  kResuming: Symbol('resuming'),\n  kQueue: Symbol('queue'),\n  kConnect: Symbol('connect'),\n  kConnecting: Symbol('connecting'),\n  kKeepAliveDefaultTimeout: Symbol('default keep alive timeout'),\n  kKeepAliveMaxTimeout: Symbol('max keep alive timeout'),\n  kKeepAliveTimeoutThreshold: Symbol('keep alive timeout threshold'),\n  kKeepAliveTimeoutValue: Symbol('keep alive timeout'),\n  kKeepAlive: Symbol('keep alive'),\n  kHeadersTimeout: Symbol('headers timeout'),\n  kBodyTimeout: Symbol('body timeout'),\n  kServerName: Symbol('server name'),\n  kLocalAddress: Symbol('local address'),\n  kHost: Symbol('host'),\n  kNoRef: Symbol('no ref'),\n  kBodyUsed: Symbol('used'),\n  kBody: Symbol('abstracted request body'),\n  kRunning: Symbol('running'),\n  kBlocking: Symbol('blocking'),\n  kPending: Symbol('pending'),\n  kSize: Symbol('size'),\n  kBusy: Symbol('busy'),\n  kQueued: Symbol('queued'),\n  kFree: Symbol('free'),\n  kConnected: Symbol('connected'),\n  kClosed: Symbol('closed'),\n  kNeedDrain: Symbol('need drain'),\n  kReset: Symbol('reset'),\n  kDestroyed: Symbol.for('nodejs.stream.destroyed'),\n  kResume: Symbol('resume'),\n  kOnError: Symbol('on error'),\n  kMaxHeadersSize: Symbol('max headers size'),\n  kRunningIdx: Symbol('running index'),\n  kPendingIdx: Symbol('pending index'),\n  kError: Symbol('error'),\n  kClients: Symbol('clients'),\n  kClient: Symbol('client'),\n  kParser: Symbol('parser'),\n  kOnDestroyed: Symbol('destroy callbacks'),\n  kPipelining: Symbol('pipelining'),\n  kSocket: Symbol('socket'),\n  kHostHeader: Symbol('host header'),\n  kConnector: Symbol('connector'),\n  kStrictContentLength: Symbol('strict content length'),\n  kMaxRedirections: Symbol('maxRedirections'),\n  kMaxRequests: Symbol('maxRequestsPerClient'),\n  kProxy: Symbol('proxy agent options'),\n  kCounter: Symbol('socket request counter'),\n  kInterceptors: Symbol('dispatch interceptors'),\n  kMaxResponseSize: Symbol('max response size'),\n  kHTTP2Session: Symbol('http2Session'),\n  kHTTP2SessionState: Symbol('http2Session state'),\n  kRetryHandlerDefaultRetry: Symbol('retry agent default retry'),\n  kConstruct: Symbol('constructable'),\n  kListeners: Symbol('listeners'),\n  kHTTPContext: Symbol('http context'),\n  kMaxConcurrentStreams: Symbol('max concurrent streams'),\n  kNoProxyAgent: Symbol('no proxy agent'),\n  kHttpProxyAgent: Symbol('http proxy agent'),\n  kHttpsProxyAgent: Symbol('https proxy agent')\n}\n", "'use strict'\n\nconst kUndiciError = Symbol.for('undici.error.UND_ERR')\nclass UndiciError extends Error {\n  constructor (message) {\n    super(message)\n    this.name = 'UndiciError'\n    this.code = 'UND_ERR'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kUndiciError] === true\n  }\n\n  [kUndiciError] = true\n}\n\nconst kConnectTimeoutError = Symbol.for('undici.error.UND_ERR_CONNECT_TIMEOUT')\nclass ConnectTimeoutError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'ConnectTimeoutError'\n    this.message = message || 'Connect Timeout Error'\n    this.code = 'UND_ERR_CONNECT_TIMEOUT'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kConnectTimeoutError] === true\n  }\n\n  [kConnectTimeoutError] = true\n}\n\nconst kHeadersTimeoutError = Symbol.for('undici.error.UND_ERR_HEADERS_TIMEOUT')\nclass HeadersTimeoutError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'HeadersTimeoutError'\n    this.message = message || 'Headers Timeout Error'\n    this.code = 'UND_ERR_HEADERS_TIMEOUT'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kHeadersTimeoutError] === true\n  }\n\n  [kHeadersTimeoutError] = true\n}\n\nconst kHeadersOverflowError = Symbol.for('undici.error.UND_ERR_HEADERS_OVERFLOW')\nclass HeadersOverflowError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'HeadersOverflowError'\n    this.message = message || 'Headers Overflow Error'\n    this.code = 'UND_ERR_HEADERS_OVERFLOW'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kHeadersOverflowError] === true\n  }\n\n  [kHeadersOverflowError] = true\n}\n\nconst kBodyTimeoutError = Symbol.for('undici.error.UND_ERR_BODY_TIMEOUT')\nclass BodyTimeoutError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'BodyTimeoutError'\n    this.message = message || 'Body Timeout Error'\n    this.code = 'UND_ERR_BODY_TIMEOUT'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kBodyTimeoutError] === true\n  }\n\n  [kBodyTimeoutError] = true\n}\n\nconst kResponseStatusCodeError = Symbol.for('undici.error.UND_ERR_RESPONSE_STATUS_CODE')\nclass ResponseStatusCodeError extends UndiciError {\n  constructor (message, statusCode, headers, body) {\n    super(message)\n    this.name = 'ResponseStatusCodeError'\n    this.message = message || 'Response Status Code Error'\n    this.code = 'UND_ERR_RESPONSE_STATUS_CODE'\n    this.body = body\n    this.status = statusCode\n    this.statusCode = statusCode\n    this.headers = headers\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kResponseStatusCodeError] === true\n  }\n\n  [kResponseStatusCodeError] = true\n}\n\nconst kInvalidArgumentError = Symbol.for('undici.error.UND_ERR_INVALID_ARG')\nclass InvalidArgumentError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'InvalidArgumentError'\n    this.message = message || 'Invalid Argument Error'\n    this.code = 'UND_ERR_INVALID_ARG'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kInvalidArgumentError] === true\n  }\n\n  [kInvalidArgumentError] = true\n}\n\nconst kInvalidReturnValueError = Symbol.for('undici.error.UND_ERR_INVALID_RETURN_VALUE')\nclass InvalidReturnValueError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'InvalidReturnValueError'\n    this.message = message || 'Invalid Return Value Error'\n    this.code = 'UND_ERR_INVALID_RETURN_VALUE'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kInvalidReturnValueError] === true\n  }\n\n  [kInvalidReturnValueError] = true\n}\n\nconst kAbortError = Symbol.for('undici.error.UND_ERR_ABORT')\nclass AbortError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'AbortError'\n    this.message = message || 'The operation was aborted'\n    this.code = 'UND_ERR_ABORT'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kAbortError] === true\n  }\n\n  [kAbortError] = true\n}\n\nconst kRequestAbortedError = Symbol.for('undici.error.UND_ERR_ABORTED')\nclass RequestAbortedError extends AbortError {\n  constructor (message) {\n    super(message)\n    this.name = 'AbortError'\n    this.message = message || 'Request aborted'\n    this.code = 'UND_ERR_ABORTED'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kRequestAbortedError] === true\n  }\n\n  [kRequestAbortedError] = true\n}\n\nconst kInformationalError = Symbol.for('undici.error.UND_ERR_INFO')\nclass InformationalError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'InformationalError'\n    this.message = message || 'Request information'\n    this.code = 'UND_ERR_INFO'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kInformationalError] === true\n  }\n\n  [kInformationalError] = true\n}\n\nconst kRequestContentLengthMismatchError = Symbol.for('undici.error.UND_ERR_REQ_CONTENT_LENGTH_MISMATCH')\nclass RequestContentLengthMismatchError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'RequestContentLengthMismatchError'\n    this.message = message || 'Request body length does not match content-length header'\n    this.code = 'UND_ERR_REQ_CONTENT_LENGTH_MISMATCH'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kRequestContentLengthMismatchError] === true\n  }\n\n  [kRequestContentLengthMismatchError] = true\n}\n\nconst kResponseContentLengthMismatchError = Symbol.for('undici.error.UND_ERR_RES_CONTENT_LENGTH_MISMATCH')\nclass ResponseContentLengthMismatchError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'ResponseContentLengthMismatchError'\n    this.message = message || 'Response body length does not match content-length header'\n    this.code = 'UND_ERR_RES_CONTENT_LENGTH_MISMATCH'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kResponseContentLengthMismatchError] === true\n  }\n\n  [kResponseContentLengthMismatchError] = true\n}\n\nconst kClientDestroyedError = Symbol.for('undici.error.UND_ERR_DESTROYED')\nclass ClientDestroyedError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'ClientDestroyedError'\n    this.message = message || 'The client is destroyed'\n    this.code = 'UND_ERR_DESTROYED'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kClientDestroyedError] === true\n  }\n\n  [kClientDestroyedError] = true\n}\n\nconst kClientClosedError = Symbol.for('undici.error.UND_ERR_CLOSED')\nclass ClientClosedError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'ClientClosedError'\n    this.message = message || 'The client is closed'\n    this.code = 'UND_ERR_CLOSED'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kClientClosedError] === true\n  }\n\n  [kClientClosedError] = true\n}\n\nconst kSocketError = Symbol.for('undici.error.UND_ERR_SOCKET')\nclass SocketError extends UndiciError {\n  constructor (message, socket) {\n    super(message)\n    this.name = 'SocketError'\n    this.message = message || 'Socket error'\n    this.code = 'UND_ERR_SOCKET'\n    this.socket = socket\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kSocketError] === true\n  }\n\n  [kSocketError] = true\n}\n\nconst kNotSupportedError = Symbol.for('undici.error.UND_ERR_NOT_SUPPORTED')\nclass NotSupportedError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'NotSupportedError'\n    this.message = message || 'Not supported error'\n    this.code = 'UND_ERR_NOT_SUPPORTED'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kNotSupportedError] === true\n  }\n\n  [kNotSupportedError] = true\n}\n\nconst kBalancedPoolMissingUpstreamError = Symbol.for('undici.error.UND_ERR_BPL_MISSING_UPSTREAM')\nclass BalancedPoolMissingUpstreamError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'MissingUpstreamError'\n    this.message = message || 'No upstream has been added to the BalancedPool'\n    this.code = 'UND_ERR_BPL_MISSING_UPSTREAM'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kBalancedPoolMissingUpstreamError] === true\n  }\n\n  [kBalancedPoolMissingUpstreamError] = true\n}\n\nconst kHTTPParserError = Symbol.for('undici.error.UND_ERR_HTTP_PARSER')\nclass HTTPParserError extends Error {\n  constructor (message, code, data) {\n    super(message)\n    this.name = 'HTTPParserError'\n    this.code = code ? `HPE_${code}` : undefined\n    this.data = data ? data.toString() : undefined\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kHTTPParserError] === true\n  }\n\n  [kHTTPParserError] = true\n}\n\nconst kResponseExceededMaxSizeError = Symbol.for('undici.error.UND_ERR_RES_EXCEEDED_MAX_SIZE')\nclass ResponseExceededMaxSizeError extends UndiciError {\n  constructor (message) {\n    super(message)\n    this.name = 'ResponseExceededMaxSizeError'\n    this.message = message || 'Response content exceeded max size'\n    this.code = 'UND_ERR_RES_EXCEEDED_MAX_SIZE'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kResponseExceededMaxSizeError] === true\n  }\n\n  [kResponseExceededMaxSizeError] = true\n}\n\nconst kRequestRetryError = Symbol.for('undici.error.UND_ERR_REQ_RETRY')\nclass RequestRetryError extends UndiciError {\n  constructor (message, code, { headers, data }) {\n    super(message)\n    this.name = 'RequestRetryError'\n    this.message = message || 'Request retry error'\n    this.code = 'UND_ERR_REQ_RETRY'\n    this.statusCode = code\n    this.data = data\n    this.headers = headers\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kRequestRetryError] === true\n  }\n\n  [kRequestRetryError] = true\n}\n\nconst kResponseError = Symbol.for('undici.error.UND_ERR_RESPONSE')\nclass ResponseError extends UndiciError {\n  constructor (message, code, { headers, data }) {\n    super(message)\n    this.name = 'ResponseError'\n    this.message = message || 'Response error'\n    this.code = 'UND_ERR_RESPONSE'\n    this.statusCode = code\n    this.data = data\n    this.headers = headers\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kResponseError] === true\n  }\n\n  [kResponseError] = true\n}\n\nconst kSecureProxyConnectionError = Symbol.for('undici.error.UND_ERR_PRX_TLS')\nclass SecureProxyConnectionError extends UndiciError {\n  constructor (cause, message, options) {\n    super(message, { cause, ...(options ?? {}) })\n    this.name = 'SecureProxyConnectionError'\n    this.message = message || 'Secure Proxy Connection failed'\n    this.code = 'UND_ERR_PRX_TLS'\n    this.cause = cause\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kSecureProxyConnectionError] === true\n  }\n\n  [kSecureProxyConnectionError] = true\n}\n\nmodule.exports = {\n  AbortError,\n  HTTPParserError,\n  UndiciError,\n  HeadersTimeoutError,\n  HeadersOverflowError,\n  BodyTimeoutError,\n  RequestContentLengthMismatchError,\n  ConnectTimeoutError,\n  ResponseStatusCodeError,\n  InvalidArgumentError,\n  InvalidReturnValueError,\n  RequestAbortedError,\n  ClientDestroyedError,\n  ClientClosedError,\n  InformationalError,\n  SocketError,\n  NotSupportedError,\n  ResponseContentLengthMismatchError,\n  BalancedPoolMissingUpstreamError,\n  ResponseExceededMaxSizeError,\n  RequestRetryError,\n  ResponseError,\n  SecureProxyConnectionError\n}\n", "'use strict'\n\n/** @type {Record<string, string | undefined>} */\nconst headerNameLowerCasedRecord = {}\n\n// https://developer.mozilla.org/docs/Web/HTTP/Headers\nconst wellknownHeaderNames = [\n  'Accept',\n  'Accept-Encoding',\n  'Accept-Language',\n  'Accept-Ranges',\n  'Access-Control-Allow-Credentials',\n  'Access-Control-Allow-Headers',\n  'Access-Control-Allow-Methods',\n  'Access-Control-Allow-Origin',\n  'Access-Control-Expose-Headers',\n  'Access-Control-Max-Age',\n  'Access-Control-Request-Headers',\n  'Access-Control-Request-Method',\n  'Age',\n  'Allow',\n  'Alt-Svc',\n  'Alt-Used',\n  'Authorization',\n  'Cache-Control',\n  'Clear-Site-Data',\n  'Connection',\n  'Content-Disposition',\n  'Content-Encoding',\n  'Content-Language',\n  'Content-Length',\n  'Content-Location',\n  'Content-Range',\n  'Content-Security-Policy',\n  'Content-Security-Policy-Report-Only',\n  'Content-Type',\n  'Cookie',\n  'Cross-Origin-Embedder-Policy',\n  'Cross-Origin-Opener-Policy',\n  'Cross-Origin-Resource-Policy',\n  'Date',\n  'Device-Memory',\n  'Downlink',\n  'ECT',\n  'ETag',\n  'Expect',\n  'Expect-CT',\n  'Expires',\n  'Forwarded',\n  'From',\n  'Host',\n  'If-Match',\n  'If-Modified-Since',\n  'If-None-Match',\n  'If-Range',\n  'If-Unmodified-Since',\n  'Keep-Alive',\n  'Last-Modified',\n  'Link',\n  'Location',\n  'Max-Forwards',\n  'Origin',\n  'Permissions-Policy',\n  'Pragma',\n  'Proxy-Authenticate',\n  'Proxy-Authorization',\n  'RTT',\n  'Range',\n  'Referer',\n  'Referrer-Policy',\n  'Refresh',\n  'Retry-After',\n  'Sec-WebSocket-Accept',\n  'Sec-WebSocket-Extensions',\n  'Sec-WebSocket-Key',\n  'Sec-WebSocket-Protocol',\n  'Sec-WebSocket-Version',\n  'Server',\n  'Server-Timing',\n  'Service-Worker-Allowed',\n  'Service-Worker-Navigation-Preload',\n  'Set-Cookie',\n  'SourceMap',\n  'Strict-Transport-Security',\n  'Supports-Loading-Mode',\n  'TE',\n  'Timing-Allow-Origin',\n  'Trailer',\n  'Transfer-Encoding',\n  'Upgrade',\n  'Upgrade-Insecure-Requests',\n  'User-Agent',\n  'Vary',\n  'Via',\n  'WWW-Authenticate',\n  'X-Content-Type-Options',\n  'X-DNS-Prefetch-Control',\n  'X-Frame-Options',\n  'X-Permitted-Cross-Domain-Policies',\n  'X-Powered-By',\n  'X-Requested-With',\n  'X-XSS-Protection'\n]\n\nfor (let i = 0; i < wellknownHeaderNames.length; ++i) {\n  const key = wellknownHeaderNames[i]\n  const lowerCasedKey = key.toLowerCase()\n  headerNameLowerCasedRecord[key] = headerNameLowerCasedRecord[lowerCasedKey] =\n    lowerCasedKey\n}\n\n// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`.\nObject.setPrototypeOf(headerNameLowerCasedRecord, null)\n\nmodule.exports = {\n  wellknownHeaderNames,\n  headerNameLowerCasedRecord\n}\n", "'use strict'\n\nconst {\n  wellknownHeaderNames,\n  headerNameLowerCasedRecord\n} = require('./constants')\n\nclass TstNode {\n  /** @type {any} */\n  value = null\n  /** @type {null | TstNode} */\n  left = null\n  /** @type {null | TstNode} */\n  middle = null\n  /** @type {null | TstNode} */\n  right = null\n  /** @type {number} */\n  code\n  /**\n   * @param {string} key\n   * @param {any} value\n   * @param {number} index\n   */\n  constructor (key, value, index) {\n    if (index === undefined || index >= key.length) {\n      throw new TypeError('Unreachable')\n    }\n    const code = this.code = key.charCodeAt(index)\n    // check code is ascii string\n    if (code > 0x7F) {\n      throw new TypeError('key must be ascii string')\n    }\n    if (key.length !== ++index) {\n      this.middle = new TstNode(key, value, index)\n    } else {\n      this.value = value\n    }\n  }\n\n  /**\n   * @param {string} key\n   * @param {any} value\n   */\n  add (key, value) {\n    const length = key.length\n    if (length === 0) {\n      throw new TypeError('Unreachable')\n    }\n    let index = 0\n    let node = this\n    while (true) {\n      const code = key.charCodeAt(index)\n      // check code is ascii string\n      if (code > 0x7F) {\n        throw new TypeError('key must be ascii string')\n      }\n      if (node.code === code) {\n        if (length === ++index) {\n          node.value = value\n          break\n        } else if (node.middle !== null) {\n          node = node.middle\n        } else {\n          node.middle = new TstNode(key, value, index)\n          break\n        }\n      } else if (node.code < code) {\n        if (node.left !== null) {\n          node = node.left\n        } else {\n          node.left = new TstNode(key, value, index)\n          break\n        }\n      } else if (node.right !== null) {\n        node = node.right\n      } else {\n        node.right = new TstNode(key, value, index)\n        break\n      }\n    }\n  }\n\n  /**\n   * @param {Uint8Array} key\n   * @return {TstNode | null}\n   */\n  search (key) {\n    const keylength = key.length\n    let index = 0\n    let node = this\n    while (node !== null && index < keylength) {\n      let code = key[index]\n      // A-Z\n      // First check if it is bigger than 0x5a.\n      // Lowercase letters have higher char codes than uppercase ones.\n      // Also we assume that headers will mostly contain lowercase characters.\n      if (code <= 0x5a && code >= 0x41) {\n        // Lowercase for uppercase.\n        code |= 32\n      }\n      while (node !== null) {\n        if (code === node.code) {\n          if (keylength === ++index) {\n            // Returns Node since it is the last key.\n            return node\n          }\n          node = node.middle\n          break\n        }\n        node = node.code < code ? node.left : node.right\n      }\n    }\n    return null\n  }\n}\n\nclass TernarySearchTree {\n  /** @type {TstNode | null} */\n  node = null\n\n  /**\n   * @param {string} key\n   * @param {any} value\n   * */\n  insert (key, value) {\n    if (this.node === null) {\n      this.node = new TstNode(key, value, 0)\n    } else {\n      this.node.add(key, value)\n    }\n  }\n\n  /**\n   * @param {Uint8Array} key\n   * @return {any}\n   */\n  lookup (key) {\n    return this.node?.search(key)?.value ?? null\n  }\n}\n\nconst tree = new TernarySearchTree()\n\nfor (let i = 0; i < wellknownHeaderNames.length; ++i) {\n  const key = headerNameLowerCasedRecord[wellknownHeaderNames[i]]\n  tree.insert(key, key)\n}\n\nmodule.exports = {\n  TernarySearchTree,\n  tree\n}\n", "'use strict'\n\nconst assert = require('node:assert')\nconst { kDestroyed, kBodyUsed, kListeners, kBody } = require('./symbols')\nconst { IncomingMessage } = require('node:http')\nconst stream = require('node:stream')\nconst net = require('node:net')\nconst { Blob } = require('node:buffer')\nconst nodeUtil = require('node:util')\nconst { stringify } = require('node:querystring')\nconst { EventEmitter: EE } = require('node:events')\nconst { InvalidArgumentError } = require('./errors')\nconst { headerNameLowerCasedRecord } = require('./constants')\nconst { tree } = require('./tree')\n\nconst [nodeMajor, nodeMinor] = process.versions.node.split('.').map(v => Number(v))\n\nclass BodyAsyncIterable {\n  constructor (body) {\n    this[kBody] = body\n    this[kBodyUsed] = false\n  }\n\n  async * [Symbol.asyncIterator] () {\n    assert(!this[kBodyUsed], 'disturbed')\n    this[kBodyUsed] = true\n    yield * this[kBody]\n  }\n}\n\nfunction wrapRequestBody (body) {\n  if (isStream(body)) {\n    // TODO (fix): Provide some way for the user to cache the file to e.g. /tmp\n    // so that it can be dispatched again?\n    // TODO (fix): Do we need 100-expect support to provide a way to do this properly?\n    if (bodyLength(body) === 0) {\n      body\n        .on('data', function () {\n          assert(false)\n        })\n    }\n\n    if (typeof body.readableDidRead !== 'boolean') {\n      body[kBodyUsed] = false\n      EE.prototype.on.call(body, 'data', function () {\n        this[kBodyUsed] = true\n      })\n    }\n\n    return body\n  } else if (body && typeof body.pipeTo === 'function') {\n    // TODO (fix): We can't access ReadableStream internal state\n    // to determine whether or not it has been disturbed. This is just\n    // a workaround.\n    return new BodyAsyncIterable(body)\n  } else if (\n    body &&\n    typeof body !== 'string' &&\n    !ArrayBuffer.isView(body) &&\n    isIterable(body)\n  ) {\n    // TODO: Should we allow re-using iterable if !this.opts.idempotent\n    // or through some other flag?\n    return new BodyAsyncIterable(body)\n  } else {\n    return body\n  }\n}\n\nfunction nop () {}\n\nfunction isStream (obj) {\n  return obj && typeof obj === 'object' && typeof obj.pipe === 'function' && typeof obj.on === 'function'\n}\n\n// based on https://github.com/node-fetch/fetch-blob/blob/8ab587d34080de94140b54f07168451e7d0b655e/index.js#L229-L241 (MIT License)\nfunction isBlobLike (object) {\n  if (object === null) {\n    return false\n  } else if (object instanceof Blob) {\n    return true\n  } else if (typeof object !== 'object') {\n    return false\n  } else {\n    const sTag = object[Symbol.toStringTag]\n\n    return (sTag === 'Blob' || sTag === 'File') && (\n      ('stream' in object && typeof object.stream === 'function') ||\n      ('arrayBuffer' in object && typeof object.arrayBuffer === 'function')\n    )\n  }\n}\n\nfunction buildURL (url, queryParams) {\n  if (url.includes('?') || url.includes('#')) {\n    throw new Error('Query params cannot be passed when url already contains \"?\" or \"#\".')\n  }\n\n  const stringified = stringify(queryParams)\n\n  if (stringified) {\n    url += '?' + stringified\n  }\n\n  return url\n}\n\nfunction isValidPort (port) {\n  const value = parseInt(port, 10)\n  return (\n    value === Number(port) &&\n    value >= 0 &&\n    value <= 65535\n  )\n}\n\nfunction isHttpOrHttpsPrefixed (value) {\n  return (\n    value != null &&\n    value[0] === 'h' &&\n    value[1] === 't' &&\n    value[2] === 't' &&\n    value[3] === 'p' &&\n    (\n      value[4] === ':' ||\n      (\n        value[4] === 's' &&\n        value[5] === ':'\n      )\n    )\n  )\n}\n\nfunction parseURL (url) {\n  if (typeof url === 'string') {\n    url = new URL(url)\n\n    if (!isHttpOrHttpsPrefixed(url.origin || url.protocol)) {\n      throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.')\n    }\n\n    return url\n  }\n\n  if (!url || typeof url !== 'object') {\n    throw new InvalidArgumentError('Invalid URL: The URL argument must be a non-null object.')\n  }\n\n  if (!(url instanceof URL)) {\n    if (url.port != null && url.port !== '' && isValidPort(url.port) === false) {\n      throw new InvalidArgumentError('Invalid URL: port must be a valid integer or a string representation of an integer.')\n    }\n\n    if (url.path != null && typeof url.path !== 'string') {\n      throw new InvalidArgumentError('Invalid URL path: the path must be a string or null/undefined.')\n    }\n\n    if (url.pathname != null && typeof url.pathname !== 'string') {\n      throw new InvalidArgumentError('Invalid URL pathname: the pathname must be a string or null/undefined.')\n    }\n\n    if (url.hostname != null && typeof url.hostname !== 'string') {\n      throw new InvalidArgumentError('Invalid URL hostname: the hostname must be a string or null/undefined.')\n    }\n\n    if (url.origin != null && typeof url.origin !== 'string') {\n      throw new InvalidArgumentError('Invalid URL origin: the origin must be a string or null/undefined.')\n    }\n\n    if (!isHttpOrHttpsPrefixed(url.origin || url.protocol)) {\n      throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.')\n    }\n\n    const port = url.port != null\n      ? url.port\n      : (url.protocol === 'https:' ? 443 : 80)\n    let origin = url.origin != null\n      ? url.origin\n      : `${url.protocol || ''}//${url.hostname || ''}:${port}`\n    let path = url.path != null\n      ? url.path\n      : `${url.pathname || ''}${url.search || ''}`\n\n    if (origin[origin.length - 1] === '/') {\n      origin = origin.slice(0, origin.length - 1)\n    }\n\n    if (path && path[0] !== '/') {\n      path = `/${path}`\n    }\n    // new URL(path, origin) is unsafe when `path` contains an absolute URL\n    // From https://developer.mozilla.org/en-US/docs/Web/API/URL/URL:\n    // If first parameter is a relative URL, second param is required, and will be used as the base URL.\n    // If first parameter is an absolute URL, a given second param will be ignored.\n    return new URL(`${origin}${path}`)\n  }\n\n  if (!isHttpOrHttpsPrefixed(url.origin || url.protocol)) {\n    throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.')\n  }\n\n  return url\n}\n\nfunction parseOrigin (url) {\n  url = parseURL(url)\n\n  if (url.pathname !== '/' || url.search || url.hash) {\n    throw new InvalidArgumentError('invalid url')\n  }\n\n  return url\n}\n\nfunction getHostname (host) {\n  if (host[0] === '[') {\n    const idx = host.indexOf(']')\n\n    assert(idx !== -1)\n    return host.substring(1, idx)\n  }\n\n  const idx = host.indexOf(':')\n  if (idx === -1) return host\n\n  return host.substring(0, idx)\n}\n\n// IP addresses are not valid server names per RFC6066\n// > Currently, the only server names supported are DNS hostnames\nfunction getServerName (host) {\n  if (!host) {\n    return null\n  }\n\n  assert(typeof host === 'string')\n\n  const servername = getHostname(host)\n  if (net.isIP(servername)) {\n    return ''\n  }\n\n  return servername\n}\n\nfunction deepClone (obj) {\n  return JSON.parse(JSON.stringify(obj))\n}\n\nfunction isAsyncIterable (obj) {\n  return !!(obj != null && typeof obj[Symbol.asyncIterator] === 'function')\n}\n\nfunction isIterable (obj) {\n  return !!(obj != null && (typeof obj[Symbol.iterator] === 'function' || typeof obj[Symbol.asyncIterator] === 'function'))\n}\n\nfunction bodyLength (body) {\n  if (body == null) {\n    return 0\n  } else if (isStream(body)) {\n    const state = body._readableState\n    return state && state.objectMode === false && state.ended === true && Number.isFinite(state.length)\n      ? state.length\n      : null\n  } else if (isBlobLike(body)) {\n    return body.size != null ? body.size : null\n  } else if (isBuffer(body)) {\n    return body.byteLength\n  }\n\n  return null\n}\n\nfunction isDestroyed (body) {\n  return body && !!(body.destroyed || body[kDestroyed] || (stream.isDestroyed?.(body)))\n}\n\nfunction destroy (stream, err) {\n  if (stream == null || !isStream(stream) || isDestroyed(stream)) {\n    return\n  }\n\n  if (typeof stream.destroy === 'function') {\n    if (Object.getPrototypeOf(stream).constructor === IncomingMessage) {\n      // See: https://github.com/nodejs/node/pull/38505/files\n      stream.socket = null\n    }\n\n    stream.destroy(err)\n  } else if (err) {\n    queueMicrotask(() => {\n      stream.emit('error', err)\n    })\n  }\n\n  if (stream.destroyed !== true) {\n    stream[kDestroyed] = true\n  }\n}\n\nconst KEEPALIVE_TIMEOUT_EXPR = /timeout=(\\d+)/\nfunction parseKeepAliveTimeout (val) {\n  const m = val.toString().match(KEEPALIVE_TIMEOUT_EXPR)\n  return m ? parseInt(m[1], 10) * 1000 : null\n}\n\n/**\n * Retrieves a header name and returns its lowercase value.\n * @param {string | Buffer} value Header name\n * @returns {string}\n */\nfunction headerNameToString (value) {\n  return typeof value === 'string'\n    ? headerNameLowerCasedRecord[value] ?? value.toLowerCase()\n    : tree.lookup(value) ?? value.toString('latin1').toLowerCase()\n}\n\n/**\n * Receive the buffer as a string and return its lowercase value.\n * @param {Buffer} value Header name\n * @returns {string}\n */\nfunction bufferToLowerCasedHeaderName (value) {\n  return tree.lookup(value) ?? value.toString('latin1').toLowerCase()\n}\n\n/**\n * @param {Record<string, string | string[]> | (Buffer | string | (Buffer | string)[])[]} headers\n * @param {Record<string, string | string[]>} [obj]\n * @returns {Record<string, string | string[]>}\n */\nfunction parseHeaders (headers, obj) {\n  if (obj === undefined) obj = {}\n  for (let i = 0; i < headers.length; i += 2) {\n    const key = headerNameToString(headers[i])\n    let val = obj[key]\n\n    if (val) {\n      if (typeof val === 'string') {\n        val = [val]\n        obj[key] = val\n      }\n      val.push(headers[i + 1].toString('utf8'))\n    } else {\n      const headersValue = headers[i + 1]\n      if (typeof headersValue === 'string') {\n        obj[key] = headersValue\n      } else {\n        obj[key] = Array.isArray(headersValue) ? headersValue.map(x => x.toString('utf8')) : headersValue.toString('utf8')\n      }\n    }\n  }\n\n  // See https://github.com/nodejs/node/pull/46528\n  if ('content-length' in obj && 'content-disposition' in obj) {\n    obj['content-disposition'] = Buffer.from(obj['content-disposition']).toString('latin1')\n  }\n\n  return obj\n}\n\nfunction parseRawHeaders (headers) {\n  const len = headers.length\n  const ret = new Array(len)\n\n  let hasContentLength = false\n  let contentDispositionIdx = -1\n  let key\n  let val\n  let kLen = 0\n\n  for (let n = 0; n < headers.length; n += 2) {\n    key = headers[n]\n    val = headers[n + 1]\n\n    typeof key !== 'string' && (key = key.toString())\n    typeof val !== 'string' && (val = val.toString('utf8'))\n\n    kLen = key.length\n    if (kLen === 14 && key[7] === '-' && (key === 'content-length' || key.toLowerCase() === 'content-length')) {\n      hasContentLength = true\n    } else if (kLen === 19 && key[7] === '-' && (key === 'content-disposition' || key.toLowerCase() === 'content-disposition')) {\n      contentDispositionIdx = n + 1\n    }\n    ret[n] = key\n    ret[n + 1] = val\n  }\n\n  // See https://github.com/nodejs/node/pull/46528\n  if (hasContentLength && contentDispositionIdx !== -1) {\n    ret[contentDispositionIdx] = Buffer.from(ret[contentDispositionIdx]).toString('latin1')\n  }\n\n  return ret\n}\n\nfunction isBuffer (buffer) {\n  // See, https://github.com/mcollina/undici/pull/319\n  return buffer instanceof Uint8Array || Buffer.isBuffer(buffer)\n}\n\nfunction validateHandler (handler, method, upgrade) {\n  if (!handler || typeof handler !== 'object') {\n    throw new InvalidArgumentError('handler must be an object')\n  }\n\n  if (typeof handler.onConnect !== 'function') {\n    throw new InvalidArgumentError('invalid onConnect method')\n  }\n\n  if (typeof handler.onError !== 'function') {\n    throw new InvalidArgumentError('invalid onError method')\n  }\n\n  if (typeof handler.onBodySent !== 'function' && handler.onBodySent !== undefined) {\n    throw new InvalidArgumentError('invalid onBodySent method')\n  }\n\n  if (upgrade || method === 'CONNECT') {\n    if (typeof handler.onUpgrade !== 'function') {\n      throw new InvalidArgumentError('invalid onUpgrade method')\n    }\n  } else {\n    if (typeof handler.onHeaders !== 'function') {\n      throw new InvalidArgumentError('invalid onHeaders method')\n    }\n\n    if (typeof handler.onData !== 'function') {\n      throw new InvalidArgumentError('invalid onData method')\n    }\n\n    if (typeof handler.onComplete !== 'function') {\n      throw new InvalidArgumentError('invalid onComplete method')\n    }\n  }\n}\n\n// A body is disturbed if it has been read from and it cannot\n// be re-used without losing state or data.\nfunction isDisturbed (body) {\n  // TODO (fix): Why is body[kBodyUsed] needed?\n  return !!(body && (stream.isDisturbed(body) || body[kBodyUsed]))\n}\n\nfunction isErrored (body) {\n  return !!(body && stream.isErrored(body))\n}\n\nfunction isReadable (body) {\n  return !!(body && stream.isReadable(body))\n}\n\nfunction getSocketInfo (socket) {\n  return {\n    localAddress: socket.localAddress,\n    localPort: socket.localPort,\n    remoteAddress: socket.remoteAddress,\n    remotePort: socket.remotePort,\n    remoteFamily: socket.remoteFamily,\n    timeout: socket.timeout,\n    bytesWritten: socket.bytesWritten,\n    bytesRead: socket.bytesRead\n  }\n}\n\n/** @type {globalThis['ReadableStream']} */\nfunction ReadableStreamFrom (iterable) {\n  // We cannot use ReadableStream.from here because it does not return a byte stream.\n\n  let iterator\n  return new ReadableStream(\n    {\n      async start () {\n        iterator = iterable[Symbol.asyncIterator]()\n      },\n      async pull (controller) {\n        const { done, value } = await iterator.next()\n        if (done) {\n          queueMicrotask(() => {\n            controller.close()\n            controller.byobRequest?.respond(0)\n          })\n        } else {\n          const buf = Buffer.isBuffer(value) ? value : Buffer.from(value)\n          if (buf.byteLength) {\n            controller.enqueue(new Uint8Array(buf))\n          }\n        }\n        return controller.desiredSize > 0\n      },\n      async cancel (reason) {\n        await iterator.return()\n      },\n      type: 'bytes'\n    }\n  )\n}\n\n// The chunk should be a FormData instance and contains\n// all the required methods.\nfunction isFormDataLike (object) {\n  return (\n    object &&\n    typeof object === 'object' &&\n    typeof object.append === 'function' &&\n    typeof object.delete === 'function' &&\n    typeof object.get === 'function' &&\n    typeof object.getAll === 'function' &&\n    typeof object.has === 'function' &&\n    typeof object.set === 'function' &&\n    object[Symbol.toStringTag] === 'FormData'\n  )\n}\n\nfunction addAbortListener (signal, listener) {\n  if ('addEventListener' in signal) {\n    signal.addEventListener('abort', listener, { once: true })\n    return () => signal.removeEventListener('abort', listener)\n  }\n  signal.addListener('abort', listener)\n  return () => signal.removeListener('abort', listener)\n}\n\nconst hasToWellFormed = typeof String.prototype.toWellFormed === 'function'\nconst hasIsWellFormed = typeof String.prototype.isWellFormed === 'function'\n\n/**\n * @param {string} val\n */\nfunction toUSVString (val) {\n  return hasToWellFormed ? `${val}`.toWellFormed() : nodeUtil.toUSVString(val)\n}\n\n/**\n * @param {string} val\n */\n// TODO: move this to webidl\nfunction isUSVString (val) {\n  return hasIsWellFormed ? `${val}`.isWellFormed() : toUSVString(val) === `${val}`\n}\n\n/**\n * @see https://tools.ietf.org/html/rfc7230#section-3.2.6\n * @param {number} c\n */\nfunction isTokenCharCode (c) {\n  switch (c) {\n    case 0x22:\n    case 0x28:\n    case 0x29:\n    case 0x2c:\n    case 0x2f:\n    case 0x3a:\n    case 0x3b:\n    case 0x3c:\n    case 0x3d:\n    case 0x3e:\n    case 0x3f:\n    case 0x40:\n    case 0x5b:\n    case 0x5c:\n    case 0x5d:\n    case 0x7b:\n    case 0x7d:\n      // DQUOTE and \"(),/:;<=>?@[\\]{}\"\n      return false\n    default:\n      // VCHAR %x21-7E\n      return c >= 0x21 && c <= 0x7e\n  }\n}\n\n/**\n * @param {string} characters\n */\nfunction isValidHTTPToken (characters) {\n  if (characters.length === 0) {\n    return false\n  }\n  for (let i = 0; i < characters.length; ++i) {\n    if (!isTokenCharCode(characters.charCodeAt(i))) {\n      return false\n    }\n  }\n  return true\n}\n\n// headerCharRegex have been lifted from\n// https://github.com/nodejs/node/blob/main/lib/_http_common.js\n\n/**\n * Matches if val contains an invalid field-vchar\n *  field-value    = *( field-content / obs-fold )\n *  field-content  = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n *  field-vchar    = VCHAR / obs-text\n */\nconst headerCharRegex = /[^\\t\\x20-\\x7e\\x80-\\xff]/\n\n/**\n * @param {string} characters\n */\nfunction isValidHeaderValue (characters) {\n  return !headerCharRegex.test(characters)\n}\n\n// Parsed accordingly to RFC 9110\n// https://www.rfc-editor.org/rfc/rfc9110#field.content-range\nfunction parseRangeHeader (range) {\n  if (range == null || range === '') return { start: 0, end: null, size: null }\n\n  const m = range ? range.match(/^bytes (\\d+)-(\\d+)\\/(\\d+)?$/) : null\n  return m\n    ? {\n        start: parseInt(m[1]),\n        end: m[2] ? parseInt(m[2]) : null,\n        size: m[3] ? parseInt(m[3]) : null\n      }\n    : null\n}\n\nfunction addListener (obj, name, listener) {\n  const listeners = (obj[kListeners] ??= [])\n  listeners.push([name, listener])\n  obj.on(name, listener)\n  return obj\n}\n\nfunction removeAllListeners (obj) {\n  for (const [name, listener] of obj[kListeners] ?? []) {\n    obj.removeListener(name, listener)\n  }\n  obj[kListeners] = null\n}\n\nfunction errorRequest (client, request, err) {\n  try {\n    request.onError(err)\n    assert(request.aborted)\n  } catch (err) {\n    client.emit('error', err)\n  }\n}\n\nconst kEnumerableProperty = Object.create(null)\nkEnumerableProperty.enumerable = true\n\nconst normalizedMethodRecordsBase = {\n  delete: 'DELETE',\n  DELETE: 'DELETE',\n  get: 'GET',\n  GET: 'GET',\n  head: 'HEAD',\n  HEAD: 'HEAD',\n  options: 'OPTIONS',\n  OPTIONS: 'OPTIONS',\n  post: 'POST',\n  POST: 'POST',\n  put: 'PUT',\n  PUT: 'PUT'\n}\n\nconst normalizedMethodRecords = {\n  ...normalizedMethodRecordsBase,\n  patch: 'patch',\n  PATCH: 'PATCH'\n}\n\n// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`.\nObject.setPrototypeOf(normalizedMethodRecordsBase, null)\nObject.setPrototypeOf(normalizedMethodRecords, null)\n\nmodule.exports = {\n  kEnumerableProperty,\n  nop,\n  isDisturbed,\n  isErrored,\n  isReadable,\n  toUSVString,\n  isUSVString,\n  isBlobLike,\n  parseOrigin,\n  parseURL,\n  getServerName,\n  isStream,\n  isIterable,\n  isAsyncIterable,\n  isDestroyed,\n  headerNameToString,\n  bufferToLowerCasedHeaderName,\n  addListener,\n  removeAllListeners,\n  errorRequest,\n  parseRawHeaders,\n  parseHeaders,\n  parseKeepAliveTimeout,\n  destroy,\n  bodyLength,\n  deepClone,\n  ReadableStreamFrom,\n  isBuffer,\n  validateHandler,\n  getSocketInfo,\n  isFormDataLike,\n  buildURL,\n  addAbortListener,\n  isValidHTTPToken,\n  isValidHeaderValue,\n  isTokenCharCode,\n  parseRangeHeader,\n  normalizedMethodRecordsBase,\n  normalizedMethodRecords,\n  isValidPort,\n  isHttpOrHttpsPrefixed,\n  nodeMajor,\n  nodeMinor,\n  safeHTTPMethods: ['GET', 'HEAD', 'OPTIONS', 'TRACE'],\n  wrapRequestBody\n}\n", "'use strict'\nconst diagnosticsChannel = require('node:diagnostics_channel')\nconst util = require('node:util')\n\nconst undiciDebugLog = util.debuglog('undici')\nconst fetchDebuglog = util.debuglog('fetch')\nconst websocketDebuglog = util.debuglog('websocket')\nlet isClientSet = false\nconst channels = {\n  // Client\n  beforeConnect: diagnosticsChannel.channel('undici:client:beforeConnect'),\n  connected: diagnosticsChannel.channel('undici:client:connected'),\n  connectError: diagnosticsChannel.channel('undici:client:connectError'),\n  sendHeaders: diagnosticsChannel.channel('undici:client:sendHeaders'),\n  // Request\n  create: diagnosticsChannel.channel('undici:request:create'),\n  bodySent: diagnosticsChannel.channel('undici:request:bodySent'),\n  headers: diagnosticsChannel.channel('undici:request:headers'),\n  trailers: diagnosticsChannel.channel('undici:request:trailers'),\n  error: diagnosticsChannel.channel('undici:request:error'),\n  // WebSocket\n  open: diagnosticsChannel.channel('undici:websocket:open'),\n  close: diagnosticsChannel.channel('undici:websocket:close'),\n  socketError: diagnosticsChannel.channel('undici:websocket:socket_error'),\n  ping: diagnosticsChannel.channel('undici:websocket:ping'),\n  pong: diagnosticsChannel.channel('undici:websocket:pong')\n}\n\nif (undiciDebugLog.enabled || fetchDebuglog.enabled) {\n  const debuglog = fetchDebuglog.enabled ? fetchDebuglog : undiciDebugLog\n\n  // Track all Client events\n  diagnosticsChannel.channel('undici:client:beforeConnect').subscribe(evt => {\n    const {\n      connectParams: { version, protocol, port, host }\n    } = evt\n    debuglog(\n      'connecting to %s using %s%s',\n      `${host}${port ? `:${port}` : ''}`,\n      protocol,\n      version\n    )\n  })\n\n  diagnosticsChannel.channel('undici:client:connected').subscribe(evt => {\n    const {\n      connectParams: { version, protocol, port, host }\n    } = evt\n    debuglog(\n      'connected to %s using %s%s',\n      `${host}${port ? `:${port}` : ''}`,\n      protocol,\n      version\n    )\n  })\n\n  diagnosticsChannel.channel('undici:client:connectError').subscribe(evt => {\n    const {\n      connectParams: { version, protocol, port, host },\n      error\n    } = evt\n    debuglog(\n      'connection to %s using %s%s errored - %s',\n      `${host}${port ? `:${port}` : ''}`,\n      protocol,\n      version,\n      error.message\n    )\n  })\n\n  diagnosticsChannel.channel('undici:client:sendHeaders').subscribe(evt => {\n    const {\n      request: { method, path, origin }\n    } = evt\n    debuglog('sending request to %s %s/%s', method, origin, path)\n  })\n\n  // Track Request events\n  diagnosticsChannel.channel('undici:request:headers').subscribe(evt => {\n    const {\n      request: { method, path, origin },\n      response: { statusCode }\n    } = evt\n    debuglog(\n      'received response to %s %s/%s - HTTP %d',\n      method,\n      origin,\n      path,\n      statusCode\n    )\n  })\n\n  diagnosticsChannel.channel('undici:request:trailers').subscribe(evt => {\n    const {\n      request: { method, path, origin }\n    } = evt\n    debuglog('trailers received from %s %s/%s', method, origin, path)\n  })\n\n  diagnosticsChannel.channel('undici:request:error').subscribe(evt => {\n    const {\n      request: { method, path, origin },\n      error\n    } = evt\n    debuglog(\n      'request to %s %s/%s errored - %s',\n      method,\n      origin,\n      path,\n      error.message\n    )\n  })\n\n  isClientSet = true\n}\n\nif (websocketDebuglog.enabled) {\n  if (!isClientSet) {\n    const debuglog = undiciDebugLog.enabled ? undiciDebugLog : websocketDebuglog\n    diagnosticsChannel.channel('undici:client:beforeConnect').subscribe(evt => {\n      const {\n        connectParams: { version, protocol, port, host }\n      } = evt\n      debuglog(\n        'connecting to %s%s using %s%s',\n        host,\n        port ? `:${port}` : '',\n        protocol,\n        version\n      )\n    })\n\n    diagnosticsChannel.channel('undici:client:connected').subscribe(evt => {\n      const {\n        connectParams: { version, protocol, port, host }\n      } = evt\n      debuglog(\n        'connected to %s%s using %s%s',\n        host,\n        port ? `:${port}` : '',\n        protocol,\n        version\n      )\n    })\n\n    diagnosticsChannel.channel('undici:client:connectError').subscribe(evt => {\n      const {\n        connectParams: { version, protocol, port, host },\n        error\n      } = evt\n      debuglog(\n        'connection to %s%s using %s%s errored - %s',\n        host,\n        port ? `:${port}` : '',\n        protocol,\n        version,\n        error.message\n      )\n    })\n\n    diagnosticsChannel.channel('undici:client:sendHeaders').subscribe(evt => {\n      const {\n        request: { method, path, origin }\n      } = evt\n      debuglog('sending request to %s %s/%s', method, origin, path)\n    })\n  }\n\n  // Track all WebSocket events\n  diagnosticsChannel.channel('undici:websocket:open').subscribe(evt => {\n    const {\n      address: { address, port }\n    } = evt\n    websocketDebuglog('connection opened %s%s', address, port ? `:${port}` : '')\n  })\n\n  diagnosticsChannel.channel('undici:websocket:close').subscribe(evt => {\n    const { websocket, code, reason } = evt\n    websocketDebuglog(\n      'closed connection to %s - %s %s',\n      websocket.url,\n      code,\n      reason\n    )\n  })\n\n  diagnosticsChannel.channel('undici:websocket:socket_error').subscribe(err => {\n    websocketDebuglog('connection errored - %s', err.message)\n  })\n\n  diagnosticsChannel.channel('undici:websocket:ping').subscribe(evt => {\n    websocketDebuglog('ping received')\n  })\n\n  diagnosticsChannel.channel('undici:websocket:pong').subscribe(evt => {\n    websocketDebuglog('pong received')\n  })\n}\n\nmodule.exports = {\n  channels\n}\n", "'use strict'\n\nconst {\n  InvalidArgumentError,\n  NotSupportedError\n} = require('./errors')\nconst assert = require('node:assert')\nconst {\n  isValidHTTPToken,\n  isValidHeaderValue,\n  isStream,\n  destroy,\n  isBuffer,\n  isFormDataLike,\n  isIterable,\n  isBlobLike,\n  buildURL,\n  validateHandler,\n  getServerName,\n  normalizedMethodRecords\n} = require('./util')\nconst { channels } = require('./diagnostics.js')\nconst { headerNameLowerCasedRecord } = require('./constants')\n\n// Verifies that a given path is valid does not contain control chars \\x00 to \\x20\nconst invalidPathRegex = /[^\\u0021-\\u00ff]/\n\nconst kHandler = Symbol('handler')\n\nclass Request {\n  constructor (origin, {\n    path,\n    method,\n    body,\n    headers,\n    query,\n    idempotent,\n    blocking,\n    upgrade,\n    headersTimeout,\n    bodyTimeout,\n    reset,\n    throwOnError,\n    expectContinue,\n    servername\n  }, handler) {\n    if (typeof path !== 'string') {\n      throw new InvalidArgumentError('path must be a string')\n    } else if (\n      path[0] !== '/' &&\n      !(path.startsWith('http://') || path.startsWith('https://')) &&\n      method !== 'CONNECT'\n    ) {\n      throw new InvalidArgumentError('path must be an absolute URL or start with a slash')\n    } else if (invalidPathRegex.test(path)) {\n      throw new InvalidArgumentError('invalid request path')\n    }\n\n    if (typeof method !== 'string') {\n      throw new InvalidArgumentError('method must be a string')\n    } else if (normalizedMethodRecords[method] === undefined && !isValidHTTPToken(method)) {\n      throw new InvalidArgumentError('invalid request method')\n    }\n\n    if (upgrade && typeof upgrade !== 'string') {\n      throw new InvalidArgumentError('upgrade must be a string')\n    }\n\n    if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) {\n      throw new InvalidArgumentError('invalid headersTimeout')\n    }\n\n    if (bodyTimeout != null && (!Number.isFinite(bodyTimeout) || bodyTimeout < 0)) {\n      throw new InvalidArgumentError('invalid bodyTimeout')\n    }\n\n    if (reset != null && typeof reset !== 'boolean') {\n      throw new InvalidArgumentError('invalid reset')\n    }\n\n    if (expectContinue != null && typeof expectContinue !== 'boolean') {\n      throw new InvalidArgumentError('invalid expectContinue')\n    }\n\n    this.headersTimeout = headersTimeout\n\n    this.bodyTimeout = bodyTimeout\n\n    this.throwOnError = throwOnError === true\n\n    this.method = method\n\n    this.abort = null\n\n    if (body == null) {\n      this.body = null\n    } else if (isStream(body)) {\n      this.body = body\n\n      const rState = this.body._readableState\n      if (!rState || !rState.autoDestroy) {\n        this.endHandler = function autoDestroy () {\n          destroy(this)\n        }\n        this.body.on('end', this.endHandler)\n      }\n\n      this.errorHandler = err => {\n        if (this.abort) {\n          this.abort(err)\n        } else {\n          this.error = err\n        }\n      }\n      this.body.on('error', this.errorHandler)\n    } else if (isBuffer(body)) {\n      this.body = body.byteLength ? body : null\n    } else if (ArrayBuffer.isView(body)) {\n      this.body = body.buffer.byteLength ? Buffer.from(body.buffer, body.byteOffset, body.byteLength) : null\n    } else if (body instanceof ArrayBuffer) {\n      this.body = body.byteLength ? Buffer.from(body) : null\n    } else if (typeof body === 'string') {\n      this.body = body.length ? Buffer.from(body) : null\n    } else if (isFormDataLike(body) || isIterable(body) || isBlobLike(body)) {\n      this.body = body\n    } else {\n      throw new InvalidArgumentError('body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable')\n    }\n\n    this.completed = false\n\n    this.aborted = false\n\n    this.upgrade = upgrade || null\n\n    this.path = query ? buildURL(path, query) : path\n\n    this.origin = origin\n\n    this.idempotent = idempotent == null\n      ? method === 'HEAD' || method === 'GET'\n      : idempotent\n\n    this.blocking = blocking == null ? false : blocking\n\n    this.reset = reset == null ? null : reset\n\n    this.host = null\n\n    this.contentLength = null\n\n    this.contentType = null\n\n    this.headers = []\n\n    // Only for H2\n    this.expectContinue = expectContinue != null ? expectContinue : false\n\n    if (Array.isArray(headers)) {\n      if (headers.length % 2 !== 0) {\n        throw new InvalidArgumentError('headers array must be even')\n      }\n      for (let i = 0; i < headers.length; i += 2) {\n        processHeader(this, headers[i], headers[i + 1])\n      }\n    } else if (headers && typeof headers === 'object') {\n      if (headers[Symbol.iterator]) {\n        for (const header of headers) {\n          if (!Array.isArray(header) || header.length !== 2) {\n            throw new InvalidArgumentError('headers must be in key-value pair format')\n          }\n          processHeader(this, header[0], header[1])\n        }\n      } else {\n        const keys = Object.keys(headers)\n        for (let i = 0; i < keys.length; ++i) {\n          processHeader(this, keys[i], headers[keys[i]])\n        }\n      }\n    } else if (headers != null) {\n      throw new InvalidArgumentError('headers must be an object or an array')\n    }\n\n    validateHandler(handler, method, upgrade)\n\n    this.servername = servername || getServerName(this.host)\n\n    this[kHandler] = handler\n\n    if (channels.create.hasSubscribers) {\n      channels.create.publish({ request: this })\n    }\n  }\n\n  onBodySent (chunk) {\n    if (this[kHandler].onBodySent) {\n      try {\n        return this[kHandler].onBodySent(chunk)\n      } catch (err) {\n        this.abort(err)\n      }\n    }\n  }\n\n  onRequestSent () {\n    if (channels.bodySent.hasSubscribers) {\n      channels.bodySent.publish({ request: this })\n    }\n\n    if (this[kHandler].onRequestSent) {\n      try {\n        return this[kHandler].onRequestSent()\n      } catch (err) {\n        this.abort(err)\n      }\n    }\n  }\n\n  onConnect (abort) {\n    assert(!this.aborted)\n    assert(!this.completed)\n\n    if (this.error) {\n      abort(this.error)\n    } else {\n      this.abort = abort\n      return this[kHandler].onConnect(abort)\n    }\n  }\n\n  onResponseStarted () {\n    return this[kHandler].onResponseStarted?.()\n  }\n\n  onHeaders (statusCode, headers, resume, statusText) {\n    assert(!this.aborted)\n    assert(!this.completed)\n\n    if (channels.headers.hasSubscribers) {\n      channels.headers.publish({ request: this, response: { statusCode, headers, statusText } })\n    }\n\n    try {\n      return this[kHandler].onHeaders(statusCode, headers, resume, statusText)\n    } catch (err) {\n      this.abort(err)\n    }\n  }\n\n  onData (chunk) {\n    assert(!this.aborted)\n    assert(!this.completed)\n\n    try {\n      return this[kHandler].onData(chunk)\n    } catch (err) {\n      this.abort(err)\n      return false\n    }\n  }\n\n  onUpgrade (statusCode, headers, socket) {\n    assert(!this.aborted)\n    assert(!this.completed)\n\n    return this[kHandler].onUpgrade(statusCode, headers, socket)\n  }\n\n  onComplete (trailers) {\n    this.onFinally()\n\n    assert(!this.aborted)\n\n    this.completed = true\n    if (channels.trailers.hasSubscribers) {\n      channels.trailers.publish({ request: this, trailers })\n    }\n\n    try {\n      return this[kHandler].onComplete(trailers)\n    } catch (err) {\n      // TODO (fix): This might be a bad idea?\n      this.onError(err)\n    }\n  }\n\n  onError (error) {\n    this.onFinally()\n\n    if (channels.error.hasSubscribers) {\n      channels.error.publish({ request: this, error })\n    }\n\n    if (this.aborted) {\n      return\n    }\n    this.aborted = true\n\n    return this[kHandler].onError(error)\n  }\n\n  onFinally () {\n    if (this.errorHandler) {\n      this.body.off('error', this.errorHandler)\n      this.errorHandler = null\n    }\n\n    if (this.endHandler) {\n      this.body.off('end', this.endHandler)\n      this.endHandler = null\n    }\n  }\n\n  addHeader (key, value) {\n    processHeader(this, key, value)\n    return this\n  }\n}\n\nfunction processHeader (request, key, val) {\n  if (val && (typeof val === 'object' && !Array.isArray(val))) {\n    throw new InvalidArgumentError(`invalid ${key} header`)\n  } else if (val === undefined) {\n    return\n  }\n\n  let headerName = headerNameLowerCasedRecord[key]\n\n  if (headerName === undefined) {\n    headerName = key.toLowerCase()\n    if (headerNameLowerCasedRecord[headerName] === undefined && !isValidHTTPToken(headerName)) {\n      throw new InvalidArgumentError('invalid header key')\n    }\n  }\n\n  if (Array.isArray(val)) {\n    const arr = []\n    for (let i = 0; i < val.length; i++) {\n      if (typeof val[i] === 'string') {\n        if (!isValidHeaderValue(val[i])) {\n          throw new InvalidArgumentError(`invalid ${key} header`)\n        }\n        arr.push(val[i])\n      } else if (val[i] === null) {\n        arr.push('')\n      } else if (typeof val[i] === 'object') {\n        throw new InvalidArgumentError(`invalid ${key} header`)\n      } else {\n        arr.push(`${val[i]}`)\n      }\n    }\n    val = arr\n  } else if (typeof val === 'string') {\n    if (!isValidHeaderValue(val)) {\n      throw new InvalidArgumentError(`invalid ${key} header`)\n    }\n  } else if (val === null) {\n    val = ''\n  } else {\n    val = `${val}`\n  }\n\n  if (request.host === null && headerName === 'host') {\n    if (typeof val !== 'string') {\n      throw new InvalidArgumentError('invalid host header')\n    }\n    // Consumed by Client\n    request.host = val\n  } else if (request.contentLength === null && headerName === 'content-length') {\n    request.contentLength = parseInt(val, 10)\n    if (!Number.isFinite(request.contentLength)) {\n      throw new InvalidArgumentError('invalid content-length header')\n    }\n  } else if (request.contentType === null && headerName === 'content-type') {\n    request.contentType = val\n    request.headers.push(key, val)\n  } else if (headerName === 'transfer-encoding' || headerName === 'keep-alive' || headerName === 'upgrade') {\n    throw new InvalidArgumentError(`invalid ${headerName} header`)\n  } else if (headerName === 'connection') {\n    const value = typeof val === 'string' ? val.toLowerCase() : null\n    if (value !== 'close' && value !== 'keep-alive') {\n      throw new InvalidArgumentError('invalid connection header')\n    }\n\n    if (value === 'close') {\n      request.reset = true\n    }\n  } else if (headerName === 'expect') {\n    throw new NotSupportedError('expect header not supported')\n  } else {\n    request.headers.push(key, val)\n  }\n}\n\nmodule.exports = Request\n", "'use strict'\nconst EventEmitter = require('node:events')\n\nclass Dispatcher extends EventEmitter {\n  dispatch () {\n    throw new Error('not implemented')\n  }\n\n  close () {\n    throw new Error('not implemented')\n  }\n\n  destroy () {\n    throw new Error('not implemented')\n  }\n\n  compose (...args) {\n    // So we handle [interceptor1, interceptor2] or interceptor1, interceptor2, ...\n    const interceptors = Array.isArray(args[0]) ? args[0] : args\n    let dispatch = this.dispatch.bind(this)\n\n    for (const interceptor of interceptors) {\n      if (interceptor == null) {\n        continue\n      }\n\n      if (typeof interceptor !== 'function') {\n        throw new TypeError(`invalid interceptor, expected function received ${typeof interceptor}`)\n      }\n\n      dispatch = interceptor(dispatch)\n\n      if (dispatch == null || typeof dispatch !== 'function' || dispatch.length !== 2) {\n        throw new TypeError('invalid interceptor')\n      }\n    }\n\n    return new ComposedDispatcher(this, dispatch)\n  }\n}\n\nclass ComposedDispatcher extends Dispatcher {\n  #dispatcher = null\n  #dispatch = null\n\n  constructor (dispatcher, dispatch) {\n    super()\n    this.#dispatcher = dispatcher\n    this.#dispatch = dispatch\n  }\n\n  dispatch (...args) {\n    this.#dispatch(...args)\n  }\n\n  close (...args) {\n    return this.#dispatcher.close(...args)\n  }\n\n  destroy (...args) {\n    return this.#dispatcher.destroy(...args)\n  }\n}\n\nmodule.exports = Dispatcher\n", "'use strict'\n\nconst Dispatcher = require('./dispatcher')\nconst {\n  ClientDestroyedError,\n  ClientClosedError,\n  InvalidArgumentError\n} = require('../core/errors')\nconst { kDestroy, kClose, kClosed, kDestroyed, kDispatch, kInterceptors } = require('../core/symbols')\n\nconst kOnDestroyed = Symbol('onDestroyed')\nconst kOnClosed = Symbol('onClosed')\nconst kInterceptedDispatch = Symbol('Intercepted Dispatch')\n\nclass DispatcherBase extends Dispatcher {\n  constructor () {\n    super()\n\n    this[kDestroyed] = false\n    this[kOnDestroyed] = null\n    this[kClosed] = false\n    this[kOnClosed] = []\n  }\n\n  get destroyed () {\n    return this[kDestroyed]\n  }\n\n  get closed () {\n    return this[kClosed]\n  }\n\n  get interceptors () {\n    return this[kInterceptors]\n  }\n\n  set interceptors (newInterceptors) {\n    if (newInterceptors) {\n      for (let i = newInterceptors.length - 1; i >= 0; i--) {\n        const interceptor = this[kInterceptors][i]\n        if (typeof interceptor !== 'function') {\n          throw new InvalidArgumentError('interceptor must be an function')\n        }\n      }\n    }\n\n    this[kInterceptors] = newInterceptors\n  }\n\n  close (callback) {\n    if (callback === undefined) {\n      return new Promise((resolve, reject) => {\n        this.close((err, data) => {\n          return err ? reject(err) : resolve(data)\n        })\n      })\n    }\n\n    if (typeof callback !== 'function') {\n      throw new InvalidArgumentError('invalid callback')\n    }\n\n    if (this[kDestroyed]) {\n      queueMicrotask(() => callback(new ClientDestroyedError(), null))\n      return\n    }\n\n    if (this[kClosed]) {\n      if (this[kOnClosed]) {\n        this[kOnClosed].push(callback)\n      } else {\n        queueMicrotask(() => callback(null, null))\n      }\n      return\n    }\n\n    this[kClosed] = true\n    this[kOnClosed].push(callback)\n\n    const onClosed = () => {\n      const callbacks = this[kOnClosed]\n      this[kOnClosed] = null\n      for (let i = 0; i < callbacks.length; i++) {\n        callbacks[i](null, null)\n      }\n    }\n\n    // Should not error.\n    this[kClose]()\n      .then(() => this.destroy())\n      .then(() => {\n        queueMicrotask(onClosed)\n      })\n  }\n\n  destroy (err, callback) {\n    if (typeof err === 'function') {\n      callback = err\n      err = null\n    }\n\n    if (callback === undefined) {\n      return new Promise((resolve, reject) => {\n        this.destroy(err, (err, data) => {\n          return err ? /* istanbul ignore next: should never error */ reject(err) : resolve(data)\n        })\n      })\n    }\n\n    if (typeof callback !== 'function') {\n      throw new InvalidArgumentError('invalid callback')\n    }\n\n    if (this[kDestroyed]) {\n      if (this[kOnDestroyed]) {\n        this[kOnDestroyed].push(callback)\n      } else {\n        queueMicrotask(() => callback(null, null))\n      }\n      return\n    }\n\n    if (!err) {\n      err = new ClientDestroyedError()\n    }\n\n    this[kDestroyed] = true\n    this[kOnDestroyed] = this[kOnDestroyed] || []\n    this[kOnDestroyed].push(callback)\n\n    const onDestroyed = () => {\n      const callbacks = this[kOnDestroyed]\n      this[kOnDestroyed] = null\n      for (let i = 0; i < callbacks.length; i++) {\n        callbacks[i](null, null)\n      }\n    }\n\n    // Should not error.\n    this[kDestroy](err).then(() => {\n      queueMicrotask(onDestroyed)\n    })\n  }\n\n  [kInterceptedDispatch] (opts, handler) {\n    if (!this[kInterceptors] || this[kInterceptors].length === 0) {\n      this[kInterceptedDispatch] = this[kDispatch]\n      return this[kDispatch](opts, handler)\n    }\n\n    let dispatch = this[kDispatch].bind(this)\n    for (let i = this[kInterceptors].length - 1; i >= 0; i--) {\n      dispatch = this[kInterceptors][i](dispatch)\n    }\n    this[kInterceptedDispatch] = dispatch\n    return dispatch(opts, handler)\n  }\n\n  dispatch (opts, handler) {\n    if (!handler || typeof handler !== 'object') {\n      throw new InvalidArgumentError('handler must be an object')\n    }\n\n    try {\n      if (!opts || typeof opts !== 'object') {\n        throw new InvalidArgumentError('opts must be an object.')\n      }\n\n      if (this[kDestroyed] || this[kOnDestroyed]) {\n        throw new ClientDestroyedError()\n      }\n\n      if (this[kClosed]) {\n        throw new ClientClosedError()\n      }\n\n      return this[kInterceptedDispatch](opts, handler)\n    } catch (err) {\n      if (typeof handler.onError !== 'function') {\n        throw new InvalidArgumentError('invalid onError method')\n      }\n\n      handler.onError(err)\n\n      return false\n    }\n  }\n}\n\nmodule.exports = DispatcherBase\n", "'use strict'\n\n/**\n * This module offers an optimized timer implementation designed for scenarios\n * where high precision is not critical.\n *\n * The timer achieves faster performance by using a low-resolution approach,\n * with an accuracy target of within 500ms. This makes it particularly useful\n * for timers with delays of 1 second or more, where exact timing is less\n * crucial.\n *\n * It's important to note that Node.js timers are inherently imprecise, as\n * delays can occur due to the event loop being blocked by other operations.\n * Consequently, timers may trigger later than their scheduled time.\n */\n\n/**\n * The fastNow variable contains the internal fast timer clock value.\n *\n * @type {number}\n */\nlet fastNow = 0\n\n/**\n * RESOLUTION_MS represents the target resolution time in milliseconds.\n *\n * @type {number}\n * @default 1000\n */\nconst RESOLUTION_MS = 1e3\n\n/**\n * TICK_MS defines the desired interval in milliseconds between each tick.\n * The target value is set to half the resolution time, minus 1 ms, to account\n * for potential event loop overhead.\n *\n * @type {number}\n * @default 499\n */\nconst TICK_MS = (RESOLUTION_MS >> 1) - 1\n\n/**\n * fastNowTimeout is a Node.js timer used to manage and process\n * the FastTimers stored in the `fastTimers` array.\n *\n * @type {NodeJS.Timeout}\n */\nlet fastNowTimeout\n\n/**\n * The kFastTimer symbol is used to identify FastTimer instances.\n *\n * @type {Symbol}\n */\nconst kFastTimer = Symbol('kFastTimer')\n\n/**\n * The fastTimers array contains all active FastTimers.\n *\n * @type {FastTimer[]}\n */\nconst fastTimers = []\n\n/**\n * These constants represent the various states of a FastTimer.\n */\n\n/**\n * The `NOT_IN_LIST` constant indicates that the FastTimer is not included\n * in the `fastTimers` array. Timers with this status will not be processed\n * during the next tick by the `onTick` function.\n *\n * A FastTimer can be re-added to the `fastTimers` array by invoking the\n * `refresh` method on the FastTimer instance.\n *\n * @type {-2}\n */\nconst NOT_IN_LIST = -2\n\n/**\n * The `TO_BE_CLEARED` constant indicates that the FastTimer is scheduled\n * for removal from the `fastTimers` array. A FastTimer in this state will\n * be removed in the next tick by the `onTick` function and will no longer\n * be processed.\n *\n * This status is also set when the `clear` method is called on the FastTimer instance.\n *\n * @type {-1}\n */\nconst TO_BE_CLEARED = -1\n\n/**\n * The `PENDING` constant signifies that the FastTimer is awaiting processing\n * in the next tick by the `onTick` function. Timers with this status will have\n * their `_idleStart` value set and their status updated to `ACTIVE` in the next tick.\n *\n * @type {0}\n */\nconst PENDING = 0\n\n/**\n * The `ACTIVE` constant indicates that the FastTimer is active and waiting\n * for its timer to expire. During the next tick, the `onTick` function will\n * check if the timer has expired, and if so, it will execute the associated callback.\n *\n * @type {1}\n */\nconst ACTIVE = 1\n\n/**\n * The onTick function processes the fastTimers array.\n *\n * @returns {void}\n */\nfunction onTick () {\n  /**\n   * Increment the fastNow value by the TICK_MS value, despite the actual time\n   * that has passed since the last tick. This approach ensures independence\n   * from the system clock and delays caused by a blocked event loop.\n   *\n   * @type {number}\n   */\n  fastNow += TICK_MS\n\n  /**\n   * The `idx` variable is used to iterate over the `fastTimers` array.\n   * Expired timers are removed by replacing them with the last element in the array.\n   * Consequently, `idx` is only incremented when the current element is not removed.\n   *\n   * @type {number}\n   */\n  let idx = 0\n\n  /**\n   * The len variable will contain the length of the fastTimers array\n   * and will be decremented when a FastTimer should be removed from the\n   * fastTimers array.\n   *\n   * @type {number}\n   */\n  let len = fastTimers.length\n\n  while (idx < len) {\n    /**\n     * @type {FastTimer}\n     */\n    const timer = fastTimers[idx]\n\n    // If the timer is in the ACTIVE state and the timer has expired, it will\n    // be processed in the next tick.\n    if (timer._state === PENDING) {\n      // Set the _idleStart value to the fastNow value minus the TICK_MS value\n      // to account for the time the timer was in the PENDING state.\n      timer._idleStart = fastNow - TICK_MS\n      timer._state = ACTIVE\n    } else if (\n      timer._state === ACTIVE &&\n      fastNow >= timer._idleStart + timer._idleTimeout\n    ) {\n      timer._state = TO_BE_CLEARED\n      timer._idleStart = -1\n      timer._onTimeout(timer._timerArg)\n    }\n\n    if (timer._state === TO_BE_CLEARED) {\n      timer._state = NOT_IN_LIST\n\n      // Move the last element to the current index and decrement len if it is\n      // not the only element in the array.\n      if (--len !== 0) {\n        fastTimers[idx] = fastTimers[len]\n      }\n    } else {\n      ++idx\n    }\n  }\n\n  // Set the length of the fastTimers array to the new length and thus\n  // removing the excess FastTimers elements from the array.\n  fastTimers.length = len\n\n  // If there are still active FastTimers in the array, refresh the Timer.\n  // If there are no active FastTimers, the timer will be refreshed again\n  // when a new FastTimer is instantiated.\n  if (fastTimers.length !== 0) {\n    refreshTimeout()\n  }\n}\n\nfunction refreshTimeout () {\n  // If the fastNowTimeout is already set, refresh it.\n  if (fastNowTimeout) {\n    fastNowTimeout.refresh()\n  // fastNowTimeout is not instantiated yet, create a new Timer.\n  } else {\n    clearTimeout(fastNowTimeout)\n    fastNowTimeout = setTimeout(onTick, TICK_MS)\n\n    // If the Timer has an unref method, call it to allow the process to exit if\n    // there are no other active handles.\n    if (fastNowTimeout.unref) {\n      fastNowTimeout.unref()\n    }\n  }\n}\n\n/**\n * The `FastTimer` class is a data structure designed to store and manage\n * timer information.\n */\nclass FastTimer {\n  [kFastTimer] = true\n\n  /**\n   * The state of the timer, which can be one of the following:\n   * - NOT_IN_LIST (-2)\n   * - TO_BE_CLEARED (-1)\n   * - PENDING (0)\n   * - ACTIVE (1)\n   *\n   * @type {-2|-1|0|1}\n   * @private\n   */\n  _state = NOT_IN_LIST\n\n  /**\n   * The number of milliseconds to wait before calling the callback.\n   *\n   * @type {number}\n   * @private\n   */\n  _idleTimeout = -1\n\n  /**\n   * The time in milliseconds when the timer was started. This value is used to\n   * calculate when the timer should expire.\n   *\n   * @type {number}\n   * @default -1\n   * @private\n   */\n  _idleStart = -1\n\n  /**\n   * The function to be executed when the timer expires.\n   * @type {Function}\n   * @private\n   */\n  _onTimeout\n\n  /**\n   * The argument to be passed to the callback when the timer expires.\n   *\n   * @type {*}\n   * @private\n   */\n  _timerArg\n\n  /**\n   * @constructor\n   * @param {Function} callback A function to be executed after the timer\n   * expires.\n   * @param {number} delay The time, in milliseconds that the timer should wait\n   * before the specified function or code is executed.\n   * @param {*} arg\n   */\n  constructor (callback, delay, arg) {\n    this._onTimeout = callback\n    this._idleTimeout = delay\n    this._timerArg = arg\n\n    this.refresh()\n  }\n\n  /**\n   * Sets the timer's start time to the current time, and reschedules the timer\n   * to call its callback at the previously specified duration adjusted to the\n   * current time.\n   * Using this on a timer that has already called its callback will reactivate\n   * the timer.\n   *\n   * @returns {void}\n   */\n  refresh () {\n    // In the special case that the timer is not in the list of active timers,\n    // add it back to the array to be processed in the next tick by the onTick\n    // function.\n    if (this._state === NOT_IN_LIST) {\n      fastTimers.push(this)\n    }\n\n    // If the timer is the only active timer, refresh the fastNowTimeout for\n    // better resolution.\n    if (!fastNowTimeout || fastTimers.length === 1) {\n      refreshTimeout()\n    }\n\n    // Setting the state to PENDING will cause the timer to be reset in the\n    // next tick by the onTick function.\n    this._state = PENDING\n  }\n\n  /**\n   * The `clear` method cancels the timer, preventing it from executing.\n   *\n   * @returns {void}\n   * @private\n   */\n  clear () {\n    // Set the state to TO_BE_CLEARED to mark the timer for removal in the next\n    // tick by the onTick function.\n    this._state = TO_BE_CLEARED\n\n    // Reset the _idleStart value to -1 to indicate that the timer is no longer\n    // active.\n    this._idleStart = -1\n  }\n}\n\n/**\n * This module exports a setTimeout and clearTimeout function that can be\n * used as a drop-in replacement for the native functions.\n */\nmodule.exports = {\n  /**\n   * The setTimeout() method sets a timer which executes a function once the\n   * timer expires.\n   * @param {Function} callback A function to be executed after the timer\n   * expires.\n   * @param {number} delay The time, in milliseconds that the timer should\n   * wait before the specified function or code is executed.\n   * @param {*} [arg] An optional argument to be passed to the callback function\n   * when the timer expires.\n   * @returns {NodeJS.Timeout|FastTimer}\n   */\n  setTimeout (callback, delay, arg) {\n    // If the delay is less than or equal to the RESOLUTION_MS value return a\n    // native Node.js Timer instance.\n    return delay <= RESOLUTION_MS\n      ? setTimeout(callback, delay, arg)\n      : new FastTimer(callback, delay, arg)\n  },\n  /**\n   * The clearTimeout method cancels an instantiated Timer previously created\n   * by calling setTimeout.\n   *\n   * @param {NodeJS.Timeout|FastTimer} timeout\n   */\n  clearTimeout (timeout) {\n    // If the timeout is a FastTimer, call its own clear method.\n    if (timeout[kFastTimer]) {\n      /**\n       * @type {FastTimer}\n       */\n      timeout.clear()\n      // Otherwise it is an instance of a native NodeJS.Timeout, so call the\n      // Node.js native clearTimeout function.\n    } else {\n      clearTimeout(timeout)\n    }\n  },\n  /**\n   * The setFastTimeout() method sets a fastTimer which executes a function once\n   * the timer expires.\n   * @param {Function} callback A function to be executed after the timer\n   * expires.\n   * @param {number} delay The time, in milliseconds that the timer should\n   * wait before the specified function or code is executed.\n   * @param {*} [arg] An optional argument to be passed to the callback function\n   * when the timer expires.\n   * @returns {FastTimer}\n   */\n  setFastTimeout (callback, delay, arg) {\n    return new FastTimer(callback, delay, arg)\n  },\n  /**\n   * The clearTimeout method cancels an instantiated FastTimer previously\n   * created by calling setFastTimeout.\n   *\n   * @param {FastTimer} timeout\n   */\n  clearFastTimeout (timeout) {\n    timeout.clear()\n  },\n  /**\n   * The now method returns the value of the internal fast timer clock.\n   *\n   * @returns {number}\n   */\n  now () {\n    return fastNow\n  },\n  /**\n   * Trigger the onTick function to process the fastTimers array.\n   * Exported for testing purposes only.\n   * Marking as deprecated to discourage any use outside of testing.\n   * @deprecated\n   * @param {number} [delay=0] The delay in milliseconds to add to the now value.\n   */\n  tick (delay = 0) {\n    fastNow += delay - RESOLUTION_MS + 1\n    onTick()\n    onTick()\n  },\n  /**\n   * Reset FastTimers.\n   * Exported for testing purposes only.\n   * Marking as deprecated to discourage any use outside of testing.\n   * @deprecated\n   */\n  reset () {\n    fastNow = 0\n    fastTimers.length = 0\n    clearTimeout(fastNowTimeout)\n    fastNowTimeout = null\n  },\n  /**\n   * Exporting for testing purposes only.\n   * Marking as deprecated to discourage any use outside of testing.\n   * @deprecated\n   */\n  kFastTimer\n}\n", "'use strict'\n\nconst net = require('node:net')\nconst assert = require('node:assert')\nconst util = require('./util')\nconst { InvalidArgumentError, ConnectTimeoutError } = require('./errors')\nconst timers = require('../util/timers')\n\nfunction noop () {}\n\nlet tls // include tls conditionally since it is not always available\n\n// TODO: session re-use does not wait for the first\n// connection to resolve the session and might therefore\n// resolve the same servername multiple times even when\n// re-use is enabled.\n\nlet SessionCache\n// FIXME: remove workaround when the Node bug is fixed\n// https://github.com/nodejs/node/issues/49344#issuecomment-1741776308\nif (global.FinalizationRegistry && !(process.env.NODE_V8_COVERAGE || process.env.UNDICI_NO_FG)) {\n  SessionCache = class WeakSessionCache {\n    constructor (maxCachedSessions) {\n      this._maxCachedSessions = maxCachedSessions\n      this._sessionCache = new Map()\n      this._sessionRegistry = new global.FinalizationRegistry((key) => {\n        if (this._sessionCache.size < this._maxCachedSessions) {\n          return\n        }\n\n        const ref = this._sessionCache.get(key)\n        if (ref !== undefined && ref.deref() === undefined) {\n          this._sessionCache.delete(key)\n        }\n      })\n    }\n\n    get (sessionKey) {\n      const ref = this._sessionCache.get(sessionKey)\n      return ref ? ref.deref() : null\n    }\n\n    set (sessionKey, session) {\n      if (this._maxCachedSessions === 0) {\n        return\n      }\n\n      this._sessionCache.set(sessionKey, new WeakRef(session))\n      this._sessionRegistry.register(session, sessionKey)\n    }\n  }\n} else {\n  SessionCache = class SimpleSessionCache {\n    constructor (maxCachedSessions) {\n      this._maxCachedSessions = maxCachedSessions\n      this._sessionCache = new Map()\n    }\n\n    get (sessionKey) {\n      return this._sessionCache.get(sessionKey)\n    }\n\n    set (sessionKey, session) {\n      if (this._maxCachedSessions === 0) {\n        return\n      }\n\n      if (this._sessionCache.size >= this._maxCachedSessions) {\n        // remove the oldest session\n        const { value: oldestKey } = this._sessionCache.keys().next()\n        this._sessionCache.delete(oldestKey)\n      }\n\n      this._sessionCache.set(sessionKey, session)\n    }\n  }\n}\n\nfunction buildConnector ({ allowH2, maxCachedSessions, socketPath, timeout, session: customSession, ...opts }) {\n  if (maxCachedSessions != null && (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0)) {\n    throw new InvalidArgumentError('maxCachedSessions must be a positive integer or zero')\n  }\n\n  const options = { path: socketPath, ...opts }\n  const sessionCache = new SessionCache(maxCachedSessions == null ? 100 : maxCachedSessions)\n  timeout = timeout == null ? 10e3 : timeout\n  allowH2 = allowH2 != null ? allowH2 : false\n  return function connect ({ hostname, host, protocol, port, servername, localAddress, httpSocket }, callback) {\n    let socket\n    if (protocol === 'https:') {\n      if (!tls) {\n        tls = require('node:tls')\n      }\n      servername = servername || options.servername || util.getServerName(host) || null\n\n      const sessionKey = servername || hostname\n      assert(sessionKey)\n\n      const session = customSession || sessionCache.get(sessionKey) || null\n\n      port = port || 443\n\n      socket = tls.connect({\n        highWaterMark: 16384, // TLS in node can't have bigger HWM anyway...\n        ...options,\n        servername,\n        session,\n        localAddress,\n        // TODO(HTTP/2): Add support for h2c\n        ALPNProtocols: allowH2 ? ['http/1.1', 'h2'] : ['http/1.1'],\n        socket: httpSocket, // upgrade socket connection\n        port,\n        host: hostname\n      })\n\n      socket\n        .on('session', function (session) {\n          // TODO (fix): Can a session become invalid once established? Don't think so?\n          sessionCache.set(sessionKey, session)\n        })\n    } else {\n      assert(!httpSocket, 'httpSocket can only be sent on TLS update')\n\n      port = port || 80\n\n      socket = net.connect({\n        highWaterMark: 64 * 1024, // Same as nodejs fs streams.\n        ...options,\n        localAddress,\n        port,\n        host: hostname\n      })\n    }\n\n    // Set TCP keep alive options on the socket here instead of in connect() for the case of assigning the socket\n    if (options.keepAlive == null || options.keepAlive) {\n      const keepAliveInitialDelay = options.keepAliveInitialDelay === undefined ? 60e3 : options.keepAliveInitialDelay\n      socket.setKeepAlive(true, keepAliveInitialDelay)\n    }\n\n    const clearConnectTimeout = setupConnectTimeout(new WeakRef(socket), { timeout, hostname, port })\n\n    socket\n      .setNoDelay(true)\n      .once(protocol === 'https:' ? 'secureConnect' : 'connect', function () {\n        queueMicrotask(clearConnectTimeout)\n\n        if (callback) {\n          const cb = callback\n          callback = null\n          cb(null, this)\n        }\n      })\n      .on('error', function (err) {\n        queueMicrotask(clearConnectTimeout)\n\n        if (callback) {\n          const cb = callback\n          callback = null\n          cb(err)\n        }\n      })\n\n    return socket\n  }\n}\n\n/**\n * @param {WeakRef<net.Socket>} socketWeakRef\n * @param {object} opts\n * @param {number} opts.timeout\n * @param {string} opts.hostname\n * @param {number} opts.port\n * @returns {() => void}\n */\nconst setupConnectTimeout = process.platform === 'win32'\n  ? (socketWeakRef, opts) => {\n      if (!opts.timeout) {\n        return noop\n      }\n\n      let s1 = null\n      let s2 = null\n      const fastTimer = timers.setFastTimeout(() => {\n      // setImmediate is added to make sure that we prioritize socket error events over timeouts\n        s1 = setImmediate(() => {\n        // Windows needs an extra setImmediate probably due to implementation differences in the socket logic\n          s2 = setImmediate(() => onConnectTimeout(socketWeakRef.deref(), opts))\n        })\n      }, opts.timeout)\n      return () => {\n        timers.clearFastTimeout(fastTimer)\n        clearImmediate(s1)\n        clearImmediate(s2)\n      }\n    }\n  : (socketWeakRef, opts) => {\n      if (!opts.timeout) {\n        return noop\n      }\n\n      let s1 = null\n      const fastTimer = timers.setFastTimeout(() => {\n      // setImmediate is added to make sure that we prioritize socket error events over timeouts\n        s1 = setImmediate(() => {\n          onConnectTimeout(socketWeakRef.deref(), opts)\n        })\n      }, opts.timeout)\n      return () => {\n        timers.clearFastTimeout(fastTimer)\n        clearImmediate(s1)\n      }\n    }\n\n/**\n * @param {net.Socket} socket\n * @param {object} opts\n * @param {number} opts.timeout\n * @param {string} opts.hostname\n * @param {number} opts.port\n */\nfunction onConnectTimeout (socket, opts) {\n  // The socket could be already garbage collected\n  if (socket == null) {\n    return\n  }\n\n  let message = 'Connect Timeout Error'\n  if (Array.isArray(socket.autoSelectFamilyAttemptedAddresses)) {\n    message += ` (attempted addresses: ${socket.autoSelectFamilyAttemptedAddresses.join(', ')},`\n  } else {\n    message += ` (attempted address: ${opts.hostname}:${opts.port},`\n  }\n\n  message += ` timeout: ${opts.timeout}ms)`\n\n  util.destroy(socket, new ConnectTimeoutError(message))\n}\n\nmodule.exports = buildConnector\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.enumToMap = void 0;\nfunction enumToMap(obj) {\n    const res = {};\n    Object.keys(obj).forEach((key) => {\n        const value = obj[key];\n        if (typeof value === 'number') {\n            res[key] = value;\n        }\n    });\n    return res;\n}\nexports.enumToMap = enumToMap;\n//# sourceMappingURL=utils.js.map", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SPECIAL_HEADERS = exports.HEADER_STATE = exports.MINOR = exports.MAJOR = exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS = exports.TOKEN = exports.STRICT_TOKEN = exports.HEX = exports.URL_CHAR = exports.STRICT_URL_CHAR = exports.USERINFO_CHARS = exports.MARK = exports.ALPHANUM = exports.NUM = exports.HEX_MAP = exports.NUM_MAP = exports.ALPHA = exports.FINISH = exports.H_METHOD_MAP = exports.METHOD_MAP = exports.METHODS_RTSP = exports.METHODS_ICE = exports.METHODS_HTTP = exports.METHODS = exports.LENIENT_FLAGS = exports.FLAGS = exports.TYPE = exports.ERROR = void 0;\nconst utils_1 = require(\"./utils\");\n// C headers\nvar ERROR;\n(function (ERROR) {\n    ERROR[ERROR[\"OK\"] = 0] = \"OK\";\n    ERROR[ERROR[\"INTERNAL\"] = 1] = \"INTERNAL\";\n    ERROR[ERROR[\"STRICT\"] = 2] = \"STRICT\";\n    ERROR[ERROR[\"LF_EXPECTED\"] = 3] = \"LF_EXPECTED\";\n    ERROR[ERROR[\"UNEXPECTED_CONTENT_LENGTH\"] = 4] = \"UNEXPECTED_CONTENT_LENGTH\";\n    ERROR[ERROR[\"CLOSED_CONNECTION\"] = 5] = \"CLOSED_CONNECTION\";\n    ERROR[ERROR[\"INVALID_METHOD\"] = 6] = \"INVALID_METHOD\";\n    ERROR[ERROR[\"INVALID_URL\"] = 7] = \"INVALID_URL\";\n    ERROR[ERROR[\"INVALID_CONSTANT\"] = 8] = \"INVALID_CONSTANT\";\n    ERROR[ERROR[\"INVALID_VERSION\"] = 9] = \"INVALID_VERSION\";\n    ERROR[ERROR[\"INVALID_HEADER_TOKEN\"] = 10] = \"INVALID_HEADER_TOKEN\";\n    ERROR[ERROR[\"INVALID_CONTENT_LENGTH\"] = 11] = \"INVALID_CONTENT_LENGTH\";\n    ERROR[ERROR[\"INVALID_CHUNK_SIZE\"] = 12] = \"INVALID_CHUNK_SIZE\";\n    ERROR[ERROR[\"INVALID_STATUS\"] = 13] = \"INVALID_STATUS\";\n    ERROR[ERROR[\"INVALID_EOF_STATE\"] = 14] = \"INVALID_EOF_STATE\";\n    ERROR[ERROR[\"INVALID_TRANSFER_ENCODING\"] = 15] = \"INVALID_TRANSFER_ENCODING\";\n    ERROR[ERROR[\"CB_MESSAGE_BEGIN\"] = 16] = \"CB_MESSAGE_BEGIN\";\n    ERROR[ERROR[\"CB_HEADERS_COMPLETE\"] = 17] = \"CB_HEADERS_COMPLETE\";\n    ERROR[ERROR[\"CB_MESSAGE_COMPLETE\"] = 18] = \"CB_MESSAGE_COMPLETE\";\n    ERROR[ERROR[\"CB_CHUNK_HEADER\"] = 19] = \"CB_CHUNK_HEADER\";\n    ERROR[ERROR[\"CB_CHUNK_COMPLETE\"] = 20] = \"CB_CHUNK_COMPLETE\";\n    ERROR[ERROR[\"PAUSED\"] = 21] = \"PAUSED\";\n    ERROR[ERROR[\"PAUSED_UPGRADE\"] = 22] = \"PAUSED_UPGRADE\";\n    ERROR[ERROR[\"PAUSED_H2_UPGRADE\"] = 23] = \"PAUSED_H2_UPGRADE\";\n    ERROR[ERROR[\"USER\"] = 24] = \"USER\";\n})(ERROR = exports.ERROR || (exports.ERROR = {}));\nvar TYPE;\n(function (TYPE) {\n    TYPE[TYPE[\"BOTH\"] = 0] = \"BOTH\";\n    TYPE[TYPE[\"REQUEST\"] = 1] = \"REQUEST\";\n    TYPE[TYPE[\"RESPONSE\"] = 2] = \"RESPONSE\";\n})(TYPE = exports.TYPE || (exports.TYPE = {}));\nvar FLAGS;\n(function (FLAGS) {\n    FLAGS[FLAGS[\"CONNECTION_KEEP_ALIVE\"] = 1] = \"CONNECTION_KEEP_ALIVE\";\n    FLAGS[FLAGS[\"CONNECTION_CLOSE\"] = 2] = \"CONNECTION_CLOSE\";\n    FLAGS[FLAGS[\"CONNECTION_UPGRADE\"] = 4] = \"CONNECTION_UPGRADE\";\n    FLAGS[FLAGS[\"CHUNKED\"] = 8] = \"CHUNKED\";\n    FLAGS[FLAGS[\"UPGRADE\"] = 16] = \"UPGRADE\";\n    FLAGS[FLAGS[\"CONTENT_LENGTH\"] = 32] = \"CONTENT_LENGTH\";\n    FLAGS[FLAGS[\"SKIPBODY\"] = 64] = \"SKIPBODY\";\n    FLAGS[FLAGS[\"TRAILING\"] = 128] = \"TRAILING\";\n    // 1 << 8 is unused\n    FLAGS[FLAGS[\"TRANSFER_ENCODING\"] = 512] = \"TRANSFER_ENCODING\";\n})(FLAGS = exports.FLAGS || (exports.FLAGS = {}));\nvar LENIENT_FLAGS;\n(function (LENIENT_FLAGS) {\n    LENIENT_FLAGS[LENIENT_FLAGS[\"HEADERS\"] = 1] = \"HEADERS\";\n    LENIENT_FLAGS[LENIENT_FLAGS[\"CHUNKED_LENGTH\"] = 2] = \"CHUNKED_LENGTH\";\n    LENIENT_FLAGS[LENIENT_FLAGS[\"KEEP_ALIVE\"] = 4] = \"KEEP_ALIVE\";\n})(LENIENT_FLAGS = exports.LENIENT_FLAGS || (exports.LENIENT_FLAGS = {}));\nvar METHODS;\n(function (METHODS) {\n    METHODS[METHODS[\"DELETE\"] = 0] = \"DELETE\";\n    METHODS[METHODS[\"GET\"] = 1] = \"GET\";\n    METHODS[METHODS[\"HEAD\"] = 2] = \"HEAD\";\n    METHODS[METHODS[\"POST\"] = 3] = \"POST\";\n    METHODS[METHODS[\"PUT\"] = 4] = \"PUT\";\n    /* pathological */\n    METHODS[METHODS[\"CONNECT\"] = 5] = \"CONNECT\";\n    METHODS[METHODS[\"OPTIONS\"] = 6] = \"OPTIONS\";\n    METHODS[METHODS[\"TRACE\"] = 7] = \"TRACE\";\n    /* WebDAV */\n    METHODS[METHODS[\"COPY\"] = 8] = \"COPY\";\n    METHODS[METHODS[\"LOCK\"] = 9] = \"LOCK\";\n    METHODS[METHODS[\"MKCOL\"] = 10] = \"MKCOL\";\n    METHODS[METHODS[\"MOVE\"] = 11] = \"MOVE\";\n    METHODS[METHODS[\"PROPFIND\"] = 12] = \"PROPFIND\";\n    METHODS[METHODS[\"PROPPATCH\"] = 13] = \"PROPPATCH\";\n    METHODS[METHODS[\"SEARCH\"] = 14] = \"SEARCH\";\n    METHODS[METHODS[\"UNLOCK\"] = 15] = \"UNLOCK\";\n    METHODS[METHODS[\"BIND\"] = 16] = \"BIND\";\n    METHODS[METHODS[\"REBIND\"] = 17] = \"REBIND\";\n    METHODS[METHODS[\"UNBIND\"] = 18] = \"UNBIND\";\n    METHODS[METHODS[\"ACL\"] = 19] = \"ACL\";\n    /* subversion */\n    METHODS[METHODS[\"REPORT\"] = 20] = \"REPORT\";\n    METHODS[METHODS[\"MKACTIVITY\"] = 21] = \"MKACTIVITY\";\n    METHODS[METHODS[\"CHECKOUT\"] = 22] = \"CHECKOUT\";\n    METHODS[METHODS[\"MERGE\"] = 23] = \"MERGE\";\n    /* upnp */\n    METHODS[METHODS[\"M-SEARCH\"] = 24] = \"M-SEARCH\";\n    METHODS[METHODS[\"NOTIFY\"] = 25] = \"NOTIFY\";\n    METHODS[METHODS[\"SUBSCRIBE\"] = 26] = \"SUBSCRIBE\";\n    METHODS[METHODS[\"UNSUBSCRIBE\"] = 27] = \"UNSUBSCRIBE\";\n    /* RFC-5789 */\n    METHODS[METHODS[\"PATCH\"] = 28] = \"PATCH\";\n    METHODS[METHODS[\"PURGE\"] = 29] = \"PURGE\";\n    /* CalDAV */\n    METHODS[METHODS[\"MKCALENDAR\"] = 30] = \"MKCALENDAR\";\n    /* RFC-2068, section 19.6.1.2 */\n    METHODS[METHODS[\"LINK\"] = 31] = \"LINK\";\n    METHODS[METHODS[\"UNLINK\"] = 32] = \"UNLINK\";\n    /* icecast */\n    METHODS[METHODS[\"SOURCE\"] = 33] = \"SOURCE\";\n    /* RFC-7540, section 11.6 */\n    METHODS[METHODS[\"PRI\"] = 34] = \"PRI\";\n    /* RFC-2326 RTSP */\n    METHODS[METHODS[\"DESCRIBE\"] = 35] = \"DESCRIBE\";\n    METHODS[METHODS[\"ANNOUNCE\"] = 36] = \"ANNOUNCE\";\n    METHODS[METHODS[\"SETUP\"] = 37] = \"SETUP\";\n    METHODS[METHODS[\"PLAY\"] = 38] = \"PLAY\";\n    METHODS[METHODS[\"PAUSE\"] = 39] = \"PAUSE\";\n    METHODS[METHODS[\"TEARDOWN\"] = 40] = \"TEARDOWN\";\n    METHODS[METHODS[\"GET_PARAMETER\"] = 41] = \"GET_PARAMETER\";\n    METHODS[METHODS[\"SET_PARAMETER\"] = 42] = \"SET_PARAMETER\";\n    METHODS[METHODS[\"REDIRECT\"] = 43] = \"REDIRECT\";\n    METHODS[METHODS[\"RECORD\"] = 44] = \"RECORD\";\n    /* RAOP */\n    METHODS[METHODS[\"FLUSH\"] = 45] = \"FLUSH\";\n})(METHODS = exports.METHODS || (exports.METHODS = {}));\nexports.METHODS_HTTP = [\n    METHODS.DELETE,\n    METHODS.GET,\n    METHODS.HEAD,\n    METHODS.POST,\n    METHODS.PUT,\n    METHODS.CONNECT,\n    METHODS.OPTIONS,\n    METHODS.TRACE,\n    METHODS.COPY,\n    METHODS.LOCK,\n    METHODS.MKCOL,\n    METHODS.MOVE,\n    METHODS.PROPFIND,\n    METHODS.PROPPATCH,\n    METHODS.SEARCH,\n    METHODS.UNLOCK,\n    METHODS.BIND,\n    METHODS.REBIND,\n    METHODS.UNBIND,\n    METHODS.ACL,\n    METHODS.REPORT,\n    METHODS.MKACTIVITY,\n    METHODS.CHECKOUT,\n    METHODS.MERGE,\n    METHODS['M-SEARCH'],\n    METHODS.NOTIFY,\n    METHODS.SUBSCRIBE,\n    METHODS.UNSUBSCRIBE,\n    METHODS.PATCH,\n    METHODS.PURGE,\n    METHODS.MKCALENDAR,\n    METHODS.LINK,\n    METHODS.UNLINK,\n    METHODS.PRI,\n    // TODO(indutny): should we allow it with HTTP?\n    METHODS.SOURCE,\n];\nexports.METHODS_ICE = [\n    METHODS.SOURCE,\n];\nexports.METHODS_RTSP = [\n    METHODS.OPTIONS,\n    METHODS.DESCRIBE,\n    METHODS.ANNOUNCE,\n    METHODS.SETUP,\n    METHODS.PLAY,\n    METHODS.PAUSE,\n    METHODS.TEARDOWN,\n    METHODS.GET_PARAMETER,\n    METHODS.SET_PARAMETER,\n    METHODS.REDIRECT,\n    METHODS.RECORD,\n    METHODS.FLUSH,\n    // For AirPlay\n    METHODS.GET,\n    METHODS.POST,\n];\nexports.METHOD_MAP = utils_1.enumToMap(METHODS);\nexports.H_METHOD_MAP = {};\nObject.keys(exports.METHOD_MAP).forEach((key) => {\n    if (/^H/.test(key)) {\n        exports.H_METHOD_MAP[key] = exports.METHOD_MAP[key];\n    }\n});\nvar FINISH;\n(function (FINISH) {\n    FINISH[FINISH[\"SAFE\"] = 0] = \"SAFE\";\n    FINISH[FINISH[\"SAFE_WITH_CB\"] = 1] = \"SAFE_WITH_CB\";\n    FINISH[FINISH[\"UNSAFE\"] = 2] = \"UNSAFE\";\n})(FINISH = exports.FINISH || (exports.FINISH = {}));\nexports.ALPHA = [];\nfor (let i = 'A'.charCodeAt(0); i <= 'Z'.charCodeAt(0); i++) {\n    // Upper case\n    exports.ALPHA.push(String.fromCharCode(i));\n    // Lower case\n    exports.ALPHA.push(String.fromCharCode(i + 0x20));\n}\nexports.NUM_MAP = {\n    0: 0, 1: 1, 2: 2, 3: 3, 4: 4,\n    5: 5, 6: 6, 7: 7, 8: 8, 9: 9,\n};\nexports.HEX_MAP = {\n    0: 0, 1: 1, 2: 2, 3: 3, 4: 4,\n    5: 5, 6: 6, 7: 7, 8: 8, 9: 9,\n    A: 0XA, B: 0XB, C: 0XC, D: 0XD, E: 0XE, F: 0XF,\n    a: 0xa, b: 0xb, c: 0xc, d: 0xd, e: 0xe, f: 0xf,\n};\nexports.NUM = [\n    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n];\nexports.ALPHANUM = exports.ALPHA.concat(exports.NUM);\nexports.MARK = ['-', '_', '.', '!', '~', '*', '\\'', '(', ')'];\nexports.USERINFO_CHARS = exports.ALPHANUM\n    .concat(exports.MARK)\n    .concat(['%', ';', ':', '&', '=', '+', '$', ',']);\n// TODO(indutny): use RFC\nexports.STRICT_URL_CHAR = [\n    '!', '\"', '$', '%', '&', '\\'',\n    '(', ')', '*', '+', ',', '-', '.', '/',\n    ':', ';', '<', '=', '>',\n    '@', '[', '\\\\', ']', '^', '_',\n    '`',\n    '{', '|', '}', '~',\n].concat(exports.ALPHANUM);\nexports.URL_CHAR = exports.STRICT_URL_CHAR\n    .concat(['\\t', '\\f']);\n// All characters with 0x80 bit set to 1\nfor (let i = 0x80; i <= 0xff; i++) {\n    exports.URL_CHAR.push(i);\n}\nexports.HEX = exports.NUM.concat(['a', 'b', 'c', 'd', 'e', 'f', 'A', 'B', 'C', 'D', 'E', 'F']);\n/* Tokens as defined by rfc 2616. Also lowercases them.\n *        token       = 1*<any CHAR except CTLs or separators>\n *     separators     = \"(\" | \")\" | \"<\" | \">\" | \"@\"\n *                    | \",\" | \";\" | \":\" | \"\\\" | <\">\n *                    | \"/\" | \"[\" | \"]\" | \"?\" | \"=\"\n *                    | \"{\" | \"}\" | SP | HT\n */\nexports.STRICT_TOKEN = [\n    '!', '#', '$', '%', '&', '\\'',\n    '*', '+', '-', '.',\n    '^', '_', '`',\n    '|', '~',\n].concat(exports.ALPHANUM);\nexports.TOKEN = exports.STRICT_TOKEN.concat([' ']);\n/*\n * Verify that a char is a valid visible (printable) US-ASCII\n * character or %x80-FF\n */\nexports.HEADER_CHARS = ['\\t'];\nfor (let i = 32; i <= 255; i++) {\n    if (i !== 127) {\n        exports.HEADER_CHARS.push(i);\n    }\n}\n// ',' = \\x44\nexports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS.filter((c) => c !== 44);\nexports.MAJOR = exports.NUM_MAP;\nexports.MINOR = exports.MAJOR;\nvar HEADER_STATE;\n(function (HEADER_STATE) {\n    HEADER_STATE[HEADER_STATE[\"GENERAL\"] = 0] = \"GENERAL\";\n    HEADER_STATE[HEADER_STATE[\"CONNECTION\"] = 1] = \"CONNECTION\";\n    HEADER_STATE[HEADER_STATE[\"CONTENT_LENGTH\"] = 2] = \"CONTENT_LENGTH\";\n    HEADER_STATE[HEADER_STATE[\"TRANSFER_ENCODING\"] = 3] = \"TRANSFER_ENCODING\";\n    HEADER_STATE[HEADER_STATE[\"UPGRADE\"] = 4] = \"UPGRADE\";\n    HEADER_STATE[HEADER_STATE[\"CONNECTION_KEEP_ALIVE\"] = 5] = \"CONNECTION_KEEP_ALIVE\";\n    HEADER_STATE[HEADER_STATE[\"CONNECTION_CLOSE\"] = 6] = \"CONNECTION_CLOSE\";\n    HEADER_STATE[HEADER_STATE[\"CONNECTION_UPGRADE\"] = 7] = \"CONNECTION_UPGRADE\";\n    HEADER_STATE[HEADER_STATE[\"TRANSFER_ENCODING_CHUNKED\"] = 8] = \"TRANSFER_ENCODING_CHUNKED\";\n})(HEADER_STATE = exports.HEADER_STATE || (exports.HEADER_STATE = {}));\nexports.SPECIAL_HEADERS = {\n    'connection': HEADER_STATE.CONNECTION,\n    'content-length': HEADER_STATE.CONTENT_LENGTH,\n    'proxy-connection': HEADER_STATE.CONNECTION,\n    'transfer-encoding': HEADER_STATE.TRANSFER_ENCODING,\n    'upgrade': HEADER_STATE.UPGRADE,\n};\n//# sourceMappingURL=constants.js.map", "'use strict'\n\nconst { Buffer } = require('node:buffer')\n\nmodule.exports = Buffer.from('AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEVDF8LQZIBIQMgASAERg2aAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGhzwBqLQAARw1dIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAybAgsgAkEANgIAIAZBAWohAUEeDF4LIAEgBEYEQEGTASEDDJoCCyABLQAAQcwARw1bIAFBAWohAUEKDF0LIAEgBEYEQEGUASEDDJkCCwJAAkAgAS0AAEHBAGsODwBcXFxcXFxcXFxcXFxcAVwLIAFBAWohAUH+ACEDDIACCyABQQFqIQFB/wAhAwz/AQsgASAERgRAQZUBIQMMmAILAkACQCABLQAAQcEAaw4DAFsBWwsgAUEBaiEBQf0AIQMM/wELIAFBAWohAUGAASEDDP4BC0GWASEDIAEgBEYNlgIgAigCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBp88Aai0AAEcNWSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMlwILIAJBADYCACAGQQFqIQFBCwxaCyABIARGBEBBlwEhAwyWAgsCQAJAAkACQCABLQAAQS1rDiMAW1tbW1tbW1tbW1tbW1tbW1tbW1tbW1sBW1tbW1sCW1tbA1sLIAFBAWohAUH7ACEDDP8BCyABQQFqIQFB/AAhAwz+AQsgAUEBaiEBQYEBIQMM/QELIAFBAWohAUGCASEDDPwBC0GYASEDIAEgBEYNlAIgAigCACIAIAQgAWtqIQUgASAAa0EEaiEGAkADQCABLQAAIABBqc8Aai0AAEcNVyAAQQRGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMlQILIAJBADYCACAGQQFqIQFBGQxYC0GZASEDIAEgBEYNkwIgAigCACIAIAQgAWtqIQUgASAAa0EFaiEGAkADQCABLQAAIABBrs8Aai0AAEcNViAAQQVGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMlAILIAJBADYCACAGQQFqIQFBBgxXC0GaASEDIAEgBEYNkgIgAigCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBtM8Aai0AAEcNVSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMkwILIAJBADYCACAGQQFqIQFBHAxWC0GbASEDIAEgBEYNkQIgAigCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABBts8Aai0AAEcNVCAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMkgILIAJBADYCACAGQQFqIQFBJwxVCyABIARGBEBBnAEhAwyRAgsCQAJAIAEtAABB1ABrDgIAAVQLIAFBAWohAUGGASEDDPgBCyABQQFqIQFBhwEhAwz3AQtBnQEhAyABIARGDY8CIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQbjPAGotAABHDVIgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADJACCyACQQA2AgAgBkEBaiEBQSYMUwtBngEhAyABIARGDY4CIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgJAA0AgAS0AACAAQbrPAGotAABHDVEgAEEBRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADI8CCyACQQA2AgAgBkEBaiEBQQMMUgtBnwEhAyABIARGDY0CIAIoAgAiACAEIAFraiEFIAEgAGtBAmohBgJAA0AgAS0AACAAQe3PAGotAABHDVAgAEECRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADI4CCyACQQA2AgAgBkEBaiEBQQwMUQtBoAEhAyABIARGDYwCIAIoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQbzPAGotAABHDU8gAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADI0CCyACQQA2AgAgBkEBaiEBQQ0MUAsgASAERgRAQaEBIQMMjAILAkACQCABLQAAQcYAaw4LAE9PT09PT09PTwFPCyABQQFqIQFBiwEhAwzzAQsgAUEBaiEBQYwBIQMM8gELIAEgBEYEQEGiASEDDIsCCyABLQAAQdAARw1MIAFBAWohAQxGCyABIARGBEBBowEhAwyKAgsCQAJAIAEtAABByQBrDgcBTU1NTU0ATQsgAUEBaiEBQY4BIQMM8QELIAFBAWohAUEiDE0LQaQBIQMgASAERg2IAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHAzwBqLQAARw1LIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyJAgsgAkEANgIAIAZBAWohAUEdDEwLIAEgBEYEQEGlASEDDIgCCwJAAkAgAS0AAEHSAGsOAwBLAUsLIAFBAWohAUGQASEDDO8BCyABQQFqIQFBBAxLCyABIARGBEBBpgEhAwyHAgsCQAJAAkACQAJAIAEtAABBwQBrDhUATU1NTU1NTU1NTQFNTQJNTQNNTQRNCyABQQFqIQFBiAEhAwzxAQsgAUEBaiEBQYkBIQMM8AELIAFBAWohAUGKASEDDO8BCyABQQFqIQFBjwEhAwzuAQsgAUEBaiEBQZEBIQMM7QELQacBIQMgASAERg2FAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHtzwBqLQAARw1IIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyGAgsgAkEANgIAIAZBAWohAUERDEkLQagBIQMgASAERg2EAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHCzwBqLQAARw1HIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyFAgsgAkEANgIAIAZBAWohAUEsDEgLQakBIQMgASAERg2DAiACKAIAIgAgBCABa2ohBSABIABrQQRqIQYCQANAIAEtAAAgAEHFzwBqLQAARw1GIABBBEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyEAgsgAkEANgIAIAZBAWohAUErDEcLQaoBIQMgASAERg2CAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHKzwBqLQAARw1FIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyDAgsgAkEANgIAIAZBAWohAUEUDEYLIAEgBEYEQEGrASEDDIICCwJAAkACQAJAIAEtAABBwgBrDg8AAQJHR0dHR0dHR0dHRwNHCyABQQFqIQFBkwEhAwzrAQsgAUEBaiEBQZQBIQMM6gELIAFBAWohAUGVASEDDOkBCyABQQFqIQFBlgEhAwzoAQsgASAERgRAQawBIQMMgQILIAEtAABBxQBHDUIgAUEBaiEBDD0LQa0BIQMgASAERg3/ASACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHNzwBqLQAARw1CIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyAAgsgAkEANgIAIAZBAWohAUEODEMLIAEgBEYEQEGuASEDDP8BCyABLQAAQdAARw1AIAFBAWohAUElDEILQa8BIQMgASAERg39ASACKAIAIgAgBCABa2ohBSABIABrQQhqIQYCQANAIAEtAAAgAEHQzwBqLQAARw1AIABBCEYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAz+AQsgAkEANgIAIAZBAWohAUEqDEELIAEgBEYEQEGwASEDDP0BCwJAAkAgAS0AAEHVAGsOCwBAQEBAQEBAQEABQAsgAUEBaiEBQZoBIQMM5AELIAFBAWohAUGbASEDDOMBCyABIARGBEBBsQEhAwz8AQsCQAJAIAEtAABBwQBrDhQAPz8/Pz8/Pz8/Pz8/Pz8/Pz8/AT8LIAFBAWohAUGZASEDDOMBCyABQQFqIQFBnAEhAwziAQtBsgEhAyABIARGDfoBIAIoAgAiACAEIAFraiEFIAEgAGtBA2ohBgJAA0AgAS0AACAAQdnPAGotAABHDT0gAEEDRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADPsBCyACQQA2AgAgBkEBaiEBQSEMPgtBswEhAyABIARGDfkBIAIoAgAiACAEIAFraiEFIAEgAGtBBmohBgJAA0AgAS0AACAAQd3PAGotAABHDTwgAEEGRg0BIABBAWohACAEIAFBAWoiAUcNAAsgAiAFNgIADPoBCyACQQA2AgAgBkEBaiEBQRoMPQsgASAERgRAQbQBIQMM+QELAkACQAJAIAEtAABBxQBrDhEAPT09PT09PT09AT09PT09Aj0LIAFBAWohAUGdASEDDOEBCyABQQFqIQFBngEhAwzgAQsgAUEBaiEBQZ8BIQMM3wELQbUBIQMgASAERg33ASACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEHkzwBqLQAARw06IABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAz4AQsgAkEANgIAIAZBAWohAUEoDDsLQbYBIQMgASAERg32ASACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEHqzwBqLQAARw05IABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAz3AQsgAkEANgIAIAZBAWohAUEHDDoLIAEgBEYEQEG3ASEDDPYBCwJAAkAgAS0AAEHFAGsODgA5OTk5OTk5OTk5OTkBOQsgAUEBaiEBQaEBIQMM3QELIAFBAWohAUGiASEDDNwBC0G4ASEDIAEgBEYN9AEgAigCACIAIAQgAWtqIQUgASAAa0ECaiEGAkADQCABLQAAIABB7c8Aai0AAEcNNyAAQQJGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAM9QELIAJBADYCACAGQQFqIQFBEgw4C0G5ASEDIAEgBEYN8wEgAigCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABB8M8Aai0AAEcNNiAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAM9AELIAJBADYCACAGQQFqIQFBIAw3C0G6ASEDIAEgBEYN8gEgAigCACIAIAQgAWtqIQUgASAAa0EBaiEGAkADQCABLQAAIABB8s8Aai0AAEcNNSAAQQFGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAM8wELIAJBADYCACAGQQFqIQFBDww2CyABIARGBEBBuwEhAwzyAQsCQAJAIAEtAABByQBrDgcANTU1NTUBNQsgAUEBaiEBQaUBIQMM2QELIAFBAWohAUGmASEDDNgBC0G8ASEDIAEgBEYN8AEgAigCACIAIAQgAWtqIQUgASAAa0EHaiEGAkADQCABLQAAIABB9M8Aai0AAEcNMyAAQQdGDQEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAM8QELIAJBADYCACAGQQFqIQFBGww0CyABIARGBEBBvQEhAwzwAQsCQAJAAkAgAS0AAEHCAGsOEgA0NDQ0NDQ0NDQBNDQ0NDQ0AjQLIAFBAWohAUGkASEDDNgBCyABQQFqIQFBpwEhAwzXAQsgAUEBaiEBQagBIQMM1gELIAEgBEYEQEG+ASEDDO8BCyABLQAAQc4ARw0wIAFBAWohAQwsCyABIARGBEBBvwEhAwzuAQsCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABLQAAQcEAaw4VAAECAz8EBQY/Pz8HCAkKCz8MDQ4PPwsgAUEBaiEBQegAIQMM4wELIAFBAWohAUHpACEDDOIBCyABQQFqIQFB7gAhAwzhAQsgAUEBaiEBQfIAIQMM4AELIAFBAWohAUHzACEDDN8BCyABQQFqIQFB9gAhAwzeAQsgAUEBaiEBQfcAIQMM3QELIAFBAWohAUH6ACEDDNwBCyABQQFqIQFBgwEhAwzbAQsgAUEBaiEBQYQBIQMM2gELIAFBAWohAUGFASEDDNkBCyABQQFqIQFBkgEhAwzYAQsgAUEBaiEBQZgBIQMM1wELIAFBAWohAUGgASEDDNYBCyABQQFqIQFBowEhAwzVAQsgAUEBaiEBQaoBIQMM1AELIAEgBEcEQCACQRA2AgggAiABNgIEQasBIQMM1AELQcABIQMM7AELQQAhAAJAIAIoAjgiA0UNACADKAI0IgNFDQAgAiADEQAAIQALIABFDV4gAEEVRw0HIAJB0QA2AhwgAiABNgIUIAJBsBc2AhAgAkEVNgIMQQAhAwzrAQsgAUEBaiABIARHDQgaQcIBIQMM6gELA0ACQCABLQAAQQprDgQIAAALAAsgBCABQQFqIgFHDQALQcMBIQMM6QELIAEgBEcEQCACQRE2AgggAiABNgIEQQEhAwzQAQtBxAEhAwzoAQsgASAERgRAQcUBIQMM6AELAkACQCABLQAAQQprDgQBKCgAKAsgAUEBagwJCyABQQFqDAULIAEgBEYEQEHGASEDDOcBCwJAAkAgAS0AAEEKaw4XAQsLAQsLCwsLCwsLCwsLCwsLCwsLCwALCyABQQFqIQELQbABIQMMzQELIAEgBEYEQEHIASEDDOYBCyABLQAAQSBHDQkgAkEAOwEyIAFBAWohAUGzASEDDMwBCwNAIAEhAAJAIAEgBEcEQCABLQAAQTBrQf8BcSIDQQpJDQEMJwtBxwEhAwzmAQsCQCACLwEyIgFBmTNLDQAgAiABQQpsIgU7ATIgBUH+/wNxIANB//8Dc0sNACAAQQFqIQEgAiADIAVqIgM7ATIgA0H//wNxQegHSQ0BCwtBACEDIAJBADYCHCACQcEJNgIQIAJBDTYCDCACIABBAWo2AhQM5AELIAJBADYCHCACIAE2AhQgAkHwDDYCECACQRs2AgxBACEDDOMBCyACKAIEIQAgAkEANgIEIAIgACABECYiAA0BIAFBAWoLIQFBrQEhAwzIAQsgAkHBATYCHCACIAA2AgwgAiABQQFqNgIUQQAhAwzgAQsgAigCBCEAIAJBADYCBCACIAAgARAmIgANASABQQFqCyEBQa4BIQMMxQELIAJBwgE2AhwgAiAANgIMIAIgAUEBajYCFEEAIQMM3QELIAJBADYCHCACIAE2AhQgAkGXCzYCECACQQ02AgxBACEDDNwBCyACQQA2AhwgAiABNgIUIAJB4xA2AhAgAkEJNgIMQQAhAwzbAQsgAkECOgAoDKwBC0EAIQMgAkEANgIcIAJBrws2AhAgAkECNgIMIAIgAUEBajYCFAzZAQtBAiEDDL8BC0ENIQMMvgELQSYhAwy9AQtBFSEDDLwBC0EWIQMMuwELQRghAwy6AQtBHCEDDLkBC0EdIQMMuAELQSAhAwy3AQtBISEDDLYBC0EjIQMMtQELQcYAIQMMtAELQS4hAwyzAQtBPSEDDLIBC0HLACEDDLEBC0HOACEDDLABC0HYACEDDK8BC0HZACEDDK4BC0HbACEDDK0BC0HxACEDDKwBC0H0ACEDDKsBC0GNASEDDKoBC0GXASEDDKkBC0GpASEDDKgBC0GvASEDDKcBC0GxASEDDKYBCyACQQA2AgALQQAhAyACQQA2AhwgAiABNgIUIAJB8Rs2AhAgAkEGNgIMDL0BCyACQQA2AgAgBkEBaiEBQSQLOgApIAIoAgQhACACQQA2AgQgAiAAIAEQJyIARQRAQeUAIQMMowELIAJB+QA2AhwgAiABNgIUIAIgADYCDEEAIQMMuwELIABBFUcEQCACQQA2AhwgAiABNgIUIAJBzA42AhAgAkEgNgIMQQAhAwy7AQsgAkH4ADYCHCACIAE2AhQgAkHKGDYCECACQRU2AgxBACEDDLoBCyACQQA2AhwgAiABNgIUIAJBjhs2AhAgAkEGNgIMQQAhAwy5AQsgAkEANgIcIAIgATYCFCACQf4RNgIQIAJBBzYCDEEAIQMMuAELIAJBADYCHCACIAE2AhQgAkGMHDYCECACQQc2AgxBACEDDLcBCyACQQA2AhwgAiABNgIUIAJBww82AhAgAkEHNgIMQQAhAwy2AQsgAkEANgIcIAIgATYCFCACQcMPNgIQIAJBBzYCDEEAIQMMtQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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CABB3AgLii1JbnZhbGlkIGNoYXIgaW4gdXJsIHF1ZXJ5AFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fYm9keQBDb250ZW50LUxlbmd0aCBvdmVyZmxvdwBDaHVuayBzaXplIG92ZXJmbG93AFJlc3BvbnNlIG92ZXJmbG93AEludmFsaWQgbWV0aG9kIGZvciBIVFRQL3gueCByZXF1ZXN0AEludmFsaWQgbWV0aG9kIGZvciBSVFNQL3gueCByZXF1ZXN0AEV4cGVjdGVkIFNPVVJDRSBtZXRob2QgZm9yIElDRS94LnggcmVxdWVzdABJbnZhbGlkIGNoYXIgaW4gdXJsIGZyYWdtZW50IHN0YXJ0AEV4cGVjdGVkIGRvdABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3N0YXR1cwBJbnZhbGlkIHJlc3BvbnNlIHN0YXR1cwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zAFVzZXIgY2FsbGJhY2sgZXJyb3IAYG9uX3Jlc2V0YCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfaGVhZGVyYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9iZWdpbmAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3N0YXR1c19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3ZlcnNpb25fY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl91cmxfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXRob2RfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfZmllbGRfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fbmFtZWAgY2FsbGJhY2sgZXJyb3IAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzZXJ2ZXIASW52YWxpZCBoZWFkZXIgdmFsdWUgY2hhcgBJbnZhbGlkIGhlYWRlciBmaWVsZCBjaGFyAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdmVyc2lvbgBJbnZhbGlkIG1pbm9yIHZlcnNpb24ASW52YWxpZCBtYWpvciB2ZXJzaW9uAEV4cGVjdGVkIHNwYWNlIGFmdGVyIHZlcnNpb24ARXhwZWN0ZWQgQ1JMRiBhZnRlciB2ZXJzaW9uAEludmFsaWQgSFRUUCB2ZXJzaW9uAEludmFsaWQgaGVhZGVyIHRva2VuAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fdXJsAEludmFsaWQgY2hhcmFjdGVycyBpbiB1cmwAVW5leHBlY3RlZCBzdGFydCBjaGFyIGluIHVybABEb3VibGUgQCBpbiB1cmwARW1wdHkgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyYWN0ZXIgaW4gQ29udGVudC1MZW5ndGgARHVwbGljYXRlIENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhciBpbiB1cmwgcGF0aABDb250ZW50LUxlbmd0aCBjYW4ndCBiZSBwcmVzZW50IHdpdGggVHJhbnNmZXItRW5jb2RpbmcASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgc2l6ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl92YWx1ZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHZhbHVlAE1pc3NpbmcgZXhwZWN0ZWQgTEYgYWZ0ZXIgaGVhZGVyIHZhbHVlAEludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZSB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlZCB2YWx1ZQBQYXVzZWQgYnkgb25faGVhZGVyc19jb21wbGV0ZQBJbnZhbGlkIEVPRiBzdGF0ZQBvbl9yZXNldCBwYXVzZQBvbl9jaHVua19oZWFkZXIgcGF1c2UAb25fbWVzc2FnZV9iZWdpbiBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fdmFsdWUgcGF1c2UAb25fc3RhdHVzX2NvbXBsZXRlIHBhdXNlAG9uX3ZlcnNpb25fY29tcGxldGUgcGF1c2UAb25fdXJsX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl92YWx1ZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXNzYWdlX2NvbXBsZXRlIHBhdXNlAG9uX21ldGhvZF9jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfZmllbGRfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUgcGF1c2UAVW5leHBlY3RlZCBzcGFjZSBhZnRlciBzdGFydCBsaW5lAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX25hbWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBuYW1lAFBhdXNlIG9uIENPTk5FQ1QvVXBncmFkZQBQYXVzZSBvbiBQUkkvVXBncmFkZQBFeHBlY3RlZCBIVFRQLzIgQ29ubmVjdGlvbiBQcmVmYWNlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fbWV0aG9kAEV4cGVjdGVkIHNwYWNlIGFmdGVyIG1ldGhvZABTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2hlYWRlcl9maWVsZABQYXVzZWQASW52YWxpZCB3b3JkIGVuY291bnRlcmVkAEludmFsaWQgbWV0aG9kIGVuY291bnRlcmVkAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2NoZW1hAFJlcXVlc3QgaGFzIGludmFsaWQgYFRyYW5zZmVyLUVuY29kaW5nYABTV0lUQ0hfUFJPWFkAVVNFX1BST1hZAE1LQUNUSVZJVFkAVU5QUk9DRVNTQUJMRV9FTlRJVFkAQ09QWQBNT1ZFRF9QRVJNQU5FTlRMWQBUT09fRUFSTFkATk9USUZZAEZBSUxFRF9ERVBFTkRFTkNZAEJBRF9HQVRFV0FZAFBMQVkAUFVUAENIRUNLT1VUAEdBVEVXQVlfVElNRU9VVABSRVFVRVNUX1RJTUVPVVQATkVUV09SS19DT05ORUNUX1RJTUVPVVQAQ09OTkVDVElPTl9USU1FT1VUAExPR0lOX1RJTUVPVVQATkVUV09SS19SRUFEX1RJTUVPVVQAUE9TVABNSVNESVJFQ1RFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX0xPQURfQkFMQU5DRURfUkVRVUVTVABCQURfUkVRVUVTVABIVFRQX1JFUVVFU1RfU0VOVF9UT19IVFRQU19QT1JUAFJFUE9SVABJTV9BX1RFQVBPVABSRVNFVF9DT05URU5UAE5PX0NPTlRFTlQAUEFSVElBTF9DT05URU5UAEhQRV9JTlZBTElEX0NPTlNUQU5UAEhQRV9DQl9SRVNFVABHRVQASFBFX1NUUklDVABDT05GTElDVABURU1QT1JBUllfUkVESVJFQ1QAUEVSTUFORU5UX1JFRElSRUNUAENPTk5FQ1QATVVMVElfU1RBVFVTAEhQRV9JTlZBTElEX1NUQVRVUwBUT09fTUFOWV9SRVFVRVNUUwBFQVJMWV9ISU5UUwBVTkFWQUlMQUJMRV9GT1JfTEVHQUxfUkVBU09OUwBPUFRJT05TAFNXSVRDSElOR19QUk9UT0NPTFMAVkFSSUFOVF9BTFNPX05FR09USUFURVMATVVMVElQTEVfQ0hPSUNFUwBJTlRFUk5BTF9TRVJWRVJfRVJST1IAV0VCX1NFUlZFUl9VTktOT1dOX0VSUk9SAFJBSUxHVU5fRVJST1IASURFTlRJVFlfUFJPVklERVJfQVVUSEVOVElDQVRJT05fRVJST1IAU1NMX0NFUlRJRklDQVRFX0VSUk9SAElOVkFMSURfWF9GT1JXQVJERURfRk9SAFNFVF9QQVJBTUVURVIAR0VUX1BBUkFNRVRFUgBIUEVfVVNFUgBTRUVfT1RIRVIASFBFX0NCX0NIVU5LX0hFQURFUgBNS0NBTEVOREFSAFNFVFVQAFdFQl9TRVJWRVJfSVNfRE9XTgBURUFSRE9XTgBIUEVfQ0xPU0VEX0NPTk5FQ1RJT04ASEVVUklTVElDX0VYUElSQVRJT04ARElTQ09OTkVDVEVEX09QRVJBVElPTgBOT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTgBIUEVfSU5WQUxJRF9WRVJTSU9OAEhQRV9DQl9NRVNTQUdFX0JFR0lOAFNJVEVfSVNfRlJPWkVOAEhQRV9JTlZBTElEX0hFQURFUl9UT0tFTgBJTlZBTElEX1RPS0VOAEZPUkJJRERFTgBFTkhBTkNFX1lPVVJfQ0FMTQBIUEVfSU5WQUxJRF9VUkwAQkxPQ0tFRF9CWV9QQVJFTlRBTF9DT05UUk9MAE1LQ09MAEFDTABIUEVfSU5URVJOQUwAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRV9VTk9GRklDSUFMAEhQRV9PSwBVTkxJTksAVU5MT0NLAFBSSQBSRVRSWV9XSVRIAEhQRV9JTlZBTElEX0NPTlRFTlRfTEVOR1RIAEhQRV9VTkVYUEVDVEVEX0NPTlRFTlRfTEVOR1RIAEZMVVNIAFBST1BQQVRDSABNLVNFQVJDSABVUklfVE9PX0xPTkcAUFJPQ0VTU0lORwBNSVNDRUxMQU5FT1VTX1BFUlNJU1RFTlRfV0FSTklORwBNSVNDRUxMQU5FT1VTX1dBUk5JTkcASFBFX0lOVkFMSURfVFJBTlNGRVJfRU5DT0RJTkcARXhwZWN0ZWQgQ1JMRgBIUEVfSU5WQUxJRF9DSFVOS19TSVpFAE1PVkUAQ09OVElOVUUASFBFX0NCX1NUQVRVU19DT01QTEVURQBIUEVfQ0JfSEVBREVSU19DT01QTEVURQBIUEVfQ0JfVkVSU0lPTl9DT01QTEVURQBIUEVfQ0JfVVJMX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19DT01QTEVURQBIUEVfQ0JfSEVBREVSX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9OQU1FX0NPTVBMRVRFAEhQRV9DQl9NRVNTQUdFX0NPTVBMRVRFAEhQRV9DQl9NRVRIT0RfQ09NUExFVEUASFBFX0NCX0hFQURFUl9GSUVMRF9DT01QTEVURQBERUxFVEUASFBFX0lOVkFMSURfRU9GX1NUQVRFAElOVkFMSURfU1NMX0NFUlRJRklDQVRFAFBBVVNFAE5PX1JFU1BPTlNFAFVOU1VQUE9SVEVEX01FRElBX1RZUEUAR09ORQBOT1RfQUNDRVBUQUJMRQBTRVJWSUNFX1VOQVZBSUxBQkxFAFJBTkdFX05PVF9TQVRJU0ZJQUJMRQBPUklHSU5fSVNfVU5SRUFDSEFCTEUAUkVTUE9OU0VfSVNfU1RBTEUAUFVSR0UATUVSR0UAUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRQBSRVFVRVNUX0hFQURFUl9UT09fTEFSR0UAUEFZTE9BRF9UT09fTEFSR0UASU5TVUZGSUNJRU5UX1NUT1JBR0UASFBFX1BBVVNFRF9VUEdSQURFAEhQRV9QQVVTRURfSDJfVVBHUkFERQBTT1VSQ0UAQU5OT1VOQ0UAVFJBQ0UASFBFX1VORVhQRUNURURfU1BBQ0UAREVTQ1JJQkUAVU5TVUJTQ1JJQkUAUkVDT1JEAEhQRV9JTlZBTElEX01FVEhPRABOT1RfRk9VTkQAUFJPUEZJTkQAVU5CSU5EAFJFQklORABVTkFVVEhPUklaRUQATUVUSE9EX05PVF9BTExPV0VEAEhUVFBfVkVSU0lPTl9OT1RfU1VQUE9SVEVEAEFMUkVBRFlfUkVQT1JURUQAQUNDRVBURUQATk9UX0lNUExFTUVOVEVEAExPT1BfREVURUNURUQASFBFX0NSX0VYUEVDVEVEAEhQRV9MRl9FWFBFQ1RFRABDUkVBVEVEAElNX1VTRUQASFBFX1BBVVNFRABUSU1FT1VUX09DQ1VSRUQAUEFZTUVOVF9SRVFVSVJFRABQUkVDT05ESVRJT05fUkVRVUlSRUQAUFJPWFlfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATkVUV09SS19BVVRIRU5USUNBVElPTl9SRVFVSVJFRABMRU5HVEhfUkVRVUlSRUQAU1NMX0NFUlRJRklDQVRFX1JFUVVJUkVEAFVQR1JBREVfUkVRVUlSRUQAUEFHRV9FWFBJUkVEAFBSRUNPTkRJVElPTl9GQUlMRUQARVhQRUNUQVRJT05fRkFJTEVEAFJFVkFMSURBVElPTl9GQUlMRUQAU1NMX0hBTkRTSEFLRV9GQUlMRUQATE9DS0VEAFRSQU5TRk9STUFUSU9OX0FQUExJRUQATk9UX01PRElGSUVEAE5PVF9FWFRFTkRFRABCQU5EV0lEVEhfTElNSVRfRVhDRUVERUQAU0lURV9JU19PVkVSTE9BREVEAEhFQUQARXhwZWN0ZWQgSFRUUC8AAF4TAAAmEwAAMBAAAPAXAACdEwAAFRIAADkXAADwEgAAChAAAHUSAACtEgAAghMAAE8UAAB/EAAAoBUAACMUAACJEgAAixQAAE0VAADUEQAAzxQAABAYAADJFgAA3BYAAMERAADgFwAAuxQAAHQUAAB8FQAA5RQAAAgXAAAfEAAAZRUAAKMUAAAoFQAAAhUAAJkVAAAsEAAAixkAAE8PAADUDgAAahAAAM4QAAACFwAAiQ4AAG4TAAAcEwAAZhQAAFYXAADBEwAAzRMAAGwTAABoFwAAZhcAAF8XAAAiEwAAzg8AAGkOAADYDgAAYxYAAMsTAACqDgAAKBcAACYXAADFEwAAXRYAAOgRAABnEwAAZRMAAPIWAABzEwAAHRcAAPkWAADzEQAAzw4AAM4VAAAMEgAAsxEAAKURAABhEAAAMhcAALsTAEH5NQsBAQBBkDYL4AEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB/TcLAQEAQZE4C14CAwICAgICAAACAgACAgACAgICAgICAgICAAQAAAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEH9OQsBAQBBkToLXgIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAQfA7Cw1sb3NlZWVwLWFsaXZlAEGJPAsBAQBBoDwL4AEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBBiT4LAQEAQaA+C+cBAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAEGwwAALXwEBAAEBAQEBAAABAQABAQABAQEBAQEBAQEBAAAAAAAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAEGQwgALIWVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgBBwMIACy1yYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AQfnCAAsFAQIAAQMAQZDDAAvgAQQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH5xAALBQECAAEDAEGQxQAL4AEEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cYACwQBAAABAEGRxwAL3wEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAEH6yAALBAEAAAIAQZDJAAtfAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAQfrKAAsEAQAAAQBBkMsACwEBAEGqywALQQIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAEH6zAALBAEAAAEAQZDNAAsBAQBBms0ACwYCAAAAAAIAQbHNAAs6AwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB8M4AC5YBTk9VTkNFRUNLT1VUTkVDVEVURUNSSUJFTFVTSEVURUFEU0VBUkNIUkdFQ1RJVklUWUxFTkRBUlZFT1RJRllQVElPTlNDSFNFQVlTVEFUQ0hHRU9SRElSRUNUT1JUUkNIUEFSQU1FVEVSVVJDRUJTQ1JJQkVBUkRPV05BQ0VJTkROS0NLVUJTQ1JJQkVIVFRQL0FEVFAv', 'base64')\n", "'use strict'\n\nconst { Buffer } = require('node:buffer')\n\nmodule.exports = Buffer.from('AGFzbQEAAAABJwdgAX8Bf2ADf39/AX9gAX8AYAJ/fwBgBH9/f38Bf2AAAGADf39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQAEA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAAy0sBQYAAAIAAAAAAAACAQIAAgICAAADAAAAAAMDAwMBAQEBAQEBAQEAAAIAAAAEBQFwARISBQMBAAIGCAF/AUGA1AQLB9EFIgZtZW1vcnkCAAtfaW5pdGlhbGl6ZQAIGV9faW5kaXJlY3RfZnVuY3Rpb25fdGFibGUBAAtsbGh0dHBfaW5pdAAJGGxsaHR0cF9zaG91bGRfa2VlcF9hbGl2ZQAvDGxsaHR0cF9hbGxvYwALBm1hbGxvYwAxC2xsaHR0cF9mcmVlAAwEZnJlZQAMD2xsaHR0cF9nZXRfdHlwZQANFWxsaHR0cF9nZXRfaHR0cF9tYWpvcgAOFWxsaHR0cF9nZXRfaHR0cF9taW5vcgAPEWxsaHR0cF9nZXRfbWV0aG9kABAWbGxodHRwX2dldF9zdGF0dXNfY29kZQAREmxsaHR0cF9nZXRfdXBncmFkZQASDGxsaHR0cF9yZXNldAATDmxsaHR0cF9leGVjdXRlABQUbGxodHRwX3NldHRpbmdzX2luaXQAFQ1sbGh0dHBfZmluaXNoABYMbGxodHRwX3BhdXNlABcNbGxodHRwX3Jlc3VtZQAYG2xsaHR0cF9yZXN1bWVfYWZ0ZXJfdXBncmFkZQAZEGxsaHR0cF9nZXRfZXJybm8AGhdsbGh0dHBfZ2V0X2Vycm9yX3JlYXNvbgAbF2xsaHR0cF9zZXRfZXJyb3JfcmVhc29uABwUbGxodHRwX2dldF9lcnJvcl9wb3MAHRFsbGh0dHBfZXJybm9fbmFtZQAeEmxsaHR0cF9tZXRob2RfbmFtZQAfEmxsaHR0cF9zdGF0dXNfbmFtZQAgGmxsaHR0cF9zZXRfbGVu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PgtBhwEMPQtBiAEMPAtBiQEMOwtBigEMOgtBiwEMOQtBjAEMOAtBjQEMNwtBjgEMNgtBjwEMNQtBkAEMNAtBkQEMMwtBkgEMMgtBkwEMMQtBlAEMMAtBlQEMLwtBlgEMLgtBlwEMLQtBmAEMLAtBmQEMKwtBmgEMKgtBmwEMKQtBnAEMKAtBnQEMJwtBngEMJgtBnwEMJQtBoAEMJAtBoQEMIwtBogEMIgtBowEMIQtBpAEMIAtBpQEMHwtBpgEMHgtBpwEMHQtBqAEMHAtBqQEMGwtBqgEMGgtBqwEMGQtBrAEMGAtBrQEMFwtBrgEMFgtBAQwVC0GvAQwUC0GwAQwTC0GxAQwSC0GzAQwRC0GyAQwQC0G0AQwPC0G1AQwOC0G2AQwNC0G3AQwMC0G4AQwLC0G5AQwKC0G6AQwJC0G7AQwIC0HGAQwHC0G8AQwGC0G9AQwFC0G+AQwEC0G/AQwDC0HAAQwCC0HCAQwBC0HBAQshAwNAAkACQAJAAkACQAJAAkACQAJAIAICfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAgJ/AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACfwJAAkACfwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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iQEhAwykAgtBASABLQAAQd8ARw1nGiABQQFqIQEMXgtBigEhAyABIARGDaICIAIoAgAiACAEIAFraiEFIAEgAGtBAWohBgNAIAEtAAAgAEGMzwBqLQAARw1kIABBAUYN+gEgAEEBaiEAIAQgAUEBaiIBRw0ACyACIAU2AgAMogILQYsBIQMgASAERg2hAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGOzwBqLQAARw1kIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyiAgsgAkEANgIAIAZBAWohAUECDGULQYwBIQMgASAERg2gAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHwzwBqLQAARw1jIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyhAgsgAkEANgIAIAZBAWohAUEfDGQLQY0BIQMgASAERg2fAiACKAIAIgAgBCABa2ohBSABIABrQQFqIQYCQANAIAEtAAAgAEHyzwBqLQAARw1iIABBAUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAygAgsgAkEANgIAIAZBAWohAUEJDGMLIAEgBEYEQEGOASEDDJ8CCwJAAkAgAS0AAEHJAGsOBwBiYmJiYgFiCyABQQFqIQFB+AAhAwyGAgsgAUEBaiEBQfkAIQMMhQILQY8BIQMgASAERg2dAiACKAIAIgAgBCABa2ohBSABIABrQQVqIQYCQANAIAEtAAAgAEGRzwBqLQAARw1gIABBBUYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAyeAgsgAkEANgIAIAZBAWohAUEYDGELQZABIQMgASAERg2cAiACKAIAIgAgBCABa2ohBSABIABrQQJqIQYCQANAIAEtAAAgAEGXzwBqLQAARw1fIABBAkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAydAgsgAkEANgIAIAZBAWohAUEXDGALQZEBIQMgASAERg2bAiACKAIAIgAgBCABa2ohBSABIABrQQZqIQYCQANAIAEtAAAgAEGazwBqLQAARw1eIABBBkYNASAAQQFqIQAgBCABQQFqIgFHDQALIAIgBTYCAAycAgsgAkEANgIAIAZBAWohAUEV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JSIARQ0RIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMtAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0gIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMswELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0iIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMsgELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0OIAJB5QA2AhwgAiABNgIUIAIgADYCDEEAIQMMsQELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0dIAJB0wA2AhwgAiABNgIUIAIgADYCDEEAIQMMsAELIAIoAgQhACACQQA2AgQgAiAAIAEQJSIARQ0fIAJB0gA2AhwgAiABNgIUIAIgADYCDEEAIQMMrwELIABBP0cNASABQQFqCyEBQQUhAwyUAQtBACEDIAJBADYCHCACIAE2AhQgAkH9EjYCECACQQc2AgwMrAELIAJBADYCHCACIAE2AhQgAkHcCDYCECACQQc2AgxBACEDDKsBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNByACQeUANgIcIAIgATYCFCACIAA2AgxBACEDDKoBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNFiACQdMANgIcIAIgATYCFCACIAA2AgxBACEDDKkBCyACKAIEIQAgAkEANgIEIAIgACABECUiAEUNGCACQdIANgIcIAIgATYCFCACIAA2AgxBACEDDKgBCyACQQA2AhwgAiABNgIUIAJBxgo2AhAgAkEHNgIMQQAhAwynAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQMgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwymAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRIgAkHTADYCHCACIAE2AhQgAiAANgIMQQAhAwylAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDRQgAkHSADYCHCACIAE2AhQgAiAANgIMQQAhAwykAQsgAigCBCEAIAJBADYCBCACIAAgARAlIgBFDQAgAkHlADYCHCACIAE2AhQgAiAANgIMQQAhAwyjAQtB1QAhAwyJAQsgAEEVRwRAIAJBADYCHCACIAE2AhQgAkG5DTYCECACQRo2AgxB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AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIABB5ABrDvQDY2IAAWFhYWFhYQIDBAVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhBgcICQoLDA0OD2FhYWFhEGFhYWFhYWFhYWFhEWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYRITFBUWFxgZGhthYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhHB0eHyAhIiMkJSYnKCkqKywtLi8wMTIzNDU2YTc4OTphYWFhYWFhYTthYWE8YWFhYT0+P2FhYWFhYWFhQGFhQWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYUJDREVGR0hJSktMTU5PUFFSU2FhYWFhYWFhVFVWV1hZWlthXF1hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFeYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhX2BhC0HhJw8LQaQhDwtByywPC0H+MQ8LQcAkDwtBqyQPC0GNKA8LQeImDwtBgDAPC0G5Lw8LQdckDwtB7x8PC0HhHw8LQfofDwtB8iAPC0GoLw8LQa4yDwtBiDAPC0HsJw8LQYIiDwtBjh0PC0HQLg8LQcojDwtBxTIPC0HfHA8LQdIcDwtBxCAPC0HXIA8LQaIfDwtB7S4PC0GrMA8LQdQlDwtBzC4PC0H6Lg8LQfwrDwtB0jAPC0HxHQ8LQbsgDwtB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AAADAEGUCAsFBAAAAAUAQaQICwkGAAAABwAAAAgAQdwIC4otSW52YWxpZCBjaGFyIGluIHVybCBxdWVyeQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2JvZHkAQ29udGVudC1MZW5ndGggb3ZlcmZsb3cAQ2h1bmsgc2l6ZSBvdmVyZmxvdwBSZXNwb25zZSBvdmVyZmxvdwBJbnZhbGlkIG1ldGhvZCBmb3IgSFRUUC94LnggcmVxdWVzdABJbnZhbGlkIG1ldGhvZCBmb3IgUlRTUC94LnggcmVxdWVzdABFeHBlY3RlZCBTT1VSQ0UgbWV0aG9kIGZvciBJQ0UveC54IHJlcXVlc3QASW52YWxpZCBjaGFyIGluIHVybCBmcmFnbWVudCBzdGFydABFeHBlY3RlZCBkb3QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9zdGF0dXMASW52YWxpZCByZXNwb25zZSBzdGF0dXMASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucwBVc2VyIGNhbGxiYWNrIGVycm9yAGBvbl9yZXNldGAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2hlYWRlcmAgY2FsbGJhY2sgZXJyb3IAYG9uX21lc3NhZ2VfYmVnaW5gIGNhbGxiYWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwBB+TULAQEAQZA2C+ABAQECAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQf03CwEBAEGROAteAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgBB/TkLAQEAQZE6C14CAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAEHwOwsNbG9zZWVlcC1hbGl2ZQBBiTwLAQEAQaA8C+ABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQYk+CwEBAEGgPgvnAQEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZABBsMAAC18BAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQBBkMIACyFlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AQcDCAAstcmFuc2Zlci1lbmNvZGluZ3BncmFkZQ0KDQoNClNNDQoNClRUUC9DRS9UU1AvAEH5wgALBQECAAEDAEGQwwAL4AEEAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+cQACwUBAgABAwBBkMUAC+ABBAEBBQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAQfnGAAsEAQAAAQBBkccAC98BAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQBB+sgACwQBAAACAEGQyQALXwMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAEH6ygALBAEAAAEAQZDLAAsBAQBBqssAC0ECAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwBB+swACwQBAAABAEGQzQALAQEAQZrNAAsGAgAAAAACAEGxzQALOgMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAQfDOAAuWAU5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw==', 'base64')\n", "'use strict'\n\nconst corsSafeListedMethods = /** @type {const} */ (['GET', 'HEAD', 'POST'])\nconst corsSafeListedMethodsSet = new Set(corsSafeListedMethods)\n\nconst nullBodyStatus = /** @type {const} */ ([101, 204, 205, 304])\n\nconst redirectStatus = /** @type {const} */ ([301, 302, 303, 307, 308])\nconst redirectStatusSet = new Set(redirectStatus)\n\n/**\n * @see https://fetch.spec.whatwg.org/#block-bad-port\n */\nconst badPorts = /** @type {const} */ ([\n  '1', '7', '9', '11', '13', '15', '17', '19', '20', '21', '22', '23', '25', '37', '42', '43', '53', '69', '77', '79',\n  '87', '95', '101', '102', '103', '104', '109', '110', '111', '113', '115', '117', '119', '123', '135', '137',\n  '139', '143', '161', '179', '389', '427', '465', '512', '513', '514', '515', '526', '530', '531', '532',\n  '540', '548', '554', '556', '563', '587', '601', '636', '989', '990', '993', '995', '1719', '1720', '1723',\n  '2049', '3659', '4045', '4190', '5060', '5061', '6000', '6566', '6665', '6666', '6667', '6668', '6669', '6679',\n  '6697', '10080'\n])\nconst badPortsSet = new Set(badPorts)\n\n/**\n * @see https://w3c.github.io/webappsec-referrer-policy/#referrer-policies\n */\nconst referrerPolicy = /** @type {const} */ ([\n  '',\n  'no-referrer',\n  'no-referrer-when-downgrade',\n  'same-origin',\n  'origin',\n  'strict-origin',\n  'origin-when-cross-origin',\n  'strict-origin-when-cross-origin',\n  'unsafe-url'\n])\nconst referrerPolicySet = new Set(referrerPolicy)\n\nconst requestRedirect = /** @type {const} */ (['follow', 'manual', 'error'])\n\nconst safeMethods = /** @type {const} */ (['GET', 'HEAD', 'OPTIONS', 'TRACE'])\nconst safeMethodsSet = new Set(safeMethods)\n\nconst requestMode = /** @type {const} */ (['navigate', 'same-origin', 'no-cors', 'cors'])\n\nconst requestCredentials = /** @type {const} */ (['omit', 'same-origin', 'include'])\n\nconst requestCache = /** @type {const} */ ([\n  'default',\n  'no-store',\n  'reload',\n  'no-cache',\n  'force-cache',\n  'only-if-cached'\n])\n\n/**\n * @see https://fetch.spec.whatwg.org/#request-body-header-name\n */\nconst requestBodyHeader = /** @type {const} */ ([\n  'content-encoding',\n  'content-language',\n  'content-location',\n  'content-type',\n  // See https://github.com/nodejs/undici/issues/2021\n  // 'Content-Length' is a forbidden header name, which is typically\n  // removed in the Headers implementation. However, undici doesn't\n  // filter out headers, so we add it here.\n  'content-length'\n])\n\n/**\n * @see https://fetch.spec.whatwg.org/#enumdef-requestduplex\n */\nconst requestDuplex = /** @type {const} */ ([\n  'half'\n])\n\n/**\n * @see http://fetch.spec.whatwg.org/#forbidden-method\n */\nconst forbiddenMethods = /** @type {const} */ (['CONNECT', 'TRACE', 'TRACK'])\nconst forbiddenMethodsSet = new Set(forbiddenMethods)\n\nconst subresource = /** @type {const} */ ([\n  'audio',\n  'audioworklet',\n  'font',\n  'image',\n  'manifest',\n  'paintworklet',\n  'script',\n  'style',\n  'track',\n  'video',\n  'xslt',\n  ''\n])\nconst subresourceSet = new Set(subresource)\n\nmodule.exports = {\n  subresource,\n  forbiddenMethods,\n  requestBodyHeader,\n  referrerPolicy,\n  requestRedirect,\n  requestMode,\n  requestCredentials,\n  requestCache,\n  redirectStatus,\n  corsSafeListedMethods,\n  nullBodyStatus,\n  safeMethods,\n  badPorts,\n  requestDuplex,\n  subresourceSet,\n  badPortsSet,\n  redirectStatusSet,\n  corsSafeListedMethodsSet,\n  safeMethodsSet,\n  forbiddenMethodsSet,\n  referrerPolicySet\n}\n", "'use strict'\n\n// In case of breaking changes, increase the version\n// number to avoid conflicts.\nconst globalOrigin = Symbol.for('undici.globalOrigin.1')\n\nfunction getGlobalOrigin () {\n  return globalThis[globalOrigin]\n}\n\nfunction setGlobalOrigin (newOrigin) {\n  if (newOrigin === undefined) {\n    Object.defineProperty(globalThis, globalOrigin, {\n      value: undefined,\n      writable: true,\n      enumerable: false,\n      configurable: false\n    })\n\n    return\n  }\n\n  const parsedURL = new URL(newOrigin)\n\n  if (parsedURL.protocol !== 'http:' && parsedURL.protocol !== 'https:') {\n    throw new TypeError(`Only http & https urls are allowed, received ${parsedURL.protocol}`)\n  }\n\n  Object.defineProperty(globalThis, globalOrigin, {\n    value: parsedURL,\n    writable: true,\n    enumerable: false,\n    configurable: false\n  })\n}\n\nmodule.exports = {\n  getGlobalOrigin,\n  setGlobalOrigin\n}\n", "'use strict'\n\nconst assert = require('node:assert')\n\nconst encoder = new TextEncoder()\n\n/**\n * @see https://mimesniff.spec.whatwg.org/#http-token-code-point\n */\nconst HTTP_TOKEN_CODEPOINTS = /^[!#$%&'*+\\-.^_|~A-Za-z0-9]+$/\nconst HTTP_WHITESPACE_REGEX = /[\\u000A\\u000D\\u0009\\u0020]/ // eslint-disable-line\nconst ASCII_WHITESPACE_REPLACE_REGEX = /[\\u0009\\u000A\\u000C\\u000D\\u0020]/g // eslint-disable-line\n/**\n * @see https://mimesniff.spec.whatwg.org/#http-quoted-string-token-code-point\n */\nconst HTTP_QUOTED_STRING_TOKENS = /^[\\u0009\\u0020-\\u007E\\u0080-\\u00FF]+$/ // eslint-disable-line\n\n// https://fetch.spec.whatwg.org/#data-url-processor\n/** @param {URL} dataURL */\nfunction dataURLProcessor (dataURL) {\n  // 1. Assert: dataURL\u2019s scheme is \"data\".\n  assert(dataURL.protocol === 'data:')\n\n  // 2. Let input be the result of running the URL\n  // serializer on dataURL with exclude fragment\n  // set to true.\n  let input = URLSerializer(dataURL, true)\n\n  // 3. Remove the leading \"data:\" string from input.\n  input = input.slice(5)\n\n  // 4. Let position point at the start of input.\n  const position = { position: 0 }\n\n  // 5. Let mimeType be the result of collecting a\n  // sequence of code points that are not equal\n  // to U+002C (,), given position.\n  let mimeType = collectASequenceOfCodePointsFast(\n    ',',\n    input,\n    position\n  )\n\n  // 6. Strip leading and trailing ASCII whitespace\n  // from mimeType.\n  // Undici implementation note: we need to store the\n  // length because if the mimetype has spaces removed,\n  // the wrong amount will be sliced from the input in\n  // step #9\n  const mimeTypeLength = mimeType.length\n  mimeType = removeASCIIWhitespace(mimeType, true, true)\n\n  // 7. If position is past the end of input, then\n  // return failure\n  if (position.position >= input.length) {\n    return 'failure'\n  }\n\n  // 8. Advance position by 1.\n  position.position++\n\n  // 9. Let encodedBody be the remainder of input.\n  const encodedBody = input.slice(mimeTypeLength + 1)\n\n  // 10. Let body be the percent-decoding of encodedBody.\n  let body = stringPercentDecode(encodedBody)\n\n  // 11. If mimeType ends with U+003B (;), followed by\n  // zero or more U+0020 SPACE, followed by an ASCII\n  // case-insensitive match for \"base64\", then:\n  if (/;(\\u0020){0,}base64$/i.test(mimeType)) {\n    // 1. Let stringBody be the isomorphic decode of body.\n    const stringBody = isomorphicDecode(body)\n\n    // 2. Set body to the forgiving-base64 decode of\n    // stringBody.\n    body = forgivingBase64(stringBody)\n\n    // 3. If body is failure, then return failure.\n    if (body === 'failure') {\n      return 'failure'\n    }\n\n    // 4. Remove the last 6 code points from mimeType.\n    mimeType = mimeType.slice(0, -6)\n\n    // 5. Remove trailing U+0020 SPACE code points from mimeType,\n    // if any.\n    mimeType = mimeType.replace(/(\\u0020)+$/, '')\n\n    // 6. Remove the last U+003B (;) code point from mimeType.\n    mimeType = mimeType.slice(0, -1)\n  }\n\n  // 12. If mimeType starts with U+003B (;), then prepend\n  // \"text/plain\" to mimeType.\n  if (mimeType.startsWith(';')) {\n    mimeType = 'text/plain' + mimeType\n  }\n\n  // 13. Let mimeTypeRecord be the result of parsing\n  // mimeType.\n  let mimeTypeRecord = parseMIMEType(mimeType)\n\n  // 14. If mimeTypeRecord is failure, then set\n  // mimeTypeRecord to text/plain;charset=US-ASCII.\n  if (mimeTypeRecord === 'failure') {\n    mimeTypeRecord = parseMIMEType('text/plain;charset=US-ASCII')\n  }\n\n  // 15. Return a new data: URL struct whose MIME\n  // type is mimeTypeRecord and body is body.\n  // https://fetch.spec.whatwg.org/#data-url-struct\n  return { mimeType: mimeTypeRecord, body }\n}\n\n// https://url.spec.whatwg.org/#concept-url-serializer\n/**\n * @param {URL} url\n * @param {boolean} excludeFragment\n */\nfunction URLSerializer (url, excludeFragment = false) {\n  if (!excludeFragment) {\n    return url.href\n  }\n\n  const href = url.href\n  const hashLength = url.hash.length\n\n  const serialized = hashLength === 0 ? href : href.substring(0, href.length - hashLength)\n\n  if (!hashLength && href.endsWith('#')) {\n    return serialized.slice(0, -1)\n  }\n\n  return serialized\n}\n\n// https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points\n/**\n * @param {(char: string) => boolean} condition\n * @param {string} input\n * @param {{ position: number }} position\n */\nfunction collectASequenceOfCodePoints (condition, input, position) {\n  // 1. Let result be the empty string.\n  let result = ''\n\n  // 2. While position doesn\u2019t point past the end of input and the\n  // code point at position within input meets the condition condition:\n  while (position.position < input.length && condition(input[position.position])) {\n    // 1. Append that code point to the end of result.\n    result += input[position.position]\n\n    // 2. Advance position by 1.\n    position.position++\n  }\n\n  // 3. Return result.\n  return result\n}\n\n/**\n * A faster collectASequenceOfCodePoints that only works when comparing a single character.\n * @param {string} char\n * @param {string} input\n * @param {{ position: number }} position\n */\nfunction collectASequenceOfCodePointsFast (char, input, position) {\n  const idx = input.indexOf(char, position.position)\n  const start = position.position\n\n  if (idx === -1) {\n    position.position = input.length\n    return input.slice(start)\n  }\n\n  position.position = idx\n  return input.slice(start, position.position)\n}\n\n// https://url.spec.whatwg.org/#string-percent-decode\n/** @param {string} input */\nfunction stringPercentDecode (input) {\n  // 1. Let bytes be the UTF-8 encoding of input.\n  const bytes = encoder.encode(input)\n\n  // 2. Return the percent-decoding of bytes.\n  return percentDecode(bytes)\n}\n\n/**\n * @param {number} byte\n */\nfunction isHexCharByte (byte) {\n  // 0-9 A-F a-f\n  return (byte >= 0x30 && byte <= 0x39) || (byte >= 0x41 && byte <= 0x46) || (byte >= 0x61 && byte <= 0x66)\n}\n\n/**\n * @param {number} byte\n */\nfunction hexByteToNumber (byte) {\n  return (\n    // 0-9\n    byte >= 0x30 && byte <= 0x39\n      ? (byte - 48)\n    // Convert to uppercase\n    // ((byte & 0xDF) - 65) + 10\n      : ((byte & 0xDF) - 55)\n  )\n}\n\n// https://url.spec.whatwg.org/#percent-decode\n/** @param {Uint8Array} input */\nfunction percentDecode (input) {\n  const length = input.length\n  // 1. Let output be an empty byte sequence.\n  /** @type {Uint8Array} */\n  const output = new Uint8Array(length)\n  let j = 0\n  // 2. For each byte byte in input:\n  for (let i = 0; i < length; ++i) {\n    const byte = input[i]\n\n    // 1. If byte is not 0x25 (%), then append byte to output.\n    if (byte !== 0x25) {\n      output[j++] = byte\n\n    // 2. Otherwise, if byte is 0x25 (%) and the next two bytes\n    // after byte in input are not in the ranges\n    // 0x30 (0) to 0x39 (9), 0x41 (A) to 0x46 (F),\n    // and 0x61 (a) to 0x66 (f), all inclusive, append byte\n    // to output.\n    } else if (\n      byte === 0x25 &&\n      !(isHexCharByte(input[i + 1]) && isHexCharByte(input[i + 2]))\n    ) {\n      output[j++] = 0x25\n\n    // 3. Otherwise:\n    } else {\n      // 1. Let bytePoint be the two bytes after byte in input,\n      // decoded, and then interpreted as hexadecimal number.\n      // 2. Append a byte whose value is bytePoint to output.\n      output[j++] = (hexByteToNumber(input[i + 1]) << 4) | hexByteToNumber(input[i + 2])\n\n      // 3. Skip the next two bytes in input.\n      i += 2\n    }\n  }\n\n  // 3. Return output.\n  return length === j ? output : output.subarray(0, j)\n}\n\n// https://mimesniff.spec.whatwg.org/#parse-a-mime-type\n/** @param {string} input */\nfunction parseMIMEType (input) {\n  // 1. Remove any leading and trailing HTTP whitespace\n  // from input.\n  input = removeHTTPWhitespace(input, true, true)\n\n  // 2. Let position be a position variable for input,\n  // initially pointing at the start of input.\n  const position = { position: 0 }\n\n  // 3. Let type be the result of collecting a sequence\n  // of code points that are not U+002F (/) from\n  // input, given position.\n  const type = collectASequenceOfCodePointsFast(\n    '/',\n    input,\n    position\n  )\n\n  // 4. If type is the empty string or does not solely\n  // contain HTTP token code points, then return failure.\n  // https://mimesniff.spec.whatwg.org/#http-token-code-point\n  if (type.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(type)) {\n    return 'failure'\n  }\n\n  // 5. If position is past the end of input, then return\n  // failure\n  if (position.position > input.length) {\n    return 'failure'\n  }\n\n  // 6. Advance position by 1. (This skips past U+002F (/).)\n  position.position++\n\n  // 7. Let subtype be the result of collecting a sequence of\n  // code points that are not U+003B (;) from input, given\n  // position.\n  let subtype = collectASequenceOfCodePointsFast(\n    ';',\n    input,\n    position\n  )\n\n  // 8. Remove any trailing HTTP whitespace from subtype.\n  subtype = removeHTTPWhitespace(subtype, false, true)\n\n  // 9. If subtype is the empty string or does not solely\n  // contain HTTP token code points, then return failure.\n  if (subtype.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(subtype)) {\n    return 'failure'\n  }\n\n  const typeLowercase = type.toLowerCase()\n  const subtypeLowercase = subtype.toLowerCase()\n\n  // 10. Let mimeType be a new MIME type record whose type\n  // is type, in ASCII lowercase, and subtype is subtype,\n  // in ASCII lowercase.\n  // https://mimesniff.spec.whatwg.org/#mime-type\n  const mimeType = {\n    type: typeLowercase,\n    subtype: subtypeLowercase,\n    /** @type {Map<string, string>} */\n    parameters: new Map(),\n    // https://mimesniff.spec.whatwg.org/#mime-type-essence\n    essence: `${typeLowercase}/${subtypeLowercase}`\n  }\n\n  // 11. While position is not past the end of input:\n  while (position.position < input.length) {\n    // 1. Advance position by 1. (This skips past U+003B (;).)\n    position.position++\n\n    // 2. Collect a sequence of code points that are HTTP\n    // whitespace from input given position.\n    collectASequenceOfCodePoints(\n      // https://fetch.spec.whatwg.org/#http-whitespace\n      char => HTTP_WHITESPACE_REGEX.test(char),\n      input,\n      position\n    )\n\n    // 3. Let parameterName be the result of collecting a\n    // sequence of code points that are not U+003B (;)\n    // or U+003D (=) from input, given position.\n    let parameterName = collectASequenceOfCodePoints(\n      (char) => char !== ';' && char !== '=',\n      input,\n      position\n    )\n\n    // 4. Set parameterName to parameterName, in ASCII\n    // lowercase.\n    parameterName = parameterName.toLowerCase()\n\n    // 5. If position is not past the end of input, then:\n    if (position.position < input.length) {\n      // 1. If the code point at position within input is\n      // U+003B (;), then continue.\n      if (input[position.position] === ';') {\n        continue\n      }\n\n      // 2. Advance position by 1. (This skips past U+003D (=).)\n      position.position++\n    }\n\n    // 6. If position is past the end of input, then break.\n    if (position.position > input.length) {\n      break\n    }\n\n    // 7. Let parameterValue be null.\n    let parameterValue = null\n\n    // 8. If the code point at position within input is\n    // U+0022 (\"), then:\n    if (input[position.position] === '\"') {\n      // 1. Set parameterValue to the result of collecting\n      // an HTTP quoted string from input, given position\n      // and the extract-value flag.\n      parameterValue = collectAnHTTPQuotedString(input, position, true)\n\n      // 2. Collect a sequence of code points that are not\n      // U+003B (;) from input, given position.\n      collectASequenceOfCodePointsFast(\n        ';',\n        input,\n        position\n      )\n\n    // 9. Otherwise:\n    } else {\n      // 1. Set parameterValue to the result of collecting\n      // a sequence of code points that are not U+003B (;)\n      // from input, given position.\n      parameterValue = collectASequenceOfCodePointsFast(\n        ';',\n        input,\n        position\n      )\n\n      // 2. Remove any trailing HTTP whitespace from parameterValue.\n      parameterValue = removeHTTPWhitespace(parameterValue, false, true)\n\n      // 3. If parameterValue is the empty string, then continue.\n      if (parameterValue.length === 0) {\n        continue\n      }\n    }\n\n    // 10. If all of the following are true\n    // - parameterName is not the empty string\n    // - parameterName solely contains HTTP token code points\n    // - parameterValue solely contains HTTP quoted-string token code points\n    // - mimeType\u2019s parameters[parameterName] does not exist\n    // then set mimeType\u2019s parameters[parameterName] to parameterValue.\n    if (\n      parameterName.length !== 0 &&\n      HTTP_TOKEN_CODEPOINTS.test(parameterName) &&\n      (parameterValue.length === 0 || HTTP_QUOTED_STRING_TOKENS.test(parameterValue)) &&\n      !mimeType.parameters.has(parameterName)\n    ) {\n      mimeType.parameters.set(parameterName, parameterValue)\n    }\n  }\n\n  // 12. Return mimeType.\n  return mimeType\n}\n\n// https://infra.spec.whatwg.org/#forgiving-base64-decode\n/** @param {string} data */\nfunction forgivingBase64 (data) {\n  // 1. Remove all ASCII whitespace from data.\n  data = data.replace(ASCII_WHITESPACE_REPLACE_REGEX, '')  // eslint-disable-line\n\n  let dataLength = data.length\n  // 2. If data\u2019s code point length divides by 4 leaving\n  // no remainder, then:\n  if (dataLength % 4 === 0) {\n    // 1. If data ends with one or two U+003D (=) code points,\n    // then remove them from data.\n    if (data.charCodeAt(dataLength - 1) === 0x003D) {\n      --dataLength\n      if (data.charCodeAt(dataLength - 1) === 0x003D) {\n        --dataLength\n      }\n    }\n  }\n\n  // 3. If data\u2019s code point length divides by 4 leaving\n  // a remainder of 1, then return failure.\n  if (dataLength % 4 === 1) {\n    return 'failure'\n  }\n\n  // 4. If data contains a code point that is not one of\n  //  U+002B (+)\n  //  U+002F (/)\n  //  ASCII alphanumeric\n  // then return failure.\n  if (/[^+/0-9A-Za-z]/.test(data.length === dataLength ? data : data.substring(0, dataLength))) {\n    return 'failure'\n  }\n\n  const buffer = Buffer.from(data, 'base64')\n  return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength)\n}\n\n// https://fetch.spec.whatwg.org/#collect-an-http-quoted-string\n// tests: https://fetch.spec.whatwg.org/#example-http-quoted-string\n/**\n * @param {string} input\n * @param {{ position: number }} position\n * @param {boolean?} extractValue\n */\nfunction collectAnHTTPQuotedString (input, position, extractValue) {\n  // 1. Let positionStart be position.\n  const positionStart = position.position\n\n  // 2. Let value be the empty string.\n  let value = ''\n\n  // 3. Assert: the code point at position within input\n  // is U+0022 (\").\n  assert(input[position.position] === '\"')\n\n  // 4. Advance position by 1.\n  position.position++\n\n  // 5. While true:\n  while (true) {\n    // 1. Append the result of collecting a sequence of code points\n    // that are not U+0022 (\") or U+005C (\\) from input, given\n    // position, to value.\n    value += collectASequenceOfCodePoints(\n      (char) => char !== '\"' && char !== '\\\\',\n      input,\n      position\n    )\n\n    // 2. If position is past the end of input, then break.\n    if (position.position >= input.length) {\n      break\n    }\n\n    // 3. Let quoteOrBackslash be the code point at position within\n    // input.\n    const quoteOrBackslash = input[position.position]\n\n    // 4. Advance position by 1.\n    position.position++\n\n    // 5. If quoteOrBackslash is U+005C (\\), then:\n    if (quoteOrBackslash === '\\\\') {\n      // 1. If position is past the end of input, then append\n      // U+005C (\\) to value and break.\n      if (position.position >= input.length) {\n        value += '\\\\'\n        break\n      }\n\n      // 2. Append the code point at position within input to value.\n      value += input[position.position]\n\n      // 3. Advance position by 1.\n      position.position++\n\n    // 6. Otherwise:\n    } else {\n      // 1. Assert: quoteOrBackslash is U+0022 (\").\n      assert(quoteOrBackslash === '\"')\n\n      // 2. Break.\n      break\n    }\n  }\n\n  // 6. If the extract-value flag is set, then return value.\n  if (extractValue) {\n    return value\n  }\n\n  // 7. Return the code points from positionStart to position,\n  // inclusive, within input.\n  return input.slice(positionStart, position.position)\n}\n\n/**\n * @see https://mimesniff.spec.whatwg.org/#serialize-a-mime-type\n */\nfunction serializeAMimeType (mimeType) {\n  assert(mimeType !== 'failure')\n  const { parameters, essence } = mimeType\n\n  // 1. Let serialization be the concatenation of mimeType\u2019s\n  //    type, U+002F (/), and mimeType\u2019s subtype.\n  let serialization = essence\n\n  // 2. For each name \u2192 value of mimeType\u2019s parameters:\n  for (let [name, value] of parameters.entries()) {\n    // 1. Append U+003B (;) to serialization.\n    serialization += ';'\n\n    // 2. Append name to serialization.\n    serialization += name\n\n    // 3. Append U+003D (=) to serialization.\n    serialization += '='\n\n    // 4. If value does not solely contain HTTP token code\n    //    points or value is the empty string, then:\n    if (!HTTP_TOKEN_CODEPOINTS.test(value)) {\n      // 1. Precede each occurrence of U+0022 (\") or\n      //    U+005C (\\) in value with U+005C (\\).\n      value = value.replace(/(\\\\|\")/g, '\\\\$1')\n\n      // 2. Prepend U+0022 (\") to value.\n      value = '\"' + value\n\n      // 3. Append U+0022 (\") to value.\n      value += '\"'\n    }\n\n    // 5. Append value to serialization.\n    serialization += value\n  }\n\n  // 3. Return serialization.\n  return serialization\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#http-whitespace\n * @param {number} char\n */\nfunction isHTTPWhiteSpace (char) {\n  // \"\\r\\n\\t \"\n  return char === 0x00d || char === 0x00a || char === 0x009 || char === 0x020\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#http-whitespace\n * @param {string} str\n * @param {boolean} [leading=true]\n * @param {boolean} [trailing=true]\n */\nfunction removeHTTPWhitespace (str, leading = true, trailing = true) {\n  return removeChars(str, leading, trailing, isHTTPWhiteSpace)\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#ascii-whitespace\n * @param {number} char\n */\nfunction isASCIIWhitespace (char) {\n  // \"\\r\\n\\t\\f \"\n  return char === 0x00d || char === 0x00a || char === 0x009 || char === 0x00c || char === 0x020\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#strip-leading-and-trailing-ascii-whitespace\n * @param {string} str\n * @param {boolean} [leading=true]\n * @param {boolean} [trailing=true]\n */\nfunction removeASCIIWhitespace (str, leading = true, trailing = true) {\n  return removeChars(str, leading, trailing, isASCIIWhitespace)\n}\n\n/**\n * @param {string} str\n * @param {boolean} leading\n * @param {boolean} trailing\n * @param {(charCode: number) => boolean} predicate\n * @returns\n */\nfunction removeChars (str, leading, trailing, predicate) {\n  let lead = 0\n  let trail = str.length - 1\n\n  if (leading) {\n    while (lead < str.length && predicate(str.charCodeAt(lead))) lead++\n  }\n\n  if (trailing) {\n    while (trail > 0 && predicate(str.charCodeAt(trail))) trail--\n  }\n\n  return lead === 0 && trail === str.length - 1 ? str : str.slice(lead, trail + 1)\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#isomorphic-decode\n * @param {Uint8Array} input\n * @returns {string}\n */\nfunction isomorphicDecode (input) {\n  // 1. To isomorphic decode a byte sequence input, return a string whose code point\n  //    length is equal to input\u2019s length and whose code points have the same values\n  //    as the values of input\u2019s bytes, in the same order.\n  const length = input.length\n  if ((2 << 15) - 1 > length) {\n    return String.fromCharCode.apply(null, input)\n  }\n  let result = ''; let i = 0\n  let addition = (2 << 15) - 1\n  while (i < length) {\n    if (i + addition > length) {\n      addition = length - i\n    }\n    result += String.fromCharCode.apply(null, input.subarray(i, i += addition))\n  }\n  return result\n}\n\n/**\n * @see https://mimesniff.spec.whatwg.org/#minimize-a-supported-mime-type\n * @param {Exclude<ReturnType<typeof parseMIMEType>, 'failure'>} mimeType\n */\nfunction minimizeSupportedMimeType (mimeType) {\n  switch (mimeType.essence) {\n    case 'application/ecmascript':\n    case 'application/javascript':\n    case 'application/x-ecmascript':\n    case 'application/x-javascript':\n    case 'text/ecmascript':\n    case 'text/javascript':\n    case 'text/javascript1.0':\n    case 'text/javascript1.1':\n    case 'text/javascript1.2':\n    case 'text/javascript1.3':\n    case 'text/javascript1.4':\n    case 'text/javascript1.5':\n    case 'text/jscript':\n    case 'text/livescript':\n    case 'text/x-ecmascript':\n    case 'text/x-javascript':\n      // 1. If mimeType is a JavaScript MIME type, then return \"text/javascript\".\n      return 'text/javascript'\n    case 'application/json':\n    case 'text/json':\n      // 2. If mimeType is a JSON MIME type, then return \"application/json\".\n      return 'application/json'\n    case 'image/svg+xml':\n      // 3. If mimeType\u2019s essence is \"image/svg+xml\", then return \"image/svg+xml\".\n      return 'image/svg+xml'\n    case 'text/xml':\n    case 'application/xml':\n      // 4. If mimeType is an XML MIME type, then return \"application/xml\".\n      return 'application/xml'\n  }\n\n  // 2. If mimeType is a JSON MIME type, then return \"application/json\".\n  if (mimeType.subtype.endsWith('+json')) {\n    return 'application/json'\n  }\n\n  // 4. If mimeType is an XML MIME type, then return \"application/xml\".\n  if (mimeType.subtype.endsWith('+xml')) {\n    return 'application/xml'\n  }\n\n  // 5. If mimeType is supported by the user agent, then return mimeType\u2019s essence.\n  // Technically, node doesn't support any mimetypes.\n\n  // 6. Return the empty string.\n  return ''\n}\n\nmodule.exports = {\n  dataURLProcessor,\n  URLSerializer,\n  collectASequenceOfCodePoints,\n  collectASequenceOfCodePointsFast,\n  stringPercentDecode,\n  parseMIMEType,\n  collectAnHTTPQuotedString,\n  serializeAMimeType,\n  removeChars,\n  removeHTTPWhitespace,\n  minimizeSupportedMimeType,\n  HTTP_TOKEN_CODEPOINTS,\n  isomorphicDecode\n}\n", "'use strict'\n\nconst { types, inspect } = require('node:util')\nconst { markAsUncloneable } = require('node:worker_threads')\nconst { toUSVString } = require('../../core/util')\n\n/** @type {import('../../../types/webidl').Webidl} */\nconst webidl = {}\nwebidl.converters = {}\nwebidl.util = {}\nwebidl.errors = {}\n\nwebidl.errors.exception = function (message) {\n  return new TypeError(`${message.header}: ${message.message}`)\n}\n\nwebidl.errors.conversionFailed = function (context) {\n  const plural = context.types.length === 1 ? '' : ' one of'\n  const message =\n    `${context.argument} could not be converted to` +\n    `${plural}: ${context.types.join(', ')}.`\n\n  return webidl.errors.exception({\n    header: context.prefix,\n    message\n  })\n}\n\nwebidl.errors.invalidArgument = function (context) {\n  return webidl.errors.exception({\n    header: context.prefix,\n    message: `\"${context.value}\" is an invalid ${context.type}.`\n  })\n}\n\n// https://webidl.spec.whatwg.org/#implements\nwebidl.brandCheck = function (V, I, opts) {\n  if (opts?.strict !== false) {\n    if (!(V instanceof I)) {\n      const err = new TypeError('Illegal invocation')\n      err.code = 'ERR_INVALID_THIS' // node compat.\n      throw err\n    }\n  } else {\n    if (V?.[Symbol.toStringTag] !== I.prototype[Symbol.toStringTag]) {\n      const err = new TypeError('Illegal invocation')\n      err.code = 'ERR_INVALID_THIS' // node compat.\n      throw err\n    }\n  }\n}\n\nwebidl.argumentLengthCheck = function ({ length }, min, ctx) {\n  if (length < min) {\n    throw webidl.errors.exception({\n      message: `${min} argument${min !== 1 ? 's' : ''} required, ` +\n               `but${length ? ' only' : ''} ${length} found.`,\n      header: ctx\n    })\n  }\n}\n\nwebidl.illegalConstructor = function () {\n  throw webidl.errors.exception({\n    header: 'TypeError',\n    message: 'Illegal constructor'\n  })\n}\n\n// https://tc39.es/ecma262/#sec-ecmascript-data-types-and-values\nwebidl.util.Type = function (V) {\n  switch (typeof V) {\n    case 'undefined': return 'Undefined'\n    case 'boolean': return 'Boolean'\n    case 'string': return 'String'\n    case 'symbol': return 'Symbol'\n    case 'number': return 'Number'\n    case 'bigint': return 'BigInt'\n    case 'function':\n    case 'object': {\n      if (V === null) {\n        return 'Null'\n      }\n\n      return 'Object'\n    }\n  }\n}\n\nwebidl.util.markAsUncloneable = markAsUncloneable || (() => {})\n// https://webidl.spec.whatwg.org/#abstract-opdef-converttoint\nwebidl.util.ConvertToInt = function (V, bitLength, signedness, opts) {\n  let upperBound\n  let lowerBound\n\n  // 1. If bitLength is 64, then:\n  if (bitLength === 64) {\n    // 1. Let upperBound be 2^53 \u2212 1.\n    upperBound = Math.pow(2, 53) - 1\n\n    // 2. If signedness is \"unsigned\", then let lowerBound be 0.\n    if (signedness === 'unsigned') {\n      lowerBound = 0\n    } else {\n      // 3. Otherwise let lowerBound be \u22122^53 + 1.\n      lowerBound = Math.pow(-2, 53) + 1\n    }\n  } else if (signedness === 'unsigned') {\n    // 2. Otherwise, if signedness is \"unsigned\", then:\n\n    // 1. Let lowerBound be 0.\n    lowerBound = 0\n\n    // 2. Let upperBound be 2^bitLength \u2212 1.\n    upperBound = Math.pow(2, bitLength) - 1\n  } else {\n    // 3. Otherwise:\n\n    // 1. Let lowerBound be -2^bitLength \u2212 1.\n    lowerBound = Math.pow(-2, bitLength) - 1\n\n    // 2. Let upperBound be 2^bitLength \u2212 1 \u2212 1.\n    upperBound = Math.pow(2, bitLength - 1) - 1\n  }\n\n  // 4. Let x be ? ToNumber(V).\n  let x = Number(V)\n\n  // 5. If x is \u22120, then set x to +0.\n  if (x === 0) {\n    x = 0\n  }\n\n  // 6. If the conversion is to an IDL type associated\n  //    with the [EnforceRange] extended attribute, then:\n  if (opts?.enforceRange === true) {\n    // 1. If x is NaN, +\u221E, or \u2212\u221E, then throw a TypeError.\n    if (\n      Number.isNaN(x) ||\n      x === Number.POSITIVE_INFINITY ||\n      x === Number.NEGATIVE_INFINITY\n    ) {\n      throw webidl.errors.exception({\n        header: 'Integer conversion',\n        message: `Could not convert ${webidl.util.Stringify(V)} to an integer.`\n      })\n    }\n\n    // 2. Set x to IntegerPart(x).\n    x = webidl.util.IntegerPart(x)\n\n    // 3. If x < lowerBound or x > upperBound, then\n    //    throw a TypeError.\n    if (x < lowerBound || x > upperBound) {\n      throw webidl.errors.exception({\n        header: 'Integer conversion',\n        message: `Value must be between ${lowerBound}-${upperBound}, got ${x}.`\n      })\n    }\n\n    // 4. Return x.\n    return x\n  }\n\n  // 7. If x is not NaN and the conversion is to an IDL\n  //    type associated with the [Clamp] extended\n  //    attribute, then:\n  if (!Number.isNaN(x) && opts?.clamp === true) {\n    // 1. Set x to min(max(x, lowerBound), upperBound).\n    x = Math.min(Math.max(x, lowerBound), upperBound)\n\n    // 2. Round x to the nearest integer, choosing the\n    //    even integer if it lies halfway between two,\n    //    and choosing +0 rather than \u22120.\n    if (Math.floor(x) % 2 === 0) {\n      x = Math.floor(x)\n    } else {\n      x = Math.ceil(x)\n    }\n\n    // 3. Return x.\n    return x\n  }\n\n  // 8. If x is NaN, +0, +\u221E, or \u2212\u221E, then return +0.\n  if (\n    Number.isNaN(x) ||\n    (x === 0 && Object.is(0, x)) ||\n    x === Number.POSITIVE_INFINITY ||\n    x === Number.NEGATIVE_INFINITY\n  ) {\n    return 0\n  }\n\n  // 9. Set x to IntegerPart(x).\n  x = webidl.util.IntegerPart(x)\n\n  // 10. Set x to x modulo 2^bitLength.\n  x = x % Math.pow(2, bitLength)\n\n  // 11. If signedness is \"signed\" and x \u2265 2^bitLength \u2212 1,\n  //    then return x \u2212 2^bitLength.\n  if (signedness === 'signed' && x >= Math.pow(2, bitLength) - 1) {\n    return x - Math.pow(2, bitLength)\n  }\n\n  // 12. Otherwise, return x.\n  return x\n}\n\n// https://webidl.spec.whatwg.org/#abstract-opdef-integerpart\nwebidl.util.IntegerPart = function (n) {\n  // 1. Let r be floor(abs(n)).\n  const r = Math.floor(Math.abs(n))\n\n  // 2. If n < 0, then return -1 \u00D7 r.\n  if (n < 0) {\n    return -1 * r\n  }\n\n  // 3. Otherwise, return r.\n  return r\n}\n\nwebidl.util.Stringify = function (V) {\n  const type = webidl.util.Type(V)\n\n  switch (type) {\n    case 'Symbol':\n      return `Symbol(${V.description})`\n    case 'Object':\n      return inspect(V)\n    case 'String':\n      return `\"${V}\"`\n    default:\n      return `${V}`\n  }\n}\n\n// https://webidl.spec.whatwg.org/#es-sequence\nwebidl.sequenceConverter = function (converter) {\n  return (V, prefix, argument, Iterable) => {\n    // 1. If Type(V) is not Object, throw a TypeError.\n    if (webidl.util.Type(V) !== 'Object') {\n      throw webidl.errors.exception({\n        header: prefix,\n        message: `${argument} (${webidl.util.Stringify(V)}) is not iterable.`\n      })\n    }\n\n    // 2. Let method be ? GetMethod(V, @@iterator).\n    /** @type {Generator} */\n    const method = typeof Iterable === 'function' ? Iterable() : V?.[Symbol.iterator]?.()\n    const seq = []\n    let index = 0\n\n    // 3. If method is undefined, throw a TypeError.\n    if (\n      method === undefined ||\n      typeof method.next !== 'function'\n    ) {\n      throw webidl.errors.exception({\n        header: prefix,\n        message: `${argument} is not iterable.`\n      })\n    }\n\n    // https://webidl.spec.whatwg.org/#create-sequence-from-iterable\n    while (true) {\n      const { done, value } = method.next()\n\n      if (done) {\n        break\n      }\n\n      seq.push(converter(value, prefix, `${argument}[${index++}]`))\n    }\n\n    return seq\n  }\n}\n\n// https://webidl.spec.whatwg.org/#es-to-record\nwebidl.recordConverter = function (keyConverter, valueConverter) {\n  return (O, prefix, argument) => {\n    // 1. If Type(O) is not Object, throw a TypeError.\n    if (webidl.util.Type(O) !== 'Object') {\n      throw webidl.errors.exception({\n        header: prefix,\n        message: `${argument} (\"${webidl.util.Type(O)}\") is not an Object.`\n      })\n    }\n\n    // 2. Let result be a new empty instance of record<K, V>.\n    const result = {}\n\n    if (!types.isProxy(O)) {\n      // 1. Let desc be ? O.[[GetOwnProperty]](key).\n      const keys = [...Object.getOwnPropertyNames(O), ...Object.getOwnPropertySymbols(O)]\n\n      for (const key of keys) {\n        // 1. Let typedKey be key converted to an IDL value of type K.\n        const typedKey = keyConverter(key, prefix, argument)\n\n        // 2. Let value be ? Get(O, key).\n        // 3. Let typedValue be value converted to an IDL value of type V.\n        const typedValue = valueConverter(O[key], prefix, argument)\n\n        // 4. Set result[typedKey] to typedValue.\n        result[typedKey] = typedValue\n      }\n\n      // 5. Return result.\n      return result\n    }\n\n    // 3. Let keys be ? O.[[OwnPropertyKeys]]().\n    const keys = Reflect.ownKeys(O)\n\n    // 4. For each key of keys.\n    for (const key of keys) {\n      // 1. Let desc be ? O.[[GetOwnProperty]](key).\n      const desc = Reflect.getOwnPropertyDescriptor(O, key)\n\n      // 2. If desc is not undefined and desc.[[Enumerable]] is true:\n      if (desc?.enumerable) {\n        // 1. Let typedKey be key converted to an IDL value of type K.\n        const typedKey = keyConverter(key, prefix, argument)\n\n        // 2. Let value be ? Get(O, key).\n        // 3. Let typedValue be value converted to an IDL value of type V.\n        const typedValue = valueConverter(O[key], prefix, argument)\n\n        // 4. Set result[typedKey] to typedValue.\n        result[typedKey] = typedValue\n      }\n    }\n\n    // 5. Return result.\n    return result\n  }\n}\n\nwebidl.interfaceConverter = function (i) {\n  return (V, prefix, argument, opts) => {\n    if (opts?.strict !== false && !(V instanceof i)) {\n      throw webidl.errors.exception({\n        header: prefix,\n        message: `Expected ${argument} (\"${webidl.util.Stringify(V)}\") to be an instance of ${i.name}.`\n      })\n    }\n\n    return V\n  }\n}\n\nwebidl.dictionaryConverter = function (converters) {\n  return (dictionary, prefix, argument) => {\n    const type = webidl.util.Type(dictionary)\n    const dict = {}\n\n    if (type === 'Null' || type === 'Undefined') {\n      return dict\n    } else if (type !== 'Object') {\n      throw webidl.errors.exception({\n        header: prefix,\n        message: `Expected ${dictionary} to be one of: Null, Undefined, Object.`\n      })\n    }\n\n    for (const options of converters) {\n      const { key, defaultValue, required, converter } = options\n\n      if (required === true) {\n        if (!Object.hasOwn(dictionary, key)) {\n          throw webidl.errors.exception({\n            header: prefix,\n            message: `Missing required key \"${key}\".`\n          })\n        }\n      }\n\n      let value = dictionary[key]\n      const hasDefault = Object.hasOwn(options, 'defaultValue')\n\n      // Only use defaultValue if value is undefined and\n      // a defaultValue options was provided.\n      if (hasDefault && value !== null) {\n        value ??= defaultValue()\n      }\n\n      // A key can be optional and have no default value.\n      // When this happens, do not perform a conversion,\n      // and do not assign the key a value.\n      if (required || hasDefault || value !== undefined) {\n        value = converter(value, prefix, `${argument}.${key}`)\n\n        if (\n          options.allowedValues &&\n          !options.allowedValues.includes(value)\n        ) {\n          throw webidl.errors.exception({\n            header: prefix,\n            message: `${value} is not an accepted type. Expected one of ${options.allowedValues.join(', ')}.`\n          })\n        }\n\n        dict[key] = value\n      }\n    }\n\n    return dict\n  }\n}\n\nwebidl.nullableConverter = function (converter) {\n  return (V, prefix, argument) => {\n    if (V === null) {\n      return V\n    }\n\n    return converter(V, prefix, argument)\n  }\n}\n\n// https://webidl.spec.whatwg.org/#es-DOMString\nwebidl.converters.DOMString = function (V, prefix, argument, opts) {\n  // 1. If V is null and the conversion is to an IDL type\n  //    associated with the [LegacyNullToEmptyString]\n  //    extended attribute, then return the DOMString value\n  //    that represents the empty string.\n  if (V === null && opts?.legacyNullToEmptyString) {\n    return ''\n  }\n\n  // 2. Let x be ? ToString(V).\n  if (typeof V === 'symbol') {\n    throw webidl.errors.exception({\n      header: prefix,\n      message: `${argument} is a symbol, which cannot be converted to a DOMString.`\n    })\n  }\n\n  // 3. Return the IDL DOMString value that represents the\n  //    same sequence of code units as the one the\n  //    ECMAScript String value x represents.\n  return String(V)\n}\n\n// https://webidl.spec.whatwg.org/#es-ByteString\nwebidl.converters.ByteString = function (V, prefix, argument) {\n  // 1. Let x be ? ToString(V).\n  // Note: DOMString converter perform ? ToString(V)\n  const x = webidl.converters.DOMString(V, prefix, argument)\n\n  // 2. If the value of any element of x is greater than\n  //    255, then throw a TypeError.\n  for (let index = 0; index < x.length; index++) {\n    if (x.charCodeAt(index) > 255) {\n      throw new TypeError(\n        'Cannot convert argument to a ByteString because the character at ' +\n        `index ${index} has a value of ${x.charCodeAt(index)} which is greater than 255.`\n      )\n    }\n  }\n\n  // 3. Return an IDL ByteString value whose length is the\n  //    length of x, and where the value of each element is\n  //    the value of the corresponding element of x.\n  return x\n}\n\n// https://webidl.spec.whatwg.org/#es-USVString\n// TODO: rewrite this so we can control the errors thrown\nwebidl.converters.USVString = toUSVString\n\n// https://webidl.spec.whatwg.org/#es-boolean\nwebidl.converters.boolean = function (V) {\n  // 1. Let x be the result of computing ToBoolean(V).\n  const x = Boolean(V)\n\n  // 2. Return the IDL boolean value that is the one that represents\n  //    the same truth value as the ECMAScript Boolean value x.\n  return x\n}\n\n// https://webidl.spec.whatwg.org/#es-any\nwebidl.converters.any = function (V) {\n  return V\n}\n\n// https://webidl.spec.whatwg.org/#es-long-long\nwebidl.converters['long long'] = function (V, prefix, argument) {\n  // 1. Let x be ? ConvertToInt(V, 64, \"signed\").\n  const x = webidl.util.ConvertToInt(V, 64, 'signed', undefined, prefix, argument)\n\n  // 2. Return the IDL long long value that represents\n  //    the same numeric value as x.\n  return x\n}\n\n// https://webidl.spec.whatwg.org/#es-unsigned-long-long\nwebidl.converters['unsigned long long'] = function (V, prefix, argument) {\n  // 1. Let x be ? ConvertToInt(V, 64, \"unsigned\").\n  const x = webidl.util.ConvertToInt(V, 64, 'unsigned', undefined, prefix, argument)\n\n  // 2. Return the IDL unsigned long long value that\n  //    represents the same numeric value as x.\n  return x\n}\n\n// https://webidl.spec.whatwg.org/#es-unsigned-long\nwebidl.converters['unsigned long'] = function (V, prefix, argument) {\n  // 1. Let x be ? ConvertToInt(V, 32, \"unsigned\").\n  const x = webidl.util.ConvertToInt(V, 32, 'unsigned', undefined, prefix, argument)\n\n  // 2. Return the IDL unsigned long value that\n  //    represents the same numeric value as x.\n  return x\n}\n\n// https://webidl.spec.whatwg.org/#es-unsigned-short\nwebidl.converters['unsigned short'] = function (V, prefix, argument, opts) {\n  // 1. Let x be ? ConvertToInt(V, 16, \"unsigned\").\n  const x = webidl.util.ConvertToInt(V, 16, 'unsigned', opts, prefix, argument)\n\n  // 2. Return the IDL unsigned short value that represents\n  //    the same numeric value as x.\n  return x\n}\n\n// https://webidl.spec.whatwg.org/#idl-ArrayBuffer\nwebidl.converters.ArrayBuffer = function (V, prefix, argument, opts) {\n  // 1. If Type(V) is not Object, or V does not have an\n  //    [[ArrayBufferData]] internal slot, then throw a\n  //    TypeError.\n  // see: https://tc39.es/ecma262/#sec-properties-of-the-arraybuffer-instances\n  // see: https://tc39.es/ecma262/#sec-properties-of-the-sharedarraybuffer-instances\n  if (\n    webidl.util.Type(V) !== 'Object' ||\n    !types.isAnyArrayBuffer(V)\n  ) {\n    throw webidl.errors.conversionFailed({\n      prefix,\n      argument: `${argument} (\"${webidl.util.Stringify(V)}\")`,\n      types: ['ArrayBuffer']\n    })\n  }\n\n  // 2. If the conversion is not to an IDL type associated\n  //    with the [AllowShared] extended attribute, and\n  //    IsSharedArrayBuffer(V) is true, then throw a\n  //    TypeError.\n  if (opts?.allowShared === false && types.isSharedArrayBuffer(V)) {\n    throw webidl.errors.exception({\n      header: 'ArrayBuffer',\n      message: 'SharedArrayBuffer is not allowed.'\n    })\n  }\n\n  // 3. If the conversion is not to an IDL type associated\n  //    with the [AllowResizable] extended attribute, and\n  //    IsResizableArrayBuffer(V) is true, then throw a\n  //    TypeError.\n  if (V.resizable || V.growable) {\n    throw webidl.errors.exception({\n      header: 'ArrayBuffer',\n      message: 'Received a resizable ArrayBuffer.'\n    })\n  }\n\n  // 4. Return the IDL ArrayBuffer value that is a\n  //    reference to the same object as V.\n  return V\n}\n\nwebidl.converters.TypedArray = function (V, T, prefix, name, opts) {\n  // 1. Let T be the IDL type V is being converted to.\n\n  // 2. If Type(V) is not Object, or V does not have a\n  //    [[TypedArrayName]] internal slot with a value\n  //    equal to T\u2019s name, then throw a TypeError.\n  if (\n    webidl.util.Type(V) !== 'Object' ||\n    !types.isTypedArray(V) ||\n    V.constructor.name !== T.name\n  ) {\n    throw webidl.errors.conversionFailed({\n      prefix,\n      argument: `${name} (\"${webidl.util.Stringify(V)}\")`,\n      types: [T.name]\n    })\n  }\n\n  // 3. If the conversion is not to an IDL type associated\n  //    with the [AllowShared] extended attribute, and\n  //    IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is\n  //    true, then throw a TypeError.\n  if (opts?.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {\n    throw webidl.errors.exception({\n      header: 'ArrayBuffer',\n      message: 'SharedArrayBuffer is not allowed.'\n    })\n  }\n\n  // 4. If the conversion is not to an IDL type associated\n  //    with the [AllowResizable] extended attribute, and\n  //    IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is\n  //    true, then throw a TypeError.\n  if (V.buffer.resizable || V.buffer.growable) {\n    throw webidl.errors.exception({\n      header: 'ArrayBuffer',\n      message: 'Received a resizable ArrayBuffer.'\n    })\n  }\n\n  // 5. Return the IDL value of type T that is a reference\n  //    to the same object as V.\n  return V\n}\n\nwebidl.converters.DataView = function (V, prefix, name, opts) {\n  // 1. If Type(V) is not Object, or V does not have a\n  //    [[DataView]] internal slot, then throw a TypeError.\n  if (webidl.util.Type(V) !== 'Object' || !types.isDataView(V)) {\n    throw webidl.errors.exception({\n      header: prefix,\n      message: `${name} is not a DataView.`\n    })\n  }\n\n  // 2. If the conversion is not to an IDL type associated\n  //    with the [AllowShared] extended attribute, and\n  //    IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is true,\n  //    then throw a TypeError.\n  if (opts?.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {\n    throw webidl.errors.exception({\n      header: 'ArrayBuffer',\n      message: 'SharedArrayBuffer is not allowed.'\n    })\n  }\n\n  // 3. If the conversion is not to an IDL type associated\n  //    with the [AllowResizable] extended attribute, and\n  //    IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is\n  //    true, then throw a TypeError.\n  if (V.buffer.resizable || V.buffer.growable) {\n    throw webidl.errors.exception({\n      header: 'ArrayBuffer',\n      message: 'Received a resizable ArrayBuffer.'\n    })\n  }\n\n  // 4. Return the IDL DataView value that is a reference\n  //    to the same object as V.\n  return V\n}\n\n// https://webidl.spec.whatwg.org/#BufferSource\nwebidl.converters.BufferSource = function (V, prefix, name, opts) {\n  if (types.isAnyArrayBuffer(V)) {\n    return webidl.converters.ArrayBuffer(V, prefix, name, { ...opts, allowShared: false })\n  }\n\n  if (types.isTypedArray(V)) {\n    return webidl.converters.TypedArray(V, V.constructor, prefix, name, { ...opts, allowShared: false })\n  }\n\n  if (types.isDataView(V)) {\n    return webidl.converters.DataView(V, prefix, name, { ...opts, allowShared: false })\n  }\n\n  throw webidl.errors.conversionFailed({\n    prefix,\n    argument: `${name} (\"${webidl.util.Stringify(V)}\")`,\n    types: ['BufferSource']\n  })\n}\n\nwebidl.converters['sequence<ByteString>'] = webidl.sequenceConverter(\n  webidl.converters.ByteString\n)\n\nwebidl.converters['sequence<sequence<ByteString>>'] = webidl.sequenceConverter(\n  webidl.converters['sequence<ByteString>']\n)\n\nwebidl.converters['record<ByteString, ByteString>'] = webidl.recordConverter(\n  webidl.converters.ByteString,\n  webidl.converters.ByteString\n)\n\nmodule.exports = {\n  webidl\n}\n", "'use strict'\n\nconst { Transform } = require('node:stream')\nconst zlib = require('node:zlib')\nconst { redirectStatusSet, referrerPolicySet: referrerPolicyTokens, badPortsSet } = require('./constants')\nconst { getGlobalOrigin } = require('./global')\nconst { collectASequenceOfCodePoints, collectAnHTTPQuotedString, removeChars, parseMIMEType } = require('./data-url')\nconst { performance } = require('node:perf_hooks')\nconst { isBlobLike, ReadableStreamFrom, isValidHTTPToken, normalizedMethodRecordsBase } = require('../../core/util')\nconst assert = require('node:assert')\nconst { isUint8Array } = require('node:util/types')\nconst { webidl } = require('./webidl')\n\nlet supportedHashes = []\n\n// https://nodejs.org/api/crypto.html#determining-if-crypto-support-is-unavailable\n/** @type {import('crypto')} */\nlet crypto\ntry {\n  crypto = require('node:crypto')\n  const possibleRelevantHashes = ['sha256', 'sha384', 'sha512']\n  supportedHashes = crypto.getHashes().filter((hash) => possibleRelevantHashes.includes(hash))\n/* c8 ignore next 3 */\n} catch {\n\n}\n\nfunction responseURL (response) {\n  // https://fetch.spec.whatwg.org/#responses\n  // A response has an associated URL. It is a pointer to the last URL\n  // in response\u2019s URL list and null if response\u2019s URL list is empty.\n  const urlList = response.urlList\n  const length = urlList.length\n  return length === 0 ? null : urlList[length - 1].toString()\n}\n\n// https://fetch.spec.whatwg.org/#concept-response-location-url\nfunction responseLocationURL (response, requestFragment) {\n  // 1. If response\u2019s status is not a redirect status, then return null.\n  if (!redirectStatusSet.has(response.status)) {\n    return null\n  }\n\n  // 2. Let location be the result of extracting header list values given\n  // `Location` and response\u2019s header list.\n  let location = response.headersList.get('location', true)\n\n  // 3. If location is a header value, then set location to the result of\n  //    parsing location with response\u2019s URL.\n  if (location !== null && isValidHeaderValue(location)) {\n    if (!isValidEncodedURL(location)) {\n      // Some websites respond location header in UTF-8 form without encoding them as ASCII\n      // and major browsers redirect them to correctly UTF-8 encoded addresses.\n      // Here, we handle that behavior in the same way.\n      location = normalizeBinaryStringToUtf8(location)\n    }\n    location = new URL(location, responseURL(response))\n  }\n\n  // 4. If location is a URL whose fragment is null, then set location\u2019s\n  // fragment to requestFragment.\n  if (location && !location.hash) {\n    location.hash = requestFragment\n  }\n\n  // 5. Return location.\n  return location\n}\n\n/**\n * @see https://www.rfc-editor.org/rfc/rfc1738#section-2.2\n * @param {string} url\n * @returns {boolean}\n */\nfunction isValidEncodedURL (url) {\n  for (let i = 0; i < url.length; ++i) {\n    const code = url.charCodeAt(i)\n\n    if (\n      code > 0x7E || // Non-US-ASCII + DEL\n      code < 0x20 // Control characters NUL - US\n    ) {\n      return false\n    }\n  }\n  return true\n}\n\n/**\n * If string contains non-ASCII characters, assumes it's UTF-8 encoded and decodes it.\n * Since UTF-8 is a superset of ASCII, this will work for ASCII strings as well.\n * @param {string} value\n * @returns {string}\n */\nfunction normalizeBinaryStringToUtf8 (value) {\n  return Buffer.from(value, 'binary').toString('utf8')\n}\n\n/** @returns {URL} */\nfunction requestCurrentURL (request) {\n  return request.urlList[request.urlList.length - 1]\n}\n\nfunction requestBadPort (request) {\n  // 1. Let url be request\u2019s current URL.\n  const url = requestCurrentURL(request)\n\n  // 2. If url\u2019s scheme is an HTTP(S) scheme and url\u2019s port is a bad port,\n  // then return blocked.\n  if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) {\n    return 'blocked'\n  }\n\n  // 3. Return allowed.\n  return 'allowed'\n}\n\nfunction isErrorLike (object) {\n  return object instanceof Error || (\n    object?.constructor?.name === 'Error' ||\n    object?.constructor?.name === 'DOMException'\n  )\n}\n\n// Check whether |statusText| is a ByteString and\n// matches the Reason-Phrase token production.\n// RFC 2616: https://tools.ietf.org/html/rfc2616\n// RFC 7230: https://tools.ietf.org/html/rfc7230\n// \"reason-phrase = *( HTAB / SP / VCHAR / obs-text )\"\n// https://github.com/chromium/chromium/blob/94.0.4604.1/third_party/blink/renderer/core/fetch/response.cc#L116\nfunction isValidReasonPhrase (statusText) {\n  for (let i = 0; i < statusText.length; ++i) {\n    const c = statusText.charCodeAt(i)\n    if (\n      !(\n        (\n          c === 0x09 || // HTAB\n          (c >= 0x20 && c <= 0x7e) || // SP / VCHAR\n          (c >= 0x80 && c <= 0xff)\n        ) // obs-text\n      )\n    ) {\n      return false\n    }\n  }\n  return true\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#header-name\n * @param {string} potentialValue\n */\nconst isValidHeaderName = isValidHTTPToken\n\n/**\n * @see https://fetch.spec.whatwg.org/#header-value\n * @param {string} potentialValue\n */\nfunction isValidHeaderValue (potentialValue) {\n  // - Has no leading or trailing HTTP tab or space bytes.\n  // - Contains no 0x00 (NUL) or HTTP newline bytes.\n  return (\n    potentialValue[0] === '\\t' ||\n    potentialValue[0] === ' ' ||\n    potentialValue[potentialValue.length - 1] === '\\t' ||\n    potentialValue[potentialValue.length - 1] === ' ' ||\n    potentialValue.includes('\\n') ||\n    potentialValue.includes('\\r') ||\n    potentialValue.includes('\\0')\n  ) === false\n}\n\n// https://w3c.github.io/webappsec-referrer-policy/#set-requests-referrer-policy-on-redirect\nfunction setRequestReferrerPolicyOnRedirect (request, actualResponse) {\n  //  Given a request request and a response actualResponse, this algorithm\n  //  updates request\u2019s referrer policy according to the Referrer-Policy\n  //  header (if any) in actualResponse.\n\n  // 1. Let policy be the result of executing \u00A7 8.1 Parse a referrer policy\n  // from a Referrer-Policy header on actualResponse.\n\n  // 8.1 Parse a referrer policy from a Referrer-Policy header\n  // 1. Let policy-tokens be the result of extracting header list values given `Referrer-Policy` and response\u2019s header list.\n  const { headersList } = actualResponse\n  // 2. Let policy be the empty string.\n  // 3. For each token in policy-tokens, if token is a referrer policy and token is not the empty string, then set policy to token.\n  // 4. Return policy.\n  const policyHeader = (headersList.get('referrer-policy', true) ?? '').split(',')\n\n  // Note: As the referrer-policy can contain multiple policies\n  // separated by comma, we need to loop through all of them\n  // and pick the first valid one.\n  // Ref: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy#specify_a_fallback_policy\n  let policy = ''\n  if (policyHeader.length > 0) {\n    // The right-most policy takes precedence.\n    // The left-most policy is the fallback.\n    for (let i = policyHeader.length; i !== 0; i--) {\n      const token = policyHeader[i - 1].trim()\n      if (referrerPolicyTokens.has(token)) {\n        policy = token\n        break\n      }\n    }\n  }\n\n  // 2. If policy is not the empty string, then set request\u2019s referrer policy to policy.\n  if (policy !== '') {\n    request.referrerPolicy = policy\n  }\n}\n\n// https://fetch.spec.whatwg.org/#cross-origin-resource-policy-check\nfunction crossOriginResourcePolicyCheck () {\n  // TODO\n  return 'allowed'\n}\n\n// https://fetch.spec.whatwg.org/#concept-cors-check\nfunction corsCheck () {\n  // TODO\n  return 'success'\n}\n\n// https://fetch.spec.whatwg.org/#concept-tao-check\nfunction TAOCheck () {\n  // TODO\n  return 'success'\n}\n\nfunction appendFetchMetadata (httpRequest) {\n  //  https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-dest-header\n  //  TODO\n\n  //  https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-mode-header\n\n  //  1. Assert: r\u2019s url is a potentially trustworthy URL.\n  //  TODO\n\n  //  2. Let header be a Structured Header whose value is a token.\n  let header = null\n\n  //  3. Set header\u2019s value to r\u2019s mode.\n  header = httpRequest.mode\n\n  //  4. Set a structured field value `Sec-Fetch-Mode`/header in r\u2019s header list.\n  httpRequest.headersList.set('sec-fetch-mode', header, true)\n\n  //  https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-site-header\n  //  TODO\n\n  //  https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-user-header\n  //  TODO\n}\n\n// https://fetch.spec.whatwg.org/#append-a-request-origin-header\nfunction appendRequestOriginHeader (request) {\n  // 1. Let serializedOrigin be the result of byte-serializing a request origin\n  //    with request.\n  // TODO: implement \"byte-serializing a request origin\"\n  let serializedOrigin = request.origin\n\n  // - \"'client' is changed to an origin during fetching.\"\n  //   This doesn't happen in undici (in most cases) because undici, by default,\n  //   has no concept of origin.\n  // - request.origin can also be set to request.client.origin (client being\n  //   an environment settings object), which is undefined without using\n  //   setGlobalOrigin.\n  if (serializedOrigin === 'client' || serializedOrigin === undefined) {\n    return\n  }\n\n  // 2. If request\u2019s response tainting is \"cors\" or request\u2019s mode is \"websocket\",\n  //    then append (`Origin`, serializedOrigin) to request\u2019s header list.\n  // 3. Otherwise, if request\u2019s method is neither `GET` nor `HEAD`, then:\n  if (request.responseTainting === 'cors' || request.mode === 'websocket') {\n    request.headersList.append('origin', serializedOrigin, true)\n  } else if (request.method !== 'GET' && request.method !== 'HEAD') {\n    // 1. Switch on request\u2019s referrer policy:\n    switch (request.referrerPolicy) {\n      case 'no-referrer':\n        // Set serializedOrigin to `null`.\n        serializedOrigin = null\n        break\n      case 'no-referrer-when-downgrade':\n      case 'strict-origin':\n      case 'strict-origin-when-cross-origin':\n        // If request\u2019s origin is a tuple origin, its scheme is \"https\", and\n        // request\u2019s current URL\u2019s scheme is not \"https\", then set\n        // serializedOrigin to `null`.\n        if (request.origin && urlHasHttpsScheme(request.origin) && !urlHasHttpsScheme(requestCurrentURL(request))) {\n          serializedOrigin = null\n        }\n        break\n      case 'same-origin':\n        // If request\u2019s origin is not same origin with request\u2019s current URL\u2019s\n        // origin, then set serializedOrigin to `null`.\n        if (!sameOrigin(request, requestCurrentURL(request))) {\n          serializedOrigin = null\n        }\n        break\n      default:\n        // Do nothing.\n    }\n\n    // 2. Append (`Origin`, serializedOrigin) to request\u2019s header list.\n    request.headersList.append('origin', serializedOrigin, true)\n  }\n}\n\n// https://w3c.github.io/hr-time/#dfn-coarsen-time\nfunction coarsenTime (timestamp, crossOriginIsolatedCapability) {\n  // TODO\n  return timestamp\n}\n\n// https://fetch.spec.whatwg.org/#clamp-and-coarsen-connection-timing-info\nfunction clampAndCoarsenConnectionTimingInfo (connectionTimingInfo, defaultStartTime, crossOriginIsolatedCapability) {\n  if (!connectionTimingInfo?.startTime || connectionTimingInfo.startTime < defaultStartTime) {\n    return {\n      domainLookupStartTime: defaultStartTime,\n      domainLookupEndTime: defaultStartTime,\n      connectionStartTime: defaultStartTime,\n      connectionEndTime: defaultStartTime,\n      secureConnectionStartTime: defaultStartTime,\n      ALPNNegotiatedProtocol: connectionTimingInfo?.ALPNNegotiatedProtocol\n    }\n  }\n\n  return {\n    domainLookupStartTime: coarsenTime(connectionTimingInfo.domainLookupStartTime, crossOriginIsolatedCapability),\n    domainLookupEndTime: coarsenTime(connectionTimingInfo.domainLookupEndTime, crossOriginIsolatedCapability),\n    connectionStartTime: coarsenTime(connectionTimingInfo.connectionStartTime, crossOriginIsolatedCapability),\n    connectionEndTime: coarsenTime(connectionTimingInfo.connectionEndTime, crossOriginIsolatedCapability),\n    secureConnectionStartTime: coarsenTime(connectionTimingInfo.secureConnectionStartTime, crossOriginIsolatedCapability),\n    ALPNNegotiatedProtocol: connectionTimingInfo.ALPNNegotiatedProtocol\n  }\n}\n\n// https://w3c.github.io/hr-time/#dfn-coarsened-shared-current-time\nfunction coarsenedSharedCurrentTime (crossOriginIsolatedCapability) {\n  return coarsenTime(performance.now(), crossOriginIsolatedCapability)\n}\n\n// https://fetch.spec.whatwg.org/#create-an-opaque-timing-info\nfunction createOpaqueTimingInfo (timingInfo) {\n  return {\n    startTime: timingInfo.startTime ?? 0,\n    redirectStartTime: 0,\n    redirectEndTime: 0,\n    postRedirectStartTime: timingInfo.startTime ?? 0,\n    finalServiceWorkerStartTime: 0,\n    finalNetworkResponseStartTime: 0,\n    finalNetworkRequestStartTime: 0,\n    endTime: 0,\n    encodedBodySize: 0,\n    decodedBodySize: 0,\n    finalConnectionTimingInfo: null\n  }\n}\n\n// https://html.spec.whatwg.org/multipage/origin.html#policy-container\nfunction makePolicyContainer () {\n  // Note: the fetch spec doesn't make use of embedder policy or CSP list\n  return {\n    referrerPolicy: 'strict-origin-when-cross-origin'\n  }\n}\n\n// https://html.spec.whatwg.org/multipage/origin.html#clone-a-policy-container\nfunction clonePolicyContainer (policyContainer) {\n  return {\n    referrerPolicy: policyContainer.referrerPolicy\n  }\n}\n\n// https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer\nfunction determineRequestsReferrer (request) {\n  // 1. Let policy be request's referrer policy.\n  const policy = request.referrerPolicy\n\n  // Note: policy cannot (shouldn't) be null or an empty string.\n  assert(policy)\n\n  // 2. Let environment be request\u2019s client.\n\n  let referrerSource = null\n\n  // 3. Switch on request\u2019s referrer:\n  if (request.referrer === 'client') {\n    // Note: node isn't a browser and doesn't implement document/iframes,\n    // so we bypass this step and replace it with our own.\n\n    const globalOrigin = getGlobalOrigin()\n\n    if (!globalOrigin || globalOrigin.origin === 'null') {\n      return 'no-referrer'\n    }\n\n    // note: we need to clone it as it's mutated\n    referrerSource = new URL(globalOrigin)\n  } else if (request.referrer instanceof URL) {\n    // Let referrerSource be request\u2019s referrer.\n    referrerSource = request.referrer\n  }\n\n  // 4. Let request\u2019s referrerURL be the result of stripping referrerSource for\n  //    use as a referrer.\n  let referrerURL = stripURLForReferrer(referrerSource)\n\n  // 5. Let referrerOrigin be the result of stripping referrerSource for use as\n  //    a referrer, with the origin-only flag set to true.\n  const referrerOrigin = stripURLForReferrer(referrerSource, true)\n\n  // 6. If the result of serializing referrerURL is a string whose length is\n  //    greater than 4096, set referrerURL to referrerOrigin.\n  if (referrerURL.toString().length > 4096) {\n    referrerURL = referrerOrigin\n  }\n\n  const areSameOrigin = sameOrigin(request, referrerURL)\n  const isNonPotentiallyTrustWorthy = isURLPotentiallyTrustworthy(referrerURL) &&\n    !isURLPotentiallyTrustworthy(request.url)\n\n  // 8. Execute the switch statements corresponding to the value of policy:\n  switch (policy) {\n    case 'origin': return referrerOrigin != null ? referrerOrigin : stripURLForReferrer(referrerSource, true)\n    case 'unsafe-url': return referrerURL\n    case 'same-origin':\n      return areSameOrigin ? referrerOrigin : 'no-referrer'\n    case 'origin-when-cross-origin':\n      return areSameOrigin ? referrerURL : referrerOrigin\n    case 'strict-origin-when-cross-origin': {\n      const currentURL = requestCurrentURL(request)\n\n      // 1. If the origin of referrerURL and the origin of request\u2019s current\n      //    URL are the same, then return referrerURL.\n      if (sameOrigin(referrerURL, currentURL)) {\n        return referrerURL\n      }\n\n      // 2. If referrerURL is a potentially trustworthy URL and request\u2019s\n      //    current URL is not a potentially trustworthy URL, then return no\n      //    referrer.\n      if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) {\n        return 'no-referrer'\n      }\n\n      // 3. Return referrerOrigin.\n      return referrerOrigin\n    }\n    case 'strict-origin': // eslint-disable-line\n      /**\n         * 1. If referrerURL is a potentially trustworthy URL and\n         * request\u2019s current URL is not a potentially trustworthy URL,\n         * then return no referrer.\n         * 2. Return referrerOrigin\n        */\n    case 'no-referrer-when-downgrade': // eslint-disable-line\n      /**\n       * 1. If referrerURL is a potentially trustworthy URL and\n       * request\u2019s current URL is not a potentially trustworthy URL,\n       * then return no referrer.\n       * 2. Return referrerOrigin\n      */\n\n    default: // eslint-disable-line\n      return isNonPotentiallyTrustWorthy ? 'no-referrer' : referrerOrigin\n  }\n}\n\n/**\n * @see https://w3c.github.io/webappsec-referrer-policy/#strip-url\n * @param {URL} url\n * @param {boolean|undefined} originOnly\n */\nfunction stripURLForReferrer (url, originOnly) {\n  // 1. Assert: url is a URL.\n  assert(url instanceof URL)\n\n  url = new URL(url)\n\n  // 2. If url\u2019s scheme is a local scheme, then return no referrer.\n  if (url.protocol === 'file:' || url.protocol === 'about:' || url.protocol === 'blank:') {\n    return 'no-referrer'\n  }\n\n  // 3. Set url\u2019s username to the empty string.\n  url.username = ''\n\n  // 4. Set url\u2019s password to the empty string.\n  url.password = ''\n\n  // 5. Set url\u2019s fragment to null.\n  url.hash = ''\n\n  // 6. If the origin-only flag is true, then:\n  if (originOnly) {\n    // 1. Set url\u2019s path to \u00AB the empty string \u00BB.\n    url.pathname = ''\n\n    // 2. Set url\u2019s query to null.\n    url.search = ''\n  }\n\n  // 7. Return url.\n  return url\n}\n\nfunction isURLPotentiallyTrustworthy (url) {\n  if (!(url instanceof URL)) {\n    return false\n  }\n\n  // If child of about, return true\n  if (url.href === 'about:blank' || url.href === 'about:srcdoc') {\n    return true\n  }\n\n  // If scheme is data, return true\n  if (url.protocol === 'data:') return true\n\n  // If file, return true\n  if (url.protocol === 'file:') return true\n\n  return isOriginPotentiallyTrustworthy(url.origin)\n\n  function isOriginPotentiallyTrustworthy (origin) {\n    // If origin is explicitly null, return false\n    if (origin == null || origin === 'null') return false\n\n    const originAsURL = new URL(origin)\n\n    // If secure, return true\n    if (originAsURL.protocol === 'https:' || originAsURL.protocol === 'wss:') {\n      return true\n    }\n\n    // If localhost or variants, return true\n    if (/^127(?:\\.[0-9]+){0,2}\\.[0-9]+$|^\\[(?:0*:)*?:?0*1\\]$/.test(originAsURL.hostname) ||\n     (originAsURL.hostname === 'localhost' || originAsURL.hostname.includes('localhost.')) ||\n     (originAsURL.hostname.endsWith('.localhost'))) {\n      return true\n    }\n\n    // If any other, return false\n    return false\n  }\n}\n\n/**\n * @see https://w3c.github.io/webappsec-subresource-integrity/#does-response-match-metadatalist\n * @param {Uint8Array} bytes\n * @param {string} metadataList\n */\nfunction bytesMatch (bytes, metadataList) {\n  // If node is not built with OpenSSL support, we cannot check\n  // a request's integrity, so allow it by default (the spec will\n  // allow requests if an invalid hash is given, as precedence).\n  /* istanbul ignore if: only if node is built with --without-ssl */\n  if (crypto === undefined) {\n    return true\n  }\n\n  // 1. Let parsedMetadata be the result of parsing metadataList.\n  const parsedMetadata = parseMetadata(metadataList)\n\n  // 2. If parsedMetadata is no metadata, return true.\n  if (parsedMetadata === 'no metadata') {\n    return true\n  }\n\n  // 3. If response is not eligible for integrity validation, return false.\n  // TODO\n\n  // 4. If parsedMetadata is the empty set, return true.\n  if (parsedMetadata.length === 0) {\n    return true\n  }\n\n  // 5. Let metadata be the result of getting the strongest\n  //    metadata from parsedMetadata.\n  const strongest = getStrongestMetadata(parsedMetadata)\n  const metadata = filterMetadataListByAlgorithm(parsedMetadata, strongest)\n\n  // 6. For each item in metadata:\n  for (const item of metadata) {\n    // 1. Let algorithm be the alg component of item.\n    const algorithm = item.algo\n\n    // 2. Let expectedValue be the val component of item.\n    const expectedValue = item.hash\n\n    // See https://github.com/web-platform-tests/wpt/commit/e4c5cc7a5e48093220528dfdd1c4012dc3837a0e\n    // \"be liberal with padding\". This is annoying, and it's not even in the spec.\n\n    // 3. Let actualValue be the result of applying algorithm to bytes.\n    let actualValue = crypto.createHash(algorithm).update(bytes).digest('base64')\n\n    if (actualValue[actualValue.length - 1] === '=') {\n      if (actualValue[actualValue.length - 2] === '=') {\n        actualValue = actualValue.slice(0, -2)\n      } else {\n        actualValue = actualValue.slice(0, -1)\n      }\n    }\n\n    // 4. If actualValue is a case-sensitive match for expectedValue,\n    //    return true.\n    if (compareBase64Mixed(actualValue, expectedValue)) {\n      return true\n    }\n  }\n\n  // 7. Return false.\n  return false\n}\n\n// https://w3c.github.io/webappsec-subresource-integrity/#grammardef-hash-with-options\n// https://www.w3.org/TR/CSP2/#source-list-syntax\n// https://www.rfc-editor.org/rfc/rfc5234#appendix-B.1\nconst parseHashWithOptions = /(?<algo>sha256|sha384|sha512)-((?<hash>[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\\s|$)( +[!-~]*)?)?/i\n\n/**\n * @see https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata\n * @param {string} metadata\n */\nfunction parseMetadata (metadata) {\n  // 1. Let result be the empty set.\n  /** @type {{ algo: string, hash: string }[]} */\n  const result = []\n\n  // 2. Let empty be equal to true.\n  let empty = true\n\n  // 3. For each token returned by splitting metadata on spaces:\n  for (const token of metadata.split(' ')) {\n    // 1. Set empty to false.\n    empty = false\n\n    // 2. Parse token as a hash-with-options.\n    const parsedToken = parseHashWithOptions.exec(token)\n\n    // 3. If token does not parse, continue to the next token.\n    if (\n      parsedToken === null ||\n      parsedToken.groups === undefined ||\n      parsedToken.groups.algo === undefined\n    ) {\n      // Note: Chromium blocks the request at this point, but Firefox\n      // gives a warning that an invalid integrity was given. The\n      // correct behavior is to ignore these, and subsequently not\n      // check the integrity of the resource.\n      continue\n    }\n\n    // 4. Let algorithm be the hash-algo component of token.\n    const algorithm = parsedToken.groups.algo.toLowerCase()\n\n    // 5. If algorithm is a hash function recognized by the user\n    //    agent, add the parsed token to result.\n    if (supportedHashes.includes(algorithm)) {\n      result.push(parsedToken.groups)\n    }\n  }\n\n  // 4. Return no metadata if empty is true, otherwise return result.\n  if (empty === true) {\n    return 'no metadata'\n  }\n\n  return result\n}\n\n/**\n * @param {{ algo: 'sha256' | 'sha384' | 'sha512' }[]} metadataList\n */\nfunction getStrongestMetadata (metadataList) {\n  // Let algorithm be the algo component of the first item in metadataList.\n  // Can be sha256\n  let algorithm = metadataList[0].algo\n  // If the algorithm is sha512, then it is the strongest\n  // and we can return immediately\n  if (algorithm[3] === '5') {\n    return algorithm\n  }\n\n  for (let i = 1; i < metadataList.length; ++i) {\n    const metadata = metadataList[i]\n    // If the algorithm is sha512, then it is the strongest\n    // and we can break the loop immediately\n    if (metadata.algo[3] === '5') {\n      algorithm = 'sha512'\n      break\n    // If the algorithm is sha384, then a potential sha256 or sha384 is ignored\n    } else if (algorithm[3] === '3') {\n      continue\n    // algorithm is sha256, check if algorithm is sha384 and if so, set it as\n    // the strongest\n    } else if (metadata.algo[3] === '3') {\n      algorithm = 'sha384'\n    }\n  }\n  return algorithm\n}\n\nfunction filterMetadataListByAlgorithm (metadataList, algorithm) {\n  if (metadataList.length === 1) {\n    return metadataList\n  }\n\n  let pos = 0\n  for (let i = 0; i < metadataList.length; ++i) {\n    if (metadataList[i].algo === algorithm) {\n      metadataList[pos++] = metadataList[i]\n    }\n  }\n\n  metadataList.length = pos\n\n  return metadataList\n}\n\n/**\n * Compares two base64 strings, allowing for base64url\n * in the second string.\n *\n* @param {string} actualValue always base64\n * @param {string} expectedValue base64 or base64url\n * @returns {boolean}\n */\nfunction compareBase64Mixed (actualValue, expectedValue) {\n  if (actualValue.length !== expectedValue.length) {\n    return false\n  }\n  for (let i = 0; i < actualValue.length; ++i) {\n    if (actualValue[i] !== expectedValue[i]) {\n      if (\n        (actualValue[i] === '+' && expectedValue[i] === '-') ||\n        (actualValue[i] === '/' && expectedValue[i] === '_')\n      ) {\n        continue\n      }\n      return false\n    }\n  }\n\n  return true\n}\n\n// https://w3c.github.io/webappsec-upgrade-insecure-requests/#upgrade-request\nfunction tryUpgradeRequestToAPotentiallyTrustworthyURL (request) {\n  // TODO\n}\n\n/**\n * @link {https://html.spec.whatwg.org/multipage/origin.html#same-origin}\n * @param {URL} A\n * @param {URL} B\n */\nfunction sameOrigin (A, B) {\n  // 1. If A and B are the same opaque origin, then return true.\n  if (A.origin === B.origin && A.origin === 'null') {\n    return true\n  }\n\n  // 2. If A and B are both tuple origins and their schemes,\n  //    hosts, and port are identical, then return true.\n  if (A.protocol === B.protocol && A.hostname === B.hostname && A.port === B.port) {\n    return true\n  }\n\n  // 3. Return false.\n  return false\n}\n\nfunction createDeferredPromise () {\n  let res\n  let rej\n  const promise = new Promise((resolve, reject) => {\n    res = resolve\n    rej = reject\n  })\n\n  return { promise, resolve: res, reject: rej }\n}\n\nfunction isAborted (fetchParams) {\n  return fetchParams.controller.state === 'aborted'\n}\n\nfunction isCancelled (fetchParams) {\n  return fetchParams.controller.state === 'aborted' ||\n    fetchParams.controller.state === 'terminated'\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-method-normalize\n * @param {string} method\n */\nfunction normalizeMethod (method) {\n  return normalizedMethodRecordsBase[method.toLowerCase()] ?? method\n}\n\n// https://infra.spec.whatwg.org/#serialize-a-javascript-value-to-a-json-string\nfunction serializeJavascriptValueToJSONString (value) {\n  // 1. Let result be ? Call(%JSON.stringify%, undefined, \u00AB value \u00BB).\n  const result = JSON.stringify(value)\n\n  // 2. If result is undefined, then throw a TypeError.\n  if (result === undefined) {\n    throw new TypeError('Value is not JSON serializable')\n  }\n\n  // 3. Assert: result is a string.\n  assert(typeof result === 'string')\n\n  // 4. Return result.\n  return result\n}\n\n// https://tc39.es/ecma262/#sec-%25iteratorprototype%25-object\nconst esIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))\n\n/**\n * @see https://webidl.spec.whatwg.org/#dfn-iterator-prototype-object\n * @param {string} name name of the instance\n * @param {symbol} kInternalIterator\n * @param {string | number} [keyIndex]\n * @param {string | number} [valueIndex]\n */\nfunction createIterator (name, kInternalIterator, keyIndex = 0, valueIndex = 1) {\n  class FastIterableIterator {\n    /** @type {any} */\n    #target\n    /** @type {'key' | 'value' | 'key+value'} */\n    #kind\n    /** @type {number} */\n    #index\n\n    /**\n     * @see https://webidl.spec.whatwg.org/#dfn-default-iterator-object\n     * @param {unknown} target\n     * @param {'key' | 'value' | 'key+value'} kind\n     */\n    constructor (target, kind) {\n      this.#target = target\n      this.#kind = kind\n      this.#index = 0\n    }\n\n    next () {\n      // 1. Let interface be the interface for which the iterator prototype object exists.\n      // 2. Let thisValue be the this value.\n      // 3. Let object be ? ToObject(thisValue).\n      // 4. If object is a platform object, then perform a security\n      //    check, passing:\n      // 5. If object is not a default iterator object for interface,\n      //    then throw a TypeError.\n      if (typeof this !== 'object' || this === null || !(#target in this)) {\n        throw new TypeError(\n          `'next' called on an object that does not implement interface ${name} Iterator.`\n        )\n      }\n\n      // 6. Let index be object\u2019s index.\n      // 7. Let kind be object\u2019s kind.\n      // 8. Let values be object\u2019s target's value pairs to iterate over.\n      const index = this.#index\n      const values = this.#target[kInternalIterator]\n\n      // 9. Let len be the length of values.\n      const len = values.length\n\n      // 10. If index is greater than or equal to len, then return\n      //     CreateIterResultObject(undefined, true).\n      if (index >= len) {\n        return {\n          value: undefined,\n          done: true\n        }\n      }\n\n      // 11. Let pair be the entry in values at index index.\n      const { [keyIndex]: key, [valueIndex]: value } = values[index]\n\n      // 12. Set object\u2019s index to index + 1.\n      this.#index = index + 1\n\n      // 13. Return the iterator result for pair and kind.\n\n      // https://webidl.spec.whatwg.org/#iterator-result\n\n      // 1. Let result be a value determined by the value of kind:\n      let result\n      switch (this.#kind) {\n        case 'key':\n          // 1. Let idlKey be pair\u2019s key.\n          // 2. Let key be the result of converting idlKey to an\n          //    ECMAScript value.\n          // 3. result is key.\n          result = key\n          break\n        case 'value':\n          // 1. Let idlValue be pair\u2019s value.\n          // 2. Let value be the result of converting idlValue to\n          //    an ECMAScript value.\n          // 3. result is value.\n          result = value\n          break\n        case 'key+value':\n          // 1. Let idlKey be pair\u2019s key.\n          // 2. Let idlValue be pair\u2019s value.\n          // 3. Let key be the result of converting idlKey to an\n          //    ECMAScript value.\n          // 4. Let value be the result of converting idlValue to\n          //    an ECMAScript value.\n          // 5. Let array be ! ArrayCreate(2).\n          // 6. Call ! CreateDataProperty(array, \"0\", key).\n          // 7. Call ! CreateDataProperty(array, \"1\", value).\n          // 8. result is array.\n          result = [key, value]\n          break\n      }\n\n      // 2. Return CreateIterResultObject(result, false).\n      return {\n        value: result,\n        done: false\n      }\n    }\n  }\n\n  // https://webidl.spec.whatwg.org/#dfn-iterator-prototype-object\n  // @ts-ignore\n  delete FastIterableIterator.prototype.constructor\n\n  Object.setPrototypeOf(FastIterableIterator.prototype, esIteratorPrototype)\n\n  Object.defineProperties(FastIterableIterator.prototype, {\n    [Symbol.toStringTag]: {\n      writable: false,\n      enumerable: false,\n      configurable: true,\n      value: `${name} Iterator`\n    },\n    next: { writable: true, enumerable: true, configurable: true }\n  })\n\n  /**\n   * @param {unknown} target\n   * @param {'key' | 'value' | 'key+value'} kind\n   * @returns {IterableIterator<any>}\n   */\n  return function (target, kind) {\n    return new FastIterableIterator(target, kind)\n  }\n}\n\n/**\n * @see https://webidl.spec.whatwg.org/#dfn-iterator-prototype-object\n * @param {string} name name of the instance\n * @param {any} object class\n * @param {symbol} kInternalIterator\n * @param {string | number} [keyIndex]\n * @param {string | number} [valueIndex]\n */\nfunction iteratorMixin (name, object, kInternalIterator, keyIndex = 0, valueIndex = 1) {\n  const makeIterator = createIterator(name, kInternalIterator, keyIndex, valueIndex)\n\n  const properties = {\n    keys: {\n      writable: true,\n      enumerable: true,\n      configurable: true,\n      value: function keys () {\n        webidl.brandCheck(this, object)\n        return makeIterator(this, 'key')\n      }\n    },\n    values: {\n      writable: true,\n      enumerable: true,\n      configurable: true,\n      value: function values () {\n        webidl.brandCheck(this, object)\n        return makeIterator(this, 'value')\n      }\n    },\n    entries: {\n      writable: true,\n      enumerable: true,\n      configurable: true,\n      value: function entries () {\n        webidl.brandCheck(this, object)\n        return makeIterator(this, 'key+value')\n      }\n    },\n    forEach: {\n      writable: true,\n      enumerable: true,\n      configurable: true,\n      value: function forEach (callbackfn, thisArg = globalThis) {\n        webidl.brandCheck(this, object)\n        webidl.argumentLengthCheck(arguments, 1, `${name}.forEach`)\n        if (typeof callbackfn !== 'function') {\n          throw new TypeError(\n            `Failed to execute 'forEach' on '${name}': parameter 1 is not of type 'Function'.`\n          )\n        }\n        for (const { 0: key, 1: value } of makeIterator(this, 'key+value')) {\n          callbackfn.call(thisArg, value, key, this)\n        }\n      }\n    }\n  }\n\n  return Object.defineProperties(object.prototype, {\n    ...properties,\n    [Symbol.iterator]: {\n      writable: true,\n      enumerable: false,\n      configurable: true,\n      value: properties.entries.value\n    }\n  })\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#body-fully-read\n */\nasync function fullyReadBody (body, processBody, processBodyError) {\n  // 1. If taskDestination is null, then set taskDestination to\n  //    the result of starting a new parallel queue.\n\n  // 2. Let successSteps given a byte sequence bytes be to queue a\n  //    fetch task to run processBody given bytes, with taskDestination.\n  const successSteps = processBody\n\n  // 3. Let errorSteps be to queue a fetch task to run processBodyError,\n  //    with taskDestination.\n  const errorSteps = processBodyError\n\n  // 4. Let reader be the result of getting a reader for body\u2019s stream.\n  //    If that threw an exception, then run errorSteps with that\n  //    exception and return.\n  let reader\n\n  try {\n    reader = body.stream.getReader()\n  } catch (e) {\n    errorSteps(e)\n    return\n  }\n\n  // 5. Read all bytes from reader, given successSteps and errorSteps.\n  try {\n    successSteps(await readAllBytes(reader))\n  } catch (e) {\n    errorSteps(e)\n  }\n}\n\nfunction isReadableStreamLike (stream) {\n  return stream instanceof ReadableStream || (\n    stream[Symbol.toStringTag] === 'ReadableStream' &&\n    typeof stream.tee === 'function'\n  )\n}\n\n/**\n * @param {ReadableStreamController<Uint8Array>} controller\n */\nfunction readableStreamClose (controller) {\n  try {\n    controller.close()\n    controller.byobRequest?.respond(0)\n  } catch (err) {\n    // TODO: add comment explaining why this error occurs.\n    if (!err.message.includes('Controller is already closed') && !err.message.includes('ReadableStream is already closed')) {\n      throw err\n    }\n  }\n}\n\nconst invalidIsomorphicEncodeValueRegex = /[^\\x00-\\xFF]/ // eslint-disable-line\n\n/**\n * @see https://infra.spec.whatwg.org/#isomorphic-encode\n * @param {string} input\n */\nfunction isomorphicEncode (input) {\n  // 1. Assert: input contains no code points greater than U+00FF.\n  assert(!invalidIsomorphicEncodeValueRegex.test(input))\n\n  // 2. Return a byte sequence whose length is equal to input\u2019s code\n  //    point length and whose bytes have the same values as the\n  //    values of input\u2019s code points, in the same order\n  return input\n}\n\n/**\n * @see https://streams.spec.whatwg.org/#readablestreamdefaultreader-read-all-bytes\n * @see https://streams.spec.whatwg.org/#read-loop\n * @param {ReadableStreamDefaultReader} reader\n */\nasync function readAllBytes (reader) {\n  const bytes = []\n  let byteLength = 0\n\n  while (true) {\n    const { done, value: chunk } = await reader.read()\n\n    if (done) {\n      // 1. Call successSteps with bytes.\n      return Buffer.concat(bytes, byteLength)\n    }\n\n    // 1. If chunk is not a Uint8Array object, call failureSteps\n    //    with a TypeError and abort these steps.\n    if (!isUint8Array(chunk)) {\n      throw new TypeError('Received non-Uint8Array chunk')\n    }\n\n    // 2. Append the bytes represented by chunk to bytes.\n    bytes.push(chunk)\n    byteLength += chunk.length\n\n    // 3. Read-loop given reader, bytes, successSteps, and failureSteps.\n  }\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#is-local\n * @param {URL} url\n */\nfunction urlIsLocal (url) {\n  assert('protocol' in url) // ensure it's a url object\n\n  const protocol = url.protocol\n\n  return protocol === 'about:' || protocol === 'blob:' || protocol === 'data:'\n}\n\n/**\n * @param {string|URL} url\n * @returns {boolean}\n */\nfunction urlHasHttpsScheme (url) {\n  return (\n    (\n      typeof url === 'string' &&\n      url[5] === ':' &&\n      url[0] === 'h' &&\n      url[1] === 't' &&\n      url[2] === 't' &&\n      url[3] === 'p' &&\n      url[4] === 's'\n    ) ||\n    url.protocol === 'https:'\n  )\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#http-scheme\n * @param {URL} url\n */\nfunction urlIsHttpHttpsScheme (url) {\n  assert('protocol' in url) // ensure it's a url object\n\n  const protocol = url.protocol\n\n  return protocol === 'http:' || protocol === 'https:'\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#simple-range-header-value\n * @param {string} value\n * @param {boolean} allowWhitespace\n */\nfunction simpleRangeHeaderValue (value, allowWhitespace) {\n  // 1. Let data be the isomorphic decoding of value.\n  // Note: isomorphic decoding takes a sequence of bytes (ie. a Uint8Array) and turns it into a string,\n  // nothing more. We obviously don't need to do that if value is a string already.\n  const data = value\n\n  // 2. If data does not start with \"bytes\", then return failure.\n  if (!data.startsWith('bytes')) {\n    return 'failure'\n  }\n\n  // 3. Let position be a position variable for data, initially pointing at the 5th code point of data.\n  const position = { position: 5 }\n\n  // 4. If allowWhitespace is true, collect a sequence of code points that are HTTP tab or space,\n  //    from data given position.\n  if (allowWhitespace) {\n    collectASequenceOfCodePoints(\n      (char) => char === '\\t' || char === ' ',\n      data,\n      position\n    )\n  }\n\n  // 5. If the code point at position within data is not U+003D (=), then return failure.\n  if (data.charCodeAt(position.position) !== 0x3D) {\n    return 'failure'\n  }\n\n  // 6. Advance position by 1.\n  position.position++\n\n  // 7. If allowWhitespace is true, collect a sequence of code points that are HTTP tab or space, from\n  //    data given position.\n  if (allowWhitespace) {\n    collectASequenceOfCodePoints(\n      (char) => char === '\\t' || char === ' ',\n      data,\n      position\n    )\n  }\n\n  // 8. Let rangeStart be the result of collecting a sequence of code points that are ASCII digits,\n  //    from data given position.\n  const rangeStart = collectASequenceOfCodePoints(\n    (char) => {\n      const code = char.charCodeAt(0)\n\n      return code >= 0x30 && code <= 0x39\n    },\n    data,\n    position\n  )\n\n  // 9. Let rangeStartValue be rangeStart, interpreted as decimal number, if rangeStart is not the\n  //    empty string; otherwise null.\n  const rangeStartValue = rangeStart.length ? Number(rangeStart) : null\n\n  // 10. If allowWhitespace is true, collect a sequence of code points that are HTTP tab or space,\n  //     from data given position.\n  if (allowWhitespace) {\n    collectASequenceOfCodePoints(\n      (char) => char === '\\t' || char === ' ',\n      data,\n      position\n    )\n  }\n\n  // 11. If the code point at position within data is not U+002D (-), then return failure.\n  if (data.charCodeAt(position.position) !== 0x2D) {\n    return 'failure'\n  }\n\n  // 12. Advance position by 1.\n  position.position++\n\n  // 13. If allowWhitespace is true, collect a sequence of code points that are HTTP tab\n  //     or space, from data given position.\n  // Note from Khafra: its the same step as in #8 again lol\n  if (allowWhitespace) {\n    collectASequenceOfCodePoints(\n      (char) => char === '\\t' || char === ' ',\n      data,\n      position\n    )\n  }\n\n  // 14. Let rangeEnd be the result of collecting a sequence of code points that are\n  //     ASCII digits, from data given position.\n  // Note from Khafra: you wouldn't guess it, but this is also the same step as #8\n  const rangeEnd = collectASequenceOfCodePoints(\n    (char) => {\n      const code = char.charCodeAt(0)\n\n      return code >= 0x30 && code <= 0x39\n    },\n    data,\n    position\n  )\n\n  // 15. Let rangeEndValue be rangeEnd, interpreted as decimal number, if rangeEnd\n  //     is not the empty string; otherwise null.\n  // Note from Khafra: THE SAME STEP, AGAIN!!!\n  // Note: why interpret as a decimal if we only collect ascii digits?\n  const rangeEndValue = rangeEnd.length ? Number(rangeEnd) : null\n\n  // 16. If position is not past the end of data, then return failure.\n  if (position.position < data.length) {\n    return 'failure'\n  }\n\n  // 17. If rangeEndValue and rangeStartValue are null, then return failure.\n  if (rangeEndValue === null && rangeStartValue === null) {\n    return 'failure'\n  }\n\n  // 18. If rangeStartValue and rangeEndValue are numbers, and rangeStartValue is\n  //     greater than rangeEndValue, then return failure.\n  // Note: ... when can they not be numbers?\n  if (rangeStartValue > rangeEndValue) {\n    return 'failure'\n  }\n\n  // 19. Return (rangeStartValue, rangeEndValue).\n  return { rangeStartValue, rangeEndValue }\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#build-a-content-range\n * @param {number} rangeStart\n * @param {number} rangeEnd\n * @param {number} fullLength\n */\nfunction buildContentRange (rangeStart, rangeEnd, fullLength) {\n  // 1. Let contentRange be `bytes `.\n  let contentRange = 'bytes '\n\n  // 2. Append rangeStart, serialized and isomorphic encoded, to contentRange.\n  contentRange += isomorphicEncode(`${rangeStart}`)\n\n  // 3. Append 0x2D (-) to contentRange.\n  contentRange += '-'\n\n  // 4. Append rangeEnd, serialized and isomorphic encoded to contentRange.\n  contentRange += isomorphicEncode(`${rangeEnd}`)\n\n  // 5. Append 0x2F (/) to contentRange.\n  contentRange += '/'\n\n  // 6. Append fullLength, serialized and isomorphic encoded to contentRange.\n  contentRange += isomorphicEncode(`${fullLength}`)\n\n  // 7. Return contentRange.\n  return contentRange\n}\n\n// A Stream, which pipes the response to zlib.createInflate() or\n// zlib.createInflateRaw() depending on the first byte of the Buffer.\n// If the lower byte of the first byte is 0x08, then the stream is\n// interpreted as a zlib stream, otherwise it's interpreted as a\n// raw deflate stream.\nclass InflateStream extends Transform {\n  #zlibOptions\n\n  /** @param {zlib.ZlibOptions} [zlibOptions] */\n  constructor (zlibOptions) {\n    super()\n    this.#zlibOptions = zlibOptions\n  }\n\n  _transform (chunk, encoding, callback) {\n    if (!this._inflateStream) {\n      if (chunk.length === 0) {\n        callback()\n        return\n      }\n      this._inflateStream = (chunk[0] & 0x0F) === 0x08\n        ? zlib.createInflate(this.#zlibOptions)\n        : zlib.createInflateRaw(this.#zlibOptions)\n\n      this._inflateStream.on('data', this.push.bind(this))\n      this._inflateStream.on('end', () => this.push(null))\n      this._inflateStream.on('error', (err) => this.destroy(err))\n    }\n\n    this._inflateStream.write(chunk, encoding, callback)\n  }\n\n  _final (callback) {\n    if (this._inflateStream) {\n      this._inflateStream.end()\n      this._inflateStream = null\n    }\n    callback()\n  }\n}\n\n/**\n * @param {zlib.ZlibOptions} [zlibOptions]\n * @returns {InflateStream}\n */\nfunction createInflate (zlibOptions) {\n  return new InflateStream(zlibOptions)\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-header-extract-mime-type\n * @param {import('./headers').HeadersList} headers\n */\nfunction extractMimeType (headers) {\n  // 1. Let charset be null.\n  let charset = null\n\n  // 2. Let essence be null.\n  let essence = null\n\n  // 3. Let mimeType be null.\n  let mimeType = null\n\n  // 4. Let values be the result of getting, decoding, and splitting `Content-Type` from headers.\n  const values = getDecodeSplit('content-type', headers)\n\n  // 5. If values is null, then return failure.\n  if (values === null) {\n    return 'failure'\n  }\n\n  // 6. For each value of values:\n  for (const value of values) {\n    // 6.1. Let temporaryMimeType be the result of parsing value.\n    const temporaryMimeType = parseMIMEType(value)\n\n    // 6.2. If temporaryMimeType is failure or its essence is \"*/*\", then continue.\n    if (temporaryMimeType === 'failure' || temporaryMimeType.essence === '*/*') {\n      continue\n    }\n\n    // 6.3. Set mimeType to temporaryMimeType.\n    mimeType = temporaryMimeType\n\n    // 6.4. If mimeType\u2019s essence is not essence, then:\n    if (mimeType.essence !== essence) {\n      // 6.4.1. Set charset to null.\n      charset = null\n\n      // 6.4.2. If mimeType\u2019s parameters[\"charset\"] exists, then set charset to\n      //        mimeType\u2019s parameters[\"charset\"].\n      if (mimeType.parameters.has('charset')) {\n        charset = mimeType.parameters.get('charset')\n      }\n\n      // 6.4.3. Set essence to mimeType\u2019s essence.\n      essence = mimeType.essence\n    } else if (!mimeType.parameters.has('charset') && charset !== null) {\n      // 6.5. Otherwise, if mimeType\u2019s parameters[\"charset\"] does not exist, and\n      //      charset is non-null, set mimeType\u2019s parameters[\"charset\"] to charset.\n      mimeType.parameters.set('charset', charset)\n    }\n  }\n\n  // 7. If mimeType is null, then return failure.\n  if (mimeType == null) {\n    return 'failure'\n  }\n\n  // 8. Return mimeType.\n  return mimeType\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#header-value-get-decode-and-split\n * @param {string|null} value\n */\nfunction gettingDecodingSplitting (value) {\n  // 1. Let input be the result of isomorphic decoding value.\n  const input = value\n\n  // 2. Let position be a position variable for input, initially pointing at the start of input.\n  const position = { position: 0 }\n\n  // 3. Let values be a list of strings, initially empty.\n  const values = []\n\n  // 4. Let temporaryValue be the empty string.\n  let temporaryValue = ''\n\n  // 5. While position is not past the end of input:\n  while (position.position < input.length) {\n    // 5.1. Append the result of collecting a sequence of code points that are not U+0022 (\")\n    //      or U+002C (,) from input, given position, to temporaryValue.\n    temporaryValue += collectASequenceOfCodePoints(\n      (char) => char !== '\"' && char !== ',',\n      input,\n      position\n    )\n\n    // 5.2. If position is not past the end of input, then:\n    if (position.position < input.length) {\n      // 5.2.1. If the code point at position within input is U+0022 (\"), then:\n      if (input.charCodeAt(position.position) === 0x22) {\n        // 5.2.1.1. Append the result of collecting an HTTP quoted string from input, given position, to temporaryValue.\n        temporaryValue += collectAnHTTPQuotedString(\n          input,\n          position\n        )\n\n        // 5.2.1.2. If position is not past the end of input, then continue.\n        if (position.position < input.length) {\n          continue\n        }\n      } else {\n        // 5.2.2. Otherwise:\n\n        // 5.2.2.1. Assert: the code point at position within input is U+002C (,).\n        assert(input.charCodeAt(position.position) === 0x2C)\n\n        // 5.2.2.2. Advance position by 1.\n        position.position++\n      }\n    }\n\n    // 5.3. Remove all HTTP tab or space from the start and end of temporaryValue.\n    temporaryValue = removeChars(temporaryValue, true, true, (char) => char === 0x9 || char === 0x20)\n\n    // 5.4. Append temporaryValue to values.\n    values.push(temporaryValue)\n\n    // 5.6. Set temporaryValue to the empty string.\n    temporaryValue = ''\n  }\n\n  // 6. Return values.\n  return values\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-header-list-get-decode-split\n * @param {string} name lowercase header name\n * @param {import('./headers').HeadersList} list\n */\nfunction getDecodeSplit (name, list) {\n  // 1. Let value be the result of getting name from list.\n  const value = list.get(name, true)\n\n  // 2. If value is null, then return null.\n  if (value === null) {\n    return null\n  }\n\n  // 3. Return the result of getting, decoding, and splitting value.\n  return gettingDecodingSplitting(value)\n}\n\nconst textDecoder = new TextDecoder()\n\n/**\n * @see https://encoding.spec.whatwg.org/#utf-8-decode\n * @param {Buffer} buffer\n */\nfunction utf8DecodeBytes (buffer) {\n  if (buffer.length === 0) {\n    return ''\n  }\n\n  // 1. Let buffer be the result of peeking three bytes from\n  //    ioQueue, converted to a byte sequence.\n\n  // 2. If buffer is 0xEF 0xBB 0xBF, then read three\n  //    bytes from ioQueue. (Do nothing with those bytes.)\n  if (buffer[0] === 0xEF && buffer[1] === 0xBB && buffer[2] === 0xBF) {\n    buffer = buffer.subarray(3)\n  }\n\n  // 3. Process a queue with an instance of UTF-8\u2019s\n  //    decoder, ioQueue, output, and \"replacement\".\n  const output = textDecoder.decode(buffer)\n\n  // 4. Return output.\n  return output\n}\n\nclass EnvironmentSettingsObjectBase {\n  get baseUrl () {\n    return getGlobalOrigin()\n  }\n\n  get origin () {\n    return this.baseUrl?.origin\n  }\n\n  policyContainer = makePolicyContainer()\n}\n\nclass EnvironmentSettingsObject {\n  settingsObject = new EnvironmentSettingsObjectBase()\n}\n\nconst environmentSettingsObject = new EnvironmentSettingsObject()\n\nmodule.exports = {\n  isAborted,\n  isCancelled,\n  isValidEncodedURL,\n  createDeferredPromise,\n  ReadableStreamFrom,\n  tryUpgradeRequestToAPotentiallyTrustworthyURL,\n  clampAndCoarsenConnectionTimingInfo,\n  coarsenedSharedCurrentTime,\n  determineRequestsReferrer,\n  makePolicyContainer,\n  clonePolicyContainer,\n  appendFetchMetadata,\n  appendRequestOriginHeader,\n  TAOCheck,\n  corsCheck,\n  crossOriginResourcePolicyCheck,\n  createOpaqueTimingInfo,\n  setRequestReferrerPolicyOnRedirect,\n  isValidHTTPToken,\n  requestBadPort,\n  requestCurrentURL,\n  responseURL,\n  responseLocationURL,\n  isBlobLike,\n  isURLPotentiallyTrustworthy,\n  isValidReasonPhrase,\n  sameOrigin,\n  normalizeMethod,\n  serializeJavascriptValueToJSONString,\n  iteratorMixin,\n  createIterator,\n  isValidHeaderName,\n  isValidHeaderValue,\n  isErrorLike,\n  fullyReadBody,\n  bytesMatch,\n  isReadableStreamLike,\n  readableStreamClose,\n  isomorphicEncode,\n  urlIsLocal,\n  urlHasHttpsScheme,\n  urlIsHttpHttpsScheme,\n  readAllBytes,\n  simpleRangeHeaderValue,\n  buildContentRange,\n  parseMetadata,\n  createInflate,\n  extractMimeType,\n  getDecodeSplit,\n  utf8DecodeBytes,\n  environmentSettingsObject\n}\n", "'use strict'\n\nmodule.exports = {\n  kUrl: Symbol('url'),\n  kHeaders: Symbol('headers'),\n  kSignal: Symbol('signal'),\n  kState: Symbol('state'),\n  kDispatcher: Symbol('dispatcher')\n}\n", "'use strict'\n\nconst { Blob, File } = require('node:buffer')\nconst { kState } = require('./symbols')\nconst { webidl } = require('./webidl')\n\n// TODO(@KhafraDev): remove\nclass FileLike {\n  constructor (blobLike, fileName, options = {}) {\n    // TODO: argument idl type check\n\n    // The File constructor is invoked with two or three parameters, depending\n    // on whether the optional dictionary parameter is used. When the File()\n    // constructor is invoked, user agents must run the following steps:\n\n    // 1. Let bytes be the result of processing blob parts given fileBits and\n    // options.\n\n    // 2. Let n be the fileName argument to the constructor.\n    const n = fileName\n\n    // 3. Process FilePropertyBag dictionary argument by running the following\n    // substeps:\n\n    //    1. If the type member is provided and is not the empty string, let t\n    //    be set to the type dictionary member. If t contains any characters\n    //    outside the range U+0020 to U+007E, then set t to the empty string\n    //    and return from these substeps.\n    //    TODO\n    const t = options.type\n\n    //    2. Convert every character in t to ASCII lowercase.\n    //    TODO\n\n    //    3. If the lastModified member is provided, let d be set to the\n    //    lastModified dictionary member. If it is not provided, set d to the\n    //    current date and time represented as the number of milliseconds since\n    //    the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]).\n    const d = options.lastModified ?? Date.now()\n\n    // 4. Return a new File object F such that:\n    // F refers to the bytes byte sequence.\n    // F.size is set to the number of total bytes in bytes.\n    // F.name is set to n.\n    // F.type is set to t.\n    // F.lastModified is set to d.\n\n    this[kState] = {\n      blobLike,\n      name: n,\n      type: t,\n      lastModified: d\n    }\n  }\n\n  stream (...args) {\n    webidl.brandCheck(this, FileLike)\n\n    return this[kState].blobLike.stream(...args)\n  }\n\n  arrayBuffer (...args) {\n    webidl.brandCheck(this, FileLike)\n\n    return this[kState].blobLike.arrayBuffer(...args)\n  }\n\n  slice (...args) {\n    webidl.brandCheck(this, FileLike)\n\n    return this[kState].blobLike.slice(...args)\n  }\n\n  text (...args) {\n    webidl.brandCheck(this, FileLike)\n\n    return this[kState].blobLike.text(...args)\n  }\n\n  get size () {\n    webidl.brandCheck(this, FileLike)\n\n    return this[kState].blobLike.size\n  }\n\n  get type () {\n    webidl.brandCheck(this, FileLike)\n\n    return this[kState].blobLike.type\n  }\n\n  get name () {\n    webidl.brandCheck(this, FileLike)\n\n    return this[kState].name\n  }\n\n  get lastModified () {\n    webidl.brandCheck(this, FileLike)\n\n    return this[kState].lastModified\n  }\n\n  get [Symbol.toStringTag] () {\n    return 'File'\n  }\n}\n\nwebidl.converters.Blob = webidl.interfaceConverter(Blob)\n\n// If this function is moved to ./util.js, some tools (such as\n// rollup) will warn about circular dependencies. See:\n// https://github.com/nodejs/undici/issues/1629\nfunction isFileLike (object) {\n  return (\n    (object instanceof File) ||\n    (\n      object &&\n      (typeof object.stream === 'function' ||\n      typeof object.arrayBuffer === 'function') &&\n      object[Symbol.toStringTag] === 'File'\n    )\n  )\n}\n\nmodule.exports = { FileLike, isFileLike }\n", "'use strict'\n\nconst { isBlobLike, iteratorMixin } = require('./util')\nconst { kState } = require('./symbols')\nconst { kEnumerableProperty } = require('../../core/util')\nconst { FileLike, isFileLike } = require('./file')\nconst { webidl } = require('./webidl')\nconst { File: NativeFile } = require('node:buffer')\nconst nodeUtil = require('node:util')\n\n/** @type {globalThis['File']} */\nconst File = globalThis.File ?? NativeFile\n\n// https://xhr.spec.whatwg.org/#formdata\nclass FormData {\n  constructor (form) {\n    webidl.util.markAsUncloneable(this)\n\n    if (form !== undefined) {\n      throw webidl.errors.conversionFailed({\n        prefix: 'FormData constructor',\n        argument: 'Argument 1',\n        types: ['undefined']\n      })\n    }\n\n    this[kState] = []\n  }\n\n  append (name, value, filename = undefined) {\n    webidl.brandCheck(this, FormData)\n\n    const prefix = 'FormData.append'\n    webidl.argumentLengthCheck(arguments, 2, prefix)\n\n    if (arguments.length === 3 && !isBlobLike(value)) {\n      throw new TypeError(\n        \"Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'\"\n      )\n    }\n\n    // 1. Let value be value if given; otherwise blobValue.\n\n    name = webidl.converters.USVString(name, prefix, 'name')\n    value = isBlobLike(value)\n      ? webidl.converters.Blob(value, prefix, 'value', { strict: false })\n      : webidl.converters.USVString(value, prefix, 'value')\n    filename = arguments.length === 3\n      ? webidl.converters.USVString(filename, prefix, 'filename')\n      : undefined\n\n    // 2. Let entry be the result of creating an entry with\n    // name, value, and filename if given.\n    const entry = makeEntry(name, value, filename)\n\n    // 3. Append entry to this\u2019s entry list.\n    this[kState].push(entry)\n  }\n\n  delete (name) {\n    webidl.brandCheck(this, FormData)\n\n    const prefix = 'FormData.delete'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    name = webidl.converters.USVString(name, prefix, 'name')\n\n    // The delete(name) method steps are to remove all entries whose name\n    // is name from this\u2019s entry list.\n    this[kState] = this[kState].filter(entry => entry.name !== name)\n  }\n\n  get (name) {\n    webidl.brandCheck(this, FormData)\n\n    const prefix = 'FormData.get'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    name = webidl.converters.USVString(name, prefix, 'name')\n\n    // 1. If there is no entry whose name is name in this\u2019s entry list,\n    // then return null.\n    const idx = this[kState].findIndex((entry) => entry.name === name)\n    if (idx === -1) {\n      return null\n    }\n\n    // 2. Return the value of the first entry whose name is name from\n    // this\u2019s entry list.\n    return this[kState][idx].value\n  }\n\n  getAll (name) {\n    webidl.brandCheck(this, FormData)\n\n    const prefix = 'FormData.getAll'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    name = webidl.converters.USVString(name, prefix, 'name')\n\n    // 1. If there is no entry whose name is name in this\u2019s entry list,\n    // then return the empty list.\n    // 2. Return the values of all entries whose name is name, in order,\n    // from this\u2019s entry list.\n    return this[kState]\n      .filter((entry) => entry.name === name)\n      .map((entry) => entry.value)\n  }\n\n  has (name) {\n    webidl.brandCheck(this, FormData)\n\n    const prefix = 'FormData.has'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    name = webidl.converters.USVString(name, prefix, 'name')\n\n    // The has(name) method steps are to return true if there is an entry\n    // whose name is name in this\u2019s entry list; otherwise false.\n    return this[kState].findIndex((entry) => entry.name === name) !== -1\n  }\n\n  set (name, value, filename = undefined) {\n    webidl.brandCheck(this, FormData)\n\n    const prefix = 'FormData.set'\n    webidl.argumentLengthCheck(arguments, 2, prefix)\n\n    if (arguments.length === 3 && !isBlobLike(value)) {\n      throw new TypeError(\n        \"Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'\"\n      )\n    }\n\n    // The set(name, value) and set(name, blobValue, filename) method steps\n    // are:\n\n    // 1. Let value be value if given; otherwise blobValue.\n\n    name = webidl.converters.USVString(name, prefix, 'name')\n    value = isBlobLike(value)\n      ? webidl.converters.Blob(value, prefix, 'name', { strict: false })\n      : webidl.converters.USVString(value, prefix, 'name')\n    filename = arguments.length === 3\n      ? webidl.converters.USVString(filename, prefix, 'name')\n      : undefined\n\n    // 2. Let entry be the result of creating an entry with name, value, and\n    // filename if given.\n    const entry = makeEntry(name, value, filename)\n\n    // 3. If there are entries in this\u2019s entry list whose name is name, then\n    // replace the first such entry with entry and remove the others.\n    const idx = this[kState].findIndex((entry) => entry.name === name)\n    if (idx !== -1) {\n      this[kState] = [\n        ...this[kState].slice(0, idx),\n        entry,\n        ...this[kState].slice(idx + 1).filter((entry) => entry.name !== name)\n      ]\n    } else {\n      // 4. Otherwise, append entry to this\u2019s entry list.\n      this[kState].push(entry)\n    }\n  }\n\n  [nodeUtil.inspect.custom] (depth, options) {\n    const state = this[kState].reduce((a, b) => {\n      if (a[b.name]) {\n        if (Array.isArray(a[b.name])) {\n          a[b.name].push(b.value)\n        } else {\n          a[b.name] = [a[b.name], b.value]\n        }\n      } else {\n        a[b.name] = b.value\n      }\n\n      return a\n    }, { __proto__: null })\n\n    options.depth ??= depth\n    options.colors ??= true\n\n    const output = nodeUtil.formatWithOptions(options, state)\n\n    // remove [Object null prototype]\n    return `FormData ${output.slice(output.indexOf(']') + 2)}`\n  }\n}\n\niteratorMixin('FormData', FormData, kState, 'name', 'value')\n\nObject.defineProperties(FormData.prototype, {\n  append: kEnumerableProperty,\n  delete: kEnumerableProperty,\n  get: kEnumerableProperty,\n  getAll: kEnumerableProperty,\n  has: kEnumerableProperty,\n  set: kEnumerableProperty,\n  [Symbol.toStringTag]: {\n    value: 'FormData',\n    configurable: true\n  }\n})\n\n/**\n * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#create-an-entry\n * @param {string} name\n * @param {string|Blob} value\n * @param {?string} filename\n * @returns\n */\nfunction makeEntry (name, value, filename) {\n  // 1. Set name to the result of converting name into a scalar value string.\n  // Note: This operation was done by the webidl converter USVString.\n\n  // 2. If value is a string, then set value to the result of converting\n  //    value into a scalar value string.\n  if (typeof value === 'string') {\n    // Note: This operation was done by the webidl converter USVString.\n  } else {\n    // 3. Otherwise:\n\n    // 1. If value is not a File object, then set value to a new File object,\n    //    representing the same bytes, whose name attribute value is \"blob\"\n    if (!isFileLike(value)) {\n      value = value instanceof Blob\n        ? new File([value], 'blob', { type: value.type })\n        : new FileLike(value, 'blob', { type: value.type })\n    }\n\n    // 2. If filename is given, then set value to a new File object,\n    //    representing the same bytes, whose name attribute is filename.\n    if (filename !== undefined) {\n      /** @type {FilePropertyBag} */\n      const options = {\n        type: value.type,\n        lastModified: value.lastModified\n      }\n\n      value = value instanceof NativeFile\n        ? new File([value], filename, options)\n        : new FileLike(value, filename, options)\n    }\n  }\n\n  // 4. Return an entry whose name is name and whose value is value.\n  return { name, value }\n}\n\nmodule.exports = { FormData, makeEntry }\n", "'use strict'\n\nconst { isUSVString, bufferToLowerCasedHeaderName } = require('../../core/util')\nconst { utf8DecodeBytes } = require('./util')\nconst { HTTP_TOKEN_CODEPOINTS, isomorphicDecode } = require('./data-url')\nconst { isFileLike } = require('./file')\nconst { makeEntry } = require('./formdata')\nconst assert = require('node:assert')\nconst { File: NodeFile } = require('node:buffer')\n\nconst File = globalThis.File ?? NodeFile\n\nconst formDataNameBuffer = Buffer.from('form-data; name=\"')\nconst filenameBuffer = Buffer.from('; filename')\nconst dd = Buffer.from('--')\nconst ddcrlf = Buffer.from('--\\r\\n')\n\n/**\n * @param {string} chars\n */\nfunction isAsciiString (chars) {\n  for (let i = 0; i < chars.length; ++i) {\n    if ((chars.charCodeAt(i) & ~0x7F) !== 0) {\n      return false\n    }\n  }\n  return true\n}\n\n/**\n * @see https://andreubotella.github.io/multipart-form-data/#multipart-form-data-boundary\n * @param {string} boundary\n */\nfunction validateBoundary (boundary) {\n  const length = boundary.length\n\n  // - its length is greater or equal to 27 and lesser or equal to 70, and\n  if (length < 27 || length > 70) {\n    return false\n  }\n\n  // - it is composed by bytes in the ranges 0x30 to 0x39, 0x41 to 0x5A, or\n  //   0x61 to 0x7A, inclusive (ASCII alphanumeric), or which are 0x27 ('),\n  //   0x2D (-) or 0x5F (_).\n  for (let i = 0; i < length; ++i) {\n    const cp = boundary.charCodeAt(i)\n\n    if (!(\n      (cp >= 0x30 && cp <= 0x39) ||\n      (cp >= 0x41 && cp <= 0x5a) ||\n      (cp >= 0x61 && cp <= 0x7a) ||\n      cp === 0x27 ||\n      cp === 0x2d ||\n      cp === 0x5f\n    )) {\n      return false\n    }\n  }\n\n  return true\n}\n\n/**\n * @see https://andreubotella.github.io/multipart-form-data/#multipart-form-data-parser\n * @param {Buffer} input\n * @param {ReturnType<import('./data-url')['parseMIMEType']>} mimeType\n */\nfunction multipartFormDataParser (input, mimeType) {\n  // 1. Assert: mimeType\u2019s essence is \"multipart/form-data\".\n  assert(mimeType !== 'failure' && mimeType.essence === 'multipart/form-data')\n\n  const boundaryString = mimeType.parameters.get('boundary')\n\n  // 2. If mimeType\u2019s parameters[\"boundary\"] does not exist, return failure.\n  //    Otherwise, let boundary be the result of UTF-8 decoding mimeType\u2019s\n  //    parameters[\"boundary\"].\n  if (boundaryString === undefined) {\n    return 'failure'\n  }\n\n  const boundary = Buffer.from(`--${boundaryString}`, 'utf8')\n\n  // 3. Let entry list be an empty entry list.\n  const entryList = []\n\n  // 4. Let position be a pointer to a byte in input, initially pointing at\n  //    the first byte.\n  const position = { position: 0 }\n\n  // Note: undici addition, allows leading and trailing CRLFs.\n  while (input[position.position] === 0x0d && input[position.position + 1] === 0x0a) {\n    position.position += 2\n  }\n\n  let trailing = input.length\n\n  while (input[trailing - 1] === 0x0a && input[trailing - 2] === 0x0d) {\n    trailing -= 2\n  }\n\n  if (trailing !== input.length) {\n    input = input.subarray(0, trailing)\n  }\n\n  // 5. While true:\n  while (true) {\n    // 5.1. If position points to a sequence of bytes starting with 0x2D 0x2D\n    //      (`--`) followed by boundary, advance position by 2 + the length of\n    //      boundary. Otherwise, return failure.\n    // Note: boundary is padded with 2 dashes already, no need to add 2.\n    if (input.subarray(position.position, position.position + boundary.length).equals(boundary)) {\n      position.position += boundary.length\n    } else {\n      return 'failure'\n    }\n\n    // 5.2. If position points to the sequence of bytes 0x2D 0x2D 0x0D 0x0A\n    //      (`--` followed by CR LF) followed by the end of input, return entry list.\n    // Note: a body does NOT need to end with CRLF. It can end with --.\n    if (\n      (position.position === input.length - 2 && bufferStartsWith(input, dd, position)) ||\n      (position.position === input.length - 4 && bufferStartsWith(input, ddcrlf, position))\n    ) {\n      return entryList\n    }\n\n    // 5.3. If position does not point to a sequence of bytes starting with 0x0D\n    //      0x0A (CR LF), return failure.\n    if (input[position.position] !== 0x0d || input[position.position + 1] !== 0x0a) {\n      return 'failure'\n    }\n\n    // 5.4. Advance position by 2. (This skips past the newline.)\n    position.position += 2\n\n    // 5.5. Let name, filename and contentType be the result of parsing\n    //      multipart/form-data headers on input and position, if the result\n    //      is not failure. Otherwise, return failure.\n    const result = parseMultipartFormDataHeaders(input, position)\n\n    if (result === 'failure') {\n      return 'failure'\n    }\n\n    let { name, filename, contentType, encoding } = result\n\n    // 5.6. Advance position by 2. (This skips past the empty line that marks\n    //      the end of the headers.)\n    position.position += 2\n\n    // 5.7. Let body be the empty byte sequence.\n    let body\n\n    // 5.8. Body loop: While position is not past the end of input:\n    // TODO: the steps here are completely wrong\n    {\n      const boundaryIndex = input.indexOf(boundary.subarray(2), position.position)\n\n      if (boundaryIndex === -1) {\n        return 'failure'\n      }\n\n      body = input.subarray(position.position, boundaryIndex - 4)\n\n      position.position += body.length\n\n      // Note: position must be advanced by the body's length before being\n      // decoded, otherwise the parsing will fail.\n      if (encoding === 'base64') {\n        body = Buffer.from(body.toString(), 'base64')\n      }\n    }\n\n    // 5.9. If position does not point to a sequence of bytes starting with\n    //      0x0D 0x0A (CR LF), return failure. Otherwise, advance position by 2.\n    if (input[position.position] !== 0x0d || input[position.position + 1] !== 0x0a) {\n      return 'failure'\n    } else {\n      position.position += 2\n    }\n\n    // 5.10. If filename is not null:\n    let value\n\n    if (filename !== null) {\n      // 5.10.1. If contentType is null, set contentType to \"text/plain\".\n      contentType ??= 'text/plain'\n\n      // 5.10.2. If contentType is not an ASCII string, set contentType to the empty string.\n\n      // Note: `buffer.isAscii` can be used at zero-cost, but converting a string to a buffer is a high overhead.\n      // Content-Type is a relatively small string, so it is faster to use `String#charCodeAt`.\n      if (!isAsciiString(contentType)) {\n        contentType = ''\n      }\n\n      // 5.10.3. Let value be a new File object with name filename, type contentType, and body body.\n      value = new File([body], filename, { type: contentType })\n    } else {\n      // 5.11. Otherwise:\n\n      // 5.11.1. Let value be the UTF-8 decoding without BOM of body.\n      value = utf8DecodeBytes(Buffer.from(body))\n    }\n\n    // 5.12. Assert: name is a scalar value string and value is either a scalar value string or a File object.\n    assert(isUSVString(name))\n    assert((typeof value === 'string' && isUSVString(value)) || isFileLike(value))\n\n    // 5.13. Create an entry with name and value, and append it to entry list.\n    entryList.push(makeEntry(name, value, filename))\n  }\n}\n\n/**\n * @see https://andreubotella.github.io/multipart-form-data/#parse-multipart-form-data-headers\n * @param {Buffer} input\n * @param {{ position: number }} position\n */\nfunction parseMultipartFormDataHeaders (input, position) {\n  // 1. Let name, filename and contentType be null.\n  let name = null\n  let filename = null\n  let contentType = null\n  let encoding = null\n\n  // 2. While true:\n  while (true) {\n    // 2.1. If position points to a sequence of bytes starting with 0x0D 0x0A (CR LF):\n    if (input[position.position] === 0x0d && input[position.position + 1] === 0x0a) {\n      // 2.1.1. If name is null, return failure.\n      if (name === null) {\n        return 'failure'\n      }\n\n      // 2.1.2. Return name, filename and contentType.\n      return { name, filename, contentType, encoding }\n    }\n\n    // 2.2. Let header name be the result of collecting a sequence of bytes that are\n    //      not 0x0A (LF), 0x0D (CR) or 0x3A (:), given position.\n    let headerName = collectASequenceOfBytes(\n      (char) => char !== 0x0a && char !== 0x0d && char !== 0x3a,\n      input,\n      position\n    )\n\n    // 2.3. Remove any HTTP tab or space bytes from the start or end of header name.\n    headerName = removeChars(headerName, true, true, (char) => char === 0x9 || char === 0x20)\n\n    // 2.4. If header name does not match the field-name token production, return failure.\n    if (!HTTP_TOKEN_CODEPOINTS.test(headerName.toString())) {\n      return 'failure'\n    }\n\n    // 2.5. If the byte at position is not 0x3A (:), return failure.\n    if (input[position.position] !== 0x3a) {\n      return 'failure'\n    }\n\n    // 2.6. Advance position by 1.\n    position.position++\n\n    // 2.7. Collect a sequence of bytes that are HTTP tab or space bytes given position.\n    //      (Do nothing with those bytes.)\n    collectASequenceOfBytes(\n      (char) => char === 0x20 || char === 0x09,\n      input,\n      position\n    )\n\n    // 2.8. Byte-lowercase header name and switch on the result:\n    switch (bufferToLowerCasedHeaderName(headerName)) {\n      case 'content-disposition': {\n        // 1. Set name and filename to null.\n        name = filename = null\n\n        // 2. If position does not point to a sequence of bytes starting with\n        //    `form-data; name=\"`, return failure.\n        if (!bufferStartsWith(input, formDataNameBuffer, position)) {\n          return 'failure'\n        }\n\n        // 3. Advance position so it points at the byte after the next 0x22 (\")\n        //    byte (the one in the sequence of bytes matched above).\n        position.position += 17\n\n        // 4. Set name to the result of parsing a multipart/form-data name given\n        //    input and position, if the result is not failure. Otherwise, return\n        //    failure.\n        name = parseMultipartFormDataName(input, position)\n\n        if (name === null) {\n          return 'failure'\n        }\n\n        // 5. If position points to a sequence of bytes starting with `; filename=\"`:\n        if (bufferStartsWith(input, filenameBuffer, position)) {\n          // Note: undici also handles filename*\n          let check = position.position + filenameBuffer.length\n\n          if (input[check] === 0x2a) {\n            position.position += 1\n            check += 1\n          }\n\n          if (input[check] !== 0x3d || input[check + 1] !== 0x22) { // =\"\n            return 'failure'\n          }\n\n          // 1. Advance position so it points at the byte after the next 0x22 (\") byte\n          //    (the one in the sequence of bytes matched above).\n          position.position += 12\n\n          // 2. Set filename to the result of parsing a multipart/form-data name given\n          //    input and position, if the result is not failure. Otherwise, return failure.\n          filename = parseMultipartFormDataName(input, position)\n\n          if (filename === null) {\n            return 'failure'\n          }\n        }\n\n        break\n      }\n      case 'content-type': {\n        // 1. Let header value be the result of collecting a sequence of bytes that are\n        //    not 0x0A (LF) or 0x0D (CR), given position.\n        let headerValue = collectASequenceOfBytes(\n          (char) => char !== 0x0a && char !== 0x0d,\n          input,\n          position\n        )\n\n        // 2. Remove any HTTP tab or space bytes from the end of header value.\n        headerValue = removeChars(headerValue, false, true, (char) => char === 0x9 || char === 0x20)\n\n        // 3. Set contentType to the isomorphic decoding of header value.\n        contentType = isomorphicDecode(headerValue)\n\n        break\n      }\n      case 'content-transfer-encoding': {\n        let headerValue = collectASequenceOfBytes(\n          (char) => char !== 0x0a && char !== 0x0d,\n          input,\n          position\n        )\n\n        headerValue = removeChars(headerValue, false, true, (char) => char === 0x9 || char === 0x20)\n\n        encoding = isomorphicDecode(headerValue)\n\n        break\n      }\n      default: {\n        // Collect a sequence of bytes that are not 0x0A (LF) or 0x0D (CR), given position.\n        // (Do nothing with those bytes.)\n        collectASequenceOfBytes(\n          (char) => char !== 0x0a && char !== 0x0d,\n          input,\n          position\n        )\n      }\n    }\n\n    // 2.9. If position does not point to a sequence of bytes starting with 0x0D 0x0A\n    //      (CR LF), return failure. Otherwise, advance position by 2 (past the newline).\n    if (input[position.position] !== 0x0d && input[position.position + 1] !== 0x0a) {\n      return 'failure'\n    } else {\n      position.position += 2\n    }\n  }\n}\n\n/**\n * @see https://andreubotella.github.io/multipart-form-data/#parse-a-multipart-form-data-name\n * @param {Buffer} input\n * @param {{ position: number }} position\n */\nfunction parseMultipartFormDataName (input, position) {\n  // 1. Assert: The byte at (position - 1) is 0x22 (\").\n  assert(input[position.position - 1] === 0x22)\n\n  // 2. Let name be the result of collecting a sequence of bytes that are not 0x0A (LF), 0x0D (CR) or 0x22 (\"), given position.\n  /** @type {string | Buffer} */\n  let name = collectASequenceOfBytes(\n    (char) => char !== 0x0a && char !== 0x0d && char !== 0x22,\n    input,\n    position\n  )\n\n  // 3. If the byte at position is not 0x22 (\"), return failure. Otherwise, advance position by 1.\n  if (input[position.position] !== 0x22) {\n    return null // name could be 'failure'\n  } else {\n    position.position++\n  }\n\n  // 4. Replace any occurrence of the following subsequences in name with the given byte:\n  // - `%0A`: 0x0A (LF)\n  // - `%0D`: 0x0D (CR)\n  // - `%22`: 0x22 (\")\n  name = new TextDecoder().decode(name)\n    .replace(/%0A/ig, '\\n')\n    .replace(/%0D/ig, '\\r')\n    .replace(/%22/g, '\"')\n\n  // 5. Return the UTF-8 decoding without BOM of name.\n  return name\n}\n\n/**\n * @param {(char: number) => boolean} condition\n * @param {Buffer} input\n * @param {{ position: number }} position\n */\nfunction collectASequenceOfBytes (condition, input, position) {\n  let start = position.position\n\n  while (start < input.length && condition(input[start])) {\n    ++start\n  }\n\n  return input.subarray(position.position, (position.position = start))\n}\n\n/**\n * @param {Buffer} buf\n * @param {boolean} leading\n * @param {boolean} trailing\n * @param {(charCode: number) => boolean} predicate\n * @returns {Buffer}\n */\nfunction removeChars (buf, leading, trailing, predicate) {\n  let lead = 0\n  let trail = buf.length - 1\n\n  if (leading) {\n    while (lead < buf.length && predicate(buf[lead])) lead++\n  }\n\n  if (trailing) {\n    while (trail > 0 && predicate(buf[trail])) trail--\n  }\n\n  return lead === 0 && trail === buf.length - 1 ? buf : buf.subarray(lead, trail + 1)\n}\n\n/**\n * Checks if {@param buffer} starts with {@param start}\n * @param {Buffer} buffer\n * @param {Buffer} start\n * @param {{ position: number }} position\n */\nfunction bufferStartsWith (buffer, start, position) {\n  if (buffer.length < start.length) {\n    return false\n  }\n\n  for (let i = 0; i < start.length; i++) {\n    if (start[i] !== buffer[position.position + i]) {\n      return false\n    }\n  }\n\n  return true\n}\n\nmodule.exports = {\n  multipartFormDataParser,\n  validateBoundary\n}\n", "'use strict'\n\nconst util = require('../../core/util')\nconst {\n  ReadableStreamFrom,\n  isBlobLike,\n  isReadableStreamLike,\n  readableStreamClose,\n  createDeferredPromise,\n  fullyReadBody,\n  extractMimeType,\n  utf8DecodeBytes\n} = require('./util')\nconst { FormData } = require('./formdata')\nconst { kState } = require('./symbols')\nconst { webidl } = require('./webidl')\nconst { Blob } = require('node:buffer')\nconst assert = require('node:assert')\nconst { isErrored, isDisturbed } = require('node:stream')\nconst { isArrayBuffer } = require('node:util/types')\nconst { serializeAMimeType } = require('./data-url')\nconst { multipartFormDataParser } = require('./formdata-parser')\nlet random\n\ntry {\n  const crypto = require('node:crypto')\n  random = (max) => crypto.randomInt(0, max)\n} catch {\n  random = (max) => Math.floor(Math.random(max))\n}\n\nconst textEncoder = new TextEncoder()\nfunction noop () {}\n\nconst hasFinalizationRegistry = globalThis.FinalizationRegistry && process.version.indexOf('v18') !== 0\nlet streamRegistry\n\nif (hasFinalizationRegistry) {\n  streamRegistry = new FinalizationRegistry((weakRef) => {\n    const stream = weakRef.deref()\n    if (stream && !stream.locked && !isDisturbed(stream) && !isErrored(stream)) {\n      stream.cancel('Response object has been garbage collected').catch(noop)\n    }\n  })\n}\n\n// https://fetch.spec.whatwg.org/#concept-bodyinit-extract\nfunction extractBody (object, keepalive = false) {\n  // 1. Let stream be null.\n  let stream = null\n\n  // 2. If object is a ReadableStream object, then set stream to object.\n  if (object instanceof ReadableStream) {\n    stream = object\n  } else if (isBlobLike(object)) {\n    // 3. Otherwise, if object is a Blob object, set stream to the\n    //    result of running object\u2019s get stream.\n    stream = object.stream()\n  } else {\n    // 4. Otherwise, set stream to a new ReadableStream object, and set\n    //    up stream with byte reading support.\n    stream = new ReadableStream({\n      async pull (controller) {\n        const buffer = typeof source === 'string' ? textEncoder.encode(source) : source\n\n        if (buffer.byteLength) {\n          controller.enqueue(buffer)\n        }\n\n        queueMicrotask(() => readableStreamClose(controller))\n      },\n      start () {},\n      type: 'bytes'\n    })\n  }\n\n  // 5. Assert: stream is a ReadableStream object.\n  assert(isReadableStreamLike(stream))\n\n  // 6. Let action be null.\n  let action = null\n\n  // 7. Let source be null.\n  let source = null\n\n  // 8. Let length be null.\n  let length = null\n\n  // 9. Let type be null.\n  let type = null\n\n  // 10. Switch on object:\n  if (typeof object === 'string') {\n    // Set source to the UTF-8 encoding of object.\n    // Note: setting source to a Uint8Array here breaks some mocking assumptions.\n    source = object\n\n    // Set type to `text/plain;charset=UTF-8`.\n    type = 'text/plain;charset=UTF-8'\n  } else if (object instanceof URLSearchParams) {\n    // URLSearchParams\n\n    // spec says to run application/x-www-form-urlencoded on body.list\n    // this is implemented in Node.js as apart of an URLSearchParams instance toString method\n    // See: https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L490\n    // and https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L1100\n\n    // Set source to the result of running the application/x-www-form-urlencoded serializer with object\u2019s list.\n    source = object.toString()\n\n    // Set type to `application/x-www-form-urlencoded;charset=UTF-8`.\n    type = 'application/x-www-form-urlencoded;charset=UTF-8'\n  } else if (isArrayBuffer(object)) {\n    // BufferSource/ArrayBuffer\n\n    // Set source to a copy of the bytes held by object.\n    source = new Uint8Array(object.slice())\n  } else if (ArrayBuffer.isView(object)) {\n    // BufferSource/ArrayBufferView\n\n    // Set source to a copy of the bytes held by object.\n    source = new Uint8Array(object.buffer.slice(object.byteOffset, object.byteOffset + object.byteLength))\n  } else if (util.isFormDataLike(object)) {\n    const boundary = `----formdata-undici-0${`${random(1e11)}`.padStart(11, '0')}`\n    const prefix = `--${boundary}\\r\\nContent-Disposition: form-data`\n\n    /*! formdata-polyfill. MIT License. Jimmy W\u00E4rting <https://jimmy.warting.se/opensource> */\n    const escape = (str) =>\n      str.replace(/\\n/g, '%0A').replace(/\\r/g, '%0D').replace(/\"/g, '%22')\n    const normalizeLinefeeds = (value) => value.replace(/\\r?\\n|\\r/g, '\\r\\n')\n\n    // Set action to this step: run the multipart/form-data\n    // encoding algorithm, with object\u2019s entry list and UTF-8.\n    // - This ensures that the body is immutable and can't be changed afterwords\n    // - That the content-length is calculated in advance.\n    // - And that all parts are pre-encoded and ready to be sent.\n\n    const blobParts = []\n    const rn = new Uint8Array([13, 10]) // '\\r\\n'\n    length = 0\n    let hasUnknownSizeValue = false\n\n    for (const [name, value] of object) {\n      if (typeof value === 'string') {\n        const chunk = textEncoder.encode(prefix +\n          `; name=\"${escape(normalizeLinefeeds(name))}\"` +\n          `\\r\\n\\r\\n${normalizeLinefeeds(value)}\\r\\n`)\n        blobParts.push(chunk)\n        length += chunk.byteLength\n      } else {\n        const chunk = textEncoder.encode(`${prefix}; name=\"${escape(normalizeLinefeeds(name))}\"` +\n          (value.name ? `; filename=\"${escape(value.name)}\"` : '') + '\\r\\n' +\n          `Content-Type: ${\n            value.type || 'application/octet-stream'\n          }\\r\\n\\r\\n`)\n        blobParts.push(chunk, value, rn)\n        if (typeof value.size === 'number') {\n          length += chunk.byteLength + value.size + rn.byteLength\n        } else {\n          hasUnknownSizeValue = true\n        }\n      }\n    }\n\n    // CRLF is appended to the body to function with legacy servers and match other implementations.\n    // https://github.com/curl/curl/blob/3434c6b46e682452973972e8313613dfa58cd690/lib/mime.c#L1029-L1030\n    // https://github.com/form-data/form-data/issues/63\n    const chunk = textEncoder.encode(`--${boundary}--\\r\\n`)\n    blobParts.push(chunk)\n    length += chunk.byteLength\n    if (hasUnknownSizeValue) {\n      length = null\n    }\n\n    // Set source to object.\n    source = object\n\n    action = async function * () {\n      for (const part of blobParts) {\n        if (part.stream) {\n          yield * part.stream()\n        } else {\n          yield part\n        }\n      }\n    }\n\n    // Set type to `multipart/form-data; boundary=`,\n    // followed by the multipart/form-data boundary string generated\n    // by the multipart/form-data encoding algorithm.\n    type = `multipart/form-data; boundary=${boundary}`\n  } else if (isBlobLike(object)) {\n    // Blob\n\n    // Set source to object.\n    source = object\n\n    // Set length to object\u2019s size.\n    length = object.size\n\n    // If object\u2019s type attribute is not the empty byte sequence, set\n    // type to its value.\n    if (object.type) {\n      type = object.type\n    }\n  } else if (typeof object[Symbol.asyncIterator] === 'function') {\n    // If keepalive is true, then throw a TypeError.\n    if (keepalive) {\n      throw new TypeError('keepalive')\n    }\n\n    // If object is disturbed or locked, then throw a TypeError.\n    if (util.isDisturbed(object) || object.locked) {\n      throw new TypeError(\n        'Response body object should not be disturbed or locked'\n      )\n    }\n\n    stream =\n      object instanceof ReadableStream ? object : ReadableStreamFrom(object)\n  }\n\n  // 11. If source is a byte sequence, then set action to a\n  // step that returns source and length to source\u2019s length.\n  if (typeof source === 'string' || util.isBuffer(source)) {\n    length = Buffer.byteLength(source)\n  }\n\n  // 12. If action is non-null, then run these steps in in parallel:\n  if (action != null) {\n    // Run action.\n    let iterator\n    stream = new ReadableStream({\n      async start () {\n        iterator = action(object)[Symbol.asyncIterator]()\n      },\n      async pull (controller) {\n        const { value, done } = await iterator.next()\n        if (done) {\n          // When running action is done, close stream.\n          queueMicrotask(() => {\n            controller.close()\n            controller.byobRequest?.respond(0)\n          })\n        } else {\n          // Whenever one or more bytes are available and stream is not errored,\n          // enqueue a Uint8Array wrapping an ArrayBuffer containing the available\n          // bytes into stream.\n          if (!isErrored(stream)) {\n            const buffer = new Uint8Array(value)\n            if (buffer.byteLength) {\n              controller.enqueue(buffer)\n            }\n          }\n        }\n        return controller.desiredSize > 0\n      },\n      async cancel (reason) {\n        await iterator.return()\n      },\n      type: 'bytes'\n    })\n  }\n\n  // 13. Let body be a body whose stream is stream, source is source,\n  // and length is length.\n  const body = { stream, source, length }\n\n  // 14. Return (body, type).\n  return [body, type]\n}\n\n// https://fetch.spec.whatwg.org/#bodyinit-safely-extract\nfunction safelyExtractBody (object, keepalive = false) {\n  // To safely extract a body and a `Content-Type` value from\n  // a byte sequence or BodyInit object object, run these steps:\n\n  // 1. If object is a ReadableStream object, then:\n  if (object instanceof ReadableStream) {\n    // Assert: object is neither disturbed nor locked.\n    // istanbul ignore next\n    assert(!util.isDisturbed(object), 'The body has already been consumed.')\n    // istanbul ignore next\n    assert(!object.locked, 'The stream is locked.')\n  }\n\n  // 2. Return the results of extracting object.\n  return extractBody(object, keepalive)\n}\n\nfunction cloneBody (instance, body) {\n  // To clone a body body, run these steps:\n\n  // https://fetch.spec.whatwg.org/#concept-body-clone\n\n  // 1. Let \u00AB out1, out2 \u00BB be the result of teeing body\u2019s stream.\n  const [out1, out2] = body.stream.tee()\n\n  // 2. Set body\u2019s stream to out1.\n  body.stream = out1\n\n  // 3. Return a body whose stream is out2 and other members are copied from body.\n  return {\n    stream: out2,\n    length: body.length,\n    source: body.source\n  }\n}\n\nfunction throwIfAborted (state) {\n  if (state.aborted) {\n    throw new DOMException('The operation was aborted.', 'AbortError')\n  }\n}\n\nfunction bodyMixinMethods (instance) {\n  const methods = {\n    blob () {\n      // The blob() method steps are to return the result of\n      // running consume body with this and the following step\n      // given a byte sequence bytes: return a Blob whose\n      // contents are bytes and whose type attribute is this\u2019s\n      // MIME type.\n      return consumeBody(this, (bytes) => {\n        let mimeType = bodyMimeType(this)\n\n        if (mimeType === null) {\n          mimeType = ''\n        } else if (mimeType) {\n          mimeType = serializeAMimeType(mimeType)\n        }\n\n        // Return a Blob whose contents are bytes and type attribute\n        // is mimeType.\n        return new Blob([bytes], { type: mimeType })\n      }, instance)\n    },\n\n    arrayBuffer () {\n      // The arrayBuffer() method steps are to return the result\n      // of running consume body with this and the following step\n      // given a byte sequence bytes: return a new ArrayBuffer\n      // whose contents are bytes.\n      return consumeBody(this, (bytes) => {\n        return new Uint8Array(bytes).buffer\n      }, instance)\n    },\n\n    text () {\n      // The text() method steps are to return the result of running\n      // consume body with this and UTF-8 decode.\n      return consumeBody(this, utf8DecodeBytes, instance)\n    },\n\n    json () {\n      // The json() method steps are to return the result of running\n      // consume body with this and parse JSON from bytes.\n      return consumeBody(this, parseJSONFromBytes, instance)\n    },\n\n    formData () {\n      // The formData() method steps are to return the result of running\n      // consume body with this and the following step given a byte sequence bytes:\n      return consumeBody(this, (value) => {\n        // 1. Let mimeType be the result of get the MIME type with this.\n        const mimeType = bodyMimeType(this)\n\n        // 2. If mimeType is non-null, then switch on mimeType\u2019s essence and run\n        //    the corresponding steps:\n        if (mimeType !== null) {\n          switch (mimeType.essence) {\n            case 'multipart/form-data': {\n              // 1. ... [long step]\n              const parsed = multipartFormDataParser(value, mimeType)\n\n              // 2. If that fails for some reason, then throw a TypeError.\n              if (parsed === 'failure') {\n                throw new TypeError('Failed to parse body as FormData.')\n              }\n\n              // 3. Return a new FormData object, appending each entry,\n              //    resulting from the parsing operation, to its entry list.\n              const fd = new FormData()\n              fd[kState] = parsed\n\n              return fd\n            }\n            case 'application/x-www-form-urlencoded': {\n              // 1. Let entries be the result of parsing bytes.\n              const entries = new URLSearchParams(value.toString())\n\n              // 2. If entries is failure, then throw a TypeError.\n\n              // 3. Return a new FormData object whose entry list is entries.\n              const fd = new FormData()\n\n              for (const [name, value] of entries) {\n                fd.append(name, value)\n              }\n\n              return fd\n            }\n          }\n        }\n\n        // 3. Throw a TypeError.\n        throw new TypeError(\n          'Content-Type was not one of \"multipart/form-data\" or \"application/x-www-form-urlencoded\".'\n        )\n      }, instance)\n    },\n\n    bytes () {\n      // The bytes() method steps are to return the result of running consume body\n      // with this and the following step given a byte sequence bytes: return the\n      // result of creating a Uint8Array from bytes in this\u2019s relevant realm.\n      return consumeBody(this, (bytes) => {\n        return new Uint8Array(bytes)\n      }, instance)\n    }\n  }\n\n  return methods\n}\n\nfunction mixinBody (prototype) {\n  Object.assign(prototype.prototype, bodyMixinMethods(prototype))\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-body-consume-body\n * @param {Response|Request} object\n * @param {(value: unknown) => unknown} convertBytesToJSValue\n * @param {Response|Request} instance\n */\nasync function consumeBody (object, convertBytesToJSValue, instance) {\n  webidl.brandCheck(object, instance)\n\n  // 1. If object is unusable, then return a promise rejected\n  //    with a TypeError.\n  if (bodyUnusable(object)) {\n    throw new TypeError('Body is unusable: Body has already been read')\n  }\n\n  throwIfAborted(object[kState])\n\n  // 2. Let promise be a new promise.\n  const promise = createDeferredPromise()\n\n  // 3. Let errorSteps given error be to reject promise with error.\n  const errorSteps = (error) => promise.reject(error)\n\n  // 4. Let successSteps given a byte sequence data be to resolve\n  //    promise with the result of running convertBytesToJSValue\n  //    with data. If that threw an exception, then run errorSteps\n  //    with that exception.\n  const successSteps = (data) => {\n    try {\n      promise.resolve(convertBytesToJSValue(data))\n    } catch (e) {\n      errorSteps(e)\n    }\n  }\n\n  // 5. If object\u2019s body is null, then run successSteps with an\n  //    empty byte sequence.\n  if (object[kState].body == null) {\n    successSteps(Buffer.allocUnsafe(0))\n    return promise.promise\n  }\n\n  // 6. Otherwise, fully read object\u2019s body given successSteps,\n  //    errorSteps, and object\u2019s relevant global object.\n  await fullyReadBody(object[kState].body, successSteps, errorSteps)\n\n  // 7. Return promise.\n  return promise.promise\n}\n\n// https://fetch.spec.whatwg.org/#body-unusable\nfunction bodyUnusable (object) {\n  const body = object[kState].body\n\n  // An object including the Body interface mixin is\n  // said to be unusable if its body is non-null and\n  // its body\u2019s stream is disturbed or locked.\n  return body != null && (body.stream.locked || util.isDisturbed(body.stream))\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#parse-json-bytes-to-a-javascript-value\n * @param {Uint8Array} bytes\n */\nfunction parseJSONFromBytes (bytes) {\n  return JSON.parse(utf8DecodeBytes(bytes))\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-body-mime-type\n * @param {import('./response').Response|import('./request').Request} requestOrResponse\n */\nfunction bodyMimeType (requestOrResponse) {\n  // 1. Let headers be null.\n  // 2. If requestOrResponse is a Request object, then set headers to requestOrResponse\u2019s request\u2019s header list.\n  // 3. Otherwise, set headers to requestOrResponse\u2019s response\u2019s header list.\n  /** @type {import('./headers').HeadersList} */\n  const headers = requestOrResponse[kState].headersList\n\n  // 4. Let mimeType be the result of extracting a MIME type from headers.\n  const mimeType = extractMimeType(headers)\n\n  // 5. If mimeType is failure, then return null.\n  if (mimeType === 'failure') {\n    return null\n  }\n\n  // 6. Return mimeType.\n  return mimeType\n}\n\nmodule.exports = {\n  extractBody,\n  safelyExtractBody,\n  cloneBody,\n  mixinBody,\n  streamRegistry,\n  hasFinalizationRegistry,\n  bodyUnusable\n}\n", "'use strict'\n\n/* global WebAssembly */\n\nconst assert = require('node:assert')\nconst util = require('../core/util.js')\nconst { channels } = require('../core/diagnostics.js')\nconst timers = require('../util/timers.js')\nconst {\n  RequestContentLengthMismatchError,\n  ResponseContentLengthMismatchError,\n  RequestAbortedError,\n  HeadersTimeoutError,\n  HeadersOverflowError,\n  SocketError,\n  InformationalError,\n  BodyTimeoutError,\n  HTTPParserError,\n  ResponseExceededMaxSizeError\n} = require('../core/errors.js')\nconst {\n  kUrl,\n  kReset,\n  kClient,\n  kParser,\n  kBlocking,\n  kRunning,\n  kPending,\n  kSize,\n  kWriting,\n  kQueue,\n  kNoRef,\n  kKeepAliveDefaultTimeout,\n  kHostHeader,\n  kPendingIdx,\n  kRunningIdx,\n  kError,\n  kPipelining,\n  kSocket,\n  kKeepAliveTimeoutValue,\n  kMaxHeadersSize,\n  kKeepAliveMaxTimeout,\n  kKeepAliveTimeoutThreshold,\n  kHeadersTimeout,\n  kBodyTimeout,\n  kStrictContentLength,\n  kMaxRequests,\n  kCounter,\n  kMaxResponseSize,\n  kOnError,\n  kResume,\n  kHTTPContext\n} = require('../core/symbols.js')\n\nconst constants = require('../llhttp/constants.js')\nconst EMPTY_BUF = Buffer.alloc(0)\nconst FastBuffer = Buffer[Symbol.species]\nconst addListener = util.addListener\nconst removeAllListeners = util.removeAllListeners\n\nlet extractBody\n\nasync function lazyllhttp () {\n  const llhttpWasmData = process.env.JEST_WORKER_ID ? require('../llhttp/llhttp-wasm.js') : undefined\n\n  let mod\n  try {\n    mod = await WebAssembly.compile(require('../llhttp/llhttp_simd-wasm.js'))\n  } catch (e) {\n    /* istanbul ignore next */\n\n    // We could check if the error was caused by the simd option not\n    // being enabled, but the occurring of this other error\n    // * https://github.com/emscripten-core/emscripten/issues/11495\n    // got me to remove that check to avoid breaking Node 12.\n    mod = await WebAssembly.compile(llhttpWasmData || require('../llhttp/llhttp-wasm.js'))\n  }\n\n  return await WebAssembly.instantiate(mod, {\n    env: {\n      /* eslint-disable camelcase */\n\n      wasm_on_url: (p, at, len) => {\n        /* istanbul ignore next */\n        return 0\n      },\n      wasm_on_status: (p, at, len) => {\n        assert(currentParser.ptr === p)\n        const start = at - currentBufferPtr + currentBufferRef.byteOffset\n        return currentParser.onStatus(new FastBuffer(currentBufferRef.buffer, start, len)) || 0\n      },\n      wasm_on_message_begin: (p) => {\n        assert(currentParser.ptr === p)\n        return currentParser.onMessageBegin() || 0\n      },\n      wasm_on_header_field: (p, at, len) => {\n        assert(currentParser.ptr === p)\n        const start = at - currentBufferPtr + currentBufferRef.byteOffset\n        return currentParser.onHeaderField(new FastBuffer(currentBufferRef.buffer, start, len)) || 0\n      },\n      wasm_on_header_value: (p, at, len) => {\n        assert(currentParser.ptr === p)\n        const start = at - currentBufferPtr + currentBufferRef.byteOffset\n        return currentParser.onHeaderValue(new FastBuffer(currentBufferRef.buffer, start, len)) || 0\n      },\n      wasm_on_headers_complete: (p, statusCode, upgrade, shouldKeepAlive) => {\n        assert(currentParser.ptr === p)\n        return currentParser.onHeadersComplete(statusCode, Boolean(upgrade), Boolean(shouldKeepAlive)) || 0\n      },\n      wasm_on_body: (p, at, len) => {\n        assert(currentParser.ptr === p)\n        const start = at - currentBufferPtr + currentBufferRef.byteOffset\n        return currentParser.onBody(new FastBuffer(currentBufferRef.buffer, start, len)) || 0\n      },\n      wasm_on_message_complete: (p) => {\n        assert(currentParser.ptr === p)\n        return currentParser.onMessageComplete() || 0\n      }\n\n      /* eslint-enable camelcase */\n    }\n  })\n}\n\nlet llhttpInstance = null\nlet llhttpPromise = lazyllhttp()\nllhttpPromise.catch()\n\nlet currentParser = null\nlet currentBufferRef = null\nlet currentBufferSize = 0\nlet currentBufferPtr = null\n\nconst USE_NATIVE_TIMER = 0\nconst USE_FAST_TIMER = 1\n\n// Use fast timers for headers and body to take eventual event loop\n// latency into account.\nconst TIMEOUT_HEADERS = 2 | USE_FAST_TIMER\nconst TIMEOUT_BODY = 4 | USE_FAST_TIMER\n\n// Use native timers to ignore event loop latency for keep-alive\n// handling.\nconst TIMEOUT_KEEP_ALIVE = 8 | USE_NATIVE_TIMER\n\nclass Parser {\n  constructor (client, socket, { exports }) {\n    assert(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0)\n\n    this.llhttp = exports\n    this.ptr = this.llhttp.llhttp_alloc(constants.TYPE.RESPONSE)\n    this.client = client\n    this.socket = socket\n    this.timeout = null\n    this.timeoutValue = null\n    this.timeoutType = null\n    this.statusCode = null\n    this.statusText = ''\n    this.upgrade = false\n    this.headers = []\n    this.headersSize = 0\n    this.headersMaxSize = client[kMaxHeadersSize]\n    this.shouldKeepAlive = false\n    this.paused = false\n    this.resume = this.resume.bind(this)\n\n    this.bytesRead = 0\n\n    this.keepAlive = ''\n    this.contentLength = ''\n    this.connection = ''\n    this.maxResponseSize = client[kMaxResponseSize]\n  }\n\n  setTimeout (delay, type) {\n    // If the existing timer and the new timer are of different timer type\n    // (fast or native) or have different delay, we need to clear the existing\n    // timer and set a new one.\n    if (\n      delay !== this.timeoutValue ||\n      (type & USE_FAST_TIMER) ^ (this.timeoutType & USE_FAST_TIMER)\n    ) {\n      // If a timeout is already set, clear it with clearTimeout of the fast\n      // timer implementation, as it can clear fast and native timers.\n      if (this.timeout) {\n        timers.clearTimeout(this.timeout)\n        this.timeout = null\n      }\n\n      if (delay) {\n        if (type & USE_FAST_TIMER) {\n          this.timeout = timers.setFastTimeout(onParserTimeout, delay, new WeakRef(this))\n        } else {\n          this.timeout = setTimeout(onParserTimeout, delay, new WeakRef(this))\n          this.timeout.unref()\n        }\n      }\n\n      this.timeoutValue = delay\n    } else if (this.timeout) {\n      // istanbul ignore else: only for jest\n      if (this.timeout.refresh) {\n        this.timeout.refresh()\n      }\n    }\n\n    this.timeoutType = type\n  }\n\n  resume () {\n    if (this.socket.destroyed || !this.paused) {\n      return\n    }\n\n    assert(this.ptr != null)\n    assert(currentParser == null)\n\n    this.llhttp.llhttp_resume(this.ptr)\n\n    assert(this.timeoutType === TIMEOUT_BODY)\n    if (this.timeout) {\n      // istanbul ignore else: only for jest\n      if (this.timeout.refresh) {\n        this.timeout.refresh()\n      }\n    }\n\n    this.paused = false\n    this.execute(this.socket.read() || EMPTY_BUF) // Flush parser.\n    this.readMore()\n  }\n\n  readMore () {\n    while (!this.paused && this.ptr) {\n      const chunk = this.socket.read()\n      if (chunk === null) {\n        break\n      }\n      this.execute(chunk)\n    }\n  }\n\n  execute (data) {\n    assert(this.ptr != null)\n    assert(currentParser == null)\n    assert(!this.paused)\n\n    const { socket, llhttp } = this\n\n    if (data.length > currentBufferSize) {\n      if (currentBufferPtr) {\n        llhttp.free(currentBufferPtr)\n      }\n      currentBufferSize = Math.ceil(data.length / 4096) * 4096\n      currentBufferPtr = llhttp.malloc(currentBufferSize)\n    }\n\n    new Uint8Array(llhttp.memory.buffer, currentBufferPtr, currentBufferSize).set(data)\n\n    // Call `execute` on the wasm parser.\n    // We pass the `llhttp_parser` pointer address, the pointer address of buffer view data,\n    // and finally the length of bytes to parse.\n    // The return value is an error code or `constants.ERROR.OK`.\n    try {\n      let ret\n\n      try {\n        currentBufferRef = data\n        currentParser = this\n        ret = llhttp.llhttp_execute(this.ptr, currentBufferPtr, data.length)\n        /* eslint-disable-next-line no-useless-catch */\n      } catch (err) {\n        /* istanbul ignore next: difficult to make a test case for */\n        throw err\n      } finally {\n        currentParser = null\n        currentBufferRef = null\n      }\n\n      const offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr\n\n      if (ret === constants.ERROR.PAUSED_UPGRADE) {\n        this.onUpgrade(data.slice(offset))\n      } else if (ret === constants.ERROR.PAUSED) {\n        this.paused = true\n        socket.unshift(data.slice(offset))\n      } else if (ret !== constants.ERROR.OK) {\n        const ptr = llhttp.llhttp_get_error_reason(this.ptr)\n        let message = ''\n        /* istanbul ignore else: difficult to make a test case for */\n        if (ptr) {\n          const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0)\n          message =\n            'Response does not match the HTTP/1.1 protocol (' +\n            Buffer.from(llhttp.memory.buffer, ptr, len).toString() +\n            ')'\n        }\n        throw new HTTPParserError(message, constants.ERROR[ret], data.slice(offset))\n      }\n    } catch (err) {\n      util.destroy(socket, err)\n    }\n  }\n\n  destroy () {\n    assert(this.ptr != null)\n    assert(currentParser == null)\n\n    this.llhttp.llhttp_free(this.ptr)\n    this.ptr = null\n\n    this.timeout && timers.clearTimeout(this.timeout)\n    this.timeout = null\n    this.timeoutValue = null\n    this.timeoutType = null\n\n    this.paused = false\n  }\n\n  onStatus (buf) {\n    this.statusText = buf.toString()\n  }\n\n  onMessageBegin () {\n    const { socket, client } = this\n\n    /* istanbul ignore next: difficult to make a test case for */\n    if (socket.destroyed) {\n      return -1\n    }\n\n    const request = client[kQueue][client[kRunningIdx]]\n    if (!request) {\n      return -1\n    }\n    request.onResponseStarted()\n  }\n\n  onHeaderField (buf) {\n    const len = this.headers.length\n\n    if ((len & 1) === 0) {\n      this.headers.push(buf)\n    } else {\n      this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf])\n    }\n\n    this.trackHeader(buf.length)\n  }\n\n  onHeaderValue (buf) {\n    let len = this.headers.length\n\n    if ((len & 1) === 1) {\n      this.headers.push(buf)\n      len += 1\n    } else {\n      this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf])\n    }\n\n    const key = this.headers[len - 2]\n    if (key.length === 10) {\n      const headerName = util.bufferToLowerCasedHeaderName(key)\n      if (headerName === 'keep-alive') {\n        this.keepAlive += buf.toString()\n      } else if (headerName === 'connection') {\n        this.connection += buf.toString()\n      }\n    } else if (key.length === 14 && util.bufferToLowerCasedHeaderName(key) === 'content-length') {\n      this.contentLength += buf.toString()\n    }\n\n    this.trackHeader(buf.length)\n  }\n\n  trackHeader (len) {\n    this.headersSize += len\n    if (this.headersSize >= this.headersMaxSize) {\n      util.destroy(this.socket, new HeadersOverflowError())\n    }\n  }\n\n  onUpgrade (head) {\n    const { upgrade, client, socket, headers, statusCode } = this\n\n    assert(upgrade)\n    assert(client[kSocket] === socket)\n    assert(!socket.destroyed)\n    assert(!this.paused)\n    assert((headers.length & 1) === 0)\n\n    const request = client[kQueue][client[kRunningIdx]]\n    assert(request)\n    assert(request.upgrade || request.method === 'CONNECT')\n\n    this.statusCode = null\n    this.statusText = ''\n    this.shouldKeepAlive = null\n\n    this.headers = []\n    this.headersSize = 0\n\n    socket.unshift(head)\n\n    socket[kParser].destroy()\n    socket[kParser] = null\n\n    socket[kClient] = null\n    socket[kError] = null\n\n    removeAllListeners(socket)\n\n    client[kSocket] = null\n    client[kHTTPContext] = null // TODO (fix): This is hacky...\n    client[kQueue][client[kRunningIdx]++] = null\n    client.emit('disconnect', client[kUrl], [client], new InformationalError('upgrade'))\n\n    try {\n      request.onUpgrade(statusCode, headers, socket)\n    } catch (err) {\n      util.destroy(socket, err)\n    }\n\n    client[kResume]()\n  }\n\n  onHeadersComplete (statusCode, upgrade, shouldKeepAlive) {\n    const { client, socket, headers, statusText } = this\n\n    /* istanbul ignore next: difficult to make a test case for */\n    if (socket.destroyed) {\n      return -1\n    }\n\n    const request = client[kQueue][client[kRunningIdx]]\n\n    /* istanbul ignore next: difficult to make a test case for */\n    if (!request) {\n      return -1\n    }\n\n    assert(!this.upgrade)\n    assert(this.statusCode < 200)\n\n    if (statusCode === 100) {\n      util.destroy(socket, new SocketError('bad response', util.getSocketInfo(socket)))\n      return -1\n    }\n\n    /* this can only happen if server is misbehaving */\n    if (upgrade && !request.upgrade) {\n      util.destroy(socket, new SocketError('bad upgrade', util.getSocketInfo(socket)))\n      return -1\n    }\n\n    assert(this.timeoutType === TIMEOUT_HEADERS)\n\n    this.statusCode = statusCode\n    this.shouldKeepAlive = (\n      shouldKeepAlive ||\n      // Override llhttp value which does not allow keepAlive for HEAD.\n      (request.method === 'HEAD' && !socket[kReset] && this.connection.toLowerCase() === 'keep-alive')\n    )\n\n    if (this.statusCode >= 200) {\n      const bodyTimeout = request.bodyTimeout != null\n        ? request.bodyTimeout\n        : client[kBodyTimeout]\n      this.setTimeout(bodyTimeout, TIMEOUT_BODY)\n    } else if (this.timeout) {\n      // istanbul ignore else: only for jest\n      if (this.timeout.refresh) {\n        this.timeout.refresh()\n      }\n    }\n\n    if (request.method === 'CONNECT') {\n      assert(client[kRunning] === 1)\n      this.upgrade = true\n      return 2\n    }\n\n    if (upgrade) {\n      assert(client[kRunning] === 1)\n      this.upgrade = true\n      return 2\n    }\n\n    assert((this.headers.length & 1) === 0)\n    this.headers = []\n    this.headersSize = 0\n\n    if (this.shouldKeepAlive && client[kPipelining]) {\n      const keepAliveTimeout = this.keepAlive ? util.parseKeepAliveTimeout(this.keepAlive) : null\n\n      if (keepAliveTimeout != null) {\n        const timeout = Math.min(\n          keepAliveTimeout - client[kKeepAliveTimeoutThreshold],\n          client[kKeepAliveMaxTimeout]\n        )\n        if (timeout <= 0) {\n          socket[kReset] = true\n        } else {\n          client[kKeepAliveTimeoutValue] = timeout\n        }\n      } else {\n        client[kKeepAliveTimeoutValue] = client[kKeepAliveDefaultTimeout]\n      }\n    } else {\n      // Stop more requests from being dispatched.\n      socket[kReset] = true\n    }\n\n    const pause = request.onHeaders(statusCode, headers, this.resume, statusText) === false\n\n    if (request.aborted) {\n      return -1\n    }\n\n    if (request.method === 'HEAD') {\n      return 1\n    }\n\n    if (statusCode < 200) {\n      return 1\n    }\n\n    if (socket[kBlocking]) {\n      socket[kBlocking] = false\n      client[kResume]()\n    }\n\n    return pause ? constants.ERROR.PAUSED : 0\n  }\n\n  onBody (buf) {\n    const { client, socket, statusCode, maxResponseSize } = this\n\n    if (socket.destroyed) {\n      return -1\n    }\n\n    const request = client[kQueue][client[kRunningIdx]]\n    assert(request)\n\n    assert(this.timeoutType === TIMEOUT_BODY)\n    if (this.timeout) {\n      // istanbul ignore else: only for jest\n      if (this.timeout.refresh) {\n        this.timeout.refresh()\n      }\n    }\n\n    assert(statusCode >= 200)\n\n    if (maxResponseSize > -1 && this.bytesRead + buf.length > maxResponseSize) {\n      util.destroy(socket, new ResponseExceededMaxSizeError())\n      return -1\n    }\n\n    this.bytesRead += buf.length\n\n    if (request.onData(buf) === false) {\n      return constants.ERROR.PAUSED\n    }\n  }\n\n  onMessageComplete () {\n    const { client, socket, statusCode, upgrade, headers, contentLength, bytesRead, shouldKeepAlive } = this\n\n    if (socket.destroyed && (!statusCode || shouldKeepAlive)) {\n      return -1\n    }\n\n    if (upgrade) {\n      return\n    }\n\n    assert(statusCode >= 100)\n    assert((this.headers.length & 1) === 0)\n\n    const request = client[kQueue][client[kRunningIdx]]\n    assert(request)\n\n    this.statusCode = null\n    this.statusText = ''\n    this.bytesRead = 0\n    this.contentLength = ''\n    this.keepAlive = ''\n    this.connection = ''\n\n    this.headers = []\n    this.headersSize = 0\n\n    if (statusCode < 200) {\n      return\n    }\n\n    /* istanbul ignore next: should be handled by llhttp? */\n    if (request.method !== 'HEAD' && contentLength && bytesRead !== parseInt(contentLength, 10)) {\n      util.destroy(socket, new ResponseContentLengthMismatchError())\n      return -1\n    }\n\n    request.onComplete(headers)\n\n    client[kQueue][client[kRunningIdx]++] = null\n\n    if (socket[kWriting]) {\n      assert(client[kRunning] === 0)\n      // Response completed before request.\n      util.destroy(socket, new InformationalError('reset'))\n      return constants.ERROR.PAUSED\n    } else if (!shouldKeepAlive) {\n      util.destroy(socket, new InformationalError('reset'))\n      return constants.ERROR.PAUSED\n    } else if (socket[kReset] && client[kRunning] === 0) {\n      // Destroy socket once all requests have completed.\n      // The request at the tail of the pipeline is the one\n      // that requested reset and no further requests should\n      // have been queued since then.\n      util.destroy(socket, new InformationalError('reset'))\n      return constants.ERROR.PAUSED\n    } else if (client[kPipelining] == null || client[kPipelining] === 1) {\n      // We must wait a full event loop cycle to reuse this socket to make sure\n      // that non-spec compliant servers are not closing the connection even if they\n      // said they won't.\n      setImmediate(() => client[kResume]())\n    } else {\n      client[kResume]()\n    }\n  }\n}\n\nfunction onParserTimeout (parser) {\n  const { socket, timeoutType, client, paused } = parser.deref()\n\n  /* istanbul ignore else */\n  if (timeoutType === TIMEOUT_HEADERS) {\n    if (!socket[kWriting] || socket.writableNeedDrain || client[kRunning] > 1) {\n      assert(!paused, 'cannot be paused while waiting for headers')\n      util.destroy(socket, new HeadersTimeoutError())\n    }\n  } else if (timeoutType === TIMEOUT_BODY) {\n    if (!paused) {\n      util.destroy(socket, new BodyTimeoutError())\n    }\n  } else if (timeoutType === TIMEOUT_KEEP_ALIVE) {\n    assert(client[kRunning] === 0 && client[kKeepAliveTimeoutValue])\n    util.destroy(socket, new InformationalError('socket idle timeout'))\n  }\n}\n\nasync function connectH1 (client, socket) {\n  client[kSocket] = socket\n\n  if (!llhttpInstance) {\n    llhttpInstance = await llhttpPromise\n    llhttpPromise = null\n  }\n\n  socket[kNoRef] = false\n  socket[kWriting] = false\n  socket[kReset] = false\n  socket[kBlocking] = false\n  socket[kParser] = new Parser(client, socket, llhttpInstance)\n\n  addListener(socket, 'error', function (err) {\n    assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID')\n\n    const parser = this[kParser]\n\n    // On Mac OS, we get an ECONNRESET even if there is a full body to be forwarded\n    // to the user.\n    if (err.code === 'ECONNRESET' && parser.statusCode && !parser.shouldKeepAlive) {\n      // We treat all incoming data so for as a valid response.\n      parser.onMessageComplete()\n      return\n    }\n\n    this[kError] = err\n\n    this[kClient][kOnError](err)\n  })\n  addListener(socket, 'readable', function () {\n    const parser = this[kParser]\n\n    if (parser) {\n      parser.readMore()\n    }\n  })\n  addListener(socket, 'end', function () {\n    const parser = this[kParser]\n\n    if (parser.statusCode && !parser.shouldKeepAlive) {\n      // We treat all incoming data so far as a valid response.\n      parser.onMessageComplete()\n      return\n    }\n\n    util.destroy(this, new SocketError('other side closed', util.getSocketInfo(this)))\n  })\n  addListener(socket, 'close', function () {\n    const client = this[kClient]\n    const parser = this[kParser]\n\n    if (parser) {\n      if (!this[kError] && parser.statusCode && !parser.shouldKeepAlive) {\n        // We treat all incoming data so far as a valid response.\n        parser.onMessageComplete()\n      }\n\n      this[kParser].destroy()\n      this[kParser] = null\n    }\n\n    const err = this[kError] || new SocketError('closed', util.getSocketInfo(this))\n\n    client[kSocket] = null\n    client[kHTTPContext] = null // TODO (fix): This is hacky...\n\n    if (client.destroyed) {\n      assert(client[kPending] === 0)\n\n      // Fail entire queue.\n      const requests = client[kQueue].splice(client[kRunningIdx])\n      for (let i = 0; i < requests.length; i++) {\n        const request = requests[i]\n        util.errorRequest(client, request, err)\n      }\n    } else if (client[kRunning] > 0 && err.code !== 'UND_ERR_INFO') {\n      // Fail head of pipeline.\n      const request = client[kQueue][client[kRunningIdx]]\n      client[kQueue][client[kRunningIdx]++] = null\n\n      util.errorRequest(client, request, err)\n    }\n\n    client[kPendingIdx] = client[kRunningIdx]\n\n    assert(client[kRunning] === 0)\n\n    client.emit('disconnect', client[kUrl], [client], err)\n\n    client[kResume]()\n  })\n\n  let closed = false\n  socket.on('close', () => {\n    closed = true\n  })\n\n  return {\n    version: 'h1',\n    defaultPipelining: 1,\n    write (...args) {\n      return writeH1(client, ...args)\n    },\n    resume () {\n      resumeH1(client)\n    },\n    destroy (err, callback) {\n      if (closed) {\n        queueMicrotask(callback)\n      } else {\n        socket.destroy(err).on('close', callback)\n      }\n    },\n    get destroyed () {\n      return socket.destroyed\n    },\n    busy (request) {\n      if (socket[kWriting] || socket[kReset] || socket[kBlocking]) {\n        return true\n      }\n\n      if (request) {\n        if (client[kRunning] > 0 && !request.idempotent) {\n          // Non-idempotent request cannot be retried.\n          // Ensure that no other requests are inflight and\n          // could cause failure.\n          return true\n        }\n\n        if (client[kRunning] > 0 && (request.upgrade || request.method === 'CONNECT')) {\n          // Don't dispatch an upgrade until all preceding requests have completed.\n          // A misbehaving server might upgrade the connection before all pipelined\n          // request has completed.\n          return true\n        }\n\n        if (client[kRunning] > 0 && util.bodyLength(request.body) !== 0 &&\n          (util.isStream(request.body) || util.isAsyncIterable(request.body) || util.isFormDataLike(request.body))) {\n          // Request with stream or iterator body can error while other requests\n          // are inflight and indirectly error those as well.\n          // Ensure this doesn't happen by waiting for inflight\n          // to complete before dispatching.\n\n          // Request with stream or iterator body cannot be retried.\n          // Ensure that no other requests are inflight and\n          // could cause failure.\n          return true\n        }\n      }\n\n      return false\n    }\n  }\n}\n\nfunction resumeH1 (client) {\n  const socket = client[kSocket]\n\n  if (socket && !socket.destroyed) {\n    if (client[kSize] === 0) {\n      if (!socket[kNoRef] && socket.unref) {\n        socket.unref()\n        socket[kNoRef] = true\n      }\n    } else if (socket[kNoRef] && socket.ref) {\n      socket.ref()\n      socket[kNoRef] = false\n    }\n\n    if (client[kSize] === 0) {\n      if (socket[kParser].timeoutType !== TIMEOUT_KEEP_ALIVE) {\n        socket[kParser].setTimeout(client[kKeepAliveTimeoutValue], TIMEOUT_KEEP_ALIVE)\n      }\n    } else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) {\n      if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) {\n        const request = client[kQueue][client[kRunningIdx]]\n        const headersTimeout = request.headersTimeout != null\n          ? request.headersTimeout\n          : client[kHeadersTimeout]\n        socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS)\n      }\n    }\n  }\n}\n\n// https://www.rfc-editor.org/rfc/rfc7230#section-3.3.2\nfunction shouldSendContentLength (method) {\n  return method !== 'GET' && method !== 'HEAD' && method !== 'OPTIONS' && method !== 'TRACE' && method !== 'CONNECT'\n}\n\nfunction writeH1 (client, request) {\n  const { method, path, host, upgrade, blocking, reset } = request\n\n  let { body, headers, contentLength } = request\n\n  // https://tools.ietf.org/html/rfc7231#section-4.3.1\n  // https://tools.ietf.org/html/rfc7231#section-4.3.2\n  // https://tools.ietf.org/html/rfc7231#section-4.3.5\n\n  // Sending a payload body on a request that does not\n  // expect it can cause undefined behavior on some\n  // servers and corrupt connection state. Do not\n  // re-use the connection for further requests.\n\n  const expectsPayload = (\n    method === 'PUT' ||\n    method === 'POST' ||\n    method === 'PATCH' ||\n    method === 'QUERY' ||\n    method === 'PROPFIND' ||\n    method === 'PROPPATCH'\n  )\n\n  if (util.isFormDataLike(body)) {\n    if (!extractBody) {\n      extractBody = require('../web/fetch/body.js').extractBody\n    }\n\n    const [bodyStream, contentType] = extractBody(body)\n    if (request.contentType == null) {\n      headers.push('content-type', contentType)\n    }\n    body = bodyStream.stream\n    contentLength = bodyStream.length\n  } else if (util.isBlobLike(body) && request.contentType == null && body.type) {\n    headers.push('content-type', body.type)\n  }\n\n  if (body && typeof body.read === 'function') {\n    // Try to read EOF in order to get length.\n    body.read(0)\n  }\n\n  const bodyLength = util.bodyLength(body)\n\n  contentLength = bodyLength ?? contentLength\n\n  if (contentLength === null) {\n    contentLength = request.contentLength\n  }\n\n  if (contentLength === 0 && !expectsPayload) {\n    // https://tools.ietf.org/html/rfc7230#section-3.3.2\n    // A user agent SHOULD NOT send a Content-Length header field when\n    // the request message does not contain a payload body and the method\n    // semantics do not anticipate such a body.\n\n    contentLength = null\n  }\n\n  // https://github.com/nodejs/undici/issues/2046\n  // A user agent may send a Content-Length header with 0 value, this should be allowed.\n  if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength !== null && request.contentLength !== contentLength) {\n    if (client[kStrictContentLength]) {\n      util.errorRequest(client, request, new RequestContentLengthMismatchError())\n      return false\n    }\n\n    process.emitWarning(new RequestContentLengthMismatchError())\n  }\n\n  const socket = client[kSocket]\n\n  const abort = (err) => {\n    if (request.aborted || request.completed) {\n      return\n    }\n\n    util.errorRequest(client, request, err || new RequestAbortedError())\n\n    util.destroy(body)\n    util.destroy(socket, new InformationalError('aborted'))\n  }\n\n  try {\n    request.onConnect(abort)\n  } catch (err) {\n    util.errorRequest(client, request, err)\n  }\n\n  if (request.aborted) {\n    return false\n  }\n\n  if (method === 'HEAD') {\n    // https://github.com/mcollina/undici/issues/258\n    // Close after a HEAD request to interop with misbehaving servers\n    // that may send a body in the response.\n\n    socket[kReset] = true\n  }\n\n  if (upgrade || method === 'CONNECT') {\n    // On CONNECT or upgrade, block pipeline from dispatching further\n    // requests on this connection.\n\n    socket[kReset] = true\n  }\n\n  if (reset != null) {\n    socket[kReset] = reset\n  }\n\n  if (client[kMaxRequests] && socket[kCounter]++ >= client[kMaxRequests]) {\n    socket[kReset] = true\n  }\n\n  if (blocking) {\n    socket[kBlocking] = true\n  }\n\n  let header = `${method} ${path} HTTP/1.1\\r\\n`\n\n  if (typeof host === 'string') {\n    header += `host: ${host}\\r\\n`\n  } else {\n    header += client[kHostHeader]\n  }\n\n  if (upgrade) {\n    header += `connection: upgrade\\r\\nupgrade: ${upgrade}\\r\\n`\n  } else if (client[kPipelining] && !socket[kReset]) {\n    header += 'connection: keep-alive\\r\\n'\n  } else {\n    header += 'connection: close\\r\\n'\n  }\n\n  if (Array.isArray(headers)) {\n    for (let n = 0; n < headers.length; n += 2) {\n      const key = headers[n + 0]\n      const val = headers[n + 1]\n\n      if (Array.isArray(val)) {\n        for (let i = 0; i < val.length; i++) {\n          header += `${key}: ${val[i]}\\r\\n`\n        }\n      } else {\n        header += `${key}: ${val}\\r\\n`\n      }\n    }\n  }\n\n  if (channels.sendHeaders.hasSubscribers) {\n    channels.sendHeaders.publish({ request, headers: header, socket })\n  }\n\n  /* istanbul ignore else: assertion */\n  if (!body || bodyLength === 0) {\n    writeBuffer(abort, null, client, request, socket, contentLength, header, expectsPayload)\n  } else if (util.isBuffer(body)) {\n    writeBuffer(abort, body, client, request, socket, contentLength, header, expectsPayload)\n  } else if (util.isBlobLike(body)) {\n    if (typeof body.stream === 'function') {\n      writeIterable(abort, body.stream(), client, request, socket, contentLength, header, expectsPayload)\n    } else {\n      writeBlob(abort, body, client, request, socket, contentLength, header, expectsPayload)\n    }\n  } else if (util.isStream(body)) {\n    writeStream(abort, body, client, request, socket, contentLength, header, expectsPayload)\n  } else if (util.isIterable(body)) {\n    writeIterable(abort, body, client, request, socket, contentLength, header, expectsPayload)\n  } else {\n    assert(false)\n  }\n\n  return true\n}\n\nfunction writeStream (abort, body, client, request, socket, contentLength, header, expectsPayload) {\n  assert(contentLength !== 0 || client[kRunning] === 0, 'stream body cannot be pipelined')\n\n  let finished = false\n\n  const writer = new AsyncWriter({ abort, socket, request, contentLength, client, expectsPayload, header })\n\n  const onData = function (chunk) {\n    if (finished) {\n      return\n    }\n\n    try {\n      if (!writer.write(chunk) && this.pause) {\n        this.pause()\n      }\n    } catch (err) {\n      util.destroy(this, err)\n    }\n  }\n  const onDrain = function () {\n    if (finished) {\n      return\n    }\n\n    if (body.resume) {\n      body.resume()\n    }\n  }\n  const onClose = function () {\n    // 'close' might be emitted *before* 'error' for\n    // broken streams. Wait a tick to avoid this case.\n    queueMicrotask(() => {\n      // It's only safe to remove 'error' listener after\n      // 'close'.\n      body.removeListener('error', onFinished)\n    })\n\n    if (!finished) {\n      const err = new RequestAbortedError()\n      queueMicrotask(() => onFinished(err))\n    }\n  }\n  const onFinished = function (err) {\n    if (finished) {\n      return\n    }\n\n    finished = true\n\n    assert(socket.destroyed || (socket[kWriting] && client[kRunning] <= 1))\n\n    socket\n      .off('drain', onDrain)\n      .off('error', onFinished)\n\n    body\n      .removeListener('data', onData)\n      .removeListener('end', onFinished)\n      .removeListener('close', onClose)\n\n    if (!err) {\n      try {\n        writer.end()\n      } catch (er) {\n        err = er\n      }\n    }\n\n    writer.destroy(err)\n\n    if (err && (err.code !== 'UND_ERR_INFO' || err.message !== 'reset')) {\n      util.destroy(body, err)\n    } else {\n      util.destroy(body)\n    }\n  }\n\n  body\n    .on('data', onData)\n    .on('end', onFinished)\n    .on('error', onFinished)\n    .on('close', onClose)\n\n  if (body.resume) {\n    body.resume()\n  }\n\n  socket\n    .on('drain', onDrain)\n    .on('error', onFinished)\n\n  if (body.errorEmitted ?? body.errored) {\n    setImmediate(() => onFinished(body.errored))\n  } else if (body.endEmitted ?? body.readableEnded) {\n    setImmediate(() => onFinished(null))\n  }\n\n  if (body.closeEmitted ?? body.closed) {\n    setImmediate(onClose)\n  }\n}\n\nfunction writeBuffer (abort, body, client, request, socket, contentLength, header, expectsPayload) {\n  try {\n    if (!body) {\n      if (contentLength === 0) {\n        socket.write(`${header}content-length: 0\\r\\n\\r\\n`, 'latin1')\n      } else {\n        assert(contentLength === null, 'no body must not have content length')\n        socket.write(`${header}\\r\\n`, 'latin1')\n      }\n    } else if (util.isBuffer(body)) {\n      assert(contentLength === body.byteLength, 'buffer body must have content length')\n\n      socket.cork()\n      socket.write(`${header}content-length: ${contentLength}\\r\\n\\r\\n`, 'latin1')\n      socket.write(body)\n      socket.uncork()\n      request.onBodySent(body)\n\n      if (!expectsPayload && request.reset !== false) {\n        socket[kReset] = true\n      }\n    }\n    request.onRequestSent()\n\n    client[kResume]()\n  } catch (err) {\n    abort(err)\n  }\n}\n\nasync function writeBlob (abort, body, client, request, socket, contentLength, header, expectsPayload) {\n  assert(contentLength === body.size, 'blob body must have content length')\n\n  try {\n    if (contentLength != null && contentLength !== body.size) {\n      throw new RequestContentLengthMismatchError()\n    }\n\n    const buffer = Buffer.from(await body.arrayBuffer())\n\n    socket.cork()\n    socket.write(`${header}content-length: ${contentLength}\\r\\n\\r\\n`, 'latin1')\n    socket.write(buffer)\n    socket.uncork()\n\n    request.onBodySent(buffer)\n    request.onRequestSent()\n\n    if (!expectsPayload && request.reset !== false) {\n      socket[kReset] = true\n    }\n\n    client[kResume]()\n  } catch (err) {\n    abort(err)\n  }\n}\n\nasync function writeIterable (abort, body, client, request, socket, contentLength, header, expectsPayload) {\n  assert(contentLength !== 0 || client[kRunning] === 0, 'iterator body cannot be pipelined')\n\n  let callback = null\n  function onDrain () {\n    if (callback) {\n      const cb = callback\n      callback = null\n      cb()\n    }\n  }\n\n  const waitForDrain = () => new Promise((resolve, reject) => {\n    assert(callback === null)\n\n    if (socket[kError]) {\n      reject(socket[kError])\n    } else {\n      callback = resolve\n    }\n  })\n\n  socket\n    .on('close', onDrain)\n    .on('drain', onDrain)\n\n  const writer = new AsyncWriter({ abort, socket, request, contentLength, client, expectsPayload, header })\n  try {\n    // It's up to the user to somehow abort the async iterable.\n    for await (const chunk of body) {\n      if (socket[kError]) {\n        throw socket[kError]\n      }\n\n      if (!writer.write(chunk)) {\n        await waitForDrain()\n      }\n    }\n\n    writer.end()\n  } catch (err) {\n    writer.destroy(err)\n  } finally {\n    socket\n      .off('close', onDrain)\n      .off('drain', onDrain)\n  }\n}\n\nclass AsyncWriter {\n  constructor ({ abort, socket, request, contentLength, client, expectsPayload, header }) {\n    this.socket = socket\n    this.request = request\n    this.contentLength = contentLength\n    this.client = client\n    this.bytesWritten = 0\n    this.expectsPayload = expectsPayload\n    this.header = header\n    this.abort = abort\n\n    socket[kWriting] = true\n  }\n\n  write (chunk) {\n    const { socket, request, contentLength, client, bytesWritten, expectsPayload, header } = this\n\n    if (socket[kError]) {\n      throw socket[kError]\n    }\n\n    if (socket.destroyed) {\n      return false\n    }\n\n    const len = Buffer.byteLength(chunk)\n    if (!len) {\n      return true\n    }\n\n    // We should defer writing chunks.\n    if (contentLength !== null && bytesWritten + len > contentLength) {\n      if (client[kStrictContentLength]) {\n        throw new RequestContentLengthMismatchError()\n      }\n\n      process.emitWarning(new RequestContentLengthMismatchError())\n    }\n\n    socket.cork()\n\n    if (bytesWritten === 0) {\n      if (!expectsPayload && request.reset !== false) {\n        socket[kReset] = true\n      }\n\n      if (contentLength === null) {\n        socket.write(`${header}transfer-encoding: chunked\\r\\n`, 'latin1')\n      } else {\n        socket.write(`${header}content-length: ${contentLength}\\r\\n\\r\\n`, 'latin1')\n      }\n    }\n\n    if (contentLength === null) {\n      socket.write(`\\r\\n${len.toString(16)}\\r\\n`, 'latin1')\n    }\n\n    this.bytesWritten += len\n\n    const ret = socket.write(chunk)\n\n    socket.uncork()\n\n    request.onBodySent(chunk)\n\n    if (!ret) {\n      if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) {\n        // istanbul ignore else: only for jest\n        if (socket[kParser].timeout.refresh) {\n          socket[kParser].timeout.refresh()\n        }\n      }\n    }\n\n    return ret\n  }\n\n  end () {\n    const { socket, contentLength, client, bytesWritten, expectsPayload, header, request } = this\n    request.onRequestSent()\n\n    socket[kWriting] = false\n\n    if (socket[kError]) {\n      throw socket[kError]\n    }\n\n    if (socket.destroyed) {\n      return\n    }\n\n    if (bytesWritten === 0) {\n      if (expectsPayload) {\n        // https://tools.ietf.org/html/rfc7230#section-3.3.2\n        // A user agent SHOULD send a Content-Length in a request message when\n        // no Transfer-Encoding is sent and the request method defines a meaning\n        // for an enclosed payload body.\n\n        socket.write(`${header}content-length: 0\\r\\n\\r\\n`, 'latin1')\n      } else {\n        socket.write(`${header}\\r\\n`, 'latin1')\n      }\n    } else if (contentLength === null) {\n      socket.write('\\r\\n0\\r\\n\\r\\n', 'latin1')\n    }\n\n    if (contentLength !== null && bytesWritten !== contentLength) {\n      if (client[kStrictContentLength]) {\n        throw new RequestContentLengthMismatchError()\n      } else {\n        process.emitWarning(new RequestContentLengthMismatchError())\n      }\n    }\n\n    if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) {\n      // istanbul ignore else: only for jest\n      if (socket[kParser].timeout.refresh) {\n        socket[kParser].timeout.refresh()\n      }\n    }\n\n    client[kResume]()\n  }\n\n  destroy (err) {\n    const { socket, client, abort } = this\n\n    socket[kWriting] = false\n\n    if (err) {\n      assert(client[kRunning] <= 1, 'pipeline should only contain this request')\n      abort(err)\n    }\n  }\n}\n\nmodule.exports = connectH1\n", "'use strict'\n\nconst assert = require('node:assert')\nconst { pipeline } = require('node:stream')\nconst util = require('../core/util.js')\nconst {\n  RequestContentLengthMismatchError,\n  RequestAbortedError,\n  SocketError,\n  InformationalError\n} = require('../core/errors.js')\nconst {\n  kUrl,\n  kReset,\n  kClient,\n  kRunning,\n  kPending,\n  kQueue,\n  kPendingIdx,\n  kRunningIdx,\n  kError,\n  kSocket,\n  kStrictContentLength,\n  kOnError,\n  kMaxConcurrentStreams,\n  kHTTP2Session,\n  kResume,\n  kSize,\n  kHTTPContext\n} = require('../core/symbols.js')\n\nconst kOpenStreams = Symbol('open streams')\n\nlet extractBody\n\n// Experimental\nlet h2ExperimentalWarned = false\n\n/** @type {import('http2')} */\nlet http2\ntry {\n  http2 = require('node:http2')\n} catch {\n  // @ts-ignore\n  http2 = { constants: {} }\n}\n\nconst {\n  constants: {\n    HTTP2_HEADER_AUTHORITY,\n    HTTP2_HEADER_METHOD,\n    HTTP2_HEADER_PATH,\n    HTTP2_HEADER_SCHEME,\n    HTTP2_HEADER_CONTENT_LENGTH,\n    HTTP2_HEADER_EXPECT,\n    HTTP2_HEADER_STATUS\n  }\n} = http2\n\nfunction parseH2Headers (headers) {\n  const result = []\n\n  for (const [name, value] of Object.entries(headers)) {\n    // h2 may concat the header value by array\n    // e.g. Set-Cookie\n    if (Array.isArray(value)) {\n      for (const subvalue of value) {\n        // we need to provide each header value of header name\n        // because the headers handler expect name-value pair\n        result.push(Buffer.from(name), Buffer.from(subvalue))\n      }\n    } else {\n      result.push(Buffer.from(name), Buffer.from(value))\n    }\n  }\n\n  return result\n}\n\nasync function connectH2 (client, socket) {\n  client[kSocket] = socket\n\n  if (!h2ExperimentalWarned) {\n    h2ExperimentalWarned = true\n    process.emitWarning('H2 support is experimental, expect them to change at any time.', {\n      code: 'UNDICI-H2'\n    })\n  }\n\n  const session = http2.connect(client[kUrl], {\n    createConnection: () => socket,\n    peerMaxConcurrentStreams: client[kMaxConcurrentStreams]\n  })\n\n  session[kOpenStreams] = 0\n  session[kClient] = client\n  session[kSocket] = socket\n\n  util.addListener(session, 'error', onHttp2SessionError)\n  util.addListener(session, 'frameError', onHttp2FrameError)\n  util.addListener(session, 'end', onHttp2SessionEnd)\n  util.addListener(session, 'goaway', onHTTP2GoAway)\n  util.addListener(session, 'close', function () {\n    const { [kClient]: client } = this\n    const { [kSocket]: socket } = client\n\n    const err = this[kSocket][kError] || this[kError] || new SocketError('closed', util.getSocketInfo(socket))\n\n    client[kHTTP2Session] = null\n\n    if (client.destroyed) {\n      assert(client[kPending] === 0)\n\n      // Fail entire queue.\n      const requests = client[kQueue].splice(client[kRunningIdx])\n      for (let i = 0; i < requests.length; i++) {\n        const request = requests[i]\n        util.errorRequest(client, request, err)\n      }\n    }\n  })\n\n  session.unref()\n\n  client[kHTTP2Session] = session\n  socket[kHTTP2Session] = session\n\n  util.addListener(socket, 'error', function (err) {\n    assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID')\n\n    this[kError] = err\n\n    this[kClient][kOnError](err)\n  })\n\n  util.addListener(socket, 'end', function () {\n    util.destroy(this, new SocketError('other side closed', util.getSocketInfo(this)))\n  })\n\n  util.addListener(socket, 'close', function () {\n    const err = this[kError] || new SocketError('closed', util.getSocketInfo(this))\n\n    client[kSocket] = null\n\n    if (this[kHTTP2Session] != null) {\n      this[kHTTP2Session].destroy(err)\n    }\n\n    client[kPendingIdx] = client[kRunningIdx]\n\n    assert(client[kRunning] === 0)\n\n    client.emit('disconnect', client[kUrl], [client], err)\n\n    client[kResume]()\n  })\n\n  let closed = false\n  socket.on('close', () => {\n    closed = true\n  })\n\n  return {\n    version: 'h2',\n    defaultPipelining: Infinity,\n    write (...args) {\n      return writeH2(client, ...args)\n    },\n    resume () {\n      resumeH2(client)\n    },\n    destroy (err, callback) {\n      if (closed) {\n        queueMicrotask(callback)\n      } else {\n        // Destroying the socket will trigger the session close\n        socket.destroy(err).on('close', callback)\n      }\n    },\n    get destroyed () {\n      return socket.destroyed\n    },\n    busy () {\n      return false\n    }\n  }\n}\n\nfunction resumeH2 (client) {\n  const socket = client[kSocket]\n\n  if (socket?.destroyed === false) {\n    if (client[kSize] === 0 && client[kMaxConcurrentStreams] === 0) {\n      socket.unref()\n      client[kHTTP2Session].unref()\n    } else {\n      socket.ref()\n      client[kHTTP2Session].ref()\n    }\n  }\n}\n\nfunction onHttp2SessionError (err) {\n  assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID')\n\n  this[kSocket][kError] = err\n  this[kClient][kOnError](err)\n}\n\nfunction onHttp2FrameError (type, code, id) {\n  if (id === 0) {\n    const err = new InformationalError(`HTTP/2: \"frameError\" received - type ${type}, code ${code}`)\n    this[kSocket][kError] = err\n    this[kClient][kOnError](err)\n  }\n}\n\nfunction onHttp2SessionEnd () {\n  const err = new SocketError('other side closed', util.getSocketInfo(this[kSocket]))\n  this.destroy(err)\n  util.destroy(this[kSocket], err)\n}\n\n/**\n * This is the root cause of #3011\n * We need to handle GOAWAY frames properly, and trigger the session close\n * along with the socket right away\n */\nfunction onHTTP2GoAway (code) {\n  // We cannot recover, so best to close the session and the socket\n  const err = this[kError] || new SocketError(`HTTP/2: \"GOAWAY\" frame received with code ${code}`, util.getSocketInfo(this))\n  const client = this[kClient]\n\n  client[kSocket] = null\n  client[kHTTPContext] = null\n\n  if (this[kHTTP2Session] != null) {\n    this[kHTTP2Session].destroy(err)\n    this[kHTTP2Session] = null\n  }\n\n  util.destroy(this[kSocket], err)\n\n  // Fail head of pipeline.\n  if (client[kRunningIdx] < client[kQueue].length) {\n    const request = client[kQueue][client[kRunningIdx]]\n    client[kQueue][client[kRunningIdx]++] = null\n    util.errorRequest(client, request, err)\n    client[kPendingIdx] = client[kRunningIdx]\n  }\n\n  assert(client[kRunning] === 0)\n\n  client.emit('disconnect', client[kUrl], [client], err)\n\n  client[kResume]()\n}\n\n// https://www.rfc-editor.org/rfc/rfc7230#section-3.3.2\nfunction shouldSendContentLength (method) {\n  return method !== 'GET' && method !== 'HEAD' && method !== 'OPTIONS' && method !== 'TRACE' && method !== 'CONNECT'\n}\n\nfunction writeH2 (client, request) {\n  const session = client[kHTTP2Session]\n  const { method, path, host, upgrade, expectContinue, signal, headers: reqHeaders } = request\n  let { body } = request\n\n  if (upgrade) {\n    util.errorRequest(client, request, new Error('Upgrade not supported for H2'))\n    return false\n  }\n\n  const headers = {}\n  for (let n = 0; n < reqHeaders.length; n += 2) {\n    const key = reqHeaders[n + 0]\n    const val = reqHeaders[n + 1]\n\n    if (Array.isArray(val)) {\n      for (let i = 0; i < val.length; i++) {\n        if (headers[key]) {\n          headers[key] += `,${val[i]}`\n        } else {\n          headers[key] = val[i]\n        }\n      }\n    } else {\n      headers[key] = val\n    }\n  }\n\n  /** @type {import('node:http2').ClientHttp2Stream} */\n  let stream\n\n  const { hostname, port } = client[kUrl]\n\n  headers[HTTP2_HEADER_AUTHORITY] = host || `${hostname}${port ? `:${port}` : ''}`\n  headers[HTTP2_HEADER_METHOD] = method\n\n  const abort = (err) => {\n    if (request.aborted || request.completed) {\n      return\n    }\n\n    err = err || new RequestAbortedError()\n\n    util.errorRequest(client, request, err)\n\n    if (stream != null) {\n      util.destroy(stream, err)\n    }\n\n    // We do not destroy the socket as we can continue using the session\n    // the stream get's destroyed and the session remains to create new streams\n    util.destroy(body, err)\n    client[kQueue][client[kRunningIdx]++] = null\n    client[kResume]()\n  }\n\n  try {\n    // We are already connected, streams are pending.\n    // We can call on connect, and wait for abort\n    request.onConnect(abort)\n  } catch (err) {\n    util.errorRequest(client, request, err)\n  }\n\n  if (request.aborted) {\n    return false\n  }\n\n  if (method === 'CONNECT') {\n    session.ref()\n    // We are already connected, streams are pending, first request\n    // will create a new stream. We trigger a request to create the stream and wait until\n    // `ready` event is triggered\n    // We disabled endStream to allow the user to write to the stream\n    stream = session.request(headers, { endStream: false, signal })\n\n    if (stream.id && !stream.pending) {\n      request.onUpgrade(null, null, stream)\n      ++session[kOpenStreams]\n      client[kQueue][client[kRunningIdx]++] = null\n    } else {\n      stream.once('ready', () => {\n        request.onUpgrade(null, null, stream)\n        ++session[kOpenStreams]\n        client[kQueue][client[kRunningIdx]++] = null\n      })\n    }\n\n    stream.once('close', () => {\n      session[kOpenStreams] -= 1\n      if (session[kOpenStreams] === 0) session.unref()\n    })\n\n    return true\n  }\n\n  // https://tools.ietf.org/html/rfc7540#section-8.3\n  // :path and :scheme headers must be omitted when sending CONNECT\n\n  headers[HTTP2_HEADER_PATH] = path\n  headers[HTTP2_HEADER_SCHEME] = 'https'\n\n  // https://tools.ietf.org/html/rfc7231#section-4.3.1\n  // https://tools.ietf.org/html/rfc7231#section-4.3.2\n  // https://tools.ietf.org/html/rfc7231#section-4.3.5\n\n  // Sending a payload body on a request that does not\n  // expect it can cause undefined behavior on some\n  // servers and corrupt connection state. Do not\n  // re-use the connection for further requests.\n\n  const expectsPayload = (\n    method === 'PUT' ||\n    method === 'POST' ||\n    method === 'PATCH'\n  )\n\n  if (body && typeof body.read === 'function') {\n    // Try to read EOF in order to get length.\n    body.read(0)\n  }\n\n  let contentLength = util.bodyLength(body)\n\n  if (util.isFormDataLike(body)) {\n    extractBody ??= require('../web/fetch/body.js').extractBody\n\n    const [bodyStream, contentType] = extractBody(body)\n    headers['content-type'] = contentType\n\n    body = bodyStream.stream\n    contentLength = bodyStream.length\n  }\n\n  if (contentLength == null) {\n    contentLength = request.contentLength\n  }\n\n  if (contentLength === 0 || !expectsPayload) {\n    // https://tools.ietf.org/html/rfc7230#section-3.3.2\n    // A user agent SHOULD NOT send a Content-Length header field when\n    // the request message does not contain a payload body and the method\n    // semantics do not anticipate such a body.\n\n    contentLength = null\n  }\n\n  // https://github.com/nodejs/undici/issues/2046\n  // A user agent may send a Content-Length header with 0 value, this should be allowed.\n  if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength != null && request.contentLength !== contentLength) {\n    if (client[kStrictContentLength]) {\n      util.errorRequest(client, request, new RequestContentLengthMismatchError())\n      return false\n    }\n\n    process.emitWarning(new RequestContentLengthMismatchError())\n  }\n\n  if (contentLength != null) {\n    assert(body, 'no body must not have content length')\n    headers[HTTP2_HEADER_CONTENT_LENGTH] = `${contentLength}`\n  }\n\n  session.ref()\n\n  const shouldEndStream = method === 'GET' || method === 'HEAD' || body === null\n  if (expectContinue) {\n    headers[HTTP2_HEADER_EXPECT] = '100-continue'\n    stream = session.request(headers, { endStream: shouldEndStream, signal })\n\n    stream.once('continue', writeBodyH2)\n  } else {\n    stream = session.request(headers, {\n      endStream: shouldEndStream,\n      signal\n    })\n    writeBodyH2()\n  }\n\n  // Increment counter as we have new streams open\n  ++session[kOpenStreams]\n\n  stream.once('response', headers => {\n    const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers\n    request.onResponseStarted()\n\n    // Due to the stream nature, it is possible we face a race condition\n    // where the stream has been assigned, but the request has been aborted\n    // the request remains in-flight and headers hasn't been received yet\n    // for those scenarios, best effort is to destroy the stream immediately\n    // as there's no value to keep it open.\n    if (request.aborted) {\n      const err = new RequestAbortedError()\n      util.errorRequest(client, request, err)\n      util.destroy(stream, err)\n      return\n    }\n\n    if (request.onHeaders(Number(statusCode), parseH2Headers(realHeaders), stream.resume.bind(stream), '') === false) {\n      stream.pause()\n    }\n\n    stream.on('data', (chunk) => {\n      if (request.onData(chunk) === false) {\n        stream.pause()\n      }\n    })\n  })\n\n  stream.once('end', () => {\n    // When state is null, it means we haven't consumed body and the stream still do not have\n    // a state.\n    // Present specially when using pipeline or stream\n    if (stream.state?.state == null || stream.state.state < 6) {\n      request.onComplete([])\n    }\n\n    if (session[kOpenStreams] === 0) {\n      // Stream is closed or half-closed-remote (6), decrement counter and cleanup\n      // It does not have sense to continue working with the stream as we do not\n      // have yet RST_STREAM support on client-side\n\n      session.unref()\n    }\n\n    abort(new InformationalError('HTTP/2: stream half-closed (remote)'))\n    client[kQueue][client[kRunningIdx]++] = null\n    client[kPendingIdx] = client[kRunningIdx]\n    client[kResume]()\n  })\n\n  stream.once('close', () => {\n    session[kOpenStreams] -= 1\n    if (session[kOpenStreams] === 0) {\n      session.unref()\n    }\n  })\n\n  stream.once('error', function (err) {\n    abort(err)\n  })\n\n  stream.once('frameError', (type, code) => {\n    abort(new InformationalError(`HTTP/2: \"frameError\" received - type ${type}, code ${code}`))\n  })\n\n  // stream.on('aborted', () => {\n  //   // TODO(HTTP/2): Support aborted\n  // })\n\n  // stream.on('timeout', () => {\n  //   // TODO(HTTP/2): Support timeout\n  // })\n\n  // stream.on('push', headers => {\n  //   // TODO(HTTP/2): Support push\n  // })\n\n  // stream.on('trailers', headers => {\n  //   // TODO(HTTP/2): Support trailers\n  // })\n\n  return true\n\n  function writeBodyH2 () {\n    /* istanbul ignore else: assertion */\n    if (!body || contentLength === 0) {\n      writeBuffer(\n        abort,\n        stream,\n        null,\n        client,\n        request,\n        client[kSocket],\n        contentLength,\n        expectsPayload\n      )\n    } else if (util.isBuffer(body)) {\n      writeBuffer(\n        abort,\n        stream,\n        body,\n        client,\n        request,\n        client[kSocket],\n        contentLength,\n        expectsPayload\n      )\n    } else if (util.isBlobLike(body)) {\n      if (typeof body.stream === 'function') {\n        writeIterable(\n          abort,\n          stream,\n          body.stream(),\n          client,\n          request,\n          client[kSocket],\n          contentLength,\n          expectsPayload\n        )\n      } else {\n        writeBlob(\n          abort,\n          stream,\n          body,\n          client,\n          request,\n          client[kSocket],\n          contentLength,\n          expectsPayload\n        )\n      }\n    } else if (util.isStream(body)) {\n      writeStream(\n        abort,\n        client[kSocket],\n        expectsPayload,\n        stream,\n        body,\n        client,\n        request,\n        contentLength\n      )\n    } else if (util.isIterable(body)) {\n      writeIterable(\n        abort,\n        stream,\n        body,\n        client,\n        request,\n        client[kSocket],\n        contentLength,\n        expectsPayload\n      )\n    } else {\n      assert(false)\n    }\n  }\n}\n\nfunction writeBuffer (abort, h2stream, body, client, request, socket, contentLength, expectsPayload) {\n  try {\n    if (body != null && util.isBuffer(body)) {\n      assert(contentLength === body.byteLength, 'buffer body must have content length')\n      h2stream.cork()\n      h2stream.write(body)\n      h2stream.uncork()\n      h2stream.end()\n\n      request.onBodySent(body)\n    }\n\n    if (!expectsPayload) {\n      socket[kReset] = true\n    }\n\n    request.onRequestSent()\n    client[kResume]()\n  } catch (error) {\n    abort(error)\n  }\n}\n\nfunction writeStream (abort, socket, expectsPayload, h2stream, body, client, request, contentLength) {\n  assert(contentLength !== 0 || client[kRunning] === 0, 'stream body cannot be pipelined')\n\n  // For HTTP/2, is enough to pipe the stream\n  const pipe = pipeline(\n    body,\n    h2stream,\n    (err) => {\n      if (err) {\n        util.destroy(pipe, err)\n        abort(err)\n      } else {\n        util.removeAllListeners(pipe)\n        request.onRequestSent()\n\n        if (!expectsPayload) {\n          socket[kReset] = true\n        }\n\n        client[kResume]()\n      }\n    }\n  )\n\n  util.addListener(pipe, 'data', onPipeData)\n\n  function onPipeData (chunk) {\n    request.onBodySent(chunk)\n  }\n}\n\nasync function writeBlob (abort, h2stream, body, client, request, socket, contentLength, expectsPayload) {\n  assert(contentLength === body.size, 'blob body must have content length')\n\n  try {\n    if (contentLength != null && contentLength !== body.size) {\n      throw new RequestContentLengthMismatchError()\n    }\n\n    const buffer = Buffer.from(await body.arrayBuffer())\n\n    h2stream.cork()\n    h2stream.write(buffer)\n    h2stream.uncork()\n    h2stream.end()\n\n    request.onBodySent(buffer)\n    request.onRequestSent()\n\n    if (!expectsPayload) {\n      socket[kReset] = true\n    }\n\n    client[kResume]()\n  } catch (err) {\n    abort(err)\n  }\n}\n\nasync function writeIterable (abort, h2stream, body, client, request, socket, contentLength, expectsPayload) {\n  assert(contentLength !== 0 || client[kRunning] === 0, 'iterator body cannot be pipelined')\n\n  let callback = null\n  function onDrain () {\n    if (callback) {\n      const cb = callback\n      callback = null\n      cb()\n    }\n  }\n\n  const waitForDrain = () => new Promise((resolve, reject) => {\n    assert(callback === null)\n\n    if (socket[kError]) {\n      reject(socket[kError])\n    } else {\n      callback = resolve\n    }\n  })\n\n  h2stream\n    .on('close', onDrain)\n    .on('drain', onDrain)\n\n  try {\n    // It's up to the user to somehow abort the async iterable.\n    for await (const chunk of body) {\n      if (socket[kError]) {\n        throw socket[kError]\n      }\n\n      const res = h2stream.write(chunk)\n      request.onBodySent(chunk)\n      if (!res) {\n        await waitForDrain()\n      }\n    }\n\n    h2stream.end()\n\n    request.onRequestSent()\n\n    if (!expectsPayload) {\n      socket[kReset] = true\n    }\n\n    client[kResume]()\n  } catch (err) {\n    abort(err)\n  } finally {\n    h2stream\n      .off('close', onDrain)\n      .off('drain', onDrain)\n  }\n}\n\nmodule.exports = connectH2\n", "'use strict'\n\nconst util = require('../core/util')\nconst { kBodyUsed } = require('../core/symbols')\nconst assert = require('node:assert')\nconst { InvalidArgumentError } = require('../core/errors')\nconst EE = require('node:events')\n\nconst redirectableStatusCodes = [300, 301, 302, 303, 307, 308]\n\nconst kBody = Symbol('body')\n\nclass BodyAsyncIterable {\n  constructor (body) {\n    this[kBody] = body\n    this[kBodyUsed] = false\n  }\n\n  async * [Symbol.asyncIterator] () {\n    assert(!this[kBodyUsed], 'disturbed')\n    this[kBodyUsed] = true\n    yield * this[kBody]\n  }\n}\n\nclass RedirectHandler {\n  constructor (dispatch, maxRedirections, opts, handler) {\n    if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) {\n      throw new InvalidArgumentError('maxRedirections must be a positive number')\n    }\n\n    util.validateHandler(handler, opts.method, opts.upgrade)\n\n    this.dispatch = dispatch\n    this.location = null\n    this.abort = null\n    this.opts = { ...opts, maxRedirections: 0 } // opts must be a copy\n    this.maxRedirections = maxRedirections\n    this.handler = handler\n    this.history = []\n    this.redirectionLimitReached = false\n\n    if (util.isStream(this.opts.body)) {\n      // TODO (fix): Provide some way for the user to cache the file to e.g. /tmp\n      // so that it can be dispatched again?\n      // TODO (fix): Do we need 100-expect support to provide a way to do this properly?\n      if (util.bodyLength(this.opts.body) === 0) {\n        this.opts.body\n          .on('data', function () {\n            assert(false)\n          })\n      }\n\n      if (typeof this.opts.body.readableDidRead !== 'boolean') {\n        this.opts.body[kBodyUsed] = false\n        EE.prototype.on.call(this.opts.body, 'data', function () {\n          this[kBodyUsed] = true\n        })\n      }\n    } else if (this.opts.body && typeof this.opts.body.pipeTo === 'function') {\n      // TODO (fix): We can't access ReadableStream internal state\n      // to determine whether or not it has been disturbed. This is just\n      // a workaround.\n      this.opts.body = new BodyAsyncIterable(this.opts.body)\n    } else if (\n      this.opts.body &&\n      typeof this.opts.body !== 'string' &&\n      !ArrayBuffer.isView(this.opts.body) &&\n      util.isIterable(this.opts.body)\n    ) {\n      // TODO: Should we allow re-using iterable if !this.opts.idempotent\n      // or through some other flag?\n      this.opts.body = new BodyAsyncIterable(this.opts.body)\n    }\n  }\n\n  onConnect (abort) {\n    this.abort = abort\n    this.handler.onConnect(abort, { history: this.history })\n  }\n\n  onUpgrade (statusCode, headers, socket) {\n    this.handler.onUpgrade(statusCode, headers, socket)\n  }\n\n  onError (error) {\n    this.handler.onError(error)\n  }\n\n  onHeaders (statusCode, headers, resume, statusText) {\n    this.location = this.history.length >= this.maxRedirections || util.isDisturbed(this.opts.body)\n      ? null\n      : parseLocation(statusCode, headers)\n\n    if (this.opts.throwOnMaxRedirect && this.history.length >= this.maxRedirections) {\n      if (this.request) {\n        this.request.abort(new Error('max redirects'))\n      }\n\n      this.redirectionLimitReached = true\n      this.abort(new Error('max redirects'))\n      return\n    }\n\n    if (this.opts.origin) {\n      this.history.push(new URL(this.opts.path, this.opts.origin))\n    }\n\n    if (!this.location) {\n      return this.handler.onHeaders(statusCode, headers, resume, statusText)\n    }\n\n    const { origin, pathname, search } = util.parseURL(new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin)))\n    const path = search ? `${pathname}${search}` : pathname\n\n    // Remove headers referring to the original URL.\n    // By default it is Host only, unless it's a 303 (see below), which removes also all Content-* headers.\n    // https://tools.ietf.org/html/rfc7231#section-6.4\n    this.opts.headers = cleanRequestHeaders(this.opts.headers, statusCode === 303, this.opts.origin !== origin)\n    this.opts.path = path\n    this.opts.origin = origin\n    this.opts.maxRedirections = 0\n    this.opts.query = null\n\n    // https://tools.ietf.org/html/rfc7231#section-6.4.4\n    // In case of HTTP 303, always replace method to be either HEAD or GET\n    if (statusCode === 303 && this.opts.method !== 'HEAD') {\n      this.opts.method = 'GET'\n      this.opts.body = null\n    }\n  }\n\n  onData (chunk) {\n    if (this.location) {\n      /*\n        https://tools.ietf.org/html/rfc7231#section-6.4\n\n        TLDR: undici always ignores 3xx response bodies.\n\n        Redirection is used to serve the requested resource from another URL, so it is assumes that\n        no body is generated (and thus can be ignored). Even though generating a body is not prohibited.\n\n        For status 301, 302, 303, 307 and 308 (the latter from RFC 7238), the specs mention that the body usually\n        (which means it's optional and not mandated) contain just an hyperlink to the value of\n        the Location response header, so the body can be ignored safely.\n\n        For status 300, which is \"Multiple Choices\", the spec mentions both generating a Location\n        response header AND a response body with the other possible location to follow.\n        Since the spec explicitly chooses not to specify a format for such body and leave it to\n        servers and browsers implementors, we ignore the body as there is no specified way to eventually parse it.\n      */\n    } else {\n      return this.handler.onData(chunk)\n    }\n  }\n\n  onComplete (trailers) {\n    if (this.location) {\n      /*\n        https://tools.ietf.org/html/rfc7231#section-6.4\n\n        TLDR: undici always ignores 3xx response trailers as they are not expected in case of redirections\n        and neither are useful if present.\n\n        See comment on onData method above for more detailed information.\n      */\n\n      this.location = null\n      this.abort = null\n\n      this.dispatch(this.opts, this)\n    } else {\n      this.handler.onComplete(trailers)\n    }\n  }\n\n  onBodySent (chunk) {\n    if (this.handler.onBodySent) {\n      this.handler.onBodySent(chunk)\n    }\n  }\n}\n\nfunction parseLocation (statusCode, headers) {\n  if (redirectableStatusCodes.indexOf(statusCode) === -1) {\n    return null\n  }\n\n  for (let i = 0; i < headers.length; i += 2) {\n    if (headers[i].length === 8 && util.headerNameToString(headers[i]) === 'location') {\n      return headers[i + 1]\n    }\n  }\n}\n\n// https://tools.ietf.org/html/rfc7231#section-6.4.4\nfunction shouldRemoveHeader (header, removeContent, unknownOrigin) {\n  if (header.length === 4) {\n    return util.headerNameToString(header) === 'host'\n  }\n  if (removeContent && util.headerNameToString(header).startsWith('content-')) {\n    return true\n  }\n  if (unknownOrigin && (header.length === 13 || header.length === 6 || header.length === 19)) {\n    const name = util.headerNameToString(header)\n    return name === 'authorization' || name === 'cookie' || name === 'proxy-authorization'\n  }\n  return false\n}\n\n// https://tools.ietf.org/html/rfc7231#section-6.4\nfunction cleanRequestHeaders (headers, removeContent, unknownOrigin) {\n  const ret = []\n  if (Array.isArray(headers)) {\n    for (let i = 0; i < headers.length; i += 2) {\n      if (!shouldRemoveHeader(headers[i], removeContent, unknownOrigin)) {\n        ret.push(headers[i], headers[i + 1])\n      }\n    }\n  } else if (headers && typeof headers === 'object') {\n    for (const key of Object.keys(headers)) {\n      if (!shouldRemoveHeader(key, removeContent, unknownOrigin)) {\n        ret.push(key, headers[key])\n      }\n    }\n  } else {\n    assert(headers == null, 'headers must be an object or an array')\n  }\n  return ret\n}\n\nmodule.exports = RedirectHandler\n", "'use strict'\n\nconst RedirectHandler = require('../handler/redirect-handler')\n\nfunction createRedirectInterceptor ({ maxRedirections: defaultMaxRedirections }) {\n  return (dispatch) => {\n    return function Intercept (opts, handler) {\n      const { maxRedirections = defaultMaxRedirections } = opts\n\n      if (!maxRedirections) {\n        return dispatch(opts, handler)\n      }\n\n      const redirectHandler = new RedirectHandler(dispatch, maxRedirections, opts, handler)\n      opts = { ...opts, maxRedirections: 0 } // Stop sub dispatcher from also redirecting.\n      return dispatch(opts, redirectHandler)\n    }\n  }\n}\n\nmodule.exports = createRedirectInterceptor\n", "// @ts-check\n\n'use strict'\n\nconst assert = require('node:assert')\nconst net = require('node:net')\nconst http = require('node:http')\nconst util = require('../core/util.js')\nconst { channels } = require('../core/diagnostics.js')\nconst Request = require('../core/request.js')\nconst DispatcherBase = require('./dispatcher-base')\nconst {\n  InvalidArgumentError,\n  InformationalError,\n  ClientDestroyedError\n} = require('../core/errors.js')\nconst buildConnector = require('../core/connect.js')\nconst {\n  kUrl,\n  kServerName,\n  kClient,\n  kBusy,\n  kConnect,\n  kResuming,\n  kRunning,\n  kPending,\n  kSize,\n  kQueue,\n  kConnected,\n  kConnecting,\n  kNeedDrain,\n  kKeepAliveDefaultTimeout,\n  kHostHeader,\n  kPendingIdx,\n  kRunningIdx,\n  kError,\n  kPipelining,\n  kKeepAliveTimeoutValue,\n  kMaxHeadersSize,\n  kKeepAliveMaxTimeout,\n  kKeepAliveTimeoutThreshold,\n  kHeadersTimeout,\n  kBodyTimeout,\n  kStrictContentLength,\n  kConnector,\n  kMaxRedirections,\n  kMaxRequests,\n  kCounter,\n  kClose,\n  kDestroy,\n  kDispatch,\n  kInterceptors,\n  kLocalAddress,\n  kMaxResponseSize,\n  kOnError,\n  kHTTPContext,\n  kMaxConcurrentStreams,\n  kResume\n} = require('../core/symbols.js')\nconst connectH1 = require('./client-h1.js')\nconst connectH2 = require('./client-h2.js')\nlet deprecatedInterceptorWarned = false\n\nconst kClosedResolve = Symbol('kClosedResolve')\n\nconst noop = () => {}\n\nfunction getPipelining (client) {\n  return client[kPipelining] ?? client[kHTTPContext]?.defaultPipelining ?? 1\n}\n\n/**\n * @type {import('../../types/client.js').default}\n */\nclass Client extends DispatcherBase {\n  /**\n   *\n   * @param {string|URL} url\n   * @param {import('../../types/client.js').Client.Options} options\n   */\n  constructor (url, {\n    interceptors,\n    maxHeaderSize,\n    headersTimeout,\n    socketTimeout,\n    requestTimeout,\n    connectTimeout,\n    bodyTimeout,\n    idleTimeout,\n    keepAlive,\n    keepAliveTimeout,\n    maxKeepAliveTimeout,\n    keepAliveMaxTimeout,\n    keepAliveTimeoutThreshold,\n    socketPath,\n    pipelining,\n    tls,\n    strictContentLength,\n    maxCachedSessions,\n    maxRedirections,\n    connect,\n    maxRequestsPerClient,\n    localAddress,\n    maxResponseSize,\n    autoSelectFamily,\n    autoSelectFamilyAttemptTimeout,\n    // h2\n    maxConcurrentStreams,\n    allowH2\n  } = {}) {\n    super()\n\n    if (keepAlive !== undefined) {\n      throw new InvalidArgumentError('unsupported keepAlive, use pipelining=0 instead')\n    }\n\n    if (socketTimeout !== undefined) {\n      throw new InvalidArgumentError('unsupported socketTimeout, use headersTimeout & bodyTimeout instead')\n    }\n\n    if (requestTimeout !== undefined) {\n      throw new InvalidArgumentError('unsupported requestTimeout, use headersTimeout & bodyTimeout instead')\n    }\n\n    if (idleTimeout !== undefined) {\n      throw new InvalidArgumentError('unsupported idleTimeout, use keepAliveTimeout instead')\n    }\n\n    if (maxKeepAliveTimeout !== undefined) {\n      throw new InvalidArgumentError('unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead')\n    }\n\n    if (maxHeaderSize != null && !Number.isFinite(maxHeaderSize)) {\n      throw new InvalidArgumentError('invalid maxHeaderSize')\n    }\n\n    if (socketPath != null && typeof socketPath !== 'string') {\n      throw new InvalidArgumentError('invalid socketPath')\n    }\n\n    if (connectTimeout != null && (!Number.isFinite(connectTimeout) || connectTimeout < 0)) {\n      throw new InvalidArgumentError('invalid connectTimeout')\n    }\n\n    if (keepAliveTimeout != null && (!Number.isFinite(keepAliveTimeout) || keepAliveTimeout <= 0)) {\n      throw new InvalidArgumentError('invalid keepAliveTimeout')\n    }\n\n    if (keepAliveMaxTimeout != null && (!Number.isFinite(keepAliveMaxTimeout) || keepAliveMaxTimeout <= 0)) {\n      throw new InvalidArgumentError('invalid keepAliveMaxTimeout')\n    }\n\n    if (keepAliveTimeoutThreshold != null && !Number.isFinite(keepAliveTimeoutThreshold)) {\n      throw new InvalidArgumentError('invalid keepAliveTimeoutThreshold')\n    }\n\n    if (headersTimeout != null && (!Number.isInteger(headersTimeout) || headersTimeout < 0)) {\n      throw new InvalidArgumentError('headersTimeout must be a positive integer or zero')\n    }\n\n    if (bodyTimeout != null && (!Number.isInteger(bodyTimeout) || bodyTimeout < 0)) {\n      throw new InvalidArgumentError('bodyTimeout must be a positive integer or zero')\n    }\n\n    if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {\n      throw new InvalidArgumentError('connect must be a function or an object')\n    }\n\n    if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) {\n      throw new InvalidArgumentError('maxRedirections must be a positive number')\n    }\n\n    if (maxRequestsPerClient != null && (!Number.isInteger(maxRequestsPerClient) || maxRequestsPerClient < 0)) {\n      throw new InvalidArgumentError('maxRequestsPerClient must be a positive number')\n    }\n\n    if (localAddress != null && (typeof localAddress !== 'string' || net.isIP(localAddress) === 0)) {\n      throw new InvalidArgumentError('localAddress must be valid string IP address')\n    }\n\n    if (maxResponseSize != null && (!Number.isInteger(maxResponseSize) || maxResponseSize < -1)) {\n      throw new InvalidArgumentError('maxResponseSize must be a positive number')\n    }\n\n    if (\n      autoSelectFamilyAttemptTimeout != null &&\n      (!Number.isInteger(autoSelectFamilyAttemptTimeout) || autoSelectFamilyAttemptTimeout < -1)\n    ) {\n      throw new InvalidArgumentError('autoSelectFamilyAttemptTimeout must be a positive number')\n    }\n\n    // h2\n    if (allowH2 != null && typeof allowH2 !== 'boolean') {\n      throw new InvalidArgumentError('allowH2 must be a valid boolean value')\n    }\n\n    if (maxConcurrentStreams != null && (typeof maxConcurrentStreams !== 'number' || maxConcurrentStreams < 1)) {\n      throw new InvalidArgumentError('maxConcurrentStreams must be a positive integer, greater than 0')\n    }\n\n    if (typeof connect !== 'function') {\n      connect = buildConnector({\n        ...tls,\n        maxCachedSessions,\n        allowH2,\n        socketPath,\n        timeout: connectTimeout,\n        ...(autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined),\n        ...connect\n      })\n    }\n\n    if (interceptors?.Client && Array.isArray(interceptors.Client)) {\n      this[kInterceptors] = interceptors.Client\n      if (!deprecatedInterceptorWarned) {\n        deprecatedInterceptorWarned = true\n        process.emitWarning('Client.Options#interceptor is deprecated. Use Dispatcher#compose instead.', {\n          code: 'UNDICI-CLIENT-INTERCEPTOR-DEPRECATED'\n        })\n      }\n    } else {\n      this[kInterceptors] = [createRedirectInterceptor({ maxRedirections })]\n    }\n\n    this[kUrl] = util.parseOrigin(url)\n    this[kConnector] = connect\n    this[kPipelining] = pipelining != null ? pipelining : 1\n    this[kMaxHeadersSize] = maxHeaderSize || http.maxHeaderSize\n    this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout\n    this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 600e3 : keepAliveMaxTimeout\n    this[kKeepAliveTimeoutThreshold] = keepAliveTimeoutThreshold == null ? 2e3 : keepAliveTimeoutThreshold\n    this[kKeepAliveTimeoutValue] = this[kKeepAliveDefaultTimeout]\n    this[kServerName] = null\n    this[kLocalAddress] = localAddress != null ? localAddress : null\n    this[kResuming] = 0 // 0, idle, 1, scheduled, 2 resuming\n    this[kNeedDrain] = 0 // 0, idle, 1, scheduled, 2 resuming\n    this[kHostHeader] = `host: ${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}\\r\\n`\n    this[kBodyTimeout] = bodyTimeout != null ? bodyTimeout : 300e3\n    this[kHeadersTimeout] = headersTimeout != null ? headersTimeout : 300e3\n    this[kStrictContentLength] = strictContentLength == null ? true : strictContentLength\n    this[kMaxRedirections] = maxRedirections\n    this[kMaxRequests] = maxRequestsPerClient\n    this[kClosedResolve] = null\n    this[kMaxResponseSize] = maxResponseSize > -1 ? maxResponseSize : -1\n    this[kMaxConcurrentStreams] = maxConcurrentStreams != null ? maxConcurrentStreams : 100 // Max peerConcurrentStreams for a Node h2 server\n    this[kHTTPContext] = null\n\n    // kQueue is built up of 3 sections separated by\n    // the kRunningIdx and kPendingIdx indices.\n    // |   complete   |   running   |   pending   |\n    //                ^ kRunningIdx ^ kPendingIdx ^ kQueue.length\n    // kRunningIdx points to the first running element.\n    // kPendingIdx points to the first pending element.\n    // This implements a fast queue with an amortized\n    // time of O(1).\n\n    this[kQueue] = []\n    this[kRunningIdx] = 0\n    this[kPendingIdx] = 0\n\n    this[kResume] = (sync) => resume(this, sync)\n    this[kOnError] = (err) => onError(this, err)\n  }\n\n  get pipelining () {\n    return this[kPipelining]\n  }\n\n  set pipelining (value) {\n    this[kPipelining] = value\n    this[kResume](true)\n  }\n\n  get [kPending] () {\n    return this[kQueue].length - this[kPendingIdx]\n  }\n\n  get [kRunning] () {\n    return this[kPendingIdx] - this[kRunningIdx]\n  }\n\n  get [kSize] () {\n    return this[kQueue].length - this[kRunningIdx]\n  }\n\n  get [kConnected] () {\n    return !!this[kHTTPContext] && !this[kConnecting] && !this[kHTTPContext].destroyed\n  }\n\n  get [kBusy] () {\n    return Boolean(\n      this[kHTTPContext]?.busy(null) ||\n      (this[kSize] >= (getPipelining(this) || 1)) ||\n      this[kPending] > 0\n    )\n  }\n\n  /* istanbul ignore: only used for test */\n  [kConnect] (cb) {\n    connect(this)\n    this.once('connect', cb)\n  }\n\n  [kDispatch] (opts, handler) {\n    const origin = opts.origin || this[kUrl].origin\n    const request = new Request(origin, opts, handler)\n\n    this[kQueue].push(request)\n    if (this[kResuming]) {\n      // Do nothing.\n    } else if (util.bodyLength(request.body) == null && util.isIterable(request.body)) {\n      // Wait a tick in case stream/iterator is ended in the same tick.\n      this[kResuming] = 1\n      queueMicrotask(() => resume(this))\n    } else {\n      this[kResume](true)\n    }\n\n    if (this[kResuming] && this[kNeedDrain] !== 2 && this[kBusy]) {\n      this[kNeedDrain] = 2\n    }\n\n    return this[kNeedDrain] < 2\n  }\n\n  async [kClose] () {\n    // TODO: for H2 we need to gracefully flush the remaining enqueued\n    // request and close each stream.\n    return new Promise((resolve) => {\n      if (this[kSize]) {\n        this[kClosedResolve] = resolve\n      } else {\n        resolve(null)\n      }\n    })\n  }\n\n  async [kDestroy] (err) {\n    return new Promise((resolve) => {\n      const requests = this[kQueue].splice(this[kPendingIdx])\n      for (let i = 0; i < requests.length; i++) {\n        const request = requests[i]\n        util.errorRequest(this, request, err)\n      }\n\n      const callback = () => {\n        if (this[kClosedResolve]) {\n          // TODO (fix): Should we error here with ClientDestroyedError?\n          this[kClosedResolve]()\n          this[kClosedResolve] = null\n        }\n        resolve(null)\n      }\n\n      if (this[kHTTPContext]) {\n        this[kHTTPContext].destroy(err, callback)\n        this[kHTTPContext] = null\n      } else {\n        queueMicrotask(callback)\n      }\n\n      this[kResume]()\n    })\n  }\n}\n\nconst createRedirectInterceptor = require('../interceptor/redirect-interceptor.js')\n\nfunction onError (client, err) {\n  if (\n    client[kRunning] === 0 &&\n    err.code !== 'UND_ERR_INFO' &&\n    err.code !== 'UND_ERR_SOCKET'\n  ) {\n    // Error is not caused by running request and not a recoverable\n    // socket error.\n\n    assert(client[kPendingIdx] === client[kRunningIdx])\n\n    const requests = client[kQueue].splice(client[kRunningIdx])\n\n    for (let i = 0; i < requests.length; i++) {\n      const request = requests[i]\n      util.errorRequest(client, request, err)\n    }\n    assert(client[kSize] === 0)\n  }\n}\n\n/**\n * @param {Client} client\n * @returns\n */\nasync function connect (client) {\n  assert(!client[kConnecting])\n  assert(!client[kHTTPContext])\n\n  let { host, hostname, protocol, port } = client[kUrl]\n\n  // Resolve ipv6\n  if (hostname[0] === '[') {\n    const idx = hostname.indexOf(']')\n\n    assert(idx !== -1)\n    const ip = hostname.substring(1, idx)\n\n    assert(net.isIP(ip))\n    hostname = ip\n  }\n\n  client[kConnecting] = true\n\n  if (channels.beforeConnect.hasSubscribers) {\n    channels.beforeConnect.publish({\n      connectParams: {\n        host,\n        hostname,\n        protocol,\n        port,\n        version: client[kHTTPContext]?.version,\n        servername: client[kServerName],\n        localAddress: client[kLocalAddress]\n      },\n      connector: client[kConnector]\n    })\n  }\n\n  try {\n    const socket = await new Promise((resolve, reject) => {\n      client[kConnector]({\n        host,\n        hostname,\n        protocol,\n        port,\n        servername: client[kServerName],\n        localAddress: client[kLocalAddress]\n      }, (err, socket) => {\n        if (err) {\n          reject(err)\n        } else {\n          resolve(socket)\n        }\n      })\n    })\n\n    if (client.destroyed) {\n      util.destroy(socket.on('error', noop), new ClientDestroyedError())\n      return\n    }\n\n    assert(socket)\n\n    try {\n      client[kHTTPContext] = socket.alpnProtocol === 'h2'\n        ? await connectH2(client, socket)\n        : await connectH1(client, socket)\n    } catch (err) {\n      socket.destroy().on('error', noop)\n      throw err\n    }\n\n    client[kConnecting] = false\n\n    socket[kCounter] = 0\n    socket[kMaxRequests] = client[kMaxRequests]\n    socket[kClient] = client\n    socket[kError] = null\n\n    if (channels.connected.hasSubscribers) {\n      channels.connected.publish({\n        connectParams: {\n          host,\n          hostname,\n          protocol,\n          port,\n          version: client[kHTTPContext]?.version,\n          servername: client[kServerName],\n          localAddress: client[kLocalAddress]\n        },\n        connector: client[kConnector],\n        socket\n      })\n    }\n    client.emit('connect', client[kUrl], [client])\n  } catch (err) {\n    if (client.destroyed) {\n      return\n    }\n\n    client[kConnecting] = false\n\n    if (channels.connectError.hasSubscribers) {\n      channels.connectError.publish({\n        connectParams: {\n          host,\n          hostname,\n          protocol,\n          port,\n          version: client[kHTTPContext]?.version,\n          servername: client[kServerName],\n          localAddress: client[kLocalAddress]\n        },\n        connector: client[kConnector],\n        error: err\n      })\n    }\n\n    if (err.code === 'ERR_TLS_CERT_ALTNAME_INVALID') {\n      assert(client[kRunning] === 0)\n      while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) {\n        const request = client[kQueue][client[kPendingIdx]++]\n        util.errorRequest(client, request, err)\n      }\n    } else {\n      onError(client, err)\n    }\n\n    client.emit('connectionError', client[kUrl], [client], err)\n  }\n\n  client[kResume]()\n}\n\nfunction emitDrain (client) {\n  client[kNeedDrain] = 0\n  client.emit('drain', client[kUrl], [client])\n}\n\nfunction resume (client, sync) {\n  if (client[kResuming] === 2) {\n    return\n  }\n\n  client[kResuming] = 2\n\n  _resume(client, sync)\n  client[kResuming] = 0\n\n  if (client[kRunningIdx] > 256) {\n    client[kQueue].splice(0, client[kRunningIdx])\n    client[kPendingIdx] -= client[kRunningIdx]\n    client[kRunningIdx] = 0\n  }\n}\n\nfunction _resume (client, sync) {\n  while (true) {\n    if (client.destroyed) {\n      assert(client[kPending] === 0)\n      return\n    }\n\n    if (client[kClosedResolve] && !client[kSize]) {\n      client[kClosedResolve]()\n      client[kClosedResolve] = null\n      return\n    }\n\n    if (client[kHTTPContext]) {\n      client[kHTTPContext].resume()\n    }\n\n    if (client[kBusy]) {\n      client[kNeedDrain] = 2\n    } else if (client[kNeedDrain] === 2) {\n      if (sync) {\n        client[kNeedDrain] = 1\n        queueMicrotask(() => emitDrain(client))\n      } else {\n        emitDrain(client)\n      }\n      continue\n    }\n\n    if (client[kPending] === 0) {\n      return\n    }\n\n    if (client[kRunning] >= (getPipelining(client) || 1)) {\n      return\n    }\n\n    const request = client[kQueue][client[kPendingIdx]]\n\n    if (client[kUrl].protocol === 'https:' && client[kServerName] !== request.servername) {\n      if (client[kRunning] > 0) {\n        return\n      }\n\n      client[kServerName] = request.servername\n      client[kHTTPContext]?.destroy(new InformationalError('servername changed'), () => {\n        client[kHTTPContext] = null\n        resume(client)\n      })\n    }\n\n    if (client[kConnecting]) {\n      return\n    }\n\n    if (!client[kHTTPContext]) {\n      connect(client)\n      return\n    }\n\n    if (client[kHTTPContext].destroyed) {\n      return\n    }\n\n    if (client[kHTTPContext].busy(request)) {\n      return\n    }\n\n    if (!request.aborted && client[kHTTPContext].write(request)) {\n      client[kPendingIdx]++\n    } else {\n      client[kQueue].splice(client[kPendingIdx], 1)\n    }\n  }\n}\n\nmodule.exports = Client\n", "/* eslint-disable */\n\n'use strict'\n\n// Extracted from node/lib/internal/fixed_queue.js\n\n// Currently optimal queue size, tested on V8 6.0 - 6.6. Must be power of two.\nconst kSize = 2048;\nconst kMask = kSize - 1;\n\n// The FixedQueue is implemented as a singly-linked list of fixed-size\n// circular buffers. It looks something like this:\n//\n//  head                                                       tail\n//    |                                                          |\n//    v                                                          v\n// +-----------+ <-----\\       +-----------+ <------\\         +-----------+\n// |  [null]   |        \\----- |   next    |         \\------- |   next    |\n// +-----------+               +-----------+                  +-----------+\n// |   item    | <-- bottom    |   item    | <-- bottom       |  [empty]  |\n// |   item    |               |   item    |                  |  [empty]  |\n// |   item    |               |   item    |                  |  [empty]  |\n// |   item    |               |   item    |                  |  [empty]  |\n// |   item    |               |   item    |       bottom --> |   item    |\n// |   item    |               |   item    |                  |   item    |\n// |    ...    |               |    ...    |                  |    ...    |\n// |   item    |               |   item    |                  |   item    |\n// |   item    |               |   item    |                  |   item    |\n// |  [empty]  | <-- top       |   item    |                  |   item    |\n// |  [empty]  |               |   item    |                  |   item    |\n// |  [empty]  |               |  [empty]  | <-- top  top --> |  [empty]  |\n// +-----------+               +-----------+                  +-----------+\n//\n// Or, if there is only one circular buffer, it looks something\n// like either of these:\n//\n//  head   tail                                 head   tail\n//    |     |                                     |     |\n//    v     v                                     v     v\n// +-----------+                               +-----------+\n// |  [null]   |                               |  [null]   |\n// +-----------+                               +-----------+\n// |  [empty]  |                               |   item    |\n// |  [empty]  |                               |   item    |\n// |   item    | <-- bottom            top --> |  [empty]  |\n// |   item    |                               |  [empty]  |\n// |  [empty]  | <-- top            bottom --> |   item    |\n// |  [empty]  |                               |   item    |\n// +-----------+                               +-----------+\n//\n// Adding a value means moving `top` forward by one, removing means\n// moving `bottom` forward by one. After reaching the end, the queue\n// wraps around.\n//\n// When `top === bottom` the current queue is empty and when\n// `top + 1 === bottom` it's full. This wastes a single space of storage\n// but allows much quicker checks.\n\nclass FixedCircularBuffer {\n  constructor() {\n    this.bottom = 0;\n    this.top = 0;\n    this.list = new Array(kSize);\n    this.next = null;\n  }\n\n  isEmpty() {\n    return this.top === this.bottom;\n  }\n\n  isFull() {\n    return ((this.top + 1) & kMask) === this.bottom;\n  }\n\n  push(data) {\n    this.list[this.top] = data;\n    this.top = (this.top + 1) & kMask;\n  }\n\n  shift() {\n    const nextItem = this.list[this.bottom];\n    if (nextItem === undefined)\n      return null;\n    this.list[this.bottom] = undefined;\n    this.bottom = (this.bottom + 1) & kMask;\n    return nextItem;\n  }\n}\n\nmodule.exports = class FixedQueue {\n  constructor() {\n    this.head = this.tail = new FixedCircularBuffer();\n  }\n\n  isEmpty() {\n    return this.head.isEmpty();\n  }\n\n  push(data) {\n    if (this.head.isFull()) {\n      // Head is full: Creates a new queue, sets the old queue's `.next` to it,\n      // and sets it as the new main queue.\n      this.head = this.head.next = new FixedCircularBuffer();\n    }\n    this.head.push(data);\n  }\n\n  shift() {\n    const tail = this.tail;\n    const next = tail.shift();\n    if (tail.isEmpty() && tail.next !== null) {\n      // If there is another queue, it forms the new tail.\n      this.tail = tail.next;\n    }\n    return next;\n  }\n};\n", "const { kFree, kConnected, kPending, kQueued, kRunning, kSize } = require('../core/symbols')\nconst kPool = Symbol('pool')\n\nclass PoolStats {\n  constructor (pool) {\n    this[kPool] = pool\n  }\n\n  get connected () {\n    return this[kPool][kConnected]\n  }\n\n  get free () {\n    return this[kPool][kFree]\n  }\n\n  get pending () {\n    return this[kPool][kPending]\n  }\n\n  get queued () {\n    return this[kPool][kQueued]\n  }\n\n  get running () {\n    return this[kPool][kRunning]\n  }\n\n  get size () {\n    return this[kPool][kSize]\n  }\n}\n\nmodule.exports = PoolStats\n", "'use strict'\n\nconst DispatcherBase = require('./dispatcher-base')\nconst FixedQueue = require('./fixed-queue')\nconst { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = require('../core/symbols')\nconst PoolStats = require('./pool-stats')\n\nconst kClients = Symbol('clients')\nconst kNeedDrain = Symbol('needDrain')\nconst kQueue = Symbol('queue')\nconst kClosedResolve = Symbol('closed resolve')\nconst kOnDrain = Symbol('onDrain')\nconst kOnConnect = Symbol('onConnect')\nconst kOnDisconnect = Symbol('onDisconnect')\nconst kOnConnectionError = Symbol('onConnectionError')\nconst kGetDispatcher = Symbol('get dispatcher')\nconst kAddClient = Symbol('add client')\nconst kRemoveClient = Symbol('remove client')\nconst kStats = Symbol('stats')\n\nclass PoolBase extends DispatcherBase {\n  constructor () {\n    super()\n\n    this[kQueue] = new FixedQueue()\n    this[kClients] = []\n    this[kQueued] = 0\n\n    const pool = this\n\n    this[kOnDrain] = function onDrain (origin, targets) {\n      const queue = pool[kQueue]\n\n      let needDrain = false\n\n      while (!needDrain) {\n        const item = queue.shift()\n        if (!item) {\n          break\n        }\n        pool[kQueued]--\n        needDrain = !this.dispatch(item.opts, item.handler)\n      }\n\n      this[kNeedDrain] = needDrain\n\n      if (!this[kNeedDrain] && pool[kNeedDrain]) {\n        pool[kNeedDrain] = false\n        pool.emit('drain', origin, [pool, ...targets])\n      }\n\n      if (pool[kClosedResolve] && queue.isEmpty()) {\n        Promise\n          .all(pool[kClients].map(c => c.close()))\n          .then(pool[kClosedResolve])\n      }\n    }\n\n    this[kOnConnect] = (origin, targets) => {\n      pool.emit('connect', origin, [pool, ...targets])\n    }\n\n    this[kOnDisconnect] = (origin, targets, err) => {\n      pool.emit('disconnect', origin, [pool, ...targets], err)\n    }\n\n    this[kOnConnectionError] = (origin, targets, err) => {\n      pool.emit('connectionError', origin, [pool, ...targets], err)\n    }\n\n    this[kStats] = new PoolStats(this)\n  }\n\n  get [kBusy] () {\n    return this[kNeedDrain]\n  }\n\n  get [kConnected] () {\n    return this[kClients].filter(client => client[kConnected]).length\n  }\n\n  get [kFree] () {\n    return this[kClients].filter(client => client[kConnected] && !client[kNeedDrain]).length\n  }\n\n  get [kPending] () {\n    let ret = this[kQueued]\n    for (const { [kPending]: pending } of this[kClients]) {\n      ret += pending\n    }\n    return ret\n  }\n\n  get [kRunning] () {\n    let ret = 0\n    for (const { [kRunning]: running } of this[kClients]) {\n      ret += running\n    }\n    return ret\n  }\n\n  get [kSize] () {\n    let ret = this[kQueued]\n    for (const { [kSize]: size } of this[kClients]) {\n      ret += size\n    }\n    return ret\n  }\n\n  get stats () {\n    return this[kStats]\n  }\n\n  async [kClose] () {\n    if (this[kQueue].isEmpty()) {\n      await Promise.all(this[kClients].map(c => c.close()))\n    } else {\n      await new Promise((resolve) => {\n        this[kClosedResolve] = resolve\n      })\n    }\n  }\n\n  async [kDestroy] (err) {\n    while (true) {\n      const item = this[kQueue].shift()\n      if (!item) {\n        break\n      }\n      item.handler.onError(err)\n    }\n\n    await Promise.all(this[kClients].map(c => c.destroy(err)))\n  }\n\n  [kDispatch] (opts, handler) {\n    const dispatcher = this[kGetDispatcher]()\n\n    if (!dispatcher) {\n      this[kNeedDrain] = true\n      this[kQueue].push({ opts, handler })\n      this[kQueued]++\n    } else if (!dispatcher.dispatch(opts, handler)) {\n      dispatcher[kNeedDrain] = true\n      this[kNeedDrain] = !this[kGetDispatcher]()\n    }\n\n    return !this[kNeedDrain]\n  }\n\n  [kAddClient] (client) {\n    client\n      .on('drain', this[kOnDrain])\n      .on('connect', this[kOnConnect])\n      .on('disconnect', this[kOnDisconnect])\n      .on('connectionError', this[kOnConnectionError])\n\n    this[kClients].push(client)\n\n    if (this[kNeedDrain]) {\n      queueMicrotask(() => {\n        if (this[kNeedDrain]) {\n          this[kOnDrain](client[kUrl], [this, client])\n        }\n      })\n    }\n\n    return this\n  }\n\n  [kRemoveClient] (client) {\n    client.close(() => {\n      const idx = this[kClients].indexOf(client)\n      if (idx !== -1) {\n        this[kClients].splice(idx, 1)\n      }\n    })\n\n    this[kNeedDrain] = this[kClients].some(dispatcher => (\n      !dispatcher[kNeedDrain] &&\n      dispatcher.closed !== true &&\n      dispatcher.destroyed !== true\n    ))\n  }\n}\n\nmodule.exports = {\n  PoolBase,\n  kClients,\n  kNeedDrain,\n  kAddClient,\n  kRemoveClient,\n  kGetDispatcher\n}\n", "'use strict'\n\nconst {\n  PoolBase,\n  kClients,\n  kNeedDrain,\n  kAddClient,\n  kGetDispatcher\n} = require('./pool-base')\nconst Client = require('./client')\nconst {\n  InvalidArgumentError\n} = require('../core/errors')\nconst util = require('../core/util')\nconst { kUrl, kInterceptors } = require('../core/symbols')\nconst buildConnector = require('../core/connect')\n\nconst kOptions = Symbol('options')\nconst kConnections = Symbol('connections')\nconst kFactory = Symbol('factory')\n\nfunction defaultFactory (origin, opts) {\n  return new Client(origin, opts)\n}\n\nclass Pool extends PoolBase {\n  constructor (origin, {\n    connections,\n    factory = defaultFactory,\n    connect,\n    connectTimeout,\n    tls,\n    maxCachedSessions,\n    socketPath,\n    autoSelectFamily,\n    autoSelectFamilyAttemptTimeout,\n    allowH2,\n    ...options\n  } = {}) {\n    super()\n\n    if (connections != null && (!Number.isFinite(connections) || connections < 0)) {\n      throw new InvalidArgumentError('invalid connections')\n    }\n\n    if (typeof factory !== 'function') {\n      throw new InvalidArgumentError('factory must be a function.')\n    }\n\n    if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {\n      throw new InvalidArgumentError('connect must be a function or an object')\n    }\n\n    if (typeof connect !== 'function') {\n      connect = buildConnector({\n        ...tls,\n        maxCachedSessions,\n        allowH2,\n        socketPath,\n        timeout: connectTimeout,\n        ...(autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined),\n        ...connect\n      })\n    }\n\n    this[kInterceptors] = options.interceptors?.Pool && Array.isArray(options.interceptors.Pool)\n      ? options.interceptors.Pool\n      : []\n    this[kConnections] = connections || null\n    this[kUrl] = util.parseOrigin(origin)\n    this[kOptions] = { ...util.deepClone(options), connect, allowH2 }\n    this[kOptions].interceptors = options.interceptors\n      ? { ...options.interceptors }\n      : undefined\n    this[kFactory] = factory\n\n    this.on('connectionError', (origin, targets, error) => {\n      // If a connection error occurs, we remove the client from the pool,\n      // and emit a connectionError event. They will not be re-used.\n      // Fixes https://github.com/nodejs/undici/issues/3895\n      for (const target of targets) {\n        // Do not use kRemoveClient here, as it will close the client,\n        // but the client cannot be closed in this state.\n        const idx = this[kClients].indexOf(target)\n        if (idx !== -1) {\n          this[kClients].splice(idx, 1)\n        }\n      }\n    })\n  }\n\n  [kGetDispatcher] () {\n    for (const client of this[kClients]) {\n      if (!client[kNeedDrain]) {\n        return client\n      }\n    }\n\n    if (!this[kConnections] || this[kClients].length < this[kConnections]) {\n      const dispatcher = this[kFactory](this[kUrl], this[kOptions])\n      this[kAddClient](dispatcher)\n      return dispatcher\n    }\n  }\n}\n\nmodule.exports = Pool\n", "'use strict'\n\nconst {\n  BalancedPoolMissingUpstreamError,\n  InvalidArgumentError\n} = require('../core/errors')\nconst {\n  PoolBase,\n  kClients,\n  kNeedDrain,\n  kAddClient,\n  kRemoveClient,\n  kGetDispatcher\n} = require('./pool-base')\nconst Pool = require('./pool')\nconst { kUrl, kInterceptors } = require('../core/symbols')\nconst { parseOrigin } = require('../core/util')\nconst kFactory = Symbol('factory')\n\nconst kOptions = Symbol('options')\nconst kGreatestCommonDivisor = Symbol('kGreatestCommonDivisor')\nconst kCurrentWeight = Symbol('kCurrentWeight')\nconst kIndex = Symbol('kIndex')\nconst kWeight = Symbol('kWeight')\nconst kMaxWeightPerServer = Symbol('kMaxWeightPerServer')\nconst kErrorPenalty = Symbol('kErrorPenalty')\n\n/**\n * Calculate the greatest common divisor of two numbers by\n * using the Euclidean algorithm.\n *\n * @param {number} a\n * @param {number} b\n * @returns {number}\n */\nfunction getGreatestCommonDivisor (a, b) {\n  if (a === 0) return b\n\n  while (b !== 0) {\n    const t = b\n    b = a % b\n    a = t\n  }\n  return a\n}\n\nfunction defaultFactory (origin, opts) {\n  return new Pool(origin, opts)\n}\n\nclass BalancedPool extends PoolBase {\n  constructor (upstreams = [], { factory = defaultFactory, ...opts } = {}) {\n    super()\n\n    this[kOptions] = opts\n    this[kIndex] = -1\n    this[kCurrentWeight] = 0\n\n    this[kMaxWeightPerServer] = this[kOptions].maxWeightPerServer || 100\n    this[kErrorPenalty] = this[kOptions].errorPenalty || 15\n\n    if (!Array.isArray(upstreams)) {\n      upstreams = [upstreams]\n    }\n\n    if (typeof factory !== 'function') {\n      throw new InvalidArgumentError('factory must be a function.')\n    }\n\n    this[kInterceptors] = opts.interceptors?.BalancedPool && Array.isArray(opts.interceptors.BalancedPool)\n      ? opts.interceptors.BalancedPool\n      : []\n    this[kFactory] = factory\n\n    for (const upstream of upstreams) {\n      this.addUpstream(upstream)\n    }\n    this._updateBalancedPoolStats()\n  }\n\n  addUpstream (upstream) {\n    const upstreamOrigin = parseOrigin(upstream).origin\n\n    if (this[kClients].find((pool) => (\n      pool[kUrl].origin === upstreamOrigin &&\n      pool.closed !== true &&\n      pool.destroyed !== true\n    ))) {\n      return this\n    }\n    const pool = this[kFactory](upstreamOrigin, Object.assign({}, this[kOptions]))\n\n    this[kAddClient](pool)\n    pool.on('connect', () => {\n      pool[kWeight] = Math.min(this[kMaxWeightPerServer], pool[kWeight] + this[kErrorPenalty])\n    })\n\n    pool.on('connectionError', () => {\n      pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty])\n      this._updateBalancedPoolStats()\n    })\n\n    pool.on('disconnect', (...args) => {\n      const err = args[2]\n      if (err && err.code === 'UND_ERR_SOCKET') {\n        // decrease the weight of the pool.\n        pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty])\n        this._updateBalancedPoolStats()\n      }\n    })\n\n    for (const client of this[kClients]) {\n      client[kWeight] = this[kMaxWeightPerServer]\n    }\n\n    this._updateBalancedPoolStats()\n\n    return this\n  }\n\n  _updateBalancedPoolStats () {\n    let result = 0\n    for (let i = 0; i < this[kClients].length; i++) {\n      result = getGreatestCommonDivisor(this[kClients][i][kWeight], result)\n    }\n\n    this[kGreatestCommonDivisor] = result\n  }\n\n  removeUpstream (upstream) {\n    const upstreamOrigin = parseOrigin(upstream).origin\n\n    const pool = this[kClients].find((pool) => (\n      pool[kUrl].origin === upstreamOrigin &&\n      pool.closed !== true &&\n      pool.destroyed !== true\n    ))\n\n    if (pool) {\n      this[kRemoveClient](pool)\n    }\n\n    return this\n  }\n\n  get upstreams () {\n    return this[kClients]\n      .filter(dispatcher => dispatcher.closed !== true && dispatcher.destroyed !== true)\n      .map((p) => p[kUrl].origin)\n  }\n\n  [kGetDispatcher] () {\n    // We validate that pools is greater than 0,\n    // otherwise we would have to wait until an upstream\n    // is added, which might never happen.\n    if (this[kClients].length === 0) {\n      throw new BalancedPoolMissingUpstreamError()\n    }\n\n    const dispatcher = this[kClients].find(dispatcher => (\n      !dispatcher[kNeedDrain] &&\n      dispatcher.closed !== true &&\n      dispatcher.destroyed !== true\n    ))\n\n    if (!dispatcher) {\n      return\n    }\n\n    const allClientsBusy = this[kClients].map(pool => pool[kNeedDrain]).reduce((a, b) => a && b, true)\n\n    if (allClientsBusy) {\n      return\n    }\n\n    let counter = 0\n\n    let maxWeightIndex = this[kClients].findIndex(pool => !pool[kNeedDrain])\n\n    while (counter++ < this[kClients].length) {\n      this[kIndex] = (this[kIndex] + 1) % this[kClients].length\n      const pool = this[kClients][this[kIndex]]\n\n      // find pool index with the largest weight\n      if (pool[kWeight] > this[kClients][maxWeightIndex][kWeight] && !pool[kNeedDrain]) {\n        maxWeightIndex = this[kIndex]\n      }\n\n      // decrease the current weight every `this[kClients].length`.\n      if (this[kIndex] === 0) {\n        // Set the current weight to the next lower weight.\n        this[kCurrentWeight] = this[kCurrentWeight] - this[kGreatestCommonDivisor]\n\n        if (this[kCurrentWeight] <= 0) {\n          this[kCurrentWeight] = this[kMaxWeightPerServer]\n        }\n      }\n      if (pool[kWeight] >= this[kCurrentWeight] && (!pool[kNeedDrain])) {\n        return pool\n      }\n    }\n\n    this[kCurrentWeight] = this[kClients][maxWeightIndex][kWeight]\n    this[kIndex] = maxWeightIndex\n    return this[kClients][maxWeightIndex]\n  }\n}\n\nmodule.exports = BalancedPool\n", "'use strict'\n\nconst { InvalidArgumentError } = require('../core/errors')\nconst { kClients, kRunning, kClose, kDestroy, kDispatch, kInterceptors } = require('../core/symbols')\nconst DispatcherBase = require('./dispatcher-base')\nconst Pool = require('./pool')\nconst Client = require('./client')\nconst util = require('../core/util')\nconst createRedirectInterceptor = require('../interceptor/redirect-interceptor')\n\nconst kOnConnect = Symbol('onConnect')\nconst kOnDisconnect = Symbol('onDisconnect')\nconst kOnConnectionError = Symbol('onConnectionError')\nconst kMaxRedirections = Symbol('maxRedirections')\nconst kOnDrain = Symbol('onDrain')\nconst kFactory = Symbol('factory')\nconst kOptions = Symbol('options')\n\nfunction defaultFactory (origin, opts) {\n  return opts && opts.connections === 1\n    ? new Client(origin, opts)\n    : new Pool(origin, opts)\n}\n\nclass Agent extends DispatcherBase {\n  constructor ({ factory = defaultFactory, maxRedirections = 0, connect, ...options } = {}) {\n    super()\n\n    if (typeof factory !== 'function') {\n      throw new InvalidArgumentError('factory must be a function.')\n    }\n\n    if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {\n      throw new InvalidArgumentError('connect must be a function or an object')\n    }\n\n    if (!Number.isInteger(maxRedirections) || maxRedirections < 0) {\n      throw new InvalidArgumentError('maxRedirections must be a positive number')\n    }\n\n    if (connect && typeof connect !== 'function') {\n      connect = { ...connect }\n    }\n\n    this[kInterceptors] = options.interceptors?.Agent && Array.isArray(options.interceptors.Agent)\n      ? options.interceptors.Agent\n      : [createRedirectInterceptor({ maxRedirections })]\n\n    this[kOptions] = { ...util.deepClone(options), connect }\n    this[kOptions].interceptors = options.interceptors\n      ? { ...options.interceptors }\n      : undefined\n    this[kMaxRedirections] = maxRedirections\n    this[kFactory] = factory\n    this[kClients] = new Map()\n\n    this[kOnDrain] = (origin, targets) => {\n      this.emit('drain', origin, [this, ...targets])\n    }\n\n    this[kOnConnect] = (origin, targets) => {\n      this.emit('connect', origin, [this, ...targets])\n    }\n\n    this[kOnDisconnect] = (origin, targets, err) => {\n      this.emit('disconnect', origin, [this, ...targets], err)\n    }\n\n    this[kOnConnectionError] = (origin, targets, err) => {\n      this.emit('connectionError', origin, [this, ...targets], err)\n    }\n  }\n\n  get [kRunning] () {\n    let ret = 0\n    for (const client of this[kClients].values()) {\n      ret += client[kRunning]\n    }\n    return ret\n  }\n\n  [kDispatch] (opts, handler) {\n    let key\n    if (opts.origin && (typeof opts.origin === 'string' || opts.origin instanceof URL)) {\n      key = String(opts.origin)\n    } else {\n      throw new InvalidArgumentError('opts.origin must be a non-empty string or URL.')\n    }\n\n    let dispatcher = this[kClients].get(key)\n\n    if (!dispatcher) {\n      dispatcher = this[kFactory](opts.origin, this[kOptions])\n        .on('drain', this[kOnDrain])\n        .on('connect', this[kOnConnect])\n        .on('disconnect', this[kOnDisconnect])\n        .on('connectionError', this[kOnConnectionError])\n\n      // This introduces a tiny memory leak, as dispatchers are never removed from the map.\n      // TODO(mcollina): remove te timer when the client/pool do not have any more\n      // active connections.\n      this[kClients].set(key, dispatcher)\n    }\n\n    return dispatcher.dispatch(opts, handler)\n  }\n\n  async [kClose] () {\n    const closePromises = []\n    for (const client of this[kClients].values()) {\n      closePromises.push(client.close())\n    }\n    this[kClients].clear()\n\n    await Promise.all(closePromises)\n  }\n\n  async [kDestroy] (err) {\n    const destroyPromises = []\n    for (const client of this[kClients].values()) {\n      destroyPromises.push(client.destroy(err))\n    }\n    this[kClients].clear()\n\n    await Promise.all(destroyPromises)\n  }\n}\n\nmodule.exports = Agent\n", "'use strict'\n\nconst { kProxy, kClose, kDestroy, kDispatch, kInterceptors } = require('../core/symbols')\nconst { URL } = require('node:url')\nconst Agent = require('./agent')\nconst Pool = require('./pool')\nconst DispatcherBase = require('./dispatcher-base')\nconst { InvalidArgumentError, RequestAbortedError, SecureProxyConnectionError } = require('../core/errors')\nconst buildConnector = require('../core/connect')\nconst Client = require('./client')\n\nconst kAgent = Symbol('proxy agent')\nconst kClient = Symbol('proxy client')\nconst kProxyHeaders = Symbol('proxy headers')\nconst kRequestTls = Symbol('request tls settings')\nconst kProxyTls = Symbol('proxy tls settings')\nconst kConnectEndpoint = Symbol('connect endpoint function')\nconst kTunnelProxy = Symbol('tunnel proxy')\n\nfunction defaultProtocolPort (protocol) {\n  return protocol === 'https:' ? 443 : 80\n}\n\nfunction defaultFactory (origin, opts) {\n  return new Pool(origin, opts)\n}\n\nconst noop = () => {}\n\nfunction defaultAgentFactory (origin, opts) {\n  if (opts.connections === 1) {\n    return new Client(origin, opts)\n  }\n  return new Pool(origin, opts)\n}\n\nclass Http1ProxyWrapper extends DispatcherBase {\n  #client\n\n  constructor (proxyUrl, { headers = {}, connect, factory }) {\n    super()\n    if (!proxyUrl) {\n      throw new InvalidArgumentError('Proxy URL is mandatory')\n    }\n\n    this[kProxyHeaders] = headers\n    if (factory) {\n      this.#client = factory(proxyUrl, { connect })\n    } else {\n      this.#client = new Client(proxyUrl, { connect })\n    }\n  }\n\n  [kDispatch] (opts, handler) {\n    const onHeaders = handler.onHeaders\n    handler.onHeaders = function (statusCode, data, resume) {\n      if (statusCode === 407) {\n        if (typeof handler.onError === 'function') {\n          handler.onError(new InvalidArgumentError('Proxy Authentication Required (407)'))\n        }\n        return\n      }\n      if (onHeaders) onHeaders.call(this, statusCode, data, resume)\n    }\n\n    // Rewrite request as an HTTP1 Proxy request, without tunneling.\n    const {\n      origin,\n      path = '/',\n      headers = {}\n    } = opts\n\n    opts.path = origin + path\n\n    if (!('host' in headers) && !('Host' in headers)) {\n      const { host } = new URL(origin)\n      headers.host = host\n    }\n    opts.headers = { ...this[kProxyHeaders], ...headers }\n\n    return this.#client[kDispatch](opts, handler)\n  }\n\n  async [kClose] () {\n    return this.#client.close()\n  }\n\n  async [kDestroy] (err) {\n    return this.#client.destroy(err)\n  }\n}\n\nclass ProxyAgent extends DispatcherBase {\n  constructor (opts) {\n    super()\n\n    if (!opts || (typeof opts === 'object' && !(opts instanceof URL) && !opts.uri)) {\n      throw new InvalidArgumentError('Proxy uri is mandatory')\n    }\n\n    const { clientFactory = defaultFactory } = opts\n    if (typeof clientFactory !== 'function') {\n      throw new InvalidArgumentError('Proxy opts.clientFactory must be a function.')\n    }\n\n    const { proxyTunnel = true } = opts\n\n    const url = this.#getUrl(opts)\n    const { href, origin, port, protocol, username, password, hostname: proxyHostname } = url\n\n    this[kProxy] = { uri: href, protocol }\n    this[kInterceptors] = opts.interceptors?.ProxyAgent && Array.isArray(opts.interceptors.ProxyAgent)\n      ? opts.interceptors.ProxyAgent\n      : []\n    this[kRequestTls] = opts.requestTls\n    this[kProxyTls] = opts.proxyTls\n    this[kProxyHeaders] = opts.headers || {}\n    this[kTunnelProxy] = proxyTunnel\n\n    if (opts.auth && opts.token) {\n      throw new InvalidArgumentError('opts.auth cannot be used in combination with opts.token')\n    } else if (opts.auth) {\n      /* @deprecated in favour of opts.token */\n      this[kProxyHeaders]['proxy-authorization'] = `Basic ${opts.auth}`\n    } else if (opts.token) {\n      this[kProxyHeaders]['proxy-authorization'] = opts.token\n    } else if (username && password) {\n      this[kProxyHeaders]['proxy-authorization'] = `Basic ${Buffer.from(`${decodeURIComponent(username)}:${decodeURIComponent(password)}`).toString('base64')}`\n    }\n\n    const connect = buildConnector({ ...opts.proxyTls })\n    this[kConnectEndpoint] = buildConnector({ ...opts.requestTls })\n\n    const agentFactory = opts.factory || defaultAgentFactory\n    const factory = (origin, options) => {\n      const { protocol } = new URL(origin)\n      if (!this[kTunnelProxy] && protocol === 'http:' && this[kProxy].protocol === 'http:') {\n        return new Http1ProxyWrapper(this[kProxy].uri, {\n          headers: this[kProxyHeaders],\n          connect,\n          factory: agentFactory\n        })\n      }\n      return agentFactory(origin, options)\n    }\n    this[kClient] = clientFactory(url, { connect })\n    this[kAgent] = new Agent({\n      ...opts,\n      factory,\n      connect: async (opts, callback) => {\n        let requestedPath = opts.host\n        if (!opts.port) {\n          requestedPath += `:${defaultProtocolPort(opts.protocol)}`\n        }\n        try {\n          const { socket, statusCode } = await this[kClient].connect({\n            origin,\n            port,\n            path: requestedPath,\n            signal: opts.signal,\n            headers: {\n              ...this[kProxyHeaders],\n              host: opts.host\n            },\n            servername: this[kProxyTls]?.servername || proxyHostname\n          })\n          if (statusCode !== 200) {\n            socket.on('error', noop).destroy()\n            callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`))\n          }\n          if (opts.protocol !== 'https:') {\n            callback(null, socket)\n            return\n          }\n          let servername\n          if (this[kRequestTls]) {\n            servername = this[kRequestTls].servername\n          } else {\n            servername = opts.servername\n          }\n          this[kConnectEndpoint]({ ...opts, servername, httpSocket: socket }, callback)\n        } catch (err) {\n          if (err.code === 'ERR_TLS_CERT_ALTNAME_INVALID') {\n            // Throw a custom error to avoid loop in client.js#connect\n            callback(new SecureProxyConnectionError(err))\n          } else {\n            callback(err)\n          }\n        }\n      }\n    })\n  }\n\n  dispatch (opts, handler) {\n    const headers = buildHeaders(opts.headers)\n    throwIfProxyAuthIsSent(headers)\n\n    if (headers && !('host' in headers) && !('Host' in headers)) {\n      const { host } = new URL(opts.origin)\n      headers.host = host\n    }\n\n    return this[kAgent].dispatch(\n      {\n        ...opts,\n        headers\n      },\n      handler\n    )\n  }\n\n  /**\n   * @param {import('../types/proxy-agent').ProxyAgent.Options | string | URL} opts\n   * @returns {URL}\n   */\n  #getUrl (opts) {\n    if (typeof opts === 'string') {\n      return new URL(opts)\n    } else if (opts instanceof URL) {\n      return opts\n    } else {\n      return new URL(opts.uri)\n    }\n  }\n\n  async [kClose] () {\n    await this[kAgent].close()\n    await this[kClient].close()\n  }\n\n  async [kDestroy] () {\n    await this[kAgent].destroy()\n    await this[kClient].destroy()\n  }\n}\n\n/**\n * @param {string[] | Record<string, string>} headers\n * @returns {Record<string, string>}\n */\nfunction buildHeaders (headers) {\n  // When using undici.fetch, the headers list is stored\n  // as an array.\n  if (Array.isArray(headers)) {\n    /** @type {Record<string, string>} */\n    const headersPair = {}\n\n    for (let i = 0; i < headers.length; i += 2) {\n      headersPair[headers[i]] = headers[i + 1]\n    }\n\n    return headersPair\n  }\n\n  return headers\n}\n\n/**\n * @param {Record<string, string>} headers\n *\n * Previous versions of ProxyAgent suggests the Proxy-Authorization in request headers\n * Nevertheless, it was changed and to avoid a security vulnerability by end users\n * this check was created.\n * It should be removed in the next major version for performance reasons\n */\nfunction throwIfProxyAuthIsSent (headers) {\n  const existProxyAuth = headers && Object.keys(headers)\n    .find((key) => key.toLowerCase() === 'proxy-authorization')\n  if (existProxyAuth) {\n    throw new InvalidArgumentError('Proxy-Authorization should be sent in ProxyAgent constructor')\n  }\n}\n\nmodule.exports = ProxyAgent\n", "'use strict'\n\nconst DispatcherBase = require('./dispatcher-base')\nconst { kClose, kDestroy, kClosed, kDestroyed, kDispatch, kNoProxyAgent, kHttpProxyAgent, kHttpsProxyAgent } = require('../core/symbols')\nconst ProxyAgent = require('./proxy-agent')\nconst Agent = require('./agent')\n\nconst DEFAULT_PORTS = {\n  'http:': 80,\n  'https:': 443\n}\n\nlet experimentalWarned = false\n\nclass EnvHttpProxyAgent extends DispatcherBase {\n  #noProxyValue = null\n  #noProxyEntries = null\n  #opts = null\n\n  constructor (opts = {}) {\n    super()\n    this.#opts = opts\n\n    if (!experimentalWarned) {\n      experimentalWarned = true\n      process.emitWarning('EnvHttpProxyAgent is experimental, expect them to change at any time.', {\n        code: 'UNDICI-EHPA'\n      })\n    }\n\n    const { httpProxy, httpsProxy, noProxy, ...agentOpts } = opts\n\n    this[kNoProxyAgent] = new Agent(agentOpts)\n\n    const HTTP_PROXY = httpProxy ?? process.env.http_proxy ?? process.env.HTTP_PROXY\n    if (HTTP_PROXY) {\n      this[kHttpProxyAgent] = new ProxyAgent({ ...agentOpts, uri: HTTP_PROXY })\n    } else {\n      this[kHttpProxyAgent] = this[kNoProxyAgent]\n    }\n\n    const HTTPS_PROXY = httpsProxy ?? process.env.https_proxy ?? process.env.HTTPS_PROXY\n    if (HTTPS_PROXY) {\n      this[kHttpsProxyAgent] = new ProxyAgent({ ...agentOpts, uri: HTTPS_PROXY })\n    } else {\n      this[kHttpsProxyAgent] = this[kHttpProxyAgent]\n    }\n\n    this.#parseNoProxy()\n  }\n\n  [kDispatch] (opts, handler) {\n    const url = new URL(opts.origin)\n    const agent = this.#getProxyAgentForUrl(url)\n    return agent.dispatch(opts, handler)\n  }\n\n  async [kClose] () {\n    await this[kNoProxyAgent].close()\n    if (!this[kHttpProxyAgent][kClosed]) {\n      await this[kHttpProxyAgent].close()\n    }\n    if (!this[kHttpsProxyAgent][kClosed]) {\n      await this[kHttpsProxyAgent].close()\n    }\n  }\n\n  async [kDestroy] (err) {\n    await this[kNoProxyAgent].destroy(err)\n    if (!this[kHttpProxyAgent][kDestroyed]) {\n      await this[kHttpProxyAgent].destroy(err)\n    }\n    if (!this[kHttpsProxyAgent][kDestroyed]) {\n      await this[kHttpsProxyAgent].destroy(err)\n    }\n  }\n\n  #getProxyAgentForUrl (url) {\n    let { protocol, host: hostname, port } = url\n\n    // Stripping ports in this way instead of using parsedUrl.hostname to make\n    // sure that the brackets around IPv6 addresses are kept.\n    hostname = hostname.replace(/:\\d*$/, '').toLowerCase()\n    port = Number.parseInt(port, 10) || DEFAULT_PORTS[protocol] || 0\n    if (!this.#shouldProxy(hostname, port)) {\n      return this[kNoProxyAgent]\n    }\n    if (protocol === 'https:') {\n      return this[kHttpsProxyAgent]\n    }\n    return this[kHttpProxyAgent]\n  }\n\n  #shouldProxy (hostname, port) {\n    if (this.#noProxyChanged) {\n      this.#parseNoProxy()\n    }\n\n    if (this.#noProxyEntries.length === 0) {\n      return true // Always proxy if NO_PROXY is not set or empty.\n    }\n    if (this.#noProxyValue === '*') {\n      return false // Never proxy if wildcard is set.\n    }\n\n    for (let i = 0; i < this.#noProxyEntries.length; i++) {\n      const entry = this.#noProxyEntries[i]\n      if (entry.port && entry.port !== port) {\n        continue // Skip if ports don't match.\n      }\n      if (!/^[.*]/.test(entry.hostname)) {\n        // No wildcards, so don't proxy only if there is not an exact match.\n        if (hostname === entry.hostname) {\n          return false\n        }\n      } else {\n        // Don't proxy if the hostname ends with the no_proxy host.\n        if (hostname.endsWith(entry.hostname.replace(/^\\*/, ''))) {\n          return false\n        }\n      }\n    }\n\n    return true\n  }\n\n  #parseNoProxy () {\n    const noProxyValue = this.#opts.noProxy ?? this.#noProxyEnv\n    const noProxySplit = noProxyValue.split(/[,\\s]/)\n    const noProxyEntries = []\n\n    for (let i = 0; i < noProxySplit.length; i++) {\n      const entry = noProxySplit[i]\n      if (!entry) {\n        continue\n      }\n      const parsed = entry.match(/^(.+):(\\d+)$/)\n      noProxyEntries.push({\n        hostname: (parsed ? parsed[1] : entry).toLowerCase(),\n        port: parsed ? Number.parseInt(parsed[2], 10) : 0\n      })\n    }\n\n    this.#noProxyValue = noProxyValue\n    this.#noProxyEntries = noProxyEntries\n  }\n\n  get #noProxyChanged () {\n    if (this.#opts.noProxy !== undefined) {\n      return false\n    }\n    return this.#noProxyValue !== this.#noProxyEnv\n  }\n\n  get #noProxyEnv () {\n    return process.env.no_proxy ?? process.env.NO_PROXY ?? ''\n  }\n}\n\nmodule.exports = EnvHttpProxyAgent\n", "'use strict'\nconst assert = require('node:assert')\n\nconst { kRetryHandlerDefaultRetry } = require('../core/symbols')\nconst { RequestRetryError } = require('../core/errors')\nconst {\n  isDisturbed,\n  parseHeaders,\n  parseRangeHeader,\n  wrapRequestBody\n} = require('../core/util')\n\nfunction calculateRetryAfterHeader (retryAfter) {\n  const current = Date.now()\n  return new Date(retryAfter).getTime() - current\n}\n\nclass RetryHandler {\n  constructor (opts, handlers) {\n    const { retryOptions, ...dispatchOpts } = opts\n    const {\n      // Retry scoped\n      retry: retryFn,\n      maxRetries,\n      maxTimeout,\n      minTimeout,\n      timeoutFactor,\n      // Response scoped\n      methods,\n      errorCodes,\n      retryAfter,\n      statusCodes\n    } = retryOptions ?? {}\n\n    this.dispatch = handlers.dispatch\n    this.handler = handlers.handler\n    this.opts = { ...dispatchOpts, body: wrapRequestBody(opts.body) }\n    this.abort = null\n    this.aborted = false\n    this.retryOpts = {\n      retry: retryFn ?? RetryHandler[kRetryHandlerDefaultRetry],\n      retryAfter: retryAfter ?? true,\n      maxTimeout: maxTimeout ?? 30 * 1000, // 30s,\n      minTimeout: minTimeout ?? 500, // .5s\n      timeoutFactor: timeoutFactor ?? 2,\n      maxRetries: maxRetries ?? 5,\n      // What errors we should retry\n      methods: methods ?? ['GET', 'HEAD', 'OPTIONS', 'PUT', 'DELETE', 'TRACE'],\n      // Indicates which errors to retry\n      statusCodes: statusCodes ?? [500, 502, 503, 504, 429],\n      // List of errors to retry\n      errorCodes: errorCodes ?? [\n        'ECONNRESET',\n        'ECONNREFUSED',\n        'ENOTFOUND',\n        'ENETDOWN',\n        'ENETUNREACH',\n        'EHOSTDOWN',\n        'EHOSTUNREACH',\n        'EPIPE',\n        'UND_ERR_SOCKET'\n      ]\n    }\n\n    this.retryCount = 0\n    this.retryCountCheckpoint = 0\n    this.start = 0\n    this.end = null\n    this.etag = null\n    this.resume = null\n\n    // Handle possible onConnect duplication\n    this.handler.onConnect(reason => {\n      this.aborted = true\n      if (this.abort) {\n        this.abort(reason)\n      } else {\n        this.reason = reason\n      }\n    })\n  }\n\n  onRequestSent () {\n    if (this.handler.onRequestSent) {\n      this.handler.onRequestSent()\n    }\n  }\n\n  onUpgrade (statusCode, headers, socket) {\n    if (this.handler.onUpgrade) {\n      this.handler.onUpgrade(statusCode, headers, socket)\n    }\n  }\n\n  onConnect (abort) {\n    if (this.aborted) {\n      abort(this.reason)\n    } else {\n      this.abort = abort\n    }\n  }\n\n  onBodySent (chunk) {\n    if (this.handler.onBodySent) return this.handler.onBodySent(chunk)\n  }\n\n  static [kRetryHandlerDefaultRetry] (err, { state, opts }, cb) {\n    const { statusCode, code, headers } = err\n    const { method, retryOptions } = opts\n    const {\n      maxRetries,\n      minTimeout,\n      maxTimeout,\n      timeoutFactor,\n      statusCodes,\n      errorCodes,\n      methods\n    } = retryOptions\n    const { counter } = state\n\n    // Any code that is not a Undici's originated and allowed to retry\n    if (code && code !== 'UND_ERR_REQ_RETRY' && !errorCodes.includes(code)) {\n      cb(err)\n      return\n    }\n\n    // If a set of method are provided and the current method is not in the list\n    if (Array.isArray(methods) && !methods.includes(method)) {\n      cb(err)\n      return\n    }\n\n    // If a set of status code are provided and the current status code is not in the list\n    if (\n      statusCode != null &&\n      Array.isArray(statusCodes) &&\n      !statusCodes.includes(statusCode)\n    ) {\n      cb(err)\n      return\n    }\n\n    // If we reached the max number of retries\n    if (counter > maxRetries) {\n      cb(err)\n      return\n    }\n\n    let retryAfterHeader = headers?.['retry-after']\n    if (retryAfterHeader) {\n      retryAfterHeader = Number(retryAfterHeader)\n      retryAfterHeader = Number.isNaN(retryAfterHeader)\n        ? calculateRetryAfterHeader(retryAfterHeader)\n        : retryAfterHeader * 1e3 // Retry-After is in seconds\n    }\n\n    const retryTimeout =\n      retryAfterHeader > 0\n        ? Math.min(retryAfterHeader, maxTimeout)\n        : Math.min(minTimeout * timeoutFactor ** (counter - 1), maxTimeout)\n\n    setTimeout(() => cb(null), retryTimeout)\n  }\n\n  onHeaders (statusCode, rawHeaders, resume, statusMessage) {\n    const headers = parseHeaders(rawHeaders)\n\n    this.retryCount += 1\n\n    if (statusCode >= 300) {\n      if (this.retryOpts.statusCodes.includes(statusCode) === false) {\n        return this.handler.onHeaders(\n          statusCode,\n          rawHeaders,\n          resume,\n          statusMessage\n        )\n      } else {\n        this.abort(\n          new RequestRetryError('Request failed', statusCode, {\n            headers,\n            data: {\n              count: this.retryCount\n            }\n          })\n        )\n        return false\n      }\n    }\n\n    // Checkpoint for resume from where we left it\n    if (this.resume != null) {\n      this.resume = null\n\n      // Only Partial Content 206 supposed to provide Content-Range,\n      // any other status code that partially consumed the payload\n      // should not be retry because it would result in downstream\n      // wrongly concatanete multiple responses.\n      if (statusCode !== 206 && (this.start > 0 || statusCode !== 200)) {\n        this.abort(\n          new RequestRetryError('server does not support the range header and the payload was partially consumed', statusCode, {\n            headers,\n            data: { count: this.retryCount }\n          })\n        )\n        return false\n      }\n\n      const contentRange = parseRangeHeader(headers['content-range'])\n      // If no content range\n      if (!contentRange) {\n        this.abort(\n          new RequestRetryError('Content-Range mismatch', statusCode, {\n            headers,\n            data: { count: this.retryCount }\n          })\n        )\n        return false\n      }\n\n      // Let's start with a weak etag check\n      if (this.etag != null && this.etag !== headers.etag) {\n        this.abort(\n          new RequestRetryError('ETag mismatch', statusCode, {\n            headers,\n            data: { count: this.retryCount }\n          })\n        )\n        return false\n      }\n\n      const { start, size, end = size - 1 } = contentRange\n\n      assert(this.start === start, 'content-range mismatch')\n      assert(this.end == null || this.end === end, 'content-range mismatch')\n\n      this.resume = resume\n      return true\n    }\n\n    if (this.end == null) {\n      if (statusCode === 206) {\n        // First time we receive 206\n        const range = parseRangeHeader(headers['content-range'])\n\n        if (range == null) {\n          return this.handler.onHeaders(\n            statusCode,\n            rawHeaders,\n            resume,\n            statusMessage\n          )\n        }\n\n        const { start, size, end = size - 1 } = range\n        assert(\n          start != null && Number.isFinite(start),\n          'content-range mismatch'\n        )\n        assert(end != null && Number.isFinite(end), 'invalid content-length')\n\n        this.start = start\n        this.end = end\n      }\n\n      // We make our best to checkpoint the body for further range headers\n      if (this.end == null) {\n        const contentLength = headers['content-length']\n        this.end = contentLength != null ? Number(contentLength) - 1 : null\n      }\n\n      assert(Number.isFinite(this.start))\n      assert(\n        this.end == null || Number.isFinite(this.end),\n        'invalid content-length'\n      )\n\n      this.resume = resume\n      this.etag = headers.etag != null ? headers.etag : null\n\n      // Weak etags are not useful for comparison nor cache\n      // for instance not safe to assume if the response is byte-per-byte\n      // equal\n      if (this.etag != null && this.etag.startsWith('W/')) {\n        this.etag = null\n      }\n\n      return this.handler.onHeaders(\n        statusCode,\n        rawHeaders,\n        resume,\n        statusMessage\n      )\n    }\n\n    const err = new RequestRetryError('Request failed', statusCode, {\n      headers,\n      data: { count: this.retryCount }\n    })\n\n    this.abort(err)\n\n    return false\n  }\n\n  onData (chunk) {\n    this.start += chunk.length\n\n    return this.handler.onData(chunk)\n  }\n\n  onComplete (rawTrailers) {\n    this.retryCount = 0\n    return this.handler.onComplete(rawTrailers)\n  }\n\n  onError (err) {\n    if (this.aborted || isDisturbed(this.opts.body)) {\n      return this.handler.onError(err)\n    }\n\n    // We reconcile in case of a mix between network errors\n    // and server error response\n    if (this.retryCount - this.retryCountCheckpoint > 0) {\n      // We count the difference between the last checkpoint and the current retry count\n      this.retryCount =\n        this.retryCountCheckpoint +\n        (this.retryCount - this.retryCountCheckpoint)\n    } else {\n      this.retryCount += 1\n    }\n\n    this.retryOpts.retry(\n      err,\n      {\n        state: { counter: this.retryCount },\n        opts: { retryOptions: this.retryOpts, ...this.opts }\n      },\n      onRetry.bind(this)\n    )\n\n    function onRetry (err) {\n      if (err != null || this.aborted || isDisturbed(this.opts.body)) {\n        return this.handler.onError(err)\n      }\n\n      if (this.start !== 0) {\n        const headers = { range: `bytes=${this.start}-${this.end ?? ''}` }\n\n        // Weak etag check - weak etags will make comparison algorithms never match\n        if (this.etag != null) {\n          headers['if-match'] = this.etag\n        }\n\n        this.opts = {\n          ...this.opts,\n          headers: {\n            ...this.opts.headers,\n            ...headers\n          }\n        }\n      }\n\n      try {\n        this.retryCountCheckpoint = this.retryCount\n        this.dispatch(this.opts, this)\n      } catch (err) {\n        this.handler.onError(err)\n      }\n    }\n  }\n}\n\nmodule.exports = RetryHandler\n", "'use strict'\n\nconst Dispatcher = require('./dispatcher')\nconst RetryHandler = require('../handler/retry-handler')\n\nclass RetryAgent extends Dispatcher {\n  #agent = null\n  #options = null\n  constructor (agent, options = {}) {\n    super(options)\n    this.#agent = agent\n    this.#options = options\n  }\n\n  dispatch (opts, handler) {\n    const retry = new RetryHandler({\n      ...opts,\n      retryOptions: this.#options\n    }, {\n      dispatch: this.#agent.dispatch.bind(this.#agent),\n      handler\n    })\n    return this.#agent.dispatch(opts, retry)\n  }\n\n  close () {\n    return this.#agent.close()\n  }\n\n  destroy () {\n    return this.#agent.destroy()\n  }\n}\n\nmodule.exports = RetryAgent\n", "// Ported from https://github.com/nodejs/undici/pull/907\n\n'use strict'\n\nconst assert = require('node:assert')\nconst { Readable } = require('node:stream')\nconst { RequestAbortedError, NotSupportedError, InvalidArgumentError, AbortError } = require('../core/errors')\nconst util = require('../core/util')\nconst { ReadableStreamFrom } = require('../core/util')\n\nconst kConsume = Symbol('kConsume')\nconst kReading = Symbol('kReading')\nconst kBody = Symbol('kBody')\nconst kAbort = Symbol('kAbort')\nconst kContentType = Symbol('kContentType')\nconst kContentLength = Symbol('kContentLength')\n\nconst noop = () => {}\n\nclass BodyReadable extends Readable {\n  constructor ({\n    resume,\n    abort,\n    contentType = '',\n    contentLength,\n    highWaterMark = 64 * 1024 // Same as nodejs fs streams.\n  }) {\n    super({\n      autoDestroy: true,\n      read: resume,\n      highWaterMark\n    })\n\n    this._readableState.dataEmitted = false\n\n    this[kAbort] = abort\n    this[kConsume] = null\n    this[kBody] = null\n    this[kContentType] = contentType\n    this[kContentLength] = contentLength\n\n    // Is stream being consumed through Readable API?\n    // This is an optimization so that we avoid checking\n    // for 'data' and 'readable' listeners in the hot path\n    // inside push().\n    this[kReading] = false\n  }\n\n  destroy (err) {\n    if (!err && !this._readableState.endEmitted) {\n      err = new RequestAbortedError()\n    }\n\n    if (err) {\n      this[kAbort]()\n    }\n\n    return super.destroy(err)\n  }\n\n  _destroy (err, callback) {\n    // Workaround for Node \"bug\". If the stream is destroyed in same\n    // tick as it is created, then a user who is waiting for a\n    // promise (i.e micro tick) for installing a 'error' listener will\n    // never get a chance and will always encounter an unhandled exception.\n    if (!this[kReading]) {\n      setImmediate(() => {\n        callback(err)\n      })\n    } else {\n      callback(err)\n    }\n  }\n\n  on (ev, ...args) {\n    if (ev === 'data' || ev === 'readable') {\n      this[kReading] = true\n    }\n    return super.on(ev, ...args)\n  }\n\n  addListener (ev, ...args) {\n    return this.on(ev, ...args)\n  }\n\n  off (ev, ...args) {\n    const ret = super.off(ev, ...args)\n    if (ev === 'data' || ev === 'readable') {\n      this[kReading] = (\n        this.listenerCount('data') > 0 ||\n        this.listenerCount('readable') > 0\n      )\n    }\n    return ret\n  }\n\n  removeListener (ev, ...args) {\n    return this.off(ev, ...args)\n  }\n\n  push (chunk) {\n    if (this[kConsume] && chunk !== null) {\n      consumePush(this[kConsume], chunk)\n      return this[kReading] ? super.push(chunk) : true\n    }\n    return super.push(chunk)\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-body-text\n  async text () {\n    return consume(this, 'text')\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-body-json\n  async json () {\n    return consume(this, 'json')\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-body-blob\n  async blob () {\n    return consume(this, 'blob')\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-body-bytes\n  async bytes () {\n    return consume(this, 'bytes')\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-body-arraybuffer\n  async arrayBuffer () {\n    return consume(this, 'arrayBuffer')\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-body-formdata\n  async formData () {\n    // TODO: Implement.\n    throw new NotSupportedError()\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-body-bodyused\n  get bodyUsed () {\n    return util.isDisturbed(this)\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-body-body\n  get body () {\n    if (!this[kBody]) {\n      this[kBody] = ReadableStreamFrom(this)\n      if (this[kConsume]) {\n        // TODO: Is this the best way to force a lock?\n        this[kBody].getReader() // Ensure stream is locked.\n        assert(this[kBody].locked)\n      }\n    }\n    return this[kBody]\n  }\n\n  async dump (opts) {\n    let limit = Number.isFinite(opts?.limit) ? opts.limit : 128 * 1024\n    const signal = opts?.signal\n\n    if (signal != null && (typeof signal !== 'object' || !('aborted' in signal))) {\n      throw new InvalidArgumentError('signal must be an AbortSignal')\n    }\n\n    signal?.throwIfAborted()\n\n    if (this._readableState.closeEmitted) {\n      return null\n    }\n\n    return await new Promise((resolve, reject) => {\n      if (this[kContentLength] > limit) {\n        this.destroy(new AbortError())\n      }\n\n      const onAbort = () => {\n        this.destroy(signal.reason ?? new AbortError())\n      }\n      signal?.addEventListener('abort', onAbort)\n\n      this\n        .on('close', function () {\n          signal?.removeEventListener('abort', onAbort)\n          if (signal?.aborted) {\n            reject(signal.reason ?? new AbortError())\n          } else {\n            resolve(null)\n          }\n        })\n        .on('error', noop)\n        .on('data', function (chunk) {\n          limit -= chunk.length\n          if (limit <= 0) {\n            this.destroy()\n          }\n        })\n        .resume()\n    })\n  }\n}\n\n// https://streams.spec.whatwg.org/#readablestream-locked\nfunction isLocked (self) {\n  // Consume is an implicit lock.\n  return (self[kBody] && self[kBody].locked === true) || self[kConsume]\n}\n\n// https://fetch.spec.whatwg.org/#body-unusable\nfunction isUnusable (self) {\n  return util.isDisturbed(self) || isLocked(self)\n}\n\nasync function consume (stream, type) {\n  assert(!stream[kConsume])\n\n  return new Promise((resolve, reject) => {\n    if (isUnusable(stream)) {\n      const rState = stream._readableState\n      if (rState.destroyed && rState.closeEmitted === false) {\n        stream\n          .on('error', err => {\n            reject(err)\n          })\n          .on('close', () => {\n            reject(new TypeError('unusable'))\n          })\n      } else {\n        reject(rState.errored ?? new TypeError('unusable'))\n      }\n    } else {\n      queueMicrotask(() => {\n        stream[kConsume] = {\n          type,\n          stream,\n          resolve,\n          reject,\n          length: 0,\n          body: []\n        }\n\n        stream\n          .on('error', function (err) {\n            consumeFinish(this[kConsume], err)\n          })\n          .on('close', function () {\n            if (this[kConsume].body !== null) {\n              consumeFinish(this[kConsume], new RequestAbortedError())\n            }\n          })\n\n        consumeStart(stream[kConsume])\n      })\n    }\n  })\n}\n\nfunction consumeStart (consume) {\n  if (consume.body === null) {\n    return\n  }\n\n  const { _readableState: state } = consume.stream\n\n  if (state.bufferIndex) {\n    const start = state.bufferIndex\n    const end = state.buffer.length\n    for (let n = start; n < end; n++) {\n      consumePush(consume, state.buffer[n])\n    }\n  } else {\n    for (const chunk of state.buffer) {\n      consumePush(consume, chunk)\n    }\n  }\n\n  if (state.endEmitted) {\n    consumeEnd(this[kConsume])\n  } else {\n    consume.stream.on('end', function () {\n      consumeEnd(this[kConsume])\n    })\n  }\n\n  consume.stream.resume()\n\n  while (consume.stream.read() != null) {\n    // Loop\n  }\n}\n\n/**\n * @param {Buffer[]} chunks\n * @param {number} length\n */\nfunction chunksDecode (chunks, length) {\n  if (chunks.length === 0 || length === 0) {\n    return ''\n  }\n  const buffer = chunks.length === 1 ? chunks[0] : Buffer.concat(chunks, length)\n  const bufferLength = buffer.length\n\n  // Skip BOM.\n  const start =\n    bufferLength > 2 &&\n    buffer[0] === 0xef &&\n    buffer[1] === 0xbb &&\n    buffer[2] === 0xbf\n      ? 3\n      : 0\n  return buffer.utf8Slice(start, bufferLength)\n}\n\n/**\n * @param {Buffer[]} chunks\n * @param {number} length\n * @returns {Uint8Array}\n */\nfunction chunksConcat (chunks, length) {\n  if (chunks.length === 0 || length === 0) {\n    return new Uint8Array(0)\n  }\n  if (chunks.length === 1) {\n    // fast-path\n    return new Uint8Array(chunks[0])\n  }\n  const buffer = new Uint8Array(Buffer.allocUnsafeSlow(length).buffer)\n\n  let offset = 0\n  for (let i = 0; i < chunks.length; ++i) {\n    const chunk = chunks[i]\n    buffer.set(chunk, offset)\n    offset += chunk.length\n  }\n\n  return buffer\n}\n\nfunction consumeEnd (consume) {\n  const { type, body, resolve, stream, length } = consume\n\n  try {\n    if (type === 'text') {\n      resolve(chunksDecode(body, length))\n    } else if (type === 'json') {\n      resolve(JSON.parse(chunksDecode(body, length)))\n    } else if (type === 'arrayBuffer') {\n      resolve(chunksConcat(body, length).buffer)\n    } else if (type === 'blob') {\n      resolve(new Blob(body, { type: stream[kContentType] }))\n    } else if (type === 'bytes') {\n      resolve(chunksConcat(body, length))\n    }\n\n    consumeFinish(consume)\n  } catch (err) {\n    stream.destroy(err)\n  }\n}\n\nfunction consumePush (consume, chunk) {\n  consume.length += chunk.length\n  consume.body.push(chunk)\n}\n\nfunction consumeFinish (consume, err) {\n  if (consume.body === null) {\n    return\n  }\n\n  if (err) {\n    consume.reject(err)\n  } else {\n    consume.resolve()\n  }\n\n  consume.type = null\n  consume.stream = null\n  consume.resolve = null\n  consume.reject = null\n  consume.length = 0\n  consume.body = null\n}\n\nmodule.exports = { Readable: BodyReadable, chunksDecode }\n", "const assert = require('node:assert')\nconst {\n  ResponseStatusCodeError\n} = require('../core/errors')\n\nconst { chunksDecode } = require('./readable')\nconst CHUNK_LIMIT = 128 * 1024\n\nasync function getResolveErrorBodyCallback ({ callback, body, contentType, statusCode, statusMessage, headers }) {\n  assert(body)\n\n  let chunks = []\n  let length = 0\n\n  try {\n    for await (const chunk of body) {\n      chunks.push(chunk)\n      length += chunk.length\n      if (length > CHUNK_LIMIT) {\n        chunks = []\n        length = 0\n        break\n      }\n    }\n  } catch {\n    chunks = []\n    length = 0\n    // Do nothing....\n  }\n\n  const message = `Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`\n\n  if (statusCode === 204 || !contentType || !length) {\n    queueMicrotask(() => callback(new ResponseStatusCodeError(message, statusCode, headers)))\n    return\n  }\n\n  const stackTraceLimit = Error.stackTraceLimit\n  Error.stackTraceLimit = 0\n  let payload\n\n  try {\n    if (isContentTypeApplicationJson(contentType)) {\n      payload = JSON.parse(chunksDecode(chunks, length))\n    } else if (isContentTypeText(contentType)) {\n      payload = chunksDecode(chunks, length)\n    }\n  } catch {\n    // process in a callback to avoid throwing in the microtask queue\n  } finally {\n    Error.stackTraceLimit = stackTraceLimit\n  }\n  queueMicrotask(() => callback(new ResponseStatusCodeError(message, statusCode, headers, payload)))\n}\n\nconst isContentTypeApplicationJson = (contentType) => {\n  return (\n    contentType.length > 15 &&\n    contentType[11] === '/' &&\n    contentType[0] === 'a' &&\n    contentType[1] === 'p' &&\n    contentType[2] === 'p' &&\n    contentType[3] === 'l' &&\n    contentType[4] === 'i' &&\n    contentType[5] === 'c' &&\n    contentType[6] === 'a' &&\n    contentType[7] === 't' &&\n    contentType[8] === 'i' &&\n    contentType[9] === 'o' &&\n    contentType[10] === 'n' &&\n    contentType[12] === 'j' &&\n    contentType[13] === 's' &&\n    contentType[14] === 'o' &&\n    contentType[15] === 'n'\n  )\n}\n\nconst isContentTypeText = (contentType) => {\n  return (\n    contentType.length > 4 &&\n    contentType[4] === '/' &&\n    contentType[0] === 't' &&\n    contentType[1] === 'e' &&\n    contentType[2] === 'x' &&\n    contentType[3] === 't'\n  )\n}\n\nmodule.exports = {\n  getResolveErrorBodyCallback,\n  isContentTypeApplicationJson,\n  isContentTypeText\n}\n", "'use strict'\n\nconst assert = require('node:assert')\nconst { Readable } = require('./readable')\nconst { InvalidArgumentError, RequestAbortedError } = require('../core/errors')\nconst util = require('../core/util')\nconst { getResolveErrorBodyCallback } = require('./util')\nconst { AsyncResource } = require('node:async_hooks')\n\nclass RequestHandler extends AsyncResource {\n  constructor (opts, callback) {\n    if (!opts || typeof opts !== 'object') {\n      throw new InvalidArgumentError('invalid opts')\n    }\n\n    const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError, highWaterMark } = opts\n\n    try {\n      if (typeof callback !== 'function') {\n        throw new InvalidArgumentError('invalid callback')\n      }\n\n      if (highWaterMark && (typeof highWaterMark !== 'number' || highWaterMark < 0)) {\n        throw new InvalidArgumentError('invalid highWaterMark')\n      }\n\n      if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n        throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n      }\n\n      if (method === 'CONNECT') {\n        throw new InvalidArgumentError('invalid method')\n      }\n\n      if (onInfo && typeof onInfo !== 'function') {\n        throw new InvalidArgumentError('invalid onInfo callback')\n      }\n\n      super('UNDICI_REQUEST')\n    } catch (err) {\n      if (util.isStream(body)) {\n        util.destroy(body.on('error', util.nop), err)\n      }\n      throw err\n    }\n\n    this.method = method\n    this.responseHeaders = responseHeaders || null\n    this.opaque = opaque || null\n    this.callback = callback\n    this.res = null\n    this.abort = null\n    this.body = body\n    this.trailers = {}\n    this.context = null\n    this.onInfo = onInfo || null\n    this.throwOnError = throwOnError\n    this.highWaterMark = highWaterMark\n    this.signal = signal\n    this.reason = null\n    this.removeAbortListener = null\n\n    if (util.isStream(body)) {\n      body.on('error', (err) => {\n        this.onError(err)\n      })\n    }\n\n    if (this.signal) {\n      if (this.signal.aborted) {\n        this.reason = this.signal.reason ?? new RequestAbortedError()\n      } else {\n        this.removeAbortListener = util.addAbortListener(this.signal, () => {\n          this.reason = this.signal.reason ?? new RequestAbortedError()\n          if (this.res) {\n            util.destroy(this.res.on('error', util.nop), this.reason)\n          } else if (this.abort) {\n            this.abort(this.reason)\n          }\n\n          if (this.removeAbortListener) {\n            this.res?.off('close', this.removeAbortListener)\n            this.removeAbortListener()\n            this.removeAbortListener = null\n          }\n        })\n      }\n    }\n  }\n\n  onConnect (abort, context) {\n    if (this.reason) {\n      abort(this.reason)\n      return\n    }\n\n    assert(this.callback)\n\n    this.abort = abort\n    this.context = context\n  }\n\n  onHeaders (statusCode, rawHeaders, resume, statusMessage) {\n    const { callback, opaque, abort, context, responseHeaders, highWaterMark } = this\n\n    const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n\n    if (statusCode < 200) {\n      if (this.onInfo) {\n        this.onInfo({ statusCode, headers })\n      }\n      return\n    }\n\n    const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers\n    const contentType = parsedHeaders['content-type']\n    const contentLength = parsedHeaders['content-length']\n    const res = new Readable({\n      resume,\n      abort,\n      contentType,\n      contentLength: this.method !== 'HEAD' && contentLength\n        ? Number(contentLength)\n        : null,\n      highWaterMark\n    })\n\n    if (this.removeAbortListener) {\n      res.on('close', this.removeAbortListener)\n    }\n\n    this.callback = null\n    this.res = res\n    if (callback !== null) {\n      if (this.throwOnError && statusCode >= 400) {\n        this.runInAsyncScope(getResolveErrorBodyCallback, null,\n          { callback, body: res, contentType, statusCode, statusMessage, headers }\n        )\n      } else {\n        this.runInAsyncScope(callback, null, null, {\n          statusCode,\n          headers,\n          trailers: this.trailers,\n          opaque,\n          body: res,\n          context\n        })\n      }\n    }\n  }\n\n  onData (chunk) {\n    return this.res.push(chunk)\n  }\n\n  onComplete (trailers) {\n    util.parseHeaders(trailers, this.trailers)\n    this.res.push(null)\n  }\n\n  onError (err) {\n    const { res, callback, body, opaque } = this\n\n    if (callback) {\n      // TODO: Does this need queueMicrotask?\n      this.callback = null\n      queueMicrotask(() => {\n        this.runInAsyncScope(callback, null, err, { opaque })\n      })\n    }\n\n    if (res) {\n      this.res = null\n      // Ensure all queued handlers are invoked before destroying res.\n      queueMicrotask(() => {\n        util.destroy(res, err)\n      })\n    }\n\n    if (body) {\n      this.body = null\n      util.destroy(body, err)\n    }\n\n    if (this.removeAbortListener) {\n      res?.off('close', this.removeAbortListener)\n      this.removeAbortListener()\n      this.removeAbortListener = null\n    }\n  }\n}\n\nfunction request (opts, callback) {\n  if (callback === undefined) {\n    return new Promise((resolve, reject) => {\n      request.call(this, opts, (err, data) => {\n        return err ? reject(err) : resolve(data)\n      })\n    })\n  }\n\n  try {\n    this.dispatch(opts, new RequestHandler(opts, callback))\n  } catch (err) {\n    if (typeof callback !== 'function') {\n      throw err\n    }\n    const opaque = opts?.opaque\n    queueMicrotask(() => callback(err, { opaque }))\n  }\n}\n\nmodule.exports = request\nmodule.exports.RequestHandler = RequestHandler\n", "const { addAbortListener } = require('../core/util')\nconst { RequestAbortedError } = require('../core/errors')\n\nconst kListener = Symbol('kListener')\nconst kSignal = Symbol('kSignal')\n\nfunction abort (self) {\n  if (self.abort) {\n    self.abort(self[kSignal]?.reason)\n  } else {\n    self.reason = self[kSignal]?.reason ?? new RequestAbortedError()\n  }\n  removeSignal(self)\n}\n\nfunction addSignal (self, signal) {\n  self.reason = null\n\n  self[kSignal] = null\n  self[kListener] = null\n\n  if (!signal) {\n    return\n  }\n\n  if (signal.aborted) {\n    abort(self)\n    return\n  }\n\n  self[kSignal] = signal\n  self[kListener] = () => {\n    abort(self)\n  }\n\n  addAbortListener(self[kSignal], self[kListener])\n}\n\nfunction removeSignal (self) {\n  if (!self[kSignal]) {\n    return\n  }\n\n  if ('removeEventListener' in self[kSignal]) {\n    self[kSignal].removeEventListener('abort', self[kListener])\n  } else {\n    self[kSignal].removeListener('abort', self[kListener])\n  }\n\n  self[kSignal] = null\n  self[kListener] = null\n}\n\nmodule.exports = {\n  addSignal,\n  removeSignal\n}\n", "'use strict'\n\nconst assert = require('node:assert')\nconst { finished, PassThrough } = require('node:stream')\nconst { InvalidArgumentError, InvalidReturnValueError } = require('../core/errors')\nconst util = require('../core/util')\nconst { getResolveErrorBodyCallback } = require('./util')\nconst { AsyncResource } = require('node:async_hooks')\nconst { addSignal, removeSignal } = require('./abort-signal')\n\nclass StreamHandler extends AsyncResource {\n  constructor (opts, factory, callback) {\n    if (!opts || typeof opts !== 'object') {\n      throw new InvalidArgumentError('invalid opts')\n    }\n\n    const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError } = opts\n\n    try {\n      if (typeof callback !== 'function') {\n        throw new InvalidArgumentError('invalid callback')\n      }\n\n      if (typeof factory !== 'function') {\n        throw new InvalidArgumentError('invalid factory')\n      }\n\n      if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n        throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n      }\n\n      if (method === 'CONNECT') {\n        throw new InvalidArgumentError('invalid method')\n      }\n\n      if (onInfo && typeof onInfo !== 'function') {\n        throw new InvalidArgumentError('invalid onInfo callback')\n      }\n\n      super('UNDICI_STREAM')\n    } catch (err) {\n      if (util.isStream(body)) {\n        util.destroy(body.on('error', util.nop), err)\n      }\n      throw err\n    }\n\n    this.responseHeaders = responseHeaders || null\n    this.opaque = opaque || null\n    this.factory = factory\n    this.callback = callback\n    this.res = null\n    this.abort = null\n    this.context = null\n    this.trailers = null\n    this.body = body\n    this.onInfo = onInfo || null\n    this.throwOnError = throwOnError || false\n\n    if (util.isStream(body)) {\n      body.on('error', (err) => {\n        this.onError(err)\n      })\n    }\n\n    addSignal(this, signal)\n  }\n\n  onConnect (abort, context) {\n    if (this.reason) {\n      abort(this.reason)\n      return\n    }\n\n    assert(this.callback)\n\n    this.abort = abort\n    this.context = context\n  }\n\n  onHeaders (statusCode, rawHeaders, resume, statusMessage) {\n    const { factory, opaque, context, callback, responseHeaders } = this\n\n    const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n\n    if (statusCode < 200) {\n      if (this.onInfo) {\n        this.onInfo({ statusCode, headers })\n      }\n      return\n    }\n\n    this.factory = null\n\n    let res\n\n    if (this.throwOnError && statusCode >= 400) {\n      const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers\n      const contentType = parsedHeaders['content-type']\n      res = new PassThrough()\n\n      this.callback = null\n      this.runInAsyncScope(getResolveErrorBodyCallback, null,\n        { callback, body: res, contentType, statusCode, statusMessage, headers }\n      )\n    } else {\n      if (factory === null) {\n        return\n      }\n\n      res = this.runInAsyncScope(factory, null, {\n        statusCode,\n        headers,\n        opaque,\n        context\n      })\n\n      if (\n        !res ||\n        typeof res.write !== 'function' ||\n        typeof res.end !== 'function' ||\n        typeof res.on !== 'function'\n      ) {\n        throw new InvalidReturnValueError('expected Writable')\n      }\n\n      // TODO: Avoid finished. It registers an unnecessary amount of listeners.\n      finished(res, { readable: false }, (err) => {\n        const { callback, res, opaque, trailers, abort } = this\n\n        this.res = null\n        if (err || !res.readable) {\n          util.destroy(res, err)\n        }\n\n        this.callback = null\n        this.runInAsyncScope(callback, null, err || null, { opaque, trailers })\n\n        if (err) {\n          abort()\n        }\n      })\n    }\n\n    res.on('drain', resume)\n\n    this.res = res\n\n    const needDrain = res.writableNeedDrain !== undefined\n      ? res.writableNeedDrain\n      : res._writableState?.needDrain\n\n    return needDrain !== true\n  }\n\n  onData (chunk) {\n    const { res } = this\n\n    return res ? res.write(chunk) : true\n  }\n\n  onComplete (trailers) {\n    const { res } = this\n\n    removeSignal(this)\n\n    if (!res) {\n      return\n    }\n\n    this.trailers = util.parseHeaders(trailers)\n\n    res.end()\n  }\n\n  onError (err) {\n    const { res, callback, opaque, body } = this\n\n    removeSignal(this)\n\n    this.factory = null\n\n    if (res) {\n      this.res = null\n      util.destroy(res, err)\n    } else if (callback) {\n      this.callback = null\n      queueMicrotask(() => {\n        this.runInAsyncScope(callback, null, err, { opaque })\n      })\n    }\n\n    if (body) {\n      this.body = null\n      util.destroy(body, err)\n    }\n  }\n}\n\nfunction stream (opts, factory, callback) {\n  if (callback === undefined) {\n    return new Promise((resolve, reject) => {\n      stream.call(this, opts, factory, (err, data) => {\n        return err ? reject(err) : resolve(data)\n      })\n    })\n  }\n\n  try {\n    this.dispatch(opts, new StreamHandler(opts, factory, callback))\n  } catch (err) {\n    if (typeof callback !== 'function') {\n      throw err\n    }\n    const opaque = opts?.opaque\n    queueMicrotask(() => callback(err, { opaque }))\n  }\n}\n\nmodule.exports = stream\n", "'use strict'\n\nconst {\n  Readable,\n  Duplex,\n  PassThrough\n} = require('node:stream')\nconst {\n  InvalidArgumentError,\n  InvalidReturnValueError,\n  RequestAbortedError\n} = require('../core/errors')\nconst util = require('../core/util')\nconst { AsyncResource } = require('node:async_hooks')\nconst { addSignal, removeSignal } = require('./abort-signal')\nconst assert = require('node:assert')\n\nconst kResume = Symbol('resume')\n\nclass PipelineRequest extends Readable {\n  constructor () {\n    super({ autoDestroy: true })\n\n    this[kResume] = null\n  }\n\n  _read () {\n    const { [kResume]: resume } = this\n\n    if (resume) {\n      this[kResume] = null\n      resume()\n    }\n  }\n\n  _destroy (err, callback) {\n    this._read()\n\n    callback(err)\n  }\n}\n\nclass PipelineResponse extends Readable {\n  constructor (resume) {\n    super({ autoDestroy: true })\n    this[kResume] = resume\n  }\n\n  _read () {\n    this[kResume]()\n  }\n\n  _destroy (err, callback) {\n    if (!err && !this._readableState.endEmitted) {\n      err = new RequestAbortedError()\n    }\n\n    callback(err)\n  }\n}\n\nclass PipelineHandler extends AsyncResource {\n  constructor (opts, handler) {\n    if (!opts || typeof opts !== 'object') {\n      throw new InvalidArgumentError('invalid opts')\n    }\n\n    if (typeof handler !== 'function') {\n      throw new InvalidArgumentError('invalid handler')\n    }\n\n    const { signal, method, opaque, onInfo, responseHeaders } = opts\n\n    if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n      throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n    }\n\n    if (method === 'CONNECT') {\n      throw new InvalidArgumentError('invalid method')\n    }\n\n    if (onInfo && typeof onInfo !== 'function') {\n      throw new InvalidArgumentError('invalid onInfo callback')\n    }\n\n    super('UNDICI_PIPELINE')\n\n    this.opaque = opaque || null\n    this.responseHeaders = responseHeaders || null\n    this.handler = handler\n    this.abort = null\n    this.context = null\n    this.onInfo = onInfo || null\n\n    this.req = new PipelineRequest().on('error', util.nop)\n\n    this.ret = new Duplex({\n      readableObjectMode: opts.objectMode,\n      autoDestroy: true,\n      read: () => {\n        const { body } = this\n\n        if (body?.resume) {\n          body.resume()\n        }\n      },\n      write: (chunk, encoding, callback) => {\n        const { req } = this\n\n        if (req.push(chunk, encoding) || req._readableState.destroyed) {\n          callback()\n        } else {\n          req[kResume] = callback\n        }\n      },\n      destroy: (err, callback) => {\n        const { body, req, res, ret, abort } = this\n\n        if (!err && !ret._readableState.endEmitted) {\n          err = new RequestAbortedError()\n        }\n\n        if (abort && err) {\n          abort()\n        }\n\n        util.destroy(body, err)\n        util.destroy(req, err)\n        util.destroy(res, err)\n\n        removeSignal(this)\n\n        callback(err)\n      }\n    }).on('prefinish', () => {\n      const { req } = this\n\n      // Node < 15 does not call _final in same tick.\n      req.push(null)\n    })\n\n    this.res = null\n\n    addSignal(this, signal)\n  }\n\n  onConnect (abort, context) {\n    const { ret, res } = this\n\n    if (this.reason) {\n      abort(this.reason)\n      return\n    }\n\n    assert(!res, 'pipeline cannot be retried')\n    assert(!ret.destroyed)\n\n    this.abort = abort\n    this.context = context\n  }\n\n  onHeaders (statusCode, rawHeaders, resume) {\n    const { opaque, handler, context } = this\n\n    if (statusCode < 200) {\n      if (this.onInfo) {\n        const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n        this.onInfo({ statusCode, headers })\n      }\n      return\n    }\n\n    this.res = new PipelineResponse(resume)\n\n    let body\n    try {\n      this.handler = null\n      const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n      body = this.runInAsyncScope(handler, null, {\n        statusCode,\n        headers,\n        opaque,\n        body: this.res,\n        context\n      })\n    } catch (err) {\n      this.res.on('error', util.nop)\n      throw err\n    }\n\n    if (!body || typeof body.on !== 'function') {\n      throw new InvalidReturnValueError('expected Readable')\n    }\n\n    body\n      .on('data', (chunk) => {\n        const { ret, body } = this\n\n        if (!ret.push(chunk) && body.pause) {\n          body.pause()\n        }\n      })\n      .on('error', (err) => {\n        const { ret } = this\n\n        util.destroy(ret, err)\n      })\n      .on('end', () => {\n        const { ret } = this\n\n        ret.push(null)\n      })\n      .on('close', () => {\n        const { ret } = this\n\n        if (!ret._readableState.ended) {\n          util.destroy(ret, new RequestAbortedError())\n        }\n      })\n\n    this.body = body\n  }\n\n  onData (chunk) {\n    const { res } = this\n    return res.push(chunk)\n  }\n\n  onComplete (trailers) {\n    const { res } = this\n    res.push(null)\n  }\n\n  onError (err) {\n    const { ret } = this\n    this.handler = null\n    util.destroy(ret, err)\n  }\n}\n\nfunction pipeline (opts, handler) {\n  try {\n    const pipelineHandler = new PipelineHandler(opts, handler)\n    this.dispatch({ ...opts, body: pipelineHandler.req }, pipelineHandler)\n    return pipelineHandler.ret\n  } catch (err) {\n    return new PassThrough().destroy(err)\n  }\n}\n\nmodule.exports = pipeline\n", "'use strict'\n\nconst { InvalidArgumentError, SocketError } = require('../core/errors')\nconst { AsyncResource } = require('node:async_hooks')\nconst util = require('../core/util')\nconst { addSignal, removeSignal } = require('./abort-signal')\nconst assert = require('node:assert')\n\nclass UpgradeHandler extends AsyncResource {\n  constructor (opts, callback) {\n    if (!opts || typeof opts !== 'object') {\n      throw new InvalidArgumentError('invalid opts')\n    }\n\n    if (typeof callback !== 'function') {\n      throw new InvalidArgumentError('invalid callback')\n    }\n\n    const { signal, opaque, responseHeaders } = opts\n\n    if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n      throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n    }\n\n    super('UNDICI_UPGRADE')\n\n    this.responseHeaders = responseHeaders || null\n    this.opaque = opaque || null\n    this.callback = callback\n    this.abort = null\n    this.context = null\n\n    addSignal(this, signal)\n  }\n\n  onConnect (abort, context) {\n    if (this.reason) {\n      abort(this.reason)\n      return\n    }\n\n    assert(this.callback)\n\n    this.abort = abort\n    this.context = null\n  }\n\n  onHeaders () {\n    throw new SocketError('bad upgrade', null)\n  }\n\n  onUpgrade (statusCode, rawHeaders, socket) {\n    assert(statusCode === 101)\n\n    const { callback, opaque, context } = this\n\n    removeSignal(this)\n\n    this.callback = null\n    const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n    this.runInAsyncScope(callback, null, null, {\n      headers,\n      socket,\n      opaque,\n      context\n    })\n  }\n\n  onError (err) {\n    const { callback, opaque } = this\n\n    removeSignal(this)\n\n    if (callback) {\n      this.callback = null\n      queueMicrotask(() => {\n        this.runInAsyncScope(callback, null, err, { opaque })\n      })\n    }\n  }\n}\n\nfunction upgrade (opts, callback) {\n  if (callback === undefined) {\n    return new Promise((resolve, reject) => {\n      upgrade.call(this, opts, (err, data) => {\n        return err ? reject(err) : resolve(data)\n      })\n    })\n  }\n\n  try {\n    const upgradeHandler = new UpgradeHandler(opts, callback)\n    this.dispatch({\n      ...opts,\n      method: opts.method || 'GET',\n      upgrade: opts.protocol || 'Websocket'\n    }, upgradeHandler)\n  } catch (err) {\n    if (typeof callback !== 'function') {\n      throw err\n    }\n    const opaque = opts?.opaque\n    queueMicrotask(() => callback(err, { opaque }))\n  }\n}\n\nmodule.exports = upgrade\n", "'use strict'\n\nconst assert = require('node:assert')\nconst { AsyncResource } = require('node:async_hooks')\nconst { InvalidArgumentError, SocketError } = require('../core/errors')\nconst util = require('../core/util')\nconst { addSignal, removeSignal } = require('./abort-signal')\n\nclass ConnectHandler extends AsyncResource {\n  constructor (opts, callback) {\n    if (!opts || typeof opts !== 'object') {\n      throw new InvalidArgumentError('invalid opts')\n    }\n\n    if (typeof callback !== 'function') {\n      throw new InvalidArgumentError('invalid callback')\n    }\n\n    const { signal, opaque, responseHeaders } = opts\n\n    if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n      throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n    }\n\n    super('UNDICI_CONNECT')\n\n    this.opaque = opaque || null\n    this.responseHeaders = responseHeaders || null\n    this.callback = callback\n    this.abort = null\n\n    addSignal(this, signal)\n  }\n\n  onConnect (abort, context) {\n    if (this.reason) {\n      abort(this.reason)\n      return\n    }\n\n    assert(this.callback)\n\n    this.abort = abort\n    this.context = context\n  }\n\n  onHeaders () {\n    throw new SocketError('bad connect', null)\n  }\n\n  onUpgrade (statusCode, rawHeaders, socket) {\n    const { callback, opaque, context } = this\n\n    removeSignal(this)\n\n    this.callback = null\n\n    let headers = rawHeaders\n    // Indicates is an HTTP2Session\n    if (headers != null) {\n      headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n    }\n\n    this.runInAsyncScope(callback, null, null, {\n      statusCode,\n      headers,\n      socket,\n      opaque,\n      context\n    })\n  }\n\n  onError (err) {\n    const { callback, opaque } = this\n\n    removeSignal(this)\n\n    if (callback) {\n      this.callback = null\n      queueMicrotask(() => {\n        this.runInAsyncScope(callback, null, err, { opaque })\n      })\n    }\n  }\n}\n\nfunction connect (opts, callback) {\n  if (callback === undefined) {\n    return new Promise((resolve, reject) => {\n      connect.call(this, opts, (err, data) => {\n        return err ? reject(err) : resolve(data)\n      })\n    })\n  }\n\n  try {\n    const connectHandler = new ConnectHandler(opts, callback)\n    this.dispatch({ ...opts, method: 'CONNECT' }, connectHandler)\n  } catch (err) {\n    if (typeof callback !== 'function') {\n      throw err\n    }\n    const opaque = opts?.opaque\n    queueMicrotask(() => callback(err, { opaque }))\n  }\n}\n\nmodule.exports = connect\n", "'use strict'\n\nmodule.exports.request = require('./api-request')\nmodule.exports.stream = require('./api-stream')\nmodule.exports.pipeline = require('./api-pipeline')\nmodule.exports.upgrade = require('./api-upgrade')\nmodule.exports.connect = require('./api-connect')\n", "'use strict'\n\nconst { UndiciError } = require('../core/errors')\n\nconst kMockNotMatchedError = Symbol.for('undici.error.UND_MOCK_ERR_MOCK_NOT_MATCHED')\n\n/**\n * The request does not match any registered mock dispatches.\n */\nclass MockNotMatchedError extends UndiciError {\n  constructor (message) {\n    super(message)\n    Error.captureStackTrace(this, MockNotMatchedError)\n    this.name = 'MockNotMatchedError'\n    this.message = message || 'The request does not match any registered mock dispatches'\n    this.code = 'UND_MOCK_ERR_MOCK_NOT_MATCHED'\n  }\n\n  static [Symbol.hasInstance] (instance) {\n    return instance && instance[kMockNotMatchedError] === true\n  }\n\n  [kMockNotMatchedError] = true\n}\n\nmodule.exports = {\n  MockNotMatchedError\n}\n", "'use strict'\n\nmodule.exports = {\n  kAgent: Symbol('agent'),\n  kOptions: Symbol('options'),\n  kFactory: Symbol('factory'),\n  kDispatches: Symbol('dispatches'),\n  kDispatchKey: Symbol('dispatch key'),\n  kDefaultHeaders: Symbol('default headers'),\n  kDefaultTrailers: Symbol('default trailers'),\n  kContentLength: Symbol('content length'),\n  kMockAgent: Symbol('mock agent'),\n  kMockAgentSet: Symbol('mock agent set'),\n  kMockAgentGet: Symbol('mock agent get'),\n  kMockDispatch: Symbol('mock dispatch'),\n  kClose: Symbol('close'),\n  kOriginalClose: Symbol('original agent close'),\n  kOrigin: Symbol('origin'),\n  kIsMockActive: Symbol('is mock active'),\n  kNetConnect: Symbol('net connect'),\n  kGetNetConnect: Symbol('get net connect'),\n  kConnected: Symbol('connected')\n}\n", "'use strict'\n\nconst { MockNotMatchedError } = require('./mock-errors')\nconst {\n  kDispatches,\n  kMockAgent,\n  kOriginalDispatch,\n  kOrigin,\n  kGetNetConnect\n} = require('./mock-symbols')\nconst { buildURL } = require('../core/util')\nconst { STATUS_CODES } = require('node:http')\nconst {\n  types: {\n    isPromise\n  }\n} = require('node:util')\n\nfunction matchValue (match, value) {\n  if (typeof match === 'string') {\n    return match === value\n  }\n  if (match instanceof RegExp) {\n    return match.test(value)\n  }\n  if (typeof match === 'function') {\n    return match(value) === true\n  }\n  return false\n}\n\nfunction lowerCaseEntries (headers) {\n  return Object.fromEntries(\n    Object.entries(headers).map(([headerName, headerValue]) => {\n      return [headerName.toLocaleLowerCase(), headerValue]\n    })\n  )\n}\n\n/**\n * @param {import('../../index').Headers|string[]|Record<string, string>} headers\n * @param {string} key\n */\nfunction getHeaderByName (headers, key) {\n  if (Array.isArray(headers)) {\n    for (let i = 0; i < headers.length; i += 2) {\n      if (headers[i].toLocaleLowerCase() === key.toLocaleLowerCase()) {\n        return headers[i + 1]\n      }\n    }\n\n    return undefined\n  } else if (typeof headers.get === 'function') {\n    return headers.get(key)\n  } else {\n    return lowerCaseEntries(headers)[key.toLocaleLowerCase()]\n  }\n}\n\n/** @param {string[]} headers */\nfunction buildHeadersFromArray (headers) { // fetch HeadersList\n  const clone = headers.slice()\n  const entries = []\n  for (let index = 0; index < clone.length; index += 2) {\n    entries.push([clone[index], clone[index + 1]])\n  }\n  return Object.fromEntries(entries)\n}\n\nfunction matchHeaders (mockDispatch, headers) {\n  if (typeof mockDispatch.headers === 'function') {\n    if (Array.isArray(headers)) { // fetch HeadersList\n      headers = buildHeadersFromArray(headers)\n    }\n    return mockDispatch.headers(headers ? lowerCaseEntries(headers) : {})\n  }\n  if (typeof mockDispatch.headers === 'undefined') {\n    return true\n  }\n  if (typeof headers !== 'object' || typeof mockDispatch.headers !== 'object') {\n    return false\n  }\n\n  for (const [matchHeaderName, matchHeaderValue] of Object.entries(mockDispatch.headers)) {\n    const headerValue = getHeaderByName(headers, matchHeaderName)\n\n    if (!matchValue(matchHeaderValue, headerValue)) {\n      return false\n    }\n  }\n  return true\n}\n\nfunction safeUrl (path) {\n  if (typeof path !== 'string') {\n    return path\n  }\n\n  const pathSegments = path.split('?')\n\n  if (pathSegments.length !== 2) {\n    return path\n  }\n\n  const qp = new URLSearchParams(pathSegments.pop())\n  qp.sort()\n  return [...pathSegments, qp.toString()].join('?')\n}\n\nfunction matchKey (mockDispatch, { path, method, body, headers }) {\n  const pathMatch = matchValue(mockDispatch.path, path)\n  const methodMatch = matchValue(mockDispatch.method, method)\n  const bodyMatch = typeof mockDispatch.body !== 'undefined' ? matchValue(mockDispatch.body, body) : true\n  const headersMatch = matchHeaders(mockDispatch, headers)\n  return pathMatch && methodMatch && bodyMatch && headersMatch\n}\n\nfunction getResponseData (data) {\n  if (Buffer.isBuffer(data)) {\n    return data\n  } else if (data instanceof Uint8Array) {\n    return data\n  } else if (data instanceof ArrayBuffer) {\n    return data\n  } else if (typeof data === 'object') {\n    return JSON.stringify(data)\n  } else {\n    return data.toString()\n  }\n}\n\nfunction getMockDispatch (mockDispatches, key) {\n  const basePath = key.query ? buildURL(key.path, key.query) : key.path\n  const resolvedPath = typeof basePath === 'string' ? safeUrl(basePath) : basePath\n\n  // Match path\n  let matchedMockDispatches = mockDispatches.filter(({ consumed }) => !consumed).filter(({ path }) => matchValue(safeUrl(path), resolvedPath))\n  if (matchedMockDispatches.length === 0) {\n    throw new MockNotMatchedError(`Mock dispatch not matched for path '${resolvedPath}'`)\n  }\n\n  // Match method\n  matchedMockDispatches = matchedMockDispatches.filter(({ method }) => matchValue(method, key.method))\n  if (matchedMockDispatches.length === 0) {\n    throw new MockNotMatchedError(`Mock dispatch not matched for method '${key.method}' on path '${resolvedPath}'`)\n  }\n\n  // Match body\n  matchedMockDispatches = matchedMockDispatches.filter(({ body }) => typeof body !== 'undefined' ? matchValue(body, key.body) : true)\n  if (matchedMockDispatches.length === 0) {\n    throw new MockNotMatchedError(`Mock dispatch not matched for body '${key.body}' on path '${resolvedPath}'`)\n  }\n\n  // Match headers\n  matchedMockDispatches = matchedMockDispatches.filter((mockDispatch) => matchHeaders(mockDispatch, key.headers))\n  if (matchedMockDispatches.length === 0) {\n    const headers = typeof key.headers === 'object' ? JSON.stringify(key.headers) : key.headers\n    throw new MockNotMatchedError(`Mock dispatch not matched for headers '${headers}' on path '${resolvedPath}'`)\n  }\n\n  return matchedMockDispatches[0]\n}\n\nfunction addMockDispatch (mockDispatches, key, data) {\n  const baseData = { timesInvoked: 0, times: 1, persist: false, consumed: false }\n  const replyData = typeof data === 'function' ? { callback: data } : { ...data }\n  const newMockDispatch = { ...baseData, ...key, pending: true, data: { error: null, ...replyData } }\n  mockDispatches.push(newMockDispatch)\n  return newMockDispatch\n}\n\nfunction deleteMockDispatch (mockDispatches, key) {\n  const index = mockDispatches.findIndex(dispatch => {\n    if (!dispatch.consumed) {\n      return false\n    }\n    return matchKey(dispatch, key)\n  })\n  if (index !== -1) {\n    mockDispatches.splice(index, 1)\n  }\n}\n\nfunction buildKey (opts) {\n  const { path, method, body, headers, query } = opts\n  return {\n    path,\n    method,\n    body,\n    headers,\n    query\n  }\n}\n\nfunction generateKeyValues (data) {\n  const keys = Object.keys(data)\n  const result = []\n  for (let i = 0; i < keys.length; ++i) {\n    const key = keys[i]\n    const value = data[key]\n    const name = Buffer.from(`${key}`)\n    if (Array.isArray(value)) {\n      for (let j = 0; j < value.length; ++j) {\n        result.push(name, Buffer.from(`${value[j]}`))\n      }\n    } else {\n      result.push(name, Buffer.from(`${value}`))\n    }\n  }\n  return result\n}\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Status\n * @param {number} statusCode\n */\nfunction getStatusText (statusCode) {\n  return STATUS_CODES[statusCode] || 'unknown'\n}\n\nasync function getResponse (body) {\n  const buffers = []\n  for await (const data of body) {\n    buffers.push(data)\n  }\n  return Buffer.concat(buffers).toString('utf8')\n}\n\n/**\n * Mock dispatch function used to simulate undici dispatches\n */\nfunction mockDispatch (opts, handler) {\n  // Get mock dispatch from built key\n  const key = buildKey(opts)\n  const mockDispatch = getMockDispatch(this[kDispatches], key)\n\n  mockDispatch.timesInvoked++\n\n  // Here's where we resolve a callback if a callback is present for the dispatch data.\n  if (mockDispatch.data.callback) {\n    mockDispatch.data = { ...mockDispatch.data, ...mockDispatch.data.callback(opts) }\n  }\n\n  // Parse mockDispatch data\n  const { data: { statusCode, data, headers, trailers, error }, delay, persist } = mockDispatch\n  const { timesInvoked, times } = mockDispatch\n\n  // If it's used up and not persistent, mark as consumed\n  mockDispatch.consumed = !persist && timesInvoked >= times\n  mockDispatch.pending = timesInvoked < times\n\n  // If specified, trigger dispatch error\n  if (error !== null) {\n    deleteMockDispatch(this[kDispatches], key)\n    handler.onError(error)\n    return true\n  }\n\n  // Handle the request with a delay if necessary\n  if (typeof delay === 'number' && delay > 0) {\n    setTimeout(() => {\n      handleReply(this[kDispatches])\n    }, delay)\n  } else {\n    handleReply(this[kDispatches])\n  }\n\n  function handleReply (mockDispatches, _data = data) {\n    // fetch's HeadersList is a 1D string array\n    const optsHeaders = Array.isArray(opts.headers)\n      ? buildHeadersFromArray(opts.headers)\n      : opts.headers\n    const body = typeof _data === 'function'\n      ? _data({ ...opts, headers: optsHeaders })\n      : _data\n\n    // util.types.isPromise is likely needed for jest.\n    if (isPromise(body)) {\n      // If handleReply is asynchronous, throwing an error\n      // in the callback will reject the promise, rather than\n      // synchronously throw the error, which breaks some tests.\n      // Rather, we wait for the callback to resolve if it is a\n      // promise, and then re-run handleReply with the new body.\n      body.then((newData) => handleReply(mockDispatches, newData))\n      return\n    }\n\n    const responseData = getResponseData(body)\n    const responseHeaders = generateKeyValues(headers)\n    const responseTrailers = generateKeyValues(trailers)\n\n    handler.onConnect?.(err => handler.onError(err), null)\n    handler.onHeaders?.(statusCode, responseHeaders, resume, getStatusText(statusCode))\n    handler.onData?.(Buffer.from(responseData))\n    handler.onComplete?.(responseTrailers)\n    deleteMockDispatch(mockDispatches, key)\n  }\n\n  function resume () {}\n\n  return true\n}\n\nfunction buildMockDispatch () {\n  const agent = this[kMockAgent]\n  const origin = this[kOrigin]\n  const originalDispatch = this[kOriginalDispatch]\n\n  return function dispatch (opts, handler) {\n    if (agent.isMockActive) {\n      try {\n        mockDispatch.call(this, opts, handler)\n      } catch (error) {\n        if (error instanceof MockNotMatchedError) {\n          const netConnect = agent[kGetNetConnect]()\n          if (netConnect === false) {\n            throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)`)\n          }\n          if (checkNetConnect(netConnect, origin)) {\n            originalDispatch.call(this, opts, handler)\n          } else {\n            throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect is not enabled for this origin)`)\n          }\n        } else {\n          throw error\n        }\n      }\n    } else {\n      originalDispatch.call(this, opts, handler)\n    }\n  }\n}\n\nfunction checkNetConnect (netConnect, origin) {\n  const url = new URL(origin)\n  if (netConnect === true) {\n    return true\n  } else if (Array.isArray(netConnect) && netConnect.some((matcher) => matchValue(matcher, url.host))) {\n    return true\n  }\n  return false\n}\n\nfunction buildMockOptions (opts) {\n  if (opts) {\n    const { agent, ...mockOptions } = opts\n    return mockOptions\n  }\n}\n\nmodule.exports = {\n  getResponseData,\n  getMockDispatch,\n  addMockDispatch,\n  deleteMockDispatch,\n  buildKey,\n  generateKeyValues,\n  matchValue,\n  getResponse,\n  getStatusText,\n  mockDispatch,\n  buildMockDispatch,\n  checkNetConnect,\n  buildMockOptions,\n  getHeaderByName,\n  buildHeadersFromArray\n}\n", "'use strict'\n\nconst { getResponseData, buildKey, addMockDispatch } = require('./mock-utils')\nconst {\n  kDispatches,\n  kDispatchKey,\n  kDefaultHeaders,\n  kDefaultTrailers,\n  kContentLength,\n  kMockDispatch\n} = require('./mock-symbols')\nconst { InvalidArgumentError } = require('../core/errors')\nconst { buildURL } = require('../core/util')\n\n/**\n * Defines the scope API for an interceptor reply\n */\nclass MockScope {\n  constructor (mockDispatch) {\n    this[kMockDispatch] = mockDispatch\n  }\n\n  /**\n   * Delay a reply by a set amount in ms.\n   */\n  delay (waitInMs) {\n    if (typeof waitInMs !== 'number' || !Number.isInteger(waitInMs) || waitInMs <= 0) {\n      throw new InvalidArgumentError('waitInMs must be a valid integer > 0')\n    }\n\n    this[kMockDispatch].delay = waitInMs\n    return this\n  }\n\n  /**\n   * For a defined reply, never mark as consumed.\n   */\n  persist () {\n    this[kMockDispatch].persist = true\n    return this\n  }\n\n  /**\n   * Allow one to define a reply for a set amount of matching requests.\n   */\n  times (repeatTimes) {\n    if (typeof repeatTimes !== 'number' || !Number.isInteger(repeatTimes) || repeatTimes <= 0) {\n      throw new InvalidArgumentError('repeatTimes must be a valid integer > 0')\n    }\n\n    this[kMockDispatch].times = repeatTimes\n    return this\n  }\n}\n\n/**\n * Defines an interceptor for a Mock\n */\nclass MockInterceptor {\n  constructor (opts, mockDispatches) {\n    if (typeof opts !== 'object') {\n      throw new InvalidArgumentError('opts must be an object')\n    }\n    if (typeof opts.path === 'undefined') {\n      throw new InvalidArgumentError('opts.path must be defined')\n    }\n    if (typeof opts.method === 'undefined') {\n      opts.method = 'GET'\n    }\n    // See https://github.com/nodejs/undici/issues/1245\n    // As per RFC 3986, clients are not supposed to send URI\n    // fragments to servers when they retrieve a document,\n    if (typeof opts.path === 'string') {\n      if (opts.query) {\n        opts.path = buildURL(opts.path, opts.query)\n      } else {\n        // Matches https://github.com/nodejs/undici/blob/main/lib/web/fetch/index.js#L1811\n        const parsedURL = new URL(opts.path, 'data://')\n        opts.path = parsedURL.pathname + parsedURL.search\n      }\n    }\n    if (typeof opts.method === 'string') {\n      opts.method = opts.method.toUpperCase()\n    }\n\n    this[kDispatchKey] = buildKey(opts)\n    this[kDispatches] = mockDispatches\n    this[kDefaultHeaders] = {}\n    this[kDefaultTrailers] = {}\n    this[kContentLength] = false\n  }\n\n  createMockScopeDispatchData ({ statusCode, data, responseOptions }) {\n    const responseData = getResponseData(data)\n    const contentLength = this[kContentLength] ? { 'content-length': responseData.length } : {}\n    const headers = { ...this[kDefaultHeaders], ...contentLength, ...responseOptions.headers }\n    const trailers = { ...this[kDefaultTrailers], ...responseOptions.trailers }\n\n    return { statusCode, data, headers, trailers }\n  }\n\n  validateReplyParameters (replyParameters) {\n    if (typeof replyParameters.statusCode === 'undefined') {\n      throw new InvalidArgumentError('statusCode must be defined')\n    }\n    if (typeof replyParameters.responseOptions !== 'object' || replyParameters.responseOptions === null) {\n      throw new InvalidArgumentError('responseOptions must be an object')\n    }\n  }\n\n  /**\n   * Mock an undici request with a defined reply.\n   */\n  reply (replyOptionsCallbackOrStatusCode) {\n    // Values of reply aren't available right now as they\n    // can only be available when the reply callback is invoked.\n    if (typeof replyOptionsCallbackOrStatusCode === 'function') {\n      // We'll first wrap the provided callback in another function,\n      // this function will properly resolve the data from the callback\n      // when invoked.\n      const wrappedDefaultsCallback = (opts) => {\n        // Our reply options callback contains the parameter for statusCode, data and options.\n        const resolvedData = replyOptionsCallbackOrStatusCode(opts)\n\n        // Check if it is in the right format\n        if (typeof resolvedData !== 'object' || resolvedData === null) {\n          throw new InvalidArgumentError('reply options callback must return an object')\n        }\n\n        const replyParameters = { data: '', responseOptions: {}, ...resolvedData }\n        this.validateReplyParameters(replyParameters)\n        // Since the values can be obtained immediately we return them\n        // from this higher order function that will be resolved later.\n        return {\n          ...this.createMockScopeDispatchData(replyParameters)\n        }\n      }\n\n      // Add usual dispatch data, but this time set the data parameter to function that will eventually provide data.\n      const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], wrappedDefaultsCallback)\n      return new MockScope(newMockDispatch)\n    }\n\n    // We can have either one or three parameters, if we get here,\n    // we should have 1-3 parameters. So we spread the arguments of\n    // this function to obtain the parameters, since replyData will always\n    // just be the statusCode.\n    const replyParameters = {\n      statusCode: replyOptionsCallbackOrStatusCode,\n      data: arguments[1] === undefined ? '' : arguments[1],\n      responseOptions: arguments[2] === undefined ? {} : arguments[2]\n    }\n    this.validateReplyParameters(replyParameters)\n\n    // Send in-already provided data like usual\n    const dispatchData = this.createMockScopeDispatchData(replyParameters)\n    const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], dispatchData)\n    return new MockScope(newMockDispatch)\n  }\n\n  /**\n   * Mock an undici request with a defined error.\n   */\n  replyWithError (error) {\n    if (typeof error === 'undefined') {\n      throw new InvalidArgumentError('error must be defined')\n    }\n\n    const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], { error })\n    return new MockScope(newMockDispatch)\n  }\n\n  /**\n   * Set default reply headers on the interceptor for subsequent replies\n   */\n  defaultReplyHeaders (headers) {\n    if (typeof headers === 'undefined') {\n      throw new InvalidArgumentError('headers must be defined')\n    }\n\n    this[kDefaultHeaders] = headers\n    return this\n  }\n\n  /**\n   * Set default reply trailers on the interceptor for subsequent replies\n   */\n  defaultReplyTrailers (trailers) {\n    if (typeof trailers === 'undefined') {\n      throw new InvalidArgumentError('trailers must be defined')\n    }\n\n    this[kDefaultTrailers] = trailers\n    return this\n  }\n\n  /**\n   * Set reply content length header for replies on the interceptor\n   */\n  replyContentLength () {\n    this[kContentLength] = true\n    return this\n  }\n}\n\nmodule.exports.MockInterceptor = MockInterceptor\nmodule.exports.MockScope = MockScope\n", "'use strict'\n\nconst { promisify } = require('node:util')\nconst Client = require('../dispatcher/client')\nconst { buildMockDispatch } = require('./mock-utils')\nconst {\n  kDispatches,\n  kMockAgent,\n  kClose,\n  kOriginalClose,\n  kOrigin,\n  kOriginalDispatch,\n  kConnected\n} = require('./mock-symbols')\nconst { MockInterceptor } = require('./mock-interceptor')\nconst Symbols = require('../core/symbols')\nconst { InvalidArgumentError } = require('../core/errors')\n\n/**\n * MockClient provides an API that extends the Client to influence the mockDispatches.\n */\nclass MockClient extends Client {\n  constructor (origin, opts) {\n    super(origin, opts)\n\n    if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') {\n      throw new InvalidArgumentError('Argument opts.agent must implement Agent')\n    }\n\n    this[kMockAgent] = opts.agent\n    this[kOrigin] = origin\n    this[kDispatches] = []\n    this[kConnected] = 1\n    this[kOriginalDispatch] = this.dispatch\n    this[kOriginalClose] = this.close.bind(this)\n\n    this.dispatch = buildMockDispatch.call(this)\n    this.close = this[kClose]\n  }\n\n  get [Symbols.kConnected] () {\n    return this[kConnected]\n  }\n\n  /**\n   * Sets up the base interceptor for mocking replies from undici.\n   */\n  intercept (opts) {\n    return new MockInterceptor(opts, this[kDispatches])\n  }\n\n  async [kClose] () {\n    await promisify(this[kOriginalClose])()\n    this[kConnected] = 0\n    this[kMockAgent][Symbols.kClients].delete(this[kOrigin])\n  }\n}\n\nmodule.exports = MockClient\n", "'use strict'\n\nconst { promisify } = require('node:util')\nconst Pool = require('../dispatcher/pool')\nconst { buildMockDispatch } = require('./mock-utils')\nconst {\n  kDispatches,\n  kMockAgent,\n  kClose,\n  kOriginalClose,\n  kOrigin,\n  kOriginalDispatch,\n  kConnected\n} = require('./mock-symbols')\nconst { MockInterceptor } = require('./mock-interceptor')\nconst Symbols = require('../core/symbols')\nconst { InvalidArgumentError } = require('../core/errors')\n\n/**\n * MockPool provides an API that extends the Pool to influence the mockDispatches.\n */\nclass MockPool extends Pool {\n  constructor (origin, opts) {\n    super(origin, opts)\n\n    if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') {\n      throw new InvalidArgumentError('Argument opts.agent must implement Agent')\n    }\n\n    this[kMockAgent] = opts.agent\n    this[kOrigin] = origin\n    this[kDispatches] = []\n    this[kConnected] = 1\n    this[kOriginalDispatch] = this.dispatch\n    this[kOriginalClose] = this.close.bind(this)\n\n    this.dispatch = buildMockDispatch.call(this)\n    this.close = this[kClose]\n  }\n\n  get [Symbols.kConnected] () {\n    return this[kConnected]\n  }\n\n  /**\n   * Sets up the base interceptor for mocking replies from undici.\n   */\n  intercept (opts) {\n    return new MockInterceptor(opts, this[kDispatches])\n  }\n\n  async [kClose] () {\n    await promisify(this[kOriginalClose])()\n    this[kConnected] = 0\n    this[kMockAgent][Symbols.kClients].delete(this[kOrigin])\n  }\n}\n\nmodule.exports = MockPool\n", "'use strict'\n\nconst singulars = {\n  pronoun: 'it',\n  is: 'is',\n  was: 'was',\n  this: 'this'\n}\n\nconst plurals = {\n  pronoun: 'they',\n  is: 'are',\n  was: 'were',\n  this: 'these'\n}\n\nmodule.exports = class Pluralizer {\n  constructor (singular, plural) {\n    this.singular = singular\n    this.plural = plural\n  }\n\n  pluralize (count) {\n    const one = count === 1\n    const keys = one ? singulars : plurals\n    const noun = one ? this.singular : this.plural\n    return { ...keys, count, noun }\n  }\n}\n", "'use strict'\n\nconst { Transform } = require('node:stream')\nconst { Console } = require('node:console')\n\nconst PERSISTENT = process.versions.icu ? '\u2705' : 'Y '\nconst NOT_PERSISTENT = process.versions.icu ? '\u274C' : 'N '\n\n/**\n * Gets the output of `console.table(\u2026)` as a string.\n */\nmodule.exports = class PendingInterceptorsFormatter {\n  constructor ({ disableColors } = {}) {\n    this.transform = new Transform({\n      transform (chunk, _enc, cb) {\n        cb(null, chunk)\n      }\n    })\n\n    this.logger = new Console({\n      stdout: this.transform,\n      inspectOptions: {\n        colors: !disableColors && !process.env.CI\n      }\n    })\n  }\n\n  format (pendingInterceptors) {\n    const withPrettyHeaders = pendingInterceptors.map(\n      ({ method, path, data: { statusCode }, persist, times, timesInvoked, origin }) => ({\n        Method: method,\n        Origin: origin,\n        Path: path,\n        'Status code': statusCode,\n        Persistent: persist ? PERSISTENT : NOT_PERSISTENT,\n        Invocations: timesInvoked,\n        Remaining: persist ? Infinity : times - timesInvoked\n      }))\n\n    this.logger.table(withPrettyHeaders)\n    return this.transform.read().toString()\n  }\n}\n", "'use strict'\n\nconst { kClients } = require('../core/symbols')\nconst Agent = require('../dispatcher/agent')\nconst {\n  kAgent,\n  kMockAgentSet,\n  kMockAgentGet,\n  kDispatches,\n  kIsMockActive,\n  kNetConnect,\n  kGetNetConnect,\n  kOptions,\n  kFactory\n} = require('./mock-symbols')\nconst MockClient = require('./mock-client')\nconst MockPool = require('./mock-pool')\nconst { matchValue, buildMockOptions } = require('./mock-utils')\nconst { InvalidArgumentError, UndiciError } = require('../core/errors')\nconst Dispatcher = require('../dispatcher/dispatcher')\nconst Pluralizer = require('./pluralizer')\nconst PendingInterceptorsFormatter = require('./pending-interceptors-formatter')\n\nclass MockAgent extends Dispatcher {\n  constructor (opts) {\n    super(opts)\n\n    this[kNetConnect] = true\n    this[kIsMockActive] = true\n\n    // Instantiate Agent and encapsulate\n    if ((opts?.agent && typeof opts.agent.dispatch !== 'function')) {\n      throw new InvalidArgumentError('Argument opts.agent must implement Agent')\n    }\n    const agent = opts?.agent ? opts.agent : new Agent(opts)\n    this[kAgent] = agent\n\n    this[kClients] = agent[kClients]\n    this[kOptions] = buildMockOptions(opts)\n  }\n\n  get (origin) {\n    let dispatcher = this[kMockAgentGet](origin)\n\n    if (!dispatcher) {\n      dispatcher = this[kFactory](origin)\n      this[kMockAgentSet](origin, dispatcher)\n    }\n    return dispatcher\n  }\n\n  dispatch (opts, handler) {\n    // Call MockAgent.get to perform additional setup before dispatching as normal\n    this.get(opts.origin)\n    return this[kAgent].dispatch(opts, handler)\n  }\n\n  async close () {\n    await this[kAgent].close()\n    this[kClients].clear()\n  }\n\n  deactivate () {\n    this[kIsMockActive] = false\n  }\n\n  activate () {\n    this[kIsMockActive] = true\n  }\n\n  enableNetConnect (matcher) {\n    if (typeof matcher === 'string' || typeof matcher === 'function' || matcher instanceof RegExp) {\n      if (Array.isArray(this[kNetConnect])) {\n        this[kNetConnect].push(matcher)\n      } else {\n        this[kNetConnect] = [matcher]\n      }\n    } else if (typeof matcher === 'undefined') {\n      this[kNetConnect] = true\n    } else {\n      throw new InvalidArgumentError('Unsupported matcher. Must be one of String|Function|RegExp.')\n    }\n  }\n\n  disableNetConnect () {\n    this[kNetConnect] = false\n  }\n\n  // This is required to bypass issues caused by using global symbols - see:\n  // https://github.com/nodejs/undici/issues/1447\n  get isMockActive () {\n    return this[kIsMockActive]\n  }\n\n  [kMockAgentSet] (origin, dispatcher) {\n    this[kClients].set(origin, dispatcher)\n  }\n\n  [kFactory] (origin) {\n    const mockOptions = Object.assign({ agent: this }, this[kOptions])\n    return this[kOptions] && this[kOptions].connections === 1\n      ? new MockClient(origin, mockOptions)\n      : new MockPool(origin, mockOptions)\n  }\n\n  [kMockAgentGet] (origin) {\n    // First check if we can immediately find it\n    const client = this[kClients].get(origin)\n    if (client) {\n      return client\n    }\n\n    // If the origin is not a string create a dummy parent pool and return to user\n    if (typeof origin !== 'string') {\n      const dispatcher = this[kFactory]('http://localhost:9999')\n      this[kMockAgentSet](origin, dispatcher)\n      return dispatcher\n    }\n\n    // If we match, create a pool and assign the same dispatches\n    for (const [keyMatcher, nonExplicitDispatcher] of Array.from(this[kClients])) {\n      if (nonExplicitDispatcher && typeof keyMatcher !== 'string' && matchValue(keyMatcher, origin)) {\n        const dispatcher = this[kFactory](origin)\n        this[kMockAgentSet](origin, dispatcher)\n        dispatcher[kDispatches] = nonExplicitDispatcher[kDispatches]\n        return dispatcher\n      }\n    }\n  }\n\n  [kGetNetConnect] () {\n    return this[kNetConnect]\n  }\n\n  pendingInterceptors () {\n    const mockAgentClients = this[kClients]\n\n    return Array.from(mockAgentClients.entries())\n      .flatMap(([origin, scope]) => scope[kDispatches].map(dispatch => ({ ...dispatch, origin })))\n      .filter(({ pending }) => pending)\n  }\n\n  assertNoPendingInterceptors ({ pendingInterceptorsFormatter = new PendingInterceptorsFormatter() } = {}) {\n    const pending = this.pendingInterceptors()\n\n    if (pending.length === 0) {\n      return\n    }\n\n    const pluralizer = new Pluralizer('interceptor', 'interceptors').pluralize(pending.length)\n\n    throw new UndiciError(`\n${pluralizer.count} ${pluralizer.noun} ${pluralizer.is} pending:\n\n${pendingInterceptorsFormatter.format(pending)}\n`.trim())\n  }\n}\n\nmodule.exports = MockAgent\n", "'use strict'\n\n// We include a version number for the Dispatcher API. In case of breaking changes,\n// this version number must be increased to avoid conflicts.\nconst globalDispatcher = Symbol.for('undici.globalDispatcher.1')\nconst { InvalidArgumentError } = require('./core/errors')\nconst Agent = require('./dispatcher/agent')\n\nif (getGlobalDispatcher() === undefined) {\n  setGlobalDispatcher(new Agent())\n}\n\nfunction setGlobalDispatcher (agent) {\n  if (!agent || typeof agent.dispatch !== 'function') {\n    throw new InvalidArgumentError('Argument agent must implement Agent')\n  }\n  Object.defineProperty(globalThis, globalDispatcher, {\n    value: agent,\n    writable: true,\n    enumerable: false,\n    configurable: false\n  })\n}\n\nfunction getGlobalDispatcher () {\n  return globalThis[globalDispatcher]\n}\n\nmodule.exports = {\n  setGlobalDispatcher,\n  getGlobalDispatcher\n}\n", "'use strict'\n\nmodule.exports = class DecoratorHandler {\n  #handler\n\n  constructor (handler) {\n    if (typeof handler !== 'object' || handler === null) {\n      throw new TypeError('handler must be an object')\n    }\n    this.#handler = handler\n  }\n\n  onConnect (...args) {\n    return this.#handler.onConnect?.(...args)\n  }\n\n  onError (...args) {\n    return this.#handler.onError?.(...args)\n  }\n\n  onUpgrade (...args) {\n    return this.#handler.onUpgrade?.(...args)\n  }\n\n  onResponseStarted (...args) {\n    return this.#handler.onResponseStarted?.(...args)\n  }\n\n  onHeaders (...args) {\n    return this.#handler.onHeaders?.(...args)\n  }\n\n  onData (...args) {\n    return this.#handler.onData?.(...args)\n  }\n\n  onComplete (...args) {\n    return this.#handler.onComplete?.(...args)\n  }\n\n  onBodySent (...args) {\n    return this.#handler.onBodySent?.(...args)\n  }\n}\n", "'use strict'\nconst RedirectHandler = require('../handler/redirect-handler')\n\nmodule.exports = opts => {\n  const globalMaxRedirections = opts?.maxRedirections\n  return dispatch => {\n    return function redirectInterceptor (opts, handler) {\n      const { maxRedirections = globalMaxRedirections, ...baseOpts } = opts\n\n      if (!maxRedirections) {\n        return dispatch(opts, handler)\n      }\n\n      const redirectHandler = new RedirectHandler(\n        dispatch,\n        maxRedirections,\n        opts,\n        handler\n      )\n\n      return dispatch(baseOpts, redirectHandler)\n    }\n  }\n}\n", "'use strict'\nconst RetryHandler = require('../handler/retry-handler')\n\nmodule.exports = globalOpts => {\n  return dispatch => {\n    return function retryInterceptor (opts, handler) {\n      return dispatch(\n        opts,\n        new RetryHandler(\n          { ...opts, retryOptions: { ...globalOpts, ...opts.retryOptions } },\n          {\n            handler,\n            dispatch\n          }\n        )\n      )\n    }\n  }\n}\n", "'use strict'\n\nconst util = require('../core/util')\nconst { InvalidArgumentError, RequestAbortedError } = require('../core/errors')\nconst DecoratorHandler = require('../handler/decorator-handler')\n\nclass DumpHandler extends DecoratorHandler {\n  #maxSize = 1024 * 1024\n  #abort = null\n  #dumped = false\n  #aborted = false\n  #size = 0\n  #reason = null\n  #handler = null\n\n  constructor ({ maxSize }, handler) {\n    super(handler)\n\n    if (maxSize != null && (!Number.isFinite(maxSize) || maxSize < 1)) {\n      throw new InvalidArgumentError('maxSize must be a number greater than 0')\n    }\n\n    this.#maxSize = maxSize ?? this.#maxSize\n    this.#handler = handler\n  }\n\n  onConnect (abort) {\n    this.#abort = abort\n\n    this.#handler.onConnect(this.#customAbort.bind(this))\n  }\n\n  #customAbort (reason) {\n    this.#aborted = true\n    this.#reason = reason\n  }\n\n  // TODO: will require adjustment after new hooks are out\n  onHeaders (statusCode, rawHeaders, resume, statusMessage) {\n    const headers = util.parseHeaders(rawHeaders)\n    const contentLength = headers['content-length']\n\n    if (contentLength != null && contentLength > this.#maxSize) {\n      throw new RequestAbortedError(\n        `Response size (${contentLength}) larger than maxSize (${\n          this.#maxSize\n        })`\n      )\n    }\n\n    if (this.#aborted) {\n      return true\n    }\n\n    return this.#handler.onHeaders(\n      statusCode,\n      rawHeaders,\n      resume,\n      statusMessage\n    )\n  }\n\n  onError (err) {\n    if (this.#dumped) {\n      return\n    }\n\n    err = this.#reason ?? err\n\n    this.#handler.onError(err)\n  }\n\n  onData (chunk) {\n    this.#size = this.#size + chunk.length\n\n    if (this.#size >= this.#maxSize) {\n      this.#dumped = true\n\n      if (this.#aborted) {\n        this.#handler.onError(this.#reason)\n      } else {\n        this.#handler.onComplete([])\n      }\n    }\n\n    return true\n  }\n\n  onComplete (trailers) {\n    if (this.#dumped) {\n      return\n    }\n\n    if (this.#aborted) {\n      this.#handler.onError(this.reason)\n      return\n    }\n\n    this.#handler.onComplete(trailers)\n  }\n}\n\nfunction createDumpInterceptor (\n  { maxSize: defaultMaxSize } = {\n    maxSize: 1024 * 1024\n  }\n) {\n  return dispatch => {\n    return function Intercept (opts, handler) {\n      const { dumpMaxSize = defaultMaxSize } =\n        opts\n\n      const dumpHandler = new DumpHandler(\n        { maxSize: dumpMaxSize },\n        handler\n      )\n\n      return dispatch(opts, dumpHandler)\n    }\n  }\n}\n\nmodule.exports = createDumpInterceptor\n", "'use strict'\nconst { isIP } = require('node:net')\nconst { lookup } = require('node:dns')\nconst DecoratorHandler = require('../handler/decorator-handler')\nconst { InvalidArgumentError, InformationalError } = require('../core/errors')\nconst maxInt = Math.pow(2, 31) - 1\n\nclass DNSInstance {\n  #maxTTL = 0\n  #maxItems = 0\n  #records = new Map()\n  dualStack = true\n  affinity = null\n  lookup = null\n  pick = null\n\n  constructor (opts) {\n    this.#maxTTL = opts.maxTTL\n    this.#maxItems = opts.maxItems\n    this.dualStack = opts.dualStack\n    this.affinity = opts.affinity\n    this.lookup = opts.lookup ?? this.#defaultLookup\n    this.pick = opts.pick ?? this.#defaultPick\n  }\n\n  get full () {\n    return this.#records.size === this.#maxItems\n  }\n\n  runLookup (origin, opts, cb) {\n    const ips = this.#records.get(origin.hostname)\n\n    // If full, we just return the origin\n    if (ips == null && this.full) {\n      cb(null, origin.origin)\n      return\n    }\n\n    const newOpts = {\n      affinity: this.affinity,\n      dualStack: this.dualStack,\n      lookup: this.lookup,\n      pick: this.pick,\n      ...opts.dns,\n      maxTTL: this.#maxTTL,\n      maxItems: this.#maxItems\n    }\n\n    // If no IPs we lookup\n    if (ips == null) {\n      this.lookup(origin, newOpts, (err, addresses) => {\n        if (err || addresses == null || addresses.length === 0) {\n          cb(err ?? new InformationalError('No DNS entries found'))\n          return\n        }\n\n        this.setRecords(origin, addresses)\n        const records = this.#records.get(origin.hostname)\n\n        const ip = this.pick(\n          origin,\n          records,\n          newOpts.affinity\n        )\n\n        let port\n        if (typeof ip.port === 'number') {\n          port = `:${ip.port}`\n        } else if (origin.port !== '') {\n          port = `:${origin.port}`\n        } else {\n          port = ''\n        }\n\n        cb(\n          null,\n          `${origin.protocol}//${\n            ip.family === 6 ? `[${ip.address}]` : ip.address\n          }${port}`\n        )\n      })\n    } else {\n      // If there's IPs we pick\n      const ip = this.pick(\n        origin,\n        ips,\n        newOpts.affinity\n      )\n\n      // If no IPs we lookup - deleting old records\n      if (ip == null) {\n        this.#records.delete(origin.hostname)\n        this.runLookup(origin, opts, cb)\n        return\n      }\n\n      let port\n      if (typeof ip.port === 'number') {\n        port = `:${ip.port}`\n      } else if (origin.port !== '') {\n        port = `:${origin.port}`\n      } else {\n        port = ''\n      }\n\n      cb(\n        null,\n        `${origin.protocol}//${\n          ip.family === 6 ? `[${ip.address}]` : ip.address\n        }${port}`\n      )\n    }\n  }\n\n  #defaultLookup (origin, opts, cb) {\n    lookup(\n      origin.hostname,\n      {\n        all: true,\n        family: this.dualStack === false ? this.affinity : 0,\n        order: 'ipv4first'\n      },\n      (err, addresses) => {\n        if (err) {\n          return cb(err)\n        }\n\n        const results = new Map()\n\n        for (const addr of addresses) {\n          // On linux we found duplicates, we attempt to remove them with\n          // the latest record\n          results.set(`${addr.address}:${addr.family}`, addr)\n        }\n\n        cb(null, results.values())\n      }\n    )\n  }\n\n  #defaultPick (origin, hostnameRecords, affinity) {\n    let ip = null\n    const { records, offset } = hostnameRecords\n\n    let family\n    if (this.dualStack) {\n      if (affinity == null) {\n        // Balance between ip families\n        if (offset == null || offset === maxInt) {\n          hostnameRecords.offset = 0\n          affinity = 4\n        } else {\n          hostnameRecords.offset++\n          affinity = (hostnameRecords.offset & 1) === 1 ? 6 : 4\n        }\n      }\n\n      if (records[affinity] != null && records[affinity].ips.length > 0) {\n        family = records[affinity]\n      } else {\n        family = records[affinity === 4 ? 6 : 4]\n      }\n    } else {\n      family = records[affinity]\n    }\n\n    // If no IPs we return null\n    if (family == null || family.ips.length === 0) {\n      return ip\n    }\n\n    if (family.offset == null || family.offset === maxInt) {\n      family.offset = 0\n    } else {\n      family.offset++\n    }\n\n    const position = family.offset % family.ips.length\n    ip = family.ips[position] ?? null\n\n    if (ip == null) {\n      return ip\n    }\n\n    if (Date.now() - ip.timestamp > ip.ttl) { // record TTL is already in ms\n      // We delete expired records\n      // It is possible that they have different TTL, so we manage them individually\n      family.ips.splice(position, 1)\n      return this.pick(origin, hostnameRecords, affinity)\n    }\n\n    return ip\n  }\n\n  setRecords (origin, addresses) {\n    const timestamp = Date.now()\n    const records = { records: { 4: null, 6: null } }\n    for (const record of addresses) {\n      record.timestamp = timestamp\n      if (typeof record.ttl === 'number') {\n        // The record TTL is expected to be in ms\n        record.ttl = Math.min(record.ttl, this.#maxTTL)\n      } else {\n        record.ttl = this.#maxTTL\n      }\n\n      const familyRecords = records.records[record.family] ?? { ips: [] }\n\n      familyRecords.ips.push(record)\n      records.records[record.family] = familyRecords\n    }\n\n    this.#records.set(origin.hostname, records)\n  }\n\n  getHandler (meta, opts) {\n    return new DNSDispatchHandler(this, meta, opts)\n  }\n}\n\nclass DNSDispatchHandler extends DecoratorHandler {\n  #state = null\n  #opts = null\n  #dispatch = null\n  #handler = null\n  #origin = null\n\n  constructor (state, { origin, handler, dispatch }, opts) {\n    super(handler)\n    this.#origin = origin\n    this.#handler = handler\n    this.#opts = { ...opts }\n    this.#state = state\n    this.#dispatch = dispatch\n  }\n\n  onError (err) {\n    switch (err.code) {\n      case 'ETIMEDOUT':\n      case 'ECONNREFUSED': {\n        if (this.#state.dualStack) {\n          // We delete the record and retry\n          this.#state.runLookup(this.#origin, this.#opts, (err, newOrigin) => {\n            if (err) {\n              return this.#handler.onError(err)\n            }\n\n            const dispatchOpts = {\n              ...this.#opts,\n              origin: newOrigin\n            }\n\n            this.#dispatch(dispatchOpts, this)\n          })\n\n          // if dual-stack disabled, we error out\n          return\n        }\n\n        this.#handler.onError(err)\n        return\n      }\n      case 'ENOTFOUND':\n        this.#state.deleteRecord(this.#origin)\n      // eslint-disable-next-line no-fallthrough\n      default:\n        this.#handler.onError(err)\n        break\n    }\n  }\n}\n\nmodule.exports = interceptorOpts => {\n  if (\n    interceptorOpts?.maxTTL != null &&\n    (typeof interceptorOpts?.maxTTL !== 'number' || interceptorOpts?.maxTTL < 0)\n  ) {\n    throw new InvalidArgumentError('Invalid maxTTL. Must be a positive number')\n  }\n\n  if (\n    interceptorOpts?.maxItems != null &&\n    (typeof interceptorOpts?.maxItems !== 'number' ||\n      interceptorOpts?.maxItems < 1)\n  ) {\n    throw new InvalidArgumentError(\n      'Invalid maxItems. Must be a positive number and greater than zero'\n    )\n  }\n\n  if (\n    interceptorOpts?.affinity != null &&\n    interceptorOpts?.affinity !== 4 &&\n    interceptorOpts?.affinity !== 6\n  ) {\n    throw new InvalidArgumentError('Invalid affinity. Must be either 4 or 6')\n  }\n\n  if (\n    interceptorOpts?.dualStack != null &&\n    typeof interceptorOpts?.dualStack !== 'boolean'\n  ) {\n    throw new InvalidArgumentError('Invalid dualStack. Must be a boolean')\n  }\n\n  if (\n    interceptorOpts?.lookup != null &&\n    typeof interceptorOpts?.lookup !== 'function'\n  ) {\n    throw new InvalidArgumentError('Invalid lookup. Must be a function')\n  }\n\n  if (\n    interceptorOpts?.pick != null &&\n    typeof interceptorOpts?.pick !== 'function'\n  ) {\n    throw new InvalidArgumentError('Invalid pick. Must be a function')\n  }\n\n  const dualStack = interceptorOpts?.dualStack ?? true\n  let affinity\n  if (dualStack) {\n    affinity = interceptorOpts?.affinity ?? null\n  } else {\n    affinity = interceptorOpts?.affinity ?? 4\n  }\n\n  const opts = {\n    maxTTL: interceptorOpts?.maxTTL ?? 10e3, // Expressed in ms\n    lookup: interceptorOpts?.lookup ?? null,\n    pick: interceptorOpts?.pick ?? null,\n    dualStack,\n    affinity,\n    maxItems: interceptorOpts?.maxItems ?? Infinity\n  }\n\n  const instance = new DNSInstance(opts)\n\n  return dispatch => {\n    return function dnsInterceptor (origDispatchOpts, handler) {\n      const origin =\n        origDispatchOpts.origin.constructor === URL\n          ? origDispatchOpts.origin\n          : new URL(origDispatchOpts.origin)\n\n      if (isIP(origin.hostname) !== 0) {\n        return dispatch(origDispatchOpts, handler)\n      }\n\n      instance.runLookup(origin, origDispatchOpts, (err, newOrigin) => {\n        if (err) {\n          return handler.onError(err)\n        }\n\n        let dispatchOpts = null\n        dispatchOpts = {\n          ...origDispatchOpts,\n          servername: origin.hostname, // For SNI on TLS\n          origin: newOrigin,\n          headers: {\n            host: origin.hostname,\n            ...origDispatchOpts.headers\n          }\n        }\n\n        dispatch(\n          dispatchOpts,\n          instance.getHandler({ origin, dispatch, handler }, origDispatchOpts)\n        )\n      })\n\n      return true\n    }\n  }\n}\n", "// https://github.com/Ethan-Arrowood/undici-fetch\n\n'use strict'\n\nconst { kConstruct } = require('../../core/symbols')\nconst { kEnumerableProperty } = require('../../core/util')\nconst {\n  iteratorMixin,\n  isValidHeaderName,\n  isValidHeaderValue\n} = require('./util')\nconst { webidl } = require('./webidl')\nconst assert = require('node:assert')\nconst util = require('node:util')\n\nconst kHeadersMap = Symbol('headers map')\nconst kHeadersSortedMap = Symbol('headers map sorted')\n\n/**\n * @param {number} code\n */\nfunction isHTTPWhiteSpaceCharCode (code) {\n  return code === 0x00a || code === 0x00d || code === 0x009 || code === 0x020\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-header-value-normalize\n * @param {string} potentialValue\n */\nfunction headerValueNormalize (potentialValue) {\n  //  To normalize a byte sequence potentialValue, remove\n  //  any leading and trailing HTTP whitespace bytes from\n  //  potentialValue.\n  let i = 0; let j = potentialValue.length\n\n  while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(j - 1))) --j\n  while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(i))) ++i\n\n  return i === 0 && j === potentialValue.length ? potentialValue : potentialValue.substring(i, j)\n}\n\nfunction fill (headers, object) {\n  // To fill a Headers object headers with a given object object, run these steps:\n\n  // 1. If object is a sequence, then for each header in object:\n  // Note: webidl conversion to array has already been done.\n  if (Array.isArray(object)) {\n    for (let i = 0; i < object.length; ++i) {\n      const header = object[i]\n      // 1. If header does not contain exactly two items, then throw a TypeError.\n      if (header.length !== 2) {\n        throw webidl.errors.exception({\n          header: 'Headers constructor',\n          message: `expected name/value pair to be length 2, found ${header.length}.`\n        })\n      }\n\n      // 2. Append (header\u2019s first item, header\u2019s second item) to headers.\n      appendHeader(headers, header[0], header[1])\n    }\n  } else if (typeof object === 'object' && object !== null) {\n    // Note: null should throw\n\n    // 2. Otherwise, object is a record, then for each key \u2192 value in object,\n    //    append (key, value) to headers\n    const keys = Object.keys(object)\n    for (let i = 0; i < keys.length; ++i) {\n      appendHeader(headers, keys[i], object[keys[i]])\n    }\n  } else {\n    throw webidl.errors.conversionFailed({\n      prefix: 'Headers constructor',\n      argument: 'Argument 1',\n      types: ['sequence<sequence<ByteString>>', 'record<ByteString, ByteString>']\n    })\n  }\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-headers-append\n */\nfunction appendHeader (headers, name, value) {\n  // 1. Normalize value.\n  value = headerValueNormalize(value)\n\n  // 2. If name is not a header name or value is not a\n  //    header value, then throw a TypeError.\n  if (!isValidHeaderName(name)) {\n    throw webidl.errors.invalidArgument({\n      prefix: 'Headers.append',\n      value: name,\n      type: 'header name'\n    })\n  } else if (!isValidHeaderValue(value)) {\n    throw webidl.errors.invalidArgument({\n      prefix: 'Headers.append',\n      value,\n      type: 'header value'\n    })\n  }\n\n  // 3. If headers\u2019s guard is \"immutable\", then throw a TypeError.\n  // 4. Otherwise, if headers\u2019s guard is \"request\" and name is a\n  //    forbidden header name, return.\n  // 5. Otherwise, if headers\u2019s guard is \"request-no-cors\":\n  //    TODO\n  // Note: undici does not implement forbidden header names\n  if (getHeadersGuard(headers) === 'immutable') {\n    throw new TypeError('immutable')\n  }\n\n  // 6. Otherwise, if headers\u2019s guard is \"response\" and name is a\n  //    forbidden response-header name, return.\n\n  // 7. Append (name, value) to headers\u2019s header list.\n  return getHeadersList(headers).append(name, value, false)\n\n  // 8. If headers\u2019s guard is \"request-no-cors\", then remove\n  //    privileged no-CORS request headers from headers\n}\n\nfunction compareHeaderName (a, b) {\n  return a[0] < b[0] ? -1 : 1\n}\n\nclass HeadersList {\n  /** @type {[string, string][]|null} */\n  cookies = null\n\n  constructor (init) {\n    if (init instanceof HeadersList) {\n      this[kHeadersMap] = new Map(init[kHeadersMap])\n      this[kHeadersSortedMap] = init[kHeadersSortedMap]\n      this.cookies = init.cookies === null ? null : [...init.cookies]\n    } else {\n      this[kHeadersMap] = new Map(init)\n      this[kHeadersSortedMap] = null\n    }\n  }\n\n  /**\n   * @see https://fetch.spec.whatwg.org/#header-list-contains\n   * @param {string} name\n   * @param {boolean} isLowerCase\n   */\n  contains (name, isLowerCase) {\n    // A header list list contains a header name name if list\n    // contains a header whose name is a byte-case-insensitive\n    // match for name.\n\n    return this[kHeadersMap].has(isLowerCase ? name : name.toLowerCase())\n  }\n\n  clear () {\n    this[kHeadersMap].clear()\n    this[kHeadersSortedMap] = null\n    this.cookies = null\n  }\n\n  /**\n   * @see https://fetch.spec.whatwg.org/#concept-header-list-append\n   * @param {string} name\n   * @param {string} value\n   * @param {boolean} isLowerCase\n   */\n  append (name, value, isLowerCase) {\n    this[kHeadersSortedMap] = null\n\n    // 1. If list contains name, then set name to the first such\n    //    header\u2019s name.\n    const lowercaseName = isLowerCase ? name : name.toLowerCase()\n    const exists = this[kHeadersMap].get(lowercaseName)\n\n    // 2. Append (name, value) to list.\n    if (exists) {\n      const delimiter = lowercaseName === 'cookie' ? '; ' : ', '\n      this[kHeadersMap].set(lowercaseName, {\n        name: exists.name,\n        value: `${exists.value}${delimiter}${value}`\n      })\n    } else {\n      this[kHeadersMap].set(lowercaseName, { name, value })\n    }\n\n    if (lowercaseName === 'set-cookie') {\n      (this.cookies ??= []).push(value)\n    }\n  }\n\n  /**\n   * @see https://fetch.spec.whatwg.org/#concept-header-list-set\n   * @param {string} name\n   * @param {string} value\n   * @param {boolean} isLowerCase\n   */\n  set (name, value, isLowerCase) {\n    this[kHeadersSortedMap] = null\n    const lowercaseName = isLowerCase ? name : name.toLowerCase()\n\n    if (lowercaseName === 'set-cookie') {\n      this.cookies = [value]\n    }\n\n    // 1. If list contains name, then set the value of\n    //    the first such header to value and remove the\n    //    others.\n    // 2. Otherwise, append header (name, value) to list.\n    this[kHeadersMap].set(lowercaseName, { name, value })\n  }\n\n  /**\n   * @see https://fetch.spec.whatwg.org/#concept-header-list-delete\n   * @param {string} name\n   * @param {boolean} isLowerCase\n   */\n  delete (name, isLowerCase) {\n    this[kHeadersSortedMap] = null\n    if (!isLowerCase) name = name.toLowerCase()\n\n    if (name === 'set-cookie') {\n      this.cookies = null\n    }\n\n    this[kHeadersMap].delete(name)\n  }\n\n  /**\n   * @see https://fetch.spec.whatwg.org/#concept-header-list-get\n   * @param {string} name\n   * @param {boolean} isLowerCase\n   * @returns {string | null}\n   */\n  get (name, isLowerCase) {\n    // 1. If list does not contain name, then return null.\n    // 2. Return the values of all headers in list whose name\n    //    is a byte-case-insensitive match for name,\n    //    separated from each other by 0x2C 0x20, in order.\n    return this[kHeadersMap].get(isLowerCase ? name : name.toLowerCase())?.value ?? null\n  }\n\n  * [Symbol.iterator] () {\n    // use the lowercased name\n    for (const { 0: name, 1: { value } } of this[kHeadersMap]) {\n      yield [name, value]\n    }\n  }\n\n  get entries () {\n    const headers = {}\n\n    if (this[kHeadersMap].size !== 0) {\n      for (const { name, value } of this[kHeadersMap].values()) {\n        headers[name] = value\n      }\n    }\n\n    return headers\n  }\n\n  rawValues () {\n    return this[kHeadersMap].values()\n  }\n\n  get entriesList () {\n    const headers = []\n\n    if (this[kHeadersMap].size !== 0) {\n      for (const { 0: lowerName, 1: { name, value } } of this[kHeadersMap]) {\n        if (lowerName === 'set-cookie') {\n          for (const cookie of this.cookies) {\n            headers.push([name, cookie])\n          }\n        } else {\n          headers.push([name, value])\n        }\n      }\n    }\n\n    return headers\n  }\n\n  // https://fetch.spec.whatwg.org/#convert-header-names-to-a-sorted-lowercase-set\n  toSortedArray () {\n    const size = this[kHeadersMap].size\n    const array = new Array(size)\n    // In most cases, you will use the fast-path.\n    // fast-path: Use binary insertion sort for small arrays.\n    if (size <= 32) {\n      if (size === 0) {\n        // If empty, it is an empty array. To avoid the first index assignment.\n        return array\n      }\n      // Improve performance by unrolling loop and avoiding double-loop.\n      // Double-loop-less version of the binary insertion sort.\n      const iterator = this[kHeadersMap][Symbol.iterator]()\n      const firstValue = iterator.next().value\n      // set [name, value] to first index.\n      array[0] = [firstValue[0], firstValue[1].value]\n      // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine\n      // 3.2.2. Assert: value is non-null.\n      assert(firstValue[1].value !== null)\n      for (\n        let i = 1, j = 0, right = 0, left = 0, pivot = 0, x, value;\n        i < size;\n        ++i\n      ) {\n        // get next value\n        value = iterator.next().value\n        // set [name, value] to current index.\n        x = array[i] = [value[0], value[1].value]\n        // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine\n        // 3.2.2. Assert: value is non-null.\n        assert(x[1] !== null)\n        left = 0\n        right = i\n        // binary search\n        while (left < right) {\n          // middle index\n          pivot = left + ((right - left) >> 1)\n          // compare header name\n          if (array[pivot][0] <= x[0]) {\n            left = pivot + 1\n          } else {\n            right = pivot\n          }\n        }\n        if (i !== pivot) {\n          j = i\n          while (j > left) {\n            array[j] = array[--j]\n          }\n          array[left] = x\n        }\n      }\n      /* c8 ignore next 4 */\n      if (!iterator.next().done) {\n        // This is for debugging and will never be called.\n        throw new TypeError('Unreachable')\n      }\n      return array\n    } else {\n      // This case would be a rare occurrence.\n      // slow-path: fallback\n      let i = 0\n      for (const { 0: name, 1: { value } } of this[kHeadersMap]) {\n        array[i++] = [name, value]\n        // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine\n        // 3.2.2. Assert: value is non-null.\n        assert(value !== null)\n      }\n      return array.sort(compareHeaderName)\n    }\n  }\n}\n\n// https://fetch.spec.whatwg.org/#headers-class\nclass Headers {\n  #guard\n  #headersList\n\n  constructor (init = undefined) {\n    webidl.util.markAsUncloneable(this)\n\n    if (init === kConstruct) {\n      return\n    }\n\n    this.#headersList = new HeadersList()\n\n    // The new Headers(init) constructor steps are:\n\n    // 1. Set this\u2019s guard to \"none\".\n    this.#guard = 'none'\n\n    // 2. If init is given, then fill this with init.\n    if (init !== undefined) {\n      init = webidl.converters.HeadersInit(init, 'Headers contructor', 'init')\n      fill(this, init)\n    }\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-headers-append\n  append (name, value) {\n    webidl.brandCheck(this, Headers)\n\n    webidl.argumentLengthCheck(arguments, 2, 'Headers.append')\n\n    const prefix = 'Headers.append'\n    name = webidl.converters.ByteString(name, prefix, 'name')\n    value = webidl.converters.ByteString(value, prefix, 'value')\n\n    return appendHeader(this, name, value)\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-headers-delete\n  delete (name) {\n    webidl.brandCheck(this, Headers)\n\n    webidl.argumentLengthCheck(arguments, 1, 'Headers.delete')\n\n    const prefix = 'Headers.delete'\n    name = webidl.converters.ByteString(name, prefix, 'name')\n\n    // 1. If name is not a header name, then throw a TypeError.\n    if (!isValidHeaderName(name)) {\n      throw webidl.errors.invalidArgument({\n        prefix: 'Headers.delete',\n        value: name,\n        type: 'header name'\n      })\n    }\n\n    // 2. If this\u2019s guard is \"immutable\", then throw a TypeError.\n    // 3. Otherwise, if this\u2019s guard is \"request\" and name is a\n    //    forbidden header name, return.\n    // 4. Otherwise, if this\u2019s guard is \"request-no-cors\", name\n    //    is not a no-CORS-safelisted request-header name, and\n    //    name is not a privileged no-CORS request-header name,\n    //    return.\n    // 5. Otherwise, if this\u2019s guard is \"response\" and name is\n    //    a forbidden response-header name, return.\n    // Note: undici does not implement forbidden header names\n    if (this.#guard === 'immutable') {\n      throw new TypeError('immutable')\n    }\n\n    // 6. If this\u2019s header list does not contain name, then\n    //    return.\n    if (!this.#headersList.contains(name, false)) {\n      return\n    }\n\n    // 7. Delete name from this\u2019s header list.\n    // 8. If this\u2019s guard is \"request-no-cors\", then remove\n    //    privileged no-CORS request headers from this.\n    this.#headersList.delete(name, false)\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-headers-get\n  get (name) {\n    webidl.brandCheck(this, Headers)\n\n    webidl.argumentLengthCheck(arguments, 1, 'Headers.get')\n\n    const prefix = 'Headers.get'\n    name = webidl.converters.ByteString(name, prefix, 'name')\n\n    // 1. If name is not a header name, then throw a TypeError.\n    if (!isValidHeaderName(name)) {\n      throw webidl.errors.invalidArgument({\n        prefix,\n        value: name,\n        type: 'header name'\n      })\n    }\n\n    // 2. Return the result of getting name from this\u2019s header\n    //    list.\n    return this.#headersList.get(name, false)\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-headers-has\n  has (name) {\n    webidl.brandCheck(this, Headers)\n\n    webidl.argumentLengthCheck(arguments, 1, 'Headers.has')\n\n    const prefix = 'Headers.has'\n    name = webidl.converters.ByteString(name, prefix, 'name')\n\n    // 1. If name is not a header name, then throw a TypeError.\n    if (!isValidHeaderName(name)) {\n      throw webidl.errors.invalidArgument({\n        prefix,\n        value: name,\n        type: 'header name'\n      })\n    }\n\n    // 2. Return true if this\u2019s header list contains name;\n    //    otherwise false.\n    return this.#headersList.contains(name, false)\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-headers-set\n  set (name, value) {\n    webidl.brandCheck(this, Headers)\n\n    webidl.argumentLengthCheck(arguments, 2, 'Headers.set')\n\n    const prefix = 'Headers.set'\n    name = webidl.converters.ByteString(name, prefix, 'name')\n    value = webidl.converters.ByteString(value, prefix, 'value')\n\n    // 1. Normalize value.\n    value = headerValueNormalize(value)\n\n    // 2. If name is not a header name or value is not a\n    //    header value, then throw a TypeError.\n    if (!isValidHeaderName(name)) {\n      throw webidl.errors.invalidArgument({\n        prefix,\n        value: name,\n        type: 'header name'\n      })\n    } else if (!isValidHeaderValue(value)) {\n      throw webidl.errors.invalidArgument({\n        prefix,\n        value,\n        type: 'header value'\n      })\n    }\n\n    // 3. If this\u2019s guard is \"immutable\", then throw a TypeError.\n    // 4. Otherwise, if this\u2019s guard is \"request\" and name is a\n    //    forbidden header name, return.\n    // 5. Otherwise, if this\u2019s guard is \"request-no-cors\" and\n    //    name/value is not a no-CORS-safelisted request-header,\n    //    return.\n    // 6. Otherwise, if this\u2019s guard is \"response\" and name is a\n    //    forbidden response-header name, return.\n    // Note: undici does not implement forbidden header names\n    if (this.#guard === 'immutable') {\n      throw new TypeError('immutable')\n    }\n\n    // 7. Set (name, value) in this\u2019s header list.\n    // 8. If this\u2019s guard is \"request-no-cors\", then remove\n    //    privileged no-CORS request headers from this\n    this.#headersList.set(name, value, false)\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-headers-getsetcookie\n  getSetCookie () {\n    webidl.brandCheck(this, Headers)\n\n    // 1. If this\u2019s header list does not contain `Set-Cookie`, then return \u00AB \u00BB.\n    // 2. Return the values of all headers in this\u2019s header list whose name is\n    //    a byte-case-insensitive match for `Set-Cookie`, in order.\n\n    const list = this.#headersList.cookies\n\n    if (list) {\n      return [...list]\n    }\n\n    return []\n  }\n\n  // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine\n  get [kHeadersSortedMap] () {\n    if (this.#headersList[kHeadersSortedMap]) {\n      return this.#headersList[kHeadersSortedMap]\n    }\n\n    // 1. Let headers be an empty list of headers with the key being the name\n    //    and value the value.\n    const headers = []\n\n    // 2. Let names be the result of convert header names to a sorted-lowercase\n    //    set with all the names of the headers in list.\n    const names = this.#headersList.toSortedArray()\n\n    const cookies = this.#headersList.cookies\n\n    // fast-path\n    if (cookies === null || cookies.length === 1) {\n      // Note: The non-null assertion of value has already been done by `HeadersList#toSortedArray`\n      return (this.#headersList[kHeadersSortedMap] = names)\n    }\n\n    // 3. For each name of names:\n    for (let i = 0; i < names.length; ++i) {\n      const { 0: name, 1: value } = names[i]\n      // 1. If name is `set-cookie`, then:\n      if (name === 'set-cookie') {\n        // 1. Let values be a list of all values of headers in list whose name\n        //    is a byte-case-insensitive match for name, in order.\n\n        // 2. For each value of values:\n        // 1. Append (name, value) to headers.\n        for (let j = 0; j < cookies.length; ++j) {\n          headers.push([name, cookies[j]])\n        }\n      } else {\n        // 2. Otherwise:\n\n        // 1. Let value be the result of getting name from list.\n\n        // 2. Assert: value is non-null.\n        // Note: This operation was done by `HeadersList#toSortedArray`.\n\n        // 3. Append (name, value) to headers.\n        headers.push([name, value])\n      }\n    }\n\n    // 4. Return headers.\n    return (this.#headersList[kHeadersSortedMap] = headers)\n  }\n\n  [util.inspect.custom] (depth, options) {\n    options.depth ??= depth\n\n    return `Headers ${util.formatWithOptions(options, this.#headersList.entries)}`\n  }\n\n  static getHeadersGuard (o) {\n    return o.#guard\n  }\n\n  static setHeadersGuard (o, guard) {\n    o.#guard = guard\n  }\n\n  static getHeadersList (o) {\n    return o.#headersList\n  }\n\n  static setHeadersList (o, list) {\n    o.#headersList = list\n  }\n}\n\nconst { getHeadersGuard, setHeadersGuard, getHeadersList, setHeadersList } = Headers\nReflect.deleteProperty(Headers, 'getHeadersGuard')\nReflect.deleteProperty(Headers, 'setHeadersGuard')\nReflect.deleteProperty(Headers, 'getHeadersList')\nReflect.deleteProperty(Headers, 'setHeadersList')\n\niteratorMixin('Headers', Headers, kHeadersSortedMap, 0, 1)\n\nObject.defineProperties(Headers.prototype, {\n  append: kEnumerableProperty,\n  delete: kEnumerableProperty,\n  get: kEnumerableProperty,\n  has: kEnumerableProperty,\n  set: kEnumerableProperty,\n  getSetCookie: kEnumerableProperty,\n  [Symbol.toStringTag]: {\n    value: 'Headers',\n    configurable: true\n  },\n  [util.inspect.custom]: {\n    enumerable: false\n  }\n})\n\nwebidl.converters.HeadersInit = function (V, prefix, argument) {\n  if (webidl.util.Type(V) === 'Object') {\n    const iterator = Reflect.get(V, Symbol.iterator)\n\n    // A work-around to ensure we send the properly-cased Headers when V is a Headers object.\n    // Read https://github.com/nodejs/undici/pull/3159#issuecomment-2075537226 before touching, please.\n    if (!util.types.isProxy(V) && iterator === Headers.prototype.entries) { // Headers object\n      try {\n        return getHeadersList(V).entriesList\n      } catch {\n        // fall-through\n      }\n    }\n\n    if (typeof iterator === 'function') {\n      return webidl.converters['sequence<sequence<ByteString>>'](V, prefix, argument, iterator.bind(V))\n    }\n\n    return webidl.converters['record<ByteString, ByteString>'](V, prefix, argument)\n  }\n\n  throw webidl.errors.conversionFailed({\n    prefix: 'Headers constructor',\n    argument: 'Argument 1',\n    types: ['sequence<sequence<ByteString>>', 'record<ByteString, ByteString>']\n  })\n}\n\nmodule.exports = {\n  fill,\n  // for test.\n  compareHeaderName,\n  Headers,\n  HeadersList,\n  getHeadersGuard,\n  setHeadersGuard,\n  setHeadersList,\n  getHeadersList\n}\n", "'use strict'\n\nconst { Headers, HeadersList, fill, getHeadersGuard, setHeadersGuard, setHeadersList } = require('./headers')\nconst { extractBody, cloneBody, mixinBody, hasFinalizationRegistry, streamRegistry, bodyUnusable } = require('./body')\nconst util = require('../../core/util')\nconst nodeUtil = require('node:util')\nconst { kEnumerableProperty } = util\nconst {\n  isValidReasonPhrase,\n  isCancelled,\n  isAborted,\n  isBlobLike,\n  serializeJavascriptValueToJSONString,\n  isErrorLike,\n  isomorphicEncode,\n  environmentSettingsObject: relevantRealm\n} = require('./util')\nconst {\n  redirectStatusSet,\n  nullBodyStatus\n} = require('./constants')\nconst { kState, kHeaders } = require('./symbols')\nconst { webidl } = require('./webidl')\nconst { FormData } = require('./formdata')\nconst { URLSerializer } = require('./data-url')\nconst { kConstruct } = require('../../core/symbols')\nconst assert = require('node:assert')\nconst { types } = require('node:util')\n\nconst textEncoder = new TextEncoder('utf-8')\n\n// https://fetch.spec.whatwg.org/#response-class\nclass Response {\n  // Creates network error Response.\n  static error () {\n    // The static error() method steps are to return the result of creating a\n    // Response object, given a new network error, \"immutable\", and this\u2019s\n    // relevant Realm.\n    const responseObject = fromInnerResponse(makeNetworkError(), 'immutable')\n\n    return responseObject\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-response-json\n  static json (data, init = {}) {\n    webidl.argumentLengthCheck(arguments, 1, 'Response.json')\n\n    if (init !== null) {\n      init = webidl.converters.ResponseInit(init)\n    }\n\n    // 1. Let bytes the result of running serialize a JavaScript value to JSON bytes on data.\n    const bytes = textEncoder.encode(\n      serializeJavascriptValueToJSONString(data)\n    )\n\n    // 2. Let body be the result of extracting bytes.\n    const body = extractBody(bytes)\n\n    // 3. Let responseObject be the result of creating a Response object, given a new response,\n    //    \"response\", and this\u2019s relevant Realm.\n    const responseObject = fromInnerResponse(makeResponse({}), 'response')\n\n    // 4. Perform initialize a response given responseObject, init, and (body, \"application/json\").\n    initializeResponse(responseObject, init, { body: body[0], type: 'application/json' })\n\n    // 5. Return responseObject.\n    return responseObject\n  }\n\n  // Creates a redirect Response that redirects to url with status status.\n  static redirect (url, status = 302) {\n    webidl.argumentLengthCheck(arguments, 1, 'Response.redirect')\n\n    url = webidl.converters.USVString(url)\n    status = webidl.converters['unsigned short'](status)\n\n    // 1. Let parsedURL be the result of parsing url with current settings\n    // object\u2019s API base URL.\n    // 2. If parsedURL is failure, then throw a TypeError.\n    // TODO: base-URL?\n    let parsedURL\n    try {\n      parsedURL = new URL(url, relevantRealm.settingsObject.baseUrl)\n    } catch (err) {\n      throw new TypeError(`Failed to parse URL from ${url}`, { cause: err })\n    }\n\n    // 3. If status is not a redirect status, then throw a RangeError.\n    if (!redirectStatusSet.has(status)) {\n      throw new RangeError(`Invalid status code ${status}`)\n    }\n\n    // 4. Let responseObject be the result of creating a Response object,\n    // given a new response, \"immutable\", and this\u2019s relevant Realm.\n    const responseObject = fromInnerResponse(makeResponse({}), 'immutable')\n\n    // 5. Set responseObject\u2019s response\u2019s status to status.\n    responseObject[kState].status = status\n\n    // 6. Let value be parsedURL, serialized and isomorphic encoded.\n    const value = isomorphicEncode(URLSerializer(parsedURL))\n\n    // 7. Append `Location`/value to responseObject\u2019s response\u2019s header list.\n    responseObject[kState].headersList.append('location', value, true)\n\n    // 8. Return responseObject.\n    return responseObject\n  }\n\n  // https://fetch.spec.whatwg.org/#dom-response\n  constructor (body = null, init = {}) {\n    webidl.util.markAsUncloneable(this)\n    if (body === kConstruct) {\n      return\n    }\n\n    if (body !== null) {\n      body = webidl.converters.BodyInit(body)\n    }\n\n    init = webidl.converters.ResponseInit(init)\n\n    // 1. Set this\u2019s response to a new response.\n    this[kState] = makeResponse({})\n\n    // 2. Set this\u2019s headers to a new Headers object with this\u2019s relevant\n    // Realm, whose header list is this\u2019s response\u2019s header list and guard\n    // is \"response\".\n    this[kHeaders] = new Headers(kConstruct)\n    setHeadersGuard(this[kHeaders], 'response')\n    setHeadersList(this[kHeaders], this[kState].headersList)\n\n    // 3. Let bodyWithType be null.\n    let bodyWithType = null\n\n    // 4. If body is non-null, then set bodyWithType to the result of extracting body.\n    if (body != null) {\n      const [extractedBody, type] = extractBody(body)\n      bodyWithType = { body: extractedBody, type }\n    }\n\n    // 5. Perform initialize a response given this, init, and bodyWithType.\n    initializeResponse(this, init, bodyWithType)\n  }\n\n  // Returns response\u2019s type, e.g., \"cors\".\n  get type () {\n    webidl.brandCheck(this, Response)\n\n    // The type getter steps are to return this\u2019s response\u2019s type.\n    return this[kState].type\n  }\n\n  // Returns response\u2019s URL, if it has one; otherwise the empty string.\n  get url () {\n    webidl.brandCheck(this, Response)\n\n    const urlList = this[kState].urlList\n\n    // The url getter steps are to return the empty string if this\u2019s\n    // response\u2019s URL is null; otherwise this\u2019s response\u2019s URL,\n    // serialized with exclude fragment set to true.\n    const url = urlList[urlList.length - 1] ?? null\n\n    if (url === null) {\n      return ''\n    }\n\n    return URLSerializer(url, true)\n  }\n\n  // Returns whether response was obtained through a redirect.\n  get redirected () {\n    webidl.brandCheck(this, Response)\n\n    // The redirected getter steps are to return true if this\u2019s response\u2019s URL\n    // list has more than one item; otherwise false.\n    return this[kState].urlList.length > 1\n  }\n\n  // Returns response\u2019s status.\n  get status () {\n    webidl.brandCheck(this, Response)\n\n    // The status getter steps are to return this\u2019s response\u2019s status.\n    return this[kState].status\n  }\n\n  // Returns whether response\u2019s status is an ok status.\n  get ok () {\n    webidl.brandCheck(this, Response)\n\n    // The ok getter steps are to return true if this\u2019s response\u2019s status is an\n    // ok status; otherwise false.\n    return this[kState].status >= 200 && this[kState].status <= 299\n  }\n\n  // Returns response\u2019s status message.\n  get statusText () {\n    webidl.brandCheck(this, Response)\n\n    // The statusText getter steps are to return this\u2019s response\u2019s status\n    // message.\n    return this[kState].statusText\n  }\n\n  // Returns response\u2019s headers as Headers.\n  get headers () {\n    webidl.brandCheck(this, Response)\n\n    // The headers getter steps are to return this\u2019s headers.\n    return this[kHeaders]\n  }\n\n  get body () {\n    webidl.brandCheck(this, Response)\n\n    return this[kState].body ? this[kState].body.stream : null\n  }\n\n  get bodyUsed () {\n    webidl.brandCheck(this, Response)\n\n    return !!this[kState].body && util.isDisturbed(this[kState].body.stream)\n  }\n\n  // Returns a clone of response.\n  clone () {\n    webidl.brandCheck(this, Response)\n\n    // 1. If this is unusable, then throw a TypeError.\n    if (bodyUnusable(this)) {\n      throw webidl.errors.exception({\n        header: 'Response.clone',\n        message: 'Body has already been consumed.'\n      })\n    }\n\n    // 2. Let clonedResponse be the result of cloning this\u2019s response.\n    const clonedResponse = cloneResponse(this[kState])\n\n    // Note: To re-register because of a new stream.\n    if (hasFinalizationRegistry && this[kState].body?.stream) {\n      streamRegistry.register(this, new WeakRef(this[kState].body.stream))\n    }\n\n    // 3. Return the result of creating a Response object, given\n    // clonedResponse, this\u2019s headers\u2019s guard, and this\u2019s relevant Realm.\n    return fromInnerResponse(clonedResponse, getHeadersGuard(this[kHeaders]))\n  }\n\n  [nodeUtil.inspect.custom] (depth, options) {\n    if (options.depth === null) {\n      options.depth = 2\n    }\n\n    options.colors ??= true\n\n    const properties = {\n      status: this.status,\n      statusText: this.statusText,\n      headers: this.headers,\n      body: this.body,\n      bodyUsed: this.bodyUsed,\n      ok: this.ok,\n      redirected: this.redirected,\n      type: this.type,\n      url: this.url\n    }\n\n    return `Response ${nodeUtil.formatWithOptions(options, properties)}`\n  }\n}\n\nmixinBody(Response)\n\nObject.defineProperties(Response.prototype, {\n  type: kEnumerableProperty,\n  url: kEnumerableProperty,\n  status: kEnumerableProperty,\n  ok: kEnumerableProperty,\n  redirected: kEnumerableProperty,\n  statusText: kEnumerableProperty,\n  headers: kEnumerableProperty,\n  clone: kEnumerableProperty,\n  body: kEnumerableProperty,\n  bodyUsed: kEnumerableProperty,\n  [Symbol.toStringTag]: {\n    value: 'Response',\n    configurable: true\n  }\n})\n\nObject.defineProperties(Response, {\n  json: kEnumerableProperty,\n  redirect: kEnumerableProperty,\n  error: kEnumerableProperty\n})\n\n// https://fetch.spec.whatwg.org/#concept-response-clone\nfunction cloneResponse (response) {\n  // To clone a response response, run these steps:\n\n  // 1. If response is a filtered response, then return a new identical\n  // filtered response whose internal response is a clone of response\u2019s\n  // internal response.\n  if (response.internalResponse) {\n    return filterResponse(\n      cloneResponse(response.internalResponse),\n      response.type\n    )\n  }\n\n  // 2. Let newResponse be a copy of response, except for its body.\n  const newResponse = makeResponse({ ...response, body: null })\n\n  // 3. If response\u2019s body is non-null, then set newResponse\u2019s body to the\n  // result of cloning response\u2019s body.\n  if (response.body != null) {\n    newResponse.body = cloneBody(newResponse, response.body)\n  }\n\n  // 4. Return newResponse.\n  return newResponse\n}\n\nfunction makeResponse (init) {\n  return {\n    aborted: false,\n    rangeRequested: false,\n    timingAllowPassed: false,\n    requestIncludesCredentials: false,\n    type: 'default',\n    status: 200,\n    timingInfo: null,\n    cacheState: '',\n    statusText: '',\n    ...init,\n    headersList: init?.headersList\n      ? new HeadersList(init?.headersList)\n      : new HeadersList(),\n    urlList: init?.urlList ? [...init.urlList] : []\n  }\n}\n\nfunction makeNetworkError (reason) {\n  const isError = isErrorLike(reason)\n  return makeResponse({\n    type: 'error',\n    status: 0,\n    error: isError\n      ? reason\n      : new Error(reason ? String(reason) : reason),\n    aborted: reason && reason.name === 'AbortError'\n  })\n}\n\n// @see https://fetch.spec.whatwg.org/#concept-network-error\nfunction isNetworkError (response) {\n  return (\n    // A network error is a response whose type is \"error\",\n    response.type === 'error' &&\n    // status is 0\n    response.status === 0\n  )\n}\n\nfunction makeFilteredResponse (response, state) {\n  state = {\n    internalResponse: response,\n    ...state\n  }\n\n  return new Proxy(response, {\n    get (target, p) {\n      return p in state ? state[p] : target[p]\n    },\n    set (target, p, value) {\n      assert(!(p in state))\n      target[p] = value\n      return true\n    }\n  })\n}\n\n// https://fetch.spec.whatwg.org/#concept-filtered-response\nfunction filterResponse (response, type) {\n  // Set response to the following filtered response with response as its\n  // internal response, depending on request\u2019s response tainting:\n  if (type === 'basic') {\n    // A basic filtered response is a filtered response whose type is \"basic\"\n    // and header list excludes any headers in internal response\u2019s header list\n    // whose name is a forbidden response-header name.\n\n    // Note: undici does not implement forbidden response-header names\n    return makeFilteredResponse(response, {\n      type: 'basic',\n      headersList: response.headersList\n    })\n  } else if (type === 'cors') {\n    // A CORS filtered response is a filtered response whose type is \"cors\"\n    // and header list excludes any headers in internal response\u2019s header\n    // list whose name is not a CORS-safelisted response-header name, given\n    // internal response\u2019s CORS-exposed header-name list.\n\n    // Note: undici does not implement CORS-safelisted response-header names\n    return makeFilteredResponse(response, {\n      type: 'cors',\n      headersList: response.headersList\n    })\n  } else if (type === 'opaque') {\n    // An opaque filtered response is a filtered response whose type is\n    // \"opaque\", URL list is the empty list, status is 0, status message\n    // is the empty byte sequence, header list is empty, and body is null.\n\n    return makeFilteredResponse(response, {\n      type: 'opaque',\n      urlList: Object.freeze([]),\n      status: 0,\n      statusText: '',\n      body: null\n    })\n  } else if (type === 'opaqueredirect') {\n    // An opaque-redirect filtered response is a filtered response whose type\n    // is \"opaqueredirect\", status is 0, status message is the empty byte\n    // sequence, header list is empty, and body is null.\n\n    return makeFilteredResponse(response, {\n      type: 'opaqueredirect',\n      status: 0,\n      statusText: '',\n      headersList: [],\n      body: null\n    })\n  } else {\n    assert(false)\n  }\n}\n\n// https://fetch.spec.whatwg.org/#appropriate-network-error\nfunction makeAppropriateNetworkError (fetchParams, err = null) {\n  // 1. Assert: fetchParams is canceled.\n  assert(isCancelled(fetchParams))\n\n  // 2. Return an aborted network error if fetchParams is aborted;\n  // otherwise return a network error.\n  return isAborted(fetchParams)\n    ? makeNetworkError(Object.assign(new DOMException('The operation was aborted.', 'AbortError'), { cause: err }))\n    : makeNetworkError(Object.assign(new DOMException('Request was cancelled.'), { cause: err }))\n}\n\n// https://whatpr.org/fetch/1392.html#initialize-a-response\nfunction initializeResponse (response, init, body) {\n  // 1. If init[\"status\"] is not in the range 200 to 599, inclusive, then\n  //    throw a RangeError.\n  if (init.status !== null && (init.status < 200 || init.status > 599)) {\n    throw new RangeError('init[\"status\"] must be in the range of 200 to 599, inclusive.')\n  }\n\n  // 2. If init[\"statusText\"] does not match the reason-phrase token production,\n  //    then throw a TypeError.\n  if ('statusText' in init && init.statusText != null) {\n    // See, https://datatracker.ietf.org/doc/html/rfc7230#section-3.1.2:\n    //   reason-phrase  = *( HTAB / SP / VCHAR / obs-text )\n    if (!isValidReasonPhrase(String(init.statusText))) {\n      throw new TypeError('Invalid statusText')\n    }\n  }\n\n  // 3. Set response\u2019s response\u2019s status to init[\"status\"].\n  if ('status' in init && init.status != null) {\n    response[kState].status = init.status\n  }\n\n  // 4. Set response\u2019s response\u2019s status message to init[\"statusText\"].\n  if ('statusText' in init && init.statusText != null) {\n    response[kState].statusText = init.statusText\n  }\n\n  // 5. If init[\"headers\"] exists, then fill response\u2019s headers with init[\"headers\"].\n  if ('headers' in init && init.headers != null) {\n    fill(response[kHeaders], init.headers)\n  }\n\n  // 6. If body was given, then:\n  if (body) {\n    // 1. If response's status is a null body status, then throw a TypeError.\n    if (nullBodyStatus.includes(response.status)) {\n      throw webidl.errors.exception({\n        header: 'Response constructor',\n        message: `Invalid response status code ${response.status}`\n      })\n    }\n\n    // 2. Set response's body to body's body.\n    response[kState].body = body.body\n\n    // 3. If body's type is non-null and response's header list does not contain\n    //    `Content-Type`, then append (`Content-Type`, body's type) to response's header list.\n    if (body.type != null && !response[kState].headersList.contains('content-type', true)) {\n      response[kState].headersList.append('content-type', body.type, true)\n    }\n  }\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#response-create\n * @param {any} innerResponse\n * @param {'request' | 'immutable' | 'request-no-cors' | 'response' | 'none'} guard\n * @returns {Response}\n */\nfunction fromInnerResponse (innerResponse, guard) {\n  const response = new Response(kConstruct)\n  response[kState] = innerResponse\n  response[kHeaders] = new Headers(kConstruct)\n  setHeadersList(response[kHeaders], innerResponse.headersList)\n  setHeadersGuard(response[kHeaders], guard)\n\n  if (hasFinalizationRegistry && innerResponse.body?.stream) {\n    // If the target (response) is reclaimed, the cleanup callback may be called at some point with\n    // the held value provided for it (innerResponse.body.stream). The held value can be any value:\n    // a primitive or an object, even undefined. If the held value is an object, the registry keeps\n    // a strong reference to it (so it can pass it to the cleanup callback later). Reworded from\n    // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/FinalizationRegistry\n    streamRegistry.register(response, new WeakRef(innerResponse.body.stream))\n  }\n\n  return response\n}\n\nwebidl.converters.ReadableStream = webidl.interfaceConverter(\n  ReadableStream\n)\n\nwebidl.converters.FormData = webidl.interfaceConverter(\n  FormData\n)\n\nwebidl.converters.URLSearchParams = webidl.interfaceConverter(\n  URLSearchParams\n)\n\n// https://fetch.spec.whatwg.org/#typedefdef-xmlhttprequestbodyinit\nwebidl.converters.XMLHttpRequestBodyInit = function (V, prefix, name) {\n  if (typeof V === 'string') {\n    return webidl.converters.USVString(V, prefix, name)\n  }\n\n  if (isBlobLike(V)) {\n    return webidl.converters.Blob(V, prefix, name, { strict: false })\n  }\n\n  if (ArrayBuffer.isView(V) || types.isArrayBuffer(V)) {\n    return webidl.converters.BufferSource(V, prefix, name)\n  }\n\n  if (util.isFormDataLike(V)) {\n    return webidl.converters.FormData(V, prefix, name, { strict: false })\n  }\n\n  if (V instanceof URLSearchParams) {\n    return webidl.converters.URLSearchParams(V, prefix, name)\n  }\n\n  return webidl.converters.DOMString(V, prefix, name)\n}\n\n// https://fetch.spec.whatwg.org/#bodyinit\nwebidl.converters.BodyInit = function (V, prefix, argument) {\n  if (V instanceof ReadableStream) {\n    return webidl.converters.ReadableStream(V, prefix, argument)\n  }\n\n  // Note: the spec doesn't include async iterables,\n  // this is an undici extension.\n  if (V?.[Symbol.asyncIterator]) {\n    return V\n  }\n\n  return webidl.converters.XMLHttpRequestBodyInit(V, prefix, argument)\n}\n\nwebidl.converters.ResponseInit = webidl.dictionaryConverter([\n  {\n    key: 'status',\n    converter: webidl.converters['unsigned short'],\n    defaultValue: () => 200\n  },\n  {\n    key: 'statusText',\n    converter: webidl.converters.ByteString,\n    defaultValue: () => ''\n  },\n  {\n    key: 'headers',\n    converter: webidl.converters.HeadersInit\n  }\n])\n\nmodule.exports = {\n  isNetworkError,\n  makeNetworkError,\n  makeResponse,\n  makeAppropriateNetworkError,\n  filterResponse,\n  Response,\n  cloneResponse,\n  fromInnerResponse\n}\n", "'use strict'\n\nconst { kConnected, kSize } = require('../../core/symbols')\n\nclass CompatWeakRef {\n  constructor (value) {\n    this.value = value\n  }\n\n  deref () {\n    return this.value[kConnected] === 0 && this.value[kSize] === 0\n      ? undefined\n      : this.value\n  }\n}\n\nclass CompatFinalizer {\n  constructor (finalizer) {\n    this.finalizer = finalizer\n  }\n\n  register (dispatcher, key) {\n    if (dispatcher.on) {\n      dispatcher.on('disconnect', () => {\n        if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) {\n          this.finalizer(key)\n        }\n      })\n    }\n  }\n\n  unregister (key) {}\n}\n\nmodule.exports = function () {\n  // FIXME: remove workaround when the Node bug is backported to v18\n  // https://github.com/nodejs/node/issues/49344#issuecomment-1741776308\n  if (process.env.NODE_V8_COVERAGE && process.version.startsWith('v18')) {\n    process._rawDebug('Using compatibility WeakRef and FinalizationRegistry')\n    return {\n      WeakRef: CompatWeakRef,\n      FinalizationRegistry: CompatFinalizer\n    }\n  }\n  return { WeakRef, FinalizationRegistry }\n}\n", "/* globals AbortController */\n\n'use strict'\n\nconst { extractBody, mixinBody, cloneBody, bodyUnusable } = require('./body')\nconst { Headers, fill: fillHeaders, HeadersList, setHeadersGuard, getHeadersGuard, setHeadersList, getHeadersList } = require('./headers')\nconst { FinalizationRegistry } = require('./dispatcher-weakref')()\nconst util = require('../../core/util')\nconst nodeUtil = require('node:util')\nconst {\n  isValidHTTPToken,\n  sameOrigin,\n  environmentSettingsObject\n} = require('./util')\nconst {\n  forbiddenMethodsSet,\n  corsSafeListedMethodsSet,\n  referrerPolicy,\n  requestRedirect,\n  requestMode,\n  requestCredentials,\n  requestCache,\n  requestDuplex\n} = require('./constants')\nconst { kEnumerableProperty, normalizedMethodRecordsBase, normalizedMethodRecords } = util\nconst { kHeaders, kSignal, kState, kDispatcher } = require('./symbols')\nconst { webidl } = require('./webidl')\nconst { URLSerializer } = require('./data-url')\nconst { kConstruct } = require('../../core/symbols')\nconst assert = require('node:assert')\nconst { getMaxListeners, setMaxListeners, getEventListeners, defaultMaxListeners } = require('node:events')\n\nconst kAbortController = Symbol('abortController')\n\nconst requestFinalizer = new FinalizationRegistry(({ signal, abort }) => {\n  signal.removeEventListener('abort', abort)\n})\n\nconst dependentControllerMap = new WeakMap()\n\nfunction buildAbort (acRef) {\n  return abort\n\n  function abort () {\n    const ac = acRef.deref()\n    if (ac !== undefined) {\n      // Currently, there is a problem with FinalizationRegistry.\n      // https://github.com/nodejs/node/issues/49344\n      // https://github.com/nodejs/node/issues/47748\n      // In the case of abort, the first step is to unregister from it.\n      // If the controller can refer to it, it is still registered.\n      // It will be removed in the future.\n      requestFinalizer.unregister(abort)\n\n      // Unsubscribe a listener.\n      // FinalizationRegistry will no longer be called, so this must be done.\n      this.removeEventListener('abort', abort)\n\n      ac.abort(this.reason)\n\n      const controllerList = dependentControllerMap.get(ac.signal)\n\n      if (controllerList !== undefined) {\n        if (controllerList.size !== 0) {\n          for (const ref of controllerList) {\n            const ctrl = ref.deref()\n            if (ctrl !== undefined) {\n              ctrl.abort(this.reason)\n            }\n          }\n          controllerList.clear()\n        }\n        dependentControllerMap.delete(ac.signal)\n      }\n    }\n  }\n}\n\nlet patchMethodWarning = false\n\n// https://fetch.spec.whatwg.org/#request-class\nclass Request {\n  // https://fetch.spec.whatwg.org/#dom-request\n  constructor (input, init = {}) {\n    webidl.util.markAsUncloneable(this)\n    if (input === kConstruct) {\n      return\n    }\n\n    const prefix = 'Request constructor'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    input = webidl.converters.RequestInfo(input, prefix, 'input')\n    init = webidl.converters.RequestInit(init, prefix, 'init')\n\n    // 1. Let request be null.\n    let request = null\n\n    // 2. Let fallbackMode be null.\n    let fallbackMode = null\n\n    // 3. Let baseURL be this\u2019s relevant settings object\u2019s API base URL.\n    const baseUrl = environmentSettingsObject.settingsObject.baseUrl\n\n    // 4. Let signal be null.\n    let signal = null\n\n    // 5. If input is a string, then:\n    if (typeof input === 'string') {\n      this[kDispatcher] = init.dispatcher\n\n      // 1. Let parsedURL be the result of parsing input with baseURL.\n      // 2. If parsedURL is failure, then throw a TypeError.\n      let parsedURL\n      try {\n        parsedURL = new URL(input, baseUrl)\n      } catch (err) {\n        throw new TypeError('Failed to parse URL from ' + input, { cause: err })\n      }\n\n      // 3. If parsedURL includes credentials, then throw a TypeError.\n      if (parsedURL.username || parsedURL.password) {\n        throw new TypeError(\n          'Request cannot be constructed from a URL that includes credentials: ' +\n            input\n        )\n      }\n\n      // 4. Set request to a new request whose URL is parsedURL.\n      request = makeRequest({ urlList: [parsedURL] })\n\n      // 5. Set fallbackMode to \"cors\".\n      fallbackMode = 'cors'\n    } else {\n      this[kDispatcher] = init.dispatcher || input[kDispatcher]\n\n      // 6. Otherwise:\n\n      // 7. Assert: input is a Request object.\n      assert(input instanceof Request)\n\n      // 8. Set request to input\u2019s request.\n      request = input[kState]\n\n      // 9. Set signal to input\u2019s signal.\n      signal = input[kSignal]\n    }\n\n    // 7. Let origin be this\u2019s relevant settings object\u2019s origin.\n    const origin = environmentSettingsObject.settingsObject.origin\n\n    // 8. Let window be \"client\".\n    let window = 'client'\n\n    // 9. If request\u2019s window is an environment settings object and its origin\n    // is same origin with origin, then set window to request\u2019s window.\n    if (\n      request.window?.constructor?.name === 'EnvironmentSettingsObject' &&\n      sameOrigin(request.window, origin)\n    ) {\n      window = request.window\n    }\n\n    // 10. If init[\"window\"] exists and is non-null, then throw a TypeError.\n    if (init.window != null) {\n      throw new TypeError(`'window' option '${window}' must be null`)\n    }\n\n    // 11. If init[\"window\"] exists, then set window to \"no-window\".\n    if ('window' in init) {\n      window = 'no-window'\n    }\n\n    // 12. Set request to a new request with the following properties:\n    request = makeRequest({\n      // URL request\u2019s URL.\n      // undici implementation note: this is set as the first item in request's urlList in makeRequest\n      // method request\u2019s method.\n      method: request.method,\n      // header list A copy of request\u2019s header list.\n      // undici implementation note: headersList is cloned in makeRequest\n      headersList: request.headersList,\n      // unsafe-request flag Set.\n      unsafeRequest: request.unsafeRequest,\n      // client This\u2019s relevant settings object.\n      client: environmentSettingsObject.settingsObject,\n      // window window.\n      window,\n      // priority request\u2019s priority.\n      priority: request.priority,\n      // origin request\u2019s origin. The propagation of the origin is only significant for navigation requests\n      // being handled by a service worker. In this scenario a request can have an origin that is different\n      // from the current client.\n      origin: request.origin,\n      // referrer request\u2019s referrer.\n      referrer: request.referrer,\n      // referrer policy request\u2019s referrer policy.\n      referrerPolicy: request.referrerPolicy,\n      // mode request\u2019s mode.\n      mode: request.mode,\n      // credentials mode request\u2019s credentials mode.\n      credentials: request.credentials,\n      // cache mode request\u2019s cache mode.\n      cache: request.cache,\n      // redirect mode request\u2019s redirect mode.\n      redirect: request.redirect,\n      // integrity metadata request\u2019s integrity metadata.\n      integrity: request.integrity,\n      // keepalive request\u2019s keepalive.\n      keepalive: request.keepalive,\n      // reload-navigation flag request\u2019s reload-navigation flag.\n      reloadNavigation: request.reloadNavigation,\n      // history-navigation flag request\u2019s history-navigation flag.\n      historyNavigation: request.historyNavigation,\n      // URL list A clone of request\u2019s URL list.\n      urlList: [...request.urlList]\n    })\n\n    const initHasKey = Object.keys(init).length !== 0\n\n    // 13. If init is not empty, then:\n    if (initHasKey) {\n      // 1. If request\u2019s mode is \"navigate\", then set it to \"same-origin\".\n      if (request.mode === 'navigate') {\n        request.mode = 'same-origin'\n      }\n\n      // 2. Unset request\u2019s reload-navigation flag.\n      request.reloadNavigation = false\n\n      // 3. Unset request\u2019s history-navigation flag.\n      request.historyNavigation = false\n\n      // 4. Set request\u2019s origin to \"client\".\n      request.origin = 'client'\n\n      // 5. Set request\u2019s referrer to \"client\"\n      request.referrer = 'client'\n\n      // 6. Set request\u2019s referrer policy to the empty string.\n      request.referrerPolicy = ''\n\n      // 7. Set request\u2019s URL to request\u2019s current URL.\n      request.url = request.urlList[request.urlList.length - 1]\n\n      // 8. Set request\u2019s URL list to \u00AB request\u2019s URL \u00BB.\n      request.urlList = [request.url]\n    }\n\n    // 14. If init[\"referrer\"] exists, then:\n    if (init.referrer !== undefined) {\n      // 1. Let referrer be init[\"referrer\"].\n      const referrer = init.referrer\n\n      // 2. If referrer is the empty string, then set request\u2019s referrer to \"no-referrer\".\n      if (referrer === '') {\n        request.referrer = 'no-referrer'\n      } else {\n        // 1. Let parsedReferrer be the result of parsing referrer with\n        // baseURL.\n        // 2. If parsedReferrer is failure, then throw a TypeError.\n        let parsedReferrer\n        try {\n          parsedReferrer = new URL(referrer, baseUrl)\n        } catch (err) {\n          throw new TypeError(`Referrer \"${referrer}\" is not a valid URL.`, { cause: err })\n        }\n\n        // 3. If one of the following is true\n        // - parsedReferrer\u2019s scheme is \"about\" and path is the string \"client\"\n        // - parsedReferrer\u2019s origin is not same origin with origin\n        // then set request\u2019s referrer to \"client\".\n        if (\n          (parsedReferrer.protocol === 'about:' && parsedReferrer.hostname === 'client') ||\n          (origin && !sameOrigin(parsedReferrer, environmentSettingsObject.settingsObject.baseUrl))\n        ) {\n          request.referrer = 'client'\n        } else {\n          // 4. Otherwise, set request\u2019s referrer to parsedReferrer.\n          request.referrer = parsedReferrer\n        }\n      }\n    }\n\n    // 15. If init[\"referrerPolicy\"] exists, then set request\u2019s referrer policy\n    // to it.\n    if (init.referrerPolicy !== undefined) {\n      request.referrerPolicy = init.referrerPolicy\n    }\n\n    // 16. Let mode be init[\"mode\"] if it exists, and fallbackMode otherwise.\n    let mode\n    if (init.mode !== undefined) {\n      mode = init.mode\n    } else {\n      mode = fallbackMode\n    }\n\n    // 17. If mode is \"navigate\", then throw a TypeError.\n    if (mode === 'navigate') {\n      throw webidl.errors.exception({\n        header: 'Request constructor',\n        message: 'invalid request mode navigate.'\n      })\n    }\n\n    // 18. If mode is non-null, set request\u2019s mode to mode.\n    if (mode != null) {\n      request.mode = mode\n    }\n\n    // 19. If init[\"credentials\"] exists, then set request\u2019s credentials mode\n    // to it.\n    if (init.credentials !== undefined) {\n      request.credentials = init.credentials\n    }\n\n    // 18. If init[\"cache\"] exists, then set request\u2019s cache mode to it.\n    if (init.cache !== undefined) {\n      request.cache = init.cache\n    }\n\n    // 21. If request\u2019s cache mode is \"only-if-cached\" and request\u2019s mode is\n    // not \"same-origin\", then throw a TypeError.\n    if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') {\n      throw new TypeError(\n        \"'only-if-cached' can be set only with 'same-origin' mode\"\n      )\n    }\n\n    // 22. If init[\"redirect\"] exists, then set request\u2019s redirect mode to it.\n    if (init.redirect !== undefined) {\n      request.redirect = init.redirect\n    }\n\n    // 23. If init[\"integrity\"] exists, then set request\u2019s integrity metadata to it.\n    if (init.integrity != null) {\n      request.integrity = String(init.integrity)\n    }\n\n    // 24. If init[\"keepalive\"] exists, then set request\u2019s keepalive to it.\n    if (init.keepalive !== undefined) {\n      request.keepalive = Boolean(init.keepalive)\n    }\n\n    // 25. If init[\"method\"] exists, then:\n    if (init.method !== undefined) {\n      // 1. Let method be init[\"method\"].\n      let method = init.method\n\n      const mayBeNormalized = normalizedMethodRecords[method]\n\n      if (mayBeNormalized !== undefined) {\n        // Note: Bypass validation DELETE, GET, HEAD, OPTIONS, POST, PUT, PATCH and these lowercase ones\n        request.method = mayBeNormalized\n      } else {\n        // 2. If method is not a method or method is a forbidden method, then\n        // throw a TypeError.\n        if (!isValidHTTPToken(method)) {\n          throw new TypeError(`'${method}' is not a valid HTTP method.`)\n        }\n\n        const upperCase = method.toUpperCase()\n\n        if (forbiddenMethodsSet.has(upperCase)) {\n          throw new TypeError(`'${method}' HTTP method is unsupported.`)\n        }\n\n        // 3. Normalize method.\n        // https://fetch.spec.whatwg.org/#concept-method-normalize\n        // Note: must be in uppercase\n        method = normalizedMethodRecordsBase[upperCase] ?? method\n\n        // 4. Set request\u2019s method to method.\n        request.method = method\n      }\n\n      if (!patchMethodWarning && request.method === 'patch') {\n        process.emitWarning('Using `patch` is highly likely to result in a `405 Method Not Allowed`. `PATCH` is much more likely to succeed.', {\n          code: 'UNDICI-FETCH-patch'\n        })\n\n        patchMethodWarning = true\n      }\n    }\n\n    // 26. If init[\"signal\"] exists, then set signal to it.\n    if (init.signal !== undefined) {\n      signal = init.signal\n    }\n\n    // 27. Set this\u2019s request to request.\n    this[kState] = request\n\n    // 28. Set this\u2019s signal to a new AbortSignal object with this\u2019s relevant\n    // Realm.\n    // TODO: could this be simplified with AbortSignal.any\n    // (https://dom.spec.whatwg.org/#dom-abortsignal-any)\n    const ac = new AbortController()\n    this[kSignal] = ac.signal\n\n    // 29. If signal is not null, then make this\u2019s signal follow signal.\n    if (signal != null) {\n      if (\n        !signal ||\n        typeof signal.aborted !== 'boolean' ||\n        typeof signal.addEventListener !== 'function'\n      ) {\n        throw new TypeError(\n          \"Failed to construct 'Request': member signal is not of type AbortSignal.\"\n        )\n      }\n\n      if (signal.aborted) {\n        ac.abort(signal.reason)\n      } else {\n        // Keep a strong ref to ac while request object\n        // is alive. This is needed to prevent AbortController\n        // from being prematurely garbage collected.\n        // See, https://github.com/nodejs/undici/issues/1926.\n        this[kAbortController] = ac\n\n        const acRef = new WeakRef(ac)\n        const abort = buildAbort(acRef)\n\n        // Third-party AbortControllers may not work with these.\n        // See, https://github.com/nodejs/undici/pull/1910#issuecomment-1464495619.\n        try {\n          // If the max amount of listeners is equal to the default, increase it\n          // This is only available in node >= v19.9.0\n          if (typeof getMaxListeners === 'function' && getMaxListeners(signal) === defaultMaxListeners) {\n            setMaxListeners(1500, signal)\n          } else if (getEventListeners(signal, 'abort').length >= defaultMaxListeners) {\n            setMaxListeners(1500, signal)\n          }\n        } catch {}\n\n        util.addAbortListener(signal, abort)\n        // The third argument must be a registry key to be unregistered.\n        // Without it, you cannot unregister.\n        // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/FinalizationRegistry\n        // abort is used as the unregister key. (because it is unique)\n        requestFinalizer.register(ac, { signal, abort }, abort)\n      }\n    }\n\n    // 30. Set this\u2019s headers to a new Headers object with this\u2019s relevant\n    // Realm, whose header list is request\u2019s header list and guard is\n    // \"request\".\n    this[kHeaders] = new Headers(kConstruct)\n    setHeadersList(this[kHeaders], request.headersList)\n    setHeadersGuard(this[kHeaders], 'request')\n\n    // 31. If this\u2019s request\u2019s mode is \"no-cors\", then:\n    if (mode === 'no-cors') {\n      // 1. If this\u2019s request\u2019s method is not a CORS-safelisted method,\n      // then throw a TypeError.\n      if (!corsSafeListedMethodsSet.has(request.method)) {\n        throw new TypeError(\n          `'${request.method} is unsupported in no-cors mode.`\n        )\n      }\n\n      // 2. Set this\u2019s headers\u2019s guard to \"request-no-cors\".\n      setHeadersGuard(this[kHeaders], 'request-no-cors')\n    }\n\n    // 32. If init is not empty, then:\n    if (initHasKey) {\n      /** @type {HeadersList} */\n      const headersList = getHeadersList(this[kHeaders])\n      // 1. Let headers be a copy of this\u2019s headers and its associated header\n      // list.\n      // 2. If init[\"headers\"] exists, then set headers to init[\"headers\"].\n      const headers = init.headers !== undefined ? init.headers : new HeadersList(headersList)\n\n      // 3. Empty this\u2019s headers\u2019s header list.\n      headersList.clear()\n\n      // 4. If headers is a Headers object, then for each header in its header\n      // list, append header\u2019s name/header\u2019s value to this\u2019s headers.\n      if (headers instanceof HeadersList) {\n        for (const { name, value } of headers.rawValues()) {\n          headersList.append(name, value, false)\n        }\n        // Note: Copy the `set-cookie` meta-data.\n        headersList.cookies = headers.cookies\n      } else {\n        // 5. Otherwise, fill this\u2019s headers with headers.\n        fillHeaders(this[kHeaders], headers)\n      }\n    }\n\n    // 33. Let inputBody be input\u2019s request\u2019s body if input is a Request\n    // object; otherwise null.\n    const inputBody = input instanceof Request ? input[kState].body : null\n\n    // 34. If either init[\"body\"] exists and is non-null or inputBody is\n    // non-null, and request\u2019s method is `GET` or `HEAD`, then throw a\n    // TypeError.\n    if (\n      (init.body != null || inputBody != null) &&\n      (request.method === 'GET' || request.method === 'HEAD')\n    ) {\n      throw new TypeError('Request with GET/HEAD method cannot have body.')\n    }\n\n    // 35. Let initBody be null.\n    let initBody = null\n\n    // 36. If init[\"body\"] exists and is non-null, then:\n    if (init.body != null) {\n      // 1. Let Content-Type be null.\n      // 2. Set initBody and Content-Type to the result of extracting\n      // init[\"body\"], with keepalive set to request\u2019s keepalive.\n      const [extractedBody, contentType] = extractBody(\n        init.body,\n        request.keepalive\n      )\n      initBody = extractedBody\n\n      // 3, If Content-Type is non-null and this\u2019s headers\u2019s header list does\n      // not contain `Content-Type`, then append `Content-Type`/Content-Type to\n      // this\u2019s headers.\n      if (contentType && !getHeadersList(this[kHeaders]).contains('content-type', true)) {\n        this[kHeaders].append('content-type', contentType)\n      }\n    }\n\n    // 37. Let inputOrInitBody be initBody if it is non-null; otherwise\n    // inputBody.\n    const inputOrInitBody = initBody ?? inputBody\n\n    // 38. If inputOrInitBody is non-null and inputOrInitBody\u2019s source is\n    // null, then:\n    if (inputOrInitBody != null && inputOrInitBody.source == null) {\n      // 1. If initBody is non-null and init[\"duplex\"] does not exist,\n      //    then throw a TypeError.\n      if (initBody != null && init.duplex == null) {\n        throw new TypeError('RequestInit: duplex option is required when sending a body.')\n      }\n\n      // 2. If this\u2019s request\u2019s mode is neither \"same-origin\" nor \"cors\",\n      // then throw a TypeError.\n      if (request.mode !== 'same-origin' && request.mode !== 'cors') {\n        throw new TypeError(\n          'If request is made from ReadableStream, mode should be \"same-origin\" or \"cors\"'\n        )\n      }\n\n      // 3. Set this\u2019s request\u2019s use-CORS-preflight flag.\n      request.useCORSPreflightFlag = true\n    }\n\n    // 39. Let finalBody be inputOrInitBody.\n    let finalBody = inputOrInitBody\n\n    // 40. If initBody is null and inputBody is non-null, then:\n    if (initBody == null && inputBody != null) {\n      // 1. If input is unusable, then throw a TypeError.\n      if (bodyUnusable(input)) {\n        throw new TypeError(\n          'Cannot construct a Request with a Request object that has already been used.'\n        )\n      }\n\n      // 2. Set finalBody to the result of creating a proxy for inputBody.\n      // https://streams.spec.whatwg.org/#readablestream-create-a-proxy\n      const identityTransform = new TransformStream()\n      inputBody.stream.pipeThrough(identityTransform)\n      finalBody = {\n        source: inputBody.source,\n        length: inputBody.length,\n        stream: identityTransform.readable\n      }\n    }\n\n    // 41. Set this\u2019s request\u2019s body to finalBody.\n    this[kState].body = finalBody\n  }\n\n  // Returns request\u2019s HTTP method, which is \"GET\" by default.\n  get method () {\n    webidl.brandCheck(this, Request)\n\n    // The method getter steps are to return this\u2019s request\u2019s method.\n    return this[kState].method\n  }\n\n  // Returns the URL of request as a string.\n  get url () {\n    webidl.brandCheck(this, Request)\n\n    // The url getter steps are to return this\u2019s request\u2019s URL, serialized.\n    return URLSerializer(this[kState].url)\n  }\n\n  // Returns a Headers object consisting of the headers associated with request.\n  // Note that headers added in the network layer by the user agent will not\n  // be accounted for in this object, e.g., the \"Host\" header.\n  get headers () {\n    webidl.brandCheck(this, Request)\n\n    // The headers getter steps are to return this\u2019s headers.\n    return this[kHeaders]\n  }\n\n  // Returns the kind of resource requested by request, e.g., \"document\"\n  // or \"script\".\n  get destination () {\n    webidl.brandCheck(this, Request)\n\n    // The destination getter are to return this\u2019s request\u2019s destination.\n    return this[kState].destination\n  }\n\n  // Returns the referrer of request. Its value can be a same-origin URL if\n  // explicitly set in init, the empty string to indicate no referrer, and\n  // \"about:client\" when defaulting to the global\u2019s default. This is used\n  // during fetching to determine the value of the `Referer` header of the\n  // request being made.\n  get referrer () {\n    webidl.brandCheck(this, Request)\n\n    // 1. If this\u2019s request\u2019s referrer is \"no-referrer\", then return the\n    // empty string.\n    if (this[kState].referrer === 'no-referrer') {\n      return ''\n    }\n\n    // 2. If this\u2019s request\u2019s referrer is \"client\", then return\n    // \"about:client\".\n    if (this[kState].referrer === 'client') {\n      return 'about:client'\n    }\n\n    // Return this\u2019s request\u2019s referrer, serialized.\n    return this[kState].referrer.toString()\n  }\n\n  // Returns the referrer policy associated with request.\n  // This is used during fetching to compute the value of the request\u2019s\n  // referrer.\n  get referrerPolicy () {\n    webidl.brandCheck(this, Request)\n\n    // The referrerPolicy getter steps are to return this\u2019s request\u2019s referrer policy.\n    return this[kState].referrerPolicy\n  }\n\n  // Returns the mode associated with request, which is a string indicating\n  // whether the request will use CORS, or will be restricted to same-origin\n  // URLs.\n  get mode () {\n    webidl.brandCheck(this, Request)\n\n    // The mode getter steps are to return this\u2019s request\u2019s mode.\n    return this[kState].mode\n  }\n\n  // Returns the credentials mode associated with request,\n  // which is a string indicating whether credentials will be sent with the\n  // request always, never, or only when sent to a same-origin URL.\n  get credentials () {\n    // The credentials getter steps are to return this\u2019s request\u2019s credentials mode.\n    return this[kState].credentials\n  }\n\n  // Returns the cache mode associated with request,\n  // which is a string indicating how the request will\n  // interact with the browser\u2019s cache when fetching.\n  get cache () {\n    webidl.brandCheck(this, Request)\n\n    // The cache getter steps are to return this\u2019s request\u2019s cache mode.\n    return this[kState].cache\n  }\n\n  // Returns the redirect mode associated with request,\n  // which is a string indicating how redirects for the\n  // request will be handled during fetching. A request\n  // will follow redirects by default.\n  get redirect () {\n    webidl.brandCheck(this, Request)\n\n    // The redirect getter steps are to return this\u2019s request\u2019s redirect mode.\n    return this[kState].redirect\n  }\n\n  // Returns request\u2019s subresource integrity metadata, which is a\n  // cryptographic hash of the resource being fetched. Its value\n  // consists of multiple hashes separated by whitespace. [SRI]\n  get integrity () {\n    webidl.brandCheck(this, Request)\n\n    // The integrity getter steps are to return this\u2019s request\u2019s integrity\n    // metadata.\n    return this[kState].integrity\n  }\n\n  // Returns a boolean indicating whether or not request can outlive the\n  // global in which it was created.\n  get keepalive () {\n    webidl.brandCheck(this, Request)\n\n    // The keepalive getter steps are to return this\u2019s request\u2019s keepalive.\n    return this[kState].keepalive\n  }\n\n  // Returns a boolean indicating whether or not request is for a reload\n  // navigation.\n  get isReloadNavigation () {\n    webidl.brandCheck(this, Request)\n\n    // The isReloadNavigation getter steps are to return true if this\u2019s\n    // request\u2019s reload-navigation flag is set; otherwise false.\n    return this[kState].reloadNavigation\n  }\n\n  // Returns a boolean indicating whether or not request is for a history\n  // navigation (a.k.a. back-forward navigation).\n  get isHistoryNavigation () {\n    webidl.brandCheck(this, Request)\n\n    // The isHistoryNavigation getter steps are to return true if this\u2019s request\u2019s\n    // history-navigation flag is set; otherwise false.\n    return this[kState].historyNavigation\n  }\n\n  // Returns the signal associated with request, which is an AbortSignal\n  // object indicating whether or not request has been aborted, and its\n  // abort event handler.\n  get signal () {\n    webidl.brandCheck(this, Request)\n\n    // The signal getter steps are to return this\u2019s signal.\n    return this[kSignal]\n  }\n\n  get body () {\n    webidl.brandCheck(this, Request)\n\n    return this[kState].body ? this[kState].body.stream : null\n  }\n\n  get bodyUsed () {\n    webidl.brandCheck(this, Request)\n\n    return !!this[kState].body && util.isDisturbed(this[kState].body.stream)\n  }\n\n  get duplex () {\n    webidl.brandCheck(this, Request)\n\n    return 'half'\n  }\n\n  // Returns a clone of request.\n  clone () {\n    webidl.brandCheck(this, Request)\n\n    // 1. If this is unusable, then throw a TypeError.\n    if (bodyUnusable(this)) {\n      throw new TypeError('unusable')\n    }\n\n    // 2. Let clonedRequest be the result of cloning this\u2019s request.\n    const clonedRequest = cloneRequest(this[kState])\n\n    // 3. Let clonedRequestObject be the result of creating a Request object,\n    // given clonedRequest, this\u2019s headers\u2019s guard, and this\u2019s relevant Realm.\n    // 4. Make clonedRequestObject\u2019s signal follow this\u2019s signal.\n    const ac = new AbortController()\n    if (this.signal.aborted) {\n      ac.abort(this.signal.reason)\n    } else {\n      let list = dependentControllerMap.get(this.signal)\n      if (list === undefined) {\n        list = new Set()\n        dependentControllerMap.set(this.signal, list)\n      }\n      const acRef = new WeakRef(ac)\n      list.add(acRef)\n      util.addAbortListener(\n        ac.signal,\n        buildAbort(acRef)\n      )\n    }\n\n    // 4. Return clonedRequestObject.\n    return fromInnerRequest(clonedRequest, ac.signal, getHeadersGuard(this[kHeaders]))\n  }\n\n  [nodeUtil.inspect.custom] (depth, options) {\n    if (options.depth === null) {\n      options.depth = 2\n    }\n\n    options.colors ??= true\n\n    const properties = {\n      method: this.method,\n      url: this.url,\n      headers: this.headers,\n      destination: this.destination,\n      referrer: this.referrer,\n      referrerPolicy: this.referrerPolicy,\n      mode: this.mode,\n      credentials: this.credentials,\n      cache: this.cache,\n      redirect: this.redirect,\n      integrity: this.integrity,\n      keepalive: this.keepalive,\n      isReloadNavigation: this.isReloadNavigation,\n      isHistoryNavigation: this.isHistoryNavigation,\n      signal: this.signal\n    }\n\n    return `Request ${nodeUtil.formatWithOptions(options, properties)}`\n  }\n}\n\nmixinBody(Request)\n\n// https://fetch.spec.whatwg.org/#requests\nfunction makeRequest (init) {\n  return {\n    method: init.method ?? 'GET',\n    localURLsOnly: init.localURLsOnly ?? false,\n    unsafeRequest: init.unsafeRequest ?? false,\n    body: init.body ?? null,\n    client: init.client ?? null,\n    reservedClient: init.reservedClient ?? null,\n    replacesClientId: init.replacesClientId ?? '',\n    window: init.window ?? 'client',\n    keepalive: init.keepalive ?? false,\n    serviceWorkers: init.serviceWorkers ?? 'all',\n    initiator: init.initiator ?? '',\n    destination: init.destination ?? '',\n    priority: init.priority ?? null,\n    origin: init.origin ?? 'client',\n    policyContainer: init.policyContainer ?? 'client',\n    referrer: init.referrer ?? 'client',\n    referrerPolicy: init.referrerPolicy ?? '',\n    mode: init.mode ?? 'no-cors',\n    useCORSPreflightFlag: init.useCORSPreflightFlag ?? false,\n    credentials: init.credentials ?? 'same-origin',\n    useCredentials: init.useCredentials ?? false,\n    cache: init.cache ?? 'default',\n    redirect: init.redirect ?? 'follow',\n    integrity: init.integrity ?? '',\n    cryptoGraphicsNonceMetadata: init.cryptoGraphicsNonceMetadata ?? '',\n    parserMetadata: init.parserMetadata ?? '',\n    reloadNavigation: init.reloadNavigation ?? false,\n    historyNavigation: init.historyNavigation ?? false,\n    userActivation: init.userActivation ?? false,\n    taintedOrigin: init.taintedOrigin ?? false,\n    redirectCount: init.redirectCount ?? 0,\n    responseTainting: init.responseTainting ?? 'basic',\n    preventNoCacheCacheControlHeaderModification: init.preventNoCacheCacheControlHeaderModification ?? false,\n    done: init.done ?? false,\n    timingAllowFailed: init.timingAllowFailed ?? false,\n    urlList: init.urlList,\n    url: init.urlList[0],\n    headersList: init.headersList\n      ? new HeadersList(init.headersList)\n      : new HeadersList()\n  }\n}\n\n// https://fetch.spec.whatwg.org/#concept-request-clone\nfunction cloneRequest (request) {\n  // To clone a request request, run these steps:\n\n  // 1. Let newRequest be a copy of request, except for its body.\n  const newRequest = makeRequest({ ...request, body: null })\n\n  // 2. If request\u2019s body is non-null, set newRequest\u2019s body to the\n  // result of cloning request\u2019s body.\n  if (request.body != null) {\n    newRequest.body = cloneBody(newRequest, request.body)\n  }\n\n  // 3. Return newRequest.\n  return newRequest\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#request-create\n * @param {any} innerRequest\n * @param {AbortSignal} signal\n * @param {'request' | 'immutable' | 'request-no-cors' | 'response' | 'none'} guard\n * @returns {Request}\n */\nfunction fromInnerRequest (innerRequest, signal, guard) {\n  const request = new Request(kConstruct)\n  request[kState] = innerRequest\n  request[kSignal] = signal\n  request[kHeaders] = new Headers(kConstruct)\n  setHeadersList(request[kHeaders], innerRequest.headersList)\n  setHeadersGuard(request[kHeaders], guard)\n  return request\n}\n\nObject.defineProperties(Request.prototype, {\n  method: kEnumerableProperty,\n  url: kEnumerableProperty,\n  headers: kEnumerableProperty,\n  redirect: kEnumerableProperty,\n  clone: kEnumerableProperty,\n  signal: kEnumerableProperty,\n  duplex: kEnumerableProperty,\n  destination: kEnumerableProperty,\n  body: kEnumerableProperty,\n  bodyUsed: kEnumerableProperty,\n  isHistoryNavigation: kEnumerableProperty,\n  isReloadNavigation: kEnumerableProperty,\n  keepalive: kEnumerableProperty,\n  integrity: kEnumerableProperty,\n  cache: kEnumerableProperty,\n  credentials: kEnumerableProperty,\n  attribute: kEnumerableProperty,\n  referrerPolicy: kEnumerableProperty,\n  referrer: kEnumerableProperty,\n  mode: kEnumerableProperty,\n  [Symbol.toStringTag]: {\n    value: 'Request',\n    configurable: true\n  }\n})\n\nwebidl.converters.Request = webidl.interfaceConverter(\n  Request\n)\n\n// https://fetch.spec.whatwg.org/#requestinfo\nwebidl.converters.RequestInfo = function (V, prefix, argument) {\n  if (typeof V === 'string') {\n    return webidl.converters.USVString(V, prefix, argument)\n  }\n\n  if (V instanceof Request) {\n    return webidl.converters.Request(V, prefix, argument)\n  }\n\n  return webidl.converters.USVString(V, prefix, argument)\n}\n\nwebidl.converters.AbortSignal = webidl.interfaceConverter(\n  AbortSignal\n)\n\n// https://fetch.spec.whatwg.org/#requestinit\nwebidl.converters.RequestInit = webidl.dictionaryConverter([\n  {\n    key: 'method',\n    converter: webidl.converters.ByteString\n  },\n  {\n    key: 'headers',\n    converter: webidl.converters.HeadersInit\n  },\n  {\n    key: 'body',\n    converter: webidl.nullableConverter(\n      webidl.converters.BodyInit\n    )\n  },\n  {\n    key: 'referrer',\n    converter: webidl.converters.USVString\n  },\n  {\n    key: 'referrerPolicy',\n    converter: webidl.converters.DOMString,\n    // https://w3c.github.io/webappsec-referrer-policy/#referrer-policy\n    allowedValues: referrerPolicy\n  },\n  {\n    key: 'mode',\n    converter: webidl.converters.DOMString,\n    // https://fetch.spec.whatwg.org/#concept-request-mode\n    allowedValues: requestMode\n  },\n  {\n    key: 'credentials',\n    converter: webidl.converters.DOMString,\n    // https://fetch.spec.whatwg.org/#requestcredentials\n    allowedValues: requestCredentials\n  },\n  {\n    key: 'cache',\n    converter: webidl.converters.DOMString,\n    // https://fetch.spec.whatwg.org/#requestcache\n    allowedValues: requestCache\n  },\n  {\n    key: 'redirect',\n    converter: webidl.converters.DOMString,\n    // https://fetch.spec.whatwg.org/#requestredirect\n    allowedValues: requestRedirect\n  },\n  {\n    key: 'integrity',\n    converter: webidl.converters.DOMString\n  },\n  {\n    key: 'keepalive',\n    converter: webidl.converters.boolean\n  },\n  {\n    key: 'signal',\n    converter: webidl.nullableConverter(\n      (signal) => webidl.converters.AbortSignal(\n        signal,\n        'RequestInit',\n        'signal',\n        { strict: false }\n      )\n    )\n  },\n  {\n    key: 'window',\n    converter: webidl.converters.any\n  },\n  {\n    key: 'duplex',\n    converter: webidl.converters.DOMString,\n    allowedValues: requestDuplex\n  },\n  {\n    key: 'dispatcher', // undici specific option\n    converter: webidl.converters.any\n  }\n])\n\nmodule.exports = { Request, makeRequest, fromInnerRequest, cloneRequest }\n", "// https://github.com/Ethan-Arrowood/undici-fetch\n\n'use strict'\n\nconst {\n  makeNetworkError,\n  makeAppropriateNetworkError,\n  filterResponse,\n  makeResponse,\n  fromInnerResponse\n} = require('./response')\nconst { HeadersList } = require('./headers')\nconst { Request, cloneRequest } = require('./request')\nconst zlib = require('node:zlib')\nconst {\n  bytesMatch,\n  makePolicyContainer,\n  clonePolicyContainer,\n  requestBadPort,\n  TAOCheck,\n  appendRequestOriginHeader,\n  responseLocationURL,\n  requestCurrentURL,\n  setRequestReferrerPolicyOnRedirect,\n  tryUpgradeRequestToAPotentiallyTrustworthyURL,\n  createOpaqueTimingInfo,\n  appendFetchMetadata,\n  corsCheck,\n  crossOriginResourcePolicyCheck,\n  determineRequestsReferrer,\n  coarsenedSharedCurrentTime,\n  createDeferredPromise,\n  isBlobLike,\n  sameOrigin,\n  isCancelled,\n  isAborted,\n  isErrorLike,\n  fullyReadBody,\n  readableStreamClose,\n  isomorphicEncode,\n  urlIsLocal,\n  urlIsHttpHttpsScheme,\n  urlHasHttpsScheme,\n  clampAndCoarsenConnectionTimingInfo,\n  simpleRangeHeaderValue,\n  buildContentRange,\n  createInflate,\n  extractMimeType\n} = require('./util')\nconst { kState, kDispatcher } = require('./symbols')\nconst assert = require('node:assert')\nconst { safelyExtractBody, extractBody } = require('./body')\nconst {\n  redirectStatusSet,\n  nullBodyStatus,\n  safeMethodsSet,\n  requestBodyHeader,\n  subresourceSet\n} = require('./constants')\nconst EE = require('node:events')\nconst { Readable, pipeline, finished } = require('node:stream')\nconst { addAbortListener, isErrored, isReadable, bufferToLowerCasedHeaderName } = require('../../core/util')\nconst { dataURLProcessor, serializeAMimeType, minimizeSupportedMimeType } = require('./data-url')\nconst { getGlobalDispatcher } = require('../../global')\nconst { webidl } = require('./webidl')\nconst { STATUS_CODES } = require('node:http')\nconst GET_OR_HEAD = ['GET', 'HEAD']\n\nconst defaultUserAgent = typeof __UNDICI_IS_NODE__ !== 'undefined' || typeof esbuildDetection !== 'undefined'\n  ? 'node'\n  : 'undici'\n\n/** @type {import('buffer').resolveObjectURL} */\nlet resolveObjectURL\n\nclass Fetch extends EE {\n  constructor (dispatcher) {\n    super()\n\n    this.dispatcher = dispatcher\n    this.connection = null\n    this.dump = false\n    this.state = 'ongoing'\n  }\n\n  terminate (reason) {\n    if (this.state !== 'ongoing') {\n      return\n    }\n\n    this.state = 'terminated'\n    this.connection?.destroy(reason)\n    this.emit('terminated', reason)\n  }\n\n  // https://fetch.spec.whatwg.org/#fetch-controller-abort\n  abort (error) {\n    if (this.state !== 'ongoing') {\n      return\n    }\n\n    // 1. Set controller\u2019s state to \"aborted\".\n    this.state = 'aborted'\n\n    // 2. Let fallbackError be an \"AbortError\" DOMException.\n    // 3. Set error to fallbackError if it is not given.\n    if (!error) {\n      error = new DOMException('The operation was aborted.', 'AbortError')\n    }\n\n    // 4. Let serializedError be StructuredSerialize(error).\n    //    If that threw an exception, catch it, and let\n    //    serializedError be StructuredSerialize(fallbackError).\n\n    // 5. Set controller\u2019s serialized abort reason to serializedError.\n    this.serializedAbortReason = error\n\n    this.connection?.destroy(error)\n    this.emit('terminated', error)\n  }\n}\n\nfunction handleFetchDone (response) {\n  finalizeAndReportTiming(response, 'fetch')\n}\n\n// https://fetch.spec.whatwg.org/#fetch-method\nfunction fetch (input, init = undefined) {\n  webidl.argumentLengthCheck(arguments, 1, 'globalThis.fetch')\n\n  // 1. Let p be a new promise.\n  let p = createDeferredPromise()\n\n  // 2. Let requestObject be the result of invoking the initial value of\n  // Request as constructor with input and init as arguments. If this throws\n  // an exception, reject p with it and return p.\n  let requestObject\n\n  try {\n    requestObject = new Request(input, init)\n  } catch (e) {\n    p.reject(e)\n    return p.promise\n  }\n\n  // 3. Let request be requestObject\u2019s request.\n  const request = requestObject[kState]\n\n  // 4. If requestObject\u2019s signal\u2019s aborted flag is set, then:\n  if (requestObject.signal.aborted) {\n    // 1. Abort the fetch() call with p, request, null, and\n    //    requestObject\u2019s signal\u2019s abort reason.\n    abortFetch(p, request, null, requestObject.signal.reason)\n\n    // 2. Return p.\n    return p.promise\n  }\n\n  // 5. Let globalObject be request\u2019s client\u2019s global object.\n  const globalObject = request.client.globalObject\n\n  // 6. If globalObject is a ServiceWorkerGlobalScope object, then set\n  // request\u2019s service-workers mode to \"none\".\n  if (globalObject?.constructor?.name === 'ServiceWorkerGlobalScope') {\n    request.serviceWorkers = 'none'\n  }\n\n  // 7. Let responseObject be null.\n  let responseObject = null\n\n  // 8. Let relevantRealm be this\u2019s relevant Realm.\n\n  // 9. Let locallyAborted be false.\n  let locallyAborted = false\n\n  // 10. Let controller be null.\n  let controller = null\n\n  // 11. Add the following abort steps to requestObject\u2019s signal:\n  addAbortListener(\n    requestObject.signal,\n    () => {\n      // 1. Set locallyAborted to true.\n      locallyAborted = true\n\n      // 2. Assert: controller is non-null.\n      assert(controller != null)\n\n      // 3. Abort controller with requestObject\u2019s signal\u2019s abort reason.\n      controller.abort(requestObject.signal.reason)\n\n      const realResponse = responseObject?.deref()\n\n      // 4. Abort the fetch() call with p, request, responseObject,\n      //    and requestObject\u2019s signal\u2019s abort reason.\n      abortFetch(p, request, realResponse, requestObject.signal.reason)\n    }\n  )\n\n  // 12. Let handleFetchDone given response response be to finalize and\n  // report timing with response, globalObject, and \"fetch\".\n  // see function handleFetchDone\n\n  // 13. Set controller to the result of calling fetch given request,\n  // with processResponseEndOfBody set to handleFetchDone, and processResponse\n  // given response being these substeps:\n\n  const processResponse = (response) => {\n    // 1. If locallyAborted is true, terminate these substeps.\n    if (locallyAborted) {\n      return\n    }\n\n    // 2. If response\u2019s aborted flag is set, then:\n    if (response.aborted) {\n      // 1. Let deserializedError be the result of deserialize a serialized\n      //    abort reason given controller\u2019s serialized abort reason and\n      //    relevantRealm.\n\n      // 2. Abort the fetch() call with p, request, responseObject, and\n      //    deserializedError.\n\n      abortFetch(p, request, responseObject, controller.serializedAbortReason)\n      return\n    }\n\n    // 3. If response is a network error, then reject p with a TypeError\n    // and terminate these substeps.\n    if (response.type === 'error') {\n      p.reject(new TypeError('fetch failed', { cause: response.error }))\n      return\n    }\n\n    // 4. Set responseObject to the result of creating a Response object,\n    // given response, \"immutable\", and relevantRealm.\n    responseObject = new WeakRef(fromInnerResponse(response, 'immutable'))\n\n    // 5. Resolve p with responseObject.\n    p.resolve(responseObject.deref())\n    p = null\n  }\n\n  controller = fetching({\n    request,\n    processResponseEndOfBody: handleFetchDone,\n    processResponse,\n    dispatcher: requestObject[kDispatcher] // undici\n  })\n\n  // 14. Return p.\n  return p.promise\n}\n\n// https://fetch.spec.whatwg.org/#finalize-and-report-timing\nfunction finalizeAndReportTiming (response, initiatorType = 'other') {\n  // 1. If response is an aborted network error, then return.\n  if (response.type === 'error' && response.aborted) {\n    return\n  }\n\n  // 2. If response\u2019s URL list is null or empty, then return.\n  if (!response.urlList?.length) {\n    return\n  }\n\n  // 3. Let originalURL be response\u2019s URL list[0].\n  const originalURL = response.urlList[0]\n\n  // 4. Let timingInfo be response\u2019s timing info.\n  let timingInfo = response.timingInfo\n\n  // 5. Let cacheState be response\u2019s cache state.\n  let cacheState = response.cacheState\n\n  // 6. If originalURL\u2019s scheme is not an HTTP(S) scheme, then return.\n  if (!urlIsHttpHttpsScheme(originalURL)) {\n    return\n  }\n\n  // 7. If timingInfo is null, then return.\n  if (timingInfo === null) {\n    return\n  }\n\n  // 8. If response\u2019s timing allow passed flag is not set, then:\n  if (!response.timingAllowPassed) {\n    //  1. Set timingInfo to a the result of creating an opaque timing info for timingInfo.\n    timingInfo = createOpaqueTimingInfo({\n      startTime: timingInfo.startTime\n    })\n\n    //  2. Set cacheState to the empty string.\n    cacheState = ''\n  }\n\n  // 9. Set timingInfo\u2019s end time to the coarsened shared current time\n  // given global\u2019s relevant settings object\u2019s cross-origin isolated\n  // capability.\n  // TODO: given global\u2019s relevant settings object\u2019s cross-origin isolated\n  // capability?\n  timingInfo.endTime = coarsenedSharedCurrentTime()\n\n  // 10. Set response\u2019s timing info to timingInfo.\n  response.timingInfo = timingInfo\n\n  // 11. Mark resource timing for timingInfo, originalURL, initiatorType,\n  // global, and cacheState.\n  markResourceTiming(\n    timingInfo,\n    originalURL.href,\n    initiatorType,\n    globalThis,\n    cacheState\n  )\n}\n\n// https://w3c.github.io/resource-timing/#dfn-mark-resource-timing\nconst markResourceTiming = performance.markResourceTiming\n\n// https://fetch.spec.whatwg.org/#abort-fetch\nfunction abortFetch (p, request, responseObject, error) {\n  // 1. Reject promise with error.\n  if (p) {\n    // We might have already resolved the promise at this stage\n    p.reject(error)\n  }\n\n  // 2. If request\u2019s body is not null and is readable, then cancel request\u2019s\n  // body with error.\n  if (request.body != null && isReadable(request.body?.stream)) {\n    request.body.stream.cancel(error).catch((err) => {\n      if (err.code === 'ERR_INVALID_STATE') {\n        // Node bug?\n        return\n      }\n      throw err\n    })\n  }\n\n  // 3. If responseObject is null, then return.\n  if (responseObject == null) {\n    return\n  }\n\n  // 4. Let response be responseObject\u2019s response.\n  const response = responseObject[kState]\n\n  // 5. If response\u2019s body is not null and is readable, then error response\u2019s\n  // body with error.\n  if (response.body != null && isReadable(response.body?.stream)) {\n    response.body.stream.cancel(error).catch((err) => {\n      if (err.code === 'ERR_INVALID_STATE') {\n        // Node bug?\n        return\n      }\n      throw err\n    })\n  }\n}\n\n// https://fetch.spec.whatwg.org/#fetching\nfunction fetching ({\n  request,\n  processRequestBodyChunkLength,\n  processRequestEndOfBody,\n  processResponse,\n  processResponseEndOfBody,\n  processResponseConsumeBody,\n  useParallelQueue = false,\n  dispatcher = getGlobalDispatcher() // undici\n}) {\n  // Ensure that the dispatcher is set accordingly\n  assert(dispatcher)\n\n  // 1. Let taskDestination be null.\n  let taskDestination = null\n\n  // 2. Let crossOriginIsolatedCapability be false.\n  let crossOriginIsolatedCapability = false\n\n  // 3. If request\u2019s client is non-null, then:\n  if (request.client != null) {\n    // 1. Set taskDestination to request\u2019s client\u2019s global object.\n    taskDestination = request.client.globalObject\n\n    // 2. Set crossOriginIsolatedCapability to request\u2019s client\u2019s cross-origin\n    // isolated capability.\n    crossOriginIsolatedCapability =\n      request.client.crossOriginIsolatedCapability\n  }\n\n  // 4. If useParallelQueue is true, then set taskDestination to the result of\n  // starting a new parallel queue.\n  // TODO\n\n  // 5. Let timingInfo be a new fetch timing info whose start time and\n  // post-redirect start time are the coarsened shared current time given\n  // crossOriginIsolatedCapability.\n  const currentTime = coarsenedSharedCurrentTime(crossOriginIsolatedCapability)\n  const timingInfo = createOpaqueTimingInfo({\n    startTime: currentTime\n  })\n\n  // 6. Let fetchParams be a new fetch params whose\n  // request is request,\n  // timing info is timingInfo,\n  // process request body chunk length is processRequestBodyChunkLength,\n  // process request end-of-body is processRequestEndOfBody,\n  // process response is processResponse,\n  // process response consume body is processResponseConsumeBody,\n  // process response end-of-body is processResponseEndOfBody,\n  // task destination is taskDestination,\n  // and cross-origin isolated capability is crossOriginIsolatedCapability.\n  const fetchParams = {\n    controller: new Fetch(dispatcher),\n    request,\n    timingInfo,\n    processRequestBodyChunkLength,\n    processRequestEndOfBody,\n    processResponse,\n    processResponseConsumeBody,\n    processResponseEndOfBody,\n    taskDestination,\n    crossOriginIsolatedCapability\n  }\n\n  // 7. If request\u2019s body is a byte sequence, then set request\u2019s body to\n  //    request\u2019s body as a body.\n  // NOTE: Since fetching is only called from fetch, body should already be\n  // extracted.\n  assert(!request.body || request.body.stream)\n\n  // 8. If request\u2019s window is \"client\", then set request\u2019s window to request\u2019s\n  // client, if request\u2019s client\u2019s global object is a Window object; otherwise\n  // \"no-window\".\n  if (request.window === 'client') {\n    // TODO: What if request.client is null?\n    request.window =\n      request.client?.globalObject?.constructor?.name === 'Window'\n        ? request.client\n        : 'no-window'\n  }\n\n  // 9. If request\u2019s origin is \"client\", then set request\u2019s origin to request\u2019s\n  // client\u2019s origin.\n  if (request.origin === 'client') {\n    request.origin = request.client.origin\n  }\n\n  // 10. If all of the following conditions are true:\n  // TODO\n\n  // 11. If request\u2019s policy container is \"client\", then:\n  if (request.policyContainer === 'client') {\n    // 1. If request\u2019s client is non-null, then set request\u2019s policy\n    // container to a clone of request\u2019s client\u2019s policy container. [HTML]\n    if (request.client != null) {\n      request.policyContainer = clonePolicyContainer(\n        request.client.policyContainer\n      )\n    } else {\n      // 2. Otherwise, set request\u2019s policy container to a new policy\n      // container.\n      request.policyContainer = makePolicyContainer()\n    }\n  }\n\n  // 12. If request\u2019s header list does not contain `Accept`, then:\n  if (!request.headersList.contains('accept', true)) {\n    // 1. Let value be `*/*`.\n    const value = '*/*'\n\n    // 2. A user agent should set value to the first matching statement, if\n    // any, switching on request\u2019s destination:\n    // \"document\"\n    // \"frame\"\n    // \"iframe\"\n    // `text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8`\n    // \"image\"\n    // `image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5`\n    // \"style\"\n    // `text/css,*/*;q=0.1`\n    // TODO\n\n    // 3. Append `Accept`/value to request\u2019s header list.\n    request.headersList.append('accept', value, true)\n  }\n\n  // 13. If request\u2019s header list does not contain `Accept-Language`, then\n  // user agents should append `Accept-Language`/an appropriate value to\n  // request\u2019s header list.\n  if (!request.headersList.contains('accept-language', true)) {\n    request.headersList.append('accept-language', '*', true)\n  }\n\n  // 14. If request\u2019s priority is null, then use request\u2019s initiator and\n  // destination appropriately in setting request\u2019s priority to a\n  // user-agent-defined object.\n  if (request.priority === null) {\n    // TODO\n  }\n\n  // 15. If request is a subresource request, then:\n  if (subresourceSet.has(request.destination)) {\n    // TODO\n  }\n\n  // 16. Run main fetch given fetchParams.\n  mainFetch(fetchParams)\n    .catch(err => {\n      fetchParams.controller.terminate(err)\n    })\n\n  // 17. Return fetchParam's controller\n  return fetchParams.controller\n}\n\n// https://fetch.spec.whatwg.org/#concept-main-fetch\nasync function mainFetch (fetchParams, recursive = false) {\n  // 1. Let request be fetchParams\u2019s request.\n  const request = fetchParams.request\n\n  // 2. Let response be null.\n  let response = null\n\n  // 3. If request\u2019s local-URLs-only flag is set and request\u2019s current URL is\n  // not local, then set response to a network error.\n  if (request.localURLsOnly && !urlIsLocal(requestCurrentURL(request))) {\n    response = makeNetworkError('local URLs only')\n  }\n\n  // 4. Run report Content Security Policy violations for request.\n  // TODO\n\n  // 5. Upgrade request to a potentially trustworthy URL, if appropriate.\n  tryUpgradeRequestToAPotentiallyTrustworthyURL(request)\n\n  // 6. If should request be blocked due to a bad port, should fetching request\n  // be blocked as mixed content, or should request be blocked by Content\n  // Security Policy returns blocked, then set response to a network error.\n  if (requestBadPort(request) === 'blocked') {\n    response = makeNetworkError('bad port')\n  }\n  // TODO: should fetching request be blocked as mixed content?\n  // TODO: should request be blocked by Content Security Policy?\n\n  // 7. If request\u2019s referrer policy is the empty string, then set request\u2019s\n  // referrer policy to request\u2019s policy container\u2019s referrer policy.\n  if (request.referrerPolicy === '') {\n    request.referrerPolicy = request.policyContainer.referrerPolicy\n  }\n\n  // 8. If request\u2019s referrer is not \"no-referrer\", then set request\u2019s\n  // referrer to the result of invoking determine request\u2019s referrer.\n  if (request.referrer !== 'no-referrer') {\n    request.referrer = determineRequestsReferrer(request)\n  }\n\n  // 9. Set request\u2019s current URL\u2019s scheme to \"https\" if all of the following\n  // conditions are true:\n  // - request\u2019s current URL\u2019s scheme is \"http\"\n  // - request\u2019s current URL\u2019s host is a domain\n  // - Matching request\u2019s current URL\u2019s host per Known HSTS Host Domain Name\n  //   Matching results in either a superdomain match with an asserted\n  //   includeSubDomains directive or a congruent match (with or without an\n  //   asserted includeSubDomains directive). [HSTS]\n  // TODO\n\n  // 10. If recursive is false, then run the remaining steps in parallel.\n  // TODO\n\n  // 11. If response is null, then set response to the result of running\n  // the steps corresponding to the first matching statement:\n  if (response === null) {\n    response = await (async () => {\n      const currentURL = requestCurrentURL(request)\n\n      if (\n        // - request\u2019s current URL\u2019s origin is same origin with request\u2019s origin,\n        //   and request\u2019s response tainting is \"basic\"\n        (sameOrigin(currentURL, request.url) && request.responseTainting === 'basic') ||\n        // request\u2019s current URL\u2019s scheme is \"data\"\n        (currentURL.protocol === 'data:') ||\n        // - request\u2019s mode is \"navigate\" or \"websocket\"\n        (request.mode === 'navigate' || request.mode === 'websocket')\n      ) {\n        // 1. Set request\u2019s response tainting to \"basic\".\n        request.responseTainting = 'basic'\n\n        // 2. Return the result of running scheme fetch given fetchParams.\n        return await schemeFetch(fetchParams)\n      }\n\n      // request\u2019s mode is \"same-origin\"\n      if (request.mode === 'same-origin') {\n        // 1. Return a network error.\n        return makeNetworkError('request mode cannot be \"same-origin\"')\n      }\n\n      // request\u2019s mode is \"no-cors\"\n      if (request.mode === 'no-cors') {\n        // 1. If request\u2019s redirect mode is not \"follow\", then return a network\n        // error.\n        if (request.redirect !== 'follow') {\n          return makeNetworkError(\n            'redirect mode cannot be \"follow\" for \"no-cors\" request'\n          )\n        }\n\n        // 2. Set request\u2019s response tainting to \"opaque\".\n        request.responseTainting = 'opaque'\n\n        // 3. Return the result of running scheme fetch given fetchParams.\n        return await schemeFetch(fetchParams)\n      }\n\n      // request\u2019s current URL\u2019s scheme is not an HTTP(S) scheme\n      if (!urlIsHttpHttpsScheme(requestCurrentURL(request))) {\n        // Return a network error.\n        return makeNetworkError('URL scheme must be a HTTP(S) scheme')\n      }\n\n      // - request\u2019s use-CORS-preflight flag is set\n      // - request\u2019s unsafe-request flag is set and either request\u2019s method is\n      //   not a CORS-safelisted method or CORS-unsafe request-header names with\n      //   request\u2019s header list is not empty\n      //    1. Set request\u2019s response tainting to \"cors\".\n      //    2. Let corsWithPreflightResponse be the result of running HTTP fetch\n      //    given fetchParams and true.\n      //    3. If corsWithPreflightResponse is a network error, then clear cache\n      //    entries using request.\n      //    4. Return corsWithPreflightResponse.\n      // TODO\n\n      // Otherwise\n      //    1. Set request\u2019s response tainting to \"cors\".\n      request.responseTainting = 'cors'\n\n      //    2. Return the result of running HTTP fetch given fetchParams.\n      return await httpFetch(fetchParams)\n    })()\n  }\n\n  // 12. If recursive is true, then return response.\n  if (recursive) {\n    return response\n  }\n\n  // 13. If response is not a network error and response is not a filtered\n  // response, then:\n  if (response.status !== 0 && !response.internalResponse) {\n    // If request\u2019s response tainting is \"cors\", then:\n    if (request.responseTainting === 'cors') {\n      // 1. Let headerNames be the result of extracting header list values\n      // given `Access-Control-Expose-Headers` and response\u2019s header list.\n      // TODO\n      // 2. If request\u2019s credentials mode is not \"include\" and headerNames\n      // contains `*`, then set response\u2019s CORS-exposed header-name list to\n      // all unique header names in response\u2019s header list.\n      // TODO\n      // 3. Otherwise, if headerNames is not null or failure, then set\n      // response\u2019s CORS-exposed header-name list to headerNames.\n      // TODO\n    }\n\n    // Set response to the following filtered response with response as its\n    // internal response, depending on request\u2019s response tainting:\n    if (request.responseTainting === 'basic') {\n      response = filterResponse(response, 'basic')\n    } else if (request.responseTainting === 'cors') {\n      response = filterResponse(response, 'cors')\n    } else if (request.responseTainting === 'opaque') {\n      response = filterResponse(response, 'opaque')\n    } else {\n      assert(false)\n    }\n  }\n\n  // 14. Let internalResponse be response, if response is a network error,\n  // and response\u2019s internal response otherwise.\n  let internalResponse =\n    response.status === 0 ? response : response.internalResponse\n\n  // 15. If internalResponse\u2019s URL list is empty, then set it to a clone of\n  // request\u2019s URL list.\n  if (internalResponse.urlList.length === 0) {\n    internalResponse.urlList.push(...request.urlList)\n  }\n\n  // 16. If request\u2019s timing allow failed flag is unset, then set\n  // internalResponse\u2019s timing allow passed flag.\n  if (!request.timingAllowFailed) {\n    response.timingAllowPassed = true\n  }\n\n  // 17. If response is not a network error and any of the following returns\n  // blocked\n  // - should internalResponse to request be blocked as mixed content\n  // - should internalResponse to request be blocked by Content Security Policy\n  // - should internalResponse to request be blocked due to its MIME type\n  // - should internalResponse to request be blocked due to nosniff\n  // TODO\n\n  // 18. If response\u2019s type is \"opaque\", internalResponse\u2019s status is 206,\n  // internalResponse\u2019s range-requested flag is set, and request\u2019s header\n  // list does not contain `Range`, then set response and internalResponse\n  // to a network error.\n  if (\n    response.type === 'opaque' &&\n    internalResponse.status === 206 &&\n    internalResponse.rangeRequested &&\n    !request.headers.contains('range', true)\n  ) {\n    response = internalResponse = makeNetworkError()\n  }\n\n  // 19. If response is not a network error and either request\u2019s method is\n  // `HEAD` or `CONNECT`, or internalResponse\u2019s status is a null body status,\n  // set internalResponse\u2019s body to null and disregard any enqueuing toward\n  // it (if any).\n  if (\n    response.status !== 0 &&\n    (request.method === 'HEAD' ||\n      request.method === 'CONNECT' ||\n      nullBodyStatus.includes(internalResponse.status))\n  ) {\n    internalResponse.body = null\n    fetchParams.controller.dump = true\n  }\n\n  // 20. If request\u2019s integrity metadata is not the empty string, then:\n  if (request.integrity) {\n    // 1. Let processBodyError be this step: run fetch finale given fetchParams\n    // and a network error.\n    const processBodyError = (reason) =>\n      fetchFinale(fetchParams, makeNetworkError(reason))\n\n    // 2. If request\u2019s response tainting is \"opaque\", or response\u2019s body is null,\n    // then run processBodyError and abort these steps.\n    if (request.responseTainting === 'opaque' || response.body == null) {\n      processBodyError(response.error)\n      return\n    }\n\n    // 3. Let processBody given bytes be these steps:\n    const processBody = (bytes) => {\n      // 1. If bytes do not match request\u2019s integrity metadata,\n      // then run processBodyError and abort these steps. [SRI]\n      if (!bytesMatch(bytes, request.integrity)) {\n        processBodyError('integrity mismatch')\n        return\n      }\n\n      // 2. Set response\u2019s body to bytes as a body.\n      response.body = safelyExtractBody(bytes)[0]\n\n      // 3. Run fetch finale given fetchParams and response.\n      fetchFinale(fetchParams, response)\n    }\n\n    // 4. Fully read response\u2019s body given processBody and processBodyError.\n    await fullyReadBody(response.body, processBody, processBodyError)\n  } else {\n    // 21. Otherwise, run fetch finale given fetchParams and response.\n    fetchFinale(fetchParams, response)\n  }\n}\n\n// https://fetch.spec.whatwg.org/#concept-scheme-fetch\n// given a fetch params fetchParams\nfunction schemeFetch (fetchParams) {\n  // Note: since the connection is destroyed on redirect, which sets fetchParams to a\n  // cancelled state, we do not want this condition to trigger *unless* there have been\n  // no redirects. See https://github.com/nodejs/undici/issues/1776\n  // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams.\n  if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) {\n    return Promise.resolve(makeAppropriateNetworkError(fetchParams))\n  }\n\n  // 2. Let request be fetchParams\u2019s request.\n  const { request } = fetchParams\n\n  const { protocol: scheme } = requestCurrentURL(request)\n\n  // 3. Switch on request\u2019s current URL\u2019s scheme and run the associated steps:\n  switch (scheme) {\n    case 'about:': {\n      // If request\u2019s current URL\u2019s path is the string \"blank\", then return a new response\n      // whose status message is `OK`, header list is \u00AB (`Content-Type`, `text/html;charset=utf-8`) \u00BB,\n      // and body is the empty byte sequence as a body.\n\n      // Otherwise, return a network error.\n      return Promise.resolve(makeNetworkError('about scheme is not supported'))\n    }\n    case 'blob:': {\n      if (!resolveObjectURL) {\n        resolveObjectURL = require('node:buffer').resolveObjectURL\n      }\n\n      // 1. Let blobURLEntry be request\u2019s current URL\u2019s blob URL entry.\n      const blobURLEntry = requestCurrentURL(request)\n\n      // https://github.com/web-platform-tests/wpt/blob/7b0ebaccc62b566a1965396e5be7bb2bc06f841f/FileAPI/url/resources/fetch-tests.js#L52-L56\n      // Buffer.resolveObjectURL does not ignore URL queries.\n      if (blobURLEntry.search.length !== 0) {\n        return Promise.resolve(makeNetworkError('NetworkError when attempting to fetch resource.'))\n      }\n\n      const blob = resolveObjectURL(blobURLEntry.toString())\n\n      // 2. If request\u2019s method is not `GET`, blobURLEntry is null, or blobURLEntry\u2019s\n      //    object is not a Blob object, then return a network error.\n      if (request.method !== 'GET' || !isBlobLike(blob)) {\n        return Promise.resolve(makeNetworkError('invalid method'))\n      }\n\n      // 3. Let blob be blobURLEntry\u2019s object.\n      // Note: done above\n\n      // 4. Let response be a new response.\n      const response = makeResponse()\n\n      // 5. Let fullLength be blob\u2019s size.\n      const fullLength = blob.size\n\n      // 6. Let serializedFullLength be fullLength, serialized and isomorphic encoded.\n      const serializedFullLength = isomorphicEncode(`${fullLength}`)\n\n      // 7. Let type be blob\u2019s type.\n      const type = blob.type\n\n      // 8. If request\u2019s header list does not contain `Range`:\n      // 9. Otherwise:\n      if (!request.headersList.contains('range', true)) {\n        // 1. Let bodyWithType be the result of safely extracting blob.\n        // Note: in the FileAPI a blob \"object\" is a Blob *or* a MediaSource.\n        // In node, this can only ever be a Blob. Therefore we can safely\n        // use extractBody directly.\n        const bodyWithType = extractBody(blob)\n\n        // 2. Set response\u2019s status message to `OK`.\n        response.statusText = 'OK'\n\n        // 3. Set response\u2019s body to bodyWithType\u2019s body.\n        response.body = bodyWithType[0]\n\n        // 4. Set response\u2019s header list to \u00AB (`Content-Length`, serializedFullLength), (`Content-Type`, type) \u00BB.\n        response.headersList.set('content-length', serializedFullLength, true)\n        response.headersList.set('content-type', type, true)\n      } else {\n        // 1. Set response\u2019s range-requested flag.\n        response.rangeRequested = true\n\n        // 2. Let rangeHeader be the result of getting `Range` from request\u2019s header list.\n        const rangeHeader = request.headersList.get('range', true)\n\n        // 3. Let rangeValue be the result of parsing a single range header value given rangeHeader and true.\n        const rangeValue = simpleRangeHeaderValue(rangeHeader, true)\n\n        // 4. If rangeValue is failure, then return a network error.\n        if (rangeValue === 'failure') {\n          return Promise.resolve(makeNetworkError('failed to fetch the data URL'))\n        }\n\n        // 5. Let (rangeStart, rangeEnd) be rangeValue.\n        let { rangeStartValue: rangeStart, rangeEndValue: rangeEnd } = rangeValue\n\n        // 6. If rangeStart is null:\n        // 7. Otherwise:\n        if (rangeStart === null) {\n          // 1. Set rangeStart to fullLength \u2212 rangeEnd.\n          rangeStart = fullLength - rangeEnd\n\n          // 2. Set rangeEnd to rangeStart + rangeEnd \u2212 1.\n          rangeEnd = rangeStart + rangeEnd - 1\n        } else {\n          // 1. If rangeStart is greater than or equal to fullLength, then return a network error.\n          if (rangeStart >= fullLength) {\n            return Promise.resolve(makeNetworkError('Range start is greater than the blob\\'s size.'))\n          }\n\n          // 2. If rangeEnd is null or rangeEnd is greater than or equal to fullLength, then set\n          //    rangeEnd to fullLength \u2212 1.\n          if (rangeEnd === null || rangeEnd >= fullLength) {\n            rangeEnd = fullLength - 1\n          }\n        }\n\n        // 8. Let slicedBlob be the result of invoking slice blob given blob, rangeStart,\n        //    rangeEnd + 1, and type.\n        const slicedBlob = blob.slice(rangeStart, rangeEnd, type)\n\n        // 9. Let slicedBodyWithType be the result of safely extracting slicedBlob.\n        // Note: same reason as mentioned above as to why we use extractBody\n        const slicedBodyWithType = extractBody(slicedBlob)\n\n        // 10. Set response\u2019s body to slicedBodyWithType\u2019s body.\n        response.body = slicedBodyWithType[0]\n\n        // 11. Let serializedSlicedLength be slicedBlob\u2019s size, serialized and isomorphic encoded.\n        const serializedSlicedLength = isomorphicEncode(`${slicedBlob.size}`)\n\n        // 12. Let contentRange be the result of invoking build a content range given rangeStart,\n        //     rangeEnd, and fullLength.\n        const contentRange = buildContentRange(rangeStart, rangeEnd, fullLength)\n\n        // 13. Set response\u2019s status to 206.\n        response.status = 206\n\n        // 14. Set response\u2019s status message to `Partial Content`.\n        response.statusText = 'Partial Content'\n\n        // 15. Set response\u2019s header list to \u00AB (`Content-Length`, serializedSlicedLength),\n        //     (`Content-Type`, type), (`Content-Range`, contentRange) \u00BB.\n        response.headersList.set('content-length', serializedSlicedLength, true)\n        response.headersList.set('content-type', type, true)\n        response.headersList.set('content-range', contentRange, true)\n      }\n\n      // 10. Return response.\n      return Promise.resolve(response)\n    }\n    case 'data:': {\n      // 1. Let dataURLStruct be the result of running the\n      //    data: URL processor on request\u2019s current URL.\n      const currentURL = requestCurrentURL(request)\n      const dataURLStruct = dataURLProcessor(currentURL)\n\n      // 2. If dataURLStruct is failure, then return a\n      //    network error.\n      if (dataURLStruct === 'failure') {\n        return Promise.resolve(makeNetworkError('failed to fetch the data URL'))\n      }\n\n      // 3. Let mimeType be dataURLStruct\u2019s MIME type, serialized.\n      const mimeType = serializeAMimeType(dataURLStruct.mimeType)\n\n      // 4. Return a response whose status message is `OK`,\n      //    header list is \u00AB (`Content-Type`, mimeType) \u00BB,\n      //    and body is dataURLStruct\u2019s body as a body.\n      return Promise.resolve(makeResponse({\n        statusText: 'OK',\n        headersList: [\n          ['content-type', { name: 'Content-Type', value: mimeType }]\n        ],\n        body: safelyExtractBody(dataURLStruct.body)[0]\n      }))\n    }\n    case 'file:': {\n      // For now, unfortunate as it is, file URLs are left as an exercise for the reader.\n      // When in doubt, return a network error.\n      return Promise.resolve(makeNetworkError('not implemented... yet...'))\n    }\n    case 'http:':\n    case 'https:': {\n      // Return the result of running HTTP fetch given fetchParams.\n\n      return httpFetch(fetchParams)\n        .catch((err) => makeNetworkError(err))\n    }\n    default: {\n      return Promise.resolve(makeNetworkError('unknown scheme'))\n    }\n  }\n}\n\n// https://fetch.spec.whatwg.org/#finalize-response\nfunction finalizeResponse (fetchParams, response) {\n  // 1. Set fetchParams\u2019s request\u2019s done flag.\n  fetchParams.request.done = true\n\n  // 2, If fetchParams\u2019s process response done is not null, then queue a fetch\n  // task to run fetchParams\u2019s process response done given response, with\n  // fetchParams\u2019s task destination.\n  if (fetchParams.processResponseDone != null) {\n    queueMicrotask(() => fetchParams.processResponseDone(response))\n  }\n}\n\n// https://fetch.spec.whatwg.org/#fetch-finale\nfunction fetchFinale (fetchParams, response) {\n  // 1. Let timingInfo be fetchParams\u2019s timing info.\n  let timingInfo = fetchParams.timingInfo\n\n  // 2. If response is not a network error and fetchParams\u2019s request\u2019s client is a secure context,\n  //    then set timingInfo\u2019s server-timing headers to the result of getting, decoding, and splitting\n  //    `Server-Timing` from response\u2019s internal response\u2019s header list.\n  // TODO\n\n  // 3. Let processResponseEndOfBody be the following steps:\n  const processResponseEndOfBody = () => {\n    // 1. Let unsafeEndTime be the unsafe shared current time.\n    const unsafeEndTime = Date.now() // ?\n\n    // 2. If fetchParams\u2019s request\u2019s destination is \"document\", then set fetchParams\u2019s controller\u2019s\n    //    full timing info to fetchParams\u2019s timing info.\n    if (fetchParams.request.destination === 'document') {\n      fetchParams.controller.fullTimingInfo = timingInfo\n    }\n\n    // 3. Set fetchParams\u2019s controller\u2019s report timing steps to the following steps given a global object global:\n    fetchParams.controller.reportTimingSteps = () => {\n      // 1. If fetchParams\u2019s request\u2019s URL\u2019s scheme is not an HTTP(S) scheme, then return.\n      if (fetchParams.request.url.protocol !== 'https:') {\n        return\n      }\n\n      // 2. Set timingInfo\u2019s end time to the relative high resolution time given unsafeEndTime and global.\n      timingInfo.endTime = unsafeEndTime\n\n      // 3. Let cacheState be response\u2019s cache state.\n      let cacheState = response.cacheState\n\n      // 4. Let bodyInfo be response\u2019s body info.\n      const bodyInfo = response.bodyInfo\n\n      // 5. If response\u2019s timing allow passed flag is not set, then set timingInfo to the result of creating an\n      //    opaque timing info for timingInfo and set cacheState to the empty string.\n      if (!response.timingAllowPassed) {\n        timingInfo = createOpaqueTimingInfo(timingInfo)\n\n        cacheState = ''\n      }\n\n      // 6. Let responseStatus be 0.\n      let responseStatus = 0\n\n      // 7. If fetchParams\u2019s request\u2019s mode is not \"navigate\" or response\u2019s has-cross-origin-redirects is false:\n      if (fetchParams.request.mode !== 'navigator' || !response.hasCrossOriginRedirects) {\n        // 1. Set responseStatus to response\u2019s status.\n        responseStatus = response.status\n\n        // 2. Let mimeType be the result of extracting a MIME type from response\u2019s header list.\n        const mimeType = extractMimeType(response.headersList)\n\n        // 3. If mimeType is not failure, then set bodyInfo\u2019s content type to the result of minimizing a supported MIME type given mimeType.\n        if (mimeType !== 'failure') {\n          bodyInfo.contentType = minimizeSupportedMimeType(mimeType)\n        }\n      }\n\n      // 8. If fetchParams\u2019s request\u2019s initiator type is non-null, then mark resource timing given timingInfo,\n      //    fetchParams\u2019s request\u2019s URL, fetchParams\u2019s request\u2019s initiator type, global, cacheState, bodyInfo,\n      //    and responseStatus.\n      if (fetchParams.request.initiatorType != null) {\n        // TODO: update markresourcetiming\n        markResourceTiming(timingInfo, fetchParams.request.url.href, fetchParams.request.initiatorType, globalThis, cacheState, bodyInfo, responseStatus)\n      }\n    }\n\n    // 4. Let processResponseEndOfBodyTask be the following steps:\n    const processResponseEndOfBodyTask = () => {\n      // 1. Set fetchParams\u2019s request\u2019s done flag.\n      fetchParams.request.done = true\n\n      // 2. If fetchParams\u2019s process response end-of-body is non-null, then run fetchParams\u2019s process\n      //    response end-of-body given response.\n      if (fetchParams.processResponseEndOfBody != null) {\n        queueMicrotask(() => fetchParams.processResponseEndOfBody(response))\n      }\n\n      // 3. If fetchParams\u2019s request\u2019s initiator type is non-null and fetchParams\u2019s request\u2019s client\u2019s\n      //    global object is fetchParams\u2019s task destination, then run fetchParams\u2019s controller\u2019s report\n      //    timing steps given fetchParams\u2019s request\u2019s client\u2019s global object.\n      if (fetchParams.request.initiatorType != null) {\n        fetchParams.controller.reportTimingSteps()\n      }\n    }\n\n    // 5. Queue a fetch task to run processResponseEndOfBodyTask with fetchParams\u2019s task destination\n    queueMicrotask(() => processResponseEndOfBodyTask())\n  }\n\n  // 4. If fetchParams\u2019s process response is non-null, then queue a fetch task to run fetchParams\u2019s\n  //    process response given response, with fetchParams\u2019s task destination.\n  if (fetchParams.processResponse != null) {\n    queueMicrotask(() => {\n      fetchParams.processResponse(response)\n      fetchParams.processResponse = null\n    })\n  }\n\n  // 5. Let internalResponse be response, if response is a network error; otherwise response\u2019s internal response.\n  const internalResponse = response.type === 'error' ? response : (response.internalResponse ?? response)\n\n  // 6. If internalResponse\u2019s body is null, then run processResponseEndOfBody.\n  // 7. Otherwise:\n  if (internalResponse.body == null) {\n    processResponseEndOfBody()\n  } else {\n    // mcollina: all the following steps of the specs are skipped.\n    // The internal transform stream is not needed.\n    // See https://github.com/nodejs/undici/pull/3093#issuecomment-2050198541\n\n    // 1. Let transformStream be a new TransformStream.\n    // 2. Let identityTransformAlgorithm be an algorithm which, given chunk, enqueues chunk in transformStream.\n    // 3. Set up transformStream with transformAlgorithm set to identityTransformAlgorithm and flushAlgorithm\n    //    set to processResponseEndOfBody.\n    // 4. Set internalResponse\u2019s body\u2019s stream to the result of internalResponse\u2019s body\u2019s stream piped through transformStream.\n\n    finished(internalResponse.body.stream, () => {\n      processResponseEndOfBody()\n    })\n  }\n}\n\n// https://fetch.spec.whatwg.org/#http-fetch\nasync function httpFetch (fetchParams) {\n  // 1. Let request be fetchParams\u2019s request.\n  const request = fetchParams.request\n\n  // 2. Let response be null.\n  let response = null\n\n  // 3. Let actualResponse be null.\n  let actualResponse = null\n\n  // 4. Let timingInfo be fetchParams\u2019s timing info.\n  const timingInfo = fetchParams.timingInfo\n\n  // 5. If request\u2019s service-workers mode is \"all\", then:\n  if (request.serviceWorkers === 'all') {\n    // TODO\n  }\n\n  // 6. If response is null, then:\n  if (response === null) {\n    // 1. If makeCORSPreflight is true and one of these conditions is true:\n    // TODO\n\n    // 2. If request\u2019s redirect mode is \"follow\", then set request\u2019s\n    // service-workers mode to \"none\".\n    if (request.redirect === 'follow') {\n      request.serviceWorkers = 'none'\n    }\n\n    // 3. Set response and actualResponse to the result of running\n    // HTTP-network-or-cache fetch given fetchParams.\n    actualResponse = response = await httpNetworkOrCacheFetch(fetchParams)\n\n    // 4. If request\u2019s response tainting is \"cors\" and a CORS check\n    // for request and response returns failure, then return a network error.\n    if (\n      request.responseTainting === 'cors' &&\n      corsCheck(request, response) === 'failure'\n    ) {\n      return makeNetworkError('cors failure')\n    }\n\n    // 5. If the TAO check for request and response returns failure, then set\n    // request\u2019s timing allow failed flag.\n    if (TAOCheck(request, response) === 'failure') {\n      request.timingAllowFailed = true\n    }\n  }\n\n  // 7. If either request\u2019s response tainting or response\u2019s type\n  // is \"opaque\", and the cross-origin resource policy check with\n  // request\u2019s origin, request\u2019s client, request\u2019s destination,\n  // and actualResponse returns blocked, then return a network error.\n  if (\n    (request.responseTainting === 'opaque' || response.type === 'opaque') &&\n    crossOriginResourcePolicyCheck(\n      request.origin,\n      request.client,\n      request.destination,\n      actualResponse\n    ) === 'blocked'\n  ) {\n    return makeNetworkError('blocked')\n  }\n\n  // 8. If actualResponse\u2019s status is a redirect status, then:\n  if (redirectStatusSet.has(actualResponse.status)) {\n    // 1. If actualResponse\u2019s status is not 303, request\u2019s body is not null,\n    // and the connection uses HTTP/2, then user agents may, and are even\n    // encouraged to, transmit an RST_STREAM frame.\n    // See, https://github.com/whatwg/fetch/issues/1288\n    if (request.redirect !== 'manual') {\n      fetchParams.controller.connection.destroy(undefined, false)\n    }\n\n    // 2. Switch on request\u2019s redirect mode:\n    if (request.redirect === 'error') {\n      // Set response to a network error.\n      response = makeNetworkError('unexpected redirect')\n    } else if (request.redirect === 'manual') {\n      // Set response to an opaque-redirect filtered response whose internal\n      // response is actualResponse.\n      // NOTE(spec): On the web this would return an `opaqueredirect` response,\n      // but that doesn't make sense server side.\n      // See https://github.com/nodejs/undici/issues/1193.\n      response = actualResponse\n    } else if (request.redirect === 'follow') {\n      // Set response to the result of running HTTP-redirect fetch given\n      // fetchParams and response.\n      response = await httpRedirectFetch(fetchParams, response)\n    } else {\n      assert(false)\n    }\n  }\n\n  // 9. Set response\u2019s timing info to timingInfo.\n  response.timingInfo = timingInfo\n\n  // 10. Return response.\n  return response\n}\n\n// https://fetch.spec.whatwg.org/#http-redirect-fetch\nfunction httpRedirectFetch (fetchParams, response) {\n  // 1. Let request be fetchParams\u2019s request.\n  const request = fetchParams.request\n\n  // 2. Let actualResponse be response, if response is not a filtered response,\n  // and response\u2019s internal response otherwise.\n  const actualResponse = response.internalResponse\n    ? response.internalResponse\n    : response\n\n  // 3. Let locationURL be actualResponse\u2019s location URL given request\u2019s current\n  // URL\u2019s fragment.\n  let locationURL\n\n  try {\n    locationURL = responseLocationURL(\n      actualResponse,\n      requestCurrentURL(request).hash\n    )\n\n    // 4. If locationURL is null, then return response.\n    if (locationURL == null) {\n      return response\n    }\n  } catch (err) {\n    // 5. If locationURL is failure, then return a network error.\n    return Promise.resolve(makeNetworkError(err))\n  }\n\n  // 6. If locationURL\u2019s scheme is not an HTTP(S) scheme, then return a network\n  // error.\n  if (!urlIsHttpHttpsScheme(locationURL)) {\n    return Promise.resolve(makeNetworkError('URL scheme must be a HTTP(S) scheme'))\n  }\n\n  // 7. If request\u2019s redirect count is 20, then return a network error.\n  if (request.redirectCount === 20) {\n    return Promise.resolve(makeNetworkError('redirect count exceeded'))\n  }\n\n  // 8. Increase request\u2019s redirect count by 1.\n  request.redirectCount += 1\n\n  // 9. If request\u2019s mode is \"cors\", locationURL includes credentials, and\n  // request\u2019s origin is not same origin with locationURL\u2019s origin, then return\n  //  a network error.\n  if (\n    request.mode === 'cors' &&\n    (locationURL.username || locationURL.password) &&\n    !sameOrigin(request, locationURL)\n  ) {\n    return Promise.resolve(makeNetworkError('cross origin not allowed for request mode \"cors\"'))\n  }\n\n  // 10. If request\u2019s response tainting is \"cors\" and locationURL includes\n  // credentials, then return a network error.\n  if (\n    request.responseTainting === 'cors' &&\n    (locationURL.username || locationURL.password)\n  ) {\n    return Promise.resolve(makeNetworkError(\n      'URL cannot contain credentials for request mode \"cors\"'\n    ))\n  }\n\n  // 11. If actualResponse\u2019s status is not 303, request\u2019s body is non-null,\n  // and request\u2019s body\u2019s source is null, then return a network error.\n  if (\n    actualResponse.status !== 303 &&\n    request.body != null &&\n    request.body.source == null\n  ) {\n    return Promise.resolve(makeNetworkError())\n  }\n\n  // 12. If one of the following is true\n  // - actualResponse\u2019s status is 301 or 302 and request\u2019s method is `POST`\n  // - actualResponse\u2019s status is 303 and request\u2019s method is not `GET` or `HEAD`\n  if (\n    ([301, 302].includes(actualResponse.status) && request.method === 'POST') ||\n    (actualResponse.status === 303 &&\n      !GET_OR_HEAD.includes(request.method))\n  ) {\n    // then:\n    // 1. Set request\u2019s method to `GET` and request\u2019s body to null.\n    request.method = 'GET'\n    request.body = null\n\n    // 2. For each headerName of request-body-header name, delete headerName from\n    // request\u2019s header list.\n    for (const headerName of requestBodyHeader) {\n      request.headersList.delete(headerName)\n    }\n  }\n\n  // 13. If request\u2019s current URL\u2019s origin is not same origin with locationURL\u2019s\n  //     origin, then for each headerName of CORS non-wildcard request-header name,\n  //     delete headerName from request\u2019s header list.\n  if (!sameOrigin(requestCurrentURL(request), locationURL)) {\n    // https://fetch.spec.whatwg.org/#cors-non-wildcard-request-header-name\n    request.headersList.delete('authorization', true)\n\n    // https://fetch.spec.whatwg.org/#authentication-entries\n    request.headersList.delete('proxy-authorization', true)\n\n    // \"Cookie\" and \"Host\" are forbidden request-headers, which undici doesn't implement.\n    request.headersList.delete('cookie', true)\n    request.headersList.delete('host', true)\n  }\n\n  // 14. If request\u2019s body is non-null, then set request\u2019s body to the first return\n  // value of safely extracting request\u2019s body\u2019s source.\n  if (request.body != null) {\n    assert(request.body.source != null)\n    request.body = safelyExtractBody(request.body.source)[0]\n  }\n\n  // 15. Let timingInfo be fetchParams\u2019s timing info.\n  const timingInfo = fetchParams.timingInfo\n\n  // 16. Set timingInfo\u2019s redirect end time and post-redirect start time to the\n  // coarsened shared current time given fetchParams\u2019s cross-origin isolated\n  // capability.\n  timingInfo.redirectEndTime = timingInfo.postRedirectStartTime =\n    coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability)\n\n  // 17. If timingInfo\u2019s redirect start time is 0, then set timingInfo\u2019s\n  //  redirect start time to timingInfo\u2019s start time.\n  if (timingInfo.redirectStartTime === 0) {\n    timingInfo.redirectStartTime = timingInfo.startTime\n  }\n\n  // 18. Append locationURL to request\u2019s URL list.\n  request.urlList.push(locationURL)\n\n  // 19. Invoke set request\u2019s referrer policy on redirect on request and\n  // actualResponse.\n  setRequestReferrerPolicyOnRedirect(request, actualResponse)\n\n  // 20. Return the result of running main fetch given fetchParams and true.\n  return mainFetch(fetchParams, true)\n}\n\n// https://fetch.spec.whatwg.org/#http-network-or-cache-fetch\nasync function httpNetworkOrCacheFetch (\n  fetchParams,\n  isAuthenticationFetch = false,\n  isNewConnectionFetch = false\n) {\n  // 1. Let request be fetchParams\u2019s request.\n  const request = fetchParams.request\n\n  // 2. Let httpFetchParams be null.\n  let httpFetchParams = null\n\n  // 3. Let httpRequest be null.\n  let httpRequest = null\n\n  // 4. Let response be null.\n  let response = null\n\n  // 5. Let storedResponse be null.\n  // TODO: cache\n\n  // 6. Let httpCache be null.\n  const httpCache = null\n\n  // 7. Let the revalidatingFlag be unset.\n  const revalidatingFlag = false\n\n  // 8. Run these steps, but abort when the ongoing fetch is terminated:\n\n  //    1. If request\u2019s window is \"no-window\" and request\u2019s redirect mode is\n  //    \"error\", then set httpFetchParams to fetchParams and httpRequest to\n  //    request.\n  if (request.window === 'no-window' && request.redirect === 'error') {\n    httpFetchParams = fetchParams\n    httpRequest = request\n  } else {\n    // Otherwise:\n\n    // 1. Set httpRequest to a clone of request.\n    httpRequest = cloneRequest(request)\n\n    // 2. Set httpFetchParams to a copy of fetchParams.\n    httpFetchParams = { ...fetchParams }\n\n    // 3. Set httpFetchParams\u2019s request to httpRequest.\n    httpFetchParams.request = httpRequest\n  }\n\n  //    3. Let includeCredentials be true if one of\n  const includeCredentials =\n    request.credentials === 'include' ||\n    (request.credentials === 'same-origin' &&\n      request.responseTainting === 'basic')\n\n  //    4. Let contentLength be httpRequest\u2019s body\u2019s length, if httpRequest\u2019s\n  //    body is non-null; otherwise null.\n  const contentLength = httpRequest.body ? httpRequest.body.length : null\n\n  //    5. Let contentLengthHeaderValue be null.\n  let contentLengthHeaderValue = null\n\n  //    6. If httpRequest\u2019s body is null and httpRequest\u2019s method is `POST` or\n  //    `PUT`, then set contentLengthHeaderValue to `0`.\n  if (\n    httpRequest.body == null &&\n    ['POST', 'PUT'].includes(httpRequest.method)\n  ) {\n    contentLengthHeaderValue = '0'\n  }\n\n  //    7. If contentLength is non-null, then set contentLengthHeaderValue to\n  //    contentLength, serialized and isomorphic encoded.\n  if (contentLength != null) {\n    contentLengthHeaderValue = isomorphicEncode(`${contentLength}`)\n  }\n\n  //    8. If contentLengthHeaderValue is non-null, then append\n  //    `Content-Length`/contentLengthHeaderValue to httpRequest\u2019s header\n  //    list.\n  if (contentLengthHeaderValue != null) {\n    httpRequest.headersList.append('content-length', contentLengthHeaderValue, true)\n  }\n\n  //    9. If contentLengthHeaderValue is non-null, then append (`Content-Length`,\n  //    contentLengthHeaderValue) to httpRequest\u2019s header list.\n\n  //    10. If contentLength is non-null and httpRequest\u2019s keepalive is true,\n  //    then:\n  if (contentLength != null && httpRequest.keepalive) {\n    // NOTE: keepalive is a noop outside of browser context.\n  }\n\n  //    11. If httpRequest\u2019s referrer is a URL, then append\n  //    `Referer`/httpRequest\u2019s referrer, serialized and isomorphic encoded,\n  //     to httpRequest\u2019s header list.\n  if (httpRequest.referrer instanceof URL) {\n    httpRequest.headersList.append('referer', isomorphicEncode(httpRequest.referrer.href), true)\n  }\n\n  //    12. Append a request `Origin` header for httpRequest.\n  appendRequestOriginHeader(httpRequest)\n\n  //    13. Append the Fetch metadata headers for httpRequest. [FETCH-METADATA]\n  appendFetchMetadata(httpRequest)\n\n  //    14. If httpRequest\u2019s header list does not contain `User-Agent`, then\n  //    user agents should append `User-Agent`/default `User-Agent` value to\n  //    httpRequest\u2019s header list.\n  if (!httpRequest.headersList.contains('user-agent', true)) {\n    httpRequest.headersList.append('user-agent', defaultUserAgent)\n  }\n\n  //    15. If httpRequest\u2019s cache mode is \"default\" and httpRequest\u2019s header\n  //    list contains `If-Modified-Since`, `If-None-Match`,\n  //    `If-Unmodified-Since`, `If-Match`, or `If-Range`, then set\n  //    httpRequest\u2019s cache mode to \"no-store\".\n  if (\n    httpRequest.cache === 'default' &&\n    (httpRequest.headersList.contains('if-modified-since', true) ||\n      httpRequest.headersList.contains('if-none-match', true) ||\n      httpRequest.headersList.contains('if-unmodified-since', true) ||\n      httpRequest.headersList.contains('if-match', true) ||\n      httpRequest.headersList.contains('if-range', true))\n  ) {\n    httpRequest.cache = 'no-store'\n  }\n\n  //    16. If httpRequest\u2019s cache mode is \"no-cache\", httpRequest\u2019s prevent\n  //    no-cache cache-control header modification flag is unset, and\n  //    httpRequest\u2019s header list does not contain `Cache-Control`, then append\n  //    `Cache-Control`/`max-age=0` to httpRequest\u2019s header list.\n  if (\n    httpRequest.cache === 'no-cache' &&\n    !httpRequest.preventNoCacheCacheControlHeaderModification &&\n    !httpRequest.headersList.contains('cache-control', true)\n  ) {\n    httpRequest.headersList.append('cache-control', 'max-age=0', true)\n  }\n\n  //    17. If httpRequest\u2019s cache mode is \"no-store\" or \"reload\", then:\n  if (httpRequest.cache === 'no-store' || httpRequest.cache === 'reload') {\n    // 1. If httpRequest\u2019s header list does not contain `Pragma`, then append\n    // `Pragma`/`no-cache` to httpRequest\u2019s header list.\n    if (!httpRequest.headersList.contains('pragma', true)) {\n      httpRequest.headersList.append('pragma', 'no-cache', true)\n    }\n\n    // 2. If httpRequest\u2019s header list does not contain `Cache-Control`,\n    // then append `Cache-Control`/`no-cache` to httpRequest\u2019s header list.\n    if (!httpRequest.headersList.contains('cache-control', true)) {\n      httpRequest.headersList.append('cache-control', 'no-cache', true)\n    }\n  }\n\n  //    18. If httpRequest\u2019s header list contains `Range`, then append\n  //    `Accept-Encoding`/`identity` to httpRequest\u2019s header list.\n  if (httpRequest.headersList.contains('range', true)) {\n    httpRequest.headersList.append('accept-encoding', 'identity', true)\n  }\n\n  //    19. Modify httpRequest\u2019s header list per HTTP. Do not append a given\n  //    header if httpRequest\u2019s header list contains that header\u2019s name.\n  //    TODO: https://github.com/whatwg/fetch/issues/1285#issuecomment-896560129\n  if (!httpRequest.headersList.contains('accept-encoding', true)) {\n    if (urlHasHttpsScheme(requestCurrentURL(httpRequest))) {\n      httpRequest.headersList.append('accept-encoding', 'br, gzip, deflate', true)\n    } else {\n      httpRequest.headersList.append('accept-encoding', 'gzip, deflate', true)\n    }\n  }\n\n  httpRequest.headersList.delete('host', true)\n\n  //    20. If includeCredentials is true, then:\n  if (includeCredentials) {\n    // 1. If the user agent is not configured to block cookies for httpRequest\n    // (see section 7 of [COOKIES]), then:\n    // TODO: credentials\n    // 2. If httpRequest\u2019s header list does not contain `Authorization`, then:\n    // TODO: credentials\n  }\n\n  //    21. If there\u2019s a proxy-authentication entry, use it as appropriate.\n  //    TODO: proxy-authentication\n\n  //    22. Set httpCache to the result of determining the HTTP cache\n  //    partition, given httpRequest.\n  //    TODO: cache\n\n  //    23. If httpCache is null, then set httpRequest\u2019s cache mode to\n  //    \"no-store\".\n  if (httpCache == null) {\n    httpRequest.cache = 'no-store'\n  }\n\n  //    24. If httpRequest\u2019s cache mode is neither \"no-store\" nor \"reload\",\n  //    then:\n  if (httpRequest.cache !== 'no-store' && httpRequest.cache !== 'reload') {\n    // TODO: cache\n  }\n\n  // 9. If aborted, then return the appropriate network error for fetchParams.\n  // TODO\n\n  // 10. If response is null, then:\n  if (response == null) {\n    // 1. If httpRequest\u2019s cache mode is \"only-if-cached\", then return a\n    // network error.\n    if (httpRequest.cache === 'only-if-cached') {\n      return makeNetworkError('only if cached')\n    }\n\n    // 2. Let forwardResponse be the result of running HTTP-network fetch\n    // given httpFetchParams, includeCredentials, and isNewConnectionFetch.\n    const forwardResponse = await httpNetworkFetch(\n      httpFetchParams,\n      includeCredentials,\n      isNewConnectionFetch\n    )\n\n    // 3. If httpRequest\u2019s method is unsafe and forwardResponse\u2019s status is\n    // in the range 200 to 399, inclusive, invalidate appropriate stored\n    // responses in httpCache, as per the \"Invalidation\" chapter of HTTP\n    // Caching, and set storedResponse to null. [HTTP-CACHING]\n    if (\n      !safeMethodsSet.has(httpRequest.method) &&\n      forwardResponse.status >= 200 &&\n      forwardResponse.status <= 399\n    ) {\n      // TODO: cache\n    }\n\n    // 4. If the revalidatingFlag is set and forwardResponse\u2019s status is 304,\n    // then:\n    if (revalidatingFlag && forwardResponse.status === 304) {\n      // TODO: cache\n    }\n\n    // 5. If response is null, then:\n    if (response == null) {\n      // 1. Set response to forwardResponse.\n      response = forwardResponse\n\n      // 2. Store httpRequest and forwardResponse in httpCache, as per the\n      // \"Storing Responses in Caches\" chapter of HTTP Caching. [HTTP-CACHING]\n      // TODO: cache\n    }\n  }\n\n  // 11. Set response\u2019s URL list to a clone of httpRequest\u2019s URL list.\n  response.urlList = [...httpRequest.urlList]\n\n  // 12. If httpRequest\u2019s header list contains `Range`, then set response\u2019s\n  // range-requested flag.\n  if (httpRequest.headersList.contains('range', true)) {\n    response.rangeRequested = true\n  }\n\n  // 13. Set response\u2019s request-includes-credentials to includeCredentials.\n  response.requestIncludesCredentials = includeCredentials\n\n  // 14. If response\u2019s status is 401, httpRequest\u2019s response tainting is not\n  // \"cors\", includeCredentials is true, and request\u2019s window is an environment\n  // settings object, then:\n  // TODO\n\n  // 15. If response\u2019s status is 407, then:\n  if (response.status === 407) {\n    // 1. If request\u2019s window is \"no-window\", then return a network error.\n    if (request.window === 'no-window') {\n      return makeNetworkError()\n    }\n\n    // 2. ???\n\n    // 3. If fetchParams is canceled, then return the appropriate network error for fetchParams.\n    if (isCancelled(fetchParams)) {\n      return makeAppropriateNetworkError(fetchParams)\n    }\n\n    // 4. Prompt the end user as appropriate in request\u2019s window and store\n    // the result as a proxy-authentication entry. [HTTP-AUTH]\n    // TODO: Invoke some kind of callback?\n\n    // 5. Set response to the result of running HTTP-network-or-cache fetch given\n    // fetchParams.\n    // TODO\n    return makeNetworkError('proxy authentication required')\n  }\n\n  // 16. If all of the following are true\n  if (\n    // response\u2019s status is 421\n    response.status === 421 &&\n    // isNewConnectionFetch is false\n    !isNewConnectionFetch &&\n    // request\u2019s body is null, or request\u2019s body is non-null and request\u2019s body\u2019s source is non-null\n    (request.body == null || request.body.source != null)\n  ) {\n    // then:\n\n    // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams.\n    if (isCancelled(fetchParams)) {\n      return makeAppropriateNetworkError(fetchParams)\n    }\n\n    // 2. Set response to the result of running HTTP-network-or-cache\n    // fetch given fetchParams, isAuthenticationFetch, and true.\n\n    // TODO (spec): The spec doesn't specify this but we need to cancel\n    // the active response before we can start a new one.\n    // https://github.com/whatwg/fetch/issues/1293\n    fetchParams.controller.connection.destroy()\n\n    response = await httpNetworkOrCacheFetch(\n      fetchParams,\n      isAuthenticationFetch,\n      true\n    )\n  }\n\n  // 17. If isAuthenticationFetch is true, then create an authentication entry\n  if (isAuthenticationFetch) {\n    // TODO\n  }\n\n  // 18. Return response.\n  return response\n}\n\n// https://fetch.spec.whatwg.org/#http-network-fetch\nasync function httpNetworkFetch (\n  fetchParams,\n  includeCredentials = false,\n  forceNewConnection = false\n) {\n  assert(!fetchParams.controller.connection || fetchParams.controller.connection.destroyed)\n\n  fetchParams.controller.connection = {\n    abort: null,\n    destroyed: false,\n    destroy (err, abort = true) {\n      if (!this.destroyed) {\n        this.destroyed = true\n        if (abort) {\n          this.abort?.(err ?? new DOMException('The operation was aborted.', 'AbortError'))\n        }\n      }\n    }\n  }\n\n  // 1. Let request be fetchParams\u2019s request.\n  const request = fetchParams.request\n\n  // 2. Let response be null.\n  let response = null\n\n  // 3. Let timingInfo be fetchParams\u2019s timing info.\n  const timingInfo = fetchParams.timingInfo\n\n  // 4. Let httpCache be the result of determining the HTTP cache partition,\n  // given request.\n  // TODO: cache\n  const httpCache = null\n\n  // 5. If httpCache is null, then set request\u2019s cache mode to \"no-store\".\n  if (httpCache == null) {\n    request.cache = 'no-store'\n  }\n\n  // 6. Let networkPartitionKey be the result of determining the network\n  // partition key given request.\n  // TODO\n\n  // 7. Let newConnection be \"yes\" if forceNewConnection is true; otherwise\n  // \"no\".\n  const newConnection = forceNewConnection ? 'yes' : 'no' // eslint-disable-line no-unused-vars\n\n  // 8. Switch on request\u2019s mode:\n  if (request.mode === 'websocket') {\n    // Let connection be the result of obtaining a WebSocket connection,\n    // given request\u2019s current URL.\n    // TODO\n  } else {\n    // Let connection be the result of obtaining a connection, given\n    // networkPartitionKey, request\u2019s current URL\u2019s origin,\n    // includeCredentials, and forceNewConnection.\n    // TODO\n  }\n\n  // 9. Run these steps, but abort when the ongoing fetch is terminated:\n\n  //    1. If connection is failure, then return a network error.\n\n  //    2. Set timingInfo\u2019s final connection timing info to the result of\n  //    calling clamp and coarsen connection timing info with connection\u2019s\n  //    timing info, timingInfo\u2019s post-redirect start time, and fetchParams\u2019s\n  //    cross-origin isolated capability.\n\n  //    3. If connection is not an HTTP/2 connection, request\u2019s body is non-null,\n  //    and request\u2019s body\u2019s source is null, then append (`Transfer-Encoding`,\n  //    `chunked`) to request\u2019s header list.\n\n  //    4. Set timingInfo\u2019s final network-request start time to the coarsened\n  //    shared current time given fetchParams\u2019s cross-origin isolated\n  //    capability.\n\n  //    5. Set response to the result of making an HTTP request over connection\n  //    using request with the following caveats:\n\n  //        - Follow the relevant requirements from HTTP. [HTTP] [HTTP-SEMANTICS]\n  //        [HTTP-COND] [HTTP-CACHING] [HTTP-AUTH]\n\n  //        - If request\u2019s body is non-null, and request\u2019s body\u2019s source is null,\n  //        then the user agent may have a buffer of up to 64 kibibytes and store\n  //        a part of request\u2019s body in that buffer. If the user agent reads from\n  //        request\u2019s body beyond that buffer\u2019s size and the user agent needs to\n  //        resend request, then instead return a network error.\n\n  //        - Set timingInfo\u2019s final network-response start time to the coarsened\n  //        shared current time given fetchParams\u2019s cross-origin isolated capability,\n  //        immediately after the user agent\u2019s HTTP parser receives the first byte\n  //        of the response (e.g., frame header bytes for HTTP/2 or response status\n  //        line for HTTP/1.x).\n\n  //        - Wait until all the headers are transmitted.\n\n  //        - Any responses whose status is in the range 100 to 199, inclusive,\n  //        and is not 101, are to be ignored, except for the purposes of setting\n  //        timingInfo\u2019s final network-response start time above.\n\n  //    - If request\u2019s header list contains `Transfer-Encoding`/`chunked` and\n  //    response is transferred via HTTP/1.0 or older, then return a network\n  //    error.\n\n  //    - If the HTTP request results in a TLS client certificate dialog, then:\n\n  //        1. If request\u2019s window is an environment settings object, make the\n  //        dialog available in request\u2019s window.\n\n  //        2. Otherwise, return a network error.\n\n  // To transmit request\u2019s body body, run these steps:\n  let requestBody = null\n  // 1. If body is null and fetchParams\u2019s process request end-of-body is\n  // non-null, then queue a fetch task given fetchParams\u2019s process request\n  // end-of-body and fetchParams\u2019s task destination.\n  if (request.body == null && fetchParams.processRequestEndOfBody) {\n    queueMicrotask(() => fetchParams.processRequestEndOfBody())\n  } else if (request.body != null) {\n    // 2. Otherwise, if body is non-null:\n\n    //    1. Let processBodyChunk given bytes be these steps:\n    const processBodyChunk = async function * (bytes) {\n      // 1. If the ongoing fetch is terminated, then abort these steps.\n      if (isCancelled(fetchParams)) {\n        return\n      }\n\n      // 2. Run this step in parallel: transmit bytes.\n      yield bytes\n\n      // 3. If fetchParams\u2019s process request body is non-null, then run\n      // fetchParams\u2019s process request body given bytes\u2019s length.\n      fetchParams.processRequestBodyChunkLength?.(bytes.byteLength)\n    }\n\n    // 2. Let processEndOfBody be these steps:\n    const processEndOfBody = () => {\n      // 1. If fetchParams is canceled, then abort these steps.\n      if (isCancelled(fetchParams)) {\n        return\n      }\n\n      // 2. If fetchParams\u2019s process request end-of-body is non-null,\n      // then run fetchParams\u2019s process request end-of-body.\n      if (fetchParams.processRequestEndOfBody) {\n        fetchParams.processRequestEndOfBody()\n      }\n    }\n\n    // 3. Let processBodyError given e be these steps:\n    const processBodyError = (e) => {\n      // 1. If fetchParams is canceled, then abort these steps.\n      if (isCancelled(fetchParams)) {\n        return\n      }\n\n      // 2. If e is an \"AbortError\" DOMException, then abort fetchParams\u2019s controller.\n      if (e.name === 'AbortError') {\n        fetchParams.controller.abort()\n      } else {\n        fetchParams.controller.terminate(e)\n      }\n    }\n\n    // 4. Incrementally read request\u2019s body given processBodyChunk, processEndOfBody,\n    // processBodyError, and fetchParams\u2019s task destination.\n    requestBody = (async function * () {\n      try {\n        for await (const bytes of request.body.stream) {\n          yield * processBodyChunk(bytes)\n        }\n        processEndOfBody()\n      } catch (err) {\n        processBodyError(err)\n      }\n    })()\n  }\n\n  try {\n    // socket is only provided for websockets\n    const { body, status, statusText, headersList, socket } = await dispatch({ body: requestBody })\n\n    if (socket) {\n      response = makeResponse({ status, statusText, headersList, socket })\n    } else {\n      const iterator = body[Symbol.asyncIterator]()\n      fetchParams.controller.next = () => iterator.next()\n\n      response = makeResponse({ status, statusText, headersList })\n    }\n  } catch (err) {\n    // 10. If aborted, then:\n    if (err.name === 'AbortError') {\n      // 1. If connection uses HTTP/2, then transmit an RST_STREAM frame.\n      fetchParams.controller.connection.destroy()\n\n      // 2. Return the appropriate network error for fetchParams.\n      return makeAppropriateNetworkError(fetchParams, err)\n    }\n\n    return makeNetworkError(err)\n  }\n\n  // 11. Let pullAlgorithm be an action that resumes the ongoing fetch\n  // if it is suspended.\n  const pullAlgorithm = async () => {\n    await fetchParams.controller.resume()\n  }\n\n  // 12. Let cancelAlgorithm be an algorithm that aborts fetchParams\u2019s\n  // controller with reason, given reason.\n  const cancelAlgorithm = (reason) => {\n    // If the aborted fetch was already terminated, then we do not\n    // need to do anything.\n    if (!isCancelled(fetchParams)) {\n      fetchParams.controller.abort(reason)\n    }\n  }\n\n  // 13. Let highWaterMark be a non-negative, non-NaN number, chosen by\n  // the user agent.\n  // TODO\n\n  // 14. Let sizeAlgorithm be an algorithm that accepts a chunk object\n  // and returns a non-negative, non-NaN, non-infinite number, chosen by the user agent.\n  // TODO\n\n  // 15. Let stream be a new ReadableStream.\n  // 16. Set up stream with byte reading support with pullAlgorithm set to pullAlgorithm,\n  //     cancelAlgorithm set to cancelAlgorithm.\n  const stream = new ReadableStream(\n    {\n      async start (controller) {\n        fetchParams.controller.controller = controller\n      },\n      async pull (controller) {\n        await pullAlgorithm(controller)\n      },\n      async cancel (reason) {\n        await cancelAlgorithm(reason)\n      },\n      type: 'bytes'\n    }\n  )\n\n  // 17. Run these steps, but abort when the ongoing fetch is terminated:\n\n  //    1. Set response\u2019s body to a new body whose stream is stream.\n  response.body = { stream, source: null, length: null }\n\n  //    2. If response is not a network error and request\u2019s cache mode is\n  //    not \"no-store\", then update response in httpCache for request.\n  //    TODO\n\n  //    3. If includeCredentials is true and the user agent is not configured\n  //    to block cookies for request (see section 7 of [COOKIES]), then run the\n  //    \"set-cookie-string\" parsing algorithm (see section 5.2 of [COOKIES]) on\n  //    the value of each header whose name is a byte-case-insensitive match for\n  //    `Set-Cookie` in response\u2019s header list, if any, and request\u2019s current URL.\n  //    TODO\n\n  // 18. If aborted, then:\n  // TODO\n\n  // 19. Run these steps in parallel:\n\n  //    1. Run these steps, but abort when fetchParams is canceled:\n  fetchParams.controller.onAborted = onAborted\n  fetchParams.controller.on('terminated', onAborted)\n  fetchParams.controller.resume = async () => {\n    // 1. While true\n    while (true) {\n      // 1-3. See onData...\n\n      // 4. Set bytes to the result of handling content codings given\n      // codings and bytes.\n      let bytes\n      let isFailure\n      try {\n        const { done, value } = await fetchParams.controller.next()\n\n        if (isAborted(fetchParams)) {\n          break\n        }\n\n        bytes = done ? undefined : value\n      } catch (err) {\n        if (fetchParams.controller.ended && !timingInfo.encodedBodySize) {\n          // zlib doesn't like empty streams.\n          bytes = undefined\n        } else {\n          bytes = err\n\n          // err may be propagated from the result of calling readablestream.cancel,\n          // which might not be an error. https://github.com/nodejs/undici/issues/2009\n          isFailure = true\n        }\n      }\n\n      if (bytes === undefined) {\n        // 2. Otherwise, if the bytes transmission for response\u2019s message\n        // body is done normally and stream is readable, then close\n        // stream, finalize response for fetchParams and response, and\n        // abort these in-parallel steps.\n        readableStreamClose(fetchParams.controller.controller)\n\n        finalizeResponse(fetchParams, response)\n\n        return\n      }\n\n      // 5. Increase timingInfo\u2019s decoded body size by bytes\u2019s length.\n      timingInfo.decodedBodySize += bytes?.byteLength ?? 0\n\n      // 6. If bytes is failure, then terminate fetchParams\u2019s controller.\n      if (isFailure) {\n        fetchParams.controller.terminate(bytes)\n        return\n      }\n\n      // 7. Enqueue a Uint8Array wrapping an ArrayBuffer containing bytes\n      // into stream.\n      const buffer = new Uint8Array(bytes)\n      if (buffer.byteLength) {\n        fetchParams.controller.controller.enqueue(buffer)\n      }\n\n      // 8. If stream is errored, then terminate the ongoing fetch.\n      if (isErrored(stream)) {\n        fetchParams.controller.terminate()\n        return\n      }\n\n      // 9. If stream doesn\u2019t need more data ask the user agent to suspend\n      // the ongoing fetch.\n      if (fetchParams.controller.controller.desiredSize <= 0) {\n        return\n      }\n    }\n  }\n\n  //    2. If aborted, then:\n  function onAborted (reason) {\n    // 2. If fetchParams is aborted, then:\n    if (isAborted(fetchParams)) {\n      // 1. Set response\u2019s aborted flag.\n      response.aborted = true\n\n      // 2. If stream is readable, then error stream with the result of\n      //    deserialize a serialized abort reason given fetchParams\u2019s\n      //    controller\u2019s serialized abort reason and an\n      //    implementation-defined realm.\n      if (isReadable(stream)) {\n        fetchParams.controller.controller.error(\n          fetchParams.controller.serializedAbortReason\n        )\n      }\n    } else {\n      // 3. Otherwise, if stream is readable, error stream with a TypeError.\n      if (isReadable(stream)) {\n        fetchParams.controller.controller.error(new TypeError('terminated', {\n          cause: isErrorLike(reason) ? reason : undefined\n        }))\n      }\n    }\n\n    // 4. If connection uses HTTP/2, then transmit an RST_STREAM frame.\n    // 5. Otherwise, the user agent should close connection unless it would be bad for performance to do so.\n    fetchParams.controller.connection.destroy()\n  }\n\n  // 20. Return response.\n  return response\n\n  function dispatch ({ body }) {\n    const url = requestCurrentURL(request)\n    /** @type {import('../..').Agent} */\n    const agent = fetchParams.controller.dispatcher\n\n    return new Promise((resolve, reject) => agent.dispatch(\n      {\n        path: url.pathname + url.search,\n        origin: url.origin,\n        method: request.method,\n        body: agent.isMockActive ? request.body && (request.body.source || request.body.stream) : body,\n        headers: request.headersList.entries,\n        maxRedirections: 0,\n        upgrade: request.mode === 'websocket' ? 'websocket' : undefined\n      },\n      {\n        body: null,\n        abort: null,\n\n        onConnect (abort) {\n          // TODO (fix): Do we need connection here?\n          const { connection } = fetchParams.controller\n\n          // Set timingInfo\u2019s final connection timing info to the result of calling clamp and coarsen\n          // connection timing info with connection\u2019s timing info, timingInfo\u2019s post-redirect start\n          // time, and fetchParams\u2019s cross-origin isolated capability.\n          // TODO: implement connection timing\n          timingInfo.finalConnectionTimingInfo = clampAndCoarsenConnectionTimingInfo(undefined, timingInfo.postRedirectStartTime, fetchParams.crossOriginIsolatedCapability)\n\n          if (connection.destroyed) {\n            abort(new DOMException('The operation was aborted.', 'AbortError'))\n          } else {\n            fetchParams.controller.on('terminated', abort)\n            this.abort = connection.abort = abort\n          }\n\n          // Set timingInfo\u2019s final network-request start time to the coarsened shared current time given\n          // fetchParams\u2019s cross-origin isolated capability.\n          timingInfo.finalNetworkRequestStartTime = coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability)\n        },\n\n        onResponseStarted () {\n          // Set timingInfo\u2019s final network-response start time to the coarsened shared current\n          // time given fetchParams\u2019s cross-origin isolated capability, immediately after the\n          // user agent\u2019s HTTP parser receives the first byte of the response (e.g., frame header\n          // bytes for HTTP/2 or response status line for HTTP/1.x).\n          timingInfo.finalNetworkResponseStartTime = coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability)\n        },\n\n        onHeaders (status, rawHeaders, resume, statusText) {\n          if (status < 200) {\n            return\n          }\n\n          /** @type {string[]} */\n          let codings = []\n          let location = ''\n\n          const headersList = new HeadersList()\n\n          for (let i = 0; i < rawHeaders.length; i += 2) {\n            headersList.append(bufferToLowerCasedHeaderName(rawHeaders[i]), rawHeaders[i + 1].toString('latin1'), true)\n          }\n          const contentEncoding = headersList.get('content-encoding', true)\n          if (contentEncoding) {\n            // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1\n            // \"All content-coding values are case-insensitive...\"\n            codings = contentEncoding.toLowerCase().split(',').map((x) => x.trim())\n          }\n          location = headersList.get('location', true)\n\n          this.body = new Readable({ read: resume })\n\n          const decoders = []\n\n          const willFollow = location && request.redirect === 'follow' &&\n            redirectStatusSet.has(status)\n\n          // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding\n          if (codings.length !== 0 && request.method !== 'HEAD' && request.method !== 'CONNECT' && !nullBodyStatus.includes(status) && !willFollow) {\n            for (let i = codings.length - 1; i >= 0; --i) {\n              const coding = codings[i]\n              // https://www.rfc-editor.org/rfc/rfc9112.html#section-7.2\n              if (coding === 'x-gzip' || coding === 'gzip') {\n                decoders.push(zlib.createGunzip({\n                  // Be less strict when decoding compressed responses, since sometimes\n                  // servers send slightly invalid responses that are still accepted\n                  // by common browsers.\n                  // Always using Z_SYNC_FLUSH is what cURL does.\n                  flush: zlib.constants.Z_SYNC_FLUSH,\n                  finishFlush: zlib.constants.Z_SYNC_FLUSH\n                }))\n              } else if (coding === 'deflate') {\n                decoders.push(createInflate({\n                  flush: zlib.constants.Z_SYNC_FLUSH,\n                  finishFlush: zlib.constants.Z_SYNC_FLUSH\n                }))\n              } else if (coding === 'br') {\n                decoders.push(zlib.createBrotliDecompress({\n                  flush: zlib.constants.BROTLI_OPERATION_FLUSH,\n                  finishFlush: zlib.constants.BROTLI_OPERATION_FLUSH\n                }))\n              } else {\n                decoders.length = 0\n                break\n              }\n            }\n          }\n\n          const onError = this.onError.bind(this)\n\n          resolve({\n            status,\n            statusText,\n            headersList,\n            body: decoders.length\n              ? pipeline(this.body, ...decoders, (err) => {\n                if (err) {\n                  this.onError(err)\n                }\n              }).on('error', onError)\n              : this.body.on('error', onError)\n          })\n\n          return true\n        },\n\n        onData (chunk) {\n          if (fetchParams.controller.dump) {\n            return\n          }\n\n          // 1. If one or more bytes have been transmitted from response\u2019s\n          // message body, then:\n\n          //  1. Let bytes be the transmitted bytes.\n          const bytes = chunk\n\n          //  2. Let codings be the result of extracting header list values\n          //  given `Content-Encoding` and response\u2019s header list.\n          //  See pullAlgorithm.\n\n          //  3. Increase timingInfo\u2019s encoded body size by bytes\u2019s length.\n          timingInfo.encodedBodySize += bytes.byteLength\n\n          //  4. See pullAlgorithm...\n\n          return this.body.push(bytes)\n        },\n\n        onComplete () {\n          if (this.abort) {\n            fetchParams.controller.off('terminated', this.abort)\n          }\n\n          if (fetchParams.controller.onAborted) {\n            fetchParams.controller.off('terminated', fetchParams.controller.onAborted)\n          }\n\n          fetchParams.controller.ended = true\n\n          this.body.push(null)\n        },\n\n        onError (error) {\n          if (this.abort) {\n            fetchParams.controller.off('terminated', this.abort)\n          }\n\n          this.body?.destroy(error)\n\n          fetchParams.controller.terminate(error)\n\n          reject(error)\n        },\n\n        onUpgrade (status, rawHeaders, socket) {\n          if (status !== 101) {\n            return\n          }\n\n          const headersList = new HeadersList()\n\n          for (let i = 0; i < rawHeaders.length; i += 2) {\n            headersList.append(bufferToLowerCasedHeaderName(rawHeaders[i]), rawHeaders[i + 1].toString('latin1'), true)\n          }\n\n          resolve({\n            status,\n            statusText: STATUS_CODES[status],\n            headersList,\n            socket\n          })\n\n          return true\n        }\n      }\n    ))\n  }\n}\n\nmodule.exports = {\n  fetch,\n  Fetch,\n  fetching,\n  finalizeAndReportTiming\n}\n", "'use strict'\n\nmodule.exports = {\n  kState: Symbol('FileReader state'),\n  kResult: Symbol('FileReader result'),\n  kError: Symbol('FileReader error'),\n  kLastProgressEventFired: Symbol('FileReader last progress event fired timestamp'),\n  kEvents: Symbol('FileReader events'),\n  kAborted: Symbol('FileReader aborted')\n}\n", "'use strict'\n\nconst { webidl } = require('../fetch/webidl')\n\nconst kState = Symbol('ProgressEvent state')\n\n/**\n * @see https://xhr.spec.whatwg.org/#progressevent\n */\nclass ProgressEvent extends Event {\n  constructor (type, eventInitDict = {}) {\n    type = webidl.converters.DOMString(type, 'ProgressEvent constructor', 'type')\n    eventInitDict = webidl.converters.ProgressEventInit(eventInitDict ?? {})\n\n    super(type, eventInitDict)\n\n    this[kState] = {\n      lengthComputable: eventInitDict.lengthComputable,\n      loaded: eventInitDict.loaded,\n      total: eventInitDict.total\n    }\n  }\n\n  get lengthComputable () {\n    webidl.brandCheck(this, ProgressEvent)\n\n    return this[kState].lengthComputable\n  }\n\n  get loaded () {\n    webidl.brandCheck(this, ProgressEvent)\n\n    return this[kState].loaded\n  }\n\n  get total () {\n    webidl.brandCheck(this, ProgressEvent)\n\n    return this[kState].total\n  }\n}\n\nwebidl.converters.ProgressEventInit = webidl.dictionaryConverter([\n  {\n    key: 'lengthComputable',\n    converter: webidl.converters.boolean,\n    defaultValue: () => false\n  },\n  {\n    key: 'loaded',\n    converter: webidl.converters['unsigned long long'],\n    defaultValue: () => 0\n  },\n  {\n    key: 'total',\n    converter: webidl.converters['unsigned long long'],\n    defaultValue: () => 0\n  },\n  {\n    key: 'bubbles',\n    converter: webidl.converters.boolean,\n    defaultValue: () => false\n  },\n  {\n    key: 'cancelable',\n    converter: webidl.converters.boolean,\n    defaultValue: () => false\n  },\n  {\n    key: 'composed',\n    converter: webidl.converters.boolean,\n    defaultValue: () => false\n  }\n])\n\nmodule.exports = {\n  ProgressEvent\n}\n", "'use strict'\n\n/**\n * @see https://encoding.spec.whatwg.org/#concept-encoding-get\n * @param {string|undefined} label\n */\nfunction getEncoding (label) {\n  if (!label) {\n    return 'failure'\n  }\n\n  // 1. Remove any leading and trailing ASCII whitespace from label.\n  // 2. If label is an ASCII case-insensitive match for any of the\n  //    labels listed in the table below, then return the\n  //    corresponding encoding; otherwise return failure.\n  switch (label.trim().toLowerCase()) {\n    case 'unicode-1-1-utf-8':\n    case 'unicode11utf8':\n    case 'unicode20utf8':\n    case 'utf-8':\n    case 'utf8':\n    case 'x-unicode20utf8':\n      return 'UTF-8'\n    case '866':\n    case 'cp866':\n    case 'csibm866':\n    case 'ibm866':\n      return 'IBM866'\n    case 'csisolatin2':\n    case 'iso-8859-2':\n    case 'iso-ir-101':\n    case 'iso8859-2':\n    case 'iso88592':\n    case 'iso_8859-2':\n    case 'iso_8859-2:1987':\n    case 'l2':\n    case 'latin2':\n      return 'ISO-8859-2'\n    case 'csisolatin3':\n    case 'iso-8859-3':\n    case 'iso-ir-109':\n    case 'iso8859-3':\n    case 'iso88593':\n    case 'iso_8859-3':\n    case 'iso_8859-3:1988':\n    case 'l3':\n    case 'latin3':\n      return 'ISO-8859-3'\n    case 'csisolatin4':\n    case 'iso-8859-4':\n    case 'iso-ir-110':\n    case 'iso8859-4':\n    case 'iso88594':\n    case 'iso_8859-4':\n    case 'iso_8859-4:1988':\n    case 'l4':\n    case 'latin4':\n      return 'ISO-8859-4'\n    case 'csisolatincyrillic':\n    case 'cyrillic':\n    case 'iso-8859-5':\n    case 'iso-ir-144':\n    case 'iso8859-5':\n    case 'iso88595':\n    case 'iso_8859-5':\n    case 'iso_8859-5:1988':\n      return 'ISO-8859-5'\n    case 'arabic':\n    case 'asmo-708':\n    case 'csiso88596e':\n    case 'csiso88596i':\n    case 'csisolatinarabic':\n    case 'ecma-114':\n    case 'iso-8859-6':\n    case 'iso-8859-6-e':\n    case 'iso-8859-6-i':\n    case 'iso-ir-127':\n    case 'iso8859-6':\n    case 'iso88596':\n    case 'iso_8859-6':\n    case 'iso_8859-6:1987':\n      return 'ISO-8859-6'\n    case 'csisolatingreek':\n    case 'ecma-118':\n    case 'elot_928':\n    case 'greek':\n    case 'greek8':\n    case 'iso-8859-7':\n    case 'iso-ir-126':\n    case 'iso8859-7':\n    case 'iso88597':\n    case 'iso_8859-7':\n    case 'iso_8859-7:1987':\n    case 'sun_eu_greek':\n      return 'ISO-8859-7'\n    case 'csiso88598e':\n    case 'csisolatinhebrew':\n    case 'hebrew':\n    case 'iso-8859-8':\n    case 'iso-8859-8-e':\n    case 'iso-ir-138':\n    case 'iso8859-8':\n    case 'iso88598':\n    case 'iso_8859-8':\n    case 'iso_8859-8:1988':\n    case 'visual':\n      return 'ISO-8859-8'\n    case 'csiso88598i':\n    case 'iso-8859-8-i':\n    case 'logical':\n      return 'ISO-8859-8-I'\n    case 'csisolatin6':\n    case 'iso-8859-10':\n    case 'iso-ir-157':\n    case 'iso8859-10':\n    case 'iso885910':\n    case 'l6':\n    case 'latin6':\n      return 'ISO-8859-10'\n    case 'iso-8859-13':\n    case 'iso8859-13':\n    case 'iso885913':\n      return 'ISO-8859-13'\n    case 'iso-8859-14':\n    case 'iso8859-14':\n    case 'iso885914':\n      return 'ISO-8859-14'\n    case 'csisolatin9':\n    case 'iso-8859-15':\n    case 'iso8859-15':\n    case 'iso885915':\n    case 'iso_8859-15':\n    case 'l9':\n      return 'ISO-8859-15'\n    case 'iso-8859-16':\n      return 'ISO-8859-16'\n    case 'cskoi8r':\n    case 'koi':\n    case 'koi8':\n    case 'koi8-r':\n    case 'koi8_r':\n      return 'KOI8-R'\n    case 'koi8-ru':\n    case 'koi8-u':\n      return 'KOI8-U'\n    case 'csmacintosh':\n    case 'mac':\n    case 'macintosh':\n    case 'x-mac-roman':\n      return 'macintosh'\n    case 'iso-8859-11':\n    case 'iso8859-11':\n    case 'iso885911':\n    case 'tis-620':\n    case 'windows-874':\n      return 'windows-874'\n    case 'cp1250':\n    case 'windows-1250':\n    case 'x-cp1250':\n      return 'windows-1250'\n    case 'cp1251':\n    case 'windows-1251':\n    case 'x-cp1251':\n      return 'windows-1251'\n    case 'ansi_x3.4-1968':\n    case 'ascii':\n    case 'cp1252':\n    case 'cp819':\n    case 'csisolatin1':\n    case 'ibm819':\n    case 'iso-8859-1':\n    case 'iso-ir-100':\n    case 'iso8859-1':\n    case 'iso88591':\n    case 'iso_8859-1':\n    case 'iso_8859-1:1987':\n    case 'l1':\n    case 'latin1':\n    case 'us-ascii':\n    case 'windows-1252':\n    case 'x-cp1252':\n      return 'windows-1252'\n    case 'cp1253':\n    case 'windows-1253':\n    case 'x-cp1253':\n      return 'windows-1253'\n    case 'cp1254':\n    case 'csisolatin5':\n    case 'iso-8859-9':\n    case 'iso-ir-148':\n    case 'iso8859-9':\n    case 'iso88599':\n    case 'iso_8859-9':\n    case 'iso_8859-9:1989':\n    case 'l5':\n    case 'latin5':\n    case 'windows-1254':\n    case 'x-cp1254':\n      return 'windows-1254'\n    case 'cp1255':\n    case 'windows-1255':\n    case 'x-cp1255':\n      return 'windows-1255'\n    case 'cp1256':\n    case 'windows-1256':\n    case 'x-cp1256':\n      return 'windows-1256'\n    case 'cp1257':\n    case 'windows-1257':\n    case 'x-cp1257':\n      return 'windows-1257'\n    case 'cp1258':\n    case 'windows-1258':\n    case 'x-cp1258':\n      return 'windows-1258'\n    case 'x-mac-cyrillic':\n    case 'x-mac-ukrainian':\n      return 'x-mac-cyrillic'\n    case 'chinese':\n    case 'csgb2312':\n    case 'csiso58gb231280':\n    case 'gb2312':\n    case 'gb_2312':\n    case 'gb_2312-80':\n    case 'gbk':\n    case 'iso-ir-58':\n    case 'x-gbk':\n      return 'GBK'\n    case 'gb18030':\n      return 'gb18030'\n    case 'big5':\n    case 'big5-hkscs':\n    case 'cn-big5':\n    case 'csbig5':\n    case 'x-x-big5':\n      return 'Big5'\n    case 'cseucpkdfmtjapanese':\n    case 'euc-jp':\n    case 'x-euc-jp':\n      return 'EUC-JP'\n    case 'csiso2022jp':\n    case 'iso-2022-jp':\n      return 'ISO-2022-JP'\n    case 'csshiftjis':\n    case 'ms932':\n    case 'ms_kanji':\n    case 'shift-jis':\n    case 'shift_jis':\n    case 'sjis':\n    case 'windows-31j':\n    case 'x-sjis':\n      return 'Shift_JIS'\n    case 'cseuckr':\n    case 'csksc56011987':\n    case 'euc-kr':\n    case 'iso-ir-149':\n    case 'korean':\n    case 'ks_c_5601-1987':\n    case 'ks_c_5601-1989':\n    case 'ksc5601':\n    case 'ksc_5601':\n    case 'windows-949':\n      return 'EUC-KR'\n    case 'csiso2022kr':\n    case 'hz-gb-2312':\n    case 'iso-2022-cn':\n    case 'iso-2022-cn-ext':\n    case 'iso-2022-kr':\n    case 'replacement':\n      return 'replacement'\n    case 'unicodefffe':\n    case 'utf-16be':\n      return 'UTF-16BE'\n    case 'csunicode':\n    case 'iso-10646-ucs-2':\n    case 'ucs-2':\n    case 'unicode':\n    case 'unicodefeff':\n    case 'utf-16':\n    case 'utf-16le':\n      return 'UTF-16LE'\n    case 'x-user-defined':\n      return 'x-user-defined'\n    default: return 'failure'\n  }\n}\n\nmodule.exports = {\n  getEncoding\n}\n", "'use strict'\n\nconst {\n  kState,\n  kError,\n  kResult,\n  kAborted,\n  kLastProgressEventFired\n} = require('./symbols')\nconst { ProgressEvent } = require('./progressevent')\nconst { getEncoding } = require('./encoding')\nconst { serializeAMimeType, parseMIMEType } = require('../fetch/data-url')\nconst { types } = require('node:util')\nconst { StringDecoder } = require('string_decoder')\nconst { btoa } = require('node:buffer')\n\n/** @type {PropertyDescriptor} */\nconst staticPropertyDescriptors = {\n  enumerable: true,\n  writable: false,\n  configurable: false\n}\n\n/**\n * @see https://w3c.github.io/FileAPI/#readOperation\n * @param {import('./filereader').FileReader} fr\n * @param {import('buffer').Blob} blob\n * @param {string} type\n * @param {string?} encodingName\n */\nfunction readOperation (fr, blob, type, encodingName) {\n  // 1. If fr\u2019s state is \"loading\", throw an InvalidStateError\n  //    DOMException.\n  if (fr[kState] === 'loading') {\n    throw new DOMException('Invalid state', 'InvalidStateError')\n  }\n\n  // 2. Set fr\u2019s state to \"loading\".\n  fr[kState] = 'loading'\n\n  // 3. Set fr\u2019s result to null.\n  fr[kResult] = null\n\n  // 4. Set fr\u2019s error to null.\n  fr[kError] = null\n\n  // 5. Let stream be the result of calling get stream on blob.\n  /** @type {import('stream/web').ReadableStream} */\n  const stream = blob.stream()\n\n  // 6. Let reader be the result of getting a reader from stream.\n  const reader = stream.getReader()\n\n  // 7. Let bytes be an empty byte sequence.\n  /** @type {Uint8Array[]} */\n  const bytes = []\n\n  // 8. Let chunkPromise be the result of reading a chunk from\n  //    stream with reader.\n  let chunkPromise = reader.read()\n\n  // 9. Let isFirstChunk be true.\n  let isFirstChunk = true\n\n  // 10. In parallel, while true:\n  // Note: \"In parallel\" just means non-blocking\n  // Note 2: readOperation itself cannot be async as double\n  // reading the body would then reject the promise, instead\n  // of throwing an error.\n  ;(async () => {\n    while (!fr[kAborted]) {\n      // 1. Wait for chunkPromise to be fulfilled or rejected.\n      try {\n        const { done, value } = await chunkPromise\n\n        // 2. If chunkPromise is fulfilled, and isFirstChunk is\n        //    true, queue a task to fire a progress event called\n        //    loadstart at fr.\n        if (isFirstChunk && !fr[kAborted]) {\n          queueMicrotask(() => {\n            fireAProgressEvent('loadstart', fr)\n          })\n        }\n\n        // 3. Set isFirstChunk to false.\n        isFirstChunk = false\n\n        // 4. If chunkPromise is fulfilled with an object whose\n        //    done property is false and whose value property is\n        //    a Uint8Array object, run these steps:\n        if (!done && types.isUint8Array(value)) {\n          // 1. Let bs be the byte sequence represented by the\n          //    Uint8Array object.\n\n          // 2. Append bs to bytes.\n          bytes.push(value)\n\n          // 3. If roughly 50ms have passed since these steps\n          //    were last invoked, queue a task to fire a\n          //    progress event called progress at fr.\n          if (\n            (\n              fr[kLastProgressEventFired] === undefined ||\n              Date.now() - fr[kLastProgressEventFired] >= 50\n            ) &&\n            !fr[kAborted]\n          ) {\n            fr[kLastProgressEventFired] = Date.now()\n            queueMicrotask(() => {\n              fireAProgressEvent('progress', fr)\n            })\n          }\n\n          // 4. Set chunkPromise to the result of reading a\n          //    chunk from stream with reader.\n          chunkPromise = reader.read()\n        } else if (done) {\n          // 5. Otherwise, if chunkPromise is fulfilled with an\n          //    object whose done property is true, queue a task\n          //    to run the following steps and abort this algorithm:\n          queueMicrotask(() => {\n            // 1. Set fr\u2019s state to \"done\".\n            fr[kState] = 'done'\n\n            // 2. Let result be the result of package data given\n            //    bytes, type, blob\u2019s type, and encodingName.\n            try {\n              const result = packageData(bytes, type, blob.type, encodingName)\n\n              // 4. Else:\n\n              if (fr[kAborted]) {\n                return\n              }\n\n              // 1. Set fr\u2019s result to result.\n              fr[kResult] = result\n\n              // 2. Fire a progress event called load at the fr.\n              fireAProgressEvent('load', fr)\n            } catch (error) {\n              // 3. If package data threw an exception error:\n\n              // 1. Set fr\u2019s error to error.\n              fr[kError] = error\n\n              // 2. Fire a progress event called error at fr.\n              fireAProgressEvent('error', fr)\n            }\n\n            // 5. If fr\u2019s state is not \"loading\", fire a progress\n            //    event called loadend at the fr.\n            if (fr[kState] !== 'loading') {\n              fireAProgressEvent('loadend', fr)\n            }\n          })\n\n          break\n        }\n      } catch (error) {\n        if (fr[kAborted]) {\n          return\n        }\n\n        // 6. Otherwise, if chunkPromise is rejected with an\n        //    error error, queue a task to run the following\n        //    steps and abort this algorithm:\n        queueMicrotask(() => {\n          // 1. Set fr\u2019s state to \"done\".\n          fr[kState] = 'done'\n\n          // 2. Set fr\u2019s error to error.\n          fr[kError] = error\n\n          // 3. Fire a progress event called error at fr.\n          fireAProgressEvent('error', fr)\n\n          // 4. If fr\u2019s state is not \"loading\", fire a progress\n          //    event called loadend at fr.\n          if (fr[kState] !== 'loading') {\n            fireAProgressEvent('loadend', fr)\n          }\n        })\n\n        break\n      }\n    }\n  })()\n}\n\n/**\n * @see https://w3c.github.io/FileAPI/#fire-a-progress-event\n * @see https://dom.spec.whatwg.org/#concept-event-fire\n * @param {string} e The name of the event\n * @param {import('./filereader').FileReader} reader\n */\nfunction fireAProgressEvent (e, reader) {\n  // The progress event e does not bubble. e.bubbles must be false\n  // The progress event e is NOT cancelable. e.cancelable must be false\n  const event = new ProgressEvent(e, {\n    bubbles: false,\n    cancelable: false\n  })\n\n  reader.dispatchEvent(event)\n}\n\n/**\n * @see https://w3c.github.io/FileAPI/#blob-package-data\n * @param {Uint8Array[]} bytes\n * @param {string} type\n * @param {string?} mimeType\n * @param {string?} encodingName\n */\nfunction packageData (bytes, type, mimeType, encodingName) {\n  // 1. A Blob has an associated package data algorithm, given\n  //    bytes, a type, a optional mimeType, and a optional\n  //    encodingName, which switches on type and runs the\n  //    associated steps:\n\n  switch (type) {\n    case 'DataURL': {\n      // 1. Return bytes as a DataURL [RFC2397] subject to\n      //    the considerations below:\n      //  * Use mimeType as part of the Data URL if it is\n      //    available in keeping with the Data URL\n      //    specification [RFC2397].\n      //  * If mimeType is not available return a Data URL\n      //    without a media-type. [RFC2397].\n\n      // https://datatracker.ietf.org/doc/html/rfc2397#section-3\n      // dataurl    := \"data:\" [ mediatype ] [ \";base64\" ] \",\" data\n      // mediatype  := [ type \"/\" subtype ] *( \";\" parameter )\n      // data       := *urlchar\n      // parameter  := attribute \"=\" value\n      let dataURL = 'data:'\n\n      const parsed = parseMIMEType(mimeType || 'application/octet-stream')\n\n      if (parsed !== 'failure') {\n        dataURL += serializeAMimeType(parsed)\n      }\n\n      dataURL += ';base64,'\n\n      const decoder = new StringDecoder('latin1')\n\n      for (const chunk of bytes) {\n        dataURL += btoa(decoder.write(chunk))\n      }\n\n      dataURL += btoa(decoder.end())\n\n      return dataURL\n    }\n    case 'Text': {\n      // 1. Let encoding be failure\n      let encoding = 'failure'\n\n      // 2. If the encodingName is present, set encoding to the\n      //    result of getting an encoding from encodingName.\n      if (encodingName) {\n        encoding = getEncoding(encodingName)\n      }\n\n      // 3. If encoding is failure, and mimeType is present:\n      if (encoding === 'failure' && mimeType) {\n        // 1. Let type be the result of parse a MIME type\n        //    given mimeType.\n        const type = parseMIMEType(mimeType)\n\n        // 2. If type is not failure, set encoding to the result\n        //    of getting an encoding from type\u2019s parameters[\"charset\"].\n        if (type !== 'failure') {\n          encoding = getEncoding(type.parameters.get('charset'))\n        }\n      }\n\n      // 4. If encoding is failure, then set encoding to UTF-8.\n      if (encoding === 'failure') {\n        encoding = 'UTF-8'\n      }\n\n      // 5. Decode bytes using fallback encoding encoding, and\n      //    return the result.\n      return decode(bytes, encoding)\n    }\n    case 'ArrayBuffer': {\n      // Return a new ArrayBuffer whose contents are bytes.\n      const sequence = combineByteSequences(bytes)\n\n      return sequence.buffer\n    }\n    case 'BinaryString': {\n      // Return bytes as a binary string, in which every byte\n      //  is represented by a code unit of equal value [0..255].\n      let binaryString = ''\n\n      const decoder = new StringDecoder('latin1')\n\n      for (const chunk of bytes) {\n        binaryString += decoder.write(chunk)\n      }\n\n      binaryString += decoder.end()\n\n      return binaryString\n    }\n  }\n}\n\n/**\n * @see https://encoding.spec.whatwg.org/#decode\n * @param {Uint8Array[]} ioQueue\n * @param {string} encoding\n */\nfunction decode (ioQueue, encoding) {\n  const bytes = combineByteSequences(ioQueue)\n\n  // 1. Let BOMEncoding be the result of BOM sniffing ioQueue.\n  const BOMEncoding = BOMSniffing(bytes)\n\n  let slice = 0\n\n  // 2. If BOMEncoding is non-null:\n  if (BOMEncoding !== null) {\n    // 1. Set encoding to BOMEncoding.\n    encoding = BOMEncoding\n\n    // 2. Read three bytes from ioQueue, if BOMEncoding is\n    //    UTF-8; otherwise read two bytes.\n    //    (Do nothing with those bytes.)\n    slice = BOMEncoding === 'UTF-8' ? 3 : 2\n  }\n\n  // 3. Process a queue with an instance of encoding\u2019s\n  //    decoder, ioQueue, output, and \"replacement\".\n\n  // 4. Return output.\n\n  const sliced = bytes.slice(slice)\n  return new TextDecoder(encoding).decode(sliced)\n}\n\n/**\n * @see https://encoding.spec.whatwg.org/#bom-sniff\n * @param {Uint8Array} ioQueue\n */\nfunction BOMSniffing (ioQueue) {\n  // 1. Let BOM be the result of peeking 3 bytes from ioQueue,\n  //    converted to a byte sequence.\n  const [a, b, c] = ioQueue\n\n  // 2. For each of the rows in the table below, starting with\n  //    the first one and going down, if BOM starts with the\n  //    bytes given in the first column, then return the\n  //    encoding given in the cell in the second column of that\n  //    row. Otherwise, return null.\n  if (a === 0xEF && b === 0xBB && c === 0xBF) {\n    return 'UTF-8'\n  } else if (a === 0xFE && b === 0xFF) {\n    return 'UTF-16BE'\n  } else if (a === 0xFF && b === 0xFE) {\n    return 'UTF-16LE'\n  }\n\n  return null\n}\n\n/**\n * @param {Uint8Array[]} sequences\n */\nfunction combineByteSequences (sequences) {\n  const size = sequences.reduce((a, b) => {\n    return a + b.byteLength\n  }, 0)\n\n  let offset = 0\n\n  return sequences.reduce((a, b) => {\n    a.set(b, offset)\n    offset += b.byteLength\n    return a\n  }, new Uint8Array(size))\n}\n\nmodule.exports = {\n  staticPropertyDescriptors,\n  readOperation,\n  fireAProgressEvent\n}\n", "'use strict'\n\nconst {\n  staticPropertyDescriptors,\n  readOperation,\n  fireAProgressEvent\n} = require('./util')\nconst {\n  kState,\n  kError,\n  kResult,\n  kEvents,\n  kAborted\n} = require('./symbols')\nconst { webidl } = require('../fetch/webidl')\nconst { kEnumerableProperty } = require('../../core/util')\n\nclass FileReader extends EventTarget {\n  constructor () {\n    super()\n\n    this[kState] = 'empty'\n    this[kResult] = null\n    this[kError] = null\n    this[kEvents] = {\n      loadend: null,\n      error: null,\n      abort: null,\n      load: null,\n      progress: null,\n      loadstart: null\n    }\n  }\n\n  /**\n   * @see https://w3c.github.io/FileAPI/#dfn-readAsArrayBuffer\n   * @param {import('buffer').Blob} blob\n   */\n  readAsArrayBuffer (blob) {\n    webidl.brandCheck(this, FileReader)\n\n    webidl.argumentLengthCheck(arguments, 1, 'FileReader.readAsArrayBuffer')\n\n    blob = webidl.converters.Blob(blob, { strict: false })\n\n    // The readAsArrayBuffer(blob) method, when invoked,\n    // must initiate a read operation for blob with ArrayBuffer.\n    readOperation(this, blob, 'ArrayBuffer')\n  }\n\n  /**\n   * @see https://w3c.github.io/FileAPI/#readAsBinaryString\n   * @param {import('buffer').Blob} blob\n   */\n  readAsBinaryString (blob) {\n    webidl.brandCheck(this, FileReader)\n\n    webidl.argumentLengthCheck(arguments, 1, 'FileReader.readAsBinaryString')\n\n    blob = webidl.converters.Blob(blob, { strict: false })\n\n    // The readAsBinaryString(blob) method, when invoked,\n    // must initiate a read operation for blob with BinaryString.\n    readOperation(this, blob, 'BinaryString')\n  }\n\n  /**\n   * @see https://w3c.github.io/FileAPI/#readAsDataText\n   * @param {import('buffer').Blob} blob\n   * @param {string?} encoding\n   */\n  readAsText (blob, encoding = undefined) {\n    webidl.brandCheck(this, FileReader)\n\n    webidl.argumentLengthCheck(arguments, 1, 'FileReader.readAsText')\n\n    blob = webidl.converters.Blob(blob, { strict: false })\n\n    if (encoding !== undefined) {\n      encoding = webidl.converters.DOMString(encoding, 'FileReader.readAsText', 'encoding')\n    }\n\n    // The readAsText(blob, encoding) method, when invoked,\n    // must initiate a read operation for blob with Text and encoding.\n    readOperation(this, blob, 'Text', encoding)\n  }\n\n  /**\n   * @see https://w3c.github.io/FileAPI/#dfn-readAsDataURL\n   * @param {import('buffer').Blob} blob\n   */\n  readAsDataURL (blob) {\n    webidl.brandCheck(this, FileReader)\n\n    webidl.argumentLengthCheck(arguments, 1, 'FileReader.readAsDataURL')\n\n    blob = webidl.converters.Blob(blob, { strict: false })\n\n    // The readAsDataURL(blob) method, when invoked, must\n    // initiate a read operation for blob with DataURL.\n    readOperation(this, blob, 'DataURL')\n  }\n\n  /**\n   * @see https://w3c.github.io/FileAPI/#dfn-abort\n   */\n  abort () {\n    // 1. If this's state is \"empty\" or if this's state is\n    //    \"done\" set this's result to null and terminate\n    //    this algorithm.\n    if (this[kState] === 'empty' || this[kState] === 'done') {\n      this[kResult] = null\n      return\n    }\n\n    // 2. If this's state is \"loading\" set this's state to\n    //    \"done\" and set this's result to null.\n    if (this[kState] === 'loading') {\n      this[kState] = 'done'\n      this[kResult] = null\n    }\n\n    // 3. If there are any tasks from this on the file reading\n    //    task source in an affiliated task queue, then remove\n    //    those tasks from that task queue.\n    this[kAborted] = true\n\n    // 4. Terminate the algorithm for the read method being processed.\n    // TODO\n\n    // 5. Fire a progress event called abort at this.\n    fireAProgressEvent('abort', this)\n\n    // 6. If this's state is not \"loading\", fire a progress\n    //    event called loadend at this.\n    if (this[kState] !== 'loading') {\n      fireAProgressEvent('loadend', this)\n    }\n  }\n\n  /**\n   * @see https://w3c.github.io/FileAPI/#dom-filereader-readystate\n   */\n  get readyState () {\n    webidl.brandCheck(this, FileReader)\n\n    switch (this[kState]) {\n      case 'empty': return this.EMPTY\n      case 'loading': return this.LOADING\n      case 'done': return this.DONE\n    }\n  }\n\n  /**\n   * @see https://w3c.github.io/FileAPI/#dom-filereader-result\n   */\n  get result () {\n    webidl.brandCheck(this, FileReader)\n\n    // The result attribute\u2019s getter, when invoked, must return\n    // this's result.\n    return this[kResult]\n  }\n\n  /**\n   * @see https://w3c.github.io/FileAPI/#dom-filereader-error\n   */\n  get error () {\n    webidl.brandCheck(this, FileReader)\n\n    // The error attribute\u2019s getter, when invoked, must return\n    // this's error.\n    return this[kError]\n  }\n\n  get onloadend () {\n    webidl.brandCheck(this, FileReader)\n\n    return this[kEvents].loadend\n  }\n\n  set onloadend (fn) {\n    webidl.brandCheck(this, FileReader)\n\n    if (this[kEvents].loadend) {\n      this.removeEventListener('loadend', this[kEvents].loadend)\n    }\n\n    if (typeof fn === 'function') {\n      this[kEvents].loadend = fn\n      this.addEventListener('loadend', fn)\n    } else {\n      this[kEvents].loadend = null\n    }\n  }\n\n  get onerror () {\n    webidl.brandCheck(this, FileReader)\n\n    return this[kEvents].error\n  }\n\n  set onerror (fn) {\n    webidl.brandCheck(this, FileReader)\n\n    if (this[kEvents].error) {\n      this.removeEventListener('error', this[kEvents].error)\n    }\n\n    if (typeof fn === 'function') {\n      this[kEvents].error = fn\n      this.addEventListener('error', fn)\n    } else {\n      this[kEvents].error = null\n    }\n  }\n\n  get onloadstart () {\n    webidl.brandCheck(this, FileReader)\n\n    return this[kEvents].loadstart\n  }\n\n  set onloadstart (fn) {\n    webidl.brandCheck(this, FileReader)\n\n    if (this[kEvents].loadstart) {\n      this.removeEventListener('loadstart', this[kEvents].loadstart)\n    }\n\n    if (typeof fn === 'function') {\n      this[kEvents].loadstart = fn\n      this.addEventListener('loadstart', fn)\n    } else {\n      this[kEvents].loadstart = null\n    }\n  }\n\n  get onprogress () {\n    webidl.brandCheck(this, FileReader)\n\n    return this[kEvents].progress\n  }\n\n  set onprogress (fn) {\n    webidl.brandCheck(this, FileReader)\n\n    if (this[kEvents].progress) {\n      this.removeEventListener('progress', this[kEvents].progress)\n    }\n\n    if (typeof fn === 'function') {\n      this[kEvents].progress = fn\n      this.addEventListener('progress', fn)\n    } else {\n      this[kEvents].progress = null\n    }\n  }\n\n  get onload () {\n    webidl.brandCheck(this, FileReader)\n\n    return this[kEvents].load\n  }\n\n  set onload (fn) {\n    webidl.brandCheck(this, FileReader)\n\n    if (this[kEvents].load) {\n      this.removeEventListener('load', this[kEvents].load)\n    }\n\n    if (typeof fn === 'function') {\n      this[kEvents].load = fn\n      this.addEventListener('load', fn)\n    } else {\n      this[kEvents].load = null\n    }\n  }\n\n  get onabort () {\n    webidl.brandCheck(this, FileReader)\n\n    return this[kEvents].abort\n  }\n\n  set onabort (fn) {\n    webidl.brandCheck(this, FileReader)\n\n    if (this[kEvents].abort) {\n      this.removeEventListener('abort', this[kEvents].abort)\n    }\n\n    if (typeof fn === 'function') {\n      this[kEvents].abort = fn\n      this.addEventListener('abort', fn)\n    } else {\n      this[kEvents].abort = null\n    }\n  }\n}\n\n// https://w3c.github.io/FileAPI/#dom-filereader-empty\nFileReader.EMPTY = FileReader.prototype.EMPTY = 0\n// https://w3c.github.io/FileAPI/#dom-filereader-loading\nFileReader.LOADING = FileReader.prototype.LOADING = 1\n// https://w3c.github.io/FileAPI/#dom-filereader-done\nFileReader.DONE = FileReader.prototype.DONE = 2\n\nObject.defineProperties(FileReader.prototype, {\n  EMPTY: staticPropertyDescriptors,\n  LOADING: staticPropertyDescriptors,\n  DONE: staticPropertyDescriptors,\n  readAsArrayBuffer: kEnumerableProperty,\n  readAsBinaryString: kEnumerableProperty,\n  readAsText: kEnumerableProperty,\n  readAsDataURL: kEnumerableProperty,\n  abort: kEnumerableProperty,\n  readyState: kEnumerableProperty,\n  result: kEnumerableProperty,\n  error: kEnumerableProperty,\n  onloadstart: kEnumerableProperty,\n  onprogress: kEnumerableProperty,\n  onload: kEnumerableProperty,\n  onabort: kEnumerableProperty,\n  onerror: kEnumerableProperty,\n  onloadend: kEnumerableProperty,\n  [Symbol.toStringTag]: {\n    value: 'FileReader',\n    writable: false,\n    enumerable: false,\n    configurable: true\n  }\n})\n\nObject.defineProperties(FileReader, {\n  EMPTY: staticPropertyDescriptors,\n  LOADING: staticPropertyDescriptors,\n  DONE: staticPropertyDescriptors\n})\n\nmodule.exports = {\n  FileReader\n}\n", "'use strict'\n\nmodule.exports = {\n  kConstruct: require('../../core/symbols').kConstruct\n}\n", "'use strict'\n\nconst assert = require('node:assert')\nconst { URLSerializer } = require('../fetch/data-url')\nconst { isValidHeaderName } = require('../fetch/util')\n\n/**\n * @see https://url.spec.whatwg.org/#concept-url-equals\n * @param {URL} A\n * @param {URL} B\n * @param {boolean | undefined} excludeFragment\n * @returns {boolean}\n */\nfunction urlEquals (A, B, excludeFragment = false) {\n  const serializedA = URLSerializer(A, excludeFragment)\n\n  const serializedB = URLSerializer(B, excludeFragment)\n\n  return serializedA === serializedB\n}\n\n/**\n * @see https://github.com/chromium/chromium/blob/694d20d134cb553d8d89e5500b9148012b1ba299/content/browser/cache_storage/cache_storage_cache.cc#L260-L262\n * @param {string} header\n */\nfunction getFieldValues (header) {\n  assert(header !== null)\n\n  const values = []\n\n  for (let value of header.split(',')) {\n    value = value.trim()\n\n    if (isValidHeaderName(value)) {\n      values.push(value)\n    }\n  }\n\n  return values\n}\n\nmodule.exports = {\n  urlEquals,\n  getFieldValues\n}\n", "'use strict'\n\nconst { kConstruct } = require('./symbols')\nconst { urlEquals, getFieldValues } = require('./util')\nconst { kEnumerableProperty, isDisturbed } = require('../../core/util')\nconst { webidl } = require('../fetch/webidl')\nconst { Response, cloneResponse, fromInnerResponse } = require('../fetch/response')\nconst { Request, fromInnerRequest } = require('../fetch/request')\nconst { kState } = require('../fetch/symbols')\nconst { fetching } = require('../fetch/index')\nconst { urlIsHttpHttpsScheme, createDeferredPromise, readAllBytes } = require('../fetch/util')\nconst assert = require('node:assert')\n\n/**\n * @see https://w3c.github.io/ServiceWorker/#dfn-cache-batch-operation\n * @typedef {Object} CacheBatchOperation\n * @property {'delete' | 'put'} type\n * @property {any} request\n * @property {any} response\n * @property {import('../../types/cache').CacheQueryOptions} options\n */\n\n/**\n * @see https://w3c.github.io/ServiceWorker/#dfn-request-response-list\n * @typedef {[any, any][]} requestResponseList\n */\n\nclass Cache {\n  /**\n   * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-request-response-list\n   * @type {requestResponseList}\n   */\n  #relevantRequestResponseList\n\n  constructor () {\n    if (arguments[0] !== kConstruct) {\n      webidl.illegalConstructor()\n    }\n\n    webidl.util.markAsUncloneable(this)\n    this.#relevantRequestResponseList = arguments[1]\n  }\n\n  async match (request, options = {}) {\n    webidl.brandCheck(this, Cache)\n\n    const prefix = 'Cache.match'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    request = webidl.converters.RequestInfo(request, prefix, 'request')\n    options = webidl.converters.CacheQueryOptions(options, prefix, 'options')\n\n    const p = this.#internalMatchAll(request, options, 1)\n\n    if (p.length === 0) {\n      return\n    }\n\n    return p[0]\n  }\n\n  async matchAll (request = undefined, options = {}) {\n    webidl.brandCheck(this, Cache)\n\n    const prefix = 'Cache.matchAll'\n    if (request !== undefined) request = webidl.converters.RequestInfo(request, prefix, 'request')\n    options = webidl.converters.CacheQueryOptions(options, prefix, 'options')\n\n    return this.#internalMatchAll(request, options)\n  }\n\n  async add (request) {\n    webidl.brandCheck(this, Cache)\n\n    const prefix = 'Cache.add'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    request = webidl.converters.RequestInfo(request, prefix, 'request')\n\n    // 1.\n    const requests = [request]\n\n    // 2.\n    const responseArrayPromise = this.addAll(requests)\n\n    // 3.\n    return await responseArrayPromise\n  }\n\n  async addAll (requests) {\n    webidl.brandCheck(this, Cache)\n\n    const prefix = 'Cache.addAll'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    // 1.\n    const responsePromises = []\n\n    // 2.\n    const requestList = []\n\n    // 3.\n    for (let request of requests) {\n      if (request === undefined) {\n        throw webidl.errors.conversionFailed({\n          prefix,\n          argument: 'Argument 1',\n          types: ['undefined is not allowed']\n        })\n      }\n\n      request = webidl.converters.RequestInfo(request)\n\n      if (typeof request === 'string') {\n        continue\n      }\n\n      // 3.1\n      const r = request[kState]\n\n      // 3.2\n      if (!urlIsHttpHttpsScheme(r.url) || r.method !== 'GET') {\n        throw webidl.errors.exception({\n          header: prefix,\n          message: 'Expected http/s scheme when method is not GET.'\n        })\n      }\n    }\n\n    // 4.\n    /** @type {ReturnType<typeof fetching>[]} */\n    const fetchControllers = []\n\n    // 5.\n    for (const request of requests) {\n      // 5.1\n      const r = new Request(request)[kState]\n\n      // 5.2\n      if (!urlIsHttpHttpsScheme(r.url)) {\n        throw webidl.errors.exception({\n          header: prefix,\n          message: 'Expected http/s scheme.'\n        })\n      }\n\n      // 5.4\n      r.initiator = 'fetch'\n      r.destination = 'subresource'\n\n      // 5.5\n      requestList.push(r)\n\n      // 5.6\n      const responsePromise = createDeferredPromise()\n\n      // 5.7\n      fetchControllers.push(fetching({\n        request: r,\n        processResponse (response) {\n          // 1.\n          if (response.type === 'error' || response.status === 206 || response.status < 200 || response.status > 299) {\n            responsePromise.reject(webidl.errors.exception({\n              header: 'Cache.addAll',\n              message: 'Received an invalid status code or the request failed.'\n            }))\n          } else if (response.headersList.contains('vary')) { // 2.\n            // 2.1\n            const fieldValues = getFieldValues(response.headersList.get('vary'))\n\n            // 2.2\n            for (const fieldValue of fieldValues) {\n              // 2.2.1\n              if (fieldValue === '*') {\n                responsePromise.reject(webidl.errors.exception({\n                  header: 'Cache.addAll',\n                  message: 'invalid vary field value'\n                }))\n\n                for (const controller of fetchControllers) {\n                  controller.abort()\n                }\n\n                return\n              }\n            }\n          }\n        },\n        processResponseEndOfBody (response) {\n          // 1.\n          if (response.aborted) {\n            responsePromise.reject(new DOMException('aborted', 'AbortError'))\n            return\n          }\n\n          // 2.\n          responsePromise.resolve(response)\n        }\n      }))\n\n      // 5.8\n      responsePromises.push(responsePromise.promise)\n    }\n\n    // 6.\n    const p = Promise.all(responsePromises)\n\n    // 7.\n    const responses = await p\n\n    // 7.1\n    const operations = []\n\n    // 7.2\n    let index = 0\n\n    // 7.3\n    for (const response of responses) {\n      // 7.3.1\n      /** @type {CacheBatchOperation} */\n      const operation = {\n        type: 'put', // 7.3.2\n        request: requestList[index], // 7.3.3\n        response // 7.3.4\n      }\n\n      operations.push(operation) // 7.3.5\n\n      index++ // 7.3.6\n    }\n\n    // 7.5\n    const cacheJobPromise = createDeferredPromise()\n\n    // 7.6.1\n    let errorData = null\n\n    // 7.6.2\n    try {\n      this.#batchCacheOperations(operations)\n    } catch (e) {\n      errorData = e\n    }\n\n    // 7.6.3\n    queueMicrotask(() => {\n      // 7.6.3.1\n      if (errorData === null) {\n        cacheJobPromise.resolve(undefined)\n      } else {\n        // 7.6.3.2\n        cacheJobPromise.reject(errorData)\n      }\n    })\n\n    // 7.7\n    return cacheJobPromise.promise\n  }\n\n  async put (request, response) {\n    webidl.brandCheck(this, Cache)\n\n    const prefix = 'Cache.put'\n    webidl.argumentLengthCheck(arguments, 2, prefix)\n\n    request = webidl.converters.RequestInfo(request, prefix, 'request')\n    response = webidl.converters.Response(response, prefix, 'response')\n\n    // 1.\n    let innerRequest = null\n\n    // 2.\n    if (request instanceof Request) {\n      innerRequest = request[kState]\n    } else { // 3.\n      innerRequest = new Request(request)[kState]\n    }\n\n    // 4.\n    if (!urlIsHttpHttpsScheme(innerRequest.url) || innerRequest.method !== 'GET') {\n      throw webidl.errors.exception({\n        header: prefix,\n        message: 'Expected an http/s scheme when method is not GET'\n      })\n    }\n\n    // 5.\n    const innerResponse = response[kState]\n\n    // 6.\n    if (innerResponse.status === 206) {\n      throw webidl.errors.exception({\n        header: prefix,\n        message: 'Got 206 status'\n      })\n    }\n\n    // 7.\n    if (innerResponse.headersList.contains('vary')) {\n      // 7.1.\n      const fieldValues = getFieldValues(innerResponse.headersList.get('vary'))\n\n      // 7.2.\n      for (const fieldValue of fieldValues) {\n        // 7.2.1\n        if (fieldValue === '*') {\n          throw webidl.errors.exception({\n            header: prefix,\n            message: 'Got * vary field value'\n          })\n        }\n      }\n    }\n\n    // 8.\n    if (innerResponse.body && (isDisturbed(innerResponse.body.stream) || innerResponse.body.stream.locked)) {\n      throw webidl.errors.exception({\n        header: prefix,\n        message: 'Response body is locked or disturbed'\n      })\n    }\n\n    // 9.\n    const clonedResponse = cloneResponse(innerResponse)\n\n    // 10.\n    const bodyReadPromise = createDeferredPromise()\n\n    // 11.\n    if (innerResponse.body != null) {\n      // 11.1\n      const stream = innerResponse.body.stream\n\n      // 11.2\n      const reader = stream.getReader()\n\n      // 11.3\n      readAllBytes(reader).then(bodyReadPromise.resolve, bodyReadPromise.reject)\n    } else {\n      bodyReadPromise.resolve(undefined)\n    }\n\n    // 12.\n    /** @type {CacheBatchOperation[]} */\n    const operations = []\n\n    // 13.\n    /** @type {CacheBatchOperation} */\n    const operation = {\n      type: 'put', // 14.\n      request: innerRequest, // 15.\n      response: clonedResponse // 16.\n    }\n\n    // 17.\n    operations.push(operation)\n\n    // 19.\n    const bytes = await bodyReadPromise.promise\n\n    if (clonedResponse.body != null) {\n      clonedResponse.body.source = bytes\n    }\n\n    // 19.1\n    const cacheJobPromise = createDeferredPromise()\n\n    // 19.2.1\n    let errorData = null\n\n    // 19.2.2\n    try {\n      this.#batchCacheOperations(operations)\n    } catch (e) {\n      errorData = e\n    }\n\n    // 19.2.3\n    queueMicrotask(() => {\n      // 19.2.3.1\n      if (errorData === null) {\n        cacheJobPromise.resolve()\n      } else { // 19.2.3.2\n        cacheJobPromise.reject(errorData)\n      }\n    })\n\n    return cacheJobPromise.promise\n  }\n\n  async delete (request, options = {}) {\n    webidl.brandCheck(this, Cache)\n\n    const prefix = 'Cache.delete'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    request = webidl.converters.RequestInfo(request, prefix, 'request')\n    options = webidl.converters.CacheQueryOptions(options, prefix, 'options')\n\n    /**\n     * @type {Request}\n     */\n    let r = null\n\n    if (request instanceof Request) {\n      r = request[kState]\n\n      if (r.method !== 'GET' && !options.ignoreMethod) {\n        return false\n      }\n    } else {\n      assert(typeof request === 'string')\n\n      r = new Request(request)[kState]\n    }\n\n    /** @type {CacheBatchOperation[]} */\n    const operations = []\n\n    /** @type {CacheBatchOperation} */\n    const operation = {\n      type: 'delete',\n      request: r,\n      options\n    }\n\n    operations.push(operation)\n\n    const cacheJobPromise = createDeferredPromise()\n\n    let errorData = null\n    let requestResponses\n\n    try {\n      requestResponses = this.#batchCacheOperations(operations)\n    } catch (e) {\n      errorData = e\n    }\n\n    queueMicrotask(() => {\n      if (errorData === null) {\n        cacheJobPromise.resolve(!!requestResponses?.length)\n      } else {\n        cacheJobPromise.reject(errorData)\n      }\n    })\n\n    return cacheJobPromise.promise\n  }\n\n  /**\n   * @see https://w3c.github.io/ServiceWorker/#dom-cache-keys\n   * @param {any} request\n   * @param {import('../../types/cache').CacheQueryOptions} options\n   * @returns {Promise<readonly Request[]>}\n   */\n  async keys (request = undefined, options = {}) {\n    webidl.brandCheck(this, Cache)\n\n    const prefix = 'Cache.keys'\n\n    if (request !== undefined) request = webidl.converters.RequestInfo(request, prefix, 'request')\n    options = webidl.converters.CacheQueryOptions(options, prefix, 'options')\n\n    // 1.\n    let r = null\n\n    // 2.\n    if (request !== undefined) {\n      // 2.1\n      if (request instanceof Request) {\n        // 2.1.1\n        r = request[kState]\n\n        // 2.1.2\n        if (r.method !== 'GET' && !options.ignoreMethod) {\n          return []\n        }\n      } else if (typeof request === 'string') { // 2.2\n        r = new Request(request)[kState]\n      }\n    }\n\n    // 4.\n    const promise = createDeferredPromise()\n\n    // 5.\n    // 5.1\n    const requests = []\n\n    // 5.2\n    if (request === undefined) {\n      // 5.2.1\n      for (const requestResponse of this.#relevantRequestResponseList) {\n        // 5.2.1.1\n        requests.push(requestResponse[0])\n      }\n    } else { // 5.3\n      // 5.3.1\n      const requestResponses = this.#queryCache(r, options)\n\n      // 5.3.2\n      for (const requestResponse of requestResponses) {\n        // 5.3.2.1\n        requests.push(requestResponse[0])\n      }\n    }\n\n    // 5.4\n    queueMicrotask(() => {\n      // 5.4.1\n      const requestList = []\n\n      // 5.4.2\n      for (const request of requests) {\n        const requestObject = fromInnerRequest(\n          request,\n          new AbortController().signal,\n          'immutable'\n        )\n        // 5.4.2.1\n        requestList.push(requestObject)\n      }\n\n      // 5.4.3\n      promise.resolve(Object.freeze(requestList))\n    })\n\n    return promise.promise\n  }\n\n  /**\n   * @see https://w3c.github.io/ServiceWorker/#batch-cache-operations-algorithm\n   * @param {CacheBatchOperation[]} operations\n   * @returns {requestResponseList}\n   */\n  #batchCacheOperations (operations) {\n    // 1.\n    const cache = this.#relevantRequestResponseList\n\n    // 2.\n    const backupCache = [...cache]\n\n    // 3.\n    const addedItems = []\n\n    // 4.1\n    const resultList = []\n\n    try {\n      // 4.2\n      for (const operation of operations) {\n        // 4.2.1\n        if (operation.type !== 'delete' && operation.type !== 'put') {\n          throw webidl.errors.exception({\n            header: 'Cache.#batchCacheOperations',\n            message: 'operation type does not match \"delete\" or \"put\"'\n          })\n        }\n\n        // 4.2.2\n        if (operation.type === 'delete' && operation.response != null) {\n          throw webidl.errors.exception({\n            header: 'Cache.#batchCacheOperations',\n            message: 'delete operation should not have an associated response'\n          })\n        }\n\n        // 4.2.3\n        if (this.#queryCache(operation.request, operation.options, addedItems).length) {\n          throw new DOMException('???', 'InvalidStateError')\n        }\n\n        // 4.2.4\n        let requestResponses\n\n        // 4.2.5\n        if (operation.type === 'delete') {\n          // 4.2.5.1\n          requestResponses = this.#queryCache(operation.request, operation.options)\n\n          // TODO: the spec is wrong, this is needed to pass WPTs\n          if (requestResponses.length === 0) {\n            return []\n          }\n\n          // 4.2.5.2\n          for (const requestResponse of requestResponses) {\n            const idx = cache.indexOf(requestResponse)\n            assert(idx !== -1)\n\n            // 4.2.5.2.1\n            cache.splice(idx, 1)\n          }\n        } else if (operation.type === 'put') { // 4.2.6\n          // 4.2.6.1\n          if (operation.response == null) {\n            throw webidl.errors.exception({\n              header: 'Cache.#batchCacheOperations',\n              message: 'put operation should have an associated response'\n            })\n          }\n\n          // 4.2.6.2\n          const r = operation.request\n\n          // 4.2.6.3\n          if (!urlIsHttpHttpsScheme(r.url)) {\n            throw webidl.errors.exception({\n              header: 'Cache.#batchCacheOperations',\n              message: 'expected http or https scheme'\n            })\n          }\n\n          // 4.2.6.4\n          if (r.method !== 'GET') {\n            throw webidl.errors.exception({\n              header: 'Cache.#batchCacheOperations',\n              message: 'not get method'\n            })\n          }\n\n          // 4.2.6.5\n          if (operation.options != null) {\n            throw webidl.errors.exception({\n              header: 'Cache.#batchCacheOperations',\n              message: 'options must not be defined'\n            })\n          }\n\n          // 4.2.6.6\n          requestResponses = this.#queryCache(operation.request)\n\n          // 4.2.6.7\n          for (const requestResponse of requestResponses) {\n            const idx = cache.indexOf(requestResponse)\n            assert(idx !== -1)\n\n            // 4.2.6.7.1\n            cache.splice(idx, 1)\n          }\n\n          // 4.2.6.8\n          cache.push([operation.request, operation.response])\n\n          // 4.2.6.10\n          addedItems.push([operation.request, operation.response])\n        }\n\n        // 4.2.7\n        resultList.push([operation.request, operation.response])\n      }\n\n      // 4.3\n      return resultList\n    } catch (e) { // 5.\n      // 5.1\n      this.#relevantRequestResponseList.length = 0\n\n      // 5.2\n      this.#relevantRequestResponseList = backupCache\n\n      // 5.3\n      throw e\n    }\n  }\n\n  /**\n   * @see https://w3c.github.io/ServiceWorker/#query-cache\n   * @param {any} requestQuery\n   * @param {import('../../types/cache').CacheQueryOptions} options\n   * @param {requestResponseList} targetStorage\n   * @returns {requestResponseList}\n   */\n  #queryCache (requestQuery, options, targetStorage) {\n    /** @type {requestResponseList} */\n    const resultList = []\n\n    const storage = targetStorage ?? this.#relevantRequestResponseList\n\n    for (const requestResponse of storage) {\n      const [cachedRequest, cachedResponse] = requestResponse\n      if (this.#requestMatchesCachedItem(requestQuery, cachedRequest, cachedResponse, options)) {\n        resultList.push(requestResponse)\n      }\n    }\n\n    return resultList\n  }\n\n  /**\n   * @see https://w3c.github.io/ServiceWorker/#request-matches-cached-item-algorithm\n   * @param {any} requestQuery\n   * @param {any} request\n   * @param {any | null} response\n   * @param {import('../../types/cache').CacheQueryOptions | undefined} options\n   * @returns {boolean}\n   */\n  #requestMatchesCachedItem (requestQuery, request, response = null, options) {\n    // if (options?.ignoreMethod === false && request.method === 'GET') {\n    //   return false\n    // }\n\n    const queryURL = new URL(requestQuery.url)\n\n    const cachedURL = new URL(request.url)\n\n    if (options?.ignoreSearch) {\n      cachedURL.search = ''\n\n      queryURL.search = ''\n    }\n\n    if (!urlEquals(queryURL, cachedURL, true)) {\n      return false\n    }\n\n    if (\n      response == null ||\n      options?.ignoreVary ||\n      !response.headersList.contains('vary')\n    ) {\n      return true\n    }\n\n    const fieldValues = getFieldValues(response.headersList.get('vary'))\n\n    for (const fieldValue of fieldValues) {\n      if (fieldValue === '*') {\n        return false\n      }\n\n      const requestValue = request.headersList.get(fieldValue)\n      const queryValue = requestQuery.headersList.get(fieldValue)\n\n      // If one has the header and the other doesn't, or one has\n      // a different value than the other, return false\n      if (requestValue !== queryValue) {\n        return false\n      }\n    }\n\n    return true\n  }\n\n  #internalMatchAll (request, options, maxResponses = Infinity) {\n    // 1.\n    let r = null\n\n    // 2.\n    if (request !== undefined) {\n      if (request instanceof Request) {\n        // 2.1.1\n        r = request[kState]\n\n        // 2.1.2\n        if (r.method !== 'GET' && !options.ignoreMethod) {\n          return []\n        }\n      } else if (typeof request === 'string') {\n        // 2.2.1\n        r = new Request(request)[kState]\n      }\n    }\n\n    // 5.\n    // 5.1\n    const responses = []\n\n    // 5.2\n    if (request === undefined) {\n      // 5.2.1\n      for (const requestResponse of this.#relevantRequestResponseList) {\n        responses.push(requestResponse[1])\n      }\n    } else { // 5.3\n      // 5.3.1\n      const requestResponses = this.#queryCache(r, options)\n\n      // 5.3.2\n      for (const requestResponse of requestResponses) {\n        responses.push(requestResponse[1])\n      }\n    }\n\n    // 5.4\n    // We don't implement CORs so we don't need to loop over the responses, yay!\n\n    // 5.5.1\n    const responseList = []\n\n    // 5.5.2\n    for (const response of responses) {\n      // 5.5.2.1\n      const responseObject = fromInnerResponse(response, 'immutable')\n\n      responseList.push(responseObject.clone())\n\n      if (responseList.length >= maxResponses) {\n        break\n      }\n    }\n\n    // 6.\n    return Object.freeze(responseList)\n  }\n}\n\nObject.defineProperties(Cache.prototype, {\n  [Symbol.toStringTag]: {\n    value: 'Cache',\n    configurable: true\n  },\n  match: kEnumerableProperty,\n  matchAll: kEnumerableProperty,\n  add: kEnumerableProperty,\n  addAll: kEnumerableProperty,\n  put: kEnumerableProperty,\n  delete: kEnumerableProperty,\n  keys: kEnumerableProperty\n})\n\nconst cacheQueryOptionConverters = [\n  {\n    key: 'ignoreSearch',\n    converter: webidl.converters.boolean,\n    defaultValue: () => false\n  },\n  {\n    key: 'ignoreMethod',\n    converter: webidl.converters.boolean,\n    defaultValue: () => false\n  },\n  {\n    key: 'ignoreVary',\n    converter: webidl.converters.boolean,\n    defaultValue: () => false\n  }\n]\n\nwebidl.converters.CacheQueryOptions = webidl.dictionaryConverter(cacheQueryOptionConverters)\n\nwebidl.converters.MultiCacheQueryOptions = webidl.dictionaryConverter([\n  ...cacheQueryOptionConverters,\n  {\n    key: 'cacheName',\n    converter: webidl.converters.DOMString\n  }\n])\n\nwebidl.converters.Response = webidl.interfaceConverter(Response)\n\nwebidl.converters['sequence<RequestInfo>'] = webidl.sequenceConverter(\n  webidl.converters.RequestInfo\n)\n\nmodule.exports = {\n  Cache\n}\n", "'use strict'\n\nconst { kConstruct } = require('./symbols')\nconst { Cache } = require('./cache')\nconst { webidl } = require('../fetch/webidl')\nconst { kEnumerableProperty } = require('../../core/util')\n\nclass CacheStorage {\n  /**\n   * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-name-to-cache-map\n   * @type {Map<string, import('./cache').requestResponseList}\n   */\n  #caches = new Map()\n\n  constructor () {\n    if (arguments[0] !== kConstruct) {\n      webidl.illegalConstructor()\n    }\n\n    webidl.util.markAsUncloneable(this)\n  }\n\n  async match (request, options = {}) {\n    webidl.brandCheck(this, CacheStorage)\n    webidl.argumentLengthCheck(arguments, 1, 'CacheStorage.match')\n\n    request = webidl.converters.RequestInfo(request)\n    options = webidl.converters.MultiCacheQueryOptions(options)\n\n    // 1.\n    if (options.cacheName != null) {\n      // 1.1.1.1\n      if (this.#caches.has(options.cacheName)) {\n        // 1.1.1.1.1\n        const cacheList = this.#caches.get(options.cacheName)\n        const cache = new Cache(kConstruct, cacheList)\n\n        return await cache.match(request, options)\n      }\n    } else { // 2.\n      // 2.2\n      for (const cacheList of this.#caches.values()) {\n        const cache = new Cache(kConstruct, cacheList)\n\n        // 2.2.1.2\n        const response = await cache.match(request, options)\n\n        if (response !== undefined) {\n          return response\n        }\n      }\n    }\n  }\n\n  /**\n   * @see https://w3c.github.io/ServiceWorker/#cache-storage-has\n   * @param {string} cacheName\n   * @returns {Promise<boolean>}\n   */\n  async has (cacheName) {\n    webidl.brandCheck(this, CacheStorage)\n\n    const prefix = 'CacheStorage.has'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    cacheName = webidl.converters.DOMString(cacheName, prefix, 'cacheName')\n\n    // 2.1.1\n    // 2.2\n    return this.#caches.has(cacheName)\n  }\n\n  /**\n   * @see https://w3c.github.io/ServiceWorker/#dom-cachestorage-open\n   * @param {string} cacheName\n   * @returns {Promise<Cache>}\n   */\n  async open (cacheName) {\n    webidl.brandCheck(this, CacheStorage)\n\n    const prefix = 'CacheStorage.open'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    cacheName = webidl.converters.DOMString(cacheName, prefix, 'cacheName')\n\n    // 2.1\n    if (this.#caches.has(cacheName)) {\n      // await caches.open('v1') !== await caches.open('v1')\n\n      // 2.1.1\n      const cache = this.#caches.get(cacheName)\n\n      // 2.1.1.1\n      return new Cache(kConstruct, cache)\n    }\n\n    // 2.2\n    const cache = []\n\n    // 2.3\n    this.#caches.set(cacheName, cache)\n\n    // 2.4\n    return new Cache(kConstruct, cache)\n  }\n\n  /**\n   * @see https://w3c.github.io/ServiceWorker/#cache-storage-delete\n   * @param {string} cacheName\n   * @returns {Promise<boolean>}\n   */\n  async delete (cacheName) {\n    webidl.brandCheck(this, CacheStorage)\n\n    const prefix = 'CacheStorage.delete'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    cacheName = webidl.converters.DOMString(cacheName, prefix, 'cacheName')\n\n    return this.#caches.delete(cacheName)\n  }\n\n  /**\n   * @see https://w3c.github.io/ServiceWorker/#cache-storage-keys\n   * @returns {Promise<string[]>}\n   */\n  async keys () {\n    webidl.brandCheck(this, CacheStorage)\n\n    // 2.1\n    const keys = this.#caches.keys()\n\n    // 2.2\n    return [...keys]\n  }\n}\n\nObject.defineProperties(CacheStorage.prototype, {\n  [Symbol.toStringTag]: {\n    value: 'CacheStorage',\n    configurable: true\n  },\n  match: kEnumerableProperty,\n  has: kEnumerableProperty,\n  open: kEnumerableProperty,\n  delete: kEnumerableProperty,\n  keys: kEnumerableProperty\n})\n\nmodule.exports = {\n  CacheStorage\n}\n", "'use strict'\n\n// https://wicg.github.io/cookie-store/#cookie-maximum-attribute-value-size\nconst maxAttributeValueSize = 1024\n\n// https://wicg.github.io/cookie-store/#cookie-maximum-name-value-pair-size\nconst maxNameValuePairSize = 4096\n\nmodule.exports = {\n  maxAttributeValueSize,\n  maxNameValuePairSize\n}\n", "'use strict'\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nfunction isCTLExcludingHtab (value) {\n  for (let i = 0; i < value.length; ++i) {\n    const code = value.charCodeAt(i)\n\n    if (\n      (code >= 0x00 && code <= 0x08) ||\n      (code >= 0x0A && code <= 0x1F) ||\n      code === 0x7F\n    ) {\n      return true\n    }\n  }\n  return false\n}\n\n/**\n CHAR           = <any US-ASCII character (octets 0 - 127)>\n token          = 1*<any CHAR except CTLs or separators>\n separators     = \"(\" | \")\" | \"<\" | \">\" | \"@\"\n                | \",\" | \";\" | \":\" | \"\\\" | <\">\n                | \"/\" | \"[\" | \"]\" | \"?\" | \"=\"\n                | \"{\" | \"}\" | SP | HT\n * @param {string} name\n */\nfunction validateCookieName (name) {\n  for (let i = 0; i < name.length; ++i) {\n    const code = name.charCodeAt(i)\n\n    if (\n      code < 0x21 || // exclude CTLs (0-31), SP and HT\n      code > 0x7E || // exclude non-ascii and DEL\n      code === 0x22 || // \"\n      code === 0x28 || // (\n      code === 0x29 || // )\n      code === 0x3C || // <\n      code === 0x3E || // >\n      code === 0x40 || // @\n      code === 0x2C || // ,\n      code === 0x3B || // ;\n      code === 0x3A || // :\n      code === 0x5C || // \\\n      code === 0x2F || // /\n      code === 0x5B || // [\n      code === 0x5D || // ]\n      code === 0x3F || // ?\n      code === 0x3D || // =\n      code === 0x7B || // {\n      code === 0x7D // }\n    ) {\n      throw new Error('Invalid cookie name')\n    }\n  }\n}\n\n/**\n cookie-value      = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE )\n cookie-octet      = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E\n                       ; US-ASCII characters excluding CTLs,\n                       ; whitespace DQUOTE, comma, semicolon,\n                       ; and backslash\n * @param {string} value\n */\nfunction validateCookieValue (value) {\n  let len = value.length\n  let i = 0\n\n  // if the value is wrapped in DQUOTE\n  if (value[0] === '\"') {\n    if (len === 1 || value[len - 1] !== '\"') {\n      throw new Error('Invalid cookie value')\n    }\n    --len\n    ++i\n  }\n\n  while (i < len) {\n    const code = value.charCodeAt(i++)\n\n    if (\n      code < 0x21 || // exclude CTLs (0-31)\n      code > 0x7E || // non-ascii and DEL (127)\n      code === 0x22 || // \"\n      code === 0x2C || // ,\n      code === 0x3B || // ;\n      code === 0x5C // \\\n    ) {\n      throw new Error('Invalid cookie value')\n    }\n  }\n}\n\n/**\n * path-value        = <any CHAR except CTLs or \";\">\n * @param {string} path\n */\nfunction validateCookiePath (path) {\n  for (let i = 0; i < path.length; ++i) {\n    const code = path.charCodeAt(i)\n\n    if (\n      code < 0x20 || // exclude CTLs (0-31)\n      code === 0x7F || // DEL\n      code === 0x3B // ;\n    ) {\n      throw new Error('Invalid cookie path')\n    }\n  }\n}\n\n/**\n * I have no idea why these values aren't allowed to be honest,\n * but Deno tests these. - Khafra\n * @param {string} domain\n */\nfunction validateCookieDomain (domain) {\n  if (\n    domain.startsWith('-') ||\n    domain.endsWith('.') ||\n    domain.endsWith('-')\n  ) {\n    throw new Error('Invalid cookie domain')\n  }\n}\n\nconst IMFDays = [\n  'Sun', 'Mon', 'Tue', 'Wed',\n  'Thu', 'Fri', 'Sat'\n]\n\nconst IMFMonths = [\n  'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\n  'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'\n]\n\nconst IMFPaddedNumbers = Array(61).fill(0).map((_, i) => i.toString().padStart(2, '0'))\n\n/**\n * @see https://www.rfc-editor.org/rfc/rfc7231#section-7.1.1.1\n * @param {number|Date} date\n  IMF-fixdate  = day-name \",\" SP date1 SP time-of-day SP GMT\n  ; fixed length/zone/capitalization subset of the format\n  ; see Section 3.3 of [RFC5322]\n\n  day-name     = %x4D.6F.6E ; \"Mon\", case-sensitive\n              / %x54.75.65 ; \"Tue\", case-sensitive\n              / %x57.65.64 ; \"Wed\", case-sensitive\n              / %x54.68.75 ; \"Thu\", case-sensitive\n              / %x46.72.69 ; \"Fri\", case-sensitive\n              / %x53.61.74 ; \"Sat\", case-sensitive\n              / %x53.75.6E ; \"Sun\", case-sensitive\n  date1        = day SP month SP year\n                  ; e.g., 02 Jun 1982\n\n  day          = 2DIGIT\n  month        = %x4A.61.6E ; \"Jan\", case-sensitive\n              / %x46.65.62 ; \"Feb\", case-sensitive\n              / %x4D.61.72 ; \"Mar\", case-sensitive\n              / %x41.70.72 ; \"Apr\", case-sensitive\n              / %x4D.61.79 ; \"May\", case-sensitive\n              / %x4A.75.6E ; \"Jun\", case-sensitive\n              / %x4A.75.6C ; \"Jul\", case-sensitive\n              / %x41.75.67 ; \"Aug\", case-sensitive\n              / %x53.65.70 ; \"Sep\", case-sensitive\n              / %x4F.63.74 ; \"Oct\", case-sensitive\n              / %x4E.6F.76 ; \"Nov\", case-sensitive\n              / %x44.65.63 ; \"Dec\", case-sensitive\n  year         = 4DIGIT\n\n  GMT          = %x47.4D.54 ; \"GMT\", case-sensitive\n\n  time-of-day  = hour \":\" minute \":\" second\n              ; 00:00:00 - 23:59:60 (leap second)\n\n  hour         = 2DIGIT\n  minute       = 2DIGIT\n  second       = 2DIGIT\n */\nfunction toIMFDate (date) {\n  if (typeof date === 'number') {\n    date = new Date(date)\n  }\n\n  return `${IMFDays[date.getUTCDay()]}, ${IMFPaddedNumbers[date.getUTCDate()]} ${IMFMonths[date.getUTCMonth()]} ${date.getUTCFullYear()} ${IMFPaddedNumbers[date.getUTCHours()]}:${IMFPaddedNumbers[date.getUTCMinutes()]}:${IMFPaddedNumbers[date.getUTCSeconds()]} GMT`\n}\n\n/**\n max-age-av        = \"Max-Age=\" non-zero-digit *DIGIT\n                       ; In practice, both expires-av and max-age-av\n                       ; are limited to dates representable by the\n                       ; user agent.\n * @param {number} maxAge\n */\nfunction validateCookieMaxAge (maxAge) {\n  if (maxAge < 0) {\n    throw new Error('Invalid cookie max-age')\n  }\n}\n\n/**\n * @see https://www.rfc-editor.org/rfc/rfc6265#section-4.1.1\n * @param {import('./index').Cookie} cookie\n */\nfunction stringify (cookie) {\n  if (cookie.name.length === 0) {\n    return null\n  }\n\n  validateCookieName(cookie.name)\n  validateCookieValue(cookie.value)\n\n  const out = [`${cookie.name}=${cookie.value}`]\n\n  // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.1\n  // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.2\n  if (cookie.name.startsWith('__Secure-')) {\n    cookie.secure = true\n  }\n\n  if (cookie.name.startsWith('__Host-')) {\n    cookie.secure = true\n    cookie.domain = null\n    cookie.path = '/'\n  }\n\n  if (cookie.secure) {\n    out.push('Secure')\n  }\n\n  if (cookie.httpOnly) {\n    out.push('HttpOnly')\n  }\n\n  if (typeof cookie.maxAge === 'number') {\n    validateCookieMaxAge(cookie.maxAge)\n    out.push(`Max-Age=${cookie.maxAge}`)\n  }\n\n  if (cookie.domain) {\n    validateCookieDomain(cookie.domain)\n    out.push(`Domain=${cookie.domain}`)\n  }\n\n  if (cookie.path) {\n    validateCookiePath(cookie.path)\n    out.push(`Path=${cookie.path}`)\n  }\n\n  if (cookie.expires && cookie.expires.toString() !== 'Invalid Date') {\n    out.push(`Expires=${toIMFDate(cookie.expires)}`)\n  }\n\n  if (cookie.sameSite) {\n    out.push(`SameSite=${cookie.sameSite}`)\n  }\n\n  for (const part of cookie.unparsed) {\n    if (!part.includes('=')) {\n      throw new Error('Invalid unparsed')\n    }\n\n    const [key, ...value] = part.split('=')\n\n    out.push(`${key.trim()}=${value.join('=')}`)\n  }\n\n  return out.join('; ')\n}\n\nmodule.exports = {\n  isCTLExcludingHtab,\n  validateCookieName,\n  validateCookiePath,\n  validateCookieValue,\n  toIMFDate,\n  stringify\n}\n", "'use strict'\n\nconst { maxNameValuePairSize, maxAttributeValueSize } = require('./constants')\nconst { isCTLExcludingHtab } = require('./util')\nconst { collectASequenceOfCodePointsFast } = require('../fetch/data-url')\nconst assert = require('node:assert')\n\n/**\n * @description Parses the field-value attributes of a set-cookie header string.\n * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4\n * @param {string} header\n * @returns if the header is invalid, null will be returned\n */\nfunction parseSetCookie (header) {\n  // 1. If the set-cookie-string contains a %x00-08 / %x0A-1F / %x7F\n  //    character (CTL characters excluding HTAB): Abort these steps and\n  //    ignore the set-cookie-string entirely.\n  if (isCTLExcludingHtab(header)) {\n    return null\n  }\n\n  let nameValuePair = ''\n  let unparsedAttributes = ''\n  let name = ''\n  let value = ''\n\n  // 2. If the set-cookie-string contains a %x3B (\";\") character:\n  if (header.includes(';')) {\n    // 1. The name-value-pair string consists of the characters up to,\n    //    but not including, the first %x3B (\";\"), and the unparsed-\n    //    attributes consist of the remainder of the set-cookie-string\n    //    (including the %x3B (\";\") in question).\n    const position = { position: 0 }\n\n    nameValuePair = collectASequenceOfCodePointsFast(';', header, position)\n    unparsedAttributes = header.slice(position.position)\n  } else {\n    // Otherwise:\n\n    // 1. The name-value-pair string consists of all the characters\n    //    contained in the set-cookie-string, and the unparsed-\n    //    attributes is the empty string.\n    nameValuePair = header\n  }\n\n  // 3. If the name-value-pair string lacks a %x3D (\"=\") character, then\n  //    the name string is empty, and the value string is the value of\n  //    name-value-pair.\n  if (!nameValuePair.includes('=')) {\n    value = nameValuePair\n  } else {\n    //    Otherwise, the name string consists of the characters up to, but\n    //    not including, the first %x3D (\"=\") character, and the (possibly\n    //    empty) value string consists of the characters after the first\n    //    %x3D (\"=\") character.\n    const position = { position: 0 }\n    name = collectASequenceOfCodePointsFast(\n      '=',\n      nameValuePair,\n      position\n    )\n    value = nameValuePair.slice(position.position + 1)\n  }\n\n  // 4. Remove any leading or trailing WSP characters from the name\n  //    string and the value string.\n  name = name.trim()\n  value = value.trim()\n\n  // 5. If the sum of the lengths of the name string and the value string\n  //    is more than 4096 octets, abort these steps and ignore the set-\n  //    cookie-string entirely.\n  if (name.length + value.length > maxNameValuePairSize) {\n    return null\n  }\n\n  // 6. The cookie-name is the name string, and the cookie-value is the\n  //    value string.\n  return {\n    name, value, ...parseUnparsedAttributes(unparsedAttributes)\n  }\n}\n\n/**\n * Parses the remaining attributes of a set-cookie header\n * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4\n * @param {string} unparsedAttributes\n * @param {[Object.<string, unknown>]={}} cookieAttributeList\n */\nfunction parseUnparsedAttributes (unparsedAttributes, cookieAttributeList = {}) {\n  // 1. If the unparsed-attributes string is empty, skip the rest of\n  //    these steps.\n  if (unparsedAttributes.length === 0) {\n    return cookieAttributeList\n  }\n\n  // 2. Discard the first character of the unparsed-attributes (which\n  //    will be a %x3B (\";\") character).\n  assert(unparsedAttributes[0] === ';')\n  unparsedAttributes = unparsedAttributes.slice(1)\n\n  let cookieAv = ''\n\n  // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n  //    character:\n  if (unparsedAttributes.includes(';')) {\n    // 1. Consume the characters of the unparsed-attributes up to, but\n    //    not including, the first %x3B (\";\") character.\n    cookieAv = collectASequenceOfCodePointsFast(\n      ';',\n      unparsedAttributes,\n      { position: 0 }\n    )\n    unparsedAttributes = unparsedAttributes.slice(cookieAv.length)\n  } else {\n    // Otherwise:\n\n    // 1. Consume the remainder of the unparsed-attributes.\n    cookieAv = unparsedAttributes\n    unparsedAttributes = ''\n  }\n\n  // Let the cookie-av string be the characters consumed in this step.\n\n  let attributeName = ''\n  let attributeValue = ''\n\n  // 4. If the cookie-av string contains a %x3D (\"=\") character:\n  if (cookieAv.includes('=')) {\n    // 1. The (possibly empty) attribute-name string consists of the\n    //    characters up to, but not including, the first %x3D (\"=\")\n    //    character, and the (possibly empty) attribute-value string\n    //    consists of the characters after the first %x3D (\"=\")\n    //    character.\n    const position = { position: 0 }\n\n    attributeName = collectASequenceOfCodePointsFast(\n      '=',\n      cookieAv,\n      position\n    )\n    attributeValue = cookieAv.slice(position.position + 1)\n  } else {\n    // Otherwise:\n\n    // 1. The attribute-name string consists of the entire cookie-av\n    //    string, and the attribute-value string is empty.\n    attributeName = cookieAv\n  }\n\n  // 5. Remove any leading or trailing WSP characters from the attribute-\n  //    name string and the attribute-value string.\n  attributeName = attributeName.trim()\n  attributeValue = attributeValue.trim()\n\n  // 6. If the attribute-value is longer than 1024 octets, ignore the\n  //    cookie-av string and return to Step 1 of this algorithm.\n  if (attributeValue.length > maxAttributeValueSize) {\n    return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n  }\n\n  // 7. Process the attribute-name and attribute-value according to the\n  //    requirements in the following subsections.  (Notice that\n  //    attributes with unrecognized attribute-names are ignored.)\n  const attributeNameLowercase = attributeName.toLowerCase()\n\n  // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.1\n  // If the attribute-name case-insensitively matches the string\n  // \"Expires\", the user agent MUST process the cookie-av as follows.\n  if (attributeNameLowercase === 'expires') {\n    // 1. Let the expiry-time be the result of parsing the attribute-value\n    //    as cookie-date (see Section 5.1.1).\n    const expiryTime = new Date(attributeValue)\n\n    // 2. If the attribute-value failed to parse as a cookie date, ignore\n    //    the cookie-av.\n\n    cookieAttributeList.expires = expiryTime\n  } else if (attributeNameLowercase === 'max-age') {\n    // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.2\n    // If the attribute-name case-insensitively matches the string \"Max-\n    // Age\", the user agent MUST process the cookie-av as follows.\n\n    // 1. If the first character of the attribute-value is not a DIGIT or a\n    //    \"-\" character, ignore the cookie-av.\n    const charCode = attributeValue.charCodeAt(0)\n\n    if ((charCode < 48 || charCode > 57) && attributeValue[0] !== '-') {\n      return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n    }\n\n    // 2. If the remainder of attribute-value contains a non-DIGIT\n    //    character, ignore the cookie-av.\n    if (!/^\\d+$/.test(attributeValue)) {\n      return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n    }\n\n    // 3. Let delta-seconds be the attribute-value converted to an integer.\n    const deltaSeconds = Number(attributeValue)\n\n    // 4. Let cookie-age-limit be the maximum age of the cookie (which\n    //    SHOULD be 400 days or less, see Section 4.1.2.2).\n\n    // 5. Set delta-seconds to the smaller of its present value and cookie-\n    //    age-limit.\n    // deltaSeconds = Math.min(deltaSeconds * 1000, maxExpiresMs)\n\n    // 6. If delta-seconds is less than or equal to zero (0), let expiry-\n    //    time be the earliest representable date and time.  Otherwise, let\n    //    the expiry-time be the current date and time plus delta-seconds\n    //    seconds.\n    // const expiryTime = deltaSeconds <= 0 ? Date.now() : Date.now() + deltaSeconds\n\n    // 7. Append an attribute to the cookie-attribute-list with an\n    //    attribute-name of Max-Age and an attribute-value of expiry-time.\n    cookieAttributeList.maxAge = deltaSeconds\n  } else if (attributeNameLowercase === 'domain') {\n    // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.3\n    // If the attribute-name case-insensitively matches the string \"Domain\",\n    // the user agent MUST process the cookie-av as follows.\n\n    // 1. Let cookie-domain be the attribute-value.\n    let cookieDomain = attributeValue\n\n    // 2. If cookie-domain starts with %x2E (\".\"), let cookie-domain be\n    //    cookie-domain without its leading %x2E (\".\").\n    if (cookieDomain[0] === '.') {\n      cookieDomain = cookieDomain.slice(1)\n    }\n\n    // 3. Convert the cookie-domain to lower case.\n    cookieDomain = cookieDomain.toLowerCase()\n\n    // 4. Append an attribute to the cookie-attribute-list with an\n    //    attribute-name of Domain and an attribute-value of cookie-domain.\n    cookieAttributeList.domain = cookieDomain\n  } else if (attributeNameLowercase === 'path') {\n    // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.4\n    // If the attribute-name case-insensitively matches the string \"Path\",\n    // the user agent MUST process the cookie-av as follows.\n\n    // 1. If the attribute-value is empty or if the first character of the\n    //    attribute-value is not %x2F (\"/\"):\n    let cookiePath = ''\n    if (attributeValue.length === 0 || attributeValue[0] !== '/') {\n      // 1. Let cookie-path be the default-path.\n      cookiePath = '/'\n    } else {\n      // Otherwise:\n\n      // 1. Let cookie-path be the attribute-value.\n      cookiePath = attributeValue\n    }\n\n    // 2. Append an attribute to the cookie-attribute-list with an\n    //    attribute-name of Path and an attribute-value of cookie-path.\n    cookieAttributeList.path = cookiePath\n  } else if (attributeNameLowercase === 'secure') {\n    // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.5\n    // If the attribute-name case-insensitively matches the string \"Secure\",\n    // the user agent MUST append an attribute to the cookie-attribute-list\n    // with an attribute-name of Secure and an empty attribute-value.\n\n    cookieAttributeList.secure = true\n  } else if (attributeNameLowercase === 'httponly') {\n    // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.6\n    // If the attribute-name case-insensitively matches the string\n    // \"HttpOnly\", the user agent MUST append an attribute to the cookie-\n    // attribute-list with an attribute-name of HttpOnly and an empty\n    // attribute-value.\n\n    cookieAttributeList.httpOnly = true\n  } else if (attributeNameLowercase === 'samesite') {\n    // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.7\n    // If the attribute-name case-insensitively matches the string\n    // \"SameSite\", the user agent MUST process the cookie-av as follows:\n\n    // 1. Let enforcement be \"Default\".\n    let enforcement = 'Default'\n\n    const attributeValueLowercase = attributeValue.toLowerCase()\n    // 2. If cookie-av's attribute-value is a case-insensitive match for\n    //    \"None\", set enforcement to \"None\".\n    if (attributeValueLowercase.includes('none')) {\n      enforcement = 'None'\n    }\n\n    // 3. If cookie-av's attribute-value is a case-insensitive match for\n    //    \"Strict\", set enforcement to \"Strict\".\n    if (attributeValueLowercase.includes('strict')) {\n      enforcement = 'Strict'\n    }\n\n    // 4. If cookie-av's attribute-value is a case-insensitive match for\n    //    \"Lax\", set enforcement to \"Lax\".\n    if (attributeValueLowercase.includes('lax')) {\n      enforcement = 'Lax'\n    }\n\n    // 5. Append an attribute to the cookie-attribute-list with an\n    //    attribute-name of \"SameSite\" and an attribute-value of\n    //    enforcement.\n    cookieAttributeList.sameSite = enforcement\n  } else {\n    cookieAttributeList.unparsed ??= []\n\n    cookieAttributeList.unparsed.push(`${attributeName}=${attributeValue}`)\n  }\n\n  // 8. Return to Step 1 of this algorithm.\n  return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n}\n\nmodule.exports = {\n  parseSetCookie,\n  parseUnparsedAttributes\n}\n", "'use strict'\n\nconst { parseSetCookie } = require('./parse')\nconst { stringify } = require('./util')\nconst { webidl } = require('../fetch/webidl')\nconst { Headers } = require('../fetch/headers')\n\n/**\n * @typedef {Object} Cookie\n * @property {string} name\n * @property {string} value\n * @property {Date|number|undefined} expires\n * @property {number|undefined} maxAge\n * @property {string|undefined} domain\n * @property {string|undefined} path\n * @property {boolean|undefined} secure\n * @property {boolean|undefined} httpOnly\n * @property {'Strict'|'Lax'|'None'} sameSite\n * @property {string[]} unparsed\n */\n\n/**\n * @param {Headers} headers\n * @returns {Record<string, string>}\n */\nfunction getCookies (headers) {\n  webidl.argumentLengthCheck(arguments, 1, 'getCookies')\n\n  webidl.brandCheck(headers, Headers, { strict: false })\n\n  const cookie = headers.get('cookie')\n  const out = {}\n\n  if (!cookie) {\n    return out\n  }\n\n  for (const piece of cookie.split(';')) {\n    const [name, ...value] = piece.split('=')\n\n    out[name.trim()] = value.join('=')\n  }\n\n  return out\n}\n\n/**\n * @param {Headers} headers\n * @param {string} name\n * @param {{ path?: string, domain?: string }|undefined} attributes\n * @returns {void}\n */\nfunction deleteCookie (headers, name, attributes) {\n  webidl.brandCheck(headers, Headers, { strict: false })\n\n  const prefix = 'deleteCookie'\n  webidl.argumentLengthCheck(arguments, 2, prefix)\n\n  name = webidl.converters.DOMString(name, prefix, 'name')\n  attributes = webidl.converters.DeleteCookieAttributes(attributes)\n\n  // Matches behavior of\n  // https://github.com/denoland/deno_std/blob/63827b16330b82489a04614027c33b7904e08be5/http/cookie.ts#L278\n  setCookie(headers, {\n    name,\n    value: '',\n    expires: new Date(0),\n    ...attributes\n  })\n}\n\n/**\n * @param {Headers} headers\n * @returns {Cookie[]}\n */\nfunction getSetCookies (headers) {\n  webidl.argumentLengthCheck(arguments, 1, 'getSetCookies')\n\n  webidl.brandCheck(headers, Headers, { strict: false })\n\n  const cookies = headers.getSetCookie()\n\n  if (!cookies) {\n    return []\n  }\n\n  return cookies.map((pair) => parseSetCookie(pair))\n}\n\n/**\n * @param {Headers} headers\n * @param {Cookie} cookie\n * @returns {void}\n */\nfunction setCookie (headers, cookie) {\n  webidl.argumentLengthCheck(arguments, 2, 'setCookie')\n\n  webidl.brandCheck(headers, Headers, { strict: false })\n\n  cookie = webidl.converters.Cookie(cookie)\n\n  const str = stringify(cookie)\n\n  if (str) {\n    headers.append('Set-Cookie', str)\n  }\n}\n\nwebidl.converters.DeleteCookieAttributes = webidl.dictionaryConverter([\n  {\n    converter: webidl.nullableConverter(webidl.converters.DOMString),\n    key: 'path',\n    defaultValue: () => null\n  },\n  {\n    converter: webidl.nullableConverter(webidl.converters.DOMString),\n    key: 'domain',\n    defaultValue: () => null\n  }\n])\n\nwebidl.converters.Cookie = webidl.dictionaryConverter([\n  {\n    converter: webidl.converters.DOMString,\n    key: 'name'\n  },\n  {\n    converter: webidl.converters.DOMString,\n    key: 'value'\n  },\n  {\n    converter: webidl.nullableConverter((value) => {\n      if (typeof value === 'number') {\n        return webidl.converters['unsigned long long'](value)\n      }\n\n      return new Date(value)\n    }),\n    key: 'expires',\n    defaultValue: () => null\n  },\n  {\n    converter: webidl.nullableConverter(webidl.converters['long long']),\n    key: 'maxAge',\n    defaultValue: () => null\n  },\n  {\n    converter: webidl.nullableConverter(webidl.converters.DOMString),\n    key: 'domain',\n    defaultValue: () => null\n  },\n  {\n    converter: webidl.nullableConverter(webidl.converters.DOMString),\n    key: 'path',\n    defaultValue: () => null\n  },\n  {\n    converter: webidl.nullableConverter(webidl.converters.boolean),\n    key: 'secure',\n    defaultValue: () => null\n  },\n  {\n    converter: webidl.nullableConverter(webidl.converters.boolean),\n    key: 'httpOnly',\n    defaultValue: () => null\n  },\n  {\n    converter: webidl.converters.USVString,\n    key: 'sameSite',\n    allowedValues: ['Strict', 'Lax', 'None']\n  },\n  {\n    converter: webidl.sequenceConverter(webidl.converters.DOMString),\n    key: 'unparsed',\n    defaultValue: () => new Array(0)\n  }\n])\n\nmodule.exports = {\n  getCookies,\n  deleteCookie,\n  getSetCookies,\n  setCookie\n}\n", "'use strict'\n\nconst { webidl } = require('../fetch/webidl')\nconst { kEnumerableProperty } = require('../../core/util')\nconst { kConstruct } = require('../../core/symbols')\nconst { MessagePort } = require('node:worker_threads')\n\n/**\n * @see https://html.spec.whatwg.org/multipage/comms.html#messageevent\n */\nclass MessageEvent extends Event {\n  #eventInit\n\n  constructor (type, eventInitDict = {}) {\n    if (type === kConstruct) {\n      super(arguments[1], arguments[2])\n      webidl.util.markAsUncloneable(this)\n      return\n    }\n\n    const prefix = 'MessageEvent constructor'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    type = webidl.converters.DOMString(type, prefix, 'type')\n    eventInitDict = webidl.converters.MessageEventInit(eventInitDict, prefix, 'eventInitDict')\n\n    super(type, eventInitDict)\n\n    this.#eventInit = eventInitDict\n    webidl.util.markAsUncloneable(this)\n  }\n\n  get data () {\n    webidl.brandCheck(this, MessageEvent)\n\n    return this.#eventInit.data\n  }\n\n  get origin () {\n    webidl.brandCheck(this, MessageEvent)\n\n    return this.#eventInit.origin\n  }\n\n  get lastEventId () {\n    webidl.brandCheck(this, MessageEvent)\n\n    return this.#eventInit.lastEventId\n  }\n\n  get source () {\n    webidl.brandCheck(this, MessageEvent)\n\n    return this.#eventInit.source\n  }\n\n  get ports () {\n    webidl.brandCheck(this, MessageEvent)\n\n    if (!Object.isFrozen(this.#eventInit.ports)) {\n      Object.freeze(this.#eventInit.ports)\n    }\n\n    return this.#eventInit.ports\n  }\n\n  initMessageEvent (\n    type,\n    bubbles = false,\n    cancelable = false,\n    data = null,\n    origin = '',\n    lastEventId = '',\n    source = null,\n    ports = []\n  ) {\n    webidl.brandCheck(this, MessageEvent)\n\n    webidl.argumentLengthCheck(arguments, 1, 'MessageEvent.initMessageEvent')\n\n    return new MessageEvent(type, {\n      bubbles, cancelable, data, origin, lastEventId, source, ports\n    })\n  }\n\n  static createFastMessageEvent (type, init) {\n    const messageEvent = new MessageEvent(kConstruct, type, init)\n    messageEvent.#eventInit = init\n    messageEvent.#eventInit.data ??= null\n    messageEvent.#eventInit.origin ??= ''\n    messageEvent.#eventInit.lastEventId ??= ''\n    messageEvent.#eventInit.source ??= null\n    messageEvent.#eventInit.ports ??= []\n    return messageEvent\n  }\n}\n\nconst { createFastMessageEvent } = MessageEvent\ndelete MessageEvent.createFastMessageEvent\n\n/**\n * @see https://websockets.spec.whatwg.org/#the-closeevent-interface\n */\nclass CloseEvent extends Event {\n  #eventInit\n\n  constructor (type, eventInitDict = {}) {\n    const prefix = 'CloseEvent constructor'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    type = webidl.converters.DOMString(type, prefix, 'type')\n    eventInitDict = webidl.converters.CloseEventInit(eventInitDict)\n\n    super(type, eventInitDict)\n\n    this.#eventInit = eventInitDict\n    webidl.util.markAsUncloneable(this)\n  }\n\n  get wasClean () {\n    webidl.brandCheck(this, CloseEvent)\n\n    return this.#eventInit.wasClean\n  }\n\n  get code () {\n    webidl.brandCheck(this, CloseEvent)\n\n    return this.#eventInit.code\n  }\n\n  get reason () {\n    webidl.brandCheck(this, CloseEvent)\n\n    return this.#eventInit.reason\n  }\n}\n\n// https://html.spec.whatwg.org/multipage/webappapis.html#the-errorevent-interface\nclass ErrorEvent extends Event {\n  #eventInit\n\n  constructor (type, eventInitDict) {\n    const prefix = 'ErrorEvent constructor'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    super(type, eventInitDict)\n    webidl.util.markAsUncloneable(this)\n\n    type = webidl.converters.DOMString(type, prefix, 'type')\n    eventInitDict = webidl.converters.ErrorEventInit(eventInitDict ?? {})\n\n    this.#eventInit = eventInitDict\n  }\n\n  get message () {\n    webidl.brandCheck(this, ErrorEvent)\n\n    return this.#eventInit.message\n  }\n\n  get filename () {\n    webidl.brandCheck(this, ErrorEvent)\n\n    return this.#eventInit.filename\n  }\n\n  get lineno () {\n    webidl.brandCheck(this, ErrorEvent)\n\n    return this.#eventInit.lineno\n  }\n\n  get colno () {\n    webidl.brandCheck(this, ErrorEvent)\n\n    return this.#eventInit.colno\n  }\n\n  get error () {\n    webidl.brandCheck(this, ErrorEvent)\n\n    return this.#eventInit.error\n  }\n}\n\nObject.defineProperties(MessageEvent.prototype, {\n  [Symbol.toStringTag]: {\n    value: 'MessageEvent',\n    configurable: true\n  },\n  data: kEnumerableProperty,\n  origin: kEnumerableProperty,\n  lastEventId: kEnumerableProperty,\n  source: kEnumerableProperty,\n  ports: kEnumerableProperty,\n  initMessageEvent: kEnumerableProperty\n})\n\nObject.defineProperties(CloseEvent.prototype, {\n  [Symbol.toStringTag]: {\n    value: 'CloseEvent',\n    configurable: true\n  },\n  reason: kEnumerableProperty,\n  code: kEnumerableProperty,\n  wasClean: kEnumerableProperty\n})\n\nObject.defineProperties(ErrorEvent.prototype, {\n  [Symbol.toStringTag]: {\n    value: 'ErrorEvent',\n    configurable: true\n  },\n  message: kEnumerableProperty,\n  filename: kEnumerableProperty,\n  lineno: kEnumerableProperty,\n  colno: kEnumerableProperty,\n  error: kEnumerableProperty\n})\n\nwebidl.converters.MessagePort = webidl.interfaceConverter(MessagePort)\n\nwebidl.converters['sequence<MessagePort>'] = webidl.sequenceConverter(\n  webidl.converters.MessagePort\n)\n\nconst eventInit = [\n  {\n    key: 'bubbles',\n    converter: webidl.converters.boolean,\n    defaultValue: () => false\n  },\n  {\n    key: 'cancelable',\n    converter: webidl.converters.boolean,\n    defaultValue: () => false\n  },\n  {\n    key: 'composed',\n    converter: webidl.converters.boolean,\n    defaultValue: () => false\n  }\n]\n\nwebidl.converters.MessageEventInit = webidl.dictionaryConverter([\n  ...eventInit,\n  {\n    key: 'data',\n    converter: webidl.converters.any,\n    defaultValue: () => null\n  },\n  {\n    key: 'origin',\n    converter: webidl.converters.USVString,\n    defaultValue: () => ''\n  },\n  {\n    key: 'lastEventId',\n    converter: webidl.converters.DOMString,\n    defaultValue: () => ''\n  },\n  {\n    key: 'source',\n    // Node doesn't implement WindowProxy or ServiceWorker, so the only\n    // valid value for source is a MessagePort.\n    converter: webidl.nullableConverter(webidl.converters.MessagePort),\n    defaultValue: () => null\n  },\n  {\n    key: 'ports',\n    converter: webidl.converters['sequence<MessagePort>'],\n    defaultValue: () => new Array(0)\n  }\n])\n\nwebidl.converters.CloseEventInit = webidl.dictionaryConverter([\n  ...eventInit,\n  {\n    key: 'wasClean',\n    converter: webidl.converters.boolean,\n    defaultValue: () => false\n  },\n  {\n    key: 'code',\n    converter: webidl.converters['unsigned short'],\n    defaultValue: () => 0\n  },\n  {\n    key: 'reason',\n    converter: webidl.converters.USVString,\n    defaultValue: () => ''\n  }\n])\n\nwebidl.converters.ErrorEventInit = webidl.dictionaryConverter([\n  ...eventInit,\n  {\n    key: 'message',\n    converter: webidl.converters.DOMString,\n    defaultValue: () => ''\n  },\n  {\n    key: 'filename',\n    converter: webidl.converters.USVString,\n    defaultValue: () => ''\n  },\n  {\n    key: 'lineno',\n    converter: webidl.converters['unsigned long'],\n    defaultValue: () => 0\n  },\n  {\n    key: 'colno',\n    converter: webidl.converters['unsigned long'],\n    defaultValue: () => 0\n  },\n  {\n    key: 'error',\n    converter: webidl.converters.any\n  }\n])\n\nmodule.exports = {\n  MessageEvent,\n  CloseEvent,\n  ErrorEvent,\n  createFastMessageEvent\n}\n", "'use strict'\n\n// This is a Globally Unique Identifier unique used\n// to validate that the endpoint accepts websocket\n// connections.\n// See https://www.rfc-editor.org/rfc/rfc6455.html#section-1.3\nconst uid = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11'\n\n/** @type {PropertyDescriptor} */\nconst staticPropertyDescriptors = {\n  enumerable: true,\n  writable: false,\n  configurable: false\n}\n\nconst states = {\n  CONNECTING: 0,\n  OPEN: 1,\n  CLOSING: 2,\n  CLOSED: 3\n}\n\nconst sentCloseFrameState = {\n  NOT_SENT: 0,\n  PROCESSING: 1,\n  SENT: 2\n}\n\nconst opcodes = {\n  CONTINUATION: 0x0,\n  TEXT: 0x1,\n  BINARY: 0x2,\n  CLOSE: 0x8,\n  PING: 0x9,\n  PONG: 0xA\n}\n\nconst maxUnsigned16Bit = 2 ** 16 - 1 // 65535\n\nconst parserStates = {\n  INFO: 0,\n  PAYLOADLENGTH_16: 2,\n  PAYLOADLENGTH_64: 3,\n  READ_DATA: 4\n}\n\nconst emptyBuffer = Buffer.allocUnsafe(0)\n\nconst sendHints = {\n  string: 1,\n  typedArray: 2,\n  arrayBuffer: 3,\n  blob: 4\n}\n\nmodule.exports = {\n  uid,\n  sentCloseFrameState,\n  staticPropertyDescriptors,\n  states,\n  opcodes,\n  maxUnsigned16Bit,\n  parserStates,\n  emptyBuffer,\n  sendHints\n}\n", "'use strict'\n\nmodule.exports = {\n  kWebSocketURL: Symbol('url'),\n  kReadyState: Symbol('ready state'),\n  kController: Symbol('controller'),\n  kResponse: Symbol('response'),\n  kBinaryType: Symbol('binary type'),\n  kSentClose: Symbol('sent close'),\n  kReceivedClose: Symbol('received close'),\n  kByteParser: Symbol('byte parser')\n}\n", "'use strict'\n\nconst { kReadyState, kController, kResponse, kBinaryType, kWebSocketURL } = require('./symbols')\nconst { states, opcodes } = require('./constants')\nconst { ErrorEvent, createFastMessageEvent } = require('./events')\nconst { isUtf8 } = require('node:buffer')\nconst { collectASequenceOfCodePointsFast, removeHTTPWhitespace } = require('../fetch/data-url')\n\n/* globals Blob */\n\n/**\n * @param {import('./websocket').WebSocket} ws\n * @returns {boolean}\n */\nfunction isConnecting (ws) {\n  // If the WebSocket connection is not yet established, and the connection\n  // is not yet closed, then the WebSocket connection is in the CONNECTING state.\n  return ws[kReadyState] === states.CONNECTING\n}\n\n/**\n * @param {import('./websocket').WebSocket} ws\n * @returns {boolean}\n */\nfunction isEstablished (ws) {\n  // If the server's response is validated as provided for above, it is\n  // said that _The WebSocket Connection is Established_ and that the\n  // WebSocket Connection is in the OPEN state.\n  return ws[kReadyState] === states.OPEN\n}\n\n/**\n * @param {import('./websocket').WebSocket} ws\n * @returns {boolean}\n */\nfunction isClosing (ws) {\n  // Upon either sending or receiving a Close control frame, it is said\n  // that _The WebSocket Closing Handshake is Started_ and that the\n  // WebSocket connection is in the CLOSING state.\n  return ws[kReadyState] === states.CLOSING\n}\n\n/**\n * @param {import('./websocket').WebSocket} ws\n * @returns {boolean}\n */\nfunction isClosed (ws) {\n  return ws[kReadyState] === states.CLOSED\n}\n\n/**\n * @see https://dom.spec.whatwg.org/#concept-event-fire\n * @param {string} e\n * @param {EventTarget} target\n * @param {(...args: ConstructorParameters<typeof Event>) => Event} eventFactory\n * @param {EventInit | undefined} eventInitDict\n */\nfunction fireEvent (e, target, eventFactory = (type, init) => new Event(type, init), eventInitDict = {}) {\n  // 1. If eventConstructor is not given, then let eventConstructor be Event.\n\n  // 2. Let event be the result of creating an event given eventConstructor,\n  //    in the relevant realm of target.\n  // 3. Initialize event\u2019s type attribute to e.\n  const event = eventFactory(e, eventInitDict)\n\n  // 4. Initialize any other IDL attributes of event as described in the\n  //    invocation of this algorithm.\n\n  // 5. Return the result of dispatching event at target, with legacy target\n  //    override flag set if set.\n  target.dispatchEvent(event)\n}\n\n/**\n * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol\n * @param {import('./websocket').WebSocket} ws\n * @param {number} type Opcode\n * @param {Buffer} data application data\n */\nfunction websocketMessageReceived (ws, type, data) {\n  // 1. If ready state is not OPEN (1), then return.\n  if (ws[kReadyState] !== states.OPEN) {\n    return\n  }\n\n  // 2. Let dataForEvent be determined by switching on type and binary type:\n  let dataForEvent\n\n  if (type === opcodes.TEXT) {\n    // -> type indicates that the data is Text\n    //      a new DOMString containing data\n    try {\n      dataForEvent = utf8Decode(data)\n    } catch {\n      failWebsocketConnection(ws, 'Received invalid UTF-8 in text frame.')\n      return\n    }\n  } else if (type === opcodes.BINARY) {\n    if (ws[kBinaryType] === 'blob') {\n      // -> type indicates that the data is Binary and binary type is \"blob\"\n      //      a new Blob object, created in the relevant Realm of the WebSocket\n      //      object, that represents data as its raw data\n      dataForEvent = new Blob([data])\n    } else {\n      // -> type indicates that the data is Binary and binary type is \"arraybuffer\"\n      //      a new ArrayBuffer object, created in the relevant Realm of the\n      //      WebSocket object, whose contents are data\n      dataForEvent = toArrayBuffer(data)\n    }\n  }\n\n  // 3. Fire an event named message at the WebSocket object, using MessageEvent,\n  //    with the origin attribute initialized to the serialization of the WebSocket\n  //    object\u2019s url's origin, and the data attribute initialized to dataForEvent.\n  fireEvent('message', ws, createFastMessageEvent, {\n    origin: ws[kWebSocketURL].origin,\n    data: dataForEvent\n  })\n}\n\nfunction toArrayBuffer (buffer) {\n  if (buffer.byteLength === buffer.buffer.byteLength) {\n    return buffer.buffer\n  }\n  return buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.byteLength)\n}\n\n/**\n * @see https://datatracker.ietf.org/doc/html/rfc6455\n * @see https://datatracker.ietf.org/doc/html/rfc2616\n * @see https://bugs.chromium.org/p/chromium/issues/detail?id=398407\n * @param {string} protocol\n */\nfunction isValidSubprotocol (protocol) {\n  // If present, this value indicates one\n  // or more comma-separated subprotocol the client wishes to speak,\n  // ordered by preference.  The elements that comprise this value\n  // MUST be non-empty strings with characters in the range U+0021 to\n  // U+007E not including separator characters as defined in\n  // [RFC2616] and MUST all be unique strings.\n  if (protocol.length === 0) {\n    return false\n  }\n\n  for (let i = 0; i < protocol.length; ++i) {\n    const code = protocol.charCodeAt(i)\n\n    if (\n      code < 0x21 || // CTL, contains SP (0x20) and HT (0x09)\n      code > 0x7E ||\n      code === 0x22 || // \"\n      code === 0x28 || // (\n      code === 0x29 || // )\n      code === 0x2C || // ,\n      code === 0x2F || // /\n      code === 0x3A || // :\n      code === 0x3B || // ;\n      code === 0x3C || // <\n      code === 0x3D || // =\n      code === 0x3E || // >\n      code === 0x3F || // ?\n      code === 0x40 || // @\n      code === 0x5B || // [\n      code === 0x5C || // \\\n      code === 0x5D || // ]\n      code === 0x7B || // {\n      code === 0x7D // }\n    ) {\n      return false\n    }\n  }\n\n  return true\n}\n\n/**\n * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7-4\n * @param {number} code\n */\nfunction isValidStatusCode (code) {\n  if (code >= 1000 && code < 1015) {\n    return (\n      code !== 1004 && // reserved\n      code !== 1005 && // \"MUST NOT be set as a status code\"\n      code !== 1006 // \"MUST NOT be set as a status code\"\n    )\n  }\n\n  return code >= 3000 && code <= 4999\n}\n\n/**\n * @param {import('./websocket').WebSocket} ws\n * @param {string|undefined} reason\n */\nfunction failWebsocketConnection (ws, reason) {\n  const { [kController]: controller, [kResponse]: response } = ws\n\n  controller.abort()\n\n  if (response?.socket && !response.socket.destroyed) {\n    response.socket.destroy()\n  }\n\n  if (reason) {\n    // TODO: process.nextTick\n    fireEvent('error', ws, (type, init) => new ErrorEvent(type, init), {\n      error: new Error(reason),\n      message: reason\n    })\n  }\n}\n\n/**\n * @see https://datatracker.ietf.org/doc/html/rfc6455#section-5.5\n * @param {number} opcode\n */\nfunction isControlFrame (opcode) {\n  return (\n    opcode === opcodes.CLOSE ||\n    opcode === opcodes.PING ||\n    opcode === opcodes.PONG\n  )\n}\n\nfunction isContinuationFrame (opcode) {\n  return opcode === opcodes.CONTINUATION\n}\n\nfunction isTextBinaryFrame (opcode) {\n  return opcode === opcodes.TEXT || opcode === opcodes.BINARY\n}\n\nfunction isValidOpcode (opcode) {\n  return isTextBinaryFrame(opcode) || isContinuationFrame(opcode) || isControlFrame(opcode)\n}\n\n/**\n * Parses a Sec-WebSocket-Extensions header value.\n * @param {string} extensions\n * @returns {Map<string, string>}\n */\n// TODO(@Uzlopak, @KhafraDev): make compliant https://datatracker.ietf.org/doc/html/rfc6455#section-9.1\nfunction parseExtensions (extensions) {\n  const position = { position: 0 }\n  const extensionList = new Map()\n\n  while (position.position < extensions.length) {\n    const pair = collectASequenceOfCodePointsFast(';', extensions, position)\n    const [name, value = ''] = pair.split('=')\n\n    extensionList.set(\n      removeHTTPWhitespace(name, true, false),\n      removeHTTPWhitespace(value, false, true)\n    )\n\n    position.position++\n  }\n\n  return extensionList\n}\n\n/**\n * @see https://www.rfc-editor.org/rfc/rfc7692#section-7.1.2.2\n * @description \"client-max-window-bits = 1*DIGIT\"\n * @param {string} value\n */\nfunction isValidClientWindowBits (value) {\n  for (let i = 0; i < value.length; i++) {\n    const byte = value.charCodeAt(i)\n\n    if (byte < 0x30 || byte > 0x39) {\n      return false\n    }\n  }\n\n  return true\n}\n\n// https://nodejs.org/api/intl.html#detecting-internationalization-support\nconst hasIntl = typeof process.versions.icu === 'string'\nconst fatalDecoder = hasIntl ? new TextDecoder('utf-8', { fatal: true }) : undefined\n\n/**\n * Converts a Buffer to utf-8, even on platforms without icu.\n * @param {Buffer} buffer\n */\nconst utf8Decode = hasIntl\n  ? fatalDecoder.decode.bind(fatalDecoder)\n  : function (buffer) {\n    if (isUtf8(buffer)) {\n      return buffer.toString('utf-8')\n    }\n    throw new TypeError('Invalid utf-8 received.')\n  }\n\nmodule.exports = {\n  isConnecting,\n  isEstablished,\n  isClosing,\n  isClosed,\n  fireEvent,\n  isValidSubprotocol,\n  isValidStatusCode,\n  failWebsocketConnection,\n  websocketMessageReceived,\n  utf8Decode,\n  isControlFrame,\n  isContinuationFrame,\n  isTextBinaryFrame,\n  isValidOpcode,\n  parseExtensions,\n  isValidClientWindowBits\n}\n", "'use strict'\n\nconst { maxUnsigned16Bit } = require('./constants')\n\nconst BUFFER_SIZE = 16386\n\n/** @type {import('crypto')} */\nlet crypto\nlet buffer = null\nlet bufIdx = BUFFER_SIZE\n\ntry {\n  crypto = require('node:crypto')\n/* c8 ignore next 3 */\n} catch {\n  crypto = {\n    // not full compatibility, but minimum.\n    randomFillSync: function randomFillSync (buffer, _offset, _size) {\n      for (let i = 0; i < buffer.length; ++i) {\n        buffer[i] = Math.random() * 255 | 0\n      }\n      return buffer\n    }\n  }\n}\n\nfunction generateMask () {\n  if (bufIdx === BUFFER_SIZE) {\n    bufIdx = 0\n    crypto.randomFillSync((buffer ??= Buffer.allocUnsafe(BUFFER_SIZE)), 0, BUFFER_SIZE)\n  }\n  return [buffer[bufIdx++], buffer[bufIdx++], buffer[bufIdx++], buffer[bufIdx++]]\n}\n\nclass WebsocketFrameSend {\n  /**\n   * @param {Buffer|undefined} data\n   */\n  constructor (data) {\n    this.frameData = data\n  }\n\n  createFrame (opcode) {\n    const frameData = this.frameData\n    const maskKey = generateMask()\n    const bodyLength = frameData?.byteLength ?? 0\n\n    /** @type {number} */\n    let payloadLength = bodyLength // 0-125\n    let offset = 6\n\n    if (bodyLength > maxUnsigned16Bit) {\n      offset += 8 // payload length is next 8 bytes\n      payloadLength = 127\n    } else if (bodyLength > 125) {\n      offset += 2 // payload length is next 2 bytes\n      payloadLength = 126\n    }\n\n    const buffer = Buffer.allocUnsafe(bodyLength + offset)\n\n    // Clear first 2 bytes, everything else is overwritten\n    buffer[0] = buffer[1] = 0\n    buffer[0] |= 0x80 // FIN\n    buffer[0] = (buffer[0] & 0xF0) + opcode // opcode\n\n    /*! ws. MIT License. Einar Otto Stangvik <einaros@gmail.com> */\n    buffer[offset - 4] = maskKey[0]\n    buffer[offset - 3] = maskKey[1]\n    buffer[offset - 2] = maskKey[2]\n    buffer[offset - 1] = maskKey[3]\n\n    buffer[1] = payloadLength\n\n    if (payloadLength === 126) {\n      buffer.writeUInt16BE(bodyLength, 2)\n    } else if (payloadLength === 127) {\n      // Clear extended payload length\n      buffer[2] = buffer[3] = 0\n      buffer.writeUIntBE(bodyLength, 4, 6)\n    }\n\n    buffer[1] |= 0x80 // MASK\n\n    // mask body\n    for (let i = 0; i < bodyLength; ++i) {\n      buffer[offset + i] = frameData[i] ^ maskKey[i & 3]\n    }\n\n    return buffer\n  }\n}\n\nmodule.exports = {\n  WebsocketFrameSend\n}\n", "'use strict'\n\nconst { uid, states, sentCloseFrameState, emptyBuffer, opcodes } = require('./constants')\nconst {\n  kReadyState,\n  kSentClose,\n  kByteParser,\n  kReceivedClose,\n  kResponse\n} = require('./symbols')\nconst { fireEvent, failWebsocketConnection, isClosing, isClosed, isEstablished, parseExtensions } = require('./util')\nconst { channels } = require('../../core/diagnostics')\nconst { CloseEvent } = require('./events')\nconst { makeRequest } = require('../fetch/request')\nconst { fetching } = require('../fetch/index')\nconst { Headers, getHeadersList } = require('../fetch/headers')\nconst { getDecodeSplit } = require('../fetch/util')\nconst { WebsocketFrameSend } = require('./frame')\n\n/** @type {import('crypto')} */\nlet crypto\ntry {\n  crypto = require('node:crypto')\n/* c8 ignore next 3 */\n} catch {\n\n}\n\n/**\n * @see https://websockets.spec.whatwg.org/#concept-websocket-establish\n * @param {URL} url\n * @param {string|string[]} protocols\n * @param {import('./websocket').WebSocket} ws\n * @param {(response: any, extensions: string[] | undefined) => void} onEstablish\n * @param {Partial<import('../../types/websocket').WebSocketInit>} options\n */\nfunction establishWebSocketConnection (url, protocols, client, ws, onEstablish, options) {\n  // 1. Let requestURL be a copy of url, with its scheme set to \"http\", if url\u2019s\n  //    scheme is \"ws\", and to \"https\" otherwise.\n  const requestURL = url\n\n  requestURL.protocol = url.protocol === 'ws:' ? 'http:' : 'https:'\n\n  // 2. Let request be a new request, whose URL is requestURL, client is client,\n  //    service-workers mode is \"none\", referrer is \"no-referrer\", mode is\n  //    \"websocket\", credentials mode is \"include\", cache mode is \"no-store\" ,\n  //    and redirect mode is \"error\".\n  const request = makeRequest({\n    urlList: [requestURL],\n    client,\n    serviceWorkers: 'none',\n    referrer: 'no-referrer',\n    mode: 'websocket',\n    credentials: 'include',\n    cache: 'no-store',\n    redirect: 'error'\n  })\n\n  // Note: undici extension, allow setting custom headers.\n  if (options.headers) {\n    const headersList = getHeadersList(new Headers(options.headers))\n\n    request.headersList = headersList\n  }\n\n  // 3. Append (`Upgrade`, `websocket`) to request\u2019s header list.\n  // 4. Append (`Connection`, `Upgrade`) to request\u2019s header list.\n  // Note: both of these are handled by undici currently.\n  // https://github.com/nodejs/undici/blob/68c269c4144c446f3f1220951338daef4a6b5ec4/lib/client.js#L1397\n\n  // 5. Let keyValue be a nonce consisting of a randomly selected\n  //    16-byte value that has been forgiving-base64-encoded and\n  //    isomorphic encoded.\n  const keyValue = crypto.randomBytes(16).toString('base64')\n\n  // 6. Append (`Sec-WebSocket-Key`, keyValue) to request\u2019s\n  //    header list.\n  request.headersList.append('sec-websocket-key', keyValue)\n\n  // 7. Append (`Sec-WebSocket-Version`, `13`) to request\u2019s\n  //    header list.\n  request.headersList.append('sec-websocket-version', '13')\n\n  // 8. For each protocol in protocols, combine\n  //    (`Sec-WebSocket-Protocol`, protocol) in request\u2019s header\n  //    list.\n  for (const protocol of protocols) {\n    request.headersList.append('sec-websocket-protocol', protocol)\n  }\n\n  // 9. Let permessageDeflate be a user-agent defined\n  //    \"permessage-deflate\" extension header value.\n  // https://github.com/mozilla/gecko-dev/blob/ce78234f5e653a5d3916813ff990f053510227bc/netwerk/protocol/websocket/WebSocketChannel.cpp#L2673\n  const permessageDeflate = 'permessage-deflate; client_max_window_bits'\n\n  // 10. Append (`Sec-WebSocket-Extensions`, permessageDeflate) to\n  //     request\u2019s header list.\n  request.headersList.append('sec-websocket-extensions', permessageDeflate)\n\n  // 11. Fetch request with useParallelQueue set to true, and\n  //     processResponse given response being these steps:\n  const controller = fetching({\n    request,\n    useParallelQueue: true,\n    dispatcher: options.dispatcher,\n    processResponse (response) {\n      // 1. If response is a network error or its status is not 101,\n      //    fail the WebSocket connection.\n      if (response.type === 'error' || response.status !== 101) {\n        failWebsocketConnection(ws, 'Received network error or non-101 status code.')\n        return\n      }\n\n      // 2. If protocols is not the empty list and extracting header\n      //    list values given `Sec-WebSocket-Protocol` and response\u2019s\n      //    header list results in null, failure, or the empty byte\n      //    sequence, then fail the WebSocket connection.\n      if (protocols.length !== 0 && !response.headersList.get('Sec-WebSocket-Protocol')) {\n        failWebsocketConnection(ws, 'Server did not respond with sent protocols.')\n        return\n      }\n\n      // 3. Follow the requirements stated step 2 to step 6, inclusive,\n      //    of the last set of steps in section 4.1 of The WebSocket\n      //    Protocol to validate response. This either results in fail\n      //    the WebSocket connection or the WebSocket connection is\n      //    established.\n\n      // 2. If the response lacks an |Upgrade| header field or the |Upgrade|\n      //    header field contains a value that is not an ASCII case-\n      //    insensitive match for the value \"websocket\", the client MUST\n      //    _Fail the WebSocket Connection_.\n      if (response.headersList.get('Upgrade')?.toLowerCase() !== 'websocket') {\n        failWebsocketConnection(ws, 'Server did not set Upgrade header to \"websocket\".')\n        return\n      }\n\n      // 3. If the response lacks a |Connection| header field or the\n      //    |Connection| header field doesn't contain a token that is an\n      //    ASCII case-insensitive match for the value \"Upgrade\", the client\n      //    MUST _Fail the WebSocket Connection_.\n      if (response.headersList.get('Connection')?.toLowerCase() !== 'upgrade') {\n        failWebsocketConnection(ws, 'Server did not set Connection header to \"upgrade\".')\n        return\n      }\n\n      // 4. If the response lacks a |Sec-WebSocket-Accept| header field or\n      //    the |Sec-WebSocket-Accept| contains a value other than the\n      //    base64-encoded SHA-1 of the concatenation of the |Sec-WebSocket-\n      //    Key| (as a string, not base64-decoded) with the string \"258EAFA5-\n      //    E914-47DA-95CA-C5AB0DC85B11\" but ignoring any leading and\n      //    trailing whitespace, the client MUST _Fail the WebSocket\n      //    Connection_.\n      const secWSAccept = response.headersList.get('Sec-WebSocket-Accept')\n      const digest = crypto.createHash('sha1').update(keyValue + uid).digest('base64')\n      if (secWSAccept !== digest) {\n        failWebsocketConnection(ws, 'Incorrect hash received in Sec-WebSocket-Accept header.')\n        return\n      }\n\n      // 5. If the response includes a |Sec-WebSocket-Extensions| header\n      //    field and this header field indicates the use of an extension\n      //    that was not present in the client's handshake (the server has\n      //    indicated an extension not requested by the client), the client\n      //    MUST _Fail the WebSocket Connection_.  (The parsing of this\n      //    header field to determine which extensions are requested is\n      //    discussed in Section 9.1.)\n      const secExtension = response.headersList.get('Sec-WebSocket-Extensions')\n      let extensions\n\n      if (secExtension !== null) {\n        extensions = parseExtensions(secExtension)\n\n        if (!extensions.has('permessage-deflate')) {\n          failWebsocketConnection(ws, 'Sec-WebSocket-Extensions header does not match.')\n          return\n        }\n      }\n\n      // 6. If the response includes a |Sec-WebSocket-Protocol| header field\n      //    and this header field indicates the use of a subprotocol that was\n      //    not present in the client's handshake (the server has indicated a\n      //    subprotocol not requested by the client), the client MUST _Fail\n      //    the WebSocket Connection_.\n      const secProtocol = response.headersList.get('Sec-WebSocket-Protocol')\n\n      if (secProtocol !== null) {\n        const requestProtocols = getDecodeSplit('sec-websocket-protocol', request.headersList)\n\n        // The client can request that the server use a specific subprotocol by\n        // including the |Sec-WebSocket-Protocol| field in its handshake.  If it\n        // is specified, the server needs to include the same field and one of\n        // the selected subprotocol values in its response for the connection to\n        // be established.\n        if (!requestProtocols.includes(secProtocol)) {\n          failWebsocketConnection(ws, 'Protocol was not set in the opening handshake.')\n          return\n        }\n      }\n\n      response.socket.on('data', onSocketData)\n      response.socket.on('close', onSocketClose)\n      response.socket.on('error', onSocketError)\n\n      if (channels.open.hasSubscribers) {\n        channels.open.publish({\n          address: response.socket.address(),\n          protocol: secProtocol,\n          extensions: secExtension\n        })\n      }\n\n      onEstablish(response, extensions)\n    }\n  })\n\n  return controller\n}\n\nfunction closeWebSocketConnection (ws, code, reason, reasonByteLength) {\n  if (isClosing(ws) || isClosed(ws)) {\n    // If this's ready state is CLOSING (2) or CLOSED (3)\n    // Do nothing.\n  } else if (!isEstablished(ws)) {\n    // If the WebSocket connection is not yet established\n    // Fail the WebSocket connection and set this's ready state\n    // to CLOSING (2).\n    failWebsocketConnection(ws, 'Connection was closed before it was established.')\n    ws[kReadyState] = states.CLOSING\n  } else if (ws[kSentClose] === sentCloseFrameState.NOT_SENT) {\n    // If the WebSocket closing handshake has not yet been started\n    // Start the WebSocket closing handshake and set this's ready\n    // state to CLOSING (2).\n    // - If neither code nor reason is present, the WebSocket Close\n    //   message must not have a body.\n    // - If code is present, then the status code to use in the\n    //   WebSocket Close message must be the integer given by code.\n    // - If reason is also present, then reasonBytes must be\n    //   provided in the Close message after the status code.\n\n    ws[kSentClose] = sentCloseFrameState.PROCESSING\n\n    const frame = new WebsocketFrameSend()\n\n    // If neither code nor reason is present, the WebSocket Close\n    // message must not have a body.\n\n    // If code is present, then the status code to use in the\n    // WebSocket Close message must be the integer given by code.\n    if (code !== undefined && reason === undefined) {\n      frame.frameData = Buffer.allocUnsafe(2)\n      frame.frameData.writeUInt16BE(code, 0)\n    } else if (code !== undefined && reason !== undefined) {\n      // If reason is also present, then reasonBytes must be\n      // provided in the Close message after the status code.\n      frame.frameData = Buffer.allocUnsafe(2 + reasonByteLength)\n      frame.frameData.writeUInt16BE(code, 0)\n      // the body MAY contain UTF-8-encoded data with value /reason/\n      frame.frameData.write(reason, 2, 'utf-8')\n    } else {\n      frame.frameData = emptyBuffer\n    }\n\n    /** @type {import('stream').Duplex} */\n    const socket = ws[kResponse].socket\n\n    socket.write(frame.createFrame(opcodes.CLOSE))\n\n    ws[kSentClose] = sentCloseFrameState.SENT\n\n    // Upon either sending or receiving a Close control frame, it is said\n    // that _The WebSocket Closing Handshake is Started_ and that the\n    // WebSocket connection is in the CLOSING state.\n    ws[kReadyState] = states.CLOSING\n  } else {\n    // Otherwise\n    // Set this's ready state to CLOSING (2).\n    ws[kReadyState] = states.CLOSING\n  }\n}\n\n/**\n * @param {Buffer} chunk\n */\nfunction onSocketData (chunk) {\n  if (!this.ws[kByteParser].write(chunk)) {\n    this.pause()\n  }\n}\n\n/**\n * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol\n * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.4\n */\nfunction onSocketClose () {\n  const { ws } = this\n  const { [kResponse]: response } = ws\n\n  response.socket.off('data', onSocketData)\n  response.socket.off('close', onSocketClose)\n  response.socket.off('error', onSocketError)\n\n  // If the TCP connection was closed after the\n  // WebSocket closing handshake was completed, the WebSocket connection\n  // is said to have been closed _cleanly_.\n  const wasClean = ws[kSentClose] === sentCloseFrameState.SENT && ws[kReceivedClose]\n\n  let code = 1005\n  let reason = ''\n\n  const result = ws[kByteParser].closingInfo\n\n  if (result && !result.error) {\n    code = result.code ?? 1005\n    reason = result.reason\n  } else if (!ws[kReceivedClose]) {\n    // If _The WebSocket\n    // Connection is Closed_ and no Close control frame was received by the\n    // endpoint (such as could occur if the underlying transport connection\n    // is lost), _The WebSocket Connection Close Code_ is considered to be\n    // 1006.\n    code = 1006\n  }\n\n  // 1. Change the ready state to CLOSED (3).\n  ws[kReadyState] = states.CLOSED\n\n  // 2. If the user agent was required to fail the WebSocket\n  //    connection, or if the WebSocket connection was closed\n  //    after being flagged as full, fire an event named error\n  //    at the WebSocket object.\n  // TODO\n\n  // 3. Fire an event named close at the WebSocket object,\n  //    using CloseEvent, with the wasClean attribute\n  //    initialized to true if the connection closed cleanly\n  //    and false otherwise, the code attribute initialized to\n  //    the WebSocket connection close code, and the reason\n  //    attribute initialized to the result of applying UTF-8\n  //    decode without BOM to the WebSocket connection close\n  //    reason.\n  // TODO: process.nextTick\n  fireEvent('close', ws, (type, init) => new CloseEvent(type, init), {\n    wasClean, code, reason\n  })\n\n  if (channels.close.hasSubscribers) {\n    channels.close.publish({\n      websocket: ws,\n      code,\n      reason\n    })\n  }\n}\n\nfunction onSocketError (error) {\n  const { ws } = this\n\n  ws[kReadyState] = states.CLOSING\n\n  if (channels.socketError.hasSubscribers) {\n    channels.socketError.publish(error)\n  }\n\n  this.destroy()\n}\n\nmodule.exports = {\n  establishWebSocketConnection,\n  closeWebSocketConnection\n}\n", "'use strict'\n\nconst { createInflateRaw, Z_DEFAULT_WINDOWBITS } = require('node:zlib')\nconst { isValidClientWindowBits } = require('./util')\n\nconst tail = Buffer.from([0x00, 0x00, 0xff, 0xff])\nconst kBuffer = Symbol('kBuffer')\nconst kLength = Symbol('kLength')\n\nclass PerMessageDeflate {\n  /** @type {import('node:zlib').InflateRaw} */\n  #inflate\n\n  #options = {}\n\n  constructor (extensions) {\n    this.#options.serverNoContextTakeover = extensions.has('server_no_context_takeover')\n    this.#options.serverMaxWindowBits = extensions.get('server_max_window_bits')\n  }\n\n  decompress (chunk, fin, callback) {\n    // An endpoint uses the following algorithm to decompress a message.\n    // 1.  Append 4 octets of 0x00 0x00 0xff 0xff to the tail end of the\n    //     payload of the message.\n    // 2.  Decompress the resulting data using DEFLATE.\n\n    if (!this.#inflate) {\n      let windowBits = Z_DEFAULT_WINDOWBITS\n\n      if (this.#options.serverMaxWindowBits) { // empty values default to Z_DEFAULT_WINDOWBITS\n        if (!isValidClientWindowBits(this.#options.serverMaxWindowBits)) {\n          callback(new Error('Invalid server_max_window_bits'))\n          return\n        }\n\n        windowBits = Number.parseInt(this.#options.serverMaxWindowBits)\n      }\n\n      this.#inflate = createInflateRaw({ windowBits })\n      this.#inflate[kBuffer] = []\n      this.#inflate[kLength] = 0\n\n      this.#inflate.on('data', (data) => {\n        this.#inflate[kBuffer].push(data)\n        this.#inflate[kLength] += data.length\n      })\n\n      this.#inflate.on('error', (err) => {\n        this.#inflate = null\n        callback(err)\n      })\n    }\n\n    this.#inflate.write(chunk)\n    if (fin) {\n      this.#inflate.write(tail)\n    }\n\n    this.#inflate.flush(() => {\n      const full = Buffer.concat(this.#inflate[kBuffer], this.#inflate[kLength])\n\n      this.#inflate[kBuffer].length = 0\n      this.#inflate[kLength] = 0\n\n      callback(null, full)\n    })\n  }\n}\n\nmodule.exports = { PerMessageDeflate }\n", "'use strict'\n\nconst { Writable } = require('node:stream')\nconst assert = require('node:assert')\nconst { parserStates, opcodes, states, emptyBuffer, sentCloseFrameState } = require('./constants')\nconst { kReadyState, kSentClose, kResponse, kReceivedClose } = require('./symbols')\nconst { channels } = require('../../core/diagnostics')\nconst {\n  isValidStatusCode,\n  isValidOpcode,\n  failWebsocketConnection,\n  websocketMessageReceived,\n  utf8Decode,\n  isControlFrame,\n  isTextBinaryFrame,\n  isContinuationFrame\n} = require('./util')\nconst { WebsocketFrameSend } = require('./frame')\nconst { closeWebSocketConnection } = require('./connection')\nconst { PerMessageDeflate } = require('./permessage-deflate')\n\n// This code was influenced by ws released under the MIT license.\n// Copyright (c) 2011 Einar Otto Stangvik <einaros@gmail.com>\n// Copyright (c) 2013 Arnout Kazemier and contributors\n// Copyright (c) 2016 Luigi Pinca and contributors\n\nclass ByteParser extends Writable {\n  #buffers = []\n  #byteOffset = 0\n  #loop = false\n\n  #state = parserStates.INFO\n\n  #info = {}\n  #fragments = []\n\n  /** @type {Map<string, PerMessageDeflate>} */\n  #extensions\n\n  constructor (ws, extensions) {\n    super()\n\n    this.ws = ws\n    this.#extensions = extensions == null ? new Map() : extensions\n\n    if (this.#extensions.has('permessage-deflate')) {\n      this.#extensions.set('permessage-deflate', new PerMessageDeflate(extensions))\n    }\n  }\n\n  /**\n   * @param {Buffer} chunk\n   * @param {() => void} callback\n   */\n  _write (chunk, _, callback) {\n    this.#buffers.push(chunk)\n    this.#byteOffset += chunk.length\n    this.#loop = true\n\n    this.run(callback)\n  }\n\n  /**\n   * Runs whenever a new chunk is received.\n   * Callback is called whenever there are no more chunks buffering,\n   * or not enough bytes are buffered to parse.\n   */\n  run (callback) {\n    while (this.#loop) {\n      if (this.#state === parserStates.INFO) {\n        // If there aren't enough bytes to parse the payload length, etc.\n        if (this.#byteOffset < 2) {\n          return callback()\n        }\n\n        const buffer = this.consume(2)\n        const fin = (buffer[0] & 0x80) !== 0\n        const opcode = buffer[0] & 0x0F\n        const masked = (buffer[1] & 0x80) === 0x80\n\n        const fragmented = !fin && opcode !== opcodes.CONTINUATION\n        const payloadLength = buffer[1] & 0x7F\n\n        const rsv1 = buffer[0] & 0x40\n        const rsv2 = buffer[0] & 0x20\n        const rsv3 = buffer[0] & 0x10\n\n        if (!isValidOpcode(opcode)) {\n          failWebsocketConnection(this.ws, 'Invalid opcode received')\n          return callback()\n        }\n\n        if (masked) {\n          failWebsocketConnection(this.ws, 'Frame cannot be masked')\n          return callback()\n        }\n\n        // MUST be 0 unless an extension is negotiated that defines meanings\n        // for non-zero values.  If a nonzero value is received and none of\n        // the negotiated extensions defines the meaning of such a nonzero\n        // value, the receiving endpoint MUST _Fail the WebSocket\n        // Connection_.\n        // This document allocates the RSV1 bit of the WebSocket header for\n        // PMCEs and calls the bit the \"Per-Message Compressed\" bit.  On a\n        // WebSocket connection where a PMCE is in use, this bit indicates\n        // whether a message is compressed or not.\n        if (rsv1 !== 0 && !this.#extensions.has('permessage-deflate')) {\n          failWebsocketConnection(this.ws, 'Expected RSV1 to be clear.')\n          return\n        }\n\n        if (rsv2 !== 0 || rsv3 !== 0) {\n          failWebsocketConnection(this.ws, 'RSV1, RSV2, RSV3 must be clear')\n          return\n        }\n\n        if (fragmented && !isTextBinaryFrame(opcode)) {\n          // Only text and binary frames can be fragmented\n          failWebsocketConnection(this.ws, 'Invalid frame type was fragmented.')\n          return\n        }\n\n        // If we are already parsing a text/binary frame and do not receive either\n        // a continuation frame or close frame, fail the connection.\n        if (isTextBinaryFrame(opcode) && this.#fragments.length > 0) {\n          failWebsocketConnection(this.ws, 'Expected continuation frame')\n          return\n        }\n\n        if (this.#info.fragmented && fragmented) {\n          // A fragmented frame can't be fragmented itself\n          failWebsocketConnection(this.ws, 'Fragmented frame exceeded 125 bytes.')\n          return\n        }\n\n        // \"All control frames MUST have a payload length of 125 bytes or less\n        // and MUST NOT be fragmented.\"\n        if ((payloadLength > 125 || fragmented) && isControlFrame(opcode)) {\n          failWebsocketConnection(this.ws, 'Control frame either too large or fragmented')\n          return\n        }\n\n        if (isContinuationFrame(opcode) && this.#fragments.length === 0 && !this.#info.compressed) {\n          failWebsocketConnection(this.ws, 'Unexpected continuation frame')\n          return\n        }\n\n        if (payloadLength <= 125) {\n          this.#info.payloadLength = payloadLength\n          this.#state = parserStates.READ_DATA\n        } else if (payloadLength === 126) {\n          this.#state = parserStates.PAYLOADLENGTH_16\n        } else if (payloadLength === 127) {\n          this.#state = parserStates.PAYLOADLENGTH_64\n        }\n\n        if (isTextBinaryFrame(opcode)) {\n          this.#info.binaryType = opcode\n          this.#info.compressed = rsv1 !== 0\n        }\n\n        this.#info.opcode = opcode\n        this.#info.masked = masked\n        this.#info.fin = fin\n        this.#info.fragmented = fragmented\n      } else if (this.#state === parserStates.PAYLOADLENGTH_16) {\n        if (this.#byteOffset < 2) {\n          return callback()\n        }\n\n        const buffer = this.consume(2)\n\n        this.#info.payloadLength = buffer.readUInt16BE(0)\n        this.#state = parserStates.READ_DATA\n      } else if (this.#state === parserStates.PAYLOADLENGTH_64) {\n        if (this.#byteOffset < 8) {\n          return callback()\n        }\n\n        const buffer = this.consume(8)\n        const upper = buffer.readUInt32BE(0)\n\n        // 2^31 is the maximum bytes an arraybuffer can contain\n        // on 32-bit systems. Although, on 64-bit systems, this is\n        // 2^53-1 bytes.\n        // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Invalid_array_length\n        // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/common/globals.h;drc=1946212ac0100668f14eb9e2843bdd846e510a1e;bpv=1;bpt=1;l=1275\n        // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/objects/js-array-buffer.h;l=34;drc=1946212ac0100668f14eb9e2843bdd846e510a1e\n        if (upper > 2 ** 31 - 1) {\n          failWebsocketConnection(this.ws, 'Received payload length > 2^31 bytes.')\n          return\n        }\n\n        const lower = buffer.readUInt32BE(4)\n\n        this.#info.payloadLength = (upper << 8) + lower\n        this.#state = parserStates.READ_DATA\n      } else if (this.#state === parserStates.READ_DATA) {\n        if (this.#byteOffset < this.#info.payloadLength) {\n          return callback()\n        }\n\n        const body = this.consume(this.#info.payloadLength)\n\n        if (isControlFrame(this.#info.opcode)) {\n          this.#loop = this.parseControlFrame(body)\n          this.#state = parserStates.INFO\n        } else {\n          if (!this.#info.compressed) {\n            this.#fragments.push(body)\n\n            // If the frame is not fragmented, a message has been received.\n            // If the frame is fragmented, it will terminate with a fin bit set\n            // and an opcode of 0 (continuation), therefore we handle that when\n            // parsing continuation frames, not here.\n            if (!this.#info.fragmented && this.#info.fin) {\n              const fullMessage = Buffer.concat(this.#fragments)\n              websocketMessageReceived(this.ws, this.#info.binaryType, fullMessage)\n              this.#fragments.length = 0\n            }\n\n            this.#state = parserStates.INFO\n          } else {\n            this.#extensions.get('permessage-deflate').decompress(body, this.#info.fin, (error, data) => {\n              if (error) {\n                closeWebSocketConnection(this.ws, 1007, error.message, error.message.length)\n                return\n              }\n\n              this.#fragments.push(data)\n\n              if (!this.#info.fin) {\n                this.#state = parserStates.INFO\n                this.#loop = true\n                this.run(callback)\n                return\n              }\n\n              websocketMessageReceived(this.ws, this.#info.binaryType, Buffer.concat(this.#fragments))\n\n              this.#loop = true\n              this.#state = parserStates.INFO\n              this.#fragments.length = 0\n              this.run(callback)\n            })\n\n            this.#loop = false\n            break\n          }\n        }\n      }\n    }\n  }\n\n  /**\n   * Take n bytes from the buffered Buffers\n   * @param {number} n\n   * @returns {Buffer}\n   */\n  consume (n) {\n    if (n > this.#byteOffset) {\n      throw new Error('Called consume() before buffers satiated.')\n    } else if (n === 0) {\n      return emptyBuffer\n    }\n\n    if (this.#buffers[0].length === n) {\n      this.#byteOffset -= this.#buffers[0].length\n      return this.#buffers.shift()\n    }\n\n    const buffer = Buffer.allocUnsafe(n)\n    let offset = 0\n\n    while (offset !== n) {\n      const next = this.#buffers[0]\n      const { length } = next\n\n      if (length + offset === n) {\n        buffer.set(this.#buffers.shift(), offset)\n        break\n      } else if (length + offset > n) {\n        buffer.set(next.subarray(0, n - offset), offset)\n        this.#buffers[0] = next.subarray(n - offset)\n        break\n      } else {\n        buffer.set(this.#buffers.shift(), offset)\n        offset += next.length\n      }\n    }\n\n    this.#byteOffset -= n\n\n    return buffer\n  }\n\n  parseCloseBody (data) {\n    assert(data.length !== 1)\n\n    // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.5\n    /** @type {number|undefined} */\n    let code\n\n    if (data.length >= 2) {\n      // _The WebSocket Connection Close Code_ is\n      // defined as the status code (Section 7.4) contained in the first Close\n      // control frame received by the application\n      code = data.readUInt16BE(0)\n    }\n\n    if (code !== undefined && !isValidStatusCode(code)) {\n      return { code: 1002, reason: 'Invalid status code', error: true }\n    }\n\n    // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.6\n    /** @type {Buffer} */\n    let reason = data.subarray(2)\n\n    // Remove BOM\n    if (reason[0] === 0xEF && reason[1] === 0xBB && reason[2] === 0xBF) {\n      reason = reason.subarray(3)\n    }\n\n    try {\n      reason = utf8Decode(reason)\n    } catch {\n      return { code: 1007, reason: 'Invalid UTF-8', error: true }\n    }\n\n    return { code, reason, error: false }\n  }\n\n  /**\n   * Parses control frames.\n   * @param {Buffer} body\n   */\n  parseControlFrame (body) {\n    const { opcode, payloadLength } = this.#info\n\n    if (opcode === opcodes.CLOSE) {\n      if (payloadLength === 1) {\n        failWebsocketConnection(this.ws, 'Received close frame with a 1-byte body.')\n        return false\n      }\n\n      this.#info.closeInfo = this.parseCloseBody(body)\n\n      if (this.#info.closeInfo.error) {\n        const { code, reason } = this.#info.closeInfo\n\n        closeWebSocketConnection(this.ws, code, reason, reason.length)\n        failWebsocketConnection(this.ws, reason)\n        return false\n      }\n\n      if (this.ws[kSentClose] !== sentCloseFrameState.SENT) {\n        // If an endpoint receives a Close frame and did not previously send a\n        // Close frame, the endpoint MUST send a Close frame in response.  (When\n        // sending a Close frame in response, the endpoint typically echos the\n        // status code it received.)\n        let body = emptyBuffer\n        if (this.#info.closeInfo.code) {\n          body = Buffer.allocUnsafe(2)\n          body.writeUInt16BE(this.#info.closeInfo.code, 0)\n        }\n        const closeFrame = new WebsocketFrameSend(body)\n\n        this.ws[kResponse].socket.write(\n          closeFrame.createFrame(opcodes.CLOSE),\n          (err) => {\n            if (!err) {\n              this.ws[kSentClose] = sentCloseFrameState.SENT\n            }\n          }\n        )\n      }\n\n      // Upon either sending or receiving a Close control frame, it is said\n      // that _The WebSocket Closing Handshake is Started_ and that the\n      // WebSocket connection is in the CLOSING state.\n      this.ws[kReadyState] = states.CLOSING\n      this.ws[kReceivedClose] = true\n\n      return false\n    } else if (opcode === opcodes.PING) {\n      // Upon receipt of a Ping frame, an endpoint MUST send a Pong frame in\n      // response, unless it already received a Close frame.\n      // A Pong frame sent in response to a Ping frame must have identical\n      // \"Application data\"\n\n      if (!this.ws[kReceivedClose]) {\n        const frame = new WebsocketFrameSend(body)\n\n        this.ws[kResponse].socket.write(frame.createFrame(opcodes.PONG))\n\n        if (channels.ping.hasSubscribers) {\n          channels.ping.publish({\n            payload: body\n          })\n        }\n      }\n    } else if (opcode === opcodes.PONG) {\n      // A Pong frame MAY be sent unsolicited.  This serves as a\n      // unidirectional heartbeat.  A response to an unsolicited Pong frame is\n      // not expected.\n\n      if (channels.pong.hasSubscribers) {\n        channels.pong.publish({\n          payload: body\n        })\n      }\n    }\n\n    return true\n  }\n\n  get closingInfo () {\n    return this.#info.closeInfo\n  }\n}\n\nmodule.exports = {\n  ByteParser\n}\n", "'use strict'\n\nconst { WebsocketFrameSend } = require('./frame')\nconst { opcodes, sendHints } = require('./constants')\nconst FixedQueue = require('../../dispatcher/fixed-queue')\n\n/** @type {typeof Uint8Array} */\nconst FastBuffer = Buffer[Symbol.species]\n\n/**\n * @typedef {object} SendQueueNode\n * @property {Promise<void> | null} promise\n * @property {((...args: any[]) => any)} callback\n * @property {Buffer | null} frame\n */\n\nclass SendQueue {\n  /**\n   * @type {FixedQueue}\n   */\n  #queue = new FixedQueue()\n\n  /**\n   * @type {boolean}\n   */\n  #running = false\n\n  /** @type {import('node:net').Socket} */\n  #socket\n\n  constructor (socket) {\n    this.#socket = socket\n  }\n\n  add (item, cb, hint) {\n    if (hint !== sendHints.blob) {\n      const frame = createFrame(item, hint)\n      if (!this.#running) {\n        // fast-path\n        this.#socket.write(frame, cb)\n      } else {\n        /** @type {SendQueueNode} */\n        const node = {\n          promise: null,\n          callback: cb,\n          frame\n        }\n        this.#queue.push(node)\n      }\n      return\n    }\n\n    /** @type {SendQueueNode} */\n    const node = {\n      promise: item.arrayBuffer().then((ab) => {\n        node.promise = null\n        node.frame = createFrame(ab, hint)\n      }),\n      callback: cb,\n      frame: null\n    }\n\n    this.#queue.push(node)\n\n    if (!this.#running) {\n      this.#run()\n    }\n  }\n\n  async #run () {\n    this.#running = true\n    const queue = this.#queue\n    while (!queue.isEmpty()) {\n      const node = queue.shift()\n      // wait pending promise\n      if (node.promise !== null) {\n        await node.promise\n      }\n      // write\n      this.#socket.write(node.frame, node.callback)\n      // cleanup\n      node.callback = node.frame = null\n    }\n    this.#running = false\n  }\n}\n\nfunction createFrame (data, hint) {\n  return new WebsocketFrameSend(toBuffer(data, hint)).createFrame(hint === sendHints.string ? opcodes.TEXT : opcodes.BINARY)\n}\n\nfunction toBuffer (data, hint) {\n  switch (hint) {\n    case sendHints.string:\n      return Buffer.from(data)\n    case sendHints.arrayBuffer:\n    case sendHints.blob:\n      return new FastBuffer(data)\n    case sendHints.typedArray:\n      return new FastBuffer(data.buffer, data.byteOffset, data.byteLength)\n  }\n}\n\nmodule.exports = { SendQueue }\n", "'use strict'\n\nconst { webidl } = require('../fetch/webidl')\nconst { URLSerializer } = require('../fetch/data-url')\nconst { environmentSettingsObject } = require('../fetch/util')\nconst { staticPropertyDescriptors, states, sentCloseFrameState, sendHints } = require('./constants')\nconst {\n  kWebSocketURL,\n  kReadyState,\n  kController,\n  kBinaryType,\n  kResponse,\n  kSentClose,\n  kByteParser\n} = require('./symbols')\nconst {\n  isConnecting,\n  isEstablished,\n  isClosing,\n  isValidSubprotocol,\n  fireEvent\n} = require('./util')\nconst { establishWebSocketConnection, closeWebSocketConnection } = require('./connection')\nconst { ByteParser } = require('./receiver')\nconst { kEnumerableProperty, isBlobLike } = require('../../core/util')\nconst { getGlobalDispatcher } = require('../../global')\nconst { types } = require('node:util')\nconst { ErrorEvent, CloseEvent } = require('./events')\nconst { SendQueue } = require('./sender')\n\n// https://websockets.spec.whatwg.org/#interface-definition\nclass WebSocket extends EventTarget {\n  #events = {\n    open: null,\n    error: null,\n    close: null,\n    message: null\n  }\n\n  #bufferedAmount = 0\n  #protocol = ''\n  #extensions = ''\n\n  /** @type {SendQueue} */\n  #sendQueue\n\n  /**\n   * @param {string} url\n   * @param {string|string[]} protocols\n   */\n  constructor (url, protocols = []) {\n    super()\n\n    webidl.util.markAsUncloneable(this)\n\n    const prefix = 'WebSocket constructor'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    const options = webidl.converters['DOMString or sequence<DOMString> or WebSocketInit'](protocols, prefix, 'options')\n\n    url = webidl.converters.USVString(url, prefix, 'url')\n    protocols = options.protocols\n\n    // 1. Let baseURL be this's relevant settings object's API base URL.\n    const baseURL = environmentSettingsObject.settingsObject.baseUrl\n\n    // 1. Let urlRecord be the result of applying the URL parser to url with baseURL.\n    let urlRecord\n\n    try {\n      urlRecord = new URL(url, baseURL)\n    } catch (e) {\n      // 3. If urlRecord is failure, then throw a \"SyntaxError\" DOMException.\n      throw new DOMException(e, 'SyntaxError')\n    }\n\n    // 4. If urlRecord\u2019s scheme is \"http\", then set urlRecord\u2019s scheme to \"ws\".\n    if (urlRecord.protocol === 'http:') {\n      urlRecord.protocol = 'ws:'\n    } else if (urlRecord.protocol === 'https:') {\n      // 5. Otherwise, if urlRecord\u2019s scheme is \"https\", set urlRecord\u2019s scheme to \"wss\".\n      urlRecord.protocol = 'wss:'\n    }\n\n    // 6. If urlRecord\u2019s scheme is not \"ws\" or \"wss\", then throw a \"SyntaxError\" DOMException.\n    if (urlRecord.protocol !== 'ws:' && urlRecord.protocol !== 'wss:') {\n      throw new DOMException(\n        `Expected a ws: or wss: protocol, got ${urlRecord.protocol}`,\n        'SyntaxError'\n      )\n    }\n\n    // 7. If urlRecord\u2019s fragment is non-null, then throw a \"SyntaxError\"\n    //    DOMException.\n    if (urlRecord.hash || urlRecord.href.endsWith('#')) {\n      throw new DOMException('Got fragment', 'SyntaxError')\n    }\n\n    // 8. If protocols is a string, set protocols to a sequence consisting\n    //    of just that string.\n    if (typeof protocols === 'string') {\n      protocols = [protocols]\n    }\n\n    // 9. If any of the values in protocols occur more than once or otherwise\n    //    fail to match the requirements for elements that comprise the value\n    //    of `Sec-WebSocket-Protocol` fields as defined by The WebSocket\n    //    protocol, then throw a \"SyntaxError\" DOMException.\n    if (protocols.length !== new Set(protocols.map(p => p.toLowerCase())).size) {\n      throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError')\n    }\n\n    if (protocols.length > 0 && !protocols.every(p => isValidSubprotocol(p))) {\n      throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError')\n    }\n\n    // 10. Set this's url to urlRecord.\n    this[kWebSocketURL] = new URL(urlRecord.href)\n\n    // 11. Let client be this's relevant settings object.\n    const client = environmentSettingsObject.settingsObject\n\n    // 12. Run this step in parallel:\n\n    //    1. Establish a WebSocket connection given urlRecord, protocols,\n    //       and client.\n    this[kController] = establishWebSocketConnection(\n      urlRecord,\n      protocols,\n      client,\n      this,\n      (response, extensions) => this.#onConnectionEstablished(response, extensions),\n      options\n    )\n\n    // Each WebSocket object has an associated ready state, which is a\n    // number representing the state of the connection. Initially it must\n    // be CONNECTING (0).\n    this[kReadyState] = WebSocket.CONNECTING\n\n    this[kSentClose] = sentCloseFrameState.NOT_SENT\n\n    // The extensions attribute must initially return the empty string.\n\n    // The protocol attribute must initially return the empty string.\n\n    // Each WebSocket object has an associated binary type, which is a\n    // BinaryType. Initially it must be \"blob\".\n    this[kBinaryType] = 'blob'\n  }\n\n  /**\n   * @see https://websockets.spec.whatwg.org/#dom-websocket-close\n   * @param {number|undefined} code\n   * @param {string|undefined} reason\n   */\n  close (code = undefined, reason = undefined) {\n    webidl.brandCheck(this, WebSocket)\n\n    const prefix = 'WebSocket.close'\n\n    if (code !== undefined) {\n      code = webidl.converters['unsigned short'](code, prefix, 'code', { clamp: true })\n    }\n\n    if (reason !== undefined) {\n      reason = webidl.converters.USVString(reason, prefix, 'reason')\n    }\n\n    // 1. If code is present, but is neither an integer equal to 1000 nor an\n    //    integer in the range 3000 to 4999, inclusive, throw an\n    //    \"InvalidAccessError\" DOMException.\n    if (code !== undefined) {\n      if (code !== 1000 && (code < 3000 || code > 4999)) {\n        throw new DOMException('invalid code', 'InvalidAccessError')\n      }\n    }\n\n    let reasonByteLength = 0\n\n    // 2. If reason is present, then run these substeps:\n    if (reason !== undefined) {\n      // 1. Let reasonBytes be the result of encoding reason.\n      // 2. If reasonBytes is longer than 123 bytes, then throw a\n      //    \"SyntaxError\" DOMException.\n      reasonByteLength = Buffer.byteLength(reason)\n\n      if (reasonByteLength > 123) {\n        throw new DOMException(\n          `Reason must be less than 123 bytes; received ${reasonByteLength}`,\n          'SyntaxError'\n        )\n      }\n    }\n\n    // 3. Run the first matching steps from the following list:\n    closeWebSocketConnection(this, code, reason, reasonByteLength)\n  }\n\n  /**\n   * @see https://websockets.spec.whatwg.org/#dom-websocket-send\n   * @param {NodeJS.TypedArray|ArrayBuffer|Blob|string} data\n   */\n  send (data) {\n    webidl.brandCheck(this, WebSocket)\n\n    const prefix = 'WebSocket.send'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    data = webidl.converters.WebSocketSendData(data, prefix, 'data')\n\n    // 1. If this's ready state is CONNECTING, then throw an\n    //    \"InvalidStateError\" DOMException.\n    if (isConnecting(this)) {\n      throw new DOMException('Sent before connected.', 'InvalidStateError')\n    }\n\n    // 2. Run the appropriate set of steps from the following list:\n    // https://datatracker.ietf.org/doc/html/rfc6455#section-6.1\n    // https://datatracker.ietf.org/doc/html/rfc6455#section-5.2\n\n    if (!isEstablished(this) || isClosing(this)) {\n      return\n    }\n\n    // If data is a string\n    if (typeof data === 'string') {\n      // If the WebSocket connection is established and the WebSocket\n      // closing handshake has not yet started, then the user agent\n      // must send a WebSocket Message comprised of the data argument\n      // using a text frame opcode; if the data cannot be sent, e.g.\n      // because it would need to be buffered but the buffer is full,\n      // the user agent must flag the WebSocket as full and then close\n      // the WebSocket connection. Any invocation of this method with a\n      // string argument that does not throw an exception must increase\n      // the bufferedAmount attribute by the number of bytes needed to\n      // express the argument as UTF-8.\n\n      const length = Buffer.byteLength(data)\n\n      this.#bufferedAmount += length\n      this.#sendQueue.add(data, () => {\n        this.#bufferedAmount -= length\n      }, sendHints.string)\n    } else if (types.isArrayBuffer(data)) {\n      // If the WebSocket connection is established, and the WebSocket\n      // closing handshake has not yet started, then the user agent must\n      // send a WebSocket Message comprised of data using a binary frame\n      // opcode; if the data cannot be sent, e.g. because it would need\n      // to be buffered but the buffer is full, the user agent must flag\n      // the WebSocket as full and then close the WebSocket connection.\n      // The data to be sent is the data stored in the buffer described\n      // by the ArrayBuffer object. Any invocation of this method with an\n      // ArrayBuffer argument that does not throw an exception must\n      // increase the bufferedAmount attribute by the length of the\n      // ArrayBuffer in bytes.\n\n      this.#bufferedAmount += data.byteLength\n      this.#sendQueue.add(data, () => {\n        this.#bufferedAmount -= data.byteLength\n      }, sendHints.arrayBuffer)\n    } else if (ArrayBuffer.isView(data)) {\n      // If the WebSocket connection is established, and the WebSocket\n      // closing handshake has not yet started, then the user agent must\n      // send a WebSocket Message comprised of data using a binary frame\n      // opcode; if the data cannot be sent, e.g. because it would need to\n      // be buffered but the buffer is full, the user agent must flag the\n      // WebSocket as full and then close the WebSocket connection. The\n      // data to be sent is the data stored in the section of the buffer\n      // described by the ArrayBuffer object that data references. Any\n      // invocation of this method with this kind of argument that does\n      // not throw an exception must increase the bufferedAmount attribute\n      // by the length of data\u2019s buffer in bytes.\n\n      this.#bufferedAmount += data.byteLength\n      this.#sendQueue.add(data, () => {\n        this.#bufferedAmount -= data.byteLength\n      }, sendHints.typedArray)\n    } else if (isBlobLike(data)) {\n      // If the WebSocket connection is established, and the WebSocket\n      // closing handshake has not yet started, then the user agent must\n      // send a WebSocket Message comprised of data using a binary frame\n      // opcode; if the data cannot be sent, e.g. because it would need to\n      // be buffered but the buffer is full, the user agent must flag the\n      // WebSocket as full and then close the WebSocket connection. The data\n      // to be sent is the raw data represented by the Blob object. Any\n      // invocation of this method with a Blob argument that does not throw\n      // an exception must increase the bufferedAmount attribute by the size\n      // of the Blob object\u2019s raw data, in bytes.\n\n      this.#bufferedAmount += data.size\n      this.#sendQueue.add(data, () => {\n        this.#bufferedAmount -= data.size\n      }, sendHints.blob)\n    }\n  }\n\n  get readyState () {\n    webidl.brandCheck(this, WebSocket)\n\n    // The readyState getter steps are to return this's ready state.\n    return this[kReadyState]\n  }\n\n  get bufferedAmount () {\n    webidl.brandCheck(this, WebSocket)\n\n    return this.#bufferedAmount\n  }\n\n  get url () {\n    webidl.brandCheck(this, WebSocket)\n\n    // The url getter steps are to return this's url, serialized.\n    return URLSerializer(this[kWebSocketURL])\n  }\n\n  get extensions () {\n    webidl.brandCheck(this, WebSocket)\n\n    return this.#extensions\n  }\n\n  get protocol () {\n    webidl.brandCheck(this, WebSocket)\n\n    return this.#protocol\n  }\n\n  get onopen () {\n    webidl.brandCheck(this, WebSocket)\n\n    return this.#events.open\n  }\n\n  set onopen (fn) {\n    webidl.brandCheck(this, WebSocket)\n\n    if (this.#events.open) {\n      this.removeEventListener('open', this.#events.open)\n    }\n\n    if (typeof fn === 'function') {\n      this.#events.open = fn\n      this.addEventListener('open', fn)\n    } else {\n      this.#events.open = null\n    }\n  }\n\n  get onerror () {\n    webidl.brandCheck(this, WebSocket)\n\n    return this.#events.error\n  }\n\n  set onerror (fn) {\n    webidl.brandCheck(this, WebSocket)\n\n    if (this.#events.error) {\n      this.removeEventListener('error', this.#events.error)\n    }\n\n    if (typeof fn === 'function') {\n      this.#events.error = fn\n      this.addEventListener('error', fn)\n    } else {\n      this.#events.error = null\n    }\n  }\n\n  get onclose () {\n    webidl.brandCheck(this, WebSocket)\n\n    return this.#events.close\n  }\n\n  set onclose (fn) {\n    webidl.brandCheck(this, WebSocket)\n\n    if (this.#events.close) {\n      this.removeEventListener('close', this.#events.close)\n    }\n\n    if (typeof fn === 'function') {\n      this.#events.close = fn\n      this.addEventListener('close', fn)\n    } else {\n      this.#events.close = null\n    }\n  }\n\n  get onmessage () {\n    webidl.brandCheck(this, WebSocket)\n\n    return this.#events.message\n  }\n\n  set onmessage (fn) {\n    webidl.brandCheck(this, WebSocket)\n\n    if (this.#events.message) {\n      this.removeEventListener('message', this.#events.message)\n    }\n\n    if (typeof fn === 'function') {\n      this.#events.message = fn\n      this.addEventListener('message', fn)\n    } else {\n      this.#events.message = null\n    }\n  }\n\n  get binaryType () {\n    webidl.brandCheck(this, WebSocket)\n\n    return this[kBinaryType]\n  }\n\n  set binaryType (type) {\n    webidl.brandCheck(this, WebSocket)\n\n    if (type !== 'blob' && type !== 'arraybuffer') {\n      this[kBinaryType] = 'blob'\n    } else {\n      this[kBinaryType] = type\n    }\n  }\n\n  /**\n   * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol\n   */\n  #onConnectionEstablished (response, parsedExtensions) {\n    // processResponse is called when the \"response\u2019s header list has been received and initialized.\"\n    // once this happens, the connection is open\n    this[kResponse] = response\n\n    const parser = new ByteParser(this, parsedExtensions)\n    parser.on('drain', onParserDrain)\n    parser.on('error', onParserError.bind(this))\n\n    response.socket.ws = this\n    this[kByteParser] = parser\n\n    this.#sendQueue = new SendQueue(response.socket)\n\n    // 1. Change the ready state to OPEN (1).\n    this[kReadyState] = states.OPEN\n\n    // 2. Change the extensions attribute\u2019s value to the extensions in use, if\n    //    it is not the null value.\n    // https://datatracker.ietf.org/doc/html/rfc6455#section-9.1\n    const extensions = response.headersList.get('sec-websocket-extensions')\n\n    if (extensions !== null) {\n      this.#extensions = extensions\n    }\n\n    // 3. Change the protocol attribute\u2019s value to the subprotocol in use, if\n    //    it is not the null value.\n    // https://datatracker.ietf.org/doc/html/rfc6455#section-1.9\n    const protocol = response.headersList.get('sec-websocket-protocol')\n\n    if (protocol !== null) {\n      this.#protocol = protocol\n    }\n\n    // 4. Fire an event named open at the WebSocket object.\n    fireEvent('open', this)\n  }\n}\n\n// https://websockets.spec.whatwg.org/#dom-websocket-connecting\nWebSocket.CONNECTING = WebSocket.prototype.CONNECTING = states.CONNECTING\n// https://websockets.spec.whatwg.org/#dom-websocket-open\nWebSocket.OPEN = WebSocket.prototype.OPEN = states.OPEN\n// https://websockets.spec.whatwg.org/#dom-websocket-closing\nWebSocket.CLOSING = WebSocket.prototype.CLOSING = states.CLOSING\n// https://websockets.spec.whatwg.org/#dom-websocket-closed\nWebSocket.CLOSED = WebSocket.prototype.CLOSED = states.CLOSED\n\nObject.defineProperties(WebSocket.prototype, {\n  CONNECTING: staticPropertyDescriptors,\n  OPEN: staticPropertyDescriptors,\n  CLOSING: staticPropertyDescriptors,\n  CLOSED: staticPropertyDescriptors,\n  url: kEnumerableProperty,\n  readyState: kEnumerableProperty,\n  bufferedAmount: kEnumerableProperty,\n  onopen: kEnumerableProperty,\n  onerror: kEnumerableProperty,\n  onclose: kEnumerableProperty,\n  close: kEnumerableProperty,\n  onmessage: kEnumerableProperty,\n  binaryType: kEnumerableProperty,\n  send: kEnumerableProperty,\n  extensions: kEnumerableProperty,\n  protocol: kEnumerableProperty,\n  [Symbol.toStringTag]: {\n    value: 'WebSocket',\n    writable: false,\n    enumerable: false,\n    configurable: true\n  }\n})\n\nObject.defineProperties(WebSocket, {\n  CONNECTING: staticPropertyDescriptors,\n  OPEN: staticPropertyDescriptors,\n  CLOSING: staticPropertyDescriptors,\n  CLOSED: staticPropertyDescriptors\n})\n\nwebidl.converters['sequence<DOMString>'] = webidl.sequenceConverter(\n  webidl.converters.DOMString\n)\n\nwebidl.converters['DOMString or sequence<DOMString>'] = function (V, prefix, argument) {\n  if (webidl.util.Type(V) === 'Object' && Symbol.iterator in V) {\n    return webidl.converters['sequence<DOMString>'](V)\n  }\n\n  return webidl.converters.DOMString(V, prefix, argument)\n}\n\n// This implements the proposal made in https://github.com/whatwg/websockets/issues/42\nwebidl.converters.WebSocketInit = webidl.dictionaryConverter([\n  {\n    key: 'protocols',\n    converter: webidl.converters['DOMString or sequence<DOMString>'],\n    defaultValue: () => new Array(0)\n  },\n  {\n    key: 'dispatcher',\n    converter: webidl.converters.any,\n    defaultValue: () => getGlobalDispatcher()\n  },\n  {\n    key: 'headers',\n    converter: webidl.nullableConverter(webidl.converters.HeadersInit)\n  }\n])\n\nwebidl.converters['DOMString or sequence<DOMString> or WebSocketInit'] = function (V) {\n  if (webidl.util.Type(V) === 'Object' && !(Symbol.iterator in V)) {\n    return webidl.converters.WebSocketInit(V)\n  }\n\n  return { protocols: webidl.converters['DOMString or sequence<DOMString>'](V) }\n}\n\nwebidl.converters.WebSocketSendData = function (V) {\n  if (webidl.util.Type(V) === 'Object') {\n    if (isBlobLike(V)) {\n      return webidl.converters.Blob(V, { strict: false })\n    }\n\n    if (ArrayBuffer.isView(V) || types.isArrayBuffer(V)) {\n      return webidl.converters.BufferSource(V)\n    }\n  }\n\n  return webidl.converters.USVString(V)\n}\n\nfunction onParserDrain () {\n  this.ws[kResponse].socket.resume()\n}\n\nfunction onParserError (err) {\n  let message\n  let code\n\n  if (err instanceof CloseEvent) {\n    message = err.reason\n    code = err.code\n  } else {\n    message = err.message\n  }\n\n  fireEvent('error', this, () => new ErrorEvent('error', { error: err, message }))\n\n  closeWebSocketConnection(this, code)\n}\n\nmodule.exports = {\n  WebSocket\n}\n", "'use strict'\n\n/**\n * Checks if the given value is a valid LastEventId.\n * @param {string} value\n * @returns {boolean}\n */\nfunction isValidLastEventId (value) {\n  // LastEventId should not contain U+0000 NULL\n  return value.indexOf('\\u0000') === -1\n}\n\n/**\n * Checks if the given value is a base 10 digit.\n * @param {string} value\n * @returns {boolean}\n */\nfunction isASCIINumber (value) {\n  if (value.length === 0) return false\n  for (let i = 0; i < value.length; i++) {\n    if (value.charCodeAt(i) < 0x30 || value.charCodeAt(i) > 0x39) return false\n  }\n  return true\n}\n\n// https://github.com/nodejs/undici/issues/2664\nfunction delay (ms) {\n  return new Promise((resolve) => {\n    setTimeout(resolve, ms).unref()\n  })\n}\n\nmodule.exports = {\n  isValidLastEventId,\n  isASCIINumber,\n  delay\n}\n", "'use strict'\nconst { Transform } = require('node:stream')\nconst { isASCIINumber, isValidLastEventId } = require('./util')\n\n/**\n * @type {number[]} BOM\n */\nconst BOM = [0xEF, 0xBB, 0xBF]\n/**\n * @type {10} LF\n */\nconst LF = 0x0A\n/**\n * @type {13} CR\n */\nconst CR = 0x0D\n/**\n * @type {58} COLON\n */\nconst COLON = 0x3A\n/**\n * @type {32} SPACE\n */\nconst SPACE = 0x20\n\n/**\n * @typedef {object} EventSourceStreamEvent\n * @type {object}\n * @property {string} [event] The event type.\n * @property {string} [data] The data of the message.\n * @property {string} [id] A unique ID for the event.\n * @property {string} [retry] The reconnection time, in milliseconds.\n */\n\n/**\n * @typedef eventSourceSettings\n * @type {object}\n * @property {string} lastEventId The last event ID received from the server.\n * @property {string} origin The origin of the event source.\n * @property {number} reconnectionTime The reconnection time, in milliseconds.\n */\n\nclass EventSourceStream extends Transform {\n  /**\n   * @type {eventSourceSettings}\n   */\n  state = null\n\n  /**\n   * Leading byte-order-mark check.\n   * @type {boolean}\n   */\n  checkBOM = true\n\n  /**\n   * @type {boolean}\n   */\n  crlfCheck = false\n\n  /**\n   * @type {boolean}\n   */\n  eventEndCheck = false\n\n  /**\n   * @type {Buffer}\n   */\n  buffer = null\n\n  pos = 0\n\n  event = {\n    data: undefined,\n    event: undefined,\n    id: undefined,\n    retry: undefined\n  }\n\n  /**\n   * @param {object} options\n   * @param {eventSourceSettings} options.eventSourceSettings\n   * @param {Function} [options.push]\n   */\n  constructor (options = {}) {\n    // Enable object mode as EventSourceStream emits objects of shape\n    // EventSourceStreamEvent\n    options.readableObjectMode = true\n\n    super(options)\n\n    this.state = options.eventSourceSettings || {}\n    if (options.push) {\n      this.push = options.push\n    }\n  }\n\n  /**\n   * @param {Buffer} chunk\n   * @param {string} _encoding\n   * @param {Function} callback\n   * @returns {void}\n   */\n  _transform (chunk, _encoding, callback) {\n    if (chunk.length === 0) {\n      callback()\n      return\n    }\n\n    // Cache the chunk in the buffer, as the data might not be complete while\n    // processing it\n    // TODO: Investigate if there is a more performant way to handle\n    // incoming chunks\n    // see: https://github.com/nodejs/undici/issues/2630\n    if (this.buffer) {\n      this.buffer = Buffer.concat([this.buffer, chunk])\n    } else {\n      this.buffer = chunk\n    }\n\n    // Strip leading byte-order-mark if we opened the stream and started\n    // the processing of the incoming data\n    if (this.checkBOM) {\n      switch (this.buffer.length) {\n        case 1:\n          // Check if the first byte is the same as the first byte of the BOM\n          if (this.buffer[0] === BOM[0]) {\n            // If it is, we need to wait for more data\n            callback()\n            return\n          }\n          // Set the checkBOM flag to false as we don't need to check for the\n          // BOM anymore\n          this.checkBOM = false\n\n          // The buffer only contains one byte so we need to wait for more data\n          callback()\n          return\n        case 2:\n          // Check if the first two bytes are the same as the first two bytes\n          // of the BOM\n          if (\n            this.buffer[0] === BOM[0] &&\n            this.buffer[1] === BOM[1]\n          ) {\n            // If it is, we need to wait for more data, because the third byte\n            // is needed to determine if it is the BOM or not\n            callback()\n            return\n          }\n\n          // Set the checkBOM flag to false as we don't need to check for the\n          // BOM anymore\n          this.checkBOM = false\n          break\n        case 3:\n          // Check if the first three bytes are the same as the first three\n          // bytes of the BOM\n          if (\n            this.buffer[0] === BOM[0] &&\n            this.buffer[1] === BOM[1] &&\n            this.buffer[2] === BOM[2]\n          ) {\n            // If it is, we can drop the buffered data, as it is only the BOM\n            this.buffer = Buffer.alloc(0)\n            // Set the checkBOM flag to false as we don't need to check for the\n            // BOM anymore\n            this.checkBOM = false\n\n            // Await more data\n            callback()\n            return\n          }\n          // If it is not the BOM, we can start processing the data\n          this.checkBOM = false\n          break\n        default:\n          // The buffer is longer than 3 bytes, so we can drop the BOM if it is\n          // present\n          if (\n            this.buffer[0] === BOM[0] &&\n            this.buffer[1] === BOM[1] &&\n            this.buffer[2] === BOM[2]\n          ) {\n            // Remove the BOM from the buffer\n            this.buffer = this.buffer.subarray(3)\n          }\n\n          // Set the checkBOM flag to false as we don't need to check for the\n          this.checkBOM = false\n          break\n      }\n    }\n\n    while (this.pos < this.buffer.length) {\n      // If the previous line ended with an end-of-line, we need to check\n      // if the next character is also an end-of-line.\n      if (this.eventEndCheck) {\n        // If the the current character is an end-of-line, then the event\n        // is finished and we can process it\n\n        // If the previous line ended with a carriage return, we need to\n        // check if the current character is a line feed and remove it\n        // from the buffer.\n        if (this.crlfCheck) {\n          // If the current character is a line feed, we can remove it\n          // from the buffer and reset the crlfCheck flag\n          if (this.buffer[this.pos] === LF) {\n            this.buffer = this.buffer.subarray(this.pos + 1)\n            this.pos = 0\n            this.crlfCheck = false\n\n            // It is possible that the line feed is not the end of the\n            // event. We need to check if the next character is an\n            // end-of-line character to determine if the event is\n            // finished. We simply continue the loop to check the next\n            // character.\n\n            // As we removed the line feed from the buffer and set the\n            // crlfCheck flag to false, we basically don't make any\n            // distinction between a line feed and a carriage return.\n            continue\n          }\n          this.crlfCheck = false\n        }\n\n        if (this.buffer[this.pos] === LF || this.buffer[this.pos] === CR) {\n          // If the current character is a carriage return, we need to\n          // set the crlfCheck flag to true, as we need to check if the\n          // next character is a line feed so we can remove it from the\n          // buffer\n          if (this.buffer[this.pos] === CR) {\n            this.crlfCheck = true\n          }\n\n          this.buffer = this.buffer.subarray(this.pos + 1)\n          this.pos = 0\n          if (\n            this.event.data !== undefined || this.event.event || this.event.id || this.event.retry) {\n            this.processEvent(this.event)\n          }\n          this.clearEvent()\n          continue\n        }\n        // If the current character is not an end-of-line, then the event\n        // is not finished and we have to reset the eventEndCheck flag\n        this.eventEndCheck = false\n        continue\n      }\n\n      // If the current character is an end-of-line, we can process the\n      // line\n      if (this.buffer[this.pos] === LF || this.buffer[this.pos] === CR) {\n        // If the current character is a carriage return, we need to\n        // set the crlfCheck flag to true, as we need to check if the\n        // next character is a line feed\n        if (this.buffer[this.pos] === CR) {\n          this.crlfCheck = true\n        }\n\n        // In any case, we can process the line as we reached an\n        // end-of-line character\n        this.parseLine(this.buffer.subarray(0, this.pos), this.event)\n\n        // Remove the processed line from the buffer\n        this.buffer = this.buffer.subarray(this.pos + 1)\n        // Reset the position as we removed the processed line from the buffer\n        this.pos = 0\n        // A line was processed and this could be the end of the event. We need\n        // to check if the next line is empty to determine if the event is\n        // finished.\n        this.eventEndCheck = true\n        continue\n      }\n\n      this.pos++\n    }\n\n    callback()\n  }\n\n  /**\n   * @param {Buffer} line\n   * @param {EventStreamEvent} event\n   */\n  parseLine (line, event) {\n    // If the line is empty (a blank line)\n    // Dispatch the event, as defined below.\n    // This will be handled in the _transform method\n    if (line.length === 0) {\n      return\n    }\n\n    // If the line starts with a U+003A COLON character (:)\n    // Ignore the line.\n    const colonPosition = line.indexOf(COLON)\n    if (colonPosition === 0) {\n      return\n    }\n\n    let field = ''\n    let value = ''\n\n    // If the line contains a U+003A COLON character (:)\n    if (colonPosition !== -1) {\n      // Collect the characters on the line before the first U+003A COLON\n      // character (:), and let field be that string.\n      // TODO: Investigate if there is a more performant way to extract the\n      // field\n      // see: https://github.com/nodejs/undici/issues/2630\n      field = line.subarray(0, colonPosition).toString('utf8')\n\n      // Collect the characters on the line after the first U+003A COLON\n      // character (:), and let value be that string.\n      // If value starts with a U+0020 SPACE character, remove it from value.\n      let valueStart = colonPosition + 1\n      if (line[valueStart] === SPACE) {\n        ++valueStart\n      }\n      // TODO: Investigate if there is a more performant way to extract the\n      // value\n      // see: https://github.com/nodejs/undici/issues/2630\n      value = line.subarray(valueStart).toString('utf8')\n\n      // Otherwise, the string is not empty but does not contain a U+003A COLON\n      // character (:)\n    } else {\n      // Process the field using the steps described below, using the whole\n      // line as the field name, and the empty string as the field value.\n      field = line.toString('utf8')\n      value = ''\n    }\n\n    // Modify the event with the field name and value. The value is also\n    // decoded as UTF-8\n    switch (field) {\n      case 'data':\n        if (event[field] === undefined) {\n          event[field] = value\n        } else {\n          event[field] += `\\n${value}`\n        }\n        break\n      case 'retry':\n        if (isASCIINumber(value)) {\n          event[field] = value\n        }\n        break\n      case 'id':\n        if (isValidLastEventId(value)) {\n          event[field] = value\n        }\n        break\n      case 'event':\n        if (value.length > 0) {\n          event[field] = value\n        }\n        break\n    }\n  }\n\n  /**\n   * @param {EventSourceStreamEvent} event\n   */\n  processEvent (event) {\n    if (event.retry && isASCIINumber(event.retry)) {\n      this.state.reconnectionTime = parseInt(event.retry, 10)\n    }\n\n    if (event.id && isValidLastEventId(event.id)) {\n      this.state.lastEventId = event.id\n    }\n\n    // only dispatch event, when data is provided\n    if (event.data !== undefined) {\n      this.push({\n        type: event.event || 'message',\n        options: {\n          data: event.data,\n          lastEventId: this.state.lastEventId,\n          origin: this.state.origin\n        }\n      })\n    }\n  }\n\n  clearEvent () {\n    this.event = {\n      data: undefined,\n      event: undefined,\n      id: undefined,\n      retry: undefined\n    }\n  }\n}\n\nmodule.exports = {\n  EventSourceStream\n}\n", "'use strict'\n\nconst { pipeline } = require('node:stream')\nconst { fetching } = require('../fetch')\nconst { makeRequest } = require('../fetch/request')\nconst { webidl } = require('../fetch/webidl')\nconst { EventSourceStream } = require('./eventsource-stream')\nconst { parseMIMEType } = require('../fetch/data-url')\nconst { createFastMessageEvent } = require('../websocket/events')\nconst { isNetworkError } = require('../fetch/response')\nconst { delay } = require('./util')\nconst { kEnumerableProperty } = require('../../core/util')\nconst { environmentSettingsObject } = require('../fetch/util')\n\nlet experimentalWarned = false\n\n/**\n * A reconnection time, in milliseconds. This must initially be an implementation-defined value,\n * probably in the region of a few seconds.\n *\n * In Comparison:\n * - Chrome uses 3000ms.\n * - Deno uses 5000ms.\n *\n * @type {3000}\n */\nconst defaultReconnectionTime = 3000\n\n/**\n * The readyState attribute represents the state of the connection.\n * @enum\n * @readonly\n * @see https://html.spec.whatwg.org/multipage/server-sent-events.html#dom-eventsource-readystate-dev\n */\n\n/**\n * The connection has not yet been established, or it was closed and the user\n * agent is reconnecting.\n * @type {0}\n */\nconst CONNECTING = 0\n\n/**\n * The user agent has an open connection and is dispatching events as it\n * receives them.\n * @type {1}\n */\nconst OPEN = 1\n\n/**\n * The connection is not open, and the user agent is not trying to reconnect.\n * @type {2}\n */\nconst CLOSED = 2\n\n/**\n * Requests for the element will have their mode set to \"cors\" and their credentials mode set to \"same-origin\".\n * @type {'anonymous'}\n */\nconst ANONYMOUS = 'anonymous'\n\n/**\n * Requests for the element will have their mode set to \"cors\" and their credentials mode set to \"include\".\n * @type {'use-credentials'}\n */\nconst USE_CREDENTIALS = 'use-credentials'\n\n/**\n * The EventSource interface is used to receive server-sent events. It\n * connects to a server over HTTP and receives events in text/event-stream\n * format without closing the connection.\n * @extends {EventTarget}\n * @see https://html.spec.whatwg.org/multipage/server-sent-events.html#server-sent-events\n * @api public\n */\nclass EventSource extends EventTarget {\n  #events = {\n    open: null,\n    error: null,\n    message: null\n  }\n\n  #url = null\n  #withCredentials = false\n\n  #readyState = CONNECTING\n\n  #request = null\n  #controller = null\n\n  #dispatcher\n\n  /**\n   * @type {import('./eventsource-stream').eventSourceSettings}\n   */\n  #state\n\n  /**\n   * Creates a new EventSource object.\n   * @param {string} url\n   * @param {EventSourceInit} [eventSourceInitDict]\n   * @see https://html.spec.whatwg.org/multipage/server-sent-events.html#the-eventsource-interface\n   */\n  constructor (url, eventSourceInitDict = {}) {\n    // 1. Let ev be a new EventSource object.\n    super()\n\n    webidl.util.markAsUncloneable(this)\n\n    const prefix = 'EventSource constructor'\n    webidl.argumentLengthCheck(arguments, 1, prefix)\n\n    if (!experimentalWarned) {\n      experimentalWarned = true\n      process.emitWarning('EventSource is experimental, expect them to change at any time.', {\n        code: 'UNDICI-ES'\n      })\n    }\n\n    url = webidl.converters.USVString(url, prefix, 'url')\n    eventSourceInitDict = webidl.converters.EventSourceInitDict(eventSourceInitDict, prefix, 'eventSourceInitDict')\n\n    this.#dispatcher = eventSourceInitDict.dispatcher\n    this.#state = {\n      lastEventId: '',\n      reconnectionTime: defaultReconnectionTime\n    }\n\n    // 2. Let settings be ev's relevant settings object.\n    // https://html.spec.whatwg.org/multipage/webappapis.html#environment-settings-object\n    const settings = environmentSettingsObject\n\n    let urlRecord\n\n    try {\n      // 3. Let urlRecord be the result of encoding-parsing a URL given url, relative to settings.\n      urlRecord = new URL(url, settings.settingsObject.baseUrl)\n      this.#state.origin = urlRecord.origin\n    } catch (e) {\n      // 4. If urlRecord is failure, then throw a \"SyntaxError\" DOMException.\n      throw new DOMException(e, 'SyntaxError')\n    }\n\n    // 5. Set ev's url to urlRecord.\n    this.#url = urlRecord.href\n\n    // 6. Let corsAttributeState be Anonymous.\n    let corsAttributeState = ANONYMOUS\n\n    // 7. If the value of eventSourceInitDict's withCredentials member is true,\n    // then set corsAttributeState to Use Credentials and set ev's\n    // withCredentials attribute to true.\n    if (eventSourceInitDict.withCredentials) {\n      corsAttributeState = USE_CREDENTIALS\n      this.#withCredentials = true\n    }\n\n    // 8. Let request be the result of creating a potential-CORS request given\n    // urlRecord, the empty string, and corsAttributeState.\n    const initRequest = {\n      redirect: 'follow',\n      keepalive: true,\n      // @see https://html.spec.whatwg.org/multipage/urls-and-fetching.html#cors-settings-attributes\n      mode: 'cors',\n      credentials: corsAttributeState === 'anonymous'\n        ? 'same-origin'\n        : 'omit',\n      referrer: 'no-referrer'\n    }\n\n    // 9. Set request's client to settings.\n    initRequest.client = environmentSettingsObject.settingsObject\n\n    // 10. User agents may set (`Accept`, `text/event-stream`) in request's header list.\n    initRequest.headersList = [['accept', { name: 'accept', value: 'text/event-stream' }]]\n\n    // 11. Set request's cache mode to \"no-store\".\n    initRequest.cache = 'no-store'\n\n    // 12. Set request's initiator type to \"other\".\n    initRequest.initiator = 'other'\n\n    initRequest.urlList = [new URL(this.#url)]\n\n    // 13. Set ev's request to request.\n    this.#request = makeRequest(initRequest)\n\n    this.#connect()\n  }\n\n  /**\n   * Returns the state of this EventSource object's connection. It can have the\n   * values described below.\n   * @returns {0|1|2}\n   * @readonly\n   */\n  get readyState () {\n    return this.#readyState\n  }\n\n  /**\n   * Returns the URL providing the event stream.\n   * @readonly\n   * @returns {string}\n   */\n  get url () {\n    return this.#url\n  }\n\n  /**\n   * Returns a boolean indicating whether the EventSource object was\n   * instantiated with CORS credentials set (true), or not (false, the default).\n   */\n  get withCredentials () {\n    return this.#withCredentials\n  }\n\n  #connect () {\n    if (this.#readyState === CLOSED) return\n\n    this.#readyState = CONNECTING\n\n    const fetchParams = {\n      request: this.#request,\n      dispatcher: this.#dispatcher\n    }\n\n    // 14. Let processEventSourceEndOfBody given response res be the following step: if res is not a network error, then reestablish the connection.\n    const processEventSourceEndOfBody = (response) => {\n      if (isNetworkError(response)) {\n        this.dispatchEvent(new Event('error'))\n        this.close()\n      }\n\n      this.#reconnect()\n    }\n\n    // 15. Fetch request, with processResponseEndOfBody set to processEventSourceEndOfBody...\n    fetchParams.processResponseEndOfBody = processEventSourceEndOfBody\n\n    // and processResponse set to the following steps given response res:\n    fetchParams.processResponse = (response) => {\n      // 1. If res is an aborted network error, then fail the connection.\n\n      if (isNetworkError(response)) {\n        // 1. When a user agent is to fail the connection, the user agent\n        // must queue a task which, if the readyState attribute is set to a\n        // value other than CLOSED, sets the readyState attribute to CLOSED\n        // and fires an event named error at the EventSource object. Once the\n        // user agent has failed the connection, it does not attempt to\n        // reconnect.\n        if (response.aborted) {\n          this.close()\n          this.dispatchEvent(new Event('error'))\n          return\n          // 2. Otherwise, if res is a network error, then reestablish the\n          // connection, unless the user agent knows that to be futile, in\n          // which case the user agent may fail the connection.\n        } else {\n          this.#reconnect()\n          return\n        }\n      }\n\n      // 3. Otherwise, if res's status is not 200, or if res's `Content-Type`\n      // is not `text/event-stream`, then fail the connection.\n      const contentType = response.headersList.get('content-type', true)\n      const mimeType = contentType !== null ? parseMIMEType(contentType) : 'failure'\n      const contentTypeValid = mimeType !== 'failure' && mimeType.essence === 'text/event-stream'\n      if (\n        response.status !== 200 ||\n        contentTypeValid === false\n      ) {\n        this.close()\n        this.dispatchEvent(new Event('error'))\n        return\n      }\n\n      // 4. Otherwise, announce the connection and interpret res's body\n      // line by line.\n\n      // When a user agent is to announce the connection, the user agent\n      // must queue a task which, if the readyState attribute is set to a\n      // value other than CLOSED, sets the readyState attribute to OPEN\n      // and fires an event named open at the EventSource object.\n      // @see https://html.spec.whatwg.org/multipage/server-sent-events.html#sse-processing-model\n      this.#readyState = OPEN\n      this.dispatchEvent(new Event('open'))\n\n      // If redirected to a different origin, set the origin to the new origin.\n      this.#state.origin = response.urlList[response.urlList.length - 1].origin\n\n      const eventSourceStream = new EventSourceStream({\n        eventSourceSettings: this.#state,\n        push: (event) => {\n          this.dispatchEvent(createFastMessageEvent(\n            event.type,\n            event.options\n          ))\n        }\n      })\n\n      pipeline(response.body.stream,\n        eventSourceStream,\n        (error) => {\n          if (\n            error?.aborted === false\n          ) {\n            this.close()\n            this.dispatchEvent(new Event('error'))\n          }\n        })\n    }\n\n    this.#controller = fetching(fetchParams)\n  }\n\n  /**\n   * @see https://html.spec.whatwg.org/multipage/server-sent-events.html#sse-processing-model\n   * @returns {Promise<void>}\n   */\n  async #reconnect () {\n    // When a user agent is to reestablish the connection, the user agent must\n    // run the following steps. These steps are run in parallel, not as part of\n    // a task. (The tasks that it queues, of course, are run like normal tasks\n    // and not themselves in parallel.)\n\n    // 1. Queue a task to run the following steps:\n\n    //   1. If the readyState attribute is set to CLOSED, abort the task.\n    if (this.#readyState === CLOSED) return\n\n    //   2. Set the readyState attribute to CONNECTING.\n    this.#readyState = CONNECTING\n\n    //   3. Fire an event named error at the EventSource object.\n    this.dispatchEvent(new Event('error'))\n\n    // 2. Wait a delay equal to the reconnection time of the event source.\n    await delay(this.#state.reconnectionTime)\n\n    // 5. Queue a task to run the following steps:\n\n    //   1. If the EventSource object's readyState attribute is not set to\n    //      CONNECTING, then return.\n    if (this.#readyState !== CONNECTING) return\n\n    //   2. Let request be the EventSource object's request.\n    //   3. If the EventSource object's last event ID string is not the empty\n    //      string, then:\n    //      1. Let lastEventIDValue be the EventSource object's last event ID\n    //         string, encoded as UTF-8.\n    //      2. Set (`Last-Event-ID`, lastEventIDValue) in request's header\n    //         list.\n    if (this.#state.lastEventId.length) {\n      this.#request.headersList.set('last-event-id', this.#state.lastEventId, true)\n    }\n\n    //   4. Fetch request and process the response obtained in this fashion, if any, as described earlier in this section.\n    this.#connect()\n  }\n\n  /**\n   * Closes the connection, if any, and sets the readyState attribute to\n   * CLOSED.\n   */\n  close () {\n    webidl.brandCheck(this, EventSource)\n\n    if (this.#readyState === CLOSED) return\n    this.#readyState = CLOSED\n    this.#controller.abort()\n    this.#request = null\n  }\n\n  get onopen () {\n    return this.#events.open\n  }\n\n  set onopen (fn) {\n    if (this.#events.open) {\n      this.removeEventListener('open', this.#events.open)\n    }\n\n    if (typeof fn === 'function') {\n      this.#events.open = fn\n      this.addEventListener('open', fn)\n    } else {\n      this.#events.open = null\n    }\n  }\n\n  get onmessage () {\n    return this.#events.message\n  }\n\n  set onmessage (fn) {\n    if (this.#events.message) {\n      this.removeEventListener('message', this.#events.message)\n    }\n\n    if (typeof fn === 'function') {\n      this.#events.message = fn\n      this.addEventListener('message', fn)\n    } else {\n      this.#events.message = null\n    }\n  }\n\n  get onerror () {\n    return this.#events.error\n  }\n\n  set onerror (fn) {\n    if (this.#events.error) {\n      this.removeEventListener('error', this.#events.error)\n    }\n\n    if (typeof fn === 'function') {\n      this.#events.error = fn\n      this.addEventListener('error', fn)\n    } else {\n      this.#events.error = null\n    }\n  }\n}\n\nconst constantsPropertyDescriptors = {\n  CONNECTING: {\n    __proto__: null,\n    configurable: false,\n    enumerable: true,\n    value: CONNECTING,\n    writable: false\n  },\n  OPEN: {\n    __proto__: null,\n    configurable: false,\n    enumerable: true,\n    value: OPEN,\n    writable: false\n  },\n  CLOSED: {\n    __proto__: null,\n    configurable: false,\n    enumerable: true,\n    value: CLOSED,\n    writable: false\n  }\n}\n\nObject.defineProperties(EventSource, constantsPropertyDescriptors)\nObject.defineProperties(EventSource.prototype, constantsPropertyDescriptors)\n\nObject.defineProperties(EventSource.prototype, {\n  close: kEnumerableProperty,\n  onerror: kEnumerableProperty,\n  onmessage: kEnumerableProperty,\n  onopen: kEnumerableProperty,\n  readyState: kEnumerableProperty,\n  url: kEnumerableProperty,\n  withCredentials: kEnumerableProperty\n})\n\nwebidl.converters.EventSourceInitDict = webidl.dictionaryConverter([\n  {\n    key: 'withCredentials',\n    converter: webidl.converters.boolean,\n    defaultValue: () => false\n  },\n  {\n    key: 'dispatcher', // undici only\n    converter: webidl.converters.any\n  }\n])\n\nmodule.exports = {\n  EventSource,\n  defaultReconnectionTime\n}\n", "'use strict'\n\nconst Client = require('./lib/dispatcher/client')\nconst Dispatcher = require('./lib/dispatcher/dispatcher')\nconst Pool = require('./lib/dispatcher/pool')\nconst BalancedPool = require('./lib/dispatcher/balanced-pool')\nconst Agent = require('./lib/dispatcher/agent')\nconst ProxyAgent = require('./lib/dispatcher/proxy-agent')\nconst EnvHttpProxyAgent = require('./lib/dispatcher/env-http-proxy-agent')\nconst RetryAgent = require('./lib/dispatcher/retry-agent')\nconst errors = require('./lib/core/errors')\nconst util = require('./lib/core/util')\nconst { InvalidArgumentError } = errors\nconst api = require('./lib/api')\nconst buildConnector = require('./lib/core/connect')\nconst MockClient = require('./lib/mock/mock-client')\nconst MockAgent = require('./lib/mock/mock-agent')\nconst MockPool = require('./lib/mock/mock-pool')\nconst mockErrors = require('./lib/mock/mock-errors')\nconst RetryHandler = require('./lib/handler/retry-handler')\nconst { getGlobalDispatcher, setGlobalDispatcher } = require('./lib/global')\nconst DecoratorHandler = require('./lib/handler/decorator-handler')\nconst RedirectHandler = require('./lib/handler/redirect-handler')\nconst createRedirectInterceptor = require('./lib/interceptor/redirect-interceptor')\n\nObject.assign(Dispatcher.prototype, api)\n\nmodule.exports.Dispatcher = Dispatcher\nmodule.exports.Client = Client\nmodule.exports.Pool = Pool\nmodule.exports.BalancedPool = BalancedPool\nmodule.exports.Agent = Agent\nmodule.exports.ProxyAgent = ProxyAgent\nmodule.exports.EnvHttpProxyAgent = EnvHttpProxyAgent\nmodule.exports.RetryAgent = RetryAgent\nmodule.exports.RetryHandler = RetryHandler\n\nmodule.exports.DecoratorHandler = DecoratorHandler\nmodule.exports.RedirectHandler = RedirectHandler\nmodule.exports.createRedirectInterceptor = createRedirectInterceptor\nmodule.exports.interceptors = {\n  redirect: require('./lib/interceptor/redirect'),\n  retry: require('./lib/interceptor/retry'),\n  dump: require('./lib/interceptor/dump'),\n  dns: require('./lib/interceptor/dns')\n}\n\nmodule.exports.buildConnector = buildConnector\nmodule.exports.errors = errors\nmodule.exports.util = {\n  parseHeaders: util.parseHeaders,\n  headerNameToString: util.headerNameToString\n}\n\nfunction makeDispatcher (fn) {\n  return (url, opts, handler) => {\n    if (typeof opts === 'function') {\n      handler = opts\n      opts = null\n    }\n\n    if (!url || (typeof url !== 'string' && typeof url !== 'object' && !(url instanceof URL))) {\n      throw new InvalidArgumentError('invalid url')\n    }\n\n    if (opts != null && typeof opts !== 'object') {\n      throw new InvalidArgumentError('invalid opts')\n    }\n\n    if (opts && opts.path != null) {\n      if (typeof opts.path !== 'string') {\n        throw new InvalidArgumentError('invalid opts.path')\n      }\n\n      let path = opts.path\n      if (!opts.path.startsWith('/')) {\n        path = `/${path}`\n      }\n\n      url = new URL(util.parseOrigin(url).origin + path)\n    } else {\n      if (!opts) {\n        opts = typeof url === 'object' ? url : {}\n      }\n\n      url = util.parseURL(url)\n    }\n\n    const { agent, dispatcher = getGlobalDispatcher() } = opts\n\n    if (agent) {\n      throw new InvalidArgumentError('unsupported opts.agent. Did you mean opts.client?')\n    }\n\n    return fn.call(dispatcher, {\n      ...opts,\n      origin: url.origin,\n      path: url.search ? `${url.pathname}${url.search}` : url.pathname,\n      method: opts.method || (opts.body ? 'PUT' : 'GET')\n    }, handler)\n  }\n}\n\nmodule.exports.setGlobalDispatcher = setGlobalDispatcher\nmodule.exports.getGlobalDispatcher = getGlobalDispatcher\n\nconst fetchImpl = require('./lib/web/fetch').fetch\nmodule.exports.fetch = async function fetch (init, options = undefined) {\n  try {\n    return await fetchImpl(init, options)\n  } catch (err) {\n    if (err && typeof err === 'object') {\n      Error.captureStackTrace(err)\n    }\n\n    throw err\n  }\n}\nmodule.exports.Headers = require('./lib/web/fetch/headers').Headers\nmodule.exports.Response = require('./lib/web/fetch/response').Response\nmodule.exports.Request = require('./lib/web/fetch/request').Request\nmodule.exports.FormData = require('./lib/web/fetch/formdata').FormData\nmodule.exports.File = globalThis.File ?? require('node:buffer').File\nmodule.exports.FileReader = require('./lib/web/fileapi/filereader').FileReader\n\nconst { setGlobalOrigin, getGlobalOrigin } = require('./lib/web/fetch/global')\n\nmodule.exports.setGlobalOrigin = setGlobalOrigin\nmodule.exports.getGlobalOrigin = getGlobalOrigin\n\nconst { CacheStorage } = require('./lib/web/cache/cachestorage')\nconst { kConstruct } = require('./lib/web/cache/symbols')\n\n// Cache & CacheStorage are tightly coupled with fetch. Even if it may run\n// in an older version of Node, it doesn't have any use without fetch.\nmodule.exports.caches = new CacheStorage(kConstruct)\n\nconst { deleteCookie, getCookies, getSetCookies, setCookie } = require('./lib/web/cookies')\n\nmodule.exports.deleteCookie = deleteCookie\nmodule.exports.getCookies = getCookies\nmodule.exports.getSetCookies = getSetCookies\nmodule.exports.setCookie = setCookie\n\nconst { parseMIMEType, serializeAMimeType } = require('./lib/web/fetch/data-url')\n\nmodule.exports.parseMIMEType = parseMIMEType\nmodule.exports.serializeAMimeType = serializeAMimeType\n\nconst { CloseEvent, ErrorEvent, MessageEvent } = require('./lib/web/websocket/events')\nmodule.exports.WebSocket = require('./lib/web/websocket/websocket').WebSocket\nmodule.exports.CloseEvent = CloseEvent\nmodule.exports.ErrorEvent = ErrorEvent\nmodule.exports.MessageEvent = MessageEvent\n\nmodule.exports.request = makeDispatcher(api.request)\nmodule.exports.stream = makeDispatcher(api.stream)\nmodule.exports.pipeline = makeDispatcher(api.pipeline)\nmodule.exports.connect = makeDispatcher(api.connect)\nmodule.exports.upgrade = makeDispatcher(api.upgrade)\n\nmodule.exports.MockClient = MockClient\nmodule.exports.MockPool = MockPool\nmodule.exports.MockAgent = MockAgent\nmodule.exports.mockErrors = mockErrors\n\nconst { EventSource } = require('./lib/web/eventsource/eventsource')\n\nmodule.exports.EventSource = EventSource\n", null, null, null, null, null, null, null, "/*\n * Copyright Elasticsearch B.V. and contributors\n * SPDX-License-Identifier: Apache-2.0\n */\n\n'use strict'\n\nconst { default: Diagnostic, events } = require('./lib/Diagnostic')\nconst Transport = require('./lib/Transport').default\nconst {\n  BaseConnection,\n  HttpConnection,\n  UndiciConnection\n} = require('./lib/connection')\nconst {\n  BaseConnectionPool,\n  ClusterConnectionPool,\n  CloudConnectionPool,\n  WeightedConnectionPool\n} = require('./lib/pool')\nconst Serializer = require('./lib/Serializer').default\nconst errors = require('./lib/errors')\n\nmodule.exports = {\n  Diagnostic,\n  Transport,\n  BaseConnection,\n  HttpConnection,\n  UndiciConnection,\n  BaseConnectionPool,\n  ClusterConnectionPool,\n  CloudConnectionPool,\n  WeightedConnectionPool,\n  Serializer,\n  errors,\n  events\n}\n", null, null, null, null, null, null, null, null, null, null, null, "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SIZE_PREFIX_LENGTH = exports.FILE_IDENTIFIER_LENGTH = exports.SIZEOF_INT = exports.SIZEOF_SHORT = void 0;\nexports.SIZEOF_SHORT = 2;\nexports.SIZEOF_INT = 4;\nexports.FILE_IDENTIFIER_LENGTH = 4;\nexports.SIZE_PREFIX_LENGTH = 4;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isLittleEndian = exports.float64 = exports.float32 = exports.int32 = void 0;\nexports.int32 = new Int32Array(2);\nexports.float32 = new Float32Array(exports.int32.buffer);\nexports.float64 = new Float64Array(exports.int32.buffer);\nexports.isLittleEndian = new Uint16Array(new Uint8Array([1, 0]).buffer)[0] === 1;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Encoding = void 0;\nvar Encoding;\n(function (Encoding) {\n    Encoding[Encoding[\"UTF8_BYTES\"] = 1] = \"UTF8_BYTES\";\n    Encoding[Encoding[\"UTF16_STRING\"] = 2] = \"UTF16_STRING\";\n})(Encoding || (exports.Encoding = Encoding = {}));\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ByteBuffer = void 0;\nconst constants_js_1 = require(\"./constants.js\");\nconst encoding_js_1 = require(\"./encoding.js\");\nconst utils_js_1 = require(\"./utils.js\");\nclass ByteBuffer {\n    /**\n     * Create a new ByteBuffer with a given array of bytes (`Uint8Array`)\n     */\n    constructor(bytes_) {\n        this.bytes_ = bytes_;\n        this.position_ = 0;\n        this.text_decoder_ = new TextDecoder();\n    }\n    /**\n     * Create and allocate a new ByteBuffer with a given size.\n     */\n    static allocate(byte_size) {\n        return new ByteBuffer(new Uint8Array(byte_size));\n    }\n    clear() {\n        this.position_ = 0;\n    }\n    /**\n     * Get the underlying `Uint8Array`.\n     */\n    bytes() {\n        return this.bytes_;\n    }\n    /**\n     * Get the buffer's position.\n     */\n    position() {\n        return this.position_;\n    }\n    /**\n     * Set the buffer's position.\n     */\n    setPosition(position) {\n        this.position_ = position;\n    }\n    /**\n     * Get the buffer's capacity.\n     */\n    capacity() {\n        return this.bytes_.length;\n    }\n    readInt8(offset) {\n        return (this.readUint8(offset) << 24) >> 24;\n    }\n    readUint8(offset) {\n        return this.bytes_[offset];\n    }\n    readInt16(offset) {\n        return (this.readUint16(offset) << 16) >> 16;\n    }\n    readUint16(offset) {\n        return this.bytes_[offset] | (this.bytes_[offset + 1] << 8);\n    }\n    readInt32(offset) {\n        return (this.bytes_[offset] |\n            (this.bytes_[offset + 1] << 8) |\n            (this.bytes_[offset + 2] << 16) |\n            (this.bytes_[offset + 3] << 24));\n    }\n    readUint32(offset) {\n        return this.readInt32(offset) >>> 0;\n    }\n    readInt64(offset) {\n        return BigInt.asIntN(64, BigInt(this.readUint32(offset)) +\n            (BigInt(this.readUint32(offset + 4)) << BigInt(32)));\n    }\n    readUint64(offset) {\n        return BigInt.asUintN(64, BigInt(this.readUint32(offset)) +\n            (BigInt(this.readUint32(offset + 4)) << BigInt(32)));\n    }\n    readFloat32(offset) {\n        utils_js_1.int32[0] = this.readInt32(offset);\n        return utils_js_1.float32[0];\n    }\n    readFloat64(offset) {\n        utils_js_1.int32[utils_js_1.isLittleEndian ? 0 : 1] = this.readInt32(offset);\n        utils_js_1.int32[utils_js_1.isLittleEndian ? 1 : 0] = this.readInt32(offset + 4);\n        return utils_js_1.float64[0];\n    }\n    writeInt8(offset, value) {\n        this.bytes_[offset] = value;\n    }\n    writeUint8(offset, value) {\n        this.bytes_[offset] = value;\n    }\n    writeInt16(offset, value) {\n        this.bytes_[offset] = value;\n        this.bytes_[offset + 1] = value >> 8;\n    }\n    writeUint16(offset, value) {\n        this.bytes_[offset] = value;\n        this.bytes_[offset + 1] = value >> 8;\n    }\n    writeInt32(offset, value) {\n        this.bytes_[offset] = value;\n        this.bytes_[offset + 1] = value >> 8;\n        this.bytes_[offset + 2] = value >> 16;\n        this.bytes_[offset + 3] = value >> 24;\n    }\n    writeUint32(offset, value) {\n        this.bytes_[offset] = value;\n        this.bytes_[offset + 1] = value >> 8;\n        this.bytes_[offset + 2] = value >> 16;\n        this.bytes_[offset + 3] = value >> 24;\n    }\n    writeInt64(offset, value) {\n        this.writeInt32(offset, Number(BigInt.asIntN(32, value)));\n        this.writeInt32(offset + 4, Number(BigInt.asIntN(32, value >> BigInt(32))));\n    }\n    writeUint64(offset, value) {\n        this.writeUint32(offset, Number(BigInt.asUintN(32, value)));\n        this.writeUint32(offset + 4, Number(BigInt.asUintN(32, value >> BigInt(32))));\n    }\n    writeFloat32(offset, value) {\n        utils_js_1.float32[0] = value;\n        this.writeInt32(offset, utils_js_1.int32[0]);\n    }\n    writeFloat64(offset, value) {\n        utils_js_1.float64[0] = value;\n        this.writeInt32(offset, utils_js_1.int32[utils_js_1.isLittleEndian ? 0 : 1]);\n        this.writeInt32(offset + 4, utils_js_1.int32[utils_js_1.isLittleEndian ? 1 : 0]);\n    }\n    /**\n     * Return the file identifier.   Behavior is undefined for FlatBuffers whose\n     * schema does not include a file_identifier (likely points at padding or the\n     * start of a the root vtable).\n     */\n    getBufferIdentifier() {\n        if (this.bytes_.length <\n            this.position_ + constants_js_1.SIZEOF_INT + constants_js_1.FILE_IDENTIFIER_LENGTH) {\n            throw new Error('FlatBuffers: ByteBuffer is too short to contain an identifier.');\n        }\n        let result = '';\n        for (let i = 0; i < constants_js_1.FILE_IDENTIFIER_LENGTH; i++) {\n            result += String.fromCharCode(this.readInt8(this.position_ + constants_js_1.SIZEOF_INT + i));\n        }\n        return result;\n    }\n    /**\n     * Look up a field in the vtable, return an offset into the object, or 0 if the\n     * field is not present.\n     */\n    __offset(bb_pos, vtable_offset) {\n        const vtable = bb_pos - this.readInt32(bb_pos);\n        return vtable_offset < this.readInt16(vtable)\n            ? this.readInt16(vtable + vtable_offset)\n            : 0;\n    }\n    /**\n     * Initialize any Table-derived type to point to the union at the given offset.\n     */\n    __union(t, offset) {\n        t.bb_pos = offset + this.readInt32(offset);\n        t.bb = this;\n        return t;\n    }\n    /**\n     * Create a JavaScript string from UTF-8 data stored inside the FlatBuffer.\n     * This allocates a new string and converts to wide chars upon each access.\n     *\n     * To avoid the conversion to string, pass Encoding.UTF8_BYTES as the\n     * \"optionalEncoding\" argument. This is useful for avoiding conversion when\n     * the data will just be packaged back up in another FlatBuffer later on.\n     *\n     * @param offset\n     * @param opt_encoding Defaults to UTF16_STRING\n     */\n    __string(offset, opt_encoding) {\n        offset += this.readInt32(offset);\n        const length = this.readInt32(offset);\n        offset += constants_js_1.SIZEOF_INT;\n        const utf8bytes = this.bytes_.subarray(offset, offset + length);\n        if (opt_encoding === encoding_js_1.Encoding.UTF8_BYTES)\n            return utf8bytes;\n        else\n            return this.text_decoder_.decode(utf8bytes);\n    }\n    /**\n     * Handle unions that can contain string as its member, if a Table-derived type then initialize it,\n     * if a string then return a new one\n     *\n     * WARNING: strings are immutable in JS so we can't change the string that the user gave us, this\n     * makes the behaviour of __union_with_string different compared to __union\n     */\n    __union_with_string(o, offset) {\n        if (typeof o === 'string') {\n            return this.__string(offset);\n        }\n        return this.__union(o, offset);\n    }\n    /**\n     * Retrieve the relative offset stored at \"offset\"\n     */\n    __indirect(offset) {\n        return offset + this.readInt32(offset);\n    }\n    /**\n     * Get the start of data of a vector whose offset is stored at \"offset\" in this object.\n     */\n    __vector(offset) {\n        return offset + this.readInt32(offset) + constants_js_1.SIZEOF_INT; // data starts after the length\n    }\n    /**\n     * Get the length of a vector whose offset is stored at \"offset\" in this object.\n     */\n    __vector_len(offset) {\n        return this.readInt32(offset + this.readInt32(offset));\n    }\n    __has_identifier(ident) {\n        if (ident.length != constants_js_1.FILE_IDENTIFIER_LENGTH) {\n            throw new Error('FlatBuffers: file identifier must be length ' + constants_js_1.FILE_IDENTIFIER_LENGTH);\n        }\n        for (let i = 0; i < constants_js_1.FILE_IDENTIFIER_LENGTH; i++) {\n            if (ident.charCodeAt(i) != this.readInt8(this.position() + constants_js_1.SIZEOF_INT + i)) {\n                return false;\n            }\n        }\n        return true;\n    }\n    /**\n     * A helper function for generating list for obj api\n     */\n    createScalarList(listAccessor, listLength) {\n        const ret = [];\n        for (let i = 0; i < listLength; ++i) {\n            const val = listAccessor(i);\n            if (val !== null) {\n                ret.push(val);\n            }\n        }\n        return ret;\n    }\n    /**\n     * A helper function for generating list for obj api\n     * @param listAccessor function that accepts an index and return data at that index\n     * @param listLength listLength\n     * @param res result list\n     */\n    createObjList(listAccessor, listLength) {\n        const ret = [];\n        for (let i = 0; i < listLength; ++i) {\n            const val = listAccessor(i);\n            if (val !== null) {\n                ret.push(val.unpack());\n            }\n        }\n        return ret;\n    }\n}\nexports.ByteBuffer = ByteBuffer;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Builder = void 0;\nconst byte_buffer_js_1 = require(\"./byte-buffer.js\");\nconst constants_js_1 = require(\"./constants.js\");\nclass Builder {\n    /**\n     * Create a FlatBufferBuilder.\n     */\n    constructor(opt_initial_size) {\n        /** Minimum alignment encountered so far. */\n        this.minalign = 1;\n        /** The vtable for the current table. */\n        this.vtable = null;\n        /** The amount of fields we're actually using. */\n        this.vtable_in_use = 0;\n        /** Whether we are currently serializing a table. */\n        this.isNested = false;\n        /** Starting offset of the current struct/table. */\n        this.object_start = 0;\n        /** List of offsets of all vtables. */\n        this.vtables = [];\n        /** For the current vector being built. */\n        this.vector_num_elems = 0;\n        /** False omits default values from the serialized data */\n        this.force_defaults = false;\n        this.string_maps = null;\n        this.text_encoder = new TextEncoder();\n        let initial_size;\n        if (!opt_initial_size) {\n            initial_size = 1024;\n        }\n        else {\n            initial_size = opt_initial_size;\n        }\n        /**\n         * @type {ByteBuffer}\n         * @private\n         */\n        this.bb = byte_buffer_js_1.ByteBuffer.allocate(initial_size);\n        this.space = initial_size;\n    }\n    clear() {\n        this.bb.clear();\n        this.space = this.bb.capacity();\n        this.minalign = 1;\n        this.vtable = null;\n        this.vtable_in_use = 0;\n        this.isNested = false;\n        this.object_start = 0;\n        this.vtables = [];\n        this.vector_num_elems = 0;\n        this.force_defaults = false;\n        this.string_maps = null;\n    }\n    /**\n     * In order to save space, fields that are set to their default value\n     * don't get serialized into the buffer. Forcing defaults provides a\n     * way to manually disable this optimization.\n     *\n     * @param forceDefaults true always serializes default values\n     */\n    forceDefaults(forceDefaults) {\n        this.force_defaults = forceDefaults;\n    }\n    /**\n     * Get the ByteBuffer representing the FlatBuffer. Only call this after you've\n     * called finish(). The actual data starts at the ByteBuffer's current position,\n     * not necessarily at 0.\n     */\n    dataBuffer() {\n        return this.bb;\n    }\n    /**\n     * Get the bytes representing the FlatBuffer. Only call this after you've\n     * called finish().\n     */\n    asUint8Array() {\n        return this.bb\n            .bytes()\n            .subarray(this.bb.position(), this.bb.position() + this.offset());\n    }\n    /**\n     * Prepare to write an element of `size` after `additional_bytes` have been\n     * written, e.g. if you write a string, you need to align such the int length\n     * field is aligned to 4 bytes, and the string data follows it directly. If all\n     * you need to do is alignment, `additional_bytes` will be 0.\n     *\n     * @param size This is the of the new element to write\n     * @param additional_bytes The padding size\n     */\n    prep(size, additional_bytes) {\n        // Track the biggest thing we've ever aligned to.\n        if (size > this.minalign) {\n            this.minalign = size;\n        }\n        // Find the amount of alignment needed such that `size` is properly\n        // aligned after `additional_bytes`\n        const align_size = (~(this.bb.capacity() - this.space + additional_bytes) + 1) & (size - 1);\n        // Reallocate the buffer if needed.\n        while (this.space < align_size + size + additional_bytes) {\n            const old_buf_size = this.bb.capacity();\n            this.bb = Builder.growByteBuffer(this.bb);\n            this.space += this.bb.capacity() - old_buf_size;\n        }\n        this.pad(align_size);\n    }\n    pad(byte_size) {\n        for (let i = 0; i < byte_size; i++) {\n            this.bb.writeInt8(--this.space, 0);\n        }\n    }\n    writeInt8(value) {\n        this.bb.writeInt8((this.space -= 1), value);\n    }\n    writeInt16(value) {\n        this.bb.writeInt16((this.space -= 2), value);\n    }\n    writeInt32(value) {\n        this.bb.writeInt32((this.space -= 4), value);\n    }\n    writeInt64(value) {\n        this.bb.writeInt64((this.space -= 8), value);\n    }\n    writeFloat32(value) {\n        this.bb.writeFloat32((this.space -= 4), value);\n    }\n    writeFloat64(value) {\n        this.bb.writeFloat64((this.space -= 8), value);\n    }\n    /**\n     * Add an `int8` to the buffer, properly aligned, and grows the buffer (if necessary).\n     * @param value The `int8` to add the buffer.\n     */\n    addInt8(value) {\n        this.prep(1, 0);\n        this.writeInt8(value);\n    }\n    /**\n     * Add an `int16` to the buffer, properly aligned, and grows the buffer (if necessary).\n     * @param value The `int16` to add the buffer.\n     */\n    addInt16(value) {\n        this.prep(2, 0);\n        this.writeInt16(value);\n    }\n    /**\n     * Add an `int32` to the buffer, properly aligned, and grows the buffer (if necessary).\n     * @param value The `int32` to add the buffer.\n     */\n    addInt32(value) {\n        this.prep(4, 0);\n        this.writeInt32(value);\n    }\n    /**\n     * Add an `int64` to the buffer, properly aligned, and grows the buffer (if necessary).\n     * @param value The `int64` to add the buffer.\n     */\n    addInt64(value) {\n        this.prep(8, 0);\n        this.writeInt64(value);\n    }\n    /**\n     * Add a `float32` to the buffer, properly aligned, and grows the buffer (if necessary).\n     * @param value The `float32` to add the buffer.\n     */\n    addFloat32(value) {\n        this.prep(4, 0);\n        this.writeFloat32(value);\n    }\n    /**\n     * Add a `float64` to the buffer, properly aligned, and grows the buffer (if necessary).\n     * @param value The `float64` to add the buffer.\n     */\n    addFloat64(value) {\n        this.prep(8, 0);\n        this.writeFloat64(value);\n    }\n    addFieldInt8(voffset, value, defaultValue) {\n        if (this.force_defaults || value != defaultValue) {\n            this.addInt8(value);\n            this.slot(voffset);\n        }\n    }\n    addFieldInt16(voffset, value, defaultValue) {\n        if (this.force_defaults || value != defaultValue) {\n            this.addInt16(value);\n            this.slot(voffset);\n        }\n    }\n    addFieldInt32(voffset, value, defaultValue) {\n        if (this.force_defaults || value != defaultValue) {\n            this.addInt32(value);\n            this.slot(voffset);\n        }\n    }\n    addFieldInt64(voffset, value, defaultValue) {\n        if (this.force_defaults || value !== defaultValue) {\n            this.addInt64(value);\n            this.slot(voffset);\n        }\n    }\n    addFieldFloat32(voffset, value, defaultValue) {\n        if (this.force_defaults || value != defaultValue) {\n            this.addFloat32(value);\n            this.slot(voffset);\n        }\n    }\n    addFieldFloat64(voffset, value, defaultValue) {\n        if (this.force_defaults || value != defaultValue) {\n            this.addFloat64(value);\n            this.slot(voffset);\n        }\n    }\n    addFieldOffset(voffset, value, defaultValue) {\n        if (this.force_defaults || value != defaultValue) {\n            this.addOffset(value);\n            this.slot(voffset);\n        }\n    }\n    /**\n     * Structs are stored inline, so nothing additional is being added. `d` is always 0.\n     */\n    addFieldStruct(voffset, value, defaultValue) {\n        if (value != defaultValue) {\n            this.nested(value);\n            this.slot(voffset);\n        }\n    }\n    /**\n     * Structures are always stored inline, they need to be created right\n     * where they're used.  You'll get this assertion failure if you\n     * created it elsewhere.\n     */\n    nested(obj) {\n        if (obj != this.offset()) {\n            throw new TypeError('FlatBuffers: struct must be serialized inline.');\n        }\n    }\n    /**\n     * Should not be creating any other object, string or vector\n     * while an object is being constructed\n     */\n    notNested() {\n        if (this.isNested) {\n            throw new TypeError('FlatBuffers: object serialization must not be nested.');\n        }\n    }\n    /**\n     * Set the current vtable at `voffset` to the current location in the buffer.\n     */\n    slot(voffset) {\n        if (this.vtable !== null)\n            this.vtable[voffset] = this.offset();\n    }\n    /**\n     * @returns Offset relative to the end of the buffer.\n     */\n    offset() {\n        return this.bb.capacity() - this.space;\n    }\n    /**\n     * Doubles the size of the backing ByteBuffer and copies the old data towards\n     * the end of the new buffer (since we build the buffer backwards).\n     *\n     * @param bb The current buffer with the existing data\n     * @returns A new byte buffer with the old data copied\n     * to it. The data is located at the end of the buffer.\n     *\n     * uint8Array.set() formally takes {Array<number>|ArrayBufferView}, so to pass\n     * it a uint8Array we need to suppress the type check:\n     * @suppress {checkTypes}\n     */\n    static growByteBuffer(bb) {\n        const old_buf_size = bb.capacity();\n        // Ensure we don't grow beyond what fits in an int.\n        if (old_buf_size & 0xc0000000) {\n            throw new Error('FlatBuffers: cannot grow buffer beyond 2 gigabytes.');\n        }\n        const new_buf_size = old_buf_size << 1;\n        const nbb = byte_buffer_js_1.ByteBuffer.allocate(new_buf_size);\n        nbb.setPosition(new_buf_size - old_buf_size);\n        nbb.bytes().set(bb.bytes(), new_buf_size - old_buf_size);\n        return nbb;\n    }\n    /**\n     * Adds on offset, relative to where it will be written.\n     *\n     * @param offset The offset to add.\n     */\n    addOffset(offset) {\n        this.prep(constants_js_1.SIZEOF_INT, 0); // Ensure alignment is already done.\n        this.writeInt32(this.offset() - offset + constants_js_1.SIZEOF_INT);\n    }\n    /**\n     * Start encoding a new object in the buffer.  Users will not usually need to\n     * call this directly. The FlatBuffers compiler will generate helper methods\n     * that call this method internally.\n     */\n    startObject(numfields) {\n        this.notNested();\n        if (this.vtable == null) {\n            this.vtable = [];\n        }\n        this.vtable_in_use = numfields;\n        for (let i = 0; i < numfields; i++) {\n            this.vtable[i] = 0; // This will push additional elements as needed\n        }\n        this.isNested = true;\n        this.object_start = this.offset();\n    }\n    /**\n     * Finish off writing the object that is under construction.\n     *\n     * @returns The offset to the object inside `dataBuffer`\n     */\n    endObject() {\n        if (this.vtable == null || !this.isNested) {\n            throw new Error('FlatBuffers: endObject called without startObject');\n        }\n        this.addInt32(0);\n        const vtableloc = this.offset();\n        // Trim trailing zeroes.\n        let i = this.vtable_in_use - 1;\n        // eslint-disable-next-line no-empty\n        for (; i >= 0 && this.vtable[i] == 0; i--) { }\n        const trimmed_size = i + 1;\n        // Write out the current vtable.\n        for (; i >= 0; i--) {\n            // Offset relative to the start of the table.\n            this.addInt16(this.vtable[i] != 0 ? vtableloc - this.vtable[i] : 0);\n        }\n        const standard_fields = 2; // The fields below:\n        this.addInt16(vtableloc - this.object_start);\n        const len = (trimmed_size + standard_fields) * constants_js_1.SIZEOF_SHORT;\n        this.addInt16(len);\n        // Search for an existing vtable that matches the current one.\n        let existing_vtable = 0;\n        const vt1 = this.space;\n        outer_loop: for (i = 0; i < this.vtables.length; i++) {\n            const vt2 = this.bb.capacity() - this.vtables[i];\n            if (len == this.bb.readInt16(vt2)) {\n                for (let j = constants_js_1.SIZEOF_SHORT; j < len; j += constants_js_1.SIZEOF_SHORT) {\n                    if (this.bb.readInt16(vt1 + j) != this.bb.readInt16(vt2 + j)) {\n                        continue outer_loop;\n                    }\n                }\n                existing_vtable = this.vtables[i];\n                break;\n            }\n        }\n        if (existing_vtable) {\n            // Found a match:\n            // Remove the current vtable.\n            this.space = this.bb.capacity() - vtableloc;\n            // Point table to existing vtable.\n            this.bb.writeInt32(this.space, existing_vtable - vtableloc);\n        }\n        else {\n            // No match:\n            // Add the location of the current vtable to the list of vtables.\n            this.vtables.push(this.offset());\n            // Point table to current vtable.\n            this.bb.writeInt32(this.bb.capacity() - vtableloc, this.offset() - vtableloc);\n        }\n        this.isNested = false;\n        return vtableloc;\n    }\n    /**\n     * Finalize a buffer, poiting to the given `root_table`.\n     */\n    finish(root_table, opt_file_identifier, opt_size_prefix) {\n        const size_prefix = opt_size_prefix ? constants_js_1.SIZE_PREFIX_LENGTH : 0;\n        if (opt_file_identifier) {\n            const file_identifier = opt_file_identifier;\n            this.prep(this.minalign, constants_js_1.SIZEOF_INT + constants_js_1.FILE_IDENTIFIER_LENGTH + size_prefix);\n            if (file_identifier.length != constants_js_1.FILE_IDENTIFIER_LENGTH) {\n                throw new TypeError('FlatBuffers: file identifier must be length ' +\n                    constants_js_1.FILE_IDENTIFIER_LENGTH);\n            }\n            for (let i = constants_js_1.FILE_IDENTIFIER_LENGTH - 1; i >= 0; i--) {\n                this.writeInt8(file_identifier.charCodeAt(i));\n            }\n        }\n        this.prep(this.minalign, constants_js_1.SIZEOF_INT + size_prefix);\n        this.addOffset(root_table);\n        if (size_prefix) {\n            this.addInt32(this.bb.capacity() - this.space);\n        }\n        this.bb.setPosition(this.space);\n    }\n    /**\n     * Finalize a size prefixed buffer, pointing to the given `root_table`.\n     */\n    finishSizePrefixed(root_table, opt_file_identifier) {\n        this.finish(root_table, opt_file_identifier, true);\n    }\n    /**\n     * This checks a required field has been set in a given table that has\n     * just been constructed.\n     */\n    requiredField(table, field) {\n        const table_start = this.bb.capacity() - table;\n        const vtable_start = table_start - this.bb.readInt32(table_start);\n        const ok = field < this.bb.readInt16(vtable_start) &&\n            this.bb.readInt16(vtable_start + field) != 0;\n        // If this fails, the caller will show what field needs to be set.\n        if (!ok) {\n            throw new TypeError('FlatBuffers: field ' + field + ' must be set');\n        }\n    }\n    /**\n     * Start a new array/vector of objects.  Users usually will not call\n     * this directly. The FlatBuffers compiler will create a start/end\n     * method for vector types in generated code.\n     *\n     * @param elem_size The size of each element in the array\n     * @param num_elems The number of elements in the array\n     * @param alignment The alignment of the array\n     */\n    startVector(elem_size, num_elems, alignment) {\n        this.notNested();\n        this.vector_num_elems = num_elems;\n        this.prep(constants_js_1.SIZEOF_INT, elem_size * num_elems);\n        this.prep(alignment, elem_size * num_elems); // Just in case alignment > int.\n    }\n    /**\n     * Finish off the creation of an array and all its elements. The array must be\n     * created with `startVector`.\n     *\n     * @returns The offset at which the newly created array\n     * starts.\n     */\n    endVector() {\n        this.writeInt32(this.vector_num_elems);\n        return this.offset();\n    }\n    /**\n     * Encode the string `s` in the buffer using UTF-8. If the string passed has\n     * already been seen, we return the offset of the already written string\n     *\n     * @param s The string to encode\n     * @return The offset in the buffer where the encoded string starts\n     */\n    createSharedString(s) {\n        if (!s) {\n            return 0;\n        }\n        if (!this.string_maps) {\n            this.string_maps = new Map();\n        }\n        if (this.string_maps.has(s)) {\n            return this.string_maps.get(s);\n        }\n        const offset = this.createString(s);\n        this.string_maps.set(s, offset);\n        return offset;\n    }\n    /**\n     * Encode the string `s` in the buffer using UTF-8. If a Uint8Array is passed\n     * instead of a string, it is assumed to contain valid UTF-8 encoded data.\n     *\n     * @param s The string to encode\n     * @return The offset in the buffer where the encoded string starts\n     */\n    createString(s) {\n        if (s === null || s === undefined) {\n            return 0;\n        }\n        let utf8;\n        if (s instanceof Uint8Array) {\n            utf8 = s;\n        }\n        else {\n            utf8 = this.text_encoder.encode(s);\n        }\n        this.addInt8(0);\n        this.startVector(1, utf8.length, 1);\n        this.bb.setPosition((this.space -= utf8.length));\n        this.bb.bytes().set(utf8, this.space);\n        return this.endVector();\n    }\n    /**\n     * Create a byte vector.\n     *\n     * @param v The bytes to add\n     * @returns The offset in the buffer where the byte vector starts\n     */\n    createByteVector(v) {\n        if (v === null || v === undefined) {\n            return 0;\n        }\n        this.startVector(1, v.length, 1);\n        this.bb.setPosition((this.space -= v.length));\n        this.bb.bytes().set(v, this.space);\n        return this.endVector();\n    }\n    /**\n     * A helper function to pack an object\n     *\n     * @returns offset of obj\n     */\n    createObjectOffset(obj) {\n        if (obj === null) {\n            return 0;\n        }\n        if (typeof obj === 'string') {\n            return this.createString(obj);\n        }\n        else {\n            return obj.pack(this);\n        }\n    }\n    /**\n     * A helper function to pack a list of object\n     *\n     * @returns list of offsets of each non null object\n     */\n    createObjectOffsetList(list) {\n        const ret = [];\n        for (let i = 0; i < list.length; ++i) {\n            const val = list[i];\n            if (val !== null) {\n                ret.push(this.createObjectOffset(val));\n            }\n            else {\n                throw new TypeError('FlatBuffers: Argument for createObjectOffsetList cannot contain null.');\n            }\n        }\n        return ret;\n    }\n    createStructOffsetList(list, startFunc) {\n        startFunc(this, list.length);\n        this.createObjectOffsetList(list.slice().reverse());\n        return this.endVector();\n    }\n}\nexports.Builder = Builder;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Encoding = exports.ByteBuffer = exports.Builder = exports.isLittleEndian = exports.int32 = exports.float64 = exports.float32 = exports.SIZE_PREFIX_LENGTH = exports.SIZEOF_SHORT = exports.SIZEOF_INT = exports.FILE_IDENTIFIER_LENGTH = void 0;\nvar constants_js_1 = require(\"./constants.js\");\nObject.defineProperty(exports, \"FILE_IDENTIFIER_LENGTH\", { enumerable: true, get: function () { return constants_js_1.FILE_IDENTIFIER_LENGTH; } });\nObject.defineProperty(exports, \"SIZEOF_INT\", { enumerable: true, get: function () { return constants_js_1.SIZEOF_INT; } });\nObject.defineProperty(exports, \"SIZEOF_SHORT\", { enumerable: true, get: function () { return constants_js_1.SIZEOF_SHORT; } });\nObject.defineProperty(exports, \"SIZE_PREFIX_LENGTH\", { enumerable: true, get: function () { return constants_js_1.SIZE_PREFIX_LENGTH; } });\nvar utils_js_1 = require(\"./utils.js\");\nObject.defineProperty(exports, \"float32\", { enumerable: true, get: function () { return utils_js_1.float32; } });\nObject.defineProperty(exports, \"float64\", { enumerable: true, get: function () { return utils_js_1.float64; } });\nObject.defineProperty(exports, \"int32\", { enumerable: true, get: function () { return utils_js_1.int32; } });\nObject.defineProperty(exports, \"isLittleEndian\", { enumerable: true, get: function () { return utils_js_1.isLittleEndian; } });\nvar builder_js_1 = require(\"./builder.js\");\nObject.defineProperty(exports, \"Builder\", { enumerable: true, get: function () { return builder_js_1.Builder; } });\nvar byte_buffer_js_1 = require(\"./byte-buffer.js\");\nObject.defineProperty(exports, \"ByteBuffer\", { enumerable: true, get: function () { return byte_buffer_js_1.ByteBuffer; } });\nvar encoding_js_1 = require(\"./encoding.js\");\nObject.defineProperty(exports, \"Encoding\", { enumerable: true, get: function () { return encoding_js_1.Encoding; } });\n", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements.  See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership.  The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License.  You may obtain a copy of the License at\n//\n//   http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied.  See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nexport { MetadataVersion } from './fb/metadata-version.js';\nexport { UnionMode } from './fb/union-mode.js';\nexport { Precision } from './fb/precision.js';\nexport { DateUnit } from './fb/date-unit.js';\nexport { TimeUnit } from './fb/time-unit.js';\nexport { IntervalUnit } from './fb/interval-unit.js';\nexport { MessageHeader } from './fb/message-header.js';\n\n/**\n * Main data type enumeration.\n *\n * Data types in this library are all *logical*. They can be expressed as\n * either a primitive physical type (bytes or bits of some fixed size), a\n * nested type consisting of other data types, or another data type (e.g. a\n * timestamp encoded as an int64).\n *\n * **Note**: Only non-negative enum values are written to an Arrow IPC payload.\n *\n * The rest of the values are specified here so TypeScript can narrow the type\n * signatures further beyond the base Arrow Types. The Arrow DataTypes include\n * metadata like `bitWidth` that impact the type signatures of the values we\n * accept and return.\n *\n * For example, the `Int8Vector` reads 1-byte numbers from an `Int8Array`, an\n * `Int32Vector` reads a 4-byte number from an `Int32Array`, and an `Int64Vector`\n * reads a pair of 4-byte lo, hi 32-bit integers as a zero-copy slice from the\n * underlying `Int32Array`.\n *\n * Library consumers benefit by knowing the narrowest type, since we can ensure\n * the types across all public methods are propagated, and never bail to `any`.\n * These values are _never_ used at runtime, and they will _never_ be written\n * to the flatbuffers metadata of serialized Arrow IPC payloads.\n */\nexport enum Type {\n    NONE = 0, /** The default placeholder type */\n    Null = 1, /** A NULL type having no physical storage */\n    Int = 2, /** Signed or unsigned 8, 16, 32, or 64-bit little-endian integer */\n    Float = 3, /** 2, 4, or 8-byte floating point value */\n    Binary = 4, /** Variable-length bytes (no guarantee of UTF8-ness) */\n    Utf8 = 5, /** UTF8 variable-length string as List<Char> */\n    Bool = 6, /** Boolean as 1 bit, LSB bit-packed ordering */\n    Decimal = 7, /** Precision-and-scale-based decimal type. Storage type depends on the parameters. */\n    Date = 8, /** int32_t days or int64_t milliseconds since the UNIX epoch */\n    Time = 9, /** Time as signed 32 or 64-bit integer, representing either seconds, milliseconds, microseconds, or nanoseconds since midnight since midnight */\n    Timestamp = 10, /** Exact timestamp encoded with int64 since UNIX epoch (Default unit millisecond) */\n    Interval = 11, /** YEAR_MONTH or DAY_TIME or MONTH_DAY_NANO interval */\n    List = 12, /** A list of some logical data type */\n    Struct = 13, /** Struct of logical types */\n    Union = 14, /** Union of logical types */\n    FixedSizeBinary = 15, /** Fixed-size binary. Each value occupies the same number of bytes */\n    FixedSizeList = 16, /** Fixed-size list. Each value occupies the same number of bytes */\n    Map = 17, /** Map of named logical types */\n    Duration = 18, /** Measure of elapsed time in either seconds, milliseconds, microseconds or nanoseconds */\n    LargeBinary = 19, /** Large variable-length bytes (no guarantee of UTF8-ness) */\n    LargeUtf8 = 20, /** Large variable-length string as List<Char> */\n\n    Dictionary = -1, /** Dictionary aka Category type */\n    Int8 = -2,\n    Int16 = -3,\n    Int32 = -4,\n    Int64 = -5,\n    Uint8 = -6,\n    Uint16 = -7,\n    Uint32 = -8,\n    Uint64 = -9,\n    Float16 = -10,\n    Float32 = -11,\n    Float64 = -12,\n    DateDay = -13,\n    DateMillisecond = -14,\n    TimestampSecond = -15,\n    TimestampMillisecond = -16,\n    TimestampMicrosecond = -17,\n    TimestampNanosecond = -18,\n    TimeSecond = -19,\n    TimeMillisecond = -20,\n    TimeMicrosecond = -21,\n    TimeNanosecond = -22,\n    DenseUnion = -23,\n    SparseUnion = -24,\n    IntervalDayTime = -25,\n    IntervalYearMonth = -26,\n    DurationSecond = -27,\n    DurationMillisecond = -28,\n    DurationMicrosecond = -29,\n    DurationNanosecond = -30,\n    IntervalMonthDayNano = -31,\n}\n\nexport enum BufferType {\n    /**\n     * used in List type, Dense Union and variable length primitive types (String, Binary)\n     */\n    OFFSET = 0,\n\n    /**\n     * actual data, either fixed width primitive types in slots or variable width delimited by an OFFSET vector\n     */\n    DATA = 1,\n\n    /**\n     * Bit vector indicating if each value is null\n     */\n    VALIDITY = 2,\n\n    /**\n     * Type vector used in Union type\n     */\n    TYPE = 3\n}\n", null, null, null, "// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements.  See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership.  The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License.  You may obtain a copy of the License at\n//\n//   http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied.  See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Field } from './schema.js';\nimport { Vector } from './vector.js';\nimport { MapRow } from './row/map.js';\nimport { StructRow, StructRowProxy } from './row/struct.js';\nimport { ArrayCtor, BigIntArrayConstructor, TypedArrayConstructor } from './interfaces.js';\nimport { bigIntToNumber } from './util/bigint.js';\n\nimport {\n    Type,\n    Precision, UnionMode,\n    DateUnit, TimeUnit, IntervalUnit\n} from './enum.js';\n\n/** @ignore */\nexport type TimeBitWidth = 32 | 64;\n/** @ignore */\nexport type IntBitWidth = 8 | 16 | 32 | 64;\n/** @ignore */\nexport type IsSigned = { 'true': true; 'false': false };\n\nexport interface DataType<TType extends Type = Type, TChildren extends TypeMap = any> {\n    readonly TType: TType;\n    readonly TArray: any;\n    readonly TOffsetArray: any;\n    readonly TValue: any;\n    readonly TChildren: TChildren;\n    readonly ArrayType: any;\n    readonly OffsetArrayType: ArrayCtor<Int32Array | BigInt64Array>;\n    readonly children: Field<TChildren[keyof TChildren]>[];\n}\n\n/**\n * An abstract base class for classes that encapsulate metadata about each of\n * the logical types that Arrow can represent.\n */\nexport abstract class DataType<TType extends Type = Type, TChildren extends TypeMap = any> {\n\n    declare public [Symbol.toStringTag]: string;\n\n    /** @nocollapse */ static isNull(x: any): x is Null { return x?.typeId === Type.Null; }\n    /** @nocollapse */ static isInt(x: any): x is Int_ { return x?.typeId === Type.Int; }\n    /** @nocollapse */ static isFloat(x: any): x is Float { return x?.typeId === Type.Float; }\n    /** @nocollapse */ static isBinary(x: any): x is Binary { return x?.typeId === Type.Binary; }\n    /** @nocollapse */ static isLargeBinary(x: any): x is LargeBinary { return x?.typeId === Type.LargeBinary; }\n    /** @nocollapse */ static isUtf8(x: any): x is Utf8 { return x?.typeId === Type.Utf8; }\n    /** @nocollapse */ static isLargeUtf8(x: any): x is LargeUtf8 { return x?.typeId === Type.LargeUtf8; }\n    /** @nocollapse */ static isBool(x: any): x is Bool { return x?.typeId === Type.Bool; }\n    /** @nocollapse */ static isDecimal(x: any): x is Decimal { return x?.typeId === Type.Decimal; }\n    /** @nocollapse */ static isDate(x: any): x is Date_ { return x?.typeId === Type.Date; }\n    /** @nocollapse */ static isTime(x: any): x is Time_ { return x?.typeId === Type.Time; }\n    /** @nocollapse */ static isTimestamp(x: any): x is Timestamp_ { return x?.typeId === Type.Timestamp; }\n    /** @nocollapse */ static isInterval(x: any): x is Interval_ { return x?.typeId === Type.Interval; }\n    /** @nocollapse */ static isDuration(x: any): x is Duration { return x?.typeId === Type.Duration; }\n    /** @nocollapse */ static isList(x: any): x is List { return x?.typeId === Type.List; }\n    /** @nocollapse */ static isStruct(x: any): x is Struct { return x?.typeId === Type.Struct; }\n    /** @nocollapse */ static isUnion(x: any): x is Union_ { return x?.typeId === Type.Union; }\n    /** @nocollapse */ static isFixedSizeBinary(x: any): x is FixedSizeBinary { return x?.typeId === Type.FixedSizeBinary; }\n    /** @nocollapse */ static isFixedSizeList(x: any): x is FixedSizeList { return x?.typeId === Type.FixedSizeList; }\n    /** @nocollapse */ static isMap(x: any): x is Map_ { return x?.typeId === Type.Map; }\n    /** @nocollapse */ static isDictionary(x: any): x is Dictionary { return x?.typeId === Type.Dictionary; }\n\n    /** @nocollapse */ static isDenseUnion(x: any): x is DenseUnion { return DataType.isUnion(x) && x.mode === UnionMode.Dense; }\n    /** @nocollapse */ static isSparseUnion(x: any): x is SparseUnion { return DataType.isUnion(x) && x.mode === UnionMode.Sparse; }\n\n    declare public readonly typeId: TType;\n\n    constructor(typeId: TType) {\n        this.typeId = typeId;\n    }\n\n    protected static [Symbol.toStringTag] = ((proto: DataType) => {\n        (<any>proto).children = null;\n        (<any>proto).ArrayType = Array;\n        (<any>proto).OffsetArrayType = Int32Array;\n        return proto[Symbol.toStringTag] = 'DataType';\n    })(DataType.prototype);\n}\n\n/** @ignore */\nexport interface Null extends DataType<Type.Null> { TArray: void; TValue: null }\n/** @ignore */\nexport class Null extends DataType<Type.Null> {\n    constructor() {\n        super(Type.Null);\n    }\n    public toString() { return `Null`; }\n    protected static [Symbol.toStringTag] = ((proto: Null) => proto[Symbol.toStringTag] = 'Null')(Null.prototype);\n}\n\n/** @ignore */\ntype Ints = Type.Int | Type.Int8 | Type.Int16 | Type.Int32 | Type.Int64 | Type.Uint8 | Type.Uint16 | Type.Uint32 | Type.Uint64;\n/** @ignore */\ntype IType = {\n    [Type.Int]: { bitWidth: IntBitWidth; isSigned: true | false; TArray: IntArray; TValue: number | bigint };\n    [Type.Int8]: { bitWidth: 8; isSigned: true; TArray: Int8Array; TValue: number };\n    [Type.Int16]: { bitWidth: 16; isSigned: true; TArray: Int16Array; TValue: number };\n    [Type.Int32]: { bitWidth: 32; isSigned: true; TArray: Int32Array; TValue: number };\n    [Type.Int64]: { bitWidth: 64; isSigned: true; TArray: BigInt64Array; TValue: bigint };\n    [Type.Uint8]: { bitWidth: 8; isSigned: false; TArray: Uint8Array; TValue: number };\n    [Type.Uint16]: { bitWidth: 16; isSigned: false; TArray: Uint16Array; TValue: number };\n    [Type.Uint32]: { bitWidth: 32; isSigned: false; TArray: Uint32Array; TValue: number };\n    [Type.Uint64]: { bitWidth: 64; isSigned: false; TArray: BigUint64Array; TValue: bigint };\n};\n\n/** @ignore */\ninterface Int_<T extends Ints = Ints> extends DataType<T> { TArray: IType[T]['TArray']; TValue: IType[T]['TValue'] }\n/** @ignore */\nclass Int_<T extends Ints = Ints> extends DataType<T> {\n    constructor(public readonly isSigned: IType[T]['isSigned'],\n        public readonly bitWidth: IType[T]['bitWidth']) {\n        super(Type.Int as T);\n    }\n    public get ArrayType() {\n        switch (this.bitWidth) {\n            case 8: return this.isSigned ? Int8Array : Uint8Array;\n            case 16: return this.isSigned ? Int16Array : Uint16Array;\n            case 32: return this.isSigned ? Int32Array : Uint32Array;\n            case 64: return this.isSigned ? BigInt64Array : BigUint64Array;\n        }\n        throw new Error(`Unrecognized ${this[Symbol.toStringTag]} type`);\n    }\n    public toString() { return `${this.isSigned ? `I` : `Ui`}nt${this.bitWidth}`; }\n    protected static [Symbol.toStringTag] = ((proto: Int_) => {\n        (<any>proto).isSigned = null;\n        (<any>proto).bitWidth = null;\n        return proto[Symbol.toStringTag] = 'Int';\n    })(Int_.prototype);\n}\n\nexport { Int_ as Int };\n\n/** @ignore */\nexport class Int8 extends Int_<Type.Int8> {\n    constructor() { super(true, 8); }\n    public get ArrayType() { return Int8Array; }\n}\n/** @ignore */\nexport class Int16 extends Int_<Type.Int16> {\n    constructor() { super(true, 16); }\n    public get ArrayType() { return Int16Array; }\n}\n/** @ignore */\nexport class Int32 extends Int_<Type.Int32> {\n    constructor() { super(true, 32); }\n    public get ArrayType() { return Int32Array; }\n}\n/** @ignore */\nexport class Int64 extends Int_<Type.Int64> {\n    constructor() { super(true, 64); }\n    public get ArrayType() { return BigInt64Array; }\n}\n/** @ignore */\nexport class Uint8 extends Int_<Type.Uint8> {\n    constructor() { super(false, 8); }\n    public get ArrayType() { return Uint8Array; }\n}\n/** @ignore */\nexport class Uint16 extends Int_<Type.Uint16> {\n    constructor() { super(false, 16); }\n    public get ArrayType() { return Uint16Array; }\n}\n/** @ignore */\nexport class Uint32 extends Int_<Type.Uint32> {\n    constructor() { super(false, 32); }\n    public get ArrayType() { return Uint32Array; }\n}\n/** @ignore */\nexport class Uint64 extends Int_<Type.Uint64> {\n    constructor() { super(false, 64); }\n    public get ArrayType() { return BigUint64Array; }\n}\n\nObject.defineProperty(Int8.prototype, 'ArrayType', { value: Int8Array });\nObject.defineProperty(Int16.prototype, 'ArrayType', { value: Int16Array });\nObject.defineProperty(Int32.prototype, 'ArrayType', { value: Int32Array });\nObject.defineProperty(Int64.prototype, 'ArrayType', { value: BigInt64Array });\nObject.defineProperty(Uint8.prototype, 'ArrayType', { value: Uint8Array });\nObject.defineProperty(Uint16.prototype, 'ArrayType', { value: Uint16Array });\nObject.defineProperty(Uint32.prototype, 'ArrayType', { value: Uint32Array });\nObject.defineProperty(Uint64.prototype, 'ArrayType', { value: BigUint64Array });\n\n/** @ignore */\ntype Floats = Type.Float | Type.Float16 | Type.Float32 | Type.Float64;\n/** @ignore */\ntype FType = {\n    [Type.Float]: { precision: Precision; TArray: FloatArray; TValue: number };\n    [Type.Float16]: { precision: Precision.HALF; TArray: Uint16Array; TValue: number };\n    [Type.Float32]: { precision: Precision.SINGLE; TArray: Float32Array; TValue: number };\n    [Type.Float64]: { precision: Precision.DOUBLE; TArray: Float64Array; TValue: number };\n};\n\n/** @ignore */\nexport interface Float<T extends Floats = Floats> extends DataType<T> { TArray: FType[T]['TArray']; TValue: number }\n/** @ignore */\nexport class Float<T extends Floats = Floats> extends DataType<T> {\n    constructor(public readonly precision: Precision) {\n        super(Type.Float as T);\n    }\n    public get ArrayType(): TypedArrayConstructor<FType[T]['TArray']> {\n        switch (this.precision) {\n            case Precision.HALF: return Uint16Array;\n            case Precision.SINGLE: return Float32Array;\n            case Precision.DOUBLE: return Float64Array;\n        }\n        // @ts-ignore\n        throw new Error(`Unrecognized ${this[Symbol.toStringTag]} type`);\n    }\n    public toString() { return `Float${(this.precision << 5) || 16}`; }\n    protected static [Symbol.toStringTag] = ((proto: Float) => {\n        (<any>proto).precision = null;\n        return proto[Symbol.toStringTag] = 'Float';\n    })(Float.prototype);\n}\n\n/** @ignore */\nexport class Float16 extends Float<Type.Float16> { constructor() { super(Precision.HALF); } }\n/** @ignore */\nexport class Float32 extends Float<Type.Float32> { constructor() { super(Precision.SINGLE); } }\n/** @ignore */\nexport class Float64 extends Float<Type.Float64> { constructor() { super(Precision.DOUBLE); } }\n\nObject.defineProperty(Float16.prototype, 'ArrayType', { value: Uint16Array });\nObject.defineProperty(Float32.prototype, 'ArrayType', { value: Float32Array });\nObject.defineProperty(Float64.prototype, 'ArrayType', { value: Float64Array });\n\n/** @ignore */\nexport interface Binary extends DataType<Type.Binary> { TArray: Uint8Array; TOffsetArray: Int32Array; TValue: Uint8Array; ArrayType: TypedArrayConstructor<Uint8Array>; OffsetArrayType: TypedArrayConstructor<Int32Array> }\n/** @ignore */\nexport class Binary extends DataType<Type.Binary> {\n    constructor() {\n        super(Type.Binary);\n    }\n    public toString() { return `Binary`; }\n    protected static [Symbol.toStringTag] = ((proto: Binary) => {\n        (<any>proto).ArrayType = Uint8Array;\n        return proto[Symbol.toStringTag] = 'Binary';\n    })(Binary.prototype);\n}\n\n/** @ignore */\nexport interface LargeBinary extends DataType<Type.LargeBinary> { TArray: Uint8Array; TOffsetArray: BigInt64Array; TValue: Uint8Array; ArrayType: TypedArrayConstructor<Uint8Array>; OffsetArrayType: BigIntArrayConstructor<BigInt64Array> }\n/** @ignore */\nexport class LargeBinary extends DataType<Type.LargeBinary> {\n    constructor() {\n        super(Type.LargeBinary);\n    }\n    public toString() { return `LargeBinary`; }\n    protected static [Symbol.toStringTag] = ((proto: LargeBinary) => {\n        (<any>proto).ArrayType = Uint8Array;\n        (<any>proto).OffsetArrayType = BigInt64Array;\n        return proto[Symbol.toStringTag] = 'LargeBinary';\n    })(LargeBinary.prototype);\n}\n\n/** @ignore */\nexport interface Utf8 extends DataType<Type.Utf8> { TArray: Uint8Array; TOffsetArray: Int32Array; TValue: string; ArrayType: TypedArrayConstructor<Uint8Array>; OffsetArrayType: TypedArrayConstructor<Int32Array> }\n/** @ignore */\nexport class Utf8 extends DataType<Type.Utf8> {\n    constructor() {\n        super(Type.Utf8);\n    }\n    public toString() { return `Utf8`; }\n    protected static [Symbol.toStringTag] = ((proto: Utf8) => {\n        (<any>proto).ArrayType = Uint8Array;\n        return proto[Symbol.toStringTag] = 'Utf8';\n    })(Utf8.prototype);\n}\n\n/** @ignore */\nexport interface LargeUtf8 extends DataType<Type.LargeUtf8> { TArray: Uint8Array; TOffsetArray: BigInt64Array; TValue: string; ArrayType: TypedArrayConstructor<Uint8Array>; OffsetArrayType: BigIntArrayConstructor<BigInt64Array> }\n/** @ignore */\nexport class LargeUtf8 extends DataType<Type.LargeUtf8> {\n    constructor() {\n        super(Type.LargeUtf8);\n    }\n    public toString() { return `LargeUtf8`; }\n    protected static [Symbol.toStringTag] = ((proto: LargeUtf8) => {\n        (<any>proto).ArrayType = Uint8Array;\n        (<any>proto).OffsetArrayType = BigInt64Array;\n        return proto[Symbol.toStringTag] = 'LargeUtf8';\n    })(LargeUtf8.prototype);\n}\n\n/** @ignore */\nexport interface Bool extends DataType<Type.Bool> { TArray: Uint8Array; TValue: boolean; ArrayType: TypedArrayConstructor<Uint8Array> }\n/** @ignore */\nexport class Bool extends DataType<Type.Bool> {\n    constructor() {\n        super(Type.Bool);\n    }\n    public toString() { return `Bool`; }\n    protected static [Symbol.toStringTag] = ((proto: Bool) => {\n        (<any>proto).ArrayType = Uint8Array;\n        return proto[Symbol.toStringTag] = 'Bool';\n    })(Bool.prototype);\n}\n\n/** @ignore */\nexport interface Decimal extends DataType<Type.Decimal> { TArray: Uint32Array; TValue: Uint32Array; ArrayType: TypedArrayConstructor<Uint32Array> }\n/** @ignore */\nexport class Decimal extends DataType<Type.Decimal> {\n    constructor(public readonly scale: number,\n        public readonly precision: number,\n        public readonly bitWidth: number = 128) {\n        super(Type.Decimal);\n    }\n    public toString() { return `Decimal[${this.precision}e${this.scale > 0 ? `+` : ``}${this.scale}]`; }\n    protected static [Symbol.toStringTag] = ((proto: Decimal) => {\n        (<any>proto).scale = null;\n        (<any>proto).precision = null;\n        (<any>proto).ArrayType = Uint32Array;\n        return proto[Symbol.toStringTag] = 'Decimal';\n    })(Decimal.prototype);\n}\n\n/** @ignore */\nexport type Dates = Type.Date | Type.DateDay | Type.DateMillisecond;\n/** @ignore */\ntype DateType = {\n    [Type.Date]: { TArray: Int32Array | BigInt64Array };\n    [Type.DateDay]: { TArray: Int32Array };\n    [Type.DateMillisecond]: { TArray: BigInt64Array };\n};\n/** @ignore */\nexport interface Date_<T extends Dates = Dates> extends DataType<T> {\n    TArray: DateType[T]['TArray'];\n    TValue: number;\n}\n/** @ignore */\nexport class Date_<T extends Dates = Dates> extends DataType<T> {\n    constructor(public readonly unit: DateUnit) {\n        super(Type.Date as T);\n    }\n    public toString() { return `Date${(this.unit + 1) * 32}<${DateUnit[this.unit]}>`; }\n\n    public get ArrayType() {\n        return this.unit === DateUnit.DAY ? Int32Array : BigInt64Array;\n    }\n    protected static [Symbol.toStringTag] = ((proto: Date_) => {\n        (<any>proto).unit = null;\n        return proto[Symbol.toStringTag] = 'Date';\n    })(Date_.prototype);\n}\n\n/** @ignore */\nexport class DateDay extends Date_<Type.DateDay> { constructor() { super(DateUnit.DAY); } }\n/**\n * A signed 64-bit date representing the elapsed time since UNIX epoch (1970-01-01) in milliseconds.\n * According to the specification, this should be treated as the number of days, in milliseconds,  since the UNIX epoch.\n * Therefore, values must be evenly divisible by `86_400_000` (the number of milliseconds in a standard day).\n *\n * Practically, validation that values of this type are evenly divisible by `86_400_000` is not enforced by this library\n * for performance and usability reasons.\n *\n * Users should prefer to use {@link DateDay} to cleanly represent the number of days. For JS dates,\n * {@link TimestampMillisecond} is the preferred type.\n *\n * @ignore\n */\nexport class DateMillisecond extends Date_<Type.DateMillisecond> { constructor() { super(DateUnit.MILLISECOND); } }\n\n/** @ignore */\ntype Times = Type.Time | Type.TimeSecond | Type.TimeMillisecond | Type.TimeMicrosecond | Type.TimeNanosecond;\n/** @ignore */\ntype TimesType = {\n    [Type.Time]: { unit: TimeUnit; TValue: number | bigint; TArray: Int32Array | BigInt64Array };\n    [Type.TimeSecond]: { unit: TimeUnit.SECOND; TValue: number; TArray: Int32Array };\n    [Type.TimeMillisecond]: { unit: TimeUnit.MILLISECOND; TValue: number; TArray: Int32Array };\n    [Type.TimeMicrosecond]: { unit: TimeUnit.MICROSECOND; TValue: bigint; TArray: BigInt64Array };\n    [Type.TimeNanosecond]: { unit: TimeUnit.NANOSECOND; TValue: bigint; TArray: BigInt64Array };\n};\n\n/** @ignore */\ninterface Time_<T extends Times = Times> extends DataType<T> {\n    TArray: TimesType[T]['TArray'];\n    TValue: TimesType[T]['TValue'];\n}\n/** @ignore */\nclass Time_<T extends Times = Times> extends DataType<T> {\n    constructor(public readonly unit: TimesType[T]['unit'],\n        public readonly bitWidth: TimeBitWidth) {\n        super(Type.Time as T);\n    }\n    public toString() { return `Time${this.bitWidth}<${TimeUnit[this.unit]}>`; }\n    public get ArrayType() {\n        switch (this.bitWidth) {\n            case 32: return Int32Array;\n            case 64: return BigInt64Array;\n        }\n        // @ts-ignore\n        throw new Error(`Unrecognized ${this[Symbol.toStringTag]} type`);\n    }\n    protected static [Symbol.toStringTag] = ((proto: Time_) => {\n        (<any>proto).unit = null;\n        (<any>proto).bitWidth = null;\n        return proto[Symbol.toStringTag] = 'Time';\n    })(Time_.prototype);\n}\n\nexport { Time_ as Time };\n\n/** @ignore */\nexport class TimeSecond extends Time_<Type.TimeSecond> { constructor() { super(TimeUnit.SECOND, 32); } }\n/** @ignore */\nexport class TimeMillisecond extends Time_<Type.TimeMillisecond> { constructor() { super(TimeUnit.MILLISECOND, 32); } }\n/** @ignore */\nexport class TimeMicrosecond extends Time_<Type.TimeMicrosecond> { constructor() { super(TimeUnit.MICROSECOND, 64); } }\n/** @ignore */\nexport class TimeNanosecond extends Time_<Type.TimeNanosecond> { constructor() { super(TimeUnit.NANOSECOND, 64); } }\n\n/** @ignore */\ntype Timestamps = Type.Timestamp | Type.TimestampSecond | Type.TimestampMillisecond | Type.TimestampMicrosecond | Type.TimestampNanosecond;\n/** @ignore */\ninterface Timestamp_<T extends Timestamps = Timestamps> extends DataType<T> {\n    TArray: BigInt64Array;\n    TValue: number;\n    ArrayType: BigIntArrayConstructor<BigInt64Array>;\n}\n\n/** @ignore */\nclass Timestamp_<T extends Timestamps = Timestamps> extends DataType<T> {\n    constructor(public readonly unit: TimeUnit,\n        public readonly timezone?: string | null) {\n        super(Type.Timestamp as T);\n    }\n    public toString() { return `Timestamp<${TimeUnit[this.unit]}${this.timezone ? `, ${this.timezone}` : ``}>`; }\n    protected static [Symbol.toStringTag] = ((proto: Timestamp_) => {\n        (<any>proto).unit = null;\n        (<any>proto).timezone = null;\n        (<any>proto).ArrayType = BigInt64Array;\n        return proto[Symbol.toStringTag] = 'Timestamp';\n    })(Timestamp_.prototype);\n}\n\nexport { Timestamp_ as Timestamp };\n\n/** @ignore */\nexport class TimestampSecond extends Timestamp_<Type.TimestampSecond> { constructor(timezone?: string | null) { super(TimeUnit.SECOND, timezone); } }\n/** @ignore */\nexport class TimestampMillisecond extends Timestamp_<Type.TimestampMillisecond> { constructor(timezone?: string | null) { super(TimeUnit.MILLISECOND, timezone); } }\n/** @ignore */\nexport class TimestampMicrosecond extends Timestamp_<Type.TimestampMicrosecond> { constructor(timezone?: string | null) { super(TimeUnit.MICROSECOND, timezone); } }\n/** @ignore */\nexport class TimestampNanosecond extends Timestamp_<Type.TimestampNanosecond> { constructor(timezone?: string | null) { super(TimeUnit.NANOSECOND, timezone); } }\n\n/** @ignore */\ntype Intervals = Type.Interval | Type.IntervalDayTime | Type.IntervalYearMonth | Type.IntervalMonthDayNano;\n/** @ignore */\ninterface Interval_<T extends Intervals = Intervals> extends DataType<T> {\n    TArray: Int32Array;\n    TValue: Int32Array;\n    ArrayType: TypedArrayConstructor<Int32Array>;\n}\n\n/** @ignore */\nclass Interval_<T extends Intervals = Intervals> extends DataType<T> {\n    constructor(public readonly unit: IntervalUnit) {\n        super(Type.Interval as T);\n    }\n    public toString() { return `Interval<${IntervalUnit[this.unit]}>`; }\n    protected static [Symbol.toStringTag] = ((proto: Interval_) => {\n        (<any>proto).unit = null;\n        (<any>proto).ArrayType = Int32Array;\n        return proto[Symbol.toStringTag] = 'Interval';\n    })(Interval_.prototype);\n}\n\nexport { Interval_ as Interval };\n\n/** @ignore */\nexport class IntervalDayTime extends Interval_<Type.IntervalDayTime> { constructor() { super(IntervalUnit.DAY_TIME); } }\n/** @ignore */\nexport class IntervalYearMonth extends Interval_<Type.IntervalYearMonth> { constructor() { super(IntervalUnit.YEAR_MONTH); } }\n/** @ignore */\nexport class IntervalMonthDayNano extends Interval_<Type.IntervalMonthDayNano> { constructor() { super(IntervalUnit.MONTH_DAY_NANO); } }\n\n/** @ignore */\ntype Durations = Type.Duration | Type.DurationSecond | Type.DurationMillisecond | Type.DurationMicrosecond | Type.DurationNanosecond;\n/** @ignore */\nexport interface Duration<T extends Durations = Durations> extends DataType<T> {\n    TArray: BigInt64Array;\n    TValue: bigint;\n    ArrayType: BigIntArrayConstructor<BigInt64Array>;\n}\n\n/** @ignore */\nexport class Duration<T extends Durations = Durations> extends DataType<T> {\n    constructor(public readonly unit: TimeUnit) {\n        super(Type.Duration as T);\n    }\n    public toString() { return `Duration<${TimeUnit[this.unit]}>`; }\n    protected static [Symbol.toStringTag] = ((proto: Duration) => {\n        (<any>proto).unit = null;\n        (<any>proto).ArrayType = BigInt64Array;\n        return proto[Symbol.toStringTag] = 'Duration';\n    })(Duration.prototype);\n}\n\n/** @ignore */\nexport class DurationSecond extends Duration<Type.DurationSecond> { constructor() { super(TimeUnit.SECOND); } }\n/** @ignore */\nexport class DurationMillisecond extends Duration<Type.DurationMillisecond> { constructor() { super(TimeUnit.MILLISECOND); } }\n/** @ignore */\nexport class DurationMicrosecond extends Duration<Type.DurationMicrosecond> { constructor() { super(TimeUnit.MICROSECOND); } }\n/** @ignore */\nexport class DurationNanosecond extends Duration<Type.DurationNanosecond> { constructor() { super(TimeUnit.NANOSECOND); } }\n\n\n/** @ignore */\nexport interface List<T extends DataType = any> extends DataType<Type.List, { [0]: T }> {\n    TArray: Array<T>;\n    TValue: Vector<T>;\n}\n\n/** @ignore */\nexport class List<T extends DataType = any> extends DataType<Type.List, { [0]: T }> {\n    constructor(child: Field<T>) {\n        super(Type.List);\n        this.children = [child];\n    }\n    public declare readonly children: Field<T>[];\n    public toString() { return `List<${this.valueType}>`; }\n    public get valueType(): T { return this.children[0].type as T; }\n    public get valueField(): Field<T> { return this.children[0] as Field<T>; }\n    public get ArrayType(): T['ArrayType'] { return this.valueType.ArrayType; }\n    protected static [Symbol.toStringTag] = ((proto: List) => {\n        (<any>proto).children = null;\n        return proto[Symbol.toStringTag] = 'List';\n    })(List.prototype);\n}\n\n/** @ignore */\nexport interface Struct<T extends TypeMap = any> extends DataType<Type.Struct, T> {\n    TArray: Array<StructRowProxy<T>>;\n    TValue: StructRowProxy<T>;\n    dataTypes: T;\n}\n\n/** @ignore */\nexport class Struct<T extends TypeMap = any> extends DataType<Type.Struct, T> {\n    public declare _row: StructRow<T>;\n    public declare readonly children: Field<T[keyof T]>[];\n    constructor(children: Field<T[keyof T]>[]) {\n        super(Type.Struct);\n        this.children = children;\n    }\n    public toString() { return `Struct<{${this.children.map((f) => `${f.name}:${f.type}`).join(`, `)}}>`; }\n    protected static [Symbol.toStringTag] = ((proto: Struct) => {\n        (<any>proto).children = null;\n        return proto[Symbol.toStringTag] = 'Struct';\n    })(Struct.prototype);\n}\n\n/** @ignore */\ntype Unions = Type.Union | Type.DenseUnion | Type.SparseUnion;\n/** @ignore */\ninterface Union_<T extends Unions = Unions> extends DataType<T> { TArray: Int8Array; TValue: any; ArrayType: TypedArrayConstructor<Int8Array> }\n/** @ignore */\nclass Union_<T extends Unions = Unions> extends DataType<T> {\n    public declare readonly mode: UnionMode;\n    public declare readonly typeIds: Int32Array;\n    public declare readonly children: Field<any>[];\n    public declare readonly typeIdToChildIndex: { [key: number]: number };\n    constructor(mode: UnionMode,\n        typeIds: number[] | Int32Array,\n        children: Field<any>[]) {\n        super(Type.Union as T);\n        this.mode = mode;\n        this.children = children;\n        this.typeIds = typeIds = Int32Array.from(typeIds);\n        this.typeIdToChildIndex = typeIds.reduce((typeIdToChildIndex, typeId, idx) => (typeIdToChildIndex[typeId] = idx) && typeIdToChildIndex || typeIdToChildIndex, Object.create(null) as { [key: number]: number });\n    }\n    public toString() {\n        return `${this[Symbol.toStringTag]}<${this.children.map((x) => `${x.type}`).join(` | `)\n            }>`;\n    }\n    protected static [Symbol.toStringTag] = ((proto: Union_) => {\n        (<any>proto).mode = null;\n        (<any>proto).typeIds = null;\n        (<any>proto).children = null;\n        (<any>proto).typeIdToChildIndex = null;\n        (<any>proto).ArrayType = Int8Array;\n        return proto[Symbol.toStringTag] = 'Union';\n    })(Union_.prototype);\n}\n\nexport { Union_ as Union };\n\n/** @ignore */\nexport class DenseUnion extends Union_<Type.DenseUnion> {\n    constructor(typeIds: number[] | Int32Array, children: Field[]) {\n        super(UnionMode.Dense, typeIds, children);\n    }\n}\n\n/** @ignore */\nexport class SparseUnion extends Union_<Type.SparseUnion> {\n    constructor(typeIds: number[] | Int32Array, children: Field[]) {\n        super(UnionMode.Sparse, typeIds, children);\n    }\n}\n\n/** @ignore */\nexport interface FixedSizeBinary extends DataType<Type.FixedSizeBinary> {\n    TArray: Uint8Array;\n    TValue: Uint8Array;\n    ArrayType: TypedArrayConstructor<Uint8Array>;\n}\n\n/** @ignore */\nexport class FixedSizeBinary extends DataType<Type.FixedSizeBinary> {\n    constructor(public readonly byteWidth: number) {\n        super(Type.FixedSizeBinary);\n    }\n    public toString() { return `FixedSizeBinary[${this.byteWidth}]`; }\n    protected static [Symbol.toStringTag] = ((proto: FixedSizeBinary) => {\n        (<any>proto).byteWidth = null;\n        (<any>proto).ArrayType = Uint8Array;\n        return proto[Symbol.toStringTag] = 'FixedSizeBinary';\n    })(FixedSizeBinary.prototype);\n}\n\n/** @ignore */\nexport interface FixedSizeList<T extends DataType = any> extends DataType<Type.FixedSizeList, { [0]: T }> {\n    TArray: Array<T['TArray']>;\n    TValue: Vector<T>;\n}\n\n/** @ignore */\nexport class FixedSizeList<T extends DataType = any> extends DataType<Type.FixedSizeList, { [0]: T }> {\n    public declare readonly children: Field<T>[];\n    constructor(public readonly listSize: number, child: Field<T>) {\n        super(Type.FixedSizeList);\n        this.children = [child];\n    }\n    public get valueType(): T { return this.children[0].type as T; }\n    public get valueField(): Field<T> { return this.children[0] as Field<T>; }\n    public get ArrayType(): T['ArrayType'] { return this.valueType.ArrayType; }\n    public toString() { return `FixedSizeList[${this.listSize}]<${this.valueType}>`; }\n    protected static [Symbol.toStringTag] = ((proto: FixedSizeList) => {\n        (<any>proto).children = null;\n        (<any>proto).listSize = null;\n        return proto[Symbol.toStringTag] = 'FixedSizeList';\n    })(FixedSizeList.prototype);\n}\n\n/** @ignore */\nexport interface Map_<TKey extends DataType = any, TValue extends DataType = any> extends DataType<Type.Map, { [0]: Struct<{ key: TKey; value: TValue }> }> {\n    TArray: Array<Map<TKey['TValue'], TValue['TValue'] | null>>;\n    TChild: Struct<{ key: TKey; value: TValue }>;\n    TValue: MapRow<TKey, TValue>;\n}\n\n/** @ignore */\nexport class Map_<TKey extends DataType = any, TValue extends DataType = any> extends DataType<Type.Map, { [0]: Struct<{ key: TKey; value: TValue }> }> {\n    constructor(entries: Field<Struct<{ key: TKey; value: TValue }>>, keysSorted = false) {\n        super(Type.Map);\n        this.children = [entries];\n        this.keysSorted = keysSorted;\n        // ARROW-8716\n        // https://github.com/apache/arrow/issues/17168\n        if (entries) {\n            (entries as any)['name'] = 'entries';\n            if ((entries as any)?.type?.children) {\n                const key = (entries as any)?.type?.children[0];\n                if (key) {\n                    key['name'] = 'key';\n                }\n                const val = (entries as any)?.type?.children[1];\n                if (val) {\n                    val['name'] = 'value';\n                }\n            }\n        }\n    }\n    public declare readonly keysSorted: boolean;\n    public declare readonly children: Field<Struct<{ key: TKey; value: TValue }>>[];\n    public get keyType(): TKey { return this.children[0].type.children[0].type as TKey; }\n    public get valueType(): TValue { return this.children[0].type.children[1].type as TValue; }\n    public get childType() { return this.children[0].type as Struct<{ key: TKey; value: TValue }>; }\n    public toString() { return `Map<{${this.children[0].type.children.map((f) => `${f.name}:${f.type}`).join(`, `)}}>`; }\n    protected static [Symbol.toStringTag] = ((proto: Map_) => {\n        (<any>proto).children = null;\n        (<any>proto).keysSorted = null;\n        return proto[Symbol.toStringTag] = 'Map_';\n    })(Map_.prototype);\n}\n\n/** @ignore */\nconst getId = ((atomicDictionaryId) => () => ++atomicDictionaryId)(-1);\n\n/** @ignore */\nexport type TKeys = Int8 | Int16 | Int32 | Uint8 | Uint16 | Uint32;\n\n/** @ignore */\nexport interface Dictionary<T extends DataType = any, TKey extends TKeys = TKeys> extends DataType<Type.Dictionary> {\n    TArray: TKey['TArray'];\n    TValue: T['TValue'];\n}\n\n/** @ignore */\nexport class Dictionary<T extends DataType = any, TKey extends TKeys = TKeys> extends DataType<Type.Dictionary> {\n    public declare readonly id: number;\n    public declare readonly indices: TKey;\n    public declare readonly dictionary: T;\n    public declare readonly isOrdered: boolean;\n    constructor(dictionary: T, indices: TKey, id?: bigint | number | null, isOrdered?: boolean | null) {\n        super(Type.Dictionary);\n        this.indices = indices;\n        this.dictionary = dictionary;\n        this.isOrdered = isOrdered || false;\n        this.id = id == null ? getId() : bigIntToNumber(id);\n    }\n    public get children() { return this.dictionary.children; }\n    public get valueType(): T { return this.dictionary as T; }\n    public get ArrayType(): T['ArrayType'] { return this.dictionary.ArrayType; }\n    public toString() { return `Dictionary<${this.indices}, ${this.dictionary}>`; }\n    protected static [Symbol.toStringTag] = ((proto: Dictionary) => {\n        (<any>proto).id = null;\n        (<any>proto).indices = null;\n        (<any>proto).isOrdered = null;\n        (<any>proto).dictionary = null;\n        return proto[Symbol.toStringTag] = 'Dictionary';\n    })(Dictionary.prototype);\n}\n\n/** @ignore */\nexport type FloatArray = Uint16Array | Float32Array | Float64Array;\n/** @ignore */\nexport type IntArray = Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array;\n\n/** @ignore */\nexport function strideForType(type: DataType) {\n    const t: any = type;\n    switch (type.typeId) {\n        case Type.Decimal: return (type as Decimal).bitWidth / 32;\n        case Type.Interval: {\n            if ((t as Interval_).unit === IntervalUnit.MONTH_DAY_NANO) {\n                return 4;\n            }\n            return 1 + (t as Interval_).unit;\n        }\n        // case Type.Int: return 1 + +((t as Int_).bitWidth > 32);\n        // case Type.Time: return 1 + +((t as Time_).bitWidth > 32);\n        case Type.FixedSizeList: return (t as FixedSizeList).listSize;\n        case Type.FixedSizeBinary: return (t as FixedSizeBinary).byteWidth;\n        default: return 1;\n    }\n}\n\n/** @ignore */\nexport type TypeMap = Record<string | number | symbol, DataType>;\n", "// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements.  See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership.  The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License.  You may obtain a copy of the License at\n//\n//   http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied.  See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Type, Precision, DateUnit, TimeUnit, IntervalUnit, UnionMode } from './enum.js';\nimport { DataType, Float, Int, Date_, Interval, Time, Timestamp, Union, Duration } from './type.js';\n\nexport abstract class Visitor {\n    public visitMany(nodes: any[], ...args: any[][]) {\n        return nodes.map((node, i) => this.visit(node, ...args.map((x) => x[i])));\n    }\n    public visit(...args: any[]) {\n        return this.getVisitFn(args[0], false).apply(this, args);\n    }\n    public getVisitFn(node: any, throwIfNotFound = true) {\n        return getVisitFn(this, node, throwIfNotFound);\n    }\n    public getVisitFnByTypeId(typeId: Type, throwIfNotFound = true) {\n        return getVisitFnByTypeId(this, typeId, throwIfNotFound);\n    }\n    public visitNull(_node: any, ..._args: any[]): any { return null; }\n    public visitBool(_node: any, ..._args: any[]): any { return null; }\n    public visitInt(_node: any, ..._args: any[]): any { return null; }\n    public visitFloat(_node: any, ..._args: any[]): any { return null; }\n    public visitUtf8(_node: any, ..._args: any[]): any { return null; }\n    public visitLargeUtf8(_node: any, ..._args: any[]): any { return null; }\n    public visitBinary(_node: any, ..._args: any[]): any { return null; }\n    public visitLargeBinary(_node: any, ..._args: any[]): any { return null; }\n    public visitFixedSizeBinary(_node: any, ..._args: any[]): any { return null; }\n    public visitDate(_node: any, ..._args: any[]): any { return null; }\n    public visitTimestamp(_node: any, ..._args: any[]): any { return null; }\n    public visitTime(_node: any, ..._args: any[]): any { return null; }\n    public visitDecimal(_node: any, ..._args: any[]): any { return null; }\n    public visitList(_node: any, ..._args: any[]): any { return null; }\n    public visitStruct(_node: any, ..._args: any[]): any { return null; }\n    public visitUnion(_node: any, ..._args: any[]): any { return null; }\n    public visitDictionary(_node: any, ..._args: any[]): any { return null; }\n    public visitInterval(_node: any, ..._args: any[]): any { return null; }\n    public visitDuration(_node: any, ..._args: any[]): any { return null; }\n    public visitFixedSizeList(_node: any, ..._args: any[]): any { return null; }\n    public visitMap(_node: any, ..._args: any[]): any { return null; }\n}\n\n/** @ignore */\nfunction getVisitFn<T extends DataType>(visitor: Visitor, node: any, throwIfNotFound = true) {\n    if (typeof node === 'number') {\n        return getVisitFnByTypeId(visitor, node, throwIfNotFound);\n    }\n    if (typeof node === 'string' && (node in Type)) {\n        return getVisitFnByTypeId(visitor, Type[node as keyof typeof Type], throwIfNotFound);\n    }\n    if (node && (node instanceof DataType)) {\n        return getVisitFnByTypeId(visitor, inferDType(node as T), throwIfNotFound);\n    }\n    if (node?.type && (node.type instanceof DataType)) {\n        return getVisitFnByTypeId(visitor, inferDType(node.type as T), throwIfNotFound);\n    }\n    return getVisitFnByTypeId(visitor, Type.NONE, throwIfNotFound);\n}\n\n/** @ignore */\nfunction getVisitFnByTypeId(visitor: Visitor, dtype: Type, throwIfNotFound = true) {\n    let fn: any = null;\n    switch (dtype) {\n        case Type.Null: fn = visitor.visitNull; break;\n        case Type.Bool: fn = visitor.visitBool; break;\n        case Type.Int: fn = visitor.visitInt; break;\n        case Type.Int8: fn = visitor.visitInt8 || visitor.visitInt; break;\n        case Type.Int16: fn = visitor.visitInt16 || visitor.visitInt; break;\n        case Type.Int32: fn = visitor.visitInt32 || visitor.visitInt; break;\n        case Type.Int64: fn = visitor.visitInt64 || visitor.visitInt; break;\n        case Type.Uint8: fn = visitor.visitUint8 || visitor.visitInt; break;\n        case Type.Uint16: fn = visitor.visitUint16 || visitor.visitInt; break;\n        case Type.Uint32: fn = visitor.visitUint32 || visitor.visitInt; break;\n        case Type.Uint64: fn = visitor.visitUint64 || visitor.visitInt; break;\n        case Type.Float: fn = visitor.visitFloat; break;\n        case Type.Float16: fn = visitor.visitFloat16 || visitor.visitFloat; break;\n        case Type.Float32: fn = visitor.visitFloat32 || visitor.visitFloat; break;\n        case Type.Float64: fn = visitor.visitFloat64 || visitor.visitFloat; break;\n        case Type.Utf8: fn = visitor.visitUtf8; break;\n        case Type.LargeUtf8: fn = visitor.visitLargeUtf8; break;\n        case Type.Binary: fn = visitor.visitBinary; break;\n        case Type.LargeBinary: fn = visitor.visitLargeBinary; break;\n        case Type.FixedSizeBinary: fn = visitor.visitFixedSizeBinary; break;\n        case Type.Date: fn = visitor.visitDate; break;\n        case Type.DateDay: fn = visitor.visitDateDay || visitor.visitDate; break;\n        case Type.DateMillisecond: fn = visitor.visitDateMillisecond || visitor.visitDate; break;\n        case Type.Timestamp: fn = visitor.visitTimestamp; break;\n        case Type.TimestampSecond: fn = visitor.visitTimestampSecond || visitor.visitTimestamp; break;\n        case Type.TimestampMillisecond: fn = visitor.visitTimestampMillisecond || visitor.visitTimestamp; break;\n        case Type.TimestampMicrosecond: fn = visitor.visitTimestampMicrosecond || visitor.visitTimestamp; break;\n        case Type.TimestampNanosecond: fn = visitor.visitTimestampNanosecond || visitor.visitTimestamp; break;\n        case Type.Time: fn = visitor.visitTime; break;\n        case Type.TimeSecond: fn = visitor.visitTimeSecond || visitor.visitTime; break;\n        case Type.TimeMillisecond: fn = visitor.visitTimeMillisecond || visitor.visitTime; break;\n        case Type.TimeMicrosecond: fn = visitor.visitTimeMicrosecond || visitor.visitTime; break;\n        case Type.TimeNanosecond: fn = visitor.visitTimeNanosecond || visitor.visitTime; break;\n        case Type.Decimal: fn = visitor.visitDecimal; break;\n        case Type.List: fn = visitor.visitList; break;\n        case Type.Struct: fn = visitor.visitStruct; break;\n        case Type.Union: fn = visitor.visitUnion; break;\n        case Type.DenseUnion: fn = visitor.visitDenseUnion || visitor.visitUnion; break;\n        case Type.SparseUnion: fn = visitor.visitSparseUnion || visitor.visitUnion; break;\n        case Type.Dictionary: fn = visitor.visitDictionary; break;\n        case Type.Interval: fn = visitor.visitInterval; break;\n        case Type.IntervalDayTime: fn = visitor.visitIntervalDayTime || visitor.visitInterval; break;\n        case Type.IntervalYearMonth: fn = visitor.visitIntervalYearMonth || visitor.visitInterval; break;\n        case Type.IntervalMonthDayNano: fn = visitor.visitIntervalMonthDayNano || visitor.visitInterval; break;\n        case Type.Duration: fn = visitor.visitDuration; break;\n        case Type.DurationSecond: fn = visitor.visitDurationSecond || visitor.visitDuration; break;\n        case Type.DurationMillisecond: fn = visitor.visitDurationMillisecond || visitor.visitDuration; break;\n        case Type.DurationMicrosecond: fn = visitor.visitDurationMicrosecond || visitor.visitDuration; break;\n        case Type.DurationNanosecond: fn = visitor.visitDurationNanosecond || visitor.visitDuration; break;\n        case Type.FixedSizeList: fn = visitor.visitFixedSizeList; break;\n        case Type.Map: fn = visitor.visitMap; break;\n    }\n    if (typeof fn === 'function') return fn;\n    if (!throwIfNotFound) return () => null;\n    throw new Error(`Unrecognized type '${Type[dtype]}'`);\n}\n\n/** @ignore */\nfunction inferDType<T extends DataType>(type: T): Type {\n    switch (type.typeId) {\n        case Type.Null: return Type.Null;\n        case Type.Int: {\n            const { bitWidth, isSigned } = (type as any as Int);\n            switch (bitWidth) {\n                case 8: return isSigned ? Type.Int8 : Type.Uint8;\n                case 16: return isSigned ? Type.Int16 : Type.Uint16;\n                case 32: return isSigned ? Type.Int32 : Type.Uint32;\n                case 64: return isSigned ? Type.Int64 : Type.Uint64;\n            }\n            // @ts-ignore\n            return Type.Int;\n        }\n        case Type.Float:\n            switch ((type as any as Float).precision) {\n                case Precision.HALF: return Type.Float16;\n                case Precision.SINGLE: return Type.Float32;\n                case Precision.DOUBLE: return Type.Float64;\n            }\n            // @ts-ignore\n            return Type.Float;\n        case Type.Binary: return Type.Binary;\n        case Type.LargeBinary: return Type.LargeBinary;\n        case Type.Utf8: return Type.Utf8;\n        case Type.LargeUtf8: return Type.LargeUtf8;\n        case Type.Bool: return Type.Bool;\n        case Type.Decimal: return Type.Decimal;\n        case Type.Time:\n            switch ((type as any as Time).unit) {\n                case TimeUnit.SECOND: return Type.TimeSecond;\n                case TimeUnit.MILLISECOND: return Type.TimeMillisecond;\n                case TimeUnit.MICROSECOND: return Type.TimeMicrosecond;\n                case TimeUnit.NANOSECOND: return Type.TimeNanosecond;\n            }\n            // @ts-ignore\n            return Type.Time;\n        case Type.Timestamp:\n            switch ((type as any as Timestamp).unit) {\n                case TimeUnit.SECOND: return Type.TimestampSecond;\n                case TimeUnit.MILLISECOND: return Type.TimestampMillisecond;\n                case TimeUnit.MICROSECOND: return Type.TimestampMicrosecond;\n                case TimeUnit.NANOSECOND: return Type.TimestampNanosecond;\n            }\n            // @ts-ignore\n            return Type.Timestamp;\n        case Type.Date:\n            switch ((type as any as Date_).unit) {\n                case DateUnit.DAY: return Type.DateDay;\n                case DateUnit.MILLISECOND: return Type.DateMillisecond;\n            }\n            // @ts-ignore\n            return Type.Date;\n        case Type.Interval:\n            switch ((type as any as Interval).unit) {\n                case IntervalUnit.DAY_TIME: return Type.IntervalDayTime;\n                case IntervalUnit.YEAR_MONTH: return Type.IntervalYearMonth;\n                case IntervalUnit.MONTH_DAY_NANO: return Type.IntervalMonthDayNano;\n            }\n            // @ts-ignore\n            return Type.Interval;\n        case Type.Duration:\n            switch ((type as any as Duration).unit) {\n                case TimeUnit.SECOND: return Type.DurationSecond;\n                case TimeUnit.MILLISECOND: return Type.DurationMillisecond;\n                case TimeUnit.MICROSECOND: return Type.DurationMicrosecond;\n                case TimeUnit.NANOSECOND: return Type.DurationNanosecond;\n            }\n            // @ts-ignore\n            return Type.Duration;\n        case Type.Map: return Type.Map;\n        case Type.List: return Type.List;\n        case Type.Struct: return Type.Struct;\n        case Type.Union:\n            switch ((type as any as Union).mode) {\n                case UnionMode.Dense: return Type.DenseUnion;\n                case UnionMode.Sparse: return Type.SparseUnion;\n            }\n            // @ts-ignore\n            return Type.Union;\n        case Type.FixedSizeBinary: return Type.FixedSizeBinary;\n        case Type.FixedSizeList: return Type.FixedSizeList;\n        case Type.Dictionary: return Type.Dictionary;\n    }\n    throw new Error(`Unrecognized type '${Type[type.typeId]}'`);\n}\n\nexport interface Visitor {\n    visitNull(node: any, ...args: any[]): any;\n    visitBool(node: any, ...args: any[]): any;\n    visitInt(node: any, ...args: any[]): any;\n    visitInt8?(node: any, ...args: any[]): any;\n    visitInt16?(node: any, ...args: any[]): any;\n    visitInt32?(node: any, ...args: any[]): any;\n    visitInt64?(node: any, ...args: any[]): any;\n    visitUint8?(node: any, ...args: any[]): any;\n    visitUint16?(node: any, ...args: any[]): any;\n    visitUint32?(node: any, ...args: any[]): any;\n    visitUint64?(node: any, ...args: any[]): any;\n    visitFloat(node: any, ...args: any[]): any;\n    visitFloat16?(node: any, ...args: any[]): any;\n    visitFloat32?(node: any, ...args: any[]): any;\n    visitFloat64?(node: any, ...args: any[]): any;\n    visitUtf8(node: any, ...args: any[]): any;\n    visitLargeUtf8(node: any, ...args: any[]): any;\n    visitBinary(node: any, ...args: any[]): any;\n    visitLargeBinary(node: any, ...args: any[]): any;\n    visitFixedSizeBinary(node: any, ...args: any[]): any;\n    visitDate(node: any, ...args: any[]): any;\n    visitDateDay?(node: any, ...args: any[]): any;\n    visitDateMillisecond?(node: any, ...args: any[]): any;\n    visitTimestamp(node: any, ...args: any[]): any;\n    visitTimestampSecond?(node: any, ...args: any[]): any;\n    visitTimestampMillisecond?(node: any, ...args: any[]): any;\n    visitTimestampMicrosecond?(node: any, ...args: any[]): any;\n    visitTimestampNanosecond?(node: any, ...args: any[]): any;\n    visitTime(node: any, ...args: any[]): any;\n    visitTimeSecond?(node: any, ...args: any[]): any;\n    visitTimeMillisecond?(node: any, ...args: any[]): any;\n    visitTimeMicrosecond?(node: any, ...args: any[]): any;\n    visitTimeNanosecond?(node: any, ...args: any[]): any;\n    visitDecimal(node: any, ...args: any[]): any;\n    visitList(node: any, ...args: any[]): any;\n    visitStruct(node: any, ...args: any[]): any;\n    visitUnion(node: any, ...args: any[]): any;\n    visitDenseUnion?(node: any, ...args: any[]): any;\n    visitSparseUnion?(node: any, ...args: any[]): any;\n    visitDictionary(node: any, ...args: any[]): any;\n    visitInterval(node: any, ...args: any[]): any;\n    visitIntervalDayTime?(node: any, ...args: any[]): any;\n    visitIntervalYearMonth?(node: any, ...args: any[]): any;\n    visitIntervalMonthDayNano?(node: any, ...args: any[]): any;\n    visitDuration(node: any, ...args: any[]): any;\n    visitDurationSecond(node: any, ...args: any[]): any;\n    visitDurationMillisecond(node: any, ...args: any[]): any;\n    visitDurationMicrosecond(node: any, ...args: any[]): any;\n    visitDurationNanosecond(node: any, ...args: any[]): any;\n    visitFixedSizeList(node: any, ...args: any[]): any;\n    visitMap(node: any, ...args: any[]): any;\n}\n\n// Add these here so they're picked up by the externs creator\n// in the build, and closure-compiler doesn't minify them away\n(Visitor.prototype as any).visitInt8 = null;\n(Visitor.prototype as any).visitInt16 = null;\n(Visitor.prototype as any).visitInt32 = null;\n(Visitor.prototype as any).visitInt64 = null;\n(Visitor.prototype as any).visitUint8 = null;\n(Visitor.prototype as any).visitUint16 = null;\n(Visitor.prototype as any).visitUint32 = null;\n(Visitor.prototype as any).visitUint64 = null;\n(Visitor.prototype as any).visitFloat16 = null;\n(Visitor.prototype as any).visitFloat32 = null;\n(Visitor.prototype as any).visitFloat64 = null;\n(Visitor.prototype as any).visitDateDay = null;\n(Visitor.prototype as any).visitDateMillisecond = null;\n(Visitor.prototype as any).visitTimestampSecond = null;\n(Visitor.prototype as any).visitTimestampMillisecond = null;\n(Visitor.prototype as any).visitTimestampMicrosecond = null;\n(Visitor.prototype as any).visitTimestampNanosecond = null;\n(Visitor.prototype as any).visitTimeSecond = null;\n(Visitor.prototype as any).visitTimeMillisecond = null;\n(Visitor.prototype as any).visitTimeMicrosecond = null;\n(Visitor.prototype as any).visitTimeNanosecond = null;\n(Visitor.prototype as any).visitDenseUnion = null;\n(Visitor.prototype as any).visitSparseUnion = null;\n(Visitor.prototype as any).visitIntervalDayTime = null;\n(Visitor.prototype as any).visitIntervalYearMonth = null;\n(Visitor.prototype as any).visitIntervalMonthDayNano = null;\n(Visitor.prototype as any).visitDuration = null;\n(Visitor.prototype as any).visitDurationSecond = null;\n(Visitor.prototype as any).visitDurationMillisecond = null;\n(Visitor.prototype as any).visitDurationMicrosecond = null;\n(Visitor.prototype as any).visitDurationNanosecond = null;\n", null, null, null, null, null, null, null, "// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements.  See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership.  The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License.  You may obtain a copy of the License at\n//\n//   http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied.  See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Vector } from './vector.js';\nimport { BufferType, Type, UnionMode } from './enum.js';\nimport { DataType, strideForType } from './type.js';\nimport { popcnt_bit_range, truncateBitmap } from './util/bit.js';\n\n// When slicing, we do not know the null count of the sliced range without\n// doing some computation. To avoid doing this eagerly, we set the null count\n// to -1 (any negative number will do). When Vector.nullCount is called the\n// first time, the null count will be computed. See ARROW-33\n/** @ignore */ export type kUnknownNullCount = -1;\n/** @ignore */ export const kUnknownNullCount = -1;\n\n/** @ignore */ export type NullBuffer = Uint8Array | null | undefined;\n/** @ignore */ export type TypeIdsBuffer = Int8Array | ArrayLike<number> | Iterable<number> | undefined;\n/** @ignore */ export type ValueOffsetsBuffer = Int32Array | ArrayLike<number> | Iterable<number> | undefined;\n/** @ignore */ export type LargeValueOffsetsBuffer = BigInt64Array | ArrayLike<bigint> | Iterable<bigint> | undefined;\n/** @ignore */ export type DataBuffer<T extends DataType> = T['TArray'] | ArrayLike<number> | Iterable<number> | undefined;\n\n/** @ignore */\nexport interface Buffers<T extends DataType> {\n    [BufferType.OFFSET]: T['TOffsetArray'];\n    [BufferType.DATA]: T['TArray'];\n    [BufferType.VALIDITY]: Uint8Array;\n    [BufferType.TYPE]: T['TArray'];\n}\n\n/** @ignore */\nexport interface Data<T extends DataType = DataType> {\n    readonly TType: T['TType'];\n    readonly TArray: T['TArray'];\n    readonly TValue: T['TValue'];\n}\n\n/**\n * Data structure underlying {@link Vector}s. Use the convenience method {@link makeData}.\n */\nexport class Data<T extends DataType = DataType> {\n\n    declare public readonly type: T;\n    declare public readonly length: number;\n    declare public readonly offset: number;\n    declare public readonly stride: number;\n    declare public readonly children: Data[];\n\n    /**\n     * The dictionary for this Vector, if any. Only used for Dictionary type.\n     */\n    declare public dictionary?: Vector;\n\n    declare public readonly values: Buffers<T>[BufferType.DATA];\n    declare public readonly typeIds: Buffers<T>[BufferType.TYPE];\n    declare public readonly nullBitmap: Buffers<T>[BufferType.VALIDITY];\n    declare public readonly valueOffsets: Buffers<T>[BufferType.OFFSET];\n\n    public get typeId(): T['TType'] { return this.type.typeId; }\n\n    public get ArrayType(): T['ArrayType'] { return this.type.ArrayType; }\n\n    public get buffers() {\n        return [this.valueOffsets, this.values, this.nullBitmap, this.typeIds] as Buffers<T>;\n    }\n\n    public get nullable(): boolean {\n        if (this._nullCount !== 0) {\n            const { type } = this;\n            if (DataType.isSparseUnion(type)) {\n                return this.children.some((child) => child.nullable);\n            } else if (DataType.isDenseUnion(type)) {\n                return this.children.some((child) => child.nullable);\n            }\n            return this.nullBitmap && this.nullBitmap.byteLength > 0;\n        }\n        return true;\n    }\n\n    public get byteLength(): number {\n        let byteLength = 0;\n        const { valueOffsets, values, nullBitmap, typeIds } = this;\n        valueOffsets && (byteLength += valueOffsets.byteLength);\n        values && (byteLength += values.byteLength);\n        nullBitmap && (byteLength += nullBitmap.byteLength);\n        typeIds && (byteLength += typeIds.byteLength);\n        return this.children.reduce((byteLength, child) => byteLength + child.byteLength, byteLength);\n    }\n\n    protected _nullCount: number | kUnknownNullCount;\n\n    public get nullCount(): number {\n        if (DataType.isUnion(this.type)) {\n            return this.children.reduce((nullCount, child) => nullCount + child.nullCount, 0);\n        }\n        let nullCount = this._nullCount;\n        let nullBitmap: Uint8Array | undefined;\n        if (nullCount <= kUnknownNullCount && (nullBitmap = this.nullBitmap)) {\n            this._nullCount = nullCount = nullBitmap.length === 0 ?\n                // no null bitmap, so all values are valid\n                0 :\n                this.length - popcnt_bit_range(nullBitmap, this.offset, this.offset + this.length);\n        }\n        return nullCount;\n    }\n\n    constructor(type: T, offset: number, length: number, nullCount?: number, buffers?: Partial<Buffers<T>> | Data<T>, children: Data[] = [], dictionary?: Vector) {\n        this.type = type;\n        this.children = children;\n        this.dictionary = dictionary;\n        this.offset = Math.floor(Math.max(offset || 0, 0));\n        this.length = Math.floor(Math.max(length || 0, 0));\n        this._nullCount = Math.floor(Math.max(nullCount || 0, -1));\n        let buffer: Buffers<T>[keyof Buffers<T>];\n        if (buffers instanceof Data) {\n            this.stride = buffers.stride;\n            this.values = buffers.values;\n            this.typeIds = buffers.typeIds;\n            this.nullBitmap = buffers.nullBitmap;\n            this.valueOffsets = buffers.valueOffsets;\n        } else {\n            this.stride = strideForType(type);\n            if (buffers) {\n                (buffer = (buffers as Buffers<T>)[0]) && (this.valueOffsets = buffer);\n                (buffer = (buffers as Buffers<T>)[1]) && (this.values = buffer);\n                (buffer = (buffers as Buffers<T>)[2]) && (this.nullBitmap = buffer);\n                (buffer = (buffers as Buffers<T>)[3]) && (this.typeIds = buffer);\n            }\n        }\n    }\n\n    public getValid(index: number): boolean {\n        const { type } = this;\n        if (DataType.isUnion(type)) {\n            const union = (<unknown>type as Union);\n            const child = this.children[union.typeIdToChildIndex[this.typeIds[index]]];\n            const indexInChild = union.mode === UnionMode.Dense ? this.valueOffsets[index] : index;\n            return child.getValid(indexInChild);\n        }\n        if (this.nullable && this.nullCount > 0) {\n            const pos = this.offset + index;\n            const val = this.nullBitmap[pos >> 3];\n            return (val & (1 << (pos % 8))) !== 0;\n        }\n        return true;\n    }\n\n    public setValid(index: number, value: boolean): boolean {\n        let prev: boolean;\n        const { type } = this;\n        if (DataType.isUnion(type)) {\n            const union = (<unknown>type as Union);\n            const child = this.children[union.typeIdToChildIndex[this.typeIds[index]]];\n            const indexInChild = union.mode === UnionMode.Dense ? this.valueOffsets[index] : index;\n            prev = child.getValid(indexInChild);\n            child.setValid(indexInChild, value);\n        } else {\n            let { nullBitmap } = this;\n            const { offset, length } = this;\n            const idx = offset + index;\n            const mask = 1 << (idx % 8);\n            const byteOffset = idx >> 3;\n\n            // If no null bitmap, initialize one on the fly\n            if (!nullBitmap || nullBitmap.byteLength <= byteOffset) {\n                nullBitmap = new Uint8Array((((offset + length) + 63) & ~63) >> 3).fill(255);\n                // if we have a nullBitmap, truncate + slice and set it over the pre-filled 1s\n                if (this.nullCount > 0) {\n                    nullBitmap.set(truncateBitmap(offset, length, this.nullBitmap), 0);\n                    Object.assign(this, { nullBitmap });\n                } else {\n                    Object.assign(this, { nullBitmap, _nullCount: 0 });\n                }\n            }\n\n            const byte = nullBitmap[byteOffset];\n\n            prev = (byte & mask) !== 0;\n            nullBitmap[byteOffset] = value ? (byte | mask) : (byte & ~mask);\n        }\n\n        if (prev !== !!value) {\n            // Update `_nullCount` if the new value is different from the old value.\n            this._nullCount = this.nullCount + (value ? -1 : 1);\n        }\n\n        return value;\n    }\n\n    public clone<R extends DataType = T>(type: R = this.type as any, offset = this.offset, length = this.length, nullCount = this._nullCount, buffers: Buffers<R> = <any>this, children: Data[] = this.children) {\n        return new Data(type, offset, length, nullCount, buffers, children, this.dictionary);\n    }\n\n    public slice(offset: number, length: number): Data<T> {\n        const { stride, typeId, children } = this;\n        // +true === 1, +false === 0, so this means\n        // we keep nullCount at 0 if it's already 0,\n        // otherwise set to the invalidated flag -1\n        const nullCount = +(this._nullCount === 0) - 1;\n        const childStride = typeId === 16 /* FixedSizeList */ ? stride : 1;\n        const buffers = this._sliceBuffers(offset, length, stride, typeId);\n        return this.clone<T>(this.type, this.offset + offset, length, nullCount, buffers,\n            // Don't slice children if we have value offsets (the variable-width types)\n            (children.length === 0 || this.valueOffsets) ? children : this._sliceChildren(children, childStride * offset, childStride * length));\n    }\n\n    public _changeLengthAndBackfillNullBitmap(newLength: number): Data<T> {\n        if (this.typeId === Type.Null) {\n            return this.clone(this.type, 0, newLength, 0);\n        }\n        const { length, nullCount } = this;\n        // start initialized with 0s (nulls), then fill from 0 to length with 1s (not null)\n        const bitmap = new Uint8Array(((newLength + 63) & ~63) >> 3).fill(255, 0, length >> 3);\n        // set all the bits in the last byte (up to bit `length - length % 8`) to 1 (not null)\n        bitmap[length >> 3] = (1 << (length - (length & ~7))) - 1;\n        // if we have a nullBitmap, truncate + slice and set it over the pre-filled 1s\n        if (nullCount > 0) {\n            bitmap.set(truncateBitmap(this.offset, length, this.nullBitmap), 0);\n        }\n        const buffers = this.buffers;\n        buffers[BufferType.VALIDITY] = bitmap;\n        return this.clone(this.type, 0, newLength, nullCount + (newLength - length), buffers);\n    }\n\n    protected _sliceBuffers(offset: number, length: number, stride: number, typeId: T['TType']): Buffers<T> {\n        let arr: any;\n        const { buffers } = this;\n        // If typeIds exist, slice the typeIds buffer\n        (arr = buffers[BufferType.TYPE]) && (buffers[BufferType.TYPE] = arr.subarray(offset, offset + length));\n        // If offsets exist, only slice the offsets buffer\n        (arr = buffers[BufferType.OFFSET]) && (buffers[BufferType.OFFSET] = arr.subarray(offset, offset + length + 1)) ||\n            // Otherwise if no offsets, slice the data buffer. Don't slice the data vector for Booleans, since the offset goes by bits not bytes\n            (arr = buffers[BufferType.DATA]) && (buffers[BufferType.DATA] = typeId === 6 ? arr : arr.subarray(stride * offset, stride * (offset + length)));\n        return buffers;\n    }\n\n    protected _sliceChildren(children: Data[], offset: number, length: number): Data[] {\n        return children.map((child) => child.slice(offset, length));\n    }\n}\n\n(Data.prototype as any).children = Object.freeze([]);\n\nimport {\n    Dictionary,\n    Bool, Null, Utf8, LargeUtf8, Binary, LargeBinary, Decimal, FixedSizeBinary, List, FixedSizeList, Map_, Struct,\n    Float,\n    Int,\n    Date_,\n    Interval,\n    Duration,\n    Time,\n    Timestamp,\n    Union, DenseUnion, SparseUnion,\n} from './type.js';\n\nimport { Visitor } from './visitor.js';\nimport { toArrayBufferView, toBigInt64Array, toInt32Array, toUint8Array } from './util/buffer.js';\n\nclass MakeDataVisitor extends Visitor {\n    public visit<T extends DataType>(props: any): Data<T> {\n        return this.getVisitFn(props['type']).call(this, props);\n    }\n    public visitNull<T extends Null>(props: NullDataProps<T>) {\n        const {\n            ['type']: type,\n            ['offset']: offset = 0,\n            ['length']: length = 0,\n        } = props;\n        return new Data(type, offset, length, length);\n    }\n    public visitBool<T extends Bool>(props: BoolDataProps<T>) {\n        const { ['type']: type, ['offset']: offset = 0 } = props;\n        const nullBitmap = toUint8Array(props['nullBitmap']);\n        const data = toArrayBufferView(type.ArrayType, props['data']);\n        const { ['length']: length = data.length >> 3, ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0, } = props;\n        return new Data(type, offset, length, nullCount, [undefined, data, nullBitmap]);\n    }\n    public visitInt<T extends Int>(props: IntDataProps<T>) {\n        const { ['type']: type, ['offset']: offset = 0 } = props;\n        const nullBitmap = toUint8Array(props['nullBitmap']);\n        const data = toArrayBufferView(type.ArrayType, props['data']);\n        const { ['length']: length = data.length, ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0, } = props;\n        return new Data(type, offset, length, nullCount, [undefined, data, nullBitmap]);\n    }\n    public visitFloat<T extends Float>(props: FloatDataProps<T>) {\n        const { ['type']: type, ['offset']: offset = 0 } = props;\n        const nullBitmap = toUint8Array(props['nullBitmap']);\n        const data = toArrayBufferView(type.ArrayType, props['data']);\n        const { ['length']: length = data.length, ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0, } = props;\n        return new Data(type, offset, length, nullCount, [undefined, data, nullBitmap]);\n    }\n    public visitUtf8<T extends Utf8>(props: Utf8DataProps<T>) {\n        const { ['type']: type, ['offset']: offset = 0 } = props;\n        const data = toUint8Array(props['data']);\n        const nullBitmap = toUint8Array(props['nullBitmap']);\n        const valueOffsets = toInt32Array(props['valueOffsets']);\n        const { ['length']: length = valueOffsets.length - 1, ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0 } = props;\n        return new Data(type, offset, length, nullCount, [valueOffsets, data, nullBitmap]);\n    }\n    public visitLargeUtf8<T extends LargeUtf8>(props: LargeUtf8DataProps<T>) {\n        const { ['type']: type, ['offset']: offset = 0 } = props;\n        const data = toUint8Array(props['data']);\n        const nullBitmap = toUint8Array(props['nullBitmap']);\n        const valueOffsets = toBigInt64Array(props['valueOffsets']);\n        const { ['length']: length = valueOffsets.length - 1, ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0 } = props;\n        return new Data(type, offset, length, nullCount, [valueOffsets, data, nullBitmap]);\n    }\n    public visitBinary<T extends Binary>(props: BinaryDataProps<T>) {\n        const { ['type']: type, ['offset']: offset = 0 } = props;\n        const data = toUint8Array(props['data']);\n        const nullBitmap = toUint8Array(props['nullBitmap']);\n        const valueOffsets = toInt32Array(props['valueOffsets']);\n        const { ['length']: length = valueOffsets.length - 1, ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0 } = props;\n        return new Data(type, offset, length, nullCount, [valueOffsets, data, nullBitmap]);\n    }\n    public visitLargeBinary<T extends LargeBinary>(props: LargeBinaryDataProps<T>) {\n        const { ['type']: type, ['offset']: offset = 0 } = props;\n        const data = toUint8Array(props['data']);\n        const nullBitmap = toUint8Array(props['nullBitmap']);\n        const valueOffsets = toBigInt64Array(props['valueOffsets']);\n        const { ['length']: length = valueOffsets.length - 1, ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0 } = props;\n        return new Data(type, offset, length, nullCount, [valueOffsets, data, nullBitmap]);\n    }\n    public visitFixedSizeBinary<T extends FixedSizeBinary>(props: FixedSizeBinaryDataProps<T>) {\n        const { ['type']: type, ['offset']: offset = 0 } = props;\n        const nullBitmap = toUint8Array(props['nullBitmap']);\n        const data = toArrayBufferView(type.ArrayType, props['data']);\n        const { ['length']: length = data.length / strideForType(type), ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0, } = props;\n        return new Data(type, offset, length, nullCount, [undefined, data, nullBitmap]);\n    }\n    public visitDate<T extends Date_>(props: Date_DataProps<T>) {\n        const { ['type']: type, ['offset']: offset = 0 } = props;\n        const nullBitmap = toUint8Array(props['nullBitmap']);\n        const data = toArrayBufferView(type.ArrayType, props['data']);\n        const { ['length']: length = data.length / strideForType(type), ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0, } = props;\n        return new Data(type, offset, length, nullCount, [undefined, data, nullBitmap]);\n    }\n    public visitTimestamp<T extends Timestamp>(props: TimestampDataProps<T>) {\n        const { ['type']: type, ['offset']: offset = 0 } = props;\n        const nullBitmap = toUint8Array(props['nullBitmap']);\n        const data = toArrayBufferView(type.ArrayType, props['data']);\n        const { ['length']: length = data.length / strideForType(type), ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0, } = props;\n        return new Data(type, offset, length, nullCount, [undefined, data, nullBitmap]);\n    }\n    public visitTime<T extends Time>(props: TimeDataProps<T>) {\n        const { ['type']: type, ['offset']: offset = 0 } = props;\n        const nullBitmap = toUint8Array(props['nullBitmap']);\n        const data = toArrayBufferView(type.ArrayType, props['data']);\n        const { ['length']: length = data.length / strideForType(type), ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0, } = props;\n        return new Data(type, offset, length, nullCount, [undefined, data, nullBitmap]);\n    }\n    public visitDecimal<T extends Decimal>(props: DecimalDataProps<T>) {\n        const { ['type']: type, ['offset']: offset = 0 } = props;\n        const nullBitmap = toUint8Array(props['nullBitmap']);\n        const data = toArrayBufferView(type.ArrayType, props['data']);\n        const { ['length']: length = data.length / strideForType(type), ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0, } = props;\n        return new Data(type, offset, length, nullCount, [undefined, data, nullBitmap]);\n    }\n    public visitList<T extends List>(props: ListDataProps<T>) {\n        const { ['type']: type, ['offset']: offset = 0, ['child']: child } = props;\n        const nullBitmap = toUint8Array(props['nullBitmap']);\n        const valueOffsets = toInt32Array(props['valueOffsets']);\n        const { ['length']: length = valueOffsets.length - 1, ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0 } = props;\n        return new Data(type, offset, length, nullCount, [valueOffsets, undefined, nullBitmap], [child]);\n    }\n    public visitStruct<T extends Struct>(props: StructDataProps<T>) {\n        const { ['type']: type, ['offset']: offset = 0, ['children']: children = [] } = props;\n        const nullBitmap = toUint8Array(props['nullBitmap']);\n        const {\n            length = children.reduce((len, { length }) => Math.max(len, length), 0),\n            nullCount = props['nullBitmap'] ? -1 : 0\n        } = props;\n        return new Data(type, offset, length, nullCount, [undefined, undefined, nullBitmap], children);\n    }\n    public visitUnion<T extends Union>(props: UnionDataProps<T>) {\n        const { ['type']: type, ['offset']: offset = 0, ['children']: children = [] } = props;\n        const typeIds = toArrayBufferView(type.ArrayType, props['typeIds']);\n        const { ['length']: length = typeIds.length, ['nullCount']: nullCount = -1, } = props;\n        if (DataType.isSparseUnion(type)) {\n            return new Data(type, offset, length, nullCount, [undefined, undefined, undefined, typeIds], children);\n        }\n        const valueOffsets = toInt32Array(props['valueOffsets']);\n        return new Data(type, offset, length, nullCount, [valueOffsets, undefined, undefined, typeIds], children);\n    }\n    public visitDictionary<T extends Dictionary>(props: DictionaryDataProps<T>) {\n        const { ['type']: type, ['offset']: offset = 0 } = props;\n        const nullBitmap = toUint8Array(props['nullBitmap']);\n        const data = toArrayBufferView(type.indices.ArrayType, props['data']);\n        const { ['dictionary']: dictionary = new Vector([new MakeDataVisitor().visit({ type: type.dictionary })]) } = props;\n        const { ['length']: length = data.length, ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0 } = props;\n        return new Data(type, offset, length, nullCount, [undefined, data, nullBitmap], [], dictionary);\n    }\n    public visitInterval<T extends Interval>(props: IntervalDataProps<T>) {\n        const { ['type']: type, ['offset']: offset = 0 } = props;\n        const nullBitmap = toUint8Array(props['nullBitmap']);\n        const data = toArrayBufferView(type.ArrayType, props['data']);\n        const { ['length']: length = data.length / strideForType(type), ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0, } = props;\n        return new Data(type, offset, length, nullCount, [undefined, data, nullBitmap]);\n    }\n    public visitDuration<T extends Duration>(props: DurationDataProps<T>) {\n        const { ['type']: type, ['offset']: offset = 0 } = props;\n        const nullBitmap = toUint8Array(props['nullBitmap']);\n        const data = toArrayBufferView(type.ArrayType, props['data']);\n        const { ['length']: length = data.length, ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0, } = props;\n        return new Data(type, offset, length, nullCount, [undefined, data, nullBitmap]);\n    }\n    public visitFixedSizeList<T extends FixedSizeList>(props: FixedSizeListDataProps<T>) {\n        const { ['type']: type, ['offset']: offset = 0, ['child']: child = new MakeDataVisitor().visit({ type: type.valueType }) } = props;\n        const nullBitmap = toUint8Array(props['nullBitmap']);\n        const { ['length']: length = child.length / strideForType(type), ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0 } = props;\n        return new Data(type, offset, length, nullCount, [undefined, undefined, nullBitmap], [child]);\n    }\n    public visitMap<T extends Map_>(props: Map_DataProps<T>) {\n        const { ['type']: type, ['offset']: offset = 0, ['child']: child = new MakeDataVisitor().visit({ type: type.childType }) } = props;\n        const nullBitmap = toUint8Array(props['nullBitmap']);\n        const valueOffsets = toInt32Array(props['valueOffsets']);\n        const { ['length']: length = valueOffsets.length - 1, ['nullCount']: nullCount = props['nullBitmap'] ? -1 : 0, } = props;\n        return new Data(type, offset, length, nullCount, [valueOffsets, undefined, nullBitmap], [child]);\n    }\n}\n\n/** @ignore */\ninterface DataProps_<T extends DataType> {\n    type: T;\n    offset?: number;\n    length?: number;\n    nullCount?: number;\n    nullBitmap?: NullBuffer;\n}\n\ninterface NullDataProps<T extends Null> { type: T; offset?: number; length?: number }\ninterface IntDataProps<T extends Int> extends DataProps_<T> { data?: DataBuffer<T> }\ninterface DictionaryDataProps<T extends Dictionary> extends DataProps_<T> { data?: DataBuffer<T>; dictionary?: Vector<T['dictionary']> }\ninterface FloatDataProps<T extends Float> extends DataProps_<T> { data?: DataBuffer<T> }\ninterface BoolDataProps<T extends Bool> extends DataProps_<T> { data?: DataBuffer<T> }\ninterface DecimalDataProps<T extends Decimal> extends DataProps_<T> { data?: DataBuffer<T> }\ninterface Date_DataProps<T extends Date_> extends DataProps_<T> { data?: DataBuffer<T> }\ninterface TimeDataProps<T extends Time> extends DataProps_<T> { data?: DataBuffer<T> }\ninterface TimestampDataProps<T extends Timestamp> extends DataProps_<T> { data?: DataBuffer<T> }\ninterface IntervalDataProps<T extends Interval> extends DataProps_<T> { data?: DataBuffer<T> }\ninterface DurationDataProps<T extends Duration> extends DataProps_<T> { data?: DataBuffer<T> }\ninterface FixedSizeBinaryDataProps<T extends FixedSizeBinary> extends DataProps_<T> { data?: DataBuffer<T> }\ninterface BinaryDataProps<T extends Binary> extends DataProps_<T> { valueOffsets: ValueOffsetsBuffer; data?: DataBuffer<T> }\ninterface LargeBinaryDataProps<T extends LargeBinary> extends DataProps_<T> { valueOffsets: LargeValueOffsetsBuffer | ValueOffsetsBuffer; data?: DataBuffer<T> }\ninterface Utf8DataProps<T extends Utf8> extends DataProps_<T> { valueOffsets: ValueOffsetsBuffer; data?: DataBuffer<T> }\ninterface LargeUtf8DataProps<T extends LargeUtf8> extends DataProps_<T> { valueOffsets: LargeValueOffsetsBuffer | ValueOffsetsBuffer; data?: DataBuffer<T> }\ninterface ListDataProps<T extends List> extends DataProps_<T> { valueOffsets: ValueOffsetsBuffer; child: Data<T['valueType']> }\ninterface FixedSizeListDataProps<T extends FixedSizeList> extends DataProps_<T> { child: Data<T['valueType']> }\ninterface StructDataProps<T extends Struct> extends DataProps_<T> { children: Data[] }\ninterface Map_DataProps<T extends Map_> extends DataProps_<T> { valueOffsets: ValueOffsetsBuffer; child: Data }\ninterface SparseUnionDataProps<T extends SparseUnion> extends DataProps_<T> { nullBitmap: never; typeIds: TypeIdsBuffer; children: Data[] }\ninterface DenseUnionDataProps<T extends DenseUnion> extends DataProps_<T> { nullBitmap: never; typeIds: TypeIdsBuffer; children: Data[]; valueOffsets: ValueOffsetsBuffer }\ninterface UnionDataProps<T extends Union> extends DataProps_<T> { typeIds: TypeIdsBuffer; children: Data[]; valueOffsets?: ValueOffsetsBuffer }\n\nexport type DataProps<T extends DataType> = (\n    T extends Null /*            */ ? NullDataProps<T> :\n    T extends Int /*             */ ? IntDataProps<T> :\n    T extends Dictionary /*      */ ? DictionaryDataProps<T> :\n    T extends Float /*           */ ? FloatDataProps<T> :\n    T extends Bool /*            */ ? BoolDataProps<T> :\n    T extends Decimal /*         */ ? DecimalDataProps<T> :\n    T extends Date_ /*           */ ? Date_DataProps<T> :\n    T extends Time /*            */ ? TimeDataProps<T> :\n    T extends Timestamp /*       */ ? TimestampDataProps<T> :\n    T extends Interval /*        */ ? IntervalDataProps<T> :\n    T extends Duration /*        */ ? DurationDataProps<T> :\n    T extends FixedSizeBinary /* */ ? FixedSizeBinaryDataProps<T> :\n    T extends Binary /*          */ ? BinaryDataProps<T> :\n    T extends LargeBinary /*     */ ? LargeBinaryDataProps<T> :\n    T extends Utf8 /*            */ ? Utf8DataProps<T> :\n    T extends LargeUtf8 /*       */ ? LargeUtf8DataProps<T> :\n    T extends List /*            */ ? ListDataProps<T> :\n    T extends FixedSizeList /*   */ ? FixedSizeListDataProps<T> :\n    T extends Struct /*          */ ? StructDataProps<T> :\n    T extends Map_ /*            */ ? Map_DataProps<T> :\n    T extends SparseUnion /*     */ ? SparseUnionDataProps<T> :\n    T extends DenseUnion /*      */ ? DenseUnionDataProps<T> :\n    T extends Union /*           */ ? UnionDataProps<T> :\n /*                                */ DataProps_<T>\n);\n\nconst makeDataVisitor = new MakeDataVisitor();\n\nexport function makeData<T extends Null>(props: NullDataProps<T>): Data<T>;\nexport function makeData<T extends Int>(props: IntDataProps<T>): Data<T>;\nexport function makeData<T extends Dictionary>(props: DictionaryDataProps<T>): Data<T>;\nexport function makeData<T extends Float>(props: FloatDataProps<T>): Data<T>;\nexport function makeData<T extends Bool>(props: BoolDataProps<T>): Data<T>;\nexport function makeData<T extends Decimal>(props: DecimalDataProps<T>): Data<T>;\nexport function makeData<T extends Date_>(props: Date_DataProps<T>): Data<T>;\nexport function makeData<T extends Time>(props: TimeDataProps<T>): Data<T>;\nexport function makeData<T extends Timestamp>(props: TimestampDataProps<T>): Data<T>;\nexport function makeData<T extends Interval>(props: IntervalDataProps<T>): Data<T>;\nexport function makeData<T extends Duration>(props: DurationDataProps<T>): Data<T>;\nexport function makeData<T extends FixedSizeBinary>(props: FixedSizeBinaryDataProps<T>): Data<T>;\nexport function makeData<T extends Binary>(props: BinaryDataProps<T>): Data<T>;\nexport function makeData<T extends LargeBinary>(props: LargeBinaryDataProps<T>): Data<T>;\nexport function makeData<T extends Utf8>(props: Utf8DataProps<T>): Data<T>;\nexport function makeData<T extends LargeUtf8>(props: LargeUtf8DataProps<T>): Data<T>;\nexport function makeData<T extends List>(props: ListDataProps<T>): Data<T>;\nexport function makeData<T extends FixedSizeList>(props: FixedSizeListDataProps<T>): Data<T>;\nexport function makeData<T extends Struct>(props: StructDataProps<T>): Data<T>;\nexport function makeData<T extends Map_>(props: Map_DataProps<T>): Data<T>;\nexport function makeData<T extends SparseUnion>(props: SparseUnionDataProps<T>): Data<T>;\nexport function makeData<T extends DenseUnion>(props: DenseUnionDataProps<T>): Data<T>;\nexport function makeData<T extends Union>(props: UnionDataProps<T>): Data<T>;\nexport function makeData<T extends DataType>(props: DataProps_<T>): Data<T>;\nexport function makeData(props: any) {\n    return makeDataVisitor.visit(props);\n}\n", null, null, null, "// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements.  See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership.  The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License.  You may obtain a copy of the License at\n//\n//   http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied.  See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Type } from './enum.js';\nimport { clampRange, wrapIndex } from './util/vector.js';\nimport { DataType, strideForType } from './type.js';\nimport { Data, makeData, DataProps } from './data.js';\nimport { BigIntArray, TypedArray, TypedArrayDataType } from './interfaces.js';\n\nimport {\n    isChunkedValid,\n    computeChunkOffsets,\n    computeChunkNullable,\n    computeChunkNullCounts,\n    sliceChunks,\n    wrapChunkedCall1,\n    wrapChunkedCall2,\n    wrapChunkedIndexOf,\n} from './util/chunk.js';\n\nimport { instance as getVisitor } from './visitor/get.js';\nimport { instance as setVisitor } from './visitor/set.js';\nimport { instance as indexOfVisitor } from './visitor/indexof.js';\nimport { instance as iteratorVisitor } from './visitor/iterator.js';\n\n// @ts-ignore\nimport type { vectorFromArray } from './factories.js';\n\nexport interface Vector<T extends DataType = any> {\n    ///\n    // Virtual properties for the TypeScript compiler.\n    // These do not exist at runtime.\n    ///\n    readonly TType: T['TType'];\n    readonly TArray: T['TArray'];\n    readonly TValue: T['TValue'];\n\n    /**\n     * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/isConcatSpreadable\n     */\n    [Symbol.isConcatSpreadable]: true;\n}\n\nconst visitorsByTypeId = {} as { [typeId: number]: { get: any; set: any; indexOf: any } };\nconst vectorPrototypesByTypeId = {} as { [typeId: number]: any };\n\n/**\n * Array-like data structure. Use the convenience method {@link makeVector} and {@link vectorFromArray} to create vectors.\n */\nexport class Vector<T extends DataType = any> {\n\n    constructor(input: readonly (Data<T> | Vector<T>)[]) {\n        const data: Data<T>[] = input[0] instanceof Vector\n            ? (input as Vector<T>[]).flatMap(x => x.data)\n            : input as Data<T>[];\n        if (data.length === 0 || data.some((x) => !(x instanceof Data))) {\n            throw new TypeError('Vector constructor expects an Array of Data instances.');\n        }\n        const type = data[0]?.type;\n        switch (data.length) {\n            case 0: this._offsets = [0]; break;\n            case 1: {\n                // special case for unchunked vectors\n                const { get, set, indexOf } = visitorsByTypeId[type.typeId];\n                const unchunkedData = data[0];\n\n                this.isValid = (index: number) => isChunkedValid(unchunkedData, index);\n                this.get = (index: number) => get(unchunkedData, index);\n                this.set = (index: number, value: T) => set(unchunkedData, index, value);\n                this.indexOf = (index: number) => indexOf(unchunkedData, index);\n                this._offsets = [0, unchunkedData.length];\n                break;\n            }\n            default:\n                Object.setPrototypeOf(this, vectorPrototypesByTypeId[type.typeId]);\n                this._offsets = computeChunkOffsets(data);\n                break;\n        }\n        this.data = data;\n        this.type = type;\n        this.stride = strideForType(type);\n        this.numChildren = type.children?.length ?? 0;\n        this.length = this._offsets.at(-1)!;\n    }\n\n    declare protected _offsets: number[] | Uint32Array;\n\n    /**\n     * The {@link DataType `DataType`} of this Vector.\n     */\n    public declare readonly type: T;\n\n    /**\n     * The primitive {@link Data `Data`} instances for this Vector's elements.\n     */\n    public declare readonly data: ReadonlyArray<Data<T>>;\n\n    /**\n     * The number of elements in this Vector.\n     */\n    public declare readonly length: number;\n\n    /**\n     * The number of primitive values per Vector element.\n     */\n    public declare readonly stride: number;\n\n    /**\n     * The number of child Vectors if this Vector is a nested dtype.\n     */\n    public declare readonly numChildren: number;\n\n    /**\n     * The aggregate size (in bytes) of this Vector's buffers and/or child Vectors.\n     */\n    public get byteLength() {\n        return this.data.reduce((byteLength, data) => byteLength + data.byteLength, 0);\n    }\n\n    /**\n     * Whether this Vector's elements can contain null values.\n     */\n    public get nullable() {\n        return computeChunkNullable(this.data);\n    }\n\n    /**\n     * The number of null elements in this Vector.\n     */\n    public get nullCount() {\n        return computeChunkNullCounts(this.data);\n    }\n\n    /**\n     * The Array or TypedArray constructor used for the JS representation\n     *  of the element's values in {@link Vector.prototype.toArray `toArray()`}.\n     */\n    public get ArrayType(): T['ArrayType'] { return this.type.ArrayType; }\n\n    /**\n     * The name that should be printed when the Vector is logged in a message.\n     */\n    public get [Symbol.toStringTag]() {\n        return `${this.VectorName}<${this.type[Symbol.toStringTag]}>`;\n    }\n\n    /**\n     * The name of this Vector.\n     */\n    public get VectorName() { return `${Type[this.type.typeId]}Vector`; }\n\n    /**\n     * Check whether an element is null.\n     * @param index The index at which to read the validity bitmap.\n     */\n    // @ts-ignore\n    public isValid(index: number): boolean { return false; }\n\n    /**\n     * Get an element value by position.\n     * @param index The index of the element to read.\n     */\n    // @ts-ignore\n    public get(index: number): T['TValue'] | null { return null; }\n\n    /**\n     * Get an element value by position.\n     * @param index The index of the element to read. A negative index will count back from the last element.\n     */\n    public at(index: number): T['TValue'] | null {\n        return this.get(wrapIndex(index, this.length));\n    }\n\n    /**\n     * Set an element value by position.\n     * @param index The index of the element to write.\n     * @param value The value to set.\n     */\n    // @ts-ignore\n    public set(index: number, value: T['TValue'] | null): void { return; }\n\n    /**\n     * Retrieve the index of the first occurrence of a value in an Vector.\n     * @param element The value to locate in the Vector.\n     * @param offset The index at which to begin the search. If offset is omitted, the search starts at index 0.\n     */\n    // @ts-ignore\n    public indexOf(element: T['TValue'], offset?: number): number { return -1; }\n\n    public includes(element: T['TValue'], offset?: number): boolean {\n        // eslint-disable-next-line unicorn/prefer-includes\n        return this.indexOf(element, offset) > -1;\n    }\n\n    /**\n     * Iterator for the Vector's elements.\n     */\n    public [Symbol.iterator](): IterableIterator<T['TValue'] | null> {\n        return iteratorVisitor.visit(this);\n    }\n\n    /**\n     * Combines two or more Vectors of the same type.\n     * @param others Additional Vectors to add to the end of this Vector.\n     */\n    public concat(...others: Vector<T>[]): Vector<T> {\n        return new Vector(this.data.concat(others.flatMap((x) => x.data).flat(Number.POSITIVE_INFINITY)));\n    }\n\n    /**\n     * Return a zero-copy sub-section of this Vector.\n     * @param start The beginning of the specified portion of the Vector.\n     * @param end The end of the specified portion of the Vector. This is exclusive of the element at the index 'end'.\n     */\n    public slice(begin?: number, end?: number): Vector<T> {\n        return new Vector(clampRange(this, begin, end, ({ data, _offsets }, begin, end) =>\n            sliceChunks(data, _offsets, begin, end)\n        ));\n    }\n\n    public toJSON() { return [...this]; }\n\n    /**\n     * Return a JavaScript Array or TypedArray of the Vector's elements.\n     *\n     * @note If this Vector contains a single Data chunk and the Vector's type is a\n     *  primitive numeric type corresponding to one of the JavaScript TypedArrays, this\n     *  method returns a zero-copy slice of the underlying TypedArray values. If there's\n     *  more than one chunk, the resulting TypedArray will be a copy of the data from each\n     *  chunk's underlying TypedArray values.\n     *\n     * @returns An Array or TypedArray of the Vector's elements, based on the Vector's DataType.\n     */\n    public toArray(): T['TArray'] {\n        const { type, data, length, stride, ArrayType } = this;\n        // Fast case, return subarray if possible\n        switch (type.typeId) {\n            case Type.Int:\n            case Type.Float:\n            case Type.Decimal:\n            case Type.Time:\n            case Type.Timestamp:\n                switch (data.length) {\n                    case 0: return new ArrayType();\n                    case 1: return data[0].values.subarray(0, length * stride);\n                    default: return data.reduce((memo, { values, length: chunk_length }) => {\n                        memo.array.set(values.subarray(0, chunk_length * stride), memo.offset);\n                        memo.offset += chunk_length * stride;\n                        return memo;\n                    }, { array: new ArrayType(length * stride), offset: 0 }).array;\n                }\n        }\n        // Otherwise if not primitive, slow copy\n        return [...this] as T['TArray'];\n    }\n\n    /**\n     * Returns a string representation of the Vector.\n     *\n     * @returns A string representation of the Vector.\n     */\n    public toString() {\n        return `[${[...this].join(',')}]`;\n    }\n\n    /**\n     * Returns a child Vector by name, or null if this Vector has no child with the given name.\n     * @param name The name of the child to retrieve.\n     */\n    public getChild<R extends keyof T['TChildren']>(name: R) {\n        return this.getChildAt(this.type.children?.findIndex((f) => f.name === name));\n    }\n\n    /**\n     * Returns a child Vector by index, or null if this Vector has no child at the supplied index.\n     * @param index The index of the child to retrieve.\n     */\n    public getChildAt<R extends DataType = any>(index: number): Vector<R> | null {\n        if (index > -1 && index < this.numChildren) {\n            return new Vector(this.data.map(({ children }) => children[index] as Data<R>));\n        }\n        return null;\n    }\n\n    public get isMemoized(): boolean {\n        if (DataType.isDictionary(this.type)) {\n            return this.data[0].dictionary!.isMemoized;\n        }\n        return false;\n    }\n\n    /**\n     * Adds memoization to the Vector's {@link get} method. For dictionary\n     * vectors, this method return a vector that memoizes only the dictionary\n     * values.\n     *\n     * Memoization is very useful when decoding a value is expensive such as\n     * Utf8. The memoization creates a cache of the size of the Vector and\n     * therefore increases memory usage.\n     *\n     * @returns A new vector that memoizes calls to {@link get}.\n     */\n    public memoize(): MemoizedVector<T> {\n        if (DataType.isDictionary(this.type)) {\n            const dictionary = new MemoizedVector(this.data[0].dictionary!);\n            const newData = this.data.map((data) => {\n                const cloned = data.clone();\n                cloned.dictionary = dictionary;\n                return cloned;\n            });\n            return new Vector(newData);\n        }\n        return new MemoizedVector(this);\n    }\n\n    /**\n     * Returns a vector without memoization of the {@link get} method. If this\n     * vector is not memoized, this method returns this vector.\n     *\n     * @returns A new vector without memoization.\n     */\n    public unmemoize(): Vector<T> {\n        if (DataType.isDictionary(this.type) && this.isMemoized) {\n            const dictionary = this.data[0].dictionary!.unmemoize();\n            const newData = this.data.map((data) => {\n                const newData = data.clone();\n                newData.dictionary = dictionary;\n                return newData;\n            });\n            return new Vector(newData);\n        }\n        return this;\n    }\n\n    // Initialize this static property via an IIFE so bundlers don't tree-shake\n    // out this logic, but also so we're still compliant with `\"sideEffects\": false`\n    protected static [Symbol.toStringTag] = ((proto: Vector) => {\n        (proto as any).type = DataType.prototype;\n        (proto as any).data = [];\n        (proto as any).length = 0;\n        (proto as any).stride = 1;\n        (proto as any).numChildren = 0;\n        (proto as any)._offsets = new Uint32Array([0]);\n        (proto as any)[Symbol.isConcatSpreadable] = true;\n\n        const typeIds: Type[] = Object.keys(Type)\n            .map((T: any) => Type[T] as any)\n            .filter((T: any) => typeof T === 'number' && T !== Type.NONE);\n\n        for (const typeId of typeIds) {\n            const get = getVisitor.getVisitFnByTypeId(typeId);\n            const set = setVisitor.getVisitFnByTypeId(typeId);\n            const indexOf = indexOfVisitor.getVisitFnByTypeId(typeId);\n\n            visitorsByTypeId[typeId] = { get, set, indexOf };\n            vectorPrototypesByTypeId[typeId] = Object.create(proto, {\n                ['isValid']: { value: wrapChunkedCall1(isChunkedValid) },\n                ['get']: { value: wrapChunkedCall1(getVisitor.getVisitFnByTypeId(typeId)) },\n                ['set']: { value: wrapChunkedCall2(setVisitor.getVisitFnByTypeId(typeId)) },\n                ['indexOf']: { value: wrapChunkedIndexOf(indexOfVisitor.getVisitFnByTypeId(typeId)) },\n            });\n        }\n\n        return 'Vector';\n    })(Vector.prototype);\n}\n\nclass MemoizedVector<T extends DataType = any> extends Vector<T> {\n\n    public constructor(vector: Vector<T>) {\n        super(vector.data);\n\n        const get = this.get;\n        const set = this.set;\n        const slice = this.slice;\n\n        const cache = new Array<T['TValue'] | null>(this.length);\n\n        Object.defineProperty(this, 'get', {\n            value(index: number) {\n                const cachedValue = cache[index];\n                if (cachedValue !== undefined) {\n                    return cachedValue;\n                }\n                const value = get.call(this, index);\n                cache[index] = value;\n                return value;\n            }\n        });\n\n        Object.defineProperty(this, 'set', {\n            value(index: number, value: T['TValue'] | null) {\n                set.call(this, index, value);\n                cache[index] = value;\n            }\n        });\n\n        Object.defineProperty(this, 'slice', {\n            value: (begin?: number, end?: number) => new MemoizedVector(slice.call(this, begin, end))\n        });\n\n        Object.defineProperty(this, 'isMemoized', { value: true });\n\n        Object.defineProperty(this, 'unmemoize', {\n            value: () => new Vector(this.data)\n        });\n\n        Object.defineProperty(this, 'memoize', {\n            value: () => this\n        });\n    }\n}\n\nimport * as dtypes from './type.js';\n\n/**\n * Creates a Vector without data copies.\n *\n * @example\n * ```ts\n * const vector = makeVector(new Int32Array([1, 2, 3]));\n * ```\n */\nexport function makeVector<T extends TypedArray | BigIntArray>(data: T | readonly T[]): Vector<TypedArrayDataType<T>>;\nexport function makeVector<T extends DataView>(data: T | readonly T[]): Vector<dtypes.Int8>;\nexport function makeVector<T extends DataType>(data: Data<T> | readonly Data<T>[]): Vector<T>;\nexport function makeVector<T extends DataType>(data: Vector<T> | readonly Vector<T>[]): Vector<T>;\nexport function makeVector<T extends DataType>(data: DataProps<T> | readonly DataProps<T>[]): Vector<T>;\n\nexport function makeVector(init: any) {\n    if (init) {\n        if (init instanceof Data) { return new Vector([init]); }\n        if (init instanceof Vector) { return new Vector(init.data); }\n        if (init.type instanceof DataType) { return new Vector([makeData(init)]); }\n        if (Array.isArray(init)) {\n            return new Vector(init.flatMap(v => unwrapInputs(v)));\n        }\n        if (ArrayBuffer.isView(init)) {\n            if (init instanceof DataView) {\n                init = new Uint8Array(init.buffer);\n            }\n            const props = { offset: 0, length: init.length, nullCount: -1, data: init };\n            if (init instanceof Int8Array) { return new Vector([makeData({ ...props, type: new dtypes.Int8 })]); }\n            if (init instanceof Int16Array) { return new Vector([makeData({ ...props, type: new dtypes.Int16 })]); }\n            if (init instanceof Int32Array) { return new Vector([makeData({ ...props, type: new dtypes.Int32 })]); }\n            if (init instanceof BigInt64Array) { return new Vector([makeData({ ...props, type: new dtypes.Int64 })]); }\n            if (init instanceof Uint8Array || init instanceof Uint8ClampedArray) { return new Vector([makeData({ ...props, type: new dtypes.Uint8 })]); }\n            if (init instanceof Uint16Array) { return new Vector([makeData({ ...props, type: new dtypes.Uint16 })]); }\n            if (init instanceof Uint32Array) { return new Vector([makeData({ ...props, type: new dtypes.Uint32 })]); }\n            if (init instanceof BigUint64Array) { return new Vector([makeData({ ...props, type: new dtypes.Uint64 })]); }\n            if (init instanceof Float32Array) { return new Vector([makeData({ ...props, type: new dtypes.Float32 })]); }\n            if (init instanceof Float64Array) { return new Vector([makeData({ ...props, type: new dtypes.Float64 })]); }\n            throw new Error('Unrecognized input');\n        }\n    }\n    throw new Error('Unrecognized input');\n}\n\nfunction unwrapInputs(x: any) {\n    return x instanceof Data ? [x] : (x instanceof Vector ? x.data : makeVector(x).data);\n}\n", null, null, "// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements.  See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership.  The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License.  You may obtain a copy of the License at\n//\n//   http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied.  See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Vector } from './vector.js';\nimport { Data, makeData } from './data.js';\nimport { MapRow, kKeys } from './row/map.js';\nimport {\n    DataType, strideForType,\n    Float, Int, Decimal, FixedSizeBinary,\n    Date_, Time, Timestamp, Interval, Duration,\n    Utf8, LargeUtf8, Binary, LargeBinary, List, Map_,\n} from './type.js';\nimport { createIsValidFunction } from './builder/valid.js';\nimport { BufferBuilder, BitmapBufferBuilder, DataBufferBuilder, OffsetsBufferBuilder } from './builder/buffer.js';\n\nimport type { BuilderDuplexOptions } from './io/node/builder.js';\nimport type { BuilderTransform, BuilderTransformOptions } from './io/whatwg/builder.js';\n\nimport type { Duplex } from 'node:stream';\n\n/**\n * A set of options required to create a `Builder` instance for a given `DataType`.\n * @see {@link Builder}\n */\nexport interface BuilderOptions<T extends DataType = any, TNull = any> {\n    type: T;\n    nullValues?: TNull[] | ReadonlyArray<TNull> | null;\n    children?: { [key: string]: BuilderOptions } | BuilderOptions[];\n}\n\n/**\n * An abstract base class for types that construct Arrow Vectors from arbitrary JavaScript values.\n *\n * A `Builder` is responsible for writing arbitrary JavaScript values\n * to ArrayBuffers and/or child Builders according to the Arrow specification\n * for each DataType, creating or resizing the underlying ArrayBuffers as necessary.\n *\n * The `Builder` for each Arrow `DataType` handles converting and appending\n * values for a given `DataType`. The high-level {@link makeBuilder `makeBuilder()`} convenience\n * method creates the specific `Builder` subclass for the supplied `DataType`.\n *\n * Once created, `Builder` instances support both appending values to the end\n * of the `Builder`, and random-access writes to specific indices\n * (`Builder.prototype.append(value)` is a convenience method for\n * `builder.set(builder.length, value)`). Appending or setting values beyond the\n * Builder's current length may cause the builder to grow its underlying buffers\n * or child Builders (if applicable) to accommodate the new values.\n *\n * After enough values have been written to a `Builder`, `Builder.prototype.flush()`\n * will commit the values to the underlying ArrayBuffers (or child Builders). The\n * internal Builder state will be reset, and an instance of `Data<T>` is returned.\n * Alternatively, `Builder.prototype.toVector()` will flush the `Builder` and return\n * an instance of `Vector<T>` instead.\n *\n * When there are no more values to write, use `Builder.prototype.finish()` to\n * finalize the `Builder`. This does not reset the internal state, so it is\n * necessary to call `Builder.prototype.flush()` or `toVector()` one last time\n * if there are still values queued to be flushed.\n *\n * Note: calling `Builder.prototype.finish()` is required when using a `DictionaryBuilder`,\n * because this is when it flushes the values that have been enqueued in its internal\n * dictionary's `Builder`, and creates the `dictionaryVector` for the `Dictionary` `DataType`.\n *\n * @example\n * ```ts\n * import { makeBuilder, Utf8 } from 'apache-arrow';\n *\n * const utf8Builder = makeBuilder({\n *     type: new Utf8(),\n *     nullValues: [null, 'n/a']\n * });\n *\n * utf8Builder\n *     .append('hello')\n *     .append('n/a')\n *     .append('world')\n *     .append(null);\n *\n * const utf8Vector = utf8Builder.finish().toVector();\n *\n * console.log(utf8Vector.toJSON());\n * // > [\"hello\", null, \"world\", null]\n * ```\n *\n * @typeparam T The `DataType` of this `Builder`.\n * @typeparam TNull The type(s) of values which will be considered null-value sentinels.\n */\nexport abstract class Builder<T extends DataType = any, TNull = any> {\n\n    /** @nocollapse */\n    // @ts-ignore\n    public static throughNode<T extends DataType = any, TNull = any>(options: BuilderDuplexOptions<T, TNull>): Duplex {\n        throw new Error(`\"throughNode\" not available in this environment`);\n    }\n    /** @nocollapse */\n    // @ts-ignore\n    public static throughDOM<T extends DataType = any, TNull = any>(options: BuilderTransformOptions<T, TNull>): BuilderTransform<T, TNull> {\n        throw new Error(`\"throughDOM\" not available in this environment`);\n    }\n\n    /**\n     * Construct a builder with the given Arrow DataType with optional null values,\n     * which will be interpreted as \"null\" when set or appended to the `Builder`.\n     * @param {{ type: T, nullValues?: any[] }} options A `BuilderOptions` object used to create this `Builder`.\n     */\n    constructor({ 'type': type, 'nullValues': nulls }: BuilderOptions<T, TNull>) {\n        this.type = type;\n        this.children = [];\n        this.nullValues = nulls;\n        this.stride = strideForType(type);\n        this._nulls = new BitmapBufferBuilder();\n        if (nulls && nulls.length > 0) {\n            this._isValid = createIsValidFunction(nulls);\n        }\n    }\n\n    /**\n     * The Builder's `DataType` instance.\n     * @readonly\n     */\n    public type: T;\n    /**\n     * The number of values written to the `Builder` that haven't been flushed yet.\n     * @readonly\n     */\n    public length = 0;\n    /**\n     * A boolean indicating whether `Builder.prototype.finish()` has been called on this `Builder`.\n     * @readonly\n     */\n    public finished = false;\n    /**\n     * The number of elements in the underlying values TypedArray that\n     * represent a single logical element, determined by this Builder's\n     * `DataType`. This is 1 for most types, but is larger when the `DataType`\n     * is `Int64`, `Uint64`, `Decimal`, `DateMillisecond`, certain variants of\n     * `Interval`, `Time`, or `Timestamp`, `FixedSizeBinary`, and `FixedSizeList`.\n     * @readonly\n     */\n    public readonly stride: number;\n    public readonly children: Builder[];\n    /**\n     * The list of null-value sentinels for this `Builder`. When one of these values\n     * is written to the `Builder` (either via `Builder.prototype.set()` or `Builder.prototype.append()`),\n     * a 1-bit is written to this Builder's underlying null BitmapBufferBuilder.\n     * @readonly\n     */\n    public readonly nullValues?: TNull[] | ReadonlyArray<TNull> | null;\n\n    /**\n     * Flush the `Builder` and return a `Vector<T>`.\n     * @returns {Vector<T>} A `Vector<T>` of the flushed values.\n     */\n    public toVector() { return new Vector([this.flush()]); }\n\n    public get ArrayType() { return this.type.ArrayType; }\n    public get nullCount() { return this._nulls.numInvalid; }\n    public get numChildren() { return this.children.length; }\n\n    /**\n     * @returns The aggregate length (in bytes) of the values that have been written.\n     */\n    public get byteLength(): number {\n        let size = 0;\n        const { _offsets, _values, _nulls, _typeIds, children } = this;\n        _offsets && (size += _offsets.byteLength);\n        _values && (size += _values.byteLength);\n        _nulls && (size += _nulls.byteLength);\n        _typeIds && (size += _typeIds.byteLength);\n        return children.reduce((size, child) => size + child.byteLength, size);\n    }\n\n    /**\n     * @returns The aggregate number of rows that have been reserved to write new values.\n     */\n    public get reservedLength(): number {\n        return this._nulls.reservedLength;\n    }\n\n    /**\n     * @returns The aggregate length (in bytes) that has been reserved to write new values.\n     */\n    public get reservedByteLength(): number {\n        let size = 0;\n        this._offsets && (size += this._offsets.reservedByteLength);\n        this._values && (size += this._values.reservedByteLength);\n        this._nulls && (size += this._nulls.reservedByteLength);\n        this._typeIds && (size += this._typeIds.reservedByteLength);\n        return this.children.reduce((size, child) => size + child.reservedByteLength, size);\n    }\n\n    declare protected _offsets: DataBufferBuilder<T['TOffsetArray']>;\n    public get valueOffsets() { return this._offsets ? this._offsets.buffer : null; }\n\n    declare protected _values: BufferBuilder<T['TArray']>;\n    public get values() { return this._values ? this._values.buffer : null; }\n\n    declare protected _nulls: BitmapBufferBuilder;\n    public get nullBitmap() { return this._nulls ? this._nulls.buffer : null; }\n\n    declare protected _typeIds: DataBufferBuilder<Int8Array>;\n    public get typeIds() { return this._typeIds ? this._typeIds.buffer : null; }\n\n    declare protected _isValid: (value: T['TValue'] | TNull) => boolean;\n    declare protected _setValue: (inst: Builder<T>, index: number, value: T['TValue']) => void;\n\n    /**\n     * Appends a value (or null) to this `Builder`.\n     * This is equivalent to `builder.set(builder.length, value)`.\n     * @param {T['TValue'] | TNull } value The value to append.\n     */\n    public append(value: T['TValue'] | TNull) { return this.set(this.length, value); }\n\n    /**\n     * Validates whether a value is valid (true), or null (false)\n     * @param {T['TValue'] | TNull } value The value to compare against null the value representations\n     */\n    public isValid(value: T['TValue'] | TNull): boolean { return this._isValid(value); }\n\n    /**\n     * Write a value (or null-value sentinel) at the supplied index.\n     * If the value matches one of the null-value representations, a 1-bit is\n     * written to the null `BitmapBufferBuilder`. Otherwise, a 0 is written to\n     * the null `BitmapBufferBuilder`, and the value is passed to\n     * `Builder.prototype.setValue()`.\n     * @param {number} index The index of the value to write.\n     * @param {T['TValue'] | TNull } value The value to write at the supplied index.\n     * @returns {this} The updated `Builder` instance.\n     */\n    public set(index: number, value: T['TValue'] | TNull) {\n        if (this.setValid(index, this.isValid(value))) {\n            this.setValue(index, value);\n        }\n        return this;\n    }\n\n    /**\n     * Write a value to the underlying buffers at the supplied index, bypassing\n     * the null-value check. This is a low-level method that\n     * @param {number} index\n     * @param {T['TValue'] | TNull } value\n     */\n    public setValue(index: number, value: T['TValue']) { this._setValue(this, index, value); }\n    public setValid(index: number, valid: boolean) {\n        this.length = this._nulls.set(index, +valid).length;\n        return valid;\n    }\n\n    // @ts-ignore\n    public addChild(child: Builder, name = `${this.numChildren}`) {\n        throw new Error(`Cannot append children to non-nested type \"${this.type}\"`);\n    }\n\n    /**\n     * Retrieve the child `Builder` at the supplied `index`, or null if no child\n     * exists at that index.\n     * @param {number} index The index of the child `Builder` to retrieve.\n     * @returns {Builder | null} The child Builder at the supplied index or null.\n     */\n    public getChildAt<R extends DataType = any>(index: number): Builder<R> | null {\n        return this.children[index] || null;\n    }\n\n    /**\n     * Commit all the values that have been written to their underlying\n     * ArrayBuffers, including any child Builders if applicable, and reset\n     * the internal `Builder` state.\n     * @returns A `Data<T>` of the buffers and children representing the values written.\n     */\n    public flush(): Data<T> {\n        let data: BufferBuilder<T['TArray']> | undefined;\n        let typeIds: Int8Array;\n        let nullBitmap: Uint8Array | undefined;\n        let valueOffsets: T['TOffsetArray'];\n        const { type, length, nullCount, _typeIds, _offsets, _values, _nulls } = this;\n\n        if (typeIds = _typeIds?.flush(length)) { // Unions, DenseUnions\n            valueOffsets = _offsets?.flush(length);\n        } else if (valueOffsets = _offsets?.flush(length)) { // Variable-width primitives (Binary, LargeBinary, Utf8, LargeUtf8), and Lists\n            data = _values?.flush(_offsets.last());\n        } else { // Fixed-width primitives (Int, Float, Decimal, Time, Timestamp, Duration and Interval)\n            data = _values?.flush(length);\n        }\n\n        if (nullCount > 0) {\n            nullBitmap = _nulls?.flush(length);\n        }\n\n        const children = this.children.map((child) => child.flush());\n\n        this.clear();\n\n        return makeData(<any>{\n            type, length, nullCount,\n            children, 'child': children[0],\n            data, typeIds, nullBitmap, valueOffsets,\n        }) as Data<T>;\n    }\n\n    /**\n     * Finalize this `Builder`, and child builders if applicable.\n     * @returns {this} The finalized `Builder` instance.\n     */\n    public finish() {\n        this.finished = true;\n        for (const child of this.children) child.finish();\n        return this;\n    }\n\n    /**\n     * Clear this Builder's internal state, including child Builders if applicable, and reset the length to 0.\n     * @returns {this} The cleared `Builder` instance.\n     */\n    public clear() {\n        this.length = 0;\n        this._nulls?.clear();\n        this._values?.clear();\n        this._offsets?.clear();\n        this._typeIds?.clear();\n        for (const child of this.children) child.clear();\n        return this;\n    }\n}\n\n(Builder.prototype as any).length = 1;\n(Builder.prototype as any).stride = 1;\n(Builder.prototype as any).children = null;\n(Builder.prototype as any).finished = false;\n(Builder.prototype as any).nullValues = null;\n(Builder.prototype as any)._isValid = () => true;\n\n/** @ignore */\nexport abstract class FixedWidthBuilder<T extends Int | Float | FixedSizeBinary | Date_ | Timestamp | Time | Decimal | Interval | Duration = any, TNull = any> extends Builder<T, TNull> {\n    constructor(opts: BuilderOptions<T, TNull>) {\n        super(opts);\n        this._values = new DataBufferBuilder(this.ArrayType, 0, this.stride);\n    }\n    public setValue(index: number, value: T['TValue']) {\n        const values = this._values;\n        values.reserve(index - values.length + 1);\n        return super.setValue(index, value);\n    }\n}\n\n/** @ignore */\nexport abstract class VariableWidthBuilder<T extends Binary | LargeBinary | Utf8 | LargeUtf8 | List | Map_, TNull = any> extends Builder<T, TNull> {\n    protected _pendingLength = 0;\n    protected _offsets: OffsetsBufferBuilder<T>;\n    protected _pending: Map<number, any> | undefined;\n    constructor(opts: BuilderOptions<T, TNull>) {\n        super(opts);\n        this._offsets = new OffsetsBufferBuilder(opts.type);\n    }\n    public setValue(index: number, value: T['TValue']) {\n        const pending = this._pending || (this._pending = new Map());\n        const current = pending.get(index);\n        current && (this._pendingLength -= current.length);\n        this._pendingLength += (value instanceof MapRow) ? value[kKeys].length : value.length;\n        pending.set(index, value);\n    }\n    public setValid(index: number, isValid: boolean) {\n        if (!super.setValid(index, isValid)) {\n            (this._pending || (this._pending = new Map())).set(index, undefined);\n            return false;\n        }\n        return true;\n    }\n    public clear() {\n        this._pendingLength = 0;\n        this._pending = undefined;\n        return super.clear();\n    }\n    public flush() {\n        this._flush();\n        return super.flush();\n    }\n    public finish() {\n        this._flush();\n        return super.finish();\n    }\n    protected _flush() {\n        const pending = this._pending;\n        const pendingLength = this._pendingLength;\n        this._pendingLength = 0;\n        this._pending = undefined;\n        if (pending && pending.size > 0) {\n            this._flushPending(pending, pendingLength);\n        }\n        return this;\n    }\n    protected abstract _flushPending(pending: Map<number, any>, pendingLength: number): void;\n}\n", null, null, "// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements.  See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership.  The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License.  You may obtain a copy of the License at\n//\n//   http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied.  See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { MetadataVersion } from './enum.js';\nimport { DataType, TypeMap } from './type.js';\n\nexport class Schema<T extends TypeMap = any> {\n\n    public readonly fields: Field<T[keyof T]>[];\n    public readonly metadata: Map<string, string>;\n    public readonly dictionaries: Map<number, DataType>;\n    public readonly metadataVersion: MetadataVersion;\n\n    constructor(\n        fields: Field<T[keyof T]>[] = [],\n        metadata?: Map<string, string> | null,\n        dictionaries?: Map<number, DataType> | null,\n        metadataVersion = MetadataVersion.V5) {\n        this.fields = (fields || []) as Field<T[keyof T]>[];\n        this.metadata = metadata || new Map();\n        if (!dictionaries) {\n            dictionaries = generateDictionaryMap(this.fields);\n        }\n        this.dictionaries = dictionaries;\n        this.metadataVersion = metadataVersion;\n    }\n    public get [Symbol.toStringTag]() { return 'Schema'; }\n\n    public get names(): (keyof T)[] { return this.fields.map((f) => f.name); }\n\n    public toString() {\n        return `Schema<{ ${this.fields.map((f, i) => `${i}: ${f}`).join(', ')} }>`;\n    }\n\n    /**\n     * Construct a new Schema containing only specified fields.\n     *\n     * @param fieldNames Names of fields to keep.\n     * @returns A new Schema of fields matching the specified names.\n     */\n    public select<K extends keyof T = any>(fieldNames: K[]) {\n        const names = new Set<string | K>(fieldNames);\n        const fields = this.fields.filter((f) => names.has(f.name)) as Field<T[K]>[];\n        return new Schema<{ [P in K]: T[P] }>(fields, this.metadata);\n    }\n\n    /**\n     * Construct a new Schema containing only fields at the specified indices.\n     *\n     * @param fieldIndices Indices of fields to keep.\n     * @returns A new Schema of fields at the specified indices.\n     */\n    public selectAt<K extends T = any>(fieldIndices: number[]) {\n        const fields = fieldIndices.map((i) => this.fields[i]).filter(Boolean) as Field<K[keyof K]>[];\n        return new Schema<K>(fields, this.metadata);\n    }\n\n    public assign<R extends TypeMap = any>(schema: Schema<R>): Schema<T & R>;\n    public assign<R extends TypeMap = any>(...fields: (Field<R[keyof R]> | Field<R[keyof R]>[])[]): Schema<T & R>;\n    public assign<R extends TypeMap = any>(...args: (Schema<R> | Field<R[keyof R]> | Field<R[keyof R]>[])[]) {\n\n        const other = (args[0] instanceof Schema\n            ? args[0] as Schema<R>\n            : Array.isArray(args[0])\n                ? new Schema<R>(<Field<R[keyof R]>[]>args[0])\n                : new Schema<R>(<Field<R[keyof R]>[]>args));\n\n        const curFields = [...this.fields] as Field[];\n        const metadata = mergeMaps(mergeMaps(new Map(), this.metadata), other.metadata);\n        const newFields = other.fields.filter((f2) => {\n            const i = curFields.findIndex((f) => f.name === f2.name);\n            return ~i ? (curFields[i] = f2.clone({\n                metadata: mergeMaps(mergeMaps(new Map(), curFields[i].metadata), f2.metadata)\n            })) && false : true;\n        }) as Field[];\n\n        const newDictionaries = generateDictionaryMap(newFields, new Map());\n\n        return new Schema<T & R>(\n            [...curFields, ...newFields], metadata,\n            new Map([...this.dictionaries, ...newDictionaries])\n        );\n    }\n}\n\n// Add these here so they're picked up by the externs creator\n// in the build, and closure-compiler doesn't minify them away\n(Schema.prototype as any).fields = <any>null;\n(Schema.prototype as any).metadata = <any>null;\n(Schema.prototype as any).dictionaries = <any>null;\n\nexport class Field<T extends DataType = any> {\n\n    public static new<T extends DataType = any>(props: { name: string | number; type: T; nullable?: boolean; metadata?: Map<string, string> | null }): Field<T>;\n    public static new<T extends DataType = any>(name: string | number | Field<T>, type: T, nullable?: boolean, metadata?: Map<string, string> | null): Field<T>;\n    /** @nocollapse */\n    public static new<T extends DataType = any>(...args: any[]) {\n        let [name, type, nullable, metadata] = args;\n        if (args[0] && typeof args[0] === 'object') {\n            ({ name } = args[0]);\n            (type === undefined) && (type = args[0].type);\n            (nullable === undefined) && (nullable = args[0].nullable);\n            (metadata === undefined) && (metadata = args[0].metadata);\n        }\n        return new Field<T>(`${name}`, type, nullable, metadata);\n    }\n\n    public readonly type: T;\n    public readonly name: string;\n    public readonly nullable: boolean;\n    public readonly metadata: Map<string, string>;\n\n    constructor(name: string, type: T, nullable = false, metadata?: Map<string, string> | null) {\n        this.name = name;\n        this.type = type;\n        this.nullable = nullable;\n        this.metadata = metadata || new Map();\n    }\n\n    public get typeId() { return this.type.typeId; }\n    public get [Symbol.toStringTag]() { return 'Field'; }\n    public toString() { return `${this.name}: ${this.type}`; }\n    public clone<R extends DataType = T>(props: { name?: string | number; type?: R; nullable?: boolean; metadata?: Map<string, string> | null }): Field<R>;\n    public clone<R extends DataType = T>(name?: string | number | Field<T>, type?: R, nullable?: boolean, metadata?: Map<string, string> | null): Field<R>;\n    public clone<R extends DataType = T>(...args: any[]) {\n        let [name, type, nullable, metadata] = args;\n        (!args[0] || typeof args[0] !== 'object')\n            ? ([name = this.name, type = this.type, nullable = this.nullable, metadata = this.metadata] = args)\n            : ({ name = this.name, type = this.type, nullable = this.nullable, metadata = this.metadata } = args[0]);\n        return Field.new<R>(name, type, nullable, metadata);\n    }\n}\n\n// Add these here so they're picked up by the externs creator\n// in the build, and closure-compiler doesn't minify them away\n(Field.prototype as any).type = null;\n(Field.prototype as any).name = null;\n(Field.prototype as any).nullable = null;\n(Field.prototype as any).metadata = null;\n\n/** @ignore */\nfunction mergeMaps<TKey, TVal>(m1?: Map<TKey, TVal> | null, m2?: Map<TKey, TVal> | null): Map<TKey, TVal> {\n    return new Map([...(m1 || new Map()), ...(m2 || new Map())]);\n}\n\n/** @ignore */\nfunction generateDictionaryMap(fields: Field[], dictionaries = new Map<number, DataType>()): Map<number, DataType> {\n\n    for (let i = -1, n = fields.length; ++i < n;) {\n        const field = fields[i];\n        const type = field.type;\n        if (DataType.isDictionary(type)) {\n            if (!dictionaries.has(type.id)) {\n                dictionaries.set(type.id, type.dictionary);\n            } else if (dictionaries.get(type.id) !== type.dictionary) {\n                throw new Error(`Cannot create Schema containing two different dictionaries with the same Id`);\n            }\n        }\n        if (type.children && type.children.length > 0) {\n            generateDictionaryMap(type.children, dictionaries);\n        }\n    }\n\n    return dictionaries;\n}\n", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements.  See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership.  The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License.  You may obtain a copy of the License at\n//\n//   http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied.  See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Field, Schema } from './schema.js';\nimport * as dtypes from './type.js';\nimport { Data, DataProps } from './data.js';\nimport { BuilderType, JavaScriptDataType } from './interfaces.js';\nimport { Vector, makeVector } from './vector.js';\nimport { Builder, BuilderOptions } from './builder.js';\nimport { instance as getBuilderConstructor } from './visitor/builderctor.js';\nimport { ArrayDataType, BigIntArray, JavaScriptArrayDataType, TypedArray, TypedArrayDataType } from './interfaces.js';\nimport { Table } from './table.js';\nimport { RecordBatch } from './recordbatch.js';\nimport { compareTypes } from './visitor/typecomparator.js';\n\nexport function makeBuilder<T extends dtypes.DataType = any, TNull = any>(options: BuilderOptions<T, TNull>): BuilderType<T, TNull> {\n\n    const type = options.type;\n    const builder = new (getBuilderConstructor.getVisitFn<T>(type)())(options) as Builder<T, TNull>;\n\n    if (type.children && type.children.length > 0) {\n\n        const children = options['children'] || [] as BuilderOptions[];\n        const defaultOptions = { 'nullValues': options['nullValues'] };\n        const getChildOptions = Array.isArray(children)\n            ? ((_: Field, i: number) => children[i] || defaultOptions)\n            : (({ name }: Field) => children[name] || defaultOptions);\n\n        for (const [index, field] of type.children.entries()) {\n            const { type } = field;\n            const opts = getChildOptions(field, index);\n            builder.children.push(makeBuilder({ ...opts, type }));\n        }\n    }\n\n    return builder as BuilderType<T, TNull>;\n}\n\n/**\n * Creates a Vector from a JavaScript array via a {@link Builder}.\n * Use {@link makeVector} if you only want to create a vector from a typed array.\n *\n * @example\n * ```ts\n * const vf64 = vectorFromArray([1, 2, 3]);\n * const vi8 = vectorFromArray([1, 2, 3], new Int8);\n * const vdict = vectorFromArray(['foo', 'bar']);\n * const vstruct = vectorFromArray([{a: 'foo', b: 42}, {a: 'bar', b: 12}]);\n * ```\n */\nexport function vectorFromArray(values: readonly (null | undefined)[], type?: dtypes.Null): Vector<dtypes.Null>;\nexport function vectorFromArray(values: readonly (null | undefined | boolean)[], type?: dtypes.Bool): Vector<dtypes.Bool>;\nexport function vectorFromArray<T extends dtypes.Utf8 | dtypes.Dictionary<dtypes.Utf8> = dtypes.Dictionary<dtypes.Utf8, dtypes.Int32>>(values: readonly (null | undefined | string)[], type?: T): Vector<T>;\nexport function vectorFromArray<T extends dtypes.TimestampMillisecond>(values: readonly (null | undefined | Date)[], type?: T): Vector<T>;\nexport function vectorFromArray<T extends dtypes.Int>(values: readonly (null | undefined | number)[], type: T): Vector<T>;\nexport function vectorFromArray<T extends dtypes.Int64 | dtypes.Uint64 = dtypes.Int64>(values: readonly (null | undefined | bigint)[], type?: T): Vector<T>;\nexport function vectorFromArray<T extends dtypes.Float = dtypes.Float64>(values: readonly (null | undefined | number)[], type?: T): Vector<T>;\nexport function vectorFromArray<T extends dtypes.DataType>(values: readonly (unknown)[], type: T): Vector<T>;\nexport function vectorFromArray<T extends readonly unknown[]>(values: T): Vector<JavaScriptArrayDataType<T>>;\n/** Creates a Vector from a typed array via {@link makeVector}. */\nexport function vectorFromArray<T extends TypedArray | BigIntArray>(data: T): Vector<TypedArrayDataType<T>>;\n\nexport function vectorFromArray<T extends dtypes.DataType>(data: Data<T>): Vector<T>;\nexport function vectorFromArray<T extends dtypes.DataType>(data: Vector<T>): Vector<T>;\nexport function vectorFromArray<T extends dtypes.DataType>(data: DataProps<T>): Vector<T>;\nexport function vectorFromArray<T extends TypedArray | BigIntArray | readonly unknown[]>(data: T): Vector<ArrayDataType<T>>;\n\nexport function vectorFromArray(init: any, type?: dtypes.DataType) {\n    if (init instanceof Data || init instanceof Vector || init.type instanceof dtypes.DataType || ArrayBuffer.isView(init)) {\n        return makeVector(init as any);\n    }\n    const options: IterableBuilderOptions = { type: type ?? inferType(init), nullValues: [null] };\n    const chunks = [...builderThroughIterable(options)(init)];\n    const vector = chunks.length === 1 ? chunks[0] : chunks.reduce((a, b) => a.concat(b));\n    if (dtypes.DataType.isDictionary(vector.type)) {\n        return vector.memoize();\n    }\n    return vector;\n}\n\n/**\n * Creates a {@link Table} from an array of objects.\n *\n * @param array A table of objects.\n */\nexport function tableFromJSON<T extends Record<string, unknown>>(array: T[]): Table<{ [P in keyof T]: JavaScriptDataType<T[P]> }> {\n    const vector = vectorFromArray(array) as Vector<dtypes.Struct<any>>;\n    const batch = new RecordBatch(new Schema(vector.type.children), vector.data[0]);\n    return new Table(batch);\n}\n\n/** @ignore */\nfunction inferType<T extends readonly unknown[]>(values: T): JavaScriptArrayDataType<T>;\nfunction inferType(value: readonly unknown[]): dtypes.DataType {\n    if (value.length === 0) { return new dtypes.Null; }\n    let nullsCount = 0;\n    let arraysCount = 0;\n    let objectsCount = 0;\n    let numbersCount = 0;\n    let stringsCount = 0;\n    let bigintsCount = 0;\n    let booleansCount = 0;\n    let datesCount = 0;\n\n    for (const val of value) {\n        if (val == null) { ++nullsCount; continue; }\n        switch (typeof val) {\n            case 'bigint': ++bigintsCount; continue;\n            case 'boolean': ++booleansCount; continue;\n            case 'number': ++numbersCount; continue;\n            case 'string': ++stringsCount; continue;\n            case 'object':\n                if (Array.isArray(val)) {\n                    ++arraysCount;\n                } else if (Object.prototype.toString.call(val) === '[object Date]') {\n                    ++datesCount;\n                } else {\n                    ++objectsCount;\n                }\n                continue;\n        }\n        throw new TypeError('Unable to infer Vector type from input values, explicit type declaration expected.');\n    }\n\n    if (numbersCount + nullsCount === value.length) {\n        return new dtypes.Float64;\n    } else if (stringsCount + nullsCount === value.length) {\n        return new dtypes.Dictionary(new dtypes.Utf8, new dtypes.Int32);\n    } else if (bigintsCount + nullsCount === value.length) {\n        return new dtypes.Int64;\n    } else if (booleansCount + nullsCount === value.length) {\n        return new dtypes.Bool;\n    } else if (datesCount + nullsCount === value.length) {\n        return new dtypes.TimestampMillisecond;\n    } else if (arraysCount + nullsCount === value.length) {\n        const array = value as Array<unknown>[];\n        const childType = inferType(array[array.findIndex((ary) => ary != null)]);\n        if (array.every((ary) => ary == null || compareTypes(childType, inferType(ary)))) {\n            return new dtypes.List(new Field('', childType, true));\n        }\n    } else if (objectsCount + nullsCount === value.length) {\n        const fields = new Map<string, Field>();\n        for (const row of value as Record<string, unknown>[]) {\n            for (const key of Object.keys(row)) {\n                if (!fields.has(key) && row[key] != null) {\n                    // use the type inferred for the first instance of a found key\n                    fields.set(key, new Field(key, inferType([row[key]]), true));\n                }\n            }\n        }\n        return new dtypes.Struct([...fields.values()]);\n    }\n\n    throw new TypeError('Unable to infer Vector type from input values, explicit type declaration expected.');\n}\n\n/**\n * A set of options to create an Iterable or AsyncIterable `Builder` transform function.\n * @see {@link builderThroughIterable}\n * @see {@link builderThroughAsyncIterable}\n */\nexport interface IterableBuilderOptions<T extends dtypes.DataType = any, TNull = any> extends BuilderOptions<T, TNull> {\n    highWaterMark?: number;\n    queueingStrategy?: 'bytes' | 'count';\n    dictionaryHashFunction?: (value: any) => string | number;\n    valueToChildTypeId?: (builder: Builder<T, TNull>, value: any, offset: number) => number;\n}\n\n/** @ignore */\ntype ThroughIterable<T extends dtypes.DataType = any, TNull = any> = (source: Iterable<T['TValue'] | TNull>) => IterableIterator<Vector<T>>;\n\n/**\n * Transform a synchronous `Iterable` of arbitrary JavaScript values into a\n * sequence of Arrow Vector<T> following the chunking semantics defined in\n * the supplied `options` argument.\n *\n * This function returns a function that accepts an `Iterable` of values to\n * transform. When called, this function returns an Iterator of `Vector<T>`.\n *\n * The resulting `Iterator<Vector<T>>` yields Vectors based on the\n * `queueingStrategy` and `highWaterMark` specified in the `options` argument.\n *\n * * If `queueingStrategy` is `\"count\"` (or omitted), The `Iterator<Vector<T>>`\n *   will flush the underlying `Builder` (and yield a new `Vector<T>`) once the\n *   Builder's `length` reaches or exceeds the supplied `highWaterMark`.\n * * If `queueingStrategy` is `\"bytes\"`, the `Iterator<Vector<T>>` will flush\n *   the underlying `Builder` (and yield a new `Vector<T>`) once its `byteLength`\n *   reaches or exceeds the supplied `highWaterMark`.\n *\n * @param {IterableBuilderOptions<T, TNull>} options An object of properties which determine the `Builder` to create and the chunking semantics to use.\n * @returns A function which accepts a JavaScript `Iterable` of values to\n *          write, and returns an `Iterator` that yields Vectors according\n *          to the chunking semantics defined in the `options` argument.\n * @nocollapse\n */\nexport function builderThroughIterable<T extends dtypes.DataType = any, TNull = any>(options: IterableBuilderOptions<T, TNull>) {\n    const { ['queueingStrategy']: queueingStrategy = 'count' } = options;\n    const { ['highWaterMark']: highWaterMark = queueingStrategy !== 'bytes' ? Number.POSITIVE_INFINITY : 2 ** 14 } = options;\n    const sizeProperty: 'length' | 'byteLength' = queueingStrategy !== 'bytes' ? 'length' : 'byteLength';\n    return function* (source: Iterable<T['TValue'] | TNull>) {\n        let numChunks = 0;\n        const builder = makeBuilder(options);\n        for (const value of source) {\n            if (builder.append(value)[sizeProperty] >= highWaterMark) {\n                ++numChunks && (yield builder.toVector());\n            }\n        }\n        if (builder.finish().length > 0 || numChunks === 0) {\n            yield builder.toVector();\n        }\n    } as ThroughIterable<T, TNull>;\n}\n\n/** @ignore */\ntype ThroughAsyncIterable<T extends dtypes.DataType = any, TNull = any> = (source: Iterable<T['TValue'] | TNull> | AsyncIterable<T['TValue'] | TNull>) => AsyncIterableIterator<Vector<T>>;\n\n/**\n * Transform an `AsyncIterable` of arbitrary JavaScript values into a\n * sequence of Arrow Vector<T> following the chunking semantics defined in\n * the supplied `options` argument.\n *\n * This function returns a function that accepts an `AsyncIterable` of values to\n * transform. When called, this function returns an AsyncIterator of `Vector<T>`.\n *\n * The resulting `AsyncIterator<Vector<T>>` yields Vectors based on the\n * `queueingStrategy` and `highWaterMark` specified in the `options` argument.\n *\n * * If `queueingStrategy` is `\"count\"` (or omitted), The `AsyncIterator<Vector<T>>`\n *   will flush the underlying `Builder` (and yield a new `Vector<T>`) once the\n *   Builder's `length` reaches or exceeds the supplied `highWaterMark`.\n * * If `queueingStrategy` is `\"bytes\"`, the `AsyncIterator<Vector<T>>` will flush\n *   the underlying `Builder` (and yield a new `Vector<T>`) once its `byteLength`\n *   reaches or exceeds the supplied `highWaterMark`.\n *\n * @param {IterableBuilderOptions<T, TNull>} options An object of properties which determine the `Builder` to create and the chunking semantics to use.\n * @returns A function which accepts a JavaScript `AsyncIterable` of values\n *          to write, and returns an `AsyncIterator` that yields Vectors\n *          according to the chunking semantics defined in the `options`\n *          argument.\n * @nocollapse\n */\nexport function builderThroughAsyncIterable<T extends dtypes.DataType = any, TNull = any>(options: IterableBuilderOptions<T, TNull>) {\n    const { ['queueingStrategy']: queueingStrategy = 'count' } = options;\n    const { ['highWaterMark']: highWaterMark = queueingStrategy !== 'bytes' ? Number.POSITIVE_INFINITY : 2 ** 14 } = options;\n    const sizeProperty: 'length' | 'byteLength' = queueingStrategy !== 'bytes' ? 'length' : 'byteLength';\n    return async function* (source: Iterable<T['TValue'] | TNull> | AsyncIterable<T['TValue'] | TNull>) {\n        let numChunks = 0;\n        const builder = makeBuilder(options);\n        for await (const value of source) {\n            if (builder.append(value)[sizeProperty] >= highWaterMark) {\n                ++numChunks && (yield builder.toVector());\n            }\n        }\n        if (builder.finish().length > 0 || numChunks === 0) {\n            yield builder.toVector();\n        }\n    } as ThroughAsyncIterable<T, TNull>;\n}\n", null, "// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements.  See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership.  The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License.  You may obtain a copy of the License at\n//\n//   http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied.  See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Type } from './enum.js';\nimport { Data, makeData } from './data.js';\nimport { vectorFromArray } from './factories.js';\nimport { makeVector, Vector } from './vector.js';\nimport { Field, Schema } from './schema.js';\nimport { DataType, Null, Struct, TypeMap } from './type.js';\nimport { compareSchemas } from './visitor/typecomparator.js';\nimport { distributeVectorsIntoRecordBatches } from './util/recordbatch.js';\n\nimport {\n    isChunkedValid,\n    computeChunkOffsets,\n    computeChunkNullCounts,\n    wrapChunkedCall1,\n    wrapChunkedCall2,\n    wrapChunkedIndexOf,\n    sliceChunks,\n} from './util/chunk.js';\n\nimport { instance as getVisitor } from './visitor/get.js';\nimport { instance as setVisitor } from './visitor/set.js';\nimport { instance as indexOfVisitor } from './visitor/indexof.js';\nimport { instance as iteratorVisitor } from './visitor/iterator.js';\n\nimport { DataProps } from './data.js';\nimport { clampRange, wrapIndex } from './util/vector.js';\nimport { ArrayDataType, BigIntArray, TypedArray, TypedArrayDataType } from './interfaces.js';\nimport { RecordBatch, _InternalEmptyPlaceholderRecordBatch } from './recordbatch.js';\n\n/** @ignore */\nexport interface Table<T extends TypeMap = any> {\n    ///\n    // Virtual properties for the TypeScript compiler.\n    // These do not exist at runtime.\n    ///\n    readonly TType: Struct<T>;\n    readonly TArray: Struct<T>['TArray'];\n    readonly TValue: Struct<T>['TValue'];\n\n    /**\n     * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/isConcatSpreadable\n     */\n    [Symbol.isConcatSpreadable]: true;\n}\n\n/**\n * Tables are collections of {@link Vector}s and have a {@link Schema}. Use the convenience methods {@link makeTable}\n * or {@link tableFromArrays} to create a table in JavaScript. To create a table from the IPC format, use\n * {@link tableFromIPC}.\n */\nexport class Table<T extends TypeMap = any> {\n\n    constructor();\n    constructor(batches: Iterable<RecordBatch<T>>);\n    constructor(...batches: readonly RecordBatch<T>[]);\n    constructor(...columns: { [P in keyof T]: Vector<T[P]> }[]);\n    constructor(...columns: { [P in keyof T]: Data<T[P]> | DataProps<T[P]> }[]);\n    constructor(schema: Schema<T>, ...columns: { [P in keyof T]: Vector<T[P]> }[]);\n    constructor(schema: Schema<T>, ...columns: { [P in keyof T]: Data<T[P]> | DataProps<T[P]> }[]);\n    constructor(schema: Schema<T>, data?: RecordBatch<T> | RecordBatch<T>[]);\n    constructor(schema: Schema<T>, data?: RecordBatch<T> | RecordBatch<T>[], offsets?: Uint32Array);\n    constructor(...args: any[]) {\n\n        if (args.length === 0) {\n            this.batches = [];\n            this.schema = new Schema([]);\n            this._offsets = [0];\n            return this;\n        }\n\n        let schema: Schema<T> | undefined;\n        let offsets: Uint32Array | number[] | undefined;\n\n        if (args[0] instanceof Schema) {\n            schema = args.shift() as Schema<T>;\n        }\n\n        if (args.at(-1) instanceof Uint32Array) {\n            offsets = args.pop();\n        }\n\n        const unwrap = (x: any): RecordBatch<T>[] => {\n            if (x) {\n                if (x instanceof RecordBatch) {\n                    return [x];\n                } else if (x instanceof Table) {\n                    return x.batches;\n                } else if (x instanceof Data) {\n                    if (x.type instanceof Struct) {\n                        return [new RecordBatch(new Schema(x.type.children), x)];\n                    }\n                } else if (Array.isArray(x)) {\n                    return x.flatMap(v => unwrap(v));\n                } else if (typeof x[Symbol.iterator] === 'function') {\n                    return [...x].flatMap(v => unwrap(v));\n                } else if (typeof x === 'object') {\n                    const keys = Object.keys(x) as (keyof T)[];\n                    const vecs = keys.map((k) => new Vector([x[k]]));\n                    const batchSchema = schema ?? new Schema(keys.map((k, i) => new Field(String(k), vecs[i].type, vecs[i].nullable)));\n                    const [, batches] = distributeVectorsIntoRecordBatches(batchSchema, vecs);\n                    return batches.length === 0 ? [new RecordBatch(x)] : batches;\n                }\n            }\n            return [];\n        };\n\n        const batches = args.flatMap(v => unwrap(v));\n\n        schema = schema ?? batches[0]?.schema ?? new Schema([]);\n\n        if (!(schema instanceof Schema)) {\n            throw new TypeError('Table constructor expects a [Schema, RecordBatch[]] pair.');\n        }\n\n        for (const batch of batches) {\n            if (!(batch instanceof RecordBatch)) {\n                throw new TypeError('Table constructor expects a [Schema, RecordBatch[]] pair.');\n            }\n            if (!compareSchemas(schema, batch.schema)) {\n                throw new TypeError('Table and inner RecordBatch schemas must be equivalent.');\n            }\n        }\n\n        this.schema = schema;\n        this.batches = batches;\n        this._offsets = offsets ?? computeChunkOffsets(this.data);\n    }\n\n    declare protected _offsets: Uint32Array | number[];\n    declare protected _nullCount: number;\n\n    declare public readonly schema: Schema<T>;\n\n    /**\n     * The contiguous {@link RecordBatch `RecordBatch`} chunks of the Table rows.\n     */\n    declare public readonly batches: RecordBatch<T>[];\n\n    /**\n     * The contiguous {@link RecordBatch `RecordBatch`} chunks of the Table rows.\n     */\n    public get data() { return this.batches.map(({ data }) => data); }\n\n    /**\n     * The number of columns in this Table.\n     */\n    public get numCols() { return this.schema.fields.length; }\n\n    /**\n     * The number of rows in this Table.\n     */\n    public get numRows() {\n        return this.data.reduce((numRows, data) => numRows + data.length, 0);\n    }\n\n    /**\n     * The number of null rows in this Table.\n     */\n    public get nullCount() {\n        if (this._nullCount === -1) {\n            this._nullCount = computeChunkNullCounts(this.data);\n        }\n        return this._nullCount;\n    }\n\n    /**\n     * Check whether an element is null.\n     *\n     * @param index The index at which to read the validity bitmap.\n     */\n    // @ts-ignore\n    public isValid(index: number): boolean { return false; }\n\n    /**\n     * Get an element value by position.\n     *\n     * @param index The index of the element to read.\n     */\n    // @ts-ignore\n    public get(index: number): Struct<T>['TValue'] | null { return null; }\n\n    /**\n      * Get an element value by position.\n      * @param index The index of the element to read. A negative index will count back from the last element.\n      */\n    // @ts-ignore\n    public at(index: number): Struct<T>['TValue'] | null {\n        return this.get(wrapIndex(index, this.numRows));\n    }\n\n    /**\n     * Set an element value by position.\n     *\n     * @param index The index of the element to write.\n     * @param value The value to set.\n     */\n    // @ts-ignore\n    public set(index: number, value: Struct<T>['TValue'] | null): void { return; }\n\n    /**\n     * Retrieve the index of the first occurrence of a value in an Vector.\n     *\n     * @param element The value to locate in the Vector.\n     * @param offset The index at which to begin the search. If offset is omitted, the search starts at index 0.\n     */\n    // @ts-ignore\n    public indexOf(element: Struct<T>['TValue'], offset?: number): number { return -1; }\n\n    /**\n     * Iterator for rows in this Table.\n     */\n    public [Symbol.iterator]() {\n        if (this.batches.length > 0) {\n            return iteratorVisitor.visit(new Vector(this.data)) as IterableIterator<Struct<T>['TValue']>;\n        }\n        return (new Array(0))[Symbol.iterator]();\n    }\n\n    /**\n     * Return a JavaScript Array of the Table rows.\n     *\n     * @returns An Array of Table rows.\n     */\n    public toArray() {\n        return [...this];\n    }\n\n    /**\n     * Returns a string representation of the Table rows.\n     *\n     * @returns A string representation of the Table rows.\n     */\n    public toString() {\n        return `[\\n  ${this.toArray().join(',\\n  ')}\\n]`;\n    }\n\n    /**\n     * Combines two or more Tables of the same schema.\n     *\n     * @param others Additional Tables to add to the end of this Tables.\n     */\n    public concat(...others: Table<T>[]) {\n        const schema = this.schema;\n        const data = this.data.concat(others.flatMap(({ data }) => data));\n        return new Table(schema, data.map((data) => new RecordBatch(schema, data)));\n    }\n\n    /**\n     * Return a zero-copy sub-section of this Table.\n     *\n     * @param begin The beginning of the specified portion of the Table.\n     * @param end The end of the specified portion of the Table. This is exclusive of the element at the index 'end'.\n     */\n    public slice(begin?: number, end?: number): Table<T> {\n        const schema = this.schema;\n        [begin, end] = clampRange({ length: this.numRows }, begin, end);\n        const data = sliceChunks(this.data, this._offsets, begin, end);\n        return new Table(schema, data.map((chunk) => new RecordBatch(schema, chunk)));\n    }\n\n    /**\n     * Returns a child Vector by name, or null if this Vector has no child with the given name.\n     *\n     * @param name The name of the child to retrieve.\n     */\n    public getChild<P extends keyof T>(name: P) {\n        return this.getChildAt<T[P]>(this.schema.fields.findIndex((f) => f.name === name));\n    }\n\n    /**\n     * Returns a child Vector by index, or null if this Vector has no child at the supplied index.\n     *\n     * @param index The index of the child to retrieve.\n     */\n    public getChildAt<R extends T[keyof T] = any>(index: number): Vector<R> | null {\n        if (index > -1 && index < this.schema.fields.length) {\n            const data = this.data.map((data) => data.children[index] as Data<R>);\n            if (data.length === 0) {\n                const { type } = this.schema.fields[index] as Field<R>;\n                const empty = makeData<R>({ type, length: 0, nullCount: 0 });\n                data.push(empty._changeLengthAndBackfillNullBitmap(this.numRows));\n            }\n            return new Vector(data);\n        }\n        return null;\n    }\n\n    /**\n     * Sets a child Vector by name.\n     *\n     * @param name The name of the child to overwrite.\n     * @returns A new Table with the supplied child for the specified name.\n     */\n    public setChild<P extends keyof T, R extends DataType>(name: P, child: Vector<R>) {\n        return this.setChildAt(this.schema.fields?.findIndex((f) => f.name === name), child) as Table<T & { [K in P]: R }>;\n    }\n\n    /**\n     * Sets a child Vector by index.\n     *\n     * @param index The index of the child to overwrite.\n     * @returns A new Table with the supplied child at the specified index.\n     */\n    public setChildAt(index: number, child?: null): Table;\n    public setChildAt<R extends DataType = any>(index: number, child: Vector<R>): Table;\n    public setChildAt(index: number, child: any) {\n        let schema: Schema = this.schema;\n        let batches: RecordBatch[] = [...this.batches];\n        if (index > -1 && index < this.numCols) {\n            if (!child) {\n                child = new Vector([makeData({ type: new Null, length: this.numRows })]);\n            }\n            const fields = schema.fields.slice() as Field<any>[];\n            const field = fields[index].clone({ type: child.type });\n            const children = this.schema.fields.map((_, i) => this.getChildAt(i)!);\n            [fields[index], children[index]] = [field, child];\n            [schema, batches] = distributeVectorsIntoRecordBatches(schema, children);\n        }\n        return new Table(schema, batches);\n    }\n\n    /**\n     * Construct a new Table containing only specified columns.\n     *\n     * @param columnNames Names of columns to keep.\n     * @returns A new Table of columns matching the specified names.\n     */\n    public select<K extends keyof T = any>(columnNames: K[]) {\n        const nameToIndex = this.schema.fields.reduce((m, f, i) => m.set(f.name as K, i), new Map<K, number>());\n        return this.selectAt(columnNames.map((columnName) => nameToIndex.get(columnName)!).filter((x) => x > -1));\n    }\n\n    /**\n     * Construct a new Table containing only columns at the specified indices.\n     *\n     * @param columnIndices Indices of columns to keep.\n     * @returns A new Table of columns at the specified indices.\n     */\n    public selectAt<K extends T[keyof T] = any>(columnIndices: number[]) {\n        const schema = this.schema.selectAt(columnIndices);\n        const data = this.batches.map((batch) => batch.selectAt(columnIndices));\n        return new Table<{ [key: string]: K }>(schema, data);\n    }\n\n    public assign<R extends TypeMap = any>(other: Table<R>) {\n\n        const fields = this.schema.fields;\n        const [indices, oldToNew] = other.schema.fields.reduce((memo, f2, newIdx) => {\n            const [indices, oldToNew] = memo;\n            const i = fields.findIndex((f) => f.name === f2.name);\n            ~i ? (oldToNew[i] = newIdx) : indices.push(newIdx);\n            return memo;\n        }, [[], []] as number[][]);\n\n        const schema = this.schema.assign(other.schema);\n        const columns = [\n            ...fields.map((_, i) => [i, oldToNew[i]]).map(([i, j]) =>\n                (j === undefined ? this.getChildAt(i) : other.getChildAt(j))!),\n            ...indices.map((i) => other.getChildAt(i)!)\n        ].filter(Boolean) as Vector<(T & R)[keyof T | keyof R]>[];\n\n        return new Table<T & R>(...distributeVectorsIntoRecordBatches<any>(schema, columns));\n    }\n\n    // Initialize this static property via an IIFE so bundlers don't tree-shake\n    // out this logic, but also so we're still compliant with `\"sideEffects\": false`\n    protected static [Symbol.toStringTag] = ((proto: Table) => {\n        (proto as any).schema = null;\n        (proto as any).batches = [];\n        (proto as any)._offsets = new Uint32Array([0]);\n        (proto as any)._nullCount = -1;\n        (proto as any)[Symbol.isConcatSpreadable] = true;\n        (proto as any)['isValid'] = wrapChunkedCall1(isChunkedValid);\n        (proto as any)['get'] = wrapChunkedCall1(getVisitor.getVisitFn(Type.Struct));\n        (proto as any)['set'] = wrapChunkedCall2(setVisitor.getVisitFn(Type.Struct));\n        (proto as any)['indexOf'] = wrapChunkedIndexOf(indexOfVisitor.getVisitFn(Type.Struct));\n        return 'Table';\n    })(Table.prototype);\n}\n\n\ntype VectorsMap<T extends TypeMap> = { [P in keyof T]: Vector<T[P]> };\n\n/**\n * Creates a new Table from an object of typed arrays.\n *\n*  @example\n * ```ts\n * const table = makeTable({\n *   a: new Int8Array([1, 2, 3]),\n * })\n * ```\n *\n * @param input Input an object of typed arrays.\n * @returns A new Table.\n */\nexport function makeTable<I extends Record<string | number | symbol, TypedArray>>(input: I): Table<{ [P in keyof I]: TypedArrayDataType<I[P]> }> {\n    type T = { [P in keyof I]: TypedArrayDataType<I[P]> };\n    const vecs = {} as VectorsMap<T>;\n    const inputs = Object.entries(input) as [keyof I, I[keyof I]][];\n    for (const [key, col] of inputs) {\n        vecs[key] = makeVector(col);\n    }\n    return new Table<T>(vecs);\n}\n\n/**\n * Creates a new Table from an object of typed arrays or JavaScript arrays.\n *\n *  @example\n * ```ts\n * const table = tableFromArrays({\n *   a: [1, 2, 3],\n *   b: new Int8Array([1, 2, 3]),\n * })\n * ```\n *\n * @param input Input an object of typed arrays or JavaScript arrays.\n * @returns A new Table.\n */\nexport function tableFromArrays<I extends Record<string | number | symbol, TypedArray | BigIntArray | readonly unknown[]>>(input: I): Table<{ [P in keyof I]: ArrayDataType<I[P]> }> {\n    type T = { [P in keyof I]: ArrayDataType<I[P]> };\n    const vecs = {} as VectorsMap<T>;\n    const inputs = Object.entries(input) as [keyof I, I[keyof I]][];\n    for (const [key, col] of inputs) {\n        vecs[key] = vectorFromArray(col);\n    }\n    return new Table<T>(vecs);\n}\n", "// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements.  See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership.  The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License.  You may obtain a copy of the License at\n//\n//   http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied.  See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport { Data, makeData } from './data.js';\nimport { Table } from './table.js';\nimport { Vector } from './vector.js';\nimport { Schema, Field } from './schema.js';\nimport { DataType, Struct, Null, TypeMap } from './type.js';\nimport { wrapIndex } from './util/vector.js';\n\nimport { instance as getVisitor } from './visitor/get.js';\nimport { instance as setVisitor } from './visitor/set.js';\nimport { instance as indexOfVisitor } from './visitor/indexof.js';\nimport { instance as iteratorVisitor } from './visitor/iterator.js';\n\n/** @ignore */\nexport interface RecordBatch<T extends TypeMap = any> {\n    ///\n    // Virtual properties for the TypeScript compiler.\n    // These do not exist at runtime.\n    ///\n    readonly TType: Struct<T>;\n    readonly TArray: Struct<T>['TArray'];\n    readonly TValue: Struct<T>['TValue'];\n\n    /**\n     * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/isConcatSpreadable\n     */\n    [Symbol.isConcatSpreadable]: true;\n}\n\n/** @ignore */\nexport class RecordBatch<T extends TypeMap = any> {\n\n    constructor(columns: { [P in keyof T]: Data<T[P]> });\n    constructor(schema: Schema<T>, data?: Data<Struct<T>>);\n    constructor(...args: any[]) {\n        switch (args.length) {\n            case 2: {\n                [this.schema] = args;\n                if (!(this.schema instanceof Schema)) {\n                    throw new TypeError('RecordBatch constructor expects a [Schema, Data] pair.');\n                }\n                [,\n                    this.data = makeData({\n                        nullCount: 0,\n                        type: new Struct<T>(this.schema.fields),\n                        children: this.schema.fields.map((f) => makeData({ type: f.type, nullCount: 0 }))\n                    })\n                ] = args;\n                if (!(this.data instanceof Data)) {\n                    throw new TypeError('RecordBatch constructor expects a [Schema, Data] pair.');\n                }\n                [this.schema, this.data] = ensureSameLengthData<T>(this.schema, this.data.children as Data<T[keyof T]>[]);\n                break;\n            }\n            case 1: {\n                const [obj] = args;\n                const { fields, children, length } = Object.keys(obj).reduce((memo, name, i) => {\n                    memo.children[i] = obj[name];\n                    memo.length = Math.max(memo.length, obj[name].length);\n                    memo.fields[i] = Field.new({ name, type: obj[name].type, nullable: true });\n                    return memo;\n                }, {\n                    length: 0,\n                    fields: new Array<Field<T[keyof T]>>(),\n                    children: new Array<Data<T[keyof T]>>(),\n                });\n\n                const schema = new Schema<T>(fields);\n                const data = makeData({ type: new Struct<T>(fields), length, children, nullCount: 0 });\n                [this.schema, this.data] = ensureSameLengthData<T>(schema, data.children as Data<T[keyof T]>[], length);\n                break;\n            }\n            default: throw new TypeError('RecordBatch constructor expects an Object mapping names to child Data, or a [Schema, Data] pair.');\n        }\n    }\n\n    protected _dictionaries?: Map<number, Vector>;\n\n    public readonly schema: Schema<T>;\n    public readonly data: Data<Struct<T>>;\n\n    public get dictionaries() {\n        return this._dictionaries || (this._dictionaries = collectDictionaries(this.schema.fields, this.data.children));\n    }\n\n    /**\n     * The number of columns in this RecordBatch.\n     */\n    public get numCols() { return this.schema.fields.length; }\n\n    /**\n     * The number of rows in this RecordBatch.\n     */\n    public get numRows() { return this.data.length; }\n\n    /**\n     * The number of null rows in this RecordBatch.\n     */\n    public get nullCount() {\n        return this.data.nullCount;\n    }\n\n    /**\n     * Check whether an row is null.\n     * @param index The index at which to read the validity bitmap.\n     */\n    public isValid(index: number) {\n        return this.data.getValid(index);\n    }\n\n    /**\n     * Get a row by position.\n     * @param index The index of the row to read.\n     */\n    public get(index: number) {\n        return getVisitor.visit(this.data, index);\n    }\n\n    /**\n      * Get a row value by position.\n      * @param index The index of the row to read. A negative index will count back from the last row.\n      */\n    public at(index: number) {\n        return this.get(wrapIndex(index, this.numRows));\n    }\n\n    /**\n     * Set a row by position.\n     * @param index The index of the row to write.\n     * @param value The value to set.\n     */\n    public set(index: number, value: Struct<T>['TValue']) {\n        return setVisitor.visit(this.data, index, value);\n    }\n\n    /**\n     * Retrieve the index of the first occurrence of a row in an RecordBatch.\n     * @param element The row to locate in the RecordBatch.\n     * @param offset The index at which to begin the search. If offset is omitted, the search starts at index 0.\n     */\n    public indexOf(element: Struct<T>['TValue'], offset?: number): number {\n        return indexOfVisitor.visit(this.data, element, offset);\n    }\n\n    /**\n     * Iterator for rows in this RecordBatch.\n     */\n    public [Symbol.iterator]() {\n        return iteratorVisitor.visit(new Vector([this.data])) as IterableIterator<Struct<T>['TValue']>;\n    }\n\n    /**\n     * Return a JavaScript Array of the RecordBatch rows.\n     * @returns An Array of RecordBatch rows.\n     */\n    public toArray() {\n        return [...this];\n    }\n\n    /**\n     * Combines two or more RecordBatch of the same schema.\n     * @param others Additional RecordBatch to add to the end of this RecordBatch.\n     */\n    public concat(...others: RecordBatch<T>[]) {\n        return new Table(this.schema, [this, ...others]);\n    }\n\n    /**\n     * Return a zero-copy sub-section of this RecordBatch.\n     * @param start The beginning of the specified portion of the RecordBatch.\n     * @param end The end of the specified portion of the RecordBatch. This is exclusive of the row at the index 'end'.\n     */\n    public slice(begin?: number, end?: number): RecordBatch<T> {\n        const [slice] = new Vector([this.data]).slice(begin, end).data;\n        return new RecordBatch(this.schema, slice);\n    }\n\n    /**\n     * Returns a child Vector by name, or null if this Vector has no child with the given name.\n     * @param name The name of the child to retrieve.\n     */\n    public getChild<P extends keyof T>(name: P) {\n        return this.getChildAt<T[P]>(this.schema.fields?.findIndex((f) => f.name === name));\n    }\n\n    /**\n     * Returns a child Vector by index, or null if this Vector has no child at the supplied index.\n     * @param index The index of the child to retrieve.\n     */\n    public getChildAt<R extends T[keyof T] = any>(index: number): Vector<R> | null {\n        if (index > -1 && index < this.schema.fields.length) {\n            return new Vector([this.data.children[index]]) as Vector<R>;\n        }\n        return null;\n    }\n\n    /**\n     * Sets a child Vector by name.\n     * @param name The name of the child to overwrite.\n     * @returns A new RecordBatch with the new child for the specified name.\n     */\n    public setChild<P extends keyof T, R extends DataType>(name: P, child: Vector<R>) {\n        return this.setChildAt(this.schema.fields?.findIndex((f) => f.name === name), child) as RecordBatch<T & { [K in P]: R }>;\n    }\n\n    /**\n     * Sets a child Vector by index.\n     * @param index The index of the child to overwrite.\n     * @returns A new RecordBatch with the new child at the specified index.\n     */\n    public setChildAt(index: number, child?: null): RecordBatch;\n    public setChildAt<R extends DataType = any>(index: number, child: Vector<R>): RecordBatch;\n    public setChildAt(index: number, child: any) {\n        let schema: Schema = this.schema;\n        let data: Data<Struct> = this.data;\n        if (index > -1 && index < this.numCols) {\n            if (!child) {\n                child = new Vector([makeData({ type: new Null, length: this.numRows })]);\n            }\n            const fields = schema.fields.slice() as Field<any>[];\n            const children = data.children.slice() as Data<any>[];\n            const field = fields[index].clone({ type: child.type });\n            [fields[index], children[index]] = [field, child.data[0]];\n            schema = new Schema(fields, new Map(this.schema.metadata));\n            data = makeData({ type: new Struct<T>(fields), children });\n        }\n        return new RecordBatch(schema, data);\n    }\n\n    /**\n     * Construct a new RecordBatch containing only specified columns.\n     *\n     * @param columnNames Names of columns to keep.\n     * @returns A new RecordBatch of columns matching the specified names.\n     */\n    public select<K extends keyof T = any>(columnNames: K[]) {\n        const schema = this.schema.select(columnNames);\n        const type = new Struct(schema.fields);\n        const children = [] as Data<T[K]>[];\n        for (const name of columnNames) {\n            const index = this.schema.fields.findIndex((f) => f.name === name);\n            if (~index) {\n                children[index] = this.data.children[index] as Data<T[K]>;\n            }\n        }\n        return new RecordBatch(schema, makeData({ type, length: this.numRows, children }));\n    }\n\n    /**\n     * Construct a new RecordBatch containing only columns at the specified indices.\n     *\n     * @param columnIndices Indices of columns to keep.\n     * @returns A new RecordBatch of columns matching at the specified indices.\n     */\n    public selectAt<K extends T = any>(columnIndices: number[]) {\n        const schema = this.schema.selectAt<K>(columnIndices);\n        const children = columnIndices.map((i) => this.data.children[i]).filter(Boolean);\n        const subset = makeData({ type: new Struct(schema.fields), length: this.numRows, children });\n        return new RecordBatch<{ [P in keyof K]: K[P] }>(schema, subset);\n    }\n\n    // Initialize this static property via an IIFE so bundlers don't tree-shake\n    // out this logic, but also so we're still compliant with `\"sideEffects\": false`\n    protected static [Symbol.toStringTag] = ((proto: RecordBatch) => {\n        (proto as any)._nullCount = -1;\n        (proto as any)[Symbol.isConcatSpreadable] = true;\n        return 'RecordBatch';\n    })(RecordBatch.prototype);\n}\n\n\n/** @ignore */\nfunction ensureSameLengthData<T extends TypeMap = any>(\n    schema: Schema<T>,\n    chunks: Data<T[keyof T]>[],\n    maxLength = chunks.reduce((max, col) => Math.max(max, col.length), 0)\n) {\n    const fields = [...schema.fields];\n    const children = [...chunks] as Data<T[keyof T]>[];\n    const nullBitmapSize = ((maxLength + 63) & ~63) >> 3;\n\n    for (const [idx, field] of schema.fields.entries()) {\n        const chunk = chunks[idx];\n        if (!chunk || chunk.length !== maxLength) {\n            fields[idx] = field.clone({ nullable: true });\n            children[idx] = chunk?._changeLengthAndBackfillNullBitmap(maxLength) ?? makeData({\n                type: field.type,\n                length: maxLength,\n                nullCount: maxLength,\n                nullBitmap: new Uint8Array(nullBitmapSize)\n            });\n        }\n    }\n\n    return [\n        schema.assign(fields),\n        makeData({ type: new Struct<T>(fields), length: maxLength, children })\n    ] as [Schema<T>, Data<Struct<T>>];\n}\n\n/** @ignore */\nfunction collectDictionaries(fields: Field[], children: readonly Data[], dictionaries = new Map<number, Vector>()): Map<number, Vector> {\n    if ((fields?.length ?? 0) > 0 && (fields?.length === children?.length)) {\n        for (let i = -1, n = fields.length; ++i < n;) {\n            const { type } = fields[i];\n            const data = children[i];\n            for (const next of [data, ...(data?.dictionary?.data || [])]) {\n                collectDictionaries(type.children, next?.children, dictionaries);\n            }\n            if (DataType.isDictionary(type)) {\n                const { id } = type;\n                if (!dictionaries.has(id)) {\n                    if (data?.dictionary) {\n                        dictionaries.set(id, data.dictionary);\n                    }\n                } else if (dictionaries.get(id) !== data.dictionary) {\n                    throw new Error(`Cannot create Schema containing two different dictionaries with the same Id`);\n                }\n            }\n        }\n    }\n    return dictionaries;\n}\n\n/**\n * An internal class used by the `RecordBatchReader` and `RecordBatchWriter`\n * implementations to differentiate between a stream with valid zero-length\n * RecordBatches, and a stream with a Schema message, but no RecordBatches.\n * @see https://github.com/apache/arrow/pull/4373\n * @ignore\n * @private\n */\nexport class _InternalEmptyPlaceholderRecordBatch<T extends TypeMap = any> extends RecordBatch<T> {\n    constructor(schema: Schema<T>) {\n        const children = schema.fields.map((f) => makeData({ type: f.type }));\n        const data = makeData({ type: new Struct<T>(schema.fields), nullCount: 0, children });\n        super(schema, data);\n    }\n}\n", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements.  See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership.  The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License.  You may obtain a copy of the License at\n//\n//   http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied.  See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nexport { MessageHeader } from './fb/message-header.js';\nexport { CompressionType } from './fb/compression-type.js';\n\nexport {\n    Type,\n    BufferType,\n    DateUnit,\n    TimeUnit,\n    Precision,\n    UnionMode,\n    IntervalUnit,\n    MetadataVersion,\n} from './enum.js';\n\nexport { Data, makeData } from './data.js';\nexport type { TypeMap } from './type.js';\nexport {\n    DataType,\n    Null,\n    Bool,\n    Int, Int8, Int16, Int32, Int64, Uint8, Uint16, Uint32, Uint64,\n    Float, Float16, Float32, Float64,\n    Utf8, LargeUtf8,\n    Binary, LargeBinary,\n    FixedSizeBinary,\n    Date_, DateDay, DateMillisecond,\n    Timestamp, TimestampSecond, TimestampMillisecond, TimestampMicrosecond, TimestampNanosecond,\n    Time, TimeSecond, TimeMillisecond, TimeMicrosecond, TimeNanosecond,\n    Decimal,\n    List,\n    Struct,\n    Union, DenseUnion, SparseUnion,\n    Dictionary,\n    Interval, IntervalDayTime, IntervalYearMonth, IntervalMonthDayNano,\n    Duration, DurationSecond, DurationMillisecond, DurationMicrosecond, DurationNanosecond,\n    FixedSizeList,\n    Map_\n} from './type.js';\n\nexport { Table, makeTable, tableFromArrays } from './table.js';\nexport { Vector, makeVector } from './vector.js';\nexport { Visitor } from './visitor.js';\nexport { Schema, Field } from './schema.js';\n\nexport { MapRow } from './row/map.js';\nexport { StructRow } from './row/struct.js';\nexport type { StructRowProxy } from './row/struct.js';\n\nexport { Builder } from './builder.js';\nexport { makeBuilder, vectorFromArray, tableFromJSON, builderThroughIterable, builderThroughAsyncIterable } from './factories.js';\nexport type { BuilderOptions } from './builder.js';\nexport { BoolBuilder } from './builder/bool.js';\nexport { NullBuilder } from './builder/null.js';\nexport { DateBuilder, DateDayBuilder, DateMillisecondBuilder } from './builder/date.js';\nexport { DecimalBuilder } from './builder/decimal.js';\nexport { DictionaryBuilder } from './builder/dictionary.js';\nexport { FixedSizeBinaryBuilder } from './builder/fixedsizebinary.js';\nexport { FloatBuilder, Float16Builder, Float32Builder, Float64Builder } from './builder/float.js';\nexport { IntBuilder, Int8Builder, Int16Builder, Int32Builder, Int64Builder, Uint8Builder, Uint16Builder, Uint32Builder, Uint64Builder } from './builder/int.js';\nexport { TimeBuilder, TimeSecondBuilder, TimeMillisecondBuilder, TimeMicrosecondBuilder, TimeNanosecondBuilder } from './builder/time.js';\nexport { TimestampBuilder, TimestampSecondBuilder, TimestampMillisecondBuilder, TimestampMicrosecondBuilder, TimestampNanosecondBuilder } from './builder/timestamp.js';\nexport { IntervalBuilder, IntervalDayTimeBuilder, IntervalYearMonthBuilder, IntervalMonthDayNanoBuilder } from './builder/interval.js';\nexport { DurationBuilder, DurationSecondBuilder, DurationMillisecondBuilder, DurationMicrosecondBuilder, DurationNanosecondBuilder } from './builder/duration.js';\nexport { Utf8Builder } from './builder/utf8.js';\nexport { LargeUtf8Builder } from './builder/largeutf8.js';\nexport { BinaryBuilder } from './builder/binary.js';\nexport { LargeBinaryBuilder } from './builder/largebinary.js';\nexport { ListBuilder } from './builder/list.js';\nexport { FixedSizeListBuilder } from './builder/fixedsizelist.js';\nexport { MapBuilder } from './builder/map.js';\nexport { StructBuilder } from './builder/struct.js';\nexport { UnionBuilder, SparseUnionBuilder, DenseUnionBuilder } from './builder/union.js';\n\nexport { ByteStream, AsyncByteStream, AsyncByteQueue } from './io/stream.js';\nexport type { ReadableSource, WritableSink } from './io/stream.js';\nexport { RecordBatchReader, RecordBatchFileReader, RecordBatchStreamReader, AsyncRecordBatchFileReader, AsyncRecordBatchStreamReader } from './ipc/reader.js';\nexport { RecordBatchWriter, RecordBatchFileWriter, RecordBatchStreamWriter, RecordBatchJSONWriter } from './ipc/writer.js';\nexport { tableToIPC, tableFromIPC } from './ipc/serialization.js';\nexport { compressionRegistry } from './ipc/compression/registry.js';\nexport type { Codec } from './ipc/compression/registry.js';\nexport { MessageReader, AsyncMessageReader, JSONMessageReader } from './ipc/message.js';\nexport { Message } from './ipc/metadata/message.js';\nexport { RecordBatch } from './recordbatch.js';\nexport type { ArrowJSONLike, FileHandle, Readable, Writable, ReadableWritable, ReadableDOMStreamOptions } from './io/interfaces.js';\n\nimport * as util_bn_ from './util/bn.js';\nimport * as util_int_ from './util/int.js';\nimport * as util_bit_ from './util/bit.js';\nimport * as util_math_ from './util/math.js';\nimport * as util_buffer_ from './util/buffer.js';\nimport * as util_vector_ from './util/vector.js';\nimport * as util_pretty_ from './util/pretty.js';\n\nimport * as util_interval_ from './util/interval.js';\nexport type * from './util/interval.js';\n\nimport { compareSchemas, compareFields, compareTypes } from './visitor/typecomparator.js';\n\n/** @ignore */\nexport const util = {\n    ...util_bn_,\n    ...util_int_,\n    ...util_bit_,\n    ...util_math_,\n    ...util_buffer_,\n    ...util_vector_,\n    ...util_pretty_,\n    ...util_interval_,\n    compareSchemas,\n    compareFields,\n    compareTypes,\n};\n", "// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements.  See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership.  The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License.  You may obtain a copy of the License at\n//\n//   http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied.  See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport streamAdapters from './io/adapters.js';\nimport { Builder } from './builder.js';\nimport { RecordBatchReader, RecordBatchFileReader, RecordBatchStreamReader, } from './ipc/reader.js';\nimport { RecordBatchWriter, RecordBatchFileWriter, RecordBatchStreamWriter, } from './ipc/writer.js';\nimport { toDOMStream } from './io/whatwg/iterable.js';\nimport { builderThroughDOMStream } from './io/whatwg/builder.js';\nimport { recordBatchReaderThroughDOMStream } from './io/whatwg/reader.js';\nimport { recordBatchWriterThroughDOMStream } from './io/whatwg/writer.js';\n\nstreamAdapters.toDOMStream = toDOMStream;\nBuilder['throughDOM'] = builderThroughDOMStream;\nRecordBatchReader['throughDOM'] = recordBatchReaderThroughDOMStream;\nRecordBatchFileReader['throughDOM'] = recordBatchReaderThroughDOMStream;\nRecordBatchStreamReader['throughDOM'] = recordBatchReaderThroughDOMStream;\nRecordBatchWriter['throughDOM'] = recordBatchWriterThroughDOMStream;\nRecordBatchFileWriter['throughDOM'] = recordBatchWriterThroughDOMStream;\nRecordBatchStreamWriter['throughDOM'] = recordBatchWriterThroughDOMStream;\n\nexport type {\n    TypeMap, StructRowProxy,\n    ReadableSource, WritableSink,\n    ArrowJSONLike, FileHandle, Readable, Writable, ReadableWritable, ReadableDOMStreamOptions,\n    IntervalDayTimeObject, IntervalMonthDayNanoObject,\n    Codec\n} from './Arrow.js';\n\nexport {\n    DateUnit, IntervalUnit, MessageHeader, MetadataVersion, Precision, TimeUnit, Type, UnionMode, BufferType,\n    Data, makeData,\n    DataType,\n    Null,\n    Bool,\n    Int, Int8, Int16, Int32, Int64, Uint8, Uint16, Uint32, Uint64,\n    Float, Float16, Float32, Float64,\n    Utf8, LargeUtf8,\n    Binary, LargeBinary,\n    FixedSizeBinary,\n    Date_, DateDay, DateMillisecond,\n    Timestamp, TimestampSecond, TimestampMillisecond, TimestampMicrosecond, TimestampNanosecond,\n    Time, TimeSecond, TimeMillisecond, TimeMicrosecond, TimeNanosecond,\n    Decimal,\n    List,\n    Struct, StructRow,\n    Union, DenseUnion, SparseUnion,\n    Dictionary,\n    Interval, IntervalDayTime, IntervalYearMonth, IntervalMonthDayNano,\n    Duration, DurationSecond, DurationMillisecond, DurationMicrosecond, DurationNanosecond,\n    FixedSizeList,\n    Map_, MapRow,\n    Table, makeTable, tableFromArrays,\n    Schema, Field,\n    Visitor,\n    Vector, makeVector, vectorFromArray, tableFromJSON,\n    ByteStream, AsyncByteStream, AsyncByteQueue,\n    RecordBatchReader, RecordBatchFileReader, RecordBatchStreamReader, AsyncRecordBatchFileReader, AsyncRecordBatchStreamReader,\n    RecordBatchWriter, RecordBatchFileWriter, RecordBatchStreamWriter, RecordBatchJSONWriter,\n    tableFromIPC, tableToIPC,\n    MessageReader, AsyncMessageReader, JSONMessageReader,\n    Message,\n    RecordBatch,\n    util,\n    Builder, makeBuilder, builderThroughIterable, builderThroughAsyncIterable,\n    compressionRegistry, CompressionType\n} from './Arrow.js';\n\nexport {\n    BinaryBuilder, LargeBinaryBuilder,\n    BoolBuilder,\n    DateBuilder, DateDayBuilder, DateMillisecondBuilder,\n    DecimalBuilder,\n    DictionaryBuilder,\n    FixedSizeBinaryBuilder,\n    FixedSizeListBuilder,\n    FloatBuilder, Float16Builder, Float32Builder, Float64Builder,\n    IntervalBuilder, IntervalDayTimeBuilder, IntervalYearMonthBuilder, IntervalMonthDayNanoBuilder,\n    DurationBuilder, DurationSecondBuilder, DurationMillisecondBuilder, DurationMicrosecondBuilder, DurationNanosecondBuilder,\n    IntBuilder, Int8Builder, Int16Builder, Int32Builder, Int64Builder, Uint8Builder, Uint16Builder, Uint32Builder, Uint64Builder,\n    ListBuilder,\n    MapBuilder,\n    NullBuilder,\n    StructBuilder,\n    TimestampBuilder, TimestampSecondBuilder, TimestampMillisecondBuilder, TimestampMicrosecondBuilder, TimestampNanosecondBuilder,\n    TimeBuilder, TimeSecondBuilder, TimeMillisecondBuilder, TimeMicrosecondBuilder, TimeNanosecondBuilder,\n    UnionBuilder, DenseUnionBuilder, SparseUnionBuilder,\n    Utf8Builder, LargeUtf8Builder\n} from './Arrow.js';\n", "// Licensed to the Apache Software Foundation (ASF) under one\n// or more contributor license agreements.  See the NOTICE file\n// distributed with this work for additional information\n// regarding copyright ownership.  The ASF licenses this file\n// to you under the Apache License, Version 2.0 (the\n// \"License\"); you may not use this file except in compliance\n// with the License.  You may obtain a copy of the License at\n//\n//   http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing,\n// software distributed under the License is distributed on an\n// \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n// KIND, either express or implied.  See the License for the\n// specific language governing permissions and limitations\n// under the License.\n\nimport streamAdapters from './io/adapters.js';\nimport { Builder } from './builder.js';\nimport { RecordBatchReader } from './ipc/reader.js';\nimport { RecordBatchWriter } from './ipc/writer.js';\nimport { toNodeStream } from './io/node/iterable.js';\nimport { builderThroughNodeStream } from './io/node/builder.js';\nimport { recordBatchReaderThroughNodeStream } from './io/node/reader.js';\nimport { recordBatchWriterThroughNodeStream } from './io/node/writer.js';\n\nstreamAdapters.toNodeStream = toNodeStream;\nBuilder['throughNode'] = builderThroughNodeStream;\nRecordBatchReader['throughNode'] = recordBatchReaderThroughNodeStream;\nRecordBatchWriter['throughNode'] = recordBatchWriterThroughNodeStream;\n\nexport * from './Arrow.dom.js';\n", null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, "{\n  \"name\": \"@elastic/elasticsearch\",\n  \"version\": \"8.19.1\",\n  \"versionCanary\": \"8.19.0-canary.0\",\n  \"description\": \"The official Elasticsearch client for Node.js\",\n  \"main\": \"./index.js\",\n  \"types\": \"index.d.ts\",\n  \"exports\": {\n    \"require\": \"./index.js\",\n    \"import\": \"./index.js\",\n    \"types\": \"./index.d.ts\"\n  },\n  \"scripts\": {\n    \"test\": \"npm run build && npm run lint && tap\",\n    \"test:unit\": \"npm run build && tap\",\n    \"test:unit-bun\": \"bun run build && bunx tap\",\n    \"test:esm\": \"npm run build && cd test/esm/ && npm install && node test-import.mjs\",\n    \"test:coverage-100\": \"npm run build && tap --coverage --100\",\n    \"test:coverage-report\": \"npm run build && tap --coverage && nyc report --reporter=text-lcov > coverage.lcov\",\n    \"test:coverage-ui\": \"npm run build && tap --coverage --coverage-report=html\",\n    \"test:integration-build\": \"npm run build && node test/integration/index.js\",\n    \"test:integration\": \"npm run test:integration-build && env tap run --jobs=1 --reporter=junit --reporter-file=report-junit.xml generated-tests/\",\n    \"lint\": \"ts-standard src\",\n    \"lint:fix\": \"ts-standard --fix src\",\n    \"license-checker\": \"license-checker --production --onlyAllow='MIT;Apache-2.0;Apache1.1;ISC;BSD-3-Clause;BSD-2-Clause;0BSD'\",\n    \"prebuild\": \"npm run clean-build && npm run lint\",\n    \"build\": \"tsc && rm lib/package.json && mv lib/src/* lib/ && rm -rf lib/src\",\n    \"clean-build\": \"rimraf ./lib && mkdir lib\",\n    \"prepublishOnly\": \"npm run build\"\n  },\n  \"keywords\": [\n    \"elasticsearch\",\n    \"elastic\",\n    \"kibana\",\n    \"mapping\",\n    \"REST\",\n    \"search\",\n    \"client\",\n    \"index\"\n  ],\n  \"contributors\": [\n    {\n      \"name\": \"Elastic Client Library Maintainers\",\n      \"company\": \"Elastic BV\"\n    }\n  ],\n  \"license\": \"Apache-2.0\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/elastic/elasticsearch-js.git\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/elastic/elasticsearch-js/issues\"\n  },\n  \"homepage\": \"http://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/index.html\",\n  \"engines\": {\n    \"node\": \">=18\"\n  },\n  \"devDependencies\": {\n    \"@elastic/request-converter\": \"8.18.0\",\n    \"@sinonjs/fake-timers\": \"14.0.0\",\n    \"@types/debug\": \"4.1.12\",\n    \"@types/ms\": \"2.1.0\",\n    \"@types/node\": \"22.15.2\",\n    \"@types/sinonjs__fake-timers\": \"8.1.5\",\n    \"@types/split2\": \"4.2.3\",\n    \"@types/stoppable\": \"1.1.3\",\n    \"chai\": \"5.2.0\",\n    \"cross-zip\": \"4.0.1\",\n    \"desm\": \"1.3.1\",\n    \"into-stream\": \"8.0.1\",\n    \"js-yaml\": \"4.1.0\",\n    \"license-checker\": \"25.0.1\",\n    \"minimist\": \"1.2.8\",\n    \"ms\": \"2.1.3\",\n    \"node-abort-controller\": \"3.1.1\",\n    \"node-fetch\": \"2.7.0\",\n    \"ora\": \"5.4.1\",\n    \"proxy\": \"2.2.0\",\n    \"rimraf\": \"6.0.1\",\n    \"semver\": \"7.7.1\",\n    \"split2\": \"4.2.0\",\n    \"stoppable\": \"1.1.0\",\n    \"tap\": \"21.1.0\",\n    \"ts-node\": \"10.9.2\",\n    \"ts-standard\": \"12.0.2\",\n    \"typescript\": \"5.8.3\",\n    \"workq\": \"3.0.0\",\n    \"xmlbuilder2\": \"3.1.1\",\n    \"zx\": \"7.2.3\"\n  },\n  \"dependencies\": {\n    \"@elastic/transport\": \"^8.9.6\",\n    \"apache-arrow\": \"18.x - 21.x\",\n    \"tslib\": \"^2.4.0\"\n  },\n  \"tap\": {\n    \"disable-coverage\": true,\n    \"files\": [\n      \"test/unit/{*,**/*}.test.ts\"\n    ]\n  }\n}\n", null, "/*\n * Licensed to Elasticsearch B.V. under one or more contributor\n * license agreements. See the NOTICE file distributed with\n * this work for additional information regarding copyright\n * ownership. Elasticsearch B.V. licenses this file to you under\n * the Apache License, Version 2.0 (the \"License\"); you may\n * not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *    http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied.  See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\n'use strict'\n\nconst {\n  Diagnostic,\n  Transport,\n  WeightedConnectionPool,\n  ClusterConnectionPool,\n  BaseConnectionPool,\n  CloudConnectionPool,\n  BaseConnection,\n  HttpConnection,\n  UndiciConnection,\n  Serializer,\n  errors,\n  events\n} = require('@elastic/transport')\n\nconst { default: Client } = require('./lib/client')\nconst { default: SniffingTransport } = require('./lib/sniffingTransport')\n\nmodule.exports = {\n  Client,\n  SniffingTransport,\n  Diagnostic,\n  Transport,\n  WeightedConnectionPool,\n  ClusterConnectionPool,\n  BaseConnectionPool,\n  CloudConnectionPool,\n  BaseConnection,\n  HttpConnection,\n  UndiciConnection,\n  Serializer,\n  errors,\n  events\n}\n", "/**\n Transformer function to transform log data as provided by winston into\n a message structure which is more appropriate for indexing in ES.\n\n @param {Object} logData\n @param {Object} logData.message - the log message\n @param {Object} logData.level - the log level\n @param {Object} logData.meta - the log meta data (JSON object)\n @returns {Object} transformed message\n */\nconst transformer = function transformer(logData) {\n  const transformed = {};\n  transformed['@timestamp'] = logData.timestamp ? logData.timestamp : new Date().toISOString();\n  transformed.message = logData.message;\n  transformed.severity = logData.level;\n  transformed.fields = logData.meta;\n\n  if (logData.meta['transaction.id']) transformed.transaction = { id: logData.meta['transaction.id'] };\n  if (logData.meta['trace.id']) transformed.trace = { id: logData.meta['trace.id'] };\n  if (logData.meta['span.id']) transformed.span = { id: logData.meta['span.id'] };\n\n  return transformed;\n};\n\nmodule.exports = transformer;\n", "\"use strict\";\n\nvar domain; // The domain module is executed on demand\nvar hasSetImmediate = typeof setImmediate === \"function\";\n\n// Use the fastest means possible to execute a task in its own turn, with\n// priority over other events including network IO events in Node.js.\n//\n// An exception thrown by a task will permanently interrupt the processing of\n// subsequent tasks. The higher level `asap` function ensures that if an\n// exception is thrown by a task, that the task queue will continue flushing as\n// soon as possible, but if you use `rawAsap` directly, you are responsible to\n// either ensure that no exceptions are thrown from your task, or to manually\n// call `rawAsap.requestFlush` if an exception is thrown.\nmodule.exports = rawAsap;\nfunction rawAsap(task) {\n    if (!queue.length) {\n        requestFlush();\n        flushing = true;\n    }\n    // Avoids a function call\n    queue[queue.length] = task;\n}\n\nvar queue = [];\n// Once a flush has been requested, no further calls to `requestFlush` are\n// necessary until the next `flush` completes.\nvar flushing = false;\n// The position of the next task to execute in the task queue. This is\n// preserved between calls to `flush` so that it can be resumed if\n// a task throws an exception.\nvar index = 0;\n// If a task schedules additional tasks recursively, the task queue can grow\n// unbounded. To prevent memory excaustion, the task queue will periodically\n// truncate already-completed tasks.\nvar capacity = 1024;\n\n// The flush function processes all tasks that have been scheduled with\n// `rawAsap` unless and until one of those tasks throws an exception.\n// If a task throws an exception, `flush` ensures that its state will remain\n// consistent and will resume where it left off when called again.\n// However, `flush` does not make any arrangements to be called again if an\n// exception is thrown.\nfunction flush() {\n    while (index < queue.length) {\n        var currentIndex = index;\n        // Advance the index before calling the task. This ensures that we will\n        // begin flushing on the next task the task throws an error.\n        index = index + 1;\n        queue[currentIndex].call();\n        // Prevent leaking memory for long chains of recursive calls to `asap`.\n        // If we call `asap` within tasks scheduled by `asap`, the queue will\n        // grow, but to avoid an O(n) walk for every task we execute, we don't\n        // shift tasks off the queue after they have been executed.\n        // Instead, we periodically shift 1024 tasks off the queue.\n        if (index > capacity) {\n            // Manually shift all values starting at the index back to the\n            // beginning of the queue.\n            for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) {\n                queue[scan] = queue[scan + index];\n            }\n            queue.length -= index;\n            index = 0;\n        }\n    }\n    queue.length = 0;\n    index = 0;\n    flushing = false;\n}\n\nrawAsap.requestFlush = requestFlush;\nfunction requestFlush() {\n    // Ensure flushing is not bound to any domain.\n    // It is not sufficient to exit the domain, because domains exist on a stack.\n    // To execute code outside of any domain, the following dance is necessary.\n    var parentDomain = process.domain;\n    if (parentDomain) {\n        if (!domain) {\n            // Lazy execute the domain module.\n            // Only employed if the user elects to use domains.\n            domain = require(\"domain\");\n        }\n        domain.active = process.domain = null;\n    }\n\n    // `setImmediate` is slower that `process.nextTick`, but `process.nextTick`\n    // cannot handle recursion.\n    // `requestFlush` will only be called recursively from `asap.js`, to resume\n    // flushing after an error is thrown into a domain.\n    // Conveniently, `setImmediate` was introduced in the same version\n    // `process.nextTick` started throwing recursion errors.\n    if (flushing && hasSetImmediate) {\n        setImmediate(flush);\n    } else {\n        process.nextTick(flush);\n    }\n\n    if (parentDomain) {\n        domain.active = process.domain = parentDomain;\n    }\n}\n", "'use strict';\n\nvar asap = require('asap/raw');\n\nfunction noop() {}\n\n// States:\n//\n// 0 - pending\n// 1 - fulfilled with _value\n// 2 - rejected with _value\n// 3 - adopted the state of another promise, _value\n//\n// once the state is no longer pending (0) it is immutable\n\n// All `_` prefixed properties will be reduced to `_{random number}`\n// at build time to obfuscate them and discourage their use.\n// We don't use symbols or Object.defineProperty to fully hide them\n// because the performance isn't good enough.\n\n\n// to avoid using try/catch inside critical functions, we\n// extract them to here.\nvar LAST_ERROR = null;\nvar IS_ERROR = {};\nfunction getThen(obj) {\n  try {\n    return obj.then;\n  } catch (ex) {\n    LAST_ERROR = ex;\n    return IS_ERROR;\n  }\n}\n\nfunction tryCallOne(fn, a) {\n  try {\n    return fn(a);\n  } catch (ex) {\n    LAST_ERROR = ex;\n    return IS_ERROR;\n  }\n}\nfunction tryCallTwo(fn, a, b) {\n  try {\n    fn(a, b);\n  } catch (ex) {\n    LAST_ERROR = ex;\n    return IS_ERROR;\n  }\n}\n\nmodule.exports = Promise;\n\nfunction Promise(fn) {\n  if (typeof this !== 'object') {\n    throw new TypeError('Promises must be constructed via new');\n  }\n  if (typeof fn !== 'function') {\n    throw new TypeError('Promise constructor\\'s argument is not a function');\n  }\n  this._x = 0;\n  this._y = 0;\n  this._z = null;\n  this._A = null;\n  if (fn === noop) return;\n  doResolve(fn, this);\n}\nPromise._B = null;\nPromise._C = null;\nPromise._D = noop;\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n  if (this.constructor !== Promise) {\n    return safeThen(this, onFulfilled, onRejected);\n  }\n  var res = new Promise(noop);\n  handle(this, new Handler(onFulfilled, onRejected, res));\n  return res;\n};\n\nfunction safeThen(self, onFulfilled, onRejected) {\n  return new self.constructor(function (resolve, reject) {\n    var res = new Promise(noop);\n    res.then(resolve, reject);\n    handle(self, new Handler(onFulfilled, onRejected, res));\n  });\n}\nfunction handle(self, deferred) {\n  while (self._y === 3) {\n    self = self._z;\n  }\n  if (Promise._B) {\n    Promise._B(self);\n  }\n  if (self._y === 0) {\n    if (self._x === 0) {\n      self._x = 1;\n      self._A = deferred;\n      return;\n    }\n    if (self._x === 1) {\n      self._x = 2;\n      self._A = [self._A, deferred];\n      return;\n    }\n    self._A.push(deferred);\n    return;\n  }\n  handleResolved(self, deferred);\n}\n\nfunction handleResolved(self, deferred) {\n  asap(function() {\n    var cb = self._y === 1 ? deferred.onFulfilled : deferred.onRejected;\n    if (cb === null) {\n      if (self._y === 1) {\n        resolve(deferred.promise, self._z);\n      } else {\n        reject(deferred.promise, self._z);\n      }\n      return;\n    }\n    var ret = tryCallOne(cb, self._z);\n    if (ret === IS_ERROR) {\n      reject(deferred.promise, LAST_ERROR);\n    } else {\n      resolve(deferred.promise, ret);\n    }\n  });\n}\nfunction resolve(self, newValue) {\n  // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n  if (newValue === self) {\n    return reject(\n      self,\n      new TypeError('A promise cannot be resolved with itself.')\n    );\n  }\n  if (\n    newValue &&\n    (typeof newValue === 'object' || typeof newValue === 'function')\n  ) {\n    var then = getThen(newValue);\n    if (then === IS_ERROR) {\n      return reject(self, LAST_ERROR);\n    }\n    if (\n      then === self.then &&\n      newValue instanceof Promise\n    ) {\n      self._y = 3;\n      self._z = newValue;\n      finale(self);\n      return;\n    } else if (typeof then === 'function') {\n      doResolve(then.bind(newValue), self);\n      return;\n    }\n  }\n  self._y = 1;\n  self._z = newValue;\n  finale(self);\n}\n\nfunction reject(self, newValue) {\n  self._y = 2;\n  self._z = newValue;\n  if (Promise._C) {\n    Promise._C(self, newValue);\n  }\n  finale(self);\n}\nfunction finale(self) {\n  if (self._x === 1) {\n    handle(self, self._A);\n    self._A = null;\n  }\n  if (self._x === 2) {\n    for (var i = 0; i < self._A.length; i++) {\n      handle(self, self._A[i]);\n    }\n    self._A = null;\n  }\n}\n\nfunction Handler(onFulfilled, onRejected, promise){\n  this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n  this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n  this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, promise) {\n  var done = false;\n  var res = tryCallTwo(fn, function (value) {\n    if (done) return;\n    done = true;\n    resolve(promise, value);\n  }, function (reason) {\n    if (done) return;\n    done = true;\n    reject(promise, reason);\n  });\n  if (!done && res === IS_ERROR) {\n    done = true;\n    reject(promise, LAST_ERROR);\n  }\n}\n", "'use strict';\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\nPromise.prototype.done = function (onFulfilled, onRejected) {\n  var self = arguments.length ? this.then.apply(this, arguments) : this;\n  self.then(null, function (err) {\n    setTimeout(function () {\n      throw err;\n    }, 0);\n  });\n};\n", "'use strict';\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\nPromise.prototype.finally = function (f) {\n  return this.then(function (value) {\n    return Promise.resolve(f()).then(function () {\n      return value;\n    });\n  }, function (err) {\n    return Promise.resolve(f()).then(function () {\n      throw err;\n    });\n  });\n};\n", "'use strict';\n\n//This file contains the ES6 extensions to the core Promises/A+ API\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\n\n/* Static Functions */\n\nvar TRUE = valuePromise(true);\nvar FALSE = valuePromise(false);\nvar NULL = valuePromise(null);\nvar UNDEFINED = valuePromise(undefined);\nvar ZERO = valuePromise(0);\nvar EMPTYSTRING = valuePromise('');\n\nfunction valuePromise(value) {\n  var p = new Promise(Promise._D);\n  p._y = 1;\n  p._z = value;\n  return p;\n}\nPromise.resolve = function (value) {\n  if (value instanceof Promise) return value;\n\n  if (value === null) return NULL;\n  if (value === undefined) return UNDEFINED;\n  if (value === true) return TRUE;\n  if (value === false) return FALSE;\n  if (value === 0) return ZERO;\n  if (value === '') return EMPTYSTRING;\n\n  if (typeof value === 'object' || typeof value === 'function') {\n    try {\n      var then = value.then;\n      if (typeof then === 'function') {\n        return new Promise(then.bind(value));\n      }\n    } catch (ex) {\n      return new Promise(function (resolve, reject) {\n        reject(ex);\n      });\n    }\n  }\n  return valuePromise(value);\n};\n\nvar iterableToArray = function (iterable) {\n  if (typeof Array.from === 'function') {\n    // ES2015+, iterables exist\n    iterableToArray = Array.from;\n    return Array.from(iterable);\n  }\n\n  // ES5, only arrays and array-likes exist\n  iterableToArray = function (x) { return Array.prototype.slice.call(x); };\n  return Array.prototype.slice.call(iterable);\n}\n\nPromise.all = function (arr) {\n  var args = iterableToArray(arr);\n\n  return new Promise(function (resolve, reject) {\n    if (args.length === 0) return resolve([]);\n    var remaining = args.length;\n    function res(i, val) {\n      if (val && (typeof val === 'object' || typeof val === 'function')) {\n        if (val instanceof Promise && val.then === Promise.prototype.then) {\n          while (val._y === 3) {\n            val = val._z;\n          }\n          if (val._y === 1) return res(i, val._z);\n          if (val._y === 2) reject(val._z);\n          val.then(function (val) {\n            res(i, val);\n          }, reject);\n          return;\n        } else {\n          var then = val.then;\n          if (typeof then === 'function') {\n            var p = new Promise(then.bind(val));\n            p.then(function (val) {\n              res(i, val);\n            }, reject);\n            return;\n          }\n        }\n      }\n      args[i] = val;\n      if (--remaining === 0) {\n        resolve(args);\n      }\n    }\n    for (var i = 0; i < args.length; i++) {\n      res(i, args[i]);\n    }\n  });\n};\n\nfunction onSettledFulfill(value) {\n  return { status: 'fulfilled', value: value };\n}\nfunction onSettledReject(reason) {\n  return { status: 'rejected', reason: reason };\n}\nfunction mapAllSettled(item) {\n  if(item && (typeof item === 'object' || typeof item === 'function')){\n    if(item instanceof Promise && item.then === Promise.prototype.then){\n      return item.then(onSettledFulfill, onSettledReject);\n    }\n    var then = item.then;\n    if (typeof then === 'function') {\n      return new Promise(then.bind(item)).then(onSettledFulfill, onSettledReject)\n    }\n  }\n\n  return onSettledFulfill(item);\n}\nPromise.allSettled = function (iterable) {\n  return Promise.all(iterableToArray(iterable).map(mapAllSettled));\n};\n\nPromise.reject = function (value) {\n  return new Promise(function (resolve, reject) {\n    reject(value);\n  });\n};\n\nPromise.race = function (values) {\n  return new Promise(function (resolve, reject) {\n    iterableToArray(values).forEach(function(value){\n      Promise.resolve(value).then(resolve, reject);\n    });\n  });\n};\n\n/* Prototype Methods */\n\nPromise.prototype['catch'] = function (onRejected) {\n  return this.then(null, onRejected);\n};\n\nfunction getAggregateError(errors){\n  if(typeof AggregateError === 'function'){\n    return new AggregateError(errors,'All promises were rejected');\n  }\n\n  var error = new Error('All promises were rejected');\n\n  error.name = 'AggregateError';\n  error.errors = errors;\n\n  return error;\n}\n\nPromise.any = function promiseAny(values) {\n  return new Promise(function(resolve, reject) {\n    var promises = iterableToArray(values);\n    var hasResolved = false;\n    var rejectionReasons = [];\n\n    function resolveOnce(value) {\n      if (!hasResolved) {\n        hasResolved = true;\n        resolve(value);\n      }\n    }\n\n    function rejectionCheck(reason) {\n      rejectionReasons.push(reason);\n\n      if (rejectionReasons.length === promises.length) {\n        reject(getAggregateError(rejectionReasons));\n      }\n    }\n\n    if(promises.length === 0){\n      reject(getAggregateError(rejectionReasons));\n    } else {\n      promises.forEach(function(value){\n        Promise.resolve(value).then(resolveOnce, rejectionCheck);\n      });\n    }\n  });\n};\n", "\"use strict\";\n\nvar rawAsap = require(\"./raw\");\nvar freeTasks = [];\n\n/**\n * Calls a task as soon as possible after returning, in its own event, with\n * priority over IO events. An exception thrown in a task can be handled by\n * `process.on(\"uncaughtException\") or `domain.on(\"error\")`, but will otherwise\n * crash the process. If the error is handled, all subsequent tasks will\n * resume.\n *\n * @param {{call}} task A callable object, typically a function that takes no\n * arguments.\n */\nmodule.exports = asap;\nfunction asap(task) {\n    var rawTask;\n    if (freeTasks.length) {\n        rawTask = freeTasks.pop();\n    } else {\n        rawTask = new RawTask();\n    }\n    rawTask.task = task;\n    rawTask.domain = process.domain;\n    rawAsap(rawTask);\n}\n\nfunction RawTask() {\n    this.task = null;\n    this.domain = null;\n}\n\nRawTask.prototype.call = function () {\n    if (this.domain) {\n        this.domain.enter();\n    }\n    var threw = true;\n    try {\n        this.task.call();\n        threw = false;\n        // If the task throws an exception (presumably) Node.js restores the\n        // domain stack for the next event.\n        if (this.domain) {\n            this.domain.exit();\n        }\n    } finally {\n        // We use try/finally and a threw flag to avoid messing up stack traces\n        // when we catch and release errors.\n        if (threw) {\n            // In Node.js, uncaught exceptions are considered fatal errors.\n            // Re-throw them to interrupt flushing!\n            // Ensure that flushing continues if an uncaught exception is\n            // suppressed listening process.on(\"uncaughtException\") or\n            // domain.on(\"error\").\n            rawAsap.requestFlush();\n        }\n        // If the task threw an error, we do not want to exit the domain here.\n        // Exiting the domain would prevent the domain from catching the error.\n        this.task = null;\n        this.domain = null;\n        freeTasks.push(this);\n    }\n};\n\n", "'use strict';\n\n// This file contains then/promise specific extensions that are only useful\n// for node.js interop\n\nvar Promise = require('./core.js');\nvar asap = require('asap');\n\nmodule.exports = Promise;\n\n/* Static Functions */\n\nPromise.denodeify = function (fn, argumentCount) {\n  if (\n    typeof argumentCount === 'number' && argumentCount !== Infinity\n  ) {\n    return denodeifyWithCount(fn, argumentCount);\n  } else {\n    return denodeifyWithoutCount(fn);\n  }\n};\n\nvar callbackFn = (\n  'function (err, res) {' +\n  'if (err) { rj(err); } else { rs(res); }' +\n  '}'\n);\nfunction denodeifyWithCount(fn, argumentCount) {\n  var args = [];\n  for (var i = 0; i < argumentCount; i++) {\n    args.push('a' + i);\n  }\n  var body = [\n    'return function (' + args.join(',') + ') {',\n    'var self = this;',\n    'return new Promise(function (rs, rj) {',\n    'var res = fn.call(',\n    ['self'].concat(args).concat([callbackFn]).join(','),\n    ');',\n    'if (res &&',\n    '(typeof res === \"object\" || typeof res === \"function\") &&',\n    'typeof res.then === \"function\"',\n    ') {rs(res);}',\n    '});',\n    '};'\n  ].join('');\n  return Function(['Promise', 'fn'], body)(Promise, fn);\n}\nfunction denodeifyWithoutCount(fn) {\n  var fnLength = Math.max(fn.length - 1, 3);\n  var args = [];\n  for (var i = 0; i < fnLength; i++) {\n    args.push('a' + i);\n  }\n  var body = [\n    'return function (' + args.join(',') + ') {',\n    'var self = this;',\n    'var args;',\n    'var argLength = arguments.length;',\n    'if (arguments.length > ' + fnLength + ') {',\n    'args = new Array(arguments.length + 1);',\n    'for (var i = 0; i < arguments.length; i++) {',\n    'args[i] = arguments[i];',\n    '}',\n    '}',\n    'return new Promise(function (rs, rj) {',\n    'var cb = ' + callbackFn + ';',\n    'var res;',\n    'switch (argLength) {',\n    args.concat(['extra']).map(function (_, index) {\n      return (\n        'case ' + (index) + ':' +\n        'res = fn.call(' + ['self'].concat(args.slice(0, index)).concat('cb').join(',') + ');' +\n        'break;'\n      );\n    }).join(''),\n    'default:',\n    'args[argLength] = cb;',\n    'res = fn.apply(self, args);',\n    '}',\n    \n    'if (res &&',\n    '(typeof res === \"object\" || typeof res === \"function\") &&',\n    'typeof res.then === \"function\"',\n    ') {rs(res);}',\n    '});',\n    '};'\n  ].join('');\n\n  return Function(\n    ['Promise', 'fn'],\n    body\n  )(Promise, fn);\n}\n\nPromise.nodeify = function (fn) {\n  return function () {\n    var args = Array.prototype.slice.call(arguments);\n    var callback =\n      typeof args[args.length - 1] === 'function' ? args.pop() : null;\n    var ctx = this;\n    try {\n      return fn.apply(this, arguments).nodeify(callback, ctx);\n    } catch (ex) {\n      if (callback === null || typeof callback == 'undefined') {\n        return new Promise(function (resolve, reject) {\n          reject(ex);\n        });\n      } else {\n        asap(function () {\n          callback.call(ctx, ex);\n        })\n      }\n    }\n  }\n};\n\nPromise.prototype.nodeify = function (callback, ctx) {\n  if (typeof callback != 'function') return this;\n\n  this.then(function (value) {\n    asap(function () {\n      callback.call(ctx, null, value);\n    });\n  }, function (err) {\n    asap(function () {\n      callback.call(ctx, err);\n    });\n  });\n};\n", "'use strict';\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\nPromise.enableSynchronous = function () {\n  Promise.prototype.isPending = function() {\n    return this.getState() == 0;\n  };\n\n  Promise.prototype.isFulfilled = function() {\n    return this.getState() == 1;\n  };\n\n  Promise.prototype.isRejected = function() {\n    return this.getState() == 2;\n  };\n\n  Promise.prototype.getValue = function () {\n    if (this._y === 3) {\n      return this._z.getValue();\n    }\n\n    if (!this.isFulfilled()) {\n      throw new Error('Cannot get a value of an unfulfilled promise.');\n    }\n\n    return this._z;\n  };\n\n  Promise.prototype.getReason = function () {\n    if (this._y === 3) {\n      return this._z.getReason();\n    }\n\n    if (!this.isRejected()) {\n      throw new Error('Cannot get a rejection reason of a non-rejected promise.');\n    }\n\n    return this._z;\n  };\n\n  Promise.prototype.getState = function () {\n    if (this._y === 3) {\n      return this._z.getState();\n    }\n    if (this._y === -1 || this._y === -2) {\n      return 0;\n    }\n\n    return this._y;\n  };\n};\n\nPromise.disableSynchronous = function() {\n  Promise.prototype.isPending = undefined;\n  Promise.prototype.isFulfilled = undefined;\n  Promise.prototype.isRejected = undefined;\n  Promise.prototype.getValue = undefined;\n  Promise.prototype.getReason = undefined;\n  Promise.prototype.getState = undefined;\n};\n", "'use strict';\n\nmodule.exports = require('./core.js');\nrequire('./done.js');\nrequire('./finally.js');\nrequire('./es6-extensions.js');\nrequire('./node-extensions.js');\nrequire('./synchronous.js');\n", "'use strict';\n\nmodule.exports = require('./lib')\n", "function RetryOperation(timeouts, options) {\n  // Compatibility for the old (timeouts, retryForever) signature\n  if (typeof options === 'boolean') {\n    options = { forever: options };\n  }\n\n  this._originalTimeouts = JSON.parse(JSON.stringify(timeouts));\n  this._timeouts = timeouts;\n  this._options = options || {};\n  this._maxRetryTime = options && options.maxRetryTime || Infinity;\n  this._fn = null;\n  this._errors = [];\n  this._attempts = 1;\n  this._operationTimeout = null;\n  this._operationTimeoutCb = null;\n  this._timeout = null;\n  this._operationStart = null;\n  this._timer = null;\n\n  if (this._options.forever) {\n    this._cachedTimeouts = this._timeouts.slice(0);\n  }\n}\nmodule.exports = RetryOperation;\n\nRetryOperation.prototype.reset = function() {\n  this._attempts = 1;\n  this._timeouts = this._originalTimeouts.slice(0);\n}\n\nRetryOperation.prototype.stop = function() {\n  if (this._timeout) {\n    clearTimeout(this._timeout);\n  }\n  if (this._timer) {\n    clearTimeout(this._timer);\n  }\n\n  this._timeouts       = [];\n  this._cachedTimeouts = null;\n};\n\nRetryOperation.prototype.retry = function(err) {\n  if (this._timeout) {\n    clearTimeout(this._timeout);\n  }\n\n  if (!err) {\n    return false;\n  }\n  var currentTime = new Date().getTime();\n  if (err && currentTime - this._operationStart >= this._maxRetryTime) {\n    this._errors.push(err);\n    this._errors.unshift(new Error('RetryOperation timeout occurred'));\n    return false;\n  }\n\n  this._errors.push(err);\n\n  var timeout = this._timeouts.shift();\n  if (timeout === undefined) {\n    if (this._cachedTimeouts) {\n      // retry forever, only keep last error\n      this._errors.splice(0, this._errors.length - 1);\n      timeout = this._cachedTimeouts.slice(-1);\n    } else {\n      return false;\n    }\n  }\n\n  var self = this;\n  this._timer = setTimeout(function() {\n    self._attempts++;\n\n    if (self._operationTimeoutCb) {\n      self._timeout = setTimeout(function() {\n        self._operationTimeoutCb(self._attempts);\n      }, self._operationTimeout);\n\n      if (self._options.unref) {\n          self._timeout.unref();\n      }\n    }\n\n    self._fn(self._attempts);\n  }, timeout);\n\n  if (this._options.unref) {\n      this._timer.unref();\n  }\n\n  return true;\n};\n\nRetryOperation.prototype.attempt = function(fn, timeoutOps) {\n  this._fn = fn;\n\n  if (timeoutOps) {\n    if (timeoutOps.timeout) {\n      this._operationTimeout = timeoutOps.timeout;\n    }\n    if (timeoutOps.cb) {\n      this._operationTimeoutCb = timeoutOps.cb;\n    }\n  }\n\n  var self = this;\n  if (this._operationTimeoutCb) {\n    this._timeout = setTimeout(function() {\n      self._operationTimeoutCb();\n    }, self._operationTimeout);\n  }\n\n  this._operationStart = new Date().getTime();\n\n  this._fn(this._attempts);\n};\n\nRetryOperation.prototype.try = function(fn) {\n  console.log('Using RetryOperation.try() is deprecated');\n  this.attempt(fn);\n};\n\nRetryOperation.prototype.start = function(fn) {\n  console.log('Using RetryOperation.start() is deprecated');\n  this.attempt(fn);\n};\n\nRetryOperation.prototype.start = RetryOperation.prototype.try;\n\nRetryOperation.prototype.errors = function() {\n  return this._errors;\n};\n\nRetryOperation.prototype.attempts = function() {\n  return this._attempts;\n};\n\nRetryOperation.prototype.mainError = function() {\n  if (this._errors.length === 0) {\n    return null;\n  }\n\n  var counts = {};\n  var mainError = null;\n  var mainErrorCount = 0;\n\n  for (var i = 0; i < this._errors.length; i++) {\n    var error = this._errors[i];\n    var message = error.message;\n    var count = (counts[message] || 0) + 1;\n\n    counts[message] = count;\n\n    if (count >= mainErrorCount) {\n      mainError = error;\n      mainErrorCount = count;\n    }\n  }\n\n  return mainError;\n};\n", "var RetryOperation = require('./retry_operation');\n\nexports.operation = function(options) {\n  var timeouts = exports.timeouts(options);\n  return new RetryOperation(timeouts, {\n      forever: options && (options.forever || options.retries === Infinity),\n      unref: options && options.unref,\n      maxRetryTime: options && options.maxRetryTime\n  });\n};\n\nexports.timeouts = function(options) {\n  if (options instanceof Array) {\n    return [].concat(options);\n  }\n\n  var opts = {\n    retries: 10,\n    factor: 2,\n    minTimeout: 1 * 1000,\n    maxTimeout: Infinity,\n    randomize: false\n  };\n  for (var key in options) {\n    opts[key] = options[key];\n  }\n\n  if (opts.minTimeout > opts.maxTimeout) {\n    throw new Error('minTimeout is greater than maxTimeout');\n  }\n\n  var timeouts = [];\n  for (var i = 0; i < opts.retries; i++) {\n    timeouts.push(this.createTimeout(i, opts));\n  }\n\n  if (options && options.forever && !timeouts.length) {\n    timeouts.push(this.createTimeout(i, opts));\n  }\n\n  // sort the array numerically ascending\n  timeouts.sort(function(a,b) {\n    return a - b;\n  });\n\n  return timeouts;\n};\n\nexports.createTimeout = function(attempt, opts) {\n  var random = (opts.randomize)\n    ? (Math.random() + 1)\n    : 1;\n\n  var timeout = Math.round(random * Math.max(opts.minTimeout, 1) * Math.pow(opts.factor, attempt));\n  timeout = Math.min(timeout, opts.maxTimeout);\n\n  return timeout;\n};\n\nexports.wrap = function(obj, options, methods) {\n  if (options instanceof Array) {\n    methods = options;\n    options = null;\n  }\n\n  if (!methods) {\n    methods = [];\n    for (var key in obj) {\n      if (typeof obj[key] === 'function') {\n        methods.push(key);\n      }\n    }\n  }\n\n  for (var i = 0; i < methods.length; i++) {\n    var method   = methods[i];\n    var original = obj[method];\n\n    obj[method] = function retryWrapper(original) {\n      var op       = exports.operation(options);\n      var args     = Array.prototype.slice.call(arguments, 1);\n      var callback = args.pop();\n\n      args.push(function(err) {\n        if (op.retry(err)) {\n          return;\n        }\n        if (err) {\n          arguments[0] = op.mainError();\n        }\n        callback.apply(this, arguments);\n      });\n\n      op.attempt(function() {\n        original.apply(obj, args);\n      });\n    }.bind(obj, original);\n    obj[method].options = options;\n  }\n};\n", "module.exports = require('./lib/retry');", "/* eslint no-underscore-dangle: ['error', { 'allow': ['_index', '_type'] }] */\n\nconst Promise = require('promise');\nconst debug = require('debug')('winston:elasticsearch');\nconst retry = require('retry');\n\nconst BulkWriter = function BulkWriter(transport, client, options) {\n  this.transport = transport;\n  this.client = client;\n  this.options = options;\n  this.interval = options.interval || 5000;\n  this.healthCheckTimeout = options.healthCheckTimeout || '30s';\n  this.healthCheckWaitForStatus = options.healthCheckWaitForStatus || 'yellow';\n  this.healthCheckWaitForNodes = options.healthCheckWaitForNodes || '>=1';\n  this.waitForActiveShards = options.waitForActiveShards || '1';\n  this.pipeline = options.pipeline;\n  this.retryLimit = options.retryLimit || 400;\n\n  this.bulk = []; // bulk to be flushed\n  this.running = false;\n  this.timer = false;\n  debug('created', this);\n};\n\nBulkWriter.prototype.start = function start() {\n  this.checkEsConnection(this.retryLimit);\n  debug('started');\n};\n\nBulkWriter.prototype.stop = function stop() {\n  this.running = false;\n  if (!this.timer) {\n    return;\n  }\n  clearTimeout(this.timer);\n  this.timer = null;\n  debug('stopped');\n};\n\nBulkWriter.prototype.schedule = function schedule() {\n  const thiz = this;\n  this.timer = setTimeout(() => {\n    thiz.tick();\n  }, this.interval);\n};\n\nBulkWriter.prototype.tick = function tick() {\n  debug('tick');\n  const thiz = this;\n  if (!this.running) {\n    return;\n  }\n  this.flush()\n    .then(() => {\n    // Emulate finally with last .then()\n    })\n    .then(() => {\n    // finally()\n      thiz.schedule();\n    });\n};\n\nBulkWriter.prototype.flush = function flush() {\n  // write bulk to elasticsearch\n  if (this.bulk.length === 0) {\n    debug('nothing to flush');\n    return new Promise((resolve) => {\n      // pause the buffering process when there's no more bulk to flush\n      // thus allowing the process to be terminated\n      this.running = false;\n      return resolve();\n    });\n  }\n  const bulk = this.bulk.concat();\n  this.bulk = [];\n  const body = [];\n  // eslint-disable-next-line object-curly-newline\n  bulk.forEach(({ index, doc, attempts }) => {\n    body.push(\n      {\n        [this.options.dataStream ? 'create' : 'index']: {\n          _index: index,\n          pipeline: this.pipeline\n        },\n        attempts\n      },\n      doc\n    );\n  });\n  debug('bulk writer is going to write', body);\n  return this.write(body);\n};\n\nBulkWriter.prototype.append = function append(index, doc) {\n  if (this.options.buffering === true) {\n    if (\n      typeof this.options.bufferLimit === 'number'\n      && this.bulk.length >= this.options.bufferLimit\n    ) {\n      debug('message discarded because buffer limit exceeded');\n      // @todo: i guess we can use callback to notify caller\n      return;\n    }\n    this.bulk.unshift({\n      index,\n      doc,\n      attempts: 0\n    });\n    // resume the buffering process\n    if (!this.running) {\n      this.running = true;\n      this.tick();\n    }\n  } else {\n    this.write([\n      { [this.options.dataStream ? 'create' : 'index']: { _index: index, pipeline: this.pipeline } },\n      doc\n    ]);\n  }\n};\n\nBulkWriter.prototype.write = function write(body) {\n  const thiz = this;\n  const operation = [thiz.options.dataStream ? 'create' : 'index'];\n  debug('writing to ES');\n  return this.client\n    .bulk({\n      body,\n      wait_for_active_shards: this.waitForActiveShards,\n      timeout: this.interval + 'ms',\n    })\n    .then((res) => {\n      if (res && res.errors && res.items) {\n        const err = new Error('Elasticsearch error');\n        res.items.forEach((item, itemIndex) => {\n          const bodyData = body[itemIndex * 2 + 1];\n          const opKey = Object.keys(item)[0];\n          if (item[opKey] && item[opKey].error) {\n            debug('elasticsearch indexing error', item[opKey].error);\n            thiz.options.internalLogger('elasticsearch indexing error', item[opKey].error, bodyData);\n            err.indexError = item[opKey].error;\n            err.causedBy = bodyData;\n          }\n        });\n        throw err;\n      }\n    })\n    .catch((e) => {\n      // rollback this.bulk array\n      const newBody = [];\n      body.forEach((chunk, index, chunks) => {\n        const { attempts, created } = chunk;\n        if (!created && attempts < thiz.retryLimit) {\n          newBody.push({\n            index: chunk[operation]._index,\n            doc: chunks[index + 1],\n            attempts: attempts + 1,\n          });\n        } else {\n          debug('retry attempts exceeded');\n        }\n      });\n\n      const lenSum = thiz.bulk.length + newBody.length;\n      if (thiz.options.bufferLimit && lenSum >= thiz.options.bufferLimit) {\n        thiz.bulk = newBody.concat(\n          thiz.bulk.slice(0, thiz.options.bufferLimit - newBody.length)\n        );\n      } else {\n        thiz.bulk = newBody.concat(thiz.bulk);\n      }\n      debug('error occurred during writing', e);\n      this.stop();\n      this.checkEsConnection(thiz.retryLimit)\n        .catch((err) => thiz.transport.emit('error', err));\n      thiz.transport.emit('warning', e);\n\n      thiz.bulk.forEach((bulk) => {\n        if (bulk.attempts === thiz.retryLimit) {\n          this.transport.emit('error', e);\n        }\n      });\n    });\n};\n\nBulkWriter.prototype.checkEsConnection = function checkEsConnection(retryLimit) {\n  const thiz = this;\n  thiz.esConnection = false;\n\n  const operation = retry.operation({\n    forever: false,\n    retries: retryLimit,\n    factor: 1,\n    minTimeout: 1000,\n    maxTimeout: 10 * 1000,\n    randomize: false\n  });\n  return new Promise((fulfill, reject) => {\n    operation.attempt((currentAttempt) => {\n      debug('checking for ES connection');\n      thiz.client.cluster.health({\n        timeout: thiz.healthCheckTimeout,\n        wait_for_nodes: thiz.healthCheckWaitForNodes,\n        wait_for_status: thiz.healthCheckWaitForStatus\n      })\n        .then(\n          (res) => {\n            thiz.esConnection = true;\n            const start = () => {\n              if (thiz.options.buffering === true) {\n                debug('starting bulk writer');\n                thiz.running = true;\n                thiz.tick();\n              }\n            };\n            // Ensure mapping template is existing if desired\n            if (thiz.options.ensureIndexTemplate) {\n              thiz.ensureIndexTemplate((res1) => {\n                fulfill(res1);\n                start();\n              }, reject);\n            } else {\n              fulfill(true);\n              start();\n            }\n          },\n          (err) => {\n            debug('re-checking for connection to ES');\n            if (operation.retry(err)) {\n              return;\n            }\n            thiz.esConnection = false;\n            debug('cannot connect to ES');\n            reject(new Error('Cannot connect to ES'));\n          }\n        );\n    });\n  });\n};\n\nBulkWriter.prototype.ensureIndexTemplate = function ensureIndexTemplate(\n  fulfill,\n  reject\n) {\n  const thiz = this;\n\n  const indexPrefix = typeof thiz.options.indexPrefix === 'function'\n    ? thiz.options.indexPrefix()\n    : thiz.options.indexPrefix;\n\n  const { indexTemplate } = thiz.options;\n\n  let templateName = indexPrefix;\n  if (thiz.options.dataStream) {\n    if (!thiz.options.index) {\n      // hm, has this to be a console error or better a throw? is it needed at all?\n      thiz.options.internalLogger('Error while deriving templateName with options', thiz.options);\n    } else {\n      templateName = thiz.options.index;\n    }\n  }\n\n  const tmplCheckMessage = {\n    name: 'template_' + templateName\n  };\n  debug('Checking tpl name', tmplCheckMessage);\n  thiz.client.indices.existsIndexTemplate(tmplCheckMessage).then(\n    (res) => {\n      if (res.statusCode && res.statusCode === 404) {\n        const tmplMessage = {\n          name: 'template_' + templateName,\n          create: true,\n          body: indexTemplate\n        };\n        thiz.client.indices.putIndexTemplate(tmplMessage).then(\n          (res1) => {\n            debug('Index template created successfully');\n            fulfill(res1.body);\n          },\n          (err1) => {\n            debug('Failed to create index template');\n            thiz.transport.emit('warning', err1);\n            reject(err1);\n          }\n        );\n      } else {\n        fulfill(res.body);\n      }\n    },\n    (res) => {\n      debug('Failed to check for index template');\n      thiz.transport.emit('warning', res);\n      reject(res);\n    }\n  );\n};\n\nmodule.exports = BulkWriter;\n", "{\n  \"priority\": 200,\n  \"template\": {\n    \"settings\": {\n      \"index\": {\n        \"mapping\": {\n          \"total_fields\": {\n            \"limit\": \"3000\"\n          }\n        },\n        \"refresh_interval\": \"5s\",\n        \"number_of_shards\": \"1\",\n        \"number_of_replicas\": \"0\"\n      }\n    },\n    \"mappings\": {\n      \"_source\": {\n        \"enabled\": true\n      },\n      \"properties\": {\n        \"severity\": {\n          \"index\": true,\n          \"type\": \"keyword\"\n        },\n        \"source\": {\n          \"index\": true,\n          \"type\": \"keyword\"\n        },\n        \"@timestamp\": {\n          \"type\": \"date\"\n        },\n        \"@version\": {\n          \"type\": \"keyword\"\n        },\n        \"fields\": {\n          \"dynamic\": true,\n          \"type\": \"object\"\n        },\n        \"message\": {\n          \"index\": true,\n          \"type\": \"text\"\n        }\n      }\n    }\n  },\n  \"index_patterns\": [\n    \"logs-app-default*\"\n  ],\n  \"data_stream\": {},\n  \"composed_of\": []\n}\n", "'use strict';\n\nconst winston = require('winston');\nconst Transport = require('winston-transport');\nconst dayjs = require('dayjs');\nconst defaults = require('lodash.defaults');\nconst omit = require('lodash.omit');\nconst { Client } = require('@elastic/elasticsearch');\nconst defaultTransformer = require('./transformer');\nconst BulkWriter = require('./bulk_writer');\nconst mappingTemplate = require('./index-template-mapping.json');\n\nclass ElasticsearchTransport extends Transport {\n  constructor(opts) {\n    super(opts);\n    this.name = 'elasticsearch';\n    this.handleExceptions = opts.handleExceptions || false;\n    this.handleRejections = opts.handleRejections || false;\n    this.exitOnError = false;\n    this.source = null;\n\n    this.on('pipe', (source) => {\n      this.source = source;\n    });\n\n    this.on('error', (err) => {\n      this.source.pipe(this); // re-pipes readable\n    });\n\n    this.opts = opts || {};\n\n    // Set defaults\n    defaults(opts, {\n      level: 'info',\n      index: opts.dataStream ? 'logs-app-default' : null,\n      indexPrefix: 'logs',\n      indexSuffixPattern: 'YYYY.MM.DD',\n      transformer: defaultTransformer,\n      useTransformer: true,\n      ensureIndexTemplate: true,\n      flushInterval: 2000,\n      waitForActiveShards: 1,\n      handleExceptions: false,\n      exitOnError: false,\n      pipeline: null,\n      bufferLimit: null,\n      buffering: true,\n      healthCheckTimeout: '30s',\n      healthCheckWaitForStatus: 'yellow',\n      healthCheckWaitForNodes: '>=1',\n      dataStream: false,\n      internalLogger: console.error,\n    });\n\n    // Use given client or create one\n    if (opts.client) {\n      this.client = opts.client;\n    } else {\n      defaults(opts, {\n        clientOpts: {\n          log: [\n            {\n              type: 'console',\n              level: 'error',\n            }\n          ]\n        }\n      });\n\n      // Create a new ES client\n      // http://localhost:9200 is the default of the client already\n      const copts = { ...this.opts.clientOpts };\n      this.client = new Client(copts);\n    }\n\n    const bulkWriterOpts = {\n      index: opts.index,\n      interval: opts.flushInterval,\n      waitForActiveShards: opts.waitForActiveShards,\n      pipeline: opts.pipeline,\n      ensureIndexTemplate: opts.ensureIndexTemplate,\n      indexTemplate: opts.indexTemplate || mappingTemplate,\n      indexPrefix: opts.indexPrefix,\n      buffering: opts.buffering,\n      bufferLimit: opts.buffering ? opts.bufferLimit : 0,\n      healthCheckTimeout: opts.healthCheckTimeout,\n      healthCheckWaitForStatus: opts.healthCheckWaitForStatus,\n      healthCheckWaitForNodes: opts.healthCheckWaitForNodes,\n      dataStream: opts.dataStream,\n      retryLimit: opts.retryLimit,\n      internalLogger: opts.internalLogger,\n    };\n\n    this.bulkWriter = new BulkWriter(this, this.client, bulkWriterOpts);\n    this.bulkWriter.start();\n  }\n\n  async flush() {\n    await this.bulkWriter.flush();\n  }\n\n  // end() will be called from here: https://github.com/winstonjs/winston/blob/master/lib/winston/logger.js#L328\n  end(chunk, encoding, callback) {\n    this.bulkWriter.schedule = () => { };\n    this.bulkWriter.flush().then(() => {\n      setImmediate(() => {\n        super.end(chunk, encoding, callback); // this emits finish event from stream\n      });\n    });\n  }\n\n  async log(info, callback) {\n    const { level, message, timestamp } = info;\n    const meta = Object.assign({}, omit(info, ['level', 'message']));\n    setImmediate(() => {\n      this.emit('logged', level);\n    });\n\n    const logData = {\n      message,\n      level,\n      timestamp,\n      meta,\n    };\n\n    const entry = this.opts.useTransformer\n      ? await this.opts.transformer(logData)\n      : info;\n\n    let index = this.opts.dataStream\n      ? this.opts.index\n      : this.getIndexName(this.opts);\n\n    if (this.opts.source) {\n      entry.source = this.opts.source;\n    }\n\n    if (entry.indexInterfix !== undefined) {\n      index = this.opts.dataStream\n        ? this.getDataStreamName(this.opts, entry.indexInterfix)\n        : this.getIndexName(this.opts, entry.indexInterfix);\n      delete entry.indexInterfix;\n    }\n\n    if (this.opts.apm) {\n      const apm = this.opts.apm.currentTraceIds;\n      if (apm['transaction.id']) entry.transaction = { id: apm['transaction.id'], ...entry.transaction };\n      if (apm['trace.id']) entry.trace = { id: apm['trace.id'], ...entry.trace };\n      if (apm['span.id']) entry.span = { id: apm['span.id'], ...entry.span };\n    }\n\n    this.bulkWriter.append(index, entry);\n\n    callback();\n  }\n\n  getIndexName(opts, indexInterfix) {\n    this.test = 'test';\n    let indexName = opts.index;\n    if (indexName === null) {\n      // eslint-disable-next-line prefer-destructuring\n      let indexPrefix = opts.indexPrefix;\n      if (typeof indexPrefix === 'function') {\n        // eslint-disable-next-line prefer-destructuring\n        indexPrefix = opts.indexPrefix();\n      }\n      const now = dayjs();\n      const dateString = now.format(opts.indexSuffixPattern);\n      indexName = indexPrefix\n        + (indexInterfix !== undefined ? '-' + indexInterfix : '')\n        + '-'\n        + dateString;\n    }\n    return indexName;\n  }\n}\n\nwinston.transports.Elasticsearch = ElasticsearchTransport;\n\nmodule.exports = {\n  ElasticsearchTransport,\n  ElasticsearchTransformer: defaultTransformer\n};\n", "{\n    \"priority\": 200,\n    \"template\": {\n        \"settings\": {\n            \"index\": {\n                \"mapping\": {\n                    \"total_fields\": {\n                        \"limit\": \"3000\"\n                    }\n                },\n                \"refresh_interval\": \"5s\",\n                \"number_of_shards\": \"1\",\n                \"number_of_replicas\": \"0\",\n                \"query\": {\n                    \"default_field\": [\n                        \"message\"\n                    ]\n                }\n            }\n        },\n        \"mappings\": {\n            \"_source\": {\n                \"enabled\": true\n            },\n            \"date_detection\": false,\n            \"properties\": {\n                \"@timestamp\": {\n                    \"type\": \"date\"\n                },\n                \"@version\": {\n                    \"type\": \"keyword\"\n                },\n                \"severity\": {\n                    \"type\": \"text\",\n                    \"index\": true,\n                    \"fields\": {\n                        \"keyword\": {\n                            \"type\": \"keyword\",\n                            \"ignore_above\": 256\n                        }\n                    }\n                },\n                \"source\": {\n                    \"index\": true,\n                    \"type\": \"keyword\"\n                },\n                \"message\": {\n                    \"type\": \"text\",\n                    \"index\": true\n                },\n                \"fields\": {\n                    \"type\": \"text\",\n                    \"index\": true\n                },\n                \"subject\": {\n                    \"type\": \"keyword\",\n                    \"index\": true\n                },\n                \"rid\": {\n                    \"type\": \"keyword\",\n                    \"index\": true\n                },\n                \"proc_time\": {\n                    \"type\": \"text\",\n                    \"index\": true\n                },\n                \"source_host\": {\n                    \"type\": \"text\",\n                    \"index\": true,\n                    \"fields\": {\n                        \"keyword\": {\n                            \"type\": \"keyword\",\n                            \"ignore_above\": 256\n                        }\n                    }\n                }\n            }\n        }\n    },\n    \"index_patterns\": [\n        \"logs-app-default*\"\n    ],\n    \"data_stream\": {},\n    \"composed_of\": []\n}\n", "import { ElasticsearchTransport, ElasticsearchTransportOptions } from 'winston-elasticsearch';\nimport * as os from 'os';\nimport * as rTracer from 'cls-rtracer';\nimport { globalLoggerCtxKey, getRealTrace, getCircularReplacer, logFieldsHandler, PrecompiledFieldOptions } from './utils';\nimport { RestoreFieldsOptions } from './index';\n\nimport indexTemplate from '../elasticsearch-index-template.json';\n\nfunction createTransformer(opts: RestoreLoggerElasticsearchTransportOptions, precompiled?: PrecompiledFieldOptions) {\n  /**\n   Transformer function to transform logged data into a\n  the message structure used in restore for storage in ES.\n\n  @param {Object} logData\n  @param {Object} logData.message - the log message\n  @param {Object} logData.level - the log level\n  @param {Object} logData.meta - the log meta data\n  @returns {Object} transformed message\n  */\n  return (logData: any) => {\n    const source = opts.source; // needed, as it will be read internally\n    let transformed: any = {};\n\n    if ((global as any)[globalLoggerCtxKey]) {\n      const store = (global as any)[globalLoggerCtxKey].getStore();\n      if (store && store.size > 0) {\n        for (const [key, value] of store.entries()) {\n          transformed[key] = value;\n        }\n      }\n    }\n\n    // set rid if it exists\n    if (rTracer.id()) {\n      transformed.rid = rTracer.id();\n    }\n\n    if (opts.sourcePointer) {\n      logData.meta.source = getRealTrace();\n    }\n\n    transformed['@timestamp'] = new Date().toISOString();\n    transformed.source_host = os.hostname();\n    transformed.message = logData.message;\n    if (typeof transformed.message === 'object') {\n      const transformedFields = logFieldsHandler(transformed.message, precompiled);\n      transformed.message = JSON.stringify(transformedFields, getCircularReplacer());\n    }\n    transformed.severity = logData.level;\n    transformed.fields = logData.meta;\n    if (typeof transformed.fields !== 'object') {\n      const transformedFields = logFieldsHandler(JSON.parse(transformed.fields), precompiled);\n      transformed.fields = { message: transformedFields };\n    }\n\n    if (opts.esTransformer && typeof opts.esTransformer === 'function') {\n      transformed = opts.esTransformer(transformed);\n    }\n\n    if (opts.stringifyMeta !== false && typeof transformed.fields === 'object') {\n      transformed.fields = JSON.stringify(transformed.fields, getCircularReplacer());\n    }\n\n    return transformed;\n  };\n}\n\n// Fields transformer to convert all values into strings\n// function toString(o: any) {\n//   Object.keys(o).forEach(k => {\n//     if (typeof o[k] === 'object') {\n//       return toString(o[k]);\n//     }\n//     o[k] = '' + o[k];\n//   });\n//   return o;\n// }\n\n\nexport type CreateESTransport = (opts: RestoreLoggerElasticsearchTransportOptions, precompiled?: PrecompiledFieldOptions) => ElasticsearchTransport;\n\nexport interface RestoreLoggerElasticsearchTransportOptions extends ElasticsearchTransportOptions {\n  sourcePointer?: any;\n  stringifyMeta?: boolean;\n  esTransformer?: CreateESTransport;\n  fieldOptions?: RestoreFieldsOptions;\n}\n\nexport const createElasticSearchTransport = (opts: RestoreLoggerElasticsearchTransportOptions, precompiled?: PrecompiledFieldOptions) => {\n  const transformer = createTransformer(opts, precompiled);\n  return new ElasticsearchTransport({\n    indexTemplate,\n    transformer,\n    ...opts\n  });\n}\n", "import 'source-map-support/register';\nimport { createLogger as createWinsonLogger, LoggerOptions as WinstonLoggerOptions, log, Logger } from 'winston';\nimport { RestoreLoggerConsoleTransportOptions, createConsoleTransport } from './console';\nimport { RestoreLoggerFileTransportOptions, createFileTransport } from './file';\nimport { RestoreLoggerElasticsearchTransportOptions, createElasticSearchTransport, CreateESTransport } from './elasticsearch';\nimport { globalLoggerCtxKey, precompile } from './utils';\n\nexport interface RestoreLoggerOptions extends WinstonLoggerOptions {\n  console?: RestoreLoggerConsoleTransportOptions;\n  file?: RestoreLoggerFileTransportOptions;\n  elasticsearch?: RestoreLoggerElasticsearchTransportOptions;\n  esTransformer?: CreateESTransport,\n  loggerName?: string;\n  sourcePointer?: boolean;\n  fieldOptions?: RestoreFieldsOptions;\n}\n\nexport interface BufferField {\n  fieldPath: string;\n  enableLogging?: boolean; // default value is false\n}\n\nexport interface RestoreFieldsOptions {\n  bufferFields?: BufferField[];\n  maskFields?: string[];\n  omitFields?: string[];\n}\n\nexport type TransportStreamArray = Logger['transports'];\n\nexport function createLogger(opts: RestoreLoggerOptions = {}): Logger {\n  // TODO reason for setting namespaces flag?\n  (log as any).namespaces = true;\n\n    // Provide TransportStream array and add opts.transports\n  let transports: TransportStreamArray = [];\n  if (opts.transports && !Array.isArray(transports)) {\n    transports = [transports];\n  } else if (Array.isArray(opts.transports)) {\n    transports = opts.transports;\n  }\n\n  // precompile field options\n  const precompiled = precompile(opts?.fieldOptions);\n  if (opts.console) {\n    transports.push(createConsoleTransport({ ...opts.console, sourcePointer: opts.sourcePointer }, precompiled));\n  }\n  if (opts.file) {\n    transports.push(createFileTransport({ ...opts.file, sourcePointer: opts.sourcePointer }));\n  }\n  if (opts.elasticsearch) {\n    opts.elasticsearch.dataStream = true;\n    const esTransport = createElasticSearchTransport({ ...opts.elasticsearch, sourcePointer: opts.sourcePointer, esTransformer: opts.esTransformer }, precompiled);\n    esTransport.on('error', (error) => {\n      console.error('Elasticsearch indexing error', error);\n    });\n    transports.push(esTransport);\n  }\n  if (transports.length === 0) {\n    transports.push(createConsoleTransport());\n  }\n\n  const logger = createWinsonLogger({\n    transports,\n    ...opts\n  });\n\n  logger.on('error', (error) => {\n    console.error('Logger error', error);\n  });\n\n  return logger;\n};\n\nexport { globalLoggerCtxKey, Logger };\n", "/*!\n * ee-first\n * Copyright(c) 2014 Jonathan Ong\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = first\n\n/**\n * Get the first event in a set of event emitters and event pairs.\n *\n * @param {array} stuff\n * @param {function} done\n * @public\n */\n\nfunction first(stuff, done) {\n  if (!Array.isArray(stuff))\n    throw new TypeError('arg must be an array of [ee, events...] arrays')\n\n  var cleanups = []\n\n  for (var i = 0; i < stuff.length; i++) {\n    var arr = stuff[i]\n\n    if (!Array.isArray(arr) || arr.length < 2)\n      throw new TypeError('each array member must be [ee, events...]')\n\n    var ee = arr[0]\n\n    for (var j = 1; j < arr.length; j++) {\n      var event = arr[j]\n      var fn = listener(event, callback)\n\n      // listen to the event\n      ee.on(event, fn)\n      // push this listener to the list of cleanups\n      cleanups.push({\n        ee: ee,\n        event: event,\n        fn: fn,\n      })\n    }\n  }\n\n  function callback() {\n    cleanup()\n    done.apply(null, arguments)\n  }\n\n  function cleanup() {\n    var x\n    for (var i = 0; i < cleanups.length; i++) {\n      x = cleanups[i]\n      x.ee.removeListener(x.event, x.fn)\n    }\n  }\n\n  function thunk(fn) {\n    done = fn\n  }\n\n  thunk.cancel = cleanup\n\n  return thunk\n}\n\n/**\n * Create the event listener.\n * @private\n */\n\nfunction listener(event, done) {\n  return function onevent(arg1) {\n    var args = new Array(arguments.length)\n    var ee = this\n    var err = event === 'error'\n      ? arg1\n      : null\n\n    // copy args to prevent arguments escaping scope\n    for (var i = 0; i < args.length; i++) {\n      args[i] = arguments[i]\n    }\n\n    done(err, ee, event, args)\n  }\n}\n", "/*!\n * on-finished\n * Copyright(c) 2013 Jonathan Ong\n * Copyright(c) 2014 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = onFinished\nmodule.exports.isFinished = isFinished\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar asyncHooks = tryRequireAsyncHooks()\nvar first = require('ee-first')\n\n/**\n * Variables.\n * @private\n */\n\n/* istanbul ignore next */\nvar defer = typeof setImmediate === 'function'\n  ? setImmediate\n  : function (fn) { process.nextTick(fn.bind.apply(fn, arguments)) }\n\n/**\n * Invoke callback when the response has finished, useful for\n * cleaning up resources afterwards.\n *\n * @param {object} msg\n * @param {function} listener\n * @return {object}\n * @public\n */\n\nfunction onFinished (msg, listener) {\n  if (isFinished(msg) !== false) {\n    defer(listener, null, msg)\n    return msg\n  }\n\n  // attach the listener to the message\n  attachListener(msg, wrap(listener))\n\n  return msg\n}\n\n/**\n * Determine if message is already finished.\n *\n * @param {object} msg\n * @return {boolean}\n * @public\n */\n\nfunction isFinished (msg) {\n  var socket = msg.socket\n\n  if (typeof msg.finished === 'boolean') {\n    // OutgoingMessage\n    return Boolean(msg.finished || (socket && !socket.writable))\n  }\n\n  if (typeof msg.complete === 'boolean') {\n    // IncomingMessage\n    return Boolean(msg.upgrade || !socket || !socket.readable || (msg.complete && !msg.readable))\n  }\n\n  // don't know\n  return undefined\n}\n\n/**\n * Attach a finished listener to the message.\n *\n * @param {object} msg\n * @param {function} callback\n * @private\n */\n\nfunction attachFinishedListener (msg, callback) {\n  var eeMsg\n  var eeSocket\n  var finished = false\n\n  function onFinish (error) {\n    eeMsg.cancel()\n    eeSocket.cancel()\n\n    finished = true\n    callback(error)\n  }\n\n  // finished on first message event\n  eeMsg = eeSocket = first([[msg, 'end', 'finish']], onFinish)\n\n  function onSocket (socket) {\n    // remove listener\n    msg.removeListener('socket', onSocket)\n\n    if (finished) return\n    if (eeMsg !== eeSocket) return\n\n    // finished on first socket event\n    eeSocket = first([[socket, 'error', 'close']], onFinish)\n  }\n\n  if (msg.socket) {\n    // socket already assigned\n    onSocket(msg.socket)\n    return\n  }\n\n  // wait for socket to be assigned\n  msg.on('socket', onSocket)\n\n  if (msg.socket === undefined) {\n    // istanbul ignore next: node.js 0.8 patch\n    patchAssignSocket(msg, onSocket)\n  }\n}\n\n/**\n * Attach the listener to the message.\n *\n * @param {object} msg\n * @return {function}\n * @private\n */\n\nfunction attachListener (msg, listener) {\n  var attached = msg.__onFinished\n\n  // create a private single listener with queue\n  if (!attached || !attached.queue) {\n    attached = msg.__onFinished = createListener(msg)\n    attachFinishedListener(msg, attached)\n  }\n\n  attached.queue.push(listener)\n}\n\n/**\n * Create listener on message.\n *\n * @param {object} msg\n * @return {function}\n * @private\n */\n\nfunction createListener (msg) {\n  function listener (err) {\n    if (msg.__onFinished === listener) msg.__onFinished = null\n    if (!listener.queue) return\n\n    var queue = listener.queue\n    listener.queue = null\n\n    for (var i = 0; i < queue.length; i++) {\n      queue[i](err, msg)\n    }\n  }\n\n  listener.queue = []\n\n  return listener\n}\n\n/**\n * Patch ServerResponse.prototype.assignSocket for node.js 0.8.\n *\n * @param {ServerResponse} res\n * @param {function} callback\n * @private\n */\n\n// istanbul ignore next: node.js 0.8 patch\nfunction patchAssignSocket (res, callback) {\n  var assignSocket = res.assignSocket\n\n  if (typeof assignSocket !== 'function') return\n\n  // res.on('socket', callback) is broken in 0.8\n  res.assignSocket = function _assignSocket (socket) {\n    assignSocket.call(this, socket)\n    callback(socket)\n  }\n}\n\n/**\n * Try to require async_hooks\n * @private\n */\n\nfunction tryRequireAsyncHooks () {\n  try {\n    return require('async_hooks')\n  } catch (e) {\n    return {}\n  }\n}\n\n/**\n * Wrap function with async resource, if possible.\n * AsyncResource.bind static method backported.\n * @private\n */\n\nfunction wrap (fn) {\n  var res\n\n  // create anonymous resource\n  if (asyncHooks.AsyncResource) {\n    res = new asyncHooks.AsyncResource(fn.name || 'bound-anonymous-fn')\n  }\n\n  // incompatible node.js\n  if (!res || !res.runInAsyncScope) {\n    return fn\n  }\n\n  // return bound function\n  return res.runInAsyncScope.bind(res, fn, null)\n}\n", "'use strict'\n\n/**\n * Expose compositor.\n */\n\nmodule.exports = compose\n\n/**\n * Compose `middleware` returning\n * a fully valid middleware comprised\n * of all those which are passed.\n *\n * @param {Array} middleware\n * @return {Function}\n * @api public\n */\n\nfunction compose (middleware) {\n  if (!Array.isArray(middleware)) throw new TypeError('Middleware stack must be an array!')\n  for (const fn of middleware) {\n    if (typeof fn !== 'function') throw new TypeError('Middleware must be composed of functions!')\n  }\n\n  /**\n   * @param {Object} context\n   * @return {Promise}\n   * @api public\n   */\n\n  return function (context, next) {\n    // last called middleware #\n    let index = -1\n    return dispatch(0)\n    function dispatch (i) {\n      if (i <= index) return Promise.reject(new Error('next() called multiple times'))\n      index = i\n      let fn = middleware[i]\n      if (i === middleware.length) fn = next\n      if (!fn) return Promise.resolve()\n      try {\n        return Promise.resolve(fn(context, dispatch.bind(null, i + 1)));\n      } catch (err) {\n        return Promise.reject(err)\n      }\n    }\n  }\n}\n", "{\n  \"100\": \"Continue\",\n  \"101\": \"Switching Protocols\",\n  \"102\": \"Processing\",\n  \"103\": \"Early Hints\",\n  \"200\": \"OK\",\n  \"201\": \"Created\",\n  \"202\": \"Accepted\",\n  \"203\": \"Non-Authoritative Information\",\n  \"204\": \"No Content\",\n  \"205\": \"Reset Content\",\n  \"206\": \"Partial Content\",\n  \"207\": \"Multi-Status\",\n  \"208\": \"Already Reported\",\n  \"226\": \"IM Used\",\n  \"300\": \"Multiple Choices\",\n  \"301\": \"Moved Permanently\",\n  \"302\": \"Found\",\n  \"303\": \"See Other\",\n  \"304\": \"Not Modified\",\n  \"305\": \"Use Proxy\",\n  \"307\": \"Temporary Redirect\",\n  \"308\": \"Permanent Redirect\",\n  \"400\": \"Bad Request\",\n  \"401\": \"Unauthorized\",\n  \"402\": \"Payment Required\",\n  \"403\": \"Forbidden\",\n  \"404\": \"Not Found\",\n  \"405\": \"Method Not Allowed\",\n  \"406\": \"Not Acceptable\",\n  \"407\": \"Proxy Authentication Required\",\n  \"408\": \"Request Timeout\",\n  \"409\": \"Conflict\",\n  \"410\": \"Gone\",\n  \"411\": \"Length Required\",\n  \"412\": \"Precondition Failed\",\n  \"413\": \"Payload Too Large\",\n  \"414\": \"URI Too Long\",\n  \"415\": \"Unsupported Media Type\",\n  \"416\": \"Range Not Satisfiable\",\n  \"417\": \"Expectation Failed\",\n  \"418\": \"I'm a Teapot\",\n  \"421\": \"Misdirected Request\",\n  \"422\": \"Unprocessable Entity\",\n  \"423\": \"Locked\",\n  \"424\": \"Failed Dependency\",\n  \"425\": \"Too Early\",\n  \"426\": \"Upgrade Required\",\n  \"428\": \"Precondition Required\",\n  \"429\": \"Too Many Requests\",\n  \"431\": \"Request Header Fields Too Large\",\n  \"451\": \"Unavailable For Legal Reasons\",\n  \"500\": \"Internal Server Error\",\n  \"501\": \"Not Implemented\",\n  \"502\": \"Bad Gateway\",\n  \"503\": \"Service Unavailable\",\n  \"504\": \"Gateway Timeout\",\n  \"505\": \"HTTP Version Not Supported\",\n  \"506\": \"Variant Also Negotiates\",\n  \"507\": \"Insufficient Storage\",\n  \"508\": \"Loop Detected\",\n  \"509\": \"Bandwidth Limit Exceeded\",\n  \"510\": \"Not Extended\",\n  \"511\": \"Network Authentication Required\"\n}\n", "/*!\n * statuses\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar codes = require('./codes.json')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = status\n\n// status code to message map\nstatus.message = codes\n\n// status message (lower-case) to code map\nstatus.code = createMessageToStatusCodeMap(codes)\n\n// array of status codes\nstatus.codes = createStatusCodeList(codes)\n\n// status codes for redirects\nstatus.redirect = {\n  300: true,\n  301: true,\n  302: true,\n  303: true,\n  305: true,\n  307: true,\n  308: true\n}\n\n// status codes for empty bodies\nstatus.empty = {\n  204: true,\n  205: true,\n  304: true\n}\n\n// status codes for when you should retry the request\nstatus.retry = {\n  502: true,\n  503: true,\n  504: true\n}\n\n/**\n * Create a map of message to status code.\n * @private\n */\n\nfunction createMessageToStatusCodeMap (codes) {\n  var map = {}\n\n  Object.keys(codes).forEach(function forEachCode (code) {\n    var message = codes[code]\n    var status = Number(code)\n\n    // populate map\n    map[message.toLowerCase()] = status\n  })\n\n  return map\n}\n\n/**\n * Create a list of all status codes.\n * @private\n */\n\nfunction createStatusCodeList (codes) {\n  return Object.keys(codes).map(function mapCode (code) {\n    return Number(code)\n  })\n}\n\n/**\n * Get the status code for given message.\n * @private\n */\n\nfunction getStatusCode (message) {\n  var msg = message.toLowerCase()\n\n  if (!Object.prototype.hasOwnProperty.call(status.code, msg)) {\n    throw new Error('invalid status message: \"' + message + '\"')\n  }\n\n  return status.code[msg]\n}\n\n/**\n * Get the status message for given code.\n * @private\n */\n\nfunction getStatusMessage (code) {\n  if (!Object.prototype.hasOwnProperty.call(status.message, code)) {\n    throw new Error('invalid status code: ' + code)\n  }\n\n  return status.message[code]\n}\n\n/**\n * Get the status code.\n *\n * Given a number, this will throw if it is not a known status\n * code, otherwise the code will be returned. Given a string,\n * the string will be parsed for a number and return the code\n * if valid, otherwise will lookup the code assuming this is\n * the status message.\n *\n * @param {string|number} code\n * @returns {number}\n * @public\n */\n\nfunction status (code) {\n  if (typeof code === 'number') {\n    return getStatusMessage(code)\n  }\n\n  if (typeof code !== 'string') {\n    throw new TypeError('code must be a number or string')\n  }\n\n  // '403'\n  var n = parseInt(code, 10)\n  if (!isNaN(n)) {\n    return getStatusMessage(n)\n  }\n\n  return getStatusCode(code)\n}\n", "/*!\n * depd\n * Copyright(c) 2014-2018 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\n\nvar relative = require('path').relative\n\n/**\n * Module exports.\n */\n\nmodule.exports = depd\n\n/**\n * Get the path to base files on.\n */\n\nvar basePath = process.cwd()\n\n/**\n * Determine if namespace is contained in the string.\n */\n\nfunction containsNamespace (str, namespace) {\n  var vals = str.split(/[ ,]+/)\n  var ns = String(namespace).toLowerCase()\n\n  for (var i = 0; i < vals.length; i++) {\n    var val = vals[i]\n\n    // namespace contained\n    if (val && (val === '*' || val.toLowerCase() === ns)) {\n      return true\n    }\n  }\n\n  return false\n}\n\n/**\n * Convert a data descriptor to accessor descriptor.\n */\n\nfunction convertDataDescriptorToAccessor (obj, prop, message) {\n  var descriptor = Object.getOwnPropertyDescriptor(obj, prop)\n  var value = descriptor.value\n\n  descriptor.get = function getter () { return value }\n\n  if (descriptor.writable) {\n    descriptor.set = function setter (val) { return (value = val) }\n  }\n\n  delete descriptor.value\n  delete descriptor.writable\n\n  Object.defineProperty(obj, prop, descriptor)\n\n  return descriptor\n}\n\n/**\n * Create arguments string to keep arity.\n */\n\nfunction createArgumentsString (arity) {\n  var str = ''\n\n  for (var i = 0; i < arity; i++) {\n    str += ', arg' + i\n  }\n\n  return str.substr(2)\n}\n\n/**\n * Create stack string from stack.\n */\n\nfunction createStackString (stack) {\n  var str = this.name + ': ' + this.namespace\n\n  if (this.message) {\n    str += ' deprecated ' + this.message\n  }\n\n  for (var i = 0; i < stack.length; i++) {\n    str += '\\n    at ' + stack[i].toString()\n  }\n\n  return str\n}\n\n/**\n * Create deprecate for namespace in caller.\n */\n\nfunction depd (namespace) {\n  if (!namespace) {\n    throw new TypeError('argument namespace is required')\n  }\n\n  var stack = getStack()\n  var site = callSiteLocation(stack[1])\n  var file = site[0]\n\n  function deprecate (message) {\n    // call to self as log\n    log.call(deprecate, message)\n  }\n\n  deprecate._file = file\n  deprecate._ignored = isignored(namespace)\n  deprecate._namespace = namespace\n  deprecate._traced = istraced(namespace)\n  deprecate._warned = Object.create(null)\n\n  deprecate.function = wrapfunction\n  deprecate.property = wrapproperty\n\n  return deprecate\n}\n\n/**\n * Determine if event emitter has listeners of a given type.\n *\n * The way to do this check is done three different ways in Node.js >= 0.8\n * so this consolidates them into a minimal set using instance methods.\n *\n * @param {EventEmitter} emitter\n * @param {string} type\n * @returns {boolean}\n * @private\n */\n\nfunction eehaslisteners (emitter, type) {\n  var count = typeof emitter.listenerCount !== 'function'\n    ? emitter.listeners(type).length\n    : emitter.listenerCount(type)\n\n  return count > 0\n}\n\n/**\n * Determine if namespace is ignored.\n */\n\nfunction isignored (namespace) {\n  if (process.noDeprecation) {\n    // --no-deprecation support\n    return true\n  }\n\n  var str = process.env.NO_DEPRECATION || ''\n\n  // namespace ignored\n  return containsNamespace(str, namespace)\n}\n\n/**\n * Determine if namespace is traced.\n */\n\nfunction istraced (namespace) {\n  if (process.traceDeprecation) {\n    // --trace-deprecation support\n    return true\n  }\n\n  var str = process.env.TRACE_DEPRECATION || ''\n\n  // namespace traced\n  return containsNamespace(str, namespace)\n}\n\n/**\n * Display deprecation message.\n */\n\nfunction log (message, site) {\n  var haslisteners = eehaslisteners(process, 'deprecation')\n\n  // abort early if no destination\n  if (!haslisteners && this._ignored) {\n    return\n  }\n\n  var caller\n  var callFile\n  var callSite\n  var depSite\n  var i = 0\n  var seen = false\n  var stack = getStack()\n  var file = this._file\n\n  if (site) {\n    // provided site\n    depSite = site\n    callSite = callSiteLocation(stack[1])\n    callSite.name = depSite.name\n    file = callSite[0]\n  } else {\n    // get call site\n    i = 2\n    depSite = callSiteLocation(stack[i])\n    callSite = depSite\n  }\n\n  // get caller of deprecated thing in relation to file\n  for (; i < stack.length; i++) {\n    caller = callSiteLocation(stack[i])\n    callFile = caller[0]\n\n    if (callFile === file) {\n      seen = true\n    } else if (callFile === this._file) {\n      file = this._file\n    } else if (seen) {\n      break\n    }\n  }\n\n  var key = caller\n    ? depSite.join(':') + '__' + caller.join(':')\n    : undefined\n\n  if (key !== undefined && key in this._warned) {\n    // already warned\n    return\n  }\n\n  this._warned[key] = true\n\n  // generate automatic message from call site\n  var msg = message\n  if (!msg) {\n    msg = callSite === depSite || !callSite.name\n      ? defaultMessage(depSite)\n      : defaultMessage(callSite)\n  }\n\n  // emit deprecation if listeners exist\n  if (haslisteners) {\n    var err = DeprecationError(this._namespace, msg, stack.slice(i))\n    process.emit('deprecation', err)\n    return\n  }\n\n  // format and write message\n  var format = process.stderr.isTTY\n    ? formatColor\n    : formatPlain\n  var output = format.call(this, msg, caller, stack.slice(i))\n  process.stderr.write(output + '\\n', 'utf8')\n}\n\n/**\n * Get call site location as array.\n */\n\nfunction callSiteLocation (callSite) {\n  var file = callSite.getFileName() || '<anonymous>'\n  var line = callSite.getLineNumber()\n  var colm = callSite.getColumnNumber()\n\n  if (callSite.isEval()) {\n    file = callSite.getEvalOrigin() + ', ' + file\n  }\n\n  var site = [file, line, colm]\n\n  site.callSite = callSite\n  site.name = callSite.getFunctionName()\n\n  return site\n}\n\n/**\n * Generate a default message from the site.\n */\n\nfunction defaultMessage (site) {\n  var callSite = site.callSite\n  var funcName = site.name\n\n  // make useful anonymous name\n  if (!funcName) {\n    funcName = '<anonymous@' + formatLocation(site) + '>'\n  }\n\n  var context = callSite.getThis()\n  var typeName = context && callSite.getTypeName()\n\n  // ignore useless type name\n  if (typeName === 'Object') {\n    typeName = undefined\n  }\n\n  // make useful type name\n  if (typeName === 'Function') {\n    typeName = context.name || typeName\n  }\n\n  return typeName && callSite.getMethodName()\n    ? typeName + '.' + funcName\n    : funcName\n}\n\n/**\n * Format deprecation message without color.\n */\n\nfunction formatPlain (msg, caller, stack) {\n  var timestamp = new Date().toUTCString()\n\n  var formatted = timestamp +\n    ' ' + this._namespace +\n    ' deprecated ' + msg\n\n  // add stack trace\n  if (this._traced) {\n    for (var i = 0; i < stack.length; i++) {\n      formatted += '\\n    at ' + stack[i].toString()\n    }\n\n    return formatted\n  }\n\n  if (caller) {\n    formatted += ' at ' + formatLocation(caller)\n  }\n\n  return formatted\n}\n\n/**\n * Format deprecation message with color.\n */\n\nfunction formatColor (msg, caller, stack) {\n  var formatted = '\\x1b[36;1m' + this._namespace + '\\x1b[22;39m' + // bold cyan\n    ' \\x1b[33;1mdeprecated\\x1b[22;39m' + // bold yellow\n    ' \\x1b[0m' + msg + '\\x1b[39m' // reset\n\n  // add stack trace\n  if (this._traced) {\n    for (var i = 0; i < stack.length; i++) {\n      formatted += '\\n    \\x1b[36mat ' + stack[i].toString() + '\\x1b[39m' // cyan\n    }\n\n    return formatted\n  }\n\n  if (caller) {\n    formatted += ' \\x1b[36m' + formatLocation(caller) + '\\x1b[39m' // cyan\n  }\n\n  return formatted\n}\n\n/**\n * Format call site location.\n */\n\nfunction formatLocation (callSite) {\n  return relative(basePath, callSite[0]) +\n    ':' + callSite[1] +\n    ':' + callSite[2]\n}\n\n/**\n * Get the stack as array of call sites.\n */\n\nfunction getStack () {\n  var limit = Error.stackTraceLimit\n  var obj = {}\n  var prep = Error.prepareStackTrace\n\n  Error.prepareStackTrace = prepareObjectStackTrace\n  Error.stackTraceLimit = Math.max(10, limit)\n\n  // capture the stack\n  Error.captureStackTrace(obj)\n\n  // slice this function off the top\n  var stack = obj.stack.slice(1)\n\n  Error.prepareStackTrace = prep\n  Error.stackTraceLimit = limit\n\n  return stack\n}\n\n/**\n * Capture call site stack from v8.\n */\n\nfunction prepareObjectStackTrace (obj, stack) {\n  return stack\n}\n\n/**\n * Return a wrapped function in a deprecation message.\n */\n\nfunction wrapfunction (fn, message) {\n  if (typeof fn !== 'function') {\n    throw new TypeError('argument fn must be a function')\n  }\n\n  var args = createArgumentsString(fn.length)\n  var stack = getStack()\n  var site = callSiteLocation(stack[1])\n\n  site.name = fn.name\n\n  // eslint-disable-next-line no-new-func\n  var deprecatedfn = new Function('fn', 'log', 'deprecate', 'message', 'site',\n    '\"use strict\"\\n' +\n    'return function (' + args + ') {' +\n    'log.call(deprecate, message, site)\\n' +\n    'return fn.apply(this, arguments)\\n' +\n    '}')(fn, log, this, message, site)\n\n  return deprecatedfn\n}\n\n/**\n * Wrap property in a deprecation message.\n */\n\nfunction wrapproperty (obj, prop, message) {\n  if (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n    throw new TypeError('argument obj must be object')\n  }\n\n  var descriptor = Object.getOwnPropertyDescriptor(obj, prop)\n\n  if (!descriptor) {\n    throw new TypeError('must call property on owner object')\n  }\n\n  if (!descriptor.configurable) {\n    throw new TypeError('property must be configurable')\n  }\n\n  var deprecate = this\n  var stack = getStack()\n  var site = callSiteLocation(stack[1])\n\n  // set site name\n  site.name = prop\n\n  // convert data descriptor\n  if ('value' in descriptor) {\n    descriptor = convertDataDescriptorToAccessor(obj, prop, message)\n  }\n\n  var get = descriptor.get\n  var set = descriptor.set\n\n  // wrap getter\n  if (typeof get === 'function') {\n    descriptor.get = function getter () {\n      log.call(deprecate, message, site)\n      return get.apply(this, arguments)\n    }\n  }\n\n  // wrap setter\n  if (typeof set === 'function') {\n    descriptor.set = function setter () {\n      log.call(deprecate, message, site)\n      return set.apply(this, arguments)\n    }\n  }\n\n  Object.defineProperty(obj, prop, descriptor)\n}\n\n/**\n * Create DeprecationError for deprecation\n */\n\nfunction DeprecationError (namespace, message, stack) {\n  var error = new Error()\n  var stackString\n\n  Object.defineProperty(error, 'constructor', {\n    value: DeprecationError\n  })\n\n  Object.defineProperty(error, 'message', {\n    configurable: true,\n    enumerable: false,\n    value: message,\n    writable: true\n  })\n\n  Object.defineProperty(error, 'name', {\n    enumerable: false,\n    configurable: true,\n    value: 'DeprecationError',\n    writable: true\n  })\n\n  Object.defineProperty(error, 'namespace', {\n    configurable: true,\n    enumerable: false,\n    value: namespace,\n    writable: true\n  })\n\n  Object.defineProperty(error, 'stack', {\n    configurable: true,\n    enumerable: false,\n    get: function () {\n      if (stackString !== undefined) {\n        return stackString\n      }\n\n      // prepare stack trace\n      return (stackString = createStackString.call(this, stack))\n    },\n    set: function setter (val) {\n      stackString = val\n    }\n  })\n\n  return error\n}\n", "'use strict'\n/* eslint no-proto: 0 */\nmodule.exports = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array ? setProtoOf : mixinProperties)\n\nfunction setProtoOf (obj, proto) {\n  obj.__proto__ = proto\n  return obj\n}\n\nfunction mixinProperties (obj, proto) {\n  for (var prop in proto) {\n    if (!Object.prototype.hasOwnProperty.call(obj, prop)) {\n      obj[prop] = proto[prop]\n    }\n  }\n  return obj\n}\n", "/*!\n * toidentifier\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = toIdentifier\n\n/**\n * Trasform the given string into a JavaScript identifier\n *\n * @param {string} str\n * @returns {string}\n * @public\n */\n\nfunction toIdentifier (str) {\n  return str\n    .split(' ')\n    .map(function (token) {\n      return token.slice(0, 1).toUpperCase() + token.slice(1)\n    })\n    .join('')\n    .replace(/[^ _0-9a-z]/gi, '')\n}\n", "/*!\n * http-errors\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar deprecate = require('depd')('http-errors')\nvar setPrototypeOf = require('setprototypeof')\nvar statuses = require('statuses')\nvar inherits = require('inherits')\nvar toIdentifier = require('toidentifier')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = createError\nmodule.exports.HttpError = createHttpErrorConstructor()\nmodule.exports.isHttpError = createIsHttpErrorFunction(module.exports.HttpError)\n\n// Populate exports for all constructors\npopulateConstructorExports(module.exports, statuses.codes, module.exports.HttpError)\n\n/**\n * Get the code class of a status code.\n * @private\n */\n\nfunction codeClass (status) {\n  return Number(String(status).charAt(0) + '00')\n}\n\n/**\n * Create a new HTTP Error.\n *\n * @returns {Error}\n * @public\n */\n\nfunction createError () {\n  // so much arity going on ~_~\n  var err\n  var msg\n  var status = 500\n  var props = {}\n  for (var i = 0; i < arguments.length; i++) {\n    var arg = arguments[i]\n    var type = typeof arg\n    if (type === 'object' && arg instanceof Error) {\n      err = arg\n      status = err.status || err.statusCode || status\n    } else if (type === 'number' && i === 0) {\n      status = arg\n    } else if (type === 'string') {\n      msg = arg\n    } else if (type === 'object') {\n      props = arg\n    } else {\n      throw new TypeError('argument #' + (i + 1) + ' unsupported type ' + type)\n    }\n  }\n\n  if (typeof status === 'number' && (status < 400 || status >= 600)) {\n    deprecate('non-error status code; use only 4xx or 5xx status codes')\n  }\n\n  if (typeof status !== 'number' ||\n    (!statuses.message[status] && (status < 400 || status >= 600))) {\n    status = 500\n  }\n\n  // constructor\n  var HttpError = createError[status] || createError[codeClass(status)]\n\n  if (!err) {\n    // create error\n    err = HttpError\n      ? new HttpError(msg)\n      : new Error(msg || statuses.message[status])\n    Error.captureStackTrace(err, createError)\n  }\n\n  if (!HttpError || !(err instanceof HttpError) || err.status !== status) {\n    // add properties to generic error\n    err.expose = status < 500\n    err.status = err.statusCode = status\n  }\n\n  for (var key in props) {\n    if (key !== 'status' && key !== 'statusCode') {\n      err[key] = props[key]\n    }\n  }\n\n  return err\n}\n\n/**\n * Create HTTP error abstract base class.\n * @private\n */\n\nfunction createHttpErrorConstructor () {\n  function HttpError () {\n    throw new TypeError('cannot construct abstract class')\n  }\n\n  inherits(HttpError, Error)\n\n  return HttpError\n}\n\n/**\n * Create a constructor for a client error.\n * @private\n */\n\nfunction createClientErrorConstructor (HttpError, name, code) {\n  var className = toClassName(name)\n\n  function ClientError (message) {\n    // create the error object\n    var msg = message != null ? message : statuses.message[code]\n    var err = new Error(msg)\n\n    // capture a stack trace to the construction point\n    Error.captureStackTrace(err, ClientError)\n\n    // adjust the [[Prototype]]\n    setPrototypeOf(err, ClientError.prototype)\n\n    // redefine the error message\n    Object.defineProperty(err, 'message', {\n      enumerable: true,\n      configurable: true,\n      value: msg,\n      writable: true\n    })\n\n    // redefine the error name\n    Object.defineProperty(err, 'name', {\n      enumerable: false,\n      configurable: true,\n      value: className,\n      writable: true\n    })\n\n    return err\n  }\n\n  inherits(ClientError, HttpError)\n  nameFunc(ClientError, className)\n\n  ClientError.prototype.status = code\n  ClientError.prototype.statusCode = code\n  ClientError.prototype.expose = true\n\n  return ClientError\n}\n\n/**\n * Create function to test is a value is a HttpError.\n * @private\n */\n\nfunction createIsHttpErrorFunction (HttpError) {\n  return function isHttpError (val) {\n    if (!val || typeof val !== 'object') {\n      return false\n    }\n\n    if (val instanceof HttpError) {\n      return true\n    }\n\n    return val instanceof Error &&\n      typeof val.expose === 'boolean' &&\n      typeof val.statusCode === 'number' && val.status === val.statusCode\n  }\n}\n\n/**\n * Create a constructor for a server error.\n * @private\n */\n\nfunction createServerErrorConstructor (HttpError, name, code) {\n  var className = toClassName(name)\n\n  function ServerError (message) {\n    // create the error object\n    var msg = message != null ? message : statuses.message[code]\n    var err = new Error(msg)\n\n    // capture a stack trace to the construction point\n    Error.captureStackTrace(err, ServerError)\n\n    // adjust the [[Prototype]]\n    setPrototypeOf(err, ServerError.prototype)\n\n    // redefine the error message\n    Object.defineProperty(err, 'message', {\n      enumerable: true,\n      configurable: true,\n      value: msg,\n      writable: true\n    })\n\n    // redefine the error name\n    Object.defineProperty(err, 'name', {\n      enumerable: false,\n      configurable: true,\n      value: className,\n      writable: true\n    })\n\n    return err\n  }\n\n  inherits(ServerError, HttpError)\n  nameFunc(ServerError, className)\n\n  ServerError.prototype.status = code\n  ServerError.prototype.statusCode = code\n  ServerError.prototype.expose = false\n\n  return ServerError\n}\n\n/**\n * Set the name of a function, if possible.\n * @private\n */\n\nfunction nameFunc (func, name) {\n  var desc = Object.getOwnPropertyDescriptor(func, 'name')\n\n  if (desc && desc.configurable) {\n    desc.value = name\n    Object.defineProperty(func, 'name', desc)\n  }\n}\n\n/**\n * Populate the exports object with constructors for every error class.\n * @private\n */\n\nfunction populateConstructorExports (exports, codes, HttpError) {\n  codes.forEach(function forEachCode (code) {\n    var CodeError\n    var name = toIdentifier(statuses.message[code])\n\n    switch (codeClass(code)) {\n      case 400:\n        CodeError = createClientErrorConstructor(HttpError, name, code)\n        break\n      case 500:\n        CodeError = createServerErrorConstructor(HttpError, name, code)\n        break\n    }\n\n    if (CodeError) {\n      // export the constructor\n      exports[code] = CodeError\n      exports[name] = CodeError\n    }\n  })\n}\n\n/**\n * Get a class name from a name identifier.\n *\n * @param {string} name\n * @returns {string}\n * @private\n */\n\nfunction toClassName (name) {\n  return name.slice(-5) === 'Error' ? name : name + 'Error'\n}\n", "/**\n * negotiator\n * Copyright(c) 2012 Isaac Z. Schlueter\n * Copyright(c) 2014 Federico Romero\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = preferredCharsets;\nmodule.exports.preferredCharsets = preferredCharsets;\n\n/**\n * Module variables.\n * @private\n */\n\nvar simpleCharsetRegExp = /^\\s*([^\\s;]+)\\s*(?:;(.*))?$/;\n\n/**\n * Parse the Accept-Charset header.\n * @private\n */\n\nfunction parseAcceptCharset(accept) {\n  var accepts = accept.split(',');\n\n  for (var i = 0, j = 0; i < accepts.length; i++) {\n    var charset = parseCharset(accepts[i].trim(), i);\n\n    if (charset) {\n      accepts[j++] = charset;\n    }\n  }\n\n  // trim accepts\n  accepts.length = j;\n\n  return accepts;\n}\n\n/**\n * Parse a charset from the Accept-Charset header.\n * @private\n */\n\nfunction parseCharset(str, i) {\n  var match = simpleCharsetRegExp.exec(str);\n  if (!match) return null;\n\n  var charset = match[1];\n  var q = 1;\n  if (match[2]) {\n    var params = match[2].split(';')\n    for (var j = 0; j < params.length; j++) {\n      var p = params[j].trim().split('=');\n      if (p[0] === 'q') {\n        q = parseFloat(p[1]);\n        break;\n      }\n    }\n  }\n\n  return {\n    charset: charset,\n    q: q,\n    i: i\n  };\n}\n\n/**\n * Get the priority of a charset.\n * @private\n */\n\nfunction getCharsetPriority(charset, accepted, index) {\n  var priority = {o: -1, q: 0, s: 0};\n\n  for (var i = 0; i < accepted.length; i++) {\n    var spec = specify(charset, accepted[i], index);\n\n    if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {\n      priority = spec;\n    }\n  }\n\n  return priority;\n}\n\n/**\n * Get the specificity of the charset.\n * @private\n */\n\nfunction specify(charset, spec, index) {\n  var s = 0;\n  if(spec.charset.toLowerCase() === charset.toLowerCase()){\n    s |= 1;\n  } else if (spec.charset !== '*' ) {\n    return null\n  }\n\n  return {\n    i: index,\n    o: spec.i,\n    q: spec.q,\n    s: s\n  }\n}\n\n/**\n * Get the preferred charsets from an Accept-Charset header.\n * @public\n */\n\nfunction preferredCharsets(accept, provided) {\n  // RFC 2616 sec 14.2: no header = *\n  var accepts = parseAcceptCharset(accept === undefined ? '*' : accept || '');\n\n  if (!provided) {\n    // sorted list of all charsets\n    return accepts\n      .filter(isQuality)\n      .sort(compareSpecs)\n      .map(getFullCharset);\n  }\n\n  var priorities = provided.map(function getPriority(type, index) {\n    return getCharsetPriority(type, accepts, index);\n  });\n\n  // sorted list of accepted charsets\n  return priorities.filter(isQuality).sort(compareSpecs).map(function getCharset(priority) {\n    return provided[priorities.indexOf(priority)];\n  });\n}\n\n/**\n * Compare two specs.\n * @private\n */\n\nfunction compareSpecs(a, b) {\n  return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;\n}\n\n/**\n * Get full charset string.\n * @private\n */\n\nfunction getFullCharset(spec) {\n  return spec.charset;\n}\n\n/**\n * Check if a spec has any quality.\n * @private\n */\n\nfunction isQuality(spec) {\n  return spec.q > 0;\n}\n", "/**\n * negotiator\n * Copyright(c) 2012 Isaac Z. Schlueter\n * Copyright(c) 2014 Federico Romero\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = preferredEncodings;\nmodule.exports.preferredEncodings = preferredEncodings;\n\n/**\n * Module variables.\n * @private\n */\n\nvar simpleEncodingRegExp = /^\\s*([^\\s;]+)\\s*(?:;(.*))?$/;\n\n/**\n * Parse the Accept-Encoding header.\n * @private\n */\n\nfunction parseAcceptEncoding(accept) {\n  var accepts = accept.split(',');\n  var hasIdentity = false;\n  var minQuality = 1;\n\n  for (var i = 0, j = 0; i < accepts.length; i++) {\n    var encoding = parseEncoding(accepts[i].trim(), i);\n\n    if (encoding) {\n      accepts[j++] = encoding;\n      hasIdentity = hasIdentity || specify('identity', encoding);\n      minQuality = Math.min(minQuality, encoding.q || 1);\n    }\n  }\n\n  if (!hasIdentity) {\n    /*\n     * If identity doesn't explicitly appear in the accept-encoding header,\n     * it's added to the list of acceptable encoding with the lowest q\n     */\n    accepts[j++] = {\n      encoding: 'identity',\n      q: minQuality,\n      i: i\n    };\n  }\n\n  // trim accepts\n  accepts.length = j;\n\n  return accepts;\n}\n\n/**\n * Parse an encoding from the Accept-Encoding header.\n * @private\n */\n\nfunction parseEncoding(str, i) {\n  var match = simpleEncodingRegExp.exec(str);\n  if (!match) return null;\n\n  var encoding = match[1];\n  var q = 1;\n  if (match[2]) {\n    var params = match[2].split(';');\n    for (var j = 0; j < params.length; j++) {\n      var p = params[j].trim().split('=');\n      if (p[0] === 'q') {\n        q = parseFloat(p[1]);\n        break;\n      }\n    }\n  }\n\n  return {\n    encoding: encoding,\n    q: q,\n    i: i\n  };\n}\n\n/**\n * Get the priority of an encoding.\n * @private\n */\n\nfunction getEncodingPriority(encoding, accepted, index) {\n  var priority = {o: -1, q: 0, s: 0};\n\n  for (var i = 0; i < accepted.length; i++) {\n    var spec = specify(encoding, accepted[i], index);\n\n    if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {\n      priority = spec;\n    }\n  }\n\n  return priority;\n}\n\n/**\n * Get the specificity of the encoding.\n * @private\n */\n\nfunction specify(encoding, spec, index) {\n  var s = 0;\n  if(spec.encoding.toLowerCase() === encoding.toLowerCase()){\n    s |= 1;\n  } else if (spec.encoding !== '*' ) {\n    return null\n  }\n\n  return {\n    i: index,\n    o: spec.i,\n    q: spec.q,\n    s: s\n  }\n};\n\n/**\n * Get the preferred encodings from an Accept-Encoding header.\n * @public\n */\n\nfunction preferredEncodings(accept, provided) {\n  var accepts = parseAcceptEncoding(accept || '');\n\n  if (!provided) {\n    // sorted list of all encodings\n    return accepts\n      .filter(isQuality)\n      .sort(compareSpecs)\n      .map(getFullEncoding);\n  }\n\n  var priorities = provided.map(function getPriority(type, index) {\n    return getEncodingPriority(type, accepts, index);\n  });\n\n  // sorted list of accepted encodings\n  return priorities.filter(isQuality).sort(compareSpecs).map(function getEncoding(priority) {\n    return provided[priorities.indexOf(priority)];\n  });\n}\n\n/**\n * Compare two specs.\n * @private\n */\n\nfunction compareSpecs(a, b) {\n  return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;\n}\n\n/**\n * Get full encoding string.\n * @private\n */\n\nfunction getFullEncoding(spec) {\n  return spec.encoding;\n}\n\n/**\n * Check if a spec has any quality.\n * @private\n */\n\nfunction isQuality(spec) {\n  return spec.q > 0;\n}\n", "/**\n * negotiator\n * Copyright(c) 2012 Isaac Z. Schlueter\n * Copyright(c) 2014 Federico Romero\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = preferredLanguages;\nmodule.exports.preferredLanguages = preferredLanguages;\n\n/**\n * Module variables.\n * @private\n */\n\nvar simpleLanguageRegExp = /^\\s*([^\\s\\-;]+)(?:-([^\\s;]+))?\\s*(?:;(.*))?$/;\n\n/**\n * Parse the Accept-Language header.\n * @private\n */\n\nfunction parseAcceptLanguage(accept) {\n  var accepts = accept.split(',');\n\n  for (var i = 0, j = 0; i < accepts.length; i++) {\n    var language = parseLanguage(accepts[i].trim(), i);\n\n    if (language) {\n      accepts[j++] = language;\n    }\n  }\n\n  // trim accepts\n  accepts.length = j;\n\n  return accepts;\n}\n\n/**\n * Parse a language from the Accept-Language header.\n * @private\n */\n\nfunction parseLanguage(str, i) {\n  var match = simpleLanguageRegExp.exec(str);\n  if (!match) return null;\n\n  var prefix = match[1]\n  var suffix = match[2]\n  var full = prefix\n\n  if (suffix) full += \"-\" + suffix;\n\n  var q = 1;\n  if (match[3]) {\n    var params = match[3].split(';')\n    for (var j = 0; j < params.length; j++) {\n      var p = params[j].split('=');\n      if (p[0] === 'q') q = parseFloat(p[1]);\n    }\n  }\n\n  return {\n    prefix: prefix,\n    suffix: suffix,\n    q: q,\n    i: i,\n    full: full\n  };\n}\n\n/**\n * Get the priority of a language.\n * @private\n */\n\nfunction getLanguagePriority(language, accepted, index) {\n  var priority = {o: -1, q: 0, s: 0};\n\n  for (var i = 0; i < accepted.length; i++) {\n    var spec = specify(language, accepted[i], index);\n\n    if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {\n      priority = spec;\n    }\n  }\n\n  return priority;\n}\n\n/**\n * Get the specificity of the language.\n * @private\n */\n\nfunction specify(language, spec, index) {\n  var p = parseLanguage(language)\n  if (!p) return null;\n  var s = 0;\n  if(spec.full.toLowerCase() === p.full.toLowerCase()){\n    s |= 4;\n  } else if (spec.prefix.toLowerCase() === p.full.toLowerCase()) {\n    s |= 2;\n  } else if (spec.full.toLowerCase() === p.prefix.toLowerCase()) {\n    s |= 1;\n  } else if (spec.full !== '*' ) {\n    return null\n  }\n\n  return {\n    i: index,\n    o: spec.i,\n    q: spec.q,\n    s: s\n  }\n};\n\n/**\n * Get the preferred languages from an Accept-Language header.\n * @public\n */\n\nfunction preferredLanguages(accept, provided) {\n  // RFC 2616 sec 14.4: no header = *\n  var accepts = parseAcceptLanguage(accept === undefined ? '*' : accept || '');\n\n  if (!provided) {\n    // sorted list of all languages\n    return accepts\n      .filter(isQuality)\n      .sort(compareSpecs)\n      .map(getFullLanguage);\n  }\n\n  var priorities = provided.map(function getPriority(type, index) {\n    return getLanguagePriority(type, accepts, index);\n  });\n\n  // sorted list of accepted languages\n  return priorities.filter(isQuality).sort(compareSpecs).map(function getLanguage(priority) {\n    return provided[priorities.indexOf(priority)];\n  });\n}\n\n/**\n * Compare two specs.\n * @private\n */\n\nfunction compareSpecs(a, b) {\n  return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;\n}\n\n/**\n * Get full language string.\n * @private\n */\n\nfunction getFullLanguage(spec) {\n  return spec.full;\n}\n\n/**\n * Check if a spec has any quality.\n * @private\n */\n\nfunction isQuality(spec) {\n  return spec.q > 0;\n}\n", "/**\n * negotiator\n * Copyright(c) 2012 Isaac Z. Schlueter\n * Copyright(c) 2014 Federico Romero\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = preferredMediaTypes;\nmodule.exports.preferredMediaTypes = preferredMediaTypes;\n\n/**\n * Module variables.\n * @private\n */\n\nvar simpleMediaTypeRegExp = /^\\s*([^\\s\\/;]+)\\/([^;\\s]+)\\s*(?:;(.*))?$/;\n\n/**\n * Parse the Accept header.\n * @private\n */\n\nfunction parseAccept(accept) {\n  var accepts = splitMediaTypes(accept);\n\n  for (var i = 0, j = 0; i < accepts.length; i++) {\n    var mediaType = parseMediaType(accepts[i].trim(), i);\n\n    if (mediaType) {\n      accepts[j++] = mediaType;\n    }\n  }\n\n  // trim accepts\n  accepts.length = j;\n\n  return accepts;\n}\n\n/**\n * Parse a media type from the Accept header.\n * @private\n */\n\nfunction parseMediaType(str, i) {\n  var match = simpleMediaTypeRegExp.exec(str);\n  if (!match) return null;\n\n  var params = Object.create(null);\n  var q = 1;\n  var subtype = match[2];\n  var type = match[1];\n\n  if (match[3]) {\n    var kvps = splitParameters(match[3]).map(splitKeyValuePair);\n\n    for (var j = 0; j < kvps.length; j++) {\n      var pair = kvps[j];\n      var key = pair[0].toLowerCase();\n      var val = pair[1];\n\n      // get the value, unwrapping quotes\n      var value = val && val[0] === '\"' && val[val.length - 1] === '\"'\n        ? val.substr(1, val.length - 2)\n        : val;\n\n      if (key === 'q') {\n        q = parseFloat(value);\n        break;\n      }\n\n      // store parameter\n      params[key] = value;\n    }\n  }\n\n  return {\n    type: type,\n    subtype: subtype,\n    params: params,\n    q: q,\n    i: i\n  };\n}\n\n/**\n * Get the priority of a media type.\n * @private\n */\n\nfunction getMediaTypePriority(type, accepted, index) {\n  var priority = {o: -1, q: 0, s: 0};\n\n  for (var i = 0; i < accepted.length; i++) {\n    var spec = specify(type, accepted[i], index);\n\n    if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {\n      priority = spec;\n    }\n  }\n\n  return priority;\n}\n\n/**\n * Get the specificity of the media type.\n * @private\n */\n\nfunction specify(type, spec, index) {\n  var p = parseMediaType(type);\n  var s = 0;\n\n  if (!p) {\n    return null;\n  }\n\n  if(spec.type.toLowerCase() == p.type.toLowerCase()) {\n    s |= 4\n  } else if(spec.type != '*') {\n    return null;\n  }\n\n  if(spec.subtype.toLowerCase() == p.subtype.toLowerCase()) {\n    s |= 2\n  } else if(spec.subtype != '*') {\n    return null;\n  }\n\n  var keys = Object.keys(spec.params);\n  if (keys.length > 0) {\n    if (keys.every(function (k) {\n      return spec.params[k] == '*' || (spec.params[k] || '').toLowerCase() == (p.params[k] || '').toLowerCase();\n    })) {\n      s |= 1\n    } else {\n      return null\n    }\n  }\n\n  return {\n    i: index,\n    o: spec.i,\n    q: spec.q,\n    s: s,\n  }\n}\n\n/**\n * Get the preferred media types from an Accept header.\n * @public\n */\n\nfunction preferredMediaTypes(accept, provided) {\n  // RFC 2616 sec 14.2: no header = */*\n  var accepts = parseAccept(accept === undefined ? '*/*' : accept || '');\n\n  if (!provided) {\n    // sorted list of all types\n    return accepts\n      .filter(isQuality)\n      .sort(compareSpecs)\n      .map(getFullType);\n  }\n\n  var priorities = provided.map(function getPriority(type, index) {\n    return getMediaTypePriority(type, accepts, index);\n  });\n\n  // sorted list of accepted types\n  return priorities.filter(isQuality).sort(compareSpecs).map(function getType(priority) {\n    return provided[priorities.indexOf(priority)];\n  });\n}\n\n/**\n * Compare two specs.\n * @private\n */\n\nfunction compareSpecs(a, b) {\n  return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;\n}\n\n/**\n * Get full type string.\n * @private\n */\n\nfunction getFullType(spec) {\n  return spec.type + '/' + spec.subtype;\n}\n\n/**\n * Check if a spec has any quality.\n * @private\n */\n\nfunction isQuality(spec) {\n  return spec.q > 0;\n}\n\n/**\n * Count the number of quotes in a string.\n * @private\n */\n\nfunction quoteCount(string) {\n  var count = 0;\n  var index = 0;\n\n  while ((index = string.indexOf('\"', index)) !== -1) {\n    count++;\n    index++;\n  }\n\n  return count;\n}\n\n/**\n * Split a key value pair.\n * @private\n */\n\nfunction splitKeyValuePair(str) {\n  var index = str.indexOf('=');\n  var key;\n  var val;\n\n  if (index === -1) {\n    key = str;\n  } else {\n    key = str.substr(0, index);\n    val = str.substr(index + 1);\n  }\n\n  return [key, val];\n}\n\n/**\n * Split an Accept header into media types.\n * @private\n */\n\nfunction splitMediaTypes(accept) {\n  var accepts = accept.split(',');\n\n  for (var i = 1, j = 0; i < accepts.length; i++) {\n    if (quoteCount(accepts[j]) % 2 == 0) {\n      accepts[++j] = accepts[i];\n    } else {\n      accepts[j] += ',' + accepts[i];\n    }\n  }\n\n  // trim accepts\n  accepts.length = j + 1;\n\n  return accepts;\n}\n\n/**\n * Split a string of parameters.\n * @private\n */\n\nfunction splitParameters(str) {\n  var parameters = str.split(';');\n\n  for (var i = 1, j = 0; i < parameters.length; i++) {\n    if (quoteCount(parameters[j]) % 2 == 0) {\n      parameters[++j] = parameters[i];\n    } else {\n      parameters[j] += ';' + parameters[i];\n    }\n  }\n\n  // trim parameters\n  parameters.length = j + 1;\n\n  for (var i = 0; i < parameters.length; i++) {\n    parameters[i] = parameters[i].trim();\n  }\n\n  return parameters;\n}\n", "/*!\n * negotiator\n * Copyright(c) 2012 Federico Romero\n * Copyright(c) 2012-2014 Isaac Z. Schlueter\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\nvar preferredCharsets = require('./lib/charset')\nvar preferredEncodings = require('./lib/encoding')\nvar preferredLanguages = require('./lib/language')\nvar preferredMediaTypes = require('./lib/mediaType')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = Negotiator;\nmodule.exports.Negotiator = Negotiator;\n\n/**\n * Create a Negotiator instance from a request.\n * @param {object} request\n * @public\n */\n\nfunction Negotiator(request) {\n  if (!(this instanceof Negotiator)) {\n    return new Negotiator(request);\n  }\n\n  this.request = request;\n}\n\nNegotiator.prototype.charset = function charset(available) {\n  var set = this.charsets(available);\n  return set && set[0];\n};\n\nNegotiator.prototype.charsets = function charsets(available) {\n  return preferredCharsets(this.request.headers['accept-charset'], available);\n};\n\nNegotiator.prototype.encoding = function encoding(available) {\n  var set = this.encodings(available);\n  return set && set[0];\n};\n\nNegotiator.prototype.encodings = function encodings(available) {\n  return preferredEncodings(this.request.headers['accept-encoding'], available);\n};\n\nNegotiator.prototype.language = function language(available) {\n  var set = this.languages(available);\n  return set && set[0];\n};\n\nNegotiator.prototype.languages = function languages(available) {\n  return preferredLanguages(this.request.headers['accept-language'], available);\n};\n\nNegotiator.prototype.mediaType = function mediaType(available) {\n  var set = this.mediaTypes(available);\n  return set && set[0];\n};\n\nNegotiator.prototype.mediaTypes = function mediaTypes(available) {\n  return preferredMediaTypes(this.request.headers.accept, available);\n};\n\n// Backwards compatibility\nNegotiator.prototype.preferredCharset = Negotiator.prototype.charset;\nNegotiator.prototype.preferredCharsets = Negotiator.prototype.charsets;\nNegotiator.prototype.preferredEncoding = Negotiator.prototype.encoding;\nNegotiator.prototype.preferredEncodings = Negotiator.prototype.encodings;\nNegotiator.prototype.preferredLanguage = Negotiator.prototype.language;\nNegotiator.prototype.preferredLanguages = Negotiator.prototype.languages;\nNegotiator.prototype.preferredMediaType = Negotiator.prototype.mediaType;\nNegotiator.prototype.preferredMediaTypes = Negotiator.prototype.mediaTypes;\n", "{\n  \"application/1d-interleaved-parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"application/3gpdash-qoe-report+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/3gpp-ims+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/3gpphal+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/3gpphalforms+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/a2l\": {\n    \"source\": \"iana\"\n  },\n  \"application/ace+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/activemessage\": {\n    \"source\": \"iana\"\n  },\n  \"application/activity+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-costmap+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-costmapfilter+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-directory+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-endpointcost+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-endpointcostparams+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-endpointprop+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-endpointpropparams+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-error+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-networkmap+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-networkmapfilter+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-updatestreamcontrol+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-updatestreamparams+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/aml\": {\n    \"source\": \"iana\"\n  },\n  \"application/andrew-inset\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ez\"]\n  },\n  \"application/applefile\": {\n    \"source\": \"iana\"\n  },\n  \"application/applixware\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"aw\"]\n  },\n  \"application/at+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/atf\": {\n    \"source\": \"iana\"\n  },\n  \"application/atfx\": {\n    \"source\": \"iana\"\n  },\n  \"application/atom+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"atom\"]\n  },\n  \"application/atomcat+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"atomcat\"]\n  },\n  \"application/atomdeleted+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"atomdeleted\"]\n  },\n  \"application/atomicmail\": {\n    \"source\": \"iana\"\n  },\n  \"application/atomsvc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"atomsvc\"]\n  },\n  \"application/atsc-dwd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dwd\"]\n  },\n  \"application/atsc-dynamic-event-message\": {\n    \"source\": \"iana\"\n  },\n  \"application/atsc-held+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"held\"]\n  },\n  \"application/atsc-rdt+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/atsc-rsat+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rsat\"]\n  },\n  \"application/atxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/auth-policy+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/bacnet-xdd+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/batch-smtp\": {\n    \"source\": \"iana\"\n  },\n  \"application/bdoc\": {\n    \"compressible\": false,\n    \"extensions\": [\"bdoc\"]\n  },\n  \"application/beep+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/calendar+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/calendar+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xcs\"]\n  },\n  \"application/call-completion\": {\n    \"source\": \"iana\"\n  },\n  \"application/cals-1840\": {\n    \"source\": \"iana\"\n  },\n  \"application/captive+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/cbor-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/cccex\": {\n    \"source\": \"iana\"\n  },\n  \"application/ccmp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ccxml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ccxml\"]\n  },\n  \"application/cdfx+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"cdfx\"]\n  },\n  \"application/cdmi-capability\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdmia\"]\n  },\n  \"application/cdmi-container\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdmic\"]\n  },\n  \"application/cdmi-domain\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdmid\"]\n  },\n  \"application/cdmi-object\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdmio\"]\n  },\n  \"application/cdmi-queue\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdmiq\"]\n  },\n  \"application/cdni\": {\n    \"source\": \"iana\"\n  },\n  \"application/cea\": {\n    \"source\": \"iana\"\n  },\n  \"application/cea-2018+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cellml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cfw\": {\n    \"source\": \"iana\"\n  },\n  \"application/city+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/clr\": {\n    \"source\": \"iana\"\n  },\n  \"application/clue+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/clue_info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cms\": {\n    \"source\": \"iana\"\n  },\n  \"application/cnrp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/coap-group+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/coap-payload\": {\n    \"source\": \"iana\"\n  },\n  \"application/commonground\": {\n    \"source\": \"iana\"\n  },\n  \"application/conference-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cose\": {\n    \"source\": \"iana\"\n  },\n  \"application/cose-key\": {\n    \"source\": \"iana\"\n  },\n  \"application/cose-key-set\": {\n    \"source\": \"iana\"\n  },\n  \"application/cpl+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"cpl\"]\n  },\n  \"application/csrattrs\": {\n    \"source\": \"iana\"\n  },\n  \"application/csta+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cstadata+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/csvm+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cu-seeme\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cu\"]\n  },\n  \"application/cwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/cybercash\": {\n    \"source\": \"iana\"\n  },\n  \"application/dart\": {\n    \"compressible\": true\n  },\n  \"application/dash+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mpd\"]\n  },\n  \"application/dash-patch+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mpp\"]\n  },\n  \"application/dashdelta\": {\n    \"source\": \"iana\"\n  },\n  \"application/davmount+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"davmount\"]\n  },\n  \"application/dca-rft\": {\n    \"source\": \"iana\"\n  },\n  \"application/dcd\": {\n    \"source\": \"iana\"\n  },\n  \"application/dec-dx\": {\n    \"source\": \"iana\"\n  },\n  \"application/dialog-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/dicom\": {\n    \"source\": \"iana\"\n  },\n  \"application/dicom+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/dicom+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/dii\": {\n    \"source\": \"iana\"\n  },\n  \"application/dit\": {\n    \"source\": \"iana\"\n  },\n  \"application/dns\": {\n    \"source\": \"iana\"\n  },\n  \"application/dns+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/dns-message\": {\n    \"source\": \"iana\"\n  },\n  \"application/docbook+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"dbk\"]\n  },\n  \"application/dots+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/dskpp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/dssc+der\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dssc\"]\n  },\n  \"application/dssc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xdssc\"]\n  },\n  \"application/dvcs\": {\n    \"source\": \"iana\"\n  },\n  \"application/ecmascript\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"es\",\"ecma\"]\n  },\n  \"application/edi-consent\": {\n    \"source\": \"iana\"\n  },\n  \"application/edi-x12\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/edifact\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/efi\": {\n    \"source\": \"iana\"\n  },\n  \"application/elm+json\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/elm+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.cap+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.comment+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.control+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.deviceinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.ecall.msd\": {\n    \"source\": \"iana\"\n  },\n  \"application/emergencycalldata.providerinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.serviceinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.subscriberinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.veds+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emma+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"emma\"]\n  },\n  \"application/emotionml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"emotionml\"]\n  },\n  \"application/encaprtp\": {\n    \"source\": \"iana\"\n  },\n  \"application/epp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/epub+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"epub\"]\n  },\n  \"application/eshop\": {\n    \"source\": \"iana\"\n  },\n  \"application/exi\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"exi\"]\n  },\n  \"application/expect-ct-report+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/express\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"exp\"]\n  },\n  \"application/fastinfoset\": {\n    \"source\": \"iana\"\n  },\n  \"application/fastsoap\": {\n    \"source\": \"iana\"\n  },\n  \"application/fdt+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"fdt\"]\n  },\n  \"application/fhir+json\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/fhir+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/fido.trusted-apps+json\": {\n    \"compressible\": true\n  },\n  \"application/fits\": {\n    \"source\": \"iana\"\n  },\n  \"application/flexfec\": {\n    \"source\": \"iana\"\n  },\n  \"application/font-sfnt\": {\n    \"source\": \"iana\"\n  },\n  \"application/font-tdpfr\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pfr\"]\n  },\n  \"application/font-woff\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/framework-attributes+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/geo+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"geojson\"]\n  },\n  \"application/geo+json-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/geopackage+sqlite3\": {\n    \"source\": \"iana\"\n  },\n  \"application/geoxacml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/gltf-buffer\": {\n    \"source\": \"iana\"\n  },\n  \"application/gml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"gml\"]\n  },\n  \"application/gpx+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"gpx\"]\n  },\n  \"application/gxf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gxf\"]\n  },\n  \"application/gzip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"gz\"]\n  },\n  \"application/h224\": {\n    \"source\": \"iana\"\n  },\n  \"application/held+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/hjson\": {\n    \"extensions\": [\"hjson\"]\n  },\n  \"application/http\": {\n    \"source\": \"iana\"\n  },\n  \"application/hyperstudio\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"stk\"]\n  },\n  \"application/ibe-key-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ibe-pkg-reply+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ibe-pp-data\": {\n    \"source\": \"iana\"\n  },\n  \"application/iges\": {\n    \"source\": \"iana\"\n  },\n  \"application/im-iscomposing+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/index\": {\n    \"source\": \"iana\"\n  },\n  \"application/index.cmd\": {\n    \"source\": \"iana\"\n  },\n  \"application/index.obj\": {\n    \"source\": \"iana\"\n  },\n  \"application/index.response\": {\n    \"source\": \"iana\"\n  },\n  \"application/index.vnd\": {\n    \"source\": \"iana\"\n  },\n  \"application/inkml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ink\",\"inkml\"]\n  },\n  \"application/iotp\": {\n    \"source\": \"iana\"\n  },\n  \"application/ipfix\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ipfix\"]\n  },\n  \"application/ipp\": {\n    \"source\": \"iana\"\n  },\n  \"application/isup\": {\n    \"source\": \"iana\"\n  },\n  \"application/its+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"its\"]\n  },\n  \"application/java-archive\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"jar\",\"war\",\"ear\"]\n  },\n  \"application/java-serialized-object\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"ser\"]\n  },\n  \"application/java-vm\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"class\"]\n  },\n  \"application/javascript\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"js\",\"mjs\"]\n  },\n  \"application/jf2feed+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jose\": {\n    \"source\": \"iana\"\n  },\n  \"application/jose+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jrd+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jscalendar+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/json\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"json\",\"map\"]\n  },\n  \"application/json-patch+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/json-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/json5\": {\n    \"extensions\": [\"json5\"]\n  },\n  \"application/jsonml+json\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"jsonml\"]\n  },\n  \"application/jwk+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jwk-set+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/kpml-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/kpml-response+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ld+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"jsonld\"]\n  },\n  \"application/lgr+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"lgr\"]\n  },\n  \"application/link-format\": {\n    \"source\": \"iana\"\n  },\n  \"application/load-control+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/lost+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"lostxml\"]\n  },\n  \"application/lostsync+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/lpf+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/lxf\": {\n    \"source\": \"iana\"\n  },\n  \"application/mac-binhex40\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hqx\"]\n  },\n  \"application/mac-compactpro\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cpt\"]\n  },\n  \"application/macwriteii\": {\n    \"source\": \"iana\"\n  },\n  \"application/mads+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mads\"]\n  },\n  \"application/manifest+json\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"webmanifest\"]\n  },\n  \"application/marc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mrc\"]\n  },\n  \"application/marcxml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mrcx\"]\n  },\n  \"application/mathematica\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ma\",\"nb\",\"mb\"]\n  },\n  \"application/mathml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mathml\"]\n  },\n  \"application/mathml-content+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mathml-presentation+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-associated-procedure-description+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-deregister+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-envelope+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-msk+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-msk-response+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-protection-description+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-reception-report+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-register+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-register-response+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-schedule+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-user-service-description+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbox\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mbox\"]\n  },\n  \"application/media-policy-dataset+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mpf\"]\n  },\n  \"application/media_control+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mediaservercontrol+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mscml\"]\n  },\n  \"application/merge-patch+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/metalink+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"metalink\"]\n  },\n  \"application/metalink4+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"meta4\"]\n  },\n  \"application/mets+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mets\"]\n  },\n  \"application/mf4\": {\n    \"source\": \"iana\"\n  },\n  \"application/mikey\": {\n    \"source\": \"iana\"\n  },\n  \"application/mipc\": {\n    \"source\": \"iana\"\n  },\n  \"application/missing-blocks+cbor-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/mmt-aei+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"maei\"]\n  },\n  \"application/mmt-usd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"musd\"]\n  },\n  \"application/mods+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mods\"]\n  },\n  \"application/moss-keys\": {\n    \"source\": \"iana\"\n  },\n  \"application/moss-signature\": {\n    \"source\": \"iana\"\n  },\n  \"application/mosskey-data\": {\n    \"source\": \"iana\"\n  },\n  \"application/mosskey-request\": {\n    \"source\": \"iana\"\n  },\n  \"application/mp21\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"m21\",\"mp21\"]\n  },\n  \"application/mp4\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mp4s\",\"m4p\"]\n  },\n  \"application/mpeg4-generic\": {\n    \"source\": \"iana\"\n  },\n  \"application/mpeg4-iod\": {\n    \"source\": \"iana\"\n  },\n  \"application/mpeg4-iod-xmt\": {\n    \"source\": \"iana\"\n  },\n  \"application/mrb-consumer+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mrb-publish+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/msc-ivr+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/msc-mixer+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/msword\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"doc\",\"dot\"]\n  },\n  \"application/mud+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/multipart-core\": {\n    \"source\": \"iana\"\n  },\n  \"application/mxf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mxf\"]\n  },\n  \"application/n-quads\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nq\"]\n  },\n  \"application/n-triples\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nt\"]\n  },\n  \"application/nasdata\": {\n    \"source\": \"iana\"\n  },\n  \"application/news-checkgroups\": {\n    \"source\": \"iana\",\n    \"charset\": \"US-ASCII\"\n  },\n  \"application/news-groupinfo\": {\n    \"source\": \"iana\",\n    \"charset\": \"US-ASCII\"\n  },\n  \"application/news-transmission\": {\n    \"source\": \"iana\"\n  },\n  \"application/nlsml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/node\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cjs\"]\n  },\n  \"application/nss\": {\n    \"source\": \"iana\"\n  },\n  \"application/oauth-authz-req+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/oblivious-dns-message\": {\n    \"source\": \"iana\"\n  },\n  \"application/ocsp-request\": {\n    \"source\": \"iana\"\n  },\n  \"application/ocsp-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/octet-stream\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"bin\",\"dms\",\"lrf\",\"mar\",\"so\",\"dist\",\"distz\",\"pkg\",\"bpk\",\"dump\",\"elc\",\"deploy\",\"exe\",\"dll\",\"deb\",\"dmg\",\"iso\",\"img\",\"msi\",\"msp\",\"msm\",\"buffer\"]\n  },\n  \"application/oda\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oda\"]\n  },\n  \"application/odm+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/odx\": {\n    \"source\": \"iana\"\n  },\n  \"application/oebps-package+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"opf\"]\n  },\n  \"application/ogg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"ogx\"]\n  },\n  \"application/omdoc+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"omdoc\"]\n  },\n  \"application/onenote\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"onetoc\",\"onetoc2\",\"onetmp\",\"onepkg\"]\n  },\n  \"application/opc-nodeset+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/oscore\": {\n    \"source\": \"iana\"\n  },\n  \"application/oxps\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oxps\"]\n  },\n  \"application/p21\": {\n    \"source\": \"iana\"\n  },\n  \"application/p21+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/p2p-overlay+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"relo\"]\n  },\n  \"application/parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"application/passport\": {\n    \"source\": \"iana\"\n  },\n  \"application/patch-ops-error+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xer\"]\n  },\n  \"application/pdf\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"pdf\"]\n  },\n  \"application/pdx\": {\n    \"source\": \"iana\"\n  },\n  \"application/pem-certificate-chain\": {\n    \"source\": \"iana\"\n  },\n  \"application/pgp-encrypted\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"pgp\"]\n  },\n  \"application/pgp-keys\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"asc\"]\n  },\n  \"application/pgp-signature\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"asc\",\"sig\"]\n  },\n  \"application/pics-rules\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"prf\"]\n  },\n  \"application/pidf+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/pidf-diff+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/pkcs10\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"p10\"]\n  },\n  \"application/pkcs12\": {\n    \"source\": \"iana\"\n  },\n  \"application/pkcs7-mime\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"p7m\",\"p7c\"]\n  },\n  \"application/pkcs7-signature\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"p7s\"]\n  },\n  \"application/pkcs8\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"p8\"]\n  },\n  \"application/pkcs8-encrypted\": {\n    \"source\": \"iana\"\n  },\n  \"application/pkix-attr-cert\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ac\"]\n  },\n  \"application/pkix-cert\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cer\"]\n  },\n  \"application/pkix-crl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"crl\"]\n  },\n  \"application/pkix-pkipath\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pkipath\"]\n  },\n  \"application/pkixcmp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pki\"]\n  },\n  \"application/pls+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"pls\"]\n  },\n  \"application/poc-settings+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/postscript\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ai\",\"eps\",\"ps\"]\n  },\n  \"application/ppsp-tracker+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/problem+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/problem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/provenance+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"provx\"]\n  },\n  \"application/prs.alvestrand.titrax-sheet\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.cww\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cww\"]\n  },\n  \"application/prs.cyn\": {\n    \"source\": \"iana\",\n    \"charset\": \"7-BIT\"\n  },\n  \"application/prs.hpub+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/prs.nprend\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.plucker\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.rdf-xml-crypt\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.xsf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/pskc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"pskcxml\"]\n  },\n  \"application/pvd+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/qsig\": {\n    \"source\": \"iana\"\n  },\n  \"application/raml+yaml\": {\n    \"compressible\": true,\n    \"extensions\": [\"raml\"]\n  },\n  \"application/raptorfec\": {\n    \"source\": \"iana\"\n  },\n  \"application/rdap+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/rdf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rdf\",\"owl\"]\n  },\n  \"application/reginfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rif\"]\n  },\n  \"application/relax-ng-compact-syntax\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rnc\"]\n  },\n  \"application/remote-printing\": {\n    \"source\": \"iana\"\n  },\n  \"application/reputon+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/resource-lists+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rl\"]\n  },\n  \"application/resource-lists-diff+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rld\"]\n  },\n  \"application/rfc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/riscos\": {\n    \"source\": \"iana\"\n  },\n  \"application/rlmi+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/rls-services+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rs\"]\n  },\n  \"application/route-apd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rapd\"]\n  },\n  \"application/route-s-tsid+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"sls\"]\n  },\n  \"application/route-usd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rusd\"]\n  },\n  \"application/rpki-ghostbusters\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gbr\"]\n  },\n  \"application/rpki-manifest\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mft\"]\n  },\n  \"application/rpki-publication\": {\n    \"source\": \"iana\"\n  },\n  \"application/rpki-roa\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"roa\"]\n  },\n  \"application/rpki-updown\": {\n    \"source\": \"iana\"\n  },\n  \"application/rsd+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"rsd\"]\n  },\n  \"application/rss+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"rss\"]\n  },\n  \"application/rtf\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rtf\"]\n  },\n  \"application/rtploopback\": {\n    \"source\": \"iana\"\n  },\n  \"application/rtx\": {\n    \"source\": \"iana\"\n  },\n  \"application/samlassertion+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/samlmetadata+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sarif+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sarif-external-properties+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sbe\": {\n    \"source\": \"iana\"\n  },\n  \"application/sbml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"sbml\"]\n  },\n  \"application/scaip+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/scim+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/scvp-cv-request\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"scq\"]\n  },\n  \"application/scvp-cv-response\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"scs\"]\n  },\n  \"application/scvp-vp-request\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"spq\"]\n  },\n  \"application/scvp-vp-response\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"spp\"]\n  },\n  \"application/sdp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sdp\"]\n  },\n  \"application/secevent+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/senml+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/senml+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/senml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"senmlx\"]\n  },\n  \"application/senml-etch+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/senml-etch+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/senml-exi\": {\n    \"source\": \"iana\"\n  },\n  \"application/sensml+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/sensml+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sensml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"sensmlx\"]\n  },\n  \"application/sensml-exi\": {\n    \"source\": \"iana\"\n  },\n  \"application/sep+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sep-exi\": {\n    \"source\": \"iana\"\n  },\n  \"application/session-info\": {\n    \"source\": \"iana\"\n  },\n  \"application/set-payment\": {\n    \"source\": \"iana\"\n  },\n  \"application/set-payment-initiation\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"setpay\"]\n  },\n  \"application/set-registration\": {\n    \"source\": \"iana\"\n  },\n  \"application/set-registration-initiation\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"setreg\"]\n  },\n  \"application/sgml\": {\n    \"source\": \"iana\"\n  },\n  \"application/sgml-open-catalog\": {\n    \"source\": \"iana\"\n  },\n  \"application/shf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"shf\"]\n  },\n  \"application/sieve\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"siv\",\"sieve\"]\n  },\n  \"application/simple-filter+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/simple-message-summary\": {\n    \"source\": \"iana\"\n  },\n  \"application/simplesymbolcontainer\": {\n    \"source\": \"iana\"\n  },\n  \"application/sipc\": {\n    \"source\": \"iana\"\n  },\n  \"application/slate\": {\n    \"source\": \"iana\"\n  },\n  \"application/smil\": {\n    \"source\": \"iana\"\n  },\n  \"application/smil+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"smi\",\"smil\"]\n  },\n  \"application/smpte336m\": {\n    \"source\": \"iana\"\n  },\n  \"application/soap+fastinfoset\": {\n    \"source\": \"iana\"\n  },\n  \"application/soap+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sparql-query\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rq\"]\n  },\n  \"application/sparql-results+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"srx\"]\n  },\n  \"application/spdx+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/spirits-event+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sql\": {\n    \"source\": \"iana\"\n  },\n  \"application/srgs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gram\"]\n  },\n  \"application/srgs+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"grxml\"]\n  },\n  \"application/sru+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"sru\"]\n  },\n  \"application/ssdl+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"ssdl\"]\n  },\n  \"application/ssml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ssml\"]\n  },\n  \"application/stix+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/swid+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"swidtag\"]\n  },\n  \"application/tamp-apex-update\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-apex-update-confirm\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-community-update\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-community-update-confirm\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-error\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-sequence-adjust\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-sequence-adjust-confirm\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-status-query\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-status-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-update\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-update-confirm\": {\n    \"source\": \"iana\"\n  },\n  \"application/tar\": {\n    \"compressible\": true\n  },\n  \"application/taxii+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/td+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/tei+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"tei\",\"teicorpus\"]\n  },\n  \"application/tetra_isi\": {\n    \"source\": \"iana\"\n  },\n  \"application/thraud+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"tfi\"]\n  },\n  \"application/timestamp-query\": {\n    \"source\": \"iana\"\n  },\n  \"application/timestamp-reply\": {\n    \"source\": \"iana\"\n  },\n  \"application/timestamped-data\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tsd\"]\n  },\n  \"application/tlsrpt+gzip\": {\n    \"source\": \"iana\"\n  },\n  \"application/tlsrpt+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/tnauthlist\": {\n    \"source\": \"iana\"\n  },\n  \"application/token-introspection+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/toml\": {\n    \"compressible\": true,\n    \"extensions\": [\"toml\"]\n  },\n  \"application/trickle-ice-sdpfrag\": {\n    \"source\": \"iana\"\n  },\n  \"application/trig\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"trig\"]\n  },\n  \"application/ttml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ttml\"]\n  },\n  \"application/tve-trigger\": {\n    \"source\": \"iana\"\n  },\n  \"application/tzif\": {\n    \"source\": \"iana\"\n  },\n  \"application/tzif-leap\": {\n    \"source\": \"iana\"\n  },\n  \"application/ubjson\": {\n    \"compressible\": false,\n    \"extensions\": [\"ubj\"]\n  },\n  \"application/ulpfec\": {\n    \"source\": \"iana\"\n  },\n  \"application/urc-grpsheet+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/urc-ressheet+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rsheet\"]\n  },\n  \"application/urc-targetdesc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"td\"]\n  },\n  \"application/urc-uisocketdesc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vcard+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vcard+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vemmi\": {\n    \"source\": \"iana\"\n  },\n  \"application/vividence.scriptfile\": {\n    \"source\": \"apache\"\n  },\n  \"application/vnd.1000minds.decision-model+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"1km\"]\n  },\n  \"application/vnd.3gpp-prose+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp-prose-pc3ch+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp-v2x-local-service-information\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.5gnas\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.access-transfer-events+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.bsf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.gmop+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.gtpc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.interworking-data\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.lpp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.mc-signalling-ear\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.mcdata-affiliation-command+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcdata-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcdata-payload\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.mcdata-service-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcdata-signalling\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.mcdata-ue-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcdata-user-profile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-affiliation-command+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-floor-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-location-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-mbms-usage-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-service-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-signed+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-ue-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-ue-init-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-user-profile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-affiliation-command+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-affiliation-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-location-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-mbms-usage-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-service-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-transmission-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-ue-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-user-profile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mid-call+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.ngap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.pfcp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.pic-bw-large\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"plb\"]\n  },\n  \"application/vnd.3gpp.pic-bw-small\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"psb\"]\n  },\n  \"application/vnd.3gpp.pic-bw-var\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pvb\"]\n  },\n  \"application/vnd.3gpp.s1ap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.sms\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.sms+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.srvcc-ext+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.srvcc-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.state-and-event-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.ussd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp2.bcmcsinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp2.sms\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp2.tcap\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tcap\"]\n  },\n  \"application/vnd.3lightssoftware.imagescal\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3m.post-it-notes\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pwn\"]\n  },\n  \"application/vnd.accpac.simply.aso\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"aso\"]\n  },\n  \"application/vnd.accpac.simply.imp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"imp\"]\n  },\n  \"application/vnd.acucobol\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"acu\"]\n  },\n  \"application/vnd.acucorp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"atc\",\"acutc\"]\n  },\n  \"application/vnd.adobe.air-application-installer-package+zip\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"air\"]\n  },\n  \"application/vnd.adobe.flash.movie\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.adobe.formscentral.fcdt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fcdt\"]\n  },\n  \"application/vnd.adobe.fxp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fxp\",\"fxpl\"]\n  },\n  \"application/vnd.adobe.partial-upload\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.adobe.xdp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xdp\"]\n  },\n  \"application/vnd.adobe.xfdf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xfdf\"]\n  },\n  \"application/vnd.aether.imp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.afplinedata\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.afplinedata-pagedef\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.cmoca-cmresource\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.foca-charset\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.foca-codedfont\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.foca-codepage\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-cmtable\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-formdef\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-mediummap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-objectcontainer\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-overlay\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-pagesegment\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.age\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"age\"]\n  },\n  \"application/vnd.ah-barcode\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ahead.space\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ahead\"]\n  },\n  \"application/vnd.airzip.filesecure.azf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"azf\"]\n  },\n  \"application/vnd.airzip.filesecure.azs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"azs\"]\n  },\n  \"application/vnd.amadeus+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.amazon.ebook\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"azw\"]\n  },\n  \"application/vnd.amazon.mobi8-ebook\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.americandynamics.acc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"acc\"]\n  },\n  \"application/vnd.amiga.ami\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ami\"]\n  },\n  \"application/vnd.amundsen.maze+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.android.ota\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.android.package-archive\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"apk\"]\n  },\n  \"application/vnd.anki\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.anser-web-certificate-issue-initiation\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cii\"]\n  },\n  \"application/vnd.anser-web-funds-transfer-initiation\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"fti\"]\n  },\n  \"application/vnd.antix.game-component\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"atx\"]\n  },\n  \"application/vnd.apache.arrow.file\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.apache.arrow.stream\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.apache.thrift.binary\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.apache.thrift.compact\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.apache.thrift.json\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.api+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.aplextor.warrp+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.apothekende.reservation+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.apple.installer+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mpkg\"]\n  },\n  \"application/vnd.apple.keynote\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"key\"]\n  },\n  \"application/vnd.apple.mpegurl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"m3u8\"]\n  },\n  \"application/vnd.apple.numbers\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"numbers\"]\n  },\n  \"application/vnd.apple.pages\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pages\"]\n  },\n  \"application/vnd.apple.pkpass\": {\n    \"compressible\": false,\n    \"extensions\": [\"pkpass\"]\n  },\n  \"application/vnd.arastra.swi\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.aristanetworks.swi\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"swi\"]\n  },\n  \"application/vnd.artisan+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.artsquare\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.astraea-software.iota\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"iota\"]\n  },\n  \"application/vnd.audiograph\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"aep\"]\n  },\n  \"application/vnd.autopackage\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.avalon+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.avistar+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.balsamiq.bmml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"bmml\"]\n  },\n  \"application/vnd.balsamiq.bmpr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.banana-accounting\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bbf.usp.error\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bbf.usp.msg\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bbf.usp.msg+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.bekitzur-stech+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.bint.med-content\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.biopax.rdf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.blink-idb-value-wrapper\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.blueice.multipass\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mpm\"]\n  },\n  \"application/vnd.bluetooth.ep.oob\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bluetooth.le.oob\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bmi\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"bmi\"]\n  },\n  \"application/vnd.bpf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bpf3\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.businessobjects\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rep\"]\n  },\n  \"application/vnd.byu.uapi+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cab-jscript\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.canon-cpdl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.canon-lips\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.capasystems-pg+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cendio.thinlinc.clientconf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.century-systems.tcp_stream\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.chemdraw+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"cdxml\"]\n  },\n  \"application/vnd.chess-pgn\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.chipnuts.karaoke-mmd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mmd\"]\n  },\n  \"application/vnd.ciedi\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cinderella\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdy\"]\n  },\n  \"application/vnd.cirpack.isdn-ext\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.citationstyles.style+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"csl\"]\n  },\n  \"application/vnd.claymore\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cla\"]\n  },\n  \"application/vnd.cloanto.rp9\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rp9\"]\n  },\n  \"application/vnd.clonk.c4group\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"c4g\",\"c4d\",\"c4f\",\"c4p\",\"c4u\"]\n  },\n  \"application/vnd.cluetrust.cartomobile-config\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"c11amc\"]\n  },\n  \"application/vnd.cluetrust.cartomobile-config-pkg\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"c11amz\"]\n  },\n  \"application/vnd.coffeescript\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.document\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.document-template\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.presentation\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.presentation-template\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.spreadsheet\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.spreadsheet-template\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collection+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.collection.doc+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.collection.next+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.comicbook+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.comicbook-rar\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.commerce-battelle\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.commonspace\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"csp\"]\n  },\n  \"application/vnd.contact.cmsg\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdbcmsg\"]\n  },\n  \"application/vnd.coreos.ignition+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cosmocaller\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cmc\"]\n  },\n  \"application/vnd.crick.clicker\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"clkx\"]\n  },\n  \"application/vnd.crick.clicker.keyboard\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"clkk\"]\n  },\n  \"application/vnd.crick.clicker.palette\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"clkp\"]\n  },\n  \"application/vnd.crick.clicker.template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"clkt\"]\n  },\n  \"application/vnd.crick.clicker.wordbank\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"clkw\"]\n  },\n  \"application/vnd.criticaltools.wbs+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wbs\"]\n  },\n  \"application/vnd.cryptii.pipe+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.crypto-shade-file\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cryptomator.encrypted\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cryptomator.vault\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ctc-posml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pml\"]\n  },\n  \"application/vnd.ctct.ws+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cups-pdf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cups-postscript\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cups-ppd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ppd\"]\n  },\n  \"application/vnd.cups-raster\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cups-raw\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.curl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.curl.car\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"car\"]\n  },\n  \"application/vnd.curl.pcurl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pcurl\"]\n  },\n  \"application/vnd.cyan.dean.root+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cybank\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cyclonedx+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cyclonedx+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.d2l.coursepackage1p0+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.d3m-dataset\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.d3m-problem\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dart\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dart\"]\n  },\n  \"application/vnd.data-vision.rdz\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rdz\"]\n  },\n  \"application/vnd.datapackage+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dataresource+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dbf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dbf\"]\n  },\n  \"application/vnd.debian.binary-package\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dece.data\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvf\",\"uvvf\",\"uvd\",\"uvvd\"]\n  },\n  \"application/vnd.dece.ttml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"uvt\",\"uvvt\"]\n  },\n  \"application/vnd.dece.unspecified\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvx\",\"uvvx\"]\n  },\n  \"application/vnd.dece.zip\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvz\",\"uvvz\"]\n  },\n  \"application/vnd.denovo.fcselayout-link\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fe_launch\"]\n  },\n  \"application/vnd.desmume.movie\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dir-bi.plate-dl-nosuffix\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dm.delegation+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dna\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dna\"]\n  },\n  \"application/vnd.document+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dolby.mlp\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mlp\"]\n  },\n  \"application/vnd.dolby.mobile.1\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dolby.mobile.2\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.doremir.scorecloud-binary-document\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dpgraph\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dpg\"]\n  },\n  \"application/vnd.dreamfactory\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dfac\"]\n  },\n  \"application/vnd.drive+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ds-keypoint\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"kpxx\"]\n  },\n  \"application/vnd.dtg.local\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dtg.local.flash\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dtg.local.html\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ait\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ait\"]\n  },\n  \"application/vnd.dvb.dvbisl+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.dvbj\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.esgcontainer\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ipdcdftnotifaccess\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ipdcesgaccess\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ipdcesgaccess2\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ipdcesgpdd\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ipdcroaming\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.iptv.alfec-base\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.iptv.alfec-enhancement\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.notif-aggregate-root+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-container+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-generic+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-ia-msglist+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-ia-registration-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-ia-registration-response+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-init+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.pfr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.service\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"svc\"]\n  },\n  \"application/vnd.dxr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dynageo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"geo\"]\n  },\n  \"application/vnd.dzr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.easykaraoke.cdgdownload\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecdis-update\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecip.rlp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.eclipse.ditto+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ecowin.chart\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mag\"]\n  },\n  \"application/vnd.ecowin.filerequest\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecowin.fileupdate\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecowin.series\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecowin.seriesrequest\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecowin.seriesupdate\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.efi.img\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.efi.iso\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.emclient.accessrequest+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.enliven\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nml\"]\n  },\n  \"application/vnd.enphase.envoy\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.eprints.data+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.epson.esf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"esf\"]\n  },\n  \"application/vnd.epson.msf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"msf\"]\n  },\n  \"application/vnd.epson.quickanime\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"qam\"]\n  },\n  \"application/vnd.epson.salt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"slt\"]\n  },\n  \"application/vnd.epson.ssf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ssf\"]\n  },\n  \"application/vnd.ericsson.quickcall\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.espass-espass+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.eszigno3+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"es3\",\"et3\"]\n  },\n  \"application/vnd.etsi.aoc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.asic-e+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.etsi.asic-s+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.etsi.cug+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvcommand+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvdiscovery+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvprofile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvsad-bc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvsad-cod+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvsad-npvr+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvservice+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvsync+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvueprofile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.mcid+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.mheg5\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.etsi.overload-control-policy-dataset+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.pstn+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.sci+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.simservs+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.timestamp-token\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.etsi.tsl+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.tsl.der\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.eu.kasparian.car+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.eudora.data\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.evolv.ecig.profile\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.evolv.ecig.settings\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.evolv.ecig.theme\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.exstream-empower+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.exstream-package\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ezpix-album\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ez2\"]\n  },\n  \"application/vnd.ezpix-package\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ez3\"]\n  },\n  \"application/vnd.f-secure.mobile\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.familysearch.gedcom+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.fastcopy-disk-image\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fdf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fdf\"]\n  },\n  \"application/vnd.fdsn.mseed\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mseed\"]\n  },\n  \"application/vnd.fdsn.seed\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"seed\",\"dataless\"]\n  },\n  \"application/vnd.ffsns\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ficlab.flb+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.filmit.zfc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fints\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.firemonkeys.cloudcell\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.flographit\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gph\"]\n  },\n  \"application/vnd.fluxtime.clip\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ftc\"]\n  },\n  \"application/vnd.font-fontforge-sfd\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.framemaker\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fm\",\"frame\",\"maker\",\"book\"]\n  },\n  \"application/vnd.frogans.fnc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fnc\"]\n  },\n  \"application/vnd.frogans.ltf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ltf\"]\n  },\n  \"application/vnd.fsc.weblaunch\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fsc\"]\n  },\n  \"application/vnd.fujifilm.fb.docuworks\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujifilm.fb.docuworks.binder\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujifilm.fb.docuworks.container\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujifilm.fb.jfi+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.fujitsu.oasys\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oas\"]\n  },\n  \"application/vnd.fujitsu.oasys2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oa2\"]\n  },\n  \"application/vnd.fujitsu.oasys3\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oa3\"]\n  },\n  \"application/vnd.fujitsu.oasysgp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fg5\"]\n  },\n  \"application/vnd.fujitsu.oasysprs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"bh2\"]\n  },\n  \"application/vnd.fujixerox.art-ex\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujixerox.art4\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujixerox.ddd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ddd\"]\n  },\n  \"application/vnd.fujixerox.docuworks\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xdw\"]\n  },\n  \"application/vnd.fujixerox.docuworks.binder\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xbd\"]\n  },\n  \"application/vnd.fujixerox.docuworks.container\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujixerox.hbpl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fut-misnet\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.futoin+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.futoin+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.fuzzysheet\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fzs\"]\n  },\n  \"application/vnd.genomatix.tuxedo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"txd\"]\n  },\n  \"application/vnd.gentics.grd+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.geo+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.geocube+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.geogebra.file\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ggb\"]\n  },\n  \"application/vnd.geogebra.slides\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.geogebra.tool\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ggt\"]\n  },\n  \"application/vnd.geometry-explorer\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gex\",\"gre\"]\n  },\n  \"application/vnd.geonext\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gxt\"]\n  },\n  \"application/vnd.geoplan\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"g2w\"]\n  },\n  \"application/vnd.geospace\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"g3w\"]\n  },\n  \"application/vnd.gerber\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.globalplatform.card-content-mgt\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.globalplatform.card-content-mgt-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.gmx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gmx\"]\n  },\n  \"application/vnd.google-apps.document\": {\n    \"compressible\": false,\n    \"extensions\": [\"gdoc\"]\n  },\n  \"application/vnd.google-apps.presentation\": {\n    \"compressible\": false,\n    \"extensions\": [\"gslides\"]\n  },\n  \"application/vnd.google-apps.spreadsheet\": {\n    \"compressible\": false,\n    \"extensions\": [\"gsheet\"]\n  },\n  \"application/vnd.google-earth.kml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"kml\"]\n  },\n  \"application/vnd.google-earth.kmz\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"kmz\"]\n  },\n  \"application/vnd.gov.sk.e-form+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.gov.sk.e-form+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.gov.sk.xmldatacontainer+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.grafeq\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gqf\",\"gqs\"]\n  },\n  \"application/vnd.gridmp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.groove-account\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gac\"]\n  },\n  \"application/vnd.groove-help\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ghf\"]\n  },\n  \"application/vnd.groove-identity-message\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gim\"]\n  },\n  \"application/vnd.groove-injector\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"grv\"]\n  },\n  \"application/vnd.groove-tool-message\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gtm\"]\n  },\n  \"application/vnd.groove-tool-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tpl\"]\n  },\n  \"application/vnd.groove-vcard\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vcg\"]\n  },\n  \"application/vnd.hal+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hal+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"hal\"]\n  },\n  \"application/vnd.handheld-entertainment+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"zmm\"]\n  },\n  \"application/vnd.hbci\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hbci\"]\n  },\n  \"application/vnd.hc+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hcl-bireports\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.hdt\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.heroku+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hhe.lesson-player\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"les\"]\n  },\n  \"application/vnd.hl7cda+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/vnd.hl7v2+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/vnd.hp-hpgl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hpgl\"]\n  },\n  \"application/vnd.hp-hpid\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hpid\"]\n  },\n  \"application/vnd.hp-hps\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hps\"]\n  },\n  \"application/vnd.hp-jlyt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jlt\"]\n  },\n  \"application/vnd.hp-pcl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pcl\"]\n  },\n  \"application/vnd.hp-pclxl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pclxl\"]\n  },\n  \"application/vnd.httphone\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.hydrostatix.sof-data\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sfd-hdstx\"]\n  },\n  \"application/vnd.hyper+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hyper-item+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hyperdrive+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hzn-3d-crossword\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ibm.afplinedata\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ibm.electronic-media\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ibm.minipay\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mpy\"]\n  },\n  \"application/vnd.ibm.modcap\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"afp\",\"listafp\",\"list3820\"]\n  },\n  \"application/vnd.ibm.rights-management\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"irm\"]\n  },\n  \"application/vnd.ibm.secure-container\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sc\"]\n  },\n  \"application/vnd.iccprofile\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"icc\",\"icm\"]\n  },\n  \"application/vnd.ieee.1905\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.igloader\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"igl\"]\n  },\n  \"application/vnd.imagemeter.folder+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.imagemeter.image+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.immervision-ivp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ivp\"]\n  },\n  \"application/vnd.immervision-ivu\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ivu\"]\n  },\n  \"application/vnd.ims.imsccv1p1\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ims.imsccv1p2\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ims.imsccv1p3\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ims.lis.v2.result+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ims.lti.v2.toolconsumerprofile+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ims.lti.v2.toolproxy+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ims.lti.v2.toolproxy.id+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ims.lti.v2.toolsettings+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ims.lti.v2.toolsettings.simple+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.informedcontrol.rms+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.informix-visionary\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.infotech.project\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.infotech.project+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.innopath.wamp.notification\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.insors.igm\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"igm\"]\n  },\n  \"application/vnd.intercon.formnet\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xpw\",\"xpx\"]\n  },\n  \"application/vnd.intergeo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"i2g\"]\n  },\n  \"application/vnd.intertrust.digibox\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.intertrust.nncp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.intu.qbo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"qbo\"]\n  },\n  \"application/vnd.intu.qfx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"qfx\"]\n  },\n  \"application/vnd.iptc.g2.catalogitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.conceptitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.knowledgeitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.newsitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.newsmessage+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.packageitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.planningitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ipunplugged.rcprofile\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rcprofile\"]\n  },\n  \"application/vnd.irepository.package+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"irp\"]\n  },\n  \"application/vnd.is-xpr\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xpr\"]\n  },\n  \"application/vnd.isac.fcs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fcs\"]\n  },\n  \"application/vnd.iso11783-10+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.jam\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jam\"]\n  },\n  \"application/vnd.japannet-directory-service\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-jpnstore-wakeup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-payment-wakeup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-registration\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-registration-wakeup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-setstore-wakeup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-verification\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-verification-wakeup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.jcp.javame.midlet-rms\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rms\"]\n  },\n  \"application/vnd.jisp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jisp\"]\n  },\n  \"application/vnd.joost.joda-archive\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"joda\"]\n  },\n  \"application/vnd.jsk.isdn-ngn\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.kahootz\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ktz\",\"ktr\"]\n  },\n  \"application/vnd.kde.karbon\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"karbon\"]\n  },\n  \"application/vnd.kde.kchart\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"chrt\"]\n  },\n  \"application/vnd.kde.kformula\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kfo\"]\n  },\n  \"application/vnd.kde.kivio\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"flw\"]\n  },\n  \"application/vnd.kde.kontour\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kon\"]\n  },\n  \"application/vnd.kde.kpresenter\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kpr\",\"kpt\"]\n  },\n  \"application/vnd.kde.kspread\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ksp\"]\n  },\n  \"application/vnd.kde.kword\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kwd\",\"kwt\"]\n  },\n  \"application/vnd.kenameaapp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"htke\"]\n  },\n  \"application/vnd.kidspiration\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kia\"]\n  },\n  \"application/vnd.kinar\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kne\",\"knp\"]\n  },\n  \"application/vnd.koan\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"skp\",\"skd\",\"skt\",\"skm\"]\n  },\n  \"application/vnd.kodak-descriptor\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sse\"]\n  },\n  \"application/vnd.las\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.las.las+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.las.las+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"lasxml\"]\n  },\n  \"application/vnd.laszip\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.leap+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.liberty-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.llamagraphics.life-balance.desktop\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"lbd\"]\n  },\n  \"application/vnd.llamagraphics.life-balance.exchange+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"lbe\"]\n  },\n  \"application/vnd.logipipe.circuit+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.loom\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.lotus-1-2-3\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"123\"]\n  },\n  \"application/vnd.lotus-approach\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"apr\"]\n  },\n  \"application/vnd.lotus-freelance\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pre\"]\n  },\n  \"application/vnd.lotus-notes\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nsf\"]\n  },\n  \"application/vnd.lotus-organizer\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"org\"]\n  },\n  \"application/vnd.lotus-screencam\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"scm\"]\n  },\n  \"application/vnd.lotus-wordpro\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"lwp\"]\n  },\n  \"application/vnd.macports.portpkg\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"portpkg\"]\n  },\n  \"application/vnd.mapbox-vector-tile\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mvt\"]\n  },\n  \"application/vnd.marlin.drm.actiontoken+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.marlin.drm.conftoken+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.marlin.drm.license+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.marlin.drm.mdcf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mason+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.maxar.archive.3tz+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.maxmind.maxmind-db\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mcd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mcd\"]\n  },\n  \"application/vnd.medcalcdata\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mc1\"]\n  },\n  \"application/vnd.mediastation.cdkey\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdkey\"]\n  },\n  \"application/vnd.meridian-slingshot\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mfer\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mwf\"]\n  },\n  \"application/vnd.mfmp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mfm\"]\n  },\n  \"application/vnd.micro+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.micrografx.flo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"flo\"]\n  },\n  \"application/vnd.micrografx.igx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"igx\"]\n  },\n  \"application/vnd.microsoft.portable-executable\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.microsoft.windows.thumbnail-cache\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.miele+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.mif\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mif\"]\n  },\n  \"application/vnd.minisoft-hp3000-save\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mitsubishi.misty-guard.trustweb\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mobius.daf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"daf\"]\n  },\n  \"application/vnd.mobius.dis\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dis\"]\n  },\n  \"application/vnd.mobius.mbk\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mbk\"]\n  },\n  \"application/vnd.mobius.mqy\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mqy\"]\n  },\n  \"application/vnd.mobius.msl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"msl\"]\n  },\n  \"application/vnd.mobius.plc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"plc\"]\n  },\n  \"application/vnd.mobius.txf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"txf\"]\n  },\n  \"application/vnd.mophun.application\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mpn\"]\n  },\n  \"application/vnd.mophun.certificate\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mpc\"]\n  },\n  \"application/vnd.motorola.flexsuite\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.adsi\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.fis\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.gotap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.kmr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.ttc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.wem\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.iprm\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mozilla.xul+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xul\"]\n  },\n  \"application/vnd.ms-3mfdocument\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-artgalry\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cil\"]\n  },\n  \"application/vnd.ms-asf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-cab-compressed\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cab\"]\n  },\n  \"application/vnd.ms-color.iccprofile\": {\n    \"source\": \"apache\"\n  },\n  \"application/vnd.ms-excel\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"xls\",\"xlm\",\"xla\",\"xlc\",\"xlt\",\"xlw\"]\n  },\n  \"application/vnd.ms-excel.addin.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xlam\"]\n  },\n  \"application/vnd.ms-excel.sheet.binary.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xlsb\"]\n  },\n  \"application/vnd.ms-excel.sheet.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xlsm\"]\n  },\n  \"application/vnd.ms-excel.template.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xltm\"]\n  },\n  \"application/vnd.ms-fontobject\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"eot\"]\n  },\n  \"application/vnd.ms-htmlhelp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"chm\"]\n  },\n  \"application/vnd.ms-ims\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ims\"]\n  },\n  \"application/vnd.ms-lrm\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"lrm\"]\n  },\n  \"application/vnd.ms-office.activex+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-officetheme\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"thmx\"]\n  },\n  \"application/vnd.ms-opentype\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-outlook\": {\n    \"compressible\": false,\n    \"extensions\": [\"msg\"]\n  },\n  \"application/vnd.ms-package.obfuscated-opentype\": {\n    \"source\": \"apache\"\n  },\n  \"application/vnd.ms-pki.seccat\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cat\"]\n  },\n  \"application/vnd.ms-pki.stl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"stl\"]\n  },\n  \"application/vnd.ms-playready.initiator+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-powerpoint\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"ppt\",\"pps\",\"pot\"]\n  },\n  \"application/vnd.ms-powerpoint.addin.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ppam\"]\n  },\n  \"application/vnd.ms-powerpoint.presentation.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pptm\"]\n  },\n  \"application/vnd.ms-powerpoint.slide.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sldm\"]\n  },\n  \"application/vnd.ms-powerpoint.slideshow.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ppsm\"]\n  },\n  \"application/vnd.ms-powerpoint.template.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"potm\"]\n  },\n  \"application/vnd.ms-printdevicecapabilities+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-printing.printticket+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-printschematicket+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-project\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mpp\",\"mpt\"]\n  },\n  \"application/vnd.ms-tnef\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-windows.devicepairing\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-windows.nwprinting.oob\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-windows.printerpairing\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-windows.wsd.oob\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-wmdrm.lic-chlg-req\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-wmdrm.lic-resp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-wmdrm.meter-chlg-req\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-wmdrm.meter-resp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-word.document.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"docm\"]\n  },\n  \"application/vnd.ms-word.template.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dotm\"]\n  },\n  \"application/vnd.ms-works\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wps\",\"wks\",\"wcm\",\"wdb\"]\n  },\n  \"application/vnd.ms-wpl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wpl\"]\n  },\n  \"application/vnd.ms-xpsdocument\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"xps\"]\n  },\n  \"application/vnd.msa-disk-image\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mseq\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mseq\"]\n  },\n  \"application/vnd.msign\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.multiad.creator\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.multiad.creator.cif\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.music-niff\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.musician\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mus\"]\n  },\n  \"application/vnd.muvee.style\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"msty\"]\n  },\n  \"application/vnd.mynfc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"taglet\"]\n  },\n  \"application/vnd.nacamar.ybrid+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ncd.control\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ncd.reference\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nearst.inv+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nebumind.line\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nervana\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.netfpx\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.neurolanguage.nlu\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nlu\"]\n  },\n  \"application/vnd.nimn\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nintendo.nitro.rom\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nintendo.snes.rom\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nitf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ntf\",\"nitf\"]\n  },\n  \"application/vnd.noblenet-directory\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nnd\"]\n  },\n  \"application/vnd.noblenet-sealer\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nns\"]\n  },\n  \"application/vnd.noblenet-web\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nnw\"]\n  },\n  \"application/vnd.nokia.catalogs\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.conml+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.conml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nokia.iptv.config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nokia.isds-radio-presets\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.landmark+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.landmark+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nokia.landmarkcollection+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nokia.n-gage.ac+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ac\"]\n  },\n  \"application/vnd.nokia.n-gage.data\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ngdat\"]\n  },\n  \"application/vnd.nokia.n-gage.symbian.install\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"n-gage\"]\n  },\n  \"application/vnd.nokia.ncd\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.pcd+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.pcd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nokia.radio-preset\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rpst\"]\n  },\n  \"application/vnd.nokia.radio-presets\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rpss\"]\n  },\n  \"application/vnd.novadigm.edm\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"edm\"]\n  },\n  \"application/vnd.novadigm.edx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"edx\"]\n  },\n  \"application/vnd.novadigm.ext\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ext\"]\n  },\n  \"application/vnd.ntt-local.content-share\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ntt-local.file-transfer\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ntt-local.ogw_remote-access\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ntt-local.sip-ta_remote\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ntt-local.sip-ta_tcp_stream\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oasis.opendocument.chart\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odc\"]\n  },\n  \"application/vnd.oasis.opendocument.chart-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"otc\"]\n  },\n  \"application/vnd.oasis.opendocument.database\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odb\"]\n  },\n  \"application/vnd.oasis.opendocument.formula\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odf\"]\n  },\n  \"application/vnd.oasis.opendocument.formula-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odft\"]\n  },\n  \"application/vnd.oasis.opendocument.graphics\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"odg\"]\n  },\n  \"application/vnd.oasis.opendocument.graphics-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"otg\"]\n  },\n  \"application/vnd.oasis.opendocument.image\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odi\"]\n  },\n  \"application/vnd.oasis.opendocument.image-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oti\"]\n  },\n  \"application/vnd.oasis.opendocument.presentation\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"odp\"]\n  },\n  \"application/vnd.oasis.opendocument.presentation-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"otp\"]\n  },\n  \"application/vnd.oasis.opendocument.spreadsheet\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"ods\"]\n  },\n  \"application/vnd.oasis.opendocument.spreadsheet-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ots\"]\n  },\n  \"application/vnd.oasis.opendocument.text\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"odt\"]\n  },\n  \"application/vnd.oasis.opendocument.text-master\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odm\"]\n  },\n  \"application/vnd.oasis.opendocument.text-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ott\"]\n  },\n  \"application/vnd.oasis.opendocument.text-web\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oth\"]\n  },\n  \"application/vnd.obn\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ocf+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oci.image.manifest.v1+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oftn.l10n+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.contentaccessdownload+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.contentaccessstreaming+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.cspg-hexbinary\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oipf.dae.svg+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.dae.xhtml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.mippvcontrolmessage+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.pae.gem\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oipf.spdiscovery+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.spdlist+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.ueprofile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.userprofile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.olpc-sugar\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xo\"]\n  },\n  \"application/vnd.oma-scws-config\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma-scws-http-request\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma-scws-http-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.associated-procedure-parameter+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.drm-trigger+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.imd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.ltkm\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.notification+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.provisioningtrigger\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.sgboot\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.sgdd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.sgdu\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.simple-symbol-container\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.smartcard-trigger+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.sprov+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.stkm\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.cab-address-book+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.cab-feature-handler+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.cab-pcc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.cab-subs-invite+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.cab-user-prefs+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.dcd\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.dcdc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.dd2+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dd2\"]\n  },\n  \"application/vnd.oma.drm.risd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.group-usage-list+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.lwm2m+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.lwm2m+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.lwm2m+tlv\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.pal+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.poc.detailed-progress-report+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.poc.final-report+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.poc.groups+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.poc.invocation-descriptor+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.poc.optimized-progress-report+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.push\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.scidm.messages+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.xcap-directory+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.omads-email+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/vnd.omads-file+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/vnd.omads-folder+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/vnd.omaloc-supl-init\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepager\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepagertamp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepagertamx\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepagertat\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepagertatp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepagertatx\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.openblox.game+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"obgx\"]\n  },\n  \"application/vnd.openblox.game-binary\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.openeye.oeb\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.openofficeorg.extension\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"oxt\"]\n  },\n  \"application/vnd.openstreetmap.data+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"osm\"]\n  },\n  \"application/vnd.opentimestamps.ots\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.openxmlformats-officedocument.custom-properties+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.customxmlproperties+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawing+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.extended-properties+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.comments+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.presentation\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"pptx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slide\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sldx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slide+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slideshow\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ppsx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.tags+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"potx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"xlsx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xltx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.theme+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.themeoverride+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.vmldrawing\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"docx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dotx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-package.core-properties+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-package.relationships+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oracle.resource+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.orange.indata\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.osa.netdeploy\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.osgeo.mapguide.package\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mgp\"]\n  },\n  \"application/vnd.osgi.bundle\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.osgi.dp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dp\"]\n  },\n  \"application/vnd.osgi.subsystem\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"esa\"]\n  },\n  \"application/vnd.otps.ct-kip+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oxli.countgraph\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.pagerduty+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.palm\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pdb\",\"pqa\",\"oprc\"]\n  },\n  \"application/vnd.panoply\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.paos.xml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.patentdive\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.patientecommsdoc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.pawaafile\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"paw\"]\n  },\n  \"application/vnd.pcos\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.pg.format\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"str\"]\n  },\n  \"application/vnd.pg.osasli\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ei6\"]\n  },\n  \"application/vnd.piaccess.application-licence\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.picsel\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"efif\"]\n  },\n  \"application/vnd.pmi.widget\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wg\"]\n  },\n  \"application/vnd.poc.group-advertisement+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.pocketlearn\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"plf\"]\n  },\n  \"application/vnd.powerbuilder6\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pbd\"]\n  },\n  \"application/vnd.powerbuilder6-s\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.powerbuilder7\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.powerbuilder7-s\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.powerbuilder75\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.powerbuilder75-s\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.preminet\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.previewsystems.box\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"box\"]\n  },\n  \"application/vnd.proteus.magazine\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mgz\"]\n  },\n  \"application/vnd.psfs\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.publishare-delta-tree\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"qps\"]\n  },\n  \"application/vnd.pvi.ptid1\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ptid\"]\n  },\n  \"application/vnd.pwg-multiplexed\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.pwg-xhtml-print+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.qualcomm.brew-app-res\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.quarantainenet\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.quark.quarkxpress\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"qxd\",\"qxt\",\"qwd\",\"qwt\",\"qxl\",\"qxb\"]\n  },\n  \"application/vnd.quobject-quoxdocument\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.radisys.moml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-audit+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-audit-conf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-audit-conn+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-audit-dialog+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-audit-stream+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-conf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-base+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-fax-detect+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-fax-sendrecv+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-group+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-speech+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-transform+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.rainstor.data\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.rapid\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.rar\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rar\"]\n  },\n  \"application/vnd.realvnc.bed\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"bed\"]\n  },\n  \"application/vnd.recordare.musicxml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mxl\"]\n  },\n  \"application/vnd.recordare.musicxml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"musicxml\"]\n  },\n  \"application/vnd.renlearn.rlprint\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.resilient.logic\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.restful+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.rig.cryptonote\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cryptonote\"]\n  },\n  \"application/vnd.rim.cod\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cod\"]\n  },\n  \"application/vnd.rn-realmedia\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"rm\"]\n  },\n  \"application/vnd.rn-realmedia-vbr\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"rmvb\"]\n  },\n  \"application/vnd.route66.link66+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"link66\"]\n  },\n  \"application/vnd.rs-274x\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ruckus.download\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.s3sms\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sailingtracker.track\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"st\"]\n  },\n  \"application/vnd.sar\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sbm.cid\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sbm.mid2\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.scribus\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.3df\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.csf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.doc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.eml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.mht\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.net\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.ppt\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.tiff\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.xls\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealedmedia.softseal.html\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealedmedia.softseal.pdf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.seemail\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"see\"]\n  },\n  \"application/vnd.seis+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.sema\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sema\"]\n  },\n  \"application/vnd.semd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"semd\"]\n  },\n  \"application/vnd.semf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"semf\"]\n  },\n  \"application/vnd.shade-save-file\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.shana.informed.formdata\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ifm\"]\n  },\n  \"application/vnd.shana.informed.formtemplate\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"itp\"]\n  },\n  \"application/vnd.shana.informed.interchange\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"iif\"]\n  },\n  \"application/vnd.shana.informed.package\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ipk\"]\n  },\n  \"application/vnd.shootproof+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.shopkick+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.shp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.shx\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sigrok.session\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.simtech-mindmapper\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"twd\",\"twds\"]\n  },\n  \"application/vnd.siren+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.smaf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mmf\"]\n  },\n  \"application/vnd.smart.notebook\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.smart.teacher\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"teacher\"]\n  },\n  \"application/vnd.snesdev-page-table\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.software602.filler.form+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"fo\"]\n  },\n  \"application/vnd.software602.filler.form-xml-zip\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.solent.sdkm+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"sdkm\",\"sdkd\"]\n  },\n  \"application/vnd.spotfire.dxp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dxp\"]\n  },\n  \"application/vnd.spotfire.sfs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sfs\"]\n  },\n  \"application/vnd.sqlite3\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sss-cod\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sss-dtf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sss-ntf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.stardivision.calc\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sdc\"]\n  },\n  \"application/vnd.stardivision.draw\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sda\"]\n  },\n  \"application/vnd.stardivision.impress\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sdd\"]\n  },\n  \"application/vnd.stardivision.math\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"smf\"]\n  },\n  \"application/vnd.stardivision.writer\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sdw\",\"vor\"]\n  },\n  \"application/vnd.stardivision.writer-global\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sgl\"]\n  },\n  \"application/vnd.stepmania.package\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"smzip\"]\n  },\n  \"application/vnd.stepmania.stepchart\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sm\"]\n  },\n  \"application/vnd.street-stream\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sun.wadl+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wadl\"]\n  },\n  \"application/vnd.sun.xml.calc\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxc\"]\n  },\n  \"application/vnd.sun.xml.calc.template\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"stc\"]\n  },\n  \"application/vnd.sun.xml.draw\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxd\"]\n  },\n  \"application/vnd.sun.xml.draw.template\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"std\"]\n  },\n  \"application/vnd.sun.xml.impress\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxi\"]\n  },\n  \"application/vnd.sun.xml.impress.template\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sti\"]\n  },\n  \"application/vnd.sun.xml.math\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxm\"]\n  },\n  \"application/vnd.sun.xml.writer\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxw\"]\n  },\n  \"application/vnd.sun.xml.writer.global\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxg\"]\n  },\n  \"application/vnd.sun.xml.writer.template\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"stw\"]\n  },\n  \"application/vnd.sus-calendar\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sus\",\"susp\"]\n  },\n  \"application/vnd.svd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"svd\"]\n  },\n  \"application/vnd.swiftview-ics\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sycle+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.syft+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.symbian.install\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sis\",\"sisx\"]\n  },\n  \"application/vnd.syncml+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"xsm\"]\n  },\n  \"application/vnd.syncml.dm+wbxml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"extensions\": [\"bdm\"]\n  },\n  \"application/vnd.syncml.dm+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"xdm\"]\n  },\n  \"application/vnd.syncml.dm.notification\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.syncml.dmddf+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.syncml.dmddf+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"ddf\"]\n  },\n  \"application/vnd.syncml.dmtnds+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.syncml.dmtnds+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/vnd.syncml.ds.notification\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.tableschema+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.tao.intent-module-archive\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tao\"]\n  },\n  \"application/vnd.tcpdump.pcap\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pcap\",\"cap\",\"dmp\"]\n  },\n  \"application/vnd.think-cell.ppttc+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.tmd.mediaflex.api+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.tml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.tmobile-livetv\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tmo\"]\n  },\n  \"application/vnd.tri.onesource\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.trid.tpt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tpt\"]\n  },\n  \"application/vnd.triscape.mxs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mxs\"]\n  },\n  \"application/vnd.trueapp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tra\"]\n  },\n  \"application/vnd.truedoc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ubisoft.webplayer\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ufdl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ufd\",\"ufdl\"]\n  },\n  \"application/vnd.uiq.theme\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"utz\"]\n  },\n  \"application/vnd.umajin\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"umj\"]\n  },\n  \"application/vnd.unity\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"unityweb\"]\n  },\n  \"application/vnd.uoml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"uoml\"]\n  },\n  \"application/vnd.uplanet.alert\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.alert-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.bearer-choice\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.bearer-choice-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.cacheop\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.cacheop-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.channel\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.channel-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.list\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.list-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.listcmd\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.listcmd-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.signal\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uri-map\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.valve.source.material\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vcx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vcx\"]\n  },\n  \"application/vnd.vd-study\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vectorworks\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vel+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.verimatrix.vcas\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.veritone.aion+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.veryant.thin\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ves.encrypted\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vidsoft.vidconference\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.visio\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vsd\",\"vst\",\"vss\",\"vsw\"]\n  },\n  \"application/vnd.visionary\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vis\"]\n  },\n  \"application/vnd.vividence.scriptfile\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vsf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vsf\"]\n  },\n  \"application/vnd.wap.sic\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wap.slc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wap.wbxml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"extensions\": [\"wbxml\"]\n  },\n  \"application/vnd.wap.wmlc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wmlc\"]\n  },\n  \"application/vnd.wap.wmlscriptc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wmlsc\"]\n  },\n  \"application/vnd.webturbo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wtb\"]\n  },\n  \"application/vnd.wfa.dpp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wfa.p2p\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wfa.wsc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.windows.devicepairing\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wmc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wmf.bootstrap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wolfram.mathematica\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wolfram.mathematica.package\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wolfram.player\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nbp\"]\n  },\n  \"application/vnd.wordperfect\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wpd\"]\n  },\n  \"application/vnd.wqd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wqd\"]\n  },\n  \"application/vnd.wrq-hp3000-labelled\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wt.stf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"stf\"]\n  },\n  \"application/vnd.wv.csp+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wv.csp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.wv.ssp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.xacml+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.xara\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xar\"]\n  },\n  \"application/vnd.xfdl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xfdl\"]\n  },\n  \"application/vnd.xfdl.webform\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xmi+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.xmpie.cpkg\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xmpie.dpkg\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xmpie.plan\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xmpie.ppkg\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xmpie.xlim\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.yamaha.hv-dic\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hvd\"]\n  },\n  \"application/vnd.yamaha.hv-script\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hvs\"]\n  },\n  \"application/vnd.yamaha.hv-voice\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hvp\"]\n  },\n  \"application/vnd.yamaha.openscoreformat\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"osf\"]\n  },\n  \"application/vnd.yamaha.openscoreformat.osfpvg+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"osfpvg\"]\n  },\n  \"application/vnd.yamaha.remote-setup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.yamaha.smaf-audio\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"saf\"]\n  },\n  \"application/vnd.yamaha.smaf-phrase\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"spf\"]\n  },\n  \"application/vnd.yamaha.through-ngn\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.yamaha.tunnel-udpencap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.yaoweme\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.yellowriver-custom-menu\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cmp\"]\n  },\n  \"application/vnd.youtube.yt\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.zul\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"zir\",\"zirz\"]\n  },\n  \"application/vnd.zzazz.deck+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"zaz\"]\n  },\n  \"application/voicexml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"vxml\"]\n  },\n  \"application/voucher-cms+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vq-rtcpxr\": {\n    \"source\": \"iana\"\n  },\n  \"application/wasm\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wasm\"]\n  },\n  \"application/watcherinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wif\"]\n  },\n  \"application/webpush-options+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/whoispp-query\": {\n    \"source\": \"iana\"\n  },\n  \"application/whoispp-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/widget\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wgt\"]\n  },\n  \"application/winhlp\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"hlp\"]\n  },\n  \"application/wita\": {\n    \"source\": \"iana\"\n  },\n  \"application/wordperfect5.1\": {\n    \"source\": \"iana\"\n  },\n  \"application/wsdl+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wsdl\"]\n  },\n  \"application/wspolicy+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wspolicy\"]\n  },\n  \"application/x-7z-compressed\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"7z\"]\n  },\n  \"application/x-abiword\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"abw\"]\n  },\n  \"application/x-ace-compressed\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ace\"]\n  },\n  \"application/x-amf\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-apple-diskimage\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"dmg\"]\n  },\n  \"application/x-arj\": {\n    \"compressible\": false,\n    \"extensions\": [\"arj\"]\n  },\n  \"application/x-authorware-bin\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"aab\",\"x32\",\"u32\",\"vox\"]\n  },\n  \"application/x-authorware-map\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"aam\"]\n  },\n  \"application/x-authorware-seg\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"aas\"]\n  },\n  \"application/x-bcpio\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"bcpio\"]\n  },\n  \"application/x-bdoc\": {\n    \"compressible\": false,\n    \"extensions\": [\"bdoc\"]\n  },\n  \"application/x-bittorrent\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"torrent\"]\n  },\n  \"application/x-blorb\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"blb\",\"blorb\"]\n  },\n  \"application/x-bzip\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"bz\"]\n  },\n  \"application/x-bzip2\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"bz2\",\"boz\"]\n  },\n  \"application/x-cbr\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cbr\",\"cba\",\"cbt\",\"cbz\",\"cb7\"]\n  },\n  \"application/x-cdlink\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"vcd\"]\n  },\n  \"application/x-cfs-compressed\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cfs\"]\n  },\n  \"application/x-chat\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"chat\"]\n  },\n  \"application/x-chess-pgn\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pgn\"]\n  },\n  \"application/x-chrome-extension\": {\n    \"extensions\": [\"crx\"]\n  },\n  \"application/x-cocoa\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"cco\"]\n  },\n  \"application/x-compress\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-conference\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"nsc\"]\n  },\n  \"application/x-cpio\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cpio\"]\n  },\n  \"application/x-csh\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"csh\"]\n  },\n  \"application/x-deb\": {\n    \"compressible\": false\n  },\n  \"application/x-debian-package\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"deb\",\"udeb\"]\n  },\n  \"application/x-dgc-compressed\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"dgc\"]\n  },\n  \"application/x-director\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"dir\",\"dcr\",\"dxr\",\"cst\",\"cct\",\"cxt\",\"w3d\",\"fgd\",\"swa\"]\n  },\n  \"application/x-doom\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wad\"]\n  },\n  \"application/x-dtbncx+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"ncx\"]\n  },\n  \"application/x-dtbook+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"dtb\"]\n  },\n  \"application/x-dtbresource+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"res\"]\n  },\n  \"application/x-dvi\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"dvi\"]\n  },\n  \"application/x-envoy\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"evy\"]\n  },\n  \"application/x-eva\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"eva\"]\n  },\n  \"application/x-font-bdf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"bdf\"]\n  },\n  \"application/x-font-dos\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-font-framemaker\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-font-ghostscript\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gsf\"]\n  },\n  \"application/x-font-libgrx\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-font-linux-psf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"psf\"]\n  },\n  \"application/x-font-pcf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pcf\"]\n  },\n  \"application/x-font-snf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"snf\"]\n  },\n  \"application/x-font-speedo\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-font-sunos-news\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-font-type1\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pfa\",\"pfb\",\"pfm\",\"afm\"]\n  },\n  \"application/x-font-vfont\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-freearc\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"arc\"]\n  },\n  \"application/x-futuresplash\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"spl\"]\n  },\n  \"application/x-gca-compressed\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gca\"]\n  },\n  \"application/x-glulx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ulx\"]\n  },\n  \"application/x-gnumeric\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gnumeric\"]\n  },\n  \"application/x-gramps-xml\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gramps\"]\n  },\n  \"application/x-gtar\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gtar\"]\n  },\n  \"application/x-gzip\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-hdf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"hdf\"]\n  },\n  \"application/x-httpd-php\": {\n    \"compressible\": true,\n    \"extensions\": [\"php\"]\n  },\n  \"application/x-install-instructions\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"install\"]\n  },\n  \"application/x-iso9660-image\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"iso\"]\n  },\n  \"application/x-iwork-keynote-sffkey\": {\n    \"extensions\": [\"key\"]\n  },\n  \"application/x-iwork-numbers-sffnumbers\": {\n    \"extensions\": [\"numbers\"]\n  },\n  \"application/x-iwork-pages-sffpages\": {\n    \"extensions\": [\"pages\"]\n  },\n  \"application/x-java-archive-diff\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"jardiff\"]\n  },\n  \"application/x-java-jnlp-file\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"jnlp\"]\n  },\n  \"application/x-javascript\": {\n    \"compressible\": true\n  },\n  \"application/x-keepass2\": {\n    \"extensions\": [\"kdbx\"]\n  },\n  \"application/x-latex\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"latex\"]\n  },\n  \"application/x-lua-bytecode\": {\n    \"extensions\": [\"luac\"]\n  },\n  \"application/x-lzh-compressed\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"lzh\",\"lha\"]\n  },\n  \"application/x-makeself\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"run\"]\n  },\n  \"application/x-mie\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mie\"]\n  },\n  \"application/x-mobipocket-ebook\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"prc\",\"mobi\"]\n  },\n  \"application/x-mpegurl\": {\n    \"compressible\": false\n  },\n  \"application/x-ms-application\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"application\"]\n  },\n  \"application/x-ms-shortcut\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"lnk\"]\n  },\n  \"application/x-ms-wmd\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wmd\"]\n  },\n  \"application/x-ms-wmz\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wmz\"]\n  },\n  \"application/x-ms-xbap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xbap\"]\n  },\n  \"application/x-msaccess\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mdb\"]\n  },\n  \"application/x-msbinder\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"obd\"]\n  },\n  \"application/x-mscardfile\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"crd\"]\n  },\n  \"application/x-msclip\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"clp\"]\n  },\n  \"application/x-msdos-program\": {\n    \"extensions\": [\"exe\"]\n  },\n  \"application/x-msdownload\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"exe\",\"dll\",\"com\",\"bat\",\"msi\"]\n  },\n  \"application/x-msmediaview\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mvb\",\"m13\",\"m14\"]\n  },\n  \"application/x-msmetafile\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wmf\",\"wmz\",\"emf\",\"emz\"]\n  },\n  \"application/x-msmoney\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mny\"]\n  },\n  \"application/x-mspublisher\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pub\"]\n  },\n  \"application/x-msschedule\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"scd\"]\n  },\n  \"application/x-msterminal\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"trm\"]\n  },\n  \"application/x-mswrite\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wri\"]\n  },\n  \"application/x-netcdf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"nc\",\"cdf\"]\n  },\n  \"application/x-ns-proxy-autoconfig\": {\n    \"compressible\": true,\n    \"extensions\": [\"pac\"]\n  },\n  \"application/x-nzb\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"nzb\"]\n  },\n  \"application/x-perl\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"pl\",\"pm\"]\n  },\n  \"application/x-pilot\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"prc\",\"pdb\"]\n  },\n  \"application/x-pkcs12\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"p12\",\"pfx\"]\n  },\n  \"application/x-pkcs7-certificates\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"p7b\",\"spc\"]\n  },\n  \"application/x-pkcs7-certreqresp\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"p7r\"]\n  },\n  \"application/x-pki-message\": {\n    \"source\": \"iana\"\n  },\n  \"application/x-rar-compressed\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"rar\"]\n  },\n  \"application/x-redhat-package-manager\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"rpm\"]\n  },\n  \"application/x-research-info-systems\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ris\"]\n  },\n  \"application/x-sea\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"sea\"]\n  },\n  \"application/x-sh\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"sh\"]\n  },\n  \"application/x-shar\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"shar\"]\n  },\n  \"application/x-shockwave-flash\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"swf\"]\n  },\n  \"application/x-silverlight-app\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xap\"]\n  },\n  \"application/x-sql\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sql\"]\n  },\n  \"application/x-stuffit\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"sit\"]\n  },\n  \"application/x-stuffitx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sitx\"]\n  },\n  \"application/x-subrip\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"srt\"]\n  },\n  \"application/x-sv4cpio\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sv4cpio\"]\n  },\n  \"application/x-sv4crc\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sv4crc\"]\n  },\n  \"application/x-t3vm-image\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"t3\"]\n  },\n  \"application/x-tads\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gam\"]\n  },\n  \"application/x-tar\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"tar\"]\n  },\n  \"application/x-tcl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"tcl\",\"tk\"]\n  },\n  \"application/x-tex\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"tex\"]\n  },\n  \"application/x-tex-tfm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"tfm\"]\n  },\n  \"application/x-texinfo\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"texinfo\",\"texi\"]\n  },\n  \"application/x-tgif\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"obj\"]\n  },\n  \"application/x-ustar\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ustar\"]\n  },\n  \"application/x-virtualbox-hdd\": {\n    \"compressible\": true,\n    \"extensions\": [\"hdd\"]\n  },\n  \"application/x-virtualbox-ova\": {\n    \"compressible\": true,\n    \"extensions\": [\"ova\"]\n  },\n  \"application/x-virtualbox-ovf\": {\n    \"compressible\": true,\n    \"extensions\": [\"ovf\"]\n  },\n  \"application/x-virtualbox-vbox\": {\n    \"compressible\": true,\n    \"extensions\": [\"vbox\"]\n  },\n  \"application/x-virtualbox-vbox-extpack\": {\n    \"compressible\": false,\n    \"extensions\": [\"vbox-extpack\"]\n  },\n  \"application/x-virtualbox-vdi\": {\n    \"compressible\": true,\n    \"extensions\": [\"vdi\"]\n  },\n  \"application/x-virtualbox-vhd\": {\n    \"compressible\": true,\n    \"extensions\": [\"vhd\"]\n  },\n  \"application/x-virtualbox-vmdk\": {\n    \"compressible\": true,\n    \"extensions\": [\"vmdk\"]\n  },\n  \"application/x-wais-source\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"src\"]\n  },\n  \"application/x-web-app-manifest+json\": {\n    \"compressible\": true,\n    \"extensions\": [\"webapp\"]\n  },\n  \"application/x-www-form-urlencoded\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/x-x509-ca-cert\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"der\",\"crt\",\"pem\"]\n  },\n  \"application/x-x509-ca-ra-cert\": {\n    \"source\": \"iana\"\n  },\n  \"application/x-x509-next-ca-cert\": {\n    \"source\": \"iana\"\n  },\n  \"application/x-xfig\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"fig\"]\n  },\n  \"application/x-xliff+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"xlf\"]\n  },\n  \"application/x-xpinstall\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"xpi\"]\n  },\n  \"application/x-xz\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xz\"]\n  },\n  \"application/x-zmachine\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"z1\",\"z2\",\"z3\",\"z4\",\"z5\",\"z6\",\"z7\",\"z8\"]\n  },\n  \"application/x400-bp\": {\n    \"source\": \"iana\"\n  },\n  \"application/xacml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xaml+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"xaml\"]\n  },\n  \"application/xcap-att+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xav\"]\n  },\n  \"application/xcap-caps+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xca\"]\n  },\n  \"application/xcap-diff+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xdf\"]\n  },\n  \"application/xcap-el+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xel\"]\n  },\n  \"application/xcap-error+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xcap-ns+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xns\"]\n  },\n  \"application/xcon-conference-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xcon-conference-info-diff+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xenc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xenc\"]\n  },\n  \"application/xhtml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xhtml\",\"xht\"]\n  },\n  \"application/xhtml-voice+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/xliff+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xlf\"]\n  },\n  \"application/xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xml\",\"xsl\",\"xsd\",\"rng\"]\n  },\n  \"application/xml-dtd\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dtd\"]\n  },\n  \"application/xml-external-parsed-entity\": {\n    \"source\": \"iana\"\n  },\n  \"application/xml-patch+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xmpp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xop+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xop\"]\n  },\n  \"application/xproc+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"xpl\"]\n  },\n  \"application/xslt+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xsl\",\"xslt\"]\n  },\n  \"application/xspf+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"xspf\"]\n  },\n  \"application/xv+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mxml\",\"xhvml\",\"xvml\",\"xvm\"]\n  },\n  \"application/yang\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"yang\"]\n  },\n  \"application/yang-data+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/yang-data+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/yang-patch+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/yang-patch+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/yin+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"yin\"]\n  },\n  \"application/zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"zip\"]\n  },\n  \"application/zlib\": {\n    \"source\": \"iana\"\n  },\n  \"application/zstd\": {\n    \"source\": \"iana\"\n  },\n  \"audio/1d-interleaved-parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"audio/32kadpcm\": {\n    \"source\": \"iana\"\n  },\n  \"audio/3gpp\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"3gpp\"]\n  },\n  \"audio/3gpp2\": {\n    \"source\": \"iana\"\n  },\n  \"audio/aac\": {\n    \"source\": \"iana\"\n  },\n  \"audio/ac3\": {\n    \"source\": \"iana\"\n  },\n  \"audio/adpcm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"adp\"]\n  },\n  \"audio/amr\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"amr\"]\n  },\n  \"audio/amr-wb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/amr-wb+\": {\n    \"source\": \"iana\"\n  },\n  \"audio/aptx\": {\n    \"source\": \"iana\"\n  },\n  \"audio/asc\": {\n    \"source\": \"iana\"\n  },\n  \"audio/atrac-advanced-lossless\": {\n    \"source\": \"iana\"\n  },\n  \"audio/atrac-x\": {\n    \"source\": \"iana\"\n  },\n  \"audio/atrac3\": {\n    \"source\": \"iana\"\n  },\n  \"audio/basic\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"au\",\"snd\"]\n  },\n  \"audio/bv16\": {\n    \"source\": \"iana\"\n  },\n  \"audio/bv32\": {\n    \"source\": \"iana\"\n  },\n  \"audio/clearmode\": {\n    \"source\": \"iana\"\n  },\n  \"audio/cn\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dat12\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dls\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dsr-es201108\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dsr-es202050\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dsr-es202211\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dsr-es202212\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dv\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dvi4\": {\n    \"source\": \"iana\"\n  },\n  \"audio/eac3\": {\n    \"source\": \"iana\"\n  },\n  \"audio/encaprtp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrc\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrc-qcp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrc0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrc1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcb0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcb1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcnw\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcnw0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcnw1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcwb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcwb0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcwb1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evs\": {\n    \"source\": \"iana\"\n  },\n  \"audio/flexfec\": {\n    \"source\": \"iana\"\n  },\n  \"audio/fwdred\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g711-0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g719\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g722\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g7221\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g723\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g726-16\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g726-24\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g726-32\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g726-40\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g728\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g729\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g7291\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g729d\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g729e\": {\n    \"source\": \"iana\"\n  },\n  \"audio/gsm\": {\n    \"source\": \"iana\"\n  },\n  \"audio/gsm-efr\": {\n    \"source\": \"iana\"\n  },\n  \"audio/gsm-hr-08\": {\n    \"source\": \"iana\"\n  },\n  \"audio/ilbc\": {\n    \"source\": \"iana\"\n  },\n  \"audio/ip-mr_v2.5\": {\n    \"source\": \"iana\"\n  },\n  \"audio/isac\": {\n    \"source\": \"apache\"\n  },\n  \"audio/l16\": {\n    \"source\": \"iana\"\n  },\n  \"audio/l20\": {\n    \"source\": \"iana\"\n  },\n  \"audio/l24\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"audio/l8\": {\n    \"source\": \"iana\"\n  },\n  \"audio/lpc\": {\n    \"source\": \"iana\"\n  },\n  \"audio/melp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/melp1200\": {\n    \"source\": \"iana\"\n  },\n  \"audio/melp2400\": {\n    \"source\": \"iana\"\n  },\n  \"audio/melp600\": {\n    \"source\": \"iana\"\n  },\n  \"audio/mhas\": {\n    \"source\": \"iana\"\n  },\n  \"audio/midi\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mid\",\"midi\",\"kar\",\"rmi\"]\n  },\n  \"audio/mobile-xmf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mxmf\"]\n  },\n  \"audio/mp3\": {\n    \"compressible\": false,\n    \"extensions\": [\"mp3\"]\n  },\n  \"audio/mp4\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"m4a\",\"mp4a\"]\n  },\n  \"audio/mp4a-latm\": {\n    \"source\": \"iana\"\n  },\n  \"audio/mpa\": {\n    \"source\": \"iana\"\n  },\n  \"audio/mpa-robust\": {\n    \"source\": \"iana\"\n  },\n  \"audio/mpeg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"mpga\",\"mp2\",\"mp2a\",\"mp3\",\"m2a\",\"m3a\"]\n  },\n  \"audio/mpeg4-generic\": {\n    \"source\": \"iana\"\n  },\n  \"audio/musepack\": {\n    \"source\": \"apache\"\n  },\n  \"audio/ogg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"oga\",\"ogg\",\"spx\",\"opus\"]\n  },\n  \"audio/opus\": {\n    \"source\": \"iana\"\n  },\n  \"audio/parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"audio/pcma\": {\n    \"source\": \"iana\"\n  },\n  \"audio/pcma-wb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/pcmu\": {\n    \"source\": \"iana\"\n  },\n  \"audio/pcmu-wb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/prs.sid\": {\n    \"source\": \"iana\"\n  },\n  \"audio/qcelp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/raptorfec\": {\n    \"source\": \"iana\"\n  },\n  \"audio/red\": {\n    \"source\": \"iana\"\n  },\n  \"audio/rtp-enc-aescm128\": {\n    \"source\": \"iana\"\n  },\n  \"audio/rtp-midi\": {\n    \"source\": \"iana\"\n  },\n  \"audio/rtploopback\": {\n    \"source\": \"iana\"\n  },\n  \"audio/rtx\": {\n    \"source\": \"iana\"\n  },\n  \"audio/s3m\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"s3m\"]\n  },\n  \"audio/scip\": {\n    \"source\": \"iana\"\n  },\n  \"audio/silk\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sil\"]\n  },\n  \"audio/smv\": {\n    \"source\": \"iana\"\n  },\n  \"audio/smv-qcp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/smv0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/sofa\": {\n    \"source\": \"iana\"\n  },\n  \"audio/sp-midi\": {\n    \"source\": \"iana\"\n  },\n  \"audio/speex\": {\n    \"source\": \"iana\"\n  },\n  \"audio/t140c\": {\n    \"source\": \"iana\"\n  },\n  \"audio/t38\": {\n    \"source\": \"iana\"\n  },\n  \"audio/telephone-event\": {\n    \"source\": \"iana\"\n  },\n  \"audio/tetra_acelp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/tetra_acelp_bb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/tone\": {\n    \"source\": \"iana\"\n  },\n  \"audio/tsvcis\": {\n    \"source\": \"iana\"\n  },\n  \"audio/uemclip\": {\n    \"source\": \"iana\"\n  },\n  \"audio/ulpfec\": {\n    \"source\": \"iana\"\n  },\n  \"audio/usac\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vdvi\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vmr-wb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.3gpp.iufp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.4sb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.audiokoz\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.celp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.cisco.nse\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.cmles.radio-events\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.cns.anp1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.cns.inf1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dece.audio\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uva\",\"uvva\"]\n  },\n  \"audio/vnd.digital-winds\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"eol\"]\n  },\n  \"audio/vnd.dlna.adts\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.heaac.1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.heaac.2\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.mlp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.mps\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.pl2\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.pl2x\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.pl2z\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.pulse.1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dra\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dra\"]\n  },\n  \"audio/vnd.dts\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dts\"]\n  },\n  \"audio/vnd.dts.hd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dtshd\"]\n  },\n  \"audio/vnd.dts.uhd\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dvb.file\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.everad.plj\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.hns.audio\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.lucent.voice\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"lvp\"]\n  },\n  \"audio/vnd.ms-playready.media.pya\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pya\"]\n  },\n  \"audio/vnd.nokia.mobile-xmf\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.nortel.vbk\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.nuera.ecelp4800\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ecelp4800\"]\n  },\n  \"audio/vnd.nuera.ecelp7470\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ecelp7470\"]\n  },\n  \"audio/vnd.nuera.ecelp9600\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ecelp9600\"]\n  },\n  \"audio/vnd.octel.sbc\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.presonus.multitrack\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.qcelp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.rhetorex.32kadpcm\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.rip\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rip\"]\n  },\n  \"audio/vnd.rn-realaudio\": {\n    \"compressible\": false\n  },\n  \"audio/vnd.sealedmedia.softseal.mpeg\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.vmx.cvsd\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.wave\": {\n    \"compressible\": false\n  },\n  \"audio/vorbis\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"audio/vorbis-config\": {\n    \"source\": \"iana\"\n  },\n  \"audio/wav\": {\n    \"compressible\": false,\n    \"extensions\": [\"wav\"]\n  },\n  \"audio/wave\": {\n    \"compressible\": false,\n    \"extensions\": [\"wav\"]\n  },\n  \"audio/webm\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"weba\"]\n  },\n  \"audio/x-aac\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"aac\"]\n  },\n  \"audio/x-aiff\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"aif\",\"aiff\",\"aifc\"]\n  },\n  \"audio/x-caf\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"caf\"]\n  },\n  \"audio/x-flac\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"flac\"]\n  },\n  \"audio/x-m4a\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"m4a\"]\n  },\n  \"audio/x-matroska\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mka\"]\n  },\n  \"audio/x-mpegurl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"m3u\"]\n  },\n  \"audio/x-ms-wax\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wax\"]\n  },\n  \"audio/x-ms-wma\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wma\"]\n  },\n  \"audio/x-pn-realaudio\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ram\",\"ra\"]\n  },\n  \"audio/x-pn-realaudio-plugin\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"rmp\"]\n  },\n  \"audio/x-realaudio\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"ra\"]\n  },\n  \"audio/x-tta\": {\n    \"source\": \"apache\"\n  },\n  \"audio/x-wav\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wav\"]\n  },\n  \"audio/xm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xm\"]\n  },\n  \"chemical/x-cdx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cdx\"]\n  },\n  \"chemical/x-cif\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cif\"]\n  },\n  \"chemical/x-cmdf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cmdf\"]\n  },\n  \"chemical/x-cml\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cml\"]\n  },\n  \"chemical/x-csml\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"csml\"]\n  },\n  \"chemical/x-pdb\": {\n    \"source\": \"apache\"\n  },\n  \"chemical/x-xyz\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xyz\"]\n  },\n  \"font/collection\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ttc\"]\n  },\n  \"font/otf\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"otf\"]\n  },\n  \"font/sfnt\": {\n    \"source\": \"iana\"\n  },\n  \"font/ttf\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ttf\"]\n  },\n  \"font/woff\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"woff\"]\n  },\n  \"font/woff2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"woff2\"]\n  },\n  \"image/aces\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"exr\"]\n  },\n  \"image/apng\": {\n    \"compressible\": false,\n    \"extensions\": [\"apng\"]\n  },\n  \"image/avci\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"avci\"]\n  },\n  \"image/avcs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"avcs\"]\n  },\n  \"image/avif\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"avif\"]\n  },\n  \"image/bmp\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"bmp\"]\n  },\n  \"image/cgm\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cgm\"]\n  },\n  \"image/dicom-rle\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"drle\"]\n  },\n  \"image/emf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"emf\"]\n  },\n  \"image/fits\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fits\"]\n  },\n  \"image/g3fax\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"g3\"]\n  },\n  \"image/gif\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"gif\"]\n  },\n  \"image/heic\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"heic\"]\n  },\n  \"image/heic-sequence\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"heics\"]\n  },\n  \"image/heif\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"heif\"]\n  },\n  \"image/heif-sequence\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"heifs\"]\n  },\n  \"image/hej2k\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hej2\"]\n  },\n  \"image/hsj2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hsj2\"]\n  },\n  \"image/ief\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ief\"]\n  },\n  \"image/jls\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jls\"]\n  },\n  \"image/jp2\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"jp2\",\"jpg2\"]\n  },\n  \"image/jpeg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"jpeg\",\"jpg\",\"jpe\"]\n  },\n  \"image/jph\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jph\"]\n  },\n  \"image/jphc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jhc\"]\n  },\n  \"image/jpm\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"jpm\"]\n  },\n  \"image/jpx\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"jpx\",\"jpf\"]\n  },\n  \"image/jxr\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxr\"]\n  },\n  \"image/jxra\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxra\"]\n  },\n  \"image/jxrs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxrs\"]\n  },\n  \"image/jxs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxs\"]\n  },\n  \"image/jxsc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxsc\"]\n  },\n  \"image/jxsi\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxsi\"]\n  },\n  \"image/jxss\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxss\"]\n  },\n  \"image/ktx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ktx\"]\n  },\n  \"image/ktx2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ktx2\"]\n  },\n  \"image/naplps\": {\n    \"source\": \"iana\"\n  },\n  \"image/pjpeg\": {\n    \"compressible\": false\n  },\n  \"image/png\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"png\"]\n  },\n  \"image/prs.btif\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"btif\"]\n  },\n  \"image/prs.pti\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pti\"]\n  },\n  \"image/pwg-raster\": {\n    \"source\": \"iana\"\n  },\n  \"image/sgi\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sgi\"]\n  },\n  \"image/svg+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"svg\",\"svgz\"]\n  },\n  \"image/t38\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"t38\"]\n  },\n  \"image/tiff\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"tif\",\"tiff\"]\n  },\n  \"image/tiff-fx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tfx\"]\n  },\n  \"image/vnd.adobe.photoshop\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"psd\"]\n  },\n  \"image/vnd.airzip.accelerator.azv\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"azv\"]\n  },\n  \"image/vnd.cns.inf2\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.dece.graphic\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvi\",\"uvvi\",\"uvg\",\"uvvg\"]\n  },\n  \"image/vnd.djvu\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"djvu\",\"djv\"]\n  },\n  \"image/vnd.dvb.subtitle\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sub\"]\n  },\n  \"image/vnd.dwg\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dwg\"]\n  },\n  \"image/vnd.dxf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dxf\"]\n  },\n  \"image/vnd.fastbidsheet\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fbs\"]\n  },\n  \"image/vnd.fpx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fpx\"]\n  },\n  \"image/vnd.fst\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fst\"]\n  },\n  \"image/vnd.fujixerox.edmics-mmr\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mmr\"]\n  },\n  \"image/vnd.fujixerox.edmics-rlc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rlc\"]\n  },\n  \"image/vnd.globalgraphics.pgb\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.microsoft.icon\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ico\"]\n  },\n  \"image/vnd.mix\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.mozilla.apng\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.ms-dds\": {\n    \"compressible\": true,\n    \"extensions\": [\"dds\"]\n  },\n  \"image/vnd.ms-modi\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mdi\"]\n  },\n  \"image/vnd.ms-photo\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wdp\"]\n  },\n  \"image/vnd.net-fpx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"npx\"]\n  },\n  \"image/vnd.pco.b16\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"b16\"]\n  },\n  \"image/vnd.radiance\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.sealed.png\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.sealedmedia.softseal.gif\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.sealedmedia.softseal.jpg\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.svf\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.tencent.tap\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tap\"]\n  },\n  \"image/vnd.valve.source.texture\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vtf\"]\n  },\n  \"image/vnd.wap.wbmp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wbmp\"]\n  },\n  \"image/vnd.xiff\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xif\"]\n  },\n  \"image/vnd.zbrush.pcx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pcx\"]\n  },\n  \"image/webp\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"webp\"]\n  },\n  \"image/wmf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wmf\"]\n  },\n  \"image/x-3ds\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"3ds\"]\n  },\n  \"image/x-cmu-raster\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ras\"]\n  },\n  \"image/x-cmx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cmx\"]\n  },\n  \"image/x-freehand\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"fh\",\"fhc\",\"fh4\",\"fh5\",\"fh7\"]\n  },\n  \"image/x-icon\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"ico\"]\n  },\n  \"image/x-jng\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"jng\"]\n  },\n  \"image/x-mrsid-image\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sid\"]\n  },\n  \"image/x-ms-bmp\": {\n    \"source\": \"nginx\",\n    \"compressible\": true,\n    \"extensions\": [\"bmp\"]\n  },\n  \"image/x-pcx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pcx\"]\n  },\n  \"image/x-pict\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pic\",\"pct\"]\n  },\n  \"image/x-portable-anymap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pnm\"]\n  },\n  \"image/x-portable-bitmap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pbm\"]\n  },\n  \"image/x-portable-graymap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pgm\"]\n  },\n  \"image/x-portable-pixmap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ppm\"]\n  },\n  \"image/x-rgb\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"rgb\"]\n  },\n  \"image/x-tga\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"tga\"]\n  },\n  \"image/x-xbitmap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xbm\"]\n  },\n  \"image/x-xcf\": {\n    \"compressible\": false\n  },\n  \"image/x-xpixmap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xpm\"]\n  },\n  \"image/x-xwindowdump\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xwd\"]\n  },\n  \"message/cpim\": {\n    \"source\": \"iana\"\n  },\n  \"message/delivery-status\": {\n    \"source\": \"iana\"\n  },\n  \"message/disposition-notification\": {\n    \"source\": \"iana\",\n    \"extensions\": [\n      \"disposition-notification\"\n    ]\n  },\n  \"message/external-body\": {\n    \"source\": \"iana\"\n  },\n  \"message/feedback-report\": {\n    \"source\": \"iana\"\n  },\n  \"message/global\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"u8msg\"]\n  },\n  \"message/global-delivery-status\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"u8dsn\"]\n  },\n  \"message/global-disposition-notification\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"u8mdn\"]\n  },\n  \"message/global-headers\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"u8hdr\"]\n  },\n  \"message/http\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"message/imdn+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"message/news\": {\n    \"source\": \"iana\"\n  },\n  \"message/partial\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"message/rfc822\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"eml\",\"mime\"]\n  },\n  \"message/s-http\": {\n    \"source\": \"iana\"\n  },\n  \"message/sip\": {\n    \"source\": \"iana\"\n  },\n  \"message/sipfrag\": {\n    \"source\": \"iana\"\n  },\n  \"message/tracking-status\": {\n    \"source\": \"iana\"\n  },\n  \"message/vnd.si.simp\": {\n    \"source\": \"iana\"\n  },\n  \"message/vnd.wfa.wsc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wsc\"]\n  },\n  \"model/3mf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"3mf\"]\n  },\n  \"model/e57\": {\n    \"source\": \"iana\"\n  },\n  \"model/gltf+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"gltf\"]\n  },\n  \"model/gltf-binary\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"glb\"]\n  },\n  \"model/iges\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"igs\",\"iges\"]\n  },\n  \"model/mesh\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"msh\",\"mesh\",\"silo\"]\n  },\n  \"model/mtl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mtl\"]\n  },\n  \"model/obj\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"obj\"]\n  },\n  \"model/step\": {\n    \"source\": \"iana\"\n  },\n  \"model/step+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"stpx\"]\n  },\n  \"model/step+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"stpz\"]\n  },\n  \"model/step-xml+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"stpxz\"]\n  },\n  \"model/stl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"stl\"]\n  },\n  \"model/vnd.collada+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dae\"]\n  },\n  \"model/vnd.dwf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dwf\"]\n  },\n  \"model/vnd.flatland.3dml\": {\n    \"source\": \"iana\"\n  },\n  \"model/vnd.gdl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gdl\"]\n  },\n  \"model/vnd.gs-gdl\": {\n    \"source\": \"apache\"\n  },\n  \"model/vnd.gs.gdl\": {\n    \"source\": \"iana\"\n  },\n  \"model/vnd.gtw\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gtw\"]\n  },\n  \"model/vnd.moml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"model/vnd.mts\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mts\"]\n  },\n  \"model/vnd.opengex\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ogex\"]\n  },\n  \"model/vnd.parasolid.transmit.binary\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"x_b\"]\n  },\n  \"model/vnd.parasolid.transmit.text\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"x_t\"]\n  },\n  \"model/vnd.pytha.pyox\": {\n    \"source\": \"iana\"\n  },\n  \"model/vnd.rosette.annotated-data-model\": {\n    \"source\": \"iana\"\n  },\n  \"model/vnd.sap.vds\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vds\"]\n  },\n  \"model/vnd.usdz+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"usdz\"]\n  },\n  \"model/vnd.valve.source.compiled-map\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"bsp\"]\n  },\n  \"model/vnd.vtu\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vtu\"]\n  },\n  \"model/vrml\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"wrl\",\"vrml\"]\n  },\n  \"model/x3d+binary\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"x3db\",\"x3dbz\"]\n  },\n  \"model/x3d+fastinfoset\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"x3db\"]\n  },\n  \"model/x3d+vrml\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"x3dv\",\"x3dvz\"]\n  },\n  \"model/x3d+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"x3d\",\"x3dz\"]\n  },\n  \"model/x3d-vrml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"x3dv\"]\n  },\n  \"multipart/alternative\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"multipart/appledouble\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/byteranges\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/digest\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/encrypted\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"multipart/form-data\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"multipart/header-set\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/mixed\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/multilingual\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/parallel\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/related\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"multipart/report\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/signed\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"multipart/vnd.bint.med-plus\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/voice-message\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/x-mixed-replace\": {\n    \"source\": \"iana\"\n  },\n  \"text/1d-interleaved-parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"text/cache-manifest\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"appcache\",\"manifest\"]\n  },\n  \"text/calendar\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ics\",\"ifb\"]\n  },\n  \"text/calender\": {\n    \"compressible\": true\n  },\n  \"text/cmd\": {\n    \"compressible\": true\n  },\n  \"text/coffeescript\": {\n    \"extensions\": [\"coffee\",\"litcoffee\"]\n  },\n  \"text/cql\": {\n    \"source\": \"iana\"\n  },\n  \"text/cql-expression\": {\n    \"source\": \"iana\"\n  },\n  \"text/cql-identifier\": {\n    \"source\": \"iana\"\n  },\n  \"text/css\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"css\"]\n  },\n  \"text/csv\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"csv\"]\n  },\n  \"text/csv-schema\": {\n    \"source\": \"iana\"\n  },\n  \"text/directory\": {\n    \"source\": \"iana\"\n  },\n  \"text/dns\": {\n    \"source\": \"iana\"\n  },\n  \"text/ecmascript\": {\n    \"source\": \"iana\"\n  },\n  \"text/encaprtp\": {\n    \"source\": \"iana\"\n  },\n  \"text/enriched\": {\n    \"source\": \"iana\"\n  },\n  \"text/fhirpath\": {\n    \"source\": \"iana\"\n  },\n  \"text/flexfec\": {\n    \"source\": \"iana\"\n  },\n  \"text/fwdred\": {\n    \"source\": \"iana\"\n  },\n  \"text/gff3\": {\n    \"source\": \"iana\"\n  },\n  \"text/grammar-ref-list\": {\n    \"source\": \"iana\"\n  },\n  \"text/html\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"html\",\"htm\",\"shtml\"]\n  },\n  \"text/jade\": {\n    \"extensions\": [\"jade\"]\n  },\n  \"text/javascript\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"text/jcr-cnd\": {\n    \"source\": \"iana\"\n  },\n  \"text/jsx\": {\n    \"compressible\": true,\n    \"extensions\": [\"jsx\"]\n  },\n  \"text/less\": {\n    \"compressible\": true,\n    \"extensions\": [\"less\"]\n  },\n  \"text/markdown\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"markdown\",\"md\"]\n  },\n  \"text/mathml\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"mml\"]\n  },\n  \"text/mdx\": {\n    \"compressible\": true,\n    \"extensions\": [\"mdx\"]\n  },\n  \"text/mizar\": {\n    \"source\": \"iana\"\n  },\n  \"text/n3\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"n3\"]\n  },\n  \"text/parameters\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\"\n  },\n  \"text/parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"text/plain\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"txt\",\"text\",\"conf\",\"def\",\"list\",\"log\",\"in\",\"ini\"]\n  },\n  \"text/provenance-notation\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\"\n  },\n  \"text/prs.fallenstein.rst\": {\n    \"source\": \"iana\"\n  },\n  \"text/prs.lines.tag\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dsc\"]\n  },\n  \"text/prs.prop.logic\": {\n    \"source\": \"iana\"\n  },\n  \"text/raptorfec\": {\n    \"source\": \"iana\"\n  },\n  \"text/red\": {\n    \"source\": \"iana\"\n  },\n  \"text/rfc822-headers\": {\n    \"source\": \"iana\"\n  },\n  \"text/richtext\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rtx\"]\n  },\n  \"text/rtf\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rtf\"]\n  },\n  \"text/rtp-enc-aescm128\": {\n    \"source\": \"iana\"\n  },\n  \"text/rtploopback\": {\n    \"source\": \"iana\"\n  },\n  \"text/rtx\": {\n    \"source\": \"iana\"\n  },\n  \"text/sgml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sgml\",\"sgm\"]\n  },\n  \"text/shaclc\": {\n    \"source\": \"iana\"\n  },\n  \"text/shex\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"shex\"]\n  },\n  \"text/slim\": {\n    \"extensions\": [\"slim\",\"slm\"]\n  },\n  \"text/spdx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"spdx\"]\n  },\n  \"text/strings\": {\n    \"source\": \"iana\"\n  },\n  \"text/stylus\": {\n    \"extensions\": [\"stylus\",\"styl\"]\n  },\n  \"text/t140\": {\n    \"source\": \"iana\"\n  },\n  \"text/tab-separated-values\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"tsv\"]\n  },\n  \"text/troff\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"t\",\"tr\",\"roff\",\"man\",\"me\",\"ms\"]\n  },\n  \"text/turtle\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"extensions\": [\"ttl\"]\n  },\n  \"text/ulpfec\": {\n    \"source\": \"iana\"\n  },\n  \"text/uri-list\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"uri\",\"uris\",\"urls\"]\n  },\n  \"text/vcard\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"vcard\"]\n  },\n  \"text/vnd.a\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.abc\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.ascii-art\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.curl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"curl\"]\n  },\n  \"text/vnd.curl.dcurl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"dcurl\"]\n  },\n  \"text/vnd.curl.mcurl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mcurl\"]\n  },\n  \"text/vnd.curl.scurl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"scurl\"]\n  },\n  \"text/vnd.debian.copyright\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\"\n  },\n  \"text/vnd.dmclientscript\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.dvb.subtitle\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sub\"]\n  },\n  \"text/vnd.esmertec.theme-descriptor\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\"\n  },\n  \"text/vnd.familysearch.gedcom\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ged\"]\n  },\n  \"text/vnd.ficlab.flt\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.fly\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fly\"]\n  },\n  \"text/vnd.fmi.flexstor\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"flx\"]\n  },\n  \"text/vnd.gml\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.graphviz\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gv\"]\n  },\n  \"text/vnd.hans\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.hgl\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.in3d.3dml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"3dml\"]\n  },\n  \"text/vnd.in3d.spot\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"spot\"]\n  },\n  \"text/vnd.iptc.newsml\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.iptc.nitf\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.latex-z\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.motorola.reflex\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.ms-mediapackage\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.net2phone.commcenter.command\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.radisys.msml-basic-layout\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.senx.warpscript\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.si.uricatalogue\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.sosi\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.sun.j2me.app-descriptor\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"extensions\": [\"jad\"]\n  },\n  \"text/vnd.trolltech.linguist\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\"\n  },\n  \"text/vnd.wap.si\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.wap.sl\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.wap.wml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wml\"]\n  },\n  \"text/vnd.wap.wmlscript\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wmls\"]\n  },\n  \"text/vtt\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"vtt\"]\n  },\n  \"text/x-asm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"s\",\"asm\"]\n  },\n  \"text/x-c\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"c\",\"cc\",\"cxx\",\"cpp\",\"h\",\"hh\",\"dic\"]\n  },\n  \"text/x-component\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"htc\"]\n  },\n  \"text/x-fortran\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"f\",\"for\",\"f77\",\"f90\"]\n  },\n  \"text/x-gwt-rpc\": {\n    \"compressible\": true\n  },\n  \"text/x-handlebars-template\": {\n    \"extensions\": [\"hbs\"]\n  },\n  \"text/x-java-source\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"java\"]\n  },\n  \"text/x-jquery-tmpl\": {\n    \"compressible\": true\n  },\n  \"text/x-lua\": {\n    \"extensions\": [\"lua\"]\n  },\n  \"text/x-markdown\": {\n    \"compressible\": true,\n    \"extensions\": [\"mkd\"]\n  },\n  \"text/x-nfo\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"nfo\"]\n  },\n  \"text/x-opml\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"opml\"]\n  },\n  \"text/x-org\": {\n    \"compressible\": true,\n    \"extensions\": [\"org\"]\n  },\n  \"text/x-pascal\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"p\",\"pas\"]\n  },\n  \"text/x-processing\": {\n    \"compressible\": true,\n    \"extensions\": [\"pde\"]\n  },\n  \"text/x-sass\": {\n    \"extensions\": [\"sass\"]\n  },\n  \"text/x-scss\": {\n    \"extensions\": [\"scss\"]\n  },\n  \"text/x-setext\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"etx\"]\n  },\n  \"text/x-sfv\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sfv\"]\n  },\n  \"text/x-suse-ymp\": {\n    \"compressible\": true,\n    \"extensions\": [\"ymp\"]\n  },\n  \"text/x-uuencode\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"uu\"]\n  },\n  \"text/x-vcalendar\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"vcs\"]\n  },\n  \"text/x-vcard\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"vcf\"]\n  },\n  \"text/xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xml\"]\n  },\n  \"text/xml-external-parsed-entity\": {\n    \"source\": \"iana\"\n  },\n  \"text/yaml\": {\n    \"compressible\": true,\n    \"extensions\": [\"yaml\",\"yml\"]\n  },\n  \"video/1d-interleaved-parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"video/3gpp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"3gp\",\"3gpp\"]\n  },\n  \"video/3gpp-tt\": {\n    \"source\": \"iana\"\n  },\n  \"video/3gpp2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"3g2\"]\n  },\n  \"video/av1\": {\n    \"source\": \"iana\"\n  },\n  \"video/bmpeg\": {\n    \"source\": \"iana\"\n  },\n  \"video/bt656\": {\n    \"source\": \"iana\"\n  },\n  \"video/celb\": {\n    \"source\": \"iana\"\n  },\n  \"video/dv\": {\n    \"source\": \"iana\"\n  },\n  \"video/encaprtp\": {\n    \"source\": \"iana\"\n  },\n  \"video/ffv1\": {\n    \"source\": \"iana\"\n  },\n  \"video/flexfec\": {\n    \"source\": \"iana\"\n  },\n  \"video/h261\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"h261\"]\n  },\n  \"video/h263\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"h263\"]\n  },\n  \"video/h263-1998\": {\n    \"source\": \"iana\"\n  },\n  \"video/h263-2000\": {\n    \"source\": \"iana\"\n  },\n  \"video/h264\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"h264\"]\n  },\n  \"video/h264-rcdo\": {\n    \"source\": \"iana\"\n  },\n  \"video/h264-svc\": {\n    \"source\": \"iana\"\n  },\n  \"video/h265\": {\n    \"source\": \"iana\"\n  },\n  \"video/iso.segment\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"m4s\"]\n  },\n  \"video/jpeg\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jpgv\"]\n  },\n  \"video/jpeg2000\": {\n    \"source\": \"iana\"\n  },\n  \"video/jpm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"jpm\",\"jpgm\"]\n  },\n  \"video/jxsv\": {\n    \"source\": \"iana\"\n  },\n  \"video/mj2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mj2\",\"mjp2\"]\n  },\n  \"video/mp1s\": {\n    \"source\": \"iana\"\n  },\n  \"video/mp2p\": {\n    \"source\": \"iana\"\n  },\n  \"video/mp2t\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ts\"]\n  },\n  \"video/mp4\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"mp4\",\"mp4v\",\"mpg4\"]\n  },\n  \"video/mp4v-es\": {\n    \"source\": \"iana\"\n  },\n  \"video/mpeg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"mpeg\",\"mpg\",\"mpe\",\"m1v\",\"m2v\"]\n  },\n  \"video/mpeg4-generic\": {\n    \"source\": \"iana\"\n  },\n  \"video/mpv\": {\n    \"source\": \"iana\"\n  },\n  \"video/nv\": {\n    \"source\": \"iana\"\n  },\n  \"video/ogg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"ogv\"]\n  },\n  \"video/parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"video/pointer\": {\n    \"source\": \"iana\"\n  },\n  \"video/quicktime\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"qt\",\"mov\"]\n  },\n  \"video/raptorfec\": {\n    \"source\": \"iana\"\n  },\n  \"video/raw\": {\n    \"source\": \"iana\"\n  },\n  \"video/rtp-enc-aescm128\": {\n    \"source\": \"iana\"\n  },\n  \"video/rtploopback\": {\n    \"source\": \"iana\"\n  },\n  \"video/rtx\": {\n    \"source\": \"iana\"\n  },\n  \"video/scip\": {\n    \"source\": \"iana\"\n  },\n  \"video/smpte291\": {\n    \"source\": \"iana\"\n  },\n  \"video/smpte292m\": {\n    \"source\": \"iana\"\n  },\n  \"video/ulpfec\": {\n    \"source\": \"iana\"\n  },\n  \"video/vc1\": {\n    \"source\": \"iana\"\n  },\n  \"video/vc2\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.cctv\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.dece.hd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvh\",\"uvvh\"]\n  },\n  \"video/vnd.dece.mobile\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvm\",\"uvvm\"]\n  },\n  \"video/vnd.dece.mp4\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.dece.pd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvp\",\"uvvp\"]\n  },\n  \"video/vnd.dece.sd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvs\",\"uvvs\"]\n  },\n  \"video/vnd.dece.video\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvv\",\"uvvv\"]\n  },\n  \"video/vnd.directv.mpeg\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.directv.mpeg-tts\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.dlna.mpeg-tts\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.dvb.file\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dvb\"]\n  },\n  \"video/vnd.fvt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fvt\"]\n  },\n  \"video/vnd.hns.video\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.1dparityfec-1010\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.1dparityfec-2005\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.2dparityfec-1010\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.2dparityfec-2005\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.ttsavc\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.ttsmpeg2\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.motorola.video\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.motorola.videop\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.mpegurl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mxu\",\"m4u\"]\n  },\n  \"video/vnd.ms-playready.media.pyv\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pyv\"]\n  },\n  \"video/vnd.nokia.interleaved-multimedia\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.nokia.mp4vr\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.nokia.videovoip\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.objectvideo\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.radgamettools.bink\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.radgamettools.smacker\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.sealed.mpeg1\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.sealed.mpeg4\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.sealed.swf\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.sealedmedia.softseal.mov\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.uvvu.mp4\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvu\",\"uvvu\"]\n  },\n  \"video/vnd.vivo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"viv\"]\n  },\n  \"video/vnd.youtube.yt\": {\n    \"source\": \"iana\"\n  },\n  \"video/vp8\": {\n    \"source\": \"iana\"\n  },\n  \"video/vp9\": {\n    \"source\": \"iana\"\n  },\n  \"video/webm\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"webm\"]\n  },\n  \"video/x-f4v\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"f4v\"]\n  },\n  \"video/x-fli\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"fli\"]\n  },\n  \"video/x-flv\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"flv\"]\n  },\n  \"video/x-m4v\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"m4v\"]\n  },\n  \"video/x-matroska\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"mkv\",\"mk3d\",\"mks\"]\n  },\n  \"video/x-mng\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mng\"]\n  },\n  \"video/x-ms-asf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"asf\",\"asx\"]\n  },\n  \"video/x-ms-vob\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"vob\"]\n  },\n  \"video/x-ms-wm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wm\"]\n  },\n  \"video/x-ms-wmv\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"wmv\"]\n  },\n  \"video/x-ms-wmx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wmx\"]\n  },\n  \"video/x-ms-wvx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wvx\"]\n  },\n  \"video/x-msvideo\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"avi\"]\n  },\n  \"video/x-sgi-movie\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"movie\"]\n  },\n  \"video/x-smv\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"smv\"]\n  },\n  \"x-conference/x-cooltalk\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ice\"]\n  },\n  \"x-shader/x-fragment\": {\n    \"compressible\": true\n  },\n  \"x-shader/x-vertex\": {\n    \"compressible\": true\n  }\n}\n", "/*!\n * mime-db\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * Module exports.\n */\n\nmodule.exports = require('./db.json')\n", "/*!\n * mime-types\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar db = require('mime-db')\nvar extname = require('path').extname\n\n/**\n * Module variables.\n * @private\n */\n\nvar EXTRACT_TYPE_REGEXP = /^\\s*([^;\\s]*)(?:;|\\s|$)/\nvar TEXT_TYPE_REGEXP = /^text\\//i\n\n/**\n * Module exports.\n * @public\n */\n\nexports.charset = charset\nexports.charsets = { lookup: charset }\nexports.contentType = contentType\nexports.extension = extension\nexports.extensions = Object.create(null)\nexports.lookup = lookup\nexports.types = Object.create(null)\n\n// Populate the extensions/types maps\npopulateMaps(exports.extensions, exports.types)\n\n/**\n * Get the default charset for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction charset (type) {\n  if (!type || typeof type !== 'string') {\n    return false\n  }\n\n  // TODO: use media-typer\n  var match = EXTRACT_TYPE_REGEXP.exec(type)\n  var mime = match && db[match[1].toLowerCase()]\n\n  if (mime && mime.charset) {\n    return mime.charset\n  }\n\n  // default text/* to utf-8\n  if (match && TEXT_TYPE_REGEXP.test(match[1])) {\n    return 'UTF-8'\n  }\n\n  return false\n}\n\n/**\n * Create a full Content-Type header given a MIME type or extension.\n *\n * @param {string} str\n * @return {boolean|string}\n */\n\nfunction contentType (str) {\n  // TODO: should this even be in this module?\n  if (!str || typeof str !== 'string') {\n    return false\n  }\n\n  var mime = str.indexOf('/') === -1\n    ? exports.lookup(str)\n    : str\n\n  if (!mime) {\n    return false\n  }\n\n  // TODO: use content-type or other module\n  if (mime.indexOf('charset') === -1) {\n    var charset = exports.charset(mime)\n    if (charset) mime += '; charset=' + charset.toLowerCase()\n  }\n\n  return mime\n}\n\n/**\n * Get the default extension for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction extension (type) {\n  if (!type || typeof type !== 'string') {\n    return false\n  }\n\n  // TODO: use media-typer\n  var match = EXTRACT_TYPE_REGEXP.exec(type)\n\n  // get extensions\n  var exts = match && exports.extensions[match[1].toLowerCase()]\n\n  if (!exts || !exts.length) {\n    return false\n  }\n\n  return exts[0]\n}\n\n/**\n * Lookup the MIME type for a file path/extension.\n *\n * @param {string} path\n * @return {boolean|string}\n */\n\nfunction lookup (path) {\n  if (!path || typeof path !== 'string') {\n    return false\n  }\n\n  // get the extension (\"ext\" or \".ext\" or full path)\n  var extension = extname('x.' + path)\n    .toLowerCase()\n    .substr(1)\n\n  if (!extension) {\n    return false\n  }\n\n  return exports.types[extension] || false\n}\n\n/**\n * Populate the extensions and types maps.\n * @private\n */\n\nfunction populateMaps (extensions, types) {\n  // source preference (least -> most)\n  var preference = ['nginx', 'apache', undefined, 'iana']\n\n  Object.keys(db).forEach(function forEachMimeType (type) {\n    var mime = db[type]\n    var exts = mime.extensions\n\n    if (!exts || !exts.length) {\n      return\n    }\n\n    // mime -> extensions\n    extensions[type] = exts\n\n    // extension -> mime\n    for (var i = 0; i < exts.length; i++) {\n      var extension = exts[i]\n\n      if (types[extension]) {\n        var from = preference.indexOf(db[types[extension]].source)\n        var to = preference.indexOf(mime.source)\n\n        if (types[extension] !== 'application/octet-stream' &&\n          (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) {\n          // skip the remapping\n          continue\n        }\n      }\n\n      // set the extension -> mime\n      types[extension] = type\n    }\n  })\n}\n", "/*!\n * accepts\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar Negotiator = require('negotiator')\nvar mime = require('mime-types')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = Accepts\n\n/**\n * Create a new Accepts object for the given req.\n *\n * @param {object} req\n * @public\n */\n\nfunction Accepts (req) {\n  if (!(this instanceof Accepts)) {\n    return new Accepts(req)\n  }\n\n  this.headers = req.headers\n  this.negotiator = new Negotiator(req)\n}\n\n/**\n * Check if the given `type(s)` is acceptable, returning\n * the best match when true, otherwise `undefined`, in which\n * case you should respond with 406 \"Not Acceptable\".\n *\n * The `type` value may be a single mime type string\n * such as \"application/json\", the extension name\n * such as \"json\" or an array `[\"json\", \"html\", \"text/plain\"]`. When a list\n * or array is given the _best_ match, if any is returned.\n *\n * Examples:\n *\n *     // Accept: text/html\n *     this.types('html');\n *     // => \"html\"\n *\n *     // Accept: text/*, application/json\n *     this.types('html');\n *     // => \"html\"\n *     this.types('text/html');\n *     // => \"text/html\"\n *     this.types('json', 'text');\n *     // => \"json\"\n *     this.types('application/json');\n *     // => \"application/json\"\n *\n *     // Accept: text/*, application/json\n *     this.types('image/png');\n *     this.types('png');\n *     // => undefined\n *\n *     // Accept: text/*;q=.5, application/json\n *     this.types(['html', 'json']);\n *     this.types('html', 'json');\n *     // => \"json\"\n *\n * @param {String|Array} types...\n * @return {String|Array|Boolean}\n * @public\n */\n\nAccepts.prototype.type =\nAccepts.prototype.types = function (types_) {\n  var types = types_\n\n  // support flattened arguments\n  if (types && !Array.isArray(types)) {\n    types = new Array(arguments.length)\n    for (var i = 0; i < types.length; i++) {\n      types[i] = arguments[i]\n    }\n  }\n\n  // no types, return all requested types\n  if (!types || types.length === 0) {\n    return this.negotiator.mediaTypes()\n  }\n\n  // no accept header, return first given type\n  if (!this.headers.accept) {\n    return types[0]\n  }\n\n  var mimes = types.map(extToMime)\n  var accepts = this.negotiator.mediaTypes(mimes.filter(validMime))\n  var first = accepts[0]\n\n  return first\n    ? types[mimes.indexOf(first)]\n    : false\n}\n\n/**\n * Return accepted encodings or best fit based on `encodings`.\n *\n * Given `Accept-Encoding: gzip, deflate`\n * an array sorted by quality is returned:\n *\n *     ['gzip', 'deflate']\n *\n * @param {String|Array} encodings...\n * @return {String|Array}\n * @public\n */\n\nAccepts.prototype.encoding =\nAccepts.prototype.encodings = function (encodings_) {\n  var encodings = encodings_\n\n  // support flattened arguments\n  if (encodings && !Array.isArray(encodings)) {\n    encodings = new Array(arguments.length)\n    for (var i = 0; i < encodings.length; i++) {\n      encodings[i] = arguments[i]\n    }\n  }\n\n  // no encodings, return all requested encodings\n  if (!encodings || encodings.length === 0) {\n    return this.negotiator.encodings()\n  }\n\n  return this.negotiator.encodings(encodings)[0] || false\n}\n\n/**\n * Return accepted charsets or best fit based on `charsets`.\n *\n * Given `Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5`\n * an array sorted by quality is returned:\n *\n *     ['utf-8', 'utf-7', 'iso-8859-1']\n *\n * @param {String|Array} charsets...\n * @return {String|Array}\n * @public\n */\n\nAccepts.prototype.charset =\nAccepts.prototype.charsets = function (charsets_) {\n  var charsets = charsets_\n\n  // support flattened arguments\n  if (charsets && !Array.isArray(charsets)) {\n    charsets = new Array(arguments.length)\n    for (var i = 0; i < charsets.length; i++) {\n      charsets[i] = arguments[i]\n    }\n  }\n\n  // no charsets, return all requested charsets\n  if (!charsets || charsets.length === 0) {\n    return this.negotiator.charsets()\n  }\n\n  return this.negotiator.charsets(charsets)[0] || false\n}\n\n/**\n * Return accepted languages or best fit based on `langs`.\n *\n * Given `Accept-Language: en;q=0.8, es, pt`\n * an array sorted by quality is returned:\n *\n *     ['es', 'pt', 'en']\n *\n * @param {String|Array} langs...\n * @return {Array|String}\n * @public\n */\n\nAccepts.prototype.lang =\nAccepts.prototype.langs =\nAccepts.prototype.language =\nAccepts.prototype.languages = function (languages_) {\n  var languages = languages_\n\n  // support flattened arguments\n  if (languages && !Array.isArray(languages)) {\n    languages = new Array(arguments.length)\n    for (var i = 0; i < languages.length; i++) {\n      languages[i] = arguments[i]\n    }\n  }\n\n  // no languages, return all requested languages\n  if (!languages || languages.length === 0) {\n    return this.negotiator.languages()\n  }\n\n  return this.negotiator.languages(languages)[0] || false\n}\n\n/**\n * Convert extnames to mime.\n *\n * @param {String} type\n * @return {String}\n * @private\n */\n\nfunction extToMime (type) {\n  return type.indexOf('/') === -1\n    ? mime.lookup(type)\n    : type\n}\n\n/**\n * Check if mime is valid.\n *\n * @param {String} type\n * @return {String}\n * @private\n */\n\nfunction validMime (type) {\n  return typeof type === 'string'\n}\n", "/*!\n * content-type\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * RegExp to match *( \";\" parameter ) in RFC 7231 sec 3.1.1.1\n *\n * parameter     = token \"=\" ( token / quoted-string )\n * token         = 1*tchar\n * tchar         = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" / \"*\"\n *               / \"+\" / \"-\" / \".\" / \"^\" / \"_\" / \"`\" / \"|\" / \"~\"\n *               / DIGIT / ALPHA\n *               ; any VCHAR, except delimiters\n * quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE\n * qdtext        = HTAB / SP / %x21 / %x23-5B / %x5D-7E / obs-text\n * obs-text      = %x80-FF\n * quoted-pair   = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n */\nvar PARAM_REGEXP = /; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *(\"(?:[\\u000b\\u0020\\u0021\\u0023-\\u005b\\u005d-\\u007e\\u0080-\\u00ff]|\\\\[\\u000b\\u0020-\\u00ff])*\"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g // eslint-disable-line no-control-regex\nvar TEXT_REGEXP = /^[\\u000b\\u0020-\\u007e\\u0080-\\u00ff]+$/ // eslint-disable-line no-control-regex\nvar TOKEN_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/\n\n/**\n * RegExp to match quoted-pair in RFC 7230 sec 3.2.6\n *\n * quoted-pair = \"\\\" ( HTAB / SP / VCHAR / obs-text )\n * obs-text    = %x80-FF\n */\nvar QESC_REGEXP = /\\\\([\\u000b\\u0020-\\u00ff])/g // eslint-disable-line no-control-regex\n\n/**\n * RegExp to match chars that must be quoted-pair in RFC 7230 sec 3.2.6\n */\nvar QUOTE_REGEXP = /([\\\\\"])/g\n\n/**\n * RegExp to match type in RFC 7231 sec 3.1.1.1\n *\n * media-type = type \"/\" subtype\n * type       = token\n * subtype    = token\n */\nvar TYPE_REGEXP = /^[!#$%&'*+.^_`|~0-9A-Za-z-]+\\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/\n\n/**\n * Module exports.\n * @public\n */\n\nexports.format = format\nexports.parse = parse\n\n/**\n * Format object to media type.\n *\n * @param {object} obj\n * @return {string}\n * @public\n */\n\nfunction format (obj) {\n  if (!obj || typeof obj !== 'object') {\n    throw new TypeError('argument obj is required')\n  }\n\n  var parameters = obj.parameters\n  var type = obj.type\n\n  if (!type || !TYPE_REGEXP.test(type)) {\n    throw new TypeError('invalid type')\n  }\n\n  var string = type\n\n  // append parameters\n  if (parameters && typeof parameters === 'object') {\n    var param\n    var params = Object.keys(parameters).sort()\n\n    for (var i = 0; i < params.length; i++) {\n      param = params[i]\n\n      if (!TOKEN_REGEXP.test(param)) {\n        throw new TypeError('invalid parameter name')\n      }\n\n      string += '; ' + param + '=' + qstring(parameters[param])\n    }\n  }\n\n  return string\n}\n\n/**\n * Parse media type to object.\n *\n * @param {string|object} string\n * @return {Object}\n * @public\n */\n\nfunction parse (string) {\n  if (!string) {\n    throw new TypeError('argument string is required')\n  }\n\n  // support req/res-like objects as argument\n  var header = typeof string === 'object'\n    ? getcontenttype(string)\n    : string\n\n  if (typeof header !== 'string') {\n    throw new TypeError('argument string is required to be a string')\n  }\n\n  var index = header.indexOf(';')\n  var type = index !== -1\n    ? header.slice(0, index).trim()\n    : header.trim()\n\n  if (!TYPE_REGEXP.test(type)) {\n    throw new TypeError('invalid media type')\n  }\n\n  var obj = new ContentType(type.toLowerCase())\n\n  // parse parameters\n  if (index !== -1) {\n    var key\n    var match\n    var value\n\n    PARAM_REGEXP.lastIndex = index\n\n    while ((match = PARAM_REGEXP.exec(header))) {\n      if (match.index !== index) {\n        throw new TypeError('invalid parameter format')\n      }\n\n      index += match[0].length\n      key = match[1].toLowerCase()\n      value = match[2]\n\n      if (value.charCodeAt(0) === 0x22 /* \" */) {\n        // remove quotes\n        value = value.slice(1, -1)\n\n        // remove escapes\n        if (value.indexOf('\\\\') !== -1) {\n          value = value.replace(QESC_REGEXP, '$1')\n        }\n      }\n\n      obj.parameters[key] = value\n    }\n\n    if (index !== header.length) {\n      throw new TypeError('invalid parameter format')\n    }\n  }\n\n  return obj\n}\n\n/**\n * Get content-type from req/res objects.\n *\n * @param {object}\n * @return {Object}\n * @private\n */\n\nfunction getcontenttype (obj) {\n  var header\n\n  if (typeof obj.getHeader === 'function') {\n    // res-like\n    header = obj.getHeader('content-type')\n  } else if (typeof obj.headers === 'object') {\n    // req-like\n    header = obj.headers && obj.headers['content-type']\n  }\n\n  if (typeof header !== 'string') {\n    throw new TypeError('content-type header is missing from object')\n  }\n\n  return header\n}\n\n/**\n * Quote a string if necessary.\n *\n * @param {string} val\n * @return {string}\n * @private\n */\n\nfunction qstring (val) {\n  var str = String(val)\n\n  // no need to quote tokens\n  if (TOKEN_REGEXP.test(str)) {\n    return str\n  }\n\n  if (str.length > 0 && !TEXT_REGEXP.test(str)) {\n    throw new TypeError('invalid parameter value')\n  }\n\n  return '\"' + str.replace(QUOTE_REGEXP, '\\\\$1') + '\"'\n}\n\n/**\n * Class to represent a content type.\n * @private\n */\nfunction ContentType (type) {\n  this.parameters = Object.create(null)\n  this.type = type\n}\n", "/*!\n * parseurl\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2014-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar url = require('url')\nvar parse = url.parse\nvar Url = url.Url\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = parseurl\nmodule.exports.original = originalurl\n\n/**\n * Parse the `req` url with memoization.\n *\n * @param {ServerRequest} req\n * @return {Object}\n * @public\n */\n\nfunction parseurl (req) {\n  var url = req.url\n\n  if (url === undefined) {\n    // URL is undefined\n    return undefined\n  }\n\n  var parsed = req._parsedUrl\n\n  if (fresh(url, parsed)) {\n    // Return cached URL parse\n    return parsed\n  }\n\n  // Parse the URL\n  parsed = fastparse(url)\n  parsed._raw = url\n\n  return (req._parsedUrl = parsed)\n};\n\n/**\n * Parse the `req` original url with fallback and memoization.\n *\n * @param {ServerRequest} req\n * @return {Object}\n * @public\n */\n\nfunction originalurl (req) {\n  var url = req.originalUrl\n\n  if (typeof url !== 'string') {\n    // Fallback\n    return parseurl(req)\n  }\n\n  var parsed = req._parsedOriginalUrl\n\n  if (fresh(url, parsed)) {\n    // Return cached URL parse\n    return parsed\n  }\n\n  // Parse the URL\n  parsed = fastparse(url)\n  parsed._raw = url\n\n  return (req._parsedOriginalUrl = parsed)\n};\n\n/**\n * Parse the `str` url with fast-path short-cut.\n *\n * @param {string} str\n * @return {Object}\n * @private\n */\n\nfunction fastparse (str) {\n  if (typeof str !== 'string' || str.charCodeAt(0) !== 0x2f /* / */) {\n    return parse(str)\n  }\n\n  var pathname = str\n  var query = null\n  var search = null\n\n  // This takes the regexp from https://github.com/joyent/node/pull/7878\n  // Which is /^(\\/[^?#\\s]*)(\\?[^#\\s]*)?$/\n  // And unrolls it into a for loop\n  for (var i = 1; i < str.length; i++) {\n    switch (str.charCodeAt(i)) {\n      case 0x3f: /* ?  */\n        if (search === null) {\n          pathname = str.substring(0, i)\n          query = str.substring(i + 1)\n          search = str.substring(i)\n        }\n        break\n      case 0x09: /* \\t */\n      case 0x0a: /* \\n */\n      case 0x0c: /* \\f */\n      case 0x0d: /* \\r */\n      case 0x20: /*    */\n      case 0x23: /* #  */\n      case 0xa0:\n      case 0xfeff:\n        return parse(str)\n    }\n  }\n\n  var url = Url !== undefined\n    ? new Url()\n    : {}\n\n  url.path = str\n  url.href = str\n  url.pathname = pathname\n\n  if (search !== null) {\n    url.query = query\n    url.search = search\n  }\n\n  return url\n}\n\n/**\n * Determine if parsed is still fresh for url.\n *\n * @param {string} url\n * @param {object} parsedUrl\n * @return {boolean}\n * @private\n */\n\nfunction fresh (url, parsedUrl) {\n  return typeof parsedUrl === 'object' &&\n    parsedUrl !== null &&\n    (Url === undefined || parsedUrl instanceof Url) &&\n    parsedUrl._raw === url\n}\n", "const URLSearchParams = require('url').URLSearchParams\n\nmodule.exports = {\n  stringify: (obj) => {\n    const searchParams = new URLSearchParams()\n    const addKey = (k, v, params) => {\n      const val = typeof v === 'string' || typeof v === 'number' ? v : ''\n      params.append(k, val)\n    }\n\n    for (const [key, value] of Object.entries(obj)) {\n      if (Array.isArray(value)) {\n        const lgth = value.length\n        for (let i = 0; i < lgth; i++) {\n          addKey(key, value[i], searchParams)\n        }\n      } else {\n        addKey(key, value, searchParams)\n      }\n    }\n    return searchParams.toString()\n  },\n\n  parse: (str) => {\n    const searchParams = new URLSearchParams(str)\n    const obj = {}\n    for (const key of searchParams.keys()) {\n      const values = searchParams.getAll(key)\n      obj[key] = values.length <= 1 ? values[0] : values\n    }\n    return obj\n  }\n}\n", "{\n  \"application/1d-interleaved-parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"application/3gpdash-qoe-report+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/3gpp-ims+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/3gpphal+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/3gpphalforms+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/a2l\": {\n    \"source\": \"iana\"\n  },\n  \"application/ace+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/ace+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ace-groupcomm+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/ace-trl+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/activemessage\": {\n    \"source\": \"iana\"\n  },\n  \"application/activity+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/aif+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/aif+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-cdni+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-cdnifilter+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-costmap+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-costmapfilter+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-directory+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-endpointcost+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-endpointcostparams+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-endpointprop+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-endpointpropparams+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-error+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-networkmap+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-networkmapfilter+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-propmap+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-propmapparams+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-tips+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-tipsparams+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-updatestreamcontrol+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-updatestreamparams+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/aml\": {\n    \"source\": \"iana\"\n  },\n  \"application/andrew-inset\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ez\"]\n  },\n  \"application/appinstaller\": {\n    \"compressible\": false,\n    \"extensions\": [\"appinstaller\"]\n  },\n  \"application/applefile\": {\n    \"source\": \"iana\"\n  },\n  \"application/applixware\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"aw\"]\n  },\n  \"application/appx\": {\n    \"compressible\": false,\n    \"extensions\": [\"appx\"]\n  },\n  \"application/appxbundle\": {\n    \"compressible\": false,\n    \"extensions\": [\"appxbundle\"]\n  },\n  \"application/at+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/atf\": {\n    \"source\": \"iana\"\n  },\n  \"application/atfx\": {\n    \"source\": \"iana\"\n  },\n  \"application/atom+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"atom\"]\n  },\n  \"application/atomcat+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"atomcat\"]\n  },\n  \"application/atomdeleted+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"atomdeleted\"]\n  },\n  \"application/atomicmail\": {\n    \"source\": \"iana\"\n  },\n  \"application/atomsvc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"atomsvc\"]\n  },\n  \"application/atsc-dwd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dwd\"]\n  },\n  \"application/atsc-dynamic-event-message\": {\n    \"source\": \"iana\"\n  },\n  \"application/atsc-held+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"held\"]\n  },\n  \"application/atsc-rdt+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/atsc-rsat+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rsat\"]\n  },\n  \"application/atxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/auth-policy+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/automationml-aml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"aml\"]\n  },\n  \"application/automationml-amlx+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"amlx\"]\n  },\n  \"application/bacnet-xdd+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/batch-smtp\": {\n    \"source\": \"iana\"\n  },\n  \"application/bdoc\": {\n    \"compressible\": false,\n    \"extensions\": [\"bdoc\"]\n  },\n  \"application/beep+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/bufr\": {\n    \"source\": \"iana\"\n  },\n  \"application/c2pa\": {\n    \"source\": \"iana\"\n  },\n  \"application/calendar+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/calendar+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xcs\"]\n  },\n  \"application/call-completion\": {\n    \"source\": \"iana\"\n  },\n  \"application/cals-1840\": {\n    \"source\": \"iana\"\n  },\n  \"application/captive+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/cbor-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/cccex\": {\n    \"source\": \"iana\"\n  },\n  \"application/ccmp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ccxml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ccxml\"]\n  },\n  \"application/cda+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/cdfx+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"cdfx\"]\n  },\n  \"application/cdmi-capability\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdmia\"]\n  },\n  \"application/cdmi-container\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdmic\"]\n  },\n  \"application/cdmi-domain\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdmid\"]\n  },\n  \"application/cdmi-object\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdmio\"]\n  },\n  \"application/cdmi-queue\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdmiq\"]\n  },\n  \"application/cdni\": {\n    \"source\": \"iana\"\n  },\n  \"application/ce+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/cea\": {\n    \"source\": \"iana\"\n  },\n  \"application/cea-2018+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cellml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cfw\": {\n    \"source\": \"iana\"\n  },\n  \"application/cid-edhoc+cbor-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/city+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/city+json-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/clr\": {\n    \"source\": \"iana\"\n  },\n  \"application/clue+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/clue_info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cms\": {\n    \"source\": \"iana\"\n  },\n  \"application/cnrp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/coap-eap\": {\n    \"source\": \"iana\"\n  },\n  \"application/coap-group+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/coap-payload\": {\n    \"source\": \"iana\"\n  },\n  \"application/commonground\": {\n    \"source\": \"iana\"\n  },\n  \"application/concise-problem-details+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/conference-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cose\": {\n    \"source\": \"iana\"\n  },\n  \"application/cose-key\": {\n    \"source\": \"iana\"\n  },\n  \"application/cose-key-set\": {\n    \"source\": \"iana\"\n  },\n  \"application/cose-x509\": {\n    \"source\": \"iana\"\n  },\n  \"application/cpl+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"cpl\"]\n  },\n  \"application/csrattrs\": {\n    \"source\": \"iana\"\n  },\n  \"application/csta+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cstadata+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/csvm+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cu-seeme\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cu\"]\n  },\n  \"application/cwl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cwl\"]\n  },\n  \"application/cwl+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cwl+yaml\": {\n    \"source\": \"iana\"\n  },\n  \"application/cwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/cybercash\": {\n    \"source\": \"iana\"\n  },\n  \"application/dart\": {\n    \"compressible\": true\n  },\n  \"application/dash+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mpd\"]\n  },\n  \"application/dash-patch+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mpp\"]\n  },\n  \"application/dashdelta\": {\n    \"source\": \"iana\"\n  },\n  \"application/davmount+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"davmount\"]\n  },\n  \"application/dca-rft\": {\n    \"source\": \"iana\"\n  },\n  \"application/dcd\": {\n    \"source\": \"iana\"\n  },\n  \"application/dec-dx\": {\n    \"source\": \"iana\"\n  },\n  \"application/dialog-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/dicom\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dcm\"]\n  },\n  \"application/dicom+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/dicom+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/dii\": {\n    \"source\": \"iana\"\n  },\n  \"application/dit\": {\n    \"source\": \"iana\"\n  },\n  \"application/dns\": {\n    \"source\": \"iana\"\n  },\n  \"application/dns+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/dns-message\": {\n    \"source\": \"iana\"\n  },\n  \"application/docbook+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"dbk\"]\n  },\n  \"application/dots+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/dpop+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/dskpp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/dssc+der\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dssc\"]\n  },\n  \"application/dssc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xdssc\"]\n  },\n  \"application/dvcs\": {\n    \"source\": \"iana\"\n  },\n  \"application/eat+cwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/eat+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/eat-bun+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/eat-bun+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/eat-ucs+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/eat-ucs+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ecmascript\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"ecma\"]\n  },\n  \"application/edhoc+cbor-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/edi-consent\": {\n    \"source\": \"iana\"\n  },\n  \"application/edi-x12\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/edifact\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/efi\": {\n    \"source\": \"iana\"\n  },\n  \"application/elm+json\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/elm+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.cap+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.comment+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.control+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.deviceinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.ecall.msd\": {\n    \"source\": \"iana\"\n  },\n  \"application/emergencycalldata.legacyesn+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.providerinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.serviceinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.subscriberinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.veds+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emma+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"emma\"]\n  },\n  \"application/emotionml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"emotionml\"]\n  },\n  \"application/encaprtp\": {\n    \"source\": \"iana\"\n  },\n  \"application/entity-statement+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/epp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/epub+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"epub\"]\n  },\n  \"application/eshop\": {\n    \"source\": \"iana\"\n  },\n  \"application/exi\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"exi\"]\n  },\n  \"application/expect-ct-report+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/express\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"exp\"]\n  },\n  \"application/fastinfoset\": {\n    \"source\": \"iana\"\n  },\n  \"application/fastsoap\": {\n    \"source\": \"iana\"\n  },\n  \"application/fdf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fdf\"]\n  },\n  \"application/fdt+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"fdt\"]\n  },\n  \"application/fhir+json\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/fhir+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/fido.trusted-apps+json\": {\n    \"compressible\": true\n  },\n  \"application/fits\": {\n    \"source\": \"iana\"\n  },\n  \"application/flexfec\": {\n    \"source\": \"iana\"\n  },\n  \"application/font-sfnt\": {\n    \"source\": \"iana\"\n  },\n  \"application/font-tdpfr\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pfr\"]\n  },\n  \"application/font-woff\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/framework-attributes+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/geo+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"geojson\"]\n  },\n  \"application/geo+json-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/geopackage+sqlite3\": {\n    \"source\": \"iana\"\n  },\n  \"application/geopose+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/geoxacml+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/geoxacml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/gltf-buffer\": {\n    \"source\": \"iana\"\n  },\n  \"application/gml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"gml\"]\n  },\n  \"application/gnap-binding-jws\": {\n    \"source\": \"iana\"\n  },\n  \"application/gnap-binding-jwsd\": {\n    \"source\": \"iana\"\n  },\n  \"application/gnap-binding-rotation-jws\": {\n    \"source\": \"iana\"\n  },\n  \"application/gnap-binding-rotation-jwsd\": {\n    \"source\": \"iana\"\n  },\n  \"application/gpx+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"gpx\"]\n  },\n  \"application/grib\": {\n    \"source\": \"iana\"\n  },\n  \"application/gxf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gxf\"]\n  },\n  \"application/gzip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"gz\"]\n  },\n  \"application/h224\": {\n    \"source\": \"iana\"\n  },\n  \"application/held+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/hjson\": {\n    \"extensions\": [\"hjson\"]\n  },\n  \"application/hl7v2+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/http\": {\n    \"source\": \"iana\"\n  },\n  \"application/hyperstudio\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"stk\"]\n  },\n  \"application/ibe-key-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ibe-pkg-reply+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ibe-pp-data\": {\n    \"source\": \"iana\"\n  },\n  \"application/iges\": {\n    \"source\": \"iana\"\n  },\n  \"application/im-iscomposing+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/index\": {\n    \"source\": \"iana\"\n  },\n  \"application/index.cmd\": {\n    \"source\": \"iana\"\n  },\n  \"application/index.obj\": {\n    \"source\": \"iana\"\n  },\n  \"application/index.response\": {\n    \"source\": \"iana\"\n  },\n  \"application/index.vnd\": {\n    \"source\": \"iana\"\n  },\n  \"application/inkml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ink\",\"inkml\"]\n  },\n  \"application/iotp\": {\n    \"source\": \"iana\"\n  },\n  \"application/ipfix\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ipfix\"]\n  },\n  \"application/ipp\": {\n    \"source\": \"iana\"\n  },\n  \"application/isup\": {\n    \"source\": \"iana\"\n  },\n  \"application/its+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"its\"]\n  },\n  \"application/java-archive\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"jar\",\"war\",\"ear\"]\n  },\n  \"application/java-serialized-object\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"ser\"]\n  },\n  \"application/java-vm\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"class\"]\n  },\n  \"application/javascript\": {\n    \"source\": \"apache\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"js\"]\n  },\n  \"application/jf2feed+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jose\": {\n    \"source\": \"iana\"\n  },\n  \"application/jose+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jrd+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jscalendar+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jscontact+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/json\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"json\",\"map\"]\n  },\n  \"application/json-patch+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/json-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/json5\": {\n    \"extensions\": [\"json5\"]\n  },\n  \"application/jsonml+json\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"jsonml\"]\n  },\n  \"application/jsonpath\": {\n    \"source\": \"iana\"\n  },\n  \"application/jwk+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jwk-set+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jwk-set+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/kpml-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/kpml-response+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ld+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"jsonld\"]\n  },\n  \"application/lgr+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"lgr\"]\n  },\n  \"application/link-format\": {\n    \"source\": \"iana\"\n  },\n  \"application/linkset\": {\n    \"source\": \"iana\"\n  },\n  \"application/linkset+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/load-control+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/logout+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/lost+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"lostxml\"]\n  },\n  \"application/lostsync+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/lpf+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/lxf\": {\n    \"source\": \"iana\"\n  },\n  \"application/mac-binhex40\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hqx\"]\n  },\n  \"application/mac-compactpro\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cpt\"]\n  },\n  \"application/macwriteii\": {\n    \"source\": \"iana\"\n  },\n  \"application/mads+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mads\"]\n  },\n  \"application/manifest+json\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"webmanifest\"]\n  },\n  \"application/marc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mrc\"]\n  },\n  \"application/marcxml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mrcx\"]\n  },\n  \"application/mathematica\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ma\",\"nb\",\"mb\"]\n  },\n  \"application/mathml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mathml\"]\n  },\n  \"application/mathml-content+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mathml-presentation+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-associated-procedure-description+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-deregister+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-envelope+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-msk+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-msk-response+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-protection-description+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-reception-report+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-register+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-register-response+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-schedule+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-user-service-description+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbox\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mbox\"]\n  },\n  \"application/media-policy-dataset+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mpf\"]\n  },\n  \"application/media_control+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mediaservercontrol+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mscml\"]\n  },\n  \"application/merge-patch+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/metalink+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"metalink\"]\n  },\n  \"application/metalink4+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"meta4\"]\n  },\n  \"application/mets+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mets\"]\n  },\n  \"application/mf4\": {\n    \"source\": \"iana\"\n  },\n  \"application/mikey\": {\n    \"source\": \"iana\"\n  },\n  \"application/mipc\": {\n    \"source\": \"iana\"\n  },\n  \"application/missing-blocks+cbor-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/mmt-aei+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"maei\"]\n  },\n  \"application/mmt-usd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"musd\"]\n  },\n  \"application/mods+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mods\"]\n  },\n  \"application/moss-keys\": {\n    \"source\": \"iana\"\n  },\n  \"application/moss-signature\": {\n    \"source\": \"iana\"\n  },\n  \"application/mosskey-data\": {\n    \"source\": \"iana\"\n  },\n  \"application/mosskey-request\": {\n    \"source\": \"iana\"\n  },\n  \"application/mp21\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"m21\",\"mp21\"]\n  },\n  \"application/mp4\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mp4\",\"mpg4\",\"mp4s\",\"m4p\"]\n  },\n  \"application/mpeg4-generic\": {\n    \"source\": \"iana\"\n  },\n  \"application/mpeg4-iod\": {\n    \"source\": \"iana\"\n  },\n  \"application/mpeg4-iod-xmt\": {\n    \"source\": \"iana\"\n  },\n  \"application/mrb-consumer+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mrb-publish+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/msc-ivr+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/msc-mixer+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/msix\": {\n    \"compressible\": false,\n    \"extensions\": [\"msix\"]\n  },\n  \"application/msixbundle\": {\n    \"compressible\": false,\n    \"extensions\": [\"msixbundle\"]\n  },\n  \"application/msword\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"doc\",\"dot\"]\n  },\n  \"application/mud+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/multipart-core\": {\n    \"source\": \"iana\"\n  },\n  \"application/mxf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mxf\"]\n  },\n  \"application/n-quads\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nq\"]\n  },\n  \"application/n-triples\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nt\"]\n  },\n  \"application/nasdata\": {\n    \"source\": \"iana\"\n  },\n  \"application/news-checkgroups\": {\n    \"source\": \"iana\",\n    \"charset\": \"US-ASCII\"\n  },\n  \"application/news-groupinfo\": {\n    \"source\": \"iana\",\n    \"charset\": \"US-ASCII\"\n  },\n  \"application/news-transmission\": {\n    \"source\": \"iana\"\n  },\n  \"application/nlsml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/node\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cjs\"]\n  },\n  \"application/nss\": {\n    \"source\": \"iana\"\n  },\n  \"application/oauth-authz-req+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/oblivious-dns-message\": {\n    \"source\": \"iana\"\n  },\n  \"application/ocsp-request\": {\n    \"source\": \"iana\"\n  },\n  \"application/ocsp-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/octet-stream\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"bin\",\"dms\",\"lrf\",\"mar\",\"so\",\"dist\",\"distz\",\"pkg\",\"bpk\",\"dump\",\"elc\",\"deploy\",\"exe\",\"dll\",\"deb\",\"dmg\",\"iso\",\"img\",\"msi\",\"msp\",\"msm\",\"buffer\"]\n  },\n  \"application/oda\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oda\"]\n  },\n  \"application/odm+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/odx\": {\n    \"source\": \"iana\"\n  },\n  \"application/oebps-package+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"opf\"]\n  },\n  \"application/ogg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"ogx\"]\n  },\n  \"application/ohttp-keys\": {\n    \"source\": \"iana\"\n  },\n  \"application/omdoc+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"omdoc\"]\n  },\n  \"application/onenote\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"onetoc\",\"onetoc2\",\"onetmp\",\"onepkg\",\"one\",\"onea\"]\n  },\n  \"application/opc-nodeset+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/oscore\": {\n    \"source\": \"iana\"\n  },\n  \"application/oxps\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oxps\"]\n  },\n  \"application/p21\": {\n    \"source\": \"iana\"\n  },\n  \"application/p21+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/p2p-overlay+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"relo\"]\n  },\n  \"application/parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"application/passport\": {\n    \"source\": \"iana\"\n  },\n  \"application/patch-ops-error+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xer\"]\n  },\n  \"application/pdf\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"pdf\"]\n  },\n  \"application/pdx\": {\n    \"source\": \"iana\"\n  },\n  \"application/pem-certificate-chain\": {\n    \"source\": \"iana\"\n  },\n  \"application/pgp-encrypted\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"pgp\"]\n  },\n  \"application/pgp-keys\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"asc\"]\n  },\n  \"application/pgp-signature\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sig\",\"asc\"]\n  },\n  \"application/pics-rules\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"prf\"]\n  },\n  \"application/pidf+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/pidf-diff+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/pkcs10\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"p10\"]\n  },\n  \"application/pkcs12\": {\n    \"source\": \"iana\"\n  },\n  \"application/pkcs7-mime\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"p7m\",\"p7c\"]\n  },\n  \"application/pkcs7-signature\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"p7s\"]\n  },\n  \"application/pkcs8\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"p8\"]\n  },\n  \"application/pkcs8-encrypted\": {\n    \"source\": \"iana\"\n  },\n  \"application/pkix-attr-cert\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ac\"]\n  },\n  \"application/pkix-cert\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cer\"]\n  },\n  \"application/pkix-crl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"crl\"]\n  },\n  \"application/pkix-pkipath\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pkipath\"]\n  },\n  \"application/pkixcmp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pki\"]\n  },\n  \"application/pls+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"pls\"]\n  },\n  \"application/poc-settings+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/postscript\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ai\",\"eps\",\"ps\"]\n  },\n  \"application/ppsp-tracker+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/private-token-issuer-directory\": {\n    \"source\": \"iana\"\n  },\n  \"application/private-token-request\": {\n    \"source\": \"iana\"\n  },\n  \"application/private-token-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/problem+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/problem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/provenance+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"provx\"]\n  },\n  \"application/provided-claims+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.alvestrand.titrax-sheet\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.cww\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cww\"]\n  },\n  \"application/prs.cyn\": {\n    \"source\": \"iana\",\n    \"charset\": \"7-BIT\"\n  },\n  \"application/prs.hpub+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/prs.implied-document+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/prs.implied-executable\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.implied-object+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/prs.implied-object+json-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.implied-object+yaml\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.implied-structure\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.mayfile\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.nprend\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.plucker\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.rdf-xml-crypt\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.vcfbzip2\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.xsf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xsf\"]\n  },\n  \"application/pskc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"pskcxml\"]\n  },\n  \"application/pvd+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/qsig\": {\n    \"source\": \"iana\"\n  },\n  \"application/raml+yaml\": {\n    \"compressible\": true,\n    \"extensions\": [\"raml\"]\n  },\n  \"application/raptorfec\": {\n    \"source\": \"iana\"\n  },\n  \"application/rdap+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/rdf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rdf\",\"owl\"]\n  },\n  \"application/reginfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rif\"]\n  },\n  \"application/relax-ng-compact-syntax\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rnc\"]\n  },\n  \"application/remote-printing\": {\n    \"source\": \"apache\"\n  },\n  \"application/reputon+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/resolve-response+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/resource-lists+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rl\"]\n  },\n  \"application/resource-lists-diff+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rld\"]\n  },\n  \"application/rfc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/riscos\": {\n    \"source\": \"iana\"\n  },\n  \"application/rlmi+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/rls-services+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rs\"]\n  },\n  \"application/route-apd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rapd\"]\n  },\n  \"application/route-s-tsid+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"sls\"]\n  },\n  \"application/route-usd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rusd\"]\n  },\n  \"application/rpki-checklist\": {\n    \"source\": \"iana\"\n  },\n  \"application/rpki-ghostbusters\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gbr\"]\n  },\n  \"application/rpki-manifest\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mft\"]\n  },\n  \"application/rpki-publication\": {\n    \"source\": \"iana\"\n  },\n  \"application/rpki-roa\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"roa\"]\n  },\n  \"application/rpki-signed-tal\": {\n    \"source\": \"iana\"\n  },\n  \"application/rpki-updown\": {\n    \"source\": \"iana\"\n  },\n  \"application/rsd+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"rsd\"]\n  },\n  \"application/rss+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"rss\"]\n  },\n  \"application/rtf\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rtf\"]\n  },\n  \"application/rtploopback\": {\n    \"source\": \"iana\"\n  },\n  \"application/rtx\": {\n    \"source\": \"iana\"\n  },\n  \"application/samlassertion+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/samlmetadata+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sarif+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sarif-external-properties+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sbe\": {\n    \"source\": \"iana\"\n  },\n  \"application/sbml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"sbml\"]\n  },\n  \"application/scaip+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/scim+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/scvp-cv-request\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"scq\"]\n  },\n  \"application/scvp-cv-response\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"scs\"]\n  },\n  \"application/scvp-vp-request\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"spq\"]\n  },\n  \"application/scvp-vp-response\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"spp\"]\n  },\n  \"application/sdp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sdp\"]\n  },\n  \"application/secevent+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/senml+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/senml+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/senml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"senmlx\"]\n  },\n  \"application/senml-etch+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/senml-etch+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/senml-exi\": {\n    \"source\": \"iana\"\n  },\n  \"application/sensml+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/sensml+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sensml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"sensmlx\"]\n  },\n  \"application/sensml-exi\": {\n    \"source\": \"iana\"\n  },\n  \"application/sep+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sep-exi\": {\n    \"source\": \"iana\"\n  },\n  \"application/session-info\": {\n    \"source\": \"iana\"\n  },\n  \"application/set-payment\": {\n    \"source\": \"iana\"\n  },\n  \"application/set-payment-initiation\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"setpay\"]\n  },\n  \"application/set-registration\": {\n    \"source\": \"iana\"\n  },\n  \"application/set-registration-initiation\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"setreg\"]\n  },\n  \"application/sgml\": {\n    \"source\": \"iana\"\n  },\n  \"application/sgml-open-catalog\": {\n    \"source\": \"iana\"\n  },\n  \"application/shf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"shf\"]\n  },\n  \"application/sieve\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"siv\",\"sieve\"]\n  },\n  \"application/simple-filter+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/simple-message-summary\": {\n    \"source\": \"iana\"\n  },\n  \"application/simplesymbolcontainer\": {\n    \"source\": \"iana\"\n  },\n  \"application/sipc\": {\n    \"source\": \"iana\"\n  },\n  \"application/slate\": {\n    \"source\": \"iana\"\n  },\n  \"application/smil\": {\n    \"source\": \"apache\"\n  },\n  \"application/smil+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"smi\",\"smil\"]\n  },\n  \"application/smpte336m\": {\n    \"source\": \"iana\"\n  },\n  \"application/soap+fastinfoset\": {\n    \"source\": \"iana\"\n  },\n  \"application/soap+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sparql-query\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rq\"]\n  },\n  \"application/sparql-results+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"srx\"]\n  },\n  \"application/spdx+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/spirits-event+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sql\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sql\"]\n  },\n  \"application/srgs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gram\"]\n  },\n  \"application/srgs+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"grxml\"]\n  },\n  \"application/sru+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"sru\"]\n  },\n  \"application/ssdl+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"ssdl\"]\n  },\n  \"application/sslkeylogfile\": {\n    \"source\": \"iana\"\n  },\n  \"application/ssml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ssml\"]\n  },\n  \"application/st2110-41\": {\n    \"source\": \"iana\"\n  },\n  \"application/stix+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/stratum\": {\n    \"source\": \"iana\"\n  },\n  \"application/swid+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/swid+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"swidtag\"]\n  },\n  \"application/tamp-apex-update\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-apex-update-confirm\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-community-update\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-community-update-confirm\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-error\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-sequence-adjust\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-sequence-adjust-confirm\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-status-query\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-status-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-update\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-update-confirm\": {\n    \"source\": \"iana\"\n  },\n  \"application/tar\": {\n    \"compressible\": true\n  },\n  \"application/taxii+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/td+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/tei+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"tei\",\"teicorpus\"]\n  },\n  \"application/tetra_isi\": {\n    \"source\": \"iana\"\n  },\n  \"application/thraud+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"tfi\"]\n  },\n  \"application/timestamp-query\": {\n    \"source\": \"iana\"\n  },\n  \"application/timestamp-reply\": {\n    \"source\": \"iana\"\n  },\n  \"application/timestamped-data\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tsd\"]\n  },\n  \"application/tlsrpt+gzip\": {\n    \"source\": \"iana\"\n  },\n  \"application/tlsrpt+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/tm+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/tnauthlist\": {\n    \"source\": \"iana\"\n  },\n  \"application/toc+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/token-introspection+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/toml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"toml\"]\n  },\n  \"application/trickle-ice-sdpfrag\": {\n    \"source\": \"iana\"\n  },\n  \"application/trig\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"trig\"]\n  },\n  \"application/trust-chain+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/trust-mark+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/trust-mark-delegation+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/ttml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ttml\"]\n  },\n  \"application/tve-trigger\": {\n    \"source\": \"iana\"\n  },\n  \"application/tzif\": {\n    \"source\": \"iana\"\n  },\n  \"application/tzif-leap\": {\n    \"source\": \"iana\"\n  },\n  \"application/ubjson\": {\n    \"compressible\": false,\n    \"extensions\": [\"ubj\"]\n  },\n  \"application/uccs+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/ujcs+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ulpfec\": {\n    \"source\": \"iana\"\n  },\n  \"application/urc-grpsheet+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/urc-ressheet+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rsheet\"]\n  },\n  \"application/urc-targetdesc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"td\"]\n  },\n  \"application/urc-uisocketdesc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vc+cose\": {\n    \"source\": \"iana\"\n  },\n  \"application/vc+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/vcard+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vcard+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vemmi\": {\n    \"source\": \"iana\"\n  },\n  \"application/vividence.scriptfile\": {\n    \"source\": \"apache\"\n  },\n  \"application/vnd.1000minds.decision-model+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"1km\"]\n  },\n  \"application/vnd.1ob\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp-prose+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp-prose-pc3a+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp-prose-pc3ach+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp-prose-pc3ch+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp-prose-pc8+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp-v2x-local-service-information\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.5gnas\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.5gsa2x\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.5gsa2x-local-service-information\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.5gsv2x\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.5gsv2x-local-service-information\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.access-transfer-events+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.bsf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.crs+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.current-location-discovery+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.gmop+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.gtpc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.interworking-data\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.lpp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.mc-signalling-ear\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.mcdata-affiliation-command+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcdata-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcdata-msgstore-ctrl-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcdata-payload\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.mcdata-regroup+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcdata-service-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcdata-signalling\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.mcdata-ue-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcdata-user-profile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-affiliation-command+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-floor-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-location-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-mbms-usage-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-regroup+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-service-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-signed+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-ue-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-ue-init-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-user-profile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-affiliation-command+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-location-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-mbms-usage-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-regroup+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-service-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-transmission-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-ue-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-user-profile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mid-call+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.ngap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.pfcp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.pic-bw-large\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"plb\"]\n  },\n  \"application/vnd.3gpp.pic-bw-small\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"psb\"]\n  },\n  \"application/vnd.3gpp.pic-bw-var\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pvb\"]\n  },\n  \"application/vnd.3gpp.pinapp-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.s1ap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.seal-group-doc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.seal-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.seal-location-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.seal-mbms-usage-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.seal-network-qos-management-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.seal-ue-config-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.seal-unicast-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.seal-user-profile-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.sms\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.sms+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.srvcc-ext+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.srvcc-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.state-and-event-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.ussd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.v2x\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.vae-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp2.bcmcsinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp2.sms\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp2.tcap\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tcap\"]\n  },\n  \"application/vnd.3lightssoftware.imagescal\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3m.post-it-notes\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pwn\"]\n  },\n  \"application/vnd.accpac.simply.aso\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"aso\"]\n  },\n  \"application/vnd.accpac.simply.imp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"imp\"]\n  },\n  \"application/vnd.acm.addressxfer+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.acm.chatbot+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.acucobol\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"acu\"]\n  },\n  \"application/vnd.acucorp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"atc\",\"acutc\"]\n  },\n  \"application/vnd.adobe.air-application-installer-package+zip\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"air\"]\n  },\n  \"application/vnd.adobe.flash.movie\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.adobe.formscentral.fcdt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fcdt\"]\n  },\n  \"application/vnd.adobe.fxp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fxp\",\"fxpl\"]\n  },\n  \"application/vnd.adobe.partial-upload\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.adobe.xdp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xdp\"]\n  },\n  \"application/vnd.adobe.xfdf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xfdf\"]\n  },\n  \"application/vnd.aether.imp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.afplinedata\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.afplinedata-pagedef\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.cmoca-cmresource\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.foca-charset\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.foca-codedfont\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.foca-codepage\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-cmtable\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-formdef\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-mediummap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-objectcontainer\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-overlay\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-pagesegment\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.age\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"age\"]\n  },\n  \"application/vnd.ah-barcode\": {\n    \"source\": \"apache\"\n  },\n  \"application/vnd.ahead.space\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ahead\"]\n  },\n  \"application/vnd.airzip.filesecure.azf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"azf\"]\n  },\n  \"application/vnd.airzip.filesecure.azs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"azs\"]\n  },\n  \"application/vnd.amadeus+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.amazon.ebook\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"azw\"]\n  },\n  \"application/vnd.amazon.mobi8-ebook\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.americandynamics.acc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"acc\"]\n  },\n  \"application/vnd.amiga.ami\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ami\"]\n  },\n  \"application/vnd.amundsen.maze+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.android.ota\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.android.package-archive\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"apk\"]\n  },\n  \"application/vnd.anki\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.anser-web-certificate-issue-initiation\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cii\"]\n  },\n  \"application/vnd.anser-web-funds-transfer-initiation\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"fti\"]\n  },\n  \"application/vnd.antix.game-component\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"atx\"]\n  },\n  \"application/vnd.apache.arrow.file\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.apache.arrow.stream\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.apache.parquet\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.apache.thrift.binary\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.apache.thrift.compact\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.apache.thrift.json\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.apexlang\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.api+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.aplextor.warrp+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.apothekende.reservation+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.apple.installer+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mpkg\"]\n  },\n  \"application/vnd.apple.keynote\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"key\"]\n  },\n  \"application/vnd.apple.mpegurl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"m3u8\"]\n  },\n  \"application/vnd.apple.numbers\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"numbers\"]\n  },\n  \"application/vnd.apple.pages\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pages\"]\n  },\n  \"application/vnd.apple.pkpass\": {\n    \"compressible\": false,\n    \"extensions\": [\"pkpass\"]\n  },\n  \"application/vnd.arastra.swi\": {\n    \"source\": \"apache\"\n  },\n  \"application/vnd.aristanetworks.swi\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"swi\"]\n  },\n  \"application/vnd.artisan+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.artsquare\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.astraea-software.iota\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"iota\"]\n  },\n  \"application/vnd.audiograph\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"aep\"]\n  },\n  \"application/vnd.autodesk.fbx\": {\n    \"extensions\": [\"fbx\"]\n  },\n  \"application/vnd.autopackage\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.avalon+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.avistar+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.balsamiq.bmml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"bmml\"]\n  },\n  \"application/vnd.balsamiq.bmpr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.banana-accounting\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bbf.usp.error\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bbf.usp.msg\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bbf.usp.msg+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.bekitzur-stech+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.belightsoft.lhzd+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.belightsoft.lhzl+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.bint.med-content\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.biopax.rdf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.blink-idb-value-wrapper\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.blueice.multipass\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mpm\"]\n  },\n  \"application/vnd.bluetooth.ep.oob\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bluetooth.le.oob\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bmi\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"bmi\"]\n  },\n  \"application/vnd.bpf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bpf3\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.businessobjects\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rep\"]\n  },\n  \"application/vnd.byu.uapi+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.bzip3\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.c3voc.schedule+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cab-jscript\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.canon-cpdl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.canon-lips\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.capasystems-pg+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cendio.thinlinc.clientconf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.century-systems.tcp_stream\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.chemdraw+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"cdxml\"]\n  },\n  \"application/vnd.chess-pgn\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.chipnuts.karaoke-mmd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mmd\"]\n  },\n  \"application/vnd.ciedi\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cinderella\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdy\"]\n  },\n  \"application/vnd.cirpack.isdn-ext\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.citationstyles.style+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"csl\"]\n  },\n  \"application/vnd.claymore\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cla\"]\n  },\n  \"application/vnd.cloanto.rp9\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rp9\"]\n  },\n  \"application/vnd.clonk.c4group\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"c4g\",\"c4d\",\"c4f\",\"c4p\",\"c4u\"]\n  },\n  \"application/vnd.cluetrust.cartomobile-config\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"c11amc\"]\n  },\n  \"application/vnd.cluetrust.cartomobile-config-pkg\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"c11amz\"]\n  },\n  \"application/vnd.cncf.helm.chart.content.v1.tar+gzip\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cncf.helm.chart.provenance.v1.prov\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cncf.helm.config.v1+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.coffeescript\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.document\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.document-template\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.presentation\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.presentation-template\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.spreadsheet\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.spreadsheet-template\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collection+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.collection.doc+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.collection.next+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.comicbook+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.comicbook-rar\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.commerce-battelle\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.commonspace\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"csp\"]\n  },\n  \"application/vnd.contact.cmsg\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdbcmsg\"]\n  },\n  \"application/vnd.coreos.ignition+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cosmocaller\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cmc\"]\n  },\n  \"application/vnd.crick.clicker\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"clkx\"]\n  },\n  \"application/vnd.crick.clicker.keyboard\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"clkk\"]\n  },\n  \"application/vnd.crick.clicker.palette\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"clkp\"]\n  },\n  \"application/vnd.crick.clicker.template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"clkt\"]\n  },\n  \"application/vnd.crick.clicker.wordbank\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"clkw\"]\n  },\n  \"application/vnd.criticaltools.wbs+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wbs\"]\n  },\n  \"application/vnd.cryptii.pipe+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.crypto-shade-file\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cryptomator.encrypted\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cryptomator.vault\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ctc-posml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pml\"]\n  },\n  \"application/vnd.ctct.ws+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cups-pdf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cups-postscript\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cups-ppd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ppd\"]\n  },\n  \"application/vnd.cups-raster\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cups-raw\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.curl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.curl.car\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"car\"]\n  },\n  \"application/vnd.curl.pcurl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pcurl\"]\n  },\n  \"application/vnd.cyan.dean.root+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cybank\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cyclonedx+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cyclonedx+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.d2l.coursepackage1p0+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.d3m-dataset\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.d3m-problem\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dart\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dart\"]\n  },\n  \"application/vnd.data-vision.rdz\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rdz\"]\n  },\n  \"application/vnd.datalog\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.datapackage+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dataresource+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dbf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dbf\"]\n  },\n  \"application/vnd.dcmp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dcmp\"]\n  },\n  \"application/vnd.debian.binary-package\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dece.data\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvf\",\"uvvf\",\"uvd\",\"uvvd\"]\n  },\n  \"application/vnd.dece.ttml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"uvt\",\"uvvt\"]\n  },\n  \"application/vnd.dece.unspecified\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvx\",\"uvvx\"]\n  },\n  \"application/vnd.dece.zip\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvz\",\"uvvz\"]\n  },\n  \"application/vnd.denovo.fcselayout-link\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fe_launch\"]\n  },\n  \"application/vnd.desmume.movie\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dir-bi.plate-dl-nosuffix\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dm.delegation+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dna\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dna\"]\n  },\n  \"application/vnd.document+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dolby.mlp\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mlp\"]\n  },\n  \"application/vnd.dolby.mobile.1\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dolby.mobile.2\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.doremir.scorecloud-binary-document\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dpgraph\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dpg\"]\n  },\n  \"application/vnd.dreamfactory\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dfac\"]\n  },\n  \"application/vnd.drive+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ds-keypoint\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"kpxx\"]\n  },\n  \"application/vnd.dtg.local\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dtg.local.flash\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dtg.local.html\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ait\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ait\"]\n  },\n  \"application/vnd.dvb.dvbisl+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.dvbj\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.esgcontainer\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ipdcdftnotifaccess\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ipdcesgaccess\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ipdcesgaccess2\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ipdcesgpdd\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ipdcroaming\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.iptv.alfec-base\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.iptv.alfec-enhancement\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.notif-aggregate-root+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-container+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-generic+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-ia-msglist+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-ia-registration-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-ia-registration-response+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-init+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.pfr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.service\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"svc\"]\n  },\n  \"application/vnd.dxr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dynageo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"geo\"]\n  },\n  \"application/vnd.dzr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.easykaraoke.cdgdownload\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecdis-update\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecip.rlp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.eclipse.ditto+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ecowin.chart\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mag\"]\n  },\n  \"application/vnd.ecowin.filerequest\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecowin.fileupdate\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecowin.series\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecowin.seriesrequest\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecowin.seriesupdate\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.efi.img\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.efi.iso\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.eln+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.emclient.accessrequest+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.enliven\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nml\"]\n  },\n  \"application/vnd.enphase.envoy\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.eprints.data+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.epson.esf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"esf\"]\n  },\n  \"application/vnd.epson.msf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"msf\"]\n  },\n  \"application/vnd.epson.quickanime\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"qam\"]\n  },\n  \"application/vnd.epson.salt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"slt\"]\n  },\n  \"application/vnd.epson.ssf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ssf\"]\n  },\n  \"application/vnd.ericsson.quickcall\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.erofs\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.espass-espass+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.eszigno3+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"es3\",\"et3\"]\n  },\n  \"application/vnd.etsi.aoc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.asic-e+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.etsi.asic-s+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.etsi.cug+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvcommand+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvdiscovery+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvprofile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvsad-bc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvsad-cod+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvsad-npvr+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvservice+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvsync+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvueprofile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.mcid+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.mheg5\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.etsi.overload-control-policy-dataset+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.pstn+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.sci+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.simservs+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.timestamp-token\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.etsi.tsl+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.tsl.der\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.eu.kasparian.car+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.eudora.data\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.evolv.ecig.profile\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.evolv.ecig.settings\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.evolv.ecig.theme\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.exstream-empower+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.exstream-package\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ezpix-album\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ez2\"]\n  },\n  \"application/vnd.ezpix-package\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ez3\"]\n  },\n  \"application/vnd.f-secure.mobile\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.familysearch.gedcom+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.fastcopy-disk-image\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fdf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"fdf\"]\n  },\n  \"application/vnd.fdsn.mseed\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mseed\"]\n  },\n  \"application/vnd.fdsn.seed\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"seed\",\"dataless\"]\n  },\n  \"application/vnd.fdsn.stationxml+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"XML-BASED\",\n    \"compressible\": true\n  },\n  \"application/vnd.ffsns\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ficlab.flb+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.filmit.zfc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fints\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.firemonkeys.cloudcell\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.flographit\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gph\"]\n  },\n  \"application/vnd.fluxtime.clip\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ftc\"]\n  },\n  \"application/vnd.font-fontforge-sfd\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.framemaker\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fm\",\"frame\",\"maker\",\"book\"]\n  },\n  \"application/vnd.freelog.comic\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.frogans.fnc\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"fnc\"]\n  },\n  \"application/vnd.frogans.ltf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ltf\"]\n  },\n  \"application/vnd.fsc.weblaunch\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fsc\"]\n  },\n  \"application/vnd.fujifilm.fb.docuworks\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujifilm.fb.docuworks.binder\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujifilm.fb.docuworks.container\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujifilm.fb.jfi+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.fujitsu.oasys\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oas\"]\n  },\n  \"application/vnd.fujitsu.oasys2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oa2\"]\n  },\n  \"application/vnd.fujitsu.oasys3\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oa3\"]\n  },\n  \"application/vnd.fujitsu.oasysgp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fg5\"]\n  },\n  \"application/vnd.fujitsu.oasysprs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"bh2\"]\n  },\n  \"application/vnd.fujixerox.art-ex\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujixerox.art4\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujixerox.ddd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ddd\"]\n  },\n  \"application/vnd.fujixerox.docuworks\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xdw\"]\n  },\n  \"application/vnd.fujixerox.docuworks.binder\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xbd\"]\n  },\n  \"application/vnd.fujixerox.docuworks.container\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujixerox.hbpl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fut-misnet\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.futoin+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.futoin+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.fuzzysheet\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fzs\"]\n  },\n  \"application/vnd.ga4gh.passport+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.genomatix.tuxedo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"txd\"]\n  },\n  \"application/vnd.genozip\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.gentics.grd+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.gentoo.catmetadata+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.gentoo.ebuild\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.gentoo.eclass\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.gentoo.gpkg\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.gentoo.manifest\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.gentoo.pkgmetadata+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.gentoo.xpak\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.geo+json\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/vnd.geocube+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/vnd.geogebra.file\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ggb\"]\n  },\n  \"application/vnd.geogebra.pinboard\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.geogebra.slides\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ggs\"]\n  },\n  \"application/vnd.geogebra.tool\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ggt\"]\n  },\n  \"application/vnd.geometry-explorer\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gex\",\"gre\"]\n  },\n  \"application/vnd.geonext\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gxt\"]\n  },\n  \"application/vnd.geoplan\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"g2w\"]\n  },\n  \"application/vnd.geospace\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"g3w\"]\n  },\n  \"application/vnd.gerber\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.globalplatform.card-content-mgt\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.globalplatform.card-content-mgt-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.gmx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gmx\"]\n  },\n  \"application/vnd.gnu.taler.exchange+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.gnu.taler.merchant+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.google-apps.audio\": {},\n  \"application/vnd.google-apps.document\": {\n    \"compressible\": false,\n    \"extensions\": [\"gdoc\"]\n  },\n  \"application/vnd.google-apps.drawing\": {\n    \"compressible\": false,\n    \"extensions\": [\"gdraw\"]\n  },\n  \"application/vnd.google-apps.drive-sdk\": {\n    \"compressible\": false\n  },\n  \"application/vnd.google-apps.file\": {},\n  \"application/vnd.google-apps.folder\": {\n    \"compressible\": false\n  },\n  \"application/vnd.google-apps.form\": {\n    \"compressible\": false,\n    \"extensions\": [\"gform\"]\n  },\n  \"application/vnd.google-apps.fusiontable\": {},\n  \"application/vnd.google-apps.jam\": {\n    \"compressible\": false,\n    \"extensions\": [\"gjam\"]\n  },\n  \"application/vnd.google-apps.mail-layout\": {},\n  \"application/vnd.google-apps.map\": {\n    \"compressible\": false,\n    \"extensions\": [\"gmap\"]\n  },\n  \"application/vnd.google-apps.photo\": {},\n  \"application/vnd.google-apps.presentation\": {\n    \"compressible\": false,\n    \"extensions\": [\"gslides\"]\n  },\n  \"application/vnd.google-apps.script\": {\n    \"compressible\": false,\n    \"extensions\": [\"gscript\"]\n  },\n  \"application/vnd.google-apps.shortcut\": {},\n  \"application/vnd.google-apps.site\": {\n    \"compressible\": false,\n    \"extensions\": [\"gsite\"]\n  },\n  \"application/vnd.google-apps.spreadsheet\": {\n    \"compressible\": false,\n    \"extensions\": [\"gsheet\"]\n  },\n  \"application/vnd.google-apps.unknown\": {},\n  \"application/vnd.google-apps.video\": {},\n  \"application/vnd.google-earth.kml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"kml\"]\n  },\n  \"application/vnd.google-earth.kmz\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"kmz\"]\n  },\n  \"application/vnd.gov.sk.e-form+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/vnd.gov.sk.e-form+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.gov.sk.xmldatacontainer+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xdcf\"]\n  },\n  \"application/vnd.gpxsee.map+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.grafeq\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gqf\",\"gqs\"]\n  },\n  \"application/vnd.gridmp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.groove-account\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gac\"]\n  },\n  \"application/vnd.groove-help\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ghf\"]\n  },\n  \"application/vnd.groove-identity-message\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gim\"]\n  },\n  \"application/vnd.groove-injector\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"grv\"]\n  },\n  \"application/vnd.groove-tool-message\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gtm\"]\n  },\n  \"application/vnd.groove-tool-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tpl\"]\n  },\n  \"application/vnd.groove-vcard\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vcg\"]\n  },\n  \"application/vnd.hal+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hal+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"hal\"]\n  },\n  \"application/vnd.handheld-entertainment+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"zmm\"]\n  },\n  \"application/vnd.hbci\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hbci\"]\n  },\n  \"application/vnd.hc+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hcl-bireports\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.hdt\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.heroku+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hhe.lesson-player\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"les\"]\n  },\n  \"application/vnd.hp-hpgl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hpgl\"]\n  },\n  \"application/vnd.hp-hpid\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hpid\"]\n  },\n  \"application/vnd.hp-hps\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hps\"]\n  },\n  \"application/vnd.hp-jlyt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jlt\"]\n  },\n  \"application/vnd.hp-pcl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pcl\"]\n  },\n  \"application/vnd.hp-pclxl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pclxl\"]\n  },\n  \"application/vnd.hsl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.httphone\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.hydrostatix.sof-data\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sfd-hdstx\"]\n  },\n  \"application/vnd.hyper+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hyper-item+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hyperdrive+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hzn-3d-crossword\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ibm.afplinedata\": {\n    \"source\": \"apache\"\n  },\n  \"application/vnd.ibm.electronic-media\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ibm.minipay\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mpy\"]\n  },\n  \"application/vnd.ibm.modcap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"afp\",\"listafp\",\"list3820\"]\n  },\n  \"application/vnd.ibm.rights-management\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"irm\"]\n  },\n  \"application/vnd.ibm.secure-container\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sc\"]\n  },\n  \"application/vnd.iccprofile\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"icc\",\"icm\"]\n  },\n  \"application/vnd.ieee.1905\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.igloader\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"igl\"]\n  },\n  \"application/vnd.imagemeter.folder+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.imagemeter.image+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.immervision-ivp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ivp\"]\n  },\n  \"application/vnd.immervision-ivu\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ivu\"]\n  },\n  \"application/vnd.ims.imsccv1p1\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ims.imsccv1p2\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ims.imsccv1p3\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ims.lis.v2.result+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ims.lti.v2.toolconsumerprofile+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ims.lti.v2.toolproxy+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ims.lti.v2.toolproxy.id+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ims.lti.v2.toolsettings+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ims.lti.v2.toolsettings.simple+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.informedcontrol.rms+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.informix-visionary\": {\n    \"source\": \"apache\"\n  },\n  \"application/vnd.infotech.project\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.infotech.project+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.innopath.wamp.notification\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.insors.igm\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"igm\"]\n  },\n  \"application/vnd.intercon.formnet\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xpw\",\"xpx\"]\n  },\n  \"application/vnd.intergeo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"i2g\"]\n  },\n  \"application/vnd.intertrust.digibox\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.intertrust.nncp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.intu.qbo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"qbo\"]\n  },\n  \"application/vnd.intu.qfx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"qfx\"]\n  },\n  \"application/vnd.ipfs.ipns-record\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ipld.car\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ipld.dag-cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ipld.dag-json\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ipld.raw\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.iptc.g2.catalogitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.conceptitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.knowledgeitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.newsitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.newsmessage+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.packageitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.planningitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ipunplugged.rcprofile\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rcprofile\"]\n  },\n  \"application/vnd.irepository.package+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"irp\"]\n  },\n  \"application/vnd.is-xpr\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xpr\"]\n  },\n  \"application/vnd.isac.fcs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fcs\"]\n  },\n  \"application/vnd.iso11783-10+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.jam\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jam\"]\n  },\n  \"application/vnd.japannet-directory-service\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-jpnstore-wakeup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-payment-wakeup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-registration\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-registration-wakeup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-setstore-wakeup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-verification\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-verification-wakeup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.jcp.javame.midlet-rms\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rms\"]\n  },\n  \"application/vnd.jisp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jisp\"]\n  },\n  \"application/vnd.joost.joda-archive\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"joda\"]\n  },\n  \"application/vnd.jsk.isdn-ngn\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.kahootz\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ktz\",\"ktr\"]\n  },\n  \"application/vnd.kde.karbon\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"karbon\"]\n  },\n  \"application/vnd.kde.kchart\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"chrt\"]\n  },\n  \"application/vnd.kde.kformula\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kfo\"]\n  },\n  \"application/vnd.kde.kivio\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"flw\"]\n  },\n  \"application/vnd.kde.kontour\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kon\"]\n  },\n  \"application/vnd.kde.kpresenter\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kpr\",\"kpt\"]\n  },\n  \"application/vnd.kde.kspread\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ksp\"]\n  },\n  \"application/vnd.kde.kword\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kwd\",\"kwt\"]\n  },\n  \"application/vnd.kdl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.kenameaapp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"htke\"]\n  },\n  \"application/vnd.keyman.kmp+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.keyman.kmx\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.kidspiration\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kia\"]\n  },\n  \"application/vnd.kinar\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kne\",\"knp\"]\n  },\n  \"application/vnd.koan\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"skp\",\"skd\",\"skt\",\"skm\"]\n  },\n  \"application/vnd.kodak-descriptor\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sse\"]\n  },\n  \"application/vnd.las\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.las.las+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.las.las+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"lasxml\"]\n  },\n  \"application/vnd.laszip\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ldev.productlicensing\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.leap+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.liberty-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.llamagraphics.life-balance.desktop\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"lbd\"]\n  },\n  \"application/vnd.llamagraphics.life-balance.exchange+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"lbe\"]\n  },\n  \"application/vnd.logipipe.circuit+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.loom\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.lotus-1-2-3\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"123\"]\n  },\n  \"application/vnd.lotus-approach\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"apr\"]\n  },\n  \"application/vnd.lotus-freelance\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pre\"]\n  },\n  \"application/vnd.lotus-notes\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nsf\"]\n  },\n  \"application/vnd.lotus-organizer\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"org\"]\n  },\n  \"application/vnd.lotus-screencam\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"scm\"]\n  },\n  \"application/vnd.lotus-wordpro\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"lwp\"]\n  },\n  \"application/vnd.macports.portpkg\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"portpkg\"]\n  },\n  \"application/vnd.mapbox-vector-tile\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mvt\"]\n  },\n  \"application/vnd.marlin.drm.actiontoken+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.marlin.drm.conftoken+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.marlin.drm.license+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.marlin.drm.mdcf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mason+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.maxar.archive.3tz+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.maxmind.maxmind-db\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mcd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mcd\"]\n  },\n  \"application/vnd.mdl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mdl-mbsdf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.medcalcdata\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mc1\"]\n  },\n  \"application/vnd.mediastation.cdkey\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdkey\"]\n  },\n  \"application/vnd.medicalholodeck.recordxr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.meridian-slingshot\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mermaid\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mfer\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mwf\"]\n  },\n  \"application/vnd.mfmp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mfm\"]\n  },\n  \"application/vnd.micro+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.micrografx.flo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"flo\"]\n  },\n  \"application/vnd.micrografx.igx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"igx\"]\n  },\n  \"application/vnd.microsoft.portable-executable\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.microsoft.windows.thumbnail-cache\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.miele+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.mif\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mif\"]\n  },\n  \"application/vnd.minisoft-hp3000-save\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mitsubishi.misty-guard.trustweb\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mobius.daf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"daf\"]\n  },\n  \"application/vnd.mobius.dis\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dis\"]\n  },\n  \"application/vnd.mobius.mbk\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mbk\"]\n  },\n  \"application/vnd.mobius.mqy\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mqy\"]\n  },\n  \"application/vnd.mobius.msl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"msl\"]\n  },\n  \"application/vnd.mobius.plc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"plc\"]\n  },\n  \"application/vnd.mobius.txf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"txf\"]\n  },\n  \"application/vnd.modl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mophun.application\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mpn\"]\n  },\n  \"application/vnd.mophun.certificate\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mpc\"]\n  },\n  \"application/vnd.motorola.flexsuite\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.adsi\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.fis\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.gotap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.kmr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.ttc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.wem\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.iprm\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mozilla.xul+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xul\"]\n  },\n  \"application/vnd.ms-3mfdocument\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-artgalry\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cil\"]\n  },\n  \"application/vnd.ms-asf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-cab-compressed\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cab\"]\n  },\n  \"application/vnd.ms-color.iccprofile\": {\n    \"source\": \"apache\"\n  },\n  \"application/vnd.ms-excel\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"xls\",\"xlm\",\"xla\",\"xlc\",\"xlt\",\"xlw\"]\n  },\n  \"application/vnd.ms-excel.addin.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xlam\"]\n  },\n  \"application/vnd.ms-excel.sheet.binary.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xlsb\"]\n  },\n  \"application/vnd.ms-excel.sheet.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xlsm\"]\n  },\n  \"application/vnd.ms-excel.template.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xltm\"]\n  },\n  \"application/vnd.ms-fontobject\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"eot\"]\n  },\n  \"application/vnd.ms-htmlhelp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"chm\"]\n  },\n  \"application/vnd.ms-ims\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ims\"]\n  },\n  \"application/vnd.ms-lrm\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"lrm\"]\n  },\n  \"application/vnd.ms-office.activex+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-officetheme\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"thmx\"]\n  },\n  \"application/vnd.ms-opentype\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-outlook\": {\n    \"compressible\": false,\n    \"extensions\": [\"msg\"]\n  },\n  \"application/vnd.ms-package.obfuscated-opentype\": {\n    \"source\": \"apache\"\n  },\n  \"application/vnd.ms-pki.seccat\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cat\"]\n  },\n  \"application/vnd.ms-pki.stl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"stl\"]\n  },\n  \"application/vnd.ms-playready.initiator+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-powerpoint\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"ppt\",\"pps\",\"pot\"]\n  },\n  \"application/vnd.ms-powerpoint.addin.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ppam\"]\n  },\n  \"application/vnd.ms-powerpoint.presentation.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pptm\"]\n  },\n  \"application/vnd.ms-powerpoint.slide.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sldm\"]\n  },\n  \"application/vnd.ms-powerpoint.slideshow.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ppsm\"]\n  },\n  \"application/vnd.ms-powerpoint.template.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"potm\"]\n  },\n  \"application/vnd.ms-printdevicecapabilities+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-printing.printticket+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-printschematicket+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-project\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mpp\",\"mpt\"]\n  },\n  \"application/vnd.ms-tnef\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-visio.viewer\": {\n    \"extensions\": [\"vdx\"]\n  },\n  \"application/vnd.ms-windows.devicepairing\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-windows.nwprinting.oob\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-windows.printerpairing\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-windows.wsd.oob\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-wmdrm.lic-chlg-req\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-wmdrm.lic-resp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-wmdrm.meter-chlg-req\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-wmdrm.meter-resp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-word.document.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"docm\"]\n  },\n  \"application/vnd.ms-word.template.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dotm\"]\n  },\n  \"application/vnd.ms-works\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wps\",\"wks\",\"wcm\",\"wdb\"]\n  },\n  \"application/vnd.ms-wpl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wpl\"]\n  },\n  \"application/vnd.ms-xpsdocument\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"xps\"]\n  },\n  \"application/vnd.msa-disk-image\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mseq\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mseq\"]\n  },\n  \"application/vnd.msgpack\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.msign\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.multiad.creator\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.multiad.creator.cif\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.music-niff\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.musician\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mus\"]\n  },\n  \"application/vnd.muvee.style\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"msty\"]\n  },\n  \"application/vnd.mynfc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"taglet\"]\n  },\n  \"application/vnd.nacamar.ybrid+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nato.bindingdataobject+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nato.bindingdataobject+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nato.bindingdataobject+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"bdo\"]\n  },\n  \"application/vnd.nato.openxmlformats-package.iepd+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.ncd.control\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ncd.reference\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nearst.inv+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nebumind.line\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nervana\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.netfpx\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.neurolanguage.nlu\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nlu\"]\n  },\n  \"application/vnd.nimn\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nintendo.nitro.rom\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nintendo.snes.rom\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nitf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ntf\",\"nitf\"]\n  },\n  \"application/vnd.noblenet-directory\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nnd\"]\n  },\n  \"application/vnd.noblenet-sealer\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nns\"]\n  },\n  \"application/vnd.noblenet-web\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nnw\"]\n  },\n  \"application/vnd.nokia.catalogs\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.conml+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.conml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nokia.iptv.config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nokia.isds-radio-presets\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.landmark+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.landmark+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nokia.landmarkcollection+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nokia.n-gage.ac+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ac\"]\n  },\n  \"application/vnd.nokia.n-gage.data\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ngdat\"]\n  },\n  \"application/vnd.nokia.n-gage.symbian.install\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"n-gage\"]\n  },\n  \"application/vnd.nokia.ncd\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.pcd+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.pcd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nokia.radio-preset\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rpst\"]\n  },\n  \"application/vnd.nokia.radio-presets\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rpss\"]\n  },\n  \"application/vnd.novadigm.edm\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"edm\"]\n  },\n  \"application/vnd.novadigm.edx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"edx\"]\n  },\n  \"application/vnd.novadigm.ext\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ext\"]\n  },\n  \"application/vnd.ntt-local.content-share\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ntt-local.file-transfer\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ntt-local.ogw_remote-access\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ntt-local.sip-ta_remote\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ntt-local.sip-ta_tcp_stream\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oai.workflows\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oai.workflows+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oai.workflows+yaml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oasis.opendocument.base\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oasis.opendocument.chart\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odc\"]\n  },\n  \"application/vnd.oasis.opendocument.chart-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"otc\"]\n  },\n  \"application/vnd.oasis.opendocument.database\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"odb\"]\n  },\n  \"application/vnd.oasis.opendocument.formula\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odf\"]\n  },\n  \"application/vnd.oasis.opendocument.formula-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odft\"]\n  },\n  \"application/vnd.oasis.opendocument.graphics\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"odg\"]\n  },\n  \"application/vnd.oasis.opendocument.graphics-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"otg\"]\n  },\n  \"application/vnd.oasis.opendocument.image\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odi\"]\n  },\n  \"application/vnd.oasis.opendocument.image-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oti\"]\n  },\n  \"application/vnd.oasis.opendocument.presentation\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"odp\"]\n  },\n  \"application/vnd.oasis.opendocument.presentation-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"otp\"]\n  },\n  \"application/vnd.oasis.opendocument.spreadsheet\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"ods\"]\n  },\n  \"application/vnd.oasis.opendocument.spreadsheet-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ots\"]\n  },\n  \"application/vnd.oasis.opendocument.text\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"odt\"]\n  },\n  \"application/vnd.oasis.opendocument.text-master\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odm\"]\n  },\n  \"application/vnd.oasis.opendocument.text-master-template\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oasis.opendocument.text-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ott\"]\n  },\n  \"application/vnd.oasis.opendocument.text-web\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oth\"]\n  },\n  \"application/vnd.obn\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ocf+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oci.image.manifest.v1+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oftn.l10n+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.contentaccessdownload+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.contentaccessstreaming+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.cspg-hexbinary\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oipf.dae.svg+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.dae.xhtml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.mippvcontrolmessage+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.pae.gem\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oipf.spdiscovery+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.spdlist+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.ueprofile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.userprofile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.olpc-sugar\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xo\"]\n  },\n  \"application/vnd.oma-scws-config\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma-scws-http-request\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma-scws-http-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.associated-procedure-parameter+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.drm-trigger+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.imd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.ltkm\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.notification+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.provisioningtrigger\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.sgboot\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.sgdd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.sgdu\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.simple-symbol-container\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.smartcard-trigger+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.sprov+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.stkm\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.cab-address-book+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.cab-feature-handler+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.cab-pcc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.cab-subs-invite+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.cab-user-prefs+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.dcd\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.dcdc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.dd2+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dd2\"]\n  },\n  \"application/vnd.oma.drm.risd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.group-usage-list+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.lwm2m+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.lwm2m+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.lwm2m+tlv\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.pal+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.poc.detailed-progress-report+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.poc.final-report+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.poc.groups+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.poc.invocation-descriptor+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.poc.optimized-progress-report+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.push\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.scidm.messages+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.xcap-directory+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.omads-email+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/vnd.omads-file+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/vnd.omads-folder+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/vnd.omaloc-supl-init\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepager\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepagertamp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepagertamx\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepagertat\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepagertatp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepagertatx\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onvif.metadata\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.openblox.game+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"obgx\"]\n  },\n  \"application/vnd.openblox.game-binary\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.openeye.oeb\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.openofficeorg.extension\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"oxt\"]\n  },\n  \"application/vnd.openstreetmap.data+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"osm\"]\n  },\n  \"application/vnd.opentimestamps.ots\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.openvpi.dspx+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.custom-properties+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.customxmlproperties+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawing+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.extended-properties+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.comments+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.presentation\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"pptx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slide\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sldx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slide+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slideshow\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ppsx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.tags+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"potx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"xlsx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xltx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.theme+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.themeoverride+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.vmldrawing\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"docx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dotx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-package.core-properties+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-package.relationships+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oracle.resource+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.orange.indata\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.osa.netdeploy\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.osgeo.mapguide.package\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mgp\"]\n  },\n  \"application/vnd.osgi.bundle\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.osgi.dp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dp\"]\n  },\n  \"application/vnd.osgi.subsystem\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"esa\"]\n  },\n  \"application/vnd.otps.ct-kip+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oxli.countgraph\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.pagerduty+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.palm\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pdb\",\"pqa\",\"oprc\"]\n  },\n  \"application/vnd.panoply\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.paos.xml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.patentdive\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.patientecommsdoc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.pawaafile\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"paw\"]\n  },\n  \"application/vnd.pcos\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.pg.format\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"str\"]\n  },\n  \"application/vnd.pg.osasli\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ei6\"]\n  },\n  \"application/vnd.piaccess.application-licence\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.picsel\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"efif\"]\n  },\n  \"application/vnd.pmi.widget\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wg\"]\n  },\n  \"application/vnd.poc.group-advertisement+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.pocketlearn\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"plf\"]\n  },\n  \"application/vnd.powerbuilder6\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pbd\"]\n  },\n  \"application/vnd.powerbuilder6-s\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.powerbuilder7\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.powerbuilder7-s\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.powerbuilder75\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.powerbuilder75-s\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.preminet\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.previewsystems.box\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"box\"]\n  },\n  \"application/vnd.procrate.brushset\": {\n    \"extensions\": [\"brushset\"]\n  },\n  \"application/vnd.procreate.brush\": {\n    \"extensions\": [\"brush\"]\n  },\n  \"application/vnd.procreate.dream\": {\n    \"extensions\": [\"drm\"]\n  },\n  \"application/vnd.proteus.magazine\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mgz\"]\n  },\n  \"application/vnd.psfs\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.pt.mundusmundi\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.publishare-delta-tree\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"qps\"]\n  },\n  \"application/vnd.pvi.ptid1\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ptid\"]\n  },\n  \"application/vnd.pwg-multiplexed\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.pwg-xhtml-print+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xhtm\"]\n  },\n  \"application/vnd.qualcomm.brew-app-res\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.quarantainenet\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.quark.quarkxpress\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"qxd\",\"qxt\",\"qwd\",\"qwt\",\"qxl\",\"qxb\"]\n  },\n  \"application/vnd.quobject-quoxdocument\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.radisys.moml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-audit+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-audit-conf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-audit-conn+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-audit-dialog+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-audit-stream+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-conf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-base+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-fax-detect+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-fax-sendrecv+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-group+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-speech+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-transform+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.rainstor.data\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.rapid\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.rar\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rar\"]\n  },\n  \"application/vnd.realvnc.bed\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"bed\"]\n  },\n  \"application/vnd.recordare.musicxml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mxl\"]\n  },\n  \"application/vnd.recordare.musicxml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"musicxml\"]\n  },\n  \"application/vnd.relpipe\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.renlearn.rlprint\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.resilient.logic\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.restful+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.rig.cryptonote\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cryptonote\"]\n  },\n  \"application/vnd.rim.cod\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cod\"]\n  },\n  \"application/vnd.rn-realmedia\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"rm\"]\n  },\n  \"application/vnd.rn-realmedia-vbr\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"rmvb\"]\n  },\n  \"application/vnd.route66.link66+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"link66\"]\n  },\n  \"application/vnd.rs-274x\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ruckus.download\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.s3sms\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sailingtracker.track\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"st\"]\n  },\n  \"application/vnd.sar\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sbm.cid\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sbm.mid2\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.scribus\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.3df\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.csf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.doc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.eml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.mht\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.net\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.ppt\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.tiff\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.xls\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealedmedia.softseal.html\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealedmedia.softseal.pdf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.seemail\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"see\"]\n  },\n  \"application/vnd.seis+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.sema\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sema\"]\n  },\n  \"application/vnd.semd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"semd\"]\n  },\n  \"application/vnd.semf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"semf\"]\n  },\n  \"application/vnd.shade-save-file\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.shana.informed.formdata\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ifm\"]\n  },\n  \"application/vnd.shana.informed.formtemplate\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"itp\"]\n  },\n  \"application/vnd.shana.informed.interchange\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"iif\"]\n  },\n  \"application/vnd.shana.informed.package\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ipk\"]\n  },\n  \"application/vnd.shootproof+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.shopkick+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.shp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.shx\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sigrok.session\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.simtech-mindmapper\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"twd\",\"twds\"]\n  },\n  \"application/vnd.siren+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.sketchometry\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.smaf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mmf\"]\n  },\n  \"application/vnd.smart.notebook\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.smart.teacher\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"teacher\"]\n  },\n  \"application/vnd.smintio.portals.archive\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.snesdev-page-table\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.software602.filler.form+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"fo\"]\n  },\n  \"application/vnd.software602.filler.form-xml-zip\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.solent.sdkm+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"sdkm\",\"sdkd\"]\n  },\n  \"application/vnd.spotfire.dxp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dxp\"]\n  },\n  \"application/vnd.spotfire.sfs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sfs\"]\n  },\n  \"application/vnd.sqlite3\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sss-cod\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sss-dtf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sss-ntf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.stardivision.calc\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sdc\"]\n  },\n  \"application/vnd.stardivision.draw\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sda\"]\n  },\n  \"application/vnd.stardivision.impress\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sdd\"]\n  },\n  \"application/vnd.stardivision.math\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"smf\"]\n  },\n  \"application/vnd.stardivision.writer\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sdw\",\"vor\"]\n  },\n  \"application/vnd.stardivision.writer-global\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sgl\"]\n  },\n  \"application/vnd.stepmania.package\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"smzip\"]\n  },\n  \"application/vnd.stepmania.stepchart\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sm\"]\n  },\n  \"application/vnd.street-stream\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sun.wadl+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wadl\"]\n  },\n  \"application/vnd.sun.xml.calc\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxc\"]\n  },\n  \"application/vnd.sun.xml.calc.template\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"stc\"]\n  },\n  \"application/vnd.sun.xml.draw\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxd\"]\n  },\n  \"application/vnd.sun.xml.draw.template\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"std\"]\n  },\n  \"application/vnd.sun.xml.impress\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxi\"]\n  },\n  \"application/vnd.sun.xml.impress.template\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sti\"]\n  },\n  \"application/vnd.sun.xml.math\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxm\"]\n  },\n  \"application/vnd.sun.xml.writer\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxw\"]\n  },\n  \"application/vnd.sun.xml.writer.global\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxg\"]\n  },\n  \"application/vnd.sun.xml.writer.template\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"stw\"]\n  },\n  \"application/vnd.sus-calendar\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sus\",\"susp\"]\n  },\n  \"application/vnd.svd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"svd\"]\n  },\n  \"application/vnd.swiftview-ics\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sybyl.mol2\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sycle+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.syft+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.symbian.install\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sis\",\"sisx\"]\n  },\n  \"application/vnd.syncml+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"xsm\"]\n  },\n  \"application/vnd.syncml.dm+wbxml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"extensions\": [\"bdm\"]\n  },\n  \"application/vnd.syncml.dm+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"xdm\"]\n  },\n  \"application/vnd.syncml.dm.notification\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.syncml.dmddf+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.syncml.dmddf+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"ddf\"]\n  },\n  \"application/vnd.syncml.dmtnds+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.syncml.dmtnds+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/vnd.syncml.ds.notification\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.tableschema+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.tao.intent-module-archive\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tao\"]\n  },\n  \"application/vnd.tcpdump.pcap\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pcap\",\"cap\",\"dmp\"]\n  },\n  \"application/vnd.think-cell.ppttc+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.tmd.mediaflex.api+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.tml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.tmobile-livetv\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tmo\"]\n  },\n  \"application/vnd.tri.onesource\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.trid.tpt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tpt\"]\n  },\n  \"application/vnd.triscape.mxs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mxs\"]\n  },\n  \"application/vnd.trueapp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tra\"]\n  },\n  \"application/vnd.truedoc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ubisoft.webplayer\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ufdl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ufd\",\"ufdl\"]\n  },\n  \"application/vnd.uic.osdm+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.uiq.theme\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"utz\"]\n  },\n  \"application/vnd.umajin\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"umj\"]\n  },\n  \"application/vnd.unity\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"unityweb\"]\n  },\n  \"application/vnd.uoml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"uoml\",\"uo\"]\n  },\n  \"application/vnd.uplanet.alert\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.alert-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.bearer-choice\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.bearer-choice-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.cacheop\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.cacheop-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.channel\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.channel-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.list\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.list-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.listcmd\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.listcmd-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.signal\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uri-map\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.valve.source.material\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vcx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vcx\"]\n  },\n  \"application/vnd.vd-study\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vectorworks\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vel+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.veraison.tsm-report+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.veraison.tsm-report+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.verimatrix.vcas\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.veritone.aion+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.veryant.thin\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ves.encrypted\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vidsoft.vidconference\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.visio\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vsd\",\"vst\",\"vss\",\"vsw\",\"vsdx\",\"vtx\"]\n  },\n  \"application/vnd.visionary\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vis\"]\n  },\n  \"application/vnd.vividence.scriptfile\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vocalshaper.vsp4\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vsf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vsf\"]\n  },\n  \"application/vnd.wap.sic\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wap.slc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wap.wbxml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"extensions\": [\"wbxml\"]\n  },\n  \"application/vnd.wap.wmlc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wmlc\"]\n  },\n  \"application/vnd.wap.wmlscriptc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wmlsc\"]\n  },\n  \"application/vnd.wasmflow.wafl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.webturbo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wtb\"]\n  },\n  \"application/vnd.wfa.dpp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wfa.p2p\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wfa.wsc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.windows.devicepairing\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wmc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wmf.bootstrap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wolfram.mathematica\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wolfram.mathematica.package\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wolfram.player\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nbp\"]\n  },\n  \"application/vnd.wordlift\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wordperfect\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wpd\"]\n  },\n  \"application/vnd.wqd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wqd\"]\n  },\n  \"application/vnd.wrq-hp3000-labelled\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wt.stf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"stf\"]\n  },\n  \"application/vnd.wv.csp+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wv.csp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.wv.ssp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.xacml+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.xara\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xar\"]\n  },\n  \"application/vnd.xarin.cpj\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xecrets-encrypted\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xfdl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xfdl\"]\n  },\n  \"application/vnd.xfdl.webform\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xmi+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.xmpie.cpkg\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xmpie.dpkg\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xmpie.plan\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xmpie.ppkg\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xmpie.xlim\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.yamaha.hv-dic\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hvd\"]\n  },\n  \"application/vnd.yamaha.hv-script\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hvs\"]\n  },\n  \"application/vnd.yamaha.hv-voice\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hvp\"]\n  },\n  \"application/vnd.yamaha.openscoreformat\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"osf\"]\n  },\n  \"application/vnd.yamaha.openscoreformat.osfpvg+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"osfpvg\"]\n  },\n  \"application/vnd.yamaha.remote-setup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.yamaha.smaf-audio\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"saf\"]\n  },\n  \"application/vnd.yamaha.smaf-phrase\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"spf\"]\n  },\n  \"application/vnd.yamaha.through-ngn\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.yamaha.tunnel-udpencap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.yaoweme\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.yellowriver-custom-menu\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cmp\"]\n  },\n  \"application/vnd.zul\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"zir\",\"zirz\"]\n  },\n  \"application/vnd.zzazz.deck+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"zaz\"]\n  },\n  \"application/voicexml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"vxml\"]\n  },\n  \"application/voucher-cms+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/voucher-jws+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vp+cose\": {\n    \"source\": \"iana\"\n  },\n  \"application/vp+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/vq-rtcpxr\": {\n    \"source\": \"iana\"\n  },\n  \"application/wasm\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wasm\"]\n  },\n  \"application/watcherinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wif\"]\n  },\n  \"application/webpush-options+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/whoispp-query\": {\n    \"source\": \"iana\"\n  },\n  \"application/whoispp-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/widget\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wgt\"]\n  },\n  \"application/winhlp\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"hlp\"]\n  },\n  \"application/wita\": {\n    \"source\": \"iana\"\n  },\n  \"application/wordperfect5.1\": {\n    \"source\": \"iana\"\n  },\n  \"application/wsdl+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wsdl\"]\n  },\n  \"application/wspolicy+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wspolicy\"]\n  },\n  \"application/x-7z-compressed\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"7z\"]\n  },\n  \"application/x-abiword\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"abw\"]\n  },\n  \"application/x-ace-compressed\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ace\"]\n  },\n  \"application/x-amf\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-apple-diskimage\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"dmg\"]\n  },\n  \"application/x-arj\": {\n    \"compressible\": false,\n    \"extensions\": [\"arj\"]\n  },\n  \"application/x-authorware-bin\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"aab\",\"x32\",\"u32\",\"vox\"]\n  },\n  \"application/x-authorware-map\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"aam\"]\n  },\n  \"application/x-authorware-seg\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"aas\"]\n  },\n  \"application/x-bcpio\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"bcpio\"]\n  },\n  \"application/x-bdoc\": {\n    \"compressible\": false,\n    \"extensions\": [\"bdoc\"]\n  },\n  \"application/x-bittorrent\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"torrent\"]\n  },\n  \"application/x-blender\": {\n    \"extensions\": [\"blend\"]\n  },\n  \"application/x-blorb\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"blb\",\"blorb\"]\n  },\n  \"application/x-bzip\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"bz\"]\n  },\n  \"application/x-bzip2\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"bz2\",\"boz\"]\n  },\n  \"application/x-cbr\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cbr\",\"cba\",\"cbt\",\"cbz\",\"cb7\"]\n  },\n  \"application/x-cdlink\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"vcd\"]\n  },\n  \"application/x-cfs-compressed\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cfs\"]\n  },\n  \"application/x-chat\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"chat\"]\n  },\n  \"application/x-chess-pgn\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pgn\"]\n  },\n  \"application/x-chrome-extension\": {\n    \"extensions\": [\"crx\"]\n  },\n  \"application/x-cocoa\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"cco\"]\n  },\n  \"application/x-compress\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-compressed\": {\n    \"extensions\": [\"rar\"]\n  },\n  \"application/x-conference\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"nsc\"]\n  },\n  \"application/x-cpio\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cpio\"]\n  },\n  \"application/x-csh\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"csh\"]\n  },\n  \"application/x-deb\": {\n    \"compressible\": false\n  },\n  \"application/x-debian-package\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"deb\",\"udeb\"]\n  },\n  \"application/x-dgc-compressed\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"dgc\"]\n  },\n  \"application/x-director\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"dir\",\"dcr\",\"dxr\",\"cst\",\"cct\",\"cxt\",\"w3d\",\"fgd\",\"swa\"]\n  },\n  \"application/x-doom\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wad\"]\n  },\n  \"application/x-dtbncx+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"ncx\"]\n  },\n  \"application/x-dtbook+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"dtb\"]\n  },\n  \"application/x-dtbresource+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"res\"]\n  },\n  \"application/x-dvi\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"dvi\"]\n  },\n  \"application/x-envoy\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"evy\"]\n  },\n  \"application/x-eva\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"eva\"]\n  },\n  \"application/x-font-bdf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"bdf\"]\n  },\n  \"application/x-font-dos\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-font-framemaker\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-font-ghostscript\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gsf\"]\n  },\n  \"application/x-font-libgrx\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-font-linux-psf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"psf\"]\n  },\n  \"application/x-font-pcf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pcf\"]\n  },\n  \"application/x-font-snf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"snf\"]\n  },\n  \"application/x-font-speedo\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-font-sunos-news\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-font-type1\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pfa\",\"pfb\",\"pfm\",\"afm\"]\n  },\n  \"application/x-font-vfont\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-freearc\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"arc\"]\n  },\n  \"application/x-futuresplash\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"spl\"]\n  },\n  \"application/x-gca-compressed\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gca\"]\n  },\n  \"application/x-glulx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ulx\"]\n  },\n  \"application/x-gnumeric\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gnumeric\"]\n  },\n  \"application/x-gramps-xml\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gramps\"]\n  },\n  \"application/x-gtar\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gtar\"]\n  },\n  \"application/x-gzip\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-hdf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"hdf\"]\n  },\n  \"application/x-httpd-php\": {\n    \"compressible\": true,\n    \"extensions\": [\"php\"]\n  },\n  \"application/x-install-instructions\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"install\"]\n  },\n  \"application/x-ipynb+json\": {\n    \"compressible\": true,\n    \"extensions\": [\"ipynb\"]\n  },\n  \"application/x-iso9660-image\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"iso\"]\n  },\n  \"application/x-iwork-keynote-sffkey\": {\n    \"extensions\": [\"key\"]\n  },\n  \"application/x-iwork-numbers-sffnumbers\": {\n    \"extensions\": [\"numbers\"]\n  },\n  \"application/x-iwork-pages-sffpages\": {\n    \"extensions\": [\"pages\"]\n  },\n  \"application/x-java-archive-diff\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"jardiff\"]\n  },\n  \"application/x-java-jnlp-file\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"jnlp\"]\n  },\n  \"application/x-javascript\": {\n    \"compressible\": true\n  },\n  \"application/x-keepass2\": {\n    \"extensions\": [\"kdbx\"]\n  },\n  \"application/x-latex\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"latex\"]\n  },\n  \"application/x-lua-bytecode\": {\n    \"extensions\": [\"luac\"]\n  },\n  \"application/x-lzh-compressed\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"lzh\",\"lha\"]\n  },\n  \"application/x-makeself\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"run\"]\n  },\n  \"application/x-mie\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mie\"]\n  },\n  \"application/x-mobipocket-ebook\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"prc\",\"mobi\"]\n  },\n  \"application/x-mpegurl\": {\n    \"compressible\": false\n  },\n  \"application/x-ms-application\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"application\"]\n  },\n  \"application/x-ms-shortcut\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"lnk\"]\n  },\n  \"application/x-ms-wmd\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wmd\"]\n  },\n  \"application/x-ms-wmz\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wmz\"]\n  },\n  \"application/x-ms-xbap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xbap\"]\n  },\n  \"application/x-msaccess\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mdb\"]\n  },\n  \"application/x-msbinder\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"obd\"]\n  },\n  \"application/x-mscardfile\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"crd\"]\n  },\n  \"application/x-msclip\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"clp\"]\n  },\n  \"application/x-msdos-program\": {\n    \"extensions\": [\"exe\"]\n  },\n  \"application/x-msdownload\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"exe\",\"dll\",\"com\",\"bat\",\"msi\"]\n  },\n  \"application/x-msmediaview\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mvb\",\"m13\",\"m14\"]\n  },\n  \"application/x-msmetafile\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wmf\",\"wmz\",\"emf\",\"emz\"]\n  },\n  \"application/x-msmoney\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mny\"]\n  },\n  \"application/x-mspublisher\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pub\"]\n  },\n  \"application/x-msschedule\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"scd\"]\n  },\n  \"application/x-msterminal\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"trm\"]\n  },\n  \"application/x-mswrite\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wri\"]\n  },\n  \"application/x-netcdf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"nc\",\"cdf\"]\n  },\n  \"application/x-ns-proxy-autoconfig\": {\n    \"compressible\": true,\n    \"extensions\": [\"pac\"]\n  },\n  \"application/x-nzb\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"nzb\"]\n  },\n  \"application/x-perl\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"pl\",\"pm\"]\n  },\n  \"application/x-pilot\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"prc\",\"pdb\"]\n  },\n  \"application/x-pkcs12\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"p12\",\"pfx\"]\n  },\n  \"application/x-pkcs7-certificates\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"p7b\",\"spc\"]\n  },\n  \"application/x-pkcs7-certreqresp\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"p7r\"]\n  },\n  \"application/x-pki-message\": {\n    \"source\": \"iana\"\n  },\n  \"application/x-rar-compressed\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"rar\"]\n  },\n  \"application/x-redhat-package-manager\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"rpm\"]\n  },\n  \"application/x-research-info-systems\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ris\"]\n  },\n  \"application/x-sea\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"sea\"]\n  },\n  \"application/x-sh\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"sh\"]\n  },\n  \"application/x-shar\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"shar\"]\n  },\n  \"application/x-shockwave-flash\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"swf\"]\n  },\n  \"application/x-silverlight-app\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xap\"]\n  },\n  \"application/x-sql\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sql\"]\n  },\n  \"application/x-stuffit\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"sit\"]\n  },\n  \"application/x-stuffitx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sitx\"]\n  },\n  \"application/x-subrip\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"srt\"]\n  },\n  \"application/x-sv4cpio\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sv4cpio\"]\n  },\n  \"application/x-sv4crc\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sv4crc\"]\n  },\n  \"application/x-t3vm-image\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"t3\"]\n  },\n  \"application/x-tads\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gam\"]\n  },\n  \"application/x-tar\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"tar\"]\n  },\n  \"application/x-tcl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"tcl\",\"tk\"]\n  },\n  \"application/x-tex\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"tex\"]\n  },\n  \"application/x-tex-tfm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"tfm\"]\n  },\n  \"application/x-texinfo\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"texinfo\",\"texi\"]\n  },\n  \"application/x-tgif\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"obj\"]\n  },\n  \"application/x-ustar\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ustar\"]\n  },\n  \"application/x-virtualbox-hdd\": {\n    \"compressible\": true,\n    \"extensions\": [\"hdd\"]\n  },\n  \"application/x-virtualbox-ova\": {\n    \"compressible\": true,\n    \"extensions\": [\"ova\"]\n  },\n  \"application/x-virtualbox-ovf\": {\n    \"compressible\": true,\n    \"extensions\": [\"ovf\"]\n  },\n  \"application/x-virtualbox-vbox\": {\n    \"compressible\": true,\n    \"extensions\": [\"vbox\"]\n  },\n  \"application/x-virtualbox-vbox-extpack\": {\n    \"compressible\": false,\n    \"extensions\": [\"vbox-extpack\"]\n  },\n  \"application/x-virtualbox-vdi\": {\n    \"compressible\": true,\n    \"extensions\": [\"vdi\"]\n  },\n  \"application/x-virtualbox-vhd\": {\n    \"compressible\": true,\n    \"extensions\": [\"vhd\"]\n  },\n  \"application/x-virtualbox-vmdk\": {\n    \"compressible\": true,\n    \"extensions\": [\"vmdk\"]\n  },\n  \"application/x-wais-source\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"src\"]\n  },\n  \"application/x-web-app-manifest+json\": {\n    \"compressible\": true,\n    \"extensions\": [\"webapp\"]\n  },\n  \"application/x-www-form-urlencoded\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/x-x509-ca-cert\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"der\",\"crt\",\"pem\"]\n  },\n  \"application/x-x509-ca-ra-cert\": {\n    \"source\": \"iana\"\n  },\n  \"application/x-x509-next-ca-cert\": {\n    \"source\": \"iana\"\n  },\n  \"application/x-xfig\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"fig\"]\n  },\n  \"application/x-xliff+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"xlf\"]\n  },\n  \"application/x-xpinstall\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"xpi\"]\n  },\n  \"application/x-xz\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xz\"]\n  },\n  \"application/x-zip-compressed\": {\n    \"extensions\": [\"zip\"]\n  },\n  \"application/x-zmachine\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"z1\",\"z2\",\"z3\",\"z4\",\"z5\",\"z6\",\"z7\",\"z8\"]\n  },\n  \"application/x400-bp\": {\n    \"source\": \"iana\"\n  },\n  \"application/xacml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xaml+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"xaml\"]\n  },\n  \"application/xcap-att+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xav\"]\n  },\n  \"application/xcap-caps+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xca\"]\n  },\n  \"application/xcap-diff+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xdf\"]\n  },\n  \"application/xcap-el+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xel\"]\n  },\n  \"application/xcap-error+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xcap-ns+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xns\"]\n  },\n  \"application/xcon-conference-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xcon-conference-info-diff+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xenc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xenc\"]\n  },\n  \"application/xfdf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xfdf\"]\n  },\n  \"application/xhtml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xhtml\",\"xht\"]\n  },\n  \"application/xhtml-voice+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/xliff+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xlf\"]\n  },\n  \"application/xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xml\",\"xsl\",\"xsd\",\"rng\"]\n  },\n  \"application/xml-dtd\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dtd\"]\n  },\n  \"application/xml-external-parsed-entity\": {\n    \"source\": \"iana\"\n  },\n  \"application/xml-patch+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xmpp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xop+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xop\"]\n  },\n  \"application/xproc+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"xpl\"]\n  },\n  \"application/xslt+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xsl\",\"xslt\"]\n  },\n  \"application/xspf+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"xspf\"]\n  },\n  \"application/xv+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mxml\",\"xhvml\",\"xvml\",\"xvm\"]\n  },\n  \"application/yaml\": {\n    \"source\": \"iana\"\n  },\n  \"application/yang\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"yang\"]\n  },\n  \"application/yang-data+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/yang-data+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/yang-data+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/yang-patch+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/yang-patch+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/yang-sid+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/yin+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"yin\"]\n  },\n  \"application/zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"zip\"]\n  },\n  \"application/zip+dotlottie\": {\n    \"extensions\": [\"lottie\"]\n  },\n  \"application/zlib\": {\n    \"source\": \"iana\"\n  },\n  \"application/zstd\": {\n    \"source\": \"iana\"\n  },\n  \"audio/1d-interleaved-parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"audio/32kadpcm\": {\n    \"source\": \"iana\"\n  },\n  \"audio/3gpp\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"3gpp\"]\n  },\n  \"audio/3gpp2\": {\n    \"source\": \"iana\"\n  },\n  \"audio/aac\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"adts\",\"aac\"]\n  },\n  \"audio/ac3\": {\n    \"source\": \"iana\"\n  },\n  \"audio/adpcm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"adp\"]\n  },\n  \"audio/amr\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"amr\"]\n  },\n  \"audio/amr-wb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/amr-wb+\": {\n    \"source\": \"iana\"\n  },\n  \"audio/aptx\": {\n    \"source\": \"iana\"\n  },\n  \"audio/asc\": {\n    \"source\": \"iana\"\n  },\n  \"audio/atrac-advanced-lossless\": {\n    \"source\": \"iana\"\n  },\n  \"audio/atrac-x\": {\n    \"source\": \"iana\"\n  },\n  \"audio/atrac3\": {\n    \"source\": \"iana\"\n  },\n  \"audio/basic\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"au\",\"snd\"]\n  },\n  \"audio/bv16\": {\n    \"source\": \"iana\"\n  },\n  \"audio/bv32\": {\n    \"source\": \"iana\"\n  },\n  \"audio/clearmode\": {\n    \"source\": \"iana\"\n  },\n  \"audio/cn\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dat12\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dls\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dsr-es201108\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dsr-es202050\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dsr-es202211\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dsr-es202212\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dv\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dvi4\": {\n    \"source\": \"iana\"\n  },\n  \"audio/eac3\": {\n    \"source\": \"iana\"\n  },\n  \"audio/encaprtp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrc\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrc-qcp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrc0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrc1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcb0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcb1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcnw\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcnw0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcnw1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcwb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcwb0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcwb1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evs\": {\n    \"source\": \"iana\"\n  },\n  \"audio/flac\": {\n    \"source\": \"iana\"\n  },\n  \"audio/flexfec\": {\n    \"source\": \"iana\"\n  },\n  \"audio/fwdred\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g711-0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g719\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g722\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g7221\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g723\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g726-16\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g726-24\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g726-32\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g726-40\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g728\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g729\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g7291\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g729d\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g729e\": {\n    \"source\": \"iana\"\n  },\n  \"audio/gsm\": {\n    \"source\": \"iana\"\n  },\n  \"audio/gsm-efr\": {\n    \"source\": \"iana\"\n  },\n  \"audio/gsm-hr-08\": {\n    \"source\": \"iana\"\n  },\n  \"audio/ilbc\": {\n    \"source\": \"iana\"\n  },\n  \"audio/ip-mr_v2.5\": {\n    \"source\": \"iana\"\n  },\n  \"audio/isac\": {\n    \"source\": \"apache\"\n  },\n  \"audio/l16\": {\n    \"source\": \"iana\"\n  },\n  \"audio/l20\": {\n    \"source\": \"iana\"\n  },\n  \"audio/l24\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"audio/l8\": {\n    \"source\": \"iana\"\n  },\n  \"audio/lpc\": {\n    \"source\": \"iana\"\n  },\n  \"audio/matroska\": {\n    \"source\": \"iana\"\n  },\n  \"audio/melp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/melp1200\": {\n    \"source\": \"iana\"\n  },\n  \"audio/melp2400\": {\n    \"source\": \"iana\"\n  },\n  \"audio/melp600\": {\n    \"source\": \"iana\"\n  },\n  \"audio/mhas\": {\n    \"source\": \"iana\"\n  },\n  \"audio/midi\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mid\",\"midi\",\"kar\",\"rmi\"]\n  },\n  \"audio/midi-clip\": {\n    \"source\": \"iana\"\n  },\n  \"audio/mobile-xmf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mxmf\"]\n  },\n  \"audio/mp3\": {\n    \"compressible\": false,\n    \"extensions\": [\"mp3\"]\n  },\n  \"audio/mp4\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"m4a\",\"mp4a\",\"m4b\"]\n  },\n  \"audio/mp4a-latm\": {\n    \"source\": \"iana\"\n  },\n  \"audio/mpa\": {\n    \"source\": \"iana\"\n  },\n  \"audio/mpa-robust\": {\n    \"source\": \"iana\"\n  },\n  \"audio/mpeg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"mpga\",\"mp2\",\"mp2a\",\"mp3\",\"m2a\",\"m3a\"]\n  },\n  \"audio/mpeg4-generic\": {\n    \"source\": \"iana\"\n  },\n  \"audio/musepack\": {\n    \"source\": \"apache\"\n  },\n  \"audio/ogg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"oga\",\"ogg\",\"spx\",\"opus\"]\n  },\n  \"audio/opus\": {\n    \"source\": \"iana\"\n  },\n  \"audio/parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"audio/pcma\": {\n    \"source\": \"iana\"\n  },\n  \"audio/pcma-wb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/pcmu\": {\n    \"source\": \"iana\"\n  },\n  \"audio/pcmu-wb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/prs.sid\": {\n    \"source\": \"iana\"\n  },\n  \"audio/qcelp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/raptorfec\": {\n    \"source\": \"iana\"\n  },\n  \"audio/red\": {\n    \"source\": \"iana\"\n  },\n  \"audio/rtp-enc-aescm128\": {\n    \"source\": \"iana\"\n  },\n  \"audio/rtp-midi\": {\n    \"source\": \"iana\"\n  },\n  \"audio/rtploopback\": {\n    \"source\": \"iana\"\n  },\n  \"audio/rtx\": {\n    \"source\": \"iana\"\n  },\n  \"audio/s3m\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"s3m\"]\n  },\n  \"audio/scip\": {\n    \"source\": \"iana\"\n  },\n  \"audio/silk\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sil\"]\n  },\n  \"audio/smv\": {\n    \"source\": \"iana\"\n  },\n  \"audio/smv-qcp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/smv0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/sofa\": {\n    \"source\": \"iana\"\n  },\n  \"audio/sp-midi\": {\n    \"source\": \"iana\"\n  },\n  \"audio/speex\": {\n    \"source\": \"iana\"\n  },\n  \"audio/t140c\": {\n    \"source\": \"iana\"\n  },\n  \"audio/t38\": {\n    \"source\": \"iana\"\n  },\n  \"audio/telephone-event\": {\n    \"source\": \"iana\"\n  },\n  \"audio/tetra_acelp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/tetra_acelp_bb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/tone\": {\n    \"source\": \"iana\"\n  },\n  \"audio/tsvcis\": {\n    \"source\": \"iana\"\n  },\n  \"audio/uemclip\": {\n    \"source\": \"iana\"\n  },\n  \"audio/ulpfec\": {\n    \"source\": \"iana\"\n  },\n  \"audio/usac\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vdvi\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vmr-wb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.3gpp.iufp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.4sb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.audiokoz\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.celp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.cisco.nse\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.cmles.radio-events\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.cns.anp1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.cns.inf1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dece.audio\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uva\",\"uvva\"]\n  },\n  \"audio/vnd.digital-winds\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"eol\"]\n  },\n  \"audio/vnd.dlna.adts\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.heaac.1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.heaac.2\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.mlp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.mps\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.pl2\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.pl2x\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.pl2z\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.pulse.1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dra\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dra\"]\n  },\n  \"audio/vnd.dts\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dts\"]\n  },\n  \"audio/vnd.dts.hd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dtshd\"]\n  },\n  \"audio/vnd.dts.uhd\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dvb.file\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.everad.plj\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.hns.audio\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.lucent.voice\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"lvp\"]\n  },\n  \"audio/vnd.ms-playready.media.pya\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pya\"]\n  },\n  \"audio/vnd.nokia.mobile-xmf\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.nortel.vbk\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.nuera.ecelp4800\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ecelp4800\"]\n  },\n  \"audio/vnd.nuera.ecelp7470\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ecelp7470\"]\n  },\n  \"audio/vnd.nuera.ecelp9600\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ecelp9600\"]\n  },\n  \"audio/vnd.octel.sbc\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.presonus.multitrack\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.qcelp\": {\n    \"source\": \"apache\"\n  },\n  \"audio/vnd.rhetorex.32kadpcm\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.rip\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rip\"]\n  },\n  \"audio/vnd.rn-realaudio\": {\n    \"compressible\": false\n  },\n  \"audio/vnd.sealedmedia.softseal.mpeg\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.vmx.cvsd\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.wave\": {\n    \"compressible\": false\n  },\n  \"audio/vorbis\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"audio/vorbis-config\": {\n    \"source\": \"iana\"\n  },\n  \"audio/wav\": {\n    \"compressible\": false,\n    \"extensions\": [\"wav\"]\n  },\n  \"audio/wave\": {\n    \"compressible\": false,\n    \"extensions\": [\"wav\"]\n  },\n  \"audio/webm\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"weba\"]\n  },\n  \"audio/x-aac\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"aac\"]\n  },\n  \"audio/x-aiff\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"aif\",\"aiff\",\"aifc\"]\n  },\n  \"audio/x-caf\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"caf\"]\n  },\n  \"audio/x-flac\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"flac\"]\n  },\n  \"audio/x-m4a\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"m4a\"]\n  },\n  \"audio/x-matroska\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mka\"]\n  },\n  \"audio/x-mpegurl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"m3u\"]\n  },\n  \"audio/x-ms-wax\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wax\"]\n  },\n  \"audio/x-ms-wma\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wma\"]\n  },\n  \"audio/x-pn-realaudio\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ram\",\"ra\"]\n  },\n  \"audio/x-pn-realaudio-plugin\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"rmp\"]\n  },\n  \"audio/x-realaudio\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"ra\"]\n  },\n  \"audio/x-tta\": {\n    \"source\": \"apache\"\n  },\n  \"audio/x-wav\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wav\"]\n  },\n  \"audio/xm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xm\"]\n  },\n  \"chemical/x-cdx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cdx\"]\n  },\n  \"chemical/x-cif\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cif\"]\n  },\n  \"chemical/x-cmdf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cmdf\"]\n  },\n  \"chemical/x-cml\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cml\"]\n  },\n  \"chemical/x-csml\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"csml\"]\n  },\n  \"chemical/x-pdb\": {\n    \"source\": \"apache\"\n  },\n  \"chemical/x-xyz\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xyz\"]\n  },\n  \"font/collection\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ttc\"]\n  },\n  \"font/otf\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"otf\"]\n  },\n  \"font/sfnt\": {\n    \"source\": \"iana\"\n  },\n  \"font/ttf\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ttf\"]\n  },\n  \"font/woff\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"woff\"]\n  },\n  \"font/woff2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"woff2\"]\n  },\n  \"image/aces\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"exr\"]\n  },\n  \"image/apng\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"apng\"]\n  },\n  \"image/avci\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"avci\"]\n  },\n  \"image/avcs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"avcs\"]\n  },\n  \"image/avif\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"avif\"]\n  },\n  \"image/bmp\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"bmp\",\"dib\"]\n  },\n  \"image/cgm\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cgm\"]\n  },\n  \"image/dicom-rle\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"drle\"]\n  },\n  \"image/dpx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dpx\"]\n  },\n  \"image/emf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"emf\"]\n  },\n  \"image/fits\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fits\"]\n  },\n  \"image/g3fax\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"g3\"]\n  },\n  \"image/gif\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"gif\"]\n  },\n  \"image/heic\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"heic\"]\n  },\n  \"image/heic-sequence\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"heics\"]\n  },\n  \"image/heif\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"heif\"]\n  },\n  \"image/heif-sequence\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"heifs\"]\n  },\n  \"image/hej2k\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hej2\"]\n  },\n  \"image/ief\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ief\"]\n  },\n  \"image/j2c\": {\n    \"source\": \"iana\"\n  },\n  \"image/jaii\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jaii\"]\n  },\n  \"image/jais\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jais\"]\n  },\n  \"image/jls\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jls\"]\n  },\n  \"image/jp2\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"jp2\",\"jpg2\"]\n  },\n  \"image/jpeg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"jpg\",\"jpeg\",\"jpe\"]\n  },\n  \"image/jph\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jph\"]\n  },\n  \"image/jphc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jhc\"]\n  },\n  \"image/jpm\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"jpm\",\"jpgm\"]\n  },\n  \"image/jpx\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"jpx\",\"jpf\"]\n  },\n  \"image/jxl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxl\"]\n  },\n  \"image/jxr\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxr\"]\n  },\n  \"image/jxra\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxra\"]\n  },\n  \"image/jxrs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxrs\"]\n  },\n  \"image/jxs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxs\"]\n  },\n  \"image/jxsc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxsc\"]\n  },\n  \"image/jxsi\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxsi\"]\n  },\n  \"image/jxss\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxss\"]\n  },\n  \"image/ktx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ktx\"]\n  },\n  \"image/ktx2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ktx2\"]\n  },\n  \"image/naplps\": {\n    \"source\": \"iana\"\n  },\n  \"image/pjpeg\": {\n    \"compressible\": false,\n    \"extensions\": [\"jfif\"]\n  },\n  \"image/png\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"png\"]\n  },\n  \"image/prs.btif\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"btif\",\"btf\"]\n  },\n  \"image/prs.pti\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pti\"]\n  },\n  \"image/pwg-raster\": {\n    \"source\": \"iana\"\n  },\n  \"image/sgi\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sgi\"]\n  },\n  \"image/svg+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"svg\",\"svgz\"]\n  },\n  \"image/t38\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"t38\"]\n  },\n  \"image/tiff\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"tif\",\"tiff\"]\n  },\n  \"image/tiff-fx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tfx\"]\n  },\n  \"image/vnd.adobe.photoshop\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"psd\"]\n  },\n  \"image/vnd.airzip.accelerator.azv\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"azv\"]\n  },\n  \"image/vnd.clip\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.cns.inf2\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.dece.graphic\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvi\",\"uvvi\",\"uvg\",\"uvvg\"]\n  },\n  \"image/vnd.djvu\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"djvu\",\"djv\"]\n  },\n  \"image/vnd.dvb.subtitle\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sub\"]\n  },\n  \"image/vnd.dwg\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dwg\"]\n  },\n  \"image/vnd.dxf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dxf\"]\n  },\n  \"image/vnd.fastbidsheet\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fbs\"]\n  },\n  \"image/vnd.fpx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fpx\"]\n  },\n  \"image/vnd.fst\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fst\"]\n  },\n  \"image/vnd.fujixerox.edmics-mmr\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mmr\"]\n  },\n  \"image/vnd.fujixerox.edmics-rlc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rlc\"]\n  },\n  \"image/vnd.globalgraphics.pgb\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.microsoft.icon\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ico\"]\n  },\n  \"image/vnd.mix\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.mozilla.apng\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.ms-dds\": {\n    \"compressible\": true,\n    \"extensions\": [\"dds\"]\n  },\n  \"image/vnd.ms-modi\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mdi\"]\n  },\n  \"image/vnd.ms-photo\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wdp\"]\n  },\n  \"image/vnd.net-fpx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"npx\"]\n  },\n  \"image/vnd.pco.b16\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"b16\"]\n  },\n  \"image/vnd.radiance\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.sealed.png\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.sealedmedia.softseal.gif\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.sealedmedia.softseal.jpg\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.svf\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.tencent.tap\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tap\"]\n  },\n  \"image/vnd.valve.source.texture\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vtf\"]\n  },\n  \"image/vnd.wap.wbmp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wbmp\"]\n  },\n  \"image/vnd.xiff\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xif\"]\n  },\n  \"image/vnd.zbrush.pcx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pcx\"]\n  },\n  \"image/webp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"webp\"]\n  },\n  \"image/wmf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wmf\"]\n  },\n  \"image/x-3ds\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"3ds\"]\n  },\n  \"image/x-adobe-dng\": {\n    \"extensions\": [\"dng\"]\n  },\n  \"image/x-cmu-raster\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ras\"]\n  },\n  \"image/x-cmx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cmx\"]\n  },\n  \"image/x-emf\": {\n    \"source\": \"iana\"\n  },\n  \"image/x-freehand\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"fh\",\"fhc\",\"fh4\",\"fh5\",\"fh7\"]\n  },\n  \"image/x-icon\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"ico\"]\n  },\n  \"image/x-jng\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"jng\"]\n  },\n  \"image/x-mrsid-image\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sid\"]\n  },\n  \"image/x-ms-bmp\": {\n    \"source\": \"nginx\",\n    \"compressible\": true,\n    \"extensions\": [\"bmp\"]\n  },\n  \"image/x-pcx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pcx\"]\n  },\n  \"image/x-pict\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pic\",\"pct\"]\n  },\n  \"image/x-portable-anymap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pnm\"]\n  },\n  \"image/x-portable-bitmap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pbm\"]\n  },\n  \"image/x-portable-graymap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pgm\"]\n  },\n  \"image/x-portable-pixmap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ppm\"]\n  },\n  \"image/x-rgb\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"rgb\"]\n  },\n  \"image/x-tga\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"tga\"]\n  },\n  \"image/x-wmf\": {\n    \"source\": \"iana\"\n  },\n  \"image/x-xbitmap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xbm\"]\n  },\n  \"image/x-xcf\": {\n    \"compressible\": false\n  },\n  \"image/x-xpixmap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xpm\"]\n  },\n  \"image/x-xwindowdump\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xwd\"]\n  },\n  \"message/bhttp\": {\n    \"source\": \"iana\"\n  },\n  \"message/cpim\": {\n    \"source\": \"iana\"\n  },\n  \"message/delivery-status\": {\n    \"source\": \"iana\"\n  },\n  \"message/disposition-notification\": {\n    \"source\": \"iana\",\n    \"extensions\": [\n      \"disposition-notification\"\n    ]\n  },\n  \"message/external-body\": {\n    \"source\": \"iana\"\n  },\n  \"message/feedback-report\": {\n    \"source\": \"iana\"\n  },\n  \"message/global\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"u8msg\"]\n  },\n  \"message/global-delivery-status\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"u8dsn\"]\n  },\n  \"message/global-disposition-notification\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"u8mdn\"]\n  },\n  \"message/global-headers\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"u8hdr\"]\n  },\n  \"message/http\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"message/imdn+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"message/mls\": {\n    \"source\": \"iana\"\n  },\n  \"message/news\": {\n    \"source\": \"apache\"\n  },\n  \"message/ohttp-req\": {\n    \"source\": \"iana\"\n  },\n  \"message/ohttp-res\": {\n    \"source\": \"iana\"\n  },\n  \"message/partial\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"message/rfc822\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"eml\",\"mime\",\"mht\",\"mhtml\"]\n  },\n  \"message/s-http\": {\n    \"source\": \"apache\"\n  },\n  \"message/sip\": {\n    \"source\": \"iana\"\n  },\n  \"message/sipfrag\": {\n    \"source\": \"iana\"\n  },\n  \"message/tracking-status\": {\n    \"source\": \"iana\"\n  },\n  \"message/vnd.si.simp\": {\n    \"source\": \"apache\"\n  },\n  \"message/vnd.wfa.wsc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wsc\"]\n  },\n  \"model/3mf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"3mf\"]\n  },\n  \"model/e57\": {\n    \"source\": \"iana\"\n  },\n  \"model/gltf+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"gltf\"]\n  },\n  \"model/gltf-binary\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"glb\"]\n  },\n  \"model/iges\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"igs\",\"iges\"]\n  },\n  \"model/jt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jt\"]\n  },\n  \"model/mesh\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"msh\",\"mesh\",\"silo\"]\n  },\n  \"model/mtl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mtl\"]\n  },\n  \"model/obj\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"obj\"]\n  },\n  \"model/prc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"prc\"]\n  },\n  \"model/step\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"step\",\"stp\",\"stpnc\",\"p21\",\"210\"]\n  },\n  \"model/step+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"stpx\"]\n  },\n  \"model/step+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"stpz\"]\n  },\n  \"model/step-xml+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"stpxz\"]\n  },\n  \"model/stl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"stl\"]\n  },\n  \"model/u3d\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"u3d\"]\n  },\n  \"model/vnd.bary\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"bary\"]\n  },\n  \"model/vnd.cld\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cld\"]\n  },\n  \"model/vnd.collada+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dae\"]\n  },\n  \"model/vnd.dwf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dwf\"]\n  },\n  \"model/vnd.flatland.3dml\": {\n    \"source\": \"iana\"\n  },\n  \"model/vnd.gdl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gdl\"]\n  },\n  \"model/vnd.gs-gdl\": {\n    \"source\": \"apache\"\n  },\n  \"model/vnd.gs.gdl\": {\n    \"source\": \"iana\"\n  },\n  \"model/vnd.gtw\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gtw\"]\n  },\n  \"model/vnd.moml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"model/vnd.mts\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mts\"]\n  },\n  \"model/vnd.opengex\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ogex\"]\n  },\n  \"model/vnd.parasolid.transmit.binary\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"x_b\"]\n  },\n  \"model/vnd.parasolid.transmit.text\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"x_t\"]\n  },\n  \"model/vnd.pytha.pyox\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pyo\",\"pyox\"]\n  },\n  \"model/vnd.rosette.annotated-data-model\": {\n    \"source\": \"iana\"\n  },\n  \"model/vnd.sap.vds\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vds\"]\n  },\n  \"model/vnd.usda\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"usda\"]\n  },\n  \"model/vnd.usdz+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"usdz\"]\n  },\n  \"model/vnd.valve.source.compiled-map\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"bsp\"]\n  },\n  \"model/vnd.vtu\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vtu\"]\n  },\n  \"model/vrml\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"wrl\",\"vrml\"]\n  },\n  \"model/x3d+binary\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"x3db\",\"x3dbz\"]\n  },\n  \"model/x3d+fastinfoset\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"x3db\"]\n  },\n  \"model/x3d+vrml\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"x3dv\",\"x3dvz\"]\n  },\n  \"model/x3d+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"x3d\",\"x3dz\"]\n  },\n  \"model/x3d-vrml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"x3dv\"]\n  },\n  \"multipart/alternative\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"multipart/appledouble\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/byteranges\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/digest\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/encrypted\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"multipart/form-data\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"multipart/header-set\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/mixed\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/multilingual\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/parallel\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/related\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"multipart/report\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/signed\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"multipart/vnd.bint.med-plus\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/voice-message\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/x-mixed-replace\": {\n    \"source\": \"iana\"\n  },\n  \"text/1d-interleaved-parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"text/cache-manifest\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"appcache\",\"manifest\"]\n  },\n  \"text/calendar\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ics\",\"ifb\"]\n  },\n  \"text/calender\": {\n    \"compressible\": true\n  },\n  \"text/cmd\": {\n    \"compressible\": true\n  },\n  \"text/coffeescript\": {\n    \"extensions\": [\"coffee\",\"litcoffee\"]\n  },\n  \"text/cql\": {\n    \"source\": \"iana\"\n  },\n  \"text/cql-expression\": {\n    \"source\": \"iana\"\n  },\n  \"text/cql-identifier\": {\n    \"source\": \"iana\"\n  },\n  \"text/css\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"css\"]\n  },\n  \"text/csv\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"csv\"]\n  },\n  \"text/csv-schema\": {\n    \"source\": \"iana\"\n  },\n  \"text/directory\": {\n    \"source\": \"iana\"\n  },\n  \"text/dns\": {\n    \"source\": \"iana\"\n  },\n  \"text/ecmascript\": {\n    \"source\": \"apache\"\n  },\n  \"text/encaprtp\": {\n    \"source\": \"iana\"\n  },\n  \"text/enriched\": {\n    \"source\": \"iana\"\n  },\n  \"text/fhirpath\": {\n    \"source\": \"iana\"\n  },\n  \"text/flexfec\": {\n    \"source\": \"iana\"\n  },\n  \"text/fwdred\": {\n    \"source\": \"iana\"\n  },\n  \"text/gff3\": {\n    \"source\": \"iana\"\n  },\n  \"text/grammar-ref-list\": {\n    \"source\": \"iana\"\n  },\n  \"text/hl7v2\": {\n    \"source\": \"iana\"\n  },\n  \"text/html\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"html\",\"htm\",\"shtml\"]\n  },\n  \"text/jade\": {\n    \"extensions\": [\"jade\"]\n  },\n  \"text/javascript\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"js\",\"mjs\"]\n  },\n  \"text/jcr-cnd\": {\n    \"source\": \"iana\"\n  },\n  \"text/jsx\": {\n    \"compressible\": true,\n    \"extensions\": [\"jsx\"]\n  },\n  \"text/less\": {\n    \"compressible\": true,\n    \"extensions\": [\"less\"]\n  },\n  \"text/markdown\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"md\",\"markdown\"]\n  },\n  \"text/mathml\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"mml\"]\n  },\n  \"text/mdx\": {\n    \"compressible\": true,\n    \"extensions\": [\"mdx\"]\n  },\n  \"text/mizar\": {\n    \"source\": \"iana\"\n  },\n  \"text/n3\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"n3\"]\n  },\n  \"text/parameters\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\"\n  },\n  \"text/parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"text/plain\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"txt\",\"text\",\"conf\",\"def\",\"list\",\"log\",\"in\",\"ini\"]\n  },\n  \"text/provenance-notation\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\"\n  },\n  \"text/prs.fallenstein.rst\": {\n    \"source\": \"iana\"\n  },\n  \"text/prs.lines.tag\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dsc\"]\n  },\n  \"text/prs.prop.logic\": {\n    \"source\": \"iana\"\n  },\n  \"text/prs.texi\": {\n    \"source\": \"iana\"\n  },\n  \"text/raptorfec\": {\n    \"source\": \"iana\"\n  },\n  \"text/red\": {\n    \"source\": \"iana\"\n  },\n  \"text/rfc822-headers\": {\n    \"source\": \"iana\"\n  },\n  \"text/richtext\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rtx\"]\n  },\n  \"text/rtf\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rtf\"]\n  },\n  \"text/rtp-enc-aescm128\": {\n    \"source\": \"iana\"\n  },\n  \"text/rtploopback\": {\n    \"source\": \"iana\"\n  },\n  \"text/rtx\": {\n    \"source\": \"iana\"\n  },\n  \"text/sgml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sgml\",\"sgm\"]\n  },\n  \"text/shaclc\": {\n    \"source\": \"iana\"\n  },\n  \"text/shex\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"shex\"]\n  },\n  \"text/slim\": {\n    \"extensions\": [\"slim\",\"slm\"]\n  },\n  \"text/spdx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"spdx\"]\n  },\n  \"text/strings\": {\n    \"source\": \"iana\"\n  },\n  \"text/stylus\": {\n    \"extensions\": [\"stylus\",\"styl\"]\n  },\n  \"text/t140\": {\n    \"source\": \"iana\"\n  },\n  \"text/tab-separated-values\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"tsv\"]\n  },\n  \"text/troff\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"t\",\"tr\",\"roff\",\"man\",\"me\",\"ms\"]\n  },\n  \"text/turtle\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"extensions\": [\"ttl\"]\n  },\n  \"text/ulpfec\": {\n    \"source\": \"iana\"\n  },\n  \"text/uri-list\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"uri\",\"uris\",\"urls\"]\n  },\n  \"text/vcard\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"vcard\"]\n  },\n  \"text/vnd.a\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.abc\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.ascii-art\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.curl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"curl\"]\n  },\n  \"text/vnd.curl.dcurl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"dcurl\"]\n  },\n  \"text/vnd.curl.mcurl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mcurl\"]\n  },\n  \"text/vnd.curl.scurl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"scurl\"]\n  },\n  \"text/vnd.debian.copyright\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\"\n  },\n  \"text/vnd.dmclientscript\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.dvb.subtitle\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sub\"]\n  },\n  \"text/vnd.esmertec.theme-descriptor\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\"\n  },\n  \"text/vnd.exchangeable\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.familysearch.gedcom\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ged\"]\n  },\n  \"text/vnd.ficlab.flt\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.fly\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fly\"]\n  },\n  \"text/vnd.fmi.flexstor\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"flx\"]\n  },\n  \"text/vnd.gml\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.graphviz\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gv\"]\n  },\n  \"text/vnd.hans\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.hgl\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.in3d.3dml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"3dml\"]\n  },\n  \"text/vnd.in3d.spot\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"spot\"]\n  },\n  \"text/vnd.iptc.newsml\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.iptc.nitf\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.latex-z\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.motorola.reflex\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.ms-mediapackage\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.net2phone.commcenter.command\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.radisys.msml-basic-layout\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.senx.warpscript\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.si.uricatalogue\": {\n    \"source\": \"apache\"\n  },\n  \"text/vnd.sosi\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.sun.j2me.app-descriptor\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"extensions\": [\"jad\"]\n  },\n  \"text/vnd.trolltech.linguist\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\"\n  },\n  \"text/vnd.vcf\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.wap.si\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.wap.sl\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.wap.wml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wml\"]\n  },\n  \"text/vnd.wap.wmlscript\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wmls\"]\n  },\n  \"text/vnd.zoo.kcl\": {\n    \"source\": \"iana\"\n  },\n  \"text/vtt\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"vtt\"]\n  },\n  \"text/wgsl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wgsl\"]\n  },\n  \"text/x-asm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"s\",\"asm\"]\n  },\n  \"text/x-c\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"c\",\"cc\",\"cxx\",\"cpp\",\"h\",\"hh\",\"dic\"]\n  },\n  \"text/x-component\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"htc\"]\n  },\n  \"text/x-fortran\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"f\",\"for\",\"f77\",\"f90\"]\n  },\n  \"text/x-gwt-rpc\": {\n    \"compressible\": true\n  },\n  \"text/x-handlebars-template\": {\n    \"extensions\": [\"hbs\"]\n  },\n  \"text/x-java-source\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"java\"]\n  },\n  \"text/x-jquery-tmpl\": {\n    \"compressible\": true\n  },\n  \"text/x-lua\": {\n    \"extensions\": [\"lua\"]\n  },\n  \"text/x-markdown\": {\n    \"compressible\": true,\n    \"extensions\": [\"mkd\"]\n  },\n  \"text/x-nfo\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"nfo\"]\n  },\n  \"text/x-opml\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"opml\"]\n  },\n  \"text/x-org\": {\n    \"compressible\": true,\n    \"extensions\": [\"org\"]\n  },\n  \"text/x-pascal\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"p\",\"pas\"]\n  },\n  \"text/x-processing\": {\n    \"compressible\": true,\n    \"extensions\": [\"pde\"]\n  },\n  \"text/x-sass\": {\n    \"extensions\": [\"sass\"]\n  },\n  \"text/x-scss\": {\n    \"extensions\": [\"scss\"]\n  },\n  \"text/x-setext\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"etx\"]\n  },\n  \"text/x-sfv\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sfv\"]\n  },\n  \"text/x-suse-ymp\": {\n    \"compressible\": true,\n    \"extensions\": [\"ymp\"]\n  },\n  \"text/x-uuencode\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"uu\"]\n  },\n  \"text/x-vcalendar\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"vcs\"]\n  },\n  \"text/x-vcard\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"vcf\"]\n  },\n  \"text/xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xml\"]\n  },\n  \"text/xml-external-parsed-entity\": {\n    \"source\": \"iana\"\n  },\n  \"text/yaml\": {\n    \"compressible\": true,\n    \"extensions\": [\"yaml\",\"yml\"]\n  },\n  \"video/1d-interleaved-parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"video/3gpp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"3gp\",\"3gpp\"]\n  },\n  \"video/3gpp-tt\": {\n    \"source\": \"iana\"\n  },\n  \"video/3gpp2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"3g2\"]\n  },\n  \"video/av1\": {\n    \"source\": \"iana\"\n  },\n  \"video/bmpeg\": {\n    \"source\": \"iana\"\n  },\n  \"video/bt656\": {\n    \"source\": \"iana\"\n  },\n  \"video/celb\": {\n    \"source\": \"iana\"\n  },\n  \"video/dv\": {\n    \"source\": \"iana\"\n  },\n  \"video/encaprtp\": {\n    \"source\": \"iana\"\n  },\n  \"video/evc\": {\n    \"source\": \"iana\"\n  },\n  \"video/ffv1\": {\n    \"source\": \"iana\"\n  },\n  \"video/flexfec\": {\n    \"source\": \"iana\"\n  },\n  \"video/h261\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"h261\"]\n  },\n  \"video/h263\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"h263\"]\n  },\n  \"video/h263-1998\": {\n    \"source\": \"iana\"\n  },\n  \"video/h263-2000\": {\n    \"source\": \"iana\"\n  },\n  \"video/h264\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"h264\"]\n  },\n  \"video/h264-rcdo\": {\n    \"source\": \"iana\"\n  },\n  \"video/h264-svc\": {\n    \"source\": \"iana\"\n  },\n  \"video/h265\": {\n    \"source\": \"iana\"\n  },\n  \"video/h266\": {\n    \"source\": \"iana\"\n  },\n  \"video/iso.segment\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"m4s\"]\n  },\n  \"video/jpeg\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jpgv\"]\n  },\n  \"video/jpeg2000\": {\n    \"source\": \"iana\"\n  },\n  \"video/jpm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"jpm\",\"jpgm\"]\n  },\n  \"video/jxsv\": {\n    \"source\": \"iana\"\n  },\n  \"video/lottie+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"video/matroska\": {\n    \"source\": \"iana\"\n  },\n  \"video/matroska-3d\": {\n    \"source\": \"iana\"\n  },\n  \"video/mj2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mj2\",\"mjp2\"]\n  },\n  \"video/mp1s\": {\n    \"source\": \"iana\"\n  },\n  \"video/mp2p\": {\n    \"source\": \"iana\"\n  },\n  \"video/mp2t\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ts\",\"m2t\",\"m2ts\",\"mts\"]\n  },\n  \"video/mp4\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"mp4\",\"mp4v\",\"mpg4\"]\n  },\n  \"video/mp4v-es\": {\n    \"source\": \"iana\"\n  },\n  \"video/mpeg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"mpeg\",\"mpg\",\"mpe\",\"m1v\",\"m2v\"]\n  },\n  \"video/mpeg4-generic\": {\n    \"source\": \"iana\"\n  },\n  \"video/mpv\": {\n    \"source\": \"iana\"\n  },\n  \"video/nv\": {\n    \"source\": \"iana\"\n  },\n  \"video/ogg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"ogv\"]\n  },\n  \"video/parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"video/pointer\": {\n    \"source\": \"iana\"\n  },\n  \"video/quicktime\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"qt\",\"mov\"]\n  },\n  \"video/raptorfec\": {\n    \"source\": \"iana\"\n  },\n  \"video/raw\": {\n    \"source\": \"iana\"\n  },\n  \"video/rtp-enc-aescm128\": {\n    \"source\": \"iana\"\n  },\n  \"video/rtploopback\": {\n    \"source\": \"iana\"\n  },\n  \"video/rtx\": {\n    \"source\": \"iana\"\n  },\n  \"video/scip\": {\n    \"source\": \"iana\"\n  },\n  \"video/smpte291\": {\n    \"source\": \"iana\"\n  },\n  \"video/smpte292m\": {\n    \"source\": \"iana\"\n  },\n  \"video/ulpfec\": {\n    \"source\": \"iana\"\n  },\n  \"video/vc1\": {\n    \"source\": \"iana\"\n  },\n  \"video/vc2\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.cctv\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.dece.hd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvh\",\"uvvh\"]\n  },\n  \"video/vnd.dece.mobile\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvm\",\"uvvm\"]\n  },\n  \"video/vnd.dece.mp4\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.dece.pd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvp\",\"uvvp\"]\n  },\n  \"video/vnd.dece.sd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvs\",\"uvvs\"]\n  },\n  \"video/vnd.dece.video\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvv\",\"uvvv\"]\n  },\n  \"video/vnd.directv.mpeg\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.directv.mpeg-tts\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.dlna.mpeg-tts\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.dvb.file\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dvb\"]\n  },\n  \"video/vnd.fvt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fvt\"]\n  },\n  \"video/vnd.hns.video\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.1dparityfec-1010\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.1dparityfec-2005\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.2dparityfec-1010\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.2dparityfec-2005\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.ttsavc\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.ttsmpeg2\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.motorola.video\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.motorola.videop\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.mpegurl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mxu\",\"m4u\"]\n  },\n  \"video/vnd.ms-playready.media.pyv\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pyv\"]\n  },\n  \"video/vnd.nokia.interleaved-multimedia\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.nokia.mp4vr\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.nokia.videovoip\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.objectvideo\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.planar\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.radgamettools.bink\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.radgamettools.smacker\": {\n    \"source\": \"apache\"\n  },\n  \"video/vnd.sealed.mpeg1\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.sealed.mpeg4\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.sealed.swf\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.sealedmedia.softseal.mov\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.uvvu.mp4\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvu\",\"uvvu\"]\n  },\n  \"video/vnd.vivo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"viv\"]\n  },\n  \"video/vnd.youtube.yt\": {\n    \"source\": \"iana\"\n  },\n  \"video/vp8\": {\n    \"source\": \"iana\"\n  },\n  \"video/vp9\": {\n    \"source\": \"iana\"\n  },\n  \"video/webm\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"webm\"]\n  },\n  \"video/x-f4v\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"f4v\"]\n  },\n  \"video/x-fli\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"fli\"]\n  },\n  \"video/x-flv\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"flv\"]\n  },\n  \"video/x-m4v\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"m4v\"]\n  },\n  \"video/x-matroska\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"mkv\",\"mk3d\",\"mks\"]\n  },\n  \"video/x-mng\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mng\"]\n  },\n  \"video/x-ms-asf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"asf\",\"asx\"]\n  },\n  \"video/x-ms-vob\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"vob\"]\n  },\n  \"video/x-ms-wm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wm\"]\n  },\n  \"video/x-ms-wmv\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"wmv\"]\n  },\n  \"video/x-ms-wmx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wmx\"]\n  },\n  \"video/x-ms-wvx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wvx\"]\n  },\n  \"video/x-msvideo\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"avi\"]\n  },\n  \"video/x-sgi-movie\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"movie\"]\n  },\n  \"video/x-smv\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"smv\"]\n  },\n  \"x-conference/x-cooltalk\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ice\"]\n  },\n  \"x-shader/x-fragment\": {\n    \"compressible\": true\n  },\n  \"x-shader/x-vertex\": {\n    \"compressible\": true\n  }\n}\n", "/*!\n * mime-db\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * Module exports.\n */\n\nmodule.exports = require('./db.json')\n", "// 'mime-score' back-ported to CommonJS\n\n// Score RFC facets (see https://tools.ietf.org/html/rfc6838#section-3)\nvar FACET_SCORES = {\n  'prs.': 100,\n  'x-': 200,\n  'x.': 300,\n  'vnd.': 400,\n  default: 900\n}\n\n// Score mime source (Logic originally from `jshttp/mime-types` module)\nvar SOURCE_SCORES = {\n  nginx: 10,\n  apache: 20,\n  iana: 40,\n  default: 30 // definitions added by `jshttp/mime-db` project?\n}\n\nvar TYPE_SCORES = {\n  // prefer application/xml over text/xml\n  // prefer application/rtf over text/rtf\n  application: 1,\n\n  // prefer font/woff over application/font-woff\n  font: 2,\n\n  // prefer video/mp4 over audio/mp4 over application/mp4\n  // See https://www.rfc-editor.org/rfc/rfc4337.html#section-2\n  audio: 2,\n  video: 3,\n\n  default: 0\n}\n\n/**\n * Get each component of the score for a mime type.  The sum of these is the\n * total score.  The higher the score, the more \"official\" the type.\n */\nmodule.exports = function mimeScore (mimeType, source = 'default') {\n  if (mimeType === 'application/octet-stream') {\n    return 0\n  }\n\n  const [type, subtype] = mimeType.split('/')\n\n  const facet = subtype.replace(/(\\.|x-).*/, '$1')\n\n  const facetScore = FACET_SCORES[facet] || FACET_SCORES.default\n  const sourceScore = SOURCE_SCORES[source] || SOURCE_SCORES.default\n  const typeScore = TYPE_SCORES[type] || TYPE_SCORES.default\n\n  // All else being equal prefer shorter types\n  const lengthScore = 1 - mimeType.length / 100\n\n  return facetScore + sourceScore + typeScore + lengthScore\n}\n", "/*!\n * mime-types\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar db = require('mime-db')\nvar extname = require('path').extname\nvar mimeScore = require('./mimeScore')\n\n/**\n * Module variables.\n * @private\n */\n\nvar EXTRACT_TYPE_REGEXP = /^\\s*([^;\\s]*)(?:;|\\s|$)/\nvar TEXT_TYPE_REGEXP = /^text\\//i\n\n/**\n * Module exports.\n * @public\n */\n\nexports.charset = charset\nexports.charsets = { lookup: charset }\nexports.contentType = contentType\nexports.extension = extension\nexports.extensions = Object.create(null)\nexports.lookup = lookup\nexports.types = Object.create(null)\nexports._extensionConflicts = []\n\n// Populate the extensions/types maps\npopulateMaps(exports.extensions, exports.types)\n\n/**\n * Get the default charset for a MIME type.\n *\n * @param {string} type\n * @return {false|string}\n */\n\nfunction charset (type) {\n  if (!type || typeof type !== 'string') {\n    return false\n  }\n\n  // TODO: use media-typer\n  var match = EXTRACT_TYPE_REGEXP.exec(type)\n  var mime = match && db[match[1].toLowerCase()]\n\n  if (mime && mime.charset) {\n    return mime.charset\n  }\n\n  // default text/* to utf-8\n  if (match && TEXT_TYPE_REGEXP.test(match[1])) {\n    return 'UTF-8'\n  }\n\n  return false\n}\n\n/**\n * Create a full Content-Type header given a MIME type or extension.\n *\n * @param {string} str\n * @return {false|string}\n */\n\nfunction contentType (str) {\n  // TODO: should this even be in this module?\n  if (!str || typeof str !== 'string') {\n    return false\n  }\n\n  var mime = str.indexOf('/') === -1 ? exports.lookup(str) : str\n\n  if (!mime) {\n    return false\n  }\n\n  // TODO: use content-type or other module\n  if (mime.indexOf('charset') === -1) {\n    var charset = exports.charset(mime)\n    if (charset) mime += '; charset=' + charset.toLowerCase()\n  }\n\n  return mime\n}\n\n/**\n * Get the default extension for a MIME type.\n *\n * @param {string} type\n * @return {false|string}\n */\n\nfunction extension (type) {\n  if (!type || typeof type !== 'string') {\n    return false\n  }\n\n  // TODO: use media-typer\n  var match = EXTRACT_TYPE_REGEXP.exec(type)\n\n  // get extensions\n  var exts = match && exports.extensions[match[1].toLowerCase()]\n\n  if (!exts || !exts.length) {\n    return false\n  }\n\n  return exts[0]\n}\n\n/**\n * Lookup the MIME type for a file path/extension.\n *\n * @param {string} path\n * @return {false|string}\n */\n\nfunction lookup (path) {\n  if (!path || typeof path !== 'string') {\n    return false\n  }\n\n  // get the extension (\"ext\" or \".ext\" or full path)\n  var extension = extname('x.' + path)\n    .toLowerCase()\n    .slice(1)\n\n  if (!extension) {\n    return false\n  }\n\n  return exports.types[extension] || false\n}\n\n/**\n * Populate the extensions and types maps.\n * @private\n */\n\nfunction populateMaps (extensions, types) {\n  Object.keys(db).forEach(function forEachMimeType (type) {\n    var mime = db[type]\n    var exts = mime.extensions\n\n    if (!exts || !exts.length) {\n      return\n    }\n\n    // mime -> extensions\n    extensions[type] = exts\n\n    // extension -> mime\n    for (var i = 0; i < exts.length; i++) {\n      var extension = exts[i]\n      types[extension] = _preferredType(extension, types[extension], type)\n\n      // DELETE (eventually): Capture extension->type maps that change as a\n      // result of switching to mime-score.  This is just to help make reviewing\n      // PR #119 easier, and can be removed once that PR is approved.\n      const legacyType = _preferredTypeLegacy(\n        extension,\n        types[extension],\n        type\n      )\n      if (legacyType !== types[extension]) {\n        exports._extensionConflicts.push([extension, legacyType, types[extension]])\n      }\n    }\n  })\n}\n\n// Resolve type conflict using mime-score\nfunction _preferredType (ext, type0, type1) {\n  var score0 = type0 ? mimeScore(type0, db[type0].source) : 0\n  var score1 = type1 ? mimeScore(type1, db[type1].source) : 0\n\n  return score0 > score1 ? type0 : type1\n}\n\n// Resolve type conflict using pre-mime-score logic\nfunction _preferredTypeLegacy (ext, type0, type1) {\n  var SOURCE_RANK = ['nginx', 'apache', undefined, 'iana']\n\n  var score0 = type0 ? SOURCE_RANK.indexOf(db[type0].source) : 0\n  var score1 = type1 ? SOURCE_RANK.indexOf(db[type1].source) : 0\n\n  if (\n    exports.types[extension] !== 'application/octet-stream' &&\n    (score0 > score1 ||\n      (score0 === score1 &&\n        exports.types[extension]?.slice(0, 12) === 'application/'))\n  ) {\n    return type0\n  }\n\n  return score0 > score1 ? type0 : type1\n}\n", "/*!\n * media-typer\n * Copyright(c) 2014-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * RegExp to match type in RFC 6838\n *\n * type-name = restricted-name\n * subtype-name = restricted-name\n * restricted-name = restricted-name-first *126restricted-name-chars\n * restricted-name-first  = ALPHA / DIGIT\n * restricted-name-chars  = ALPHA / DIGIT / \"!\" / \"#\" /\n *                          \"$\" / \"&\" / \"-\" / \"^\" / \"_\"\n * restricted-name-chars =/ \".\" ; Characters before first dot always\n *                              ; specify a facet name\n * restricted-name-chars =/ \"+\" ; Characters after last plus always\n *                              ; specify a structured syntax suffix\n * ALPHA =  %x41-5A / %x61-7A   ; A-Z / a-z\n * DIGIT =  %x30-39             ; 0-9\n */\nvar SUBTYPE_NAME_REGEXP = /^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/\nvar TYPE_NAME_REGEXP = /^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/\nvar TYPE_REGEXP = /^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/\n\n/**\n * Module exports.\n */\n\nexports.format = format\nexports.parse = parse\nexports.test = test\n\n/**\n * Format object to media type.\n *\n * @param {object} obj\n * @return {string}\n * @public\n */\n\nfunction format (obj) {\n  if (!obj || typeof obj !== 'object') {\n    throw new TypeError('argument obj is required')\n  }\n\n  var subtype = obj.subtype\n  var suffix = obj.suffix\n  var type = obj.type\n\n  if (!type || !TYPE_NAME_REGEXP.test(type)) {\n    throw new TypeError('invalid type')\n  }\n\n  if (!subtype || !SUBTYPE_NAME_REGEXP.test(subtype)) {\n    throw new TypeError('invalid subtype')\n  }\n\n  // format as type/subtype\n  var string = type + '/' + subtype\n\n  // append +suffix\n  if (suffix) {\n    if (!TYPE_NAME_REGEXP.test(suffix)) {\n      throw new TypeError('invalid suffix')\n    }\n\n    string += '+' + suffix\n  }\n\n  return string\n}\n\n/**\n * Test media type.\n *\n * @param {string} string\n * @return {object}\n * @public\n */\n\nfunction test (string) {\n  if (!string) {\n    throw new TypeError('argument string is required')\n  }\n\n  if (typeof string !== 'string') {\n    throw new TypeError('argument string is required to be a string')\n  }\n\n  return TYPE_REGEXP.test(string.toLowerCase())\n}\n\n/**\n * Parse media type to object.\n *\n * @param {string} string\n * @return {object}\n * @public\n */\n\nfunction parse (string) {\n  if (!string) {\n    throw new TypeError('argument string is required')\n  }\n\n  if (typeof string !== 'string') {\n    throw new TypeError('argument string is required to be a string')\n  }\n\n  var match = TYPE_REGEXP.exec(string.toLowerCase())\n\n  if (!match) {\n    throw new TypeError('invalid media type')\n  }\n\n  var type = match[1]\n  var subtype = match[2]\n  var suffix\n\n  // suffix after last +\n  var index = subtype.lastIndexOf('+')\n  if (index !== -1) {\n    suffix = subtype.substr(index + 1)\n    subtype = subtype.substr(0, index)\n  }\n\n  return new MediaType(type, subtype, suffix)\n}\n\n/**\n * Class for MediaType object.\n * @public\n */\n\nfunction MediaType (type, subtype, suffix) {\n  this.type = type\n  this.subtype = subtype\n  this.suffix = suffix\n}\n", "/*!\n * type-is\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar contentType = require('content-type')\nvar mime = require('mime-types')\nvar typer = require('media-typer')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = typeofrequest\nmodule.exports.is = typeis\nmodule.exports.hasBody = hasbody\nmodule.exports.normalize = normalize\nmodule.exports.match = mimeMatch\n\n/**\n * Compare a `value` content-type with `types`.\n * Each `type` can be an extension like `html`,\n * a special shortcut like `multipart` or `urlencoded`,\n * or a mime type.\n *\n * If no types match, `false` is returned.\n * Otherwise, the first `type` that matches is returned.\n *\n * @param {String} value\n * @param {Array} types\n * @public\n */\n\nfunction typeis (value, types_) {\n  var i\n  var types = types_\n\n  // remove parameters and normalize\n  var val = tryNormalizeType(value)\n\n  // no type or invalid\n  if (!val) {\n    return false\n  }\n\n  // support flattened arguments\n  if (types && !Array.isArray(types)) {\n    types = new Array(arguments.length - 1)\n    for (i = 0; i < types.length; i++) {\n      types[i] = arguments[i + 1]\n    }\n  }\n\n  // no types, return the content type\n  if (!types || !types.length) {\n    return val\n  }\n\n  var type\n  for (i = 0; i < types.length; i++) {\n    if (mimeMatch(normalize(type = types[i]), val)) {\n      return type[0] === '+' || type.indexOf('*') !== -1\n        ? val\n        : type\n    }\n  }\n\n  // no matches\n  return false\n}\n\n/**\n * Check if a request has a request body.\n * A request with a body __must__ either have `transfer-encoding`\n * or `content-length` headers set.\n * http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.3\n *\n * @param {Object} request\n * @return {Boolean}\n * @public\n */\n\nfunction hasbody (req) {\n  return req.headers['transfer-encoding'] !== undefined ||\n    !isNaN(req.headers['content-length'])\n}\n\n/**\n * Check if the incoming request contains the \"Content-Type\"\n * header field, and it contains any of the give mime `type`s.\n * If there is no request body, `null` is returned.\n * If there is no content type, `false` is returned.\n * Otherwise, it returns the first `type` that matches.\n *\n * Examples:\n *\n *     // With Content-Type: text/html; charset=utf-8\n *     this.is('html'); // => 'html'\n *     this.is('text/html'); // => 'text/html'\n *     this.is('text/*', 'application/json'); // => 'text/html'\n *\n *     // When Content-Type is application/json\n *     this.is('json', 'urlencoded'); // => 'json'\n *     this.is('application/json'); // => 'application/json'\n *     this.is('html', 'application/*'); // => 'application/json'\n *\n *     this.is('html'); // => false\n *\n * @param {Object} req\n * @param {(String|Array)} types...\n * @return {(String|false|null)}\n * @public\n */\n\nfunction typeofrequest (req, types_) {\n  // no body\n  if (!hasbody(req)) return null\n  // support flattened arguments\n  var types = arguments.length > 2\n    ? Array.prototype.slice.call(arguments, 1)\n    : types_\n  // request content type\n  var value = req.headers['content-type']\n\n  return typeis(value, types)\n}\n\n/**\n * Normalize a mime type.\n * If it's a shorthand, expand it to a valid mime type.\n *\n * In general, you probably want:\n *\n *   var type = is(req, ['urlencoded', 'json', 'multipart']);\n *\n * Then use the appropriate body parsers.\n * These three are the most common request body types\n * and are thus ensured to work.\n *\n * @param {String} type\n * @return {String|false|null}\n * @public\n */\n\nfunction normalize (type) {\n  if (typeof type !== 'string') {\n    // invalid type\n    return false\n  }\n\n  switch (type) {\n    case 'urlencoded':\n      return 'application/x-www-form-urlencoded'\n    case 'multipart':\n      return 'multipart/*'\n  }\n\n  if (type[0] === '+') {\n    // \"+json\" -> \"*/*+json\" expando\n    return '*/*' + type\n  }\n\n  return type.indexOf('/') === -1\n    ? mime.lookup(type)\n    : type\n}\n\n/**\n * Check if `expected` mime type\n * matches `actual` mime type with\n * wildcard and +suffix support.\n *\n * @param {String} expected\n * @param {String} actual\n * @return {Boolean}\n * @public\n */\n\nfunction mimeMatch (expected, actual) {\n  // invalid type\n  if (expected === false) {\n    return false\n  }\n\n  // split types\n  var actualParts = actual.split('/')\n  var expectedParts = expected.split('/')\n\n  // invalid format\n  if (actualParts.length !== 2 || expectedParts.length !== 2) {\n    return false\n  }\n\n  // validate type\n  if (expectedParts[0] !== '*' && expectedParts[0] !== actualParts[0]) {\n    return false\n  }\n\n  // validate suffix wildcard\n  if (expectedParts[1].slice(0, 2) === '*+') {\n    return expectedParts[1].length <= actualParts[1].length + 1 &&\n      expectedParts[1].slice(1) === actualParts[1].slice(1 - expectedParts[1].length)\n  }\n\n  // validate subtype\n  if (expectedParts[1] !== '*' && expectedParts[1] !== actualParts[1]) {\n    return false\n  }\n\n  return true\n}\n\n/**\n * Normalize a type and remove parameters.\n *\n * @param {string} value\n * @return {(string|null)}\n * @private\n */\nfunction normalizeType (value) {\n  // Parse the type\n  var type = contentType.parse(value).type\n\n  return typer.test(type) ? type : null\n}\n\n/**\n * Try to normalize a type and remove parameters.\n *\n * @param {string} value\n * @return {(string|null)}\n * @private\n */\nfunction tryNormalizeType (value) {\n  try {\n    return value ? normalizeType(value) : null\n  } catch (err) {\n    return null\n  }\n}\n", "/*!\n * fresh\n * Copyright(c) 2012 TJ Holowaychuk\n * Copyright(c) 2016-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * RegExp to check for no-cache token in Cache-Control.\n * @private\n */\n\nvar CACHE_CONTROL_NO_CACHE_REGEXP = /(?:^|,)\\s*?no-cache\\s*?(?:,|$)/\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = fresh\n\n/**\n * Check freshness of the response using request and response headers.\n *\n * @param {Object} reqHeaders\n * @param {Object} resHeaders\n * @return {Boolean}\n * @public\n */\n\nfunction fresh (reqHeaders, resHeaders) {\n  // fields\n  var modifiedSince = reqHeaders['if-modified-since']\n  var noneMatch = reqHeaders['if-none-match']\n\n  // unconditional request\n  if (!modifiedSince && !noneMatch) {\n    return false\n  }\n\n  // Always return stale when Cache-Control: no-cache\n  // to support end-to-end reload requests\n  // https://tools.ietf.org/html/rfc2616#section-14.9.4\n  var cacheControl = reqHeaders['cache-control']\n  if (cacheControl && CACHE_CONTROL_NO_CACHE_REGEXP.test(cacheControl)) {\n    return false\n  }\n\n  // if-none-match\n  if (noneMatch && noneMatch !== '*') {\n    var etag = resHeaders['etag']\n\n    if (!etag) {\n      return false\n    }\n\n    var etagStale = true\n    var matches = parseTokenList(noneMatch)\n    for (var i = 0; i < matches.length; i++) {\n      var match = matches[i]\n      if (match === etag || match === 'W/' + etag || 'W/' + match === etag) {\n        etagStale = false\n        break\n      }\n    }\n\n    if (etagStale) {\n      return false\n    }\n  }\n\n  // if-modified-since\n  if (modifiedSince) {\n    var lastModified = resHeaders['last-modified']\n    var modifiedStale = !lastModified || !(parseHttpDate(lastModified) <= parseHttpDate(modifiedSince))\n\n    if (modifiedStale) {\n      return false\n    }\n  }\n\n  return true\n}\n\n/**\n * Parse an HTTP Date into a number.\n *\n * @param {string} date\n * @private\n */\n\nfunction parseHttpDate (date) {\n  var timestamp = date && Date.parse(date)\n\n  // istanbul ignore next: guard against date.js Date.parse patching\n  return typeof timestamp === 'number'\n    ? timestamp\n    : NaN\n}\n\n/**\n * Parse a HTTP token list.\n *\n * @param {string} str\n * @private\n */\n\nfunction parseTokenList (str) {\n  var end = 0\n  var list = []\n  var start = 0\n\n  // gather tokens\n  for (var i = 0, len = str.length; i < len; i++) {\n    switch (str.charCodeAt(i)) {\n      case 0x20: /*   */\n        if (start === end) {\n          start = end = i + 1\n        }\n        break\n      case 0x2c: /* , */\n        list.push(str.substring(start, end))\n        start = end = i + 1\n        break\n      default:\n        end = i + 1\n        break\n    }\n  }\n\n  // final token\n  list.push(str.substring(start, end))\n\n  return list\n}\n", "module.exports = (obj, keys) => {\n  const ret = {}\n  for (let i = 0; i < keys.length; i++) {\n    const key = keys[i]\n    if (obj[key] == null) continue\n    ret[key] = obj[key]\n  }\n  return ret\n}\n", "'use strict'\n\n/**\n * Module dependencies.\n */\n\nconst URL = require('url').URL\nconst net = require('net')\nconst accepts = require('accepts')\nconst contentType = require('content-type')\nconst stringify = require('url').format\nconst parse = require('parseurl')\nconst sp = require('./search-params.js')\n\nconst typeis = require('type-is')\nconst fresh = require('fresh')\nconst only = require('./only.js')\nconst util = require('util')\n\nconst IP = Symbol('context#ip')\n\n/**\n * Prototype.\n */\n\nmodule.exports = {\n\n  /**\n   * Return request header.\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  get header () {\n    return this.req.headers\n  },\n\n  /**\n   * Set request header.\n   *\n   * @api public\n   */\n\n  set header (val) {\n    this.req.headers = val\n  },\n\n  /**\n   * Return request header, alias as request.header\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  get headers () {\n    return this.req.headers\n  },\n\n  /**\n   * Set request header, alias as request.header\n   *\n   * @api public\n   */\n\n  set headers (val) {\n    this.req.headers = val\n  },\n\n  /**\n   * Get request URL.\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get url () {\n    return this.req.url\n  },\n\n  /**\n   * Set request URL.\n   *\n   * @api public\n   */\n\n  set url (val) {\n    this.req.url = val\n  },\n\n  /**\n   * Get the origin header.\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get origin () {\n    return this.req.headers.origin || null\n  },\n\n  /**\n   * Get full request URL.\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get href () {\n    // support: `GET http://example.com/foo`\n    if (/^https?:\\/\\//i.test(this.originalUrl)) return this.originalUrl\n    return this.protocol + '://' + this.host + this.originalUrl\n  },\n\n  /**\n   * Get request method.\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get method () {\n    return this.req.method\n  },\n\n  /**\n   * Set request method.\n   *\n   * @param {String} val\n   * @api public\n   */\n\n  set method (val) {\n    this.req.method = val\n  },\n\n  /**\n   * Get request pathname.\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get path () {\n    return parse(this.req).pathname\n  },\n\n  /**\n   * Set pathname, retaining the query string when present.\n   *\n   * @param {String} path\n   * @api public\n   */\n\n  set path (path) {\n    const url = parse(this.req)\n    if (url.pathname === path) return\n\n    url.pathname = path\n    url.path = null\n\n    this.url = stringify(url)\n  },\n\n  /**\n   * Get parsed query string.\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  get query () {\n    const str = this.querystring\n    const c = this._querycache = this._querycache || {}\n    return c[str] || (c[str] = sp.parse(str))\n  },\n\n  /**\n   * Set query string as an object.\n   *\n   * @param {Object} obj\n   * @api public\n   */\n\n  set query (obj) {\n    this.querystring = sp.stringify(obj)\n  },\n\n  /**\n   * Get query string.\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get querystring () {\n    if (!this.req) return ''\n    return parse(this.req).query || ''\n  },\n\n  /**\n   * Set query string.\n   *\n   * @param {String} str\n   * @api public\n   */\n\n  set querystring (str) {\n    const url = parse(this.req)\n    if (url.search === `?${str}`) return\n\n    url.search = str\n    url.path = null\n    this.url = stringify(url)\n  },\n\n  /**\n   * Get the search string. Same as the query string\n   * except it includes the leading ?.\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get search () {\n    if (!this.querystring) return ''\n    return `?${this.querystring}`\n  },\n\n  /**\n   * Set the search string. Same as\n   * request.querystring= but included for ubiquity.\n   *\n   * @param {String} str\n   * @api public\n   */\n\n  set search (str) {\n    this.querystring = str\n  },\n\n  /**\n   * Parse the \"Host\" header field host\n   * and support X-Forwarded-Host when a\n   * proxy is enabled.\n   *\n   * @return {String} hostname:port\n   * @api public\n   */\n\n  get host () {\n    const proxy = this.app.proxy\n    let host = proxy && this.get('X-Forwarded-Host')\n    if (!host) {\n      if (this.req.httpVersionMajor >= 2) host = this.get(':authority')\n      if (!host) host = this.get('Host')\n    }\n    if (!host) return ''\n    return splitCommaSeparatedValues(host, 1)[0]\n  },\n\n  /**\n   * Parse the \"Host\" header field hostname\n   * and support X-Forwarded-Host when a\n   * proxy is enabled.\n   *\n   * @return {String} hostname\n   * @api public\n   */\n\n  get hostname () {\n    const host = this.host\n    if (!host) return ''\n    if (host[0] === '[') return this.URL.hostname || '' // IPv6\n    return host.split(':', 1)[0]\n  },\n\n  /**\n   * Get WHATWG parsed URL.\n   * Lazily memoized.\n   *\n   * @return {URL|Object}\n   * @api public\n   */\n\n  get URL () {\n    /* istanbul ignore else */\n    if (!this.memoizedURL) {\n      const originalUrl = this.originalUrl || '' // avoid undefined in template string\n      try {\n        this.memoizedURL = new URL(`${this.protocol}://${this.host}${originalUrl}`)\n      } catch (err) {\n        this.memoizedURL = Object.create(null)\n      }\n    }\n    return this.memoizedURL\n  },\n\n  /**\n   * Check if the request is fresh, aka\n   * Last-Modified and/or the ETag\n   * still match.\n   *\n   * @return {Boolean}\n   * @api public\n   */\n\n  get fresh () {\n    const method = this.method\n    const s = this.ctx.status\n\n    // GET or HEAD for weak freshness validation only\n    if (method !== 'GET' && method !== 'HEAD') return false\n\n    // 2xx or 304 as per rfc2616 14.26\n    if ((s >= 200 && s < 300) || s === 304) {\n      return fresh(this.header, this.response.header)\n    }\n\n    return false\n  },\n\n  /**\n   * Check if the request is stale, aka\n   * \"Last-Modified\" and / or the \"ETag\" for the\n   * resource has changed.\n   *\n   * @return {Boolean}\n   * @api public\n   */\n\n  get stale () {\n    return !this.fresh\n  },\n\n  /**\n   * Check if the request is idempotent.\n   *\n   * @return {Boolean}\n   * @api public\n   */\n\n  get idempotent () {\n    const methods = ['GET', 'HEAD', 'PUT', 'DELETE', 'OPTIONS', 'TRACE']\n    return !!~methods.indexOf(this.method)\n  },\n\n  /**\n   * Return the request socket.\n   *\n   * @return {Connection}\n   * @api public\n   */\n\n  get socket () {\n    return this.req.socket\n  },\n\n  /**\n   * Get the charset when present or undefined.\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get charset () {\n    try {\n      const { parameters } = contentType.parse(this.req)\n      return parameters.charset || ''\n    } catch (e) {\n      return ''\n    }\n  },\n\n  /**\n   * Return parsed Content-Length when present.\n   *\n   * @return {Number|void}\n   * @api public\n   */\n\n  get length () {\n    const len = this.get('Content-Length')\n    if (len === '') return\n    return ~~len\n  },\n\n  /**\n   * Return the protocol string \"http\" or \"https\"\n   * when requested with TLS. When the proxy setting\n   * is enabled the \"X-Forwarded-Proto\" header\n   * field will be trusted. If you're running behind\n   * a reverse proxy that supplies https for you this\n   * may be enabled.\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get protocol () {\n    if (this.socket.encrypted) return 'https'\n    if (!this.app.proxy) return 'http'\n    const proto = this.get('X-Forwarded-Proto')\n    return proto ? splitCommaSeparatedValues(proto, 1)[0] : 'http'\n  },\n\n  /**\n   * Shorthand for:\n   *\n   *    this.protocol == 'https'\n   *\n   * @return {Boolean}\n   * @api public\n   */\n\n  get secure () {\n    return this.protocol === 'https'\n  },\n\n  /**\n   * When `app.proxy` is `true`, parse\n   * the \"X-Forwarded-For\" ip address list.\n   *\n   * For example if the value was \"client, proxy1, proxy2\"\n   * you would receive the array `[\"client\", \"proxy1\", \"proxy2\"]`\n   * where \"proxy2\" is the furthest down-stream.\n   *\n   * @return {Array}\n   * @api public\n   */\n\n  get ips () {\n    const proxy = this.app.proxy\n    const val = this.get(this.app.proxyIpHeader)\n    let ips = proxy && val\n      ? splitCommaSeparatedValues(val)\n      : []\n    if (this.app.maxIpsCount > 0) {\n      ips = ips.slice(-this.app.maxIpsCount)\n    }\n    return ips\n  },\n\n  /**\n   * Return request's remote address\n   * When `app.proxy` is `true`, parse\n   * the \"X-Forwarded-For\" ip address list and return the first one\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get ip () {\n    if (!this[IP]) {\n      this[IP] = this.ips[0] || this.socket.remoteAddress || ''\n    }\n    return this[IP]\n  },\n\n  set ip (_ip) {\n    this[IP] = _ip\n  },\n\n  /**\n   * Return subdomains as an array.\n   *\n   * Subdomains are the dot-separated parts of the host before the main domain\n   * of the app. By default, the domain of the app is assumed to be the last two\n   * parts of the host. This can be changed by setting `app.subdomainOffset`.\n   *\n   * For example, if the domain is \"tobi.ferrets.example.com\":\n   * If `app.subdomainOffset` is not set, this.subdomains is\n   * `[\"ferrets\", \"tobi\"]`.\n   * If `app.subdomainOffset` is 3, this.subdomains is `[\"tobi\"]`.\n   *\n   * @return {Array}\n   * @api public\n   */\n\n  get subdomains () {\n    const offset = this.app.subdomainOffset\n    const hostname = this.hostname\n    if (net.isIP(hostname)) return []\n    return hostname\n      .split('.')\n      .reverse()\n      .slice(offset)\n  },\n\n  /**\n   * Get accept object.\n   * Lazily memoized.\n   *\n   * @return {Object}\n   * @api private\n   */\n\n  get accept () {\n    return this._accept || (this._accept = accepts(this.req))\n  },\n\n  /**\n   * Set accept object.\n   *\n   * @param {Object} obj\n   * @api private\n   */\n\n  set accept (obj) {\n    this._accept = obj\n  },\n\n  /**\n   * Check if the given `type(s)` is acceptable, returning\n   * the best match when true, otherwise `false`, in which\n   * case you should respond with 406 \"Not Acceptable\".\n   *\n   * The `type` value may be a single mime type string\n   * such as \"application/json\", the extension name\n   * such as \"json\" or an array `[\"json\", \"html\", \"text/plain\"]`. When a list\n   * or array is given the _best_ match, if any is returned.\n   *\n   * Examples:\n   *\n   *     // Accept: text/html\n   *     this.accepts('html');\n   *     // => \"html\"\n   *\n   *     // Accept: text/*, application/json\n   *     this.accepts('html');\n   *     // => \"html\"\n   *     this.accepts('text/html');\n   *     // => \"text/html\"\n   *     this.accepts('json', 'text');\n   *     // => \"json\"\n   *     this.accepts('application/json');\n   *     // => \"application/json\"\n   *\n   *     // Accept: text/*, application/json\n   *     this.accepts('image/png');\n   *     this.accepts('png');\n   *     // => false\n   *\n   *     // Accept: text/*;q=.5, application/json\n   *     this.accepts(['html', 'json']);\n   *     this.accepts('html', 'json');\n   *     // => \"json\"\n   *\n   * @param {String|Array} type(s)...\n   * @return {String|Array|false}\n   * @api public\n   */\n\n  accepts (...args) {\n    return this.accept.types(...args)\n  },\n\n  /**\n   * Return accepted encodings or best fit based on `encodings`.\n   *\n   * Given `Accept-Encoding: gzip, deflate`\n   * an array sorted by quality is returned:\n   *\n   *     ['gzip', 'deflate']\n   *\n   * @param {String|Array} encoding(s)...\n   * @return {String|Array}\n   * @api public\n   */\n\n  acceptsEncodings (...args) {\n    return this.accept.encodings(...args)\n  },\n\n  /**\n   * Return accepted charsets or best fit based on `charsets`.\n   *\n   * Given `Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5`\n   * an array sorted by quality is returned:\n   *\n   *     ['utf-8', 'utf-7', 'iso-8859-1']\n   *\n   * @param {String|Array} charset(s)...\n   * @return {String|Array}\n   * @api public\n   */\n\n  acceptsCharsets (...args) {\n    return this.accept.charsets(...args)\n  },\n\n  /**\n   * Return accepted languages or best fit based on `langs`.\n   *\n   * Given `Accept-Language: en;q=0.8, es, pt`\n   * an array sorted by quality is returned:\n   *\n   *     ['es', 'pt', 'en']\n   *\n   * @param {String|Array} lang(s)...\n   * @return {Array|String}\n   * @api public\n   */\n\n  acceptsLanguages (...args) {\n    return this.accept.languages(...args)\n  },\n\n  /**\n   * Check if the incoming request contains the \"Content-Type\"\n   * header field and if it contains any of the given mime `type`s.\n   * If there is no request body, `null` is returned.\n   * If there is no content type, `false` is returned.\n   * Otherwise, it returns the first `type` that matches.\n   *\n   * Examples:\n   *\n   *     // With Content-Type: text/html; charset=utf-8\n   *     this.is('html'); // => 'html'\n   *     this.is('text/html'); // => 'text/html'\n   *     this.is('text/*', 'application/json'); // => 'text/html'\n   *\n   *     // When Content-Type is application/json\n   *     this.is('json', 'urlencoded'); // => 'json'\n   *     this.is('application/json'); // => 'application/json'\n   *     this.is('html', 'application/*'); // => 'application/json'\n   *\n   *     this.is('html'); // => false\n   *\n   * @param {String|String[]} [type]\n   * @param {String[]} [types]\n   * @return {String|false|null}\n   * @api public\n   */\n\n  is (type, ...types) {\n    return typeis(this.req, type, ...types)\n  },\n\n  /**\n   * Return the request mime type void of\n   * parameters such as \"charset\".\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get type () {\n    const type = this.get('Content-Type')\n    if (!type) return ''\n    return type.split(';')[0]\n  },\n\n  /**\n   * Return request header.\n   *\n   * The `Referrer` header field is special-cased,\n   * both `Referrer` and `Referer` are interchangeable.\n   *\n   * Examples:\n   *\n   *     this.get('Content-Type');\n   *     // => \"text/plain\"\n   *\n   *     this.get('content-type');\n   *     // => \"text/plain\"\n   *\n   *     this.get('Something');\n   *     // => ''\n   *\n   * @param {String} field\n   * @return {String}\n   * @api public\n   */\n\n  get (field) {\n    const req = this.req\n    switch (field = field.toLowerCase()) {\n      case 'referer':\n      case 'referrer':\n        return req.headers.referrer || req.headers.referer || ''\n      default:\n        return req.headers[field] || ''\n    }\n  },\n\n  /**\n   * Inspect implementation.\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  inspect () {\n    if (!this.req) return\n    return this.toJSON()\n  },\n\n  /**\n   * Return JSON representation.\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  toJSON () {\n    return only(this, [\n      'method',\n      'url',\n      'header'\n    ])\n  }\n}\n\n/**\n * Custom inspection implementation for newer Node.js versions.\n *\n * @return {Object}\n * @api public\n */\n\n/* istanbul ignore else */\nif (util.inspect.custom) {\n  module.exports[util.inspect.custom] = module.exports.inspect\n}\n\n/**\n * Split a comma-separated value string into an array of values, with an optional limit.\n * All the values are trimmed of whitespace.\n *\n * @param {string} value - The comma-separated value string to split.\n * @param {number} [limit] - The maximum number of values to return.\n * @returns {string[]} An array of values from the comma-separated string.\n */\nfunction splitCommaSeparatedValues (value, limit) {\n  return value.split(',', limit).map(v => v.trim())\n}\n", "/*!\n * content-disposition\n * Copyright(c) 2014-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = contentDisposition\nmodule.exports.parse = parse\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar basename = require('path').basename\nvar Buffer = require('safe-buffer').Buffer\n\n/**\n * RegExp to match non attr-char, *after* encodeURIComponent (i.e. not including \"%\")\n * @private\n */\n\nvar ENCODE_URL_ATTR_CHAR_REGEXP = /[\\x00-\\x20\"'()*,/:;<=>?@[\\\\\\]{}\\x7f]/g // eslint-disable-line no-control-regex\n\n/**\n * RegExp to match percent encoding escape.\n * @private\n */\n\nvar HEX_ESCAPE_REGEXP = /%[0-9A-Fa-f]{2}/\nvar HEX_ESCAPE_REPLACE_REGEXP = /%([0-9A-Fa-f]{2})/g\n\n/**\n * RegExp to match non-latin1 characters.\n * @private\n */\n\nvar NON_LATIN1_REGEXP = /[^\\x20-\\x7e\\xa0-\\xff]/g\n\n/**\n * RegExp to match quoted-pair in RFC 2616\n *\n * quoted-pair = \"\\\" CHAR\n * CHAR        = <any US-ASCII character (octets 0 - 127)>\n * @private\n */\n\nvar QESC_REGEXP = /\\\\([\\u0000-\\u007f])/g // eslint-disable-line no-control-regex\n\n/**\n * RegExp to match chars that must be quoted-pair in RFC 2616\n * @private\n */\n\nvar QUOTE_REGEXP = /([\\\\\"])/g\n\n/**\n * RegExp for various RFC 2616 grammar\n *\n * parameter     = token \"=\" ( token | quoted-string )\n * token         = 1*<any CHAR except CTLs or separators>\n * separators    = \"(\" | \")\" | \"<\" | \">\" | \"@\"\n *               | \",\" | \";\" | \":\" | \"\\\" | <\">\n *               | \"/\" | \"[\" | \"]\" | \"?\" | \"=\"\n *               | \"{\" | \"}\" | SP | HT\n * quoted-string = ( <\"> *(qdtext | quoted-pair ) <\"> )\n * qdtext        = <any TEXT except <\">>\n * quoted-pair   = \"\\\" CHAR\n * CHAR          = <any US-ASCII character (octets 0 - 127)>\n * TEXT          = <any OCTET except CTLs, but including LWS>\n * LWS           = [CRLF] 1*( SP | HT )\n * CRLF          = CR LF\n * CR            = <US-ASCII CR, carriage return (13)>\n * LF            = <US-ASCII LF, linefeed (10)>\n * SP            = <US-ASCII SP, space (32)>\n * HT            = <US-ASCII HT, horizontal-tab (9)>\n * CTL           = <any US-ASCII control character (octets 0 - 31) and DEL (127)>\n * OCTET         = <any 8-bit sequence of data>\n * @private\n */\n\nvar PARAM_REGEXP = /;[\\x09\\x20]*([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\\x09\\x20]*=[\\x09\\x20]*(\"(?:[\\x20!\\x23-\\x5b\\x5d-\\x7e\\x80-\\xff]|\\\\[\\x20-\\x7e])*\"|[!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\\x09\\x20]*/g // eslint-disable-line no-control-regex\nvar TEXT_REGEXP = /^[\\x20-\\x7e\\x80-\\xff]+$/\nvar TOKEN_REGEXP = /^[!#$%&'*+.0-9A-Z^_`a-z|~-]+$/\n\n/**\n * RegExp for various RFC 5987 grammar\n *\n * ext-value     = charset  \"'\" [ language ] \"'\" value-chars\n * charset       = \"UTF-8\" / \"ISO-8859-1\" / mime-charset\n * mime-charset  = 1*mime-charsetc\n * mime-charsetc = ALPHA / DIGIT\n *               / \"!\" / \"#\" / \"$\" / \"%\" / \"&\"\n *               / \"+\" / \"-\" / \"^\" / \"_\" / \"`\"\n *               / \"{\" / \"}\" / \"~\"\n * language      = ( 2*3ALPHA [ extlang ] )\n *               / 4ALPHA\n *               / 5*8ALPHA\n * extlang       = *3( \"-\" 3ALPHA )\n * value-chars   = *( pct-encoded / attr-char )\n * pct-encoded   = \"%\" HEXDIG HEXDIG\n * attr-char     = ALPHA / DIGIT\n *               / \"!\" / \"#\" / \"$\" / \"&\" / \"+\" / \"-\" / \".\"\n *               / \"^\" / \"_\" / \"`\" / \"|\" / \"~\"\n * @private\n */\n\nvar EXT_VALUE_REGEXP = /^([A-Za-z0-9!#$%&+\\-^_`{}~]+)'(?:[A-Za-z]{2,3}(?:-[A-Za-z]{3}){0,3}|[A-Za-z]{4,8}|)'((?:%[0-9A-Fa-f]{2}|[A-Za-z0-9!#$&+.^_`|~-])+)$/\n\n/**\n * RegExp for various RFC 6266 grammar\n *\n * disposition-type = \"inline\" | \"attachment\" | disp-ext-type\n * disp-ext-type    = token\n * disposition-parm = filename-parm | disp-ext-parm\n * filename-parm    = \"filename\" \"=\" value\n *                  | \"filename*\" \"=\" ext-value\n * disp-ext-parm    = token \"=\" value\n *                  | ext-token \"=\" ext-value\n * ext-token        = <the characters in token, followed by \"*\">\n * @private\n */\n\nvar DISPOSITION_TYPE_REGEXP = /^([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\\x09\\x20]*(?:$|;)/ // eslint-disable-line no-control-regex\n\n/**\n * Create an attachment Content-Disposition header.\n *\n * @param {string} [filename]\n * @param {object} [options]\n * @param {string} [options.type=attachment]\n * @param {string|boolean} [options.fallback=true]\n * @return {string}\n * @public\n */\n\nfunction contentDisposition (filename, options) {\n  var opts = options || {}\n\n  // get type\n  var type = opts.type || 'attachment'\n\n  // get parameters\n  var params = createparams(filename, opts.fallback)\n\n  // format into string\n  return format(new ContentDisposition(type, params))\n}\n\n/**\n * Create parameters object from filename and fallback.\n *\n * @param {string} [filename]\n * @param {string|boolean} [fallback=true]\n * @return {object}\n * @private\n */\n\nfunction createparams (filename, fallback) {\n  if (filename === undefined) {\n    return\n  }\n\n  var params = {}\n\n  if (typeof filename !== 'string') {\n    throw new TypeError('filename must be a string')\n  }\n\n  // fallback defaults to true\n  if (fallback === undefined) {\n    fallback = true\n  }\n\n  if (typeof fallback !== 'string' && typeof fallback !== 'boolean') {\n    throw new TypeError('fallback must be a string or boolean')\n  }\n\n  if (typeof fallback === 'string' && NON_LATIN1_REGEXP.test(fallback)) {\n    throw new TypeError('fallback must be ISO-8859-1 string')\n  }\n\n  // restrict to file base name\n  var name = basename(filename)\n\n  // determine if name is suitable for quoted string\n  var isQuotedString = TEXT_REGEXP.test(name)\n\n  // generate fallback name\n  var fallbackName = typeof fallback !== 'string'\n    ? fallback && getlatin1(name)\n    : basename(fallback)\n  var hasFallback = typeof fallbackName === 'string' && fallbackName !== name\n\n  // set extended filename parameter\n  if (hasFallback || !isQuotedString || HEX_ESCAPE_REGEXP.test(name)) {\n    params['filename*'] = name\n  }\n\n  // set filename parameter\n  if (isQuotedString || hasFallback) {\n    params.filename = hasFallback\n      ? fallbackName\n      : name\n  }\n\n  return params\n}\n\n/**\n * Format object to Content-Disposition header.\n *\n * @param {object} obj\n * @param {string} obj.type\n * @param {object} [obj.parameters]\n * @return {string}\n * @private\n */\n\nfunction format (obj) {\n  var parameters = obj.parameters\n  var type = obj.type\n\n  if (!type || typeof type !== 'string' || !TOKEN_REGEXP.test(type)) {\n    throw new TypeError('invalid type')\n  }\n\n  // start with normalized type\n  var string = String(type).toLowerCase()\n\n  // append parameters\n  if (parameters && typeof parameters === 'object') {\n    var param\n    var params = Object.keys(parameters).sort()\n\n    for (var i = 0; i < params.length; i++) {\n      param = params[i]\n\n      var val = param.substr(-1) === '*'\n        ? ustring(parameters[param])\n        : qstring(parameters[param])\n\n      string += '; ' + param + '=' + val\n    }\n  }\n\n  return string\n}\n\n/**\n * Decode a RFC 5987 field value (gracefully).\n *\n * @param {string} str\n * @return {string}\n * @private\n */\n\nfunction decodefield (str) {\n  var match = EXT_VALUE_REGEXP.exec(str)\n\n  if (!match) {\n    throw new TypeError('invalid extended field value')\n  }\n\n  var charset = match[1].toLowerCase()\n  var encoded = match[2]\n  var value\n\n  // to binary string\n  var binary = encoded.replace(HEX_ESCAPE_REPLACE_REGEXP, pdecode)\n\n  switch (charset) {\n    case 'iso-8859-1':\n      value = getlatin1(binary)\n      break\n    case 'utf-8':\n      value = Buffer.from(binary, 'binary').toString('utf8')\n      break\n    default:\n      throw new TypeError('unsupported charset in extended field')\n  }\n\n  return value\n}\n\n/**\n * Get ISO-8859-1 version of string.\n *\n * @param {string} val\n * @return {string}\n * @private\n */\n\nfunction getlatin1 (val) {\n  // simple Unicode -> ISO-8859-1 transformation\n  return String(val).replace(NON_LATIN1_REGEXP, '?')\n}\n\n/**\n * Parse Content-Disposition header string.\n *\n * @param {string} string\n * @return {object}\n * @public\n */\n\nfunction parse (string) {\n  if (!string || typeof string !== 'string') {\n    throw new TypeError('argument string is required')\n  }\n\n  var match = DISPOSITION_TYPE_REGEXP.exec(string)\n\n  if (!match) {\n    throw new TypeError('invalid type format')\n  }\n\n  // normalize type\n  var index = match[0].length\n  var type = match[1].toLowerCase()\n\n  var key\n  var names = []\n  var params = {}\n  var value\n\n  // calculate index to start at\n  index = PARAM_REGEXP.lastIndex = match[0].substr(-1) === ';'\n    ? index - 1\n    : index\n\n  // match parameters\n  while ((match = PARAM_REGEXP.exec(string))) {\n    if (match.index !== index) {\n      throw new TypeError('invalid parameter format')\n    }\n\n    index += match[0].length\n    key = match[1].toLowerCase()\n    value = match[2]\n\n    if (names.indexOf(key) !== -1) {\n      throw new TypeError('invalid duplicate parameter')\n    }\n\n    names.push(key)\n\n    if (key.indexOf('*') + 1 === key.length) {\n      // decode extended value\n      key = key.slice(0, -1)\n      value = decodefield(value)\n\n      // overwrite existing value\n      params[key] = value\n      continue\n    }\n\n    if (typeof params[key] === 'string') {\n      continue\n    }\n\n    if (value[0] === '\"') {\n      // remove quotes and escapes\n      value = value\n        .substr(1, value.length - 2)\n        .replace(QESC_REGEXP, '$1')\n    }\n\n    params[key] = value\n  }\n\n  if (index !== -1 && index !== string.length) {\n    throw new TypeError('invalid parameter format')\n  }\n\n  return new ContentDisposition(type, params)\n}\n\n/**\n * Percent decode a single character.\n *\n * @param {string} str\n * @param {string} hex\n * @return {string}\n * @private\n */\n\nfunction pdecode (str, hex) {\n  return String.fromCharCode(parseInt(hex, 16))\n}\n\n/**\n * Percent encode a single character.\n *\n * @param {string} char\n * @return {string}\n * @private\n */\n\nfunction pencode (char) {\n  return '%' + String(char)\n    .charCodeAt(0)\n    .toString(16)\n    .toUpperCase()\n}\n\n/**\n * Quote a string for HTTP.\n *\n * @param {string} val\n * @return {string}\n * @private\n */\n\nfunction qstring (val) {\n  var str = String(val)\n\n  return '\"' + str.replace(QUOTE_REGEXP, '\\\\$1') + '\"'\n}\n\n/**\n * Encode a Unicode string for HTTP (RFC 5987).\n *\n * @param {string} val\n * @return {string}\n * @private\n */\n\nfunction ustring (val) {\n  var str = String(val)\n\n  // percent encode as UTF-8\n  var encoded = encodeURIComponent(str)\n    .replace(ENCODE_URL_ATTR_CHAR_REGEXP, pencode)\n\n  return 'UTF-8\\'\\'' + encoded\n}\n\n/**\n * Class for parsed Content-Disposition header for v8 optimization\n *\n * @public\n * @param {string} type\n * @param {object} parameters\n * @constructor\n */\n\nfunction ContentDisposition (type, parameters) {\n  this.type = type\n  this.parameters = parameters\n}\n", "/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param  {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n  var str = '' + string;\n  var match = matchHtmlRegExp.exec(str);\n\n  if (!match) {\n    return str;\n  }\n\n  var escape;\n  var html = '';\n  var index = 0;\n  var lastIndex = 0;\n\n  for (index = match.index; index < str.length; index++) {\n    switch (str.charCodeAt(index)) {\n      case 34: // \"\n        escape = '&quot;';\n        break;\n      case 38: // &\n        escape = '&amp;';\n        break;\n      case 39: // '\n        escape = '&#39;';\n        break;\n      case 60: // <\n        escape = '&lt;';\n        break;\n      case 62: // >\n        escape = '&gt;';\n        break;\n      default:\n        continue;\n    }\n\n    if (lastIndex !== index) {\n      html += str.substring(lastIndex, index);\n    }\n\n    lastIndex = index + 1;\n    html += escape;\n  }\n\n  return lastIndex !== index\n    ? html + str.substring(lastIndex, index)\n    : html;\n}\n", "/*!\n * destroy\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar EventEmitter = require('events').EventEmitter\nvar ReadStream = require('fs').ReadStream\nvar Stream = require('stream')\nvar Zlib = require('zlib')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = destroy\n\n/**\n * Destroy the given stream, and optionally suppress any future `error` events.\n *\n * @param {object} stream\n * @param {boolean} suppress\n * @public\n */\n\nfunction destroy (stream, suppress) {\n  if (isFsReadStream(stream)) {\n    destroyReadStream(stream)\n  } else if (isZlibStream(stream)) {\n    destroyZlibStream(stream)\n  } else if (hasDestroy(stream)) {\n    stream.destroy()\n  }\n\n  if (isEventEmitter(stream) && suppress) {\n    stream.removeAllListeners('error')\n    stream.addListener('error', noop)\n  }\n\n  return stream\n}\n\n/**\n * Destroy a ReadStream.\n *\n * @param {object} stream\n * @private\n */\n\nfunction destroyReadStream (stream) {\n  stream.destroy()\n\n  if (typeof stream.close === 'function') {\n    // node.js core bug work-around\n    stream.on('open', onOpenClose)\n  }\n}\n\n/**\n * Close a Zlib stream.\n *\n * Zlib streams below Node.js 4.5.5 have a buggy implementation\n * of .close() when zlib encountered an error.\n *\n * @param {object} stream\n * @private\n */\n\nfunction closeZlibStream (stream) {\n  if (stream._hadError === true) {\n    var prop = stream._binding === null\n      ? '_binding'\n      : '_handle'\n\n    stream[prop] = {\n      close: function () { this[prop] = null }\n    }\n  }\n\n  stream.close()\n}\n\n/**\n * Destroy a Zlib stream.\n *\n * Zlib streams don't have a destroy function in Node.js 6. On top of that\n * simply calling destroy on a zlib stream in Node.js 8+ will result in a\n * memory leak. So until that is fixed, we need to call both close AND destroy.\n *\n * PR to fix memory leak: https://github.com/nodejs/node/pull/23734\n *\n * In Node.js 6+8, it's important that destroy is called before close as the\n * stream would otherwise emit the error 'zlib binding closed'.\n *\n * @param {object} stream\n * @private\n */\n\nfunction destroyZlibStream (stream) {\n  if (typeof stream.destroy === 'function') {\n    // node.js core bug work-around\n    // istanbul ignore if: node.js 0.8\n    if (stream._binding) {\n      // node.js < 0.10.0\n      stream.destroy()\n      if (stream._processing) {\n        stream._needDrain = true\n        stream.once('drain', onDrainClearBinding)\n      } else {\n        stream._binding.clear()\n      }\n    } else if (stream._destroy && stream._destroy !== Stream.Transform.prototype._destroy) {\n      // node.js >= 12, ^11.1.0, ^10.15.1\n      stream.destroy()\n    } else if (stream._destroy && typeof stream.close === 'function') {\n      // node.js 7, 8\n      stream.destroyed = true\n      stream.close()\n    } else {\n      // fallback\n      // istanbul ignore next\n      stream.destroy()\n    }\n  } else if (typeof stream.close === 'function') {\n    // node.js < 8 fallback\n    closeZlibStream(stream)\n  }\n}\n\n/**\n * Determine if stream has destroy.\n * @private\n */\n\nfunction hasDestroy (stream) {\n  return stream instanceof Stream &&\n    typeof stream.destroy === 'function'\n}\n\n/**\n * Determine if val is EventEmitter.\n * @private\n */\n\nfunction isEventEmitter (val) {\n  return val instanceof EventEmitter\n}\n\n/**\n * Determine if stream is fs.ReadStream stream.\n * @private\n */\n\nfunction isFsReadStream (stream) {\n  return stream instanceof ReadStream\n}\n\n/**\n * Determine if stream is Zlib stream.\n * @private\n */\n\nfunction isZlibStream (stream) {\n  return stream instanceof Zlib.Gzip ||\n    stream instanceof Zlib.Gunzip ||\n    stream instanceof Zlib.Deflate ||\n    stream instanceof Zlib.DeflateRaw ||\n    stream instanceof Zlib.Inflate ||\n    stream instanceof Zlib.InflateRaw ||\n    stream instanceof Zlib.Unzip\n}\n\n/**\n * No-op function.\n * @private\n */\n\nfunction noop () {}\n\n/**\n * On drain handler to clear binding.\n * @private\n */\n\n// istanbul ignore next: node.js 0.8\nfunction onDrainClearBinding () {\n  this._binding.clear()\n}\n\n/**\n * On open handler to close stream.\n * @private\n */\n\nfunction onOpenClose () {\n  if (typeof this.fd === 'number') {\n    // actually close down the fd\n    this.close()\n  }\n}\n", "/*!\n * encodeurl\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = encodeUrl\n\n/**\n * RegExp to match non-URL code points, *after* encoding (i.e. not including \"%\")\n * and including invalid escape sequences.\n * @private\n */\n\nvar ENCODE_CHARS_REGEXP = /(?:[^\\x21\\x23-\\x3B\\x3D\\x3F-\\x5F\\x61-\\x7A\\x7C\\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g\n\n/**\n * RegExp to match unmatched surrogate pair.\n * @private\n */\n\nvar UNMATCHED_SURROGATE_PAIR_REGEXP = /(^|[^\\uD800-\\uDBFF])[\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF]([^\\uDC00-\\uDFFF]|$)/g\n\n/**\n * String to replace unmatched surrogate pair with.\n * @private\n */\n\nvar UNMATCHED_SURROGATE_PAIR_REPLACE = '$1\\uFFFD$2'\n\n/**\n * Encode a URL to a percent-encoded form, excluding already-encoded sequences.\n *\n * This function will take an already-encoded URL and encode all the non-URL\n * code points. This function will not encode the \"%\" character unless it is\n * not part of a valid sequence (`%20` will be left as-is, but `%foo` will\n * be encoded as `%25foo`).\n *\n * This encode is meant to be \"safe\" and does not throw errors. It will try as\n * hard as it can to properly encode the given URL, including replacing any raw,\n * unpaired surrogate pairs with the Unicode replacement character prior to\n * encoding.\n *\n * @param {string} url\n * @return {string}\n * @public\n */\n\nfunction encodeUrl (url) {\n  return String(url)\n    .replace(UNMATCHED_SURROGATE_PAIR_REGEXP, UNMATCHED_SURROGATE_PAIR_REPLACE)\n    .replace(ENCODE_CHARS_REGEXP, encodeURI)\n}\n", "/*!\n * vary\n * Copyright(c) 2014-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n */\n\nmodule.exports = vary\nmodule.exports.append = append\n\n/**\n * RegExp to match field-name in RFC 7230 sec 3.2\n *\n * field-name    = token\n * token         = 1*tchar\n * tchar         = \"!\" / \"#\" / \"$\" / \"%\" / \"&\" / \"'\" / \"*\"\n *               / \"+\" / \"-\" / \".\" / \"^\" / \"_\" / \"`\" / \"|\" / \"~\"\n *               / DIGIT / ALPHA\n *               ; any VCHAR, except delimiters\n */\n\nvar FIELD_NAME_REGEXP = /^[!#$%&'*+\\-.^_`|~0-9A-Za-z]+$/\n\n/**\n * Append a field to a vary header.\n *\n * @param {String} header\n * @param {String|Array} field\n * @return {String}\n * @public\n */\n\nfunction append (header, field) {\n  if (typeof header !== 'string') {\n    throw new TypeError('header argument is required')\n  }\n\n  if (!field) {\n    throw new TypeError('field argument is required')\n  }\n\n  // get fields array\n  var fields = !Array.isArray(field)\n    ? parse(String(field))\n    : field\n\n  // assert on invalid field names\n  for (var j = 0; j < fields.length; j++) {\n    if (!FIELD_NAME_REGEXP.test(fields[j])) {\n      throw new TypeError('field argument contains an invalid header name')\n    }\n  }\n\n  // existing, unspecified vary\n  if (header === '*') {\n    return header\n  }\n\n  // enumerate current values\n  var val = header\n  var vals = parse(header.toLowerCase())\n\n  // unspecified vary\n  if (fields.indexOf('*') !== -1 || vals.indexOf('*') !== -1) {\n    return '*'\n  }\n\n  for (var i = 0; i < fields.length; i++) {\n    var fld = fields[i].toLowerCase()\n\n    // append value (case-preserving)\n    if (vals.indexOf(fld) === -1) {\n      vals.push(fld)\n      val = val\n        ? val + ', ' + fields[i]\n        : fields[i]\n    }\n  }\n\n  return val\n}\n\n/**\n * Parse a vary header into an array.\n *\n * @param {String} header\n * @return {Array}\n * @private\n */\n\nfunction parse (header) {\n  var end = 0\n  var list = []\n  var start = 0\n\n  // gather tokens\n  for (var i = 0, len = header.length; i < len; i++) {\n    switch (header.charCodeAt(i)) {\n      case 0x20: /*   */\n        if (start === end) {\n          start = end = i + 1\n        }\n        break\n      case 0x2c: /* , */\n        list.push(header.substring(start, end))\n        start = end = i + 1\n        break\n      default:\n        end = i + 1\n        break\n    }\n  }\n\n  // final token\n  list.push(header.substring(start, end))\n\n  return list\n}\n\n/**\n * Mark that a request is varied on a header field.\n *\n * @param {Object} res\n * @param {String|Array} field\n * @public\n */\n\nfunction vary (res, field) {\n  if (!res || !res.getHeader || !res.setHeader) {\n    // quack quack\n    throw new TypeError('res argument is required')\n  }\n\n  // get existing header\n  var val = res.getHeader('Vary') || ''\n  var header = Array.isArray(val)\n    ? val.join(', ')\n    : String(val)\n\n  // set new header\n  if ((val = append(header, field))) {\n    res.setHeader('Vary', val)\n  }\n}\n", "'use strict'\n\nconst Stream = require('stream')\n\n// TODO: use a third party library for this\n\nmodule.exports = (stream) => {\n  return (\n    stream instanceof Stream ||\n    (stream !== null &&\n      typeof stream === 'object' &&\n      !!stream.readable &&\n      typeof stream.pipe === 'function' &&\n      typeof stream.read === 'function' &&\n      typeof stream.readable === 'boolean' &&\n      typeof stream.readableObjectMode === 'boolean' &&\n      typeof stream.destroy === 'function' &&\n      typeof stream.destroyed === 'boolean')\n  )\n}\n", "'use strict'\n\n/**\n * Module dependencies.\n */\n\nconst assert = require('node:assert')\nconst extname = require('node:path').extname\nconst util = require('node:util')\n\nconst contentDisposition = require('content-disposition')\nconst onFinish = require('on-finished')\nconst escape = require('escape-html')\nconst typeis = require('type-is').is\nconst statuses = require('statuses')\nconst destroy = require('destroy')\nconst encodeUrl = require('encodeurl')\nconst vary = require('vary')\nconst getType = require('mime-types').contentType\n\nconst isStream = require('./is-stream.js')\nconst only = require('./only.js')\n\n/**\n * Prototype.\n */\n\nmodule.exports = {\n\n  /**\n   * Return the request socket.\n   *\n   * @return {Connection}\n   * @api public\n   */\n\n  get socket () {\n    return this.res.socket\n  },\n\n  /**\n   * Return response header.\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  get header () {\n    const { res } = this\n    return typeof res.getHeaders === 'function'\n      ? res.getHeaders()\n      : res._headers || {} // Node < 7.7\n  },\n\n  /**\n   * Return response header, alias as response.header\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  get headers () {\n    return this.header\n  },\n\n  /**\n   * Get response status code.\n   *\n   * @return {Number}\n   * @api public\n   */\n\n  get status () {\n    return this.res.statusCode\n  },\n\n  /**\n   * Set response status code.\n   *\n   * @param {Number} code\n   * @api public\n   */\n\n  set status (code) {\n    if (this.headerSent) return\n\n    assert(Number.isInteger(code), 'status code must be a number')\n    assert(code >= 100 && code <= 999, `invalid status code: ${code}`)\n    this._explicitStatus = true\n    this.res.statusCode = code\n    if (this.req.httpVersionMajor < 2) this.res.statusMessage = statuses.message[code]\n    if (this.body && statuses.empty[code]) this.body = null\n  },\n\n  /**\n   * Get response status message\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get message () {\n    return this.res.statusMessage || statuses.message[this.status]\n  },\n\n  /**\n   * Set response status message\n   *\n   * @param {String} msg\n   * @api public\n   */\n\n  set message (msg) {\n    this.res.statusMessage = msg\n  },\n\n  /**\n   * Get response body.\n   *\n   * @return {Mixed}\n   * @api public\n   */\n\n  get body () {\n    return this._body\n  },\n\n  /**\n   * Set response body.\n   *\n   * @param {String|Buffer|Object|Stream|ReadableStream|Blob|Response} val\n   * @api public\n   */\n\n  set body (val) {\n    const original = this._body\n    this._body = val\n\n    const cleanupPreviousStream = () => {\n      if (original && isStream(original)) {\n        original.once('error', () => {})\n        // Only destroy if the new value is not a stream\n        if (!isStream(val)) {\n          destroy(original)\n        }\n      }\n    }\n\n    // no content\n\n    if (val == null) {\n      if (!statuses.empty[this.status]) {\n        if (this.type === 'application/json') {\n          this._body = 'null'\n          return\n        }\n        this.status = 204\n      }\n      if (val === null) this._explicitNullBody = true\n      this.remove('Content-Type')\n      this.remove('Content-Length')\n      this.remove('Transfer-Encoding')\n      cleanupPreviousStream()\n      return\n    }\n\n    // set the status\n    if (!this._explicitStatus) this.status = 200\n\n    // set the content-type only if not yet set\n    const setType = !this.has('Content-Type')\n\n    // string\n    if (typeof val === 'string') {\n      if (setType) this.type = /^\\s*</.test(val) ? 'html' : 'text'\n      this.length = Buffer.byteLength(val)\n      cleanupPreviousStream()\n      return\n    }\n\n    // buffer\n    if (Buffer.isBuffer(val)) {\n      if (setType) this.type = 'bin'\n      this.length = val.length\n      cleanupPreviousStream()\n      return\n    }\n\n    // stream\n    if (isStream(val)) {\n      onFinish(this.res, destroy.bind(null, val))\n      if (original !== val) {\n        if (original != null) this.remove('Content-Length')\n        cleanupPreviousStream()\n      }\n\n      if (setType) this.type = 'bin'\n      return\n    }\n\n    // ReadableStream\n    if (val instanceof ReadableStream) {\n      if (setType) this.type = 'bin'\n      cleanupPreviousStream()\n      return\n    }\n\n    // blob\n    if (val instanceof Blob) {\n      if (setType) this.type = 'bin'\n      this.length = val.size\n      cleanupPreviousStream()\n      return\n    }\n\n    // Response\n    if (val instanceof Response) {\n      this.status = val.status\n      if (setType) this.type = 'bin'\n      const headers = val.headers\n      for (const key of headers.keys()) {\n        this.set(key, headers.get(key))\n      }\n      cleanupPreviousStream()\n      return\n    }\n\n    // json\n    this.remove('Content-Length')\n    if (!this.type || !/\\bjson\\b/i.test(this.type)) this.type = 'json'\n    cleanupPreviousStream()\n  },\n\n  /**\n   * Set Content-Length field to `n`.\n   *\n   * @param {Number} n\n   * @api public\n   */\n\n  set length (n) {\n    if (!this.has('Transfer-Encoding')) {\n      this.set('Content-Length', n)\n    }\n  },\n\n  /**\n   * Return parsed response Content-Length when present.\n   *\n   * @return {Number}\n   * @api public\n   */\n\n  get length () {\n    if (this.has('Content-Length')) {\n      return parseInt(this.get('Content-Length'), 10) || 0\n    }\n\n    const { body } = this\n    if (!body || isStream(body)) return undefined\n    if (typeof body === 'string') return Buffer.byteLength(body)\n    if (Buffer.isBuffer(body)) return body.length\n    return Buffer.byteLength(JSON.stringify(body))\n  },\n\n  /**\n   * Check if a header has been written to the socket.\n   *\n   * @return {Boolean}\n   * @api public\n   */\n\n  get headerSent () {\n    return this.res.headersSent\n  },\n\n  /**\n   * Vary on `field`.\n   *\n   * @param {String|String[]} field\n   * @api public\n   */\n\n  vary (field) {\n    if (this.headerSent) return\n\n    vary(this.res, field)\n  },\n\n  /**\n   * Perform a 302 redirect to `url`.\n   *\n   * Examples:\n   *\n   *    this.redirect('/login');\n   *    this.redirect('http://google.com');\n   *\n   * @param {String} url\n   * @api public\n   */\n\n  redirect (url) {\n    if (/^https?:\\/\\//i.test(url)) {\n      // formatting url again avoid security escapes\n      url = new URL(url).toString()\n    }\n    this.set('Location', encodeUrl(url))\n\n    // status\n    if (!statuses.redirect[this.status]) this.status = 302\n\n    // html\n    if (this.ctx.accepts('html')) {\n      url = escape(url)\n      this.type = 'text/html; charset=utf-8'\n      this.body = `Redirecting to ${url}.`\n      return\n    }\n\n    // text\n    this.type = 'text/plain; charset=utf-8'\n    this.body = `Redirecting to ${url}.`\n  },\n\n  /**\n   * Perform a special-cased \"back\" to provide Referrer support.\n   * When Referrer is not present, `alt` or \"/\" is used.\n   *\n   * Examples:\n   *\n   *    ctx.back()\n   *    ctx.back('/index.html')\n   *\n   * @param {String} [alt]\n   * @api public\n   */\n\n  back (alt) {\n    const referrer = this.ctx.get('Referrer')\n    if (referrer) {\n      // referrer is an absolute URL, check if it's the same origin\n      const url = new URL(referrer, this.ctx.href)\n      if (url.host === this.ctx.host) {\n        this.redirect(referrer)\n        return\n      }\n    }\n\n    // no referrer, use alt or '/'\n    this.redirect(alt || '/')\n  },\n\n  /**\n   * Set Content-Disposition header to \"attachment\" with optional `filename`.\n   *\n   * @param {String} [filename]\n   * @param {object} [options]\n   * @param {string} [options.type=attachment]\n   * @param {string|boolean} [options.fallback=true]\n   * @api public\n   */\n\n  attachment (filename, options) {\n    if (filename && !this.has('Content-Type')) {\n      this.type = extname(filename)\n    }\n    this.set('Content-Disposition', contentDisposition(filename, options))\n  },\n\n  /**\n   * Set Content-Type response header with `type` through `mime.lookup()`\n   * when it does not contain a charset.\n   *\n   * Examples:\n   *\n   *     this.type = '.html';\n   *     this.type = 'html';\n   *     this.type = 'json';\n   *     this.type = 'application/json';\n   *     this.type = 'png';\n   *\n   * @param {String} type\n   * @api public\n   */\n\n  set type (type) {\n    type = getType(type)\n    if (type) {\n      this.set('Content-Type', type)\n    } else {\n      this.remove('Content-Type')\n    }\n  },\n\n  /**\n   * Set the Last-Modified date using a string or a Date.\n   *\n   *     this.response.lastModified = new Date();\n   *     this.response.lastModified = '2013-09-13';\n   *\n   * @param {String|Date} val\n   * @api public\n   */\n\n  set lastModified (val) {\n    if (typeof val === 'string') val = new Date(val)\n    this.set('Last-Modified', val.toUTCString())\n  },\n\n  /**\n   * Get the Last-Modified date in Date form, if it exists.\n   *\n   * @return {Date}\n   * @api public\n   */\n\n  get lastModified () {\n    const date = this.get('last-modified')\n    if (date) return new Date(date)\n  },\n\n  /**\n   * Set the ETag of a response.\n   * This will normalize the quotes if necessary.\n   *\n   *     this.response.etag = 'md5hashsum';\n   *     this.response.etag = '\"md5hashsum\"';\n   *     this.response.etag = 'W/\"123456789\"';\n   *\n   * @param {String} val\n   * @api public\n   */\n\n  set etag (val) {\n    if (!/^(W\\/)?\"/.test(val)) val = `\"${val}\"`\n    this.set('ETag', val)\n  },\n\n  /**\n   * Get the ETag of a response.\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get etag () {\n    return this.get('ETag')\n  },\n\n  /**\n   * Return the response mime type void of\n   * parameters such as \"charset\".\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get type () {\n    const type = this.get('Content-Type')\n    if (!type) return ''\n    return type.split(';', 1)[0]\n  },\n\n  /**\n   * Check whether the response is one of the listed types.\n   * Pretty much the same as `this.request.is()`.\n   *\n   * @param {String|String[]} [type]\n   * @param {String[]} [types]\n   * @return {String|false}\n   * @api public\n   */\n\n  is (type, ...types) {\n    return typeis(this.type, type, ...types)\n  },\n\n  /**\n   * Return response header.\n   *\n   * Examples:\n   *\n   *     this.get('Content-Type');\n   *     // => \"text/plain\"\n   *\n   *     this.get('content-type');\n   *     // => \"text/plain\"\n   *\n   * @param {String} field\n   * @return {any}\n   * @api public\n   */\n\n  get (field) {\n    return this.res.getHeader(field)\n  },\n\n  /**\n   * Returns true if the header identified by name is currently set in the outgoing headers.\n   * The header name matching is case-insensitive.\n   *\n   * Examples:\n   *\n   *     this.has('Content-Type');\n   *     // => true\n   *\n   *     this.get('content-type');\n   *     // => true\n   *\n   * @param {String} field\n   * @return {boolean}\n   * @api public\n   */\n\n  has (field) {\n    return typeof this.res.hasHeader === 'function'\n      ? this.res.hasHeader(field)\n      // Node < 7.7\n      : field.toLowerCase() in this.headers\n  },\n\n  /**\n   * Set header `field` to `val` or pass\n   * an object of header fields.\n   *\n   * Examples:\n   *\n   *    this.set('Foo', ['bar', 'baz']);\n   *    this.set('Accept', 'application/json');\n   *    this.set({ Accept: 'text/plain', 'X-API-Key': 'tobi' });\n   *\n   * @param {String|{ [k: string]: any }} field\n   * @param {any} [val]\n   * @api public\n   */\n\n  set (field, val) {\n    if (this.headerSent || !field) return\n\n    if (typeof field === 'string') {\n      this.res.setHeader(field, val)\n    } else {\n      Object.keys(field).forEach(header => this.res.setHeader(header, field[header]))\n    }\n  },\n\n  /**\n   * Append additional header `field` with value `val`.\n   *\n   * Examples:\n   *\n   * ```\n   * this.append('Link', ['<http://localhost/>', '<http://localhost:3000/>']);\n   * this.append('Set-Cookie', 'foo=bar; Path=/; HttpOnly');\n   * this.append('Warning', '199 Miscellaneous warning');\n   * ```\n   *\n   * @param {String} field\n   * @param {*} val\n   * @api public\n   */\n\n  append (field, val) {\n    const prev = this.get(field)\n\n    if (prev) {\n      val = Array.isArray(prev)\n        ? prev.concat(val)\n        : [prev].concat(val)\n    }\n\n    return this.set(field, val)\n  },\n\n  /**\n   * Remove header `field`.\n   *\n   * @param {String} field\n   * @api public\n   */\n\n  remove (field) {\n    if (this.headerSent) return\n\n    this.res.removeHeader(field)\n  },\n\n  /**\n   * Checks if the request is writable.\n   * Tests for the existence of the socket\n   * as node sometimes does not set it.\n   *\n   * @return {Boolean}\n   * @api private\n   */\n\n  get writable () {\n    // can't write any more after response finished\n    // response.writableEnded is available since Node > 12.9\n    // https://nodejs.org/api/http.html#http_response_writableended\n    // response.finished is undocumented feature of previous Node versions\n    // https://stackoverflow.com/questions/16254385/undocumented-response-finished-in-node-js\n    if (this.res.writableEnded || this.res.finished) return false\n\n    const socket = this.res.socket\n    // There are already pending outgoing res, but still writable\n    // https://github.com/nodejs/node/blob/v4.4.7/lib/_http_server.js#L486\n    if (!socket) return true\n    return socket.writable\n  },\n\n  /**\n   * Inspect implementation.\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  inspect () {\n    if (!this.res) return\n    const o = this.toJSON()\n    o.body = this.body\n    return o\n  },\n\n  /**\n   * Return JSON representation.\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  toJSON () {\n    return only(this, [\n      'status',\n      'message',\n      'header'\n    ])\n  },\n\n  /**\n   * Flush any set headers and begin the body\n   */\n\n  flushHeaders () {\n    this.res.flushHeaders()\n  }\n}\n\n/**\n * Custom inspection implementation for node 6+.\n *\n * @return {Object}\n * @api public\n */\n\n/* istanbul ignore else */\nif (util.inspect.custom) {\n  module.exports[util.inspect.custom] = module.exports.inspect\n}\n", "/*!\n * depd\n * Copyright(c) 2014 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n */\n\nmodule.exports = callSiteToString\n\n/**\n * Format a CallSite file location to a string.\n */\n\nfunction callSiteFileLocation (callSite) {\n  var fileName\n  var fileLocation = ''\n\n  if (callSite.isNative()) {\n    fileLocation = 'native'\n  } else if (callSite.isEval()) {\n    fileName = callSite.getScriptNameOrSourceURL()\n    if (!fileName) {\n      fileLocation = callSite.getEvalOrigin()\n    }\n  } else {\n    fileName = callSite.getFileName()\n  }\n\n  if (fileName) {\n    fileLocation += fileName\n\n    var lineNumber = callSite.getLineNumber()\n    if (lineNumber != null) {\n      fileLocation += ':' + lineNumber\n\n      var columnNumber = callSite.getColumnNumber()\n      if (columnNumber) {\n        fileLocation += ':' + columnNumber\n      }\n    }\n  }\n\n  return fileLocation || 'unknown source'\n}\n\n/**\n * Format a CallSite to a string.\n */\n\nfunction callSiteToString (callSite) {\n  var addSuffix = true\n  var fileLocation = callSiteFileLocation(callSite)\n  var functionName = callSite.getFunctionName()\n  var isConstructor = callSite.isConstructor()\n  var isMethodCall = !(callSite.isToplevel() || isConstructor)\n  var line = ''\n\n  if (isMethodCall) {\n    var methodName = callSite.getMethodName()\n    var typeName = getConstructorName(callSite)\n\n    if (functionName) {\n      if (typeName && functionName.indexOf(typeName) !== 0) {\n        line += typeName + '.'\n      }\n\n      line += functionName\n\n      if (methodName && functionName.lastIndexOf('.' + methodName) !== functionName.length - methodName.length - 1) {\n        line += ' [as ' + methodName + ']'\n      }\n    } else {\n      line += typeName + '.' + (methodName || '<anonymous>')\n    }\n  } else if (isConstructor) {\n    line += 'new ' + (functionName || '<anonymous>')\n  } else if (functionName) {\n    line += functionName\n  } else {\n    addSuffix = false\n    line += fileLocation\n  }\n\n  if (addSuffix) {\n    line += ' (' + fileLocation + ')'\n  }\n\n  return line\n}\n\n/**\n * Get constructor name of reviver.\n */\n\nfunction getConstructorName (obj) {\n  var receiver = obj.receiver\n  return (receiver.constructor && receiver.constructor.name) || null\n}\n", "/*!\n * depd\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = eventListenerCount\n\n/**\n * Get the count of listeners on an event emitter of a specific type.\n */\n\nfunction eventListenerCount (emitter, type) {\n  return emitter.listeners(type).length\n}\n", "/*!\n * depd\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar EventEmitter = require('events').EventEmitter\n\n/**\n * Module exports.\n * @public\n */\n\nlazyProperty(module.exports, 'callSiteToString', function callSiteToString () {\n  var limit = Error.stackTraceLimit\n  var obj = {}\n  var prep = Error.prepareStackTrace\n\n  function prepareObjectStackTrace (obj, stack) {\n    return stack\n  }\n\n  Error.prepareStackTrace = prepareObjectStackTrace\n  Error.stackTraceLimit = 2\n\n  // capture the stack\n  Error.captureStackTrace(obj)\n\n  // slice the stack\n  var stack = obj.stack.slice()\n\n  Error.prepareStackTrace = prep\n  Error.stackTraceLimit = limit\n\n  return stack[0].toString ? toString : require('./callsite-tostring')\n})\n\nlazyProperty(module.exports, 'eventListenerCount', function eventListenerCount () {\n  return EventEmitter.listenerCount || require('./event-listener-count')\n})\n\n/**\n * Define a lazy property.\n */\n\nfunction lazyProperty (obj, prop, getter) {\n  function get () {\n    var val = getter()\n\n    Object.defineProperty(obj, prop, {\n      configurable: true,\n      enumerable: true,\n      value: val\n    })\n\n    return val\n  }\n\n  Object.defineProperty(obj, prop, {\n    configurable: true,\n    enumerable: true,\n    get: get\n  })\n}\n\n/**\n * Call toString() on the obj\n */\n\nfunction toString (obj) {\n  return obj.toString()\n}\n", "/*!\n * depd\n * Copyright(c) 2014-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * Module dependencies.\n */\n\nvar callSiteToString = require('./lib/compat').callSiteToString\nvar eventListenerCount = require('./lib/compat').eventListenerCount\nvar relative = require('path').relative\n\n/**\n * Module exports.\n */\n\nmodule.exports = depd\n\n/**\n * Get the path to base files on.\n */\n\nvar basePath = process.cwd()\n\n/**\n * Determine if namespace is contained in the string.\n */\n\nfunction containsNamespace (str, namespace) {\n  var vals = str.split(/[ ,]+/)\n  var ns = String(namespace).toLowerCase()\n\n  for (var i = 0; i < vals.length; i++) {\n    var val = vals[i]\n\n    // namespace contained\n    if (val && (val === '*' || val.toLowerCase() === ns)) {\n      return true\n    }\n  }\n\n  return false\n}\n\n/**\n * Convert a data descriptor to accessor descriptor.\n */\n\nfunction convertDataDescriptorToAccessor (obj, prop, message) {\n  var descriptor = Object.getOwnPropertyDescriptor(obj, prop)\n  var value = descriptor.value\n\n  descriptor.get = function getter () { return value }\n\n  if (descriptor.writable) {\n    descriptor.set = function setter (val) { return (value = val) }\n  }\n\n  delete descriptor.value\n  delete descriptor.writable\n\n  Object.defineProperty(obj, prop, descriptor)\n\n  return descriptor\n}\n\n/**\n * Create arguments string to keep arity.\n */\n\nfunction createArgumentsString (arity) {\n  var str = ''\n\n  for (var i = 0; i < arity; i++) {\n    str += ', arg' + i\n  }\n\n  return str.substr(2)\n}\n\n/**\n * Create stack string from stack.\n */\n\nfunction createStackString (stack) {\n  var str = this.name + ': ' + this.namespace\n\n  if (this.message) {\n    str += ' deprecated ' + this.message\n  }\n\n  for (var i = 0; i < stack.length; i++) {\n    str += '\\n    at ' + callSiteToString(stack[i])\n  }\n\n  return str\n}\n\n/**\n * Create deprecate for namespace in caller.\n */\n\nfunction depd (namespace) {\n  if (!namespace) {\n    throw new TypeError('argument namespace is required')\n  }\n\n  var stack = getStack()\n  var site = callSiteLocation(stack[1])\n  var file = site[0]\n\n  function deprecate (message) {\n    // call to self as log\n    log.call(deprecate, message)\n  }\n\n  deprecate._file = file\n  deprecate._ignored = isignored(namespace)\n  deprecate._namespace = namespace\n  deprecate._traced = istraced(namespace)\n  deprecate._warned = Object.create(null)\n\n  deprecate.function = wrapfunction\n  deprecate.property = wrapproperty\n\n  return deprecate\n}\n\n/**\n * Determine if namespace is ignored.\n */\n\nfunction isignored (namespace) {\n  /* istanbul ignore next: tested in a child processs */\n  if (process.noDeprecation) {\n    // --no-deprecation support\n    return true\n  }\n\n  var str = process.env.NO_DEPRECATION || ''\n\n  // namespace ignored\n  return containsNamespace(str, namespace)\n}\n\n/**\n * Determine if namespace is traced.\n */\n\nfunction istraced (namespace) {\n  /* istanbul ignore next: tested in a child processs */\n  if (process.traceDeprecation) {\n    // --trace-deprecation support\n    return true\n  }\n\n  var str = process.env.TRACE_DEPRECATION || ''\n\n  // namespace traced\n  return containsNamespace(str, namespace)\n}\n\n/**\n * Display deprecation message.\n */\n\nfunction log (message, site) {\n  var haslisteners = eventListenerCount(process, 'deprecation') !== 0\n\n  // abort early if no destination\n  if (!haslisteners && this._ignored) {\n    return\n  }\n\n  var caller\n  var callFile\n  var callSite\n  var depSite\n  var i = 0\n  var seen = false\n  var stack = getStack()\n  var file = this._file\n\n  if (site) {\n    // provided site\n    depSite = site\n    callSite = callSiteLocation(stack[1])\n    callSite.name = depSite.name\n    file = callSite[0]\n  } else {\n    // get call site\n    i = 2\n    depSite = callSiteLocation(stack[i])\n    callSite = depSite\n  }\n\n  // get caller of deprecated thing in relation to file\n  for (; i < stack.length; i++) {\n    caller = callSiteLocation(stack[i])\n    callFile = caller[0]\n\n    if (callFile === file) {\n      seen = true\n    } else if (callFile === this._file) {\n      file = this._file\n    } else if (seen) {\n      break\n    }\n  }\n\n  var key = caller\n    ? depSite.join(':') + '__' + caller.join(':')\n    : undefined\n\n  if (key !== undefined && key in this._warned) {\n    // already warned\n    return\n  }\n\n  this._warned[key] = true\n\n  // generate automatic message from call site\n  var msg = message\n  if (!msg) {\n    msg = callSite === depSite || !callSite.name\n      ? defaultMessage(depSite)\n      : defaultMessage(callSite)\n  }\n\n  // emit deprecation if listeners exist\n  if (haslisteners) {\n    var err = DeprecationError(this._namespace, msg, stack.slice(i))\n    process.emit('deprecation', err)\n    return\n  }\n\n  // format and write message\n  var format = process.stderr.isTTY\n    ? formatColor\n    : formatPlain\n  var output = format.call(this, msg, caller, stack.slice(i))\n  process.stderr.write(output + '\\n', 'utf8')\n}\n\n/**\n * Get call site location as array.\n */\n\nfunction callSiteLocation (callSite) {\n  var file = callSite.getFileName() || '<anonymous>'\n  var line = callSite.getLineNumber()\n  var colm = callSite.getColumnNumber()\n\n  if (callSite.isEval()) {\n    file = callSite.getEvalOrigin() + ', ' + file\n  }\n\n  var site = [file, line, colm]\n\n  site.callSite = callSite\n  site.name = callSite.getFunctionName()\n\n  return site\n}\n\n/**\n * Generate a default message from the site.\n */\n\nfunction defaultMessage (site) {\n  var callSite = site.callSite\n  var funcName = site.name\n\n  // make useful anonymous name\n  if (!funcName) {\n    funcName = '<anonymous@' + formatLocation(site) + '>'\n  }\n\n  var context = callSite.getThis()\n  var typeName = context && callSite.getTypeName()\n\n  // ignore useless type name\n  if (typeName === 'Object') {\n    typeName = undefined\n  }\n\n  // make useful type name\n  if (typeName === 'Function') {\n    typeName = context.name || typeName\n  }\n\n  return typeName && callSite.getMethodName()\n    ? typeName + '.' + funcName\n    : funcName\n}\n\n/**\n * Format deprecation message without color.\n */\n\nfunction formatPlain (msg, caller, stack) {\n  var timestamp = new Date().toUTCString()\n\n  var formatted = timestamp +\n    ' ' + this._namespace +\n    ' deprecated ' + msg\n\n  // add stack trace\n  if (this._traced) {\n    for (var i = 0; i < stack.length; i++) {\n      formatted += '\\n    at ' + callSiteToString(stack[i])\n    }\n\n    return formatted\n  }\n\n  if (caller) {\n    formatted += ' at ' + formatLocation(caller)\n  }\n\n  return formatted\n}\n\n/**\n * Format deprecation message with color.\n */\n\nfunction formatColor (msg, caller, stack) {\n  var formatted = '\\x1b[36;1m' + this._namespace + '\\x1b[22;39m' + // bold cyan\n    ' \\x1b[33;1mdeprecated\\x1b[22;39m' + // bold yellow\n    ' \\x1b[0m' + msg + '\\x1b[39m' // reset\n\n  // add stack trace\n  if (this._traced) {\n    for (var i = 0; i < stack.length; i++) {\n      formatted += '\\n    \\x1b[36mat ' + callSiteToString(stack[i]) + '\\x1b[39m' // cyan\n    }\n\n    return formatted\n  }\n\n  if (caller) {\n    formatted += ' \\x1b[36m' + formatLocation(caller) + '\\x1b[39m' // cyan\n  }\n\n  return formatted\n}\n\n/**\n * Format call site location.\n */\n\nfunction formatLocation (callSite) {\n  return relative(basePath, callSite[0]) +\n    ':' + callSite[1] +\n    ':' + callSite[2]\n}\n\n/**\n * Get the stack as array of call sites.\n */\n\nfunction getStack () {\n  var limit = Error.stackTraceLimit\n  var obj = {}\n  var prep = Error.prepareStackTrace\n\n  Error.prepareStackTrace = prepareObjectStackTrace\n  Error.stackTraceLimit = Math.max(10, limit)\n\n  // capture the stack\n  Error.captureStackTrace(obj)\n\n  // slice this function off the top\n  var stack = obj.stack.slice(1)\n\n  Error.prepareStackTrace = prep\n  Error.stackTraceLimit = limit\n\n  return stack\n}\n\n/**\n * Capture call site stack from v8.\n */\n\nfunction prepareObjectStackTrace (obj, stack) {\n  return stack\n}\n\n/**\n * Return a wrapped function in a deprecation message.\n */\n\nfunction wrapfunction (fn, message) {\n  if (typeof fn !== 'function') {\n    throw new TypeError('argument fn must be a function')\n  }\n\n  var args = createArgumentsString(fn.length)\n  var deprecate = this // eslint-disable-line no-unused-vars\n  var stack = getStack()\n  var site = callSiteLocation(stack[1])\n\n  site.name = fn.name\n\n   // eslint-disable-next-line no-eval\n  var deprecatedfn = eval('(function (' + args + ') {\\n' +\n    '\"use strict\"\\n' +\n    'log.call(deprecate, message, site)\\n' +\n    'return fn.apply(this, arguments)\\n' +\n    '})')\n\n  return deprecatedfn\n}\n\n/**\n * Wrap property in a deprecation message.\n */\n\nfunction wrapproperty (obj, prop, message) {\n  if (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n    throw new TypeError('argument obj must be object')\n  }\n\n  var descriptor = Object.getOwnPropertyDescriptor(obj, prop)\n\n  if (!descriptor) {\n    throw new TypeError('must call property on owner object')\n  }\n\n  if (!descriptor.configurable) {\n    throw new TypeError('property must be configurable')\n  }\n\n  var deprecate = this\n  var stack = getStack()\n  var site = callSiteLocation(stack[1])\n\n  // set site name\n  site.name = prop\n\n  // convert data descriptor\n  if ('value' in descriptor) {\n    descriptor = convertDataDescriptorToAccessor(obj, prop, message)\n  }\n\n  var get = descriptor.get\n  var set = descriptor.set\n\n  // wrap getter\n  if (typeof get === 'function') {\n    descriptor.get = function getter () {\n      log.call(deprecate, message, site)\n      return get.apply(this, arguments)\n    }\n  }\n\n  // wrap setter\n  if (typeof set === 'function') {\n    descriptor.set = function setter () {\n      log.call(deprecate, message, site)\n      return set.apply(this, arguments)\n    }\n  }\n\n  Object.defineProperty(obj, prop, descriptor)\n}\n\n/**\n * Create DeprecationError for deprecation\n */\n\nfunction DeprecationError (namespace, message, stack) {\n  var error = new Error()\n  var stackString\n\n  Object.defineProperty(error, 'constructor', {\n    value: DeprecationError\n  })\n\n  Object.defineProperty(error, 'message', {\n    configurable: true,\n    enumerable: false,\n    value: message,\n    writable: true\n  })\n\n  Object.defineProperty(error, 'name', {\n    enumerable: false,\n    configurable: true,\n    value: 'DeprecationError',\n    writable: true\n  })\n\n  Object.defineProperty(error, 'namespace', {\n    configurable: true,\n    enumerable: false,\n    value: namespace,\n    writable: true\n  })\n\n  Object.defineProperty(error, 'stack', {\n    configurable: true,\n    enumerable: false,\n    get: function () {\n      if (stackString !== undefined) {\n        return stackString\n      }\n\n      // prepare stack trace\n      return (stackString = createStackString.call(this, stack))\n    },\n    set: function setter (val) {\n      stackString = val\n    }\n  })\n\n  return error\n}\n", "{\n  \"100\": \"Continue\",\n  \"101\": \"Switching Protocols\",\n  \"102\": \"Processing\",\n  \"103\": \"Early Hints\",\n  \"200\": \"OK\",\n  \"201\": \"Created\",\n  \"202\": \"Accepted\",\n  \"203\": \"Non-Authoritative Information\",\n  \"204\": \"No Content\",\n  \"205\": \"Reset Content\",\n  \"206\": \"Partial Content\",\n  \"207\": \"Multi-Status\",\n  \"208\": \"Already Reported\",\n  \"226\": \"IM Used\",\n  \"300\": \"Multiple Choices\",\n  \"301\": \"Moved Permanently\",\n  \"302\": \"Found\",\n  \"303\": \"See Other\",\n  \"304\": \"Not Modified\",\n  \"305\": \"Use Proxy\",\n  \"306\": \"(Unused)\",\n  \"307\": \"Temporary Redirect\",\n  \"308\": \"Permanent Redirect\",\n  \"400\": \"Bad Request\",\n  \"401\": \"Unauthorized\",\n  \"402\": \"Payment Required\",\n  \"403\": \"Forbidden\",\n  \"404\": \"Not Found\",\n  \"405\": \"Method Not Allowed\",\n  \"406\": \"Not Acceptable\",\n  \"407\": \"Proxy Authentication Required\",\n  \"408\": \"Request Timeout\",\n  \"409\": \"Conflict\",\n  \"410\": \"Gone\",\n  \"411\": \"Length Required\",\n  \"412\": \"Precondition Failed\",\n  \"413\": \"Payload Too Large\",\n  \"414\": \"URI Too Long\",\n  \"415\": \"Unsupported Media Type\",\n  \"416\": \"Range Not Satisfiable\",\n  \"417\": \"Expectation Failed\",\n  \"418\": \"I'm a teapot\",\n  \"421\": \"Misdirected Request\",\n  \"422\": \"Unprocessable Entity\",\n  \"423\": \"Locked\",\n  \"424\": \"Failed Dependency\",\n  \"425\": \"Unordered Collection\",\n  \"426\": \"Upgrade Required\",\n  \"428\": \"Precondition Required\",\n  \"429\": \"Too Many Requests\",\n  \"431\": \"Request Header Fields Too Large\",\n  \"451\": \"Unavailable For Legal Reasons\",\n  \"500\": \"Internal Server Error\",\n  \"501\": \"Not Implemented\",\n  \"502\": \"Bad Gateway\",\n  \"503\": \"Service Unavailable\",\n  \"504\": \"Gateway Timeout\",\n  \"505\": \"HTTP Version Not Supported\",\n  \"506\": \"Variant Also Negotiates\",\n  \"507\": \"Insufficient Storage\",\n  \"508\": \"Loop Detected\",\n  \"509\": \"Bandwidth Limit Exceeded\",\n  \"510\": \"Not Extended\",\n  \"511\": \"Network Authentication Required\"\n}\n", "/*!\n * statuses\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar codes = require('./codes.json')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = status\n\n// status code to message map\nstatus.STATUS_CODES = codes\n\n// array of status codes\nstatus.codes = populateStatusesMap(status, codes)\n\n// status codes for redirects\nstatus.redirect = {\n  300: true,\n  301: true,\n  302: true,\n  303: true,\n  305: true,\n  307: true,\n  308: true\n}\n\n// status codes for empty bodies\nstatus.empty = {\n  204: true,\n  205: true,\n  304: true\n}\n\n// status codes for when you should retry the request\nstatus.retry = {\n  502: true,\n  503: true,\n  504: true\n}\n\n/**\n * Populate the statuses map for given codes.\n * @private\n */\n\nfunction populateStatusesMap (statuses, codes) {\n  var arr = []\n\n  Object.keys(codes).forEach(function forEachCode (code) {\n    var message = codes[code]\n    var status = Number(code)\n\n    // Populate properties\n    statuses[status] = message\n    statuses[message] = status\n    statuses[message.toLowerCase()] = status\n\n    // Add to array\n    arr.push(status)\n  })\n\n  return arr\n}\n\n/**\n * Get the status code.\n *\n * Given a number, this will throw if it is not a known status\n * code, otherwise the code will be returned. Given a string,\n * the string will be parsed for a number and return the code\n * if valid, otherwise will lookup the code assuming this is\n * the status message.\n *\n * @param {string|number} code\n * @returns {number}\n * @public\n */\n\nfunction status (code) {\n  if (typeof code === 'number') {\n    if (!status[code]) throw new Error('invalid status code: ' + code)\n    return code\n  }\n\n  if (typeof code !== 'string') {\n    throw new TypeError('code must be a number or string')\n  }\n\n  // '403'\n  var n = parseInt(code, 10)\n  if (!isNaN(n)) {\n    if (!status[n]) throw new Error('invalid status code: ' + n)\n    return n\n  }\n\n  n = status[code.toLowerCase()]\n  if (!n) throw new Error('invalid status message: \"' + code + '\"')\n  return n\n}\n", "/*!\n * http-errors\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar deprecate = require('depd')('http-errors')\nvar setPrototypeOf = require('setprototypeof')\nvar statuses = require('statuses')\nvar inherits = require('inherits')\nvar toIdentifier = require('toidentifier')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = createError\nmodule.exports.HttpError = createHttpErrorConstructor()\nmodule.exports.isHttpError = createIsHttpErrorFunction(module.exports.HttpError)\n\n// Populate exports for all constructors\npopulateConstructorExports(module.exports, statuses.codes, module.exports.HttpError)\n\n/**\n * Get the code class of a status code.\n * @private\n */\n\nfunction codeClass (status) {\n  return Number(String(status).charAt(0) + '00')\n}\n\n/**\n * Create a new HTTP Error.\n *\n * @returns {Error}\n * @public\n */\n\nfunction createError () {\n  // so much arity going on ~_~\n  var err\n  var msg\n  var status = 500\n  var props = {}\n  for (var i = 0; i < arguments.length; i++) {\n    var arg = arguments[i]\n    if (arg instanceof Error) {\n      err = arg\n      status = err.status || err.statusCode || status\n      continue\n    }\n    switch (typeof arg) {\n      case 'string':\n        msg = arg\n        break\n      case 'number':\n        status = arg\n        if (i !== 0) {\n          deprecate('non-first-argument status code; replace with createError(' + arg + ', ...)')\n        }\n        break\n      case 'object':\n        props = arg\n        break\n    }\n  }\n\n  if (typeof status === 'number' && (status < 400 || status >= 600)) {\n    deprecate('non-error status code; use only 4xx or 5xx status codes')\n  }\n\n  if (typeof status !== 'number' ||\n    (!statuses[status] && (status < 400 || status >= 600))) {\n    status = 500\n  }\n\n  // constructor\n  var HttpError = createError[status] || createError[codeClass(status)]\n\n  if (!err) {\n    // create error\n    err = HttpError\n      ? new HttpError(msg)\n      : new Error(msg || statuses[status])\n    Error.captureStackTrace(err, createError)\n  }\n\n  if (!HttpError || !(err instanceof HttpError) || err.status !== status) {\n    // add properties to generic error\n    err.expose = status < 500\n    err.status = err.statusCode = status\n  }\n\n  for (var key in props) {\n    if (key !== 'status' && key !== 'statusCode') {\n      err[key] = props[key]\n    }\n  }\n\n  return err\n}\n\n/**\n * Create HTTP error abstract base class.\n * @private\n */\n\nfunction createHttpErrorConstructor () {\n  function HttpError () {\n    throw new TypeError('cannot construct abstract class')\n  }\n\n  inherits(HttpError, Error)\n\n  return HttpError\n}\n\n/**\n * Create a constructor for a client error.\n * @private\n */\n\nfunction createClientErrorConstructor (HttpError, name, code) {\n  var className = toClassName(name)\n\n  function ClientError (message) {\n    // create the error object\n    var msg = message != null ? message : statuses[code]\n    var err = new Error(msg)\n\n    // capture a stack trace to the construction point\n    Error.captureStackTrace(err, ClientError)\n\n    // adjust the [[Prototype]]\n    setPrototypeOf(err, ClientError.prototype)\n\n    // redefine the error message\n    Object.defineProperty(err, 'message', {\n      enumerable: true,\n      configurable: true,\n      value: msg,\n      writable: true\n    })\n\n    // redefine the error name\n    Object.defineProperty(err, 'name', {\n      enumerable: false,\n      configurable: true,\n      value: className,\n      writable: true\n    })\n\n    return err\n  }\n\n  inherits(ClientError, HttpError)\n  nameFunc(ClientError, className)\n\n  ClientError.prototype.status = code\n  ClientError.prototype.statusCode = code\n  ClientError.prototype.expose = true\n\n  return ClientError\n}\n\n/**\n * Create function to test is a value is a HttpError.\n * @private\n */\n\nfunction createIsHttpErrorFunction (HttpError) {\n  return function isHttpError (val) {\n    if (!val || typeof val !== 'object') {\n      return false\n    }\n\n    if (val instanceof HttpError) {\n      return true\n    }\n\n    return val instanceof Error &&\n      typeof val.expose === 'boolean' &&\n      typeof val.statusCode === 'number' && val.status === val.statusCode\n  }\n}\n\n/**\n * Create a constructor for a server error.\n * @private\n */\n\nfunction createServerErrorConstructor (HttpError, name, code) {\n  var className = toClassName(name)\n\n  function ServerError (message) {\n    // create the error object\n    var msg = message != null ? message : statuses[code]\n    var err = new Error(msg)\n\n    // capture a stack trace to the construction point\n    Error.captureStackTrace(err, ServerError)\n\n    // adjust the [[Prototype]]\n    setPrototypeOf(err, ServerError.prototype)\n\n    // redefine the error message\n    Object.defineProperty(err, 'message', {\n      enumerable: true,\n      configurable: true,\n      value: msg,\n      writable: true\n    })\n\n    // redefine the error name\n    Object.defineProperty(err, 'name', {\n      enumerable: false,\n      configurable: true,\n      value: className,\n      writable: true\n    })\n\n    return err\n  }\n\n  inherits(ServerError, HttpError)\n  nameFunc(ServerError, className)\n\n  ServerError.prototype.status = code\n  ServerError.prototype.statusCode = code\n  ServerError.prototype.expose = false\n\n  return ServerError\n}\n\n/**\n * Set the name of a function, if possible.\n * @private\n */\n\nfunction nameFunc (func, name) {\n  var desc = Object.getOwnPropertyDescriptor(func, 'name')\n\n  if (desc && desc.configurable) {\n    desc.value = name\n    Object.defineProperty(func, 'name', desc)\n  }\n}\n\n/**\n * Populate the exports object with constructors for every error class.\n * @private\n */\n\nfunction populateConstructorExports (exports, codes, HttpError) {\n  codes.forEach(function forEachCode (code) {\n    var CodeError\n    var name = toIdentifier(statuses[code])\n\n    switch (codeClass(code)) {\n      case 400:\n        CodeError = createClientErrorConstructor(HttpError, name, code)\n        break\n      case 500:\n        CodeError = createServerErrorConstructor(HttpError, name, code)\n        break\n    }\n\n    if (CodeError) {\n      // export the constructor\n      exports[code] = CodeError\n      exports[name] = CodeError\n    }\n  })\n\n  // backwards-compatibility\n  exports[\"I'mateapot\"] = deprecate.function(exports.ImATeapot,\n    '\"I\\'mateapot\"; use \"ImATeapot\" instead')\n}\n\n/**\n * Get a class name from a name identifier.\n * @private\n */\n\nfunction toClassName (name) {\n  return name.substr(-5) !== 'Error'\n    ? name + 'Error'\n    : name\n}\n", "exports = module.exports = typeof Object.keys === 'function'\n  ? Object.keys : shim;\n\nexports.shim = shim;\nfunction shim (obj) {\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  return keys;\n}\n", "var supportsArgumentsClass = (function(){\n  return Object.prototype.toString.call(arguments)\n})() == '[object Arguments]';\n\nexports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\nexports.supported = supported;\nfunction supported(object) {\n  return Object.prototype.toString.call(object) == '[object Arguments]';\n};\n\nexports.unsupported = unsupported;\nfunction unsupported(object){\n  return object &&\n    typeof object == 'object' &&\n    typeof object.length == 'number' &&\n    Object.prototype.hasOwnProperty.call(object, 'callee') &&\n    !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n    false;\n};\n", "var pSlice = Array.prototype.slice;\nvar objectKeys = require('./lib/keys.js');\nvar isArguments = require('./lib/is_arguments.js');\n\nvar deepEqual = module.exports = function (actual, expected, opts) {\n  if (!opts) opts = {};\n  // 7.1. All identical values are equivalent, as determined by ===.\n  if (actual === expected) {\n    return true;\n\n  } else if (actual instanceof Date && expected instanceof Date) {\n    return actual.getTime() === expected.getTime();\n\n  // 7.3. Other pairs that do not both pass typeof value == 'object',\n  // equivalence is determined by ==.\n  } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n    return opts.strict ? actual === expected : actual == expected;\n\n  // 7.4. For all other Object pairs, including Array objects, equivalence is\n  // determined by having the same number of owned properties (as verified\n  // with Object.prototype.hasOwnProperty.call), the same set of keys\n  // (although not necessarily the same order), equivalent values for every\n  // corresponding key, and an identical 'prototype' property. Note: this\n  // accounts for both named and indexed properties on Arrays.\n  } else {\n    return objEquiv(actual, expected, opts);\n  }\n}\n\nfunction isUndefinedOrNull(value) {\n  return value === null || value === undefined;\n}\n\nfunction isBuffer (x) {\n  if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n  if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n    return false;\n  }\n  if (x.length > 0 && typeof x[0] !== 'number') return false;\n  return true;\n}\n\nfunction objEquiv(a, b, opts) {\n  var i, key;\n  if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n    return false;\n  // an identical 'prototype' property.\n  if (a.prototype !== b.prototype) return false;\n  //~~~I've managed to break Object.keys through screwy arguments passing.\n  //   Converting to array solves the problem.\n  if (isArguments(a)) {\n    if (!isArguments(b)) {\n      return false;\n    }\n    a = pSlice.call(a);\n    b = pSlice.call(b);\n    return deepEqual(a, b, opts);\n  }\n  if (isBuffer(a)) {\n    if (!isBuffer(b)) {\n      return false;\n    }\n    if (a.length !== b.length) return false;\n    for (i = 0; i < a.length; i++) {\n      if (a[i] !== b[i]) return false;\n    }\n    return true;\n  }\n  try {\n    var ka = objectKeys(a),\n        kb = objectKeys(b);\n  } catch (e) {//happens when one is a string literal and the other isn't\n    return false;\n  }\n  // having the same number of owned properties (keys incorporates\n  // hasOwnProperty)\n  if (ka.length != kb.length)\n    return false;\n  //the same set of keys (although not necessarily the same order),\n  ka.sort();\n  kb.sort();\n  //~~~cheap key test\n  for (i = ka.length - 1; i >= 0; i--) {\n    if (ka[i] != kb[i])\n      return false;\n  }\n  //equivalent values for every corresponding key, and\n  //~~~possibly expensive deep test\n  for (i = ka.length - 1; i >= 0; i--) {\n    key = ka[i];\n    if (!deepEqual(a[key], b[key], opts)) return false;\n  }\n  return typeof a === typeof b;\n}\n", "var createError = require('http-errors')\nvar eql = require('deep-equal')\n\nmodule.exports = assert\n\nfunction assert (value, status, msg, opts) {\n  if (value) return\n  throw createError(status, msg, opts)\n}\n\nassert.fail = function (status, msg, opts) {\n  assert(false, status, msg, opts)\n}\n\nassert.equal = function (a, b, status, msg, opts) {\n  assert(a == b, status, msg, opts) // eslint-disable-line eqeqeq\n}\n\nassert.notEqual = function (a, b, status, msg, opts) {\n  assert(a != b, status, msg, opts) // eslint-disable-line eqeqeq\n}\n\nassert.ok = function (value, status, msg, opts) {\n  assert(value, status, msg, opts)\n}\n\nassert.strictEqual = function (a, b, status, msg, opts) {\n  assert(a === b, status, msg, opts)\n}\n\nassert.notStrictEqual = function (a, b, status, msg, opts) {\n  assert(a !== b, status, msg, opts)\n}\n\nassert.deepEqual = function (a, b, status, msg, opts) {\n  assert(eql(a, b), status, msg, opts)\n}\n\nassert.notDeepEqual = function (a, b, status, msg, opts) {\n  assert(!eql(a, b), status, msg, opts)\n}\n", "\n/**\n * Expose `Delegator`.\n */\n\nmodule.exports = Delegator;\n\n/**\n * Initialize a delegator.\n *\n * @param {Object} proto\n * @param {String} target\n * @api public\n */\n\nfunction Delegator(proto, target) {\n  if (!(this instanceof Delegator)) return new Delegator(proto, target);\n  this.proto = proto;\n  this.target = target;\n  this.methods = [];\n  this.getters = [];\n  this.setters = [];\n  this.fluents = [];\n}\n\n/**\n * Delegate method `name`.\n *\n * @param {String} name\n * @return {Delegator} self\n * @api public\n */\n\nDelegator.prototype.method = function(name){\n  var proto = this.proto;\n  var target = this.target;\n  this.methods.push(name);\n\n  proto[name] = function(){\n    return this[target][name].apply(this[target], arguments);\n  };\n\n  return this;\n};\n\n/**\n * Delegator accessor `name`.\n *\n * @param {String} name\n * @return {Delegator} self\n * @api public\n */\n\nDelegator.prototype.access = function(name){\n  return this.getter(name).setter(name);\n};\n\n/**\n * Delegator getter `name`.\n *\n * @param {String} name\n * @return {Delegator} self\n * @api public\n */\n\nDelegator.prototype.getter = function(name){\n  var proto = this.proto;\n  var target = this.target;\n  this.getters.push(name);\n\n  proto.__defineGetter__(name, function(){\n    return this[target][name];\n  });\n\n  return this;\n};\n\n/**\n * Delegator setter `name`.\n *\n * @param {String} name\n * @return {Delegator} self\n * @api public\n */\n\nDelegator.prototype.setter = function(name){\n  var proto = this.proto;\n  var target = this.target;\n  this.setters.push(name);\n\n  proto.__defineSetter__(name, function(val){\n    return this[target][name] = val;\n  });\n\n  return this;\n};\n\n/**\n * Delegator fluent accessor\n *\n * @param {String} name\n * @return {Delegator} self\n * @api public\n */\n\nDelegator.prototype.fluent = function (name) {\n  var proto = this.proto;\n  var target = this.target;\n  this.fluents.push(name);\n\n  proto[name] = function(val){\n    if ('undefined' != typeof val) {\n      this[target][name] = val;\n      return this;\n    } else {\n      return this[target][name];\n    }\n  };\n\n  return this;\n};\n", "'use strict';\r\n\r\n// Implements Brad Hill's Double HMAC pattern from\r\n// https://www.nccgroup.trust/us/about-us/newsroom-and-events/blog/2011/february/double-hmac-verification/.\r\n// The approach is similar to the node's native implementation of timing safe buffer comparison that will be available on v6+.\r\n// https://github.com/nodejs/node/issues/3043\r\n// https://github.com/nodejs/node/pull/3073\r\n\r\nvar crypto = require('crypto');\r\n\r\nfunction bufferEqual(a, b) {\r\n  if (a.length !== b.length) {\r\n    return false;\r\n  }\r\n  // `crypto.timingSafeEqual` was introduced in Node v6.6.0\r\n  // <https://github.com/jshttp/basic-auth/issues/39>\r\n  if (crypto.timingSafeEqual) {\r\n    return crypto.timingSafeEqual(a, b);\r\n  }\r\n  for (var i = 0; i < a.length; i++) {\r\n    if (a[i] !== b[i]) {\r\n      return false;\r\n    }\r\n  }\r\n  return true;\r\n}\r\n\r\nfunction timeSafeCompare(a, b) {\r\n  var sa = String(a);\r\n  var sb = String(b);\r\n  var key = crypto.pseudoRandomBytes(32);\r\n  var ah = crypto.createHmac('sha256', key).update(sa).digest();\r\n  var bh = crypto.createHmac('sha256', key).update(sb).digest();\r\n\r\n  return bufferEqual(ah, bh) && a === b;\r\n}\r\n\r\nmodule.exports = timeSafeCompare;\r\n", "/*!\n * keygrip\n * Copyright(c) 2011-2014 Jed Schmidt\n * MIT Licensed\n */\n\n'use strict'\n\nvar compare = require('tsscmp')\nvar crypto = require(\"crypto\")\n  \nfunction Keygrip(keys, algorithm, encoding) {\n  if (!algorithm) algorithm = \"sha1\";\n  if (!encoding) encoding = \"base64\";\n  if (!(this instanceof Keygrip)) return new Keygrip(keys, algorithm, encoding)\n\n  if (!keys || !(0 in keys)) {\n    throw new Error(\"Keys must be provided.\")\n  }\n\n  function sign(data, key) {\n    return crypto\n      .createHmac(algorithm, key)\n      .update(data).digest(encoding)\n      .replace(/\\/|\\+|=/g, function(x) {\n        return ({ \"/\": \"_\", \"+\": \"-\", \"=\": \"\" })[x]\n      })\n  }\n\n  this.sign = function(data){ return sign(data, keys[0]) }\n\n  this.verify = function(data, digest) {\n    return this.index(data, digest) > -1\n  }\n\n  this.index = function(data, digest) {\n    for (var i = 0, l = keys.length; i < l; i++) {\n      if (compare(digest, sign(data, keys[i]))) {\n        return i\n      }\n    }\n\n    return -1\n  }\n}\n\nKeygrip.sign = Keygrip.verify = Keygrip.index = function() {\n  throw new Error(\"Usage: require('keygrip')(<array-of-keys>)\")\n}\n\nmodule.exports = Keygrip\n", "/*!\n * cookies\n * Copyright(c) 2014 Jed Schmidt, http://jed.is/\n * Copyright(c) 2015-2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\nvar deprecate = require('depd')('cookies')\nvar Keygrip = require('keygrip')\nvar http = require('http')\n\n/**\n * RegExp to match field-content in RFC 7230 sec 3.2\n *\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar   = VCHAR / obs-text\n * obs-text      = %x80-FF\n */\n\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\n\n/**\n * RegExp to match Priority cookie attribute value.\n */\n\nvar PRIORITY_REGEXP = /^(?:low|medium|high)$/i\n\n/**\n * Cache for generated name regular expressions.\n */\n\nvar REGEXP_CACHE = Object.create(null)\n\n/**\n * RegExp to match all characters to escape in a RegExp.\n */\n\nvar REGEXP_ESCAPE_CHARS_REGEXP = /[\\^$\\\\.*+?()[\\]{}|]/g\n\n/**\n * RegExp to match basic restricted name characters for loose validation.\n */\n\nvar RESTRICTED_NAME_CHARS_REGEXP = /[;=]/\n\n/**\n * RegExp to match basic restricted value characters for loose validation.\n */\n\nvar RESTRICTED_VALUE_CHARS_REGEXP = /[;]/\n\n/**\n * RegExp to match Same-Site cookie attribute value.\n */\n\nvar SAME_SITE_REGEXP = /^(?:lax|none|strict)$/i\n\nfunction Cookies(request, response, options) {\n  if (!(this instanceof Cookies)) return new Cookies(request, response, options)\n\n  this.secure = undefined\n  this.request = request\n  this.response = response\n\n  if (options) {\n    if (Array.isArray(options)) {\n      // array of key strings\n      deprecate('\"keys\" argument; provide using options {\"keys\": [...]}')\n      this.keys = new Keygrip(options)\n    } else if (options.constructor && options.constructor.name === 'Keygrip') {\n      // any keygrip constructor to allow different versions\n      deprecate('\"keys\" argument; provide using options {\"keys\": keygrip}')\n      this.keys = options\n    } else {\n      this.keys = Array.isArray(options.keys) ? new Keygrip(options.keys) : options.keys\n      this.secure = options.secure\n    }\n  }\n}\n\nCookies.prototype.get = function(name, opts) {\n  var sigName = name + \".sig\"\n    , header, match, value, remote, data, index\n    , signed = opts && opts.signed !== undefined ? opts.signed : !!this.keys\n\n  header = this.request.headers[\"cookie\"]\n  if (!header) return\n\n  match = header.match(getPattern(name))\n  if (!match) return\n\n  value = match[1]\n  if (value[0] === '\"') value = value.slice(1, -1)\n  if (!opts || !signed) return value\n\n  remote = this.get(sigName)\n  if (!remote) return\n\n  data = name + \"=\" + value\n  if (!this.keys) throw new Error('.keys required for signed cookies');\n  index = this.keys.index(data, remote)\n\n  if (index < 0) {\n    this.set(sigName, null, {path: \"/\", signed: false })\n  } else {\n    index && this.set(sigName, this.keys.sign(data), { signed: false })\n    return value\n  }\n};\n\nCookies.prototype.set = function(name, value, opts) {\n  var res = this.response\n    , req = this.request\n    , headers = res.getHeader(\"Set-Cookie\") || []\n    , cookie = new Cookie(name, value, opts)\n    , signed = opts && opts.signed !== undefined ? opts.signed : !!this.keys\n  var secure = this.secure === undefined\n    ? req.protocol === 'https' || isRequestEncrypted(req)\n    : Boolean(this.secure)\n\n  if (typeof headers == \"string\") headers = [headers]\n\n  if (!secure && opts && opts.secure) {\n    throw new Error('Cannot send secure cookie over unencrypted connection')\n  }\n\n  cookie.secure = opts && opts.secure !== undefined\n    ? opts.secure\n    : secure\n\n  if (opts && \"secureProxy\" in opts) {\n    deprecate('\"secureProxy\" option; use \"secure\" option, provide \"secure\" to constructor if needed')\n    cookie.secure = opts.secureProxy\n  }\n\n  pushCookie(headers, cookie)\n\n  if (opts && signed) {\n    if (!this.keys) throw new Error('.keys required for signed cookies');\n    cookie.value = this.keys.sign(cookie.toString())\n    cookie.name += \".sig\"\n    pushCookie(headers, cookie)\n  }\n\n  var setHeader = res.set ? http.OutgoingMessage.prototype.setHeader : res.setHeader\n  setHeader.call(res, 'Set-Cookie', headers)\n  return this\n};\n\nfunction Cookie(name, value, attrs) {\n  if (!fieldContentRegExp.test(name) || RESTRICTED_NAME_CHARS_REGEXP.test(name)) {\n    throw new TypeError('argument name is invalid');\n  }\n\n  if (value && (!fieldContentRegExp.test(value) || RESTRICTED_VALUE_CHARS_REGEXP.test(value))) {\n    throw new TypeError('argument value is invalid');\n  }\n\n  this.name = name\n  this.value = value || \"\"\n\n  for (var name in attrs) {\n    this[name] = attrs[name]\n  }\n\n  if (!this.value) {\n    this.expires = new Date(0)\n    this.maxAge = null\n  }\n\n  if (this.path && !fieldContentRegExp.test(this.path)) {\n    throw new TypeError('option path is invalid');\n  }\n\n  if (this.domain && !fieldContentRegExp.test(this.domain)) {\n    throw new TypeError('option domain is invalid');\n  }\n\n  if (typeof this.maxAge === 'number' ? (isNaN(this.maxAge) || !isFinite(this.maxAge)) : this.maxAge) {\n    throw new TypeError('option maxAge is invalid')\n  }\n\n  if (this.priority && !PRIORITY_REGEXP.test(this.priority)) {\n    throw new TypeError('option priority is invalid')\n  }\n\n  if (this.sameSite && this.sameSite !== true && !SAME_SITE_REGEXP.test(this.sameSite)) {\n    throw new TypeError('option sameSite is invalid')\n  }\n}\n\nCookie.prototype.path = \"/\";\nCookie.prototype.expires = undefined;\nCookie.prototype.domain = undefined;\nCookie.prototype.httpOnly = true;\nCookie.prototype.partitioned = false\nCookie.prototype.priority = undefined\nCookie.prototype.sameSite = false;\nCookie.prototype.secure = false;\nCookie.prototype.overwrite = false;\n\nCookie.prototype.toString = function() {\n  return this.name + \"=\" + this.value\n};\n\nCookie.prototype.toHeader = function() {\n  var header = this.toString()\n\n  if (this.maxAge) this.expires = new Date(Date.now() + this.maxAge);\n\n  if (this.path     ) header += \"; path=\" + this.path\n  if (this.expires  ) header += \"; expires=\" + this.expires.toUTCString()\n  if (this.domain   ) header += \"; domain=\" + this.domain\n  if (this.priority ) header += \"; priority=\" + this.priority.toLowerCase()\n  if (this.sameSite ) header += \"; samesite=\" + (this.sameSite === true ? 'strict' : this.sameSite.toLowerCase())\n  if (this.secure   ) header += \"; secure\"\n  if (this.httpOnly ) header += \"; httponly\"\n  if (this.partitioned) header += '; partitioned'\n\n  return header\n};\n\n// back-compat so maxage mirrors maxAge\nObject.defineProperty(Cookie.prototype, 'maxage', {\n  configurable: true,\n  enumerable: true,\n  get: function () { return this.maxAge },\n  set: function (val) { return this.maxAge = val }\n});\ndeprecate.property(Cookie.prototype, 'maxage', '\"maxage\"; use \"maxAge\" instead')\n\n/**\n * Get the pattern to search for a cookie in a string.\n * @param {string} name\n * @private\n */\n\nfunction getPattern (name) {\n  if (!REGEXP_CACHE[name]) {\n    REGEXP_CACHE[name] = new RegExp(\n      '(?:^|;) *' +\n      name.replace(REGEXP_ESCAPE_CHARS_REGEXP, '\\\\$&') +\n      '=([^;]*)'\n    )\n  }\n\n  return REGEXP_CACHE[name]\n}\n\n/**\n * Get the encrypted status for a request.\n *\n * @param {object} req\n * @return {string}\n * @private\n */\n\nfunction isRequestEncrypted (req) {\n  return req.socket\n    ? req.socket.encrypted\n    : req.connection.encrypted\n}\n\nfunction pushCookie(headers, cookie) {\n  if (cookie.overwrite) {\n    for (var i = headers.length - 1; i >= 0; i--) {\n      if (headers[i].indexOf(cookie.name + '=') === 0) {\n        headers.splice(i, 1)\n      }\n    }\n  }\n\n  headers.push(cookie.toHeader())\n}\n\nCookies.connect = Cookies.express = function(keys) {\n  return function(req, res, next) {\n    req.cookies = res.cookies = new Cookies(req, res, {\n      keys: keys\n    })\n\n    next()\n  }\n}\n\nCookies.Cookie = Cookie\n\nmodule.exports = Cookies\n", "'use strict'\n\n/**\n * Module dependencies.\n */\n\nconst util = require('util')\nconst createError = require('http-errors')\nconst httpAssert = require('http-assert')\nconst delegate = require('delegates')\nconst statuses = require('statuses')\nconst Cookies = require('cookies')\n\nconst COOKIES = Symbol('context#cookies')\n\n/**\n * Context prototype.\n */\n\nconst proto = module.exports = {\n\n  /**\n   * util.inspect() implementation, which\n   * just returns the JSON output.\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  inspect () {\n    if (this === proto) return this\n    return this.toJSON()\n  },\n\n  /**\n   * Return JSON representation.\n   *\n   * Here we explicitly invoke .toJSON() on each\n   * object, as iteration will otherwise fail due\n   * to the getters and cause utilities such as\n   * clone() to fail.\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  toJSON () {\n    return {\n      request: this.request.toJSON(),\n      response: this.response.toJSON(),\n      app: this.app.toJSON(),\n      originalUrl: this.originalUrl,\n      req: '<original node req>',\n      res: '<original node res>',\n      socket: '<original node socket>'\n    }\n  },\n\n  /**\n   * Similar to .throw(), adds assertion.\n   *\n   *    this.assert(this.user, 401, 'Please login!');\n   *\n   * See: https://github.com/jshttp/http-assert\n   *\n   * @param {Mixed} test\n   * @param {Number} status\n   * @param {String} message\n   * @api public\n   */\n\n  assert: httpAssert,\n\n  /**\n   * Throw an error with `status` (default 500) and\n   * `msg`. Note that these are user-level\n   * errors, and the message may be exposed to the client.\n   *\n   *    this.throw(403)\n   *    this.throw(400, 'name required')\n   *    this.throw('something exploded')\n   *    this.throw(new Error('invalid'))\n   *    this.throw(400, new Error('invalid'))\n   *\n   * See: https://github.com/jshttp/http-errors\n   *\n   * Note: `status` should only be passed as the first parameter.\n   *\n   * @param {String|Number|Error} err, msg or status\n   * @param {String|Number|Error} [err, msg or status]\n   * @param {Object} [props]\n   * @api public\n   */\n\n  throw (...args) {\n    throw createError(...args)\n  },\n\n  /**\n   * Default error handling.\n   *\n   * @param {Error} err\n   * @api private\n   */\n\n  onerror (err) {\n    // don't do anything if there is no error.\n    // this allows you to pass `this.onerror`\n    // to node-style callbacks.\n    if (err == null) return\n\n    // When dealing with cross-globals a normal `instanceof` check doesn't work properly.\n    // See https://github.com/koajs/koa/issues/1466\n    // We can probably remove it once jest fixes https://github.com/facebook/jest/issues/2549.\n    const isNativeError =\n      Object.prototype.toString.call(err) === '[object Error]' ||\n      err instanceof Error\n    if (!isNativeError) err = new Error(util.format('non-error thrown: %j', err))\n\n    let headerSent = false\n    if (this.headerSent || !this.writable) {\n      headerSent = err.headerSent = true\n    }\n\n    // delegate\n    this.app.emit('error', err, this)\n\n    // nothing we can do here other\n    // than delegate to the app-level\n    // handler and log.\n    if (headerSent) {\n      return\n    }\n\n    const { res } = this\n\n    // first unset all headers\n    /* istanbul ignore else */\n    if (typeof res.getHeaderNames === 'function') {\n      res.getHeaderNames().forEach(name => res.removeHeader(name))\n    } else {\n      res._headers = {} // Node < 7.7\n    }\n\n    // then set those specified\n    this.set(err.headers)\n\n    // force text/plain\n    this.type = 'text'\n\n    let statusCode = err.status || err.statusCode\n\n    // default to 500\n    if (typeof statusCode !== 'number' || !statuses.message[statusCode]) statusCode = 500\n\n    // respond\n    const code = statuses.message[statusCode]\n    const msg = err.expose ? err.message : code\n    this.status = err.status = statusCode\n    this.length = Buffer.byteLength(msg)\n    res.end(msg)\n  },\n\n  get cookies () {\n    if (!this[COOKIES]) {\n      this[COOKIES] = new Cookies(this.req, this.res, {\n        keys: this.app.keys,\n        secure: this.request.secure\n      })\n    }\n    return this[COOKIES]\n  },\n\n  set cookies (_cookies) {\n    this[COOKIES] = _cookies\n  }\n}\n\n/**\n * Custom inspection implementation for newer Node.js versions.\n *\n * @return {Object}\n * @api public\n */\n\n/* istanbul ignore else */\nif (util.inspect.custom) {\n  module.exports[util.inspect.custom] = module.exports.inspect\n}\n\n/**\n * Response delegation.\n */\n\ndelegate(proto, 'response')\n  .method('attachment')\n  .method('redirect')\n  .method('remove')\n  .method('vary')\n  .method('has')\n  .method('set')\n  .method('append')\n  .method('flushHeaders')\n  .method('back')\n  .access('status')\n  .access('message')\n  .access('body')\n  .access('length')\n  .access('type')\n  .access('lastModified')\n  .access('etag')\n  .getter('headerSent')\n  .getter('writable')\n\n/**\n * Request delegation.\n */\n\ndelegate(proto, 'request')\n  .method('acceptsLanguages')\n  .method('acceptsEncodings')\n  .method('acceptsCharsets')\n  .method('accepts')\n  .method('get')\n  .method('is')\n  .access('querystring')\n  .access('idempotent')\n  .access('socket')\n  .access('search')\n  .access('method')\n  .access('query')\n  .access('path')\n  .access('url')\n  .access('accept')\n  .getter('origin')\n  .getter('href')\n  .getter('subdomains')\n  .getter('protocol')\n  .getter('host')\n  .getter('hostname')\n  .getter('URL')\n  .getter('header')\n  .getter('headers')\n  .getter('secure')\n  .getter('stale')\n  .getter('fresh')\n  .getter('ips')\n  .getter('ip')\n", "'use strict'\n\n/**\n * Module dependencies.\n */\nconst util = require('node:util')\nconst debug = util.debuglog('koa:application')\nconst Emitter = require('node:events')\nconst Stream = require('node:stream')\nconst http = require('node:http')\nconst { AsyncLocalStorage } = require('node:async_hooks')\n\nconst onFinished = require('on-finished')\nconst compose = require('koa-compose')\nconst statuses = require('statuses')\nconst { HttpError } = require('http-errors')\n\nconst request = require('./request')\nconst response = require('./response')\nconst context = require('./context')\nconst isStream = require('./is-stream.js')\nconst only = require('./only.js')\n\n/** @typedef {typeof import ('./context') & {\n *  app: Application\n *  req: import('http').IncomingMessage\n *  res: import('http').ServerResponse\n *  request: KoaRequest\n *  response: KoaResponse\n *  state: any\n *  originalUrl: string\n * }} Context */\n\n/** @typedef {typeof import('./request')} KoaRequest */\n\n/** @typedef {typeof import('./response')} KoaResponse */\n\n/**\n * Expose `Application` class.\n * Inherits from `Emitter.prototype`.\n */\n\nmodule.exports = class Application extends Emitter {\n  /**\n   * Initialize a new `Application`.\n   *\n   * @api public\n   */\n\n  /**\n   *\n   * @param {object} [options] Application options\n   * @param {string} [options.env='development'] Environment\n   * @param {string[]} [options.keys] Signed cookie keys\n   * @param {boolean} [options.proxy] Trust proxy headers\n   * @param {number} [options.subdomainOffset] Subdomain offset\n   * @param {string} [options.proxyIpHeader] Proxy IP header, defaults to X-Forwarded-For\n   * @param {number} [options.maxIpsCount] Max IPs read from proxy IP header, default to 0 (means infinity)\n   * @param {function} [options.compose] Function to handle middleware composition\n   * @param {boolean} [options.asyncLocalStorage] Enable AsyncLocalStorage, default to false\n   *\n   */\n\n  constructor (options) {\n    super()\n    options = options || {}\n    this.proxy = options.proxy || false\n    this.subdomainOffset = options.subdomainOffset || 2\n    this.proxyIpHeader = options.proxyIpHeader || 'X-Forwarded-For'\n    this.maxIpsCount = options.maxIpsCount || 0\n    this.env = options.env || process.env.NODE_ENV || 'development'\n    this.compose = options.compose || compose\n    if (options.keys) this.keys = options.keys\n    this.middleware = []\n    this.context = Object.create(context)\n    this.request = Object.create(request)\n    this.response = Object.create(response)\n    // util.inspect.custom support for node 6+\n    /* istanbul ignore else */\n    if (util.inspect.custom) {\n      this[util.inspect.custom] = this.inspect\n    }\n    if (options.asyncLocalStorage) {\n      if (options.asyncLocalStorage instanceof AsyncLocalStorage) {\n        this.ctxStorage = options.asyncLocalStorage\n      } else {\n        this.ctxStorage = new AsyncLocalStorage()\n      }\n    }\n  }\n\n  /**\n   * Shorthand for:\n   *\n   *    http.createServer(app.callback()).listen(...)\n   *\n   * @param {Mixed} ...\n   * @return {import('http').Server}\n   * @api public\n   */\n\n  listen (...args) {\n    debug('listen')\n    const server = http.createServer(this.callback())\n    return server.listen(...args)\n  }\n\n  /**\n   * Return JSON representation.\n   * We only bother showing settings.\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  toJSON () {\n    return only(this, ['subdomainOffset', 'proxy', 'env'])\n  }\n\n  /**\n   * Inspect implementation.\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  inspect () {\n    return this.toJSON()\n  }\n\n  /**\n   * Use the given middleware `fn`.\n   *\n   * Old-style middleware will be converted.\n   *\n   * @param {(context: Context) => Promise<any | void>} fn\n   * @return {Application} self\n   * @api public\n   */\n\n  use (fn) {\n    if (typeof fn !== 'function') { throw new TypeError('middleware must be a function!') }\n    debug('use %s', fn._name || fn.name || '-')\n    this.middleware.push(fn)\n    return this\n  }\n\n  /**\n   * Return a request handler callback\n   * for node's native http server.\n   *\n   * @return {Function}\n   * @api public\n   */\n\n  callback () {\n    const fn = this.compose(this.middleware)\n\n    if (!this.listenerCount('error')) this.on('error', this.onerror)\n\n    const handleRequest = (req, res) => {\n      const ctx = this.createContext(req, res)\n      if (!this.ctxStorage) {\n        return this.handleRequest(ctx, fn)\n      }\n      return this.ctxStorage.run(ctx, async () => {\n        return await this.handleRequest(ctx, fn)\n      })\n    }\n\n    return handleRequest\n  }\n\n  /**\n   * return current context from async local storage\n   */\n  get currentContext () {\n    if (this.ctxStorage) return this.ctxStorage.getStore()\n  }\n\n  /**\n   * Handle request in callback.\n   *\n   * @api private\n   */\n\n  handleRequest (ctx, fnMiddleware) {\n    const res = ctx.res\n    res.statusCode = 404\n    const onerror = (err) => ctx.onerror(err)\n    const handleResponse = () => respond(ctx)\n    onFinished(res, onerror)\n    return fnMiddleware(ctx).then(handleResponse).catch(onerror)\n  }\n\n  /**\n   * Initialize a new context.\n   *\n   * @api private\n   */\n\n  createContext (req, res) {\n    /** @type {Context} */\n    const context = Object.create(this.context)\n    /** @type {KoaRequest} */\n    const request = (context.request = Object.create(this.request))\n    /** @type {KoaResponse} */\n    const response = (context.response = Object.create(this.response))\n    context.app = request.app = response.app = this\n    context.req = request.req = response.req = req\n    context.res = request.res = response.res = res\n    request.ctx = response.ctx = context\n    request.response = response\n    response.request = request\n    context.originalUrl = request.originalUrl = req.url\n    context.state = {}\n    return context\n  }\n\n  /**\n   * Default error handler.\n   *\n   * @param {Error} err\n   * @api private\n   */\n\n  onerror (err) {\n    // When dealing with cross-globals a normal `instanceof` check doesn't work properly.\n    // See https://github.com/koajs/koa/issues/1466\n    // We can probably remove it once jest fixes https://github.com/facebook/jest/issues/2549.\n    const isNativeError =\n      Object.prototype.toString.call(err) === '[object Error]' ||\n      err instanceof Error\n    if (!isNativeError) { throw new TypeError(util.format('non-error thrown: %j', err)) }\n\n    if (err.status === 404 || err.expose) return\n    if (this.silent) return\n\n    const msg = err.stack || err.toString()\n    console.error(`\\n${msg.replace(/^/gm, '  ')}\\n`)\n  }\n\n  /**\n   * Help TS users comply to CommonJS, ESM, bundler mismatch.\n   * @see https://github.com/koajs/koa/issues/1513\n   */\n\n  static get default () {\n    return Application\n  }\n}\n\n/**\n * Response helper.\n */\n\nfunction respond (ctx) {\n  // allow bypassing koa\n  if (ctx.respond === false) return\n\n  const res = ctx.res\n\n  if (!ctx.writable) return res.end()\n\n  let body = ctx.body\n  const code = ctx.status\n\n  // ignore body\n  if (statuses.empty[code]) {\n    // strip headers\n    ctx.body = null\n    return res.end()\n  }\n\n  if (ctx.method === 'HEAD') {\n    if (!res.headersSent && !ctx.response.has('Content-Length')) {\n      const { length } = ctx.response\n      if (Number.isInteger(length)) ctx.length = length\n    }\n    return res.end()\n  }\n\n  // status body\n  if (body === null || body === undefined) {\n    if (ctx.response._explicitNullBody) {\n      ctx.response.remove('Content-Type')\n      ctx.response.remove('Transfer-Encoding')\n      ctx.length = 0\n      return res.end()\n    }\n    if (ctx.req.httpVersionMajor >= 2) {\n      body = String(code)\n    } else {\n      body = ctx.message || String(code)\n    }\n    if (!res.headersSent) {\n      ctx.type = 'text'\n      ctx.length = Buffer.byteLength(body)\n    }\n    return res.end(body)\n  }\n\n  // responses\n\n  if (Buffer.isBuffer(body)) return res.end(body)\n  if (typeof body === 'string') return res.end(body)\n\n  let stream = null\n  if (body instanceof Blob) stream = Stream.Readable.from(body.stream())\n  else if (body instanceof ReadableStream) stream = Stream.Readable.from(body)\n  else if (body instanceof Response) stream = Stream.Readable.from(body?.body || '')\n  else if (isStream(body)) stream = body\n\n  if (stream) {\n    return Stream.pipeline(stream, res, err => {\n      if (err && ctx.app.listenerCount('error')) ctx.onerror(err)\n    })\n  }\n\n  // body: json\n  body = JSON.stringify(body)\n  if (!res.headersSent) {\n    ctx.length = Buffer.byteLength(body)\n  }\n  res.end(body)\n}\n\n/**\n * Make HttpError available to consumers of the library so that consumers don't\n * have a direct dependency upon `http-errors`\n */\n\nmodule.exports.HttpError = HttpError\n", "export const isNodeLike =\n  typeof process === \"object\" &&\n  process &&\n  // We used to check `process.release.name === \"node\"`, however that doesn't\n  // account for certain forks of Node.js which are otherwise identical to\n  // Node.js.  For example, NodeSource's N|Solid reports itself as \"nsolid\",\n  // though it's mostly the same build of Node.js with an extra addon.\n  process.release &&\n  process.versions &&\n  // The one thing which is present on both Node.js and N|Solid (a fork of\n  // Node.js), is `process.versions.node` being defined.\n  typeof process.versions.node === \"string\";\n", "import type { KeyValueCache, KeyValueCacheSetOptions } from \".\";\n\nconst prefixesAreUnnecessaryForIsolationSymbol = Symbol(\n  \"prefixesAreUnnecessaryForIsolation\",\n);\n\n// PrefixingKeyValueCache wraps another cache and adds a prefix to all keys used\n// by all operations. This allows multiple features to share the same underlying\n// cache without conflicts.\n//\n// Note that PrefixingKeyValueCache explicitly does not implement methods like\n// flush() that aren't part of KeyValueCache, even though most KeyValueCache\n// implementations also have a flush() method. Most implementations of flush()\n// send a simple command that wipes the entire backend cache system, which\n// wouldn't support \"only wipe the part of the cache with this prefix\", so\n// trying to provide a flush() method here could be confusingly dangerous.\nexport class PrefixingKeyValueCache<\n  V = string,\n  SO extends KeyValueCacheSetOptions = KeyValueCacheSetOptions,\n> implements KeyValueCache<V, SO>\n{\n  private prefix: string;\n  [prefixesAreUnnecessaryForIsolationSymbol]?: true;\n\n  constructor(\n    private wrapped: KeyValueCache<V, SO>,\n    prefix: string,\n  ) {\n    if (PrefixingKeyValueCache.prefixesAreUnnecessaryForIsolation(wrapped)) {\n      this.prefix = \"\";\n      // If we try to again prefix this cache, we should still skip the\n      // prefixing. (This would be cleaner if we made PrefixingKeyValueCaches\n      // via a static method rather than the constructor and could just return\n      // `wrapped`...)\n      this[prefixesAreUnnecessaryForIsolationSymbol] = true;\n    } else {\n      this.prefix = prefix;\n    }\n  }\n\n  get(key: string) {\n    return this.wrapped.get(this.prefix + key);\n  }\n  set(key: string, value: V, options?: SO) {\n    return this.wrapped.set(this.prefix + key, value, options);\n  }\n  delete(key: string) {\n    return this.wrapped.delete(this.prefix + key);\n  }\n\n  // Checks to see if a cache is a PrefixesAreUnnecessaryForIsolationCache,\n  // without using instanceof (so that installing multiple copies of this\n  // package doesn't break things).\n  static prefixesAreUnnecessaryForIsolation<\n    V = string,\n    SO extends KeyValueCacheSetOptions = KeyValueCacheSetOptions,\n  >(c: KeyValueCache<V, SO>): boolean {\n    return prefixesAreUnnecessaryForIsolationSymbol in c;\n  }\n\n  static cacheDangerouslyDoesNotNeedPrefixesForIsolation<\n    V = string,\n    SO extends KeyValueCacheSetOptions = KeyValueCacheSetOptions,\n  >(c: KeyValueCache<V, SO>): KeyValueCache<V, SO> {\n    return new PrefixesAreUnnecessaryForIsolationCache(c);\n  }\n}\n\n// This class lets you opt a cache out of the prefixing provided by\n// PrefixingKeyValueCache. See the README for details.\nclass PrefixesAreUnnecessaryForIsolationCache<\n  V = string,\n  SO extends KeyValueCacheSetOptions = KeyValueCacheSetOptions,\n> implements KeyValueCache<V, SO>\n{\n  [prefixesAreUnnecessaryForIsolationSymbol] = true;\n\n  constructor(private wrapped: KeyValueCache<V, SO>) {}\n\n  get(key: string) {\n    return this.wrapped.get(key);\n  }\n  set(key: string, value: V, options?: SO) {\n    return this.wrapped.set(key, value, options);\n  }\n  delete(key: string) {\n    return this.wrapped.delete(key);\n  }\n}\n", "/**\n * @module LRUCache\n */\n\n// module-private names and types\n// this provides the default Perf object source.\n// it can be passed in via configuration to override it\n// for a single LRU object.\nexport type Perf = { now: () => number }\nconst defaultPerf: Perf =\n  (\n    typeof performance === 'object' &&\n    performance &&\n    typeof performance.now === 'function'\n  ) ?\n    performance\n  : Date\n\nconst warned = new Set<string>()\n\n// either a function or a class\ntype ForC = ((...a: any[]) => any) | { new (...a: any[]): any }\n\n/* c8 ignore start */\nconst PROCESS = (\n  typeof process === 'object' && !!process ?\n    process\n  : {}) as { [k: string]: any }\n/* c8 ignore start */\n\nconst emitWarning = (\n  msg: string,\n  type: string,\n  code: string,\n  fn: ForC,\n) => {\n  typeof PROCESS.emitWarning === 'function' ?\n    PROCESS.emitWarning(msg, type, code, fn)\n  : console.error(`[${code}] ${type}: ${msg}`)\n}\n\nlet AC = globalThis.AbortController\nlet AS = globalThis.AbortSignal\n\n/* c8 ignore start */\nif (typeof AC === 'undefined') {\n  //@ts-ignore\n  AS = class AbortSignal {\n    onabort?: (...a: any[]) => any\n    _onabort: ((...a: any[]) => any)[] = []\n    reason?: any\n    aborted: boolean = false\n    addEventListener(_: string, fn: (...a: any[]) => any) {\n      this._onabort.push(fn)\n    }\n  }\n  //@ts-ignore\n  AC = class AbortController {\n    constructor() {\n      warnACPolyfill()\n    }\n    signal = new AS()\n    abort(reason: any) {\n      if (this.signal.aborted) return\n      //@ts-ignore\n      this.signal.reason = reason\n      //@ts-ignore\n      this.signal.aborted = true\n      //@ts-ignore\n      for (const fn of this.signal._onabort) {\n        fn(reason)\n      }\n      this.signal.onabort?.(reason)\n    }\n  }\n  let printACPolyfillWarning =\n    PROCESS.env?.LRU_CACHE_IGNORE_AC_WARNING !== '1'\n  const warnACPolyfill = () => {\n    if (!printACPolyfillWarning) return\n    printACPolyfillWarning = false\n    emitWarning(\n      'AbortController is not defined. If using lru-cache in ' +\n        'node 14, load an AbortController polyfill from the ' +\n        '`node-abort-controller` package. A minimal polyfill is ' +\n        'provided for use by LRUCache.fetch(), but it should not be ' +\n        'relied upon in other contexts (eg, passing it to other APIs that ' +\n        'use AbortController/AbortSignal might have undesirable effects). ' +\n        'You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.',\n      'NO_ABORT_CONTROLLER',\n      'ENOTSUP',\n      warnACPolyfill,\n    )\n  }\n}\n/* c8 ignore stop */\n\nconst shouldWarn = (code: string) => !warned.has(code)\n\nconst TYPE = Symbol('type')\nexport type PosInt = number & { [TYPE]: 'Positive Integer' }\nexport type Index = number & { [TYPE]: 'LRUCache Index' }\n\nconst isPosInt = (n: any): n is PosInt =>\n  n && n === Math.floor(n) && n > 0 && isFinite(n)\n\nexport type UintArray = Uint8Array | Uint16Array | Uint32Array\nexport type NumberArray = UintArray | number[]\n\n/* c8 ignore start */\n// This is a little bit ridiculous, tbh.\n// The maximum array length is 2^32-1 or thereabouts on most JS impls.\n// And well before that point, you're caching the entire world, I mean,\n// that's ~32GB of just integers for the next/prev links, plus whatever\n// else to hold that many keys and values.  Just filling the memory with\n// zeroes at init time is brutal when you get that big.\n// But why not be complete?\n// Maybe in the future, these limits will have expanded.\nconst getUintArray = (max: number) =>\n  !isPosInt(max) ? null\n  : max <= Math.pow(2, 8) ? Uint8Array\n  : max <= Math.pow(2, 16) ? Uint16Array\n  : max <= Math.pow(2, 32) ? Uint32Array\n  : max <= Number.MAX_SAFE_INTEGER ? ZeroArray\n  : null\n/* c8 ignore stop */\n\nclass ZeroArray extends Array<number> {\n  constructor(size: number) {\n    super(size)\n    this.fill(0)\n  }\n}\nexport type { ZeroArray }\nexport type { Stack }\n\nexport type StackLike = Stack | Index[]\nclass Stack {\n  heap: NumberArray\n  length: number\n  // private constructor\n  static #constructing: boolean = false\n  static create(max: number): StackLike {\n    const HeapCls = getUintArray(max)\n    if (!HeapCls) return []\n    Stack.#constructing = true\n    const s = new Stack(max, HeapCls)\n    Stack.#constructing = false\n    return s\n  }\n  constructor(max: number, HeapCls: { new (n: number): NumberArray }) {\n    /* c8 ignore start */\n    if (!Stack.#constructing) {\n      throw new TypeError('instantiate Stack using Stack.create(n)')\n    }\n    /* c8 ignore stop */\n    this.heap = new HeapCls(max)\n    this.length = 0\n  }\n  push(n: Index) {\n    this.heap[this.length++] = n\n  }\n  pop(): Index {\n    return this.heap[--this.length] as Index\n  }\n}\n\n/**\n * Promise representing an in-progress {@link LRUCache#fetch} call\n */\nexport type BackgroundFetch<V> = Promise<V | undefined> & {\n  __returned: BackgroundFetch<V> | undefined\n  __abortController: AbortController\n  __staleWhileFetching: V | undefined\n}\n\nexport type DisposeTask<K, V> = [\n  value: V,\n  key: K,\n  reason: LRUCache.DisposeReason,\n]\n\nexport namespace LRUCache {\n  /**\n   * An integer greater than 0, reflecting the calculated size of items\n   */\n  export type Size = number\n\n  /**\n   * Integer greater than 0, representing some number of milliseconds, or the\n   * time at which a TTL started counting from.\n   */\n  export type Milliseconds = number\n\n  /**\n   * An integer greater than 0, reflecting a number of items\n   */\n  export type Count = number\n\n  /**\n   * The reason why an item was removed from the cache, passed\n   * to the {@link Disposer} methods.\n   *\n   * - `evict`: The item was evicted because it is the least recently used,\n   *   and the cache is full.\n   * - `set`: A new value was set, overwriting the old value being disposed.\n   * - `delete`: The item was explicitly deleted, either by calling\n   *   {@link LRUCache#delete}, {@link LRUCache#clear}, or\n   *   {@link LRUCache#set} with an undefined value.\n   * - `expire`: The item was removed due to exceeding its TTL.\n   * - `fetch`: A {@link OptionsBase#fetchMethod} operation returned\n   *   `undefined` or was aborted, causing the item to be deleted.\n   */\n  export type DisposeReason =\n    | 'evict'\n    | 'set'\n    | 'delete'\n    | 'expire'\n    | 'fetch'\n  /**\n   * A method called upon item removal, passed as the\n   * {@link OptionsBase.dispose} and/or\n   * {@link OptionsBase.disposeAfter} options.\n   */\n  export type Disposer<K, V> = (\n    value: V,\n    key: K,\n    reason: DisposeReason,\n  ) => void\n\n  /**\n   * The reason why an item was added to the cache, passed\n   * to the {@link Inserter} methods.\n   *\n   * - `add`: the item was not found in the cache, and was added\n   * - `update`: the item was in the cache, with the same value provided\n   * - `replace`: the item was in the cache, and replaced\n   */\n  export type InsertReason = 'add' | 'update' | 'replace'\n\n  /**\n   * A method called upon item insertion, passed as the\n   * {@link OptionsBase.insert}\n   */\n  export type Inserter<K, V> = (\n    value: V,\n    key: K,\n    reason: InsertReason,\n  ) => void\n\n  /**\n   * A function that returns the effective calculated size\n   * of an entry in the cache.\n   */\n  export type SizeCalculator<K, V> = (value: V, key: K) => Size\n\n  /**\n   * Options provided to the\n   * {@link OptionsBase.fetchMethod} function.\n   */\n  export interface FetcherOptions<K, V, FC = unknown> {\n    signal: AbortSignal\n    options: FetcherFetchOptions<K, V, FC>\n    /**\n     * Object provided in the {@link FetchOptions.context} option to\n     * {@link LRUCache#fetch}\n     */\n    context: FC\n  }\n\n  /**\n   * Occasionally, it may be useful to track the internal behavior of the\n   * cache, particularly for logging, debugging, or for behavior within the\n   * `fetchMethod`. To do this, you can pass a `status` object to the\n   * {@link LRUCache#fetch}, {@link LRUCache#get}, {@link LRUCache#set},\n   * {@link LRUCache#memo}, and {@link LRUCache#has} methods.\n   *\n   * The `status` option should be a plain JavaScript object. The following\n   * fields will be set on it appropriately, depending on the situation.\n   */\n  export interface Status<V> {\n    /**\n     * The status of a set() operation.\n     *\n     * - add: the item was not found in the cache, and was added\n     * - update: the item was in the cache, with the same value provided\n     * - replace: the item was in the cache, and replaced\n     * - miss: the item was not added to the cache for some reason\n     */\n    set?: 'add' | 'update' | 'replace' | 'miss'\n\n    /**\n     * the ttl stored for the item, or undefined if ttls are not used.\n     */\n    ttl?: Milliseconds\n\n    /**\n     * the start time for the item, or undefined if ttls are not used.\n     */\n    start?: Milliseconds\n\n    /**\n     * The timestamp used for TTL calculation\n     */\n    now?: Milliseconds\n\n    /**\n     * the remaining ttl for the item, or undefined if ttls are not used.\n     */\n    remainingTTL?: Milliseconds\n\n    /**\n     * The calculated size for the item, if sizes are used.\n     */\n    entrySize?: Size\n\n    /**\n     * The total calculated size of the cache, if sizes are used.\n     */\n    totalCalculatedSize?: Size\n\n    /**\n     * A flag indicating that the item was not stored, due to exceeding the\n     * {@link OptionsBase.maxEntrySize}\n     */\n    maxEntrySizeExceeded?: true\n\n    /**\n     * The old value, specified in the case of `set:'update'` or\n     * `set:'replace'`\n     */\n    oldValue?: V\n\n    /**\n     * The results of a {@link LRUCache#has} operation\n     *\n     * - hit: the item was found in the cache\n     * - stale: the item was found in the cache, but is stale\n     * - miss: the item was not found in the cache\n     */\n    has?: 'hit' | 'stale' | 'miss'\n\n    /**\n     * The status of a {@link LRUCache#fetch} operation.\n     * Note that this can change as the underlying fetch() moves through\n     * various states.\n     *\n     * - inflight: there is another fetch() for this key which is in process\n     * - get: there is no {@link OptionsBase.fetchMethod}, so\n     *   {@link LRUCache#get} was called.\n     * - miss: the item is not in cache, and will be fetched.\n     * - hit: the item is in the cache, and was resolved immediately.\n     * - stale: the item is in the cache, but stale.\n     * - refresh: the item is in the cache, and not stale, but\n     *   {@link FetchOptions.forceRefresh} was specified.\n     */\n    fetch?: 'get' | 'inflight' | 'miss' | 'hit' | 'stale' | 'refresh'\n\n    /**\n     * The {@link OptionsBase.fetchMethod} was called\n     */\n    fetchDispatched?: true\n\n    /**\n     * The cached value was updated after a successful call to\n     * {@link OptionsBase.fetchMethod}\n     */\n    fetchUpdated?: true\n\n    /**\n     * The reason for a fetch() rejection.  Either the error raised by the\n     * {@link OptionsBase.fetchMethod}, or the reason for an\n     * AbortSignal.\n     */\n    fetchError?: Error\n\n    /**\n     * The fetch received an abort signal\n     */\n    fetchAborted?: true\n\n    /**\n     * The abort signal received was ignored, and the fetch was allowed to\n     * continue.\n     */\n    fetchAbortIgnored?: true\n\n    /**\n     * The fetchMethod promise resolved successfully\n     */\n    fetchResolved?: true\n\n    /**\n     * The fetchMethod promise was rejected\n     */\n    fetchRejected?: true\n\n    /**\n     * The status of a {@link LRUCache#get} operation.\n     *\n     * - fetching: The item is currently being fetched.  If a previous value\n     *   is present and allowed, that will be returned.\n     * - stale: The item is in the cache, and is stale.\n     * - hit: the item is in the cache\n     * - miss: the item is not in the cache\n     */\n    get?: 'stale' | 'hit' | 'miss'\n\n    /**\n     * A fetch or get operation returned a stale value.\n     */\n    returnedStale?: true\n  }\n\n  /**\n   * options which override the options set in the LRUCache constructor\n   * when calling {@link LRUCache#fetch}.\n   *\n   * This is the union of {@link GetOptions} and {@link SetOptions}, plus\n   * {@link OptionsBase.noDeleteOnFetchRejection},\n   * {@link OptionsBase.allowStaleOnFetchRejection},\n   * {@link FetchOptions.forceRefresh}, and\n   * {@link FetcherOptions.context}\n   *\n   * Any of these may be modified in the {@link OptionsBase.fetchMethod}\n   * function, but the {@link GetOptions} fields will of course have no\n   * effect, as the {@link LRUCache#get} call already happened by the time\n   * the fetchMethod is called.\n   */\n  export interface FetcherFetchOptions<K, V, FC = unknown>\n    extends Pick<\n      OptionsBase<K, V, FC>,\n      | 'allowStale'\n      | 'updateAgeOnGet'\n      | 'noDeleteOnStaleGet'\n      | 'sizeCalculation'\n      | 'ttl'\n      | 'noDisposeOnSet'\n      | 'noUpdateTTL'\n      | 'noDeleteOnFetchRejection'\n      | 'allowStaleOnFetchRejection'\n      | 'ignoreFetchAbort'\n      | 'allowStaleOnFetchAbort'\n    > {\n    status?: Status<V>\n    size?: Size\n  }\n\n  /**\n   * Options that may be passed to the {@link LRUCache#fetch} method.\n   */\n  export interface FetchOptions<K, V, FC>\n    extends FetcherFetchOptions<K, V, FC> {\n    /**\n     * Set to true to force a re-load of the existing data, even if it\n     * is not yet stale.\n     */\n    forceRefresh?: boolean\n    /**\n     * Context provided to the {@link OptionsBase.fetchMethod} as\n     * the {@link FetcherOptions.context} param.\n     *\n     * If the FC type is specified as unknown (the default),\n     * undefined or void, then this is optional.  Otherwise, it will\n     * be required.\n     */\n    context?: FC\n    signal?: AbortSignal\n    status?: Status<V>\n  }\n  /**\n   * Options provided to {@link LRUCache#fetch} when the FC type is something\n   * other than `unknown`, `undefined`, or `void`\n   */\n  export interface FetchOptionsWithContext<K, V, FC>\n    extends FetchOptions<K, V, FC> {\n    context: FC\n  }\n  /**\n   * Options provided to {@link LRUCache#fetch} when the FC type is\n   * `undefined` or `void`\n   */\n  export interface FetchOptionsNoContext<K, V>\n    extends FetchOptions<K, V, undefined> {\n    context?: undefined\n  }\n\n  export interface MemoOptions<K, V, FC = unknown>\n    extends Pick<\n      OptionsBase<K, V, FC>,\n      | 'allowStale'\n      | 'updateAgeOnGet'\n      | 'noDeleteOnStaleGet'\n      | 'sizeCalculation'\n      | 'ttl'\n      | 'noDisposeOnSet'\n      | 'noUpdateTTL'\n      | 'noDeleteOnFetchRejection'\n      | 'allowStaleOnFetchRejection'\n      | 'ignoreFetchAbort'\n      | 'allowStaleOnFetchAbort'\n    > {\n    /**\n     * Set to true to force a re-load of the existing data, even if it\n     * is not yet stale.\n     */\n    forceRefresh?: boolean\n    /**\n     * Context provided to the {@link OptionsBase.memoMethod} as\n     * the {@link MemoizerOptions.context} param.\n     *\n     * If the FC type is specified as unknown (the default),\n     * undefined or void, then this is optional.  Otherwise, it will\n     * be required.\n     */\n    context?: FC\n    status?: Status<V>\n  }\n  /**\n   * Options provided to {@link LRUCache#memo} when the FC type is something\n   * other than `unknown`, `undefined`, or `void`\n   */\n  export interface MemoOptionsWithContext<K, V, FC>\n    extends MemoOptions<K, V, FC> {\n    context: FC\n  }\n  /**\n   * Options provided to {@link LRUCache#memo} when the FC type is\n   * `undefined` or `void`\n   */\n  export interface MemoOptionsNoContext<K, V>\n    extends MemoOptions<K, V, undefined> {\n    context?: undefined\n  }\n\n  /**\n   * Options provided to the\n   * {@link OptionsBase.memoMethod} function.\n   */\n  export interface MemoizerOptions<K, V, FC = unknown> {\n    options: MemoizerMemoOptions<K, V, FC>\n    /**\n     * Object provided in the {@link MemoOptions.context} option to\n     * {@link LRUCache#memo}\n     */\n    context: FC\n  }\n\n  /**\n   * options which override the options set in the LRUCache constructor\n   * when calling {@link LRUCache#memo}.\n   *\n   * This is the union of {@link GetOptions} and {@link SetOptions}, plus\n   * {@link MemoOptions.forceRefresh}, and\n   * {@link MemoOptions.context}\n   *\n   * Any of these may be modified in the {@link OptionsBase.memoMethod}\n   * function, but the {@link GetOptions} fields will of course have no\n   * effect, as the {@link LRUCache#get} call already happened by the time\n   * the memoMethod is called.\n   */\n  export interface MemoizerMemoOptions<K, V, FC = unknown>\n    extends Pick<\n      OptionsBase<K, V, FC>,\n      | 'allowStale'\n      | 'updateAgeOnGet'\n      | 'noDeleteOnStaleGet'\n      | 'sizeCalculation'\n      | 'ttl'\n      | 'noDisposeOnSet'\n      | 'noUpdateTTL'\n    > {\n    status?: Status<V>\n    size?: Size\n    start?: Milliseconds\n  }\n\n  /**\n   * Options that may be passed to the {@link LRUCache#has} method.\n   */\n  export interface HasOptions<K, V, FC>\n    extends Pick<OptionsBase<K, V, FC>, 'updateAgeOnHas'> {\n    status?: Status<V>\n  }\n\n  /**\n   * Options that may be passed to the {@link LRUCache#get} method.\n   */\n  export interface GetOptions<K, V, FC>\n    extends Pick<\n      OptionsBase<K, V, FC>,\n      'allowStale' | 'updateAgeOnGet' | 'noDeleteOnStaleGet'\n    > {\n    status?: Status<V>\n  }\n\n  /**\n   * Options that may be passed to the {@link LRUCache#peek} method.\n   */\n  export interface PeekOptions<K, V, FC>\n    extends Pick<OptionsBase<K, V, FC>, 'allowStale'> {}\n\n  /**\n   * Options that may be passed to the {@link LRUCache#set} method.\n   */\n  export interface SetOptions<K, V, FC>\n    extends Pick<\n      OptionsBase<K, V, FC>,\n      'sizeCalculation' | 'ttl' | 'noDisposeOnSet' | 'noUpdateTTL'\n    > {\n    /**\n     * If size tracking is enabled, then setting an explicit size\n     * in the {@link LRUCache#set} call will prevent calling the\n     * {@link OptionsBase.sizeCalculation} function.\n     */\n    size?: Size\n    /**\n     * If TTL tracking is enabled, then setting an explicit start\n     * time in the {@link LRUCache#set} call will override the\n     * default time from `performance.now()` or `Date.now()`.\n     *\n     * Note that it must be a valid value for whichever time-tracking\n     * method is in use.\n     */\n    start?: Milliseconds\n    status?: Status<V>\n  }\n\n  /**\n   * The type signature for the {@link OptionsBase.fetchMethod} option.\n   */\n  export type Fetcher<K, V, FC = unknown> = (\n    key: K,\n    staleValue: V | undefined,\n    options: FetcherOptions<K, V, FC>,\n  ) => Promise<V | undefined | void> | V | undefined | void\n\n  /**\n   * the type signature for the {@link OptionsBase.memoMethod} option.\n   */\n  export type Memoizer<K, V, FC = unknown> = (\n    key: K,\n    staleValue: V | undefined,\n    options: MemoizerOptions<K, V, FC>,\n  ) => V\n\n  /**\n   * Options which may be passed to the {@link LRUCache} constructor.\n   *\n   * Most of these may be overridden in the various options that use\n   * them.\n   *\n   * Despite all being technically optional, the constructor requires that\n   * a cache is at minimum limited by one or more of {@link OptionsBase.max},\n   * {@link OptionsBase.ttl}, or {@link OptionsBase.maxSize}.\n   *\n   * If {@link OptionsBase.ttl} is used alone, then it is strongly advised\n   * (and in fact required by the type definitions here) that the cache\n   * also set {@link OptionsBase.ttlAutopurge}, to prevent potentially\n   * unbounded storage.\n   *\n   * All options are also available on the {@link LRUCache} instance, making\n   * it safe to pass an LRUCache instance as the options argumemnt to\n   * make another empty cache of the same type.\n   *\n   * Some options are marked as read-only, because changing them after\n   * instantiation is not safe. Changing any of the other options will of\n   * course only have an effect on subsequent method calls.\n   */\n  export interface OptionsBase<K, V, FC> {\n    /**\n     * The maximum number of items to store in the cache before evicting\n     * old entries. This is read-only on the {@link LRUCache} instance,\n     * and may not be overridden.\n     *\n     * If set, then storage space will be pre-allocated at construction\n     * time, and the cache will perform significantly faster.\n     *\n     * Note that significantly fewer items may be stored, if\n     * {@link OptionsBase.maxSize} and/or {@link OptionsBase.ttl} are also\n     * set.\n     *\n     * **It is strongly recommended to set a `max` to prevent unbounded growth\n     * of the cache.**\n     */\n    max?: Count\n\n    /**\n     * Max time in milliseconds for items to live in cache before they are\n     * considered stale.  Note that stale items are NOT preemptively removed by\n     * default, and MAY live in the cache, contributing to its LRU max, long\n     * after they have expired, unless {@link OptionsBase.ttlAutopurge} is\n     * set.\n     *\n     * If set to `0` (the default value), then that means \"do not track\n     * TTL\", not \"expire immediately\".\n     *\n     * Also, as this cache is optimized for LRU/MRU operations, some of\n     * the staleness/TTL checks will reduce performance, as they will incur\n     * overhead by deleting items.\n     *\n     * This is not primarily a TTL cache, and does not make strong TTL\n     * guarantees. There is no pre-emptive pruning of expired items, but you\n     * _may_ set a TTL on the cache, and it will treat expired items as missing\n     * when they are fetched, and delete them.\n     *\n     * Optional, but must be a non-negative integer in ms if specified.\n     *\n     * This may be overridden by passing an options object to `cache.set()`.\n     *\n     * At least one of `max`, `maxSize`, or `TTL` is required. This must be a\n     * positive integer if set.\n     *\n     * Even if ttl tracking is enabled, **it is strongly recommended to set a\n     * `max` to prevent unbounded growth of the cache.**\n     *\n     * If ttl tracking is enabled, and `max` and `maxSize` are not set,\n     * and `ttlAutopurge` is not set, then a warning will be emitted\n     * cautioning about the potential for unbounded memory consumption.\n     * (The TypeScript definitions will also discourage this.)\n     */\n    ttl?: Milliseconds\n\n    /**\n     * Minimum amount of time in ms in which to check for staleness.\n     * Defaults to 1, which means that the current time is checked\n     * at most once per millisecond.\n     *\n     * Set to 0 to check the current time every time staleness is tested.\n     * (This reduces performance, and is theoretically unnecessary.)\n     *\n     * Setting this to a higher value will improve performance somewhat\n     * while using ttl tracking, albeit at the expense of keeping stale\n     * items around a bit longer than their TTLs would indicate.\n     *\n     * @default 1\n     */\n    ttlResolution?: Milliseconds\n\n    /**\n     * Preemptively remove stale items from the cache.\n     *\n     * Note that this may *significantly* degrade performance, especially if\n     * the cache is storing a large number of items. It is almost always best\n     * to just leave the stale items in the cache, and let them fall out as new\n     * items are added.\n     *\n     * Note that this means that {@link OptionsBase.allowStale} is a bit\n     * pointless, as stale items will be deleted almost as soon as they\n     * expire.\n     *\n     * Use with caution!\n     */\n    ttlAutopurge?: boolean\n\n    /**\n     * When using time-expiring entries with `ttl`, setting this to `true` will\n     * make each item's age reset to 0 whenever it is retrieved from cache with\n     * {@link LRUCache#get}, causing it to not expire. (It can still fall out\n     * of cache based on recency of use, of course.)\n     *\n     * Has no effect if {@link OptionsBase.ttl} is not set.\n     *\n     * This may be overridden by passing an options object to `cache.get()`.\n     */\n    updateAgeOnGet?: boolean\n\n    /**\n     * When using time-expiring entries with `ttl`, setting this to `true` will\n     * make each item's age reset to 0 whenever its presence in the cache is\n     * checked with {@link LRUCache#has}, causing it to not expire. (It can\n     * still fall out of cache based on recency of use, of course.)\n     *\n     * Has no effect if {@link OptionsBase.ttl} is not set.\n     */\n    updateAgeOnHas?: boolean\n\n    /**\n     * Allow {@link LRUCache#get} and {@link LRUCache#fetch} calls to return\n     * stale data, if available.\n     *\n     * By default, if you set `ttl`, stale items will only be deleted from the\n     * cache when you `get(key)`. That is, it's not preemptively pruning items,\n     * unless {@link OptionsBase.ttlAutopurge} is set.\n     *\n     * If you set `allowStale:true`, it'll return the stale value *as well as*\n     * deleting it. If you don't set this, then it'll return `undefined` when\n     * you try to get a stale entry.\n     *\n     * Note that when a stale entry is fetched, _even if it is returned due to\n     * `allowStale` being set_, it is removed from the cache immediately. You\n     * can suppress this behavior by setting\n     * {@link OptionsBase.noDeleteOnStaleGet}, either in the constructor, or in\n     * the options provided to {@link LRUCache#get}.\n     *\n     * This may be overridden by passing an options object to `cache.get()`.\n     * The `cache.has()` method will always return `false` for stale items.\n     *\n     * Only relevant if a ttl is set.\n     */\n    allowStale?: boolean\n\n    /**\n     * Function that is called on items when they are dropped from the\n     * cache, as `dispose(value, key, reason)`.\n     *\n     * This can be handy if you want to close file descriptors or do\n     * other cleanup tasks when items are no longer stored in the cache.\n     *\n     * **NOTE**: It is called _before_ the item has been fully removed\n     * from the cache, so if you want to put it right back in, you need\n     * to wait until the next tick. If you try to add it back in during\n     * the `dispose()` function call, it will break things in subtle and\n     * weird ways.\n     *\n     * Unlike several other options, this may _not_ be overridden by\n     * passing an option to `set()`, for performance reasons.\n     *\n     * The `reason` will be one of the following strings, corresponding\n     * to the reason for the item's deletion:\n     *\n     * - `evict` Item was evicted to make space for a new addition\n     * - `set` Item was overwritten by a new value\n     * - `expire` Item expired its TTL\n     * - `fetch` Item was deleted due to a failed or aborted fetch, or a\n     *   fetchMethod returning `undefined.\n     * - `delete` Item was removed by explicit `cache.delete(key)`,\n     *   `cache.clear()`, or `cache.set(key, undefined)`.\n     */\n    dispose?: Disposer<K, V>\n\n    /**\n     * Function that is called when new items are inserted into the cache,\n     * as `onInsert(value, key, reason)`.\n     *\n     * This can be useful if you need to perform actions when an item is\n     * added, such as logging or tracking insertions.\n     *\n     * Unlike some other options, this may _not_ be overridden by passing\n     * an option to `set()`, for performance and consistency reasons.\n     */\n    onInsert?: Inserter<K, V>\n\n    /**\n     * The same as {@link OptionsBase.dispose}, but called *after* the entry\n     * is completely removed and the cache is once again in a clean state.\n     *\n     * It is safe to add an item right back into the cache at this point.\n     * However, note that it is *very* easy to inadvertently create infinite\n     * recursion this way.\n     */\n    disposeAfter?: Disposer<K, V>\n\n    /**\n     * Set to true to suppress calling the\n     * {@link OptionsBase.dispose} function if the entry key is\n     * still accessible within the cache.\n     *\n     * This may be overridden by passing an options object to\n     * {@link LRUCache#set}.\n     *\n     * Only relevant if `dispose` or `disposeAfter` are set.\n     */\n    noDisposeOnSet?: boolean\n\n    /**\n     * Boolean flag to tell the cache to not update the TTL when setting a new\n     * value for an existing key (ie, when updating a value rather than\n     * inserting a new value).  Note that the TTL value is _always_ set (if\n     * provided) when adding a new entry into the cache.\n     *\n     * Has no effect if a {@link OptionsBase.ttl} is not set.\n     *\n     * May be passed as an option to {@link LRUCache#set}.\n     */\n    noUpdateTTL?: boolean\n\n    /**\n     * Set to a positive integer to track the sizes of items added to the\n     * cache, and automatically evict items in order to stay below this size.\n     * Note that this may result in fewer than `max` items being stored.\n     *\n     * Attempting to add an item to the cache whose calculated size is greater\n     * that this amount will be a no-op. The item will not be cached, and no\n     * other items will be evicted.\n     *\n     * Optional, must be a positive integer if provided.\n     *\n     * Sets `maxEntrySize` to the same value, unless a different value is\n     * provided for `maxEntrySize`.\n     *\n     * At least one of `max`, `maxSize`, or `TTL` is required. This must be a\n     * positive integer if set.\n     *\n     * Even if size tracking is enabled, **it is strongly recommended to set a\n     * `max` to prevent unbounded growth of the cache.**\n     *\n     * Note also that size tracking can negatively impact performance,\n     * though for most cases, only minimally.\n     */\n    maxSize?: Size\n\n    /**\n     * The maximum allowed size for any single item in the cache.\n     *\n     * If a larger item is passed to {@link LRUCache#set} or returned by a\n     * {@link OptionsBase.fetchMethod} or {@link OptionsBase.memoMethod}, then\n     * it will not be stored in the cache.\n     *\n     * Attempting to add an item whose calculated size is greater than\n     * this amount will not cache the item or evict any old items, but\n     * WILL delete an existing value if one is already present.\n     *\n     * Optional, must be a positive integer if provided. Defaults to\n     * the value of `maxSize` if provided.\n     */\n    maxEntrySize?: Size\n\n    /**\n     * A function that returns a number indicating the item's size.\n     *\n     * Requires {@link OptionsBase.maxSize} to be set.\n     *\n     * If not provided, and {@link OptionsBase.maxSize} or\n     * {@link OptionsBase.maxEntrySize} are set, then all\n     * {@link LRUCache#set} calls **must** provide an explicit\n     * {@link SetOptions.size} or sizeCalculation param.\n     */\n    sizeCalculation?: SizeCalculator<K, V>\n\n    /**\n     * Method that provides the implementation for {@link LRUCache#fetch}\n     *\n     * ```ts\n     * fetchMethod(key, staleValue, { signal, options, context })\n     * ```\n     *\n     * If `fetchMethod` is not provided, then `cache.fetch(key)` is equivalent\n     * to `Promise.resolve(cache.get(key))`.\n     *\n     * If at any time, `signal.aborted` is set to `true`, or if the\n     * `signal.onabort` method is called, or if it emits an `'abort'` event\n     * which you can listen to with `addEventListener`, then that means that\n     * the fetch should be abandoned. This may be passed along to async\n     * functions aware of AbortController/AbortSignal behavior.\n     *\n     * The `fetchMethod` should **only** return `undefined` or a Promise\n     * resolving to `undefined` if the AbortController signaled an `abort`\n     * event. In all other cases, it should return or resolve to a value\n     * suitable for adding to the cache.\n     *\n     * The `options` object is a union of the options that may be provided to\n     * `set()` and `get()`. If they are modified, then that will result in\n     * modifying the settings to `cache.set()` when the value is resolved, and\n     * in the case of\n     * {@link OptionsBase.noDeleteOnFetchRejection} and\n     * {@link OptionsBase.allowStaleOnFetchRejection}, the handling of\n     * `fetchMethod` failures.\n     *\n     * For example, a DNS cache may update the TTL based on the value returned\n     * from a remote DNS server by changing `options.ttl` in the `fetchMethod`.\n     */\n    fetchMethod?: Fetcher<K, V, FC>\n\n    /**\n     * Method that provides the implementation for {@link LRUCache#memo}\n     */\n    memoMethod?: Memoizer<K, V, FC>\n\n    /**\n     * Set to true to suppress the deletion of stale data when a\n     * {@link OptionsBase.fetchMethod} returns a rejected promise.\n     */\n    noDeleteOnFetchRejection?: boolean\n\n    /**\n     * Do not delete stale items when they are retrieved with\n     * {@link LRUCache#get}.\n     *\n     * Note that the `get` return value will still be `undefined`\n     * unless {@link OptionsBase.allowStale} is true.\n     *\n     * When using time-expiring entries with `ttl`, by default stale\n     * items will be removed from the cache when the key is accessed\n     * with `cache.get()`.\n     *\n     * Setting this option will cause stale items to remain in the cache, until\n     * they are explicitly deleted with `cache.delete(key)`, or retrieved with\n     * `noDeleteOnStaleGet` set to `false`.\n     *\n     * This may be overridden by passing an options object to `cache.get()`.\n     *\n     * Only relevant if a ttl is used.\n     */\n    noDeleteOnStaleGet?: boolean\n\n    /**\n     * Set to true to allow returning stale data when a\n     * {@link OptionsBase.fetchMethod} throws an error or returns a rejected\n     * promise.\n     *\n     * This differs from using {@link OptionsBase.allowStale} in that stale\n     * data will ONLY be returned in the case that the {@link LRUCache#fetch}\n     * fails, not any other times.\n     *\n     * If a `fetchMethod` fails, and there is no stale value available, the\n     * `fetch()` will resolve to `undefined`. Ie, all `fetchMethod` errors are\n     * suppressed.\n     *\n     * Implies `noDeleteOnFetchRejection`.\n     *\n     * This may be set in calls to `fetch()`, or defaulted on the constructor,\n     * or overridden by modifying the options object in the `fetchMethod`.\n     */\n    allowStaleOnFetchRejection?: boolean\n\n    /**\n     * Set to true to return a stale value from the cache when the\n     * `AbortSignal` passed to the {@link OptionsBase.fetchMethod} dispatches\n     * an `'abort'` event, whether user-triggered, or due to internal cache\n     * behavior.\n     *\n     * Unless {@link OptionsBase.ignoreFetchAbort} is also set, the underlying\n     * {@link OptionsBase.fetchMethod} will still be considered canceled, and\n     * any value it returns will be ignored and not cached.\n     *\n     * Caveat: since fetches are aborted when a new value is explicitly\n     * set in the cache, this can lead to fetch returning a stale value,\n     * since that was the fallback value _at the moment the `fetch()` was\n     * initiated_, even though the new updated value is now present in\n     * the cache.\n     *\n     * For example:\n     *\n     * ```ts\n     * const cache = new LRUCache<string, any>({\n     *   ttl: 100,\n     *   fetchMethod: async (url, oldValue, { signal }) =>  {\n     *     const res = await fetch(url, { signal })\n     *     return await res.json()\n     *   }\n     * })\n     * cache.set('https://example.com/', { some: 'data' })\n     * // 100ms go by...\n     * const result = cache.fetch('https://example.com/')\n     * cache.set('https://example.com/', { other: 'thing' })\n     * console.log(await result) // { some: 'data' }\n     * console.log(cache.get('https://example.com/')) // { other: 'thing' }\n     * ```\n     */\n    allowStaleOnFetchAbort?: boolean\n\n    /**\n     * Set to true to ignore the `abort` event emitted by the `AbortSignal`\n     * object passed to {@link OptionsBase.fetchMethod}, and still cache the\n     * resulting resolution value, as long as it is not `undefined`.\n     *\n     * When used on its own, this means aborted {@link LRUCache#fetch} calls\n     * are not immediately resolved or rejected when they are aborted, and\n     * instead take the full time to await.\n     *\n     * When used with {@link OptionsBase.allowStaleOnFetchAbort}, aborted\n     * {@link LRUCache#fetch} calls will resolve immediately to their stale\n     * cached value or `undefined`, and will continue to process and eventually\n     * update the cache when they resolve, as long as the resulting value is\n     * not `undefined`, thus supporting a \"return stale on timeout while\n     * refreshing\" mechanism by passing `AbortSignal.timeout(n)` as the signal.\n     *\n     * For example:\n     *\n     * ```ts\n     * const c = new LRUCache({\n     *   ttl: 100,\n     *   ignoreFetchAbort: true,\n     *   allowStaleOnFetchAbort: true,\n     *   fetchMethod: async (key, oldValue, { signal }) => {\n     *     // note: do NOT pass the signal to fetch()!\n     *     // let's say this fetch can take a long time.\n     *     const res = await fetch(`https://slow-backend-server/${key}`)\n     *     return await res.json()\n     *   },\n     * })\n     *\n     * // this will return the stale value after 100ms, while still\n     * // updating in the background for next time.\n     * const val = await c.fetch('key', { signal: AbortSignal.timeout(100) })\n     * ```\n     *\n     * **Note**: regardless of this setting, an `abort` event _is still\n     * emitted on the `AbortSignal` object_, so may result in invalid results\n     * when passed to other underlying APIs that use AbortSignals.\n     *\n     * This may be overridden in the {@link OptionsBase.fetchMethod} or the\n     * call to {@link LRUCache#fetch}.\n     */\n    ignoreFetchAbort?: boolean\n\n    /**\n     * In some cases, you may want to swap out the performance/Date object\n     * used for TTL tracking. This should almost certainly NOT be done in\n     * production environments!\n     *\n     * This value defaults to `global.performance` if it has a `now()` method,\n     * or the `global.Date` object otherwise.\n     */\n    perf?: Perf\n  }\n\n  export interface OptionsMaxLimit<K, V, FC>\n    extends OptionsBase<K, V, FC> {\n    max: Count\n  }\n  export interface OptionsTTLLimit<K, V, FC>\n    extends OptionsBase<K, V, FC> {\n    ttl: Milliseconds\n    ttlAutopurge: boolean\n  }\n  export interface OptionsSizeLimit<K, V, FC>\n    extends OptionsBase<K, V, FC> {\n    maxSize: Size\n  }\n\n  /**\n   * The valid safe options for the {@link LRUCache} constructor\n   */\n  export type Options<K, V, FC> =\n    | OptionsMaxLimit<K, V, FC>\n    | OptionsSizeLimit<K, V, FC>\n    | OptionsTTLLimit<K, V, FC>\n\n  /**\n   * Entry objects used by {@link LRUCache#load} and {@link LRUCache#dump},\n   * and returned by {@link LRUCache#info}.\n   */\n  export interface Entry<V> {\n    value: V\n    ttl?: Milliseconds\n    size?: Size\n    start?: Milliseconds\n  }\n}\n\n/**\n * Default export, the thing you're using this module to get.\n *\n * The `K` and `V` types define the key and value types, respectively. The\n * optional `FC` type defines the type of the `context` object passed to\n * `cache.fetch()` and `cache.memo()`.\n *\n * Keys and values **must not** be `null` or `undefined`.\n *\n * All properties from the options object (with the exception of `max`,\n * `maxSize`, `fetchMethod`, `memoMethod`, `dispose` and `disposeAfter`) are\n * added as normal public members. (The listed options are read-only getters.)\n *\n * Changing any of these will alter the defaults for subsequent method calls.\n */\nexport class LRUCache<K extends {}, V extends {}, FC = unknown> {\n  // options that cannot be changed without disaster\n  readonly #max: LRUCache.Count\n  readonly #maxSize: LRUCache.Size\n  readonly #dispose?: LRUCache.Disposer<K, V>\n  readonly #onInsert?: LRUCache.Inserter<K, V>\n  readonly #disposeAfter?: LRUCache.Disposer<K, V>\n  readonly #fetchMethod?: LRUCache.Fetcher<K, V, FC>\n  readonly #memoMethod?: LRUCache.Memoizer<K, V, FC>\n  readonly #perf: Perf\n\n  /**\n   * {@link LRUCache.OptionsBase.perf}\n   */\n  get perf() {\n    return this.#perf\n  }\n\n  /**\n   * {@link LRUCache.OptionsBase.ttl}\n   */\n  ttl: LRUCache.Milliseconds\n\n  /**\n   * {@link LRUCache.OptionsBase.ttlResolution}\n   */\n  ttlResolution: LRUCache.Milliseconds\n  /**\n   * {@link LRUCache.OptionsBase.ttlAutopurge}\n   */\n  ttlAutopurge: boolean\n  /**\n   * {@link LRUCache.OptionsBase.updateAgeOnGet}\n   */\n  updateAgeOnGet: boolean\n  /**\n   * {@link LRUCache.OptionsBase.updateAgeOnHas}\n   */\n  updateAgeOnHas: boolean\n  /**\n   * {@link LRUCache.OptionsBase.allowStale}\n   */\n  allowStale: boolean\n\n  /**\n   * {@link LRUCache.OptionsBase.noDisposeOnSet}\n   */\n  noDisposeOnSet: boolean\n  /**\n   * {@link LRUCache.OptionsBase.noUpdateTTL}\n   */\n  noUpdateTTL: boolean\n  /**\n   * {@link LRUCache.OptionsBase.maxEntrySize}\n   */\n  maxEntrySize: LRUCache.Size\n  /**\n   * {@link LRUCache.OptionsBase.sizeCalculation}\n   */\n  sizeCalculation?: LRUCache.SizeCalculator<K, V>\n  /**\n   * {@link LRUCache.OptionsBase.noDeleteOnFetchRejection}\n   */\n  noDeleteOnFetchRejection: boolean\n  /**\n   * {@link LRUCache.OptionsBase.noDeleteOnStaleGet}\n   */\n  noDeleteOnStaleGet: boolean\n  /**\n   * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort}\n   */\n  allowStaleOnFetchAbort: boolean\n  /**\n   * {@link LRUCache.OptionsBase.allowStaleOnFetchRejection}\n   */\n  allowStaleOnFetchRejection: boolean\n  /**\n   * {@link LRUCache.OptionsBase.ignoreFetchAbort}\n   */\n  ignoreFetchAbort: boolean\n\n  // computed properties\n  #size: LRUCache.Count\n  #calculatedSize: LRUCache.Size\n  #keyMap: Map<K, Index>\n  #keyList: (K | undefined)[]\n  #valList: (V | BackgroundFetch<V> | undefined)[]\n  #next: NumberArray\n  #prev: NumberArray\n  #head: Index\n  #tail: Index\n  #free: StackLike\n  #disposed?: DisposeTask<K, V>[]\n  #sizes?: ZeroArray\n  #starts?: ZeroArray\n  #ttls?: ZeroArray\n  #autopurgeTimers?: (undefined | ReturnType<typeof setTimeout>)[]\n\n  #hasDispose: boolean\n  #hasFetchMethod: boolean\n  #hasDisposeAfter: boolean\n  #hasOnInsert: boolean\n\n  /**\n   * Do not call this method unless you need to inspect the\n   * inner workings of the cache.  If anything returned by this\n   * object is modified in any way, strange breakage may occur.\n   *\n   * These fields are private for a reason!\n   *\n   * @internal\n   */\n  static unsafeExposeInternals<\n    K extends {},\n    V extends {},\n    FC extends unknown = unknown,\n  >(c: LRUCache<K, V, FC>) {\n    return {\n      // properties\n      starts: c.#starts,\n      ttls: c.#ttls,\n      autopurgeTimers: c.#autopurgeTimers,\n      sizes: c.#sizes,\n      keyMap: c.#keyMap as Map<K, number>,\n      keyList: c.#keyList,\n      valList: c.#valList,\n      next: c.#next,\n      prev: c.#prev,\n      get head() {\n        return c.#head\n      },\n      get tail() {\n        return c.#tail\n      },\n      free: c.#free,\n      // methods\n      isBackgroundFetch: (p: any) => c.#isBackgroundFetch(p),\n      backgroundFetch: (\n        k: K,\n        index: number | undefined,\n        options: LRUCache.FetchOptions<K, V, FC>,\n        context: any,\n      ): BackgroundFetch<V> =>\n        c.#backgroundFetch(\n          k,\n          index as Index | undefined,\n          options,\n          context,\n        ),\n      moveToTail: (index: number): void => c.#moveToTail(index as Index),\n      indexes: (options?: { allowStale: boolean }) => c.#indexes(options),\n      rindexes: (options?: { allowStale: boolean }) =>\n        c.#rindexes(options),\n      isStale: (index: number | undefined) => c.#isStale(index as Index),\n    }\n  }\n\n  // Protected read-only members\n\n  /**\n   * {@link LRUCache.OptionsBase.max} (read-only)\n   */\n  get max(): LRUCache.Count {\n    return this.#max\n  }\n  /**\n   * {@link LRUCache.OptionsBase.maxSize} (read-only)\n   */\n  get maxSize(): LRUCache.Count {\n    return this.#maxSize\n  }\n  /**\n   * The total computed size of items in the cache (read-only)\n   */\n  get calculatedSize(): LRUCache.Size {\n    return this.#calculatedSize\n  }\n  /**\n   * The number of items stored in the cache (read-only)\n   */\n  get size(): LRUCache.Count {\n    return this.#size\n  }\n  /**\n   * {@link LRUCache.OptionsBase.fetchMethod} (read-only)\n   */\n  get fetchMethod(): LRUCache.Fetcher<K, V, FC> | undefined {\n    return this.#fetchMethod\n  }\n  get memoMethod(): LRUCache.Memoizer<K, V, FC> | undefined {\n    return this.#memoMethod\n  }\n  /**\n   * {@link LRUCache.OptionsBase.dispose} (read-only)\n   */\n  get dispose() {\n    return this.#dispose\n  }\n  /**\n   * {@link LRUCache.OptionsBase.onInsert} (read-only)\n   */\n  get onInsert() {\n    return this.#onInsert\n  }\n  /**\n   * {@link LRUCache.OptionsBase.disposeAfter} (read-only)\n   */\n  get disposeAfter() {\n    return this.#disposeAfter\n  }\n\n  constructor(options: LRUCache.Options<K, V, FC> | LRUCache<K, V, FC>) {\n    const {\n      max = 0,\n      ttl,\n      ttlResolution = 1,\n      ttlAutopurge,\n      updateAgeOnGet,\n      updateAgeOnHas,\n      allowStale,\n      dispose,\n      onInsert,\n      disposeAfter,\n      noDisposeOnSet,\n      noUpdateTTL,\n      maxSize = 0,\n      maxEntrySize = 0,\n      sizeCalculation,\n      fetchMethod,\n      memoMethod,\n      noDeleteOnFetchRejection,\n      noDeleteOnStaleGet,\n      allowStaleOnFetchRejection,\n      allowStaleOnFetchAbort,\n      ignoreFetchAbort,\n      perf,\n    } = options\n\n    if (perf !== undefined) {\n      if (typeof perf?.now !== 'function') {\n        throw new TypeError(\n          'perf option must have a now() method if specified',\n        )\n      }\n    }\n\n    this.#perf = perf ?? defaultPerf\n\n    if (max !== 0 && !isPosInt(max)) {\n      throw new TypeError('max option must be a nonnegative integer')\n    }\n\n    const UintArray = max ? getUintArray(max) : Array\n    if (!UintArray) {\n      throw new Error('invalid max value: ' + max)\n    }\n\n    this.#max = max\n    this.#maxSize = maxSize\n    this.maxEntrySize = maxEntrySize || this.#maxSize\n    this.sizeCalculation = sizeCalculation\n    if (this.sizeCalculation) {\n      if (!this.#maxSize && !this.maxEntrySize) {\n        throw new TypeError(\n          'cannot set sizeCalculation without setting maxSize or maxEntrySize',\n        )\n      }\n      if (typeof this.sizeCalculation !== 'function') {\n        throw new TypeError('sizeCalculation set to non-function')\n      }\n    }\n\n    if (memoMethod !== undefined && typeof memoMethod !== 'function') {\n      throw new TypeError('memoMethod must be a function if defined')\n    }\n    this.#memoMethod = memoMethod\n\n    if (fetchMethod !== undefined && typeof fetchMethod !== 'function') {\n      throw new TypeError('fetchMethod must be a function if specified')\n    }\n    this.#fetchMethod = fetchMethod\n    this.#hasFetchMethod = !!fetchMethod\n\n    this.#keyMap = new Map()\n    this.#keyList = new Array(max).fill(undefined)\n    this.#valList = new Array(max).fill(undefined)\n    this.#next = new UintArray(max)\n    this.#prev = new UintArray(max)\n    this.#head = 0 as Index\n    this.#tail = 0 as Index\n    this.#free = Stack.create(max)\n    this.#size = 0\n    this.#calculatedSize = 0\n\n    if (typeof dispose === 'function') {\n      this.#dispose = dispose\n    }\n    if (typeof onInsert === 'function') {\n      this.#onInsert = onInsert\n    }\n    if (typeof disposeAfter === 'function') {\n      this.#disposeAfter = disposeAfter\n      this.#disposed = []\n    } else {\n      this.#disposeAfter = undefined\n      this.#disposed = undefined\n    }\n    this.#hasDispose = !!this.#dispose\n    this.#hasOnInsert = !!this.#onInsert\n    this.#hasDisposeAfter = !!this.#disposeAfter\n\n    this.noDisposeOnSet = !!noDisposeOnSet\n    this.noUpdateTTL = !!noUpdateTTL\n    this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection\n    this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection\n    this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort\n    this.ignoreFetchAbort = !!ignoreFetchAbort\n\n    // NB: maxEntrySize is set to maxSize if it's set\n    if (this.maxEntrySize !== 0) {\n      if (this.#maxSize !== 0) {\n        if (!isPosInt(this.#maxSize)) {\n          throw new TypeError(\n            'maxSize must be a positive integer if specified',\n          )\n        }\n      }\n      if (!isPosInt(this.maxEntrySize)) {\n        throw new TypeError(\n          'maxEntrySize must be a positive integer if specified',\n        )\n      }\n      this.#initializeSizeTracking()\n    }\n\n    this.allowStale = !!allowStale\n    this.noDeleteOnStaleGet = !!noDeleteOnStaleGet\n    this.updateAgeOnGet = !!updateAgeOnGet\n    this.updateAgeOnHas = !!updateAgeOnHas\n    this.ttlResolution =\n      isPosInt(ttlResolution) || ttlResolution === 0 ? ttlResolution : 1\n    this.ttlAutopurge = !!ttlAutopurge\n    this.ttl = ttl || 0\n    if (this.ttl) {\n      if (!isPosInt(this.ttl)) {\n        throw new TypeError('ttl must be a positive integer if specified')\n      }\n      this.#initializeTTLTracking()\n    }\n\n    // do not allow completely unbounded caches\n    if (this.#max === 0 && this.ttl === 0 && this.#maxSize === 0) {\n      throw new TypeError(\n        'At least one of max, maxSize, or ttl is required',\n      )\n    }\n    if (!this.ttlAutopurge && !this.#max && !this.#maxSize) {\n      const code = 'LRU_CACHE_UNBOUNDED'\n      if (shouldWarn(code)) {\n        warned.add(code)\n        const msg =\n          'TTL caching without ttlAutopurge, max, or maxSize can ' +\n          'result in unbounded memory consumption.'\n        emitWarning(msg, 'UnboundedCacheWarning', code, LRUCache)\n      }\n    }\n  }\n\n  /**\n   * Return the number of ms left in the item's TTL. If item is not in cache,\n   * returns `0`. Returns `Infinity` if item is in cache without a defined TTL.\n   */\n  getRemainingTTL(key: K) {\n    return this.#keyMap.has(key) ? Infinity : 0\n  }\n\n  #initializeTTLTracking() {\n    const ttls = new ZeroArray(this.#max)\n    const starts = new ZeroArray(this.#max)\n    this.#ttls = ttls\n    this.#starts = starts\n    const purgeTimers =\n      this.ttlAutopurge ?\n        new Array<undefined | ReturnType<typeof setTimeout>>(this.#max)\n      : undefined\n    this.#autopurgeTimers = purgeTimers\n\n    this.#setItemTTL = (index, ttl, start = this.#perf.now()) => {\n      starts[index] = ttl !== 0 ? start : 0\n      ttls[index] = ttl\n      // clear out the purge timer if we're setting TTL to 0, and\n      // previously had a ttl purge timer running, so it doesn't\n      // fire unnecessarily.\n      if (purgeTimers?.[index]) {\n        clearTimeout(purgeTimers[index])\n        purgeTimers[index] = undefined\n      }\n      if (ttl !== 0 && purgeTimers) {\n        const t = setTimeout(() => {\n          if (this.#isStale(index)) {\n            this.#delete(this.#keyList[index] as K, 'expire')\n          }\n        }, ttl + 1)\n        // unref() not supported on all platforms\n        /* c8 ignore start */\n        if (t.unref) {\n          t.unref()\n        }\n        /* c8 ignore stop */\n        purgeTimers[index] = t\n      }\n    }\n\n    this.#updateItemAge = index => {\n      starts[index] = ttls[index] !== 0 ? this.#perf.now() : 0\n    }\n\n    this.#statusTTL = (status, index) => {\n      if (ttls[index]) {\n        const ttl = ttls[index]\n        const start = starts[index]\n        /* c8 ignore next */\n        if (!ttl || !start) return\n        status.ttl = ttl\n        status.start = start\n        status.now = cachedNow || getNow()\n        const age = status.now - start\n        status.remainingTTL = ttl - age\n      }\n    }\n\n    // debounce calls to perf.now() to 1s so we're not hitting\n    // that costly call repeatedly.\n    let cachedNow = 0\n    const getNow = () => {\n      const n = this.#perf.now()\n      if (this.ttlResolution > 0) {\n        cachedNow = n\n        const t = setTimeout(() => (cachedNow = 0), this.ttlResolution)\n        // not available on all platforms\n        /* c8 ignore start */\n        if (t.unref) {\n          t.unref()\n        }\n        /* c8 ignore stop */\n      }\n      return n\n    }\n\n    this.getRemainingTTL = key => {\n      const index = this.#keyMap.get(key)\n      if (index === undefined) {\n        return 0\n      }\n      const ttl = ttls[index]\n      const start = starts[index]\n      if (!ttl || !start) {\n        return Infinity\n      }\n      const age = (cachedNow || getNow()) - start\n      return ttl - age\n    }\n\n    this.#isStale = index => {\n      const s = starts[index]\n      const t = ttls[index]\n      return !!t && !!s && (cachedNow || getNow()) - s > t\n    }\n  }\n\n  // conditionally set private methods related to TTL\n  #updateItemAge: (index: Index) => void = () => {}\n  #statusTTL: (status: LRUCache.Status<V>, index: Index) => void = () => {}\n  #setItemTTL: (\n    index: Index,\n    ttl: LRUCache.Milliseconds,\n    start?: LRUCache.Milliseconds,\n    // ignore because we never call this if we're not already in TTL mode\n    /* c8 ignore start */\n  ) => void = () => {}\n  /* c8 ignore stop */\n\n  #isStale: (index: Index) => boolean = () => false\n\n  #initializeSizeTracking() {\n    const sizes = new ZeroArray(this.#max)\n    this.#calculatedSize = 0\n    this.#sizes = sizes\n    this.#removeItemSize = index => {\n      this.#calculatedSize -= sizes[index] as number\n      sizes[index] = 0\n    }\n    this.#requireSize = (k, v, size, sizeCalculation) => {\n      // provisionally accept background fetches.\n      // actual value size will be checked when they return.\n      if (this.#isBackgroundFetch(v)) {\n        return 0\n      }\n      if (!isPosInt(size)) {\n        if (sizeCalculation) {\n          if (typeof sizeCalculation !== 'function') {\n            throw new TypeError('sizeCalculation must be a function')\n          }\n          size = sizeCalculation(v, k)\n          if (!isPosInt(size)) {\n            throw new TypeError(\n              'sizeCalculation return invalid (expect positive integer)',\n            )\n          }\n        } else {\n          throw new TypeError(\n            'invalid size value (must be positive integer). ' +\n              'When maxSize or maxEntrySize is used, sizeCalculation ' +\n              'or size must be set.',\n          )\n        }\n      }\n      return size\n    }\n    this.#addItemSize = (\n      index: Index,\n      size: LRUCache.Size,\n      status?: LRUCache.Status<V>,\n    ) => {\n      sizes[index] = size\n      if (this.#maxSize) {\n        const maxSize = this.#maxSize - (sizes[index] as number)\n        while (this.#calculatedSize > maxSize) {\n          this.#evict(true)\n        }\n      }\n      this.#calculatedSize += sizes[index] as number\n      if (status) {\n        status.entrySize = size\n        status.totalCalculatedSize = this.#calculatedSize\n      }\n    }\n  }\n\n  #removeItemSize: (index: Index) => void = _i => {}\n  #addItemSize: (\n    index: Index,\n    size: LRUCache.Size,\n    status?: LRUCache.Status<V>,\n  ) => void = (_i, _s, _st) => {}\n  #requireSize: (\n    k: K,\n    v: V | BackgroundFetch<V>,\n    size?: LRUCache.Size,\n    sizeCalculation?: LRUCache.SizeCalculator<K, V>,\n  ) => LRUCache.Size = (\n    _k: K,\n    _v: V | BackgroundFetch<V>,\n    size?: LRUCache.Size,\n    sizeCalculation?: LRUCache.SizeCalculator<K, V>,\n  ) => {\n    if (size || sizeCalculation) {\n      throw new TypeError(\n        'cannot set size without setting maxSize or maxEntrySize on cache',\n      )\n    }\n    return 0\n  };\n\n  *#indexes({ allowStale = this.allowStale } = {}) {\n    if (this.#size) {\n      for (let i = this.#tail; true; ) {\n        if (!this.#isValidIndex(i)) {\n          break\n        }\n        if (allowStale || !this.#isStale(i)) {\n          yield i\n        }\n        if (i === this.#head) {\n          break\n        } else {\n          i = this.#prev[i] as Index\n        }\n      }\n    }\n  }\n\n  *#rindexes({ allowStale = this.allowStale } = {}) {\n    if (this.#size) {\n      for (let i = this.#head; true; ) {\n        if (!this.#isValidIndex(i)) {\n          break\n        }\n        if (allowStale || !this.#isStale(i)) {\n          yield i\n        }\n        if (i === this.#tail) {\n          break\n        } else {\n          i = this.#next[i] as Index\n        }\n      }\n    }\n  }\n\n  #isValidIndex(index: Index) {\n    return (\n      index !== undefined &&\n      this.#keyMap.get(this.#keyList[index] as K) === index\n    )\n  }\n\n  /**\n   * Return a generator yielding `[key, value]` pairs,\n   * in order from most recently used to least recently used.\n   */\n  *entries() {\n    for (const i of this.#indexes()) {\n      if (\n        this.#valList[i] !== undefined &&\n        this.#keyList[i] !== undefined &&\n        !this.#isBackgroundFetch(this.#valList[i])\n      ) {\n        yield [this.#keyList[i], this.#valList[i]] as [K, V]\n      }\n    }\n  }\n\n  /**\n   * Inverse order version of {@link LRUCache.entries}\n   *\n   * Return a generator yielding `[key, value]` pairs,\n   * in order from least recently used to most recently used.\n   */\n  *rentries() {\n    for (const i of this.#rindexes()) {\n      if (\n        this.#valList[i] !== undefined &&\n        this.#keyList[i] !== undefined &&\n        !this.#isBackgroundFetch(this.#valList[i])\n      ) {\n        yield [this.#keyList[i], this.#valList[i]]\n      }\n    }\n  }\n\n  /**\n   * Return a generator yielding the keys in the cache,\n   * in order from most recently used to least recently used.\n   */\n  *keys() {\n    for (const i of this.#indexes()) {\n      const k = this.#keyList[i]\n      if (k !== undefined && !this.#isBackgroundFetch(this.#valList[i])) {\n        yield k\n      }\n    }\n  }\n\n  /**\n   * Inverse order version of {@link LRUCache.keys}\n   *\n   * Return a generator yielding the keys in the cache,\n   * in order from least recently used to most recently used.\n   */\n  *rkeys() {\n    for (const i of this.#rindexes()) {\n      const k = this.#keyList[i]\n      if (k !== undefined && !this.#isBackgroundFetch(this.#valList[i])) {\n        yield k\n      }\n    }\n  }\n\n  /**\n   * Return a generator yielding the values in the cache,\n   * in order from most recently used to least recently used.\n   */\n  *values() {\n    for (const i of this.#indexes()) {\n      const v = this.#valList[i]\n      if (v !== undefined && !this.#isBackgroundFetch(this.#valList[i])) {\n        yield this.#valList[i] as V\n      }\n    }\n  }\n\n  /**\n   * Inverse order version of {@link LRUCache.values}\n   *\n   * Return a generator yielding the values in the cache,\n   * in order from least recently used to most recently used.\n   */\n  *rvalues() {\n    for (const i of this.#rindexes()) {\n      const v = this.#valList[i]\n      if (v !== undefined && !this.#isBackgroundFetch(this.#valList[i])) {\n        yield this.#valList[i]\n      }\n    }\n  }\n\n  /**\n   * Iterating over the cache itself yields the same results as\n   * {@link LRUCache.entries}\n   */\n  [Symbol.iterator]() {\n    return this.entries()\n  }\n\n  /**\n   * A String value that is used in the creation of the default string\n   * description of an object. Called by the built-in method\n   * `Object.prototype.toString`.\n   */\n  [Symbol.toStringTag] = 'LRUCache'\n\n  /**\n   * Find a value for which the supplied fn method returns a truthy value,\n   * similar to `Array.find()`. fn is called as `fn(value, key, cache)`.\n   */\n  find(\n    fn: (v: V, k: K, self: LRUCache<K, V, FC>) => boolean,\n    getOptions: LRUCache.GetOptions<K, V, FC> = {},\n  ) {\n    for (const i of this.#indexes()) {\n      const v = this.#valList[i]\n      const value = this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v\n      if (value === undefined) continue\n      if (fn(value, this.#keyList[i] as K, this)) {\n        return this.get(this.#keyList[i] as K, getOptions)\n      }\n    }\n  }\n\n  /**\n   * Call the supplied function on each item in the cache, in order from most\n   * recently used to least recently used.\n   *\n   * `fn` is called as `fn(value, key, cache)`.\n   *\n   * If `thisp` is provided, function will be called in the `this`-context of\n   * the provided object, or the cache if no `thisp` object is provided.\n   *\n   * Does not update age or recenty of use, or iterate over stale values.\n   */\n  forEach(\n    fn: (v: V, k: K, self: LRUCache<K, V, FC>) => any,\n    thisp: any = this,\n  ) {\n    for (const i of this.#indexes()) {\n      const v = this.#valList[i]\n      const value = this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v\n      if (value === undefined) continue\n      fn.call(thisp, value, this.#keyList[i] as K, this)\n    }\n  }\n\n  /**\n   * The same as {@link LRUCache.forEach} but items are iterated over in\n   * reverse order.  (ie, less recently used items are iterated over first.)\n   */\n  rforEach(\n    fn: (v: V, k: K, self: LRUCache<K, V, FC>) => any,\n    thisp: any = this,\n  ) {\n    for (const i of this.#rindexes()) {\n      const v = this.#valList[i]\n      const value = this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v\n      if (value === undefined) continue\n      fn.call(thisp, value, this.#keyList[i] as K, this)\n    }\n  }\n\n  /**\n   * Delete any stale entries. Returns true if anything was removed,\n   * false otherwise.\n   */\n  purgeStale() {\n    let deleted = false\n    for (const i of this.#rindexes({ allowStale: true })) {\n      if (this.#isStale(i)) {\n        this.#delete(this.#keyList[i] as K, 'expire')\n        deleted = true\n      }\n    }\n    return deleted\n  }\n\n  /**\n   * Get the extended info about a given entry, to get its value, size, and\n   * TTL info simultaneously. Returns `undefined` if the key is not present.\n   *\n   * Unlike {@link LRUCache#dump}, which is designed to be portable and survive\n   * serialization, the `start` value is always the current timestamp, and the\n   * `ttl` is a calculated remaining time to live (negative if expired).\n   *\n   * Always returns stale values, if their info is found in the cache, so be\n   * sure to check for expirations (ie, a negative {@link LRUCache.Entry#ttl})\n   * if relevant.\n   */\n  info(key: K): LRUCache.Entry<V> | undefined {\n    const i = this.#keyMap.get(key)\n    if (i === undefined) return undefined\n    const v = this.#valList[i]\n    /* c8 ignore start - this isn't tested for the info function,\n     * but it's the same logic as found in other places. */\n    const value: V | undefined =\n      this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v\n    if (value === undefined) return undefined\n    /* c8 ignore end */\n    const entry: LRUCache.Entry<V> = { value }\n    if (this.#ttls && this.#starts) {\n      const ttl = this.#ttls[i]\n      const start = this.#starts[i]\n      if (ttl && start) {\n        const remain = ttl - (this.#perf.now() - start)\n        entry.ttl = remain\n        entry.start = Date.now()\n      }\n    }\n    if (this.#sizes) {\n      entry.size = this.#sizes[i]\n    }\n    return entry\n  }\n\n  /**\n   * Return an array of [key, {@link LRUCache.Entry}] tuples which can be\n   * passed to {@link LRUCache#load}.\n   *\n   * The `start` fields are calculated relative to a portable `Date.now()`\n   * timestamp, even if `performance.now()` is available.\n   *\n   * Stale entries are always included in the `dump`, even if\n   * {@link LRUCache.OptionsBase.allowStale} is false.\n   *\n   * Note: this returns an actual array, not a generator, so it can be more\n   * easily passed around.\n   */\n  dump() {\n    const arr: [K, LRUCache.Entry<V>][] = []\n    for (const i of this.#indexes({ allowStale: true })) {\n      const key = this.#keyList[i]\n      const v = this.#valList[i]\n      const value: V | undefined =\n        this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v\n      if (value === undefined || key === undefined) continue\n      const entry: LRUCache.Entry<V> = { value }\n      if (this.#ttls && this.#starts) {\n        entry.ttl = this.#ttls[i]\n        // always dump the start relative to a portable timestamp\n        // it's ok for this to be a bit slow, it's a rare operation.\n        const age = this.#perf.now() - (this.#starts[i] as number)\n        entry.start = Math.floor(Date.now() - age)\n      }\n      if (this.#sizes) {\n        entry.size = this.#sizes[i]\n      }\n      arr.unshift([key, entry])\n    }\n    return arr\n  }\n\n  /**\n   * Reset the cache and load in the items in entries in the order listed.\n   *\n   * The shape of the resulting cache may be different if the same options are\n   * not used in both caches.\n   *\n   * The `start` fields are assumed to be calculated relative to a portable\n   * `Date.now()` timestamp, even if `performance.now()` is available.\n   */\n  load(arr: [K, LRUCache.Entry<V>][]) {\n    this.clear()\n    for (const [key, entry] of arr) {\n      if (entry.start) {\n        // entry.start is a portable timestamp, but we may be using\n        // node's performance.now(), so calculate the offset, so that\n        // we get the intended remaining TTL, no matter how long it's\n        // been on ice.\n        //\n        // it's ok for this to be a bit slow, it's a rare operation.\n        const age = Date.now() - entry.start\n        entry.start = this.#perf.now() - age\n      }\n      this.set(key, entry.value, entry)\n    }\n  }\n\n  /**\n   * Add a value to the cache.\n   *\n   * Note: if `undefined` is specified as a value, this is an alias for\n   * {@link LRUCache#delete}\n   *\n   * Fields on the {@link LRUCache.SetOptions} options param will override\n   * their corresponding values in the constructor options for the scope\n   * of this single `set()` operation.\n   *\n   * If `start` is provided, then that will set the effective start\n   * time for the TTL calculation. Note that this must be a previous\n   * value of `performance.now()` if supported, or a previous value of\n   * `Date.now()` if not.\n   *\n   * Options object may also include `size`, which will prevent\n   * calling the `sizeCalculation` function and just use the specified\n   * number if it is a positive integer, and `noDisposeOnSet` which\n   * will prevent calling a `dispose` function in the case of\n   * overwrites.\n   *\n   * If the `size` (or return value of `sizeCalculation`) for a given\n   * entry is greater than `maxEntrySize`, then the item will not be\n   * added to the cache.\n   *\n   * Will update the recency of the entry.\n   *\n   * If the value is `undefined`, then this is an alias for\n   * `cache.delete(key)`. `undefined` is never stored in the cache.\n   */\n  set(\n    k: K,\n    v: V | BackgroundFetch<V> | undefined,\n    setOptions: LRUCache.SetOptions<K, V, FC> = {},\n  ) {\n    if (v === undefined) {\n      this.delete(k)\n      return this\n    }\n    const {\n      ttl = this.ttl,\n      start,\n      noDisposeOnSet = this.noDisposeOnSet,\n      sizeCalculation = this.sizeCalculation,\n      status,\n    } = setOptions\n    let { noUpdateTTL = this.noUpdateTTL } = setOptions\n\n    const size = this.#requireSize(\n      k,\n      v,\n      setOptions.size || 0,\n      sizeCalculation,\n    )\n    // if the item doesn't fit, don't do anything\n    // NB: maxEntrySize set to maxSize by default\n    if (this.maxEntrySize && size > this.maxEntrySize) {\n      if (status) {\n        status.set = 'miss'\n        status.maxEntrySizeExceeded = true\n      }\n      // have to delete, in case something is there already.\n      this.#delete(k, 'set')\n      return this\n    }\n    let index = this.#size === 0 ? undefined : this.#keyMap.get(k)\n    if (index === undefined) {\n      // addition\n      index = (\n        this.#size === 0 ? this.#tail\n        : this.#free.length !== 0 ? this.#free.pop()\n        : this.#size === this.#max ? this.#evict(false)\n        : this.#size) as Index\n      this.#keyList[index] = k\n      this.#valList[index] = v\n      this.#keyMap.set(k, index)\n      this.#next[this.#tail] = index\n      this.#prev[index] = this.#tail\n      this.#tail = index\n      this.#size++\n      this.#addItemSize(index, size, status)\n      if (status) status.set = 'add'\n      noUpdateTTL = false\n      if (this.#hasOnInsert) {\n        this.#onInsert?.(v as V, k, 'add')\n      }\n    } else {\n      // update\n      this.#moveToTail(index)\n      const oldVal = this.#valList[index] as V | BackgroundFetch<V>\n      if (v !== oldVal) {\n        if (this.#hasFetchMethod && this.#isBackgroundFetch(oldVal)) {\n          oldVal.__abortController.abort(new Error('replaced'))\n          const { __staleWhileFetching: s } = oldVal\n          if (s !== undefined && !noDisposeOnSet) {\n            if (this.#hasDispose) {\n              this.#dispose?.(s as V, k, 'set')\n            }\n            if (this.#hasDisposeAfter) {\n              this.#disposed?.push([s as V, k, 'set'])\n            }\n          }\n        } else if (!noDisposeOnSet) {\n          if (this.#hasDispose) {\n            this.#dispose?.(oldVal as V, k, 'set')\n          }\n          if (this.#hasDisposeAfter) {\n            this.#disposed?.push([oldVal as V, k, 'set'])\n          }\n        }\n        this.#removeItemSize(index)\n        this.#addItemSize(index, size, status)\n        this.#valList[index] = v\n        if (status) {\n          status.set = 'replace'\n          const oldValue =\n            oldVal && this.#isBackgroundFetch(oldVal) ?\n              oldVal.__staleWhileFetching\n            : oldVal\n          if (oldValue !== undefined) status.oldValue = oldValue\n        }\n      } else if (status) {\n        status.set = 'update'\n      }\n\n      if (this.#hasOnInsert) {\n        this.onInsert?.(v as V, k, v === oldVal ? 'update' : 'replace')\n      }\n    }\n    if (ttl !== 0 && !this.#ttls) {\n      this.#initializeTTLTracking()\n    }\n    if (this.#ttls) {\n      if (!noUpdateTTL) {\n        this.#setItemTTL(index, ttl, start)\n      }\n      if (status) this.#statusTTL(status, index)\n    }\n    if (!noDisposeOnSet && this.#hasDisposeAfter && this.#disposed) {\n      const dt = this.#disposed\n      let task: DisposeTask<K, V> | undefined\n      while ((task = dt?.shift())) {\n        this.#disposeAfter?.(...task)\n      }\n    }\n    return this\n  }\n\n  /**\n   * Evict the least recently used item, returning its value or\n   * `undefined` if cache is empty.\n   */\n  pop(): V | undefined {\n    try {\n      while (this.#size) {\n        const val = this.#valList[this.#head]\n        this.#evict(true)\n        if (this.#isBackgroundFetch(val)) {\n          if (val.__staleWhileFetching) {\n            return val.__staleWhileFetching\n          }\n        } else if (val !== undefined) {\n          return val\n        }\n      }\n    } finally {\n      if (this.#hasDisposeAfter && this.#disposed) {\n        const dt = this.#disposed\n        let task: DisposeTask<K, V> | undefined\n        while ((task = dt?.shift())) {\n          this.#disposeAfter?.(...task)\n        }\n      }\n    }\n  }\n\n  #evict(free: boolean) {\n    const head = this.#head\n    const k = this.#keyList[head] as K\n    const v = this.#valList[head] as V\n    if (this.#hasFetchMethod && this.#isBackgroundFetch(v)) {\n      v.__abortController.abort(new Error('evicted'))\n    } else if (this.#hasDispose || this.#hasDisposeAfter) {\n      if (this.#hasDispose) {\n        this.#dispose?.(v, k, 'evict')\n      }\n      if (this.#hasDisposeAfter) {\n        this.#disposed?.push([v, k, 'evict'])\n      }\n    }\n    this.#removeItemSize(head)\n    if (this.#autopurgeTimers?.[head]) {\n      clearTimeout(this.#autopurgeTimers[head])\n      this.#autopurgeTimers[head] = undefined\n    }\n    // if we aren't about to use the index, then null these out\n    if (free) {\n      this.#keyList[head] = undefined\n      this.#valList[head] = undefined\n      this.#free.push(head)\n    }\n    if (this.#size === 1) {\n      this.#head = this.#tail = 0 as Index\n      this.#free.length = 0\n    } else {\n      this.#head = this.#next[head] as Index\n    }\n    this.#keyMap.delete(k)\n    this.#size--\n    return head\n  }\n\n  /**\n   * Check if a key is in the cache, without updating the recency of use.\n   * Will return false if the item is stale, even though it is technically\n   * in the cache.\n   *\n   * Check if a key is in the cache, without updating the recency of\n   * use. Age is updated if {@link LRUCache.OptionsBase.updateAgeOnHas} is set\n   * to `true` in either the options or the constructor.\n   *\n   * Will return `false` if the item is stale, even though it is technically in\n   * the cache. The difference can be determined (if it matters) by using a\n   * `status` argument, and inspecting the `has` field.\n   *\n   * Will not update item age unless\n   * {@link LRUCache.OptionsBase.updateAgeOnHas} is set.\n   */\n  has(k: K, hasOptions: LRUCache.HasOptions<K, V, FC> = {}) {\n    const { updateAgeOnHas = this.updateAgeOnHas, status } = hasOptions\n    const index = this.#keyMap.get(k)\n    if (index !== undefined) {\n      const v = this.#valList[index]\n      if (\n        this.#isBackgroundFetch(v) &&\n        v.__staleWhileFetching === undefined\n      ) {\n        return false\n      }\n      if (!this.#isStale(index)) {\n        if (updateAgeOnHas) {\n          this.#updateItemAge(index)\n        }\n        if (status) {\n          status.has = 'hit'\n          this.#statusTTL(status, index)\n        }\n        return true\n      } else if (status) {\n        status.has = 'stale'\n        this.#statusTTL(status, index)\n      }\n    } else if (status) {\n      status.has = 'miss'\n    }\n    return false\n  }\n\n  /**\n   * Like {@link LRUCache#get} but doesn't update recency or delete stale\n   * items.\n   *\n   * Returns `undefined` if the item is stale, unless\n   * {@link LRUCache.OptionsBase.allowStale} is set.\n   */\n  peek(k: K, peekOptions: LRUCache.PeekOptions<K, V, FC> = {}) {\n    const { allowStale = this.allowStale } = peekOptions\n    const index = this.#keyMap.get(k)\n    if (index === undefined || (!allowStale && this.#isStale(index))) {\n      return\n    }\n    const v = this.#valList[index]\n    // either stale and allowed, or forcing a refresh of non-stale value\n    return this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v\n  }\n\n  #backgroundFetch(\n    k: K,\n    index: Index | undefined,\n    options: LRUCache.FetchOptions<K, V, FC>,\n    context: any,\n  ): BackgroundFetch<V> {\n    const v = index === undefined ? undefined : this.#valList[index]\n    if (this.#isBackgroundFetch(v)) {\n      return v\n    }\n\n    const ac = new AC()\n    const { signal } = options\n    // when/if our AC signals, then stop listening to theirs.\n    signal?.addEventListener('abort', () => ac.abort(signal.reason), {\n      signal: ac.signal,\n    })\n\n    const fetchOpts = {\n      signal: ac.signal,\n      options,\n      context,\n    }\n\n    const cb = (v: V | undefined, updateCache = false): V | undefined => {\n      const { aborted } = ac.signal\n      const ignoreAbort = options.ignoreFetchAbort && v !== undefined\n      const proceed = options.ignoreFetchAbort ||\n        !!(options.allowStaleOnFetchAbort && v !== undefined)\n      if (options.status) {\n        if (aborted && !updateCache) {\n          options.status.fetchAborted = true\n          options.status.fetchError = ac.signal.reason\n          if (ignoreAbort) options.status.fetchAbortIgnored = true\n        } else {\n          options.status.fetchResolved = true\n        }\n      }\n      if (aborted && !ignoreAbort && !updateCache) {\n        return fetchFail(ac.signal.reason, proceed)\n      }\n      // either we didn't abort, and are still here, or we did, and ignored\n      const bf = p as BackgroundFetch<V>\n      // if nothing else has been written there but we're set to update the\n      // cache and ignore the abort, or if it's still pending on this specific\n      // background request, then write it to the cache.\n      const vl = this.#valList[index as Index]\n      if (vl === p || (ignoreAbort && updateCache && vl === undefined)) {\n        if (v === undefined) {\n          if (bf.__staleWhileFetching !== undefined) {\n            this.#valList[index as Index] = bf.__staleWhileFetching\n          } else {\n            this.#delete(k, 'fetch')\n          }\n        } else {\n          if (options.status) options.status.fetchUpdated = true\n          this.set(k, v, fetchOpts.options)\n        }\n      }\n      return v\n    }\n\n    const eb = (er: any) => {\n      if (options.status) {\n        options.status.fetchRejected = true\n        options.status.fetchError = er\n      }\n      // do not pass go, do not collect $200\n      return fetchFail(er, false)\n    }\n\n    const fetchFail = (er: any, proceed: boolean): V | undefined => {\n      const { aborted } = ac.signal\n      const allowStaleAborted = aborted && options.allowStaleOnFetchAbort\n      const allowStale =\n        allowStaleAborted || options.allowStaleOnFetchRejection\n      const noDelete = allowStale || options.noDeleteOnFetchRejection\n      const bf = p as BackgroundFetch<V>\n      if (this.#valList[index as Index] === p) {\n        // if we allow stale on fetch rejections, then we need to ensure that\n        // the stale value is not removed from the cache when the fetch fails.\n        const del = !noDelete ||\n          !proceed && bf.__staleWhileFetching === undefined\n        if (del) {\n          this.#delete(k, 'fetch')\n        } else if (!allowStaleAborted) {\n          // still replace the *promise* with the stale value,\n          // since we are done with the promise at this point.\n          // leave it untouched if we're still waiting for an\n          // aborted background fetch that hasn't yet returned.\n          this.#valList[index as Index] = bf.__staleWhileFetching\n        }\n      }\n      if (allowStale) {\n        if (options.status && bf.__staleWhileFetching !== undefined) {\n          options.status.returnedStale = true\n        }\n        return bf.__staleWhileFetching\n      } else if (bf.__returned === bf) {\n        throw er\n      }\n    }\n\n    const pcall = (\n      res: (v: V | undefined) => void,\n      rej: (e: any) => void,\n    ) => {\n      const fmp = this.#fetchMethod?.(k, v, fetchOpts)\n      if (fmp && fmp instanceof Promise) {\n        fmp.then(v => res(v === undefined ? undefined : v), rej)\n      }\n      // ignored, we go until we finish, regardless.\n      // defer check until we are actually aborting,\n      // so fetchMethod can override.\n      ac.signal.addEventListener('abort', () => {\n        if (!options.ignoreFetchAbort || options.allowStaleOnFetchAbort) {\n          res(undefined)\n          // when it eventually resolves, update the cache.\n          if (options.allowStaleOnFetchAbort) {\n            res = v => cb(v, true)\n          }\n        }\n      })\n    }\n\n    if (options.status) options.status.fetchDispatched = true\n    const p = new Promise(pcall).then(cb, eb)\n    const bf: BackgroundFetch<V> = Object.assign(p, {\n      __abortController: ac,\n      __staleWhileFetching: v,\n      __returned: undefined,\n    })\n\n    if (index === undefined) {\n      // internal, don't expose status.\n      this.set(k, bf, { ...fetchOpts.options, status: undefined })\n      index = this.#keyMap.get(k)\n    } else {\n      this.#valList[index] = bf\n    }\n    return bf\n  }\n\n  #isBackgroundFetch(p: any): p is BackgroundFetch<V> {\n    if (!this.#hasFetchMethod) return false\n    const b = p as BackgroundFetch<V>\n    return (\n      !!b &&\n      b instanceof Promise &&\n      b.hasOwnProperty('__staleWhileFetching') &&\n      b.__abortController instanceof AC\n    )\n  }\n\n  /**\n   * Make an asynchronous cached fetch using the\n   * {@link LRUCache.OptionsBase.fetchMethod} function.\n   *\n   * If the value is in the cache and not stale, then the returned\n   * Promise resolves to the value.\n   *\n   * If not in the cache, or beyond its TTL staleness, then\n   * `fetchMethod(key, staleValue, { options, signal, context })` is\n   * called, and the value returned will be added to the cache once\n   * resolved.\n   *\n   * If called with `allowStale`, and an asynchronous fetch is\n   * currently in progress to reload a stale value, then the former\n   * stale value will be returned.\n   *\n   * If called with `forceRefresh`, then the cached item will be\n   * re-fetched, even if it is not stale. However, if `allowStale` is also\n   * set, then the old value will still be returned. This is useful\n   * in cases where you want to force a reload of a cached value. If\n   * a background fetch is already in progress, then `forceRefresh`\n   * has no effect.\n   *\n   * If multiple fetches for the same key are issued, then they will all be\n   * coalesced into a single call to fetchMethod.\n   *\n   * Note that this means that handling options such as\n   * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort},\n   * {@link LRUCache.FetchOptions.signal},\n   * and {@link LRUCache.OptionsBase.allowStaleOnFetchRejection} will be\n   * determined by the FIRST fetch() call for a given key.\n   *\n   * This is a known (fixable) shortcoming which will be addresed on when\n   * someone complains about it, as the fix would involve added complexity and\n   * may not be worth the costs for this edge case.\n   *\n   * If {@link LRUCache.OptionsBase.fetchMethod} is not specified, then this is\n   * effectively an alias for `Promise.resolve(cache.get(key))`.\n   *\n   * When the fetch method resolves to a value, if the fetch has not\n   * been aborted due to deletion, eviction, or being overwritten,\n   * then it is added to the cache using the options provided.\n   *\n   * If the key is evicted or deleted before the `fetchMethod`\n   * resolves, then the AbortSignal passed to the `fetchMethod` will\n   * receive an `abort` event, and the promise returned by `fetch()`\n   * will reject with the reason for the abort.\n   *\n   * If a `signal` is passed to the `fetch()` call, then aborting the\n   * signal will abort the fetch and cause the `fetch()` promise to\n   * reject with the reason provided.\n   *\n   * **Setting `context`**\n   *\n   * If an `FC` type is set to a type other than `unknown`, `void`, or\n   * `undefined` in the {@link LRUCache} constructor, then all\n   * calls to `cache.fetch()` _must_ provide a `context` option. If\n   * set to `undefined` or `void`, then calls to fetch _must not_\n   * provide a `context` option.\n   *\n   * The `context` param allows you to provide arbitrary data that\n   * might be relevant in the course of fetching the data. It is only\n   * relevant for the course of a single `fetch()` operation, and\n   * discarded afterwards.\n   *\n   * **Note: `fetch()` calls are inflight-unique**\n   *\n   * If you call `fetch()` multiple times with the same key value,\n   * then every call after the first will resolve on the same\n   * promise<sup>1</sup>,\n   * _even if they have different settings that would otherwise change\n   * the behavior of the fetch_, such as `noDeleteOnFetchRejection`\n   * or `ignoreFetchAbort`.\n   *\n   * In most cases, this is not a problem (in fact, only fetching\n   * something once is what you probably want, if you're caching in\n   * the first place). If you are changing the fetch() options\n   * dramatically between runs, there's a good chance that you might\n   * be trying to fit divergent semantics into a single object, and\n   * would be better off with multiple cache instances.\n   *\n   * **1**: Ie, they're not the \"same Promise\", but they resolve at\n   * the same time, because they're both waiting on the same\n   * underlying fetchMethod response.\n   */\n\n  fetch(\n    k: K,\n    fetchOptions: unknown extends FC ? LRUCache.FetchOptions<K, V, FC>\n    : FC extends undefined | void ? LRUCache.FetchOptionsNoContext<K, V>\n    : LRUCache.FetchOptionsWithContext<K, V, FC>,\n  ): Promise<undefined | V>\n\n  // this overload not allowed if context is required\n  fetch(\n    k: unknown extends FC ? K\n    : FC extends undefined | void ? K\n    : never,\n    fetchOptions?: unknown extends FC ? LRUCache.FetchOptions<K, V, FC>\n    : FC extends undefined | void ? LRUCache.FetchOptionsNoContext<K, V>\n    : never,\n  ): Promise<undefined | V>\n\n  async fetch(\n    k: K,\n    fetchOptions: LRUCache.FetchOptions<K, V, FC> = {},\n  ): Promise<undefined | V> {\n    const {\n      // get options\n      allowStale = this.allowStale,\n      updateAgeOnGet = this.updateAgeOnGet,\n      noDeleteOnStaleGet = this.noDeleteOnStaleGet,\n      // set options\n      ttl = this.ttl,\n      noDisposeOnSet = this.noDisposeOnSet,\n      size = 0,\n      sizeCalculation = this.sizeCalculation,\n      noUpdateTTL = this.noUpdateTTL,\n      // fetch exclusive options\n      noDeleteOnFetchRejection = this.noDeleteOnFetchRejection,\n      allowStaleOnFetchRejection = this.allowStaleOnFetchRejection,\n      ignoreFetchAbort = this.ignoreFetchAbort,\n      allowStaleOnFetchAbort = this.allowStaleOnFetchAbort,\n      context,\n      forceRefresh = false,\n      status,\n      signal,\n    } = fetchOptions\n\n    if (!this.#hasFetchMethod) {\n      if (status) status.fetch = 'get'\n      return this.get(k, {\n        allowStale,\n        updateAgeOnGet,\n        noDeleteOnStaleGet,\n        status,\n      })\n    }\n\n    const options = {\n      allowStale,\n      updateAgeOnGet,\n      noDeleteOnStaleGet,\n      ttl,\n      noDisposeOnSet,\n      size,\n      sizeCalculation,\n      noUpdateTTL,\n      noDeleteOnFetchRejection,\n      allowStaleOnFetchRejection,\n      allowStaleOnFetchAbort,\n      ignoreFetchAbort,\n      status,\n      signal,\n    }\n\n    let index = this.#keyMap.get(k)\n    if (index === undefined) {\n      if (status) status.fetch = 'miss'\n      const p = this.#backgroundFetch(k, index, options, context)\n      return (p.__returned = p)\n    } else {\n      // in cache, maybe already fetching\n      const v = this.#valList[index]\n      if (this.#isBackgroundFetch(v)) {\n        const stale = allowStale && v.__staleWhileFetching !== undefined\n        if (status) {\n          status.fetch = 'inflight'\n          if (stale) status.returnedStale = true\n        }\n        return stale ? v.__staleWhileFetching : (v.__returned = v)\n      }\n\n      // if we force a refresh, that means do NOT serve the cached value,\n      // unless we are already in the process of refreshing the cache.\n      const isStale = this.#isStale(index)\n      if (!forceRefresh && !isStale) {\n        if (status) status.fetch = 'hit'\n        this.#moveToTail(index)\n        if (updateAgeOnGet) {\n          this.#updateItemAge(index)\n        }\n        if (status) this.#statusTTL(status, index)\n        return v\n      }\n\n      // ok, it is stale or a forced refresh, and not already fetching.\n      // refresh the cache.\n      const p = this.#backgroundFetch(k, index, options, context)\n      const hasStale = p.__staleWhileFetching !== undefined\n      const staleVal = hasStale && allowStale\n      if (status) {\n        status.fetch = isStale ? 'stale' : 'refresh'\n        if (staleVal && isStale) status.returnedStale = true\n      }\n      return staleVal ? p.__staleWhileFetching : (p.__returned = p)\n    }\n  }\n\n  /**\n   * In some cases, `cache.fetch()` may resolve to `undefined`, either because\n   * a {@link LRUCache.OptionsBase#fetchMethod} was not provided (turning\n   * `cache.fetch(k)` into just an async wrapper around `cache.get(k)`) or\n   * because `ignoreFetchAbort` was specified (either to the constructor or\n   * in the {@link LRUCache.FetchOptions}). Also, the\n   * {@link LRUCache.OptionsBase.fetchMethod} may return `undefined` or `void`, making\n   * the test even more complicated.\n   *\n   * Because inferring the cases where `undefined` might be returned are so\n   * cumbersome, but testing for `undefined` can also be annoying, this method\n   * can be used, which will reject if `this.fetch()` resolves to undefined.\n   */\n  forceFetch(\n    k: K,\n    fetchOptions: unknown extends FC ? LRUCache.FetchOptions<K, V, FC>\n    : FC extends undefined | void ? LRUCache.FetchOptionsNoContext<K, V>\n    : LRUCache.FetchOptionsWithContext<K, V, FC>,\n  ): Promise<V>\n  // this overload not allowed if context is required\n  forceFetch(\n    k: unknown extends FC ? K\n    : FC extends undefined | void ? K\n    : never,\n    fetchOptions?: unknown extends FC ? LRUCache.FetchOptions<K, V, FC>\n    : FC extends undefined | void ? LRUCache.FetchOptionsNoContext<K, V>\n    : never,\n  ): Promise<V>\n  async forceFetch(\n    k: K,\n    fetchOptions: LRUCache.FetchOptions<K, V, FC> = {},\n  ): Promise<V> {\n    const v = await this.fetch(\n      k,\n      fetchOptions as unknown extends FC ? LRUCache.FetchOptions<K, V, FC>\n      : FC extends undefined | void ? LRUCache.FetchOptionsNoContext<K, V>\n      : LRUCache.FetchOptionsWithContext<K, V, FC>,\n    )\n    if (v === undefined) throw new Error('fetch() returned undefined')\n    return v\n  }\n\n  /**\n   * If the key is found in the cache, then this is equivalent to\n   * {@link LRUCache#get}. If not, in the cache, then calculate the value using\n   * the {@link LRUCache.OptionsBase.memoMethod}, and add it to the cache.\n   *\n   * If an `FC` type is set to a type other than `unknown`, `void`, or\n   * `undefined` in the LRUCache constructor, then all calls to `cache.memo()`\n   * _must_ provide a `context` option. If set to `undefined` or `void`, then\n   * calls to memo _must not_ provide a `context` option.\n   *\n   * The `context` param allows you to provide arbitrary data that might be\n   * relevant in the course of fetching the data. It is only relevant for the\n   * course of a single `memo()` operation, and discarded afterwards.\n   */\n  memo(\n    k: K,\n    memoOptions: unknown extends FC ? LRUCache.MemoOptions<K, V, FC>\n    : FC extends undefined | void ? LRUCache.MemoOptionsNoContext<K, V>\n    : LRUCache.MemoOptionsWithContext<K, V, FC>,\n  ): V\n  // this overload not allowed if context is required\n  memo(\n    k: unknown extends FC ? K\n    : FC extends undefined | void ? K\n    : never,\n    memoOptions?: unknown extends FC ? LRUCache.MemoOptions<K, V, FC>\n    : FC extends undefined | void ? LRUCache.MemoOptionsNoContext<K, V>\n    : never,\n  ): V\n  memo(k: K, memoOptions: LRUCache.MemoOptions<K, V, FC> = {}) {\n    const memoMethod = this.#memoMethod\n    if (!memoMethod) {\n      throw new Error('no memoMethod provided to constructor')\n    }\n    const { context, forceRefresh, ...options } = memoOptions\n    const v = this.get(k, options)\n    if (!forceRefresh && v !== undefined) return v\n    const vv = memoMethod(k, v, {\n      options,\n      context,\n    } as LRUCache.MemoizerOptions<K, V, FC>)\n    this.set(k, vv, options)\n    return vv\n  }\n\n  /**\n   * Return a value from the cache. Will update the recency of the cache\n   * entry found.\n   *\n   * If the key is not found, get() will return `undefined`.\n   */\n  get(k: K, getOptions: LRUCache.GetOptions<K, V, FC> = {}) {\n    const {\n      allowStale = this.allowStale,\n      updateAgeOnGet = this.updateAgeOnGet,\n      noDeleteOnStaleGet = this.noDeleteOnStaleGet,\n      status,\n    } = getOptions\n    const index = this.#keyMap.get(k)\n    if (index !== undefined) {\n      const value = this.#valList[index]\n      const fetching = this.#isBackgroundFetch(value)\n      if (status) this.#statusTTL(status, index)\n      if (this.#isStale(index)) {\n        if (status) status.get = 'stale'\n        // delete only if not an in-flight background fetch\n        if (!fetching) {\n          if (!noDeleteOnStaleGet) {\n            this.#delete(k, 'expire')\n          }\n          if (status && allowStale) status.returnedStale = true\n          return allowStale ? value : undefined\n        } else {\n          if (\n            status &&\n            allowStale &&\n            value.__staleWhileFetching !== undefined\n          ) {\n            status.returnedStale = true\n          }\n          return allowStale ? value.__staleWhileFetching : undefined\n        }\n      } else {\n        if (status) status.get = 'hit'\n        // if we're currently fetching it, we don't actually have it yet\n        // it's not stale, which means this isn't a staleWhileRefetching.\n        // If it's not stale, and fetching, AND has a __staleWhileFetching\n        // value, then that means the user fetched with {forceRefresh:true},\n        // so it's safe to return that value.\n        if (fetching) {\n          return value.__staleWhileFetching\n        }\n        this.#moveToTail(index)\n        if (updateAgeOnGet) {\n          this.#updateItemAge(index)\n        }\n        return value\n      }\n    } else if (status) {\n      status.get = 'miss'\n    }\n  }\n\n  #connect(p: Index, n: Index) {\n    this.#prev[n] = p\n    this.#next[p] = n\n  }\n\n  #moveToTail(index: Index): void {\n    // if tail already, nothing to do\n    // if head, move head to next[index]\n    // else\n    //   move next[prev[index]] to next[index] (head has no prev)\n    //   move prev[next[index]] to prev[index]\n    // prev[index] = tail\n    // next[tail] = index\n    // tail = index\n    if (index !== this.#tail) {\n      if (index === this.#head) {\n        this.#head = this.#next[index] as Index\n      } else {\n        this.#connect(\n          this.#prev[index] as Index,\n          this.#next[index] as Index,\n        )\n      }\n      this.#connect(this.#tail, index)\n      this.#tail = index\n    }\n  }\n\n  /**\n   * Deletes a key out of the cache.\n   *\n   * Returns true if the key was deleted, false otherwise.\n   */\n  delete(k: K) {\n    return this.#delete(k, 'delete')\n  }\n\n  #delete(k: K, reason: LRUCache.DisposeReason) {\n    let deleted = false\n    if (this.#size !== 0) {\n      const index = this.#keyMap.get(k)\n      if (index !== undefined) {\n        if (this.#autopurgeTimers?.[index]) {\n          clearTimeout(this.#autopurgeTimers?.[index])\n          this.#autopurgeTimers[index] = undefined\n        }\n        deleted = true\n        if (this.#size === 1) {\n          this.#clear(reason)\n        } else {\n          this.#removeItemSize(index)\n          const v = this.#valList[index]\n          if (this.#isBackgroundFetch(v)) {\n            v.__abortController.abort(new Error('deleted'))\n          } else if (this.#hasDispose || this.#hasDisposeAfter) {\n            if (this.#hasDispose) {\n              this.#dispose?.(v as V, k, reason)\n            }\n            if (this.#hasDisposeAfter) {\n              this.#disposed?.push([v as V, k, reason])\n            }\n          }\n          this.#keyMap.delete(k)\n          this.#keyList[index] = undefined\n          this.#valList[index] = undefined\n          if (index === this.#tail) {\n            this.#tail = this.#prev[index] as Index\n          } else if (index === this.#head) {\n            this.#head = this.#next[index] as Index\n          } else {\n            const pi = this.#prev[index] as number\n            this.#next[pi] = this.#next[index] as number\n            const ni = this.#next[index] as number\n            this.#prev[ni] = this.#prev[index] as number\n          }\n          this.#size--\n          this.#free.push(index)\n        }\n      }\n    }\n    if (this.#hasDisposeAfter && this.#disposed?.length) {\n      const dt = this.#disposed\n      let task: DisposeTask<K, V> | undefined\n      while ((task = dt?.shift())) {\n        this.#disposeAfter?.(...task)\n      }\n    }\n    return deleted\n  }\n\n  /**\n   * Clear the cache entirely, throwing away all values.\n   */\n  clear() {\n    return this.#clear('delete')\n  }\n  #clear(reason: LRUCache.DisposeReason) {\n    for (const index of this.#rindexes({ allowStale: true })) {\n      const v = this.#valList[index]\n      if (this.#isBackgroundFetch(v)) {\n        v.__abortController.abort(new Error('deleted'))\n      } else {\n        const k = this.#keyList[index]\n        if (this.#hasDispose) {\n          this.#dispose?.(v as V, k as K, reason)\n        }\n        if (this.#hasDisposeAfter) {\n          this.#disposed?.push([v as V, k as K, reason])\n        }\n      }\n    }\n\n    this.#keyMap.clear()\n    this.#valList.fill(undefined)\n    this.#keyList.fill(undefined)\n    if (this.#ttls && this.#starts) {\n      this.#ttls.fill(0)\n      this.#starts.fill(0)\n      for (const t of this.#autopurgeTimers ?? []) {\n        if (t !== undefined) clearTimeout(t)\n      }\n      this.#autopurgeTimers?.fill(undefined)\n    }\n    if (this.#sizes) {\n      this.#sizes.fill(0)\n    }\n    this.#head = 0 as Index\n    this.#tail = 0 as Index\n    this.#free.length = 0\n    this.#calculatedSize = 0\n    this.#size = 0\n    if (this.#hasDisposeAfter && this.#disposed) {\n      const dt = this.#disposed\n      let task: DisposeTask<K, V> | undefined\n      while ((task = dt?.shift())) {\n        this.#disposeAfter?.(...task)\n      }\n    }\n  }\n}\n", "import { LRUCache } from \"lru-cache\";\nimport type { KeyValueCache, KeyValueCacheSetOptions } from \"./KeyValueCache\";\n\nexport type InMemoryLRUCacheSetOptions<\n  V extends {} = string,\n  FC = unknown,\n> = Omit<LRUCache.SetOptions<string, V, FC>, \"ttl\"> & KeyValueCacheSetOptions;\n\n// LRUCache wrapper to implement the KeyValueCache interface.\nexport class InMemoryLRUCache<\n  V extends {} = string,\n  SO extends InMemoryLRUCacheSetOptions<V> = InMemoryLRUCacheSetOptions<V>,\n> implements KeyValueCache<V, SO>\n{\n  private cache: LRUCache<string, V>;\n\n  constructor(lruCacheOpts?: LRUCache.Options<string, V, any>) {\n    this.cache = new LRUCache({\n      sizeCalculation: InMemoryLRUCache.sizeCalculation,\n      // Create ~about~ a 30MiB cache by default. Configurable by providing\n      // `lruCacheOpts`.\n      maxSize: Math.pow(2, 20) * 30,\n      ...lruCacheOpts,\n    });\n  }\n\n  /**\n   * default size calculator for strings and serializable objects, else naively\n   * return 1\n   */\n  static sizeCalculation<V extends {}>(item: V) {\n    if (typeof item === \"string\") {\n      return item.length;\n    }\n    if (typeof item === \"object\") {\n      // will throw if the object has circular references\n      return Buffer.byteLength(JSON.stringify(item), \"utf8\");\n    }\n    return 1;\n  }\n\n  async set(key: string, value: V, options?: SO) {\n    // If a TTL in seconds is provided, convert it to milliseconds.\n    // Otherwise, default it to 0 to indicate \"no TTL\".\n    const lruOptions = options\n      ? { ...options, ttl: options.ttl ? options.ttl * 1000 : 0 }\n      : undefined;\n    this.cache.set(key, value, lruOptions);\n  }\n\n  async get(key: string) {\n    return this.cache.get(key);\n  }\n\n  async delete(key: string) {\n    return this.cache.delete(key);\n  }\n\n  clear() {\n    this.cache.clear();\n  }\n\n  keys() {\n    // LRUCache.keys() returns a generator (we just want an array)\n    return [...this.cache.keys()];\n  }\n}\n", "import type { KeyValueCache, KeyValueCacheSetOptions } from \"./KeyValueCache\";\nimport type { Logger } from \"@apollo/utils.logger\";\n\n/**\n * This cache wraps a KeyValueCache and returns undefined (a cache miss) for any\n * errors thrown by the underlying cache. You can also provide a logger to\n * capture these errors rather than just swallow them.\n */\nexport class ErrorsAreMissesCache<\n  V = string,\n  SO extends KeyValueCacheSetOptions = KeyValueCacheSetOptions,\n> implements KeyValueCache<V, SO>\n{\n  constructor(\n    private cache: KeyValueCache<V, SO>,\n    private logger?: Logger,\n  ) {}\n\n  async get(key: string): Promise<V | undefined> {\n    try {\n      return await this.cache.get(key);\n    } catch (e) {\n      if (this.logger) {\n        if (e instanceof Error) {\n          this.logger.error(e.message);\n        } else {\n          this.logger.error(e);\n        }\n      }\n      return undefined;\n    }\n  }\n\n  async set(key: string, value: V, opts?: SO): Promise<void> {\n    return this.cache.set(key, value, opts);\n  }\n\n  async delete(key: string): Promise<boolean | void> {\n    return this.cache.delete(key);\n  }\n}\n", "export type { KeyValueCache, KeyValueCacheSetOptions } from \"./KeyValueCache\";\nexport { PrefixingKeyValueCache } from \"./PrefixingKeyValueCache\";\nexport {\n  InMemoryLRUCache,\n  type InMemoryLRUCacheSetOptions,\n} from \"./InMemoryLRUCache\";\nexport { ErrorsAreMissesCache } from \"./ErrorsAreMissesCache\";\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.versionInfo = exports.version = void 0;\n// Note: This file is autogenerated using \"resources/gen-version.js\" script and\n// automatically updated by \"npm version\" command.\n\n/**\n * A string containing the version of the GraphQL.js library\n */\nconst version = '16.12.0';\n/**\n * An object containing the components of the GraphQL.js version string\n */\n\nexports.version = version;\nconst versionInfo = Object.freeze({\n  major: 16,\n  minor: 12,\n  patch: 0,\n  preReleaseTag: null,\n});\nexports.versionInfo = versionInfo;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.devAssert = devAssert;\n\nfunction devAssert(condition, message) {\n  const booleanCondition = Boolean(condition);\n\n  if (!booleanCondition) {\n    throw new Error(message);\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.isPromise = isPromise;\n\n/**\n * Returns true if the value acts like a Promise, i.e. has a \"then\" function,\n * otherwise returns false.\n */\nfunction isPromise(value) {\n  return (\n    typeof (value === null || value === void 0 ? void 0 : value.then) ===\n    'function'\n  );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.isObjectLike = isObjectLike;\n\n/**\n * Return true if `value` is object-like. A value is object-like if it's not\n * `null` and has a `typeof` result of \"object\".\n */\nfunction isObjectLike(value) {\n  return typeof value == 'object' && value !== null;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.invariant = invariant;\n\nfunction invariant(condition, message) {\n  const booleanCondition = Boolean(condition);\n\n  if (!booleanCondition) {\n    throw new Error(\n      message != null ? message : 'Unexpected invariant triggered.',\n    );\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.getLocation = getLocation;\n\nvar _invariant = require('../jsutils/invariant.js');\n\nconst LineRegExp = /\\r\\n|[\\n\\r]/g;\n/**\n * Represents a location in a Source.\n */\n\n/**\n * Takes a Source and a UTF-8 character offset, and returns the corresponding\n * line and column as a SourceLocation.\n */\nfunction getLocation(source, position) {\n  let lastLineStart = 0;\n  let line = 1;\n\n  for (const match of source.body.matchAll(LineRegExp)) {\n    typeof match.index === 'number' || (0, _invariant.invariant)(false);\n\n    if (match.index >= position) {\n      break;\n    }\n\n    lastLineStart = match.index + match[0].length;\n    line += 1;\n  }\n\n  return {\n    line,\n    column: position + 1 - lastLineStart,\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.printLocation = printLocation;\nexports.printSourceLocation = printSourceLocation;\n\nvar _location = require('./location.js');\n\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\nfunction printLocation(location) {\n  return printSourceLocation(\n    location.source,\n    (0, _location.getLocation)(location.source, location.start),\n  );\n}\n/**\n * Render a helpful description of the location in the GraphQL Source document.\n */\n\nfunction printSourceLocation(source, sourceLocation) {\n  const firstLineColumnOffset = source.locationOffset.column - 1;\n  const body = ''.padStart(firstLineColumnOffset) + source.body;\n  const lineIndex = sourceLocation.line - 1;\n  const lineOffset = source.locationOffset.line - 1;\n  const lineNum = sourceLocation.line + lineOffset;\n  const columnOffset = sourceLocation.line === 1 ? firstLineColumnOffset : 0;\n  const columnNum = sourceLocation.column + columnOffset;\n  const locationStr = `${source.name}:${lineNum}:${columnNum}\\n`;\n  const lines = body.split(/\\r\\n|[\\n\\r]/g);\n  const locationLine = lines[lineIndex]; // Special case for minified documents\n\n  if (locationLine.length > 120) {\n    const subLineIndex = Math.floor(columnNum / 80);\n    const subLineColumnNum = columnNum % 80;\n    const subLines = [];\n\n    for (let i = 0; i < locationLine.length; i += 80) {\n      subLines.push(locationLine.slice(i, i + 80));\n    }\n\n    return (\n      locationStr +\n      printPrefixedLines([\n        [`${lineNum} |`, subLines[0]],\n        ...subLines.slice(1, subLineIndex + 1).map((subLine) => ['|', subLine]),\n        ['|', '^'.padStart(subLineColumnNum)],\n        ['|', subLines[subLineIndex + 1]],\n      ])\n    );\n  }\n\n  return (\n    locationStr +\n    printPrefixedLines([\n      // Lines specified like this: [\"prefix\", \"string\"],\n      [`${lineNum - 1} |`, lines[lineIndex - 1]],\n      [`${lineNum} |`, locationLine],\n      ['|', '^'.padStart(columnNum)],\n      [`${lineNum + 1} |`, lines[lineIndex + 1]],\n    ])\n  );\n}\n\nfunction printPrefixedLines(lines) {\n  const existingLines = lines.filter(([_, line]) => line !== undefined);\n  const padLen = Math.max(...existingLines.map(([prefix]) => prefix.length));\n  return existingLines\n    .map(([prefix, line]) => prefix.padStart(padLen) + (line ? ' ' + line : ''))\n    .join('\\n');\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.GraphQLError = void 0;\nexports.formatError = formatError;\nexports.printError = printError;\n\nvar _isObjectLike = require('../jsutils/isObjectLike.js');\n\nvar _location = require('../language/location.js');\n\nvar _printLocation = require('../language/printLocation.js');\n\nfunction toNormalizedOptions(args) {\n  const firstArg = args[0];\n\n  if (firstArg == null || 'kind' in firstArg || 'length' in firstArg) {\n    return {\n      nodes: firstArg,\n      source: args[1],\n      positions: args[2],\n      path: args[3],\n      originalError: args[4],\n      extensions: args[5],\n    };\n  }\n\n  return firstArg;\n}\n/**\n * A GraphQLError describes an Error found during the parse, validate, or\n * execute phases of performing a GraphQL operation. In addition to a message\n * and stack trace, it also includes information about the locations in a\n * GraphQL document and/or execution result that correspond to the Error.\n */\n\nclass GraphQLError extends Error {\n  /**\n   * An array of `{ line, column }` locations within the source GraphQL document\n   * which correspond to this error.\n   *\n   * Errors during validation often contain multiple locations, for example to\n   * point out two things with the same name. Errors during execution include a\n   * single location, the field which produced the error.\n   *\n   * Enumerable, and appears in the result of JSON.stringify().\n   */\n\n  /**\n   * An array describing the JSON-path into the execution response which\n   * corresponds to this error. Only included for errors during execution.\n   *\n   * Enumerable, and appears in the result of JSON.stringify().\n   */\n\n  /**\n   * An array of GraphQL AST Nodes corresponding to this error.\n   */\n\n  /**\n   * The source GraphQL document for the first location of this error.\n   *\n   * Note that if this Error represents more than one node, the source may not\n   * represent nodes after the first node.\n   */\n\n  /**\n   * An array of character offsets within the source GraphQL document\n   * which correspond to this error.\n   */\n\n  /**\n   * The original error thrown from a field resolver during execution.\n   */\n\n  /**\n   * Extension fields to add to the formatted error.\n   */\n\n  /**\n   * @deprecated Please use the `GraphQLErrorOptions` constructor overload instead.\n   */\n  constructor(message, ...rawArgs) {\n    var _this$nodes, _nodeLocations$, _ref;\n\n    const { nodes, source, positions, path, originalError, extensions } =\n      toNormalizedOptions(rawArgs);\n    super(message);\n    this.name = 'GraphQLError';\n    this.path = path !== null && path !== void 0 ? path : undefined;\n    this.originalError =\n      originalError !== null && originalError !== void 0\n        ? originalError\n        : undefined; // Compute list of blame nodes.\n\n    this.nodes = undefinedIfEmpty(\n      Array.isArray(nodes) ? nodes : nodes ? [nodes] : undefined,\n    );\n    const nodeLocations = undefinedIfEmpty(\n      (_this$nodes = this.nodes) === null || _this$nodes === void 0\n        ? void 0\n        : _this$nodes.map((node) => node.loc).filter((loc) => loc != null),\n    ); // Compute locations in the source for the given nodes/positions.\n\n    this.source =\n      source !== null && source !== void 0\n        ? source\n        : nodeLocations === null || nodeLocations === void 0\n        ? void 0\n        : (_nodeLocations$ = nodeLocations[0]) === null ||\n          _nodeLocations$ === void 0\n        ? void 0\n        : _nodeLocations$.source;\n    this.positions =\n      positions !== null && positions !== void 0\n        ? positions\n        : nodeLocations === null || nodeLocations === void 0\n        ? void 0\n        : nodeLocations.map((loc) => loc.start);\n    this.locations =\n      positions && source\n        ? positions.map((pos) => (0, _location.getLocation)(source, pos))\n        : nodeLocations === null || nodeLocations === void 0\n        ? void 0\n        : nodeLocations.map((loc) =>\n            (0, _location.getLocation)(loc.source, loc.start),\n          );\n    const originalExtensions = (0, _isObjectLike.isObjectLike)(\n      originalError === null || originalError === void 0\n        ? void 0\n        : originalError.extensions,\n    )\n      ? originalError === null || originalError === void 0\n        ? void 0\n        : originalError.extensions\n      : undefined;\n    this.extensions =\n      (_ref =\n        extensions !== null && extensions !== void 0\n          ? extensions\n          : originalExtensions) !== null && _ref !== void 0\n        ? _ref\n        : Object.create(null); // Only properties prescribed by the spec should be enumerable.\n    // Keep the rest as non-enumerable.\n\n    Object.defineProperties(this, {\n      message: {\n        writable: true,\n        enumerable: true,\n      },\n      name: {\n        enumerable: false,\n      },\n      nodes: {\n        enumerable: false,\n      },\n      source: {\n        enumerable: false,\n      },\n      positions: {\n        enumerable: false,\n      },\n      originalError: {\n        enumerable: false,\n      },\n    }); // Include (non-enumerable) stack trace.\n\n    /* c8 ignore start */\n    // FIXME: https://github.com/graphql/graphql-js/issues/2317\n\n    if (\n      originalError !== null &&\n      originalError !== void 0 &&\n      originalError.stack\n    ) {\n      Object.defineProperty(this, 'stack', {\n        value: originalError.stack,\n        writable: true,\n        configurable: true,\n      });\n    } else if (Error.captureStackTrace) {\n      Error.captureStackTrace(this, GraphQLError);\n    } else {\n      Object.defineProperty(this, 'stack', {\n        value: Error().stack,\n        writable: true,\n        configurable: true,\n      });\n    }\n    /* c8 ignore stop */\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'GraphQLError';\n  }\n\n  toString() {\n    let output = this.message;\n\n    if (this.nodes) {\n      for (const node of this.nodes) {\n        if (node.loc) {\n          output += '\\n\\n' + (0, _printLocation.printLocation)(node.loc);\n        }\n      }\n    } else if (this.source && this.locations) {\n      for (const location of this.locations) {\n        output +=\n          '\\n\\n' +\n          (0, _printLocation.printSourceLocation)(this.source, location);\n      }\n    }\n\n    return output;\n  }\n\n  toJSON() {\n    const formattedError = {\n      message: this.message,\n    };\n\n    if (this.locations != null) {\n      formattedError.locations = this.locations;\n    }\n\n    if (this.path != null) {\n      formattedError.path = this.path;\n    }\n\n    if (this.extensions != null && Object.keys(this.extensions).length > 0) {\n      formattedError.extensions = this.extensions;\n    }\n\n    return formattedError;\n  }\n}\n\nexports.GraphQLError = GraphQLError;\n\nfunction undefinedIfEmpty(array) {\n  return array === undefined || array.length === 0 ? undefined : array;\n}\n/**\n * See: https://spec.graphql.org/draft/#sec-Errors\n */\n\n/**\n * Prints a GraphQLError to a string, representing useful location information\n * about the error's position in the source.\n *\n * @deprecated Please use `error.toString` instead. Will be removed in v17\n */\nfunction printError(error) {\n  return error.toString();\n}\n/**\n * Given a GraphQLError, format it according to the rules described by the\n * Response Format, Errors section of the GraphQL Specification.\n *\n * @deprecated Please use `error.toJSON` instead. Will be removed in v17\n */\n\nfunction formatError(error) {\n  return error.toJSON();\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.syntaxError = syntaxError;\n\nvar _GraphQLError = require('./GraphQLError.js');\n\n/**\n * Produces a GraphQLError representing a syntax error, containing useful\n * descriptive information about the syntax error's position in the source.\n */\nfunction syntaxError(source, position, description) {\n  return new _GraphQLError.GraphQLError(`Syntax Error: ${description}`, {\n    source,\n    positions: [position],\n  });\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.Token =\n  exports.QueryDocumentKeys =\n  exports.OperationTypeNode =\n  exports.Location =\n    void 0;\nexports.isNode = isNode;\n\n/**\n * Contains a range of UTF-8 character offsets and token references that\n * identify the region of the source from which the AST derived.\n */\nclass Location {\n  /**\n   * The character offset at which this Node begins.\n   */\n\n  /**\n   * The character offset at which this Node ends.\n   */\n\n  /**\n   * The Token at which this Node begins.\n   */\n\n  /**\n   * The Token at which this Node ends.\n   */\n\n  /**\n   * The Source document the AST represents.\n   */\n  constructor(startToken, endToken, source) {\n    this.start = startToken.start;\n    this.end = endToken.end;\n    this.startToken = startToken;\n    this.endToken = endToken;\n    this.source = source;\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'Location';\n  }\n\n  toJSON() {\n    return {\n      start: this.start,\n      end: this.end,\n    };\n  }\n}\n/**\n * Represents a range of characters represented by a lexical token\n * within a Source.\n */\n\nexports.Location = Location;\n\nclass Token {\n  /**\n   * The kind of Token.\n   */\n\n  /**\n   * The character offset at which this Node begins.\n   */\n\n  /**\n   * The character offset at which this Node ends.\n   */\n\n  /**\n   * The 1-indexed line number on which this Token appears.\n   */\n\n  /**\n   * The 1-indexed column number at which this Token begins.\n   */\n\n  /**\n   * For non-punctuation tokens, represents the interpreted value of the token.\n   *\n   * Note: is undefined for punctuation tokens, but typed as string for\n   * convenience in the parser.\n   */\n\n  /**\n   * Tokens exist as nodes in a double-linked-list amongst all tokens\n   * including ignored tokens. <SOF> is always the first node and <EOF>\n   * the last.\n   */\n  constructor(kind, start, end, line, column, value) {\n    this.kind = kind;\n    this.start = start;\n    this.end = end;\n    this.line = line;\n    this.column = column; // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\n    this.value = value;\n    this.prev = null;\n    this.next = null;\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'Token';\n  }\n\n  toJSON() {\n    return {\n      kind: this.kind,\n      value: this.value,\n      line: this.line,\n      column: this.column,\n    };\n  }\n}\n/**\n * The list of all possible AST node types.\n */\n\nexports.Token = Token;\n\n/**\n * @internal\n */\nconst QueryDocumentKeys = {\n  Name: [],\n  Document: ['definitions'],\n  OperationDefinition: [\n    'description',\n    'name',\n    'variableDefinitions',\n    'directives',\n    'selectionSet',\n  ],\n  VariableDefinition: [\n    'description',\n    'variable',\n    'type',\n    'defaultValue',\n    'directives',\n  ],\n  Variable: ['name'],\n  SelectionSet: ['selections'],\n  Field: ['alias', 'name', 'arguments', 'directives', 'selectionSet'],\n  Argument: ['name', 'value'],\n  FragmentSpread: ['name', 'directives'],\n  InlineFragment: ['typeCondition', 'directives', 'selectionSet'],\n  FragmentDefinition: [\n    'description',\n    'name', // Note: fragment variable definitions are deprecated and will removed in v17.0.0\n    'variableDefinitions',\n    'typeCondition',\n    'directives',\n    'selectionSet',\n  ],\n  IntValue: [],\n  FloatValue: [],\n  StringValue: [],\n  BooleanValue: [],\n  NullValue: [],\n  EnumValue: [],\n  ListValue: ['values'],\n  ObjectValue: ['fields'],\n  ObjectField: ['name', 'value'],\n  Directive: ['name', 'arguments'],\n  NamedType: ['name'],\n  ListType: ['type'],\n  NonNullType: ['type'],\n  SchemaDefinition: ['description', 'directives', 'operationTypes'],\n  OperationTypeDefinition: ['type'],\n  ScalarTypeDefinition: ['description', 'name', 'directives'],\n  ObjectTypeDefinition: [\n    'description',\n    'name',\n    'interfaces',\n    'directives',\n    'fields',\n  ],\n  FieldDefinition: ['description', 'name', 'arguments', 'type', 'directives'],\n  InputValueDefinition: [\n    'description',\n    'name',\n    'type',\n    'defaultValue',\n    'directives',\n  ],\n  InterfaceTypeDefinition: [\n    'description',\n    'name',\n    'interfaces',\n    'directives',\n    'fields',\n  ],\n  UnionTypeDefinition: ['description', 'name', 'directives', 'types'],\n  EnumTypeDefinition: ['description', 'name', 'directives', 'values'],\n  EnumValueDefinition: ['description', 'name', 'directives'],\n  InputObjectTypeDefinition: ['description', 'name', 'directives', 'fields'],\n  DirectiveDefinition: ['description', 'name', 'arguments', 'locations'],\n  SchemaExtension: ['directives', 'operationTypes'],\n  ScalarTypeExtension: ['name', 'directives'],\n  ObjectTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n  InterfaceTypeExtension: ['name', 'interfaces', 'directives', 'fields'],\n  UnionTypeExtension: ['name', 'directives', 'types'],\n  EnumTypeExtension: ['name', 'directives', 'values'],\n  InputObjectTypeExtension: ['name', 'directives', 'fields'],\n  TypeCoordinate: ['name'],\n  MemberCoordinate: ['name', 'memberName'],\n  ArgumentCoordinate: ['name', 'fieldName', 'argumentName'],\n  DirectiveCoordinate: ['name'],\n  DirectiveArgumentCoordinate: ['name', 'argumentName'],\n};\nexports.QueryDocumentKeys = QueryDocumentKeys;\nconst kindValues = new Set(Object.keys(QueryDocumentKeys));\n/**\n * @internal\n */\n\nfunction isNode(maybeNode) {\n  const maybeKind =\n    maybeNode === null || maybeNode === void 0 ? void 0 : maybeNode.kind;\n  return typeof maybeKind === 'string' && kindValues.has(maybeKind);\n}\n/** Name */\n\nvar OperationTypeNode;\nexports.OperationTypeNode = OperationTypeNode;\n\n(function (OperationTypeNode) {\n  OperationTypeNode['QUERY'] = 'query';\n  OperationTypeNode['MUTATION'] = 'mutation';\n  OperationTypeNode['SUBSCRIPTION'] = 'subscription';\n})(OperationTypeNode || (exports.OperationTypeNode = OperationTypeNode = {}));\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.DirectiveLocation = void 0;\n\n/**\n * The set of allowed directive location values.\n */\nvar DirectiveLocation;\nexports.DirectiveLocation = DirectiveLocation;\n\n(function (DirectiveLocation) {\n  DirectiveLocation['QUERY'] = 'QUERY';\n  DirectiveLocation['MUTATION'] = 'MUTATION';\n  DirectiveLocation['SUBSCRIPTION'] = 'SUBSCRIPTION';\n  DirectiveLocation['FIELD'] = 'FIELD';\n  DirectiveLocation['FRAGMENT_DEFINITION'] = 'FRAGMENT_DEFINITION';\n  DirectiveLocation['FRAGMENT_SPREAD'] = 'FRAGMENT_SPREAD';\n  DirectiveLocation['INLINE_FRAGMENT'] = 'INLINE_FRAGMENT';\n  DirectiveLocation['VARIABLE_DEFINITION'] = 'VARIABLE_DEFINITION';\n  DirectiveLocation['SCHEMA'] = 'SCHEMA';\n  DirectiveLocation['SCALAR'] = 'SCALAR';\n  DirectiveLocation['OBJECT'] = 'OBJECT';\n  DirectiveLocation['FIELD_DEFINITION'] = 'FIELD_DEFINITION';\n  DirectiveLocation['ARGUMENT_DEFINITION'] = 'ARGUMENT_DEFINITION';\n  DirectiveLocation['INTERFACE'] = 'INTERFACE';\n  DirectiveLocation['UNION'] = 'UNION';\n  DirectiveLocation['ENUM'] = 'ENUM';\n  DirectiveLocation['ENUM_VALUE'] = 'ENUM_VALUE';\n  DirectiveLocation['INPUT_OBJECT'] = 'INPUT_OBJECT';\n  DirectiveLocation['INPUT_FIELD_DEFINITION'] = 'INPUT_FIELD_DEFINITION';\n})(DirectiveLocation || (exports.DirectiveLocation = DirectiveLocation = {}));\n/**\n * The enum type representing the directive location values.\n *\n * @deprecated Please use `DirectiveLocation`. Will be remove in v17.\n */\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.Kind = void 0;\n\n/**\n * The set of allowed kind values for AST nodes.\n */\nvar Kind;\nexports.Kind = Kind;\n\n(function (Kind) {\n  Kind['NAME'] = 'Name';\n  Kind['DOCUMENT'] = 'Document';\n  Kind['OPERATION_DEFINITION'] = 'OperationDefinition';\n  Kind['VARIABLE_DEFINITION'] = 'VariableDefinition';\n  Kind['SELECTION_SET'] = 'SelectionSet';\n  Kind['FIELD'] = 'Field';\n  Kind['ARGUMENT'] = 'Argument';\n  Kind['FRAGMENT_SPREAD'] = 'FragmentSpread';\n  Kind['INLINE_FRAGMENT'] = 'InlineFragment';\n  Kind['FRAGMENT_DEFINITION'] = 'FragmentDefinition';\n  Kind['VARIABLE'] = 'Variable';\n  Kind['INT'] = 'IntValue';\n  Kind['FLOAT'] = 'FloatValue';\n  Kind['STRING'] = 'StringValue';\n  Kind['BOOLEAN'] = 'BooleanValue';\n  Kind['NULL'] = 'NullValue';\n  Kind['ENUM'] = 'EnumValue';\n  Kind['LIST'] = 'ListValue';\n  Kind['OBJECT'] = 'ObjectValue';\n  Kind['OBJECT_FIELD'] = 'ObjectField';\n  Kind['DIRECTIVE'] = 'Directive';\n  Kind['NAMED_TYPE'] = 'NamedType';\n  Kind['LIST_TYPE'] = 'ListType';\n  Kind['NON_NULL_TYPE'] = 'NonNullType';\n  Kind['SCHEMA_DEFINITION'] = 'SchemaDefinition';\n  Kind['OPERATION_TYPE_DEFINITION'] = 'OperationTypeDefinition';\n  Kind['SCALAR_TYPE_DEFINITION'] = 'ScalarTypeDefinition';\n  Kind['OBJECT_TYPE_DEFINITION'] = 'ObjectTypeDefinition';\n  Kind['FIELD_DEFINITION'] = 'FieldDefinition';\n  Kind['INPUT_VALUE_DEFINITION'] = 'InputValueDefinition';\n  Kind['INTERFACE_TYPE_DEFINITION'] = 'InterfaceTypeDefinition';\n  Kind['UNION_TYPE_DEFINITION'] = 'UnionTypeDefinition';\n  Kind['ENUM_TYPE_DEFINITION'] = 'EnumTypeDefinition';\n  Kind['ENUM_VALUE_DEFINITION'] = 'EnumValueDefinition';\n  Kind['INPUT_OBJECT_TYPE_DEFINITION'] = 'InputObjectTypeDefinition';\n  Kind['DIRECTIVE_DEFINITION'] = 'DirectiveDefinition';\n  Kind['SCHEMA_EXTENSION'] = 'SchemaExtension';\n  Kind['SCALAR_TYPE_EXTENSION'] = 'ScalarTypeExtension';\n  Kind['OBJECT_TYPE_EXTENSION'] = 'ObjectTypeExtension';\n  Kind['INTERFACE_TYPE_EXTENSION'] = 'InterfaceTypeExtension';\n  Kind['UNION_TYPE_EXTENSION'] = 'UnionTypeExtension';\n  Kind['ENUM_TYPE_EXTENSION'] = 'EnumTypeExtension';\n  Kind['INPUT_OBJECT_TYPE_EXTENSION'] = 'InputObjectTypeExtension';\n  Kind['TYPE_COORDINATE'] = 'TypeCoordinate';\n  Kind['MEMBER_COORDINATE'] = 'MemberCoordinate';\n  Kind['ARGUMENT_COORDINATE'] = 'ArgumentCoordinate';\n  Kind['DIRECTIVE_COORDINATE'] = 'DirectiveCoordinate';\n  Kind['DIRECTIVE_ARGUMENT_COORDINATE'] = 'DirectiveArgumentCoordinate';\n})(Kind || (exports.Kind = Kind = {}));\n/**\n * The enum type representing the possible kind values of AST nodes.\n *\n * @deprecated Please use `Kind`. Will be remove in v17.\n */\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.isDigit = isDigit;\nexports.isLetter = isLetter;\nexports.isNameContinue = isNameContinue;\nexports.isNameStart = isNameStart;\nexports.isWhiteSpace = isWhiteSpace;\n\n/**\n * ```\n * WhiteSpace ::\n *   - \"Horizontal Tab (U+0009)\"\n *   - \"Space (U+0020)\"\n * ```\n * @internal\n */\nfunction isWhiteSpace(code) {\n  return code === 0x0009 || code === 0x0020;\n}\n/**\n * ```\n * Digit :: one of\n *   - `0` `1` `2` `3` `4` `5` `6` `7` `8` `9`\n * ```\n * @internal\n */\n\nfunction isDigit(code) {\n  return code >= 0x0030 && code <= 0x0039;\n}\n/**\n * ```\n * Letter :: one of\n *   - `A` `B` `C` `D` `E` `F` `G` `H` `I` `J` `K` `L` `M`\n *   - `N` `O` `P` `Q` `R` `S` `T` `U` `V` `W` `X` `Y` `Z`\n *   - `a` `b` `c` `d` `e` `f` `g` `h` `i` `j` `k` `l` `m`\n *   - `n` `o` `p` `q` `r` `s` `t` `u` `v` `w` `x` `y` `z`\n * ```\n * @internal\n */\n\nfunction isLetter(code) {\n  return (\n    (code >= 0x0061 && code <= 0x007a) || // A-Z\n    (code >= 0x0041 && code <= 0x005a) // a-z\n  );\n}\n/**\n * ```\n * NameStart ::\n *   - Letter\n *   - `_`\n * ```\n * @internal\n */\n\nfunction isNameStart(code) {\n  return isLetter(code) || code === 0x005f;\n}\n/**\n * ```\n * NameContinue ::\n *   - Letter\n *   - Digit\n *   - `_`\n * ```\n * @internal\n */\n\nfunction isNameContinue(code) {\n  return isLetter(code) || isDigit(code) || code === 0x005f;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.dedentBlockStringLines = dedentBlockStringLines;\nexports.isPrintableAsBlockString = isPrintableAsBlockString;\nexports.printBlockString = printBlockString;\n\nvar _characterClasses = require('./characterClasses.js');\n\n/**\n * Produces the value of a block string from its parsed raw value, similar to\n * CoffeeScript's block string, Python's docstring trim or Ruby's strip_heredoc.\n *\n * This implements the GraphQL spec's BlockStringValue() static algorithm.\n *\n * @internal\n */\nfunction dedentBlockStringLines(lines) {\n  var _firstNonEmptyLine2;\n\n  let commonIndent = Number.MAX_SAFE_INTEGER;\n  let firstNonEmptyLine = null;\n  let lastNonEmptyLine = -1;\n\n  for (let i = 0; i < lines.length; ++i) {\n    var _firstNonEmptyLine;\n\n    const line = lines[i];\n    const indent = leadingWhitespace(line);\n\n    if (indent === line.length) {\n      continue; // skip empty lines\n    }\n\n    firstNonEmptyLine =\n      (_firstNonEmptyLine = firstNonEmptyLine) !== null &&\n      _firstNonEmptyLine !== void 0\n        ? _firstNonEmptyLine\n        : i;\n    lastNonEmptyLine = i;\n\n    if (i !== 0 && indent < commonIndent) {\n      commonIndent = indent;\n    }\n  }\n\n  return lines // Remove common indentation from all lines but first.\n    .map((line, i) => (i === 0 ? line : line.slice(commonIndent))) // Remove leading and trailing blank lines.\n    .slice(\n      (_firstNonEmptyLine2 = firstNonEmptyLine) !== null &&\n        _firstNonEmptyLine2 !== void 0\n        ? _firstNonEmptyLine2\n        : 0,\n      lastNonEmptyLine + 1,\n    );\n}\n\nfunction leadingWhitespace(str) {\n  let i = 0;\n\n  while (\n    i < str.length &&\n    (0, _characterClasses.isWhiteSpace)(str.charCodeAt(i))\n  ) {\n    ++i;\n  }\n\n  return i;\n}\n/**\n * @internal\n */\n\nfunction isPrintableAsBlockString(value) {\n  if (value === '') {\n    return true; // empty string is printable\n  }\n\n  let isEmptyLine = true;\n  let hasIndent = false;\n  let hasCommonIndent = true;\n  let seenNonEmptyLine = false;\n\n  for (let i = 0; i < value.length; ++i) {\n    switch (value.codePointAt(i)) {\n      case 0x0000:\n      case 0x0001:\n      case 0x0002:\n      case 0x0003:\n      case 0x0004:\n      case 0x0005:\n      case 0x0006:\n      case 0x0007:\n      case 0x0008:\n      case 0x000b:\n      case 0x000c:\n      case 0x000e:\n      case 0x000f:\n        return false;\n      // Has non-printable characters\n\n      case 0x000d:\n        //  \\r\n        return false;\n      // Has \\r or \\r\\n which will be replaced as \\n\n\n      case 10:\n        //  \\n\n        if (isEmptyLine && !seenNonEmptyLine) {\n          return false; // Has leading new line\n        }\n\n        seenNonEmptyLine = true;\n        isEmptyLine = true;\n        hasIndent = false;\n        break;\n\n      case 9: //   \\t\n\n      case 32:\n        //  <space>\n        hasIndent || (hasIndent = isEmptyLine);\n        break;\n\n      default:\n        hasCommonIndent && (hasCommonIndent = hasIndent);\n        isEmptyLine = false;\n    }\n  }\n\n  if (isEmptyLine) {\n    return false; // Has trailing empty lines\n  }\n\n  if (hasCommonIndent && seenNonEmptyLine) {\n    return false; // Has internal indent\n  }\n\n  return true;\n}\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n *\n * @internal\n */\n\nfunction printBlockString(value, options) {\n  const escapedValue = value.replace(/\"\"\"/g, '\\\\\"\"\"'); // Expand a block string's raw value into independent lines.\n\n  const lines = escapedValue.split(/\\r\\n|[\\n\\r]/g);\n  const isSingleLine = lines.length === 1; // If common indentation is found we can fix some of those cases by adding leading new line\n\n  const forceLeadingNewLine =\n    lines.length > 1 &&\n    lines\n      .slice(1)\n      .every(\n        (line) =>\n          line.length === 0 ||\n          (0, _characterClasses.isWhiteSpace)(line.charCodeAt(0)),\n      ); // Trailing triple quotes just looks confusing but doesn't force trailing new line\n\n  const hasTrailingTripleQuotes = escapedValue.endsWith('\\\\\"\"\"'); // Trailing quote (single or double) or slash forces trailing new line\n\n  const hasTrailingQuote = value.endsWith('\"') && !hasTrailingTripleQuotes;\n  const hasTrailingSlash = value.endsWith('\\\\');\n  const forceTrailingNewline = hasTrailingQuote || hasTrailingSlash;\n  const printAsMultipleLines =\n    !(options !== null && options !== void 0 && options.minimize) && // add leading and trailing new lines only if it improves readability\n    (!isSingleLine ||\n      value.length > 70 ||\n      forceTrailingNewline ||\n      forceLeadingNewLine ||\n      hasTrailingTripleQuotes);\n  let result = ''; // Format a multi-line block quote to account for leading space.\n\n  const skipLeadingNewLine =\n    isSingleLine && (0, _characterClasses.isWhiteSpace)(value.charCodeAt(0));\n\n  if ((printAsMultipleLines && !skipLeadingNewLine) || forceLeadingNewLine) {\n    result += '\\n';\n  }\n\n  result += escapedValue;\n\n  if (printAsMultipleLines || forceTrailingNewline) {\n    result += '\\n';\n  }\n\n  return '\"\"\"' + result + '\"\"\"';\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.TokenKind = void 0;\n\n/**\n * An exported enum describing the different kinds of tokens that the\n * lexer emits.\n */\nvar TokenKind;\nexports.TokenKind = TokenKind;\n\n(function (TokenKind) {\n  TokenKind['SOF'] = '<SOF>';\n  TokenKind['EOF'] = '<EOF>';\n  TokenKind['BANG'] = '!';\n  TokenKind['DOLLAR'] = '$';\n  TokenKind['AMP'] = '&';\n  TokenKind['PAREN_L'] = '(';\n  TokenKind['PAREN_R'] = ')';\n  TokenKind['DOT'] = '.';\n  TokenKind['SPREAD'] = '...';\n  TokenKind['COLON'] = ':';\n  TokenKind['EQUALS'] = '=';\n  TokenKind['AT'] = '@';\n  TokenKind['BRACKET_L'] = '[';\n  TokenKind['BRACKET_R'] = ']';\n  TokenKind['BRACE_L'] = '{';\n  TokenKind['PIPE'] = '|';\n  TokenKind['BRACE_R'] = '}';\n  TokenKind['NAME'] = 'Name';\n  TokenKind['INT'] = 'Int';\n  TokenKind['FLOAT'] = 'Float';\n  TokenKind['STRING'] = 'String';\n  TokenKind['BLOCK_STRING'] = 'BlockString';\n  TokenKind['COMMENT'] = 'Comment';\n})(TokenKind || (exports.TokenKind = TokenKind = {}));\n/**\n * The enum type representing the token kinds values.\n *\n * @deprecated Please use `TokenKind`. Will be remove in v17.\n */\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.Lexer = void 0;\nexports.createToken = createToken;\nexports.isPunctuatorTokenKind = isPunctuatorTokenKind;\nexports.printCodePointAt = printCodePointAt;\nexports.readName = readName;\n\nvar _syntaxError = require('../error/syntaxError.js');\n\nvar _ast = require('./ast.js');\n\nvar _blockString = require('./blockString.js');\n\nvar _characterClasses = require('./characterClasses.js');\n\nvar _tokenKind = require('./tokenKind.js');\n\n/**\n * Given a Source object, creates a Lexer for that source.\n * A Lexer is a stateful stream generator in that every time\n * it is advanced, it returns the next token in the Source. Assuming the\n * source lexes, the final Token emitted by the lexer will be of kind\n * EOF, after which the lexer will repeatedly return the same EOF token\n * whenever called.\n */\nclass Lexer {\n  /**\n   * The previously focused non-ignored token.\n   */\n\n  /**\n   * The currently focused non-ignored token.\n   */\n\n  /**\n   * The (1-indexed) line containing the current token.\n   */\n\n  /**\n   * The character offset at which the current line begins.\n   */\n  constructor(source) {\n    const startOfFileToken = new _ast.Token(\n      _tokenKind.TokenKind.SOF,\n      0,\n      0,\n      0,\n      0,\n    );\n    this.source = source;\n    this.lastToken = startOfFileToken;\n    this.token = startOfFileToken;\n    this.line = 1;\n    this.lineStart = 0;\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'Lexer';\n  }\n  /**\n   * Advances the token stream to the next non-ignored token.\n   */\n\n  advance() {\n    this.lastToken = this.token;\n    const token = (this.token = this.lookahead());\n    return token;\n  }\n  /**\n   * Looks ahead and returns the next non-ignored token, but does not change\n   * the state of Lexer.\n   */\n\n  lookahead() {\n    let token = this.token;\n\n    if (token.kind !== _tokenKind.TokenKind.EOF) {\n      do {\n        if (token.next) {\n          token = token.next;\n        } else {\n          // Read the next token and form a link in the token linked-list.\n          const nextToken = readNextToken(this, token.end); // @ts-expect-error next is only mutable during parsing.\n\n          token.next = nextToken; // @ts-expect-error prev is only mutable during parsing.\n\n          nextToken.prev = token;\n          token = nextToken;\n        }\n      } while (token.kind === _tokenKind.TokenKind.COMMENT);\n    }\n\n    return token;\n  }\n}\n/**\n * @internal\n */\n\nexports.Lexer = Lexer;\n\nfunction isPunctuatorTokenKind(kind) {\n  return (\n    kind === _tokenKind.TokenKind.BANG ||\n    kind === _tokenKind.TokenKind.DOLLAR ||\n    kind === _tokenKind.TokenKind.AMP ||\n    kind === _tokenKind.TokenKind.PAREN_L ||\n    kind === _tokenKind.TokenKind.PAREN_R ||\n    kind === _tokenKind.TokenKind.DOT ||\n    kind === _tokenKind.TokenKind.SPREAD ||\n    kind === _tokenKind.TokenKind.COLON ||\n    kind === _tokenKind.TokenKind.EQUALS ||\n    kind === _tokenKind.TokenKind.AT ||\n    kind === _tokenKind.TokenKind.BRACKET_L ||\n    kind === _tokenKind.TokenKind.BRACKET_R ||\n    kind === _tokenKind.TokenKind.BRACE_L ||\n    kind === _tokenKind.TokenKind.PIPE ||\n    kind === _tokenKind.TokenKind.BRACE_R\n  );\n}\n/**\n * A Unicode scalar value is any Unicode code point except surrogate code\n * points. In other words, the inclusive ranges of values 0x0000 to 0xD7FF and\n * 0xE000 to 0x10FFFF.\n *\n * SourceCharacter ::\n *   - \"Any Unicode scalar value\"\n */\n\nfunction isUnicodeScalarValue(code) {\n  return (\n    (code >= 0x0000 && code <= 0xd7ff) || (code >= 0xe000 && code <= 0x10ffff)\n  );\n}\n/**\n * The GraphQL specification defines source text as a sequence of unicode scalar\n * values (which Unicode defines to exclude surrogate code points). However\n * JavaScript defines strings as a sequence of UTF-16 code units which may\n * include surrogates. A surrogate pair is a valid source character as it\n * encodes a supplementary code point (above U+FFFF), but unpaired surrogate\n * code points are not valid source characters.\n */\n\nfunction isSupplementaryCodePoint(body, location) {\n  return (\n    isLeadingSurrogate(body.charCodeAt(location)) &&\n    isTrailingSurrogate(body.charCodeAt(location + 1))\n  );\n}\n\nfunction isLeadingSurrogate(code) {\n  return code >= 0xd800 && code <= 0xdbff;\n}\n\nfunction isTrailingSurrogate(code) {\n  return code >= 0xdc00 && code <= 0xdfff;\n}\n/**\n * Prints the code point (or end of file reference) at a given location in a\n * source for use in error messages.\n *\n * Printable ASCII is printed quoted, while other points are printed in Unicode\n * code point form (ie. U+1234).\n *\n * @internal\n */\n\nfunction printCodePointAt(lexer, location) {\n  const code = lexer.source.body.codePointAt(location);\n\n  if (code === undefined) {\n    return _tokenKind.TokenKind.EOF;\n  } else if (code >= 0x0020 && code <= 0x007e) {\n    // Printable ASCII\n    const char = String.fromCodePoint(code);\n    return char === '\"' ? \"'\\\"'\" : `\"${char}\"`;\n  } // Unicode code point\n\n  return 'U+' + code.toString(16).toUpperCase().padStart(4, '0');\n}\n/**\n * Create a token with line and column location information.\n *\n * @internal\n */\n\nfunction createToken(lexer, kind, start, end, value) {\n  const line = lexer.line;\n  const col = 1 + start - lexer.lineStart;\n  return new _ast.Token(kind, start, end, line, col, value);\n}\n/**\n * Gets the next token from the source starting at the given position.\n *\n * This skips over whitespace until it finds the next lexable token, then lexes\n * punctuators immediately or calls the appropriate helper function for more\n * complicated tokens.\n */\n\nfunction readNextToken(lexer, start) {\n  const body = lexer.source.body;\n  const bodyLength = body.length;\n  let position = start;\n\n  while (position < bodyLength) {\n    const code = body.charCodeAt(position); // SourceCharacter\n\n    switch (code) {\n      // Ignored ::\n      //   - UnicodeBOM\n      //   - WhiteSpace\n      //   - LineTerminator\n      //   - Comment\n      //   - Comma\n      //\n      // UnicodeBOM :: \"Byte Order Mark (U+FEFF)\"\n      //\n      // WhiteSpace ::\n      //   - \"Horizontal Tab (U+0009)\"\n      //   - \"Space (U+0020)\"\n      //\n      // Comma :: ,\n      case 0xfeff: // <BOM>\n\n      case 0x0009: // \\t\n\n      case 0x0020: // <space>\n\n      case 0x002c:\n        // ,\n        ++position;\n        continue;\n      // LineTerminator ::\n      //   - \"New Line (U+000A)\"\n      //   - \"Carriage Return (U+000D)\" [lookahead != \"New Line (U+000A)\"]\n      //   - \"Carriage Return (U+000D)\" \"New Line (U+000A)\"\n\n      case 0x000a:\n        // \\n\n        ++position;\n        ++lexer.line;\n        lexer.lineStart = position;\n        continue;\n\n      case 0x000d:\n        // \\r\n        if (body.charCodeAt(position + 1) === 0x000a) {\n          position += 2;\n        } else {\n          ++position;\n        }\n\n        ++lexer.line;\n        lexer.lineStart = position;\n        continue;\n      // Comment\n\n      case 0x0023:\n        // #\n        return readComment(lexer, position);\n      // Token ::\n      //   - Punctuator\n      //   - Name\n      //   - IntValue\n      //   - FloatValue\n      //   - StringValue\n      //\n      // Punctuator :: one of ! $ & ( ) ... : = @ [ ] { | }\n\n      case 0x0021:\n        // !\n        return createToken(\n          lexer,\n          _tokenKind.TokenKind.BANG,\n          position,\n          position + 1,\n        );\n\n      case 0x0024:\n        // $\n        return createToken(\n          lexer,\n          _tokenKind.TokenKind.DOLLAR,\n          position,\n          position + 1,\n        );\n\n      case 0x0026:\n        // &\n        return createToken(\n          lexer,\n          _tokenKind.TokenKind.AMP,\n          position,\n          position + 1,\n        );\n\n      case 0x0028:\n        // (\n        return createToken(\n          lexer,\n          _tokenKind.TokenKind.PAREN_L,\n          position,\n          position + 1,\n        );\n\n      case 0x0029:\n        // )\n        return createToken(\n          lexer,\n          _tokenKind.TokenKind.PAREN_R,\n          position,\n          position + 1,\n        );\n\n      case 0x002e:\n        // .\n        if (\n          body.charCodeAt(position + 1) === 0x002e &&\n          body.charCodeAt(position + 2) === 0x002e\n        ) {\n          return createToken(\n            lexer,\n            _tokenKind.TokenKind.SPREAD,\n            position,\n            position + 3,\n          );\n        }\n\n        break;\n\n      case 0x003a:\n        // :\n        return createToken(\n          lexer,\n          _tokenKind.TokenKind.COLON,\n          position,\n          position + 1,\n        );\n\n      case 0x003d:\n        // =\n        return createToken(\n          lexer,\n          _tokenKind.TokenKind.EQUALS,\n          position,\n          position + 1,\n        );\n\n      case 0x0040:\n        // @\n        return createToken(\n          lexer,\n          _tokenKind.TokenKind.AT,\n          position,\n          position + 1,\n        );\n\n      case 0x005b:\n        // [\n        return createToken(\n          lexer,\n          _tokenKind.TokenKind.BRACKET_L,\n          position,\n          position + 1,\n        );\n\n      case 0x005d:\n        // ]\n        return createToken(\n          lexer,\n          _tokenKind.TokenKind.BRACKET_R,\n          position,\n          position + 1,\n        );\n\n      case 0x007b:\n        // {\n        return createToken(\n          lexer,\n          _tokenKind.TokenKind.BRACE_L,\n          position,\n          position + 1,\n        );\n\n      case 0x007c:\n        // |\n        return createToken(\n          lexer,\n          _tokenKind.TokenKind.PIPE,\n          position,\n          position + 1,\n        );\n\n      case 0x007d:\n        // }\n        return createToken(\n          lexer,\n          _tokenKind.TokenKind.BRACE_R,\n          position,\n          position + 1,\n        );\n      // StringValue\n\n      case 0x0022:\n        // \"\n        if (\n          body.charCodeAt(position + 1) === 0x0022 &&\n          body.charCodeAt(position + 2) === 0x0022\n        ) {\n          return readBlockString(lexer, position);\n        }\n\n        return readString(lexer, position);\n    } // IntValue | FloatValue (Digit | -)\n\n    if ((0, _characterClasses.isDigit)(code) || code === 0x002d) {\n      return readNumber(lexer, position, code);\n    } // Name\n\n    if ((0, _characterClasses.isNameStart)(code)) {\n      return readName(lexer, position);\n    }\n\n    throw (0, _syntaxError.syntaxError)(\n      lexer.source,\n      position,\n      code === 0x0027\n        ? 'Unexpected single quote character (\\'), did you mean to use a double quote (\")?'\n        : isUnicodeScalarValue(code) || isSupplementaryCodePoint(body, position)\n        ? `Unexpected character: ${printCodePointAt(lexer, position)}.`\n        : `Invalid character: ${printCodePointAt(lexer, position)}.`,\n    );\n  }\n\n  return createToken(lexer, _tokenKind.TokenKind.EOF, bodyLength, bodyLength);\n}\n/**\n * Reads a comment token from the source file.\n *\n * ```\n * Comment :: # CommentChar* [lookahead != CommentChar]\n *\n * CommentChar :: SourceCharacter but not LineTerminator\n * ```\n */\n\nfunction readComment(lexer, start) {\n  const body = lexer.source.body;\n  const bodyLength = body.length;\n  let position = start + 1;\n\n  while (position < bodyLength) {\n    const code = body.charCodeAt(position); // LineTerminator (\\n | \\r)\n\n    if (code === 0x000a || code === 0x000d) {\n      break;\n    } // SourceCharacter\n\n    if (isUnicodeScalarValue(code)) {\n      ++position;\n    } else if (isSupplementaryCodePoint(body, position)) {\n      position += 2;\n    } else {\n      break;\n    }\n  }\n\n  return createToken(\n    lexer,\n    _tokenKind.TokenKind.COMMENT,\n    start,\n    position,\n    body.slice(start + 1, position),\n  );\n}\n/**\n * Reads a number token from the source file, either a FloatValue or an IntValue\n * depending on whether a FractionalPart or ExponentPart is encountered.\n *\n * ```\n * IntValue :: IntegerPart [lookahead != {Digit, `.`, NameStart}]\n *\n * IntegerPart ::\n *   - NegativeSign? 0\n *   - NegativeSign? NonZeroDigit Digit*\n *\n * NegativeSign :: -\n *\n * NonZeroDigit :: Digit but not `0`\n *\n * FloatValue ::\n *   - IntegerPart FractionalPart ExponentPart [lookahead != {Digit, `.`, NameStart}]\n *   - IntegerPart FractionalPart [lookahead != {Digit, `.`, NameStart}]\n *   - IntegerPart ExponentPart [lookahead != {Digit, `.`, NameStart}]\n *\n * FractionalPart :: . Digit+\n *\n * ExponentPart :: ExponentIndicator Sign? Digit+\n *\n * ExponentIndicator :: one of `e` `E`\n *\n * Sign :: one of + -\n * ```\n */\n\nfunction readNumber(lexer, start, firstCode) {\n  const body = lexer.source.body;\n  let position = start;\n  let code = firstCode;\n  let isFloat = false; // NegativeSign (-)\n\n  if (code === 0x002d) {\n    code = body.charCodeAt(++position);\n  } // Zero (0)\n\n  if (code === 0x0030) {\n    code = body.charCodeAt(++position);\n\n    if ((0, _characterClasses.isDigit)(code)) {\n      throw (0, _syntaxError.syntaxError)(\n        lexer.source,\n        position,\n        `Invalid number, unexpected digit after 0: ${printCodePointAt(\n          lexer,\n          position,\n        )}.`,\n      );\n    }\n  } else {\n    position = readDigits(lexer, position, code);\n    code = body.charCodeAt(position);\n  } // Full stop (.)\n\n  if (code === 0x002e) {\n    isFloat = true;\n    code = body.charCodeAt(++position);\n    position = readDigits(lexer, position, code);\n    code = body.charCodeAt(position);\n  } // E e\n\n  if (code === 0x0045 || code === 0x0065) {\n    isFloat = true;\n    code = body.charCodeAt(++position); // + -\n\n    if (code === 0x002b || code === 0x002d) {\n      code = body.charCodeAt(++position);\n    }\n\n    position = readDigits(lexer, position, code);\n    code = body.charCodeAt(position);\n  } // Numbers cannot be followed by . or NameStart\n\n  if (code === 0x002e || (0, _characterClasses.isNameStart)(code)) {\n    throw (0, _syntaxError.syntaxError)(\n      lexer.source,\n      position,\n      `Invalid number, expected digit but got: ${printCodePointAt(\n        lexer,\n        position,\n      )}.`,\n    );\n  }\n\n  return createToken(\n    lexer,\n    isFloat ? _tokenKind.TokenKind.FLOAT : _tokenKind.TokenKind.INT,\n    start,\n    position,\n    body.slice(start, position),\n  );\n}\n/**\n * Returns the new position in the source after reading one or more digits.\n */\n\nfunction readDigits(lexer, start, firstCode) {\n  if (!(0, _characterClasses.isDigit)(firstCode)) {\n    throw (0, _syntaxError.syntaxError)(\n      lexer.source,\n      start,\n      `Invalid number, expected digit but got: ${printCodePointAt(\n        lexer,\n        start,\n      )}.`,\n    );\n  }\n\n  const body = lexer.source.body;\n  let position = start + 1; // +1 to skip first firstCode\n\n  while ((0, _characterClasses.isDigit)(body.charCodeAt(position))) {\n    ++position;\n  }\n\n  return position;\n}\n/**\n * Reads a single-quote string token from the source file.\n *\n * ```\n * StringValue ::\n *   - `\"\"` [lookahead != `\"`]\n *   - `\"` StringCharacter+ `\"`\n *\n * StringCharacter ::\n *   - SourceCharacter but not `\"` or `\\` or LineTerminator\n *   - `\\u` EscapedUnicode\n *   - `\\` EscapedCharacter\n *\n * EscapedUnicode ::\n *   - `{` HexDigit+ `}`\n *   - HexDigit HexDigit HexDigit HexDigit\n *\n * EscapedCharacter :: one of `\"` `\\` `/` `b` `f` `n` `r` `t`\n * ```\n */\n\nfunction readString(lexer, start) {\n  const body = lexer.source.body;\n  const bodyLength = body.length;\n  let position = start + 1;\n  let chunkStart = position;\n  let value = '';\n\n  while (position < bodyLength) {\n    const code = body.charCodeAt(position); // Closing Quote (\")\n\n    if (code === 0x0022) {\n      value += body.slice(chunkStart, position);\n      return createToken(\n        lexer,\n        _tokenKind.TokenKind.STRING,\n        start,\n        position + 1,\n        value,\n      );\n    } // Escape Sequence (\\)\n\n    if (code === 0x005c) {\n      value += body.slice(chunkStart, position);\n      const escape =\n        body.charCodeAt(position + 1) === 0x0075 // u\n          ? body.charCodeAt(position + 2) === 0x007b // {\n            ? readEscapedUnicodeVariableWidth(lexer, position)\n            : readEscapedUnicodeFixedWidth(lexer, position)\n          : readEscapedCharacter(lexer, position);\n      value += escape.value;\n      position += escape.size;\n      chunkStart = position;\n      continue;\n    } // LineTerminator (\\n | \\r)\n\n    if (code === 0x000a || code === 0x000d) {\n      break;\n    } // SourceCharacter\n\n    if (isUnicodeScalarValue(code)) {\n      ++position;\n    } else if (isSupplementaryCodePoint(body, position)) {\n      position += 2;\n    } else {\n      throw (0, _syntaxError.syntaxError)(\n        lexer.source,\n        position,\n        `Invalid character within String: ${printCodePointAt(\n          lexer,\n          position,\n        )}.`,\n      );\n    }\n  }\n\n  throw (0, _syntaxError.syntaxError)(\n    lexer.source,\n    position,\n    'Unterminated string.',\n  );\n} // The string value and lexed size of an escape sequence.\n\nfunction readEscapedUnicodeVariableWidth(lexer, position) {\n  const body = lexer.source.body;\n  let point = 0;\n  let size = 3; // Cannot be larger than 12 chars (\\u{00000000}).\n\n  while (size < 12) {\n    const code = body.charCodeAt(position + size++); // Closing Brace (})\n\n    if (code === 0x007d) {\n      // Must be at least 5 chars (\\u{0}) and encode a Unicode scalar value.\n      if (size < 5 || !isUnicodeScalarValue(point)) {\n        break;\n      }\n\n      return {\n        value: String.fromCodePoint(point),\n        size,\n      };\n    } // Append this hex digit to the code point.\n\n    point = (point << 4) | readHexDigit(code);\n\n    if (point < 0) {\n      break;\n    }\n  }\n\n  throw (0, _syntaxError.syntaxError)(\n    lexer.source,\n    position,\n    `Invalid Unicode escape sequence: \"${body.slice(\n      position,\n      position + size,\n    )}\".`,\n  );\n}\n\nfunction readEscapedUnicodeFixedWidth(lexer, position) {\n  const body = lexer.source.body;\n  const code = read16BitHexCode(body, position + 2);\n\n  if (isUnicodeScalarValue(code)) {\n    return {\n      value: String.fromCodePoint(code),\n      size: 6,\n    };\n  } // GraphQL allows JSON-style surrogate pair escape sequences, but only when\n  // a valid pair is formed.\n\n  if (isLeadingSurrogate(code)) {\n    // \\u\n    if (\n      body.charCodeAt(position + 6) === 0x005c &&\n      body.charCodeAt(position + 7) === 0x0075\n    ) {\n      const trailingCode = read16BitHexCode(body, position + 8);\n\n      if (isTrailingSurrogate(trailingCode)) {\n        // JavaScript defines strings as a sequence of UTF-16 code units and\n        // encodes Unicode code points above U+FFFF using a surrogate pair of\n        // code units. Since this is a surrogate pair escape sequence, just\n        // include both codes into the JavaScript string value. Had JavaScript\n        // not been internally based on UTF-16, then this surrogate pair would\n        // be decoded to retrieve the supplementary code point.\n        return {\n          value: String.fromCodePoint(code, trailingCode),\n          size: 12,\n        };\n      }\n    }\n  }\n\n  throw (0, _syntaxError.syntaxError)(\n    lexer.source,\n    position,\n    `Invalid Unicode escape sequence: \"${body.slice(position, position + 6)}\".`,\n  );\n}\n/**\n * Reads four hexadecimal characters and returns the positive integer that 16bit\n * hexadecimal string represents. For example, \"000f\" will return 15, and \"dead\"\n * will return 57005.\n *\n * Returns a negative number if any char was not a valid hexadecimal digit.\n */\n\nfunction read16BitHexCode(body, position) {\n  // readHexDigit() returns -1 on error. ORing a negative value with any other\n  // value always produces a negative value.\n  return (\n    (readHexDigit(body.charCodeAt(position)) << 12) |\n    (readHexDigit(body.charCodeAt(position + 1)) << 8) |\n    (readHexDigit(body.charCodeAt(position + 2)) << 4) |\n    readHexDigit(body.charCodeAt(position + 3))\n  );\n}\n/**\n * Reads a hexadecimal character and returns its positive integer value (0-15).\n *\n * '0' becomes 0, '9' becomes 9\n * 'A' becomes 10, 'F' becomes 15\n * 'a' becomes 10, 'f' becomes 15\n *\n * Returns -1 if the provided character code was not a valid hexadecimal digit.\n *\n * HexDigit :: one of\n *   - `0` `1` `2` `3` `4` `5` `6` `7` `8` `9`\n *   - `A` `B` `C` `D` `E` `F`\n *   - `a` `b` `c` `d` `e` `f`\n */\n\nfunction readHexDigit(code) {\n  return code >= 0x0030 && code <= 0x0039 // 0-9\n    ? code - 0x0030\n    : code >= 0x0041 && code <= 0x0046 // A-F\n    ? code - 0x0037\n    : code >= 0x0061 && code <= 0x0066 // a-f\n    ? code - 0x0057\n    : -1;\n}\n/**\n * | Escaped Character | Code Point | Character Name               |\n * | ----------------- | ---------- | ---------------------------- |\n * | `\"`               | U+0022     | double quote                 |\n * | `\\`               | U+005C     | reverse solidus (back slash) |\n * | `/`               | U+002F     | solidus (forward slash)      |\n * | `b`               | U+0008     | backspace                    |\n * | `f`               | U+000C     | form feed                    |\n * | `n`               | U+000A     | line feed (new line)         |\n * | `r`               | U+000D     | carriage return              |\n * | `t`               | U+0009     | horizontal tab               |\n */\n\nfunction readEscapedCharacter(lexer, position) {\n  const body = lexer.source.body;\n  const code = body.charCodeAt(position + 1);\n\n  switch (code) {\n    case 0x0022:\n      // \"\n      return {\n        value: '\\u0022',\n        size: 2,\n      };\n\n    case 0x005c:\n      // \\\n      return {\n        value: '\\u005c',\n        size: 2,\n      };\n\n    case 0x002f:\n      // /\n      return {\n        value: '\\u002f',\n        size: 2,\n      };\n\n    case 0x0062:\n      // b\n      return {\n        value: '\\u0008',\n        size: 2,\n      };\n\n    case 0x0066:\n      // f\n      return {\n        value: '\\u000c',\n        size: 2,\n      };\n\n    case 0x006e:\n      // n\n      return {\n        value: '\\u000a',\n        size: 2,\n      };\n\n    case 0x0072:\n      // r\n      return {\n        value: '\\u000d',\n        size: 2,\n      };\n\n    case 0x0074:\n      // t\n      return {\n        value: '\\u0009',\n        size: 2,\n      };\n  }\n\n  throw (0, _syntaxError.syntaxError)(\n    lexer.source,\n    position,\n    `Invalid character escape sequence: \"${body.slice(\n      position,\n      position + 2,\n    )}\".`,\n  );\n}\n/**\n * Reads a block string token from the source file.\n *\n * ```\n * StringValue ::\n *   - `\"\"\"` BlockStringCharacter* `\"\"\"`\n *\n * BlockStringCharacter ::\n *   - SourceCharacter but not `\"\"\"` or `\\\"\"\"`\n *   - `\\\"\"\"`\n * ```\n */\n\nfunction readBlockString(lexer, start) {\n  const body = lexer.source.body;\n  const bodyLength = body.length;\n  let lineStart = lexer.lineStart;\n  let position = start + 3;\n  let chunkStart = position;\n  let currentLine = '';\n  const blockLines = [];\n\n  while (position < bodyLength) {\n    const code = body.charCodeAt(position); // Closing Triple-Quote (\"\"\")\n\n    if (\n      code === 0x0022 &&\n      body.charCodeAt(position + 1) === 0x0022 &&\n      body.charCodeAt(position + 2) === 0x0022\n    ) {\n      currentLine += body.slice(chunkStart, position);\n      blockLines.push(currentLine);\n      const token = createToken(\n        lexer,\n        _tokenKind.TokenKind.BLOCK_STRING,\n        start,\n        position + 3, // Return a string of the lines joined with U+000A.\n        (0, _blockString.dedentBlockStringLines)(blockLines).join('\\n'),\n      );\n      lexer.line += blockLines.length - 1;\n      lexer.lineStart = lineStart;\n      return token;\n    } // Escaped Triple-Quote (\\\"\"\")\n\n    if (\n      code === 0x005c &&\n      body.charCodeAt(position + 1) === 0x0022 &&\n      body.charCodeAt(position + 2) === 0x0022 &&\n      body.charCodeAt(position + 3) === 0x0022\n    ) {\n      currentLine += body.slice(chunkStart, position);\n      chunkStart = position + 1; // skip only slash\n\n      position += 4;\n      continue;\n    } // LineTerminator\n\n    if (code === 0x000a || code === 0x000d) {\n      currentLine += body.slice(chunkStart, position);\n      blockLines.push(currentLine);\n\n      if (code === 0x000d && body.charCodeAt(position + 1) === 0x000a) {\n        position += 2;\n      } else {\n        ++position;\n      }\n\n      currentLine = '';\n      chunkStart = position;\n      lineStart = position;\n      continue;\n    } // SourceCharacter\n\n    if (isUnicodeScalarValue(code)) {\n      ++position;\n    } else if (isSupplementaryCodePoint(body, position)) {\n      position += 2;\n    } else {\n      throw (0, _syntaxError.syntaxError)(\n        lexer.source,\n        position,\n        `Invalid character within String: ${printCodePointAt(\n          lexer,\n          position,\n        )}.`,\n      );\n    }\n  }\n\n  throw (0, _syntaxError.syntaxError)(\n    lexer.source,\n    position,\n    'Unterminated string.',\n  );\n}\n/**\n * Reads an alphanumeric + underscore name from the source.\n *\n * ```\n * Name ::\n *   - NameStart NameContinue* [lookahead != NameContinue]\n * ```\n *\n * @internal\n */\n\nfunction readName(lexer, start) {\n  const body = lexer.source.body;\n  const bodyLength = body.length;\n  let position = start + 1;\n\n  while (position < bodyLength) {\n    const code = body.charCodeAt(position);\n\n    if ((0, _characterClasses.isNameContinue)(code)) {\n      ++position;\n    } else {\n      break;\n    }\n  }\n\n  return createToken(\n    lexer,\n    _tokenKind.TokenKind.NAME,\n    start,\n    position,\n    body.slice(start, position),\n  );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.SchemaCoordinateLexer = void 0;\n\nvar _syntaxError = require('../error/syntaxError.js');\n\nvar _ast = require('./ast.js');\n\nvar _characterClasses = require('./characterClasses.js');\n\nvar _lexer = require('./lexer.js');\n\nvar _tokenKind = require('./tokenKind.js');\n\n/**\n * Given a Source schema coordinate, creates a Lexer for that source.\n * A SchemaCoordinateLexer is a stateful stream generator in that every time\n * it is advanced, it returns the next token in the Source. Assuming the\n * source lexes, the final Token emitted by the lexer will be of kind\n * EOF, after which the lexer will repeatedly return the same EOF token\n * whenever called.\n */\nclass SchemaCoordinateLexer {\n  /**\n   * The previously focused non-ignored token.\n   */\n\n  /**\n   * The currently focused non-ignored token.\n   */\n\n  /**\n   * The (1-indexed) line containing the current token.\n   * Since a schema coordinate may not contain newline, this value is always 1.\n   */\n  line = 1;\n  /**\n   * The character offset at which the current line begins.\n   * Since a schema coordinate may not contain newline, this value is always 0.\n   */\n\n  lineStart = 0;\n\n  constructor(source) {\n    const startOfFileToken = new _ast.Token(\n      _tokenKind.TokenKind.SOF,\n      0,\n      0,\n      0,\n      0,\n    );\n    this.source = source;\n    this.lastToken = startOfFileToken;\n    this.token = startOfFileToken;\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'SchemaCoordinateLexer';\n  }\n  /**\n   * Advances the token stream to the next non-ignored token.\n   */\n\n  advance() {\n    this.lastToken = this.token;\n    const token = (this.token = this.lookahead());\n    return token;\n  }\n  /**\n   * Looks ahead and returns the next non-ignored token, but does not change\n   * the current Lexer token.\n   */\n\n  lookahead() {\n    let token = this.token;\n\n    if (token.kind !== _tokenKind.TokenKind.EOF) {\n      // Read the next token and form a link in the token linked-list.\n      const nextToken = readNextToken(this, token.end); // @ts-expect-error next is only mutable during parsing.\n\n      token.next = nextToken; // @ts-expect-error prev is only mutable during parsing.\n\n      nextToken.prev = token;\n      token = nextToken;\n    }\n\n    return token;\n  }\n}\n/**\n * Gets the next token from the source starting at the given position.\n */\n\nexports.SchemaCoordinateLexer = SchemaCoordinateLexer;\n\nfunction readNextToken(lexer, start) {\n  const body = lexer.source.body;\n  const bodyLength = body.length;\n  const position = start;\n\n  if (position < bodyLength) {\n    const code = body.charCodeAt(position);\n\n    switch (code) {\n      case 0x002e:\n        // .\n        return (0, _lexer.createToken)(\n          lexer,\n          _tokenKind.TokenKind.DOT,\n          position,\n          position + 1,\n        );\n\n      case 0x0028:\n        // (\n        return (0, _lexer.createToken)(\n          lexer,\n          _tokenKind.TokenKind.PAREN_L,\n          position,\n          position + 1,\n        );\n\n      case 0x0029:\n        // )\n        return (0, _lexer.createToken)(\n          lexer,\n          _tokenKind.TokenKind.PAREN_R,\n          position,\n          position + 1,\n        );\n\n      case 0x003a:\n        // :\n        return (0, _lexer.createToken)(\n          lexer,\n          _tokenKind.TokenKind.COLON,\n          position,\n          position + 1,\n        );\n\n      case 0x0040:\n        // @\n        return (0, _lexer.createToken)(\n          lexer,\n          _tokenKind.TokenKind.AT,\n          position,\n          position + 1,\n        );\n    } // Name\n\n    if ((0, _characterClasses.isNameStart)(code)) {\n      return (0, _lexer.readName)(lexer, position);\n    }\n\n    throw (0, _syntaxError.syntaxError)(\n      lexer.source,\n      position,\n      `Invalid character: ${(0, _lexer.printCodePointAt)(lexer, position)}.`,\n    );\n  }\n\n  return (0, _lexer.createToken)(\n    lexer,\n    _tokenKind.TokenKind.EOF,\n    bodyLength,\n    bodyLength,\n  );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.inspect = inspect;\nconst MAX_ARRAY_LENGTH = 10;\nconst MAX_RECURSIVE_DEPTH = 2;\n/**\n * Used to print values in error messages.\n */\n\nfunction inspect(value) {\n  return formatValue(value, []);\n}\n\nfunction formatValue(value, seenValues) {\n  switch (typeof value) {\n    case 'string':\n      return JSON.stringify(value);\n\n    case 'function':\n      return value.name ? `[function ${value.name}]` : '[function]';\n\n    case 'object':\n      return formatObjectValue(value, seenValues);\n\n    default:\n      return String(value);\n  }\n}\n\nfunction formatObjectValue(value, previouslySeenValues) {\n  if (value === null) {\n    return 'null';\n  }\n\n  if (previouslySeenValues.includes(value)) {\n    return '[Circular]';\n  }\n\n  const seenValues = [...previouslySeenValues, value];\n\n  if (isJSONable(value)) {\n    const jsonValue = value.toJSON(); // check for infinite recursion\n\n    if (jsonValue !== value) {\n      return typeof jsonValue === 'string'\n        ? jsonValue\n        : formatValue(jsonValue, seenValues);\n    }\n  } else if (Array.isArray(value)) {\n    return formatArray(value, seenValues);\n  }\n\n  return formatObject(value, seenValues);\n}\n\nfunction isJSONable(value) {\n  return typeof value.toJSON === 'function';\n}\n\nfunction formatObject(object, seenValues) {\n  const entries = Object.entries(object);\n\n  if (entries.length === 0) {\n    return '{}';\n  }\n\n  if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n    return '[' + getObjectTag(object) + ']';\n  }\n\n  const properties = entries.map(\n    ([key, value]) => key + ': ' + formatValue(value, seenValues),\n  );\n  return '{ ' + properties.join(', ') + ' }';\n}\n\nfunction formatArray(array, seenValues) {\n  if (array.length === 0) {\n    return '[]';\n  }\n\n  if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n    return '[Array]';\n  }\n\n  const len = Math.min(MAX_ARRAY_LENGTH, array.length);\n  const remaining = array.length - len;\n  const items = [];\n\n  for (let i = 0; i < len; ++i) {\n    items.push(formatValue(array[i], seenValues));\n  }\n\n  if (remaining === 1) {\n    items.push('... 1 more item');\n  } else if (remaining > 1) {\n    items.push(`... ${remaining} more items`);\n  }\n\n  return '[' + items.join(', ') + ']';\n}\n\nfunction getObjectTag(object) {\n  const tag = Object.prototype.toString\n    .call(object)\n    .replace(/^\\[object /, '')\n    .replace(/]$/, '');\n\n  if (tag === 'Object' && typeof object.constructor === 'function') {\n    const name = object.constructor.name;\n\n    if (typeof name === 'string' && name !== '') {\n      return name;\n    }\n  }\n\n  return tag;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.instanceOf = void 0;\n\nvar _inspect = require('./inspect.js');\n\n/* c8 ignore next 3 */\nconst isProduction =\n  globalThis.process && // eslint-disable-next-line no-undef\n  process.env.NODE_ENV === 'production';\n/**\n * A replacement for instanceof which includes an error warning when multi-realm\n * constructors are detected.\n * See: https://expressjs.com/en/advanced/best-practice-performance.html#set-node_env-to-production\n * See: https://webpack.js.org/guides/production/\n */\n\nconst instanceOf =\n  /* c8 ignore next 6 */\n  // FIXME: https://github.com/graphql/graphql-js/issues/2317\n  isProduction\n    ? function instanceOf(value, constructor) {\n        return value instanceof constructor;\n      }\n    : function instanceOf(value, constructor) {\n        if (value instanceof constructor) {\n          return true;\n        }\n\n        if (typeof value === 'object' && value !== null) {\n          var _value$constructor;\n\n          // Prefer Symbol.toStringTag since it is immune to minification.\n          const className = constructor.prototype[Symbol.toStringTag];\n          const valueClassName = // We still need to support constructor's name to detect conflicts with older versions of this library.\n            Symbol.toStringTag in value // @ts-expect-error TS bug see, https://github.com/microsoft/TypeScript/issues/38009\n              ? value[Symbol.toStringTag]\n              : (_value$constructor = value.constructor) === null ||\n                _value$constructor === void 0\n              ? void 0\n              : _value$constructor.name;\n\n          if (className === valueClassName) {\n            const stringifiedValue = (0, _inspect.inspect)(value);\n            throw new Error(`Cannot use ${className} \"${stringifiedValue}\" from another module or realm.\n\nEnsure that there is only one instance of \"graphql\" in the node_modules\ndirectory. If different versions of \"graphql\" are the dependencies of other\nrelied on modules, use \"resolutions\" to ensure only one version is installed.\n\nhttps://yarnpkg.com/en/docs/selective-version-resolutions\n\nDuplicate \"graphql\" modules cannot be used at the same time since different\nversions may have different capabilities and behavior. The data from one\nversion used in the function from another could produce confusing and\nspurious results.`);\n          }\n        }\n\n        return false;\n      };\nexports.instanceOf = instanceOf;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.Source = void 0;\nexports.isSource = isSource;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _instanceOf = require('../jsutils/instanceOf.js');\n\n/**\n * A representation of source input to GraphQL. The `name` and `locationOffset` parameters are\n * optional, but they are useful for clients who store GraphQL documents in source files.\n * For example, if the GraphQL input starts at line 40 in a file named `Foo.graphql`, it might\n * be useful for `name` to be `\"Foo.graphql\"` and location to be `{ line: 40, column: 1 }`.\n * The `line` and `column` properties in `locationOffset` are 1-indexed.\n */\nclass Source {\n  constructor(\n    body,\n    name = 'GraphQL request',\n    locationOffset = {\n      line: 1,\n      column: 1,\n    },\n  ) {\n    typeof body === 'string' ||\n      (0, _devAssert.devAssert)(\n        false,\n        `Body must be a string. Received: ${(0, _inspect.inspect)(body)}.`,\n      );\n    this.body = body;\n    this.name = name;\n    this.locationOffset = locationOffset;\n    this.locationOffset.line > 0 ||\n      (0, _devAssert.devAssert)(\n        false,\n        'line in locationOffset is 1-indexed and must be positive.',\n      );\n    this.locationOffset.column > 0 ||\n      (0, _devAssert.devAssert)(\n        false,\n        'column in locationOffset is 1-indexed and must be positive.',\n      );\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'Source';\n  }\n}\n/**\n * Test if the given value is a Source object.\n *\n * @internal\n */\n\nexports.Source = Source;\n\nfunction isSource(source) {\n  return (0, _instanceOf.instanceOf)(source, Source);\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.Parser = void 0;\nexports.parse = parse;\nexports.parseConstValue = parseConstValue;\nexports.parseSchemaCoordinate = parseSchemaCoordinate;\nexports.parseType = parseType;\nexports.parseValue = parseValue;\n\nvar _syntaxError = require('../error/syntaxError.js');\n\nvar _ast = require('./ast.js');\n\nvar _directiveLocation = require('./directiveLocation.js');\n\nvar _kinds = require('./kinds.js');\n\nvar _lexer = require('./lexer.js');\n\nvar _schemaCoordinateLexer = require('./schemaCoordinateLexer.js');\n\nvar _source = require('./source.js');\n\nvar _tokenKind = require('./tokenKind.js');\n\n/**\n * Given a GraphQL source, parses it into a Document.\n * Throws GraphQLError if a syntax error is encountered.\n */\nfunction parse(source, options) {\n  const parser = new Parser(source, options);\n  const document = parser.parseDocument();\n  Object.defineProperty(document, 'tokenCount', {\n    enumerable: false,\n    value: parser.tokenCount,\n  });\n  return document;\n}\n/**\n * Given a string containing a GraphQL value (ex. `[42]`), parse the AST for\n * that value.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Values directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: valueFromAST().\n */\n\nfunction parseValue(source, options) {\n  const parser = new Parser(source, options);\n  parser.expectToken(_tokenKind.TokenKind.SOF);\n  const value = parser.parseValueLiteral(false);\n  parser.expectToken(_tokenKind.TokenKind.EOF);\n  return value;\n}\n/**\n * Similar to parseValue(), but raises a parse error if it encounters a\n * variable. The return type will be a constant value.\n */\n\nfunction parseConstValue(source, options) {\n  const parser = new Parser(source, options);\n  parser.expectToken(_tokenKind.TokenKind.SOF);\n  const value = parser.parseConstValueLiteral();\n  parser.expectToken(_tokenKind.TokenKind.EOF);\n  return value;\n}\n/**\n * Given a string containing a GraphQL Type (ex. `[Int!]`), parse the AST for\n * that type.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * This is useful within tools that operate upon GraphQL Types directly and\n * in isolation of complete GraphQL documents.\n *\n * Consider providing the results to the utility function: typeFromAST().\n */\n\nfunction parseType(source, options) {\n  const parser = new Parser(source, options);\n  parser.expectToken(_tokenKind.TokenKind.SOF);\n  const type = parser.parseTypeReference();\n  parser.expectToken(_tokenKind.TokenKind.EOF);\n  return type;\n}\n/**\n * Given a string containing a GraphQL Schema Coordinate (ex. `Type.field`),\n * parse the AST for that schema coordinate.\n * Throws GraphQLError if a syntax error is encountered.\n *\n * Consider providing the results to the utility function:\n * resolveASTSchemaCoordinate(). Or calling resolveSchemaCoordinate() directly\n * with an unparsed source.\n */\n\nfunction parseSchemaCoordinate(source) {\n  const sourceObj = (0, _source.isSource)(source)\n    ? source\n    : new _source.Source(source);\n  const lexer = new _schemaCoordinateLexer.SchemaCoordinateLexer(sourceObj);\n  const parser = new Parser(source, {\n    lexer,\n  });\n  parser.expectToken(_tokenKind.TokenKind.SOF);\n  const coordinate = parser.parseSchemaCoordinate();\n  parser.expectToken(_tokenKind.TokenKind.EOF);\n  return coordinate;\n}\n/**\n * This class is exported only to assist people in implementing their own parsers\n * without duplicating too much code and should be used only as last resort for cases\n * such as experimental syntax or if certain features could not be contributed upstream.\n *\n * It is still part of the internal API and is versioned, so any changes to it are never\n * considered breaking changes. If you still need to support multiple versions of the\n * library, please use the `versionInfo` variable for version detection.\n *\n * @internal\n */\n\nclass Parser {\n  constructor(source, options = {}) {\n    const { lexer, ..._options } = options;\n\n    if (lexer) {\n      this._lexer = lexer;\n    } else {\n      const sourceObj = (0, _source.isSource)(source)\n        ? source\n        : new _source.Source(source);\n      this._lexer = new _lexer.Lexer(sourceObj);\n    }\n\n    this._options = _options;\n    this._tokenCounter = 0;\n  }\n\n  get tokenCount() {\n    return this._tokenCounter;\n  }\n  /**\n   * Converts a name lex token into a name parse node.\n   */\n\n  parseName() {\n    const token = this.expectToken(_tokenKind.TokenKind.NAME);\n    return this.node(token, {\n      kind: _kinds.Kind.NAME,\n      value: token.value,\n    });\n  } // Implements the parsing rules in the Document section.\n\n  /**\n   * Document : Definition+\n   */\n\n  parseDocument() {\n    return this.node(this._lexer.token, {\n      kind: _kinds.Kind.DOCUMENT,\n      definitions: this.many(\n        _tokenKind.TokenKind.SOF,\n        this.parseDefinition,\n        _tokenKind.TokenKind.EOF,\n      ),\n    });\n  }\n  /**\n   * Definition :\n   *   - ExecutableDefinition\n   *   - TypeSystemDefinition\n   *   - TypeSystemExtension\n   *\n   * ExecutableDefinition :\n   *   - OperationDefinition\n   *   - FragmentDefinition\n   *\n   * TypeSystemDefinition :\n   *   - SchemaDefinition\n   *   - TypeDefinition\n   *   - DirectiveDefinition\n   *\n   * TypeDefinition :\n   *   - ScalarTypeDefinition\n   *   - ObjectTypeDefinition\n   *   - InterfaceTypeDefinition\n   *   - UnionTypeDefinition\n   *   - EnumTypeDefinition\n   *   - InputObjectTypeDefinition\n   */\n\n  parseDefinition() {\n    if (this.peek(_tokenKind.TokenKind.BRACE_L)) {\n      return this.parseOperationDefinition();\n    } // Many definitions begin with a description and require a lookahead.\n\n    const hasDescription = this.peekDescription();\n    const keywordToken = hasDescription\n      ? this._lexer.lookahead()\n      : this._lexer.token;\n\n    if (hasDescription && keywordToken.kind === _tokenKind.TokenKind.BRACE_L) {\n      throw (0, _syntaxError.syntaxError)(\n        this._lexer.source,\n        this._lexer.token.start,\n        'Unexpected description, descriptions are not supported on shorthand queries.',\n      );\n    }\n\n    if (keywordToken.kind === _tokenKind.TokenKind.NAME) {\n      switch (keywordToken.value) {\n        case 'schema':\n          return this.parseSchemaDefinition();\n\n        case 'scalar':\n          return this.parseScalarTypeDefinition();\n\n        case 'type':\n          return this.parseObjectTypeDefinition();\n\n        case 'interface':\n          return this.parseInterfaceTypeDefinition();\n\n        case 'union':\n          return this.parseUnionTypeDefinition();\n\n        case 'enum':\n          return this.parseEnumTypeDefinition();\n\n        case 'input':\n          return this.parseInputObjectTypeDefinition();\n\n        case 'directive':\n          return this.parseDirectiveDefinition();\n      }\n\n      switch (keywordToken.value) {\n        case 'query':\n        case 'mutation':\n        case 'subscription':\n          return this.parseOperationDefinition();\n\n        case 'fragment':\n          return this.parseFragmentDefinition();\n      }\n\n      if (hasDescription) {\n        throw (0, _syntaxError.syntaxError)(\n          this._lexer.source,\n          this._lexer.token.start,\n          'Unexpected description, only GraphQL definitions support descriptions.',\n        );\n      }\n\n      switch (keywordToken.value) {\n        case 'extend':\n          return this.parseTypeSystemExtension();\n      }\n    }\n\n    throw this.unexpected(keywordToken);\n  } // Implements the parsing rules in the Operations section.\n\n  /**\n   * OperationDefinition :\n   *  - SelectionSet\n   *  - OperationType Name? VariableDefinitions? Directives? SelectionSet\n   */\n\n  parseOperationDefinition() {\n    const start = this._lexer.token;\n\n    if (this.peek(_tokenKind.TokenKind.BRACE_L)) {\n      return this.node(start, {\n        kind: _kinds.Kind.OPERATION_DEFINITION,\n        operation: _ast.OperationTypeNode.QUERY,\n        description: undefined,\n        name: undefined,\n        variableDefinitions: [],\n        directives: [],\n        selectionSet: this.parseSelectionSet(),\n      });\n    }\n\n    const description = this.parseDescription();\n    const operation = this.parseOperationType();\n    let name;\n\n    if (this.peek(_tokenKind.TokenKind.NAME)) {\n      name = this.parseName();\n    }\n\n    return this.node(start, {\n      kind: _kinds.Kind.OPERATION_DEFINITION,\n      operation,\n      description,\n      name,\n      variableDefinitions: this.parseVariableDefinitions(),\n      directives: this.parseDirectives(false),\n      selectionSet: this.parseSelectionSet(),\n    });\n  }\n  /**\n   * OperationType : one of query mutation subscription\n   */\n\n  parseOperationType() {\n    const operationToken = this.expectToken(_tokenKind.TokenKind.NAME);\n\n    switch (operationToken.value) {\n      case 'query':\n        return _ast.OperationTypeNode.QUERY;\n\n      case 'mutation':\n        return _ast.OperationTypeNode.MUTATION;\n\n      case 'subscription':\n        return _ast.OperationTypeNode.SUBSCRIPTION;\n    }\n\n    throw this.unexpected(operationToken);\n  }\n  /**\n   * VariableDefinitions : ( VariableDefinition+ )\n   */\n\n  parseVariableDefinitions() {\n    return this.optionalMany(\n      _tokenKind.TokenKind.PAREN_L,\n      this.parseVariableDefinition,\n      _tokenKind.TokenKind.PAREN_R,\n    );\n  }\n  /**\n   * VariableDefinition : Variable : Type DefaultValue? Directives[Const]?\n   */\n\n  parseVariableDefinition() {\n    return this.node(this._lexer.token, {\n      kind: _kinds.Kind.VARIABLE_DEFINITION,\n      description: this.parseDescription(),\n      variable: this.parseVariable(),\n      type:\n        (this.expectToken(_tokenKind.TokenKind.COLON),\n        this.parseTypeReference()),\n      defaultValue: this.expectOptionalToken(_tokenKind.TokenKind.EQUALS)\n        ? this.parseConstValueLiteral()\n        : undefined,\n      directives: this.parseConstDirectives(),\n    });\n  }\n  /**\n   * Variable : $ Name\n   */\n\n  parseVariable() {\n    const start = this._lexer.token;\n    this.expectToken(_tokenKind.TokenKind.DOLLAR);\n    return this.node(start, {\n      kind: _kinds.Kind.VARIABLE,\n      name: this.parseName(),\n    });\n  }\n  /**\n   * ```\n   * SelectionSet : { Selection+ }\n   * ```\n   */\n\n  parseSelectionSet() {\n    return this.node(this._lexer.token, {\n      kind: _kinds.Kind.SELECTION_SET,\n      selections: this.many(\n        _tokenKind.TokenKind.BRACE_L,\n        this.parseSelection,\n        _tokenKind.TokenKind.BRACE_R,\n      ),\n    });\n  }\n  /**\n   * Selection :\n   *   - Field\n   *   - FragmentSpread\n   *   - InlineFragment\n   */\n\n  parseSelection() {\n    return this.peek(_tokenKind.TokenKind.SPREAD)\n      ? this.parseFragment()\n      : this.parseField();\n  }\n  /**\n   * Field : Alias? Name Arguments? Directives? SelectionSet?\n   *\n   * Alias : Name :\n   */\n\n  parseField() {\n    const start = this._lexer.token;\n    const nameOrAlias = this.parseName();\n    let alias;\n    let name;\n\n    if (this.expectOptionalToken(_tokenKind.TokenKind.COLON)) {\n      alias = nameOrAlias;\n      name = this.parseName();\n    } else {\n      name = nameOrAlias;\n    }\n\n    return this.node(start, {\n      kind: _kinds.Kind.FIELD,\n      alias,\n      name,\n      arguments: this.parseArguments(false),\n      directives: this.parseDirectives(false),\n      selectionSet: this.peek(_tokenKind.TokenKind.BRACE_L)\n        ? this.parseSelectionSet()\n        : undefined,\n    });\n  }\n  /**\n   * Arguments[Const] : ( Argument[?Const]+ )\n   */\n\n  parseArguments(isConst) {\n    const item = isConst ? this.parseConstArgument : this.parseArgument;\n    return this.optionalMany(\n      _tokenKind.TokenKind.PAREN_L,\n      item,\n      _tokenKind.TokenKind.PAREN_R,\n    );\n  }\n  /**\n   * Argument[Const] : Name : Value[?Const]\n   */\n\n  parseArgument(isConst = false) {\n    const start = this._lexer.token;\n    const name = this.parseName();\n    this.expectToken(_tokenKind.TokenKind.COLON);\n    return this.node(start, {\n      kind: _kinds.Kind.ARGUMENT,\n      name,\n      value: this.parseValueLiteral(isConst),\n    });\n  }\n\n  parseConstArgument() {\n    return this.parseArgument(true);\n  } // Implements the parsing rules in the Fragments section.\n\n  /**\n   * Corresponds to both FragmentSpread and InlineFragment in the spec.\n   *\n   * FragmentSpread : ... FragmentName Directives?\n   *\n   * InlineFragment : ... TypeCondition? Directives? SelectionSet\n   */\n\n  parseFragment() {\n    const start = this._lexer.token;\n    this.expectToken(_tokenKind.TokenKind.SPREAD);\n    const hasTypeCondition = this.expectOptionalKeyword('on');\n\n    if (!hasTypeCondition && this.peek(_tokenKind.TokenKind.NAME)) {\n      return this.node(start, {\n        kind: _kinds.Kind.FRAGMENT_SPREAD,\n        name: this.parseFragmentName(),\n        directives: this.parseDirectives(false),\n      });\n    }\n\n    return this.node(start, {\n      kind: _kinds.Kind.INLINE_FRAGMENT,\n      typeCondition: hasTypeCondition ? this.parseNamedType() : undefined,\n      directives: this.parseDirectives(false),\n      selectionSet: this.parseSelectionSet(),\n    });\n  }\n  /**\n   * FragmentDefinition :\n   *   - fragment FragmentName on TypeCondition Directives? SelectionSet\n   *\n   * TypeCondition : NamedType\n   */\n\n  parseFragmentDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    this.expectKeyword('fragment'); // Legacy support for defining variables within fragments changes\n    // the grammar of FragmentDefinition:\n    //   - fragment FragmentName VariableDefinitions? on TypeCondition Directives? SelectionSet\n\n    if (this._options.allowLegacyFragmentVariables === true) {\n      return this.node(start, {\n        kind: _kinds.Kind.FRAGMENT_DEFINITION,\n        description,\n        name: this.parseFragmentName(),\n        variableDefinitions: this.parseVariableDefinitions(),\n        typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n        directives: this.parseDirectives(false),\n        selectionSet: this.parseSelectionSet(),\n      });\n    }\n\n    return this.node(start, {\n      kind: _kinds.Kind.FRAGMENT_DEFINITION,\n      description,\n      name: this.parseFragmentName(),\n      typeCondition: (this.expectKeyword('on'), this.parseNamedType()),\n      directives: this.parseDirectives(false),\n      selectionSet: this.parseSelectionSet(),\n    });\n  }\n  /**\n   * FragmentName : Name but not `on`\n   */\n\n  parseFragmentName() {\n    if (this._lexer.token.value === 'on') {\n      throw this.unexpected();\n    }\n\n    return this.parseName();\n  } // Implements the parsing rules in the Values section.\n\n  /**\n   * Value[Const] :\n   *   - [~Const] Variable\n   *   - IntValue\n   *   - FloatValue\n   *   - StringValue\n   *   - BooleanValue\n   *   - NullValue\n   *   - EnumValue\n   *   - ListValue[?Const]\n   *   - ObjectValue[?Const]\n   *\n   * BooleanValue : one of `true` `false`\n   *\n   * NullValue : `null`\n   *\n   * EnumValue : Name but not `true`, `false` or `null`\n   */\n\n  parseValueLiteral(isConst) {\n    const token = this._lexer.token;\n\n    switch (token.kind) {\n      case _tokenKind.TokenKind.BRACKET_L:\n        return this.parseList(isConst);\n\n      case _tokenKind.TokenKind.BRACE_L:\n        return this.parseObject(isConst);\n\n      case _tokenKind.TokenKind.INT:\n        this.advanceLexer();\n        return this.node(token, {\n          kind: _kinds.Kind.INT,\n          value: token.value,\n        });\n\n      case _tokenKind.TokenKind.FLOAT:\n        this.advanceLexer();\n        return this.node(token, {\n          kind: _kinds.Kind.FLOAT,\n          value: token.value,\n        });\n\n      case _tokenKind.TokenKind.STRING:\n      case _tokenKind.TokenKind.BLOCK_STRING:\n        return this.parseStringLiteral();\n\n      case _tokenKind.TokenKind.NAME:\n        this.advanceLexer();\n\n        switch (token.value) {\n          case 'true':\n            return this.node(token, {\n              kind: _kinds.Kind.BOOLEAN,\n              value: true,\n            });\n\n          case 'false':\n            return this.node(token, {\n              kind: _kinds.Kind.BOOLEAN,\n              value: false,\n            });\n\n          case 'null':\n            return this.node(token, {\n              kind: _kinds.Kind.NULL,\n            });\n\n          default:\n            return this.node(token, {\n              kind: _kinds.Kind.ENUM,\n              value: token.value,\n            });\n        }\n\n      case _tokenKind.TokenKind.DOLLAR:\n        if (isConst) {\n          this.expectToken(_tokenKind.TokenKind.DOLLAR);\n\n          if (this._lexer.token.kind === _tokenKind.TokenKind.NAME) {\n            const varName = this._lexer.token.value;\n            throw (0, _syntaxError.syntaxError)(\n              this._lexer.source,\n              token.start,\n              `Unexpected variable \"$${varName}\" in constant value.`,\n            );\n          } else {\n            throw this.unexpected(token);\n          }\n        }\n\n        return this.parseVariable();\n\n      default:\n        throw this.unexpected();\n    }\n  }\n\n  parseConstValueLiteral() {\n    return this.parseValueLiteral(true);\n  }\n\n  parseStringLiteral() {\n    const token = this._lexer.token;\n    this.advanceLexer();\n    return this.node(token, {\n      kind: _kinds.Kind.STRING,\n      value: token.value,\n      block: token.kind === _tokenKind.TokenKind.BLOCK_STRING,\n    });\n  }\n  /**\n   * ListValue[Const] :\n   *   - [ ]\n   *   - [ Value[?Const]+ ]\n   */\n\n  parseList(isConst) {\n    const item = () => this.parseValueLiteral(isConst);\n\n    return this.node(this._lexer.token, {\n      kind: _kinds.Kind.LIST,\n      values: this.any(\n        _tokenKind.TokenKind.BRACKET_L,\n        item,\n        _tokenKind.TokenKind.BRACKET_R,\n      ),\n    });\n  }\n  /**\n   * ```\n   * ObjectValue[Const] :\n   *   - { }\n   *   - { ObjectField[?Const]+ }\n   * ```\n   */\n\n  parseObject(isConst) {\n    const item = () => this.parseObjectField(isConst);\n\n    return this.node(this._lexer.token, {\n      kind: _kinds.Kind.OBJECT,\n      fields: this.any(\n        _tokenKind.TokenKind.BRACE_L,\n        item,\n        _tokenKind.TokenKind.BRACE_R,\n      ),\n    });\n  }\n  /**\n   * ObjectField[Const] : Name : Value[?Const]\n   */\n\n  parseObjectField(isConst) {\n    const start = this._lexer.token;\n    const name = this.parseName();\n    this.expectToken(_tokenKind.TokenKind.COLON);\n    return this.node(start, {\n      kind: _kinds.Kind.OBJECT_FIELD,\n      name,\n      value: this.parseValueLiteral(isConst),\n    });\n  } // Implements the parsing rules in the Directives section.\n\n  /**\n   * Directives[Const] : Directive[?Const]+\n   */\n\n  parseDirectives(isConst) {\n    const directives = [];\n\n    while (this.peek(_tokenKind.TokenKind.AT)) {\n      directives.push(this.parseDirective(isConst));\n    }\n\n    return directives;\n  }\n\n  parseConstDirectives() {\n    return this.parseDirectives(true);\n  }\n  /**\n   * ```\n   * Directive[Const] : @ Name Arguments[?Const]?\n   * ```\n   */\n\n  parseDirective(isConst) {\n    const start = this._lexer.token;\n    this.expectToken(_tokenKind.TokenKind.AT);\n    return this.node(start, {\n      kind: _kinds.Kind.DIRECTIVE,\n      name: this.parseName(),\n      arguments: this.parseArguments(isConst),\n    });\n  } // Implements the parsing rules in the Types section.\n\n  /**\n   * Type :\n   *   - NamedType\n   *   - ListType\n   *   - NonNullType\n   */\n\n  parseTypeReference() {\n    const start = this._lexer.token;\n    let type;\n\n    if (this.expectOptionalToken(_tokenKind.TokenKind.BRACKET_L)) {\n      const innerType = this.parseTypeReference();\n      this.expectToken(_tokenKind.TokenKind.BRACKET_R);\n      type = this.node(start, {\n        kind: _kinds.Kind.LIST_TYPE,\n        type: innerType,\n      });\n    } else {\n      type = this.parseNamedType();\n    }\n\n    if (this.expectOptionalToken(_tokenKind.TokenKind.BANG)) {\n      return this.node(start, {\n        kind: _kinds.Kind.NON_NULL_TYPE,\n        type,\n      });\n    }\n\n    return type;\n  }\n  /**\n   * NamedType : Name\n   */\n\n  parseNamedType() {\n    return this.node(this._lexer.token, {\n      kind: _kinds.Kind.NAMED_TYPE,\n      name: this.parseName(),\n    });\n  } // Implements the parsing rules in the Type Definition section.\n\n  peekDescription() {\n    return (\n      this.peek(_tokenKind.TokenKind.STRING) ||\n      this.peek(_tokenKind.TokenKind.BLOCK_STRING)\n    );\n  }\n  /**\n   * Description : StringValue\n   */\n\n  parseDescription() {\n    if (this.peekDescription()) {\n      return this.parseStringLiteral();\n    }\n  }\n  /**\n   * ```\n   * SchemaDefinition : Description? schema Directives[Const]? { OperationTypeDefinition+ }\n   * ```\n   */\n\n  parseSchemaDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    this.expectKeyword('schema');\n    const directives = this.parseConstDirectives();\n    const operationTypes = this.many(\n      _tokenKind.TokenKind.BRACE_L,\n      this.parseOperationTypeDefinition,\n      _tokenKind.TokenKind.BRACE_R,\n    );\n    return this.node(start, {\n      kind: _kinds.Kind.SCHEMA_DEFINITION,\n      description,\n      directives,\n      operationTypes,\n    });\n  }\n  /**\n   * OperationTypeDefinition : OperationType : NamedType\n   */\n\n  parseOperationTypeDefinition() {\n    const start = this._lexer.token;\n    const operation = this.parseOperationType();\n    this.expectToken(_tokenKind.TokenKind.COLON);\n    const type = this.parseNamedType();\n    return this.node(start, {\n      kind: _kinds.Kind.OPERATION_TYPE_DEFINITION,\n      operation,\n      type,\n    });\n  }\n  /**\n   * ScalarTypeDefinition : Description? scalar Name Directives[Const]?\n   */\n\n  parseScalarTypeDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    this.expectKeyword('scalar');\n    const name = this.parseName();\n    const directives = this.parseConstDirectives();\n    return this.node(start, {\n      kind: _kinds.Kind.SCALAR_TYPE_DEFINITION,\n      description,\n      name,\n      directives,\n    });\n  }\n  /**\n   * ObjectTypeDefinition :\n   *   Description?\n   *   type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition?\n   */\n\n  parseObjectTypeDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    this.expectKeyword('type');\n    const name = this.parseName();\n    const interfaces = this.parseImplementsInterfaces();\n    const directives = this.parseConstDirectives();\n    const fields = this.parseFieldsDefinition();\n    return this.node(start, {\n      kind: _kinds.Kind.OBJECT_TYPE_DEFINITION,\n      description,\n      name,\n      interfaces,\n      directives,\n      fields,\n    });\n  }\n  /**\n   * ImplementsInterfaces :\n   *   - implements `&`? NamedType\n   *   - ImplementsInterfaces & NamedType\n   */\n\n  parseImplementsInterfaces() {\n    return this.expectOptionalKeyword('implements')\n      ? this.delimitedMany(_tokenKind.TokenKind.AMP, this.parseNamedType)\n      : [];\n  }\n  /**\n   * ```\n   * FieldsDefinition : { FieldDefinition+ }\n   * ```\n   */\n\n  parseFieldsDefinition() {\n    return this.optionalMany(\n      _tokenKind.TokenKind.BRACE_L,\n      this.parseFieldDefinition,\n      _tokenKind.TokenKind.BRACE_R,\n    );\n  }\n  /**\n   * FieldDefinition :\n   *   - Description? Name ArgumentsDefinition? : Type Directives[Const]?\n   */\n\n  parseFieldDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    const name = this.parseName();\n    const args = this.parseArgumentDefs();\n    this.expectToken(_tokenKind.TokenKind.COLON);\n    const type = this.parseTypeReference();\n    const directives = this.parseConstDirectives();\n    return this.node(start, {\n      kind: _kinds.Kind.FIELD_DEFINITION,\n      description,\n      name,\n      arguments: args,\n      type,\n      directives,\n    });\n  }\n  /**\n   * ArgumentsDefinition : ( InputValueDefinition+ )\n   */\n\n  parseArgumentDefs() {\n    return this.optionalMany(\n      _tokenKind.TokenKind.PAREN_L,\n      this.parseInputValueDef,\n      _tokenKind.TokenKind.PAREN_R,\n    );\n  }\n  /**\n   * InputValueDefinition :\n   *   - Description? Name : Type DefaultValue? Directives[Const]?\n   */\n\n  parseInputValueDef() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    const name = this.parseName();\n    this.expectToken(_tokenKind.TokenKind.COLON);\n    const type = this.parseTypeReference();\n    let defaultValue;\n\n    if (this.expectOptionalToken(_tokenKind.TokenKind.EQUALS)) {\n      defaultValue = this.parseConstValueLiteral();\n    }\n\n    const directives = this.parseConstDirectives();\n    return this.node(start, {\n      kind: _kinds.Kind.INPUT_VALUE_DEFINITION,\n      description,\n      name,\n      type,\n      defaultValue,\n      directives,\n    });\n  }\n  /**\n   * InterfaceTypeDefinition :\n   *   - Description? interface Name Directives[Const]? FieldsDefinition?\n   */\n\n  parseInterfaceTypeDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    this.expectKeyword('interface');\n    const name = this.parseName();\n    const interfaces = this.parseImplementsInterfaces();\n    const directives = this.parseConstDirectives();\n    const fields = this.parseFieldsDefinition();\n    return this.node(start, {\n      kind: _kinds.Kind.INTERFACE_TYPE_DEFINITION,\n      description,\n      name,\n      interfaces,\n      directives,\n      fields,\n    });\n  }\n  /**\n   * UnionTypeDefinition :\n   *   - Description? union Name Directives[Const]? UnionMemberTypes?\n   */\n\n  parseUnionTypeDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    this.expectKeyword('union');\n    const name = this.parseName();\n    const directives = this.parseConstDirectives();\n    const types = this.parseUnionMemberTypes();\n    return this.node(start, {\n      kind: _kinds.Kind.UNION_TYPE_DEFINITION,\n      description,\n      name,\n      directives,\n      types,\n    });\n  }\n  /**\n   * UnionMemberTypes :\n   *   - = `|`? NamedType\n   *   - UnionMemberTypes | NamedType\n   */\n\n  parseUnionMemberTypes() {\n    return this.expectOptionalToken(_tokenKind.TokenKind.EQUALS)\n      ? this.delimitedMany(_tokenKind.TokenKind.PIPE, this.parseNamedType)\n      : [];\n  }\n  /**\n   * EnumTypeDefinition :\n   *   - Description? enum Name Directives[Const]? EnumValuesDefinition?\n   */\n\n  parseEnumTypeDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    this.expectKeyword('enum');\n    const name = this.parseName();\n    const directives = this.parseConstDirectives();\n    const values = this.parseEnumValuesDefinition();\n    return this.node(start, {\n      kind: _kinds.Kind.ENUM_TYPE_DEFINITION,\n      description,\n      name,\n      directives,\n      values,\n    });\n  }\n  /**\n   * ```\n   * EnumValuesDefinition : { EnumValueDefinition+ }\n   * ```\n   */\n\n  parseEnumValuesDefinition() {\n    return this.optionalMany(\n      _tokenKind.TokenKind.BRACE_L,\n      this.parseEnumValueDefinition,\n      _tokenKind.TokenKind.BRACE_R,\n    );\n  }\n  /**\n   * EnumValueDefinition : Description? EnumValue Directives[Const]?\n   */\n\n  parseEnumValueDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    const name = this.parseEnumValueName();\n    const directives = this.parseConstDirectives();\n    return this.node(start, {\n      kind: _kinds.Kind.ENUM_VALUE_DEFINITION,\n      description,\n      name,\n      directives,\n    });\n  }\n  /**\n   * EnumValue : Name but not `true`, `false` or `null`\n   */\n\n  parseEnumValueName() {\n    if (\n      this._lexer.token.value === 'true' ||\n      this._lexer.token.value === 'false' ||\n      this._lexer.token.value === 'null'\n    ) {\n      throw (0, _syntaxError.syntaxError)(\n        this._lexer.source,\n        this._lexer.token.start,\n        `${getTokenDesc(\n          this._lexer.token,\n        )} is reserved and cannot be used for an enum value.`,\n      );\n    }\n\n    return this.parseName();\n  }\n  /**\n   * InputObjectTypeDefinition :\n   *   - Description? input Name Directives[Const]? InputFieldsDefinition?\n   */\n\n  parseInputObjectTypeDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    this.expectKeyword('input');\n    const name = this.parseName();\n    const directives = this.parseConstDirectives();\n    const fields = this.parseInputFieldsDefinition();\n    return this.node(start, {\n      kind: _kinds.Kind.INPUT_OBJECT_TYPE_DEFINITION,\n      description,\n      name,\n      directives,\n      fields,\n    });\n  }\n  /**\n   * ```\n   * InputFieldsDefinition : { InputValueDefinition+ }\n   * ```\n   */\n\n  parseInputFieldsDefinition() {\n    return this.optionalMany(\n      _tokenKind.TokenKind.BRACE_L,\n      this.parseInputValueDef,\n      _tokenKind.TokenKind.BRACE_R,\n    );\n  }\n  /**\n   * TypeSystemExtension :\n   *   - SchemaExtension\n   *   - TypeExtension\n   *\n   * TypeExtension :\n   *   - ScalarTypeExtension\n   *   - ObjectTypeExtension\n   *   - InterfaceTypeExtension\n   *   - UnionTypeExtension\n   *   - EnumTypeExtension\n   *   - InputObjectTypeDefinition\n   */\n\n  parseTypeSystemExtension() {\n    const keywordToken = this._lexer.lookahead();\n\n    if (keywordToken.kind === _tokenKind.TokenKind.NAME) {\n      switch (keywordToken.value) {\n        case 'schema':\n          return this.parseSchemaExtension();\n\n        case 'scalar':\n          return this.parseScalarTypeExtension();\n\n        case 'type':\n          return this.parseObjectTypeExtension();\n\n        case 'interface':\n          return this.parseInterfaceTypeExtension();\n\n        case 'union':\n          return this.parseUnionTypeExtension();\n\n        case 'enum':\n          return this.parseEnumTypeExtension();\n\n        case 'input':\n          return this.parseInputObjectTypeExtension();\n      }\n    }\n\n    throw this.unexpected(keywordToken);\n  }\n  /**\n   * ```\n   * SchemaExtension :\n   *  - extend schema Directives[Const]? { OperationTypeDefinition+ }\n   *  - extend schema Directives[Const]\n   * ```\n   */\n\n  parseSchemaExtension() {\n    const start = this._lexer.token;\n    this.expectKeyword('extend');\n    this.expectKeyword('schema');\n    const directives = this.parseConstDirectives();\n    const operationTypes = this.optionalMany(\n      _tokenKind.TokenKind.BRACE_L,\n      this.parseOperationTypeDefinition,\n      _tokenKind.TokenKind.BRACE_R,\n    );\n\n    if (directives.length === 0 && operationTypes.length === 0) {\n      throw this.unexpected();\n    }\n\n    return this.node(start, {\n      kind: _kinds.Kind.SCHEMA_EXTENSION,\n      directives,\n      operationTypes,\n    });\n  }\n  /**\n   * ScalarTypeExtension :\n   *   - extend scalar Name Directives[Const]\n   */\n\n  parseScalarTypeExtension() {\n    const start = this._lexer.token;\n    this.expectKeyword('extend');\n    this.expectKeyword('scalar');\n    const name = this.parseName();\n    const directives = this.parseConstDirectives();\n\n    if (directives.length === 0) {\n      throw this.unexpected();\n    }\n\n    return this.node(start, {\n      kind: _kinds.Kind.SCALAR_TYPE_EXTENSION,\n      name,\n      directives,\n    });\n  }\n  /**\n   * ObjectTypeExtension :\n   *  - extend type Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n   *  - extend type Name ImplementsInterfaces? Directives[Const]\n   *  - extend type Name ImplementsInterfaces\n   */\n\n  parseObjectTypeExtension() {\n    const start = this._lexer.token;\n    this.expectKeyword('extend');\n    this.expectKeyword('type');\n    const name = this.parseName();\n    const interfaces = this.parseImplementsInterfaces();\n    const directives = this.parseConstDirectives();\n    const fields = this.parseFieldsDefinition();\n\n    if (\n      interfaces.length === 0 &&\n      directives.length === 0 &&\n      fields.length === 0\n    ) {\n      throw this.unexpected();\n    }\n\n    return this.node(start, {\n      kind: _kinds.Kind.OBJECT_TYPE_EXTENSION,\n      name,\n      interfaces,\n      directives,\n      fields,\n    });\n  }\n  /**\n   * InterfaceTypeExtension :\n   *  - extend interface Name ImplementsInterfaces? Directives[Const]? FieldsDefinition\n   *  - extend interface Name ImplementsInterfaces? Directives[Const]\n   *  - extend interface Name ImplementsInterfaces\n   */\n\n  parseInterfaceTypeExtension() {\n    const start = this._lexer.token;\n    this.expectKeyword('extend');\n    this.expectKeyword('interface');\n    const name = this.parseName();\n    const interfaces = this.parseImplementsInterfaces();\n    const directives = this.parseConstDirectives();\n    const fields = this.parseFieldsDefinition();\n\n    if (\n      interfaces.length === 0 &&\n      directives.length === 0 &&\n      fields.length === 0\n    ) {\n      throw this.unexpected();\n    }\n\n    return this.node(start, {\n      kind: _kinds.Kind.INTERFACE_TYPE_EXTENSION,\n      name,\n      interfaces,\n      directives,\n      fields,\n    });\n  }\n  /**\n   * UnionTypeExtension :\n   *   - extend union Name Directives[Const]? UnionMemberTypes\n   *   - extend union Name Directives[Const]\n   */\n\n  parseUnionTypeExtension() {\n    const start = this._lexer.token;\n    this.expectKeyword('extend');\n    this.expectKeyword('union');\n    const name = this.parseName();\n    const directives = this.parseConstDirectives();\n    const types = this.parseUnionMemberTypes();\n\n    if (directives.length === 0 && types.length === 0) {\n      throw this.unexpected();\n    }\n\n    return this.node(start, {\n      kind: _kinds.Kind.UNION_TYPE_EXTENSION,\n      name,\n      directives,\n      types,\n    });\n  }\n  /**\n   * EnumTypeExtension :\n   *   - extend enum Name Directives[Const]? EnumValuesDefinition\n   *   - extend enum Name Directives[Const]\n   */\n\n  parseEnumTypeExtension() {\n    const start = this._lexer.token;\n    this.expectKeyword('extend');\n    this.expectKeyword('enum');\n    const name = this.parseName();\n    const directives = this.parseConstDirectives();\n    const values = this.parseEnumValuesDefinition();\n\n    if (directives.length === 0 && values.length === 0) {\n      throw this.unexpected();\n    }\n\n    return this.node(start, {\n      kind: _kinds.Kind.ENUM_TYPE_EXTENSION,\n      name,\n      directives,\n      values,\n    });\n  }\n  /**\n   * InputObjectTypeExtension :\n   *   - extend input Name Directives[Const]? InputFieldsDefinition\n   *   - extend input Name Directives[Const]\n   */\n\n  parseInputObjectTypeExtension() {\n    const start = this._lexer.token;\n    this.expectKeyword('extend');\n    this.expectKeyword('input');\n    const name = this.parseName();\n    const directives = this.parseConstDirectives();\n    const fields = this.parseInputFieldsDefinition();\n\n    if (directives.length === 0 && fields.length === 0) {\n      throw this.unexpected();\n    }\n\n    return this.node(start, {\n      kind: _kinds.Kind.INPUT_OBJECT_TYPE_EXTENSION,\n      name,\n      directives,\n      fields,\n    });\n  }\n  /**\n   * ```\n   * DirectiveDefinition :\n   *   - Description? directive @ Name ArgumentsDefinition? `repeatable`? on DirectiveLocations\n   * ```\n   */\n\n  parseDirectiveDefinition() {\n    const start = this._lexer.token;\n    const description = this.parseDescription();\n    this.expectKeyword('directive');\n    this.expectToken(_tokenKind.TokenKind.AT);\n    const name = this.parseName();\n    const args = this.parseArgumentDefs();\n    const repeatable = this.expectOptionalKeyword('repeatable');\n    this.expectKeyword('on');\n    const locations = this.parseDirectiveLocations();\n    return this.node(start, {\n      kind: _kinds.Kind.DIRECTIVE_DEFINITION,\n      description,\n      name,\n      arguments: args,\n      repeatable,\n      locations,\n    });\n  }\n  /**\n   * DirectiveLocations :\n   *   - `|`? DirectiveLocation\n   *   - DirectiveLocations | DirectiveLocation\n   */\n\n  parseDirectiveLocations() {\n    return this.delimitedMany(\n      _tokenKind.TokenKind.PIPE,\n      this.parseDirectiveLocation,\n    );\n  }\n  /*\n   * DirectiveLocation :\n   *   - ExecutableDirectiveLocation\n   *   - TypeSystemDirectiveLocation\n   *\n   * ExecutableDirectiveLocation : one of\n   *   `QUERY`\n   *   `MUTATION`\n   *   `SUBSCRIPTION`\n   *   `FIELD`\n   *   `FRAGMENT_DEFINITION`\n   *   `FRAGMENT_SPREAD`\n   *   `INLINE_FRAGMENT`\n   *\n   * TypeSystemDirectiveLocation : one of\n   *   `SCHEMA`\n   *   `SCALAR`\n   *   `OBJECT`\n   *   `FIELD_DEFINITION`\n   *   `ARGUMENT_DEFINITION`\n   *   `INTERFACE`\n   *   `UNION`\n   *   `ENUM`\n   *   `ENUM_VALUE`\n   *   `INPUT_OBJECT`\n   *   `INPUT_FIELD_DEFINITION`\n   */\n\n  parseDirectiveLocation() {\n    const start = this._lexer.token;\n    const name = this.parseName();\n\n    if (\n      Object.prototype.hasOwnProperty.call(\n        _directiveLocation.DirectiveLocation,\n        name.value,\n      )\n    ) {\n      return name;\n    }\n\n    throw this.unexpected(start);\n  } // Schema Coordinates\n\n  /**\n   * SchemaCoordinate :\n   *   - Name\n   *   - Name . Name\n   *   - Name . Name ( Name : )\n   *   - \\@ Name\n   *   - \\@ Name ( Name : )\n   */\n\n  parseSchemaCoordinate() {\n    const start = this._lexer.token;\n    const ofDirective = this.expectOptionalToken(_tokenKind.TokenKind.AT);\n    const name = this.parseName();\n    let memberName;\n\n    if (!ofDirective && this.expectOptionalToken(_tokenKind.TokenKind.DOT)) {\n      memberName = this.parseName();\n    }\n\n    let argumentName;\n\n    if (\n      (ofDirective || memberName) &&\n      this.expectOptionalToken(_tokenKind.TokenKind.PAREN_L)\n    ) {\n      argumentName = this.parseName();\n      this.expectToken(_tokenKind.TokenKind.COLON);\n      this.expectToken(_tokenKind.TokenKind.PAREN_R);\n    }\n\n    if (ofDirective) {\n      if (argumentName) {\n        return this.node(start, {\n          kind: _kinds.Kind.DIRECTIVE_ARGUMENT_COORDINATE,\n          name,\n          argumentName,\n        });\n      }\n\n      return this.node(start, {\n        kind: _kinds.Kind.DIRECTIVE_COORDINATE,\n        name,\n      });\n    } else if (memberName) {\n      if (argumentName) {\n        return this.node(start, {\n          kind: _kinds.Kind.ARGUMENT_COORDINATE,\n          name,\n          fieldName: memberName,\n          argumentName,\n        });\n      }\n\n      return this.node(start, {\n        kind: _kinds.Kind.MEMBER_COORDINATE,\n        name,\n        memberName,\n      });\n    }\n\n    return this.node(start, {\n      kind: _kinds.Kind.TYPE_COORDINATE,\n      name,\n    });\n  } // Core parsing utility functions\n\n  /**\n   * Returns a node that, if configured to do so, sets a \"loc\" field as a\n   * location object, used to identify the place in the source that created a\n   * given parsed object.\n   */\n\n  node(startToken, node) {\n    if (this._options.noLocation !== true) {\n      node.loc = new _ast.Location(\n        startToken,\n        this._lexer.lastToken,\n        this._lexer.source,\n      );\n    }\n\n    return node;\n  }\n  /**\n   * Determines if the next token is of a given kind\n   */\n\n  peek(kind) {\n    return this._lexer.token.kind === kind;\n  }\n  /**\n   * If the next token is of the given kind, return that token after advancing the lexer.\n   * Otherwise, do not change the parser state and throw an error.\n   */\n\n  expectToken(kind) {\n    const token = this._lexer.token;\n\n    if (token.kind === kind) {\n      this.advanceLexer();\n      return token;\n    }\n\n    throw (0, _syntaxError.syntaxError)(\n      this._lexer.source,\n      token.start,\n      `Expected ${getTokenKindDesc(kind)}, found ${getTokenDesc(token)}.`,\n    );\n  }\n  /**\n   * If the next token is of the given kind, return \"true\" after advancing the lexer.\n   * Otherwise, do not change the parser state and return \"false\".\n   */\n\n  expectOptionalToken(kind) {\n    const token = this._lexer.token;\n\n    if (token.kind === kind) {\n      this.advanceLexer();\n      return true;\n    }\n\n    return false;\n  }\n  /**\n   * If the next token is a given keyword, advance the lexer.\n   * Otherwise, do not change the parser state and throw an error.\n   */\n\n  expectKeyword(value) {\n    const token = this._lexer.token;\n\n    if (token.kind === _tokenKind.TokenKind.NAME && token.value === value) {\n      this.advanceLexer();\n    } else {\n      throw (0, _syntaxError.syntaxError)(\n        this._lexer.source,\n        token.start,\n        `Expected \"${value}\", found ${getTokenDesc(token)}.`,\n      );\n    }\n  }\n  /**\n   * If the next token is a given keyword, return \"true\" after advancing the lexer.\n   * Otherwise, do not change the parser state and return \"false\".\n   */\n\n  expectOptionalKeyword(value) {\n    const token = this._lexer.token;\n\n    if (token.kind === _tokenKind.TokenKind.NAME && token.value === value) {\n      this.advanceLexer();\n      return true;\n    }\n\n    return false;\n  }\n  /**\n   * Helper function for creating an error when an unexpected lexed token is encountered.\n   */\n\n  unexpected(atToken) {\n    const token =\n      atToken !== null && atToken !== void 0 ? atToken : this._lexer.token;\n    return (0, _syntaxError.syntaxError)(\n      this._lexer.source,\n      token.start,\n      `Unexpected ${getTokenDesc(token)}.`,\n    );\n  }\n  /**\n   * Returns a possibly empty list of parse nodes, determined by the parseFn.\n   * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n   * Advances the parser to the next lex token after the closing token.\n   */\n\n  any(openKind, parseFn, closeKind) {\n    this.expectToken(openKind);\n    const nodes = [];\n\n    while (!this.expectOptionalToken(closeKind)) {\n      nodes.push(parseFn.call(this));\n    }\n\n    return nodes;\n  }\n  /**\n   * Returns a list of parse nodes, determined by the parseFn.\n   * It can be empty only if open token is missing otherwise it will always return non-empty list\n   * that begins with a lex token of openKind and ends with a lex token of closeKind.\n   * Advances the parser to the next lex token after the closing token.\n   */\n\n  optionalMany(openKind, parseFn, closeKind) {\n    if (this.expectOptionalToken(openKind)) {\n      const nodes = [];\n\n      do {\n        nodes.push(parseFn.call(this));\n      } while (!this.expectOptionalToken(closeKind));\n\n      return nodes;\n    }\n\n    return [];\n  }\n  /**\n   * Returns a non-empty list of parse nodes, determined by the parseFn.\n   * This list begins with a lex token of openKind and ends with a lex token of closeKind.\n   * Advances the parser to the next lex token after the closing token.\n   */\n\n  many(openKind, parseFn, closeKind) {\n    this.expectToken(openKind);\n    const nodes = [];\n\n    do {\n      nodes.push(parseFn.call(this));\n    } while (!this.expectOptionalToken(closeKind));\n\n    return nodes;\n  }\n  /**\n   * Returns a non-empty list of parse nodes, determined by the parseFn.\n   * This list may begin with a lex token of delimiterKind followed by items separated by lex tokens of tokenKind.\n   * Advances the parser to the next lex token after last item in the list.\n   */\n\n  delimitedMany(delimiterKind, parseFn) {\n    this.expectOptionalToken(delimiterKind);\n    const nodes = [];\n\n    do {\n      nodes.push(parseFn.call(this));\n    } while (this.expectOptionalToken(delimiterKind));\n\n    return nodes;\n  }\n\n  advanceLexer() {\n    const { maxTokens } = this._options;\n\n    const token = this._lexer.advance();\n\n    if (token.kind !== _tokenKind.TokenKind.EOF) {\n      ++this._tokenCounter;\n\n      if (maxTokens !== undefined && this._tokenCounter > maxTokens) {\n        throw (0, _syntaxError.syntaxError)(\n          this._lexer.source,\n          token.start,\n          `Document contains more that ${maxTokens} tokens. Parsing aborted.`,\n        );\n      }\n    }\n  }\n}\n/**\n * A helper function to describe a token as a string for debugging.\n */\n\nexports.Parser = Parser;\n\nfunction getTokenDesc(token) {\n  const value = token.value;\n  return getTokenKindDesc(token.kind) + (value != null ? ` \"${value}\"` : '');\n}\n/**\n * A helper function to describe a token kind as a string for debugging.\n */\n\nfunction getTokenKindDesc(kind) {\n  return (0, _lexer.isPunctuatorTokenKind)(kind) ? `\"${kind}\"` : kind;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.didYouMean = didYouMean;\nconst MAX_SUGGESTIONS = 5;\n/**\n * Given [ A, B, C ] return ' Did you mean A, B, or C?'.\n */\n\nfunction didYouMean(firstArg, secondArg) {\n  const [subMessage, suggestionsArg] = secondArg\n    ? [firstArg, secondArg]\n    : [undefined, firstArg];\n  let message = ' Did you mean ';\n\n  if (subMessage) {\n    message += subMessage + ' ';\n  }\n\n  const suggestions = suggestionsArg.map((x) => `\"${x}\"`);\n\n  switch (suggestions.length) {\n    case 0:\n      return '';\n\n    case 1:\n      return message + suggestions[0] + '?';\n\n    case 2:\n      return message + suggestions[0] + ' or ' + suggestions[1] + '?';\n  }\n\n  const selected = suggestions.slice(0, MAX_SUGGESTIONS);\n  const lastItem = selected.pop();\n  return message + selected.join(', ') + ', or ' + lastItem + '?';\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.identityFunc = identityFunc;\n\n/**\n * Returns the first argument it receives.\n */\nfunction identityFunc(x) {\n  return x;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.keyMap = keyMap;\n\n/**\n * Creates a keyed JS object from an array, given a function to produce the keys\n * for each value in the array.\n *\n * This provides a convenient lookup for the array items if the key function\n * produces unique results.\n * ```ts\n * const phoneBook = [\n *   { name: 'Jon', num: '555-1234' },\n *   { name: 'Jenny', num: '867-5309' }\n * ]\n *\n * const entriesByName = keyMap(\n *   phoneBook,\n *   entry => entry.name\n * )\n *\n * // {\n * //   Jon: { name: 'Jon', num: '555-1234' },\n * //   Jenny: { name: 'Jenny', num: '867-5309' }\n * // }\n *\n * const jennyEntry = entriesByName['Jenny']\n *\n * // { name: 'Jenny', num: '857-6309' }\n * ```\n */\nfunction keyMap(list, keyFn) {\n  const result = Object.create(null);\n\n  for (const item of list) {\n    result[keyFn(item)] = item;\n  }\n\n  return result;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.keyValMap = keyValMap;\n\n/**\n * Creates a keyed JS object from an array, given a function to produce the keys\n * and a function to produce the values from each item in the array.\n * ```ts\n * const phoneBook = [\n *   { name: 'Jon', num: '555-1234' },\n *   { name: 'Jenny', num: '867-5309' }\n * ]\n *\n * // { Jon: '555-1234', Jenny: '867-5309' }\n * const phonesByName = keyValMap(\n *   phoneBook,\n *   entry => entry.name,\n *   entry => entry.num\n * )\n * ```\n */\nfunction keyValMap(list, keyFn, valFn) {\n  const result = Object.create(null);\n\n  for (const item of list) {\n    result[keyFn(item)] = valFn(item);\n  }\n\n  return result;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.mapValue = mapValue;\n\n/**\n * Creates an object map with the same keys as `map` and values generated by\n * running each value of `map` thru `fn`.\n */\nfunction mapValue(map, fn) {\n  const result = Object.create(null);\n\n  for (const key of Object.keys(map)) {\n    result[key] = fn(map[key], key);\n  }\n\n  return result;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.naturalCompare = naturalCompare;\n\n/**\n * Returns a number indicating whether a reference string comes before, or after,\n * or is the same as the given string in natural sort order.\n *\n * See: https://en.wikipedia.org/wiki/Natural_sort_order\n *\n */\nfunction naturalCompare(aStr, bStr) {\n  let aIndex = 0;\n  let bIndex = 0;\n\n  while (aIndex < aStr.length && bIndex < bStr.length) {\n    let aChar = aStr.charCodeAt(aIndex);\n    let bChar = bStr.charCodeAt(bIndex);\n\n    if (isDigit(aChar) && isDigit(bChar)) {\n      let aNum = 0;\n\n      do {\n        ++aIndex;\n        aNum = aNum * 10 + aChar - DIGIT_0;\n        aChar = aStr.charCodeAt(aIndex);\n      } while (isDigit(aChar) && aNum > 0);\n\n      let bNum = 0;\n\n      do {\n        ++bIndex;\n        bNum = bNum * 10 + bChar - DIGIT_0;\n        bChar = bStr.charCodeAt(bIndex);\n      } while (isDigit(bChar) && bNum > 0);\n\n      if (aNum < bNum) {\n        return -1;\n      }\n\n      if (aNum > bNum) {\n        return 1;\n      }\n    } else {\n      if (aChar < bChar) {\n        return -1;\n      }\n\n      if (aChar > bChar) {\n        return 1;\n      }\n\n      ++aIndex;\n      ++bIndex;\n    }\n  }\n\n  return aStr.length - bStr.length;\n}\n\nconst DIGIT_0 = 48;\nconst DIGIT_9 = 57;\n\nfunction isDigit(code) {\n  return !isNaN(code) && DIGIT_0 <= code && code <= DIGIT_9;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.suggestionList = suggestionList;\n\nvar _naturalCompare = require('./naturalCompare.js');\n\n/**\n * Given an invalid input string and a list of valid options, returns a filtered\n * list of valid options sorted based on their similarity with the input.\n */\nfunction suggestionList(input, options) {\n  const optionsByDistance = Object.create(null);\n  const lexicalDistance = new LexicalDistance(input);\n  const threshold = Math.floor(input.length * 0.4) + 1;\n\n  for (const option of options) {\n    const distance = lexicalDistance.measure(option, threshold);\n\n    if (distance !== undefined) {\n      optionsByDistance[option] = distance;\n    }\n  }\n\n  return Object.keys(optionsByDistance).sort((a, b) => {\n    const distanceDiff = optionsByDistance[a] - optionsByDistance[b];\n    return distanceDiff !== 0\n      ? distanceDiff\n      : (0, _naturalCompare.naturalCompare)(a, b);\n  });\n}\n/**\n * Computes the lexical distance between strings A and B.\n *\n * The \"distance\" between two strings is given by counting the minimum number\n * of edits needed to transform string A into string B. An edit can be an\n * insertion, deletion, or substitution of a single character, or a swap of two\n * adjacent characters.\n *\n * Includes a custom alteration from Damerau-Levenshtein to treat case changes\n * as a single edit which helps identify mis-cased values with an edit distance\n * of 1.\n *\n * This distance can be useful for detecting typos in input or sorting\n */\n\nclass LexicalDistance {\n  constructor(input) {\n    this._input = input;\n    this._inputLowerCase = input.toLowerCase();\n    this._inputArray = stringToArray(this._inputLowerCase);\n    this._rows = [\n      new Array(input.length + 1).fill(0),\n      new Array(input.length + 1).fill(0),\n      new Array(input.length + 1).fill(0),\n    ];\n  }\n\n  measure(option, threshold) {\n    if (this._input === option) {\n      return 0;\n    }\n\n    const optionLowerCase = option.toLowerCase(); // Any case change counts as a single edit\n\n    if (this._inputLowerCase === optionLowerCase) {\n      return 1;\n    }\n\n    let a = stringToArray(optionLowerCase);\n    let b = this._inputArray;\n\n    if (a.length < b.length) {\n      const tmp = a;\n      a = b;\n      b = tmp;\n    }\n\n    const aLength = a.length;\n    const bLength = b.length;\n\n    if (aLength - bLength > threshold) {\n      return undefined;\n    }\n\n    const rows = this._rows;\n\n    for (let j = 0; j <= bLength; j++) {\n      rows[0][j] = j;\n    }\n\n    for (let i = 1; i <= aLength; i++) {\n      const upRow = rows[(i - 1) % 3];\n      const currentRow = rows[i % 3];\n      let smallestCell = (currentRow[0] = i);\n\n      for (let j = 1; j <= bLength; j++) {\n        const cost = a[i - 1] === b[j - 1] ? 0 : 1;\n        let currentCell = Math.min(\n          upRow[j] + 1, // delete\n          currentRow[j - 1] + 1, // insert\n          upRow[j - 1] + cost, // substitute\n        );\n\n        if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) {\n          // transposition\n          const doubleDiagonalCell = rows[(i - 2) % 3][j - 2];\n          currentCell = Math.min(currentCell, doubleDiagonalCell + 1);\n        }\n\n        if (currentCell < smallestCell) {\n          smallestCell = currentCell;\n        }\n\n        currentRow[j] = currentCell;\n      } // Early exit, since distance can't go smaller than smallest element of the previous row.\n\n      if (smallestCell > threshold) {\n        return undefined;\n      }\n    }\n\n    const distance = rows[aLength % 3][bLength];\n    return distance <= threshold ? distance : undefined;\n  }\n}\n\nfunction stringToArray(str) {\n  const strLength = str.length;\n  const array = new Array(strLength);\n\n  for (let i = 0; i < strLength; ++i) {\n    array[i] = str.charCodeAt(i);\n  }\n\n  return array;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.toObjMap = toObjMap;\n\nfunction toObjMap(obj) {\n  if (obj == null) {\n    return Object.create(null);\n  }\n\n  if (Object.getPrototypeOf(obj) === null) {\n    return obj;\n  }\n\n  const map = Object.create(null);\n\n  for (const [key, value] of Object.entries(obj)) {\n    map[key] = value;\n  }\n\n  return map;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.printString = printString;\n\n/**\n * Prints a string as a GraphQL StringValue literal. Replaces control characters\n * and excluded characters (\" U+0022 and \\\\ U+005C) with escape sequences.\n */\nfunction printString(str) {\n  return `\"${str.replace(escapedRegExp, escapedReplacer)}\"`;\n} // eslint-disable-next-line no-control-regex\n\nconst escapedRegExp = /[\\x00-\\x1f\\x22\\x5c\\x7f-\\x9f]/g;\n\nfunction escapedReplacer(str) {\n  return escapeSequences[str.charCodeAt(0)];\n} // prettier-ignore\n\nconst escapeSequences = [\n  '\\\\u0000',\n  '\\\\u0001',\n  '\\\\u0002',\n  '\\\\u0003',\n  '\\\\u0004',\n  '\\\\u0005',\n  '\\\\u0006',\n  '\\\\u0007',\n  '\\\\b',\n  '\\\\t',\n  '\\\\n',\n  '\\\\u000B',\n  '\\\\f',\n  '\\\\r',\n  '\\\\u000E',\n  '\\\\u000F',\n  '\\\\u0010',\n  '\\\\u0011',\n  '\\\\u0012',\n  '\\\\u0013',\n  '\\\\u0014',\n  '\\\\u0015',\n  '\\\\u0016',\n  '\\\\u0017',\n  '\\\\u0018',\n  '\\\\u0019',\n  '\\\\u001A',\n  '\\\\u001B',\n  '\\\\u001C',\n  '\\\\u001D',\n  '\\\\u001E',\n  '\\\\u001F',\n  '',\n  '',\n  '\\\\\"',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '', // 2F\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '', // 3F\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '', // 4F\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '\\\\\\\\',\n  '',\n  '',\n  '', // 5F\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '', // 6F\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '',\n  '\\\\u007F',\n  '\\\\u0080',\n  '\\\\u0081',\n  '\\\\u0082',\n  '\\\\u0083',\n  '\\\\u0084',\n  '\\\\u0085',\n  '\\\\u0086',\n  '\\\\u0087',\n  '\\\\u0088',\n  '\\\\u0089',\n  '\\\\u008A',\n  '\\\\u008B',\n  '\\\\u008C',\n  '\\\\u008D',\n  '\\\\u008E',\n  '\\\\u008F',\n  '\\\\u0090',\n  '\\\\u0091',\n  '\\\\u0092',\n  '\\\\u0093',\n  '\\\\u0094',\n  '\\\\u0095',\n  '\\\\u0096',\n  '\\\\u0097',\n  '\\\\u0098',\n  '\\\\u0099',\n  '\\\\u009A',\n  '\\\\u009B',\n  '\\\\u009C',\n  '\\\\u009D',\n  '\\\\u009E',\n  '\\\\u009F',\n];\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.BREAK = void 0;\nexports.getEnterLeaveForKind = getEnterLeaveForKind;\nexports.getVisitFn = getVisitFn;\nexports.visit = visit;\nexports.visitInParallel = visitInParallel;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _ast = require('./ast.js');\n\nvar _kinds = require('./kinds.js');\n\nconst BREAK = Object.freeze({});\n/**\n * visit() will walk through an AST using a depth-first traversal, calling\n * the visitor's enter function at each node in the traversal, and calling the\n * leave function after visiting that node and all of its child nodes.\n *\n * By returning different values from the enter and leave functions, the\n * behavior of the visitor can be altered, including skipping over a sub-tree of\n * the AST (by returning false), editing the AST by returning a value or null\n * to remove the value, or to stop the whole traversal by returning BREAK.\n *\n * When using visit() to edit an AST, the original AST will not be modified, and\n * a new version of the AST with the changes applied will be returned from the\n * visit function.\n *\n * ```ts\n * const editedAST = visit(ast, {\n *   enter(node, key, parent, path, ancestors) {\n *     // @return\n *     //   undefined: no action\n *     //   false: skip visiting this node\n *     //   visitor.BREAK: stop visiting altogether\n *     //   null: delete this node\n *     //   any value: replace this node with the returned value\n *   },\n *   leave(node, key, parent, path, ancestors) {\n *     // @return\n *     //   undefined: no action\n *     //   false: no action\n *     //   visitor.BREAK: stop visiting altogether\n *     //   null: delete this node\n *     //   any value: replace this node with the returned value\n *   }\n * });\n * ```\n *\n * Alternatively to providing enter() and leave() functions, a visitor can\n * instead provide functions named the same as the kinds of AST nodes, or\n * enter/leave visitors at a named key, leading to three permutations of the\n * visitor API:\n *\n * 1) Named visitors triggered when entering a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n *   Kind(node) {\n *     // enter the \"Kind\" node\n *   }\n * })\n * ```\n *\n * 2) Named visitors that trigger upon entering and leaving a node of a specific kind.\n *\n * ```ts\n * visit(ast, {\n *   Kind: {\n *     enter(node) {\n *       // enter the \"Kind\" node\n *     }\n *     leave(node) {\n *       // leave the \"Kind\" node\n *     }\n *   }\n * })\n * ```\n *\n * 3) Generic visitors that trigger upon entering and leaving any node.\n *\n * ```ts\n * visit(ast, {\n *   enter(node) {\n *     // enter any node\n *   },\n *   leave(node) {\n *     // leave any node\n *   }\n * })\n * ```\n */\n\nexports.BREAK = BREAK;\n\nfunction visit(root, visitor, visitorKeys = _ast.QueryDocumentKeys) {\n  const enterLeaveMap = new Map();\n\n  for (const kind of Object.values(_kinds.Kind)) {\n    enterLeaveMap.set(kind, getEnterLeaveForKind(visitor, kind));\n  }\n  /* eslint-disable no-undef-init */\n\n  let stack = undefined;\n  let inArray = Array.isArray(root);\n  let keys = [root];\n  let index = -1;\n  let edits = [];\n  let node = root;\n  let key = undefined;\n  let parent = undefined;\n  const path = [];\n  const ancestors = [];\n  /* eslint-enable no-undef-init */\n\n  do {\n    index++;\n    const isLeaving = index === keys.length;\n    const isEdited = isLeaving && edits.length !== 0;\n\n    if (isLeaving) {\n      key = ancestors.length === 0 ? undefined : path[path.length - 1];\n      node = parent;\n      parent = ancestors.pop();\n\n      if (isEdited) {\n        if (inArray) {\n          node = node.slice();\n          let editOffset = 0;\n\n          for (const [editKey, editValue] of edits) {\n            const arrayKey = editKey - editOffset;\n\n            if (editValue === null) {\n              node.splice(arrayKey, 1);\n              editOffset++;\n            } else {\n              node[arrayKey] = editValue;\n            }\n          }\n        } else {\n          node = { ...node };\n\n          for (const [editKey, editValue] of edits) {\n            node[editKey] = editValue;\n          }\n        }\n      }\n\n      index = stack.index;\n      keys = stack.keys;\n      edits = stack.edits;\n      inArray = stack.inArray;\n      stack = stack.prev;\n    } else if (parent) {\n      key = inArray ? index : keys[index];\n      node = parent[key];\n\n      if (node === null || node === undefined) {\n        continue;\n      }\n\n      path.push(key);\n    }\n\n    let result;\n\n    if (!Array.isArray(node)) {\n      var _enterLeaveMap$get, _enterLeaveMap$get2;\n\n      (0, _ast.isNode)(node) ||\n        (0, _devAssert.devAssert)(\n          false,\n          `Invalid AST Node: ${(0, _inspect.inspect)(node)}.`,\n        );\n      const visitFn = isLeaving\n        ? (_enterLeaveMap$get = enterLeaveMap.get(node.kind)) === null ||\n          _enterLeaveMap$get === void 0\n          ? void 0\n          : _enterLeaveMap$get.leave\n        : (_enterLeaveMap$get2 = enterLeaveMap.get(node.kind)) === null ||\n          _enterLeaveMap$get2 === void 0\n        ? void 0\n        : _enterLeaveMap$get2.enter;\n      result =\n        visitFn === null || visitFn === void 0\n          ? void 0\n          : visitFn.call(visitor, node, key, parent, path, ancestors);\n\n      if (result === BREAK) {\n        break;\n      }\n\n      if (result === false) {\n        if (!isLeaving) {\n          path.pop();\n          continue;\n        }\n      } else if (result !== undefined) {\n        edits.push([key, result]);\n\n        if (!isLeaving) {\n          if ((0, _ast.isNode)(result)) {\n            node = result;\n          } else {\n            path.pop();\n            continue;\n          }\n        }\n      }\n    }\n\n    if (result === undefined && isEdited) {\n      edits.push([key, node]);\n    }\n\n    if (isLeaving) {\n      path.pop();\n    } else {\n      var _node$kind;\n\n      stack = {\n        inArray,\n        index,\n        keys,\n        edits,\n        prev: stack,\n      };\n      inArray = Array.isArray(node);\n      keys = inArray\n        ? node\n        : (_node$kind = visitorKeys[node.kind]) !== null &&\n          _node$kind !== void 0\n        ? _node$kind\n        : [];\n      index = -1;\n      edits = [];\n\n      if (parent) {\n        ancestors.push(parent);\n      }\n\n      parent = node;\n    }\n  } while (stack !== undefined);\n\n  if (edits.length !== 0) {\n    // New root\n    return edits[edits.length - 1][1];\n  }\n\n  return root;\n}\n/**\n * Creates a new visitor instance which delegates to many visitors to run in\n * parallel. Each visitor will be visited for each node before moving on.\n *\n * If a prior visitor edits a node, no following visitors will see that node.\n */\n\nfunction visitInParallel(visitors) {\n  const skipping = new Array(visitors.length).fill(null);\n  const mergedVisitor = Object.create(null);\n\n  for (const kind of Object.values(_kinds.Kind)) {\n    let hasVisitor = false;\n    const enterList = new Array(visitors.length).fill(undefined);\n    const leaveList = new Array(visitors.length).fill(undefined);\n\n    for (let i = 0; i < visitors.length; ++i) {\n      const { enter, leave } = getEnterLeaveForKind(visitors[i], kind);\n      hasVisitor || (hasVisitor = enter != null || leave != null);\n      enterList[i] = enter;\n      leaveList[i] = leave;\n    }\n\n    if (!hasVisitor) {\n      continue;\n    }\n\n    const mergedEnterLeave = {\n      enter(...args) {\n        const node = args[0];\n\n        for (let i = 0; i < visitors.length; i++) {\n          if (skipping[i] === null) {\n            var _enterList$i;\n\n            const result =\n              (_enterList$i = enterList[i]) === null || _enterList$i === void 0\n                ? void 0\n                : _enterList$i.apply(visitors[i], args);\n\n            if (result === false) {\n              skipping[i] = node;\n            } else if (result === BREAK) {\n              skipping[i] = BREAK;\n            } else if (result !== undefined) {\n              return result;\n            }\n          }\n        }\n      },\n\n      leave(...args) {\n        const node = args[0];\n\n        for (let i = 0; i < visitors.length; i++) {\n          if (skipping[i] === null) {\n            var _leaveList$i;\n\n            const result =\n              (_leaveList$i = leaveList[i]) === null || _leaveList$i === void 0\n                ? void 0\n                : _leaveList$i.apply(visitors[i], args);\n\n            if (result === BREAK) {\n              skipping[i] = BREAK;\n            } else if (result !== undefined && result !== false) {\n              return result;\n            }\n          } else if (skipping[i] === node) {\n            skipping[i] = null;\n          }\n        }\n      },\n    };\n    mergedVisitor[kind] = mergedEnterLeave;\n  }\n\n  return mergedVisitor;\n}\n/**\n * Given a visitor instance and a node kind, return EnterLeaveVisitor for that kind.\n */\n\nfunction getEnterLeaveForKind(visitor, kind) {\n  const kindVisitor = visitor[kind];\n\n  if (typeof kindVisitor === 'object') {\n    // { Kind: { enter() {}, leave() {} } }\n    return kindVisitor;\n  } else if (typeof kindVisitor === 'function') {\n    // { Kind() {} }\n    return {\n      enter: kindVisitor,\n      leave: undefined,\n    };\n  } // { enter() {}, leave() {} }\n\n  return {\n    enter: visitor.enter,\n    leave: visitor.leave,\n  };\n}\n/**\n * Given a visitor instance, if it is leaving or not, and a node kind, return\n * the function the visitor runtime should call.\n *\n * @deprecated Please use `getEnterLeaveForKind` instead. Will be removed in v17\n */\n\n/* c8 ignore next 8 */\n\nfunction getVisitFn(visitor, kind, isLeaving) {\n  const { enter, leave } = getEnterLeaveForKind(visitor, kind);\n  return isLeaving ? leave : enter;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.print = print;\n\nvar _blockString = require('./blockString.js');\n\nvar _printString = require('./printString.js');\n\nvar _visitor = require('./visitor.js');\n\n/**\n * Converts an AST into a string, using one set of reasonable\n * formatting rules.\n */\nfunction print(ast) {\n  return (0, _visitor.visit)(ast, printDocASTReducer);\n}\n\nconst MAX_LINE_LENGTH = 80;\nconst printDocASTReducer = {\n  Name: {\n    leave: (node) => node.value,\n  },\n  Variable: {\n    leave: (node) => '$' + node.name,\n  },\n  // Document\n  Document: {\n    leave: (node) => join(node.definitions, '\\n\\n'),\n  },\n  OperationDefinition: {\n    leave(node) {\n      const varDefs = hasMultilineItems(node.variableDefinitions)\n        ? wrap('(\\n', join(node.variableDefinitions, '\\n'), '\\n)')\n        : wrap('(', join(node.variableDefinitions, ', '), ')');\n      const prefix =\n        wrap('', node.description, '\\n') +\n        join(\n          [\n            node.operation,\n            join([node.name, varDefs]),\n            join(node.directives, ' '),\n          ],\n          ' ',\n        ); // Anonymous queries with no directives or variable definitions can use\n      // the query short form.\n\n      return (prefix === 'query' ? '' : prefix + ' ') + node.selectionSet;\n    },\n  },\n  VariableDefinition: {\n    leave: ({ variable, type, defaultValue, directives, description }) =>\n      wrap('', description, '\\n') +\n      variable +\n      ': ' +\n      type +\n      wrap(' = ', defaultValue) +\n      wrap(' ', join(directives, ' ')),\n  },\n  SelectionSet: {\n    leave: ({ selections }) => block(selections),\n  },\n  Field: {\n    leave({ alias, name, arguments: args, directives, selectionSet }) {\n      const prefix = wrap('', alias, ': ') + name;\n      let argsLine = prefix + wrap('(', join(args, ', '), ')');\n\n      if (argsLine.length > MAX_LINE_LENGTH) {\n        argsLine = prefix + wrap('(\\n', indent(join(args, '\\n')), '\\n)');\n      }\n\n      return join([argsLine, join(directives, ' '), selectionSet], ' ');\n    },\n  },\n  Argument: {\n    leave: ({ name, value }) => name + ': ' + value,\n  },\n  // Fragments\n  FragmentSpread: {\n    leave: ({ name, directives }) =>\n      '...' + name + wrap(' ', join(directives, ' ')),\n  },\n  InlineFragment: {\n    leave: ({ typeCondition, directives, selectionSet }) =>\n      join(\n        [\n          '...',\n          wrap('on ', typeCondition),\n          join(directives, ' '),\n          selectionSet,\n        ],\n        ' ',\n      ),\n  },\n  FragmentDefinition: {\n    leave: ({\n      name,\n      typeCondition,\n      variableDefinitions,\n      directives,\n      selectionSet,\n      description,\n    }) =>\n      wrap('', description, '\\n') + // Note: fragment variable definitions are experimental and may be changed\n      // or removed in the future.\n      `fragment ${name}${wrap('(', join(variableDefinitions, ', '), ')')} ` +\n      `on ${typeCondition} ${wrap('', join(directives, ' '), ' ')}` +\n      selectionSet,\n  },\n  // Value\n  IntValue: {\n    leave: ({ value }) => value,\n  },\n  FloatValue: {\n    leave: ({ value }) => value,\n  },\n  StringValue: {\n    leave: ({ value, block: isBlockString }) =>\n      isBlockString\n        ? (0, _blockString.printBlockString)(value)\n        : (0, _printString.printString)(value),\n  },\n  BooleanValue: {\n    leave: ({ value }) => (value ? 'true' : 'false'),\n  },\n  NullValue: {\n    leave: () => 'null',\n  },\n  EnumValue: {\n    leave: ({ value }) => value,\n  },\n  ListValue: {\n    leave: ({ values }) => '[' + join(values, ', ') + ']',\n  },\n  ObjectValue: {\n    leave: ({ fields }) => '{' + join(fields, ', ') + '}',\n  },\n  ObjectField: {\n    leave: ({ name, value }) => name + ': ' + value,\n  },\n  // Directive\n  Directive: {\n    leave: ({ name, arguments: args }) =>\n      '@' + name + wrap('(', join(args, ', '), ')'),\n  },\n  // Type\n  NamedType: {\n    leave: ({ name }) => name,\n  },\n  ListType: {\n    leave: ({ type }) => '[' + type + ']',\n  },\n  NonNullType: {\n    leave: ({ type }) => type + '!',\n  },\n  // Type System Definitions\n  SchemaDefinition: {\n    leave: ({ description, directives, operationTypes }) =>\n      wrap('', description, '\\n') +\n      join(['schema', join(directives, ' '), block(operationTypes)], ' '),\n  },\n  OperationTypeDefinition: {\n    leave: ({ operation, type }) => operation + ': ' + type,\n  },\n  ScalarTypeDefinition: {\n    leave: ({ description, name, directives }) =>\n      wrap('', description, '\\n') +\n      join(['scalar', name, join(directives, ' ')], ' '),\n  },\n  ObjectTypeDefinition: {\n    leave: ({ description, name, interfaces, directives, fields }) =>\n      wrap('', description, '\\n') +\n      join(\n        [\n          'type',\n          name,\n          wrap('implements ', join(interfaces, ' & ')),\n          join(directives, ' '),\n          block(fields),\n        ],\n        ' ',\n      ),\n  },\n  FieldDefinition: {\n    leave: ({ description, name, arguments: args, type, directives }) =>\n      wrap('', description, '\\n') +\n      name +\n      (hasMultilineItems(args)\n        ? wrap('(\\n', indent(join(args, '\\n')), '\\n)')\n        : wrap('(', join(args, ', '), ')')) +\n      ': ' +\n      type +\n      wrap(' ', join(directives, ' ')),\n  },\n  InputValueDefinition: {\n    leave: ({ description, name, type, defaultValue, directives }) =>\n      wrap('', description, '\\n') +\n      join(\n        [name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')],\n        ' ',\n      ),\n  },\n  InterfaceTypeDefinition: {\n    leave: ({ description, name, interfaces, directives, fields }) =>\n      wrap('', description, '\\n') +\n      join(\n        [\n          'interface',\n          name,\n          wrap('implements ', join(interfaces, ' & ')),\n          join(directives, ' '),\n          block(fields),\n        ],\n        ' ',\n      ),\n  },\n  UnionTypeDefinition: {\n    leave: ({ description, name, directives, types }) =>\n      wrap('', description, '\\n') +\n      join(\n        ['union', name, join(directives, ' '), wrap('= ', join(types, ' | '))],\n        ' ',\n      ),\n  },\n  EnumTypeDefinition: {\n    leave: ({ description, name, directives, values }) =>\n      wrap('', description, '\\n') +\n      join(['enum', name, join(directives, ' '), block(values)], ' '),\n  },\n  EnumValueDefinition: {\n    leave: ({ description, name, directives }) =>\n      wrap('', description, '\\n') + join([name, join(directives, ' ')], ' '),\n  },\n  InputObjectTypeDefinition: {\n    leave: ({ description, name, directives, fields }) =>\n      wrap('', description, '\\n') +\n      join(['input', name, join(directives, ' '), block(fields)], ' '),\n  },\n  DirectiveDefinition: {\n    leave: ({ description, name, arguments: args, repeatable, locations }) =>\n      wrap('', description, '\\n') +\n      'directive @' +\n      name +\n      (hasMultilineItems(args)\n        ? wrap('(\\n', indent(join(args, '\\n')), '\\n)')\n        : wrap('(', join(args, ', '), ')')) +\n      (repeatable ? ' repeatable' : '') +\n      ' on ' +\n      join(locations, ' | '),\n  },\n  SchemaExtension: {\n    leave: ({ directives, operationTypes }) =>\n      join(\n        ['extend schema', join(directives, ' '), block(operationTypes)],\n        ' ',\n      ),\n  },\n  ScalarTypeExtension: {\n    leave: ({ name, directives }) =>\n      join(['extend scalar', name, join(directives, ' ')], ' '),\n  },\n  ObjectTypeExtension: {\n    leave: ({ name, interfaces, directives, fields }) =>\n      join(\n        [\n          'extend type',\n          name,\n          wrap('implements ', join(interfaces, ' & ')),\n          join(directives, ' '),\n          block(fields),\n        ],\n        ' ',\n      ),\n  },\n  InterfaceTypeExtension: {\n    leave: ({ name, interfaces, directives, fields }) =>\n      join(\n        [\n          'extend interface',\n          name,\n          wrap('implements ', join(interfaces, ' & ')),\n          join(directives, ' '),\n          block(fields),\n        ],\n        ' ',\n      ),\n  },\n  UnionTypeExtension: {\n    leave: ({ name, directives, types }) =>\n      join(\n        [\n          'extend union',\n          name,\n          join(directives, ' '),\n          wrap('= ', join(types, ' | ')),\n        ],\n        ' ',\n      ),\n  },\n  EnumTypeExtension: {\n    leave: ({ name, directives, values }) =>\n      join(['extend enum', name, join(directives, ' '), block(values)], ' '),\n  },\n  InputObjectTypeExtension: {\n    leave: ({ name, directives, fields }) =>\n      join(['extend input', name, join(directives, ' '), block(fields)], ' '),\n  },\n  // Schema Coordinates\n  TypeCoordinate: {\n    leave: ({ name }) => name,\n  },\n  MemberCoordinate: {\n    leave: ({ name, memberName }) => join([name, wrap('.', memberName)]),\n  },\n  ArgumentCoordinate: {\n    leave: ({ name, fieldName, argumentName }) =>\n      join([name, wrap('.', fieldName), wrap('(', argumentName, ':)')]),\n  },\n  DirectiveCoordinate: {\n    leave: ({ name }) => join(['@', name]),\n  },\n  DirectiveArgumentCoordinate: {\n    leave: ({ name, argumentName }) =>\n      join(['@', name, wrap('(', argumentName, ':)')]),\n  },\n};\n/**\n * Given maybeArray, print an empty string if it is null or empty, otherwise\n * print all items together separated by separator if provided\n */\n\nfunction join(maybeArray, separator = '') {\n  var _maybeArray$filter$jo;\n\n  return (_maybeArray$filter$jo =\n    maybeArray === null || maybeArray === void 0\n      ? void 0\n      : maybeArray.filter((x) => x).join(separator)) !== null &&\n    _maybeArray$filter$jo !== void 0\n    ? _maybeArray$filter$jo\n    : '';\n}\n/**\n * Given array, print each item on its own line, wrapped in an indented `{ }` block.\n */\n\nfunction block(array) {\n  return wrap('{\\n', indent(join(array, '\\n')), '\\n}');\n}\n/**\n * If maybeString is not null or empty, then wrap with start and end, otherwise print an empty string.\n */\n\nfunction wrap(start, maybeString, end = '') {\n  return maybeString != null && maybeString !== ''\n    ? start + maybeString + end\n    : '';\n}\n\nfunction indent(str) {\n  return wrap('  ', str.replace(/\\n/g, '\\n  '));\n}\n\nfunction hasMultilineItems(maybeArray) {\n  var _maybeArray$some;\n\n  // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n  /* c8 ignore next */\n  return (_maybeArray$some =\n    maybeArray === null || maybeArray === void 0\n      ? void 0\n      : maybeArray.some((str) => str.includes('\\n'))) !== null &&\n    _maybeArray$some !== void 0\n    ? _maybeArray$some\n    : false;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.valueFromASTUntyped = valueFromASTUntyped;\n\nvar _keyValMap = require('../jsutils/keyValMap.js');\n\nvar _kinds = require('../language/kinds.js');\n\n/**\n * Produces a JavaScript value given a GraphQL Value AST.\n *\n * Unlike `valueFromAST()`, no type is provided. The resulting JavaScript value\n * will reflect the provided GraphQL value AST.\n *\n * | GraphQL Value        | JavaScript Value |\n * | -------------------- | ---------------- |\n * | Input Object         | Object           |\n * | List                 | Array            |\n * | Boolean              | Boolean          |\n * | String / Enum        | String           |\n * | Int / Float          | Number           |\n * | Null                 | null             |\n *\n */\nfunction valueFromASTUntyped(valueNode, variables) {\n  switch (valueNode.kind) {\n    case _kinds.Kind.NULL:\n      return null;\n\n    case _kinds.Kind.INT:\n      return parseInt(valueNode.value, 10);\n\n    case _kinds.Kind.FLOAT:\n      return parseFloat(valueNode.value);\n\n    case _kinds.Kind.STRING:\n    case _kinds.Kind.ENUM:\n    case _kinds.Kind.BOOLEAN:\n      return valueNode.value;\n\n    case _kinds.Kind.LIST:\n      return valueNode.values.map((node) =>\n        valueFromASTUntyped(node, variables),\n      );\n\n    case _kinds.Kind.OBJECT:\n      return (0, _keyValMap.keyValMap)(\n        valueNode.fields,\n        (field) => field.name.value,\n        (field) => valueFromASTUntyped(field.value, variables),\n      );\n\n    case _kinds.Kind.VARIABLE:\n      return variables === null || variables === void 0\n        ? void 0\n        : variables[valueNode.name.value];\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.assertEnumValueName = assertEnumValueName;\nexports.assertName = assertName;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _GraphQLError = require('../error/GraphQLError.js');\n\nvar _characterClasses = require('../language/characterClasses.js');\n\n/**\n * Upholds the spec rules about naming.\n */\nfunction assertName(name) {\n  name != null || (0, _devAssert.devAssert)(false, 'Must provide name.');\n  typeof name === 'string' ||\n    (0, _devAssert.devAssert)(false, 'Expected name to be a string.');\n\n  if (name.length === 0) {\n    throw new _GraphQLError.GraphQLError(\n      'Expected name to be a non-empty string.',\n    );\n  }\n\n  for (let i = 1; i < name.length; ++i) {\n    if (!(0, _characterClasses.isNameContinue)(name.charCodeAt(i))) {\n      throw new _GraphQLError.GraphQLError(\n        `Names must only contain [_a-zA-Z0-9] but \"${name}\" does not.`,\n      );\n    }\n  }\n\n  if (!(0, _characterClasses.isNameStart)(name.charCodeAt(0))) {\n    throw new _GraphQLError.GraphQLError(\n      `Names must start with [_a-zA-Z] but \"${name}\" does not.`,\n    );\n  }\n\n  return name;\n}\n/**\n * Upholds the spec rules about naming enum values.\n *\n * @internal\n */\n\nfunction assertEnumValueName(name) {\n  if (name === 'true' || name === 'false' || name === 'null') {\n    throw new _GraphQLError.GraphQLError(\n      `Enum values cannot be named: ${name}`,\n    );\n  }\n\n  return assertName(name);\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.GraphQLUnionType =\n  exports.GraphQLScalarType =\n  exports.GraphQLObjectType =\n  exports.GraphQLNonNull =\n  exports.GraphQLList =\n  exports.GraphQLInterfaceType =\n  exports.GraphQLInputObjectType =\n  exports.GraphQLEnumType =\n    void 0;\nexports.argsToArgsConfig = argsToArgsConfig;\nexports.assertAbstractType = assertAbstractType;\nexports.assertCompositeType = assertCompositeType;\nexports.assertEnumType = assertEnumType;\nexports.assertInputObjectType = assertInputObjectType;\nexports.assertInputType = assertInputType;\nexports.assertInterfaceType = assertInterfaceType;\nexports.assertLeafType = assertLeafType;\nexports.assertListType = assertListType;\nexports.assertNamedType = assertNamedType;\nexports.assertNonNullType = assertNonNullType;\nexports.assertNullableType = assertNullableType;\nexports.assertObjectType = assertObjectType;\nexports.assertOutputType = assertOutputType;\nexports.assertScalarType = assertScalarType;\nexports.assertType = assertType;\nexports.assertUnionType = assertUnionType;\nexports.assertWrappingType = assertWrappingType;\nexports.defineArguments = defineArguments;\nexports.getNamedType = getNamedType;\nexports.getNullableType = getNullableType;\nexports.isAbstractType = isAbstractType;\nexports.isCompositeType = isCompositeType;\nexports.isEnumType = isEnumType;\nexports.isInputObjectType = isInputObjectType;\nexports.isInputType = isInputType;\nexports.isInterfaceType = isInterfaceType;\nexports.isLeafType = isLeafType;\nexports.isListType = isListType;\nexports.isNamedType = isNamedType;\nexports.isNonNullType = isNonNullType;\nexports.isNullableType = isNullableType;\nexports.isObjectType = isObjectType;\nexports.isOutputType = isOutputType;\nexports.isRequiredArgument = isRequiredArgument;\nexports.isRequiredInputField = isRequiredInputField;\nexports.isScalarType = isScalarType;\nexports.isType = isType;\nexports.isUnionType = isUnionType;\nexports.isWrappingType = isWrappingType;\nexports.resolveObjMapThunk = resolveObjMapThunk;\nexports.resolveReadonlyArrayThunk = resolveReadonlyArrayThunk;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _didYouMean = require('../jsutils/didYouMean.js');\n\nvar _identityFunc = require('../jsutils/identityFunc.js');\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _instanceOf = require('../jsutils/instanceOf.js');\n\nvar _isObjectLike = require('../jsutils/isObjectLike.js');\n\nvar _keyMap = require('../jsutils/keyMap.js');\n\nvar _keyValMap = require('../jsutils/keyValMap.js');\n\nvar _mapValue = require('../jsutils/mapValue.js');\n\nvar _suggestionList = require('../jsutils/suggestionList.js');\n\nvar _toObjMap = require('../jsutils/toObjMap.js');\n\nvar _GraphQLError = require('../error/GraphQLError.js');\n\nvar _kinds = require('../language/kinds.js');\n\nvar _printer = require('../language/printer.js');\n\nvar _valueFromASTUntyped = require('../utilities/valueFromASTUntyped.js');\n\nvar _assertName = require('./assertName.js');\n\nfunction isType(type) {\n  return (\n    isScalarType(type) ||\n    isObjectType(type) ||\n    isInterfaceType(type) ||\n    isUnionType(type) ||\n    isEnumType(type) ||\n    isInputObjectType(type) ||\n    isListType(type) ||\n    isNonNullType(type)\n  );\n}\n\nfunction assertType(type) {\n  if (!isType(type)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL type.`,\n    );\n  }\n\n  return type;\n}\n/**\n * There are predicates for each kind of GraphQL type.\n */\n\nfunction isScalarType(type) {\n  return (0, _instanceOf.instanceOf)(type, GraphQLScalarType);\n}\n\nfunction assertScalarType(type) {\n  if (!isScalarType(type)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL Scalar type.`,\n    );\n  }\n\n  return type;\n}\n\nfunction isObjectType(type) {\n  return (0, _instanceOf.instanceOf)(type, GraphQLObjectType);\n}\n\nfunction assertObjectType(type) {\n  if (!isObjectType(type)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL Object type.`,\n    );\n  }\n\n  return type;\n}\n\nfunction isInterfaceType(type) {\n  return (0, _instanceOf.instanceOf)(type, GraphQLInterfaceType);\n}\n\nfunction assertInterfaceType(type) {\n  if (!isInterfaceType(type)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL Interface type.`,\n    );\n  }\n\n  return type;\n}\n\nfunction isUnionType(type) {\n  return (0, _instanceOf.instanceOf)(type, GraphQLUnionType);\n}\n\nfunction assertUnionType(type) {\n  if (!isUnionType(type)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL Union type.`,\n    );\n  }\n\n  return type;\n}\n\nfunction isEnumType(type) {\n  return (0, _instanceOf.instanceOf)(type, GraphQLEnumType);\n}\n\nfunction assertEnumType(type) {\n  if (!isEnumType(type)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL Enum type.`,\n    );\n  }\n\n  return type;\n}\n\nfunction isInputObjectType(type) {\n  return (0, _instanceOf.instanceOf)(type, GraphQLInputObjectType);\n}\n\nfunction assertInputObjectType(type) {\n  if (!isInputObjectType(type)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(\n        type,\n      )} to be a GraphQL Input Object type.`,\n    );\n  }\n\n  return type;\n}\n\nfunction isListType(type) {\n  return (0, _instanceOf.instanceOf)(type, GraphQLList);\n}\n\nfunction assertListType(type) {\n  if (!isListType(type)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL List type.`,\n    );\n  }\n\n  return type;\n}\n\nfunction isNonNullType(type) {\n  return (0, _instanceOf.instanceOf)(type, GraphQLNonNull);\n}\n\nfunction assertNonNullType(type) {\n  if (!isNonNullType(type)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL Non-Null type.`,\n    );\n  }\n\n  return type;\n}\n/**\n * These types may be used as input types for arguments and directives.\n */\n\nfunction isInputType(type) {\n  return (\n    isScalarType(type) ||\n    isEnumType(type) ||\n    isInputObjectType(type) ||\n    (isWrappingType(type) && isInputType(type.ofType))\n  );\n}\n\nfunction assertInputType(type) {\n  if (!isInputType(type)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL input type.`,\n    );\n  }\n\n  return type;\n}\n/**\n * These types may be used as output types as the result of fields.\n */\n\nfunction isOutputType(type) {\n  return (\n    isScalarType(type) ||\n    isObjectType(type) ||\n    isInterfaceType(type) ||\n    isUnionType(type) ||\n    isEnumType(type) ||\n    (isWrappingType(type) && isOutputType(type.ofType))\n  );\n}\n\nfunction assertOutputType(type) {\n  if (!isOutputType(type)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL output type.`,\n    );\n  }\n\n  return type;\n}\n/**\n * These types may describe types which may be leaf values.\n */\n\nfunction isLeafType(type) {\n  return isScalarType(type) || isEnumType(type);\n}\n\nfunction assertLeafType(type) {\n  if (!isLeafType(type)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL leaf type.`,\n    );\n  }\n\n  return type;\n}\n/**\n * These types may describe the parent context of a selection set.\n */\n\nfunction isCompositeType(type) {\n  return isObjectType(type) || isInterfaceType(type) || isUnionType(type);\n}\n\nfunction assertCompositeType(type) {\n  if (!isCompositeType(type)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL composite type.`,\n    );\n  }\n\n  return type;\n}\n/**\n * These types may describe the parent context of a selection set.\n */\n\nfunction isAbstractType(type) {\n  return isInterfaceType(type) || isUnionType(type);\n}\n\nfunction assertAbstractType(type) {\n  if (!isAbstractType(type)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL abstract type.`,\n    );\n  }\n\n  return type;\n}\n/**\n * List Type Wrapper\n *\n * A list is a wrapping type which points to another type.\n * Lists are often created within the context of defining the fields of\n * an object type.\n *\n * Example:\n *\n * ```ts\n * const PersonType = new GraphQLObjectType({\n *   name: 'Person',\n *   fields: () => ({\n *     parents: { type: new GraphQLList(PersonType) },\n *     children: { type: new GraphQLList(PersonType) },\n *   })\n * })\n * ```\n */\n\nclass GraphQLList {\n  constructor(ofType) {\n    isType(ofType) ||\n      (0, _devAssert.devAssert)(\n        false,\n        `Expected ${(0, _inspect.inspect)(ofType)} to be a GraphQL type.`,\n      );\n    this.ofType = ofType;\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'GraphQLList';\n  }\n\n  toString() {\n    return '[' + String(this.ofType) + ']';\n  }\n\n  toJSON() {\n    return this.toString();\n  }\n}\n/**\n * Non-Null Type Wrapper\n *\n * A non-null is a wrapping type which points to another type.\n * Non-null types enforce that their values are never null and can ensure\n * an error is raised if this ever occurs during a request. It is useful for\n * fields which you can make a strong guarantee on non-nullability, for example\n * usually the id field of a database row will never be null.\n *\n * Example:\n *\n * ```ts\n * const RowType = new GraphQLObjectType({\n *   name: 'Row',\n *   fields: () => ({\n *     id: { type: new GraphQLNonNull(GraphQLString) },\n *   })\n * })\n * ```\n * Note: the enforcement of non-nullability occurs within the executor.\n */\n\nexports.GraphQLList = GraphQLList;\n\nclass GraphQLNonNull {\n  constructor(ofType) {\n    isNullableType(ofType) ||\n      (0, _devAssert.devAssert)(\n        false,\n        `Expected ${(0, _inspect.inspect)(\n          ofType,\n        )} to be a GraphQL nullable type.`,\n      );\n    this.ofType = ofType;\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'GraphQLNonNull';\n  }\n\n  toString() {\n    return String(this.ofType) + '!';\n  }\n\n  toJSON() {\n    return this.toString();\n  }\n}\n/**\n * These types wrap and modify other types\n */\n\nexports.GraphQLNonNull = GraphQLNonNull;\n\nfunction isWrappingType(type) {\n  return isListType(type) || isNonNullType(type);\n}\n\nfunction assertWrappingType(type) {\n  if (!isWrappingType(type)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL wrapping type.`,\n    );\n  }\n\n  return type;\n}\n/**\n * These types can all accept null as a value.\n */\n\nfunction isNullableType(type) {\n  return isType(type) && !isNonNullType(type);\n}\n\nfunction assertNullableType(type) {\n  if (!isNullableType(type)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL nullable type.`,\n    );\n  }\n\n  return type;\n}\n\nfunction getNullableType(type) {\n  if (type) {\n    return isNonNullType(type) ? type.ofType : type;\n  }\n}\n/**\n * These named types do not include modifiers like List or NonNull.\n */\n\nfunction isNamedType(type) {\n  return (\n    isScalarType(type) ||\n    isObjectType(type) ||\n    isInterfaceType(type) ||\n    isUnionType(type) ||\n    isEnumType(type) ||\n    isInputObjectType(type)\n  );\n}\n\nfunction assertNamedType(type) {\n  if (!isNamedType(type)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(type)} to be a GraphQL named type.`,\n    );\n  }\n\n  return type;\n}\n\nfunction getNamedType(type) {\n  if (type) {\n    let unwrappedType = type;\n\n    while (isWrappingType(unwrappedType)) {\n      unwrappedType = unwrappedType.ofType;\n    }\n\n    return unwrappedType;\n  }\n}\n/**\n * Used while defining GraphQL types to allow for circular references in\n * otherwise immutable type definitions.\n */\n\nfunction resolveReadonlyArrayThunk(thunk) {\n  return typeof thunk === 'function' ? thunk() : thunk;\n}\n\nfunction resolveObjMapThunk(thunk) {\n  return typeof thunk === 'function' ? thunk() : thunk;\n}\n/**\n * Custom extensions\n *\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\n\n/**\n * Scalar Type Definition\n *\n * The leaf values of any request and input values to arguments are\n * Scalars (or Enums) and are defined with a name and a series of functions\n * used to parse input from ast or variables and to ensure validity.\n *\n * If a type's serialize function returns `null` or does not return a value\n * (i.e. it returns `undefined`) then an error will be raised and a `null`\n * value will be returned in the response. It is always better to validate\n *\n * Example:\n *\n * ```ts\n * const OddType = new GraphQLScalarType({\n *   name: 'Odd',\n *   serialize(value) {\n *     if (!Number.isFinite(value)) {\n *       throw new Error(\n *         `Scalar \"Odd\" cannot represent \"${value}\" since it is not a finite number.`,\n *       );\n *     }\n *\n *     if (value % 2 === 0) {\n *       throw new Error(`Scalar \"Odd\" cannot represent \"${value}\" since it is even.`);\n *     }\n *     return value;\n *   }\n * });\n * ```\n */\nclass GraphQLScalarType {\n  constructor(config) {\n    var _config$parseValue,\n      _config$serialize,\n      _config$parseLiteral,\n      _config$extensionASTN;\n\n    const parseValue =\n      (_config$parseValue = config.parseValue) !== null &&\n      _config$parseValue !== void 0\n        ? _config$parseValue\n        : _identityFunc.identityFunc;\n    this.name = (0, _assertName.assertName)(config.name);\n    this.description = config.description;\n    this.specifiedByURL = config.specifiedByURL;\n    this.serialize =\n      (_config$serialize = config.serialize) !== null &&\n      _config$serialize !== void 0\n        ? _config$serialize\n        : _identityFunc.identityFunc;\n    this.parseValue = parseValue;\n    this.parseLiteral =\n      (_config$parseLiteral = config.parseLiteral) !== null &&\n      _config$parseLiteral !== void 0\n        ? _config$parseLiteral\n        : (node, variables) =>\n            parseValue(\n              (0, _valueFromASTUntyped.valueFromASTUntyped)(node, variables),\n            );\n    this.extensions = (0, _toObjMap.toObjMap)(config.extensions);\n    this.astNode = config.astNode;\n    this.extensionASTNodes =\n      (_config$extensionASTN = config.extensionASTNodes) !== null &&\n      _config$extensionASTN !== void 0\n        ? _config$extensionASTN\n        : [];\n    config.specifiedByURL == null ||\n      typeof config.specifiedByURL === 'string' ||\n      (0, _devAssert.devAssert)(\n        false,\n        `${this.name} must provide \"specifiedByURL\" as a string, ` +\n          `but got: ${(0, _inspect.inspect)(config.specifiedByURL)}.`,\n      );\n    config.serialize == null ||\n      typeof config.serialize === 'function' ||\n      (0, _devAssert.devAssert)(\n        false,\n        `${this.name} must provide \"serialize\" function. If this custom Scalar is also used as an input type, ensure \"parseValue\" and \"parseLiteral\" functions are also provided.`,\n      );\n\n    if (config.parseLiteral) {\n      (typeof config.parseValue === 'function' &&\n        typeof config.parseLiteral === 'function') ||\n        (0, _devAssert.devAssert)(\n          false,\n          `${this.name} must provide both \"parseValue\" and \"parseLiteral\" functions.`,\n        );\n    }\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'GraphQLScalarType';\n  }\n\n  toConfig() {\n    return {\n      name: this.name,\n      description: this.description,\n      specifiedByURL: this.specifiedByURL,\n      serialize: this.serialize,\n      parseValue: this.parseValue,\n      parseLiteral: this.parseLiteral,\n      extensions: this.extensions,\n      astNode: this.astNode,\n      extensionASTNodes: this.extensionASTNodes,\n    };\n  }\n\n  toString() {\n    return this.name;\n  }\n\n  toJSON() {\n    return this.toString();\n  }\n}\n\nexports.GraphQLScalarType = GraphQLScalarType;\n\n/**\n * Object Type Definition\n *\n * Almost all of the GraphQL types you define will be object types. Object types\n * have a name, but most importantly describe their fields.\n *\n * Example:\n *\n * ```ts\n * const AddressType = new GraphQLObjectType({\n *   name: 'Address',\n *   fields: {\n *     street: { type: GraphQLString },\n *     number: { type: GraphQLInt },\n *     formatted: {\n *       type: GraphQLString,\n *       resolve(obj) {\n *         return obj.number + ' ' + obj.street\n *       }\n *     }\n *   }\n * });\n * ```\n *\n * When two types need to refer to each other, or a type needs to refer to\n * itself in a field, you can use a function expression (aka a closure or a\n * thunk) to supply the fields lazily.\n *\n * Example:\n *\n * ```ts\n * const PersonType = new GraphQLObjectType({\n *   name: 'Person',\n *   fields: () => ({\n *     name: { type: GraphQLString },\n *     bestFriend: { type: PersonType },\n *   })\n * });\n * ```\n */\nclass GraphQLObjectType {\n  constructor(config) {\n    var _config$extensionASTN2;\n\n    this.name = (0, _assertName.assertName)(config.name);\n    this.description = config.description;\n    this.isTypeOf = config.isTypeOf;\n    this.extensions = (0, _toObjMap.toObjMap)(config.extensions);\n    this.astNode = config.astNode;\n    this.extensionASTNodes =\n      (_config$extensionASTN2 = config.extensionASTNodes) !== null &&\n      _config$extensionASTN2 !== void 0\n        ? _config$extensionASTN2\n        : [];\n\n    this._fields = () => defineFieldMap(config);\n\n    this._interfaces = () => defineInterfaces(config);\n\n    config.isTypeOf == null ||\n      typeof config.isTypeOf === 'function' ||\n      (0, _devAssert.devAssert)(\n        false,\n        `${this.name} must provide \"isTypeOf\" as a function, ` +\n          `but got: ${(0, _inspect.inspect)(config.isTypeOf)}.`,\n      );\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'GraphQLObjectType';\n  }\n\n  getFields() {\n    if (typeof this._fields === 'function') {\n      this._fields = this._fields();\n    }\n\n    return this._fields;\n  }\n\n  getInterfaces() {\n    if (typeof this._interfaces === 'function') {\n      this._interfaces = this._interfaces();\n    }\n\n    return this._interfaces;\n  }\n\n  toConfig() {\n    return {\n      name: this.name,\n      description: this.description,\n      interfaces: this.getInterfaces(),\n      fields: fieldsToFieldsConfig(this.getFields()),\n      isTypeOf: this.isTypeOf,\n      extensions: this.extensions,\n      astNode: this.astNode,\n      extensionASTNodes: this.extensionASTNodes,\n    };\n  }\n\n  toString() {\n    return this.name;\n  }\n\n  toJSON() {\n    return this.toString();\n  }\n}\n\nexports.GraphQLObjectType = GraphQLObjectType;\n\nfunction defineInterfaces(config) {\n  var _config$interfaces;\n\n  const interfaces = resolveReadonlyArrayThunk(\n    (_config$interfaces = config.interfaces) !== null &&\n      _config$interfaces !== void 0\n      ? _config$interfaces\n      : [],\n  );\n  Array.isArray(interfaces) ||\n    (0, _devAssert.devAssert)(\n      false,\n      `${config.name} interfaces must be an Array or a function which returns an Array.`,\n    );\n  return interfaces;\n}\n\nfunction defineFieldMap(config) {\n  const fieldMap = resolveObjMapThunk(config.fields);\n  isPlainObj(fieldMap) ||\n    (0, _devAssert.devAssert)(\n      false,\n      `${config.name} fields must be an object with field names as keys or a function which returns such an object.`,\n    );\n  return (0, _mapValue.mapValue)(fieldMap, (fieldConfig, fieldName) => {\n    var _fieldConfig$args;\n\n    isPlainObj(fieldConfig) ||\n      (0, _devAssert.devAssert)(\n        false,\n        `${config.name}.${fieldName} field config must be an object.`,\n      );\n    fieldConfig.resolve == null ||\n      typeof fieldConfig.resolve === 'function' ||\n      (0, _devAssert.devAssert)(\n        false,\n        `${config.name}.${fieldName} field resolver must be a function if ` +\n          `provided, but got: ${(0, _inspect.inspect)(fieldConfig.resolve)}.`,\n      );\n    const argsConfig =\n      (_fieldConfig$args = fieldConfig.args) !== null &&\n      _fieldConfig$args !== void 0\n        ? _fieldConfig$args\n        : {};\n    isPlainObj(argsConfig) ||\n      (0, _devAssert.devAssert)(\n        false,\n        `${config.name}.${fieldName} args must be an object with argument names as keys.`,\n      );\n    return {\n      name: (0, _assertName.assertName)(fieldName),\n      description: fieldConfig.description,\n      type: fieldConfig.type,\n      args: defineArguments(argsConfig),\n      resolve: fieldConfig.resolve,\n      subscribe: fieldConfig.subscribe,\n      deprecationReason: fieldConfig.deprecationReason,\n      extensions: (0, _toObjMap.toObjMap)(fieldConfig.extensions),\n      astNode: fieldConfig.astNode,\n    };\n  });\n}\n\nfunction defineArguments(config) {\n  return Object.entries(config).map(([argName, argConfig]) => ({\n    name: (0, _assertName.assertName)(argName),\n    description: argConfig.description,\n    type: argConfig.type,\n    defaultValue: argConfig.defaultValue,\n    deprecationReason: argConfig.deprecationReason,\n    extensions: (0, _toObjMap.toObjMap)(argConfig.extensions),\n    astNode: argConfig.astNode,\n  }));\n}\n\nfunction isPlainObj(obj) {\n  return (0, _isObjectLike.isObjectLike)(obj) && !Array.isArray(obj);\n}\n\nfunction fieldsToFieldsConfig(fields) {\n  return (0, _mapValue.mapValue)(fields, (field) => ({\n    description: field.description,\n    type: field.type,\n    args: argsToArgsConfig(field.args),\n    resolve: field.resolve,\n    subscribe: field.subscribe,\n    deprecationReason: field.deprecationReason,\n    extensions: field.extensions,\n    astNode: field.astNode,\n  }));\n}\n/**\n * @internal\n */\n\nfunction argsToArgsConfig(args) {\n  return (0, _keyValMap.keyValMap)(\n    args,\n    (arg) => arg.name,\n    (arg) => ({\n      description: arg.description,\n      type: arg.type,\n      defaultValue: arg.defaultValue,\n      deprecationReason: arg.deprecationReason,\n      extensions: arg.extensions,\n      astNode: arg.astNode,\n    }),\n  );\n}\n\nfunction isRequiredArgument(arg) {\n  return isNonNullType(arg.type) && arg.defaultValue === undefined;\n}\n\n/**\n * Interface Type Definition\n *\n * When a field can return one of a heterogeneous set of types, a Interface type\n * is used to describe what types are possible, what fields are in common across\n * all types, as well as a function to determine which type is actually used\n * when the field is resolved.\n *\n * Example:\n *\n * ```ts\n * const EntityType = new GraphQLInterfaceType({\n *   name: 'Entity',\n *   fields: {\n *     name: { type: GraphQLString }\n *   }\n * });\n * ```\n */\nclass GraphQLInterfaceType {\n  constructor(config) {\n    var _config$extensionASTN3;\n\n    this.name = (0, _assertName.assertName)(config.name);\n    this.description = config.description;\n    this.resolveType = config.resolveType;\n    this.extensions = (0, _toObjMap.toObjMap)(config.extensions);\n    this.astNode = config.astNode;\n    this.extensionASTNodes =\n      (_config$extensionASTN3 = config.extensionASTNodes) !== null &&\n      _config$extensionASTN3 !== void 0\n        ? _config$extensionASTN3\n        : [];\n    this._fields = defineFieldMap.bind(undefined, config);\n    this._interfaces = defineInterfaces.bind(undefined, config);\n    config.resolveType == null ||\n      typeof config.resolveType === 'function' ||\n      (0, _devAssert.devAssert)(\n        false,\n        `${this.name} must provide \"resolveType\" as a function, ` +\n          `but got: ${(0, _inspect.inspect)(config.resolveType)}.`,\n      );\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'GraphQLInterfaceType';\n  }\n\n  getFields() {\n    if (typeof this._fields === 'function') {\n      this._fields = this._fields();\n    }\n\n    return this._fields;\n  }\n\n  getInterfaces() {\n    if (typeof this._interfaces === 'function') {\n      this._interfaces = this._interfaces();\n    }\n\n    return this._interfaces;\n  }\n\n  toConfig() {\n    return {\n      name: this.name,\n      description: this.description,\n      interfaces: this.getInterfaces(),\n      fields: fieldsToFieldsConfig(this.getFields()),\n      resolveType: this.resolveType,\n      extensions: this.extensions,\n      astNode: this.astNode,\n      extensionASTNodes: this.extensionASTNodes,\n    };\n  }\n\n  toString() {\n    return this.name;\n  }\n\n  toJSON() {\n    return this.toString();\n  }\n}\n\nexports.GraphQLInterfaceType = GraphQLInterfaceType;\n\n/**\n * Union Type Definition\n *\n * When a field can return one of a heterogeneous set of types, a Union type\n * is used to describe what types are possible as well as providing a function\n * to determine which type is actually used when the field is resolved.\n *\n * Example:\n *\n * ```ts\n * const PetType = new GraphQLUnionType({\n *   name: 'Pet',\n *   types: [ DogType, CatType ],\n *   resolveType(value) {\n *     if (value instanceof Dog) {\n *       return DogType;\n *     }\n *     if (value instanceof Cat) {\n *       return CatType;\n *     }\n *   }\n * });\n * ```\n */\nclass GraphQLUnionType {\n  constructor(config) {\n    var _config$extensionASTN4;\n\n    this.name = (0, _assertName.assertName)(config.name);\n    this.description = config.description;\n    this.resolveType = config.resolveType;\n    this.extensions = (0, _toObjMap.toObjMap)(config.extensions);\n    this.astNode = config.astNode;\n    this.extensionASTNodes =\n      (_config$extensionASTN4 = config.extensionASTNodes) !== null &&\n      _config$extensionASTN4 !== void 0\n        ? _config$extensionASTN4\n        : [];\n    this._types = defineTypes.bind(undefined, config);\n    config.resolveType == null ||\n      typeof config.resolveType === 'function' ||\n      (0, _devAssert.devAssert)(\n        false,\n        `${this.name} must provide \"resolveType\" as a function, ` +\n          `but got: ${(0, _inspect.inspect)(config.resolveType)}.`,\n      );\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'GraphQLUnionType';\n  }\n\n  getTypes() {\n    if (typeof this._types === 'function') {\n      this._types = this._types();\n    }\n\n    return this._types;\n  }\n\n  toConfig() {\n    return {\n      name: this.name,\n      description: this.description,\n      types: this.getTypes(),\n      resolveType: this.resolveType,\n      extensions: this.extensions,\n      astNode: this.astNode,\n      extensionASTNodes: this.extensionASTNodes,\n    };\n  }\n\n  toString() {\n    return this.name;\n  }\n\n  toJSON() {\n    return this.toString();\n  }\n}\n\nexports.GraphQLUnionType = GraphQLUnionType;\n\nfunction defineTypes(config) {\n  const types = resolveReadonlyArrayThunk(config.types);\n  Array.isArray(types) ||\n    (0, _devAssert.devAssert)(\n      false,\n      `Must provide Array of types or a function which returns such an array for Union ${config.name}.`,\n    );\n  return types;\n}\n\n/**\n * Enum Type Definition\n *\n * Some leaf values of requests and input values are Enums. GraphQL serializes\n * Enum values as strings, however internally Enums can be represented by any\n * kind of type, often integers.\n *\n * Example:\n *\n * ```ts\n * const RGBType = new GraphQLEnumType({\n *   name: 'RGB',\n *   values: {\n *     RED: { value: 0 },\n *     GREEN: { value: 1 },\n *     BLUE: { value: 2 }\n *   }\n * });\n * ```\n *\n * Note: If a value is not provided in a definition, the name of the enum value\n * will be used as its internal value.\n */\nclass GraphQLEnumType {\n  /* <T> */\n  constructor(config) {\n    var _config$extensionASTN5;\n\n    this.name = (0, _assertName.assertName)(config.name);\n    this.description = config.description;\n    this.extensions = (0, _toObjMap.toObjMap)(config.extensions);\n    this.astNode = config.astNode;\n    this.extensionASTNodes =\n      (_config$extensionASTN5 = config.extensionASTNodes) !== null &&\n      _config$extensionASTN5 !== void 0\n        ? _config$extensionASTN5\n        : [];\n    this._values =\n      typeof config.values === 'function'\n        ? config.values\n        : defineEnumValues(this.name, config.values);\n    this._valueLookup = null;\n    this._nameLookup = null;\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'GraphQLEnumType';\n  }\n\n  getValues() {\n    if (typeof this._values === 'function') {\n      this._values = defineEnumValues(this.name, this._values());\n    }\n\n    return this._values;\n  }\n\n  getValue(name) {\n    if (this._nameLookup === null) {\n      this._nameLookup = (0, _keyMap.keyMap)(\n        this.getValues(),\n        (value) => value.name,\n      );\n    }\n\n    return this._nameLookup[name];\n  }\n\n  serialize(outputValue) {\n    if (this._valueLookup === null) {\n      this._valueLookup = new Map(\n        this.getValues().map((enumValue) => [enumValue.value, enumValue]),\n      );\n    }\n\n    const enumValue = this._valueLookup.get(outputValue);\n\n    if (enumValue === undefined) {\n      throw new _GraphQLError.GraphQLError(\n        `Enum \"${this.name}\" cannot represent value: ${(0, _inspect.inspect)(\n          outputValue,\n        )}`,\n      );\n    }\n\n    return enumValue.name;\n  }\n\n  parseValue(inputValue) /* T */\n  {\n    if (typeof inputValue !== 'string') {\n      const valueStr = (0, _inspect.inspect)(inputValue);\n      throw new _GraphQLError.GraphQLError(\n        `Enum \"${this.name}\" cannot represent non-string value: ${valueStr}.` +\n          didYouMeanEnumValue(this, valueStr),\n      );\n    }\n\n    const enumValue = this.getValue(inputValue);\n\n    if (enumValue == null) {\n      throw new _GraphQLError.GraphQLError(\n        `Value \"${inputValue}\" does not exist in \"${this.name}\" enum.` +\n          didYouMeanEnumValue(this, inputValue),\n      );\n    }\n\n    return enumValue.value;\n  }\n\n  parseLiteral(valueNode, _variables) /* T */\n  {\n    // Note: variables will be resolved to a value before calling this function.\n    if (valueNode.kind !== _kinds.Kind.ENUM) {\n      const valueStr = (0, _printer.print)(valueNode);\n      throw new _GraphQLError.GraphQLError(\n        `Enum \"${this.name}\" cannot represent non-enum value: ${valueStr}.` +\n          didYouMeanEnumValue(this, valueStr),\n        {\n          nodes: valueNode,\n        },\n      );\n    }\n\n    const enumValue = this.getValue(valueNode.value);\n\n    if (enumValue == null) {\n      const valueStr = (0, _printer.print)(valueNode);\n      throw new _GraphQLError.GraphQLError(\n        `Value \"${valueStr}\" does not exist in \"${this.name}\" enum.` +\n          didYouMeanEnumValue(this, valueStr),\n        {\n          nodes: valueNode,\n        },\n      );\n    }\n\n    return enumValue.value;\n  }\n\n  toConfig() {\n    const values = (0, _keyValMap.keyValMap)(\n      this.getValues(),\n      (value) => value.name,\n      (value) => ({\n        description: value.description,\n        value: value.value,\n        deprecationReason: value.deprecationReason,\n        extensions: value.extensions,\n        astNode: value.astNode,\n      }),\n    );\n    return {\n      name: this.name,\n      description: this.description,\n      values,\n      extensions: this.extensions,\n      astNode: this.astNode,\n      extensionASTNodes: this.extensionASTNodes,\n    };\n  }\n\n  toString() {\n    return this.name;\n  }\n\n  toJSON() {\n    return this.toString();\n  }\n}\n\nexports.GraphQLEnumType = GraphQLEnumType;\n\nfunction didYouMeanEnumValue(enumType, unknownValueStr) {\n  const allNames = enumType.getValues().map((value) => value.name);\n  const suggestedValues = (0, _suggestionList.suggestionList)(\n    unknownValueStr,\n    allNames,\n  );\n  return (0, _didYouMean.didYouMean)('the enum value', suggestedValues);\n}\n\nfunction defineEnumValues(typeName, valueMap) {\n  isPlainObj(valueMap) ||\n    (0, _devAssert.devAssert)(\n      false,\n      `${typeName} values must be an object with value names as keys.`,\n    );\n  return Object.entries(valueMap).map(([valueName, valueConfig]) => {\n    isPlainObj(valueConfig) ||\n      (0, _devAssert.devAssert)(\n        false,\n        `${typeName}.${valueName} must refer to an object with a \"value\" key ` +\n          `representing an internal value but got: ${(0, _inspect.inspect)(\n            valueConfig,\n          )}.`,\n      );\n    return {\n      name: (0, _assertName.assertEnumValueName)(valueName),\n      description: valueConfig.description,\n      value: valueConfig.value !== undefined ? valueConfig.value : valueName,\n      deprecationReason: valueConfig.deprecationReason,\n      extensions: (0, _toObjMap.toObjMap)(valueConfig.extensions),\n      astNode: valueConfig.astNode,\n    };\n  });\n}\n\n/**\n * Input Object Type Definition\n *\n * An input object defines a structured collection of fields which may be\n * supplied to a field argument.\n *\n * Using `NonNull` will ensure that a value must be provided by the query\n *\n * Example:\n *\n * ```ts\n * const GeoPoint = new GraphQLInputObjectType({\n *   name: 'GeoPoint',\n *   fields: {\n *     lat: { type: new GraphQLNonNull(GraphQLFloat) },\n *     lon: { type: new GraphQLNonNull(GraphQLFloat) },\n *     alt: { type: GraphQLFloat, defaultValue: 0 },\n *   }\n * });\n * ```\n */\nclass GraphQLInputObjectType {\n  constructor(config) {\n    var _config$extensionASTN6, _config$isOneOf;\n\n    this.name = (0, _assertName.assertName)(config.name);\n    this.description = config.description;\n    this.extensions = (0, _toObjMap.toObjMap)(config.extensions);\n    this.astNode = config.astNode;\n    this.extensionASTNodes =\n      (_config$extensionASTN6 = config.extensionASTNodes) !== null &&\n      _config$extensionASTN6 !== void 0\n        ? _config$extensionASTN6\n        : [];\n    this.isOneOf =\n      (_config$isOneOf = config.isOneOf) !== null && _config$isOneOf !== void 0\n        ? _config$isOneOf\n        : false;\n    this._fields = defineInputFieldMap.bind(undefined, config);\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'GraphQLInputObjectType';\n  }\n\n  getFields() {\n    if (typeof this._fields === 'function') {\n      this._fields = this._fields();\n    }\n\n    return this._fields;\n  }\n\n  toConfig() {\n    const fields = (0, _mapValue.mapValue)(this.getFields(), (field) => ({\n      description: field.description,\n      type: field.type,\n      defaultValue: field.defaultValue,\n      deprecationReason: field.deprecationReason,\n      extensions: field.extensions,\n      astNode: field.astNode,\n    }));\n    return {\n      name: this.name,\n      description: this.description,\n      fields,\n      extensions: this.extensions,\n      astNode: this.astNode,\n      extensionASTNodes: this.extensionASTNodes,\n      isOneOf: this.isOneOf,\n    };\n  }\n\n  toString() {\n    return this.name;\n  }\n\n  toJSON() {\n    return this.toString();\n  }\n}\n\nexports.GraphQLInputObjectType = GraphQLInputObjectType;\n\nfunction defineInputFieldMap(config) {\n  const fieldMap = resolveObjMapThunk(config.fields);\n  isPlainObj(fieldMap) ||\n    (0, _devAssert.devAssert)(\n      false,\n      `${config.name} fields must be an object with field names as keys or a function which returns such an object.`,\n    );\n  return (0, _mapValue.mapValue)(fieldMap, (fieldConfig, fieldName) => {\n    !('resolve' in fieldConfig) ||\n      (0, _devAssert.devAssert)(\n        false,\n        `${config.name}.${fieldName} field has a resolve property, but Input Types cannot define resolvers.`,\n      );\n    return {\n      name: (0, _assertName.assertName)(fieldName),\n      description: fieldConfig.description,\n      type: fieldConfig.type,\n      defaultValue: fieldConfig.defaultValue,\n      deprecationReason: fieldConfig.deprecationReason,\n      extensions: (0, _toObjMap.toObjMap)(fieldConfig.extensions),\n      astNode: fieldConfig.astNode,\n    };\n  });\n}\n\nfunction isRequiredInputField(field) {\n  return isNonNullType(field.type) && field.defaultValue === undefined;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.doTypesOverlap = doTypesOverlap;\nexports.isEqualType = isEqualType;\nexports.isTypeSubTypeOf = isTypeSubTypeOf;\n\nvar _definition = require('../type/definition.js');\n\n/**\n * Provided two types, return true if the types are equal (invariant).\n */\nfunction isEqualType(typeA, typeB) {\n  // Equivalent types are equal.\n  if (typeA === typeB) {\n    return true;\n  } // If either type is non-null, the other must also be non-null.\n\n  if (\n    (0, _definition.isNonNullType)(typeA) &&\n    (0, _definition.isNonNullType)(typeB)\n  ) {\n    return isEqualType(typeA.ofType, typeB.ofType);\n  } // If either type is a list, the other must also be a list.\n\n  if (\n    (0, _definition.isListType)(typeA) &&\n    (0, _definition.isListType)(typeB)\n  ) {\n    return isEqualType(typeA.ofType, typeB.ofType);\n  } // Otherwise the types are not equal.\n\n  return false;\n}\n/**\n * Provided a type and a super type, return true if the first type is either\n * equal or a subset of the second super type (covariant).\n */\n\nfunction isTypeSubTypeOf(schema, maybeSubType, superType) {\n  // Equivalent type is a valid subtype\n  if (maybeSubType === superType) {\n    return true;\n  } // If superType is non-null, maybeSubType must also be non-null.\n\n  if ((0, _definition.isNonNullType)(superType)) {\n    if ((0, _definition.isNonNullType)(maybeSubType)) {\n      return isTypeSubTypeOf(schema, maybeSubType.ofType, superType.ofType);\n    }\n\n    return false;\n  }\n\n  if ((0, _definition.isNonNullType)(maybeSubType)) {\n    // If superType is nullable, maybeSubType may be non-null or nullable.\n    return isTypeSubTypeOf(schema, maybeSubType.ofType, superType);\n  } // If superType type is a list, maybeSubType type must also be a list.\n\n  if ((0, _definition.isListType)(superType)) {\n    if ((0, _definition.isListType)(maybeSubType)) {\n      return isTypeSubTypeOf(schema, maybeSubType.ofType, superType.ofType);\n    }\n\n    return false;\n  }\n\n  if ((0, _definition.isListType)(maybeSubType)) {\n    // If superType is not a list, maybeSubType must also be not a list.\n    return false;\n  } // If superType type is an abstract type, check if it is super type of maybeSubType.\n  // Otherwise, the child type is not a valid subtype of the parent type.\n\n  return (\n    (0, _definition.isAbstractType)(superType) &&\n    ((0, _definition.isInterfaceType)(maybeSubType) ||\n      (0, _definition.isObjectType)(maybeSubType)) &&\n    schema.isSubType(superType, maybeSubType)\n  );\n}\n/**\n * Provided two composite types, determine if they \"overlap\". Two composite\n * types overlap when the Sets of possible concrete types for each intersect.\n *\n * This is often used to determine if a fragment of a given type could possibly\n * be visited in a context of another type.\n *\n * This function is commutative.\n */\n\nfunction doTypesOverlap(schema, typeA, typeB) {\n  // Equivalent types overlap\n  if (typeA === typeB) {\n    return true;\n  }\n\n  if ((0, _definition.isAbstractType)(typeA)) {\n    if ((0, _definition.isAbstractType)(typeB)) {\n      // If both types are abstract, then determine if there is any intersection\n      // between possible concrete types of each.\n      return schema\n        .getPossibleTypes(typeA)\n        .some((type) => schema.isSubType(typeB, type));\n    } // Determine if the latter type is a possible concrete type of the former.\n\n    return schema.isSubType(typeA, typeB);\n  }\n\n  if ((0, _definition.isAbstractType)(typeB)) {\n    // Determine if the former type is a possible concrete type of the latter.\n    return schema.isSubType(typeB, typeA);\n  } // Otherwise the types do not overlap.\n\n  return false;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.GraphQLString =\n  exports.GraphQLInt =\n  exports.GraphQLID =\n  exports.GraphQLFloat =\n  exports.GraphQLBoolean =\n  exports.GRAPHQL_MIN_INT =\n  exports.GRAPHQL_MAX_INT =\n    void 0;\nexports.isSpecifiedScalarType = isSpecifiedScalarType;\nexports.specifiedScalarTypes = void 0;\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _isObjectLike = require('../jsutils/isObjectLike.js');\n\nvar _GraphQLError = require('../error/GraphQLError.js');\n\nvar _kinds = require('../language/kinds.js');\n\nvar _printer = require('../language/printer.js');\n\nvar _definition = require('./definition.js');\n\n/**\n * Maximum possible Int value as per GraphQL Spec (32-bit signed integer).\n * n.b. This differs from JavaScript's numbers that are IEEE 754 doubles safe up-to 2^53 - 1\n * */\nconst GRAPHQL_MAX_INT = 2147483647;\n/**\n * Minimum possible Int value as per GraphQL Spec (32-bit signed integer).\n * n.b. This differs from JavaScript's numbers that are IEEE 754 doubles safe starting at -(2^53 - 1)\n * */\n\nexports.GRAPHQL_MAX_INT = GRAPHQL_MAX_INT;\nconst GRAPHQL_MIN_INT = -2147483648;\nexports.GRAPHQL_MIN_INT = GRAPHQL_MIN_INT;\nconst GraphQLInt = new _definition.GraphQLScalarType({\n  name: 'Int',\n  description:\n    'The `Int` scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.',\n\n  serialize(outputValue) {\n    const coercedValue = serializeObject(outputValue);\n\n    if (typeof coercedValue === 'boolean') {\n      return coercedValue ? 1 : 0;\n    }\n\n    let num = coercedValue;\n\n    if (typeof coercedValue === 'string' && coercedValue !== '') {\n      num = Number(coercedValue);\n    }\n\n    if (typeof num !== 'number' || !Number.isInteger(num)) {\n      throw new _GraphQLError.GraphQLError(\n        `Int cannot represent non-integer value: ${(0, _inspect.inspect)(\n          coercedValue,\n        )}`,\n      );\n    }\n\n    if (num > GRAPHQL_MAX_INT || num < GRAPHQL_MIN_INT) {\n      throw new _GraphQLError.GraphQLError(\n        'Int cannot represent non 32-bit signed integer value: ' +\n          (0, _inspect.inspect)(coercedValue),\n      );\n    }\n\n    return num;\n  },\n\n  parseValue(inputValue) {\n    if (typeof inputValue !== 'number' || !Number.isInteger(inputValue)) {\n      throw new _GraphQLError.GraphQLError(\n        `Int cannot represent non-integer value: ${(0, _inspect.inspect)(\n          inputValue,\n        )}`,\n      );\n    }\n\n    if (inputValue > GRAPHQL_MAX_INT || inputValue < GRAPHQL_MIN_INT) {\n      throw new _GraphQLError.GraphQLError(\n        `Int cannot represent non 32-bit signed integer value: ${inputValue}`,\n      );\n    }\n\n    return inputValue;\n  },\n\n  parseLiteral(valueNode) {\n    if (valueNode.kind !== _kinds.Kind.INT) {\n      throw new _GraphQLError.GraphQLError(\n        `Int cannot represent non-integer value: ${(0, _printer.print)(\n          valueNode,\n        )}`,\n        {\n          nodes: valueNode,\n        },\n      );\n    }\n\n    const num = parseInt(valueNode.value, 10);\n\n    if (num > GRAPHQL_MAX_INT || num < GRAPHQL_MIN_INT) {\n      throw new _GraphQLError.GraphQLError(\n        `Int cannot represent non 32-bit signed integer value: ${valueNode.value}`,\n        {\n          nodes: valueNode,\n        },\n      );\n    }\n\n    return num;\n  },\n});\nexports.GraphQLInt = GraphQLInt;\nconst GraphQLFloat = new _definition.GraphQLScalarType({\n  name: 'Float',\n  description:\n    'The `Float` scalar type represents signed double-precision fractional values as specified by [IEEE 754](https://en.wikipedia.org/wiki/IEEE_floating_point).',\n\n  serialize(outputValue) {\n    const coercedValue = serializeObject(outputValue);\n\n    if (typeof coercedValue === 'boolean') {\n      return coercedValue ? 1 : 0;\n    }\n\n    let num = coercedValue;\n\n    if (typeof coercedValue === 'string' && coercedValue !== '') {\n      num = Number(coercedValue);\n    }\n\n    if (typeof num !== 'number' || !Number.isFinite(num)) {\n      throw new _GraphQLError.GraphQLError(\n        `Float cannot represent non numeric value: ${(0, _inspect.inspect)(\n          coercedValue,\n        )}`,\n      );\n    }\n\n    return num;\n  },\n\n  parseValue(inputValue) {\n    if (typeof inputValue !== 'number' || !Number.isFinite(inputValue)) {\n      throw new _GraphQLError.GraphQLError(\n        `Float cannot represent non numeric value: ${(0, _inspect.inspect)(\n          inputValue,\n        )}`,\n      );\n    }\n\n    return inputValue;\n  },\n\n  parseLiteral(valueNode) {\n    if (\n      valueNode.kind !== _kinds.Kind.FLOAT &&\n      valueNode.kind !== _kinds.Kind.INT\n    ) {\n      throw new _GraphQLError.GraphQLError(\n        `Float cannot represent non numeric value: ${(0, _printer.print)(\n          valueNode,\n        )}`,\n        valueNode,\n      );\n    }\n\n    return parseFloat(valueNode.value);\n  },\n});\nexports.GraphQLFloat = GraphQLFloat;\nconst GraphQLString = new _definition.GraphQLScalarType({\n  name: 'String',\n  description:\n    'The `String` scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.',\n\n  serialize(outputValue) {\n    const coercedValue = serializeObject(outputValue); // Serialize string, boolean and number values to a string, but do not\n    // attempt to coerce object, function, symbol, or other types as strings.\n\n    if (typeof coercedValue === 'string') {\n      return coercedValue;\n    }\n\n    if (typeof coercedValue === 'boolean') {\n      return coercedValue ? 'true' : 'false';\n    }\n\n    if (typeof coercedValue === 'number' && Number.isFinite(coercedValue)) {\n      return coercedValue.toString();\n    }\n\n    throw new _GraphQLError.GraphQLError(\n      `String cannot represent value: ${(0, _inspect.inspect)(outputValue)}`,\n    );\n  },\n\n  parseValue(inputValue) {\n    if (typeof inputValue !== 'string') {\n      throw new _GraphQLError.GraphQLError(\n        `String cannot represent a non string value: ${(0, _inspect.inspect)(\n          inputValue,\n        )}`,\n      );\n    }\n\n    return inputValue;\n  },\n\n  parseLiteral(valueNode) {\n    if (valueNode.kind !== _kinds.Kind.STRING) {\n      throw new _GraphQLError.GraphQLError(\n        `String cannot represent a non string value: ${(0, _printer.print)(\n          valueNode,\n        )}`,\n        {\n          nodes: valueNode,\n        },\n      );\n    }\n\n    return valueNode.value;\n  },\n});\nexports.GraphQLString = GraphQLString;\nconst GraphQLBoolean = new _definition.GraphQLScalarType({\n  name: 'Boolean',\n  description: 'The `Boolean` scalar type represents `true` or `false`.',\n\n  serialize(outputValue) {\n    const coercedValue = serializeObject(outputValue);\n\n    if (typeof coercedValue === 'boolean') {\n      return coercedValue;\n    }\n\n    if (Number.isFinite(coercedValue)) {\n      return coercedValue !== 0;\n    }\n\n    throw new _GraphQLError.GraphQLError(\n      `Boolean cannot represent a non boolean value: ${(0, _inspect.inspect)(\n        coercedValue,\n      )}`,\n    );\n  },\n\n  parseValue(inputValue) {\n    if (typeof inputValue !== 'boolean') {\n      throw new _GraphQLError.GraphQLError(\n        `Boolean cannot represent a non boolean value: ${(0, _inspect.inspect)(\n          inputValue,\n        )}`,\n      );\n    }\n\n    return inputValue;\n  },\n\n  parseLiteral(valueNode) {\n    if (valueNode.kind !== _kinds.Kind.BOOLEAN) {\n      throw new _GraphQLError.GraphQLError(\n        `Boolean cannot represent a non boolean value: ${(0, _printer.print)(\n          valueNode,\n        )}`,\n        {\n          nodes: valueNode,\n        },\n      );\n    }\n\n    return valueNode.value;\n  },\n});\nexports.GraphQLBoolean = GraphQLBoolean;\nconst GraphQLID = new _definition.GraphQLScalarType({\n  name: 'ID',\n  description:\n    'The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `\"4\"`) or integer (such as `4`) input value will be accepted as an ID.',\n\n  serialize(outputValue) {\n    const coercedValue = serializeObject(outputValue);\n\n    if (typeof coercedValue === 'string') {\n      return coercedValue;\n    }\n\n    if (Number.isInteger(coercedValue)) {\n      return String(coercedValue);\n    }\n\n    throw new _GraphQLError.GraphQLError(\n      `ID cannot represent value: ${(0, _inspect.inspect)(outputValue)}`,\n    );\n  },\n\n  parseValue(inputValue) {\n    if (typeof inputValue === 'string') {\n      return inputValue;\n    }\n\n    if (typeof inputValue === 'number' && Number.isInteger(inputValue)) {\n      return inputValue.toString();\n    }\n\n    throw new _GraphQLError.GraphQLError(\n      `ID cannot represent value: ${(0, _inspect.inspect)(inputValue)}`,\n    );\n  },\n\n  parseLiteral(valueNode) {\n    if (\n      valueNode.kind !== _kinds.Kind.STRING &&\n      valueNode.kind !== _kinds.Kind.INT\n    ) {\n      throw new _GraphQLError.GraphQLError(\n        'ID cannot represent a non-string and non-integer value: ' +\n          (0, _printer.print)(valueNode),\n        {\n          nodes: valueNode,\n        },\n      );\n    }\n\n    return valueNode.value;\n  },\n});\nexports.GraphQLID = GraphQLID;\nconst specifiedScalarTypes = Object.freeze([\n  GraphQLString,\n  GraphQLInt,\n  GraphQLFloat,\n  GraphQLBoolean,\n  GraphQLID,\n]);\nexports.specifiedScalarTypes = specifiedScalarTypes;\n\nfunction isSpecifiedScalarType(type) {\n  return specifiedScalarTypes.some(({ name }) => type.name === name);\n} // Support serializing objects with custom valueOf() or toJSON() functions -\n// a common way to represent a complex value which can be represented as\n// a string (ex: MongoDB id objects).\n\nfunction serializeObject(outputValue) {\n  if ((0, _isObjectLike.isObjectLike)(outputValue)) {\n    if (typeof outputValue.valueOf === 'function') {\n      const valueOfResult = outputValue.valueOf();\n\n      if (!(0, _isObjectLike.isObjectLike)(valueOfResult)) {\n        return valueOfResult;\n      }\n    }\n\n    if (typeof outputValue.toJSON === 'function') {\n      return outputValue.toJSON();\n    }\n  }\n\n  return outputValue;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.GraphQLSpecifiedByDirective =\n  exports.GraphQLSkipDirective =\n  exports.GraphQLOneOfDirective =\n  exports.GraphQLIncludeDirective =\n  exports.GraphQLDirective =\n  exports.GraphQLDeprecatedDirective =\n  exports.DEFAULT_DEPRECATION_REASON =\n    void 0;\nexports.assertDirective = assertDirective;\nexports.isDirective = isDirective;\nexports.isSpecifiedDirective = isSpecifiedDirective;\nexports.specifiedDirectives = void 0;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _instanceOf = require('../jsutils/instanceOf.js');\n\nvar _isObjectLike = require('../jsutils/isObjectLike.js');\n\nvar _toObjMap = require('../jsutils/toObjMap.js');\n\nvar _directiveLocation = require('../language/directiveLocation.js');\n\nvar _assertName = require('./assertName.js');\n\nvar _definition = require('./definition.js');\n\nvar _scalars = require('./scalars.js');\n\n/**\n * Test if the given value is a GraphQL directive.\n */\nfunction isDirective(directive) {\n  return (0, _instanceOf.instanceOf)(directive, GraphQLDirective);\n}\n\nfunction assertDirective(directive) {\n  if (!isDirective(directive)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(directive)} to be a GraphQL directive.`,\n    );\n  }\n\n  return directive;\n}\n/**\n * Custom extensions\n *\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\n\n/**\n * Directives are used by the GraphQL runtime as a way of modifying execution\n * behavior. Type system creators will usually not create these directly.\n */\nclass GraphQLDirective {\n  constructor(config) {\n    var _config$isRepeatable, _config$args;\n\n    this.name = (0, _assertName.assertName)(config.name);\n    this.description = config.description;\n    this.locations = config.locations;\n    this.isRepeatable =\n      (_config$isRepeatable = config.isRepeatable) !== null &&\n      _config$isRepeatable !== void 0\n        ? _config$isRepeatable\n        : false;\n    this.extensions = (0, _toObjMap.toObjMap)(config.extensions);\n    this.astNode = config.astNode;\n    Array.isArray(config.locations) ||\n      (0, _devAssert.devAssert)(\n        false,\n        `@${config.name} locations must be an Array.`,\n      );\n    const args =\n      (_config$args = config.args) !== null && _config$args !== void 0\n        ? _config$args\n        : {};\n    ((0, _isObjectLike.isObjectLike)(args) && !Array.isArray(args)) ||\n      (0, _devAssert.devAssert)(\n        false,\n        `@${config.name} args must be an object with argument names as keys.`,\n      );\n    this.args = (0, _definition.defineArguments)(args);\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'GraphQLDirective';\n  }\n\n  toConfig() {\n    return {\n      name: this.name,\n      description: this.description,\n      locations: this.locations,\n      args: (0, _definition.argsToArgsConfig)(this.args),\n      isRepeatable: this.isRepeatable,\n      extensions: this.extensions,\n      astNode: this.astNode,\n    };\n  }\n\n  toString() {\n    return '@' + this.name;\n  }\n\n  toJSON() {\n    return this.toString();\n  }\n}\n\nexports.GraphQLDirective = GraphQLDirective;\n\n/**\n * Used to conditionally include fields or fragments.\n */\nconst GraphQLIncludeDirective = new GraphQLDirective({\n  name: 'include',\n  description:\n    'Directs the executor to include this field or fragment only when the `if` argument is true.',\n  locations: [\n    _directiveLocation.DirectiveLocation.FIELD,\n    _directiveLocation.DirectiveLocation.FRAGMENT_SPREAD,\n    _directiveLocation.DirectiveLocation.INLINE_FRAGMENT,\n  ],\n  args: {\n    if: {\n      type: new _definition.GraphQLNonNull(_scalars.GraphQLBoolean),\n      description: 'Included when true.',\n    },\n  },\n});\n/**\n * Used to conditionally skip (exclude) fields or fragments.\n */\n\nexports.GraphQLIncludeDirective = GraphQLIncludeDirective;\nconst GraphQLSkipDirective = new GraphQLDirective({\n  name: 'skip',\n  description:\n    'Directs the executor to skip this field or fragment when the `if` argument is true.',\n  locations: [\n    _directiveLocation.DirectiveLocation.FIELD,\n    _directiveLocation.DirectiveLocation.FRAGMENT_SPREAD,\n    _directiveLocation.DirectiveLocation.INLINE_FRAGMENT,\n  ],\n  args: {\n    if: {\n      type: new _definition.GraphQLNonNull(_scalars.GraphQLBoolean),\n      description: 'Skipped when true.',\n    },\n  },\n});\n/**\n * Constant string used for default reason for a deprecation.\n */\n\nexports.GraphQLSkipDirective = GraphQLSkipDirective;\nconst DEFAULT_DEPRECATION_REASON = 'No longer supported';\n/**\n * Used to declare element of a GraphQL schema as deprecated.\n */\n\nexports.DEFAULT_DEPRECATION_REASON = DEFAULT_DEPRECATION_REASON;\nconst GraphQLDeprecatedDirective = new GraphQLDirective({\n  name: 'deprecated',\n  description: 'Marks an element of a GraphQL schema as no longer supported.',\n  locations: [\n    _directiveLocation.DirectiveLocation.FIELD_DEFINITION,\n    _directiveLocation.DirectiveLocation.ARGUMENT_DEFINITION,\n    _directiveLocation.DirectiveLocation.INPUT_FIELD_DEFINITION,\n    _directiveLocation.DirectiveLocation.ENUM_VALUE,\n  ],\n  args: {\n    reason: {\n      type: _scalars.GraphQLString,\n      description:\n        'Explains why this element was deprecated, usually also including a suggestion for how to access supported similar data. Formatted using the Markdown syntax, as specified by [CommonMark](https://commonmark.org/).',\n      defaultValue: DEFAULT_DEPRECATION_REASON,\n    },\n  },\n});\n/**\n * Used to provide a URL for specifying the behavior of custom scalar definitions.\n */\n\nexports.GraphQLDeprecatedDirective = GraphQLDeprecatedDirective;\nconst GraphQLSpecifiedByDirective = new GraphQLDirective({\n  name: 'specifiedBy',\n  description: 'Exposes a URL that specifies the behavior of this scalar.',\n  locations: [_directiveLocation.DirectiveLocation.SCALAR],\n  args: {\n    url: {\n      type: new _definition.GraphQLNonNull(_scalars.GraphQLString),\n      description: 'The URL that specifies the behavior of this scalar.',\n    },\n  },\n});\n/**\n * Used to indicate an Input Object is a OneOf Input Object.\n */\n\nexports.GraphQLSpecifiedByDirective = GraphQLSpecifiedByDirective;\nconst GraphQLOneOfDirective = new GraphQLDirective({\n  name: 'oneOf',\n  description:\n    'Indicates exactly one field must be supplied and this field must not be `null`.',\n  locations: [_directiveLocation.DirectiveLocation.INPUT_OBJECT],\n  args: {},\n});\n/**\n * The full list of specified directives.\n */\n\nexports.GraphQLOneOfDirective = GraphQLOneOfDirective;\nconst specifiedDirectives = Object.freeze([\n  GraphQLIncludeDirective,\n  GraphQLSkipDirective,\n  GraphQLDeprecatedDirective,\n  GraphQLSpecifiedByDirective,\n  GraphQLOneOfDirective,\n]);\nexports.specifiedDirectives = specifiedDirectives;\n\nfunction isSpecifiedDirective(directive) {\n  return specifiedDirectives.some(({ name }) => name === directive.name);\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.isIterableObject = isIterableObject;\n\n/**\n * Returns true if the provided object is an Object (i.e. not a string literal)\n * and implements the Iterator protocol.\n *\n * This may be used in place of [Array.isArray()][isArray] to determine if\n * an object should be iterated-over e.g. Array, Map, Set, Int8Array,\n * TypedArray, etc. but excludes string literals.\n *\n * @example\n * ```ts\n * isIterableObject([ 1, 2, 3 ]) // true\n * isIterableObject(new Map()) // true\n * isIterableObject('ABC') // false\n * isIterableObject({ key: 'value' }) // false\n * isIterableObject({ length: 1, 0: 'Alpha' }) // false\n * ```\n */\nfunction isIterableObject(maybeIterable) {\n  return (\n    typeof maybeIterable === 'object' &&\n    typeof (maybeIterable === null || maybeIterable === void 0\n      ? void 0\n      : maybeIterable[Symbol.iterator]) === 'function'\n  );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.astFromValue = astFromValue;\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _invariant = require('../jsutils/invariant.js');\n\nvar _isIterableObject = require('../jsutils/isIterableObject.js');\n\nvar _isObjectLike = require('../jsutils/isObjectLike.js');\n\nvar _kinds = require('../language/kinds.js');\n\nvar _definition = require('../type/definition.js');\n\nvar _scalars = require('../type/scalars.js');\n\n/**\n * Produces a GraphQL Value AST given a JavaScript object.\n * Function will match JavaScript/JSON values to GraphQL AST schema format\n * by using suggested GraphQLInputType. For example:\n *\n *     astFromValue(\"value\", GraphQLString)\n *\n * A GraphQL type must be provided, which will be used to interpret different\n * JavaScript values.\n *\n * | JSON Value    | GraphQL Value        |\n * | ------------- | -------------------- |\n * | Object        | Input Object         |\n * | Array         | List                 |\n * | Boolean       | Boolean              |\n * | String        | String / Enum Value  |\n * | Number        | Int / Float          |\n * | Unknown       | Enum Value           |\n * | null          | NullValue            |\n *\n */\nfunction astFromValue(value, type) {\n  if ((0, _definition.isNonNullType)(type)) {\n    const astValue = astFromValue(value, type.ofType);\n\n    if (\n      (astValue === null || astValue === void 0 ? void 0 : astValue.kind) ===\n      _kinds.Kind.NULL\n    ) {\n      return null;\n    }\n\n    return astValue;\n  } // only explicit null, not undefined, NaN\n\n  if (value === null) {\n    return {\n      kind: _kinds.Kind.NULL,\n    };\n  } // undefined\n\n  if (value === undefined) {\n    return null;\n  } // Convert JavaScript array to GraphQL list. If the GraphQLType is a list, but\n  // the value is not an array, convert the value using the list's item type.\n\n  if ((0, _definition.isListType)(type)) {\n    const itemType = type.ofType;\n\n    if ((0, _isIterableObject.isIterableObject)(value)) {\n      const valuesNodes = [];\n\n      for (const item of value) {\n        const itemNode = astFromValue(item, itemType);\n\n        if (itemNode != null) {\n          valuesNodes.push(itemNode);\n        }\n      }\n\n      return {\n        kind: _kinds.Kind.LIST,\n        values: valuesNodes,\n      };\n    }\n\n    return astFromValue(value, itemType);\n  } // Populate the fields of the input object by creating ASTs from each value\n  // in the JavaScript object according to the fields in the input type.\n\n  if ((0, _definition.isInputObjectType)(type)) {\n    if (!(0, _isObjectLike.isObjectLike)(value)) {\n      return null;\n    }\n\n    const fieldNodes = [];\n\n    for (const field of Object.values(type.getFields())) {\n      const fieldValue = astFromValue(value[field.name], field.type);\n\n      if (fieldValue) {\n        fieldNodes.push({\n          kind: _kinds.Kind.OBJECT_FIELD,\n          name: {\n            kind: _kinds.Kind.NAME,\n            value: field.name,\n          },\n          value: fieldValue,\n        });\n      }\n    }\n\n    return {\n      kind: _kinds.Kind.OBJECT,\n      fields: fieldNodes,\n    };\n  }\n\n  if ((0, _definition.isLeafType)(type)) {\n    // Since value is an internally represented value, it must be serialized\n    // to an externally represented value before converting into an AST.\n    const serialized = type.serialize(value);\n\n    if (serialized == null) {\n      return null;\n    } // Others serialize based on their corresponding JavaScript scalar types.\n\n    if (typeof serialized === 'boolean') {\n      return {\n        kind: _kinds.Kind.BOOLEAN,\n        value: serialized,\n      };\n    } // JavaScript numbers can be Int or Float values.\n\n    if (typeof serialized === 'number' && Number.isFinite(serialized)) {\n      const stringNum = String(serialized);\n      return integerStringRegExp.test(stringNum)\n        ? {\n            kind: _kinds.Kind.INT,\n            value: stringNum,\n          }\n        : {\n            kind: _kinds.Kind.FLOAT,\n            value: stringNum,\n          };\n    }\n\n    if (typeof serialized === 'string') {\n      // Enum types use Enum literals.\n      if ((0, _definition.isEnumType)(type)) {\n        return {\n          kind: _kinds.Kind.ENUM,\n          value: serialized,\n        };\n      } // ID types can use Int literals.\n\n      if (type === _scalars.GraphQLID && integerStringRegExp.test(serialized)) {\n        return {\n          kind: _kinds.Kind.INT,\n          value: serialized,\n        };\n      }\n\n      return {\n        kind: _kinds.Kind.STRING,\n        value: serialized,\n      };\n    }\n\n    throw new TypeError(\n      `Cannot convert value to AST: ${(0, _inspect.inspect)(serialized)}.`,\n    );\n  }\n  /* c8 ignore next 3 */\n  // Not reachable, all possible types have been considered.\n\n  false ||\n    (0, _invariant.invariant)(\n      false,\n      'Unexpected input type: ' + (0, _inspect.inspect)(type),\n    );\n}\n/**\n * IntValue:\n *   - NegativeSign? 0\n *   - NegativeSign? NonZeroDigit ( Digit+ )?\n */\n\nconst integerStringRegExp = /^-?(?:0|[1-9][0-9]*)$/;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.introspectionTypes =\n  exports.__TypeKind =\n  exports.__Type =\n  exports.__Schema =\n  exports.__InputValue =\n  exports.__Field =\n  exports.__EnumValue =\n  exports.__DirectiveLocation =\n  exports.__Directive =\n  exports.TypeNameMetaFieldDef =\n  exports.TypeMetaFieldDef =\n  exports.TypeKind =\n  exports.SchemaMetaFieldDef =\n    void 0;\nexports.isIntrospectionType = isIntrospectionType;\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _invariant = require('../jsutils/invariant.js');\n\nvar _directiveLocation = require('../language/directiveLocation.js');\n\nvar _printer = require('../language/printer.js');\n\nvar _astFromValue = require('../utilities/astFromValue.js');\n\nvar _definition = require('./definition.js');\n\nvar _scalars = require('./scalars.js');\n\nconst __Schema = new _definition.GraphQLObjectType({\n  name: '__Schema',\n  description:\n    'A GraphQL Schema defines the capabilities of a GraphQL server. It exposes all available types and directives on the server, as well as the entry points for query, mutation, and subscription operations.',\n  fields: () => ({\n    description: {\n      type: _scalars.GraphQLString,\n      resolve: (schema) => schema.description,\n    },\n    types: {\n      description: 'A list of all types supported by this server.',\n      type: new _definition.GraphQLNonNull(\n        new _definition.GraphQLList(new _definition.GraphQLNonNull(__Type)),\n      ),\n\n      resolve(schema) {\n        return Object.values(schema.getTypeMap());\n      },\n    },\n    queryType: {\n      description: 'The type that query operations will be rooted at.',\n      type: new _definition.GraphQLNonNull(__Type),\n      resolve: (schema) => schema.getQueryType(),\n    },\n    mutationType: {\n      description:\n        'If this server supports mutation, the type that mutation operations will be rooted at.',\n      type: __Type,\n      resolve: (schema) => schema.getMutationType(),\n    },\n    subscriptionType: {\n      description:\n        'If this server support subscription, the type that subscription operations will be rooted at.',\n      type: __Type,\n      resolve: (schema) => schema.getSubscriptionType(),\n    },\n    directives: {\n      description: 'A list of all directives supported by this server.',\n      type: new _definition.GraphQLNonNull(\n        new _definition.GraphQLList(\n          new _definition.GraphQLNonNull(__Directive),\n        ),\n      ),\n      resolve: (schema) => schema.getDirectives(),\n    },\n  }),\n});\n\nexports.__Schema = __Schema;\n\nconst __Directive = new _definition.GraphQLObjectType({\n  name: '__Directive',\n  description:\n    \"A Directive provides a way to describe alternate runtime execution and type validation behavior in a GraphQL document.\\n\\nIn some cases, you need to provide options to alter GraphQL's execution behavior in ways field arguments will not suffice, such as conditionally including or skipping a field. Directives provide this by describing additional information to the executor.\",\n  fields: () => ({\n    name: {\n      type: new _definition.GraphQLNonNull(_scalars.GraphQLString),\n      resolve: (directive) => directive.name,\n    },\n    description: {\n      type: _scalars.GraphQLString,\n      resolve: (directive) => directive.description,\n    },\n    isRepeatable: {\n      type: new _definition.GraphQLNonNull(_scalars.GraphQLBoolean),\n      resolve: (directive) => directive.isRepeatable,\n    },\n    locations: {\n      type: new _definition.GraphQLNonNull(\n        new _definition.GraphQLList(\n          new _definition.GraphQLNonNull(__DirectiveLocation),\n        ),\n      ),\n      resolve: (directive) => directive.locations,\n    },\n    args: {\n      type: new _definition.GraphQLNonNull(\n        new _definition.GraphQLList(\n          new _definition.GraphQLNonNull(__InputValue),\n        ),\n      ),\n      args: {\n        includeDeprecated: {\n          type: _scalars.GraphQLBoolean,\n          defaultValue: false,\n        },\n      },\n\n      resolve(field, { includeDeprecated }) {\n        return includeDeprecated\n          ? field.args\n          : field.args.filter((arg) => arg.deprecationReason == null);\n      },\n    },\n  }),\n});\n\nexports.__Directive = __Directive;\n\nconst __DirectiveLocation = new _definition.GraphQLEnumType({\n  name: '__DirectiveLocation',\n  description:\n    'A Directive can be adjacent to many parts of the GraphQL language, a __DirectiveLocation describes one such possible adjacencies.',\n  values: {\n    QUERY: {\n      value: _directiveLocation.DirectiveLocation.QUERY,\n      description: 'Location adjacent to a query operation.',\n    },\n    MUTATION: {\n      value: _directiveLocation.DirectiveLocation.MUTATION,\n      description: 'Location adjacent to a mutation operation.',\n    },\n    SUBSCRIPTION: {\n      value: _directiveLocation.DirectiveLocation.SUBSCRIPTION,\n      description: 'Location adjacent to a subscription operation.',\n    },\n    FIELD: {\n      value: _directiveLocation.DirectiveLocation.FIELD,\n      description: 'Location adjacent to a field.',\n    },\n    FRAGMENT_DEFINITION: {\n      value: _directiveLocation.DirectiveLocation.FRAGMENT_DEFINITION,\n      description: 'Location adjacent to a fragment definition.',\n    },\n    FRAGMENT_SPREAD: {\n      value: _directiveLocation.DirectiveLocation.FRAGMENT_SPREAD,\n      description: 'Location adjacent to a fragment spread.',\n    },\n    INLINE_FRAGMENT: {\n      value: _directiveLocation.DirectiveLocation.INLINE_FRAGMENT,\n      description: 'Location adjacent to an inline fragment.',\n    },\n    VARIABLE_DEFINITION: {\n      value: _directiveLocation.DirectiveLocation.VARIABLE_DEFINITION,\n      description: 'Location adjacent to a variable definition.',\n    },\n    SCHEMA: {\n      value: _directiveLocation.DirectiveLocation.SCHEMA,\n      description: 'Location adjacent to a schema definition.',\n    },\n    SCALAR: {\n      value: _directiveLocation.DirectiveLocation.SCALAR,\n      description: 'Location adjacent to a scalar definition.',\n    },\n    OBJECT: {\n      value: _directiveLocation.DirectiveLocation.OBJECT,\n      description: 'Location adjacent to an object type definition.',\n    },\n    FIELD_DEFINITION: {\n      value: _directiveLocation.DirectiveLocation.FIELD_DEFINITION,\n      description: 'Location adjacent to a field definition.',\n    },\n    ARGUMENT_DEFINITION: {\n      value: _directiveLocation.DirectiveLocation.ARGUMENT_DEFINITION,\n      description: 'Location adjacent to an argument definition.',\n    },\n    INTERFACE: {\n      value: _directiveLocation.DirectiveLocation.INTERFACE,\n      description: 'Location adjacent to an interface definition.',\n    },\n    UNION: {\n      value: _directiveLocation.DirectiveLocation.UNION,\n      description: 'Location adjacent to a union definition.',\n    },\n    ENUM: {\n      value: _directiveLocation.DirectiveLocation.ENUM,\n      description: 'Location adjacent to an enum definition.',\n    },\n    ENUM_VALUE: {\n      value: _directiveLocation.DirectiveLocation.ENUM_VALUE,\n      description: 'Location adjacent to an enum value definition.',\n    },\n    INPUT_OBJECT: {\n      value: _directiveLocation.DirectiveLocation.INPUT_OBJECT,\n      description: 'Location adjacent to an input object type definition.',\n    },\n    INPUT_FIELD_DEFINITION: {\n      value: _directiveLocation.DirectiveLocation.INPUT_FIELD_DEFINITION,\n      description: 'Location adjacent to an input object field definition.',\n    },\n  },\n});\n\nexports.__DirectiveLocation = __DirectiveLocation;\n\nconst __Type = new _definition.GraphQLObjectType({\n  name: '__Type',\n  description:\n    'The fundamental unit of any GraphQL Schema is the type. There are many kinds of types in GraphQL as represented by the `__TypeKind` enum.\\n\\nDepending on the kind of a type, certain fields describe information about that type. Scalar types provide no information beyond a name, description and optional `specifiedByURL`, while Enum types provide their values. Object and Interface types provide the fields they describe. Abstract types, Union and Interface, provide the Object types possible at runtime. List and NonNull types compose other types.',\n  fields: () => ({\n    kind: {\n      type: new _definition.GraphQLNonNull(__TypeKind),\n\n      resolve(type) {\n        if ((0, _definition.isScalarType)(type)) {\n          return TypeKind.SCALAR;\n        }\n\n        if ((0, _definition.isObjectType)(type)) {\n          return TypeKind.OBJECT;\n        }\n\n        if ((0, _definition.isInterfaceType)(type)) {\n          return TypeKind.INTERFACE;\n        }\n\n        if ((0, _definition.isUnionType)(type)) {\n          return TypeKind.UNION;\n        }\n\n        if ((0, _definition.isEnumType)(type)) {\n          return TypeKind.ENUM;\n        }\n\n        if ((0, _definition.isInputObjectType)(type)) {\n          return TypeKind.INPUT_OBJECT;\n        }\n\n        if ((0, _definition.isListType)(type)) {\n          return TypeKind.LIST;\n        }\n\n        if ((0, _definition.isNonNullType)(type)) {\n          return TypeKind.NON_NULL;\n        }\n        /* c8 ignore next 3 */\n        // Not reachable, all possible types have been considered)\n\n        false ||\n          (0, _invariant.invariant)(\n            false,\n            `Unexpected type: \"${(0, _inspect.inspect)(type)}\".`,\n          );\n      },\n    },\n    name: {\n      type: _scalars.GraphQLString,\n      resolve: (type) => ('name' in type ? type.name : undefined),\n    },\n    description: {\n      type: _scalars.GraphQLString,\n      resolve: (\n        type, // FIXME: add test case\n      ) =>\n        /* c8 ignore next */\n        'description' in type ? type.description : undefined,\n    },\n    specifiedByURL: {\n      type: _scalars.GraphQLString,\n      resolve: (obj) =>\n        'specifiedByURL' in obj ? obj.specifiedByURL : undefined,\n    },\n    fields: {\n      type: new _definition.GraphQLList(\n        new _definition.GraphQLNonNull(__Field),\n      ),\n      args: {\n        includeDeprecated: {\n          type: _scalars.GraphQLBoolean,\n          defaultValue: false,\n        },\n      },\n\n      resolve(type, { includeDeprecated }) {\n        if (\n          (0, _definition.isObjectType)(type) ||\n          (0, _definition.isInterfaceType)(type)\n        ) {\n          const fields = Object.values(type.getFields());\n          return includeDeprecated\n            ? fields\n            : fields.filter((field) => field.deprecationReason == null);\n        }\n      },\n    },\n    interfaces: {\n      type: new _definition.GraphQLList(new _definition.GraphQLNonNull(__Type)),\n\n      resolve(type) {\n        if (\n          (0, _definition.isObjectType)(type) ||\n          (0, _definition.isInterfaceType)(type)\n        ) {\n          return type.getInterfaces();\n        }\n      },\n    },\n    possibleTypes: {\n      type: new _definition.GraphQLList(new _definition.GraphQLNonNull(__Type)),\n\n      resolve(type, _args, _context, { schema }) {\n        if ((0, _definition.isAbstractType)(type)) {\n          return schema.getPossibleTypes(type);\n        }\n      },\n    },\n    enumValues: {\n      type: new _definition.GraphQLList(\n        new _definition.GraphQLNonNull(__EnumValue),\n      ),\n      args: {\n        includeDeprecated: {\n          type: _scalars.GraphQLBoolean,\n          defaultValue: false,\n        },\n      },\n\n      resolve(type, { includeDeprecated }) {\n        if ((0, _definition.isEnumType)(type)) {\n          const values = type.getValues();\n          return includeDeprecated\n            ? values\n            : values.filter((field) => field.deprecationReason == null);\n        }\n      },\n    },\n    inputFields: {\n      type: new _definition.GraphQLList(\n        new _definition.GraphQLNonNull(__InputValue),\n      ),\n      args: {\n        includeDeprecated: {\n          type: _scalars.GraphQLBoolean,\n          defaultValue: false,\n        },\n      },\n\n      resolve(type, { includeDeprecated }) {\n        if ((0, _definition.isInputObjectType)(type)) {\n          const values = Object.values(type.getFields());\n          return includeDeprecated\n            ? values\n            : values.filter((field) => field.deprecationReason == null);\n        }\n      },\n    },\n    ofType: {\n      type: __Type,\n      resolve: (type) => ('ofType' in type ? type.ofType : undefined),\n    },\n    isOneOf: {\n      type: _scalars.GraphQLBoolean,\n      resolve: (type) => {\n        if ((0, _definition.isInputObjectType)(type)) {\n          return type.isOneOf;\n        }\n      },\n    },\n  }),\n});\n\nexports.__Type = __Type;\n\nconst __Field = new _definition.GraphQLObjectType({\n  name: '__Field',\n  description:\n    'Object and Interface types are described by a list of Fields, each of which has a name, potentially a list of arguments, and a return type.',\n  fields: () => ({\n    name: {\n      type: new _definition.GraphQLNonNull(_scalars.GraphQLString),\n      resolve: (field) => field.name,\n    },\n    description: {\n      type: _scalars.GraphQLString,\n      resolve: (field) => field.description,\n    },\n    args: {\n      type: new _definition.GraphQLNonNull(\n        new _definition.GraphQLList(\n          new _definition.GraphQLNonNull(__InputValue),\n        ),\n      ),\n      args: {\n        includeDeprecated: {\n          type: _scalars.GraphQLBoolean,\n          defaultValue: false,\n        },\n      },\n\n      resolve(field, { includeDeprecated }) {\n        return includeDeprecated\n          ? field.args\n          : field.args.filter((arg) => arg.deprecationReason == null);\n      },\n    },\n    type: {\n      type: new _definition.GraphQLNonNull(__Type),\n      resolve: (field) => field.type,\n    },\n    isDeprecated: {\n      type: new _definition.GraphQLNonNull(_scalars.GraphQLBoolean),\n      resolve: (field) => field.deprecationReason != null,\n    },\n    deprecationReason: {\n      type: _scalars.GraphQLString,\n      resolve: (field) => field.deprecationReason,\n    },\n  }),\n});\n\nexports.__Field = __Field;\n\nconst __InputValue = new _definition.GraphQLObjectType({\n  name: '__InputValue',\n  description:\n    'Arguments provided to Fields or Directives and the input fields of an InputObject are represented as Input Values which describe their type and optionally a default value.',\n  fields: () => ({\n    name: {\n      type: new _definition.GraphQLNonNull(_scalars.GraphQLString),\n      resolve: (inputValue) => inputValue.name,\n    },\n    description: {\n      type: _scalars.GraphQLString,\n      resolve: (inputValue) => inputValue.description,\n    },\n    type: {\n      type: new _definition.GraphQLNonNull(__Type),\n      resolve: (inputValue) => inputValue.type,\n    },\n    defaultValue: {\n      type: _scalars.GraphQLString,\n      description:\n        'A GraphQL-formatted string representing the default value for this input value.',\n\n      resolve(inputValue) {\n        const { type, defaultValue } = inputValue;\n        const valueAST = (0, _astFromValue.astFromValue)(defaultValue, type);\n        return valueAST ? (0, _printer.print)(valueAST) : null;\n      },\n    },\n    isDeprecated: {\n      type: new _definition.GraphQLNonNull(_scalars.GraphQLBoolean),\n      resolve: (field) => field.deprecationReason != null,\n    },\n    deprecationReason: {\n      type: _scalars.GraphQLString,\n      resolve: (obj) => obj.deprecationReason,\n    },\n  }),\n});\n\nexports.__InputValue = __InputValue;\n\nconst __EnumValue = new _definition.GraphQLObjectType({\n  name: '__EnumValue',\n  description:\n    'One possible value for a given Enum. Enum values are unique values, not a placeholder for a string or numeric value. However an Enum value is returned in a JSON response as a string.',\n  fields: () => ({\n    name: {\n      type: new _definition.GraphQLNonNull(_scalars.GraphQLString),\n      resolve: (enumValue) => enumValue.name,\n    },\n    description: {\n      type: _scalars.GraphQLString,\n      resolve: (enumValue) => enumValue.description,\n    },\n    isDeprecated: {\n      type: new _definition.GraphQLNonNull(_scalars.GraphQLBoolean),\n      resolve: (enumValue) => enumValue.deprecationReason != null,\n    },\n    deprecationReason: {\n      type: _scalars.GraphQLString,\n      resolve: (enumValue) => enumValue.deprecationReason,\n    },\n  }),\n});\n\nexports.__EnumValue = __EnumValue;\nvar TypeKind;\nexports.TypeKind = TypeKind;\n\n(function (TypeKind) {\n  TypeKind['SCALAR'] = 'SCALAR';\n  TypeKind['OBJECT'] = 'OBJECT';\n  TypeKind['INTERFACE'] = 'INTERFACE';\n  TypeKind['UNION'] = 'UNION';\n  TypeKind['ENUM'] = 'ENUM';\n  TypeKind['INPUT_OBJECT'] = 'INPUT_OBJECT';\n  TypeKind['LIST'] = 'LIST';\n  TypeKind['NON_NULL'] = 'NON_NULL';\n})(TypeKind || (exports.TypeKind = TypeKind = {}));\n\nconst __TypeKind = new _definition.GraphQLEnumType({\n  name: '__TypeKind',\n  description: 'An enum describing what kind of type a given `__Type` is.',\n  values: {\n    SCALAR: {\n      value: TypeKind.SCALAR,\n      description: 'Indicates this type is a scalar.',\n    },\n    OBJECT: {\n      value: TypeKind.OBJECT,\n      description:\n        'Indicates this type is an object. `fields` and `interfaces` are valid fields.',\n    },\n    INTERFACE: {\n      value: TypeKind.INTERFACE,\n      description:\n        'Indicates this type is an interface. `fields`, `interfaces`, and `possibleTypes` are valid fields.',\n    },\n    UNION: {\n      value: TypeKind.UNION,\n      description:\n        'Indicates this type is a union. `possibleTypes` is a valid field.',\n    },\n    ENUM: {\n      value: TypeKind.ENUM,\n      description:\n        'Indicates this type is an enum. `enumValues` is a valid field.',\n    },\n    INPUT_OBJECT: {\n      value: TypeKind.INPUT_OBJECT,\n      description:\n        'Indicates this type is an input object. `inputFields` is a valid field.',\n    },\n    LIST: {\n      value: TypeKind.LIST,\n      description: 'Indicates this type is a list. `ofType` is a valid field.',\n    },\n    NON_NULL: {\n      value: TypeKind.NON_NULL,\n      description:\n        'Indicates this type is a non-null. `ofType` is a valid field.',\n    },\n  },\n});\n/**\n * Note that these are GraphQLField and not GraphQLFieldConfig,\n * so the format for args is different.\n */\n\nexports.__TypeKind = __TypeKind;\nconst SchemaMetaFieldDef = {\n  name: '__schema',\n  type: new _definition.GraphQLNonNull(__Schema),\n  description: 'Access the current type schema of this server.',\n  args: [],\n  resolve: (_source, _args, _context, { schema }) => schema,\n  deprecationReason: undefined,\n  extensions: Object.create(null),\n  astNode: undefined,\n};\nexports.SchemaMetaFieldDef = SchemaMetaFieldDef;\nconst TypeMetaFieldDef = {\n  name: '__type',\n  type: __Type,\n  description: 'Request the type information of a single type.',\n  args: [\n    {\n      name: 'name',\n      description: undefined,\n      type: new _definition.GraphQLNonNull(_scalars.GraphQLString),\n      defaultValue: undefined,\n      deprecationReason: undefined,\n      extensions: Object.create(null),\n      astNode: undefined,\n    },\n  ],\n  resolve: (_source, { name }, _context, { schema }) => schema.getType(name),\n  deprecationReason: undefined,\n  extensions: Object.create(null),\n  astNode: undefined,\n};\nexports.TypeMetaFieldDef = TypeMetaFieldDef;\nconst TypeNameMetaFieldDef = {\n  name: '__typename',\n  type: new _definition.GraphQLNonNull(_scalars.GraphQLString),\n  description: 'The name of the current Object type at runtime.',\n  args: [],\n  resolve: (_source, _args, _context, { parentType }) => parentType.name,\n  deprecationReason: undefined,\n  extensions: Object.create(null),\n  astNode: undefined,\n};\nexports.TypeNameMetaFieldDef = TypeNameMetaFieldDef;\nconst introspectionTypes = Object.freeze([\n  __Schema,\n  __Directive,\n  __DirectiveLocation,\n  __Type,\n  __Field,\n  __InputValue,\n  __EnumValue,\n  __TypeKind,\n]);\nexports.introspectionTypes = introspectionTypes;\n\nfunction isIntrospectionType(type) {\n  return introspectionTypes.some(({ name }) => type.name === name);\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.GraphQLSchema = void 0;\nexports.assertSchema = assertSchema;\nexports.isSchema = isSchema;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _instanceOf = require('../jsutils/instanceOf.js');\n\nvar _isObjectLike = require('../jsutils/isObjectLike.js');\n\nvar _toObjMap = require('../jsutils/toObjMap.js');\n\nvar _ast = require('../language/ast.js');\n\nvar _definition = require('./definition.js');\n\nvar _directives = require('./directives.js');\n\nvar _introspection = require('./introspection.js');\n\n/**\n * Test if the given value is a GraphQL schema.\n */\nfunction isSchema(schema) {\n  return (0, _instanceOf.instanceOf)(schema, GraphQLSchema);\n}\n\nfunction assertSchema(schema) {\n  if (!isSchema(schema)) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(schema)} to be a GraphQL schema.`,\n    );\n  }\n\n  return schema;\n}\n/**\n * Custom extensions\n *\n * @remarks\n * Use a unique identifier name for your extension, for example the name of\n * your library or project. Do not use a shortened identifier as this increases\n * the risk of conflicts. We recommend you add at most one extension field,\n * an object which can contain all the values you need.\n */\n\n/**\n * Schema Definition\n *\n * A Schema is created by supplying the root types of each type of operation,\n * query and mutation (optional). A schema definition is then supplied to the\n * validator and executor.\n *\n * Example:\n *\n * ```ts\n * const MyAppSchema = new GraphQLSchema({\n *   query: MyAppQueryRootType,\n *   mutation: MyAppMutationRootType,\n * })\n * ```\n *\n * Note: When the schema is constructed, by default only the types that are\n * reachable by traversing the root types are included, other types must be\n * explicitly referenced.\n *\n * Example:\n *\n * ```ts\n * const characterInterface = new GraphQLInterfaceType({\n *   name: 'Character',\n *   ...\n * });\n *\n * const humanType = new GraphQLObjectType({\n *   name: 'Human',\n *   interfaces: [characterInterface],\n *   ...\n * });\n *\n * const droidType = new GraphQLObjectType({\n *   name: 'Droid',\n *   interfaces: [characterInterface],\n *   ...\n * });\n *\n * const schema = new GraphQLSchema({\n *   query: new GraphQLObjectType({\n *     name: 'Query',\n *     fields: {\n *       hero: { type: characterInterface, ... },\n *     }\n *   }),\n *   ...\n *   // Since this schema references only the `Character` interface it's\n *   // necessary to explicitly list the types that implement it if\n *   // you want them to be included in the final schema.\n *   types: [humanType, droidType],\n * })\n * ```\n *\n * Note: If an array of `directives` are provided to GraphQLSchema, that will be\n * the exact list of directives represented and allowed. If `directives` is not\n * provided then a default set of the specified directives (e.g. `@include` and\n * `@skip`) will be used. If you wish to provide *additional* directives to these\n * specified directives, you must explicitly declare them. Example:\n *\n * ```ts\n * const MyAppSchema = new GraphQLSchema({\n *   ...\n *   directives: specifiedDirectives.concat([ myCustomDirective ]),\n * })\n * ```\n */\nclass GraphQLSchema {\n  // Used as a cache for validateSchema().\n  constructor(config) {\n    var _config$extensionASTN, _config$directives;\n\n    // If this schema was built from a source known to be valid, then it may be\n    // marked with assumeValid to avoid an additional type system validation.\n    this.__validationErrors = config.assumeValid === true ? [] : undefined; // Check for common mistakes during construction to produce early errors.\n\n    (0, _isObjectLike.isObjectLike)(config) ||\n      (0, _devAssert.devAssert)(false, 'Must provide configuration object.');\n    !config.types ||\n      Array.isArray(config.types) ||\n      (0, _devAssert.devAssert)(\n        false,\n        `\"types\" must be Array if provided but got: ${(0, _inspect.inspect)(\n          config.types,\n        )}.`,\n      );\n    !config.directives ||\n      Array.isArray(config.directives) ||\n      (0, _devAssert.devAssert)(\n        false,\n        '\"directives\" must be Array if provided but got: ' +\n          `${(0, _inspect.inspect)(config.directives)}.`,\n      );\n    this.description = config.description;\n    this.extensions = (0, _toObjMap.toObjMap)(config.extensions);\n    this.astNode = config.astNode;\n    this.extensionASTNodes =\n      (_config$extensionASTN = config.extensionASTNodes) !== null &&\n      _config$extensionASTN !== void 0\n        ? _config$extensionASTN\n        : [];\n    this._queryType = config.query;\n    this._mutationType = config.mutation;\n    this._subscriptionType = config.subscription; // Provide specified directives (e.g. @include and @skip) by default.\n\n    this._directives =\n      (_config$directives = config.directives) !== null &&\n      _config$directives !== void 0\n        ? _config$directives\n        : _directives.specifiedDirectives; // To preserve order of user-provided types, we add first to add them to\n    // the set of \"collected\" types, so `collectReferencedTypes` ignore them.\n\n    const allReferencedTypes = new Set(config.types);\n\n    if (config.types != null) {\n      for (const type of config.types) {\n        // When we ready to process this type, we remove it from \"collected\" types\n        // and then add it together with all dependent types in the correct position.\n        allReferencedTypes.delete(type);\n        collectReferencedTypes(type, allReferencedTypes);\n      }\n    }\n\n    if (this._queryType != null) {\n      collectReferencedTypes(this._queryType, allReferencedTypes);\n    }\n\n    if (this._mutationType != null) {\n      collectReferencedTypes(this._mutationType, allReferencedTypes);\n    }\n\n    if (this._subscriptionType != null) {\n      collectReferencedTypes(this._subscriptionType, allReferencedTypes);\n    }\n\n    for (const directive of this._directives) {\n      // Directives are not validated until validateSchema() is called.\n      if ((0, _directives.isDirective)(directive)) {\n        for (const arg of directive.args) {\n          collectReferencedTypes(arg.type, allReferencedTypes);\n        }\n      }\n    }\n\n    collectReferencedTypes(_introspection.__Schema, allReferencedTypes); // Storing the resulting map for reference by the schema.\n\n    this._typeMap = Object.create(null);\n    this._subTypeMap = Object.create(null); // Keep track of all implementations by interface name.\n\n    this._implementationsMap = Object.create(null);\n\n    for (const namedType of allReferencedTypes) {\n      if (namedType == null) {\n        continue;\n      }\n\n      const typeName = namedType.name;\n      typeName ||\n        (0, _devAssert.devAssert)(\n          false,\n          'One of the provided types for building the Schema is missing a name.',\n        );\n\n      if (this._typeMap[typeName] !== undefined) {\n        throw new Error(\n          `Schema must contain uniquely named types but contains multiple types named \"${typeName}\".`,\n        );\n      }\n\n      this._typeMap[typeName] = namedType;\n\n      if ((0, _definition.isInterfaceType)(namedType)) {\n        // Store implementations by interface.\n        for (const iface of namedType.getInterfaces()) {\n          if ((0, _definition.isInterfaceType)(iface)) {\n            let implementations = this._implementationsMap[iface.name];\n\n            if (implementations === undefined) {\n              implementations = this._implementationsMap[iface.name] = {\n                objects: [],\n                interfaces: [],\n              };\n            }\n\n            implementations.interfaces.push(namedType);\n          }\n        }\n      } else if ((0, _definition.isObjectType)(namedType)) {\n        // Store implementations by objects.\n        for (const iface of namedType.getInterfaces()) {\n          if ((0, _definition.isInterfaceType)(iface)) {\n            let implementations = this._implementationsMap[iface.name];\n\n            if (implementations === undefined) {\n              implementations = this._implementationsMap[iface.name] = {\n                objects: [],\n                interfaces: [],\n              };\n            }\n\n            implementations.objects.push(namedType);\n          }\n        }\n      }\n    }\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'GraphQLSchema';\n  }\n\n  getQueryType() {\n    return this._queryType;\n  }\n\n  getMutationType() {\n    return this._mutationType;\n  }\n\n  getSubscriptionType() {\n    return this._subscriptionType;\n  }\n\n  getRootType(operation) {\n    switch (operation) {\n      case _ast.OperationTypeNode.QUERY:\n        return this.getQueryType();\n\n      case _ast.OperationTypeNode.MUTATION:\n        return this.getMutationType();\n\n      case _ast.OperationTypeNode.SUBSCRIPTION:\n        return this.getSubscriptionType();\n    }\n  }\n\n  getTypeMap() {\n    return this._typeMap;\n  }\n\n  getType(name) {\n    return this.getTypeMap()[name];\n  }\n\n  getPossibleTypes(abstractType) {\n    return (0, _definition.isUnionType)(abstractType)\n      ? abstractType.getTypes()\n      : this.getImplementations(abstractType).objects;\n  }\n\n  getImplementations(interfaceType) {\n    const implementations = this._implementationsMap[interfaceType.name];\n    return implementations !== null && implementations !== void 0\n      ? implementations\n      : {\n          objects: [],\n          interfaces: [],\n        };\n  }\n\n  isSubType(abstractType, maybeSubType) {\n    let map = this._subTypeMap[abstractType.name];\n\n    if (map === undefined) {\n      map = Object.create(null);\n\n      if ((0, _definition.isUnionType)(abstractType)) {\n        for (const type of abstractType.getTypes()) {\n          map[type.name] = true;\n        }\n      } else {\n        const implementations = this.getImplementations(abstractType);\n\n        for (const type of implementations.objects) {\n          map[type.name] = true;\n        }\n\n        for (const type of implementations.interfaces) {\n          map[type.name] = true;\n        }\n      }\n\n      this._subTypeMap[abstractType.name] = map;\n    }\n\n    return map[maybeSubType.name] !== undefined;\n  }\n\n  getDirectives() {\n    return this._directives;\n  }\n\n  getDirective(name) {\n    return this.getDirectives().find((directive) => directive.name === name);\n  }\n\n  toConfig() {\n    return {\n      description: this.description,\n      query: this.getQueryType(),\n      mutation: this.getMutationType(),\n      subscription: this.getSubscriptionType(),\n      types: Object.values(this.getTypeMap()),\n      directives: this.getDirectives(),\n      extensions: this.extensions,\n      astNode: this.astNode,\n      extensionASTNodes: this.extensionASTNodes,\n      assumeValid: this.__validationErrors !== undefined,\n    };\n  }\n}\n\nexports.GraphQLSchema = GraphQLSchema;\n\nfunction collectReferencedTypes(type, typeSet) {\n  const namedType = (0, _definition.getNamedType)(type);\n\n  if (!typeSet.has(namedType)) {\n    typeSet.add(namedType);\n\n    if ((0, _definition.isUnionType)(namedType)) {\n      for (const memberType of namedType.getTypes()) {\n        collectReferencedTypes(memberType, typeSet);\n      }\n    } else if (\n      (0, _definition.isObjectType)(namedType) ||\n      (0, _definition.isInterfaceType)(namedType)\n    ) {\n      for (const interfaceType of namedType.getInterfaces()) {\n        collectReferencedTypes(interfaceType, typeSet);\n      }\n\n      for (const field of Object.values(namedType.getFields())) {\n        collectReferencedTypes(field.type, typeSet);\n\n        for (const arg of field.args) {\n          collectReferencedTypes(arg.type, typeSet);\n        }\n      }\n    } else if ((0, _definition.isInputObjectType)(namedType)) {\n      for (const field of Object.values(namedType.getFields())) {\n        collectReferencedTypes(field.type, typeSet);\n      }\n    }\n  }\n\n  return typeSet;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.assertValidSchema = assertValidSchema;\nexports.validateSchema = validateSchema;\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _GraphQLError = require('../error/GraphQLError.js');\n\nvar _ast = require('../language/ast.js');\n\nvar _typeComparators = require('../utilities/typeComparators.js');\n\nvar _definition = require('./definition.js');\n\nvar _directives = require('./directives.js');\n\nvar _introspection = require('./introspection.js');\n\nvar _schema = require('./schema.js');\n\n/**\n * Implements the \"Type Validation\" sub-sections of the specification's\n * \"Type System\" section.\n *\n * Validation runs synchronously, returning an array of encountered errors, or\n * an empty array if no errors were encountered and the Schema is valid.\n */\nfunction validateSchema(schema) {\n  // First check to ensure the provided value is in fact a GraphQLSchema.\n  (0, _schema.assertSchema)(schema); // If this Schema has already been validated, return the previous results.\n\n  if (schema.__validationErrors) {\n    return schema.__validationErrors;\n  } // Validate the schema, producing a list of errors.\n\n  const context = new SchemaValidationContext(schema);\n  validateRootTypes(context);\n  validateDirectives(context);\n  validateTypes(context); // Persist the results of validation before returning to ensure validation\n  // does not run multiple times for this schema.\n\n  const errors = context.getErrors();\n  schema.__validationErrors = errors;\n  return errors;\n}\n/**\n * Utility function which asserts a schema is valid by throwing an error if\n * it is invalid.\n */\n\nfunction assertValidSchema(schema) {\n  const errors = validateSchema(schema);\n\n  if (errors.length !== 0) {\n    throw new Error(errors.map((error) => error.message).join('\\n\\n'));\n  }\n}\n\nclass SchemaValidationContext {\n  constructor(schema) {\n    this._errors = [];\n    this.schema = schema;\n  }\n\n  reportError(message, nodes) {\n    const _nodes = Array.isArray(nodes) ? nodes.filter(Boolean) : nodes;\n\n    this._errors.push(\n      new _GraphQLError.GraphQLError(message, {\n        nodes: _nodes,\n      }),\n    );\n  }\n\n  getErrors() {\n    return this._errors;\n  }\n}\n\nfunction validateRootTypes(context) {\n  const schema = context.schema;\n  const queryType = schema.getQueryType();\n\n  if (!queryType) {\n    context.reportError('Query root type must be provided.', schema.astNode);\n  } else if (!(0, _definition.isObjectType)(queryType)) {\n    var _getOperationTypeNode;\n\n    context.reportError(\n      `Query root type must be Object type, it cannot be ${(0,\n      _inspect.inspect)(queryType)}.`,\n      (_getOperationTypeNode = getOperationTypeNode(\n        schema,\n        _ast.OperationTypeNode.QUERY,\n      )) !== null && _getOperationTypeNode !== void 0\n        ? _getOperationTypeNode\n        : queryType.astNode,\n    );\n  }\n\n  const mutationType = schema.getMutationType();\n\n  if (mutationType && !(0, _definition.isObjectType)(mutationType)) {\n    var _getOperationTypeNode2;\n\n    context.reportError(\n      'Mutation root type must be Object type if provided, it cannot be ' +\n        `${(0, _inspect.inspect)(mutationType)}.`,\n      (_getOperationTypeNode2 = getOperationTypeNode(\n        schema,\n        _ast.OperationTypeNode.MUTATION,\n      )) !== null && _getOperationTypeNode2 !== void 0\n        ? _getOperationTypeNode2\n        : mutationType.astNode,\n    );\n  }\n\n  const subscriptionType = schema.getSubscriptionType();\n\n  if (subscriptionType && !(0, _definition.isObjectType)(subscriptionType)) {\n    var _getOperationTypeNode3;\n\n    context.reportError(\n      'Subscription root type must be Object type if provided, it cannot be ' +\n        `${(0, _inspect.inspect)(subscriptionType)}.`,\n      (_getOperationTypeNode3 = getOperationTypeNode(\n        schema,\n        _ast.OperationTypeNode.SUBSCRIPTION,\n      )) !== null && _getOperationTypeNode3 !== void 0\n        ? _getOperationTypeNode3\n        : subscriptionType.astNode,\n    );\n  }\n}\n\nfunction getOperationTypeNode(schema, operation) {\n  var _flatMap$find;\n\n  return (_flatMap$find = [schema.astNode, ...schema.extensionASTNodes]\n    .flatMap(\n      // FIXME: https://github.com/graphql/graphql-js/issues/2203\n      (schemaNode) => {\n        var _schemaNode$operation;\n\n        return (\n          /* c8 ignore next */\n          (_schemaNode$operation =\n            schemaNode === null || schemaNode === void 0\n              ? void 0\n              : schemaNode.operationTypes) !== null &&\n            _schemaNode$operation !== void 0\n            ? _schemaNode$operation\n            : []\n        );\n      },\n    )\n    .find((operationNode) => operationNode.operation === operation)) === null ||\n    _flatMap$find === void 0\n    ? void 0\n    : _flatMap$find.type;\n}\n\nfunction validateDirectives(context) {\n  for (const directive of context.schema.getDirectives()) {\n    // Ensure all directives are in fact GraphQL directives.\n    if (!(0, _directives.isDirective)(directive)) {\n      context.reportError(\n        `Expected directive but got: ${(0, _inspect.inspect)(directive)}.`,\n        directive === null || directive === void 0 ? void 0 : directive.astNode,\n      );\n      continue;\n    } // Ensure they are named correctly.\n\n    validateName(context, directive);\n\n    if (directive.locations.length === 0) {\n      context.reportError(\n        `Directive @${directive.name} must include 1 or more locations.`,\n        directive.astNode,\n      );\n    } // Ensure the arguments are valid.\n\n    for (const arg of directive.args) {\n      // Ensure they are named correctly.\n      validateName(context, arg); // Ensure the type is an input type.\n\n      if (!(0, _definition.isInputType)(arg.type)) {\n        context.reportError(\n          `The type of @${directive.name}(${arg.name}:) must be Input Type ` +\n            `but got: ${(0, _inspect.inspect)(arg.type)}.`,\n          arg.astNode,\n        );\n      }\n\n      if (\n        (0, _definition.isRequiredArgument)(arg) &&\n        arg.deprecationReason != null\n      ) {\n        var _arg$astNode;\n\n        context.reportError(\n          `Required argument @${directive.name}(${arg.name}:) cannot be deprecated.`,\n          [\n            getDeprecatedDirectiveNode(arg.astNode),\n            (_arg$astNode = arg.astNode) === null || _arg$astNode === void 0\n              ? void 0\n              : _arg$astNode.type,\n          ],\n        );\n      }\n    }\n  }\n}\n\nfunction validateName(context, node) {\n  // Ensure names are valid, however introspection types opt out.\n  if (node.name.startsWith('__')) {\n    context.reportError(\n      `Name \"${node.name}\" must not begin with \"__\", which is reserved by GraphQL introspection.`,\n      node.astNode,\n    );\n  }\n}\n\nfunction validateTypes(context) {\n  const validateInputObjectCircularRefs =\n    createInputObjectCircularRefsValidator(context);\n  const typeMap = context.schema.getTypeMap();\n\n  for (const type of Object.values(typeMap)) {\n    // Ensure all provided types are in fact GraphQL type.\n    if (!(0, _definition.isNamedType)(type)) {\n      context.reportError(\n        `Expected GraphQL named type but got: ${(0, _inspect.inspect)(type)}.`,\n        type.astNode,\n      );\n      continue;\n    } // Ensure it is named correctly (excluding introspection types).\n\n    if (!(0, _introspection.isIntrospectionType)(type)) {\n      validateName(context, type);\n    }\n\n    if ((0, _definition.isObjectType)(type)) {\n      // Ensure fields are valid\n      validateFields(context, type); // Ensure objects implement the interfaces they claim to.\n\n      validateInterfaces(context, type);\n    } else if ((0, _definition.isInterfaceType)(type)) {\n      // Ensure fields are valid.\n      validateFields(context, type); // Ensure interfaces implement the interfaces they claim to.\n\n      validateInterfaces(context, type);\n    } else if ((0, _definition.isUnionType)(type)) {\n      // Ensure Unions include valid member types.\n      validateUnionMembers(context, type);\n    } else if ((0, _definition.isEnumType)(type)) {\n      // Ensure Enums have valid values.\n      validateEnumValues(context, type);\n    } else if ((0, _definition.isInputObjectType)(type)) {\n      // Ensure Input Object fields are valid.\n      validateInputFields(context, type); // Ensure Input Objects do not contain non-nullable circular references\n\n      validateInputObjectCircularRefs(type);\n    }\n  }\n}\n\nfunction validateFields(context, type) {\n  const fields = Object.values(type.getFields()); // Objects and Interfaces both must define one or more fields.\n\n  if (fields.length === 0) {\n    context.reportError(`Type ${type.name} must define one or more fields.`, [\n      type.astNode,\n      ...type.extensionASTNodes,\n    ]);\n  }\n\n  for (const field of fields) {\n    // Ensure they are named correctly.\n    validateName(context, field); // Ensure the type is an output type\n\n    if (!(0, _definition.isOutputType)(field.type)) {\n      var _field$astNode;\n\n      context.reportError(\n        `The type of ${type.name}.${field.name} must be Output Type ` +\n          `but got: ${(0, _inspect.inspect)(field.type)}.`,\n        (_field$astNode = field.astNode) === null || _field$astNode === void 0\n          ? void 0\n          : _field$astNode.type,\n      );\n    } // Ensure the arguments are valid\n\n    for (const arg of field.args) {\n      const argName = arg.name; // Ensure they are named correctly.\n\n      validateName(context, arg); // Ensure the type is an input type\n\n      if (!(0, _definition.isInputType)(arg.type)) {\n        var _arg$astNode2;\n\n        context.reportError(\n          `The type of ${type.name}.${field.name}(${argName}:) must be Input ` +\n            `Type but got: ${(0, _inspect.inspect)(arg.type)}.`,\n          (_arg$astNode2 = arg.astNode) === null || _arg$astNode2 === void 0\n            ? void 0\n            : _arg$astNode2.type,\n        );\n      }\n\n      if (\n        (0, _definition.isRequiredArgument)(arg) &&\n        arg.deprecationReason != null\n      ) {\n        var _arg$astNode3;\n\n        context.reportError(\n          `Required argument ${type.name}.${field.name}(${argName}:) cannot be deprecated.`,\n          [\n            getDeprecatedDirectiveNode(arg.astNode),\n            (_arg$astNode3 = arg.astNode) === null || _arg$astNode3 === void 0\n              ? void 0\n              : _arg$astNode3.type,\n          ],\n        );\n      }\n    }\n  }\n}\n\nfunction validateInterfaces(context, type) {\n  const ifaceTypeNames = Object.create(null);\n\n  for (const iface of type.getInterfaces()) {\n    if (!(0, _definition.isInterfaceType)(iface)) {\n      context.reportError(\n        `Type ${(0, _inspect.inspect)(\n          type,\n        )} must only implement Interface types, ` +\n          `it cannot implement ${(0, _inspect.inspect)(iface)}.`,\n        getAllImplementsInterfaceNodes(type, iface),\n      );\n      continue;\n    }\n\n    if (type === iface) {\n      context.reportError(\n        `Type ${type.name} cannot implement itself because it would create a circular reference.`,\n        getAllImplementsInterfaceNodes(type, iface),\n      );\n      continue;\n    }\n\n    if (ifaceTypeNames[iface.name]) {\n      context.reportError(\n        `Type ${type.name} can only implement ${iface.name} once.`,\n        getAllImplementsInterfaceNodes(type, iface),\n      );\n      continue;\n    }\n\n    ifaceTypeNames[iface.name] = true;\n    validateTypeImplementsAncestors(context, type, iface);\n    validateTypeImplementsInterface(context, type, iface);\n  }\n}\n\nfunction validateTypeImplementsInterface(context, type, iface) {\n  const typeFieldMap = type.getFields(); // Assert each interface field is implemented.\n\n  for (const ifaceField of Object.values(iface.getFields())) {\n    const fieldName = ifaceField.name;\n    const typeField = typeFieldMap[fieldName]; // Assert interface field exists on type.\n\n    if (!typeField) {\n      context.reportError(\n        `Interface field ${iface.name}.${fieldName} expected but ${type.name} does not provide it.`,\n        [ifaceField.astNode, type.astNode, ...type.extensionASTNodes],\n      );\n      continue;\n    } // Assert interface field type is satisfied by type field type, by being\n    // a valid subtype. (covariant)\n\n    if (\n      !(0, _typeComparators.isTypeSubTypeOf)(\n        context.schema,\n        typeField.type,\n        ifaceField.type,\n      )\n    ) {\n      var _ifaceField$astNode, _typeField$astNode;\n\n      context.reportError(\n        `Interface field ${iface.name}.${fieldName} expects type ` +\n          `${(0, _inspect.inspect)(ifaceField.type)} but ${\n            type.name\n          }.${fieldName} ` +\n          `is type ${(0, _inspect.inspect)(typeField.type)}.`,\n        [\n          (_ifaceField$astNode = ifaceField.astNode) === null ||\n          _ifaceField$astNode === void 0\n            ? void 0\n            : _ifaceField$astNode.type,\n          (_typeField$astNode = typeField.astNode) === null ||\n          _typeField$astNode === void 0\n            ? void 0\n            : _typeField$astNode.type,\n        ],\n      );\n    } // Assert each interface field arg is implemented.\n\n    for (const ifaceArg of ifaceField.args) {\n      const argName = ifaceArg.name;\n      const typeArg = typeField.args.find((arg) => arg.name === argName); // Assert interface field arg exists on object field.\n\n      if (!typeArg) {\n        context.reportError(\n          `Interface field argument ${iface.name}.${fieldName}(${argName}:) expected but ${type.name}.${fieldName} does not provide it.`,\n          [ifaceArg.astNode, typeField.astNode],\n        );\n        continue;\n      } // Assert interface field arg type matches object field arg type.\n      // (invariant)\n      // TODO: change to contravariant?\n\n      if (!(0, _typeComparators.isEqualType)(ifaceArg.type, typeArg.type)) {\n        var _ifaceArg$astNode, _typeArg$astNode;\n\n        context.reportError(\n          `Interface field argument ${iface.name}.${fieldName}(${argName}:) ` +\n            `expects type ${(0, _inspect.inspect)(ifaceArg.type)} but ` +\n            `${type.name}.${fieldName}(${argName}:) is type ` +\n            `${(0, _inspect.inspect)(typeArg.type)}.`,\n          [\n            (_ifaceArg$astNode = ifaceArg.astNode) === null ||\n            _ifaceArg$astNode === void 0\n              ? void 0\n              : _ifaceArg$astNode.type,\n            (_typeArg$astNode = typeArg.astNode) === null ||\n            _typeArg$astNode === void 0\n              ? void 0\n              : _typeArg$astNode.type,\n          ],\n        );\n      } // TODO: validate default values?\n    } // Assert additional arguments must not be required.\n\n    for (const typeArg of typeField.args) {\n      const argName = typeArg.name;\n      const ifaceArg = ifaceField.args.find((arg) => arg.name === argName);\n\n      if (!ifaceArg && (0, _definition.isRequiredArgument)(typeArg)) {\n        context.reportError(\n          `Object field ${type.name}.${fieldName} includes required argument ${argName} that is missing from the Interface field ${iface.name}.${fieldName}.`,\n          [typeArg.astNode, ifaceField.astNode],\n        );\n      }\n    }\n  }\n}\n\nfunction validateTypeImplementsAncestors(context, type, iface) {\n  const ifaceInterfaces = type.getInterfaces();\n\n  for (const transitive of iface.getInterfaces()) {\n    if (!ifaceInterfaces.includes(transitive)) {\n      context.reportError(\n        transitive === type\n          ? `Type ${type.name} cannot implement ${iface.name} because it would create a circular reference.`\n          : `Type ${type.name} must implement ${transitive.name} because it is implemented by ${iface.name}.`,\n        [\n          ...getAllImplementsInterfaceNodes(iface, transitive),\n          ...getAllImplementsInterfaceNodes(type, iface),\n        ],\n      );\n    }\n  }\n}\n\nfunction validateUnionMembers(context, union) {\n  const memberTypes = union.getTypes();\n\n  if (memberTypes.length === 0) {\n    context.reportError(\n      `Union type ${union.name} must define one or more member types.`,\n      [union.astNode, ...union.extensionASTNodes],\n    );\n  }\n\n  const includedTypeNames = Object.create(null);\n\n  for (const memberType of memberTypes) {\n    if (includedTypeNames[memberType.name]) {\n      context.reportError(\n        `Union type ${union.name} can only include type ${memberType.name} once.`,\n        getUnionMemberTypeNodes(union, memberType.name),\n      );\n      continue;\n    }\n\n    includedTypeNames[memberType.name] = true;\n\n    if (!(0, _definition.isObjectType)(memberType)) {\n      context.reportError(\n        `Union type ${union.name} can only include Object types, ` +\n          `it cannot include ${(0, _inspect.inspect)(memberType)}.`,\n        getUnionMemberTypeNodes(union, String(memberType)),\n      );\n    }\n  }\n}\n\nfunction validateEnumValues(context, enumType) {\n  const enumValues = enumType.getValues();\n\n  if (enumValues.length === 0) {\n    context.reportError(\n      `Enum type ${enumType.name} must define one or more values.`,\n      [enumType.astNode, ...enumType.extensionASTNodes],\n    );\n  }\n\n  for (const enumValue of enumValues) {\n    // Ensure valid name.\n    validateName(context, enumValue);\n  }\n}\n\nfunction validateInputFields(context, inputObj) {\n  const fields = Object.values(inputObj.getFields());\n\n  if (fields.length === 0) {\n    context.reportError(\n      `Input Object type ${inputObj.name} must define one or more fields.`,\n      [inputObj.astNode, ...inputObj.extensionASTNodes],\n    );\n  } // Ensure the arguments are valid\n\n  for (const field of fields) {\n    // Ensure they are named correctly.\n    validateName(context, field); // Ensure the type is an input type\n\n    if (!(0, _definition.isInputType)(field.type)) {\n      var _field$astNode2;\n\n      context.reportError(\n        `The type of ${inputObj.name}.${field.name} must be Input Type ` +\n          `but got: ${(0, _inspect.inspect)(field.type)}.`,\n        (_field$astNode2 = field.astNode) === null || _field$astNode2 === void 0\n          ? void 0\n          : _field$astNode2.type,\n      );\n    }\n\n    if (\n      (0, _definition.isRequiredInputField)(field) &&\n      field.deprecationReason != null\n    ) {\n      var _field$astNode3;\n\n      context.reportError(\n        `Required input field ${inputObj.name}.${field.name} cannot be deprecated.`,\n        [\n          getDeprecatedDirectiveNode(field.astNode),\n          (_field$astNode3 = field.astNode) === null ||\n          _field$astNode3 === void 0\n            ? void 0\n            : _field$astNode3.type,\n        ],\n      );\n    }\n\n    if (inputObj.isOneOf) {\n      validateOneOfInputObjectField(inputObj, field, context);\n    }\n  }\n}\n\nfunction validateOneOfInputObjectField(type, field, context) {\n  if ((0, _definition.isNonNullType)(field.type)) {\n    var _field$astNode4;\n\n    context.reportError(\n      `OneOf input field ${type.name}.${field.name} must be nullable.`,\n      (_field$astNode4 = field.astNode) === null || _field$astNode4 === void 0\n        ? void 0\n        : _field$astNode4.type,\n    );\n  }\n\n  if (field.defaultValue !== undefined) {\n    context.reportError(\n      `OneOf input field ${type.name}.${field.name} cannot have a default value.`,\n      field.astNode,\n    );\n  }\n}\n\nfunction createInputObjectCircularRefsValidator(context) {\n  // Modified copy of algorithm from 'src/validation/rules/NoFragmentCycles.js'.\n  // Tracks already visited types to maintain O(N) and to ensure that cycles\n  // are not redundantly reported.\n  const visitedTypes = Object.create(null); // Array of types nodes used to produce meaningful errors\n\n  const fieldPath = []; // Position in the type path\n\n  const fieldPathIndexByTypeName = Object.create(null);\n  return detectCycleRecursive; // This does a straight-forward DFS to find cycles.\n  // It does not terminate when a cycle was found but continues to explore\n  // the graph to find all possible cycles.\n\n  function detectCycleRecursive(inputObj) {\n    if (visitedTypes[inputObj.name]) {\n      return;\n    }\n\n    visitedTypes[inputObj.name] = true;\n    fieldPathIndexByTypeName[inputObj.name] = fieldPath.length;\n    const fields = Object.values(inputObj.getFields());\n\n    for (const field of fields) {\n      if (\n        (0, _definition.isNonNullType)(field.type) &&\n        (0, _definition.isInputObjectType)(field.type.ofType)\n      ) {\n        const fieldType = field.type.ofType;\n        const cycleIndex = fieldPathIndexByTypeName[fieldType.name];\n        fieldPath.push(field);\n\n        if (cycleIndex === undefined) {\n          detectCycleRecursive(fieldType);\n        } else {\n          const cyclePath = fieldPath.slice(cycleIndex);\n          const pathStr = cyclePath.map((fieldObj) => fieldObj.name).join('.');\n          context.reportError(\n            `Cannot reference Input Object \"${fieldType.name}\" within itself through a series of non-null fields: \"${pathStr}\".`,\n            cyclePath.map((fieldObj) => fieldObj.astNode),\n          );\n        }\n\n        fieldPath.pop();\n      }\n    }\n\n    fieldPathIndexByTypeName[inputObj.name] = undefined;\n  }\n}\n\nfunction getAllImplementsInterfaceNodes(type, iface) {\n  const { astNode, extensionASTNodes } = type;\n  const nodes =\n    astNode != null ? [astNode, ...extensionASTNodes] : extensionASTNodes; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n  return nodes\n    .flatMap((typeNode) => {\n      var _typeNode$interfaces;\n\n      return (\n        /* c8 ignore next */\n        (_typeNode$interfaces = typeNode.interfaces) !== null &&\n          _typeNode$interfaces !== void 0\n          ? _typeNode$interfaces\n          : []\n      );\n    })\n    .filter((ifaceNode) => ifaceNode.name.value === iface.name);\n}\n\nfunction getUnionMemberTypeNodes(union, typeName) {\n  const { astNode, extensionASTNodes } = union;\n  const nodes =\n    astNode != null ? [astNode, ...extensionASTNodes] : extensionASTNodes; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n  return nodes\n    .flatMap((unionNode) => {\n      var _unionNode$types;\n\n      return (\n        /* c8 ignore next */\n        (_unionNode$types = unionNode.types) !== null &&\n          _unionNode$types !== void 0\n          ? _unionNode$types\n          : []\n      );\n    })\n    .filter((typeNode) => typeNode.name.value === typeName);\n}\n\nfunction getDeprecatedDirectiveNode(definitionNode) {\n  var _definitionNode$direc;\n\n  return definitionNode === null || definitionNode === void 0\n    ? void 0\n    : (_definitionNode$direc = definitionNode.directives) === null ||\n      _definitionNode$direc === void 0\n    ? void 0\n    : _definitionNode$direc.find(\n        (node) =>\n          node.name.value === _directives.GraphQLDeprecatedDirective.name,\n      );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.typeFromAST = typeFromAST;\n\nvar _kinds = require('../language/kinds.js');\n\nvar _definition = require('../type/definition.js');\n\nfunction typeFromAST(schema, typeNode) {\n  switch (typeNode.kind) {\n    case _kinds.Kind.LIST_TYPE: {\n      const innerType = typeFromAST(schema, typeNode.type);\n      return innerType && new _definition.GraphQLList(innerType);\n    }\n\n    case _kinds.Kind.NON_NULL_TYPE: {\n      const innerType = typeFromAST(schema, typeNode.type);\n      return innerType && new _definition.GraphQLNonNull(innerType);\n    }\n\n    case _kinds.Kind.NAMED_TYPE:\n      return schema.getType(typeNode.name.value);\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.TypeInfo = void 0;\nexports.visitWithTypeInfo = visitWithTypeInfo;\n\nvar _ast = require('../language/ast.js');\n\nvar _kinds = require('../language/kinds.js');\n\nvar _visitor = require('../language/visitor.js');\n\nvar _definition = require('../type/definition.js');\n\nvar _introspection = require('../type/introspection.js');\n\nvar _typeFromAST = require('./typeFromAST.js');\n\n/**\n * TypeInfo is a utility class which, given a GraphQL schema, can keep track\n * of the current field and type definitions at any point in a GraphQL document\n * AST during a recursive descent by calling `enter(node)` and `leave(node)`.\n */\nclass TypeInfo {\n  constructor(\n    schema,\n    /**\n     * Initial type may be provided in rare cases to facilitate traversals\n     *  beginning somewhere other than documents.\n     */\n    initialType,\n    /** @deprecated will be removed in 17.0.0 */\n    getFieldDefFn,\n  ) {\n    this._schema = schema;\n    this._typeStack = [];\n    this._parentTypeStack = [];\n    this._inputTypeStack = [];\n    this._fieldDefStack = [];\n    this._defaultValueStack = [];\n    this._directive = null;\n    this._argument = null;\n    this._enumValue = null;\n    this._getFieldDef =\n      getFieldDefFn !== null && getFieldDefFn !== void 0\n        ? getFieldDefFn\n        : getFieldDef;\n\n    if (initialType) {\n      if ((0, _definition.isInputType)(initialType)) {\n        this._inputTypeStack.push(initialType);\n      }\n\n      if ((0, _definition.isCompositeType)(initialType)) {\n        this._parentTypeStack.push(initialType);\n      }\n\n      if ((0, _definition.isOutputType)(initialType)) {\n        this._typeStack.push(initialType);\n      }\n    }\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'TypeInfo';\n  }\n\n  getType() {\n    if (this._typeStack.length > 0) {\n      return this._typeStack[this._typeStack.length - 1];\n    }\n  }\n\n  getParentType() {\n    if (this._parentTypeStack.length > 0) {\n      return this._parentTypeStack[this._parentTypeStack.length - 1];\n    }\n  }\n\n  getInputType() {\n    if (this._inputTypeStack.length > 0) {\n      return this._inputTypeStack[this._inputTypeStack.length - 1];\n    }\n  }\n\n  getParentInputType() {\n    if (this._inputTypeStack.length > 1) {\n      return this._inputTypeStack[this._inputTypeStack.length - 2];\n    }\n  }\n\n  getFieldDef() {\n    if (this._fieldDefStack.length > 0) {\n      return this._fieldDefStack[this._fieldDefStack.length - 1];\n    }\n  }\n\n  getDefaultValue() {\n    if (this._defaultValueStack.length > 0) {\n      return this._defaultValueStack[this._defaultValueStack.length - 1];\n    }\n  }\n\n  getDirective() {\n    return this._directive;\n  }\n\n  getArgument() {\n    return this._argument;\n  }\n\n  getEnumValue() {\n    return this._enumValue;\n  }\n\n  enter(node) {\n    const schema = this._schema; // Note: many of the types below are explicitly typed as \"unknown\" to drop\n    // any assumptions of a valid schema to ensure runtime types are properly\n    // checked before continuing since TypeInfo is used as part of validation\n    // which occurs before guarantees of schema and document validity.\n\n    switch (node.kind) {\n      case _kinds.Kind.SELECTION_SET: {\n        const namedType = (0, _definition.getNamedType)(this.getType());\n\n        this._parentTypeStack.push(\n          (0, _definition.isCompositeType)(namedType) ? namedType : undefined,\n        );\n\n        break;\n      }\n\n      case _kinds.Kind.FIELD: {\n        const parentType = this.getParentType();\n        let fieldDef;\n        let fieldType;\n\n        if (parentType) {\n          fieldDef = this._getFieldDef(schema, parentType, node);\n\n          if (fieldDef) {\n            fieldType = fieldDef.type;\n          }\n        }\n\n        this._fieldDefStack.push(fieldDef);\n\n        this._typeStack.push(\n          (0, _definition.isOutputType)(fieldType) ? fieldType : undefined,\n        );\n\n        break;\n      }\n\n      case _kinds.Kind.DIRECTIVE:\n        this._directive = schema.getDirective(node.name.value);\n        break;\n\n      case _kinds.Kind.OPERATION_DEFINITION: {\n        const rootType = schema.getRootType(node.operation);\n\n        this._typeStack.push(\n          (0, _definition.isObjectType)(rootType) ? rootType : undefined,\n        );\n\n        break;\n      }\n\n      case _kinds.Kind.INLINE_FRAGMENT:\n      case _kinds.Kind.FRAGMENT_DEFINITION: {\n        const typeConditionAST = node.typeCondition;\n        const outputType = typeConditionAST\n          ? (0, _typeFromAST.typeFromAST)(schema, typeConditionAST)\n          : (0, _definition.getNamedType)(this.getType());\n\n        this._typeStack.push(\n          (0, _definition.isOutputType)(outputType) ? outputType : undefined,\n        );\n\n        break;\n      }\n\n      case _kinds.Kind.VARIABLE_DEFINITION: {\n        const inputType = (0, _typeFromAST.typeFromAST)(schema, node.type);\n\n        this._inputTypeStack.push(\n          (0, _definition.isInputType)(inputType) ? inputType : undefined,\n        );\n\n        break;\n      }\n\n      case _kinds.Kind.ARGUMENT: {\n        var _this$getDirective;\n\n        let argDef;\n        let argType;\n        const fieldOrDirective =\n          (_this$getDirective = this.getDirective()) !== null &&\n          _this$getDirective !== void 0\n            ? _this$getDirective\n            : this.getFieldDef();\n\n        if (fieldOrDirective) {\n          argDef = fieldOrDirective.args.find(\n            (arg) => arg.name === node.name.value,\n          );\n\n          if (argDef) {\n            argType = argDef.type;\n          }\n        }\n\n        this._argument = argDef;\n\n        this._defaultValueStack.push(argDef ? argDef.defaultValue : undefined);\n\n        this._inputTypeStack.push(\n          (0, _definition.isInputType)(argType) ? argType : undefined,\n        );\n\n        break;\n      }\n\n      case _kinds.Kind.LIST: {\n        const listType = (0, _definition.getNullableType)(this.getInputType());\n        const itemType = (0, _definition.isListType)(listType)\n          ? listType.ofType\n          : listType; // List positions never have a default value.\n\n        this._defaultValueStack.push(undefined);\n\n        this._inputTypeStack.push(\n          (0, _definition.isInputType)(itemType) ? itemType : undefined,\n        );\n\n        break;\n      }\n\n      case _kinds.Kind.OBJECT_FIELD: {\n        const objectType = (0, _definition.getNamedType)(this.getInputType());\n        let inputFieldType;\n        let inputField;\n\n        if ((0, _definition.isInputObjectType)(objectType)) {\n          inputField = objectType.getFields()[node.name.value];\n\n          if (inputField) {\n            inputFieldType = inputField.type;\n          }\n        }\n\n        this._defaultValueStack.push(\n          inputField ? inputField.defaultValue : undefined,\n        );\n\n        this._inputTypeStack.push(\n          (0, _definition.isInputType)(inputFieldType)\n            ? inputFieldType\n            : undefined,\n        );\n\n        break;\n      }\n\n      case _kinds.Kind.ENUM: {\n        const enumType = (0, _definition.getNamedType)(this.getInputType());\n        let enumValue;\n\n        if ((0, _definition.isEnumType)(enumType)) {\n          enumValue = enumType.getValue(node.value);\n        }\n\n        this._enumValue = enumValue;\n        break;\n      }\n\n      default: // Ignore other nodes\n    }\n  }\n\n  leave(node) {\n    switch (node.kind) {\n      case _kinds.Kind.SELECTION_SET:\n        this._parentTypeStack.pop();\n\n        break;\n\n      case _kinds.Kind.FIELD:\n        this._fieldDefStack.pop();\n\n        this._typeStack.pop();\n\n        break;\n\n      case _kinds.Kind.DIRECTIVE:\n        this._directive = null;\n        break;\n\n      case _kinds.Kind.OPERATION_DEFINITION:\n      case _kinds.Kind.INLINE_FRAGMENT:\n      case _kinds.Kind.FRAGMENT_DEFINITION:\n        this._typeStack.pop();\n\n        break;\n\n      case _kinds.Kind.VARIABLE_DEFINITION:\n        this._inputTypeStack.pop();\n\n        break;\n\n      case _kinds.Kind.ARGUMENT:\n        this._argument = null;\n\n        this._defaultValueStack.pop();\n\n        this._inputTypeStack.pop();\n\n        break;\n\n      case _kinds.Kind.LIST:\n      case _kinds.Kind.OBJECT_FIELD:\n        this._defaultValueStack.pop();\n\n        this._inputTypeStack.pop();\n\n        break;\n\n      case _kinds.Kind.ENUM:\n        this._enumValue = null;\n        break;\n\n      default: // Ignore other nodes\n    }\n  }\n}\n\nexports.TypeInfo = TypeInfo;\n\n/**\n * Not exactly the same as the executor's definition of getFieldDef, in this\n * statically evaluated environment we do not always have an Object type,\n * and need to handle Interface and Union types.\n */\nfunction getFieldDef(schema, parentType, fieldNode) {\n  const name = fieldNode.name.value;\n\n  if (\n    name === _introspection.SchemaMetaFieldDef.name &&\n    schema.getQueryType() === parentType\n  ) {\n    return _introspection.SchemaMetaFieldDef;\n  }\n\n  if (\n    name === _introspection.TypeMetaFieldDef.name &&\n    schema.getQueryType() === parentType\n  ) {\n    return _introspection.TypeMetaFieldDef;\n  }\n\n  if (\n    name === _introspection.TypeNameMetaFieldDef.name &&\n    (0, _definition.isCompositeType)(parentType)\n  ) {\n    return _introspection.TypeNameMetaFieldDef;\n  }\n\n  if (\n    (0, _definition.isObjectType)(parentType) ||\n    (0, _definition.isInterfaceType)(parentType)\n  ) {\n    return parentType.getFields()[name];\n  }\n}\n/**\n * Creates a new visitor instance which maintains a provided TypeInfo instance\n * along with visiting visitor.\n */\n\nfunction visitWithTypeInfo(typeInfo, visitor) {\n  return {\n    enter(...args) {\n      const node = args[0];\n      typeInfo.enter(node);\n      const fn = (0, _visitor.getEnterLeaveForKind)(visitor, node.kind).enter;\n\n      if (fn) {\n        const result = fn.apply(visitor, args);\n\n        if (result !== undefined) {\n          typeInfo.leave(node);\n\n          if ((0, _ast.isNode)(result)) {\n            typeInfo.enter(result);\n          }\n        }\n\n        return result;\n      }\n    },\n\n    leave(...args) {\n      const node = args[0];\n      const fn = (0, _visitor.getEnterLeaveForKind)(visitor, node.kind).leave;\n      let result;\n\n      if (fn) {\n        result = fn.apply(visitor, args);\n      }\n\n      typeInfo.leave(node);\n      return result;\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.isConstValueNode = isConstValueNode;\nexports.isDefinitionNode = isDefinitionNode;\nexports.isExecutableDefinitionNode = isExecutableDefinitionNode;\nexports.isSchemaCoordinateNode = isSchemaCoordinateNode;\nexports.isSelectionNode = isSelectionNode;\nexports.isTypeDefinitionNode = isTypeDefinitionNode;\nexports.isTypeExtensionNode = isTypeExtensionNode;\nexports.isTypeNode = isTypeNode;\nexports.isTypeSystemDefinitionNode = isTypeSystemDefinitionNode;\nexports.isTypeSystemExtensionNode = isTypeSystemExtensionNode;\nexports.isValueNode = isValueNode;\n\nvar _kinds = require('./kinds.js');\n\nfunction isDefinitionNode(node) {\n  return (\n    isExecutableDefinitionNode(node) ||\n    isTypeSystemDefinitionNode(node) ||\n    isTypeSystemExtensionNode(node)\n  );\n}\n\nfunction isExecutableDefinitionNode(node) {\n  return (\n    node.kind === _kinds.Kind.OPERATION_DEFINITION ||\n    node.kind === _kinds.Kind.FRAGMENT_DEFINITION\n  );\n}\n\nfunction isSelectionNode(node) {\n  return (\n    node.kind === _kinds.Kind.FIELD ||\n    node.kind === _kinds.Kind.FRAGMENT_SPREAD ||\n    node.kind === _kinds.Kind.INLINE_FRAGMENT\n  );\n}\n\nfunction isValueNode(node) {\n  return (\n    node.kind === _kinds.Kind.VARIABLE ||\n    node.kind === _kinds.Kind.INT ||\n    node.kind === _kinds.Kind.FLOAT ||\n    node.kind === _kinds.Kind.STRING ||\n    node.kind === _kinds.Kind.BOOLEAN ||\n    node.kind === _kinds.Kind.NULL ||\n    node.kind === _kinds.Kind.ENUM ||\n    node.kind === _kinds.Kind.LIST ||\n    node.kind === _kinds.Kind.OBJECT\n  );\n}\n\nfunction isConstValueNode(node) {\n  return (\n    isValueNode(node) &&\n    (node.kind === _kinds.Kind.LIST\n      ? node.values.some(isConstValueNode)\n      : node.kind === _kinds.Kind.OBJECT\n      ? node.fields.some((field) => isConstValueNode(field.value))\n      : node.kind !== _kinds.Kind.VARIABLE)\n  );\n}\n\nfunction isTypeNode(node) {\n  return (\n    node.kind === _kinds.Kind.NAMED_TYPE ||\n    node.kind === _kinds.Kind.LIST_TYPE ||\n    node.kind === _kinds.Kind.NON_NULL_TYPE\n  );\n}\n\nfunction isTypeSystemDefinitionNode(node) {\n  return (\n    node.kind === _kinds.Kind.SCHEMA_DEFINITION ||\n    isTypeDefinitionNode(node) ||\n    node.kind === _kinds.Kind.DIRECTIVE_DEFINITION\n  );\n}\n\nfunction isTypeDefinitionNode(node) {\n  return (\n    node.kind === _kinds.Kind.SCALAR_TYPE_DEFINITION ||\n    node.kind === _kinds.Kind.OBJECT_TYPE_DEFINITION ||\n    node.kind === _kinds.Kind.INTERFACE_TYPE_DEFINITION ||\n    node.kind === _kinds.Kind.UNION_TYPE_DEFINITION ||\n    node.kind === _kinds.Kind.ENUM_TYPE_DEFINITION ||\n    node.kind === _kinds.Kind.INPUT_OBJECT_TYPE_DEFINITION\n  );\n}\n\nfunction isTypeSystemExtensionNode(node) {\n  return (\n    node.kind === _kinds.Kind.SCHEMA_EXTENSION || isTypeExtensionNode(node)\n  );\n}\n\nfunction isTypeExtensionNode(node) {\n  return (\n    node.kind === _kinds.Kind.SCALAR_TYPE_EXTENSION ||\n    node.kind === _kinds.Kind.OBJECT_TYPE_EXTENSION ||\n    node.kind === _kinds.Kind.INTERFACE_TYPE_EXTENSION ||\n    node.kind === _kinds.Kind.UNION_TYPE_EXTENSION ||\n    node.kind === _kinds.Kind.ENUM_TYPE_EXTENSION ||\n    node.kind === _kinds.Kind.INPUT_OBJECT_TYPE_EXTENSION\n  );\n}\n\nfunction isSchemaCoordinateNode(node) {\n  return (\n    node.kind === _kinds.Kind.TYPE_COORDINATE ||\n    node.kind === _kinds.Kind.MEMBER_COORDINATE ||\n    node.kind === _kinds.Kind.ARGUMENT_COORDINATE ||\n    node.kind === _kinds.Kind.DIRECTIVE_COORDINATE ||\n    node.kind === _kinds.Kind.DIRECTIVE_ARGUMENT_COORDINATE\n  );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.ExecutableDefinitionsRule = ExecutableDefinitionsRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _kinds = require('../../language/kinds.js');\n\nvar _predicates = require('../../language/predicates.js');\n\n/**\n * Executable definitions\n *\n * A GraphQL document is only valid for execution if all definitions are either\n * operation or fragment definitions.\n *\n * See https://spec.graphql.org/draft/#sec-Executable-Definitions\n */\nfunction ExecutableDefinitionsRule(context) {\n  return {\n    Document(node) {\n      for (const definition of node.definitions) {\n        if (!(0, _predicates.isExecutableDefinitionNode)(definition)) {\n          const defName =\n            definition.kind === _kinds.Kind.SCHEMA_DEFINITION ||\n            definition.kind === _kinds.Kind.SCHEMA_EXTENSION\n              ? 'schema'\n              : '\"' + definition.name.value + '\"';\n          context.reportError(\n            new _GraphQLError.GraphQLError(\n              `The ${defName} definition is not executable.`,\n              {\n                nodes: definition,\n              },\n            ),\n          );\n        }\n      }\n\n      return false;\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.FieldsOnCorrectTypeRule = FieldsOnCorrectTypeRule;\n\nvar _didYouMean = require('../../jsutils/didYouMean.js');\n\nvar _naturalCompare = require('../../jsutils/naturalCompare.js');\n\nvar _suggestionList = require('../../jsutils/suggestionList.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _definition = require('../../type/definition.js');\n\n/**\n * Fields on correct type\n *\n * A GraphQL document is only valid if all fields selected are defined by the\n * parent type, or are an allowed meta field such as __typename.\n *\n * See https://spec.graphql.org/draft/#sec-Field-Selections\n */\nfunction FieldsOnCorrectTypeRule(context) {\n  return {\n    Field(node) {\n      const type = context.getParentType();\n\n      if (type) {\n        const fieldDef = context.getFieldDef();\n\n        if (!fieldDef) {\n          // This field doesn't exist, lets look for suggestions.\n          const schema = context.getSchema();\n          const fieldName = node.name.value; // First determine if there are any suggested types to condition on.\n\n          let suggestion = (0, _didYouMean.didYouMean)(\n            'to use an inline fragment on',\n            getSuggestedTypeNames(schema, type, fieldName),\n          ); // If there are no suggested types, then perhaps this was a typo?\n\n          if (suggestion === '') {\n            suggestion = (0, _didYouMean.didYouMean)(\n              getSuggestedFieldNames(type, fieldName),\n            );\n          } // Report an error, including helpful suggestions.\n\n          context.reportError(\n            new _GraphQLError.GraphQLError(\n              `Cannot query field \"${fieldName}\" on type \"${type.name}\".` +\n                suggestion,\n              {\n                nodes: node,\n              },\n            ),\n          );\n        }\n      }\n    },\n  };\n}\n/**\n * Go through all of the implementations of type, as well as the interfaces that\n * they implement. If any of those types include the provided field, suggest them,\n * sorted by how often the type is referenced.\n */\n\nfunction getSuggestedTypeNames(schema, type, fieldName) {\n  if (!(0, _definition.isAbstractType)(type)) {\n    // Must be an Object type, which does not have possible fields.\n    return [];\n  }\n\n  const suggestedTypes = new Set();\n  const usageCount = Object.create(null);\n\n  for (const possibleType of schema.getPossibleTypes(type)) {\n    if (!possibleType.getFields()[fieldName]) {\n      continue;\n    } // This object type defines this field.\n\n    suggestedTypes.add(possibleType);\n    usageCount[possibleType.name] = 1;\n\n    for (const possibleInterface of possibleType.getInterfaces()) {\n      var _usageCount$possibleI;\n\n      if (!possibleInterface.getFields()[fieldName]) {\n        continue;\n      } // This interface type defines this field.\n\n      suggestedTypes.add(possibleInterface);\n      usageCount[possibleInterface.name] =\n        ((_usageCount$possibleI = usageCount[possibleInterface.name]) !==\n          null && _usageCount$possibleI !== void 0\n          ? _usageCount$possibleI\n          : 0) + 1;\n    }\n  }\n\n  return [...suggestedTypes]\n    .sort((typeA, typeB) => {\n      // Suggest both interface and object types based on how common they are.\n      const usageCountDiff = usageCount[typeB.name] - usageCount[typeA.name];\n\n      if (usageCountDiff !== 0) {\n        return usageCountDiff;\n      } // Suggest super types first followed by subtypes\n\n      if (\n        (0, _definition.isInterfaceType)(typeA) &&\n        schema.isSubType(typeA, typeB)\n      ) {\n        return -1;\n      }\n\n      if (\n        (0, _definition.isInterfaceType)(typeB) &&\n        schema.isSubType(typeB, typeA)\n      ) {\n        return 1;\n      }\n\n      return (0, _naturalCompare.naturalCompare)(typeA.name, typeB.name);\n    })\n    .map((x) => x.name);\n}\n/**\n * For the field name provided, determine if there are any similar field names\n * that may be the result of a typo.\n */\n\nfunction getSuggestedFieldNames(type, fieldName) {\n  if (\n    (0, _definition.isObjectType)(type) ||\n    (0, _definition.isInterfaceType)(type)\n  ) {\n    const possibleFieldNames = Object.keys(type.getFields());\n    return (0, _suggestionList.suggestionList)(fieldName, possibleFieldNames);\n  } // Otherwise, must be a Union type, which does not define fields.\n\n  return [];\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.FragmentsOnCompositeTypesRule = FragmentsOnCompositeTypesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _printer = require('../../language/printer.js');\n\nvar _definition = require('../../type/definition.js');\n\nvar _typeFromAST = require('../../utilities/typeFromAST.js');\n\n/**\n * Fragments on composite type\n *\n * Fragments use a type condition to determine if they apply, since fragments\n * can only be spread into a composite type (object, interface, or union), the\n * type condition must also be a composite type.\n *\n * See https://spec.graphql.org/draft/#sec-Fragments-On-Composite-Types\n */\nfunction FragmentsOnCompositeTypesRule(context) {\n  return {\n    InlineFragment(node) {\n      const typeCondition = node.typeCondition;\n\n      if (typeCondition) {\n        const type = (0, _typeFromAST.typeFromAST)(\n          context.getSchema(),\n          typeCondition,\n        );\n\n        if (type && !(0, _definition.isCompositeType)(type)) {\n          const typeStr = (0, _printer.print)(typeCondition);\n          context.reportError(\n            new _GraphQLError.GraphQLError(\n              `Fragment cannot condition on non composite type \"${typeStr}\".`,\n              {\n                nodes: typeCondition,\n              },\n            ),\n          );\n        }\n      }\n    },\n\n    FragmentDefinition(node) {\n      const type = (0, _typeFromAST.typeFromAST)(\n        context.getSchema(),\n        node.typeCondition,\n      );\n\n      if (type && !(0, _definition.isCompositeType)(type)) {\n        const typeStr = (0, _printer.print)(node.typeCondition);\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Fragment \"${node.name.value}\" cannot condition on non composite type \"${typeStr}\".`,\n            {\n              nodes: node.typeCondition,\n            },\n          ),\n        );\n      }\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.KnownArgumentNamesOnDirectivesRule = KnownArgumentNamesOnDirectivesRule;\nexports.KnownArgumentNamesRule = KnownArgumentNamesRule;\n\nvar _didYouMean = require('../../jsutils/didYouMean.js');\n\nvar _suggestionList = require('../../jsutils/suggestionList.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _kinds = require('../../language/kinds.js');\n\nvar _directives = require('../../type/directives.js');\n\n/**\n * Known argument names\n *\n * A GraphQL field is only valid if all supplied arguments are defined by\n * that field.\n *\n * See https://spec.graphql.org/draft/#sec-Argument-Names\n * See https://spec.graphql.org/draft/#sec-Directives-Are-In-Valid-Locations\n */\nfunction KnownArgumentNamesRule(context) {\n  return {\n    // eslint-disable-next-line new-cap\n    ...KnownArgumentNamesOnDirectivesRule(context),\n\n    Argument(argNode) {\n      const argDef = context.getArgument();\n      const fieldDef = context.getFieldDef();\n      const parentType = context.getParentType();\n\n      if (!argDef && fieldDef && parentType) {\n        const argName = argNode.name.value;\n        const knownArgsNames = fieldDef.args.map((arg) => arg.name);\n        const suggestions = (0, _suggestionList.suggestionList)(\n          argName,\n          knownArgsNames,\n        );\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Unknown argument \"${argName}\" on field \"${parentType.name}.${fieldDef.name}\".` +\n              (0, _didYouMean.didYouMean)(suggestions),\n            {\n              nodes: argNode,\n            },\n          ),\n        );\n      }\n    },\n  };\n}\n/**\n * @internal\n */\n\nfunction KnownArgumentNamesOnDirectivesRule(context) {\n  const directiveArgs = Object.create(null);\n  const schema = context.getSchema();\n  const definedDirectives = schema\n    ? schema.getDirectives()\n    : _directives.specifiedDirectives;\n\n  for (const directive of definedDirectives) {\n    directiveArgs[directive.name] = directive.args.map((arg) => arg.name);\n  }\n\n  const astDefinitions = context.getDocument().definitions;\n\n  for (const def of astDefinitions) {\n    if (def.kind === _kinds.Kind.DIRECTIVE_DEFINITION) {\n      var _def$arguments;\n\n      // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n      /* c8 ignore next */\n      const argsNodes =\n        (_def$arguments = def.arguments) !== null && _def$arguments !== void 0\n          ? _def$arguments\n          : [];\n      directiveArgs[def.name.value] = argsNodes.map((arg) => arg.name.value);\n    }\n  }\n\n  return {\n    Directive(directiveNode) {\n      const directiveName = directiveNode.name.value;\n      const knownArgs = directiveArgs[directiveName];\n\n      if (directiveNode.arguments && knownArgs) {\n        for (const argNode of directiveNode.arguments) {\n          const argName = argNode.name.value;\n\n          if (!knownArgs.includes(argName)) {\n            const suggestions = (0, _suggestionList.suggestionList)(\n              argName,\n              knownArgs,\n            );\n            context.reportError(\n              new _GraphQLError.GraphQLError(\n                `Unknown argument \"${argName}\" on directive \"@${directiveName}\".` +\n                  (0, _didYouMean.didYouMean)(suggestions),\n                {\n                  nodes: argNode,\n                },\n              ),\n            );\n          }\n        }\n      }\n\n      return false;\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.KnownDirectivesRule = KnownDirectivesRule;\n\nvar _inspect = require('../../jsutils/inspect.js');\n\nvar _invariant = require('../../jsutils/invariant.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _ast = require('../../language/ast.js');\n\nvar _directiveLocation = require('../../language/directiveLocation.js');\n\nvar _kinds = require('../../language/kinds.js');\n\nvar _directives = require('../../type/directives.js');\n\n/**\n * Known directives\n *\n * A GraphQL document is only valid if all `@directives` are known by the\n * schema and legally positioned.\n *\n * See https://spec.graphql.org/draft/#sec-Directives-Are-Defined\n */\nfunction KnownDirectivesRule(context) {\n  const locationsMap = Object.create(null);\n  const schema = context.getSchema();\n  const definedDirectives = schema\n    ? schema.getDirectives()\n    : _directives.specifiedDirectives;\n\n  for (const directive of definedDirectives) {\n    locationsMap[directive.name] = directive.locations;\n  }\n\n  const astDefinitions = context.getDocument().definitions;\n\n  for (const def of astDefinitions) {\n    if (def.kind === _kinds.Kind.DIRECTIVE_DEFINITION) {\n      locationsMap[def.name.value] = def.locations.map((name) => name.value);\n    }\n  }\n\n  return {\n    Directive(node, _key, _parent, _path, ancestors) {\n      const name = node.name.value;\n      const locations = locationsMap[name];\n\n      if (!locations) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(`Unknown directive \"@${name}\".`, {\n            nodes: node,\n          }),\n        );\n        return;\n      }\n\n      const candidateLocation = getDirectiveLocationForASTPath(ancestors);\n\n      if (candidateLocation && !locations.includes(candidateLocation)) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Directive \"@${name}\" may not be used on ${candidateLocation}.`,\n            {\n              nodes: node,\n            },\n          ),\n        );\n      }\n    },\n  };\n}\n\nfunction getDirectiveLocationForASTPath(ancestors) {\n  const appliedTo = ancestors[ancestors.length - 1];\n  'kind' in appliedTo || (0, _invariant.invariant)(false);\n\n  switch (appliedTo.kind) {\n    case _kinds.Kind.OPERATION_DEFINITION:\n      return getDirectiveLocationForOperation(appliedTo.operation);\n\n    case _kinds.Kind.FIELD:\n      return _directiveLocation.DirectiveLocation.FIELD;\n\n    case _kinds.Kind.FRAGMENT_SPREAD:\n      return _directiveLocation.DirectiveLocation.FRAGMENT_SPREAD;\n\n    case _kinds.Kind.INLINE_FRAGMENT:\n      return _directiveLocation.DirectiveLocation.INLINE_FRAGMENT;\n\n    case _kinds.Kind.FRAGMENT_DEFINITION:\n      return _directiveLocation.DirectiveLocation.FRAGMENT_DEFINITION;\n\n    case _kinds.Kind.VARIABLE_DEFINITION:\n      return _directiveLocation.DirectiveLocation.VARIABLE_DEFINITION;\n\n    case _kinds.Kind.SCHEMA_DEFINITION:\n    case _kinds.Kind.SCHEMA_EXTENSION:\n      return _directiveLocation.DirectiveLocation.SCHEMA;\n\n    case _kinds.Kind.SCALAR_TYPE_DEFINITION:\n    case _kinds.Kind.SCALAR_TYPE_EXTENSION:\n      return _directiveLocation.DirectiveLocation.SCALAR;\n\n    case _kinds.Kind.OBJECT_TYPE_DEFINITION:\n    case _kinds.Kind.OBJECT_TYPE_EXTENSION:\n      return _directiveLocation.DirectiveLocation.OBJECT;\n\n    case _kinds.Kind.FIELD_DEFINITION:\n      return _directiveLocation.DirectiveLocation.FIELD_DEFINITION;\n\n    case _kinds.Kind.INTERFACE_TYPE_DEFINITION:\n    case _kinds.Kind.INTERFACE_TYPE_EXTENSION:\n      return _directiveLocation.DirectiveLocation.INTERFACE;\n\n    case _kinds.Kind.UNION_TYPE_DEFINITION:\n    case _kinds.Kind.UNION_TYPE_EXTENSION:\n      return _directiveLocation.DirectiveLocation.UNION;\n\n    case _kinds.Kind.ENUM_TYPE_DEFINITION:\n    case _kinds.Kind.ENUM_TYPE_EXTENSION:\n      return _directiveLocation.DirectiveLocation.ENUM;\n\n    case _kinds.Kind.ENUM_VALUE_DEFINITION:\n      return _directiveLocation.DirectiveLocation.ENUM_VALUE;\n\n    case _kinds.Kind.INPUT_OBJECT_TYPE_DEFINITION:\n    case _kinds.Kind.INPUT_OBJECT_TYPE_EXTENSION:\n      return _directiveLocation.DirectiveLocation.INPUT_OBJECT;\n\n    case _kinds.Kind.INPUT_VALUE_DEFINITION: {\n      const parentNode = ancestors[ancestors.length - 3];\n      'kind' in parentNode || (0, _invariant.invariant)(false);\n      return parentNode.kind === _kinds.Kind.INPUT_OBJECT_TYPE_DEFINITION\n        ? _directiveLocation.DirectiveLocation.INPUT_FIELD_DEFINITION\n        : _directiveLocation.DirectiveLocation.ARGUMENT_DEFINITION;\n    }\n    // Not reachable, all possible types have been considered.\n\n    /* c8 ignore next */\n\n    default:\n      false ||\n        (0, _invariant.invariant)(\n          false,\n          'Unexpected kind: ' + (0, _inspect.inspect)(appliedTo.kind),\n        );\n  }\n}\n\nfunction getDirectiveLocationForOperation(operation) {\n  switch (operation) {\n    case _ast.OperationTypeNode.QUERY:\n      return _directiveLocation.DirectiveLocation.QUERY;\n\n    case _ast.OperationTypeNode.MUTATION:\n      return _directiveLocation.DirectiveLocation.MUTATION;\n\n    case _ast.OperationTypeNode.SUBSCRIPTION:\n      return _directiveLocation.DirectiveLocation.SUBSCRIPTION;\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.KnownFragmentNamesRule = KnownFragmentNamesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * Known fragment names\n *\n * A GraphQL document is only valid if all `...Fragment` fragment spreads refer\n * to fragments defined in the same document.\n *\n * See https://spec.graphql.org/draft/#sec-Fragment-spread-target-defined\n */\nfunction KnownFragmentNamesRule(context) {\n  return {\n    FragmentSpread(node) {\n      const fragmentName = node.name.value;\n      const fragment = context.getFragment(fragmentName);\n\n      if (!fragment) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Unknown fragment \"${fragmentName}\".`,\n            {\n              nodes: node.name,\n            },\n          ),\n        );\n      }\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.KnownTypeNamesRule = KnownTypeNamesRule;\n\nvar _didYouMean = require('../../jsutils/didYouMean.js');\n\nvar _suggestionList = require('../../jsutils/suggestionList.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _predicates = require('../../language/predicates.js');\n\nvar _introspection = require('../../type/introspection.js');\n\nvar _scalars = require('../../type/scalars.js');\n\n/**\n * Known type names\n *\n * A GraphQL document is only valid if referenced types (specifically\n * variable definitions and fragment conditions) are defined by the type schema.\n *\n * See https://spec.graphql.org/draft/#sec-Fragment-Spread-Type-Existence\n */\nfunction KnownTypeNamesRule(context) {\n  const schema = context.getSchema();\n  const existingTypesMap = schema ? schema.getTypeMap() : Object.create(null);\n  const definedTypes = Object.create(null);\n\n  for (const def of context.getDocument().definitions) {\n    if ((0, _predicates.isTypeDefinitionNode)(def)) {\n      definedTypes[def.name.value] = true;\n    }\n  }\n\n  const typeNames = [\n    ...Object.keys(existingTypesMap),\n    ...Object.keys(definedTypes),\n  ];\n  return {\n    NamedType(node, _1, parent, _2, ancestors) {\n      const typeName = node.name.value;\n\n      if (!existingTypesMap[typeName] && !definedTypes[typeName]) {\n        var _ancestors$;\n\n        const definitionNode =\n          (_ancestors$ = ancestors[2]) !== null && _ancestors$ !== void 0\n            ? _ancestors$\n            : parent;\n        const isSDL = definitionNode != null && isSDLNode(definitionNode);\n\n        if (isSDL && standardTypeNames.includes(typeName)) {\n          return;\n        }\n\n        const suggestedTypes = (0, _suggestionList.suggestionList)(\n          typeName,\n          isSDL ? standardTypeNames.concat(typeNames) : typeNames,\n        );\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Unknown type \"${typeName}\".` +\n              (0, _didYouMean.didYouMean)(suggestedTypes),\n            {\n              nodes: node,\n            },\n          ),\n        );\n      }\n    },\n  };\n}\n\nconst standardTypeNames = [\n  ..._scalars.specifiedScalarTypes,\n  ..._introspection.introspectionTypes,\n].map((type) => type.name);\n\nfunction isSDLNode(value) {\n  return (\n    'kind' in value &&\n    ((0, _predicates.isTypeSystemDefinitionNode)(value) ||\n      (0, _predicates.isTypeSystemExtensionNode)(value))\n  );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.LoneAnonymousOperationRule = LoneAnonymousOperationRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _kinds = require('../../language/kinds.js');\n\n/**\n * Lone anonymous operation\n *\n * A GraphQL document is only valid if when it contains an anonymous operation\n * (the query short-hand) that it contains only that one operation definition.\n *\n * See https://spec.graphql.org/draft/#sec-Lone-Anonymous-Operation\n */\nfunction LoneAnonymousOperationRule(context) {\n  let operationCount = 0;\n  return {\n    Document(node) {\n      operationCount = node.definitions.filter(\n        (definition) => definition.kind === _kinds.Kind.OPERATION_DEFINITION,\n      ).length;\n    },\n\n    OperationDefinition(node) {\n      if (!node.name && operationCount > 1) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            'This anonymous operation must be the only defined operation.',\n            {\n              nodes: node,\n            },\n          ),\n        );\n      }\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.LoneSchemaDefinitionRule = LoneSchemaDefinitionRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * Lone Schema definition\n *\n * A GraphQL document is only valid if it contains only one schema definition.\n */\nfunction LoneSchemaDefinitionRule(context) {\n  var _ref, _ref2, _oldSchema$astNode;\n\n  const oldSchema = context.getSchema();\n  const alreadyDefined =\n    (_ref =\n      (_ref2 =\n        (_oldSchema$astNode =\n          oldSchema === null || oldSchema === void 0\n            ? void 0\n            : oldSchema.astNode) !== null && _oldSchema$astNode !== void 0\n          ? _oldSchema$astNode\n          : oldSchema === null || oldSchema === void 0\n          ? void 0\n          : oldSchema.getQueryType()) !== null && _ref2 !== void 0\n        ? _ref2\n        : oldSchema === null || oldSchema === void 0\n        ? void 0\n        : oldSchema.getMutationType()) !== null && _ref !== void 0\n      ? _ref\n      : oldSchema === null || oldSchema === void 0\n      ? void 0\n      : oldSchema.getSubscriptionType();\n  let schemaDefinitionsCount = 0;\n  return {\n    SchemaDefinition(node) {\n      if (alreadyDefined) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            'Cannot define a new schema within a schema extension.',\n            {\n              nodes: node,\n            },\n          ),\n        );\n        return;\n      }\n\n      if (schemaDefinitionsCount > 0) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            'Must provide only one schema definition.',\n            {\n              nodes: node,\n            },\n          ),\n        );\n      }\n\n      ++schemaDefinitionsCount;\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.MaxIntrospectionDepthRule = MaxIntrospectionDepthRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _kinds = require('../../language/kinds.js');\n\nconst MAX_LISTS_DEPTH = 3;\n\nfunction MaxIntrospectionDepthRule(context) {\n  /**\n   * Counts the depth of list fields in \"__Type\" recursively and\n   * returns `true` if the limit has been reached.\n   */\n  function checkDepth(node, visitedFragments = Object.create(null), depth = 0) {\n    if (node.kind === _kinds.Kind.FRAGMENT_SPREAD) {\n      const fragmentName = node.name.value;\n\n      if (visitedFragments[fragmentName] === true) {\n        // Fragment cycles are handled by `NoFragmentCyclesRule`.\n        return false;\n      }\n\n      const fragment = context.getFragment(fragmentName);\n\n      if (!fragment) {\n        // Missing fragments checks are handled by `KnownFragmentNamesRule`.\n        return false;\n      } // Rather than following an immutable programming pattern which has\n      // significant memory and garbage collection overhead, we've opted to\n      // take a mutable approach for efficiency's sake. Importantly visiting a\n      // fragment twice is fine, so long as you don't do one visit inside the\n      // other.\n\n      try {\n        visitedFragments[fragmentName] = true;\n        return checkDepth(fragment, visitedFragments, depth);\n      } finally {\n        visitedFragments[fragmentName] = undefined;\n      }\n    }\n\n    if (\n      node.kind === _kinds.Kind.FIELD && // check all introspection lists\n      (node.name.value === 'fields' ||\n        node.name.value === 'interfaces' ||\n        node.name.value === 'possibleTypes' ||\n        node.name.value === 'inputFields')\n    ) {\n      // eslint-disable-next-line no-param-reassign\n      depth++;\n\n      if (depth >= MAX_LISTS_DEPTH) {\n        return true;\n      }\n    } // handles fields and inline fragments\n\n    if ('selectionSet' in node && node.selectionSet) {\n      for (const child of node.selectionSet.selections) {\n        if (checkDepth(child, visitedFragments, depth)) {\n          return true;\n        }\n      }\n    }\n\n    return false;\n  }\n\n  return {\n    Field(node) {\n      if (node.name.value === '__schema' || node.name.value === '__type') {\n        if (checkDepth(node)) {\n          context.reportError(\n            new _GraphQLError.GraphQLError(\n              'Maximum introspection depth exceeded',\n              {\n                nodes: [node],\n              },\n            ),\n          );\n          return false;\n        }\n      }\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.NoFragmentCyclesRule = NoFragmentCyclesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * No fragment cycles\n *\n * The graph of fragment spreads must not form any cycles including spreading itself.\n * Otherwise an operation could infinitely spread or infinitely execute on cycles in the underlying data.\n *\n * See https://spec.graphql.org/draft/#sec-Fragment-spreads-must-not-form-cycles\n */\nfunction NoFragmentCyclesRule(context) {\n  // Tracks already visited fragments to maintain O(N) and to ensure that cycles\n  // are not redundantly reported.\n  const visitedFrags = Object.create(null); // Array of AST nodes used to produce meaningful errors\n\n  const spreadPath = []; // Position in the spread path\n\n  const spreadPathIndexByName = Object.create(null);\n  return {\n    OperationDefinition: () => false,\n\n    FragmentDefinition(node) {\n      detectCycleRecursive(node);\n      return false;\n    },\n  }; // This does a straight-forward DFS to find cycles.\n  // It does not terminate when a cycle was found but continues to explore\n  // the graph to find all possible cycles.\n\n  function detectCycleRecursive(fragment) {\n    if (visitedFrags[fragment.name.value]) {\n      return;\n    }\n\n    const fragmentName = fragment.name.value;\n    visitedFrags[fragmentName] = true;\n    const spreadNodes = context.getFragmentSpreads(fragment.selectionSet);\n\n    if (spreadNodes.length === 0) {\n      return;\n    }\n\n    spreadPathIndexByName[fragmentName] = spreadPath.length;\n\n    for (const spreadNode of spreadNodes) {\n      const spreadName = spreadNode.name.value;\n      const cycleIndex = spreadPathIndexByName[spreadName];\n      spreadPath.push(spreadNode);\n\n      if (cycleIndex === undefined) {\n        const spreadFragment = context.getFragment(spreadName);\n\n        if (spreadFragment) {\n          detectCycleRecursive(spreadFragment);\n        }\n      } else {\n        const cyclePath = spreadPath.slice(cycleIndex);\n        const viaPath = cyclePath\n          .slice(0, -1)\n          .map((s) => '\"' + s.name.value + '\"')\n          .join(', ');\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Cannot spread fragment \"${spreadName}\" within itself` +\n              (viaPath !== '' ? ` via ${viaPath}.` : '.'),\n            {\n              nodes: cyclePath,\n            },\n          ),\n        );\n      }\n\n      spreadPath.pop();\n    }\n\n    spreadPathIndexByName[fragmentName] = undefined;\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.NoUndefinedVariablesRule = NoUndefinedVariablesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * No undefined variables\n *\n * A GraphQL operation is only valid if all variables encountered, both directly\n * and via fragment spreads, are defined by that operation.\n *\n * See https://spec.graphql.org/draft/#sec-All-Variable-Uses-Defined\n */\nfunction NoUndefinedVariablesRule(context) {\n  let variableNameDefined = Object.create(null);\n  return {\n    OperationDefinition: {\n      enter() {\n        variableNameDefined = Object.create(null);\n      },\n\n      leave(operation) {\n        const usages = context.getRecursiveVariableUsages(operation);\n\n        for (const { node } of usages) {\n          const varName = node.name.value;\n\n          if (variableNameDefined[varName] !== true) {\n            context.reportError(\n              new _GraphQLError.GraphQLError(\n                operation.name\n                  ? `Variable \"$${varName}\" is not defined by operation \"${operation.name.value}\".`\n                  : `Variable \"$${varName}\" is not defined.`,\n                {\n                  nodes: [node, operation],\n                },\n              ),\n            );\n          }\n        }\n      },\n    },\n\n    VariableDefinition(node) {\n      variableNameDefined[node.variable.name.value] = true;\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.NoUnusedFragmentsRule = NoUnusedFragmentsRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * No unused fragments\n *\n * A GraphQL document is only valid if all fragment definitions are spread\n * within operations, or spread within other fragments spread within operations.\n *\n * See https://spec.graphql.org/draft/#sec-Fragments-Must-Be-Used\n */\nfunction NoUnusedFragmentsRule(context) {\n  const operationDefs = [];\n  const fragmentDefs = [];\n  return {\n    OperationDefinition(node) {\n      operationDefs.push(node);\n      return false;\n    },\n\n    FragmentDefinition(node) {\n      fragmentDefs.push(node);\n      return false;\n    },\n\n    Document: {\n      leave() {\n        const fragmentNameUsed = Object.create(null);\n\n        for (const operation of operationDefs) {\n          for (const fragment of context.getRecursivelyReferencedFragments(\n            operation,\n          )) {\n            fragmentNameUsed[fragment.name.value] = true;\n          }\n        }\n\n        for (const fragmentDef of fragmentDefs) {\n          const fragName = fragmentDef.name.value;\n\n          if (fragmentNameUsed[fragName] !== true) {\n            context.reportError(\n              new _GraphQLError.GraphQLError(\n                `Fragment \"${fragName}\" is never used.`,\n                {\n                  nodes: fragmentDef,\n                },\n              ),\n            );\n          }\n        }\n      },\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.NoUnusedVariablesRule = NoUnusedVariablesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * No unused variables\n *\n * A GraphQL operation is only valid if all variables defined by an operation\n * are used, either directly or within a spread fragment.\n *\n * See https://spec.graphql.org/draft/#sec-All-Variables-Used\n */\nfunction NoUnusedVariablesRule(context) {\n  let variableDefs = [];\n  return {\n    OperationDefinition: {\n      enter() {\n        variableDefs = [];\n      },\n\n      leave(operation) {\n        const variableNameUsed = Object.create(null);\n        const usages = context.getRecursiveVariableUsages(operation);\n\n        for (const { node } of usages) {\n          variableNameUsed[node.name.value] = true;\n        }\n\n        for (const variableDef of variableDefs) {\n          const variableName = variableDef.variable.name.value;\n\n          if (variableNameUsed[variableName] !== true) {\n            context.reportError(\n              new _GraphQLError.GraphQLError(\n                operation.name\n                  ? `Variable \"$${variableName}\" is never used in operation \"${operation.name.value}\".`\n                  : `Variable \"$${variableName}\" is never used.`,\n                {\n                  nodes: variableDef,\n                },\n              ),\n            );\n          }\n        }\n      },\n    },\n\n    VariableDefinition(def) {\n      variableDefs.push(def);\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.sortValueNode = sortValueNode;\n\nvar _naturalCompare = require('../jsutils/naturalCompare.js');\n\nvar _kinds = require('../language/kinds.js');\n\n/**\n * Sort ValueNode.\n *\n * This function returns a sorted copy of the given ValueNode.\n *\n * @internal\n */\nfunction sortValueNode(valueNode) {\n  switch (valueNode.kind) {\n    case _kinds.Kind.OBJECT:\n      return { ...valueNode, fields: sortFields(valueNode.fields) };\n\n    case _kinds.Kind.LIST:\n      return { ...valueNode, values: valueNode.values.map(sortValueNode) };\n\n    case _kinds.Kind.INT:\n    case _kinds.Kind.FLOAT:\n    case _kinds.Kind.STRING:\n    case _kinds.Kind.BOOLEAN:\n    case _kinds.Kind.NULL:\n    case _kinds.Kind.ENUM:\n    case _kinds.Kind.VARIABLE:\n      return valueNode;\n  }\n}\n\nfunction sortFields(fields) {\n  return fields\n    .map((fieldNode) => ({\n      ...fieldNode,\n      value: sortValueNode(fieldNode.value),\n    }))\n    .sort((fieldA, fieldB) =>\n      (0, _naturalCompare.naturalCompare)(fieldA.name.value, fieldB.name.value),\n    );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.OverlappingFieldsCanBeMergedRule = OverlappingFieldsCanBeMergedRule;\n\nvar _inspect = require('../../jsutils/inspect.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _kinds = require('../../language/kinds.js');\n\nvar _printer = require('../../language/printer.js');\n\nvar _definition = require('../../type/definition.js');\n\nvar _sortValueNode = require('../../utilities/sortValueNode.js');\n\nvar _typeFromAST = require('../../utilities/typeFromAST.js');\n\nfunction reasonMessage(reason) {\n  if (Array.isArray(reason)) {\n    return reason\n      .map(\n        ([responseName, subReason]) =>\n          `subfields \"${responseName}\" conflict because ` +\n          reasonMessage(subReason),\n      )\n      .join(' and ');\n  }\n\n  return reason;\n}\n/**\n * Overlapping fields can be merged\n *\n * A selection set is only valid if all fields (including spreading any\n * fragments) either correspond to distinct response names or can be merged\n * without ambiguity.\n *\n * See https://spec.graphql.org/draft/#sec-Field-Selection-Merging\n */\n\nfunction OverlappingFieldsCanBeMergedRule(context) {\n  // A memoization for when fields and a fragment or two fragments are compared\n  // \"between\" each other for conflicts. Comparisons made be made many times,\n  // so memoizing this can dramatically improve the performance of this validator.\n  const comparedFieldsAndFragmentPairs = new OrderedPairSet();\n  const comparedFragmentPairs = new PairSet(); // A cache for the \"field map\" and list of fragment names found in any given\n  // selection set. Selection sets may be asked for this information multiple\n  // times, so this improves the performance of this validator.\n\n  const cachedFieldsAndFragmentNames = new Map();\n  return {\n    SelectionSet(selectionSet) {\n      const conflicts = findConflictsWithinSelectionSet(\n        context,\n        cachedFieldsAndFragmentNames,\n        comparedFieldsAndFragmentPairs,\n        comparedFragmentPairs,\n        context.getParentType(),\n        selectionSet,\n      );\n\n      for (const [[responseName, reason], fields1, fields2] of conflicts) {\n        const reasonMsg = reasonMessage(reason);\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Fields \"${responseName}\" conflict because ${reasonMsg}. Use different aliases on the fields to fetch both if this was intentional.`,\n            {\n              nodes: fields1.concat(fields2),\n            },\n          ),\n        );\n      }\n    },\n  };\n}\n\n/**\n * Algorithm:\n *\n * Conflicts occur when two fields exist in a query which will produce the same\n * response name, but represent differing values, thus creating a conflict.\n * The algorithm below finds all conflicts via making a series of comparisons\n * between fields. In order to compare as few fields as possible, this makes\n * a series of comparisons \"within\" sets of fields and \"between\" sets of fields.\n *\n * Given any selection set, a collection produces both a set of fields by\n * also including all inline fragments, as well as a list of fragments\n * referenced by fragment spreads.\n *\n * A) Each selection set represented in the document first compares \"within\" its\n * collected set of fields, finding any conflicts between every pair of\n * overlapping fields.\n * Note: This is the *only time* that a the fields \"within\" a set are compared\n * to each other. After this only fields \"between\" sets are compared.\n *\n * B) Also, if any fragment is referenced in a selection set, then a\n * comparison is made \"between\" the original set of fields and the\n * referenced fragment.\n *\n * C) Also, if multiple fragments are referenced, then comparisons\n * are made \"between\" each referenced fragment.\n *\n * D) When comparing \"between\" a set of fields and a referenced fragment, first\n * a comparison is made between each field in the original set of fields and\n * each field in the the referenced set of fields.\n *\n * E) Also, if any fragment is referenced in the referenced selection set,\n * then a comparison is made \"between\" the original set of fields and the\n * referenced fragment (recursively referring to step D).\n *\n * F) When comparing \"between\" two fragments, first a comparison is made between\n * each field in the first referenced set of fields and each field in the the\n * second referenced set of fields.\n *\n * G) Also, any fragments referenced by the first must be compared to the\n * second, and any fragments referenced by the second must be compared to the\n * first (recursively referring to step F).\n *\n * H) When comparing two fields, if both have selection sets, then a comparison\n * is made \"between\" both selection sets, first comparing the set of fields in\n * the first selection set with the set of fields in the second.\n *\n * I) Also, if any fragment is referenced in either selection set, then a\n * comparison is made \"between\" the other set of fields and the\n * referenced fragment.\n *\n * J) Also, if two fragments are referenced in both selection sets, then a\n * comparison is made \"between\" the two fragments.\n *\n */\n// Find all conflicts found \"within\" a selection set, including those found\n// via spreading in fragments. Called when visiting each SelectionSet in the\n// GraphQL Document.\nfunction findConflictsWithinSelectionSet(\n  context,\n  cachedFieldsAndFragmentNames,\n  comparedFieldsAndFragmentPairs,\n  comparedFragmentPairs,\n  parentType,\n  selectionSet,\n) {\n  const conflicts = [];\n  const [fieldMap, fragmentNames] = getFieldsAndFragmentNames(\n    context,\n    cachedFieldsAndFragmentNames,\n    parentType,\n    selectionSet,\n  ); // (A) Find find all conflicts \"within\" the fields of this selection set.\n  // Note: this is the *only place* `collectConflictsWithin` is called.\n\n  collectConflictsWithin(\n    context,\n    conflicts,\n    cachedFieldsAndFragmentNames,\n    comparedFieldsAndFragmentPairs,\n    comparedFragmentPairs,\n    fieldMap,\n  );\n\n  if (fragmentNames.length !== 0) {\n    // (B) Then collect conflicts between these fields and those represented by\n    // each spread fragment name found.\n    for (let i = 0; i < fragmentNames.length; i++) {\n      collectConflictsBetweenFieldsAndFragment(\n        context,\n        conflicts,\n        cachedFieldsAndFragmentNames,\n        comparedFieldsAndFragmentPairs,\n        comparedFragmentPairs,\n        false,\n        fieldMap,\n        fragmentNames[i],\n      ); // (C) Then compare this fragment with all other fragments found in this\n      // selection set to collect conflicts between fragments spread together.\n      // This compares each item in the list of fragment names to every other\n      // item in that same list (except for itself).\n\n      for (let j = i + 1; j < fragmentNames.length; j++) {\n        collectConflictsBetweenFragments(\n          context,\n          conflicts,\n          cachedFieldsAndFragmentNames,\n          comparedFieldsAndFragmentPairs,\n          comparedFragmentPairs,\n          false,\n          fragmentNames[i],\n          fragmentNames[j],\n        );\n      }\n    }\n  }\n\n  return conflicts;\n} // Collect all conflicts found between a set of fields and a fragment reference\n// including via spreading in any nested fragments.\n\nfunction collectConflictsBetweenFieldsAndFragment(\n  context,\n  conflicts,\n  cachedFieldsAndFragmentNames,\n  comparedFieldsAndFragmentPairs,\n  comparedFragmentPairs,\n  areMutuallyExclusive,\n  fieldMap,\n  fragmentName,\n) {\n  // Memoize so the fields and fragments are not compared for conflicts more\n  // than once.\n  if (\n    comparedFieldsAndFragmentPairs.has(\n      fieldMap,\n      fragmentName,\n      areMutuallyExclusive,\n    )\n  ) {\n    return;\n  }\n\n  comparedFieldsAndFragmentPairs.add(\n    fieldMap,\n    fragmentName,\n    areMutuallyExclusive,\n  );\n  const fragment = context.getFragment(fragmentName);\n\n  if (!fragment) {\n    return;\n  }\n\n  const [fieldMap2, referencedFragmentNames] =\n    getReferencedFieldsAndFragmentNames(\n      context,\n      cachedFieldsAndFragmentNames,\n      fragment,\n    ); // Do not compare a fragment's fieldMap to itself.\n\n  if (fieldMap === fieldMap2) {\n    return;\n  } // (D) First collect any conflicts between the provided collection of fields\n  // and the collection of fields represented by the given fragment.\n\n  collectConflictsBetween(\n    context,\n    conflicts,\n    cachedFieldsAndFragmentNames,\n    comparedFieldsAndFragmentPairs,\n    comparedFragmentPairs,\n    areMutuallyExclusive,\n    fieldMap,\n    fieldMap2,\n  ); // (E) Then collect any conflicts between the provided collection of fields\n  // and any fragment names found in the given fragment.\n\n  for (const referencedFragmentName of referencedFragmentNames) {\n    collectConflictsBetweenFieldsAndFragment(\n      context,\n      conflicts,\n      cachedFieldsAndFragmentNames,\n      comparedFieldsAndFragmentPairs,\n      comparedFragmentPairs,\n      areMutuallyExclusive,\n      fieldMap,\n      referencedFragmentName,\n    );\n  }\n} // Collect all conflicts found between two fragments, including via spreading in\n// any nested fragments.\n\nfunction collectConflictsBetweenFragments(\n  context,\n  conflicts,\n  cachedFieldsAndFragmentNames,\n  comparedFieldsAndFragmentPairs,\n  comparedFragmentPairs,\n  areMutuallyExclusive,\n  fragmentName1,\n  fragmentName2,\n) {\n  // No need to compare a fragment to itself.\n  if (fragmentName1 === fragmentName2) {\n    return;\n  } // Memoize so two fragments are not compared for conflicts more than once.\n\n  if (\n    comparedFragmentPairs.has(\n      fragmentName1,\n      fragmentName2,\n      areMutuallyExclusive,\n    )\n  ) {\n    return;\n  }\n\n  comparedFragmentPairs.add(fragmentName1, fragmentName2, areMutuallyExclusive);\n  const fragment1 = context.getFragment(fragmentName1);\n  const fragment2 = context.getFragment(fragmentName2);\n\n  if (!fragment1 || !fragment2) {\n    return;\n  }\n\n  const [fieldMap1, referencedFragmentNames1] =\n    getReferencedFieldsAndFragmentNames(\n      context,\n      cachedFieldsAndFragmentNames,\n      fragment1,\n    );\n  const [fieldMap2, referencedFragmentNames2] =\n    getReferencedFieldsAndFragmentNames(\n      context,\n      cachedFieldsAndFragmentNames,\n      fragment2,\n    ); // (F) First, collect all conflicts between these two collections of fields\n  // (not including any nested fragments).\n\n  collectConflictsBetween(\n    context,\n    conflicts,\n    cachedFieldsAndFragmentNames,\n    comparedFieldsAndFragmentPairs,\n    comparedFragmentPairs,\n    areMutuallyExclusive,\n    fieldMap1,\n    fieldMap2,\n  ); // (G) Then collect conflicts between the first fragment and any nested\n  // fragments spread in the second fragment.\n\n  for (const referencedFragmentName2 of referencedFragmentNames2) {\n    collectConflictsBetweenFragments(\n      context,\n      conflicts,\n      cachedFieldsAndFragmentNames,\n      comparedFieldsAndFragmentPairs,\n      comparedFragmentPairs,\n      areMutuallyExclusive,\n      fragmentName1,\n      referencedFragmentName2,\n    );\n  } // (G) Then collect conflicts between the second fragment and any nested\n  // fragments spread in the first fragment.\n\n  for (const referencedFragmentName1 of referencedFragmentNames1) {\n    collectConflictsBetweenFragments(\n      context,\n      conflicts,\n      cachedFieldsAndFragmentNames,\n      comparedFieldsAndFragmentPairs,\n      comparedFragmentPairs,\n      areMutuallyExclusive,\n      referencedFragmentName1,\n      fragmentName2,\n    );\n  }\n} // Find all conflicts found between two selection sets, including those found\n// via spreading in fragments. Called when determining if conflicts exist\n// between the sub-fields of two overlapping fields.\n\nfunction findConflictsBetweenSubSelectionSets(\n  context,\n  cachedFieldsAndFragmentNames,\n  comparedFieldsAndFragmentPairs,\n  comparedFragmentPairs,\n  areMutuallyExclusive,\n  parentType1,\n  selectionSet1,\n  parentType2,\n  selectionSet2,\n) {\n  const conflicts = [];\n  const [fieldMap1, fragmentNames1] = getFieldsAndFragmentNames(\n    context,\n    cachedFieldsAndFragmentNames,\n    parentType1,\n    selectionSet1,\n  );\n  const [fieldMap2, fragmentNames2] = getFieldsAndFragmentNames(\n    context,\n    cachedFieldsAndFragmentNames,\n    parentType2,\n    selectionSet2,\n  ); // (H) First, collect all conflicts between these two collections of field.\n\n  collectConflictsBetween(\n    context,\n    conflicts,\n    cachedFieldsAndFragmentNames,\n    comparedFieldsAndFragmentPairs,\n    comparedFragmentPairs,\n    areMutuallyExclusive,\n    fieldMap1,\n    fieldMap2,\n  ); // (I) Then collect conflicts between the first collection of fields and\n  // those referenced by each fragment name associated with the second.\n\n  for (const fragmentName2 of fragmentNames2) {\n    collectConflictsBetweenFieldsAndFragment(\n      context,\n      conflicts,\n      cachedFieldsAndFragmentNames,\n      comparedFieldsAndFragmentPairs,\n      comparedFragmentPairs,\n      areMutuallyExclusive,\n      fieldMap1,\n      fragmentName2,\n    );\n  } // (I) Then collect conflicts between the second collection of fields and\n  // those referenced by each fragment name associated with the first.\n\n  for (const fragmentName1 of fragmentNames1) {\n    collectConflictsBetweenFieldsAndFragment(\n      context,\n      conflicts,\n      cachedFieldsAndFragmentNames,\n      comparedFieldsAndFragmentPairs,\n      comparedFragmentPairs,\n      areMutuallyExclusive,\n      fieldMap2,\n      fragmentName1,\n    );\n  } // (J) Also collect conflicts between any fragment names by the first and\n  // fragment names by the second. This compares each item in the first set of\n  // names to each item in the second set of names.\n\n  for (const fragmentName1 of fragmentNames1) {\n    for (const fragmentName2 of fragmentNames2) {\n      collectConflictsBetweenFragments(\n        context,\n        conflicts,\n        cachedFieldsAndFragmentNames,\n        comparedFieldsAndFragmentPairs,\n        comparedFragmentPairs,\n        areMutuallyExclusive,\n        fragmentName1,\n        fragmentName2,\n      );\n    }\n  }\n\n  return conflicts;\n} // Collect all Conflicts \"within\" one collection of fields.\n\nfunction collectConflictsWithin(\n  context,\n  conflicts,\n  cachedFieldsAndFragmentNames,\n  comparedFieldsAndFragmentPairs,\n  comparedFragmentPairs,\n  fieldMap,\n) {\n  // A field map is a keyed collection, where each key represents a response\n  // name and the value at that key is a list of all fields which provide that\n  // response name. For every response name, if there are multiple fields, they\n  // must be compared to find a potential conflict.\n  for (const [responseName, fields] of Object.entries(fieldMap)) {\n    // This compares every field in the list to every other field in this list\n    // (except to itself). If the list only has one item, nothing needs to\n    // be compared.\n    if (fields.length > 1) {\n      for (let i = 0; i < fields.length; i++) {\n        for (let j = i + 1; j < fields.length; j++) {\n          const conflict = findConflict(\n            context,\n            cachedFieldsAndFragmentNames,\n            comparedFieldsAndFragmentPairs,\n            comparedFragmentPairs,\n            false, // within one collection is never mutually exclusive\n            responseName,\n            fields[i],\n            fields[j],\n          );\n\n          if (conflict) {\n            conflicts.push(conflict);\n          }\n        }\n      }\n    }\n  }\n} // Collect all Conflicts between two collections of fields. This is similar to,\n// but different from the `collectConflictsWithin` function above. This check\n// assumes that `collectConflictsWithin` has already been called on each\n// provided collection of fields. This is true because this validator traverses\n// each individual selection set.\n\nfunction collectConflictsBetween(\n  context,\n  conflicts,\n  cachedFieldsAndFragmentNames,\n  comparedFieldsAndFragmentPairs,\n  comparedFragmentPairs,\n  parentFieldsAreMutuallyExclusive,\n  fieldMap1,\n  fieldMap2,\n) {\n  // A field map is a keyed collection, where each key represents a response\n  // name and the value at that key is a list of all fields which provide that\n  // response name. For any response name which appears in both provided field\n  // maps, each field from the first field map must be compared to every field\n  // in the second field map to find potential conflicts.\n  for (const [responseName, fields1] of Object.entries(fieldMap1)) {\n    const fields2 = fieldMap2[responseName];\n\n    if (fields2) {\n      for (const field1 of fields1) {\n        for (const field2 of fields2) {\n          const conflict = findConflict(\n            context,\n            cachedFieldsAndFragmentNames,\n            comparedFieldsAndFragmentPairs,\n            comparedFragmentPairs,\n            parentFieldsAreMutuallyExclusive,\n            responseName,\n            field1,\n            field2,\n          );\n\n          if (conflict) {\n            conflicts.push(conflict);\n          }\n        }\n      }\n    }\n  }\n} // Determines if there is a conflict between two particular fields, including\n// comparing their sub-fields.\n\nfunction findConflict(\n  context,\n  cachedFieldsAndFragmentNames,\n  comparedFieldsAndFragmentPairs,\n  comparedFragmentPairs,\n  parentFieldsAreMutuallyExclusive,\n  responseName,\n  field1,\n  field2,\n) {\n  const [parentType1, node1, def1] = field1;\n  const [parentType2, node2, def2] = field2; // If it is known that two fields could not possibly apply at the same\n  // time, due to the parent types, then it is safe to permit them to diverge\n  // in aliased field or arguments used as they will not present any ambiguity\n  // by differing.\n  // It is known that two parent types could never overlap if they are\n  // different Object types. Interface or Union types might overlap - if not\n  // in the current state of the schema, then perhaps in some future version,\n  // thus may not safely diverge.\n\n  const areMutuallyExclusive =\n    parentFieldsAreMutuallyExclusive ||\n    (parentType1 !== parentType2 &&\n      (0, _definition.isObjectType)(parentType1) &&\n      (0, _definition.isObjectType)(parentType2));\n\n  if (!areMutuallyExclusive) {\n    // Two aliases must refer to the same field.\n    const name1 = node1.name.value;\n    const name2 = node2.name.value;\n\n    if (name1 !== name2) {\n      return [\n        [responseName, `\"${name1}\" and \"${name2}\" are different fields`],\n        [node1],\n        [node2],\n      ];\n    } // Two field calls must have the same arguments.\n\n    if (!sameArguments(node1, node2)) {\n      return [\n        [responseName, 'they have differing arguments'],\n        [node1],\n        [node2],\n      ];\n    }\n  } // The return type for each field.\n\n  const type1 = def1 === null || def1 === void 0 ? void 0 : def1.type;\n  const type2 = def2 === null || def2 === void 0 ? void 0 : def2.type;\n\n  if (type1 && type2 && doTypesConflict(type1, type2)) {\n    return [\n      [\n        responseName,\n        `they return conflicting types \"${(0, _inspect.inspect)(\n          type1,\n        )}\" and \"${(0, _inspect.inspect)(type2)}\"`,\n      ],\n      [node1],\n      [node2],\n    ];\n  } // Collect and compare sub-fields. Use the same \"visited fragment names\" list\n  // for both collections so fields in a fragment reference are never\n  // compared to themselves.\n\n  const selectionSet1 = node1.selectionSet;\n  const selectionSet2 = node2.selectionSet;\n\n  if (selectionSet1 && selectionSet2) {\n    const conflicts = findConflictsBetweenSubSelectionSets(\n      context,\n      cachedFieldsAndFragmentNames,\n      comparedFieldsAndFragmentPairs,\n      comparedFragmentPairs,\n      areMutuallyExclusive,\n      (0, _definition.getNamedType)(type1),\n      selectionSet1,\n      (0, _definition.getNamedType)(type2),\n      selectionSet2,\n    );\n    return subfieldConflicts(conflicts, responseName, node1, node2);\n  }\n}\n\nfunction sameArguments(node1, node2) {\n  const args1 = node1.arguments;\n  const args2 = node2.arguments;\n\n  if (args1 === undefined || args1.length === 0) {\n    return args2 === undefined || args2.length === 0;\n  }\n\n  if (args2 === undefined || args2.length === 0) {\n    return false;\n  }\n  /* c8 ignore next */\n\n  if (args1.length !== args2.length) {\n    /* c8 ignore next */\n    return false;\n    /* c8 ignore next */\n  }\n\n  const values2 = new Map(args2.map(({ name, value }) => [name.value, value]));\n  return args1.every((arg1) => {\n    const value1 = arg1.value;\n    const value2 = values2.get(arg1.name.value);\n\n    if (value2 === undefined) {\n      return false;\n    }\n\n    return stringifyValue(value1) === stringifyValue(value2);\n  });\n}\n\nfunction stringifyValue(value) {\n  return (0, _printer.print)((0, _sortValueNode.sortValueNode)(value));\n} // Two types conflict if both types could not apply to a value simultaneously.\n// Composite types are ignored as their individual field types will be compared\n// later recursively. However List and Non-Null types must match.\n\nfunction doTypesConflict(type1, type2) {\n  if ((0, _definition.isListType)(type1)) {\n    return (0, _definition.isListType)(type2)\n      ? doTypesConflict(type1.ofType, type2.ofType)\n      : true;\n  }\n\n  if ((0, _definition.isListType)(type2)) {\n    return true;\n  }\n\n  if ((0, _definition.isNonNullType)(type1)) {\n    return (0, _definition.isNonNullType)(type2)\n      ? doTypesConflict(type1.ofType, type2.ofType)\n      : true;\n  }\n\n  if ((0, _definition.isNonNullType)(type2)) {\n    return true;\n  }\n\n  if (\n    (0, _definition.isLeafType)(type1) ||\n    (0, _definition.isLeafType)(type2)\n  ) {\n    return type1 !== type2;\n  }\n\n  return false;\n} // Given a selection set, return the collection of fields (a mapping of response\n// name to field nodes and definitions) as well as a list of fragment names\n// referenced via fragment spreads.\n\nfunction getFieldsAndFragmentNames(\n  context,\n  cachedFieldsAndFragmentNames,\n  parentType,\n  selectionSet,\n) {\n  const cached = cachedFieldsAndFragmentNames.get(selectionSet);\n\n  if (cached) {\n    return cached;\n  }\n\n  const nodeAndDefs = Object.create(null);\n  const fragmentNames = Object.create(null);\n\n  _collectFieldsAndFragmentNames(\n    context,\n    parentType,\n    selectionSet,\n    nodeAndDefs,\n    fragmentNames,\n  );\n\n  const result = [nodeAndDefs, Object.keys(fragmentNames)];\n  cachedFieldsAndFragmentNames.set(selectionSet, result);\n  return result;\n} // Given a reference to a fragment, return the represented collection of fields\n// as well as a list of nested fragment names referenced via fragment spreads.\n\nfunction getReferencedFieldsAndFragmentNames(\n  context,\n  cachedFieldsAndFragmentNames,\n  fragment,\n) {\n  // Short-circuit building a type from the node if possible.\n  const cached = cachedFieldsAndFragmentNames.get(fragment.selectionSet);\n\n  if (cached) {\n    return cached;\n  }\n\n  const fragmentType = (0, _typeFromAST.typeFromAST)(\n    context.getSchema(),\n    fragment.typeCondition,\n  );\n  return getFieldsAndFragmentNames(\n    context,\n    cachedFieldsAndFragmentNames,\n    fragmentType,\n    fragment.selectionSet,\n  );\n}\n\nfunction _collectFieldsAndFragmentNames(\n  context,\n  parentType,\n  selectionSet,\n  nodeAndDefs,\n  fragmentNames,\n) {\n  for (const selection of selectionSet.selections) {\n    switch (selection.kind) {\n      case _kinds.Kind.FIELD: {\n        const fieldName = selection.name.value;\n        let fieldDef;\n\n        if (\n          (0, _definition.isObjectType)(parentType) ||\n          (0, _definition.isInterfaceType)(parentType)\n        ) {\n          fieldDef = parentType.getFields()[fieldName];\n        }\n\n        const responseName = selection.alias\n          ? selection.alias.value\n          : fieldName;\n\n        if (!nodeAndDefs[responseName]) {\n          nodeAndDefs[responseName] = [];\n        }\n\n        nodeAndDefs[responseName].push([parentType, selection, fieldDef]);\n        break;\n      }\n\n      case _kinds.Kind.FRAGMENT_SPREAD:\n        fragmentNames[selection.name.value] = true;\n        break;\n\n      case _kinds.Kind.INLINE_FRAGMENT: {\n        const typeCondition = selection.typeCondition;\n        const inlineFragmentType = typeCondition\n          ? (0, _typeFromAST.typeFromAST)(context.getSchema(), typeCondition)\n          : parentType;\n\n        _collectFieldsAndFragmentNames(\n          context,\n          inlineFragmentType,\n          selection.selectionSet,\n          nodeAndDefs,\n          fragmentNames,\n        );\n\n        break;\n      }\n    }\n  }\n} // Given a series of Conflicts which occurred between two sub-fields, generate\n// a single Conflict.\n\nfunction subfieldConflicts(conflicts, responseName, node1, node2) {\n  if (conflicts.length > 0) {\n    return [\n      [responseName, conflicts.map(([reason]) => reason)],\n      [node1, ...conflicts.map(([, fields1]) => fields1).flat()],\n      [node2, ...conflicts.map(([, , fields2]) => fields2).flat()],\n    ];\n  }\n}\n/**\n * A way to keep track of pairs of things where the ordering of the pair\n * matters.\n *\n * Provides a third argument for has/set to allow flagging the pair as\n * weakly or strongly present within the collection.\n */\n\nclass OrderedPairSet {\n  constructor() {\n    this._data = new Map();\n  }\n\n  has(a, b, weaklyPresent) {\n    var _this$_data$get;\n\n    const result =\n      (_this$_data$get = this._data.get(a)) === null ||\n      _this$_data$get === void 0\n        ? void 0\n        : _this$_data$get.get(b);\n\n    if (result === undefined) {\n      return false;\n    }\n\n    return weaklyPresent ? true : weaklyPresent === result;\n  }\n\n  add(a, b, weaklyPresent) {\n    const map = this._data.get(a);\n\n    if (map === undefined) {\n      this._data.set(a, new Map([[b, weaklyPresent]]));\n    } else {\n      map.set(b, weaklyPresent);\n    }\n  }\n}\n/**\n * A way to keep track of pairs of similar things when the ordering of the pair\n * does not matter.\n */\n\nclass PairSet {\n  constructor() {\n    this._orderedPairSet = new OrderedPairSet();\n  }\n\n  has(a, b, weaklyPresent) {\n    return a < b\n      ? this._orderedPairSet.has(a, b, weaklyPresent)\n      : this._orderedPairSet.has(b, a, weaklyPresent);\n  }\n\n  add(a, b, weaklyPresent) {\n    if (a < b) {\n      this._orderedPairSet.add(a, b, weaklyPresent);\n    } else {\n      this._orderedPairSet.add(b, a, weaklyPresent);\n    }\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.PossibleFragmentSpreadsRule = PossibleFragmentSpreadsRule;\n\nvar _inspect = require('../../jsutils/inspect.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _definition = require('../../type/definition.js');\n\nvar _typeComparators = require('../../utilities/typeComparators.js');\n\nvar _typeFromAST = require('../../utilities/typeFromAST.js');\n\n/**\n * Possible fragment spread\n *\n * A fragment spread is only valid if the type condition could ever possibly\n * be true: if there is a non-empty intersection of the possible parent types,\n * and possible types which pass the type condition.\n */\nfunction PossibleFragmentSpreadsRule(context) {\n  return {\n    InlineFragment(node) {\n      const fragType = context.getType();\n      const parentType = context.getParentType();\n\n      if (\n        (0, _definition.isCompositeType)(fragType) &&\n        (0, _definition.isCompositeType)(parentType) &&\n        !(0, _typeComparators.doTypesOverlap)(\n          context.getSchema(),\n          fragType,\n          parentType,\n        )\n      ) {\n        const parentTypeStr = (0, _inspect.inspect)(parentType);\n        const fragTypeStr = (0, _inspect.inspect)(fragType);\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Fragment cannot be spread here as objects of type \"${parentTypeStr}\" can never be of type \"${fragTypeStr}\".`,\n            {\n              nodes: node,\n            },\n          ),\n        );\n      }\n    },\n\n    FragmentSpread(node) {\n      const fragName = node.name.value;\n      const fragType = getFragmentType(context, fragName);\n      const parentType = context.getParentType();\n\n      if (\n        fragType &&\n        parentType &&\n        !(0, _typeComparators.doTypesOverlap)(\n          context.getSchema(),\n          fragType,\n          parentType,\n        )\n      ) {\n        const parentTypeStr = (0, _inspect.inspect)(parentType);\n        const fragTypeStr = (0, _inspect.inspect)(fragType);\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Fragment \"${fragName}\" cannot be spread here as objects of type \"${parentTypeStr}\" can never be of type \"${fragTypeStr}\".`,\n            {\n              nodes: node,\n            },\n          ),\n        );\n      }\n    },\n  };\n}\n\nfunction getFragmentType(context, name) {\n  const frag = context.getFragment(name);\n\n  if (frag) {\n    const type = (0, _typeFromAST.typeFromAST)(\n      context.getSchema(),\n      frag.typeCondition,\n    );\n\n    if ((0, _definition.isCompositeType)(type)) {\n      return type;\n    }\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.PossibleTypeExtensionsRule = PossibleTypeExtensionsRule;\n\nvar _didYouMean = require('../../jsutils/didYouMean.js');\n\nvar _inspect = require('../../jsutils/inspect.js');\n\nvar _invariant = require('../../jsutils/invariant.js');\n\nvar _suggestionList = require('../../jsutils/suggestionList.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _kinds = require('../../language/kinds.js');\n\nvar _predicates = require('../../language/predicates.js');\n\nvar _definition = require('../../type/definition.js');\n\n/**\n * Possible type extension\n *\n * A type extension is only valid if the type is defined and has the same kind.\n */\nfunction PossibleTypeExtensionsRule(context) {\n  const schema = context.getSchema();\n  const definedTypes = Object.create(null);\n\n  for (const def of context.getDocument().definitions) {\n    if ((0, _predicates.isTypeDefinitionNode)(def)) {\n      definedTypes[def.name.value] = def;\n    }\n  }\n\n  return {\n    ScalarTypeExtension: checkExtension,\n    ObjectTypeExtension: checkExtension,\n    InterfaceTypeExtension: checkExtension,\n    UnionTypeExtension: checkExtension,\n    EnumTypeExtension: checkExtension,\n    InputObjectTypeExtension: checkExtension,\n  };\n\n  function checkExtension(node) {\n    const typeName = node.name.value;\n    const defNode = definedTypes[typeName];\n    const existingType =\n      schema === null || schema === void 0 ? void 0 : schema.getType(typeName);\n    let expectedKind;\n\n    if (defNode) {\n      expectedKind = defKindToExtKind[defNode.kind];\n    } else if (existingType) {\n      expectedKind = typeToExtKind(existingType);\n    }\n\n    if (expectedKind) {\n      if (expectedKind !== node.kind) {\n        const kindStr = extensionKindToTypeName(node.kind);\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Cannot extend non-${kindStr} type \"${typeName}\".`,\n            {\n              nodes: defNode ? [defNode, node] : node,\n            },\n          ),\n        );\n      }\n    } else {\n      const allTypeNames = Object.keys({\n        ...definedTypes,\n        ...(schema === null || schema === void 0\n          ? void 0\n          : schema.getTypeMap()),\n      });\n      const suggestedTypes = (0, _suggestionList.suggestionList)(\n        typeName,\n        allTypeNames,\n      );\n      context.reportError(\n        new _GraphQLError.GraphQLError(\n          `Cannot extend type \"${typeName}\" because it is not defined.` +\n            (0, _didYouMean.didYouMean)(suggestedTypes),\n          {\n            nodes: node.name,\n          },\n        ),\n      );\n    }\n  }\n}\n\nconst defKindToExtKind = {\n  [_kinds.Kind.SCALAR_TYPE_DEFINITION]: _kinds.Kind.SCALAR_TYPE_EXTENSION,\n  [_kinds.Kind.OBJECT_TYPE_DEFINITION]: _kinds.Kind.OBJECT_TYPE_EXTENSION,\n  [_kinds.Kind.INTERFACE_TYPE_DEFINITION]: _kinds.Kind.INTERFACE_TYPE_EXTENSION,\n  [_kinds.Kind.UNION_TYPE_DEFINITION]: _kinds.Kind.UNION_TYPE_EXTENSION,\n  [_kinds.Kind.ENUM_TYPE_DEFINITION]: _kinds.Kind.ENUM_TYPE_EXTENSION,\n  [_kinds.Kind.INPUT_OBJECT_TYPE_DEFINITION]:\n    _kinds.Kind.INPUT_OBJECT_TYPE_EXTENSION,\n};\n\nfunction typeToExtKind(type) {\n  if ((0, _definition.isScalarType)(type)) {\n    return _kinds.Kind.SCALAR_TYPE_EXTENSION;\n  }\n\n  if ((0, _definition.isObjectType)(type)) {\n    return _kinds.Kind.OBJECT_TYPE_EXTENSION;\n  }\n\n  if ((0, _definition.isInterfaceType)(type)) {\n    return _kinds.Kind.INTERFACE_TYPE_EXTENSION;\n  }\n\n  if ((0, _definition.isUnionType)(type)) {\n    return _kinds.Kind.UNION_TYPE_EXTENSION;\n  }\n\n  if ((0, _definition.isEnumType)(type)) {\n    return _kinds.Kind.ENUM_TYPE_EXTENSION;\n  }\n\n  if ((0, _definition.isInputObjectType)(type)) {\n    return _kinds.Kind.INPUT_OBJECT_TYPE_EXTENSION;\n  }\n  /* c8 ignore next 3 */\n  // Not reachable. All possible types have been considered\n\n  false ||\n    (0, _invariant.invariant)(\n      false,\n      'Unexpected type: ' + (0, _inspect.inspect)(type),\n    );\n}\n\nfunction extensionKindToTypeName(kind) {\n  switch (kind) {\n    case _kinds.Kind.SCALAR_TYPE_EXTENSION:\n      return 'scalar';\n\n    case _kinds.Kind.OBJECT_TYPE_EXTENSION:\n      return 'object';\n\n    case _kinds.Kind.INTERFACE_TYPE_EXTENSION:\n      return 'interface';\n\n    case _kinds.Kind.UNION_TYPE_EXTENSION:\n      return 'union';\n\n    case _kinds.Kind.ENUM_TYPE_EXTENSION:\n      return 'enum';\n\n    case _kinds.Kind.INPUT_OBJECT_TYPE_EXTENSION:\n      return 'input object';\n    // Not reachable. All possible types have been considered\n\n    /* c8 ignore next */\n\n    default:\n      false ||\n        (0, _invariant.invariant)(\n          false,\n          'Unexpected kind: ' + (0, _inspect.inspect)(kind),\n        );\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.ProvidedRequiredArgumentsOnDirectivesRule =\n  ProvidedRequiredArgumentsOnDirectivesRule;\nexports.ProvidedRequiredArgumentsRule = ProvidedRequiredArgumentsRule;\n\nvar _inspect = require('../../jsutils/inspect.js');\n\nvar _keyMap = require('../../jsutils/keyMap.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _kinds = require('../../language/kinds.js');\n\nvar _printer = require('../../language/printer.js');\n\nvar _definition = require('../../type/definition.js');\n\nvar _directives = require('../../type/directives.js');\n\n/**\n * Provided required arguments\n *\n * A field or directive is only valid if all required (non-null without a\n * default value) field arguments have been provided.\n */\nfunction ProvidedRequiredArgumentsRule(context) {\n  return {\n    // eslint-disable-next-line new-cap\n    ...ProvidedRequiredArgumentsOnDirectivesRule(context),\n    Field: {\n      // Validate on leave to allow for deeper errors to appear first.\n      leave(fieldNode) {\n        var _fieldNode$arguments;\n\n        const fieldDef = context.getFieldDef();\n\n        if (!fieldDef) {\n          return false;\n        }\n\n        const providedArgs = new Set( // FIXME: https://github.com/graphql/graphql-js/issues/2203\n          /* c8 ignore next */\n          (_fieldNode$arguments = fieldNode.arguments) === null ||\n          _fieldNode$arguments === void 0\n            ? void 0\n            : _fieldNode$arguments.map((arg) => arg.name.value),\n        );\n\n        for (const argDef of fieldDef.args) {\n          if (\n            !providedArgs.has(argDef.name) &&\n            (0, _definition.isRequiredArgument)(argDef)\n          ) {\n            const argTypeStr = (0, _inspect.inspect)(argDef.type);\n            context.reportError(\n              new _GraphQLError.GraphQLError(\n                `Field \"${fieldDef.name}\" argument \"${argDef.name}\" of type \"${argTypeStr}\" is required, but it was not provided.`,\n                {\n                  nodes: fieldNode,\n                },\n              ),\n            );\n          }\n        }\n      },\n    },\n  };\n}\n/**\n * @internal\n */\n\nfunction ProvidedRequiredArgumentsOnDirectivesRule(context) {\n  var _schema$getDirectives;\n\n  const requiredArgsMap = Object.create(null);\n  const schema = context.getSchema();\n  const definedDirectives =\n    (_schema$getDirectives =\n      schema === null || schema === void 0\n        ? void 0\n        : schema.getDirectives()) !== null && _schema$getDirectives !== void 0\n      ? _schema$getDirectives\n      : _directives.specifiedDirectives;\n\n  for (const directive of definedDirectives) {\n    requiredArgsMap[directive.name] = (0, _keyMap.keyMap)(\n      directive.args.filter(_definition.isRequiredArgument),\n      (arg) => arg.name,\n    );\n  }\n\n  const astDefinitions = context.getDocument().definitions;\n\n  for (const def of astDefinitions) {\n    if (def.kind === _kinds.Kind.DIRECTIVE_DEFINITION) {\n      var _def$arguments;\n\n      // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n      /* c8 ignore next */\n      const argNodes =\n        (_def$arguments = def.arguments) !== null && _def$arguments !== void 0\n          ? _def$arguments\n          : [];\n      requiredArgsMap[def.name.value] = (0, _keyMap.keyMap)(\n        argNodes.filter(isRequiredArgumentNode),\n        (arg) => arg.name.value,\n      );\n    }\n  }\n\n  return {\n    Directive: {\n      // Validate on leave to allow for deeper errors to appear first.\n      leave(directiveNode) {\n        const directiveName = directiveNode.name.value;\n        const requiredArgs = requiredArgsMap[directiveName];\n\n        if (requiredArgs) {\n          var _directiveNode$argume;\n\n          // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n          /* c8 ignore next */\n          const argNodes =\n            (_directiveNode$argume = directiveNode.arguments) !== null &&\n            _directiveNode$argume !== void 0\n              ? _directiveNode$argume\n              : [];\n          const argNodeMap = new Set(argNodes.map((arg) => arg.name.value));\n\n          for (const [argName, argDef] of Object.entries(requiredArgs)) {\n            if (!argNodeMap.has(argName)) {\n              const argType = (0, _definition.isType)(argDef.type)\n                ? (0, _inspect.inspect)(argDef.type)\n                : (0, _printer.print)(argDef.type);\n              context.reportError(\n                new _GraphQLError.GraphQLError(\n                  `Directive \"@${directiveName}\" argument \"${argName}\" of type \"${argType}\" is required, but it was not provided.`,\n                  {\n                    nodes: directiveNode,\n                  },\n                ),\n              );\n            }\n          }\n        }\n      },\n    },\n  };\n}\n\nfunction isRequiredArgumentNode(arg) {\n  return (\n    arg.type.kind === _kinds.Kind.NON_NULL_TYPE && arg.defaultValue == null\n  );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.ScalarLeafsRule = ScalarLeafsRule;\n\nvar _inspect = require('../../jsutils/inspect.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _definition = require('../../type/definition.js');\n\n/**\n * Scalar leafs\n *\n * A GraphQL document is valid only if all leaf fields (fields without\n * sub selections) are of scalar or enum types.\n */\nfunction ScalarLeafsRule(context) {\n  return {\n    Field(node) {\n      const type = context.getType();\n      const selectionSet = node.selectionSet;\n\n      if (type) {\n        if ((0, _definition.isLeafType)((0, _definition.getNamedType)(type))) {\n          if (selectionSet) {\n            const fieldName = node.name.value;\n            const typeStr = (0, _inspect.inspect)(type);\n            context.reportError(\n              new _GraphQLError.GraphQLError(\n                `Field \"${fieldName}\" must not have a selection since type \"${typeStr}\" has no subfields.`,\n                {\n                  nodes: selectionSet,\n                },\n              ),\n            );\n          }\n        } else if (!selectionSet) {\n          const fieldName = node.name.value;\n          const typeStr = (0, _inspect.inspect)(type);\n          context.reportError(\n            new _GraphQLError.GraphQLError(\n              `Field \"${fieldName}\" of type \"${typeStr}\" must have a selection of subfields. Did you mean \"${fieldName} { ... }\"?`,\n              {\n                nodes: node,\n              },\n            ),\n          );\n        } else if (selectionSet.selections.length === 0) {\n          const fieldName = node.name.value;\n          const typeStr = (0, _inspect.inspect)(type);\n          context.reportError(\n            new _GraphQLError.GraphQLError(\n              `Field \"${fieldName}\" of type \"${typeStr}\" must have at least one field selected.`,\n              {\n                nodes: node,\n              },\n            ),\n          );\n        }\n      }\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.printPathArray = printPathArray;\n\n/**\n * Build a string describing the path.\n */\nfunction printPathArray(path) {\n  return path\n    .map((key) =>\n      typeof key === 'number' ? '[' + key.toString() + ']' : '.' + key,\n    )\n    .join('');\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.addPath = addPath;\nexports.pathToArray = pathToArray;\n\n/**\n * Given a Path and a key, return a new Path containing the new key.\n */\nfunction addPath(prev, key, typename) {\n  return {\n    prev,\n    key,\n    typename,\n  };\n}\n/**\n * Given a Path, return an Array of the path keys.\n */\n\nfunction pathToArray(path) {\n  const flattened = [];\n  let curr = path;\n\n  while (curr) {\n    flattened.push(curr.key);\n    curr = curr.prev;\n  }\n\n  return flattened.reverse();\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.coerceInputValue = coerceInputValue;\n\nvar _didYouMean = require('../jsutils/didYouMean.js');\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _invariant = require('../jsutils/invariant.js');\n\nvar _isIterableObject = require('../jsutils/isIterableObject.js');\n\nvar _isObjectLike = require('../jsutils/isObjectLike.js');\n\nvar _Path = require('../jsutils/Path.js');\n\nvar _printPathArray = require('../jsutils/printPathArray.js');\n\nvar _suggestionList = require('../jsutils/suggestionList.js');\n\nvar _GraphQLError = require('../error/GraphQLError.js');\n\nvar _definition = require('../type/definition.js');\n\n/**\n * Coerces a JavaScript value given a GraphQL Input Type.\n */\nfunction coerceInputValue(inputValue, type, onError = defaultOnError) {\n  return coerceInputValueImpl(inputValue, type, onError, undefined);\n}\n\nfunction defaultOnError(path, invalidValue, error) {\n  let errorPrefix = 'Invalid value ' + (0, _inspect.inspect)(invalidValue);\n\n  if (path.length > 0) {\n    errorPrefix += ` at \"value${(0, _printPathArray.printPathArray)(path)}\"`;\n  }\n\n  error.message = errorPrefix + ': ' + error.message;\n  throw error;\n}\n\nfunction coerceInputValueImpl(inputValue, type, onError, path) {\n  if ((0, _definition.isNonNullType)(type)) {\n    if (inputValue != null) {\n      return coerceInputValueImpl(inputValue, type.ofType, onError, path);\n    }\n\n    onError(\n      (0, _Path.pathToArray)(path),\n      inputValue,\n      new _GraphQLError.GraphQLError(\n        `Expected non-nullable type \"${(0, _inspect.inspect)(\n          type,\n        )}\" not to be null.`,\n      ),\n    );\n    return;\n  }\n\n  if (inputValue == null) {\n    // Explicitly return the value null.\n    return null;\n  }\n\n  if ((0, _definition.isListType)(type)) {\n    const itemType = type.ofType;\n\n    if ((0, _isIterableObject.isIterableObject)(inputValue)) {\n      return Array.from(inputValue, (itemValue, index) => {\n        const itemPath = (0, _Path.addPath)(path, index, undefined);\n        return coerceInputValueImpl(itemValue, itemType, onError, itemPath);\n      });\n    } // Lists accept a non-list value as a list of one.\n\n    return [coerceInputValueImpl(inputValue, itemType, onError, path)];\n  }\n\n  if ((0, _definition.isInputObjectType)(type)) {\n    if (\n      !(0, _isObjectLike.isObjectLike)(inputValue) ||\n      Array.isArray(inputValue)\n    ) {\n      onError(\n        (0, _Path.pathToArray)(path),\n        inputValue,\n        new _GraphQLError.GraphQLError(\n          `Expected type \"${type.name}\" to be an object.`,\n        ),\n      );\n      return;\n    }\n\n    const coercedValue = {};\n    const fieldDefs = type.getFields();\n\n    for (const field of Object.values(fieldDefs)) {\n      const fieldValue = inputValue[field.name];\n\n      if (fieldValue === undefined) {\n        if (field.defaultValue !== undefined) {\n          coercedValue[field.name] = field.defaultValue;\n        } else if ((0, _definition.isNonNullType)(field.type)) {\n          const typeStr = (0, _inspect.inspect)(field.type);\n          onError(\n            (0, _Path.pathToArray)(path),\n            inputValue,\n            new _GraphQLError.GraphQLError(\n              `Field \"${field.name}\" of required type \"${typeStr}\" was not provided.`,\n            ),\n          );\n        }\n\n        continue;\n      }\n\n      coercedValue[field.name] = coerceInputValueImpl(\n        fieldValue,\n        field.type,\n        onError,\n        (0, _Path.addPath)(path, field.name, type.name),\n      );\n    } // Ensure every provided field is defined.\n\n    for (const fieldName of Object.keys(inputValue)) {\n      if (!fieldDefs[fieldName]) {\n        const suggestions = (0, _suggestionList.suggestionList)(\n          fieldName,\n          Object.keys(type.getFields()),\n        );\n        onError(\n          (0, _Path.pathToArray)(path),\n          inputValue,\n          new _GraphQLError.GraphQLError(\n            `Field \"${fieldName}\" is not defined by type \"${type.name}\".` +\n              (0, _didYouMean.didYouMean)(suggestions),\n          ),\n        );\n      }\n    }\n\n    if (type.isOneOf) {\n      const keys = Object.keys(coercedValue);\n\n      if (keys.length !== 1) {\n        onError(\n          (0, _Path.pathToArray)(path),\n          inputValue,\n          new _GraphQLError.GraphQLError(\n            `Exactly one key must be specified for OneOf type \"${type.name}\".`,\n          ),\n        );\n      }\n\n      const key = keys[0];\n      const value = coercedValue[key];\n\n      if (value === null) {\n        onError(\n          (0, _Path.pathToArray)(path).concat(key),\n          value,\n          new _GraphQLError.GraphQLError(`Field \"${key}\" must be non-null.`),\n        );\n      }\n    }\n\n    return coercedValue;\n  }\n\n  if ((0, _definition.isLeafType)(type)) {\n    let parseResult; // Scalars and Enums determine if a input value is valid via parseValue(),\n    // which can throw to indicate failure. If it throws, maintain a reference\n    // to the original error.\n\n    try {\n      parseResult = type.parseValue(inputValue);\n    } catch (error) {\n      if (error instanceof _GraphQLError.GraphQLError) {\n        onError((0, _Path.pathToArray)(path), inputValue, error);\n      } else {\n        onError(\n          (0, _Path.pathToArray)(path),\n          inputValue,\n          new _GraphQLError.GraphQLError(\n            `Expected type \"${type.name}\". ` + error.message,\n            {\n              originalError: error,\n            },\n          ),\n        );\n      }\n\n      return;\n    }\n\n    if (parseResult === undefined) {\n      onError(\n        (0, _Path.pathToArray)(path),\n        inputValue,\n        new _GraphQLError.GraphQLError(`Expected type \"${type.name}\".`),\n      );\n    }\n\n    return parseResult;\n  }\n  /* c8 ignore next 3 */\n  // Not reachable, all possible types have been considered.\n\n  false ||\n    (0, _invariant.invariant)(\n      false,\n      'Unexpected input type: ' + (0, _inspect.inspect)(type),\n    );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.valueFromAST = valueFromAST;\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _invariant = require('../jsutils/invariant.js');\n\nvar _keyMap = require('../jsutils/keyMap.js');\n\nvar _kinds = require('../language/kinds.js');\n\nvar _definition = require('../type/definition.js');\n\n/**\n * Produces a JavaScript value given a GraphQL Value AST.\n *\n * A GraphQL type must be provided, which will be used to interpret different\n * GraphQL Value literals.\n *\n * Returns `undefined` when the value could not be validly coerced according to\n * the provided type.\n *\n * | GraphQL Value        | JSON Value    |\n * | -------------------- | ------------- |\n * | Input Object         | Object        |\n * | List                 | Array         |\n * | Boolean              | Boolean       |\n * | String               | String        |\n * | Int / Float          | Number        |\n * | Enum Value           | Unknown       |\n * | NullValue            | null          |\n *\n */\nfunction valueFromAST(valueNode, type, variables) {\n  if (!valueNode) {\n    // When there is no node, then there is also no value.\n    // Importantly, this is different from returning the value null.\n    return;\n  }\n\n  if (valueNode.kind === _kinds.Kind.VARIABLE) {\n    const variableName = valueNode.name.value;\n\n    if (variables == null || variables[variableName] === undefined) {\n      // No valid return value.\n      return;\n    }\n\n    const variableValue = variables[variableName];\n\n    if (variableValue === null && (0, _definition.isNonNullType)(type)) {\n      return; // Invalid: intentionally return no value.\n    } // Note: This does no further checking that this variable is correct.\n    // This assumes that this query has been validated and the variable\n    // usage here is of the correct type.\n\n    return variableValue;\n  }\n\n  if ((0, _definition.isNonNullType)(type)) {\n    if (valueNode.kind === _kinds.Kind.NULL) {\n      return; // Invalid: intentionally return no value.\n    }\n\n    return valueFromAST(valueNode, type.ofType, variables);\n  }\n\n  if (valueNode.kind === _kinds.Kind.NULL) {\n    // This is explicitly returning the value null.\n    return null;\n  }\n\n  if ((0, _definition.isListType)(type)) {\n    const itemType = type.ofType;\n\n    if (valueNode.kind === _kinds.Kind.LIST) {\n      const coercedValues = [];\n\n      for (const itemNode of valueNode.values) {\n        if (isMissingVariable(itemNode, variables)) {\n          // If an array contains a missing variable, it is either coerced to\n          // null or if the item type is non-null, it considered invalid.\n          if ((0, _definition.isNonNullType)(itemType)) {\n            return; // Invalid: intentionally return no value.\n          }\n\n          coercedValues.push(null);\n        } else {\n          const itemValue = valueFromAST(itemNode, itemType, variables);\n\n          if (itemValue === undefined) {\n            return; // Invalid: intentionally return no value.\n          }\n\n          coercedValues.push(itemValue);\n        }\n      }\n\n      return coercedValues;\n    }\n\n    const coercedValue = valueFromAST(valueNode, itemType, variables);\n\n    if (coercedValue === undefined) {\n      return; // Invalid: intentionally return no value.\n    }\n\n    return [coercedValue];\n  }\n\n  if ((0, _definition.isInputObjectType)(type)) {\n    if (valueNode.kind !== _kinds.Kind.OBJECT) {\n      return; // Invalid: intentionally return no value.\n    }\n\n    const coercedObj = Object.create(null);\n    const fieldNodes = (0, _keyMap.keyMap)(\n      valueNode.fields,\n      (field) => field.name.value,\n    );\n\n    for (const field of Object.values(type.getFields())) {\n      const fieldNode = fieldNodes[field.name];\n\n      if (!fieldNode || isMissingVariable(fieldNode.value, variables)) {\n        if (field.defaultValue !== undefined) {\n          coercedObj[field.name] = field.defaultValue;\n        } else if ((0, _definition.isNonNullType)(field.type)) {\n          return; // Invalid: intentionally return no value.\n        }\n\n        continue;\n      }\n\n      const fieldValue = valueFromAST(fieldNode.value, field.type, variables);\n\n      if (fieldValue === undefined) {\n        return; // Invalid: intentionally return no value.\n      }\n\n      coercedObj[field.name] = fieldValue;\n    }\n\n    if (type.isOneOf) {\n      const keys = Object.keys(coercedObj);\n\n      if (keys.length !== 1) {\n        return; // Invalid: not exactly one key, intentionally return no value.\n      }\n\n      if (coercedObj[keys[0]] === null) {\n        return; // Invalid: value not non-null, intentionally return no value.\n      }\n    }\n\n    return coercedObj;\n  }\n\n  if ((0, _definition.isLeafType)(type)) {\n    // Scalars and Enums fulfill parsing a literal value via parseLiteral().\n    // Invalid values represent a failure to parse correctly, in which case\n    // no value is returned.\n    let result;\n\n    try {\n      result = type.parseLiteral(valueNode, variables);\n    } catch (_error) {\n      return; // Invalid: intentionally return no value.\n    }\n\n    if (result === undefined) {\n      return; // Invalid: intentionally return no value.\n    }\n\n    return result;\n  }\n  /* c8 ignore next 3 */\n  // Not reachable, all possible input types have been considered.\n\n  false ||\n    (0, _invariant.invariant)(\n      false,\n      'Unexpected input type: ' + (0, _inspect.inspect)(type),\n    );\n} // Returns true if the provided valueNode is a variable which is not defined\n// in the set of variables.\n\nfunction isMissingVariable(valueNode, variables) {\n  return (\n    valueNode.kind === _kinds.Kind.VARIABLE &&\n    (variables == null || variables[valueNode.name.value] === undefined)\n  );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.getArgumentValues = getArgumentValues;\nexports.getDirectiveValues = getDirectiveValues;\nexports.getVariableValues = getVariableValues;\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _keyMap = require('../jsutils/keyMap.js');\n\nvar _printPathArray = require('../jsutils/printPathArray.js');\n\nvar _GraphQLError = require('../error/GraphQLError.js');\n\nvar _kinds = require('../language/kinds.js');\n\nvar _printer = require('../language/printer.js');\n\nvar _definition = require('../type/definition.js');\n\nvar _coerceInputValue = require('../utilities/coerceInputValue.js');\n\nvar _typeFromAST = require('../utilities/typeFromAST.js');\n\nvar _valueFromAST = require('../utilities/valueFromAST.js');\n\n/**\n * Prepares an object map of variableValues of the correct type based on the\n * provided variable definitions and arbitrary input. If the input cannot be\n * parsed to match the variable definitions, a GraphQLError will be thrown.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\nfunction getVariableValues(schema, varDefNodes, inputs, options) {\n  const errors = [];\n  const maxErrors =\n    options === null || options === void 0 ? void 0 : options.maxErrors;\n\n  try {\n    const coerced = coerceVariableValues(\n      schema,\n      varDefNodes,\n      inputs,\n      (error) => {\n        if (maxErrors != null && errors.length >= maxErrors) {\n          throw new _GraphQLError.GraphQLError(\n            'Too many errors processing variables, error limit reached. Execution aborted.',\n          );\n        }\n\n        errors.push(error);\n      },\n    );\n\n    if (errors.length === 0) {\n      return {\n        coerced,\n      };\n    }\n  } catch (error) {\n    errors.push(error);\n  }\n\n  return {\n    errors,\n  };\n}\n\nfunction coerceVariableValues(schema, varDefNodes, inputs, onError) {\n  const coercedValues = {};\n\n  for (const varDefNode of varDefNodes) {\n    const varName = varDefNode.variable.name.value;\n    const varType = (0, _typeFromAST.typeFromAST)(schema, varDefNode.type);\n\n    if (!(0, _definition.isInputType)(varType)) {\n      // Must use input types for variables. This should be caught during\n      // validation, however is checked again here for safety.\n      const varTypeStr = (0, _printer.print)(varDefNode.type);\n      onError(\n        new _GraphQLError.GraphQLError(\n          `Variable \"$${varName}\" expected value of type \"${varTypeStr}\" which cannot be used as an input type.`,\n          {\n            nodes: varDefNode.type,\n          },\n        ),\n      );\n      continue;\n    }\n\n    if (!hasOwnProperty(inputs, varName)) {\n      if (varDefNode.defaultValue) {\n        coercedValues[varName] = (0, _valueFromAST.valueFromAST)(\n          varDefNode.defaultValue,\n          varType,\n        );\n      } else if ((0, _definition.isNonNullType)(varType)) {\n        const varTypeStr = (0, _inspect.inspect)(varType);\n        onError(\n          new _GraphQLError.GraphQLError(\n            `Variable \"$${varName}\" of required type \"${varTypeStr}\" was not provided.`,\n            {\n              nodes: varDefNode,\n            },\n          ),\n        );\n      }\n\n      continue;\n    }\n\n    const value = inputs[varName];\n\n    if (value === null && (0, _definition.isNonNullType)(varType)) {\n      const varTypeStr = (0, _inspect.inspect)(varType);\n      onError(\n        new _GraphQLError.GraphQLError(\n          `Variable \"$${varName}\" of non-null type \"${varTypeStr}\" must not be null.`,\n          {\n            nodes: varDefNode,\n          },\n        ),\n      );\n      continue;\n    }\n\n    coercedValues[varName] = (0, _coerceInputValue.coerceInputValue)(\n      value,\n      varType,\n      (path, invalidValue, error) => {\n        let prefix =\n          `Variable \"$${varName}\" got invalid value ` +\n          (0, _inspect.inspect)(invalidValue);\n\n        if (path.length > 0) {\n          prefix += ` at \"${varName}${(0, _printPathArray.printPathArray)(\n            path,\n          )}\"`;\n        }\n\n        onError(\n          new _GraphQLError.GraphQLError(prefix + '; ' + error.message, {\n            nodes: varDefNode,\n            originalError: error,\n          }),\n        );\n      },\n    );\n  }\n\n  return coercedValues;\n}\n/**\n * Prepares an object map of argument values given a list of argument\n * definitions and list of argument AST nodes.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\n\nfunction getArgumentValues(def, node, variableValues) {\n  var _node$arguments;\n\n  const coercedValues = {}; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n  /* c8 ignore next */\n\n  const argumentNodes =\n    (_node$arguments = node.arguments) !== null && _node$arguments !== void 0\n      ? _node$arguments\n      : [];\n  const argNodeMap = (0, _keyMap.keyMap)(\n    argumentNodes,\n    (arg) => arg.name.value,\n  );\n\n  for (const argDef of def.args) {\n    const name = argDef.name;\n    const argType = argDef.type;\n    const argumentNode = argNodeMap[name];\n\n    if (!argumentNode) {\n      if (argDef.defaultValue !== undefined) {\n        coercedValues[name] = argDef.defaultValue;\n      } else if ((0, _definition.isNonNullType)(argType)) {\n        throw new _GraphQLError.GraphQLError(\n          `Argument \"${name}\" of required type \"${(0, _inspect.inspect)(\n            argType,\n          )}\" ` + 'was not provided.',\n          {\n            nodes: node,\n          },\n        );\n      }\n\n      continue;\n    }\n\n    const valueNode = argumentNode.value;\n    let isNull = valueNode.kind === _kinds.Kind.NULL;\n\n    if (valueNode.kind === _kinds.Kind.VARIABLE) {\n      const variableName = valueNode.name.value;\n\n      if (\n        variableValues == null ||\n        !hasOwnProperty(variableValues, variableName)\n      ) {\n        if (argDef.defaultValue !== undefined) {\n          coercedValues[name] = argDef.defaultValue;\n        } else if ((0, _definition.isNonNullType)(argType)) {\n          throw new _GraphQLError.GraphQLError(\n            `Argument \"${name}\" of required type \"${(0, _inspect.inspect)(\n              argType,\n            )}\" ` +\n              `was provided the variable \"$${variableName}\" which was not provided a runtime value.`,\n            {\n              nodes: valueNode,\n            },\n          );\n        }\n\n        continue;\n      }\n\n      isNull = variableValues[variableName] == null;\n    }\n\n    if (isNull && (0, _definition.isNonNullType)(argType)) {\n      throw new _GraphQLError.GraphQLError(\n        `Argument \"${name}\" of non-null type \"${(0, _inspect.inspect)(\n          argType,\n        )}\" ` + 'must not be null.',\n        {\n          nodes: valueNode,\n        },\n      );\n    }\n\n    const coercedValue = (0, _valueFromAST.valueFromAST)(\n      valueNode,\n      argType,\n      variableValues,\n    );\n\n    if (coercedValue === undefined) {\n      // Note: ValuesOfCorrectTypeRule validation should catch this before\n      // execution. This is a runtime check to ensure execution does not\n      // continue with an invalid argument value.\n      throw new _GraphQLError.GraphQLError(\n        `Argument \"${name}\" has invalid value ${(0, _printer.print)(\n          valueNode,\n        )}.`,\n        {\n          nodes: valueNode,\n        },\n      );\n    }\n\n    coercedValues[name] = coercedValue;\n  }\n\n  return coercedValues;\n}\n/**\n * Prepares an object map of argument values given a directive definition\n * and a AST node which may contain directives. Optionally also accepts a map\n * of variable values.\n *\n * If the directive does not exist on the node, returns undefined.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\n\nfunction getDirectiveValues(directiveDef, node, variableValues) {\n  var _node$directives;\n\n  const directiveNode =\n    (_node$directives = node.directives) === null || _node$directives === void 0\n      ? void 0\n      : _node$directives.find(\n          (directive) => directive.name.value === directiveDef.name,\n        );\n\n  if (directiveNode) {\n    return getArgumentValues(directiveDef, directiveNode, variableValues);\n  }\n}\n\nfunction hasOwnProperty(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.collectFields = collectFields;\nexports.collectSubfields = collectSubfields;\n\nvar _kinds = require('../language/kinds.js');\n\nvar _definition = require('../type/definition.js');\n\nvar _directives = require('../type/directives.js');\n\nvar _typeFromAST = require('../utilities/typeFromAST.js');\n\nvar _values = require('./values.js');\n\n/**\n * Given a selectionSet, collects all of the fields and returns them.\n *\n * CollectFields requires the \"runtime type\" of an object. For a field that\n * returns an Interface or Union type, the \"runtime type\" will be the actual\n * object type returned by that field.\n *\n * @internal\n */\nfunction collectFields(\n  schema,\n  fragments,\n  variableValues,\n  runtimeType,\n  selectionSet,\n) {\n  const fields = new Map();\n  collectFieldsImpl(\n    schema,\n    fragments,\n    variableValues,\n    runtimeType,\n    selectionSet,\n    fields,\n    new Set(),\n  );\n  return fields;\n}\n/**\n * Given an array of field nodes, collects all of the subfields of the passed\n * in fields, and returns them at the end.\n *\n * CollectSubFields requires the \"return type\" of an object. For a field that\n * returns an Interface or Union type, the \"return type\" will be the actual\n * object type returned by that field.\n *\n * @internal\n */\n\nfunction collectSubfields(\n  schema,\n  fragments,\n  variableValues,\n  returnType,\n  fieldNodes,\n) {\n  const subFieldNodes = new Map();\n  const visitedFragmentNames = new Set();\n\n  for (const node of fieldNodes) {\n    if (node.selectionSet) {\n      collectFieldsImpl(\n        schema,\n        fragments,\n        variableValues,\n        returnType,\n        node.selectionSet,\n        subFieldNodes,\n        visitedFragmentNames,\n      );\n    }\n  }\n\n  return subFieldNodes;\n}\n\nfunction collectFieldsImpl(\n  schema,\n  fragments,\n  variableValues,\n  runtimeType,\n  selectionSet,\n  fields,\n  visitedFragmentNames,\n) {\n  for (const selection of selectionSet.selections) {\n    switch (selection.kind) {\n      case _kinds.Kind.FIELD: {\n        if (!shouldIncludeNode(variableValues, selection)) {\n          continue;\n        }\n\n        const name = getFieldEntryKey(selection);\n        const fieldList = fields.get(name);\n\n        if (fieldList !== undefined) {\n          fieldList.push(selection);\n        } else {\n          fields.set(name, [selection]);\n        }\n\n        break;\n      }\n\n      case _kinds.Kind.INLINE_FRAGMENT: {\n        if (\n          !shouldIncludeNode(variableValues, selection) ||\n          !doesFragmentConditionMatch(schema, selection, runtimeType)\n        ) {\n          continue;\n        }\n\n        collectFieldsImpl(\n          schema,\n          fragments,\n          variableValues,\n          runtimeType,\n          selection.selectionSet,\n          fields,\n          visitedFragmentNames,\n        );\n        break;\n      }\n\n      case _kinds.Kind.FRAGMENT_SPREAD: {\n        const fragName = selection.name.value;\n\n        if (\n          visitedFragmentNames.has(fragName) ||\n          !shouldIncludeNode(variableValues, selection)\n        ) {\n          continue;\n        }\n\n        visitedFragmentNames.add(fragName);\n        const fragment = fragments[fragName];\n\n        if (\n          !fragment ||\n          !doesFragmentConditionMatch(schema, fragment, runtimeType)\n        ) {\n          continue;\n        }\n\n        collectFieldsImpl(\n          schema,\n          fragments,\n          variableValues,\n          runtimeType,\n          fragment.selectionSet,\n          fields,\n          visitedFragmentNames,\n        );\n        break;\n      }\n    }\n  }\n}\n/**\n * Determines if a field should be included based on the `@include` and `@skip`\n * directives, where `@skip` has higher precedence than `@include`.\n */\n\nfunction shouldIncludeNode(variableValues, node) {\n  const skip = (0, _values.getDirectiveValues)(\n    _directives.GraphQLSkipDirective,\n    node,\n    variableValues,\n  );\n\n  if ((skip === null || skip === void 0 ? void 0 : skip.if) === true) {\n    return false;\n  }\n\n  const include = (0, _values.getDirectiveValues)(\n    _directives.GraphQLIncludeDirective,\n    node,\n    variableValues,\n  );\n\n  if (\n    (include === null || include === void 0 ? void 0 : include.if) === false\n  ) {\n    return false;\n  }\n\n  return true;\n}\n/**\n * Determines if a fragment is applicable to the given type.\n */\n\nfunction doesFragmentConditionMatch(schema, fragment, type) {\n  const typeConditionNode = fragment.typeCondition;\n\n  if (!typeConditionNode) {\n    return true;\n  }\n\n  const conditionalType = (0, _typeFromAST.typeFromAST)(\n    schema,\n    typeConditionNode,\n  );\n\n  if (conditionalType === type) {\n    return true;\n  }\n\n  if ((0, _definition.isAbstractType)(conditionalType)) {\n    return schema.isSubType(conditionalType, type);\n  }\n\n  return false;\n}\n/**\n * Implements the logic to compute the key of a given field's entry\n */\n\nfunction getFieldEntryKey(node) {\n  return node.alias ? node.alias.value : node.name.value;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.SingleFieldSubscriptionsRule = SingleFieldSubscriptionsRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _kinds = require('../../language/kinds.js');\n\nvar _collectFields = require('../../execution/collectFields.js');\n\n/**\n * Subscriptions must only include a non-introspection field.\n *\n * A GraphQL subscription is valid only if it contains a single root field and\n * that root field is not an introspection field.\n *\n * See https://spec.graphql.org/draft/#sec-Single-root-field\n */\nfunction SingleFieldSubscriptionsRule(context) {\n  return {\n    OperationDefinition(node) {\n      if (node.operation === 'subscription') {\n        const schema = context.getSchema();\n        const subscriptionType = schema.getSubscriptionType();\n\n        if (subscriptionType) {\n          const operationName = node.name ? node.name.value : null;\n          const variableValues = Object.create(null);\n          const document = context.getDocument();\n          const fragments = Object.create(null);\n\n          for (const definition of document.definitions) {\n            if (definition.kind === _kinds.Kind.FRAGMENT_DEFINITION) {\n              fragments[definition.name.value] = definition;\n            }\n          }\n\n          const fields = (0, _collectFields.collectFields)(\n            schema,\n            fragments,\n            variableValues,\n            subscriptionType,\n            node.selectionSet,\n          );\n\n          if (fields.size > 1) {\n            const fieldSelectionLists = [...fields.values()];\n            const extraFieldSelectionLists = fieldSelectionLists.slice(1);\n            const extraFieldSelections = extraFieldSelectionLists.flat();\n            context.reportError(\n              new _GraphQLError.GraphQLError(\n                operationName != null\n                  ? `Subscription \"${operationName}\" must select only one top level field.`\n                  : 'Anonymous Subscription must select only one top level field.',\n                {\n                  nodes: extraFieldSelections,\n                },\n              ),\n            );\n          }\n\n          for (const fieldNodes of fields.values()) {\n            const field = fieldNodes[0];\n            const fieldName = field.name.value;\n\n            if (fieldName.startsWith('__')) {\n              context.reportError(\n                new _GraphQLError.GraphQLError(\n                  operationName != null\n                    ? `Subscription \"${operationName}\" must not select an introspection top level field.`\n                    : 'Anonymous Subscription must not select an introspection top level field.',\n                  {\n                    nodes: fieldNodes,\n                  },\n                ),\n              );\n            }\n          }\n        }\n      }\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.groupBy = groupBy;\n\n/**\n * Groups array items into a Map, given a function to produce grouping key.\n */\nfunction groupBy(list, keyFn) {\n  const result = new Map();\n\n  for (const item of list) {\n    const key = keyFn(item);\n    const group = result.get(key);\n\n    if (group === undefined) {\n      result.set(key, [item]);\n    } else {\n      group.push(item);\n    }\n  }\n\n  return result;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.UniqueArgumentDefinitionNamesRule = UniqueArgumentDefinitionNamesRule;\n\nvar _groupBy = require('../../jsutils/groupBy.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * Unique argument definition names\n *\n * A GraphQL Object or Interface type is only valid if all its fields have uniquely named arguments.\n * A GraphQL Directive is only valid if all its arguments are uniquely named.\n */\nfunction UniqueArgumentDefinitionNamesRule(context) {\n  return {\n    DirectiveDefinition(directiveNode) {\n      var _directiveNode$argume;\n\n      // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n      /* c8 ignore next */\n      const argumentNodes =\n        (_directiveNode$argume = directiveNode.arguments) !== null &&\n        _directiveNode$argume !== void 0\n          ? _directiveNode$argume\n          : [];\n      return checkArgUniqueness(`@${directiveNode.name.value}`, argumentNodes);\n    },\n\n    InterfaceTypeDefinition: checkArgUniquenessPerField,\n    InterfaceTypeExtension: checkArgUniquenessPerField,\n    ObjectTypeDefinition: checkArgUniquenessPerField,\n    ObjectTypeExtension: checkArgUniquenessPerField,\n  };\n\n  function checkArgUniquenessPerField(typeNode) {\n    var _typeNode$fields;\n\n    const typeName = typeNode.name.value; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n    /* c8 ignore next */\n\n    const fieldNodes =\n      (_typeNode$fields = typeNode.fields) !== null &&\n      _typeNode$fields !== void 0\n        ? _typeNode$fields\n        : [];\n\n    for (const fieldDef of fieldNodes) {\n      var _fieldDef$arguments;\n\n      const fieldName = fieldDef.name.value; // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n      /* c8 ignore next */\n\n      const argumentNodes =\n        (_fieldDef$arguments = fieldDef.arguments) !== null &&\n        _fieldDef$arguments !== void 0\n          ? _fieldDef$arguments\n          : [];\n      checkArgUniqueness(`${typeName}.${fieldName}`, argumentNodes);\n    }\n\n    return false;\n  }\n\n  function checkArgUniqueness(parentName, argumentNodes) {\n    const seenArgs = (0, _groupBy.groupBy)(\n      argumentNodes,\n      (arg) => arg.name.value,\n    );\n\n    for (const [argName, argNodes] of seenArgs) {\n      if (argNodes.length > 1) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Argument \"${parentName}(${argName}:)\" can only be defined once.`,\n            {\n              nodes: argNodes.map((node) => node.name),\n            },\n          ),\n        );\n      }\n    }\n\n    return false;\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.UniqueArgumentNamesRule = UniqueArgumentNamesRule;\n\nvar _groupBy = require('../../jsutils/groupBy.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * Unique argument names\n *\n * A GraphQL field or directive is only valid if all supplied arguments are\n * uniquely named.\n *\n * See https://spec.graphql.org/draft/#sec-Argument-Names\n */\nfunction UniqueArgumentNamesRule(context) {\n  return {\n    Field: checkArgUniqueness,\n    Directive: checkArgUniqueness,\n  };\n\n  function checkArgUniqueness(parentNode) {\n    var _parentNode$arguments;\n\n    // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n    /* c8 ignore next */\n    const argumentNodes =\n      (_parentNode$arguments = parentNode.arguments) !== null &&\n      _parentNode$arguments !== void 0\n        ? _parentNode$arguments\n        : [];\n    const seenArgs = (0, _groupBy.groupBy)(\n      argumentNodes,\n      (arg) => arg.name.value,\n    );\n\n    for (const [argName, argNodes] of seenArgs) {\n      if (argNodes.length > 1) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `There can be only one argument named \"${argName}\".`,\n            {\n              nodes: argNodes.map((node) => node.name),\n            },\n          ),\n        );\n      }\n    }\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.UniqueDirectiveNamesRule = UniqueDirectiveNamesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * Unique directive names\n *\n * A GraphQL document is only valid if all defined directives have unique names.\n */\nfunction UniqueDirectiveNamesRule(context) {\n  const knownDirectiveNames = Object.create(null);\n  const schema = context.getSchema();\n  return {\n    DirectiveDefinition(node) {\n      const directiveName = node.name.value;\n\n      if (\n        schema !== null &&\n        schema !== void 0 &&\n        schema.getDirective(directiveName)\n      ) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Directive \"@${directiveName}\" already exists in the schema. It cannot be redefined.`,\n            {\n              nodes: node.name,\n            },\n          ),\n        );\n        return;\n      }\n\n      if (knownDirectiveNames[directiveName]) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `There can be only one directive named \"@${directiveName}\".`,\n            {\n              nodes: [knownDirectiveNames[directiveName], node.name],\n            },\n          ),\n        );\n      } else {\n        knownDirectiveNames[directiveName] = node.name;\n      }\n\n      return false;\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.UniqueDirectivesPerLocationRule = UniqueDirectivesPerLocationRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _kinds = require('../../language/kinds.js');\n\nvar _predicates = require('../../language/predicates.js');\n\nvar _directives = require('../../type/directives.js');\n\n/**\n * Unique directive names per location\n *\n * A GraphQL document is only valid if all non-repeatable directives at\n * a given location are uniquely named.\n *\n * See https://spec.graphql.org/draft/#sec-Directives-Are-Unique-Per-Location\n */\nfunction UniqueDirectivesPerLocationRule(context) {\n  const uniqueDirectiveMap = Object.create(null);\n  const schema = context.getSchema();\n  const definedDirectives = schema\n    ? schema.getDirectives()\n    : _directives.specifiedDirectives;\n\n  for (const directive of definedDirectives) {\n    uniqueDirectiveMap[directive.name] = !directive.isRepeatable;\n  }\n\n  const astDefinitions = context.getDocument().definitions;\n\n  for (const def of astDefinitions) {\n    if (def.kind === _kinds.Kind.DIRECTIVE_DEFINITION) {\n      uniqueDirectiveMap[def.name.value] = !def.repeatable;\n    }\n  }\n\n  const schemaDirectives = Object.create(null);\n  const typeDirectivesMap = Object.create(null);\n  return {\n    // Many different AST nodes may contain directives. Rather than listing\n    // them all, just listen for entering any node, and check to see if it\n    // defines any directives.\n    enter(node) {\n      if (!('directives' in node) || !node.directives) {\n        return;\n      }\n\n      let seenDirectives;\n\n      if (\n        node.kind === _kinds.Kind.SCHEMA_DEFINITION ||\n        node.kind === _kinds.Kind.SCHEMA_EXTENSION\n      ) {\n        seenDirectives = schemaDirectives;\n      } else if (\n        (0, _predicates.isTypeDefinitionNode)(node) ||\n        (0, _predicates.isTypeExtensionNode)(node)\n      ) {\n        const typeName = node.name.value;\n        seenDirectives = typeDirectivesMap[typeName];\n\n        if (seenDirectives === undefined) {\n          typeDirectivesMap[typeName] = seenDirectives = Object.create(null);\n        }\n      } else {\n        seenDirectives = Object.create(null);\n      }\n\n      for (const directive of node.directives) {\n        const directiveName = directive.name.value;\n\n        if (uniqueDirectiveMap[directiveName]) {\n          if (seenDirectives[directiveName]) {\n            context.reportError(\n              new _GraphQLError.GraphQLError(\n                `The directive \"@${directiveName}\" can only be used once at this location.`,\n                {\n                  nodes: [seenDirectives[directiveName], directive],\n                },\n              ),\n            );\n          } else {\n            seenDirectives[directiveName] = directive;\n          }\n        }\n      }\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.UniqueEnumValueNamesRule = UniqueEnumValueNamesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _definition = require('../../type/definition.js');\n\n/**\n * Unique enum value names\n *\n * A GraphQL enum type is only valid if all its values are uniquely named.\n */\nfunction UniqueEnumValueNamesRule(context) {\n  const schema = context.getSchema();\n  const existingTypeMap = schema ? schema.getTypeMap() : Object.create(null);\n  const knownValueNames = Object.create(null);\n  return {\n    EnumTypeDefinition: checkValueUniqueness,\n    EnumTypeExtension: checkValueUniqueness,\n  };\n\n  function checkValueUniqueness(node) {\n    var _node$values;\n\n    const typeName = node.name.value;\n\n    if (!knownValueNames[typeName]) {\n      knownValueNames[typeName] = Object.create(null);\n    } // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n    /* c8 ignore next */\n\n    const valueNodes =\n      (_node$values = node.values) !== null && _node$values !== void 0\n        ? _node$values\n        : [];\n    const valueNames = knownValueNames[typeName];\n\n    for (const valueDef of valueNodes) {\n      const valueName = valueDef.name.value;\n      const existingType = existingTypeMap[typeName];\n\n      if (\n        (0, _definition.isEnumType)(existingType) &&\n        existingType.getValue(valueName)\n      ) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Enum value \"${typeName}.${valueName}\" already exists in the schema. It cannot also be defined in this type extension.`,\n            {\n              nodes: valueDef.name,\n            },\n          ),\n        );\n      } else if (valueNames[valueName]) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Enum value \"${typeName}.${valueName}\" can only be defined once.`,\n            {\n              nodes: [valueNames[valueName], valueDef.name],\n            },\n          ),\n        );\n      } else {\n        valueNames[valueName] = valueDef.name;\n      }\n    }\n\n    return false;\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.UniqueFieldDefinitionNamesRule = UniqueFieldDefinitionNamesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _definition = require('../../type/definition.js');\n\n/**\n * Unique field definition names\n *\n * A GraphQL complex type is only valid if all its fields are uniquely named.\n */\nfunction UniqueFieldDefinitionNamesRule(context) {\n  const schema = context.getSchema();\n  const existingTypeMap = schema ? schema.getTypeMap() : Object.create(null);\n  const knownFieldNames = Object.create(null);\n  return {\n    InputObjectTypeDefinition: checkFieldUniqueness,\n    InputObjectTypeExtension: checkFieldUniqueness,\n    InterfaceTypeDefinition: checkFieldUniqueness,\n    InterfaceTypeExtension: checkFieldUniqueness,\n    ObjectTypeDefinition: checkFieldUniqueness,\n    ObjectTypeExtension: checkFieldUniqueness,\n  };\n\n  function checkFieldUniqueness(node) {\n    var _node$fields;\n\n    const typeName = node.name.value;\n\n    if (!knownFieldNames[typeName]) {\n      knownFieldNames[typeName] = Object.create(null);\n    } // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n    /* c8 ignore next */\n\n    const fieldNodes =\n      (_node$fields = node.fields) !== null && _node$fields !== void 0\n        ? _node$fields\n        : [];\n    const fieldNames = knownFieldNames[typeName];\n\n    for (const fieldDef of fieldNodes) {\n      const fieldName = fieldDef.name.value;\n\n      if (hasField(existingTypeMap[typeName], fieldName)) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Field \"${typeName}.${fieldName}\" already exists in the schema. It cannot also be defined in this type extension.`,\n            {\n              nodes: fieldDef.name,\n            },\n          ),\n        );\n      } else if (fieldNames[fieldName]) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Field \"${typeName}.${fieldName}\" can only be defined once.`,\n            {\n              nodes: [fieldNames[fieldName], fieldDef.name],\n            },\n          ),\n        );\n      } else {\n        fieldNames[fieldName] = fieldDef.name;\n      }\n    }\n\n    return false;\n  }\n}\n\nfunction hasField(type, fieldName) {\n  if (\n    (0, _definition.isObjectType)(type) ||\n    (0, _definition.isInterfaceType)(type) ||\n    (0, _definition.isInputObjectType)(type)\n  ) {\n    return type.getFields()[fieldName] != null;\n  }\n\n  return false;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.UniqueFragmentNamesRule = UniqueFragmentNamesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * Unique fragment names\n *\n * A GraphQL document is only valid if all defined fragments have unique names.\n *\n * See https://spec.graphql.org/draft/#sec-Fragment-Name-Uniqueness\n */\nfunction UniqueFragmentNamesRule(context) {\n  const knownFragmentNames = Object.create(null);\n  return {\n    OperationDefinition: () => false,\n\n    FragmentDefinition(node) {\n      const fragmentName = node.name.value;\n\n      if (knownFragmentNames[fragmentName]) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `There can be only one fragment named \"${fragmentName}\".`,\n            {\n              nodes: [knownFragmentNames[fragmentName], node.name],\n            },\n          ),\n        );\n      } else {\n        knownFragmentNames[fragmentName] = node.name;\n      }\n\n      return false;\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.UniqueInputFieldNamesRule = UniqueInputFieldNamesRule;\n\nvar _invariant = require('../../jsutils/invariant.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * Unique input field names\n *\n * A GraphQL input object value is only valid if all supplied fields are\n * uniquely named.\n *\n * See https://spec.graphql.org/draft/#sec-Input-Object-Field-Uniqueness\n */\nfunction UniqueInputFieldNamesRule(context) {\n  const knownNameStack = [];\n  let knownNames = Object.create(null);\n  return {\n    ObjectValue: {\n      enter() {\n        knownNameStack.push(knownNames);\n        knownNames = Object.create(null);\n      },\n\n      leave() {\n        const prevKnownNames = knownNameStack.pop();\n        prevKnownNames || (0, _invariant.invariant)(false);\n        knownNames = prevKnownNames;\n      },\n    },\n\n    ObjectField(node) {\n      const fieldName = node.name.value;\n\n      if (knownNames[fieldName]) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `There can be only one input field named \"${fieldName}\".`,\n            {\n              nodes: [knownNames[fieldName], node.name],\n            },\n          ),\n        );\n      } else {\n        knownNames[fieldName] = node.name;\n      }\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.UniqueOperationNamesRule = UniqueOperationNamesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * Unique operation names\n *\n * A GraphQL document is only valid if all defined operations have unique names.\n *\n * See https://spec.graphql.org/draft/#sec-Operation-Name-Uniqueness\n */\nfunction UniqueOperationNamesRule(context) {\n  const knownOperationNames = Object.create(null);\n  return {\n    OperationDefinition(node) {\n      const operationName = node.name;\n\n      if (operationName) {\n        if (knownOperationNames[operationName.value]) {\n          context.reportError(\n            new _GraphQLError.GraphQLError(\n              `There can be only one operation named \"${operationName.value}\".`,\n              {\n                nodes: [\n                  knownOperationNames[operationName.value],\n                  operationName,\n                ],\n              },\n            ),\n          );\n        } else {\n          knownOperationNames[operationName.value] = operationName;\n        }\n      }\n\n      return false;\n    },\n\n    FragmentDefinition: () => false,\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.UniqueOperationTypesRule = UniqueOperationTypesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * Unique operation types\n *\n * A GraphQL document is only valid if it has only one type per operation.\n */\nfunction UniqueOperationTypesRule(context) {\n  const schema = context.getSchema();\n  const definedOperationTypes = Object.create(null);\n  const existingOperationTypes = schema\n    ? {\n        query: schema.getQueryType(),\n        mutation: schema.getMutationType(),\n        subscription: schema.getSubscriptionType(),\n      }\n    : {};\n  return {\n    SchemaDefinition: checkOperationTypes,\n    SchemaExtension: checkOperationTypes,\n  };\n\n  function checkOperationTypes(node) {\n    var _node$operationTypes;\n\n    // See: https://github.com/graphql/graphql-js/issues/2203\n\n    /* c8 ignore next */\n    const operationTypesNodes =\n      (_node$operationTypes = node.operationTypes) !== null &&\n      _node$operationTypes !== void 0\n        ? _node$operationTypes\n        : [];\n\n    for (const operationType of operationTypesNodes) {\n      const operation = operationType.operation;\n      const alreadyDefinedOperationType = definedOperationTypes[operation];\n\n      if (existingOperationTypes[operation]) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Type for ${operation} already defined in the schema. It cannot be redefined.`,\n            {\n              nodes: operationType,\n            },\n          ),\n        );\n      } else if (alreadyDefinedOperationType) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `There can be only one ${operation} type in schema.`,\n            {\n              nodes: [alreadyDefinedOperationType, operationType],\n            },\n          ),\n        );\n      } else {\n        definedOperationTypes[operation] = operationType;\n      }\n    }\n\n    return false;\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.UniqueTypeNamesRule = UniqueTypeNamesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * Unique type names\n *\n * A GraphQL document is only valid if all defined types have unique names.\n */\nfunction UniqueTypeNamesRule(context) {\n  const knownTypeNames = Object.create(null);\n  const schema = context.getSchema();\n  return {\n    ScalarTypeDefinition: checkTypeName,\n    ObjectTypeDefinition: checkTypeName,\n    InterfaceTypeDefinition: checkTypeName,\n    UnionTypeDefinition: checkTypeName,\n    EnumTypeDefinition: checkTypeName,\n    InputObjectTypeDefinition: checkTypeName,\n  };\n\n  function checkTypeName(node) {\n    const typeName = node.name.value;\n\n    if (schema !== null && schema !== void 0 && schema.getType(typeName)) {\n      context.reportError(\n        new _GraphQLError.GraphQLError(\n          `Type \"${typeName}\" already exists in the schema. It cannot also be defined in this type definition.`,\n          {\n            nodes: node.name,\n          },\n        ),\n      );\n      return;\n    }\n\n    if (knownTypeNames[typeName]) {\n      context.reportError(\n        new _GraphQLError.GraphQLError(\n          `There can be only one type named \"${typeName}\".`,\n          {\n            nodes: [knownTypeNames[typeName], node.name],\n          },\n        ),\n      );\n    } else {\n      knownTypeNames[typeName] = node.name;\n    }\n\n    return false;\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.UniqueVariableNamesRule = UniqueVariableNamesRule;\n\nvar _groupBy = require('../../jsutils/groupBy.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\n/**\n * Unique variable names\n *\n * A GraphQL operation is only valid if all its variables are uniquely named.\n */\nfunction UniqueVariableNamesRule(context) {\n  return {\n    OperationDefinition(operationNode) {\n      var _operationNode$variab;\n\n      // See: https://github.com/graphql/graphql-js/issues/2203\n\n      /* c8 ignore next */\n      const variableDefinitions =\n        (_operationNode$variab = operationNode.variableDefinitions) !== null &&\n        _operationNode$variab !== void 0\n          ? _operationNode$variab\n          : [];\n      const seenVariableDefinitions = (0, _groupBy.groupBy)(\n        variableDefinitions,\n        (node) => node.variable.name.value,\n      );\n\n      for (const [variableName, variableNodes] of seenVariableDefinitions) {\n        if (variableNodes.length > 1) {\n          context.reportError(\n            new _GraphQLError.GraphQLError(\n              `There can be only one variable named \"$${variableName}\".`,\n              {\n                nodes: variableNodes.map((node) => node.variable.name),\n              },\n            ),\n          );\n        }\n      }\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.ValuesOfCorrectTypeRule = ValuesOfCorrectTypeRule;\n\nvar _didYouMean = require('../../jsutils/didYouMean.js');\n\nvar _inspect = require('../../jsutils/inspect.js');\n\nvar _keyMap = require('../../jsutils/keyMap.js');\n\nvar _suggestionList = require('../../jsutils/suggestionList.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _kinds = require('../../language/kinds.js');\n\nvar _printer = require('../../language/printer.js');\n\nvar _definition = require('../../type/definition.js');\n\n/**\n * Value literals of correct type\n *\n * A GraphQL document is only valid if all value literals are of the type\n * expected at their position.\n *\n * See https://spec.graphql.org/draft/#sec-Values-of-Correct-Type\n */\nfunction ValuesOfCorrectTypeRule(context) {\n  let variableDefinitions = {};\n  return {\n    OperationDefinition: {\n      enter() {\n        variableDefinitions = {};\n      },\n    },\n\n    VariableDefinition(definition) {\n      variableDefinitions[definition.variable.name.value] = definition;\n    },\n\n    ListValue(node) {\n      // Note: TypeInfo will traverse into a list's item type, so look to the\n      // parent input type to check if it is a list.\n      const type = (0, _definition.getNullableType)(\n        context.getParentInputType(),\n      );\n\n      if (!(0, _definition.isListType)(type)) {\n        isValidValueNode(context, node);\n        return false; // Don't traverse further.\n      }\n    },\n\n    ObjectValue(node) {\n      const type = (0, _definition.getNamedType)(context.getInputType());\n\n      if (!(0, _definition.isInputObjectType)(type)) {\n        isValidValueNode(context, node);\n        return false; // Don't traverse further.\n      } // Ensure every required field exists.\n\n      const fieldNodeMap = (0, _keyMap.keyMap)(\n        node.fields,\n        (field) => field.name.value,\n      );\n\n      for (const fieldDef of Object.values(type.getFields())) {\n        const fieldNode = fieldNodeMap[fieldDef.name];\n\n        if (!fieldNode && (0, _definition.isRequiredInputField)(fieldDef)) {\n          const typeStr = (0, _inspect.inspect)(fieldDef.type);\n          context.reportError(\n            new _GraphQLError.GraphQLError(\n              `Field \"${type.name}.${fieldDef.name}\" of required type \"${typeStr}\" was not provided.`,\n              {\n                nodes: node,\n              },\n            ),\n          );\n        }\n      }\n\n      if (type.isOneOf) {\n        validateOneOfInputObject(context, node, type, fieldNodeMap);\n      }\n    },\n\n    ObjectField(node) {\n      const parentType = (0, _definition.getNamedType)(\n        context.getParentInputType(),\n      );\n      const fieldType = context.getInputType();\n\n      if (!fieldType && (0, _definition.isInputObjectType)(parentType)) {\n        const suggestions = (0, _suggestionList.suggestionList)(\n          node.name.value,\n          Object.keys(parentType.getFields()),\n        );\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Field \"${node.name.value}\" is not defined by type \"${parentType.name}\".` +\n              (0, _didYouMean.didYouMean)(suggestions),\n            {\n              nodes: node,\n            },\n          ),\n        );\n      }\n    },\n\n    NullValue(node) {\n      const type = context.getInputType();\n\n      if ((0, _definition.isNonNullType)(type)) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Expected value of type \"${(0, _inspect.inspect)(\n              type,\n            )}\", found ${(0, _printer.print)(node)}.`,\n            {\n              nodes: node,\n            },\n          ),\n        );\n      }\n    },\n\n    EnumValue: (node) => isValidValueNode(context, node),\n    IntValue: (node) => isValidValueNode(context, node),\n    FloatValue: (node) => isValidValueNode(context, node),\n    StringValue: (node) => isValidValueNode(context, node),\n    BooleanValue: (node) => isValidValueNode(context, node),\n  };\n}\n/**\n * Any value literal may be a valid representation of a Scalar, depending on\n * that scalar type.\n */\n\nfunction isValidValueNode(context, node) {\n  // Report any error at the full type expected by the location.\n  const locationType = context.getInputType();\n\n  if (!locationType) {\n    return;\n  }\n\n  const type = (0, _definition.getNamedType)(locationType);\n\n  if (!(0, _definition.isLeafType)(type)) {\n    const typeStr = (0, _inspect.inspect)(locationType);\n    context.reportError(\n      new _GraphQLError.GraphQLError(\n        `Expected value of type \"${typeStr}\", found ${(0, _printer.print)(\n          node,\n        )}.`,\n        {\n          nodes: node,\n        },\n      ),\n    );\n    return;\n  } // Scalars and Enums determine if a literal value is valid via parseLiteral(),\n  // which may throw or return an invalid value to indicate failure.\n\n  try {\n    const parseResult = type.parseLiteral(\n      node,\n      undefined,\n      /* variables */\n    );\n\n    if (parseResult === undefined) {\n      const typeStr = (0, _inspect.inspect)(locationType);\n      context.reportError(\n        new _GraphQLError.GraphQLError(\n          `Expected value of type \"${typeStr}\", found ${(0, _printer.print)(\n            node,\n          )}.`,\n          {\n            nodes: node,\n          },\n        ),\n      );\n    }\n  } catch (error) {\n    const typeStr = (0, _inspect.inspect)(locationType);\n\n    if (error instanceof _GraphQLError.GraphQLError) {\n      context.reportError(error);\n    } else {\n      context.reportError(\n        new _GraphQLError.GraphQLError(\n          `Expected value of type \"${typeStr}\", found ${(0, _printer.print)(\n            node,\n          )}; ` + error.message,\n          {\n            nodes: node,\n            originalError: error,\n          },\n        ),\n      );\n    }\n  }\n}\n\nfunction validateOneOfInputObject(context, node, type, fieldNodeMap) {\n  var _fieldNodeMap$keys$;\n\n  const keys = Object.keys(fieldNodeMap);\n  const isNotExactlyOneField = keys.length !== 1;\n\n  if (isNotExactlyOneField) {\n    context.reportError(\n      new _GraphQLError.GraphQLError(\n        `OneOf Input Object \"${type.name}\" must specify exactly one key.`,\n        {\n          nodes: [node],\n        },\n      ),\n    );\n    return;\n  }\n\n  const value =\n    (_fieldNodeMap$keys$ = fieldNodeMap[keys[0]]) === null ||\n    _fieldNodeMap$keys$ === void 0\n      ? void 0\n      : _fieldNodeMap$keys$.value;\n  const isNullLiteral = !value || value.kind === _kinds.Kind.NULL;\n\n  if (isNullLiteral) {\n    context.reportError(\n      new _GraphQLError.GraphQLError(\n        `Field \"${type.name}.${keys[0]}\" must be non-null.`,\n        {\n          nodes: [node],\n        },\n      ),\n    );\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.VariablesAreInputTypesRule = VariablesAreInputTypesRule;\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _printer = require('../../language/printer.js');\n\nvar _definition = require('../../type/definition.js');\n\nvar _typeFromAST = require('../../utilities/typeFromAST.js');\n\n/**\n * Variables are input types\n *\n * A GraphQL operation is only valid if all the variables it defines are of\n * input types (scalar, enum, or input object).\n *\n * See https://spec.graphql.org/draft/#sec-Variables-Are-Input-Types\n */\nfunction VariablesAreInputTypesRule(context) {\n  return {\n    VariableDefinition(node) {\n      const type = (0, _typeFromAST.typeFromAST)(\n        context.getSchema(),\n        node.type,\n      );\n\n      if (type !== undefined && !(0, _definition.isInputType)(type)) {\n        const variableName = node.variable.name.value;\n        const typeName = (0, _printer.print)(node.type);\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `Variable \"$${variableName}\" cannot be non-input type \"${typeName}\".`,\n            {\n              nodes: node.type,\n            },\n          ),\n        );\n      }\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.VariablesInAllowedPositionRule = VariablesInAllowedPositionRule;\n\nvar _inspect = require('../../jsutils/inspect.js');\n\nvar _GraphQLError = require('../../error/GraphQLError.js');\n\nvar _kinds = require('../../language/kinds.js');\n\nvar _definition = require('../../type/definition.js');\n\nvar _typeComparators = require('../../utilities/typeComparators.js');\n\nvar _typeFromAST = require('../../utilities/typeFromAST.js');\n\n/**\n * Variables in allowed position\n *\n * Variable usages must be compatible with the arguments they are passed to.\n *\n * See https://spec.graphql.org/draft/#sec-All-Variable-Usages-are-Allowed\n */\nfunction VariablesInAllowedPositionRule(context) {\n  let varDefMap = Object.create(null);\n  return {\n    OperationDefinition: {\n      enter() {\n        varDefMap = Object.create(null);\n      },\n\n      leave(operation) {\n        const usages = context.getRecursiveVariableUsages(operation);\n\n        for (const { node, type, defaultValue, parentType } of usages) {\n          const varName = node.name.value;\n          const varDef = varDefMap[varName];\n\n          if (varDef && type) {\n            // A var type is allowed if it is the same or more strict (e.g. is\n            // a subtype of) than the expected type. It can be more strict if\n            // the variable type is non-null when the expected type is nullable.\n            // If both are list types, the variable item type can be more strict\n            // than the expected item type (contravariant).\n            const schema = context.getSchema();\n            const varType = (0, _typeFromAST.typeFromAST)(schema, varDef.type);\n\n            if (\n              varType &&\n              !allowedVariableUsage(\n                schema,\n                varType,\n                varDef.defaultValue,\n                type,\n                defaultValue,\n              )\n            ) {\n              const varTypeStr = (0, _inspect.inspect)(varType);\n              const typeStr = (0, _inspect.inspect)(type);\n              context.reportError(\n                new _GraphQLError.GraphQLError(\n                  `Variable \"$${varName}\" of type \"${varTypeStr}\" used in position expecting type \"${typeStr}\".`,\n                  {\n                    nodes: [varDef, node],\n                  },\n                ),\n              );\n            }\n\n            if (\n              (0, _definition.isInputObjectType)(parentType) &&\n              parentType.isOneOf &&\n              (0, _definition.isNullableType)(varType)\n            ) {\n              context.reportError(\n                new _GraphQLError.GraphQLError(\n                  `Variable \"$${varName}\" is of type \"${varType}\" but must be non-nullable to be used for OneOf Input Object \"${parentType}\".`,\n                  {\n                    nodes: [varDef, node],\n                  },\n                ),\n              );\n            }\n          }\n        }\n      },\n    },\n\n    VariableDefinition(node) {\n      varDefMap[node.variable.name.value] = node;\n    },\n  };\n}\n/**\n * Returns true if the variable is allowed in the location it was found,\n * which includes considering if default values exist for either the variable\n * or the location at which it is located.\n */\n\nfunction allowedVariableUsage(\n  schema,\n  varType,\n  varDefaultValue,\n  locationType,\n  locationDefaultValue,\n) {\n  if (\n    (0, _definition.isNonNullType)(locationType) &&\n    !(0, _definition.isNonNullType)(varType)\n  ) {\n    const hasNonNullVariableDefaultValue =\n      varDefaultValue != null && varDefaultValue.kind !== _kinds.Kind.NULL;\n    const hasLocationDefaultValue = locationDefaultValue !== undefined;\n\n    if (!hasNonNullVariableDefaultValue && !hasLocationDefaultValue) {\n      return false;\n    }\n\n    const nullableLocationType = locationType.ofType;\n    return (0, _typeComparators.isTypeSubTypeOf)(\n      schema,\n      varType,\n      nullableLocationType,\n    );\n  }\n\n  return (0, _typeComparators.isTypeSubTypeOf)(schema, varType, locationType);\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.specifiedSDLRules =\n  exports.specifiedRules =\n  exports.recommendedRules =\n    void 0;\n\nvar _ExecutableDefinitionsRule = require('./rules/ExecutableDefinitionsRule.js');\n\nvar _FieldsOnCorrectTypeRule = require('./rules/FieldsOnCorrectTypeRule.js');\n\nvar _FragmentsOnCompositeTypesRule = require('./rules/FragmentsOnCompositeTypesRule.js');\n\nvar _KnownArgumentNamesRule = require('./rules/KnownArgumentNamesRule.js');\n\nvar _KnownDirectivesRule = require('./rules/KnownDirectivesRule.js');\n\nvar _KnownFragmentNamesRule = require('./rules/KnownFragmentNamesRule.js');\n\nvar _KnownTypeNamesRule = require('./rules/KnownTypeNamesRule.js');\n\nvar _LoneAnonymousOperationRule = require('./rules/LoneAnonymousOperationRule.js');\n\nvar _LoneSchemaDefinitionRule = require('./rules/LoneSchemaDefinitionRule.js');\n\nvar _MaxIntrospectionDepthRule = require('./rules/MaxIntrospectionDepthRule.js');\n\nvar _NoFragmentCyclesRule = require('./rules/NoFragmentCyclesRule.js');\n\nvar _NoUndefinedVariablesRule = require('./rules/NoUndefinedVariablesRule.js');\n\nvar _NoUnusedFragmentsRule = require('./rules/NoUnusedFragmentsRule.js');\n\nvar _NoUnusedVariablesRule = require('./rules/NoUnusedVariablesRule.js');\n\nvar _OverlappingFieldsCanBeMergedRule = require('./rules/OverlappingFieldsCanBeMergedRule.js');\n\nvar _PossibleFragmentSpreadsRule = require('./rules/PossibleFragmentSpreadsRule.js');\n\nvar _PossibleTypeExtensionsRule = require('./rules/PossibleTypeExtensionsRule.js');\n\nvar _ProvidedRequiredArgumentsRule = require('./rules/ProvidedRequiredArgumentsRule.js');\n\nvar _ScalarLeafsRule = require('./rules/ScalarLeafsRule.js');\n\nvar _SingleFieldSubscriptionsRule = require('./rules/SingleFieldSubscriptionsRule.js');\n\nvar _UniqueArgumentDefinitionNamesRule = require('./rules/UniqueArgumentDefinitionNamesRule.js');\n\nvar _UniqueArgumentNamesRule = require('./rules/UniqueArgumentNamesRule.js');\n\nvar _UniqueDirectiveNamesRule = require('./rules/UniqueDirectiveNamesRule.js');\n\nvar _UniqueDirectivesPerLocationRule = require('./rules/UniqueDirectivesPerLocationRule.js');\n\nvar _UniqueEnumValueNamesRule = require('./rules/UniqueEnumValueNamesRule.js');\n\nvar _UniqueFieldDefinitionNamesRule = require('./rules/UniqueFieldDefinitionNamesRule.js');\n\nvar _UniqueFragmentNamesRule = require('./rules/UniqueFragmentNamesRule.js');\n\nvar _UniqueInputFieldNamesRule = require('./rules/UniqueInputFieldNamesRule.js');\n\nvar _UniqueOperationNamesRule = require('./rules/UniqueOperationNamesRule.js');\n\nvar _UniqueOperationTypesRule = require('./rules/UniqueOperationTypesRule.js');\n\nvar _UniqueTypeNamesRule = require('./rules/UniqueTypeNamesRule.js');\n\nvar _UniqueVariableNamesRule = require('./rules/UniqueVariableNamesRule.js');\n\nvar _ValuesOfCorrectTypeRule = require('./rules/ValuesOfCorrectTypeRule.js');\n\nvar _VariablesAreInputTypesRule = require('./rules/VariablesAreInputTypesRule.js');\n\nvar _VariablesInAllowedPositionRule = require('./rules/VariablesInAllowedPositionRule.js');\n\n// Spec Section: \"Executable Definitions\"\n// Spec Section: \"Field Selections on Objects, Interfaces, and Unions Types\"\n// Spec Section: \"Fragments on Composite Types\"\n// Spec Section: \"Argument Names\"\n// Spec Section: \"Directives Are Defined\"\n// Spec Section: \"Fragment spread target defined\"\n// Spec Section: \"Fragment Spread Type Existence\"\n// Spec Section: \"Lone Anonymous Operation\"\n// SDL-specific validation rules\n// TODO: Spec Section\n// Spec Section: \"Fragments must not form cycles\"\n// Spec Section: \"All Variable Used Defined\"\n// Spec Section: \"Fragments must be used\"\n// Spec Section: \"All Variables Used\"\n// Spec Section: \"Field Selection Merging\"\n// Spec Section: \"Fragment spread is possible\"\n// Spec Section: \"Argument Optionality\"\n// Spec Section: \"Leaf Field Selections\"\n// Spec Section: \"Subscriptions with Single Root Field\"\n// Spec Section: \"Argument Uniqueness\"\n// Spec Section: \"Directives Are Unique Per Location\"\n// Spec Section: \"Fragment Name Uniqueness\"\n// Spec Section: \"Input Object Field Uniqueness\"\n// Spec Section: \"Operation Name Uniqueness\"\n// Spec Section: \"Variable Uniqueness\"\n// Spec Section: \"Value Type Correctness\"\n// Spec Section: \"Variables are Input Types\"\n// Spec Section: \"All Variable Usages Are Allowed\"\n\n/**\n * Technically these aren't part of the spec but they are strongly encouraged\n * validation rules.\n */\nconst recommendedRules = Object.freeze([\n  _MaxIntrospectionDepthRule.MaxIntrospectionDepthRule,\n]);\n/**\n * This set includes all validation rules defined by the GraphQL spec.\n *\n * The order of the rules in this list has been adjusted to lead to the\n * most clear output when encountering multiple validation errors.\n */\n\nexports.recommendedRules = recommendedRules;\nconst specifiedRules = Object.freeze([\n  _ExecutableDefinitionsRule.ExecutableDefinitionsRule,\n  _UniqueOperationNamesRule.UniqueOperationNamesRule,\n  _LoneAnonymousOperationRule.LoneAnonymousOperationRule,\n  _SingleFieldSubscriptionsRule.SingleFieldSubscriptionsRule,\n  _KnownTypeNamesRule.KnownTypeNamesRule,\n  _FragmentsOnCompositeTypesRule.FragmentsOnCompositeTypesRule,\n  _VariablesAreInputTypesRule.VariablesAreInputTypesRule,\n  _ScalarLeafsRule.ScalarLeafsRule,\n  _FieldsOnCorrectTypeRule.FieldsOnCorrectTypeRule,\n  _UniqueFragmentNamesRule.UniqueFragmentNamesRule,\n  _KnownFragmentNamesRule.KnownFragmentNamesRule,\n  _NoUnusedFragmentsRule.NoUnusedFragmentsRule,\n  _PossibleFragmentSpreadsRule.PossibleFragmentSpreadsRule,\n  _NoFragmentCyclesRule.NoFragmentCyclesRule,\n  _UniqueVariableNamesRule.UniqueVariableNamesRule,\n  _NoUndefinedVariablesRule.NoUndefinedVariablesRule,\n  _NoUnusedVariablesRule.NoUnusedVariablesRule,\n  _KnownDirectivesRule.KnownDirectivesRule,\n  _UniqueDirectivesPerLocationRule.UniqueDirectivesPerLocationRule,\n  _KnownArgumentNamesRule.KnownArgumentNamesRule,\n  _UniqueArgumentNamesRule.UniqueArgumentNamesRule,\n  _ValuesOfCorrectTypeRule.ValuesOfCorrectTypeRule,\n  _ProvidedRequiredArgumentsRule.ProvidedRequiredArgumentsRule,\n  _VariablesInAllowedPositionRule.VariablesInAllowedPositionRule,\n  _OverlappingFieldsCanBeMergedRule.OverlappingFieldsCanBeMergedRule,\n  _UniqueInputFieldNamesRule.UniqueInputFieldNamesRule,\n  ...recommendedRules,\n]);\n/**\n * @internal\n */\n\nexports.specifiedRules = specifiedRules;\nconst specifiedSDLRules = Object.freeze([\n  _LoneSchemaDefinitionRule.LoneSchemaDefinitionRule,\n  _UniqueOperationTypesRule.UniqueOperationTypesRule,\n  _UniqueTypeNamesRule.UniqueTypeNamesRule,\n  _UniqueEnumValueNamesRule.UniqueEnumValueNamesRule,\n  _UniqueFieldDefinitionNamesRule.UniqueFieldDefinitionNamesRule,\n  _UniqueArgumentDefinitionNamesRule.UniqueArgumentDefinitionNamesRule,\n  _UniqueDirectiveNamesRule.UniqueDirectiveNamesRule,\n  _KnownTypeNamesRule.KnownTypeNamesRule,\n  _KnownDirectivesRule.KnownDirectivesRule,\n  _UniqueDirectivesPerLocationRule.UniqueDirectivesPerLocationRule,\n  _PossibleTypeExtensionsRule.PossibleTypeExtensionsRule,\n  _KnownArgumentNamesRule.KnownArgumentNamesOnDirectivesRule,\n  _UniqueArgumentNamesRule.UniqueArgumentNamesRule,\n  _UniqueInputFieldNamesRule.UniqueInputFieldNamesRule,\n  _ProvidedRequiredArgumentsRule.ProvidedRequiredArgumentsOnDirectivesRule,\n]);\nexports.specifiedSDLRules = specifiedSDLRules;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.ValidationContext =\n  exports.SDLValidationContext =\n  exports.ASTValidationContext =\n    void 0;\n\nvar _kinds = require('../language/kinds.js');\n\nvar _visitor = require('../language/visitor.js');\n\nvar _TypeInfo = require('../utilities/TypeInfo.js');\n\n/**\n * An instance of this class is passed as the \"this\" context to all validators,\n * allowing access to commonly useful contextual information from within a\n * validation rule.\n */\nclass ASTValidationContext {\n  constructor(ast, onError) {\n    this._ast = ast;\n    this._fragments = undefined;\n    this._fragmentSpreads = new Map();\n    this._recursivelyReferencedFragments = new Map();\n    this._onError = onError;\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'ASTValidationContext';\n  }\n\n  reportError(error) {\n    this._onError(error);\n  }\n\n  getDocument() {\n    return this._ast;\n  }\n\n  getFragment(name) {\n    let fragments;\n\n    if (this._fragments) {\n      fragments = this._fragments;\n    } else {\n      fragments = Object.create(null);\n\n      for (const defNode of this.getDocument().definitions) {\n        if (defNode.kind === _kinds.Kind.FRAGMENT_DEFINITION) {\n          fragments[defNode.name.value] = defNode;\n        }\n      }\n\n      this._fragments = fragments;\n    }\n\n    return fragments[name];\n  }\n\n  getFragmentSpreads(node) {\n    let spreads = this._fragmentSpreads.get(node);\n\n    if (!spreads) {\n      spreads = [];\n      const setsToVisit = [node];\n      let set;\n\n      while ((set = setsToVisit.pop())) {\n        for (const selection of set.selections) {\n          if (selection.kind === _kinds.Kind.FRAGMENT_SPREAD) {\n            spreads.push(selection);\n          } else if (selection.selectionSet) {\n            setsToVisit.push(selection.selectionSet);\n          }\n        }\n      }\n\n      this._fragmentSpreads.set(node, spreads);\n    }\n\n    return spreads;\n  }\n\n  getRecursivelyReferencedFragments(operation) {\n    let fragments = this._recursivelyReferencedFragments.get(operation);\n\n    if (!fragments) {\n      fragments = [];\n      const collectedNames = Object.create(null);\n      const nodesToVisit = [operation.selectionSet];\n      let node;\n\n      while ((node = nodesToVisit.pop())) {\n        for (const spread of this.getFragmentSpreads(node)) {\n          const fragName = spread.name.value;\n\n          if (collectedNames[fragName] !== true) {\n            collectedNames[fragName] = true;\n            const fragment = this.getFragment(fragName);\n\n            if (fragment) {\n              fragments.push(fragment);\n              nodesToVisit.push(fragment.selectionSet);\n            }\n          }\n        }\n      }\n\n      this._recursivelyReferencedFragments.set(operation, fragments);\n    }\n\n    return fragments;\n  }\n}\n\nexports.ASTValidationContext = ASTValidationContext;\n\nclass SDLValidationContext extends ASTValidationContext {\n  constructor(ast, schema, onError) {\n    super(ast, onError);\n    this._schema = schema;\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'SDLValidationContext';\n  }\n\n  getSchema() {\n    return this._schema;\n  }\n}\n\nexports.SDLValidationContext = SDLValidationContext;\n\nclass ValidationContext extends ASTValidationContext {\n  constructor(schema, ast, typeInfo, onError) {\n    super(ast, onError);\n    this._schema = schema;\n    this._typeInfo = typeInfo;\n    this._variableUsages = new Map();\n    this._recursiveVariableUsages = new Map();\n  }\n\n  get [Symbol.toStringTag]() {\n    return 'ValidationContext';\n  }\n\n  getSchema() {\n    return this._schema;\n  }\n\n  getVariableUsages(node) {\n    let usages = this._variableUsages.get(node);\n\n    if (!usages) {\n      const newUsages = [];\n      const typeInfo = new _TypeInfo.TypeInfo(this._schema);\n      (0, _visitor.visit)(\n        node,\n        (0, _TypeInfo.visitWithTypeInfo)(typeInfo, {\n          VariableDefinition: () => false,\n\n          Variable(variable) {\n            newUsages.push({\n              node: variable,\n              type: typeInfo.getInputType(),\n              defaultValue: typeInfo.getDefaultValue(),\n              parentType: typeInfo.getParentInputType(),\n            });\n          },\n        }),\n      );\n      usages = newUsages;\n\n      this._variableUsages.set(node, usages);\n    }\n\n    return usages;\n  }\n\n  getRecursiveVariableUsages(operation) {\n    let usages = this._recursiveVariableUsages.get(operation);\n\n    if (!usages) {\n      usages = this.getVariableUsages(operation);\n\n      for (const frag of this.getRecursivelyReferencedFragments(operation)) {\n        usages = usages.concat(this.getVariableUsages(frag));\n      }\n\n      this._recursiveVariableUsages.set(operation, usages);\n    }\n\n    return usages;\n  }\n\n  getType() {\n    return this._typeInfo.getType();\n  }\n\n  getParentType() {\n    return this._typeInfo.getParentType();\n  }\n\n  getInputType() {\n    return this._typeInfo.getInputType();\n  }\n\n  getParentInputType() {\n    return this._typeInfo.getParentInputType();\n  }\n\n  getFieldDef() {\n    return this._typeInfo.getFieldDef();\n  }\n\n  getDirective() {\n    return this._typeInfo.getDirective();\n  }\n\n  getArgument() {\n    return this._typeInfo.getArgument();\n  }\n\n  getEnumValue() {\n    return this._typeInfo.getEnumValue();\n  }\n}\n\nexports.ValidationContext = ValidationContext;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.assertValidSDL = assertValidSDL;\nexports.assertValidSDLExtension = assertValidSDLExtension;\nexports.validate = validate;\nexports.validateSDL = validateSDL;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _GraphQLError = require('../error/GraphQLError.js');\n\nvar _visitor = require('../language/visitor.js');\n\nvar _validate = require('../type/validate.js');\n\nvar _TypeInfo = require('../utilities/TypeInfo.js');\n\nvar _specifiedRules = require('./specifiedRules.js');\n\nvar _ValidationContext = require('./ValidationContext.js');\n\n/**\n * Implements the \"Validation\" section of the spec.\n *\n * Validation runs synchronously, returning an array of encountered errors, or\n * an empty array if no errors were encountered and the document is valid.\n *\n * A list of specific validation rules may be provided. If not provided, the\n * default list of rules defined by the GraphQL specification will be used.\n *\n * Each validation rules is a function which returns a visitor\n * (see the language/visitor API). Visitor methods are expected to return\n * GraphQLErrors, or Arrays of GraphQLErrors when invalid.\n *\n * Validate will stop validation after a `maxErrors` limit has been reached.\n * Attackers can send pathologically invalid queries to induce a DoS attack,\n * so by default `maxErrors` set to 100 errors.\n *\n * Optionally a custom TypeInfo instance may be provided. If not provided, one\n * will be created from the provided schema.\n */\nfunction validate(\n  schema,\n  documentAST,\n  rules = _specifiedRules.specifiedRules,\n  options,\n  /** @deprecated will be removed in 17.0.0 */\n  typeInfo = new _TypeInfo.TypeInfo(schema),\n) {\n  var _options$maxErrors;\n\n  const maxErrors =\n    (_options$maxErrors =\n      options === null || options === void 0 ? void 0 : options.maxErrors) !==\n      null && _options$maxErrors !== void 0\n      ? _options$maxErrors\n      : 100;\n  documentAST || (0, _devAssert.devAssert)(false, 'Must provide document.'); // If the schema used for validation is invalid, throw an error.\n\n  (0, _validate.assertValidSchema)(schema);\n  const abortObj = Object.freeze({});\n  const errors = [];\n  const context = new _ValidationContext.ValidationContext(\n    schema,\n    documentAST,\n    typeInfo,\n    (error) => {\n      if (errors.length >= maxErrors) {\n        errors.push(\n          new _GraphQLError.GraphQLError(\n            'Too many validation errors, error limit reached. Validation aborted.',\n          ),\n        ); // eslint-disable-next-line @typescript-eslint/no-throw-literal\n\n        throw abortObj;\n      }\n\n      errors.push(error);\n    },\n  ); // This uses a specialized visitor which runs multiple visitors in parallel,\n  // while maintaining the visitor skip and break API.\n\n  const visitor = (0, _visitor.visitInParallel)(\n    rules.map((rule) => rule(context)),\n  ); // Visit the whole document with each instance of all provided rules.\n\n  try {\n    (0, _visitor.visit)(\n      documentAST,\n      (0, _TypeInfo.visitWithTypeInfo)(typeInfo, visitor),\n    );\n  } catch (e) {\n    if (e !== abortObj) {\n      throw e;\n    }\n  }\n\n  return errors;\n}\n/**\n * @internal\n */\n\nfunction validateSDL(\n  documentAST,\n  schemaToExtend,\n  rules = _specifiedRules.specifiedSDLRules,\n) {\n  const errors = [];\n  const context = new _ValidationContext.SDLValidationContext(\n    documentAST,\n    schemaToExtend,\n    (error) => {\n      errors.push(error);\n    },\n  );\n  const visitors = rules.map((rule) => rule(context));\n  (0, _visitor.visit)(documentAST, (0, _visitor.visitInParallel)(visitors));\n  return errors;\n}\n/**\n * Utility function which asserts a SDL document is valid by throwing an error\n * if it is invalid.\n *\n * @internal\n */\n\nfunction assertValidSDL(documentAST) {\n  const errors = validateSDL(documentAST);\n\n  if (errors.length !== 0) {\n    throw new Error(errors.map((error) => error.message).join('\\n\\n'));\n  }\n}\n/**\n * Utility function which asserts a SDL document is valid by throwing an error\n * if it is invalid.\n *\n * @internal\n */\n\nfunction assertValidSDLExtension(documentAST, schema) {\n  const errors = validateSDL(documentAST, schema);\n\n  if (errors.length !== 0) {\n    throw new Error(errors.map((error) => error.message).join('\\n\\n'));\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.memoize3 = memoize3;\n\n/**\n * Memoizes the provided three-argument function.\n */\nfunction memoize3(fn) {\n  let cache0;\n  return function memoized(a1, a2, a3) {\n    if (cache0 === undefined) {\n      cache0 = new WeakMap();\n    }\n\n    let cache1 = cache0.get(a1);\n\n    if (cache1 === undefined) {\n      cache1 = new WeakMap();\n      cache0.set(a1, cache1);\n    }\n\n    let cache2 = cache1.get(a2);\n\n    if (cache2 === undefined) {\n      cache2 = new WeakMap();\n      cache1.set(a2, cache2);\n    }\n\n    let fnResult = cache2.get(a3);\n\n    if (fnResult === undefined) {\n      fnResult = fn(a1, a2, a3);\n      cache2.set(a3, fnResult);\n    }\n\n    return fnResult;\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.promiseForObject = promiseForObject;\n\n/**\n * This function transforms a JS object `ObjMap<Promise<T>>` into\n * a `Promise<ObjMap<T>>`\n *\n * This is akin to bluebird's `Promise.props`, but implemented only using\n * `Promise.all` so it will work with any implementation of ES6 promises.\n */\nfunction promiseForObject(object) {\n  return Promise.all(Object.values(object)).then((resolvedValues) => {\n    const resolvedObject = Object.create(null);\n\n    for (const [i, key] of Object.keys(object).entries()) {\n      resolvedObject[key] = resolvedValues[i];\n    }\n\n    return resolvedObject;\n  });\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.promiseReduce = promiseReduce;\n\nvar _isPromise = require('./isPromise.js');\n\n/**\n * Similar to Array.prototype.reduce(), however the reducing callback may return\n * a Promise, in which case reduction will continue after each promise resolves.\n *\n * If the callback does not return a Promise, then this function will also not\n * return a Promise.\n */\nfunction promiseReduce(values, callbackFn, initialValue) {\n  let accumulator = initialValue;\n\n  for (const value of values) {\n    accumulator = (0, _isPromise.isPromise)(accumulator)\n      ? accumulator.then((resolved) => callbackFn(resolved, value))\n      : callbackFn(accumulator, value);\n  }\n\n  return accumulator;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.toError = toError;\n\nvar _inspect = require('./inspect.js');\n\n/**\n * Sometimes a non-error is thrown, wrap it as an Error instance to ensure a consistent Error interface.\n */\nfunction toError(thrownValue) {\n  return thrownValue instanceof Error\n    ? thrownValue\n    : new NonErrorThrown(thrownValue);\n}\n\nclass NonErrorThrown extends Error {\n  constructor(thrownValue) {\n    super('Unexpected error value: ' + (0, _inspect.inspect)(thrownValue));\n    this.name = 'NonErrorThrown';\n    this.thrownValue = thrownValue;\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.locatedError = locatedError;\n\nvar _toError = require('../jsutils/toError.js');\n\nvar _GraphQLError = require('./GraphQLError.js');\n\n/**\n * Given an arbitrary value, presumably thrown while attempting to execute a\n * GraphQL operation, produce a new GraphQLError aware of the location in the\n * document responsible for the original Error.\n */\nfunction locatedError(rawOriginalError, nodes, path) {\n  var _nodes;\n\n  const originalError = (0, _toError.toError)(rawOriginalError); // Note: this uses a brand-check to support GraphQL errors originating from other contexts.\n\n  if (isLocatedGraphQLError(originalError)) {\n    return originalError;\n  }\n\n  return new _GraphQLError.GraphQLError(originalError.message, {\n    nodes:\n      (_nodes = originalError.nodes) !== null && _nodes !== void 0\n        ? _nodes\n        : nodes,\n    source: originalError.source,\n    positions: originalError.positions,\n    path,\n    originalError,\n  });\n}\n\nfunction isLocatedGraphQLError(error) {\n  return Array.isArray(error.path);\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.assertValidExecutionArguments = assertValidExecutionArguments;\nexports.buildExecutionContext = buildExecutionContext;\nexports.buildResolveInfo = buildResolveInfo;\nexports.defaultTypeResolver = exports.defaultFieldResolver = void 0;\nexports.execute = execute;\nexports.executeSync = executeSync;\nexports.getFieldDef = getFieldDef;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _invariant = require('../jsutils/invariant.js');\n\nvar _isIterableObject = require('../jsutils/isIterableObject.js');\n\nvar _isObjectLike = require('../jsutils/isObjectLike.js');\n\nvar _isPromise = require('../jsutils/isPromise.js');\n\nvar _memoize = require('../jsutils/memoize3.js');\n\nvar _Path = require('../jsutils/Path.js');\n\nvar _promiseForObject = require('../jsutils/promiseForObject.js');\n\nvar _promiseReduce = require('../jsutils/promiseReduce.js');\n\nvar _GraphQLError = require('../error/GraphQLError.js');\n\nvar _locatedError = require('../error/locatedError.js');\n\nvar _ast = require('../language/ast.js');\n\nvar _kinds = require('../language/kinds.js');\n\nvar _definition = require('../type/definition.js');\n\nvar _introspection = require('../type/introspection.js');\n\nvar _validate = require('../type/validate.js');\n\nvar _collectFields = require('./collectFields.js');\n\nvar _values = require('./values.js');\n\n/**\n * A memoized collection of relevant subfields with regard to the return\n * type. Memoizing ensures the subfields are not repeatedly calculated, which\n * saves overhead when resolving lists of values.\n */\nconst collectSubfields = (0, _memoize.memoize3)(\n  (exeContext, returnType, fieldNodes) =>\n    (0, _collectFields.collectSubfields)(\n      exeContext.schema,\n      exeContext.fragments,\n      exeContext.variableValues,\n      returnType,\n      fieldNodes,\n    ),\n);\n/**\n * Terminology\n *\n * \"Definitions\" are the generic name for top-level statements in the document.\n * Examples of this include:\n * 1) Operations (such as a query)\n * 2) Fragments\n *\n * \"Operations\" are a generic name for requests in the document.\n * Examples of this include:\n * 1) query,\n * 2) mutation\n *\n * \"Selections\" are the definitions that can appear legally and at\n * single level of the query. These include:\n * 1) field references e.g `a`\n * 2) fragment \"spreads\" e.g. `...c`\n * 3) inline fragment \"spreads\" e.g. `...on Type { a }`\n */\n\n/**\n * Data that must be available at all points during query execution.\n *\n * Namely, schema of the type system that is currently executing,\n * and the fragments defined in the query document\n */\n\n/**\n * Implements the \"Executing requests\" section of the GraphQL specification.\n *\n * Returns either a synchronous ExecutionResult (if all encountered resolvers\n * are synchronous), or a Promise of an ExecutionResult that will eventually be\n * resolved and never rejected.\n *\n * If the arguments to this function do not result in a legal execution context,\n * a GraphQLError will be thrown immediately explaining the invalid input.\n */\nfunction execute(args) {\n  // Temporary for v15 to v16 migration. Remove in v17\n  arguments.length < 2 ||\n    (0, _devAssert.devAssert)(\n      false,\n      'graphql@16 dropped long-deprecated support for positional arguments, please pass an object instead.',\n    );\n  const { schema, document, variableValues, rootValue } = args; // If arguments are missing or incorrect, throw an error.\n\n  assertValidExecutionArguments(schema, document, variableValues); // If a valid execution context cannot be created due to incorrect arguments,\n  // a \"Response\" with only errors is returned.\n\n  const exeContext = buildExecutionContext(args); // Return early errors if execution context failed.\n\n  if (!('schema' in exeContext)) {\n    return {\n      errors: exeContext,\n    };\n  } // Return a Promise that will eventually resolve to the data described by\n  // The \"Response\" section of the GraphQL specification.\n  //\n  // If errors are encountered while executing a GraphQL field, only that\n  // field and its descendants will be omitted, and sibling fields will still\n  // be executed. An execution which encounters errors will still result in a\n  // resolved Promise.\n  //\n  // Errors from sub-fields of a NonNull type may propagate to the top level,\n  // at which point we still log the error and null the parent field, which\n  // in this case is the entire response.\n\n  try {\n    const { operation } = exeContext;\n    const result = executeOperation(exeContext, operation, rootValue);\n\n    if ((0, _isPromise.isPromise)(result)) {\n      return result.then(\n        (data) => buildResponse(data, exeContext.errors),\n        (error) => {\n          exeContext.errors.push(error);\n          return buildResponse(null, exeContext.errors);\n        },\n      );\n    }\n\n    return buildResponse(result, exeContext.errors);\n  } catch (error) {\n    exeContext.errors.push(error);\n    return buildResponse(null, exeContext.errors);\n  }\n}\n/**\n * Also implements the \"Executing requests\" section of the GraphQL specification.\n * However, it guarantees to complete synchronously (or throw an error) assuming\n * that all field resolvers are also synchronous.\n */\n\nfunction executeSync(args) {\n  const result = execute(args); // Assert that the execution was synchronous.\n\n  if ((0, _isPromise.isPromise)(result)) {\n    throw new Error('GraphQL execution failed to complete synchronously.');\n  }\n\n  return result;\n}\n/**\n * Given a completed execution context and data, build the `{ errors, data }`\n * response defined by the \"Response\" section of the GraphQL specification.\n */\n\nfunction buildResponse(data, errors) {\n  return errors.length === 0\n    ? {\n        data,\n      }\n    : {\n        errors,\n        data,\n      };\n}\n/**\n * Essential assertions before executing to provide developer feedback for\n * improper use of the GraphQL library.\n *\n * @internal\n */\n\nfunction assertValidExecutionArguments(schema, document, rawVariableValues) {\n  document || (0, _devAssert.devAssert)(false, 'Must provide document.'); // If the schema used for execution is invalid, throw an error.\n\n  (0, _validate.assertValidSchema)(schema); // Variables, if provided, must be an object.\n\n  rawVariableValues == null ||\n    (0, _isObjectLike.isObjectLike)(rawVariableValues) ||\n    (0, _devAssert.devAssert)(\n      false,\n      'Variables must be provided as an Object where each property is a variable value. Perhaps look to see if an unparsed JSON string was provided.',\n    );\n}\n/**\n * Constructs a ExecutionContext object from the arguments passed to\n * execute, which we will pass throughout the other execution methods.\n *\n * Throws a GraphQLError if a valid execution context cannot be created.\n *\n * @internal\n */\n\nfunction buildExecutionContext(args) {\n  var _definition$name, _operation$variableDe, _options$maxCoercionE;\n\n  const {\n    schema,\n    document,\n    rootValue,\n    contextValue,\n    variableValues: rawVariableValues,\n    operationName,\n    fieldResolver,\n    typeResolver,\n    subscribeFieldResolver,\n    options,\n  } = args;\n  let operation;\n  const fragments = Object.create(null);\n\n  for (const definition of document.definitions) {\n    switch (definition.kind) {\n      case _kinds.Kind.OPERATION_DEFINITION:\n        if (operationName == null) {\n          if (operation !== undefined) {\n            return [\n              new _GraphQLError.GraphQLError(\n                'Must provide operation name if query contains multiple operations.',\n              ),\n            ];\n          }\n\n          operation = definition;\n        } else if (\n          ((_definition$name = definition.name) === null ||\n          _definition$name === void 0\n            ? void 0\n            : _definition$name.value) === operationName\n        ) {\n          operation = definition;\n        }\n\n        break;\n\n      case _kinds.Kind.FRAGMENT_DEFINITION:\n        fragments[definition.name.value] = definition;\n        break;\n\n      default: // ignore non-executable definitions\n    }\n  }\n\n  if (!operation) {\n    if (operationName != null) {\n      return [\n        new _GraphQLError.GraphQLError(\n          `Unknown operation named \"${operationName}\".`,\n        ),\n      ];\n    }\n\n    return [new _GraphQLError.GraphQLError('Must provide an operation.')];\n  } // FIXME: https://github.com/graphql/graphql-js/issues/2203\n\n  /* c8 ignore next */\n\n  const variableDefinitions =\n    (_operation$variableDe = operation.variableDefinitions) !== null &&\n    _operation$variableDe !== void 0\n      ? _operation$variableDe\n      : [];\n  const coercedVariableValues = (0, _values.getVariableValues)(\n    schema,\n    variableDefinitions,\n    rawVariableValues !== null && rawVariableValues !== void 0\n      ? rawVariableValues\n      : {},\n    {\n      maxErrors:\n        (_options$maxCoercionE =\n          options === null || options === void 0\n            ? void 0\n            : options.maxCoercionErrors) !== null &&\n        _options$maxCoercionE !== void 0\n          ? _options$maxCoercionE\n          : 50,\n    },\n  );\n\n  if (coercedVariableValues.errors) {\n    return coercedVariableValues.errors;\n  }\n\n  return {\n    schema,\n    fragments,\n    rootValue,\n    contextValue,\n    operation,\n    variableValues: coercedVariableValues.coerced,\n    fieldResolver:\n      fieldResolver !== null && fieldResolver !== void 0\n        ? fieldResolver\n        : defaultFieldResolver,\n    typeResolver:\n      typeResolver !== null && typeResolver !== void 0\n        ? typeResolver\n        : defaultTypeResolver,\n    subscribeFieldResolver:\n      subscribeFieldResolver !== null && subscribeFieldResolver !== void 0\n        ? subscribeFieldResolver\n        : defaultFieldResolver,\n    errors: [],\n  };\n}\n/**\n * Implements the \"Executing operations\" section of the spec.\n */\n\nfunction executeOperation(exeContext, operation, rootValue) {\n  const rootType = exeContext.schema.getRootType(operation.operation);\n\n  if (rootType == null) {\n    throw new _GraphQLError.GraphQLError(\n      `Schema is not configured to execute ${operation.operation} operation.`,\n      {\n        nodes: operation,\n      },\n    );\n  }\n\n  const rootFields = (0, _collectFields.collectFields)(\n    exeContext.schema,\n    exeContext.fragments,\n    exeContext.variableValues,\n    rootType,\n    operation.selectionSet,\n  );\n  const path = undefined;\n\n  switch (operation.operation) {\n    case _ast.OperationTypeNode.QUERY:\n      return executeFields(exeContext, rootType, rootValue, path, rootFields);\n\n    case _ast.OperationTypeNode.MUTATION:\n      return executeFieldsSerially(\n        exeContext,\n        rootType,\n        rootValue,\n        path,\n        rootFields,\n      );\n\n    case _ast.OperationTypeNode.SUBSCRIPTION:\n      // TODO: deprecate `subscribe` and move all logic here\n      // Temporary solution until we finish merging execute and subscribe together\n      return executeFields(exeContext, rootType, rootValue, path, rootFields);\n  }\n}\n/**\n * Implements the \"Executing selection sets\" section of the spec\n * for fields that must be executed serially.\n */\n\nfunction executeFieldsSerially(\n  exeContext,\n  parentType,\n  sourceValue,\n  path,\n  fields,\n) {\n  return (0, _promiseReduce.promiseReduce)(\n    fields.entries(),\n    (results, [responseName, fieldNodes]) => {\n      const fieldPath = (0, _Path.addPath)(path, responseName, parentType.name);\n      const result = executeField(\n        exeContext,\n        parentType,\n        sourceValue,\n        fieldNodes,\n        fieldPath,\n      );\n\n      if (result === undefined) {\n        return results;\n      }\n\n      if ((0, _isPromise.isPromise)(result)) {\n        return result.then((resolvedResult) => {\n          results[responseName] = resolvedResult;\n          return results;\n        });\n      }\n\n      results[responseName] = result;\n      return results;\n    },\n    Object.create(null),\n  );\n}\n/**\n * Implements the \"Executing selection sets\" section of the spec\n * for fields that may be executed in parallel.\n */\n\nfunction executeFields(exeContext, parentType, sourceValue, path, fields) {\n  const results = Object.create(null);\n  let containsPromise = false;\n\n  try {\n    for (const [responseName, fieldNodes] of fields.entries()) {\n      const fieldPath = (0, _Path.addPath)(path, responseName, parentType.name);\n      const result = executeField(\n        exeContext,\n        parentType,\n        sourceValue,\n        fieldNodes,\n        fieldPath,\n      );\n\n      if (result !== undefined) {\n        results[responseName] = result;\n\n        if ((0, _isPromise.isPromise)(result)) {\n          containsPromise = true;\n        }\n      }\n    }\n  } catch (error) {\n    if (containsPromise) {\n      // Ensure that any promises returned by other fields are handled, as they may also reject.\n      return (0, _promiseForObject.promiseForObject)(results).finally(() => {\n        throw error;\n      });\n    }\n\n    throw error;\n  } // If there are no promises, we can just return the object\n\n  if (!containsPromise) {\n    return results;\n  } // Otherwise, results is a map from field name to the result of resolving that\n  // field, which is possibly a promise. Return a promise that will return this\n  // same map, but with any promises replaced with the values they resolved to.\n\n  return (0, _promiseForObject.promiseForObject)(results);\n}\n/**\n * Implements the \"Executing fields\" section of the spec\n * In particular, this function figures out the value that the field returns by\n * calling its resolve function, then calls completeValue to complete promises,\n * serialize scalars, or execute the sub-selection-set for objects.\n */\n\nfunction executeField(exeContext, parentType, source, fieldNodes, path) {\n  var _fieldDef$resolve;\n\n  const fieldDef = getFieldDef(exeContext.schema, parentType, fieldNodes[0]);\n\n  if (!fieldDef) {\n    return;\n  }\n\n  const returnType = fieldDef.type;\n  const resolveFn =\n    (_fieldDef$resolve = fieldDef.resolve) !== null &&\n    _fieldDef$resolve !== void 0\n      ? _fieldDef$resolve\n      : exeContext.fieldResolver;\n  const info = buildResolveInfo(\n    exeContext,\n    fieldDef,\n    fieldNodes,\n    parentType,\n    path,\n  ); // Get the resolve function, regardless of if its result is normal or abrupt (error).\n\n  try {\n    // Build a JS object of arguments from the field.arguments AST, using the\n    // variables scope to fulfill any variable references.\n    // TODO: find a way to memoize, in case this field is within a List type.\n    const args = (0, _values.getArgumentValues)(\n      fieldDef,\n      fieldNodes[0],\n      exeContext.variableValues,\n    ); // The resolve function's optional third argument is a context value that\n    // is provided to every resolve function within an execution. It is commonly\n    // used to represent an authenticated user, or request-specific caches.\n\n    const contextValue = exeContext.contextValue;\n    const result = resolveFn(source, args, contextValue, info);\n    let completed;\n\n    if ((0, _isPromise.isPromise)(result)) {\n      completed = result.then((resolved) =>\n        completeValue(exeContext, returnType, fieldNodes, info, path, resolved),\n      );\n    } else {\n      completed = completeValue(\n        exeContext,\n        returnType,\n        fieldNodes,\n        info,\n        path,\n        result,\n      );\n    }\n\n    if ((0, _isPromise.isPromise)(completed)) {\n      // Note: we don't rely on a `catch` method, but we do expect \"thenable\"\n      // to take a second callback for the error case.\n      return completed.then(undefined, (rawError) => {\n        const error = (0, _locatedError.locatedError)(\n          rawError,\n          fieldNodes,\n          (0, _Path.pathToArray)(path),\n        );\n        return handleFieldError(error, returnType, exeContext);\n      });\n    }\n\n    return completed;\n  } catch (rawError) {\n    const error = (0, _locatedError.locatedError)(\n      rawError,\n      fieldNodes,\n      (0, _Path.pathToArray)(path),\n    );\n    return handleFieldError(error, returnType, exeContext);\n  }\n}\n/**\n * @internal\n */\n\nfunction buildResolveInfo(exeContext, fieldDef, fieldNodes, parentType, path) {\n  // The resolve function's optional fourth argument is a collection of\n  // information about the current execution state.\n  return {\n    fieldName: fieldDef.name,\n    fieldNodes,\n    returnType: fieldDef.type,\n    parentType,\n    path,\n    schema: exeContext.schema,\n    fragments: exeContext.fragments,\n    rootValue: exeContext.rootValue,\n    operation: exeContext.operation,\n    variableValues: exeContext.variableValues,\n  };\n}\n\nfunction handleFieldError(error, returnType, exeContext) {\n  // If the field type is non-nullable, then it is resolved without any\n  // protection from errors, however it still properly locates the error.\n  if ((0, _definition.isNonNullType)(returnType)) {\n    throw error;\n  } // Otherwise, error protection is applied, logging the error and resolving\n  // a null value for this field if one is encountered.\n\n  exeContext.errors.push(error);\n  return null;\n}\n/**\n * Implements the instructions for completeValue as defined in the\n * \"Value Completion\" section of the spec.\n *\n * If the field type is Non-Null, then this recursively completes the value\n * for the inner type. It throws a field error if that completion returns null,\n * as per the \"Nullability\" section of the spec.\n *\n * If the field type is a List, then this recursively completes the value\n * for the inner type on each item in the list.\n *\n * If the field type is a Scalar or Enum, ensures the completed value is a legal\n * value of the type by calling the `serialize` method of GraphQL type\n * definition.\n *\n * If the field is an abstract type, determine the runtime type of the value\n * and then complete based on that type\n *\n * Otherwise, the field type expects a sub-selection set, and will complete the\n * value by executing all sub-selections.\n */\n\nfunction completeValue(exeContext, returnType, fieldNodes, info, path, result) {\n  // If result is an Error, throw a located error.\n  if (result instanceof Error) {\n    throw result;\n  } // If field type is NonNull, complete for inner type, and throw field error\n  // if result is null.\n\n  if ((0, _definition.isNonNullType)(returnType)) {\n    const completed = completeValue(\n      exeContext,\n      returnType.ofType,\n      fieldNodes,\n      info,\n      path,\n      result,\n    );\n\n    if (completed === null) {\n      throw new Error(\n        `Cannot return null for non-nullable field ${info.parentType.name}.${info.fieldName}.`,\n      );\n    }\n\n    return completed;\n  } // If result value is null or undefined then return null.\n\n  if (result == null) {\n    return null;\n  } // If field type is List, complete each item in the list with the inner type\n\n  if ((0, _definition.isListType)(returnType)) {\n    return completeListValue(\n      exeContext,\n      returnType,\n      fieldNodes,\n      info,\n      path,\n      result,\n    );\n  } // If field type is a leaf type, Scalar or Enum, serialize to a valid value,\n  // returning null if serialization is not possible.\n\n  if ((0, _definition.isLeafType)(returnType)) {\n    return completeLeafValue(returnType, result);\n  } // If field type is an abstract type, Interface or Union, determine the\n  // runtime Object type and complete for that type.\n\n  if ((0, _definition.isAbstractType)(returnType)) {\n    return completeAbstractValue(\n      exeContext,\n      returnType,\n      fieldNodes,\n      info,\n      path,\n      result,\n    );\n  } // If field type is Object, execute and complete all sub-selections.\n\n  if ((0, _definition.isObjectType)(returnType)) {\n    return completeObjectValue(\n      exeContext,\n      returnType,\n      fieldNodes,\n      info,\n      path,\n      result,\n    );\n  }\n  /* c8 ignore next 6 */\n  // Not reachable, all possible output types have been considered.\n\n  false ||\n    (0, _invariant.invariant)(\n      false,\n      'Cannot complete value of unexpected output type: ' +\n        (0, _inspect.inspect)(returnType),\n    );\n}\n/**\n * Complete a list value by completing each item in the list with the\n * inner type\n */\n\nfunction completeListValue(\n  exeContext,\n  returnType,\n  fieldNodes,\n  info,\n  path,\n  result,\n) {\n  if (!(0, _isIterableObject.isIterableObject)(result)) {\n    throw new _GraphQLError.GraphQLError(\n      `Expected Iterable, but did not find one for field \"${info.parentType.name}.${info.fieldName}\".`,\n    );\n  } // This is specified as a simple map, however we're optimizing the path\n  // where the list contains no Promises by avoiding creating another Promise.\n\n  const itemType = returnType.ofType;\n  let containsPromise = false;\n  const completedResults = Array.from(result, (item, index) => {\n    // No need to modify the info object containing the path,\n    // since from here on it is not ever accessed by resolver functions.\n    const itemPath = (0, _Path.addPath)(path, index, undefined);\n\n    try {\n      let completedItem;\n\n      if ((0, _isPromise.isPromise)(item)) {\n        completedItem = item.then((resolved) =>\n          completeValue(\n            exeContext,\n            itemType,\n            fieldNodes,\n            info,\n            itemPath,\n            resolved,\n          ),\n        );\n      } else {\n        completedItem = completeValue(\n          exeContext,\n          itemType,\n          fieldNodes,\n          info,\n          itemPath,\n          item,\n        );\n      }\n\n      if ((0, _isPromise.isPromise)(completedItem)) {\n        containsPromise = true; // Note: we don't rely on a `catch` method, but we do expect \"thenable\"\n        // to take a second callback for the error case.\n\n        return completedItem.then(undefined, (rawError) => {\n          const error = (0, _locatedError.locatedError)(\n            rawError,\n            fieldNodes,\n            (0, _Path.pathToArray)(itemPath),\n          );\n          return handleFieldError(error, itemType, exeContext);\n        });\n      }\n\n      return completedItem;\n    } catch (rawError) {\n      const error = (0, _locatedError.locatedError)(\n        rawError,\n        fieldNodes,\n        (0, _Path.pathToArray)(itemPath),\n      );\n      return handleFieldError(error, itemType, exeContext);\n    }\n  });\n  return containsPromise ? Promise.all(completedResults) : completedResults;\n}\n/**\n * Complete a Scalar or Enum by serializing to a valid value, returning\n * null if serialization is not possible.\n */\n\nfunction completeLeafValue(returnType, result) {\n  const serializedResult = returnType.serialize(result);\n\n  if (serializedResult == null) {\n    throw new Error(\n      `Expected \\`${(0, _inspect.inspect)(returnType)}.serialize(${(0,\n      _inspect.inspect)(result)})\\` to ` +\n        `return non-nullable value, returned: ${(0, _inspect.inspect)(\n          serializedResult,\n        )}`,\n    );\n  }\n\n  return serializedResult;\n}\n/**\n * Complete a value of an abstract type by determining the runtime object type\n * of that value, then complete the value for that type.\n */\n\nfunction completeAbstractValue(\n  exeContext,\n  returnType,\n  fieldNodes,\n  info,\n  path,\n  result,\n) {\n  var _returnType$resolveTy;\n\n  const resolveTypeFn =\n    (_returnType$resolveTy = returnType.resolveType) !== null &&\n    _returnType$resolveTy !== void 0\n      ? _returnType$resolveTy\n      : exeContext.typeResolver;\n  const contextValue = exeContext.contextValue;\n  const runtimeType = resolveTypeFn(result, contextValue, info, returnType);\n\n  if ((0, _isPromise.isPromise)(runtimeType)) {\n    return runtimeType.then((resolvedRuntimeType) =>\n      completeObjectValue(\n        exeContext,\n        ensureValidRuntimeType(\n          resolvedRuntimeType,\n          exeContext,\n          returnType,\n          fieldNodes,\n          info,\n          result,\n        ),\n        fieldNodes,\n        info,\n        path,\n        result,\n      ),\n    );\n  }\n\n  return completeObjectValue(\n    exeContext,\n    ensureValidRuntimeType(\n      runtimeType,\n      exeContext,\n      returnType,\n      fieldNodes,\n      info,\n      result,\n    ),\n    fieldNodes,\n    info,\n    path,\n    result,\n  );\n}\n\nfunction ensureValidRuntimeType(\n  runtimeTypeName,\n  exeContext,\n  returnType,\n  fieldNodes,\n  info,\n  result,\n) {\n  if (runtimeTypeName == null) {\n    throw new _GraphQLError.GraphQLError(\n      `Abstract type \"${returnType.name}\" must resolve to an Object type at runtime for field \"${info.parentType.name}.${info.fieldName}\". Either the \"${returnType.name}\" type should provide a \"resolveType\" function or each possible type should provide an \"isTypeOf\" function.`,\n      fieldNodes,\n    );\n  } // releases before 16.0.0 supported returning `GraphQLObjectType` from `resolveType`\n  // TODO: remove in 17.0.0 release\n\n  if ((0, _definition.isObjectType)(runtimeTypeName)) {\n    throw new _GraphQLError.GraphQLError(\n      'Support for returning GraphQLObjectType from resolveType was removed in graphql-js@16.0.0 please return type name instead.',\n    );\n  }\n\n  if (typeof runtimeTypeName !== 'string') {\n    throw new _GraphQLError.GraphQLError(\n      `Abstract type \"${returnType.name}\" must resolve to an Object type at runtime for field \"${info.parentType.name}.${info.fieldName}\" with ` +\n        `value ${(0, _inspect.inspect)(result)}, received \"${(0,\n        _inspect.inspect)(runtimeTypeName)}\".`,\n    );\n  }\n\n  const runtimeType = exeContext.schema.getType(runtimeTypeName);\n\n  if (runtimeType == null) {\n    throw new _GraphQLError.GraphQLError(\n      `Abstract type \"${returnType.name}\" was resolved to a type \"${runtimeTypeName}\" that does not exist inside the schema.`,\n      {\n        nodes: fieldNodes,\n      },\n    );\n  }\n\n  if (!(0, _definition.isObjectType)(runtimeType)) {\n    throw new _GraphQLError.GraphQLError(\n      `Abstract type \"${returnType.name}\" was resolved to a non-object type \"${runtimeTypeName}\".`,\n      {\n        nodes: fieldNodes,\n      },\n    );\n  }\n\n  if (!exeContext.schema.isSubType(returnType, runtimeType)) {\n    throw new _GraphQLError.GraphQLError(\n      `Runtime Object type \"${runtimeType.name}\" is not a possible type for \"${returnType.name}\".`,\n      {\n        nodes: fieldNodes,\n      },\n    );\n  }\n\n  return runtimeType;\n}\n/**\n * Complete an Object value by executing all sub-selections.\n */\n\nfunction completeObjectValue(\n  exeContext,\n  returnType,\n  fieldNodes,\n  info,\n  path,\n  result,\n) {\n  // Collect sub-fields to execute to complete this value.\n  const subFieldNodes = collectSubfields(exeContext, returnType, fieldNodes); // If there is an isTypeOf predicate function, call it with the\n  // current result. If isTypeOf returns false, then raise an error rather\n  // than continuing execution.\n\n  if (returnType.isTypeOf) {\n    const isTypeOf = returnType.isTypeOf(result, exeContext.contextValue, info);\n\n    if ((0, _isPromise.isPromise)(isTypeOf)) {\n      return isTypeOf.then((resolvedIsTypeOf) => {\n        if (!resolvedIsTypeOf) {\n          throw invalidReturnTypeError(returnType, result, fieldNodes);\n        }\n\n        return executeFields(\n          exeContext,\n          returnType,\n          result,\n          path,\n          subFieldNodes,\n        );\n      });\n    }\n\n    if (!isTypeOf) {\n      throw invalidReturnTypeError(returnType, result, fieldNodes);\n    }\n  }\n\n  return executeFields(exeContext, returnType, result, path, subFieldNodes);\n}\n\nfunction invalidReturnTypeError(returnType, result, fieldNodes) {\n  return new _GraphQLError.GraphQLError(\n    `Expected value of type \"${returnType.name}\" but got: ${(0,\n    _inspect.inspect)(result)}.`,\n    {\n      nodes: fieldNodes,\n    },\n  );\n}\n/**\n * If a resolveType function is not given, then a default resolve behavior is\n * used which attempts two strategies:\n *\n * First, See if the provided value has a `__typename` field defined, if so, use\n * that value as name of the resolved type.\n *\n * Otherwise, test each possible type for the abstract type by calling\n * isTypeOf for the object being coerced, returning the first type that matches.\n */\n\nconst defaultTypeResolver = function (value, contextValue, info, abstractType) {\n  // First, look for `__typename`.\n  if (\n    (0, _isObjectLike.isObjectLike)(value) &&\n    typeof value.__typename === 'string'\n  ) {\n    return value.__typename;\n  } // Otherwise, test each possible type.\n\n  const possibleTypes = info.schema.getPossibleTypes(abstractType);\n  const promisedIsTypeOfResults = [];\n\n  for (let i = 0; i < possibleTypes.length; i++) {\n    const type = possibleTypes[i];\n\n    if (type.isTypeOf) {\n      const isTypeOfResult = type.isTypeOf(value, contextValue, info);\n\n      if ((0, _isPromise.isPromise)(isTypeOfResult)) {\n        promisedIsTypeOfResults[i] = isTypeOfResult;\n      } else if (isTypeOfResult) {\n        if (promisedIsTypeOfResults.length) {\n          // Explicitly ignore any promise rejections\n          Promise.allSettled(promisedIsTypeOfResults)\n            /* c8 ignore next 3 */\n            .catch(() => {\n              // Do nothing\n            });\n        }\n\n        return type.name;\n      }\n    }\n  }\n\n  if (promisedIsTypeOfResults.length) {\n    return Promise.all(promisedIsTypeOfResults).then((isTypeOfResults) => {\n      for (let i = 0; i < isTypeOfResults.length; i++) {\n        if (isTypeOfResults[i]) {\n          return possibleTypes[i].name;\n        }\n      }\n    });\n  }\n};\n/**\n * If a resolve function is not given, then a default resolve behavior is used\n * which takes the property of the source object of the same name as the field\n * and returns it as the result, or if it's a function, returns the result\n * of calling that function while passing along args and context value.\n */\n\nexports.defaultTypeResolver = defaultTypeResolver;\n\nconst defaultFieldResolver = function (source, args, contextValue, info) {\n  // ensure source is a value for which property access is acceptable.\n  if ((0, _isObjectLike.isObjectLike)(source) || typeof source === 'function') {\n    const property = source[info.fieldName];\n\n    if (typeof property === 'function') {\n      return source[info.fieldName](args, contextValue, info);\n    }\n\n    return property;\n  }\n};\n/**\n * This method looks up the field on the given type definition.\n * It has special casing for the three introspection fields,\n * __schema, __type and __typename. __typename is special because\n * it can always be queried as a field, even in situations where no\n * other fields are allowed, like on a Union. __schema and __type\n * could get automatically added to the query type, but that would\n * require mutating type definitions, which would cause issues.\n *\n * @internal\n */\n\nexports.defaultFieldResolver = defaultFieldResolver;\n\nfunction getFieldDef(schema, parentType, fieldNode) {\n  const fieldName = fieldNode.name.value;\n\n  if (\n    fieldName === _introspection.SchemaMetaFieldDef.name &&\n    schema.getQueryType() === parentType\n  ) {\n    return _introspection.SchemaMetaFieldDef;\n  } else if (\n    fieldName === _introspection.TypeMetaFieldDef.name &&\n    schema.getQueryType() === parentType\n  ) {\n    return _introspection.TypeMetaFieldDef;\n  } else if (fieldName === _introspection.TypeNameMetaFieldDef.name) {\n    return _introspection.TypeNameMetaFieldDef;\n  }\n\n  return parentType.getFields()[fieldName];\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.graphql = graphql;\nexports.graphqlSync = graphqlSync;\n\nvar _devAssert = require('./jsutils/devAssert.js');\n\nvar _isPromise = require('./jsutils/isPromise.js');\n\nvar _parser = require('./language/parser.js');\n\nvar _validate = require('./type/validate.js');\n\nvar _validate2 = require('./validation/validate.js');\n\nvar _execute = require('./execution/execute.js');\n\nfunction graphql(args) {\n  // Always return a Promise for a consistent API.\n  return new Promise((resolve) => resolve(graphqlImpl(args)));\n}\n/**\n * The graphqlSync function also fulfills GraphQL operations by parsing,\n * validating, and executing a GraphQL document along side a GraphQL schema.\n * However, it guarantees to complete synchronously (or throw an error) assuming\n * that all field resolvers are also synchronous.\n */\n\nfunction graphqlSync(args) {\n  const result = graphqlImpl(args); // Assert that the execution was synchronous.\n\n  if ((0, _isPromise.isPromise)(result)) {\n    throw new Error('GraphQL execution failed to complete synchronously.');\n  }\n\n  return result;\n}\n\nfunction graphqlImpl(args) {\n  // Temporary for v15 to v16 migration. Remove in v17\n  arguments.length < 2 ||\n    (0, _devAssert.devAssert)(\n      false,\n      'graphql@16 dropped long-deprecated support for positional arguments, please pass an object instead.',\n    );\n  const {\n    schema,\n    source,\n    rootValue,\n    contextValue,\n    variableValues,\n    operationName,\n    fieldResolver,\n    typeResolver,\n  } = args; // Validate Schema\n\n  const schemaValidationErrors = (0, _validate.validateSchema)(schema);\n\n  if (schemaValidationErrors.length > 0) {\n    return {\n      errors: schemaValidationErrors,\n    };\n  } // Parse\n\n  let document;\n\n  try {\n    document = (0, _parser.parse)(source);\n  } catch (syntaxError) {\n    return {\n      errors: [syntaxError],\n    };\n  } // Validate\n\n  const validationErrors = (0, _validate2.validate)(schema, document);\n\n  if (validationErrors.length > 0) {\n    return {\n      errors: validationErrors,\n    };\n  } // Execute\n\n  return (0, _execute.execute)({\n    schema,\n    document,\n    rootValue,\n    contextValue,\n    variableValues,\n    operationName,\n    fieldResolver,\n    typeResolver,\n  });\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nObject.defineProperty(exports, 'DEFAULT_DEPRECATION_REASON', {\n  enumerable: true,\n  get: function () {\n    return _directives.DEFAULT_DEPRECATION_REASON;\n  },\n});\nObject.defineProperty(exports, 'GRAPHQL_MAX_INT', {\n  enumerable: true,\n  get: function () {\n    return _scalars.GRAPHQL_MAX_INT;\n  },\n});\nObject.defineProperty(exports, 'GRAPHQL_MIN_INT', {\n  enumerable: true,\n  get: function () {\n    return _scalars.GRAPHQL_MIN_INT;\n  },\n});\nObject.defineProperty(exports, 'GraphQLBoolean', {\n  enumerable: true,\n  get: function () {\n    return _scalars.GraphQLBoolean;\n  },\n});\nObject.defineProperty(exports, 'GraphQLDeprecatedDirective', {\n  enumerable: true,\n  get: function () {\n    return _directives.GraphQLDeprecatedDirective;\n  },\n});\nObject.defineProperty(exports, 'GraphQLDirective', {\n  enumerable: true,\n  get: function () {\n    return _directives.GraphQLDirective;\n  },\n});\nObject.defineProperty(exports, 'GraphQLEnumType', {\n  enumerable: true,\n  get: function () {\n    return _definition.GraphQLEnumType;\n  },\n});\nObject.defineProperty(exports, 'GraphQLFloat', {\n  enumerable: true,\n  get: function () {\n    return _scalars.GraphQLFloat;\n  },\n});\nObject.defineProperty(exports, 'GraphQLID', {\n  enumerable: true,\n  get: function () {\n    return _scalars.GraphQLID;\n  },\n});\nObject.defineProperty(exports, 'GraphQLIncludeDirective', {\n  enumerable: true,\n  get: function () {\n    return _directives.GraphQLIncludeDirective;\n  },\n});\nObject.defineProperty(exports, 'GraphQLInputObjectType', {\n  enumerable: true,\n  get: function () {\n    return _definition.GraphQLInputObjectType;\n  },\n});\nObject.defineProperty(exports, 'GraphQLInt', {\n  enumerable: true,\n  get: function () {\n    return _scalars.GraphQLInt;\n  },\n});\nObject.defineProperty(exports, 'GraphQLInterfaceType', {\n  enumerable: true,\n  get: function () {\n    return _definition.GraphQLInterfaceType;\n  },\n});\nObject.defineProperty(exports, 'GraphQLList', {\n  enumerable: true,\n  get: function () {\n    return _definition.GraphQLList;\n  },\n});\nObject.defineProperty(exports, 'GraphQLNonNull', {\n  enumerable: true,\n  get: function () {\n    return _definition.GraphQLNonNull;\n  },\n});\nObject.defineProperty(exports, 'GraphQLObjectType', {\n  enumerable: true,\n  get: function () {\n    return _definition.GraphQLObjectType;\n  },\n});\nObject.defineProperty(exports, 'GraphQLOneOfDirective', {\n  enumerable: true,\n  get: function () {\n    return _directives.GraphQLOneOfDirective;\n  },\n});\nObject.defineProperty(exports, 'GraphQLScalarType', {\n  enumerable: true,\n  get: function () {\n    return _definition.GraphQLScalarType;\n  },\n});\nObject.defineProperty(exports, 'GraphQLSchema', {\n  enumerable: true,\n  get: function () {\n    return _schema.GraphQLSchema;\n  },\n});\nObject.defineProperty(exports, 'GraphQLSkipDirective', {\n  enumerable: true,\n  get: function () {\n    return _directives.GraphQLSkipDirective;\n  },\n});\nObject.defineProperty(exports, 'GraphQLSpecifiedByDirective', {\n  enumerable: true,\n  get: function () {\n    return _directives.GraphQLSpecifiedByDirective;\n  },\n});\nObject.defineProperty(exports, 'GraphQLString', {\n  enumerable: true,\n  get: function () {\n    return _scalars.GraphQLString;\n  },\n});\nObject.defineProperty(exports, 'GraphQLUnionType', {\n  enumerable: true,\n  get: function () {\n    return _definition.GraphQLUnionType;\n  },\n});\nObject.defineProperty(exports, 'SchemaMetaFieldDef', {\n  enumerable: true,\n  get: function () {\n    return _introspection.SchemaMetaFieldDef;\n  },\n});\nObject.defineProperty(exports, 'TypeKind', {\n  enumerable: true,\n  get: function () {\n    return _introspection.TypeKind;\n  },\n});\nObject.defineProperty(exports, 'TypeMetaFieldDef', {\n  enumerable: true,\n  get: function () {\n    return _introspection.TypeMetaFieldDef;\n  },\n});\nObject.defineProperty(exports, 'TypeNameMetaFieldDef', {\n  enumerable: true,\n  get: function () {\n    return _introspection.TypeNameMetaFieldDef;\n  },\n});\nObject.defineProperty(exports, '__Directive', {\n  enumerable: true,\n  get: function () {\n    return _introspection.__Directive;\n  },\n});\nObject.defineProperty(exports, '__DirectiveLocation', {\n  enumerable: true,\n  get: function () {\n    return _introspection.__DirectiveLocation;\n  },\n});\nObject.defineProperty(exports, '__EnumValue', {\n  enumerable: true,\n  get: function () {\n    return _introspection.__EnumValue;\n  },\n});\nObject.defineProperty(exports, '__Field', {\n  enumerable: true,\n  get: function () {\n    return _introspection.__Field;\n  },\n});\nObject.defineProperty(exports, '__InputValue', {\n  enumerable: true,\n  get: function () {\n    return _introspection.__InputValue;\n  },\n});\nObject.defineProperty(exports, '__Schema', {\n  enumerable: true,\n  get: function () {\n    return _introspection.__Schema;\n  },\n});\nObject.defineProperty(exports, '__Type', {\n  enumerable: true,\n  get: function () {\n    return _introspection.__Type;\n  },\n});\nObject.defineProperty(exports, '__TypeKind', {\n  enumerable: true,\n  get: function () {\n    return _introspection.__TypeKind;\n  },\n});\nObject.defineProperty(exports, 'assertAbstractType', {\n  enumerable: true,\n  get: function () {\n    return _definition.assertAbstractType;\n  },\n});\nObject.defineProperty(exports, 'assertCompositeType', {\n  enumerable: true,\n  get: function () {\n    return _definition.assertCompositeType;\n  },\n});\nObject.defineProperty(exports, 'assertDirective', {\n  enumerable: true,\n  get: function () {\n    return _directives.assertDirective;\n  },\n});\nObject.defineProperty(exports, 'assertEnumType', {\n  enumerable: true,\n  get: function () {\n    return _definition.assertEnumType;\n  },\n});\nObject.defineProperty(exports, 'assertEnumValueName', {\n  enumerable: true,\n  get: function () {\n    return _assertName.assertEnumValueName;\n  },\n});\nObject.defineProperty(exports, 'assertInputObjectType', {\n  enumerable: true,\n  get: function () {\n    return _definition.assertInputObjectType;\n  },\n});\nObject.defineProperty(exports, 'assertInputType', {\n  enumerable: true,\n  get: function () {\n    return _definition.assertInputType;\n  },\n});\nObject.defineProperty(exports, 'assertInterfaceType', {\n  enumerable: true,\n  get: function () {\n    return _definition.assertInterfaceType;\n  },\n});\nObject.defineProperty(exports, 'assertLeafType', {\n  enumerable: true,\n  get: function () {\n    return _definition.assertLeafType;\n  },\n});\nObject.defineProperty(exports, 'assertListType', {\n  enumerable: true,\n  get: function () {\n    return _definition.assertListType;\n  },\n});\nObject.defineProperty(exports, 'assertName', {\n  enumerable: true,\n  get: function () {\n    return _assertName.assertName;\n  },\n});\nObject.defineProperty(exports, 'assertNamedType', {\n  enumerable: true,\n  get: function () {\n    return _definition.assertNamedType;\n  },\n});\nObject.defineProperty(exports, 'assertNonNullType', {\n  enumerable: true,\n  get: function () {\n    return _definition.assertNonNullType;\n  },\n});\nObject.defineProperty(exports, 'assertNullableType', {\n  enumerable: true,\n  get: function () {\n    return _definition.assertNullableType;\n  },\n});\nObject.defineProperty(exports, 'assertObjectType', {\n  enumerable: true,\n  get: function () {\n    return _definition.assertObjectType;\n  },\n});\nObject.defineProperty(exports, 'assertOutputType', {\n  enumerable: true,\n  get: function () {\n    return _definition.assertOutputType;\n  },\n});\nObject.defineProperty(exports, 'assertScalarType', {\n  enumerable: true,\n  get: function () {\n    return _definition.assertScalarType;\n  },\n});\nObject.defineProperty(exports, 'assertSchema', {\n  enumerable: true,\n  get: function () {\n    return _schema.assertSchema;\n  },\n});\nObject.defineProperty(exports, 'assertType', {\n  enumerable: true,\n  get: function () {\n    return _definition.assertType;\n  },\n});\nObject.defineProperty(exports, 'assertUnionType', {\n  enumerable: true,\n  get: function () {\n    return _definition.assertUnionType;\n  },\n});\nObject.defineProperty(exports, 'assertValidSchema', {\n  enumerable: true,\n  get: function () {\n    return _validate.assertValidSchema;\n  },\n});\nObject.defineProperty(exports, 'assertWrappingType', {\n  enumerable: true,\n  get: function () {\n    return _definition.assertWrappingType;\n  },\n});\nObject.defineProperty(exports, 'getNamedType', {\n  enumerable: true,\n  get: function () {\n    return _definition.getNamedType;\n  },\n});\nObject.defineProperty(exports, 'getNullableType', {\n  enumerable: true,\n  get: function () {\n    return _definition.getNullableType;\n  },\n});\nObject.defineProperty(exports, 'introspectionTypes', {\n  enumerable: true,\n  get: function () {\n    return _introspection.introspectionTypes;\n  },\n});\nObject.defineProperty(exports, 'isAbstractType', {\n  enumerable: true,\n  get: function () {\n    return _definition.isAbstractType;\n  },\n});\nObject.defineProperty(exports, 'isCompositeType', {\n  enumerable: true,\n  get: function () {\n    return _definition.isCompositeType;\n  },\n});\nObject.defineProperty(exports, 'isDirective', {\n  enumerable: true,\n  get: function () {\n    return _directives.isDirective;\n  },\n});\nObject.defineProperty(exports, 'isEnumType', {\n  enumerable: true,\n  get: function () {\n    return _definition.isEnumType;\n  },\n});\nObject.defineProperty(exports, 'isInputObjectType', {\n  enumerable: true,\n  get: function () {\n    return _definition.isInputObjectType;\n  },\n});\nObject.defineProperty(exports, 'isInputType', {\n  enumerable: true,\n  get: function () {\n    return _definition.isInputType;\n  },\n});\nObject.defineProperty(exports, 'isInterfaceType', {\n  enumerable: true,\n  get: function () {\n    return _definition.isInterfaceType;\n  },\n});\nObject.defineProperty(exports, 'isIntrospectionType', {\n  enumerable: true,\n  get: function () {\n    return _introspection.isIntrospectionType;\n  },\n});\nObject.defineProperty(exports, 'isLeafType', {\n  enumerable: true,\n  get: function () {\n    return _definition.isLeafType;\n  },\n});\nObject.defineProperty(exports, 'isListType', {\n  enumerable: true,\n  get: function () {\n    return _definition.isListType;\n  },\n});\nObject.defineProperty(exports, 'isNamedType', {\n  enumerable: true,\n  get: function () {\n    return _definition.isNamedType;\n  },\n});\nObject.defineProperty(exports, 'isNonNullType', {\n  enumerable: true,\n  get: function () {\n    return _definition.isNonNullType;\n  },\n});\nObject.defineProperty(exports, 'isNullableType', {\n  enumerable: true,\n  get: function () {\n    return _definition.isNullableType;\n  },\n});\nObject.defineProperty(exports, 'isObjectType', {\n  enumerable: true,\n  get: function () {\n    return _definition.isObjectType;\n  },\n});\nObject.defineProperty(exports, 'isOutputType', {\n  enumerable: true,\n  get: function () {\n    return _definition.isOutputType;\n  },\n});\nObject.defineProperty(exports, 'isRequiredArgument', {\n  enumerable: true,\n  get: function () {\n    return _definition.isRequiredArgument;\n  },\n});\nObject.defineProperty(exports, 'isRequiredInputField', {\n  enumerable: true,\n  get: function () {\n    return _definition.isRequiredInputField;\n  },\n});\nObject.defineProperty(exports, 'isScalarType', {\n  enumerable: true,\n  get: function () {\n    return _definition.isScalarType;\n  },\n});\nObject.defineProperty(exports, 'isSchema', {\n  enumerable: true,\n  get: function () {\n    return _schema.isSchema;\n  },\n});\nObject.defineProperty(exports, 'isSpecifiedDirective', {\n  enumerable: true,\n  get: function () {\n    return _directives.isSpecifiedDirective;\n  },\n});\nObject.defineProperty(exports, 'isSpecifiedScalarType', {\n  enumerable: true,\n  get: function () {\n    return _scalars.isSpecifiedScalarType;\n  },\n});\nObject.defineProperty(exports, 'isType', {\n  enumerable: true,\n  get: function () {\n    return _definition.isType;\n  },\n});\nObject.defineProperty(exports, 'isUnionType', {\n  enumerable: true,\n  get: function () {\n    return _definition.isUnionType;\n  },\n});\nObject.defineProperty(exports, 'isWrappingType', {\n  enumerable: true,\n  get: function () {\n    return _definition.isWrappingType;\n  },\n});\nObject.defineProperty(exports, 'resolveObjMapThunk', {\n  enumerable: true,\n  get: function () {\n    return _definition.resolveObjMapThunk;\n  },\n});\nObject.defineProperty(exports, 'resolveReadonlyArrayThunk', {\n  enumerable: true,\n  get: function () {\n    return _definition.resolveReadonlyArrayThunk;\n  },\n});\nObject.defineProperty(exports, 'specifiedDirectives', {\n  enumerable: true,\n  get: function () {\n    return _directives.specifiedDirectives;\n  },\n});\nObject.defineProperty(exports, 'specifiedScalarTypes', {\n  enumerable: true,\n  get: function () {\n    return _scalars.specifiedScalarTypes;\n  },\n});\nObject.defineProperty(exports, 'validateSchema', {\n  enumerable: true,\n  get: function () {\n    return _validate.validateSchema;\n  },\n});\n\nvar _schema = require('./schema.js');\n\nvar _definition = require('./definition.js');\n\nvar _directives = require('./directives.js');\n\nvar _scalars = require('./scalars.js');\n\nvar _introspection = require('./introspection.js');\n\nvar _validate = require('./validate.js');\n\nvar _assertName = require('./assertName.js');\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nObject.defineProperty(exports, 'BREAK', {\n  enumerable: true,\n  get: function () {\n    return _visitor.BREAK;\n  },\n});\nObject.defineProperty(exports, 'DirectiveLocation', {\n  enumerable: true,\n  get: function () {\n    return _directiveLocation.DirectiveLocation;\n  },\n});\nObject.defineProperty(exports, 'Kind', {\n  enumerable: true,\n  get: function () {\n    return _kinds.Kind;\n  },\n});\nObject.defineProperty(exports, 'Lexer', {\n  enumerable: true,\n  get: function () {\n    return _lexer.Lexer;\n  },\n});\nObject.defineProperty(exports, 'Location', {\n  enumerable: true,\n  get: function () {\n    return _ast.Location;\n  },\n});\nObject.defineProperty(exports, 'OperationTypeNode', {\n  enumerable: true,\n  get: function () {\n    return _ast.OperationTypeNode;\n  },\n});\nObject.defineProperty(exports, 'Source', {\n  enumerable: true,\n  get: function () {\n    return _source.Source;\n  },\n});\nObject.defineProperty(exports, 'Token', {\n  enumerable: true,\n  get: function () {\n    return _ast.Token;\n  },\n});\nObject.defineProperty(exports, 'TokenKind', {\n  enumerable: true,\n  get: function () {\n    return _tokenKind.TokenKind;\n  },\n});\nObject.defineProperty(exports, 'getEnterLeaveForKind', {\n  enumerable: true,\n  get: function () {\n    return _visitor.getEnterLeaveForKind;\n  },\n});\nObject.defineProperty(exports, 'getLocation', {\n  enumerable: true,\n  get: function () {\n    return _location.getLocation;\n  },\n});\nObject.defineProperty(exports, 'getVisitFn', {\n  enumerable: true,\n  get: function () {\n    return _visitor.getVisitFn;\n  },\n});\nObject.defineProperty(exports, 'isConstValueNode', {\n  enumerable: true,\n  get: function () {\n    return _predicates.isConstValueNode;\n  },\n});\nObject.defineProperty(exports, 'isDefinitionNode', {\n  enumerable: true,\n  get: function () {\n    return _predicates.isDefinitionNode;\n  },\n});\nObject.defineProperty(exports, 'isExecutableDefinitionNode', {\n  enumerable: true,\n  get: function () {\n    return _predicates.isExecutableDefinitionNode;\n  },\n});\nObject.defineProperty(exports, 'isSchemaCoordinateNode', {\n  enumerable: true,\n  get: function () {\n    return _predicates.isSchemaCoordinateNode;\n  },\n});\nObject.defineProperty(exports, 'isSelectionNode', {\n  enumerable: true,\n  get: function () {\n    return _predicates.isSelectionNode;\n  },\n});\nObject.defineProperty(exports, 'isTypeDefinitionNode', {\n  enumerable: true,\n  get: function () {\n    return _predicates.isTypeDefinitionNode;\n  },\n});\nObject.defineProperty(exports, 'isTypeExtensionNode', {\n  enumerable: true,\n  get: function () {\n    return _predicates.isTypeExtensionNode;\n  },\n});\nObject.defineProperty(exports, 'isTypeNode', {\n  enumerable: true,\n  get: function () {\n    return _predicates.isTypeNode;\n  },\n});\nObject.defineProperty(exports, 'isTypeSystemDefinitionNode', {\n  enumerable: true,\n  get: function () {\n    return _predicates.isTypeSystemDefinitionNode;\n  },\n});\nObject.defineProperty(exports, 'isTypeSystemExtensionNode', {\n  enumerable: true,\n  get: function () {\n    return _predicates.isTypeSystemExtensionNode;\n  },\n});\nObject.defineProperty(exports, 'isValueNode', {\n  enumerable: true,\n  get: function () {\n    return _predicates.isValueNode;\n  },\n});\nObject.defineProperty(exports, 'parse', {\n  enumerable: true,\n  get: function () {\n    return _parser.parse;\n  },\n});\nObject.defineProperty(exports, 'parseConstValue', {\n  enumerable: true,\n  get: function () {\n    return _parser.parseConstValue;\n  },\n});\nObject.defineProperty(exports, 'parseSchemaCoordinate', {\n  enumerable: true,\n  get: function () {\n    return _parser.parseSchemaCoordinate;\n  },\n});\nObject.defineProperty(exports, 'parseType', {\n  enumerable: true,\n  get: function () {\n    return _parser.parseType;\n  },\n});\nObject.defineProperty(exports, 'parseValue', {\n  enumerable: true,\n  get: function () {\n    return _parser.parseValue;\n  },\n});\nObject.defineProperty(exports, 'print', {\n  enumerable: true,\n  get: function () {\n    return _printer.print;\n  },\n});\nObject.defineProperty(exports, 'printLocation', {\n  enumerable: true,\n  get: function () {\n    return _printLocation.printLocation;\n  },\n});\nObject.defineProperty(exports, 'printSourceLocation', {\n  enumerable: true,\n  get: function () {\n    return _printLocation.printSourceLocation;\n  },\n});\nObject.defineProperty(exports, 'visit', {\n  enumerable: true,\n  get: function () {\n    return _visitor.visit;\n  },\n});\nObject.defineProperty(exports, 'visitInParallel', {\n  enumerable: true,\n  get: function () {\n    return _visitor.visitInParallel;\n  },\n});\n\nvar _source = require('./source.js');\n\nvar _location = require('./location.js');\n\nvar _printLocation = require('./printLocation.js');\n\nvar _kinds = require('./kinds.js');\n\nvar _tokenKind = require('./tokenKind.js');\n\nvar _lexer = require('./lexer.js');\n\nvar _parser = require('./parser.js');\n\nvar _printer = require('./printer.js');\n\nvar _visitor = require('./visitor.js');\n\nvar _ast = require('./ast.js');\n\nvar _predicates = require('./predicates.js');\n\nvar _directiveLocation = require('./directiveLocation.js');\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.isAsyncIterable = isAsyncIterable;\n\n/**\n * Returns true if the provided object implements the AsyncIterator protocol via\n * implementing a `Symbol.asyncIterator` method.\n */\nfunction isAsyncIterable(maybeAsyncIterable) {\n  return (\n    typeof (maybeAsyncIterable === null || maybeAsyncIterable === void 0\n      ? void 0\n      : maybeAsyncIterable[Symbol.asyncIterator]) === 'function'\n  );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.mapAsyncIterator = mapAsyncIterator;\n\n/**\n * Given an AsyncIterable and a callback function, return an AsyncIterator\n * which produces values mapped via calling the callback function.\n */\nfunction mapAsyncIterator(iterable, callback) {\n  const iterator = iterable[Symbol.asyncIterator]();\n\n  async function mapResult(result) {\n    if (result.done) {\n      return result;\n    }\n\n    try {\n      return {\n        value: await callback(result.value),\n        done: false,\n      };\n    } catch (error) {\n      /* c8 ignore start */\n      // FIXME: add test case\n      if (typeof iterator.return === 'function') {\n        try {\n          await iterator.return();\n        } catch (_e) {\n          /* ignore error */\n        }\n      }\n\n      throw error;\n      /* c8 ignore stop */\n    }\n  }\n\n  return {\n    async next() {\n      return mapResult(await iterator.next());\n    },\n\n    async return() {\n      // If iterator.return() does not exist, then type R must be undefined.\n      return typeof iterator.return === 'function'\n        ? mapResult(await iterator.return())\n        : {\n            value: undefined,\n            done: true,\n          };\n    },\n\n    async throw(error) {\n      if (typeof iterator.throw === 'function') {\n        return mapResult(await iterator.throw(error));\n      }\n\n      throw error;\n    },\n\n    [Symbol.asyncIterator]() {\n      return this;\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.createSourceEventStream = createSourceEventStream;\nexports.subscribe = subscribe;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _isAsyncIterable = require('../jsutils/isAsyncIterable.js');\n\nvar _Path = require('../jsutils/Path.js');\n\nvar _GraphQLError = require('../error/GraphQLError.js');\n\nvar _locatedError = require('../error/locatedError.js');\n\nvar _collectFields = require('./collectFields.js');\n\nvar _execute = require('./execute.js');\n\nvar _mapAsyncIterator = require('./mapAsyncIterator.js');\n\nvar _values = require('./values.js');\n\n/**\n * Implements the \"Subscribe\" algorithm described in the GraphQL specification.\n *\n * Returns a Promise which resolves to either an AsyncIterator (if successful)\n * or an ExecutionResult (error). The promise will be rejected if the schema or\n * other arguments to this function are invalid, or if the resolved event stream\n * is not an async iterable.\n *\n * If the client-provided arguments to this function do not result in a\n * compliant subscription, a GraphQL Response (ExecutionResult) with\n * descriptive errors and no data will be returned.\n *\n * If the source stream could not be created due to faulty subscription\n * resolver logic or underlying systems, the promise will resolve to a single\n * ExecutionResult containing `errors` and no `data`.\n *\n * If the operation succeeded, the promise resolves to an AsyncIterator, which\n * yields a stream of ExecutionResults representing the response stream.\n *\n * Accepts either an object with named arguments, or individual arguments.\n */\nasync function subscribe(args) {\n  // Temporary for v15 to v16 migration. Remove in v17\n  arguments.length < 2 ||\n    (0, _devAssert.devAssert)(\n      false,\n      'graphql@16 dropped long-deprecated support for positional arguments, please pass an object instead.',\n    );\n  const resultOrStream = await createSourceEventStream(args);\n\n  if (!(0, _isAsyncIterable.isAsyncIterable)(resultOrStream)) {\n    return resultOrStream;\n  } // For each payload yielded from a subscription, map it over the normal\n  // GraphQL `execute` function, with `payload` as the rootValue.\n  // This implements the \"MapSourceToResponseEvent\" algorithm described in\n  // the GraphQL specification. The `execute` function provides the\n  // \"ExecuteSubscriptionEvent\" algorithm, as it is nearly identical to the\n  // \"ExecuteQuery\" algorithm, for which `execute` is also used.\n\n  const mapSourceToResponse = (payload) =>\n    (0, _execute.execute)({ ...args, rootValue: payload }); // Map every source value to a ExecutionResult value as described above.\n\n  return (0, _mapAsyncIterator.mapAsyncIterator)(\n    resultOrStream,\n    mapSourceToResponse,\n  );\n}\n\nfunction toNormalizedArgs(args) {\n  const firstArg = args[0];\n\n  if (firstArg && 'document' in firstArg) {\n    return firstArg;\n  }\n\n  return {\n    schema: firstArg,\n    // FIXME: when underlying TS bug fixed, see https://github.com/microsoft/TypeScript/issues/31613\n    document: args[1],\n    rootValue: args[2],\n    contextValue: args[3],\n    variableValues: args[4],\n    operationName: args[5],\n    subscribeFieldResolver: args[6],\n  };\n}\n/**\n * Implements the \"CreateSourceEventStream\" algorithm described in the\n * GraphQL specification, resolving the subscription source event stream.\n *\n * Returns a Promise which resolves to either an AsyncIterable (if successful)\n * or an ExecutionResult (error). The promise will be rejected if the schema or\n * other arguments to this function are invalid, or if the resolved event stream\n * is not an async iterable.\n *\n * If the client-provided arguments to this function do not result in a\n * compliant subscription, a GraphQL Response (ExecutionResult) with\n * descriptive errors and no data will be returned.\n *\n * If the the source stream could not be created due to faulty subscription\n * resolver logic or underlying systems, the promise will resolve to a single\n * ExecutionResult containing `errors` and no `data`.\n *\n * If the operation succeeded, the promise resolves to the AsyncIterable for the\n * event stream returned by the resolver.\n *\n * A Source Event Stream represents a sequence of events, each of which triggers\n * a GraphQL execution for that event.\n *\n * This may be useful when hosting the stateful subscription service in a\n * different process or machine than the stateless GraphQL execution engine,\n * or otherwise separating these two steps. For more on this, see the\n * \"Supporting Subscriptions at Scale\" information in the GraphQL specification.\n */\n\nasync function createSourceEventStream(...rawArgs) {\n  const args = toNormalizedArgs(rawArgs);\n  const { schema, document, variableValues } = args; // If arguments are missing or incorrectly typed, this is an internal\n  // developer mistake which should throw an early error.\n\n  (0, _execute.assertValidExecutionArguments)(schema, document, variableValues); // If a valid execution context cannot be created due to incorrect arguments,\n  // a \"Response\" with only errors is returned.\n\n  const exeContext = (0, _execute.buildExecutionContext)(args); // Return early errors if execution context failed.\n\n  if (!('schema' in exeContext)) {\n    return {\n      errors: exeContext,\n    };\n  }\n\n  try {\n    const eventStream = await executeSubscription(exeContext); // Assert field returned an event stream, otherwise yield an error.\n\n    if (!(0, _isAsyncIterable.isAsyncIterable)(eventStream)) {\n      throw new Error(\n        'Subscription field must return Async Iterable. ' +\n          `Received: ${(0, _inspect.inspect)(eventStream)}.`,\n      );\n    }\n\n    return eventStream;\n  } catch (error) {\n    // If it GraphQLError, report it as an ExecutionResult, containing only errors and no data.\n    // Otherwise treat the error as a system-class error and re-throw it.\n    if (error instanceof _GraphQLError.GraphQLError) {\n      return {\n        errors: [error],\n      };\n    }\n\n    throw error;\n  }\n}\n\nasync function executeSubscription(exeContext) {\n  const { schema, fragments, operation, variableValues, rootValue } =\n    exeContext;\n  const rootType = schema.getSubscriptionType();\n\n  if (rootType == null) {\n    throw new _GraphQLError.GraphQLError(\n      'Schema is not configured to execute subscription operation.',\n      {\n        nodes: operation,\n      },\n    );\n  }\n\n  const rootFields = (0, _collectFields.collectFields)(\n    schema,\n    fragments,\n    variableValues,\n    rootType,\n    operation.selectionSet,\n  );\n  const [responseName, fieldNodes] = [...rootFields.entries()][0];\n  const fieldDef = (0, _execute.getFieldDef)(schema, rootType, fieldNodes[0]);\n\n  if (!fieldDef) {\n    const fieldName = fieldNodes[0].name.value;\n    throw new _GraphQLError.GraphQLError(\n      `The subscription field \"${fieldName}\" is not defined.`,\n      {\n        nodes: fieldNodes,\n      },\n    );\n  }\n\n  const path = (0, _Path.addPath)(undefined, responseName, rootType.name);\n  const info = (0, _execute.buildResolveInfo)(\n    exeContext,\n    fieldDef,\n    fieldNodes,\n    rootType,\n    path,\n  );\n\n  try {\n    var _fieldDef$subscribe;\n\n    // Implements the \"ResolveFieldEventStream\" algorithm from GraphQL specification.\n    // It differs from \"ResolveFieldValue\" due to providing a different `resolveFn`.\n    // Build a JS object of arguments from the field.arguments AST, using the\n    // variables scope to fulfill any variable references.\n    const args = (0, _values.getArgumentValues)(\n      fieldDef,\n      fieldNodes[0],\n      variableValues,\n    ); // The resolve function's optional third argument is a context value that\n    // is provided to every resolve function within an execution. It is commonly\n    // used to represent an authenticated user, or request-specific caches.\n\n    const contextValue = exeContext.contextValue; // Call the `subscribe()` resolver or the default resolver to produce an\n    // AsyncIterable yielding raw payloads.\n\n    const resolveFn =\n      (_fieldDef$subscribe = fieldDef.subscribe) !== null &&\n      _fieldDef$subscribe !== void 0\n        ? _fieldDef$subscribe\n        : exeContext.subscribeFieldResolver;\n    const eventStream = await resolveFn(rootValue, args, contextValue, info);\n\n    if (eventStream instanceof Error) {\n      throw eventStream;\n    }\n\n    return eventStream;\n  } catch (error) {\n    throw (0, _locatedError.locatedError)(\n      error,\n      fieldNodes,\n      (0, _Path.pathToArray)(path),\n    );\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nObject.defineProperty(exports, 'createSourceEventStream', {\n  enumerable: true,\n  get: function () {\n    return _subscribe.createSourceEventStream;\n  },\n});\nObject.defineProperty(exports, 'defaultFieldResolver', {\n  enumerable: true,\n  get: function () {\n    return _execute.defaultFieldResolver;\n  },\n});\nObject.defineProperty(exports, 'defaultTypeResolver', {\n  enumerable: true,\n  get: function () {\n    return _execute.defaultTypeResolver;\n  },\n});\nObject.defineProperty(exports, 'execute', {\n  enumerable: true,\n  get: function () {\n    return _execute.execute;\n  },\n});\nObject.defineProperty(exports, 'executeSync', {\n  enumerable: true,\n  get: function () {\n    return _execute.executeSync;\n  },\n});\nObject.defineProperty(exports, 'getArgumentValues', {\n  enumerable: true,\n  get: function () {\n    return _values.getArgumentValues;\n  },\n});\nObject.defineProperty(exports, 'getDirectiveValues', {\n  enumerable: true,\n  get: function () {\n    return _values.getDirectiveValues;\n  },\n});\nObject.defineProperty(exports, 'getVariableValues', {\n  enumerable: true,\n  get: function () {\n    return _values.getVariableValues;\n  },\n});\nObject.defineProperty(exports, 'responsePathAsArray', {\n  enumerable: true,\n  get: function () {\n    return _Path.pathToArray;\n  },\n});\nObject.defineProperty(exports, 'subscribe', {\n  enumerable: true,\n  get: function () {\n    return _subscribe.subscribe;\n  },\n});\n\nvar _Path = require('../jsutils/Path.js');\n\nvar _execute = require('./execute.js');\n\nvar _subscribe = require('./subscribe.js');\n\nvar _values = require('./values.js');\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.NoDeprecatedCustomRule = NoDeprecatedCustomRule;\n\nvar _invariant = require('../../../jsutils/invariant.js');\n\nvar _GraphQLError = require('../../../error/GraphQLError.js');\n\nvar _definition = require('../../../type/definition.js');\n\n/**\n * No deprecated\n *\n * A GraphQL document is only valid if all selected fields and all used enum values have not been\n * deprecated.\n *\n * Note: This rule is optional and is not part of the Validation section of the GraphQL\n * Specification. The main purpose of this rule is detection of deprecated usages and not\n * necessarily to forbid their use when querying a service.\n */\nfunction NoDeprecatedCustomRule(context) {\n  return {\n    Field(node) {\n      const fieldDef = context.getFieldDef();\n      const deprecationReason =\n        fieldDef === null || fieldDef === void 0\n          ? void 0\n          : fieldDef.deprecationReason;\n\n      if (fieldDef && deprecationReason != null) {\n        const parentType = context.getParentType();\n        parentType != null || (0, _invariant.invariant)(false);\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `The field ${parentType.name}.${fieldDef.name} is deprecated. ${deprecationReason}`,\n            {\n              nodes: node,\n            },\n          ),\n        );\n      }\n    },\n\n    Argument(node) {\n      const argDef = context.getArgument();\n      const deprecationReason =\n        argDef === null || argDef === void 0\n          ? void 0\n          : argDef.deprecationReason;\n\n      if (argDef && deprecationReason != null) {\n        const directiveDef = context.getDirective();\n\n        if (directiveDef != null) {\n          context.reportError(\n            new _GraphQLError.GraphQLError(\n              `Directive \"@${directiveDef.name}\" argument \"${argDef.name}\" is deprecated. ${deprecationReason}`,\n              {\n                nodes: node,\n              },\n            ),\n          );\n        } else {\n          const parentType = context.getParentType();\n          const fieldDef = context.getFieldDef();\n          (parentType != null && fieldDef != null) ||\n            (0, _invariant.invariant)(false);\n          context.reportError(\n            new _GraphQLError.GraphQLError(\n              `Field \"${parentType.name}.${fieldDef.name}\" argument \"${argDef.name}\" is deprecated. ${deprecationReason}`,\n              {\n                nodes: node,\n              },\n            ),\n          );\n        }\n      }\n    },\n\n    ObjectField(node) {\n      const inputObjectDef = (0, _definition.getNamedType)(\n        context.getParentInputType(),\n      );\n\n      if ((0, _definition.isInputObjectType)(inputObjectDef)) {\n        const inputFieldDef = inputObjectDef.getFields()[node.name.value];\n        const deprecationReason =\n          inputFieldDef === null || inputFieldDef === void 0\n            ? void 0\n            : inputFieldDef.deprecationReason;\n\n        if (deprecationReason != null) {\n          context.reportError(\n            new _GraphQLError.GraphQLError(\n              `The input field ${inputObjectDef.name}.${inputFieldDef.name} is deprecated. ${deprecationReason}`,\n              {\n                nodes: node,\n              },\n            ),\n          );\n        }\n      }\n    },\n\n    EnumValue(node) {\n      const enumValueDef = context.getEnumValue();\n      const deprecationReason =\n        enumValueDef === null || enumValueDef === void 0\n          ? void 0\n          : enumValueDef.deprecationReason;\n\n      if (enumValueDef && deprecationReason != null) {\n        const enumTypeDef = (0, _definition.getNamedType)(\n          context.getInputType(),\n        );\n        enumTypeDef != null || (0, _invariant.invariant)(false);\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `The enum value \"${enumTypeDef.name}.${enumValueDef.name}\" is deprecated. ${deprecationReason}`,\n            {\n              nodes: node,\n            },\n          ),\n        );\n      }\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.NoSchemaIntrospectionCustomRule = NoSchemaIntrospectionCustomRule;\n\nvar _GraphQLError = require('../../../error/GraphQLError.js');\n\nvar _definition = require('../../../type/definition.js');\n\nvar _introspection = require('../../../type/introspection.js');\n\n/**\n * Prohibit introspection queries\n *\n * A GraphQL document is only valid if all fields selected are not fields that\n * return an introspection type.\n *\n * Note: This rule is optional and is not part of the Validation section of the\n * GraphQL Specification. This rule effectively disables introspection, which\n * does not reflect best practices and should only be done if absolutely necessary.\n */\nfunction NoSchemaIntrospectionCustomRule(context) {\n  return {\n    Field(node) {\n      const type = (0, _definition.getNamedType)(context.getType());\n\n      if (type && (0, _introspection.isIntrospectionType)(type)) {\n        context.reportError(\n          new _GraphQLError.GraphQLError(\n            `GraphQL introspection has been disabled, but the requested query contained the field \"${node.name.value}\".`,\n            {\n              nodes: node,\n            },\n          ),\n        );\n      }\n    },\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nObject.defineProperty(exports, 'ExecutableDefinitionsRule', {\n  enumerable: true,\n  get: function () {\n    return _ExecutableDefinitionsRule.ExecutableDefinitionsRule;\n  },\n});\nObject.defineProperty(exports, 'FieldsOnCorrectTypeRule', {\n  enumerable: true,\n  get: function () {\n    return _FieldsOnCorrectTypeRule.FieldsOnCorrectTypeRule;\n  },\n});\nObject.defineProperty(exports, 'FragmentsOnCompositeTypesRule', {\n  enumerable: true,\n  get: function () {\n    return _FragmentsOnCompositeTypesRule.FragmentsOnCompositeTypesRule;\n  },\n});\nObject.defineProperty(exports, 'KnownArgumentNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _KnownArgumentNamesRule.KnownArgumentNamesRule;\n  },\n});\nObject.defineProperty(exports, 'KnownDirectivesRule', {\n  enumerable: true,\n  get: function () {\n    return _KnownDirectivesRule.KnownDirectivesRule;\n  },\n});\nObject.defineProperty(exports, 'KnownFragmentNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _KnownFragmentNamesRule.KnownFragmentNamesRule;\n  },\n});\nObject.defineProperty(exports, 'KnownTypeNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _KnownTypeNamesRule.KnownTypeNamesRule;\n  },\n});\nObject.defineProperty(exports, 'LoneAnonymousOperationRule', {\n  enumerable: true,\n  get: function () {\n    return _LoneAnonymousOperationRule.LoneAnonymousOperationRule;\n  },\n});\nObject.defineProperty(exports, 'LoneSchemaDefinitionRule', {\n  enumerable: true,\n  get: function () {\n    return _LoneSchemaDefinitionRule.LoneSchemaDefinitionRule;\n  },\n});\nObject.defineProperty(exports, 'MaxIntrospectionDepthRule', {\n  enumerable: true,\n  get: function () {\n    return _MaxIntrospectionDepthRule.MaxIntrospectionDepthRule;\n  },\n});\nObject.defineProperty(exports, 'NoDeprecatedCustomRule', {\n  enumerable: true,\n  get: function () {\n    return _NoDeprecatedCustomRule.NoDeprecatedCustomRule;\n  },\n});\nObject.defineProperty(exports, 'NoFragmentCyclesRule', {\n  enumerable: true,\n  get: function () {\n    return _NoFragmentCyclesRule.NoFragmentCyclesRule;\n  },\n});\nObject.defineProperty(exports, 'NoSchemaIntrospectionCustomRule', {\n  enumerable: true,\n  get: function () {\n    return _NoSchemaIntrospectionCustomRule.NoSchemaIntrospectionCustomRule;\n  },\n});\nObject.defineProperty(exports, 'NoUndefinedVariablesRule', {\n  enumerable: true,\n  get: function () {\n    return _NoUndefinedVariablesRule.NoUndefinedVariablesRule;\n  },\n});\nObject.defineProperty(exports, 'NoUnusedFragmentsRule', {\n  enumerable: true,\n  get: function () {\n    return _NoUnusedFragmentsRule.NoUnusedFragmentsRule;\n  },\n});\nObject.defineProperty(exports, 'NoUnusedVariablesRule', {\n  enumerable: true,\n  get: function () {\n    return _NoUnusedVariablesRule.NoUnusedVariablesRule;\n  },\n});\nObject.defineProperty(exports, 'OverlappingFieldsCanBeMergedRule', {\n  enumerable: true,\n  get: function () {\n    return _OverlappingFieldsCanBeMergedRule.OverlappingFieldsCanBeMergedRule;\n  },\n});\nObject.defineProperty(exports, 'PossibleFragmentSpreadsRule', {\n  enumerable: true,\n  get: function () {\n    return _PossibleFragmentSpreadsRule.PossibleFragmentSpreadsRule;\n  },\n});\nObject.defineProperty(exports, 'PossibleTypeExtensionsRule', {\n  enumerable: true,\n  get: function () {\n    return _PossibleTypeExtensionsRule.PossibleTypeExtensionsRule;\n  },\n});\nObject.defineProperty(exports, 'ProvidedRequiredArgumentsRule', {\n  enumerable: true,\n  get: function () {\n    return _ProvidedRequiredArgumentsRule.ProvidedRequiredArgumentsRule;\n  },\n});\nObject.defineProperty(exports, 'ScalarLeafsRule', {\n  enumerable: true,\n  get: function () {\n    return _ScalarLeafsRule.ScalarLeafsRule;\n  },\n});\nObject.defineProperty(exports, 'SingleFieldSubscriptionsRule', {\n  enumerable: true,\n  get: function () {\n    return _SingleFieldSubscriptionsRule.SingleFieldSubscriptionsRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueArgumentDefinitionNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _UniqueArgumentDefinitionNamesRule.UniqueArgumentDefinitionNamesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueArgumentNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _UniqueArgumentNamesRule.UniqueArgumentNamesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueDirectiveNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _UniqueDirectiveNamesRule.UniqueDirectiveNamesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueDirectivesPerLocationRule', {\n  enumerable: true,\n  get: function () {\n    return _UniqueDirectivesPerLocationRule.UniqueDirectivesPerLocationRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueEnumValueNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _UniqueEnumValueNamesRule.UniqueEnumValueNamesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueFieldDefinitionNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _UniqueFieldDefinitionNamesRule.UniqueFieldDefinitionNamesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueFragmentNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _UniqueFragmentNamesRule.UniqueFragmentNamesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueInputFieldNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _UniqueInputFieldNamesRule.UniqueInputFieldNamesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueOperationNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _UniqueOperationNamesRule.UniqueOperationNamesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueOperationTypesRule', {\n  enumerable: true,\n  get: function () {\n    return _UniqueOperationTypesRule.UniqueOperationTypesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueTypeNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _UniqueTypeNamesRule.UniqueTypeNamesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueVariableNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _UniqueVariableNamesRule.UniqueVariableNamesRule;\n  },\n});\nObject.defineProperty(exports, 'ValidationContext', {\n  enumerable: true,\n  get: function () {\n    return _ValidationContext.ValidationContext;\n  },\n});\nObject.defineProperty(exports, 'ValuesOfCorrectTypeRule', {\n  enumerable: true,\n  get: function () {\n    return _ValuesOfCorrectTypeRule.ValuesOfCorrectTypeRule;\n  },\n});\nObject.defineProperty(exports, 'VariablesAreInputTypesRule', {\n  enumerable: true,\n  get: function () {\n    return _VariablesAreInputTypesRule.VariablesAreInputTypesRule;\n  },\n});\nObject.defineProperty(exports, 'VariablesInAllowedPositionRule', {\n  enumerable: true,\n  get: function () {\n    return _VariablesInAllowedPositionRule.VariablesInAllowedPositionRule;\n  },\n});\nObject.defineProperty(exports, 'recommendedRules', {\n  enumerable: true,\n  get: function () {\n    return _specifiedRules.recommendedRules;\n  },\n});\nObject.defineProperty(exports, 'specifiedRules', {\n  enumerable: true,\n  get: function () {\n    return _specifiedRules.specifiedRules;\n  },\n});\nObject.defineProperty(exports, 'validate', {\n  enumerable: true,\n  get: function () {\n    return _validate.validate;\n  },\n});\n\nvar _validate = require('./validate.js');\n\nvar _ValidationContext = require('./ValidationContext.js');\n\nvar _specifiedRules = require('./specifiedRules.js');\n\nvar _ExecutableDefinitionsRule = require('./rules/ExecutableDefinitionsRule.js');\n\nvar _FieldsOnCorrectTypeRule = require('./rules/FieldsOnCorrectTypeRule.js');\n\nvar _FragmentsOnCompositeTypesRule = require('./rules/FragmentsOnCompositeTypesRule.js');\n\nvar _KnownArgumentNamesRule = require('./rules/KnownArgumentNamesRule.js');\n\nvar _KnownDirectivesRule = require('./rules/KnownDirectivesRule.js');\n\nvar _KnownFragmentNamesRule = require('./rules/KnownFragmentNamesRule.js');\n\nvar _KnownTypeNamesRule = require('./rules/KnownTypeNamesRule.js');\n\nvar _LoneAnonymousOperationRule = require('./rules/LoneAnonymousOperationRule.js');\n\nvar _NoFragmentCyclesRule = require('./rules/NoFragmentCyclesRule.js');\n\nvar _NoUndefinedVariablesRule = require('./rules/NoUndefinedVariablesRule.js');\n\nvar _NoUnusedFragmentsRule = require('./rules/NoUnusedFragmentsRule.js');\n\nvar _NoUnusedVariablesRule = require('./rules/NoUnusedVariablesRule.js');\n\nvar _OverlappingFieldsCanBeMergedRule = require('./rules/OverlappingFieldsCanBeMergedRule.js');\n\nvar _PossibleFragmentSpreadsRule = require('./rules/PossibleFragmentSpreadsRule.js');\n\nvar _ProvidedRequiredArgumentsRule = require('./rules/ProvidedRequiredArgumentsRule.js');\n\nvar _ScalarLeafsRule = require('./rules/ScalarLeafsRule.js');\n\nvar _SingleFieldSubscriptionsRule = require('./rules/SingleFieldSubscriptionsRule.js');\n\nvar _UniqueArgumentNamesRule = require('./rules/UniqueArgumentNamesRule.js');\n\nvar _UniqueDirectivesPerLocationRule = require('./rules/UniqueDirectivesPerLocationRule.js');\n\nvar _UniqueFragmentNamesRule = require('./rules/UniqueFragmentNamesRule.js');\n\nvar _UniqueInputFieldNamesRule = require('./rules/UniqueInputFieldNamesRule.js');\n\nvar _UniqueOperationNamesRule = require('./rules/UniqueOperationNamesRule.js');\n\nvar _UniqueVariableNamesRule = require('./rules/UniqueVariableNamesRule.js');\n\nvar _ValuesOfCorrectTypeRule = require('./rules/ValuesOfCorrectTypeRule.js');\n\nvar _VariablesAreInputTypesRule = require('./rules/VariablesAreInputTypesRule.js');\n\nvar _VariablesInAllowedPositionRule = require('./rules/VariablesInAllowedPositionRule.js');\n\nvar _MaxIntrospectionDepthRule = require('./rules/MaxIntrospectionDepthRule.js');\n\nvar _LoneSchemaDefinitionRule = require('./rules/LoneSchemaDefinitionRule.js');\n\nvar _UniqueOperationTypesRule = require('./rules/UniqueOperationTypesRule.js');\n\nvar _UniqueTypeNamesRule = require('./rules/UniqueTypeNamesRule.js');\n\nvar _UniqueEnumValueNamesRule = require('./rules/UniqueEnumValueNamesRule.js');\n\nvar _UniqueFieldDefinitionNamesRule = require('./rules/UniqueFieldDefinitionNamesRule.js');\n\nvar _UniqueArgumentDefinitionNamesRule = require('./rules/UniqueArgumentDefinitionNamesRule.js');\n\nvar _UniqueDirectiveNamesRule = require('./rules/UniqueDirectiveNamesRule.js');\n\nvar _PossibleTypeExtensionsRule = require('./rules/PossibleTypeExtensionsRule.js');\n\nvar _NoDeprecatedCustomRule = require('./rules/custom/NoDeprecatedCustomRule.js');\n\nvar _NoSchemaIntrospectionCustomRule = require('./rules/custom/NoSchemaIntrospectionCustomRule.js');\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nObject.defineProperty(exports, 'GraphQLError', {\n  enumerable: true,\n  get: function () {\n    return _GraphQLError.GraphQLError;\n  },\n});\nObject.defineProperty(exports, 'formatError', {\n  enumerable: true,\n  get: function () {\n    return _GraphQLError.formatError;\n  },\n});\nObject.defineProperty(exports, 'locatedError', {\n  enumerable: true,\n  get: function () {\n    return _locatedError.locatedError;\n  },\n});\nObject.defineProperty(exports, 'printError', {\n  enumerable: true,\n  get: function () {\n    return _GraphQLError.printError;\n  },\n});\nObject.defineProperty(exports, 'syntaxError', {\n  enumerable: true,\n  get: function () {\n    return _syntaxError.syntaxError;\n  },\n});\n\nvar _GraphQLError = require('./GraphQLError.js');\n\nvar _syntaxError = require('./syntaxError.js');\n\nvar _locatedError = require('./locatedError.js');\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.getIntrospectionQuery = getIntrospectionQuery;\n\n/**\n * Produce the GraphQL query recommended for a full schema introspection.\n * Accepts optional IntrospectionOptions.\n */\nfunction getIntrospectionQuery(options) {\n  const optionsWithDefault = {\n    descriptions: true,\n    specifiedByUrl: false,\n    directiveIsRepeatable: false,\n    schemaDescription: false,\n    inputValueDeprecation: false,\n    oneOf: false,\n    ...options,\n  };\n  const descriptions = optionsWithDefault.descriptions ? 'description' : '';\n  const specifiedByUrl = optionsWithDefault.specifiedByUrl\n    ? 'specifiedByURL'\n    : '';\n  const directiveIsRepeatable = optionsWithDefault.directiveIsRepeatable\n    ? 'isRepeatable'\n    : '';\n  const schemaDescription = optionsWithDefault.schemaDescription\n    ? descriptions\n    : '';\n\n  function inputDeprecation(str) {\n    return optionsWithDefault.inputValueDeprecation ? str : '';\n  }\n\n  const oneOf = optionsWithDefault.oneOf ? 'isOneOf' : '';\n  return `\n    query IntrospectionQuery {\n      __schema {\n        ${schemaDescription}\n        queryType { name kind }\n        mutationType { name kind }\n        subscriptionType { name kind }\n        types {\n          ...FullType\n        }\n        directives {\n          name\n          ${descriptions}\n          ${directiveIsRepeatable}\n          locations\n          args${inputDeprecation('(includeDeprecated: true)')} {\n            ...InputValue\n          }\n        }\n      }\n    }\n\n    fragment FullType on __Type {\n      kind\n      name\n      ${descriptions}\n      ${specifiedByUrl}\n      ${oneOf}\n      fields(includeDeprecated: true) {\n        name\n        ${descriptions}\n        args${inputDeprecation('(includeDeprecated: true)')} {\n          ...InputValue\n        }\n        type {\n          ...TypeRef\n        }\n        isDeprecated\n        deprecationReason\n      }\n      inputFields${inputDeprecation('(includeDeprecated: true)')} {\n        ...InputValue\n      }\n      interfaces {\n        ...TypeRef\n      }\n      enumValues(includeDeprecated: true) {\n        name\n        ${descriptions}\n        isDeprecated\n        deprecationReason\n      }\n      possibleTypes {\n        ...TypeRef\n      }\n    }\n\n    fragment InputValue on __InputValue {\n      name\n      ${descriptions}\n      type { ...TypeRef }\n      defaultValue\n      ${inputDeprecation('isDeprecated')}\n      ${inputDeprecation('deprecationReason')}\n    }\n\n    fragment TypeRef on __Type {\n      kind\n      name\n      ofType {\n        kind\n        name\n        ofType {\n          kind\n          name\n          ofType {\n            kind\n            name\n            ofType {\n              kind\n              name\n              ofType {\n                kind\n                name\n                ofType {\n                  kind\n                  name\n                  ofType {\n                    kind\n                    name\n                    ofType {\n                      kind\n                      name\n                      ofType {\n                        kind\n                        name\n                      }\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  `;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.getOperationAST = getOperationAST;\n\nvar _kinds = require('../language/kinds.js');\n\n/**\n * Returns an operation AST given a document AST and optionally an operation\n * name. If a name is not provided, an operation is only returned if only one is\n * provided in the document.\n */\nfunction getOperationAST(documentAST, operationName) {\n  let operation = null;\n\n  for (const definition of documentAST.definitions) {\n    if (definition.kind === _kinds.Kind.OPERATION_DEFINITION) {\n      var _definition$name;\n\n      if (operationName == null) {\n        // If no operation name was provided, only return an Operation if there\n        // is one defined in the document. Upon encountering the second, return\n        // null.\n        if (operation) {\n          return null;\n        }\n\n        operation = definition;\n      } else if (\n        ((_definition$name = definition.name) === null ||\n        _definition$name === void 0\n          ? void 0\n          : _definition$name.value) === operationName\n      ) {\n        return definition;\n      }\n    }\n  }\n\n  return operation;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.getOperationRootType = getOperationRootType;\n\nvar _GraphQLError = require('../error/GraphQLError.js');\n\n/**\n * Extracts the root type of the operation from the schema.\n *\n * @deprecated Please use `GraphQLSchema.getRootType` instead. Will be removed in v17\n */\nfunction getOperationRootType(schema, operation) {\n  if (operation.operation === 'query') {\n    const queryType = schema.getQueryType();\n\n    if (!queryType) {\n      throw new _GraphQLError.GraphQLError(\n        'Schema does not define the required query root type.',\n        {\n          nodes: operation,\n        },\n      );\n    }\n\n    return queryType;\n  }\n\n  if (operation.operation === 'mutation') {\n    const mutationType = schema.getMutationType();\n\n    if (!mutationType) {\n      throw new _GraphQLError.GraphQLError(\n        'Schema is not configured for mutations.',\n        {\n          nodes: operation,\n        },\n      );\n    }\n\n    return mutationType;\n  }\n\n  if (operation.operation === 'subscription') {\n    const subscriptionType = schema.getSubscriptionType();\n\n    if (!subscriptionType) {\n      throw new _GraphQLError.GraphQLError(\n        'Schema is not configured for subscriptions.',\n        {\n          nodes: operation,\n        },\n      );\n    }\n\n    return subscriptionType;\n  }\n\n  throw new _GraphQLError.GraphQLError(\n    'Can only have query, mutation and subscription operations.',\n    {\n      nodes: operation,\n    },\n  );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.introspectionFromSchema = introspectionFromSchema;\n\nvar _invariant = require('../jsutils/invariant.js');\n\nvar _parser = require('../language/parser.js');\n\nvar _execute = require('../execution/execute.js');\n\nvar _getIntrospectionQuery = require('./getIntrospectionQuery.js');\n\n/**\n * Build an IntrospectionQuery from a GraphQLSchema\n *\n * IntrospectionQuery is useful for utilities that care about type and field\n * relationships, but do not need to traverse through those relationships.\n *\n * This is the inverse of buildClientSchema. The primary use case is outside\n * of the server context, for instance when doing schema comparisons.\n */\nfunction introspectionFromSchema(schema, options) {\n  const optionsWithDefaults = {\n    specifiedByUrl: true,\n    directiveIsRepeatable: true,\n    schemaDescription: true,\n    inputValueDeprecation: true,\n    oneOf: true,\n    ...options,\n  };\n  const document = (0, _parser.parse)(\n    (0, _getIntrospectionQuery.getIntrospectionQuery)(optionsWithDefaults),\n  );\n  const result = (0, _execute.executeSync)({\n    schema,\n    document,\n  });\n  (!result.errors && result.data) || (0, _invariant.invariant)(false);\n  return result.data;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.buildClientSchema = buildClientSchema;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _isObjectLike = require('../jsutils/isObjectLike.js');\n\nvar _keyValMap = require('../jsutils/keyValMap.js');\n\nvar _parser = require('../language/parser.js');\n\nvar _definition = require('../type/definition.js');\n\nvar _directives = require('../type/directives.js');\n\nvar _introspection = require('../type/introspection.js');\n\nvar _scalars = require('../type/scalars.js');\n\nvar _schema = require('../type/schema.js');\n\nvar _valueFromAST = require('./valueFromAST.js');\n\n/**\n * Build a GraphQLSchema for use by client tools.\n *\n * Given the result of a client running the introspection query, creates and\n * returns a GraphQLSchema instance which can be then used with all graphql-js\n * tools, but cannot be used to execute a query, as introspection does not\n * represent the \"resolver\", \"parse\" or \"serialize\" functions or any other\n * server-internal mechanisms.\n *\n * This function expects a complete introspection result. Don't forget to check\n * the \"errors\" field of a server response before calling this function.\n */\nfunction buildClientSchema(introspection, options) {\n  ((0, _isObjectLike.isObjectLike)(introspection) &&\n    (0, _isObjectLike.isObjectLike)(introspection.__schema)) ||\n    (0, _devAssert.devAssert)(\n      false,\n      `Invalid or incomplete introspection result. Ensure that you are passing \"data\" property of introspection response and no \"errors\" was returned alongside: ${(0,\n      _inspect.inspect)(introspection)}.`,\n    ); // Get the schema from the introspection result.\n\n  const schemaIntrospection = introspection.__schema; // Iterate through all types, getting the type definition for each.\n\n  const typeMap = (0, _keyValMap.keyValMap)(\n    schemaIntrospection.types,\n    (typeIntrospection) => typeIntrospection.name,\n    (typeIntrospection) => buildType(typeIntrospection),\n  ); // Include standard types only if they are used.\n\n  for (const stdType of [\n    ..._scalars.specifiedScalarTypes,\n    ..._introspection.introspectionTypes,\n  ]) {\n    if (typeMap[stdType.name]) {\n      typeMap[stdType.name] = stdType;\n    }\n  } // Get the root Query, Mutation, and Subscription types.\n\n  const queryType = schemaIntrospection.queryType\n    ? getObjectType(schemaIntrospection.queryType)\n    : null;\n  const mutationType = schemaIntrospection.mutationType\n    ? getObjectType(schemaIntrospection.mutationType)\n    : null;\n  const subscriptionType = schemaIntrospection.subscriptionType\n    ? getObjectType(schemaIntrospection.subscriptionType)\n    : null; // Get the directives supported by Introspection, assuming empty-set if\n  // directives were not queried for.\n\n  const directives = schemaIntrospection.directives\n    ? schemaIntrospection.directives.map(buildDirective)\n    : []; // Then produce and return a Schema with these types.\n\n  return new _schema.GraphQLSchema({\n    description: schemaIntrospection.description,\n    query: queryType,\n    mutation: mutationType,\n    subscription: subscriptionType,\n    types: Object.values(typeMap),\n    directives,\n    assumeValid:\n      options === null || options === void 0 ? void 0 : options.assumeValid,\n  }); // Given a type reference in introspection, return the GraphQLType instance.\n  // preferring cached instances before building new instances.\n\n  function getType(typeRef) {\n    if (typeRef.kind === _introspection.TypeKind.LIST) {\n      const itemRef = typeRef.ofType;\n\n      if (!itemRef) {\n        throw new Error('Decorated type deeper than introspection query.');\n      }\n\n      return new _definition.GraphQLList(getType(itemRef));\n    }\n\n    if (typeRef.kind === _introspection.TypeKind.NON_NULL) {\n      const nullableRef = typeRef.ofType;\n\n      if (!nullableRef) {\n        throw new Error('Decorated type deeper than introspection query.');\n      }\n\n      const nullableType = getType(nullableRef);\n      return new _definition.GraphQLNonNull(\n        (0, _definition.assertNullableType)(nullableType),\n      );\n    }\n\n    return getNamedType(typeRef);\n  }\n\n  function getNamedType(typeRef) {\n    const typeName = typeRef.name;\n\n    if (!typeName) {\n      throw new Error(\n        `Unknown type reference: ${(0, _inspect.inspect)(typeRef)}.`,\n      );\n    }\n\n    const type = typeMap[typeName];\n\n    if (!type) {\n      throw new Error(\n        `Invalid or incomplete schema, unknown type: ${typeName}. Ensure that a full introspection query is used in order to build a client schema.`,\n      );\n    }\n\n    return type;\n  }\n\n  function getObjectType(typeRef) {\n    return (0, _definition.assertObjectType)(getNamedType(typeRef));\n  }\n\n  function getInterfaceType(typeRef) {\n    return (0, _definition.assertInterfaceType)(getNamedType(typeRef));\n  } // Given a type's introspection result, construct the correct\n  // GraphQLType instance.\n\n  function buildType(type) {\n    // eslint-disable-next-line @typescript-eslint/prefer-optional-chain\n    if (type != null && type.name != null && type.kind != null) {\n      // FIXME: Properly type IntrospectionType, it's a breaking change so fix in v17\n      // eslint-disable-next-line @typescript-eslint/switch-exhaustiveness-check\n      switch (type.kind) {\n        case _introspection.TypeKind.SCALAR:\n          return buildScalarDef(type);\n\n        case _introspection.TypeKind.OBJECT:\n          return buildObjectDef(type);\n\n        case _introspection.TypeKind.INTERFACE:\n          return buildInterfaceDef(type);\n\n        case _introspection.TypeKind.UNION:\n          return buildUnionDef(type);\n\n        case _introspection.TypeKind.ENUM:\n          return buildEnumDef(type);\n\n        case _introspection.TypeKind.INPUT_OBJECT:\n          return buildInputObjectDef(type);\n      }\n    }\n\n    const typeStr = (0, _inspect.inspect)(type);\n    throw new Error(\n      `Invalid or incomplete introspection result. Ensure that a full introspection query is used in order to build a client schema: ${typeStr}.`,\n    );\n  }\n\n  function buildScalarDef(scalarIntrospection) {\n    return new _definition.GraphQLScalarType({\n      name: scalarIntrospection.name,\n      description: scalarIntrospection.description,\n      specifiedByURL: scalarIntrospection.specifiedByURL,\n    });\n  }\n\n  function buildImplementationsList(implementingIntrospection) {\n    // TODO: Temporary workaround until GraphQL ecosystem will fully support\n    // 'interfaces' on interface types.\n    if (\n      implementingIntrospection.interfaces === null &&\n      implementingIntrospection.kind === _introspection.TypeKind.INTERFACE\n    ) {\n      return [];\n    }\n\n    if (!implementingIntrospection.interfaces) {\n      const implementingIntrospectionStr = (0, _inspect.inspect)(\n        implementingIntrospection,\n      );\n      throw new Error(\n        `Introspection result missing interfaces: ${implementingIntrospectionStr}.`,\n      );\n    }\n\n    return implementingIntrospection.interfaces.map(getInterfaceType);\n  }\n\n  function buildObjectDef(objectIntrospection) {\n    return new _definition.GraphQLObjectType({\n      name: objectIntrospection.name,\n      description: objectIntrospection.description,\n      interfaces: () => buildImplementationsList(objectIntrospection),\n      fields: () => buildFieldDefMap(objectIntrospection),\n    });\n  }\n\n  function buildInterfaceDef(interfaceIntrospection) {\n    return new _definition.GraphQLInterfaceType({\n      name: interfaceIntrospection.name,\n      description: interfaceIntrospection.description,\n      interfaces: () => buildImplementationsList(interfaceIntrospection),\n      fields: () => buildFieldDefMap(interfaceIntrospection),\n    });\n  }\n\n  function buildUnionDef(unionIntrospection) {\n    if (!unionIntrospection.possibleTypes) {\n      const unionIntrospectionStr = (0, _inspect.inspect)(unionIntrospection);\n      throw new Error(\n        `Introspection result missing possibleTypes: ${unionIntrospectionStr}.`,\n      );\n    }\n\n    return new _definition.GraphQLUnionType({\n      name: unionIntrospection.name,\n      description: unionIntrospection.description,\n      types: () => unionIntrospection.possibleTypes.map(getObjectType),\n    });\n  }\n\n  function buildEnumDef(enumIntrospection) {\n    if (!enumIntrospection.enumValues) {\n      const enumIntrospectionStr = (0, _inspect.inspect)(enumIntrospection);\n      throw new Error(\n        `Introspection result missing enumValues: ${enumIntrospectionStr}.`,\n      );\n    }\n\n    return new _definition.GraphQLEnumType({\n      name: enumIntrospection.name,\n      description: enumIntrospection.description,\n      values: (0, _keyValMap.keyValMap)(\n        enumIntrospection.enumValues,\n        (valueIntrospection) => valueIntrospection.name,\n        (valueIntrospection) => ({\n          description: valueIntrospection.description,\n          deprecationReason: valueIntrospection.deprecationReason,\n        }),\n      ),\n    });\n  }\n\n  function buildInputObjectDef(inputObjectIntrospection) {\n    if (!inputObjectIntrospection.inputFields) {\n      const inputObjectIntrospectionStr = (0, _inspect.inspect)(\n        inputObjectIntrospection,\n      );\n      throw new Error(\n        `Introspection result missing inputFields: ${inputObjectIntrospectionStr}.`,\n      );\n    }\n\n    return new _definition.GraphQLInputObjectType({\n      name: inputObjectIntrospection.name,\n      description: inputObjectIntrospection.description,\n      fields: () => buildInputValueDefMap(inputObjectIntrospection.inputFields),\n      isOneOf: inputObjectIntrospection.isOneOf,\n    });\n  }\n\n  function buildFieldDefMap(typeIntrospection) {\n    if (!typeIntrospection.fields) {\n      throw new Error(\n        `Introspection result missing fields: ${(0, _inspect.inspect)(\n          typeIntrospection,\n        )}.`,\n      );\n    }\n\n    return (0, _keyValMap.keyValMap)(\n      typeIntrospection.fields,\n      (fieldIntrospection) => fieldIntrospection.name,\n      buildField,\n    );\n  }\n\n  function buildField(fieldIntrospection) {\n    const type = getType(fieldIntrospection.type);\n\n    if (!(0, _definition.isOutputType)(type)) {\n      const typeStr = (0, _inspect.inspect)(type);\n      throw new Error(\n        `Introspection must provide output type for fields, but received: ${typeStr}.`,\n      );\n    }\n\n    if (!fieldIntrospection.args) {\n      const fieldIntrospectionStr = (0, _inspect.inspect)(fieldIntrospection);\n      throw new Error(\n        `Introspection result missing field args: ${fieldIntrospectionStr}.`,\n      );\n    }\n\n    return {\n      description: fieldIntrospection.description,\n      deprecationReason: fieldIntrospection.deprecationReason,\n      type,\n      args: buildInputValueDefMap(fieldIntrospection.args),\n    };\n  }\n\n  function buildInputValueDefMap(inputValueIntrospections) {\n    return (0, _keyValMap.keyValMap)(\n      inputValueIntrospections,\n      (inputValue) => inputValue.name,\n      buildInputValue,\n    );\n  }\n\n  function buildInputValue(inputValueIntrospection) {\n    const type = getType(inputValueIntrospection.type);\n\n    if (!(0, _definition.isInputType)(type)) {\n      const typeStr = (0, _inspect.inspect)(type);\n      throw new Error(\n        `Introspection must provide input type for arguments, but received: ${typeStr}.`,\n      );\n    }\n\n    const defaultValue =\n      inputValueIntrospection.defaultValue != null\n        ? (0, _valueFromAST.valueFromAST)(\n            (0, _parser.parseValue)(inputValueIntrospection.defaultValue),\n            type,\n          )\n        : undefined;\n    return {\n      description: inputValueIntrospection.description,\n      type,\n      defaultValue,\n      deprecationReason: inputValueIntrospection.deprecationReason,\n    };\n  }\n\n  function buildDirective(directiveIntrospection) {\n    if (!directiveIntrospection.args) {\n      const directiveIntrospectionStr = (0, _inspect.inspect)(\n        directiveIntrospection,\n      );\n      throw new Error(\n        `Introspection result missing directive args: ${directiveIntrospectionStr}.`,\n      );\n    }\n\n    if (!directiveIntrospection.locations) {\n      const directiveIntrospectionStr = (0, _inspect.inspect)(\n        directiveIntrospection,\n      );\n      throw new Error(\n        `Introspection result missing directive locations: ${directiveIntrospectionStr}.`,\n      );\n    }\n\n    return new _directives.GraphQLDirective({\n      name: directiveIntrospection.name,\n      description: directiveIntrospection.description,\n      isRepeatable: directiveIntrospection.isRepeatable,\n      locations: directiveIntrospection.locations.slice(),\n      args: buildInputValueDefMap(directiveIntrospection.args),\n    });\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.extendSchema = extendSchema;\nexports.extendSchemaImpl = extendSchemaImpl;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _invariant = require('../jsutils/invariant.js');\n\nvar _keyMap = require('../jsutils/keyMap.js');\n\nvar _mapValue = require('../jsutils/mapValue.js');\n\nvar _kinds = require('../language/kinds.js');\n\nvar _predicates = require('../language/predicates.js');\n\nvar _definition = require('../type/definition.js');\n\nvar _directives = require('../type/directives.js');\n\nvar _introspection = require('../type/introspection.js');\n\nvar _scalars = require('../type/scalars.js');\n\nvar _schema = require('../type/schema.js');\n\nvar _validate = require('../validation/validate.js');\n\nvar _values = require('../execution/values.js');\n\nvar _valueFromAST = require('./valueFromAST.js');\n\n/**\n * Produces a new schema given an existing schema and a document which may\n * contain GraphQL type extensions and definitions. The original schema will\n * remain unaltered.\n *\n * Because a schema represents a graph of references, a schema cannot be\n * extended without effectively making an entire copy. We do not know until it's\n * too late if subgraphs remain unchanged.\n *\n * This algorithm copies the provided schema, applying extensions while\n * producing the copy. The original schema remains unaltered.\n */\nfunction extendSchema(schema, documentAST, options) {\n  (0, _schema.assertSchema)(schema);\n  (documentAST != null && documentAST.kind === _kinds.Kind.DOCUMENT) ||\n    (0, _devAssert.devAssert)(false, 'Must provide valid Document AST.');\n\n  if (\n    (options === null || options === void 0 ? void 0 : options.assumeValid) !==\n      true &&\n    (options === null || options === void 0\n      ? void 0\n      : options.assumeValidSDL) !== true\n  ) {\n    (0, _validate.assertValidSDLExtension)(documentAST, schema);\n  }\n\n  const schemaConfig = schema.toConfig();\n  const extendedConfig = extendSchemaImpl(schemaConfig, documentAST, options);\n  return schemaConfig === extendedConfig\n    ? schema\n    : new _schema.GraphQLSchema(extendedConfig);\n}\n/**\n * @internal\n */\n\nfunction extendSchemaImpl(schemaConfig, documentAST, options) {\n  var _schemaDef, _schemaDef$descriptio, _schemaDef2, _options$assumeValid;\n\n  // Collect the type definitions and extensions found in the document.\n  const typeDefs = [];\n  const typeExtensionsMap = Object.create(null); // New directives and types are separate because a directives and types can\n  // have the same name. For example, a type named \"skip\".\n\n  const directiveDefs = [];\n  let schemaDef; // Schema extensions are collected which may add additional operation types.\n\n  const schemaExtensions = [];\n\n  for (const def of documentAST.definitions) {\n    if (def.kind === _kinds.Kind.SCHEMA_DEFINITION) {\n      schemaDef = def;\n    } else if (def.kind === _kinds.Kind.SCHEMA_EXTENSION) {\n      schemaExtensions.push(def);\n    } else if ((0, _predicates.isTypeDefinitionNode)(def)) {\n      typeDefs.push(def);\n    } else if ((0, _predicates.isTypeExtensionNode)(def)) {\n      const extendedTypeName = def.name.value;\n      const existingTypeExtensions = typeExtensionsMap[extendedTypeName];\n      typeExtensionsMap[extendedTypeName] = existingTypeExtensions\n        ? existingTypeExtensions.concat([def])\n        : [def];\n    } else if (def.kind === _kinds.Kind.DIRECTIVE_DEFINITION) {\n      directiveDefs.push(def);\n    }\n  } // If this document contains no new types, extensions, or directives then\n  // return the same unmodified GraphQLSchema instance.\n\n  if (\n    Object.keys(typeExtensionsMap).length === 0 &&\n    typeDefs.length === 0 &&\n    directiveDefs.length === 0 &&\n    schemaExtensions.length === 0 &&\n    schemaDef == null\n  ) {\n    return schemaConfig;\n  }\n\n  const typeMap = Object.create(null);\n\n  for (const existingType of schemaConfig.types) {\n    typeMap[existingType.name] = extendNamedType(existingType);\n  }\n\n  for (const typeNode of typeDefs) {\n    var _stdTypeMap$name;\n\n    const name = typeNode.name.value;\n    typeMap[name] =\n      (_stdTypeMap$name = stdTypeMap[name]) !== null &&\n      _stdTypeMap$name !== void 0\n        ? _stdTypeMap$name\n        : buildType(typeNode);\n  }\n\n  const operationTypes = {\n    // Get the extended root operation types.\n    query: schemaConfig.query && replaceNamedType(schemaConfig.query),\n    mutation: schemaConfig.mutation && replaceNamedType(schemaConfig.mutation),\n    subscription:\n      schemaConfig.subscription && replaceNamedType(schemaConfig.subscription),\n    // Then, incorporate schema definition and all schema extensions.\n    ...(schemaDef && getOperationTypes([schemaDef])),\n    ...getOperationTypes(schemaExtensions),\n  }; // Then produce and return a Schema config with these types.\n\n  return {\n    description:\n      (_schemaDef = schemaDef) === null || _schemaDef === void 0\n        ? void 0\n        : (_schemaDef$descriptio = _schemaDef.description) === null ||\n          _schemaDef$descriptio === void 0\n        ? void 0\n        : _schemaDef$descriptio.value,\n    ...operationTypes,\n    types: Object.values(typeMap),\n    directives: [\n      ...schemaConfig.directives.map(replaceDirective),\n      ...directiveDefs.map(buildDirective),\n    ],\n    extensions: Object.create(null),\n    astNode:\n      (_schemaDef2 = schemaDef) !== null && _schemaDef2 !== void 0\n        ? _schemaDef2\n        : schemaConfig.astNode,\n    extensionASTNodes: schemaConfig.extensionASTNodes.concat(schemaExtensions),\n    assumeValid:\n      (_options$assumeValid =\n        options === null || options === void 0\n          ? void 0\n          : options.assumeValid) !== null && _options$assumeValid !== void 0\n        ? _options$assumeValid\n        : false,\n  }; // Below are functions used for producing this schema that have closed over\n  // this scope and have access to the schema, cache, and newly defined types.\n\n  function replaceType(type) {\n    if ((0, _definition.isListType)(type)) {\n      // @ts-expect-error\n      return new _definition.GraphQLList(replaceType(type.ofType));\n    }\n\n    if ((0, _definition.isNonNullType)(type)) {\n      // @ts-expect-error\n      return new _definition.GraphQLNonNull(replaceType(type.ofType));\n    } // @ts-expect-error FIXME\n\n    return replaceNamedType(type);\n  }\n\n  function replaceNamedType(type) {\n    // Note: While this could make early assertions to get the correctly\n    // typed values, that would throw immediately while type system\n    // validation with validateSchema() will produce more actionable results.\n    return typeMap[type.name];\n  }\n\n  function replaceDirective(directive) {\n    const config = directive.toConfig();\n    return new _directives.GraphQLDirective({\n      ...config,\n      args: (0, _mapValue.mapValue)(config.args, extendArg),\n    });\n  }\n\n  function extendNamedType(type) {\n    if (\n      (0, _introspection.isIntrospectionType)(type) ||\n      (0, _scalars.isSpecifiedScalarType)(type)\n    ) {\n      // Builtin types are not extended.\n      return type;\n    }\n\n    if ((0, _definition.isScalarType)(type)) {\n      return extendScalarType(type);\n    }\n\n    if ((0, _definition.isObjectType)(type)) {\n      return extendObjectType(type);\n    }\n\n    if ((0, _definition.isInterfaceType)(type)) {\n      return extendInterfaceType(type);\n    }\n\n    if ((0, _definition.isUnionType)(type)) {\n      return extendUnionType(type);\n    }\n\n    if ((0, _definition.isEnumType)(type)) {\n      return extendEnumType(type);\n    }\n\n    if ((0, _definition.isInputObjectType)(type)) {\n      return extendInputObjectType(type);\n    }\n    /* c8 ignore next 3 */\n    // Not reachable, all possible type definition nodes have been considered.\n\n    false ||\n      (0, _invariant.invariant)(\n        false,\n        'Unexpected type: ' + (0, _inspect.inspect)(type),\n      );\n  }\n\n  function extendInputObjectType(type) {\n    var _typeExtensionsMap$co;\n\n    const config = type.toConfig();\n    const extensions =\n      (_typeExtensionsMap$co = typeExtensionsMap[config.name]) !== null &&\n      _typeExtensionsMap$co !== void 0\n        ? _typeExtensionsMap$co\n        : [];\n    return new _definition.GraphQLInputObjectType({\n      ...config,\n      fields: () => ({\n        ...(0, _mapValue.mapValue)(config.fields, (field) => ({\n          ...field,\n          type: replaceType(field.type),\n        })),\n        ...buildInputFieldMap(extensions),\n      }),\n      extensionASTNodes: config.extensionASTNodes.concat(extensions),\n    });\n  }\n\n  function extendEnumType(type) {\n    var _typeExtensionsMap$ty;\n\n    const config = type.toConfig();\n    const extensions =\n      (_typeExtensionsMap$ty = typeExtensionsMap[type.name]) !== null &&\n      _typeExtensionsMap$ty !== void 0\n        ? _typeExtensionsMap$ty\n        : [];\n    return new _definition.GraphQLEnumType({\n      ...config,\n      values: { ...config.values, ...buildEnumValueMap(extensions) },\n      extensionASTNodes: config.extensionASTNodes.concat(extensions),\n    });\n  }\n\n  function extendScalarType(type) {\n    var _typeExtensionsMap$co2;\n\n    const config = type.toConfig();\n    const extensions =\n      (_typeExtensionsMap$co2 = typeExtensionsMap[config.name]) !== null &&\n      _typeExtensionsMap$co2 !== void 0\n        ? _typeExtensionsMap$co2\n        : [];\n    let specifiedByURL = config.specifiedByURL;\n\n    for (const extensionNode of extensions) {\n      var _getSpecifiedByURL;\n\n      specifiedByURL =\n        (_getSpecifiedByURL = getSpecifiedByURL(extensionNode)) !== null &&\n        _getSpecifiedByURL !== void 0\n          ? _getSpecifiedByURL\n          : specifiedByURL;\n    }\n\n    return new _definition.GraphQLScalarType({\n      ...config,\n      specifiedByURL,\n      extensionASTNodes: config.extensionASTNodes.concat(extensions),\n    });\n  }\n\n  function extendObjectType(type) {\n    var _typeExtensionsMap$co3;\n\n    const config = type.toConfig();\n    const extensions =\n      (_typeExtensionsMap$co3 = typeExtensionsMap[config.name]) !== null &&\n      _typeExtensionsMap$co3 !== void 0\n        ? _typeExtensionsMap$co3\n        : [];\n    return new _definition.GraphQLObjectType({\n      ...config,\n      interfaces: () => [\n        ...type.getInterfaces().map(replaceNamedType),\n        ...buildInterfaces(extensions),\n      ],\n      fields: () => ({\n        ...(0, _mapValue.mapValue)(config.fields, extendField),\n        ...buildFieldMap(extensions),\n      }),\n      extensionASTNodes: config.extensionASTNodes.concat(extensions),\n    });\n  }\n\n  function extendInterfaceType(type) {\n    var _typeExtensionsMap$co4;\n\n    const config = type.toConfig();\n    const extensions =\n      (_typeExtensionsMap$co4 = typeExtensionsMap[config.name]) !== null &&\n      _typeExtensionsMap$co4 !== void 0\n        ? _typeExtensionsMap$co4\n        : [];\n    return new _definition.GraphQLInterfaceType({\n      ...config,\n      interfaces: () => [\n        ...type.getInterfaces().map(replaceNamedType),\n        ...buildInterfaces(extensions),\n      ],\n      fields: () => ({\n        ...(0, _mapValue.mapValue)(config.fields, extendField),\n        ...buildFieldMap(extensions),\n      }),\n      extensionASTNodes: config.extensionASTNodes.concat(extensions),\n    });\n  }\n\n  function extendUnionType(type) {\n    var _typeExtensionsMap$co5;\n\n    const config = type.toConfig();\n    const extensions =\n      (_typeExtensionsMap$co5 = typeExtensionsMap[config.name]) !== null &&\n      _typeExtensionsMap$co5 !== void 0\n        ? _typeExtensionsMap$co5\n        : [];\n    return new _definition.GraphQLUnionType({\n      ...config,\n      types: () => [\n        ...type.getTypes().map(replaceNamedType),\n        ...buildUnionTypes(extensions),\n      ],\n      extensionASTNodes: config.extensionASTNodes.concat(extensions),\n    });\n  }\n\n  function extendField(field) {\n    return {\n      ...field,\n      type: replaceType(field.type),\n      args: field.args && (0, _mapValue.mapValue)(field.args, extendArg),\n    };\n  }\n\n  function extendArg(arg) {\n    return { ...arg, type: replaceType(arg.type) };\n  }\n\n  function getOperationTypes(nodes) {\n    const opTypes = {};\n\n    for (const node of nodes) {\n      var _node$operationTypes;\n\n      // FIXME: https://github.com/graphql/graphql-js/issues/2203\n      const operationTypesNodes =\n        /* c8 ignore next */\n        (_node$operationTypes = node.operationTypes) !== null &&\n        _node$operationTypes !== void 0\n          ? _node$operationTypes\n          : [];\n\n      for (const operationType of operationTypesNodes) {\n        // Note: While this could make early assertions to get the correctly\n        // typed values below, that would throw immediately while type system\n        // validation with validateSchema() will produce more actionable results.\n        // @ts-expect-error\n        opTypes[operationType.operation] = getNamedType(operationType.type);\n      }\n    }\n\n    return opTypes;\n  }\n\n  function getNamedType(node) {\n    var _stdTypeMap$name2;\n\n    const name = node.name.value;\n    const type =\n      (_stdTypeMap$name2 = stdTypeMap[name]) !== null &&\n      _stdTypeMap$name2 !== void 0\n        ? _stdTypeMap$name2\n        : typeMap[name];\n\n    if (type === undefined) {\n      throw new Error(`Unknown type: \"${name}\".`);\n    }\n\n    return type;\n  }\n\n  function getWrappedType(node) {\n    if (node.kind === _kinds.Kind.LIST_TYPE) {\n      return new _definition.GraphQLList(getWrappedType(node.type));\n    }\n\n    if (node.kind === _kinds.Kind.NON_NULL_TYPE) {\n      return new _definition.GraphQLNonNull(getWrappedType(node.type));\n    }\n\n    return getNamedType(node);\n  }\n\n  function buildDirective(node) {\n    var _node$description;\n\n    return new _directives.GraphQLDirective({\n      name: node.name.value,\n      description:\n        (_node$description = node.description) === null ||\n        _node$description === void 0\n          ? void 0\n          : _node$description.value,\n      // @ts-expect-error\n      locations: node.locations.map(({ value }) => value),\n      isRepeatable: node.repeatable,\n      args: buildArgumentMap(node.arguments),\n      astNode: node,\n    });\n  }\n\n  function buildFieldMap(nodes) {\n    const fieldConfigMap = Object.create(null);\n\n    for (const node of nodes) {\n      var _node$fields;\n\n      // FIXME: https://github.com/graphql/graphql-js/issues/2203\n      const nodeFields =\n        /* c8 ignore next */\n        (_node$fields = node.fields) !== null && _node$fields !== void 0\n          ? _node$fields\n          : [];\n\n      for (const field of nodeFields) {\n        var _field$description;\n\n        fieldConfigMap[field.name.value] = {\n          // Note: While this could make assertions to get the correctly typed\n          // value, that would throw immediately while type system validation\n          // with validateSchema() will produce more actionable results.\n          type: getWrappedType(field.type),\n          description:\n            (_field$description = field.description) === null ||\n            _field$description === void 0\n              ? void 0\n              : _field$description.value,\n          args: buildArgumentMap(field.arguments),\n          deprecationReason: getDeprecationReason(field),\n          astNode: field,\n        };\n      }\n    }\n\n    return fieldConfigMap;\n  }\n\n  function buildArgumentMap(args) {\n    // FIXME: https://github.com/graphql/graphql-js/issues/2203\n    const argsNodes =\n      /* c8 ignore next */\n      args !== null && args !== void 0 ? args : [];\n    const argConfigMap = Object.create(null);\n\n    for (const arg of argsNodes) {\n      var _arg$description;\n\n      // Note: While this could make assertions to get the correctly typed\n      // value, that would throw immediately while type system validation\n      // with validateSchema() will produce more actionable results.\n      const type = getWrappedType(arg.type);\n      argConfigMap[arg.name.value] = {\n        type,\n        description:\n          (_arg$description = arg.description) === null ||\n          _arg$description === void 0\n            ? void 0\n            : _arg$description.value,\n        defaultValue: (0, _valueFromAST.valueFromAST)(arg.defaultValue, type),\n        deprecationReason: getDeprecationReason(arg),\n        astNode: arg,\n      };\n    }\n\n    return argConfigMap;\n  }\n\n  function buildInputFieldMap(nodes) {\n    const inputFieldMap = Object.create(null);\n\n    for (const node of nodes) {\n      var _node$fields2;\n\n      // FIXME: https://github.com/graphql/graphql-js/issues/2203\n      const fieldsNodes =\n        /* c8 ignore next */\n        (_node$fields2 = node.fields) !== null && _node$fields2 !== void 0\n          ? _node$fields2\n          : [];\n\n      for (const field of fieldsNodes) {\n        var _field$description2;\n\n        // Note: While this could make assertions to get the correctly typed\n        // value, that would throw immediately while type system validation\n        // with validateSchema() will produce more actionable results.\n        const type = getWrappedType(field.type);\n        inputFieldMap[field.name.value] = {\n          type,\n          description:\n            (_field$description2 = field.description) === null ||\n            _field$description2 === void 0\n              ? void 0\n              : _field$description2.value,\n          defaultValue: (0, _valueFromAST.valueFromAST)(\n            field.defaultValue,\n            type,\n          ),\n          deprecationReason: getDeprecationReason(field),\n          astNode: field,\n        };\n      }\n    }\n\n    return inputFieldMap;\n  }\n\n  function buildEnumValueMap(nodes) {\n    const enumValueMap = Object.create(null);\n\n    for (const node of nodes) {\n      var _node$values;\n\n      // FIXME: https://github.com/graphql/graphql-js/issues/2203\n      const valuesNodes =\n        /* c8 ignore next */\n        (_node$values = node.values) !== null && _node$values !== void 0\n          ? _node$values\n          : [];\n\n      for (const value of valuesNodes) {\n        var _value$description;\n\n        enumValueMap[value.name.value] = {\n          description:\n            (_value$description = value.description) === null ||\n            _value$description === void 0\n              ? void 0\n              : _value$description.value,\n          deprecationReason: getDeprecationReason(value),\n          astNode: value,\n        };\n      }\n    }\n\n    return enumValueMap;\n  }\n\n  function buildInterfaces(nodes) {\n    // Note: While this could make assertions to get the correctly typed\n    // values below, that would throw immediately while type system\n    // validation with validateSchema() will produce more actionable results.\n    // @ts-expect-error\n    return nodes.flatMap(\n      // FIXME: https://github.com/graphql/graphql-js/issues/2203\n      (node) => {\n        var _node$interfaces$map, _node$interfaces;\n\n        return (\n          /* c8 ignore next */\n          (_node$interfaces$map =\n            (_node$interfaces = node.interfaces) === null ||\n            _node$interfaces === void 0\n              ? void 0\n              : _node$interfaces.map(getNamedType)) !== null &&\n            _node$interfaces$map !== void 0\n            ? _node$interfaces$map\n            : []\n        );\n      },\n    );\n  }\n\n  function buildUnionTypes(nodes) {\n    // Note: While this could make assertions to get the correctly typed\n    // values below, that would throw immediately while type system\n    // validation with validateSchema() will produce more actionable results.\n    // @ts-expect-error\n    return nodes.flatMap(\n      // FIXME: https://github.com/graphql/graphql-js/issues/2203\n      (node) => {\n        var _node$types$map, _node$types;\n\n        return (\n          /* c8 ignore next */\n          (_node$types$map =\n            (_node$types = node.types) === null || _node$types === void 0\n              ? void 0\n              : _node$types.map(getNamedType)) !== null &&\n            _node$types$map !== void 0\n            ? _node$types$map\n            : []\n        );\n      },\n    );\n  }\n\n  function buildType(astNode) {\n    var _typeExtensionsMap$na;\n\n    const name = astNode.name.value;\n    const extensionASTNodes =\n      (_typeExtensionsMap$na = typeExtensionsMap[name]) !== null &&\n      _typeExtensionsMap$na !== void 0\n        ? _typeExtensionsMap$na\n        : [];\n\n    switch (astNode.kind) {\n      case _kinds.Kind.OBJECT_TYPE_DEFINITION: {\n        var _astNode$description;\n\n        const allNodes = [astNode, ...extensionASTNodes];\n        return new _definition.GraphQLObjectType({\n          name,\n          description:\n            (_astNode$description = astNode.description) === null ||\n            _astNode$description === void 0\n              ? void 0\n              : _astNode$description.value,\n          interfaces: () => buildInterfaces(allNodes),\n          fields: () => buildFieldMap(allNodes),\n          astNode,\n          extensionASTNodes,\n        });\n      }\n\n      case _kinds.Kind.INTERFACE_TYPE_DEFINITION: {\n        var _astNode$description2;\n\n        const allNodes = [astNode, ...extensionASTNodes];\n        return new _definition.GraphQLInterfaceType({\n          name,\n          description:\n            (_astNode$description2 = astNode.description) === null ||\n            _astNode$description2 === void 0\n              ? void 0\n              : _astNode$description2.value,\n          interfaces: () => buildInterfaces(allNodes),\n          fields: () => buildFieldMap(allNodes),\n          astNode,\n          extensionASTNodes,\n        });\n      }\n\n      case _kinds.Kind.ENUM_TYPE_DEFINITION: {\n        var _astNode$description3;\n\n        const allNodes = [astNode, ...extensionASTNodes];\n        return new _definition.GraphQLEnumType({\n          name,\n          description:\n            (_astNode$description3 = astNode.description) === null ||\n            _astNode$description3 === void 0\n              ? void 0\n              : _astNode$description3.value,\n          values: buildEnumValueMap(allNodes),\n          astNode,\n          extensionASTNodes,\n        });\n      }\n\n      case _kinds.Kind.UNION_TYPE_DEFINITION: {\n        var _astNode$description4;\n\n        const allNodes = [astNode, ...extensionASTNodes];\n        return new _definition.GraphQLUnionType({\n          name,\n          description:\n            (_astNode$description4 = astNode.description) === null ||\n            _astNode$description4 === void 0\n              ? void 0\n              : _astNode$description4.value,\n          types: () => buildUnionTypes(allNodes),\n          astNode,\n          extensionASTNodes,\n        });\n      }\n\n      case _kinds.Kind.SCALAR_TYPE_DEFINITION: {\n        var _astNode$description5;\n\n        return new _definition.GraphQLScalarType({\n          name,\n          description:\n            (_astNode$description5 = astNode.description) === null ||\n            _astNode$description5 === void 0\n              ? void 0\n              : _astNode$description5.value,\n          specifiedByURL: getSpecifiedByURL(astNode),\n          astNode,\n          extensionASTNodes,\n        });\n      }\n\n      case _kinds.Kind.INPUT_OBJECT_TYPE_DEFINITION: {\n        var _astNode$description6;\n\n        const allNodes = [astNode, ...extensionASTNodes];\n        return new _definition.GraphQLInputObjectType({\n          name,\n          description:\n            (_astNode$description6 = astNode.description) === null ||\n            _astNode$description6 === void 0\n              ? void 0\n              : _astNode$description6.value,\n          fields: () => buildInputFieldMap(allNodes),\n          astNode,\n          extensionASTNodes,\n          isOneOf: isOneOf(astNode),\n        });\n      }\n    }\n  }\n}\n\nconst stdTypeMap = (0, _keyMap.keyMap)(\n  [..._scalars.specifiedScalarTypes, ..._introspection.introspectionTypes],\n  (type) => type.name,\n);\n/**\n * Given a field or enum value node, returns the string value for the\n * deprecation reason.\n */\n\nfunction getDeprecationReason(node) {\n  const deprecated = (0, _values.getDirectiveValues)(\n    _directives.GraphQLDeprecatedDirective,\n    node,\n  ); // @ts-expect-error validated by `getDirectiveValues`\n\n  return deprecated === null || deprecated === void 0\n    ? void 0\n    : deprecated.reason;\n}\n/**\n * Given a scalar node, returns the string value for the specifiedByURL.\n */\n\nfunction getSpecifiedByURL(node) {\n  const specifiedBy = (0, _values.getDirectiveValues)(\n    _directives.GraphQLSpecifiedByDirective,\n    node,\n  ); // @ts-expect-error validated by `getDirectiveValues`\n\n  return specifiedBy === null || specifiedBy === void 0\n    ? void 0\n    : specifiedBy.url;\n}\n/**\n * Given an input object node, returns if the node should be OneOf.\n */\n\nfunction isOneOf(node) {\n  return Boolean(\n    (0, _values.getDirectiveValues)(_directives.GraphQLOneOfDirective, node),\n  );\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.buildASTSchema = buildASTSchema;\nexports.buildSchema = buildSchema;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _kinds = require('../language/kinds.js');\n\nvar _parser = require('../language/parser.js');\n\nvar _directives = require('../type/directives.js');\n\nvar _schema = require('../type/schema.js');\n\nvar _validate = require('../validation/validate.js');\n\nvar _extendSchema = require('./extendSchema.js');\n\n/**\n * This takes the ast of a schema document produced by the parse function in\n * src/language/parser.js.\n *\n * If no schema definition is provided, then it will look for types named Query,\n * Mutation and Subscription.\n *\n * Given that AST it constructs a GraphQLSchema. The resulting schema\n * has no resolve methods, so execution will use default resolvers.\n */\nfunction buildASTSchema(documentAST, options) {\n  (documentAST != null && documentAST.kind === _kinds.Kind.DOCUMENT) ||\n    (0, _devAssert.devAssert)(false, 'Must provide valid Document AST.');\n\n  if (\n    (options === null || options === void 0 ? void 0 : options.assumeValid) !==\n      true &&\n    (options === null || options === void 0\n      ? void 0\n      : options.assumeValidSDL) !== true\n  ) {\n    (0, _validate.assertValidSDL)(documentAST);\n  }\n\n  const emptySchemaConfig = {\n    description: undefined,\n    types: [],\n    directives: [],\n    extensions: Object.create(null),\n    extensionASTNodes: [],\n    assumeValid: false,\n  };\n  const config = (0, _extendSchema.extendSchemaImpl)(\n    emptySchemaConfig,\n    documentAST,\n    options,\n  );\n\n  if (config.astNode == null) {\n    for (const type of config.types) {\n      switch (type.name) {\n        // Note: While this could make early assertions to get the correctly\n        // typed values below, that would throw immediately while type system\n        // validation with validateSchema() will produce more actionable results.\n        case 'Query':\n          // @ts-expect-error validated in `validateSchema`\n          config.query = type;\n          break;\n\n        case 'Mutation':\n          // @ts-expect-error validated in `validateSchema`\n          config.mutation = type;\n          break;\n\n        case 'Subscription':\n          // @ts-expect-error validated in `validateSchema`\n          config.subscription = type;\n          break;\n      }\n    }\n  }\n\n  const directives = [\n    ...config.directives, // If specified directives were not explicitly declared, add them.\n    ..._directives.specifiedDirectives.filter((stdDirective) =>\n      config.directives.every(\n        (directive) => directive.name !== stdDirective.name,\n      ),\n    ),\n  ];\n  return new _schema.GraphQLSchema({ ...config, directives });\n}\n/**\n * A helper function to build a GraphQLSchema directly from a source\n * document.\n */\n\nfunction buildSchema(source, options) {\n  const document = (0, _parser.parse)(source, {\n    noLocation:\n      options === null || options === void 0 ? void 0 : options.noLocation,\n    allowLegacyFragmentVariables:\n      options === null || options === void 0\n        ? void 0\n        : options.allowLegacyFragmentVariables,\n  });\n  return buildASTSchema(document, {\n    assumeValidSDL:\n      options === null || options === void 0 ? void 0 : options.assumeValidSDL,\n    assumeValid:\n      options === null || options === void 0 ? void 0 : options.assumeValid,\n  });\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.lexicographicSortSchema = lexicographicSortSchema;\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _invariant = require('../jsutils/invariant.js');\n\nvar _keyValMap = require('../jsutils/keyValMap.js');\n\nvar _naturalCompare = require('../jsutils/naturalCompare.js');\n\nvar _definition = require('../type/definition.js');\n\nvar _directives = require('../type/directives.js');\n\nvar _introspection = require('../type/introspection.js');\n\nvar _schema = require('../type/schema.js');\n\n/**\n * Sort GraphQLSchema.\n *\n * This function returns a sorted copy of the given GraphQLSchema.\n */\nfunction lexicographicSortSchema(schema) {\n  const schemaConfig = schema.toConfig();\n  const typeMap = (0, _keyValMap.keyValMap)(\n    sortByName(schemaConfig.types),\n    (type) => type.name,\n    sortNamedType,\n  );\n  return new _schema.GraphQLSchema({\n    ...schemaConfig,\n    types: Object.values(typeMap),\n    directives: sortByName(schemaConfig.directives).map(sortDirective),\n    query: replaceMaybeType(schemaConfig.query),\n    mutation: replaceMaybeType(schemaConfig.mutation),\n    subscription: replaceMaybeType(schemaConfig.subscription),\n  });\n\n  function replaceType(type) {\n    if ((0, _definition.isListType)(type)) {\n      // @ts-expect-error\n      return new _definition.GraphQLList(replaceType(type.ofType));\n    } else if ((0, _definition.isNonNullType)(type)) {\n      // @ts-expect-error\n      return new _definition.GraphQLNonNull(replaceType(type.ofType));\n    } // @ts-expect-error FIXME: TS Conversion\n\n    return replaceNamedType(type);\n  }\n\n  function replaceNamedType(type) {\n    return typeMap[type.name];\n  }\n\n  function replaceMaybeType(maybeType) {\n    return maybeType && replaceNamedType(maybeType);\n  }\n\n  function sortDirective(directive) {\n    const config = directive.toConfig();\n    return new _directives.GraphQLDirective({\n      ...config,\n      locations: sortBy(config.locations, (x) => x),\n      args: sortArgs(config.args),\n    });\n  }\n\n  function sortArgs(args) {\n    return sortObjMap(args, (arg) => ({ ...arg, type: replaceType(arg.type) }));\n  }\n\n  function sortFields(fieldsMap) {\n    return sortObjMap(fieldsMap, (field) => ({\n      ...field,\n      type: replaceType(field.type),\n      args: field.args && sortArgs(field.args),\n    }));\n  }\n\n  function sortInputFields(fieldsMap) {\n    return sortObjMap(fieldsMap, (field) => ({\n      ...field,\n      type: replaceType(field.type),\n    }));\n  }\n\n  function sortTypes(array) {\n    return sortByName(array).map(replaceNamedType);\n  }\n\n  function sortNamedType(type) {\n    if (\n      (0, _definition.isScalarType)(type) ||\n      (0, _introspection.isIntrospectionType)(type)\n    ) {\n      return type;\n    }\n\n    if ((0, _definition.isObjectType)(type)) {\n      const config = type.toConfig();\n      return new _definition.GraphQLObjectType({\n        ...config,\n        interfaces: () => sortTypes(config.interfaces),\n        fields: () => sortFields(config.fields),\n      });\n    }\n\n    if ((0, _definition.isInterfaceType)(type)) {\n      const config = type.toConfig();\n      return new _definition.GraphQLInterfaceType({\n        ...config,\n        interfaces: () => sortTypes(config.interfaces),\n        fields: () => sortFields(config.fields),\n      });\n    }\n\n    if ((0, _definition.isUnionType)(type)) {\n      const config = type.toConfig();\n      return new _definition.GraphQLUnionType({\n        ...config,\n        types: () => sortTypes(config.types),\n      });\n    }\n\n    if ((0, _definition.isEnumType)(type)) {\n      const config = type.toConfig();\n      return new _definition.GraphQLEnumType({\n        ...config,\n        values: sortObjMap(config.values, (value) => value),\n      });\n    }\n\n    if ((0, _definition.isInputObjectType)(type)) {\n      const config = type.toConfig();\n      return new _definition.GraphQLInputObjectType({\n        ...config,\n        fields: () => sortInputFields(config.fields),\n      });\n    }\n    /* c8 ignore next 3 */\n    // Not reachable, all possible types have been considered.\n\n    false ||\n      (0, _invariant.invariant)(\n        false,\n        'Unexpected type: ' + (0, _inspect.inspect)(type),\n      );\n  }\n}\n\nfunction sortObjMap(map, sortValueFn) {\n  const sortedMap = Object.create(null);\n\n  for (const key of Object.keys(map).sort(_naturalCompare.naturalCompare)) {\n    sortedMap[key] = sortValueFn(map[key]);\n  }\n\n  return sortedMap;\n}\n\nfunction sortByName(array) {\n  return sortBy(array, (obj) => obj.name);\n}\n\nfunction sortBy(array, mapToKey) {\n  return array.slice().sort((obj1, obj2) => {\n    const key1 = mapToKey(obj1);\n    const key2 = mapToKey(obj2);\n    return (0, _naturalCompare.naturalCompare)(key1, key2);\n  });\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.printIntrospectionSchema = printIntrospectionSchema;\nexports.printSchema = printSchema;\nexports.printType = printType;\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _invariant = require('../jsutils/invariant.js');\n\nvar _blockString = require('../language/blockString.js');\n\nvar _kinds = require('../language/kinds.js');\n\nvar _printer = require('../language/printer.js');\n\nvar _definition = require('../type/definition.js');\n\nvar _directives = require('../type/directives.js');\n\nvar _introspection = require('../type/introspection.js');\n\nvar _scalars = require('../type/scalars.js');\n\nvar _astFromValue = require('./astFromValue.js');\n\nfunction printSchema(schema) {\n  return printFilteredSchema(\n    schema,\n    (n) => !(0, _directives.isSpecifiedDirective)(n),\n    isDefinedType,\n  );\n}\n\nfunction printIntrospectionSchema(schema) {\n  return printFilteredSchema(\n    schema,\n    _directives.isSpecifiedDirective,\n    _introspection.isIntrospectionType,\n  );\n}\n\nfunction isDefinedType(type) {\n  return (\n    !(0, _scalars.isSpecifiedScalarType)(type) &&\n    !(0, _introspection.isIntrospectionType)(type)\n  );\n}\n\nfunction printFilteredSchema(schema, directiveFilter, typeFilter) {\n  const directives = schema.getDirectives().filter(directiveFilter);\n  const types = Object.values(schema.getTypeMap()).filter(typeFilter);\n  return [\n    printSchemaDefinition(schema),\n    ...directives.map((directive) => printDirective(directive)),\n    ...types.map((type) => printType(type)),\n  ]\n    .filter(Boolean)\n    .join('\\n\\n');\n}\n\nfunction printSchemaDefinition(schema) {\n  if (schema.description == null && isSchemaOfCommonNames(schema)) {\n    return;\n  }\n\n  const operationTypes = [];\n  const queryType = schema.getQueryType();\n\n  if (queryType) {\n    operationTypes.push(`  query: ${queryType.name}`);\n  }\n\n  const mutationType = schema.getMutationType();\n\n  if (mutationType) {\n    operationTypes.push(`  mutation: ${mutationType.name}`);\n  }\n\n  const subscriptionType = schema.getSubscriptionType();\n\n  if (subscriptionType) {\n    operationTypes.push(`  subscription: ${subscriptionType.name}`);\n  }\n\n  return printDescription(schema) + `schema {\\n${operationTypes.join('\\n')}\\n}`;\n}\n/**\n * GraphQL schema define root types for each type of operation. These types are\n * the same as any other type and can be named in any manner, however there is\n * a common naming convention:\n *\n * ```graphql\n *   schema {\n *     query: Query\n *     mutation: Mutation\n *     subscription: Subscription\n *   }\n * ```\n *\n * When using this naming convention, the schema description can be omitted.\n */\n\nfunction isSchemaOfCommonNames(schema) {\n  const queryType = schema.getQueryType();\n\n  if (queryType && queryType.name !== 'Query') {\n    return false;\n  }\n\n  const mutationType = schema.getMutationType();\n\n  if (mutationType && mutationType.name !== 'Mutation') {\n    return false;\n  }\n\n  const subscriptionType = schema.getSubscriptionType();\n\n  if (subscriptionType && subscriptionType.name !== 'Subscription') {\n    return false;\n  }\n\n  return true;\n}\n\nfunction printType(type) {\n  if ((0, _definition.isScalarType)(type)) {\n    return printScalar(type);\n  }\n\n  if ((0, _definition.isObjectType)(type)) {\n    return printObject(type);\n  }\n\n  if ((0, _definition.isInterfaceType)(type)) {\n    return printInterface(type);\n  }\n\n  if ((0, _definition.isUnionType)(type)) {\n    return printUnion(type);\n  }\n\n  if ((0, _definition.isEnumType)(type)) {\n    return printEnum(type);\n  }\n\n  if ((0, _definition.isInputObjectType)(type)) {\n    return printInputObject(type);\n  }\n  /* c8 ignore next 3 */\n  // Not reachable, all possible types have been considered.\n\n  false ||\n    (0, _invariant.invariant)(\n      false,\n      'Unexpected type: ' + (0, _inspect.inspect)(type),\n    );\n}\n\nfunction printScalar(type) {\n  return (\n    printDescription(type) + `scalar ${type.name}` + printSpecifiedByURL(type)\n  );\n}\n\nfunction printImplementedInterfaces(type) {\n  const interfaces = type.getInterfaces();\n  return interfaces.length\n    ? ' implements ' + interfaces.map((i) => i.name).join(' & ')\n    : '';\n}\n\nfunction printObject(type) {\n  return (\n    printDescription(type) +\n    `type ${type.name}` +\n    printImplementedInterfaces(type) +\n    printFields(type)\n  );\n}\n\nfunction printInterface(type) {\n  return (\n    printDescription(type) +\n    `interface ${type.name}` +\n    printImplementedInterfaces(type) +\n    printFields(type)\n  );\n}\n\nfunction printUnion(type) {\n  const types = type.getTypes();\n  const possibleTypes = types.length ? ' = ' + types.join(' | ') : '';\n  return printDescription(type) + 'union ' + type.name + possibleTypes;\n}\n\nfunction printEnum(type) {\n  const values = type\n    .getValues()\n    .map(\n      (value, i) =>\n        printDescription(value, '  ', !i) +\n        '  ' +\n        value.name +\n        printDeprecated(value.deprecationReason),\n    );\n  return printDescription(type) + `enum ${type.name}` + printBlock(values);\n}\n\nfunction printInputObject(type) {\n  const fields = Object.values(type.getFields()).map(\n    (f, i) => printDescription(f, '  ', !i) + '  ' + printInputValue(f),\n  );\n  return (\n    printDescription(type) +\n    `input ${type.name}` +\n    (type.isOneOf ? ' @oneOf' : '') +\n    printBlock(fields)\n  );\n}\n\nfunction printFields(type) {\n  const fields = Object.values(type.getFields()).map(\n    (f, i) =>\n      printDescription(f, '  ', !i) +\n      '  ' +\n      f.name +\n      printArgs(f.args, '  ') +\n      ': ' +\n      String(f.type) +\n      printDeprecated(f.deprecationReason),\n  );\n  return printBlock(fields);\n}\n\nfunction printBlock(items) {\n  return items.length !== 0 ? ' {\\n' + items.join('\\n') + '\\n}' : '';\n}\n\nfunction printArgs(args, indentation = '') {\n  if (args.length === 0) {\n    return '';\n  } // If every arg does not have a description, print them on one line.\n\n  if (args.every((arg) => !arg.description)) {\n    return '(' + args.map(printInputValue).join(', ') + ')';\n  }\n\n  return (\n    '(\\n' +\n    args\n      .map(\n        (arg, i) =>\n          printDescription(arg, '  ' + indentation, !i) +\n          '  ' +\n          indentation +\n          printInputValue(arg),\n      )\n      .join('\\n') +\n    '\\n' +\n    indentation +\n    ')'\n  );\n}\n\nfunction printInputValue(arg) {\n  const defaultAST = (0, _astFromValue.astFromValue)(\n    arg.defaultValue,\n    arg.type,\n  );\n  let argDecl = arg.name + ': ' + String(arg.type);\n\n  if (defaultAST) {\n    argDecl += ` = ${(0, _printer.print)(defaultAST)}`;\n  }\n\n  return argDecl + printDeprecated(arg.deprecationReason);\n}\n\nfunction printDirective(directive) {\n  return (\n    printDescription(directive) +\n    'directive @' +\n    directive.name +\n    printArgs(directive.args) +\n    (directive.isRepeatable ? ' repeatable' : '') +\n    ' on ' +\n    directive.locations.join(' | ')\n  );\n}\n\nfunction printDeprecated(reason) {\n  if (reason == null) {\n    return '';\n  }\n\n  if (reason !== _directives.DEFAULT_DEPRECATION_REASON) {\n    const astValue = (0, _printer.print)({\n      kind: _kinds.Kind.STRING,\n      value: reason,\n    });\n    return ` @deprecated(reason: ${astValue})`;\n  }\n\n  return ' @deprecated';\n}\n\nfunction printSpecifiedByURL(scalar) {\n  if (scalar.specifiedByURL == null) {\n    return '';\n  }\n\n  const astValue = (0, _printer.print)({\n    kind: _kinds.Kind.STRING,\n    value: scalar.specifiedByURL,\n  });\n  return ` @specifiedBy(url: ${astValue})`;\n}\n\nfunction printDescription(def, indentation = '', firstInBlock = true) {\n  const { description } = def;\n\n  if (description == null) {\n    return '';\n  }\n\n  const blockString = (0, _printer.print)({\n    kind: _kinds.Kind.STRING,\n    value: description,\n    block: (0, _blockString.isPrintableAsBlockString)(description),\n  });\n  const prefix =\n    indentation && !firstInBlock ? '\\n' + indentation : indentation;\n  return prefix + blockString.replace(/\\n/g, '\\n' + indentation) + '\\n';\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.concatAST = concatAST;\n\nvar _kinds = require('../language/kinds.js');\n\n/**\n * Provided a collection of ASTs, presumably each from different files,\n * concatenate the ASTs together into batched AST, useful for validating many\n * GraphQL source files which together represent one conceptual application.\n */\nfunction concatAST(documents) {\n  const definitions = [];\n\n  for (const doc of documents) {\n    definitions.push(...doc.definitions);\n  }\n\n  return {\n    kind: _kinds.Kind.DOCUMENT,\n    definitions,\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.separateOperations = separateOperations;\n\nvar _kinds = require('../language/kinds.js');\n\nvar _visitor = require('../language/visitor.js');\n\n/**\n * separateOperations accepts a single AST document which may contain many\n * operations and fragments and returns a collection of AST documents each of\n * which contains a single operation as well the fragment definitions it\n * refers to.\n */\nfunction separateOperations(documentAST) {\n  const operations = [];\n  const depGraph = Object.create(null); // Populate metadata and build a dependency graph.\n\n  for (const definitionNode of documentAST.definitions) {\n    switch (definitionNode.kind) {\n      case _kinds.Kind.OPERATION_DEFINITION:\n        operations.push(definitionNode);\n        break;\n\n      case _kinds.Kind.FRAGMENT_DEFINITION:\n        depGraph[definitionNode.name.value] = collectDependencies(\n          definitionNode.selectionSet,\n        );\n        break;\n\n      default: // ignore non-executable definitions\n    }\n  } // For each operation, produce a new synthesized AST which includes only what\n  // is necessary for completing that operation.\n\n  const separatedDocumentASTs = Object.create(null);\n\n  for (const operation of operations) {\n    const dependencies = new Set();\n\n    for (const fragmentName of collectDependencies(operation.selectionSet)) {\n      collectTransitiveDependencies(dependencies, depGraph, fragmentName);\n    } // Provides the empty string for anonymous operations.\n\n    const operationName = operation.name ? operation.name.value : ''; // The list of definition nodes to be included for this operation, sorted\n    // to retain the same order as the original document.\n\n    separatedDocumentASTs[operationName] = {\n      kind: _kinds.Kind.DOCUMENT,\n      definitions: documentAST.definitions.filter(\n        (node) =>\n          node === operation ||\n          (node.kind === _kinds.Kind.FRAGMENT_DEFINITION &&\n            dependencies.has(node.name.value)),\n      ),\n    };\n  }\n\n  return separatedDocumentASTs;\n}\n\n// From a dependency graph, collects a list of transitive dependencies by\n// recursing through a dependency graph.\nfunction collectTransitiveDependencies(collected, depGraph, fromName) {\n  if (!collected.has(fromName)) {\n    collected.add(fromName);\n    const immediateDeps = depGraph[fromName];\n\n    if (immediateDeps !== undefined) {\n      for (const toName of immediateDeps) {\n        collectTransitiveDependencies(collected, depGraph, toName);\n      }\n    }\n  }\n}\n\nfunction collectDependencies(selectionSet) {\n  const dependencies = [];\n  (0, _visitor.visit)(selectionSet, {\n    FragmentSpread(node) {\n      dependencies.push(node.name.value);\n    },\n  });\n  return dependencies;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.stripIgnoredCharacters = stripIgnoredCharacters;\n\nvar _blockString = require('../language/blockString.js');\n\nvar _lexer = require('../language/lexer.js');\n\nvar _source = require('../language/source.js');\n\nvar _tokenKind = require('../language/tokenKind.js');\n\n/**\n * Strips characters that are not significant to the validity or execution\n * of a GraphQL document:\n *   - UnicodeBOM\n *   - WhiteSpace\n *   - LineTerminator\n *   - Comment\n *   - Comma\n *   - BlockString indentation\n *\n * Note: It is required to have a delimiter character between neighboring\n * non-punctuator tokens and this function always uses single space as delimiter.\n *\n * It is guaranteed that both input and output documents if parsed would result\n * in the exact same AST except for nodes location.\n *\n * Warning: It is guaranteed that this function will always produce stable results.\n * However, it's not guaranteed that it will stay the same between different\n * releases due to bugfixes or changes in the GraphQL specification.\n *\n * Query example:\n *\n * ```graphql\n * query SomeQuery($foo: String!, $bar: String) {\n *   someField(foo: $foo, bar: $bar) {\n *     a\n *     b {\n *       c\n *       d\n *     }\n *   }\n * }\n * ```\n *\n * Becomes:\n *\n * ```graphql\n * query SomeQuery($foo:String!$bar:String){someField(foo:$foo bar:$bar){a b{c d}}}\n * ```\n *\n * SDL example:\n *\n * ```graphql\n * \"\"\"\n * Type description\n * \"\"\"\n * type Foo {\n *   \"\"\"\n *   Field description\n *   \"\"\"\n *   bar: String\n * }\n * ```\n *\n * Becomes:\n *\n * ```graphql\n * \"\"\"Type description\"\"\" type Foo{\"\"\"Field description\"\"\" bar:String}\n * ```\n */\nfunction stripIgnoredCharacters(source) {\n  const sourceObj = (0, _source.isSource)(source)\n    ? source\n    : new _source.Source(source);\n  const body = sourceObj.body;\n  const lexer = new _lexer.Lexer(sourceObj);\n  let strippedBody = '';\n  let wasLastAddedTokenNonPunctuator = false;\n\n  while (lexer.advance().kind !== _tokenKind.TokenKind.EOF) {\n    const currentToken = lexer.token;\n    const tokenKind = currentToken.kind;\n    /**\n     * Every two non-punctuator tokens should have space between them.\n     * Also prevent case of non-punctuator token following by spread resulting\n     * in invalid token (e.g. `1...` is invalid Float token).\n     */\n\n    const isNonPunctuator = !(0, _lexer.isPunctuatorTokenKind)(\n      currentToken.kind,\n    );\n\n    if (wasLastAddedTokenNonPunctuator) {\n      if (\n        isNonPunctuator ||\n        currentToken.kind === _tokenKind.TokenKind.SPREAD\n      ) {\n        strippedBody += ' ';\n      }\n    }\n\n    const tokenBody = body.slice(currentToken.start, currentToken.end);\n\n    if (tokenKind === _tokenKind.TokenKind.BLOCK_STRING) {\n      strippedBody += (0, _blockString.printBlockString)(currentToken.value, {\n        minimize: true,\n      });\n    } else {\n      strippedBody += tokenBody;\n    }\n\n    wasLastAddedTokenNonPunctuator = isNonPunctuator;\n  }\n\n  return strippedBody;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.assertValidName = assertValidName;\nexports.isValidNameError = isValidNameError;\n\nvar _devAssert = require('../jsutils/devAssert.js');\n\nvar _GraphQLError = require('../error/GraphQLError.js');\n\nvar _assertName = require('../type/assertName.js');\n\n/* c8 ignore start */\n\n/**\n * Upholds the spec rules about naming.\n * @deprecated Please use `assertName` instead. Will be removed in v17\n */\nfunction assertValidName(name) {\n  const error = isValidNameError(name);\n\n  if (error) {\n    throw error;\n  }\n\n  return name;\n}\n/**\n * Returns an Error if a name is invalid.\n * @deprecated Please use `assertName` instead. Will be removed in v17\n */\n\nfunction isValidNameError(name) {\n  typeof name === 'string' ||\n    (0, _devAssert.devAssert)(false, 'Expected name to be a string.');\n\n  if (name.startsWith('__')) {\n    return new _GraphQLError.GraphQLError(\n      `Name \"${name}\" must not begin with \"__\", which is reserved by GraphQL introspection.`,\n    );\n  }\n\n  try {\n    (0, _assertName.assertName)(name);\n  } catch (error) {\n    return error;\n  }\n}\n/* c8 ignore stop */\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.DangerousChangeType = exports.BreakingChangeType = void 0;\nexports.findBreakingChanges = findBreakingChanges;\nexports.findDangerousChanges = findDangerousChanges;\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _invariant = require('../jsutils/invariant.js');\n\nvar _keyMap = require('../jsutils/keyMap.js');\n\nvar _printer = require('../language/printer.js');\n\nvar _definition = require('../type/definition.js');\n\nvar _scalars = require('../type/scalars.js');\n\nvar _astFromValue = require('./astFromValue.js');\n\nvar _sortValueNode = require('./sortValueNode.js');\n\nvar BreakingChangeType;\nexports.BreakingChangeType = BreakingChangeType;\n\n(function (BreakingChangeType) {\n  BreakingChangeType['TYPE_REMOVED'] = 'TYPE_REMOVED';\n  BreakingChangeType['TYPE_CHANGED_KIND'] = 'TYPE_CHANGED_KIND';\n  BreakingChangeType['TYPE_REMOVED_FROM_UNION'] = 'TYPE_REMOVED_FROM_UNION';\n  BreakingChangeType['VALUE_REMOVED_FROM_ENUM'] = 'VALUE_REMOVED_FROM_ENUM';\n  BreakingChangeType['REQUIRED_INPUT_FIELD_ADDED'] =\n    'REQUIRED_INPUT_FIELD_ADDED';\n  BreakingChangeType['IMPLEMENTED_INTERFACE_REMOVED'] =\n    'IMPLEMENTED_INTERFACE_REMOVED';\n  BreakingChangeType['FIELD_REMOVED'] = 'FIELD_REMOVED';\n  BreakingChangeType['FIELD_CHANGED_KIND'] = 'FIELD_CHANGED_KIND';\n  BreakingChangeType['REQUIRED_ARG_ADDED'] = 'REQUIRED_ARG_ADDED';\n  BreakingChangeType['ARG_REMOVED'] = 'ARG_REMOVED';\n  BreakingChangeType['ARG_CHANGED_KIND'] = 'ARG_CHANGED_KIND';\n  BreakingChangeType['DIRECTIVE_REMOVED'] = 'DIRECTIVE_REMOVED';\n  BreakingChangeType['DIRECTIVE_ARG_REMOVED'] = 'DIRECTIVE_ARG_REMOVED';\n  BreakingChangeType['REQUIRED_DIRECTIVE_ARG_ADDED'] =\n    'REQUIRED_DIRECTIVE_ARG_ADDED';\n  BreakingChangeType['DIRECTIVE_REPEATABLE_REMOVED'] =\n    'DIRECTIVE_REPEATABLE_REMOVED';\n  BreakingChangeType['DIRECTIVE_LOCATION_REMOVED'] =\n    'DIRECTIVE_LOCATION_REMOVED';\n})(\n  BreakingChangeType || (exports.BreakingChangeType = BreakingChangeType = {}),\n);\n\nvar DangerousChangeType;\nexports.DangerousChangeType = DangerousChangeType;\n\n(function (DangerousChangeType) {\n  DangerousChangeType['VALUE_ADDED_TO_ENUM'] = 'VALUE_ADDED_TO_ENUM';\n  DangerousChangeType['TYPE_ADDED_TO_UNION'] = 'TYPE_ADDED_TO_UNION';\n  DangerousChangeType['OPTIONAL_INPUT_FIELD_ADDED'] =\n    'OPTIONAL_INPUT_FIELD_ADDED';\n  DangerousChangeType['OPTIONAL_ARG_ADDED'] = 'OPTIONAL_ARG_ADDED';\n  DangerousChangeType['IMPLEMENTED_INTERFACE_ADDED'] =\n    'IMPLEMENTED_INTERFACE_ADDED';\n  DangerousChangeType['ARG_DEFAULT_VALUE_CHANGE'] = 'ARG_DEFAULT_VALUE_CHANGE';\n})(\n  DangerousChangeType ||\n    (exports.DangerousChangeType = DangerousChangeType = {}),\n);\n\n/**\n * Given two schemas, returns an Array containing descriptions of all the types\n * of breaking changes covered by the other functions down below.\n */\nfunction findBreakingChanges(oldSchema, newSchema) {\n  // @ts-expect-error\n  return findSchemaChanges(oldSchema, newSchema).filter(\n    (change) => change.type in BreakingChangeType,\n  );\n}\n/**\n * Given two schemas, returns an Array containing descriptions of all the types\n * of potentially dangerous changes covered by the other functions down below.\n */\n\nfunction findDangerousChanges(oldSchema, newSchema) {\n  // @ts-expect-error\n  return findSchemaChanges(oldSchema, newSchema).filter(\n    (change) => change.type in DangerousChangeType,\n  );\n}\n\nfunction findSchemaChanges(oldSchema, newSchema) {\n  return [\n    ...findTypeChanges(oldSchema, newSchema),\n    ...findDirectiveChanges(oldSchema, newSchema),\n  ];\n}\n\nfunction findDirectiveChanges(oldSchema, newSchema) {\n  const schemaChanges = [];\n  const directivesDiff = diff(\n    oldSchema.getDirectives(),\n    newSchema.getDirectives(),\n  );\n\n  for (const oldDirective of directivesDiff.removed) {\n    schemaChanges.push({\n      type: BreakingChangeType.DIRECTIVE_REMOVED,\n      description: `${oldDirective.name} was removed.`,\n    });\n  }\n\n  for (const [oldDirective, newDirective] of directivesDiff.persisted) {\n    const argsDiff = diff(oldDirective.args, newDirective.args);\n\n    for (const newArg of argsDiff.added) {\n      if ((0, _definition.isRequiredArgument)(newArg)) {\n        schemaChanges.push({\n          type: BreakingChangeType.REQUIRED_DIRECTIVE_ARG_ADDED,\n          description: `A required arg ${newArg.name} on directive ${oldDirective.name} was added.`,\n        });\n      }\n    }\n\n    for (const oldArg of argsDiff.removed) {\n      schemaChanges.push({\n        type: BreakingChangeType.DIRECTIVE_ARG_REMOVED,\n        description: `${oldArg.name} was removed from ${oldDirective.name}.`,\n      });\n    }\n\n    if (oldDirective.isRepeatable && !newDirective.isRepeatable) {\n      schemaChanges.push({\n        type: BreakingChangeType.DIRECTIVE_REPEATABLE_REMOVED,\n        description: `Repeatable flag was removed from ${oldDirective.name}.`,\n      });\n    }\n\n    for (const location of oldDirective.locations) {\n      if (!newDirective.locations.includes(location)) {\n        schemaChanges.push({\n          type: BreakingChangeType.DIRECTIVE_LOCATION_REMOVED,\n          description: `${location} was removed from ${oldDirective.name}.`,\n        });\n      }\n    }\n  }\n\n  return schemaChanges;\n}\n\nfunction findTypeChanges(oldSchema, newSchema) {\n  const schemaChanges = [];\n  const typesDiff = diff(\n    Object.values(oldSchema.getTypeMap()),\n    Object.values(newSchema.getTypeMap()),\n  );\n\n  for (const oldType of typesDiff.removed) {\n    schemaChanges.push({\n      type: BreakingChangeType.TYPE_REMOVED,\n      description: (0, _scalars.isSpecifiedScalarType)(oldType)\n        ? `Standard scalar ${oldType.name} was removed because it is not referenced anymore.`\n        : `${oldType.name} was removed.`,\n    });\n  }\n\n  for (const [oldType, newType] of typesDiff.persisted) {\n    if (\n      (0, _definition.isEnumType)(oldType) &&\n      (0, _definition.isEnumType)(newType)\n    ) {\n      schemaChanges.push(...findEnumTypeChanges(oldType, newType));\n    } else if (\n      (0, _definition.isUnionType)(oldType) &&\n      (0, _definition.isUnionType)(newType)\n    ) {\n      schemaChanges.push(...findUnionTypeChanges(oldType, newType));\n    } else if (\n      (0, _definition.isInputObjectType)(oldType) &&\n      (0, _definition.isInputObjectType)(newType)\n    ) {\n      schemaChanges.push(...findInputObjectTypeChanges(oldType, newType));\n    } else if (\n      (0, _definition.isObjectType)(oldType) &&\n      (0, _definition.isObjectType)(newType)\n    ) {\n      schemaChanges.push(\n        ...findFieldChanges(oldType, newType),\n        ...findImplementedInterfacesChanges(oldType, newType),\n      );\n    } else if (\n      (0, _definition.isInterfaceType)(oldType) &&\n      (0, _definition.isInterfaceType)(newType)\n    ) {\n      schemaChanges.push(\n        ...findFieldChanges(oldType, newType),\n        ...findImplementedInterfacesChanges(oldType, newType),\n      );\n    } else if (oldType.constructor !== newType.constructor) {\n      schemaChanges.push({\n        type: BreakingChangeType.TYPE_CHANGED_KIND,\n        description:\n          `${oldType.name} changed from ` +\n          `${typeKindName(oldType)} to ${typeKindName(newType)}.`,\n      });\n    }\n  }\n\n  return schemaChanges;\n}\n\nfunction findInputObjectTypeChanges(oldType, newType) {\n  const schemaChanges = [];\n  const fieldsDiff = diff(\n    Object.values(oldType.getFields()),\n    Object.values(newType.getFields()),\n  );\n\n  for (const newField of fieldsDiff.added) {\n    if ((0, _definition.isRequiredInputField)(newField)) {\n      schemaChanges.push({\n        type: BreakingChangeType.REQUIRED_INPUT_FIELD_ADDED,\n        description: `A required field ${newField.name} on input type ${oldType.name} was added.`,\n      });\n    } else {\n      schemaChanges.push({\n        type: DangerousChangeType.OPTIONAL_INPUT_FIELD_ADDED,\n        description: `An optional field ${newField.name} on input type ${oldType.name} was added.`,\n      });\n    }\n  }\n\n  for (const oldField of fieldsDiff.removed) {\n    schemaChanges.push({\n      type: BreakingChangeType.FIELD_REMOVED,\n      description: `${oldType.name}.${oldField.name} was removed.`,\n    });\n  }\n\n  for (const [oldField, newField] of fieldsDiff.persisted) {\n    const isSafe = isChangeSafeForInputObjectFieldOrFieldArg(\n      oldField.type,\n      newField.type,\n    );\n\n    if (!isSafe) {\n      schemaChanges.push({\n        type: BreakingChangeType.FIELD_CHANGED_KIND,\n        description:\n          `${oldType.name}.${oldField.name} changed type from ` +\n          `${String(oldField.type)} to ${String(newField.type)}.`,\n      });\n    }\n  }\n\n  return schemaChanges;\n}\n\nfunction findUnionTypeChanges(oldType, newType) {\n  const schemaChanges = [];\n  const possibleTypesDiff = diff(oldType.getTypes(), newType.getTypes());\n\n  for (const newPossibleType of possibleTypesDiff.added) {\n    schemaChanges.push({\n      type: DangerousChangeType.TYPE_ADDED_TO_UNION,\n      description: `${newPossibleType.name} was added to union type ${oldType.name}.`,\n    });\n  }\n\n  for (const oldPossibleType of possibleTypesDiff.removed) {\n    schemaChanges.push({\n      type: BreakingChangeType.TYPE_REMOVED_FROM_UNION,\n      description: `${oldPossibleType.name} was removed from union type ${oldType.name}.`,\n    });\n  }\n\n  return schemaChanges;\n}\n\nfunction findEnumTypeChanges(oldType, newType) {\n  const schemaChanges = [];\n  const valuesDiff = diff(oldType.getValues(), newType.getValues());\n\n  for (const newValue of valuesDiff.added) {\n    schemaChanges.push({\n      type: DangerousChangeType.VALUE_ADDED_TO_ENUM,\n      description: `${newValue.name} was added to enum type ${oldType.name}.`,\n    });\n  }\n\n  for (const oldValue of valuesDiff.removed) {\n    schemaChanges.push({\n      type: BreakingChangeType.VALUE_REMOVED_FROM_ENUM,\n      description: `${oldValue.name} was removed from enum type ${oldType.name}.`,\n    });\n  }\n\n  return schemaChanges;\n}\n\nfunction findImplementedInterfacesChanges(oldType, newType) {\n  const schemaChanges = [];\n  const interfacesDiff = diff(oldType.getInterfaces(), newType.getInterfaces());\n\n  for (const newInterface of interfacesDiff.added) {\n    schemaChanges.push({\n      type: DangerousChangeType.IMPLEMENTED_INTERFACE_ADDED,\n      description: `${newInterface.name} added to interfaces implemented by ${oldType.name}.`,\n    });\n  }\n\n  for (const oldInterface of interfacesDiff.removed) {\n    schemaChanges.push({\n      type: BreakingChangeType.IMPLEMENTED_INTERFACE_REMOVED,\n      description: `${oldType.name} no longer implements interface ${oldInterface.name}.`,\n    });\n  }\n\n  return schemaChanges;\n}\n\nfunction findFieldChanges(oldType, newType) {\n  const schemaChanges = [];\n  const fieldsDiff = diff(\n    Object.values(oldType.getFields()),\n    Object.values(newType.getFields()),\n  );\n\n  for (const oldField of fieldsDiff.removed) {\n    schemaChanges.push({\n      type: BreakingChangeType.FIELD_REMOVED,\n      description: `${oldType.name}.${oldField.name} was removed.`,\n    });\n  }\n\n  for (const [oldField, newField] of fieldsDiff.persisted) {\n    schemaChanges.push(...findArgChanges(oldType, oldField, newField));\n    const isSafe = isChangeSafeForObjectOrInterfaceField(\n      oldField.type,\n      newField.type,\n    );\n\n    if (!isSafe) {\n      schemaChanges.push({\n        type: BreakingChangeType.FIELD_CHANGED_KIND,\n        description:\n          `${oldType.name}.${oldField.name} changed type from ` +\n          `${String(oldField.type)} to ${String(newField.type)}.`,\n      });\n    }\n  }\n\n  return schemaChanges;\n}\n\nfunction findArgChanges(oldType, oldField, newField) {\n  const schemaChanges = [];\n  const argsDiff = diff(oldField.args, newField.args);\n\n  for (const oldArg of argsDiff.removed) {\n    schemaChanges.push({\n      type: BreakingChangeType.ARG_REMOVED,\n      description: `${oldType.name}.${oldField.name} arg ${oldArg.name} was removed.`,\n    });\n  }\n\n  for (const [oldArg, newArg] of argsDiff.persisted) {\n    const isSafe = isChangeSafeForInputObjectFieldOrFieldArg(\n      oldArg.type,\n      newArg.type,\n    );\n\n    if (!isSafe) {\n      schemaChanges.push({\n        type: BreakingChangeType.ARG_CHANGED_KIND,\n        description:\n          `${oldType.name}.${oldField.name} arg ${oldArg.name} has changed type from ` +\n          `${String(oldArg.type)} to ${String(newArg.type)}.`,\n      });\n    } else if (oldArg.defaultValue !== undefined) {\n      if (newArg.defaultValue === undefined) {\n        schemaChanges.push({\n          type: DangerousChangeType.ARG_DEFAULT_VALUE_CHANGE,\n          description: `${oldType.name}.${oldField.name} arg ${oldArg.name} defaultValue was removed.`,\n        });\n      } else {\n        // Since we looking only for client's observable changes we should\n        // compare default values in the same representation as they are\n        // represented inside introspection.\n        const oldValueStr = stringifyValue(oldArg.defaultValue, oldArg.type);\n        const newValueStr = stringifyValue(newArg.defaultValue, newArg.type);\n\n        if (oldValueStr !== newValueStr) {\n          schemaChanges.push({\n            type: DangerousChangeType.ARG_DEFAULT_VALUE_CHANGE,\n            description: `${oldType.name}.${oldField.name} arg ${oldArg.name} has changed defaultValue from ${oldValueStr} to ${newValueStr}.`,\n          });\n        }\n      }\n    }\n  }\n\n  for (const newArg of argsDiff.added) {\n    if ((0, _definition.isRequiredArgument)(newArg)) {\n      schemaChanges.push({\n        type: BreakingChangeType.REQUIRED_ARG_ADDED,\n        description: `A required arg ${newArg.name} on ${oldType.name}.${oldField.name} was added.`,\n      });\n    } else {\n      schemaChanges.push({\n        type: DangerousChangeType.OPTIONAL_ARG_ADDED,\n        description: `An optional arg ${newArg.name} on ${oldType.name}.${oldField.name} was added.`,\n      });\n    }\n  }\n\n  return schemaChanges;\n}\n\nfunction isChangeSafeForObjectOrInterfaceField(oldType, newType) {\n  if ((0, _definition.isListType)(oldType)) {\n    return (\n      // if they're both lists, make sure the underlying types are compatible\n      ((0, _definition.isListType)(newType) &&\n        isChangeSafeForObjectOrInterfaceField(\n          oldType.ofType,\n          newType.ofType,\n        )) || // moving from nullable to non-null of the same underlying type is safe\n      ((0, _definition.isNonNullType)(newType) &&\n        isChangeSafeForObjectOrInterfaceField(oldType, newType.ofType))\n    );\n  }\n\n  if ((0, _definition.isNonNullType)(oldType)) {\n    // if they're both non-null, make sure the underlying types are compatible\n    return (\n      (0, _definition.isNonNullType)(newType) &&\n      isChangeSafeForObjectOrInterfaceField(oldType.ofType, newType.ofType)\n    );\n  }\n\n  return (\n    // if they're both named types, see if their names are equivalent\n    ((0, _definition.isNamedType)(newType) && oldType.name === newType.name) || // moving from nullable to non-null of the same underlying type is safe\n    ((0, _definition.isNonNullType)(newType) &&\n      isChangeSafeForObjectOrInterfaceField(oldType, newType.ofType))\n  );\n}\n\nfunction isChangeSafeForInputObjectFieldOrFieldArg(oldType, newType) {\n  if ((0, _definition.isListType)(oldType)) {\n    // if they're both lists, make sure the underlying types are compatible\n    return (\n      (0, _definition.isListType)(newType) &&\n      isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType.ofType)\n    );\n  }\n\n  if ((0, _definition.isNonNullType)(oldType)) {\n    return (\n      // if they're both non-null, make sure the underlying types are\n      // compatible\n      ((0, _definition.isNonNullType)(newType) &&\n        isChangeSafeForInputObjectFieldOrFieldArg(\n          oldType.ofType,\n          newType.ofType,\n        )) || // moving from non-null to nullable of the same underlying type is safe\n      (!(0, _definition.isNonNullType)(newType) &&\n        isChangeSafeForInputObjectFieldOrFieldArg(oldType.ofType, newType))\n    );\n  } // if they're both named types, see if their names are equivalent\n\n  return (0, _definition.isNamedType)(newType) && oldType.name === newType.name;\n}\n\nfunction typeKindName(type) {\n  if ((0, _definition.isScalarType)(type)) {\n    return 'a Scalar type';\n  }\n\n  if ((0, _definition.isObjectType)(type)) {\n    return 'an Object type';\n  }\n\n  if ((0, _definition.isInterfaceType)(type)) {\n    return 'an Interface type';\n  }\n\n  if ((0, _definition.isUnionType)(type)) {\n    return 'a Union type';\n  }\n\n  if ((0, _definition.isEnumType)(type)) {\n    return 'an Enum type';\n  }\n\n  if ((0, _definition.isInputObjectType)(type)) {\n    return 'an Input type';\n  }\n  /* c8 ignore next 3 */\n  // Not reachable, all possible types have been considered.\n\n  false ||\n    (0, _invariant.invariant)(\n      false,\n      'Unexpected type: ' + (0, _inspect.inspect)(type),\n    );\n}\n\nfunction stringifyValue(value, type) {\n  const ast = (0, _astFromValue.astFromValue)(value, type);\n  ast != null || (0, _invariant.invariant)(false);\n  return (0, _printer.print)((0, _sortValueNode.sortValueNode)(ast));\n}\n\nfunction diff(oldArray, newArray) {\n  const added = [];\n  const removed = [];\n  const persisted = [];\n  const oldMap = (0, _keyMap.keyMap)(oldArray, ({ name }) => name);\n  const newMap = (0, _keyMap.keyMap)(newArray, ({ name }) => name);\n\n  for (const oldItem of oldArray) {\n    const newItem = newMap[oldItem.name];\n\n    if (newItem === undefined) {\n      removed.push(oldItem);\n    } else {\n      persisted.push([oldItem, newItem]);\n    }\n  }\n\n  for (const newItem of newArray) {\n    if (oldMap[newItem.name] === undefined) {\n      added.push(newItem);\n    }\n  }\n\n  return {\n    added,\n    persisted,\n    removed,\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nexports.resolveASTSchemaCoordinate = resolveASTSchemaCoordinate;\nexports.resolveSchemaCoordinate = resolveSchemaCoordinate;\n\nvar _inspect = require('../jsutils/inspect.js');\n\nvar _kinds = require('../language/kinds.js');\n\nvar _parser = require('../language/parser.js');\n\nvar _definition = require('../type/definition.js');\n\n/**\n * A schema coordinate is resolved in the context of a GraphQL schema to\n * uniquely identify a schema element. It returns undefined if the schema\n * coordinate does not resolve to a schema element, meta-field, or introspection\n * schema element. It will throw if the containing schema element (if\n * applicable) does not exist.\n *\n * https://spec.graphql.org/draft/#sec-Schema-Coordinates.Semantics\n */\nfunction resolveSchemaCoordinate(schema, schemaCoordinate) {\n  return resolveASTSchemaCoordinate(\n    schema,\n    (0, _parser.parseSchemaCoordinate)(schemaCoordinate),\n  );\n}\n/**\n * TypeCoordinate : Name\n */\n\nfunction resolveTypeCoordinate(schema, schemaCoordinate) {\n  // 1. Let {typeName} be the value of {Name}.\n  const typeName = schemaCoordinate.name.value;\n  const type = schema.getType(typeName); // 2. Return the type in the {schema} named {typeName} if it exists.\n\n  if (type == null) {\n    return;\n  }\n\n  return {\n    kind: 'NamedType',\n    type,\n  };\n}\n/**\n * MemberCoordinate : Name . Name\n */\n\nfunction resolveMemberCoordinate(schema, schemaCoordinate) {\n  // 1. Let {typeName} be the value of the first {Name}.\n  // 2. Let {type} be the type in the {schema} named {typeName}.\n  const typeName = schemaCoordinate.name.value;\n  const type = schema.getType(typeName); // 3. Assert: {type} must exist, and must be an Enum, Input Object, Object or Interface type.\n\n  if (!type) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(\n        typeName,\n      )} to be defined as a type in the schema.`,\n    );\n  }\n\n  if (\n    !(0, _definition.isEnumType)(type) &&\n    !(0, _definition.isInputObjectType)(type) &&\n    !(0, _definition.isObjectType)(type) &&\n    !(0, _definition.isInterfaceType)(type)\n  ) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(\n        typeName,\n      )} to be an Enum, Input Object, Object or Interface type.`,\n    );\n  } // 4. If {type} is an Enum type:\n\n  if ((0, _definition.isEnumType)(type)) {\n    // 1. Let {enumValueName} be the value of the second {Name}.\n    const enumValueName = schemaCoordinate.memberName.value;\n    const enumValue = type.getValue(enumValueName); // 2. Return the enum value of {type} named {enumValueName} if it exists.\n\n    if (enumValue == null) {\n      return;\n    }\n\n    return {\n      kind: 'EnumValue',\n      type,\n      enumValue,\n    };\n  } // 5. Otherwise, if {type} is an Input Object type:\n\n  if ((0, _definition.isInputObjectType)(type)) {\n    // 1. Let {inputFieldName} be the value of the second {Name}.\n    const inputFieldName = schemaCoordinate.memberName.value;\n    const inputField = type.getFields()[inputFieldName]; // 2. Return the input field of {type} named {inputFieldName} if it exists.\n\n    if (inputField == null) {\n      return;\n    }\n\n    return {\n      kind: 'InputField',\n      type,\n      inputField,\n    };\n  } // 6. Otherwise:\n  // 1. Let {fieldName} be the value of the second {Name}.\n\n  const fieldName = schemaCoordinate.memberName.value;\n  const field = type.getFields()[fieldName]; // 2. Return the field of {type} named {fieldName} if it exists.\n\n  if (field == null) {\n    return;\n  }\n\n  return {\n    kind: 'Field',\n    type,\n    field,\n  };\n}\n/**\n * ArgumentCoordinate : Name . Name ( Name : )\n */\n\nfunction resolveArgumentCoordinate(schema, schemaCoordinate) {\n  // 1. Let {typeName} be the value of the first {Name}.\n  // 2. Let {type} be the type in the {schema} named {typeName}.\n  const typeName = schemaCoordinate.name.value;\n  const type = schema.getType(typeName); // 3. Assert: {type} must exist, and be an Object or Interface type.\n\n  if (type == null) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(\n        typeName,\n      )} to be defined as a type in the schema.`,\n    );\n  }\n\n  if (\n    !(0, _definition.isObjectType)(type) &&\n    !(0, _definition.isInterfaceType)(type)\n  ) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(\n        typeName,\n      )} to be an object type or interface type.`,\n    );\n  } // 4. Let {fieldName} be the value of the second {Name}.\n  // 5. Let {field} be the field of {type} named {fieldName}.\n\n  const fieldName = schemaCoordinate.fieldName.value;\n  const field = type.getFields()[fieldName]; // 7. Assert: {field} must exist.\n\n  if (field == null) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(\n        fieldName,\n      )} to exist as a field of type ${(0, _inspect.inspect)(\n        typeName,\n      )} in the schema.`,\n    );\n  } // 7. Let {fieldArgumentName} be the value of the third {Name}.\n\n  const fieldArgumentName = schemaCoordinate.argumentName.value;\n  const fieldArgument = field.args.find(\n    (arg) => arg.name === fieldArgumentName,\n  ); // 8. Return the argument of {field} named {fieldArgumentName} if it exists.\n\n  if (fieldArgument == null) {\n    return;\n  }\n\n  return {\n    kind: 'FieldArgument',\n    type,\n    field,\n    fieldArgument,\n  };\n}\n/**\n * DirectiveCoordinate : \\@ Name\n */\n\nfunction resolveDirectiveCoordinate(schema, schemaCoordinate) {\n  // 1. Let {directiveName} be the value of {Name}.\n  const directiveName = schemaCoordinate.name.value;\n  const directive = schema.getDirective(directiveName); // 2. Return the directive in the {schema} named {directiveName} if it exists.\n\n  if (!directive) {\n    return;\n  }\n\n  return {\n    kind: 'Directive',\n    directive,\n  };\n}\n/**\n * DirectiveArgumentCoordinate : \\@ Name ( Name : )\n */\n\nfunction resolveDirectiveArgumentCoordinate(schema, schemaCoordinate) {\n  // 1. Let {directiveName} be the value of the first {Name}.\n  // 2. Let {directive} be the directive in the {schema} named {directiveName}.\n  const directiveName = schemaCoordinate.name.value;\n  const directive = schema.getDirective(directiveName); // 3. Assert {directive} must exist.\n\n  if (!directive) {\n    throw new Error(\n      `Expected ${(0, _inspect.inspect)(\n        directiveName,\n      )} to be defined as a directive in the schema.`,\n    );\n  } // 4. Let {directiveArgumentName} be the value of the second {Name}.\n\n  const {\n    argumentName: { value: directiveArgumentName },\n  } = schemaCoordinate;\n  const directiveArgument = directive.args.find(\n    (arg) => arg.name === directiveArgumentName,\n  ); // 5. Return the argument of {directive} named {directiveArgumentName} if it exists.\n\n  if (!directiveArgument) {\n    return;\n  }\n\n  return {\n    kind: 'DirectiveArgument',\n    directive,\n    directiveArgument,\n  };\n}\n/**\n * Resolves schema coordinate from a parsed SchemaCoordinate node.\n */\n\nfunction resolveASTSchemaCoordinate(schema, schemaCoordinate) {\n  switch (schemaCoordinate.kind) {\n    case _kinds.Kind.TYPE_COORDINATE:\n      return resolveTypeCoordinate(schema, schemaCoordinate);\n\n    case _kinds.Kind.MEMBER_COORDINATE:\n      return resolveMemberCoordinate(schema, schemaCoordinate);\n\n    case _kinds.Kind.ARGUMENT_COORDINATE:\n      return resolveArgumentCoordinate(schema, schemaCoordinate);\n\n    case _kinds.Kind.DIRECTIVE_COORDINATE:\n      return resolveDirectiveCoordinate(schema, schemaCoordinate);\n\n    case _kinds.Kind.DIRECTIVE_ARGUMENT_COORDINATE:\n      return resolveDirectiveArgumentCoordinate(schema, schemaCoordinate);\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nObject.defineProperty(exports, 'BreakingChangeType', {\n  enumerable: true,\n  get: function () {\n    return _findBreakingChanges.BreakingChangeType;\n  },\n});\nObject.defineProperty(exports, 'DangerousChangeType', {\n  enumerable: true,\n  get: function () {\n    return _findBreakingChanges.DangerousChangeType;\n  },\n});\nObject.defineProperty(exports, 'TypeInfo', {\n  enumerable: true,\n  get: function () {\n    return _TypeInfo.TypeInfo;\n  },\n});\nObject.defineProperty(exports, 'assertValidName', {\n  enumerable: true,\n  get: function () {\n    return _assertValidName.assertValidName;\n  },\n});\nObject.defineProperty(exports, 'astFromValue', {\n  enumerable: true,\n  get: function () {\n    return _astFromValue.astFromValue;\n  },\n});\nObject.defineProperty(exports, 'buildASTSchema', {\n  enumerable: true,\n  get: function () {\n    return _buildASTSchema.buildASTSchema;\n  },\n});\nObject.defineProperty(exports, 'buildClientSchema', {\n  enumerable: true,\n  get: function () {\n    return _buildClientSchema.buildClientSchema;\n  },\n});\nObject.defineProperty(exports, 'buildSchema', {\n  enumerable: true,\n  get: function () {\n    return _buildASTSchema.buildSchema;\n  },\n});\nObject.defineProperty(exports, 'coerceInputValue', {\n  enumerable: true,\n  get: function () {\n    return _coerceInputValue.coerceInputValue;\n  },\n});\nObject.defineProperty(exports, 'concatAST', {\n  enumerable: true,\n  get: function () {\n    return _concatAST.concatAST;\n  },\n});\nObject.defineProperty(exports, 'doTypesOverlap', {\n  enumerable: true,\n  get: function () {\n    return _typeComparators.doTypesOverlap;\n  },\n});\nObject.defineProperty(exports, 'extendSchema', {\n  enumerable: true,\n  get: function () {\n    return _extendSchema.extendSchema;\n  },\n});\nObject.defineProperty(exports, 'findBreakingChanges', {\n  enumerable: true,\n  get: function () {\n    return _findBreakingChanges.findBreakingChanges;\n  },\n});\nObject.defineProperty(exports, 'findDangerousChanges', {\n  enumerable: true,\n  get: function () {\n    return _findBreakingChanges.findDangerousChanges;\n  },\n});\nObject.defineProperty(exports, 'getIntrospectionQuery', {\n  enumerable: true,\n  get: function () {\n    return _getIntrospectionQuery.getIntrospectionQuery;\n  },\n});\nObject.defineProperty(exports, 'getOperationAST', {\n  enumerable: true,\n  get: function () {\n    return _getOperationAST.getOperationAST;\n  },\n});\nObject.defineProperty(exports, 'getOperationRootType', {\n  enumerable: true,\n  get: function () {\n    return _getOperationRootType.getOperationRootType;\n  },\n});\nObject.defineProperty(exports, 'introspectionFromSchema', {\n  enumerable: true,\n  get: function () {\n    return _introspectionFromSchema.introspectionFromSchema;\n  },\n});\nObject.defineProperty(exports, 'isEqualType', {\n  enumerable: true,\n  get: function () {\n    return _typeComparators.isEqualType;\n  },\n});\nObject.defineProperty(exports, 'isTypeSubTypeOf', {\n  enumerable: true,\n  get: function () {\n    return _typeComparators.isTypeSubTypeOf;\n  },\n});\nObject.defineProperty(exports, 'isValidNameError', {\n  enumerable: true,\n  get: function () {\n    return _assertValidName.isValidNameError;\n  },\n});\nObject.defineProperty(exports, 'lexicographicSortSchema', {\n  enumerable: true,\n  get: function () {\n    return _lexicographicSortSchema.lexicographicSortSchema;\n  },\n});\nObject.defineProperty(exports, 'printIntrospectionSchema', {\n  enumerable: true,\n  get: function () {\n    return _printSchema.printIntrospectionSchema;\n  },\n});\nObject.defineProperty(exports, 'printSchema', {\n  enumerable: true,\n  get: function () {\n    return _printSchema.printSchema;\n  },\n});\nObject.defineProperty(exports, 'printType', {\n  enumerable: true,\n  get: function () {\n    return _printSchema.printType;\n  },\n});\nObject.defineProperty(exports, 'resolveASTSchemaCoordinate', {\n  enumerable: true,\n  get: function () {\n    return _resolveSchemaCoordinate.resolveASTSchemaCoordinate;\n  },\n});\nObject.defineProperty(exports, 'resolveSchemaCoordinate', {\n  enumerable: true,\n  get: function () {\n    return _resolveSchemaCoordinate.resolveSchemaCoordinate;\n  },\n});\nObject.defineProperty(exports, 'separateOperations', {\n  enumerable: true,\n  get: function () {\n    return _separateOperations.separateOperations;\n  },\n});\nObject.defineProperty(exports, 'stripIgnoredCharacters', {\n  enumerable: true,\n  get: function () {\n    return _stripIgnoredCharacters.stripIgnoredCharacters;\n  },\n});\nObject.defineProperty(exports, 'typeFromAST', {\n  enumerable: true,\n  get: function () {\n    return _typeFromAST.typeFromAST;\n  },\n});\nObject.defineProperty(exports, 'valueFromAST', {\n  enumerable: true,\n  get: function () {\n    return _valueFromAST.valueFromAST;\n  },\n});\nObject.defineProperty(exports, 'valueFromASTUntyped', {\n  enumerable: true,\n  get: function () {\n    return _valueFromASTUntyped.valueFromASTUntyped;\n  },\n});\nObject.defineProperty(exports, 'visitWithTypeInfo', {\n  enumerable: true,\n  get: function () {\n    return _TypeInfo.visitWithTypeInfo;\n  },\n});\n\nvar _getIntrospectionQuery = require('./getIntrospectionQuery.js');\n\nvar _getOperationAST = require('./getOperationAST.js');\n\nvar _getOperationRootType = require('./getOperationRootType.js');\n\nvar _introspectionFromSchema = require('./introspectionFromSchema.js');\n\nvar _buildClientSchema = require('./buildClientSchema.js');\n\nvar _buildASTSchema = require('./buildASTSchema.js');\n\nvar _extendSchema = require('./extendSchema.js');\n\nvar _lexicographicSortSchema = require('./lexicographicSortSchema.js');\n\nvar _printSchema = require('./printSchema.js');\n\nvar _typeFromAST = require('./typeFromAST.js');\n\nvar _valueFromAST = require('./valueFromAST.js');\n\nvar _valueFromASTUntyped = require('./valueFromASTUntyped.js');\n\nvar _astFromValue = require('./astFromValue.js');\n\nvar _TypeInfo = require('./TypeInfo.js');\n\nvar _coerceInputValue = require('./coerceInputValue.js');\n\nvar _concatAST = require('./concatAST.js');\n\nvar _separateOperations = require('./separateOperations.js');\n\nvar _stripIgnoredCharacters = require('./stripIgnoredCharacters.js');\n\nvar _typeComparators = require('./typeComparators.js');\n\nvar _assertValidName = require('./assertValidName.js');\n\nvar _findBreakingChanges = require('./findBreakingChanges.js');\n\nvar _resolveSchemaCoordinate = require('./resolveSchemaCoordinate.js');\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true,\n});\nObject.defineProperty(exports, 'BREAK', {\n  enumerable: true,\n  get: function () {\n    return _index2.BREAK;\n  },\n});\nObject.defineProperty(exports, 'BreakingChangeType', {\n  enumerable: true,\n  get: function () {\n    return _index6.BreakingChangeType;\n  },\n});\nObject.defineProperty(exports, 'DEFAULT_DEPRECATION_REASON', {\n  enumerable: true,\n  get: function () {\n    return _index.DEFAULT_DEPRECATION_REASON;\n  },\n});\nObject.defineProperty(exports, 'DangerousChangeType', {\n  enumerable: true,\n  get: function () {\n    return _index6.DangerousChangeType;\n  },\n});\nObject.defineProperty(exports, 'DirectiveLocation', {\n  enumerable: true,\n  get: function () {\n    return _index2.DirectiveLocation;\n  },\n});\nObject.defineProperty(exports, 'ExecutableDefinitionsRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.ExecutableDefinitionsRule;\n  },\n});\nObject.defineProperty(exports, 'FieldsOnCorrectTypeRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.FieldsOnCorrectTypeRule;\n  },\n});\nObject.defineProperty(exports, 'FragmentsOnCompositeTypesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.FragmentsOnCompositeTypesRule;\n  },\n});\nObject.defineProperty(exports, 'GRAPHQL_MAX_INT', {\n  enumerable: true,\n  get: function () {\n    return _index.GRAPHQL_MAX_INT;\n  },\n});\nObject.defineProperty(exports, 'GRAPHQL_MIN_INT', {\n  enumerable: true,\n  get: function () {\n    return _index.GRAPHQL_MIN_INT;\n  },\n});\nObject.defineProperty(exports, 'GraphQLBoolean', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLBoolean;\n  },\n});\nObject.defineProperty(exports, 'GraphQLDeprecatedDirective', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLDeprecatedDirective;\n  },\n});\nObject.defineProperty(exports, 'GraphQLDirective', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLDirective;\n  },\n});\nObject.defineProperty(exports, 'GraphQLEnumType', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLEnumType;\n  },\n});\nObject.defineProperty(exports, 'GraphQLError', {\n  enumerable: true,\n  get: function () {\n    return _index5.GraphQLError;\n  },\n});\nObject.defineProperty(exports, 'GraphQLFloat', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLFloat;\n  },\n});\nObject.defineProperty(exports, 'GraphQLID', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLID;\n  },\n});\nObject.defineProperty(exports, 'GraphQLIncludeDirective', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLIncludeDirective;\n  },\n});\nObject.defineProperty(exports, 'GraphQLInputObjectType', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLInputObjectType;\n  },\n});\nObject.defineProperty(exports, 'GraphQLInt', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLInt;\n  },\n});\nObject.defineProperty(exports, 'GraphQLInterfaceType', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLInterfaceType;\n  },\n});\nObject.defineProperty(exports, 'GraphQLList', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLList;\n  },\n});\nObject.defineProperty(exports, 'GraphQLNonNull', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLNonNull;\n  },\n});\nObject.defineProperty(exports, 'GraphQLObjectType', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLObjectType;\n  },\n});\nObject.defineProperty(exports, 'GraphQLOneOfDirective', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLOneOfDirective;\n  },\n});\nObject.defineProperty(exports, 'GraphQLScalarType', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLScalarType;\n  },\n});\nObject.defineProperty(exports, 'GraphQLSchema', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLSchema;\n  },\n});\nObject.defineProperty(exports, 'GraphQLSkipDirective', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLSkipDirective;\n  },\n});\nObject.defineProperty(exports, 'GraphQLSpecifiedByDirective', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLSpecifiedByDirective;\n  },\n});\nObject.defineProperty(exports, 'GraphQLString', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLString;\n  },\n});\nObject.defineProperty(exports, 'GraphQLUnionType', {\n  enumerable: true,\n  get: function () {\n    return _index.GraphQLUnionType;\n  },\n});\nObject.defineProperty(exports, 'Kind', {\n  enumerable: true,\n  get: function () {\n    return _index2.Kind;\n  },\n});\nObject.defineProperty(exports, 'KnownArgumentNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.KnownArgumentNamesRule;\n  },\n});\nObject.defineProperty(exports, 'KnownDirectivesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.KnownDirectivesRule;\n  },\n});\nObject.defineProperty(exports, 'KnownFragmentNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.KnownFragmentNamesRule;\n  },\n});\nObject.defineProperty(exports, 'KnownTypeNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.KnownTypeNamesRule;\n  },\n});\nObject.defineProperty(exports, 'Lexer', {\n  enumerable: true,\n  get: function () {\n    return _index2.Lexer;\n  },\n});\nObject.defineProperty(exports, 'Location', {\n  enumerable: true,\n  get: function () {\n    return _index2.Location;\n  },\n});\nObject.defineProperty(exports, 'LoneAnonymousOperationRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.LoneAnonymousOperationRule;\n  },\n});\nObject.defineProperty(exports, 'LoneSchemaDefinitionRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.LoneSchemaDefinitionRule;\n  },\n});\nObject.defineProperty(exports, 'MaxIntrospectionDepthRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.MaxIntrospectionDepthRule;\n  },\n});\nObject.defineProperty(exports, 'NoDeprecatedCustomRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.NoDeprecatedCustomRule;\n  },\n});\nObject.defineProperty(exports, 'NoFragmentCyclesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.NoFragmentCyclesRule;\n  },\n});\nObject.defineProperty(exports, 'NoSchemaIntrospectionCustomRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.NoSchemaIntrospectionCustomRule;\n  },\n});\nObject.defineProperty(exports, 'NoUndefinedVariablesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.NoUndefinedVariablesRule;\n  },\n});\nObject.defineProperty(exports, 'NoUnusedFragmentsRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.NoUnusedFragmentsRule;\n  },\n});\nObject.defineProperty(exports, 'NoUnusedVariablesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.NoUnusedVariablesRule;\n  },\n});\nObject.defineProperty(exports, 'OperationTypeNode', {\n  enumerable: true,\n  get: function () {\n    return _index2.OperationTypeNode;\n  },\n});\nObject.defineProperty(exports, 'OverlappingFieldsCanBeMergedRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.OverlappingFieldsCanBeMergedRule;\n  },\n});\nObject.defineProperty(exports, 'PossibleFragmentSpreadsRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.PossibleFragmentSpreadsRule;\n  },\n});\nObject.defineProperty(exports, 'PossibleTypeExtensionsRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.PossibleTypeExtensionsRule;\n  },\n});\nObject.defineProperty(exports, 'ProvidedRequiredArgumentsRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.ProvidedRequiredArgumentsRule;\n  },\n});\nObject.defineProperty(exports, 'ScalarLeafsRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.ScalarLeafsRule;\n  },\n});\nObject.defineProperty(exports, 'SchemaMetaFieldDef', {\n  enumerable: true,\n  get: function () {\n    return _index.SchemaMetaFieldDef;\n  },\n});\nObject.defineProperty(exports, 'SingleFieldSubscriptionsRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.SingleFieldSubscriptionsRule;\n  },\n});\nObject.defineProperty(exports, 'Source', {\n  enumerable: true,\n  get: function () {\n    return _index2.Source;\n  },\n});\nObject.defineProperty(exports, 'Token', {\n  enumerable: true,\n  get: function () {\n    return _index2.Token;\n  },\n});\nObject.defineProperty(exports, 'TokenKind', {\n  enumerable: true,\n  get: function () {\n    return _index2.TokenKind;\n  },\n});\nObject.defineProperty(exports, 'TypeInfo', {\n  enumerable: true,\n  get: function () {\n    return _index6.TypeInfo;\n  },\n});\nObject.defineProperty(exports, 'TypeKind', {\n  enumerable: true,\n  get: function () {\n    return _index.TypeKind;\n  },\n});\nObject.defineProperty(exports, 'TypeMetaFieldDef', {\n  enumerable: true,\n  get: function () {\n    return _index.TypeMetaFieldDef;\n  },\n});\nObject.defineProperty(exports, 'TypeNameMetaFieldDef', {\n  enumerable: true,\n  get: function () {\n    return _index.TypeNameMetaFieldDef;\n  },\n});\nObject.defineProperty(exports, 'UniqueArgumentDefinitionNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.UniqueArgumentDefinitionNamesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueArgumentNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.UniqueArgumentNamesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueDirectiveNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.UniqueDirectiveNamesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueDirectivesPerLocationRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.UniqueDirectivesPerLocationRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueEnumValueNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.UniqueEnumValueNamesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueFieldDefinitionNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.UniqueFieldDefinitionNamesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueFragmentNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.UniqueFragmentNamesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueInputFieldNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.UniqueInputFieldNamesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueOperationNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.UniqueOperationNamesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueOperationTypesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.UniqueOperationTypesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueTypeNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.UniqueTypeNamesRule;\n  },\n});\nObject.defineProperty(exports, 'UniqueVariableNamesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.UniqueVariableNamesRule;\n  },\n});\nObject.defineProperty(exports, 'ValidationContext', {\n  enumerable: true,\n  get: function () {\n    return _index4.ValidationContext;\n  },\n});\nObject.defineProperty(exports, 'ValuesOfCorrectTypeRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.ValuesOfCorrectTypeRule;\n  },\n});\nObject.defineProperty(exports, 'VariablesAreInputTypesRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.VariablesAreInputTypesRule;\n  },\n});\nObject.defineProperty(exports, 'VariablesInAllowedPositionRule', {\n  enumerable: true,\n  get: function () {\n    return _index4.VariablesInAllowedPositionRule;\n  },\n});\nObject.defineProperty(exports, '__Directive', {\n  enumerable: true,\n  get: function () {\n    return _index.__Directive;\n  },\n});\nObject.defineProperty(exports, '__DirectiveLocation', {\n  enumerable: true,\n  get: function () {\n    return _index.__DirectiveLocation;\n  },\n});\nObject.defineProperty(exports, '__EnumValue', {\n  enumerable: true,\n  get: function () {\n    return _index.__EnumValue;\n  },\n});\nObject.defineProperty(exports, '__Field', {\n  enumerable: true,\n  get: function () {\n    return _index.__Field;\n  },\n});\nObject.defineProperty(exports, '__InputValue', {\n  enumerable: true,\n  get: function () {\n    return _index.__InputValue;\n  },\n});\nObject.defineProperty(exports, '__Schema', {\n  enumerable: true,\n  get: function () {\n    return _index.__Schema;\n  },\n});\nObject.defineProperty(exports, '__Type', {\n  enumerable: true,\n  get: function () {\n    return _index.__Type;\n  },\n});\nObject.defineProperty(exports, '__TypeKind', {\n  enumerable: true,\n  get: function () {\n    return _index.__TypeKind;\n  },\n});\nObject.defineProperty(exports, 'assertAbstractType', {\n  enumerable: true,\n  get: function () {\n    return _index.assertAbstractType;\n  },\n});\nObject.defineProperty(exports, 'assertCompositeType', {\n  enumerable: true,\n  get: function () {\n    return _index.assertCompositeType;\n  },\n});\nObject.defineProperty(exports, 'assertDirective', {\n  enumerable: true,\n  get: function () {\n    return _index.assertDirective;\n  },\n});\nObject.defineProperty(exports, 'assertEnumType', {\n  enumerable: true,\n  get: function () {\n    return _index.assertEnumType;\n  },\n});\nObject.defineProperty(exports, 'assertEnumValueName', {\n  enumerable: true,\n  get: function () {\n    return _index.assertEnumValueName;\n  },\n});\nObject.defineProperty(exports, 'assertInputObjectType', {\n  enumerable: true,\n  get: function () {\n    return _index.assertInputObjectType;\n  },\n});\nObject.defineProperty(exports, 'assertInputType', {\n  enumerable: true,\n  get: function () {\n    return _index.assertInputType;\n  },\n});\nObject.defineProperty(exports, 'assertInterfaceType', {\n  enumerable: true,\n  get: function () {\n    return _index.assertInterfaceType;\n  },\n});\nObject.defineProperty(exports, 'assertLeafType', {\n  enumerable: true,\n  get: function () {\n    return _index.assertLeafType;\n  },\n});\nObject.defineProperty(exports, 'assertListType', {\n  enumerable: true,\n  get: function () {\n    return _index.assertListType;\n  },\n});\nObject.defineProperty(exports, 'assertName', {\n  enumerable: true,\n  get: function () {\n    return _index.assertName;\n  },\n});\nObject.defineProperty(exports, 'assertNamedType', {\n  enumerable: true,\n  get: function () {\n    return _index.assertNamedType;\n  },\n});\nObject.defineProperty(exports, 'assertNonNullType', {\n  enumerable: true,\n  get: function () {\n    return _index.assertNonNullType;\n  },\n});\nObject.defineProperty(exports, 'assertNullableType', {\n  enumerable: true,\n  get: function () {\n    return _index.assertNullableType;\n  },\n});\nObject.defineProperty(exports, 'assertObjectType', {\n  enumerable: true,\n  get: function () {\n    return _index.assertObjectType;\n  },\n});\nObject.defineProperty(exports, 'assertOutputType', {\n  enumerable: true,\n  get: function () {\n    return _index.assertOutputType;\n  },\n});\nObject.defineProperty(exports, 'assertScalarType', {\n  enumerable: true,\n  get: function () {\n    return _index.assertScalarType;\n  },\n});\nObject.defineProperty(exports, 'assertSchema', {\n  enumerable: true,\n  get: function () {\n    return _index.assertSchema;\n  },\n});\nObject.defineProperty(exports, 'assertType', {\n  enumerable: true,\n  get: function () {\n    return _index.assertType;\n  },\n});\nObject.defineProperty(exports, 'assertUnionType', {\n  enumerable: true,\n  get: function () {\n    return _index.assertUnionType;\n  },\n});\nObject.defineProperty(exports, 'assertValidName', {\n  enumerable: true,\n  get: function () {\n    return _index6.assertValidName;\n  },\n});\nObject.defineProperty(exports, 'assertValidSchema', {\n  enumerable: true,\n  get: function () {\n    return _index.assertValidSchema;\n  },\n});\nObject.defineProperty(exports, 'assertWrappingType', {\n  enumerable: true,\n  get: function () {\n    return _index.assertWrappingType;\n  },\n});\nObject.defineProperty(exports, 'astFromValue', {\n  enumerable: true,\n  get: function () {\n    return _index6.astFromValue;\n  },\n});\nObject.defineProperty(exports, 'buildASTSchema', {\n  enumerable: true,\n  get: function () {\n    return _index6.buildASTSchema;\n  },\n});\nObject.defineProperty(exports, 'buildClientSchema', {\n  enumerable: true,\n  get: function () {\n    return _index6.buildClientSchema;\n  },\n});\nObject.defineProperty(exports, 'buildSchema', {\n  enumerable: true,\n  get: function () {\n    return _index6.buildSchema;\n  },\n});\nObject.defineProperty(exports, 'coerceInputValue', {\n  enumerable: true,\n  get: function () {\n    return _index6.coerceInputValue;\n  },\n});\nObject.defineProperty(exports, 'concatAST', {\n  enumerable: true,\n  get: function () {\n    return _index6.concatAST;\n  },\n});\nObject.defineProperty(exports, 'createSourceEventStream', {\n  enumerable: true,\n  get: function () {\n    return _index3.createSourceEventStream;\n  },\n});\nObject.defineProperty(exports, 'defaultFieldResolver', {\n  enumerable: true,\n  get: function () {\n    return _index3.defaultFieldResolver;\n  },\n});\nObject.defineProperty(exports, 'defaultTypeResolver', {\n  enumerable: true,\n  get: function () {\n    return _index3.defaultTypeResolver;\n  },\n});\nObject.defineProperty(exports, 'doTypesOverlap', {\n  enumerable: true,\n  get: function () {\n    return _index6.doTypesOverlap;\n  },\n});\nObject.defineProperty(exports, 'execute', {\n  enumerable: true,\n  get: function () {\n    return _index3.execute;\n  },\n});\nObject.defineProperty(exports, 'executeSync', {\n  enumerable: true,\n  get: function () {\n    return _index3.executeSync;\n  },\n});\nObject.defineProperty(exports, 'extendSchema', {\n  enumerable: true,\n  get: function () {\n    return _index6.extendSchema;\n  },\n});\nObject.defineProperty(exports, 'findBreakingChanges', {\n  enumerable: true,\n  get: function () {\n    return _index6.findBreakingChanges;\n  },\n});\nObject.defineProperty(exports, 'findDangerousChanges', {\n  enumerable: true,\n  get: function () {\n    return _index6.findDangerousChanges;\n  },\n});\nObject.defineProperty(exports, 'formatError', {\n  enumerable: true,\n  get: function () {\n    return _index5.formatError;\n  },\n});\nObject.defineProperty(exports, 'getArgumentValues', {\n  enumerable: true,\n  get: function () {\n    return _index3.getArgumentValues;\n  },\n});\nObject.defineProperty(exports, 'getDirectiveValues', {\n  enumerable: true,\n  get: function () {\n    return _index3.getDirectiveValues;\n  },\n});\nObject.defineProperty(exports, 'getEnterLeaveForKind', {\n  enumerable: true,\n  get: function () {\n    return _index2.getEnterLeaveForKind;\n  },\n});\nObject.defineProperty(exports, 'getIntrospectionQuery', {\n  enumerable: true,\n  get: function () {\n    return _index6.getIntrospectionQuery;\n  },\n});\nObject.defineProperty(exports, 'getLocation', {\n  enumerable: true,\n  get: function () {\n    return _index2.getLocation;\n  },\n});\nObject.defineProperty(exports, 'getNamedType', {\n  enumerable: true,\n  get: function () {\n    return _index.getNamedType;\n  },\n});\nObject.defineProperty(exports, 'getNullableType', {\n  enumerable: true,\n  get: function () {\n    return _index.getNullableType;\n  },\n});\nObject.defineProperty(exports, 'getOperationAST', {\n  enumerable: true,\n  get: function () {\n    return _index6.getOperationAST;\n  },\n});\nObject.defineProperty(exports, 'getOperationRootType', {\n  enumerable: true,\n  get: function () {\n    return _index6.getOperationRootType;\n  },\n});\nObject.defineProperty(exports, 'getVariableValues', {\n  enumerable: true,\n  get: function () {\n    return _index3.getVariableValues;\n  },\n});\nObject.defineProperty(exports, 'getVisitFn', {\n  enumerable: true,\n  get: function () {\n    return _index2.getVisitFn;\n  },\n});\nObject.defineProperty(exports, 'graphql', {\n  enumerable: true,\n  get: function () {\n    return _graphql.graphql;\n  },\n});\nObject.defineProperty(exports, 'graphqlSync', {\n  enumerable: true,\n  get: function () {\n    return _graphql.graphqlSync;\n  },\n});\nObject.defineProperty(exports, 'introspectionFromSchema', {\n  enumerable: true,\n  get: function () {\n    return _index6.introspectionFromSchema;\n  },\n});\nObject.defineProperty(exports, 'introspectionTypes', {\n  enumerable: true,\n  get: function () {\n    return _index.introspectionTypes;\n  },\n});\nObject.defineProperty(exports, 'isAbstractType', {\n  enumerable: true,\n  get: function () {\n    return _index.isAbstractType;\n  },\n});\nObject.defineProperty(exports, 'isCompositeType', {\n  enumerable: true,\n  get: function () {\n    return _index.isCompositeType;\n  },\n});\nObject.defineProperty(exports, 'isConstValueNode', {\n  enumerable: true,\n  get: function () {\n    return _index2.isConstValueNode;\n  },\n});\nObject.defineProperty(exports, 'isDefinitionNode', {\n  enumerable: true,\n  get: function () {\n    return _index2.isDefinitionNode;\n  },\n});\nObject.defineProperty(exports, 'isDirective', {\n  enumerable: true,\n  get: function () {\n    return _index.isDirective;\n  },\n});\nObject.defineProperty(exports, 'isEnumType', {\n  enumerable: true,\n  get: function () {\n    return _index.isEnumType;\n  },\n});\nObject.defineProperty(exports, 'isEqualType', {\n  enumerable: true,\n  get: function () {\n    return _index6.isEqualType;\n  },\n});\nObject.defineProperty(exports, 'isExecutableDefinitionNode', {\n  enumerable: true,\n  get: function () {\n    return _index2.isExecutableDefinitionNode;\n  },\n});\nObject.defineProperty(exports, 'isInputObjectType', {\n  enumerable: true,\n  get: function () {\n    return _index.isInputObjectType;\n  },\n});\nObject.defineProperty(exports, 'isInputType', {\n  enumerable: true,\n  get: function () {\n    return _index.isInputType;\n  },\n});\nObject.defineProperty(exports, 'isInterfaceType', {\n  enumerable: true,\n  get: function () {\n    return _index.isInterfaceType;\n  },\n});\nObject.defineProperty(exports, 'isIntrospectionType', {\n  enumerable: true,\n  get: function () {\n    return _index.isIntrospectionType;\n  },\n});\nObject.defineProperty(exports, 'isLeafType', {\n  enumerable: true,\n  get: function () {\n    return _index.isLeafType;\n  },\n});\nObject.defineProperty(exports, 'isListType', {\n  enumerable: true,\n  get: function () {\n    return _index.isListType;\n  },\n});\nObject.defineProperty(exports, 'isNamedType', {\n  enumerable: true,\n  get: function () {\n    return _index.isNamedType;\n  },\n});\nObject.defineProperty(exports, 'isNonNullType', {\n  enumerable: true,\n  get: function () {\n    return _index.isNonNullType;\n  },\n});\nObject.defineProperty(exports, 'isNullableType', {\n  enumerable: true,\n  get: function () {\n    return _index.isNullableType;\n  },\n});\nObject.defineProperty(exports, 'isObjectType', {\n  enumerable: true,\n  get: function () {\n    return _index.isObjectType;\n  },\n});\nObject.defineProperty(exports, 'isOutputType', {\n  enumerable: true,\n  get: function () {\n    return _index.isOutputType;\n  },\n});\nObject.defineProperty(exports, 'isRequiredArgument', {\n  enumerable: true,\n  get: function () {\n    return _index.isRequiredArgument;\n  },\n});\nObject.defineProperty(exports, 'isRequiredInputField', {\n  enumerable: true,\n  get: function () {\n    return _index.isRequiredInputField;\n  },\n});\nObject.defineProperty(exports, 'isScalarType', {\n  enumerable: true,\n  get: function () {\n    return _index.isScalarType;\n  },\n});\nObject.defineProperty(exports, 'isSchema', {\n  enumerable: true,\n  get: function () {\n    return _index.isSchema;\n  },\n});\nObject.defineProperty(exports, 'isSchemaCoordinateNode', {\n  enumerable: true,\n  get: function () {\n    return _index2.isSchemaCoordinateNode;\n  },\n});\nObject.defineProperty(exports, 'isSelectionNode', {\n  enumerable: true,\n  get: function () {\n    return _index2.isSelectionNode;\n  },\n});\nObject.defineProperty(exports, 'isSpecifiedDirective', {\n  enumerable: true,\n  get: function () {\n    return _index.isSpecifiedDirective;\n  },\n});\nObject.defineProperty(exports, 'isSpecifiedScalarType', {\n  enumerable: true,\n  get: function () {\n    return _index.isSpecifiedScalarType;\n  },\n});\nObject.defineProperty(exports, 'isType', {\n  enumerable: true,\n  get: function () {\n    return _index.isType;\n  },\n});\nObject.defineProperty(exports, 'isTypeDefinitionNode', {\n  enumerable: true,\n  get: function () {\n    return _index2.isTypeDefinitionNode;\n  },\n});\nObject.defineProperty(exports, 'isTypeExtensionNode', {\n  enumerable: true,\n  get: function () {\n    return _index2.isTypeExtensionNode;\n  },\n});\nObject.defineProperty(exports, 'isTypeNode', {\n  enumerable: true,\n  get: function () {\n    return _index2.isTypeNode;\n  },\n});\nObject.defineProperty(exports, 'isTypeSubTypeOf', {\n  enumerable: true,\n  get: function () {\n    return _index6.isTypeSubTypeOf;\n  },\n});\nObject.defineProperty(exports, 'isTypeSystemDefinitionNode', {\n  enumerable: true,\n  get: function () {\n    return _index2.isTypeSystemDefinitionNode;\n  },\n});\nObject.defineProperty(exports, 'isTypeSystemExtensionNode', {\n  enumerable: true,\n  get: function () {\n    return _index2.isTypeSystemExtensionNode;\n  },\n});\nObject.defineProperty(exports, 'isUnionType', {\n  enumerable: true,\n  get: function () {\n    return _index.isUnionType;\n  },\n});\nObject.defineProperty(exports, 'isValidNameError', {\n  enumerable: true,\n  get: function () {\n    return _index6.isValidNameError;\n  },\n});\nObject.defineProperty(exports, 'isValueNode', {\n  enumerable: true,\n  get: function () {\n    return _index2.isValueNode;\n  },\n});\nObject.defineProperty(exports, 'isWrappingType', {\n  enumerable: true,\n  get: function () {\n    return _index.isWrappingType;\n  },\n});\nObject.defineProperty(exports, 'lexicographicSortSchema', {\n  enumerable: true,\n  get: function () {\n    return _index6.lexicographicSortSchema;\n  },\n});\nObject.defineProperty(exports, 'locatedError', {\n  enumerable: true,\n  get: function () {\n    return _index5.locatedError;\n  },\n});\nObject.defineProperty(exports, 'parse', {\n  enumerable: true,\n  get: function () {\n    return _index2.parse;\n  },\n});\nObject.defineProperty(exports, 'parseConstValue', {\n  enumerable: true,\n  get: function () {\n    return _index2.parseConstValue;\n  },\n});\nObject.defineProperty(exports, 'parseSchemaCoordinate', {\n  enumerable: true,\n  get: function () {\n    return _index2.parseSchemaCoordinate;\n  },\n});\nObject.defineProperty(exports, 'parseType', {\n  enumerable: true,\n  get: function () {\n    return _index2.parseType;\n  },\n});\nObject.defineProperty(exports, 'parseValue', {\n  enumerable: true,\n  get: function () {\n    return _index2.parseValue;\n  },\n});\nObject.defineProperty(exports, 'print', {\n  enumerable: true,\n  get: function () {\n    return _index2.print;\n  },\n});\nObject.defineProperty(exports, 'printError', {\n  enumerable: true,\n  get: function () {\n    return _index5.printError;\n  },\n});\nObject.defineProperty(exports, 'printIntrospectionSchema', {\n  enumerable: true,\n  get: function () {\n    return _index6.printIntrospectionSchema;\n  },\n});\nObject.defineProperty(exports, 'printLocation', {\n  enumerable: true,\n  get: function () {\n    return _index2.printLocation;\n  },\n});\nObject.defineProperty(exports, 'printSchema', {\n  enumerable: true,\n  get: function () {\n    return _index6.printSchema;\n  },\n});\nObject.defineProperty(exports, 'printSourceLocation', {\n  enumerable: true,\n  get: function () {\n    return _index2.printSourceLocation;\n  },\n});\nObject.defineProperty(exports, 'printType', {\n  enumerable: true,\n  get: function () {\n    return _index6.printType;\n  },\n});\nObject.defineProperty(exports, 'recommendedRules', {\n  enumerable: true,\n  get: function () {\n    return _index4.recommendedRules;\n  },\n});\nObject.defineProperty(exports, 'resolveASTSchemaCoordinate', {\n  enumerable: true,\n  get: function () {\n    return _index6.resolveASTSchemaCoordinate;\n  },\n});\nObject.defineProperty(exports, 'resolveObjMapThunk', {\n  enumerable: true,\n  get: function () {\n    return _index.resolveObjMapThunk;\n  },\n});\nObject.defineProperty(exports, 'resolveReadonlyArrayThunk', {\n  enumerable: true,\n  get: function () {\n    return _index.resolveReadonlyArrayThunk;\n  },\n});\nObject.defineProperty(exports, 'resolveSchemaCoordinate', {\n  enumerable: true,\n  get: function () {\n    return _index6.resolveSchemaCoordinate;\n  },\n});\nObject.defineProperty(exports, 'responsePathAsArray', {\n  enumerable: true,\n  get: function () {\n    return _index3.responsePathAsArray;\n  },\n});\nObject.defineProperty(exports, 'separateOperations', {\n  enumerable: true,\n  get: function () {\n    return _index6.separateOperations;\n  },\n});\nObject.defineProperty(exports, 'specifiedDirectives', {\n  enumerable: true,\n  get: function () {\n    return _index.specifiedDirectives;\n  },\n});\nObject.defineProperty(exports, 'specifiedRules', {\n  enumerable: true,\n  get: function () {\n    return _index4.specifiedRules;\n  },\n});\nObject.defineProperty(exports, 'specifiedScalarTypes', {\n  enumerable: true,\n  get: function () {\n    return _index.specifiedScalarTypes;\n  },\n});\nObject.defineProperty(exports, 'stripIgnoredCharacters', {\n  enumerable: true,\n  get: function () {\n    return _index6.stripIgnoredCharacters;\n  },\n});\nObject.defineProperty(exports, 'subscribe', {\n  enumerable: true,\n  get: function () {\n    return _index3.subscribe;\n  },\n});\nObject.defineProperty(exports, 'syntaxError', {\n  enumerable: true,\n  get: function () {\n    return _index5.syntaxError;\n  },\n});\nObject.defineProperty(exports, 'typeFromAST', {\n  enumerable: true,\n  get: function () {\n    return _index6.typeFromAST;\n  },\n});\nObject.defineProperty(exports, 'validate', {\n  enumerable: true,\n  get: function () {\n    return _index4.validate;\n  },\n});\nObject.defineProperty(exports, 'validateSchema', {\n  enumerable: true,\n  get: function () {\n    return _index.validateSchema;\n  },\n});\nObject.defineProperty(exports, 'valueFromAST', {\n  enumerable: true,\n  get: function () {\n    return _index6.valueFromAST;\n  },\n});\nObject.defineProperty(exports, 'valueFromASTUntyped', {\n  enumerable: true,\n  get: function () {\n    return _index6.valueFromASTUntyped;\n  },\n});\nObject.defineProperty(exports, 'version', {\n  enumerable: true,\n  get: function () {\n    return _version.version;\n  },\n});\nObject.defineProperty(exports, 'versionInfo', {\n  enumerable: true,\n  get: function () {\n    return _version.versionInfo;\n  },\n});\nObject.defineProperty(exports, 'visit', {\n  enumerable: true,\n  get: function () {\n    return _index2.visit;\n  },\n});\nObject.defineProperty(exports, 'visitInParallel', {\n  enumerable: true,\n  get: function () {\n    return _index2.visitInParallel;\n  },\n});\nObject.defineProperty(exports, 'visitWithTypeInfo', {\n  enumerable: true,\n  get: function () {\n    return _index6.visitWithTypeInfo;\n  },\n});\n\nvar _version = require('./version.js');\n\nvar _graphql = require('./graphql.js');\n\nvar _index = require('./type/index.js');\n\nvar _index2 = require('./language/index.js');\n\nvar _index3 = require('./execution/index.js');\n\nvar _index4 = require('./validation/index.js');\n\nvar _index5 = require('./error/index.js');\n\nvar _index6 = require('./utilities/index.js');\n", "/*\n* loglevel - https://github.com/pimterry/loglevel\n*\n* Copyright (c) 2013 Tim Perry\n* Licensed under the MIT license.\n*/\n(function (root, definition) {\n    \"use strict\";\n    if (typeof define === 'function' && define.amd) {\n        define(definition);\n    } else if (typeof module === 'object' && module.exports) {\n        module.exports = definition();\n    } else {\n        root.log = definition();\n    }\n}(this, function () {\n    \"use strict\";\n\n    // Slightly dubious tricks to cut down minimized file size\n    var noop = function() {};\n    var undefinedType = \"undefined\";\n    var isIE = (typeof window !== undefinedType) && (typeof window.navigator !== undefinedType) && (\n        /Trident\\/|MSIE /.test(window.navigator.userAgent)\n    );\n\n    var logMethods = [\n        \"trace\",\n        \"debug\",\n        \"info\",\n        \"warn\",\n        \"error\"\n    ];\n\n    var _loggersByName = {};\n    var defaultLogger = null;\n\n    // Cross-browser bind equivalent that works at least back to IE6\n    function bindMethod(obj, methodName) {\n        var method = obj[methodName];\n        if (typeof method.bind === 'function') {\n            return method.bind(obj);\n        } else {\n            try {\n                return Function.prototype.bind.call(method, obj);\n            } catch (e) {\n                // Missing bind shim or IE8 + Modernizr, fallback to wrapping\n                return function() {\n                    return Function.prototype.apply.apply(method, [obj, arguments]);\n                };\n            }\n        }\n    }\n\n    // Trace() doesn't print the message in IE, so for that case we need to wrap it\n    function traceForIE() {\n        if (console.log) {\n            if (console.log.apply) {\n                console.log.apply(console, arguments);\n            } else {\n                // In old IE, native console methods themselves don't have apply().\n                Function.prototype.apply.apply(console.log, [console, arguments]);\n            }\n        }\n        if (console.trace) console.trace();\n    }\n\n    // Build the best logging method possible for this env\n    // Wherever possible we want to bind, not wrap, to preserve stack traces\n    function realMethod(methodName) {\n        if (methodName === 'debug') {\n            methodName = 'log';\n        }\n\n        if (typeof console === undefinedType) {\n            return false; // No method possible, for now - fixed later by enableLoggingWhenConsoleArrives\n        } else if (methodName === 'trace' && isIE) {\n            return traceForIE;\n        } else if (console[methodName] !== undefined) {\n            return bindMethod(console, methodName);\n        } else if (console.log !== undefined) {\n            return bindMethod(console, 'log');\n        } else {\n            return noop;\n        }\n    }\n\n    // These private functions always need `this` to be set properly\n\n    function replaceLoggingMethods() {\n        /*jshint validthis:true */\n        var level = this.getLevel();\n\n        // Replace the actual methods.\n        for (var i = 0; i < logMethods.length; i++) {\n            var methodName = logMethods[i];\n            this[methodName] = (i < level) ?\n                noop :\n                this.methodFactory(methodName, level, this.name);\n        }\n\n        // Define log.log as an alias for log.debug\n        this.log = this.debug;\n\n        // Return any important warnings.\n        if (typeof console === undefinedType && level < this.levels.SILENT) {\n            return \"No console available for logging\";\n        }\n    }\n\n    // In old IE versions, the console isn't present until you first open it.\n    // We build realMethod() replacements here that regenerate logging methods\n    function enableLoggingWhenConsoleArrives(methodName) {\n        return function () {\n            if (typeof console !== undefinedType) {\n                replaceLoggingMethods.call(this);\n                this[methodName].apply(this, arguments);\n            }\n        };\n    }\n\n    // By default, we use closely bound real methods wherever possible, and\n    // otherwise we wait for a console to appear, and then try again.\n    function defaultMethodFactory(methodName, _level, _loggerName) {\n        /*jshint validthis:true */\n        return realMethod(methodName) ||\n               enableLoggingWhenConsoleArrives.apply(this, arguments);\n    }\n\n    function Logger(name, factory) {\n      // Private instance variables.\n      var self = this;\n      /**\n       * The level inherited from a parent logger (or a global default). We\n       * cache this here rather than delegating to the parent so that it stays\n       * in sync with the actual logging methods that we have installed (the\n       * parent could change levels but we might not have rebuilt the loggers\n       * in this child yet).\n       * @type {number}\n       */\n      var inheritedLevel;\n      /**\n       * The default level for this logger, if any. If set, this overrides\n       * `inheritedLevel`.\n       * @type {number|null}\n       */\n      var defaultLevel;\n      /**\n       * A user-specific level for this logger. If set, this overrides\n       * `defaultLevel`.\n       * @type {number|null}\n       */\n      var userLevel;\n\n      var storageKey = \"loglevel\";\n      if (typeof name === \"string\") {\n        storageKey += \":\" + name;\n      } else if (typeof name === \"symbol\") {\n        storageKey = undefined;\n      }\n\n      function persistLevelIfPossible(levelNum) {\n          var levelName = (logMethods[levelNum] || 'silent').toUpperCase();\n\n          if (typeof window === undefinedType || !storageKey) return;\n\n          // Use localStorage if available\n          try {\n              window.localStorage[storageKey] = levelName;\n              return;\n          } catch (ignore) {}\n\n          // Use session cookie as fallback\n          try {\n              window.document.cookie =\n                encodeURIComponent(storageKey) + \"=\" + levelName + \";\";\n          } catch (ignore) {}\n      }\n\n      function getPersistedLevel() {\n          var storedLevel;\n\n          if (typeof window === undefinedType || !storageKey) return;\n\n          try {\n              storedLevel = window.localStorage[storageKey];\n          } catch (ignore) {}\n\n          // Fallback to cookies if local storage gives us nothing\n          if (typeof storedLevel === undefinedType) {\n              try {\n                  var cookie = window.document.cookie;\n                  var cookieName = encodeURIComponent(storageKey);\n                  var location = cookie.indexOf(cookieName + \"=\");\n                  if (location !== -1) {\n                      storedLevel = /^([^;]+)/.exec(\n                          cookie.slice(location + cookieName.length + 1)\n                      )[1];\n                  }\n              } catch (ignore) {}\n          }\n\n          // If the stored level is not valid, treat it as if nothing was stored.\n          if (self.levels[storedLevel] === undefined) {\n              storedLevel = undefined;\n          }\n\n          return storedLevel;\n      }\n\n      function clearPersistedLevel() {\n          if (typeof window === undefinedType || !storageKey) return;\n\n          // Use localStorage if available\n          try {\n              window.localStorage.removeItem(storageKey);\n          } catch (ignore) {}\n\n          // Use session cookie as fallback\n          try {\n              window.document.cookie =\n                encodeURIComponent(storageKey) + \"=; expires=Thu, 01 Jan 1970 00:00:00 UTC\";\n          } catch (ignore) {}\n      }\n\n      function normalizeLevel(input) {\n          var level = input;\n          if (typeof level === \"string\" && self.levels[level.toUpperCase()] !== undefined) {\n              level = self.levels[level.toUpperCase()];\n          }\n          if (typeof level === \"number\" && level >= 0 && level <= self.levels.SILENT) {\n              return level;\n          } else {\n              throw new TypeError(\"log.setLevel() called with invalid level: \" + input);\n          }\n      }\n\n      /*\n       *\n       * Public logger API - see https://github.com/pimterry/loglevel for details\n       *\n       */\n\n      self.name = name;\n\n      self.levels = { \"TRACE\": 0, \"DEBUG\": 1, \"INFO\": 2, \"WARN\": 3,\n          \"ERROR\": 4, \"SILENT\": 5};\n\n      self.methodFactory = factory || defaultMethodFactory;\n\n      self.getLevel = function () {\n          if (userLevel != null) {\n            return userLevel;\n          } else if (defaultLevel != null) {\n            return defaultLevel;\n          } else {\n            return inheritedLevel;\n          }\n      };\n\n      self.setLevel = function (level, persist) {\n          userLevel = normalizeLevel(level);\n          if (persist !== false) {  // defaults to true\n              persistLevelIfPossible(userLevel);\n          }\n\n          // NOTE: in v2, this should call rebuild(), which updates children.\n          return replaceLoggingMethods.call(self);\n      };\n\n      self.setDefaultLevel = function (level) {\n          defaultLevel = normalizeLevel(level);\n          if (!getPersistedLevel()) {\n              self.setLevel(level, false);\n          }\n      };\n\n      self.resetLevel = function () {\n          userLevel = null;\n          clearPersistedLevel();\n          replaceLoggingMethods.call(self);\n      };\n\n      self.enableAll = function(persist) {\n          self.setLevel(self.levels.TRACE, persist);\n      };\n\n      self.disableAll = function(persist) {\n          self.setLevel(self.levels.SILENT, persist);\n      };\n\n      self.rebuild = function () {\n          if (defaultLogger !== self) {\n              inheritedLevel = normalizeLevel(defaultLogger.getLevel());\n          }\n          replaceLoggingMethods.call(self);\n\n          if (defaultLogger === self) {\n              for (var childName in _loggersByName) {\n                _loggersByName[childName].rebuild();\n              }\n          }\n      };\n\n      // Initialize all the internal levels.\n      inheritedLevel = normalizeLevel(\n          defaultLogger ? defaultLogger.getLevel() : \"WARN\"\n      );\n      var initialLevel = getPersistedLevel();\n      if (initialLevel != null) {\n          userLevel = normalizeLevel(initialLevel);\n      }\n      replaceLoggingMethods.call(self);\n    }\n\n    /*\n     *\n     * Top-level API\n     *\n     */\n\n    defaultLogger = new Logger();\n\n    defaultLogger.getLogger = function getLogger(name) {\n        if ((typeof name !== \"symbol\" && typeof name !== \"string\") || name === \"\") {\n            throw new TypeError(\"You must supply a name when creating a logger.\");\n        }\n\n        var logger = _loggersByName[name];\n        if (!logger) {\n            logger = _loggersByName[name] = new Logger(\n                name,\n                defaultLogger.methodFactory\n            );\n        }\n        return logger;\n    };\n\n    // Grab the current global log variable in case of overwrite\n    var _log = (typeof window !== undefinedType) ? window.log : undefined;\n    defaultLogger.noConflict = function() {\n        if (typeof window !== undefinedType &&\n               window.log === defaultLogger) {\n            window.log = _log;\n        }\n\n        return defaultLogger;\n    };\n\n    defaultLogger.getLoggers = function getLoggers() {\n        return _loggersByName;\n    };\n\n    // ES6 default export, for compatibility\n    defaultLogger['default'] = defaultLogger;\n\n    return defaultLogger;\n}));\n", "/**\n * negotiator\n * Copyright(c) 2012 Isaac Z. Schlueter\n * Copyright(c) 2014 Federico Romero\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = preferredCharsets;\nmodule.exports.preferredCharsets = preferredCharsets;\n\n/**\n * Module variables.\n * @private\n */\n\nvar simpleCharsetRegExp = /^\\s*([^\\s;]+)\\s*(?:;(.*))?$/;\n\n/**\n * Parse the Accept-Charset header.\n * @private\n */\n\nfunction parseAcceptCharset(accept) {\n  var accepts = accept.split(',');\n\n  for (var i = 0, j = 0; i < accepts.length; i++) {\n    var charset = parseCharset(accepts[i].trim(), i);\n\n    if (charset) {\n      accepts[j++] = charset;\n    }\n  }\n\n  // trim accepts\n  accepts.length = j;\n\n  return accepts;\n}\n\n/**\n * Parse a charset from the Accept-Charset header.\n * @private\n */\n\nfunction parseCharset(str, i) {\n  var match = simpleCharsetRegExp.exec(str);\n  if (!match) return null;\n\n  var charset = match[1];\n  var q = 1;\n  if (match[2]) {\n    var params = match[2].split(';')\n    for (var j = 0; j < params.length; j++) {\n      var p = params[j].trim().split('=');\n      if (p[0] === 'q') {\n        q = parseFloat(p[1]);\n        break;\n      }\n    }\n  }\n\n  return {\n    charset: charset,\n    q: q,\n    i: i\n  };\n}\n\n/**\n * Get the priority of a charset.\n * @private\n */\n\nfunction getCharsetPriority(charset, accepted, index) {\n  var priority = {o: -1, q: 0, s: 0};\n\n  for (var i = 0; i < accepted.length; i++) {\n    var spec = specify(charset, accepted[i], index);\n\n    if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {\n      priority = spec;\n    }\n  }\n\n  return priority;\n}\n\n/**\n * Get the specificity of the charset.\n * @private\n */\n\nfunction specify(charset, spec, index) {\n  var s = 0;\n  if(spec.charset.toLowerCase() === charset.toLowerCase()){\n    s |= 1;\n  } else if (spec.charset !== '*' ) {\n    return null\n  }\n\n  return {\n    i: index,\n    o: spec.i,\n    q: spec.q,\n    s: s\n  }\n}\n\n/**\n * Get the preferred charsets from an Accept-Charset header.\n * @public\n */\n\nfunction preferredCharsets(accept, provided) {\n  // RFC 2616 sec 14.2: no header = *\n  var accepts = parseAcceptCharset(accept === undefined ? '*' : accept || '');\n\n  if (!provided) {\n    // sorted list of all charsets\n    return accepts\n      .filter(isQuality)\n      .sort(compareSpecs)\n      .map(getFullCharset);\n  }\n\n  var priorities = provided.map(function getPriority(type, index) {\n    return getCharsetPriority(type, accepts, index);\n  });\n\n  // sorted list of accepted charsets\n  return priorities.filter(isQuality).sort(compareSpecs).map(function getCharset(priority) {\n    return provided[priorities.indexOf(priority)];\n  });\n}\n\n/**\n * Compare two specs.\n * @private\n */\n\nfunction compareSpecs(a, b) {\n  return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;\n}\n\n/**\n * Get full charset string.\n * @private\n */\n\nfunction getFullCharset(spec) {\n  return spec.charset;\n}\n\n/**\n * Check if a spec has any quality.\n * @private\n */\n\nfunction isQuality(spec) {\n  return spec.q > 0;\n}\n", "/**\n * negotiator\n * Copyright(c) 2012 Isaac Z. Schlueter\n * Copyright(c) 2014 Federico Romero\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = preferredEncodings;\nmodule.exports.preferredEncodings = preferredEncodings;\n\n/**\n * Module variables.\n * @private\n */\n\nvar simpleEncodingRegExp = /^\\s*([^\\s;]+)\\s*(?:;(.*))?$/;\n\n/**\n * Parse the Accept-Encoding header.\n * @private\n */\n\nfunction parseAcceptEncoding(accept) {\n  var accepts = accept.split(',');\n  var hasIdentity = false;\n  var minQuality = 1;\n\n  for (var i = 0, j = 0; i < accepts.length; i++) {\n    var encoding = parseEncoding(accepts[i].trim(), i);\n\n    if (encoding) {\n      accepts[j++] = encoding;\n      hasIdentity = hasIdentity || specify('identity', encoding);\n      minQuality = Math.min(minQuality, encoding.q || 1);\n    }\n  }\n\n  if (!hasIdentity) {\n    /*\n     * If identity doesn't explicitly appear in the accept-encoding header,\n     * it's added to the list of acceptable encoding with the lowest q\n     */\n    accepts[j++] = {\n      encoding: 'identity',\n      q: minQuality,\n      i: i\n    };\n  }\n\n  // trim accepts\n  accepts.length = j;\n\n  return accepts;\n}\n\n/**\n * Parse an encoding from the Accept-Encoding header.\n * @private\n */\n\nfunction parseEncoding(str, i) {\n  var match = simpleEncodingRegExp.exec(str);\n  if (!match) return null;\n\n  var encoding = match[1];\n  var q = 1;\n  if (match[2]) {\n    var params = match[2].split(';');\n    for (var j = 0; j < params.length; j++) {\n      var p = params[j].trim().split('=');\n      if (p[0] === 'q') {\n        q = parseFloat(p[1]);\n        break;\n      }\n    }\n  }\n\n  return {\n    encoding: encoding,\n    q: q,\n    i: i\n  };\n}\n\n/**\n * Get the priority of an encoding.\n * @private\n */\n\nfunction getEncodingPriority(encoding, accepted, index) {\n  var priority = {encoding: encoding, o: -1, q: 0, s: 0};\n\n  for (var i = 0; i < accepted.length; i++) {\n    var spec = specify(encoding, accepted[i], index);\n\n    if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {\n      priority = spec;\n    }\n  }\n\n  return priority;\n}\n\n/**\n * Get the specificity of the encoding.\n * @private\n */\n\nfunction specify(encoding, spec, index) {\n  var s = 0;\n  if(spec.encoding.toLowerCase() === encoding.toLowerCase()){\n    s |= 1;\n  } else if (spec.encoding !== '*' ) {\n    return null\n  }\n\n  return {\n    encoding: encoding,\n    i: index,\n    o: spec.i,\n    q: spec.q,\n    s: s\n  }\n};\n\n/**\n * Get the preferred encodings from an Accept-Encoding header.\n * @public\n */\n\nfunction preferredEncodings(accept, provided, preferred) {\n  var accepts = parseAcceptEncoding(accept || '');\n\n  var comparator = preferred ? function comparator (a, b) {\n    if (a.q !== b.q) {\n      return b.q - a.q // higher quality first\n    }\n\n    var aPreferred = preferred.indexOf(a.encoding)\n    var bPreferred = preferred.indexOf(b.encoding)\n\n    if (aPreferred === -1 && bPreferred === -1) {\n      // consider the original specifity/order\n      return (b.s - a.s) || (a.o - b.o) || (a.i - b.i)\n    }\n\n    if (aPreferred !== -1 && bPreferred !== -1) {\n      return aPreferred - bPreferred // consider the preferred order\n    }\n\n    return aPreferred === -1 ? 1 : -1 // preferred first\n  } : compareSpecs;\n\n  if (!provided) {\n    // sorted list of all encodings\n    return accepts\n      .filter(isQuality)\n      .sort(comparator)\n      .map(getFullEncoding);\n  }\n\n  var priorities = provided.map(function getPriority(type, index) {\n    return getEncodingPriority(type, accepts, index);\n  });\n\n  // sorted list of accepted encodings\n  return priorities.filter(isQuality).sort(comparator).map(function getEncoding(priority) {\n    return provided[priorities.indexOf(priority)];\n  });\n}\n\n/**\n * Compare two specs.\n * @private\n */\n\nfunction compareSpecs(a, b) {\n  return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i);\n}\n\n/**\n * Get full encoding string.\n * @private\n */\n\nfunction getFullEncoding(spec) {\n  return spec.encoding;\n}\n\n/**\n * Check if a spec has any quality.\n * @private\n */\n\nfunction isQuality(spec) {\n  return spec.q > 0;\n}\n", "/**\n * negotiator\n * Copyright(c) 2012 Isaac Z. Schlueter\n * Copyright(c) 2014 Federico Romero\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = preferredLanguages;\nmodule.exports.preferredLanguages = preferredLanguages;\n\n/**\n * Module variables.\n * @private\n */\n\nvar simpleLanguageRegExp = /^\\s*([^\\s\\-;]+)(?:-([^\\s;]+))?\\s*(?:;(.*))?$/;\n\n/**\n * Parse the Accept-Language header.\n * @private\n */\n\nfunction parseAcceptLanguage(accept) {\n  var accepts = accept.split(',');\n\n  for (var i = 0, j = 0; i < accepts.length; i++) {\n    var language = parseLanguage(accepts[i].trim(), i);\n\n    if (language) {\n      accepts[j++] = language;\n    }\n  }\n\n  // trim accepts\n  accepts.length = j;\n\n  return accepts;\n}\n\n/**\n * Parse a language from the Accept-Language header.\n * @private\n */\n\nfunction parseLanguage(str, i) {\n  var match = simpleLanguageRegExp.exec(str);\n  if (!match) return null;\n\n  var prefix = match[1]\n  var suffix = match[2]\n  var full = prefix\n\n  if (suffix) full += \"-\" + suffix;\n\n  var q = 1;\n  if (match[3]) {\n    var params = match[3].split(';')\n    for (var j = 0; j < params.length; j++) {\n      var p = params[j].split('=');\n      if (p[0] === 'q') q = parseFloat(p[1]);\n    }\n  }\n\n  return {\n    prefix: prefix,\n    suffix: suffix,\n    q: q,\n    i: i,\n    full: full\n  };\n}\n\n/**\n * Get the priority of a language.\n * @private\n */\n\nfunction getLanguagePriority(language, accepted, index) {\n  var priority = {o: -1, q: 0, s: 0};\n\n  for (var i = 0; i < accepted.length; i++) {\n    var spec = specify(language, accepted[i], index);\n\n    if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {\n      priority = spec;\n    }\n  }\n\n  return priority;\n}\n\n/**\n * Get the specificity of the language.\n * @private\n */\n\nfunction specify(language, spec, index) {\n  var p = parseLanguage(language)\n  if (!p) return null;\n  var s = 0;\n  if(spec.full.toLowerCase() === p.full.toLowerCase()){\n    s |= 4;\n  } else if (spec.prefix.toLowerCase() === p.full.toLowerCase()) {\n    s |= 2;\n  } else if (spec.full.toLowerCase() === p.prefix.toLowerCase()) {\n    s |= 1;\n  } else if (spec.full !== '*' ) {\n    return null\n  }\n\n  return {\n    i: index,\n    o: spec.i,\n    q: spec.q,\n    s: s\n  }\n};\n\n/**\n * Get the preferred languages from an Accept-Language header.\n * @public\n */\n\nfunction preferredLanguages(accept, provided) {\n  // RFC 2616 sec 14.4: no header = *\n  var accepts = parseAcceptLanguage(accept === undefined ? '*' : accept || '');\n\n  if (!provided) {\n    // sorted list of all languages\n    return accepts\n      .filter(isQuality)\n      .sort(compareSpecs)\n      .map(getFullLanguage);\n  }\n\n  var priorities = provided.map(function getPriority(type, index) {\n    return getLanguagePriority(type, accepts, index);\n  });\n\n  // sorted list of accepted languages\n  return priorities.filter(isQuality).sort(compareSpecs).map(function getLanguage(priority) {\n    return provided[priorities.indexOf(priority)];\n  });\n}\n\n/**\n * Compare two specs.\n * @private\n */\n\nfunction compareSpecs(a, b) {\n  return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;\n}\n\n/**\n * Get full language string.\n * @private\n */\n\nfunction getFullLanguage(spec) {\n  return spec.full;\n}\n\n/**\n * Check if a spec has any quality.\n * @private\n */\n\nfunction isQuality(spec) {\n  return spec.q > 0;\n}\n", "/**\n * negotiator\n * Copyright(c) 2012 Isaac Z. Schlueter\n * Copyright(c) 2014 Federico Romero\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = preferredMediaTypes;\nmodule.exports.preferredMediaTypes = preferredMediaTypes;\n\n/**\n * Module variables.\n * @private\n */\n\nvar simpleMediaTypeRegExp = /^\\s*([^\\s\\/;]+)\\/([^;\\s]+)\\s*(?:;(.*))?$/;\n\n/**\n * Parse the Accept header.\n * @private\n */\n\nfunction parseAccept(accept) {\n  var accepts = splitMediaTypes(accept);\n\n  for (var i = 0, j = 0; i < accepts.length; i++) {\n    var mediaType = parseMediaType(accepts[i].trim(), i);\n\n    if (mediaType) {\n      accepts[j++] = mediaType;\n    }\n  }\n\n  // trim accepts\n  accepts.length = j;\n\n  return accepts;\n}\n\n/**\n * Parse a media type from the Accept header.\n * @private\n */\n\nfunction parseMediaType(str, i) {\n  var match = simpleMediaTypeRegExp.exec(str);\n  if (!match) return null;\n\n  var params = Object.create(null);\n  var q = 1;\n  var subtype = match[2];\n  var type = match[1];\n\n  if (match[3]) {\n    var kvps = splitParameters(match[3]).map(splitKeyValuePair);\n\n    for (var j = 0; j < kvps.length; j++) {\n      var pair = kvps[j];\n      var key = pair[0].toLowerCase();\n      var val = pair[1];\n\n      // get the value, unwrapping quotes\n      var value = val && val[0] === '\"' && val[val.length - 1] === '\"'\n        ? val.slice(1, -1)\n        : val;\n\n      if (key === 'q') {\n        q = parseFloat(value);\n        break;\n      }\n\n      // store parameter\n      params[key] = value;\n    }\n  }\n\n  return {\n    type: type,\n    subtype: subtype,\n    params: params,\n    q: q,\n    i: i\n  };\n}\n\n/**\n * Get the priority of a media type.\n * @private\n */\n\nfunction getMediaTypePriority(type, accepted, index) {\n  var priority = {o: -1, q: 0, s: 0};\n\n  for (var i = 0; i < accepted.length; i++) {\n    var spec = specify(type, accepted[i], index);\n\n    if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {\n      priority = spec;\n    }\n  }\n\n  return priority;\n}\n\n/**\n * Get the specificity of the media type.\n * @private\n */\n\nfunction specify(type, spec, index) {\n  var p = parseMediaType(type);\n  var s = 0;\n\n  if (!p) {\n    return null;\n  }\n\n  if(spec.type.toLowerCase() == p.type.toLowerCase()) {\n    s |= 4\n  } else if(spec.type != '*') {\n    return null;\n  }\n\n  if(spec.subtype.toLowerCase() == p.subtype.toLowerCase()) {\n    s |= 2\n  } else if(spec.subtype != '*') {\n    return null;\n  }\n\n  var keys = Object.keys(spec.params);\n  if (keys.length > 0) {\n    if (keys.every(function (k) {\n      return spec.params[k] == '*' || (spec.params[k] || '').toLowerCase() == (p.params[k] || '').toLowerCase();\n    })) {\n      s |= 1\n    } else {\n      return null\n    }\n  }\n\n  return {\n    i: index,\n    o: spec.i,\n    q: spec.q,\n    s: s,\n  }\n}\n\n/**\n * Get the preferred media types from an Accept header.\n * @public\n */\n\nfunction preferredMediaTypes(accept, provided) {\n  // RFC 2616 sec 14.2: no header = */*\n  var accepts = parseAccept(accept === undefined ? '*/*' : accept || '');\n\n  if (!provided) {\n    // sorted list of all types\n    return accepts\n      .filter(isQuality)\n      .sort(compareSpecs)\n      .map(getFullType);\n  }\n\n  var priorities = provided.map(function getPriority(type, index) {\n    return getMediaTypePriority(type, accepts, index);\n  });\n\n  // sorted list of accepted types\n  return priorities.filter(isQuality).sort(compareSpecs).map(function getType(priority) {\n    return provided[priorities.indexOf(priority)];\n  });\n}\n\n/**\n * Compare two specs.\n * @private\n */\n\nfunction compareSpecs(a, b) {\n  return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;\n}\n\n/**\n * Get full type string.\n * @private\n */\n\nfunction getFullType(spec) {\n  return spec.type + '/' + spec.subtype;\n}\n\n/**\n * Check if a spec has any quality.\n * @private\n */\n\nfunction isQuality(spec) {\n  return spec.q > 0;\n}\n\n/**\n * Count the number of quotes in a string.\n * @private\n */\n\nfunction quoteCount(string) {\n  var count = 0;\n  var index = 0;\n\n  while ((index = string.indexOf('\"', index)) !== -1) {\n    count++;\n    index++;\n  }\n\n  return count;\n}\n\n/**\n * Split a key value pair.\n * @private\n */\n\nfunction splitKeyValuePair(str) {\n  var index = str.indexOf('=');\n  var key;\n  var val;\n\n  if (index === -1) {\n    key = str;\n  } else {\n    key = str.slice(0, index);\n    val = str.slice(index + 1);\n  }\n\n  return [key, val];\n}\n\n/**\n * Split an Accept header into media types.\n * @private\n */\n\nfunction splitMediaTypes(accept) {\n  var accepts = accept.split(',');\n\n  for (var i = 1, j = 0; i < accepts.length; i++) {\n    if (quoteCount(accepts[j]) % 2 == 0) {\n      accepts[++j] = accepts[i];\n    } else {\n      accepts[j] += ',' + accepts[i];\n    }\n  }\n\n  // trim accepts\n  accepts.length = j + 1;\n\n  return accepts;\n}\n\n/**\n * Split a string of parameters.\n * @private\n */\n\nfunction splitParameters(str) {\n  var parameters = str.split(';');\n\n  for (var i = 1, j = 0; i < parameters.length; i++) {\n    if (quoteCount(parameters[j]) % 2 == 0) {\n      parameters[++j] = parameters[i];\n    } else {\n      parameters[j] += ';' + parameters[i];\n    }\n  }\n\n  // trim parameters\n  parameters.length = j + 1;\n\n  for (var i = 0; i < parameters.length; i++) {\n    parameters[i] = parameters[i].trim();\n  }\n\n  return parameters;\n}\n", "/*!\n * negotiator\n * Copyright(c) 2012 Federico Romero\n * Copyright(c) 2012-2014 Isaac Z. Schlueter\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\nvar preferredCharsets = require('./lib/charset')\nvar preferredEncodings = require('./lib/encoding')\nvar preferredLanguages = require('./lib/language')\nvar preferredMediaTypes = require('./lib/mediaType')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = Negotiator;\nmodule.exports.Negotiator = Negotiator;\n\n/**\n * Create a Negotiator instance from a request.\n * @param {object} request\n * @public\n */\n\nfunction Negotiator(request) {\n  if (!(this instanceof Negotiator)) {\n    return new Negotiator(request);\n  }\n\n  this.request = request;\n}\n\nNegotiator.prototype.charset = function charset(available) {\n  var set = this.charsets(available);\n  return set && set[0];\n};\n\nNegotiator.prototype.charsets = function charsets(available) {\n  return preferredCharsets(this.request.headers['accept-charset'], available);\n};\n\nNegotiator.prototype.encoding = function encoding(available, opts) {\n  var set = this.encodings(available, opts);\n  return set && set[0];\n};\n\nNegotiator.prototype.encodings = function encodings(available, options) {\n  var opts = options || {};\n  return preferredEncodings(this.request.headers['accept-encoding'], available, opts.preferred);\n};\n\nNegotiator.prototype.language = function language(available) {\n  var set = this.languages(available);\n  return set && set[0];\n};\n\nNegotiator.prototype.languages = function languages(available) {\n  return preferredLanguages(this.request.headers['accept-language'], available);\n};\n\nNegotiator.prototype.mediaType = function mediaType(available) {\n  var set = this.mediaTypes(available);\n  return set && set[0];\n};\n\nNegotiator.prototype.mediaTypes = function mediaTypes(available) {\n  return preferredMediaTypes(this.request.headers.accept, available);\n};\n\n// Backwards compatibility\nNegotiator.prototype.preferredCharset = Negotiator.prototype.charset;\nNegotiator.prototype.preferredCharsets = Negotiator.prototype.charsets;\nNegotiator.prototype.preferredEncoding = Negotiator.prototype.encoding;\nNegotiator.prototype.preferredEncodings = Negotiator.prototype.encodings;\nNegotiator.prototype.preferredLanguage = Negotiator.prototype.language;\nNegotiator.prototype.preferredLanguages = Negotiator.prototype.languages;\nNegotiator.prototype.preferredMediaType = Negotiator.prototype.mediaType;\nNegotiator.prototype.preferredMediaTypes = Negotiator.prototype.mediaTypes;\n", "import type { CacheHint, CachePolicy } from '@apollo/cache-control-types';\n\nexport function newCachePolicy(): CachePolicy {\n  return {\n    maxAge: undefined,\n    scope: undefined,\n    restrict(hint: CacheHint) {\n      if (\n        hint.maxAge !== undefined &&\n        (this.maxAge === undefined || hint.maxAge < this.maxAge)\n      ) {\n        this.maxAge = hint.maxAge;\n      }\n      if (hint.scope !== undefined && this.scope !== 'PRIVATE') {\n        this.scope = hint.scope;\n      }\n    },\n    replace(hint: CacheHint) {\n      if (hint.maxAge !== undefined) {\n        this.maxAge = hint.maxAge;\n      }\n      if (hint.scope !== undefined) {\n        this.scope = hint.scope;\n      }\n    },\n    policyIfCacheable() {\n      if (this.maxAge === undefined || this.maxAge === 0) {\n        return null;\n      }\n      return { maxAge: this.maxAge, scope: this.scope ?? 'PUBLIC' };\n    },\n  };\n}\n", "var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n  return toString.call(arr) == '[object Array]';\n};\n", "'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n", "'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Object;\n", "'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n", "'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n", "'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n", "'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n", "'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n", "'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n", "'use strict';\n\n/** @type {import('./abs')} */\nmodule.exports = Math.abs;\n", "'use strict';\n\n/** @type {import('./floor')} */\nmodule.exports = Math.floor;\n", "'use strict';\n\n/** @type {import('./max')} */\nmodule.exports = Math.max;\n", "'use strict';\n\n/** @type {import('./min')} */\nmodule.exports = Math.min;\n", "'use strict';\n\n/** @type {import('./pow')} */\nmodule.exports = Math.pow;\n", "'use strict';\n\n/** @type {import('./round')} */\nmodule.exports = Math.round;\n", "'use strict';\n\n/** @type {import('./isNaN')} */\nmodule.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n", "'use strict';\n\nvar $isNaN = require('./isNaN');\n\n/** @type {import('./sign')} */\nmodule.exports = function sign(number) {\n\tif ($isNaN(number) || number === 0) {\n\t\treturn number;\n\t}\n\treturn number < 0 ? -1 : +1;\n};\n", "'use strict';\n\n/** @type {import('./gOPD')} */\nmodule.exports = Object.getOwnPropertyDescriptor;\n", "'use strict';\n\n/** @type {import('.')} */\nvar $gOPD = require('./gOPD');\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n", "'use strict';\n\n/** @type {import('.')} */\nvar $defineProperty = Object.defineProperty || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n", "'use strict';\n\n/** @type {import('./shams')} */\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\t/** @type {{ [k in symbol]?: unknown }} */\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (var _ in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {PropertyDescriptor} */ (Object.getOwnPropertyDescriptor(obj, sym));\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n", "'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n", "'use strict';\n\n/** @type {import('./Reflect.getPrototypeOf')} */\nmodule.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null;\n", "'use strict';\n\nvar $Object = require('es-object-atoms');\n\n/** @type {import('./Object.getPrototypeOf')} */\nmodule.exports = $Object.getPrototypeOf || null;\n", "'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n    var arr = [];\n\n    for (var i = 0; i < a.length; i += 1) {\n        arr[i] = a[i];\n    }\n    for (var j = 0; j < b.length; j += 1) {\n        arr[j + a.length] = b[j];\n    }\n\n    return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n    var arr = [];\n    for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n        arr[j] = arrLike[i];\n    }\n    return arr;\n};\n\nvar joiny = function (arr, joiner) {\n    var str = '';\n    for (var i = 0; i < arr.length; i += 1) {\n        str += arr[i];\n        if (i + 1 < arr.length) {\n            str += joiner;\n        }\n    }\n    return str;\n};\n\nmodule.exports = function bind(that) {\n    var target = this;\n    if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n        throw new TypeError(ERROR_MESSAGE + target);\n    }\n    var args = slicy(arguments, 1);\n\n    var bound;\n    var binder = function () {\n        if (this instanceof bound) {\n            var result = target.apply(\n                this,\n                concatty(args, arguments)\n            );\n            if (Object(result) === result) {\n                return result;\n            }\n            return this;\n        }\n        return target.apply(\n            that,\n            concatty(args, arguments)\n        );\n\n    };\n\n    var boundLength = max(0, target.length - args.length);\n    var boundArgs = [];\n    for (var i = 0; i < boundLength; i++) {\n        boundArgs[i] = '$' + i;\n    }\n\n    bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n    if (target.prototype) {\n        var Empty = function Empty() {};\n        Empty.prototype = target.prototype;\n        bound.prototype = new Empty();\n        Empty.prototype = null;\n    }\n\n    return bound;\n};\n", "'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n", "'use strict';\n\n/** @type {import('./functionCall')} */\nmodule.exports = Function.prototype.call;\n", "'use strict';\n\n/** @type {import('./functionApply')} */\nmodule.exports = Function.prototype.apply;\n", "'use strict';\n\n/** @type {import('./reflectApply')} */\nmodule.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply;\n", "'use strict';\n\nvar bind = require('function-bind');\n\nvar $apply = require('./functionApply');\nvar $call = require('./functionCall');\nvar $reflectApply = require('./reflectApply');\n\n/** @type {import('./actualApply')} */\nmodule.exports = $reflectApply || bind.call($call, $apply);\n", "'use strict';\n\nvar bind = require('function-bind');\nvar $TypeError = require('es-errors/type');\n\nvar $call = require('./functionCall');\nvar $actualApply = require('./actualApply');\n\n/** @type {(args: [Function, thisArg?: unknown, ...args: unknown[]]) => Function} TODO FIXME, find a way to use import('.') */\nmodule.exports = function callBindBasic(args) {\n\tif (args.length < 1 || typeof args[0] !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\treturn $actualApply(bind, $call, args);\n};\n", "'use strict';\n\nvar callBind = require('call-bind-apply-helpers');\nvar gOPD = require('gopd');\n\nvar hasProtoAccessor;\ntry {\n\t// eslint-disable-next-line no-extra-parens, no-proto\n\thasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype;\n} catch (e) {\n\tif (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') {\n\t\tthrow e;\n\t}\n}\n\n// eslint-disable-next-line no-extra-parens\nvar desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__'));\n\nvar $Object = Object;\nvar $getPrototypeOf = $Object.getPrototypeOf;\n\n/** @type {import('./get')} */\nmodule.exports = desc && typeof desc.get === 'function'\n\t? callBind([desc.get])\n\t: typeof $getPrototypeOf === 'function'\n\t\t? /** @type {import('./get')} */ function getDunder(value) {\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\treturn $getPrototypeOf(value == null ? value : $Object(value));\n\t\t}\n\t\t: false;\n", "'use strict';\n\nvar reflectGetProto = require('./Reflect.getPrototypeOf');\nvar originalGetProto = require('./Object.getPrototypeOf');\n\nvar getDunderProto = require('dunder-proto/get');\n\n/** @type {import('.')} */\nmodule.exports = reflectGetProto\n\t? function getProto(O) {\n\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\treturn reflectGetProto(O);\n\t}\n\t: originalGetProto\n\t\t? function getProto(O) {\n\t\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\t\tthrow new TypeError('getProto: not an object');\n\t\t\t}\n\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\treturn originalGetProto(O);\n\t\t}\n\t\t: getDunderProto\n\t\t\t? function getProto(O) {\n\t\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\t\treturn getDunderProto(O);\n\t\t\t}\n\t\t\t: null;\n", "'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n", "'use strict';\n\nvar undefined;\n\nvar $Object = require('es-object-atoms');\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar abs = require('math-intrinsics/abs');\nvar floor = require('math-intrinsics/floor');\nvar max = require('math-intrinsics/max');\nvar min = require('math-intrinsics/min');\nvar pow = require('math-intrinsics/pow');\nvar round = require('math-intrinsics/round');\nvar sign = require('math-intrinsics/sign');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = require('gopd');\nvar $defineProperty = require('es-define-property');\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = require('get-proto');\nvar $ObjectGPO = require('get-proto/Object.getPrototypeOf');\nvar $ReflectGPO = require('get-proto/Reflect.getPrototypeOf');\n\nvar $apply = require('call-bind-apply-helpers/functionApply');\nvar $call = require('call-bind-apply-helpers/functionCall');\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float16Array%': typeof Float16Array === 'undefined' ? undefined : Float16Array,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': $Object,\n\t'%Object.getOwnPropertyDescriptor%': $gOPD,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\n\n\t'%Function.prototype.call%': $call,\n\t'%Function.prototype.apply%': $apply,\n\t'%Object.defineProperty%': $defineProperty,\n\t'%Object.getPrototypeOf%': $ObjectGPO,\n\t'%Math.abs%': abs,\n\t'%Math.floor%': floor,\n\t'%Math.max%': max,\n\t'%Math.min%': min,\n\t'%Math.pow%': pow,\n\t'%Math.round%': round,\n\t'%Math.sign%': sign,\n\t'%Reflect.getPrototypeOf%': $ReflectGPO\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call($call, Array.prototype.concat);\nvar $spliceApply = bind.call($apply, Array.prototype.splice);\nvar $replace = bind.call($call, String.prototype.replace);\nvar $strSlice = bind.call($call, String.prototype.slice);\nvar $exec = bind.call($call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBindBasic = require('call-bind-apply-helpers');\n\n/** @type {(thisArg: string, searchString: string, position?: number) => number} */\nvar $indexOf = callBindBasic([GetIntrinsic('%String.prototype.indexOf%')]);\n\n/** @type {import('.')} */\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\t/* eslint no-extra-parens: 0 */\n\n\tvar intrinsic = /** @type {(this: unknown, ...args: unknown[]) => unknown} */ (GetIntrinsic(name, !!allowMissing));\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBindBasic(/** @type {const} */ ([intrinsic]));\n\t}\n\treturn intrinsic;\n};\n", "'use strict';\n\nvar fnToStr = Function.prototype.toString;\nvar reflectApply = typeof Reflect === 'object' && Reflect !== null && Reflect.apply;\nvar badArrayLike;\nvar isCallableMarker;\nif (typeof reflectApply === 'function' && typeof Object.defineProperty === 'function') {\n\ttry {\n\t\tbadArrayLike = Object.defineProperty({}, 'length', {\n\t\t\tget: function () {\n\t\t\t\tthrow isCallableMarker;\n\t\t\t}\n\t\t});\n\t\tisCallableMarker = {};\n\t\t// eslint-disable-next-line no-throw-literal\n\t\treflectApply(function () { throw 42; }, null, badArrayLike);\n\t} catch (_) {\n\t\tif (_ !== isCallableMarker) {\n\t\t\treflectApply = null;\n\t\t}\n\t}\n} else {\n\treflectApply = null;\n}\n\nvar constructorRegex = /^\\s*class\\b/;\nvar isES6ClassFn = function isES6ClassFunction(value) {\n\ttry {\n\t\tvar fnStr = fnToStr.call(value);\n\t\treturn constructorRegex.test(fnStr);\n\t} catch (e) {\n\t\treturn false; // not a function\n\t}\n};\n\nvar tryFunctionObject = function tryFunctionToStr(value) {\n\ttry {\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tfnToStr.call(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar toStr = Object.prototype.toString;\nvar objectClass = '[object Object]';\nvar fnClass = '[object Function]';\nvar genClass = '[object GeneratorFunction]';\nvar ddaClass = '[object HTMLAllCollection]'; // IE 11\nvar ddaClass2 = '[object HTML document.all class]';\nvar ddaClass3 = '[object HTMLCollection]'; // IE 9-10\nvar hasToStringTag = typeof Symbol === 'function' && !!Symbol.toStringTag; // better: use `has-tostringtag`\n\nvar isIE68 = !(0 in [,]); // eslint-disable-line no-sparse-arrays, comma-spacing\n\nvar isDDA = function isDocumentDotAll() { return false; };\nif (typeof document === 'object') {\n\t// Firefox 3 canonicalizes DDA to undefined when it's not accessed directly\n\tvar all = document.all;\n\tif (toStr.call(all) === toStr.call(document.all)) {\n\t\tisDDA = function isDocumentDotAll(value) {\n\t\t\t/* globals document: false */\n\t\t\t// in IE 6-8, typeof document.all is \"object\" and it's truthy\n\t\t\tif ((isIE68 || !value) && (typeof value === 'undefined' || typeof value === 'object')) {\n\t\t\t\ttry {\n\t\t\t\t\tvar str = toStr.call(value);\n\t\t\t\t\treturn (\n\t\t\t\t\t\tstr === ddaClass\n\t\t\t\t\t\t|| str === ddaClass2\n\t\t\t\t\t\t|| str === ddaClass3 // opera 12.16\n\t\t\t\t\t\t|| str === objectClass // IE 6-8\n\t\t\t\t\t) && value('') == null; // eslint-disable-line eqeqeq\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\t}\n}\n\nmodule.exports = reflectApply\n\t? function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\ttry {\n\t\t\treflectApply(value, null, badArrayLike);\n\t\t} catch (e) {\n\t\t\tif (e !== isCallableMarker) { return false; }\n\t\t}\n\t\treturn !isES6ClassFn(value) && tryFunctionObject(value);\n\t}\n\t: function isCallable(value) {\n\t\tif (isDDA(value)) { return true; }\n\t\tif (!value) { return false; }\n\t\tif (typeof value !== 'function' && typeof value !== 'object') { return false; }\n\t\tif (hasToStringTag) { return tryFunctionObject(value); }\n\t\tif (isES6ClassFn(value)) { return false; }\n\t\tvar strClass = toStr.call(value);\n\t\tif (strClass !== fnClass && strClass !== genClass && !(/^\\[object HTML/).test(strClass)) { return false; }\n\t\treturn tryFunctionObject(value);\n\t};\n", "'use strict';\n\nvar isCallable = require('is-callable');\n\nvar toStr = Object.prototype.toString;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\n/** @type {<This, A extends readonly unknown[]>(arr: A, iterator: (this: This | void, value: A[number], index: number, arr: A) => void, receiver: This | undefined) => void} */\nvar forEachArray = function forEachArray(array, iterator, receiver) {\n    for (var i = 0, len = array.length; i < len; i++) {\n        if (hasOwnProperty.call(array, i)) {\n            if (receiver == null) {\n                iterator(array[i], i, array);\n            } else {\n                iterator.call(receiver, array[i], i, array);\n            }\n        }\n    }\n};\n\n/** @type {<This, S extends string>(string: S, iterator: (this: This | void, value: S[number], index: number, string: S) => void, receiver: This | undefined) => void} */\nvar forEachString = function forEachString(string, iterator, receiver) {\n    for (var i = 0, len = string.length; i < len; i++) {\n        // no such thing as a sparse string.\n        if (receiver == null) {\n            iterator(string.charAt(i), i, string);\n        } else {\n            iterator.call(receiver, string.charAt(i), i, string);\n        }\n    }\n};\n\n/** @type {<This, O>(obj: O, iterator: (this: This | void, value: O[keyof O], index: keyof O, obj: O) => void, receiver: This | undefined) => void} */\nvar forEachObject = function forEachObject(object, iterator, receiver) {\n    for (var k in object) {\n        if (hasOwnProperty.call(object, k)) {\n            if (receiver == null) {\n                iterator(object[k], k, object);\n            } else {\n                iterator.call(receiver, object[k], k, object);\n            }\n        }\n    }\n};\n\n/** @type {(x: unknown) => x is readonly unknown[]} */\nfunction isArray(x) {\n    return toStr.call(x) === '[object Array]';\n}\n\n/** @type {import('.')._internal} */\nmodule.exports = function forEach(list, iterator, thisArg) {\n    if (!isCallable(iterator)) {\n        throw new TypeError('iterator must be a function');\n    }\n\n    var receiver;\n    if (arguments.length >= 3) {\n        receiver = thisArg;\n    }\n\n    if (isArray(list)) {\n        forEachArray(list, iterator, receiver);\n    } else if (typeof list === 'string') {\n        forEachString(list, iterator, receiver);\n    } else {\n        forEachObject(list, iterator, receiver);\n    }\n};\n", "'use strict';\n\n/** @type {import('.')} */\nmodule.exports = [\n\t'Float16Array',\n\t'Float32Array',\n\t'Float64Array',\n\t'Int8Array',\n\t'Int16Array',\n\t'Int32Array',\n\t'Uint8Array',\n\t'Uint8ClampedArray',\n\t'Uint16Array',\n\t'Uint32Array',\n\t'BigInt64Array',\n\t'BigUint64Array'\n];\n", "'use strict';\n\nvar possibleNames = require('possible-typed-array-names');\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\n\n/** @type {import('.')} */\nmodule.exports = function availableTypedArrays() {\n\tvar /** @type {ReturnType<typeof availableTypedArrays>} */ out = [];\n\tfor (var i = 0; i < possibleNames.length; i++) {\n\t\tif (typeof g[possibleNames[i]] === 'function') {\n\t\t\t// @ts-expect-error\n\t\t\tout[out.length] = possibleNames[i];\n\t\t}\n\t}\n\treturn out;\n};\n", "'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\n\nvar gopd = require('gopd');\n\n/** @type {import('.')} */\nmodule.exports = function defineDataProperty(\n\tobj,\n\tproperty,\n\tvalue\n) {\n\tif (!obj || (typeof obj !== 'object' && typeof obj !== 'function')) {\n\t\tthrow new $TypeError('`obj` must be an object or a function`');\n\t}\n\tif (typeof property !== 'string' && typeof property !== 'symbol') {\n\t\tthrow new $TypeError('`property` must be a string or a symbol`');\n\t}\n\tif (arguments.length > 3 && typeof arguments[3] !== 'boolean' && arguments[3] !== null) {\n\t\tthrow new $TypeError('`nonEnumerable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 4 && typeof arguments[4] !== 'boolean' && arguments[4] !== null) {\n\t\tthrow new $TypeError('`nonWritable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 5 && typeof arguments[5] !== 'boolean' && arguments[5] !== null) {\n\t\tthrow new $TypeError('`nonConfigurable`, if provided, must be a boolean or null');\n\t}\n\tif (arguments.length > 6 && typeof arguments[6] !== 'boolean') {\n\t\tthrow new $TypeError('`loose`, if provided, must be a boolean');\n\t}\n\n\tvar nonEnumerable = arguments.length > 3 ? arguments[3] : null;\n\tvar nonWritable = arguments.length > 4 ? arguments[4] : null;\n\tvar nonConfigurable = arguments.length > 5 ? arguments[5] : null;\n\tvar loose = arguments.length > 6 ? arguments[6] : false;\n\n\t/* @type {false | TypedPropertyDescriptor<unknown>} */\n\tvar desc = !!gopd && gopd(obj, property);\n\n\tif ($defineProperty) {\n\t\t$defineProperty(obj, property, {\n\t\t\tconfigurable: nonConfigurable === null && desc ? desc.configurable : !nonConfigurable,\n\t\t\tenumerable: nonEnumerable === null && desc ? desc.enumerable : !nonEnumerable,\n\t\t\tvalue: value,\n\t\t\twritable: nonWritable === null && desc ? desc.writable : !nonWritable\n\t\t});\n\t} else if (loose || (!nonEnumerable && !nonWritable && !nonConfigurable)) {\n\t\t// must fall back to [[Set]], and was not explicitly asked to make non-enumerable, non-writable, or non-configurable\n\t\tobj[property] = value; // eslint-disable-line no-param-reassign\n\t} else {\n\t\tthrow new $SyntaxError('This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.');\n\t}\n};\n", "'use strict';\n\nvar $defineProperty = require('es-define-property');\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\treturn !!$defineProperty;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!$defineProperty) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar gOPD = require('gopd');\n\nvar $TypeError = require('es-errors/type');\nvar $floor = GetIntrinsic('%Math.floor%');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionLength(fn, length) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tif (typeof length !== 'number' || length < 0 || length > 0xFFFFFFFF || $floor(length) !== length) {\n\t\tthrow new $TypeError('`length` must be a positive 32-bit integer');\n\t}\n\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\n\tvar functionLengthIsConfigurable = true;\n\tvar functionLengthIsWritable = true;\n\tif ('length' in fn && gOPD) {\n\t\tvar desc = gOPD(fn, 'length');\n\t\tif (desc && !desc.configurable) {\n\t\t\tfunctionLengthIsConfigurable = false;\n\t\t}\n\t\tif (desc && !desc.writable) {\n\t\t\tfunctionLengthIsWritable = false;\n\t\t}\n\t}\n\n\tif (functionLengthIsConfigurable || functionLengthIsWritable || !loose) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'length', length, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'length', length);\n\t\t}\n\t}\n\treturn fn;\n};\n", "'use strict';\n\nvar bind = require('function-bind');\nvar $apply = require('./functionApply');\nvar actualApply = require('./actualApply');\n\n/** @type {import('./applyBind')} */\nmodule.exports = function applyBind() {\n\treturn actualApply(bind, $apply, arguments);\n};\n", "'use strict';\n\nvar setFunctionLength = require('set-function-length');\n\nvar $defineProperty = require('es-define-property');\n\nvar callBindBasic = require('call-bind-apply-helpers');\nvar applyBind = require('call-bind-apply-helpers/applyBind');\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = callBindBasic(arguments);\n\tvar adjustedLength = originalFunction.length - (arguments.length - 1);\n\treturn setFunctionLength(\n\t\tfunc,\n\t\t1 + (adjustedLength > 0 ? adjustedLength : 0),\n\t\ttrue\n\t);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n", "'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n", "'use strict';\n\nvar forEach = require('for-each');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBind = require('call-bind');\nvar callBound = require('call-bound');\nvar gOPD = require('gopd');\nvar getProto = require('get-proto');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $slice = callBound('String.prototype.slice');\n\n/** @type {<T = unknown>(array: readonly T[], value: unknown) => number} */\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\n/** @typedef {import('./types').Getter} Getter */\n/** @type {import('./types').Cache} */\nvar cache = { __proto__: null };\nif (hasToStringTag && gOPD && getProto) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr && getProto) {\n\t\t\tvar proto = getProto(arr);\n\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor && proto) {\n\t\t\t\tvar superProto = getProto(proto);\n\t\t\t\t// @ts-expect-error TS won't narrow inside a closure\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\t// @ts-expect-error TODO: fix\n\t\t\tcache['$' + typedArray] = callBind(descriptor.get);\n\t\t}\n\t});\n} else {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tvar fn = arr.slice || arr.set;\n\t\tif (fn) {\n\t\t\tcache[\n\t\t\t\t/** @type {`$${import('.').TypedArrayName}`} */ ('$' + typedArray)\n\t\t\t] = /** @type {import('./types').BoundSlice | import('./types').BoundSet} */ (\n\t\t\t\t// @ts-expect-error TODO FIXME\n\t\t\t\tcallBind(fn)\n\t\t\t);\n\t\t}\n\t});\n}\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\t/** @type {ReturnType<typeof tryAllTypedArrays>} */ var found = false;\n\tforEach(\n\t\t/** @type {Record<`\\$${import('.').TypedArrayName}`, Getter>} */ (cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */\n\t\tfunction (getter, typedArray) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error a throw is fine here\n\t\t\t\t\tif ('$' + getter(value) === typedArray) {\n\t\t\t\t\t\tfound = /** @type {import('.').TypedArrayName} */ ($slice(typedArray, 1));\n\t\t\t\t\t}\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {(value: object) => false | import('.').TypedArrayName} */\nvar trySlices = function tryAllSlices(value) {\n\t/** @type {ReturnType<typeof tryAllSlices>} */ var found = false;\n\tforEach(\n\t\t/** @type {Record<`\\$${import('.').TypedArrayName}`, Getter>} */(cache),\n\t\t/** @type {(getter: Getter, name: `\\$${import('.').TypedArrayName}`) => void} */ function (getter, name) {\n\t\t\tif (!found) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error a throw is fine here\n\t\t\t\t\tgetter(value);\n\t\t\t\t\tfound = /** @type {import('.').TypedArrayName} */ ($slice(name, 1));\n\t\t\t\t} catch (e) { /**/ }\n\t\t\t}\n\t\t}\n\t);\n\treturn found;\n};\n\n/** @type {import('.')} */\nmodule.exports = function whichTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag) {\n\t\t/** @type {string} */\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\tif ($indexOf(typedArrays, tag) > -1) {\n\t\t\treturn tag;\n\t\t}\n\t\tif (tag !== 'Object') {\n\t\t\treturn false;\n\t\t}\n\t\t// node < 0.6 hits here on real Typed Arrays\n\t\treturn trySlices(value);\n\t}\n\tif (!gOPD) { return null; } // unknown engine\n\treturn tryTypedArrays(value);\n};\n", "'use strict';\n\nvar whichTypedArray = require('which-typed-array');\n\n/** @type {import('.')} */\nmodule.exports = function isTypedArray(value) {\n\treturn !!whichTypedArray(value);\n};\n", "'use strict';\n\nvar $TypeError = require('es-errors/type');\n\nvar callBound = require('call-bound');\n\n/** @type {undefined | ((thisArg: import('.').TypedArray) => Buffer<ArrayBufferLike>)} */\nvar $typedArrayBuffer = callBound('TypedArray.prototype.buffer', true);\n\nvar isTypedArray = require('is-typed-array');\n\n/** @type {import('.')} */\n// node <= 0.10, < 0.11.4 has a nonconfigurable own property instead of a prototype getter\nmodule.exports = $typedArrayBuffer || function typedArrayBuffer(x) {\n\tif (!isTypedArray(x)) {\n\t\tthrow new $TypeError('Not a Typed Array');\n\t}\n\treturn x.buffer;\n};\n", "'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\nvar isArray = require('isarray');\nvar typedArrayBuffer = require('typed-array-buffer');\n\nvar isView = ArrayBuffer.isView || function isView(obj) {\n\ttry {\n\t\ttypedArrayBuffer(obj);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\nvar useUint8Array = typeof Uint8Array !== 'undefined';\nvar useArrayBuffer = typeof ArrayBuffer !== 'undefined'\n\t&& typeof Uint8Array !== 'undefined';\nvar useFromArrayBuffer = useArrayBuffer && (Buffer.prototype instanceof Uint8Array || Buffer.TYPED_ARRAY_SUPPORT);\n\nmodule.exports = function toBuffer(data, encoding) {\n\tif (Buffer.isBuffer(data)) {\n\t\tif (data.constructor && !('isBuffer' in data)) {\n\t\t\t// probably a SlowBuffer\n\t\t\treturn Buffer.from(data);\n\t\t}\n\t\treturn data;\n\t}\n\n\tif (typeof data === 'string') {\n\t\treturn Buffer.from(data, encoding);\n\t}\n\n\t/*\n\t * Wrap any TypedArray instances and DataViews\n\t * Makes sense only on engines with full TypedArray support -- let Buffer detect that\n\t */\n\tif (useArrayBuffer && isView(data)) {\n\t\t// Bug in Node.js <6.3.1, which treats this as out-of-bounds\n\t\tif (data.byteLength === 0) {\n\t\t\treturn Buffer.alloc(0);\n\t\t}\n\n\t\t// When Buffer is based on Uint8Array, we can just construct it from ArrayBuffer\n\t\tif (useFromArrayBuffer) {\n\t\t\tvar res = Buffer.from(data.buffer, data.byteOffset, data.byteLength);\n\t\t\t/*\n\t\t\t * Recheck result size, as offset/length doesn't work on Node.js <5.10\n\t\t\t * We just go to Uint8Array case if this fails\n\t\t\t */\n\t\t\tif (res.byteLength === data.byteLength) {\n\t\t\t\treturn res;\n\t\t\t}\n\t\t}\n\n\t\t// Convert to Uint8Array bytes and then to Buffer\n\t\tvar uint8 = data instanceof Uint8Array ? data : new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n\t\tvar result = Buffer.from(uint8);\n\n\t\t/*\n\t\t * Let's recheck that conversion succeeded\n\t\t * We have .length but not .byteLength when useFromArrayBuffer is false\n\t\t */\n\t\tif (result.length === data.byteLength) {\n\t\t\treturn result;\n\t\t}\n\t}\n\n\t/*\n\t * Uint8Array in engines where Buffer.from might not work with ArrayBuffer, just copy over\n\t * Doesn't make sense with other TypedArray instances\n\t */\n\tif (useUint8Array && data instanceof Uint8Array) {\n\t\treturn Buffer.from(data);\n\t}\n\n\tvar isArr = isArray(data);\n\tif (isArr) {\n\t\tfor (var i = 0; i < data.length; i += 1) {\n\t\t\tvar x = data[i];\n\t\t\tif (\n\t\t\t\ttypeof x !== 'number'\n\t\t\t\t|| x < 0\n\t\t\t\t|| x > 255\n\t\t\t\t|| ~~x !== x // NaN and integer check\n\t\t\t) {\n\t\t\t\tthrow new RangeError('Array items must be numbers in the range 0-255.');\n\t\t\t}\n\t\t}\n\t}\n\n\t/*\n\t * Old Buffer polyfill on an engine that doesn't have TypedArray support\n\t * Also, this is from a different Buffer polyfill implementation then we have, as instanceof check failed\n\t * Convert to our current Buffer implementation\n\t */\n\tif (\n\t\tisArr || (\n\t\t\tBuffer.isBuffer(data)\n\t\t\t&& data.constructor\n\t\t\t&& typeof data.constructor.isBuffer === 'function'\n\t\t\t&& data.constructor.isBuffer(data)\n\t\t)\n\t) {\n\t\treturn Buffer.from(data);\n\t}\n\n\tthrow new TypeError('The \"data\" argument must be a string, an Array, a Buffer, a Uint8Array, or a DataView.');\n};\n", "'use strict';\n\nvar Buffer = require('safe-buffer').Buffer;\nvar toBuffer = require('to-buffer');\n\n// prototype class for hash functions\nfunction Hash(blockSize, finalSize) {\n\tthis._block = Buffer.alloc(blockSize);\n\tthis._finalSize = finalSize;\n\tthis._blockSize = blockSize;\n\tthis._len = 0;\n}\n\nHash.prototype.update = function (data, enc) {\n\t/* eslint no-param-reassign: 0 */\n\tdata = toBuffer(data, enc || 'utf8');\n\n\tvar block = this._block;\n\tvar blockSize = this._blockSize;\n\tvar length = data.length;\n\tvar accum = this._len;\n\n\tfor (var offset = 0; offset < length;) {\n\t\tvar assigned = accum % blockSize;\n\t\tvar remainder = Math.min(length - offset, blockSize - assigned);\n\n\t\tfor (var i = 0; i < remainder; i++) {\n\t\t\tblock[assigned + i] = data[offset + i];\n\t\t}\n\n\t\taccum += remainder;\n\t\toffset += remainder;\n\n\t\tif ((accum % blockSize) === 0) {\n\t\t\tthis._update(block);\n\t\t}\n\t}\n\n\tthis._len += length;\n\treturn this;\n};\n\nHash.prototype.digest = function (enc) {\n\tvar rem = this._len % this._blockSize;\n\n\tthis._block[rem] = 0x80;\n\n\t/*\n\t * zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n\t * non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n\t */\n\tthis._block.fill(0, rem + 1);\n\n\tif (rem >= this._finalSize) {\n\t\tthis._update(this._block);\n\t\tthis._block.fill(0);\n\t}\n\n\tvar bits = this._len * 8;\n\n\t// uint32\n\tif (bits <= 0xffffffff) {\n\t\tthis._block.writeUInt32BE(bits, this._blockSize - 4);\n\n\t\t// uint64\n\t} else {\n\t\tvar lowBits = (bits & 0xffffffff) >>> 0;\n\t\tvar highBits = (bits - lowBits) / 0x100000000;\n\n\t\tthis._block.writeUInt32BE(highBits, this._blockSize - 8);\n\t\tthis._block.writeUInt32BE(lowBits, this._blockSize - 4);\n\t}\n\n\tthis._update(this._block);\n\tvar hash = this._hash();\n\n\treturn enc ? hash.toString(enc) : hash;\n};\n\nHash.prototype._update = function () {\n\tthrow new Error('_update must be implemented by subclass');\n};\n\nmodule.exports = Hash;\n", "'use strict';\n\n/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = require('inherits');\nvar Hash = require('./hash');\nvar Buffer = require('safe-buffer').Buffer;\n\nvar K = [\n\t0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n];\n\nvar W = new Array(80);\n\nfunction Sha() {\n\tthis.init();\n\tthis._w = W;\n\n\tHash.call(this, 64, 56);\n}\n\ninherits(Sha, Hash);\n\nSha.prototype.init = function () {\n\tthis._a = 0x67452301;\n\tthis._b = 0xefcdab89;\n\tthis._c = 0x98badcfe;\n\tthis._d = 0x10325476;\n\tthis._e = 0xc3d2e1f0;\n\n\treturn this;\n};\n\nfunction rotl5(num) {\n\treturn (num << 5) | (num >>> 27);\n}\n\nfunction rotl30(num) {\n\treturn (num << 30) | (num >>> 2);\n}\n\nfunction ft(s, b, c, d) {\n\tif (s === 0) {\n\t\treturn (b & c) | (~b & d);\n\t}\n\tif (s === 2) {\n\t\treturn (b & c) | (b & d) | (c & d);\n\t}\n\treturn b ^ c ^ d;\n}\n\nSha.prototype._update = function (M) {\n\tvar w = this._w;\n\n\tvar a = this._a | 0;\n\tvar b = this._b | 0;\n\tvar c = this._c | 0;\n\tvar d = this._d | 0;\n\tvar e = this._e | 0;\n\n\tfor (var i = 0; i < 16; ++i) {\n\t\tw[i] = M.readInt32BE(i * 4);\n\t}\n\tfor (; i < 80; ++i) {\n\t\tw[i] = w[i - 3] ^ w[i - 8] ^ w[i - 14] ^ w[i - 16];\n\t}\n\n\tfor (var j = 0; j < 80; ++j) {\n\t\tvar s = ~~(j / 20);\n\t\tvar t = (rotl5(a) + ft(s, b, c, d) + e + w[j] + K[s]) | 0;\n\n\t\te = d;\n\t\td = c;\n\t\tc = rotl30(b);\n\t\tb = a;\n\t\ta = t;\n\t}\n\n\tthis._a = (a + this._a) | 0;\n\tthis._b = (b + this._b) | 0;\n\tthis._c = (c + this._c) | 0;\n\tthis._d = (d + this._d) | 0;\n\tthis._e = (e + this._e) | 0;\n};\n\nSha.prototype._hash = function () {\n\tvar H = Buffer.allocUnsafe(20);\n\n\tH.writeInt32BE(this._a | 0, 0);\n\tH.writeInt32BE(this._b | 0, 4);\n\tH.writeInt32BE(this._c | 0, 8);\n\tH.writeInt32BE(this._d | 0, 12);\n\tH.writeInt32BE(this._e | 0, 16);\n\n\treturn H;\n};\n\nmodule.exports = Sha;\n", "'use strict';\n\n/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = require('inherits');\nvar Hash = require('./hash');\nvar Buffer = require('safe-buffer').Buffer;\n\nvar K = [\n\t0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n];\n\nvar W = new Array(80);\n\nfunction Sha1() {\n\tthis.init();\n\tthis._w = W;\n\n\tHash.call(this, 64, 56);\n}\n\ninherits(Sha1, Hash);\n\nSha1.prototype.init = function () {\n\tthis._a = 0x67452301;\n\tthis._b = 0xefcdab89;\n\tthis._c = 0x98badcfe;\n\tthis._d = 0x10325476;\n\tthis._e = 0xc3d2e1f0;\n\n\treturn this;\n};\n\nfunction rotl1(num) {\n\treturn (num << 1) | (num >>> 31);\n}\n\nfunction rotl5(num) {\n\treturn (num << 5) | (num >>> 27);\n}\n\nfunction rotl30(num) {\n\treturn (num << 30) | (num >>> 2);\n}\n\nfunction ft(s, b, c, d) {\n\tif (s === 0) {\n\t\treturn (b & c) | (~b & d);\n\t}\n\tif (s === 2) {\n\t\treturn (b & c) | (b & d) | (c & d);\n\t}\n\treturn b ^ c ^ d;\n}\n\nSha1.prototype._update = function (M) {\n\tvar w = this._w;\n\n\tvar a = this._a | 0;\n\tvar b = this._b | 0;\n\tvar c = this._c | 0;\n\tvar d = this._d | 0;\n\tvar e = this._e | 0;\n\n\tfor (var i = 0; i < 16; ++i) {\n\t\tw[i] = M.readInt32BE(i * 4);\n\t}\n\tfor (; i < 80; ++i) {\n\t\tw[i] = rotl1(w[i - 3] ^ w[i - 8] ^ w[i - 14] ^ w[i - 16]);\n\t}\n\n\tfor (var j = 0; j < 80; ++j) {\n\t\tvar s = ~~(j / 20);\n\t\tvar t = (rotl5(a) + ft(s, b, c, d) + e + w[j] + K[s]) | 0;\n\n\t\te = d;\n\t\td = c;\n\t\tc = rotl30(b);\n\t\tb = a;\n\t\ta = t;\n\t}\n\n\tthis._a = (a + this._a) | 0;\n\tthis._b = (b + this._b) | 0;\n\tthis._c = (c + this._c) | 0;\n\tthis._d = (d + this._d) | 0;\n\tthis._e = (e + this._e) | 0;\n};\n\nSha1.prototype._hash = function () {\n\tvar H = Buffer.allocUnsafe(20);\n\n\tH.writeInt32BE(this._a | 0, 0);\n\tH.writeInt32BE(this._b | 0, 4);\n\tH.writeInt32BE(this._c | 0, 8);\n\tH.writeInt32BE(this._d | 0, 12);\n\tH.writeInt32BE(this._e | 0, 16);\n\n\treturn H;\n};\n\nmodule.exports = Sha1;\n", "'use strict';\n\n/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits');\nvar Hash = require('./hash');\nvar Buffer = require('safe-buffer').Buffer;\n\nvar K = [\n\t0x428A2F98,\n\t0x71374491,\n\t0xB5C0FBCF,\n\t0xE9B5DBA5,\n\t0x3956C25B,\n\t0x59F111F1,\n\t0x923F82A4,\n\t0xAB1C5ED5,\n\t0xD807AA98,\n\t0x12835B01,\n\t0x243185BE,\n\t0x550C7DC3,\n\t0x72BE5D74,\n\t0x80DEB1FE,\n\t0x9BDC06A7,\n\t0xC19BF174,\n\t0xE49B69C1,\n\t0xEFBE4786,\n\t0x0FC19DC6,\n\t0x240CA1CC,\n\t0x2DE92C6F,\n\t0x4A7484AA,\n\t0x5CB0A9DC,\n\t0x76F988DA,\n\t0x983E5152,\n\t0xA831C66D,\n\t0xB00327C8,\n\t0xBF597FC7,\n\t0xC6E00BF3,\n\t0xD5A79147,\n\t0x06CA6351,\n\t0x14292967,\n\t0x27B70A85,\n\t0x2E1B2138,\n\t0x4D2C6DFC,\n\t0x53380D13,\n\t0x650A7354,\n\t0x766A0ABB,\n\t0x81C2C92E,\n\t0x92722C85,\n\t0xA2BFE8A1,\n\t0xA81A664B,\n\t0xC24B8B70,\n\t0xC76C51A3,\n\t0xD192E819,\n\t0xD6990624,\n\t0xF40E3585,\n\t0x106AA070,\n\t0x19A4C116,\n\t0x1E376C08,\n\t0x2748774C,\n\t0x34B0BCB5,\n\t0x391C0CB3,\n\t0x4ED8AA4A,\n\t0x5B9CCA4F,\n\t0x682E6FF3,\n\t0x748F82EE,\n\t0x78A5636F,\n\t0x84C87814,\n\t0x8CC70208,\n\t0x90BEFFFA,\n\t0xA4506CEB,\n\t0xBEF9A3F7,\n\t0xC67178F2\n];\n\nvar W = new Array(64);\n\nfunction Sha256() {\n\tthis.init();\n\n\tthis._w = W; // new Array(64)\n\n\tHash.call(this, 64, 56);\n}\n\ninherits(Sha256, Hash);\n\nSha256.prototype.init = function () {\n\tthis._a = 0x6a09e667;\n\tthis._b = 0xbb67ae85;\n\tthis._c = 0x3c6ef372;\n\tthis._d = 0xa54ff53a;\n\tthis._e = 0x510e527f;\n\tthis._f = 0x9b05688c;\n\tthis._g = 0x1f83d9ab;\n\tthis._h = 0x5be0cd19;\n\n\treturn this;\n};\n\nfunction ch(x, y, z) {\n\treturn z ^ (x & (y ^ z));\n}\n\nfunction maj(x, y, z) {\n\treturn (x & y) | (z & (x | y));\n}\n\nfunction sigma0(x) {\n\treturn ((x >>> 2) | (x << 30)) ^ ((x >>> 13) | (x << 19)) ^ ((x >>> 22) | (x << 10));\n}\n\nfunction sigma1(x) {\n\treturn ((x >>> 6) | (x << 26)) ^ ((x >>> 11) | (x << 21)) ^ ((x >>> 25) | (x << 7));\n}\n\nfunction gamma0(x) {\n\treturn ((x >>> 7) | (x << 25)) ^ ((x >>> 18) | (x << 14)) ^ (x >>> 3);\n}\n\nfunction gamma1(x) {\n\treturn ((x >>> 17) | (x << 15)) ^ ((x >>> 19) | (x << 13)) ^ (x >>> 10);\n}\n\nSha256.prototype._update = function (M) {\n\tvar w = this._w;\n\n\tvar a = this._a | 0;\n\tvar b = this._b | 0;\n\tvar c = this._c | 0;\n\tvar d = this._d | 0;\n\tvar e = this._e | 0;\n\tvar f = this._f | 0;\n\tvar g = this._g | 0;\n\tvar h = this._h | 0;\n\n\tfor (var i = 0; i < 16; ++i) {\n\t\tw[i] = M.readInt32BE(i * 4);\n\t}\n\tfor (; i < 64; ++i) {\n\t\tw[i] = (gamma1(w[i - 2]) + w[i - 7] + gamma0(w[i - 15]) + w[i - 16]) | 0;\n\t}\n\n\tfor (var j = 0; j < 64; ++j) {\n\t\tvar T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + w[j]) | 0;\n\t\tvar T2 = (sigma0(a) + maj(a, b, c)) | 0;\n\n\t\th = g;\n\t\tg = f;\n\t\tf = e;\n\t\te = (d + T1) | 0;\n\t\td = c;\n\t\tc = b;\n\t\tb = a;\n\t\ta = (T1 + T2) | 0;\n\t}\n\n\tthis._a = (a + this._a) | 0;\n\tthis._b = (b + this._b) | 0;\n\tthis._c = (c + this._c) | 0;\n\tthis._d = (d + this._d) | 0;\n\tthis._e = (e + this._e) | 0;\n\tthis._f = (f + this._f) | 0;\n\tthis._g = (g + this._g) | 0;\n\tthis._h = (h + this._h) | 0;\n};\n\nSha256.prototype._hash = function () {\n\tvar H = Buffer.allocUnsafe(32);\n\n\tH.writeInt32BE(this._a, 0);\n\tH.writeInt32BE(this._b, 4);\n\tH.writeInt32BE(this._c, 8);\n\tH.writeInt32BE(this._d, 12);\n\tH.writeInt32BE(this._e, 16);\n\tH.writeInt32BE(this._f, 20);\n\tH.writeInt32BE(this._g, 24);\n\tH.writeInt32BE(this._h, 28);\n\n\treturn H;\n};\n\nmodule.exports = Sha256;\n", "'use strict';\n\n/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = require('inherits');\nvar Sha256 = require('./sha256');\nvar Hash = require('./hash');\nvar Buffer = require('safe-buffer').Buffer;\n\nvar W = new Array(64);\n\nfunction Sha224() {\n\tthis.init();\n\n\tthis._w = W; // new Array(64)\n\n\tHash.call(this, 64, 56);\n}\n\ninherits(Sha224, Sha256);\n\nSha224.prototype.init = function () {\n\tthis._a = 0xc1059ed8;\n\tthis._b = 0x367cd507;\n\tthis._c = 0x3070dd17;\n\tthis._d = 0xf70e5939;\n\tthis._e = 0xffc00b31;\n\tthis._f = 0x68581511;\n\tthis._g = 0x64f98fa7;\n\tthis._h = 0xbefa4fa4;\n\n\treturn this;\n};\n\nSha224.prototype._hash = function () {\n\tvar H = Buffer.allocUnsafe(28);\n\n\tH.writeInt32BE(this._a, 0);\n\tH.writeInt32BE(this._b, 4);\n\tH.writeInt32BE(this._c, 8);\n\tH.writeInt32BE(this._d, 12);\n\tH.writeInt32BE(this._e, 16);\n\tH.writeInt32BE(this._f, 20);\n\tH.writeInt32BE(this._g, 24);\n\n\treturn H;\n};\n\nmodule.exports = Sha224;\n", "'use strict';\n\nvar inherits = require('inherits');\nvar Hash = require('./hash');\nvar Buffer = require('safe-buffer').Buffer;\n\nvar K = [\n\t0x428a2f98,\n\t0xd728ae22,\n\t0x71374491,\n\t0x23ef65cd,\n\t0xb5c0fbcf,\n\t0xec4d3b2f,\n\t0xe9b5dba5,\n\t0x8189dbbc,\n\t0x3956c25b,\n\t0xf348b538,\n\t0x59f111f1,\n\t0xb605d019,\n\t0x923f82a4,\n\t0xaf194f9b,\n\t0xab1c5ed5,\n\t0xda6d8118,\n\t0xd807aa98,\n\t0xa3030242,\n\t0x12835b01,\n\t0x45706fbe,\n\t0x243185be,\n\t0x4ee4b28c,\n\t0x550c7dc3,\n\t0xd5ffb4e2,\n\t0x72be5d74,\n\t0xf27b896f,\n\t0x80deb1fe,\n\t0x3b1696b1,\n\t0x9bdc06a7,\n\t0x25c71235,\n\t0xc19bf174,\n\t0xcf692694,\n\t0xe49b69c1,\n\t0x9ef14ad2,\n\t0xefbe4786,\n\t0x384f25e3,\n\t0x0fc19dc6,\n\t0x8b8cd5b5,\n\t0x240ca1cc,\n\t0x77ac9c65,\n\t0x2de92c6f,\n\t0x592b0275,\n\t0x4a7484aa,\n\t0x6ea6e483,\n\t0x5cb0a9dc,\n\t0xbd41fbd4,\n\t0x76f988da,\n\t0x831153b5,\n\t0x983e5152,\n\t0xee66dfab,\n\t0xa831c66d,\n\t0x2db43210,\n\t0xb00327c8,\n\t0x98fb213f,\n\t0xbf597fc7,\n\t0xbeef0ee4,\n\t0xc6e00bf3,\n\t0x3da88fc2,\n\t0xd5a79147,\n\t0x930aa725,\n\t0x06ca6351,\n\t0xe003826f,\n\t0x14292967,\n\t0x0a0e6e70,\n\t0x27b70a85,\n\t0x46d22ffc,\n\t0x2e1b2138,\n\t0x5c26c926,\n\t0x4d2c6dfc,\n\t0x5ac42aed,\n\t0x53380d13,\n\t0x9d95b3df,\n\t0x650a7354,\n\t0x8baf63de,\n\t0x766a0abb,\n\t0x3c77b2a8,\n\t0x81c2c92e,\n\t0x47edaee6,\n\t0x92722c85,\n\t0x1482353b,\n\t0xa2bfe8a1,\n\t0x4cf10364,\n\t0xa81a664b,\n\t0xbc423001,\n\t0xc24b8b70,\n\t0xd0f89791,\n\t0xc76c51a3,\n\t0x0654be30,\n\t0xd192e819,\n\t0xd6ef5218,\n\t0xd6990624,\n\t0x5565a910,\n\t0xf40e3585,\n\t0x5771202a,\n\t0x106aa070,\n\t0x32bbd1b8,\n\t0x19a4c116,\n\t0xb8d2d0c8,\n\t0x1e376c08,\n\t0x5141ab53,\n\t0x2748774c,\n\t0xdf8eeb99,\n\t0x34b0bcb5,\n\t0xe19b48a8,\n\t0x391c0cb3,\n\t0xc5c95a63,\n\t0x4ed8aa4a,\n\t0xe3418acb,\n\t0x5b9cca4f,\n\t0x7763e373,\n\t0x682e6ff3,\n\t0xd6b2b8a3,\n\t0x748f82ee,\n\t0x5defb2fc,\n\t0x78a5636f,\n\t0x43172f60,\n\t0x84c87814,\n\t0xa1f0ab72,\n\t0x8cc70208,\n\t0x1a6439ec,\n\t0x90befffa,\n\t0x23631e28,\n\t0xa4506ceb,\n\t0xde82bde9,\n\t0xbef9a3f7,\n\t0xb2c67915,\n\t0xc67178f2,\n\t0xe372532b,\n\t0xca273ece,\n\t0xea26619c,\n\t0xd186b8c7,\n\t0x21c0c207,\n\t0xeada7dd6,\n\t0xcde0eb1e,\n\t0xf57d4f7f,\n\t0xee6ed178,\n\t0x06f067aa,\n\t0x72176fba,\n\t0x0a637dc5,\n\t0xa2c898a6,\n\t0x113f9804,\n\t0xbef90dae,\n\t0x1b710b35,\n\t0x131c471b,\n\t0x28db77f5,\n\t0x23047d84,\n\t0x32caab7b,\n\t0x40c72493,\n\t0x3c9ebe0a,\n\t0x15c9bebc,\n\t0x431d67c4,\n\t0x9c100d4c,\n\t0x4cc5d4be,\n\t0xcb3e42b6,\n\t0x597f299c,\n\t0xfc657e2a,\n\t0x5fcb6fab,\n\t0x3ad6faec,\n\t0x6c44198c,\n\t0x4a475817\n];\n\nvar W = new Array(160);\n\nfunction Sha512() {\n\tthis.init();\n\tthis._w = W;\n\n\tHash.call(this, 128, 112);\n}\n\ninherits(Sha512, Hash);\n\nSha512.prototype.init = function () {\n\tthis._ah = 0x6a09e667;\n\tthis._bh = 0xbb67ae85;\n\tthis._ch = 0x3c6ef372;\n\tthis._dh = 0xa54ff53a;\n\tthis._eh = 0x510e527f;\n\tthis._fh = 0x9b05688c;\n\tthis._gh = 0x1f83d9ab;\n\tthis._hh = 0x5be0cd19;\n\n\tthis._al = 0xf3bcc908;\n\tthis._bl = 0x84caa73b;\n\tthis._cl = 0xfe94f82b;\n\tthis._dl = 0x5f1d36f1;\n\tthis._el = 0xade682d1;\n\tthis._fl = 0x2b3e6c1f;\n\tthis._gl = 0xfb41bd6b;\n\tthis._hl = 0x137e2179;\n\n\treturn this;\n};\n\nfunction Ch(x, y, z) {\n\treturn z ^ (x & (y ^ z));\n}\n\nfunction maj(x, y, z) {\n\treturn (x & y) | (z & (x | y));\n}\n\nfunction sigma0(x, xl) {\n\treturn ((x >>> 28) | (xl << 4)) ^ ((xl >>> 2) | (x << 30)) ^ ((xl >>> 7) | (x << 25));\n}\n\nfunction sigma1(x, xl) {\n\treturn ((x >>> 14) | (xl << 18)) ^ ((x >>> 18) | (xl << 14)) ^ ((xl >>> 9) | (x << 23));\n}\n\nfunction Gamma0(x, xl) {\n\treturn ((x >>> 1) | (xl << 31)) ^ ((x >>> 8) | (xl << 24)) ^ (x >>> 7);\n}\n\nfunction Gamma0l(x, xl) {\n\treturn ((x >>> 1) | (xl << 31)) ^ ((x >>> 8) | (xl << 24)) ^ ((x >>> 7) | (xl << 25));\n}\n\nfunction Gamma1(x, xl) {\n\treturn ((x >>> 19) | (xl << 13)) ^ ((xl >>> 29) | (x << 3)) ^ (x >>> 6);\n}\n\nfunction Gamma1l(x, xl) {\n\treturn ((x >>> 19) | (xl << 13)) ^ ((xl >>> 29) | (x << 3)) ^ ((x >>> 6) | (xl << 26));\n}\n\nfunction getCarry(a, b) {\n\treturn (a >>> 0) < (b >>> 0) ? 1 : 0;\n}\n\nSha512.prototype._update = function (M) {\n\tvar w = this._w;\n\n\tvar ah = this._ah | 0;\n\tvar bh = this._bh | 0;\n\tvar ch = this._ch | 0;\n\tvar dh = this._dh | 0;\n\tvar eh = this._eh | 0;\n\tvar fh = this._fh | 0;\n\tvar gh = this._gh | 0;\n\tvar hh = this._hh | 0;\n\n\tvar al = this._al | 0;\n\tvar bl = this._bl | 0;\n\tvar cl = this._cl | 0;\n\tvar dl = this._dl | 0;\n\tvar el = this._el | 0;\n\tvar fl = this._fl | 0;\n\tvar gl = this._gl | 0;\n\tvar hl = this._hl | 0;\n\n\tfor (var i = 0; i < 32; i += 2) {\n\t\tw[i] = M.readInt32BE(i * 4);\n\t\tw[i + 1] = M.readInt32BE((i * 4) + 4);\n\t}\n\tfor (; i < 160; i += 2) {\n\t\tvar xh = w[i - (15 * 2)];\n\t\tvar xl = w[i - (15 * 2) + 1];\n\t\tvar gamma0 = Gamma0(xh, xl);\n\t\tvar gamma0l = Gamma0l(xl, xh);\n\n\t\txh = w[i - (2 * 2)];\n\t\txl = w[i - (2 * 2) + 1];\n\t\tvar gamma1 = Gamma1(xh, xl);\n\t\tvar gamma1l = Gamma1l(xl, xh);\n\n\t\t// w[i] = gamma0 + w[i - 7] + gamma1 + w[i - 16]\n\t\tvar Wi7h = w[i - (7 * 2)];\n\t\tvar Wi7l = w[i - (7 * 2) + 1];\n\n\t\tvar Wi16h = w[i - (16 * 2)];\n\t\tvar Wi16l = w[i - (16 * 2) + 1];\n\n\t\tvar Wil = (gamma0l + Wi7l) | 0;\n\t\tvar Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0;\n\t\tWil = (Wil + gamma1l) | 0;\n\t\tWih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0;\n\t\tWil = (Wil + Wi16l) | 0;\n\t\tWih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0;\n\n\t\tw[i] = Wih;\n\t\tw[i + 1] = Wil;\n\t}\n\n\tfor (var j = 0; j < 160; j += 2) {\n\t\tWih = w[j];\n\t\tWil = w[j + 1];\n\n\t\tvar majh = maj(ah, bh, ch);\n\t\tvar majl = maj(al, bl, cl);\n\n\t\tvar sigma0h = sigma0(ah, al);\n\t\tvar sigma0l = sigma0(al, ah);\n\t\tvar sigma1h = sigma1(eh, el);\n\t\tvar sigma1l = sigma1(el, eh);\n\n\t\t// t1 = h + sigma1 + ch + K[j] + w[j]\n\t\tvar Kih = K[j];\n\t\tvar Kil = K[j + 1];\n\n\t\tvar chh = Ch(eh, fh, gh);\n\t\tvar chl = Ch(el, fl, gl);\n\n\t\tvar t1l = (hl + sigma1l) | 0;\n\t\tvar t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0;\n\t\tt1l = (t1l + chl) | 0;\n\t\tt1h = (t1h + chh + getCarry(t1l, chl)) | 0;\n\t\tt1l = (t1l + Kil) | 0;\n\t\tt1h = (t1h + Kih + getCarry(t1l, Kil)) | 0;\n\t\tt1l = (t1l + Wil) | 0;\n\t\tt1h = (t1h + Wih + getCarry(t1l, Wil)) | 0;\n\n\t\t// t2 = sigma0 + maj\n\t\tvar t2l = (sigma0l + majl) | 0;\n\t\tvar t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0;\n\n\t\thh = gh;\n\t\thl = gl;\n\t\tgh = fh;\n\t\tgl = fl;\n\t\tfh = eh;\n\t\tfl = el;\n\t\tel = (dl + t1l) | 0;\n\t\teh = (dh + t1h + getCarry(el, dl)) | 0;\n\t\tdh = ch;\n\t\tdl = cl;\n\t\tch = bh;\n\t\tcl = bl;\n\t\tbh = ah;\n\t\tbl = al;\n\t\tal = (t1l + t2l) | 0;\n\t\tah = (t1h + t2h + getCarry(al, t1l)) | 0;\n\t}\n\n\tthis._al = (this._al + al) | 0;\n\tthis._bl = (this._bl + bl) | 0;\n\tthis._cl = (this._cl + cl) | 0;\n\tthis._dl = (this._dl + dl) | 0;\n\tthis._el = (this._el + el) | 0;\n\tthis._fl = (this._fl + fl) | 0;\n\tthis._gl = (this._gl + gl) | 0;\n\tthis._hl = (this._hl + hl) | 0;\n\n\tthis._ah = (this._ah + ah + getCarry(this._al, al)) | 0;\n\tthis._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0;\n\tthis._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0;\n\tthis._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0;\n\tthis._eh = (this._eh + eh + getCarry(this._el, el)) | 0;\n\tthis._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0;\n\tthis._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0;\n\tthis._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0;\n};\n\nSha512.prototype._hash = function () {\n\tvar H = Buffer.allocUnsafe(64);\n\n\tfunction writeInt64BE(h, l, offset) {\n\t\tH.writeInt32BE(h, offset);\n\t\tH.writeInt32BE(l, offset + 4);\n\t}\n\n\twriteInt64BE(this._ah, this._al, 0);\n\twriteInt64BE(this._bh, this._bl, 8);\n\twriteInt64BE(this._ch, this._cl, 16);\n\twriteInt64BE(this._dh, this._dl, 24);\n\twriteInt64BE(this._eh, this._el, 32);\n\twriteInt64BE(this._fh, this._fl, 40);\n\twriteInt64BE(this._gh, this._gl, 48);\n\twriteInt64BE(this._hh, this._hl, 56);\n\n\treturn H;\n};\n\nmodule.exports = Sha512;\n", "'use strict';\n\nvar inherits = require('inherits');\nvar SHA512 = require('./sha512');\nvar Hash = require('./hash');\nvar Buffer = require('safe-buffer').Buffer;\n\nvar W = new Array(160);\n\nfunction Sha384() {\n\tthis.init();\n\tthis._w = W;\n\n\tHash.call(this, 128, 112);\n}\n\ninherits(Sha384, SHA512);\n\nSha384.prototype.init = function () {\n\tthis._ah = 0xcbbb9d5d;\n\tthis._bh = 0x629a292a;\n\tthis._ch = 0x9159015a;\n\tthis._dh = 0x152fecd8;\n\tthis._eh = 0x67332667;\n\tthis._fh = 0x8eb44a87;\n\tthis._gh = 0xdb0c2e0d;\n\tthis._hh = 0x47b5481d;\n\n\tthis._al = 0xc1059ed8;\n\tthis._bl = 0x367cd507;\n\tthis._cl = 0x3070dd17;\n\tthis._dl = 0xf70e5939;\n\tthis._el = 0xffc00b31;\n\tthis._fl = 0x68581511;\n\tthis._gl = 0x64f98fa7;\n\tthis._hl = 0xbefa4fa4;\n\n\treturn this;\n};\n\nSha384.prototype._hash = function () {\n\tvar H = Buffer.allocUnsafe(48);\n\n\tfunction writeInt64BE(h, l, offset) {\n\t\tH.writeInt32BE(h, offset);\n\t\tH.writeInt32BE(l, offset + 4);\n\t}\n\n\twriteInt64BE(this._ah, this._al, 0);\n\twriteInt64BE(this._bh, this._bl, 8);\n\twriteInt64BE(this._ch, this._cl, 16);\n\twriteInt64BE(this._dh, this._dl, 24);\n\twriteInt64BE(this._eh, this._el, 32);\n\twriteInt64BE(this._fh, this._fl, 40);\n\n\treturn H;\n};\n\nmodule.exports = Sha384;\n", "'use strict';\n\nmodule.exports = function SHA(algorithm) {\n\tvar alg = algorithm.toLowerCase();\n\n\tvar Algorithm = module.exports[alg];\n\tif (!Algorithm) {\n\t\tthrow new Error(alg + ' is not supported (we accept pull requests)');\n\t}\n\n\treturn new Algorithm();\n};\n\nmodule.exports.sha = require('./sha');\nmodule.exports.sha1 = require('./sha1');\nmodule.exports.sha224 = require('./sha224');\nmodule.exports.sha256 = require('./sha256');\nmodule.exports.sha384 = require('./sha384');\nmodule.exports.sha512 = require('./sha512');\n", "import { isNodeLike } from \"@apollo/utils.isnodelike\";\n\nexport function createHash(kind: string): import(\"crypto\").Hash {\n  // Some Node-like environments (like next.js Turbopack) apparently\n  // don't have module.require, so double-check before we call it.\n  // (But don't change the value of isNodeLike because other logic depends on it,\n  // like Apollo Server signal handling defaults.) This does mean that\n  // Turbopack will call sha.js instead of the native crypto module, but\n  // it sure beats throwing because module.require does not exist.\n  if (isNodeLike && module.require) {\n    // Use module.require instead of just require to avoid bundling whatever\n    // crypto polyfills a non-Node bundler might fall back to.\n    return module.require(\"crypto\").createHash(kind);\n  }\n  return require(\"sha.js\")(kind);\n}\n", "import type { BaseContext, ApolloServerPlugin } from './externalTypes/index.js';\n\n// This file's exports should not be exported from the overall\n// @apollo/server module.\n\n// The internal plugins implement this interface which\n// ApolloServer.ensurePluginInstantiation uses to figure out if the plugins have\n// already been installed (or explicitly disabled via the matching Disable\n// plugins).\nexport interface InternalApolloServerPlugin<TContext extends BaseContext>\n  extends ApolloServerPlugin<TContext> {\n  // Used to identify a few specific plugins that are instantiated\n  // by default if not explicitly used or disabled.\n  __internal_plugin_id__: InternalPluginId;\n  __is_disabled_plugin__: boolean;\n}\n\n// Helper function for writing internal plugins which lets you write an object\n// that is type-checked as InternalApolloServerPlugin but is still only of type\n// ApolloServerPlugin (as appropriate for externally-exported plugin-returning\n// functions).\nexport function internalPlugin<TContext extends BaseContext>(\n  p: InternalApolloServerPlugin<TContext>,\n): ApolloServerPlugin<TContext> {\n  return p;\n}\n\nexport type InternalPluginId =\n  | 'CacheControl'\n  | 'LandingPageDisabled'\n  | 'SchemaReporting'\n  | 'InlineTrace'\n  | 'UsageReporting'\n  | 'DisableSuggestions';\n\nexport function pluginIsInternal<TContext extends BaseContext>(\n  plugin: ApolloServerPlugin<TContext>,\n): plugin is InternalApolloServerPlugin<TContext> {\n  // We could call the function and compare it to the list above, but this seems\n  // good enough.\n  return '__internal_plugin_id__' in plugin;\n}\n", "\"use strict\";\n\nexports.removeLeadingAndTrailingHTTPWhitespace = string => {\n  return string.replace(/^[ \\t\\n\\r]+/u, \"\").replace(/[ \\t\\n\\r]+$/u, \"\");\n};\n\nexports.removeTrailingHTTPWhitespace = string => {\n  return string.replace(/[ \\t\\n\\r]+$/u, \"\");\n};\n\nexports.isHTTPWhitespaceChar = char => {\n  return char === \" \" || char === \"\\t\" || char === \"\\n\" || char === \"\\r\";\n};\n\nexports.solelyContainsHTTPTokenCodePoints = string => {\n  return /^[-!#$%&'*+.^_`|~A-Za-z0-9]*$/u.test(string);\n};\n\nexports.soleyContainsHTTPQuotedStringTokenCodePoints = string => {\n  return /^[\\t\\u0020-\\u007E\\u0080-\\u00FF]*$/u.test(string);\n};\n\nexports.asciiLowercase = string => {\n  return string.replace(/[A-Z]/ug, l => l.toLowerCase());\n};\n\n// This variant only implements it with the extract-value flag set.\nexports.collectAnHTTPQuotedString = (input, position) => {\n  let value = \"\";\n\n  position++;\n\n  while (true) {\n    while (position < input.length && input[position] !== \"\\\"\" && input[position] !== \"\\\\\") {\n      value += input[position];\n      ++position;\n    }\n\n    if (position >= input.length) {\n      break;\n    }\n\n    const quoteOrBackslash = input[position];\n    ++position;\n\n    if (quoteOrBackslash === \"\\\\\") {\n      if (position >= input.length) {\n        value += \"\\\\\";\n        break;\n      }\n\n      value += input[position];\n      ++position;\n    } else {\n      break;\n    }\n  }\n\n  return [value, position];\n};\n", "\"use strict\";\nconst {\n  asciiLowercase,\n  solelyContainsHTTPTokenCodePoints,\n  soleyContainsHTTPQuotedStringTokenCodePoints\n} = require(\"./utils.js\");\n\nmodule.exports = class MIMETypeParameters {\n  constructor(map) {\n    this._map = map;\n  }\n\n  get size() {\n    return this._map.size;\n  }\n\n  get(name) {\n    name = asciiLowercase(String(name));\n    return this._map.get(name);\n  }\n\n  has(name) {\n    name = asciiLowercase(String(name));\n    return this._map.has(name);\n  }\n\n  set(name, value) {\n    name = asciiLowercase(String(name));\n    value = String(value);\n\n    if (!solelyContainsHTTPTokenCodePoints(name)) {\n      throw new Error(`Invalid MIME type parameter name \"${name}\": only HTTP token code points are valid.`);\n    }\n    if (!soleyContainsHTTPQuotedStringTokenCodePoints(value)) {\n      throw new Error(`Invalid MIME type parameter value \"${value}\": only HTTP quoted-string token code points are ` +\n                      `valid.`);\n    }\n\n    return this._map.set(name, value);\n  }\n\n  clear() {\n    this._map.clear();\n  }\n\n  delete(name) {\n    name = asciiLowercase(String(name));\n    return this._map.delete(name);\n  }\n\n  forEach(callbackFn, thisArg) {\n    this._map.forEach(callbackFn, thisArg);\n  }\n\n  keys() {\n    return this._map.keys();\n  }\n\n  values() {\n    return this._map.values();\n  }\n\n  entries() {\n    return this._map.entries();\n  }\n\n  [Symbol.iterator]() {\n    return this._map[Symbol.iterator]();\n  }\n};\n", "\"use strict\";\nconst {\n  removeLeadingAndTrailingHTTPWhitespace,\n  removeTrailingHTTPWhitespace,\n  isHTTPWhitespaceChar,\n  solelyContainsHTTPTokenCodePoints,\n  soleyContainsHTTPQuotedStringTokenCodePoints,\n  asciiLowercase,\n  collectAnHTTPQuotedString\n} = require(\"./utils.js\");\n\nmodule.exports = input => {\n  input = removeLeadingAndTrailingHTTPWhitespace(input);\n\n  let position = 0;\n  let type = \"\";\n  while (position < input.length && input[position] !== \"/\") {\n    type += input[position];\n    ++position;\n  }\n\n  if (type.length === 0 || !solelyContainsHTTPTokenCodePoints(type)) {\n    return null;\n  }\n\n  if (position >= input.length) {\n    return null;\n  }\n\n  // Skips past \"/\"\n  ++position;\n\n  let subtype = \"\";\n  while (position < input.length && input[position] !== \";\") {\n    subtype += input[position];\n    ++position;\n  }\n\n  subtype = removeTrailingHTTPWhitespace(subtype);\n\n  if (subtype.length === 0 || !solelyContainsHTTPTokenCodePoints(subtype)) {\n    return null;\n  }\n\n  const mimeType = {\n    type: asciiLowercase(type),\n    subtype: asciiLowercase(subtype),\n    parameters: new Map()\n  };\n\n  while (position < input.length) {\n    // Skip past \";\"\n    ++position;\n\n    while (isHTTPWhitespaceChar(input[position])) {\n      ++position;\n    }\n\n    let parameterName = \"\";\n    while (position < input.length && input[position] !== \";\" && input[position] !== \"=\") {\n      parameterName += input[position];\n      ++position;\n    }\n    parameterName = asciiLowercase(parameterName);\n\n    if (position < input.length) {\n      if (input[position] === \";\") {\n        continue;\n      }\n\n      // Skip past \"=\"\n      ++position;\n    }\n\n    let parameterValue = null;\n    if (input[position] === \"\\\"\") {\n      [parameterValue, position] = collectAnHTTPQuotedString(input, position);\n\n      while (position < input.length && input[position] !== \";\") {\n        ++position;\n      }\n    } else {\n      parameterValue = \"\";\n      while (position < input.length && input[position] !== \";\") {\n        parameterValue += input[position];\n        ++position;\n      }\n\n      parameterValue = removeTrailingHTTPWhitespace(parameterValue);\n\n      if (parameterValue === \"\") {\n        continue;\n      }\n    }\n\n    if (parameterName.length > 0 &&\n        solelyContainsHTTPTokenCodePoints(parameterName) &&\n        soleyContainsHTTPQuotedStringTokenCodePoints(parameterValue) &&\n        !mimeType.parameters.has(parameterName)) {\n      mimeType.parameters.set(parameterName, parameterValue);\n    }\n  }\n\n  return mimeType;\n};\n", "\"use strict\";\nconst { solelyContainsHTTPTokenCodePoints } = require(\"./utils.js\");\n\nmodule.exports = mimeType => {\n  let serialization = `${mimeType.type}/${mimeType.subtype}`;\n\n  if (mimeType.parameters.size === 0) {\n    return serialization;\n  }\n\n  for (let [name, value] of mimeType.parameters) {\n    serialization += \";\";\n    serialization += name;\n    serialization += \"=\";\n\n    if (!solelyContainsHTTPTokenCodePoints(value) || value.length === 0) {\n      value = value.replace(/([\"\\\\])/ug, \"\\\\$1\");\n      value = `\"${value}\"`;\n    }\n\n    serialization += value;\n  }\n\n  return serialization;\n};\n", "\"use strict\";\nconst MIMETypeParameters = require(\"./mime-type-parameters.js\");\nconst parse = require(\"./parser.js\");\nconst serialize = require(\"./serializer.js\");\nconst {\n  asciiLowercase,\n  solelyContainsHTTPTokenCodePoints\n} = require(\"./utils.js\");\n\nmodule.exports = class MIMEType {\n  constructor(string) {\n    string = String(string);\n    const result = parse(string);\n    if (result === null) {\n      throw new Error(`Could not parse MIME type string \"${string}\"`);\n    }\n\n    this._type = result.type;\n    this._subtype = result.subtype;\n    this._parameters = new MIMETypeParameters(result.parameters);\n  }\n\n  static parse(string) {\n    try {\n      return new this(string);\n    } catch (e) {\n      return null;\n    }\n  }\n\n  get essence() {\n    return `${this.type}/${this.subtype}`;\n  }\n\n  get type() {\n    return this._type;\n  }\n\n  set type(value) {\n    value = asciiLowercase(String(value));\n\n    if (value.length === 0) {\n      throw new Error(\"Invalid type: must be a non-empty string\");\n    }\n    if (!solelyContainsHTTPTokenCodePoints(value)) {\n      throw new Error(`Invalid type ${value}: must contain only HTTP token code points`);\n    }\n\n    this._type = value;\n  }\n\n  get subtype() {\n    return this._subtype;\n  }\n\n  set subtype(value) {\n    value = asciiLowercase(String(value));\n\n    if (value.length === 0) {\n      throw new Error(\"Invalid subtype: must be a non-empty string\");\n    }\n    if (!solelyContainsHTTPTokenCodePoints(value)) {\n      throw new Error(`Invalid subtype ${value}: must contain only HTTP token code points`);\n    }\n\n    this._subtype = value;\n  }\n\n  get parameters() {\n    return this._parameters;\n  }\n\n  toString() {\n    // The serialize function works on both \"MIME type records\" (i.e. the results of parse) and on this class, since\n    // this class's interface is identical.\n    return serialize(this);\n  }\n\n  isJavaScript({ prohibitParameters = false } = {}) {\n    switch (this._type) {\n      case \"text\": {\n        switch (this._subtype) {\n          case \"ecmascript\":\n          case \"javascript\":\n          case \"javascript1.0\":\n          case \"javascript1.1\":\n          case \"javascript1.2\":\n          case \"javascript1.3\":\n          case \"javascript1.4\":\n          case \"javascript1.5\":\n          case \"jscript\":\n          case \"livescript\":\n          case \"x-ecmascript\":\n          case \"x-javascript\": {\n            return !prohibitParameters || this._parameters.size === 0;\n          }\n          default: {\n            return false;\n          }\n        }\n      }\n      case \"application\": {\n        switch (this._subtype) {\n          case \"ecmascript\":\n          case \"javascript\":\n          case \"x-ecmascript\":\n          case \"x-javascript\": {\n            return !prohibitParameters || this._parameters.size === 0;\n          }\n          default: {\n            return false;\n          }\n        }\n      }\n      default: {\n        return false;\n      }\n    }\n  }\n  isXML() {\n    return (this._subtype === \"xml\" && (this._type === \"text\" || this._type === \"application\")) ||\n           this._subtype.endsWith(\"+xml\");\n  }\n  isHTML() {\n    return this._subtype === \"html\" && this._type === \"text\";\n  }\n};\n", "/**\n * Throw this in places that should be unreachable (because all other cases have\n * been handled, reducing the type of the argument to `never`). TypeScript will\n * complain if in fact there is a valid type for the argument.\n */\nexport class UnreachableCaseError extends Error {\n  constructor(val: never) {\n    super(`Unreachable case: ${val}`);\n  }\n}\n", "import { createHash } from '@apollo/utils.createhash';\n\n// This hash function is used in both the schema reporting and usage reporting\n// plugins. Making sure we use the same hash function hypothetically allows the\n// two reporting features to work well together, though in practice nothing on\n// the Studio side currently correlates this ID across both features.\nexport function computeCoreSchemaHash(schema: string): string {\n  return createHash('sha256').update(schema).digest('hex');\n}\n", "/**\n * @module LRUCache\n */\n\n// module-private names and types\n// this provides the default Perf object source.\n// it can be passed in via configuration to override it\n// for a single LRU object.\nexport type Perf = { now: () => number }\nconst defaultPerf: Perf =\n  (\n    typeof performance === 'object' &&\n    performance &&\n    typeof performance.now === 'function'\n  ) ?\n    performance\n  : Date\n\nconst warned = new Set<string>()\n\n// either a function or a class\ntype ForC = ((...a: any[]) => any) | { new (...a: any[]): any }\n\n/* c8 ignore start */\nconst PROCESS = (\n  typeof process === 'object' && !!process ?\n    process\n  : {}) as { [k: string]: any }\n/* c8 ignore start */\n\nconst emitWarning = (\n  msg: string,\n  type: string,\n  code: string,\n  fn: ForC,\n) => {\n  typeof PROCESS.emitWarning === 'function' ?\n    PROCESS.emitWarning(msg, type, code, fn)\n  : console.error(`[${code}] ${type}: ${msg}`)\n}\n\nlet AC = globalThis.AbortController\nlet AS = globalThis.AbortSignal\n\n/* c8 ignore start */\nif (typeof AC === 'undefined') {\n  //@ts-ignore\n  AS = class AbortSignal {\n    onabort?: (...a: any[]) => any\n    _onabort: ((...a: any[]) => any)[] = []\n    reason?: any\n    aborted: boolean = false\n    addEventListener(_: string, fn: (...a: any[]) => any) {\n      this._onabort.push(fn)\n    }\n  }\n  //@ts-ignore\n  AC = class AbortController {\n    constructor() {\n      warnACPolyfill()\n    }\n    signal = new AS()\n    abort(reason: any) {\n      if (this.signal.aborted) return\n      //@ts-ignore\n      this.signal.reason = reason\n      //@ts-ignore\n      this.signal.aborted = true\n      //@ts-ignore\n      for (const fn of this.signal._onabort) {\n        fn(reason)\n      }\n      this.signal.onabort?.(reason)\n    }\n  }\n  let printACPolyfillWarning =\n    PROCESS.env?.LRU_CACHE_IGNORE_AC_WARNING !== '1'\n  const warnACPolyfill = () => {\n    if (!printACPolyfillWarning) return\n    printACPolyfillWarning = false\n    emitWarning(\n      'AbortController is not defined. If using lru-cache in ' +\n        'node 14, load an AbortController polyfill from the ' +\n        '`node-abort-controller` package. A minimal polyfill is ' +\n        'provided for use by LRUCache.fetch(), but it should not be ' +\n        'relied upon in other contexts (eg, passing it to other APIs that ' +\n        'use AbortController/AbortSignal might have undesirable effects). ' +\n        'You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.',\n      'NO_ABORT_CONTROLLER',\n      'ENOTSUP',\n      warnACPolyfill,\n    )\n  }\n}\n/* c8 ignore stop */\n\nconst shouldWarn = (code: string) => !warned.has(code)\n\nconst TYPE = Symbol('type')\nexport type PosInt = number & { [TYPE]: 'Positive Integer' }\nexport type Index = number & { [TYPE]: 'LRUCache Index' }\n\nconst isPosInt = (n: any): n is PosInt =>\n  n && n === Math.floor(n) && n > 0 && isFinite(n)\n\nexport type UintArray = Uint8Array | Uint16Array | Uint32Array\nexport type NumberArray = UintArray | number[]\n\n/* c8 ignore start */\n// This is a little bit ridiculous, tbh.\n// The maximum array length is 2^32-1 or thereabouts on most JS impls.\n// And well before that point, you're caching the entire world, I mean,\n// that's ~32GB of just integers for the next/prev links, plus whatever\n// else to hold that many keys and values.  Just filling the memory with\n// zeroes at init time is brutal when you get that big.\n// But why not be complete?\n// Maybe in the future, these limits will have expanded.\nconst getUintArray = (max: number) =>\n  !isPosInt(max) ? null\n  : max <= Math.pow(2, 8) ? Uint8Array\n  : max <= Math.pow(2, 16) ? Uint16Array\n  : max <= Math.pow(2, 32) ? Uint32Array\n  : max <= Number.MAX_SAFE_INTEGER ? ZeroArray\n  : null\n/* c8 ignore stop */\n\nclass ZeroArray extends Array<number> {\n  constructor(size: number) {\n    super(size)\n    this.fill(0)\n  }\n}\nexport type { ZeroArray }\nexport type { Stack }\n\nexport type StackLike = Stack | Index[]\nclass Stack {\n  heap: NumberArray\n  length: number\n  // private constructor\n  static #constructing: boolean = false\n  static create(max: number): StackLike {\n    const HeapCls = getUintArray(max)\n    if (!HeapCls) return []\n    Stack.#constructing = true\n    const s = new Stack(max, HeapCls)\n    Stack.#constructing = false\n    return s\n  }\n  constructor(max: number, HeapCls: { new (n: number): NumberArray }) {\n    /* c8 ignore start */\n    if (!Stack.#constructing) {\n      throw new TypeError('instantiate Stack using Stack.create(n)')\n    }\n    /* c8 ignore stop */\n    this.heap = new HeapCls(max)\n    this.length = 0\n  }\n  push(n: Index) {\n    this.heap[this.length++] = n\n  }\n  pop(): Index {\n    return this.heap[--this.length] as Index\n  }\n}\n\n/**\n * Promise representing an in-progress {@link LRUCache#fetch} call\n */\nexport type BackgroundFetch<V> = Promise<V | undefined> & {\n  __returned: BackgroundFetch<V> | undefined\n  __abortController: AbortController\n  __staleWhileFetching: V | undefined\n}\n\nexport type DisposeTask<K, V> = [\n  value: V,\n  key: K,\n  reason: LRUCache.DisposeReason,\n]\n\nexport namespace LRUCache {\n  /**\n   * An integer greater than 0, reflecting the calculated size of items\n   */\n  export type Size = number\n\n  /**\n   * Integer greater than 0, representing some number of milliseconds, or the\n   * time at which a TTL started counting from.\n   */\n  export type Milliseconds = number\n\n  /**\n   * An integer greater than 0, reflecting a number of items\n   */\n  export type Count = number\n\n  /**\n   * The reason why an item was removed from the cache, passed\n   * to the {@link Disposer} methods.\n   *\n   * - `evict`: The item was evicted because it is the least recently used,\n   *   and the cache is full.\n   * - `set`: A new value was set, overwriting the old value being disposed.\n   * - `delete`: The item was explicitly deleted, either by calling\n   *   {@link LRUCache#delete}, {@link LRUCache#clear}, or\n   *   {@link LRUCache#set} with an undefined value.\n   * - `expire`: The item was removed due to exceeding its TTL.\n   * - `fetch`: A {@link OptionsBase#fetchMethod} operation returned\n   *   `undefined` or was aborted, causing the item to be deleted.\n   */\n  export type DisposeReason =\n    | 'evict'\n    | 'set'\n    | 'delete'\n    | 'expire'\n    | 'fetch'\n  /**\n   * A method called upon item removal, passed as the\n   * {@link OptionsBase.dispose} and/or\n   * {@link OptionsBase.disposeAfter} options.\n   */\n  export type Disposer<K, V> = (\n    value: V,\n    key: K,\n    reason: DisposeReason,\n  ) => void\n\n  /**\n   * The reason why an item was added to the cache, passed\n   * to the {@link Inserter} methods.\n   *\n   * - `add`: the item was not found in the cache, and was added\n   * - `update`: the item was in the cache, with the same value provided\n   * - `replace`: the item was in the cache, and replaced\n   */\n  export type InsertReason = 'add' | 'update' | 'replace'\n\n  /**\n   * A method called upon item insertion, passed as the\n   * {@link OptionsBase.insert}\n   */\n  export type Inserter<K, V> = (\n    value: V,\n    key: K,\n    reason: InsertReason,\n  ) => void\n\n  /**\n   * A function that returns the effective calculated size\n   * of an entry in the cache.\n   */\n  export type SizeCalculator<K, V> = (value: V, key: K) => Size\n\n  /**\n   * Options provided to the\n   * {@link OptionsBase.fetchMethod} function.\n   */\n  export interface FetcherOptions<K, V, FC = unknown> {\n    signal: AbortSignal\n    options: FetcherFetchOptions<K, V, FC>\n    /**\n     * Object provided in the {@link FetchOptions.context} option to\n     * {@link LRUCache#fetch}\n     */\n    context: FC\n  }\n\n  /**\n   * Occasionally, it may be useful to track the internal behavior of the\n   * cache, particularly for logging, debugging, or for behavior within the\n   * `fetchMethod`. To do this, you can pass a `status` object to the\n   * {@link LRUCache#fetch}, {@link LRUCache#get}, {@link LRUCache#set},\n   * {@link LRUCache#memo}, and {@link LRUCache#has} methods.\n   *\n   * The `status` option should be a plain JavaScript object. The following\n   * fields will be set on it appropriately, depending on the situation.\n   */\n  export interface Status<V> {\n    /**\n     * The status of a set() operation.\n     *\n     * - add: the item was not found in the cache, and was added\n     * - update: the item was in the cache, with the same value provided\n     * - replace: the item was in the cache, and replaced\n     * - miss: the item was not added to the cache for some reason\n     */\n    set?: 'add' | 'update' | 'replace' | 'miss'\n\n    /**\n     * the ttl stored for the item, or undefined if ttls are not used.\n     */\n    ttl?: Milliseconds\n\n    /**\n     * the start time for the item, or undefined if ttls are not used.\n     */\n    start?: Milliseconds\n\n    /**\n     * The timestamp used for TTL calculation\n     */\n    now?: Milliseconds\n\n    /**\n     * the remaining ttl for the item, or undefined if ttls are not used.\n     */\n    remainingTTL?: Milliseconds\n\n    /**\n     * The calculated size for the item, if sizes are used.\n     */\n    entrySize?: Size\n\n    /**\n     * The total calculated size of the cache, if sizes are used.\n     */\n    totalCalculatedSize?: Size\n\n    /**\n     * A flag indicating that the item was not stored, due to exceeding the\n     * {@link OptionsBase.maxEntrySize}\n     */\n    maxEntrySizeExceeded?: true\n\n    /**\n     * The old value, specified in the case of `set:'update'` or\n     * `set:'replace'`\n     */\n    oldValue?: V\n\n    /**\n     * The results of a {@link LRUCache#has} operation\n     *\n     * - hit: the item was found in the cache\n     * - stale: the item was found in the cache, but is stale\n     * - miss: the item was not found in the cache\n     */\n    has?: 'hit' | 'stale' | 'miss'\n\n    /**\n     * The status of a {@link LRUCache#fetch} operation.\n     * Note that this can change as the underlying fetch() moves through\n     * various states.\n     *\n     * - inflight: there is another fetch() for this key which is in process\n     * - get: there is no {@link OptionsBase.fetchMethod}, so\n     *   {@link LRUCache#get} was called.\n     * - miss: the item is not in cache, and will be fetched.\n     * - hit: the item is in the cache, and was resolved immediately.\n     * - stale: the item is in the cache, but stale.\n     * - refresh: the item is in the cache, and not stale, but\n     *   {@link FetchOptions.forceRefresh} was specified.\n     */\n    fetch?: 'get' | 'inflight' | 'miss' | 'hit' | 'stale' | 'refresh'\n\n    /**\n     * The {@link OptionsBase.fetchMethod} was called\n     */\n    fetchDispatched?: true\n\n    /**\n     * The cached value was updated after a successful call to\n     * {@link OptionsBase.fetchMethod}\n     */\n    fetchUpdated?: true\n\n    /**\n     * The reason for a fetch() rejection.  Either the error raised by the\n     * {@link OptionsBase.fetchMethod}, or the reason for an\n     * AbortSignal.\n     */\n    fetchError?: Error\n\n    /**\n     * The fetch received an abort signal\n     */\n    fetchAborted?: true\n\n    /**\n     * The abort signal received was ignored, and the fetch was allowed to\n     * continue.\n     */\n    fetchAbortIgnored?: true\n\n    /**\n     * The fetchMethod promise resolved successfully\n     */\n    fetchResolved?: true\n\n    /**\n     * The fetchMethod promise was rejected\n     */\n    fetchRejected?: true\n\n    /**\n     * The status of a {@link LRUCache#get} operation.\n     *\n     * - fetching: The item is currently being fetched.  If a previous value\n     *   is present and allowed, that will be returned.\n     * - stale: The item is in the cache, and is stale.\n     * - hit: the item is in the cache\n     * - miss: the item is not in the cache\n     */\n    get?: 'stale' | 'hit' | 'miss'\n\n    /**\n     * A fetch or get operation returned a stale value.\n     */\n    returnedStale?: true\n  }\n\n  /**\n   * options which override the options set in the LRUCache constructor\n   * when calling {@link LRUCache#fetch}.\n   *\n   * This is the union of {@link GetOptions} and {@link SetOptions}, plus\n   * {@link OptionsBase.noDeleteOnFetchRejection},\n   * {@link OptionsBase.allowStaleOnFetchRejection},\n   * {@link FetchOptions.forceRefresh}, and\n   * {@link FetcherOptions.context}\n   *\n   * Any of these may be modified in the {@link OptionsBase.fetchMethod}\n   * function, but the {@link GetOptions} fields will of course have no\n   * effect, as the {@link LRUCache#get} call already happened by the time\n   * the fetchMethod is called.\n   */\n  export interface FetcherFetchOptions<K, V, FC = unknown>\n    extends Pick<\n      OptionsBase<K, V, FC>,\n      | 'allowStale'\n      | 'updateAgeOnGet'\n      | 'noDeleteOnStaleGet'\n      | 'sizeCalculation'\n      | 'ttl'\n      | 'noDisposeOnSet'\n      | 'noUpdateTTL'\n      | 'noDeleteOnFetchRejection'\n      | 'allowStaleOnFetchRejection'\n      | 'ignoreFetchAbort'\n      | 'allowStaleOnFetchAbort'\n    > {\n    status?: Status<V>\n    size?: Size\n  }\n\n  /**\n   * Options that may be passed to the {@link LRUCache#fetch} method.\n   */\n  export interface FetchOptions<K, V, FC>\n    extends FetcherFetchOptions<K, V, FC> {\n    /**\n     * Set to true to force a re-load of the existing data, even if it\n     * is not yet stale.\n     */\n    forceRefresh?: boolean\n    /**\n     * Context provided to the {@link OptionsBase.fetchMethod} as\n     * the {@link FetcherOptions.context} param.\n     *\n     * If the FC type is specified as unknown (the default),\n     * undefined or void, then this is optional.  Otherwise, it will\n     * be required.\n     */\n    context?: FC\n    signal?: AbortSignal\n    status?: Status<V>\n  }\n  /**\n   * Options provided to {@link LRUCache#fetch} when the FC type is something\n   * other than `unknown`, `undefined`, or `void`\n   */\n  export interface FetchOptionsWithContext<K, V, FC>\n    extends FetchOptions<K, V, FC> {\n    context: FC\n  }\n  /**\n   * Options provided to {@link LRUCache#fetch} when the FC type is\n   * `undefined` or `void`\n   */\n  export interface FetchOptionsNoContext<K, V>\n    extends FetchOptions<K, V, undefined> {\n    context?: undefined\n  }\n\n  export interface MemoOptions<K, V, FC = unknown>\n    extends Pick<\n      OptionsBase<K, V, FC>,\n      | 'allowStale'\n      | 'updateAgeOnGet'\n      | 'noDeleteOnStaleGet'\n      | 'sizeCalculation'\n      | 'ttl'\n      | 'noDisposeOnSet'\n      | 'noUpdateTTL'\n      | 'noDeleteOnFetchRejection'\n      | 'allowStaleOnFetchRejection'\n      | 'ignoreFetchAbort'\n      | 'allowStaleOnFetchAbort'\n    > {\n    /**\n     * Set to true to force a re-load of the existing data, even if it\n     * is not yet stale.\n     */\n    forceRefresh?: boolean\n    /**\n     * Context provided to the {@link OptionsBase.memoMethod} as\n     * the {@link MemoizerOptions.context} param.\n     *\n     * If the FC type is specified as unknown (the default),\n     * undefined or void, then this is optional.  Otherwise, it will\n     * be required.\n     */\n    context?: FC\n    status?: Status<V>\n  }\n  /**\n   * Options provided to {@link LRUCache#memo} when the FC type is something\n   * other than `unknown`, `undefined`, or `void`\n   */\n  export interface MemoOptionsWithContext<K, V, FC>\n    extends MemoOptions<K, V, FC> {\n    context: FC\n  }\n  /**\n   * Options provided to {@link LRUCache#memo} when the FC type is\n   * `undefined` or `void`\n   */\n  export interface MemoOptionsNoContext<K, V>\n    extends MemoOptions<K, V, undefined> {\n    context?: undefined\n  }\n\n  /**\n   * Options provided to the\n   * {@link OptionsBase.memoMethod} function.\n   */\n  export interface MemoizerOptions<K, V, FC = unknown> {\n    options: MemoizerMemoOptions<K, V, FC>\n    /**\n     * Object provided in the {@link MemoOptions.context} option to\n     * {@link LRUCache#memo}\n     */\n    context: FC\n  }\n\n  /**\n   * options which override the options set in the LRUCache constructor\n   * when calling {@link LRUCache#memo}.\n   *\n   * This is the union of {@link GetOptions} and {@link SetOptions}, plus\n   * {@link MemoOptions.forceRefresh}, and\n   * {@link MemoOptions.context}\n   *\n   * Any of these may be modified in the {@link OptionsBase.memoMethod}\n   * function, but the {@link GetOptions} fields will of course have no\n   * effect, as the {@link LRUCache#get} call already happened by the time\n   * the memoMethod is called.\n   */\n  export interface MemoizerMemoOptions<K, V, FC = unknown>\n    extends Pick<\n      OptionsBase<K, V, FC>,\n      | 'allowStale'\n      | 'updateAgeOnGet'\n      | 'noDeleteOnStaleGet'\n      | 'sizeCalculation'\n      | 'ttl'\n      | 'noDisposeOnSet'\n      | 'noUpdateTTL'\n    > {\n    status?: Status<V>\n    size?: Size\n    start?: Milliseconds\n  }\n\n  /**\n   * Options that may be passed to the {@link LRUCache#has} method.\n   */\n  export interface HasOptions<K, V, FC>\n    extends Pick<OptionsBase<K, V, FC>, 'updateAgeOnHas'> {\n    status?: Status<V>\n  }\n\n  /**\n   * Options that may be passed to the {@link LRUCache#get} method.\n   */\n  export interface GetOptions<K, V, FC>\n    extends Pick<\n      OptionsBase<K, V, FC>,\n      'allowStale' | 'updateAgeOnGet' | 'noDeleteOnStaleGet'\n    > {\n    status?: Status<V>\n  }\n\n  /**\n   * Options that may be passed to the {@link LRUCache#peek} method.\n   */\n  export interface PeekOptions<K, V, FC>\n    extends Pick<OptionsBase<K, V, FC>, 'allowStale'> {}\n\n  /**\n   * Options that may be passed to the {@link LRUCache#set} method.\n   */\n  export interface SetOptions<K, V, FC>\n    extends Pick<\n      OptionsBase<K, V, FC>,\n      'sizeCalculation' | 'ttl' | 'noDisposeOnSet' | 'noUpdateTTL'\n    > {\n    /**\n     * If size tracking is enabled, then setting an explicit size\n     * in the {@link LRUCache#set} call will prevent calling the\n     * {@link OptionsBase.sizeCalculation} function.\n     */\n    size?: Size\n    /**\n     * If TTL tracking is enabled, then setting an explicit start\n     * time in the {@link LRUCache#set} call will override the\n     * default time from `performance.now()` or `Date.now()`.\n     *\n     * Note that it must be a valid value for whichever time-tracking\n     * method is in use.\n     */\n    start?: Milliseconds\n    status?: Status<V>\n  }\n\n  /**\n   * The type signature for the {@link OptionsBase.fetchMethod} option.\n   */\n  export type Fetcher<K, V, FC = unknown> = (\n    key: K,\n    staleValue: V | undefined,\n    options: FetcherOptions<K, V, FC>,\n  ) => Promise<V | undefined | void> | V | undefined | void\n\n  /**\n   * the type signature for the {@link OptionsBase.memoMethod} option.\n   */\n  export type Memoizer<K, V, FC = unknown> = (\n    key: K,\n    staleValue: V | undefined,\n    options: MemoizerOptions<K, V, FC>,\n  ) => V\n\n  /**\n   * Options which may be passed to the {@link LRUCache} constructor.\n   *\n   * Most of these may be overridden in the various options that use\n   * them.\n   *\n   * Despite all being technically optional, the constructor requires that\n   * a cache is at minimum limited by one or more of {@link OptionsBase.max},\n   * {@link OptionsBase.ttl}, or {@link OptionsBase.maxSize}.\n   *\n   * If {@link OptionsBase.ttl} is used alone, then it is strongly advised\n   * (and in fact required by the type definitions here) that the cache\n   * also set {@link OptionsBase.ttlAutopurge}, to prevent potentially\n   * unbounded storage.\n   *\n   * All options are also available on the {@link LRUCache} instance, making\n   * it safe to pass an LRUCache instance as the options argumemnt to\n   * make another empty cache of the same type.\n   *\n   * Some options are marked as read-only, because changing them after\n   * instantiation is not safe. Changing any of the other options will of\n   * course only have an effect on subsequent method calls.\n   */\n  export interface OptionsBase<K, V, FC> {\n    /**\n     * The maximum number of items to store in the cache before evicting\n     * old entries. This is read-only on the {@link LRUCache} instance,\n     * and may not be overridden.\n     *\n     * If set, then storage space will be pre-allocated at construction\n     * time, and the cache will perform significantly faster.\n     *\n     * Note that significantly fewer items may be stored, if\n     * {@link OptionsBase.maxSize} and/or {@link OptionsBase.ttl} are also\n     * set.\n     *\n     * **It is strongly recommended to set a `max` to prevent unbounded growth\n     * of the cache.**\n     */\n    max?: Count\n\n    /**\n     * Max time in milliseconds for items to live in cache before they are\n     * considered stale.  Note that stale items are NOT preemptively removed by\n     * default, and MAY live in the cache, contributing to its LRU max, long\n     * after they have expired, unless {@link OptionsBase.ttlAutopurge} is\n     * set.\n     *\n     * If set to `0` (the default value), then that means \"do not track\n     * TTL\", not \"expire immediately\".\n     *\n     * Also, as this cache is optimized for LRU/MRU operations, some of\n     * the staleness/TTL checks will reduce performance, as they will incur\n     * overhead by deleting items.\n     *\n     * This is not primarily a TTL cache, and does not make strong TTL\n     * guarantees. There is no pre-emptive pruning of expired items, but you\n     * _may_ set a TTL on the cache, and it will treat expired items as missing\n     * when they are fetched, and delete them.\n     *\n     * Optional, but must be a non-negative integer in ms if specified.\n     *\n     * This may be overridden by passing an options object to `cache.set()`.\n     *\n     * At least one of `max`, `maxSize`, or `TTL` is required. This must be a\n     * positive integer if set.\n     *\n     * Even if ttl tracking is enabled, **it is strongly recommended to set a\n     * `max` to prevent unbounded growth of the cache.**\n     *\n     * If ttl tracking is enabled, and `max` and `maxSize` are not set,\n     * and `ttlAutopurge` is not set, then a warning will be emitted\n     * cautioning about the potential for unbounded memory consumption.\n     * (The TypeScript definitions will also discourage this.)\n     */\n    ttl?: Milliseconds\n\n    /**\n     * Minimum amount of time in ms in which to check for staleness.\n     * Defaults to 1, which means that the current time is checked\n     * at most once per millisecond.\n     *\n     * Set to 0 to check the current time every time staleness is tested.\n     * (This reduces performance, and is theoretically unnecessary.)\n     *\n     * Setting this to a higher value will improve performance somewhat\n     * while using ttl tracking, albeit at the expense of keeping stale\n     * items around a bit longer than their TTLs would indicate.\n     *\n     * @default 1\n     */\n    ttlResolution?: Milliseconds\n\n    /**\n     * Preemptively remove stale items from the cache.\n     *\n     * Note that this may *significantly* degrade performance, especially if\n     * the cache is storing a large number of items. It is almost always best\n     * to just leave the stale items in the cache, and let them fall out as new\n     * items are added.\n     *\n     * Note that this means that {@link OptionsBase.allowStale} is a bit\n     * pointless, as stale items will be deleted almost as soon as they\n     * expire.\n     *\n     * Use with caution!\n     */\n    ttlAutopurge?: boolean\n\n    /**\n     * When using time-expiring entries with `ttl`, setting this to `true` will\n     * make each item's age reset to 0 whenever it is retrieved from cache with\n     * {@link LRUCache#get}, causing it to not expire. (It can still fall out\n     * of cache based on recency of use, of course.)\n     *\n     * Has no effect if {@link OptionsBase.ttl} is not set.\n     *\n     * This may be overridden by passing an options object to `cache.get()`.\n     */\n    updateAgeOnGet?: boolean\n\n    /**\n     * When using time-expiring entries with `ttl`, setting this to `true` will\n     * make each item's age reset to 0 whenever its presence in the cache is\n     * checked with {@link LRUCache#has}, causing it to not expire. (It can\n     * still fall out of cache based on recency of use, of course.)\n     *\n     * Has no effect if {@link OptionsBase.ttl} is not set.\n     */\n    updateAgeOnHas?: boolean\n\n    /**\n     * Allow {@link LRUCache#get} and {@link LRUCache#fetch} calls to return\n     * stale data, if available.\n     *\n     * By default, if you set `ttl`, stale items will only be deleted from the\n     * cache when you `get(key)`. That is, it's not preemptively pruning items,\n     * unless {@link OptionsBase.ttlAutopurge} is set.\n     *\n     * If you set `allowStale:true`, it'll return the stale value *as well as*\n     * deleting it. If you don't set this, then it'll return `undefined` when\n     * you try to get a stale entry.\n     *\n     * Note that when a stale entry is fetched, _even if it is returned due to\n     * `allowStale` being set_, it is removed from the cache immediately. You\n     * can suppress this behavior by setting\n     * {@link OptionsBase.noDeleteOnStaleGet}, either in the constructor, or in\n     * the options provided to {@link LRUCache#get}.\n     *\n     * This may be overridden by passing an options object to `cache.get()`.\n     * The `cache.has()` method will always return `false` for stale items.\n     *\n     * Only relevant if a ttl is set.\n     */\n    allowStale?: boolean\n\n    /**\n     * Function that is called on items when they are dropped from the\n     * cache, as `dispose(value, key, reason)`.\n     *\n     * This can be handy if you want to close file descriptors or do\n     * other cleanup tasks when items are no longer stored in the cache.\n     *\n     * **NOTE**: It is called _before_ the item has been fully removed\n     * from the cache, so if you want to put it right back in, you need\n     * to wait until the next tick. If you try to add it back in during\n     * the `dispose()` function call, it will break things in subtle and\n     * weird ways.\n     *\n     * Unlike several other options, this may _not_ be overridden by\n     * passing an option to `set()`, for performance reasons.\n     *\n     * The `reason` will be one of the following strings, corresponding\n     * to the reason for the item's deletion:\n     *\n     * - `evict` Item was evicted to make space for a new addition\n     * - `set` Item was overwritten by a new value\n     * - `expire` Item expired its TTL\n     * - `fetch` Item was deleted due to a failed or aborted fetch, or a\n     *   fetchMethod returning `undefined.\n     * - `delete` Item was removed by explicit `cache.delete(key)`,\n     *   `cache.clear()`, or `cache.set(key, undefined)`.\n     */\n    dispose?: Disposer<K, V>\n\n    /**\n     * Function that is called when new items are inserted into the cache,\n     * as `onInsert(value, key, reason)`.\n     *\n     * This can be useful if you need to perform actions when an item is\n     * added, such as logging or tracking insertions.\n     *\n     * Unlike some other options, this may _not_ be overridden by passing\n     * an option to `set()`, for performance and consistency reasons.\n     */\n    onInsert?: Inserter<K, V>\n\n    /**\n     * The same as {@link OptionsBase.dispose}, but called *after* the entry\n     * is completely removed and the cache is once again in a clean state.\n     *\n     * It is safe to add an item right back into the cache at this point.\n     * However, note that it is *very* easy to inadvertently create infinite\n     * recursion this way.\n     */\n    disposeAfter?: Disposer<K, V>\n\n    /**\n     * Set to true to suppress calling the\n     * {@link OptionsBase.dispose} function if the entry key is\n     * still accessible within the cache.\n     *\n     * This may be overridden by passing an options object to\n     * {@link LRUCache#set}.\n     *\n     * Only relevant if `dispose` or `disposeAfter` are set.\n     */\n    noDisposeOnSet?: boolean\n\n    /**\n     * Boolean flag to tell the cache to not update the TTL when setting a new\n     * value for an existing key (ie, when updating a value rather than\n     * inserting a new value).  Note that the TTL value is _always_ set (if\n     * provided) when adding a new entry into the cache.\n     *\n     * Has no effect if a {@link OptionsBase.ttl} is not set.\n     *\n     * May be passed as an option to {@link LRUCache#set}.\n     */\n    noUpdateTTL?: boolean\n\n    /**\n     * Set to a positive integer to track the sizes of items added to the\n     * cache, and automatically evict items in order to stay below this size.\n     * Note that this may result in fewer than `max` items being stored.\n     *\n     * Attempting to add an item to the cache whose calculated size is greater\n     * that this amount will be a no-op. The item will not be cached, and no\n     * other items will be evicted.\n     *\n     * Optional, must be a positive integer if provided.\n     *\n     * Sets `maxEntrySize` to the same value, unless a different value is\n     * provided for `maxEntrySize`.\n     *\n     * At least one of `max`, `maxSize`, or `TTL` is required. This must be a\n     * positive integer if set.\n     *\n     * Even if size tracking is enabled, **it is strongly recommended to set a\n     * `max` to prevent unbounded growth of the cache.**\n     *\n     * Note also that size tracking can negatively impact performance,\n     * though for most cases, only minimally.\n     */\n    maxSize?: Size\n\n    /**\n     * The maximum allowed size for any single item in the cache.\n     *\n     * If a larger item is passed to {@link LRUCache#set} or returned by a\n     * {@link OptionsBase.fetchMethod} or {@link OptionsBase.memoMethod}, then\n     * it will not be stored in the cache.\n     *\n     * Attempting to add an item whose calculated size is greater than\n     * this amount will not cache the item or evict any old items, but\n     * WILL delete an existing value if one is already present.\n     *\n     * Optional, must be a positive integer if provided. Defaults to\n     * the value of `maxSize` if provided.\n     */\n    maxEntrySize?: Size\n\n    /**\n     * A function that returns a number indicating the item's size.\n     *\n     * Requires {@link OptionsBase.maxSize} to be set.\n     *\n     * If not provided, and {@link OptionsBase.maxSize} or\n     * {@link OptionsBase.maxEntrySize} are set, then all\n     * {@link LRUCache#set} calls **must** provide an explicit\n     * {@link SetOptions.size} or sizeCalculation param.\n     */\n    sizeCalculation?: SizeCalculator<K, V>\n\n    /**\n     * Method that provides the implementation for {@link LRUCache#fetch}\n     *\n     * ```ts\n     * fetchMethod(key, staleValue, { signal, options, context })\n     * ```\n     *\n     * If `fetchMethod` is not provided, then `cache.fetch(key)` is equivalent\n     * to `Promise.resolve(cache.get(key))`.\n     *\n     * If at any time, `signal.aborted` is set to `true`, or if the\n     * `signal.onabort` method is called, or if it emits an `'abort'` event\n     * which you can listen to with `addEventListener`, then that means that\n     * the fetch should be abandoned. This may be passed along to async\n     * functions aware of AbortController/AbortSignal behavior.\n     *\n     * The `fetchMethod` should **only** return `undefined` or a Promise\n     * resolving to `undefined` if the AbortController signaled an `abort`\n     * event. In all other cases, it should return or resolve to a value\n     * suitable for adding to the cache.\n     *\n     * The `options` object is a union of the options that may be provided to\n     * `set()` and `get()`. If they are modified, then that will result in\n     * modifying the settings to `cache.set()` when the value is resolved, and\n     * in the case of\n     * {@link OptionsBase.noDeleteOnFetchRejection} and\n     * {@link OptionsBase.allowStaleOnFetchRejection}, the handling of\n     * `fetchMethod` failures.\n     *\n     * For example, a DNS cache may update the TTL based on the value returned\n     * from a remote DNS server by changing `options.ttl` in the `fetchMethod`.\n     */\n    fetchMethod?: Fetcher<K, V, FC>\n\n    /**\n     * Method that provides the implementation for {@link LRUCache#memo}\n     */\n    memoMethod?: Memoizer<K, V, FC>\n\n    /**\n     * Set to true to suppress the deletion of stale data when a\n     * {@link OptionsBase.fetchMethod} returns a rejected promise.\n     */\n    noDeleteOnFetchRejection?: boolean\n\n    /**\n     * Do not delete stale items when they are retrieved with\n     * {@link LRUCache#get}.\n     *\n     * Note that the `get` return value will still be `undefined`\n     * unless {@link OptionsBase.allowStale} is true.\n     *\n     * When using time-expiring entries with `ttl`, by default stale\n     * items will be removed from the cache when the key is accessed\n     * with `cache.get()`.\n     *\n     * Setting this option will cause stale items to remain in the cache, until\n     * they are explicitly deleted with `cache.delete(key)`, or retrieved with\n     * `noDeleteOnStaleGet` set to `false`.\n     *\n     * This may be overridden by passing an options object to `cache.get()`.\n     *\n     * Only relevant if a ttl is used.\n     */\n    noDeleteOnStaleGet?: boolean\n\n    /**\n     * Set to true to allow returning stale data when a\n     * {@link OptionsBase.fetchMethod} throws an error or returns a rejected\n     * promise.\n     *\n     * This differs from using {@link OptionsBase.allowStale} in that stale\n     * data will ONLY be returned in the case that the {@link LRUCache#fetch}\n     * fails, not any other times.\n     *\n     * If a `fetchMethod` fails, and there is no stale value available, the\n     * `fetch()` will resolve to `undefined`. Ie, all `fetchMethod` errors are\n     * suppressed.\n     *\n     * Implies `noDeleteOnFetchRejection`.\n     *\n     * This may be set in calls to `fetch()`, or defaulted on the constructor,\n     * or overridden by modifying the options object in the `fetchMethod`.\n     */\n    allowStaleOnFetchRejection?: boolean\n\n    /**\n     * Set to true to return a stale value from the cache when the\n     * `AbortSignal` passed to the {@link OptionsBase.fetchMethod} dispatches\n     * an `'abort'` event, whether user-triggered, or due to internal cache\n     * behavior.\n     *\n     * Unless {@link OptionsBase.ignoreFetchAbort} is also set, the underlying\n     * {@link OptionsBase.fetchMethod} will still be considered canceled, and\n     * any value it returns will be ignored and not cached.\n     *\n     * Caveat: since fetches are aborted when a new value is explicitly\n     * set in the cache, this can lead to fetch returning a stale value,\n     * since that was the fallback value _at the moment the `fetch()` was\n     * initiated_, even though the new updated value is now present in\n     * the cache.\n     *\n     * For example:\n     *\n     * ```ts\n     * const cache = new LRUCache<string, any>({\n     *   ttl: 100,\n     *   fetchMethod: async (url, oldValue, { signal }) =>  {\n     *     const res = await fetch(url, { signal })\n     *     return await res.json()\n     *   }\n     * })\n     * cache.set('https://example.com/', { some: 'data' })\n     * // 100ms go by...\n     * const result = cache.fetch('https://example.com/')\n     * cache.set('https://example.com/', { other: 'thing' })\n     * console.log(await result) // { some: 'data' }\n     * console.log(cache.get('https://example.com/')) // { other: 'thing' }\n     * ```\n     */\n    allowStaleOnFetchAbort?: boolean\n\n    /**\n     * Set to true to ignore the `abort` event emitted by the `AbortSignal`\n     * object passed to {@link OptionsBase.fetchMethod}, and still cache the\n     * resulting resolution value, as long as it is not `undefined`.\n     *\n     * When used on its own, this means aborted {@link LRUCache#fetch} calls\n     * are not immediately resolved or rejected when they are aborted, and\n     * instead take the full time to await.\n     *\n     * When used with {@link OptionsBase.allowStaleOnFetchAbort}, aborted\n     * {@link LRUCache#fetch} calls will resolve immediately to their stale\n     * cached value or `undefined`, and will continue to process and eventually\n     * update the cache when they resolve, as long as the resulting value is\n     * not `undefined`, thus supporting a \"return stale on timeout while\n     * refreshing\" mechanism by passing `AbortSignal.timeout(n)` as the signal.\n     *\n     * For example:\n     *\n     * ```ts\n     * const c = new LRUCache({\n     *   ttl: 100,\n     *   ignoreFetchAbort: true,\n     *   allowStaleOnFetchAbort: true,\n     *   fetchMethod: async (key, oldValue, { signal }) => {\n     *     // note: do NOT pass the signal to fetch()!\n     *     // let's say this fetch can take a long time.\n     *     const res = await fetch(`https://slow-backend-server/${key}`)\n     *     return await res.json()\n     *   },\n     * })\n     *\n     * // this will return the stale value after 100ms, while still\n     * // updating in the background for next time.\n     * const val = await c.fetch('key', { signal: AbortSignal.timeout(100) })\n     * ```\n     *\n     * **Note**: regardless of this setting, an `abort` event _is still\n     * emitted on the `AbortSignal` object_, so may result in invalid results\n     * when passed to other underlying APIs that use AbortSignals.\n     *\n     * This may be overridden in the {@link OptionsBase.fetchMethod} or the\n     * call to {@link LRUCache#fetch}.\n     */\n    ignoreFetchAbort?: boolean\n\n    /**\n     * In some cases, you may want to swap out the performance/Date object\n     * used for TTL tracking. This should almost certainly NOT be done in\n     * production environments!\n     *\n     * This value defaults to `global.performance` if it has a `now()` method,\n     * or the `global.Date` object otherwise.\n     */\n    perf?: Perf\n  }\n\n  export interface OptionsMaxLimit<K, V, FC>\n    extends OptionsBase<K, V, FC> {\n    max: Count\n  }\n  export interface OptionsTTLLimit<K, V, FC>\n    extends OptionsBase<K, V, FC> {\n    ttl: Milliseconds\n    ttlAutopurge: boolean\n  }\n  export interface OptionsSizeLimit<K, V, FC>\n    extends OptionsBase<K, V, FC> {\n    maxSize: Size\n  }\n\n  /**\n   * The valid safe options for the {@link LRUCache} constructor\n   */\n  export type Options<K, V, FC> =\n    | OptionsMaxLimit<K, V, FC>\n    | OptionsSizeLimit<K, V, FC>\n    | OptionsTTLLimit<K, V, FC>\n\n  /**\n   * Entry objects used by {@link LRUCache#load} and {@link LRUCache#dump},\n   * and returned by {@link LRUCache#info}.\n   */\n  export interface Entry<V> {\n    value: V\n    ttl?: Milliseconds\n    size?: Size\n    start?: Milliseconds\n  }\n}\n\n/**\n * Default export, the thing you're using this module to get.\n *\n * The `K` and `V` types define the key and value types, respectively. The\n * optional `FC` type defines the type of the `context` object passed to\n * `cache.fetch()` and `cache.memo()`.\n *\n * Keys and values **must not** be `null` or `undefined`.\n *\n * All properties from the options object (with the exception of `max`,\n * `maxSize`, `fetchMethod`, `memoMethod`, `dispose` and `disposeAfter`) are\n * added as normal public members. (The listed options are read-only getters.)\n *\n * Changing any of these will alter the defaults for subsequent method calls.\n */\nexport class LRUCache<K extends {}, V extends {}, FC = unknown> {\n  // options that cannot be changed without disaster\n  readonly #max: LRUCache.Count\n  readonly #maxSize: LRUCache.Size\n  readonly #dispose?: LRUCache.Disposer<K, V>\n  readonly #onInsert?: LRUCache.Inserter<K, V>\n  readonly #disposeAfter?: LRUCache.Disposer<K, V>\n  readonly #fetchMethod?: LRUCache.Fetcher<K, V, FC>\n  readonly #memoMethod?: LRUCache.Memoizer<K, V, FC>\n  readonly #perf: Perf\n\n  /**\n   * {@link LRUCache.OptionsBase.perf}\n   */\n  get perf() {\n    return this.#perf\n  }\n\n  /**\n   * {@link LRUCache.OptionsBase.ttl}\n   */\n  ttl: LRUCache.Milliseconds\n\n  /**\n   * {@link LRUCache.OptionsBase.ttlResolution}\n   */\n  ttlResolution: LRUCache.Milliseconds\n  /**\n   * {@link LRUCache.OptionsBase.ttlAutopurge}\n   */\n  ttlAutopurge: boolean\n  /**\n   * {@link LRUCache.OptionsBase.updateAgeOnGet}\n   */\n  updateAgeOnGet: boolean\n  /**\n   * {@link LRUCache.OptionsBase.updateAgeOnHas}\n   */\n  updateAgeOnHas: boolean\n  /**\n   * {@link LRUCache.OptionsBase.allowStale}\n   */\n  allowStale: boolean\n\n  /**\n   * {@link LRUCache.OptionsBase.noDisposeOnSet}\n   */\n  noDisposeOnSet: boolean\n  /**\n   * {@link LRUCache.OptionsBase.noUpdateTTL}\n   */\n  noUpdateTTL: boolean\n  /**\n   * {@link LRUCache.OptionsBase.maxEntrySize}\n   */\n  maxEntrySize: LRUCache.Size\n  /**\n   * {@link LRUCache.OptionsBase.sizeCalculation}\n   */\n  sizeCalculation?: LRUCache.SizeCalculator<K, V>\n  /**\n   * {@link LRUCache.OptionsBase.noDeleteOnFetchRejection}\n   */\n  noDeleteOnFetchRejection: boolean\n  /**\n   * {@link LRUCache.OptionsBase.noDeleteOnStaleGet}\n   */\n  noDeleteOnStaleGet: boolean\n  /**\n   * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort}\n   */\n  allowStaleOnFetchAbort: boolean\n  /**\n   * {@link LRUCache.OptionsBase.allowStaleOnFetchRejection}\n   */\n  allowStaleOnFetchRejection: boolean\n  /**\n   * {@link LRUCache.OptionsBase.ignoreFetchAbort}\n   */\n  ignoreFetchAbort: boolean\n\n  // computed properties\n  #size: LRUCache.Count\n  #calculatedSize: LRUCache.Size\n  #keyMap: Map<K, Index>\n  #keyList: (K | undefined)[]\n  #valList: (V | BackgroundFetch<V> | undefined)[]\n  #next: NumberArray\n  #prev: NumberArray\n  #head: Index\n  #tail: Index\n  #free: StackLike\n  #disposed?: DisposeTask<K, V>[]\n  #sizes?: ZeroArray\n  #starts?: ZeroArray\n  #ttls?: ZeroArray\n  #autopurgeTimers?: (undefined | ReturnType<typeof setTimeout>)[]\n\n  #hasDispose: boolean\n  #hasFetchMethod: boolean\n  #hasDisposeAfter: boolean\n  #hasOnInsert: boolean\n\n  /**\n   * Do not call this method unless you need to inspect the\n   * inner workings of the cache.  If anything returned by this\n   * object is modified in any way, strange breakage may occur.\n   *\n   * These fields are private for a reason!\n   *\n   * @internal\n   */\n  static unsafeExposeInternals<\n    K extends {},\n    V extends {},\n    FC extends unknown = unknown,\n  >(c: LRUCache<K, V, FC>) {\n    return {\n      // properties\n      starts: c.#starts,\n      ttls: c.#ttls,\n      autopurgeTimers: c.#autopurgeTimers,\n      sizes: c.#sizes,\n      keyMap: c.#keyMap as Map<K, number>,\n      keyList: c.#keyList,\n      valList: c.#valList,\n      next: c.#next,\n      prev: c.#prev,\n      get head() {\n        return c.#head\n      },\n      get tail() {\n        return c.#tail\n      },\n      free: c.#free,\n      // methods\n      isBackgroundFetch: (p: any) => c.#isBackgroundFetch(p),\n      backgroundFetch: (\n        k: K,\n        index: number | undefined,\n        options: LRUCache.FetchOptions<K, V, FC>,\n        context: any,\n      ): BackgroundFetch<V> =>\n        c.#backgroundFetch(\n          k,\n          index as Index | undefined,\n          options,\n          context,\n        ),\n      moveToTail: (index: number): void => c.#moveToTail(index as Index),\n      indexes: (options?: { allowStale: boolean }) => c.#indexes(options),\n      rindexes: (options?: { allowStale: boolean }) =>\n        c.#rindexes(options),\n      isStale: (index: number | undefined) => c.#isStale(index as Index),\n    }\n  }\n\n  // Protected read-only members\n\n  /**\n   * {@link LRUCache.OptionsBase.max} (read-only)\n   */\n  get max(): LRUCache.Count {\n    return this.#max\n  }\n  /**\n   * {@link LRUCache.OptionsBase.maxSize} (read-only)\n   */\n  get maxSize(): LRUCache.Count {\n    return this.#maxSize\n  }\n  /**\n   * The total computed size of items in the cache (read-only)\n   */\n  get calculatedSize(): LRUCache.Size {\n    return this.#calculatedSize\n  }\n  /**\n   * The number of items stored in the cache (read-only)\n   */\n  get size(): LRUCache.Count {\n    return this.#size\n  }\n  /**\n   * {@link LRUCache.OptionsBase.fetchMethod} (read-only)\n   */\n  get fetchMethod(): LRUCache.Fetcher<K, V, FC> | undefined {\n    return this.#fetchMethod\n  }\n  get memoMethod(): LRUCache.Memoizer<K, V, FC> | undefined {\n    return this.#memoMethod\n  }\n  /**\n   * {@link LRUCache.OptionsBase.dispose} (read-only)\n   */\n  get dispose() {\n    return this.#dispose\n  }\n  /**\n   * {@link LRUCache.OptionsBase.onInsert} (read-only)\n   */\n  get onInsert() {\n    return this.#onInsert\n  }\n  /**\n   * {@link LRUCache.OptionsBase.disposeAfter} (read-only)\n   */\n  get disposeAfter() {\n    return this.#disposeAfter\n  }\n\n  constructor(options: LRUCache.Options<K, V, FC> | LRUCache<K, V, FC>) {\n    const {\n      max = 0,\n      ttl,\n      ttlResolution = 1,\n      ttlAutopurge,\n      updateAgeOnGet,\n      updateAgeOnHas,\n      allowStale,\n      dispose,\n      onInsert,\n      disposeAfter,\n      noDisposeOnSet,\n      noUpdateTTL,\n      maxSize = 0,\n      maxEntrySize = 0,\n      sizeCalculation,\n      fetchMethod,\n      memoMethod,\n      noDeleteOnFetchRejection,\n      noDeleteOnStaleGet,\n      allowStaleOnFetchRejection,\n      allowStaleOnFetchAbort,\n      ignoreFetchAbort,\n      perf,\n    } = options\n\n    if (perf !== undefined) {\n      if (typeof perf?.now !== 'function') {\n        throw new TypeError(\n          'perf option must have a now() method if specified',\n        )\n      }\n    }\n\n    this.#perf = perf ?? defaultPerf\n\n    if (max !== 0 && !isPosInt(max)) {\n      throw new TypeError('max option must be a nonnegative integer')\n    }\n\n    const UintArray = max ? getUintArray(max) : Array\n    if (!UintArray) {\n      throw new Error('invalid max value: ' + max)\n    }\n\n    this.#max = max\n    this.#maxSize = maxSize\n    this.maxEntrySize = maxEntrySize || this.#maxSize\n    this.sizeCalculation = sizeCalculation\n    if (this.sizeCalculation) {\n      if (!this.#maxSize && !this.maxEntrySize) {\n        throw new TypeError(\n          'cannot set sizeCalculation without setting maxSize or maxEntrySize',\n        )\n      }\n      if (typeof this.sizeCalculation !== 'function') {\n        throw new TypeError('sizeCalculation set to non-function')\n      }\n    }\n\n    if (memoMethod !== undefined && typeof memoMethod !== 'function') {\n      throw new TypeError('memoMethod must be a function if defined')\n    }\n    this.#memoMethod = memoMethod\n\n    if (fetchMethod !== undefined && typeof fetchMethod !== 'function') {\n      throw new TypeError('fetchMethod must be a function if specified')\n    }\n    this.#fetchMethod = fetchMethod\n    this.#hasFetchMethod = !!fetchMethod\n\n    this.#keyMap = new Map()\n    this.#keyList = new Array(max).fill(undefined)\n    this.#valList = new Array(max).fill(undefined)\n    this.#next = new UintArray(max)\n    this.#prev = new UintArray(max)\n    this.#head = 0 as Index\n    this.#tail = 0 as Index\n    this.#free = Stack.create(max)\n    this.#size = 0\n    this.#calculatedSize = 0\n\n    if (typeof dispose === 'function') {\n      this.#dispose = dispose\n    }\n    if (typeof onInsert === 'function') {\n      this.#onInsert = onInsert\n    }\n    if (typeof disposeAfter === 'function') {\n      this.#disposeAfter = disposeAfter\n      this.#disposed = []\n    } else {\n      this.#disposeAfter = undefined\n      this.#disposed = undefined\n    }\n    this.#hasDispose = !!this.#dispose\n    this.#hasOnInsert = !!this.#onInsert\n    this.#hasDisposeAfter = !!this.#disposeAfter\n\n    this.noDisposeOnSet = !!noDisposeOnSet\n    this.noUpdateTTL = !!noUpdateTTL\n    this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection\n    this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection\n    this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort\n    this.ignoreFetchAbort = !!ignoreFetchAbort\n\n    // NB: maxEntrySize is set to maxSize if it's set\n    if (this.maxEntrySize !== 0) {\n      if (this.#maxSize !== 0) {\n        if (!isPosInt(this.#maxSize)) {\n          throw new TypeError(\n            'maxSize must be a positive integer if specified',\n          )\n        }\n      }\n      if (!isPosInt(this.maxEntrySize)) {\n        throw new TypeError(\n          'maxEntrySize must be a positive integer if specified',\n        )\n      }\n      this.#initializeSizeTracking()\n    }\n\n    this.allowStale = !!allowStale\n    this.noDeleteOnStaleGet = !!noDeleteOnStaleGet\n    this.updateAgeOnGet = !!updateAgeOnGet\n    this.updateAgeOnHas = !!updateAgeOnHas\n    this.ttlResolution =\n      isPosInt(ttlResolution) || ttlResolution === 0 ? ttlResolution : 1\n    this.ttlAutopurge = !!ttlAutopurge\n    this.ttl = ttl || 0\n    if (this.ttl) {\n      if (!isPosInt(this.ttl)) {\n        throw new TypeError('ttl must be a positive integer if specified')\n      }\n      this.#initializeTTLTracking()\n    }\n\n    // do not allow completely unbounded caches\n    if (this.#max === 0 && this.ttl === 0 && this.#maxSize === 0) {\n      throw new TypeError(\n        'At least one of max, maxSize, or ttl is required',\n      )\n    }\n    if (!this.ttlAutopurge && !this.#max && !this.#maxSize) {\n      const code = 'LRU_CACHE_UNBOUNDED'\n      if (shouldWarn(code)) {\n        warned.add(code)\n        const msg =\n          'TTL caching without ttlAutopurge, max, or maxSize can ' +\n          'result in unbounded memory consumption.'\n        emitWarning(msg, 'UnboundedCacheWarning', code, LRUCache)\n      }\n    }\n  }\n\n  /**\n   * Return the number of ms left in the item's TTL. If item is not in cache,\n   * returns `0`. Returns `Infinity` if item is in cache without a defined TTL.\n   */\n  getRemainingTTL(key: K) {\n    return this.#keyMap.has(key) ? Infinity : 0\n  }\n\n  #initializeTTLTracking() {\n    const ttls = new ZeroArray(this.#max)\n    const starts = new ZeroArray(this.#max)\n    this.#ttls = ttls\n    this.#starts = starts\n    const purgeTimers =\n      this.ttlAutopurge ?\n        new Array<undefined | ReturnType<typeof setTimeout>>(this.#max)\n      : undefined\n    this.#autopurgeTimers = purgeTimers\n\n    this.#setItemTTL = (index, ttl, start = this.#perf.now()) => {\n      starts[index] = ttl !== 0 ? start : 0\n      ttls[index] = ttl\n      // clear out the purge timer if we're setting TTL to 0, and\n      // previously had a ttl purge timer running, so it doesn't\n      // fire unnecessarily.\n      if (purgeTimers?.[index]) {\n        clearTimeout(purgeTimers[index])\n        purgeTimers[index] = undefined\n      }\n      if (ttl !== 0 && purgeTimers) {\n        const t = setTimeout(() => {\n          if (this.#isStale(index)) {\n            this.#delete(this.#keyList[index] as K, 'expire')\n          }\n        }, ttl + 1)\n        // unref() not supported on all platforms\n        /* c8 ignore start */\n        if (t.unref) {\n          t.unref()\n        }\n        /* c8 ignore stop */\n        purgeTimers[index] = t\n      }\n    }\n\n    this.#updateItemAge = index => {\n      starts[index] = ttls[index] !== 0 ? this.#perf.now() : 0\n    }\n\n    this.#statusTTL = (status, index) => {\n      if (ttls[index]) {\n        const ttl = ttls[index]\n        const start = starts[index]\n        /* c8 ignore next */\n        if (!ttl || !start) return\n        status.ttl = ttl\n        status.start = start\n        status.now = cachedNow || getNow()\n        const age = status.now - start\n        status.remainingTTL = ttl - age\n      }\n    }\n\n    // debounce calls to perf.now() to 1s so we're not hitting\n    // that costly call repeatedly.\n    let cachedNow = 0\n    const getNow = () => {\n      const n = this.#perf.now()\n      if (this.ttlResolution > 0) {\n        cachedNow = n\n        const t = setTimeout(() => (cachedNow = 0), this.ttlResolution)\n        // not available on all platforms\n        /* c8 ignore start */\n        if (t.unref) {\n          t.unref()\n        }\n        /* c8 ignore stop */\n      }\n      return n\n    }\n\n    this.getRemainingTTL = key => {\n      const index = this.#keyMap.get(key)\n      if (index === undefined) {\n        return 0\n      }\n      const ttl = ttls[index]\n      const start = starts[index]\n      if (!ttl || !start) {\n        return Infinity\n      }\n      const age = (cachedNow || getNow()) - start\n      return ttl - age\n    }\n\n    this.#isStale = index => {\n      const s = starts[index]\n      const t = ttls[index]\n      return !!t && !!s && (cachedNow || getNow()) - s > t\n    }\n  }\n\n  // conditionally set private methods related to TTL\n  #updateItemAge: (index: Index) => void = () => {}\n  #statusTTL: (status: LRUCache.Status<V>, index: Index) => void = () => {}\n  #setItemTTL: (\n    index: Index,\n    ttl: LRUCache.Milliseconds,\n    start?: LRUCache.Milliseconds,\n    // ignore because we never call this if we're not already in TTL mode\n    /* c8 ignore start */\n  ) => void = () => {}\n  /* c8 ignore stop */\n\n  #isStale: (index: Index) => boolean = () => false\n\n  #initializeSizeTracking() {\n    const sizes = new ZeroArray(this.#max)\n    this.#calculatedSize = 0\n    this.#sizes = sizes\n    this.#removeItemSize = index => {\n      this.#calculatedSize -= sizes[index] as number\n      sizes[index] = 0\n    }\n    this.#requireSize = (k, v, size, sizeCalculation) => {\n      // provisionally accept background fetches.\n      // actual value size will be checked when they return.\n      if (this.#isBackgroundFetch(v)) {\n        return 0\n      }\n      if (!isPosInt(size)) {\n        if (sizeCalculation) {\n          if (typeof sizeCalculation !== 'function') {\n            throw new TypeError('sizeCalculation must be a function')\n          }\n          size = sizeCalculation(v, k)\n          if (!isPosInt(size)) {\n            throw new TypeError(\n              'sizeCalculation return invalid (expect positive integer)',\n            )\n          }\n        } else {\n          throw new TypeError(\n            'invalid size value (must be positive integer). ' +\n              'When maxSize or maxEntrySize is used, sizeCalculation ' +\n              'or size must be set.',\n          )\n        }\n      }\n      return size\n    }\n    this.#addItemSize = (\n      index: Index,\n      size: LRUCache.Size,\n      status?: LRUCache.Status<V>,\n    ) => {\n      sizes[index] = size\n      if (this.#maxSize) {\n        const maxSize = this.#maxSize - (sizes[index] as number)\n        while (this.#calculatedSize > maxSize) {\n          this.#evict(true)\n        }\n      }\n      this.#calculatedSize += sizes[index] as number\n      if (status) {\n        status.entrySize = size\n        status.totalCalculatedSize = this.#calculatedSize\n      }\n    }\n  }\n\n  #removeItemSize: (index: Index) => void = _i => {}\n  #addItemSize: (\n    index: Index,\n    size: LRUCache.Size,\n    status?: LRUCache.Status<V>,\n  ) => void = (_i, _s, _st) => {}\n  #requireSize: (\n    k: K,\n    v: V | BackgroundFetch<V>,\n    size?: LRUCache.Size,\n    sizeCalculation?: LRUCache.SizeCalculator<K, V>,\n  ) => LRUCache.Size = (\n    _k: K,\n    _v: V | BackgroundFetch<V>,\n    size?: LRUCache.Size,\n    sizeCalculation?: LRUCache.SizeCalculator<K, V>,\n  ) => {\n    if (size || sizeCalculation) {\n      throw new TypeError(\n        'cannot set size without setting maxSize or maxEntrySize on cache',\n      )\n    }\n    return 0\n  };\n\n  *#indexes({ allowStale = this.allowStale } = {}) {\n    if (this.#size) {\n      for (let i = this.#tail; true; ) {\n        if (!this.#isValidIndex(i)) {\n          break\n        }\n        if (allowStale || !this.#isStale(i)) {\n          yield i\n        }\n        if (i === this.#head) {\n          break\n        } else {\n          i = this.#prev[i] as Index\n        }\n      }\n    }\n  }\n\n  *#rindexes({ allowStale = this.allowStale } = {}) {\n    if (this.#size) {\n      for (let i = this.#head; true; ) {\n        if (!this.#isValidIndex(i)) {\n          break\n        }\n        if (allowStale || !this.#isStale(i)) {\n          yield i\n        }\n        if (i === this.#tail) {\n          break\n        } else {\n          i = this.#next[i] as Index\n        }\n      }\n    }\n  }\n\n  #isValidIndex(index: Index) {\n    return (\n      index !== undefined &&\n      this.#keyMap.get(this.#keyList[index] as K) === index\n    )\n  }\n\n  /**\n   * Return a generator yielding `[key, value]` pairs,\n   * in order from most recently used to least recently used.\n   */\n  *entries() {\n    for (const i of this.#indexes()) {\n      if (\n        this.#valList[i] !== undefined &&\n        this.#keyList[i] !== undefined &&\n        !this.#isBackgroundFetch(this.#valList[i])\n      ) {\n        yield [this.#keyList[i], this.#valList[i]] as [K, V]\n      }\n    }\n  }\n\n  /**\n   * Inverse order version of {@link LRUCache.entries}\n   *\n   * Return a generator yielding `[key, value]` pairs,\n   * in order from least recently used to most recently used.\n   */\n  *rentries() {\n    for (const i of this.#rindexes()) {\n      if (\n        this.#valList[i] !== undefined &&\n        this.#keyList[i] !== undefined &&\n        !this.#isBackgroundFetch(this.#valList[i])\n      ) {\n        yield [this.#keyList[i], this.#valList[i]]\n      }\n    }\n  }\n\n  /**\n   * Return a generator yielding the keys in the cache,\n   * in order from most recently used to least recently used.\n   */\n  *keys() {\n    for (const i of this.#indexes()) {\n      const k = this.#keyList[i]\n      if (k !== undefined && !this.#isBackgroundFetch(this.#valList[i])) {\n        yield k\n      }\n    }\n  }\n\n  /**\n   * Inverse order version of {@link LRUCache.keys}\n   *\n   * Return a generator yielding the keys in the cache,\n   * in order from least recently used to most recently used.\n   */\n  *rkeys() {\n    for (const i of this.#rindexes()) {\n      const k = this.#keyList[i]\n      if (k !== undefined && !this.#isBackgroundFetch(this.#valList[i])) {\n        yield k\n      }\n    }\n  }\n\n  /**\n   * Return a generator yielding the values in the cache,\n   * in order from most recently used to least recently used.\n   */\n  *values() {\n    for (const i of this.#indexes()) {\n      const v = this.#valList[i]\n      if (v !== undefined && !this.#isBackgroundFetch(this.#valList[i])) {\n        yield this.#valList[i] as V\n      }\n    }\n  }\n\n  /**\n   * Inverse order version of {@link LRUCache.values}\n   *\n   * Return a generator yielding the values in the cache,\n   * in order from least recently used to most recently used.\n   */\n  *rvalues() {\n    for (const i of this.#rindexes()) {\n      const v = this.#valList[i]\n      if (v !== undefined && !this.#isBackgroundFetch(this.#valList[i])) {\n        yield this.#valList[i]\n      }\n    }\n  }\n\n  /**\n   * Iterating over the cache itself yields the same results as\n   * {@link LRUCache.entries}\n   */\n  [Symbol.iterator]() {\n    return this.entries()\n  }\n\n  /**\n   * A String value that is used in the creation of the default string\n   * description of an object. Called by the built-in method\n   * `Object.prototype.toString`.\n   */\n  [Symbol.toStringTag] = 'LRUCache'\n\n  /**\n   * Find a value for which the supplied fn method returns a truthy value,\n   * similar to `Array.find()`. fn is called as `fn(value, key, cache)`.\n   */\n  find(\n    fn: (v: V, k: K, self: LRUCache<K, V, FC>) => boolean,\n    getOptions: LRUCache.GetOptions<K, V, FC> = {},\n  ) {\n    for (const i of this.#indexes()) {\n      const v = this.#valList[i]\n      const value = this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v\n      if (value === undefined) continue\n      if (fn(value, this.#keyList[i] as K, this)) {\n        return this.get(this.#keyList[i] as K, getOptions)\n      }\n    }\n  }\n\n  /**\n   * Call the supplied function on each item in the cache, in order from most\n   * recently used to least recently used.\n   *\n   * `fn` is called as `fn(value, key, cache)`.\n   *\n   * If `thisp` is provided, function will be called in the `this`-context of\n   * the provided object, or the cache if no `thisp` object is provided.\n   *\n   * Does not update age or recenty of use, or iterate over stale values.\n   */\n  forEach(\n    fn: (v: V, k: K, self: LRUCache<K, V, FC>) => any,\n    thisp: any = this,\n  ) {\n    for (const i of this.#indexes()) {\n      const v = this.#valList[i]\n      const value = this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v\n      if (value === undefined) continue\n      fn.call(thisp, value, this.#keyList[i] as K, this)\n    }\n  }\n\n  /**\n   * The same as {@link LRUCache.forEach} but items are iterated over in\n   * reverse order.  (ie, less recently used items are iterated over first.)\n   */\n  rforEach(\n    fn: (v: V, k: K, self: LRUCache<K, V, FC>) => any,\n    thisp: any = this,\n  ) {\n    for (const i of this.#rindexes()) {\n      const v = this.#valList[i]\n      const value = this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v\n      if (value === undefined) continue\n      fn.call(thisp, value, this.#keyList[i] as K, this)\n    }\n  }\n\n  /**\n   * Delete any stale entries. Returns true if anything was removed,\n   * false otherwise.\n   */\n  purgeStale() {\n    let deleted = false\n    for (const i of this.#rindexes({ allowStale: true })) {\n      if (this.#isStale(i)) {\n        this.#delete(this.#keyList[i] as K, 'expire')\n        deleted = true\n      }\n    }\n    return deleted\n  }\n\n  /**\n   * Get the extended info about a given entry, to get its value, size, and\n   * TTL info simultaneously. Returns `undefined` if the key is not present.\n   *\n   * Unlike {@link LRUCache#dump}, which is designed to be portable and survive\n   * serialization, the `start` value is always the current timestamp, and the\n   * `ttl` is a calculated remaining time to live (negative if expired).\n   *\n   * Always returns stale values, if their info is found in the cache, so be\n   * sure to check for expirations (ie, a negative {@link LRUCache.Entry#ttl})\n   * if relevant.\n   */\n  info(key: K): LRUCache.Entry<V> | undefined {\n    const i = this.#keyMap.get(key)\n    if (i === undefined) return undefined\n    const v = this.#valList[i]\n    /* c8 ignore start - this isn't tested for the info function,\n     * but it's the same logic as found in other places. */\n    const value: V | undefined =\n      this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v\n    if (value === undefined) return undefined\n    /* c8 ignore end */\n    const entry: LRUCache.Entry<V> = { value }\n    if (this.#ttls && this.#starts) {\n      const ttl = this.#ttls[i]\n      const start = this.#starts[i]\n      if (ttl && start) {\n        const remain = ttl - (this.#perf.now() - start)\n        entry.ttl = remain\n        entry.start = Date.now()\n      }\n    }\n    if (this.#sizes) {\n      entry.size = this.#sizes[i]\n    }\n    return entry\n  }\n\n  /**\n   * Return an array of [key, {@link LRUCache.Entry}] tuples which can be\n   * passed to {@link LRUCache#load}.\n   *\n   * The `start` fields are calculated relative to a portable `Date.now()`\n   * timestamp, even if `performance.now()` is available.\n   *\n   * Stale entries are always included in the `dump`, even if\n   * {@link LRUCache.OptionsBase.allowStale} is false.\n   *\n   * Note: this returns an actual array, not a generator, so it can be more\n   * easily passed around.\n   */\n  dump() {\n    const arr: [K, LRUCache.Entry<V>][] = []\n    for (const i of this.#indexes({ allowStale: true })) {\n      const key = this.#keyList[i]\n      const v = this.#valList[i]\n      const value: V | undefined =\n        this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v\n      if (value === undefined || key === undefined) continue\n      const entry: LRUCache.Entry<V> = { value }\n      if (this.#ttls && this.#starts) {\n        entry.ttl = this.#ttls[i]\n        // always dump the start relative to a portable timestamp\n        // it's ok for this to be a bit slow, it's a rare operation.\n        const age = this.#perf.now() - (this.#starts[i] as number)\n        entry.start = Math.floor(Date.now() - age)\n      }\n      if (this.#sizes) {\n        entry.size = this.#sizes[i]\n      }\n      arr.unshift([key, entry])\n    }\n    return arr\n  }\n\n  /**\n   * Reset the cache and load in the items in entries in the order listed.\n   *\n   * The shape of the resulting cache may be different if the same options are\n   * not used in both caches.\n   *\n   * The `start` fields are assumed to be calculated relative to a portable\n   * `Date.now()` timestamp, even if `performance.now()` is available.\n   */\n  load(arr: [K, LRUCache.Entry<V>][]) {\n    this.clear()\n    for (const [key, entry] of arr) {\n      if (entry.start) {\n        // entry.start is a portable timestamp, but we may be using\n        // node's performance.now(), so calculate the offset, so that\n        // we get the intended remaining TTL, no matter how long it's\n        // been on ice.\n        //\n        // it's ok for this to be a bit slow, it's a rare operation.\n        const age = Date.now() - entry.start\n        entry.start = this.#perf.now() - age\n      }\n      this.set(key, entry.value, entry)\n    }\n  }\n\n  /**\n   * Add a value to the cache.\n   *\n   * Note: if `undefined` is specified as a value, this is an alias for\n   * {@link LRUCache#delete}\n   *\n   * Fields on the {@link LRUCache.SetOptions} options param will override\n   * their corresponding values in the constructor options for the scope\n   * of this single `set()` operation.\n   *\n   * If `start` is provided, then that will set the effective start\n   * time for the TTL calculation. Note that this must be a previous\n   * value of `performance.now()` if supported, or a previous value of\n   * `Date.now()` if not.\n   *\n   * Options object may also include `size`, which will prevent\n   * calling the `sizeCalculation` function and just use the specified\n   * number if it is a positive integer, and `noDisposeOnSet` which\n   * will prevent calling a `dispose` function in the case of\n   * overwrites.\n   *\n   * If the `size` (or return value of `sizeCalculation`) for a given\n   * entry is greater than `maxEntrySize`, then the item will not be\n   * added to the cache.\n   *\n   * Will update the recency of the entry.\n   *\n   * If the value is `undefined`, then this is an alias for\n   * `cache.delete(key)`. `undefined` is never stored in the cache.\n   */\n  set(\n    k: K,\n    v: V | BackgroundFetch<V> | undefined,\n    setOptions: LRUCache.SetOptions<K, V, FC> = {},\n  ) {\n    if (v === undefined) {\n      this.delete(k)\n      return this\n    }\n    const {\n      ttl = this.ttl,\n      start,\n      noDisposeOnSet = this.noDisposeOnSet,\n      sizeCalculation = this.sizeCalculation,\n      status,\n    } = setOptions\n    let { noUpdateTTL = this.noUpdateTTL } = setOptions\n\n    const size = this.#requireSize(\n      k,\n      v,\n      setOptions.size || 0,\n      sizeCalculation,\n    )\n    // if the item doesn't fit, don't do anything\n    // NB: maxEntrySize set to maxSize by default\n    if (this.maxEntrySize && size > this.maxEntrySize) {\n      if (status) {\n        status.set = 'miss'\n        status.maxEntrySizeExceeded = true\n      }\n      // have to delete, in case something is there already.\n      this.#delete(k, 'set')\n      return this\n    }\n    let index = this.#size === 0 ? undefined : this.#keyMap.get(k)\n    if (index === undefined) {\n      // addition\n      index = (\n        this.#size === 0 ? this.#tail\n        : this.#free.length !== 0 ? this.#free.pop()\n        : this.#size === this.#max ? this.#evict(false)\n        : this.#size) as Index\n      this.#keyList[index] = k\n      this.#valList[index] = v\n      this.#keyMap.set(k, index)\n      this.#next[this.#tail] = index\n      this.#prev[index] = this.#tail\n      this.#tail = index\n      this.#size++\n      this.#addItemSize(index, size, status)\n      if (status) status.set = 'add'\n      noUpdateTTL = false\n      if (this.#hasOnInsert) {\n        this.#onInsert?.(v as V, k, 'add')\n      }\n    } else {\n      // update\n      this.#moveToTail(index)\n      const oldVal = this.#valList[index] as V | BackgroundFetch<V>\n      if (v !== oldVal) {\n        if (this.#hasFetchMethod && this.#isBackgroundFetch(oldVal)) {\n          oldVal.__abortController.abort(new Error('replaced'))\n          const { __staleWhileFetching: s } = oldVal\n          if (s !== undefined && !noDisposeOnSet) {\n            if (this.#hasDispose) {\n              this.#dispose?.(s as V, k, 'set')\n            }\n            if (this.#hasDisposeAfter) {\n              this.#disposed?.push([s as V, k, 'set'])\n            }\n          }\n        } else if (!noDisposeOnSet) {\n          if (this.#hasDispose) {\n            this.#dispose?.(oldVal as V, k, 'set')\n          }\n          if (this.#hasDisposeAfter) {\n            this.#disposed?.push([oldVal as V, k, 'set'])\n          }\n        }\n        this.#removeItemSize(index)\n        this.#addItemSize(index, size, status)\n        this.#valList[index] = v\n        if (status) {\n          status.set = 'replace'\n          const oldValue =\n            oldVal && this.#isBackgroundFetch(oldVal) ?\n              oldVal.__staleWhileFetching\n            : oldVal\n          if (oldValue !== undefined) status.oldValue = oldValue\n        }\n      } else if (status) {\n        status.set = 'update'\n      }\n\n      if (this.#hasOnInsert) {\n        this.onInsert?.(v as V, k, v === oldVal ? 'update' : 'replace')\n      }\n    }\n    if (ttl !== 0 && !this.#ttls) {\n      this.#initializeTTLTracking()\n    }\n    if (this.#ttls) {\n      if (!noUpdateTTL) {\n        this.#setItemTTL(index, ttl, start)\n      }\n      if (status) this.#statusTTL(status, index)\n    }\n    if (!noDisposeOnSet && this.#hasDisposeAfter && this.#disposed) {\n      const dt = this.#disposed\n      let task: DisposeTask<K, V> | undefined\n      while ((task = dt?.shift())) {\n        this.#disposeAfter?.(...task)\n      }\n    }\n    return this\n  }\n\n  /**\n   * Evict the least recently used item, returning its value or\n   * `undefined` if cache is empty.\n   */\n  pop(): V | undefined {\n    try {\n      while (this.#size) {\n        const val = this.#valList[this.#head]\n        this.#evict(true)\n        if (this.#isBackgroundFetch(val)) {\n          if (val.__staleWhileFetching) {\n            return val.__staleWhileFetching\n          }\n        } else if (val !== undefined) {\n          return val\n        }\n      }\n    } finally {\n      if (this.#hasDisposeAfter && this.#disposed) {\n        const dt = this.#disposed\n        let task: DisposeTask<K, V> | undefined\n        while ((task = dt?.shift())) {\n          this.#disposeAfter?.(...task)\n        }\n      }\n    }\n  }\n\n  #evict(free: boolean) {\n    const head = this.#head\n    const k = this.#keyList[head] as K\n    const v = this.#valList[head] as V\n    if (this.#hasFetchMethod && this.#isBackgroundFetch(v)) {\n      v.__abortController.abort(new Error('evicted'))\n    } else if (this.#hasDispose || this.#hasDisposeAfter) {\n      if (this.#hasDispose) {\n        this.#dispose?.(v, k, 'evict')\n      }\n      if (this.#hasDisposeAfter) {\n        this.#disposed?.push([v, k, 'evict'])\n      }\n    }\n    this.#removeItemSize(head)\n    if (this.#autopurgeTimers?.[head]) {\n      clearTimeout(this.#autopurgeTimers[head])\n      this.#autopurgeTimers[head] = undefined\n    }\n    // if we aren't about to use the index, then null these out\n    if (free) {\n      this.#keyList[head] = undefined\n      this.#valList[head] = undefined\n      this.#free.push(head)\n    }\n    if (this.#size === 1) {\n      this.#head = this.#tail = 0 as Index\n      this.#free.length = 0\n    } else {\n      this.#head = this.#next[head] as Index\n    }\n    this.#keyMap.delete(k)\n    this.#size--\n    return head\n  }\n\n  /**\n   * Check if a key is in the cache, without updating the recency of use.\n   * Will return false if the item is stale, even though it is technically\n   * in the cache.\n   *\n   * Check if a key is in the cache, without updating the recency of\n   * use. Age is updated if {@link LRUCache.OptionsBase.updateAgeOnHas} is set\n   * to `true` in either the options or the constructor.\n   *\n   * Will return `false` if the item is stale, even though it is technically in\n   * the cache. The difference can be determined (if it matters) by using a\n   * `status` argument, and inspecting the `has` field.\n   *\n   * Will not update item age unless\n   * {@link LRUCache.OptionsBase.updateAgeOnHas} is set.\n   */\n  has(k: K, hasOptions: LRUCache.HasOptions<K, V, FC> = {}) {\n    const { updateAgeOnHas = this.updateAgeOnHas, status } = hasOptions\n    const index = this.#keyMap.get(k)\n    if (index !== undefined) {\n      const v = this.#valList[index]\n      if (\n        this.#isBackgroundFetch(v) &&\n        v.__staleWhileFetching === undefined\n      ) {\n        return false\n      }\n      if (!this.#isStale(index)) {\n        if (updateAgeOnHas) {\n          this.#updateItemAge(index)\n        }\n        if (status) {\n          status.has = 'hit'\n          this.#statusTTL(status, index)\n        }\n        return true\n      } else if (status) {\n        status.has = 'stale'\n        this.#statusTTL(status, index)\n      }\n    } else if (status) {\n      status.has = 'miss'\n    }\n    return false\n  }\n\n  /**\n   * Like {@link LRUCache#get} but doesn't update recency or delete stale\n   * items.\n   *\n   * Returns `undefined` if the item is stale, unless\n   * {@link LRUCache.OptionsBase.allowStale} is set.\n   */\n  peek(k: K, peekOptions: LRUCache.PeekOptions<K, V, FC> = {}) {\n    const { allowStale = this.allowStale } = peekOptions\n    const index = this.#keyMap.get(k)\n    if (index === undefined || (!allowStale && this.#isStale(index))) {\n      return\n    }\n    const v = this.#valList[index]\n    // either stale and allowed, or forcing a refresh of non-stale value\n    return this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v\n  }\n\n  #backgroundFetch(\n    k: K,\n    index: Index | undefined,\n    options: LRUCache.FetchOptions<K, V, FC>,\n    context: any,\n  ): BackgroundFetch<V> {\n    const v = index === undefined ? undefined : this.#valList[index]\n    if (this.#isBackgroundFetch(v)) {\n      return v\n    }\n\n    const ac = new AC()\n    const { signal } = options\n    // when/if our AC signals, then stop listening to theirs.\n    signal?.addEventListener('abort', () => ac.abort(signal.reason), {\n      signal: ac.signal,\n    })\n\n    const fetchOpts = {\n      signal: ac.signal,\n      options,\n      context,\n    }\n\n    const cb = (v: V | undefined, updateCache = false): V | undefined => {\n      const { aborted } = ac.signal\n      const ignoreAbort = options.ignoreFetchAbort && v !== undefined\n      const proceed = options.ignoreFetchAbort ||\n        !!(options.allowStaleOnFetchAbort && v !== undefined)\n      if (options.status) {\n        if (aborted && !updateCache) {\n          options.status.fetchAborted = true\n          options.status.fetchError = ac.signal.reason\n          if (ignoreAbort) options.status.fetchAbortIgnored = true\n        } else {\n          options.status.fetchResolved = true\n        }\n      }\n      if (aborted && !ignoreAbort && !updateCache) {\n        return fetchFail(ac.signal.reason, proceed)\n      }\n      // either we didn't abort, and are still here, or we did, and ignored\n      const bf = p as BackgroundFetch<V>\n      // if nothing else has been written there but we're set to update the\n      // cache and ignore the abort, or if it's still pending on this specific\n      // background request, then write it to the cache.\n      const vl = this.#valList[index as Index]\n      if (vl === p || (ignoreAbort && updateCache && vl === undefined)) {\n        if (v === undefined) {\n          if (bf.__staleWhileFetching !== undefined) {\n            this.#valList[index as Index] = bf.__staleWhileFetching\n          } else {\n            this.#delete(k, 'fetch')\n          }\n        } else {\n          if (options.status) options.status.fetchUpdated = true\n          this.set(k, v, fetchOpts.options)\n        }\n      }\n      return v\n    }\n\n    const eb = (er: any) => {\n      if (options.status) {\n        options.status.fetchRejected = true\n        options.status.fetchError = er\n      }\n      // do not pass go, do not collect $200\n      return fetchFail(er, false)\n    }\n\n    const fetchFail = (er: any, proceed: boolean): V | undefined => {\n      const { aborted } = ac.signal\n      const allowStaleAborted = aborted && options.allowStaleOnFetchAbort\n      const allowStale =\n        allowStaleAborted || options.allowStaleOnFetchRejection\n      const noDelete = allowStale || options.noDeleteOnFetchRejection\n      const bf = p as BackgroundFetch<V>\n      if (this.#valList[index as Index] === p) {\n        // if we allow stale on fetch rejections, then we need to ensure that\n        // the stale value is not removed from the cache when the fetch fails.\n        const del = !noDelete ||\n          !proceed && bf.__staleWhileFetching === undefined\n        if (del) {\n          this.#delete(k, 'fetch')\n        } else if (!allowStaleAborted) {\n          // still replace the *promise* with the stale value,\n          // since we are done with the promise at this point.\n          // leave it untouched if we're still waiting for an\n          // aborted background fetch that hasn't yet returned.\n          this.#valList[index as Index] = bf.__staleWhileFetching\n        }\n      }\n      if (allowStale) {\n        if (options.status && bf.__staleWhileFetching !== undefined) {\n          options.status.returnedStale = true\n        }\n        return bf.__staleWhileFetching\n      } else if (bf.__returned === bf) {\n        throw er\n      }\n    }\n\n    const pcall = (\n      res: (v: V | undefined) => void,\n      rej: (e: any) => void,\n    ) => {\n      const fmp = this.#fetchMethod?.(k, v, fetchOpts)\n      if (fmp && fmp instanceof Promise) {\n        fmp.then(v => res(v === undefined ? undefined : v), rej)\n      }\n      // ignored, we go until we finish, regardless.\n      // defer check until we are actually aborting,\n      // so fetchMethod can override.\n      ac.signal.addEventListener('abort', () => {\n        if (!options.ignoreFetchAbort || options.allowStaleOnFetchAbort) {\n          res(undefined)\n          // when it eventually resolves, update the cache.\n          if (options.allowStaleOnFetchAbort) {\n            res = v => cb(v, true)\n          }\n        }\n      })\n    }\n\n    if (options.status) options.status.fetchDispatched = true\n    const p = new Promise(pcall).then(cb, eb)\n    const bf: BackgroundFetch<V> = Object.assign(p, {\n      __abortController: ac,\n      __staleWhileFetching: v,\n      __returned: undefined,\n    })\n\n    if (index === undefined) {\n      // internal, don't expose status.\n      this.set(k, bf, { ...fetchOpts.options, status: undefined })\n      index = this.#keyMap.get(k)\n    } else {\n      this.#valList[index] = bf\n    }\n    return bf\n  }\n\n  #isBackgroundFetch(p: any): p is BackgroundFetch<V> {\n    if (!this.#hasFetchMethod) return false\n    const b = p as BackgroundFetch<V>\n    return (\n      !!b &&\n      b instanceof Promise &&\n      b.hasOwnProperty('__staleWhileFetching') &&\n      b.__abortController instanceof AC\n    )\n  }\n\n  /**\n   * Make an asynchronous cached fetch using the\n   * {@link LRUCache.OptionsBase.fetchMethod} function.\n   *\n   * If the value is in the cache and not stale, then the returned\n   * Promise resolves to the value.\n   *\n   * If not in the cache, or beyond its TTL staleness, then\n   * `fetchMethod(key, staleValue, { options, signal, context })` is\n   * called, and the value returned will be added to the cache once\n   * resolved.\n   *\n   * If called with `allowStale`, and an asynchronous fetch is\n   * currently in progress to reload a stale value, then the former\n   * stale value will be returned.\n   *\n   * If called with `forceRefresh`, then the cached item will be\n   * re-fetched, even if it is not stale. However, if `allowStale` is also\n   * set, then the old value will still be returned. This is useful\n   * in cases where you want to force a reload of a cached value. If\n   * a background fetch is already in progress, then `forceRefresh`\n   * has no effect.\n   *\n   * If multiple fetches for the same key are issued, then they will all be\n   * coalesced into a single call to fetchMethod.\n   *\n   * Note that this means that handling options such as\n   * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort},\n   * {@link LRUCache.FetchOptions.signal},\n   * and {@link LRUCache.OptionsBase.allowStaleOnFetchRejection} will be\n   * determined by the FIRST fetch() call for a given key.\n   *\n   * This is a known (fixable) shortcoming which will be addresed on when\n   * someone complains about it, as the fix would involve added complexity and\n   * may not be worth the costs for this edge case.\n   *\n   * If {@link LRUCache.OptionsBase.fetchMethod} is not specified, then this is\n   * effectively an alias for `Promise.resolve(cache.get(key))`.\n   *\n   * When the fetch method resolves to a value, if the fetch has not\n   * been aborted due to deletion, eviction, or being overwritten,\n   * then it is added to the cache using the options provided.\n   *\n   * If the key is evicted or deleted before the `fetchMethod`\n   * resolves, then the AbortSignal passed to the `fetchMethod` will\n   * receive an `abort` event, and the promise returned by `fetch()`\n   * will reject with the reason for the abort.\n   *\n   * If a `signal` is passed to the `fetch()` call, then aborting the\n   * signal will abort the fetch and cause the `fetch()` promise to\n   * reject with the reason provided.\n   *\n   * **Setting `context`**\n   *\n   * If an `FC` type is set to a type other than `unknown`, `void`, or\n   * `undefined` in the {@link LRUCache} constructor, then all\n   * calls to `cache.fetch()` _must_ provide a `context` option. If\n   * set to `undefined` or `void`, then calls to fetch _must not_\n   * provide a `context` option.\n   *\n   * The `context` param allows you to provide arbitrary data that\n   * might be relevant in the course of fetching the data. It is only\n   * relevant for the course of a single `fetch()` operation, and\n   * discarded afterwards.\n   *\n   * **Note: `fetch()` calls are inflight-unique**\n   *\n   * If you call `fetch()` multiple times with the same key value,\n   * then every call after the first will resolve on the same\n   * promise<sup>1</sup>,\n   * _even if they have different settings that would otherwise change\n   * the behavior of the fetch_, such as `noDeleteOnFetchRejection`\n   * or `ignoreFetchAbort`.\n   *\n   * In most cases, this is not a problem (in fact, only fetching\n   * something once is what you probably want, if you're caching in\n   * the first place). If you are changing the fetch() options\n   * dramatically between runs, there's a good chance that you might\n   * be trying to fit divergent semantics into a single object, and\n   * would be better off with multiple cache instances.\n   *\n   * **1**: Ie, they're not the \"same Promise\", but they resolve at\n   * the same time, because they're both waiting on the same\n   * underlying fetchMethod response.\n   */\n\n  fetch(\n    k: K,\n    fetchOptions: unknown extends FC ? LRUCache.FetchOptions<K, V, FC>\n    : FC extends undefined | void ? LRUCache.FetchOptionsNoContext<K, V>\n    : LRUCache.FetchOptionsWithContext<K, V, FC>,\n  ): Promise<undefined | V>\n\n  // this overload not allowed if context is required\n  fetch(\n    k: unknown extends FC ? K\n    : FC extends undefined | void ? K\n    : never,\n    fetchOptions?: unknown extends FC ? LRUCache.FetchOptions<K, V, FC>\n    : FC extends undefined | void ? LRUCache.FetchOptionsNoContext<K, V>\n    : never,\n  ): Promise<undefined | V>\n\n  async fetch(\n    k: K,\n    fetchOptions: LRUCache.FetchOptions<K, V, FC> = {},\n  ): Promise<undefined | V> {\n    const {\n      // get options\n      allowStale = this.allowStale,\n      updateAgeOnGet = this.updateAgeOnGet,\n      noDeleteOnStaleGet = this.noDeleteOnStaleGet,\n      // set options\n      ttl = this.ttl,\n      noDisposeOnSet = this.noDisposeOnSet,\n      size = 0,\n      sizeCalculation = this.sizeCalculation,\n      noUpdateTTL = this.noUpdateTTL,\n      // fetch exclusive options\n      noDeleteOnFetchRejection = this.noDeleteOnFetchRejection,\n      allowStaleOnFetchRejection = this.allowStaleOnFetchRejection,\n      ignoreFetchAbort = this.ignoreFetchAbort,\n      allowStaleOnFetchAbort = this.allowStaleOnFetchAbort,\n      context,\n      forceRefresh = false,\n      status,\n      signal,\n    } = fetchOptions\n\n    if (!this.#hasFetchMethod) {\n      if (status) status.fetch = 'get'\n      return this.get(k, {\n        allowStale,\n        updateAgeOnGet,\n        noDeleteOnStaleGet,\n        status,\n      })\n    }\n\n    const options = {\n      allowStale,\n      updateAgeOnGet,\n      noDeleteOnStaleGet,\n      ttl,\n      noDisposeOnSet,\n      size,\n      sizeCalculation,\n      noUpdateTTL,\n      noDeleteOnFetchRejection,\n      allowStaleOnFetchRejection,\n      allowStaleOnFetchAbort,\n      ignoreFetchAbort,\n      status,\n      signal,\n    }\n\n    let index = this.#keyMap.get(k)\n    if (index === undefined) {\n      if (status) status.fetch = 'miss'\n      const p = this.#backgroundFetch(k, index, options, context)\n      return (p.__returned = p)\n    } else {\n      // in cache, maybe already fetching\n      const v = this.#valList[index]\n      if (this.#isBackgroundFetch(v)) {\n        const stale = allowStale && v.__staleWhileFetching !== undefined\n        if (status) {\n          status.fetch = 'inflight'\n          if (stale) status.returnedStale = true\n        }\n        return stale ? v.__staleWhileFetching : (v.__returned = v)\n      }\n\n      // if we force a refresh, that means do NOT serve the cached value,\n      // unless we are already in the process of refreshing the cache.\n      const isStale = this.#isStale(index)\n      if (!forceRefresh && !isStale) {\n        if (status) status.fetch = 'hit'\n        this.#moveToTail(index)\n        if (updateAgeOnGet) {\n          this.#updateItemAge(index)\n        }\n        if (status) this.#statusTTL(status, index)\n        return v\n      }\n\n      // ok, it is stale or a forced refresh, and not already fetching.\n      // refresh the cache.\n      const p = this.#backgroundFetch(k, index, options, context)\n      const hasStale = p.__staleWhileFetching !== undefined\n      const staleVal = hasStale && allowStale\n      if (status) {\n        status.fetch = isStale ? 'stale' : 'refresh'\n        if (staleVal && isStale) status.returnedStale = true\n      }\n      return staleVal ? p.__staleWhileFetching : (p.__returned = p)\n    }\n  }\n\n  /**\n   * In some cases, `cache.fetch()` may resolve to `undefined`, either because\n   * a {@link LRUCache.OptionsBase#fetchMethod} was not provided (turning\n   * `cache.fetch(k)` into just an async wrapper around `cache.get(k)`) or\n   * because `ignoreFetchAbort` was specified (either to the constructor or\n   * in the {@link LRUCache.FetchOptions}). Also, the\n   * {@link LRUCache.OptionsBase.fetchMethod} may return `undefined` or `void`, making\n   * the test even more complicated.\n   *\n   * Because inferring the cases where `undefined` might be returned are so\n   * cumbersome, but testing for `undefined` can also be annoying, this method\n   * can be used, which will reject if `this.fetch()` resolves to undefined.\n   */\n  forceFetch(\n    k: K,\n    fetchOptions: unknown extends FC ? LRUCache.FetchOptions<K, V, FC>\n    : FC extends undefined | void ? LRUCache.FetchOptionsNoContext<K, V>\n    : LRUCache.FetchOptionsWithContext<K, V, FC>,\n  ): Promise<V>\n  // this overload not allowed if context is required\n  forceFetch(\n    k: unknown extends FC ? K\n    : FC extends undefined | void ? K\n    : never,\n    fetchOptions?: unknown extends FC ? LRUCache.FetchOptions<K, V, FC>\n    : FC extends undefined | void ? LRUCache.FetchOptionsNoContext<K, V>\n    : never,\n  ): Promise<V>\n  async forceFetch(\n    k: K,\n    fetchOptions: LRUCache.FetchOptions<K, V, FC> = {},\n  ): Promise<V> {\n    const v = await this.fetch(\n      k,\n      fetchOptions as unknown extends FC ? LRUCache.FetchOptions<K, V, FC>\n      : FC extends undefined | void ? LRUCache.FetchOptionsNoContext<K, V>\n      : LRUCache.FetchOptionsWithContext<K, V, FC>,\n    )\n    if (v === undefined) throw new Error('fetch() returned undefined')\n    return v\n  }\n\n  /**\n   * If the key is found in the cache, then this is equivalent to\n   * {@link LRUCache#get}. If not, in the cache, then calculate the value using\n   * the {@link LRUCache.OptionsBase.memoMethod}, and add it to the cache.\n   *\n   * If an `FC` type is set to a type other than `unknown`, `void`, or\n   * `undefined` in the LRUCache constructor, then all calls to `cache.memo()`\n   * _must_ provide a `context` option. If set to `undefined` or `void`, then\n   * calls to memo _must not_ provide a `context` option.\n   *\n   * The `context` param allows you to provide arbitrary data that might be\n   * relevant in the course of fetching the data. It is only relevant for the\n   * course of a single `memo()` operation, and discarded afterwards.\n   */\n  memo(\n    k: K,\n    memoOptions: unknown extends FC ? LRUCache.MemoOptions<K, V, FC>\n    : FC extends undefined | void ? LRUCache.MemoOptionsNoContext<K, V>\n    : LRUCache.MemoOptionsWithContext<K, V, FC>,\n  ): V\n  // this overload not allowed if context is required\n  memo(\n    k: unknown extends FC ? K\n    : FC extends undefined | void ? K\n    : never,\n    memoOptions?: unknown extends FC ? LRUCache.MemoOptions<K, V, FC>\n    : FC extends undefined | void ? LRUCache.MemoOptionsNoContext<K, V>\n    : never,\n  ): V\n  memo(k: K, memoOptions: LRUCache.MemoOptions<K, V, FC> = {}) {\n    const memoMethod = this.#memoMethod\n    if (!memoMethod) {\n      throw new Error('no memoMethod provided to constructor')\n    }\n    const { context, forceRefresh, ...options } = memoOptions\n    const v = this.get(k, options)\n    if (!forceRefresh && v !== undefined) return v\n    const vv = memoMethod(k, v, {\n      options,\n      context,\n    } as LRUCache.MemoizerOptions<K, V, FC>)\n    this.set(k, vv, options)\n    return vv\n  }\n\n  /**\n   * Return a value from the cache. Will update the recency of the cache\n   * entry found.\n   *\n   * If the key is not found, get() will return `undefined`.\n   */\n  get(k: K, getOptions: LRUCache.GetOptions<K, V, FC> = {}) {\n    const {\n      allowStale = this.allowStale,\n      updateAgeOnGet = this.updateAgeOnGet,\n      noDeleteOnStaleGet = this.noDeleteOnStaleGet,\n      status,\n    } = getOptions\n    const index = this.#keyMap.get(k)\n    if (index !== undefined) {\n      const value = this.#valList[index]\n      const fetching = this.#isBackgroundFetch(value)\n      if (status) this.#statusTTL(status, index)\n      if (this.#isStale(index)) {\n        if (status) status.get = 'stale'\n        // delete only if not an in-flight background fetch\n        if (!fetching) {\n          if (!noDeleteOnStaleGet) {\n            this.#delete(k, 'expire')\n          }\n          if (status && allowStale) status.returnedStale = true\n          return allowStale ? value : undefined\n        } else {\n          if (\n            status &&\n            allowStale &&\n            value.__staleWhileFetching !== undefined\n          ) {\n            status.returnedStale = true\n          }\n          return allowStale ? value.__staleWhileFetching : undefined\n        }\n      } else {\n        if (status) status.get = 'hit'\n        // if we're currently fetching it, we don't actually have it yet\n        // it's not stale, which means this isn't a staleWhileRefetching.\n        // If it's not stale, and fetching, AND has a __staleWhileFetching\n        // value, then that means the user fetched with {forceRefresh:true},\n        // so it's safe to return that value.\n        if (fetching) {\n          return value.__staleWhileFetching\n        }\n        this.#moveToTail(index)\n        if (updateAgeOnGet) {\n          this.#updateItemAge(index)\n        }\n        return value\n      }\n    } else if (status) {\n      status.get = 'miss'\n    }\n  }\n\n  #connect(p: Index, n: Index) {\n    this.#prev[n] = p\n    this.#next[p] = n\n  }\n\n  #moveToTail(index: Index): void {\n    // if tail already, nothing to do\n    // if head, move head to next[index]\n    // else\n    //   move next[prev[index]] to next[index] (head has no prev)\n    //   move prev[next[index]] to prev[index]\n    // prev[index] = tail\n    // next[tail] = index\n    // tail = index\n    if (index !== this.#tail) {\n      if (index === this.#head) {\n        this.#head = this.#next[index] as Index\n      } else {\n        this.#connect(\n          this.#prev[index] as Index,\n          this.#next[index] as Index,\n        )\n      }\n      this.#connect(this.#tail, index)\n      this.#tail = index\n    }\n  }\n\n  /**\n   * Deletes a key out of the cache.\n   *\n   * Returns true if the key was deleted, false otherwise.\n   */\n  delete(k: K) {\n    return this.#delete(k, 'delete')\n  }\n\n  #delete(k: K, reason: LRUCache.DisposeReason) {\n    let deleted = false\n    if (this.#size !== 0) {\n      const index = this.#keyMap.get(k)\n      if (index !== undefined) {\n        if (this.#autopurgeTimers?.[index]) {\n          clearTimeout(this.#autopurgeTimers?.[index])\n          this.#autopurgeTimers[index] = undefined\n        }\n        deleted = true\n        if (this.#size === 1) {\n          this.#clear(reason)\n        } else {\n          this.#removeItemSize(index)\n          const v = this.#valList[index]\n          if (this.#isBackgroundFetch(v)) {\n            v.__abortController.abort(new Error('deleted'))\n          } else if (this.#hasDispose || this.#hasDisposeAfter) {\n            if (this.#hasDispose) {\n              this.#dispose?.(v as V, k, reason)\n            }\n            if (this.#hasDisposeAfter) {\n              this.#disposed?.push([v as V, k, reason])\n            }\n          }\n          this.#keyMap.delete(k)\n          this.#keyList[index] = undefined\n          this.#valList[index] = undefined\n          if (index === this.#tail) {\n            this.#tail = this.#prev[index] as Index\n          } else if (index === this.#head) {\n            this.#head = this.#next[index] as Index\n          } else {\n            const pi = this.#prev[index] as number\n            this.#next[pi] = this.#next[index] as number\n            const ni = this.#next[index] as number\n            this.#prev[ni] = this.#prev[index] as number\n          }\n          this.#size--\n          this.#free.push(index)\n        }\n      }\n    }\n    if (this.#hasDisposeAfter && this.#disposed?.length) {\n      const dt = this.#disposed\n      let task: DisposeTask<K, V> | undefined\n      while ((task = dt?.shift())) {\n        this.#disposeAfter?.(...task)\n      }\n    }\n    return deleted\n  }\n\n  /**\n   * Clear the cache entirely, throwing away all values.\n   */\n  clear() {\n    return this.#clear('delete')\n  }\n  #clear(reason: LRUCache.DisposeReason) {\n    for (const index of this.#rindexes({ allowStale: true })) {\n      const v = this.#valList[index]\n      if (this.#isBackgroundFetch(v)) {\n        v.__abortController.abort(new Error('deleted'))\n      } else {\n        const k = this.#keyList[index]\n        if (this.#hasDispose) {\n          this.#dispose?.(v as V, k as K, reason)\n        }\n        if (this.#hasDisposeAfter) {\n          this.#disposed?.push([v as V, k as K, reason])\n        }\n      }\n    }\n\n    this.#keyMap.clear()\n    this.#valList.fill(undefined)\n    this.#keyList.fill(undefined)\n    if (this.#ttls && this.#starts) {\n      this.#ttls.fill(0)\n      this.#starts.fill(0)\n      for (const t of this.#autopurgeTimers ?? []) {\n        if (t !== undefined) clearTimeout(t)\n      }\n      this.#autopurgeTimers?.fill(undefined)\n    }\n    if (this.#sizes) {\n      this.#sizes.fill(0)\n    }\n    this.#head = 0 as Index\n    this.#tail = 0 as Index\n    this.#free.length = 0\n    this.#calculatedSize = 0\n    this.#size = 0\n    if (this.#hasDisposeAfter && this.#disposed) {\n      const dt = this.#disposed\n      let task: DisposeTask<K, V> | undefined\n      while ((task = dt?.shift())) {\n        this.#disposeAfter?.(...task)\n      }\n    }\n  }\n}\n", "import type { ApolloServerPlugin } from '../../externalTypes/index.js';\nimport {\n  type DirectiveNode,\n  getNamedType,\n  type GraphQLCompositeType,\n  type GraphQLField,\n  isCompositeType,\n  isInterfaceType,\n  isObjectType,\n  responsePathAsArray,\n} from 'graphql';\nimport { newCachePolicy } from '../../cachePolicy.js';\nimport { internalPlugin } from '../../internalPlugin.js';\nimport { LRUCache } from 'lru-cache';\nimport type {\n  CacheHint,\n  CacheScope,\n  GraphQLResolveInfoWithCacheControl,\n} from '@apollo/cache-control-types';\n\n/**\n * CacheAnnotation represents the contents of a `@cacheControl` directive.\n * (`inheritMaxAge` is part of this interface and not CacheHint, because\n * `inheritMaxAge` isn't a contributing piece of a cache policy: it just means\n * to not apply default values in some contexts.)\n */\ninterface CacheAnnotation extends CacheHint {\n  inheritMaxAge?: true;\n}\n\nexport interface ApolloServerPluginCacheControlOptions {\n  /**\n   * All root fields and fields returning objects or interfaces have this value\n   * for `maxAge` unless they set a cache hint with a non-undefined `maxAge`\n   * using `@cacheControl` or `setCacheHint`. The default is 0, which means \"not\n   * cacheable\". (That is: if you don't set `defaultMaxAge`, then every root\n   * field in your operation and every field with sub-fields must have a cache\n   * hint or the overall operation will not be cacheable.)\n   */\n  defaultMaxAge?: number;\n  /**\n   * Determines whether to set the `Cache-Control` HTTP header. If true (the\n   * default), the header is written on all responses (with a value of\n   * `no-store` for non-cacheable responses). If `'if-cacheable'`, the header is\n   * only written for cacheable responses. If false, the header is never\n   * written. A response is cacheable if its overall cache policy has a non-zero\n   * `maxAge`, and the body is a single result rather than an incremental\n   * delivery response, and the body contains no errors.\n   */\n  calculateHttpHeaders?: boolean | 'if-cacheable';\n  // For testing only.\n  __testing__cacheHints?: Map<string, CacheHint>;\n}\n\nexport function ApolloServerPluginCacheControl(\n  options: ApolloServerPluginCacheControlOptions = Object.create(null),\n): ApolloServerPlugin {\n  let typeAnnotationCache: LRUCache<GraphQLCompositeType, CacheAnnotation>;\n\n  let fieldAnnotationCache: LRUCache<\n    GraphQLField<unknown, unknown>,\n    CacheAnnotation\n  >;\n\n  return internalPlugin({\n    __internal_plugin_id__: 'CacheControl',\n    __is_disabled_plugin__: false,\n\n    async serverWillStart({ schema }) {\n      // Set the size of the caches to be equal to the number of composite types\n      // and fields in the schema respectively. This generally means that the\n      // cache will always have room for all the cache hints in the active\n      // schema but we won't have a memory leak as schemas are replaced in a\n      // gateway. (Once we're comfortable breaking compatibility with\n      // versions of Gateway older than 0.35.0, we should also run this code\n      // from a schemaDidLoadOrUpdate instead of serverWillStart. Using\n      // schemaDidLoadOrUpdate throws when combined with old gateways.)\n      typeAnnotationCache = new LRUCache<GraphQLCompositeType, CacheAnnotation>(\n        {\n          max: Object.values(schema.getTypeMap()).filter(isCompositeType)\n            .length,\n        },\n      );\n\n      fieldAnnotationCache = new LRUCache<\n        GraphQLField<unknown, unknown>,\n        CacheAnnotation\n      >({\n        max:\n          Object.values(schema.getTypeMap())\n            .filter(isObjectType)\n            .flatMap((t) => Object.values(t.getFields())).length +\n          Object.values(schema.getTypeMap())\n            .filter(isInterfaceType)\n            .flatMap((t) => Object.values(t.getFields())).length,\n      });\n\n      return undefined;\n    },\n\n    async requestDidStart(requestContext) {\n      function memoizedCacheAnnotationFromType(\n        t: GraphQLCompositeType,\n      ): CacheAnnotation {\n        const existing = typeAnnotationCache.get(t);\n        if (existing) {\n          return existing;\n        }\n        const annotation = cacheAnnotationFromType(t);\n        typeAnnotationCache.set(t, annotation);\n        return annotation;\n      }\n\n      function memoizedCacheAnnotationFromField(\n        field: GraphQLField<unknown, unknown>,\n      ): CacheAnnotation {\n        const existing = fieldAnnotationCache.get(field);\n        if (existing) {\n          return existing;\n        }\n        const annotation = cacheAnnotationFromField(field);\n        fieldAnnotationCache.set(field, annotation);\n        return annotation;\n      }\n\n      const defaultMaxAge: number = options.defaultMaxAge ?? 0;\n      const calculateHttpHeaders = options.calculateHttpHeaders ?? true;\n      const { __testing__cacheHints } = options;\n\n      return {\n        async executionDidStart() {\n          // Did something set the overall cache policy before we've even\n          // started? If so, consider that as an override and don't touch it.\n          // Just put set up fake `info.cacheControl` objects and otherwise\n          // don't track cache policy.\n          //\n          // (This doesn't happen in practice using the core plugins: the main\n          // use case for restricting overallCachePolicy outside of this plugin\n          // is apollo-server-plugin-response-cache, but when it sets the policy\n          // we never get to execution at all.)\n          if (isRestricted(requestContext.overallCachePolicy)) {\n            // This is \"fake\" in the sense that it never actually affects\n            // requestContext.overallCachePolicy.\n            const fakeFieldPolicy = newCachePolicy();\n            return {\n              willResolveField({ info }) {\n                // This `as` is \"safe\" in the sense that this is the statement\n                // that makes a GraphQLResolveInfo into a\n                // GraphQLResolveInfoWithCacheControl.\n                (info as GraphQLResolveInfoWithCacheControl).cacheControl = {\n                  setCacheHint: (dynamicHint: CacheHint) => {\n                    fakeFieldPolicy.replace(dynamicHint);\n                  },\n                  cacheHint: fakeFieldPolicy,\n                  cacheHintFromType: memoizedCacheAnnotationFromType,\n                };\n              },\n            };\n          }\n\n          return {\n            willResolveField({ info }) {\n              const fieldPolicy = newCachePolicy();\n\n              let inheritMaxAge = false;\n\n              // If this field's resolver returns an object/interface/union\n              // (maybe wrapped in list/non-null), look for hints on that return\n              // type.\n              const targetType = getNamedType(info.returnType);\n              if (isCompositeType(targetType)) {\n                const typeAnnotation =\n                  memoizedCacheAnnotationFromType(targetType);\n                fieldPolicy.replace(typeAnnotation);\n                inheritMaxAge = !!typeAnnotation.inheritMaxAge;\n              }\n\n              // Look for hints on the field itself (on its parent type), taking\n              // precedence over previously calculated hints.\n              const fieldAnnotation = memoizedCacheAnnotationFromField(\n                info.parentType.getFields()[info.fieldName],\n              );\n\n              // Note that specifying `@cacheControl(inheritMaxAge: true)` on a\n              // field whose return type defines a `maxAge` gives precedence to\n              // the type's `maxAge`. (Perhaps this should be some sort of\n              // error.)\n              if (\n                fieldAnnotation.inheritMaxAge &&\n                fieldPolicy.maxAge === undefined\n              ) {\n                inheritMaxAge = true;\n                // Handle `@cacheControl(inheritMaxAge: true, scope: PRIVATE)`.\n                // (We ignore any specified `maxAge`; perhaps it should be some\n                // sort of error.)\n                if (fieldAnnotation.scope) {\n                  fieldPolicy.replace({ scope: fieldAnnotation.scope });\n                }\n              } else {\n                fieldPolicy.replace(fieldAnnotation);\n              }\n\n              // This `as` is \"safe\" in the sense that this is the statement\n              // that makes a GraphQLResolveInfo into a\n              // GraphQLResolveInfoWithCacheControl.\n              (info as GraphQLResolveInfoWithCacheControl).cacheControl = {\n                setCacheHint: (dynamicHint: CacheHint) => {\n                  fieldPolicy.replace(dynamicHint);\n                },\n                cacheHint: fieldPolicy,\n                cacheHintFromType: memoizedCacheAnnotationFromType,\n              };\n\n              // When the resolver is done, call restrict once. By calling\n              // restrict after the resolver instead of before, we don't need to\n              // \"undo\" the effect on overallCachePolicy of a static hint that\n              // gets refined by a dynamic hint.\n              return () => {\n                // If this field returns a composite type or is a root field and\n                // we haven't seen an explicit maxAge hint, set the maxAge to 0\n                // (uncached) or the default if specified in the constructor.\n                // (Non-object fields by default are assumed to inherit their\n                // cacheability from their parents. But on the other hand, while\n                // root non-object fields can get explicit hints from their\n                // definition on the Query/Mutation object, if that doesn't\n                // exist then there's no parent field that would assign the\n                // default maxAge, so we do it here.)\n                //\n                // You can disable this on a non-root field by writing\n                // `@cacheControl(inheritMaxAge: true)` on it. If you do this,\n                // then its children will be treated like root paths, since\n                // there is no parent maxAge to inherit.\n                //\n                // We do this in the end hook so that dynamic cache control\n                // prevents it from happening (eg,\n                // `info.cacheControl.cacheHint.restrict({maxAge: 60})` should\n                // work rather than doing nothing because we've already set the\n                // max age to the default of 0). This also lets resolvers assume\n                // any hint in `info.cacheControl.cacheHint` was explicitly set.\n                if (\n                  fieldPolicy.maxAge === undefined &&\n                  ((isCompositeType(targetType) && !inheritMaxAge) ||\n                    !info.path.prev)\n                ) {\n                  fieldPolicy.restrict({ maxAge: defaultMaxAge });\n                }\n\n                if (__testing__cacheHints && isRestricted(fieldPolicy)) {\n                  const path = responsePathAsArray(info.path).join('.');\n                  if (__testing__cacheHints.has(path)) {\n                    throw Error(\n                      \"shouldn't happen: addHint should only be called once per path\",\n                    );\n                  }\n                  __testing__cacheHints.set(path, {\n                    maxAge: fieldPolicy.maxAge,\n                    scope: fieldPolicy.scope,\n                  });\n                }\n                requestContext.overallCachePolicy.restrict(fieldPolicy);\n              };\n            },\n          };\n        },\n\n        async willSendResponse(requestContext) {\n          // This hook is just for setting response headers, so make sure that\n          // hasn't been disabled.\n          if (!calculateHttpHeaders) {\n            return;\n          }\n\n          const { response, overallCachePolicy } = requestContext;\n\n          // Look to see if something has already set the cache-control header.\n          // This could be a different plugin... or it could be this very plugin\n          // operating on a different operation in the same batched HTTP\n          // request.\n          const existingCacheControlHeader = parseExistingCacheControlHeader(\n            response.http.headers.get('cache-control'),\n          );\n\n          // If the header contains something other than a value that this\n          // plugin sets, then we leave it alone. We don't want to mangle\n          // something important that you set! That said, it's probably best to\n          // have only one piece of code that writes to a given header, so you\n          // should probably set `calculateHttpHeaders: false` on this plugin.\n          if (existingCacheControlHeader.kind === 'unparsable') {\n            return;\n          }\n\n          const cachePolicy = newCachePolicy();\n          cachePolicy.replace(overallCachePolicy);\n          if (existingCacheControlHeader.kind === 'parsable-and-cacheable') {\n            cachePolicy.restrict(existingCacheControlHeader.hint);\n          }\n          const policyIfCacheable = cachePolicy.policyIfCacheable();\n\n          if (\n            // This code path is only for if we believe it is cacheable.\n            policyIfCacheable &&\n            // Either there wasn't a cache-control header already, or we've\n            // already incorporated it into policyIfCacheable. (If we couldn't\n            // parse it, that means some other plugin or mechanism set the\n            // header. This is confusing, so we just don't make any more\n            // changes. You should probably set `calculateHttpHeaders` to false\n            // in that case and only set the header from one place.)\n            existingCacheControlHeader.kind !== 'uncacheable' &&\n            // At least for now, we don't set cache-control headers for\n            // incremental delivery responses, since we don't know if a later\n            // part of the execution will affect the cache policy (perhaps\n            // dynamically). (Note that willSendResponse is called when the\n            // initial payload is sent, not the final payload.)\n            response.body.kind === 'single' &&\n            !response.body.singleResult.errors\n          ) {\n            response.http.headers.set(\n              'cache-control',\n              `max-age=${\n                policyIfCacheable.maxAge\n              }, ${policyIfCacheable.scope.toLowerCase()}`,\n            );\n          } else if (calculateHttpHeaders !== 'if-cacheable') {\n            // The response is not cacheable, so make sure it doesn't get\n            // cached. This is especially important for GET requests, because\n            // browsers and other agents cache many GET requests by default.\n            // (But if some other plugin set the header to a value that this\n            // plugin does not produce, we don't do anything.)\n            response.http.headers.set(\n              'cache-control',\n              CACHE_CONTROL_HEADER_UNCACHEABLE,\n            );\n          }\n        },\n      };\n    },\n  });\n}\n\nconst CACHE_CONTROL_HEADER_CACHEABLE_REGEXP =\n  /^max-age=(\\d+), (public|private)$/;\nconst CACHE_CONTROL_HEADER_UNCACHEABLE = 'no-store';\n\ntype ExistingCacheControlHeader =\n  | { kind: 'no-header' }\n  | { kind: 'uncacheable' }\n  | { kind: 'parsable-and-cacheable'; hint: CacheHint }\n  | { kind: 'unparsable' };\n\nfunction parseExistingCacheControlHeader(\n  header: string | undefined,\n): ExistingCacheControlHeader {\n  if (!header) {\n    return { kind: 'no-header' };\n  }\n  if (header === CACHE_CONTROL_HEADER_UNCACHEABLE) {\n    return { kind: 'uncacheable' };\n  }\n  const match = CACHE_CONTROL_HEADER_CACHEABLE_REGEXP.exec(header);\n  if (!match) {\n    return { kind: 'unparsable' };\n  }\n  return {\n    kind: 'parsable-and-cacheable',\n    hint: {\n      maxAge: +match[1],\n      scope: match[2] === 'public' ? 'PUBLIC' : 'PRIVATE',\n    },\n  };\n}\n\nfunction cacheAnnotationFromDirectives(\n  directives: ReadonlyArray<DirectiveNode> | undefined,\n): CacheAnnotation | undefined {\n  if (!directives) return undefined;\n\n  const cacheControlDirective = directives.find(\n    (directive) => directive.name.value === 'cacheControl',\n  );\n  if (!cacheControlDirective) return undefined;\n\n  if (!cacheControlDirective.arguments) return undefined;\n\n  const maxAgeArgument = cacheControlDirective.arguments.find(\n    (argument) => argument.name.value === 'maxAge',\n  );\n  const scopeArgument = cacheControlDirective.arguments.find(\n    (argument) => argument.name.value === 'scope',\n  );\n  const inheritMaxAgeArgument = cacheControlDirective.arguments.find(\n    (argument) => argument.name.value === 'inheritMaxAge',\n  );\n\n  const scopeString =\n    scopeArgument?.value?.kind === 'EnumValue'\n      ? scopeArgument.value.value\n      : undefined;\n\n  const scope: CacheScope | undefined =\n    scopeString === 'PUBLIC' || scopeString === 'PRIVATE'\n      ? scopeString\n      : undefined;\n\n  if (\n    inheritMaxAgeArgument?.value?.kind === 'BooleanValue' &&\n    inheritMaxAgeArgument.value.value\n  ) {\n    // We ignore maxAge if it is also specified.\n    return { inheritMaxAge: true, scope };\n  }\n\n  return {\n    maxAge:\n      maxAgeArgument?.value?.kind === 'IntValue'\n        ? parseInt(maxAgeArgument.value.value)\n        : undefined,\n    scope,\n  };\n}\n\nfunction cacheAnnotationFromType(t: GraphQLCompositeType): CacheAnnotation {\n  if (t.astNode) {\n    const hint = cacheAnnotationFromDirectives(t.astNode.directives);\n    if (hint) {\n      return hint;\n    }\n  }\n  if (t.extensionASTNodes) {\n    for (const node of t.extensionASTNodes) {\n      const hint = cacheAnnotationFromDirectives(node.directives);\n      if (hint) {\n        return hint;\n      }\n    }\n  }\n  return {};\n}\n\nfunction cacheAnnotationFromField(\n  field: GraphQLField<unknown, unknown>,\n): CacheAnnotation {\n  if (field.astNode) {\n    const hint = cacheAnnotationFromDirectives(field.astNode.directives);\n    if (hint) {\n      return hint;\n    }\n  }\n  return {};\n}\n\nfunction isRestricted(hint: CacheHint) {\n  return hint.maxAge !== undefined || hint.scope !== undefined;\n}\n", "\"use strict\";\r\nmodule.exports = asPromise;\r\n\r\n/**\r\n * Callback as used by {@link util.asPromise}.\r\n * @typedef asPromiseCallback\r\n * @type {function}\r\n * @param {Error|null} error Error, if any\r\n * @param {...*} params Additional arguments\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Returns a promise from a node-style callback function.\r\n * @memberof util\r\n * @param {asPromiseCallback} fn Function to call\r\n * @param {*} ctx Function context\r\n * @param {...*} params Function arguments\r\n * @returns {Promise<*>} Promisified function\r\n */\r\nfunction asPromise(fn, ctx/*, varargs */) {\r\n    var params  = new Array(arguments.length - 1),\r\n        offset  = 0,\r\n        index   = 2,\r\n        pending = true;\r\n    while (index < arguments.length)\r\n        params[offset++] = arguments[index++];\r\n    return new Promise(function executor(resolve, reject) {\r\n        params[offset] = function callback(err/*, varargs */) {\r\n            if (pending) {\r\n                pending = false;\r\n                if (err)\r\n                    reject(err);\r\n                else {\r\n                    var params = new Array(arguments.length - 1),\r\n                        offset = 0;\r\n                    while (offset < params.length)\r\n                        params[offset++] = arguments[offset];\r\n                    resolve.apply(null, params);\r\n                }\r\n            }\r\n        };\r\n        try {\r\n            fn.apply(ctx || null, params);\r\n        } catch (err) {\r\n            if (pending) {\r\n                pending = false;\r\n                reject(err);\r\n            }\r\n        }\r\n    });\r\n}\r\n", "\"use strict\";\r\n\r\n/**\r\n * A minimal base64 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar base64 = exports;\r\n\r\n/**\r\n * Calculates the byte length of a base64 encoded string.\r\n * @param {string} string Base64 encoded string\r\n * @returns {number} Byte length\r\n */\r\nbase64.length = function length(string) {\r\n    var p = string.length;\r\n    if (!p)\r\n        return 0;\r\n    var n = 0;\r\n    while (--p % 4 > 1 && string.charAt(p) === \"=\")\r\n        ++n;\r\n    return Math.ceil(string.length * 3) / 4 - n;\r\n};\r\n\r\n// Base64 encoding table\r\nvar b64 = new Array(64);\r\n\r\n// Base64 decoding table\r\nvar s64 = new Array(123);\r\n\r\n// 65..90, 97..122, 48..57, 43, 47\r\nfor (var i = 0; i < 64;)\r\n    s64[b64[i] = i < 26 ? i + 65 : i < 52 ? i + 71 : i < 62 ? i - 4 : i - 59 | 43] = i++;\r\n\r\n/**\r\n * Encodes a buffer to a base64 encoded string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} Base64 encoded string\r\n */\r\nbase64.encode = function encode(buffer, start, end) {\r\n    var parts = null,\r\n        chunk = [];\r\n    var i = 0, // output index\r\n        j = 0, // goto index\r\n        t;     // temporary\r\n    while (start < end) {\r\n        var b = buffer[start++];\r\n        switch (j) {\r\n            case 0:\r\n                chunk[i++] = b64[b >> 2];\r\n                t = (b & 3) << 4;\r\n                j = 1;\r\n                break;\r\n            case 1:\r\n                chunk[i++] = b64[t | b >> 4];\r\n                t = (b & 15) << 2;\r\n                j = 2;\r\n                break;\r\n            case 2:\r\n                chunk[i++] = b64[t | b >> 6];\r\n                chunk[i++] = b64[b & 63];\r\n                j = 0;\r\n                break;\r\n        }\r\n        if (i > 8191) {\r\n            (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n            i = 0;\r\n        }\r\n    }\r\n    if (j) {\r\n        chunk[i++] = b64[t];\r\n        chunk[i++] = 61;\r\n        if (j === 1)\r\n            chunk[i++] = 61;\r\n    }\r\n    if (parts) {\r\n        if (i)\r\n            parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n        return parts.join(\"\");\r\n    }\r\n    return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\nvar invalidEncoding = \"invalid encoding\";\r\n\r\n/**\r\n * Decodes a base64 encoded string to a buffer.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Number of bytes written\r\n * @throws {Error} If encoding is invalid\r\n */\r\nbase64.decode = function decode(string, buffer, offset) {\r\n    var start = offset;\r\n    var j = 0, // goto index\r\n        t;     // temporary\r\n    for (var i = 0; i < string.length;) {\r\n        var c = string.charCodeAt(i++);\r\n        if (c === 61 && j > 1)\r\n            break;\r\n        if ((c = s64[c]) === undefined)\r\n            throw Error(invalidEncoding);\r\n        switch (j) {\r\n            case 0:\r\n                t = c;\r\n                j = 1;\r\n                break;\r\n            case 1:\r\n                buffer[offset++] = t << 2 | (c & 48) >> 4;\r\n                t = c;\r\n                j = 2;\r\n                break;\r\n            case 2:\r\n                buffer[offset++] = (t & 15) << 4 | (c & 60) >> 2;\r\n                t = c;\r\n                j = 3;\r\n                break;\r\n            case 3:\r\n                buffer[offset++] = (t & 3) << 6 | c;\r\n                j = 0;\r\n                break;\r\n        }\r\n    }\r\n    if (j === 1)\r\n        throw Error(invalidEncoding);\r\n    return offset - start;\r\n};\r\n\r\n/**\r\n * Tests if the specified string appears to be base64 encoded.\r\n * @param {string} string String to test\r\n * @returns {boolean} `true` if probably base64 encoded, otherwise false\r\n */\r\nbase64.test = function test(string) {\r\n    return /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/.test(string);\r\n};\r\n", "\"use strict\";\r\nmodule.exports = EventEmitter;\r\n\r\n/**\r\n * Constructs a new event emitter instance.\r\n * @classdesc A minimal event emitter.\r\n * @memberof util\r\n * @constructor\r\n */\r\nfunction EventEmitter() {\r\n\r\n    /**\r\n     * Registered listeners.\r\n     * @type {Object.<string,*>}\r\n     * @private\r\n     */\r\n    this._listeners = {};\r\n}\r\n\r\n/**\r\n * Registers an event listener.\r\n * @param {string} evt Event name\r\n * @param {function} fn Listener\r\n * @param {*} [ctx] Listener context\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.on = function on(evt, fn, ctx) {\r\n    (this._listeners[evt] || (this._listeners[evt] = [])).push({\r\n        fn  : fn,\r\n        ctx : ctx || this\r\n    });\r\n    return this;\r\n};\r\n\r\n/**\r\n * Removes an event listener or any matching listeners if arguments are omitted.\r\n * @param {string} [evt] Event name. Removes all listeners if omitted.\r\n * @param {function} [fn] Listener to remove. Removes all listeners of `evt` if omitted.\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.off = function off(evt, fn) {\r\n    if (evt === undefined)\r\n        this._listeners = {};\r\n    else {\r\n        if (fn === undefined)\r\n            this._listeners[evt] = [];\r\n        else {\r\n            var listeners = this._listeners[evt];\r\n            for (var i = 0; i < listeners.length;)\r\n                if (listeners[i].fn === fn)\r\n                    listeners.splice(i, 1);\r\n                else\r\n                    ++i;\r\n        }\r\n    }\r\n    return this;\r\n};\r\n\r\n/**\r\n * Emits an event by calling its listeners with the specified arguments.\r\n * @param {string} evt Event name\r\n * @param {...*} args Arguments\r\n * @returns {util.EventEmitter} `this`\r\n */\r\nEventEmitter.prototype.emit = function emit(evt) {\r\n    var listeners = this._listeners[evt];\r\n    if (listeners) {\r\n        var args = [],\r\n            i = 1;\r\n        for (; i < arguments.length;)\r\n            args.push(arguments[i++]);\r\n        for (i = 0; i < listeners.length;)\r\n            listeners[i].fn.apply(listeners[i++].ctx, args);\r\n    }\r\n    return this;\r\n};\r\n", "\"use strict\";\r\n\r\nmodule.exports = factory(factory);\r\n\r\n/**\r\n * Reads / writes floats / doubles from / to buffers.\r\n * @name util.float\r\n * @namespace\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using little endian byte order.\r\n * @name util.float.writeFloatLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 32 bit float to a buffer using big endian byte order.\r\n * @name util.float.writeFloatBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using little endian byte order.\r\n * @name util.float.readFloatLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 32 bit float from a buffer using big endian byte order.\r\n * @name util.float.readFloatBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using little endian byte order.\r\n * @name util.float.writeDoubleLE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Writes a 64 bit double to a buffer using big endian byte order.\r\n * @name util.float.writeDoubleBE\r\n * @function\r\n * @param {number} val Value to write\r\n * @param {Uint8Array} buf Target buffer\r\n * @param {number} pos Target buffer offset\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using little endian byte order.\r\n * @name util.float.readDoubleLE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n/**\r\n * Reads a 64 bit double from a buffer using big endian byte order.\r\n * @name util.float.readDoubleBE\r\n * @function\r\n * @param {Uint8Array} buf Source buffer\r\n * @param {number} pos Source buffer offset\r\n * @returns {number} Value read\r\n */\r\n\r\n// Factory function for the purpose of node-based testing in modified global environments\r\nfunction factory(exports) {\r\n\r\n    // float: typed array\r\n    if (typeof Float32Array !== \"undefined\") (function() {\r\n\r\n        var f32 = new Float32Array([ -0 ]),\r\n            f8b = new Uint8Array(f32.buffer),\r\n            le  = f8b[3] === 128;\r\n\r\n        function writeFloat_f32_cpy(val, buf, pos) {\r\n            f32[0] = val;\r\n            buf[pos    ] = f8b[0];\r\n            buf[pos + 1] = f8b[1];\r\n            buf[pos + 2] = f8b[2];\r\n            buf[pos + 3] = f8b[3];\r\n        }\r\n\r\n        function writeFloat_f32_rev(val, buf, pos) {\r\n            f32[0] = val;\r\n            buf[pos    ] = f8b[3];\r\n            buf[pos + 1] = f8b[2];\r\n            buf[pos + 2] = f8b[1];\r\n            buf[pos + 3] = f8b[0];\r\n        }\r\n\r\n        /* istanbul ignore next */\r\n        exports.writeFloatLE = le ? writeFloat_f32_cpy : writeFloat_f32_rev;\r\n        /* istanbul ignore next */\r\n        exports.writeFloatBE = le ? writeFloat_f32_rev : writeFloat_f32_cpy;\r\n\r\n        function readFloat_f32_cpy(buf, pos) {\r\n            f8b[0] = buf[pos    ];\r\n            f8b[1] = buf[pos + 1];\r\n            f8b[2] = buf[pos + 2];\r\n            f8b[3] = buf[pos + 3];\r\n            return f32[0];\r\n        }\r\n\r\n        function readFloat_f32_rev(buf, pos) {\r\n            f8b[3] = buf[pos    ];\r\n            f8b[2] = buf[pos + 1];\r\n            f8b[1] = buf[pos + 2];\r\n            f8b[0] = buf[pos + 3];\r\n            return f32[0];\r\n        }\r\n\r\n        /* istanbul ignore next */\r\n        exports.readFloatLE = le ? readFloat_f32_cpy : readFloat_f32_rev;\r\n        /* istanbul ignore next */\r\n        exports.readFloatBE = le ? readFloat_f32_rev : readFloat_f32_cpy;\r\n\r\n    // float: ieee754\r\n    })(); else (function() {\r\n\r\n        function writeFloat_ieee754(writeUint, val, buf, pos) {\r\n            var sign = val < 0 ? 1 : 0;\r\n            if (sign)\r\n                val = -val;\r\n            if (val === 0)\r\n                writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos);\r\n            else if (isNaN(val))\r\n                writeUint(2143289344, buf, pos);\r\n            else if (val > 3.4028234663852886e+38) // +-Infinity\r\n                writeUint((sign << 31 | 2139095040) >>> 0, buf, pos);\r\n            else if (val < 1.1754943508222875e-38) // denormal\r\n                writeUint((sign << 31 | Math.round(val / 1.401298464324817e-45)) >>> 0, buf, pos);\r\n            else {\r\n                var exponent = Math.floor(Math.log(val) / Math.LN2),\r\n                    mantissa = Math.round(val * Math.pow(2, -exponent) * 8388608) & 8388607;\r\n                writeUint((sign << 31 | exponent + 127 << 23 | mantissa) >>> 0, buf, pos);\r\n            }\r\n        }\r\n\r\n        exports.writeFloatLE = writeFloat_ieee754.bind(null, writeUintLE);\r\n        exports.writeFloatBE = writeFloat_ieee754.bind(null, writeUintBE);\r\n\r\n        function readFloat_ieee754(readUint, buf, pos) {\r\n            var uint = readUint(buf, pos),\r\n                sign = (uint >> 31) * 2 + 1,\r\n                exponent = uint >>> 23 & 255,\r\n                mantissa = uint & 8388607;\r\n            return exponent === 255\r\n                ? mantissa\r\n                ? NaN\r\n                : sign * Infinity\r\n                : exponent === 0 // denormal\r\n                ? sign * 1.401298464324817e-45 * mantissa\r\n                : sign * Math.pow(2, exponent - 150) * (mantissa + 8388608);\r\n        }\r\n\r\n        exports.readFloatLE = readFloat_ieee754.bind(null, readUintLE);\r\n        exports.readFloatBE = readFloat_ieee754.bind(null, readUintBE);\r\n\r\n    })();\r\n\r\n    // double: typed array\r\n    if (typeof Float64Array !== \"undefined\") (function() {\r\n\r\n        var f64 = new Float64Array([-0]),\r\n            f8b = new Uint8Array(f64.buffer),\r\n            le  = f8b[7] === 128;\r\n\r\n        function writeDouble_f64_cpy(val, buf, pos) {\r\n            f64[0] = val;\r\n            buf[pos    ] = f8b[0];\r\n            buf[pos + 1] = f8b[1];\r\n            buf[pos + 2] = f8b[2];\r\n            buf[pos + 3] = f8b[3];\r\n            buf[pos + 4] = f8b[4];\r\n            buf[pos + 5] = f8b[5];\r\n            buf[pos + 6] = f8b[6];\r\n            buf[pos + 7] = f8b[7];\r\n        }\r\n\r\n        function writeDouble_f64_rev(val, buf, pos) {\r\n            f64[0] = val;\r\n            buf[pos    ] = f8b[7];\r\n            buf[pos + 1] = f8b[6];\r\n            buf[pos + 2] = f8b[5];\r\n            buf[pos + 3] = f8b[4];\r\n            buf[pos + 4] = f8b[3];\r\n            buf[pos + 5] = f8b[2];\r\n            buf[pos + 6] = f8b[1];\r\n            buf[pos + 7] = f8b[0];\r\n        }\r\n\r\n        /* istanbul ignore next */\r\n        exports.writeDoubleLE = le ? writeDouble_f64_cpy : writeDouble_f64_rev;\r\n        /* istanbul ignore next */\r\n        exports.writeDoubleBE = le ? writeDouble_f64_rev : writeDouble_f64_cpy;\r\n\r\n        function readDouble_f64_cpy(buf, pos) {\r\n            f8b[0] = buf[pos    ];\r\n            f8b[1] = buf[pos + 1];\r\n            f8b[2] = buf[pos + 2];\r\n            f8b[3] = buf[pos + 3];\r\n            f8b[4] = buf[pos + 4];\r\n            f8b[5] = buf[pos + 5];\r\n            f8b[6] = buf[pos + 6];\r\n            f8b[7] = buf[pos + 7];\r\n            return f64[0];\r\n        }\r\n\r\n        function readDouble_f64_rev(buf, pos) {\r\n            f8b[7] = buf[pos    ];\r\n            f8b[6] = buf[pos + 1];\r\n            f8b[5] = buf[pos + 2];\r\n            f8b[4] = buf[pos + 3];\r\n            f8b[3] = buf[pos + 4];\r\n            f8b[2] = buf[pos + 5];\r\n            f8b[1] = buf[pos + 6];\r\n            f8b[0] = buf[pos + 7];\r\n            return f64[0];\r\n        }\r\n\r\n        /* istanbul ignore next */\r\n        exports.readDoubleLE = le ? readDouble_f64_cpy : readDouble_f64_rev;\r\n        /* istanbul ignore next */\r\n        exports.readDoubleBE = le ? readDouble_f64_rev : readDouble_f64_cpy;\r\n\r\n    // double: ieee754\r\n    })(); else (function() {\r\n\r\n        function writeDouble_ieee754(writeUint, off0, off1, val, buf, pos) {\r\n            var sign = val < 0 ? 1 : 0;\r\n            if (sign)\r\n                val = -val;\r\n            if (val === 0) {\r\n                writeUint(0, buf, pos + off0);\r\n                writeUint(1 / val > 0 ? /* positive */ 0 : /* negative 0 */ 2147483648, buf, pos + off1);\r\n            } else if (isNaN(val)) {\r\n                writeUint(0, buf, pos + off0);\r\n                writeUint(2146959360, buf, pos + off1);\r\n            } else if (val > 1.7976931348623157e+308) { // +-Infinity\r\n                writeUint(0, buf, pos + off0);\r\n                writeUint((sign << 31 | 2146435072) >>> 0, buf, pos + off1);\r\n            } else {\r\n                var mantissa;\r\n                if (val < 2.2250738585072014e-308) { // denormal\r\n                    mantissa = val / 5e-324;\r\n                    writeUint(mantissa >>> 0, buf, pos + off0);\r\n                    writeUint((sign << 31 | mantissa / 4294967296) >>> 0, buf, pos + off1);\r\n                } else {\r\n                    var exponent = Math.floor(Math.log(val) / Math.LN2);\r\n                    if (exponent === 1024)\r\n                        exponent = 1023;\r\n                    mantissa = val * Math.pow(2, -exponent);\r\n                    writeUint(mantissa * 4503599627370496 >>> 0, buf, pos + off0);\r\n                    writeUint((sign << 31 | exponent + 1023 << 20 | mantissa * 1048576 & 1048575) >>> 0, buf, pos + off1);\r\n                }\r\n            }\r\n        }\r\n\r\n        exports.writeDoubleLE = writeDouble_ieee754.bind(null, writeUintLE, 0, 4);\r\n        exports.writeDoubleBE = writeDouble_ieee754.bind(null, writeUintBE, 4, 0);\r\n\r\n        function readDouble_ieee754(readUint, off0, off1, buf, pos) {\r\n            var lo = readUint(buf, pos + off0),\r\n                hi = readUint(buf, pos + off1);\r\n            var sign = (hi >> 31) * 2 + 1,\r\n                exponent = hi >>> 20 & 2047,\r\n                mantissa = 4294967296 * (hi & 1048575) + lo;\r\n            return exponent === 2047\r\n                ? mantissa\r\n                ? NaN\r\n                : sign * Infinity\r\n                : exponent === 0 // denormal\r\n                ? sign * 5e-324 * mantissa\r\n                : sign * Math.pow(2, exponent - 1075) * (mantissa + 4503599627370496);\r\n        }\r\n\r\n        exports.readDoubleLE = readDouble_ieee754.bind(null, readUintLE, 0, 4);\r\n        exports.readDoubleBE = readDouble_ieee754.bind(null, readUintBE, 4, 0);\r\n\r\n    })();\r\n\r\n    return exports;\r\n}\r\n\r\n// uint helpers\r\n\r\nfunction writeUintLE(val, buf, pos) {\r\n    buf[pos    ] =  val        & 255;\r\n    buf[pos + 1] =  val >>> 8  & 255;\r\n    buf[pos + 2] =  val >>> 16 & 255;\r\n    buf[pos + 3] =  val >>> 24;\r\n}\r\n\r\nfunction writeUintBE(val, buf, pos) {\r\n    buf[pos    ] =  val >>> 24;\r\n    buf[pos + 1] =  val >>> 16 & 255;\r\n    buf[pos + 2] =  val >>> 8  & 255;\r\n    buf[pos + 3] =  val        & 255;\r\n}\r\n\r\nfunction readUintLE(buf, pos) {\r\n    return (buf[pos    ]\r\n          | buf[pos + 1] << 8\r\n          | buf[pos + 2] << 16\r\n          | buf[pos + 3] << 24) >>> 0;\r\n}\r\n\r\nfunction readUintBE(buf, pos) {\r\n    return (buf[pos    ] << 24\r\n          | buf[pos + 1] << 16\r\n          | buf[pos + 2] << 8\r\n          | buf[pos + 3]) >>> 0;\r\n}\r\n", "\"use strict\";\r\nmodule.exports = inquire;\r\n\r\n/**\r\n * Requires a module only if available.\r\n * @memberof util\r\n * @param {string} moduleName Module to require\r\n * @returns {?Object} Required module if available and not empty, otherwise `null`\r\n */\r\nfunction inquire(moduleName) {\r\n    try {\r\n        var mod = eval(\"quire\".replace(/^/,\"re\"))(moduleName); // eslint-disable-line no-eval\r\n        if (mod && (mod.length || Object.keys(mod).length))\r\n            return mod;\r\n    } catch (e) {} // eslint-disable-line no-empty\r\n    return null;\r\n}\r\n", "\"use strict\";\r\n\r\n/**\r\n * A minimal UTF8 implementation for number arrays.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar utf8 = exports;\r\n\r\n/**\r\n * Calculates the UTF8 byte length of a string.\r\n * @param {string} string String\r\n * @returns {number} Byte length\r\n */\r\nutf8.length = function utf8_length(string) {\r\n    var len = 0,\r\n        c = 0;\r\n    for (var i = 0; i < string.length; ++i) {\r\n        c = string.charCodeAt(i);\r\n        if (c < 128)\r\n            len += 1;\r\n        else if (c < 2048)\r\n            len += 2;\r\n        else if ((c & 0xFC00) === 0xD800 && (string.charCodeAt(i + 1) & 0xFC00) === 0xDC00) {\r\n            ++i;\r\n            len += 4;\r\n        } else\r\n            len += 3;\r\n    }\r\n    return len;\r\n};\r\n\r\n/**\r\n * Reads UTF8 bytes as a string.\r\n * @param {Uint8Array} buffer Source buffer\r\n * @param {number} start Source start\r\n * @param {number} end Source end\r\n * @returns {string} String read\r\n */\r\nutf8.read = function utf8_read(buffer, start, end) {\r\n    var len = end - start;\r\n    if (len < 1)\r\n        return \"\";\r\n    var parts = null,\r\n        chunk = [],\r\n        i = 0, // char offset\r\n        t;     // temporary\r\n    while (start < end) {\r\n        t = buffer[start++];\r\n        if (t < 128)\r\n            chunk[i++] = t;\r\n        else if (t > 191 && t < 224)\r\n            chunk[i++] = (t & 31) << 6 | buffer[start++] & 63;\r\n        else if (t > 239 && t < 365) {\r\n            t = ((t & 7) << 18 | (buffer[start++] & 63) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63) - 0x10000;\r\n            chunk[i++] = 0xD800 + (t >> 10);\r\n            chunk[i++] = 0xDC00 + (t & 1023);\r\n        } else\r\n            chunk[i++] = (t & 15) << 12 | (buffer[start++] & 63) << 6 | buffer[start++] & 63;\r\n        if (i > 8191) {\r\n            (parts || (parts = [])).push(String.fromCharCode.apply(String, chunk));\r\n            i = 0;\r\n        }\r\n    }\r\n    if (parts) {\r\n        if (i)\r\n            parts.push(String.fromCharCode.apply(String, chunk.slice(0, i)));\r\n        return parts.join(\"\");\r\n    }\r\n    return String.fromCharCode.apply(String, chunk.slice(0, i));\r\n};\r\n\r\n/**\r\n * Writes a string as UTF8 bytes.\r\n * @param {string} string Source string\r\n * @param {Uint8Array} buffer Destination buffer\r\n * @param {number} offset Destination offset\r\n * @returns {number} Bytes written\r\n */\r\nutf8.write = function utf8_write(string, buffer, offset) {\r\n    var start = offset,\r\n        c1, // character 1\r\n        c2; // character 2\r\n    for (var i = 0; i < string.length; ++i) {\r\n        c1 = string.charCodeAt(i);\r\n        if (c1 < 128) {\r\n            buffer[offset++] = c1;\r\n        } else if (c1 < 2048) {\r\n            buffer[offset++] = c1 >> 6       | 192;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        } else if ((c1 & 0xFC00) === 0xD800 && ((c2 = string.charCodeAt(i + 1)) & 0xFC00) === 0xDC00) {\r\n            c1 = 0x10000 + ((c1 & 0x03FF) << 10) + (c2 & 0x03FF);\r\n            ++i;\r\n            buffer[offset++] = c1 >> 18      | 240;\r\n            buffer[offset++] = c1 >> 12 & 63 | 128;\r\n            buffer[offset++] = c1 >> 6  & 63 | 128;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        } else {\r\n            buffer[offset++] = c1 >> 12      | 224;\r\n            buffer[offset++] = c1 >> 6  & 63 | 128;\r\n            buffer[offset++] = c1       & 63 | 128;\r\n        }\r\n    }\r\n    return offset - start;\r\n};\r\n", "\"use strict\";\r\nmodule.exports = pool;\r\n\r\n/**\r\n * An allocator as used by {@link util.pool}.\r\n * @typedef PoolAllocator\r\n * @type {function}\r\n * @param {number} size Buffer size\r\n * @returns {Uint8Array} Buffer\r\n */\r\n\r\n/**\r\n * A slicer as used by {@link util.pool}.\r\n * @typedef PoolSlicer\r\n * @type {function}\r\n * @param {number} start Start offset\r\n * @param {number} end End offset\r\n * @returns {Uint8Array} Buffer slice\r\n * @this {Uint8Array}\r\n */\r\n\r\n/**\r\n * A general purpose buffer pool.\r\n * @memberof util\r\n * @function\r\n * @param {PoolAllocator} alloc Allocator\r\n * @param {PoolSlicer} slice Slicer\r\n * @param {number} [size=8192] Slab size\r\n * @returns {PoolAllocator} Pooled allocator\r\n */\r\nfunction pool(alloc, slice, size) {\r\n    var SIZE   = size || 8192;\r\n    var MAX    = SIZE >>> 1;\r\n    var slab   = null;\r\n    var offset = SIZE;\r\n    return function pool_alloc(size) {\r\n        if (size < 1 || size > MAX)\r\n            return alloc(size);\r\n        if (offset + size > SIZE) {\r\n            slab = alloc(SIZE);\r\n            offset = 0;\r\n        }\r\n        var buf = slice.call(slab, offset, offset += size);\r\n        if (offset & 7) // align to 32 bit\r\n            offset = (offset | 7) + 1;\r\n        return buf;\r\n    };\r\n}\r\n", "\"use strict\";\nmodule.exports = LongBits;\n\nvar util = require(\"../util/minimal\");\n\n/**\n * Constructs new long bits.\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\n * @memberof util\n * @constructor\n * @param {number} lo Low 32 bits, unsigned\n * @param {number} hi High 32 bits, unsigned\n */\nfunction LongBits(lo, hi) {\n\n    // note that the casts below are theoretically unnecessary as of today, but older statically\n    // generated converter code might still call the ctor with signed 32bits. kept for compat.\n\n    /**\n     * Low bits.\n     * @type {number}\n     */\n    this.lo = lo >>> 0;\n\n    /**\n     * High bits.\n     * @type {number}\n     */\n    this.hi = hi >>> 0;\n}\n\n/**\n * Zero bits.\n * @memberof util.LongBits\n * @type {util.LongBits}\n */\nvar zero = LongBits.zero = new LongBits(0, 0);\n\nzero.toNumber = function() { return 0; };\nzero.zzEncode = zero.zzDecode = function() { return this; };\nzero.length = function() { return 1; };\n\n/**\n * Zero hash.\n * @memberof util.LongBits\n * @type {string}\n */\nvar zeroHash = LongBits.zeroHash = \"\\0\\0\\0\\0\\0\\0\\0\\0\";\n\n/**\n * Constructs new long bits from the specified number.\n * @param {number} value Value\n * @returns {util.LongBits} Instance\n */\nLongBits.fromNumber = function fromNumber(value) {\n    if (value === 0)\n        return zero;\n    var sign = value < 0;\n    if (sign)\n        value = -value;\n    var lo = value >>> 0,\n        hi = (value - lo) / 4294967296 >>> 0;\n    if (sign) {\n        hi = ~hi >>> 0;\n        lo = ~lo >>> 0;\n        if (++lo > 4294967295) {\n            lo = 0;\n            if (++hi > 4294967295)\n                hi = 0;\n        }\n    }\n    return new LongBits(lo, hi);\n};\n\n/**\n * Constructs new long bits from a number, long or string.\n * @param {number|string} value Value\n * @returns {util.LongBits} Instance\n */\nLongBits.from = function from(value) {\n    if (typeof value === \"number\")\n        return LongBits.fromNumber(value);\n    if (util.isString(value)) {\n        /* istanbul ignore else */\n        if (util.Long)\n            value = util.Long.fromString(value);\n        else\n            return LongBits.fromNumber(parseInt(value, 10));\n    }\n    return value.low || value.high ? new LongBits(value.low >>> 0, value.high >>> 0) : zero;\n};\n\n/**\n * Converts this long bits to a possibly unsafe JavaScript number.\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {number} Possibly unsafe number\n */\nLongBits.prototype.toNumber = function toNumber(unsigned) {\n    if (!unsigned && this.hi >>> 31) {\n        var lo = ~this.lo + 1 >>> 0,\n            hi = ~this.hi     >>> 0;\n        if (!lo)\n            hi = hi + 1 >>> 0;\n        return -(lo + hi * 4294967296);\n    }\n    return this.lo + this.hi * 4294967296;\n};\n\n/*\n * Converts this long bits to a long.\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {Long} Long\n */\nLongBits.prototype.toLong = function toLong(unsigned) {\n    return util.Long\n        ? new util.Long(this.lo | 0, this.hi | 0, Boolean(unsigned))\n        /* istanbul ignore next */\n        : { low: this.lo | 0, high: this.hi | 0, unsigned: Boolean(unsigned) };\n};\n\nvar charCodeAt = String.prototype.charCodeAt;\n\n/**\n * Constructs new long bits from the specified 8 characters long hash.\n * @param {string} hash Hash\n * @returns {util.LongBits} Bits\n */\nLongBits.fromHash = function fromHash(hash) {\n    if (hash === zeroHash)\n        return zero;\n    return new LongBits(\n        ( charCodeAt.call(hash, 0)\n        | charCodeAt.call(hash, 1) << 8\n        | charCodeAt.call(hash, 2) << 16\n        | charCodeAt.call(hash, 3) << 24) >>> 0\n    ,\n        ( charCodeAt.call(hash, 4)\n        | charCodeAt.call(hash, 5) << 8\n        | charCodeAt.call(hash, 6) << 16\n        | charCodeAt.call(hash, 7) << 24) >>> 0\n    );\n};\n\n/**\n * Converts this long bits to a 8 characters long hash.\n * @returns {string} Hash\n */\nLongBits.prototype.toHash = function toHash() {\n    return String.fromCharCode(\n        this.lo        & 255,\n        this.lo >>> 8  & 255,\n        this.lo >>> 16 & 255,\n        this.lo >>> 24      ,\n        this.hi        & 255,\n        this.hi >>> 8  & 255,\n        this.hi >>> 16 & 255,\n        this.hi >>> 24\n    );\n};\n\n/**\n * Zig-zag encodes this long bits.\n * @returns {util.LongBits} `this`\n */\nLongBits.prototype.zzEncode = function zzEncode() {\n    var mask =   this.hi >> 31;\n    this.hi  = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\n    this.lo  = ( this.lo << 1                   ^ mask) >>> 0;\n    return this;\n};\n\n/**\n * Zig-zag decodes this long bits.\n * @returns {util.LongBits} `this`\n */\nLongBits.prototype.zzDecode = function zzDecode() {\n    var mask = -(this.lo & 1);\n    this.lo  = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\n    this.hi  = ( this.hi >>> 1                  ^ mask) >>> 0;\n    return this;\n};\n\n/**\n * Calculates the length of this longbits when encoded as a varint.\n * @returns {number} Length\n */\nLongBits.prototype.length = function length() {\n    var part0 =  this.lo,\n        part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\n        part2 =  this.hi >>> 24;\n    return part2 === 0\n         ? part1 === 0\n           ? part0 < 16384\n             ? part0 < 128 ? 1 : 2\n             : part0 < 2097152 ? 3 : 4\n           : part1 < 16384\n             ? part1 < 128 ? 5 : 6\n             : part1 < 2097152 ? 7 : 8\n         : part2 < 128 ? 9 : 10;\n};\n", "\"use strict\";\nvar util = exports;\n\n// used to return a Promise where callback is omitted\nutil.asPromise = require(\"@protobufjs/aspromise\");\n\n// converts to / from base64 encoded strings\nutil.base64 = require(\"@protobufjs/base64\");\n\n// base class of rpc.Service\nutil.EventEmitter = require(\"@protobufjs/eventemitter\");\n\n// float handling accross browsers\nutil.float = require(\"@protobufjs/float\");\n\n// requires modules optionally and hides the call from bundlers\nutil.inquire = require(\"@protobufjs/inquire\");\n\n// converts to / from utf8 encoded strings\nutil.utf8 = require(\"@protobufjs/utf8\");\n\n// provides a node-like buffer pool in the browser\nutil.pool = require(\"@protobufjs/pool\");\n\n// utility to work with the low and high bits of a 64 bit value\nutil.LongBits = require(\"./longbits\");\n\n// global object reference\nutil.global = typeof window !== \"undefined\" && window\n           || typeof global !== \"undefined\" && global\n           || typeof self   !== \"undefined\" && self\n           || this; // eslint-disable-line no-invalid-this\n\n/**\n * An immuable empty array.\n * @memberof util\n * @type {Array.<*>}\n * @const\n */\nutil.emptyArray = Object.freeze ? Object.freeze([]) : /* istanbul ignore next */ []; // used on prototypes\n\n/**\n * An immutable empty object.\n * @type {Object}\n * @const\n */\nutil.emptyObject = Object.freeze ? Object.freeze({}) : /* istanbul ignore next */ {}; // used on prototypes\n\n/**\n * Whether running within node or not.\n * @memberof util\n * @type {boolean}\n * @const\n */\nutil.isNode = Boolean(util.global.process && util.global.process.versions && util.global.process.versions.node);\n\n/**\n * Tests if the specified value is an integer.\n * @function\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is an integer\n */\nutil.isInteger = Number.isInteger || /* istanbul ignore next */ function isInteger(value) {\n    return typeof value === \"number\" && isFinite(value) && Math.floor(value) === value;\n};\n\n/**\n * Tests if the specified value is a string.\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is a string\n */\nutil.isString = function isString(value) {\n    return typeof value === \"string\" || value instanceof String;\n};\n\n/**\n * Tests if the specified value is a non-null object.\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is a non-null object\n */\nutil.isObject = function isObject(value) {\n    return value && typeof value === \"object\";\n};\n\n/**\n * Checks if a property on a message is considered to be present.\n * This is an alias of {@link util.isSet}.\n * @function\n * @param {Object} obj Plain object or message instance\n * @param {string} prop Property name\n * @returns {boolean} `true` if considered to be present, otherwise `false`\n */\nutil.isset =\n\n/**\n * Checks if a property on a message is considered to be present.\n * @param {Object} obj Plain object or message instance\n * @param {string} prop Property name\n * @returns {boolean} `true` if considered to be present, otherwise `false`\n */\nutil.isSet = function isSet(obj, prop) {\n    var value = obj[prop];\n    if (value != null && obj.hasOwnProperty(prop)) // eslint-disable-line eqeqeq, no-prototype-builtins\n        return typeof value !== \"object\" || (Array.isArray(value) ? value.length : Object.keys(value).length) > 0;\n    return false;\n};\n\n/**\n * Any compatible Buffer instance.\n * This is a minimal stand-alone definition of a Buffer instance. The actual type is that exported by node's typings.\n * @interface Buffer\n * @extends Uint8Array\n */\n\n/**\n * Node's Buffer class if available.\n * @type {Constructor<Buffer>}\n */\nutil.Buffer = (function() {\n    try {\n        var Buffer = util.inquire(\"buffer\").Buffer;\n        // refuse to use non-node buffers if not explicitly assigned (perf reasons):\n        return Buffer.prototype.utf8Write ? Buffer : /* istanbul ignore next */ null;\n    } catch (e) {\n        /* istanbul ignore next */\n        return null;\n    }\n})();\n\n// Internal alias of or polyfull for Buffer.from.\nutil._Buffer_from = null;\n\n// Internal alias of or polyfill for Buffer.allocUnsafe.\nutil._Buffer_allocUnsafe = null;\n\n/**\n * Creates a new buffer of whatever type supported by the environment.\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\n * @returns {Uint8Array|Buffer} Buffer\n */\nutil.newBuffer = function newBuffer(sizeOrArray) {\n    /* istanbul ignore next */\n    return typeof sizeOrArray === \"number\"\n        ? util.Buffer\n            ? util._Buffer_allocUnsafe(sizeOrArray)\n            : new util.Array(sizeOrArray)\n        : util.Buffer\n            ? util._Buffer_from(sizeOrArray)\n            : typeof Uint8Array === \"undefined\"\n                ? sizeOrArray\n                : new Uint8Array(sizeOrArray);\n};\n\n/**\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\n * @type {Constructor<Uint8Array>}\n */\nutil.Array = typeof Uint8Array !== \"undefined\" ? Uint8Array /* istanbul ignore next */ : Array;\n\n/*\n * Long.js's Long class if available and $ENABLE_LONG is set. This lets us leave it on\n * for this package's tests but have it be off in actual usage-reporting-protobuf use.\n * (We leave it on for some mode where there is no `process` that is used by tests.)\n */\nutil.Long = (typeof process === 'undefined' || process.env.ENABLE_LONG) ? (/* istanbul ignore next */ util.global.dcodeIO && /* istanbul ignore next */ util.global.dcodeIO.Long\n         || /* istanbul ignore next */ util.global.Long\n         || util.inquire(\"long\")) : undefined;\n\n/**\n * Regular expression used to verify 2 bit (`bool`) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key2Re = /^true|false|0|1$/;\n\n/**\n * Regular expression used to verify 32 bit (`int32` etc.) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key32Re = /^-?(?:0|[1-9][0-9]*)$/;\n\n/**\n * Regular expression used to verify 64 bit (`int64` etc.) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key64Re = /^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9][0-9]*))$/;\n\n/*\n * Converts a number or long to an 8 characters long hash string.\n * @param {Long|number} value Value to convert\n * @returns {string} Hash\n */\nutil.longToHash = function longToHash(value) {\n    return value\n        ? util.LongBits.from(value).toHash()\n        : util.LongBits.zeroHash;\n};\n\n/*\n * Converts an 8 characters long hash string to a long or number.\n * @param {string} hash Hash\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {Long|number} Original value\n */\nutil.longFromHash = function longFromHash(hash, unsigned) {\n    var bits = util.LongBits.fromHash(hash);\n    if (util.Long)\n        return util.Long.fromBits(bits.lo, bits.hi, unsigned);\n    return bits.toNumber(Boolean(unsigned));\n};\n\n/**\n * Merges the properties of the source object into the destination object.\n * @memberof util\n * @param {Object.<string,*>} dst Destination object\n * @param {Object.<string,*>} src Source object\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\n * @returns {Object.<string,*>} Destination object\n */\nfunction merge(dst, src, ifNotSet) { // used by converters\n    for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\n        if (dst[keys[i]] === undefined || !ifNotSet)\n            dst[keys[i]] = src[keys[i]];\n    return dst;\n}\n\nutil.merge = merge;\n\n/**\n * Converts the first character of a string to lower case.\n * @param {string} str String to convert\n * @returns {string} Converted string\n */\nutil.lcFirst = function lcFirst(str) {\n    return str.charAt(0).toLowerCase() + str.substring(1);\n};\n\n/**\n * Creates a custom error constructor.\n * @memberof util\n * @param {string} name Error name\n * @returns {Constructor<Error>} Custom error constructor\n */\nfunction newError(name) {\n\n    function CustomError(message, properties) {\n\n        if (!(this instanceof CustomError))\n            return new CustomError(message, properties);\n\n        // Error.call(this, message);\n        // ^ just returns a new error instance because the ctor can be called as a function\n\n        Object.defineProperty(this, \"message\", { get: function() { return message; } });\n\n        /* istanbul ignore next */\n        if (Error.captureStackTrace) // node\n            Error.captureStackTrace(this, CustomError);\n        else\n            Object.defineProperty(this, \"stack\", { value: (new Error()).stack || \"\" });\n\n        if (properties)\n            merge(this, properties);\n    }\n\n    (CustomError.prototype = Object.create(Error.prototype)).constructor = CustomError;\n\n    Object.defineProperty(CustomError.prototype, \"name\", { get: function() { return name; } });\n\n    CustomError.prototype.toString = function toString() {\n        return this.name + \": \" + this.message;\n    };\n\n    return CustomError;\n}\n\nutil.newError = newError;\n\n/**\n * Constructs a new protocol error.\n * @classdesc Error subclass indicating a protocol specifc error.\n * @memberof util\n * @extends Error\n * @template T extends Message<T>\n * @constructor\n * @param {string} message Error message\n * @param {Object.<string,*>} [properties] Additional properties\n * @example\n * try {\n *     MyMessage.decode(someBuffer); // throws if required fields are missing\n * } catch (e) {\n *     if (e instanceof ProtocolError && e.instance)\n *         console.log(\"decoded so far: \" + JSON.stringify(e.instance));\n * }\n */\nutil.ProtocolError = newError(\"ProtocolError\");\n\n/**\n * So far decoded message instance.\n * @name util.ProtocolError#instance\n * @type {Message<T>}\n */\n\n/**\n * A OneOf getter as returned by {@link util.oneOfGetter}.\n * @typedef OneOfGetter\n * @type {function}\n * @returns {string|undefined} Set field name, if any\n */\n\n/**\n * Builds a getter for a oneof's present field name.\n * @param {string[]} fieldNames Field names\n * @returns {OneOfGetter} Unbound getter\n */\nutil.oneOfGetter = function getOneOf(fieldNames) {\n    var fieldMap = {};\n    for (var i = 0; i < fieldNames.length; ++i)\n        fieldMap[fieldNames[i]] = 1;\n\n    /**\n     * @returns {string|undefined} Set field name, if any\n     * @this Object\n     * @ignore\n     */\n    return function() { // eslint-disable-line consistent-return\n        for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\n            if (fieldMap[keys[i]] === 1 && this[keys[i]] !== undefined && this[keys[i]] !== null)\n                return keys[i];\n    };\n};\n\n/**\n * A OneOf setter as returned by {@link util.oneOfSetter}.\n * @typedef OneOfSetter\n * @type {function}\n * @param {string|undefined} value Field name\n * @returns {undefined}\n */\n\n/**\n * Builds a setter for a oneof's present field name.\n * @param {string[]} fieldNames Field names\n * @returns {OneOfSetter} Unbound setter\n */\nutil.oneOfSetter = function setOneOf(fieldNames) {\n\n    /**\n     * @param {string} name Field name\n     * @returns {undefined}\n     * @this Object\n     * @ignore\n     */\n    return function(name) {\n        for (var i = 0; i < fieldNames.length; ++i)\n            if (fieldNames[i] !== name)\n                delete this[fieldNames[i]];\n    };\n};\n\n/**\n * Default conversion options used for {@link Message#toJSON} implementations.\n *\n * These options are close to proto3's JSON mapping with the exception that internal types like Any are handled just like messages. More precisely:\n *\n * - Longs become strings\n * - Enums become string keys\n * - Bytes become base64 encoded strings\n * - (Sub-)Messages become plain objects\n * - Maps become plain objects with all string keys\n * - Repeated fields become arrays\n * - NaN and Infinity for float and double fields become strings\n *\n * @type {IConversionOptions}\n * @see https://developers.google.com/protocol-buffers/docs/proto3?hl=en#json\n */\nutil.toJSONOptions = {\n    longs: String,\n    enums: String,\n    bytes: String,\n    json: true\n};\n\n// Sets up buffer utility according to the environment (called in index-minimal)\nutil._configure = function() {\n    var Buffer = util.Buffer;\n    /* istanbul ignore if */\n    if (!Buffer) {\n        util._Buffer_from = util._Buffer_allocUnsafe = null;\n        return;\n    }\n    // because node 4.x buffers are incompatible & immutable\n    // see: https://github.com/dcodeIO/protobuf.js/pull/665\n    util._Buffer_from = Buffer.from !== Uint8Array.from && Buffer.from ||\n        /* istanbul ignore next */\n        function Buffer_from(value, encoding) {\n            return new Buffer(value, encoding);\n        };\n    util._Buffer_allocUnsafe = Buffer.allocUnsafe ||\n        /* istanbul ignore next */\n        function Buffer_allocUnsafe(size) {\n            return new Buffer(size);\n        };\n};\n", "\"use strict\";\nmodule.exports = Writer;\n\nvar util      = require(\"./util/minimal\");\n\nvar BufferWriter; // cyclic\n\nvar LongBits  = util.LongBits,\n    base64    = util.base64,\n    utf8      = util.utf8;\n\n/**\n * Constructs a new writer operation instance.\n * @classdesc Scheduled writer operation.\n * @constructor\n * @param {function(*, Uint8Array, number)} fn Function to call\n * @param {number} len Value byte length\n * @param {*} val Value to write\n * @ignore\n */\nfunction Op(fn, len, val) {\n\n    /**\n     * Function to call.\n     * @type {function(Uint8Array, number, *)}\n     */\n    this.fn = fn;\n\n    /**\n     * Value byte length.\n     * @type {number}\n     */\n    this.len = len;\n\n    /**\n     * Next operation.\n     * @type {Writer.Op|undefined}\n     */\n    this.next = undefined;\n\n    /**\n     * Value to write.\n     * @type {*}\n     */\n    this.val = val; // type varies\n}\n\n/* istanbul ignore next */\nfunction noop() {} // eslint-disable-line no-empty-function\n\n/**\n * Constructs a new writer state instance.\n * @classdesc Copied writer state.\n * @memberof Writer\n * @constructor\n * @param {Writer} writer Writer to copy state from\n * @ignore\n */\nfunction State(writer) {\n\n    /**\n     * Current head.\n     * @type {Writer.Op}\n     */\n    this.head = writer.head;\n\n    /**\n     * Current tail.\n     * @type {Writer.Op}\n     */\n    this.tail = writer.tail;\n\n    /**\n     * Current buffer length.\n     * @type {number}\n     */\n    this.len = writer.len;\n\n    /**\n     * Next state.\n     * @type {State|null}\n     */\n    this.next = writer.states;\n}\n\n/**\n * Constructs a new writer instance.\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\n * @constructor\n */\nfunction Writer() {\n\n    /**\n     * Current length.\n     * @type {number}\n     */\n    this.len = 0;\n\n    /**\n     * Operations head.\n     * @type {Object}\n     */\n    this.head = new Op(noop, 0, 0);\n\n    /**\n     * Operations tail\n     * @type {Object}\n     */\n    this.tail = this.head;\n\n    /**\n     * Linked forked states.\n     * @type {Object|null}\n     */\n    this.states = null;\n\n    // When a value is written, the writer calculates its byte length and puts it into a linked\n    // list of operations to perform when finish() is called. This both allows us to allocate\n    // buffers of the exact required size and reduces the amount of work we have to do compared\n    // to first calculating over objects and then encoding over objects. In our case, the encoding\n    // part is just a linked list walk calling operations with already prepared values.\n}\n\n/**\n * Creates a new writer.\n * @function\n * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer}\n */\nWriter.create = util.Buffer\n    ? function create_buffer_setup() {\n        return (Writer.create = function create_buffer() {\n            return new BufferWriter();\n        })();\n    }\n    /* istanbul ignore next */\n    : function create_array() {\n        return new Writer();\n    };\n\n/**\n * Allocates a buffer of the specified size.\n * @param {number} size Buffer size\n * @returns {Uint8Array} Buffer\n */\nWriter.alloc = function alloc(size) {\n    return new util.Array(size);\n};\n\n// Use Uint8Array buffer pool in the browser, just like node does with buffers\n/* istanbul ignore else */\nif (util.Array !== Array)\n    Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray);\n\n/**\n * Pushes a new operation to the queue.\n * @param {function(Uint8Array, number, *)} fn Function to call\n * @param {number} len Value byte length\n * @param {number} val Value to write\n * @returns {Writer} `this`\n * @private\n */\nWriter.prototype._push = function push(fn, len, val) {\n    this.tail = this.tail.next = new Op(fn, len, val);\n    this.len += len;\n    return this;\n};\n\nfunction writeByte(val, buf, pos) {\n    buf[pos] = val & 255;\n}\n\nfunction writeVarint32(val, buf, pos) {\n    while (val > 127) {\n        buf[pos++] = val & 127 | 128;\n        val >>>= 7;\n    }\n    buf[pos] = val;\n}\n\n/**\n * Constructs a new varint writer operation instance.\n * @classdesc Scheduled varint writer operation.\n * @extends Op\n * @constructor\n * @param {number} len Value byte length\n * @param {number} val Value to write\n * @ignore\n */\nfunction VarintOp(len, val) {\n    this.len = len;\n    this.next = undefined;\n    this.val = val;\n}\n\nVarintOp.prototype = Object.create(Op.prototype);\nVarintOp.prototype.fn = writeVarint32;\n\n/**\n * Writes an unsigned 32 bit value as a varint.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.uint32 = function write_uint32(value) {\n    // here, the call to this.push has been inlined and a varint specific Op subclass is used.\n    // uint32 is by far the most frequently used operation and benefits significantly from this.\n    this.len += (this.tail = this.tail.next = new VarintOp(\n        (value = value >>> 0)\n                < 128       ? 1\n        : value < 16384     ? 2\n        : value < 2097152   ? 3\n        : value < 268435456 ? 4\n        :                     5,\n    value)).len;\n    return this;\n};\n\n/**\n * Writes a signed 32 bit value as a varint.\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.int32 = function write_int32(value) {\n    return value < 0\n        ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\n        : this.uint32(value);\n};\n\n/**\n * Writes a 32 bit value as a varint, zig-zag encoded.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.sint32 = function write_sint32(value) {\n    return this.uint32((value << 1 ^ value >> 31) >>> 0);\n};\n\nfunction writeVarint64(val, buf, pos) {\n    while (val.hi) {\n        buf[pos++] = val.lo & 127 | 128;\n        val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\n        val.hi >>>= 7;\n    }\n    while (val.lo > 127) {\n        buf[pos++] = val.lo & 127 | 128;\n        val.lo = val.lo >>> 7;\n    }\n    buf[pos++] = val.lo;\n}\n\n/**\n * Writes an unsigned 64 bit value as a varint.\n * @param {number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.uint64 = function write_uint64(value) {\n    var bits = LongBits.from(value);\n    return this._push(writeVarint64, bits.length(), bits);\n};\n\n/**\n * Writes a signed 64 bit value as a varint.\n * @function\n * @param {number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.int64 = Writer.prototype.uint64;\n\n/**\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\n * @param {number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.sint64 = function write_sint64(value) {\n    var bits = LongBits.from(value).zzEncode();\n    return this._push(writeVarint64, bits.length(), bits);\n};\n\n/**\n * Writes a boolish value as a varint.\n * @param {boolean} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.bool = function write_bool(value) {\n    return this._push(writeByte, 1, value ? 1 : 0);\n};\n\nfunction writeFixed32(val, buf, pos) {\n    buf[pos    ] =  val         & 255;\n    buf[pos + 1] =  val >>> 8   & 255;\n    buf[pos + 2] =  val >>> 16  & 255;\n    buf[pos + 3] =  val >>> 24;\n}\n\n/**\n * Writes an unsigned 32 bit value as fixed 32 bits.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.fixed32 = function write_fixed32(value) {\n    return this._push(writeFixed32, 4, value >>> 0);\n};\n\n/**\n * Writes a signed 32 bit value as fixed 32 bits.\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.sfixed32 = Writer.prototype.fixed32;\n\n/**\n * Writes an unsigned 64 bit value as fixed 64 bits.\n * @param {number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.fixed64 = function write_fixed64(value) {\n    var bits = LongBits.from(value);\n    return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi);\n};\n\n/**\n * Writes a signed 64 bit value as fixed 64 bits.\n * @function\n * @param {number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.sfixed64 = Writer.prototype.fixed64;\n\n/**\n * Writes a float (32 bit).\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.float = function write_float(value) {\n    return this._push(util.float.writeFloatLE, 4, value);\n};\n\n/**\n * Writes a double (64 bit float).\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.double = function write_double(value) {\n    return this._push(util.float.writeDoubleLE, 8, value);\n};\n\nvar writeBytes = util.Array.prototype.set\n    ? function writeBytes_set(val, buf, pos) {\n        buf.set(val, pos); // also works for plain array values\n    }\n    /* istanbul ignore next */\n    : function writeBytes_for(val, buf, pos) {\n        for (var i = 0; i < val.length; ++i)\n            buf[pos + i] = val[i];\n    };\n\n/**\n * Writes a sequence of bytes.\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\n * @returns {Writer} `this`\n */\nWriter.prototype.bytes = function write_bytes(value) {\n    var len = value.length >>> 0;\n    if (!len)\n        return this._push(writeByte, 1, 0);\n    if (util.isString(value)) {\n        var buf = Writer.alloc(len = base64.length(value));\n        base64.decode(value, buf, 0);\n        value = buf;\n    }\n    return this.uint32(len)._push(writeBytes, len, value);\n};\n\n/**\n * Writes a string.\n * @param {string} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.string = function write_string(value) {\n    var len = utf8.length(value);\n    return len\n        ? this.uint32(len)._push(utf8.write, len, value)\n        : this._push(writeByte, 1, 0);\n};\n\n/**\n * Forks this writer's state by pushing it to a stack.\n * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state.\n * @returns {Writer} `this`\n */\nWriter.prototype.fork = function fork() {\n    this.states = new State(this);\n    this.head = this.tail = new Op(noop, 0, 0);\n    this.len = 0;\n    return this;\n};\n\n/**\n * Resets this instance to the last state.\n * @returns {Writer} `this`\n */\nWriter.prototype.reset = function reset() {\n    if (this.states) {\n        this.head   = this.states.head;\n        this.tail   = this.states.tail;\n        this.len    = this.states.len;\n        this.states = this.states.next;\n    } else {\n        this.head = this.tail = new Op(noop, 0, 0);\n        this.len  = 0;\n    }\n    return this;\n};\n\n/**\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\n * @returns {Writer} `this`\n */\nWriter.prototype.ldelim = function ldelim() {\n    var head = this.head,\n        tail = this.tail,\n        len  = this.len;\n    this.reset().uint32(len);\n    if (len) {\n        this.tail.next = head.next; // skip noop\n        this.tail = tail;\n        this.len += len;\n    }\n    return this;\n};\n\n/**\n * Finishes the write operation.\n * @returns {Uint8Array} Finished buffer\n */\nWriter.prototype.finish = function finish() {\n    var head = this.head.next, // skip noop\n        buf  = this.constructor.alloc(this.len),\n        pos  = 0;\n    while (head) {\n        head.fn(head.val, buf, pos);\n        pos += head.len;\n        head = head.next;\n    }\n    // this.head = this.tail = null;\n    return buf;\n};\n\nWriter._configure = function(BufferWriter_) {\n    BufferWriter = BufferWriter_;\n};\n", "\"use strict\";\nmodule.exports = BufferWriter;\n\n// extends Writer\nvar Writer = require(\"./writer\");\n(BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter;\n\nvar util = require(\"./util/minimal\");\n\nvar Buffer = util.Buffer;\n\n/**\n * Constructs a new buffer writer instance.\n * @classdesc Wire format writer using node buffers.\n * @extends Writer\n * @constructor\n */\nfunction BufferWriter() {\n    Writer.call(this);\n}\n\n/**\n * Allocates a buffer of the specified size.\n * @param {number} size Buffer size\n * @returns {Buffer} Buffer\n */\nBufferWriter.alloc = function alloc_buffer(size) {\n    return (BufferWriter.alloc = util._Buffer_allocUnsafe)(size);\n};\n\nvar writeBytesBuffer = Buffer && Buffer.prototype instanceof Uint8Array && Buffer.prototype.set.name === \"set\"\n    ? function writeBytesBuffer_set(val, buf, pos) {\n        buf.set(val, pos); // faster than copy (requires node >= 4 where Buffers extend Uint8Array and set is properly inherited)\n                           // also works for plain array values\n    }\n    /* istanbul ignore next */\n    : function writeBytesBuffer_copy(val, buf, pos) {\n        if (val.copy) // Buffer values\n            val.copy(buf, pos, 0, val.length);\n        else for (var i = 0; i < val.length;) // plain array values\n            buf[pos++] = val[i++];\n    };\n\n/**\n * @override\n */\nBufferWriter.prototype.bytes = function write_bytes_buffer(value) {\n    if (util.isString(value))\n        value = util._Buffer_from(value, \"base64\");\n    var len = value.length >>> 0;\n    this.uint32(len);\n    if (len)\n        this._push(writeBytesBuffer, len, value);\n    return this;\n};\n\nfunction writeStringBuffer(val, buf, pos) {\n    if (val.length < 40) // plain js is faster for short strings (probably due to redundant assertions)\n        util.utf8.write(val, buf, pos);\n    else\n        buf.utf8Write(val, pos);\n}\n\n/**\n * @override\n */\nBufferWriter.prototype.string = function write_string_buffer(value) {\n    var len = Buffer.byteLength(value);\n    this.uint32(len);\n    if (len)\n        this._push(writeStringBuffer, len, value);\n    return this;\n};\n\n\n/**\n * Finishes the write operation.\n * @name BufferWriter#finish\n * @function\n * @returns {Buffer} Finished buffer\n */\n", "\"use strict\";\nmodule.exports = Reader;\n\nvar util      = require(\"./util/minimal\");\n\nvar BufferReader; // cyclic\n\nvar LongBits  = util.LongBits,\n    utf8      = util.utf8;\n\n/* istanbul ignore next */\nfunction indexOutOfRange(reader, writeLength) {\n    return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\n}\n\n/**\n * Constructs a new reader instance using the specified buffer.\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\n * @constructor\n * @param {Uint8Array} buffer Buffer to read from\n */\nfunction Reader(buffer) {\n\n    /**\n     * Read buffer.\n     * @type {Uint8Array}\n     */\n    this.buf = buffer;\n\n    /**\n     * Read buffer position.\n     * @type {number}\n     */\n    this.pos = 0;\n\n    /**\n     * Read buffer length.\n     * @type {number}\n     */\n    this.len = buffer.length;\n}\n\nvar create_array = typeof Uint8Array !== \"undefined\"\n    ? function create_typed_array(buffer) {\n        if (buffer instanceof Uint8Array || Array.isArray(buffer))\n            return new Reader(buffer);\n        throw Error(\"illegal buffer\");\n    }\n    /* istanbul ignore next */\n    : function create_array(buffer) {\n        if (Array.isArray(buffer))\n            return new Reader(buffer);\n        throw Error(\"illegal buffer\");\n    };\n\n/**\n * Creates a new reader using the specified buffer.\n * @function\n * @param {Uint8Array|Buffer} buffer Buffer to read from\n * @returns {Reader|BufferReader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\n * @throws {Error} If `buffer` is not a valid buffer\n */\nReader.create = util.Buffer\n    ? function create_buffer_setup(buffer) {\n        return (Reader.create = function create_buffer(buffer) {\n            return util.Buffer.isBuffer(buffer)\n                ? new BufferReader(buffer)\n                /* istanbul ignore next */\n                : create_array(buffer);\n        })(buffer);\n    }\n    /* istanbul ignore next */\n    : create_array;\n\nReader.prototype._slice = util.Array.prototype.subarray || /* istanbul ignore next */ util.Array.prototype.slice;\n\n/**\n * Reads a varint as an unsigned 32 bit value.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.uint32 = (function read_uint32_setup() {\n    var value = 4294967295; // optimizer type-hint, tends to deopt otherwise (?!)\n    return function read_uint32() {\n        value = (         this.buf[this.pos] & 127       ) >>> 0; if (this.buf[this.pos++] < 128) return value;\n        value = (value | (this.buf[this.pos] & 127) <<  7) >>> 0; if (this.buf[this.pos++] < 128) return value;\n        value = (value | (this.buf[this.pos] & 127) << 14) >>> 0; if (this.buf[this.pos++] < 128) return value;\n        value = (value | (this.buf[this.pos] & 127) << 21) >>> 0; if (this.buf[this.pos++] < 128) return value;\n        value = (value | (this.buf[this.pos] &  15) << 28) >>> 0; if (this.buf[this.pos++] < 128) return value;\n\n        /* istanbul ignore if */\n        if ((this.pos += 5) > this.len) {\n            this.pos = this.len;\n            throw indexOutOfRange(this, 10);\n        }\n        return value;\n    };\n})();\n\n/**\n * Reads a varint as a signed 32 bit value.\n * @returns {number} Value read\n */\nReader.prototype.int32 = function read_int32() {\n    return this.uint32() | 0;\n};\n\n/**\n * Reads a zig-zag encoded varint as a signed 32 bit value.\n * @returns {number} Value read\n */\nReader.prototype.sint32 = function read_sint32() {\n    var value = this.uint32();\n    return value >>> 1 ^ -(value & 1) | 0;\n};\n\n/* eslint-disable no-invalid-this */\n\nfunction readLongVarint() {\n    // tends to deopt with local vars for octet etc.\n    var bits = new LongBits(0, 0);\n    var i = 0;\n    if (this.len - this.pos > 4) { // fast route (lo)\n        for (; i < 4; ++i) {\n            // 1st..4th\n            bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n            if (this.buf[this.pos++] < 128)\n                return bits;\n        }\n        // 5th\n        bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0;\n        bits.hi = (bits.hi | (this.buf[this.pos] & 127) >>  4) >>> 0;\n        if (this.buf[this.pos++] < 128)\n            return bits;\n        i = 0;\n    } else {\n        for (; i < 3; ++i) {\n            /* istanbul ignore if */\n            if (this.pos >= this.len)\n                throw indexOutOfRange(this);\n            // 1st..3th\n            bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n            if (this.buf[this.pos++] < 128)\n                return bits;\n        }\n        // 4th\n        bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0;\n        return bits;\n    }\n    if (this.len - this.pos > 4) { // fast route (hi)\n        for (; i < 5; ++i) {\n            // 6th..10th\n            bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n            if (this.buf[this.pos++] < 128)\n                return bits;\n        }\n    } else {\n        for (; i < 5; ++i) {\n            /* istanbul ignore if */\n            if (this.pos >= this.len)\n                throw indexOutOfRange(this);\n            // 6th..10th\n            bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n            if (this.buf[this.pos++] < 128)\n                return bits;\n        }\n    }\n    /* istanbul ignore next */\n    throw Error(\"invalid varint encoding\");\n}\n\n/* eslint-enable no-invalid-this */\n\n/*\n * Reads a varint as a signed 64 bit value.\n * @name Reader#int64\n * @function\n * @returns {Long} Value read\n */\n\n/*\n * Reads a varint as an unsigned 64 bit value.\n * @name Reader#uint64\n * @function\n * @returns {Long} Value read\n */\n\n/*\n * Reads a zig-zag encoded varint as a signed 64 bit value.\n * @name Reader#sint64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a varint as a boolean.\n * @returns {boolean} Value read\n */\nReader.prototype.bool = function read_bool() {\n    return this.uint32() !== 0;\n};\n\nfunction readFixed32_end(buf, end) { // note that this uses `end`, not `pos`\n    return (buf[end - 4]\n          | buf[end - 3] << 8\n          | buf[end - 2] << 16\n          | buf[end - 1] << 24) >>> 0;\n}\n\n/**\n * Reads fixed 32 bits as an unsigned 32 bit integer.\n * @returns {number} Value read\n */\nReader.prototype.fixed32 = function read_fixed32() {\n\n    /* istanbul ignore if */\n    if (this.pos + 4 > this.len)\n        throw indexOutOfRange(this, 4);\n\n    return readFixed32_end(this.buf, this.pos += 4);\n};\n\n/**\n * Reads fixed 32 bits as a signed 32 bit integer.\n * @returns {number} Value read\n */\nReader.prototype.sfixed32 = function read_sfixed32() {\n\n    /* istanbul ignore if */\n    if (this.pos + 4 > this.len)\n        throw indexOutOfRange(this, 4);\n\n    return readFixed32_end(this.buf, this.pos += 4) | 0;\n};\n\n/* eslint-disable no-invalid-this */\n\nfunction readFixed64(/* this: Reader */) {\n\n    /* istanbul ignore if */\n    if (this.pos + 8 > this.len)\n        throw indexOutOfRange(this, 8);\n\n    return new LongBits(readFixed32_end(this.buf, this.pos += 4), readFixed32_end(this.buf, this.pos += 4));\n}\n\n/* eslint-enable no-invalid-this */\n\n/*\n * Reads fixed 64 bits.\n * @name Reader#fixed64\n * @function\n * @returns {Long} Value read\n */\n\n/*\n * Reads zig-zag encoded fixed 64 bits.\n * @name Reader#sfixed64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a float (32 bit) as a number.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.float = function read_float() {\n\n    /* istanbul ignore if */\n    if (this.pos + 4 > this.len)\n        throw indexOutOfRange(this, 4);\n\n    var value = util.float.readFloatLE(this.buf, this.pos);\n    this.pos += 4;\n    return value;\n};\n\n/**\n * Reads a double (64 bit float) as a number.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.double = function read_double() {\n\n    /* istanbul ignore if */\n    if (this.pos + 8 > this.len)\n        throw indexOutOfRange(this, 4);\n\n    var value = util.float.readDoubleLE(this.buf, this.pos);\n    this.pos += 8;\n    return value;\n};\n\n/**\n * Reads a sequence of bytes preceeded by its length as a varint.\n * @returns {Uint8Array} Value read\n */\nReader.prototype.bytes = function read_bytes() {\n    var length = this.uint32(),\n        start  = this.pos,\n        end    = this.pos + length;\n\n    /* istanbul ignore if */\n    if (end > this.len)\n        throw indexOutOfRange(this, length);\n\n    this.pos += length;\n    if (Array.isArray(this.buf)) // plain array\n        return this.buf.slice(start, end);\n    return start === end // fix for IE 10/Win8 and others' subarray returning array of size 1\n        ? new this.buf.constructor(0)\n        : this._slice.call(this.buf, start, end);\n};\n\n/**\n * Reads a string preceeded by its byte length as a varint.\n * @returns {string} Value read\n */\nReader.prototype.string = function read_string() {\n    var bytes = this.bytes();\n    return utf8.read(bytes, 0, bytes.length);\n};\n\n/**\n * Skips the specified number of bytes if specified, otherwise skips a varint.\n * @param {number} [length] Length if known, otherwise a varint is assumed\n * @returns {Reader} `this`\n */\nReader.prototype.skip = function skip(length) {\n    if (typeof length === \"number\") {\n        /* istanbul ignore if */\n        if (this.pos + length > this.len)\n            throw indexOutOfRange(this, length);\n        this.pos += length;\n    } else {\n        do {\n            /* istanbul ignore if */\n            if (this.pos >= this.len)\n                throw indexOutOfRange(this);\n        } while (this.buf[this.pos++] & 128);\n    }\n    return this;\n};\n\n/**\n * Skips the next element of the specified wire type.\n * @param {number} wireType Wire type received\n * @returns {Reader} `this`\n */\nReader.prototype.skipType = function(wireType) {\n    switch (wireType) {\n        case 0:\n            this.skip();\n            break;\n        case 1:\n            this.skip(8);\n            break;\n        case 2:\n            this.skip(this.uint32());\n            break;\n        case 3:\n            while ((wireType = this.uint32() & 7) !== 4) {\n                this.skipType(wireType);\n            }\n            break;\n        case 5:\n            this.skip(4);\n            break;\n\n        /* istanbul ignore next */\n        default:\n            throw Error(\"invalid wire type \" + wireType + \" at offset \" + this.pos);\n    }\n    return this;\n};\n\nReader._configure = function(BufferReader_) {\n    BufferReader = BufferReader_;\n\n    var fn = util.Long ? \"toLong\" : /* istanbul ignore next */ \"toNumber\";\n    util.merge(Reader.prototype, {\n\n        int64: function read_int64() {\n            return readLongVarint.call(this)[fn](false);\n        },\n\n        uint64: function read_uint64() {\n            return readLongVarint.call(this)[fn](true);\n        },\n\n        sint64: function read_sint64() {\n            return readLongVarint.call(this).zzDecode()[fn](false);\n        },\n\n        fixed64: function read_fixed64() {\n            return readFixed64.call(this)[fn](true);\n        },\n\n        sfixed64: function read_sfixed64() {\n            return readFixed64.call(this)[fn](false);\n        }\n\n    });\n};\n", "\"use strict\";\nmodule.exports = BufferReader;\n\n// extends Reader\nvar Reader = require(\"./reader\");\n(BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new buffer reader instance.\n * @classdesc Wire format reader using node buffers.\n * @extends Reader\n * @constructor\n * @param {Buffer} buffer Buffer to read from\n */\nfunction BufferReader(buffer) {\n    Reader.call(this, buffer);\n\n    /**\n     * Read buffer.\n     * @name BufferReader#buf\n     * @type {Buffer}\n     */\n}\n\n/* istanbul ignore else */\nif (util.Buffer)\n    BufferReader.prototype._slice = util.Buffer.prototype.slice;\n\n/**\n * @override\n */\nBufferReader.prototype.string = function read_string_buffer() {\n    var len = this.uint32(); // modifies pos\n    return this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len));\n};\n\n/**\n * Reads a sequence of bytes preceeded by its length as a varint.\n * @name BufferReader#bytes\n * @function\n * @returns {Buffer} Value read\n */\n", "\"use strict\";\nmodule.exports = Service;\n\nvar util = require(\"../util/minimal\");\n\n// Extends EventEmitter\n(Service.prototype = Object.create(util.EventEmitter.prototype)).constructor = Service;\n\n/**\n * A service method callback as used by {@link rpc.ServiceMethod|ServiceMethod}.\n *\n * Differs from {@link RPCImplCallback} in that it is an actual callback of a service method which may not return `response = null`.\n * @typedef rpc.ServiceMethodCallback\n * @template TRes extends Message<TRes>\n * @type {function}\n * @param {Error|null} error Error, if any\n * @param {TRes} [response] Response message\n * @returns {undefined}\n */\n\n/**\n * A service method part of a {@link rpc.Service} as created by {@link Service.create}.\n * @typedef rpc.ServiceMethod\n * @template TReq extends Message<TReq>\n * @template TRes extends Message<TRes>\n * @type {function}\n * @param {TReq|Properties<TReq>} request Request message or plain object\n * @param {rpc.ServiceMethodCallback<TRes>} [callback] Node-style callback called with the error, if any, and the response message\n * @returns {Promise<Message<TRes>>} Promise if `callback` has been omitted, otherwise `undefined`\n */\n\n/**\n * Constructs a new RPC service instance.\n * @classdesc An RPC service as returned by {@link Service#create}.\n * @exports rpc.Service\n * @extends util.EventEmitter\n * @constructor\n * @param {RPCImpl} rpcImpl RPC implementation\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\n */\nfunction Service(rpcImpl, requestDelimited, responseDelimited) {\n\n    if (typeof rpcImpl !== \"function\")\n        throw TypeError(\"rpcImpl must be a function\");\n\n    util.EventEmitter.call(this);\n\n    /**\n     * RPC implementation. Becomes `null` once the service is ended.\n     * @type {RPCImpl|null}\n     */\n    this.rpcImpl = rpcImpl;\n\n    /**\n     * Whether requests are length-delimited.\n     * @type {boolean}\n     */\n    this.requestDelimited = Boolean(requestDelimited);\n\n    /**\n     * Whether responses are length-delimited.\n     * @type {boolean}\n     */\n    this.responseDelimited = Boolean(responseDelimited);\n}\n\n/**\n * Calls a service method through {@link rpc.Service#rpcImpl|rpcImpl}.\n * @param {Method|rpc.ServiceMethod<TReq,TRes>} method Reflected or static method\n * @param {Constructor<TReq>} requestCtor Request constructor\n * @param {Constructor<TRes>} responseCtor Response constructor\n * @param {TReq|Properties<TReq>} request Request message or plain object\n * @param {rpc.ServiceMethodCallback<TRes>} callback Service callback\n * @returns {undefined}\n * @template TReq extends Message<TReq>\n * @template TRes extends Message<TRes>\n */\nService.prototype.rpcCall = function rpcCall(method, requestCtor, responseCtor, request, callback) {\n\n    if (!request)\n        throw TypeError(\"request must be specified\");\n\n    var self = this;\n    if (!callback)\n        return util.asPromise(rpcCall, self, method, requestCtor, responseCtor, request);\n\n    if (!self.rpcImpl) {\n        setTimeout(function() { callback(Error(\"already ended\")); }, 0);\n        return undefined;\n    }\n\n    try {\n        return self.rpcImpl(\n            method,\n            requestCtor[self.requestDelimited ? \"encodeDelimited\" : \"encode\"](request).finish(),\n            function rpcCallback(err, response) {\n\n                if (err) {\n                    self.emit(\"error\", err, method);\n                    return callback(err);\n                }\n\n                if (response === null) {\n                    self.end(/* endedByRPC */ true);\n                    return undefined;\n                }\n\n                if (!(response instanceof responseCtor)) {\n                    try {\n                        response = responseCtor[self.responseDelimited ? \"decodeDelimited\" : \"decode\"](response);\n                    } catch (err) {\n                        self.emit(\"error\", err, method);\n                        return callback(err);\n                    }\n                }\n\n                self.emit(\"data\", response, method);\n                return callback(null, response);\n            }\n        );\n    } catch (err) {\n        self.emit(\"error\", err, method);\n        setTimeout(function() { callback(err); }, 0);\n        return undefined;\n    }\n};\n\n/**\n * Ends this service and emits the `end` event.\n * @param {boolean} [endedByRPC=false] Whether the service has been ended by the RPC implementation.\n * @returns {rpc.Service} `this`\n */\nService.prototype.end = function end(endedByRPC) {\n    if (this.rpcImpl) {\n        if (!endedByRPC) // signal end to rpcImpl\n            this.rpcImpl(null, null, null);\n        this.rpcImpl = null;\n        this.emit(\"end\").off();\n    }\n    return this;\n};\n", "\"use strict\";\n\n/**\n * Streaming RPC helpers.\n * @namespace\n */\nvar rpc = exports;\n\n/**\n * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.\n * @typedef RPCImpl\n * @type {function}\n * @param {Method|rpc.ServiceMethod<Message<{}>,Message<{}>>} method Reflected or static method being called\n * @param {Uint8Array} requestData Request data\n * @param {RPCImplCallback} callback Callback function\n * @returns {undefined}\n * @example\n * function rpcImpl(method, requestData, callback) {\n *     if (protobuf.util.lcFirst(method.name) !== \"myMethod\") // compatible with static code\n *         throw Error(\"no such method\");\n *     asynchronouslyObtainAResponse(requestData, function(err, responseData) {\n *         callback(err, responseData);\n *     });\n * }\n */\n\n/**\n * Node-style callback as used by {@link RPCImpl}.\n * @typedef RPCImplCallback\n * @type {function}\n * @param {Error|null} error Error, if any, otherwise `null`\n * @param {Uint8Array|null} [response] Response data or `null` to signal end of stream, if there hasn't been an error\n * @returns {undefined}\n */\n\nrpc.Service = require(\"./rpc/service\");\n", "\"use strict\";\nmodule.exports = {};\n\n/**\n * Named roots.\n * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).\n * Can also be used manually to make roots available accross modules.\n * @name roots\n * @type {Object.<string,Root>}\n * @example\n * // pbjs -r myroot -o compiled.js ...\n *\n * // in another module:\n * require(\"./compiled.js\");\n *\n * // in any subsequent module:\n * var root = protobuf.roots[\"myroot\"];\n */\n", "\"use strict\";\nvar protobuf = exports;\n\n/**\n * Build type, one of `\"full\"`, `\"light\"` or `\"minimal\"`.\n * @name build\n * @type {string}\n * @const\n */\nprotobuf.build = \"minimal\";\n\n// Serialization\nprotobuf.Writer       = require(\"./writer\");\nprotobuf.BufferWriter = require(\"./writer_buffer\");\nprotobuf.Reader       = require(\"./reader\");\nprotobuf.BufferReader = require(\"./reader_buffer\");\n\n// Utility\nprotobuf.util         = require(\"./util/minimal\");\nprotobuf.rpc          = require(\"./rpc\");\nprotobuf.roots        = require(\"./roots\");\nprotobuf.configure    = configure;\n\n/* istanbul ignore next */\n/**\n * Reconfigures the library according to the environment.\n * @returns {undefined}\n */\nfunction configure() {\n    protobuf.Reader._configure(protobuf.BufferReader);\n    protobuf.util._configure();\n}\n\n// Set up buffer utility according to the environment\nprotobuf.Writer._configure(protobuf.BufferWriter);\nconfigure();\n", "// minimal library entry point.\n\n\"use strict\";\nmodule.exports = require(\"./src/index-minimal\");\n", "/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/\nimport $protobuf from \"@apollo/protobufjs/minimal\";\n\n// Common aliases\nconst $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;\n\n// Exported root namespace\nconst $root = $protobuf.roots[\"default\"] || ($protobuf.roots[\"default\"] = {});\n\nexport const Trace = $root.Trace = (() => {\n\n    /**\n     * Properties of a Trace.\n     * @exports ITrace\n     * @interface ITrace\n     * @property {google.protobuf.ITimestamp|null} [startTime] Trace startTime\n     * @property {google.protobuf.ITimestamp|null} [endTime] Trace endTime\n     * @property {number|null} [durationNs] Trace durationNs\n     * @property {Trace.INode|null} [root] Trace root\n     * @property {boolean|null} [isIncomplete] Trace isIncomplete\n     * @property {string|null} [signature] Trace signature\n     * @property {string|null} [unexecutedOperationBody] Trace unexecutedOperationBody\n     * @property {string|null} [unexecutedOperationName] Trace unexecutedOperationName\n     * @property {Trace.IDetails|null} [details] Trace details\n     * @property {string|null} [clientName] Trace clientName\n     * @property {string|null} [clientVersion] Trace clientVersion\n     * @property {Trace.IHTTP|null} [http] Trace http\n     * @property {Trace.ICachePolicy|null} [cachePolicy] Trace cachePolicy\n     * @property {Trace.IQueryPlanNode|null} [queryPlan] Trace queryPlan\n     * @property {boolean|null} [fullQueryCacheHit] Trace fullQueryCacheHit\n     * @property {boolean|null} [persistedQueryHit] Trace persistedQueryHit\n     * @property {boolean|null} [persistedQueryRegister] Trace persistedQueryRegister\n     * @property {boolean|null} [registeredOperation] Trace registeredOperation\n     * @property {boolean|null} [forbiddenOperation] Trace forbiddenOperation\n     * @property {number|null} [fieldExecutionWeight] Trace fieldExecutionWeight\n     */\n\n    /**\n     * Constructs a new Trace.\n     * @exports Trace\n     * @classdesc Represents a Trace.\n     * @implements ITrace\n     * @constructor\n     * @param {ITrace=} [properties] Properties to set\n     */\n    function Trace(properties) {\n        if (properties)\n            for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * Trace startTime.\n     * @member {google.protobuf.ITimestamp|null|undefined} startTime\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.startTime = null;\n\n    /**\n     * Trace endTime.\n     * @member {google.protobuf.ITimestamp|null|undefined} endTime\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.endTime = null;\n\n    /**\n     * Trace durationNs.\n     * @member {number} durationNs\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.durationNs = 0;\n\n    /**\n     * Trace root.\n     * @member {Trace.INode|null|undefined} root\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.root = null;\n\n    /**\n     * Trace isIncomplete.\n     * @member {boolean} isIncomplete\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.isIncomplete = false;\n\n    /**\n     * Trace signature.\n     * @member {string} signature\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.signature = \"\";\n\n    /**\n     * Trace unexecutedOperationBody.\n     * @member {string} unexecutedOperationBody\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.unexecutedOperationBody = \"\";\n\n    /**\n     * Trace unexecutedOperationName.\n     * @member {string} unexecutedOperationName\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.unexecutedOperationName = \"\";\n\n    /**\n     * Trace details.\n     * @member {Trace.IDetails|null|undefined} details\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.details = null;\n\n    /**\n     * Trace clientName.\n     * @member {string} clientName\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.clientName = \"\";\n\n    /**\n     * Trace clientVersion.\n     * @member {string} clientVersion\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.clientVersion = \"\";\n\n    /**\n     * Trace http.\n     * @member {Trace.IHTTP|null|undefined} http\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.http = null;\n\n    /**\n     * Trace cachePolicy.\n     * @member {Trace.ICachePolicy|null|undefined} cachePolicy\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.cachePolicy = null;\n\n    /**\n     * Trace queryPlan.\n     * @member {Trace.IQueryPlanNode|null|undefined} queryPlan\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.queryPlan = null;\n\n    /**\n     * Trace fullQueryCacheHit.\n     * @member {boolean} fullQueryCacheHit\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.fullQueryCacheHit = false;\n\n    /**\n     * Trace persistedQueryHit.\n     * @member {boolean} persistedQueryHit\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.persistedQueryHit = false;\n\n    /**\n     * Trace persistedQueryRegister.\n     * @member {boolean} persistedQueryRegister\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.persistedQueryRegister = false;\n\n    /**\n     * Trace registeredOperation.\n     * @member {boolean} registeredOperation\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.registeredOperation = false;\n\n    /**\n     * Trace forbiddenOperation.\n     * @member {boolean} forbiddenOperation\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.forbiddenOperation = false;\n\n    /**\n     * Trace fieldExecutionWeight.\n     * @member {number} fieldExecutionWeight\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.fieldExecutionWeight = 0;\n\n    /**\n     * Creates a new Trace instance using the specified properties.\n     * @function create\n     * @memberof Trace\n     * @static\n     * @param {ITrace=} [properties] Properties to set\n     * @returns {Trace} Trace instance\n     */\n    Trace.create = function create(properties) {\n        return new Trace(properties);\n    };\n\n    /**\n     * Encodes the specified Trace message. Does not implicitly {@link Trace.verify|verify} messages.\n     * @function encode\n     * @memberof Trace\n     * @static\n     * @param {ITrace} message Trace message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    Trace.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.endTime != null && Object.hasOwnProperty.call(message, \"endTime\"))\n            $root.google.protobuf.Timestamp.encode(message.endTime, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n        if (message.startTime != null && Object.hasOwnProperty.call(message, \"startTime\"))\n            $root.google.protobuf.Timestamp.encode(message.startTime, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();\n        if (message.details != null && Object.hasOwnProperty.call(message, \"details\"))\n            $root.Trace.Details.encode(message.details, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n        if (message.clientName != null && Object.hasOwnProperty.call(message, \"clientName\"))\n            writer.uint32(/* id 7, wireType 2 =*/58).string(message.clientName);\n        if (message.clientVersion != null && Object.hasOwnProperty.call(message, \"clientVersion\"))\n            writer.uint32(/* id 8, wireType 2 =*/66).string(message.clientVersion);\n        if (message.http != null && Object.hasOwnProperty.call(message, \"http\"))\n            $root.Trace.HTTP.encode(message.http, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim();\n        if (message.durationNs != null && Object.hasOwnProperty.call(message, \"durationNs\"))\n            writer.uint32(/* id 11, wireType 0 =*/88).uint64(message.durationNs);\n        if (message.root != null && Object.hasOwnProperty.call(message, \"root\"))\n            $root.Trace.Node.encode(message.root, writer.uint32(/* id 14, wireType 2 =*/114).fork()).ldelim();\n        if (message.cachePolicy != null && Object.hasOwnProperty.call(message, \"cachePolicy\"))\n            $root.Trace.CachePolicy.encode(message.cachePolicy, writer.uint32(/* id 18, wireType 2 =*/146).fork()).ldelim();\n        if (message.signature != null && Object.hasOwnProperty.call(message, \"signature\"))\n            writer.uint32(/* id 19, wireType 2 =*/154).string(message.signature);\n        if (message.fullQueryCacheHit != null && Object.hasOwnProperty.call(message, \"fullQueryCacheHit\"))\n            writer.uint32(/* id 20, wireType 0 =*/160).bool(message.fullQueryCacheHit);\n        if (message.persistedQueryHit != null && Object.hasOwnProperty.call(message, \"persistedQueryHit\"))\n            writer.uint32(/* id 21, wireType 0 =*/168).bool(message.persistedQueryHit);\n        if (message.persistedQueryRegister != null && Object.hasOwnProperty.call(message, \"persistedQueryRegister\"))\n            writer.uint32(/* id 22, wireType 0 =*/176).bool(message.persistedQueryRegister);\n        if (message.registeredOperation != null && Object.hasOwnProperty.call(message, \"registeredOperation\"))\n            writer.uint32(/* id 24, wireType 0 =*/192).bool(message.registeredOperation);\n        if (message.forbiddenOperation != null && Object.hasOwnProperty.call(message, \"forbiddenOperation\"))\n            writer.uint32(/* id 25, wireType 0 =*/200).bool(message.forbiddenOperation);\n        if (message.queryPlan != null && Object.hasOwnProperty.call(message, \"queryPlan\"))\n            $root.Trace.QueryPlanNode.encode(message.queryPlan, writer.uint32(/* id 26, wireType 2 =*/210).fork()).ldelim();\n        if (message.unexecutedOperationBody != null && Object.hasOwnProperty.call(message, \"unexecutedOperationBody\"))\n            writer.uint32(/* id 27, wireType 2 =*/218).string(message.unexecutedOperationBody);\n        if (message.unexecutedOperationName != null && Object.hasOwnProperty.call(message, \"unexecutedOperationName\"))\n            writer.uint32(/* id 28, wireType 2 =*/226).string(message.unexecutedOperationName);\n        if (message.fieldExecutionWeight != null && Object.hasOwnProperty.call(message, \"fieldExecutionWeight\"))\n            writer.uint32(/* id 31, wireType 1 =*/249).double(message.fieldExecutionWeight);\n        if (message.isIncomplete != null && Object.hasOwnProperty.call(message, \"isIncomplete\"))\n            writer.uint32(/* id 33, wireType 0 =*/264).bool(message.isIncomplete);\n        return writer;\n    };\n\n    /**\n     * Encodes the specified Trace message, length delimited. Does not implicitly {@link Trace.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof Trace\n     * @static\n     * @param {ITrace} message Trace message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    Trace.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a Trace message from the specified reader or buffer.\n     * @function decode\n     * @memberof Trace\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {Trace} Trace\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    Trace.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        let end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace();\n        while (reader.pos < end) {\n            let tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 4:\n                message.startTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());\n                break;\n            case 3:\n                message.endTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());\n                break;\n            case 11:\n                message.durationNs = reader.uint64();\n                break;\n            case 14:\n                message.root = $root.Trace.Node.decode(reader, reader.uint32());\n                break;\n            case 33:\n                message.isIncomplete = reader.bool();\n                break;\n            case 19:\n                message.signature = reader.string();\n                break;\n            case 27:\n                message.unexecutedOperationBody = reader.string();\n                break;\n            case 28:\n                message.unexecutedOperationName = reader.string();\n                break;\n            case 6:\n                message.details = $root.Trace.Details.decode(reader, reader.uint32());\n                break;\n            case 7:\n                message.clientName = reader.string();\n                break;\n            case 8:\n                message.clientVersion = reader.string();\n                break;\n            case 10:\n                message.http = $root.Trace.HTTP.decode(reader, reader.uint32());\n                break;\n            case 18:\n                message.cachePolicy = $root.Trace.CachePolicy.decode(reader, reader.uint32());\n                break;\n            case 26:\n                message.queryPlan = $root.Trace.QueryPlanNode.decode(reader, reader.uint32());\n                break;\n            case 20:\n                message.fullQueryCacheHit = reader.bool();\n                break;\n            case 21:\n                message.persistedQueryHit = reader.bool();\n                break;\n            case 22:\n                message.persistedQueryRegister = reader.bool();\n                break;\n            case 24:\n                message.registeredOperation = reader.bool();\n                break;\n            case 25:\n                message.forbiddenOperation = reader.bool();\n                break;\n            case 31:\n                message.fieldExecutionWeight = reader.double();\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a Trace message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof Trace\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {Trace} Trace\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    Trace.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a Trace message.\n     * @function verify\n     * @memberof Trace\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    Trace.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.startTime != null && message.hasOwnProperty(\"startTime\")) {\n            let error = $root.google.protobuf.Timestamp.verify(message.startTime);\n            if (error)\n                return \"startTime.\" + error;\n        }\n        if (message.endTime != null && message.hasOwnProperty(\"endTime\")) {\n            let error = $root.google.protobuf.Timestamp.verify(message.endTime);\n            if (error)\n                return \"endTime.\" + error;\n        }\n        if (message.durationNs != null && message.hasOwnProperty(\"durationNs\"))\n            if (!$util.isInteger(message.durationNs) && !(message.durationNs && $util.isInteger(message.durationNs.low) && $util.isInteger(message.durationNs.high)))\n                return \"durationNs: integer|Long expected\";\n        if (message.root != null && message.hasOwnProperty(\"root\")) {\n            let error = $root.Trace.Node.verify(message.root);\n            if (error)\n                return \"root.\" + error;\n        }\n        if (message.isIncomplete != null && message.hasOwnProperty(\"isIncomplete\"))\n            if (typeof message.isIncomplete !== \"boolean\")\n                return \"isIncomplete: boolean expected\";\n        if (message.signature != null && message.hasOwnProperty(\"signature\"))\n            if (!$util.isString(message.signature))\n                return \"signature: string expected\";\n        if (message.unexecutedOperationBody != null && message.hasOwnProperty(\"unexecutedOperationBody\"))\n            if (!$util.isString(message.unexecutedOperationBody))\n                return \"unexecutedOperationBody: string expected\";\n        if (message.unexecutedOperationName != null && message.hasOwnProperty(\"unexecutedOperationName\"))\n            if (!$util.isString(message.unexecutedOperationName))\n                return \"unexecutedOperationName: string expected\";\n        if (message.details != null && message.hasOwnProperty(\"details\")) {\n            let error = $root.Trace.Details.verify(message.details);\n            if (error)\n                return \"details.\" + error;\n        }\n        if (message.clientName != null && message.hasOwnProperty(\"clientName\"))\n            if (!$util.isString(message.clientName))\n                return \"clientName: string expected\";\n        if (message.clientVersion != null && message.hasOwnProperty(\"clientVersion\"))\n            if (!$util.isString(message.clientVersion))\n                return \"clientVersion: string expected\";\n        if (message.http != null && message.hasOwnProperty(\"http\")) {\n            let error = $root.Trace.HTTP.verify(message.http);\n            if (error)\n                return \"http.\" + error;\n        }\n        if (message.cachePolicy != null && message.hasOwnProperty(\"cachePolicy\")) {\n            let error = $root.Trace.CachePolicy.verify(message.cachePolicy);\n            if (error)\n                return \"cachePolicy.\" + error;\n        }\n        if (message.queryPlan != null && message.hasOwnProperty(\"queryPlan\")) {\n            let error = $root.Trace.QueryPlanNode.verify(message.queryPlan);\n            if (error)\n                return \"queryPlan.\" + error;\n        }\n        if (message.fullQueryCacheHit != null && message.hasOwnProperty(\"fullQueryCacheHit\"))\n            if (typeof message.fullQueryCacheHit !== \"boolean\")\n                return \"fullQueryCacheHit: boolean expected\";\n        if (message.persistedQueryHit != null && message.hasOwnProperty(\"persistedQueryHit\"))\n            if (typeof message.persistedQueryHit !== \"boolean\")\n                return \"persistedQueryHit: boolean expected\";\n        if (message.persistedQueryRegister != null && message.hasOwnProperty(\"persistedQueryRegister\"))\n            if (typeof message.persistedQueryRegister !== \"boolean\")\n                return \"persistedQueryRegister: boolean expected\";\n        if (message.registeredOperation != null && message.hasOwnProperty(\"registeredOperation\"))\n            if (typeof message.registeredOperation !== \"boolean\")\n                return \"registeredOperation: boolean expected\";\n        if (message.forbiddenOperation != null && message.hasOwnProperty(\"forbiddenOperation\"))\n            if (typeof message.forbiddenOperation !== \"boolean\")\n                return \"forbiddenOperation: boolean expected\";\n        if (message.fieldExecutionWeight != null && message.hasOwnProperty(\"fieldExecutionWeight\"))\n            if (typeof message.fieldExecutionWeight !== \"number\")\n                return \"fieldExecutionWeight: number expected\";\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a Trace message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof Trace\n     * @static\n     * @param {Trace} message Trace\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    Trace.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        let object = {};\n        if (options.defaults) {\n            object.endTime = null;\n            object.startTime = null;\n            object.details = null;\n            object.clientName = \"\";\n            object.clientVersion = \"\";\n            object.http = null;\n            object.durationNs = 0;\n            object.root = null;\n            object.cachePolicy = null;\n            object.signature = \"\";\n            object.fullQueryCacheHit = false;\n            object.persistedQueryHit = false;\n            object.persistedQueryRegister = false;\n            object.registeredOperation = false;\n            object.forbiddenOperation = false;\n            object.queryPlan = null;\n            object.unexecutedOperationBody = \"\";\n            object.unexecutedOperationName = \"\";\n            object.fieldExecutionWeight = 0;\n            object.isIncomplete = false;\n        }\n        if (message.endTime != null && message.hasOwnProperty(\"endTime\"))\n            object.endTime = $root.google.protobuf.Timestamp.toObject(message.endTime, options);\n        if (message.startTime != null && message.hasOwnProperty(\"startTime\"))\n            object.startTime = $root.google.protobuf.Timestamp.toObject(message.startTime, options);\n        if (message.details != null && message.hasOwnProperty(\"details\"))\n            object.details = $root.Trace.Details.toObject(message.details, options);\n        if (message.clientName != null && message.hasOwnProperty(\"clientName\"))\n            object.clientName = message.clientName;\n        if (message.clientVersion != null && message.hasOwnProperty(\"clientVersion\"))\n            object.clientVersion = message.clientVersion;\n        if (message.http != null && message.hasOwnProperty(\"http\"))\n            object.http = $root.Trace.HTTP.toObject(message.http, options);\n        if (message.durationNs != null && message.hasOwnProperty(\"durationNs\"))\n            if (typeof message.durationNs === \"number\")\n                object.durationNs = options.longs === String ? String(message.durationNs) : message.durationNs;\n            else\n                object.durationNs = options.longs === String ? $util.Long.prototype.toString.call(message.durationNs) : options.longs === Number ? new $util.LongBits(message.durationNs.low >>> 0, message.durationNs.high >>> 0).toNumber(true) : message.durationNs;\n        if (message.root != null && message.hasOwnProperty(\"root\"))\n            object.root = $root.Trace.Node.toObject(message.root, options);\n        if (message.cachePolicy != null && message.hasOwnProperty(\"cachePolicy\"))\n            object.cachePolicy = $root.Trace.CachePolicy.toObject(message.cachePolicy, options);\n        if (message.signature != null && message.hasOwnProperty(\"signature\"))\n            object.signature = message.signature;\n        if (message.fullQueryCacheHit != null && message.hasOwnProperty(\"fullQueryCacheHit\"))\n            object.fullQueryCacheHit = message.fullQueryCacheHit;\n        if (message.persistedQueryHit != null && message.hasOwnProperty(\"persistedQueryHit\"))\n            object.persistedQueryHit = message.persistedQueryHit;\n        if (message.persistedQueryRegister != null && message.hasOwnProperty(\"persistedQueryRegister\"))\n            object.persistedQueryRegister = message.persistedQueryRegister;\n        if (message.registeredOperation != null && message.hasOwnProperty(\"registeredOperation\"))\n            object.registeredOperation = message.registeredOperation;\n        if (message.forbiddenOperation != null && message.hasOwnProperty(\"forbiddenOperation\"))\n            object.forbiddenOperation = message.forbiddenOperation;\n        if (message.queryPlan != null && message.hasOwnProperty(\"queryPlan\"))\n            object.queryPlan = $root.Trace.QueryPlanNode.toObject(message.queryPlan, options);\n        if (message.unexecutedOperationBody != null && message.hasOwnProperty(\"unexecutedOperationBody\"))\n            object.unexecutedOperationBody = message.unexecutedOperationBody;\n        if (message.unexecutedOperationName != null && message.hasOwnProperty(\"unexecutedOperationName\"))\n            object.unexecutedOperationName = message.unexecutedOperationName;\n        if (message.fieldExecutionWeight != null && message.hasOwnProperty(\"fieldExecutionWeight\"))\n            object.fieldExecutionWeight = options.json && !isFinite(message.fieldExecutionWeight) ? String(message.fieldExecutionWeight) : message.fieldExecutionWeight;\n        if (message.isIncomplete != null && message.hasOwnProperty(\"isIncomplete\"))\n            object.isIncomplete = message.isIncomplete;\n        return object;\n    };\n\n    /**\n     * Converts this Trace to JSON.\n     * @function toJSON\n     * @memberof Trace\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    Trace.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    Trace.CachePolicy = (function() {\n\n        /**\n         * Properties of a CachePolicy.\n         * @memberof Trace\n         * @interface ICachePolicy\n         * @property {Trace.CachePolicy.Scope|null} [scope] CachePolicy scope\n         * @property {number|null} [maxAgeNs] CachePolicy maxAgeNs\n         */\n\n        /**\n         * Constructs a new CachePolicy.\n         * @memberof Trace\n         * @classdesc Represents a CachePolicy.\n         * @implements ICachePolicy\n         * @constructor\n         * @param {Trace.ICachePolicy=} [properties] Properties to set\n         */\n        function CachePolicy(properties) {\n            if (properties)\n                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                    if (properties[keys[i]] != null)\n                        this[keys[i]] = properties[keys[i]];\n        }\n\n        /**\n         * CachePolicy scope.\n         * @member {Trace.CachePolicy.Scope} scope\n         * @memberof Trace.CachePolicy\n         * @instance\n         */\n        CachePolicy.prototype.scope = 0;\n\n        /**\n         * CachePolicy maxAgeNs.\n         * @member {number} maxAgeNs\n         * @memberof Trace.CachePolicy\n         * @instance\n         */\n        CachePolicy.prototype.maxAgeNs = 0;\n\n        /**\n         * Creates a new CachePolicy instance using the specified properties.\n         * @function create\n         * @memberof Trace.CachePolicy\n         * @static\n         * @param {Trace.ICachePolicy=} [properties] Properties to set\n         * @returns {Trace.CachePolicy} CachePolicy instance\n         */\n        CachePolicy.create = function create(properties) {\n            return new CachePolicy(properties);\n        };\n\n        /**\n         * Encodes the specified CachePolicy message. Does not implicitly {@link Trace.CachePolicy.verify|verify} messages.\n         * @function encode\n         * @memberof Trace.CachePolicy\n         * @static\n         * @param {Trace.ICachePolicy} message CachePolicy message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        CachePolicy.encode = function encode(message, writer) {\n            if (!writer)\n                writer = $Writer.create();\n            if (message.scope != null && Object.hasOwnProperty.call(message, \"scope\"))\n                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.scope);\n            if (message.maxAgeNs != null && Object.hasOwnProperty.call(message, \"maxAgeNs\"))\n                writer.uint32(/* id 2, wireType 0 =*/16).int64(message.maxAgeNs);\n            return writer;\n        };\n\n        /**\n         * Encodes the specified CachePolicy message, length delimited. Does not implicitly {@link Trace.CachePolicy.verify|verify} messages.\n         * @function encodeDelimited\n         * @memberof Trace.CachePolicy\n         * @static\n         * @param {Trace.ICachePolicy} message CachePolicy message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        CachePolicy.encodeDelimited = function encodeDelimited(message, writer) {\n            return this.encode(message, writer).ldelim();\n        };\n\n        /**\n         * Decodes a CachePolicy message from the specified reader or buffer.\n         * @function decode\n         * @memberof Trace.CachePolicy\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {Trace.CachePolicy} CachePolicy\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        CachePolicy.decode = function decode(reader, length) {\n            if (!(reader instanceof $Reader))\n                reader = $Reader.create(reader);\n            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.CachePolicy();\n            while (reader.pos < end) {\n                let tag = reader.uint32();\n                switch (tag >>> 3) {\n                case 1:\n                    message.scope = reader.int32();\n                    break;\n                case 2:\n                    message.maxAgeNs = reader.int64();\n                    break;\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n                }\n            }\n            return message;\n        };\n\n        /**\n         * Decodes a CachePolicy message from the specified reader or buffer, length delimited.\n         * @function decodeDelimited\n         * @memberof Trace.CachePolicy\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @returns {Trace.CachePolicy} CachePolicy\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        CachePolicy.decodeDelimited = function decodeDelimited(reader) {\n            if (!(reader instanceof $Reader))\n                reader = new $Reader(reader);\n            return this.decode(reader, reader.uint32());\n        };\n\n        /**\n         * Verifies a CachePolicy message.\n         * @function verify\n         * @memberof Trace.CachePolicy\n         * @static\n         * @param {Object.<string,*>} message Plain object to verify\n         * @returns {string|null} `null` if valid, otherwise the reason why it is not\n         */\n        CachePolicy.verify = function verify(message) {\n            if (typeof message !== \"object\" || message === null)\n                return \"object expected\";\n            if (message.scope != null && message.hasOwnProperty(\"scope\"))\n                switch (message.scope) {\n                default:\n                    return \"scope: enum value expected\";\n                case 0:\n                case 1:\n                case 2:\n                    break;\n                }\n            if (message.maxAgeNs != null && message.hasOwnProperty(\"maxAgeNs\"))\n                if (!$util.isInteger(message.maxAgeNs) && !(message.maxAgeNs && $util.isInteger(message.maxAgeNs.low) && $util.isInteger(message.maxAgeNs.high)))\n                    return \"maxAgeNs: integer|Long expected\";\n            return null;\n        };\n\n        /**\n         * Creates a plain object from a CachePolicy message. Also converts values to other types if specified.\n         * @function toObject\n         * @memberof Trace.CachePolicy\n         * @static\n         * @param {Trace.CachePolicy} message CachePolicy\n         * @param {$protobuf.IConversionOptions} [options] Conversion options\n         * @returns {Object.<string,*>} Plain object\n         */\n        CachePolicy.toObject = function toObject(message, options) {\n            if (!options)\n                options = {};\n            let object = {};\n            if (options.defaults) {\n                object.scope = options.enums === String ? \"UNKNOWN\" : 0;\n                object.maxAgeNs = 0;\n            }\n            if (message.scope != null && message.hasOwnProperty(\"scope\"))\n                object.scope = options.enums === String ? $root.Trace.CachePolicy.Scope[message.scope] : message.scope;\n            if (message.maxAgeNs != null && message.hasOwnProperty(\"maxAgeNs\"))\n                if (typeof message.maxAgeNs === \"number\")\n                    object.maxAgeNs = options.longs === String ? String(message.maxAgeNs) : message.maxAgeNs;\n                else\n                    object.maxAgeNs = options.longs === String ? $util.Long.prototype.toString.call(message.maxAgeNs) : options.longs === Number ? new $util.LongBits(message.maxAgeNs.low >>> 0, message.maxAgeNs.high >>> 0).toNumber() : message.maxAgeNs;\n            return object;\n        };\n\n        /**\n         * Converts this CachePolicy to JSON.\n         * @function toJSON\n         * @memberof Trace.CachePolicy\n         * @instance\n         * @returns {Object.<string,*>} JSON object\n         */\n        CachePolicy.prototype.toJSON = function toJSON() {\n            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n        };\n\n        /**\n         * Scope enum.\n         * @name Trace.CachePolicy.Scope\n         * @enum {string}\n         * @property {number} UNKNOWN=0 UNKNOWN value\n         * @property {number} PUBLIC=1 PUBLIC value\n         * @property {number} PRIVATE=2 PRIVATE value\n         */\n        CachePolicy.Scope = (function() {\n            const valuesById = {}, values = Object.create(valuesById);\n            values[valuesById[0] = \"UNKNOWN\"] = 0;\n            values[valuesById[1] = \"PUBLIC\"] = 1;\n            values[valuesById[2] = \"PRIVATE\"] = 2;\n            return values;\n        })();\n\n        return CachePolicy;\n    })();\n\n    Trace.Details = (function() {\n\n        /**\n         * Properties of a Details.\n         * @memberof Trace\n         * @interface IDetails\n         * @property {Object.<string,string>|null} [variablesJson] Details variablesJson\n         * @property {string|null} [operationName] Details operationName\n         */\n\n        /**\n         * Constructs a new Details.\n         * @memberof Trace\n         * @classdesc Represents a Details.\n         * @implements IDetails\n         * @constructor\n         * @param {Trace.IDetails=} [properties] Properties to set\n         */\n        function Details(properties) {\n            this.variablesJson = {};\n            if (properties)\n                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                    if (properties[keys[i]] != null)\n                        this[keys[i]] = properties[keys[i]];\n        }\n\n        /**\n         * Details variablesJson.\n         * @member {Object.<string,string>} variablesJson\n         * @memberof Trace.Details\n         * @instance\n         */\n        Details.prototype.variablesJson = $util.emptyObject;\n\n        /**\n         * Details operationName.\n         * @member {string} operationName\n         * @memberof Trace.Details\n         * @instance\n         */\n        Details.prototype.operationName = \"\";\n\n        /**\n         * Creates a new Details instance using the specified properties.\n         * @function create\n         * @memberof Trace.Details\n         * @static\n         * @param {Trace.IDetails=} [properties] Properties to set\n         * @returns {Trace.Details} Details instance\n         */\n        Details.create = function create(properties) {\n            return new Details(properties);\n        };\n\n        /**\n         * Encodes the specified Details message. Does not implicitly {@link Trace.Details.verify|verify} messages.\n         * @function encode\n         * @memberof Trace.Details\n         * @static\n         * @param {Trace.IDetails} message Details message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        Details.encode = function encode(message, writer) {\n            if (!writer)\n                writer = $Writer.create();\n            if (message.operationName != null && Object.hasOwnProperty.call(message, \"operationName\"))\n                writer.uint32(/* id 3, wireType 2 =*/26).string(message.operationName);\n            if (message.variablesJson != null && Object.hasOwnProperty.call(message, \"variablesJson\"))\n                for (let keys = Object.keys(message.variablesJson), i = 0; i < keys.length; ++i)\n                    writer.uint32(/* id 4, wireType 2 =*/34).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 2 =*/18).string(message.variablesJson[keys[i]]).ldelim();\n            return writer;\n        };\n\n        /**\n         * Encodes the specified Details message, length delimited. Does not implicitly {@link Trace.Details.verify|verify} messages.\n         * @function encodeDelimited\n         * @memberof Trace.Details\n         * @static\n         * @param {Trace.IDetails} message Details message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        Details.encodeDelimited = function encodeDelimited(message, writer) {\n            return this.encode(message, writer).ldelim();\n        };\n\n        /**\n         * Decodes a Details message from the specified reader or buffer.\n         * @function decode\n         * @memberof Trace.Details\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {Trace.Details} Details\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        Details.decode = function decode(reader, length) {\n            if (!(reader instanceof $Reader))\n                reader = $Reader.create(reader);\n            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.Details(), key;\n            while (reader.pos < end) {\n                let tag = reader.uint32();\n                switch (tag >>> 3) {\n                case 4:\n                    reader.skip().pos++;\n                    if (message.variablesJson === $util.emptyObject)\n                        message.variablesJson = {};\n                    key = reader.string();\n                    reader.pos++;\n                    message.variablesJson[key] = reader.string();\n                    break;\n                case 3:\n                    message.operationName = reader.string();\n                    break;\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n                }\n            }\n            return message;\n        };\n\n        /**\n         * Decodes a Details message from the specified reader or buffer, length delimited.\n         * @function decodeDelimited\n         * @memberof Trace.Details\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @returns {Trace.Details} Details\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        Details.decodeDelimited = function decodeDelimited(reader) {\n            if (!(reader instanceof $Reader))\n                reader = new $Reader(reader);\n            return this.decode(reader, reader.uint32());\n        };\n\n        /**\n         * Verifies a Details message.\n         * @function verify\n         * @memberof Trace.Details\n         * @static\n         * @param {Object.<string,*>} message Plain object to verify\n         * @returns {string|null} `null` if valid, otherwise the reason why it is not\n         */\n        Details.verify = function verify(message) {\n            if (typeof message !== \"object\" || message === null)\n                return \"object expected\";\n            if (message.variablesJson != null && message.hasOwnProperty(\"variablesJson\")) {\n                if (!$util.isObject(message.variablesJson))\n                    return \"variablesJson: object expected\";\n                let key = Object.keys(message.variablesJson);\n                for (let i = 0; i < key.length; ++i)\n                    if (!$util.isString(message.variablesJson[key[i]]))\n                        return \"variablesJson: string{k:string} expected\";\n            }\n            if (message.operationName != null && message.hasOwnProperty(\"operationName\"))\n                if (!$util.isString(message.operationName))\n                    return \"operationName: string expected\";\n            return null;\n        };\n\n        /**\n         * Creates a plain object from a Details message. Also converts values to other types if specified.\n         * @function toObject\n         * @memberof Trace.Details\n         * @static\n         * @param {Trace.Details} message Details\n         * @param {$protobuf.IConversionOptions} [options] Conversion options\n         * @returns {Object.<string,*>} Plain object\n         */\n        Details.toObject = function toObject(message, options) {\n            if (!options)\n                options = {};\n            let object = {};\n            if (options.objects || options.defaults)\n                object.variablesJson = {};\n            if (options.defaults)\n                object.operationName = \"\";\n            if (message.operationName != null && message.hasOwnProperty(\"operationName\"))\n                object.operationName = message.operationName;\n            let keys2;\n            if (message.variablesJson && (keys2 = Object.keys(message.variablesJson)).length) {\n                object.variablesJson = {};\n                for (let j = 0; j < keys2.length; ++j)\n                    object.variablesJson[keys2[j]] = message.variablesJson[keys2[j]];\n            }\n            return object;\n        };\n\n        /**\n         * Converts this Details to JSON.\n         * @function toJSON\n         * @memberof Trace.Details\n         * @instance\n         * @returns {Object.<string,*>} JSON object\n         */\n        Details.prototype.toJSON = function toJSON() {\n            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n        };\n\n        return Details;\n    })();\n\n    Trace.Error = (function() {\n\n        /**\n         * Properties of an Error.\n         * @memberof Trace\n         * @interface IError\n         * @property {string|null} [message] Error message\n         * @property {Array.<Trace.ILocation>|null} [location] Error location\n         * @property {number|null} [timeNs] Error timeNs\n         * @property {string|null} [json] Error json\n         */\n\n        /**\n         * Constructs a new Error.\n         * @memberof Trace\n         * @classdesc Represents an Error.\n         * @implements IError\n         * @constructor\n         * @param {Trace.IError=} [properties] Properties to set\n         */\n        function Error(properties) {\n            this.location = [];\n            if (properties)\n                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                    if (properties[keys[i]] != null)\n                        this[keys[i]] = properties[keys[i]];\n        }\n\n        /**\n         * Error message.\n         * @member {string} message\n         * @memberof Trace.Error\n         * @instance\n         */\n        Error.prototype.message = \"\";\n\n        /**\n         * Error location.\n         * @member {Array.<Trace.ILocation>} location\n         * @memberof Trace.Error\n         * @instance\n         */\n        Error.prototype.location = $util.emptyArray;\n\n        /**\n         * Error timeNs.\n         * @member {number} timeNs\n         * @memberof Trace.Error\n         * @instance\n         */\n        Error.prototype.timeNs = 0;\n\n        /**\n         * Error json.\n         * @member {string} json\n         * @memberof Trace.Error\n         * @instance\n         */\n        Error.prototype.json = \"\";\n\n        /**\n         * Creates a new Error instance using the specified properties.\n         * @function create\n         * @memberof Trace.Error\n         * @static\n         * @param {Trace.IError=} [properties] Properties to set\n         * @returns {Trace.Error} Error instance\n         */\n        Error.create = function create(properties) {\n            return new Error(properties);\n        };\n\n        /**\n         * Encodes the specified Error message. Does not implicitly {@link Trace.Error.verify|verify} messages.\n         * @function encode\n         * @memberof Trace.Error\n         * @static\n         * @param {Trace.IError} message Error message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        Error.encode = function encode(message, writer) {\n            if (!writer)\n                writer = $Writer.create();\n            if (message.message != null && Object.hasOwnProperty.call(message, \"message\"))\n                writer.uint32(/* id 1, wireType 2 =*/10).string(message.message);\n            if (message.location != null && message.location.length)\n                for (let i = 0; i < message.location.length; ++i)\n                    $root.Trace.Location.encode(message.location[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n            if (message.timeNs != null && Object.hasOwnProperty.call(message, \"timeNs\"))\n                writer.uint32(/* id 3, wireType 0 =*/24).uint64(message.timeNs);\n            if (message.json != null && Object.hasOwnProperty.call(message, \"json\"))\n                writer.uint32(/* id 4, wireType 2 =*/34).string(message.json);\n            return writer;\n        };\n\n        /**\n         * Encodes the specified Error message, length delimited. Does not implicitly {@link Trace.Error.verify|verify} messages.\n         * @function encodeDelimited\n         * @memberof Trace.Error\n         * @static\n         * @param {Trace.IError} message Error message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        Error.encodeDelimited = function encodeDelimited(message, writer) {\n            return this.encode(message, writer).ldelim();\n        };\n\n        /**\n         * Decodes an Error message from the specified reader or buffer.\n         * @function decode\n         * @memberof Trace.Error\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {Trace.Error} Error\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        Error.decode = function decode(reader, length) {\n            if (!(reader instanceof $Reader))\n                reader = $Reader.create(reader);\n            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.Error();\n            while (reader.pos < end) {\n                let tag = reader.uint32();\n                switch (tag >>> 3) {\n                case 1:\n                    message.message = reader.string();\n                    break;\n                case 2:\n                    if (!(message.location && message.location.length))\n                        message.location = [];\n                    message.location.push($root.Trace.Location.decode(reader, reader.uint32()));\n                    break;\n                case 3:\n                    message.timeNs = reader.uint64();\n                    break;\n                case 4:\n                    message.json = reader.string();\n                    break;\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n                }\n            }\n            return message;\n        };\n\n        /**\n         * Decodes an Error message from the specified reader or buffer, length delimited.\n         * @function decodeDelimited\n         * @memberof Trace.Error\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @returns {Trace.Error} Error\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        Error.decodeDelimited = function decodeDelimited(reader) {\n            if (!(reader instanceof $Reader))\n                reader = new $Reader(reader);\n            return this.decode(reader, reader.uint32());\n        };\n\n        /**\n         * Verifies an Error message.\n         * @function verify\n         * @memberof Trace.Error\n         * @static\n         * @param {Object.<string,*>} message Plain object to verify\n         * @returns {string|null} `null` if valid, otherwise the reason why it is not\n         */\n        Error.verify = function verify(message) {\n            if (typeof message !== \"object\" || message === null)\n                return \"object expected\";\n            if (message.message != null && message.hasOwnProperty(\"message\"))\n                if (!$util.isString(message.message))\n                    return \"message: string expected\";\n            if (message.location != null && message.hasOwnProperty(\"location\")) {\n                if (!Array.isArray(message.location))\n                    return \"location: array expected\";\n                for (let i = 0; i < message.location.length; ++i) {\n                    let error = $root.Trace.Location.verify(message.location[i]);\n                    if (error)\n                        return \"location.\" + error;\n                }\n            }\n            if (message.timeNs != null && message.hasOwnProperty(\"timeNs\"))\n                if (!$util.isInteger(message.timeNs) && !(message.timeNs && $util.isInteger(message.timeNs.low) && $util.isInteger(message.timeNs.high)))\n                    return \"timeNs: integer|Long expected\";\n            if (message.json != null && message.hasOwnProperty(\"json\"))\n                if (!$util.isString(message.json))\n                    return \"json: string expected\";\n            return null;\n        };\n\n        /**\n         * Creates a plain object from an Error message. Also converts values to other types if specified.\n         * @function toObject\n         * @memberof Trace.Error\n         * @static\n         * @param {Trace.Error} message Error\n         * @param {$protobuf.IConversionOptions} [options] Conversion options\n         * @returns {Object.<string,*>} Plain object\n         */\n        Error.toObject = function toObject(message, options) {\n            if (!options)\n                options = {};\n            let object = {};\n            if (options.arrays || options.defaults)\n                object.location = [];\n            if (options.defaults) {\n                object.message = \"\";\n                object.timeNs = 0;\n                object.json = \"\";\n            }\n            if (message.message != null && message.hasOwnProperty(\"message\"))\n                object.message = message.message;\n            if (message.location && message.location.length) {\n                object.location = [];\n                for (let j = 0; j < message.location.length; ++j)\n                    object.location[j] = $root.Trace.Location.toObject(message.location[j], options);\n            }\n            if (message.timeNs != null && message.hasOwnProperty(\"timeNs\"))\n                if (typeof message.timeNs === \"number\")\n                    object.timeNs = options.longs === String ? String(message.timeNs) : message.timeNs;\n                else\n                    object.timeNs = options.longs === String ? $util.Long.prototype.toString.call(message.timeNs) : options.longs === Number ? new $util.LongBits(message.timeNs.low >>> 0, message.timeNs.high >>> 0).toNumber(true) : message.timeNs;\n            if (message.json != null && message.hasOwnProperty(\"json\"))\n                object.json = message.json;\n            return object;\n        };\n\n        /**\n         * Converts this Error to JSON.\n         * @function toJSON\n         * @memberof Trace.Error\n         * @instance\n         * @returns {Object.<string,*>} JSON object\n         */\n        Error.prototype.toJSON = function toJSON() {\n            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n        };\n\n        return Error;\n    })();\n\n    Trace.HTTP = (function() {\n\n        /**\n         * Properties of a HTTP.\n         * @memberof Trace\n         * @interface IHTTP\n         * @property {Trace.HTTP.Method|null} [method] HTTP method\n         * @property {Object.<string,Trace.HTTP.IValues>|null} [requestHeaders] HTTP requestHeaders\n         * @property {Object.<string,Trace.HTTP.IValues>|null} [responseHeaders] HTTP responseHeaders\n         * @property {number|null} [statusCode] HTTP statusCode\n         */\n\n        /**\n         * Constructs a new HTTP.\n         * @memberof Trace\n         * @classdesc Represents a HTTP.\n         * @implements IHTTP\n         * @constructor\n         * @param {Trace.IHTTP=} [properties] Properties to set\n         */\n        function HTTP(properties) {\n            this.requestHeaders = {};\n            this.responseHeaders = {};\n            if (properties)\n                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                    if (properties[keys[i]] != null)\n                        this[keys[i]] = properties[keys[i]];\n        }\n\n        /**\n         * HTTP method.\n         * @member {Trace.HTTP.Method} method\n         * @memberof Trace.HTTP\n         * @instance\n         */\n        HTTP.prototype.method = 0;\n\n        /**\n         * HTTP requestHeaders.\n         * @member {Object.<string,Trace.HTTP.IValues>} requestHeaders\n         * @memberof Trace.HTTP\n         * @instance\n         */\n        HTTP.prototype.requestHeaders = $util.emptyObject;\n\n        /**\n         * HTTP responseHeaders.\n         * @member {Object.<string,Trace.HTTP.IValues>} responseHeaders\n         * @memberof Trace.HTTP\n         * @instance\n         */\n        HTTP.prototype.responseHeaders = $util.emptyObject;\n\n        /**\n         * HTTP statusCode.\n         * @member {number} statusCode\n         * @memberof Trace.HTTP\n         * @instance\n         */\n        HTTP.prototype.statusCode = 0;\n\n        /**\n         * Creates a new HTTP instance using the specified properties.\n         * @function create\n         * @memberof Trace.HTTP\n         * @static\n         * @param {Trace.IHTTP=} [properties] Properties to set\n         * @returns {Trace.HTTP} HTTP instance\n         */\n        HTTP.create = function create(properties) {\n            return new HTTP(properties);\n        };\n\n        /**\n         * Encodes the specified HTTP message. Does not implicitly {@link Trace.HTTP.verify|verify} messages.\n         * @function encode\n         * @memberof Trace.HTTP\n         * @static\n         * @param {Trace.IHTTP} message HTTP message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        HTTP.encode = function encode(message, writer) {\n            if (!writer)\n                writer = $Writer.create();\n            if (message.method != null && Object.hasOwnProperty.call(message, \"method\"))\n                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.method);\n            if (message.requestHeaders != null && Object.hasOwnProperty.call(message, \"requestHeaders\"))\n                for (let keys = Object.keys(message.requestHeaders), i = 0; i < keys.length; ++i) {\n                    writer.uint32(/* id 4, wireType 2 =*/34).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]);\n                    $root.Trace.HTTP.Values.encode(message.requestHeaders[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim();\n                }\n            if (message.responseHeaders != null && Object.hasOwnProperty.call(message, \"responseHeaders\"))\n                for (let keys = Object.keys(message.responseHeaders), i = 0; i < keys.length; ++i) {\n                    writer.uint32(/* id 5, wireType 2 =*/42).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]);\n                    $root.Trace.HTTP.Values.encode(message.responseHeaders[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim();\n                }\n            if (message.statusCode != null && Object.hasOwnProperty.call(message, \"statusCode\"))\n                writer.uint32(/* id 6, wireType 0 =*/48).uint32(message.statusCode);\n            return writer;\n        };\n\n        /**\n         * Encodes the specified HTTP message, length delimited. Does not implicitly {@link Trace.HTTP.verify|verify} messages.\n         * @function encodeDelimited\n         * @memberof Trace.HTTP\n         * @static\n         * @param {Trace.IHTTP} message HTTP message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        HTTP.encodeDelimited = function encodeDelimited(message, writer) {\n            return this.encode(message, writer).ldelim();\n        };\n\n        /**\n         * Decodes a HTTP message from the specified reader or buffer.\n         * @function decode\n         * @memberof Trace.HTTP\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {Trace.HTTP} HTTP\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        HTTP.decode = function decode(reader, length) {\n            if (!(reader instanceof $Reader))\n                reader = $Reader.create(reader);\n            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.HTTP(), key;\n            while (reader.pos < end) {\n                let tag = reader.uint32();\n                switch (tag >>> 3) {\n                case 1:\n                    message.method = reader.int32();\n                    break;\n                case 4:\n                    reader.skip().pos++;\n                    if (message.requestHeaders === $util.emptyObject)\n                        message.requestHeaders = {};\n                    key = reader.string();\n                    reader.pos++;\n                    message.requestHeaders[key] = $root.Trace.HTTP.Values.decode(reader, reader.uint32());\n                    break;\n                case 5:\n                    reader.skip().pos++;\n                    if (message.responseHeaders === $util.emptyObject)\n                        message.responseHeaders = {};\n                    key = reader.string();\n                    reader.pos++;\n                    message.responseHeaders[key] = $root.Trace.HTTP.Values.decode(reader, reader.uint32());\n                    break;\n                case 6:\n                    message.statusCode = reader.uint32();\n                    break;\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n                }\n            }\n            return message;\n        };\n\n        /**\n         * Decodes a HTTP message from the specified reader or buffer, length delimited.\n         * @function decodeDelimited\n         * @memberof Trace.HTTP\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @returns {Trace.HTTP} HTTP\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        HTTP.decodeDelimited = function decodeDelimited(reader) {\n            if (!(reader instanceof $Reader))\n                reader = new $Reader(reader);\n            return this.decode(reader, reader.uint32());\n        };\n\n        /**\n         * Verifies a HTTP message.\n         * @function verify\n         * @memberof Trace.HTTP\n         * @static\n         * @param {Object.<string,*>} message Plain object to verify\n         * @returns {string|null} `null` if valid, otherwise the reason why it is not\n         */\n        HTTP.verify = function verify(message) {\n            if (typeof message !== \"object\" || message === null)\n                return \"object expected\";\n            if (message.method != null && message.hasOwnProperty(\"method\"))\n                switch (message.method) {\n                default:\n                    return \"method: enum value expected\";\n                case 0:\n                case 1:\n                case 2:\n                case 3:\n                case 4:\n                case 5:\n                case 6:\n                case 7:\n                case 8:\n                case 9:\n                    break;\n                }\n            if (message.requestHeaders != null && message.hasOwnProperty(\"requestHeaders\")) {\n                if (!$util.isObject(message.requestHeaders))\n                    return \"requestHeaders: object expected\";\n                let key = Object.keys(message.requestHeaders);\n                for (let i = 0; i < key.length; ++i) {\n                    let error = $root.Trace.HTTP.Values.verify(message.requestHeaders[key[i]]);\n                    if (error)\n                        return \"requestHeaders.\" + error;\n                }\n            }\n            if (message.responseHeaders != null && message.hasOwnProperty(\"responseHeaders\")) {\n                if (!$util.isObject(message.responseHeaders))\n                    return \"responseHeaders: object expected\";\n                let key = Object.keys(message.responseHeaders);\n                for (let i = 0; i < key.length; ++i) {\n                    let error = $root.Trace.HTTP.Values.verify(message.responseHeaders[key[i]]);\n                    if (error)\n                        return \"responseHeaders.\" + error;\n                }\n            }\n            if (message.statusCode != null && message.hasOwnProperty(\"statusCode\"))\n                if (!$util.isInteger(message.statusCode))\n                    return \"statusCode: integer expected\";\n            return null;\n        };\n\n        /**\n         * Creates a plain object from a HTTP message. Also converts values to other types if specified.\n         * @function toObject\n         * @memberof Trace.HTTP\n         * @static\n         * @param {Trace.HTTP} message HTTP\n         * @param {$protobuf.IConversionOptions} [options] Conversion options\n         * @returns {Object.<string,*>} Plain object\n         */\n        HTTP.toObject = function toObject(message, options) {\n            if (!options)\n                options = {};\n            let object = {};\n            if (options.objects || options.defaults) {\n                object.requestHeaders = {};\n                object.responseHeaders = {};\n            }\n            if (options.defaults) {\n                object.method = options.enums === String ? \"UNKNOWN\" : 0;\n                object.statusCode = 0;\n            }\n            if (message.method != null && message.hasOwnProperty(\"method\"))\n                object.method = options.enums === String ? $root.Trace.HTTP.Method[message.method] : message.method;\n            let keys2;\n            if (message.requestHeaders && (keys2 = Object.keys(message.requestHeaders)).length) {\n                object.requestHeaders = {};\n                for (let j = 0; j < keys2.length; ++j)\n                    object.requestHeaders[keys2[j]] = $root.Trace.HTTP.Values.toObject(message.requestHeaders[keys2[j]], options);\n            }\n            if (message.responseHeaders && (keys2 = Object.keys(message.responseHeaders)).length) {\n                object.responseHeaders = {};\n                for (let j = 0; j < keys2.length; ++j)\n                    object.responseHeaders[keys2[j]] = $root.Trace.HTTP.Values.toObject(message.responseHeaders[keys2[j]], options);\n            }\n            if (message.statusCode != null && message.hasOwnProperty(\"statusCode\"))\n                object.statusCode = message.statusCode;\n            return object;\n        };\n\n        /**\n         * Converts this HTTP to JSON.\n         * @function toJSON\n         * @memberof Trace.HTTP\n         * @instance\n         * @returns {Object.<string,*>} JSON object\n         */\n        HTTP.prototype.toJSON = function toJSON() {\n            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n        };\n\n        HTTP.Values = (function() {\n\n            /**\n             * Properties of a Values.\n             * @memberof Trace.HTTP\n             * @interface IValues\n             * @property {Array.<string>|null} [value] Values value\n             */\n\n            /**\n             * Constructs a new Values.\n             * @memberof Trace.HTTP\n             * @classdesc Represents a Values.\n             * @implements IValues\n             * @constructor\n             * @param {Trace.HTTP.IValues=} [properties] Properties to set\n             */\n            function Values(properties) {\n                this.value = [];\n                if (properties)\n                    for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                        if (properties[keys[i]] != null)\n                            this[keys[i]] = properties[keys[i]];\n            }\n\n            /**\n             * Values value.\n             * @member {Array.<string>} value\n             * @memberof Trace.HTTP.Values\n             * @instance\n             */\n            Values.prototype.value = $util.emptyArray;\n\n            /**\n             * Creates a new Values instance using the specified properties.\n             * @function create\n             * @memberof Trace.HTTP.Values\n             * @static\n             * @param {Trace.HTTP.IValues=} [properties] Properties to set\n             * @returns {Trace.HTTP.Values} Values instance\n             */\n            Values.create = function create(properties) {\n                return new Values(properties);\n            };\n\n            /**\n             * Encodes the specified Values message. Does not implicitly {@link Trace.HTTP.Values.verify|verify} messages.\n             * @function encode\n             * @memberof Trace.HTTP.Values\n             * @static\n             * @param {Trace.HTTP.IValues} message Values message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            Values.encode = function encode(message, writer) {\n                if (!writer)\n                    writer = $Writer.create();\n                if (message.value != null && message.value.length)\n                    for (let i = 0; i < message.value.length; ++i)\n                        writer.uint32(/* id 1, wireType 2 =*/10).string(message.value[i]);\n                return writer;\n            };\n\n            /**\n             * Encodes the specified Values message, length delimited. Does not implicitly {@link Trace.HTTP.Values.verify|verify} messages.\n             * @function encodeDelimited\n             * @memberof Trace.HTTP.Values\n             * @static\n             * @param {Trace.HTTP.IValues} message Values message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            Values.encodeDelimited = function encodeDelimited(message, writer) {\n                return this.encode(message, writer).ldelim();\n            };\n\n            /**\n             * Decodes a Values message from the specified reader or buffer.\n             * @function decode\n             * @memberof Trace.HTTP.Values\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @param {number} [length] Message length if known beforehand\n             * @returns {Trace.HTTP.Values} Values\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            Values.decode = function decode(reader, length) {\n                if (!(reader instanceof $Reader))\n                    reader = $Reader.create(reader);\n                let end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.HTTP.Values();\n                while (reader.pos < end) {\n                    let tag = reader.uint32();\n                    switch (tag >>> 3) {\n                    case 1:\n                        if (!(message.value && message.value.length))\n                            message.value = [];\n                        message.value.push(reader.string());\n                        break;\n                    default:\n                        reader.skipType(tag & 7);\n                        break;\n                    }\n                }\n                return message;\n            };\n\n            /**\n             * Decodes a Values message from the specified reader or buffer, length delimited.\n             * @function decodeDelimited\n             * @memberof Trace.HTTP.Values\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @returns {Trace.HTTP.Values} Values\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            Values.decodeDelimited = function decodeDelimited(reader) {\n                if (!(reader instanceof $Reader))\n                    reader = new $Reader(reader);\n                return this.decode(reader, reader.uint32());\n            };\n\n            /**\n             * Verifies a Values message.\n             * @function verify\n             * @memberof Trace.HTTP.Values\n             * @static\n             * @param {Object.<string,*>} message Plain object to verify\n             * @returns {string|null} `null` if valid, otherwise the reason why it is not\n             */\n            Values.verify = function verify(message) {\n                if (typeof message !== \"object\" || message === null)\n                    return \"object expected\";\n                if (message.value != null && message.hasOwnProperty(\"value\")) {\n                    if (!Array.isArray(message.value))\n                        return \"value: array expected\";\n                    for (let i = 0; i < message.value.length; ++i)\n                        if (!$util.isString(message.value[i]))\n                            return \"value: string[] expected\";\n                }\n                return null;\n            };\n\n            /**\n             * Creates a plain object from a Values message. Also converts values to other types if specified.\n             * @function toObject\n             * @memberof Trace.HTTP.Values\n             * @static\n             * @param {Trace.HTTP.Values} message Values\n             * @param {$protobuf.IConversionOptions} [options] Conversion options\n             * @returns {Object.<string,*>} Plain object\n             */\n            Values.toObject = function toObject(message, options) {\n                if (!options)\n                    options = {};\n                let object = {};\n                if (options.arrays || options.defaults)\n                    object.value = [];\n                if (message.value && message.value.length) {\n                    object.value = [];\n                    for (let j = 0; j < message.value.length; ++j)\n                        object.value[j] = message.value[j];\n                }\n                return object;\n            };\n\n            /**\n             * Converts this Values to JSON.\n             * @function toJSON\n             * @memberof Trace.HTTP.Values\n             * @instance\n             * @returns {Object.<string,*>} JSON object\n             */\n            Values.prototype.toJSON = function toJSON() {\n                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n            };\n\n            return Values;\n        })();\n\n        /**\n         * Method enum.\n         * @name Trace.HTTP.Method\n         * @enum {string}\n         * @property {number} UNKNOWN=0 UNKNOWN value\n         * @property {number} OPTIONS=1 OPTIONS value\n         * @property {number} GET=2 GET value\n         * @property {number} HEAD=3 HEAD value\n         * @property {number} POST=4 POST value\n         * @property {number} PUT=5 PUT value\n         * @property {number} DELETE=6 DELETE value\n         * @property {number} TRACE=7 TRACE value\n         * @property {number} CONNECT=8 CONNECT value\n         * @property {number} PATCH=9 PATCH value\n         */\n        HTTP.Method = (function() {\n            const valuesById = {}, values = Object.create(valuesById);\n            values[valuesById[0] = \"UNKNOWN\"] = 0;\n            values[valuesById[1] = \"OPTIONS\"] = 1;\n            values[valuesById[2] = \"GET\"] = 2;\n            values[valuesById[3] = \"HEAD\"] = 3;\n            values[valuesById[4] = \"POST\"] = 4;\n            values[valuesById[5] = \"PUT\"] = 5;\n            values[valuesById[6] = \"DELETE\"] = 6;\n            values[valuesById[7] = \"TRACE\"] = 7;\n            values[valuesById[8] = \"CONNECT\"] = 8;\n            values[valuesById[9] = \"PATCH\"] = 9;\n            return values;\n        })();\n\n        return HTTP;\n    })();\n\n    Trace.Location = (function() {\n\n        /**\n         * Properties of a Location.\n         * @memberof Trace\n         * @interface ILocation\n         * @property {number|null} [line] Location line\n         * @property {number|null} [column] Location column\n         */\n\n        /**\n         * Constructs a new Location.\n         * @memberof Trace\n         * @classdesc Represents a Location.\n         * @implements ILocation\n         * @constructor\n         * @param {Trace.ILocation=} [properties] Properties to set\n         */\n        function Location(properties) {\n            if (properties)\n                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                    if (properties[keys[i]] != null)\n                        this[keys[i]] = properties[keys[i]];\n        }\n\n        /**\n         * Location line.\n         * @member {number} line\n         * @memberof Trace.Location\n         * @instance\n         */\n        Location.prototype.line = 0;\n\n        /**\n         * Location column.\n         * @member {number} column\n         * @memberof Trace.Location\n         * @instance\n         */\n        Location.prototype.column = 0;\n\n        /**\n         * Creates a new Location instance using the specified properties.\n         * @function create\n         * @memberof Trace.Location\n         * @static\n         * @param {Trace.ILocation=} [properties] Properties to set\n         * @returns {Trace.Location} Location instance\n         */\n        Location.create = function create(properties) {\n            return new Location(properties);\n        };\n\n        /**\n         * Encodes the specified Location message. Does not implicitly {@link Trace.Location.verify|verify} messages.\n         * @function encode\n         * @memberof Trace.Location\n         * @static\n         * @param {Trace.ILocation} message Location message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        Location.encode = function encode(message, writer) {\n            if (!writer)\n                writer = $Writer.create();\n            if (message.line != null && Object.hasOwnProperty.call(message, \"line\"))\n                writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.line);\n            if (message.column != null && Object.hasOwnProperty.call(message, \"column\"))\n                writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.column);\n            return writer;\n        };\n\n        /**\n         * Encodes the specified Location message, length delimited. Does not implicitly {@link Trace.Location.verify|verify} messages.\n         * @function encodeDelimited\n         * @memberof Trace.Location\n         * @static\n         * @param {Trace.ILocation} message Location message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        Location.encodeDelimited = function encodeDelimited(message, writer) {\n            return this.encode(message, writer).ldelim();\n        };\n\n        /**\n         * Decodes a Location message from the specified reader or buffer.\n         * @function decode\n         * @memberof Trace.Location\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {Trace.Location} Location\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        Location.decode = function decode(reader, length) {\n            if (!(reader instanceof $Reader))\n                reader = $Reader.create(reader);\n            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.Location();\n            while (reader.pos < end) {\n                let tag = reader.uint32();\n                switch (tag >>> 3) {\n                case 1:\n                    message.line = reader.uint32();\n                    break;\n                case 2:\n                    message.column = reader.uint32();\n                    break;\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n                }\n            }\n            return message;\n        };\n\n        /**\n         * Decodes a Location message from the specified reader or buffer, length delimited.\n         * @function decodeDelimited\n         * @memberof Trace.Location\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @returns {Trace.Location} Location\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        Location.decodeDelimited = function decodeDelimited(reader) {\n            if (!(reader instanceof $Reader))\n                reader = new $Reader(reader);\n            return this.decode(reader, reader.uint32());\n        };\n\n        /**\n         * Verifies a Location message.\n         * @function verify\n         * @memberof Trace.Location\n         * @static\n         * @param {Object.<string,*>} message Plain object to verify\n         * @returns {string|null} `null` if valid, otherwise the reason why it is not\n         */\n        Location.verify = function verify(message) {\n            if (typeof message !== \"object\" || message === null)\n                return \"object expected\";\n            if (message.line != null && message.hasOwnProperty(\"line\"))\n                if (!$util.isInteger(message.line))\n                    return \"line: integer expected\";\n            if (message.column != null && message.hasOwnProperty(\"column\"))\n                if (!$util.isInteger(message.column))\n                    return \"column: integer expected\";\n            return null;\n        };\n\n        /**\n         * Creates a plain object from a Location message. Also converts values to other types if specified.\n         * @function toObject\n         * @memberof Trace.Location\n         * @static\n         * @param {Trace.Location} message Location\n         * @param {$protobuf.IConversionOptions} [options] Conversion options\n         * @returns {Object.<string,*>} Plain object\n         */\n        Location.toObject = function toObject(message, options) {\n            if (!options)\n                options = {};\n            let object = {};\n            if (options.defaults) {\n                object.line = 0;\n                object.column = 0;\n            }\n            if (message.line != null && message.hasOwnProperty(\"line\"))\n                object.line = message.line;\n            if (message.column != null && message.hasOwnProperty(\"column\"))\n                object.column = message.column;\n            return object;\n        };\n\n        /**\n         * Converts this Location to JSON.\n         * @function toJSON\n         * @memberof Trace.Location\n         * @instance\n         * @returns {Object.<string,*>} JSON object\n         */\n        Location.prototype.toJSON = function toJSON() {\n            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n        };\n\n        return Location;\n    })();\n\n    Trace.Node = (function() {\n\n        /**\n         * Properties of a Node.\n         * @memberof Trace\n         * @interface INode\n         * @property {string|null} [responseName] Node responseName\n         * @property {number|null} [index] Node index\n         * @property {string|null} [originalFieldName] Node originalFieldName\n         * @property {string|null} [type] Node type\n         * @property {string|null} [parentType] Node parentType\n         * @property {Trace.ICachePolicy|null} [cachePolicy] Node cachePolicy\n         * @property {number|null} [startTime] Node startTime\n         * @property {number|null} [endTime] Node endTime\n         * @property {Array.<Trace.IError>|null} [error] Node error\n         * @property {Array.<Trace.INode>|null} [child] Node child\n         */\n\n        /**\n         * Constructs a new Node.\n         * @memberof Trace\n         * @classdesc Represents a Node.\n         * @implements INode\n         * @constructor\n         * @param {Trace.INode=} [properties] Properties to set\n         */\n        function Node(properties) {\n            this.error = [];\n            this.child = [];\n            if (properties)\n                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                    if (properties[keys[i]] != null)\n                        this[keys[i]] = properties[keys[i]];\n        }\n\n        /**\n         * Node responseName.\n         * @member {string} responseName\n         * @memberof Trace.Node\n         * @instance\n         */\n        Node.prototype.responseName = \"\";\n\n        /**\n         * Node index.\n         * @member {number} index\n         * @memberof Trace.Node\n         * @instance\n         */\n        Node.prototype.index = 0;\n\n        /**\n         * Node originalFieldName.\n         * @member {string} originalFieldName\n         * @memberof Trace.Node\n         * @instance\n         */\n        Node.prototype.originalFieldName = \"\";\n\n        /**\n         * Node type.\n         * @member {string} type\n         * @memberof Trace.Node\n         * @instance\n         */\n        Node.prototype.type = \"\";\n\n        /**\n         * Node parentType.\n         * @member {string} parentType\n         * @memberof Trace.Node\n         * @instance\n         */\n        Node.prototype.parentType = \"\";\n\n        /**\n         * Node cachePolicy.\n         * @member {Trace.ICachePolicy|null|undefined} cachePolicy\n         * @memberof Trace.Node\n         * @instance\n         */\n        Node.prototype.cachePolicy = null;\n\n        /**\n         * Node startTime.\n         * @member {number} startTime\n         * @memberof Trace.Node\n         * @instance\n         */\n        Node.prototype.startTime = 0;\n\n        /**\n         * Node endTime.\n         * @member {number} endTime\n         * @memberof Trace.Node\n         * @instance\n         */\n        Node.prototype.endTime = 0;\n\n        /**\n         * Node error.\n         * @member {Array.<Trace.IError>} error\n         * @memberof Trace.Node\n         * @instance\n         */\n        Node.prototype.error = $util.emptyArray;\n\n        /**\n         * Node child.\n         * @member {Array.<Trace.INode>} child\n         * @memberof Trace.Node\n         * @instance\n         */\n        Node.prototype.child = $util.emptyArray;\n\n        // OneOf field names bound to virtual getters and setters\n        let $oneOfFields;\n\n        /**\n         * Node id.\n         * @member {\"responseName\"|\"index\"|undefined} id\n         * @memberof Trace.Node\n         * @instance\n         */\n        Object.defineProperty(Node.prototype, \"id\", {\n            get: $util.oneOfGetter($oneOfFields = [\"responseName\", \"index\"]),\n            set: $util.oneOfSetter($oneOfFields)\n        });\n\n        /**\n         * Creates a new Node instance using the specified properties.\n         * @function create\n         * @memberof Trace.Node\n         * @static\n         * @param {Trace.INode=} [properties] Properties to set\n         * @returns {Trace.Node} Node instance\n         */\n        Node.create = function create(properties) {\n            return new Node(properties);\n        };\n\n        /**\n         * Encodes the specified Node message. Does not implicitly {@link Trace.Node.verify|verify} messages.\n         * @function encode\n         * @memberof Trace.Node\n         * @static\n         * @param {Trace.INode} message Node message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        Node.encode = function encode(message, writer) {\n            if (!writer)\n                writer = $Writer.create();\n            if (message.responseName != null && Object.hasOwnProperty.call(message, \"responseName\"))\n                writer.uint32(/* id 1, wireType 2 =*/10).string(message.responseName);\n            if (message.index != null && Object.hasOwnProperty.call(message, \"index\"))\n                writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.index);\n            if (message.type != null && Object.hasOwnProperty.call(message, \"type\"))\n                writer.uint32(/* id 3, wireType 2 =*/26).string(message.type);\n            if (message.cachePolicy != null && Object.hasOwnProperty.call(message, \"cachePolicy\"))\n                $root.Trace.CachePolicy.encode(message.cachePolicy, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();\n            if (message.startTime != null && Object.hasOwnProperty.call(message, \"startTime\"))\n                writer.uint32(/* id 8, wireType 0 =*/64).uint64(message.startTime);\n            if (message.endTime != null && Object.hasOwnProperty.call(message, \"endTime\"))\n                writer.uint32(/* id 9, wireType 0 =*/72).uint64(message.endTime);\n            if (message.error != null && message.error.length)\n                for (let i = 0; i < message.error.length; ++i)\n                    $root.Trace.Error.encode(message.error[i], writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim();\n            if (message.child != null && message.child.length)\n                for (let i = 0; i < message.child.length; ++i)\n                    $root.Trace.Node.encode(message.child[i], writer.uint32(/* id 12, wireType 2 =*/98).fork()).ldelim();\n            if (message.parentType != null && Object.hasOwnProperty.call(message, \"parentType\"))\n                writer.uint32(/* id 13, wireType 2 =*/106).string(message.parentType);\n            if (message.originalFieldName != null && Object.hasOwnProperty.call(message, \"originalFieldName\"))\n                writer.uint32(/* id 14, wireType 2 =*/114).string(message.originalFieldName);\n            return writer;\n        };\n\n        /**\n         * Encodes the specified Node message, length delimited. Does not implicitly {@link Trace.Node.verify|verify} messages.\n         * @function encodeDelimited\n         * @memberof Trace.Node\n         * @static\n         * @param {Trace.INode} message Node message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        Node.encodeDelimited = function encodeDelimited(message, writer) {\n            return this.encode(message, writer).ldelim();\n        };\n\n        /**\n         * Decodes a Node message from the specified reader or buffer.\n         * @function decode\n         * @memberof Trace.Node\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {Trace.Node} Node\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        Node.decode = function decode(reader, length) {\n            if (!(reader instanceof $Reader))\n                reader = $Reader.create(reader);\n            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.Node();\n            while (reader.pos < end) {\n                let tag = reader.uint32();\n                switch (tag >>> 3) {\n                case 1:\n                    message.responseName = reader.string();\n                    break;\n                case 2:\n                    message.index = reader.uint32();\n                    break;\n                case 14:\n                    message.originalFieldName = reader.string();\n                    break;\n                case 3:\n                    message.type = reader.string();\n                    break;\n                case 13:\n                    message.parentType = reader.string();\n                    break;\n                case 5:\n                    message.cachePolicy = $root.Trace.CachePolicy.decode(reader, reader.uint32());\n                    break;\n                case 8:\n                    message.startTime = reader.uint64();\n                    break;\n                case 9:\n                    message.endTime = reader.uint64();\n                    break;\n                case 11:\n                    if (!(message.error && message.error.length))\n                        message.error = [];\n                    message.error.push($root.Trace.Error.decode(reader, reader.uint32()));\n                    break;\n                case 12:\n                    if (!(message.child && message.child.length))\n                        message.child = [];\n                    message.child.push($root.Trace.Node.decode(reader, reader.uint32()));\n                    break;\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n                }\n            }\n            return message;\n        };\n\n        /**\n         * Decodes a Node message from the specified reader or buffer, length delimited.\n         * @function decodeDelimited\n         * @memberof Trace.Node\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @returns {Trace.Node} Node\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        Node.decodeDelimited = function decodeDelimited(reader) {\n            if (!(reader instanceof $Reader))\n                reader = new $Reader(reader);\n            return this.decode(reader, reader.uint32());\n        };\n\n        /**\n         * Verifies a Node message.\n         * @function verify\n         * @memberof Trace.Node\n         * @static\n         * @param {Object.<string,*>} message Plain object to verify\n         * @returns {string|null} `null` if valid, otherwise the reason why it is not\n         */\n        Node.verify = function verify(message) {\n            if (typeof message !== \"object\" || message === null)\n                return \"object expected\";\n            let properties = {};\n            if (message.responseName != null && message.hasOwnProperty(\"responseName\")) {\n                properties.id = 1;\n                if (!$util.isString(message.responseName))\n                    return \"responseName: string expected\";\n            }\n            if (message.index != null && message.hasOwnProperty(\"index\")) {\n                if (properties.id === 1)\n                    return \"id: multiple values\";\n                properties.id = 1;\n                if (!$util.isInteger(message.index))\n                    return \"index: integer expected\";\n            }\n            if (message.originalFieldName != null && message.hasOwnProperty(\"originalFieldName\"))\n                if (!$util.isString(message.originalFieldName))\n                    return \"originalFieldName: string expected\";\n            if (message.type != null && message.hasOwnProperty(\"type\"))\n                if (!$util.isString(message.type))\n                    return \"type: string expected\";\n            if (message.parentType != null && message.hasOwnProperty(\"parentType\"))\n                if (!$util.isString(message.parentType))\n                    return \"parentType: string expected\";\n            if (message.cachePolicy != null && message.hasOwnProperty(\"cachePolicy\")) {\n                let error = $root.Trace.CachePolicy.verify(message.cachePolicy);\n                if (error)\n                    return \"cachePolicy.\" + error;\n            }\n            if (message.startTime != null && message.hasOwnProperty(\"startTime\"))\n                if (!$util.isInteger(message.startTime) && !(message.startTime && $util.isInteger(message.startTime.low) && $util.isInteger(message.startTime.high)))\n                    return \"startTime: integer|Long expected\";\n            if (message.endTime != null && message.hasOwnProperty(\"endTime\"))\n                if (!$util.isInteger(message.endTime) && !(message.endTime && $util.isInteger(message.endTime.low) && $util.isInteger(message.endTime.high)))\n                    return \"endTime: integer|Long expected\";\n            if (message.error != null && message.hasOwnProperty(\"error\")) {\n                if (!Array.isArray(message.error))\n                    return \"error: array expected\";\n                for (let i = 0; i < message.error.length; ++i) {\n                    let error = $root.Trace.Error.verify(message.error[i]);\n                    if (error)\n                        return \"error.\" + error;\n                }\n            }\n            if (message.child != null && message.hasOwnProperty(\"child\")) {\n                if (!Array.isArray(message.child))\n                    return \"child: array expected\";\n                for (let i = 0; i < message.child.length; ++i) {\n                    let error = $root.Trace.Node.verify(message.child[i]);\n                    if (error)\n                        return \"child.\" + error;\n                }\n            }\n            return null;\n        };\n\n        /**\n         * Creates a plain object from a Node message. Also converts values to other types if specified.\n         * @function toObject\n         * @memberof Trace.Node\n         * @static\n         * @param {Trace.Node} message Node\n         * @param {$protobuf.IConversionOptions} [options] Conversion options\n         * @returns {Object.<string,*>} Plain object\n         */\n        Node.toObject = function toObject(message, options) {\n            if (!options)\n                options = {};\n            let object = {};\n            if (options.arrays || options.defaults) {\n                object.error = [];\n                object.child = [];\n            }\n            if (options.defaults) {\n                object.type = \"\";\n                object.cachePolicy = null;\n                object.startTime = 0;\n                object.endTime = 0;\n                object.parentType = \"\";\n                object.originalFieldName = \"\";\n            }\n            if (message.responseName != null && message.hasOwnProperty(\"responseName\")) {\n                object.responseName = message.responseName;\n                if (options.oneofs)\n                    object.id = \"responseName\";\n            }\n            if (message.index != null && message.hasOwnProperty(\"index\")) {\n                object.index = message.index;\n                if (options.oneofs)\n                    object.id = \"index\";\n            }\n            if (message.type != null && message.hasOwnProperty(\"type\"))\n                object.type = message.type;\n            if (message.cachePolicy != null && message.hasOwnProperty(\"cachePolicy\"))\n                object.cachePolicy = $root.Trace.CachePolicy.toObject(message.cachePolicy, options);\n            if (message.startTime != null && message.hasOwnProperty(\"startTime\"))\n                if (typeof message.startTime === \"number\")\n                    object.startTime = options.longs === String ? String(message.startTime) : message.startTime;\n                else\n                    object.startTime = options.longs === String ? $util.Long.prototype.toString.call(message.startTime) : options.longs === Number ? new $util.LongBits(message.startTime.low >>> 0, message.startTime.high >>> 0).toNumber(true) : message.startTime;\n            if (message.endTime != null && message.hasOwnProperty(\"endTime\"))\n                if (typeof message.endTime === \"number\")\n                    object.endTime = options.longs === String ? String(message.endTime) : message.endTime;\n                else\n                    object.endTime = options.longs === String ? $util.Long.prototype.toString.call(message.endTime) : options.longs === Number ? new $util.LongBits(message.endTime.low >>> 0, message.endTime.high >>> 0).toNumber(true) : message.endTime;\n            if (message.error && message.error.length) {\n                object.error = [];\n                for (let j = 0; j < message.error.length; ++j)\n                    object.error[j] = $root.Trace.Error.toObject(message.error[j], options);\n            }\n            if (message.child && message.child.length) {\n                object.child = [];\n                for (let j = 0; j < message.child.length; ++j)\n                    object.child[j] = $root.Trace.Node.toObject(message.child[j], options);\n            }\n            if (message.parentType != null && message.hasOwnProperty(\"parentType\"))\n                object.parentType = message.parentType;\n            if (message.originalFieldName != null && message.hasOwnProperty(\"originalFieldName\"))\n                object.originalFieldName = message.originalFieldName;\n            return object;\n        };\n\n        /**\n         * Converts this Node to JSON.\n         * @function toJSON\n         * @memberof Trace.Node\n         * @instance\n         * @returns {Object.<string,*>} JSON object\n         */\n        Node.prototype.toJSON = function toJSON() {\n            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n        };\n\n        return Node;\n    })();\n\n    Trace.QueryPlanNode = (function() {\n\n        /**\n         * Properties of a QueryPlanNode.\n         * @memberof Trace\n         * @interface IQueryPlanNode\n         * @property {Trace.QueryPlanNode.ISequenceNode|null} [sequence] QueryPlanNode sequence\n         * @property {Trace.QueryPlanNode.IParallelNode|null} [parallel] QueryPlanNode parallel\n         * @property {Trace.QueryPlanNode.IFetchNode|null} [fetch] QueryPlanNode fetch\n         * @property {Trace.QueryPlanNode.IFlattenNode|null} [flatten] QueryPlanNode flatten\n         * @property {Trace.QueryPlanNode.IDeferNode|null} [defer] QueryPlanNode defer\n         * @property {Trace.QueryPlanNode.IConditionNode|null} [condition] QueryPlanNode condition\n         */\n\n        /**\n         * Constructs a new QueryPlanNode.\n         * @memberof Trace\n         * @classdesc Represents a QueryPlanNode.\n         * @implements IQueryPlanNode\n         * @constructor\n         * @param {Trace.IQueryPlanNode=} [properties] Properties to set\n         */\n        function QueryPlanNode(properties) {\n            if (properties)\n                for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                    if (properties[keys[i]] != null)\n                        this[keys[i]] = properties[keys[i]];\n        }\n\n        /**\n         * QueryPlanNode sequence.\n         * @member {Trace.QueryPlanNode.ISequenceNode|null|undefined} sequence\n         * @memberof Trace.QueryPlanNode\n         * @instance\n         */\n        QueryPlanNode.prototype.sequence = null;\n\n        /**\n         * QueryPlanNode parallel.\n         * @member {Trace.QueryPlanNode.IParallelNode|null|undefined} parallel\n         * @memberof Trace.QueryPlanNode\n         * @instance\n         */\n        QueryPlanNode.prototype.parallel = null;\n\n        /**\n         * QueryPlanNode fetch.\n         * @member {Trace.QueryPlanNode.IFetchNode|null|undefined} fetch\n         * @memberof Trace.QueryPlanNode\n         * @instance\n         */\n        QueryPlanNode.prototype.fetch = null;\n\n        /**\n         * QueryPlanNode flatten.\n         * @member {Trace.QueryPlanNode.IFlattenNode|null|undefined} flatten\n         * @memberof Trace.QueryPlanNode\n         * @instance\n         */\n        QueryPlanNode.prototype.flatten = null;\n\n        /**\n         * QueryPlanNode defer.\n         * @member {Trace.QueryPlanNode.IDeferNode|null|undefined} defer\n         * @memberof Trace.QueryPlanNode\n         * @instance\n         */\n        QueryPlanNode.prototype.defer = null;\n\n        /**\n         * QueryPlanNode condition.\n         * @member {Trace.QueryPlanNode.IConditionNode|null|undefined} condition\n         * @memberof Trace.QueryPlanNode\n         * @instance\n         */\n        QueryPlanNode.prototype.condition = null;\n\n        // OneOf field names bound to virtual getters and setters\n        let $oneOfFields;\n\n        /**\n         * QueryPlanNode node.\n         * @member {\"sequence\"|\"parallel\"|\"fetch\"|\"flatten\"|\"defer\"|\"condition\"|undefined} node\n         * @memberof Trace.QueryPlanNode\n         * @instance\n         */\n        Object.defineProperty(QueryPlanNode.prototype, \"node\", {\n            get: $util.oneOfGetter($oneOfFields = [\"sequence\", \"parallel\", \"fetch\", \"flatten\", \"defer\", \"condition\"]),\n            set: $util.oneOfSetter($oneOfFields)\n        });\n\n        /**\n         * Creates a new QueryPlanNode instance using the specified properties.\n         * @function create\n         * @memberof Trace.QueryPlanNode\n         * @static\n         * @param {Trace.IQueryPlanNode=} [properties] Properties to set\n         * @returns {Trace.QueryPlanNode} QueryPlanNode instance\n         */\n        QueryPlanNode.create = function create(properties) {\n            return new QueryPlanNode(properties);\n        };\n\n        /**\n         * Encodes the specified QueryPlanNode message. Does not implicitly {@link Trace.QueryPlanNode.verify|verify} messages.\n         * @function encode\n         * @memberof Trace.QueryPlanNode\n         * @static\n         * @param {Trace.IQueryPlanNode} message QueryPlanNode message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        QueryPlanNode.encode = function encode(message, writer) {\n            if (!writer)\n                writer = $Writer.create();\n            if (message.sequence != null && Object.hasOwnProperty.call(message, \"sequence\"))\n                $root.Trace.QueryPlanNode.SequenceNode.encode(message.sequence, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n            if (message.parallel != null && Object.hasOwnProperty.call(message, \"parallel\"))\n                $root.Trace.QueryPlanNode.ParallelNode.encode(message.parallel, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n            if (message.fetch != null && Object.hasOwnProperty.call(message, \"fetch\"))\n                $root.Trace.QueryPlanNode.FetchNode.encode(message.fetch, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n            if (message.flatten != null && Object.hasOwnProperty.call(message, \"flatten\"))\n                $root.Trace.QueryPlanNode.FlattenNode.encode(message.flatten, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();\n            if (message.defer != null && Object.hasOwnProperty.call(message, \"defer\"))\n                $root.Trace.QueryPlanNode.DeferNode.encode(message.defer, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();\n            if (message.condition != null && Object.hasOwnProperty.call(message, \"condition\"))\n                $root.Trace.QueryPlanNode.ConditionNode.encode(message.condition, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n            return writer;\n        };\n\n        /**\n         * Encodes the specified QueryPlanNode message, length delimited. Does not implicitly {@link Trace.QueryPlanNode.verify|verify} messages.\n         * @function encodeDelimited\n         * @memberof Trace.QueryPlanNode\n         * @static\n         * @param {Trace.IQueryPlanNode} message QueryPlanNode message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        QueryPlanNode.encodeDelimited = function encodeDelimited(message, writer) {\n            return this.encode(message, writer).ldelim();\n        };\n\n        /**\n         * Decodes a QueryPlanNode message from the specified reader or buffer.\n         * @function decode\n         * @memberof Trace.QueryPlanNode\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {Trace.QueryPlanNode} QueryPlanNode\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        QueryPlanNode.decode = function decode(reader, length) {\n            if (!(reader instanceof $Reader))\n                reader = $Reader.create(reader);\n            let end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.QueryPlanNode();\n            while (reader.pos < end) {\n                let tag = reader.uint32();\n                switch (tag >>> 3) {\n                case 1:\n                    message.sequence = $root.Trace.QueryPlanNode.SequenceNode.decode(reader, reader.uint32());\n                    break;\n                case 2:\n                    message.parallel = $root.Trace.QueryPlanNode.ParallelNode.decode(reader, reader.uint32());\n                    break;\n                case 3:\n                    message.fetch = $root.Trace.QueryPlanNode.FetchNode.decode(reader, reader.uint32());\n                    break;\n                case 4:\n                    message.flatten = $root.Trace.QueryPlanNode.FlattenNode.decode(reader, reader.uint32());\n                    break;\n                case 5:\n                    message.defer = $root.Trace.QueryPlanNode.DeferNode.decode(reader, reader.uint32());\n                    break;\n                case 6:\n                    message.condition = $root.Trace.QueryPlanNode.ConditionNode.decode(reader, reader.uint32());\n                    break;\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n                }\n            }\n            return message;\n        };\n\n        /**\n         * Decodes a QueryPlanNode message from the specified reader or buffer, length delimited.\n         * @function decodeDelimited\n         * @memberof Trace.QueryPlanNode\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @returns {Trace.QueryPlanNode} QueryPlanNode\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        QueryPlanNode.decodeDelimited = function decodeDelimited(reader) {\n            if (!(reader instanceof $Reader))\n                reader = new $Reader(reader);\n            return this.decode(reader, reader.uint32());\n        };\n\n        /**\n         * Verifies a QueryPlanNode message.\n         * @function verify\n         * @memberof Trace.QueryPlanNode\n         * @static\n         * @param {Object.<string,*>} message Plain object to verify\n         * @returns {string|null} `null` if valid, otherwise the reason why it is not\n         */\n        QueryPlanNode.verify = function verify(message) {\n            if (typeof message !== \"object\" || message === null)\n                return \"object expected\";\n            let properties = {};\n            if (message.sequence != null && message.hasOwnProperty(\"sequence\")) {\n                properties.node = 1;\n                {\n                    let error = $root.Trace.QueryPlanNode.SequenceNode.verify(message.sequence);\n                    if (error)\n                        return \"sequence.\" + error;\n                }\n            }\n            if (message.parallel != null && message.hasOwnProperty(\"parallel\")) {\n                if (properties.node === 1)\n                    return \"node: multiple values\";\n                properties.node = 1;\n                {\n                    let error = $root.Trace.QueryPlanNode.ParallelNode.verify(message.parallel);\n                    if (error)\n                        return \"parallel.\" + error;\n                }\n            }\n            if (message.fetch != null && message.hasOwnProperty(\"fetch\")) {\n                if (properties.node === 1)\n                    return \"node: multiple values\";\n                properties.node = 1;\n                {\n                    let error = $root.Trace.QueryPlanNode.FetchNode.verify(message.fetch);\n                    if (error)\n                        return \"fetch.\" + error;\n                }\n            }\n            if (message.flatten != null && message.hasOwnProperty(\"flatten\")) {\n                if (properties.node === 1)\n                    return \"node: multiple values\";\n                properties.node = 1;\n                {\n                    let error = $root.Trace.QueryPlanNode.FlattenNode.verify(message.flatten);\n                    if (error)\n                        return \"flatten.\" + error;\n                }\n            }\n            if (message.defer != null && message.hasOwnProperty(\"defer\")) {\n                if (properties.node === 1)\n                    return \"node: multiple values\";\n                properties.node = 1;\n                {\n                    let error = $root.Trace.QueryPlanNode.DeferNode.verify(message.defer);\n                    if (error)\n                        return \"defer.\" + error;\n                }\n            }\n            if (message.condition != null && message.hasOwnProperty(\"condition\")) {\n                if (properties.node === 1)\n                    return \"node: multiple values\";\n                properties.node = 1;\n                {\n                    let error = $root.Trace.QueryPlanNode.ConditionNode.verify(message.condition);\n                    if (error)\n                        return \"condition.\" + error;\n                }\n            }\n            return null;\n        };\n\n        /**\n         * Creates a plain object from a QueryPlanNode message. Also converts values to other types if specified.\n         * @function toObject\n         * @memberof Trace.QueryPlanNode\n         * @static\n         * @param {Trace.QueryPlanNode} message QueryPlanNode\n         * @param {$protobuf.IConversionOptions} [options] Conversion options\n         * @returns {Object.<string,*>} Plain object\n         */\n        QueryPlanNode.toObject = function toObject(message, options) {\n            if (!options)\n                options = {};\n            let object = {};\n            if (message.sequence != null && message.hasOwnProperty(\"sequence\")) {\n                object.sequence = $root.Trace.QueryPlanNode.SequenceNode.toObject(message.sequence, options);\n                if (options.oneofs)\n                    object.node = \"sequence\";\n            }\n            if (message.parallel != null && message.hasOwnProperty(\"parallel\")) {\n                object.parallel = $root.Trace.QueryPlanNode.ParallelNode.toObject(message.parallel, options);\n                if (options.oneofs)\n                    object.node = \"parallel\";\n            }\n            if (message.fetch != null && message.hasOwnProperty(\"fetch\")) {\n                object.fetch = $root.Trace.QueryPlanNode.FetchNode.toObject(message.fetch, options);\n                if (options.oneofs)\n                    object.node = \"fetch\";\n            }\n            if (message.flatten != null && message.hasOwnProperty(\"flatten\")) {\n                object.flatten = $root.Trace.QueryPlanNode.FlattenNode.toObject(message.flatten, options);\n                if (options.oneofs)\n                    object.node = \"flatten\";\n            }\n            if (message.defer != null && message.hasOwnProperty(\"defer\")) {\n                object.defer = $root.Trace.QueryPlanNode.DeferNode.toObject(message.defer, options);\n                if (options.oneofs)\n                    object.node = \"defer\";\n            }\n            if (message.condition != null && message.hasOwnProperty(\"condition\")) {\n                object.condition = $root.Trace.QueryPlanNode.ConditionNode.toObject(message.condition, options);\n                if (options.oneofs)\n                    object.node = \"condition\";\n            }\n            return object;\n        };\n\n        /**\n         * Converts this QueryPlanNode to JSON.\n         * @function toJSON\n         * @memberof Trace.QueryPlanNode\n         * @instance\n         * @returns {Object.<string,*>} JSON object\n         */\n        QueryPlanNode.prototype.toJSON = function toJSON() {\n            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n        };\n\n        QueryPlanNode.SequenceNode = (function() {\n\n            /**\n             * Properties of a SequenceNode.\n             * @memberof Trace.QueryPlanNode\n             * @interface ISequenceNode\n             * @property {Array.<Trace.IQueryPlanNode>|null} [nodes] SequenceNode nodes\n             */\n\n            /**\n             * Constructs a new SequenceNode.\n             * @memberof Trace.QueryPlanNode\n             * @classdesc Represents a SequenceNode.\n             * @implements ISequenceNode\n             * @constructor\n             * @param {Trace.QueryPlanNode.ISequenceNode=} [properties] Properties to set\n             */\n            function SequenceNode(properties) {\n                this.nodes = [];\n                if (properties)\n                    for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                        if (properties[keys[i]] != null)\n                            this[keys[i]] = properties[keys[i]];\n            }\n\n            /**\n             * SequenceNode nodes.\n             * @member {Array.<Trace.IQueryPlanNode>} nodes\n             * @memberof Trace.QueryPlanNode.SequenceNode\n             * @instance\n             */\n            SequenceNode.prototype.nodes = $util.emptyArray;\n\n            /**\n             * Creates a new SequenceNode instance using the specified properties.\n             * @function create\n             * @memberof Trace.QueryPlanNode.SequenceNode\n             * @static\n             * @param {Trace.QueryPlanNode.ISequenceNode=} [properties] Properties to set\n             * @returns {Trace.QueryPlanNode.SequenceNode} SequenceNode instance\n             */\n            SequenceNode.create = function create(properties) {\n                return new SequenceNode(properties);\n            };\n\n            /**\n             * Encodes the specified SequenceNode message. Does not implicitly {@link Trace.QueryPlanNode.SequenceNode.verify|verify} messages.\n             * @function encode\n             * @memberof Trace.QueryPlanNode.SequenceNode\n             * @static\n             * @param {Trace.QueryPlanNode.ISequenceNode} message SequenceNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            SequenceNode.encode = function encode(message, writer) {\n                if (!writer)\n                    writer = $Writer.create();\n                if (message.nodes != null && message.nodes.length)\n                    for (let i = 0; i < message.nodes.length; ++i)\n                        $root.Trace.QueryPlanNode.encode(message.nodes[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n                return writer;\n            };\n\n            /**\n             * Encodes the specified SequenceNode message, length delimited. Does not implicitly {@link Trace.QueryPlanNode.SequenceNode.verify|verify} messages.\n             * @function encodeDelimited\n             * @memberof Trace.QueryPlanNode.SequenceNode\n             * @static\n             * @param {Trace.QueryPlanNode.ISequenceNode} message SequenceNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            SequenceNode.encodeDelimited = function encodeDelimited(message, writer) {\n                return this.encode(message, writer).ldelim();\n            };\n\n            /**\n             * Decodes a SequenceNode message from the specified reader or buffer.\n             * @function decode\n             * @memberof Trace.QueryPlanNode.SequenceNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @param {number} [length] Message length if known beforehand\n             * @returns {Trace.QueryPlanNode.SequenceNode} SequenceNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            SequenceNode.decode = function decode(reader, length) {\n                if (!(reader instanceof $Reader))\n                    reader = $Reader.create(reader);\n                let end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.QueryPlanNode.SequenceNode();\n                while (reader.pos < end) {\n                    let tag = reader.uint32();\n                    switch (tag >>> 3) {\n                    case 1:\n                        if (!(message.nodes && message.nodes.length))\n                            message.nodes = [];\n                        message.nodes.push($root.Trace.QueryPlanNode.decode(reader, reader.uint32()));\n                        break;\n                    default:\n                        reader.skipType(tag & 7);\n                        break;\n                    }\n                }\n                return message;\n            };\n\n            /**\n             * Decodes a SequenceNode message from the specified reader or buffer, length delimited.\n             * @function decodeDelimited\n             * @memberof Trace.QueryPlanNode.SequenceNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @returns {Trace.QueryPlanNode.SequenceNode} SequenceNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            SequenceNode.decodeDelimited = function decodeDelimited(reader) {\n                if (!(reader instanceof $Reader))\n                    reader = new $Reader(reader);\n                return this.decode(reader, reader.uint32());\n            };\n\n            /**\n             * Verifies a SequenceNode message.\n             * @function verify\n             * @memberof Trace.QueryPlanNode.SequenceNode\n             * @static\n             * @param {Object.<string,*>} message Plain object to verify\n             * @returns {string|null} `null` if valid, otherwise the reason why it is not\n             */\n            SequenceNode.verify = function verify(message) {\n                if (typeof message !== \"object\" || message === null)\n                    return \"object expected\";\n                if (message.nodes != null && message.hasOwnProperty(\"nodes\")) {\n                    if (!Array.isArray(message.nodes))\n                        return \"nodes: array expected\";\n                    for (let i = 0; i < message.nodes.length; ++i) {\n                        let error = $root.Trace.QueryPlanNode.verify(message.nodes[i]);\n                        if (error)\n                            return \"nodes.\" + error;\n                    }\n                }\n                return null;\n            };\n\n            /**\n             * Creates a plain object from a SequenceNode message. Also converts values to other types if specified.\n             * @function toObject\n             * @memberof Trace.QueryPlanNode.SequenceNode\n             * @static\n             * @param {Trace.QueryPlanNode.SequenceNode} message SequenceNode\n             * @param {$protobuf.IConversionOptions} [options] Conversion options\n             * @returns {Object.<string,*>} Plain object\n             */\n            SequenceNode.toObject = function toObject(message, options) {\n                if (!options)\n                    options = {};\n                let object = {};\n                if (options.arrays || options.defaults)\n                    object.nodes = [];\n                if (message.nodes && message.nodes.length) {\n                    object.nodes = [];\n                    for (let j = 0; j < message.nodes.length; ++j)\n                        object.nodes[j] = $root.Trace.QueryPlanNode.toObject(message.nodes[j], options);\n                }\n                return object;\n            };\n\n            /**\n             * Converts this SequenceNode to JSON.\n             * @function toJSON\n             * @memberof Trace.QueryPlanNode.SequenceNode\n             * @instance\n             * @returns {Object.<string,*>} JSON object\n             */\n            SequenceNode.prototype.toJSON = function toJSON() {\n                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n            };\n\n            return SequenceNode;\n        })();\n\n        QueryPlanNode.ParallelNode = (function() {\n\n            /**\n             * Properties of a ParallelNode.\n             * @memberof Trace.QueryPlanNode\n             * @interface IParallelNode\n             * @property {Array.<Trace.IQueryPlanNode>|null} [nodes] ParallelNode nodes\n             */\n\n            /**\n             * Constructs a new ParallelNode.\n             * @memberof Trace.QueryPlanNode\n             * @classdesc Represents a ParallelNode.\n             * @implements IParallelNode\n             * @constructor\n             * @param {Trace.QueryPlanNode.IParallelNode=} [properties] Properties to set\n             */\n            function ParallelNode(properties) {\n                this.nodes = [];\n                if (properties)\n                    for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                        if (properties[keys[i]] != null)\n                            this[keys[i]] = properties[keys[i]];\n            }\n\n            /**\n             * ParallelNode nodes.\n             * @member {Array.<Trace.IQueryPlanNode>} nodes\n             * @memberof Trace.QueryPlanNode.ParallelNode\n             * @instance\n             */\n            ParallelNode.prototype.nodes = $util.emptyArray;\n\n            /**\n             * Creates a new ParallelNode instance using the specified properties.\n             * @function create\n             * @memberof Trace.QueryPlanNode.ParallelNode\n             * @static\n             * @param {Trace.QueryPlanNode.IParallelNode=} [properties] Properties to set\n             * @returns {Trace.QueryPlanNode.ParallelNode} ParallelNode instance\n             */\n            ParallelNode.create = function create(properties) {\n                return new ParallelNode(properties);\n            };\n\n            /**\n             * Encodes the specified ParallelNode message. Does not implicitly {@link Trace.QueryPlanNode.ParallelNode.verify|verify} messages.\n             * @function encode\n             * @memberof Trace.QueryPlanNode.ParallelNode\n             * @static\n             * @param {Trace.QueryPlanNode.IParallelNode} message ParallelNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            ParallelNode.encode = function encode(message, writer) {\n                if (!writer)\n                    writer = $Writer.create();\n                if (message.nodes != null && message.nodes.length)\n                    for (let i = 0; i < message.nodes.length; ++i)\n                        $root.Trace.QueryPlanNode.encode(message.nodes[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n                return writer;\n            };\n\n            /**\n             * Encodes the specified ParallelNode message, length delimited. Does not implicitly {@link Trace.QueryPlanNode.ParallelNode.verify|verify} messages.\n             * @function encodeDelimited\n             * @memberof Trace.QueryPlanNode.ParallelNode\n             * @static\n             * @param {Trace.QueryPlanNode.IParallelNode} message ParallelNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            ParallelNode.encodeDelimited = function encodeDelimited(message, writer) {\n                return this.encode(message, writer).ldelim();\n            };\n\n            /**\n             * Decodes a ParallelNode message from the specified reader or buffer.\n             * @function decode\n             * @memberof Trace.QueryPlanNode.ParallelNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @param {number} [length] Message length if known beforehand\n             * @returns {Trace.QueryPlanNode.ParallelNode} ParallelNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            ParallelNode.decode = function decode(reader, length) {\n                if (!(reader instanceof $Reader))\n                    reader = $Reader.create(reader);\n                let end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.QueryPlanNode.ParallelNode();\n                while (reader.pos < end) {\n                    let tag = reader.uint32();\n                    switch (tag >>> 3) {\n                    case 1:\n                        if (!(message.nodes && message.nodes.length))\n                            message.nodes = [];\n                        message.nodes.push($root.Trace.QueryPlanNode.decode(reader, reader.uint32()));\n                        break;\n                    default:\n                        reader.skipType(tag & 7);\n                        break;\n                    }\n                }\n                return message;\n            };\n\n            /**\n             * Decodes a ParallelNode message from the specified reader or buffer, length delimited.\n             * @function decodeDelimited\n             * @memberof Trace.QueryPlanNode.ParallelNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @returns {Trace.QueryPlanNode.ParallelNode} ParallelNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            ParallelNode.decodeDelimited = function decodeDelimited(reader) {\n                if (!(reader instanceof $Reader))\n                    reader = new $Reader(reader);\n                return this.decode(reader, reader.uint32());\n            };\n\n            /**\n             * Verifies a ParallelNode message.\n             * @function verify\n             * @memberof Trace.QueryPlanNode.ParallelNode\n             * @static\n             * @param {Object.<string,*>} message Plain object to verify\n             * @returns {string|null} `null` if valid, otherwise the reason why it is not\n             */\n            ParallelNode.verify = function verify(message) {\n                if (typeof message !== \"object\" || message === null)\n                    return \"object expected\";\n                if (message.nodes != null && message.hasOwnProperty(\"nodes\")) {\n                    if (!Array.isArray(message.nodes))\n                        return \"nodes: array expected\";\n                    for (let i = 0; i < message.nodes.length; ++i) {\n                        let error = $root.Trace.QueryPlanNode.verify(message.nodes[i]);\n                        if (error)\n                            return \"nodes.\" + error;\n                    }\n                }\n                return null;\n            };\n\n            /**\n             * Creates a plain object from a ParallelNode message. Also converts values to other types if specified.\n             * @function toObject\n             * @memberof Trace.QueryPlanNode.ParallelNode\n             * @static\n             * @param {Trace.QueryPlanNode.ParallelNode} message ParallelNode\n             * @param {$protobuf.IConversionOptions} [options] Conversion options\n             * @returns {Object.<string,*>} Plain object\n             */\n            ParallelNode.toObject = function toObject(message, options) {\n                if (!options)\n                    options = {};\n                let object = {};\n                if (options.arrays || options.defaults)\n                    object.nodes = [];\n                if (message.nodes && message.nodes.length) {\n                    object.nodes = [];\n                    for (let j = 0; j < message.nodes.length; ++j)\n                        object.nodes[j] = $root.Trace.QueryPlanNode.toObject(message.nodes[j], options);\n                }\n                return object;\n            };\n\n            /**\n             * Converts this ParallelNode to JSON.\n             * @function toJSON\n             * @memberof Trace.QueryPlanNode.ParallelNode\n             * @instance\n             * @returns {Object.<string,*>} JSON object\n             */\n            ParallelNode.prototype.toJSON = function toJSON() {\n                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n            };\n\n            return ParallelNode;\n        })();\n\n        QueryPlanNode.FetchNode = (function() {\n\n            /**\n             * Properties of a FetchNode.\n             * @memberof Trace.QueryPlanNode\n             * @interface IFetchNode\n             * @property {string|null} [serviceName] FetchNode serviceName\n             * @property {boolean|null} [traceParsingFailed] FetchNode traceParsingFailed\n             * @property {ITrace|null} [trace] FetchNode trace\n             * @property {number|null} [sentTimeOffset] FetchNode sentTimeOffset\n             * @property {google.protobuf.ITimestamp|null} [sentTime] FetchNode sentTime\n             * @property {google.protobuf.ITimestamp|null} [receivedTime] FetchNode receivedTime\n             */\n\n            /**\n             * Constructs a new FetchNode.\n             * @memberof Trace.QueryPlanNode\n             * @classdesc Represents a FetchNode.\n             * @implements IFetchNode\n             * @constructor\n             * @param {Trace.QueryPlanNode.IFetchNode=} [properties] Properties to set\n             */\n            function FetchNode(properties) {\n                if (properties)\n                    for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                        if (properties[keys[i]] != null)\n                            this[keys[i]] = properties[keys[i]];\n            }\n\n            /**\n             * FetchNode serviceName.\n             * @member {string} serviceName\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @instance\n             */\n            FetchNode.prototype.serviceName = \"\";\n\n            /**\n             * FetchNode traceParsingFailed.\n             * @member {boolean} traceParsingFailed\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @instance\n             */\n            FetchNode.prototype.traceParsingFailed = false;\n\n            /**\n             * FetchNode trace.\n             * @member {ITrace|null|undefined} trace\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @instance\n             */\n            FetchNode.prototype.trace = null;\n\n            /**\n             * FetchNode sentTimeOffset.\n             * @member {number} sentTimeOffset\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @instance\n             */\n            FetchNode.prototype.sentTimeOffset = 0;\n\n            /**\n             * FetchNode sentTime.\n             * @member {google.protobuf.ITimestamp|null|undefined} sentTime\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @instance\n             */\n            FetchNode.prototype.sentTime = null;\n\n            /**\n             * FetchNode receivedTime.\n             * @member {google.protobuf.ITimestamp|null|undefined} receivedTime\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @instance\n             */\n            FetchNode.prototype.receivedTime = null;\n\n            /**\n             * Creates a new FetchNode instance using the specified properties.\n             * @function create\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @static\n             * @param {Trace.QueryPlanNode.IFetchNode=} [properties] Properties to set\n             * @returns {Trace.QueryPlanNode.FetchNode} FetchNode instance\n             */\n            FetchNode.create = function create(properties) {\n                return new FetchNode(properties);\n            };\n\n            /**\n             * Encodes the specified FetchNode message. Does not implicitly {@link Trace.QueryPlanNode.FetchNode.verify|verify} messages.\n             * @function encode\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @static\n             * @param {Trace.QueryPlanNode.IFetchNode} message FetchNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            FetchNode.encode = function encode(message, writer) {\n                if (!writer)\n                    writer = $Writer.create();\n                if (message.serviceName != null && Object.hasOwnProperty.call(message, \"serviceName\"))\n                    writer.uint32(/* id 1, wireType 2 =*/10).string(message.serviceName);\n                if (message.traceParsingFailed != null && Object.hasOwnProperty.call(message, \"traceParsingFailed\"))\n                    writer.uint32(/* id 2, wireType 0 =*/16).bool(message.traceParsingFailed);\n                if (message.trace != null && Object.hasOwnProperty.call(message, \"trace\"))\n                    $root.Trace.encode(message.trace, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n                if (message.sentTimeOffset != null && Object.hasOwnProperty.call(message, \"sentTimeOffset\"))\n                    writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.sentTimeOffset);\n                if (message.sentTime != null && Object.hasOwnProperty.call(message, \"sentTime\"))\n                    $root.google.protobuf.Timestamp.encode(message.sentTime, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();\n                if (message.receivedTime != null && Object.hasOwnProperty.call(message, \"receivedTime\"))\n                    $root.google.protobuf.Timestamp.encode(message.receivedTime, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n                return writer;\n            };\n\n            /**\n             * Encodes the specified FetchNode message, length delimited. Does not implicitly {@link Trace.QueryPlanNode.FetchNode.verify|verify} messages.\n             * @function encodeDelimited\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @static\n             * @param {Trace.QueryPlanNode.IFetchNode} message FetchNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            FetchNode.encodeDelimited = function encodeDelimited(message, writer) {\n                return this.encode(message, writer).ldelim();\n            };\n\n            /**\n             * Decodes a FetchNode message from the specified reader or buffer.\n             * @function decode\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @param {number} [length] Message length if known beforehand\n             * @returns {Trace.QueryPlanNode.FetchNode} FetchNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            FetchNode.decode = function decode(reader, length) {\n                if (!(reader instanceof $Reader))\n                    reader = $Reader.create(reader);\n                let end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.QueryPlanNode.FetchNode();\n                while (reader.pos < end) {\n                    let tag = reader.uint32();\n                    switch (tag >>> 3) {\n                    case 1:\n                        message.serviceName = reader.string();\n                        break;\n                    case 2:\n                        message.traceParsingFailed = reader.bool();\n                        break;\n                    case 3:\n                        message.trace = $root.Trace.decode(reader, reader.uint32());\n                        break;\n                    case 4:\n                        message.sentTimeOffset = reader.uint64();\n                        break;\n                    case 5:\n                        message.sentTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());\n                        break;\n                    case 6:\n                        message.receivedTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());\n                        break;\n                    default:\n                        reader.skipType(tag & 7);\n                        break;\n                    }\n                }\n                return message;\n            };\n\n            /**\n             * Decodes a FetchNode message from the specified reader or buffer, length delimited.\n             * @function decodeDelimited\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @returns {Trace.QueryPlanNode.FetchNode} FetchNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            FetchNode.decodeDelimited = function decodeDelimited(reader) {\n                if (!(reader instanceof $Reader))\n                    reader = new $Reader(reader);\n                return this.decode(reader, reader.uint32());\n            };\n\n            /**\n             * Verifies a FetchNode message.\n             * @function verify\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @static\n             * @param {Object.<string,*>} message Plain object to verify\n             * @returns {string|null} `null` if valid, otherwise the reason why it is not\n             */\n            FetchNode.verify = function verify(message) {\n                if (typeof message !== \"object\" || message === null)\n                    return \"object expected\";\n                if (message.serviceName != null && message.hasOwnProperty(\"serviceName\"))\n                    if (!$util.isString(message.serviceName))\n                        return \"serviceName: string expected\";\n                if (message.traceParsingFailed != null && message.hasOwnProperty(\"traceParsingFailed\"))\n                    if (typeof message.traceParsingFailed !== \"boolean\")\n                        return \"traceParsingFailed: boolean expected\";\n                if (message.trace != null && message.hasOwnProperty(\"trace\")) {\n                    let error = $root.Trace.verify(message.trace);\n                    if (error)\n                        return \"trace.\" + error;\n                }\n                if (message.sentTimeOffset != null && message.hasOwnProperty(\"sentTimeOffset\"))\n                    if (!$util.isInteger(message.sentTimeOffset) && !(message.sentTimeOffset && $util.isInteger(message.sentTimeOffset.low) && $util.isInteger(message.sentTimeOffset.high)))\n                        return \"sentTimeOffset: integer|Long expected\";\n                if (message.sentTime != null && message.hasOwnProperty(\"sentTime\")) {\n                    let error = $root.google.protobuf.Timestamp.verify(message.sentTime);\n                    if (error)\n                        return \"sentTime.\" + error;\n                }\n                if (message.receivedTime != null && message.hasOwnProperty(\"receivedTime\")) {\n                    let error = $root.google.protobuf.Timestamp.verify(message.receivedTime);\n                    if (error)\n                        return \"receivedTime.\" + error;\n                }\n                return null;\n            };\n\n            /**\n             * Creates a plain object from a FetchNode message. Also converts values to other types if specified.\n             * @function toObject\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @static\n             * @param {Trace.QueryPlanNode.FetchNode} message FetchNode\n             * @param {$protobuf.IConversionOptions} [options] Conversion options\n             * @returns {Object.<string,*>} Plain object\n             */\n            FetchNode.toObject = function toObject(message, options) {\n                if (!options)\n                    options = {};\n                let object = {};\n                if (options.defaults) {\n                    object.serviceName = \"\";\n                    object.traceParsingFailed = false;\n                    object.trace = null;\n                    object.sentTimeOffset = 0;\n                    object.sentTime = null;\n                    object.receivedTime = null;\n                }\n                if (message.serviceName != null && message.hasOwnProperty(\"serviceName\"))\n                    object.serviceName = message.serviceName;\n                if (message.traceParsingFailed != null && message.hasOwnProperty(\"traceParsingFailed\"))\n                    object.traceParsingFailed = message.traceParsingFailed;\n                if (message.trace != null && message.hasOwnProperty(\"trace\"))\n                    object.trace = $root.Trace.toObject(message.trace, options);\n                if (message.sentTimeOffset != null && message.hasOwnProperty(\"sentTimeOffset\"))\n                    if (typeof message.sentTimeOffset === \"number\")\n                        object.sentTimeOffset = options.longs === String ? String(message.sentTimeOffset) : message.sentTimeOffset;\n                    else\n                        object.sentTimeOffset = options.longs === String ? $util.Long.prototype.toString.call(message.sentTimeOffset) : options.longs === Number ? new $util.LongBits(message.sentTimeOffset.low >>> 0, message.sentTimeOffset.high >>> 0).toNumber(true) : message.sentTimeOffset;\n                if (message.sentTime != null && message.hasOwnProperty(\"sentTime\"))\n                    object.sentTime = $root.google.protobuf.Timestamp.toObject(message.sentTime, options);\n                if (message.receivedTime != null && message.hasOwnProperty(\"receivedTime\"))\n                    object.receivedTime = $root.google.protobuf.Timestamp.toObject(message.receivedTime, options);\n                return object;\n            };\n\n            /**\n             * Converts this FetchNode to JSON.\n             * @function toJSON\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @instance\n             * @returns {Object.<string,*>} JSON object\n             */\n            FetchNode.prototype.toJSON = function toJSON() {\n                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n            };\n\n            return FetchNode;\n        })();\n\n        QueryPlanNode.FlattenNode = (function() {\n\n            /**\n             * Properties of a FlattenNode.\n             * @memberof Trace.QueryPlanNode\n             * @interface IFlattenNode\n             * @property {Array.<Trace.QueryPlanNode.IResponsePathElement>|null} [responsePath] FlattenNode responsePath\n             * @property {Trace.IQueryPlanNode|null} [node] FlattenNode node\n             */\n\n            /**\n             * Constructs a new FlattenNode.\n             * @memberof Trace.QueryPlanNode\n             * @classdesc Represents a FlattenNode.\n             * @implements IFlattenNode\n             * @constructor\n             * @param {Trace.QueryPlanNode.IFlattenNode=} [properties] Properties to set\n             */\n            function FlattenNode(properties) {\n                this.responsePath = [];\n                if (properties)\n                    for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                        if (properties[keys[i]] != null)\n                            this[keys[i]] = properties[keys[i]];\n            }\n\n            /**\n             * FlattenNode responsePath.\n             * @member {Array.<Trace.QueryPlanNode.IResponsePathElement>} responsePath\n             * @memberof Trace.QueryPlanNode.FlattenNode\n             * @instance\n             */\n            FlattenNode.prototype.responsePath = $util.emptyArray;\n\n            /**\n             * FlattenNode node.\n             * @member {Trace.IQueryPlanNode|null|undefined} node\n             * @memberof Trace.QueryPlanNode.FlattenNode\n             * @instance\n             */\n            FlattenNode.prototype.node = null;\n\n            /**\n             * Creates a new FlattenNode instance using the specified properties.\n             * @function create\n             * @memberof Trace.QueryPlanNode.FlattenNode\n             * @static\n             * @param {Trace.QueryPlanNode.IFlattenNode=} [properties] Properties to set\n             * @returns {Trace.QueryPlanNode.FlattenNode} FlattenNode instance\n             */\n            FlattenNode.create = function create(properties) {\n                return new FlattenNode(properties);\n            };\n\n            /**\n             * Encodes the specified FlattenNode message. Does not implicitly {@link Trace.QueryPlanNode.FlattenNode.verify|verify} messages.\n             * @function encode\n             * @memberof Trace.QueryPlanNode.FlattenNode\n             * @static\n             * @param {Trace.QueryPlanNode.IFlattenNode} message FlattenNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            FlattenNode.encode = function encode(message, writer) {\n                if (!writer)\n                    writer = $Writer.create();\n                if (message.responsePath != null && message.responsePath.length)\n                    for (let i = 0; i < message.responsePath.length; ++i)\n                        $root.Trace.QueryPlanNode.ResponsePathElement.encode(message.responsePath[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n                if (message.node != null && Object.hasOwnProperty.call(message, \"node\"))\n                    $root.Trace.QueryPlanNode.encode(message.node, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n                return writer;\n            };\n\n            /**\n             * Encodes the specified FlattenNode message, length delimited. Does not implicitly {@link Trace.QueryPlanNode.FlattenNode.verify|verify} messages.\n             * @function encodeDelimited\n             * @memberof Trace.QueryPlanNode.FlattenNode\n             * @static\n             * @param {Trace.QueryPlanNode.IFlattenNode} message FlattenNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            FlattenNode.encodeDelimited = function encodeDelimited(message, writer) {\n                return this.encode(message, writer).ldelim();\n            };\n\n            /**\n             * Decodes a FlattenNode message from the specified reader or buffer.\n             * @function decode\n             * @memberof Trace.QueryPlanNode.FlattenNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @param {number} [length] Message length if known beforehand\n             * @returns {Trace.QueryPlanNode.FlattenNode} FlattenNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            FlattenNode.decode = function decode(reader, length) {\n                if (!(reader instanceof $Reader))\n                    reader = $Reader.create(reader);\n                let end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.QueryPlanNode.FlattenNode();\n                while (reader.pos < end) {\n                    let tag = reader.uint32();\n                    switch (tag >>> 3) {\n                    case 1:\n                        if (!(message.responsePath && message.responsePath.length))\n                            message.responsePath = [];\n                        message.responsePath.push($root.Trace.QueryPlanNode.ResponsePathElement.decode(reader, reader.uint32()));\n                        break;\n                    case 2:\n                        message.node = $root.Trace.QueryPlanNode.decode(reader, reader.uint32());\n                        break;\n                    default:\n                        reader.skipType(tag & 7);\n                        break;\n                    }\n                }\n                return message;\n            };\n\n            /**\n             * Decodes a FlattenNode message from the specified reader or buffer, length delimited.\n             * @function decodeDelimited\n             * @memberof Trace.QueryPlanNode.FlattenNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @returns {Trace.QueryPlanNode.FlattenNode} FlattenNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            FlattenNode.decodeDelimited = function decodeDelimited(reader) {\n                if (!(reader instanceof $Reader))\n                    reader = new $Reader(reader);\n                return this.decode(reader, reader.uint32());\n            };\n\n            /**\n             * Verifies a FlattenNode message.\n             * @function verify\n             * @memberof Trace.QueryPlanNode.FlattenNode\n             * @static\n             * @param {Object.<string,*>} message Plain object to verify\n             * @returns {string|null} `null` if valid, otherwise the reason why it is not\n             */\n            FlattenNode.verify = function verify(message) {\n                if (typeof message !== \"object\" || message === null)\n                    return \"object expected\";\n                if (message.responsePath != null && message.hasOwnProperty(\"responsePath\")) {\n                    if (!Array.isArray(message.responsePath))\n                        return \"responsePath: array expected\";\n                    for (let i = 0; i < message.responsePath.length; ++i) {\n                        let error = $root.Trace.QueryPlanNode.ResponsePathElement.verify(message.responsePath[i]);\n                        if (error)\n                            return \"responsePath.\" + error;\n                    }\n                }\n                if (message.node != null && message.hasOwnProperty(\"node\")) {\n                    let error = $root.Trace.QueryPlanNode.verify(message.node);\n                    if (error)\n                        return \"node.\" + error;\n                }\n                return null;\n            };\n\n            /**\n             * Creates a plain object from a FlattenNode message. Also converts values to other types if specified.\n             * @function toObject\n             * @memberof Trace.QueryPlanNode.FlattenNode\n             * @static\n             * @param {Trace.QueryPlanNode.FlattenNode} message FlattenNode\n             * @param {$protobuf.IConversionOptions} [options] Conversion options\n             * @returns {Object.<string,*>} Plain object\n             */\n            FlattenNode.toObject = function toObject(message, options) {\n                if (!options)\n                    options = {};\n                let object = {};\n                if (options.arrays || options.defaults)\n                    object.responsePath = [];\n                if (options.defaults)\n                    object.node = null;\n                if (message.responsePath && message.responsePath.length) {\n                    object.responsePath = [];\n                    for (let j = 0; j < message.responsePath.length; ++j)\n                        object.responsePath[j] = $root.Trace.QueryPlanNode.ResponsePathElement.toObject(message.responsePath[j], options);\n                }\n                if (message.node != null && message.hasOwnProperty(\"node\"))\n                    object.node = $root.Trace.QueryPlanNode.toObject(message.node, options);\n                return object;\n            };\n\n            /**\n             * Converts this FlattenNode to JSON.\n             * @function toJSON\n             * @memberof Trace.QueryPlanNode.FlattenNode\n             * @instance\n             * @returns {Object.<string,*>} JSON object\n             */\n            FlattenNode.prototype.toJSON = function toJSON() {\n                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n            };\n\n            return FlattenNode;\n        })();\n\n        QueryPlanNode.DeferNode = (function() {\n\n            /**\n             * Properties of a DeferNode.\n             * @memberof Trace.QueryPlanNode\n             * @interface IDeferNode\n             * @property {Trace.QueryPlanNode.IDeferNodePrimary|null} [primary] DeferNode primary\n             * @property {Array.<Trace.QueryPlanNode.IDeferredNode>|null} [deferred] DeferNode deferred\n             */\n\n            /**\n             * Constructs a new DeferNode.\n             * @memberof Trace.QueryPlanNode\n             * @classdesc Represents a DeferNode.\n             * @implements IDeferNode\n             * @constructor\n             * @param {Trace.QueryPlanNode.IDeferNode=} [properties] Properties to set\n             */\n            function DeferNode(properties) {\n                this.deferred = [];\n                if (properties)\n                    for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                        if (properties[keys[i]] != null)\n                            this[keys[i]] = properties[keys[i]];\n            }\n\n            /**\n             * DeferNode primary.\n             * @member {Trace.QueryPlanNode.IDeferNodePrimary|null|undefined} primary\n             * @memberof Trace.QueryPlanNode.DeferNode\n             * @instance\n             */\n            DeferNode.prototype.primary = null;\n\n            /**\n             * DeferNode deferred.\n             * @member {Array.<Trace.QueryPlanNode.IDeferredNode>} deferred\n             * @memberof Trace.QueryPlanNode.DeferNode\n             * @instance\n             */\n            DeferNode.prototype.deferred = $util.emptyArray;\n\n            /**\n             * Creates a new DeferNode instance using the specified properties.\n             * @function create\n             * @memberof Trace.QueryPlanNode.DeferNode\n             * @static\n             * @param {Trace.QueryPlanNode.IDeferNode=} [properties] Properties to set\n             * @returns {Trace.QueryPlanNode.DeferNode} DeferNode instance\n             */\n            DeferNode.create = function create(properties) {\n                return new DeferNode(properties);\n            };\n\n            /**\n             * Encodes the specified DeferNode message. Does not implicitly {@link Trace.QueryPlanNode.DeferNode.verify|verify} messages.\n             * @function encode\n             * @memberof Trace.QueryPlanNode.DeferNode\n             * @static\n             * @param {Trace.QueryPlanNode.IDeferNode} message DeferNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            DeferNode.encode = function encode(message, writer) {\n                if (!writer)\n                    writer = $Writer.create();\n                if (message.primary != null && Object.hasOwnProperty.call(message, \"primary\"))\n                    $root.Trace.QueryPlanNode.DeferNodePrimary.encode(message.primary, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n                if (message.deferred != null && message.deferred.length)\n                    for (let i = 0; i < message.deferred.length; ++i)\n                        $root.Trace.QueryPlanNode.DeferredNode.encode(message.deferred[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n                return writer;\n            };\n\n            /**\n             * Encodes the specified DeferNode message, length delimited. Does not implicitly {@link Trace.QueryPlanNode.DeferNode.verify|verify} messages.\n             * @function encodeDelimited\n             * @memberof Trace.QueryPlanNode.DeferNode\n             * @static\n             * @param {Trace.QueryPlanNode.IDeferNode} message DeferNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            DeferNode.encodeDelimited = function encodeDelimited(message, writer) {\n                return this.encode(message, writer).ldelim();\n            };\n\n            /**\n             * Decodes a DeferNode message from the specified reader or buffer.\n             * @function decode\n             * @memberof Trace.QueryPlanNode.DeferNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @param {number} [length] Message length if known beforehand\n             * @returns {Trace.QueryPlanNode.DeferNode} DeferNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            DeferNode.decode = function decode(reader, length) {\n                if (!(reader instanceof $Reader))\n                    reader = $Reader.create(reader);\n                let end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.QueryPlanNode.DeferNode();\n                while (reader.pos < end) {\n                    let tag = reader.uint32();\n                    switch (tag >>> 3) {\n                    case 1:\n                        message.primary = $root.Trace.QueryPlanNode.DeferNodePrimary.decode(reader, reader.uint32());\n                        break;\n                    case 2:\n                        if (!(message.deferred && message.deferred.length))\n                            message.deferred = [];\n                        message.deferred.push($root.Trace.QueryPlanNode.DeferredNode.decode(reader, reader.uint32()));\n                        break;\n                    default:\n                        reader.skipType(tag & 7);\n                        break;\n                    }\n                }\n                return message;\n            };\n\n            /**\n             * Decodes a DeferNode message from the specified reader or buffer, length delimited.\n             * @function decodeDelimited\n             * @memberof Trace.QueryPlanNode.DeferNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @returns {Trace.QueryPlanNode.DeferNode} DeferNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            DeferNode.decodeDelimited = function decodeDelimited(reader) {\n                if (!(reader instanceof $Reader))\n                    reader = new $Reader(reader);\n                return this.decode(reader, reader.uint32());\n            };\n\n            /**\n             * Verifies a DeferNode message.\n             * @function verify\n             * @memberof Trace.QueryPlanNode.DeferNode\n             * @static\n             * @param {Object.<string,*>} message Plain object to verify\n             * @returns {string|null} `null` if valid, otherwise the reason why it is not\n             */\n            DeferNode.verify = function verify(message) {\n                if (typeof message !== \"object\" || message === null)\n                    return \"object expected\";\n                if (message.primary != null && message.hasOwnProperty(\"primary\")) {\n                    let error = $root.Trace.QueryPlanNode.DeferNodePrimary.verify(message.primary);\n                    if (error)\n                        return \"primary.\" + error;\n                }\n                if (message.deferred != null && message.hasOwnProperty(\"deferred\")) {\n                    if (!Array.isArray(message.deferred))\n                        return \"deferred: array expected\";\n                    for (let i = 0; i < message.deferred.length; ++i) {\n                        let error = $root.Trace.QueryPlanNode.DeferredNode.verify(message.deferred[i]);\n                        if (error)\n                            return \"deferred.\" + error;\n                    }\n                }\n                return null;\n            };\n\n            /**\n             * Creates a plain object from a DeferNode message. Also converts values to other types if specified.\n             * @function toObject\n             * @memberof Trace.QueryPlanNode.DeferNode\n             * @static\n             * @param {Trace.QueryPlanNode.DeferNode} message DeferNode\n             * @param {$protobuf.IConversionOptions} [options] Conversion options\n             * @returns {Object.<string,*>} Plain object\n             */\n            DeferNode.toObject = function toObject(message, options) {\n                if (!options)\n                    options = {};\n                let object = {};\n                if (options.arrays || options.defaults)\n                    object.deferred = [];\n                if (options.defaults)\n                    object.primary = null;\n                if (message.primary != null && message.hasOwnProperty(\"primary\"))\n                    object.primary = $root.Trace.QueryPlanNode.DeferNodePrimary.toObject(message.primary, options);\n                if (message.deferred && message.deferred.length) {\n                    object.deferred = [];\n                    for (let j = 0; j < message.deferred.length; ++j)\n                        object.deferred[j] = $root.Trace.QueryPlanNode.DeferredNode.toObject(message.deferred[j], options);\n                }\n                return object;\n            };\n\n            /**\n             * Converts this DeferNode to JSON.\n             * @function toJSON\n             * @memberof Trace.QueryPlanNode.DeferNode\n             * @instance\n             * @returns {Object.<string,*>} JSON object\n             */\n            DeferNode.prototype.toJSON = function toJSON() {\n                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n            };\n\n            return DeferNode;\n        })();\n\n        QueryPlanNode.ConditionNode = (function() {\n\n            /**\n             * Properties of a ConditionNode.\n             * @memberof Trace.QueryPlanNode\n             * @interface IConditionNode\n             * @property {string|null} [condition] ConditionNode condition\n             * @property {Trace.IQueryPlanNode|null} [ifClause] ConditionNode ifClause\n             * @property {Trace.IQueryPlanNode|null} [elseClause] ConditionNode elseClause\n             */\n\n            /**\n             * Constructs a new ConditionNode.\n             * @memberof Trace.QueryPlanNode\n             * @classdesc Represents a ConditionNode.\n             * @implements IConditionNode\n             * @constructor\n             * @param {Trace.QueryPlanNode.IConditionNode=} [properties] Properties to set\n             */\n            function ConditionNode(properties) {\n                if (properties)\n                    for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                        if (properties[keys[i]] != null)\n                            this[keys[i]] = properties[keys[i]];\n            }\n\n            /**\n             * ConditionNode condition.\n             * @member {string} condition\n             * @memberof Trace.QueryPlanNode.ConditionNode\n             * @instance\n             */\n            ConditionNode.prototype.condition = \"\";\n\n            /**\n             * ConditionNode ifClause.\n             * @member {Trace.IQueryPlanNode|null|undefined} ifClause\n             * @memberof Trace.QueryPlanNode.ConditionNode\n             * @instance\n             */\n            ConditionNode.prototype.ifClause = null;\n\n            /**\n             * ConditionNode elseClause.\n             * @member {Trace.IQueryPlanNode|null|undefined} elseClause\n             * @memberof Trace.QueryPlanNode.ConditionNode\n             * @instance\n             */\n            ConditionNode.prototype.elseClause = null;\n\n            /**\n             * Creates a new ConditionNode instance using the specified properties.\n             * @function create\n             * @memberof Trace.QueryPlanNode.ConditionNode\n             * @static\n             * @param {Trace.QueryPlanNode.IConditionNode=} [properties] Properties to set\n             * @returns {Trace.QueryPlanNode.ConditionNode} ConditionNode instance\n             */\n            ConditionNode.create = function create(properties) {\n                return new ConditionNode(properties);\n            };\n\n            /**\n             * Encodes the specified ConditionNode message. Does not implicitly {@link Trace.QueryPlanNode.ConditionNode.verify|verify} messages.\n             * @function encode\n             * @memberof Trace.QueryPlanNode.ConditionNode\n             * @static\n             * @param {Trace.QueryPlanNode.IConditionNode} message ConditionNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            ConditionNode.encode = function encode(message, writer) {\n                if (!writer)\n                    writer = $Writer.create();\n                if (message.condition != null && Object.hasOwnProperty.call(message, \"condition\"))\n                    writer.uint32(/* id 1, wireType 2 =*/10).string(message.condition);\n                if (message.ifClause != null && Object.hasOwnProperty.call(message, \"ifClause\"))\n                    $root.Trace.QueryPlanNode.encode(message.ifClause, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n                if (message.elseClause != null && Object.hasOwnProperty.call(message, \"elseClause\"))\n                    $root.Trace.QueryPlanNode.encode(message.elseClause, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n                return writer;\n            };\n\n            /**\n             * Encodes the specified ConditionNode message, length delimited. Does not implicitly {@link Trace.QueryPlanNode.ConditionNode.verify|verify} messages.\n             * @function encodeDelimited\n             * @memberof Trace.QueryPlanNode.ConditionNode\n             * @static\n             * @param {Trace.QueryPlanNode.IConditionNode} message ConditionNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            ConditionNode.encodeDelimited = function encodeDelimited(message, writer) {\n                return this.encode(message, writer).ldelim();\n            };\n\n            /**\n             * Decodes a ConditionNode message from the specified reader or buffer.\n             * @function decode\n             * @memberof Trace.QueryPlanNode.ConditionNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @param {number} [length] Message length if known beforehand\n             * @returns {Trace.QueryPlanNode.ConditionNode} ConditionNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            ConditionNode.decode = function decode(reader, length) {\n                if (!(reader instanceof $Reader))\n                    reader = $Reader.create(reader);\n                let end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.QueryPlanNode.ConditionNode();\n                while (reader.pos < end) {\n                    let tag = reader.uint32();\n                    switch (tag >>> 3) {\n                    case 1:\n                        message.condition = reader.string();\n                        break;\n                    case 2:\n                        message.ifClause = $root.Trace.QueryPlanNode.decode(reader, reader.uint32());\n                        break;\n                    case 3:\n                        message.elseClause = $root.Trace.QueryPlanNode.decode(reader, reader.uint32());\n                        break;\n                    default:\n                        reader.skipType(tag & 7);\n                        break;\n                    }\n                }\n                return message;\n            };\n\n            /**\n             * Decodes a ConditionNode message from the specified reader or buffer, length delimited.\n             * @function decodeDelimited\n             * @memberof Trace.QueryPlanNode.ConditionNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @returns {Trace.QueryPlanNode.ConditionNode} ConditionNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            ConditionNode.decodeDelimited = function decodeDelimited(reader) {\n                if (!(reader instanceof $Reader))\n                    reader = new $Reader(reader);\n                return this.decode(reader, reader.uint32());\n            };\n\n            /**\n             * Verifies a ConditionNode message.\n             * @function verify\n             * @memberof Trace.QueryPlanNode.ConditionNode\n             * @static\n             * @param {Object.<string,*>} message Plain object to verify\n             * @returns {string|null} `null` if valid, otherwise the reason why it is not\n             */\n            ConditionNode.verify = function verify(message) {\n                if (typeof message !== \"object\" || message === null)\n                    return \"object expected\";\n                if (message.condition != null && message.hasOwnProperty(\"condition\"))\n                    if (!$util.isString(message.condition))\n                        return \"condition: string expected\";\n                if (message.ifClause != null && message.hasOwnProperty(\"ifClause\")) {\n                    let error = $root.Trace.QueryPlanNode.verify(message.ifClause);\n                    if (error)\n                        return \"ifClause.\" + error;\n                }\n                if (message.elseClause != null && message.hasOwnProperty(\"elseClause\")) {\n                    let error = $root.Trace.QueryPlanNode.verify(message.elseClause);\n                    if (error)\n                        return \"elseClause.\" + error;\n                }\n                return null;\n            };\n\n            /**\n             * Creates a plain object from a ConditionNode message. Also converts values to other types if specified.\n             * @function toObject\n             * @memberof Trace.QueryPlanNode.ConditionNode\n             * @static\n             * @param {Trace.QueryPlanNode.ConditionNode} message ConditionNode\n             * @param {$protobuf.IConversionOptions} [options] Conversion options\n             * @returns {Object.<string,*>} Plain object\n             */\n            ConditionNode.toObject = function toObject(message, options) {\n                if (!options)\n                    options = {};\n                let object = {};\n                if (options.defaults) {\n                    object.condition = \"\";\n                    object.ifClause = null;\n                    object.elseClause = null;\n                }\n                if (message.condition != null && message.hasOwnProperty(\"condition\"))\n                    object.condition = message.condition;\n                if (message.ifClause != null && message.hasOwnProperty(\"ifClause\"))\n                    object.ifClause = $root.Trace.QueryPlanNode.toObject(message.ifClause, options);\n                if (message.elseClause != null && message.hasOwnProperty(\"elseClause\"))\n                    object.elseClause = $root.Trace.QueryPlanNode.toObject(message.elseClause, options);\n                return object;\n            };\n\n            /**\n             * Converts this ConditionNode to JSON.\n             * @function toJSON\n             * @memberof Trace.QueryPlanNode.ConditionNode\n             * @instance\n             * @returns {Object.<string,*>} JSON object\n             */\n            ConditionNode.prototype.toJSON = function toJSON() {\n                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n            };\n\n            return ConditionNode;\n        })();\n\n        QueryPlanNode.DeferNodePrimary = (function() {\n\n            /**\n             * Properties of a DeferNodePrimary.\n             * @memberof Trace.QueryPlanNode\n             * @interface IDeferNodePrimary\n             * @property {Trace.IQueryPlanNode|null} [node] DeferNodePrimary node\n             */\n\n            /**\n             * Constructs a new DeferNodePrimary.\n             * @memberof Trace.QueryPlanNode\n             * @classdesc Represents a DeferNodePrimary.\n             * @implements IDeferNodePrimary\n             * @constructor\n             * @param {Trace.QueryPlanNode.IDeferNodePrimary=} [properties] Properties to set\n             */\n            function DeferNodePrimary(properties) {\n                if (properties)\n                    for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                        if (properties[keys[i]] != null)\n                            this[keys[i]] = properties[keys[i]];\n            }\n\n            /**\n             * DeferNodePrimary node.\n             * @member {Trace.IQueryPlanNode|null|undefined} node\n             * @memberof Trace.QueryPlanNode.DeferNodePrimary\n             * @instance\n             */\n            DeferNodePrimary.prototype.node = null;\n\n            /**\n             * Creates a new DeferNodePrimary instance using the specified properties.\n             * @function create\n             * @memberof Trace.QueryPlanNode.DeferNodePrimary\n             * @static\n             * @param {Trace.QueryPlanNode.IDeferNodePrimary=} [properties] Properties to set\n             * @returns {Trace.QueryPlanNode.DeferNodePrimary} DeferNodePrimary instance\n             */\n            DeferNodePrimary.create = function create(properties) {\n                return new DeferNodePrimary(properties);\n            };\n\n            /**\n             * Encodes the specified DeferNodePrimary message. Does not implicitly {@link Trace.QueryPlanNode.DeferNodePrimary.verify|verify} messages.\n             * @function encode\n             * @memberof Trace.QueryPlanNode.DeferNodePrimary\n             * @static\n             * @param {Trace.QueryPlanNode.IDeferNodePrimary} message DeferNodePrimary message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            DeferNodePrimary.encode = function encode(message, writer) {\n                if (!writer)\n                    writer = $Writer.create();\n                if (message.node != null && Object.hasOwnProperty.call(message, \"node\"))\n                    $root.Trace.QueryPlanNode.encode(message.node, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n                return writer;\n            };\n\n            /**\n             * Encodes the specified DeferNodePrimary message, length delimited. Does not implicitly {@link Trace.QueryPlanNode.DeferNodePrimary.verify|verify} messages.\n             * @function encodeDelimited\n             * @memberof Trace.QueryPlanNode.DeferNodePrimary\n             * @static\n             * @param {Trace.QueryPlanNode.IDeferNodePrimary} message DeferNodePrimary message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            DeferNodePrimary.encodeDelimited = function encodeDelimited(message, writer) {\n                return this.encode(message, writer).ldelim();\n            };\n\n            /**\n             * Decodes a DeferNodePrimary message from the specified reader or buffer.\n             * @function decode\n             * @memberof Trace.QueryPlanNode.DeferNodePrimary\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @param {number} [length] Message length if known beforehand\n             * @returns {Trace.QueryPlanNode.DeferNodePrimary} DeferNodePrimary\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            DeferNodePrimary.decode = function decode(reader, length) {\n                if (!(reader instanceof $Reader))\n                    reader = $Reader.create(reader);\n                let end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.QueryPlanNode.DeferNodePrimary();\n                while (reader.pos < end) {\n                    let tag = reader.uint32();\n                    switch (tag >>> 3) {\n                    case 1:\n                        message.node = $root.Trace.QueryPlanNode.decode(reader, reader.uint32());\n                        break;\n                    default:\n                        reader.skipType(tag & 7);\n                        break;\n                    }\n                }\n                return message;\n            };\n\n            /**\n             * Decodes a DeferNodePrimary message from the specified reader or buffer, length delimited.\n             * @function decodeDelimited\n             * @memberof Trace.QueryPlanNode.DeferNodePrimary\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @returns {Trace.QueryPlanNode.DeferNodePrimary} DeferNodePrimary\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            DeferNodePrimary.decodeDelimited = function decodeDelimited(reader) {\n                if (!(reader instanceof $Reader))\n                    reader = new $Reader(reader);\n                return this.decode(reader, reader.uint32());\n            };\n\n            /**\n             * Verifies a DeferNodePrimary message.\n             * @function verify\n             * @memberof Trace.QueryPlanNode.DeferNodePrimary\n             * @static\n             * @param {Object.<string,*>} message Plain object to verify\n             * @returns {string|null} `null` if valid, otherwise the reason why it is not\n             */\n            DeferNodePrimary.verify = function verify(message) {\n                if (typeof message !== \"object\" || message === null)\n                    return \"object expected\";\n                if (message.node != null && message.hasOwnProperty(\"node\")) {\n                    let error = $root.Trace.QueryPlanNode.verify(message.node);\n                    if (error)\n                        return \"node.\" + error;\n                }\n                return null;\n            };\n\n            /**\n             * Creates a plain object from a DeferNodePrimary message. Also converts values to other types if specified.\n             * @function toObject\n             * @memberof Trace.QueryPlanNode.DeferNodePrimary\n             * @static\n             * @param {Trace.QueryPlanNode.DeferNodePrimary} message DeferNodePrimary\n             * @param {$protobuf.IConversionOptions} [options] Conversion options\n             * @returns {Object.<string,*>} Plain object\n             */\n            DeferNodePrimary.toObject = function toObject(message, options) {\n                if (!options)\n                    options = {};\n                let object = {};\n                if (options.defaults)\n                    object.node = null;\n                if (message.node != null && message.hasOwnProperty(\"node\"))\n                    object.node = $root.Trace.QueryPlanNode.toObject(message.node, options);\n                return object;\n            };\n\n            /**\n             * Converts this DeferNodePrimary to JSON.\n             * @function toJSON\n             * @memberof Trace.QueryPlanNode.DeferNodePrimary\n             * @instance\n             * @returns {Object.<string,*>} JSON object\n             */\n            DeferNodePrimary.prototype.toJSON = function toJSON() {\n                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n            };\n\n            return DeferNodePrimary;\n        })();\n\n        QueryPlanNode.DeferredNode = (function() {\n\n            /**\n             * Properties of a DeferredNode.\n             * @memberof Trace.QueryPlanNode\n             * @interface IDeferredNode\n             * @property {Array.<Trace.QueryPlanNode.IDeferredNodeDepends>|null} [depends] DeferredNode depends\n             * @property {string|null} [label] DeferredNode label\n             * @property {Array.<Trace.QueryPlanNode.IResponsePathElement>|null} [path] DeferredNode path\n             * @property {Trace.IQueryPlanNode|null} [node] DeferredNode node\n             */\n\n            /**\n             * Constructs a new DeferredNode.\n             * @memberof Trace.QueryPlanNode\n             * @classdesc Represents a DeferredNode.\n             * @implements IDeferredNode\n             * @constructor\n             * @param {Trace.QueryPlanNode.IDeferredNode=} [properties] Properties to set\n             */\n            function DeferredNode(properties) {\n                this.depends = [];\n                this.path = [];\n                if (properties)\n                    for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                        if (properties[keys[i]] != null)\n                            this[keys[i]] = properties[keys[i]];\n            }\n\n            /**\n             * DeferredNode depends.\n             * @member {Array.<Trace.QueryPlanNode.IDeferredNodeDepends>} depends\n             * @memberof Trace.QueryPlanNode.DeferredNode\n             * @instance\n             */\n            DeferredNode.prototype.depends = $util.emptyArray;\n\n            /**\n             * DeferredNode label.\n             * @member {string} label\n             * @memberof Trace.QueryPlanNode.DeferredNode\n             * @instance\n             */\n            DeferredNode.prototype.label = \"\";\n\n            /**\n             * DeferredNode path.\n             * @member {Array.<Trace.QueryPlanNode.IResponsePathElement>} path\n             * @memberof Trace.QueryPlanNode.DeferredNode\n             * @instance\n             */\n            DeferredNode.prototype.path = $util.emptyArray;\n\n            /**\n             * DeferredNode node.\n             * @member {Trace.IQueryPlanNode|null|undefined} node\n             * @memberof Trace.QueryPlanNode.DeferredNode\n             * @instance\n             */\n            DeferredNode.prototype.node = null;\n\n            /**\n             * Creates a new DeferredNode instance using the specified properties.\n             * @function create\n             * @memberof Trace.QueryPlanNode.DeferredNode\n             * @static\n             * @param {Trace.QueryPlanNode.IDeferredNode=} [properties] Properties to set\n             * @returns {Trace.QueryPlanNode.DeferredNode} DeferredNode instance\n             */\n            DeferredNode.create = function create(properties) {\n                return new DeferredNode(properties);\n            };\n\n            /**\n             * Encodes the specified DeferredNode message. Does not implicitly {@link Trace.QueryPlanNode.DeferredNode.verify|verify} messages.\n             * @function encode\n             * @memberof Trace.QueryPlanNode.DeferredNode\n             * @static\n             * @param {Trace.QueryPlanNode.IDeferredNode} message DeferredNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            DeferredNode.encode = function encode(message, writer) {\n                if (!writer)\n                    writer = $Writer.create();\n                if (message.depends != null && message.depends.length)\n                    for (let i = 0; i < message.depends.length; ++i)\n                        $root.Trace.QueryPlanNode.DeferredNodeDepends.encode(message.depends[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n                if (message.label != null && Object.hasOwnProperty.call(message, \"label\"))\n                    writer.uint32(/* id 2, wireType 2 =*/18).string(message.label);\n                if (message.path != null && message.path.length)\n                    for (let i = 0; i < message.path.length; ++i)\n                        $root.Trace.QueryPlanNode.ResponsePathElement.encode(message.path[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n                if (message.node != null && Object.hasOwnProperty.call(message, \"node\"))\n                    $root.Trace.QueryPlanNode.encode(message.node, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();\n                return writer;\n            };\n\n            /**\n             * Encodes the specified DeferredNode message, length delimited. Does not implicitly {@link Trace.QueryPlanNode.DeferredNode.verify|verify} messages.\n             * @function encodeDelimited\n             * @memberof Trace.QueryPlanNode.DeferredNode\n             * @static\n             * @param {Trace.QueryPlanNode.IDeferredNode} message DeferredNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            DeferredNode.encodeDelimited = function encodeDelimited(message, writer) {\n                return this.encode(message, writer).ldelim();\n            };\n\n            /**\n             * Decodes a DeferredNode message from the specified reader or buffer.\n             * @function decode\n             * @memberof Trace.QueryPlanNode.DeferredNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @param {number} [length] Message length if known beforehand\n             * @returns {Trace.QueryPlanNode.DeferredNode} DeferredNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            DeferredNode.decode = function decode(reader, length) {\n                if (!(reader instanceof $Reader))\n                    reader = $Reader.create(reader);\n                let end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.QueryPlanNode.DeferredNode();\n                while (reader.pos < end) {\n                    let tag = reader.uint32();\n                    switch (tag >>> 3) {\n                    case 1:\n                        if (!(message.depends && message.depends.length))\n                            message.depends = [];\n                        message.depends.push($root.Trace.QueryPlanNode.DeferredNodeDepends.decode(reader, reader.uint32()));\n                        break;\n                    case 2:\n                        message.label = reader.string();\n                        break;\n                    case 3:\n                        if (!(message.path && message.path.length))\n                            message.path = [];\n                        message.path.push($root.Trace.QueryPlanNode.ResponsePathElement.decode(reader, reader.uint32()));\n                        break;\n                    case 4:\n                        message.node = $root.Trace.QueryPlanNode.decode(reader, reader.uint32());\n                        break;\n                    default:\n                        reader.skipType(tag & 7);\n                        break;\n                    }\n                }\n                return message;\n            };\n\n            /**\n             * Decodes a DeferredNode message from the specified reader or buffer, length delimited.\n             * @function decodeDelimited\n             * @memberof Trace.QueryPlanNode.DeferredNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @returns {Trace.QueryPlanNode.DeferredNode} DeferredNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            DeferredNode.decodeDelimited = function decodeDelimited(reader) {\n                if (!(reader instanceof $Reader))\n                    reader = new $Reader(reader);\n                return this.decode(reader, reader.uint32());\n            };\n\n            /**\n             * Verifies a DeferredNode message.\n             * @function verify\n             * @memberof Trace.QueryPlanNode.DeferredNode\n             * @static\n             * @param {Object.<string,*>} message Plain object to verify\n             * @returns {string|null} `null` if valid, otherwise the reason why it is not\n             */\n            DeferredNode.verify = function verify(message) {\n                if (typeof message !== \"object\" || message === null)\n                    return \"object expected\";\n                if (message.depends != null && message.hasOwnProperty(\"depends\")) {\n                    if (!Array.isArray(message.depends))\n                        return \"depends: array expected\";\n                    for (let i = 0; i < message.depends.length; ++i) {\n                        let error = $root.Trace.QueryPlanNode.DeferredNodeDepends.verify(message.depends[i]);\n                        if (error)\n                            return \"depends.\" + error;\n                    }\n                }\n                if (message.label != null && message.hasOwnProperty(\"label\"))\n                    if (!$util.isString(message.label))\n                        return \"label: string expected\";\n                if (message.path != null && message.hasOwnProperty(\"path\")) {\n                    if (!Array.isArray(message.path))\n                        return \"path: array expected\";\n                    for (let i = 0; i < message.path.length; ++i) {\n                        let error = $root.Trace.QueryPlanNode.ResponsePathElement.verify(message.path[i]);\n                        if (error)\n                            return \"path.\" + error;\n                    }\n                }\n                if (message.node != null && message.hasOwnProperty(\"node\")) {\n                    let error = $root.Trace.QueryPlanNode.verify(message.node);\n                    if (error)\n                        return \"node.\" + error;\n                }\n                return null;\n            };\n\n            /**\n             * Creates a plain object from a DeferredNode message. Also converts values to other types if specified.\n             * @function toObject\n             * @memberof Trace.QueryPlanNode.DeferredNode\n             * @static\n             * @param {Trace.QueryPlanNode.DeferredNode} message DeferredNode\n             * @param {$protobuf.IConversionOptions} [options] Conversion options\n             * @returns {Object.<string,*>} Plain object\n             */\n            DeferredNode.toObject = function toObject(message, options) {\n                if (!options)\n                    options = {};\n                let object = {};\n                if (options.arrays || options.defaults) {\n                    object.depends = [];\n                    object.path = [];\n                }\n                if (options.defaults) {\n                    object.label = \"\";\n                    object.node = null;\n                }\n                if (message.depends && message.depends.length) {\n                    object.depends = [];\n                    for (let j = 0; j < message.depends.length; ++j)\n                        object.depends[j] = $root.Trace.QueryPlanNode.DeferredNodeDepends.toObject(message.depends[j], options);\n                }\n                if (message.label != null && message.hasOwnProperty(\"label\"))\n                    object.label = message.label;\n                if (message.path && message.path.length) {\n                    object.path = [];\n                    for (let j = 0; j < message.path.length; ++j)\n                        object.path[j] = $root.Trace.QueryPlanNode.ResponsePathElement.toObject(message.path[j], options);\n                }\n                if (message.node != null && message.hasOwnProperty(\"node\"))\n                    object.node = $root.Trace.QueryPlanNode.toObject(message.node, options);\n                return object;\n            };\n\n            /**\n             * Converts this DeferredNode to JSON.\n             * @function toJSON\n             * @memberof Trace.QueryPlanNode.DeferredNode\n             * @instance\n             * @returns {Object.<string,*>} JSON object\n             */\n            DeferredNode.prototype.toJSON = function toJSON() {\n                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n            };\n\n            return DeferredNode;\n        })();\n\n        QueryPlanNode.DeferredNodeDepends = (function() {\n\n            /**\n             * Properties of a DeferredNodeDepends.\n             * @memberof Trace.QueryPlanNode\n             * @interface IDeferredNodeDepends\n             * @property {string|null} [id] DeferredNodeDepends id\n             * @property {string|null} [deferLabel] DeferredNodeDepends deferLabel\n             */\n\n            /**\n             * Constructs a new DeferredNodeDepends.\n             * @memberof Trace.QueryPlanNode\n             * @classdesc Represents a DeferredNodeDepends.\n             * @implements IDeferredNodeDepends\n             * @constructor\n             * @param {Trace.QueryPlanNode.IDeferredNodeDepends=} [properties] Properties to set\n             */\n            function DeferredNodeDepends(properties) {\n                if (properties)\n                    for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                        if (properties[keys[i]] != null)\n                            this[keys[i]] = properties[keys[i]];\n            }\n\n            /**\n             * DeferredNodeDepends id.\n             * @member {string} id\n             * @memberof Trace.QueryPlanNode.DeferredNodeDepends\n             * @instance\n             */\n            DeferredNodeDepends.prototype.id = \"\";\n\n            /**\n             * DeferredNodeDepends deferLabel.\n             * @member {string} deferLabel\n             * @memberof Trace.QueryPlanNode.DeferredNodeDepends\n             * @instance\n             */\n            DeferredNodeDepends.prototype.deferLabel = \"\";\n\n            /**\n             * Creates a new DeferredNodeDepends instance using the specified properties.\n             * @function create\n             * @memberof Trace.QueryPlanNode.DeferredNodeDepends\n             * @static\n             * @param {Trace.QueryPlanNode.IDeferredNodeDepends=} [properties] Properties to set\n             * @returns {Trace.QueryPlanNode.DeferredNodeDepends} DeferredNodeDepends instance\n             */\n            DeferredNodeDepends.create = function create(properties) {\n                return new DeferredNodeDepends(properties);\n            };\n\n            /**\n             * Encodes the specified DeferredNodeDepends message. Does not implicitly {@link Trace.QueryPlanNode.DeferredNodeDepends.verify|verify} messages.\n             * @function encode\n             * @memberof Trace.QueryPlanNode.DeferredNodeDepends\n             * @static\n             * @param {Trace.QueryPlanNode.IDeferredNodeDepends} message DeferredNodeDepends message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            DeferredNodeDepends.encode = function encode(message, writer) {\n                if (!writer)\n                    writer = $Writer.create();\n                if (message.id != null && Object.hasOwnProperty.call(message, \"id\"))\n                    writer.uint32(/* id 1, wireType 2 =*/10).string(message.id);\n                if (message.deferLabel != null && Object.hasOwnProperty.call(message, \"deferLabel\"))\n                    writer.uint32(/* id 2, wireType 2 =*/18).string(message.deferLabel);\n                return writer;\n            };\n\n            /**\n             * Encodes the specified DeferredNodeDepends message, length delimited. Does not implicitly {@link Trace.QueryPlanNode.DeferredNodeDepends.verify|verify} messages.\n             * @function encodeDelimited\n             * @memberof Trace.QueryPlanNode.DeferredNodeDepends\n             * @static\n             * @param {Trace.QueryPlanNode.IDeferredNodeDepends} message DeferredNodeDepends message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            DeferredNodeDepends.encodeDelimited = function encodeDelimited(message, writer) {\n                return this.encode(message, writer).ldelim();\n            };\n\n            /**\n             * Decodes a DeferredNodeDepends message from the specified reader or buffer.\n             * @function decode\n             * @memberof Trace.QueryPlanNode.DeferredNodeDepends\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @param {number} [length] Message length if known beforehand\n             * @returns {Trace.QueryPlanNode.DeferredNodeDepends} DeferredNodeDepends\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            DeferredNodeDepends.decode = function decode(reader, length) {\n                if (!(reader instanceof $Reader))\n                    reader = $Reader.create(reader);\n                let end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.QueryPlanNode.DeferredNodeDepends();\n                while (reader.pos < end) {\n                    let tag = reader.uint32();\n                    switch (tag >>> 3) {\n                    case 1:\n                        message.id = reader.string();\n                        break;\n                    case 2:\n                        message.deferLabel = reader.string();\n                        break;\n                    default:\n                        reader.skipType(tag & 7);\n                        break;\n                    }\n                }\n                return message;\n            };\n\n            /**\n             * Decodes a DeferredNodeDepends message from the specified reader or buffer, length delimited.\n             * @function decodeDelimited\n             * @memberof Trace.QueryPlanNode.DeferredNodeDepends\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @returns {Trace.QueryPlanNode.DeferredNodeDepends} DeferredNodeDepends\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            DeferredNodeDepends.decodeDelimited = function decodeDelimited(reader) {\n                if (!(reader instanceof $Reader))\n                    reader = new $Reader(reader);\n                return this.decode(reader, reader.uint32());\n            };\n\n            /**\n             * Verifies a DeferredNodeDepends message.\n             * @function verify\n             * @memberof Trace.QueryPlanNode.DeferredNodeDepends\n             * @static\n             * @param {Object.<string,*>} message Plain object to verify\n             * @returns {string|null} `null` if valid, otherwise the reason why it is not\n             */\n            DeferredNodeDepends.verify = function verify(message) {\n                if (typeof message !== \"object\" || message === null)\n                    return \"object expected\";\n                if (message.id != null && message.hasOwnProperty(\"id\"))\n                    if (!$util.isString(message.id))\n                        return \"id: string expected\";\n                if (message.deferLabel != null && message.hasOwnProperty(\"deferLabel\"))\n                    if (!$util.isString(message.deferLabel))\n                        return \"deferLabel: string expected\";\n                return null;\n            };\n\n            /**\n             * Creates a plain object from a DeferredNodeDepends message. Also converts values to other types if specified.\n             * @function toObject\n             * @memberof Trace.QueryPlanNode.DeferredNodeDepends\n             * @static\n             * @param {Trace.QueryPlanNode.DeferredNodeDepends} message DeferredNodeDepends\n             * @param {$protobuf.IConversionOptions} [options] Conversion options\n             * @returns {Object.<string,*>} Plain object\n             */\n            DeferredNodeDepends.toObject = function toObject(message, options) {\n                if (!options)\n                    options = {};\n                let object = {};\n                if (options.defaults) {\n                    object.id = \"\";\n                    object.deferLabel = \"\";\n                }\n                if (message.id != null && message.hasOwnProperty(\"id\"))\n                    object.id = message.id;\n                if (message.deferLabel != null && message.hasOwnProperty(\"deferLabel\"))\n                    object.deferLabel = message.deferLabel;\n                return object;\n            };\n\n            /**\n             * Converts this DeferredNodeDepends to JSON.\n             * @function toJSON\n             * @memberof Trace.QueryPlanNode.DeferredNodeDepends\n             * @instance\n             * @returns {Object.<string,*>} JSON object\n             */\n            DeferredNodeDepends.prototype.toJSON = function toJSON() {\n                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n            };\n\n            return DeferredNodeDepends;\n        })();\n\n        QueryPlanNode.ResponsePathElement = (function() {\n\n            /**\n             * Properties of a ResponsePathElement.\n             * @memberof Trace.QueryPlanNode\n             * @interface IResponsePathElement\n             * @property {string|null} [fieldName] ResponsePathElement fieldName\n             * @property {number|null} [index] ResponsePathElement index\n             */\n\n            /**\n             * Constructs a new ResponsePathElement.\n             * @memberof Trace.QueryPlanNode\n             * @classdesc Represents a ResponsePathElement.\n             * @implements IResponsePathElement\n             * @constructor\n             * @param {Trace.QueryPlanNode.IResponsePathElement=} [properties] Properties to set\n             */\n            function ResponsePathElement(properties) {\n                if (properties)\n                    for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                        if (properties[keys[i]] != null)\n                            this[keys[i]] = properties[keys[i]];\n            }\n\n            /**\n             * ResponsePathElement fieldName.\n             * @member {string} fieldName\n             * @memberof Trace.QueryPlanNode.ResponsePathElement\n             * @instance\n             */\n            ResponsePathElement.prototype.fieldName = \"\";\n\n            /**\n             * ResponsePathElement index.\n             * @member {number} index\n             * @memberof Trace.QueryPlanNode.ResponsePathElement\n             * @instance\n             */\n            ResponsePathElement.prototype.index = 0;\n\n            // OneOf field names bound to virtual getters and setters\n            let $oneOfFields;\n\n            /**\n             * ResponsePathElement id.\n             * @member {\"fieldName\"|\"index\"|undefined} id\n             * @memberof Trace.QueryPlanNode.ResponsePathElement\n             * @instance\n             */\n            Object.defineProperty(ResponsePathElement.prototype, \"id\", {\n                get: $util.oneOfGetter($oneOfFields = [\"fieldName\", \"index\"]),\n                set: $util.oneOfSetter($oneOfFields)\n            });\n\n            /**\n             * Creates a new ResponsePathElement instance using the specified properties.\n             * @function create\n             * @memberof Trace.QueryPlanNode.ResponsePathElement\n             * @static\n             * @param {Trace.QueryPlanNode.IResponsePathElement=} [properties] Properties to set\n             * @returns {Trace.QueryPlanNode.ResponsePathElement} ResponsePathElement instance\n             */\n            ResponsePathElement.create = function create(properties) {\n                return new ResponsePathElement(properties);\n            };\n\n            /**\n             * Encodes the specified ResponsePathElement message. Does not implicitly {@link Trace.QueryPlanNode.ResponsePathElement.verify|verify} messages.\n             * @function encode\n             * @memberof Trace.QueryPlanNode.ResponsePathElement\n             * @static\n             * @param {Trace.QueryPlanNode.IResponsePathElement} message ResponsePathElement message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            ResponsePathElement.encode = function encode(message, writer) {\n                if (!writer)\n                    writer = $Writer.create();\n                if (message.fieldName != null && Object.hasOwnProperty.call(message, \"fieldName\"))\n                    writer.uint32(/* id 1, wireType 2 =*/10).string(message.fieldName);\n                if (message.index != null && Object.hasOwnProperty.call(message, \"index\"))\n                    writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.index);\n                return writer;\n            };\n\n            /**\n             * Encodes the specified ResponsePathElement message, length delimited. Does not implicitly {@link Trace.QueryPlanNode.ResponsePathElement.verify|verify} messages.\n             * @function encodeDelimited\n             * @memberof Trace.QueryPlanNode.ResponsePathElement\n             * @static\n             * @param {Trace.QueryPlanNode.IResponsePathElement} message ResponsePathElement message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            ResponsePathElement.encodeDelimited = function encodeDelimited(message, writer) {\n                return this.encode(message, writer).ldelim();\n            };\n\n            /**\n             * Decodes a ResponsePathElement message from the specified reader or buffer.\n             * @function decode\n             * @memberof Trace.QueryPlanNode.ResponsePathElement\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @param {number} [length] Message length if known beforehand\n             * @returns {Trace.QueryPlanNode.ResponsePathElement} ResponsePathElement\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            ResponsePathElement.decode = function decode(reader, length) {\n                if (!(reader instanceof $Reader))\n                    reader = $Reader.create(reader);\n                let end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.QueryPlanNode.ResponsePathElement();\n                while (reader.pos < end) {\n                    let tag = reader.uint32();\n                    switch (tag >>> 3) {\n                    case 1:\n                        message.fieldName = reader.string();\n                        break;\n                    case 2:\n                        message.index = reader.uint32();\n                        break;\n                    default:\n                        reader.skipType(tag & 7);\n                        break;\n                    }\n                }\n                return message;\n            };\n\n            /**\n             * Decodes a ResponsePathElement message from the specified reader or buffer, length delimited.\n             * @function decodeDelimited\n             * @memberof Trace.QueryPlanNode.ResponsePathElement\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @returns {Trace.QueryPlanNode.ResponsePathElement} ResponsePathElement\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            ResponsePathElement.decodeDelimited = function decodeDelimited(reader) {\n                if (!(reader instanceof $Reader))\n                    reader = new $Reader(reader);\n                return this.decode(reader, reader.uint32());\n            };\n\n            /**\n             * Verifies a ResponsePathElement message.\n             * @function verify\n             * @memberof Trace.QueryPlanNode.ResponsePathElement\n             * @static\n             * @param {Object.<string,*>} message Plain object to verify\n             * @returns {string|null} `null` if valid, otherwise the reason why it is not\n             */\n            ResponsePathElement.verify = function verify(message) {\n                if (typeof message !== \"object\" || message === null)\n                    return \"object expected\";\n                let properties = {};\n                if (message.fieldName != null && message.hasOwnProperty(\"fieldName\")) {\n                    properties.id = 1;\n                    if (!$util.isString(message.fieldName))\n                        return \"fieldName: string expected\";\n                }\n                if (message.index != null && message.hasOwnProperty(\"index\")) {\n                    if (properties.id === 1)\n                        return \"id: multiple values\";\n                    properties.id = 1;\n                    if (!$util.isInteger(message.index))\n                        return \"index: integer expected\";\n                }\n                return null;\n            };\n\n            /**\n             * Creates a plain object from a ResponsePathElement message. Also converts values to other types if specified.\n             * @function toObject\n             * @memberof Trace.QueryPlanNode.ResponsePathElement\n             * @static\n             * @param {Trace.QueryPlanNode.ResponsePathElement} message ResponsePathElement\n             * @param {$protobuf.IConversionOptions} [options] Conversion options\n             * @returns {Object.<string,*>} Plain object\n             */\n            ResponsePathElement.toObject = function toObject(message, options) {\n                if (!options)\n                    options = {};\n                let object = {};\n                if (message.fieldName != null && message.hasOwnProperty(\"fieldName\")) {\n                    object.fieldName = message.fieldName;\n                    if (options.oneofs)\n                        object.id = \"fieldName\";\n                }\n                if (message.index != null && message.hasOwnProperty(\"index\")) {\n                    object.index = message.index;\n                    if (options.oneofs)\n                        object.id = \"index\";\n                }\n                return object;\n            };\n\n            /**\n             * Converts this ResponsePathElement to JSON.\n             * @function toJSON\n             * @memberof Trace.QueryPlanNode.ResponsePathElement\n             * @instance\n             * @returns {Object.<string,*>} JSON object\n             */\n            ResponsePathElement.prototype.toJSON = function toJSON() {\n                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n            };\n\n            return ResponsePathElement;\n        })();\n\n        return QueryPlanNode;\n    })();\n\n    return Trace;\n})();\n\nexport const ReportHeader = $root.ReportHeader = (() => {\n\n    /**\n     * Properties of a ReportHeader.\n     * @exports IReportHeader\n     * @interface IReportHeader\n     * @property {string|null} [graphRef] ReportHeader graphRef\n     * @property {string|null} [hostname] ReportHeader hostname\n     * @property {string|null} [agentVersion] ReportHeader agentVersion\n     * @property {string|null} [serviceVersion] ReportHeader serviceVersion\n     * @property {string|null} [runtimeVersion] ReportHeader runtimeVersion\n     * @property {string|null} [uname] ReportHeader uname\n     * @property {string|null} [executableSchemaId] ReportHeader executableSchemaId\n     */\n\n    /**\n     * Constructs a new ReportHeader.\n     * @exports ReportHeader\n     * @classdesc Represents a ReportHeader.\n     * @implements IReportHeader\n     * @constructor\n     * @param {IReportHeader=} [properties] Properties to set\n     */\n    function ReportHeader(properties) {\n        if (properties)\n            for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * ReportHeader graphRef.\n     * @member {string} graphRef\n     * @memberof ReportHeader\n     * @instance\n     */\n    ReportHeader.prototype.graphRef = \"\";\n\n    /**\n     * ReportHeader hostname.\n     * @member {string} hostname\n     * @memberof ReportHeader\n     * @instance\n     */\n    ReportHeader.prototype.hostname = \"\";\n\n    /**\n     * ReportHeader agentVersion.\n     * @member {string} agentVersion\n     * @memberof ReportHeader\n     * @instance\n     */\n    ReportHeader.prototype.agentVersion = \"\";\n\n    /**\n     * ReportHeader serviceVersion.\n     * @member {string} serviceVersion\n     * @memberof ReportHeader\n     * @instance\n     */\n    ReportHeader.prototype.serviceVersion = \"\";\n\n    /**\n     * ReportHeader runtimeVersion.\n     * @member {string} runtimeVersion\n     * @memberof ReportHeader\n     * @instance\n     */\n    ReportHeader.prototype.runtimeVersion = \"\";\n\n    /**\n     * ReportHeader uname.\n     * @member {string} uname\n     * @memberof ReportHeader\n     * @instance\n     */\n    ReportHeader.prototype.uname = \"\";\n\n    /**\n     * ReportHeader executableSchemaId.\n     * @member {string} executableSchemaId\n     * @memberof ReportHeader\n     * @instance\n     */\n    ReportHeader.prototype.executableSchemaId = \"\";\n\n    /**\n     * Creates a new ReportHeader instance using the specified properties.\n     * @function create\n     * @memberof ReportHeader\n     * @static\n     * @param {IReportHeader=} [properties] Properties to set\n     * @returns {ReportHeader} ReportHeader instance\n     */\n    ReportHeader.create = function create(properties) {\n        return new ReportHeader(properties);\n    };\n\n    /**\n     * Encodes the specified ReportHeader message. Does not implicitly {@link ReportHeader.verify|verify} messages.\n     * @function encode\n     * @memberof ReportHeader\n     * @static\n     * @param {IReportHeader} message ReportHeader message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    ReportHeader.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.hostname != null && Object.hasOwnProperty.call(message, \"hostname\"))\n            writer.uint32(/* id 5, wireType 2 =*/42).string(message.hostname);\n        if (message.agentVersion != null && Object.hasOwnProperty.call(message, \"agentVersion\"))\n            writer.uint32(/* id 6, wireType 2 =*/50).string(message.agentVersion);\n        if (message.serviceVersion != null && Object.hasOwnProperty.call(message, \"serviceVersion\"))\n            writer.uint32(/* id 7, wireType 2 =*/58).string(message.serviceVersion);\n        if (message.runtimeVersion != null && Object.hasOwnProperty.call(message, \"runtimeVersion\"))\n            writer.uint32(/* id 8, wireType 2 =*/66).string(message.runtimeVersion);\n        if (message.uname != null && Object.hasOwnProperty.call(message, \"uname\"))\n            writer.uint32(/* id 9, wireType 2 =*/74).string(message.uname);\n        if (message.executableSchemaId != null && Object.hasOwnProperty.call(message, \"executableSchemaId\"))\n            writer.uint32(/* id 11, wireType 2 =*/90).string(message.executableSchemaId);\n        if (message.graphRef != null && Object.hasOwnProperty.call(message, \"graphRef\"))\n            writer.uint32(/* id 12, wireType 2 =*/98).string(message.graphRef);\n        return writer;\n    };\n\n    /**\n     * Encodes the specified ReportHeader message, length delimited. Does not implicitly {@link ReportHeader.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof ReportHeader\n     * @static\n     * @param {IReportHeader} message ReportHeader message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    ReportHeader.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a ReportHeader message from the specified reader or buffer.\n     * @function decode\n     * @memberof ReportHeader\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {ReportHeader} ReportHeader\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    ReportHeader.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        let end = length === undefined ? reader.len : reader.pos + length, message = new $root.ReportHeader();\n        while (reader.pos < end) {\n            let tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 12:\n                message.graphRef = reader.string();\n                break;\n            case 5:\n                message.hostname = reader.string();\n                break;\n            case 6:\n                message.agentVersion = reader.string();\n                break;\n            case 7:\n                message.serviceVersion = reader.string();\n                break;\n            case 8:\n                message.runtimeVersion = reader.string();\n                break;\n            case 9:\n                message.uname = reader.string();\n                break;\n            case 11:\n                message.executableSchemaId = reader.string();\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a ReportHeader message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof ReportHeader\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {ReportHeader} ReportHeader\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    ReportHeader.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a ReportHeader message.\n     * @function verify\n     * @memberof ReportHeader\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    ReportHeader.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.graphRef != null && message.hasOwnProperty(\"graphRef\"))\n            if (!$util.isString(message.graphRef))\n                return \"graphRef: string expected\";\n        if (message.hostname != null && message.hasOwnProperty(\"hostname\"))\n            if (!$util.isString(message.hostname))\n                return \"hostname: string expected\";\n        if (message.agentVersion != null && message.hasOwnProperty(\"agentVersion\"))\n            if (!$util.isString(message.agentVersion))\n                return \"agentVersion: string expected\";\n        if (message.serviceVersion != null && message.hasOwnProperty(\"serviceVersion\"))\n            if (!$util.isString(message.serviceVersion))\n                return \"serviceVersion: string expected\";\n        if (message.runtimeVersion != null && message.hasOwnProperty(\"runtimeVersion\"))\n            if (!$util.isString(message.runtimeVersion))\n                return \"runtimeVersion: string expected\";\n        if (message.uname != null && message.hasOwnProperty(\"uname\"))\n            if (!$util.isString(message.uname))\n                return \"uname: string expected\";\n        if (message.executableSchemaId != null && message.hasOwnProperty(\"executableSchemaId\"))\n            if (!$util.isString(message.executableSchemaId))\n                return \"executableSchemaId: string expected\";\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a ReportHeader message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof ReportHeader\n     * @static\n     * @param {ReportHeader} message ReportHeader\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    ReportHeader.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        let object = {};\n        if (options.defaults) {\n            object.hostname = \"\";\n            object.agentVersion = \"\";\n            object.serviceVersion = \"\";\n            object.runtimeVersion = \"\";\n            object.uname = \"\";\n            object.executableSchemaId = \"\";\n            object.graphRef = \"\";\n        }\n        if (message.hostname != null && message.hasOwnProperty(\"hostname\"))\n            object.hostname = message.hostname;\n        if (message.agentVersion != null && message.hasOwnProperty(\"agentVersion\"))\n            object.agentVersion = message.agentVersion;\n        if (message.serviceVersion != null && message.hasOwnProperty(\"serviceVersion\"))\n            object.serviceVersion = message.serviceVersion;\n        if (message.runtimeVersion != null && message.hasOwnProperty(\"runtimeVersion\"))\n            object.runtimeVersion = message.runtimeVersion;\n        if (message.uname != null && message.hasOwnProperty(\"uname\"))\n            object.uname = message.uname;\n        if (message.executableSchemaId != null && message.hasOwnProperty(\"executableSchemaId\"))\n            object.executableSchemaId = message.executableSchemaId;\n        if (message.graphRef != null && message.hasOwnProperty(\"graphRef\"))\n            object.graphRef = message.graphRef;\n        return object;\n    };\n\n    /**\n     * Converts this ReportHeader to JSON.\n     * @function toJSON\n     * @memberof ReportHeader\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    ReportHeader.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    return ReportHeader;\n})();\n\nexport const PathErrorStats = $root.PathErrorStats = (() => {\n\n    /**\n     * Properties of a PathErrorStats.\n     * @exports IPathErrorStats\n     * @interface IPathErrorStats\n     * @property {Object.<string,IPathErrorStats>|null} [children] PathErrorStats children\n     * @property {number|null} [errorsCount] PathErrorStats errorsCount\n     * @property {number|null} [requestsWithErrorsCount] PathErrorStats requestsWithErrorsCount\n     */\n\n    /**\n     * Constructs a new PathErrorStats.\n     * @exports PathErrorStats\n     * @classdesc Represents a PathErrorStats.\n     * @implements IPathErrorStats\n     * @constructor\n     * @param {IPathErrorStats=} [properties] Properties to set\n     */\n    function PathErrorStats(properties) {\n        this.children = {};\n        if (properties)\n            for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * PathErrorStats children.\n     * @member {Object.<string,IPathErrorStats>} children\n     * @memberof PathErrorStats\n     * @instance\n     */\n    PathErrorStats.prototype.children = $util.emptyObject;\n\n    /**\n     * PathErrorStats errorsCount.\n     * @member {number} errorsCount\n     * @memberof PathErrorStats\n     * @instance\n     */\n    PathErrorStats.prototype.errorsCount = 0;\n\n    /**\n     * PathErrorStats requestsWithErrorsCount.\n     * @member {number} requestsWithErrorsCount\n     * @memberof PathErrorStats\n     * @instance\n     */\n    PathErrorStats.prototype.requestsWithErrorsCount = 0;\n\n    /**\n     * Creates a new PathErrorStats instance using the specified properties.\n     * @function create\n     * @memberof PathErrorStats\n     * @static\n     * @param {IPathErrorStats=} [properties] Properties to set\n     * @returns {PathErrorStats} PathErrorStats instance\n     */\n    PathErrorStats.create = function create(properties) {\n        return new PathErrorStats(properties);\n    };\n\n    /**\n     * Encodes the specified PathErrorStats message. Does not implicitly {@link PathErrorStats.verify|verify} messages.\n     * @function encode\n     * @memberof PathErrorStats\n     * @static\n     * @param {IPathErrorStats} message PathErrorStats message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    PathErrorStats.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.children != null && Object.hasOwnProperty.call(message, \"children\"))\n            for (let keys = Object.keys(message.children), i = 0; i < keys.length; ++i) {\n                writer.uint32(/* id 1, wireType 2 =*/10).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]);\n                $root.PathErrorStats.encode(message.children[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim();\n            }\n        if (message.errorsCount != null && Object.hasOwnProperty.call(message, \"errorsCount\"))\n            writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.errorsCount);\n        if (message.requestsWithErrorsCount != null && Object.hasOwnProperty.call(message, \"requestsWithErrorsCount\"))\n            writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.requestsWithErrorsCount);\n        return writer;\n    };\n\n    /**\n     * Encodes the specified PathErrorStats message, length delimited. Does not implicitly {@link PathErrorStats.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof PathErrorStats\n     * @static\n     * @param {IPathErrorStats} message PathErrorStats message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    PathErrorStats.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a PathErrorStats message from the specified reader or buffer.\n     * @function decode\n     * @memberof PathErrorStats\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {PathErrorStats} PathErrorStats\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    PathErrorStats.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        let end = length === undefined ? reader.len : reader.pos + length, message = new $root.PathErrorStats(), key;\n        while (reader.pos < end) {\n            let tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 1:\n                reader.skip().pos++;\n                if (message.children === $util.emptyObject)\n                    message.children = {};\n                key = reader.string();\n                reader.pos++;\n                message.children[key] = $root.PathErrorStats.decode(reader, reader.uint32());\n                break;\n            case 4:\n                message.errorsCount = reader.uint64();\n                break;\n            case 5:\n                message.requestsWithErrorsCount = reader.uint64();\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a PathErrorStats message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof PathErrorStats\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {PathErrorStats} PathErrorStats\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    PathErrorStats.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a PathErrorStats message.\n     * @function verify\n     * @memberof PathErrorStats\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    PathErrorStats.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.children != null && message.hasOwnProperty(\"children\")) {\n            if (!$util.isObject(message.children))\n                return \"children: object expected\";\n            let key = Object.keys(message.children);\n            for (let i = 0; i < key.length; ++i) {\n                let error = $root.PathErrorStats.verify(message.children[key[i]]);\n                if (error)\n                    return \"children.\" + error;\n            }\n        }\n        if (message.errorsCount != null && message.hasOwnProperty(\"errorsCount\"))\n            if (!$util.isInteger(message.errorsCount) && !(message.errorsCount && $util.isInteger(message.errorsCount.low) && $util.isInteger(message.errorsCount.high)))\n                return \"errorsCount: integer|Long expected\";\n        if (message.requestsWithErrorsCount != null && message.hasOwnProperty(\"requestsWithErrorsCount\"))\n            if (!$util.isInteger(message.requestsWithErrorsCount) && !(message.requestsWithErrorsCount && $util.isInteger(message.requestsWithErrorsCount.low) && $util.isInteger(message.requestsWithErrorsCount.high)))\n                return \"requestsWithErrorsCount: integer|Long expected\";\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a PathErrorStats message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof PathErrorStats\n     * @static\n     * @param {PathErrorStats} message PathErrorStats\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    PathErrorStats.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        let object = {};\n        if (options.objects || options.defaults)\n            object.children = {};\n        if (options.defaults) {\n            object.errorsCount = 0;\n            object.requestsWithErrorsCount = 0;\n        }\n        let keys2;\n        if (message.children && (keys2 = Object.keys(message.children)).length) {\n            object.children = {};\n            for (let j = 0; j < keys2.length; ++j)\n                object.children[keys2[j]] = $root.PathErrorStats.toObject(message.children[keys2[j]], options);\n        }\n        if (message.errorsCount != null && message.hasOwnProperty(\"errorsCount\"))\n            if (typeof message.errorsCount === \"number\")\n                object.errorsCount = options.longs === String ? String(message.errorsCount) : message.errorsCount;\n            else\n                object.errorsCount = options.longs === String ? $util.Long.prototype.toString.call(message.errorsCount) : options.longs === Number ? new $util.LongBits(message.errorsCount.low >>> 0, message.errorsCount.high >>> 0).toNumber(true) : message.errorsCount;\n        if (message.requestsWithErrorsCount != null && message.hasOwnProperty(\"requestsWithErrorsCount\"))\n            if (typeof message.requestsWithErrorsCount === \"number\")\n                object.requestsWithErrorsCount = options.longs === String ? String(message.requestsWithErrorsCount) : message.requestsWithErrorsCount;\n            else\n                object.requestsWithErrorsCount = options.longs === String ? $util.Long.prototype.toString.call(message.requestsWithErrorsCount) : options.longs === Number ? new $util.LongBits(message.requestsWithErrorsCount.low >>> 0, message.requestsWithErrorsCount.high >>> 0).toNumber(true) : message.requestsWithErrorsCount;\n        return object;\n    };\n\n    /**\n     * Converts this PathErrorStats to JSON.\n     * @function toJSON\n     * @memberof PathErrorStats\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    PathErrorStats.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    return PathErrorStats;\n})();\n\nexport const QueryLatencyStats = $root.QueryLatencyStats = (() => {\n\n    /**\n     * Properties of a QueryLatencyStats.\n     * @exports IQueryLatencyStats\n     * @interface IQueryLatencyStats\n     * @property {$protobuf.ToArray.<number>|Array.<number>|null} [latencyCount] QueryLatencyStats latencyCount\n     * @property {number|null} [requestCount] QueryLatencyStats requestCount\n     * @property {number|null} [cacheHits] QueryLatencyStats cacheHits\n     * @property {number|null} [persistedQueryHits] QueryLatencyStats persistedQueryHits\n     * @property {number|null} [persistedQueryMisses] QueryLatencyStats persistedQueryMisses\n     * @property {$protobuf.ToArray.<number>|Array.<number>|null} [cacheLatencyCount] QueryLatencyStats cacheLatencyCount\n     * @property {IPathErrorStats|null} [rootErrorStats] QueryLatencyStats rootErrorStats\n     * @property {number|null} [requestsWithErrorsCount] QueryLatencyStats requestsWithErrorsCount\n     * @property {$protobuf.ToArray.<number>|Array.<number>|null} [publicCacheTtlCount] QueryLatencyStats publicCacheTtlCount\n     * @property {$protobuf.ToArray.<number>|Array.<number>|null} [privateCacheTtlCount] QueryLatencyStats privateCacheTtlCount\n     * @property {number|null} [registeredOperationCount] QueryLatencyStats registeredOperationCount\n     * @property {number|null} [forbiddenOperationCount] QueryLatencyStats forbiddenOperationCount\n     * @property {number|null} [requestsWithoutFieldInstrumentation] QueryLatencyStats requestsWithoutFieldInstrumentation\n     */\n\n    /**\n     * Constructs a new QueryLatencyStats.\n     * @exports QueryLatencyStats\n     * @classdesc Represents a QueryLatencyStats.\n     * @implements IQueryLatencyStats\n     * @constructor\n     * @param {IQueryLatencyStats=} [properties] Properties to set\n     */\n    function QueryLatencyStats(properties) {\n        this.latencyCount = [];\n        this.cacheLatencyCount = [];\n        this.publicCacheTtlCount = [];\n        this.privateCacheTtlCount = [];\n        if (properties)\n            for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * QueryLatencyStats latencyCount.\n     * @member {Array.<number>} latencyCount\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.latencyCount = $util.emptyArray;\n\n    /**\n     * QueryLatencyStats requestCount.\n     * @member {number} requestCount\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.requestCount = 0;\n\n    /**\n     * QueryLatencyStats cacheHits.\n     * @member {number} cacheHits\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.cacheHits = 0;\n\n    /**\n     * QueryLatencyStats persistedQueryHits.\n     * @member {number} persistedQueryHits\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.persistedQueryHits = 0;\n\n    /**\n     * QueryLatencyStats persistedQueryMisses.\n     * @member {number} persistedQueryMisses\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.persistedQueryMisses = 0;\n\n    /**\n     * QueryLatencyStats cacheLatencyCount.\n     * @member {Array.<number>} cacheLatencyCount\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.cacheLatencyCount = $util.emptyArray;\n\n    /**\n     * QueryLatencyStats rootErrorStats.\n     * @member {IPathErrorStats|null|undefined} rootErrorStats\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.rootErrorStats = null;\n\n    /**\n     * QueryLatencyStats requestsWithErrorsCount.\n     * @member {number} requestsWithErrorsCount\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.requestsWithErrorsCount = 0;\n\n    /**\n     * QueryLatencyStats publicCacheTtlCount.\n     * @member {Array.<number>} publicCacheTtlCount\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.publicCacheTtlCount = $util.emptyArray;\n\n    /**\n     * QueryLatencyStats privateCacheTtlCount.\n     * @member {Array.<number>} privateCacheTtlCount\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.privateCacheTtlCount = $util.emptyArray;\n\n    /**\n     * QueryLatencyStats registeredOperationCount.\n     * @member {number} registeredOperationCount\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.registeredOperationCount = 0;\n\n    /**\n     * QueryLatencyStats forbiddenOperationCount.\n     * @member {number} forbiddenOperationCount\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.forbiddenOperationCount = 0;\n\n    /**\n     * QueryLatencyStats requestsWithoutFieldInstrumentation.\n     * @member {number} requestsWithoutFieldInstrumentation\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.requestsWithoutFieldInstrumentation = 0;\n\n    /**\n     * Creates a new QueryLatencyStats instance using the specified properties.\n     * @function create\n     * @memberof QueryLatencyStats\n     * @static\n     * @param {IQueryLatencyStats=} [properties] Properties to set\n     * @returns {QueryLatencyStats} QueryLatencyStats instance\n     */\n    QueryLatencyStats.create = function create(properties) {\n        return new QueryLatencyStats(properties);\n    };\n\n    /**\n     * Encodes the specified QueryLatencyStats message. Does not implicitly {@link QueryLatencyStats.verify|verify} messages.\n     * @function encode\n     * @memberof QueryLatencyStats\n     * @static\n     * @param {IQueryLatencyStats} message QueryLatencyStats message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    QueryLatencyStats.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.requestCount != null && Object.hasOwnProperty.call(message, \"requestCount\"))\n            writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.requestCount);\n        if (message.cacheHits != null && Object.hasOwnProperty.call(message, \"cacheHits\"))\n            writer.uint32(/* id 3, wireType 0 =*/24).uint64(message.cacheHits);\n        if (message.persistedQueryHits != null && Object.hasOwnProperty.call(message, \"persistedQueryHits\"))\n            writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.persistedQueryHits);\n        if (message.persistedQueryMisses != null && Object.hasOwnProperty.call(message, \"persistedQueryMisses\"))\n            writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.persistedQueryMisses);\n        if (message.rootErrorStats != null && Object.hasOwnProperty.call(message, \"rootErrorStats\"))\n            $root.PathErrorStats.encode(message.rootErrorStats, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();\n        if (message.requestsWithErrorsCount != null && Object.hasOwnProperty.call(message, \"requestsWithErrorsCount\"))\n            writer.uint32(/* id 8, wireType 0 =*/64).uint64(message.requestsWithErrorsCount);\n        if (message.registeredOperationCount != null && Object.hasOwnProperty.call(message, \"registeredOperationCount\"))\n            writer.uint32(/* id 11, wireType 0 =*/88).uint64(message.registeredOperationCount);\n        if (message.forbiddenOperationCount != null && Object.hasOwnProperty.call(message, \"forbiddenOperationCount\"))\n            writer.uint32(/* id 12, wireType 0 =*/96).uint64(message.forbiddenOperationCount);\n        let array13;\n        if (message.latencyCount != null && message.latencyCount.toArray)\n            array13 = message.latencyCount.toArray();\n        else\n            array13 = message.latencyCount;\n        if (array13 != null && array13.length) {\n            writer.uint32(/* id 13, wireType 2 =*/106).fork();\n            for (let i = 0; i < array13.length; ++i)\n                writer.sint64(array13[i]);\n            writer.ldelim();\n        }\n        let array14;\n        if (message.cacheLatencyCount != null && message.cacheLatencyCount.toArray)\n            array14 = message.cacheLatencyCount.toArray();\n        else\n            array14 = message.cacheLatencyCount;\n        if (array14 != null && array14.length) {\n            writer.uint32(/* id 14, wireType 2 =*/114).fork();\n            for (let i = 0; i < array14.length; ++i)\n                writer.sint64(array14[i]);\n            writer.ldelim();\n        }\n        let array15;\n        if (message.publicCacheTtlCount != null && message.publicCacheTtlCount.toArray)\n            array15 = message.publicCacheTtlCount.toArray();\n        else\n            array15 = message.publicCacheTtlCount;\n        if (array15 != null && array15.length) {\n            writer.uint32(/* id 15, wireType 2 =*/122).fork();\n            for (let i = 0; i < array15.length; ++i)\n                writer.sint64(array15[i]);\n            writer.ldelim();\n        }\n        let array16;\n        if (message.privateCacheTtlCount != null && message.privateCacheTtlCount.toArray)\n            array16 = message.privateCacheTtlCount.toArray();\n        else\n            array16 = message.privateCacheTtlCount;\n        if (array16 != null && array16.length) {\n            writer.uint32(/* id 16, wireType 2 =*/130).fork();\n            for (let i = 0; i < array16.length; ++i)\n                writer.sint64(array16[i]);\n            writer.ldelim();\n        }\n        if (message.requestsWithoutFieldInstrumentation != null && Object.hasOwnProperty.call(message, \"requestsWithoutFieldInstrumentation\"))\n            writer.uint32(/* id 17, wireType 0 =*/136).uint64(message.requestsWithoutFieldInstrumentation);\n        return writer;\n    };\n\n    /**\n     * Encodes the specified QueryLatencyStats message, length delimited. Does not implicitly {@link QueryLatencyStats.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof QueryLatencyStats\n     * @static\n     * @param {IQueryLatencyStats} message QueryLatencyStats message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    QueryLatencyStats.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a QueryLatencyStats message from the specified reader or buffer.\n     * @function decode\n     * @memberof QueryLatencyStats\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {QueryLatencyStats} QueryLatencyStats\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    QueryLatencyStats.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        let end = length === undefined ? reader.len : reader.pos + length, message = new $root.QueryLatencyStats();\n        while (reader.pos < end) {\n            let tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 13:\n                if (!(message.latencyCount && message.latencyCount.length))\n                    message.latencyCount = [];\n                if ((tag & 7) === 2) {\n                    let end2 = reader.uint32() + reader.pos;\n                    while (reader.pos < end2)\n                        message.latencyCount.push(reader.sint64());\n                } else\n                    message.latencyCount.push(reader.sint64());\n                break;\n            case 2:\n                message.requestCount = reader.uint64();\n                break;\n            case 3:\n                message.cacheHits = reader.uint64();\n                break;\n            case 4:\n                message.persistedQueryHits = reader.uint64();\n                break;\n            case 5:\n                message.persistedQueryMisses = reader.uint64();\n                break;\n            case 14:\n                if (!(message.cacheLatencyCount && message.cacheLatencyCount.length))\n                    message.cacheLatencyCount = [];\n                if ((tag & 7) === 2) {\n                    let end2 = reader.uint32() + reader.pos;\n                    while (reader.pos < end2)\n                        message.cacheLatencyCount.push(reader.sint64());\n                } else\n                    message.cacheLatencyCount.push(reader.sint64());\n                break;\n            case 7:\n                message.rootErrorStats = $root.PathErrorStats.decode(reader, reader.uint32());\n                break;\n            case 8:\n                message.requestsWithErrorsCount = reader.uint64();\n                break;\n            case 15:\n                if (!(message.publicCacheTtlCount && message.publicCacheTtlCount.length))\n                    message.publicCacheTtlCount = [];\n                if ((tag & 7) === 2) {\n                    let end2 = reader.uint32() + reader.pos;\n                    while (reader.pos < end2)\n                        message.publicCacheTtlCount.push(reader.sint64());\n                } else\n                    message.publicCacheTtlCount.push(reader.sint64());\n                break;\n            case 16:\n                if (!(message.privateCacheTtlCount && message.privateCacheTtlCount.length))\n                    message.privateCacheTtlCount = [];\n                if ((tag & 7) === 2) {\n                    let end2 = reader.uint32() + reader.pos;\n                    while (reader.pos < end2)\n                        message.privateCacheTtlCount.push(reader.sint64());\n                } else\n                    message.privateCacheTtlCount.push(reader.sint64());\n                break;\n            case 11:\n                message.registeredOperationCount = reader.uint64();\n                break;\n            case 12:\n                message.forbiddenOperationCount = reader.uint64();\n                break;\n            case 17:\n                message.requestsWithoutFieldInstrumentation = reader.uint64();\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a QueryLatencyStats message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof QueryLatencyStats\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {QueryLatencyStats} QueryLatencyStats\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    QueryLatencyStats.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a QueryLatencyStats message.\n     * @function verify\n     * @memberof QueryLatencyStats\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    QueryLatencyStats.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.latencyCount != null && message.hasOwnProperty(\"latencyCount\")) {\n            let array13;\n            if (message.latencyCount != null && message.latencyCount.toArray)\n                array13 = message.latencyCount.toArray();\n            else\n                array13 = message.latencyCount;\n            if (!Array.isArray(array13))\n                return \"latencyCount: array expected\";\n            for (let i = 0; i < array13.length; ++i)\n                if (!$util.isInteger(array13[i]) && !(array13[i] && $util.isInteger(array13[i].low) && $util.isInteger(array13[i].high)))\n                    return \"latencyCount: integer|Long[] expected\";\n        }\n        if (message.requestCount != null && message.hasOwnProperty(\"requestCount\"))\n            if (!$util.isInteger(message.requestCount) && !(message.requestCount && $util.isInteger(message.requestCount.low) && $util.isInteger(message.requestCount.high)))\n                return \"requestCount: integer|Long expected\";\n        if (message.cacheHits != null && message.hasOwnProperty(\"cacheHits\"))\n            if (!$util.isInteger(message.cacheHits) && !(message.cacheHits && $util.isInteger(message.cacheHits.low) && $util.isInteger(message.cacheHits.high)))\n                return \"cacheHits: integer|Long expected\";\n        if (message.persistedQueryHits != null && message.hasOwnProperty(\"persistedQueryHits\"))\n            if (!$util.isInteger(message.persistedQueryHits) && !(message.persistedQueryHits && $util.isInteger(message.persistedQueryHits.low) && $util.isInteger(message.persistedQueryHits.high)))\n                return \"persistedQueryHits: integer|Long expected\";\n        if (message.persistedQueryMisses != null && message.hasOwnProperty(\"persistedQueryMisses\"))\n            if (!$util.isInteger(message.persistedQueryMisses) && !(message.persistedQueryMisses && $util.isInteger(message.persistedQueryMisses.low) && $util.isInteger(message.persistedQueryMisses.high)))\n                return \"persistedQueryMisses: integer|Long expected\";\n        if (message.cacheLatencyCount != null && message.hasOwnProperty(\"cacheLatencyCount\")) {\n            let array14;\n            if (message.cacheLatencyCount != null && message.cacheLatencyCount.toArray)\n                array14 = message.cacheLatencyCount.toArray();\n            else\n                array14 = message.cacheLatencyCount;\n            if (!Array.isArray(array14))\n                return \"cacheLatencyCount: array expected\";\n            for (let i = 0; i < array14.length; ++i)\n                if (!$util.isInteger(array14[i]) && !(array14[i] && $util.isInteger(array14[i].low) && $util.isInteger(array14[i].high)))\n                    return \"cacheLatencyCount: integer|Long[] expected\";\n        }\n        if (message.rootErrorStats != null && message.hasOwnProperty(\"rootErrorStats\")) {\n            let error = $root.PathErrorStats.verify(message.rootErrorStats);\n            if (error)\n                return \"rootErrorStats.\" + error;\n        }\n        if (message.requestsWithErrorsCount != null && message.hasOwnProperty(\"requestsWithErrorsCount\"))\n            if (!$util.isInteger(message.requestsWithErrorsCount) && !(message.requestsWithErrorsCount && $util.isInteger(message.requestsWithErrorsCount.low) && $util.isInteger(message.requestsWithErrorsCount.high)))\n                return \"requestsWithErrorsCount: integer|Long expected\";\n        if (message.publicCacheTtlCount != null && message.hasOwnProperty(\"publicCacheTtlCount\")) {\n            let array15;\n            if (message.publicCacheTtlCount != null && message.publicCacheTtlCount.toArray)\n                array15 = message.publicCacheTtlCount.toArray();\n            else\n                array15 = message.publicCacheTtlCount;\n            if (!Array.isArray(array15))\n                return \"publicCacheTtlCount: array expected\";\n            for (let i = 0; i < array15.length; ++i)\n                if (!$util.isInteger(array15[i]) && !(array15[i] && $util.isInteger(array15[i].low) && $util.isInteger(array15[i].high)))\n                    return \"publicCacheTtlCount: integer|Long[] expected\";\n        }\n        if (message.privateCacheTtlCount != null && message.hasOwnProperty(\"privateCacheTtlCount\")) {\n            let array16;\n            if (message.privateCacheTtlCount != null && message.privateCacheTtlCount.toArray)\n                array16 = message.privateCacheTtlCount.toArray();\n            else\n                array16 = message.privateCacheTtlCount;\n            if (!Array.isArray(array16))\n                return \"privateCacheTtlCount: array expected\";\n            for (let i = 0; i < array16.length; ++i)\n                if (!$util.isInteger(array16[i]) && !(array16[i] && $util.isInteger(array16[i].low) && $util.isInteger(array16[i].high)))\n                    return \"privateCacheTtlCount: integer|Long[] expected\";\n        }\n        if (message.registeredOperationCount != null && message.hasOwnProperty(\"registeredOperationCount\"))\n            if (!$util.isInteger(message.registeredOperationCount) && !(message.registeredOperationCount && $util.isInteger(message.registeredOperationCount.low) && $util.isInteger(message.registeredOperationCount.high)))\n                return \"registeredOperationCount: integer|Long expected\";\n        if (message.forbiddenOperationCount != null && message.hasOwnProperty(\"forbiddenOperationCount\"))\n            if (!$util.isInteger(message.forbiddenOperationCount) && !(message.forbiddenOperationCount && $util.isInteger(message.forbiddenOperationCount.low) && $util.isInteger(message.forbiddenOperationCount.high)))\n                return \"forbiddenOperationCount: integer|Long expected\";\n        if (message.requestsWithoutFieldInstrumentation != null && message.hasOwnProperty(\"requestsWithoutFieldInstrumentation\"))\n            if (!$util.isInteger(message.requestsWithoutFieldInstrumentation) && !(message.requestsWithoutFieldInstrumentation && $util.isInteger(message.requestsWithoutFieldInstrumentation.low) && $util.isInteger(message.requestsWithoutFieldInstrumentation.high)))\n                return \"requestsWithoutFieldInstrumentation: integer|Long expected\";\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a QueryLatencyStats message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof QueryLatencyStats\n     * @static\n     * @param {QueryLatencyStats} message QueryLatencyStats\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    QueryLatencyStats.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        let object = {};\n        if (options.arrays || options.defaults) {\n            object.latencyCount = [];\n            object.cacheLatencyCount = [];\n            object.publicCacheTtlCount = [];\n            object.privateCacheTtlCount = [];\n        }\n        if (options.defaults) {\n            object.requestCount = 0;\n            object.cacheHits = 0;\n            object.persistedQueryHits = 0;\n            object.persistedQueryMisses = 0;\n            object.rootErrorStats = null;\n            object.requestsWithErrorsCount = 0;\n            object.registeredOperationCount = 0;\n            object.forbiddenOperationCount = 0;\n            object.requestsWithoutFieldInstrumentation = 0;\n        }\n        if (message.requestCount != null && message.hasOwnProperty(\"requestCount\"))\n            if (typeof message.requestCount === \"number\")\n                object.requestCount = options.longs === String ? String(message.requestCount) : message.requestCount;\n            else\n                object.requestCount = options.longs === String ? $util.Long.prototype.toString.call(message.requestCount) : options.longs === Number ? new $util.LongBits(message.requestCount.low >>> 0, message.requestCount.high >>> 0).toNumber(true) : message.requestCount;\n        if (message.cacheHits != null && message.hasOwnProperty(\"cacheHits\"))\n            if (typeof message.cacheHits === \"number\")\n                object.cacheHits = options.longs === String ? String(message.cacheHits) : message.cacheHits;\n            else\n                object.cacheHits = options.longs === String ? $util.Long.prototype.toString.call(message.cacheHits) : options.longs === Number ? new $util.LongBits(message.cacheHits.low >>> 0, message.cacheHits.high >>> 0).toNumber(true) : message.cacheHits;\n        if (message.persistedQueryHits != null && message.hasOwnProperty(\"persistedQueryHits\"))\n            if (typeof message.persistedQueryHits === \"number\")\n                object.persistedQueryHits = options.longs === String ? String(message.persistedQueryHits) : message.persistedQueryHits;\n            else\n                object.persistedQueryHits = options.longs === String ? $util.Long.prototype.toString.call(message.persistedQueryHits) : options.longs === Number ? new $util.LongBits(message.persistedQueryHits.low >>> 0, message.persistedQueryHits.high >>> 0).toNumber(true) : message.persistedQueryHits;\n        if (message.persistedQueryMisses != null && message.hasOwnProperty(\"persistedQueryMisses\"))\n            if (typeof message.persistedQueryMisses === \"number\")\n                object.persistedQueryMisses = options.longs === String ? String(message.persistedQueryMisses) : message.persistedQueryMisses;\n            else\n                object.persistedQueryMisses = options.longs === String ? $util.Long.prototype.toString.call(message.persistedQueryMisses) : options.longs === Number ? new $util.LongBits(message.persistedQueryMisses.low >>> 0, message.persistedQueryMisses.high >>> 0).toNumber(true) : message.persistedQueryMisses;\n        if (message.rootErrorStats != null && message.hasOwnProperty(\"rootErrorStats\"))\n            object.rootErrorStats = $root.PathErrorStats.toObject(message.rootErrorStats, options);\n        if (message.requestsWithErrorsCount != null && message.hasOwnProperty(\"requestsWithErrorsCount\"))\n            if (typeof message.requestsWithErrorsCount === \"number\")\n                object.requestsWithErrorsCount = options.longs === String ? String(message.requestsWithErrorsCount) : message.requestsWithErrorsCount;\n            else\n                object.requestsWithErrorsCount = options.longs === String ? $util.Long.prototype.toString.call(message.requestsWithErrorsCount) : options.longs === Number ? new $util.LongBits(message.requestsWithErrorsCount.low >>> 0, message.requestsWithErrorsCount.high >>> 0).toNumber(true) : message.requestsWithErrorsCount;\n        if (message.registeredOperationCount != null && message.hasOwnProperty(\"registeredOperationCount\"))\n            if (typeof message.registeredOperationCount === \"number\")\n                object.registeredOperationCount = options.longs === String ? String(message.registeredOperationCount) : message.registeredOperationCount;\n            else\n                object.registeredOperationCount = options.longs === String ? $util.Long.prototype.toString.call(message.registeredOperationCount) : options.longs === Number ? new $util.LongBits(message.registeredOperationCount.low >>> 0, message.registeredOperationCount.high >>> 0).toNumber(true) : message.registeredOperationCount;\n        if (message.forbiddenOperationCount != null && message.hasOwnProperty(\"forbiddenOperationCount\"))\n            if (typeof message.forbiddenOperationCount === \"number\")\n                object.forbiddenOperationCount = options.longs === String ? String(message.forbiddenOperationCount) : message.forbiddenOperationCount;\n            else\n                object.forbiddenOperationCount = options.longs === String ? $util.Long.prototype.toString.call(message.forbiddenOperationCount) : options.longs === Number ? new $util.LongBits(message.forbiddenOperationCount.low >>> 0, message.forbiddenOperationCount.high >>> 0).toNumber(true) : message.forbiddenOperationCount;\n        if (message.latencyCount && message.latencyCount.length) {\n            object.latencyCount = [];\n            for (let j = 0; j < message.latencyCount.length; ++j)\n                if (typeof message.latencyCount[j] === \"number\")\n                    object.latencyCount[j] = options.longs === String ? String(message.latencyCount[j]) : message.latencyCount[j];\n                else\n                    object.latencyCount[j] = options.longs === String ? $util.Long.prototype.toString.call(message.latencyCount[j]) : options.longs === Number ? new $util.LongBits(message.latencyCount[j].low >>> 0, message.latencyCount[j].high >>> 0).toNumber() : message.latencyCount[j];\n        }\n        if (message.cacheLatencyCount && message.cacheLatencyCount.length) {\n            object.cacheLatencyCount = [];\n            for (let j = 0; j < message.cacheLatencyCount.length; ++j)\n                if (typeof message.cacheLatencyCount[j] === \"number\")\n                    object.cacheLatencyCount[j] = options.longs === String ? String(message.cacheLatencyCount[j]) : message.cacheLatencyCount[j];\n                else\n                    object.cacheLatencyCount[j] = options.longs === String ? $util.Long.prototype.toString.call(message.cacheLatencyCount[j]) : options.longs === Number ? new $util.LongBits(message.cacheLatencyCount[j].low >>> 0, message.cacheLatencyCount[j].high >>> 0).toNumber() : message.cacheLatencyCount[j];\n        }\n        if (message.publicCacheTtlCount && message.publicCacheTtlCount.length) {\n            object.publicCacheTtlCount = [];\n            for (let j = 0; j < message.publicCacheTtlCount.length; ++j)\n                if (typeof message.publicCacheTtlCount[j] === \"number\")\n                    object.publicCacheTtlCount[j] = options.longs === String ? String(message.publicCacheTtlCount[j]) : message.publicCacheTtlCount[j];\n                else\n                    object.publicCacheTtlCount[j] = options.longs === String ? $util.Long.prototype.toString.call(message.publicCacheTtlCount[j]) : options.longs === Number ? new $util.LongBits(message.publicCacheTtlCount[j].low >>> 0, message.publicCacheTtlCount[j].high >>> 0).toNumber() : message.publicCacheTtlCount[j];\n        }\n        if (message.privateCacheTtlCount && message.privateCacheTtlCount.length) {\n            object.privateCacheTtlCount = [];\n            for (let j = 0; j < message.privateCacheTtlCount.length; ++j)\n                if (typeof message.privateCacheTtlCount[j] === \"number\")\n                    object.privateCacheTtlCount[j] = options.longs === String ? String(message.privateCacheTtlCount[j]) : message.privateCacheTtlCount[j];\n                else\n                    object.privateCacheTtlCount[j] = options.longs === String ? $util.Long.prototype.toString.call(message.privateCacheTtlCount[j]) : options.longs === Number ? new $util.LongBits(message.privateCacheTtlCount[j].low >>> 0, message.privateCacheTtlCount[j].high >>> 0).toNumber() : message.privateCacheTtlCount[j];\n        }\n        if (message.requestsWithoutFieldInstrumentation != null && message.hasOwnProperty(\"requestsWithoutFieldInstrumentation\"))\n            if (typeof message.requestsWithoutFieldInstrumentation === \"number\")\n                object.requestsWithoutFieldInstrumentation = options.longs === String ? String(message.requestsWithoutFieldInstrumentation) : message.requestsWithoutFieldInstrumentation;\n            else\n                object.requestsWithoutFieldInstrumentation = options.longs === String ? $util.Long.prototype.toString.call(message.requestsWithoutFieldInstrumentation) : options.longs === Number ? new $util.LongBits(message.requestsWithoutFieldInstrumentation.low >>> 0, message.requestsWithoutFieldInstrumentation.high >>> 0).toNumber(true) : message.requestsWithoutFieldInstrumentation;\n        return object;\n    };\n\n    /**\n     * Converts this QueryLatencyStats to JSON.\n     * @function toJSON\n     * @memberof QueryLatencyStats\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    QueryLatencyStats.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    return QueryLatencyStats;\n})();\n\nexport const StatsContext = $root.StatsContext = (() => {\n\n    /**\n     * Properties of a StatsContext.\n     * @exports IStatsContext\n     * @interface IStatsContext\n     * @property {string|null} [clientName] StatsContext clientName\n     * @property {string|null} [clientVersion] StatsContext clientVersion\n     */\n\n    /**\n     * Constructs a new StatsContext.\n     * @exports StatsContext\n     * @classdesc Represents a StatsContext.\n     * @implements IStatsContext\n     * @constructor\n     * @param {IStatsContext=} [properties] Properties to set\n     */\n    function StatsContext(properties) {\n        if (properties)\n            for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * StatsContext clientName.\n     * @member {string} clientName\n     * @memberof StatsContext\n     * @instance\n     */\n    StatsContext.prototype.clientName = \"\";\n\n    /**\n     * StatsContext clientVersion.\n     * @member {string} clientVersion\n     * @memberof StatsContext\n     * @instance\n     */\n    StatsContext.prototype.clientVersion = \"\";\n\n    /**\n     * Creates a new StatsContext instance using the specified properties.\n     * @function create\n     * @memberof StatsContext\n     * @static\n     * @param {IStatsContext=} [properties] Properties to set\n     * @returns {StatsContext} StatsContext instance\n     */\n    StatsContext.create = function create(properties) {\n        return new StatsContext(properties);\n    };\n\n    /**\n     * Encodes the specified StatsContext message. Does not implicitly {@link StatsContext.verify|verify} messages.\n     * @function encode\n     * @memberof StatsContext\n     * @static\n     * @param {IStatsContext} message StatsContext message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    StatsContext.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.clientName != null && Object.hasOwnProperty.call(message, \"clientName\"))\n            writer.uint32(/* id 2, wireType 2 =*/18).string(message.clientName);\n        if (message.clientVersion != null && Object.hasOwnProperty.call(message, \"clientVersion\"))\n            writer.uint32(/* id 3, wireType 2 =*/26).string(message.clientVersion);\n        return writer;\n    };\n\n    /**\n     * Encodes the specified StatsContext message, length delimited. Does not implicitly {@link StatsContext.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof StatsContext\n     * @static\n     * @param {IStatsContext} message StatsContext message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    StatsContext.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a StatsContext message from the specified reader or buffer.\n     * @function decode\n     * @memberof StatsContext\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {StatsContext} StatsContext\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    StatsContext.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        let end = length === undefined ? reader.len : reader.pos + length, message = new $root.StatsContext();\n        while (reader.pos < end) {\n            let tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 2:\n                message.clientName = reader.string();\n                break;\n            case 3:\n                message.clientVersion = reader.string();\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a StatsContext message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof StatsContext\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {StatsContext} StatsContext\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    StatsContext.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a StatsContext message.\n     * @function verify\n     * @memberof StatsContext\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    StatsContext.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.clientName != null && message.hasOwnProperty(\"clientName\"))\n            if (!$util.isString(message.clientName))\n                return \"clientName: string expected\";\n        if (message.clientVersion != null && message.hasOwnProperty(\"clientVersion\"))\n            if (!$util.isString(message.clientVersion))\n                return \"clientVersion: string expected\";\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a StatsContext message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof StatsContext\n     * @static\n     * @param {StatsContext} message StatsContext\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    StatsContext.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        let object = {};\n        if (options.defaults) {\n            object.clientName = \"\";\n            object.clientVersion = \"\";\n        }\n        if (message.clientName != null && message.hasOwnProperty(\"clientName\"))\n            object.clientName = message.clientName;\n        if (message.clientVersion != null && message.hasOwnProperty(\"clientVersion\"))\n            object.clientVersion = message.clientVersion;\n        return object;\n    };\n\n    /**\n     * Converts this StatsContext to JSON.\n     * @function toJSON\n     * @memberof StatsContext\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    StatsContext.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    return StatsContext;\n})();\n\nexport const ContextualizedQueryLatencyStats = $root.ContextualizedQueryLatencyStats = (() => {\n\n    /**\n     * Properties of a ContextualizedQueryLatencyStats.\n     * @exports IContextualizedQueryLatencyStats\n     * @interface IContextualizedQueryLatencyStats\n     * @property {IQueryLatencyStats|null} [queryLatencyStats] ContextualizedQueryLatencyStats queryLatencyStats\n     * @property {IStatsContext|null} [context] ContextualizedQueryLatencyStats context\n     */\n\n    /**\n     * Constructs a new ContextualizedQueryLatencyStats.\n     * @exports ContextualizedQueryLatencyStats\n     * @classdesc Represents a ContextualizedQueryLatencyStats.\n     * @implements IContextualizedQueryLatencyStats\n     * @constructor\n     * @param {IContextualizedQueryLatencyStats=} [properties] Properties to set\n     */\n    function ContextualizedQueryLatencyStats(properties) {\n        if (properties)\n            for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * ContextualizedQueryLatencyStats queryLatencyStats.\n     * @member {IQueryLatencyStats|null|undefined} queryLatencyStats\n     * @memberof ContextualizedQueryLatencyStats\n     * @instance\n     */\n    ContextualizedQueryLatencyStats.prototype.queryLatencyStats = null;\n\n    /**\n     * ContextualizedQueryLatencyStats context.\n     * @member {IStatsContext|null|undefined} context\n     * @memberof ContextualizedQueryLatencyStats\n     * @instance\n     */\n    ContextualizedQueryLatencyStats.prototype.context = null;\n\n    /**\n     * Creates a new ContextualizedQueryLatencyStats instance using the specified properties.\n     * @function create\n     * @memberof ContextualizedQueryLatencyStats\n     * @static\n     * @param {IContextualizedQueryLatencyStats=} [properties] Properties to set\n     * @returns {ContextualizedQueryLatencyStats} ContextualizedQueryLatencyStats instance\n     */\n    ContextualizedQueryLatencyStats.create = function create(properties) {\n        return new ContextualizedQueryLatencyStats(properties);\n    };\n\n    /**\n     * Encodes the specified ContextualizedQueryLatencyStats message. Does not implicitly {@link ContextualizedQueryLatencyStats.verify|verify} messages.\n     * @function encode\n     * @memberof ContextualizedQueryLatencyStats\n     * @static\n     * @param {IContextualizedQueryLatencyStats} message ContextualizedQueryLatencyStats message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    ContextualizedQueryLatencyStats.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.queryLatencyStats != null && Object.hasOwnProperty.call(message, \"queryLatencyStats\"))\n            $root.QueryLatencyStats.encode(message.queryLatencyStats, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n        if (message.context != null && Object.hasOwnProperty.call(message, \"context\"))\n            $root.StatsContext.encode(message.context, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n        return writer;\n    };\n\n    /**\n     * Encodes the specified ContextualizedQueryLatencyStats message, length delimited. Does not implicitly {@link ContextualizedQueryLatencyStats.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof ContextualizedQueryLatencyStats\n     * @static\n     * @param {IContextualizedQueryLatencyStats} message ContextualizedQueryLatencyStats message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    ContextualizedQueryLatencyStats.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a ContextualizedQueryLatencyStats message from the specified reader or buffer.\n     * @function decode\n     * @memberof ContextualizedQueryLatencyStats\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {ContextualizedQueryLatencyStats} ContextualizedQueryLatencyStats\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    ContextualizedQueryLatencyStats.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        let end = length === undefined ? reader.len : reader.pos + length, message = new $root.ContextualizedQueryLatencyStats();\n        while (reader.pos < end) {\n            let tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 1:\n                message.queryLatencyStats = $root.QueryLatencyStats.decode(reader, reader.uint32());\n                break;\n            case 2:\n                message.context = $root.StatsContext.decode(reader, reader.uint32());\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a ContextualizedQueryLatencyStats message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof ContextualizedQueryLatencyStats\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {ContextualizedQueryLatencyStats} ContextualizedQueryLatencyStats\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    ContextualizedQueryLatencyStats.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a ContextualizedQueryLatencyStats message.\n     * @function verify\n     * @memberof ContextualizedQueryLatencyStats\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    ContextualizedQueryLatencyStats.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.queryLatencyStats != null && message.hasOwnProperty(\"queryLatencyStats\")) {\n            let error = $root.QueryLatencyStats.verify(message.queryLatencyStats);\n            if (error)\n                return \"queryLatencyStats.\" + error;\n        }\n        if (message.context != null && message.hasOwnProperty(\"context\")) {\n            let error = $root.StatsContext.verify(message.context);\n            if (error)\n                return \"context.\" + error;\n        }\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a ContextualizedQueryLatencyStats message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof ContextualizedQueryLatencyStats\n     * @static\n     * @param {ContextualizedQueryLatencyStats} message ContextualizedQueryLatencyStats\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    ContextualizedQueryLatencyStats.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        let object = {};\n        if (options.defaults) {\n            object.queryLatencyStats = null;\n            object.context = null;\n        }\n        if (message.queryLatencyStats != null && message.hasOwnProperty(\"queryLatencyStats\"))\n            object.queryLatencyStats = $root.QueryLatencyStats.toObject(message.queryLatencyStats, options);\n        if (message.context != null && message.hasOwnProperty(\"context\"))\n            object.context = $root.StatsContext.toObject(message.context, options);\n        return object;\n    };\n\n    /**\n     * Converts this ContextualizedQueryLatencyStats to JSON.\n     * @function toJSON\n     * @memberof ContextualizedQueryLatencyStats\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    ContextualizedQueryLatencyStats.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    return ContextualizedQueryLatencyStats;\n})();\n\nexport const ContextualizedTypeStats = $root.ContextualizedTypeStats = (() => {\n\n    /**\n     * Properties of a ContextualizedTypeStats.\n     * @exports IContextualizedTypeStats\n     * @interface IContextualizedTypeStats\n     * @property {IStatsContext|null} [context] ContextualizedTypeStats context\n     * @property {Object.<string,ITypeStat>|null} [perTypeStat] ContextualizedTypeStats perTypeStat\n     */\n\n    /**\n     * Constructs a new ContextualizedTypeStats.\n     * @exports ContextualizedTypeStats\n     * @classdesc Represents a ContextualizedTypeStats.\n     * @implements IContextualizedTypeStats\n     * @constructor\n     * @param {IContextualizedTypeStats=} [properties] Properties to set\n     */\n    function ContextualizedTypeStats(properties) {\n        this.perTypeStat = {};\n        if (properties)\n            for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * ContextualizedTypeStats context.\n     * @member {IStatsContext|null|undefined} context\n     * @memberof ContextualizedTypeStats\n     * @instance\n     */\n    ContextualizedTypeStats.prototype.context = null;\n\n    /**\n     * ContextualizedTypeStats perTypeStat.\n     * @member {Object.<string,ITypeStat>} perTypeStat\n     * @memberof ContextualizedTypeStats\n     * @instance\n     */\n    ContextualizedTypeStats.prototype.perTypeStat = $util.emptyObject;\n\n    /**\n     * Creates a new ContextualizedTypeStats instance using the specified properties.\n     * @function create\n     * @memberof ContextualizedTypeStats\n     * @static\n     * @param {IContextualizedTypeStats=} [properties] Properties to set\n     * @returns {ContextualizedTypeStats} ContextualizedTypeStats instance\n     */\n    ContextualizedTypeStats.create = function create(properties) {\n        return new ContextualizedTypeStats(properties);\n    };\n\n    /**\n     * Encodes the specified ContextualizedTypeStats message. Does not implicitly {@link ContextualizedTypeStats.verify|verify} messages.\n     * @function encode\n     * @memberof ContextualizedTypeStats\n     * @static\n     * @param {IContextualizedTypeStats} message ContextualizedTypeStats message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    ContextualizedTypeStats.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.context != null && Object.hasOwnProperty.call(message, \"context\"))\n            $root.StatsContext.encode(message.context, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n        if (message.perTypeStat != null && Object.hasOwnProperty.call(message, \"perTypeStat\"))\n            for (let keys = Object.keys(message.perTypeStat), i = 0; i < keys.length; ++i) {\n                writer.uint32(/* id 2, wireType 2 =*/18).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]);\n                $root.TypeStat.encode(message.perTypeStat[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim();\n            }\n        return writer;\n    };\n\n    /**\n     * Encodes the specified ContextualizedTypeStats message, length delimited. Does not implicitly {@link ContextualizedTypeStats.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof ContextualizedTypeStats\n     * @static\n     * @param {IContextualizedTypeStats} message ContextualizedTypeStats message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    ContextualizedTypeStats.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a ContextualizedTypeStats message from the specified reader or buffer.\n     * @function decode\n     * @memberof ContextualizedTypeStats\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {ContextualizedTypeStats} ContextualizedTypeStats\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    ContextualizedTypeStats.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        let end = length === undefined ? reader.len : reader.pos + length, message = new $root.ContextualizedTypeStats(), key;\n        while (reader.pos < end) {\n            let tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 1:\n                message.context = $root.StatsContext.decode(reader, reader.uint32());\n                break;\n            case 2:\n                reader.skip().pos++;\n                if (message.perTypeStat === $util.emptyObject)\n                    message.perTypeStat = {};\n                key = reader.string();\n                reader.pos++;\n                message.perTypeStat[key] = $root.TypeStat.decode(reader, reader.uint32());\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a ContextualizedTypeStats message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof ContextualizedTypeStats\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {ContextualizedTypeStats} ContextualizedTypeStats\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    ContextualizedTypeStats.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a ContextualizedTypeStats message.\n     * @function verify\n     * @memberof ContextualizedTypeStats\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    ContextualizedTypeStats.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.context != null && message.hasOwnProperty(\"context\")) {\n            let error = $root.StatsContext.verify(message.context);\n            if (error)\n                return \"context.\" + error;\n        }\n        if (message.perTypeStat != null && message.hasOwnProperty(\"perTypeStat\")) {\n            if (!$util.isObject(message.perTypeStat))\n                return \"perTypeStat: object expected\";\n            let key = Object.keys(message.perTypeStat);\n            for (let i = 0; i < key.length; ++i) {\n                let error = $root.TypeStat.verify(message.perTypeStat[key[i]]);\n                if (error)\n                    return \"perTypeStat.\" + error;\n            }\n        }\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a ContextualizedTypeStats message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof ContextualizedTypeStats\n     * @static\n     * @param {ContextualizedTypeStats} message ContextualizedTypeStats\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    ContextualizedTypeStats.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        let object = {};\n        if (options.objects || options.defaults)\n            object.perTypeStat = {};\n        if (options.defaults)\n            object.context = null;\n        if (message.context != null && message.hasOwnProperty(\"context\"))\n            object.context = $root.StatsContext.toObject(message.context, options);\n        let keys2;\n        if (message.perTypeStat && (keys2 = Object.keys(message.perTypeStat)).length) {\n            object.perTypeStat = {};\n            for (let j = 0; j < keys2.length; ++j)\n                object.perTypeStat[keys2[j]] = $root.TypeStat.toObject(message.perTypeStat[keys2[j]], options);\n        }\n        return object;\n    };\n\n    /**\n     * Converts this ContextualizedTypeStats to JSON.\n     * @function toJSON\n     * @memberof ContextualizedTypeStats\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    ContextualizedTypeStats.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    return ContextualizedTypeStats;\n})();\n\nexport const FieldStat = $root.FieldStat = (() => {\n\n    /**\n     * Properties of a FieldStat.\n     * @exports IFieldStat\n     * @interface IFieldStat\n     * @property {string|null} [returnType] FieldStat returnType\n     * @property {number|null} [errorsCount] FieldStat errorsCount\n     * @property {number|null} [observedExecutionCount] FieldStat observedExecutionCount\n     * @property {number|null} [estimatedExecutionCount] FieldStat estimatedExecutionCount\n     * @property {number|null} [requestsWithErrorsCount] FieldStat requestsWithErrorsCount\n     * @property {$protobuf.ToArray.<number>|Array.<number>|null} [latencyCount] FieldStat latencyCount\n     */\n\n    /**\n     * Constructs a new FieldStat.\n     * @exports FieldStat\n     * @classdesc Represents a FieldStat.\n     * @implements IFieldStat\n     * @constructor\n     * @param {IFieldStat=} [properties] Properties to set\n     */\n    function FieldStat(properties) {\n        this.latencyCount = [];\n        if (properties)\n            for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * FieldStat returnType.\n     * @member {string} returnType\n     * @memberof FieldStat\n     * @instance\n     */\n    FieldStat.prototype.returnType = \"\";\n\n    /**\n     * FieldStat errorsCount.\n     * @member {number} errorsCount\n     * @memberof FieldStat\n     * @instance\n     */\n    FieldStat.prototype.errorsCount = 0;\n\n    /**\n     * FieldStat observedExecutionCount.\n     * @member {number} observedExecutionCount\n     * @memberof FieldStat\n     * @instance\n     */\n    FieldStat.prototype.observedExecutionCount = 0;\n\n    /**\n     * FieldStat estimatedExecutionCount.\n     * @member {number} estimatedExecutionCount\n     * @memberof FieldStat\n     * @instance\n     */\n    FieldStat.prototype.estimatedExecutionCount = 0;\n\n    /**\n     * FieldStat requestsWithErrorsCount.\n     * @member {number} requestsWithErrorsCount\n     * @memberof FieldStat\n     * @instance\n     */\n    FieldStat.prototype.requestsWithErrorsCount = 0;\n\n    /**\n     * FieldStat latencyCount.\n     * @member {Array.<number>} latencyCount\n     * @memberof FieldStat\n     * @instance\n     */\n    FieldStat.prototype.latencyCount = $util.emptyArray;\n\n    /**\n     * Creates a new FieldStat instance using the specified properties.\n     * @function create\n     * @memberof FieldStat\n     * @static\n     * @param {IFieldStat=} [properties] Properties to set\n     * @returns {FieldStat} FieldStat instance\n     */\n    FieldStat.create = function create(properties) {\n        return new FieldStat(properties);\n    };\n\n    /**\n     * Encodes the specified FieldStat message. Does not implicitly {@link FieldStat.verify|verify} messages.\n     * @function encode\n     * @memberof FieldStat\n     * @static\n     * @param {IFieldStat} message FieldStat message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    FieldStat.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.returnType != null && Object.hasOwnProperty.call(message, \"returnType\"))\n            writer.uint32(/* id 3, wireType 2 =*/26).string(message.returnType);\n        if (message.errorsCount != null && Object.hasOwnProperty.call(message, \"errorsCount\"))\n            writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.errorsCount);\n        if (message.observedExecutionCount != null && Object.hasOwnProperty.call(message, \"observedExecutionCount\"))\n            writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.observedExecutionCount);\n        if (message.requestsWithErrorsCount != null && Object.hasOwnProperty.call(message, \"requestsWithErrorsCount\"))\n            writer.uint32(/* id 6, wireType 0 =*/48).uint64(message.requestsWithErrorsCount);\n        let array9;\n        if (message.latencyCount != null && message.latencyCount.toArray)\n            array9 = message.latencyCount.toArray();\n        else\n            array9 = message.latencyCount;\n        if (array9 != null && array9.length) {\n            writer.uint32(/* id 9, wireType 2 =*/74).fork();\n            for (let i = 0; i < array9.length; ++i)\n                writer.sint64(array9[i]);\n            writer.ldelim();\n        }\n        if (message.estimatedExecutionCount != null && Object.hasOwnProperty.call(message, \"estimatedExecutionCount\"))\n            writer.uint32(/* id 10, wireType 0 =*/80).uint64(message.estimatedExecutionCount);\n        return writer;\n    };\n\n    /**\n     * Encodes the specified FieldStat message, length delimited. Does not implicitly {@link FieldStat.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof FieldStat\n     * @static\n     * @param {IFieldStat} message FieldStat message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    FieldStat.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a FieldStat message from the specified reader or buffer.\n     * @function decode\n     * @memberof FieldStat\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {FieldStat} FieldStat\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    FieldStat.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        let end = length === undefined ? reader.len : reader.pos + length, message = new $root.FieldStat();\n        while (reader.pos < end) {\n            let tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 3:\n                message.returnType = reader.string();\n                break;\n            case 4:\n                message.errorsCount = reader.uint64();\n                break;\n            case 5:\n                message.observedExecutionCount = reader.uint64();\n                break;\n            case 10:\n                message.estimatedExecutionCount = reader.uint64();\n                break;\n            case 6:\n                message.requestsWithErrorsCount = reader.uint64();\n                break;\n            case 9:\n                if (!(message.latencyCount && message.latencyCount.length))\n                    message.latencyCount = [];\n                if ((tag & 7) === 2) {\n                    let end2 = reader.uint32() + reader.pos;\n                    while (reader.pos < end2)\n                        message.latencyCount.push(reader.sint64());\n                } else\n                    message.latencyCount.push(reader.sint64());\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a FieldStat message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof FieldStat\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {FieldStat} FieldStat\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    FieldStat.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a FieldStat message.\n     * @function verify\n     * @memberof FieldStat\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    FieldStat.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.returnType != null && message.hasOwnProperty(\"returnType\"))\n            if (!$util.isString(message.returnType))\n                return \"returnType: string expected\";\n        if (message.errorsCount != null && message.hasOwnProperty(\"errorsCount\"))\n            if (!$util.isInteger(message.errorsCount) && !(message.errorsCount && $util.isInteger(message.errorsCount.low) && $util.isInteger(message.errorsCount.high)))\n                return \"errorsCount: integer|Long expected\";\n        if (message.observedExecutionCount != null && message.hasOwnProperty(\"observedExecutionCount\"))\n            if (!$util.isInteger(message.observedExecutionCount) && !(message.observedExecutionCount && $util.isInteger(message.observedExecutionCount.low) && $util.isInteger(message.observedExecutionCount.high)))\n                return \"observedExecutionCount: integer|Long expected\";\n        if (message.estimatedExecutionCount != null && message.hasOwnProperty(\"estimatedExecutionCount\"))\n            if (!$util.isInteger(message.estimatedExecutionCount) && !(message.estimatedExecutionCount && $util.isInteger(message.estimatedExecutionCount.low) && $util.isInteger(message.estimatedExecutionCount.high)))\n                return \"estimatedExecutionCount: integer|Long expected\";\n        if (message.requestsWithErrorsCount != null && message.hasOwnProperty(\"requestsWithErrorsCount\"))\n            if (!$util.isInteger(message.requestsWithErrorsCount) && !(message.requestsWithErrorsCount && $util.isInteger(message.requestsWithErrorsCount.low) && $util.isInteger(message.requestsWithErrorsCount.high)))\n                return \"requestsWithErrorsCount: integer|Long expected\";\n        if (message.latencyCount != null && message.hasOwnProperty(\"latencyCount\")) {\n            let array9;\n            if (message.latencyCount != null && message.latencyCount.toArray)\n                array9 = message.latencyCount.toArray();\n            else\n                array9 = message.latencyCount;\n            if (!Array.isArray(array9))\n                return \"latencyCount: array expected\";\n            for (let i = 0; i < array9.length; ++i)\n                if (!$util.isInteger(array9[i]) && !(array9[i] && $util.isInteger(array9[i].low) && $util.isInteger(array9[i].high)))\n                    return \"latencyCount: integer|Long[] expected\";\n        }\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a FieldStat message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof FieldStat\n     * @static\n     * @param {FieldStat} message FieldStat\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    FieldStat.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        let object = {};\n        if (options.arrays || options.defaults)\n            object.latencyCount = [];\n        if (options.defaults) {\n            object.returnType = \"\";\n            object.errorsCount = 0;\n            object.observedExecutionCount = 0;\n            object.requestsWithErrorsCount = 0;\n            object.estimatedExecutionCount = 0;\n        }\n        if (message.returnType != null && message.hasOwnProperty(\"returnType\"))\n            object.returnType = message.returnType;\n        if (message.errorsCount != null && message.hasOwnProperty(\"errorsCount\"))\n            if (typeof message.errorsCount === \"number\")\n                object.errorsCount = options.longs === String ? String(message.errorsCount) : message.errorsCount;\n            else\n                object.errorsCount = options.longs === String ? $util.Long.prototype.toString.call(message.errorsCount) : options.longs === Number ? new $util.LongBits(message.errorsCount.low >>> 0, message.errorsCount.high >>> 0).toNumber(true) : message.errorsCount;\n        if (message.observedExecutionCount != null && message.hasOwnProperty(\"observedExecutionCount\"))\n            if (typeof message.observedExecutionCount === \"number\")\n                object.observedExecutionCount = options.longs === String ? String(message.observedExecutionCount) : message.observedExecutionCount;\n            else\n                object.observedExecutionCount = options.longs === String ? $util.Long.prototype.toString.call(message.observedExecutionCount) : options.longs === Number ? new $util.LongBits(message.observedExecutionCount.low >>> 0, message.observedExecutionCount.high >>> 0).toNumber(true) : message.observedExecutionCount;\n        if (message.requestsWithErrorsCount != null && message.hasOwnProperty(\"requestsWithErrorsCount\"))\n            if (typeof message.requestsWithErrorsCount === \"number\")\n                object.requestsWithErrorsCount = options.longs === String ? String(message.requestsWithErrorsCount) : message.requestsWithErrorsCount;\n            else\n                object.requestsWithErrorsCount = options.longs === String ? $util.Long.prototype.toString.call(message.requestsWithErrorsCount) : options.longs === Number ? new $util.LongBits(message.requestsWithErrorsCount.low >>> 0, message.requestsWithErrorsCount.high >>> 0).toNumber(true) : message.requestsWithErrorsCount;\n        if (message.latencyCount && message.latencyCount.length) {\n            object.latencyCount = [];\n            for (let j = 0; j < message.latencyCount.length; ++j)\n                if (typeof message.latencyCount[j] === \"number\")\n                    object.latencyCount[j] = options.longs === String ? String(message.latencyCount[j]) : message.latencyCount[j];\n                else\n                    object.latencyCount[j] = options.longs === String ? $util.Long.prototype.toString.call(message.latencyCount[j]) : options.longs === Number ? new $util.LongBits(message.latencyCount[j].low >>> 0, message.latencyCount[j].high >>> 0).toNumber() : message.latencyCount[j];\n        }\n        if (message.estimatedExecutionCount != null && message.hasOwnProperty(\"estimatedExecutionCount\"))\n            if (typeof message.estimatedExecutionCount === \"number\")\n                object.estimatedExecutionCount = options.longs === String ? String(message.estimatedExecutionCount) : message.estimatedExecutionCount;\n            else\n                object.estimatedExecutionCount = options.longs === String ? $util.Long.prototype.toString.call(message.estimatedExecutionCount) : options.longs === Number ? new $util.LongBits(message.estimatedExecutionCount.low >>> 0, message.estimatedExecutionCount.high >>> 0).toNumber(true) : message.estimatedExecutionCount;\n        return object;\n    };\n\n    /**\n     * Converts this FieldStat to JSON.\n     * @function toJSON\n     * @memberof FieldStat\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    FieldStat.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    return FieldStat;\n})();\n\nexport const TypeStat = $root.TypeStat = (() => {\n\n    /**\n     * Properties of a TypeStat.\n     * @exports ITypeStat\n     * @interface ITypeStat\n     * @property {Object.<string,IFieldStat>|null} [perFieldStat] TypeStat perFieldStat\n     */\n\n    /**\n     * Constructs a new TypeStat.\n     * @exports TypeStat\n     * @classdesc Represents a TypeStat.\n     * @implements ITypeStat\n     * @constructor\n     * @param {ITypeStat=} [properties] Properties to set\n     */\n    function TypeStat(properties) {\n        this.perFieldStat = {};\n        if (properties)\n            for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * TypeStat perFieldStat.\n     * @member {Object.<string,IFieldStat>} perFieldStat\n     * @memberof TypeStat\n     * @instance\n     */\n    TypeStat.prototype.perFieldStat = $util.emptyObject;\n\n    /**\n     * Creates a new TypeStat instance using the specified properties.\n     * @function create\n     * @memberof TypeStat\n     * @static\n     * @param {ITypeStat=} [properties] Properties to set\n     * @returns {TypeStat} TypeStat instance\n     */\n    TypeStat.create = function create(properties) {\n        return new TypeStat(properties);\n    };\n\n    /**\n     * Encodes the specified TypeStat message. Does not implicitly {@link TypeStat.verify|verify} messages.\n     * @function encode\n     * @memberof TypeStat\n     * @static\n     * @param {ITypeStat} message TypeStat message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    TypeStat.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.perFieldStat != null && Object.hasOwnProperty.call(message, \"perFieldStat\"))\n            for (let keys = Object.keys(message.perFieldStat), i = 0; i < keys.length; ++i) {\n                writer.uint32(/* id 3, wireType 2 =*/26).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]);\n                $root.FieldStat.encode(message.perFieldStat[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim();\n            }\n        return writer;\n    };\n\n    /**\n     * Encodes the specified TypeStat message, length delimited. Does not implicitly {@link TypeStat.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof TypeStat\n     * @static\n     * @param {ITypeStat} message TypeStat message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    TypeStat.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a TypeStat message from the specified reader or buffer.\n     * @function decode\n     * @memberof TypeStat\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {TypeStat} TypeStat\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    TypeStat.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        let end = length === undefined ? reader.len : reader.pos + length, message = new $root.TypeStat(), key;\n        while (reader.pos < end) {\n            let tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 3:\n                reader.skip().pos++;\n                if (message.perFieldStat === $util.emptyObject)\n                    message.perFieldStat = {};\n                key = reader.string();\n                reader.pos++;\n                message.perFieldStat[key] = $root.FieldStat.decode(reader, reader.uint32());\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a TypeStat message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof TypeStat\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {TypeStat} TypeStat\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    TypeStat.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a TypeStat message.\n     * @function verify\n     * @memberof TypeStat\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    TypeStat.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.perFieldStat != null && message.hasOwnProperty(\"perFieldStat\")) {\n            if (!$util.isObject(message.perFieldStat))\n                return \"perFieldStat: object expected\";\n            let key = Object.keys(message.perFieldStat);\n            for (let i = 0; i < key.length; ++i) {\n                let error = $root.FieldStat.verify(message.perFieldStat[key[i]]);\n                if (error)\n                    return \"perFieldStat.\" + error;\n            }\n        }\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a TypeStat message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof TypeStat\n     * @static\n     * @param {TypeStat} message TypeStat\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    TypeStat.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        let object = {};\n        if (options.objects || options.defaults)\n            object.perFieldStat = {};\n        let keys2;\n        if (message.perFieldStat && (keys2 = Object.keys(message.perFieldStat)).length) {\n            object.perFieldStat = {};\n            for (let j = 0; j < keys2.length; ++j)\n                object.perFieldStat[keys2[j]] = $root.FieldStat.toObject(message.perFieldStat[keys2[j]], options);\n        }\n        return object;\n    };\n\n    /**\n     * Converts this TypeStat to JSON.\n     * @function toJSON\n     * @memberof TypeStat\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    TypeStat.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    return TypeStat;\n})();\n\nexport const ReferencedFieldsForType = $root.ReferencedFieldsForType = (() => {\n\n    /**\n     * Properties of a ReferencedFieldsForType.\n     * @exports IReferencedFieldsForType\n     * @interface IReferencedFieldsForType\n     * @property {Array.<string>|null} [fieldNames] ReferencedFieldsForType fieldNames\n     * @property {boolean|null} [isInterface] ReferencedFieldsForType isInterface\n     */\n\n    /**\n     * Constructs a new ReferencedFieldsForType.\n     * @exports ReferencedFieldsForType\n     * @classdesc Represents a ReferencedFieldsForType.\n     * @implements IReferencedFieldsForType\n     * @constructor\n     * @param {IReferencedFieldsForType=} [properties] Properties to set\n     */\n    function ReferencedFieldsForType(properties) {\n        this.fieldNames = [];\n        if (properties)\n            for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * ReferencedFieldsForType fieldNames.\n     * @member {Array.<string>} fieldNames\n     * @memberof ReferencedFieldsForType\n     * @instance\n     */\n    ReferencedFieldsForType.prototype.fieldNames = $util.emptyArray;\n\n    /**\n     * ReferencedFieldsForType isInterface.\n     * @member {boolean} isInterface\n     * @memberof ReferencedFieldsForType\n     * @instance\n     */\n    ReferencedFieldsForType.prototype.isInterface = false;\n\n    /**\n     * Creates a new ReferencedFieldsForType instance using the specified properties.\n     * @function create\n     * @memberof ReferencedFieldsForType\n     * @static\n     * @param {IReferencedFieldsForType=} [properties] Properties to set\n     * @returns {ReferencedFieldsForType} ReferencedFieldsForType instance\n     */\n    ReferencedFieldsForType.create = function create(properties) {\n        return new ReferencedFieldsForType(properties);\n    };\n\n    /**\n     * Encodes the specified ReferencedFieldsForType message. Does not implicitly {@link ReferencedFieldsForType.verify|verify} messages.\n     * @function encode\n     * @memberof ReferencedFieldsForType\n     * @static\n     * @param {IReferencedFieldsForType} message ReferencedFieldsForType message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    ReferencedFieldsForType.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.fieldNames != null && message.fieldNames.length)\n            for (let i = 0; i < message.fieldNames.length; ++i)\n                writer.uint32(/* id 1, wireType 2 =*/10).string(message.fieldNames[i]);\n        if (message.isInterface != null && Object.hasOwnProperty.call(message, \"isInterface\"))\n            writer.uint32(/* id 2, wireType 0 =*/16).bool(message.isInterface);\n        return writer;\n    };\n\n    /**\n     * Encodes the specified ReferencedFieldsForType message, length delimited. Does not implicitly {@link ReferencedFieldsForType.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof ReferencedFieldsForType\n     * @static\n     * @param {IReferencedFieldsForType} message ReferencedFieldsForType message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    ReferencedFieldsForType.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a ReferencedFieldsForType message from the specified reader or buffer.\n     * @function decode\n     * @memberof ReferencedFieldsForType\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {ReferencedFieldsForType} ReferencedFieldsForType\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    ReferencedFieldsForType.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        let end = length === undefined ? reader.len : reader.pos + length, message = new $root.ReferencedFieldsForType();\n        while (reader.pos < end) {\n            let tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 1:\n                if (!(message.fieldNames && message.fieldNames.length))\n                    message.fieldNames = [];\n                message.fieldNames.push(reader.string());\n                break;\n            case 2:\n                message.isInterface = reader.bool();\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a ReferencedFieldsForType message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof ReferencedFieldsForType\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {ReferencedFieldsForType} ReferencedFieldsForType\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    ReferencedFieldsForType.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a ReferencedFieldsForType message.\n     * @function verify\n     * @memberof ReferencedFieldsForType\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    ReferencedFieldsForType.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.fieldNames != null && message.hasOwnProperty(\"fieldNames\")) {\n            if (!Array.isArray(message.fieldNames))\n                return \"fieldNames: array expected\";\n            for (let i = 0; i < message.fieldNames.length; ++i)\n                if (!$util.isString(message.fieldNames[i]))\n                    return \"fieldNames: string[] expected\";\n        }\n        if (message.isInterface != null && message.hasOwnProperty(\"isInterface\"))\n            if (typeof message.isInterface !== \"boolean\")\n                return \"isInterface: boolean expected\";\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a ReferencedFieldsForType message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof ReferencedFieldsForType\n     * @static\n     * @param {ReferencedFieldsForType} message ReferencedFieldsForType\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    ReferencedFieldsForType.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        let object = {};\n        if (options.arrays || options.defaults)\n            object.fieldNames = [];\n        if (options.defaults)\n            object.isInterface = false;\n        if (message.fieldNames && message.fieldNames.length) {\n            object.fieldNames = [];\n            for (let j = 0; j < message.fieldNames.length; ++j)\n                object.fieldNames[j] = message.fieldNames[j];\n        }\n        if (message.isInterface != null && message.hasOwnProperty(\"isInterface\"))\n            object.isInterface = message.isInterface;\n        return object;\n    };\n\n    /**\n     * Converts this ReferencedFieldsForType to JSON.\n     * @function toJSON\n     * @memberof ReferencedFieldsForType\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    ReferencedFieldsForType.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    return ReferencedFieldsForType;\n})();\n\nexport const Report = $root.Report = (() => {\n\n    /**\n     * Properties of a Report.\n     * @exports IReport\n     * @interface IReport\n     * @property {IReportHeader|null} [header] Report header\n     * @property {Object.<string,ITracesAndStats>|null} [tracesPerQuery] Report tracesPerQuery\n     * @property {google.protobuf.ITimestamp|null} [endTime] Report endTime\n     * @property {number|null} [operationCount] Report operationCount\n     * @property {boolean|null} [tracesPreAggregated] Report tracesPreAggregated\n     */\n\n    /**\n     * Constructs a new Report.\n     * @exports Report\n     * @classdesc Represents a Report.\n     * @implements IReport\n     * @constructor\n     * @param {IReport=} [properties] Properties to set\n     */\n    function Report(properties) {\n        this.tracesPerQuery = {};\n        if (properties)\n            for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * Report header.\n     * @member {IReportHeader|null|undefined} header\n     * @memberof Report\n     * @instance\n     */\n    Report.prototype.header = null;\n\n    /**\n     * Report tracesPerQuery.\n     * @member {Object.<string,ITracesAndStats>} tracesPerQuery\n     * @memberof Report\n     * @instance\n     */\n    Report.prototype.tracesPerQuery = $util.emptyObject;\n\n    /**\n     * Report endTime.\n     * @member {google.protobuf.ITimestamp|null|undefined} endTime\n     * @memberof Report\n     * @instance\n     */\n    Report.prototype.endTime = null;\n\n    /**\n     * Report operationCount.\n     * @member {number} operationCount\n     * @memberof Report\n     * @instance\n     */\n    Report.prototype.operationCount = 0;\n\n    /**\n     * Report tracesPreAggregated.\n     * @member {boolean} tracesPreAggregated\n     * @memberof Report\n     * @instance\n     */\n    Report.prototype.tracesPreAggregated = false;\n\n    /**\n     * Creates a new Report instance using the specified properties.\n     * @function create\n     * @memberof Report\n     * @static\n     * @param {IReport=} [properties] Properties to set\n     * @returns {Report} Report instance\n     */\n    Report.create = function create(properties) {\n        return new Report(properties);\n    };\n\n    /**\n     * Encodes the specified Report message. Does not implicitly {@link Report.verify|verify} messages.\n     * @function encode\n     * @memberof Report\n     * @static\n     * @param {IReport} message Report message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    Report.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.header != null && Object.hasOwnProperty.call(message, \"header\"))\n            $root.ReportHeader.encode(message.header, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n        if (message.endTime != null && Object.hasOwnProperty.call(message, \"endTime\"))\n            $root.google.protobuf.Timestamp.encode(message.endTime, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n        if (message.tracesPerQuery != null && Object.hasOwnProperty.call(message, \"tracesPerQuery\"))\n            for (let keys = Object.keys(message.tracesPerQuery), i = 0; i < keys.length; ++i) {\n                writer.uint32(/* id 5, wireType 2 =*/42).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]);\n                $root.TracesAndStats.encode(message.tracesPerQuery[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim();\n            }\n        if (message.operationCount != null && Object.hasOwnProperty.call(message, \"operationCount\"))\n            writer.uint32(/* id 6, wireType 0 =*/48).uint64(message.operationCount);\n        if (message.tracesPreAggregated != null && Object.hasOwnProperty.call(message, \"tracesPreAggregated\"))\n            writer.uint32(/* id 7, wireType 0 =*/56).bool(message.tracesPreAggregated);\n        return writer;\n    };\n\n    /**\n     * Encodes the specified Report message, length delimited. Does not implicitly {@link Report.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof Report\n     * @static\n     * @param {IReport} message Report message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    Report.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a Report message from the specified reader or buffer.\n     * @function decode\n     * @memberof Report\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {Report} Report\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    Report.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        let end = length === undefined ? reader.len : reader.pos + length, message = new $root.Report(), key;\n        while (reader.pos < end) {\n            let tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 1:\n                message.header = $root.ReportHeader.decode(reader, reader.uint32());\n                break;\n            case 5:\n                reader.skip().pos++;\n                if (message.tracesPerQuery === $util.emptyObject)\n                    message.tracesPerQuery = {};\n                key = reader.string();\n                reader.pos++;\n                message.tracesPerQuery[key] = $root.TracesAndStats.decode(reader, reader.uint32());\n                break;\n            case 2:\n                message.endTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());\n                break;\n            case 6:\n                message.operationCount = reader.uint64();\n                break;\n            case 7:\n                message.tracesPreAggregated = reader.bool();\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a Report message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof Report\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {Report} Report\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    Report.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a Report message.\n     * @function verify\n     * @memberof Report\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    Report.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.header != null && message.hasOwnProperty(\"header\")) {\n            let error = $root.ReportHeader.verify(message.header);\n            if (error)\n                return \"header.\" + error;\n        }\n        if (message.tracesPerQuery != null && message.hasOwnProperty(\"tracesPerQuery\")) {\n            if (!$util.isObject(message.tracesPerQuery))\n                return \"tracesPerQuery: object expected\";\n            let key = Object.keys(message.tracesPerQuery);\n            for (let i = 0; i < key.length; ++i) {\n                let error = $root.TracesAndStats.verify(message.tracesPerQuery[key[i]]);\n                if (error)\n                    return \"tracesPerQuery.\" + error;\n            }\n        }\n        if (message.endTime != null && message.hasOwnProperty(\"endTime\")) {\n            let error = $root.google.protobuf.Timestamp.verify(message.endTime);\n            if (error)\n                return \"endTime.\" + error;\n        }\n        if (message.operationCount != null && message.hasOwnProperty(\"operationCount\"))\n            if (!$util.isInteger(message.operationCount) && !(message.operationCount && $util.isInteger(message.operationCount.low) && $util.isInteger(message.operationCount.high)))\n                return \"operationCount: integer|Long expected\";\n        if (message.tracesPreAggregated != null && message.hasOwnProperty(\"tracesPreAggregated\"))\n            if (typeof message.tracesPreAggregated !== \"boolean\")\n                return \"tracesPreAggregated: boolean expected\";\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a Report message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof Report\n     * @static\n     * @param {Report} message Report\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    Report.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        let object = {};\n        if (options.objects || options.defaults)\n            object.tracesPerQuery = {};\n        if (options.defaults) {\n            object.header = null;\n            object.endTime = null;\n            object.operationCount = 0;\n            object.tracesPreAggregated = false;\n        }\n        if (message.header != null && message.hasOwnProperty(\"header\"))\n            object.header = $root.ReportHeader.toObject(message.header, options);\n        if (message.endTime != null && message.hasOwnProperty(\"endTime\"))\n            object.endTime = $root.google.protobuf.Timestamp.toObject(message.endTime, options);\n        let keys2;\n        if (message.tracesPerQuery && (keys2 = Object.keys(message.tracesPerQuery)).length) {\n            object.tracesPerQuery = {};\n            for (let j = 0; j < keys2.length; ++j)\n                object.tracesPerQuery[keys2[j]] = $root.TracesAndStats.toObject(message.tracesPerQuery[keys2[j]], options);\n        }\n        if (message.operationCount != null && message.hasOwnProperty(\"operationCount\"))\n            if (typeof message.operationCount === \"number\")\n                object.operationCount = options.longs === String ? String(message.operationCount) : message.operationCount;\n            else\n                object.operationCount = options.longs === String ? $util.Long.prototype.toString.call(message.operationCount) : options.longs === Number ? new $util.LongBits(message.operationCount.low >>> 0, message.operationCount.high >>> 0).toNumber(true) : message.operationCount;\n        if (message.tracesPreAggregated != null && message.hasOwnProperty(\"tracesPreAggregated\"))\n            object.tracesPreAggregated = message.tracesPreAggregated;\n        return object;\n    };\n\n    /**\n     * Converts this Report to JSON.\n     * @function toJSON\n     * @memberof Report\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    Report.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    return Report;\n})();\n\nexport const ContextualizedStats = $root.ContextualizedStats = (() => {\n\n    /**\n     * Properties of a ContextualizedStats.\n     * @exports IContextualizedStats\n     * @interface IContextualizedStats\n     * @property {IStatsContext|null} [context] ContextualizedStats context\n     * @property {IQueryLatencyStats|null} [queryLatencyStats] ContextualizedStats queryLatencyStats\n     * @property {Object.<string,ITypeStat>|null} [perTypeStat] ContextualizedStats perTypeStat\n     */\n\n    /**\n     * Constructs a new ContextualizedStats.\n     * @exports ContextualizedStats\n     * @classdesc Represents a ContextualizedStats.\n     * @implements IContextualizedStats\n     * @constructor\n     * @param {IContextualizedStats=} [properties] Properties to set\n     */\n    function ContextualizedStats(properties) {\n        this.perTypeStat = {};\n        if (properties)\n            for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * ContextualizedStats context.\n     * @member {IStatsContext|null|undefined} context\n     * @memberof ContextualizedStats\n     * @instance\n     */\n    ContextualizedStats.prototype.context = null;\n\n    /**\n     * ContextualizedStats queryLatencyStats.\n     * @member {IQueryLatencyStats|null|undefined} queryLatencyStats\n     * @memberof ContextualizedStats\n     * @instance\n     */\n    ContextualizedStats.prototype.queryLatencyStats = null;\n\n    /**\n     * ContextualizedStats perTypeStat.\n     * @member {Object.<string,ITypeStat>} perTypeStat\n     * @memberof ContextualizedStats\n     * @instance\n     */\n    ContextualizedStats.prototype.perTypeStat = $util.emptyObject;\n\n    /**\n     * Creates a new ContextualizedStats instance using the specified properties.\n     * @function create\n     * @memberof ContextualizedStats\n     * @static\n     * @param {IContextualizedStats=} [properties] Properties to set\n     * @returns {ContextualizedStats} ContextualizedStats instance\n     */\n    ContextualizedStats.create = function create(properties) {\n        return new ContextualizedStats(properties);\n    };\n\n    /**\n     * Encodes the specified ContextualizedStats message. Does not implicitly {@link ContextualizedStats.verify|verify} messages.\n     * @function encode\n     * @memberof ContextualizedStats\n     * @static\n     * @param {IContextualizedStats} message ContextualizedStats message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    ContextualizedStats.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.context != null && Object.hasOwnProperty.call(message, \"context\"))\n            $root.StatsContext.encode(message.context, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n        if (message.queryLatencyStats != null && Object.hasOwnProperty.call(message, \"queryLatencyStats\"))\n            $root.QueryLatencyStats.encode(message.queryLatencyStats, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n        if (message.perTypeStat != null && Object.hasOwnProperty.call(message, \"perTypeStat\"))\n            for (let keys = Object.keys(message.perTypeStat), i = 0; i < keys.length; ++i) {\n                writer.uint32(/* id 3, wireType 2 =*/26).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]);\n                $root.TypeStat.encode(message.perTypeStat[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim();\n            }\n        return writer;\n    };\n\n    /**\n     * Encodes the specified ContextualizedStats message, length delimited. Does not implicitly {@link ContextualizedStats.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof ContextualizedStats\n     * @static\n     * @param {IContextualizedStats} message ContextualizedStats message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    ContextualizedStats.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a ContextualizedStats message from the specified reader or buffer.\n     * @function decode\n     * @memberof ContextualizedStats\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {ContextualizedStats} ContextualizedStats\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    ContextualizedStats.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        let end = length === undefined ? reader.len : reader.pos + length, message = new $root.ContextualizedStats(), key;\n        while (reader.pos < end) {\n            let tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 1:\n                message.context = $root.StatsContext.decode(reader, reader.uint32());\n                break;\n            case 2:\n                message.queryLatencyStats = $root.QueryLatencyStats.decode(reader, reader.uint32());\n                break;\n            case 3:\n                reader.skip().pos++;\n                if (message.perTypeStat === $util.emptyObject)\n                    message.perTypeStat = {};\n                key = reader.string();\n                reader.pos++;\n                message.perTypeStat[key] = $root.TypeStat.decode(reader, reader.uint32());\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a ContextualizedStats message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof ContextualizedStats\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {ContextualizedStats} ContextualizedStats\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    ContextualizedStats.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a ContextualizedStats message.\n     * @function verify\n     * @memberof ContextualizedStats\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    ContextualizedStats.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.context != null && message.hasOwnProperty(\"context\")) {\n            let error = $root.StatsContext.verify(message.context);\n            if (error)\n                return \"context.\" + error;\n        }\n        if (message.queryLatencyStats != null && message.hasOwnProperty(\"queryLatencyStats\")) {\n            let error = $root.QueryLatencyStats.verify(message.queryLatencyStats);\n            if (error)\n                return \"queryLatencyStats.\" + error;\n        }\n        if (message.perTypeStat != null && message.hasOwnProperty(\"perTypeStat\")) {\n            if (!$util.isObject(message.perTypeStat))\n                return \"perTypeStat: object expected\";\n            let key = Object.keys(message.perTypeStat);\n            for (let i = 0; i < key.length; ++i) {\n                let error = $root.TypeStat.verify(message.perTypeStat[key[i]]);\n                if (error)\n                    return \"perTypeStat.\" + error;\n            }\n        }\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a ContextualizedStats message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof ContextualizedStats\n     * @static\n     * @param {ContextualizedStats} message ContextualizedStats\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    ContextualizedStats.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        let object = {};\n        if (options.objects || options.defaults)\n            object.perTypeStat = {};\n        if (options.defaults) {\n            object.context = null;\n            object.queryLatencyStats = null;\n        }\n        if (message.context != null && message.hasOwnProperty(\"context\"))\n            object.context = $root.StatsContext.toObject(message.context, options);\n        if (message.queryLatencyStats != null && message.hasOwnProperty(\"queryLatencyStats\"))\n            object.queryLatencyStats = $root.QueryLatencyStats.toObject(message.queryLatencyStats, options);\n        let keys2;\n        if (message.perTypeStat && (keys2 = Object.keys(message.perTypeStat)).length) {\n            object.perTypeStat = {};\n            for (let j = 0; j < keys2.length; ++j)\n                object.perTypeStat[keys2[j]] = $root.TypeStat.toObject(message.perTypeStat[keys2[j]], options);\n        }\n        return object;\n    };\n\n    /**\n     * Converts this ContextualizedStats to JSON.\n     * @function toJSON\n     * @memberof ContextualizedStats\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    ContextualizedStats.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    return ContextualizedStats;\n})();\n\nexport const TracesAndStats = $root.TracesAndStats = (() => {\n\n    /**\n     * Properties of a TracesAndStats.\n     * @exports ITracesAndStats\n     * @interface ITracesAndStats\n     * @property {Array.<ITrace|Uint8Array>|null} [trace] TracesAndStats trace\n     * @property {$protobuf.ToArray.<IContextualizedStats>|Array.<IContextualizedStats>|null} [statsWithContext] TracesAndStats statsWithContext\n     * @property {Object.<string,IReferencedFieldsForType>|null} [referencedFieldsByType] TracesAndStats referencedFieldsByType\n     * @property {Array.<ITrace|Uint8Array>|null} [internalTracesContributingToStats] TracesAndStats internalTracesContributingToStats\n     */\n\n    /**\n     * Constructs a new TracesAndStats.\n     * @exports TracesAndStats\n     * @classdesc Represents a TracesAndStats.\n     * @implements ITracesAndStats\n     * @constructor\n     * @param {ITracesAndStats=} [properties] Properties to set\n     */\n    function TracesAndStats(properties) {\n        this.trace = [];\n        this.statsWithContext = [];\n        this.referencedFieldsByType = {};\n        this.internalTracesContributingToStats = [];\n        if (properties)\n            for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * TracesAndStats trace.\n     * @member {Array.<ITrace|Uint8Array>} trace\n     * @memberof TracesAndStats\n     * @instance\n     */\n    TracesAndStats.prototype.trace = $util.emptyArray;\n\n    /**\n     * TracesAndStats statsWithContext.\n     * @member {Array.<IContextualizedStats>} statsWithContext\n     * @memberof TracesAndStats\n     * @instance\n     */\n    TracesAndStats.prototype.statsWithContext = $util.emptyArray;\n\n    /**\n     * TracesAndStats referencedFieldsByType.\n     * @member {Object.<string,IReferencedFieldsForType>} referencedFieldsByType\n     * @memberof TracesAndStats\n     * @instance\n     */\n    TracesAndStats.prototype.referencedFieldsByType = $util.emptyObject;\n\n    /**\n     * TracesAndStats internalTracesContributingToStats.\n     * @member {Array.<ITrace|Uint8Array>} internalTracesContributingToStats\n     * @memberof TracesAndStats\n     * @instance\n     */\n    TracesAndStats.prototype.internalTracesContributingToStats = $util.emptyArray;\n\n    /**\n     * Creates a new TracesAndStats instance using the specified properties.\n     * @function create\n     * @memberof TracesAndStats\n     * @static\n     * @param {ITracesAndStats=} [properties] Properties to set\n     * @returns {TracesAndStats} TracesAndStats instance\n     */\n    TracesAndStats.create = function create(properties) {\n        return new TracesAndStats(properties);\n    };\n\n    /**\n     * Encodes the specified TracesAndStats message. Does not implicitly {@link TracesAndStats.verify|verify} messages.\n     * @function encode\n     * @memberof TracesAndStats\n     * @static\n     * @param {ITracesAndStats} message TracesAndStats message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    TracesAndStats.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.trace != null && message.trace.length)\n            for (let i = 0; i < message.trace.length; ++i)\n                if (message.trace[i] instanceof Uint8Array) {\n                    writer.uint32(/* id 1, wireType 2 =*/10);\n                    writer.bytes(message.trace[i]);\n                } else\n                    $root.Trace.encode(message.trace[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n        let array2;\n        if (message.statsWithContext != null && message.statsWithContext.toArray)\n            array2 = message.statsWithContext.toArray();\n        else\n            array2 = message.statsWithContext;\n        if (array2 != null && array2.length)\n            for (let i = 0; i < array2.length; ++i)\n                $root.ContextualizedStats.encode(array2[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n        if (message.internalTracesContributingToStats != null && message.internalTracesContributingToStats.length)\n            for (let i = 0; i < message.internalTracesContributingToStats.length; ++i)\n                if (message.internalTracesContributingToStats[i] instanceof Uint8Array) {\n                    writer.uint32(/* id 3, wireType 2 =*/26);\n                    writer.bytes(message.internalTracesContributingToStats[i]);\n                } else\n                    $root.Trace.encode(message.internalTracesContributingToStats[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n        if (message.referencedFieldsByType != null && Object.hasOwnProperty.call(message, \"referencedFieldsByType\"))\n            for (let keys = Object.keys(message.referencedFieldsByType), i = 0; i < keys.length; ++i) {\n                writer.uint32(/* id 4, wireType 2 =*/34).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]);\n                $root.ReferencedFieldsForType.encode(message.referencedFieldsByType[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim();\n            }\n        return writer;\n    };\n\n    /**\n     * Encodes the specified TracesAndStats message, length delimited. Does not implicitly {@link TracesAndStats.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof TracesAndStats\n     * @static\n     * @param {ITracesAndStats} message TracesAndStats message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    TracesAndStats.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a TracesAndStats message from the specified reader or buffer.\n     * @function decode\n     * @memberof TracesAndStats\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {TracesAndStats} TracesAndStats\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    TracesAndStats.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        let end = length === undefined ? reader.len : reader.pos + length, message = new $root.TracesAndStats(), key;\n        while (reader.pos < end) {\n            let tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 1:\n                if (!(message.trace && message.trace.length))\n                    message.trace = [];\n                message.trace.push($root.Trace.decode(reader, reader.uint32()));\n                break;\n            case 2:\n                if (!(message.statsWithContext && message.statsWithContext.length))\n                    message.statsWithContext = [];\n                message.statsWithContext.push($root.ContextualizedStats.decode(reader, reader.uint32()));\n                break;\n            case 4:\n                reader.skip().pos++;\n                if (message.referencedFieldsByType === $util.emptyObject)\n                    message.referencedFieldsByType = {};\n                key = reader.string();\n                reader.pos++;\n                message.referencedFieldsByType[key] = $root.ReferencedFieldsForType.decode(reader, reader.uint32());\n                break;\n            case 3:\n                if (!(message.internalTracesContributingToStats && message.internalTracesContributingToStats.length))\n                    message.internalTracesContributingToStats = [];\n                message.internalTracesContributingToStats.push($root.Trace.decode(reader, reader.uint32()));\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a TracesAndStats message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof TracesAndStats\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {TracesAndStats} TracesAndStats\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    TracesAndStats.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a TracesAndStats message.\n     * @function verify\n     * @memberof TracesAndStats\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    TracesAndStats.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.trace != null && message.hasOwnProperty(\"trace\")) {\n            if (!Array.isArray(message.trace))\n                return \"trace: array expected\";\n            for (let i = 0; i < message.trace.length; ++i)\n                if (!(message.trace[i] instanceof Uint8Array)) {\n                    let error = $root.Trace.verify(message.trace[i]);\n                    if (error)\n                        return \"trace.\" + error;\n                }\n        }\n        if (message.statsWithContext != null && message.hasOwnProperty(\"statsWithContext\")) {\n            let array2;\n            if (message.statsWithContext != null && message.statsWithContext.toArray)\n                array2 = message.statsWithContext.toArray();\n            else\n                array2 = message.statsWithContext;\n            if (!Array.isArray(array2))\n                return \"statsWithContext: array expected\";\n            for (let i = 0; i < array2.length; ++i) {\n                let error = $root.ContextualizedStats.verify(array2[i]);\n                if (error)\n                    return \"statsWithContext.\" + error;\n            }\n        }\n        if (message.referencedFieldsByType != null && message.hasOwnProperty(\"referencedFieldsByType\")) {\n            if (!$util.isObject(message.referencedFieldsByType))\n                return \"referencedFieldsByType: object expected\";\n            let key = Object.keys(message.referencedFieldsByType);\n            for (let i = 0; i < key.length; ++i) {\n                let error = $root.ReferencedFieldsForType.verify(message.referencedFieldsByType[key[i]]);\n                if (error)\n                    return \"referencedFieldsByType.\" + error;\n            }\n        }\n        if (message.internalTracesContributingToStats != null && message.hasOwnProperty(\"internalTracesContributingToStats\")) {\n            if (!Array.isArray(message.internalTracesContributingToStats))\n                return \"internalTracesContributingToStats: array expected\";\n            for (let i = 0; i < message.internalTracesContributingToStats.length; ++i)\n                if (!(message.internalTracesContributingToStats[i] instanceof Uint8Array)) {\n                    let error = $root.Trace.verify(message.internalTracesContributingToStats[i]);\n                    if (error)\n                        return \"internalTracesContributingToStats.\" + error;\n                }\n        }\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a TracesAndStats message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof TracesAndStats\n     * @static\n     * @param {TracesAndStats} message TracesAndStats\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    TracesAndStats.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        let object = {};\n        if (options.arrays || options.defaults) {\n            object.trace = [];\n            object.statsWithContext = [];\n            object.internalTracesContributingToStats = [];\n        }\n        if (options.objects || options.defaults)\n            object.referencedFieldsByType = {};\n        if (message.trace && message.trace.length) {\n            object.trace = [];\n            for (let j = 0; j < message.trace.length; ++j)\n                object.trace[j] = $root.Trace.toObject(message.trace[j], options);\n        }\n        if (message.statsWithContext && message.statsWithContext.length) {\n            object.statsWithContext = [];\n            for (let j = 0; j < message.statsWithContext.length; ++j)\n                object.statsWithContext[j] = $root.ContextualizedStats.toObject(message.statsWithContext[j], options);\n        }\n        if (message.internalTracesContributingToStats && message.internalTracesContributingToStats.length) {\n            object.internalTracesContributingToStats = [];\n            for (let j = 0; j < message.internalTracesContributingToStats.length; ++j)\n                object.internalTracesContributingToStats[j] = $root.Trace.toObject(message.internalTracesContributingToStats[j], options);\n        }\n        let keys2;\n        if (message.referencedFieldsByType && (keys2 = Object.keys(message.referencedFieldsByType)).length) {\n            object.referencedFieldsByType = {};\n            for (let j = 0; j < keys2.length; ++j)\n                object.referencedFieldsByType[keys2[j]] = $root.ReferencedFieldsForType.toObject(message.referencedFieldsByType[keys2[j]], options);\n        }\n        return object;\n    };\n\n    /**\n     * Converts this TracesAndStats to JSON.\n     * @function toJSON\n     * @memberof TracesAndStats\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    TracesAndStats.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    return TracesAndStats;\n})();\n\nexport const google = $root.google = (() => {\n\n    /**\n     * Namespace google.\n     * @exports google\n     * @namespace\n     */\n    const google = {};\n\n    google.protobuf = (function() {\n\n        /**\n         * Namespace protobuf.\n         * @memberof google\n         * @namespace\n         */\n        const protobuf = {};\n\n        protobuf.Timestamp = (function() {\n\n            /**\n             * Properties of a Timestamp.\n             * @memberof google.protobuf\n             * @interface ITimestamp\n             * @property {number|null} [seconds] Timestamp seconds\n             * @property {number|null} [nanos] Timestamp nanos\n             */\n\n            /**\n             * Constructs a new Timestamp.\n             * @memberof google.protobuf\n             * @classdesc Represents a Timestamp.\n             * @implements ITimestamp\n             * @constructor\n             * @param {google.protobuf.ITimestamp=} [properties] Properties to set\n             */\n            function Timestamp(properties) {\n                if (properties)\n                    for (let keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                        if (properties[keys[i]] != null)\n                            this[keys[i]] = properties[keys[i]];\n            }\n\n            /**\n             * Timestamp seconds.\n             * @member {number} seconds\n             * @memberof google.protobuf.Timestamp\n             * @instance\n             */\n            Timestamp.prototype.seconds = 0;\n\n            /**\n             * Timestamp nanos.\n             * @member {number} nanos\n             * @memberof google.protobuf.Timestamp\n             * @instance\n             */\n            Timestamp.prototype.nanos = 0;\n\n            /**\n             * Creates a new Timestamp instance using the specified properties.\n             * @function create\n             * @memberof google.protobuf.Timestamp\n             * @static\n             * @param {google.protobuf.ITimestamp=} [properties] Properties to set\n             * @returns {google.protobuf.Timestamp} Timestamp instance\n             */\n            Timestamp.create = function create(properties) {\n                return new Timestamp(properties);\n            };\n\n            /**\n             * Encodes the specified Timestamp message. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages.\n             * @function encode\n             * @memberof google.protobuf.Timestamp\n             * @static\n             * @param {google.protobuf.ITimestamp} message Timestamp message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            Timestamp.encode = function encode(message, writer) {\n                if (!writer)\n                    writer = $Writer.create();\n                if (message.seconds != null && Object.hasOwnProperty.call(message, \"seconds\"))\n                    writer.uint32(/* id 1, wireType 0 =*/8).int64(message.seconds);\n                if (message.nanos != null && Object.hasOwnProperty.call(message, \"nanos\"))\n                    writer.uint32(/* id 2, wireType 0 =*/16).int32(message.nanos);\n                return writer;\n            };\n\n            /**\n             * Encodes the specified Timestamp message, length delimited. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages.\n             * @function encodeDelimited\n             * @memberof google.protobuf.Timestamp\n             * @static\n             * @param {google.protobuf.ITimestamp} message Timestamp message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            Timestamp.encodeDelimited = function encodeDelimited(message, writer) {\n                return this.encode(message, writer).ldelim();\n            };\n\n            /**\n             * Decodes a Timestamp message from the specified reader or buffer.\n             * @function decode\n             * @memberof google.protobuf.Timestamp\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @param {number} [length] Message length if known beforehand\n             * @returns {google.protobuf.Timestamp} Timestamp\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            Timestamp.decode = function decode(reader, length) {\n                if (!(reader instanceof $Reader))\n                    reader = $Reader.create(reader);\n                let end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Timestamp();\n                while (reader.pos < end) {\n                    let tag = reader.uint32();\n                    switch (tag >>> 3) {\n                    case 1:\n                        message.seconds = reader.int64();\n                        break;\n                    case 2:\n                        message.nanos = reader.int32();\n                        break;\n                    default:\n                        reader.skipType(tag & 7);\n                        break;\n                    }\n                }\n                return message;\n            };\n\n            /**\n             * Decodes a Timestamp message from the specified reader or buffer, length delimited.\n             * @function decodeDelimited\n             * @memberof google.protobuf.Timestamp\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @returns {google.protobuf.Timestamp} Timestamp\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            Timestamp.decodeDelimited = function decodeDelimited(reader) {\n                if (!(reader instanceof $Reader))\n                    reader = new $Reader(reader);\n                return this.decode(reader, reader.uint32());\n            };\n\n            /**\n             * Verifies a Timestamp message.\n             * @function verify\n             * @memberof google.protobuf.Timestamp\n             * @static\n             * @param {Object.<string,*>} message Plain object to verify\n             * @returns {string|null} `null` if valid, otherwise the reason why it is not\n             */\n            Timestamp.verify = function verify(message) {\n                if (typeof message !== \"object\" || message === null)\n                    return \"object expected\";\n                if (message.seconds != null && message.hasOwnProperty(\"seconds\"))\n                    if (!$util.isInteger(message.seconds) && !(message.seconds && $util.isInteger(message.seconds.low) && $util.isInteger(message.seconds.high)))\n                        return \"seconds: integer|Long expected\";\n                if (message.nanos != null && message.hasOwnProperty(\"nanos\"))\n                    if (!$util.isInteger(message.nanos))\n                        return \"nanos: integer expected\";\n                return null;\n            };\n\n            /**\n             * Creates a plain object from a Timestamp message. Also converts values to other types if specified.\n             * @function toObject\n             * @memberof google.protobuf.Timestamp\n             * @static\n             * @param {google.protobuf.Timestamp} message Timestamp\n             * @param {$protobuf.IConversionOptions} [options] Conversion options\n             * @returns {Object.<string,*>} Plain object\n             */\n            Timestamp.toObject = function toObject(message, options) {\n                if (!options)\n                    options = {};\n                let object = {};\n                if (options.defaults) {\n                    object.seconds = 0;\n                    object.nanos = 0;\n                }\n                if (message.seconds != null && message.hasOwnProperty(\"seconds\"))\n                    if (typeof message.seconds === \"number\")\n                        object.seconds = options.longs === String ? String(message.seconds) : message.seconds;\n                    else\n                        object.seconds = options.longs === String ? $util.Long.prototype.toString.call(message.seconds) : options.longs === Number ? new $util.LongBits(message.seconds.low >>> 0, message.seconds.high >>> 0).toNumber() : message.seconds;\n                if (message.nanos != null && message.hasOwnProperty(\"nanos\"))\n                    object.nanos = message.nanos;\n                return object;\n            };\n\n            /**\n             * Converts this Timestamp to JSON.\n             * @function toJSON\n             * @memberof google.protobuf.Timestamp\n             * @instance\n             * @returns {Object.<string,*>} JSON object\n             */\n            Timestamp.prototype.toJSON = function toJSON() {\n                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n            };\n\n            return Timestamp;\n        })();\n\n        return protobuf;\n    })();\n\n    return google;\n})();\n\nexport { $root as default };\n", "/*eslint-disable block-scoped-var, id-length, no-control-regex, no-magic-numbers, no-prototype-builtins, no-redeclare, no-shadow, no-var, sort-vars*/\n\"use strict\";\n\nvar $protobuf = require(\"@apollo/protobufjs/minimal\");\n\n// Common aliases\nvar $Reader = $protobuf.Reader, $Writer = $protobuf.Writer, $util = $protobuf.util;\n\n// Exported root namespace\nvar $root = $protobuf.roots[\"default\"] || ($protobuf.roots[\"default\"] = {});\n\n$root.Trace = (function() {\n\n    /**\n     * Properties of a Trace.\n     * @exports ITrace\n     * @interface ITrace\n     * @property {google.protobuf.ITimestamp|null} [startTime] Trace startTime\n     * @property {google.protobuf.ITimestamp|null} [endTime] Trace endTime\n     * @property {number|null} [durationNs] Trace durationNs\n     * @property {Trace.INode|null} [root] Trace root\n     * @property {boolean|null} [isIncomplete] Trace isIncomplete\n     * @property {string|null} [signature] Trace signature\n     * @property {string|null} [unexecutedOperationBody] Trace unexecutedOperationBody\n     * @property {string|null} [unexecutedOperationName] Trace unexecutedOperationName\n     * @property {Trace.IDetails|null} [details] Trace details\n     * @property {string|null} [clientName] Trace clientName\n     * @property {string|null} [clientVersion] Trace clientVersion\n     * @property {Trace.IHTTP|null} [http] Trace http\n     * @property {Trace.ICachePolicy|null} [cachePolicy] Trace cachePolicy\n     * @property {Trace.IQueryPlanNode|null} [queryPlan] Trace queryPlan\n     * @property {boolean|null} [fullQueryCacheHit] Trace fullQueryCacheHit\n     * @property {boolean|null} [persistedQueryHit] Trace persistedQueryHit\n     * @property {boolean|null} [persistedQueryRegister] Trace persistedQueryRegister\n     * @property {boolean|null} [registeredOperation] Trace registeredOperation\n     * @property {boolean|null} [forbiddenOperation] Trace forbiddenOperation\n     * @property {number|null} [fieldExecutionWeight] Trace fieldExecutionWeight\n     */\n\n    /**\n     * Constructs a new Trace.\n     * @exports Trace\n     * @classdesc Represents a Trace.\n     * @implements ITrace\n     * @constructor\n     * @param {ITrace=} [properties] Properties to set\n     */\n    function Trace(properties) {\n        if (properties)\n            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * Trace startTime.\n     * @member {google.protobuf.ITimestamp|null|undefined} startTime\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.startTime = null;\n\n    /**\n     * Trace endTime.\n     * @member {google.protobuf.ITimestamp|null|undefined} endTime\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.endTime = null;\n\n    /**\n     * Trace durationNs.\n     * @member {number} durationNs\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.durationNs = 0;\n\n    /**\n     * Trace root.\n     * @member {Trace.INode|null|undefined} root\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.root = null;\n\n    /**\n     * Trace isIncomplete.\n     * @member {boolean} isIncomplete\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.isIncomplete = false;\n\n    /**\n     * Trace signature.\n     * @member {string} signature\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.signature = \"\";\n\n    /**\n     * Trace unexecutedOperationBody.\n     * @member {string} unexecutedOperationBody\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.unexecutedOperationBody = \"\";\n\n    /**\n     * Trace unexecutedOperationName.\n     * @member {string} unexecutedOperationName\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.unexecutedOperationName = \"\";\n\n    /**\n     * Trace details.\n     * @member {Trace.IDetails|null|undefined} details\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.details = null;\n\n    /**\n     * Trace clientName.\n     * @member {string} clientName\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.clientName = \"\";\n\n    /**\n     * Trace clientVersion.\n     * @member {string} clientVersion\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.clientVersion = \"\";\n\n    /**\n     * Trace http.\n     * @member {Trace.IHTTP|null|undefined} http\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.http = null;\n\n    /**\n     * Trace cachePolicy.\n     * @member {Trace.ICachePolicy|null|undefined} cachePolicy\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.cachePolicy = null;\n\n    /**\n     * Trace queryPlan.\n     * @member {Trace.IQueryPlanNode|null|undefined} queryPlan\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.queryPlan = null;\n\n    /**\n     * Trace fullQueryCacheHit.\n     * @member {boolean} fullQueryCacheHit\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.fullQueryCacheHit = false;\n\n    /**\n     * Trace persistedQueryHit.\n     * @member {boolean} persistedQueryHit\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.persistedQueryHit = false;\n\n    /**\n     * Trace persistedQueryRegister.\n     * @member {boolean} persistedQueryRegister\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.persistedQueryRegister = false;\n\n    /**\n     * Trace registeredOperation.\n     * @member {boolean} registeredOperation\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.registeredOperation = false;\n\n    /**\n     * Trace forbiddenOperation.\n     * @member {boolean} forbiddenOperation\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.forbiddenOperation = false;\n\n    /**\n     * Trace fieldExecutionWeight.\n     * @member {number} fieldExecutionWeight\n     * @memberof Trace\n     * @instance\n     */\n    Trace.prototype.fieldExecutionWeight = 0;\n\n    /**\n     * Creates a new Trace instance using the specified properties.\n     * @function create\n     * @memberof Trace\n     * @static\n     * @param {ITrace=} [properties] Properties to set\n     * @returns {Trace} Trace instance\n     */\n    Trace.create = function create(properties) {\n        return new Trace(properties);\n    };\n\n    /**\n     * Encodes the specified Trace message. Does not implicitly {@link Trace.verify|verify} messages.\n     * @function encode\n     * @memberof Trace\n     * @static\n     * @param {ITrace} message Trace message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    Trace.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.endTime != null && Object.hasOwnProperty.call(message, \"endTime\"))\n            $root.google.protobuf.Timestamp.encode(message.endTime, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n        if (message.startTime != null && Object.hasOwnProperty.call(message, \"startTime\"))\n            $root.google.protobuf.Timestamp.encode(message.startTime, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();\n        if (message.details != null && Object.hasOwnProperty.call(message, \"details\"))\n            $root.Trace.Details.encode(message.details, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n        if (message.clientName != null && Object.hasOwnProperty.call(message, \"clientName\"))\n            writer.uint32(/* id 7, wireType 2 =*/58).string(message.clientName);\n        if (message.clientVersion != null && Object.hasOwnProperty.call(message, \"clientVersion\"))\n            writer.uint32(/* id 8, wireType 2 =*/66).string(message.clientVersion);\n        if (message.http != null && Object.hasOwnProperty.call(message, \"http\"))\n            $root.Trace.HTTP.encode(message.http, writer.uint32(/* id 10, wireType 2 =*/82).fork()).ldelim();\n        if (message.durationNs != null && Object.hasOwnProperty.call(message, \"durationNs\"))\n            writer.uint32(/* id 11, wireType 0 =*/88).uint64(message.durationNs);\n        if (message.root != null && Object.hasOwnProperty.call(message, \"root\"))\n            $root.Trace.Node.encode(message.root, writer.uint32(/* id 14, wireType 2 =*/114).fork()).ldelim();\n        if (message.cachePolicy != null && Object.hasOwnProperty.call(message, \"cachePolicy\"))\n            $root.Trace.CachePolicy.encode(message.cachePolicy, writer.uint32(/* id 18, wireType 2 =*/146).fork()).ldelim();\n        if (message.signature != null && Object.hasOwnProperty.call(message, \"signature\"))\n            writer.uint32(/* id 19, wireType 2 =*/154).string(message.signature);\n        if (message.fullQueryCacheHit != null && Object.hasOwnProperty.call(message, \"fullQueryCacheHit\"))\n            writer.uint32(/* id 20, wireType 0 =*/160).bool(message.fullQueryCacheHit);\n        if (message.persistedQueryHit != null && Object.hasOwnProperty.call(message, \"persistedQueryHit\"))\n            writer.uint32(/* id 21, wireType 0 =*/168).bool(message.persistedQueryHit);\n        if (message.persistedQueryRegister != null && Object.hasOwnProperty.call(message, \"persistedQueryRegister\"))\n            writer.uint32(/* id 22, wireType 0 =*/176).bool(message.persistedQueryRegister);\n        if (message.registeredOperation != null && Object.hasOwnProperty.call(message, \"registeredOperation\"))\n            writer.uint32(/* id 24, wireType 0 =*/192).bool(message.registeredOperation);\n        if (message.forbiddenOperation != null && Object.hasOwnProperty.call(message, \"forbiddenOperation\"))\n            writer.uint32(/* id 25, wireType 0 =*/200).bool(message.forbiddenOperation);\n        if (message.queryPlan != null && Object.hasOwnProperty.call(message, \"queryPlan\"))\n            $root.Trace.QueryPlanNode.encode(message.queryPlan, writer.uint32(/* id 26, wireType 2 =*/210).fork()).ldelim();\n        if (message.unexecutedOperationBody != null && Object.hasOwnProperty.call(message, \"unexecutedOperationBody\"))\n            writer.uint32(/* id 27, wireType 2 =*/218).string(message.unexecutedOperationBody);\n        if (message.unexecutedOperationName != null && Object.hasOwnProperty.call(message, \"unexecutedOperationName\"))\n            writer.uint32(/* id 28, wireType 2 =*/226).string(message.unexecutedOperationName);\n        if (message.fieldExecutionWeight != null && Object.hasOwnProperty.call(message, \"fieldExecutionWeight\"))\n            writer.uint32(/* id 31, wireType 1 =*/249).double(message.fieldExecutionWeight);\n        if (message.isIncomplete != null && Object.hasOwnProperty.call(message, \"isIncomplete\"))\n            writer.uint32(/* id 33, wireType 0 =*/264).bool(message.isIncomplete);\n        return writer;\n    };\n\n    /**\n     * Encodes the specified Trace message, length delimited. Does not implicitly {@link Trace.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof Trace\n     * @static\n     * @param {ITrace} message Trace message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    Trace.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a Trace message from the specified reader or buffer.\n     * @function decode\n     * @memberof Trace\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {Trace} Trace\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    Trace.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace();\n        while (reader.pos < end) {\n            var tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 4:\n                message.startTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());\n                break;\n            case 3:\n                message.endTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());\n                break;\n            case 11:\n                message.durationNs = reader.uint64();\n                break;\n            case 14:\n                message.root = $root.Trace.Node.decode(reader, reader.uint32());\n                break;\n            case 33:\n                message.isIncomplete = reader.bool();\n                break;\n            case 19:\n                message.signature = reader.string();\n                break;\n            case 27:\n                message.unexecutedOperationBody = reader.string();\n                break;\n            case 28:\n                message.unexecutedOperationName = reader.string();\n                break;\n            case 6:\n                message.details = $root.Trace.Details.decode(reader, reader.uint32());\n                break;\n            case 7:\n                message.clientName = reader.string();\n                break;\n            case 8:\n                message.clientVersion = reader.string();\n                break;\n            case 10:\n                message.http = $root.Trace.HTTP.decode(reader, reader.uint32());\n                break;\n            case 18:\n                message.cachePolicy = $root.Trace.CachePolicy.decode(reader, reader.uint32());\n                break;\n            case 26:\n                message.queryPlan = $root.Trace.QueryPlanNode.decode(reader, reader.uint32());\n                break;\n            case 20:\n                message.fullQueryCacheHit = reader.bool();\n                break;\n            case 21:\n                message.persistedQueryHit = reader.bool();\n                break;\n            case 22:\n                message.persistedQueryRegister = reader.bool();\n                break;\n            case 24:\n                message.registeredOperation = reader.bool();\n                break;\n            case 25:\n                message.forbiddenOperation = reader.bool();\n                break;\n            case 31:\n                message.fieldExecutionWeight = reader.double();\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a Trace message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof Trace\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {Trace} Trace\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    Trace.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a Trace message.\n     * @function verify\n     * @memberof Trace\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    Trace.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.startTime != null && message.hasOwnProperty(\"startTime\")) {\n            var error = $root.google.protobuf.Timestamp.verify(message.startTime);\n            if (error)\n                return \"startTime.\" + error;\n        }\n        if (message.endTime != null && message.hasOwnProperty(\"endTime\")) {\n            var error = $root.google.protobuf.Timestamp.verify(message.endTime);\n            if (error)\n                return \"endTime.\" + error;\n        }\n        if (message.durationNs != null && message.hasOwnProperty(\"durationNs\"))\n            if (!$util.isInteger(message.durationNs) && !(message.durationNs && $util.isInteger(message.durationNs.low) && $util.isInteger(message.durationNs.high)))\n                return \"durationNs: integer|Long expected\";\n        if (message.root != null && message.hasOwnProperty(\"root\")) {\n            var error = $root.Trace.Node.verify(message.root);\n            if (error)\n                return \"root.\" + error;\n        }\n        if (message.isIncomplete != null && message.hasOwnProperty(\"isIncomplete\"))\n            if (typeof message.isIncomplete !== \"boolean\")\n                return \"isIncomplete: boolean expected\";\n        if (message.signature != null && message.hasOwnProperty(\"signature\"))\n            if (!$util.isString(message.signature))\n                return \"signature: string expected\";\n        if (message.unexecutedOperationBody != null && message.hasOwnProperty(\"unexecutedOperationBody\"))\n            if (!$util.isString(message.unexecutedOperationBody))\n                return \"unexecutedOperationBody: string expected\";\n        if (message.unexecutedOperationName != null && message.hasOwnProperty(\"unexecutedOperationName\"))\n            if (!$util.isString(message.unexecutedOperationName))\n                return \"unexecutedOperationName: string expected\";\n        if (message.details != null && message.hasOwnProperty(\"details\")) {\n            var error = $root.Trace.Details.verify(message.details);\n            if (error)\n                return \"details.\" + error;\n        }\n        if (message.clientName != null && message.hasOwnProperty(\"clientName\"))\n            if (!$util.isString(message.clientName))\n                return \"clientName: string expected\";\n        if (message.clientVersion != null && message.hasOwnProperty(\"clientVersion\"))\n            if (!$util.isString(message.clientVersion))\n                return \"clientVersion: string expected\";\n        if (message.http != null && message.hasOwnProperty(\"http\")) {\n            var error = $root.Trace.HTTP.verify(message.http);\n            if (error)\n                return \"http.\" + error;\n        }\n        if (message.cachePolicy != null && message.hasOwnProperty(\"cachePolicy\")) {\n            var error = $root.Trace.CachePolicy.verify(message.cachePolicy);\n            if (error)\n                return \"cachePolicy.\" + error;\n        }\n        if (message.queryPlan != null && message.hasOwnProperty(\"queryPlan\")) {\n            var error = $root.Trace.QueryPlanNode.verify(message.queryPlan);\n            if (error)\n                return \"queryPlan.\" + error;\n        }\n        if (message.fullQueryCacheHit != null && message.hasOwnProperty(\"fullQueryCacheHit\"))\n            if (typeof message.fullQueryCacheHit !== \"boolean\")\n                return \"fullQueryCacheHit: boolean expected\";\n        if (message.persistedQueryHit != null && message.hasOwnProperty(\"persistedQueryHit\"))\n            if (typeof message.persistedQueryHit !== \"boolean\")\n                return \"persistedQueryHit: boolean expected\";\n        if (message.persistedQueryRegister != null && message.hasOwnProperty(\"persistedQueryRegister\"))\n            if (typeof message.persistedQueryRegister !== \"boolean\")\n                return \"persistedQueryRegister: boolean expected\";\n        if (message.registeredOperation != null && message.hasOwnProperty(\"registeredOperation\"))\n            if (typeof message.registeredOperation !== \"boolean\")\n                return \"registeredOperation: boolean expected\";\n        if (message.forbiddenOperation != null && message.hasOwnProperty(\"forbiddenOperation\"))\n            if (typeof message.forbiddenOperation !== \"boolean\")\n                return \"forbiddenOperation: boolean expected\";\n        if (message.fieldExecutionWeight != null && message.hasOwnProperty(\"fieldExecutionWeight\"))\n            if (typeof message.fieldExecutionWeight !== \"number\")\n                return \"fieldExecutionWeight: number expected\";\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a Trace message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof Trace\n     * @static\n     * @param {Trace} message Trace\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    Trace.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        var object = {};\n        if (options.defaults) {\n            object.endTime = null;\n            object.startTime = null;\n            object.details = null;\n            object.clientName = \"\";\n            object.clientVersion = \"\";\n            object.http = null;\n            object.durationNs = 0;\n            object.root = null;\n            object.cachePolicy = null;\n            object.signature = \"\";\n            object.fullQueryCacheHit = false;\n            object.persistedQueryHit = false;\n            object.persistedQueryRegister = false;\n            object.registeredOperation = false;\n            object.forbiddenOperation = false;\n            object.queryPlan = null;\n            object.unexecutedOperationBody = \"\";\n            object.unexecutedOperationName = \"\";\n            object.fieldExecutionWeight = 0;\n            object.isIncomplete = false;\n        }\n        if (message.endTime != null && message.hasOwnProperty(\"endTime\"))\n            object.endTime = $root.google.protobuf.Timestamp.toObject(message.endTime, options);\n        if (message.startTime != null && message.hasOwnProperty(\"startTime\"))\n            object.startTime = $root.google.protobuf.Timestamp.toObject(message.startTime, options);\n        if (message.details != null && message.hasOwnProperty(\"details\"))\n            object.details = $root.Trace.Details.toObject(message.details, options);\n        if (message.clientName != null && message.hasOwnProperty(\"clientName\"))\n            object.clientName = message.clientName;\n        if (message.clientVersion != null && message.hasOwnProperty(\"clientVersion\"))\n            object.clientVersion = message.clientVersion;\n        if (message.http != null && message.hasOwnProperty(\"http\"))\n            object.http = $root.Trace.HTTP.toObject(message.http, options);\n        if (message.durationNs != null && message.hasOwnProperty(\"durationNs\"))\n            if (typeof message.durationNs === \"number\")\n                object.durationNs = options.longs === String ? String(message.durationNs) : message.durationNs;\n            else\n                object.durationNs = options.longs === String ? $util.Long.prototype.toString.call(message.durationNs) : options.longs === Number ? new $util.LongBits(message.durationNs.low >>> 0, message.durationNs.high >>> 0).toNumber(true) : message.durationNs;\n        if (message.root != null && message.hasOwnProperty(\"root\"))\n            object.root = $root.Trace.Node.toObject(message.root, options);\n        if (message.cachePolicy != null && message.hasOwnProperty(\"cachePolicy\"))\n            object.cachePolicy = $root.Trace.CachePolicy.toObject(message.cachePolicy, options);\n        if (message.signature != null && message.hasOwnProperty(\"signature\"))\n            object.signature = message.signature;\n        if (message.fullQueryCacheHit != null && message.hasOwnProperty(\"fullQueryCacheHit\"))\n            object.fullQueryCacheHit = message.fullQueryCacheHit;\n        if (message.persistedQueryHit != null && message.hasOwnProperty(\"persistedQueryHit\"))\n            object.persistedQueryHit = message.persistedQueryHit;\n        if (message.persistedQueryRegister != null && message.hasOwnProperty(\"persistedQueryRegister\"))\n            object.persistedQueryRegister = message.persistedQueryRegister;\n        if (message.registeredOperation != null && message.hasOwnProperty(\"registeredOperation\"))\n            object.registeredOperation = message.registeredOperation;\n        if (message.forbiddenOperation != null && message.hasOwnProperty(\"forbiddenOperation\"))\n            object.forbiddenOperation = message.forbiddenOperation;\n        if (message.queryPlan != null && message.hasOwnProperty(\"queryPlan\"))\n            object.queryPlan = $root.Trace.QueryPlanNode.toObject(message.queryPlan, options);\n        if (message.unexecutedOperationBody != null && message.hasOwnProperty(\"unexecutedOperationBody\"))\n            object.unexecutedOperationBody = message.unexecutedOperationBody;\n        if (message.unexecutedOperationName != null && message.hasOwnProperty(\"unexecutedOperationName\"))\n            object.unexecutedOperationName = message.unexecutedOperationName;\n        if (message.fieldExecutionWeight != null && message.hasOwnProperty(\"fieldExecutionWeight\"))\n            object.fieldExecutionWeight = options.json && !isFinite(message.fieldExecutionWeight) ? String(message.fieldExecutionWeight) : message.fieldExecutionWeight;\n        if (message.isIncomplete != null && message.hasOwnProperty(\"isIncomplete\"))\n            object.isIncomplete = message.isIncomplete;\n        return object;\n    };\n\n    /**\n     * Converts this Trace to JSON.\n     * @function toJSON\n     * @memberof Trace\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    Trace.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    Trace.CachePolicy = (function() {\n\n        /**\n         * Properties of a CachePolicy.\n         * @memberof Trace\n         * @interface ICachePolicy\n         * @property {Trace.CachePolicy.Scope|null} [scope] CachePolicy scope\n         * @property {number|null} [maxAgeNs] CachePolicy maxAgeNs\n         */\n\n        /**\n         * Constructs a new CachePolicy.\n         * @memberof Trace\n         * @classdesc Represents a CachePolicy.\n         * @implements ICachePolicy\n         * @constructor\n         * @param {Trace.ICachePolicy=} [properties] Properties to set\n         */\n        function CachePolicy(properties) {\n            if (properties)\n                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                    if (properties[keys[i]] != null)\n                        this[keys[i]] = properties[keys[i]];\n        }\n\n        /**\n         * CachePolicy scope.\n         * @member {Trace.CachePolicy.Scope} scope\n         * @memberof Trace.CachePolicy\n         * @instance\n         */\n        CachePolicy.prototype.scope = 0;\n\n        /**\n         * CachePolicy maxAgeNs.\n         * @member {number} maxAgeNs\n         * @memberof Trace.CachePolicy\n         * @instance\n         */\n        CachePolicy.prototype.maxAgeNs = 0;\n\n        /**\n         * Creates a new CachePolicy instance using the specified properties.\n         * @function create\n         * @memberof Trace.CachePolicy\n         * @static\n         * @param {Trace.ICachePolicy=} [properties] Properties to set\n         * @returns {Trace.CachePolicy} CachePolicy instance\n         */\n        CachePolicy.create = function create(properties) {\n            return new CachePolicy(properties);\n        };\n\n        /**\n         * Encodes the specified CachePolicy message. Does not implicitly {@link Trace.CachePolicy.verify|verify} messages.\n         * @function encode\n         * @memberof Trace.CachePolicy\n         * @static\n         * @param {Trace.ICachePolicy} message CachePolicy message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        CachePolicy.encode = function encode(message, writer) {\n            if (!writer)\n                writer = $Writer.create();\n            if (message.scope != null && Object.hasOwnProperty.call(message, \"scope\"))\n                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.scope);\n            if (message.maxAgeNs != null && Object.hasOwnProperty.call(message, \"maxAgeNs\"))\n                writer.uint32(/* id 2, wireType 0 =*/16).int64(message.maxAgeNs);\n            return writer;\n        };\n\n        /**\n         * Encodes the specified CachePolicy message, length delimited. Does not implicitly {@link Trace.CachePolicy.verify|verify} messages.\n         * @function encodeDelimited\n         * @memberof Trace.CachePolicy\n         * @static\n         * @param {Trace.ICachePolicy} message CachePolicy message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        CachePolicy.encodeDelimited = function encodeDelimited(message, writer) {\n            return this.encode(message, writer).ldelim();\n        };\n\n        /**\n         * Decodes a CachePolicy message from the specified reader or buffer.\n         * @function decode\n         * @memberof Trace.CachePolicy\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {Trace.CachePolicy} CachePolicy\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        CachePolicy.decode = function decode(reader, length) {\n            if (!(reader instanceof $Reader))\n                reader = $Reader.create(reader);\n            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.CachePolicy();\n            while (reader.pos < end) {\n                var tag = reader.uint32();\n                switch (tag >>> 3) {\n                case 1:\n                    message.scope = reader.int32();\n                    break;\n                case 2:\n                    message.maxAgeNs = reader.int64();\n                    break;\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n                }\n            }\n            return message;\n        };\n\n        /**\n         * Decodes a CachePolicy message from the specified reader or buffer, length delimited.\n         * @function decodeDelimited\n         * @memberof Trace.CachePolicy\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @returns {Trace.CachePolicy} CachePolicy\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        CachePolicy.decodeDelimited = function decodeDelimited(reader) {\n            if (!(reader instanceof $Reader))\n                reader = new $Reader(reader);\n            return this.decode(reader, reader.uint32());\n        };\n\n        /**\n         * Verifies a CachePolicy message.\n         * @function verify\n         * @memberof Trace.CachePolicy\n         * @static\n         * @param {Object.<string,*>} message Plain object to verify\n         * @returns {string|null} `null` if valid, otherwise the reason why it is not\n         */\n        CachePolicy.verify = function verify(message) {\n            if (typeof message !== \"object\" || message === null)\n                return \"object expected\";\n            if (message.scope != null && message.hasOwnProperty(\"scope\"))\n                switch (message.scope) {\n                default:\n                    return \"scope: enum value expected\";\n                case 0:\n                case 1:\n                case 2:\n                    break;\n                }\n            if (message.maxAgeNs != null && message.hasOwnProperty(\"maxAgeNs\"))\n                if (!$util.isInteger(message.maxAgeNs) && !(message.maxAgeNs && $util.isInteger(message.maxAgeNs.low) && $util.isInteger(message.maxAgeNs.high)))\n                    return \"maxAgeNs: integer|Long expected\";\n            return null;\n        };\n\n        /**\n         * Creates a plain object from a CachePolicy message. Also converts values to other types if specified.\n         * @function toObject\n         * @memberof Trace.CachePolicy\n         * @static\n         * @param {Trace.CachePolicy} message CachePolicy\n         * @param {$protobuf.IConversionOptions} [options] Conversion options\n         * @returns {Object.<string,*>} Plain object\n         */\n        CachePolicy.toObject = function toObject(message, options) {\n            if (!options)\n                options = {};\n            var object = {};\n            if (options.defaults) {\n                object.scope = options.enums === String ? \"UNKNOWN\" : 0;\n                object.maxAgeNs = 0;\n            }\n            if (message.scope != null && message.hasOwnProperty(\"scope\"))\n                object.scope = options.enums === String ? $root.Trace.CachePolicy.Scope[message.scope] : message.scope;\n            if (message.maxAgeNs != null && message.hasOwnProperty(\"maxAgeNs\"))\n                if (typeof message.maxAgeNs === \"number\")\n                    object.maxAgeNs = options.longs === String ? String(message.maxAgeNs) : message.maxAgeNs;\n                else\n                    object.maxAgeNs = options.longs === String ? $util.Long.prototype.toString.call(message.maxAgeNs) : options.longs === Number ? new $util.LongBits(message.maxAgeNs.low >>> 0, message.maxAgeNs.high >>> 0).toNumber() : message.maxAgeNs;\n            return object;\n        };\n\n        /**\n         * Converts this CachePolicy to JSON.\n         * @function toJSON\n         * @memberof Trace.CachePolicy\n         * @instance\n         * @returns {Object.<string,*>} JSON object\n         */\n        CachePolicy.prototype.toJSON = function toJSON() {\n            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n        };\n\n        /**\n         * Scope enum.\n         * @name Trace.CachePolicy.Scope\n         * @enum {string}\n         * @property {number} UNKNOWN=0 UNKNOWN value\n         * @property {number} PUBLIC=1 PUBLIC value\n         * @property {number} PRIVATE=2 PRIVATE value\n         */\n        CachePolicy.Scope = (function() {\n            var valuesById = {}, values = Object.create(valuesById);\n            values[valuesById[0] = \"UNKNOWN\"] = 0;\n            values[valuesById[1] = \"PUBLIC\"] = 1;\n            values[valuesById[2] = \"PRIVATE\"] = 2;\n            return values;\n        })();\n\n        return CachePolicy;\n    })();\n\n    Trace.Details = (function() {\n\n        /**\n         * Properties of a Details.\n         * @memberof Trace\n         * @interface IDetails\n         * @property {Object.<string,string>|null} [variablesJson] Details variablesJson\n         * @property {string|null} [operationName] Details operationName\n         */\n\n        /**\n         * Constructs a new Details.\n         * @memberof Trace\n         * @classdesc Represents a Details.\n         * @implements IDetails\n         * @constructor\n         * @param {Trace.IDetails=} [properties] Properties to set\n         */\n        function Details(properties) {\n            this.variablesJson = {};\n            if (properties)\n                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                    if (properties[keys[i]] != null)\n                        this[keys[i]] = properties[keys[i]];\n        }\n\n        /**\n         * Details variablesJson.\n         * @member {Object.<string,string>} variablesJson\n         * @memberof Trace.Details\n         * @instance\n         */\n        Details.prototype.variablesJson = $util.emptyObject;\n\n        /**\n         * Details operationName.\n         * @member {string} operationName\n         * @memberof Trace.Details\n         * @instance\n         */\n        Details.prototype.operationName = \"\";\n\n        /**\n         * Creates a new Details instance using the specified properties.\n         * @function create\n         * @memberof Trace.Details\n         * @static\n         * @param {Trace.IDetails=} [properties] Properties to set\n         * @returns {Trace.Details} Details instance\n         */\n        Details.create = function create(properties) {\n            return new Details(properties);\n        };\n\n        /**\n         * Encodes the specified Details message. Does not implicitly {@link Trace.Details.verify|verify} messages.\n         * @function encode\n         * @memberof Trace.Details\n         * @static\n         * @param {Trace.IDetails} message Details message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        Details.encode = function encode(message, writer) {\n            if (!writer)\n                writer = $Writer.create();\n            if (message.operationName != null && Object.hasOwnProperty.call(message, \"operationName\"))\n                writer.uint32(/* id 3, wireType 2 =*/26).string(message.operationName);\n            if (message.variablesJson != null && Object.hasOwnProperty.call(message, \"variablesJson\"))\n                for (var keys = Object.keys(message.variablesJson), i = 0; i < keys.length; ++i)\n                    writer.uint32(/* id 4, wireType 2 =*/34).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]).uint32(/* id 2, wireType 2 =*/18).string(message.variablesJson[keys[i]]).ldelim();\n            return writer;\n        };\n\n        /**\n         * Encodes the specified Details message, length delimited. Does not implicitly {@link Trace.Details.verify|verify} messages.\n         * @function encodeDelimited\n         * @memberof Trace.Details\n         * @static\n         * @param {Trace.IDetails} message Details message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        Details.encodeDelimited = function encodeDelimited(message, writer) {\n            return this.encode(message, writer).ldelim();\n        };\n\n        /**\n         * Decodes a Details message from the specified reader or buffer.\n         * @function decode\n         * @memberof Trace.Details\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {Trace.Details} Details\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        Details.decode = function decode(reader, length) {\n            if (!(reader instanceof $Reader))\n                reader = $Reader.create(reader);\n            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.Details(), key;\n            while (reader.pos < end) {\n                var tag = reader.uint32();\n                switch (tag >>> 3) {\n                case 4:\n                    reader.skip().pos++;\n                    if (message.variablesJson === $util.emptyObject)\n                        message.variablesJson = {};\n                    key = reader.string();\n                    reader.pos++;\n                    message.variablesJson[key] = reader.string();\n                    break;\n                case 3:\n                    message.operationName = reader.string();\n                    break;\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n                }\n            }\n            return message;\n        };\n\n        /**\n         * Decodes a Details message from the specified reader or buffer, length delimited.\n         * @function decodeDelimited\n         * @memberof Trace.Details\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @returns {Trace.Details} Details\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        Details.decodeDelimited = function decodeDelimited(reader) {\n            if (!(reader instanceof $Reader))\n                reader = new $Reader(reader);\n            return this.decode(reader, reader.uint32());\n        };\n\n        /**\n         * Verifies a Details message.\n         * @function verify\n         * @memberof Trace.Details\n         * @static\n         * @param {Object.<string,*>} message Plain object to verify\n         * @returns {string|null} `null` if valid, otherwise the reason why it is not\n         */\n        Details.verify = function verify(message) {\n            if (typeof message !== \"object\" || message === null)\n                return \"object expected\";\n            if (message.variablesJson != null && message.hasOwnProperty(\"variablesJson\")) {\n                if (!$util.isObject(message.variablesJson))\n                    return \"variablesJson: object expected\";\n                var key = Object.keys(message.variablesJson);\n                for (var i = 0; i < key.length; ++i)\n                    if (!$util.isString(message.variablesJson[key[i]]))\n                        return \"variablesJson: string{k:string} expected\";\n            }\n            if (message.operationName != null && message.hasOwnProperty(\"operationName\"))\n                if (!$util.isString(message.operationName))\n                    return \"operationName: string expected\";\n            return null;\n        };\n\n        /**\n         * Creates a plain object from a Details message. Also converts values to other types if specified.\n         * @function toObject\n         * @memberof Trace.Details\n         * @static\n         * @param {Trace.Details} message Details\n         * @param {$protobuf.IConversionOptions} [options] Conversion options\n         * @returns {Object.<string,*>} Plain object\n         */\n        Details.toObject = function toObject(message, options) {\n            if (!options)\n                options = {};\n            var object = {};\n            if (options.objects || options.defaults)\n                object.variablesJson = {};\n            if (options.defaults)\n                object.operationName = \"\";\n            if (message.operationName != null && message.hasOwnProperty(\"operationName\"))\n                object.operationName = message.operationName;\n            var keys2;\n            if (message.variablesJson && (keys2 = Object.keys(message.variablesJson)).length) {\n                object.variablesJson = {};\n                for (var j = 0; j < keys2.length; ++j)\n                    object.variablesJson[keys2[j]] = message.variablesJson[keys2[j]];\n            }\n            return object;\n        };\n\n        /**\n         * Converts this Details to JSON.\n         * @function toJSON\n         * @memberof Trace.Details\n         * @instance\n         * @returns {Object.<string,*>} JSON object\n         */\n        Details.prototype.toJSON = function toJSON() {\n            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n        };\n\n        return Details;\n    })();\n\n    Trace.Error = (function() {\n\n        /**\n         * Properties of an Error.\n         * @memberof Trace\n         * @interface IError\n         * @property {string|null} [message] Error message\n         * @property {Array.<Trace.ILocation>|null} [location] Error location\n         * @property {number|null} [timeNs] Error timeNs\n         * @property {string|null} [json] Error json\n         */\n\n        /**\n         * Constructs a new Error.\n         * @memberof Trace\n         * @classdesc Represents an Error.\n         * @implements IError\n         * @constructor\n         * @param {Trace.IError=} [properties] Properties to set\n         */\n        function Error(properties) {\n            this.location = [];\n            if (properties)\n                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                    if (properties[keys[i]] != null)\n                        this[keys[i]] = properties[keys[i]];\n        }\n\n        /**\n         * Error message.\n         * @member {string} message\n         * @memberof Trace.Error\n         * @instance\n         */\n        Error.prototype.message = \"\";\n\n        /**\n         * Error location.\n         * @member {Array.<Trace.ILocation>} location\n         * @memberof Trace.Error\n         * @instance\n         */\n        Error.prototype.location = $util.emptyArray;\n\n        /**\n         * Error timeNs.\n         * @member {number} timeNs\n         * @memberof Trace.Error\n         * @instance\n         */\n        Error.prototype.timeNs = 0;\n\n        /**\n         * Error json.\n         * @member {string} json\n         * @memberof Trace.Error\n         * @instance\n         */\n        Error.prototype.json = \"\";\n\n        /**\n         * Creates a new Error instance using the specified properties.\n         * @function create\n         * @memberof Trace.Error\n         * @static\n         * @param {Trace.IError=} [properties] Properties to set\n         * @returns {Trace.Error} Error instance\n         */\n        Error.create = function create(properties) {\n            return new Error(properties);\n        };\n\n        /**\n         * Encodes the specified Error message. Does not implicitly {@link Trace.Error.verify|verify} messages.\n         * @function encode\n         * @memberof Trace.Error\n         * @static\n         * @param {Trace.IError} message Error message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        Error.encode = function encode(message, writer) {\n            if (!writer)\n                writer = $Writer.create();\n            if (message.message != null && Object.hasOwnProperty.call(message, \"message\"))\n                writer.uint32(/* id 1, wireType 2 =*/10).string(message.message);\n            if (message.location != null && message.location.length)\n                for (var i = 0; i < message.location.length; ++i)\n                    $root.Trace.Location.encode(message.location[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n            if (message.timeNs != null && Object.hasOwnProperty.call(message, \"timeNs\"))\n                writer.uint32(/* id 3, wireType 0 =*/24).uint64(message.timeNs);\n            if (message.json != null && Object.hasOwnProperty.call(message, \"json\"))\n                writer.uint32(/* id 4, wireType 2 =*/34).string(message.json);\n            return writer;\n        };\n\n        /**\n         * Encodes the specified Error message, length delimited. Does not implicitly {@link Trace.Error.verify|verify} messages.\n         * @function encodeDelimited\n         * @memberof Trace.Error\n         * @static\n         * @param {Trace.IError} message Error message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        Error.encodeDelimited = function encodeDelimited(message, writer) {\n            return this.encode(message, writer).ldelim();\n        };\n\n        /**\n         * Decodes an Error message from the specified reader or buffer.\n         * @function decode\n         * @memberof Trace.Error\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {Trace.Error} Error\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        Error.decode = function decode(reader, length) {\n            if (!(reader instanceof $Reader))\n                reader = $Reader.create(reader);\n            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.Error();\n            while (reader.pos < end) {\n                var tag = reader.uint32();\n                switch (tag >>> 3) {\n                case 1:\n                    message.message = reader.string();\n                    break;\n                case 2:\n                    if (!(message.location && message.location.length))\n                        message.location = [];\n                    message.location.push($root.Trace.Location.decode(reader, reader.uint32()));\n                    break;\n                case 3:\n                    message.timeNs = reader.uint64();\n                    break;\n                case 4:\n                    message.json = reader.string();\n                    break;\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n                }\n            }\n            return message;\n        };\n\n        /**\n         * Decodes an Error message from the specified reader or buffer, length delimited.\n         * @function decodeDelimited\n         * @memberof Trace.Error\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @returns {Trace.Error} Error\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        Error.decodeDelimited = function decodeDelimited(reader) {\n            if (!(reader instanceof $Reader))\n                reader = new $Reader(reader);\n            return this.decode(reader, reader.uint32());\n        };\n\n        /**\n         * Verifies an Error message.\n         * @function verify\n         * @memberof Trace.Error\n         * @static\n         * @param {Object.<string,*>} message Plain object to verify\n         * @returns {string|null} `null` if valid, otherwise the reason why it is not\n         */\n        Error.verify = function verify(message) {\n            if (typeof message !== \"object\" || message === null)\n                return \"object expected\";\n            if (message.message != null && message.hasOwnProperty(\"message\"))\n                if (!$util.isString(message.message))\n                    return \"message: string expected\";\n            if (message.location != null && message.hasOwnProperty(\"location\")) {\n                if (!Array.isArray(message.location))\n                    return \"location: array expected\";\n                for (var i = 0; i < message.location.length; ++i) {\n                    var error = $root.Trace.Location.verify(message.location[i]);\n                    if (error)\n                        return \"location.\" + error;\n                }\n            }\n            if (message.timeNs != null && message.hasOwnProperty(\"timeNs\"))\n                if (!$util.isInteger(message.timeNs) && !(message.timeNs && $util.isInteger(message.timeNs.low) && $util.isInteger(message.timeNs.high)))\n                    return \"timeNs: integer|Long expected\";\n            if (message.json != null && message.hasOwnProperty(\"json\"))\n                if (!$util.isString(message.json))\n                    return \"json: string expected\";\n            return null;\n        };\n\n        /**\n         * Creates a plain object from an Error message. Also converts values to other types if specified.\n         * @function toObject\n         * @memberof Trace.Error\n         * @static\n         * @param {Trace.Error} message Error\n         * @param {$protobuf.IConversionOptions} [options] Conversion options\n         * @returns {Object.<string,*>} Plain object\n         */\n        Error.toObject = function toObject(message, options) {\n            if (!options)\n                options = {};\n            var object = {};\n            if (options.arrays || options.defaults)\n                object.location = [];\n            if (options.defaults) {\n                object.message = \"\";\n                object.timeNs = 0;\n                object.json = \"\";\n            }\n            if (message.message != null && message.hasOwnProperty(\"message\"))\n                object.message = message.message;\n            if (message.location && message.location.length) {\n                object.location = [];\n                for (var j = 0; j < message.location.length; ++j)\n                    object.location[j] = $root.Trace.Location.toObject(message.location[j], options);\n            }\n            if (message.timeNs != null && message.hasOwnProperty(\"timeNs\"))\n                if (typeof message.timeNs === \"number\")\n                    object.timeNs = options.longs === String ? String(message.timeNs) : message.timeNs;\n                else\n                    object.timeNs = options.longs === String ? $util.Long.prototype.toString.call(message.timeNs) : options.longs === Number ? new $util.LongBits(message.timeNs.low >>> 0, message.timeNs.high >>> 0).toNumber(true) : message.timeNs;\n            if (message.json != null && message.hasOwnProperty(\"json\"))\n                object.json = message.json;\n            return object;\n        };\n\n        /**\n         * Converts this Error to JSON.\n         * @function toJSON\n         * @memberof Trace.Error\n         * @instance\n         * @returns {Object.<string,*>} JSON object\n         */\n        Error.prototype.toJSON = function toJSON() {\n            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n        };\n\n        return Error;\n    })();\n\n    Trace.HTTP = (function() {\n\n        /**\n         * Properties of a HTTP.\n         * @memberof Trace\n         * @interface IHTTP\n         * @property {Trace.HTTP.Method|null} [method] HTTP method\n         * @property {Object.<string,Trace.HTTP.IValues>|null} [requestHeaders] HTTP requestHeaders\n         * @property {Object.<string,Trace.HTTP.IValues>|null} [responseHeaders] HTTP responseHeaders\n         * @property {number|null} [statusCode] HTTP statusCode\n         */\n\n        /**\n         * Constructs a new HTTP.\n         * @memberof Trace\n         * @classdesc Represents a HTTP.\n         * @implements IHTTP\n         * @constructor\n         * @param {Trace.IHTTP=} [properties] Properties to set\n         */\n        function HTTP(properties) {\n            this.requestHeaders = {};\n            this.responseHeaders = {};\n            if (properties)\n                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                    if (properties[keys[i]] != null)\n                        this[keys[i]] = properties[keys[i]];\n        }\n\n        /**\n         * HTTP method.\n         * @member {Trace.HTTP.Method} method\n         * @memberof Trace.HTTP\n         * @instance\n         */\n        HTTP.prototype.method = 0;\n\n        /**\n         * HTTP requestHeaders.\n         * @member {Object.<string,Trace.HTTP.IValues>} requestHeaders\n         * @memberof Trace.HTTP\n         * @instance\n         */\n        HTTP.prototype.requestHeaders = $util.emptyObject;\n\n        /**\n         * HTTP responseHeaders.\n         * @member {Object.<string,Trace.HTTP.IValues>} responseHeaders\n         * @memberof Trace.HTTP\n         * @instance\n         */\n        HTTP.prototype.responseHeaders = $util.emptyObject;\n\n        /**\n         * HTTP statusCode.\n         * @member {number} statusCode\n         * @memberof Trace.HTTP\n         * @instance\n         */\n        HTTP.prototype.statusCode = 0;\n\n        /**\n         * Creates a new HTTP instance using the specified properties.\n         * @function create\n         * @memberof Trace.HTTP\n         * @static\n         * @param {Trace.IHTTP=} [properties] Properties to set\n         * @returns {Trace.HTTP} HTTP instance\n         */\n        HTTP.create = function create(properties) {\n            return new HTTP(properties);\n        };\n\n        /**\n         * Encodes the specified HTTP message. Does not implicitly {@link Trace.HTTP.verify|verify} messages.\n         * @function encode\n         * @memberof Trace.HTTP\n         * @static\n         * @param {Trace.IHTTP} message HTTP message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        HTTP.encode = function encode(message, writer) {\n            if (!writer)\n                writer = $Writer.create();\n            if (message.method != null && Object.hasOwnProperty.call(message, \"method\"))\n                writer.uint32(/* id 1, wireType 0 =*/8).int32(message.method);\n            if (message.requestHeaders != null && Object.hasOwnProperty.call(message, \"requestHeaders\"))\n                for (var keys = Object.keys(message.requestHeaders), i = 0; i < keys.length; ++i) {\n                    writer.uint32(/* id 4, wireType 2 =*/34).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]);\n                    $root.Trace.HTTP.Values.encode(message.requestHeaders[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim();\n                }\n            if (message.responseHeaders != null && Object.hasOwnProperty.call(message, \"responseHeaders\"))\n                for (var keys = Object.keys(message.responseHeaders), i = 0; i < keys.length; ++i) {\n                    writer.uint32(/* id 5, wireType 2 =*/42).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]);\n                    $root.Trace.HTTP.Values.encode(message.responseHeaders[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim();\n                }\n            if (message.statusCode != null && Object.hasOwnProperty.call(message, \"statusCode\"))\n                writer.uint32(/* id 6, wireType 0 =*/48).uint32(message.statusCode);\n            return writer;\n        };\n\n        /**\n         * Encodes the specified HTTP message, length delimited. Does not implicitly {@link Trace.HTTP.verify|verify} messages.\n         * @function encodeDelimited\n         * @memberof Trace.HTTP\n         * @static\n         * @param {Trace.IHTTP} message HTTP message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        HTTP.encodeDelimited = function encodeDelimited(message, writer) {\n            return this.encode(message, writer).ldelim();\n        };\n\n        /**\n         * Decodes a HTTP message from the specified reader or buffer.\n         * @function decode\n         * @memberof Trace.HTTP\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {Trace.HTTP} HTTP\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        HTTP.decode = function decode(reader, length) {\n            if (!(reader instanceof $Reader))\n                reader = $Reader.create(reader);\n            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.HTTP(), key;\n            while (reader.pos < end) {\n                var tag = reader.uint32();\n                switch (tag >>> 3) {\n                case 1:\n                    message.method = reader.int32();\n                    break;\n                case 4:\n                    reader.skip().pos++;\n                    if (message.requestHeaders === $util.emptyObject)\n                        message.requestHeaders = {};\n                    key = reader.string();\n                    reader.pos++;\n                    message.requestHeaders[key] = $root.Trace.HTTP.Values.decode(reader, reader.uint32());\n                    break;\n                case 5:\n                    reader.skip().pos++;\n                    if (message.responseHeaders === $util.emptyObject)\n                        message.responseHeaders = {};\n                    key = reader.string();\n                    reader.pos++;\n                    message.responseHeaders[key] = $root.Trace.HTTP.Values.decode(reader, reader.uint32());\n                    break;\n                case 6:\n                    message.statusCode = reader.uint32();\n                    break;\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n                }\n            }\n            return message;\n        };\n\n        /**\n         * Decodes a HTTP message from the specified reader or buffer, length delimited.\n         * @function decodeDelimited\n         * @memberof Trace.HTTP\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @returns {Trace.HTTP} HTTP\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        HTTP.decodeDelimited = function decodeDelimited(reader) {\n            if (!(reader instanceof $Reader))\n                reader = new $Reader(reader);\n            return this.decode(reader, reader.uint32());\n        };\n\n        /**\n         * Verifies a HTTP message.\n         * @function verify\n         * @memberof Trace.HTTP\n         * @static\n         * @param {Object.<string,*>} message Plain object to verify\n         * @returns {string|null} `null` if valid, otherwise the reason why it is not\n         */\n        HTTP.verify = function verify(message) {\n            if (typeof message !== \"object\" || message === null)\n                return \"object expected\";\n            if (message.method != null && message.hasOwnProperty(\"method\"))\n                switch (message.method) {\n                default:\n                    return \"method: enum value expected\";\n                case 0:\n                case 1:\n                case 2:\n                case 3:\n                case 4:\n                case 5:\n                case 6:\n                case 7:\n                case 8:\n                case 9:\n                    break;\n                }\n            if (message.requestHeaders != null && message.hasOwnProperty(\"requestHeaders\")) {\n                if (!$util.isObject(message.requestHeaders))\n                    return \"requestHeaders: object expected\";\n                var key = Object.keys(message.requestHeaders);\n                for (var i = 0; i < key.length; ++i) {\n                    var error = $root.Trace.HTTP.Values.verify(message.requestHeaders[key[i]]);\n                    if (error)\n                        return \"requestHeaders.\" + error;\n                }\n            }\n            if (message.responseHeaders != null && message.hasOwnProperty(\"responseHeaders\")) {\n                if (!$util.isObject(message.responseHeaders))\n                    return \"responseHeaders: object expected\";\n                var key = Object.keys(message.responseHeaders);\n                for (var i = 0; i < key.length; ++i) {\n                    var error = $root.Trace.HTTP.Values.verify(message.responseHeaders[key[i]]);\n                    if (error)\n                        return \"responseHeaders.\" + error;\n                }\n            }\n            if (message.statusCode != null && message.hasOwnProperty(\"statusCode\"))\n                if (!$util.isInteger(message.statusCode))\n                    return \"statusCode: integer expected\";\n            return null;\n        };\n\n        /**\n         * Creates a plain object from a HTTP message. Also converts values to other types if specified.\n         * @function toObject\n         * @memberof Trace.HTTP\n         * @static\n         * @param {Trace.HTTP} message HTTP\n         * @param {$protobuf.IConversionOptions} [options] Conversion options\n         * @returns {Object.<string,*>} Plain object\n         */\n        HTTP.toObject = function toObject(message, options) {\n            if (!options)\n                options = {};\n            var object = {};\n            if (options.objects || options.defaults) {\n                object.requestHeaders = {};\n                object.responseHeaders = {};\n            }\n            if (options.defaults) {\n                object.method = options.enums === String ? \"UNKNOWN\" : 0;\n                object.statusCode = 0;\n            }\n            if (message.method != null && message.hasOwnProperty(\"method\"))\n                object.method = options.enums === String ? $root.Trace.HTTP.Method[message.method] : message.method;\n            var keys2;\n            if (message.requestHeaders && (keys2 = Object.keys(message.requestHeaders)).length) {\n                object.requestHeaders = {};\n                for (var j = 0; j < keys2.length; ++j)\n                    object.requestHeaders[keys2[j]] = $root.Trace.HTTP.Values.toObject(message.requestHeaders[keys2[j]], options);\n            }\n            if (message.responseHeaders && (keys2 = Object.keys(message.responseHeaders)).length) {\n                object.responseHeaders = {};\n                for (var j = 0; j < keys2.length; ++j)\n                    object.responseHeaders[keys2[j]] = $root.Trace.HTTP.Values.toObject(message.responseHeaders[keys2[j]], options);\n            }\n            if (message.statusCode != null && message.hasOwnProperty(\"statusCode\"))\n                object.statusCode = message.statusCode;\n            return object;\n        };\n\n        /**\n         * Converts this HTTP to JSON.\n         * @function toJSON\n         * @memberof Trace.HTTP\n         * @instance\n         * @returns {Object.<string,*>} JSON object\n         */\n        HTTP.prototype.toJSON = function toJSON() {\n            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n        };\n\n        HTTP.Values = (function() {\n\n            /**\n             * Properties of a Values.\n             * @memberof Trace.HTTP\n             * @interface IValues\n             * @property {Array.<string>|null} [value] Values value\n             */\n\n            /**\n             * Constructs a new Values.\n             * @memberof Trace.HTTP\n             * @classdesc Represents a Values.\n             * @implements IValues\n             * @constructor\n             * @param {Trace.HTTP.IValues=} [properties] Properties to set\n             */\n            function Values(properties) {\n                this.value = [];\n                if (properties)\n                    for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                        if (properties[keys[i]] != null)\n                            this[keys[i]] = properties[keys[i]];\n            }\n\n            /**\n             * Values value.\n             * @member {Array.<string>} value\n             * @memberof Trace.HTTP.Values\n             * @instance\n             */\n            Values.prototype.value = $util.emptyArray;\n\n            /**\n             * Creates a new Values instance using the specified properties.\n             * @function create\n             * @memberof Trace.HTTP.Values\n             * @static\n             * @param {Trace.HTTP.IValues=} [properties] Properties to set\n             * @returns {Trace.HTTP.Values} Values instance\n             */\n            Values.create = function create(properties) {\n                return new Values(properties);\n            };\n\n            /**\n             * Encodes the specified Values message. Does not implicitly {@link Trace.HTTP.Values.verify|verify} messages.\n             * @function encode\n             * @memberof Trace.HTTP.Values\n             * @static\n             * @param {Trace.HTTP.IValues} message Values message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            Values.encode = function encode(message, writer) {\n                if (!writer)\n                    writer = $Writer.create();\n                if (message.value != null && message.value.length)\n                    for (var i = 0; i < message.value.length; ++i)\n                        writer.uint32(/* id 1, wireType 2 =*/10).string(message.value[i]);\n                return writer;\n            };\n\n            /**\n             * Encodes the specified Values message, length delimited. Does not implicitly {@link Trace.HTTP.Values.verify|verify} messages.\n             * @function encodeDelimited\n             * @memberof Trace.HTTP.Values\n             * @static\n             * @param {Trace.HTTP.IValues} message Values message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            Values.encodeDelimited = function encodeDelimited(message, writer) {\n                return this.encode(message, writer).ldelim();\n            };\n\n            /**\n             * Decodes a Values message from the specified reader or buffer.\n             * @function decode\n             * @memberof Trace.HTTP.Values\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @param {number} [length] Message length if known beforehand\n             * @returns {Trace.HTTP.Values} Values\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            Values.decode = function decode(reader, length) {\n                if (!(reader instanceof $Reader))\n                    reader = $Reader.create(reader);\n                var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.HTTP.Values();\n                while (reader.pos < end) {\n                    var tag = reader.uint32();\n                    switch (tag >>> 3) {\n                    case 1:\n                        if (!(message.value && message.value.length))\n                            message.value = [];\n                        message.value.push(reader.string());\n                        break;\n                    default:\n                        reader.skipType(tag & 7);\n                        break;\n                    }\n                }\n                return message;\n            };\n\n            /**\n             * Decodes a Values message from the specified reader or buffer, length delimited.\n             * @function decodeDelimited\n             * @memberof Trace.HTTP.Values\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @returns {Trace.HTTP.Values} Values\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            Values.decodeDelimited = function decodeDelimited(reader) {\n                if (!(reader instanceof $Reader))\n                    reader = new $Reader(reader);\n                return this.decode(reader, reader.uint32());\n            };\n\n            /**\n             * Verifies a Values message.\n             * @function verify\n             * @memberof Trace.HTTP.Values\n             * @static\n             * @param {Object.<string,*>} message Plain object to verify\n             * @returns {string|null} `null` if valid, otherwise the reason why it is not\n             */\n            Values.verify = function verify(message) {\n                if (typeof message !== \"object\" || message === null)\n                    return \"object expected\";\n                if (message.value != null && message.hasOwnProperty(\"value\")) {\n                    if (!Array.isArray(message.value))\n                        return \"value: array expected\";\n                    for (var i = 0; i < message.value.length; ++i)\n                        if (!$util.isString(message.value[i]))\n                            return \"value: string[] expected\";\n                }\n                return null;\n            };\n\n            /**\n             * Creates a plain object from a Values message. Also converts values to other types if specified.\n             * @function toObject\n             * @memberof Trace.HTTP.Values\n             * @static\n             * @param {Trace.HTTP.Values} message Values\n             * @param {$protobuf.IConversionOptions} [options] Conversion options\n             * @returns {Object.<string,*>} Plain object\n             */\n            Values.toObject = function toObject(message, options) {\n                if (!options)\n                    options = {};\n                var object = {};\n                if (options.arrays || options.defaults)\n                    object.value = [];\n                if (message.value && message.value.length) {\n                    object.value = [];\n                    for (var j = 0; j < message.value.length; ++j)\n                        object.value[j] = message.value[j];\n                }\n                return object;\n            };\n\n            /**\n             * Converts this Values to JSON.\n             * @function toJSON\n             * @memberof Trace.HTTP.Values\n             * @instance\n             * @returns {Object.<string,*>} JSON object\n             */\n            Values.prototype.toJSON = function toJSON() {\n                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n            };\n\n            return Values;\n        })();\n\n        /**\n         * Method enum.\n         * @name Trace.HTTP.Method\n         * @enum {string}\n         * @property {number} UNKNOWN=0 UNKNOWN value\n         * @property {number} OPTIONS=1 OPTIONS value\n         * @property {number} GET=2 GET value\n         * @property {number} HEAD=3 HEAD value\n         * @property {number} POST=4 POST value\n         * @property {number} PUT=5 PUT value\n         * @property {number} DELETE=6 DELETE value\n         * @property {number} TRACE=7 TRACE value\n         * @property {number} CONNECT=8 CONNECT value\n         * @property {number} PATCH=9 PATCH value\n         */\n        HTTP.Method = (function() {\n            var valuesById = {}, values = Object.create(valuesById);\n            values[valuesById[0] = \"UNKNOWN\"] = 0;\n            values[valuesById[1] = \"OPTIONS\"] = 1;\n            values[valuesById[2] = \"GET\"] = 2;\n            values[valuesById[3] = \"HEAD\"] = 3;\n            values[valuesById[4] = \"POST\"] = 4;\n            values[valuesById[5] = \"PUT\"] = 5;\n            values[valuesById[6] = \"DELETE\"] = 6;\n            values[valuesById[7] = \"TRACE\"] = 7;\n            values[valuesById[8] = \"CONNECT\"] = 8;\n            values[valuesById[9] = \"PATCH\"] = 9;\n            return values;\n        })();\n\n        return HTTP;\n    })();\n\n    Trace.Location = (function() {\n\n        /**\n         * Properties of a Location.\n         * @memberof Trace\n         * @interface ILocation\n         * @property {number|null} [line] Location line\n         * @property {number|null} [column] Location column\n         */\n\n        /**\n         * Constructs a new Location.\n         * @memberof Trace\n         * @classdesc Represents a Location.\n         * @implements ILocation\n         * @constructor\n         * @param {Trace.ILocation=} [properties] Properties to set\n         */\n        function Location(properties) {\n            if (properties)\n                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                    if (properties[keys[i]] != null)\n                        this[keys[i]] = properties[keys[i]];\n        }\n\n        /**\n         * Location line.\n         * @member {number} line\n         * @memberof Trace.Location\n         * @instance\n         */\n        Location.prototype.line = 0;\n\n        /**\n         * Location column.\n         * @member {number} column\n         * @memberof Trace.Location\n         * @instance\n         */\n        Location.prototype.column = 0;\n\n        /**\n         * Creates a new Location instance using the specified properties.\n         * @function create\n         * @memberof Trace.Location\n         * @static\n         * @param {Trace.ILocation=} [properties] Properties to set\n         * @returns {Trace.Location} Location instance\n         */\n        Location.create = function create(properties) {\n            return new Location(properties);\n        };\n\n        /**\n         * Encodes the specified Location message. Does not implicitly {@link Trace.Location.verify|verify} messages.\n         * @function encode\n         * @memberof Trace.Location\n         * @static\n         * @param {Trace.ILocation} message Location message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        Location.encode = function encode(message, writer) {\n            if (!writer)\n                writer = $Writer.create();\n            if (message.line != null && Object.hasOwnProperty.call(message, \"line\"))\n                writer.uint32(/* id 1, wireType 0 =*/8).uint32(message.line);\n            if (message.column != null && Object.hasOwnProperty.call(message, \"column\"))\n                writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.column);\n            return writer;\n        };\n\n        /**\n         * Encodes the specified Location message, length delimited. Does not implicitly {@link Trace.Location.verify|verify} messages.\n         * @function encodeDelimited\n         * @memberof Trace.Location\n         * @static\n         * @param {Trace.ILocation} message Location message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        Location.encodeDelimited = function encodeDelimited(message, writer) {\n            return this.encode(message, writer).ldelim();\n        };\n\n        /**\n         * Decodes a Location message from the specified reader or buffer.\n         * @function decode\n         * @memberof Trace.Location\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {Trace.Location} Location\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        Location.decode = function decode(reader, length) {\n            if (!(reader instanceof $Reader))\n                reader = $Reader.create(reader);\n            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.Location();\n            while (reader.pos < end) {\n                var tag = reader.uint32();\n                switch (tag >>> 3) {\n                case 1:\n                    message.line = reader.uint32();\n                    break;\n                case 2:\n                    message.column = reader.uint32();\n                    break;\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n                }\n            }\n            return message;\n        };\n\n        /**\n         * Decodes a Location message from the specified reader or buffer, length delimited.\n         * @function decodeDelimited\n         * @memberof Trace.Location\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @returns {Trace.Location} Location\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        Location.decodeDelimited = function decodeDelimited(reader) {\n            if (!(reader instanceof $Reader))\n                reader = new $Reader(reader);\n            return this.decode(reader, reader.uint32());\n        };\n\n        /**\n         * Verifies a Location message.\n         * @function verify\n         * @memberof Trace.Location\n         * @static\n         * @param {Object.<string,*>} message Plain object to verify\n         * @returns {string|null} `null` if valid, otherwise the reason why it is not\n         */\n        Location.verify = function verify(message) {\n            if (typeof message !== \"object\" || message === null)\n                return \"object expected\";\n            if (message.line != null && message.hasOwnProperty(\"line\"))\n                if (!$util.isInteger(message.line))\n                    return \"line: integer expected\";\n            if (message.column != null && message.hasOwnProperty(\"column\"))\n                if (!$util.isInteger(message.column))\n                    return \"column: integer expected\";\n            return null;\n        };\n\n        /**\n         * Creates a plain object from a Location message. Also converts values to other types if specified.\n         * @function toObject\n         * @memberof Trace.Location\n         * @static\n         * @param {Trace.Location} message Location\n         * @param {$protobuf.IConversionOptions} [options] Conversion options\n         * @returns {Object.<string,*>} Plain object\n         */\n        Location.toObject = function toObject(message, options) {\n            if (!options)\n                options = {};\n            var object = {};\n            if (options.defaults) {\n                object.line = 0;\n                object.column = 0;\n            }\n            if (message.line != null && message.hasOwnProperty(\"line\"))\n                object.line = message.line;\n            if (message.column != null && message.hasOwnProperty(\"column\"))\n                object.column = message.column;\n            return object;\n        };\n\n        /**\n         * Converts this Location to JSON.\n         * @function toJSON\n         * @memberof Trace.Location\n         * @instance\n         * @returns {Object.<string,*>} JSON object\n         */\n        Location.prototype.toJSON = function toJSON() {\n            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n        };\n\n        return Location;\n    })();\n\n    Trace.Node = (function() {\n\n        /**\n         * Properties of a Node.\n         * @memberof Trace\n         * @interface INode\n         * @property {string|null} [responseName] Node responseName\n         * @property {number|null} [index] Node index\n         * @property {string|null} [originalFieldName] Node originalFieldName\n         * @property {string|null} [type] Node type\n         * @property {string|null} [parentType] Node parentType\n         * @property {Trace.ICachePolicy|null} [cachePolicy] Node cachePolicy\n         * @property {number|null} [startTime] Node startTime\n         * @property {number|null} [endTime] Node endTime\n         * @property {Array.<Trace.IError>|null} [error] Node error\n         * @property {Array.<Trace.INode>|null} [child] Node child\n         */\n\n        /**\n         * Constructs a new Node.\n         * @memberof Trace\n         * @classdesc Represents a Node.\n         * @implements INode\n         * @constructor\n         * @param {Trace.INode=} [properties] Properties to set\n         */\n        function Node(properties) {\n            this.error = [];\n            this.child = [];\n            if (properties)\n                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                    if (properties[keys[i]] != null)\n                        this[keys[i]] = properties[keys[i]];\n        }\n\n        /**\n         * Node responseName.\n         * @member {string} responseName\n         * @memberof Trace.Node\n         * @instance\n         */\n        Node.prototype.responseName = \"\";\n\n        /**\n         * Node index.\n         * @member {number} index\n         * @memberof Trace.Node\n         * @instance\n         */\n        Node.prototype.index = 0;\n\n        /**\n         * Node originalFieldName.\n         * @member {string} originalFieldName\n         * @memberof Trace.Node\n         * @instance\n         */\n        Node.prototype.originalFieldName = \"\";\n\n        /**\n         * Node type.\n         * @member {string} type\n         * @memberof Trace.Node\n         * @instance\n         */\n        Node.prototype.type = \"\";\n\n        /**\n         * Node parentType.\n         * @member {string} parentType\n         * @memberof Trace.Node\n         * @instance\n         */\n        Node.prototype.parentType = \"\";\n\n        /**\n         * Node cachePolicy.\n         * @member {Trace.ICachePolicy|null|undefined} cachePolicy\n         * @memberof Trace.Node\n         * @instance\n         */\n        Node.prototype.cachePolicy = null;\n\n        /**\n         * Node startTime.\n         * @member {number} startTime\n         * @memberof Trace.Node\n         * @instance\n         */\n        Node.prototype.startTime = 0;\n\n        /**\n         * Node endTime.\n         * @member {number} endTime\n         * @memberof Trace.Node\n         * @instance\n         */\n        Node.prototype.endTime = 0;\n\n        /**\n         * Node error.\n         * @member {Array.<Trace.IError>} error\n         * @memberof Trace.Node\n         * @instance\n         */\n        Node.prototype.error = $util.emptyArray;\n\n        /**\n         * Node child.\n         * @member {Array.<Trace.INode>} child\n         * @memberof Trace.Node\n         * @instance\n         */\n        Node.prototype.child = $util.emptyArray;\n\n        // OneOf field names bound to virtual getters and setters\n        var $oneOfFields;\n\n        /**\n         * Node id.\n         * @member {\"responseName\"|\"index\"|undefined} id\n         * @memberof Trace.Node\n         * @instance\n         */\n        Object.defineProperty(Node.prototype, \"id\", {\n            get: $util.oneOfGetter($oneOfFields = [\"responseName\", \"index\"]),\n            set: $util.oneOfSetter($oneOfFields)\n        });\n\n        /**\n         * Creates a new Node instance using the specified properties.\n         * @function create\n         * @memberof Trace.Node\n         * @static\n         * @param {Trace.INode=} [properties] Properties to set\n         * @returns {Trace.Node} Node instance\n         */\n        Node.create = function create(properties) {\n            return new Node(properties);\n        };\n\n        /**\n         * Encodes the specified Node message. Does not implicitly {@link Trace.Node.verify|verify} messages.\n         * @function encode\n         * @memberof Trace.Node\n         * @static\n         * @param {Trace.INode} message Node message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        Node.encode = function encode(message, writer) {\n            if (!writer)\n                writer = $Writer.create();\n            if (message.responseName != null && Object.hasOwnProperty.call(message, \"responseName\"))\n                writer.uint32(/* id 1, wireType 2 =*/10).string(message.responseName);\n            if (message.index != null && Object.hasOwnProperty.call(message, \"index\"))\n                writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.index);\n            if (message.type != null && Object.hasOwnProperty.call(message, \"type\"))\n                writer.uint32(/* id 3, wireType 2 =*/26).string(message.type);\n            if (message.cachePolicy != null && Object.hasOwnProperty.call(message, \"cachePolicy\"))\n                $root.Trace.CachePolicy.encode(message.cachePolicy, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();\n            if (message.startTime != null && Object.hasOwnProperty.call(message, \"startTime\"))\n                writer.uint32(/* id 8, wireType 0 =*/64).uint64(message.startTime);\n            if (message.endTime != null && Object.hasOwnProperty.call(message, \"endTime\"))\n                writer.uint32(/* id 9, wireType 0 =*/72).uint64(message.endTime);\n            if (message.error != null && message.error.length)\n                for (var i = 0; i < message.error.length; ++i)\n                    $root.Trace.Error.encode(message.error[i], writer.uint32(/* id 11, wireType 2 =*/90).fork()).ldelim();\n            if (message.child != null && message.child.length)\n                for (var i = 0; i < message.child.length; ++i)\n                    $root.Trace.Node.encode(message.child[i], writer.uint32(/* id 12, wireType 2 =*/98).fork()).ldelim();\n            if (message.parentType != null && Object.hasOwnProperty.call(message, \"parentType\"))\n                writer.uint32(/* id 13, wireType 2 =*/106).string(message.parentType);\n            if (message.originalFieldName != null && Object.hasOwnProperty.call(message, \"originalFieldName\"))\n                writer.uint32(/* id 14, wireType 2 =*/114).string(message.originalFieldName);\n            return writer;\n        };\n\n        /**\n         * Encodes the specified Node message, length delimited. Does not implicitly {@link Trace.Node.verify|verify} messages.\n         * @function encodeDelimited\n         * @memberof Trace.Node\n         * @static\n         * @param {Trace.INode} message Node message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        Node.encodeDelimited = function encodeDelimited(message, writer) {\n            return this.encode(message, writer).ldelim();\n        };\n\n        /**\n         * Decodes a Node message from the specified reader or buffer.\n         * @function decode\n         * @memberof Trace.Node\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {Trace.Node} Node\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        Node.decode = function decode(reader, length) {\n            if (!(reader instanceof $Reader))\n                reader = $Reader.create(reader);\n            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.Node();\n            while (reader.pos < end) {\n                var tag = reader.uint32();\n                switch (tag >>> 3) {\n                case 1:\n                    message.responseName = reader.string();\n                    break;\n                case 2:\n                    message.index = reader.uint32();\n                    break;\n                case 14:\n                    message.originalFieldName = reader.string();\n                    break;\n                case 3:\n                    message.type = reader.string();\n                    break;\n                case 13:\n                    message.parentType = reader.string();\n                    break;\n                case 5:\n                    message.cachePolicy = $root.Trace.CachePolicy.decode(reader, reader.uint32());\n                    break;\n                case 8:\n                    message.startTime = reader.uint64();\n                    break;\n                case 9:\n                    message.endTime = reader.uint64();\n                    break;\n                case 11:\n                    if (!(message.error && message.error.length))\n                        message.error = [];\n                    message.error.push($root.Trace.Error.decode(reader, reader.uint32()));\n                    break;\n                case 12:\n                    if (!(message.child && message.child.length))\n                        message.child = [];\n                    message.child.push($root.Trace.Node.decode(reader, reader.uint32()));\n                    break;\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n                }\n            }\n            return message;\n        };\n\n        /**\n         * Decodes a Node message from the specified reader or buffer, length delimited.\n         * @function decodeDelimited\n         * @memberof Trace.Node\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @returns {Trace.Node} Node\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        Node.decodeDelimited = function decodeDelimited(reader) {\n            if (!(reader instanceof $Reader))\n                reader = new $Reader(reader);\n            return this.decode(reader, reader.uint32());\n        };\n\n        /**\n         * Verifies a Node message.\n         * @function verify\n         * @memberof Trace.Node\n         * @static\n         * @param {Object.<string,*>} message Plain object to verify\n         * @returns {string|null} `null` if valid, otherwise the reason why it is not\n         */\n        Node.verify = function verify(message) {\n            if (typeof message !== \"object\" || message === null)\n                return \"object expected\";\n            var properties = {};\n            if (message.responseName != null && message.hasOwnProperty(\"responseName\")) {\n                properties.id = 1;\n                if (!$util.isString(message.responseName))\n                    return \"responseName: string expected\";\n            }\n            if (message.index != null && message.hasOwnProperty(\"index\")) {\n                if (properties.id === 1)\n                    return \"id: multiple values\";\n                properties.id = 1;\n                if (!$util.isInteger(message.index))\n                    return \"index: integer expected\";\n            }\n            if (message.originalFieldName != null && message.hasOwnProperty(\"originalFieldName\"))\n                if (!$util.isString(message.originalFieldName))\n                    return \"originalFieldName: string expected\";\n            if (message.type != null && message.hasOwnProperty(\"type\"))\n                if (!$util.isString(message.type))\n                    return \"type: string expected\";\n            if (message.parentType != null && message.hasOwnProperty(\"parentType\"))\n                if (!$util.isString(message.parentType))\n                    return \"parentType: string expected\";\n            if (message.cachePolicy != null && message.hasOwnProperty(\"cachePolicy\")) {\n                var error = $root.Trace.CachePolicy.verify(message.cachePolicy);\n                if (error)\n                    return \"cachePolicy.\" + error;\n            }\n            if (message.startTime != null && message.hasOwnProperty(\"startTime\"))\n                if (!$util.isInteger(message.startTime) && !(message.startTime && $util.isInteger(message.startTime.low) && $util.isInteger(message.startTime.high)))\n                    return \"startTime: integer|Long expected\";\n            if (message.endTime != null && message.hasOwnProperty(\"endTime\"))\n                if (!$util.isInteger(message.endTime) && !(message.endTime && $util.isInteger(message.endTime.low) && $util.isInteger(message.endTime.high)))\n                    return \"endTime: integer|Long expected\";\n            if (message.error != null && message.hasOwnProperty(\"error\")) {\n                if (!Array.isArray(message.error))\n                    return \"error: array expected\";\n                for (var i = 0; i < message.error.length; ++i) {\n                    var error = $root.Trace.Error.verify(message.error[i]);\n                    if (error)\n                        return \"error.\" + error;\n                }\n            }\n            if (message.child != null && message.hasOwnProperty(\"child\")) {\n                if (!Array.isArray(message.child))\n                    return \"child: array expected\";\n                for (var i = 0; i < message.child.length; ++i) {\n                    var error = $root.Trace.Node.verify(message.child[i]);\n                    if (error)\n                        return \"child.\" + error;\n                }\n            }\n            return null;\n        };\n\n        /**\n         * Creates a plain object from a Node message. Also converts values to other types if specified.\n         * @function toObject\n         * @memberof Trace.Node\n         * @static\n         * @param {Trace.Node} message Node\n         * @param {$protobuf.IConversionOptions} [options] Conversion options\n         * @returns {Object.<string,*>} Plain object\n         */\n        Node.toObject = function toObject(message, options) {\n            if (!options)\n                options = {};\n            var object = {};\n            if (options.arrays || options.defaults) {\n                object.error = [];\n                object.child = [];\n            }\n            if (options.defaults) {\n                object.type = \"\";\n                object.cachePolicy = null;\n                object.startTime = 0;\n                object.endTime = 0;\n                object.parentType = \"\";\n                object.originalFieldName = \"\";\n            }\n            if (message.responseName != null && message.hasOwnProperty(\"responseName\")) {\n                object.responseName = message.responseName;\n                if (options.oneofs)\n                    object.id = \"responseName\";\n            }\n            if (message.index != null && message.hasOwnProperty(\"index\")) {\n                object.index = message.index;\n                if (options.oneofs)\n                    object.id = \"index\";\n            }\n            if (message.type != null && message.hasOwnProperty(\"type\"))\n                object.type = message.type;\n            if (message.cachePolicy != null && message.hasOwnProperty(\"cachePolicy\"))\n                object.cachePolicy = $root.Trace.CachePolicy.toObject(message.cachePolicy, options);\n            if (message.startTime != null && message.hasOwnProperty(\"startTime\"))\n                if (typeof message.startTime === \"number\")\n                    object.startTime = options.longs === String ? String(message.startTime) : message.startTime;\n                else\n                    object.startTime = options.longs === String ? $util.Long.prototype.toString.call(message.startTime) : options.longs === Number ? new $util.LongBits(message.startTime.low >>> 0, message.startTime.high >>> 0).toNumber(true) : message.startTime;\n            if (message.endTime != null && message.hasOwnProperty(\"endTime\"))\n                if (typeof message.endTime === \"number\")\n                    object.endTime = options.longs === String ? String(message.endTime) : message.endTime;\n                else\n                    object.endTime = options.longs === String ? $util.Long.prototype.toString.call(message.endTime) : options.longs === Number ? new $util.LongBits(message.endTime.low >>> 0, message.endTime.high >>> 0).toNumber(true) : message.endTime;\n            if (message.error && message.error.length) {\n                object.error = [];\n                for (var j = 0; j < message.error.length; ++j)\n                    object.error[j] = $root.Trace.Error.toObject(message.error[j], options);\n            }\n            if (message.child && message.child.length) {\n                object.child = [];\n                for (var j = 0; j < message.child.length; ++j)\n                    object.child[j] = $root.Trace.Node.toObject(message.child[j], options);\n            }\n            if (message.parentType != null && message.hasOwnProperty(\"parentType\"))\n                object.parentType = message.parentType;\n            if (message.originalFieldName != null && message.hasOwnProperty(\"originalFieldName\"))\n                object.originalFieldName = message.originalFieldName;\n            return object;\n        };\n\n        /**\n         * Converts this Node to JSON.\n         * @function toJSON\n         * @memberof Trace.Node\n         * @instance\n         * @returns {Object.<string,*>} JSON object\n         */\n        Node.prototype.toJSON = function toJSON() {\n            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n        };\n\n        return Node;\n    })();\n\n    Trace.QueryPlanNode = (function() {\n\n        /**\n         * Properties of a QueryPlanNode.\n         * @memberof Trace\n         * @interface IQueryPlanNode\n         * @property {Trace.QueryPlanNode.ISequenceNode|null} [sequence] QueryPlanNode sequence\n         * @property {Trace.QueryPlanNode.IParallelNode|null} [parallel] QueryPlanNode parallel\n         * @property {Trace.QueryPlanNode.IFetchNode|null} [fetch] QueryPlanNode fetch\n         * @property {Trace.QueryPlanNode.IFlattenNode|null} [flatten] QueryPlanNode flatten\n         * @property {Trace.QueryPlanNode.IDeferNode|null} [defer] QueryPlanNode defer\n         * @property {Trace.QueryPlanNode.IConditionNode|null} [condition] QueryPlanNode condition\n         */\n\n        /**\n         * Constructs a new QueryPlanNode.\n         * @memberof Trace\n         * @classdesc Represents a QueryPlanNode.\n         * @implements IQueryPlanNode\n         * @constructor\n         * @param {Trace.IQueryPlanNode=} [properties] Properties to set\n         */\n        function QueryPlanNode(properties) {\n            if (properties)\n                for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                    if (properties[keys[i]] != null)\n                        this[keys[i]] = properties[keys[i]];\n        }\n\n        /**\n         * QueryPlanNode sequence.\n         * @member {Trace.QueryPlanNode.ISequenceNode|null|undefined} sequence\n         * @memberof Trace.QueryPlanNode\n         * @instance\n         */\n        QueryPlanNode.prototype.sequence = null;\n\n        /**\n         * QueryPlanNode parallel.\n         * @member {Trace.QueryPlanNode.IParallelNode|null|undefined} parallel\n         * @memberof Trace.QueryPlanNode\n         * @instance\n         */\n        QueryPlanNode.prototype.parallel = null;\n\n        /**\n         * QueryPlanNode fetch.\n         * @member {Trace.QueryPlanNode.IFetchNode|null|undefined} fetch\n         * @memberof Trace.QueryPlanNode\n         * @instance\n         */\n        QueryPlanNode.prototype.fetch = null;\n\n        /**\n         * QueryPlanNode flatten.\n         * @member {Trace.QueryPlanNode.IFlattenNode|null|undefined} flatten\n         * @memberof Trace.QueryPlanNode\n         * @instance\n         */\n        QueryPlanNode.prototype.flatten = null;\n\n        /**\n         * QueryPlanNode defer.\n         * @member {Trace.QueryPlanNode.IDeferNode|null|undefined} defer\n         * @memberof Trace.QueryPlanNode\n         * @instance\n         */\n        QueryPlanNode.prototype.defer = null;\n\n        /**\n         * QueryPlanNode condition.\n         * @member {Trace.QueryPlanNode.IConditionNode|null|undefined} condition\n         * @memberof Trace.QueryPlanNode\n         * @instance\n         */\n        QueryPlanNode.prototype.condition = null;\n\n        // OneOf field names bound to virtual getters and setters\n        var $oneOfFields;\n\n        /**\n         * QueryPlanNode node.\n         * @member {\"sequence\"|\"parallel\"|\"fetch\"|\"flatten\"|\"defer\"|\"condition\"|undefined} node\n         * @memberof Trace.QueryPlanNode\n         * @instance\n         */\n        Object.defineProperty(QueryPlanNode.prototype, \"node\", {\n            get: $util.oneOfGetter($oneOfFields = [\"sequence\", \"parallel\", \"fetch\", \"flatten\", \"defer\", \"condition\"]),\n            set: $util.oneOfSetter($oneOfFields)\n        });\n\n        /**\n         * Creates a new QueryPlanNode instance using the specified properties.\n         * @function create\n         * @memberof Trace.QueryPlanNode\n         * @static\n         * @param {Trace.IQueryPlanNode=} [properties] Properties to set\n         * @returns {Trace.QueryPlanNode} QueryPlanNode instance\n         */\n        QueryPlanNode.create = function create(properties) {\n            return new QueryPlanNode(properties);\n        };\n\n        /**\n         * Encodes the specified QueryPlanNode message. Does not implicitly {@link Trace.QueryPlanNode.verify|verify} messages.\n         * @function encode\n         * @memberof Trace.QueryPlanNode\n         * @static\n         * @param {Trace.IQueryPlanNode} message QueryPlanNode message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        QueryPlanNode.encode = function encode(message, writer) {\n            if (!writer)\n                writer = $Writer.create();\n            if (message.sequence != null && Object.hasOwnProperty.call(message, \"sequence\"))\n                $root.Trace.QueryPlanNode.SequenceNode.encode(message.sequence, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n            if (message.parallel != null && Object.hasOwnProperty.call(message, \"parallel\"))\n                $root.Trace.QueryPlanNode.ParallelNode.encode(message.parallel, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n            if (message.fetch != null && Object.hasOwnProperty.call(message, \"fetch\"))\n                $root.Trace.QueryPlanNode.FetchNode.encode(message.fetch, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n            if (message.flatten != null && Object.hasOwnProperty.call(message, \"flatten\"))\n                $root.Trace.QueryPlanNode.FlattenNode.encode(message.flatten, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();\n            if (message.defer != null && Object.hasOwnProperty.call(message, \"defer\"))\n                $root.Trace.QueryPlanNode.DeferNode.encode(message.defer, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();\n            if (message.condition != null && Object.hasOwnProperty.call(message, \"condition\"))\n                $root.Trace.QueryPlanNode.ConditionNode.encode(message.condition, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n            return writer;\n        };\n\n        /**\n         * Encodes the specified QueryPlanNode message, length delimited. Does not implicitly {@link Trace.QueryPlanNode.verify|verify} messages.\n         * @function encodeDelimited\n         * @memberof Trace.QueryPlanNode\n         * @static\n         * @param {Trace.IQueryPlanNode} message QueryPlanNode message or plain object to encode\n         * @param {$protobuf.Writer} [writer] Writer to encode to\n         * @returns {$protobuf.Writer} Writer\n         */\n        QueryPlanNode.encodeDelimited = function encodeDelimited(message, writer) {\n            return this.encode(message, writer).ldelim();\n        };\n\n        /**\n         * Decodes a QueryPlanNode message from the specified reader or buffer.\n         * @function decode\n         * @memberof Trace.QueryPlanNode\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @param {number} [length] Message length if known beforehand\n         * @returns {Trace.QueryPlanNode} QueryPlanNode\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        QueryPlanNode.decode = function decode(reader, length) {\n            if (!(reader instanceof $Reader))\n                reader = $Reader.create(reader);\n            var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.QueryPlanNode();\n            while (reader.pos < end) {\n                var tag = reader.uint32();\n                switch (tag >>> 3) {\n                case 1:\n                    message.sequence = $root.Trace.QueryPlanNode.SequenceNode.decode(reader, reader.uint32());\n                    break;\n                case 2:\n                    message.parallel = $root.Trace.QueryPlanNode.ParallelNode.decode(reader, reader.uint32());\n                    break;\n                case 3:\n                    message.fetch = $root.Trace.QueryPlanNode.FetchNode.decode(reader, reader.uint32());\n                    break;\n                case 4:\n                    message.flatten = $root.Trace.QueryPlanNode.FlattenNode.decode(reader, reader.uint32());\n                    break;\n                case 5:\n                    message.defer = $root.Trace.QueryPlanNode.DeferNode.decode(reader, reader.uint32());\n                    break;\n                case 6:\n                    message.condition = $root.Trace.QueryPlanNode.ConditionNode.decode(reader, reader.uint32());\n                    break;\n                default:\n                    reader.skipType(tag & 7);\n                    break;\n                }\n            }\n            return message;\n        };\n\n        /**\n         * Decodes a QueryPlanNode message from the specified reader or buffer, length delimited.\n         * @function decodeDelimited\n         * @memberof Trace.QueryPlanNode\n         * @static\n         * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n         * @returns {Trace.QueryPlanNode} QueryPlanNode\n         * @throws {Error} If the payload is not a reader or valid buffer\n         * @throws {$protobuf.util.ProtocolError} If required fields are missing\n         */\n        QueryPlanNode.decodeDelimited = function decodeDelimited(reader) {\n            if (!(reader instanceof $Reader))\n                reader = new $Reader(reader);\n            return this.decode(reader, reader.uint32());\n        };\n\n        /**\n         * Verifies a QueryPlanNode message.\n         * @function verify\n         * @memberof Trace.QueryPlanNode\n         * @static\n         * @param {Object.<string,*>} message Plain object to verify\n         * @returns {string|null} `null` if valid, otherwise the reason why it is not\n         */\n        QueryPlanNode.verify = function verify(message) {\n            if (typeof message !== \"object\" || message === null)\n                return \"object expected\";\n            var properties = {};\n            if (message.sequence != null && message.hasOwnProperty(\"sequence\")) {\n                properties.node = 1;\n                {\n                    var error = $root.Trace.QueryPlanNode.SequenceNode.verify(message.sequence);\n                    if (error)\n                        return \"sequence.\" + error;\n                }\n            }\n            if (message.parallel != null && message.hasOwnProperty(\"parallel\")) {\n                if (properties.node === 1)\n                    return \"node: multiple values\";\n                properties.node = 1;\n                {\n                    var error = $root.Trace.QueryPlanNode.ParallelNode.verify(message.parallel);\n                    if (error)\n                        return \"parallel.\" + error;\n                }\n            }\n            if (message.fetch != null && message.hasOwnProperty(\"fetch\")) {\n                if (properties.node === 1)\n                    return \"node: multiple values\";\n                properties.node = 1;\n                {\n                    var error = $root.Trace.QueryPlanNode.FetchNode.verify(message.fetch);\n                    if (error)\n                        return \"fetch.\" + error;\n                }\n            }\n            if (message.flatten != null && message.hasOwnProperty(\"flatten\")) {\n                if (properties.node === 1)\n                    return \"node: multiple values\";\n                properties.node = 1;\n                {\n                    var error = $root.Trace.QueryPlanNode.FlattenNode.verify(message.flatten);\n                    if (error)\n                        return \"flatten.\" + error;\n                }\n            }\n            if (message.defer != null && message.hasOwnProperty(\"defer\")) {\n                if (properties.node === 1)\n                    return \"node: multiple values\";\n                properties.node = 1;\n                {\n                    var error = $root.Trace.QueryPlanNode.DeferNode.verify(message.defer);\n                    if (error)\n                        return \"defer.\" + error;\n                }\n            }\n            if (message.condition != null && message.hasOwnProperty(\"condition\")) {\n                if (properties.node === 1)\n                    return \"node: multiple values\";\n                properties.node = 1;\n                {\n                    var error = $root.Trace.QueryPlanNode.ConditionNode.verify(message.condition);\n                    if (error)\n                        return \"condition.\" + error;\n                }\n            }\n            return null;\n        };\n\n        /**\n         * Creates a plain object from a QueryPlanNode message. Also converts values to other types if specified.\n         * @function toObject\n         * @memberof Trace.QueryPlanNode\n         * @static\n         * @param {Trace.QueryPlanNode} message QueryPlanNode\n         * @param {$protobuf.IConversionOptions} [options] Conversion options\n         * @returns {Object.<string,*>} Plain object\n         */\n        QueryPlanNode.toObject = function toObject(message, options) {\n            if (!options)\n                options = {};\n            var object = {};\n            if (message.sequence != null && message.hasOwnProperty(\"sequence\")) {\n                object.sequence = $root.Trace.QueryPlanNode.SequenceNode.toObject(message.sequence, options);\n                if (options.oneofs)\n                    object.node = \"sequence\";\n            }\n            if (message.parallel != null && message.hasOwnProperty(\"parallel\")) {\n                object.parallel = $root.Trace.QueryPlanNode.ParallelNode.toObject(message.parallel, options);\n                if (options.oneofs)\n                    object.node = \"parallel\";\n            }\n            if (message.fetch != null && message.hasOwnProperty(\"fetch\")) {\n                object.fetch = $root.Trace.QueryPlanNode.FetchNode.toObject(message.fetch, options);\n                if (options.oneofs)\n                    object.node = \"fetch\";\n            }\n            if (message.flatten != null && message.hasOwnProperty(\"flatten\")) {\n                object.flatten = $root.Trace.QueryPlanNode.FlattenNode.toObject(message.flatten, options);\n                if (options.oneofs)\n                    object.node = \"flatten\";\n            }\n            if (message.defer != null && message.hasOwnProperty(\"defer\")) {\n                object.defer = $root.Trace.QueryPlanNode.DeferNode.toObject(message.defer, options);\n                if (options.oneofs)\n                    object.node = \"defer\";\n            }\n            if (message.condition != null && message.hasOwnProperty(\"condition\")) {\n                object.condition = $root.Trace.QueryPlanNode.ConditionNode.toObject(message.condition, options);\n                if (options.oneofs)\n                    object.node = \"condition\";\n            }\n            return object;\n        };\n\n        /**\n         * Converts this QueryPlanNode to JSON.\n         * @function toJSON\n         * @memberof Trace.QueryPlanNode\n         * @instance\n         * @returns {Object.<string,*>} JSON object\n         */\n        QueryPlanNode.prototype.toJSON = function toJSON() {\n            return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n        };\n\n        QueryPlanNode.SequenceNode = (function() {\n\n            /**\n             * Properties of a SequenceNode.\n             * @memberof Trace.QueryPlanNode\n             * @interface ISequenceNode\n             * @property {Array.<Trace.IQueryPlanNode>|null} [nodes] SequenceNode nodes\n             */\n\n            /**\n             * Constructs a new SequenceNode.\n             * @memberof Trace.QueryPlanNode\n             * @classdesc Represents a SequenceNode.\n             * @implements ISequenceNode\n             * @constructor\n             * @param {Trace.QueryPlanNode.ISequenceNode=} [properties] Properties to set\n             */\n            function SequenceNode(properties) {\n                this.nodes = [];\n                if (properties)\n                    for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                        if (properties[keys[i]] != null)\n                            this[keys[i]] = properties[keys[i]];\n            }\n\n            /**\n             * SequenceNode nodes.\n             * @member {Array.<Trace.IQueryPlanNode>} nodes\n             * @memberof Trace.QueryPlanNode.SequenceNode\n             * @instance\n             */\n            SequenceNode.prototype.nodes = $util.emptyArray;\n\n            /**\n             * Creates a new SequenceNode instance using the specified properties.\n             * @function create\n             * @memberof Trace.QueryPlanNode.SequenceNode\n             * @static\n             * @param {Trace.QueryPlanNode.ISequenceNode=} [properties] Properties to set\n             * @returns {Trace.QueryPlanNode.SequenceNode} SequenceNode instance\n             */\n            SequenceNode.create = function create(properties) {\n                return new SequenceNode(properties);\n            };\n\n            /**\n             * Encodes the specified SequenceNode message. Does not implicitly {@link Trace.QueryPlanNode.SequenceNode.verify|verify} messages.\n             * @function encode\n             * @memberof Trace.QueryPlanNode.SequenceNode\n             * @static\n             * @param {Trace.QueryPlanNode.ISequenceNode} message SequenceNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            SequenceNode.encode = function encode(message, writer) {\n                if (!writer)\n                    writer = $Writer.create();\n                if (message.nodes != null && message.nodes.length)\n                    for (var i = 0; i < message.nodes.length; ++i)\n                        $root.Trace.QueryPlanNode.encode(message.nodes[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n                return writer;\n            };\n\n            /**\n             * Encodes the specified SequenceNode message, length delimited. Does not implicitly {@link Trace.QueryPlanNode.SequenceNode.verify|verify} messages.\n             * @function encodeDelimited\n             * @memberof Trace.QueryPlanNode.SequenceNode\n             * @static\n             * @param {Trace.QueryPlanNode.ISequenceNode} message SequenceNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            SequenceNode.encodeDelimited = function encodeDelimited(message, writer) {\n                return this.encode(message, writer).ldelim();\n            };\n\n            /**\n             * Decodes a SequenceNode message from the specified reader or buffer.\n             * @function decode\n             * @memberof Trace.QueryPlanNode.SequenceNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @param {number} [length] Message length if known beforehand\n             * @returns {Trace.QueryPlanNode.SequenceNode} SequenceNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            SequenceNode.decode = function decode(reader, length) {\n                if (!(reader instanceof $Reader))\n                    reader = $Reader.create(reader);\n                var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.QueryPlanNode.SequenceNode();\n                while (reader.pos < end) {\n                    var tag = reader.uint32();\n                    switch (tag >>> 3) {\n                    case 1:\n                        if (!(message.nodes && message.nodes.length))\n                            message.nodes = [];\n                        message.nodes.push($root.Trace.QueryPlanNode.decode(reader, reader.uint32()));\n                        break;\n                    default:\n                        reader.skipType(tag & 7);\n                        break;\n                    }\n                }\n                return message;\n            };\n\n            /**\n             * Decodes a SequenceNode message from the specified reader or buffer, length delimited.\n             * @function decodeDelimited\n             * @memberof Trace.QueryPlanNode.SequenceNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @returns {Trace.QueryPlanNode.SequenceNode} SequenceNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            SequenceNode.decodeDelimited = function decodeDelimited(reader) {\n                if (!(reader instanceof $Reader))\n                    reader = new $Reader(reader);\n                return this.decode(reader, reader.uint32());\n            };\n\n            /**\n             * Verifies a SequenceNode message.\n             * @function verify\n             * @memberof Trace.QueryPlanNode.SequenceNode\n             * @static\n             * @param {Object.<string,*>} message Plain object to verify\n             * @returns {string|null} `null` if valid, otherwise the reason why it is not\n             */\n            SequenceNode.verify = function verify(message) {\n                if (typeof message !== \"object\" || message === null)\n                    return \"object expected\";\n                if (message.nodes != null && message.hasOwnProperty(\"nodes\")) {\n                    if (!Array.isArray(message.nodes))\n                        return \"nodes: array expected\";\n                    for (var i = 0; i < message.nodes.length; ++i) {\n                        var error = $root.Trace.QueryPlanNode.verify(message.nodes[i]);\n                        if (error)\n                            return \"nodes.\" + error;\n                    }\n                }\n                return null;\n            };\n\n            /**\n             * Creates a plain object from a SequenceNode message. Also converts values to other types if specified.\n             * @function toObject\n             * @memberof Trace.QueryPlanNode.SequenceNode\n             * @static\n             * @param {Trace.QueryPlanNode.SequenceNode} message SequenceNode\n             * @param {$protobuf.IConversionOptions} [options] Conversion options\n             * @returns {Object.<string,*>} Plain object\n             */\n            SequenceNode.toObject = function toObject(message, options) {\n                if (!options)\n                    options = {};\n                var object = {};\n                if (options.arrays || options.defaults)\n                    object.nodes = [];\n                if (message.nodes && message.nodes.length) {\n                    object.nodes = [];\n                    for (var j = 0; j < message.nodes.length; ++j)\n                        object.nodes[j] = $root.Trace.QueryPlanNode.toObject(message.nodes[j], options);\n                }\n                return object;\n            };\n\n            /**\n             * Converts this SequenceNode to JSON.\n             * @function toJSON\n             * @memberof Trace.QueryPlanNode.SequenceNode\n             * @instance\n             * @returns {Object.<string,*>} JSON object\n             */\n            SequenceNode.prototype.toJSON = function toJSON() {\n                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n            };\n\n            return SequenceNode;\n        })();\n\n        QueryPlanNode.ParallelNode = (function() {\n\n            /**\n             * Properties of a ParallelNode.\n             * @memberof Trace.QueryPlanNode\n             * @interface IParallelNode\n             * @property {Array.<Trace.IQueryPlanNode>|null} [nodes] ParallelNode nodes\n             */\n\n            /**\n             * Constructs a new ParallelNode.\n             * @memberof Trace.QueryPlanNode\n             * @classdesc Represents a ParallelNode.\n             * @implements IParallelNode\n             * @constructor\n             * @param {Trace.QueryPlanNode.IParallelNode=} [properties] Properties to set\n             */\n            function ParallelNode(properties) {\n                this.nodes = [];\n                if (properties)\n                    for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                        if (properties[keys[i]] != null)\n                            this[keys[i]] = properties[keys[i]];\n            }\n\n            /**\n             * ParallelNode nodes.\n             * @member {Array.<Trace.IQueryPlanNode>} nodes\n             * @memberof Trace.QueryPlanNode.ParallelNode\n             * @instance\n             */\n            ParallelNode.prototype.nodes = $util.emptyArray;\n\n            /**\n             * Creates a new ParallelNode instance using the specified properties.\n             * @function create\n             * @memberof Trace.QueryPlanNode.ParallelNode\n             * @static\n             * @param {Trace.QueryPlanNode.IParallelNode=} [properties] Properties to set\n             * @returns {Trace.QueryPlanNode.ParallelNode} ParallelNode instance\n             */\n            ParallelNode.create = function create(properties) {\n                return new ParallelNode(properties);\n            };\n\n            /**\n             * Encodes the specified ParallelNode message. Does not implicitly {@link Trace.QueryPlanNode.ParallelNode.verify|verify} messages.\n             * @function encode\n             * @memberof Trace.QueryPlanNode.ParallelNode\n             * @static\n             * @param {Trace.QueryPlanNode.IParallelNode} message ParallelNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            ParallelNode.encode = function encode(message, writer) {\n                if (!writer)\n                    writer = $Writer.create();\n                if (message.nodes != null && message.nodes.length)\n                    for (var i = 0; i < message.nodes.length; ++i)\n                        $root.Trace.QueryPlanNode.encode(message.nodes[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n                return writer;\n            };\n\n            /**\n             * Encodes the specified ParallelNode message, length delimited. Does not implicitly {@link Trace.QueryPlanNode.ParallelNode.verify|verify} messages.\n             * @function encodeDelimited\n             * @memberof Trace.QueryPlanNode.ParallelNode\n             * @static\n             * @param {Trace.QueryPlanNode.IParallelNode} message ParallelNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            ParallelNode.encodeDelimited = function encodeDelimited(message, writer) {\n                return this.encode(message, writer).ldelim();\n            };\n\n            /**\n             * Decodes a ParallelNode message from the specified reader or buffer.\n             * @function decode\n             * @memberof Trace.QueryPlanNode.ParallelNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @param {number} [length] Message length if known beforehand\n             * @returns {Trace.QueryPlanNode.ParallelNode} ParallelNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            ParallelNode.decode = function decode(reader, length) {\n                if (!(reader instanceof $Reader))\n                    reader = $Reader.create(reader);\n                var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.QueryPlanNode.ParallelNode();\n                while (reader.pos < end) {\n                    var tag = reader.uint32();\n                    switch (tag >>> 3) {\n                    case 1:\n                        if (!(message.nodes && message.nodes.length))\n                            message.nodes = [];\n                        message.nodes.push($root.Trace.QueryPlanNode.decode(reader, reader.uint32()));\n                        break;\n                    default:\n                        reader.skipType(tag & 7);\n                        break;\n                    }\n                }\n                return message;\n            };\n\n            /**\n             * Decodes a ParallelNode message from the specified reader or buffer, length delimited.\n             * @function decodeDelimited\n             * @memberof Trace.QueryPlanNode.ParallelNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @returns {Trace.QueryPlanNode.ParallelNode} ParallelNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            ParallelNode.decodeDelimited = function decodeDelimited(reader) {\n                if (!(reader instanceof $Reader))\n                    reader = new $Reader(reader);\n                return this.decode(reader, reader.uint32());\n            };\n\n            /**\n             * Verifies a ParallelNode message.\n             * @function verify\n             * @memberof Trace.QueryPlanNode.ParallelNode\n             * @static\n             * @param {Object.<string,*>} message Plain object to verify\n             * @returns {string|null} `null` if valid, otherwise the reason why it is not\n             */\n            ParallelNode.verify = function verify(message) {\n                if (typeof message !== \"object\" || message === null)\n                    return \"object expected\";\n                if (message.nodes != null && message.hasOwnProperty(\"nodes\")) {\n                    if (!Array.isArray(message.nodes))\n                        return \"nodes: array expected\";\n                    for (var i = 0; i < message.nodes.length; ++i) {\n                        var error = $root.Trace.QueryPlanNode.verify(message.nodes[i]);\n                        if (error)\n                            return \"nodes.\" + error;\n                    }\n                }\n                return null;\n            };\n\n            /**\n             * Creates a plain object from a ParallelNode message. Also converts values to other types if specified.\n             * @function toObject\n             * @memberof Trace.QueryPlanNode.ParallelNode\n             * @static\n             * @param {Trace.QueryPlanNode.ParallelNode} message ParallelNode\n             * @param {$protobuf.IConversionOptions} [options] Conversion options\n             * @returns {Object.<string,*>} Plain object\n             */\n            ParallelNode.toObject = function toObject(message, options) {\n                if (!options)\n                    options = {};\n                var object = {};\n                if (options.arrays || options.defaults)\n                    object.nodes = [];\n                if (message.nodes && message.nodes.length) {\n                    object.nodes = [];\n                    for (var j = 0; j < message.nodes.length; ++j)\n                        object.nodes[j] = $root.Trace.QueryPlanNode.toObject(message.nodes[j], options);\n                }\n                return object;\n            };\n\n            /**\n             * Converts this ParallelNode to JSON.\n             * @function toJSON\n             * @memberof Trace.QueryPlanNode.ParallelNode\n             * @instance\n             * @returns {Object.<string,*>} JSON object\n             */\n            ParallelNode.prototype.toJSON = function toJSON() {\n                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n            };\n\n            return ParallelNode;\n        })();\n\n        QueryPlanNode.FetchNode = (function() {\n\n            /**\n             * Properties of a FetchNode.\n             * @memberof Trace.QueryPlanNode\n             * @interface IFetchNode\n             * @property {string|null} [serviceName] FetchNode serviceName\n             * @property {boolean|null} [traceParsingFailed] FetchNode traceParsingFailed\n             * @property {ITrace|null} [trace] FetchNode trace\n             * @property {number|null} [sentTimeOffset] FetchNode sentTimeOffset\n             * @property {google.protobuf.ITimestamp|null} [sentTime] FetchNode sentTime\n             * @property {google.protobuf.ITimestamp|null} [receivedTime] FetchNode receivedTime\n             */\n\n            /**\n             * Constructs a new FetchNode.\n             * @memberof Trace.QueryPlanNode\n             * @classdesc Represents a FetchNode.\n             * @implements IFetchNode\n             * @constructor\n             * @param {Trace.QueryPlanNode.IFetchNode=} [properties] Properties to set\n             */\n            function FetchNode(properties) {\n                if (properties)\n                    for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                        if (properties[keys[i]] != null)\n                            this[keys[i]] = properties[keys[i]];\n            }\n\n            /**\n             * FetchNode serviceName.\n             * @member {string} serviceName\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @instance\n             */\n            FetchNode.prototype.serviceName = \"\";\n\n            /**\n             * FetchNode traceParsingFailed.\n             * @member {boolean} traceParsingFailed\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @instance\n             */\n            FetchNode.prototype.traceParsingFailed = false;\n\n            /**\n             * FetchNode trace.\n             * @member {ITrace|null|undefined} trace\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @instance\n             */\n            FetchNode.prototype.trace = null;\n\n            /**\n             * FetchNode sentTimeOffset.\n             * @member {number} sentTimeOffset\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @instance\n             */\n            FetchNode.prototype.sentTimeOffset = 0;\n\n            /**\n             * FetchNode sentTime.\n             * @member {google.protobuf.ITimestamp|null|undefined} sentTime\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @instance\n             */\n            FetchNode.prototype.sentTime = null;\n\n            /**\n             * FetchNode receivedTime.\n             * @member {google.protobuf.ITimestamp|null|undefined} receivedTime\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @instance\n             */\n            FetchNode.prototype.receivedTime = null;\n\n            /**\n             * Creates a new FetchNode instance using the specified properties.\n             * @function create\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @static\n             * @param {Trace.QueryPlanNode.IFetchNode=} [properties] Properties to set\n             * @returns {Trace.QueryPlanNode.FetchNode} FetchNode instance\n             */\n            FetchNode.create = function create(properties) {\n                return new FetchNode(properties);\n            };\n\n            /**\n             * Encodes the specified FetchNode message. Does not implicitly {@link Trace.QueryPlanNode.FetchNode.verify|verify} messages.\n             * @function encode\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @static\n             * @param {Trace.QueryPlanNode.IFetchNode} message FetchNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            FetchNode.encode = function encode(message, writer) {\n                if (!writer)\n                    writer = $Writer.create();\n                if (message.serviceName != null && Object.hasOwnProperty.call(message, \"serviceName\"))\n                    writer.uint32(/* id 1, wireType 2 =*/10).string(message.serviceName);\n                if (message.traceParsingFailed != null && Object.hasOwnProperty.call(message, \"traceParsingFailed\"))\n                    writer.uint32(/* id 2, wireType 0 =*/16).bool(message.traceParsingFailed);\n                if (message.trace != null && Object.hasOwnProperty.call(message, \"trace\"))\n                    $root.Trace.encode(message.trace, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n                if (message.sentTimeOffset != null && Object.hasOwnProperty.call(message, \"sentTimeOffset\"))\n                    writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.sentTimeOffset);\n                if (message.sentTime != null && Object.hasOwnProperty.call(message, \"sentTime\"))\n                    $root.google.protobuf.Timestamp.encode(message.sentTime, writer.uint32(/* id 5, wireType 2 =*/42).fork()).ldelim();\n                if (message.receivedTime != null && Object.hasOwnProperty.call(message, \"receivedTime\"))\n                    $root.google.protobuf.Timestamp.encode(message.receivedTime, writer.uint32(/* id 6, wireType 2 =*/50).fork()).ldelim();\n                return writer;\n            };\n\n            /**\n             * Encodes the specified FetchNode message, length delimited. Does not implicitly {@link Trace.QueryPlanNode.FetchNode.verify|verify} messages.\n             * @function encodeDelimited\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @static\n             * @param {Trace.QueryPlanNode.IFetchNode} message FetchNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            FetchNode.encodeDelimited = function encodeDelimited(message, writer) {\n                return this.encode(message, writer).ldelim();\n            };\n\n            /**\n             * Decodes a FetchNode message from the specified reader or buffer.\n             * @function decode\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @param {number} [length] Message length if known beforehand\n             * @returns {Trace.QueryPlanNode.FetchNode} FetchNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            FetchNode.decode = function decode(reader, length) {\n                if (!(reader instanceof $Reader))\n                    reader = $Reader.create(reader);\n                var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.QueryPlanNode.FetchNode();\n                while (reader.pos < end) {\n                    var tag = reader.uint32();\n                    switch (tag >>> 3) {\n                    case 1:\n                        message.serviceName = reader.string();\n                        break;\n                    case 2:\n                        message.traceParsingFailed = reader.bool();\n                        break;\n                    case 3:\n                        message.trace = $root.Trace.decode(reader, reader.uint32());\n                        break;\n                    case 4:\n                        message.sentTimeOffset = reader.uint64();\n                        break;\n                    case 5:\n                        message.sentTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());\n                        break;\n                    case 6:\n                        message.receivedTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());\n                        break;\n                    default:\n                        reader.skipType(tag & 7);\n                        break;\n                    }\n                }\n                return message;\n            };\n\n            /**\n             * Decodes a FetchNode message from the specified reader or buffer, length delimited.\n             * @function decodeDelimited\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @returns {Trace.QueryPlanNode.FetchNode} FetchNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            FetchNode.decodeDelimited = function decodeDelimited(reader) {\n                if (!(reader instanceof $Reader))\n                    reader = new $Reader(reader);\n                return this.decode(reader, reader.uint32());\n            };\n\n            /**\n             * Verifies a FetchNode message.\n             * @function verify\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @static\n             * @param {Object.<string,*>} message Plain object to verify\n             * @returns {string|null} `null` if valid, otherwise the reason why it is not\n             */\n            FetchNode.verify = function verify(message) {\n                if (typeof message !== \"object\" || message === null)\n                    return \"object expected\";\n                if (message.serviceName != null && message.hasOwnProperty(\"serviceName\"))\n                    if (!$util.isString(message.serviceName))\n                        return \"serviceName: string expected\";\n                if (message.traceParsingFailed != null && message.hasOwnProperty(\"traceParsingFailed\"))\n                    if (typeof message.traceParsingFailed !== \"boolean\")\n                        return \"traceParsingFailed: boolean expected\";\n                if (message.trace != null && message.hasOwnProperty(\"trace\")) {\n                    var error = $root.Trace.verify(message.trace);\n                    if (error)\n                        return \"trace.\" + error;\n                }\n                if (message.sentTimeOffset != null && message.hasOwnProperty(\"sentTimeOffset\"))\n                    if (!$util.isInteger(message.sentTimeOffset) && !(message.sentTimeOffset && $util.isInteger(message.sentTimeOffset.low) && $util.isInteger(message.sentTimeOffset.high)))\n                        return \"sentTimeOffset: integer|Long expected\";\n                if (message.sentTime != null && message.hasOwnProperty(\"sentTime\")) {\n                    var error = $root.google.protobuf.Timestamp.verify(message.sentTime);\n                    if (error)\n                        return \"sentTime.\" + error;\n                }\n                if (message.receivedTime != null && message.hasOwnProperty(\"receivedTime\")) {\n                    var error = $root.google.protobuf.Timestamp.verify(message.receivedTime);\n                    if (error)\n                        return \"receivedTime.\" + error;\n                }\n                return null;\n            };\n\n            /**\n             * Creates a plain object from a FetchNode message. Also converts values to other types if specified.\n             * @function toObject\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @static\n             * @param {Trace.QueryPlanNode.FetchNode} message FetchNode\n             * @param {$protobuf.IConversionOptions} [options] Conversion options\n             * @returns {Object.<string,*>} Plain object\n             */\n            FetchNode.toObject = function toObject(message, options) {\n                if (!options)\n                    options = {};\n                var object = {};\n                if (options.defaults) {\n                    object.serviceName = \"\";\n                    object.traceParsingFailed = false;\n                    object.trace = null;\n                    object.sentTimeOffset = 0;\n                    object.sentTime = null;\n                    object.receivedTime = null;\n                }\n                if (message.serviceName != null && message.hasOwnProperty(\"serviceName\"))\n                    object.serviceName = message.serviceName;\n                if (message.traceParsingFailed != null && message.hasOwnProperty(\"traceParsingFailed\"))\n                    object.traceParsingFailed = message.traceParsingFailed;\n                if (message.trace != null && message.hasOwnProperty(\"trace\"))\n                    object.trace = $root.Trace.toObject(message.trace, options);\n                if (message.sentTimeOffset != null && message.hasOwnProperty(\"sentTimeOffset\"))\n                    if (typeof message.sentTimeOffset === \"number\")\n                        object.sentTimeOffset = options.longs === String ? String(message.sentTimeOffset) : message.sentTimeOffset;\n                    else\n                        object.sentTimeOffset = options.longs === String ? $util.Long.prototype.toString.call(message.sentTimeOffset) : options.longs === Number ? new $util.LongBits(message.sentTimeOffset.low >>> 0, message.sentTimeOffset.high >>> 0).toNumber(true) : message.sentTimeOffset;\n                if (message.sentTime != null && message.hasOwnProperty(\"sentTime\"))\n                    object.sentTime = $root.google.protobuf.Timestamp.toObject(message.sentTime, options);\n                if (message.receivedTime != null && message.hasOwnProperty(\"receivedTime\"))\n                    object.receivedTime = $root.google.protobuf.Timestamp.toObject(message.receivedTime, options);\n                return object;\n            };\n\n            /**\n             * Converts this FetchNode to JSON.\n             * @function toJSON\n             * @memberof Trace.QueryPlanNode.FetchNode\n             * @instance\n             * @returns {Object.<string,*>} JSON object\n             */\n            FetchNode.prototype.toJSON = function toJSON() {\n                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n            };\n\n            return FetchNode;\n        })();\n\n        QueryPlanNode.FlattenNode = (function() {\n\n            /**\n             * Properties of a FlattenNode.\n             * @memberof Trace.QueryPlanNode\n             * @interface IFlattenNode\n             * @property {Array.<Trace.QueryPlanNode.IResponsePathElement>|null} [responsePath] FlattenNode responsePath\n             * @property {Trace.IQueryPlanNode|null} [node] FlattenNode node\n             */\n\n            /**\n             * Constructs a new FlattenNode.\n             * @memberof Trace.QueryPlanNode\n             * @classdesc Represents a FlattenNode.\n             * @implements IFlattenNode\n             * @constructor\n             * @param {Trace.QueryPlanNode.IFlattenNode=} [properties] Properties to set\n             */\n            function FlattenNode(properties) {\n                this.responsePath = [];\n                if (properties)\n                    for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                        if (properties[keys[i]] != null)\n                            this[keys[i]] = properties[keys[i]];\n            }\n\n            /**\n             * FlattenNode responsePath.\n             * @member {Array.<Trace.QueryPlanNode.IResponsePathElement>} responsePath\n             * @memberof Trace.QueryPlanNode.FlattenNode\n             * @instance\n             */\n            FlattenNode.prototype.responsePath = $util.emptyArray;\n\n            /**\n             * FlattenNode node.\n             * @member {Trace.IQueryPlanNode|null|undefined} node\n             * @memberof Trace.QueryPlanNode.FlattenNode\n             * @instance\n             */\n            FlattenNode.prototype.node = null;\n\n            /**\n             * Creates a new FlattenNode instance using the specified properties.\n             * @function create\n             * @memberof Trace.QueryPlanNode.FlattenNode\n             * @static\n             * @param {Trace.QueryPlanNode.IFlattenNode=} [properties] Properties to set\n             * @returns {Trace.QueryPlanNode.FlattenNode} FlattenNode instance\n             */\n            FlattenNode.create = function create(properties) {\n                return new FlattenNode(properties);\n            };\n\n            /**\n             * Encodes the specified FlattenNode message. Does not implicitly {@link Trace.QueryPlanNode.FlattenNode.verify|verify} messages.\n             * @function encode\n             * @memberof Trace.QueryPlanNode.FlattenNode\n             * @static\n             * @param {Trace.QueryPlanNode.IFlattenNode} message FlattenNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            FlattenNode.encode = function encode(message, writer) {\n                if (!writer)\n                    writer = $Writer.create();\n                if (message.responsePath != null && message.responsePath.length)\n                    for (var i = 0; i < message.responsePath.length; ++i)\n                        $root.Trace.QueryPlanNode.ResponsePathElement.encode(message.responsePath[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n                if (message.node != null && Object.hasOwnProperty.call(message, \"node\"))\n                    $root.Trace.QueryPlanNode.encode(message.node, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n                return writer;\n            };\n\n            /**\n             * Encodes the specified FlattenNode message, length delimited. Does not implicitly {@link Trace.QueryPlanNode.FlattenNode.verify|verify} messages.\n             * @function encodeDelimited\n             * @memberof Trace.QueryPlanNode.FlattenNode\n             * @static\n             * @param {Trace.QueryPlanNode.IFlattenNode} message FlattenNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            FlattenNode.encodeDelimited = function encodeDelimited(message, writer) {\n                return this.encode(message, writer).ldelim();\n            };\n\n            /**\n             * Decodes a FlattenNode message from the specified reader or buffer.\n             * @function decode\n             * @memberof Trace.QueryPlanNode.FlattenNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @param {number} [length] Message length if known beforehand\n             * @returns {Trace.QueryPlanNode.FlattenNode} FlattenNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            FlattenNode.decode = function decode(reader, length) {\n                if (!(reader instanceof $Reader))\n                    reader = $Reader.create(reader);\n                var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.QueryPlanNode.FlattenNode();\n                while (reader.pos < end) {\n                    var tag = reader.uint32();\n                    switch (tag >>> 3) {\n                    case 1:\n                        if (!(message.responsePath && message.responsePath.length))\n                            message.responsePath = [];\n                        message.responsePath.push($root.Trace.QueryPlanNode.ResponsePathElement.decode(reader, reader.uint32()));\n                        break;\n                    case 2:\n                        message.node = $root.Trace.QueryPlanNode.decode(reader, reader.uint32());\n                        break;\n                    default:\n                        reader.skipType(tag & 7);\n                        break;\n                    }\n                }\n                return message;\n            };\n\n            /**\n             * Decodes a FlattenNode message from the specified reader or buffer, length delimited.\n             * @function decodeDelimited\n             * @memberof Trace.QueryPlanNode.FlattenNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @returns {Trace.QueryPlanNode.FlattenNode} FlattenNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            FlattenNode.decodeDelimited = function decodeDelimited(reader) {\n                if (!(reader instanceof $Reader))\n                    reader = new $Reader(reader);\n                return this.decode(reader, reader.uint32());\n            };\n\n            /**\n             * Verifies a FlattenNode message.\n             * @function verify\n             * @memberof Trace.QueryPlanNode.FlattenNode\n             * @static\n             * @param {Object.<string,*>} message Plain object to verify\n             * @returns {string|null} `null` if valid, otherwise the reason why it is not\n             */\n            FlattenNode.verify = function verify(message) {\n                if (typeof message !== \"object\" || message === null)\n                    return \"object expected\";\n                if (message.responsePath != null && message.hasOwnProperty(\"responsePath\")) {\n                    if (!Array.isArray(message.responsePath))\n                        return \"responsePath: array expected\";\n                    for (var i = 0; i < message.responsePath.length; ++i) {\n                        var error = $root.Trace.QueryPlanNode.ResponsePathElement.verify(message.responsePath[i]);\n                        if (error)\n                            return \"responsePath.\" + error;\n                    }\n                }\n                if (message.node != null && message.hasOwnProperty(\"node\")) {\n                    var error = $root.Trace.QueryPlanNode.verify(message.node);\n                    if (error)\n                        return \"node.\" + error;\n                }\n                return null;\n            };\n\n            /**\n             * Creates a plain object from a FlattenNode message. Also converts values to other types if specified.\n             * @function toObject\n             * @memberof Trace.QueryPlanNode.FlattenNode\n             * @static\n             * @param {Trace.QueryPlanNode.FlattenNode} message FlattenNode\n             * @param {$protobuf.IConversionOptions} [options] Conversion options\n             * @returns {Object.<string,*>} Plain object\n             */\n            FlattenNode.toObject = function toObject(message, options) {\n                if (!options)\n                    options = {};\n                var object = {};\n                if (options.arrays || options.defaults)\n                    object.responsePath = [];\n                if (options.defaults)\n                    object.node = null;\n                if (message.responsePath && message.responsePath.length) {\n                    object.responsePath = [];\n                    for (var j = 0; j < message.responsePath.length; ++j)\n                        object.responsePath[j] = $root.Trace.QueryPlanNode.ResponsePathElement.toObject(message.responsePath[j], options);\n                }\n                if (message.node != null && message.hasOwnProperty(\"node\"))\n                    object.node = $root.Trace.QueryPlanNode.toObject(message.node, options);\n                return object;\n            };\n\n            /**\n             * Converts this FlattenNode to JSON.\n             * @function toJSON\n             * @memberof Trace.QueryPlanNode.FlattenNode\n             * @instance\n             * @returns {Object.<string,*>} JSON object\n             */\n            FlattenNode.prototype.toJSON = function toJSON() {\n                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n            };\n\n            return FlattenNode;\n        })();\n\n        QueryPlanNode.DeferNode = (function() {\n\n            /**\n             * Properties of a DeferNode.\n             * @memberof Trace.QueryPlanNode\n             * @interface IDeferNode\n             * @property {Trace.QueryPlanNode.IDeferNodePrimary|null} [primary] DeferNode primary\n             * @property {Array.<Trace.QueryPlanNode.IDeferredNode>|null} [deferred] DeferNode deferred\n             */\n\n            /**\n             * Constructs a new DeferNode.\n             * @memberof Trace.QueryPlanNode\n             * @classdesc Represents a DeferNode.\n             * @implements IDeferNode\n             * @constructor\n             * @param {Trace.QueryPlanNode.IDeferNode=} [properties] Properties to set\n             */\n            function DeferNode(properties) {\n                this.deferred = [];\n                if (properties)\n                    for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                        if (properties[keys[i]] != null)\n                            this[keys[i]] = properties[keys[i]];\n            }\n\n            /**\n             * DeferNode primary.\n             * @member {Trace.QueryPlanNode.IDeferNodePrimary|null|undefined} primary\n             * @memberof Trace.QueryPlanNode.DeferNode\n             * @instance\n             */\n            DeferNode.prototype.primary = null;\n\n            /**\n             * DeferNode deferred.\n             * @member {Array.<Trace.QueryPlanNode.IDeferredNode>} deferred\n             * @memberof Trace.QueryPlanNode.DeferNode\n             * @instance\n             */\n            DeferNode.prototype.deferred = $util.emptyArray;\n\n            /**\n             * Creates a new DeferNode instance using the specified properties.\n             * @function create\n             * @memberof Trace.QueryPlanNode.DeferNode\n             * @static\n             * @param {Trace.QueryPlanNode.IDeferNode=} [properties] Properties to set\n             * @returns {Trace.QueryPlanNode.DeferNode} DeferNode instance\n             */\n            DeferNode.create = function create(properties) {\n                return new DeferNode(properties);\n            };\n\n            /**\n             * Encodes the specified DeferNode message. Does not implicitly {@link Trace.QueryPlanNode.DeferNode.verify|verify} messages.\n             * @function encode\n             * @memberof Trace.QueryPlanNode.DeferNode\n             * @static\n             * @param {Trace.QueryPlanNode.IDeferNode} message DeferNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            DeferNode.encode = function encode(message, writer) {\n                if (!writer)\n                    writer = $Writer.create();\n                if (message.primary != null && Object.hasOwnProperty.call(message, \"primary\"))\n                    $root.Trace.QueryPlanNode.DeferNodePrimary.encode(message.primary, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n                if (message.deferred != null && message.deferred.length)\n                    for (var i = 0; i < message.deferred.length; ++i)\n                        $root.Trace.QueryPlanNode.DeferredNode.encode(message.deferred[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n                return writer;\n            };\n\n            /**\n             * Encodes the specified DeferNode message, length delimited. Does not implicitly {@link Trace.QueryPlanNode.DeferNode.verify|verify} messages.\n             * @function encodeDelimited\n             * @memberof Trace.QueryPlanNode.DeferNode\n             * @static\n             * @param {Trace.QueryPlanNode.IDeferNode} message DeferNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            DeferNode.encodeDelimited = function encodeDelimited(message, writer) {\n                return this.encode(message, writer).ldelim();\n            };\n\n            /**\n             * Decodes a DeferNode message from the specified reader or buffer.\n             * @function decode\n             * @memberof Trace.QueryPlanNode.DeferNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @param {number} [length] Message length if known beforehand\n             * @returns {Trace.QueryPlanNode.DeferNode} DeferNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            DeferNode.decode = function decode(reader, length) {\n                if (!(reader instanceof $Reader))\n                    reader = $Reader.create(reader);\n                var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.QueryPlanNode.DeferNode();\n                while (reader.pos < end) {\n                    var tag = reader.uint32();\n                    switch (tag >>> 3) {\n                    case 1:\n                        message.primary = $root.Trace.QueryPlanNode.DeferNodePrimary.decode(reader, reader.uint32());\n                        break;\n                    case 2:\n                        if (!(message.deferred && message.deferred.length))\n                            message.deferred = [];\n                        message.deferred.push($root.Trace.QueryPlanNode.DeferredNode.decode(reader, reader.uint32()));\n                        break;\n                    default:\n                        reader.skipType(tag & 7);\n                        break;\n                    }\n                }\n                return message;\n            };\n\n            /**\n             * Decodes a DeferNode message from the specified reader or buffer, length delimited.\n             * @function decodeDelimited\n             * @memberof Trace.QueryPlanNode.DeferNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @returns {Trace.QueryPlanNode.DeferNode} DeferNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            DeferNode.decodeDelimited = function decodeDelimited(reader) {\n                if (!(reader instanceof $Reader))\n                    reader = new $Reader(reader);\n                return this.decode(reader, reader.uint32());\n            };\n\n            /**\n             * Verifies a DeferNode message.\n             * @function verify\n             * @memberof Trace.QueryPlanNode.DeferNode\n             * @static\n             * @param {Object.<string,*>} message Plain object to verify\n             * @returns {string|null} `null` if valid, otherwise the reason why it is not\n             */\n            DeferNode.verify = function verify(message) {\n                if (typeof message !== \"object\" || message === null)\n                    return \"object expected\";\n                if (message.primary != null && message.hasOwnProperty(\"primary\")) {\n                    var error = $root.Trace.QueryPlanNode.DeferNodePrimary.verify(message.primary);\n                    if (error)\n                        return \"primary.\" + error;\n                }\n                if (message.deferred != null && message.hasOwnProperty(\"deferred\")) {\n                    if (!Array.isArray(message.deferred))\n                        return \"deferred: array expected\";\n                    for (var i = 0; i < message.deferred.length; ++i) {\n                        var error = $root.Trace.QueryPlanNode.DeferredNode.verify(message.deferred[i]);\n                        if (error)\n                            return \"deferred.\" + error;\n                    }\n                }\n                return null;\n            };\n\n            /**\n             * Creates a plain object from a DeferNode message. Also converts values to other types if specified.\n             * @function toObject\n             * @memberof Trace.QueryPlanNode.DeferNode\n             * @static\n             * @param {Trace.QueryPlanNode.DeferNode} message DeferNode\n             * @param {$protobuf.IConversionOptions} [options] Conversion options\n             * @returns {Object.<string,*>} Plain object\n             */\n            DeferNode.toObject = function toObject(message, options) {\n                if (!options)\n                    options = {};\n                var object = {};\n                if (options.arrays || options.defaults)\n                    object.deferred = [];\n                if (options.defaults)\n                    object.primary = null;\n                if (message.primary != null && message.hasOwnProperty(\"primary\"))\n                    object.primary = $root.Trace.QueryPlanNode.DeferNodePrimary.toObject(message.primary, options);\n                if (message.deferred && message.deferred.length) {\n                    object.deferred = [];\n                    for (var j = 0; j < message.deferred.length; ++j)\n                        object.deferred[j] = $root.Trace.QueryPlanNode.DeferredNode.toObject(message.deferred[j], options);\n                }\n                return object;\n            };\n\n            /**\n             * Converts this DeferNode to JSON.\n             * @function toJSON\n             * @memberof Trace.QueryPlanNode.DeferNode\n             * @instance\n             * @returns {Object.<string,*>} JSON object\n             */\n            DeferNode.prototype.toJSON = function toJSON() {\n                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n            };\n\n            return DeferNode;\n        })();\n\n        QueryPlanNode.ConditionNode = (function() {\n\n            /**\n             * Properties of a ConditionNode.\n             * @memberof Trace.QueryPlanNode\n             * @interface IConditionNode\n             * @property {string|null} [condition] ConditionNode condition\n             * @property {Trace.IQueryPlanNode|null} [ifClause] ConditionNode ifClause\n             * @property {Trace.IQueryPlanNode|null} [elseClause] ConditionNode elseClause\n             */\n\n            /**\n             * Constructs a new ConditionNode.\n             * @memberof Trace.QueryPlanNode\n             * @classdesc Represents a ConditionNode.\n             * @implements IConditionNode\n             * @constructor\n             * @param {Trace.QueryPlanNode.IConditionNode=} [properties] Properties to set\n             */\n            function ConditionNode(properties) {\n                if (properties)\n                    for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                        if (properties[keys[i]] != null)\n                            this[keys[i]] = properties[keys[i]];\n            }\n\n            /**\n             * ConditionNode condition.\n             * @member {string} condition\n             * @memberof Trace.QueryPlanNode.ConditionNode\n             * @instance\n             */\n            ConditionNode.prototype.condition = \"\";\n\n            /**\n             * ConditionNode ifClause.\n             * @member {Trace.IQueryPlanNode|null|undefined} ifClause\n             * @memberof Trace.QueryPlanNode.ConditionNode\n             * @instance\n             */\n            ConditionNode.prototype.ifClause = null;\n\n            /**\n             * ConditionNode elseClause.\n             * @member {Trace.IQueryPlanNode|null|undefined} elseClause\n             * @memberof Trace.QueryPlanNode.ConditionNode\n             * @instance\n             */\n            ConditionNode.prototype.elseClause = null;\n\n            /**\n             * Creates a new ConditionNode instance using the specified properties.\n             * @function create\n             * @memberof Trace.QueryPlanNode.ConditionNode\n             * @static\n             * @param {Trace.QueryPlanNode.IConditionNode=} [properties] Properties to set\n             * @returns {Trace.QueryPlanNode.ConditionNode} ConditionNode instance\n             */\n            ConditionNode.create = function create(properties) {\n                return new ConditionNode(properties);\n            };\n\n            /**\n             * Encodes the specified ConditionNode message. Does not implicitly {@link Trace.QueryPlanNode.ConditionNode.verify|verify} messages.\n             * @function encode\n             * @memberof Trace.QueryPlanNode.ConditionNode\n             * @static\n             * @param {Trace.QueryPlanNode.IConditionNode} message ConditionNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            ConditionNode.encode = function encode(message, writer) {\n                if (!writer)\n                    writer = $Writer.create();\n                if (message.condition != null && Object.hasOwnProperty.call(message, \"condition\"))\n                    writer.uint32(/* id 1, wireType 2 =*/10).string(message.condition);\n                if (message.ifClause != null && Object.hasOwnProperty.call(message, \"ifClause\"))\n                    $root.Trace.QueryPlanNode.encode(message.ifClause, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n                if (message.elseClause != null && Object.hasOwnProperty.call(message, \"elseClause\"))\n                    $root.Trace.QueryPlanNode.encode(message.elseClause, writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n                return writer;\n            };\n\n            /**\n             * Encodes the specified ConditionNode message, length delimited. Does not implicitly {@link Trace.QueryPlanNode.ConditionNode.verify|verify} messages.\n             * @function encodeDelimited\n             * @memberof Trace.QueryPlanNode.ConditionNode\n             * @static\n             * @param {Trace.QueryPlanNode.IConditionNode} message ConditionNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            ConditionNode.encodeDelimited = function encodeDelimited(message, writer) {\n                return this.encode(message, writer).ldelim();\n            };\n\n            /**\n             * Decodes a ConditionNode message from the specified reader or buffer.\n             * @function decode\n             * @memberof Trace.QueryPlanNode.ConditionNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @param {number} [length] Message length if known beforehand\n             * @returns {Trace.QueryPlanNode.ConditionNode} ConditionNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            ConditionNode.decode = function decode(reader, length) {\n                if (!(reader instanceof $Reader))\n                    reader = $Reader.create(reader);\n                var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.QueryPlanNode.ConditionNode();\n                while (reader.pos < end) {\n                    var tag = reader.uint32();\n                    switch (tag >>> 3) {\n                    case 1:\n                        message.condition = reader.string();\n                        break;\n                    case 2:\n                        message.ifClause = $root.Trace.QueryPlanNode.decode(reader, reader.uint32());\n                        break;\n                    case 3:\n                        message.elseClause = $root.Trace.QueryPlanNode.decode(reader, reader.uint32());\n                        break;\n                    default:\n                        reader.skipType(tag & 7);\n                        break;\n                    }\n                }\n                return message;\n            };\n\n            /**\n             * Decodes a ConditionNode message from the specified reader or buffer, length delimited.\n             * @function decodeDelimited\n             * @memberof Trace.QueryPlanNode.ConditionNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @returns {Trace.QueryPlanNode.ConditionNode} ConditionNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            ConditionNode.decodeDelimited = function decodeDelimited(reader) {\n                if (!(reader instanceof $Reader))\n                    reader = new $Reader(reader);\n                return this.decode(reader, reader.uint32());\n            };\n\n            /**\n             * Verifies a ConditionNode message.\n             * @function verify\n             * @memberof Trace.QueryPlanNode.ConditionNode\n             * @static\n             * @param {Object.<string,*>} message Plain object to verify\n             * @returns {string|null} `null` if valid, otherwise the reason why it is not\n             */\n            ConditionNode.verify = function verify(message) {\n                if (typeof message !== \"object\" || message === null)\n                    return \"object expected\";\n                if (message.condition != null && message.hasOwnProperty(\"condition\"))\n                    if (!$util.isString(message.condition))\n                        return \"condition: string expected\";\n                if (message.ifClause != null && message.hasOwnProperty(\"ifClause\")) {\n                    var error = $root.Trace.QueryPlanNode.verify(message.ifClause);\n                    if (error)\n                        return \"ifClause.\" + error;\n                }\n                if (message.elseClause != null && message.hasOwnProperty(\"elseClause\")) {\n                    var error = $root.Trace.QueryPlanNode.verify(message.elseClause);\n                    if (error)\n                        return \"elseClause.\" + error;\n                }\n                return null;\n            };\n\n            /**\n             * Creates a plain object from a ConditionNode message. Also converts values to other types if specified.\n             * @function toObject\n             * @memberof Trace.QueryPlanNode.ConditionNode\n             * @static\n             * @param {Trace.QueryPlanNode.ConditionNode} message ConditionNode\n             * @param {$protobuf.IConversionOptions} [options] Conversion options\n             * @returns {Object.<string,*>} Plain object\n             */\n            ConditionNode.toObject = function toObject(message, options) {\n                if (!options)\n                    options = {};\n                var object = {};\n                if (options.defaults) {\n                    object.condition = \"\";\n                    object.ifClause = null;\n                    object.elseClause = null;\n                }\n                if (message.condition != null && message.hasOwnProperty(\"condition\"))\n                    object.condition = message.condition;\n                if (message.ifClause != null && message.hasOwnProperty(\"ifClause\"))\n                    object.ifClause = $root.Trace.QueryPlanNode.toObject(message.ifClause, options);\n                if (message.elseClause != null && message.hasOwnProperty(\"elseClause\"))\n                    object.elseClause = $root.Trace.QueryPlanNode.toObject(message.elseClause, options);\n                return object;\n            };\n\n            /**\n             * Converts this ConditionNode to JSON.\n             * @function toJSON\n             * @memberof Trace.QueryPlanNode.ConditionNode\n             * @instance\n             * @returns {Object.<string,*>} JSON object\n             */\n            ConditionNode.prototype.toJSON = function toJSON() {\n                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n            };\n\n            return ConditionNode;\n        })();\n\n        QueryPlanNode.DeferNodePrimary = (function() {\n\n            /**\n             * Properties of a DeferNodePrimary.\n             * @memberof Trace.QueryPlanNode\n             * @interface IDeferNodePrimary\n             * @property {Trace.IQueryPlanNode|null} [node] DeferNodePrimary node\n             */\n\n            /**\n             * Constructs a new DeferNodePrimary.\n             * @memberof Trace.QueryPlanNode\n             * @classdesc Represents a DeferNodePrimary.\n             * @implements IDeferNodePrimary\n             * @constructor\n             * @param {Trace.QueryPlanNode.IDeferNodePrimary=} [properties] Properties to set\n             */\n            function DeferNodePrimary(properties) {\n                if (properties)\n                    for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                        if (properties[keys[i]] != null)\n                            this[keys[i]] = properties[keys[i]];\n            }\n\n            /**\n             * DeferNodePrimary node.\n             * @member {Trace.IQueryPlanNode|null|undefined} node\n             * @memberof Trace.QueryPlanNode.DeferNodePrimary\n             * @instance\n             */\n            DeferNodePrimary.prototype.node = null;\n\n            /**\n             * Creates a new DeferNodePrimary instance using the specified properties.\n             * @function create\n             * @memberof Trace.QueryPlanNode.DeferNodePrimary\n             * @static\n             * @param {Trace.QueryPlanNode.IDeferNodePrimary=} [properties] Properties to set\n             * @returns {Trace.QueryPlanNode.DeferNodePrimary} DeferNodePrimary instance\n             */\n            DeferNodePrimary.create = function create(properties) {\n                return new DeferNodePrimary(properties);\n            };\n\n            /**\n             * Encodes the specified DeferNodePrimary message. Does not implicitly {@link Trace.QueryPlanNode.DeferNodePrimary.verify|verify} messages.\n             * @function encode\n             * @memberof Trace.QueryPlanNode.DeferNodePrimary\n             * @static\n             * @param {Trace.QueryPlanNode.IDeferNodePrimary} message DeferNodePrimary message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            DeferNodePrimary.encode = function encode(message, writer) {\n                if (!writer)\n                    writer = $Writer.create();\n                if (message.node != null && Object.hasOwnProperty.call(message, \"node\"))\n                    $root.Trace.QueryPlanNode.encode(message.node, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n                return writer;\n            };\n\n            /**\n             * Encodes the specified DeferNodePrimary message, length delimited. Does not implicitly {@link Trace.QueryPlanNode.DeferNodePrimary.verify|verify} messages.\n             * @function encodeDelimited\n             * @memberof Trace.QueryPlanNode.DeferNodePrimary\n             * @static\n             * @param {Trace.QueryPlanNode.IDeferNodePrimary} message DeferNodePrimary message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            DeferNodePrimary.encodeDelimited = function encodeDelimited(message, writer) {\n                return this.encode(message, writer).ldelim();\n            };\n\n            /**\n             * Decodes a DeferNodePrimary message from the specified reader or buffer.\n             * @function decode\n             * @memberof Trace.QueryPlanNode.DeferNodePrimary\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @param {number} [length] Message length if known beforehand\n             * @returns {Trace.QueryPlanNode.DeferNodePrimary} DeferNodePrimary\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            DeferNodePrimary.decode = function decode(reader, length) {\n                if (!(reader instanceof $Reader))\n                    reader = $Reader.create(reader);\n                var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.QueryPlanNode.DeferNodePrimary();\n                while (reader.pos < end) {\n                    var tag = reader.uint32();\n                    switch (tag >>> 3) {\n                    case 1:\n                        message.node = $root.Trace.QueryPlanNode.decode(reader, reader.uint32());\n                        break;\n                    default:\n                        reader.skipType(tag & 7);\n                        break;\n                    }\n                }\n                return message;\n            };\n\n            /**\n             * Decodes a DeferNodePrimary message from the specified reader or buffer, length delimited.\n             * @function decodeDelimited\n             * @memberof Trace.QueryPlanNode.DeferNodePrimary\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @returns {Trace.QueryPlanNode.DeferNodePrimary} DeferNodePrimary\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            DeferNodePrimary.decodeDelimited = function decodeDelimited(reader) {\n                if (!(reader instanceof $Reader))\n                    reader = new $Reader(reader);\n                return this.decode(reader, reader.uint32());\n            };\n\n            /**\n             * Verifies a DeferNodePrimary message.\n             * @function verify\n             * @memberof Trace.QueryPlanNode.DeferNodePrimary\n             * @static\n             * @param {Object.<string,*>} message Plain object to verify\n             * @returns {string|null} `null` if valid, otherwise the reason why it is not\n             */\n            DeferNodePrimary.verify = function verify(message) {\n                if (typeof message !== \"object\" || message === null)\n                    return \"object expected\";\n                if (message.node != null && message.hasOwnProperty(\"node\")) {\n                    var error = $root.Trace.QueryPlanNode.verify(message.node);\n                    if (error)\n                        return \"node.\" + error;\n                }\n                return null;\n            };\n\n            /**\n             * Creates a plain object from a DeferNodePrimary message. Also converts values to other types if specified.\n             * @function toObject\n             * @memberof Trace.QueryPlanNode.DeferNodePrimary\n             * @static\n             * @param {Trace.QueryPlanNode.DeferNodePrimary} message DeferNodePrimary\n             * @param {$protobuf.IConversionOptions} [options] Conversion options\n             * @returns {Object.<string,*>} Plain object\n             */\n            DeferNodePrimary.toObject = function toObject(message, options) {\n                if (!options)\n                    options = {};\n                var object = {};\n                if (options.defaults)\n                    object.node = null;\n                if (message.node != null && message.hasOwnProperty(\"node\"))\n                    object.node = $root.Trace.QueryPlanNode.toObject(message.node, options);\n                return object;\n            };\n\n            /**\n             * Converts this DeferNodePrimary to JSON.\n             * @function toJSON\n             * @memberof Trace.QueryPlanNode.DeferNodePrimary\n             * @instance\n             * @returns {Object.<string,*>} JSON object\n             */\n            DeferNodePrimary.prototype.toJSON = function toJSON() {\n                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n            };\n\n            return DeferNodePrimary;\n        })();\n\n        QueryPlanNode.DeferredNode = (function() {\n\n            /**\n             * Properties of a DeferredNode.\n             * @memberof Trace.QueryPlanNode\n             * @interface IDeferredNode\n             * @property {Array.<Trace.QueryPlanNode.IDeferredNodeDepends>|null} [depends] DeferredNode depends\n             * @property {string|null} [label] DeferredNode label\n             * @property {Array.<Trace.QueryPlanNode.IResponsePathElement>|null} [path] DeferredNode path\n             * @property {Trace.IQueryPlanNode|null} [node] DeferredNode node\n             */\n\n            /**\n             * Constructs a new DeferredNode.\n             * @memberof Trace.QueryPlanNode\n             * @classdesc Represents a DeferredNode.\n             * @implements IDeferredNode\n             * @constructor\n             * @param {Trace.QueryPlanNode.IDeferredNode=} [properties] Properties to set\n             */\n            function DeferredNode(properties) {\n                this.depends = [];\n                this.path = [];\n                if (properties)\n                    for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                        if (properties[keys[i]] != null)\n                            this[keys[i]] = properties[keys[i]];\n            }\n\n            /**\n             * DeferredNode depends.\n             * @member {Array.<Trace.QueryPlanNode.IDeferredNodeDepends>} depends\n             * @memberof Trace.QueryPlanNode.DeferredNode\n             * @instance\n             */\n            DeferredNode.prototype.depends = $util.emptyArray;\n\n            /**\n             * DeferredNode label.\n             * @member {string} label\n             * @memberof Trace.QueryPlanNode.DeferredNode\n             * @instance\n             */\n            DeferredNode.prototype.label = \"\";\n\n            /**\n             * DeferredNode path.\n             * @member {Array.<Trace.QueryPlanNode.IResponsePathElement>} path\n             * @memberof Trace.QueryPlanNode.DeferredNode\n             * @instance\n             */\n            DeferredNode.prototype.path = $util.emptyArray;\n\n            /**\n             * DeferredNode node.\n             * @member {Trace.IQueryPlanNode|null|undefined} node\n             * @memberof Trace.QueryPlanNode.DeferredNode\n             * @instance\n             */\n            DeferredNode.prototype.node = null;\n\n            /**\n             * Creates a new DeferredNode instance using the specified properties.\n             * @function create\n             * @memberof Trace.QueryPlanNode.DeferredNode\n             * @static\n             * @param {Trace.QueryPlanNode.IDeferredNode=} [properties] Properties to set\n             * @returns {Trace.QueryPlanNode.DeferredNode} DeferredNode instance\n             */\n            DeferredNode.create = function create(properties) {\n                return new DeferredNode(properties);\n            };\n\n            /**\n             * Encodes the specified DeferredNode message. Does not implicitly {@link Trace.QueryPlanNode.DeferredNode.verify|verify} messages.\n             * @function encode\n             * @memberof Trace.QueryPlanNode.DeferredNode\n             * @static\n             * @param {Trace.QueryPlanNode.IDeferredNode} message DeferredNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            DeferredNode.encode = function encode(message, writer) {\n                if (!writer)\n                    writer = $Writer.create();\n                if (message.depends != null && message.depends.length)\n                    for (var i = 0; i < message.depends.length; ++i)\n                        $root.Trace.QueryPlanNode.DeferredNodeDepends.encode(message.depends[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n                if (message.label != null && Object.hasOwnProperty.call(message, \"label\"))\n                    writer.uint32(/* id 2, wireType 2 =*/18).string(message.label);\n                if (message.path != null && message.path.length)\n                    for (var i = 0; i < message.path.length; ++i)\n                        $root.Trace.QueryPlanNode.ResponsePathElement.encode(message.path[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n                if (message.node != null && Object.hasOwnProperty.call(message, \"node\"))\n                    $root.Trace.QueryPlanNode.encode(message.node, writer.uint32(/* id 4, wireType 2 =*/34).fork()).ldelim();\n                return writer;\n            };\n\n            /**\n             * Encodes the specified DeferredNode message, length delimited. Does not implicitly {@link Trace.QueryPlanNode.DeferredNode.verify|verify} messages.\n             * @function encodeDelimited\n             * @memberof Trace.QueryPlanNode.DeferredNode\n             * @static\n             * @param {Trace.QueryPlanNode.IDeferredNode} message DeferredNode message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            DeferredNode.encodeDelimited = function encodeDelimited(message, writer) {\n                return this.encode(message, writer).ldelim();\n            };\n\n            /**\n             * Decodes a DeferredNode message from the specified reader or buffer.\n             * @function decode\n             * @memberof Trace.QueryPlanNode.DeferredNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @param {number} [length] Message length if known beforehand\n             * @returns {Trace.QueryPlanNode.DeferredNode} DeferredNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            DeferredNode.decode = function decode(reader, length) {\n                if (!(reader instanceof $Reader))\n                    reader = $Reader.create(reader);\n                var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.QueryPlanNode.DeferredNode();\n                while (reader.pos < end) {\n                    var tag = reader.uint32();\n                    switch (tag >>> 3) {\n                    case 1:\n                        if (!(message.depends && message.depends.length))\n                            message.depends = [];\n                        message.depends.push($root.Trace.QueryPlanNode.DeferredNodeDepends.decode(reader, reader.uint32()));\n                        break;\n                    case 2:\n                        message.label = reader.string();\n                        break;\n                    case 3:\n                        if (!(message.path && message.path.length))\n                            message.path = [];\n                        message.path.push($root.Trace.QueryPlanNode.ResponsePathElement.decode(reader, reader.uint32()));\n                        break;\n                    case 4:\n                        message.node = $root.Trace.QueryPlanNode.decode(reader, reader.uint32());\n                        break;\n                    default:\n                        reader.skipType(tag & 7);\n                        break;\n                    }\n                }\n                return message;\n            };\n\n            /**\n             * Decodes a DeferredNode message from the specified reader or buffer, length delimited.\n             * @function decodeDelimited\n             * @memberof Trace.QueryPlanNode.DeferredNode\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @returns {Trace.QueryPlanNode.DeferredNode} DeferredNode\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            DeferredNode.decodeDelimited = function decodeDelimited(reader) {\n                if (!(reader instanceof $Reader))\n                    reader = new $Reader(reader);\n                return this.decode(reader, reader.uint32());\n            };\n\n            /**\n             * Verifies a DeferredNode message.\n             * @function verify\n             * @memberof Trace.QueryPlanNode.DeferredNode\n             * @static\n             * @param {Object.<string,*>} message Plain object to verify\n             * @returns {string|null} `null` if valid, otherwise the reason why it is not\n             */\n            DeferredNode.verify = function verify(message) {\n                if (typeof message !== \"object\" || message === null)\n                    return \"object expected\";\n                if (message.depends != null && message.hasOwnProperty(\"depends\")) {\n                    if (!Array.isArray(message.depends))\n                        return \"depends: array expected\";\n                    for (var i = 0; i < message.depends.length; ++i) {\n                        var error = $root.Trace.QueryPlanNode.DeferredNodeDepends.verify(message.depends[i]);\n                        if (error)\n                            return \"depends.\" + error;\n                    }\n                }\n                if (message.label != null && message.hasOwnProperty(\"label\"))\n                    if (!$util.isString(message.label))\n                        return \"label: string expected\";\n                if (message.path != null && message.hasOwnProperty(\"path\")) {\n                    if (!Array.isArray(message.path))\n                        return \"path: array expected\";\n                    for (var i = 0; i < message.path.length; ++i) {\n                        var error = $root.Trace.QueryPlanNode.ResponsePathElement.verify(message.path[i]);\n                        if (error)\n                            return \"path.\" + error;\n                    }\n                }\n                if (message.node != null && message.hasOwnProperty(\"node\")) {\n                    var error = $root.Trace.QueryPlanNode.verify(message.node);\n                    if (error)\n                        return \"node.\" + error;\n                }\n                return null;\n            };\n\n            /**\n             * Creates a plain object from a DeferredNode message. Also converts values to other types if specified.\n             * @function toObject\n             * @memberof Trace.QueryPlanNode.DeferredNode\n             * @static\n             * @param {Trace.QueryPlanNode.DeferredNode} message DeferredNode\n             * @param {$protobuf.IConversionOptions} [options] Conversion options\n             * @returns {Object.<string,*>} Plain object\n             */\n            DeferredNode.toObject = function toObject(message, options) {\n                if (!options)\n                    options = {};\n                var object = {};\n                if (options.arrays || options.defaults) {\n                    object.depends = [];\n                    object.path = [];\n                }\n                if (options.defaults) {\n                    object.label = \"\";\n                    object.node = null;\n                }\n                if (message.depends && message.depends.length) {\n                    object.depends = [];\n                    for (var j = 0; j < message.depends.length; ++j)\n                        object.depends[j] = $root.Trace.QueryPlanNode.DeferredNodeDepends.toObject(message.depends[j], options);\n                }\n                if (message.label != null && message.hasOwnProperty(\"label\"))\n                    object.label = message.label;\n                if (message.path && message.path.length) {\n                    object.path = [];\n                    for (var j = 0; j < message.path.length; ++j)\n                        object.path[j] = $root.Trace.QueryPlanNode.ResponsePathElement.toObject(message.path[j], options);\n                }\n                if (message.node != null && message.hasOwnProperty(\"node\"))\n                    object.node = $root.Trace.QueryPlanNode.toObject(message.node, options);\n                return object;\n            };\n\n            /**\n             * Converts this DeferredNode to JSON.\n             * @function toJSON\n             * @memberof Trace.QueryPlanNode.DeferredNode\n             * @instance\n             * @returns {Object.<string,*>} JSON object\n             */\n            DeferredNode.prototype.toJSON = function toJSON() {\n                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n            };\n\n            return DeferredNode;\n        })();\n\n        QueryPlanNode.DeferredNodeDepends = (function() {\n\n            /**\n             * Properties of a DeferredNodeDepends.\n             * @memberof Trace.QueryPlanNode\n             * @interface IDeferredNodeDepends\n             * @property {string|null} [id] DeferredNodeDepends id\n             * @property {string|null} [deferLabel] DeferredNodeDepends deferLabel\n             */\n\n            /**\n             * Constructs a new DeferredNodeDepends.\n             * @memberof Trace.QueryPlanNode\n             * @classdesc Represents a DeferredNodeDepends.\n             * @implements IDeferredNodeDepends\n             * @constructor\n             * @param {Trace.QueryPlanNode.IDeferredNodeDepends=} [properties] Properties to set\n             */\n            function DeferredNodeDepends(properties) {\n                if (properties)\n                    for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                        if (properties[keys[i]] != null)\n                            this[keys[i]] = properties[keys[i]];\n            }\n\n            /**\n             * DeferredNodeDepends id.\n             * @member {string} id\n             * @memberof Trace.QueryPlanNode.DeferredNodeDepends\n             * @instance\n             */\n            DeferredNodeDepends.prototype.id = \"\";\n\n            /**\n             * DeferredNodeDepends deferLabel.\n             * @member {string} deferLabel\n             * @memberof Trace.QueryPlanNode.DeferredNodeDepends\n             * @instance\n             */\n            DeferredNodeDepends.prototype.deferLabel = \"\";\n\n            /**\n             * Creates a new DeferredNodeDepends instance using the specified properties.\n             * @function create\n             * @memberof Trace.QueryPlanNode.DeferredNodeDepends\n             * @static\n             * @param {Trace.QueryPlanNode.IDeferredNodeDepends=} [properties] Properties to set\n             * @returns {Trace.QueryPlanNode.DeferredNodeDepends} DeferredNodeDepends instance\n             */\n            DeferredNodeDepends.create = function create(properties) {\n                return new DeferredNodeDepends(properties);\n            };\n\n            /**\n             * Encodes the specified DeferredNodeDepends message. Does not implicitly {@link Trace.QueryPlanNode.DeferredNodeDepends.verify|verify} messages.\n             * @function encode\n             * @memberof Trace.QueryPlanNode.DeferredNodeDepends\n             * @static\n             * @param {Trace.QueryPlanNode.IDeferredNodeDepends} message DeferredNodeDepends message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            DeferredNodeDepends.encode = function encode(message, writer) {\n                if (!writer)\n                    writer = $Writer.create();\n                if (message.id != null && Object.hasOwnProperty.call(message, \"id\"))\n                    writer.uint32(/* id 1, wireType 2 =*/10).string(message.id);\n                if (message.deferLabel != null && Object.hasOwnProperty.call(message, \"deferLabel\"))\n                    writer.uint32(/* id 2, wireType 2 =*/18).string(message.deferLabel);\n                return writer;\n            };\n\n            /**\n             * Encodes the specified DeferredNodeDepends message, length delimited. Does not implicitly {@link Trace.QueryPlanNode.DeferredNodeDepends.verify|verify} messages.\n             * @function encodeDelimited\n             * @memberof Trace.QueryPlanNode.DeferredNodeDepends\n             * @static\n             * @param {Trace.QueryPlanNode.IDeferredNodeDepends} message DeferredNodeDepends message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            DeferredNodeDepends.encodeDelimited = function encodeDelimited(message, writer) {\n                return this.encode(message, writer).ldelim();\n            };\n\n            /**\n             * Decodes a DeferredNodeDepends message from the specified reader or buffer.\n             * @function decode\n             * @memberof Trace.QueryPlanNode.DeferredNodeDepends\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @param {number} [length] Message length if known beforehand\n             * @returns {Trace.QueryPlanNode.DeferredNodeDepends} DeferredNodeDepends\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            DeferredNodeDepends.decode = function decode(reader, length) {\n                if (!(reader instanceof $Reader))\n                    reader = $Reader.create(reader);\n                var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.QueryPlanNode.DeferredNodeDepends();\n                while (reader.pos < end) {\n                    var tag = reader.uint32();\n                    switch (tag >>> 3) {\n                    case 1:\n                        message.id = reader.string();\n                        break;\n                    case 2:\n                        message.deferLabel = reader.string();\n                        break;\n                    default:\n                        reader.skipType(tag & 7);\n                        break;\n                    }\n                }\n                return message;\n            };\n\n            /**\n             * Decodes a DeferredNodeDepends message from the specified reader or buffer, length delimited.\n             * @function decodeDelimited\n             * @memberof Trace.QueryPlanNode.DeferredNodeDepends\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @returns {Trace.QueryPlanNode.DeferredNodeDepends} DeferredNodeDepends\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            DeferredNodeDepends.decodeDelimited = function decodeDelimited(reader) {\n                if (!(reader instanceof $Reader))\n                    reader = new $Reader(reader);\n                return this.decode(reader, reader.uint32());\n            };\n\n            /**\n             * Verifies a DeferredNodeDepends message.\n             * @function verify\n             * @memberof Trace.QueryPlanNode.DeferredNodeDepends\n             * @static\n             * @param {Object.<string,*>} message Plain object to verify\n             * @returns {string|null} `null` if valid, otherwise the reason why it is not\n             */\n            DeferredNodeDepends.verify = function verify(message) {\n                if (typeof message !== \"object\" || message === null)\n                    return \"object expected\";\n                if (message.id != null && message.hasOwnProperty(\"id\"))\n                    if (!$util.isString(message.id))\n                        return \"id: string expected\";\n                if (message.deferLabel != null && message.hasOwnProperty(\"deferLabel\"))\n                    if (!$util.isString(message.deferLabel))\n                        return \"deferLabel: string expected\";\n                return null;\n            };\n\n            /**\n             * Creates a plain object from a DeferredNodeDepends message. Also converts values to other types if specified.\n             * @function toObject\n             * @memberof Trace.QueryPlanNode.DeferredNodeDepends\n             * @static\n             * @param {Trace.QueryPlanNode.DeferredNodeDepends} message DeferredNodeDepends\n             * @param {$protobuf.IConversionOptions} [options] Conversion options\n             * @returns {Object.<string,*>} Plain object\n             */\n            DeferredNodeDepends.toObject = function toObject(message, options) {\n                if (!options)\n                    options = {};\n                var object = {};\n                if (options.defaults) {\n                    object.id = \"\";\n                    object.deferLabel = \"\";\n                }\n                if (message.id != null && message.hasOwnProperty(\"id\"))\n                    object.id = message.id;\n                if (message.deferLabel != null && message.hasOwnProperty(\"deferLabel\"))\n                    object.deferLabel = message.deferLabel;\n                return object;\n            };\n\n            /**\n             * Converts this DeferredNodeDepends to JSON.\n             * @function toJSON\n             * @memberof Trace.QueryPlanNode.DeferredNodeDepends\n             * @instance\n             * @returns {Object.<string,*>} JSON object\n             */\n            DeferredNodeDepends.prototype.toJSON = function toJSON() {\n                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n            };\n\n            return DeferredNodeDepends;\n        })();\n\n        QueryPlanNode.ResponsePathElement = (function() {\n\n            /**\n             * Properties of a ResponsePathElement.\n             * @memberof Trace.QueryPlanNode\n             * @interface IResponsePathElement\n             * @property {string|null} [fieldName] ResponsePathElement fieldName\n             * @property {number|null} [index] ResponsePathElement index\n             */\n\n            /**\n             * Constructs a new ResponsePathElement.\n             * @memberof Trace.QueryPlanNode\n             * @classdesc Represents a ResponsePathElement.\n             * @implements IResponsePathElement\n             * @constructor\n             * @param {Trace.QueryPlanNode.IResponsePathElement=} [properties] Properties to set\n             */\n            function ResponsePathElement(properties) {\n                if (properties)\n                    for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                        if (properties[keys[i]] != null)\n                            this[keys[i]] = properties[keys[i]];\n            }\n\n            /**\n             * ResponsePathElement fieldName.\n             * @member {string} fieldName\n             * @memberof Trace.QueryPlanNode.ResponsePathElement\n             * @instance\n             */\n            ResponsePathElement.prototype.fieldName = \"\";\n\n            /**\n             * ResponsePathElement index.\n             * @member {number} index\n             * @memberof Trace.QueryPlanNode.ResponsePathElement\n             * @instance\n             */\n            ResponsePathElement.prototype.index = 0;\n\n            // OneOf field names bound to virtual getters and setters\n            var $oneOfFields;\n\n            /**\n             * ResponsePathElement id.\n             * @member {\"fieldName\"|\"index\"|undefined} id\n             * @memberof Trace.QueryPlanNode.ResponsePathElement\n             * @instance\n             */\n            Object.defineProperty(ResponsePathElement.prototype, \"id\", {\n                get: $util.oneOfGetter($oneOfFields = [\"fieldName\", \"index\"]),\n                set: $util.oneOfSetter($oneOfFields)\n            });\n\n            /**\n             * Creates a new ResponsePathElement instance using the specified properties.\n             * @function create\n             * @memberof Trace.QueryPlanNode.ResponsePathElement\n             * @static\n             * @param {Trace.QueryPlanNode.IResponsePathElement=} [properties] Properties to set\n             * @returns {Trace.QueryPlanNode.ResponsePathElement} ResponsePathElement instance\n             */\n            ResponsePathElement.create = function create(properties) {\n                return new ResponsePathElement(properties);\n            };\n\n            /**\n             * Encodes the specified ResponsePathElement message. Does not implicitly {@link Trace.QueryPlanNode.ResponsePathElement.verify|verify} messages.\n             * @function encode\n             * @memberof Trace.QueryPlanNode.ResponsePathElement\n             * @static\n             * @param {Trace.QueryPlanNode.IResponsePathElement} message ResponsePathElement message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            ResponsePathElement.encode = function encode(message, writer) {\n                if (!writer)\n                    writer = $Writer.create();\n                if (message.fieldName != null && Object.hasOwnProperty.call(message, \"fieldName\"))\n                    writer.uint32(/* id 1, wireType 2 =*/10).string(message.fieldName);\n                if (message.index != null && Object.hasOwnProperty.call(message, \"index\"))\n                    writer.uint32(/* id 2, wireType 0 =*/16).uint32(message.index);\n                return writer;\n            };\n\n            /**\n             * Encodes the specified ResponsePathElement message, length delimited. Does not implicitly {@link Trace.QueryPlanNode.ResponsePathElement.verify|verify} messages.\n             * @function encodeDelimited\n             * @memberof Trace.QueryPlanNode.ResponsePathElement\n             * @static\n             * @param {Trace.QueryPlanNode.IResponsePathElement} message ResponsePathElement message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            ResponsePathElement.encodeDelimited = function encodeDelimited(message, writer) {\n                return this.encode(message, writer).ldelim();\n            };\n\n            /**\n             * Decodes a ResponsePathElement message from the specified reader or buffer.\n             * @function decode\n             * @memberof Trace.QueryPlanNode.ResponsePathElement\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @param {number} [length] Message length if known beforehand\n             * @returns {Trace.QueryPlanNode.ResponsePathElement} ResponsePathElement\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            ResponsePathElement.decode = function decode(reader, length) {\n                if (!(reader instanceof $Reader))\n                    reader = $Reader.create(reader);\n                var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Trace.QueryPlanNode.ResponsePathElement();\n                while (reader.pos < end) {\n                    var tag = reader.uint32();\n                    switch (tag >>> 3) {\n                    case 1:\n                        message.fieldName = reader.string();\n                        break;\n                    case 2:\n                        message.index = reader.uint32();\n                        break;\n                    default:\n                        reader.skipType(tag & 7);\n                        break;\n                    }\n                }\n                return message;\n            };\n\n            /**\n             * Decodes a ResponsePathElement message from the specified reader or buffer, length delimited.\n             * @function decodeDelimited\n             * @memberof Trace.QueryPlanNode.ResponsePathElement\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @returns {Trace.QueryPlanNode.ResponsePathElement} ResponsePathElement\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            ResponsePathElement.decodeDelimited = function decodeDelimited(reader) {\n                if (!(reader instanceof $Reader))\n                    reader = new $Reader(reader);\n                return this.decode(reader, reader.uint32());\n            };\n\n            /**\n             * Verifies a ResponsePathElement message.\n             * @function verify\n             * @memberof Trace.QueryPlanNode.ResponsePathElement\n             * @static\n             * @param {Object.<string,*>} message Plain object to verify\n             * @returns {string|null} `null` if valid, otherwise the reason why it is not\n             */\n            ResponsePathElement.verify = function verify(message) {\n                if (typeof message !== \"object\" || message === null)\n                    return \"object expected\";\n                var properties = {};\n                if (message.fieldName != null && message.hasOwnProperty(\"fieldName\")) {\n                    properties.id = 1;\n                    if (!$util.isString(message.fieldName))\n                        return \"fieldName: string expected\";\n                }\n                if (message.index != null && message.hasOwnProperty(\"index\")) {\n                    if (properties.id === 1)\n                        return \"id: multiple values\";\n                    properties.id = 1;\n                    if (!$util.isInteger(message.index))\n                        return \"index: integer expected\";\n                }\n                return null;\n            };\n\n            /**\n             * Creates a plain object from a ResponsePathElement message. Also converts values to other types if specified.\n             * @function toObject\n             * @memberof Trace.QueryPlanNode.ResponsePathElement\n             * @static\n             * @param {Trace.QueryPlanNode.ResponsePathElement} message ResponsePathElement\n             * @param {$protobuf.IConversionOptions} [options] Conversion options\n             * @returns {Object.<string,*>} Plain object\n             */\n            ResponsePathElement.toObject = function toObject(message, options) {\n                if (!options)\n                    options = {};\n                var object = {};\n                if (message.fieldName != null && message.hasOwnProperty(\"fieldName\")) {\n                    object.fieldName = message.fieldName;\n                    if (options.oneofs)\n                        object.id = \"fieldName\";\n                }\n                if (message.index != null && message.hasOwnProperty(\"index\")) {\n                    object.index = message.index;\n                    if (options.oneofs)\n                        object.id = \"index\";\n                }\n                return object;\n            };\n\n            /**\n             * Converts this ResponsePathElement to JSON.\n             * @function toJSON\n             * @memberof Trace.QueryPlanNode.ResponsePathElement\n             * @instance\n             * @returns {Object.<string,*>} JSON object\n             */\n            ResponsePathElement.prototype.toJSON = function toJSON() {\n                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n            };\n\n            return ResponsePathElement;\n        })();\n\n        return QueryPlanNode;\n    })();\n\n    return Trace;\n})();\n\n$root.ReportHeader = (function() {\n\n    /**\n     * Properties of a ReportHeader.\n     * @exports IReportHeader\n     * @interface IReportHeader\n     * @property {string|null} [graphRef] ReportHeader graphRef\n     * @property {string|null} [hostname] ReportHeader hostname\n     * @property {string|null} [agentVersion] ReportHeader agentVersion\n     * @property {string|null} [serviceVersion] ReportHeader serviceVersion\n     * @property {string|null} [runtimeVersion] ReportHeader runtimeVersion\n     * @property {string|null} [uname] ReportHeader uname\n     * @property {string|null} [executableSchemaId] ReportHeader executableSchemaId\n     */\n\n    /**\n     * Constructs a new ReportHeader.\n     * @exports ReportHeader\n     * @classdesc Represents a ReportHeader.\n     * @implements IReportHeader\n     * @constructor\n     * @param {IReportHeader=} [properties] Properties to set\n     */\n    function ReportHeader(properties) {\n        if (properties)\n            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * ReportHeader graphRef.\n     * @member {string} graphRef\n     * @memberof ReportHeader\n     * @instance\n     */\n    ReportHeader.prototype.graphRef = \"\";\n\n    /**\n     * ReportHeader hostname.\n     * @member {string} hostname\n     * @memberof ReportHeader\n     * @instance\n     */\n    ReportHeader.prototype.hostname = \"\";\n\n    /**\n     * ReportHeader agentVersion.\n     * @member {string} agentVersion\n     * @memberof ReportHeader\n     * @instance\n     */\n    ReportHeader.prototype.agentVersion = \"\";\n\n    /**\n     * ReportHeader serviceVersion.\n     * @member {string} serviceVersion\n     * @memberof ReportHeader\n     * @instance\n     */\n    ReportHeader.prototype.serviceVersion = \"\";\n\n    /**\n     * ReportHeader runtimeVersion.\n     * @member {string} runtimeVersion\n     * @memberof ReportHeader\n     * @instance\n     */\n    ReportHeader.prototype.runtimeVersion = \"\";\n\n    /**\n     * ReportHeader uname.\n     * @member {string} uname\n     * @memberof ReportHeader\n     * @instance\n     */\n    ReportHeader.prototype.uname = \"\";\n\n    /**\n     * ReportHeader executableSchemaId.\n     * @member {string} executableSchemaId\n     * @memberof ReportHeader\n     * @instance\n     */\n    ReportHeader.prototype.executableSchemaId = \"\";\n\n    /**\n     * Creates a new ReportHeader instance using the specified properties.\n     * @function create\n     * @memberof ReportHeader\n     * @static\n     * @param {IReportHeader=} [properties] Properties to set\n     * @returns {ReportHeader} ReportHeader instance\n     */\n    ReportHeader.create = function create(properties) {\n        return new ReportHeader(properties);\n    };\n\n    /**\n     * Encodes the specified ReportHeader message. Does not implicitly {@link ReportHeader.verify|verify} messages.\n     * @function encode\n     * @memberof ReportHeader\n     * @static\n     * @param {IReportHeader} message ReportHeader message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    ReportHeader.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.hostname != null && Object.hasOwnProperty.call(message, \"hostname\"))\n            writer.uint32(/* id 5, wireType 2 =*/42).string(message.hostname);\n        if (message.agentVersion != null && Object.hasOwnProperty.call(message, \"agentVersion\"))\n            writer.uint32(/* id 6, wireType 2 =*/50).string(message.agentVersion);\n        if (message.serviceVersion != null && Object.hasOwnProperty.call(message, \"serviceVersion\"))\n            writer.uint32(/* id 7, wireType 2 =*/58).string(message.serviceVersion);\n        if (message.runtimeVersion != null && Object.hasOwnProperty.call(message, \"runtimeVersion\"))\n            writer.uint32(/* id 8, wireType 2 =*/66).string(message.runtimeVersion);\n        if (message.uname != null && Object.hasOwnProperty.call(message, \"uname\"))\n            writer.uint32(/* id 9, wireType 2 =*/74).string(message.uname);\n        if (message.executableSchemaId != null && Object.hasOwnProperty.call(message, \"executableSchemaId\"))\n            writer.uint32(/* id 11, wireType 2 =*/90).string(message.executableSchemaId);\n        if (message.graphRef != null && Object.hasOwnProperty.call(message, \"graphRef\"))\n            writer.uint32(/* id 12, wireType 2 =*/98).string(message.graphRef);\n        return writer;\n    };\n\n    /**\n     * Encodes the specified ReportHeader message, length delimited. Does not implicitly {@link ReportHeader.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof ReportHeader\n     * @static\n     * @param {IReportHeader} message ReportHeader message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    ReportHeader.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a ReportHeader message from the specified reader or buffer.\n     * @function decode\n     * @memberof ReportHeader\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {ReportHeader} ReportHeader\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    ReportHeader.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ReportHeader();\n        while (reader.pos < end) {\n            var tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 12:\n                message.graphRef = reader.string();\n                break;\n            case 5:\n                message.hostname = reader.string();\n                break;\n            case 6:\n                message.agentVersion = reader.string();\n                break;\n            case 7:\n                message.serviceVersion = reader.string();\n                break;\n            case 8:\n                message.runtimeVersion = reader.string();\n                break;\n            case 9:\n                message.uname = reader.string();\n                break;\n            case 11:\n                message.executableSchemaId = reader.string();\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a ReportHeader message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof ReportHeader\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {ReportHeader} ReportHeader\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    ReportHeader.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a ReportHeader message.\n     * @function verify\n     * @memberof ReportHeader\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    ReportHeader.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.graphRef != null && message.hasOwnProperty(\"graphRef\"))\n            if (!$util.isString(message.graphRef))\n                return \"graphRef: string expected\";\n        if (message.hostname != null && message.hasOwnProperty(\"hostname\"))\n            if (!$util.isString(message.hostname))\n                return \"hostname: string expected\";\n        if (message.agentVersion != null && message.hasOwnProperty(\"agentVersion\"))\n            if (!$util.isString(message.agentVersion))\n                return \"agentVersion: string expected\";\n        if (message.serviceVersion != null && message.hasOwnProperty(\"serviceVersion\"))\n            if (!$util.isString(message.serviceVersion))\n                return \"serviceVersion: string expected\";\n        if (message.runtimeVersion != null && message.hasOwnProperty(\"runtimeVersion\"))\n            if (!$util.isString(message.runtimeVersion))\n                return \"runtimeVersion: string expected\";\n        if (message.uname != null && message.hasOwnProperty(\"uname\"))\n            if (!$util.isString(message.uname))\n                return \"uname: string expected\";\n        if (message.executableSchemaId != null && message.hasOwnProperty(\"executableSchemaId\"))\n            if (!$util.isString(message.executableSchemaId))\n                return \"executableSchemaId: string expected\";\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a ReportHeader message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof ReportHeader\n     * @static\n     * @param {ReportHeader} message ReportHeader\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    ReportHeader.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        var object = {};\n        if (options.defaults) {\n            object.hostname = \"\";\n            object.agentVersion = \"\";\n            object.serviceVersion = \"\";\n            object.runtimeVersion = \"\";\n            object.uname = \"\";\n            object.executableSchemaId = \"\";\n            object.graphRef = \"\";\n        }\n        if (message.hostname != null && message.hasOwnProperty(\"hostname\"))\n            object.hostname = message.hostname;\n        if (message.agentVersion != null && message.hasOwnProperty(\"agentVersion\"))\n            object.agentVersion = message.agentVersion;\n        if (message.serviceVersion != null && message.hasOwnProperty(\"serviceVersion\"))\n            object.serviceVersion = message.serviceVersion;\n        if (message.runtimeVersion != null && message.hasOwnProperty(\"runtimeVersion\"))\n            object.runtimeVersion = message.runtimeVersion;\n        if (message.uname != null && message.hasOwnProperty(\"uname\"))\n            object.uname = message.uname;\n        if (message.executableSchemaId != null && message.hasOwnProperty(\"executableSchemaId\"))\n            object.executableSchemaId = message.executableSchemaId;\n        if (message.graphRef != null && message.hasOwnProperty(\"graphRef\"))\n            object.graphRef = message.graphRef;\n        return object;\n    };\n\n    /**\n     * Converts this ReportHeader to JSON.\n     * @function toJSON\n     * @memberof ReportHeader\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    ReportHeader.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    return ReportHeader;\n})();\n\n$root.PathErrorStats = (function() {\n\n    /**\n     * Properties of a PathErrorStats.\n     * @exports IPathErrorStats\n     * @interface IPathErrorStats\n     * @property {Object.<string,IPathErrorStats>|null} [children] PathErrorStats children\n     * @property {number|null} [errorsCount] PathErrorStats errorsCount\n     * @property {number|null} [requestsWithErrorsCount] PathErrorStats requestsWithErrorsCount\n     */\n\n    /**\n     * Constructs a new PathErrorStats.\n     * @exports PathErrorStats\n     * @classdesc Represents a PathErrorStats.\n     * @implements IPathErrorStats\n     * @constructor\n     * @param {IPathErrorStats=} [properties] Properties to set\n     */\n    function PathErrorStats(properties) {\n        this.children = {};\n        if (properties)\n            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * PathErrorStats children.\n     * @member {Object.<string,IPathErrorStats>} children\n     * @memberof PathErrorStats\n     * @instance\n     */\n    PathErrorStats.prototype.children = $util.emptyObject;\n\n    /**\n     * PathErrorStats errorsCount.\n     * @member {number} errorsCount\n     * @memberof PathErrorStats\n     * @instance\n     */\n    PathErrorStats.prototype.errorsCount = 0;\n\n    /**\n     * PathErrorStats requestsWithErrorsCount.\n     * @member {number} requestsWithErrorsCount\n     * @memberof PathErrorStats\n     * @instance\n     */\n    PathErrorStats.prototype.requestsWithErrorsCount = 0;\n\n    /**\n     * Creates a new PathErrorStats instance using the specified properties.\n     * @function create\n     * @memberof PathErrorStats\n     * @static\n     * @param {IPathErrorStats=} [properties] Properties to set\n     * @returns {PathErrorStats} PathErrorStats instance\n     */\n    PathErrorStats.create = function create(properties) {\n        return new PathErrorStats(properties);\n    };\n\n    /**\n     * Encodes the specified PathErrorStats message. Does not implicitly {@link PathErrorStats.verify|verify} messages.\n     * @function encode\n     * @memberof PathErrorStats\n     * @static\n     * @param {IPathErrorStats} message PathErrorStats message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    PathErrorStats.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.children != null && Object.hasOwnProperty.call(message, \"children\"))\n            for (var keys = Object.keys(message.children), i = 0; i < keys.length; ++i) {\n                writer.uint32(/* id 1, wireType 2 =*/10).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]);\n                $root.PathErrorStats.encode(message.children[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim();\n            }\n        if (message.errorsCount != null && Object.hasOwnProperty.call(message, \"errorsCount\"))\n            writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.errorsCount);\n        if (message.requestsWithErrorsCount != null && Object.hasOwnProperty.call(message, \"requestsWithErrorsCount\"))\n            writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.requestsWithErrorsCount);\n        return writer;\n    };\n\n    /**\n     * Encodes the specified PathErrorStats message, length delimited. Does not implicitly {@link PathErrorStats.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof PathErrorStats\n     * @static\n     * @param {IPathErrorStats} message PathErrorStats message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    PathErrorStats.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a PathErrorStats message from the specified reader or buffer.\n     * @function decode\n     * @memberof PathErrorStats\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {PathErrorStats} PathErrorStats\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    PathErrorStats.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.PathErrorStats(), key;\n        while (reader.pos < end) {\n            var tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 1:\n                reader.skip().pos++;\n                if (message.children === $util.emptyObject)\n                    message.children = {};\n                key = reader.string();\n                reader.pos++;\n                message.children[key] = $root.PathErrorStats.decode(reader, reader.uint32());\n                break;\n            case 4:\n                message.errorsCount = reader.uint64();\n                break;\n            case 5:\n                message.requestsWithErrorsCount = reader.uint64();\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a PathErrorStats message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof PathErrorStats\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {PathErrorStats} PathErrorStats\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    PathErrorStats.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a PathErrorStats message.\n     * @function verify\n     * @memberof PathErrorStats\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    PathErrorStats.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.children != null && message.hasOwnProperty(\"children\")) {\n            if (!$util.isObject(message.children))\n                return \"children: object expected\";\n            var key = Object.keys(message.children);\n            for (var i = 0; i < key.length; ++i) {\n                var error = $root.PathErrorStats.verify(message.children[key[i]]);\n                if (error)\n                    return \"children.\" + error;\n            }\n        }\n        if (message.errorsCount != null && message.hasOwnProperty(\"errorsCount\"))\n            if (!$util.isInteger(message.errorsCount) && !(message.errorsCount && $util.isInteger(message.errorsCount.low) && $util.isInteger(message.errorsCount.high)))\n                return \"errorsCount: integer|Long expected\";\n        if (message.requestsWithErrorsCount != null && message.hasOwnProperty(\"requestsWithErrorsCount\"))\n            if (!$util.isInteger(message.requestsWithErrorsCount) && !(message.requestsWithErrorsCount && $util.isInteger(message.requestsWithErrorsCount.low) && $util.isInteger(message.requestsWithErrorsCount.high)))\n                return \"requestsWithErrorsCount: integer|Long expected\";\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a PathErrorStats message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof PathErrorStats\n     * @static\n     * @param {PathErrorStats} message PathErrorStats\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    PathErrorStats.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        var object = {};\n        if (options.objects || options.defaults)\n            object.children = {};\n        if (options.defaults) {\n            object.errorsCount = 0;\n            object.requestsWithErrorsCount = 0;\n        }\n        var keys2;\n        if (message.children && (keys2 = Object.keys(message.children)).length) {\n            object.children = {};\n            for (var j = 0; j < keys2.length; ++j)\n                object.children[keys2[j]] = $root.PathErrorStats.toObject(message.children[keys2[j]], options);\n        }\n        if (message.errorsCount != null && message.hasOwnProperty(\"errorsCount\"))\n            if (typeof message.errorsCount === \"number\")\n                object.errorsCount = options.longs === String ? String(message.errorsCount) : message.errorsCount;\n            else\n                object.errorsCount = options.longs === String ? $util.Long.prototype.toString.call(message.errorsCount) : options.longs === Number ? new $util.LongBits(message.errorsCount.low >>> 0, message.errorsCount.high >>> 0).toNumber(true) : message.errorsCount;\n        if (message.requestsWithErrorsCount != null && message.hasOwnProperty(\"requestsWithErrorsCount\"))\n            if (typeof message.requestsWithErrorsCount === \"number\")\n                object.requestsWithErrorsCount = options.longs === String ? String(message.requestsWithErrorsCount) : message.requestsWithErrorsCount;\n            else\n                object.requestsWithErrorsCount = options.longs === String ? $util.Long.prototype.toString.call(message.requestsWithErrorsCount) : options.longs === Number ? new $util.LongBits(message.requestsWithErrorsCount.low >>> 0, message.requestsWithErrorsCount.high >>> 0).toNumber(true) : message.requestsWithErrorsCount;\n        return object;\n    };\n\n    /**\n     * Converts this PathErrorStats to JSON.\n     * @function toJSON\n     * @memberof PathErrorStats\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    PathErrorStats.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    return PathErrorStats;\n})();\n\n$root.QueryLatencyStats = (function() {\n\n    /**\n     * Properties of a QueryLatencyStats.\n     * @exports IQueryLatencyStats\n     * @interface IQueryLatencyStats\n     * @property {$protobuf.ToArray.<number>|Array.<number>|null} [latencyCount] QueryLatencyStats latencyCount\n     * @property {number|null} [requestCount] QueryLatencyStats requestCount\n     * @property {number|null} [cacheHits] QueryLatencyStats cacheHits\n     * @property {number|null} [persistedQueryHits] QueryLatencyStats persistedQueryHits\n     * @property {number|null} [persistedQueryMisses] QueryLatencyStats persistedQueryMisses\n     * @property {$protobuf.ToArray.<number>|Array.<number>|null} [cacheLatencyCount] QueryLatencyStats cacheLatencyCount\n     * @property {IPathErrorStats|null} [rootErrorStats] QueryLatencyStats rootErrorStats\n     * @property {number|null} [requestsWithErrorsCount] QueryLatencyStats requestsWithErrorsCount\n     * @property {$protobuf.ToArray.<number>|Array.<number>|null} [publicCacheTtlCount] QueryLatencyStats publicCacheTtlCount\n     * @property {$protobuf.ToArray.<number>|Array.<number>|null} [privateCacheTtlCount] QueryLatencyStats privateCacheTtlCount\n     * @property {number|null} [registeredOperationCount] QueryLatencyStats registeredOperationCount\n     * @property {number|null} [forbiddenOperationCount] QueryLatencyStats forbiddenOperationCount\n     * @property {number|null} [requestsWithoutFieldInstrumentation] QueryLatencyStats requestsWithoutFieldInstrumentation\n     */\n\n    /**\n     * Constructs a new QueryLatencyStats.\n     * @exports QueryLatencyStats\n     * @classdesc Represents a QueryLatencyStats.\n     * @implements IQueryLatencyStats\n     * @constructor\n     * @param {IQueryLatencyStats=} [properties] Properties to set\n     */\n    function QueryLatencyStats(properties) {\n        this.latencyCount = [];\n        this.cacheLatencyCount = [];\n        this.publicCacheTtlCount = [];\n        this.privateCacheTtlCount = [];\n        if (properties)\n            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * QueryLatencyStats latencyCount.\n     * @member {Array.<number>} latencyCount\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.latencyCount = $util.emptyArray;\n\n    /**\n     * QueryLatencyStats requestCount.\n     * @member {number} requestCount\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.requestCount = 0;\n\n    /**\n     * QueryLatencyStats cacheHits.\n     * @member {number} cacheHits\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.cacheHits = 0;\n\n    /**\n     * QueryLatencyStats persistedQueryHits.\n     * @member {number} persistedQueryHits\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.persistedQueryHits = 0;\n\n    /**\n     * QueryLatencyStats persistedQueryMisses.\n     * @member {number} persistedQueryMisses\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.persistedQueryMisses = 0;\n\n    /**\n     * QueryLatencyStats cacheLatencyCount.\n     * @member {Array.<number>} cacheLatencyCount\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.cacheLatencyCount = $util.emptyArray;\n\n    /**\n     * QueryLatencyStats rootErrorStats.\n     * @member {IPathErrorStats|null|undefined} rootErrorStats\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.rootErrorStats = null;\n\n    /**\n     * QueryLatencyStats requestsWithErrorsCount.\n     * @member {number} requestsWithErrorsCount\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.requestsWithErrorsCount = 0;\n\n    /**\n     * QueryLatencyStats publicCacheTtlCount.\n     * @member {Array.<number>} publicCacheTtlCount\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.publicCacheTtlCount = $util.emptyArray;\n\n    /**\n     * QueryLatencyStats privateCacheTtlCount.\n     * @member {Array.<number>} privateCacheTtlCount\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.privateCacheTtlCount = $util.emptyArray;\n\n    /**\n     * QueryLatencyStats registeredOperationCount.\n     * @member {number} registeredOperationCount\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.registeredOperationCount = 0;\n\n    /**\n     * QueryLatencyStats forbiddenOperationCount.\n     * @member {number} forbiddenOperationCount\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.forbiddenOperationCount = 0;\n\n    /**\n     * QueryLatencyStats requestsWithoutFieldInstrumentation.\n     * @member {number} requestsWithoutFieldInstrumentation\n     * @memberof QueryLatencyStats\n     * @instance\n     */\n    QueryLatencyStats.prototype.requestsWithoutFieldInstrumentation = 0;\n\n    /**\n     * Creates a new QueryLatencyStats instance using the specified properties.\n     * @function create\n     * @memberof QueryLatencyStats\n     * @static\n     * @param {IQueryLatencyStats=} [properties] Properties to set\n     * @returns {QueryLatencyStats} QueryLatencyStats instance\n     */\n    QueryLatencyStats.create = function create(properties) {\n        return new QueryLatencyStats(properties);\n    };\n\n    /**\n     * Encodes the specified QueryLatencyStats message. Does not implicitly {@link QueryLatencyStats.verify|verify} messages.\n     * @function encode\n     * @memberof QueryLatencyStats\n     * @static\n     * @param {IQueryLatencyStats} message QueryLatencyStats message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    QueryLatencyStats.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.requestCount != null && Object.hasOwnProperty.call(message, \"requestCount\"))\n            writer.uint32(/* id 2, wireType 0 =*/16).uint64(message.requestCount);\n        if (message.cacheHits != null && Object.hasOwnProperty.call(message, \"cacheHits\"))\n            writer.uint32(/* id 3, wireType 0 =*/24).uint64(message.cacheHits);\n        if (message.persistedQueryHits != null && Object.hasOwnProperty.call(message, \"persistedQueryHits\"))\n            writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.persistedQueryHits);\n        if (message.persistedQueryMisses != null && Object.hasOwnProperty.call(message, \"persistedQueryMisses\"))\n            writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.persistedQueryMisses);\n        if (message.rootErrorStats != null && Object.hasOwnProperty.call(message, \"rootErrorStats\"))\n            $root.PathErrorStats.encode(message.rootErrorStats, writer.uint32(/* id 7, wireType 2 =*/58).fork()).ldelim();\n        if (message.requestsWithErrorsCount != null && Object.hasOwnProperty.call(message, \"requestsWithErrorsCount\"))\n            writer.uint32(/* id 8, wireType 0 =*/64).uint64(message.requestsWithErrorsCount);\n        if (message.registeredOperationCount != null && Object.hasOwnProperty.call(message, \"registeredOperationCount\"))\n            writer.uint32(/* id 11, wireType 0 =*/88).uint64(message.registeredOperationCount);\n        if (message.forbiddenOperationCount != null && Object.hasOwnProperty.call(message, \"forbiddenOperationCount\"))\n            writer.uint32(/* id 12, wireType 0 =*/96).uint64(message.forbiddenOperationCount);\n        var array13;\n        if (message.latencyCount != null && message.latencyCount.toArray)\n            array13 = message.latencyCount.toArray();\n        else\n            array13 = message.latencyCount;\n        if (array13 != null && array13.length) {\n            writer.uint32(/* id 13, wireType 2 =*/106).fork();\n            for (var i = 0; i < array13.length; ++i)\n                writer.sint64(array13[i]);\n            writer.ldelim();\n        }\n        var array14;\n        if (message.cacheLatencyCount != null && message.cacheLatencyCount.toArray)\n            array14 = message.cacheLatencyCount.toArray();\n        else\n            array14 = message.cacheLatencyCount;\n        if (array14 != null && array14.length) {\n            writer.uint32(/* id 14, wireType 2 =*/114).fork();\n            for (var i = 0; i < array14.length; ++i)\n                writer.sint64(array14[i]);\n            writer.ldelim();\n        }\n        var array15;\n        if (message.publicCacheTtlCount != null && message.publicCacheTtlCount.toArray)\n            array15 = message.publicCacheTtlCount.toArray();\n        else\n            array15 = message.publicCacheTtlCount;\n        if (array15 != null && array15.length) {\n            writer.uint32(/* id 15, wireType 2 =*/122).fork();\n            for (var i = 0; i < array15.length; ++i)\n                writer.sint64(array15[i]);\n            writer.ldelim();\n        }\n        var array16;\n        if (message.privateCacheTtlCount != null && message.privateCacheTtlCount.toArray)\n            array16 = message.privateCacheTtlCount.toArray();\n        else\n            array16 = message.privateCacheTtlCount;\n        if (array16 != null && array16.length) {\n            writer.uint32(/* id 16, wireType 2 =*/130).fork();\n            for (var i = 0; i < array16.length; ++i)\n                writer.sint64(array16[i]);\n            writer.ldelim();\n        }\n        if (message.requestsWithoutFieldInstrumentation != null && Object.hasOwnProperty.call(message, \"requestsWithoutFieldInstrumentation\"))\n            writer.uint32(/* id 17, wireType 0 =*/136).uint64(message.requestsWithoutFieldInstrumentation);\n        return writer;\n    };\n\n    /**\n     * Encodes the specified QueryLatencyStats message, length delimited. Does not implicitly {@link QueryLatencyStats.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof QueryLatencyStats\n     * @static\n     * @param {IQueryLatencyStats} message QueryLatencyStats message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    QueryLatencyStats.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a QueryLatencyStats message from the specified reader or buffer.\n     * @function decode\n     * @memberof QueryLatencyStats\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {QueryLatencyStats} QueryLatencyStats\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    QueryLatencyStats.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.QueryLatencyStats();\n        while (reader.pos < end) {\n            var tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 13:\n                if (!(message.latencyCount && message.latencyCount.length))\n                    message.latencyCount = [];\n                if ((tag & 7) === 2) {\n                    var end2 = reader.uint32() + reader.pos;\n                    while (reader.pos < end2)\n                        message.latencyCount.push(reader.sint64());\n                } else\n                    message.latencyCount.push(reader.sint64());\n                break;\n            case 2:\n                message.requestCount = reader.uint64();\n                break;\n            case 3:\n                message.cacheHits = reader.uint64();\n                break;\n            case 4:\n                message.persistedQueryHits = reader.uint64();\n                break;\n            case 5:\n                message.persistedQueryMisses = reader.uint64();\n                break;\n            case 14:\n                if (!(message.cacheLatencyCount && message.cacheLatencyCount.length))\n                    message.cacheLatencyCount = [];\n                if ((tag & 7) === 2) {\n                    var end2 = reader.uint32() + reader.pos;\n                    while (reader.pos < end2)\n                        message.cacheLatencyCount.push(reader.sint64());\n                } else\n                    message.cacheLatencyCount.push(reader.sint64());\n                break;\n            case 7:\n                message.rootErrorStats = $root.PathErrorStats.decode(reader, reader.uint32());\n                break;\n            case 8:\n                message.requestsWithErrorsCount = reader.uint64();\n                break;\n            case 15:\n                if (!(message.publicCacheTtlCount && message.publicCacheTtlCount.length))\n                    message.publicCacheTtlCount = [];\n                if ((tag & 7) === 2) {\n                    var end2 = reader.uint32() + reader.pos;\n                    while (reader.pos < end2)\n                        message.publicCacheTtlCount.push(reader.sint64());\n                } else\n                    message.publicCacheTtlCount.push(reader.sint64());\n                break;\n            case 16:\n                if (!(message.privateCacheTtlCount && message.privateCacheTtlCount.length))\n                    message.privateCacheTtlCount = [];\n                if ((tag & 7) === 2) {\n                    var end2 = reader.uint32() + reader.pos;\n                    while (reader.pos < end2)\n                        message.privateCacheTtlCount.push(reader.sint64());\n                } else\n                    message.privateCacheTtlCount.push(reader.sint64());\n                break;\n            case 11:\n                message.registeredOperationCount = reader.uint64();\n                break;\n            case 12:\n                message.forbiddenOperationCount = reader.uint64();\n                break;\n            case 17:\n                message.requestsWithoutFieldInstrumentation = reader.uint64();\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a QueryLatencyStats message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof QueryLatencyStats\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {QueryLatencyStats} QueryLatencyStats\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    QueryLatencyStats.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a QueryLatencyStats message.\n     * @function verify\n     * @memberof QueryLatencyStats\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    QueryLatencyStats.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.latencyCount != null && message.hasOwnProperty(\"latencyCount\")) {\n            var array13;\n            if (message.latencyCount != null && message.latencyCount.toArray)\n                array13 = message.latencyCount.toArray();\n            else\n                array13 = message.latencyCount;\n            if (!Array.isArray(array13))\n                return \"latencyCount: array expected\";\n            for (var i = 0; i < array13.length; ++i)\n                if (!$util.isInteger(array13[i]) && !(array13[i] && $util.isInteger(array13[i].low) && $util.isInteger(array13[i].high)))\n                    return \"latencyCount: integer|Long[] expected\";\n        }\n        if (message.requestCount != null && message.hasOwnProperty(\"requestCount\"))\n            if (!$util.isInteger(message.requestCount) && !(message.requestCount && $util.isInteger(message.requestCount.low) && $util.isInteger(message.requestCount.high)))\n                return \"requestCount: integer|Long expected\";\n        if (message.cacheHits != null && message.hasOwnProperty(\"cacheHits\"))\n            if (!$util.isInteger(message.cacheHits) && !(message.cacheHits && $util.isInteger(message.cacheHits.low) && $util.isInteger(message.cacheHits.high)))\n                return \"cacheHits: integer|Long expected\";\n        if (message.persistedQueryHits != null && message.hasOwnProperty(\"persistedQueryHits\"))\n            if (!$util.isInteger(message.persistedQueryHits) && !(message.persistedQueryHits && $util.isInteger(message.persistedQueryHits.low) && $util.isInteger(message.persistedQueryHits.high)))\n                return \"persistedQueryHits: integer|Long expected\";\n        if (message.persistedQueryMisses != null && message.hasOwnProperty(\"persistedQueryMisses\"))\n            if (!$util.isInteger(message.persistedQueryMisses) && !(message.persistedQueryMisses && $util.isInteger(message.persistedQueryMisses.low) && $util.isInteger(message.persistedQueryMisses.high)))\n                return \"persistedQueryMisses: integer|Long expected\";\n        if (message.cacheLatencyCount != null && message.hasOwnProperty(\"cacheLatencyCount\")) {\n            var array14;\n            if (message.cacheLatencyCount != null && message.cacheLatencyCount.toArray)\n                array14 = message.cacheLatencyCount.toArray();\n            else\n                array14 = message.cacheLatencyCount;\n            if (!Array.isArray(array14))\n                return \"cacheLatencyCount: array expected\";\n            for (var i = 0; i < array14.length; ++i)\n                if (!$util.isInteger(array14[i]) && !(array14[i] && $util.isInteger(array14[i].low) && $util.isInteger(array14[i].high)))\n                    return \"cacheLatencyCount: integer|Long[] expected\";\n        }\n        if (message.rootErrorStats != null && message.hasOwnProperty(\"rootErrorStats\")) {\n            var error = $root.PathErrorStats.verify(message.rootErrorStats);\n            if (error)\n                return \"rootErrorStats.\" + error;\n        }\n        if (message.requestsWithErrorsCount != null && message.hasOwnProperty(\"requestsWithErrorsCount\"))\n            if (!$util.isInteger(message.requestsWithErrorsCount) && !(message.requestsWithErrorsCount && $util.isInteger(message.requestsWithErrorsCount.low) && $util.isInteger(message.requestsWithErrorsCount.high)))\n                return \"requestsWithErrorsCount: integer|Long expected\";\n        if (message.publicCacheTtlCount != null && message.hasOwnProperty(\"publicCacheTtlCount\")) {\n            var array15;\n            if (message.publicCacheTtlCount != null && message.publicCacheTtlCount.toArray)\n                array15 = message.publicCacheTtlCount.toArray();\n            else\n                array15 = message.publicCacheTtlCount;\n            if (!Array.isArray(array15))\n                return \"publicCacheTtlCount: array expected\";\n            for (var i = 0; i < array15.length; ++i)\n                if (!$util.isInteger(array15[i]) && !(array15[i] && $util.isInteger(array15[i].low) && $util.isInteger(array15[i].high)))\n                    return \"publicCacheTtlCount: integer|Long[] expected\";\n        }\n        if (message.privateCacheTtlCount != null && message.hasOwnProperty(\"privateCacheTtlCount\")) {\n            var array16;\n            if (message.privateCacheTtlCount != null && message.privateCacheTtlCount.toArray)\n                array16 = message.privateCacheTtlCount.toArray();\n            else\n                array16 = message.privateCacheTtlCount;\n            if (!Array.isArray(array16))\n                return \"privateCacheTtlCount: array expected\";\n            for (var i = 0; i < array16.length; ++i)\n                if (!$util.isInteger(array16[i]) && !(array16[i] && $util.isInteger(array16[i].low) && $util.isInteger(array16[i].high)))\n                    return \"privateCacheTtlCount: integer|Long[] expected\";\n        }\n        if (message.registeredOperationCount != null && message.hasOwnProperty(\"registeredOperationCount\"))\n            if (!$util.isInteger(message.registeredOperationCount) && !(message.registeredOperationCount && $util.isInteger(message.registeredOperationCount.low) && $util.isInteger(message.registeredOperationCount.high)))\n                return \"registeredOperationCount: integer|Long expected\";\n        if (message.forbiddenOperationCount != null && message.hasOwnProperty(\"forbiddenOperationCount\"))\n            if (!$util.isInteger(message.forbiddenOperationCount) && !(message.forbiddenOperationCount && $util.isInteger(message.forbiddenOperationCount.low) && $util.isInteger(message.forbiddenOperationCount.high)))\n                return \"forbiddenOperationCount: integer|Long expected\";\n        if (message.requestsWithoutFieldInstrumentation != null && message.hasOwnProperty(\"requestsWithoutFieldInstrumentation\"))\n            if (!$util.isInteger(message.requestsWithoutFieldInstrumentation) && !(message.requestsWithoutFieldInstrumentation && $util.isInteger(message.requestsWithoutFieldInstrumentation.low) && $util.isInteger(message.requestsWithoutFieldInstrumentation.high)))\n                return \"requestsWithoutFieldInstrumentation: integer|Long expected\";\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a QueryLatencyStats message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof QueryLatencyStats\n     * @static\n     * @param {QueryLatencyStats} message QueryLatencyStats\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    QueryLatencyStats.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        var object = {};\n        if (options.arrays || options.defaults) {\n            object.latencyCount = [];\n            object.cacheLatencyCount = [];\n            object.publicCacheTtlCount = [];\n            object.privateCacheTtlCount = [];\n        }\n        if (options.defaults) {\n            object.requestCount = 0;\n            object.cacheHits = 0;\n            object.persistedQueryHits = 0;\n            object.persistedQueryMisses = 0;\n            object.rootErrorStats = null;\n            object.requestsWithErrorsCount = 0;\n            object.registeredOperationCount = 0;\n            object.forbiddenOperationCount = 0;\n            object.requestsWithoutFieldInstrumentation = 0;\n        }\n        if (message.requestCount != null && message.hasOwnProperty(\"requestCount\"))\n            if (typeof message.requestCount === \"number\")\n                object.requestCount = options.longs === String ? String(message.requestCount) : message.requestCount;\n            else\n                object.requestCount = options.longs === String ? $util.Long.prototype.toString.call(message.requestCount) : options.longs === Number ? new $util.LongBits(message.requestCount.low >>> 0, message.requestCount.high >>> 0).toNumber(true) : message.requestCount;\n        if (message.cacheHits != null && message.hasOwnProperty(\"cacheHits\"))\n            if (typeof message.cacheHits === \"number\")\n                object.cacheHits = options.longs === String ? String(message.cacheHits) : message.cacheHits;\n            else\n                object.cacheHits = options.longs === String ? $util.Long.prototype.toString.call(message.cacheHits) : options.longs === Number ? new $util.LongBits(message.cacheHits.low >>> 0, message.cacheHits.high >>> 0).toNumber(true) : message.cacheHits;\n        if (message.persistedQueryHits != null && message.hasOwnProperty(\"persistedQueryHits\"))\n            if (typeof message.persistedQueryHits === \"number\")\n                object.persistedQueryHits = options.longs === String ? String(message.persistedQueryHits) : message.persistedQueryHits;\n            else\n                object.persistedQueryHits = options.longs === String ? $util.Long.prototype.toString.call(message.persistedQueryHits) : options.longs === Number ? new $util.LongBits(message.persistedQueryHits.low >>> 0, message.persistedQueryHits.high >>> 0).toNumber(true) : message.persistedQueryHits;\n        if (message.persistedQueryMisses != null && message.hasOwnProperty(\"persistedQueryMisses\"))\n            if (typeof message.persistedQueryMisses === \"number\")\n                object.persistedQueryMisses = options.longs === String ? String(message.persistedQueryMisses) : message.persistedQueryMisses;\n            else\n                object.persistedQueryMisses = options.longs === String ? $util.Long.prototype.toString.call(message.persistedQueryMisses) : options.longs === Number ? new $util.LongBits(message.persistedQueryMisses.low >>> 0, message.persistedQueryMisses.high >>> 0).toNumber(true) : message.persistedQueryMisses;\n        if (message.rootErrorStats != null && message.hasOwnProperty(\"rootErrorStats\"))\n            object.rootErrorStats = $root.PathErrorStats.toObject(message.rootErrorStats, options);\n        if (message.requestsWithErrorsCount != null && message.hasOwnProperty(\"requestsWithErrorsCount\"))\n            if (typeof message.requestsWithErrorsCount === \"number\")\n                object.requestsWithErrorsCount = options.longs === String ? String(message.requestsWithErrorsCount) : message.requestsWithErrorsCount;\n            else\n                object.requestsWithErrorsCount = options.longs === String ? $util.Long.prototype.toString.call(message.requestsWithErrorsCount) : options.longs === Number ? new $util.LongBits(message.requestsWithErrorsCount.low >>> 0, message.requestsWithErrorsCount.high >>> 0).toNumber(true) : message.requestsWithErrorsCount;\n        if (message.registeredOperationCount != null && message.hasOwnProperty(\"registeredOperationCount\"))\n            if (typeof message.registeredOperationCount === \"number\")\n                object.registeredOperationCount = options.longs === String ? String(message.registeredOperationCount) : message.registeredOperationCount;\n            else\n                object.registeredOperationCount = options.longs === String ? $util.Long.prototype.toString.call(message.registeredOperationCount) : options.longs === Number ? new $util.LongBits(message.registeredOperationCount.low >>> 0, message.registeredOperationCount.high >>> 0).toNumber(true) : message.registeredOperationCount;\n        if (message.forbiddenOperationCount != null && message.hasOwnProperty(\"forbiddenOperationCount\"))\n            if (typeof message.forbiddenOperationCount === \"number\")\n                object.forbiddenOperationCount = options.longs === String ? String(message.forbiddenOperationCount) : message.forbiddenOperationCount;\n            else\n                object.forbiddenOperationCount = options.longs === String ? $util.Long.prototype.toString.call(message.forbiddenOperationCount) : options.longs === Number ? new $util.LongBits(message.forbiddenOperationCount.low >>> 0, message.forbiddenOperationCount.high >>> 0).toNumber(true) : message.forbiddenOperationCount;\n        if (message.latencyCount && message.latencyCount.length) {\n            object.latencyCount = [];\n            for (var j = 0; j < message.latencyCount.length; ++j)\n                if (typeof message.latencyCount[j] === \"number\")\n                    object.latencyCount[j] = options.longs === String ? String(message.latencyCount[j]) : message.latencyCount[j];\n                else\n                    object.latencyCount[j] = options.longs === String ? $util.Long.prototype.toString.call(message.latencyCount[j]) : options.longs === Number ? new $util.LongBits(message.latencyCount[j].low >>> 0, message.latencyCount[j].high >>> 0).toNumber() : message.latencyCount[j];\n        }\n        if (message.cacheLatencyCount && message.cacheLatencyCount.length) {\n            object.cacheLatencyCount = [];\n            for (var j = 0; j < message.cacheLatencyCount.length; ++j)\n                if (typeof message.cacheLatencyCount[j] === \"number\")\n                    object.cacheLatencyCount[j] = options.longs === String ? String(message.cacheLatencyCount[j]) : message.cacheLatencyCount[j];\n                else\n                    object.cacheLatencyCount[j] = options.longs === String ? $util.Long.prototype.toString.call(message.cacheLatencyCount[j]) : options.longs === Number ? new $util.LongBits(message.cacheLatencyCount[j].low >>> 0, message.cacheLatencyCount[j].high >>> 0).toNumber() : message.cacheLatencyCount[j];\n        }\n        if (message.publicCacheTtlCount && message.publicCacheTtlCount.length) {\n            object.publicCacheTtlCount = [];\n            for (var j = 0; j < message.publicCacheTtlCount.length; ++j)\n                if (typeof message.publicCacheTtlCount[j] === \"number\")\n                    object.publicCacheTtlCount[j] = options.longs === String ? String(message.publicCacheTtlCount[j]) : message.publicCacheTtlCount[j];\n                else\n                    object.publicCacheTtlCount[j] = options.longs === String ? $util.Long.prototype.toString.call(message.publicCacheTtlCount[j]) : options.longs === Number ? new $util.LongBits(message.publicCacheTtlCount[j].low >>> 0, message.publicCacheTtlCount[j].high >>> 0).toNumber() : message.publicCacheTtlCount[j];\n        }\n        if (message.privateCacheTtlCount && message.privateCacheTtlCount.length) {\n            object.privateCacheTtlCount = [];\n            for (var j = 0; j < message.privateCacheTtlCount.length; ++j)\n                if (typeof message.privateCacheTtlCount[j] === \"number\")\n                    object.privateCacheTtlCount[j] = options.longs === String ? String(message.privateCacheTtlCount[j]) : message.privateCacheTtlCount[j];\n                else\n                    object.privateCacheTtlCount[j] = options.longs === String ? $util.Long.prototype.toString.call(message.privateCacheTtlCount[j]) : options.longs === Number ? new $util.LongBits(message.privateCacheTtlCount[j].low >>> 0, message.privateCacheTtlCount[j].high >>> 0).toNumber() : message.privateCacheTtlCount[j];\n        }\n        if (message.requestsWithoutFieldInstrumentation != null && message.hasOwnProperty(\"requestsWithoutFieldInstrumentation\"))\n            if (typeof message.requestsWithoutFieldInstrumentation === \"number\")\n                object.requestsWithoutFieldInstrumentation = options.longs === String ? String(message.requestsWithoutFieldInstrumentation) : message.requestsWithoutFieldInstrumentation;\n            else\n                object.requestsWithoutFieldInstrumentation = options.longs === String ? $util.Long.prototype.toString.call(message.requestsWithoutFieldInstrumentation) : options.longs === Number ? new $util.LongBits(message.requestsWithoutFieldInstrumentation.low >>> 0, message.requestsWithoutFieldInstrumentation.high >>> 0).toNumber(true) : message.requestsWithoutFieldInstrumentation;\n        return object;\n    };\n\n    /**\n     * Converts this QueryLatencyStats to JSON.\n     * @function toJSON\n     * @memberof QueryLatencyStats\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    QueryLatencyStats.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    return QueryLatencyStats;\n})();\n\n$root.StatsContext = (function() {\n\n    /**\n     * Properties of a StatsContext.\n     * @exports IStatsContext\n     * @interface IStatsContext\n     * @property {string|null} [clientName] StatsContext clientName\n     * @property {string|null} [clientVersion] StatsContext clientVersion\n     */\n\n    /**\n     * Constructs a new StatsContext.\n     * @exports StatsContext\n     * @classdesc Represents a StatsContext.\n     * @implements IStatsContext\n     * @constructor\n     * @param {IStatsContext=} [properties] Properties to set\n     */\n    function StatsContext(properties) {\n        if (properties)\n            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * StatsContext clientName.\n     * @member {string} clientName\n     * @memberof StatsContext\n     * @instance\n     */\n    StatsContext.prototype.clientName = \"\";\n\n    /**\n     * StatsContext clientVersion.\n     * @member {string} clientVersion\n     * @memberof StatsContext\n     * @instance\n     */\n    StatsContext.prototype.clientVersion = \"\";\n\n    /**\n     * Creates a new StatsContext instance using the specified properties.\n     * @function create\n     * @memberof StatsContext\n     * @static\n     * @param {IStatsContext=} [properties] Properties to set\n     * @returns {StatsContext} StatsContext instance\n     */\n    StatsContext.create = function create(properties) {\n        return new StatsContext(properties);\n    };\n\n    /**\n     * Encodes the specified StatsContext message. Does not implicitly {@link StatsContext.verify|verify} messages.\n     * @function encode\n     * @memberof StatsContext\n     * @static\n     * @param {IStatsContext} message StatsContext message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    StatsContext.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.clientName != null && Object.hasOwnProperty.call(message, \"clientName\"))\n            writer.uint32(/* id 2, wireType 2 =*/18).string(message.clientName);\n        if (message.clientVersion != null && Object.hasOwnProperty.call(message, \"clientVersion\"))\n            writer.uint32(/* id 3, wireType 2 =*/26).string(message.clientVersion);\n        return writer;\n    };\n\n    /**\n     * Encodes the specified StatsContext message, length delimited. Does not implicitly {@link StatsContext.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof StatsContext\n     * @static\n     * @param {IStatsContext} message StatsContext message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    StatsContext.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a StatsContext message from the specified reader or buffer.\n     * @function decode\n     * @memberof StatsContext\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {StatsContext} StatsContext\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    StatsContext.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.StatsContext();\n        while (reader.pos < end) {\n            var tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 2:\n                message.clientName = reader.string();\n                break;\n            case 3:\n                message.clientVersion = reader.string();\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a StatsContext message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof StatsContext\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {StatsContext} StatsContext\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    StatsContext.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a StatsContext message.\n     * @function verify\n     * @memberof StatsContext\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    StatsContext.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.clientName != null && message.hasOwnProperty(\"clientName\"))\n            if (!$util.isString(message.clientName))\n                return \"clientName: string expected\";\n        if (message.clientVersion != null && message.hasOwnProperty(\"clientVersion\"))\n            if (!$util.isString(message.clientVersion))\n                return \"clientVersion: string expected\";\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a StatsContext message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof StatsContext\n     * @static\n     * @param {StatsContext} message StatsContext\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    StatsContext.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        var object = {};\n        if (options.defaults) {\n            object.clientName = \"\";\n            object.clientVersion = \"\";\n        }\n        if (message.clientName != null && message.hasOwnProperty(\"clientName\"))\n            object.clientName = message.clientName;\n        if (message.clientVersion != null && message.hasOwnProperty(\"clientVersion\"))\n            object.clientVersion = message.clientVersion;\n        return object;\n    };\n\n    /**\n     * Converts this StatsContext to JSON.\n     * @function toJSON\n     * @memberof StatsContext\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    StatsContext.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    return StatsContext;\n})();\n\n$root.ContextualizedQueryLatencyStats = (function() {\n\n    /**\n     * Properties of a ContextualizedQueryLatencyStats.\n     * @exports IContextualizedQueryLatencyStats\n     * @interface IContextualizedQueryLatencyStats\n     * @property {IQueryLatencyStats|null} [queryLatencyStats] ContextualizedQueryLatencyStats queryLatencyStats\n     * @property {IStatsContext|null} [context] ContextualizedQueryLatencyStats context\n     */\n\n    /**\n     * Constructs a new ContextualizedQueryLatencyStats.\n     * @exports ContextualizedQueryLatencyStats\n     * @classdesc Represents a ContextualizedQueryLatencyStats.\n     * @implements IContextualizedQueryLatencyStats\n     * @constructor\n     * @param {IContextualizedQueryLatencyStats=} [properties] Properties to set\n     */\n    function ContextualizedQueryLatencyStats(properties) {\n        if (properties)\n            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * ContextualizedQueryLatencyStats queryLatencyStats.\n     * @member {IQueryLatencyStats|null|undefined} queryLatencyStats\n     * @memberof ContextualizedQueryLatencyStats\n     * @instance\n     */\n    ContextualizedQueryLatencyStats.prototype.queryLatencyStats = null;\n\n    /**\n     * ContextualizedQueryLatencyStats context.\n     * @member {IStatsContext|null|undefined} context\n     * @memberof ContextualizedQueryLatencyStats\n     * @instance\n     */\n    ContextualizedQueryLatencyStats.prototype.context = null;\n\n    /**\n     * Creates a new ContextualizedQueryLatencyStats instance using the specified properties.\n     * @function create\n     * @memberof ContextualizedQueryLatencyStats\n     * @static\n     * @param {IContextualizedQueryLatencyStats=} [properties] Properties to set\n     * @returns {ContextualizedQueryLatencyStats} ContextualizedQueryLatencyStats instance\n     */\n    ContextualizedQueryLatencyStats.create = function create(properties) {\n        return new ContextualizedQueryLatencyStats(properties);\n    };\n\n    /**\n     * Encodes the specified ContextualizedQueryLatencyStats message. Does not implicitly {@link ContextualizedQueryLatencyStats.verify|verify} messages.\n     * @function encode\n     * @memberof ContextualizedQueryLatencyStats\n     * @static\n     * @param {IContextualizedQueryLatencyStats} message ContextualizedQueryLatencyStats message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    ContextualizedQueryLatencyStats.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.queryLatencyStats != null && Object.hasOwnProperty.call(message, \"queryLatencyStats\"))\n            $root.QueryLatencyStats.encode(message.queryLatencyStats, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n        if (message.context != null && Object.hasOwnProperty.call(message, \"context\"))\n            $root.StatsContext.encode(message.context, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n        return writer;\n    };\n\n    /**\n     * Encodes the specified ContextualizedQueryLatencyStats message, length delimited. Does not implicitly {@link ContextualizedQueryLatencyStats.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof ContextualizedQueryLatencyStats\n     * @static\n     * @param {IContextualizedQueryLatencyStats} message ContextualizedQueryLatencyStats message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    ContextualizedQueryLatencyStats.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a ContextualizedQueryLatencyStats message from the specified reader or buffer.\n     * @function decode\n     * @memberof ContextualizedQueryLatencyStats\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {ContextualizedQueryLatencyStats} ContextualizedQueryLatencyStats\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    ContextualizedQueryLatencyStats.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ContextualizedQueryLatencyStats();\n        while (reader.pos < end) {\n            var tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 1:\n                message.queryLatencyStats = $root.QueryLatencyStats.decode(reader, reader.uint32());\n                break;\n            case 2:\n                message.context = $root.StatsContext.decode(reader, reader.uint32());\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a ContextualizedQueryLatencyStats message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof ContextualizedQueryLatencyStats\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {ContextualizedQueryLatencyStats} ContextualizedQueryLatencyStats\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    ContextualizedQueryLatencyStats.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a ContextualizedQueryLatencyStats message.\n     * @function verify\n     * @memberof ContextualizedQueryLatencyStats\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    ContextualizedQueryLatencyStats.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.queryLatencyStats != null && message.hasOwnProperty(\"queryLatencyStats\")) {\n            var error = $root.QueryLatencyStats.verify(message.queryLatencyStats);\n            if (error)\n                return \"queryLatencyStats.\" + error;\n        }\n        if (message.context != null && message.hasOwnProperty(\"context\")) {\n            var error = $root.StatsContext.verify(message.context);\n            if (error)\n                return \"context.\" + error;\n        }\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a ContextualizedQueryLatencyStats message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof ContextualizedQueryLatencyStats\n     * @static\n     * @param {ContextualizedQueryLatencyStats} message ContextualizedQueryLatencyStats\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    ContextualizedQueryLatencyStats.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        var object = {};\n        if (options.defaults) {\n            object.queryLatencyStats = null;\n            object.context = null;\n        }\n        if (message.queryLatencyStats != null && message.hasOwnProperty(\"queryLatencyStats\"))\n            object.queryLatencyStats = $root.QueryLatencyStats.toObject(message.queryLatencyStats, options);\n        if (message.context != null && message.hasOwnProperty(\"context\"))\n            object.context = $root.StatsContext.toObject(message.context, options);\n        return object;\n    };\n\n    /**\n     * Converts this ContextualizedQueryLatencyStats to JSON.\n     * @function toJSON\n     * @memberof ContextualizedQueryLatencyStats\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    ContextualizedQueryLatencyStats.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    return ContextualizedQueryLatencyStats;\n})();\n\n$root.ContextualizedTypeStats = (function() {\n\n    /**\n     * Properties of a ContextualizedTypeStats.\n     * @exports IContextualizedTypeStats\n     * @interface IContextualizedTypeStats\n     * @property {IStatsContext|null} [context] ContextualizedTypeStats context\n     * @property {Object.<string,ITypeStat>|null} [perTypeStat] ContextualizedTypeStats perTypeStat\n     */\n\n    /**\n     * Constructs a new ContextualizedTypeStats.\n     * @exports ContextualizedTypeStats\n     * @classdesc Represents a ContextualizedTypeStats.\n     * @implements IContextualizedTypeStats\n     * @constructor\n     * @param {IContextualizedTypeStats=} [properties] Properties to set\n     */\n    function ContextualizedTypeStats(properties) {\n        this.perTypeStat = {};\n        if (properties)\n            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * ContextualizedTypeStats context.\n     * @member {IStatsContext|null|undefined} context\n     * @memberof ContextualizedTypeStats\n     * @instance\n     */\n    ContextualizedTypeStats.prototype.context = null;\n\n    /**\n     * ContextualizedTypeStats perTypeStat.\n     * @member {Object.<string,ITypeStat>} perTypeStat\n     * @memberof ContextualizedTypeStats\n     * @instance\n     */\n    ContextualizedTypeStats.prototype.perTypeStat = $util.emptyObject;\n\n    /**\n     * Creates a new ContextualizedTypeStats instance using the specified properties.\n     * @function create\n     * @memberof ContextualizedTypeStats\n     * @static\n     * @param {IContextualizedTypeStats=} [properties] Properties to set\n     * @returns {ContextualizedTypeStats} ContextualizedTypeStats instance\n     */\n    ContextualizedTypeStats.create = function create(properties) {\n        return new ContextualizedTypeStats(properties);\n    };\n\n    /**\n     * Encodes the specified ContextualizedTypeStats message. Does not implicitly {@link ContextualizedTypeStats.verify|verify} messages.\n     * @function encode\n     * @memberof ContextualizedTypeStats\n     * @static\n     * @param {IContextualizedTypeStats} message ContextualizedTypeStats message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    ContextualizedTypeStats.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.context != null && Object.hasOwnProperty.call(message, \"context\"))\n            $root.StatsContext.encode(message.context, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n        if (message.perTypeStat != null && Object.hasOwnProperty.call(message, \"perTypeStat\"))\n            for (var keys = Object.keys(message.perTypeStat), i = 0; i < keys.length; ++i) {\n                writer.uint32(/* id 2, wireType 2 =*/18).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]);\n                $root.TypeStat.encode(message.perTypeStat[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim();\n            }\n        return writer;\n    };\n\n    /**\n     * Encodes the specified ContextualizedTypeStats message, length delimited. Does not implicitly {@link ContextualizedTypeStats.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof ContextualizedTypeStats\n     * @static\n     * @param {IContextualizedTypeStats} message ContextualizedTypeStats message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    ContextualizedTypeStats.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a ContextualizedTypeStats message from the specified reader or buffer.\n     * @function decode\n     * @memberof ContextualizedTypeStats\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {ContextualizedTypeStats} ContextualizedTypeStats\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    ContextualizedTypeStats.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ContextualizedTypeStats(), key;\n        while (reader.pos < end) {\n            var tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 1:\n                message.context = $root.StatsContext.decode(reader, reader.uint32());\n                break;\n            case 2:\n                reader.skip().pos++;\n                if (message.perTypeStat === $util.emptyObject)\n                    message.perTypeStat = {};\n                key = reader.string();\n                reader.pos++;\n                message.perTypeStat[key] = $root.TypeStat.decode(reader, reader.uint32());\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a ContextualizedTypeStats message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof ContextualizedTypeStats\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {ContextualizedTypeStats} ContextualizedTypeStats\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    ContextualizedTypeStats.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a ContextualizedTypeStats message.\n     * @function verify\n     * @memberof ContextualizedTypeStats\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    ContextualizedTypeStats.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.context != null && message.hasOwnProperty(\"context\")) {\n            var error = $root.StatsContext.verify(message.context);\n            if (error)\n                return \"context.\" + error;\n        }\n        if (message.perTypeStat != null && message.hasOwnProperty(\"perTypeStat\")) {\n            if (!$util.isObject(message.perTypeStat))\n                return \"perTypeStat: object expected\";\n            var key = Object.keys(message.perTypeStat);\n            for (var i = 0; i < key.length; ++i) {\n                var error = $root.TypeStat.verify(message.perTypeStat[key[i]]);\n                if (error)\n                    return \"perTypeStat.\" + error;\n            }\n        }\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a ContextualizedTypeStats message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof ContextualizedTypeStats\n     * @static\n     * @param {ContextualizedTypeStats} message ContextualizedTypeStats\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    ContextualizedTypeStats.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        var object = {};\n        if (options.objects || options.defaults)\n            object.perTypeStat = {};\n        if (options.defaults)\n            object.context = null;\n        if (message.context != null && message.hasOwnProperty(\"context\"))\n            object.context = $root.StatsContext.toObject(message.context, options);\n        var keys2;\n        if (message.perTypeStat && (keys2 = Object.keys(message.perTypeStat)).length) {\n            object.perTypeStat = {};\n            for (var j = 0; j < keys2.length; ++j)\n                object.perTypeStat[keys2[j]] = $root.TypeStat.toObject(message.perTypeStat[keys2[j]], options);\n        }\n        return object;\n    };\n\n    /**\n     * Converts this ContextualizedTypeStats to JSON.\n     * @function toJSON\n     * @memberof ContextualizedTypeStats\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    ContextualizedTypeStats.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    return ContextualizedTypeStats;\n})();\n\n$root.FieldStat = (function() {\n\n    /**\n     * Properties of a FieldStat.\n     * @exports IFieldStat\n     * @interface IFieldStat\n     * @property {string|null} [returnType] FieldStat returnType\n     * @property {number|null} [errorsCount] FieldStat errorsCount\n     * @property {number|null} [observedExecutionCount] FieldStat observedExecutionCount\n     * @property {number|null} [estimatedExecutionCount] FieldStat estimatedExecutionCount\n     * @property {number|null} [requestsWithErrorsCount] FieldStat requestsWithErrorsCount\n     * @property {$protobuf.ToArray.<number>|Array.<number>|null} [latencyCount] FieldStat latencyCount\n     */\n\n    /**\n     * Constructs a new FieldStat.\n     * @exports FieldStat\n     * @classdesc Represents a FieldStat.\n     * @implements IFieldStat\n     * @constructor\n     * @param {IFieldStat=} [properties] Properties to set\n     */\n    function FieldStat(properties) {\n        this.latencyCount = [];\n        if (properties)\n            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * FieldStat returnType.\n     * @member {string} returnType\n     * @memberof FieldStat\n     * @instance\n     */\n    FieldStat.prototype.returnType = \"\";\n\n    /**\n     * FieldStat errorsCount.\n     * @member {number} errorsCount\n     * @memberof FieldStat\n     * @instance\n     */\n    FieldStat.prototype.errorsCount = 0;\n\n    /**\n     * FieldStat observedExecutionCount.\n     * @member {number} observedExecutionCount\n     * @memberof FieldStat\n     * @instance\n     */\n    FieldStat.prototype.observedExecutionCount = 0;\n\n    /**\n     * FieldStat estimatedExecutionCount.\n     * @member {number} estimatedExecutionCount\n     * @memberof FieldStat\n     * @instance\n     */\n    FieldStat.prototype.estimatedExecutionCount = 0;\n\n    /**\n     * FieldStat requestsWithErrorsCount.\n     * @member {number} requestsWithErrorsCount\n     * @memberof FieldStat\n     * @instance\n     */\n    FieldStat.prototype.requestsWithErrorsCount = 0;\n\n    /**\n     * FieldStat latencyCount.\n     * @member {Array.<number>} latencyCount\n     * @memberof FieldStat\n     * @instance\n     */\n    FieldStat.prototype.latencyCount = $util.emptyArray;\n\n    /**\n     * Creates a new FieldStat instance using the specified properties.\n     * @function create\n     * @memberof FieldStat\n     * @static\n     * @param {IFieldStat=} [properties] Properties to set\n     * @returns {FieldStat} FieldStat instance\n     */\n    FieldStat.create = function create(properties) {\n        return new FieldStat(properties);\n    };\n\n    /**\n     * Encodes the specified FieldStat message. Does not implicitly {@link FieldStat.verify|verify} messages.\n     * @function encode\n     * @memberof FieldStat\n     * @static\n     * @param {IFieldStat} message FieldStat message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    FieldStat.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.returnType != null && Object.hasOwnProperty.call(message, \"returnType\"))\n            writer.uint32(/* id 3, wireType 2 =*/26).string(message.returnType);\n        if (message.errorsCount != null && Object.hasOwnProperty.call(message, \"errorsCount\"))\n            writer.uint32(/* id 4, wireType 0 =*/32).uint64(message.errorsCount);\n        if (message.observedExecutionCount != null && Object.hasOwnProperty.call(message, \"observedExecutionCount\"))\n            writer.uint32(/* id 5, wireType 0 =*/40).uint64(message.observedExecutionCount);\n        if (message.requestsWithErrorsCount != null && Object.hasOwnProperty.call(message, \"requestsWithErrorsCount\"))\n            writer.uint32(/* id 6, wireType 0 =*/48).uint64(message.requestsWithErrorsCount);\n        var array9;\n        if (message.latencyCount != null && message.latencyCount.toArray)\n            array9 = message.latencyCount.toArray();\n        else\n            array9 = message.latencyCount;\n        if (array9 != null && array9.length) {\n            writer.uint32(/* id 9, wireType 2 =*/74).fork();\n            for (var i = 0; i < array9.length; ++i)\n                writer.sint64(array9[i]);\n            writer.ldelim();\n        }\n        if (message.estimatedExecutionCount != null && Object.hasOwnProperty.call(message, \"estimatedExecutionCount\"))\n            writer.uint32(/* id 10, wireType 0 =*/80).uint64(message.estimatedExecutionCount);\n        return writer;\n    };\n\n    /**\n     * Encodes the specified FieldStat message, length delimited. Does not implicitly {@link FieldStat.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof FieldStat\n     * @static\n     * @param {IFieldStat} message FieldStat message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    FieldStat.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a FieldStat message from the specified reader or buffer.\n     * @function decode\n     * @memberof FieldStat\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {FieldStat} FieldStat\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    FieldStat.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.FieldStat();\n        while (reader.pos < end) {\n            var tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 3:\n                message.returnType = reader.string();\n                break;\n            case 4:\n                message.errorsCount = reader.uint64();\n                break;\n            case 5:\n                message.observedExecutionCount = reader.uint64();\n                break;\n            case 10:\n                message.estimatedExecutionCount = reader.uint64();\n                break;\n            case 6:\n                message.requestsWithErrorsCount = reader.uint64();\n                break;\n            case 9:\n                if (!(message.latencyCount && message.latencyCount.length))\n                    message.latencyCount = [];\n                if ((tag & 7) === 2) {\n                    var end2 = reader.uint32() + reader.pos;\n                    while (reader.pos < end2)\n                        message.latencyCount.push(reader.sint64());\n                } else\n                    message.latencyCount.push(reader.sint64());\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a FieldStat message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof FieldStat\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {FieldStat} FieldStat\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    FieldStat.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a FieldStat message.\n     * @function verify\n     * @memberof FieldStat\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    FieldStat.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.returnType != null && message.hasOwnProperty(\"returnType\"))\n            if (!$util.isString(message.returnType))\n                return \"returnType: string expected\";\n        if (message.errorsCount != null && message.hasOwnProperty(\"errorsCount\"))\n            if (!$util.isInteger(message.errorsCount) && !(message.errorsCount && $util.isInteger(message.errorsCount.low) && $util.isInteger(message.errorsCount.high)))\n                return \"errorsCount: integer|Long expected\";\n        if (message.observedExecutionCount != null && message.hasOwnProperty(\"observedExecutionCount\"))\n            if (!$util.isInteger(message.observedExecutionCount) && !(message.observedExecutionCount && $util.isInteger(message.observedExecutionCount.low) && $util.isInteger(message.observedExecutionCount.high)))\n                return \"observedExecutionCount: integer|Long expected\";\n        if (message.estimatedExecutionCount != null && message.hasOwnProperty(\"estimatedExecutionCount\"))\n            if (!$util.isInteger(message.estimatedExecutionCount) && !(message.estimatedExecutionCount && $util.isInteger(message.estimatedExecutionCount.low) && $util.isInteger(message.estimatedExecutionCount.high)))\n                return \"estimatedExecutionCount: integer|Long expected\";\n        if (message.requestsWithErrorsCount != null && message.hasOwnProperty(\"requestsWithErrorsCount\"))\n            if (!$util.isInteger(message.requestsWithErrorsCount) && !(message.requestsWithErrorsCount && $util.isInteger(message.requestsWithErrorsCount.low) && $util.isInteger(message.requestsWithErrorsCount.high)))\n                return \"requestsWithErrorsCount: integer|Long expected\";\n        if (message.latencyCount != null && message.hasOwnProperty(\"latencyCount\")) {\n            var array9;\n            if (message.latencyCount != null && message.latencyCount.toArray)\n                array9 = message.latencyCount.toArray();\n            else\n                array9 = message.latencyCount;\n            if (!Array.isArray(array9))\n                return \"latencyCount: array expected\";\n            for (var i = 0; i < array9.length; ++i)\n                if (!$util.isInteger(array9[i]) && !(array9[i] && $util.isInteger(array9[i].low) && $util.isInteger(array9[i].high)))\n                    return \"latencyCount: integer|Long[] expected\";\n        }\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a FieldStat message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof FieldStat\n     * @static\n     * @param {FieldStat} message FieldStat\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    FieldStat.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        var object = {};\n        if (options.arrays || options.defaults)\n            object.latencyCount = [];\n        if (options.defaults) {\n            object.returnType = \"\";\n            object.errorsCount = 0;\n            object.observedExecutionCount = 0;\n            object.requestsWithErrorsCount = 0;\n            object.estimatedExecutionCount = 0;\n        }\n        if (message.returnType != null && message.hasOwnProperty(\"returnType\"))\n            object.returnType = message.returnType;\n        if (message.errorsCount != null && message.hasOwnProperty(\"errorsCount\"))\n            if (typeof message.errorsCount === \"number\")\n                object.errorsCount = options.longs === String ? String(message.errorsCount) : message.errorsCount;\n            else\n                object.errorsCount = options.longs === String ? $util.Long.prototype.toString.call(message.errorsCount) : options.longs === Number ? new $util.LongBits(message.errorsCount.low >>> 0, message.errorsCount.high >>> 0).toNumber(true) : message.errorsCount;\n        if (message.observedExecutionCount != null && message.hasOwnProperty(\"observedExecutionCount\"))\n            if (typeof message.observedExecutionCount === \"number\")\n                object.observedExecutionCount = options.longs === String ? String(message.observedExecutionCount) : message.observedExecutionCount;\n            else\n                object.observedExecutionCount = options.longs === String ? $util.Long.prototype.toString.call(message.observedExecutionCount) : options.longs === Number ? new $util.LongBits(message.observedExecutionCount.low >>> 0, message.observedExecutionCount.high >>> 0).toNumber(true) : message.observedExecutionCount;\n        if (message.requestsWithErrorsCount != null && message.hasOwnProperty(\"requestsWithErrorsCount\"))\n            if (typeof message.requestsWithErrorsCount === \"number\")\n                object.requestsWithErrorsCount = options.longs === String ? String(message.requestsWithErrorsCount) : message.requestsWithErrorsCount;\n            else\n                object.requestsWithErrorsCount = options.longs === String ? $util.Long.prototype.toString.call(message.requestsWithErrorsCount) : options.longs === Number ? new $util.LongBits(message.requestsWithErrorsCount.low >>> 0, message.requestsWithErrorsCount.high >>> 0).toNumber(true) : message.requestsWithErrorsCount;\n        if (message.latencyCount && message.latencyCount.length) {\n            object.latencyCount = [];\n            for (var j = 0; j < message.latencyCount.length; ++j)\n                if (typeof message.latencyCount[j] === \"number\")\n                    object.latencyCount[j] = options.longs === String ? String(message.latencyCount[j]) : message.latencyCount[j];\n                else\n                    object.latencyCount[j] = options.longs === String ? $util.Long.prototype.toString.call(message.latencyCount[j]) : options.longs === Number ? new $util.LongBits(message.latencyCount[j].low >>> 0, message.latencyCount[j].high >>> 0).toNumber() : message.latencyCount[j];\n        }\n        if (message.estimatedExecutionCount != null && message.hasOwnProperty(\"estimatedExecutionCount\"))\n            if (typeof message.estimatedExecutionCount === \"number\")\n                object.estimatedExecutionCount = options.longs === String ? String(message.estimatedExecutionCount) : message.estimatedExecutionCount;\n            else\n                object.estimatedExecutionCount = options.longs === String ? $util.Long.prototype.toString.call(message.estimatedExecutionCount) : options.longs === Number ? new $util.LongBits(message.estimatedExecutionCount.low >>> 0, message.estimatedExecutionCount.high >>> 0).toNumber(true) : message.estimatedExecutionCount;\n        return object;\n    };\n\n    /**\n     * Converts this FieldStat to JSON.\n     * @function toJSON\n     * @memberof FieldStat\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    FieldStat.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    return FieldStat;\n})();\n\n$root.TypeStat = (function() {\n\n    /**\n     * Properties of a TypeStat.\n     * @exports ITypeStat\n     * @interface ITypeStat\n     * @property {Object.<string,IFieldStat>|null} [perFieldStat] TypeStat perFieldStat\n     */\n\n    /**\n     * Constructs a new TypeStat.\n     * @exports TypeStat\n     * @classdesc Represents a TypeStat.\n     * @implements ITypeStat\n     * @constructor\n     * @param {ITypeStat=} [properties] Properties to set\n     */\n    function TypeStat(properties) {\n        this.perFieldStat = {};\n        if (properties)\n            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * TypeStat perFieldStat.\n     * @member {Object.<string,IFieldStat>} perFieldStat\n     * @memberof TypeStat\n     * @instance\n     */\n    TypeStat.prototype.perFieldStat = $util.emptyObject;\n\n    /**\n     * Creates a new TypeStat instance using the specified properties.\n     * @function create\n     * @memberof TypeStat\n     * @static\n     * @param {ITypeStat=} [properties] Properties to set\n     * @returns {TypeStat} TypeStat instance\n     */\n    TypeStat.create = function create(properties) {\n        return new TypeStat(properties);\n    };\n\n    /**\n     * Encodes the specified TypeStat message. Does not implicitly {@link TypeStat.verify|verify} messages.\n     * @function encode\n     * @memberof TypeStat\n     * @static\n     * @param {ITypeStat} message TypeStat message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    TypeStat.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.perFieldStat != null && Object.hasOwnProperty.call(message, \"perFieldStat\"))\n            for (var keys = Object.keys(message.perFieldStat), i = 0; i < keys.length; ++i) {\n                writer.uint32(/* id 3, wireType 2 =*/26).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]);\n                $root.FieldStat.encode(message.perFieldStat[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim();\n            }\n        return writer;\n    };\n\n    /**\n     * Encodes the specified TypeStat message, length delimited. Does not implicitly {@link TypeStat.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof TypeStat\n     * @static\n     * @param {ITypeStat} message TypeStat message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    TypeStat.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a TypeStat message from the specified reader or buffer.\n     * @function decode\n     * @memberof TypeStat\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {TypeStat} TypeStat\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    TypeStat.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.TypeStat(), key;\n        while (reader.pos < end) {\n            var tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 3:\n                reader.skip().pos++;\n                if (message.perFieldStat === $util.emptyObject)\n                    message.perFieldStat = {};\n                key = reader.string();\n                reader.pos++;\n                message.perFieldStat[key] = $root.FieldStat.decode(reader, reader.uint32());\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a TypeStat message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof TypeStat\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {TypeStat} TypeStat\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    TypeStat.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a TypeStat message.\n     * @function verify\n     * @memberof TypeStat\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    TypeStat.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.perFieldStat != null && message.hasOwnProperty(\"perFieldStat\")) {\n            if (!$util.isObject(message.perFieldStat))\n                return \"perFieldStat: object expected\";\n            var key = Object.keys(message.perFieldStat);\n            for (var i = 0; i < key.length; ++i) {\n                var error = $root.FieldStat.verify(message.perFieldStat[key[i]]);\n                if (error)\n                    return \"perFieldStat.\" + error;\n            }\n        }\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a TypeStat message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof TypeStat\n     * @static\n     * @param {TypeStat} message TypeStat\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    TypeStat.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        var object = {};\n        if (options.objects || options.defaults)\n            object.perFieldStat = {};\n        var keys2;\n        if (message.perFieldStat && (keys2 = Object.keys(message.perFieldStat)).length) {\n            object.perFieldStat = {};\n            for (var j = 0; j < keys2.length; ++j)\n                object.perFieldStat[keys2[j]] = $root.FieldStat.toObject(message.perFieldStat[keys2[j]], options);\n        }\n        return object;\n    };\n\n    /**\n     * Converts this TypeStat to JSON.\n     * @function toJSON\n     * @memberof TypeStat\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    TypeStat.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    return TypeStat;\n})();\n\n$root.ReferencedFieldsForType = (function() {\n\n    /**\n     * Properties of a ReferencedFieldsForType.\n     * @exports IReferencedFieldsForType\n     * @interface IReferencedFieldsForType\n     * @property {Array.<string>|null} [fieldNames] ReferencedFieldsForType fieldNames\n     * @property {boolean|null} [isInterface] ReferencedFieldsForType isInterface\n     */\n\n    /**\n     * Constructs a new ReferencedFieldsForType.\n     * @exports ReferencedFieldsForType\n     * @classdesc Represents a ReferencedFieldsForType.\n     * @implements IReferencedFieldsForType\n     * @constructor\n     * @param {IReferencedFieldsForType=} [properties] Properties to set\n     */\n    function ReferencedFieldsForType(properties) {\n        this.fieldNames = [];\n        if (properties)\n            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * ReferencedFieldsForType fieldNames.\n     * @member {Array.<string>} fieldNames\n     * @memberof ReferencedFieldsForType\n     * @instance\n     */\n    ReferencedFieldsForType.prototype.fieldNames = $util.emptyArray;\n\n    /**\n     * ReferencedFieldsForType isInterface.\n     * @member {boolean} isInterface\n     * @memberof ReferencedFieldsForType\n     * @instance\n     */\n    ReferencedFieldsForType.prototype.isInterface = false;\n\n    /**\n     * Creates a new ReferencedFieldsForType instance using the specified properties.\n     * @function create\n     * @memberof ReferencedFieldsForType\n     * @static\n     * @param {IReferencedFieldsForType=} [properties] Properties to set\n     * @returns {ReferencedFieldsForType} ReferencedFieldsForType instance\n     */\n    ReferencedFieldsForType.create = function create(properties) {\n        return new ReferencedFieldsForType(properties);\n    };\n\n    /**\n     * Encodes the specified ReferencedFieldsForType message. Does not implicitly {@link ReferencedFieldsForType.verify|verify} messages.\n     * @function encode\n     * @memberof ReferencedFieldsForType\n     * @static\n     * @param {IReferencedFieldsForType} message ReferencedFieldsForType message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    ReferencedFieldsForType.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.fieldNames != null && message.fieldNames.length)\n            for (var i = 0; i < message.fieldNames.length; ++i)\n                writer.uint32(/* id 1, wireType 2 =*/10).string(message.fieldNames[i]);\n        if (message.isInterface != null && Object.hasOwnProperty.call(message, \"isInterface\"))\n            writer.uint32(/* id 2, wireType 0 =*/16).bool(message.isInterface);\n        return writer;\n    };\n\n    /**\n     * Encodes the specified ReferencedFieldsForType message, length delimited. Does not implicitly {@link ReferencedFieldsForType.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof ReferencedFieldsForType\n     * @static\n     * @param {IReferencedFieldsForType} message ReferencedFieldsForType message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    ReferencedFieldsForType.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a ReferencedFieldsForType message from the specified reader or buffer.\n     * @function decode\n     * @memberof ReferencedFieldsForType\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {ReferencedFieldsForType} ReferencedFieldsForType\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    ReferencedFieldsForType.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ReferencedFieldsForType();\n        while (reader.pos < end) {\n            var tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 1:\n                if (!(message.fieldNames && message.fieldNames.length))\n                    message.fieldNames = [];\n                message.fieldNames.push(reader.string());\n                break;\n            case 2:\n                message.isInterface = reader.bool();\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a ReferencedFieldsForType message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof ReferencedFieldsForType\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {ReferencedFieldsForType} ReferencedFieldsForType\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    ReferencedFieldsForType.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a ReferencedFieldsForType message.\n     * @function verify\n     * @memberof ReferencedFieldsForType\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    ReferencedFieldsForType.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.fieldNames != null && message.hasOwnProperty(\"fieldNames\")) {\n            if (!Array.isArray(message.fieldNames))\n                return \"fieldNames: array expected\";\n            for (var i = 0; i < message.fieldNames.length; ++i)\n                if (!$util.isString(message.fieldNames[i]))\n                    return \"fieldNames: string[] expected\";\n        }\n        if (message.isInterface != null && message.hasOwnProperty(\"isInterface\"))\n            if (typeof message.isInterface !== \"boolean\")\n                return \"isInterface: boolean expected\";\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a ReferencedFieldsForType message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof ReferencedFieldsForType\n     * @static\n     * @param {ReferencedFieldsForType} message ReferencedFieldsForType\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    ReferencedFieldsForType.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        var object = {};\n        if (options.arrays || options.defaults)\n            object.fieldNames = [];\n        if (options.defaults)\n            object.isInterface = false;\n        if (message.fieldNames && message.fieldNames.length) {\n            object.fieldNames = [];\n            for (var j = 0; j < message.fieldNames.length; ++j)\n                object.fieldNames[j] = message.fieldNames[j];\n        }\n        if (message.isInterface != null && message.hasOwnProperty(\"isInterface\"))\n            object.isInterface = message.isInterface;\n        return object;\n    };\n\n    /**\n     * Converts this ReferencedFieldsForType to JSON.\n     * @function toJSON\n     * @memberof ReferencedFieldsForType\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    ReferencedFieldsForType.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    return ReferencedFieldsForType;\n})();\n\n$root.Report = (function() {\n\n    /**\n     * Properties of a Report.\n     * @exports IReport\n     * @interface IReport\n     * @property {IReportHeader|null} [header] Report header\n     * @property {Object.<string,ITracesAndStats>|null} [tracesPerQuery] Report tracesPerQuery\n     * @property {google.protobuf.ITimestamp|null} [endTime] Report endTime\n     * @property {number|null} [operationCount] Report operationCount\n     * @property {boolean|null} [tracesPreAggregated] Report tracesPreAggregated\n     */\n\n    /**\n     * Constructs a new Report.\n     * @exports Report\n     * @classdesc Represents a Report.\n     * @implements IReport\n     * @constructor\n     * @param {IReport=} [properties] Properties to set\n     */\n    function Report(properties) {\n        this.tracesPerQuery = {};\n        if (properties)\n            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * Report header.\n     * @member {IReportHeader|null|undefined} header\n     * @memberof Report\n     * @instance\n     */\n    Report.prototype.header = null;\n\n    /**\n     * Report tracesPerQuery.\n     * @member {Object.<string,ITracesAndStats>} tracesPerQuery\n     * @memberof Report\n     * @instance\n     */\n    Report.prototype.tracesPerQuery = $util.emptyObject;\n\n    /**\n     * Report endTime.\n     * @member {google.protobuf.ITimestamp|null|undefined} endTime\n     * @memberof Report\n     * @instance\n     */\n    Report.prototype.endTime = null;\n\n    /**\n     * Report operationCount.\n     * @member {number} operationCount\n     * @memberof Report\n     * @instance\n     */\n    Report.prototype.operationCount = 0;\n\n    /**\n     * Report tracesPreAggregated.\n     * @member {boolean} tracesPreAggregated\n     * @memberof Report\n     * @instance\n     */\n    Report.prototype.tracesPreAggregated = false;\n\n    /**\n     * Creates a new Report instance using the specified properties.\n     * @function create\n     * @memberof Report\n     * @static\n     * @param {IReport=} [properties] Properties to set\n     * @returns {Report} Report instance\n     */\n    Report.create = function create(properties) {\n        return new Report(properties);\n    };\n\n    /**\n     * Encodes the specified Report message. Does not implicitly {@link Report.verify|verify} messages.\n     * @function encode\n     * @memberof Report\n     * @static\n     * @param {IReport} message Report message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    Report.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.header != null && Object.hasOwnProperty.call(message, \"header\"))\n            $root.ReportHeader.encode(message.header, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n        if (message.endTime != null && Object.hasOwnProperty.call(message, \"endTime\"))\n            $root.google.protobuf.Timestamp.encode(message.endTime, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n        if (message.tracesPerQuery != null && Object.hasOwnProperty.call(message, \"tracesPerQuery\"))\n            for (var keys = Object.keys(message.tracesPerQuery), i = 0; i < keys.length; ++i) {\n                writer.uint32(/* id 5, wireType 2 =*/42).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]);\n                $root.TracesAndStats.encode(message.tracesPerQuery[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim();\n            }\n        if (message.operationCount != null && Object.hasOwnProperty.call(message, \"operationCount\"))\n            writer.uint32(/* id 6, wireType 0 =*/48).uint64(message.operationCount);\n        if (message.tracesPreAggregated != null && Object.hasOwnProperty.call(message, \"tracesPreAggregated\"))\n            writer.uint32(/* id 7, wireType 0 =*/56).bool(message.tracesPreAggregated);\n        return writer;\n    };\n\n    /**\n     * Encodes the specified Report message, length delimited. Does not implicitly {@link Report.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof Report\n     * @static\n     * @param {IReport} message Report message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    Report.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a Report message from the specified reader or buffer.\n     * @function decode\n     * @memberof Report\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {Report} Report\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    Report.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.Report(), key;\n        while (reader.pos < end) {\n            var tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 1:\n                message.header = $root.ReportHeader.decode(reader, reader.uint32());\n                break;\n            case 5:\n                reader.skip().pos++;\n                if (message.tracesPerQuery === $util.emptyObject)\n                    message.tracesPerQuery = {};\n                key = reader.string();\n                reader.pos++;\n                message.tracesPerQuery[key] = $root.TracesAndStats.decode(reader, reader.uint32());\n                break;\n            case 2:\n                message.endTime = $root.google.protobuf.Timestamp.decode(reader, reader.uint32());\n                break;\n            case 6:\n                message.operationCount = reader.uint64();\n                break;\n            case 7:\n                message.tracesPreAggregated = reader.bool();\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a Report message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof Report\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {Report} Report\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    Report.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a Report message.\n     * @function verify\n     * @memberof Report\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    Report.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.header != null && message.hasOwnProperty(\"header\")) {\n            var error = $root.ReportHeader.verify(message.header);\n            if (error)\n                return \"header.\" + error;\n        }\n        if (message.tracesPerQuery != null && message.hasOwnProperty(\"tracesPerQuery\")) {\n            if (!$util.isObject(message.tracesPerQuery))\n                return \"tracesPerQuery: object expected\";\n            var key = Object.keys(message.tracesPerQuery);\n            for (var i = 0; i < key.length; ++i) {\n                var error = $root.TracesAndStats.verify(message.tracesPerQuery[key[i]]);\n                if (error)\n                    return \"tracesPerQuery.\" + error;\n            }\n        }\n        if (message.endTime != null && message.hasOwnProperty(\"endTime\")) {\n            var error = $root.google.protobuf.Timestamp.verify(message.endTime);\n            if (error)\n                return \"endTime.\" + error;\n        }\n        if (message.operationCount != null && message.hasOwnProperty(\"operationCount\"))\n            if (!$util.isInteger(message.operationCount) && !(message.operationCount && $util.isInteger(message.operationCount.low) && $util.isInteger(message.operationCount.high)))\n                return \"operationCount: integer|Long expected\";\n        if (message.tracesPreAggregated != null && message.hasOwnProperty(\"tracesPreAggregated\"))\n            if (typeof message.tracesPreAggregated !== \"boolean\")\n                return \"tracesPreAggregated: boolean expected\";\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a Report message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof Report\n     * @static\n     * @param {Report} message Report\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    Report.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        var object = {};\n        if (options.objects || options.defaults)\n            object.tracesPerQuery = {};\n        if (options.defaults) {\n            object.header = null;\n            object.endTime = null;\n            object.operationCount = 0;\n            object.tracesPreAggregated = false;\n        }\n        if (message.header != null && message.hasOwnProperty(\"header\"))\n            object.header = $root.ReportHeader.toObject(message.header, options);\n        if (message.endTime != null && message.hasOwnProperty(\"endTime\"))\n            object.endTime = $root.google.protobuf.Timestamp.toObject(message.endTime, options);\n        var keys2;\n        if (message.tracesPerQuery && (keys2 = Object.keys(message.tracesPerQuery)).length) {\n            object.tracesPerQuery = {};\n            for (var j = 0; j < keys2.length; ++j)\n                object.tracesPerQuery[keys2[j]] = $root.TracesAndStats.toObject(message.tracesPerQuery[keys2[j]], options);\n        }\n        if (message.operationCount != null && message.hasOwnProperty(\"operationCount\"))\n            if (typeof message.operationCount === \"number\")\n                object.operationCount = options.longs === String ? String(message.operationCount) : message.operationCount;\n            else\n                object.operationCount = options.longs === String ? $util.Long.prototype.toString.call(message.operationCount) : options.longs === Number ? new $util.LongBits(message.operationCount.low >>> 0, message.operationCount.high >>> 0).toNumber(true) : message.operationCount;\n        if (message.tracesPreAggregated != null && message.hasOwnProperty(\"tracesPreAggregated\"))\n            object.tracesPreAggregated = message.tracesPreAggregated;\n        return object;\n    };\n\n    /**\n     * Converts this Report to JSON.\n     * @function toJSON\n     * @memberof Report\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    Report.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    return Report;\n})();\n\n$root.ContextualizedStats = (function() {\n\n    /**\n     * Properties of a ContextualizedStats.\n     * @exports IContextualizedStats\n     * @interface IContextualizedStats\n     * @property {IStatsContext|null} [context] ContextualizedStats context\n     * @property {IQueryLatencyStats|null} [queryLatencyStats] ContextualizedStats queryLatencyStats\n     * @property {Object.<string,ITypeStat>|null} [perTypeStat] ContextualizedStats perTypeStat\n     */\n\n    /**\n     * Constructs a new ContextualizedStats.\n     * @exports ContextualizedStats\n     * @classdesc Represents a ContextualizedStats.\n     * @implements IContextualizedStats\n     * @constructor\n     * @param {IContextualizedStats=} [properties] Properties to set\n     */\n    function ContextualizedStats(properties) {\n        this.perTypeStat = {};\n        if (properties)\n            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * ContextualizedStats context.\n     * @member {IStatsContext|null|undefined} context\n     * @memberof ContextualizedStats\n     * @instance\n     */\n    ContextualizedStats.prototype.context = null;\n\n    /**\n     * ContextualizedStats queryLatencyStats.\n     * @member {IQueryLatencyStats|null|undefined} queryLatencyStats\n     * @memberof ContextualizedStats\n     * @instance\n     */\n    ContextualizedStats.prototype.queryLatencyStats = null;\n\n    /**\n     * ContextualizedStats perTypeStat.\n     * @member {Object.<string,ITypeStat>} perTypeStat\n     * @memberof ContextualizedStats\n     * @instance\n     */\n    ContextualizedStats.prototype.perTypeStat = $util.emptyObject;\n\n    /**\n     * Creates a new ContextualizedStats instance using the specified properties.\n     * @function create\n     * @memberof ContextualizedStats\n     * @static\n     * @param {IContextualizedStats=} [properties] Properties to set\n     * @returns {ContextualizedStats} ContextualizedStats instance\n     */\n    ContextualizedStats.create = function create(properties) {\n        return new ContextualizedStats(properties);\n    };\n\n    /**\n     * Encodes the specified ContextualizedStats message. Does not implicitly {@link ContextualizedStats.verify|verify} messages.\n     * @function encode\n     * @memberof ContextualizedStats\n     * @static\n     * @param {IContextualizedStats} message ContextualizedStats message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    ContextualizedStats.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.context != null && Object.hasOwnProperty.call(message, \"context\"))\n            $root.StatsContext.encode(message.context, writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n        if (message.queryLatencyStats != null && Object.hasOwnProperty.call(message, \"queryLatencyStats\"))\n            $root.QueryLatencyStats.encode(message.queryLatencyStats, writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n        if (message.perTypeStat != null && Object.hasOwnProperty.call(message, \"perTypeStat\"))\n            for (var keys = Object.keys(message.perTypeStat), i = 0; i < keys.length; ++i) {\n                writer.uint32(/* id 3, wireType 2 =*/26).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]);\n                $root.TypeStat.encode(message.perTypeStat[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim();\n            }\n        return writer;\n    };\n\n    /**\n     * Encodes the specified ContextualizedStats message, length delimited. Does not implicitly {@link ContextualizedStats.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof ContextualizedStats\n     * @static\n     * @param {IContextualizedStats} message ContextualizedStats message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    ContextualizedStats.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a ContextualizedStats message from the specified reader or buffer.\n     * @function decode\n     * @memberof ContextualizedStats\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {ContextualizedStats} ContextualizedStats\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    ContextualizedStats.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.ContextualizedStats(), key;\n        while (reader.pos < end) {\n            var tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 1:\n                message.context = $root.StatsContext.decode(reader, reader.uint32());\n                break;\n            case 2:\n                message.queryLatencyStats = $root.QueryLatencyStats.decode(reader, reader.uint32());\n                break;\n            case 3:\n                reader.skip().pos++;\n                if (message.perTypeStat === $util.emptyObject)\n                    message.perTypeStat = {};\n                key = reader.string();\n                reader.pos++;\n                message.perTypeStat[key] = $root.TypeStat.decode(reader, reader.uint32());\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a ContextualizedStats message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof ContextualizedStats\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {ContextualizedStats} ContextualizedStats\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    ContextualizedStats.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a ContextualizedStats message.\n     * @function verify\n     * @memberof ContextualizedStats\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    ContextualizedStats.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.context != null && message.hasOwnProperty(\"context\")) {\n            var error = $root.StatsContext.verify(message.context);\n            if (error)\n                return \"context.\" + error;\n        }\n        if (message.queryLatencyStats != null && message.hasOwnProperty(\"queryLatencyStats\")) {\n            var error = $root.QueryLatencyStats.verify(message.queryLatencyStats);\n            if (error)\n                return \"queryLatencyStats.\" + error;\n        }\n        if (message.perTypeStat != null && message.hasOwnProperty(\"perTypeStat\")) {\n            if (!$util.isObject(message.perTypeStat))\n                return \"perTypeStat: object expected\";\n            var key = Object.keys(message.perTypeStat);\n            for (var i = 0; i < key.length; ++i) {\n                var error = $root.TypeStat.verify(message.perTypeStat[key[i]]);\n                if (error)\n                    return \"perTypeStat.\" + error;\n            }\n        }\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a ContextualizedStats message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof ContextualizedStats\n     * @static\n     * @param {ContextualizedStats} message ContextualizedStats\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    ContextualizedStats.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        var object = {};\n        if (options.objects || options.defaults)\n            object.perTypeStat = {};\n        if (options.defaults) {\n            object.context = null;\n            object.queryLatencyStats = null;\n        }\n        if (message.context != null && message.hasOwnProperty(\"context\"))\n            object.context = $root.StatsContext.toObject(message.context, options);\n        if (message.queryLatencyStats != null && message.hasOwnProperty(\"queryLatencyStats\"))\n            object.queryLatencyStats = $root.QueryLatencyStats.toObject(message.queryLatencyStats, options);\n        var keys2;\n        if (message.perTypeStat && (keys2 = Object.keys(message.perTypeStat)).length) {\n            object.perTypeStat = {};\n            for (var j = 0; j < keys2.length; ++j)\n                object.perTypeStat[keys2[j]] = $root.TypeStat.toObject(message.perTypeStat[keys2[j]], options);\n        }\n        return object;\n    };\n\n    /**\n     * Converts this ContextualizedStats to JSON.\n     * @function toJSON\n     * @memberof ContextualizedStats\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    ContextualizedStats.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    return ContextualizedStats;\n})();\n\n$root.TracesAndStats = (function() {\n\n    /**\n     * Properties of a TracesAndStats.\n     * @exports ITracesAndStats\n     * @interface ITracesAndStats\n     * @property {Array.<ITrace|Uint8Array>|null} [trace] TracesAndStats trace\n     * @property {$protobuf.ToArray.<IContextualizedStats>|Array.<IContextualizedStats>|null} [statsWithContext] TracesAndStats statsWithContext\n     * @property {Object.<string,IReferencedFieldsForType>|null} [referencedFieldsByType] TracesAndStats referencedFieldsByType\n     * @property {Array.<ITrace|Uint8Array>|null} [internalTracesContributingToStats] TracesAndStats internalTracesContributingToStats\n     */\n\n    /**\n     * Constructs a new TracesAndStats.\n     * @exports TracesAndStats\n     * @classdesc Represents a TracesAndStats.\n     * @implements ITracesAndStats\n     * @constructor\n     * @param {ITracesAndStats=} [properties] Properties to set\n     */\n    function TracesAndStats(properties) {\n        this.trace = [];\n        this.statsWithContext = [];\n        this.referencedFieldsByType = {};\n        this.internalTracesContributingToStats = [];\n        if (properties)\n            for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                if (properties[keys[i]] != null)\n                    this[keys[i]] = properties[keys[i]];\n    }\n\n    /**\n     * TracesAndStats trace.\n     * @member {Array.<ITrace|Uint8Array>} trace\n     * @memberof TracesAndStats\n     * @instance\n     */\n    TracesAndStats.prototype.trace = $util.emptyArray;\n\n    /**\n     * TracesAndStats statsWithContext.\n     * @member {Array.<IContextualizedStats>} statsWithContext\n     * @memberof TracesAndStats\n     * @instance\n     */\n    TracesAndStats.prototype.statsWithContext = $util.emptyArray;\n\n    /**\n     * TracesAndStats referencedFieldsByType.\n     * @member {Object.<string,IReferencedFieldsForType>} referencedFieldsByType\n     * @memberof TracesAndStats\n     * @instance\n     */\n    TracesAndStats.prototype.referencedFieldsByType = $util.emptyObject;\n\n    /**\n     * TracesAndStats internalTracesContributingToStats.\n     * @member {Array.<ITrace|Uint8Array>} internalTracesContributingToStats\n     * @memberof TracesAndStats\n     * @instance\n     */\n    TracesAndStats.prototype.internalTracesContributingToStats = $util.emptyArray;\n\n    /**\n     * Creates a new TracesAndStats instance using the specified properties.\n     * @function create\n     * @memberof TracesAndStats\n     * @static\n     * @param {ITracesAndStats=} [properties] Properties to set\n     * @returns {TracesAndStats} TracesAndStats instance\n     */\n    TracesAndStats.create = function create(properties) {\n        return new TracesAndStats(properties);\n    };\n\n    /**\n     * Encodes the specified TracesAndStats message. Does not implicitly {@link TracesAndStats.verify|verify} messages.\n     * @function encode\n     * @memberof TracesAndStats\n     * @static\n     * @param {ITracesAndStats} message TracesAndStats message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    TracesAndStats.encode = function encode(message, writer) {\n        if (!writer)\n            writer = $Writer.create();\n        if (message.trace != null && message.trace.length)\n            for (var i = 0; i < message.trace.length; ++i)\n                if (message.trace[i] instanceof Uint8Array) {\n                    writer.uint32(/* id 1, wireType 2 =*/10);\n                    writer.bytes(message.trace[i]);\n                } else\n                    $root.Trace.encode(message.trace[i], writer.uint32(/* id 1, wireType 2 =*/10).fork()).ldelim();\n        var array2;\n        if (message.statsWithContext != null && message.statsWithContext.toArray)\n            array2 = message.statsWithContext.toArray();\n        else\n            array2 = message.statsWithContext;\n        if (array2 != null && array2.length)\n            for (var i = 0; i < array2.length; ++i)\n                $root.ContextualizedStats.encode(array2[i], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim();\n        if (message.internalTracesContributingToStats != null && message.internalTracesContributingToStats.length)\n            for (var i = 0; i < message.internalTracesContributingToStats.length; ++i)\n                if (message.internalTracesContributingToStats[i] instanceof Uint8Array) {\n                    writer.uint32(/* id 3, wireType 2 =*/26);\n                    writer.bytes(message.internalTracesContributingToStats[i]);\n                } else\n                    $root.Trace.encode(message.internalTracesContributingToStats[i], writer.uint32(/* id 3, wireType 2 =*/26).fork()).ldelim();\n        if (message.referencedFieldsByType != null && Object.hasOwnProperty.call(message, \"referencedFieldsByType\"))\n            for (var keys = Object.keys(message.referencedFieldsByType), i = 0; i < keys.length; ++i) {\n                writer.uint32(/* id 4, wireType 2 =*/34).fork().uint32(/* id 1, wireType 2 =*/10).string(keys[i]);\n                $root.ReferencedFieldsForType.encode(message.referencedFieldsByType[keys[i]], writer.uint32(/* id 2, wireType 2 =*/18).fork()).ldelim().ldelim();\n            }\n        return writer;\n    };\n\n    /**\n     * Encodes the specified TracesAndStats message, length delimited. Does not implicitly {@link TracesAndStats.verify|verify} messages.\n     * @function encodeDelimited\n     * @memberof TracesAndStats\n     * @static\n     * @param {ITracesAndStats} message TracesAndStats message or plain object to encode\n     * @param {$protobuf.Writer} [writer] Writer to encode to\n     * @returns {$protobuf.Writer} Writer\n     */\n    TracesAndStats.encodeDelimited = function encodeDelimited(message, writer) {\n        return this.encode(message, writer).ldelim();\n    };\n\n    /**\n     * Decodes a TracesAndStats message from the specified reader or buffer.\n     * @function decode\n     * @memberof TracesAndStats\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @param {number} [length] Message length if known beforehand\n     * @returns {TracesAndStats} TracesAndStats\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    TracesAndStats.decode = function decode(reader, length) {\n        if (!(reader instanceof $Reader))\n            reader = $Reader.create(reader);\n        var end = length === undefined ? reader.len : reader.pos + length, message = new $root.TracesAndStats(), key;\n        while (reader.pos < end) {\n            var tag = reader.uint32();\n            switch (tag >>> 3) {\n            case 1:\n                if (!(message.trace && message.trace.length))\n                    message.trace = [];\n                message.trace.push($root.Trace.decode(reader, reader.uint32()));\n                break;\n            case 2:\n                if (!(message.statsWithContext && message.statsWithContext.length))\n                    message.statsWithContext = [];\n                message.statsWithContext.push($root.ContextualizedStats.decode(reader, reader.uint32()));\n                break;\n            case 4:\n                reader.skip().pos++;\n                if (message.referencedFieldsByType === $util.emptyObject)\n                    message.referencedFieldsByType = {};\n                key = reader.string();\n                reader.pos++;\n                message.referencedFieldsByType[key] = $root.ReferencedFieldsForType.decode(reader, reader.uint32());\n                break;\n            case 3:\n                if (!(message.internalTracesContributingToStats && message.internalTracesContributingToStats.length))\n                    message.internalTracesContributingToStats = [];\n                message.internalTracesContributingToStats.push($root.Trace.decode(reader, reader.uint32()));\n                break;\n            default:\n                reader.skipType(tag & 7);\n                break;\n            }\n        }\n        return message;\n    };\n\n    /**\n     * Decodes a TracesAndStats message from the specified reader or buffer, length delimited.\n     * @function decodeDelimited\n     * @memberof TracesAndStats\n     * @static\n     * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n     * @returns {TracesAndStats} TracesAndStats\n     * @throws {Error} If the payload is not a reader or valid buffer\n     * @throws {$protobuf.util.ProtocolError} If required fields are missing\n     */\n    TracesAndStats.decodeDelimited = function decodeDelimited(reader) {\n        if (!(reader instanceof $Reader))\n            reader = new $Reader(reader);\n        return this.decode(reader, reader.uint32());\n    };\n\n    /**\n     * Verifies a TracesAndStats message.\n     * @function verify\n     * @memberof TracesAndStats\n     * @static\n     * @param {Object.<string,*>} message Plain object to verify\n     * @returns {string|null} `null` if valid, otherwise the reason why it is not\n     */\n    TracesAndStats.verify = function verify(message) {\n        if (typeof message !== \"object\" || message === null)\n            return \"object expected\";\n        if (message.trace != null && message.hasOwnProperty(\"trace\")) {\n            if (!Array.isArray(message.trace))\n                return \"trace: array expected\";\n            for (var i = 0; i < message.trace.length; ++i)\n                if (!(message.trace[i] instanceof Uint8Array)) {\n                    var error = $root.Trace.verify(message.trace[i]);\n                    if (error)\n                        return \"trace.\" + error;\n                }\n        }\n        if (message.statsWithContext != null && message.hasOwnProperty(\"statsWithContext\")) {\n            var array2;\n            if (message.statsWithContext != null && message.statsWithContext.toArray)\n                array2 = message.statsWithContext.toArray();\n            else\n                array2 = message.statsWithContext;\n            if (!Array.isArray(array2))\n                return \"statsWithContext: array expected\";\n            for (var i = 0; i < array2.length; ++i) {\n                var error = $root.ContextualizedStats.verify(array2[i]);\n                if (error)\n                    return \"statsWithContext.\" + error;\n            }\n        }\n        if (message.referencedFieldsByType != null && message.hasOwnProperty(\"referencedFieldsByType\")) {\n            if (!$util.isObject(message.referencedFieldsByType))\n                return \"referencedFieldsByType: object expected\";\n            var key = Object.keys(message.referencedFieldsByType);\n            for (var i = 0; i < key.length; ++i) {\n                var error = $root.ReferencedFieldsForType.verify(message.referencedFieldsByType[key[i]]);\n                if (error)\n                    return \"referencedFieldsByType.\" + error;\n            }\n        }\n        if (message.internalTracesContributingToStats != null && message.hasOwnProperty(\"internalTracesContributingToStats\")) {\n            if (!Array.isArray(message.internalTracesContributingToStats))\n                return \"internalTracesContributingToStats: array expected\";\n            for (var i = 0; i < message.internalTracesContributingToStats.length; ++i)\n                if (!(message.internalTracesContributingToStats[i] instanceof Uint8Array)) {\n                    var error = $root.Trace.verify(message.internalTracesContributingToStats[i]);\n                    if (error)\n                        return \"internalTracesContributingToStats.\" + error;\n                }\n        }\n        return null;\n    };\n\n    /**\n     * Creates a plain object from a TracesAndStats message. Also converts values to other types if specified.\n     * @function toObject\n     * @memberof TracesAndStats\n     * @static\n     * @param {TracesAndStats} message TracesAndStats\n     * @param {$protobuf.IConversionOptions} [options] Conversion options\n     * @returns {Object.<string,*>} Plain object\n     */\n    TracesAndStats.toObject = function toObject(message, options) {\n        if (!options)\n            options = {};\n        var object = {};\n        if (options.arrays || options.defaults) {\n            object.trace = [];\n            object.statsWithContext = [];\n            object.internalTracesContributingToStats = [];\n        }\n        if (options.objects || options.defaults)\n            object.referencedFieldsByType = {};\n        if (message.trace && message.trace.length) {\n            object.trace = [];\n            for (var j = 0; j < message.trace.length; ++j)\n                object.trace[j] = $root.Trace.toObject(message.trace[j], options);\n        }\n        if (message.statsWithContext && message.statsWithContext.length) {\n            object.statsWithContext = [];\n            for (var j = 0; j < message.statsWithContext.length; ++j)\n                object.statsWithContext[j] = $root.ContextualizedStats.toObject(message.statsWithContext[j], options);\n        }\n        if (message.internalTracesContributingToStats && message.internalTracesContributingToStats.length) {\n            object.internalTracesContributingToStats = [];\n            for (var j = 0; j < message.internalTracesContributingToStats.length; ++j)\n                object.internalTracesContributingToStats[j] = $root.Trace.toObject(message.internalTracesContributingToStats[j], options);\n        }\n        var keys2;\n        if (message.referencedFieldsByType && (keys2 = Object.keys(message.referencedFieldsByType)).length) {\n            object.referencedFieldsByType = {};\n            for (var j = 0; j < keys2.length; ++j)\n                object.referencedFieldsByType[keys2[j]] = $root.ReferencedFieldsForType.toObject(message.referencedFieldsByType[keys2[j]], options);\n        }\n        return object;\n    };\n\n    /**\n     * Converts this TracesAndStats to JSON.\n     * @function toJSON\n     * @memberof TracesAndStats\n     * @instance\n     * @returns {Object.<string,*>} JSON object\n     */\n    TracesAndStats.prototype.toJSON = function toJSON() {\n        return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n    };\n\n    return TracesAndStats;\n})();\n\n$root.google = (function() {\n\n    /**\n     * Namespace google.\n     * @exports google\n     * @namespace\n     */\n    var google = {};\n\n    google.protobuf = (function() {\n\n        /**\n         * Namespace protobuf.\n         * @memberof google\n         * @namespace\n         */\n        var protobuf = {};\n\n        protobuf.Timestamp = (function() {\n\n            /**\n             * Properties of a Timestamp.\n             * @memberof google.protobuf\n             * @interface ITimestamp\n             * @property {number|null} [seconds] Timestamp seconds\n             * @property {number|null} [nanos] Timestamp nanos\n             */\n\n            /**\n             * Constructs a new Timestamp.\n             * @memberof google.protobuf\n             * @classdesc Represents a Timestamp.\n             * @implements ITimestamp\n             * @constructor\n             * @param {google.protobuf.ITimestamp=} [properties] Properties to set\n             */\n            function Timestamp(properties) {\n                if (properties)\n                    for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n                        if (properties[keys[i]] != null)\n                            this[keys[i]] = properties[keys[i]];\n            }\n\n            /**\n             * Timestamp seconds.\n             * @member {number} seconds\n             * @memberof google.protobuf.Timestamp\n             * @instance\n             */\n            Timestamp.prototype.seconds = 0;\n\n            /**\n             * Timestamp nanos.\n             * @member {number} nanos\n             * @memberof google.protobuf.Timestamp\n             * @instance\n             */\n            Timestamp.prototype.nanos = 0;\n\n            /**\n             * Creates a new Timestamp instance using the specified properties.\n             * @function create\n             * @memberof google.protobuf.Timestamp\n             * @static\n             * @param {google.protobuf.ITimestamp=} [properties] Properties to set\n             * @returns {google.protobuf.Timestamp} Timestamp instance\n             */\n            Timestamp.create = function create(properties) {\n                return new Timestamp(properties);\n            };\n\n            /**\n             * Encodes the specified Timestamp message. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages.\n             * @function encode\n             * @memberof google.protobuf.Timestamp\n             * @static\n             * @param {google.protobuf.ITimestamp} message Timestamp message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            Timestamp.encode = function encode(message, writer) {\n                if (!writer)\n                    writer = $Writer.create();\n                if (message.seconds != null && Object.hasOwnProperty.call(message, \"seconds\"))\n                    writer.uint32(/* id 1, wireType 0 =*/8).int64(message.seconds);\n                if (message.nanos != null && Object.hasOwnProperty.call(message, \"nanos\"))\n                    writer.uint32(/* id 2, wireType 0 =*/16).int32(message.nanos);\n                return writer;\n            };\n\n            /**\n             * Encodes the specified Timestamp message, length delimited. Does not implicitly {@link google.protobuf.Timestamp.verify|verify} messages.\n             * @function encodeDelimited\n             * @memberof google.protobuf.Timestamp\n             * @static\n             * @param {google.protobuf.ITimestamp} message Timestamp message or plain object to encode\n             * @param {$protobuf.Writer} [writer] Writer to encode to\n             * @returns {$protobuf.Writer} Writer\n             */\n            Timestamp.encodeDelimited = function encodeDelimited(message, writer) {\n                return this.encode(message, writer).ldelim();\n            };\n\n            /**\n             * Decodes a Timestamp message from the specified reader or buffer.\n             * @function decode\n             * @memberof google.protobuf.Timestamp\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @param {number} [length] Message length if known beforehand\n             * @returns {google.protobuf.Timestamp} Timestamp\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            Timestamp.decode = function decode(reader, length) {\n                if (!(reader instanceof $Reader))\n                    reader = $Reader.create(reader);\n                var end = length === undefined ? reader.len : reader.pos + length, message = new $root.google.protobuf.Timestamp();\n                while (reader.pos < end) {\n                    var tag = reader.uint32();\n                    switch (tag >>> 3) {\n                    case 1:\n                        message.seconds = reader.int64();\n                        break;\n                    case 2:\n                        message.nanos = reader.int32();\n                        break;\n                    default:\n                        reader.skipType(tag & 7);\n                        break;\n                    }\n                }\n                return message;\n            };\n\n            /**\n             * Decodes a Timestamp message from the specified reader or buffer, length delimited.\n             * @function decodeDelimited\n             * @memberof google.protobuf.Timestamp\n             * @static\n             * @param {$protobuf.Reader|Uint8Array} reader Reader or buffer to decode from\n             * @returns {google.protobuf.Timestamp} Timestamp\n             * @throws {Error} If the payload is not a reader or valid buffer\n             * @throws {$protobuf.util.ProtocolError} If required fields are missing\n             */\n            Timestamp.decodeDelimited = function decodeDelimited(reader) {\n                if (!(reader instanceof $Reader))\n                    reader = new $Reader(reader);\n                return this.decode(reader, reader.uint32());\n            };\n\n            /**\n             * Verifies a Timestamp message.\n             * @function verify\n             * @memberof google.protobuf.Timestamp\n             * @static\n             * @param {Object.<string,*>} message Plain object to verify\n             * @returns {string|null} `null` if valid, otherwise the reason why it is not\n             */\n            Timestamp.verify = function verify(message) {\n                if (typeof message !== \"object\" || message === null)\n                    return \"object expected\";\n                if (message.seconds != null && message.hasOwnProperty(\"seconds\"))\n                    if (!$util.isInteger(message.seconds) && !(message.seconds && $util.isInteger(message.seconds.low) && $util.isInteger(message.seconds.high)))\n                        return \"seconds: integer|Long expected\";\n                if (message.nanos != null && message.hasOwnProperty(\"nanos\"))\n                    if (!$util.isInteger(message.nanos))\n                        return \"nanos: integer expected\";\n                return null;\n            };\n\n            /**\n             * Creates a plain object from a Timestamp message. Also converts values to other types if specified.\n             * @function toObject\n             * @memberof google.protobuf.Timestamp\n             * @static\n             * @param {google.protobuf.Timestamp} message Timestamp\n             * @param {$protobuf.IConversionOptions} [options] Conversion options\n             * @returns {Object.<string,*>} Plain object\n             */\n            Timestamp.toObject = function toObject(message, options) {\n                if (!options)\n                    options = {};\n                var object = {};\n                if (options.defaults) {\n                    object.seconds = 0;\n                    object.nanos = 0;\n                }\n                if (message.seconds != null && message.hasOwnProperty(\"seconds\"))\n                    if (typeof message.seconds === \"number\")\n                        object.seconds = options.longs === String ? String(message.seconds) : message.seconds;\n                    else\n                        object.seconds = options.longs === String ? $util.Long.prototype.toString.call(message.seconds) : options.longs === Number ? new $util.LongBits(message.seconds.low >>> 0, message.seconds.high >>> 0).toNumber() : message.seconds;\n                if (message.nanos != null && message.hasOwnProperty(\"nanos\"))\n                    object.nanos = message.nanos;\n                return object;\n            };\n\n            /**\n             * Converts this Timestamp to JSON.\n             * @function toJSON\n             * @memberof google.protobuf.Timestamp\n             * @instance\n             * @returns {Object.<string,*>} JSON object\n             */\n            Timestamp.prototype.toJSON = function toJSON() {\n                return this.constructor.toObject(this, $protobuf.util.toJSONOptions);\n            };\n\n            return Timestamp;\n        })();\n\n        return protobuf;\n    })();\n\n    return google;\n})();\n\nmodule.exports = $root;\n", "import {\n  type DocumentNode,\n  type GraphQLSchema,\n  isInterfaceType,\n  separateOperations,\n  TypeInfo,\n  visit,\n  visitWithTypeInfo,\n} from \"graphql\";\nimport { ReferencedFieldsForType } from \"@apollo/usage-reporting-protobuf\";\n\nexport interface OperationDerivedData {\n  signature: string;\n  referencedFieldsByType: ReferencedFieldsByType;\n}\n\nexport type ReferencedFieldsByType = Record<string, ReferencedFieldsForType>;\n\nexport function calculateReferencedFieldsByType({\n  document,\n  schema,\n  resolvedOperationName,\n}: {\n  document: DocumentNode;\n  resolvedOperationName: string | null;\n  schema: GraphQLSchema;\n}): ReferencedFieldsByType {\n  // If the document contains multiple operations, we only care about fields\n  // referenced in the operation we're using and in fragments that are\n  // (transitively) spread by that operation. (This is because Studio's field\n  // usage accounting is all by operation, not by document.) This does mean that\n  // a field can be textually present in a GraphQL document (and need to exist\n  // for validation) without being represented in the reported referenced fields\n  // structure, but we'd need to change the data model of Studio to be based on\n  // documents rather than fields if we wanted to improve that.\n  const documentSeparatedByOperation = separateOperations(document);\n  const filteredDocument =\n    documentSeparatedByOperation[resolvedOperationName ?? \"\"];\n  if (!filteredDocument) {\n    // This shouldn't happen because we only should call this function on\n    // properly executable documents.\n    throw Error(\n      `shouldn't happen: operation '${resolvedOperationName ?? \"\"}' not found`,\n    );\n  }\n  const typeInfo = new TypeInfo(schema);\n  const interfaces = new Set<string>();\n  const referencedFieldSetByType: Record<string, Set<string>> = Object.create(\n    null,\n  );\n  visit(\n    filteredDocument,\n    visitWithTypeInfo(typeInfo, {\n      Field(field) {\n        const fieldName = field.name.value;\n        const parentType = typeInfo.getParentType();\n        if (!parentType) {\n          throw Error(\n            `shouldn't happen: missing parent type for field ${fieldName}`,\n          );\n        }\n        const parentTypeName = parentType.name;\n        if (!referencedFieldSetByType[parentTypeName]) {\n          referencedFieldSetByType[parentTypeName] = new Set<string>();\n          if (isInterfaceType(parentType)) {\n            interfaces.add(parentTypeName);\n          }\n        }\n\n        // We know this is set to an empty Set if it didn't exist immediately above\n        referencedFieldSetByType[parentTypeName]!.add(fieldName);\n      },\n    }),\n  );\n\n  // Convert from initial representation (which uses Sets to avoid quadratic\n  // behavior) to the protobufjs objects. (We could also use js_use_toArray here\n  // but that seems a little overkill.)\n  const referencedFieldsByType = Object.create(null);\n  for (const [typeName, fieldNames] of Object.entries(\n    referencedFieldSetByType,\n  )) {\n    referencedFieldsByType[typeName] = new ReferencedFieldsForType({\n      fieldNames: [...fieldNames],\n      isInterface: interfaces.has(typeName),\n    });\n  }\n  return referencedFieldsByType;\n}\n", "import { type DocumentNode, separateOperations } from \"graphql\";\n\n// A GraphQL query may contain multiple named operations, with the operation to\n// use specified separately by the client. This transformation drops unused\n// operations from the query, as well as any fragment definitions that are not\n// referenced.  (In general we recommend that unused definitions are dropped on\n// the client before sending to the server to save bandwidth and parsing time.)\nexport function dropUnusedDefinitions(\n  ast: DocumentNode,\n  operationName: string,\n): DocumentNode {\n  const separated = separateOperations(ast)[operationName];\n  if (!separated) {\n    // If the given operationName isn't found, just make this whole transform a\n    // no-op instead of crashing.\n    return ast;\n  }\n  return separated;\n}\n", "import type {\n  ASTVisitor,\n  DocumentNode,\n  FloatValueNode,\n  IntValueNode,\n  ListValueNode,\n  ObjectValueNode,\n  StringValueNode,\n} from \"graphql\";\nimport { visit } from \"graphql\";\n\n// Hide sensitive string and numeric literals. Optionally hide list and object literals with the option `hideListAndObjectLiterals: true`.\nexport function stripSensitiveLiterals(\n  ast: DocumentNode,\n  options: { hideListAndObjectLiterals?: boolean } = {\n    hideListAndObjectLiterals: false,\n  },\n): DocumentNode {\n  const listAndObjectVisitorIfEnabled: ASTVisitor =\n    options.hideListAndObjectLiterals\n      ? {\n          ListValue(node: ListValueNode): ListValueNode {\n            return { ...node, values: [] };\n          },\n          ObjectValue(node: ObjectValueNode): ObjectValueNode {\n            return { ...node, fields: [] };\n          },\n        }\n      : {};\n\n  return visit(ast, {\n    IntValue(node): IntValueNode {\n      return { ...node, value: \"0\" };\n    },\n    FloatValue(node): FloatValueNode {\n      return { ...node, value: \"0\" };\n    },\n    StringValue(node): StringValueNode {\n      return { ...node, value: \"\", block: false };\n    },\n    ...listAndObjectVisitorIfEnabled,\n  });\n}\n", "import { visit, print, type DocumentNode, type StringValueNode } from \"graphql\";\n// Like the graphql-js print function, but deleting whitespace wherever\n// feasible. Specifically, all whitespace (outside of string literals) is\n// reduced to at most one space, and even that space is removed anywhere except\n// for between two alphanumerics.\nexport function printWithReducedWhitespace(ast: DocumentNode): string {\n  // In a GraphQL AST (which notably does not contain comments), the only place\n  // where meaningful whitespace (or double quotes) can exist is in\n  // StringNodes. So to print with reduced whitespace, we:\n  // - temporarily sanitize strings by replacing their contents with hex\n  // - use the default GraphQL printer\n  // - minimize the whitespace with a simple regexp replacement\n  // - convert strings back to their actual value\n  // We normalize all strings to non-block strings for simplicity.\n\n  const sanitizedAST = visit(ast, {\n    StringValue(node: StringValueNode): StringValueNode {\n      return {\n        ...node,\n        value: Buffer.from(node.value, \"utf8\").toString(\"hex\"),\n        block: false,\n      };\n    },\n  });\n  const withWhitespace = print(sanitizedAST);\n  const minimizedButStillHex = withWhitespace\n    .replace(/\\s+/g, \" \")\n    .replace(/([^_a-zA-Z0-9]) /g, (_, c) => c)\n    .replace(/ ([^_a-zA-Z0-9])/g, (_, c) => c);\n  return minimizedButStillHex.replace(/\"([a-f0-9]+)\"/g, (_, hex) =>\n    JSON.stringify(Buffer.from(hex, \"hex\").toString(\"utf8\")),\n  );\n}\n", "// removeAliases gets rid of GraphQL aliases, a feature by which you can tell a\n// server to return a field's data under a different name from the field name.\n// Maybe this is useful if somebody somewhere inserts random aliases into their\n// queries. Note that this function makes no guarantees about the output and its\n// validity as a GraphQL operation, for example:\n// { x(a: 1) alias: x(a:2) } (valid) will yield\n// { x(a:1) x(a:2) } (invalid)\nimport { type DocumentNode, type FieldNode, visit } from \"graphql\";\n\nexport function removeAliases(ast: DocumentNode): DocumentNode {\n  return visit(ast, {\n    Field(node: FieldNode): FieldNode {\n      const { alias, ...rest } = node;\n      return rest;\n    },\n  });\n}\n", "/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n    PARTIAL_COMPARE_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n    MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n    arrayTag = '[object Array]',\n    boolTag = '[object Boolean]',\n    dateTag = '[object Date]',\n    errorTag = '[object Error]',\n    funcTag = '[object Function]',\n    genTag = '[object GeneratorFunction]',\n    mapTag = '[object Map]',\n    numberTag = '[object Number]',\n    objectTag = '[object Object]',\n    promiseTag = '[object Promise]',\n    regexpTag = '[object RegExp]',\n    setTag = '[object Set]',\n    stringTag = '[object String]',\n    symbolTag = '[object Symbol]',\n    weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n    dataViewTag = '[object DataView]',\n    float32Tag = '[object Float32Array]',\n    float64Tag = '[object Float64Array]',\n    int8Tag = '[object Int8Array]',\n    int16Tag = '[object Int16Array]',\n    int32Tag = '[object Int32Array]',\n    uint8Tag = '[object Uint8Array]',\n    uint8ClampedTag = '[object Uint8ClampedArray]',\n    uint16Tag = '[object Uint16Array]',\n    uint32Tag = '[object Uint32Array]';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n    reIsPlainProp = /^\\w*$/,\n    reLeadingDot = /^\\./,\n    rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n  try {\n    return freeProcess && freeProcess.binding('util');\n  } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n  switch (args.length) {\n    case 0: return func.call(thisArg);\n    case 1: return func.call(thisArg, args[0]);\n    case 2: return func.call(thisArg, args[0], args[1]);\n    case 3: return func.call(thisArg, args[0], args[1], args[2]);\n  }\n  return func.apply(thisArg, args);\n}\n\n/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n  var index = -1,\n      length = array ? array.length : 0,\n      result = Array(length);\n\n  while (++index < length) {\n    result[index] = iteratee(array[index], index, array);\n  }\n  return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n  var index = -1,\n      length = values.length,\n      offset = array.length;\n\n  while (++index < length) {\n    array[offset + index] = values[index];\n  }\n  return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n *  else `false`.\n */\nfunction arraySome(array, predicate) {\n  var index = -1,\n      length = array ? array.length : 0;\n\n  while (++index < length) {\n    if (predicate(array[index], index, array)) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n  return function(object) {\n    return object == null ? undefined : object[key];\n  };\n}\n\n/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n  var length = array.length;\n\n  array.sort(comparer);\n  while (length--) {\n    array[length] = array[length].value;\n  }\n  return array;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n  var index = -1,\n      result = Array(n);\n\n  while (++index < n) {\n    result[index] = iteratee(index);\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n  return function(value) {\n    return func(value);\n  };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n  return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n  // Many host objects are `Object` objects that can coerce to strings\n  // despite having improperly defined `toString` methods.\n  var result = false;\n  if (value != null && typeof value.toString != 'function') {\n    try {\n      result = !!(value + '');\n    } catch (e) {}\n  }\n  return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n  var index = -1,\n      result = Array(map.size);\n\n  map.forEach(function(value, key) {\n    result[++index] = [key, value];\n  });\n  return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n  return function(arg) {\n    return func(transform(arg));\n  };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n  var index = -1,\n      result = Array(set.size);\n\n  set.forEach(function(value) {\n    result[++index] = value;\n  });\n  return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n    funcProto = Function.prototype,\n    objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n  var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n  return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n  funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n  .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n    Uint8Array = root.Uint8Array,\n    propertyIsEnumerable = objectProto.propertyIsEnumerable,\n    splice = arrayProto.splice,\n    spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object),\n    nativeMax = Math.max;\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n    Map = getNative(root, 'Map'),\n    Promise = getNative(root, 'Promise'),\n    Set = getNative(root, 'Set'),\n    WeakMap = getNative(root, 'WeakMap'),\n    nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n    mapCtorString = toSource(Map),\n    promiseCtorString = toSource(Promise),\n    setCtorString = toSource(Set),\n    weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n  this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n  return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n  var data = this.__data__;\n  if (nativeCreate) {\n    var result = data[key];\n    return result === HASH_UNDEFINED ? undefined : result;\n  }\n  return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n  var data = this.__data__;\n  return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n  var data = this.__data__;\n  data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n  return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n  this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    return false;\n  }\n  var lastIndex = data.length - 1;\n  if (index == lastIndex) {\n    data.pop();\n  } else {\n    splice.call(data, index, 1);\n  }\n  return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n  return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n  var data = this.__data__,\n      index = assocIndexOf(data, key);\n\n  if (index < 0) {\n    data.push([key, value]);\n  } else {\n    data[index][1] = value;\n  }\n  return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n  var index = -1,\n      length = entries ? entries.length : 0;\n\n  this.clear();\n  while (++index < length) {\n    var entry = entries[index];\n    this.set(entry[0], entry[1]);\n  }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n  this.__data__ = {\n    'hash': new Hash,\n    'map': new (Map || ListCache),\n    'string': new Hash\n  };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n  return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n  return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n  return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n  getMapData(this, key).set(key, value);\n  return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n  var index = -1,\n      length = values ? values.length : 0;\n\n  this.__data__ = new MapCache;\n  while (++index < length) {\n    this.add(values[index]);\n  }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n  this.__data__.set(value, HASH_UNDEFINED);\n  return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n  return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n  this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n  this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n  return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n  return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n  return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n  var cache = this.__data__;\n  if (cache instanceof ListCache) {\n    var pairs = cache.__data__;\n    if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n      pairs.push([key, value]);\n      return this;\n    }\n    cache = this.__data__ = new MapCache(pairs);\n  }\n  cache.set(key, value);\n  return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  // Safari 9 makes `arguments.length` enumerable in strict mode.\n  var result = (isArray(value) || isArguments(value))\n    ? baseTimes(value.length, String)\n    : [];\n\n  var length = result.length,\n      skipIndexes = !!length;\n\n  for (var key in value) {\n    if ((inherited || hasOwnProperty.call(value, key)) &&\n        !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n  var length = array.length;\n  while (length--) {\n    if (eq(array[length][0], key)) {\n      return length;\n    }\n  }\n  return -1;\n}\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n  var index = -1,\n      length = array.length;\n\n  predicate || (predicate = isFlattenable);\n  result || (result = []);\n\n  while (++index < length) {\n    var value = array[index];\n    if (depth > 0 && predicate(value)) {\n      if (depth > 1) {\n        // Recursively flatten arrays (susceptible to call stack limits).\n        baseFlatten(value, depth - 1, predicate, isStrict, result);\n      } else {\n        arrayPush(result, value);\n      }\n    } else if (!isStrict) {\n      result[result.length] = value;\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n  return object && baseFor(object, iteratee, keys);\n}\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n  path = isKey(path, object) ? [path] : castPath(path);\n\n  var index = 0,\n      length = path.length;\n\n  while (object != null && index < length) {\n    object = object[toKey(path[index++])];\n  }\n  return (index && index == length) ? object : undefined;\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n  return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n  return object != null && key in Object(object);\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {boolean} [bitmask] The bitmask of comparison flags.\n *  The bitmask may be composed of the following flags:\n *     1 - Unordered comparison\n *     2 - Partial comparison\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, customizer, bitmask, stack) {\n  if (value === other) {\n    return true;\n  }\n  if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n    return value !== value && other !== other;\n  }\n  return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {\n  var objIsArr = isArray(object),\n      othIsArr = isArray(other),\n      objTag = arrayTag,\n      othTag = arrayTag;\n\n  if (!objIsArr) {\n    objTag = getTag(object);\n    objTag = objTag == argsTag ? objectTag : objTag;\n  }\n  if (!othIsArr) {\n    othTag = getTag(other);\n    othTag = othTag == argsTag ? objectTag : othTag;\n  }\n  var objIsObj = objTag == objectTag && !isHostObject(object),\n      othIsObj = othTag == objectTag && !isHostObject(other),\n      isSameTag = objTag == othTag;\n\n  if (isSameTag && !objIsObj) {\n    stack || (stack = new Stack);\n    return (objIsArr || isTypedArray(object))\n      ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)\n      : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);\n  }\n  if (!(bitmask & PARTIAL_COMPARE_FLAG)) {\n    var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n        othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n    if (objIsWrapped || othIsWrapped) {\n      var objUnwrapped = objIsWrapped ? object.value() : object,\n          othUnwrapped = othIsWrapped ? other.value() : other;\n\n      stack || (stack = new Stack);\n      return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);\n    }\n  }\n  if (!isSameTag) {\n    return false;\n  }\n  stack || (stack = new Stack);\n  return equalObjects(object, other, equalFunc, customizer, bitmask, stack);\n}\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n  var index = matchData.length,\n      length = index,\n      noCustomizer = !customizer;\n\n  if (object == null) {\n    return !length;\n  }\n  object = Object(object);\n  while (index--) {\n    var data = matchData[index];\n    if ((noCustomizer && data[2])\n          ? data[1] !== object[data[0]]\n          : !(data[0] in object)\n        ) {\n      return false;\n    }\n  }\n  while (++index < length) {\n    data = matchData[index];\n    var key = data[0],\n        objValue = object[key],\n        srcValue = data[1];\n\n    if (noCustomizer && data[2]) {\n      if (objValue === undefined && !(key in object)) {\n        return false;\n      }\n    } else {\n      var stack = new Stack;\n      if (customizer) {\n        var result = customizer(objValue, srcValue, key, object, source, stack);\n      }\n      if (!(result === undefined\n            ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack)\n            : result\n          )) {\n        return false;\n      }\n    }\n  }\n  return true;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n *  else `false`.\n */\nfunction baseIsNative(value) {\n  if (!isObject(value) || isMasked(value)) {\n    return false;\n  }\n  var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n  return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n  return isObjectLike(value) &&\n    isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n  // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n  // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n  if (typeof value == 'function') {\n    return value;\n  }\n  if (value == null) {\n    return identity;\n  }\n  if (typeof value == 'object') {\n    return isArray(value)\n      ? baseMatchesProperty(value[0], value[1])\n      : baseMatches(value);\n  }\n  return property(value);\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n  if (!isPrototype(object)) {\n    return nativeKeys(object);\n  }\n  var result = [];\n  for (var key in Object(object)) {\n    if (hasOwnProperty.call(object, key) && key != 'constructor') {\n      result.push(key);\n    }\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n  var index = -1,\n      result = isArrayLike(collection) ? Array(collection.length) : [];\n\n  baseEach(collection, function(value, key, collection) {\n    result[++index] = iteratee(value, key, collection);\n  });\n  return result;\n}\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n  var matchData = getMatchData(source);\n  if (matchData.length == 1 && matchData[0][2]) {\n    return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n  }\n  return function(object) {\n    return object === source || baseIsMatch(object, source, matchData);\n  };\n}\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n  if (isKey(path) && isStrictComparable(srcValue)) {\n    return matchesStrictComparable(toKey(path), srcValue);\n  }\n  return function(object) {\n    var objValue = get(object, path);\n    return (objValue === undefined && objValue === srcValue)\n      ? hasIn(object, path)\n      : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);\n  };\n}\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n  var index = -1;\n  iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(baseIteratee));\n\n  var result = baseMap(collection, function(value, key, collection) {\n    var criteria = arrayMap(iteratees, function(iteratee) {\n      return iteratee(value);\n    });\n    return { 'criteria': criteria, 'index': ++index, 'value': value };\n  });\n\n  return baseSortBy(result, function(object, other) {\n    return compareMultiple(object, other, orders);\n  });\n}\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n  return function(object) {\n    return baseGet(object, path);\n  };\n}\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n  return function() {\n    var args = arguments,\n        index = -1,\n        length = nativeMax(args.length - start, 0),\n        array = Array(length);\n\n    while (++index < length) {\n      array[index] = args[start + index];\n    }\n    index = -1;\n    var otherArgs = Array(start + 1);\n    while (++index < start) {\n      otherArgs[index] = args[index];\n    }\n    otherArgs[start] = array;\n    return apply(func, this, otherArgs);\n  };\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n  return isArray(value) ? value : stringToPath(value);\n}\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n  if (value !== other) {\n    var valIsDefined = value !== undefined,\n        valIsNull = value === null,\n        valIsReflexive = value === value,\n        valIsSymbol = isSymbol(value);\n\n    var othIsDefined = other !== undefined,\n        othIsNull = other === null,\n        othIsReflexive = other === other,\n        othIsSymbol = isSymbol(other);\n\n    if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n        (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n        (valIsNull && othIsDefined && othIsReflexive) ||\n        (!valIsDefined && othIsReflexive) ||\n        !valIsReflexive) {\n      return 1;\n    }\n    if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n        (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n        (othIsNull && valIsDefined && valIsReflexive) ||\n        (!othIsDefined && valIsReflexive) ||\n        !othIsReflexive) {\n      return -1;\n    }\n  }\n  return 0;\n}\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n  var index = -1,\n      objCriteria = object.criteria,\n      othCriteria = other.criteria,\n      length = objCriteria.length,\n      ordersLength = orders.length;\n\n  while (++index < length) {\n    var result = compareAscending(objCriteria[index], othCriteria[index]);\n    if (result) {\n      if (index >= ordersLength) {\n        return result;\n      }\n      var order = orders[index];\n      return result * (order == 'desc' ? -1 : 1);\n    }\n  }\n  // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n  // that causes it, under certain circumstances, to provide the same value for\n  // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n  // for more details.\n  //\n  // This also ensures a stable sort in V8 and other engines.\n  // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n  return object.index - other.index;\n}\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n  return function(collection, iteratee) {\n    if (collection == null) {\n      return collection;\n    }\n    if (!isArrayLike(collection)) {\n      return eachFunc(collection, iteratee);\n    }\n    var length = collection.length,\n        index = fromRight ? length : -1,\n        iterable = Object(collection);\n\n    while ((fromRight ? index-- : ++index < length)) {\n      if (iteratee(iterable[index], index, iterable) === false) {\n        break;\n      }\n    }\n    return collection;\n  };\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n  return function(object, iteratee, keysFunc) {\n    var index = -1,\n        iterable = Object(object),\n        props = keysFunc(object),\n        length = props.length;\n\n    while (length--) {\n      var key = props[fromRight ? length : ++index];\n      if (iteratee(iterable[key], key, iterable) === false) {\n        break;\n      }\n    }\n    return object;\n  };\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, equalFunc, customizer, bitmask, stack) {\n  var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n      arrLength = array.length,\n      othLength = other.length;\n\n  if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n    return false;\n  }\n  // Assume cyclic values are equal.\n  var stacked = stack.get(array);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\n  }\n  var index = -1,\n      result = true,\n      seen = (bitmask & UNORDERED_COMPARE_FLAG) ? new SetCache : undefined;\n\n  stack.set(array, other);\n  stack.set(other, array);\n\n  // Ignore non-index properties.\n  while (++index < arrLength) {\n    var arrValue = array[index],\n        othValue = other[index];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, arrValue, index, other, array, stack)\n        : customizer(arrValue, othValue, index, array, other, stack);\n    }\n    if (compared !== undefined) {\n      if (compared) {\n        continue;\n      }\n      result = false;\n      break;\n    }\n    // Recursively compare arrays (susceptible to call stack limits).\n    if (seen) {\n      if (!arraySome(other, function(othValue, othIndex) {\n            if (!seen.has(othIndex) &&\n                (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {\n              return seen.add(othIndex);\n            }\n          })) {\n        result = false;\n        break;\n      }\n    } else if (!(\n          arrValue === othValue ||\n            equalFunc(arrValue, othValue, customizer, bitmask, stack)\n        )) {\n      result = false;\n      break;\n    }\n  }\n  stack['delete'](array);\n  stack['delete'](other);\n  return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {\n  switch (tag) {\n    case dataViewTag:\n      if ((object.byteLength != other.byteLength) ||\n          (object.byteOffset != other.byteOffset)) {\n        return false;\n      }\n      object = object.buffer;\n      other = other.buffer;\n\n    case arrayBufferTag:\n      if ((object.byteLength != other.byteLength) ||\n          !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n        return false;\n      }\n      return true;\n\n    case boolTag:\n    case dateTag:\n    case numberTag:\n      // Coerce booleans to `1` or `0` and dates to milliseconds.\n      // Invalid dates are coerced to `NaN`.\n      return eq(+object, +other);\n\n    case errorTag:\n      return object.name == other.name && object.message == other.message;\n\n    case regexpTag:\n    case stringTag:\n      // Coerce regexes to strings and treat strings, primitives and objects,\n      // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n      // for more details.\n      return object == (other + '');\n\n    case mapTag:\n      var convert = mapToArray;\n\n    case setTag:\n      var isPartial = bitmask & PARTIAL_COMPARE_FLAG;\n      convert || (convert = setToArray);\n\n      if (object.size != other.size && !isPartial) {\n        return false;\n      }\n      // Assume cyclic values are equal.\n      var stacked = stack.get(object);\n      if (stacked) {\n        return stacked == other;\n      }\n      bitmask |= UNORDERED_COMPARE_FLAG;\n\n      // Recursively compare objects (susceptible to call stack limits).\n      stack.set(object, other);\n      var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);\n      stack['delete'](object);\n      return result;\n\n    case symbolTag:\n      if (symbolValueOf) {\n        return symbolValueOf.call(object) == symbolValueOf.call(other);\n      }\n  }\n  return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n *  for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, equalFunc, customizer, bitmask, stack) {\n  var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n      objProps = keys(object),\n      objLength = objProps.length,\n      othProps = keys(other),\n      othLength = othProps.length;\n\n  if (objLength != othLength && !isPartial) {\n    return false;\n  }\n  var index = objLength;\n  while (index--) {\n    var key = objProps[index];\n    if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n      return false;\n    }\n  }\n  // Assume cyclic values are equal.\n  var stacked = stack.get(object);\n  if (stacked && stack.get(other)) {\n    return stacked == other;\n  }\n  var result = true;\n  stack.set(object, other);\n  stack.set(other, object);\n\n  var skipCtor = isPartial;\n  while (++index < objLength) {\n    key = objProps[index];\n    var objValue = object[key],\n        othValue = other[key];\n\n    if (customizer) {\n      var compared = isPartial\n        ? customizer(othValue, objValue, key, other, object, stack)\n        : customizer(objValue, othValue, key, object, other, stack);\n    }\n    // Recursively compare objects (susceptible to call stack limits).\n    if (!(compared === undefined\n          ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack))\n          : compared\n        )) {\n      result = false;\n      break;\n    }\n    skipCtor || (skipCtor = key == 'constructor');\n  }\n  if (result && !skipCtor) {\n    var objCtor = object.constructor,\n        othCtor = other.constructor;\n\n    // Non `Object` object instances with different constructors are not equal.\n    if (objCtor != othCtor &&\n        ('constructor' in object && 'constructor' in other) &&\n        !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n          typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n      result = false;\n    }\n  }\n  stack['delete'](object);\n  stack['delete'](other);\n  return result;\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n  var data = map.__data__;\n  return isKeyable(key)\n    ? data[typeof key == 'string' ? 'string' : 'hash']\n    : data.map;\n}\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n  var result = keys(object),\n      length = result.length;\n\n  while (length--) {\n    var key = result[length],\n        value = object[key];\n\n    result[length] = [key, value, isStrictComparable(value)];\n  }\n  return result;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n  var value = getValue(object, key);\n  return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n    (Map && getTag(new Map) != mapTag) ||\n    (Promise && getTag(Promise.resolve()) != promiseTag) ||\n    (Set && getTag(new Set) != setTag) ||\n    (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n  getTag = function(value) {\n    var result = objectToString.call(value),\n        Ctor = result == objectTag ? value.constructor : undefined,\n        ctorString = Ctor ? toSource(Ctor) : undefined;\n\n    if (ctorString) {\n      switch (ctorString) {\n        case dataViewCtorString: return dataViewTag;\n        case mapCtorString: return mapTag;\n        case promiseCtorString: return promiseTag;\n        case setCtorString: return setTag;\n        case weakMapCtorString: return weakMapTag;\n      }\n    }\n    return result;\n  };\n}\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n  path = isKey(path, object) ? [path] : castPath(path);\n\n  var result,\n      index = -1,\n      length = path.length;\n\n  while (++index < length) {\n    var key = toKey(path[index]);\n    if (!(result = object != null && hasFunc(object, key))) {\n      break;\n    }\n    object = object[key];\n  }\n  if (result) {\n    return result;\n  }\n  var length = object ? object.length : 0;\n  return !!length && isLength(length) && isIndex(key, length) &&\n    (isArray(object) || isArguments(object));\n}\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n  return isArray(value) || isArguments(value) ||\n    !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n  length = length == null ? MAX_SAFE_INTEGER : length;\n  return !!length &&\n    (typeof value == 'number' || reIsUint.test(value)) &&\n    (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n *  else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n  if (!isObject(object)) {\n    return false;\n  }\n  var type = typeof index;\n  if (type == 'number'\n        ? (isArrayLike(object) && isIndex(index, object.length))\n        : (type == 'string' && index in object)\n      ) {\n    return eq(object[index], value);\n  }\n  return false;\n}\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n  if (isArray(value)) {\n    return false;\n  }\n  var type = typeof value;\n  if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n      value == null || isSymbol(value)) {\n    return true;\n  }\n  return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n    (object != null && value in Object(object));\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n  var type = typeof value;\n  return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n    ? (value !== '__proto__')\n    : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n  return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n  var Ctor = value && value.constructor,\n      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n  return value === proto;\n}\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n *  equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n  return value === value && !isObject(value);\n}\n\n/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n  return function(object) {\n    if (object == null) {\n      return false;\n    }\n    return object[key] === srcValue &&\n      (srcValue !== undefined || (key in Object(object)));\n  };\n}\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoize(function(string) {\n  string = toString(string);\n\n  var result = [];\n  if (reLeadingDot.test(string)) {\n    result.push('');\n  }\n  string.replace(rePropName, function(match, number, quote, string) {\n    result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n  });\n  return result;\n});\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n  if (typeof value == 'string' || isSymbol(value)) {\n    return value;\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n  if (func != null) {\n    try {\n      return funcToString.call(func);\n    } catch (e) {}\n    try {\n      return (func + '');\n    } catch (e) {}\n  }\n  return '';\n}\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n *  The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n *   { 'user': 'fred',   'age': 48 },\n *   { 'user': 'barney', 'age': 36 },\n *   { 'user': 'fred',   'age': 40 },\n *   { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, function(o) { return o.user; });\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]\n *\n * _.sortBy(users, 'user', function(o) {\n *   return Math.floor(o.age / 10);\n * });\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n  if (collection == null) {\n    return [];\n  }\n  var length = iteratees.length;\n  if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n    iteratees = [];\n  } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n    iteratees = [iteratees[0]];\n  }\n  return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n  if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  var memoized = function() {\n    var args = arguments,\n        key = resolver ? resolver.apply(this, args) : args[0],\n        cache = memoized.cache;\n\n    if (cache.has(key)) {\n      return cache.get(key);\n    }\n    var result = func.apply(this, args);\n    memoized.cache = cache.set(key, result);\n    return result;\n  };\n  memoized.cache = new (memoize.Cache || MapCache);\n  return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n  return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n *  else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n  // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n  return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n    (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n  return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n *  else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n  return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n  // The use of `Object#toString` avoids issues with the `typeof` operator\n  // in Safari 8-9 which returns 'object' for typed array and other constructors.\n  var tag = isObject(value) ? objectToString.call(value) : '';\n  return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n  return typeof value == 'number' &&\n    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n  var result = object == null ? undefined : baseGet(object, path);\n  return result === undefined ? defaultValue : result;\n}\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n  return object != null && hasPath(object, path, baseHasIn);\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n *   this.a = 1;\n *   this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n  return value;\n}\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n *   { 'a': { 'b': 2 } },\n *   { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n  return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = sortBy;\n", "// We'll only fetch the `ListIteratee` type from the `@types/lodash`, but get\n// `sortBy` from the modularized version of the package to avoid bringing in\n// all of `lodash`.\nimport {\n  visit,\n  type DocumentNode,\n  type OperationDefinitionNode,\n  type DirectiveNode,\n  type FragmentDefinitionNode,\n  type InlineFragmentNode,\n  type FragmentSpreadNode,\n  type FieldNode,\n  type SelectionSetNode,\n  type ArgumentNode,\n  type VariableDefinitionNode,\n} from \"graphql\";\nimport sortBy from \"lodash.sortby\";\n\n// sortAST sorts most multi-child nodes alphabetically. Using this as part of\n// your signature calculation function may make it easier to tell the difference\n// between queries that are similar to each other, and if for some reason your\n// GraphQL client generates query strings with elements in nondeterministic\n// order, it can make sure the queries are treated as identical.\nexport function sortAST(ast: DocumentNode): DocumentNode {\n  return visit(ast, {\n    Document(node: DocumentNode) {\n      return {\n        ...node,\n        // The sort on \"kind\" places fragments before operations within the document\n        definitions: sortBy(node.definitions, \"kind\", \"name.value\"),\n      };\n    },\n    OperationDefinition(\n      node: OperationDefinitionNode,\n    ): OperationDefinitionNode {\n      return sortVariableDefinitions(node);\n    },\n    SelectionSet(node): SelectionSetNode {\n      return {\n        ...node,\n        // Define an ordering for field names in a SelectionSet.  Field first,\n        // then FragmentSpread, then InlineFragment.  By a lovely coincidence,\n        // the order we want them to appear in is alphabetical by node.kind.\n        // Use sortBy instead of sorted because 'selections' is not optional.\n        selections: sortBy(node.selections, \"kind\", \"name.value\"),\n      };\n    },\n    Field(node): FieldNode {\n      return sortArguments(node);\n    },\n    FragmentSpread(node): FragmentSpreadNode {\n      return sortDirectives(node);\n    },\n    InlineFragment(node): InlineFragmentNode {\n      return sortDirectives(node);\n    },\n    FragmentDefinition(node): FragmentDefinitionNode {\n      return sortDirectives(sortVariableDefinitions(node));\n    },\n    Directive(node): DirectiveNode {\n      return sortArguments(node);\n    },\n  });\n}\n\nfunction sortDirectives<T extends { directives?: readonly DirectiveNode[] }>(\n  node: T,\n): T {\n  return \"directives\" in node\n    ? { ...node, directives: sortBy(node.directives, \"name.value\") }\n    : node;\n}\n\nfunction sortArguments<T extends { arguments?: readonly ArgumentNode[] }>(\n  node: T,\n): T {\n  return \"arguments\" in node\n    ? { ...node, arguments: sortBy(node.arguments, \"name.value\") }\n    : node;\n}\n\nfunction sortVariableDefinitions<\n  T extends { variableDefinitions?: readonly VariableDefinitionNode[] },\n>(node: T): T {\n  return \"variableDefinitions\" in node\n    ? {\n        ...node,\n        variableDefinitions: sortBy(\n          node.variableDefinitions,\n          \"variable.name.value\",\n        ),\n      }\n    : node;\n}\n", "// In Apollo Studio, we want to group requests making the same query together,\n// and treat different queries distinctly. But what does it mean for two queries\n// to be \"the same\"?  And what if you don't want to send the full text of the\n// query to Apollo's servers, either because it contains sensitive data or\n// because it contains extraneous operations or fragments?\n//\n// To solve these problems, Apollo Studio and related components have the\n// concept of \"signatures\". We don't (by default) send the full query string of\n// queries to Apollo's servers. Instead, each trace has its query string's\n// \"signature\".\n//\n// This module combines several AST transformations to create its signature:\n//\n// - dropUnusedDefinitions, which removes operations and fragments that aren't\n//   going to be used in execution\n// - stripSensitiveLiterals, which replaces all numeric and string literals as\n//   well as list and object input values with \"empty\" values\n// - removeAliases, which removes field aliasing from the query\n// - sortAST, which sorts the children of most multi-child nodes consistently\n// - printWithReducedWhitespace, a variant on graphql-js's 'print' which gets\n//   rid of unneeded whitespace\nimport { dropUnusedDefinitions } from \"@apollo/utils.dropunuseddefinitions\";\nimport { stripSensitiveLiterals } from \"@apollo/utils.stripsensitiveliterals\";\nimport { printWithReducedWhitespace } from \"@apollo/utils.printwithreducedwhitespace\";\nimport { removeAliases } from \"@apollo/utils.removealiases\";\nimport { sortAST } from \"@apollo/utils.sortast\";\nimport type { DocumentNode } from \"graphql\";\n\nexport function usageReportingSignature(\n  ast: DocumentNode,\n  operationName: string,\n): string {\n  return printWithReducedWhitespace(\n    sortAST(\n      removeAliases(\n        stripSensitiveLiterals(dropUnusedDefinitions(ast, operationName), {\n          hideListAndObjectLiterals: true,\n        }),\n      ),\n    ),\n  );\n}\n", "export { calculateReferencedFieldsByType } from \"./calculateReferencedFieldsByType\";\nexport type {\n  OperationDerivedData,\n  ReferencedFieldsByType,\n} from \"./calculateReferencedFieldsByType\";\nexport { usageReportingSignature } from \"./signature\";\n", "// Packages\nvar retrier = require('retry');\n\nfunction retry(fn, opts) {\n  function run(resolve, reject) {\n    var options = opts || {};\n    var op;\n\n    // Default `randomize` to true\n    if (!('randomize' in options)) {\n      options.randomize = true;\n    }\n\n    op = retrier.operation(options);\n\n    // We allow the user to abort retrying\n    // this makes sense in the cases where\n    // knowledge is obtained that retrying\n    // would be futile (e.g.: auth errors)\n\n    function bail(err) {\n      reject(err || new Error('Aborted'));\n    }\n\n    function onError(err, num) {\n      if (err.bail) {\n        bail(err);\n        return;\n      }\n\n      if (!op.retry(err)) {\n        reject(op.mainError());\n      } else if (options.onRetry) {\n        options.onRetry(err, num);\n      }\n    }\n\n    function runAttempt(num) {\n      var val;\n\n      try {\n        val = fn(bail, num);\n      } catch (err) {\n        onError(err, num);\n        return;\n      }\n\n      Promise.resolve(val)\n        .then(resolve)\n        .catch(function catchIt(err) {\n          onError(err, num);\n        });\n    }\n\n    op.attempt(runAttempt);\n  }\n\n  return new Promise(run);\n}\n\nmodule.exports = retry;\n", "// This class is a helper for ApolloServerPluginUsageReporting and\n// ApolloServerPluginInlineTrace.\nimport {\n  GraphQLError,\n  type GraphQLResolveInfo,\n  type ResponsePath,\n} from 'graphql';\nimport { Trace, google } from '@apollo/usage-reporting-protobuf';\nimport type { SendErrorsOptions } from './usageReporting';\nimport { UnreachableCaseError } from '../utils/UnreachableCaseError.js';\n\nfunction internalError(message: string) {\n  return new Error(`[internal apollo-server error] ${message}`);\n}\n\nexport class TraceTreeBuilder {\n  private rootNode = new Trace.Node();\n  public trace = new Trace({\n    root: this.rootNode,\n    // By default, each trace counts as one operation for the sake of field\n    // execution counts. If we end up calling the fieldLevelInstrumentation\n    // callback (once we've successfully resolved the operation) then we\n    // may set this to a higher number; but we'll start it at 1 so that traces\n    // that don't successfully resolve the operation (eg parse failures) or\n    // where we don't call the callback because a plugin set captureTraces to\n    // true have a reasonable default.\n    fieldExecutionWeight: 1,\n  });\n  public startHrTime?: [number, number];\n  private stopped = false;\n  private nodes = new Map<string, Trace.Node>([\n    [responsePathAsString(), this.rootNode],\n  ]);\n  private readonly transformError:\n    | ((err: GraphQLError) => GraphQLError | null)\n    | null;\n\n  public constructor(options: {\n    maskedBy: string;\n    sendErrors?: SendErrorsOptions;\n  }) {\n    const { sendErrors, maskedBy } = options;\n    if (!sendErrors || 'masked' in sendErrors) {\n      this.transformError = () =>\n        new GraphQLError('<masked>', {\n          extensions: { maskedBy },\n        });\n    } else if ('transform' in sendErrors) {\n      this.transformError = sendErrors.transform;\n    } else if ('unmodified' in sendErrors) {\n      this.transformError = null;\n    } else {\n      throw new UnreachableCaseError(sendErrors);\n    }\n  }\n\n  public startTiming() {\n    if (this.startHrTime) {\n      throw internalError('startTiming called twice!');\n    }\n    if (this.stopped) {\n      throw internalError('startTiming called after stopTiming!');\n    }\n    this.trace.startTime = dateToProtoTimestamp(new Date());\n    this.startHrTime = process.hrtime();\n  }\n\n  public stopTiming() {\n    if (!this.startHrTime) {\n      throw internalError('stopTiming called before startTiming!');\n    }\n    if (this.stopped) {\n      throw internalError('stopTiming called twice!');\n    }\n\n    this.trace.durationNs = durationHrTimeToNanos(\n      process.hrtime(this.startHrTime),\n    );\n    this.trace.endTime = dateToProtoTimestamp(new Date());\n    this.stopped = true;\n  }\n\n  public willResolveField(info: GraphQLResolveInfo): () => void {\n    if (!this.startHrTime) {\n      throw internalError('willResolveField called before startTiming!');\n    }\n    if (this.stopped) {\n      // We've been stopped, which means execution is done... and yet we're\n      // still resolving more fields? How can that be? Shouldn't we throw an\n      // error or something?\n      //\n      // Well... we used to do exactly that. But this \"shouldn't happen\" error\n      // showed up in practice! Turns out that graphql-js can actually continue\n      // to execute more fields indefinitely long after `execute()` resolves!\n      // That's because parallelism on a selection set is implemented using\n      // `Promise.all`, and as soon as one of its arguments (ie, one field)\n      // throws an error, the combined Promise resolves, but there's no\n      // \"cancellation\" of the Promises that are the other arguments to\n      // `Promise.all`. So the code contributing to those Promises keeps on\n      // chugging away indefinitely.\n      //\n      // Concrete example: let\u2019s say you have\n      //\n      //    { x y { ARBITRARY_SELECTION_SET } }\n      //\n      // where x has a non-null return type, and x and y both have resolvers\n      // that return Promises. And let\u2019s say that x returns a Promise that\n      // rejects (or resolves to null). What this means is that we\u2019re going to\n      // eventually end up with `data: null` (nothing under y will actually\n      // matter), but graphql-js execution will continue running whatever is\n      // under ARBITRARY_SELECTION_SET without any sort of short circuiting. In\n      // fact, the Promise returned from execute itself can happily resolve\n      // while execution is still chugging away on an arbitrary amount of fields\n      // under that ARBITRARY_SELECTION_SET. There\u2019s no way to detect from the\n      // outside \"all the execution related to this operation is done\", nor to\n      // \"short-circuit\" execution so that it stops going.\n      //\n      // So, um. We will record any field whose execution we manage to observe\n      // before we \"stop\" the TraceTreeBuilder (whether it is one that actually\n      // ends up in the response or whether it gets thrown away due to null\n      // bubbling), but if we get any more fields afterwards, we just ignore\n      // them rather than throwing a confusing error.\n      //\n      // (That said, the error we used to throw here generally was hidden\n      // anyway, for the same reason: it comes from a branch of execution that\n      // ends up not being included in the response. But\n      // https://github.com/graphql/graphql-js/pull/3529 means that this\n      // sometimes crashed execution anyway. Our error never caught any actual\n      // problematic cases, so keeping it around doesn't really help.)\n      return () => {};\n    }\n\n    const path = info.path;\n    const node = this.newNode(path);\n    node.type = info.returnType.toString();\n    node.parentType = info.parentType.toString();\n    node.startTime = durationHrTimeToNanos(process.hrtime(this.startHrTime));\n    if (typeof path.key === 'string' && path.key !== info.fieldName) {\n      // This field was aliased; send the original field name too (for FieldStats).\n      node.originalFieldName = info.fieldName;\n    }\n\n    return () => {\n      node.endTime = durationHrTimeToNanos(process.hrtime(this.startHrTime));\n    };\n  }\n\n  public didEncounterErrors(errors: readonly GraphQLError[]) {\n    errors.forEach((err) => {\n      // This is an error from a federated service. We will already be reporting\n      // it in the nested Trace in the query plan.\n      //\n      // XXX This probably shouldn't skip query or validation errors, which are\n      //      not in nested Traces because format() isn't called in this case! Or\n      //      maybe format() should be called in that case?\n      if (err.extensions?.serviceName) {\n        return;\n      }\n\n      // In terms of reporting, errors can be re-written by the user by\n      // utilizing the `transformError` parameter.  This allows changing\n      // the message or stack to remove potentially sensitive information.\n      // Returning `null` will result in the error not being reported at all.\n      const errorForReporting = this.transformAndNormalizeError(err);\n\n      if (errorForReporting === null) {\n        return;\n      }\n\n      this.addProtobufError(\n        errorForReporting.path,\n        errorToProtobufError(errorForReporting),\n      );\n    });\n  }\n\n  private addProtobufError(\n    path: ReadonlyArray<string | number> | undefined,\n    error: Trace.Error,\n  ) {\n    if (!this.startHrTime) {\n      throw internalError('addProtobufError called before startTiming!');\n    }\n    if (this.stopped) {\n      throw internalError('addProtobufError called after stopTiming!');\n    }\n\n    // By default, put errors on the root node.\n    let node = this.rootNode;\n    // If a non-GraphQLError Error sneaks in here somehow with a non-array\n    // path, don't crash.\n    if (Array.isArray(path)) {\n      const specificNode = this.nodes.get(path.join('.'));\n      if (specificNode) {\n        node = specificNode;\n      } else {\n        const responsePath = responsePathFromArray(path, this.rootNode);\n        if (!responsePath) {\n          throw internalError('addProtobufError called with invalid path!');\n        }\n        node = this.newNode(responsePath);\n      }\n    }\n\n    node.error.push(error);\n  }\n\n  private newNode(path: ResponsePath): Trace.Node {\n    const node = new Trace.Node();\n    const id = path.key;\n    if (typeof id === 'number') {\n      node.index = id;\n    } else {\n      node.responseName = id;\n    }\n    this.nodes.set(responsePathAsString(path), node);\n    const parentNode = this.ensureParentNode(path);\n    parentNode.child.push(node);\n    return node;\n  }\n\n  private ensureParentNode(path: ResponsePath): Trace.Node {\n    const parentPath = responsePathAsString(path.prev);\n    const parentNode = this.nodes.get(parentPath);\n    if (parentNode) {\n      return parentNode;\n    }\n    // Because we set up the root path when creating this.nodes, we now know\n    // that path.prev isn't undefined.\n    return this.newNode(path.prev!);\n  }\n\n  private transformAndNormalizeError(err: GraphQLError): GraphQLError | null {\n    if (this.transformError) {\n      // Before passing the error to the user-provided `transformError` function,\n      // we'll make a shadow copy of the error so the user is free to change\n      // the object as they see fit.\n\n      // At this stage, this error is only for the purposes of reporting, but\n      // this is even more important since this is still a reference to the\n      // original error object and changing it would also change the error which\n      // is returned in the response to the client.\n\n      // For the clone, we'll create a new object which utilizes the exact same\n      // prototype of the error being reported.\n      const clonedError = Object.assign(\n        Object.create(Object.getPrototypeOf(err)),\n        err,\n      );\n\n      const rewrittenError = this.transformError(clonedError);\n\n      // Returning an explicit `null` means the user is requesting that the error\n      // not be reported to Apollo.\n      if (rewrittenError === null) {\n        return null;\n      }\n\n      // We don't want users to be inadvertently not reporting errors, so if\n      // they haven't returned an explicit `GraphQLError` (or `null`, handled\n      // above), then we'll report the error as usual.\n      if (!(rewrittenError instanceof GraphQLError)) {\n        return err;\n      }\n\n      // We only allow transformError to change the message and extensions of the\n      // error; we keep everything else the same. That way people don't have to\n      // do extra work to keep the error on the same trace node. We also keep\n      // extensions the same if it isn't explicitly changed (to, eg, {}). (Note\n      // that many of the fields of GraphQLError are not enumerable and won't\n      // show up in the trace (even in the json field) anyway.)\n      return new GraphQLError(rewrittenError.message, {\n        nodes: err.nodes,\n        source: err.source,\n        positions: err.positions,\n        path: err.path,\n        originalError: err.originalError,\n        extensions: rewrittenError.extensions || err.extensions,\n      });\n    }\n    return err;\n  }\n}\n\n// Converts an hrtime array (as returned from process.hrtime) to nanoseconds.\n//\n// ONLY CALL THIS ON VALUES REPRESENTING DELTAS, NOT ON THE RAW RETURN VALUE\n// FROM process.hrtime() WITH NO ARGUMENTS.\n//\n// The entire point of the hrtime data structure is that the JavaScript Number\n// type can't represent all int64 values without loss of precision:\n// Number.MAX_SAFE_INTEGER nanoseconds is about 104 days. Calling this function\n// on a duration that represents a value less than 104 days is fine. Calling\n// this function on an absolute time (which is generally roughly time since\n// system boot) is not a good idea.\n//\n// XXX We should probably use google.protobuf.Duration on the wire instead of\n// ever trying to store durations in a single number.\nfunction durationHrTimeToNanos(hrtime: [number, number]) {\n  return hrtime[0] * 1e9 + hrtime[1];\n}\n\n// Convert from the linked-list ResponsePath format to a dot-joined\n// string. Includes the full path (field names and array indices).\nfunction responsePathAsString(p?: ResponsePath): string {\n  if (p === undefined) {\n    return '';\n  }\n\n  // A previous implementation used `responsePathAsArray` from `graphql-js/execution`,\n  // however, that employed an approach that created new arrays unnecessarily.\n  let res = String(p.key);\n\n  while ((p = p.prev) !== undefined) {\n    res = `${p.key}.${res}`;\n  }\n\n  return res;\n}\n\nfunction responsePathFromArray(\n  path: ReadonlyArray<string | number>,\n  node: Trace.Node,\n): ResponsePath | undefined {\n  let responsePath: ResponsePath | undefined;\n  let nodePtr: Trace.INode | undefined = node;\n  for (const key of path) {\n    nodePtr = nodePtr?.child?.find((child) => child.responseName === key);\n    responsePath = {\n      key,\n      prev: responsePath,\n      typename: nodePtr?.type ?? undefined,\n    };\n  }\n  return responsePath;\n}\n\nfunction errorToProtobufError(error: GraphQLError): Trace.Error {\n  return new Trace.Error({\n    message: error.message,\n    location: (error.locations || []).map(\n      ({ line, column }) => new Trace.Location({ line, column }),\n    ),\n    json: JSON.stringify(error),\n  });\n}\n\n// Converts a JS Date into a Timestamp.\nexport function dateToProtoTimestamp(date: Date): google.protobuf.Timestamp {\n  const totalMillis = +date;\n  const millis = totalMillis % 1000;\n  return new google.protobuf.Timestamp({\n    seconds: (totalMillis - millis) / 1000,\n    nanos: millis * 1e6,\n  });\n}\n", "import type { Trace } from '@apollo/usage-reporting-protobuf';\n\n/**\n * Iterates over the entire trace, calling `f` on each Trace.Node found. It\n * looks under the \"root\" node as well as any inside the query plan. If any `f`\n * returns true, it stops walking the tree.\n *\n * Each call to `f` will receive an object that implements ResponseNamePath. If\n * `includePath` is true, `f` can call `toArray()` on it to convert the\n * linked-list representation to an array of the response name (field name)\n * nodes that you navigate to get to the node (including a \"service:subgraph\"\n * top-level node if this is a federated trace). Note that we don't add anything\n * to the path for index (list element) nodes. This is because the only use case\n * we have (error path statistics) does not care about list indexes (it's not\n * that interesting to know that sometimes an error was at foo.3.bar and\n * sometimes foo.5.bar, vs just generally foo.bar).\n *\n * If `includePath` is false, we don't bother to build up the linked lists, and\n * calling `toArray()` will throw.\n */\nexport function iterateOverTrace(\n  trace: Trace,\n  f: (node: Trace.INode, path: ResponseNamePath) => boolean,\n  includePath: boolean,\n) {\n  const rootPath = includePath\n    ? new RootCollectingPathsResponseNamePath()\n    : notCollectingPathsResponseNamePath;\n  if (trace.root) {\n    if (iterateOverTraceNode(trace.root, rootPath, f)) return;\n  }\n\n  if (trace.queryPlan) {\n    if (iterateOverQueryPlan(trace.queryPlan, rootPath, f)) return;\n  }\n}\n\n// Helper for iterateOverTrace; returns true to stop the overall walk.\nfunction iterateOverQueryPlan(\n  node: Trace.IQueryPlanNode,\n  rootPath: ResponseNamePath,\n  f: (node: Trace.INode, path: ResponseNamePath) => boolean,\n): boolean {\n  if (!node) return false;\n\n  if (node.fetch?.trace?.root && node.fetch.serviceName) {\n    return iterateOverTraceNode(\n      node.fetch.trace.root,\n      rootPath.child(`service:${node.fetch.serviceName}`),\n      f,\n    );\n  }\n  if (node.flatten?.node) {\n    return iterateOverQueryPlan(node.flatten.node, rootPath, f);\n  }\n  if (node.parallel?.nodes) {\n    // We want to stop as soon as some call returns true, which happens to be\n    // exactly what 'some' does.\n    return node.parallel.nodes.some((node) =>\n      iterateOverQueryPlan(node, rootPath, f),\n    );\n  }\n  if (node.sequence?.nodes) {\n    // We want to stop as soon as some call returns true, which happens to be\n    // exactly what 'some' does.\n    return node.sequence.nodes.some((node) =>\n      iterateOverQueryPlan(node, rootPath, f),\n    );\n  }\n\n  return false;\n}\n\n// Helper for iterateOverTrace; returns true to stop the overall walk.\nfunction iterateOverTraceNode(\n  node: Trace.INode,\n  path: ResponseNamePath,\n  f: (node: Trace.INode, path: ResponseNamePath) => boolean,\n): boolean {\n  // Invoke the function; if it returns true, don't descend and tell callers to\n  // stop walking.\n  if (f(node, path)) {\n    return true;\n  }\n\n  return (\n    // We want to stop as soon as some call returns true, which happens to be\n    // exactly what 'some' does.\n    node.child?.some((child) => {\n      const childPath = child.responseName\n        ? path.child(child.responseName)\n        : path;\n      return iterateOverTraceNode(child, childPath, f);\n    }) ?? false\n  );\n}\n\nexport interface ResponseNamePath {\n  toArray(): string[];\n  child(responseName: string): ResponseNamePath;\n}\n\nconst notCollectingPathsResponseNamePath: ResponseNamePath = {\n  toArray() {\n    throw Error('not collecting paths!');\n  },\n  child() {\n    return this;\n  },\n};\n\ntype CollectingPathsResponseNamePath =\n  | RootCollectingPathsResponseNamePath\n  | ChildCollectingPathsResponseNamePath;\nclass RootCollectingPathsResponseNamePath implements ResponseNamePath {\n  toArray() {\n    return [];\n  }\n  child(responseName: string) {\n    return new ChildCollectingPathsResponseNamePath(responseName, this);\n  }\n}\nclass ChildCollectingPathsResponseNamePath implements ResponseNamePath {\n  constructor(\n    readonly responseName: string,\n    readonly prev: CollectingPathsResponseNamePath,\n  ) {}\n  toArray() {\n    const out = [];\n    let curr: CollectingPathsResponseNamePath = this;\n    while (curr instanceof ChildCollectingPathsResponseNamePath) {\n      out.push(curr.responseName);\n      curr = curr.prev;\n    }\n    return out.reverse();\n  }\n  child(responseName: string) {\n    return new ChildCollectingPathsResponseNamePath(responseName, this);\n  }\n}\n", "export interface DurationHistogramOptions {\n  initSize?: number;\n  buckets?: number[];\n}\nexport class DurationHistogram {\n  // Note that it's legal for the values in \"buckets\" to be non-integers; they\n  // will be floored by toArray (which is called by the protobuf encoder).\n  // (We take advantage of this for field latencies specifically, because\n  // the ability to return a non-1 weight from fieldLevelInstrumentation\n  // means we want to build up our histograms as floating-point rather than\n  // rounding after every operation.)\n  private readonly buckets: number[];\n  static readonly BUCKET_COUNT = 384;\n  static readonly EXPONENT_LOG = Math.log(1.1);\n\n  toArray(): number[] {\n    let bufferedZeroes = 0;\n    const outputArray: number[] = [];\n\n    for (const value of this.buckets) {\n      if (value === 0) {\n        bufferedZeroes++;\n      } else {\n        if (bufferedZeroes === 1) {\n          outputArray.push(0);\n        } else if (bufferedZeroes !== 0) {\n          outputArray.push(-bufferedZeroes);\n        }\n        outputArray.push(Math.floor(value));\n        bufferedZeroes = 0;\n      }\n    }\n    return outputArray;\n  }\n\n  static durationToBucket(durationNs: number): number {\n    const log = Math.log(durationNs / 1000.0);\n    const unboundedBucket = Math.ceil(log / DurationHistogram.EXPONENT_LOG);\n\n    // Compare <= 0 to catch -0 and -infinity\n    return unboundedBucket <= 0 || Number.isNaN(unboundedBucket)\n      ? 0\n      : unboundedBucket >= DurationHistogram.BUCKET_COUNT\n        ? DurationHistogram.BUCKET_COUNT - 1\n        : unboundedBucket;\n  }\n\n  incrementDuration(durationNs: number, value = 1): DurationHistogram {\n    this.incrementBucket(DurationHistogram.durationToBucket(durationNs), value);\n    return this;\n  }\n\n  incrementBucket(bucket: number, value = 1) {\n    if (bucket >= DurationHistogram.BUCKET_COUNT) {\n      // Since we don't have fixed size arrays I'd rather throw the error manually\n      throw Error('Bucket is out of bounds of the buckets array');\n    }\n\n    // Extend the array if we haven't gotten it long enough to handle the new bucket\n    if (bucket >= this.buckets.length) {\n      const oldLength = this.buckets.length;\n      this.buckets.length = bucket + 1;\n      this.buckets.fill(0, oldLength);\n    }\n\n    this.buckets[bucket] += value;\n  }\n\n  combine(otherHistogram: DurationHistogram) {\n    for (let i = 0; i < otherHistogram.buckets.length; i++) {\n      this.incrementBucket(i, otherHistogram.buckets[i]);\n    }\n  }\n\n  constructor(options?: DurationHistogramOptions) {\n    const initSize = options?.initSize || 74;\n    const buckets = options?.buckets;\n\n    const arrayInitSize = Math.max(buckets?.length || 0, initSize);\n\n    this.buckets = Array<number>(arrayInitSize).fill(0);\n\n    if (buckets) {\n      buckets.forEach((val, index) => (this.buckets[index] = val));\n    }\n  }\n}\n", "import { LRUCache } from 'lru-cache';\nimport type { Trace } from '@apollo/usage-reporting-protobuf';\nimport { iterateOverTrace } from './iterateOverTrace.js';\nimport { DurationHistogram } from './durationHistogram.js';\n\nexport function defaultSendOperationsAsTrace() {\n  // We keep an LRU cache mapping from a trace key (which consists of the\n  // operation as defined by statsReportKey, the rough duration of the\n  // operation, what minute the operation ended at, etc) to `true` if we've seen\n  // it recently. We actually split this into one cache per minute so we can\n  // throw away a full minute's worth of cache at once; we keep only the last\n  // three minutes.\n  // Note that if a trace is over a certain size, we will always send it as\n  // stats. We check this within the addTrace function of the OurReport class so\n  // that we don't have to encode these large traces twice.\n  const cache = new LRUCache<string, true>({\n    // 3MiB limit, very much approximately since we can't be sure how V8 might\n    // be storing these strings internally. Though this should be enough to\n    // store a fair amount of trace keys.\n\n    // A future version of this might expose some\n    // configuration option to grow the cache, but ideally, we could do that\n    // dynamically based on the resources available to the server, and not add\n    // more configuration surface area. Hopefully the warning message will allow\n    // us to evaluate the need with more validated input from those that receive\n    // it.\n    maxSize: Math.pow(2, 20),\n    sizeCalculation: (_val, key) => {\n      return (key && Buffer.byteLength(key)) || 0;\n    },\n  });\n\n  return (trace: Trace, statsReportKey: string): boolean => {\n    const endTimeSeconds = trace.endTime?.seconds;\n    if (endTimeSeconds == null) {\n      throw Error('programming error: endTime not set on trace');\n    }\n\n    const hasErrors = traceHasErrors(trace);\n    const cacheKey = JSON.stringify([\n      statsReportKey,\n      DurationHistogram.durationToBucket(trace.durationNs),\n      // What minute it started at\n      Math.floor(endTimeSeconds / 60),\n      // If the trace has an error, send one errored trace per 5 second interval\n      // instead of the normal minutely bucket a non-errored trace takes.\n      hasErrors ? Math.floor(endTimeSeconds / 5) : '',\n    ]);\n\n    // If we've already seen something roughly like this, don't send as a trace.\n    if (cache.get(cacheKey)) {\n      return false;\n    }\n\n    cache.set(cacheKey, true);\n    return true;\n  };\n}\n\n// Returns true if any node on the trace has errors. (If this ends up being a\n// hot spot, we can precalculate it in TraceTreeBuilder.)\nfunction traceHasErrors(trace: Trace): boolean {\n  let hasErrors = false;\n\n  function traceNodeStats(node: Trace.INode): boolean {\n    if ((node.error?.length ?? 0) > 0) {\n      hasErrors = true;\n    }\n    return hasErrors;\n  }\n\n  iterateOverTrace(trace, traceNodeStats, false);\n  return hasErrors;\n}\n", "import type { Logger } from '@apollo/utils.logger';\nimport type { ReferencedFieldsByType } from '@apollo/utils.usagereporting';\nimport { LRUCache } from 'lru-cache';\n\nexport interface OperationDerivedData {\n  signature: string;\n  referencedFieldsByType: ReferencedFieldsByType;\n}\n\nexport function createOperationDerivedDataCache({\n  logger,\n}: {\n  logger: Logger;\n}): LRUCache<string, OperationDerivedData> {\n  let lastWarn: Date;\n  let lastDisposals = 0;\n  return new LRUCache<string, OperationDerivedData>({\n    // Calculate the length of cache objects by the JSON.stringify byteLength.\n    sizeCalculation(obj) {\n      return Buffer.byteLength(JSON.stringify(obj), 'utf8');\n    },\n    // 10MiB limit, very much approximately since we can't be sure how V8 might\n    // be storing this data internally. Though this should be enough to store a\n    // fair amount of operation data, depending on their overall complexity. A\n    // future version of this might expose some configuration option to grow the\n    // cache, but ideally, we could do that dynamically based on the resources\n    // available to the server, and not add more configuration surface area.\n    // Hopefully the warning message will allow us to evaluate the need with\n    // more validated input from those that receive it.\n    maxSize: Math.pow(2, 20) * 10,\n    dispose() {\n      // Count the number of disposals between warning messages.\n      lastDisposals++;\n\n      // Only show a message warning about the high turnover every 60 seconds.\n      if (!lastWarn || new Date().getTime() - lastWarn.getTime() > 60000) {\n        // Log the time that we last displayed the message.\n        lastWarn = new Date();\n        logger.warn(\n          [\n            'This server is processing a high number of unique operations.  ',\n            `A total of ${lastDisposals} records have been `,\n            'ejected from the ApolloServerPluginUsageReporting signature cache in the past ',\n            'interval.  If you see this warning frequently, please open an ',\n            'issue on the Apollo Server repository.',\n          ].join(''),\n        );\n\n        // Reset the disposal counter for the next message interval.\n        lastDisposals = 0;\n      }\n    },\n  });\n}\n\nexport function operationDerivedDataCacheKey(\n  queryHash: string,\n  operationName: string,\n) {\n  return `${queryHash}${operationName && ':' + operationName}`;\n}\n", "import type { NonFtv1ErrorPath } from '@apollo/server-gateway-interface';\nimport {\n  type google,\n  type IContextualizedStats,\n  type IFieldStat,\n  type IPathErrorStats,\n  type IQueryLatencyStats,\n  type IReport,\n  type IStatsContext,\n  type ITracesAndStats,\n  type ITypeStat,\n  type ReportHeader,\n  Trace,\n} from '@apollo/usage-reporting-protobuf';\nimport type { ReferencedFieldsByType } from '@apollo/utils.usagereporting';\nimport { DurationHistogram } from './durationHistogram.js';\nimport { iterateOverTrace, type ResponseNamePath } from './iterateOverTrace.js';\n\n// protobuf.js exports both a class and an interface (starting with I) for each\n// message type. The class is what it produces when it decodes the message; the\n// interface is what is accepted as input. We build up our messages using custom\n// types implementing the interfaces, so that we can take advantage of the\n// js_use_toArray option we added to our protobuf.js fork which allows us to use\n// classes like DurationHistogram to generate repeated fields. We end up\n// re-creating most of the report structure as custom classes (starting with\n// \"Our\"). TypeScript validates that we've properly listed all of the message\n// fields with the appropriate types (we use `Required` to ensure we implement\n// all message fields). Using our own classes has other advantages, like being\n// able to specify that nested messages are instances of the same class rather\n// than the interface type and thus that they have non-null fields (because the\n// interface type allows all fields to be optional, even though the protobuf\n// format doesn't differentiate between missing and falsey).\n\nexport class SizeEstimator {\n  bytes = 0;\n}\nexport class OurReport implements Required<IReport> {\n  // Apollo Server includes each operation either as aggregated stats or as a\n  // trace, but not both. Other reporting agents such as Apollo Router include\n  // all operations in stats (even those that are sent as traces), and they set\n  // this flag to true.\n  tracesPreAggregated = false;\n\n  constructor(readonly header: ReportHeader) {}\n  readonly tracesPerQuery: Record<string, OurTracesAndStats> =\n    Object.create(null);\n  endTime: google.protobuf.ITimestamp | null = null;\n  operationCount = 0;\n  // A rough estimate of the number of bytes currently in the report. We start\n  // at zero and don't count `header` and `endTime`, which have the same size\n  // for every report. This really is a rough estimate, so we don't stress too\n  // much about counting bytes for the tags and string/message lengths, etc:\n  // we mostly just count the lengths of strings plus some estimates for the\n  // messages with a bunch of numbers in them.\n  //\n  // We store this in a class so we can pass it down as a reference to other\n  // methods which increment it.\n  readonly sizeEstimator = new SizeEstimator();\n\n  ensureCountsAreIntegers() {\n    for (const tracesAndStats of Object.values(this.tracesPerQuery)) {\n      tracesAndStats.ensureCountsAreIntegers();\n    }\n  }\n\n  addTrace({\n    statsReportKey,\n    trace,\n    asTrace,\n    referencedFieldsByType,\n    // The max size a trace can be before it is sent as stats. Note that the\n    // Apollo reporting ingress server will never store any traces over 10mb\n    // anyway. They will still be converted to stats as we would do here.\n    maxTraceBytes = 10 * 1024 * 1024,\n    nonFtv1ErrorPaths,\n  }: {\n    statsReportKey: string;\n    trace: Trace;\n    asTrace: boolean;\n    referencedFieldsByType: ReferencedFieldsByType;\n    maxTraceBytes?: number;\n    nonFtv1ErrorPaths: NonFtv1ErrorPath[];\n  }) {\n    const tracesAndStats = this.getTracesAndStats({\n      statsReportKey,\n      referencedFieldsByType,\n    });\n    if (asTrace) {\n      const encodedTrace = Trace.encode(trace).finish();\n\n      if (!isNaN(maxTraceBytes) && encodedTrace.length > maxTraceBytes) {\n        tracesAndStats.statsWithContext.addTrace(\n          trace,\n          this.sizeEstimator,\n          nonFtv1ErrorPaths,\n        );\n      } else {\n        tracesAndStats.trace.push(encodedTrace);\n        this.sizeEstimator.bytes += 2 + encodedTrace.length;\n      }\n    } else {\n      tracesAndStats.statsWithContext.addTrace(\n        trace,\n        this.sizeEstimator,\n        nonFtv1ErrorPaths,\n      );\n    }\n  }\n\n  private getTracesAndStats({\n    statsReportKey,\n    referencedFieldsByType,\n  }: {\n    statsReportKey: string;\n    referencedFieldsByType: ReferencedFieldsByType;\n  }) {\n    const existing = this.tracesPerQuery[statsReportKey];\n    if (existing) {\n      return existing;\n    }\n    this.sizeEstimator.bytes += estimatedBytesForString(statsReportKey);\n\n    // Update the size estimator for the referenced field structure.\n    for (const [typeName, referencedFieldsForType] of Object.entries(\n      referencedFieldsByType,\n    )) {\n      // Two bytes each for the map entry and for the ReferencedFieldsForType,\n      // and for the isInterface bool if it's set.\n      this.sizeEstimator.bytes += 2 + 2;\n      if (referencedFieldsForType.isInterface) {\n        this.sizeEstimator.bytes += 2;\n      }\n      this.sizeEstimator.bytes += estimatedBytesForString(typeName);\n      for (const fieldName of referencedFieldsForType.fieldNames) {\n        this.sizeEstimator.bytes += estimatedBytesForString(fieldName);\n      }\n    }\n\n    // Include the referenced fields map in the report. (In an ideal world we\n    // could have a slightly more sophisticated protocol and ingestion pipeline\n    // that allowed us to only have to send this data once for each\n    // schema/operation pair.)\n    return (this.tracesPerQuery[statsReportKey] = new OurTracesAndStats(\n      referencedFieldsByType,\n    ));\n  }\n}\n\nclass OurTracesAndStats implements Required<ITracesAndStats> {\n  constructor(readonly referencedFieldsByType: ReferencedFieldsByType) {}\n  readonly trace: Uint8Array[] = [];\n  readonly statsWithContext = new StatsByContext();\n  readonly internalTracesContributingToStats: Uint8Array[] = [];\n\n  ensureCountsAreIntegers() {\n    this.statsWithContext.ensureCountsAreIntegers();\n  }\n}\n\nclass StatsByContext {\n  readonly map: { [k: string]: OurContextualizedStats } = Object.create(null);\n\n  /**\n   * This function is used by the protobuf generator to convert this map into\n   * an array of contextualized stats to serialize\n   */\n  toArray(): IContextualizedStats[] {\n    return Object.values(this.map);\n  }\n\n  ensureCountsAreIntegers() {\n    for (const contextualizedStats of Object.values(this.map)) {\n      contextualizedStats.ensureCountsAreIntegers();\n    }\n  }\n\n  addTrace(\n    trace: Trace,\n    sizeEstimator: SizeEstimator,\n    nonFtv1ErrorPaths: NonFtv1ErrorPath[],\n  ) {\n    this.getContextualizedStats(trace, sizeEstimator).addTrace(\n      trace,\n      sizeEstimator,\n      nonFtv1ErrorPaths,\n    );\n  }\n\n  private getContextualizedStats(\n    trace: Trace,\n    sizeEstimator: SizeEstimator,\n  ): OurContextualizedStats {\n    const statsContext: IStatsContext = {\n      clientName: trace.clientName,\n      clientVersion: trace.clientVersion,\n    };\n    const statsContextKey = JSON.stringify(statsContext);\n\n    const existing = this.map[statsContextKey];\n    if (existing) {\n      return existing;\n    }\n    // Adding a ContextualizedStats means adding a StatsContext plus a\n    // QueryLatencyStats. Let's guess about 20 bytes for a QueryLatencyStats;\n    // it'll be more if more features are used (like cache, APQ, etc).\n    sizeEstimator.bytes +=\n      20 +\n      estimatedBytesForString(trace.clientName) +\n      estimatedBytesForString(trace.clientVersion);\n    const contextualizedStats = new OurContextualizedStats(statsContext);\n    this.map[statsContextKey] = contextualizedStats;\n    return contextualizedStats;\n  }\n}\n\nexport class OurContextualizedStats implements Required<IContextualizedStats> {\n  queryLatencyStats = new OurQueryLatencyStats();\n  perTypeStat: { [k: string]: OurTypeStat } = Object.create(null);\n\n  constructor(readonly context: IStatsContext) {}\n\n  ensureCountsAreIntegers() {\n    for (const typeStat of Object.values(this.perTypeStat)) {\n      typeStat.ensureCountsAreIntegers();\n    }\n  }\n\n  // Extract statistics from the trace, and increment the estimated report size.\n  // We only add to the estimate when adding whole sub-messages. If it really\n  // mattered, we could do a lot more careful things like incrementing it\n  // whenever a numeric field on queryLatencyStats gets incremented over 0.\n  addTrace(\n    trace: Trace,\n    sizeEstimator: SizeEstimator,\n    nonFtv1ErrorPaths: NonFtv1ErrorPath[] = [],\n  ) {\n    const { fieldExecutionWeight } = trace;\n    if (!fieldExecutionWeight) {\n      this.queryLatencyStats.requestsWithoutFieldInstrumentation++;\n    }\n\n    this.queryLatencyStats.requestCount++;\n    if (trace.fullQueryCacheHit) {\n      this.queryLatencyStats.cacheLatencyCount.incrementDuration(\n        trace.durationNs,\n      );\n      this.queryLatencyStats.cacheHits++;\n    } else {\n      this.queryLatencyStats.latencyCount.incrementDuration(trace.durationNs);\n    }\n\n    // We only provide stats about cache TTLs on cache misses (ie, TTLs directly\n    // calculated by the backend), not for cache hits. This matches the\n    // behavior we've had for a while when converting traces into statistics\n    // in Studio's servers.\n    if (!trace.fullQueryCacheHit && trace.cachePolicy?.maxAgeNs != null) {\n      switch (trace.cachePolicy.scope) {\n        case Trace.CachePolicy.Scope.PRIVATE:\n          this.queryLatencyStats.privateCacheTtlCount.incrementDuration(\n            trace.cachePolicy.maxAgeNs,\n          );\n          break;\n        case Trace.CachePolicy.Scope.PUBLIC:\n          this.queryLatencyStats.publicCacheTtlCount.incrementDuration(\n            trace.cachePolicy.maxAgeNs,\n          );\n          break;\n      }\n    }\n\n    if (trace.persistedQueryHit) {\n      this.queryLatencyStats.persistedQueryHits++;\n    }\n    if (trace.persistedQueryRegister) {\n      this.queryLatencyStats.persistedQueryMisses++;\n    }\n\n    if (trace.forbiddenOperation) {\n      this.queryLatencyStats.forbiddenOperationCount++;\n    }\n    if (trace.registeredOperation) {\n      this.queryLatencyStats.registeredOperationCount++;\n    }\n\n    let hasError = false;\n\n    const errorPathStats = new Set<OurPathErrorStats>();\n\n    const traceNodeStats = (node: Trace.INode, path: ResponseNamePath) => {\n      // Generate error stats and error path information\n      if (node.error?.length) {\n        hasError = true;\n\n        let currPathErrorStats = this.queryLatencyStats.rootErrorStats;\n        path.toArray().forEach((subPath) => {\n          currPathErrorStats = currPathErrorStats.getChild(\n            subPath,\n            sizeEstimator,\n          );\n        });\n\n        errorPathStats.add(currPathErrorStats);\n        currPathErrorStats.errorsCount += node.error.length;\n      }\n\n      if (fieldExecutionWeight) {\n        // The actual field name behind the node; originalFieldName is set\n        // if an alias was used, otherwise responseName. (This is falsey for\n        // nodes that are not fields (root, array index, etc).)\n        const fieldName = node.originalFieldName || node.responseName;\n\n        // Protobuf doesn't really differentiate between \"unset\" and \"falsey\" so\n        // we're mostly actually checking that these things are non-empty string /\n        // non-zero numbers. The time fields represent the number of nanoseconds\n        // since the beginning of the entire trace, so let's pretend for the\n        // moment that it's plausible for a node to start or even end exactly when\n        // the trace started (ie, for the time values to be 0). This is unlikely\n        // in practice (everything should take at least 1ns). In practice we only\n        // write `type` and `parentType` on a Node when we write `startTime`, so\n        // the main thing we're looking out for by checking the time values is\n        // whether we somehow failed to write `endTime` at the end of the field;\n        // in this case, the `endTime >= startTime` check won't match.\n        if (\n          node.parentType &&\n          fieldName &&\n          node.type &&\n          node.endTime != null &&\n          node.startTime != null &&\n          node.endTime >= node.startTime\n        ) {\n          const typeStat = this.getTypeStat(node.parentType, sizeEstimator);\n\n          const fieldStat = typeStat.getFieldStat(\n            fieldName,\n            node.type,\n            sizeEstimator,\n          );\n\n          fieldStat.errorsCount += node.error?.length ?? 0;\n          fieldStat.observedExecutionCount++;\n          fieldStat.estimatedExecutionCount += fieldExecutionWeight;\n          // Note: this is actually counting the number of resolver calls for this\n          // field that had at least one error, not the number of overall GraphQL\n          // queries that had at least one error for this field. That doesn't seem\n          // to match the name, but it does match the other implementations of this\n          // logic.\n          fieldStat.requestsWithErrorsCount +=\n            (node.error?.length ?? 0) > 0 ? 1 : 0;\n          fieldStat.latencyCount.incrementDuration(\n            node.endTime - node.startTime,\n            // The latency histogram is always \"estimated\"; we don't track\n            // \"observed\" and \"estimated\" separately.\n            fieldExecutionWeight,\n          );\n        }\n      }\n\n      return false;\n    };\n\n    iterateOverTrace(trace, traceNodeStats, true);\n\n    // iterate over nonFtv1ErrorPaths, using some bits from traceNodeStats function\n    for (const { subgraph, path } of nonFtv1ErrorPaths) {\n      hasError = true;\n      if (path) {\n        let currPathErrorStats = this.queryLatencyStats.rootErrorStats.getChild(\n          `service:${subgraph}`,\n          sizeEstimator,\n        );\n        path.forEach((subPath) => {\n          if (typeof subPath === 'string') {\n            currPathErrorStats = currPathErrorStats.getChild(\n              subPath,\n              sizeEstimator,\n            );\n          }\n        });\n\n        errorPathStats.add(currPathErrorStats);\n        currPathErrorStats.errorsCount += 1;\n      }\n    }\n\n    for (const errorPath of errorPathStats) {\n      errorPath.requestsWithErrorsCount += 1;\n    }\n\n    if (hasError) {\n      this.queryLatencyStats.requestsWithErrorsCount++;\n    }\n  }\n\n  getTypeStat(parentType: string, sizeEstimator: SizeEstimator): OurTypeStat {\n    const existing = this.perTypeStat[parentType];\n    if (existing) {\n      return existing;\n    }\n    sizeEstimator.bytes += estimatedBytesForString(parentType);\n    const typeStat = new OurTypeStat();\n    this.perTypeStat[parentType] = typeStat;\n    return typeStat;\n  }\n}\n\nclass OurQueryLatencyStats implements Required<IQueryLatencyStats> {\n  latencyCount: DurationHistogram = new DurationHistogram();\n  requestCount = 0;\n  requestsWithoutFieldInstrumentation = 0;\n  cacheHits = 0;\n  persistedQueryHits = 0;\n  persistedQueryMisses = 0;\n  cacheLatencyCount: DurationHistogram = new DurationHistogram();\n  rootErrorStats: OurPathErrorStats = new OurPathErrorStats();\n  requestsWithErrorsCount = 0;\n  publicCacheTtlCount: DurationHistogram = new DurationHistogram();\n  privateCacheTtlCount: DurationHistogram = new DurationHistogram();\n  registeredOperationCount = 0;\n  forbiddenOperationCount = 0;\n}\n\nclass OurPathErrorStats implements Required<IPathErrorStats> {\n  children: { [k: string]: OurPathErrorStats } = Object.create(null);\n  errorsCount = 0;\n  requestsWithErrorsCount = 0;\n\n  getChild(subPath: string, sizeEstimator: SizeEstimator): OurPathErrorStats {\n    const existing = this.children[subPath];\n    if (existing) {\n      return existing;\n    }\n    const child = new OurPathErrorStats();\n    this.children[subPath] = child;\n    // Include a few bytes in the estimate for the numbers etc.\n    sizeEstimator.bytes += estimatedBytesForString(subPath) + 4;\n    return child;\n  }\n}\n\nclass OurTypeStat implements Required<ITypeStat> {\n  perFieldStat: { [k: string]: OurFieldStat } = Object.create(null);\n\n  getFieldStat(\n    fieldName: string,\n    returnType: string,\n    sizeEstimator: SizeEstimator,\n  ): OurFieldStat {\n    const existing = this.perFieldStat[fieldName];\n    if (existing) {\n      return existing;\n    }\n    // Rough estimate of 10 bytes for the numbers in the FieldStat.\n    sizeEstimator.bytes +=\n      estimatedBytesForString(fieldName) +\n      estimatedBytesForString(returnType) +\n      10;\n    const fieldStat = new OurFieldStat(returnType);\n    this.perFieldStat[fieldName] = fieldStat;\n    return fieldStat;\n  }\n\n  ensureCountsAreIntegers() {\n    for (const fieldStat of Object.values(this.perFieldStat)) {\n      fieldStat.ensureCountsAreIntegers();\n    }\n  }\n}\n\nclass OurFieldStat implements Required<IFieldStat> {\n  errorsCount = 0;\n  observedExecutionCount = 0;\n  // Note that this number isn't necessarily an integer while it is being\n  // aggregated. Before encoding as a protobuf we call ensureCountsAreIntegers\n  // which floors it.\n  estimatedExecutionCount = 0;\n  requestsWithErrorsCount = 0;\n  latencyCount: DurationHistogram = new DurationHistogram();\n\n  constructor(readonly returnType: string) {}\n\n  ensureCountsAreIntegers() {\n    // This is the only one that ever can receive non-integers.\n    this.estimatedExecutionCount = Math.floor(this.estimatedExecutionCount);\n  }\n}\n\nfunction estimatedBytesForString(s: string) {\n  // 2 is for the tag (field ID + wire type) plus the encoded length. (The\n  // encoded length takes up more than 1 byte for strings that are longer than\n  // 127 bytes, but this is an estimate.)\n  return 2 + Buffer.byteLength(s);\n}\n", "import { Trace } from '@apollo/usage-reporting-protobuf';\nimport type { VariableValueOptions } from './options.js';\n\n// Creates trace details from request variables, given a specification for modifying\n// values of private or sensitive variables.\n// The details will include all variable names and their (possibly hidden or modified) values.\n// If sendVariableValues is {all: bool}, {none: bool} or {exceptNames: Array}, the option will act similarly to\n// to the to-be-deprecated options.privateVariables, except that the redacted variable\n// names will still be visible in the UI even if the values are hidden.\n// If sendVariableValues is null or undefined, we default to the {none: true} case.\nexport function makeTraceDetails(\n  variables: Record<string, any>,\n  sendVariableValues?: VariableValueOptions,\n  operationString?: string,\n): Trace.Details {\n  const details = new Trace.Details();\n  const variablesToRecord = (() => {\n    if (sendVariableValues && 'transform' in sendVariableValues) {\n      const originalKeys = Object.keys(variables);\n      try {\n        // Custom function to allow user to specify what variablesJson will look like\n        const modifiedVariables = sendVariableValues.transform({\n          variables: variables,\n          operationString: operationString,\n        });\n        return cleanModifiedVariables(originalKeys, modifiedVariables);\n      } catch (e) {\n        // If the custom function provided by the user throws an exception,\n        // change all the variable values to an appropriate error message.\n        return handleVariableValueTransformError(originalKeys);\n      }\n    } else {\n      return variables;\n    }\n  })();\n\n  // Note: we explicitly do *not* include the details.rawQuery field. The\n  // Studio web app currently does nothing with this other than store it in\n  // the database and offer it up via its GraphQL API, and sending it means\n  // that using calculateSignature to hide sensitive data in the query\n  // string is ineffective.\n  Object.keys(variablesToRecord).forEach((name) => {\n    if (\n      !sendVariableValues ||\n      ('none' in sendVariableValues && sendVariableValues.none) ||\n      ('all' in sendVariableValues && !sendVariableValues.all) ||\n      ('exceptNames' in sendVariableValues &&\n        // We assume that most users will have only a few variables values to hide,\n        // or will just set {none: true}; we can change this\n        // linear-time operation if it causes real performance issues.\n        sendVariableValues.exceptNames.includes(name)) ||\n      ('onlyNames' in sendVariableValues &&\n        !sendVariableValues.onlyNames.includes(name))\n    ) {\n      // Special case for private variables. Note that this is a different\n      // representation from a variable containing the empty string, as that\n      // will be sent as '\"\"'.\n      details.variablesJson![name] = '';\n    } else {\n      try {\n        details.variablesJson![name] =\n          typeof variablesToRecord[name] === 'undefined'\n            ? ''\n            : JSON.stringify(variablesToRecord[name]);\n      } catch (e) {\n        details.variablesJson![name] = JSON.stringify(\n          '[Unable to convert value to JSON]',\n        );\n      }\n    }\n  });\n  return details;\n}\n\nfunction handleVariableValueTransformError(\n  variableNames: string[],\n): Record<string, any> {\n  const modifiedVariables = Object.create(null);\n  variableNames.forEach((name) => {\n    modifiedVariables[name] = '[PREDICATE_FUNCTION_ERROR]';\n  });\n  return modifiedVariables;\n}\n\n// Helper for makeTraceDetails() to enforce that the keys of a modified 'variables'\n// matches that of the original 'variables'\nfunction cleanModifiedVariables(\n  originalKeys: Array<string>,\n  modifiedVariables: Record<string, any>,\n): Record<string, any> {\n  const cleanedVariables: Record<string, any> = Object.create(null);\n  originalKeys.forEach((name) => {\n    cleanedVariables[name] = modifiedVariables[name];\n  });\n  return cleanedVariables;\n}\n", "export const packageVersion = \"5.3.0\";\n", "import {\n  type GraphQLSchema,\n  isObjectType,\n  isScalarType,\n  isNonNullType,\n} from 'graphql';\n\n// Returns true if it appears that the schema was appears to be of a subgraph\n// (eg, returned from @apollo/subgraph's buildSubgraphSchema). This strategy\n// avoids depending explicitly on @apollo/subgraph or relying on something that\n// might not survive transformations like monkey-patching a boolean field onto\n// the schema.\n//\n// This is used for two things:\n// 1) Determining whether traces should be added to responses if requested with\n//    an HTTP header. If you want to include these traces even for non-subgraphs\n//    (when requested via header, eg for Apollo Explorer's trace view) you can\n//    use ApolloServerPluginInlineTrace explicitly; if you want to never include\n//    these traces even for subgraphs you can use\n//    ApolloServerPluginInlineTraceDisabled.\n// 2) Determining whether schema-reporting should be allowed; subgraphs cannot\n//    report schemas, and we accordingly throw if it's attempted.\nexport function schemaIsSubgraph(schema: GraphQLSchema): boolean {\n  const serviceType = schema.getType('_Service');\n  if (!isObjectType(serviceType)) {\n    return false;\n  }\n  const sdlField = serviceType.getFields().sdl;\n  if (!sdlField) {\n    return false;\n  }\n\n  let sdlFieldType = sdlField.type;\n  if (isNonNullType(sdlFieldType)) {\n    sdlFieldType = sdlFieldType.ofType;\n  }\n  if (!isScalarType(sdlFieldType)) {\n    return false;\n  }\n  return sdlFieldType.name == 'String';\n}\n", "import { Report, ReportHeader, Trace } from '@apollo/usage-reporting-protobuf';\nimport type { Fetcher, FetcherResponse } from '@apollo/utils.fetcher';\nimport {\n  usageReportingSignature,\n  calculateReferencedFieldsByType,\n  type ReferencedFieldsByType,\n} from '@apollo/utils.usagereporting';\nimport retry from 'async-retry';\nimport { type GraphQLSchema, printSchema } from 'graphql';\nimport { type LRUCache } from 'lru-cache';\nimport os from 'os';\nimport { gzip } from 'zlib';\nimport type {\n  ApolloServerPlugin,\n  BaseContext,\n  GraphQLRequestContext,\n  GraphQLRequestContextDidResolveOperation,\n  GraphQLRequestContextWillSendResponse,\n  GraphQLRequestListener,\n  GraphQLServerListener,\n} from '../../externalTypes/index.js';\nimport { internalPlugin } from '../../internalPlugin.js';\nimport { dateToProtoTimestamp, TraceTreeBuilder } from '../traceTreeBuilder.js';\nimport { defaultSendOperationsAsTrace } from './defaultSendOperationsAsTrace.js';\nimport {\n  createOperationDerivedDataCache,\n  type OperationDerivedData,\n  operationDerivedDataCacheKey,\n} from './operationDerivedDataCache.js';\nimport type {\n  ApolloServerPluginUsageReportingOptions,\n  SendValuesBaseOptions,\n} from './options.js';\nimport { OurReport } from './stats.js';\nimport { makeTraceDetails } from './traceDetails.js';\nimport { packageVersion } from '../../generated/packageVersion.js';\nimport { computeCoreSchemaHash } from '../../utils/computeCoreSchemaHash.js';\nimport type { HeaderMap } from '../../utils/HeaderMap.js';\nimport { schemaIsSubgraph } from '../schemaIsSubgraph.js';\n\nconst reportHeaderDefaults = {\n  hostname: os.hostname(),\n  agentVersion: `@apollo/server@${packageVersion}`,\n  runtimeVersion: `node ${process.version}`,\n  // XXX not actually uname, but what node has easily.\n  uname: `${os.platform()}, ${os.type()}, ${os.release()}, ${os.arch()})`,\n};\n\nexport function ApolloServerPluginUsageReporting<TContext extends BaseContext>(\n  options: ApolloServerPluginUsageReportingOptions<TContext> = Object.create(\n    null,\n  ),\n): ApolloServerPlugin<TContext> {\n  const fieldLevelInstrumentationOption = options.fieldLevelInstrumentation;\n  const fieldLevelInstrumentation =\n    typeof fieldLevelInstrumentationOption === 'number'\n      ? async () =>\n          Math.random() < fieldLevelInstrumentationOption\n            ? 1 / fieldLevelInstrumentationOption\n            : 0\n      : fieldLevelInstrumentationOption\n        ? fieldLevelInstrumentationOption\n        : async () => true;\n\n  let requestDidStartHandler:\n    | ((\n        requestContext: GraphQLRequestContext<TContext>,\n      ) => GraphQLRequestListener<TContext>)\n    | null = null;\n  return internalPlugin({\n    __internal_plugin_id__: 'UsageReporting',\n    __is_disabled_plugin__: false,\n\n    // We want to be able to access locals from `serverWillStart` in our `requestDidStart`, thus\n    // this little hack. (Perhaps we should also allow GraphQLServerListener to contain\n    // a requestDidStart?)\n    async requestDidStart(requestContext: GraphQLRequestContext<TContext>) {\n      if (requestDidStartHandler) {\n        return requestDidStartHandler(requestContext);\n      }\n      // This happens if usage reporting is disabled (eg because this is a\n      // subgraph).\n      return {};\n    },\n\n    async serverWillStart({\n      logger: serverLogger,\n      apollo,\n      startedInBackground,\n      schema,\n    }): Promise<GraphQLServerListener> {\n      // Use the plugin-specific logger if one is provided; otherwise the general server one.\n      const logger = options.logger ?? serverLogger;\n      const { key, graphRef } = apollo;\n      if (!(key && graphRef)) {\n        throw new Error(\n          \"You've enabled usage reporting via ApolloServerPluginUsageReporting, \" +\n            'but you also need to provide your Apollo API key and graph ref, via ' +\n            'the APOLLO_KEY/APOLLO_GRAPH_REF environment ' +\n            'variables or via `new ApolloServer({apollo: {key, graphRef})`.',\n        );\n      }\n\n      if (schemaIsSubgraph(schema)) {\n        if (options.__onlyIfSchemaIsNotSubgraph) {\n          logger.warn(\n            'You have specified an Apollo API key and graph ref but this server appears ' +\n              'to be a subgraph. Typically usage reports are sent to Apollo by your Router ' +\n              'or Gateway, not directly from your subgraph; usage reporting is disabled. To ' +\n              'enable usage reporting anyway, explicitly install `ApolloServerPluginUsageReporting`. ' +\n              'To disable this warning, install `ApolloServerPluginUsageReportingDisabled`.',\n          );\n          // This early return means we don't start background timers, don't\n          // register serverDidStart, don't assign requestDidStartHandler, etc.\n          return {};\n        } else {\n          // This is just a warning; usage reporting is still enabled. If it\n          // turns out there are lots of people who really need to have this odd\n          // setup and they don't like the warning, we can provide a new option\n          // to disable the warning (or they can filter in their `logger`).\n          logger.warn(\n            'You have installed `ApolloServerPluginUsageReporting` but this server appears to ' +\n              'be a subgraph. Typically usage reports are sent to Apollo by your Router ' +\n              'or Gateway, not directly from your subgraph. If this was unintentional, remove ' +\n              \"`ApolloServerPluginUsageReporting` from your server's `plugins` array.\",\n          );\n        }\n      }\n\n      logger.info(\n        'Apollo usage reporting starting! See your graph at ' +\n          `https://studio.apollographql.com/graph/${encodeURI(graphRef)}/`,\n      );\n\n      // If sendReportsImmediately is not specified, we default to true if we're running\n      // with the ApolloServer designed for Lambda or similar. That's because these\n      // environments aren't designed around letting us run a background task to\n      // send reports later or hook into container destruction to flush buffered reports.\n      const sendReportsImmediately =\n        options.sendReportsImmediately ?? startedInBackground;\n\n      // Since calculating the signature and referenced fields for usage\n      // reporting is potentially an expensive operation, we'll cache the data\n      // we generate and re-use them for repeated operations for the same\n      // `queryHash`. However, because referenced fields depend on the current\n      // schema, we want to throw it out entirely any time the schema changes.\n      let operationDerivedDataCache: {\n        forSchema: GraphQLSchema;\n        cache: LRUCache<string, OperationDerivedData>;\n      } | null = null;\n\n      // This map maps from executable schema ID (schema hash, basically) to the\n      // report we'll send about it. That's because when we're using a gateway,\n      // the schema can change over time, but each report needs to be about a\n      // single schema. We avoid having this function be a memory leak by\n      // removing values from it when we're in the process of sending reports.\n      // That means we have to be very careful never to pull a Report out of it\n      // and hang on to it for a while before writing to it, because the report\n      // might have gotten sent and discarded in the meantime. So you should\n      // only access the values of this Map via\n      // getReportWhichMustBeUsedImmediately and getAndDeleteReport, and never\n      // hang on to the value returned by getReportWhichMustBeUsedImmediately.\n      const reportByExecutableSchemaId = new Map<string, OurReport>();\n      const getReportWhichMustBeUsedImmediately = (\n        executableSchemaId: string,\n      ): OurReport => {\n        const existing = reportByExecutableSchemaId.get(executableSchemaId);\n        if (existing) {\n          return existing;\n        }\n        const report = new OurReport(\n          new ReportHeader({\n            ...reportHeaderDefaults,\n            executableSchemaId,\n            graphRef,\n          }),\n        );\n        reportByExecutableSchemaId.set(executableSchemaId, report);\n        return report;\n      };\n      const getAndDeleteReport = (\n        executableSchemaId: string,\n      ): OurReport | null => {\n        const report = reportByExecutableSchemaId.get(executableSchemaId);\n        if (report) {\n          reportByExecutableSchemaId.delete(executableSchemaId);\n          return report;\n        }\n        return null;\n      };\n\n      const overriddenExecutableSchemaId = options.overrideReportedSchema\n        ? computeCoreSchemaHash(options.overrideReportedSchema)\n        : undefined;\n\n      let lastSeenExecutableSchemaToId:\n        | {\n            executableSchema: GraphQLSchema;\n            executableSchemaId: string;\n          }\n        | undefined;\n\n      let reportTimer: NodeJS.Timeout | undefined;\n      if (!sendReportsImmediately) {\n        reportTimer = setInterval(\n          () => sendAllReportsAndReportErrors(),\n          options.reportIntervalMs || 10 * 1000,\n        );\n      }\n\n      // We don't send traces if the user set `sendTraces: false`. We also may\n      // set this to false later if the usage-reporting ingress informs us that\n      // this graph does not support viewing traces.\n      let sendTraces = options.sendTraces ?? true;\n      const sendOperationAsTrace =\n        options.experimental_sendOperationAsTrace ??\n        defaultSendOperationsAsTrace();\n\n      let stopped = false;\n\n      function executableSchemaIdForSchema(schema: GraphQLSchema) {\n        if (lastSeenExecutableSchemaToId?.executableSchema === schema) {\n          return lastSeenExecutableSchemaToId.executableSchemaId;\n        }\n        const id = computeCoreSchemaHash(printSchema(schema));\n\n        // We override this variable every time we get a new schema so we cache\n        // the last seen value. It is a single-entry cache.\n        lastSeenExecutableSchemaToId = {\n          executableSchema: schema,\n          executableSchemaId: id,\n        };\n\n        return id;\n      }\n\n      async function sendAllReportsAndReportErrors(): Promise<void> {\n        await Promise.all(\n          [...reportByExecutableSchemaId.keys()].map((executableSchemaId) =>\n            sendReportAndReportErrors(executableSchemaId),\n          ),\n        );\n      }\n\n      async function sendReportAndReportErrors(\n        executableSchemaId: string,\n      ): Promise<void> {\n        return sendReport(executableSchemaId).catch((err) => {\n          // This catch block is primarily intended to catch network errors from\n          // the retried request itself, which include network errors and non-2xx\n          // HTTP errors.\n          if (options.reportErrorFunction) {\n            options.reportErrorFunction(err);\n          } else {\n            logger.error(err.message);\n          }\n        });\n      }\n\n      // Needs to be an arrow function to be confident that key is defined.\n      const sendReport = async (executableSchemaId: string): Promise<void> => {\n        let report = getAndDeleteReport(executableSchemaId);\n        if (\n          !report ||\n          (Object.keys(report.tracesPerQuery).length === 0 &&\n            report.operationCount === 0)\n        ) {\n          return;\n        }\n\n        // Set the report's overall end time. This is the timestamp that will be\n        // associated with the summarized statistics.\n        report.endTime = dateToProtoTimestamp(new Date());\n\n        report.ensureCountsAreIntegers();\n\n        const protobufError = Report.verify(report);\n        if (protobufError) {\n          throw new Error(`Error verifying report: ${protobufError}`);\n        }\n        let message: Uint8Array | null = Report.encode(report).finish();\n        // Let the original protobuf object be garbage collected (helpful if the\n        // HTTP request hangs).\n        report = null;\n\n        // Potential follow-up: we can compare message.length to\n        // report.sizeEstimator.bytes and use it to \"learn\" if our estimation is\n        // off and adjust it based on what we learn.\n\n        if (options.debugPrintReports) {\n          // We decode the report rather than printing the original `report`\n          // so that it includes all of the pre-encoded traces.\n          const decodedReport = Report.decode(message);\n          logger.info(\n            `Apollo usage report: ${JSON.stringify(decodedReport.toJSON())}`,\n          );\n        }\n\n        const compressed = await new Promise<Buffer>((resolve, reject) => {\n          gzip(message!, (error, result) => {\n            error ? reject(error) : resolve(result);\n          });\n        });\n        // Let the uncompressed message be garbage collected (helpful if the\n        // HTTP request is slow).\n        message = null;\n\n        // Wrap fetcher with async-retry for automatic retrying\n        const fetcher: Fetcher = options.fetcher ?? fetch;\n        const response: FetcherResponse = await retry(\n          // Retry on network errors and 5xx HTTP\n          // responses.\n          async () => {\n            const curResponse = await fetcher(\n              (options.endpointUrl ||\n                'https://usage-reporting.api.apollographql.com') +\n                '/api/ingress/traces',\n              {\n                method: 'POST',\n                headers: {\n                  'user-agent': 'ApolloServerPluginUsageReporting',\n                  'x-api-key': key,\n                  'content-encoding': 'gzip',\n                  accept: 'application/json',\n                },\n                body: compressed,\n                signal: AbortSignal.timeout(options.requestTimeoutMs ?? 30_000),\n              },\n            );\n\n            if (curResponse.status >= 500 && curResponse.status < 600) {\n              throw new Error(\n                `HTTP status ${curResponse.status}, ${\n                  (await curResponse.text()) || '(no body)'\n                }`,\n              );\n            } else {\n              return curResponse;\n            }\n          },\n          {\n            retries: (options.maxAttempts || 5) - 1,\n            minTimeout: options.minimumRetryDelayMs || 100,\n            factor: 2,\n          },\n        ).catch((err: Error) => {\n          throw new Error(\n            `Error sending report to Apollo servers: ${err.message}`,\n          );\n        });\n\n        if (response.status < 200 || response.status >= 300) {\n          // Note that we don't expect to see a 3xx here because request follows\n          // redirects.\n          throw new Error(\n            `Error sending report to Apollo servers: HTTP status ${\n              response.status\n            }, ${(await response.text()) || '(no body)'}`,\n          );\n        }\n\n        if (\n          sendTraces &&\n          response.status === 200 &&\n          response.headers\n            .get('content-type')\n            ?.match(/^\\s*application\\/json\\s*(?:;|$)/i)\n        ) {\n          const body = await response.text();\n          let parsedBody;\n          try {\n            parsedBody = JSON.parse(body);\n          } catch (e) {\n            throw new Error(`Error parsing response from Apollo servers: ${e}`);\n          }\n          if (parsedBody.tracesIgnored === true) {\n            logger.debug(\n              \"This graph's organization does not have access to traces; sending all \" +\n                'subsequent operations as stats.',\n            );\n            sendTraces = false;\n          }\n        }\n        if (options.debugPrintReports) {\n          logger.info(`Apollo usage report: status ${response.status}`);\n        }\n      };\n\n      requestDidStartHandler = ({\n        metrics,\n        schema,\n        request: { http, variables },\n      }): GraphQLRequestListener<TContext> => {\n        const treeBuilder: TraceTreeBuilder = new TraceTreeBuilder({\n          maskedBy: 'ApolloServerPluginUsageReporting',\n          sendErrors: options.sendErrors,\n        });\n        treeBuilder.startTiming();\n        metrics.startHrTime = treeBuilder.startHrTime;\n        let graphqlValidationFailure = false;\n        let graphqlUnknownOperationName = false;\n        let includeOperationInUsageReporting: boolean | null = null;\n\n        if (http) {\n          treeBuilder.trace.http = new Trace.HTTP({\n            method:\n              Trace.HTTP.Method[\n                http.method as keyof typeof Trace.HTTP.Method\n              ] || Trace.HTTP.Method.UNKNOWN,\n          });\n\n          if (options.sendHeaders) {\n            makeHTTPRequestHeaders(\n              treeBuilder.trace.http,\n              http.headers,\n              options.sendHeaders,\n            );\n          }\n        }\n\n        // After this function completes, includeOperationInUsageReporting is\n        // defined.\n        async function maybeCallIncludeRequestHook(\n          requestContext:\n            | GraphQLRequestContextDidResolveOperation<TContext>\n            | GraphQLRequestContextWillSendResponse<TContext>,\n        ): Promise<void> {\n          // If this is the second call in `willSendResponse` after\n          // `didResolveOperation`, we're done.\n          if (includeOperationInUsageReporting !== null) return;\n\n          if (typeof options.includeRequest !== 'function') {\n            // Default case we always report\n            includeOperationInUsageReporting = true;\n            return;\n          }\n          includeOperationInUsageReporting =\n            await options.includeRequest(requestContext);\n\n          // Help the user understand they've returned an unexpected value,\n          // which might be a subtle mistake.\n          if (typeof includeOperationInUsageReporting !== 'boolean') {\n            logger.warn(\n              \"The 'includeRequest' async predicate function must return a boolean value.\",\n            );\n            includeOperationInUsageReporting = true;\n          }\n        }\n\n        // Our usage reporting groups everything by operation, so we don't\n        // actually report about any issues that prevent us from getting an\n        // operation string (eg, a missing operation, or APQ problems).\n        // This is effectively bypassing the reporting of:\n        //   - PersistedQueryNotFoundError\n        //   - PersistedQueryNotSupportedError\n        //   - Missing `query` error\n        // We may want to report them some other way later!\n        let didResolveSource = false;\n\n        return {\n          async didResolveSource(requestContext) {\n            didResolveSource = true;\n\n            if (metrics.persistedQueryHit) {\n              treeBuilder.trace.persistedQueryHit = true;\n            }\n            if (metrics.persistedQueryRegister) {\n              treeBuilder.trace.persistedQueryRegister = true;\n            }\n\n            if (variables) {\n              treeBuilder.trace.details = makeTraceDetails(\n                variables,\n                options.sendVariableValues,\n                requestContext.source,\n              );\n            }\n\n            const clientInfo = (\n              options.generateClientInfo || defaultGenerateClientInfo\n            )(requestContext);\n            if (clientInfo) {\n              // While there is a clientAddress protobuf field, the backend\n              // doesn't pay attention to it yet, so we'll ignore it for now.\n              const { clientName, clientVersion } = clientInfo;\n              treeBuilder.trace.clientVersion = clientVersion || '';\n              treeBuilder.trace.clientName = clientName || '';\n            }\n          },\n          async validationDidStart() {\n            return async (validationErrors?: ReadonlyArray<Error>) => {\n              graphqlValidationFailure = validationErrors\n                ? validationErrors.length !== 0\n                : false;\n            };\n          },\n          async didResolveOperation(requestContext) {\n            // If operation is undefined then `getOperationAST` returned null\n            // and an unknown operation was specified.\n            graphqlUnknownOperationName =\n              requestContext.operation === undefined;\n            await maybeCallIncludeRequestHook(requestContext);\n\n            if (\n              includeOperationInUsageReporting &&\n              // No need to capture traces if the operation is going to\n              // immediately fail due to unknown operation name.\n              !graphqlUnknownOperationName\n            ) {\n              if (metrics.captureTraces === undefined) {\n                // We're not completely ignoring the operation. But should we\n                // calculate a detailed trace of every field while we do so (either\n                // directly in this plugin, or in a subgraph by sending the\n                // apollo-federation-include-trace header)? That will allow this\n                // operation to contribute to the \"field executions\" column in the\n                // Studio Fields page, to the timing hints in Explorer and\n                // vscode-graphql, and to the traces visible under Operations. (Note\n                // that `true` here does not imply that this operation will\n                // necessarily be *sent* to the usage-reporting endpoint in the form\n                // of a trace --- it still might be aggregated into stats first. But\n                // capturing a trace will mean we can understand exactly what fields\n                // were executed and what their performance was, at the tradeoff of\n                // some overhead for tracking the trace (and transmitting it between\n                // subgraph and gateway).\n                const rawWeight =\n                  await fieldLevelInstrumentation(requestContext);\n                treeBuilder.trace.fieldExecutionWeight =\n                  typeof rawWeight === 'number' ? rawWeight : rawWeight ? 1 : 0;\n\n                metrics.captureTraces =\n                  !!treeBuilder.trace.fieldExecutionWeight;\n              }\n            }\n          },\n          async executionDidStart() {\n            // If we're not capturing traces, don't return a willResolveField so\n            // that we don't build up a detailed trace inside treeBuilder. (We still\n            // will use treeBuilder as a convenient place to put top-level facts\n            // about the operation which can end up aggregated as stats, and we do\n            // eventually put *errors* onto the trace tree.)\n            if (!metrics.captureTraces) return;\n\n            return {\n              willResolveField({ info }) {\n                return treeBuilder.willResolveField(info);\n                // We could save the error into the trace during the end handler, but\n                // it won't have all the information that graphql-js adds to it later,\n                // like 'locations'.\n              },\n            };\n          },\n\n          async didEncounterSubsequentErrors(_requestContext, errors) {\n            treeBuilder.didEncounterErrors(errors);\n          },\n\n          async willSendSubsequentPayload(requestContext, payload) {\n            if (!payload.hasNext) {\n              await operationFinished(requestContext);\n            }\n          },\n\n          async willSendResponse(requestContext) {\n            // Search above for a comment about \"didResolveSource\" to see which\n            // of the pre-source-resolution errors we are intentionally avoiding.\n            if (!didResolveSource) return;\n            if (requestContext.errors) {\n              treeBuilder.didEncounterErrors(requestContext.errors);\n            }\n\n            // If there isn't any defer/stream coming later, we're done.\n            // Otherwise willSendSubsequentPayload will trigger\n            // operationFinished.\n            if (requestContext.response.body.kind === 'single') {\n              await operationFinished(requestContext);\n            }\n          },\n        };\n\n        async function operationFinished(\n          requestContext: GraphQLRequestContextWillSendResponse<TContext>,\n        ) {\n          const resolvedOperation = !!requestContext.operation;\n\n          // If we got an error before we called didResolveOperation (eg parse or\n          // validation error), check to see if we should include the request.\n          await maybeCallIncludeRequestHook(requestContext);\n\n          treeBuilder.stopTiming();\n          const executableSchemaId =\n            overriddenExecutableSchemaId ?? executableSchemaIdForSchema(schema);\n\n          if (includeOperationInUsageReporting === false) {\n            if (resolvedOperation) {\n              getReportWhichMustBeUsedImmediately(executableSchemaId)\n                .operationCount++;\n            }\n            return;\n          }\n\n          treeBuilder.trace.fullQueryCacheHit = !!metrics.responseCacheHit;\n          treeBuilder.trace.forbiddenOperation = !!metrics.forbiddenOperation;\n          treeBuilder.trace.registeredOperation = !!metrics.registeredOperation;\n\n          const policyIfCacheable =\n            requestContext.overallCachePolicy.policyIfCacheable();\n          if (policyIfCacheable) {\n            treeBuilder.trace.cachePolicy = new Trace.CachePolicy({\n              scope:\n                policyIfCacheable.scope === 'PRIVATE'\n                  ? Trace.CachePolicy.Scope.PRIVATE\n                  : policyIfCacheable.scope === 'PUBLIC'\n                    ? Trace.CachePolicy.Scope.PUBLIC\n                    : Trace.CachePolicy.Scope.UNKNOWN,\n              // Convert from seconds to ns.\n              maxAgeNs: policyIfCacheable.maxAge * 1e9,\n            });\n          }\n\n          // If this was a federated operation and we're the gateway, add the query plan\n          // to the trace.\n          if (metrics.queryPlanTrace) {\n            treeBuilder.trace.queryPlan = metrics.queryPlanTrace;\n          }\n\n          // Intentionally un-awaited so as not to block the response.  Any\n          // errors will be logged, but will not manifest a user-facing error.\n          // The logger in this case is a request specific logger OR the logger\n          // defined by the plugin if that's unavailable.  The request-specific\n          // logger is preferred since this is very much coupled directly to a\n          // client-triggered action which might be more granularly tagged by\n          // logging implementations.\n          addTrace().catch(logger.error.bind(logger));\n\n          async function addTrace(): Promise<void> {\n            // Ignore traces that come in after stop().\n            if (stopped) {\n              return;\n            }\n\n            // Ensure that the caller of addTrace (which does not await it) is\n            // not blocked. We use setImmediate rather than process.nextTick or\n            // just relying on the Promise microtask queue because setImmediate\n            // comes after IO, which is what we want.\n            await new Promise((res) => setImmediate(res));\n\n            const executableSchemaId =\n              overriddenExecutableSchemaId ??\n              executableSchemaIdForSchema(schema);\n\n            const { trace } = treeBuilder;\n\n            let statsReportKey: string | undefined = undefined;\n            let referencedFieldsByType: ReferencedFieldsByType;\n            if (!requestContext.document) {\n              statsReportKey = `## GraphQLParseFailure\\n`;\n            } else if (graphqlValidationFailure) {\n              statsReportKey = `## GraphQLValidationFailure\\n`;\n            } else if (graphqlUnknownOperationName) {\n              statsReportKey = `## GraphQLUnknownOperationName\\n`;\n            }\n\n            const isExecutable = statsReportKey === undefined;\n\n            if (statsReportKey) {\n              if (options.sendUnexecutableOperationDocuments) {\n                trace.unexecutedOperationBody = requestContext.source;\n                // Get the operation name from the request (which might not\n                // correspond to an actual operation).\n                trace.unexecutedOperationName =\n                  requestContext.request.operationName || '';\n              }\n              referencedFieldsByType = Object.create(null);\n            } else {\n              const operationDerivedData = getOperationDerivedData();\n              statsReportKey = `# ${requestContext.operationName || '-'}\\n${\n                operationDerivedData.signature\n              }`;\n              referencedFieldsByType =\n                operationDerivedData.referencedFieldsByType;\n            }\n\n            const protobufError = Trace.verify(trace);\n            if (protobufError) {\n              throw new Error(`Error encoding trace: ${protobufError}`);\n            }\n\n            if (resolvedOperation) {\n              getReportWhichMustBeUsedImmediately(executableSchemaId)\n                .operationCount++;\n            }\n\n            getReportWhichMustBeUsedImmediately(executableSchemaId).addTrace({\n              statsReportKey,\n              trace,\n              // We include the operation as a trace (rather than aggregated into stats) only if:\n              // * the user didn't set `sendTraces: false` AND\n              // * it's possible that the organization's plan allows for viewing traces AND\n              // * we captured this as a full trace AND\n              // * gateway reported no errors missing ftv1 data AND\n              // * sendOperationAsTrace says so\n              //\n              // (As an edge case, if the reason metrics.captureTraces is\n              // falsey is that this is an unexecutable operation and thus we\n              // never ran the code in didResolveOperation that sets\n              // metrics.captureTrace, we allow it to be sent as a trace. This\n              // means we'll still send some parse and validation failures as\n              // traces, for the sake of the Errors page.)\n              asTrace:\n                sendTraces &&\n                (!isExecutable || !!metrics.captureTraces) &&\n                !metrics.nonFtv1ErrorPaths?.length &&\n                sendOperationAsTrace(trace, statsReportKey),\n              referencedFieldsByType,\n              nonFtv1ErrorPaths: metrics.nonFtv1ErrorPaths ?? [],\n            });\n\n            // If the buffer gets big (according to our estimate), send.\n            if (\n              sendReportsImmediately ||\n              getReportWhichMustBeUsedImmediately(executableSchemaId)\n                .sizeEstimator.bytes >=\n                (options.maxUncompressedReportSize || 4 * 1024 * 1024)\n            ) {\n              await sendReportAndReportErrors(executableSchemaId);\n            }\n          }\n\n          // Calculates signature and referenced fields for the current document.\n          // Only call this when the document properly parses and validates and\n          // the given operation name (if any) is known!\n          function getOperationDerivedData(): OperationDerivedData {\n            if (!requestContext.document) {\n              // This shouldn't happen: no document means parse failure, which\n              // uses its own special statsReportKey.\n              throw new Error('No document?');\n            }\n\n            const cacheKey = operationDerivedDataCacheKey(\n              requestContext.queryHash,\n              requestContext.operationName || '',\n            );\n\n            // Ensure that the cache we have is for the right schema.\n            if (\n              !operationDerivedDataCache ||\n              operationDerivedDataCache.forSchema !== schema\n            ) {\n              operationDerivedDataCache = {\n                forSchema: schema,\n                cache: createOperationDerivedDataCache({ logger }),\n              };\n            }\n\n            // If we didn't have the signature in the cache, we'll resort to\n            // calculating it.\n            const cachedOperationDerivedData =\n              operationDerivedDataCache.cache.get(cacheKey);\n            if (cachedOperationDerivedData) {\n              return cachedOperationDerivedData;\n            }\n\n            const generatedSignature = (\n              options.calculateSignature || usageReportingSignature\n            )(requestContext.document, requestContext.operationName || '');\n\n            const generatedOperationDerivedData: OperationDerivedData = {\n              signature: generatedSignature,\n              referencedFieldsByType: calculateReferencedFieldsByType({\n                document: requestContext.document,\n                schema,\n                resolvedOperationName: requestContext.operationName ?? null,\n              }),\n            };\n\n            // Note that this cache is always an in-memory cache.\n            // If we replace it with a more generic async cache, we should\n            // not await the write operation.\n            operationDerivedDataCache.cache.set(\n              cacheKey,\n              generatedOperationDerivedData,\n            );\n            return generatedOperationDerivedData;\n          }\n        }\n      };\n\n      return {\n        async serverWillStop() {\n          if (reportTimer) {\n            clearInterval(reportTimer);\n            reportTimer = undefined;\n          }\n\n          stopped = true;\n          await sendAllReportsAndReportErrors();\n        },\n      };\n    },\n  });\n}\n\nexport function makeHTTPRequestHeaders(\n  http: Trace.IHTTP,\n  headers: HeaderMap,\n  sendHeaders?: SendValuesBaseOptions,\n): void {\n  if (\n    !sendHeaders ||\n    ('none' in sendHeaders && sendHeaders.none) ||\n    ('all' in sendHeaders && !sendHeaders.all)\n  ) {\n    return;\n  }\n  for (const [key, value] of headers) {\n    // Note that HeaderMap keys are already lower-case.\n    if (\n      ('exceptNames' in sendHeaders &&\n        // We assume that most users only have a few headers to hide, or will\n        // just set {none: true} ; we can change this linear-time\n        // operation if it causes real performance issues.\n        sendHeaders.exceptNames.some((exceptHeader) => {\n          // Headers are case-insensitive, and should be compared as such.\n          return exceptHeader.toLowerCase() === key;\n        })) ||\n      ('onlyNames' in sendHeaders &&\n        !sendHeaders.onlyNames.some((header) => {\n          return header.toLowerCase() === key;\n        }))\n    ) {\n      continue;\n    }\n\n    switch (key) {\n      case 'authorization':\n      case 'cookie':\n      case 'set-cookie':\n        break;\n      default:\n        http!.requestHeaders![key] = new Trace.HTTP.Values({\n          value: [value],\n        });\n    }\n  }\n}\n\nfunction defaultGenerateClientInfo<TContext extends BaseContext>({\n  request,\n}: GraphQLRequestContext<TContext>) {\n  const clientNameHeaderKey = 'apollographql-client-name';\n  const clientVersionHeaderKey = 'apollographql-client-version';\n\n  // Default to using the `apollo-client-x` header fields if present.\n  // If none are present, fallback on the `clientInfo` query extension\n  // for backwards compatibility.\n  // The default value if neither header values nor query extension is\n  // set is the empty String for all fields (as per protobuf defaults)\n  if (\n    request.http?.headers?.get(clientNameHeaderKey) ||\n    request.http?.headers?.get(clientVersionHeaderKey)\n  ) {\n    return {\n      clientName: request.http?.headers?.get(clientNameHeaderKey),\n      clientVersion: request.http?.headers?.get(clientVersionHeaderKey),\n    };\n  } else if (request.extensions?.clientInfo) {\n    return request.extensions.clientInfo;\n  } else {\n    return {};\n  }\n}\n", "export { ApolloServerPluginUsageReporting } from './plugin.js';\nexport type {\n  ApolloServerPluginUsageReportingOptions,\n  SendValuesBaseOptions,\n  VariableValueOptions,\n  SendErrorsOptions,\n  ClientInfo,\n  GenerateClientInfo,\n} from './options.js';\n", "import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n    byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n    return (byteToHex[arr[offset + 0]] +\n        byteToHex[arr[offset + 1]] +\n        byteToHex[arr[offset + 2]] +\n        byteToHex[arr[offset + 3]] +\n        '-' +\n        byteToHex[arr[offset + 4]] +\n        byteToHex[arr[offset + 5]] +\n        '-' +\n        byteToHex[arr[offset + 6]] +\n        byteToHex[arr[offset + 7]] +\n        '-' +\n        byteToHex[arr[offset + 8]] +\n        byteToHex[arr[offset + 9]] +\n        '-' +\n        byteToHex[arr[offset + 10]] +\n        byteToHex[arr[offset + 11]] +\n        byteToHex[arr[offset + 12]] +\n        byteToHex[arr[offset + 13]] +\n        byteToHex[arr[offset + 14]] +\n        byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n    const uuid = unsafeStringify(arr, offset);\n    if (!validate(uuid)) {\n        throw TypeError('Stringified UUID is invalid');\n    }\n    return uuid;\n}\nexport default stringify;\n", "import { randomFillSync } from 'crypto';\nconst rnds8Pool = new Uint8Array(256);\nlet poolPtr = rnds8Pool.length;\nexport default function rng() {\n    if (poolPtr > rnds8Pool.length - 16) {\n        randomFillSync(rnds8Pool);\n        poolPtr = 0;\n    }\n    return rnds8Pool.slice(poolPtr, (poolPtr += 16));\n}\n", "import { randomUUID } from 'crypto';\nexport default { randomUUID };\n", "import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction v4(options, buf, offset) {\n    if (native.randomUUID && !buf && !options) {\n        return native.randomUUID();\n    }\n    options = options || {};\n    const rnds = options.random ?? options.rng?.() ?? rng();\n    if (rnds.length < 16) {\n        throw new Error('Random bytes length must be >= 16');\n    }\n    rnds[6] = (rnds[6] & 0x0f) | 0x40;\n    rnds[8] = (rnds[8] & 0x3f) | 0x80;\n    if (buf) {\n        offset = offset || 0;\n        if (offset < 0 || offset + 16 > buf.length) {\n            throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n        }\n        for (let i = 0; i < 16; ++i) {\n            buf[offset + i] = rnds[i];\n        }\n        return buf;\n    }\n    return unsafeStringify(rnds);\n}\nexport default v4;\n", "export { default as MAX } from './max.js';\nexport { default as NIL } from './nil.js';\nexport { default as parse } from './parse.js';\nexport { default as stringify } from './stringify.js';\nexport { default as v1 } from './v1.js';\nexport { default as v1ToV6 } from './v1ToV6.js';\nexport { default as v3 } from './v3.js';\nexport { default as v4 } from './v4.js';\nexport { default as v5 } from './v5.js';\nexport { default as v6 } from './v6.js';\nexport { default as v6ToV1 } from './v6ToV1.js';\nexport { default as v7 } from './v7.js';\nexport { default as validate } from './validate.js';\nexport { default as version } from './version.js';\n", "import type { GraphQLRequest } from '../../externalTypes/index.js';\nimport type { Logger } from '@apollo/utils.logger';\nimport type {\n  SchemaReport,\n  SchemaReportMutationVariables,\n  SchemaReportMutation,\n  ReportSchemaResponse,\n} from './generated/operations';\nimport type { Fetcher } from '@apollo/utils.fetcher';\nimport { packageVersion } from '../../generated/packageVersion.js';\n\n// Magic GraphQL comment allows codegen to find the query\n// prettier-ignore\nexport const schemaReportGql = /* GraphQL */ `#graphql\n  mutation SchemaReport($report: SchemaReport!, $coreSchema: String) {\n    reportSchema(report: $report, coreSchema: $coreSchema) {\n      __typename\n      ... on ReportSchemaError {\n        message\n        code\n      }\n      ... on ReportSchemaResponse {\n        inSeconds\n        withCoreSchema\n      }\n    }\n  }\n`;\n\n// This class is meant to be a thin shim around the gql mutations.\nexport class SchemaReporter {\n  // These mirror the gql variables\n  private readonly schemaReport: SchemaReport;\n  private readonly coreSchema: string;\n  private readonly endpointUrl: string;\n  private readonly logger: Logger;\n  private readonly initialReportingDelayInMs: number;\n  private readonly fallbackReportingDelayInMs: number;\n  private readonly fetcher: Fetcher;\n\n  private isStopped: boolean;\n  private pollTimer?: NodeJS.Timeout;\n  private readonly headers: Record<string, string>;\n\n  constructor(options: {\n    schemaReport: SchemaReport;\n    coreSchema: string;\n    apiKey: string;\n    endpointUrl: string | undefined;\n    logger: Logger;\n    initialReportingDelayInMs: number;\n    fallbackReportingDelayInMs: number;\n    fetcher?: Fetcher;\n  }) {\n    this.headers = {\n      'Content-Type': 'application/json',\n      'x-api-key': options.apiKey,\n      'apollographql-client-name': 'ApolloServerPluginSchemaReporting',\n      'apollographql-client-version': packageVersion,\n    };\n\n    this.endpointUrl =\n      options.endpointUrl ||\n      'https://schema-reporting.api.apollographql.com/api/graphql';\n\n    this.schemaReport = options.schemaReport;\n    this.coreSchema = options.coreSchema;\n    this.isStopped = false;\n    this.logger = options.logger;\n    this.initialReportingDelayInMs = options.initialReportingDelayInMs;\n    this.fallbackReportingDelayInMs = options.fallbackReportingDelayInMs;\n    this.fetcher = options.fetcher ?? fetch;\n  }\n\n  public stopped(): boolean {\n    return this.isStopped;\n  }\n\n  public start() {\n    this.pollTimer = setTimeout(\n      () => this.sendOneReportAndScheduleNext(false),\n      this.initialReportingDelayInMs,\n    );\n  }\n\n  public stop() {\n    this.isStopped = true;\n    if (this.pollTimer) {\n      clearTimeout(this.pollTimer);\n      this.pollTimer = undefined;\n    }\n  }\n\n  private async sendOneReportAndScheduleNext(sendNextWithCoreSchema: boolean) {\n    this.pollTimer = undefined;\n\n    // Bail out permanently\n    if (this.stopped()) return;\n    try {\n      const result = await this.reportSchema(sendNextWithCoreSchema);\n      if (!result) {\n        return;\n      }\n      if (!this.stopped()) {\n        this.pollTimer = setTimeout(\n          () => this.sendOneReportAndScheduleNext(result.withCoreSchema),\n          result.inSeconds * 1000,\n        );\n      }\n      return;\n    } catch (error) {\n      // In the case of an error we want to continue looping\n      // We can add hardcoded backoff in the future,\n      // or on repeated failures stop responding reporting.\n      this.logger.error(\n        `Error reporting server info to Apollo during schema reporting: ${error}`,\n      );\n      if (!this.stopped()) {\n        this.pollTimer = setTimeout(\n          () => this.sendOneReportAndScheduleNext(false),\n          this.fallbackReportingDelayInMs,\n        );\n      }\n    }\n  }\n\n  public async reportSchema(\n    withCoreSchema: boolean,\n  ): Promise<ReportSchemaResponse | null> {\n    const { data, errors } = await this.apolloQuery({\n      report: this.schemaReport,\n      coreSchema: withCoreSchema ? this.coreSchema : null,\n    });\n\n    if (errors) {\n      throw new Error(errors.map((x: any) => x.message).join('\\n'));\n    }\n\n    function msgForUnexpectedResponse(data: any): string {\n      return [\n        'Unexpected response shape from Apollo when',\n        'reporting schema. If this continues, please reach',\n        'out to support@apollographql.com.',\n        'Received response:',\n        JSON.stringify(data),\n      ].join(' ');\n    }\n\n    if (!data || !data.reportSchema) {\n      throw new Error(msgForUnexpectedResponse(data));\n    }\n\n    if (data.reportSchema.__typename === 'ReportSchemaResponse') {\n      return data.reportSchema;\n    } else if (data.reportSchema.__typename === 'ReportSchemaError') {\n      this.logger.error(\n        [\n          'Received input validation error from Apollo:',\n          data.reportSchema.message,\n          'Stopping reporting. Please fix the input errors.',\n        ].join(' '),\n      );\n      this.stop();\n      return null;\n    }\n    throw new Error(msgForUnexpectedResponse(data));\n  }\n\n  private async apolloQuery(\n    variables: SchemaReportMutationVariables,\n  ): Promise<{ data?: SchemaReportMutation; errors?: any[] }> {\n    const request: GraphQLRequest = {\n      query: schemaReportGql,\n      variables,\n    };\n\n    const httpResponse = await this.fetcher(this.endpointUrl, {\n      method: 'POST',\n      headers: this.headers,\n      body: JSON.stringify(request),\n    });\n\n    if (!httpResponse.ok) {\n      throw new Error(\n        [\n          `An unexpected HTTP status code (${httpResponse.status}) was`,\n          'encountered during schema reporting.',\n        ].join(' '),\n      );\n    }\n\n    try {\n      // JSON parsing failure due to malformed data is the likely failure case\n      // here.  Any non-JSON response (e.g. HTML) is usually the suspect.\n      return await httpResponse.json();\n    } catch (error) {\n      throw new Error(\n        [\n          \"Couldn't report schema to Apollo.\",\n          'Parsing response as JSON failed.',\n          'If this continues please reach out to support@apollographql.com',\n          error,\n        ].join(' '),\n      );\n    }\n  }\n}\n", "import os from 'os';\nimport { internalPlugin } from '../../internalPlugin.js';\nimport { v4 as uuidv4 } from 'uuid';\nimport { printSchema, validateSchema, buildSchema } from 'graphql';\nimport { SchemaReporter } from './schemaReporter.js';\nimport { schemaIsSubgraph } from '../schemaIsSubgraph.js';\nimport type { SchemaReport } from './generated/operations.js';\nimport type { ApolloServerPlugin } from '../../externalTypes/index.js';\nimport type { Fetcher } from '@apollo/utils.fetcher';\nimport { packageVersion } from '../../generated/packageVersion.js';\nimport { computeCoreSchemaHash } from '../../utils/computeCoreSchemaHash.js';\n\nexport interface ApolloServerPluginSchemaReportingOptions {\n  /**\n   * The schema reporter waits before starting reporting.\n   * By default, the report waits some random amount of time between 0 and 10 seconds.\n   * A longer interval leads to more staggered starts which means it is less likely\n   * multiple servers will get asked to upload the same schema.\n   *\n   * If this server runs in lambda or in other constrained environments it would be useful\n   * to decrease the schema reporting max wait time to be less than default.\n   *\n   * This number will be the max for the range in ms that the schema reporter will\n   * wait before starting to report.\n   */\n  initialDelayMaxMs?: number;\n  /**\n   * Override the reported schema that is reported to the Apollo registry. This\n   * schema does not go through any normalizations and the string is directly\n   * sent to the Apollo registry. This can be useful for comments or other\n   * ordering and whitespace changes that get stripped when generating a\n   * `GraphQLSchema`.\n   *\n   * **If you pass this option to this plugin, you should explicitly configure\n   * `ApolloServerPluginUsageReporting` and pass the same value to its\n   * `overrideReportedSchema` option.** This ensures that the schema ID\n   * associated with requests reported by the usage reporting plugin matches the\n   * schema ID that this plugin reports. For example:\n   *\n   * ```js\n   * new ApolloServer({\n   *   plugins: [\n   *     ApolloServerPluginSchemaReporting({overrideReportedSchema: schema}),\n   *     ApolloServerPluginUsageReporting({overrideReportedSchema: schema}),\n   *   ],\n   * })\n   * ```\n   */\n  overrideReportedSchema?: string;\n  /**\n   * The URL to use for reporting schemas. Primarily for testing and internal\n   * Apollo use.\n   */\n  endpointUrl?: string;\n  /**\n   * Specifies which Fetch API implementation to use when reporting schemas.\n   */\n  fetcher?: Fetcher;\n}\n\nexport function ApolloServerPluginSchemaReporting(\n  {\n    initialDelayMaxMs,\n    overrideReportedSchema,\n    endpointUrl,\n    fetcher,\n  }: ApolloServerPluginSchemaReportingOptions = Object.create(null),\n): ApolloServerPlugin {\n  const bootId = uuidv4();\n\n  return internalPlugin({\n    __internal_plugin_id__: 'SchemaReporting',\n    __is_disabled_plugin__: false,\n    async serverWillStart({ apollo, schema, logger }) {\n      const { key, graphRef } = apollo;\n      if (!key) {\n        throw Error(\n          'To use ApolloServerPluginSchemaReporting, you must provide an Apollo API ' +\n            'key, via the APOLLO_KEY environment variable or via `new ApolloServer({apollo: {key})`',\n        );\n      }\n      if (!graphRef) {\n        // This error is a bit imprecise as you can also specify ID and variant separately,\n        // or rely on API-key parsing (before AS3), but this is \"best practices\".\n        throw Error(\n          'To use ApolloServerPluginSchemaReporting, you must provide your graph ref (eg, ' +\n            \"'my-graph-id@my-graph-variant'). Try setting the APOLLO_GRAPH_REF environment \" +\n            'variable or passing `new ApolloServer({apollo: {graphRef}})`.',\n        );\n      }\n\n      // Ensure a provided override schema can be parsed and validated\n      if (overrideReportedSchema) {\n        try {\n          const validationErrors = validateSchema(\n            buildSchema(overrideReportedSchema, { noLocation: true }),\n          );\n          if (validationErrors.length) {\n            throw new Error(\n              validationErrors.map((error) => error.message).join('\\n'),\n            );\n          }\n        } catch (err) {\n          throw new Error(\n            'The schema provided to overrideReportedSchema failed to parse or ' +\n              `validate: ${(err as Error).message}`,\n          );\n        }\n      }\n\n      if (schemaIsSubgraph(schema)) {\n        throw Error(\n          [\n            'Schema reporting is not yet compatible with Apollo Federation subgraphs.',\n            \"If you're interested in using schema reporting with subgraphs,\",\n            'please contact Apollo support. To set up managed federation, see',\n            'https://go.apollo.dev/s/managed-federation',\n          ].join(' '),\n        );\n      }\n\n      if (endpointUrl !== undefined) {\n        logger.info(\n          `Apollo schema reporting: schema reporting URL override: ${endpointUrl}`,\n        );\n      }\n\n      const baseSchemaReport: Omit<SchemaReport, 'coreSchemaHash'> = {\n        bootId,\n        graphRef,\n        // The infra environment in which this edge server is running, e.g. localhost, Kubernetes\n        // Length must be <= 256 characters.\n        platform: process.env.APOLLO_SERVER_PLATFORM || 'local',\n        runtimeVersion: `node ${process.version}`,\n        // An identifier used to distinguish the version of the server code such as git or docker sha.\n        // Length must be <= 256 characters\n        userVersion: process.env.APOLLO_SERVER_USER_VERSION,\n        // \"An identifier for the server instance. Length must be <= 256 characters.\n        serverId:\n          process.env.APOLLO_SERVER_ID || process.env.HOSTNAME || os.hostname(),\n        libraryVersion: `@apollo/server@${packageVersion}`,\n      };\n      let currentSchemaReporter: SchemaReporter | undefined;\n\n      return {\n        schemaDidLoadOrUpdate({ apiSchema, coreSupergraphSdl }): void {\n          if (overrideReportedSchema !== undefined) {\n            if (currentSchemaReporter) {\n              // When the schema to report has been overridden, there is no need\n              // to create a new schema reporter.\n              return;\n            } else {\n              logger.info(\n                'Apollo schema reporting: schema to report has been overridden',\n              );\n            }\n          }\n\n          const coreSchema =\n            overrideReportedSchema ??\n            coreSupergraphSdl ??\n            printSchema(apiSchema);\n          const coreSchemaHash = computeCoreSchemaHash(coreSchema);\n          const schemaReport: SchemaReport = {\n            ...baseSchemaReport,\n            coreSchemaHash,\n          };\n\n          currentSchemaReporter?.stop();\n          currentSchemaReporter = new SchemaReporter({\n            schemaReport,\n            coreSchema,\n            apiKey: key,\n            endpointUrl,\n            logger,\n            // Jitter the startup between 0 and 10 seconds\n            initialReportingDelayInMs: Math.floor(\n              Math.random() * (initialDelayMaxMs ?? 10_000),\n            ),\n            fallbackReportingDelayInMs: 20_000,\n            fetcher,\n          });\n          currentSchemaReporter.start();\n\n          logger.info(\n            'Apollo schema reporting: reporting a new schema to Studio! See your graph at ' +\n              `https://studio.apollographql.com/graph/${encodeURI(\n                graphRef,\n              )}/ with server info ${JSON.stringify(schemaReport)}`,\n          );\n        },\n        async serverWillStop() {\n          currentSchemaReporter?.stop();\n        },\n      };\n    },\n  });\n}\n", "import { Trace } from '@apollo/usage-reporting-protobuf';\nimport { TraceTreeBuilder } from '../traceTreeBuilder.js';\nimport type { SendErrorsOptions } from '../usageReporting/index.js';\nimport { internalPlugin } from '../../internalPlugin.js';\nimport { schemaIsSubgraph } from '../schemaIsSubgraph.js';\nimport type { ApolloServerPlugin } from '../../externalTypes/index.js';\n\nexport interface ApolloServerPluginInlineTraceOptions {\n  /**\n   * By default, if a trace contains errors, the errors are included in the\n   * trace with the message `<masked>`. The errors are associated with specific\n   * paths in the operation, but do not include the original error message or\n   * any extensions such as the error `code`, as those details may contain your\n   * users' private data. The extension `maskedBy:\n   * 'ApolloServerPluginInlineTrace'` is added.\n   *\n   * If you'd like details about the error included in traces, set this option.\n   * This option can take several forms:\n   *\n   * - { masked: true }: mask error messages and omit extensions (DEFAULT)\n   * - { unmodified: true }: include all error messages and extensions\n   * - { transform: ... }: a custom function for transforming errors. This\n   *   function receives a `GraphQLError` and may return a `GraphQLError`\n   *   (either a new error, or its potentially-modified argument) or `null`.\n   *   This error is used in the trace; if `null`, the error is not included in\n   *   traces or error statistics.\n   */\n  includeErrors?: SendErrorsOptions;\n  /**\n   * This option is for internal use by `@apollo/server` only.\n   *\n   * By default we want to enable this plugin for subgraph schemas only, but we\n   * need to come up with our list of plugins before we have necessarily loaded\n   * the schema. So (unless the user installs this plugin or\n   * ApolloServerPluginInlineTraceDisabled themselves), `@apollo/server` always\n   * installs this plugin and uses this option to make sure traces are only\n   * included if the schema appears to be a subgraph.\n   */\n  __onlyIfSchemaIsSubgraph?: boolean;\n}\n\n// This ftv1 plugin produces a base64'd Trace protobuf containing only the\n// durationNs, startTime, endTime, and root fields.  This output is placed\n// on the `extensions`.`ftv1` property of the response.  The Apollo Gateway\n// utilizes this data to construct the full trace and submit it to Apollo's\n// usage reporting ingress.\nexport function ApolloServerPluginInlineTrace(\n  options: ApolloServerPluginInlineTraceOptions = Object.create(null),\n): ApolloServerPlugin {\n  let enabled: boolean | null = options.__onlyIfSchemaIsSubgraph ? null : true;\n  return internalPlugin({\n    __internal_plugin_id__: 'InlineTrace',\n    __is_disabled_plugin__: false,\n    async serverWillStart({ schema, logger }) {\n      // Handle the case that the plugin was implicitly installed. We only want it\n      // to actually be active if the schema appears to be federated. If you don't\n      // like the log line, just install `ApolloServerPluginInlineTrace()` in\n      // `plugins` yourself.\n      if (enabled === null) {\n        enabled = schemaIsSubgraph(schema);\n        if (enabled) {\n          logger.info(\n            'Enabling inline tracing for this subgraph. To disable, use ' +\n              'ApolloServerPluginInlineTraceDisabled.',\n          );\n        }\n      }\n    },\n    async requestDidStart({ request: { http }, metrics }) {\n      if (!enabled) {\n        return;\n      }\n\n      const treeBuilder = new TraceTreeBuilder({\n        maskedBy: 'ApolloServerPluginInlineTrace',\n        sendErrors: options.includeErrors,\n      });\n\n      // XXX Provide a mechanism to customize this logic.\n      if (http?.headers.get('apollo-federation-include-trace') !== 'ftv1') {\n        return;\n      }\n\n      // If some other (user-written?) plugin already decided that we are not\n      // capturing traces, then we should not capture traces.\n      if (metrics.captureTraces === false) {\n        return;\n      }\n\n      // Note that this will override any `fieldLevelInstrumentation` parameter\n      // to the usage reporting plugin for requests with the\n      // `apollo-federation-include-trace` header set.\n      metrics.captureTraces = true;\n\n      treeBuilder.startTiming();\n\n      return {\n        async executionDidStart() {\n          return {\n            willResolveField({ info }) {\n              return treeBuilder.willResolveField(info);\n            },\n          };\n        },\n\n        async didEncounterErrors({ errors }) {\n          treeBuilder.didEncounterErrors(errors);\n        },\n\n        async willSendResponse({ response }) {\n          // We record the end time at the latest possible time: right before serializing the trace.\n          // If we wait any longer, the time we record won't actually be sent anywhere!\n          treeBuilder.stopTiming();\n\n          // For now, we don't support inline traces on incremental delivery\n          // responses. (We could perhaps place the trace on the final chunk, or\n          // even deliver it bit by bit. For now, since Gateway does not support\n          // incremental delivery and Router does not pass through defers to\n          // subgraphs, this doesn't affect the \"federated tracing\" use case,\n          // though it does affect the ability to look at inline traces in other\n          // tools like Explorer.\n          if (response.body.kind === 'incremental') {\n            return;\n          }\n\n          // If we're in a gateway, include the query plan (and subgraph traces)\n          // in the inline trace. This is designed more for manually querying\n          // your graph while running locally to see what the query planner is\n          // doing rather than for running in production.\n          if (metrics.queryPlanTrace) {\n            treeBuilder.trace.queryPlan = metrics.queryPlanTrace;\n          }\n\n          const encodedUint8Array = Trace.encode(treeBuilder.trace).finish();\n          const encodedBuffer = Buffer.from(\n            encodedUint8Array,\n            encodedUint8Array.byteOffset,\n            encodedUint8Array.byteLength,\n          );\n\n          const extensions =\n            response.body.singleResult.extensions ||\n            (response.body.singleResult.extensions = Object.create(null));\n\n          // This should only happen if another plugin is using the same name-\n          // space within the `extensions` object and got to it before us.\n          if (typeof extensions.ftv1 !== 'undefined') {\n            throw new Error('The `ftv1` extension was already present.');\n          }\n\n          extensions.ftv1 = encodedBuffer.toString('base64');\n        },\n      };\n    },\n  });\n}\n", "import type {\n  ApolloServerPluginEmbeddedLandingPageLocalDefaultOptions,\n  ApolloServerPluginEmbeddedLandingPageProductionDefaultOptions,\n} from './types';\n\n// This function turns an object into a string and replaces\n// <, >, &, ' with their unicode chars to avoid adding html tags to\n// the landing page html that might be passed from the config.\n// The only place these characters can appear in the output of\n// JSON.stringify is within string literals, where they can equally\n// well appear \\u-escaped. This specifically means that\n// `</script>` won't terminate the script block early.\n// (Perhaps we should have done this instead of the triple-encoding\n// of encodeConfig for the main landing page.)\nfunction getConfigStringForHtml(config: object) {\n  return JSON.stringify(config)\n    .replace('<', '\\\\u003c')\n    .replace('>', '\\\\u003e')\n    .replace('&', '\\\\u0026')\n    .replace(\"'\", '\\\\u0027');\n}\n\nexport const getEmbeddedExplorerHTML = (\n  explorerCdnVersion: string,\n  config: ApolloServerPluginEmbeddedLandingPageProductionDefaultOptions,\n  apolloServerVersion: string,\n  nonce: string,\n) => {\n  interface EmbeddableExplorerOptions {\n    graphRef: string;\n    target: string;\n\n    initialState?: {\n      document?: string;\n      variables?: Record<string, any>;\n      headers?: Record<string, string>;\n      collectionId?: string;\n      operationId?: string;\n      displayOptions: {\n        docsPanelState?: 'open' | 'closed'; // default to 'open',\n        showHeadersAndEnvVars?: boolean; // default to `false`\n        theme?: 'dark' | 'light';\n      };\n    };\n    persistExplorerState?: boolean; // defaults to 'false'\n\n    endpointUrl: string;\n\n    includeCookies?: boolean; // defaults to 'false'\n\n    runTelemetry?: boolean;\n\n    allowDynamicStyles?: boolean; // defaults to 'true'\n  }\n  const productionLandingPageEmbedConfigOrDefault = {\n    displayOptions: {},\n    persistExplorerState: false,\n    runTelemetry: true,\n    ...(typeof config.embed === 'boolean' ? {} : config.embed),\n  };\n  const embeddedExplorerParams: Omit<\n    EmbeddableExplorerOptions,\n    'endpointUrl'\n  > & { runtime: string } = {\n    graphRef: config.graphRef,\n    target: '#embeddableExplorer',\n    initialState: {\n      ...('document' in config || 'headers' in config || 'variables' in config\n        ? {\n            document: config.document,\n            headers: config.headers,\n            variables: config.variables,\n          }\n        : {}),\n      ...('collectionId' in config\n        ? {\n            collectionId: config.collectionId,\n            operationId: config.operationId,\n          }\n        : {}),\n      displayOptions: {\n        ...productionLandingPageEmbedConfigOrDefault.displayOptions,\n      },\n    },\n    persistExplorerState:\n      productionLandingPageEmbedConfigOrDefault.persistExplorerState,\n    includeCookies: config.includeCookies,\n    runtime: apolloServerVersion,\n    runTelemetry: productionLandingPageEmbedConfigOrDefault.runTelemetry,\n    allowDynamicStyles: false, // disabled for CSP - we add the iframe styles ourselves instead\n  };\n\n  return `\n<div class=\"fallback\">\n  <h1>Welcome to Apollo Server</h1>\n  <p>Apollo Explorer cannot be loaded; it appears that you might be offline.</p>\n</div>\n<style nonce=${nonce}>\n  iframe {\n    background-color: white;\n    height: 100%;\n    width: 100%;\n    border: none;\n  }\n  #embeddableExplorer {\n    width: 100vw;\n    height: 100vh;\n    position: absolute;\n    top: 0;\n  }\n</style>\n<div id=\"embeddableExplorer\"></div>\n<script nonce=\"${nonce}\" src=\"https://embeddable-explorer.cdn.apollographql.com/${encodeURIComponent(\n    explorerCdnVersion,\n  )}/embeddable-explorer.umd.production.min.js?runtime=${encodeURIComponent(\n    apolloServerVersion,\n  )}\"></script>\n<script nonce=\"${nonce}\">\n  var endpointUrl = window.location.href;\n  var embeddedExplorerConfig = ${getConfigStringForHtml(\n    embeddedExplorerParams,\n  )};\n  new window.EmbeddedExplorer({\n    ...embeddedExplorerConfig,\n    endpointUrl,\n  });\n</script>\n`;\n};\n\nexport const getEmbeddedSandboxHTML = (\n  sandboxCdnVersion: string,\n  config: ApolloServerPluginEmbeddedLandingPageLocalDefaultOptions,\n  apolloServerVersion: string,\n  nonce: string,\n) => {\n  const localDevelopmentEmbedConfigOrDefault = {\n    runTelemetry: true,\n    endpointIsEditable: false,\n    initialState: {},\n    ...(typeof config.embed === 'boolean' ? {} : (config.embed ?? {})),\n  };\n  const embeddedSandboxConfig = {\n    target: '#embeddableSandbox',\n    initialState: {\n      ...('document' in config || 'headers' in config || 'variables' in config\n        ? {\n            document: config.document,\n            variables: config.variables,\n            headers: config.headers,\n          }\n        : {}),\n      ...('collectionId' in config\n        ? {\n            collectionId: config.collectionId,\n            operationId: config.operationId,\n          }\n        : {}),\n      includeCookies: config.includeCookies,\n      ...localDevelopmentEmbedConfigOrDefault.initialState,\n    },\n    hideCookieToggle: false,\n    endpointIsEditable: localDevelopmentEmbedConfigOrDefault.endpointIsEditable,\n    runtime: apolloServerVersion,\n    runTelemetry: localDevelopmentEmbedConfigOrDefault.runTelemetry,\n    allowDynamicStyles: false, // disabled for CSP - we add the iframe styles ourselves instead\n  };\n  return `\n<div class=\"fallback\">\n  <h1>Welcome to Apollo Server</h1>\n  <p>Apollo Sandbox cannot be loaded; it appears that you might be offline.</p>\n</div>\n<style nonce=${nonce}>\n  iframe {\n    background-color: white;\n    height: 100%;\n    width: 100%;\n    border: none;\n  }\n  #embeddableSandbox {\n    width: 100vw;\n    height: 100vh;\n    position: absolute;\n    top: 0;\n  }\n</style>\n<div id=\"embeddableSandbox\"></div>\n<script nonce=\"${nonce}\" src=\"https://embeddable-sandbox.cdn.apollographql.com/${encodeURIComponent(\n    sandboxCdnVersion,\n  )}/embeddable-sandbox.umd.production.min.js?runtime=${encodeURIComponent(\n    apolloServerVersion,\n  )}\"></script>\n<script nonce=\"${nonce}\">\n  var initialEndpoint = window.location.href;\n  var embeddedSandboxConfig = ${getConfigStringForHtml(embeddedSandboxConfig)};\n  new window.EmbeddedSandbox(\n    {\n      ...embeddedSandboxConfig,\n      initialEndpoint,\n    }\n  );\n</script>\n`;\n};\n", "import type {\n  ApolloServerPlugin,\n  BaseContext,\n} from '../../../externalTypes/index.js';\nimport type { ImplicitlyInstallablePlugin } from '../../../ApolloServer.js';\nimport type {\n  ApolloServerPluginLandingPageLocalDefaultOptions,\n  ApolloServerPluginLandingPageProductionDefaultOptions,\n  LandingPageConfig,\n} from './types.js';\nimport {\n  getEmbeddedExplorerHTML,\n  getEmbeddedSandboxHTML,\n} from './getEmbeddedHTML.js';\nimport { packageVersion } from '../../../generated/packageVersion.js';\nimport { createHash } from '@apollo/utils.createhash';\nimport { v4 as uuidv4 } from 'uuid';\n\nexport type {\n  ApolloServerPluginLandingPageLocalDefaultOptions,\n  ApolloServerPluginLandingPageProductionDefaultOptions,\n};\n\nexport function ApolloServerPluginLandingPageLocalDefault(\n  options: ApolloServerPluginLandingPageLocalDefaultOptions = {},\n): ApolloServerPlugin {\n  const { version, __internal_apolloStudioEnv__, ...rest } = {\n    // we default to Sandbox unless embed is specified as false\n    embed: true as const,\n    ...options,\n  };\n  return ApolloServerPluginLandingPageDefault(version, {\n    isProd: false,\n    apolloStudioEnv: __internal_apolloStudioEnv__,\n    ...rest,\n  });\n}\n\nexport function ApolloServerPluginLandingPageProductionDefault(\n  options: ApolloServerPluginLandingPageProductionDefaultOptions = {},\n): ApolloServerPlugin {\n  const { version, __internal_apolloStudioEnv__, ...rest } = options;\n  return ApolloServerPluginLandingPageDefault(version, {\n    isProd: true,\n    apolloStudioEnv: __internal_apolloStudioEnv__,\n    ...rest,\n  });\n}\n\n// A triple encoding! Wow! First we use JSON.stringify to turn our object into a\n// string. Then we encodeURIComponent so we don't have to stress about what\n// would happen if the config contained `</script>`. Finally, we JSON.stringify\n// it again, which in practice just wraps it in a pair of double quotes (since\n// there shouldn't be any backslashes left after encodeURIComponent). The\n// consumer of this needs to decodeURIComponent and then JSON.parse; there's\n// only one JSON.parse because the outermost JSON string is parsed by the JS\n// parser itself.\nfunction encodeConfig(config: LandingPageConfig): string {\n  return JSON.stringify(encodeURIComponent(JSON.stringify(config)));\n}\n\nconst getNonEmbeddedLandingPageHTML = (\n  cdnVersion: string,\n  config: LandingPageConfig,\n  apolloServerVersion: string,\n  nonce: string,\n) => {\n  const encodedConfig = encodeConfig(config);\n\n  return `\n <div class=\"fallback\">\n  <h1>Welcome to Apollo Server</h1>\n  <p>The full landing page cannot be loaded; it appears that you might be offline.</p>\n</div>\n<script nonce=\"${nonce}\">window.landingPage = ${encodedConfig};</script>\n<script nonce=\"${nonce}\" src=\"https://apollo-server-landing-page.cdn.apollographql.com/${encodeURIComponent(\n    cdnVersion,\n  )}/static/js/main.js?runtime=${apolloServerVersion}\"></script>`;\n};\n\nexport const DEFAULT_EMBEDDED_EXPLORER_VERSION = 'v3';\nexport const DEFAULT_EMBEDDED_SANDBOX_VERSION = 'v2';\nexport const DEFAULT_APOLLO_SERVER_LANDING_PAGE_VERSION = '_latest';\n\n// Helper for the two actual plugin functions.\nfunction ApolloServerPluginLandingPageDefault<TContext extends BaseContext>(\n  maybeVersion: string | undefined,\n  config: LandingPageConfig & {\n    isProd: boolean;\n    apolloStudioEnv: 'staging' | 'prod' | undefined;\n  },\n): ImplicitlyInstallablePlugin<TContext> {\n  const explorerVersion = maybeVersion ?? DEFAULT_EMBEDDED_EXPLORER_VERSION;\n  const sandboxVersion = maybeVersion ?? DEFAULT_EMBEDDED_SANDBOX_VERSION;\n  const apolloServerLandingPageVersion =\n    maybeVersion ?? DEFAULT_APOLLO_SERVER_LANDING_PAGE_VERSION;\n  const apolloServerVersion = `@apollo/server@${packageVersion}`;\n\n  const scriptSafeList = [\n    'https://apollo-server-landing-page.cdn.apollographql.com',\n    'https://embeddable-sandbox.cdn.apollographql.com',\n    'https://embeddable-explorer.cdn.apollographql.com',\n  ].join(' ');\n  const styleSafeList = [\n    'https://apollo-server-landing-page.cdn.apollographql.com',\n    'https://embeddable-sandbox.cdn.apollographql.com',\n    'https://embeddable-explorer.cdn.apollographql.com',\n    'https://fonts.googleapis.com',\n  ].join(' ');\n  const iframeSafeList = [\n    'https://explorer.embed.apollographql.com',\n    'https://sandbox.embed.apollographql.com',\n    'https://embed.apollo.local:3000',\n  ].join(' ');\n\n  return {\n    __internal_installed_implicitly__: false,\n    async serverWillStart() {\n      return {\n        async renderLandingPage() {\n          const encodedASLandingPageVersion = encodeURIComponent(\n            apolloServerLandingPageVersion,\n          );\n          async function html() {\n            const nonce = createHash('sha256').update(uuidv4()).digest('hex');\n            const scriptCsp = `script-src 'self' 'nonce-${nonce}' ${scriptSafeList}`;\n            const styleCsp = `style-src 'nonce-${nonce}' ${styleSafeList}`;\n            const imageCsp = `img-src https://apollo-server-landing-page.cdn.apollographql.com`;\n            const manifestCsp = `manifest-src https://apollo-server-landing-page.cdn.apollographql.com`;\n            const frameCsp = `frame-src ${iframeSafeList}`;\n            return `\n<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta http-equiv=\"Content-Security-Policy\" content=\"${scriptCsp}; ${styleCsp}; ${imageCsp}; ${manifestCsp}; ${frameCsp}\" />\n    <link\n      rel=\"icon\"\n      href=\"https://apollo-server-landing-page.cdn.apollographql.com/${encodedASLandingPageVersion}/assets/favicon.png\"\n    />\n    <meta name=\"viewport\" content=\"width=device-width,initial-scale=1\" />\n    <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" />\n    <link\n      href=\"https://fonts.googleapis.com/css2?family=Source+Sans+Pro&display=swap\"\n      rel=\"stylesheet\"\n    />\n    <meta name=\"theme-color\" content=\"#000000\" />\n    <meta name=\"description\" content=\"Apollo server landing page\" />\n    <link\n      rel=\"apple-touch-icon\"\n      href=\"https://apollo-server-landing-page.cdn.apollographql.com/${encodedASLandingPageVersion}/assets/favicon.png\"\n    />\n    <link\n      rel=\"manifest\"\n      href=\"https://apollo-server-landing-page.cdn.apollographql.com/${encodedASLandingPageVersion}/manifest.json\"\n    />\n    <title>Apollo Server</title>\n  </head>\n  <body>\n    <noscript>You need to enable JavaScript to run this app.</noscript>\n    <div id=\"react-root\">\n      <style nonce=${nonce}>\n        body {\n          margin: 0;\n          overflow-x: hidden;\n          overflow-y: hidden;\n        }\n        .fallback {\n          opacity: 0;\n          animation: fadeIn 1s 1s;\n          animation-iteration-count: 1;\n          animation-fill-mode: forwards;\n          padding: 1em;\n        }\n        @keyframes fadeIn {\n          0% {opacity:0;}\n          100% {opacity:1; }\n        }\n      </style>\n    ${\n      config.embed\n        ? 'graphRef' in config && config.graphRef\n          ? getEmbeddedExplorerHTML(\n              explorerVersion,\n              config,\n              apolloServerVersion,\n              nonce,\n            )\n          : !('graphRef' in config)\n            ? getEmbeddedSandboxHTML(\n                sandboxVersion,\n                config,\n                apolloServerVersion,\n                nonce,\n              )\n            : getNonEmbeddedLandingPageHTML(\n                apolloServerLandingPageVersion,\n                config,\n                apolloServerVersion,\n                nonce,\n              )\n        : getNonEmbeddedLandingPageHTML(\n            apolloServerLandingPageVersion,\n            config,\n            apolloServerVersion,\n            nonce,\n          )\n    }\n    </div>\n  </body>\n</html>\n          `;\n          }\n          return { html };\n        },\n      };\n    },\n  };\n}\n", "import type { ApolloServerPlugin } from '../../externalTypes/index.js';\nimport { internalPlugin } from '../../internalPlugin.js';\n\nexport function ApolloServerPluginDisableSuggestions(): ApolloServerPlugin {\n  return internalPlugin({\n    __internal_plugin_id__: 'DisableSuggestions',\n    __is_disabled_plugin__: false,\n    async requestDidStart() {\n      return {\n        async validationDidStart() {\n          return async (validationErrors) => {\n            validationErrors?.forEach((error) => {\n              error.message = error.message.replace(\n                / ?Did you mean(.+?)\\?$/,\n                '',\n              );\n            });\n          };\n        },\n      };\n    },\n  });\n}\n", "export const isNodeLike =\n  typeof process === \"object\" &&\n  process &&\n  // We used to check `process.release.name === \"node\"`, however that doesn't\n  // account for certain forks of Node.js which are otherwise identical to\n  // Node.js.  For example, NodeSource's N|Solid reports itself as \"nsolid\",\n  // though it's mostly the same build of Node.js with an extra addon.\n  process.release &&\n  process.versions &&\n  // The one thing which is present on both Node.js and N|Solid (a fork of\n  // Node.js), is `process.versions.node` being defined.\n  typeof process.versions.node === \"string\";\n", "import type { KeyValueCache, KeyValueCacheSetOptions } from \".\";\n\nconst prefixesAreUnnecessaryForIsolationSymbol = Symbol(\n  \"prefixesAreUnnecessaryForIsolation\",\n);\n\n// PrefixingKeyValueCache wraps another cache and adds a prefix to all keys used\n// by all operations. This allows multiple features to share the same underlying\n// cache without conflicts.\n//\n// Note that PrefixingKeyValueCache explicitly does not implement methods like\n// flush() that aren't part of KeyValueCache, even though most KeyValueCache\n// implementations also have a flush() method. Most implementations of flush()\n// send a simple command that wipes the entire backend cache system, which\n// wouldn't support \"only wipe the part of the cache with this prefix\", so\n// trying to provide a flush() method here could be confusingly dangerous.\nexport class PrefixingKeyValueCache<V = string> implements KeyValueCache<V> {\n  private prefix: string;\n  [prefixesAreUnnecessaryForIsolationSymbol]?: true;\n\n  constructor(private wrapped: KeyValueCache<V>, prefix: string) {\n    if (PrefixingKeyValueCache.prefixesAreUnnecessaryForIsolation(wrapped)) {\n      this.prefix = \"\";\n      // If we try to again prefix this cache, we should still skip the\n      // prefixing. (This would be cleaner if we made PrefixingKeyValueCaches\n      // via a static method rather than the constructor and could just return\n      // `wrapped`...)\n      this[prefixesAreUnnecessaryForIsolationSymbol] = true;\n    } else {\n      this.prefix = prefix;\n    }\n  }\n\n  get(key: string) {\n    return this.wrapped.get(this.prefix + key);\n  }\n  set(key: string, value: V, options?: KeyValueCacheSetOptions) {\n    return this.wrapped.set(this.prefix + key, value, options);\n  }\n  delete(key: string) {\n    return this.wrapped.delete(this.prefix + key);\n  }\n\n  // Checks to see if a cache is a PrefixesAreUnnecessaryForIsolationCache,\n  // without using instanceof (so that installing multiple copies of this\n  // package doesn't break things).\n  static prefixesAreUnnecessaryForIsolation<V = string>(\n    c: KeyValueCache<V>,\n  ): boolean {\n    return prefixesAreUnnecessaryForIsolationSymbol in c;\n  }\n\n  static cacheDangerouslyDoesNotNeedPrefixesForIsolation<V = string>(\n    c: KeyValueCache<V>,\n  ): KeyValueCache<V> {\n    return new PrefixesAreUnnecessaryForIsolationCache(c);\n  }\n}\n\n// This class lets you opt a cache out of the prefixing provided by\n// PrefixingKeyValueCache. See the README for details.\nclass PrefixesAreUnnecessaryForIsolationCache<V = string>\n  implements KeyValueCache<V>\n{\n  [prefixesAreUnnecessaryForIsolationSymbol] = true;\n\n  constructor(private wrapped: KeyValueCache<V>) {}\n\n  get(key: string) {\n    return this.wrapped.get(key);\n  }\n  set(key: string, value: V, options?: KeyValueCacheSetOptions) {\n    return this.wrapped.set(key, value, options);\n  }\n  delete(key: string) {\n    return this.wrapped.delete(key);\n  }\n}\n", "const perf =\n  typeof performance === 'object' &&\n  performance &&\n  typeof performance.now === 'function'\n    ? performance\n    : Date\n\nconst hasAbortController = typeof AbortController === 'function'\n\n// minimal backwards-compatibility polyfill\n// this doesn't have nearly all the checks and whatnot that\n// actual AbortController/Signal has, but it's enough for\n// our purposes, and if used properly, behaves the same.\nconst AC = hasAbortController\n  ? AbortController\n  : class AbortController {\n      constructor() {\n        this.signal = new AS()\n      }\n      abort(reason = new Error('This operation was aborted')) {\n        this.signal.reason = this.signal.reason || reason\n        this.signal.aborted = true\n        this.signal.dispatchEvent({\n          type: 'abort',\n          target: this.signal,\n        })\n      }\n    }\n\nconst hasAbortSignal = typeof AbortSignal === 'function'\n// Some polyfills put this on the AC class, not global\nconst hasACAbortSignal = typeof AC.AbortSignal === 'function'\nconst AS = hasAbortSignal\n  ? AbortSignal\n  : hasACAbortSignal\n  ? AC.AbortController\n  : class AbortSignal {\n      constructor() {\n        this.reason = undefined\n        this.aborted = false\n        this._listeners = []\n      }\n      dispatchEvent(e) {\n        if (e.type === 'abort') {\n          this.aborted = true\n          this.onabort(e)\n          this._listeners.forEach(f => f(e), this)\n        }\n      }\n      onabort() {}\n      addEventListener(ev, fn) {\n        if (ev === 'abort') {\n          this._listeners.push(fn)\n        }\n      }\n      removeEventListener(ev, fn) {\n        if (ev === 'abort') {\n          this._listeners = this._listeners.filter(f => f !== fn)\n        }\n      }\n    }\n\nconst warned = new Set()\nconst deprecatedOption = (opt, instead) => {\n  const code = `LRU_CACHE_OPTION_${opt}`\n  if (shouldWarn(code)) {\n    warn(code, `${opt} option`, `options.${instead}`, LRUCache)\n  }\n}\nconst deprecatedMethod = (method, instead) => {\n  const code = `LRU_CACHE_METHOD_${method}`\n  if (shouldWarn(code)) {\n    const { prototype } = LRUCache\n    const { get } = Object.getOwnPropertyDescriptor(prototype, method)\n    warn(code, `${method} method`, `cache.${instead}()`, get)\n  }\n}\nconst deprecatedProperty = (field, instead) => {\n  const code = `LRU_CACHE_PROPERTY_${field}`\n  if (shouldWarn(code)) {\n    const { prototype } = LRUCache\n    const { get } = Object.getOwnPropertyDescriptor(prototype, field)\n    warn(code, `${field} property`, `cache.${instead}`, get)\n  }\n}\n\nconst emitWarning = (...a) => {\n  typeof process === 'object' &&\n  process &&\n  typeof process.emitWarning === 'function'\n    ? process.emitWarning(...a)\n    : console.error(...a)\n}\n\nconst shouldWarn = code => !warned.has(code)\n\nconst warn = (code, what, instead, fn) => {\n  warned.add(code)\n  const msg = `The ${what} is deprecated. Please use ${instead} instead.`\n  emitWarning(msg, 'DeprecationWarning', code, fn)\n}\n\nconst isPosInt = n => n && n === Math.floor(n) && n > 0 && isFinite(n)\n\n/* istanbul ignore next - This is a little bit ridiculous, tbh.\n * The maximum array length is 2^32-1 or thereabouts on most JS impls.\n * And well before that point, you're caching the entire world, I mean,\n * that's ~32GB of just integers for the next/prev links, plus whatever\n * else to hold that many keys and values.  Just filling the memory with\n * zeroes at init time is brutal when you get that big.\n * But why not be complete?\n * Maybe in the future, these limits will have expanded. */\nconst getUintArray = max =>\n  !isPosInt(max)\n    ? null\n    : max <= Math.pow(2, 8)\n    ? Uint8Array\n    : max <= Math.pow(2, 16)\n    ? Uint16Array\n    : max <= Math.pow(2, 32)\n    ? Uint32Array\n    : max <= Number.MAX_SAFE_INTEGER\n    ? ZeroArray\n    : null\n\nclass ZeroArray extends Array {\n  constructor(size) {\n    super(size)\n    this.fill(0)\n  }\n}\n\nclass Stack {\n  constructor(max) {\n    if (max === 0) {\n      return []\n    }\n    const UintArray = getUintArray(max)\n    this.heap = new UintArray(max)\n    this.length = 0\n  }\n  push(n) {\n    this.heap[this.length++] = n\n  }\n  pop() {\n    return this.heap[--this.length]\n  }\n}\n\nclass LRUCache {\n  constructor(options = {}) {\n    const {\n      max = 0,\n      ttl,\n      ttlResolution = 1,\n      ttlAutopurge,\n      updateAgeOnGet,\n      updateAgeOnHas,\n      allowStale,\n      dispose,\n      disposeAfter,\n      noDisposeOnSet,\n      noUpdateTTL,\n      maxSize = 0,\n      maxEntrySize = 0,\n      sizeCalculation,\n      fetchMethod,\n      fetchContext,\n      noDeleteOnFetchRejection,\n      noDeleteOnStaleGet,\n      allowStaleOnFetchRejection,\n      allowStaleOnFetchAbort,\n      ignoreFetchAbort,\n    } = options\n\n    // deprecated options, don't trigger a warning for getting them if\n    // the thing being passed in is another LRUCache we're copying.\n    const { length, maxAge, stale } =\n      options instanceof LRUCache ? {} : options\n\n    if (max !== 0 && !isPosInt(max)) {\n      throw new TypeError('max option must be a nonnegative integer')\n    }\n\n    const UintArray = max ? getUintArray(max) : Array\n    if (!UintArray) {\n      throw new Error('invalid max value: ' + max)\n    }\n\n    this.max = max\n    this.maxSize = maxSize\n    this.maxEntrySize = maxEntrySize || this.maxSize\n    this.sizeCalculation = sizeCalculation || length\n    if (this.sizeCalculation) {\n      if (!this.maxSize && !this.maxEntrySize) {\n        throw new TypeError(\n          'cannot set sizeCalculation without setting maxSize or maxEntrySize'\n        )\n      }\n      if (typeof this.sizeCalculation !== 'function') {\n        throw new TypeError('sizeCalculation set to non-function')\n      }\n    }\n\n    this.fetchMethod = fetchMethod || null\n    if (this.fetchMethod && typeof this.fetchMethod !== 'function') {\n      throw new TypeError(\n        'fetchMethod must be a function if specified'\n      )\n    }\n\n    this.fetchContext = fetchContext\n    if (!this.fetchMethod && fetchContext !== undefined) {\n      throw new TypeError(\n        'cannot set fetchContext without fetchMethod'\n      )\n    }\n\n    this.keyMap = new Map()\n    this.keyList = new Array(max).fill(null)\n    this.valList = new Array(max).fill(null)\n    this.next = new UintArray(max)\n    this.prev = new UintArray(max)\n    this.head = 0\n    this.tail = 0\n    this.free = new Stack(max)\n    this.initialFill = 1\n    this.size = 0\n\n    if (typeof dispose === 'function') {\n      this.dispose = dispose\n    }\n    if (typeof disposeAfter === 'function') {\n      this.disposeAfter = disposeAfter\n      this.disposed = []\n    } else {\n      this.disposeAfter = null\n      this.disposed = null\n    }\n    this.noDisposeOnSet = !!noDisposeOnSet\n    this.noUpdateTTL = !!noUpdateTTL\n    this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection\n    this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection\n    this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort\n    this.ignoreFetchAbort = !!ignoreFetchAbort\n\n    // NB: maxEntrySize is set to maxSize if it's set\n    if (this.maxEntrySize !== 0) {\n      if (this.maxSize !== 0) {\n        if (!isPosInt(this.maxSize)) {\n          throw new TypeError(\n            'maxSize must be a positive integer if specified'\n          )\n        }\n      }\n      if (!isPosInt(this.maxEntrySize)) {\n        throw new TypeError(\n          'maxEntrySize must be a positive integer if specified'\n        )\n      }\n      this.initializeSizeTracking()\n    }\n\n    this.allowStale = !!allowStale || !!stale\n    this.noDeleteOnStaleGet = !!noDeleteOnStaleGet\n    this.updateAgeOnGet = !!updateAgeOnGet\n    this.updateAgeOnHas = !!updateAgeOnHas\n    this.ttlResolution =\n      isPosInt(ttlResolution) || ttlResolution === 0\n        ? ttlResolution\n        : 1\n    this.ttlAutopurge = !!ttlAutopurge\n    this.ttl = ttl || maxAge || 0\n    if (this.ttl) {\n      if (!isPosInt(this.ttl)) {\n        throw new TypeError(\n          'ttl must be a positive integer if specified'\n        )\n      }\n      this.initializeTTLTracking()\n    }\n\n    // do not allow completely unbounded caches\n    if (this.max === 0 && this.ttl === 0 && this.maxSize === 0) {\n      throw new TypeError(\n        'At least one of max, maxSize, or ttl is required'\n      )\n    }\n    if (!this.ttlAutopurge && !this.max && !this.maxSize) {\n      const code = 'LRU_CACHE_UNBOUNDED'\n      if (shouldWarn(code)) {\n        warned.add(code)\n        const msg =\n          'TTL caching without ttlAutopurge, max, or maxSize can ' +\n          'result in unbounded memory consumption.'\n        emitWarning(msg, 'UnboundedCacheWarning', code, LRUCache)\n      }\n    }\n\n    if (stale) {\n      deprecatedOption('stale', 'allowStale')\n    }\n    if (maxAge) {\n      deprecatedOption('maxAge', 'ttl')\n    }\n    if (length) {\n      deprecatedOption('length', 'sizeCalculation')\n    }\n  }\n\n  getRemainingTTL(key) {\n    return this.has(key, { updateAgeOnHas: false }) ? Infinity : 0\n  }\n\n  initializeTTLTracking() {\n    this.ttls = new ZeroArray(this.max)\n    this.starts = new ZeroArray(this.max)\n\n    this.setItemTTL = (index, ttl, start = perf.now()) => {\n      this.starts[index] = ttl !== 0 ? start : 0\n      this.ttls[index] = ttl\n      if (ttl !== 0 && this.ttlAutopurge) {\n        const t = setTimeout(() => {\n          if (this.isStale(index)) {\n            this.delete(this.keyList[index])\n          }\n        }, ttl + 1)\n        /* istanbul ignore else - unref() not supported on all platforms */\n        if (t.unref) {\n          t.unref()\n        }\n      }\n    }\n\n    this.updateItemAge = index => {\n      this.starts[index] = this.ttls[index] !== 0 ? perf.now() : 0\n    }\n\n    this.statusTTL = (status, index) => {\n      if (status) {\n        status.ttl = this.ttls[index]\n        status.start = this.starts[index]\n        status.now = cachedNow || getNow()\n        status.remainingTTL = status.now + status.ttl - status.start\n      }\n    }\n\n    // debounce calls to perf.now() to 1s so we're not hitting\n    // that costly call repeatedly.\n    let cachedNow = 0\n    const getNow = () => {\n      const n = perf.now()\n      if (this.ttlResolution > 0) {\n        cachedNow = n\n        const t = setTimeout(\n          () => (cachedNow = 0),\n          this.ttlResolution\n        )\n        /* istanbul ignore else - not available on all platforms */\n        if (t.unref) {\n          t.unref()\n        }\n      }\n      return n\n    }\n\n    this.getRemainingTTL = key => {\n      const index = this.keyMap.get(key)\n      if (index === undefined) {\n        return 0\n      }\n      return this.ttls[index] === 0 || this.starts[index] === 0\n        ? Infinity\n        : this.starts[index] +\n            this.ttls[index] -\n            (cachedNow || getNow())\n    }\n\n    this.isStale = index => {\n      return (\n        this.ttls[index] !== 0 &&\n        this.starts[index] !== 0 &&\n        (cachedNow || getNow()) - this.starts[index] >\n          this.ttls[index]\n      )\n    }\n  }\n  updateItemAge(_index) {}\n  statusTTL(_status, _index) {}\n  setItemTTL(_index, _ttl, _start) {}\n  isStale(_index) {\n    return false\n  }\n\n  initializeSizeTracking() {\n    this.calculatedSize = 0\n    this.sizes = new ZeroArray(this.max)\n    this.removeItemSize = index => {\n      this.calculatedSize -= this.sizes[index]\n      this.sizes[index] = 0\n    }\n    this.requireSize = (k, v, size, sizeCalculation) => {\n      // provisionally accept background fetches.\n      // actual value size will be checked when they return.\n      if (this.isBackgroundFetch(v)) {\n        return 0\n      }\n      if (!isPosInt(size)) {\n        if (sizeCalculation) {\n          if (typeof sizeCalculation !== 'function') {\n            throw new TypeError('sizeCalculation must be a function')\n          }\n          size = sizeCalculation(v, k)\n          if (!isPosInt(size)) {\n            throw new TypeError(\n              'sizeCalculation return invalid (expect positive integer)'\n            )\n          }\n        } else {\n          throw new TypeError(\n            'invalid size value (must be positive integer). ' +\n              'When maxSize or maxEntrySize is used, sizeCalculation or size ' +\n              'must be set.'\n          )\n        }\n      }\n      return size\n    }\n    this.addItemSize = (index, size, status) => {\n      this.sizes[index] = size\n      if (this.maxSize) {\n        const maxSize = this.maxSize - this.sizes[index]\n        while (this.calculatedSize > maxSize) {\n          this.evict(true)\n        }\n      }\n      this.calculatedSize += this.sizes[index]\n      if (status) {\n        status.entrySize = size\n        status.totalCalculatedSize = this.calculatedSize\n      }\n    }\n  }\n  removeItemSize(_index) {}\n  addItemSize(_index, _size) {}\n  requireSize(_k, _v, size, sizeCalculation) {\n    if (size || sizeCalculation) {\n      throw new TypeError(\n        'cannot set size without setting maxSize or maxEntrySize on cache'\n      )\n    }\n  }\n\n  *indexes({ allowStale = this.allowStale } = {}) {\n    if (this.size) {\n      for (let i = this.tail; true; ) {\n        if (!this.isValidIndex(i)) {\n          break\n        }\n        if (allowStale || !this.isStale(i)) {\n          yield i\n        }\n        if (i === this.head) {\n          break\n        } else {\n          i = this.prev[i]\n        }\n      }\n    }\n  }\n\n  *rindexes({ allowStale = this.allowStale } = {}) {\n    if (this.size) {\n      for (let i = this.head; true; ) {\n        if (!this.isValidIndex(i)) {\n          break\n        }\n        if (allowStale || !this.isStale(i)) {\n          yield i\n        }\n        if (i === this.tail) {\n          break\n        } else {\n          i = this.next[i]\n        }\n      }\n    }\n  }\n\n  isValidIndex(index) {\n    return (\n      index !== undefined &&\n      this.keyMap.get(this.keyList[index]) === index\n    )\n  }\n\n  *entries() {\n    for (const i of this.indexes()) {\n      if (\n        this.valList[i] !== undefined &&\n        this.keyList[i] !== undefined &&\n        !this.isBackgroundFetch(this.valList[i])\n      ) {\n        yield [this.keyList[i], this.valList[i]]\n      }\n    }\n  }\n  *rentries() {\n    for (const i of this.rindexes()) {\n      if (\n        this.valList[i] !== undefined &&\n        this.keyList[i] !== undefined &&\n        !this.isBackgroundFetch(this.valList[i])\n      ) {\n        yield [this.keyList[i], this.valList[i]]\n      }\n    }\n  }\n\n  *keys() {\n    for (const i of this.indexes()) {\n      if (\n        this.keyList[i] !== undefined &&\n        !this.isBackgroundFetch(this.valList[i])\n      ) {\n        yield this.keyList[i]\n      }\n    }\n  }\n  *rkeys() {\n    for (const i of this.rindexes()) {\n      if (\n        this.keyList[i] !== undefined &&\n        !this.isBackgroundFetch(this.valList[i])\n      ) {\n        yield this.keyList[i]\n      }\n    }\n  }\n\n  *values() {\n    for (const i of this.indexes()) {\n      if (\n        this.valList[i] !== undefined &&\n        !this.isBackgroundFetch(this.valList[i])\n      ) {\n        yield this.valList[i]\n      }\n    }\n  }\n  *rvalues() {\n    for (const i of this.rindexes()) {\n      if (\n        this.valList[i] !== undefined &&\n        !this.isBackgroundFetch(this.valList[i])\n      ) {\n        yield this.valList[i]\n      }\n    }\n  }\n\n  [Symbol.iterator]() {\n    return this.entries()\n  }\n\n  find(fn, getOptions) {\n    for (const i of this.indexes()) {\n      const v = this.valList[i]\n      const value = this.isBackgroundFetch(v)\n        ? v.__staleWhileFetching\n        : v\n      if (value === undefined) continue\n      if (fn(value, this.keyList[i], this)) {\n        return this.get(this.keyList[i], getOptions)\n      }\n    }\n  }\n\n  forEach(fn, thisp = this) {\n    for (const i of this.indexes()) {\n      const v = this.valList[i]\n      const value = this.isBackgroundFetch(v)\n        ? v.__staleWhileFetching\n        : v\n      if (value === undefined) continue\n      fn.call(thisp, value, this.keyList[i], this)\n    }\n  }\n\n  rforEach(fn, thisp = this) {\n    for (const i of this.rindexes()) {\n      const v = this.valList[i]\n      const value = this.isBackgroundFetch(v)\n        ? v.__staleWhileFetching\n        : v\n      if (value === undefined) continue\n      fn.call(thisp, value, this.keyList[i], this)\n    }\n  }\n\n  get prune() {\n    deprecatedMethod('prune', 'purgeStale')\n    return this.purgeStale\n  }\n\n  purgeStale() {\n    let deleted = false\n    for (const i of this.rindexes({ allowStale: true })) {\n      if (this.isStale(i)) {\n        this.delete(this.keyList[i])\n        deleted = true\n      }\n    }\n    return deleted\n  }\n\n  dump() {\n    const arr = []\n    for (const i of this.indexes({ allowStale: true })) {\n      const key = this.keyList[i]\n      const v = this.valList[i]\n      const value = this.isBackgroundFetch(v)\n        ? v.__staleWhileFetching\n        : v\n      if (value === undefined) continue\n      const entry = { value }\n      if (this.ttls) {\n        entry.ttl = this.ttls[i]\n        // always dump the start relative to a portable timestamp\n        // it's ok for this to be a bit slow, it's a rare operation.\n        const age = perf.now() - this.starts[i]\n        entry.start = Math.floor(Date.now() - age)\n      }\n      if (this.sizes) {\n        entry.size = this.sizes[i]\n      }\n      arr.unshift([key, entry])\n    }\n    return arr\n  }\n\n  load(arr) {\n    this.clear()\n    for (const [key, entry] of arr) {\n      if (entry.start) {\n        // entry.start is a portable timestamp, but we may be using\n        // node's performance.now(), so calculate the offset.\n        // it's ok for this to be a bit slow, it's a rare operation.\n        const age = Date.now() - entry.start\n        entry.start = perf.now() - age\n      }\n      this.set(key, entry.value, entry)\n    }\n  }\n\n  dispose(_v, _k, _reason) {}\n\n  set(\n    k,\n    v,\n    {\n      ttl = this.ttl,\n      start,\n      noDisposeOnSet = this.noDisposeOnSet,\n      size = 0,\n      sizeCalculation = this.sizeCalculation,\n      noUpdateTTL = this.noUpdateTTL,\n      status,\n    } = {}\n  ) {\n    size = this.requireSize(k, v, size, sizeCalculation)\n    // if the item doesn't fit, don't do anything\n    // NB: maxEntrySize set to maxSize by default\n    if (this.maxEntrySize && size > this.maxEntrySize) {\n      if (status) {\n        status.set = 'miss'\n        status.maxEntrySizeExceeded = true\n      }\n      // have to delete, in case a background fetch is there already.\n      // in non-async cases, this is a no-op\n      this.delete(k)\n      return this\n    }\n    let index = this.size === 0 ? undefined : this.keyMap.get(k)\n    if (index === undefined) {\n      // addition\n      index = this.newIndex()\n      this.keyList[index] = k\n      this.valList[index] = v\n      this.keyMap.set(k, index)\n      this.next[this.tail] = index\n      this.prev[index] = this.tail\n      this.tail = index\n      this.size++\n      this.addItemSize(index, size, status)\n      if (status) {\n        status.set = 'add'\n      }\n      noUpdateTTL = false\n    } else {\n      // update\n      this.moveToTail(index)\n      const oldVal = this.valList[index]\n      if (v !== oldVal) {\n        if (this.isBackgroundFetch(oldVal)) {\n          oldVal.__abortController.abort(new Error('replaced'))\n        } else {\n          if (!noDisposeOnSet) {\n            this.dispose(oldVal, k, 'set')\n            if (this.disposeAfter) {\n              this.disposed.push([oldVal, k, 'set'])\n            }\n          }\n        }\n        this.removeItemSize(index)\n        this.valList[index] = v\n        this.addItemSize(index, size, status)\n        if (status) {\n          status.set = 'replace'\n          const oldValue =\n            oldVal && this.isBackgroundFetch(oldVal)\n              ? oldVal.__staleWhileFetching\n              : oldVal\n          if (oldValue !== undefined) status.oldValue = oldValue\n        }\n      } else if (status) {\n        status.set = 'update'\n      }\n    }\n    if (ttl !== 0 && this.ttl === 0 && !this.ttls) {\n      this.initializeTTLTracking()\n    }\n    if (!noUpdateTTL) {\n      this.setItemTTL(index, ttl, start)\n    }\n    this.statusTTL(status, index)\n    if (this.disposeAfter) {\n      while (this.disposed.length) {\n        this.disposeAfter(...this.disposed.shift())\n      }\n    }\n    return this\n  }\n\n  newIndex() {\n    if (this.size === 0) {\n      return this.tail\n    }\n    if (this.size === this.max && this.max !== 0) {\n      return this.evict(false)\n    }\n    if (this.free.length !== 0) {\n      return this.free.pop()\n    }\n    // initial fill, just keep writing down the list\n    return this.initialFill++\n  }\n\n  pop() {\n    if (this.size) {\n      const val = this.valList[this.head]\n      this.evict(true)\n      return val\n    }\n  }\n\n  evict(free) {\n    const head = this.head\n    const k = this.keyList[head]\n    const v = this.valList[head]\n    if (this.isBackgroundFetch(v)) {\n      v.__abortController.abort(new Error('evicted'))\n    } else {\n      this.dispose(v, k, 'evict')\n      if (this.disposeAfter) {\n        this.disposed.push([v, k, 'evict'])\n      }\n    }\n    this.removeItemSize(head)\n    // if we aren't about to use the index, then null these out\n    if (free) {\n      this.keyList[head] = null\n      this.valList[head] = null\n      this.free.push(head)\n    }\n    this.head = this.next[head]\n    this.keyMap.delete(k)\n    this.size--\n    return head\n  }\n\n  has(k, { updateAgeOnHas = this.updateAgeOnHas, status } = {}) {\n    const index = this.keyMap.get(k)\n    if (index !== undefined) {\n      if (!this.isStale(index)) {\n        if (updateAgeOnHas) {\n          this.updateItemAge(index)\n        }\n        if (status) status.has = 'hit'\n        this.statusTTL(status, index)\n        return true\n      } else if (status) {\n        status.has = 'stale'\n        this.statusTTL(status, index)\n      }\n    } else if (status) {\n      status.has = 'miss'\n    }\n    return false\n  }\n\n  // like get(), but without any LRU updating or TTL expiration\n  peek(k, { allowStale = this.allowStale } = {}) {\n    const index = this.keyMap.get(k)\n    if (index !== undefined && (allowStale || !this.isStale(index))) {\n      const v = this.valList[index]\n      // either stale and allowed, or forcing a refresh of non-stale value\n      return this.isBackgroundFetch(v) ? v.__staleWhileFetching : v\n    }\n  }\n\n  backgroundFetch(k, index, options, context) {\n    const v = index === undefined ? undefined : this.valList[index]\n    if (this.isBackgroundFetch(v)) {\n      return v\n    }\n    const ac = new AC()\n    if (options.signal) {\n      options.signal.addEventListener('abort', () =>\n        ac.abort(options.signal.reason)\n      )\n    }\n    const fetchOpts = {\n      signal: ac.signal,\n      options,\n      context,\n    }\n    const cb = (v, updateCache = false) => {\n      const { aborted } = ac.signal\n      const ignoreAbort = options.ignoreFetchAbort && v !== undefined\n      if (options.status) {\n        if (aborted && !updateCache) {\n          options.status.fetchAborted = true\n          options.status.fetchError = ac.signal.reason\n          if (ignoreAbort) options.status.fetchAbortIgnored = true\n        } else {\n          options.status.fetchResolved = true\n        }\n      }\n      if (aborted && !ignoreAbort && !updateCache) {\n        return fetchFail(ac.signal.reason)\n      }\n      // either we didn't abort, and are still here, or we did, and ignored\n      if (this.valList[index] === p) {\n        if (v === undefined) {\n          if (p.__staleWhileFetching) {\n            this.valList[index] = p.__staleWhileFetching\n          } else {\n            this.delete(k)\n          }\n        } else {\n          if (options.status) options.status.fetchUpdated = true\n          this.set(k, v, fetchOpts.options)\n        }\n      }\n      return v\n    }\n    const eb = er => {\n      if (options.status) {\n        options.status.fetchRejected = true\n        options.status.fetchError = er\n      }\n      return fetchFail(er)\n    }\n    const fetchFail = er => {\n      const { aborted } = ac.signal\n      const allowStaleAborted =\n        aborted && options.allowStaleOnFetchAbort\n      const allowStale =\n        allowStaleAborted || options.allowStaleOnFetchRejection\n      const noDelete = allowStale || options.noDeleteOnFetchRejection\n      if (this.valList[index] === p) {\n        // if we allow stale on fetch rejections, then we need to ensure that\n        // the stale value is not removed from the cache when the fetch fails.\n        const del = !noDelete || p.__staleWhileFetching === undefined\n        if (del) {\n          this.delete(k)\n        } else if (!allowStaleAborted) {\n          // still replace the *promise* with the stale value,\n          // since we are done with the promise at this point.\n          // leave it untouched if we're still waiting for an\n          // aborted background fetch that hasn't yet returned.\n          this.valList[index] = p.__staleWhileFetching\n        }\n      }\n      if (allowStale) {\n        if (options.status && p.__staleWhileFetching !== undefined) {\n          options.status.returnedStale = true\n        }\n        return p.__staleWhileFetching\n      } else if (p.__returned === p) {\n        throw er\n      }\n    }\n    const pcall = (res, rej) => {\n      this.fetchMethod(k, v, fetchOpts).then(v => res(v), rej)\n      // ignored, we go until we finish, regardless.\n      // defer check until we are actually aborting,\n      // so fetchMethod can override.\n      ac.signal.addEventListener('abort', () => {\n        if (\n          !options.ignoreFetchAbort ||\n          options.allowStaleOnFetchAbort\n        ) {\n          res()\n          // when it eventually resolves, update the cache.\n          if (options.allowStaleOnFetchAbort) {\n            res = v => cb(v, true)\n          }\n        }\n      })\n    }\n    if (options.status) options.status.fetchDispatched = true\n    const p = new Promise(pcall).then(cb, eb)\n    p.__abortController = ac\n    p.__staleWhileFetching = v\n    p.__returned = null\n    if (index === undefined) {\n      // internal, don't expose status.\n      this.set(k, p, { ...fetchOpts.options, status: undefined })\n      index = this.keyMap.get(k)\n    } else {\n      this.valList[index] = p\n    }\n    return p\n  }\n\n  isBackgroundFetch(p) {\n    return (\n      p &&\n      typeof p === 'object' &&\n      typeof p.then === 'function' &&\n      Object.prototype.hasOwnProperty.call(\n        p,\n        '__staleWhileFetching'\n      ) &&\n      Object.prototype.hasOwnProperty.call(p, '__returned') &&\n      (p.__returned === p || p.__returned === null)\n    )\n  }\n\n  // this takes the union of get() and set() opts, because it does both\n  async fetch(\n    k,\n    {\n      // get options\n      allowStale = this.allowStale,\n      updateAgeOnGet = this.updateAgeOnGet,\n      noDeleteOnStaleGet = this.noDeleteOnStaleGet,\n      // set options\n      ttl = this.ttl,\n      noDisposeOnSet = this.noDisposeOnSet,\n      size = 0,\n      sizeCalculation = this.sizeCalculation,\n      noUpdateTTL = this.noUpdateTTL,\n      // fetch exclusive options\n      noDeleteOnFetchRejection = this.noDeleteOnFetchRejection,\n      allowStaleOnFetchRejection = this.allowStaleOnFetchRejection,\n      ignoreFetchAbort = this.ignoreFetchAbort,\n      allowStaleOnFetchAbort = this.allowStaleOnFetchAbort,\n      fetchContext = this.fetchContext,\n      forceRefresh = false,\n      status,\n      signal,\n    } = {}\n  ) {\n    if (!this.fetchMethod) {\n      if (status) status.fetch = 'get'\n      return this.get(k, {\n        allowStale,\n        updateAgeOnGet,\n        noDeleteOnStaleGet,\n        status,\n      })\n    }\n\n    const options = {\n      allowStale,\n      updateAgeOnGet,\n      noDeleteOnStaleGet,\n      ttl,\n      noDisposeOnSet,\n      size,\n      sizeCalculation,\n      noUpdateTTL,\n      noDeleteOnFetchRejection,\n      allowStaleOnFetchRejection,\n      allowStaleOnFetchAbort,\n      ignoreFetchAbort,\n      status,\n      signal,\n    }\n\n    let index = this.keyMap.get(k)\n    if (index === undefined) {\n      if (status) status.fetch = 'miss'\n      const p = this.backgroundFetch(k, index, options, fetchContext)\n      return (p.__returned = p)\n    } else {\n      // in cache, maybe already fetching\n      const v = this.valList[index]\n      if (this.isBackgroundFetch(v)) {\n        const stale =\n          allowStale && v.__staleWhileFetching !== undefined\n        if (status) {\n          status.fetch = 'inflight'\n          if (stale) status.returnedStale = true\n        }\n        return stale ? v.__staleWhileFetching : (v.__returned = v)\n      }\n\n      // if we force a refresh, that means do NOT serve the cached value,\n      // unless we are already in the process of refreshing the cache.\n      const isStale = this.isStale(index)\n      if (!forceRefresh && !isStale) {\n        if (status) status.fetch = 'hit'\n        this.moveToTail(index)\n        if (updateAgeOnGet) {\n          this.updateItemAge(index)\n        }\n        this.statusTTL(status, index)\n        return v\n      }\n\n      // ok, it is stale or a forced refresh, and not already fetching.\n      // refresh the cache.\n      const p = this.backgroundFetch(k, index, options, fetchContext)\n      const hasStale = p.__staleWhileFetching !== undefined\n      const staleVal = hasStale && allowStale\n      if (status) {\n        status.fetch = hasStale && isStale ? 'stale' : 'refresh'\n        if (staleVal && isStale) status.returnedStale = true\n      }\n      return staleVal ? p.__staleWhileFetching : (p.__returned = p)\n    }\n  }\n\n  get(\n    k,\n    {\n      allowStale = this.allowStale,\n      updateAgeOnGet = this.updateAgeOnGet,\n      noDeleteOnStaleGet = this.noDeleteOnStaleGet,\n      status,\n    } = {}\n  ) {\n    const index = this.keyMap.get(k)\n    if (index !== undefined) {\n      const value = this.valList[index]\n      const fetching = this.isBackgroundFetch(value)\n      this.statusTTL(status, index)\n      if (this.isStale(index)) {\n        if (status) status.get = 'stale'\n        // delete only if not an in-flight background fetch\n        if (!fetching) {\n          if (!noDeleteOnStaleGet) {\n            this.delete(k)\n          }\n          if (status) status.returnedStale = allowStale\n          return allowStale ? value : undefined\n        } else {\n          if (status) {\n            status.returnedStale =\n              allowStale && value.__staleWhileFetching !== undefined\n          }\n          return allowStale ? value.__staleWhileFetching : undefined\n        }\n      } else {\n        if (status) status.get = 'hit'\n        // if we're currently fetching it, we don't actually have it yet\n        // it's not stale, which means this isn't a staleWhileRefetching.\n        // If it's not stale, and fetching, AND has a __staleWhileFetching\n        // value, then that means the user fetched with {forceRefresh:true},\n        // so it's safe to return that value.\n        if (fetching) {\n          return value.__staleWhileFetching\n        }\n        this.moveToTail(index)\n        if (updateAgeOnGet) {\n          this.updateItemAge(index)\n        }\n        return value\n      }\n    } else if (status) {\n      status.get = 'miss'\n    }\n  }\n\n  connect(p, n) {\n    this.prev[n] = p\n    this.next[p] = n\n  }\n\n  moveToTail(index) {\n    // if tail already, nothing to do\n    // if head, move head to next[index]\n    // else\n    //   move next[prev[index]] to next[index] (head has no prev)\n    //   move prev[next[index]] to prev[index]\n    // prev[index] = tail\n    // next[tail] = index\n    // tail = index\n    if (index !== this.tail) {\n      if (index === this.head) {\n        this.head = this.next[index]\n      } else {\n        this.connect(this.prev[index], this.next[index])\n      }\n      this.connect(this.tail, index)\n      this.tail = index\n    }\n  }\n\n  get del() {\n    deprecatedMethod('del', 'delete')\n    return this.delete\n  }\n\n  delete(k) {\n    let deleted = false\n    if (this.size !== 0) {\n      const index = this.keyMap.get(k)\n      if (index !== undefined) {\n        deleted = true\n        if (this.size === 1) {\n          this.clear()\n        } else {\n          this.removeItemSize(index)\n          const v = this.valList[index]\n          if (this.isBackgroundFetch(v)) {\n            v.__abortController.abort(new Error('deleted'))\n          } else {\n            this.dispose(v, k, 'delete')\n            if (this.disposeAfter) {\n              this.disposed.push([v, k, 'delete'])\n            }\n          }\n          this.keyMap.delete(k)\n          this.keyList[index] = null\n          this.valList[index] = null\n          if (index === this.tail) {\n            this.tail = this.prev[index]\n          } else if (index === this.head) {\n            this.head = this.next[index]\n          } else {\n            this.next[this.prev[index]] = this.next[index]\n            this.prev[this.next[index]] = this.prev[index]\n          }\n          this.size--\n          this.free.push(index)\n        }\n      }\n    }\n    if (this.disposed) {\n      while (this.disposed.length) {\n        this.disposeAfter(...this.disposed.shift())\n      }\n    }\n    return deleted\n  }\n\n  clear() {\n    for (const index of this.rindexes({ allowStale: true })) {\n      const v = this.valList[index]\n      if (this.isBackgroundFetch(v)) {\n        v.__abortController.abort(new Error('deleted'))\n      } else {\n        const k = this.keyList[index]\n        this.dispose(v, k, 'delete')\n        if (this.disposeAfter) {\n          this.disposed.push([v, k, 'delete'])\n        }\n      }\n    }\n\n    this.keyMap.clear()\n    this.valList.fill(null)\n    this.keyList.fill(null)\n    if (this.ttls) {\n      this.ttls.fill(0)\n      this.starts.fill(0)\n    }\n    if (this.sizes) {\n      this.sizes.fill(0)\n    }\n    this.head = 0\n    this.tail = 0\n    this.initialFill = 1\n    this.free.length = 0\n    this.calculatedSize = 0\n    this.size = 0\n    if (this.disposed) {\n      while (this.disposed.length) {\n        this.disposeAfter(...this.disposed.shift())\n      }\n    }\n  }\n\n  get reset() {\n    deprecatedMethod('reset', 'clear')\n    return this.clear\n  }\n\n  get length() {\n    deprecatedProperty('length', 'size')\n    return this.size\n  }\n\n  static get AbortController() {\n    return AC\n  }\n  static get AbortSignal() {\n    return AS\n  }\n}\n\nmodule.exports = LRUCache\n", "import LRUCache from \"lru-cache\";\nimport type { KeyValueCache, KeyValueCacheSetOptions } from \"./KeyValueCache\";\n\n// LRUCache wrapper to implement the KeyValueCache interface.\nexport class InMemoryLRUCache<T = string> implements KeyValueCache<T> {\n  private cache: LRUCache<string, T>;\n\n  constructor(lruCacheOpts?: LRUCache.Options<string, T>) {\n    this.cache = new LRUCache({\n      sizeCalculation: InMemoryLRUCache.sizeCalculation,\n      // Create ~about~ a 30MiB cache by default. Configurable by providing\n      // `lruCacheOpts`.\n      maxSize: Math.pow(2, 20) * 30,\n      ...lruCacheOpts,\n    });\n  }\n\n  /**\n   * default size calculator for strings and serializable objects, else naively\n   * return 1\n   */\n  static sizeCalculation<T>(item: T) {\n    if (typeof item === \"string\") {\n      return item.length;\n    }\n    if (typeof item === \"object\") {\n      // will throw if the object has circular references\n      return Buffer.byteLength(JSON.stringify(item), \"utf8\");\n    }\n    return 1;\n  }\n\n  async set(key: string, value: T, options?: KeyValueCacheSetOptions) {\n    if (options?.ttl) {\n      this.cache.set(key, value, { ttl: options.ttl * 1000 });\n    } else {\n      this.cache.set(key, value);\n    }\n  }\n\n  async get(key: string) {\n    return this.cache.get(key);\n  }\n\n  async delete(key: string) {\n    return this.cache.delete(key);\n  }\n\n  clear() {\n    this.cache.clear();\n  }\n\n  keys() {\n    // LRUCache.keys() returns a generator (we just want an array)\n    return [...this.cache.keys()];\n  }\n}\n", "import type { KeyValueCache } from \"./KeyValueCache\";\nimport type { Logger } from \"@apollo/utils.logger\";\n\n/**\n * This cache wraps a KeyValueCache and returns undefined (a cache miss) for any\n * errors thrown by the underlying cache. You can also provide a logger to\n * capture these errors rather than just swallow them.\n */\nexport class ErrorsAreMissesCache<V = string> implements KeyValueCache<V> {\n  constructor(private cache: KeyValueCache<V>, private logger?: Logger) {}\n\n  async get(key: string): Promise<V | undefined> {\n    try {\n      return await this.cache.get(key);\n    } catch (e) {\n      if (this.logger) {\n        if (e instanceof Error) {\n          this.logger.error(e.message);\n        } else {\n          this.logger.error(e);\n        }\n      }\n      return undefined;\n    }\n  }\n\n  async set(key: string, value: V, opts?: { ttl?: number }): Promise<void> {\n    return this.cache.set(key, value, opts);\n  }\n\n  async delete(key: string): Promise<boolean | void> {\n    return this.cache.delete(key);\n  }\n}\n", "export type { KeyValueCache, KeyValueCacheSetOptions } from \"./KeyValueCache\";\nexport { PrefixingKeyValueCache } from \"./PrefixingKeyValueCache\";\nexport { InMemoryLRUCache } from \"./InMemoryLRUCache\";\nexport { ErrorsAreMissesCache } from \"./ErrorsAreMissesCache\";\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.assertSome = exports.isSome = exports.compareNodes = exports.nodeToString = exports.compareStrings = exports.isValidPath = exports.isDocumentString = exports.asArray = void 0;\nconst graphql_1 = require(\"graphql\");\nconst asArray = (fns) => (Array.isArray(fns) ? fns : fns ? [fns] : []);\nexports.asArray = asArray;\nconst invalidDocRegex = /\\.[a-z0-9]+$/i;\nfunction isDocumentString(str) {\n    if (typeof str !== 'string') {\n        return false;\n    }\n    // XXX: is-valid-path or is-glob treat SDL as a valid path\n    // (`scalar Date` for example)\n    // this why checking the extension is fast enough\n    // and prevent from parsing the string in order to find out\n    // if the string is a SDL\n    if (invalidDocRegex.test(str)) {\n        return false;\n    }\n    try {\n        (0, graphql_1.parse)(str);\n        return true;\n    }\n    catch (e) { }\n    return false;\n}\nexports.isDocumentString = isDocumentString;\nconst invalidPathRegex = /[\u2018\u201C!%^<=>`]/;\nfunction isValidPath(str) {\n    return typeof str === 'string' && !invalidPathRegex.test(str);\n}\nexports.isValidPath = isValidPath;\nfunction compareStrings(a, b) {\n    if (String(a) < String(b)) {\n        return -1;\n    }\n    if (String(a) > String(b)) {\n        return 1;\n    }\n    return 0;\n}\nexports.compareStrings = compareStrings;\nfunction nodeToString(a) {\n    var _a, _b;\n    let name;\n    if ('alias' in a) {\n        name = (_a = a.alias) === null || _a === void 0 ? void 0 : _a.value;\n    }\n    if (name == null && 'name' in a) {\n        name = (_b = a.name) === null || _b === void 0 ? void 0 : _b.value;\n    }\n    if (name == null) {\n        name = a.kind;\n    }\n    return name;\n}\nexports.nodeToString = nodeToString;\nfunction compareNodes(a, b, customFn) {\n    const aStr = nodeToString(a);\n    const bStr = nodeToString(b);\n    if (typeof customFn === 'function') {\n        return customFn(aStr, bStr);\n    }\n    return compareStrings(aStr, bStr);\n}\nexports.compareNodes = compareNodes;\nfunction isSome(input) {\n    return input != null;\n}\nexports.isSome = isSome;\nfunction assertSome(input, message = 'Value should be something') {\n    if (input == null) {\n        throw new Error(message);\n    }\n}\nexports.assertSome = assertSome;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.hasOwnProperty = exports.promiseReduce = exports.isPromise = exports.isObjectLike = exports.isIterableObject = void 0;\nfunction isIterableObject(value) {\n    return value != null && typeof value === 'object' && Symbol.iterator in value;\n}\nexports.isIterableObject = isIterableObject;\nfunction isObjectLike(value) {\n    return typeof value === 'object' && value !== null;\n}\nexports.isObjectLike = isObjectLike;\nfunction isPromise(value) {\n    return isObjectLike(value) && typeof value['then'] === 'function';\n}\nexports.isPromise = isPromise;\nfunction promiseReduce(values, callbackFn, initialValue) {\n    let accumulator = initialValue;\n    for (const value of values) {\n        accumulator = isPromise(accumulator)\n            ? accumulator.then(resolved => callbackFn(resolved, value))\n            : callbackFn(accumulator, value);\n    }\n    return accumulator;\n}\nexports.promiseReduce = promiseReduce;\nfunction hasOwnProperty(obj, prop) {\n    return Object.prototype.hasOwnProperty.call(obj, prop);\n}\nexports.hasOwnProperty = hasOwnProperty;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.relocatedError = exports.createGraphQLError = void 0;\nconst graphql_1 = require(\"graphql\");\nfunction createGraphQLError(message, options) {\n    if (graphql_1.versionInfo.major >= 17) {\n        return new graphql_1.GraphQLError(message, options);\n    }\n    return new graphql_1.GraphQLError(message, options === null || options === void 0 ? void 0 : options.nodes, options === null || options === void 0 ? void 0 : options.source, options === null || options === void 0 ? void 0 : options.positions, options === null || options === void 0 ? void 0 : options.path, options === null || options === void 0 ? void 0 : options.originalError, options === null || options === void 0 ? void 0 : options.extensions);\n}\nexports.createGraphQLError = createGraphQLError;\nfunction relocatedError(originalError, path) {\n    return createGraphQLError(originalError.message, {\n        nodes: originalError.nodes,\n        source: originalError.source,\n        positions: originalError.positions,\n        path: path == null ? originalError.path : path,\n        originalError,\n        extensions: originalError.extensions,\n    });\n}\nexports.relocatedError = relocatedError;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isAggregateError = exports.AggregateError = void 0;\nlet AggregateErrorImpl;\nexports.AggregateError = AggregateErrorImpl;\nif (typeof AggregateError === 'undefined') {\n    class AggregateErrorClass extends Error {\n        constructor(errors, message = '') {\n            super(message);\n            this.errors = errors;\n            this.name = 'AggregateError';\n            Error.captureStackTrace(this, AggregateErrorClass);\n        }\n    }\n    exports.AggregateError = AggregateErrorImpl = function (errors, message) {\n        return new AggregateErrorClass(errors, message);\n    };\n}\nelse {\n    exports.AggregateError = AggregateErrorImpl = AggregateError;\n}\nfunction isAggregateError(error) {\n    return 'errors' in error && Array.isArray(error['errors']);\n}\nexports.isAggregateError = isAggregateError;\n", "\"use strict\";\n// Taken from graphql-js\n// https://github.com/graphql/graphql-js/blob/main/src/jsutils/inspect.ts\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.inspect = void 0;\nconst graphql_1 = require(\"graphql\");\nconst AggregateError_js_1 = require(\"./AggregateError.js\");\nconst MAX_RECURSIVE_DEPTH = 3;\n/**\n * Used to print values in error messages.\n */\nfunction inspect(value) {\n    return formatValue(value, []);\n}\nexports.inspect = inspect;\nfunction formatValue(value, seenValues) {\n    switch (typeof value) {\n        case 'string':\n            return JSON.stringify(value);\n        case 'function':\n            return value.name ? `[function ${value.name}]` : '[function]';\n        case 'object':\n            return formatObjectValue(value, seenValues);\n        default:\n            return String(value);\n    }\n}\nfunction formatError(value) {\n    if (value instanceof graphql_1.GraphQLError) {\n        return value.toString();\n    }\n    return `${value.name}: ${value.message};\\n ${value.stack}`;\n}\nfunction formatObjectValue(value, previouslySeenValues) {\n    if (value === null) {\n        return 'null';\n    }\n    if (value instanceof Error) {\n        if ((0, AggregateError_js_1.isAggregateError)(value)) {\n            return formatError(value) + '\\n' + formatArray(value.errors, previouslySeenValues);\n        }\n        return formatError(value);\n    }\n    if (previouslySeenValues.includes(value)) {\n        return '[Circular]';\n    }\n    const seenValues = [...previouslySeenValues, value];\n    if (isJSONable(value)) {\n        const jsonValue = value.toJSON();\n        // check for infinite recursion\n        if (jsonValue !== value) {\n            return typeof jsonValue === 'string' ? jsonValue : formatValue(jsonValue, seenValues);\n        }\n    }\n    else if (Array.isArray(value)) {\n        return formatArray(value, seenValues);\n    }\n    return formatObject(value, seenValues);\n}\nfunction isJSONable(value) {\n    return typeof value.toJSON === 'function';\n}\nfunction formatObject(object, seenValues) {\n    const entries = Object.entries(object);\n    if (entries.length === 0) {\n        return '{}';\n    }\n    if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n        return '[' + getObjectTag(object) + ']';\n    }\n    const properties = entries.map(([key, value]) => key + ': ' + formatValue(value, seenValues));\n    return '{ ' + properties.join(', ') + ' }';\n}\nfunction formatArray(array, seenValues) {\n    if (array.length === 0) {\n        return '[]';\n    }\n    if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n        return '[Array]';\n    }\n    const len = array.length;\n    const items = [];\n    for (let i = 0; i < len; ++i) {\n        items.push(formatValue(array[i], seenValues));\n    }\n    return '[' + items.join(', ') + ']';\n}\nfunction getObjectTag(object) {\n    const tag = Object.prototype.toString\n        .call(object)\n        .replace(/^\\[object /, '')\n        .replace(/]$/, '');\n    if (tag === 'Object' && typeof object.constructor === 'function') {\n        const name = object.constructor.name;\n        if (typeof name === 'string' && name !== '') {\n            return name;\n        }\n    }\n    return tag;\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getArgumentValues = void 0;\nconst jsutils_js_1 = require(\"./jsutils.js\");\nconst graphql_1 = require(\"graphql\");\nconst errors_js_1 = require(\"./errors.js\");\nconst inspect_js_1 = require(\"./inspect.js\");\n/**\n * Prepares an object map of argument values given a list of argument\n * definitions and list of argument AST nodes.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\nfunction getArgumentValues(def, node, variableValues = {}) {\n    var _a;\n    const coercedValues = {};\n    const argumentNodes = (_a = node.arguments) !== null && _a !== void 0 ? _a : [];\n    const argNodeMap = argumentNodes.reduce((prev, arg) => ({\n        ...prev,\n        [arg.name.value]: arg,\n    }), {});\n    for (const { name, type: argType, defaultValue } of def.args) {\n        const argumentNode = argNodeMap[name];\n        if (!argumentNode) {\n            if (defaultValue !== undefined) {\n                coercedValues[name] = defaultValue;\n            }\n            else if ((0, graphql_1.isNonNullType)(argType)) {\n                throw (0, errors_js_1.createGraphQLError)(`Argument \"${name}\" of required type \"${(0, inspect_js_1.inspect)(argType)}\" ` + 'was not provided.', {\n                    nodes: [node],\n                });\n            }\n            continue;\n        }\n        const valueNode = argumentNode.value;\n        let isNull = valueNode.kind === graphql_1.Kind.NULL;\n        if (valueNode.kind === graphql_1.Kind.VARIABLE) {\n            const variableName = valueNode.name.value;\n            if (variableValues == null || !(0, jsutils_js_1.hasOwnProperty)(variableValues, variableName)) {\n                if (defaultValue !== undefined) {\n                    coercedValues[name] = defaultValue;\n                }\n                else if ((0, graphql_1.isNonNullType)(argType)) {\n                    throw (0, errors_js_1.createGraphQLError)(`Argument \"${name}\" of required type \"${(0, inspect_js_1.inspect)(argType)}\" ` +\n                        `was provided the variable \"$${variableName}\" which was not provided a runtime value.`, {\n                        nodes: [valueNode],\n                    });\n                }\n                continue;\n            }\n            isNull = variableValues[variableName] == null;\n        }\n        if (isNull && (0, graphql_1.isNonNullType)(argType)) {\n            throw (0, errors_js_1.createGraphQLError)(`Argument \"${name}\" of non-null type \"${(0, inspect_js_1.inspect)(argType)}\" ` + 'must not be null.', {\n                nodes: [valueNode],\n            });\n        }\n        const coercedValue = (0, graphql_1.valueFromAST)(valueNode, argType, variableValues);\n        if (coercedValue === undefined) {\n            // Note: ValuesOfCorrectTypeRule validation should catch this before\n            // execution. This is a runtime check to ensure execution does not\n            // continue with an invalid argument value.\n            throw (0, errors_js_1.createGraphQLError)(`Argument \"${name}\" has invalid value ${(0, graphql_1.print)(valueNode)}.`, {\n                nodes: [valueNode],\n            });\n        }\n        coercedValues[name] = coercedValue;\n    }\n    return coercedValues;\n}\nexports.getArgumentValues = getArgumentValues;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getDirective = exports.getDirectives = exports.getDirectiveInExtensions = exports.getDirectivesInExtensions = void 0;\nconst getArgumentValues_js_1 = require(\"./getArgumentValues.js\");\nfunction getDirectivesInExtensions(node, pathToDirectivesInExtensions = ['directives']) {\n    return pathToDirectivesInExtensions.reduce((acc, pathSegment) => (acc == null ? acc : acc[pathSegment]), node === null || node === void 0 ? void 0 : node.extensions);\n}\nexports.getDirectivesInExtensions = getDirectivesInExtensions;\nfunction _getDirectiveInExtensions(directivesInExtensions, directiveName) {\n    const directiveInExtensions = directivesInExtensions.filter(directiveAnnotation => directiveAnnotation.name === directiveName);\n    if (!directiveInExtensions.length) {\n        return undefined;\n    }\n    return directiveInExtensions.map(directive => { var _a; return (_a = directive.args) !== null && _a !== void 0 ? _a : {}; });\n}\nfunction getDirectiveInExtensions(node, directiveName, pathToDirectivesInExtensions = ['directives']) {\n    const directivesInExtensions = pathToDirectivesInExtensions.reduce((acc, pathSegment) => (acc == null ? acc : acc[pathSegment]), node === null || node === void 0 ? void 0 : node.extensions);\n    if (directivesInExtensions === undefined) {\n        return undefined;\n    }\n    if (Array.isArray(directivesInExtensions)) {\n        return _getDirectiveInExtensions(directivesInExtensions, directiveName);\n    }\n    // Support condensed format by converting to longer format\n    // The condensed format does not preserve ordering of directives when  repeatable directives are used.\n    // See https://github.com/ardatan/graphql-tools/issues/2534\n    const reformattedDirectivesInExtensions = [];\n    for (const [name, argsOrArrayOfArgs] of Object.entries(directivesInExtensions)) {\n        if (Array.isArray(argsOrArrayOfArgs)) {\n            for (const args of argsOrArrayOfArgs) {\n                reformattedDirectivesInExtensions.push({ name, args });\n            }\n        }\n        else {\n            reformattedDirectivesInExtensions.push({ name, args: argsOrArrayOfArgs });\n        }\n    }\n    return _getDirectiveInExtensions(reformattedDirectivesInExtensions, directiveName);\n}\nexports.getDirectiveInExtensions = getDirectiveInExtensions;\nfunction getDirectives(schema, node, pathToDirectivesInExtensions = ['directives']) {\n    const directivesInExtensions = getDirectivesInExtensions(node, pathToDirectivesInExtensions);\n    if (directivesInExtensions != null && directivesInExtensions.length > 0) {\n        return directivesInExtensions;\n    }\n    const schemaDirectives = schema && schema.getDirectives ? schema.getDirectives() : [];\n    const schemaDirectiveMap = schemaDirectives.reduce((schemaDirectiveMap, schemaDirective) => {\n        schemaDirectiveMap[schemaDirective.name] = schemaDirective;\n        return schemaDirectiveMap;\n    }, {});\n    let astNodes = [];\n    if (node.astNode) {\n        astNodes.push(node.astNode);\n    }\n    if ('extensionASTNodes' in node && node.extensionASTNodes) {\n        astNodes = [...astNodes, ...node.extensionASTNodes];\n    }\n    const result = [];\n    for (const astNode of astNodes) {\n        if (astNode.directives) {\n            for (const directiveNode of astNode.directives) {\n                const schemaDirective = schemaDirectiveMap[directiveNode.name.value];\n                if (schemaDirective) {\n                    result.push({ name: directiveNode.name.value, args: (0, getArgumentValues_js_1.getArgumentValues)(schemaDirective, directiveNode) });\n                }\n            }\n        }\n    }\n    return result;\n}\nexports.getDirectives = getDirectives;\nfunction getDirective(schema, node, directiveName, pathToDirectivesInExtensions = ['directives']) {\n    const directiveInExtensions = getDirectiveInExtensions(node, directiveName, pathToDirectivesInExtensions);\n    if (directiveInExtensions != null) {\n        return directiveInExtensions;\n    }\n    const schemaDirective = schema && schema.getDirective ? schema.getDirective(directiveName) : undefined;\n    if (schemaDirective == null) {\n        return undefined;\n    }\n    let astNodes = [];\n    if (node.astNode) {\n        astNodes.push(node.astNode);\n    }\n    if ('extensionASTNodes' in node && node.extensionASTNodes) {\n        astNodes = [...astNodes, ...node.extensionASTNodes];\n    }\n    const result = [];\n    for (const astNode of astNodes) {\n        if (astNode.directives) {\n            for (const directiveNode of astNode.directives) {\n                if (directiveNode.name.value === directiveName) {\n                    result.push((0, getArgumentValues_js_1.getArgumentValues)(schemaDirective, directiveNode));\n                }\n            }\n        }\n    }\n    if (!result.length) {\n        return undefined;\n    }\n    return result;\n}\nexports.getDirective = getDirective;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getFieldsWithDirectives = void 0;\nconst graphql_1 = require(\"graphql\");\nfunction getFieldsWithDirectives(documentNode, options = {}) {\n    const result = {};\n    let selected = ['ObjectTypeDefinition', 'ObjectTypeExtension'];\n    if (options.includeInputTypes) {\n        selected = [...selected, 'InputObjectTypeDefinition', 'InputObjectTypeExtension'];\n    }\n    const allTypes = documentNode.definitions.filter(obj => selected.includes(obj.kind));\n    for (const type of allTypes) {\n        const typeName = type.name.value;\n        if (type.fields == null) {\n            continue;\n        }\n        for (const field of type.fields) {\n            if (field.directives && field.directives.length > 0) {\n                const fieldName = field.name.value;\n                const key = `${typeName}.${fieldName}`;\n                const directives = field.directives.map(d => ({\n                    name: d.name.value,\n                    args: (d.arguments || []).reduce((prev, arg) => ({ ...prev, [arg.name.value]: (0, graphql_1.valueFromASTUntyped)(arg.value) }), {}),\n                }));\n                result[key] = directives;\n            }\n        }\n    }\n    return result;\n}\nexports.getFieldsWithDirectives = getFieldsWithDirectives;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getArgumentsWithDirectives = void 0;\nconst graphql_1 = require(\"graphql\");\nfunction isTypeWithFields(t) {\n    return t.kind === graphql_1.Kind.OBJECT_TYPE_DEFINITION || t.kind === graphql_1.Kind.OBJECT_TYPE_EXTENSION;\n}\nfunction getArgumentsWithDirectives(documentNode) {\n    var _a;\n    const result = {};\n    const allTypes = documentNode.definitions.filter(isTypeWithFields);\n    for (const type of allTypes) {\n        if (type.fields == null) {\n            continue;\n        }\n        for (const field of type.fields) {\n            const argsWithDirectives = (_a = field.arguments) === null || _a === void 0 ? void 0 : _a.filter(arg => { var _a; return (_a = arg.directives) === null || _a === void 0 ? void 0 : _a.length; });\n            if (!(argsWithDirectives === null || argsWithDirectives === void 0 ? void 0 : argsWithDirectives.length)) {\n                continue;\n            }\n            const typeFieldResult = (result[`${type.name.value}.${field.name.value}`] = {});\n            for (const arg of argsWithDirectives) {\n                const directives = arg.directives.map(d => ({\n                    name: d.name.value,\n                    args: (d.arguments || []).reduce((prev, dArg) => ({ ...prev, [dArg.name.value]: (0, graphql_1.valueFromASTUntyped)(dArg.value) }), {}),\n                }));\n                typeFieldResult[arg.name.value] = directives;\n            }\n        }\n    }\n    return result;\n}\nexports.getArgumentsWithDirectives = getArgumentsWithDirectives;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getImplementingTypes = void 0;\nconst graphql_1 = require(\"graphql\");\nfunction getImplementingTypes(interfaceName, schema) {\n    const allTypesMap = schema.getTypeMap();\n    const result = [];\n    for (const graphqlTypeName in allTypesMap) {\n        const graphqlType = allTypesMap[graphqlTypeName];\n        if ((0, graphql_1.isObjectType)(graphqlType)) {\n            const allInterfaces = graphqlType.getInterfaces();\n            if (allInterfaces.find(int => int.name === interfaceName)) {\n                result.push(graphqlType.name);\n            }\n        }\n    }\n    return result;\n}\nexports.getImplementingTypes = getImplementingTypes;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.astFromType = void 0;\nconst graphql_1 = require(\"graphql\");\nconst inspect_js_1 = require(\"./inspect.js\");\nfunction astFromType(type) {\n    if ((0, graphql_1.isNonNullType)(type)) {\n        const innerType = astFromType(type.ofType);\n        if (innerType.kind === graphql_1.Kind.NON_NULL_TYPE) {\n            throw new Error(`Invalid type node ${(0, inspect_js_1.inspect)(type)}. Inner type of non-null type cannot be a non-null type.`);\n        }\n        return {\n            kind: graphql_1.Kind.NON_NULL_TYPE,\n            type: innerType,\n        };\n    }\n    else if ((0, graphql_1.isListType)(type)) {\n        return {\n            kind: graphql_1.Kind.LIST_TYPE,\n            type: astFromType(type.ofType),\n        };\n    }\n    return {\n        kind: graphql_1.Kind.NAMED_TYPE,\n        name: {\n            kind: graphql_1.Kind.NAME,\n            value: type.name,\n        },\n    };\n}\nexports.astFromType = astFromType;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.astFromValueUntyped = void 0;\nconst graphql_1 = require(\"graphql\");\n/**\n * Produces a GraphQL Value AST given a JavaScript object.\n * Function will match JavaScript/JSON values to GraphQL AST schema format\n * by using the following mapping.\n *\n * | JSON Value    | GraphQL Value        |\n * | ------------- | -------------------- |\n * | Object        | Input Object         |\n * | Array         | List                 |\n * | Boolean       | Boolean              |\n * | String        | String               |\n * | Number        | Int / Float          |\n * | null          | NullValue            |\n *\n */\nfunction astFromValueUntyped(value) {\n    // only explicit null, not undefined, NaN\n    if (value === null) {\n        return { kind: graphql_1.Kind.NULL };\n    }\n    // undefined\n    if (value === undefined) {\n        return null;\n    }\n    // Convert JavaScript array to GraphQL list. If the GraphQLType is a list, but\n    // the value is not an array, convert the value using the list's item type.\n    if (Array.isArray(value)) {\n        const valuesNodes = [];\n        for (const item of value) {\n            const itemNode = astFromValueUntyped(item);\n            if (itemNode != null) {\n                valuesNodes.push(itemNode);\n            }\n        }\n        return { kind: graphql_1.Kind.LIST, values: valuesNodes };\n    }\n    if (typeof value === 'object') {\n        const fieldNodes = [];\n        for (const fieldName in value) {\n            const fieldValue = value[fieldName];\n            const ast = astFromValueUntyped(fieldValue);\n            if (ast) {\n                fieldNodes.push({\n                    kind: graphql_1.Kind.OBJECT_FIELD,\n                    name: { kind: graphql_1.Kind.NAME, value: fieldName },\n                    value: ast,\n                });\n            }\n        }\n        return { kind: graphql_1.Kind.OBJECT, fields: fieldNodes };\n    }\n    // Others serialize based on their corresponding JavaScript scalar types.\n    if (typeof value === 'boolean') {\n        return { kind: graphql_1.Kind.BOOLEAN, value };\n    }\n    // JavaScript numbers can be Int or Float values.\n    if (typeof value === 'number' && isFinite(value)) {\n        const stringNum = String(value);\n        return integerStringRegExp.test(stringNum)\n            ? { kind: graphql_1.Kind.INT, value: stringNum }\n            : { kind: graphql_1.Kind.FLOAT, value: stringNum };\n    }\n    if (typeof value === 'string') {\n        return { kind: graphql_1.Kind.STRING, value };\n    }\n    throw new TypeError(`Cannot convert value to AST: ${value}.`);\n}\nexports.astFromValueUntyped = astFromValueUntyped;\n/**\n * IntValue:\n *   - NegativeSign? 0\n *   - NegativeSign? NonZeroDigit ( Digit+ )?\n */\nconst integerStringRegExp = /^-?(?:0|[1-9][0-9]*)$/;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.memoize2of5 = exports.memoize2of4 = exports.memoize5 = exports.memoize4 = exports.memoize3 = exports.memoize2 = exports.memoize1 = void 0;\nfunction memoize1(fn) {\n    const memoize1cache = new WeakMap();\n    return function memoized(a1) {\n        const cachedValue = memoize1cache.get(a1);\n        if (cachedValue === undefined) {\n            const newValue = fn(a1);\n            memoize1cache.set(a1, newValue);\n            return newValue;\n        }\n        return cachedValue;\n    };\n}\nexports.memoize1 = memoize1;\nfunction memoize2(fn) {\n    const memoize2cache = new WeakMap();\n    return function memoized(a1, a2) {\n        let cache2 = memoize2cache.get(a1);\n        if (!cache2) {\n            cache2 = new WeakMap();\n            memoize2cache.set(a1, cache2);\n            const newValue = fn(a1, a2);\n            cache2.set(a2, newValue);\n            return newValue;\n        }\n        const cachedValue = cache2.get(a2);\n        if (cachedValue === undefined) {\n            const newValue = fn(a1, a2);\n            cache2.set(a2, newValue);\n            return newValue;\n        }\n        return cachedValue;\n    };\n}\nexports.memoize2 = memoize2;\nfunction memoize3(fn) {\n    const memoize3Cache = new WeakMap();\n    return function memoized(a1, a2, a3) {\n        let cache2 = memoize3Cache.get(a1);\n        if (!cache2) {\n            cache2 = new WeakMap();\n            memoize3Cache.set(a1, cache2);\n            const cache3 = new WeakMap();\n            cache2.set(a2, cache3);\n            const newValue = fn(a1, a2, a3);\n            cache3.set(a3, newValue);\n            return newValue;\n        }\n        let cache3 = cache2.get(a2);\n        if (!cache3) {\n            cache3 = new WeakMap();\n            cache2.set(a2, cache3);\n            const newValue = fn(a1, a2, a3);\n            cache3.set(a3, newValue);\n            return newValue;\n        }\n        const cachedValue = cache3.get(a3);\n        if (cachedValue === undefined) {\n            const newValue = fn(a1, a2, a3);\n            cache3.set(a3, newValue);\n            return newValue;\n        }\n        return cachedValue;\n    };\n}\nexports.memoize3 = memoize3;\nfunction memoize4(fn) {\n    const memoize4Cache = new WeakMap();\n    return function memoized(a1, a2, a3, a4) {\n        let cache2 = memoize4Cache.get(a1);\n        if (!cache2) {\n            cache2 = new WeakMap();\n            memoize4Cache.set(a1, cache2);\n            const cache3 = new WeakMap();\n            cache2.set(a2, cache3);\n            const cache4 = new WeakMap();\n            cache3.set(a3, cache4);\n            const newValue = fn(a1, a2, a3, a4);\n            cache4.set(a4, newValue);\n            return newValue;\n        }\n        let cache3 = cache2.get(a2);\n        if (!cache3) {\n            cache3 = new WeakMap();\n            cache2.set(a2, cache3);\n            const cache4 = new WeakMap();\n            cache3.set(a3, cache4);\n            const newValue = fn(a1, a2, a3, a4);\n            cache4.set(a4, newValue);\n            return newValue;\n        }\n        const cache4 = cache3.get(a3);\n        if (!cache4) {\n            const cache4 = new WeakMap();\n            cache3.set(a3, cache4);\n            const newValue = fn(a1, a2, a3, a4);\n            cache4.set(a4, newValue);\n            return newValue;\n        }\n        const cachedValue = cache4.get(a4);\n        if (cachedValue === undefined) {\n            const newValue = fn(a1, a2, a3, a4);\n            cache4.set(a4, newValue);\n            return newValue;\n        }\n        return cachedValue;\n    };\n}\nexports.memoize4 = memoize4;\nfunction memoize5(fn) {\n    const memoize5Cache = new WeakMap();\n    return function memoized(a1, a2, a3, a4, a5) {\n        let cache2 = memoize5Cache.get(a1);\n        if (!cache2) {\n            cache2 = new WeakMap();\n            memoize5Cache.set(a1, cache2);\n            const cache3 = new WeakMap();\n            cache2.set(a2, cache3);\n            const cache4 = new WeakMap();\n            cache3.set(a3, cache4);\n            const cache5 = new WeakMap();\n            cache4.set(a4, cache5);\n            const newValue = fn(a1, a2, a3, a4, a5);\n            cache5.set(a5, newValue);\n            return newValue;\n        }\n        let cache3 = cache2.get(a2);\n        if (!cache3) {\n            cache3 = new WeakMap();\n            cache2.set(a2, cache3);\n            const cache4 = new WeakMap();\n            cache3.set(a3, cache4);\n            const cache5 = new WeakMap();\n            cache4.set(a4, cache5);\n            const newValue = fn(a1, a2, a3, a4, a5);\n            cache5.set(a5, newValue);\n            return newValue;\n        }\n        let cache4 = cache3.get(a3);\n        if (!cache4) {\n            cache4 = new WeakMap();\n            cache3.set(a3, cache4);\n            const cache5 = new WeakMap();\n            cache4.set(a4, cache5);\n            const newValue = fn(a1, a2, a3, a4, a5);\n            cache5.set(a5, newValue);\n            return newValue;\n        }\n        let cache5 = cache4.get(a4);\n        if (!cache5) {\n            cache5 = new WeakMap();\n            cache4.set(a4, cache5);\n            const newValue = fn(a1, a2, a3, a4, a5);\n            cache5.set(a5, newValue);\n            return newValue;\n        }\n        const cachedValue = cache5.get(a5);\n        if (cachedValue === undefined) {\n            const newValue = fn(a1, a2, a3, a4, a5);\n            cache5.set(a5, newValue);\n            return newValue;\n        }\n        return cachedValue;\n    };\n}\nexports.memoize5 = memoize5;\nfunction memoize2of4(fn) {\n    const memoize2of4cache = new WeakMap();\n    return function memoized(a1, a2, a3, a4) {\n        let cache2 = memoize2of4cache.get(a1);\n        if (!cache2) {\n            cache2 = new WeakMap();\n            memoize2of4cache.set(a1, cache2);\n            const newValue = fn(a1, a2, a3, a4);\n            cache2.set(a2, newValue);\n            return newValue;\n        }\n        const cachedValue = cache2.get(a2);\n        if (cachedValue === undefined) {\n            const newValue = fn(a1, a2, a3, a4);\n            cache2.set(a2, newValue);\n            return newValue;\n        }\n        return cachedValue;\n    };\n}\nexports.memoize2of4 = memoize2of4;\nfunction memoize2of5(fn) {\n    const memoize2of4cache = new WeakMap();\n    return function memoized(a1, a2, a3, a4, a5) {\n        let cache2 = memoize2of4cache.get(a1);\n        if (!cache2) {\n            cache2 = new WeakMap();\n            memoize2of4cache.set(a1, cache2);\n            const newValue = fn(a1, a2, a3, a4, a5);\n            cache2.set(a2, newValue);\n            return newValue;\n        }\n        const cachedValue = cache2.get(a2);\n        if (cachedValue === undefined) {\n            const newValue = fn(a1, a2, a3, a4, a5);\n            cache2.set(a2, newValue);\n            return newValue;\n        }\n        return cachedValue;\n    };\n}\nexports.memoize2of5 = memoize2of5;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRootTypeMap = exports.getRootTypes = exports.getRootTypeNames = exports.getDefinedRootType = void 0;\nconst errors_js_1 = require(\"./errors.js\");\nconst memoize_js_1 = require(\"./memoize.js\");\nfunction getDefinedRootType(schema, operation, nodes) {\n    const rootTypeMap = (0, exports.getRootTypeMap)(schema);\n    const rootType = rootTypeMap.get(operation);\n    if (rootType == null) {\n        throw (0, errors_js_1.createGraphQLError)(`Schema is not configured to execute ${operation} operation.`, {\n            nodes,\n        });\n    }\n    return rootType;\n}\nexports.getDefinedRootType = getDefinedRootType;\nexports.getRootTypeNames = (0, memoize_js_1.memoize1)(function getRootTypeNames(schema) {\n    const rootTypes = (0, exports.getRootTypes)(schema);\n    return new Set([...rootTypes].map(type => type.name));\n});\nexports.getRootTypes = (0, memoize_js_1.memoize1)(function getRootTypes(schema) {\n    const rootTypeMap = (0, exports.getRootTypeMap)(schema);\n    return new Set(rootTypeMap.values());\n});\nexports.getRootTypeMap = (0, memoize_js_1.memoize1)(function getRootTypeMap(schema) {\n    const rootTypeMap = new Map();\n    const queryType = schema.getQueryType();\n    if (queryType) {\n        rootTypeMap.set('query', queryType);\n    }\n    const mutationType = schema.getMutationType();\n    if (mutationType) {\n        rootTypeMap.set('mutation', mutationType);\n    }\n    const subscriptionType = schema.getSubscriptionType();\n    if (subscriptionType) {\n        rootTypeMap.set('subscription', subscriptionType);\n    }\n    return rootTypeMap;\n});\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.makeDirectiveNodes = exports.makeDirectiveNode = exports.makeDeprecatedDirective = exports.astFromEnumValue = exports.astFromInputField = exports.astFromField = exports.astFromScalarType = exports.astFromEnumType = exports.astFromInputObjectType = exports.astFromUnionType = exports.astFromInterfaceType = exports.astFromObjectType = exports.astFromArg = exports.getDeprecatableDirectiveNodes = exports.getDirectiveNodes = exports.astFromDirective = exports.astFromSchema = exports.printSchemaWithDirectives = exports.getDocumentNodeFromSchema = void 0;\nconst graphql_1 = require(\"graphql\");\nconst astFromType_js_1 = require(\"./astFromType.js\");\nconst get_directives_js_1 = require(\"./get-directives.js\");\nconst astFromValueUntyped_js_1 = require(\"./astFromValueUntyped.js\");\nconst helpers_js_1 = require(\"./helpers.js\");\nconst rootTypes_js_1 = require(\"./rootTypes.js\");\nfunction getDocumentNodeFromSchema(schema, options = {}) {\n    const pathToDirectivesInExtensions = options.pathToDirectivesInExtensions;\n    const typesMap = schema.getTypeMap();\n    const schemaNode = astFromSchema(schema, pathToDirectivesInExtensions);\n    const definitions = schemaNode != null ? [schemaNode] : [];\n    const directives = schema.getDirectives();\n    for (const directive of directives) {\n        if ((0, graphql_1.isSpecifiedDirective)(directive)) {\n            continue;\n        }\n        definitions.push(astFromDirective(directive, schema, pathToDirectivesInExtensions));\n    }\n    for (const typeName in typesMap) {\n        const type = typesMap[typeName];\n        const isPredefinedScalar = (0, graphql_1.isSpecifiedScalarType)(type);\n        const isIntrospection = (0, graphql_1.isIntrospectionType)(type);\n        if (isPredefinedScalar || isIntrospection) {\n            continue;\n        }\n        if ((0, graphql_1.isObjectType)(type)) {\n            definitions.push(astFromObjectType(type, schema, pathToDirectivesInExtensions));\n        }\n        else if ((0, graphql_1.isInterfaceType)(type)) {\n            definitions.push(astFromInterfaceType(type, schema, pathToDirectivesInExtensions));\n        }\n        else if ((0, graphql_1.isUnionType)(type)) {\n            definitions.push(astFromUnionType(type, schema, pathToDirectivesInExtensions));\n        }\n        else if ((0, graphql_1.isInputObjectType)(type)) {\n            definitions.push(astFromInputObjectType(type, schema, pathToDirectivesInExtensions));\n        }\n        else if ((0, graphql_1.isEnumType)(type)) {\n            definitions.push(astFromEnumType(type, schema, pathToDirectivesInExtensions));\n        }\n        else if ((0, graphql_1.isScalarType)(type)) {\n            definitions.push(astFromScalarType(type, schema, pathToDirectivesInExtensions));\n        }\n        else {\n            throw new Error(`Unknown type ${type}.`);\n        }\n    }\n    return {\n        kind: graphql_1.Kind.DOCUMENT,\n        definitions,\n    };\n}\nexports.getDocumentNodeFromSchema = getDocumentNodeFromSchema;\n// this approach uses the default schema printer rather than a custom solution, so may be more backwards compatible\n// currently does not allow customization of printSchema options having to do with comments.\nfunction printSchemaWithDirectives(schema, options = {}) {\n    const documentNode = getDocumentNodeFromSchema(schema, options);\n    return (0, graphql_1.print)(documentNode);\n}\nexports.printSchemaWithDirectives = printSchemaWithDirectives;\nfunction astFromSchema(schema, pathToDirectivesInExtensions) {\n    var _a, _b;\n    const operationTypeMap = new Map([\n        ['query', undefined],\n        ['mutation', undefined],\n        ['subscription', undefined],\n    ]);\n    const nodes = [];\n    if (schema.astNode != null) {\n        nodes.push(schema.astNode);\n    }\n    if (schema.extensionASTNodes != null) {\n        for (const extensionASTNode of schema.extensionASTNodes) {\n            nodes.push(extensionASTNode);\n        }\n    }\n    for (const node of nodes) {\n        if (node.operationTypes) {\n            for (const operationTypeDefinitionNode of node.operationTypes) {\n                operationTypeMap.set(operationTypeDefinitionNode.operation, operationTypeDefinitionNode);\n            }\n        }\n    }\n    const rootTypeMap = (0, rootTypes_js_1.getRootTypeMap)(schema);\n    for (const [operationTypeNode, operationTypeDefinitionNode] of operationTypeMap) {\n        const rootType = rootTypeMap.get(operationTypeNode);\n        if (rootType != null) {\n            const rootTypeAST = (0, astFromType_js_1.astFromType)(rootType);\n            if (operationTypeDefinitionNode != null) {\n                operationTypeDefinitionNode.type = rootTypeAST;\n            }\n            else {\n                operationTypeMap.set(operationTypeNode, {\n                    kind: graphql_1.Kind.OPERATION_TYPE_DEFINITION,\n                    operation: operationTypeNode,\n                    type: rootTypeAST,\n                });\n            }\n        }\n    }\n    const operationTypes = [...operationTypeMap.values()].filter(helpers_js_1.isSome);\n    const directives = getDirectiveNodes(schema, schema, pathToDirectivesInExtensions);\n    if (!operationTypes.length && !directives.length) {\n        return null;\n    }\n    const schemaNode = {\n        kind: operationTypes != null ? graphql_1.Kind.SCHEMA_DEFINITION : graphql_1.Kind.SCHEMA_EXTENSION,\n        operationTypes,\n        // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n        directives: directives,\n    };\n    // This code is so weird because it needs to support GraphQL.js 14\n    // In GraphQL.js 14 there is no `description` value on schemaNode\n    schemaNode.description =\n        ((_b = (_a = schema.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : schema.description != null)\n            ? {\n                kind: graphql_1.Kind.STRING,\n                value: schema.description,\n                block: true,\n            }\n            : undefined;\n    return schemaNode;\n}\nexports.astFromSchema = astFromSchema;\nfunction astFromDirective(directive, schema, pathToDirectivesInExtensions) {\n    var _a, _b, _c, _d;\n    return {\n        kind: graphql_1.Kind.DIRECTIVE_DEFINITION,\n        description: (_b = (_a = directive.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (directive.description\n            ? {\n                kind: graphql_1.Kind.STRING,\n                value: directive.description,\n            }\n            : undefined),\n        name: {\n            kind: graphql_1.Kind.NAME,\n            value: directive.name,\n        },\n        arguments: (_c = directive.args) === null || _c === void 0 ? void 0 : _c.map(arg => astFromArg(arg, schema, pathToDirectivesInExtensions)),\n        repeatable: directive.isRepeatable,\n        locations: ((_d = directive.locations) === null || _d === void 0 ? void 0 : _d.map(location => ({\n            kind: graphql_1.Kind.NAME,\n            value: location,\n        }))) || [],\n    };\n}\nexports.astFromDirective = astFromDirective;\nfunction getDirectiveNodes(entity, schema, pathToDirectivesInExtensions) {\n    const directivesInExtensions = (0, get_directives_js_1.getDirectivesInExtensions)(entity, pathToDirectivesInExtensions);\n    let nodes = [];\n    if (entity.astNode != null) {\n        nodes.push(entity.astNode);\n    }\n    if ('extensionASTNodes' in entity && entity.extensionASTNodes != null) {\n        nodes = nodes.concat(entity.extensionASTNodes);\n    }\n    let directives;\n    if (directivesInExtensions != null) {\n        directives = makeDirectiveNodes(schema, directivesInExtensions);\n    }\n    else {\n        directives = [];\n        for (const node of nodes) {\n            if (node.directives) {\n                directives.push(...node.directives);\n            }\n        }\n    }\n    return directives;\n}\nexports.getDirectiveNodes = getDirectiveNodes;\nfunction getDeprecatableDirectiveNodes(entity, schema, pathToDirectivesInExtensions) {\n    var _a, _b;\n    let directiveNodesBesidesDeprecated = [];\n    let deprecatedDirectiveNode = null;\n    const directivesInExtensions = (0, get_directives_js_1.getDirectivesInExtensions)(entity, pathToDirectivesInExtensions);\n    let directives;\n    if (directivesInExtensions != null) {\n        directives = makeDirectiveNodes(schema, directivesInExtensions);\n    }\n    else {\n        directives = (_a = entity.astNode) === null || _a === void 0 ? void 0 : _a.directives;\n    }\n    if (directives != null) {\n        directiveNodesBesidesDeprecated = directives.filter(directive => directive.name.value !== 'deprecated');\n        if (entity.deprecationReason != null) {\n            deprecatedDirectiveNode = (_b = directives.filter(directive => directive.name.value === 'deprecated')) === null || _b === void 0 ? void 0 : _b[0];\n        }\n    }\n    if (entity.deprecationReason != null &&\n        deprecatedDirectiveNode == null) {\n        deprecatedDirectiveNode = makeDeprecatedDirective(entity.deprecationReason);\n    }\n    return deprecatedDirectiveNode == null\n        ? directiveNodesBesidesDeprecated\n        : [deprecatedDirectiveNode].concat(directiveNodesBesidesDeprecated);\n}\nexports.getDeprecatableDirectiveNodes = getDeprecatableDirectiveNodes;\nfunction astFromArg(arg, schema, pathToDirectivesInExtensions) {\n    var _a, _b, _c;\n    return {\n        kind: graphql_1.Kind.INPUT_VALUE_DEFINITION,\n        description: (_b = (_a = arg.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (arg.description\n            ? {\n                kind: graphql_1.Kind.STRING,\n                value: arg.description,\n                block: true,\n            }\n            : undefined),\n        name: {\n            kind: graphql_1.Kind.NAME,\n            value: arg.name,\n        },\n        type: (0, astFromType_js_1.astFromType)(arg.type),\n        // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n        defaultValue: arg.defaultValue !== undefined ? (_c = (0, graphql_1.astFromValue)(arg.defaultValue, arg.type)) !== null && _c !== void 0 ? _c : undefined : undefined,\n        directives: getDeprecatableDirectiveNodes(arg, schema, pathToDirectivesInExtensions),\n    };\n}\nexports.astFromArg = astFromArg;\nfunction astFromObjectType(type, schema, pathToDirectivesInExtensions) {\n    var _a, _b;\n    return {\n        kind: graphql_1.Kind.OBJECT_TYPE_DEFINITION,\n        description: (_b = (_a = type.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (type.description\n            ? {\n                kind: graphql_1.Kind.STRING,\n                value: type.description,\n                block: true,\n            }\n            : undefined),\n        name: {\n            kind: graphql_1.Kind.NAME,\n            value: type.name,\n        },\n        fields: Object.values(type.getFields()).map(field => astFromField(field, schema, pathToDirectivesInExtensions)),\n        interfaces: Object.values(type.getInterfaces()).map(iFace => (0, astFromType_js_1.astFromType)(iFace)),\n        directives: getDirectiveNodes(type, schema, pathToDirectivesInExtensions),\n    };\n}\nexports.astFromObjectType = astFromObjectType;\nfunction astFromInterfaceType(type, schema, pathToDirectivesInExtensions) {\n    var _a, _b;\n    const node = {\n        kind: graphql_1.Kind.INTERFACE_TYPE_DEFINITION,\n        description: (_b = (_a = type.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (type.description\n            ? {\n                kind: graphql_1.Kind.STRING,\n                value: type.description,\n                block: true,\n            }\n            : undefined),\n        name: {\n            kind: graphql_1.Kind.NAME,\n            value: type.name,\n        },\n        fields: Object.values(type.getFields()).map(field => astFromField(field, schema, pathToDirectivesInExtensions)),\n        directives: getDirectiveNodes(type, schema, pathToDirectivesInExtensions),\n    };\n    if ('getInterfaces' in type) {\n        node.interfaces = Object.values(type.getInterfaces()).map(iFace => (0, astFromType_js_1.astFromType)(iFace));\n    }\n    return node;\n}\nexports.astFromInterfaceType = astFromInterfaceType;\nfunction astFromUnionType(type, schema, pathToDirectivesInExtensions) {\n    var _a, _b;\n    return {\n        kind: graphql_1.Kind.UNION_TYPE_DEFINITION,\n        description: (_b = (_a = type.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (type.description\n            ? {\n                kind: graphql_1.Kind.STRING,\n                value: type.description,\n                block: true,\n            }\n            : undefined),\n        name: {\n            kind: graphql_1.Kind.NAME,\n            value: type.name,\n        },\n        // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n        directives: getDirectiveNodes(type, schema, pathToDirectivesInExtensions),\n        types: type.getTypes().map(type => (0, astFromType_js_1.astFromType)(type)),\n    };\n}\nexports.astFromUnionType = astFromUnionType;\nfunction astFromInputObjectType(type, schema, pathToDirectivesInExtensions) {\n    var _a, _b;\n    return {\n        kind: graphql_1.Kind.INPUT_OBJECT_TYPE_DEFINITION,\n        description: (_b = (_a = type.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (type.description\n            ? {\n                kind: graphql_1.Kind.STRING,\n                value: type.description,\n                block: true,\n            }\n            : undefined),\n        name: {\n            kind: graphql_1.Kind.NAME,\n            value: type.name,\n        },\n        fields: Object.values(type.getFields()).map(field => astFromInputField(field, schema, pathToDirectivesInExtensions)),\n        // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n        directives: getDirectiveNodes(type, schema, pathToDirectivesInExtensions),\n    };\n}\nexports.astFromInputObjectType = astFromInputObjectType;\nfunction astFromEnumType(type, schema, pathToDirectivesInExtensions) {\n    var _a, _b;\n    return {\n        kind: graphql_1.Kind.ENUM_TYPE_DEFINITION,\n        description: (_b = (_a = type.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (type.description\n            ? {\n                kind: graphql_1.Kind.STRING,\n                value: type.description,\n                block: true,\n            }\n            : undefined),\n        name: {\n            kind: graphql_1.Kind.NAME,\n            value: type.name,\n        },\n        values: Object.values(type.getValues()).map(value => astFromEnumValue(value, schema, pathToDirectivesInExtensions)),\n        // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n        directives: getDirectiveNodes(type, schema, pathToDirectivesInExtensions),\n    };\n}\nexports.astFromEnumType = astFromEnumType;\nfunction astFromScalarType(type, schema, pathToDirectivesInExtensions) {\n    var _a, _b, _c;\n    const directivesInExtensions = (0, get_directives_js_1.getDirectivesInExtensions)(type, pathToDirectivesInExtensions);\n    const directives = directivesInExtensions\n        ? makeDirectiveNodes(schema, directivesInExtensions)\n        : ((_a = type.astNode) === null || _a === void 0 ? void 0 : _a.directives) || [];\n    const specifiedByValue = (type['specifiedByUrl'] || type['specifiedByURL']);\n    if (specifiedByValue && !directives.some(directiveNode => directiveNode.name.value === 'specifiedBy')) {\n        const specifiedByArgs = {\n            url: specifiedByValue,\n        };\n        directives.push(makeDirectiveNode('specifiedBy', specifiedByArgs));\n    }\n    return {\n        kind: graphql_1.Kind.SCALAR_TYPE_DEFINITION,\n        description: (_c = (_b = type.astNode) === null || _b === void 0 ? void 0 : _b.description) !== null && _c !== void 0 ? _c : (type.description\n            ? {\n                kind: graphql_1.Kind.STRING,\n                value: type.description,\n                block: true,\n            }\n            : undefined),\n        name: {\n            kind: graphql_1.Kind.NAME,\n            value: type.name,\n        },\n        // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n        directives: directives,\n    };\n}\nexports.astFromScalarType = astFromScalarType;\nfunction astFromField(field, schema, pathToDirectivesInExtensions) {\n    var _a, _b;\n    return {\n        kind: graphql_1.Kind.FIELD_DEFINITION,\n        description: (_b = (_a = field.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (field.description\n            ? {\n                kind: graphql_1.Kind.STRING,\n                value: field.description,\n                block: true,\n            }\n            : undefined),\n        name: {\n            kind: graphql_1.Kind.NAME,\n            value: field.name,\n        },\n        arguments: field.args.map(arg => astFromArg(arg, schema, pathToDirectivesInExtensions)),\n        type: (0, astFromType_js_1.astFromType)(field.type),\n        // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n        directives: getDeprecatableDirectiveNodes(field, schema, pathToDirectivesInExtensions),\n    };\n}\nexports.astFromField = astFromField;\nfunction astFromInputField(field, schema, pathToDirectivesInExtensions) {\n    var _a, _b, _c;\n    return {\n        kind: graphql_1.Kind.INPUT_VALUE_DEFINITION,\n        description: (_b = (_a = field.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (field.description\n            ? {\n                kind: graphql_1.Kind.STRING,\n                value: field.description,\n                block: true,\n            }\n            : undefined),\n        name: {\n            kind: graphql_1.Kind.NAME,\n            value: field.name,\n        },\n        type: (0, astFromType_js_1.astFromType)(field.type),\n        // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n        directives: getDeprecatableDirectiveNodes(field, schema, pathToDirectivesInExtensions),\n        defaultValue: (_c = (0, graphql_1.astFromValue)(field.defaultValue, field.type)) !== null && _c !== void 0 ? _c : undefined,\n    };\n}\nexports.astFromInputField = astFromInputField;\nfunction astFromEnumValue(value, schema, pathToDirectivesInExtensions) {\n    var _a, _b;\n    return {\n        kind: graphql_1.Kind.ENUM_VALUE_DEFINITION,\n        description: (_b = (_a = value.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : (value.description\n            ? {\n                kind: graphql_1.Kind.STRING,\n                value: value.description,\n                block: true,\n            }\n            : undefined),\n        name: {\n            kind: graphql_1.Kind.NAME,\n            value: value.name,\n        },\n        // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n        directives: getDeprecatableDirectiveNodes(value, schema, pathToDirectivesInExtensions),\n    };\n}\nexports.astFromEnumValue = astFromEnumValue;\nfunction makeDeprecatedDirective(deprecationReason) {\n    return makeDirectiveNode('deprecated', { reason: deprecationReason }, graphql_1.GraphQLDeprecatedDirective);\n}\nexports.makeDeprecatedDirective = makeDeprecatedDirective;\nfunction makeDirectiveNode(name, args, directive) {\n    const directiveArguments = [];\n    if (directive != null) {\n        for (const arg of directive.args) {\n            const argName = arg.name;\n            const argValue = args[argName];\n            if (argValue !== undefined) {\n                const value = (0, graphql_1.astFromValue)(argValue, arg.type);\n                if (value) {\n                    directiveArguments.push({\n                        kind: graphql_1.Kind.ARGUMENT,\n                        name: {\n                            kind: graphql_1.Kind.NAME,\n                            value: argName,\n                        },\n                        value,\n                    });\n                }\n            }\n        }\n    }\n    else {\n        for (const argName in args) {\n            const argValue = args[argName];\n            const value = (0, astFromValueUntyped_js_1.astFromValueUntyped)(argValue);\n            if (value) {\n                directiveArguments.push({\n                    kind: graphql_1.Kind.ARGUMENT,\n                    name: {\n                        kind: graphql_1.Kind.NAME,\n                        value: argName,\n                    },\n                    value,\n                });\n            }\n        }\n    }\n    return {\n        kind: graphql_1.Kind.DIRECTIVE,\n        name: {\n            kind: graphql_1.Kind.NAME,\n            value: name,\n        },\n        arguments: directiveArguments,\n    };\n}\nexports.makeDirectiveNode = makeDirectiveNode;\nfunction makeDirectiveNodes(schema, directiveValues) {\n    const directiveNodes = [];\n    for (const directiveName in directiveValues) {\n        const arrayOrSingleValue = directiveValues[directiveName];\n        const directive = schema === null || schema === void 0 ? void 0 : schema.getDirective(directiveName);\n        if (Array.isArray(arrayOrSingleValue)) {\n            for (const value of arrayOrSingleValue) {\n                directiveNodes.push(makeDirectiveNode(directiveName, value, directive));\n            }\n        }\n        else {\n            directiveNodes.push(makeDirectiveNode(directiveName, arrayOrSingleValue, directive));\n        }\n    }\n    return directiveNodes;\n}\nexports.makeDirectiveNodes = makeDirectiveNodes;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createDefaultRules = exports.validateGraphQlDocuments = void 0;\nconst graphql_1 = require(\"graphql\");\nfunction validateGraphQlDocuments(schema, documents, rules = createDefaultRules()) {\n    var _a;\n    const definitionMap = new Map();\n    for (const document of documents) {\n        for (const docDefinition of document.definitions) {\n            if ('name' in docDefinition && docDefinition.name) {\n                definitionMap.set(`${docDefinition.kind}_${docDefinition.name.value}`, docDefinition);\n            }\n            else {\n                definitionMap.set(Date.now().toString(), docDefinition);\n            }\n        }\n    }\n    const fullAST = {\n        kind: graphql_1.Kind.DOCUMENT,\n        definitions: Array.from(definitionMap.values()),\n    };\n    const errors = (0, graphql_1.validate)(schema, fullAST, rules);\n    for (const error of errors) {\n        error.stack = error.message;\n        if (error.locations) {\n            for (const location of error.locations) {\n                error.stack += `\\n    at ${(_a = error.source) === null || _a === void 0 ? void 0 : _a.name}:${location.line}:${location.column}`;\n            }\n        }\n    }\n    return errors;\n}\nexports.validateGraphQlDocuments = validateGraphQlDocuments;\nfunction createDefaultRules() {\n    let ignored = ['NoUnusedFragmentsRule', 'NoUnusedVariablesRule', 'KnownDirectivesRule'];\n    if (graphql_1.versionInfo.major < 15) {\n        ignored = ignored.map(rule => rule.replace(/Rule$/, ''));\n    }\n    return graphql_1.specifiedRules.filter((f) => !ignored.includes(f.name));\n}\nexports.createDefaultRules = createDefaultRules;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseGraphQLJSON = void 0;\nconst graphql_1 = require(\"graphql\");\nfunction stripBOM(content) {\n    content = content.toString();\n    // Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n    // because the buffer-to-string conversion in `fs.readFileSync()`\n    // translates it to FEFF, the UTF-16 BOM.\n    if (content.charCodeAt(0) === 0xfeff) {\n        content = content.slice(1);\n    }\n    return content;\n}\nfunction parseBOM(content) {\n    return JSON.parse(stripBOM(content));\n}\nfunction parseGraphQLJSON(location, jsonContent, options) {\n    let parsedJson = parseBOM(jsonContent);\n    if (parsedJson.data) {\n        parsedJson = parsedJson.data;\n    }\n    if (parsedJson.kind === 'Document') {\n        return {\n            location,\n            document: parsedJson,\n        };\n    }\n    else if (parsedJson.__schema) {\n        const schema = (0, graphql_1.buildClientSchema)(parsedJson, options);\n        return {\n            location,\n            schema,\n        };\n    }\n    else if (typeof parsedJson === 'string') {\n        return {\n            location,\n            rawSDL: parsedJson,\n        };\n    }\n    throw new Error(`Not valid JSON content`);\n}\nexports.parseGraphQLJSON = parseGraphQLJSON;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getBlockStringIndentation = exports.dedentBlockStringValue = exports.getLeadingCommentBlock = exports.getComment = exports.getDescription = exports.printWithComments = exports.printComment = exports.pushComment = exports.collectComment = exports.resetComments = void 0;\nconst graphql_1 = require(\"graphql\");\nconst MAX_LINE_LENGTH = 80;\nlet commentsRegistry = {};\nfunction resetComments() {\n    commentsRegistry = {};\n}\nexports.resetComments = resetComments;\nfunction collectComment(node) {\n    var _a;\n    const entityName = (_a = node.name) === null || _a === void 0 ? void 0 : _a.value;\n    if (entityName == null) {\n        return;\n    }\n    pushComment(node, entityName);\n    switch (node.kind) {\n        case 'EnumTypeDefinition':\n            if (node.values) {\n                for (const value of node.values) {\n                    pushComment(value, entityName, value.name.value);\n                }\n            }\n            break;\n        case 'ObjectTypeDefinition':\n        case 'InputObjectTypeDefinition':\n        case 'InterfaceTypeDefinition':\n            if (node.fields) {\n                for (const field of node.fields) {\n                    pushComment(field, entityName, field.name.value);\n                    if (isFieldDefinitionNode(field) && field.arguments) {\n                        for (const arg of field.arguments) {\n                            pushComment(arg, entityName, field.name.value, arg.name.value);\n                        }\n                    }\n                }\n            }\n            break;\n    }\n}\nexports.collectComment = collectComment;\nfunction pushComment(node, entity, field, argument) {\n    const comment = getComment(node);\n    if (typeof comment !== 'string' || comment.length === 0) {\n        return;\n    }\n    const keys = [entity];\n    if (field) {\n        keys.push(field);\n        if (argument) {\n            keys.push(argument);\n        }\n    }\n    const path = keys.join('.');\n    if (!commentsRegistry[path]) {\n        commentsRegistry[path] = [];\n    }\n    commentsRegistry[path].push(comment);\n}\nexports.pushComment = pushComment;\nfunction printComment(comment) {\n    return '\\n# ' + comment.replace(/\\n/g, '\\n# ');\n}\nexports.printComment = printComment;\n/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/**\n * NOTE: ==> This file has been modified just to add comments to the printed AST\n * This is a temp measure, we will move to using the original non modified printer.js ASAP.\n */\n/**\n * Given maybeArray, print an empty string if it is null or empty, otherwise\n * print all items together separated by separator if provided\n */\nfunction join(maybeArray, separator) {\n    return maybeArray ? maybeArray.filter(x => x).join(separator || '') : '';\n}\nfunction hasMultilineItems(maybeArray) {\n    var _a;\n    return (_a = maybeArray === null || maybeArray === void 0 ? void 0 : maybeArray.some(str => str.includes('\\n'))) !== null && _a !== void 0 ? _a : false;\n}\nfunction addDescription(cb) {\n    return (node, _key, _parent, path, ancestors) => {\n        var _a;\n        const keys = [];\n        const parent = path.reduce((prev, key) => {\n            if (['fields', 'arguments', 'values'].includes(key) && prev.name) {\n                keys.push(prev.name.value);\n            }\n            return prev[key];\n        }, ancestors[0]);\n        const key = [...keys, (_a = parent === null || parent === void 0 ? void 0 : parent.name) === null || _a === void 0 ? void 0 : _a.value].filter(Boolean).join('.');\n        const items = [];\n        if (node.kind.includes('Definition') && commentsRegistry[key]) {\n            items.push(...commentsRegistry[key]);\n        }\n        return join([...items.map(printComment), node.description, cb(node, _key, _parent, path, ancestors)], '\\n');\n    };\n}\nfunction indent(maybeString) {\n    return maybeString && `  ${maybeString.replace(/\\n/g, '\\n  ')}`;\n}\n/**\n * Given array, print each item on its own line, wrapped in an\n * indented \"{ }\" block.\n */\nfunction block(array) {\n    return array && array.length !== 0 ? `{\\n${indent(join(array, '\\n'))}\\n}` : '';\n}\n/**\n * If maybeString is not null or empty, then wrap with start and end, otherwise\n * print an empty string.\n */\nfunction wrap(start, maybeString, end) {\n    return maybeString ? start + maybeString + (end || '') : '';\n}\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n */\nfunction printBlockString(value, isDescription = false) {\n    const escaped = value.replace(/\"\"\"/g, '\\\\\"\"\"');\n    return (value[0] === ' ' || value[0] === '\\t') && value.indexOf('\\n') === -1\n        ? `\"\"\"${escaped.replace(/\"$/, '\"\\n')}\"\"\"`\n        : `\"\"\"\\n${isDescription ? escaped : indent(escaped)}\\n\"\"\"`;\n}\nconst printDocASTReducer = {\n    Name: { leave: node => node.value },\n    Variable: { leave: node => '$' + node.name },\n    // Document\n    Document: {\n        leave: node => join(node.definitions, '\\n\\n'),\n    },\n    OperationDefinition: {\n        leave: node => {\n            const varDefs = wrap('(', join(node.variableDefinitions, ', '), ')');\n            const prefix = join([node.operation, join([node.name, varDefs]), join(node.directives, ' ')], ' ');\n            // the query short form.\n            return prefix + ' ' + node.selectionSet;\n        },\n    },\n    VariableDefinition: {\n        leave: ({ variable, type, defaultValue, directives }) => variable + ': ' + type + wrap(' = ', defaultValue) + wrap(' ', join(directives, ' ')),\n    },\n    SelectionSet: { leave: ({ selections }) => block(selections) },\n    Field: {\n        leave({ alias, name, arguments: args, directives, selectionSet }) {\n            const prefix = wrap('', alias, ': ') + name;\n            let argsLine = prefix + wrap('(', join(args, ', '), ')');\n            if (argsLine.length > MAX_LINE_LENGTH) {\n                argsLine = prefix + wrap('(\\n', indent(join(args, '\\n')), '\\n)');\n            }\n            return join([argsLine, join(directives, ' '), selectionSet], ' ');\n        },\n    },\n    Argument: { leave: ({ name, value }) => name + ': ' + value },\n    // Fragments\n    FragmentSpread: {\n        leave: ({ name, directives }) => '...' + name + wrap(' ', join(directives, ' ')),\n    },\n    InlineFragment: {\n        leave: ({ typeCondition, directives, selectionSet }) => join(['...', wrap('on ', typeCondition), join(directives, ' '), selectionSet], ' '),\n    },\n    FragmentDefinition: {\n        leave: ({ name, typeCondition, variableDefinitions, directives, selectionSet }) => \n        // Note: fragment variable definitions are experimental and may be changed\n        // or removed in the future.\n        `fragment ${name}${wrap('(', join(variableDefinitions, ', '), ')')} ` +\n            `on ${typeCondition} ${wrap('', join(directives, ' '), ' ')}` +\n            selectionSet,\n    },\n    // Value\n    IntValue: { leave: ({ value }) => value },\n    FloatValue: { leave: ({ value }) => value },\n    StringValue: {\n        leave: ({ value, block: isBlockString }) => {\n            if (isBlockString) {\n                return printBlockString(value);\n            }\n            return JSON.stringify(value);\n        },\n    },\n    BooleanValue: { leave: ({ value }) => (value ? 'true' : 'false') },\n    NullValue: { leave: () => 'null' },\n    EnumValue: { leave: ({ value }) => value },\n    ListValue: { leave: ({ values }) => '[' + join(values, ', ') + ']' },\n    ObjectValue: { leave: ({ fields }) => '{' + join(fields, ', ') + '}' },\n    ObjectField: { leave: ({ name, value }) => name + ': ' + value },\n    // Directive\n    Directive: {\n        leave: ({ name, arguments: args }) => '@' + name + wrap('(', join(args, ', '), ')'),\n    },\n    // Type\n    NamedType: { leave: ({ name }) => name },\n    ListType: { leave: ({ type }) => '[' + type + ']' },\n    NonNullType: { leave: ({ type }) => type + '!' },\n    // Type System Definitions\n    SchemaDefinition: {\n        leave: ({ directives, operationTypes }) => join(['schema', join(directives, ' '), block(operationTypes)], ' '),\n    },\n    OperationTypeDefinition: {\n        leave: ({ operation, type }) => operation + ': ' + type,\n    },\n    ScalarTypeDefinition: {\n        leave: ({ name, directives }) => join(['scalar', name, join(directives, ' ')], ' '),\n    },\n    ObjectTypeDefinition: {\n        leave: ({ name, interfaces, directives, fields }) => join(['type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' '),\n    },\n    FieldDefinition: {\n        leave: ({ name, arguments: args, type, directives }) => name +\n            (hasMultilineItems(args)\n                ? wrap('(\\n', indent(join(args, '\\n')), '\\n)')\n                : wrap('(', join(args, ', '), ')')) +\n            ': ' +\n            type +\n            wrap(' ', join(directives, ' ')),\n    },\n    InputValueDefinition: {\n        leave: ({ name, type, defaultValue, directives }) => join([name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')], ' '),\n    },\n    InterfaceTypeDefinition: {\n        leave: ({ name, interfaces, directives, fields }) => join(['interface', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' '),\n    },\n    UnionTypeDefinition: {\n        leave: ({ name, directives, types }) => join(['union', name, join(directives, ' '), wrap('= ', join(types, ' | '))], ' '),\n    },\n    EnumTypeDefinition: {\n        leave: ({ name, directives, values }) => join(['enum', name, join(directives, ' '), block(values)], ' '),\n    },\n    EnumValueDefinition: {\n        leave: ({ name, directives }) => join([name, join(directives, ' ')], ' '),\n    },\n    InputObjectTypeDefinition: {\n        leave: ({ name, directives, fields }) => join(['input', name, join(directives, ' '), block(fields)], ' '),\n    },\n    DirectiveDefinition: {\n        leave: ({ name, arguments: args, repeatable, locations }) => 'directive @' +\n            name +\n            (hasMultilineItems(args)\n                ? wrap('(\\n', indent(join(args, '\\n')), '\\n)')\n                : wrap('(', join(args, ', '), ')')) +\n            (repeatable ? ' repeatable' : '') +\n            ' on ' +\n            join(locations, ' | '),\n    },\n    SchemaExtension: {\n        leave: ({ directives, operationTypes }) => join(['extend schema', join(directives, ' '), block(operationTypes)], ' '),\n    },\n    ScalarTypeExtension: {\n        leave: ({ name, directives }) => join(['extend scalar', name, join(directives, ' ')], ' '),\n    },\n    ObjectTypeExtension: {\n        leave: ({ name, interfaces, directives, fields }) => join(['extend type', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' '),\n    },\n    InterfaceTypeExtension: {\n        leave: ({ name, interfaces, directives, fields }) => join(['extend interface', name, wrap('implements ', join(interfaces, ' & ')), join(directives, ' '), block(fields)], ' '),\n    },\n    UnionTypeExtension: {\n        leave: ({ name, directives, types }) => join(['extend union', name, join(directives, ' '), wrap('= ', join(types, ' | '))], ' '),\n    },\n    EnumTypeExtension: {\n        leave: ({ name, directives, values }) => join(['extend enum', name, join(directives, ' '), block(values)], ' '),\n    },\n    InputObjectTypeExtension: {\n        leave: ({ name, directives, fields }) => join(['extend input', name, join(directives, ' '), block(fields)], ' '),\n    },\n};\nconst printDocASTReducerWithComments = Object.keys(printDocASTReducer).reduce((prev, key) => ({\n    ...prev,\n    [key]: {\n        leave: addDescription(printDocASTReducer[key].leave),\n    },\n}), {});\n/**\n * Converts an AST into a string, using one set of reasonable\n * formatting rules.\n */\nfunction printWithComments(ast) {\n    return (0, graphql_1.visit)(ast, printDocASTReducerWithComments);\n}\nexports.printWithComments = printWithComments;\nfunction isFieldDefinitionNode(node) {\n    return node.kind === 'FieldDefinition';\n}\n// graphql < v13 and > v15 does not export getDescription\nfunction getDescription(node, options) {\n    if (node.description != null) {\n        return node.description.value;\n    }\n    if (options === null || options === void 0 ? void 0 : options.commentDescriptions) {\n        return getComment(node);\n    }\n}\nexports.getDescription = getDescription;\nfunction getComment(node) {\n    const rawValue = getLeadingCommentBlock(node);\n    if (rawValue !== undefined) {\n        return dedentBlockStringValue(`\\n${rawValue}`);\n    }\n}\nexports.getComment = getComment;\nfunction getLeadingCommentBlock(node) {\n    const loc = node.loc;\n    if (!loc) {\n        return;\n    }\n    const comments = [];\n    let token = loc.startToken.prev;\n    while (token != null &&\n        token.kind === graphql_1.TokenKind.COMMENT &&\n        token.next != null &&\n        token.prev != null &&\n        token.line + 1 === token.next.line &&\n        token.line !== token.prev.line) {\n        const value = String(token.value);\n        comments.push(value);\n        token = token.prev;\n    }\n    return comments.length > 0 ? comments.reverse().join('\\n') : undefined;\n}\nexports.getLeadingCommentBlock = getLeadingCommentBlock;\nfunction dedentBlockStringValue(rawString) {\n    // Expand a block string's raw value into independent lines.\n    const lines = rawString.split(/\\r\\n|[\\n\\r]/g);\n    // Remove common indentation from all lines but first.\n    const commonIndent = getBlockStringIndentation(lines);\n    if (commonIndent !== 0) {\n        for (let i = 1; i < lines.length; i++) {\n            lines[i] = lines[i].slice(commonIndent);\n        }\n    }\n    // Remove leading and trailing blank lines.\n    while (lines.length > 0 && isBlank(lines[0])) {\n        lines.shift();\n    }\n    while (lines.length > 0 && isBlank(lines[lines.length - 1])) {\n        lines.pop();\n    }\n    // Return a string of the lines joined with U+000A.\n    return lines.join('\\n');\n}\nexports.dedentBlockStringValue = dedentBlockStringValue;\n/**\n * @internal\n */\nfunction getBlockStringIndentation(lines) {\n    let commonIndent = null;\n    for (let i = 1; i < lines.length; i++) {\n        const line = lines[i];\n        const indent = leadingWhitespace(line);\n        if (indent === line.length) {\n            continue; // skip empty lines\n        }\n        if (commonIndent === null || indent < commonIndent) {\n            commonIndent = indent;\n            if (commonIndent === 0) {\n                break;\n            }\n        }\n    }\n    return commonIndent === null ? 0 : commonIndent;\n}\nexports.getBlockStringIndentation = getBlockStringIndentation;\nfunction leadingWhitespace(str) {\n    let i = 0;\n    while (i < str.length && (str[i] === ' ' || str[i] === '\\t')) {\n        i++;\n    }\n    return i;\n}\nfunction isBlank(str) {\n    return leadingWhitespace(str) === str.length;\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isDescribable = exports.transformCommentsToDescriptions = exports.parseGraphQLSDL = void 0;\nconst graphql_1 = require(\"graphql\");\nconst comments_js_1 = require(\"./comments.js\");\nfunction parseGraphQLSDL(location, rawSDL, options = {}) {\n    let document;\n    try {\n        if (options.commentDescriptions && rawSDL.includes('#')) {\n            document = transformCommentsToDescriptions(rawSDL, options);\n            // If noLocation=true, we need to make sure to print and parse it again, to remove locations,\n            // since `transformCommentsToDescriptions` must have locations set in order to transform the comments\n            // into descriptions.\n            if (options.noLocation) {\n                document = (0, graphql_1.parse)((0, graphql_1.print)(document), options);\n            }\n        }\n        else {\n            document = (0, graphql_1.parse)(new graphql_1.Source(rawSDL, location), options);\n        }\n    }\n    catch (e) {\n        if (e.message.includes('EOF') && rawSDL.replace(/(\\#[^*]*)/g, '').trim() === '') {\n            document = {\n                kind: graphql_1.Kind.DOCUMENT,\n                definitions: [],\n            };\n        }\n        else {\n            throw e;\n        }\n    }\n    return {\n        location,\n        document,\n    };\n}\nexports.parseGraphQLSDL = parseGraphQLSDL;\nfunction transformCommentsToDescriptions(sourceSdl, options = {}) {\n    const parsedDoc = (0, graphql_1.parse)(sourceSdl, {\n        ...options,\n        noLocation: false,\n    });\n    const modifiedDoc = (0, graphql_1.visit)(parsedDoc, {\n        leave: (node) => {\n            if (isDescribable(node)) {\n                const rawValue = (0, comments_js_1.getLeadingCommentBlock)(node);\n                if (rawValue !== undefined) {\n                    const commentsBlock = (0, comments_js_1.dedentBlockStringValue)('\\n' + rawValue);\n                    const isBlock = commentsBlock.includes('\\n');\n                    if (!node.description) {\n                        return {\n                            ...node,\n                            description: {\n                                kind: graphql_1.Kind.STRING,\n                                value: commentsBlock,\n                                block: isBlock,\n                            },\n                        };\n                    }\n                    else {\n                        return {\n                            ...node,\n                            description: {\n                                ...node.description,\n                                value: node.description.value + '\\n' + commentsBlock,\n                                block: true,\n                            },\n                        };\n                    }\n                }\n            }\n        },\n    });\n    return modifiedDoc;\n}\nexports.transformCommentsToDescriptions = transformCommentsToDescriptions;\nfunction isDescribable(node) {\n    return ((0, graphql_1.isTypeSystemDefinitionNode)(node) ||\n        node.kind === graphql_1.Kind.FIELD_DEFINITION ||\n        node.kind === graphql_1.Kind.INPUT_VALUE_DEFINITION ||\n        node.kind === graphql_1.Kind.ENUM_VALUE_DEFINITION);\n}\nexports.isDescribable = isDescribable;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.buildOperationNodeForField = void 0;\nconst graphql_1 = require(\"graphql\");\nconst rootTypes_js_1 = require(\"./rootTypes.js\");\nlet operationVariables = [];\nlet fieldTypeMap = new Map();\nfunction addOperationVariable(variable) {\n    operationVariables.push(variable);\n}\nfunction resetOperationVariables() {\n    operationVariables = [];\n}\nfunction resetFieldMap() {\n    fieldTypeMap = new Map();\n}\nfunction buildOperationNodeForField({ schema, kind, field, models, ignore = [], depthLimit, circularReferenceDepth, argNames, selectedFields = true, }) {\n    resetOperationVariables();\n    resetFieldMap();\n    const rootTypeNames = (0, rootTypes_js_1.getRootTypeNames)(schema);\n    const operationNode = buildOperationAndCollectVariables({\n        schema,\n        fieldName: field,\n        kind,\n        models: models || [],\n        ignore,\n        depthLimit: depthLimit || Infinity,\n        circularReferenceDepth: circularReferenceDepth || 1,\n        argNames,\n        selectedFields,\n        rootTypeNames,\n    });\n    // attach variables\n    operationNode.variableDefinitions = [...operationVariables];\n    resetOperationVariables();\n    resetFieldMap();\n    return operationNode;\n}\nexports.buildOperationNodeForField = buildOperationNodeForField;\nfunction buildOperationAndCollectVariables({ schema, fieldName, kind, models, ignore, depthLimit, circularReferenceDepth, argNames, selectedFields, rootTypeNames, }) {\n    const type = (0, rootTypes_js_1.getDefinedRootType)(schema, kind);\n    const field = type.getFields()[fieldName];\n    const operationName = `${fieldName}_${kind}`;\n    if (field.args) {\n        for (const arg of field.args) {\n            const argName = arg.name;\n            if (!argNames || argNames.includes(argName)) {\n                addOperationVariable(resolveVariable(arg, argName));\n            }\n        }\n    }\n    return {\n        kind: graphql_1.Kind.OPERATION_DEFINITION,\n        operation: kind,\n        name: {\n            kind: graphql_1.Kind.NAME,\n            value: operationName,\n        },\n        variableDefinitions: [],\n        selectionSet: {\n            kind: graphql_1.Kind.SELECTION_SET,\n            selections: [\n                resolveField({\n                    type,\n                    field,\n                    models,\n                    firstCall: true,\n                    path: [],\n                    ancestors: [],\n                    ignore,\n                    depthLimit,\n                    circularReferenceDepth,\n                    schema,\n                    depth: 0,\n                    argNames,\n                    selectedFields,\n                    rootTypeNames,\n                }),\n            ],\n        },\n    };\n}\nfunction resolveSelectionSet({ parent, type, models, firstCall, path, ancestors, ignore, depthLimit, circularReferenceDepth, schema, depth, argNames, selectedFields, rootTypeNames, }) {\n    if (typeof selectedFields === 'boolean' && depth > depthLimit) {\n        return;\n    }\n    if ((0, graphql_1.isUnionType)(type)) {\n        const types = type.getTypes();\n        return {\n            kind: graphql_1.Kind.SELECTION_SET,\n            selections: types\n                .filter(t => !hasCircularRef([...ancestors, t], {\n                depth: circularReferenceDepth,\n            }))\n                .map(t => {\n                return {\n                    kind: graphql_1.Kind.INLINE_FRAGMENT,\n                    typeCondition: {\n                        kind: graphql_1.Kind.NAMED_TYPE,\n                        name: {\n                            kind: graphql_1.Kind.NAME,\n                            value: t.name,\n                        },\n                    },\n                    selectionSet: resolveSelectionSet({\n                        parent: type,\n                        type: t,\n                        models,\n                        path,\n                        ancestors,\n                        ignore,\n                        depthLimit,\n                        circularReferenceDepth,\n                        schema,\n                        depth,\n                        argNames,\n                        selectedFields,\n                        rootTypeNames,\n                    }),\n                };\n            })\n                .filter(fragmentNode => { var _a, _b; return ((_b = (_a = fragmentNode === null || fragmentNode === void 0 ? void 0 : fragmentNode.selectionSet) === null || _a === void 0 ? void 0 : _a.selections) === null || _b === void 0 ? void 0 : _b.length) > 0; }),\n        };\n    }\n    if ((0, graphql_1.isInterfaceType)(type)) {\n        const types = Object.values(schema.getTypeMap()).filter((t) => (0, graphql_1.isObjectType)(t) && t.getInterfaces().includes(type));\n        return {\n            kind: graphql_1.Kind.SELECTION_SET,\n            selections: types\n                .filter(t => !hasCircularRef([...ancestors, t], {\n                depth: circularReferenceDepth,\n            }))\n                .map(t => {\n                return {\n                    kind: graphql_1.Kind.INLINE_FRAGMENT,\n                    typeCondition: {\n                        kind: graphql_1.Kind.NAMED_TYPE,\n                        name: {\n                            kind: graphql_1.Kind.NAME,\n                            value: t.name,\n                        },\n                    },\n                    selectionSet: resolveSelectionSet({\n                        parent: type,\n                        type: t,\n                        models,\n                        path,\n                        ancestors,\n                        ignore,\n                        depthLimit,\n                        circularReferenceDepth,\n                        schema,\n                        depth,\n                        argNames,\n                        selectedFields,\n                        rootTypeNames,\n                    }),\n                };\n            })\n                .filter(fragmentNode => { var _a, _b; return ((_b = (_a = fragmentNode === null || fragmentNode === void 0 ? void 0 : fragmentNode.selectionSet) === null || _a === void 0 ? void 0 : _a.selections) === null || _b === void 0 ? void 0 : _b.length) > 0; }),\n        };\n    }\n    if ((0, graphql_1.isObjectType)(type) && !rootTypeNames.has(type.name)) {\n        const isIgnored = ignore.includes(type.name) || ignore.includes(`${parent.name}.${path[path.length - 1]}`);\n        const isModel = models.includes(type.name);\n        if (!firstCall && isModel && !isIgnored) {\n            return {\n                kind: graphql_1.Kind.SELECTION_SET,\n                selections: [\n                    {\n                        kind: graphql_1.Kind.FIELD,\n                        name: {\n                            kind: graphql_1.Kind.NAME,\n                            value: 'id',\n                        },\n                    },\n                ],\n            };\n        }\n        const fields = type.getFields();\n        return {\n            kind: graphql_1.Kind.SELECTION_SET,\n            selections: Object.keys(fields)\n                .filter(fieldName => {\n                return !hasCircularRef([...ancestors, (0, graphql_1.getNamedType)(fields[fieldName].type)], {\n                    depth: circularReferenceDepth,\n                });\n            })\n                .map(fieldName => {\n                const selectedSubFields = typeof selectedFields === 'object' ? selectedFields[fieldName] : true;\n                if (selectedSubFields) {\n                    return resolveField({\n                        type,\n                        field: fields[fieldName],\n                        models,\n                        path: [...path, fieldName],\n                        ancestors,\n                        ignore,\n                        depthLimit,\n                        circularReferenceDepth,\n                        schema,\n                        depth,\n                        argNames,\n                        selectedFields: selectedSubFields,\n                        rootTypeNames,\n                    });\n                }\n                return null;\n            })\n                .filter((f) => {\n                var _a, _b;\n                if (f == null) {\n                    return false;\n                }\n                else if ('selectionSet' in f) {\n                    return !!((_b = (_a = f.selectionSet) === null || _a === void 0 ? void 0 : _a.selections) === null || _b === void 0 ? void 0 : _b.length);\n                }\n                return true;\n            }),\n        };\n    }\n}\nfunction resolveVariable(arg, name) {\n    function resolveVariableType(type) {\n        if ((0, graphql_1.isListType)(type)) {\n            return {\n                kind: graphql_1.Kind.LIST_TYPE,\n                type: resolveVariableType(type.ofType),\n            };\n        }\n        if ((0, graphql_1.isNonNullType)(type)) {\n            return {\n                kind: graphql_1.Kind.NON_NULL_TYPE,\n                // for v16 compatibility\n                type: resolveVariableType(type.ofType),\n            };\n        }\n        return {\n            kind: graphql_1.Kind.NAMED_TYPE,\n            name: {\n                kind: graphql_1.Kind.NAME,\n                value: type.name,\n            },\n        };\n    }\n    return {\n        kind: graphql_1.Kind.VARIABLE_DEFINITION,\n        variable: {\n            kind: graphql_1.Kind.VARIABLE,\n            name: {\n                kind: graphql_1.Kind.NAME,\n                value: name || arg.name,\n            },\n        },\n        type: resolveVariableType(arg.type),\n    };\n}\nfunction getArgumentName(name, path) {\n    return [...path, name].join('_');\n}\nfunction resolveField({ type, field, models, firstCall, path, ancestors, ignore, depthLimit, circularReferenceDepth, schema, depth, argNames, selectedFields, rootTypeNames, }) {\n    const namedType = (0, graphql_1.getNamedType)(field.type);\n    let args = [];\n    let removeField = false;\n    if (field.args && field.args.length) {\n        args = field.args\n            .map(arg => {\n            const argumentName = getArgumentName(arg.name, path);\n            if (argNames && !argNames.includes(argumentName)) {\n                if ((0, graphql_1.isNonNullType)(arg.type)) {\n                    removeField = true;\n                }\n                return null;\n            }\n            if (!firstCall) {\n                addOperationVariable(resolveVariable(arg, argumentName));\n            }\n            return {\n                kind: graphql_1.Kind.ARGUMENT,\n                name: {\n                    kind: graphql_1.Kind.NAME,\n                    value: arg.name,\n                },\n                value: {\n                    kind: graphql_1.Kind.VARIABLE,\n                    name: {\n                        kind: graphql_1.Kind.NAME,\n                        value: getArgumentName(arg.name, path),\n                    },\n                },\n            };\n        })\n            .filter(Boolean);\n    }\n    if (removeField) {\n        return null;\n    }\n    const fieldPath = [...path, field.name];\n    const fieldPathStr = fieldPath.join('.');\n    let fieldName = field.name;\n    if (fieldTypeMap.has(fieldPathStr) && fieldTypeMap.get(fieldPathStr) !== field.type.toString()) {\n        fieldName += field.type.toString().replace('!', 'NonNull').replace('[', 'List').replace(']', '');\n    }\n    fieldTypeMap.set(fieldPathStr, field.type.toString());\n    if (!(0, graphql_1.isScalarType)(namedType) && !(0, graphql_1.isEnumType)(namedType)) {\n        return {\n            kind: graphql_1.Kind.FIELD,\n            name: {\n                kind: graphql_1.Kind.NAME,\n                value: field.name,\n            },\n            ...(fieldName !== field.name && { alias: { kind: graphql_1.Kind.NAME, value: fieldName } }),\n            selectionSet: resolveSelectionSet({\n                parent: type,\n                type: namedType,\n                models,\n                firstCall,\n                path: fieldPath,\n                ancestors: [...ancestors, type],\n                ignore,\n                depthLimit,\n                circularReferenceDepth,\n                schema,\n                depth: depth + 1,\n                argNames,\n                selectedFields,\n                rootTypeNames,\n            }) || undefined,\n            arguments: args,\n        };\n    }\n    return {\n        kind: graphql_1.Kind.FIELD,\n        name: {\n            kind: graphql_1.Kind.NAME,\n            value: field.name,\n        },\n        ...(fieldName !== field.name && { alias: { kind: graphql_1.Kind.NAME, value: fieldName } }),\n        arguments: args,\n    };\n}\nfunction hasCircularRef(types, config = {\n    depth: 1,\n}) {\n    const type = types[types.length - 1];\n    if ((0, graphql_1.isScalarType)(type)) {\n        return false;\n    }\n    const size = types.filter(t => t.name === type.name).length;\n    return size > config.depth;\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DirectiveLocation = void 0;\nvar DirectiveLocation;\n(function (DirectiveLocation) {\n    /** Request Definitions */\n    DirectiveLocation[\"QUERY\"] = \"QUERY\";\n    DirectiveLocation[\"MUTATION\"] = \"MUTATION\";\n    DirectiveLocation[\"SUBSCRIPTION\"] = \"SUBSCRIPTION\";\n    DirectiveLocation[\"FIELD\"] = \"FIELD\";\n    DirectiveLocation[\"FRAGMENT_DEFINITION\"] = \"FRAGMENT_DEFINITION\";\n    DirectiveLocation[\"FRAGMENT_SPREAD\"] = \"FRAGMENT_SPREAD\";\n    DirectiveLocation[\"INLINE_FRAGMENT\"] = \"INLINE_FRAGMENT\";\n    DirectiveLocation[\"VARIABLE_DEFINITION\"] = \"VARIABLE_DEFINITION\";\n    /** Type System Definitions */\n    DirectiveLocation[\"SCHEMA\"] = \"SCHEMA\";\n    DirectiveLocation[\"SCALAR\"] = \"SCALAR\";\n    DirectiveLocation[\"OBJECT\"] = \"OBJECT\";\n    DirectiveLocation[\"FIELD_DEFINITION\"] = \"FIELD_DEFINITION\";\n    DirectiveLocation[\"ARGUMENT_DEFINITION\"] = \"ARGUMENT_DEFINITION\";\n    DirectiveLocation[\"INTERFACE\"] = \"INTERFACE\";\n    DirectiveLocation[\"UNION\"] = \"UNION\";\n    DirectiveLocation[\"ENUM\"] = \"ENUM\";\n    DirectiveLocation[\"ENUM_VALUE\"] = \"ENUM_VALUE\";\n    DirectiveLocation[\"INPUT_OBJECT\"] = \"INPUT_OBJECT\";\n    DirectiveLocation[\"INPUT_FIELD_DEFINITION\"] = \"INPUT_FIELD_DEFINITION\";\n})(DirectiveLocation = exports.DirectiveLocation || (exports.DirectiveLocation = {}));\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MapperKind = void 0;\nvar MapperKind;\n(function (MapperKind) {\n    MapperKind[\"TYPE\"] = \"MapperKind.TYPE\";\n    MapperKind[\"SCALAR_TYPE\"] = \"MapperKind.SCALAR_TYPE\";\n    MapperKind[\"ENUM_TYPE\"] = \"MapperKind.ENUM_TYPE\";\n    MapperKind[\"COMPOSITE_TYPE\"] = \"MapperKind.COMPOSITE_TYPE\";\n    MapperKind[\"OBJECT_TYPE\"] = \"MapperKind.OBJECT_TYPE\";\n    MapperKind[\"INPUT_OBJECT_TYPE\"] = \"MapperKind.INPUT_OBJECT_TYPE\";\n    MapperKind[\"ABSTRACT_TYPE\"] = \"MapperKind.ABSTRACT_TYPE\";\n    MapperKind[\"UNION_TYPE\"] = \"MapperKind.UNION_TYPE\";\n    MapperKind[\"INTERFACE_TYPE\"] = \"MapperKind.INTERFACE_TYPE\";\n    MapperKind[\"ROOT_OBJECT\"] = \"MapperKind.ROOT_OBJECT\";\n    MapperKind[\"QUERY\"] = \"MapperKind.QUERY\";\n    MapperKind[\"MUTATION\"] = \"MapperKind.MUTATION\";\n    MapperKind[\"SUBSCRIPTION\"] = \"MapperKind.SUBSCRIPTION\";\n    MapperKind[\"DIRECTIVE\"] = \"MapperKind.DIRECTIVE\";\n    MapperKind[\"FIELD\"] = \"MapperKind.FIELD\";\n    MapperKind[\"COMPOSITE_FIELD\"] = \"MapperKind.COMPOSITE_FIELD\";\n    MapperKind[\"OBJECT_FIELD\"] = \"MapperKind.OBJECT_FIELD\";\n    MapperKind[\"ROOT_FIELD\"] = \"MapperKind.ROOT_FIELD\";\n    MapperKind[\"QUERY_ROOT_FIELD\"] = \"MapperKind.QUERY_ROOT_FIELD\";\n    MapperKind[\"MUTATION_ROOT_FIELD\"] = \"MapperKind.MUTATION_ROOT_FIELD\";\n    MapperKind[\"SUBSCRIPTION_ROOT_FIELD\"] = \"MapperKind.SUBSCRIPTION_ROOT_FIELD\";\n    MapperKind[\"INTERFACE_FIELD\"] = \"MapperKind.INTERFACE_FIELD\";\n    MapperKind[\"INPUT_OBJECT_FIELD\"] = \"MapperKind.INPUT_OBJECT_FIELD\";\n    MapperKind[\"ARGUMENT\"] = \"MapperKind.ARGUMENT\";\n    MapperKind[\"ENUM_VALUE\"] = \"MapperKind.ENUM_VALUE\";\n})(MapperKind = exports.MapperKind || (exports.MapperKind = {}));\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getObjectTypeFromTypeMap = void 0;\nconst graphql_1 = require(\"graphql\");\nfunction getObjectTypeFromTypeMap(typeMap, type) {\n    if (type) {\n        const maybeObjectType = typeMap[type.name];\n        if ((0, graphql_1.isObjectType)(maybeObjectType)) {\n            return maybeObjectType;\n        }\n    }\n}\nexports.getObjectTypeFromTypeMap = getObjectTypeFromTypeMap;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getBuiltInForStub = exports.isNamedStub = exports.createStub = exports.createNamedStub = void 0;\nconst graphql_1 = require(\"graphql\");\nfunction createNamedStub(name, type) {\n    let constructor;\n    if (type === 'object') {\n        constructor = graphql_1.GraphQLObjectType;\n    }\n    else if (type === 'interface') {\n        constructor = graphql_1.GraphQLInterfaceType;\n    }\n    else {\n        constructor = graphql_1.GraphQLInputObjectType;\n    }\n    return new constructor({\n        name,\n        fields: {\n            _fake: {\n                type: graphql_1.GraphQLString,\n            },\n        },\n    });\n}\nexports.createNamedStub = createNamedStub;\nfunction createStub(node, type) {\n    switch (node.kind) {\n        case graphql_1.Kind.LIST_TYPE:\n            return new graphql_1.GraphQLList(createStub(node.type, type));\n        case graphql_1.Kind.NON_NULL_TYPE:\n            return new graphql_1.GraphQLNonNull(createStub(node.type, type));\n        default:\n            if (type === 'output') {\n                return createNamedStub(node.name.value, 'object');\n            }\n            return createNamedStub(node.name.value, 'input');\n    }\n}\nexports.createStub = createStub;\nfunction isNamedStub(type) {\n    if ('getFields' in type) {\n        const fields = type.getFields();\n        // eslint-disable-next-line no-unreachable-loop\n        for (const fieldName in fields) {\n            const field = fields[fieldName];\n            return field.name === '_fake';\n        }\n    }\n    return false;\n}\nexports.isNamedStub = isNamedStub;\nfunction getBuiltInForStub(type) {\n    switch (type.name) {\n        case graphql_1.GraphQLInt.name:\n            return graphql_1.GraphQLInt;\n        case graphql_1.GraphQLFloat.name:\n            return graphql_1.GraphQLFloat;\n        case graphql_1.GraphQLString.name:\n            return graphql_1.GraphQLString;\n        case graphql_1.GraphQLBoolean.name:\n            return graphql_1.GraphQLBoolean;\n        case graphql_1.GraphQLID.name:\n            return graphql_1.GraphQLID;\n        default:\n            return type;\n    }\n}\nexports.getBuiltInForStub = getBuiltInForStub;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.rewireTypes = void 0;\nconst graphql_1 = require(\"graphql\");\nconst stub_js_1 = require(\"./stub.js\");\nfunction rewireTypes(originalTypeMap, directives) {\n    const referenceTypeMap = Object.create(null);\n    for (const typeName in originalTypeMap) {\n        referenceTypeMap[typeName] = originalTypeMap[typeName];\n    }\n    const newTypeMap = Object.create(null);\n    for (const typeName in referenceTypeMap) {\n        const namedType = referenceTypeMap[typeName];\n        if (namedType == null || typeName.startsWith('__')) {\n            continue;\n        }\n        const newName = namedType.name;\n        if (newName.startsWith('__')) {\n            continue;\n        }\n        if (newTypeMap[newName] != null) {\n            console.warn(`Duplicate schema type name ${newName} found; keeping the existing one found in the schema`);\n            continue;\n        }\n        newTypeMap[newName] = namedType;\n    }\n    for (const typeName in newTypeMap) {\n        newTypeMap[typeName] = rewireNamedType(newTypeMap[typeName]);\n    }\n    const newDirectives = directives.map(directive => rewireDirective(directive));\n    return {\n        typeMap: newTypeMap,\n        directives: newDirectives,\n    };\n    function rewireDirective(directive) {\n        if ((0, graphql_1.isSpecifiedDirective)(directive)) {\n            return directive;\n        }\n        const directiveConfig = directive.toConfig();\n        directiveConfig.args = rewireArgs(directiveConfig.args);\n        return new graphql_1.GraphQLDirective(directiveConfig);\n    }\n    function rewireArgs(args) {\n        const rewiredArgs = {};\n        for (const argName in args) {\n            const arg = args[argName];\n            const rewiredArgType = rewireType(arg.type);\n            if (rewiredArgType != null) {\n                arg.type = rewiredArgType;\n                rewiredArgs[argName] = arg;\n            }\n        }\n        return rewiredArgs;\n    }\n    function rewireNamedType(type) {\n        if ((0, graphql_1.isObjectType)(type)) {\n            const config = type.toConfig();\n            const newConfig = {\n                ...config,\n                fields: () => rewireFields(config.fields),\n                interfaces: () => rewireNamedTypes(config.interfaces),\n            };\n            return new graphql_1.GraphQLObjectType(newConfig);\n        }\n        else if ((0, graphql_1.isInterfaceType)(type)) {\n            const config = type.toConfig();\n            const newConfig = {\n                ...config,\n                fields: () => rewireFields(config.fields),\n            };\n            if ('interfaces' in newConfig) {\n                newConfig.interfaces = () => rewireNamedTypes(config.interfaces);\n            }\n            return new graphql_1.GraphQLInterfaceType(newConfig);\n        }\n        else if ((0, graphql_1.isUnionType)(type)) {\n            const config = type.toConfig();\n            const newConfig = {\n                ...config,\n                types: () => rewireNamedTypes(config.types),\n            };\n            return new graphql_1.GraphQLUnionType(newConfig);\n        }\n        else if ((0, graphql_1.isInputObjectType)(type)) {\n            const config = type.toConfig();\n            const newConfig = {\n                ...config,\n                fields: () => rewireInputFields(config.fields),\n            };\n            return new graphql_1.GraphQLInputObjectType(newConfig);\n        }\n        else if ((0, graphql_1.isEnumType)(type)) {\n            const enumConfig = type.toConfig();\n            return new graphql_1.GraphQLEnumType(enumConfig);\n        }\n        else if ((0, graphql_1.isScalarType)(type)) {\n            if ((0, graphql_1.isSpecifiedScalarType)(type)) {\n                return type;\n            }\n            const scalarConfig = type.toConfig();\n            return new graphql_1.GraphQLScalarType(scalarConfig);\n        }\n        throw new Error(`Unexpected schema type: ${type}`);\n    }\n    function rewireFields(fields) {\n        const rewiredFields = {};\n        for (const fieldName in fields) {\n            const field = fields[fieldName];\n            const rewiredFieldType = rewireType(field.type);\n            if (rewiredFieldType != null && field.args) {\n                field.type = rewiredFieldType;\n                field.args = rewireArgs(field.args);\n                rewiredFields[fieldName] = field;\n            }\n        }\n        return rewiredFields;\n    }\n    function rewireInputFields(fields) {\n        const rewiredFields = {};\n        for (const fieldName in fields) {\n            const field = fields[fieldName];\n            const rewiredFieldType = rewireType(field.type);\n            if (rewiredFieldType != null) {\n                field.type = rewiredFieldType;\n                rewiredFields[fieldName] = field;\n            }\n        }\n        return rewiredFields;\n    }\n    function rewireNamedTypes(namedTypes) {\n        const rewiredTypes = [];\n        for (const namedType of namedTypes) {\n            const rewiredType = rewireType(namedType);\n            if (rewiredType != null) {\n                rewiredTypes.push(rewiredType);\n            }\n        }\n        return rewiredTypes;\n    }\n    function rewireType(type) {\n        if ((0, graphql_1.isListType)(type)) {\n            const rewiredType = rewireType(type.ofType);\n            return rewiredType != null ? new graphql_1.GraphQLList(rewiredType) : null;\n        }\n        else if ((0, graphql_1.isNonNullType)(type)) {\n            const rewiredType = rewireType(type.ofType);\n            return rewiredType != null ? new graphql_1.GraphQLNonNull(rewiredType) : null;\n        }\n        else if ((0, graphql_1.isNamedType)(type)) {\n            let rewiredType = referenceTypeMap[type.name];\n            if (rewiredType === undefined) {\n                rewiredType = (0, stub_js_1.isNamedStub)(type) ? (0, stub_js_1.getBuiltInForStub)(type) : rewireNamedType(type);\n                newTypeMap[rewiredType.name] = referenceTypeMap[type.name] = rewiredType;\n            }\n            return rewiredType != null ? newTypeMap[rewiredType.name] : null;\n        }\n        return null;\n    }\n}\nexports.rewireTypes = rewireTypes;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseInputValueLiteral = exports.parseInputValue = exports.serializeInputValue = exports.transformInputValue = void 0;\nconst graphql_1 = require(\"graphql\");\nconst helpers_js_1 = require(\"./helpers.js\");\nfunction transformInputValue(type, value, inputLeafValueTransformer = null, inputObjectValueTransformer = null) {\n    if (value == null) {\n        return value;\n    }\n    const nullableType = (0, graphql_1.getNullableType)(type);\n    if ((0, graphql_1.isLeafType)(nullableType)) {\n        return inputLeafValueTransformer != null ? inputLeafValueTransformer(nullableType, value) : value;\n    }\n    else if ((0, graphql_1.isListType)(nullableType)) {\n        return (0, helpers_js_1.asArray)(value).map((listMember) => transformInputValue(nullableType.ofType, listMember, inputLeafValueTransformer, inputObjectValueTransformer));\n    }\n    else if ((0, graphql_1.isInputObjectType)(nullableType)) {\n        const fields = nullableType.getFields();\n        const newValue = {};\n        for (const key in value) {\n            const field = fields[key];\n            if (field != null) {\n                newValue[key] = transformInputValue(field.type, value[key], inputLeafValueTransformer, inputObjectValueTransformer);\n            }\n        }\n        return inputObjectValueTransformer != null ? inputObjectValueTransformer(nullableType, newValue) : newValue;\n    }\n    // unreachable, no other possible return value\n}\nexports.transformInputValue = transformInputValue;\nfunction serializeInputValue(type, value) {\n    return transformInputValue(type, value, (t, v) => {\n        try {\n            return t.serialize(v);\n        }\n        catch (_a) {\n            return v;\n        }\n    });\n}\nexports.serializeInputValue = serializeInputValue;\nfunction parseInputValue(type, value) {\n    return transformInputValue(type, value, (t, v) => {\n        try {\n            return t.parseValue(v);\n        }\n        catch (_a) {\n            return v;\n        }\n    });\n}\nexports.parseInputValue = parseInputValue;\nfunction parseInputValueLiteral(type, value) {\n    return transformInputValue(type, value, (t, v) => t.parseLiteral(v, {}));\n}\nexports.parseInputValueLiteral = parseInputValueLiteral;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.correctASTNodes = exports.mapSchema = void 0;\nconst graphql_1 = require(\"graphql\");\nconst getObjectTypeFromTypeMap_js_1 = require(\"./getObjectTypeFromTypeMap.js\");\nconst Interfaces_js_1 = require(\"./Interfaces.js\");\nconst rewire_js_1 = require(\"./rewire.js\");\nconst transformInputValue_js_1 = require(\"./transformInputValue.js\");\nfunction mapSchema(schema, schemaMapper = {}) {\n    const newTypeMap = mapArguments(mapFields(mapTypes(mapDefaultValues(mapEnumValues(mapTypes(mapDefaultValues(schema.getTypeMap(), schema, transformInputValue_js_1.serializeInputValue), schema, schemaMapper, type => (0, graphql_1.isLeafType)(type)), schema, schemaMapper), schema, transformInputValue_js_1.parseInputValue), schema, schemaMapper, type => !(0, graphql_1.isLeafType)(type)), schema, schemaMapper), schema, schemaMapper);\n    const originalDirectives = schema.getDirectives();\n    const newDirectives = mapDirectives(originalDirectives, schema, schemaMapper);\n    const { typeMap, directives } = (0, rewire_js_1.rewireTypes)(newTypeMap, newDirectives);\n    return new graphql_1.GraphQLSchema({\n        ...schema.toConfig(),\n        query: (0, getObjectTypeFromTypeMap_js_1.getObjectTypeFromTypeMap)(typeMap, (0, getObjectTypeFromTypeMap_js_1.getObjectTypeFromTypeMap)(newTypeMap, schema.getQueryType())),\n        mutation: (0, getObjectTypeFromTypeMap_js_1.getObjectTypeFromTypeMap)(typeMap, (0, getObjectTypeFromTypeMap_js_1.getObjectTypeFromTypeMap)(newTypeMap, schema.getMutationType())),\n        subscription: (0, getObjectTypeFromTypeMap_js_1.getObjectTypeFromTypeMap)(typeMap, (0, getObjectTypeFromTypeMap_js_1.getObjectTypeFromTypeMap)(newTypeMap, schema.getSubscriptionType())),\n        types: Object.values(typeMap),\n        directives,\n    });\n}\nexports.mapSchema = mapSchema;\nfunction mapTypes(originalTypeMap, schema, schemaMapper, testFn = () => true) {\n    const newTypeMap = {};\n    for (const typeName in originalTypeMap) {\n        if (!typeName.startsWith('__')) {\n            const originalType = originalTypeMap[typeName];\n            if (originalType == null || !testFn(originalType)) {\n                newTypeMap[typeName] = originalType;\n                continue;\n            }\n            const typeMapper = getTypeMapper(schema, schemaMapper, typeName);\n            if (typeMapper == null) {\n                newTypeMap[typeName] = originalType;\n                continue;\n            }\n            const maybeNewType = typeMapper(originalType, schema);\n            if (maybeNewType === undefined) {\n                newTypeMap[typeName] = originalType;\n                continue;\n            }\n            newTypeMap[typeName] = maybeNewType;\n        }\n    }\n    return newTypeMap;\n}\nfunction mapEnumValues(originalTypeMap, schema, schemaMapper) {\n    const enumValueMapper = getEnumValueMapper(schemaMapper);\n    if (!enumValueMapper) {\n        return originalTypeMap;\n    }\n    return mapTypes(originalTypeMap, schema, {\n        [Interfaces_js_1.MapperKind.ENUM_TYPE]: type => {\n            const config = type.toConfig();\n            const originalEnumValueConfigMap = config.values;\n            const newEnumValueConfigMap = {};\n            for (const externalValue in originalEnumValueConfigMap) {\n                const originalEnumValueConfig = originalEnumValueConfigMap[externalValue];\n                const mappedEnumValue = enumValueMapper(originalEnumValueConfig, type.name, schema, externalValue);\n                if (mappedEnumValue === undefined) {\n                    newEnumValueConfigMap[externalValue] = originalEnumValueConfig;\n                }\n                else if (Array.isArray(mappedEnumValue)) {\n                    const [newExternalValue, newEnumValueConfig] = mappedEnumValue;\n                    newEnumValueConfigMap[newExternalValue] =\n                        newEnumValueConfig === undefined ? originalEnumValueConfig : newEnumValueConfig;\n                }\n                else if (mappedEnumValue !== null) {\n                    newEnumValueConfigMap[externalValue] = mappedEnumValue;\n                }\n            }\n            return correctASTNodes(new graphql_1.GraphQLEnumType({\n                ...config,\n                values: newEnumValueConfigMap,\n            }));\n        },\n    }, type => (0, graphql_1.isEnumType)(type));\n}\nfunction mapDefaultValues(originalTypeMap, schema, fn) {\n    const newTypeMap = mapArguments(originalTypeMap, schema, {\n        [Interfaces_js_1.MapperKind.ARGUMENT]: argumentConfig => {\n            if (argumentConfig.defaultValue === undefined) {\n                return argumentConfig;\n            }\n            const maybeNewType = getNewType(originalTypeMap, argumentConfig.type);\n            if (maybeNewType != null) {\n                return {\n                    ...argumentConfig,\n                    defaultValue: fn(maybeNewType, argumentConfig.defaultValue),\n                };\n            }\n        },\n    });\n    return mapFields(newTypeMap, schema, {\n        [Interfaces_js_1.MapperKind.INPUT_OBJECT_FIELD]: inputFieldConfig => {\n            if (inputFieldConfig.defaultValue === undefined) {\n                return inputFieldConfig;\n            }\n            const maybeNewType = getNewType(newTypeMap, inputFieldConfig.type);\n            if (maybeNewType != null) {\n                return {\n                    ...inputFieldConfig,\n                    defaultValue: fn(maybeNewType, inputFieldConfig.defaultValue),\n                };\n            }\n        },\n    });\n}\nfunction getNewType(newTypeMap, type) {\n    if ((0, graphql_1.isListType)(type)) {\n        const newType = getNewType(newTypeMap, type.ofType);\n        return newType != null ? new graphql_1.GraphQLList(newType) : null;\n    }\n    else if ((0, graphql_1.isNonNullType)(type)) {\n        const newType = getNewType(newTypeMap, type.ofType);\n        return newType != null ? new graphql_1.GraphQLNonNull(newType) : null;\n    }\n    else if ((0, graphql_1.isNamedType)(type)) {\n        const newType = newTypeMap[type.name];\n        return newType != null ? newType : null;\n    }\n    return null;\n}\nfunction mapFields(originalTypeMap, schema, schemaMapper) {\n    const newTypeMap = {};\n    for (const typeName in originalTypeMap) {\n        if (!typeName.startsWith('__')) {\n            const originalType = originalTypeMap[typeName];\n            if (!(0, graphql_1.isObjectType)(originalType) && !(0, graphql_1.isInterfaceType)(originalType) && !(0, graphql_1.isInputObjectType)(originalType)) {\n                newTypeMap[typeName] = originalType;\n                continue;\n            }\n            const fieldMapper = getFieldMapper(schema, schemaMapper, typeName);\n            if (fieldMapper == null) {\n                newTypeMap[typeName] = originalType;\n                continue;\n            }\n            const config = originalType.toConfig();\n            const originalFieldConfigMap = config.fields;\n            const newFieldConfigMap = {};\n            for (const fieldName in originalFieldConfigMap) {\n                const originalFieldConfig = originalFieldConfigMap[fieldName];\n                const mappedField = fieldMapper(originalFieldConfig, fieldName, typeName, schema);\n                if (mappedField === undefined) {\n                    newFieldConfigMap[fieldName] = originalFieldConfig;\n                }\n                else if (Array.isArray(mappedField)) {\n                    const [newFieldName, newFieldConfig] = mappedField;\n                    if (newFieldConfig.astNode != null) {\n                        newFieldConfig.astNode = {\n                            ...newFieldConfig.astNode,\n                            name: {\n                                ...newFieldConfig.astNode.name,\n                                value: newFieldName,\n                            },\n                        };\n                    }\n                    newFieldConfigMap[newFieldName] = newFieldConfig === undefined ? originalFieldConfig : newFieldConfig;\n                }\n                else if (mappedField !== null) {\n                    newFieldConfigMap[fieldName] = mappedField;\n                }\n            }\n            if ((0, graphql_1.isObjectType)(originalType)) {\n                newTypeMap[typeName] = correctASTNodes(new graphql_1.GraphQLObjectType({\n                    ...config,\n                    fields: newFieldConfigMap,\n                }));\n            }\n            else if ((0, graphql_1.isInterfaceType)(originalType)) {\n                newTypeMap[typeName] = correctASTNodes(new graphql_1.GraphQLInterfaceType({\n                    ...config,\n                    fields: newFieldConfigMap,\n                }));\n            }\n            else {\n                newTypeMap[typeName] = correctASTNodes(new graphql_1.GraphQLInputObjectType({\n                    ...config,\n                    fields: newFieldConfigMap,\n                }));\n            }\n        }\n    }\n    return newTypeMap;\n}\nfunction mapArguments(originalTypeMap, schema, schemaMapper) {\n    const newTypeMap = {};\n    for (const typeName in originalTypeMap) {\n        if (!typeName.startsWith('__')) {\n            const originalType = originalTypeMap[typeName];\n            if (!(0, graphql_1.isObjectType)(originalType) && !(0, graphql_1.isInterfaceType)(originalType)) {\n                newTypeMap[typeName] = originalType;\n                continue;\n            }\n            const argumentMapper = getArgumentMapper(schemaMapper);\n            if (argumentMapper == null) {\n                newTypeMap[typeName] = originalType;\n                continue;\n            }\n            const config = originalType.toConfig();\n            const originalFieldConfigMap = config.fields;\n            const newFieldConfigMap = {};\n            for (const fieldName in originalFieldConfigMap) {\n                const originalFieldConfig = originalFieldConfigMap[fieldName];\n                const originalArgumentConfigMap = originalFieldConfig.args;\n                if (originalArgumentConfigMap == null) {\n                    newFieldConfigMap[fieldName] = originalFieldConfig;\n                    continue;\n                }\n                const argumentNames = Object.keys(originalArgumentConfigMap);\n                if (!argumentNames.length) {\n                    newFieldConfigMap[fieldName] = originalFieldConfig;\n                    continue;\n                }\n                const newArgumentConfigMap = {};\n                for (const argumentName of argumentNames) {\n                    const originalArgumentConfig = originalArgumentConfigMap[argumentName];\n                    const mappedArgument = argumentMapper(originalArgumentConfig, fieldName, typeName, schema);\n                    if (mappedArgument === undefined) {\n                        newArgumentConfigMap[argumentName] = originalArgumentConfig;\n                    }\n                    else if (Array.isArray(mappedArgument)) {\n                        const [newArgumentName, newArgumentConfig] = mappedArgument;\n                        newArgumentConfigMap[newArgumentName] = newArgumentConfig;\n                    }\n                    else if (mappedArgument !== null) {\n                        newArgumentConfigMap[argumentName] = mappedArgument;\n                    }\n                }\n                newFieldConfigMap[fieldName] = {\n                    ...originalFieldConfig,\n                    args: newArgumentConfigMap,\n                };\n            }\n            if ((0, graphql_1.isObjectType)(originalType)) {\n                newTypeMap[typeName] = new graphql_1.GraphQLObjectType({\n                    ...config,\n                    fields: newFieldConfigMap,\n                });\n            }\n            else if ((0, graphql_1.isInterfaceType)(originalType)) {\n                newTypeMap[typeName] = new graphql_1.GraphQLInterfaceType({\n                    ...config,\n                    fields: newFieldConfigMap,\n                });\n            }\n            else {\n                newTypeMap[typeName] = new graphql_1.GraphQLInputObjectType({\n                    ...config,\n                    fields: newFieldConfigMap,\n                });\n            }\n        }\n    }\n    return newTypeMap;\n}\nfunction mapDirectives(originalDirectives, schema, schemaMapper) {\n    const directiveMapper = getDirectiveMapper(schemaMapper);\n    if (directiveMapper == null) {\n        return originalDirectives.slice();\n    }\n    const newDirectives = [];\n    for (const directive of originalDirectives) {\n        const mappedDirective = directiveMapper(directive, schema);\n        if (mappedDirective === undefined) {\n            newDirectives.push(directive);\n        }\n        else if (mappedDirective !== null) {\n            newDirectives.push(mappedDirective);\n        }\n    }\n    return newDirectives;\n}\nfunction getTypeSpecifiers(schema, typeName) {\n    var _a, _b, _c;\n    const type = schema.getType(typeName);\n    const specifiers = [Interfaces_js_1.MapperKind.TYPE];\n    if ((0, graphql_1.isObjectType)(type)) {\n        specifiers.push(Interfaces_js_1.MapperKind.COMPOSITE_TYPE, Interfaces_js_1.MapperKind.OBJECT_TYPE);\n        if (typeName === ((_a = schema.getQueryType()) === null || _a === void 0 ? void 0 : _a.name)) {\n            specifiers.push(Interfaces_js_1.MapperKind.ROOT_OBJECT, Interfaces_js_1.MapperKind.QUERY);\n        }\n        else if (typeName === ((_b = schema.getMutationType()) === null || _b === void 0 ? void 0 : _b.name)) {\n            specifiers.push(Interfaces_js_1.MapperKind.ROOT_OBJECT, Interfaces_js_1.MapperKind.MUTATION);\n        }\n        else if (typeName === ((_c = schema.getSubscriptionType()) === null || _c === void 0 ? void 0 : _c.name)) {\n            specifiers.push(Interfaces_js_1.MapperKind.ROOT_OBJECT, Interfaces_js_1.MapperKind.SUBSCRIPTION);\n        }\n    }\n    else if ((0, graphql_1.isInputObjectType)(type)) {\n        specifiers.push(Interfaces_js_1.MapperKind.INPUT_OBJECT_TYPE);\n    }\n    else if ((0, graphql_1.isInterfaceType)(type)) {\n        specifiers.push(Interfaces_js_1.MapperKind.COMPOSITE_TYPE, Interfaces_js_1.MapperKind.ABSTRACT_TYPE, Interfaces_js_1.MapperKind.INTERFACE_TYPE);\n    }\n    else if ((0, graphql_1.isUnionType)(type)) {\n        specifiers.push(Interfaces_js_1.MapperKind.COMPOSITE_TYPE, Interfaces_js_1.MapperKind.ABSTRACT_TYPE, Interfaces_js_1.MapperKind.UNION_TYPE);\n    }\n    else if ((0, graphql_1.isEnumType)(type)) {\n        specifiers.push(Interfaces_js_1.MapperKind.ENUM_TYPE);\n    }\n    else if ((0, graphql_1.isScalarType)(type)) {\n        specifiers.push(Interfaces_js_1.MapperKind.SCALAR_TYPE);\n    }\n    return specifiers;\n}\nfunction getTypeMapper(schema, schemaMapper, typeName) {\n    const specifiers = getTypeSpecifiers(schema, typeName);\n    let typeMapper;\n    const stack = [...specifiers];\n    while (!typeMapper && stack.length > 0) {\n        // It is safe to use the ! operator here as we check the length.\n        const next = stack.pop();\n        typeMapper = schemaMapper[next];\n    }\n    return typeMapper != null ? typeMapper : null;\n}\nfunction getFieldSpecifiers(schema, typeName) {\n    var _a, _b, _c;\n    const type = schema.getType(typeName);\n    const specifiers = [Interfaces_js_1.MapperKind.FIELD];\n    if ((0, graphql_1.isObjectType)(type)) {\n        specifiers.push(Interfaces_js_1.MapperKind.COMPOSITE_FIELD, Interfaces_js_1.MapperKind.OBJECT_FIELD);\n        if (typeName === ((_a = schema.getQueryType()) === null || _a === void 0 ? void 0 : _a.name)) {\n            specifiers.push(Interfaces_js_1.MapperKind.ROOT_FIELD, Interfaces_js_1.MapperKind.QUERY_ROOT_FIELD);\n        }\n        else if (typeName === ((_b = schema.getMutationType()) === null || _b === void 0 ? void 0 : _b.name)) {\n            specifiers.push(Interfaces_js_1.MapperKind.ROOT_FIELD, Interfaces_js_1.MapperKind.MUTATION_ROOT_FIELD);\n        }\n        else if (typeName === ((_c = schema.getSubscriptionType()) === null || _c === void 0 ? void 0 : _c.name)) {\n            specifiers.push(Interfaces_js_1.MapperKind.ROOT_FIELD, Interfaces_js_1.MapperKind.SUBSCRIPTION_ROOT_FIELD);\n        }\n    }\n    else if ((0, graphql_1.isInterfaceType)(type)) {\n        specifiers.push(Interfaces_js_1.MapperKind.COMPOSITE_FIELD, Interfaces_js_1.MapperKind.INTERFACE_FIELD);\n    }\n    else if ((0, graphql_1.isInputObjectType)(type)) {\n        specifiers.push(Interfaces_js_1.MapperKind.INPUT_OBJECT_FIELD);\n    }\n    return specifiers;\n}\nfunction getFieldMapper(schema, schemaMapper, typeName) {\n    const specifiers = getFieldSpecifiers(schema, typeName);\n    let fieldMapper;\n    const stack = [...specifiers];\n    while (!fieldMapper && stack.length > 0) {\n        // It is safe to use the ! operator here as we check the length.\n        const next = stack.pop();\n        // TODO: fix this as unknown cast\n        fieldMapper = schemaMapper[next];\n    }\n    return fieldMapper !== null && fieldMapper !== void 0 ? fieldMapper : null;\n}\nfunction getArgumentMapper(schemaMapper) {\n    const argumentMapper = schemaMapper[Interfaces_js_1.MapperKind.ARGUMENT];\n    return argumentMapper != null ? argumentMapper : null;\n}\nfunction getDirectiveMapper(schemaMapper) {\n    const directiveMapper = schemaMapper[Interfaces_js_1.MapperKind.DIRECTIVE];\n    return directiveMapper != null ? directiveMapper : null;\n}\nfunction getEnumValueMapper(schemaMapper) {\n    const enumValueMapper = schemaMapper[Interfaces_js_1.MapperKind.ENUM_VALUE];\n    return enumValueMapper != null ? enumValueMapper : null;\n}\nfunction correctASTNodes(type) {\n    if ((0, graphql_1.isObjectType)(type)) {\n        const config = type.toConfig();\n        if (config.astNode != null) {\n            const fields = [];\n            for (const fieldName in config.fields) {\n                const fieldConfig = config.fields[fieldName];\n                if (fieldConfig.astNode != null) {\n                    fields.push(fieldConfig.astNode);\n                }\n            }\n            config.astNode = {\n                ...config.astNode,\n                kind: graphql_1.Kind.OBJECT_TYPE_DEFINITION,\n                fields,\n            };\n        }\n        if (config.extensionASTNodes != null) {\n            config.extensionASTNodes = config.extensionASTNodes.map(node => ({\n                ...node,\n                kind: graphql_1.Kind.OBJECT_TYPE_EXTENSION,\n                fields: undefined,\n            }));\n        }\n        return new graphql_1.GraphQLObjectType(config);\n    }\n    else if ((0, graphql_1.isInterfaceType)(type)) {\n        const config = type.toConfig();\n        if (config.astNode != null) {\n            const fields = [];\n            for (const fieldName in config.fields) {\n                const fieldConfig = config.fields[fieldName];\n                if (fieldConfig.astNode != null) {\n                    fields.push(fieldConfig.astNode);\n                }\n            }\n            config.astNode = {\n                ...config.astNode,\n                kind: graphql_1.Kind.INTERFACE_TYPE_DEFINITION,\n                fields,\n            };\n        }\n        if (config.extensionASTNodes != null) {\n            config.extensionASTNodes = config.extensionASTNodes.map(node => ({\n                ...node,\n                kind: graphql_1.Kind.INTERFACE_TYPE_EXTENSION,\n                fields: undefined,\n            }));\n        }\n        return new graphql_1.GraphQLInterfaceType(config);\n    }\n    else if ((0, graphql_1.isInputObjectType)(type)) {\n        const config = type.toConfig();\n        if (config.astNode != null) {\n            const fields = [];\n            for (const fieldName in config.fields) {\n                const fieldConfig = config.fields[fieldName];\n                if (fieldConfig.astNode != null) {\n                    fields.push(fieldConfig.astNode);\n                }\n            }\n            config.astNode = {\n                ...config.astNode,\n                kind: graphql_1.Kind.INPUT_OBJECT_TYPE_DEFINITION,\n                fields,\n            };\n        }\n        if (config.extensionASTNodes != null) {\n            config.extensionASTNodes = config.extensionASTNodes.map(node => ({\n                ...node,\n                kind: graphql_1.Kind.INPUT_OBJECT_TYPE_EXTENSION,\n                fields: undefined,\n            }));\n        }\n        return new graphql_1.GraphQLInputObjectType(config);\n    }\n    else if ((0, graphql_1.isEnumType)(type)) {\n        const config = type.toConfig();\n        if (config.astNode != null) {\n            const values = [];\n            for (const enumKey in config.values) {\n                const enumValueConfig = config.values[enumKey];\n                if (enumValueConfig.astNode != null) {\n                    values.push(enumValueConfig.astNode);\n                }\n            }\n            config.astNode = {\n                ...config.astNode,\n                values,\n            };\n        }\n        if (config.extensionASTNodes != null) {\n            config.extensionASTNodes = config.extensionASTNodes.map(node => ({\n                ...node,\n                values: undefined,\n            }));\n        }\n        return new graphql_1.GraphQLEnumType(config);\n    }\n    else {\n        return type;\n    }\n}\nexports.correctASTNodes = correctASTNodes;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.filterSchema = void 0;\nconst graphql_1 = require(\"graphql\");\nconst Interfaces_js_1 = require(\"./Interfaces.js\");\nconst mapSchema_js_1 = require(\"./mapSchema.js\");\nfunction filterSchema({ schema, typeFilter = () => true, fieldFilter = undefined, rootFieldFilter = undefined, objectFieldFilter = undefined, interfaceFieldFilter = undefined, inputObjectFieldFilter = undefined, argumentFilter = undefined, }) {\n    const filteredSchema = (0, mapSchema_js_1.mapSchema)(schema, {\n        [Interfaces_js_1.MapperKind.QUERY]: (type) => filterRootFields(type, 'Query', rootFieldFilter, argumentFilter),\n        [Interfaces_js_1.MapperKind.MUTATION]: (type) => filterRootFields(type, 'Mutation', rootFieldFilter, argumentFilter),\n        [Interfaces_js_1.MapperKind.SUBSCRIPTION]: (type) => filterRootFields(type, 'Subscription', rootFieldFilter, argumentFilter),\n        [Interfaces_js_1.MapperKind.OBJECT_TYPE]: (type) => typeFilter(type.name, type)\n            ? filterElementFields(graphql_1.GraphQLObjectType, type, objectFieldFilter || fieldFilter, argumentFilter)\n            : null,\n        [Interfaces_js_1.MapperKind.INTERFACE_TYPE]: (type) => typeFilter(type.name, type)\n            ? filterElementFields(graphql_1.GraphQLInterfaceType, type, interfaceFieldFilter || fieldFilter, argumentFilter)\n            : null,\n        [Interfaces_js_1.MapperKind.INPUT_OBJECT_TYPE]: (type) => typeFilter(type.name, type)\n            ? filterElementFields(graphql_1.GraphQLInputObjectType, type, inputObjectFieldFilter || fieldFilter)\n            : null,\n        [Interfaces_js_1.MapperKind.UNION_TYPE]: (type) => (typeFilter(type.name, type) ? undefined : null),\n        [Interfaces_js_1.MapperKind.ENUM_TYPE]: (type) => (typeFilter(type.name, type) ? undefined : null),\n        [Interfaces_js_1.MapperKind.SCALAR_TYPE]: (type) => (typeFilter(type.name, type) ? undefined : null),\n    });\n    return filteredSchema;\n}\nexports.filterSchema = filterSchema;\nfunction filterRootFields(type, operation, rootFieldFilter, argumentFilter) {\n    if (rootFieldFilter || argumentFilter) {\n        const config = type.toConfig();\n        for (const fieldName in config.fields) {\n            const field = config.fields[fieldName];\n            if (rootFieldFilter && !rootFieldFilter(operation, fieldName, config.fields[fieldName])) {\n                delete config.fields[fieldName];\n            }\n            else if (argumentFilter && field.args) {\n                for (const argName in field.args) {\n                    if (!argumentFilter(operation, fieldName, argName, field.args[argName])) {\n                        delete field.args[argName];\n                    }\n                }\n            }\n        }\n        return new graphql_1.GraphQLObjectType(config);\n    }\n    return type;\n}\nfunction filterElementFields(ElementConstructor, type, fieldFilter, argumentFilter) {\n    if (fieldFilter || argumentFilter) {\n        const config = type.toConfig();\n        for (const fieldName in config.fields) {\n            const field = config.fields[fieldName];\n            if (fieldFilter && !fieldFilter(type.name, fieldName, config.fields[fieldName])) {\n                delete config.fields[fieldName];\n            }\n            else if (argumentFilter && 'args' in field) {\n                for (const argName in field.args) {\n                    if (!argumentFilter(type.name, fieldName, argName, field.args[argName])) {\n                        delete field.args[argName];\n                    }\n                }\n            }\n        }\n        return new ElementConstructor(config);\n    }\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.healTypes = exports.healSchema = void 0;\nconst graphql_1 = require(\"graphql\");\n// Update any references to named schema types that disagree with the named\n// types found in schema.getTypeMap().\n//\n// healSchema and its callers (visitSchema/visitSchemaDirectives) all modify the schema in place.\n// Therefore, private variables (such as the stored implementation map and the proper root types)\n// are not updated.\n//\n// If this causes issues, the schema could be more aggressively healed as follows:\n//\n// healSchema(schema);\n// const config = schema.toConfig()\n// const healedSchema = new GraphQLSchema({\n//   ...config,\n//   query: schema.getType('<desired new root query type name>'),\n//   mutation: schema.getType('<desired new root mutation type name>'),\n//   subscription: schema.getType('<desired new root subscription type name>'),\n// });\n//\n// One can then also -- if necessary --  assign the correct private variables to the initial schema\n// as follows:\n// Object.assign(schema, healedSchema);\n//\n// These steps are not taken automatically to preserve backwards compatibility with graphql-tools v4.\n// See https://github.com/ardatan/graphql-tools/issues/1462\n//\n// They were briefly taken in v5, but can now be phased out as they were only required when other\n// areas of the codebase were using healSchema and visitSchema more extensively.\n//\nfunction healSchema(schema) {\n    healTypes(schema.getTypeMap(), schema.getDirectives());\n    return schema;\n}\nexports.healSchema = healSchema;\nfunction healTypes(originalTypeMap, directives) {\n    const actualNamedTypeMap = Object.create(null);\n    // If any of the .name properties of the GraphQLNamedType objects in\n    // schema.getTypeMap() have changed, the keys of the type map need to\n    // be updated accordingly.\n    for (const typeName in originalTypeMap) {\n        const namedType = originalTypeMap[typeName];\n        if (namedType == null || typeName.startsWith('__')) {\n            continue;\n        }\n        const actualName = namedType.name;\n        if (actualName.startsWith('__')) {\n            continue;\n        }\n        if (actualNamedTypeMap[actualName] != null) {\n            console.warn(`Duplicate schema type name ${actualName} found; keeping the existing one found in the schema`);\n            continue;\n        }\n        actualNamedTypeMap[actualName] = namedType;\n        // Note: we are deliberately leaving namedType in the schema by its\n        // original name (which might be different from actualName), so that\n        // references by that name can be healed.\n    }\n    // Now add back every named type by its actual name.\n    for (const typeName in actualNamedTypeMap) {\n        const namedType = actualNamedTypeMap[typeName];\n        originalTypeMap[typeName] = namedType;\n    }\n    // Directive declaration argument types can refer to named types.\n    for (const decl of directives) {\n        decl.args = decl.args.filter(arg => {\n            arg.type = healType(arg.type);\n            return arg.type !== null;\n        });\n    }\n    for (const typeName in originalTypeMap) {\n        const namedType = originalTypeMap[typeName];\n        // Heal all named types, except for dangling references, kept only to redirect.\n        if (!typeName.startsWith('__') && typeName in actualNamedTypeMap) {\n            if (namedType != null) {\n                healNamedType(namedType);\n            }\n        }\n    }\n    for (const typeName in originalTypeMap) {\n        if (!typeName.startsWith('__') && !(typeName in actualNamedTypeMap)) {\n            delete originalTypeMap[typeName];\n        }\n    }\n    function healNamedType(type) {\n        if ((0, graphql_1.isObjectType)(type)) {\n            healFields(type);\n            healInterfaces(type);\n            return;\n        }\n        else if ((0, graphql_1.isInterfaceType)(type)) {\n            healFields(type);\n            if ('getInterfaces' in type) {\n                healInterfaces(type);\n            }\n            return;\n        }\n        else if ((0, graphql_1.isUnionType)(type)) {\n            healUnderlyingTypes(type);\n            return;\n        }\n        else if ((0, graphql_1.isInputObjectType)(type)) {\n            healInputFields(type);\n            return;\n        }\n        else if ((0, graphql_1.isLeafType)(type)) {\n            return;\n        }\n        throw new Error(`Unexpected schema type: ${type}`);\n    }\n    function healFields(type) {\n        const fieldMap = type.getFields();\n        for (const [key, field] of Object.entries(fieldMap)) {\n            field.args\n                .map(arg => {\n                arg.type = healType(arg.type);\n                return arg.type === null ? null : arg;\n            })\n                .filter(Boolean);\n            field.type = healType(field.type);\n            if (field.type === null) {\n                delete fieldMap[key];\n            }\n        }\n    }\n    function healInterfaces(type) {\n        if ('getInterfaces' in type) {\n            const interfaces = type.getInterfaces();\n            interfaces.push(...interfaces\n                .splice(0)\n                .map(iface => healType(iface))\n                .filter(Boolean));\n        }\n    }\n    function healInputFields(type) {\n        const fieldMap = type.getFields();\n        for (const [key, field] of Object.entries(fieldMap)) {\n            field.type = healType(field.type);\n            if (field.type === null) {\n                delete fieldMap[key];\n            }\n        }\n    }\n    function healUnderlyingTypes(type) {\n        const types = type.getTypes();\n        types.push(...types\n            .splice(0)\n            .map(t => healType(t))\n            .filter(Boolean));\n    }\n    function healType(type) {\n        // Unwrap the two known wrapper types\n        if ((0, graphql_1.isListType)(type)) {\n            const healedType = healType(type.ofType);\n            return healedType != null ? new graphql_1.GraphQLList(healedType) : null;\n        }\n        else if ((0, graphql_1.isNonNullType)(type)) {\n            const healedType = healType(type.ofType);\n            return healedType != null ? new graphql_1.GraphQLNonNull(healedType) : null;\n        }\n        else if ((0, graphql_1.isNamedType)(type)) {\n            // If a type annotation on a field or an argument or a union member is\n            // any `GraphQLNamedType` with a `name`, then it must end up identical\n            // to `schema.getType(name)`, since `schema.getTypeMap()` is the source\n            // of truth for all named schema types.\n            // Note that new types can still be simply added by adding a field, as\n            // the official type will be undefined, not null.\n            const officialType = originalTypeMap[type.name];\n            if (officialType && type !== officialType) {\n                return officialType;\n            }\n        }\n        return type;\n    }\n}\nexports.healTypes = healTypes;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getResolversFromSchema = void 0;\nconst graphql_1 = require(\"graphql\");\nfunction getResolversFromSchema(schema, \n// Include default merged resolvers\nincludeDefaultMergedResolver) {\n    var _a, _b;\n    const resolvers = Object.create(null);\n    const typeMap = schema.getTypeMap();\n    for (const typeName in typeMap) {\n        if (!typeName.startsWith('__')) {\n            const type = typeMap[typeName];\n            if ((0, graphql_1.isScalarType)(type)) {\n                if (!(0, graphql_1.isSpecifiedScalarType)(type)) {\n                    const config = type.toConfig();\n                    delete config.astNode; // avoid AST duplication elsewhere\n                    resolvers[typeName] = new graphql_1.GraphQLScalarType(config);\n                }\n            }\n            else if ((0, graphql_1.isEnumType)(type)) {\n                resolvers[typeName] = {};\n                const values = type.getValues();\n                for (const value of values) {\n                    resolvers[typeName][value.name] = value.value;\n                }\n            }\n            else if ((0, graphql_1.isInterfaceType)(type)) {\n                if (type.resolveType != null) {\n                    resolvers[typeName] = {\n                        __resolveType: type.resolveType,\n                    };\n                }\n            }\n            else if ((0, graphql_1.isUnionType)(type)) {\n                if (type.resolveType != null) {\n                    resolvers[typeName] = {\n                        __resolveType: type.resolveType,\n                    };\n                }\n            }\n            else if ((0, graphql_1.isObjectType)(type)) {\n                resolvers[typeName] = {};\n                if (type.isTypeOf != null) {\n                    resolvers[typeName].__isTypeOf = type.isTypeOf;\n                }\n                const fields = type.getFields();\n                for (const fieldName in fields) {\n                    const field = fields[fieldName];\n                    if (field.subscribe != null) {\n                        resolvers[typeName][fieldName] = resolvers[typeName][fieldName] || {};\n                        resolvers[typeName][fieldName].subscribe = field.subscribe;\n                    }\n                    if (field.resolve != null && ((_a = field.resolve) === null || _a === void 0 ? void 0 : _a.name) !== 'defaultFieldResolver') {\n                        switch ((_b = field.resolve) === null || _b === void 0 ? void 0 : _b.name) {\n                            case 'defaultMergedResolver':\n                                if (!includeDefaultMergedResolver) {\n                                    continue;\n                                }\n                                break;\n                            case 'defaultFieldResolver':\n                                continue;\n                        }\n                        resolvers[typeName][fieldName] = resolvers[typeName][fieldName] || {};\n                        resolvers[typeName][fieldName].resolve = field.resolve;\n                    }\n                }\n            }\n        }\n    }\n    return resolvers;\n}\nexports.getResolversFromSchema = getResolversFromSchema;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.forEachField = void 0;\nconst graphql_1 = require(\"graphql\");\nfunction forEachField(schema, fn) {\n    const typeMap = schema.getTypeMap();\n    for (const typeName in typeMap) {\n        const type = typeMap[typeName];\n        // TODO: maybe have an option to include these?\n        if (!(0, graphql_1.getNamedType)(type).name.startsWith('__') && (0, graphql_1.isObjectType)(type)) {\n            const fields = type.getFields();\n            for (const fieldName in fields) {\n                const field = fields[fieldName];\n                fn(field, typeName, fieldName);\n            }\n        }\n    }\n}\nexports.forEachField = forEachField;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.forEachDefaultValue = void 0;\nconst graphql_1 = require(\"graphql\");\nfunction forEachDefaultValue(schema, fn) {\n    const typeMap = schema.getTypeMap();\n    for (const typeName in typeMap) {\n        const type = typeMap[typeName];\n        if (!(0, graphql_1.getNamedType)(type).name.startsWith('__')) {\n            if ((0, graphql_1.isObjectType)(type)) {\n                const fields = type.getFields();\n                for (const fieldName in fields) {\n                    const field = fields[fieldName];\n                    for (const arg of field.args) {\n                        arg.defaultValue = fn(arg.type, arg.defaultValue);\n                    }\n                }\n            }\n            else if ((0, graphql_1.isInputObjectType)(type)) {\n                const fields = type.getFields();\n                for (const fieldName in fields) {\n                    const field = fields[fieldName];\n                    field.defaultValue = fn(field.type, field.defaultValue);\n                }\n            }\n        }\n    }\n}\nexports.forEachDefaultValue = forEachDefaultValue;\n", "\"use strict\";\n// addTypes uses toConfig to create a new schema with a new or replaced\n// type or directive. Rewiring is employed so that the replaced type can be\n// reconnected with the existing types.\n//\n// Rewiring is employed even for new types or directives as a convenience, so\n// that type references within the new type or directive do not have to be to\n// the identical objects within the original schema.\n//\n// In fact, the type references could even be stub types with entirely different\n// fields, as long as the type references share the same name as the desired\n// type within the original schema's type map.\n//\n// This makes it easy to perform simple schema operations (e.g. adding a new\n// type with a fiew fields removed from an existing type) that could normally be\n// performed by using toConfig directly, but is blocked if any intervening\n// more advanced schema operations have caused the types to be recreated via\n// rewiring.\n//\n// Type recreation happens, for example, with every use of mapSchema, as the\n// types are always rewired. If fields are selected and removed using\n// mapSchema, adding those fields to a new type can no longer be simply done\n// by toConfig, as the types are not the identical JavaScript objects, and\n// schema creation will fail with errors referencing multiple types with the\n// same names.\n//\n// enhanceSchema can fill this gap by adding an additional round of rewiring.\n//\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.addTypes = void 0;\nconst graphql_1 = require(\"graphql\");\nconst getObjectTypeFromTypeMap_js_1 = require(\"./getObjectTypeFromTypeMap.js\");\nconst rewire_js_1 = require(\"./rewire.js\");\nfunction addTypes(schema, newTypesOrDirectives) {\n    const config = schema.toConfig();\n    const originalTypeMap = {};\n    for (const type of config.types) {\n        originalTypeMap[type.name] = type;\n    }\n    const originalDirectiveMap = {};\n    for (const directive of config.directives) {\n        originalDirectiveMap[directive.name] = directive;\n    }\n    for (const newTypeOrDirective of newTypesOrDirectives) {\n        if ((0, graphql_1.isNamedType)(newTypeOrDirective)) {\n            originalTypeMap[newTypeOrDirective.name] = newTypeOrDirective;\n        }\n        else if ((0, graphql_1.isDirective)(newTypeOrDirective)) {\n            originalDirectiveMap[newTypeOrDirective.name] = newTypeOrDirective;\n        }\n    }\n    const { typeMap, directives } = (0, rewire_js_1.rewireTypes)(originalTypeMap, Object.values(originalDirectiveMap));\n    return new graphql_1.GraphQLSchema({\n        ...config,\n        query: (0, getObjectTypeFromTypeMap_js_1.getObjectTypeFromTypeMap)(typeMap, schema.getQueryType()),\n        mutation: (0, getObjectTypeFromTypeMap_js_1.getObjectTypeFromTypeMap)(typeMap, schema.getMutationType()),\n        subscription: (0, getObjectTypeFromTypeMap_js_1.getObjectTypeFromTypeMap)(typeMap, schema.getSubscriptionType()),\n        types: Object.values(typeMap),\n        directives,\n    });\n}\nexports.addTypes = addTypes;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.pruneSchema = void 0;\nconst graphql_1 = require(\"graphql\");\nconst mapSchema_js_1 = require(\"./mapSchema.js\");\nconst Interfaces_js_1 = require(\"./Interfaces.js\");\nconst rootTypes_js_1 = require(\"./rootTypes.js\");\nconst get_implementing_types_js_1 = require(\"./get-implementing-types.js\");\n/**\n * Prunes the provided schema, removing unused and empty types\n * @param schema The schema to prune\n * @param options Additional options for removing unused types from the schema\n */\nfunction pruneSchema(schema, options = {}) {\n    const { skipEmptyCompositeTypePruning, skipEmptyUnionPruning, skipPruning, skipUnimplementedInterfacesPruning, skipUnusedTypesPruning, } = options;\n    let prunedTypes = []; // Pruned types during mapping\n    let prunedSchema = schema;\n    do {\n        let visited = visitSchema(prunedSchema);\n        // Custom pruning  was defined, so we need to pre-emptively revisit the schema accounting for this\n        if (skipPruning) {\n            const revisit = [];\n            for (const typeName in prunedSchema.getTypeMap()) {\n                if (typeName.startsWith('__')) {\n                    continue;\n                }\n                const type = prunedSchema.getType(typeName);\n                // if we want to skip pruning for this type, add it to the list of types to revisit\n                if (type && skipPruning(type)) {\n                    revisit.push(typeName);\n                }\n            }\n            visited = visitQueue(revisit, prunedSchema, visited); // visit again\n        }\n        prunedTypes = [];\n        prunedSchema = (0, mapSchema_js_1.mapSchema)(prunedSchema, {\n            [Interfaces_js_1.MapperKind.TYPE]: type => {\n                if (!visited.has(type.name) && !(0, graphql_1.isSpecifiedScalarType)(type)) {\n                    if ((0, graphql_1.isUnionType)(type) ||\n                        (0, graphql_1.isInputObjectType)(type) ||\n                        (0, graphql_1.isInterfaceType)(type) ||\n                        (0, graphql_1.isObjectType)(type) ||\n                        (0, graphql_1.isScalarType)(type)) {\n                        // skipUnusedTypesPruning: skip pruning unused types\n                        if (skipUnusedTypesPruning) {\n                            return type;\n                        }\n                        // skipEmptyUnionPruning: skip pruning empty unions\n                        if ((0, graphql_1.isUnionType)(type) && skipEmptyUnionPruning && !Object.keys(type.getTypes()).length) {\n                            return type;\n                        }\n                        if ((0, graphql_1.isInputObjectType)(type) || (0, graphql_1.isInterfaceType)(type) || (0, graphql_1.isObjectType)(type)) {\n                            // skipEmptyCompositeTypePruning: skip pruning object types or interfaces with no fields\n                            if (skipEmptyCompositeTypePruning && !Object.keys(type.getFields()).length) {\n                                return type;\n                            }\n                        }\n                        // skipUnimplementedInterfacesPruning: skip pruning interfaces that are not implemented by any other types\n                        if ((0, graphql_1.isInterfaceType)(type) && skipUnimplementedInterfacesPruning) {\n                            return type;\n                        }\n                    }\n                    prunedTypes.push(type.name);\n                    visited.delete(type.name);\n                    return null;\n                }\n                return type;\n            },\n        });\n    } while (prunedTypes.length); // Might have empty types and need to prune again\n    return prunedSchema;\n}\nexports.pruneSchema = pruneSchema;\nfunction visitSchema(schema) {\n    const queue = []; // queue of nodes to visit\n    // Grab the root types and start there\n    for (const type of (0, rootTypes_js_1.getRootTypes)(schema)) {\n        queue.push(type.name);\n    }\n    return visitQueue(queue, schema);\n}\nfunction visitQueue(queue, schema, visited = new Set()) {\n    // Interfaces encountered that are field return types need to be revisited to add their implementations\n    const revisit = new Map();\n    // Navigate all types starting with pre-queued types (root types)\n    while (queue.length) {\n        const typeName = queue.pop();\n        // Skip types we already visited unless it is an interface type that needs revisiting\n        if (visited.has(typeName) && revisit[typeName] !== true) {\n            continue;\n        }\n        const type = schema.getType(typeName);\n        if (type) {\n            // Get types for union\n            if ((0, graphql_1.isUnionType)(type)) {\n                queue.push(...type.getTypes().map(type => type.name));\n            }\n            // If it is an interface and it is a returned type, grab all implementations so we can use proper __typename in fragments\n            if ((0, graphql_1.isInterfaceType)(type) && revisit[typeName] === true) {\n                queue.push(...(0, get_implementing_types_js_1.getImplementingTypes)(type.name, schema));\n                // No need to revisit this interface again\n                revisit[typeName] = false;\n            }\n            if ((0, graphql_1.isEnumType)(type)) {\n                // Visit enum values directives argument types\n                queue.push(...type.getValues().flatMap(value => {\n                    if (value.astNode) {\n                        return getDirectivesArgumentsTypeNames(schema, value.astNode);\n                    }\n                    return [];\n                }));\n            }\n            // Visit interfaces this type is implementing if they haven't been visited yet\n            if ('getInterfaces' in type) {\n                // Only pushes to queue to visit but not return types\n                queue.push(...type.getInterfaces().map(iface => iface.name));\n            }\n            // If the type has fields visit those field types\n            if ('getFields' in type) {\n                const fields = type.getFields();\n                const entries = Object.entries(fields);\n                if (!entries.length) {\n                    continue;\n                }\n                for (const [, field] of entries) {\n                    if ((0, graphql_1.isObjectType)(type)) {\n                        // Visit arg types and arg directives arguments types\n                        queue.push(...field.args.flatMap(arg => {\n                            const typeNames = [(0, graphql_1.getNamedType)(arg.type).name];\n                            if (arg.astNode) {\n                                typeNames.push(...getDirectivesArgumentsTypeNames(schema, arg.astNode));\n                            }\n                            return typeNames;\n                        }));\n                    }\n                    const namedType = (0, graphql_1.getNamedType)(field.type);\n                    queue.push(namedType.name);\n                    if (field.astNode) {\n                        queue.push(...getDirectivesArgumentsTypeNames(schema, field.astNode));\n                    }\n                    // Interfaces returned on fields need to be revisited to add their implementations\n                    if ((0, graphql_1.isInterfaceType)(namedType) && !(namedType.name in revisit)) {\n                        revisit[namedType.name] = true;\n                    }\n                }\n            }\n            if (type.astNode) {\n                queue.push(...getDirectivesArgumentsTypeNames(schema, type.astNode));\n            }\n            visited.add(typeName); // Mark as visited (and therefore it is used and should be kept)\n        }\n    }\n    return visited;\n}\nfunction getDirectivesArgumentsTypeNames(schema, astNode) {\n    var _a;\n    return ((_a = astNode.directives) !== null && _a !== void 0 ? _a : []).flatMap(directive => { var _a, _b; return (_b = (_a = schema.getDirective(directive.name.value)) === null || _a === void 0 ? void 0 : _a.args.map(arg => (0, graphql_1.getNamedType)(arg.type).name)) !== null && _b !== void 0 ? _b : []; });\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeDeep = void 0;\nconst helpers_js_1 = require(\"./helpers.js\");\nfunction mergeDeep(sources, respectPrototype = false) {\n    const target = sources[0] || {};\n    const output = {};\n    if (respectPrototype) {\n        Object.setPrototypeOf(output, Object.create(Object.getPrototypeOf(target)));\n    }\n    for (const source of sources) {\n        if (isObject(target) && isObject(source)) {\n            if (respectPrototype) {\n                const outputPrototype = Object.getPrototypeOf(output);\n                const sourcePrototype = Object.getPrototypeOf(source);\n                if (sourcePrototype) {\n                    for (const key of Object.getOwnPropertyNames(sourcePrototype)) {\n                        const descriptor = Object.getOwnPropertyDescriptor(sourcePrototype, key);\n                        if ((0, helpers_js_1.isSome)(descriptor)) {\n                            Object.defineProperty(outputPrototype, key, descriptor);\n                        }\n                    }\n                }\n            }\n            for (const key in source) {\n                if (isObject(source[key])) {\n                    if (!(key in output)) {\n                        Object.assign(output, { [key]: source[key] });\n                    }\n                    else {\n                        output[key] = mergeDeep([output[key], source[key]], respectPrototype);\n                    }\n                }\n                else {\n                    Object.assign(output, { [key]: source[key] });\n                }\n            }\n        }\n    }\n    return output;\n}\nexports.mergeDeep = mergeDeep;\nfunction isObject(item) {\n    return item && typeof item === 'object' && !Array.isArray(item);\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseSelectionSet = void 0;\nconst graphql_1 = require(\"graphql\");\nfunction parseSelectionSet(selectionSet, options) {\n    const query = (0, graphql_1.parse)(selectionSet, options).definitions[0];\n    return query.selectionSet;\n}\nexports.parseSelectionSet = parseSelectionSet;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getResponseKeyFromInfo = void 0;\n/**\n * Get the key under which the result of this resolver will be placed in the response JSON. Basically, just\n * resolves aliases.\n * @param info The info argument to the resolver.\n */\nfunction getResponseKeyFromInfo(info) {\n    return info.fieldNodes[0].alias != null ? info.fieldNodes[0].alias.value : info.fieldName;\n}\nexports.getResponseKeyFromInfo = getResponseKeyFromInfo;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.modifyObjectFields = exports.selectObjectFields = exports.removeObjectFields = exports.appendObjectFields = void 0;\nconst graphql_1 = require(\"graphql\");\nconst Interfaces_js_1 = require(\"./Interfaces.js\");\nconst mapSchema_js_1 = require(\"./mapSchema.js\");\nconst addTypes_js_1 = require(\"./addTypes.js\");\nfunction appendObjectFields(schema, typeName, additionalFields) {\n    if (schema.getType(typeName) == null) {\n        return (0, addTypes_js_1.addTypes)(schema, [\n            new graphql_1.GraphQLObjectType({\n                name: typeName,\n                fields: additionalFields,\n            }),\n        ]);\n    }\n    return (0, mapSchema_js_1.mapSchema)(schema, {\n        [Interfaces_js_1.MapperKind.OBJECT_TYPE]: type => {\n            if (type.name === typeName) {\n                const config = type.toConfig();\n                const originalFieldConfigMap = config.fields;\n                const newFieldConfigMap = {};\n                for (const fieldName in originalFieldConfigMap) {\n                    newFieldConfigMap[fieldName] = originalFieldConfigMap[fieldName];\n                }\n                for (const fieldName in additionalFields) {\n                    newFieldConfigMap[fieldName] = additionalFields[fieldName];\n                }\n                return (0, mapSchema_js_1.correctASTNodes)(new graphql_1.GraphQLObjectType({\n                    ...config,\n                    fields: newFieldConfigMap,\n                }));\n            }\n        },\n    });\n}\nexports.appendObjectFields = appendObjectFields;\nfunction removeObjectFields(schema, typeName, testFn) {\n    const removedFields = {};\n    const newSchema = (0, mapSchema_js_1.mapSchema)(schema, {\n        [Interfaces_js_1.MapperKind.OBJECT_TYPE]: type => {\n            if (type.name === typeName) {\n                const config = type.toConfig();\n                const originalFieldConfigMap = config.fields;\n                const newFieldConfigMap = {};\n                for (const fieldName in originalFieldConfigMap) {\n                    const originalFieldConfig = originalFieldConfigMap[fieldName];\n                    if (testFn(fieldName, originalFieldConfig)) {\n                        removedFields[fieldName] = originalFieldConfig;\n                    }\n                    else {\n                        newFieldConfigMap[fieldName] = originalFieldConfig;\n                    }\n                }\n                return (0, mapSchema_js_1.correctASTNodes)(new graphql_1.GraphQLObjectType({\n                    ...config,\n                    fields: newFieldConfigMap,\n                }));\n            }\n        },\n    });\n    return [newSchema, removedFields];\n}\nexports.removeObjectFields = removeObjectFields;\nfunction selectObjectFields(schema, typeName, testFn) {\n    const selectedFields = {};\n    (0, mapSchema_js_1.mapSchema)(schema, {\n        [Interfaces_js_1.MapperKind.OBJECT_TYPE]: type => {\n            if (type.name === typeName) {\n                const config = type.toConfig();\n                const originalFieldConfigMap = config.fields;\n                for (const fieldName in originalFieldConfigMap) {\n                    const originalFieldConfig = originalFieldConfigMap[fieldName];\n                    if (testFn(fieldName, originalFieldConfig)) {\n                        selectedFields[fieldName] = originalFieldConfig;\n                    }\n                }\n            }\n            return undefined;\n        },\n    });\n    return selectedFields;\n}\nexports.selectObjectFields = selectObjectFields;\nfunction modifyObjectFields(schema, typeName, testFn, newFields) {\n    const removedFields = {};\n    const newSchema = (0, mapSchema_js_1.mapSchema)(schema, {\n        [Interfaces_js_1.MapperKind.OBJECT_TYPE]: type => {\n            if (type.name === typeName) {\n                const config = type.toConfig();\n                const originalFieldConfigMap = config.fields;\n                const newFieldConfigMap = {};\n                for (const fieldName in originalFieldConfigMap) {\n                    const originalFieldConfig = originalFieldConfigMap[fieldName];\n                    if (testFn(fieldName, originalFieldConfig)) {\n                        removedFields[fieldName] = originalFieldConfig;\n                    }\n                    else {\n                        newFieldConfigMap[fieldName] = originalFieldConfig;\n                    }\n                }\n                for (const fieldName in newFields) {\n                    const fieldConfig = newFields[fieldName];\n                    newFieldConfigMap[fieldName] = fieldConfig;\n                }\n                return (0, mapSchema_js_1.correctASTNodes)(new graphql_1.GraphQLObjectType({\n                    ...config,\n                    fields: newFieldConfigMap,\n                }));\n            }\n        },\n    });\n    return [newSchema, removedFields];\n}\nexports.modifyObjectFields = modifyObjectFields;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.renameType = void 0;\nconst graphql_1 = require(\"graphql\");\nfunction renameType(type, newTypeName) {\n    if ((0, graphql_1.isObjectType)(type)) {\n        return new graphql_1.GraphQLObjectType({\n            ...type.toConfig(),\n            name: newTypeName,\n            astNode: type.astNode == null\n                ? type.astNode\n                : {\n                    ...type.astNode,\n                    name: {\n                        ...type.astNode.name,\n                        value: newTypeName,\n                    },\n                },\n            extensionASTNodes: type.extensionASTNodes == null\n                ? type.extensionASTNodes\n                : type.extensionASTNodes.map(node => ({\n                    ...node,\n                    name: {\n                        ...node.name,\n                        value: newTypeName,\n                    },\n                })),\n        });\n    }\n    else if ((0, graphql_1.isInterfaceType)(type)) {\n        return new graphql_1.GraphQLInterfaceType({\n            ...type.toConfig(),\n            name: newTypeName,\n            astNode: type.astNode == null\n                ? type.astNode\n                : {\n                    ...type.astNode,\n                    name: {\n                        ...type.astNode.name,\n                        value: newTypeName,\n                    },\n                },\n            extensionASTNodes: type.extensionASTNodes == null\n                ? type.extensionASTNodes\n                : type.extensionASTNodes.map(node => ({\n                    ...node,\n                    name: {\n                        ...node.name,\n                        value: newTypeName,\n                    },\n                })),\n        });\n    }\n    else if ((0, graphql_1.isUnionType)(type)) {\n        return new graphql_1.GraphQLUnionType({\n            ...type.toConfig(),\n            name: newTypeName,\n            astNode: type.astNode == null\n                ? type.astNode\n                : {\n                    ...type.astNode,\n                    name: {\n                        ...type.astNode.name,\n                        value: newTypeName,\n                    },\n                },\n            extensionASTNodes: type.extensionASTNodes == null\n                ? type.extensionASTNodes\n                : type.extensionASTNodes.map(node => ({\n                    ...node,\n                    name: {\n                        ...node.name,\n                        value: newTypeName,\n                    },\n                })),\n        });\n    }\n    else if ((0, graphql_1.isInputObjectType)(type)) {\n        return new graphql_1.GraphQLInputObjectType({\n            ...type.toConfig(),\n            name: newTypeName,\n            astNode: type.astNode == null\n                ? type.astNode\n                : {\n                    ...type.astNode,\n                    name: {\n                        ...type.astNode.name,\n                        value: newTypeName,\n                    },\n                },\n            extensionASTNodes: type.extensionASTNodes == null\n                ? type.extensionASTNodes\n                : type.extensionASTNodes.map(node => ({\n                    ...node,\n                    name: {\n                        ...node.name,\n                        value: newTypeName,\n                    },\n                })),\n        });\n    }\n    else if ((0, graphql_1.isEnumType)(type)) {\n        return new graphql_1.GraphQLEnumType({\n            ...type.toConfig(),\n            name: newTypeName,\n            astNode: type.astNode == null\n                ? type.astNode\n                : {\n                    ...type.astNode,\n                    name: {\n                        ...type.astNode.name,\n                        value: newTypeName,\n                    },\n                },\n            extensionASTNodes: type.extensionASTNodes == null\n                ? type.extensionASTNodes\n                : type.extensionASTNodes.map(node => ({\n                    ...node,\n                    name: {\n                        ...node.name,\n                        value: newTypeName,\n                    },\n                })),\n        });\n    }\n    else if ((0, graphql_1.isScalarType)(type)) {\n        return new graphql_1.GraphQLScalarType({\n            ...type.toConfig(),\n            name: newTypeName,\n            astNode: type.astNode == null\n                ? type.astNode\n                : {\n                    ...type.astNode,\n                    name: {\n                        ...type.astNode.name,\n                        value: newTypeName,\n                    },\n                },\n            extensionASTNodes: type.extensionASTNodes == null\n                ? type.extensionASTNodes\n                : type.extensionASTNodes.map(node => ({\n                    ...node,\n                    name: {\n                        ...node.name,\n                        value: newTypeName,\n                    },\n                })),\n        });\n    }\n    throw new Error(`Unknown type ${type}.`);\n}\nexports.renameType = renameType;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mapAsyncIterator = void 0;\n/**\n * Given an AsyncIterable and a callback function, return an AsyncIterator\n * which produces values mapped via calling the callback function.\n */\nfunction mapAsyncIterator(iterator, callback, rejectCallback) {\n    let $return;\n    let abruptClose;\n    if (typeof iterator.return === 'function') {\n        $return = iterator.return;\n        abruptClose = (error) => {\n            const rethrow = () => Promise.reject(error);\n            return $return.call(iterator).then(rethrow, rethrow);\n        };\n    }\n    function mapResult(result) {\n        return result.done ? result : asyncMapValue(result.value, callback).then(iteratorResult, abruptClose);\n    }\n    let mapReject;\n    if (rejectCallback) {\n        // Capture rejectCallback to ensure it cannot be null.\n        const reject = rejectCallback;\n        mapReject = (error) => asyncMapValue(error, reject).then(iteratorResult, abruptClose);\n    }\n    return {\n        next() {\n            return iterator.next().then(mapResult, mapReject);\n        },\n        return() {\n            return $return\n                ? $return.call(iterator).then(mapResult, mapReject)\n                : Promise.resolve({ value: undefined, done: true });\n        },\n        throw(error) {\n            if (typeof iterator.throw === 'function') {\n                return iterator.throw(error).then(mapResult, mapReject);\n            }\n            return Promise.reject(error).catch(abruptClose);\n        },\n        [Symbol.asyncIterator]() {\n            return this;\n        },\n    };\n}\nexports.mapAsyncIterator = mapAsyncIterator;\nfunction asyncMapValue(value, callback) {\n    return new Promise(resolve => resolve(callback(value)));\n}\nfunction iteratorResult(value) {\n    return { value, done: false };\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createVariableNameGenerator = exports.updateArgument = void 0;\nconst graphql_1 = require(\"graphql\");\nconst astFromType_js_1 = require(\"./astFromType.js\");\nfunction updateArgument(argumentNodes, variableDefinitionsMap, variableValues, argName, varName, type, value) {\n    argumentNodes[argName] = {\n        kind: graphql_1.Kind.ARGUMENT,\n        name: {\n            kind: graphql_1.Kind.NAME,\n            value: argName,\n        },\n        value: {\n            kind: graphql_1.Kind.VARIABLE,\n            name: {\n                kind: graphql_1.Kind.NAME,\n                value: varName,\n            },\n        },\n    };\n    variableDefinitionsMap[varName] = {\n        kind: graphql_1.Kind.VARIABLE_DEFINITION,\n        variable: {\n            kind: graphql_1.Kind.VARIABLE,\n            name: {\n                kind: graphql_1.Kind.NAME,\n                value: varName,\n            },\n        },\n        type: (0, astFromType_js_1.astFromType)(type),\n    };\n    if (value !== undefined) {\n        variableValues[varName] = value;\n        return;\n    }\n    // including the variable in the map with value of `undefined`\n    // will actually be translated by graphql-js into `null`\n    // see https://github.com/graphql/graphql-js/issues/2533\n    if (varName in variableValues) {\n        delete variableValues[varName];\n    }\n}\nexports.updateArgument = updateArgument;\nfunction createVariableNameGenerator(variableDefinitionMap) {\n    let varCounter = 0;\n    return (argName) => {\n        let varName;\n        do {\n            varName = `_v${(varCounter++).toString()}_${argName}`;\n        } while (varName in variableDefinitionMap);\n        return varName;\n    };\n}\nexports.createVariableNameGenerator = createVariableNameGenerator;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.implementsAbstractType = void 0;\nconst graphql_1 = require(\"graphql\");\nfunction implementsAbstractType(schema, typeA, typeB) {\n    if (typeB == null || typeA == null) {\n        return false;\n    }\n    else if (typeA === typeB) {\n        return true;\n    }\n    else if ((0, graphql_1.isCompositeType)(typeA) && (0, graphql_1.isCompositeType)(typeB)) {\n        return (0, graphql_1.doTypesOverlap)(schema, typeA, typeB);\n    }\n    return false;\n}\nexports.implementsAbstractType = implementsAbstractType;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.observableToAsyncIterable = void 0;\nfunction observableToAsyncIterable(observable) {\n    const pullQueue = [];\n    const pushQueue = [];\n    let listening = true;\n    const pushValue = (value) => {\n        if (pullQueue.length !== 0) {\n            // It is safe to use the ! operator here as we check the length.\n            pullQueue.shift()({ value, done: false });\n        }\n        else {\n            pushQueue.push({ value, done: false });\n        }\n    };\n    const pushError = (error) => {\n        if (pullQueue.length !== 0) {\n            // It is safe to use the ! operator here as we check the length.\n            pullQueue.shift()({ value: { errors: [error] }, done: false });\n        }\n        else {\n            pushQueue.push({ value: { errors: [error] }, done: false });\n        }\n    };\n    const pushDone = () => {\n        if (pullQueue.length !== 0) {\n            // It is safe to use the ! operator here as we check the length.\n            pullQueue.shift()({ done: true });\n        }\n        else {\n            pushQueue.push({ done: true });\n        }\n    };\n    const pullValue = () => new Promise(resolve => {\n        if (pushQueue.length !== 0) {\n            const element = pushQueue.shift();\n            // either {value: {errors: [...]}} or {value: ...}\n            resolve(element);\n        }\n        else {\n            pullQueue.push(resolve);\n        }\n    });\n    const subscription = observable.subscribe({\n        next(value) {\n            pushValue(value);\n        },\n        error(err) {\n            pushError(err);\n        },\n        complete() {\n            pushDone();\n        },\n    });\n    const emptyQueue = () => {\n        if (listening) {\n            listening = false;\n            subscription.unsubscribe();\n            for (const resolve of pullQueue) {\n                resolve({ value: undefined, done: true });\n            }\n            pullQueue.length = 0;\n            pushQueue.length = 0;\n        }\n    };\n    return {\n        next() {\n            // return is a defined method, so it is safe to call it.\n            return listening ? pullValue() : this.return();\n        },\n        return() {\n            emptyQueue();\n            return Promise.resolve({ value: undefined, done: true });\n        },\n        throw(error) {\n            emptyQueue();\n            return Promise.reject(error);\n        },\n        [Symbol.asyncIterator]() {\n            return this;\n        },\n    };\n}\nexports.observableToAsyncIterable = observableToAsyncIterable;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getOperationASTFromRequest = exports.getOperationASTFromDocument = void 0;\nconst graphql_1 = require(\"graphql\");\nconst memoize_js_1 = require(\"./memoize.js\");\nfunction getOperationASTFromDocument(documentNode, operationName) {\n    const doc = (0, graphql_1.getOperationAST)(documentNode, operationName);\n    if (!doc) {\n        throw new Error(`Cannot infer operation ${operationName || ''}`);\n    }\n    return doc;\n}\nexports.getOperationASTFromDocument = getOperationASTFromDocument;\nexports.getOperationASTFromRequest = (0, memoize_js_1.memoize1)(function getOperationASTFromRequest(request) {\n    return getOperationASTFromDocument(request.document, request.operationName);\n});\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GraphQLStreamDirective = exports.GraphQLDeferDirective = void 0;\nconst graphql_1 = require(\"graphql\");\n/**\n * Used to conditionally defer fragments.\n */\nexports.GraphQLDeferDirective = new graphql_1.GraphQLDirective({\n    name: 'defer',\n    description: 'Directs the executor to defer this fragment when the `if` argument is true or undefined.',\n    locations: [graphql_1.DirectiveLocation.FRAGMENT_SPREAD, graphql_1.DirectiveLocation.INLINE_FRAGMENT],\n    args: {\n        if: {\n            type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLBoolean),\n            description: 'Deferred when true or undefined.',\n            defaultValue: true,\n        },\n        label: {\n            type: graphql_1.GraphQLString,\n            description: 'Unique name',\n        },\n    },\n});\n/**\n * Used to conditionally stream list fields.\n */\nexports.GraphQLStreamDirective = new graphql_1.GraphQLDirective({\n    name: 'stream',\n    description: 'Directs the executor to stream plural fields when the `if` argument is true or undefined.',\n    locations: [graphql_1.DirectiveLocation.FIELD],\n    args: {\n        if: {\n            type: new graphql_1.GraphQLNonNull(graphql_1.GraphQLBoolean),\n            description: 'Stream when true or undefined.',\n            defaultValue: true,\n        },\n        label: {\n            type: graphql_1.GraphQLString,\n            description: 'Unique name',\n        },\n        initialCount: {\n            defaultValue: 0,\n            type: graphql_1.GraphQLInt,\n            description: 'Number of items to return immediately',\n        },\n    },\n});\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AccumulatorMap = void 0;\n/**\n * ES6 Map with additional `add` method to accumulate items.\n */\nclass AccumulatorMap extends Map {\n    get [Symbol.toStringTag]() {\n        return 'AccumulatorMap';\n    }\n    add(key, item) {\n        const group = this.get(key);\n        if (group === undefined) {\n            this.set(key, [item]);\n        }\n        else {\n            group.push(item);\n        }\n    }\n}\nexports.AccumulatorMap = AccumulatorMap;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.collectSubFields = exports.getDeferValues = exports.getFieldEntryKey = exports.doesFragmentConditionMatch = exports.shouldIncludeNode = exports.collectFields = void 0;\nconst memoize_js_1 = require(\"./memoize.js\");\nconst graphql_1 = require(\"graphql\");\nconst directives_js_1 = require(\"./directives.js\");\nconst AccumulatorMap_js_1 = require(\"./AccumulatorMap.js\");\nfunction collectFieldsImpl(schema, fragments, variableValues, runtimeType, selectionSet, fields, patches, visitedFragmentNames) {\n    for (const selection of selectionSet.selections) {\n        switch (selection.kind) {\n            case graphql_1.Kind.FIELD: {\n                if (!shouldIncludeNode(variableValues, selection)) {\n                    continue;\n                }\n                fields.add(getFieldEntryKey(selection), selection);\n                break;\n            }\n            case graphql_1.Kind.INLINE_FRAGMENT: {\n                if (!shouldIncludeNode(variableValues, selection) ||\n                    !doesFragmentConditionMatch(schema, selection, runtimeType)) {\n                    continue;\n                }\n                const defer = getDeferValues(variableValues, selection);\n                if (defer) {\n                    const patchFields = new AccumulatorMap_js_1.AccumulatorMap();\n                    collectFieldsImpl(schema, fragments, variableValues, runtimeType, selection.selectionSet, patchFields, patches, visitedFragmentNames);\n                    patches.push({\n                        label: defer.label,\n                        fields: patchFields,\n                    });\n                }\n                else {\n                    collectFieldsImpl(schema, fragments, variableValues, runtimeType, selection.selectionSet, fields, patches, visitedFragmentNames);\n                }\n                break;\n            }\n            case graphql_1.Kind.FRAGMENT_SPREAD: {\n                const fragName = selection.name.value;\n                if (!shouldIncludeNode(variableValues, selection)) {\n                    continue;\n                }\n                const defer = getDeferValues(variableValues, selection);\n                if (visitedFragmentNames.has(fragName) && !defer) {\n                    continue;\n                }\n                const fragment = fragments[fragName];\n                if (!fragment || !doesFragmentConditionMatch(schema, fragment, runtimeType)) {\n                    continue;\n                }\n                if (!defer) {\n                    visitedFragmentNames.add(fragName);\n                }\n                if (defer) {\n                    const patchFields = new AccumulatorMap_js_1.AccumulatorMap();\n                    collectFieldsImpl(schema, fragments, variableValues, runtimeType, fragment.selectionSet, patchFields, patches, visitedFragmentNames);\n                    patches.push({\n                        label: defer.label,\n                        fields: patchFields,\n                    });\n                }\n                else {\n                    collectFieldsImpl(schema, fragments, variableValues, runtimeType, fragment.selectionSet, fields, patches, visitedFragmentNames);\n                }\n                break;\n            }\n        }\n    }\n}\n/**\n * Given a selectionSet, collects all of the fields and returns them.\n *\n * CollectFields requires the \"runtime type\" of an object. For a field that\n * returns an Interface or Union type, the \"runtime type\" will be the actual\n * object type returned by that field.\n *\n */\nfunction collectFields(schema, fragments, variableValues, runtimeType, selectionSet) {\n    const fields = new AccumulatorMap_js_1.AccumulatorMap();\n    const patches = [];\n    collectFieldsImpl(schema, fragments, variableValues, runtimeType, selectionSet, fields, patches, new Set());\n    return { fields, patches };\n}\nexports.collectFields = collectFields;\n/**\n * Determines if a field should be included based on the `@include` and `@skip`\n * directives, where `@skip` has higher precedence than `@include`.\n */\nfunction shouldIncludeNode(variableValues, node) {\n    const skip = (0, graphql_1.getDirectiveValues)(graphql_1.GraphQLSkipDirective, node, variableValues);\n    if ((skip === null || skip === void 0 ? void 0 : skip['if']) === true) {\n        return false;\n    }\n    const include = (0, graphql_1.getDirectiveValues)(graphql_1.GraphQLIncludeDirective, node, variableValues);\n    if ((include === null || include === void 0 ? void 0 : include['if']) === false) {\n        return false;\n    }\n    return true;\n}\nexports.shouldIncludeNode = shouldIncludeNode;\n/**\n * Determines if a fragment is applicable to the given type.\n */\nfunction doesFragmentConditionMatch(schema, fragment, type) {\n    const typeConditionNode = fragment.typeCondition;\n    if (!typeConditionNode) {\n        return true;\n    }\n    const conditionalType = (0, graphql_1.typeFromAST)(schema, typeConditionNode);\n    if (conditionalType === type) {\n        return true;\n    }\n    if ((0, graphql_1.isAbstractType)(conditionalType)) {\n        const possibleTypes = schema.getPossibleTypes(conditionalType);\n        return possibleTypes.includes(type);\n    }\n    return false;\n}\nexports.doesFragmentConditionMatch = doesFragmentConditionMatch;\n/**\n * Implements the logic to compute the key of a given field's entry\n */\nfunction getFieldEntryKey(node) {\n    return node.alias ? node.alias.value : node.name.value;\n}\nexports.getFieldEntryKey = getFieldEntryKey;\n/**\n * Returns an object containing the `@defer` arguments if a field should be\n * deferred based on the experimental flag, defer directive present and\n * not disabled by the \"if\" argument.\n */\nfunction getDeferValues(variableValues, node) {\n    const defer = (0, graphql_1.getDirectiveValues)(directives_js_1.GraphQLDeferDirective, node, variableValues);\n    if (!defer) {\n        return;\n    }\n    if (defer['if'] === false) {\n        return;\n    }\n    return {\n        label: typeof defer['label'] === 'string' ? defer['label'] : undefined,\n    };\n}\nexports.getDeferValues = getDeferValues;\n/**\n * Given an array of field nodes, collects all of the subfields of the passed\n * in fields, and returns them at the end.\n *\n * CollectSubFields requires the \"return type\" of an object. For a field that\n * returns an Interface or Union type, the \"return type\" will be the actual\n * object type returned by that field.\n *\n */\nexports.collectSubFields = (0, memoize_js_1.memoize5)(function collectSubfields(schema, fragments, variableValues, returnType, fieldNodes) {\n    const subFieldNodes = new AccumulatorMap_js_1.AccumulatorMap();\n    const visitedFragmentNames = new Set();\n    const subPatches = [];\n    const subFieldsAndPatches = {\n        fields: subFieldNodes,\n        patches: subPatches,\n    };\n    for (const node of fieldNodes) {\n        if (node.selectionSet) {\n            collectFieldsImpl(schema, fragments, variableValues, returnType, node.selectionSet, subFieldNodes, subPatches, visitedFragmentNames);\n        }\n    }\n    return subFieldsAndPatches;\n});\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.visitResult = exports.visitErrors = exports.visitData = void 0;\nconst getOperationASTFromRequest_js_1 = require(\"./getOperationASTFromRequest.js\");\nconst graphql_1 = require(\"graphql\");\nconst collectFields_js_1 = require(\"./collectFields.js\");\nfunction visitData(data, enter, leave) {\n    if (Array.isArray(data)) {\n        return data.map(value => visitData(value, enter, leave));\n    }\n    else if (typeof data === 'object') {\n        const newData = enter != null ? enter(data) : data;\n        if (newData != null) {\n            for (const key in newData) {\n                const value = newData[key];\n                Object.defineProperty(newData, key, {\n                    value: visitData(value, enter, leave),\n                });\n            }\n        }\n        return leave != null ? leave(newData) : newData;\n    }\n    return data;\n}\nexports.visitData = visitData;\nfunction visitErrors(errors, visitor) {\n    return errors.map(error => visitor(error));\n}\nexports.visitErrors = visitErrors;\nfunction visitResult(result, request, schema, resultVisitorMap, errorVisitorMap) {\n    const fragments = request.document.definitions.reduce((acc, def) => {\n        if (def.kind === graphql_1.Kind.FRAGMENT_DEFINITION) {\n            acc[def.name.value] = def;\n        }\n        return acc;\n    }, {});\n    const variableValues = request.variables || {};\n    const errorInfo = {\n        segmentInfoMap: new Map(),\n        unpathedErrors: new Set(),\n    };\n    const data = result.data;\n    const errors = result.errors;\n    const visitingErrors = errors != null && errorVisitorMap != null;\n    const operationDocumentNode = (0, getOperationASTFromRequest_js_1.getOperationASTFromRequest)(request);\n    if (data != null && operationDocumentNode != null) {\n        result.data = visitRoot(data, operationDocumentNode, schema, fragments, variableValues, resultVisitorMap, visitingErrors ? errors : undefined, errorInfo);\n    }\n    if (errors != null && errorVisitorMap) {\n        result.errors = visitErrorsByType(errors, errorVisitorMap, errorInfo);\n    }\n    return result;\n}\nexports.visitResult = visitResult;\nfunction visitErrorsByType(errors, errorVisitorMap, errorInfo) {\n    const segmentInfoMap = errorInfo.segmentInfoMap;\n    const unpathedErrors = errorInfo.unpathedErrors;\n    const unpathedErrorVisitor = errorVisitorMap['__unpathed'];\n    return errors.map(originalError => {\n        const pathSegmentsInfo = segmentInfoMap.get(originalError);\n        const newError = pathSegmentsInfo == null\n            ? originalError\n            : pathSegmentsInfo.reduceRight((acc, segmentInfo) => {\n                const typeName = segmentInfo.type.name;\n                const typeVisitorMap = errorVisitorMap[typeName];\n                if (typeVisitorMap == null) {\n                    return acc;\n                }\n                const errorVisitor = typeVisitorMap[segmentInfo.fieldName];\n                return errorVisitor == null ? acc : errorVisitor(acc, segmentInfo.pathIndex);\n            }, originalError);\n        if (unpathedErrorVisitor && unpathedErrors.has(originalError)) {\n            return unpathedErrorVisitor(newError);\n        }\n        return newError;\n    });\n}\nfunction getOperationRootType(schema, operationDef) {\n    switch (operationDef.operation) {\n        case 'query':\n            return schema.getQueryType();\n        case 'mutation':\n            return schema.getMutationType();\n        case 'subscription':\n            return schema.getSubscriptionType();\n    }\n}\nfunction visitRoot(root, operation, schema, fragments, variableValues, resultVisitorMap, errors, errorInfo) {\n    const operationRootType = getOperationRootType(schema, operation);\n    const { fields: collectedFields } = (0, collectFields_js_1.collectFields)(schema, fragments, variableValues, operationRootType, operation.selectionSet);\n    return visitObjectValue(root, operationRootType, collectedFields, schema, fragments, variableValues, resultVisitorMap, 0, errors, errorInfo);\n}\nfunction visitObjectValue(object, type, fieldNodeMap, schema, fragments, variableValues, resultVisitorMap, pathIndex, errors, errorInfo) {\n    var _a;\n    const fieldMap = type.getFields();\n    const typeVisitorMap = resultVisitorMap === null || resultVisitorMap === void 0 ? void 0 : resultVisitorMap[type.name];\n    const enterObject = typeVisitorMap === null || typeVisitorMap === void 0 ? void 0 : typeVisitorMap.__enter;\n    const newObject = enterObject != null ? enterObject(object) : object;\n    let sortedErrors;\n    let errorMap = null;\n    if (errors != null) {\n        sortedErrors = sortErrorsByPathSegment(errors, pathIndex);\n        errorMap = sortedErrors.errorMap;\n        for (const error of sortedErrors.unpathedErrors) {\n            errorInfo.unpathedErrors.add(error);\n        }\n    }\n    for (const [responseKey, subFieldNodes] of fieldNodeMap) {\n        const fieldName = subFieldNodes[0].name.value;\n        let fieldType = (_a = fieldMap[fieldName]) === null || _a === void 0 ? void 0 : _a.type;\n        if (fieldType == null) {\n            switch (fieldName) {\n                case '__typename':\n                    fieldType = graphql_1.TypeNameMetaFieldDef.type;\n                    break;\n                case '__schema':\n                    fieldType = graphql_1.SchemaMetaFieldDef.type;\n                    break;\n                case '__type':\n                    fieldType = graphql_1.TypeMetaFieldDef.type;\n                    break;\n            }\n        }\n        const newPathIndex = pathIndex + 1;\n        let fieldErrors;\n        if (errorMap) {\n            fieldErrors = errorMap[responseKey];\n            if (fieldErrors != null) {\n                delete errorMap[responseKey];\n            }\n            addPathSegmentInfo(type, fieldName, newPathIndex, fieldErrors, errorInfo);\n        }\n        const newValue = visitFieldValue(object[responseKey], fieldType, subFieldNodes, schema, fragments, variableValues, resultVisitorMap, newPathIndex, fieldErrors, errorInfo);\n        updateObject(newObject, responseKey, newValue, typeVisitorMap, fieldName);\n    }\n    const oldTypename = newObject.__typename;\n    if (oldTypename != null) {\n        updateObject(newObject, '__typename', oldTypename, typeVisitorMap, '__typename');\n    }\n    if (errorMap) {\n        for (const errorsKey in errorMap) {\n            const errors = errorMap[errorsKey];\n            for (const error of errors) {\n                errorInfo.unpathedErrors.add(error);\n            }\n        }\n    }\n    const leaveObject = typeVisitorMap === null || typeVisitorMap === void 0 ? void 0 : typeVisitorMap.__leave;\n    return leaveObject != null ? leaveObject(newObject) : newObject;\n}\nfunction updateObject(object, responseKey, newValue, typeVisitorMap, fieldName) {\n    if (typeVisitorMap == null) {\n        object[responseKey] = newValue;\n        return;\n    }\n    const fieldVisitor = typeVisitorMap[fieldName];\n    if (fieldVisitor == null) {\n        object[responseKey] = newValue;\n        return;\n    }\n    const visitedValue = fieldVisitor(newValue);\n    if (visitedValue === undefined) {\n        delete object[responseKey];\n        return;\n    }\n    object[responseKey] = visitedValue;\n}\nfunction visitListValue(list, returnType, fieldNodes, schema, fragments, variableValues, resultVisitorMap, pathIndex, errors, errorInfo) {\n    return list.map(listMember => visitFieldValue(listMember, returnType, fieldNodes, schema, fragments, variableValues, resultVisitorMap, pathIndex + 1, errors, errorInfo));\n}\nfunction visitFieldValue(value, returnType, fieldNodes, schema, fragments, variableValues, resultVisitorMap, pathIndex, errors = [], errorInfo) {\n    if (value == null) {\n        return value;\n    }\n    const nullableType = (0, graphql_1.getNullableType)(returnType);\n    if ((0, graphql_1.isListType)(nullableType)) {\n        return visitListValue(value, nullableType.ofType, fieldNodes, schema, fragments, variableValues, resultVisitorMap, pathIndex, errors, errorInfo);\n    }\n    else if ((0, graphql_1.isAbstractType)(nullableType)) {\n        const finalType = schema.getType(value.__typename);\n        const { fields: collectedFields } = (0, collectFields_js_1.collectSubFields)(schema, fragments, variableValues, finalType, fieldNodes);\n        return visitObjectValue(value, finalType, collectedFields, schema, fragments, variableValues, resultVisitorMap, pathIndex, errors, errorInfo);\n    }\n    else if ((0, graphql_1.isObjectType)(nullableType)) {\n        const { fields: collectedFields } = (0, collectFields_js_1.collectSubFields)(schema, fragments, variableValues, nullableType, fieldNodes);\n        return visitObjectValue(value, nullableType, collectedFields, schema, fragments, variableValues, resultVisitorMap, pathIndex, errors, errorInfo);\n    }\n    const typeVisitorMap = resultVisitorMap === null || resultVisitorMap === void 0 ? void 0 : resultVisitorMap[nullableType.name];\n    if (typeVisitorMap == null) {\n        return value;\n    }\n    const visitedValue = typeVisitorMap(value);\n    return visitedValue === undefined ? value : visitedValue;\n}\nfunction sortErrorsByPathSegment(errors, pathIndex) {\n    var _a;\n    const errorMap = Object.create(null);\n    const unpathedErrors = new Set();\n    for (const error of errors) {\n        const pathSegment = (_a = error.path) === null || _a === void 0 ? void 0 : _a[pathIndex];\n        if (pathSegment == null) {\n            unpathedErrors.add(error);\n            continue;\n        }\n        if (pathSegment in errorMap) {\n            errorMap[pathSegment].push(error);\n        }\n        else {\n            errorMap[pathSegment] = [error];\n        }\n    }\n    return {\n        errorMap,\n        unpathedErrors,\n    };\n}\nfunction addPathSegmentInfo(type, fieldName, pathIndex, errors = [], errorInfo) {\n    for (const error of errors) {\n        const segmentInfo = {\n            type,\n            fieldName,\n            pathIndex,\n        };\n        const pathSegmentsInfo = errorInfo.segmentInfoMap.get(error);\n        if (pathSegmentsInfo == null) {\n            errorInfo.segmentInfoMap.set(error, [segmentInfo]);\n        }\n        else {\n            pathSegmentsInfo.push(segmentInfo);\n        }\n    }\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.valueMatchesCriteria = void 0;\nfunction valueMatchesCriteria(value, criteria) {\n    if (value == null) {\n        return value === criteria;\n    }\n    else if (Array.isArray(value)) {\n        return Array.isArray(criteria) && value.every((val, index) => valueMatchesCriteria(val, criteria[index]));\n    }\n    else if (typeof value === 'object') {\n        return (typeof criteria === 'object' &&\n            criteria &&\n            Object.keys(criteria).every(propertyName => valueMatchesCriteria(value[propertyName], criteria[propertyName])));\n    }\n    else if (criteria instanceof RegExp) {\n        return criteria.test(value);\n    }\n    return value === criteria;\n}\nexports.valueMatchesCriteria = valueMatchesCriteria;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isAsyncIterable = void 0;\nfunction isAsyncIterable(value) {\n    return (typeof value === 'object' &&\n        value != null &&\n        Symbol.asyncIterator in value &&\n        typeof value[Symbol.asyncIterator] === 'function');\n}\nexports.isAsyncIterable = isAsyncIterable;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isDocumentNode = void 0;\nconst graphql_1 = require(\"graphql\");\nfunction isDocumentNode(object) {\n    return object && typeof object === 'object' && 'kind' in object && object.kind === graphql_1.Kind.DOCUMENT;\n}\nexports.isDocumentNode = isDocumentNode;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.withCancel = exports.getAsyncIterableWithCancel = exports.getAsyncIteratorWithCancel = void 0;\nconst memoize_js_1 = require(\"./memoize.js\");\nasync function defaultAsyncIteratorReturn(value) {\n    return { value, done: true };\n}\nconst proxyMethodFactory = (0, memoize_js_1.memoize2)(function proxyMethodFactory(target, targetMethod) {\n    return function proxyMethod(...args) {\n        return Reflect.apply(targetMethod, target, args);\n    };\n});\nfunction getAsyncIteratorWithCancel(asyncIterator, onCancel) {\n    return new Proxy(asyncIterator, {\n        has(asyncIterator, prop) {\n            if (prop === 'return') {\n                return true;\n            }\n            return Reflect.has(asyncIterator, prop);\n        },\n        get(asyncIterator, prop, receiver) {\n            const existingPropValue = Reflect.get(asyncIterator, prop, receiver);\n            if (prop === 'return') {\n                const existingReturn = existingPropValue || defaultAsyncIteratorReturn;\n                return async function returnWithCancel(value) {\n                    const returnValue = await onCancel(value);\n                    return Reflect.apply(existingReturn, asyncIterator, [returnValue]);\n                };\n            }\n            else if (typeof existingPropValue === 'function') {\n                return proxyMethodFactory(asyncIterator, existingPropValue);\n            }\n            return existingPropValue;\n        },\n    });\n}\nexports.getAsyncIteratorWithCancel = getAsyncIteratorWithCancel;\nfunction getAsyncIterableWithCancel(asyncIterable, onCancel) {\n    return new Proxy(asyncIterable, {\n        get(asyncIterable, prop, receiver) {\n            const existingPropValue = Reflect.get(asyncIterable, prop, receiver);\n            if (Symbol.asyncIterator === prop) {\n                return function asyncIteratorFactory() {\n                    const asyncIterator = Reflect.apply(existingPropValue, asyncIterable, []);\n                    return getAsyncIteratorWithCancel(asyncIterator, onCancel);\n                };\n            }\n            else if (typeof existingPropValue === 'function') {\n                return proxyMethodFactory(asyncIterable, existingPropValue);\n            }\n            return existingPropValue;\n        },\n    });\n}\nexports.getAsyncIterableWithCancel = getAsyncIterableWithCancel;\nexports.withCancel = getAsyncIterableWithCancel;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fixSchemaAst = void 0;\nconst graphql_1 = require(\"graphql\");\nconst print_schema_with_directives_js_1 = require(\"./print-schema-with-directives.js\");\nfunction buildFixedSchema(schema, options) {\n    const document = (0, print_schema_with_directives_js_1.getDocumentNodeFromSchema)(schema);\n    return (0, graphql_1.buildASTSchema)(document, {\n        ...(options || {}),\n    });\n}\nfunction fixSchemaAst(schema, options) {\n    // eslint-disable-next-line no-undef-init\n    let schemaWithValidAst = undefined;\n    if (!schema.astNode || !schema.extensionASTNodes) {\n        schemaWithValidAst = buildFixedSchema(schema, options);\n    }\n    if (!schema.astNode && (schemaWithValidAst === null || schemaWithValidAst === void 0 ? void 0 : schemaWithValidAst.astNode)) {\n        schema.astNode = schemaWithValidAst.astNode;\n    }\n    if (!schema.extensionASTNodes && (schemaWithValidAst === null || schemaWithValidAst === void 0 ? void 0 : schemaWithValidAst.astNode)) {\n        schema.extensionASTNodes = schemaWithValidAst.extensionASTNodes;\n    }\n    return schema;\n}\nexports.fixSchemaAst = fixSchemaAst;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.extractExtensionsFromSchema = void 0;\nconst mapSchema_js_1 = require(\"./mapSchema.js\");\nconst Interfaces_js_1 = require(\"./Interfaces.js\");\nfunction extractExtensionsFromSchema(schema) {\n    const result = {\n        schemaExtensions: schema.extensions || {},\n        types: {},\n    };\n    (0, mapSchema_js_1.mapSchema)(schema, {\n        [Interfaces_js_1.MapperKind.OBJECT_TYPE]: type => {\n            result.types[type.name] = { fields: {}, type: 'object', extensions: type.extensions || {} };\n            return type;\n        },\n        [Interfaces_js_1.MapperKind.INTERFACE_TYPE]: type => {\n            result.types[type.name] = { fields: {}, type: 'interface', extensions: type.extensions || {} };\n            return type;\n        },\n        [Interfaces_js_1.MapperKind.FIELD]: (field, fieldName, typeName) => {\n            result.types[typeName].fields[fieldName] = {\n                arguments: {},\n                extensions: field.extensions || {},\n            };\n            const args = field.args;\n            if (args != null) {\n                for (const argName in args) {\n                    result.types[typeName].fields[fieldName].arguments[argName] =\n                        args[argName].extensions || {};\n                }\n            }\n            return field;\n        },\n        [Interfaces_js_1.MapperKind.ENUM_TYPE]: type => {\n            result.types[type.name] = { values: {}, type: 'enum', extensions: type.extensions || {} };\n            return type;\n        },\n        [Interfaces_js_1.MapperKind.ENUM_VALUE]: (value, typeName, _schema, valueName) => {\n            result.types[typeName].values[valueName] = value.extensions || {};\n            return value;\n        },\n        [Interfaces_js_1.MapperKind.SCALAR_TYPE]: type => {\n            result.types[type.name] = { type: 'scalar', extensions: type.extensions || {} };\n            return type;\n        },\n        [Interfaces_js_1.MapperKind.UNION_TYPE]: type => {\n            result.types[type.name] = { type: 'union', extensions: type.extensions || {} };\n            return type;\n        },\n        [Interfaces_js_1.MapperKind.INPUT_OBJECT_TYPE]: type => {\n            result.types[type.name] = { fields: {}, type: 'input', extensions: type.extensions || {} };\n            return type;\n        },\n        [Interfaces_js_1.MapperKind.INPUT_OBJECT_FIELD]: (field, fieldName, typeName) => {\n            result.types[typeName].fields[fieldName] = {\n                extensions: field.extensions || {},\n            };\n            return field;\n        },\n    });\n    return result;\n}\nexports.extractExtensionsFromSchema = extractExtensionsFromSchema;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.printPathArray = exports.pathToArray = exports.addPath = void 0;\n/**\n * Given a Path and a key, return a new Path containing the new key.\n */\nfunction addPath(prev, key, typename) {\n    return { prev, key, typename };\n}\nexports.addPath = addPath;\n/**\n * Given a Path, return an Array of the path keys.\n */\nfunction pathToArray(path) {\n    const flattened = [];\n    let curr = path;\n    while (curr) {\n        flattened.push(curr.key);\n        curr = curr.prev;\n    }\n    return flattened.reverse();\n}\nexports.pathToArray = pathToArray;\n/**\n * Build a string describing the path.\n */\nfunction printPathArray(path) {\n    return path.map(key => (typeof key === 'number' ? '[' + key.toString() + ']' : '.' + key)).join('');\n}\nexports.printPathArray = printPathArray;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./loaders.js\"), exports);\ntslib_1.__exportStar(require(\"./helpers.js\"), exports);\ntslib_1.__exportStar(require(\"./get-directives.js\"), exports);\ntslib_1.__exportStar(require(\"./get-fields-with-directives.js\"), exports);\ntslib_1.__exportStar(require(\"./get-arguments-with-directives.js\"), exports);\ntslib_1.__exportStar(require(\"./get-implementing-types.js\"), exports);\ntslib_1.__exportStar(require(\"./print-schema-with-directives.js\"), exports);\ntslib_1.__exportStar(require(\"./get-fields-with-directives.js\"), exports);\ntslib_1.__exportStar(require(\"./validate-documents.js\"), exports);\ntslib_1.__exportStar(require(\"./parse-graphql-json.js\"), exports);\ntslib_1.__exportStar(require(\"./parse-graphql-sdl.js\"), exports);\ntslib_1.__exportStar(require(\"./build-operation-for-field.js\"), exports);\ntslib_1.__exportStar(require(\"./types.js\"), exports);\ntslib_1.__exportStar(require(\"./filterSchema.js\"), exports);\ntslib_1.__exportStar(require(\"./heal.js\"), exports);\ntslib_1.__exportStar(require(\"./getResolversFromSchema.js\"), exports);\ntslib_1.__exportStar(require(\"./forEachField.js\"), exports);\ntslib_1.__exportStar(require(\"./forEachDefaultValue.js\"), exports);\ntslib_1.__exportStar(require(\"./mapSchema.js\"), exports);\ntslib_1.__exportStar(require(\"./addTypes.js\"), exports);\ntslib_1.__exportStar(require(\"./rewire.js\"), exports);\ntslib_1.__exportStar(require(\"./prune.js\"), exports);\ntslib_1.__exportStar(require(\"./mergeDeep.js\"), exports);\ntslib_1.__exportStar(require(\"./Interfaces.js\"), exports);\ntslib_1.__exportStar(require(\"./stub.js\"), exports);\ntslib_1.__exportStar(require(\"./selectionSets.js\"), exports);\ntslib_1.__exportStar(require(\"./getResponseKeyFromInfo.js\"), exports);\ntslib_1.__exportStar(require(\"./fields.js\"), exports);\ntslib_1.__exportStar(require(\"./renameType.js\"), exports);\ntslib_1.__exportStar(require(\"./transformInputValue.js\"), exports);\ntslib_1.__exportStar(require(\"./mapAsyncIterator.js\"), exports);\ntslib_1.__exportStar(require(\"./updateArgument.js\"), exports);\ntslib_1.__exportStar(require(\"./implementsAbstractType.js\"), exports);\ntslib_1.__exportStar(require(\"./errors.js\"), exports);\ntslib_1.__exportStar(require(\"./observableToAsyncIterable.js\"), exports);\ntslib_1.__exportStar(require(\"./visitResult.js\"), exports);\ntslib_1.__exportStar(require(\"./getArgumentValues.js\"), exports);\ntslib_1.__exportStar(require(\"./valueMatchesCriteria.js\"), exports);\ntslib_1.__exportStar(require(\"./isAsyncIterable.js\"), exports);\ntslib_1.__exportStar(require(\"./isDocumentNode.js\"), exports);\ntslib_1.__exportStar(require(\"./astFromValueUntyped.js\"), exports);\ntslib_1.__exportStar(require(\"./executor.js\"), exports);\ntslib_1.__exportStar(require(\"./withCancel.js\"), exports);\ntslib_1.__exportStar(require(\"./AggregateError.js\"), exports);\ntslib_1.__exportStar(require(\"./rootTypes.js\"), exports);\ntslib_1.__exportStar(require(\"./comments.js\"), exports);\ntslib_1.__exportStar(require(\"./collectFields.js\"), exports);\ntslib_1.__exportStar(require(\"./inspect.js\"), exports);\ntslib_1.__exportStar(require(\"./memoize.js\"), exports);\ntslib_1.__exportStar(require(\"./fixSchemaAst.js\"), exports);\ntslib_1.__exportStar(require(\"./getOperationASTFromRequest.js\"), exports);\ntslib_1.__exportStar(require(\"./extractExtensionsFromSchema.js\"), exports);\ntslib_1.__exportStar(require(\"./Path.js\"), exports);\ntslib_1.__exportStar(require(\"./jsutils.js\"), exports);\ntslib_1.__exportStar(require(\"./directives.js\"), exports);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.assertResolversPresent = void 0;\nconst graphql_1 = require(\"graphql\");\nconst utils_1 = require(\"@graphql-tools/utils\");\nfunction assertResolversPresent(schema, resolverValidationOptions = {}) {\n    const { requireResolversForArgs, requireResolversForNonScalar, requireResolversForAllFields } = resolverValidationOptions;\n    if (requireResolversForAllFields && (requireResolversForArgs || requireResolversForNonScalar)) {\n        throw new TypeError('requireResolversForAllFields takes precedence over the more specific assertions. ' +\n            'Please configure either requireResolversForAllFields or requireResolversForArgs / ' +\n            'requireResolversForNonScalar, but not a combination of them.');\n    }\n    (0, utils_1.forEachField)(schema, (field, typeName, fieldName) => {\n        // requires a resolver for *every* field.\n        if (requireResolversForAllFields) {\n            expectResolver('requireResolversForAllFields', requireResolversForAllFields, field, typeName, fieldName);\n        }\n        // requires a resolver on every field that has arguments\n        if (requireResolversForArgs && field.args.length > 0) {\n            expectResolver('requireResolversForArgs', requireResolversForArgs, field, typeName, fieldName);\n        }\n        // requires a resolver on every field that returns a non-scalar type\n        if (requireResolversForNonScalar !== 'ignore' && !(0, graphql_1.isScalarType)((0, graphql_1.getNamedType)(field.type))) {\n            expectResolver('requireResolversForNonScalar', requireResolversForNonScalar, field, typeName, fieldName);\n        }\n    });\n}\nexports.assertResolversPresent = assertResolversPresent;\nfunction expectResolver(validator, behavior, field, typeName, fieldName) {\n    if (!field.resolve) {\n        const message = `Resolver missing for \"${typeName}.${fieldName}\".\nTo disable this validator, use:\n  resolverValidationOptions: {\n    ${validator}: 'ignore'\n  }`;\n        if (behavior === 'error') {\n            throw new Error(message);\n        }\n        if (behavior === 'warn') {\n            console.warn(message);\n        }\n        return;\n    }\n    if (typeof field.resolve !== 'function') {\n        throw new Error(`Resolver \"${typeName}.${fieldName}\" must be a function`);\n    }\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.chainResolvers = void 0;\nconst graphql_1 = require(\"graphql\");\nfunction chainResolvers(resolvers) {\n    return (root, args, ctx, info) => resolvers.reduce((prev, curResolver) => {\n        if (curResolver != null) {\n            return curResolver(prev, args, ctx, info);\n        }\n        return (0, graphql_1.defaultFieldResolver)(prev, args, ctx, info);\n    }, root);\n}\nexports.chainResolvers = chainResolvers;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.checkForResolveTypeResolver = void 0;\nconst utils_1 = require(\"@graphql-tools/utils\");\n// If we have any union or interface types throw if no there is no resolveType resolver\nfunction checkForResolveTypeResolver(schema, requireResolversForResolveType) {\n    (0, utils_1.mapSchema)(schema, {\n        [utils_1.MapperKind.ABSTRACT_TYPE]: type => {\n            if (!type.resolveType) {\n                const message = `Type \"${type.name}\" is missing a \"__resolveType\" resolver. Pass 'ignore' into ` +\n                    '\"resolverValidationOptions.requireResolversForResolveType\" to disable this error.';\n                if (requireResolversForResolveType === 'error') {\n                    throw new Error(message);\n                }\n                if (requireResolversForResolveType === 'warn') {\n                    console.warn(message);\n                }\n            }\n            return undefined;\n        },\n    });\n}\nexports.checkForResolveTypeResolver = checkForResolveTypeResolver;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.extendResolversFromInterfaces = void 0;\nfunction extendResolversFromInterfaces(schema, resolvers) {\n    const extendedResolvers = {};\n    const typeMap = schema.getTypeMap();\n    for (const typeName in typeMap) {\n        const type = typeMap[typeName];\n        if ('getInterfaces' in type) {\n            extendedResolvers[typeName] = {};\n            for (const iFace of type.getInterfaces()) {\n                if (resolvers[iFace.name]) {\n                    for (const fieldName in resolvers[iFace.name]) {\n                        if (fieldName === '__isTypeOf' || !fieldName.startsWith('__')) {\n                            extendedResolvers[typeName][fieldName] = resolvers[iFace.name][fieldName];\n                        }\n                    }\n                }\n            }\n            const typeResolvers = resolvers[typeName];\n            extendedResolvers[typeName] = {\n                ...extendedResolvers[typeName],\n                ...typeResolvers,\n            };\n        }\n        else {\n            const typeResolvers = resolvers[typeName];\n            if (typeResolvers != null) {\n                extendedResolvers[typeName] = typeResolvers;\n            }\n        }\n    }\n    return extendedResolvers;\n}\nexports.extendResolversFromInterfaces = extendResolversFromInterfaces;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.addResolversToSchema = void 0;\nconst graphql_1 = require(\"graphql\");\nconst utils_1 = require(\"@graphql-tools/utils\");\nconst checkForResolveTypeResolver_js_1 = require(\"./checkForResolveTypeResolver.js\");\nconst extendResolversFromInterfaces_js_1 = require(\"./extendResolversFromInterfaces.js\");\nfunction addResolversToSchema({ schema, resolvers: inputResolvers, defaultFieldResolver, resolverValidationOptions = {}, inheritResolversFromInterfaces = false, updateResolversInPlace = false, }) {\n    const { requireResolversToMatchSchema = 'error', requireResolversForResolveType } = resolverValidationOptions;\n    const resolvers = inheritResolversFromInterfaces\n        ? (0, extendResolversFromInterfaces_js_1.extendResolversFromInterfaces)(schema, inputResolvers)\n        : inputResolvers;\n    for (const typeName in resolvers) {\n        const resolverValue = resolvers[typeName];\n        const resolverType = typeof resolverValue;\n        if (resolverType !== 'object') {\n            throw new Error(`\"${typeName}\" defined in resolvers, but has invalid value \"${resolverValue}\". The resolver's value must be of type object.`);\n        }\n        const type = schema.getType(typeName);\n        if (type == null) {\n            if (requireResolversToMatchSchema === 'ignore') {\n                continue;\n            }\n            throw new Error(`\"${typeName}\" defined in resolvers, but not in schema`);\n        }\n        else if ((0, graphql_1.isSpecifiedScalarType)(type)) {\n            // allow -- without recommending -- overriding of specified scalar types\n            for (const fieldName in resolverValue) {\n                if (fieldName.startsWith('__')) {\n                    type[fieldName.substring(2)] = resolverValue[fieldName];\n                }\n                else {\n                    type[fieldName] = resolverValue[fieldName];\n                }\n            }\n        }\n        else if ((0, graphql_1.isEnumType)(type)) {\n            const values = type.getValues();\n            for (const fieldName in resolverValue) {\n                if (!fieldName.startsWith('__') &&\n                    !values.some(value => value.name === fieldName) &&\n                    requireResolversToMatchSchema &&\n                    requireResolversToMatchSchema !== 'ignore') {\n                    throw new Error(`${type.name}.${fieldName} was defined in resolvers, but not present within ${type.name}`);\n                }\n            }\n        }\n        else if ((0, graphql_1.isUnionType)(type)) {\n            for (const fieldName in resolverValue) {\n                if (!fieldName.startsWith('__') &&\n                    requireResolversToMatchSchema &&\n                    requireResolversToMatchSchema !== 'ignore') {\n                    throw new Error(`${type.name}.${fieldName} was defined in resolvers, but ${type.name} is not an object or interface type`);\n                }\n            }\n        }\n        else if ((0, graphql_1.isObjectType)(type) || (0, graphql_1.isInterfaceType)(type)) {\n            for (const fieldName in resolverValue) {\n                if (!fieldName.startsWith('__')) {\n                    const fields = type.getFields();\n                    const field = fields[fieldName];\n                    if (field == null) {\n                        // Field present in resolver but not in schema\n                        if (requireResolversToMatchSchema && requireResolversToMatchSchema !== 'ignore') {\n                            throw new Error(`${typeName}.${fieldName} defined in resolvers, but not in schema`);\n                        }\n                    }\n                    else {\n                        // Field present in both the resolver and schema\n                        const fieldResolve = resolverValue[fieldName];\n                        if (typeof fieldResolve !== 'function' && typeof fieldResolve !== 'object') {\n                            throw new Error(`Resolver ${typeName}.${fieldName} must be object or function`);\n                        }\n                    }\n                }\n            }\n        }\n    }\n    schema = updateResolversInPlace\n        ? addResolversToExistingSchema(schema, resolvers, defaultFieldResolver)\n        : createNewSchemaWithResolvers(schema, resolvers, defaultFieldResolver);\n    if (requireResolversForResolveType && requireResolversForResolveType !== 'ignore') {\n        (0, checkForResolveTypeResolver_js_1.checkForResolveTypeResolver)(schema, requireResolversForResolveType);\n    }\n    return schema;\n}\nexports.addResolversToSchema = addResolversToSchema;\nfunction addResolversToExistingSchema(schema, resolvers, defaultFieldResolver) {\n    var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;\n    const typeMap = schema.getTypeMap();\n    for (const typeName in resolvers) {\n        const type = schema.getType(typeName);\n        const resolverValue = resolvers[typeName];\n        if ((0, graphql_1.isScalarType)(type)) {\n            for (const fieldName in resolverValue) {\n                if (fieldName.startsWith('__')) {\n                    type[fieldName.substring(2)] = resolverValue[fieldName];\n                }\n                else if (fieldName === 'astNode' && type.astNode != null) {\n                    type.astNode = {\n                        ...type.astNode,\n                        description: (_b = (_a = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : type.astNode.description,\n                        directives: ((_c = type.astNode.directives) !== null && _c !== void 0 ? _c : []).concat((_e = (_d = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _d === void 0 ? void 0 : _d.directives) !== null && _e !== void 0 ? _e : []),\n                    };\n                }\n                else if (fieldName === 'extensionASTNodes' && type.extensionASTNodes != null) {\n                    type.extensionASTNodes = type.extensionASTNodes.concat((_f = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.extensionASTNodes) !== null && _f !== void 0 ? _f : []);\n                }\n                else if (fieldName === 'extensions' &&\n                    type.extensions != null &&\n                    resolverValue.extensions != null) {\n                    type.extensions = Object.assign(Object.create(null), type.extensions, resolverValue.extensions);\n                }\n                else {\n                    type[fieldName] = resolverValue[fieldName];\n                }\n            }\n        }\n        else if ((0, graphql_1.isEnumType)(type)) {\n            const config = type.toConfig();\n            const enumValueConfigMap = config.values;\n            for (const fieldName in resolverValue) {\n                if (fieldName.startsWith('__')) {\n                    config[fieldName.substring(2)] = resolverValue[fieldName];\n                }\n                else if (fieldName === 'astNode' && config.astNode != null) {\n                    config.astNode = {\n                        ...config.astNode,\n                        description: (_h = (_g = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _g === void 0 ? void 0 : _g.description) !== null && _h !== void 0 ? _h : config.astNode.description,\n                        directives: ((_j = config.astNode.directives) !== null && _j !== void 0 ? _j : []).concat((_l = (_k = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _k === void 0 ? void 0 : _k.directives) !== null && _l !== void 0 ? _l : []),\n                    };\n                }\n                else if (fieldName === 'extensionASTNodes' && config.extensionASTNodes != null) {\n                    config.extensionASTNodes = config.extensionASTNodes.concat((_m = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.extensionASTNodes) !== null && _m !== void 0 ? _m : []);\n                }\n                else if (fieldName === 'extensions' &&\n                    type.extensions != null &&\n                    resolverValue.extensions != null) {\n                    type.extensions = Object.assign(Object.create(null), type.extensions, resolverValue.extensions);\n                }\n                else if (enumValueConfigMap[fieldName]) {\n                    enumValueConfigMap[fieldName].value = resolverValue[fieldName];\n                }\n            }\n            typeMap[typeName] = new graphql_1.GraphQLEnumType(config);\n        }\n        else if ((0, graphql_1.isUnionType)(type)) {\n            for (const fieldName in resolverValue) {\n                if (fieldName.startsWith('__')) {\n                    type[fieldName.substring(2)] = resolverValue[fieldName];\n                }\n            }\n        }\n        else if ((0, graphql_1.isObjectType)(type) || (0, graphql_1.isInterfaceType)(type)) {\n            for (const fieldName in resolverValue) {\n                if (fieldName.startsWith('__')) {\n                    // this is for isTypeOf and resolveType and all the other stuff.\n                    type[fieldName.substring(2)] = resolverValue[fieldName];\n                    continue;\n                }\n                const fields = type.getFields();\n                const field = fields[fieldName];\n                if (field != null) {\n                    const fieldResolve = resolverValue[fieldName];\n                    if (typeof fieldResolve === 'function') {\n                        // for convenience. Allows shorter syntax in resolver definition file\n                        field.resolve = fieldResolve.bind(resolverValue);\n                    }\n                    else {\n                        setFieldProperties(field, fieldResolve);\n                    }\n                }\n            }\n        }\n    }\n    // serialize all default values prior to healing fields with new scalar/enum types.\n    (0, utils_1.forEachDefaultValue)(schema, utils_1.serializeInputValue);\n    // schema may have new scalar/enum types that require healing\n    (0, utils_1.healSchema)(schema);\n    // reparse all default values with new parsing functions.\n    (0, utils_1.forEachDefaultValue)(schema, utils_1.parseInputValue);\n    if (defaultFieldResolver != null) {\n        (0, utils_1.forEachField)(schema, field => {\n            if (!field.resolve) {\n                field.resolve = defaultFieldResolver;\n            }\n        });\n    }\n    return schema;\n}\nfunction createNewSchemaWithResolvers(schema, resolvers, defaultFieldResolver) {\n    schema = (0, utils_1.mapSchema)(schema, {\n        [utils_1.MapperKind.SCALAR_TYPE]: type => {\n            var _a, _b, _c, _d, _e, _f;\n            const config = type.toConfig();\n            const resolverValue = resolvers[type.name];\n            if (!(0, graphql_1.isSpecifiedScalarType)(type) && resolverValue != null) {\n                for (const fieldName in resolverValue) {\n                    if (fieldName.startsWith('__')) {\n                        config[fieldName.substring(2)] = resolverValue[fieldName];\n                    }\n                    else if (fieldName === 'astNode' && config.astNode != null) {\n                        config.astNode = {\n                            ...config.astNode,\n                            description: (_b = (_a = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : config.astNode.description,\n                            directives: ((_c = config.astNode.directives) !== null && _c !== void 0 ? _c : []).concat((_e = (_d = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _d === void 0 ? void 0 : _d.directives) !== null && _e !== void 0 ? _e : []),\n                        };\n                    }\n                    else if (fieldName === 'extensionASTNodes' && config.extensionASTNodes != null) {\n                        config.extensionASTNodes = config.extensionASTNodes.concat((_f = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.extensionASTNodes) !== null && _f !== void 0 ? _f : []);\n                    }\n                    else if (fieldName === 'extensions' &&\n                        config.extensions != null &&\n                        resolverValue.extensions != null) {\n                        config.extensions = Object.assign(Object.create(null), type.extensions, resolverValue.extensions);\n                    }\n                    else {\n                        config[fieldName] = resolverValue[fieldName];\n                    }\n                }\n                return new graphql_1.GraphQLScalarType(config);\n            }\n        },\n        [utils_1.MapperKind.ENUM_TYPE]: type => {\n            var _a, _b, _c, _d, _e, _f;\n            const resolverValue = resolvers[type.name];\n            const config = type.toConfig();\n            const enumValueConfigMap = config.values;\n            if (resolverValue != null) {\n                for (const fieldName in resolverValue) {\n                    if (fieldName.startsWith('__')) {\n                        config[fieldName.substring(2)] = resolverValue[fieldName];\n                    }\n                    else if (fieldName === 'astNode' && config.astNode != null) {\n                        config.astNode = {\n                            ...config.astNode,\n                            description: (_b = (_a = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : config.astNode.description,\n                            directives: ((_c = config.astNode.directives) !== null && _c !== void 0 ? _c : []).concat((_e = (_d = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.astNode) === null || _d === void 0 ? void 0 : _d.directives) !== null && _e !== void 0 ? _e : []),\n                        };\n                    }\n                    else if (fieldName === 'extensionASTNodes' && config.extensionASTNodes != null) {\n                        config.extensionASTNodes = config.extensionASTNodes.concat((_f = resolverValue === null || resolverValue === void 0 ? void 0 : resolverValue.extensionASTNodes) !== null && _f !== void 0 ? _f : []);\n                    }\n                    else if (fieldName === 'extensions' &&\n                        config.extensions != null &&\n                        resolverValue.extensions != null) {\n                        config.extensions = Object.assign(Object.create(null), type.extensions, resolverValue.extensions);\n                    }\n                    else if (enumValueConfigMap[fieldName]) {\n                        enumValueConfigMap[fieldName].value = resolverValue[fieldName];\n                    }\n                }\n                return new graphql_1.GraphQLEnumType(config);\n            }\n        },\n        [utils_1.MapperKind.UNION_TYPE]: type => {\n            const resolverValue = resolvers[type.name];\n            if (resolverValue != null) {\n                const config = type.toConfig();\n                if (resolverValue['__resolveType']) {\n                    config.resolveType = resolverValue['__resolveType'];\n                }\n                return new graphql_1.GraphQLUnionType(config);\n            }\n        },\n        [utils_1.MapperKind.OBJECT_TYPE]: type => {\n            const resolverValue = resolvers[type.name];\n            if (resolverValue != null) {\n                const config = type.toConfig();\n                if (resolverValue['__isTypeOf']) {\n                    config.isTypeOf = resolverValue['__isTypeOf'];\n                }\n                return new graphql_1.GraphQLObjectType(config);\n            }\n        },\n        [utils_1.MapperKind.INTERFACE_TYPE]: type => {\n            const resolverValue = resolvers[type.name];\n            if (resolverValue != null) {\n                const config = type.toConfig();\n                if (resolverValue['__resolveType']) {\n                    config.resolveType = resolverValue['__resolveType'];\n                }\n                return new graphql_1.GraphQLInterfaceType(config);\n            }\n        },\n        [utils_1.MapperKind.COMPOSITE_FIELD]: (fieldConfig, fieldName, typeName) => {\n            const resolverValue = resolvers[typeName];\n            if (resolverValue != null) {\n                const fieldResolve = resolverValue[fieldName];\n                if (fieldResolve != null) {\n                    const newFieldConfig = { ...fieldConfig };\n                    if (typeof fieldResolve === 'function') {\n                        // for convenience. Allows shorter syntax in resolver definition file\n                        newFieldConfig.resolve = fieldResolve.bind(resolverValue);\n                    }\n                    else {\n                        setFieldProperties(newFieldConfig, fieldResolve);\n                    }\n                    return newFieldConfig;\n                }\n            }\n        },\n    });\n    if (defaultFieldResolver != null) {\n        schema = (0, utils_1.mapSchema)(schema, {\n            [utils_1.MapperKind.OBJECT_FIELD]: fieldConfig => ({\n                ...fieldConfig,\n                resolve: fieldConfig.resolve != null ? fieldConfig.resolve : defaultFieldResolver,\n            }),\n        });\n    }\n    return schema;\n}\nfunction setFieldProperties(field, propertiesObj) {\n    for (const propertyName in propertiesObj) {\n        field[propertyName] = propertiesObj[propertyName];\n    }\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeResolvers = void 0;\nconst utils_1 = require(\"@graphql-tools/utils\");\n/**\n * Deep merges multiple resolver definition objects into a single definition.\n * @param resolversDefinitions Resolver definitions to be merged\n * @param options Additional options\n *\n * ```js\n * const { mergeResolvers } = require('@graphql-tools/merge');\n * const clientResolver = require('./clientResolver');\n * const productResolver = require('./productResolver');\n *\n * const resolvers = mergeResolvers([\n *  clientResolver,\n *  productResolver,\n * ]);\n * ```\n *\n * If you don't want to manually create the array of resolver objects, you can\n * also use this function along with loadFiles:\n *\n * ```js\n * const path = require('path');\n * const { mergeResolvers } = require('@graphql-tools/merge');\n * const { loadFilesSync } = require('@graphql-tools/load-files');\n *\n * const resolversArray = loadFilesSync(path.join(__dirname, './resolvers'));\n *\n * const resolvers = mergeResolvers(resolversArray)\n * ```\n */\nfunction mergeResolvers(resolversDefinitions, options) {\n    if (!resolversDefinitions || (Array.isArray(resolversDefinitions) && resolversDefinitions.length === 0)) {\n        return {};\n    }\n    if (!Array.isArray(resolversDefinitions)) {\n        return resolversDefinitions;\n    }\n    if (resolversDefinitions.length === 1) {\n        return resolversDefinitions[0] || {};\n    }\n    const resolvers = new Array();\n    for (let resolversDefinition of resolversDefinitions) {\n        if (Array.isArray(resolversDefinition)) {\n            resolversDefinition = mergeResolvers(resolversDefinition);\n        }\n        if (typeof resolversDefinition === 'object' && resolversDefinition) {\n            resolvers.push(resolversDefinition);\n        }\n    }\n    const result = (0, utils_1.mergeDeep)(resolvers, true);\n    if (options === null || options === void 0 ? void 0 : options.exclusions) {\n        for (const exclusion of options.exclusions) {\n            const [typeName, fieldName] = exclusion.split('.');\n            if (!fieldName || fieldName === '*') {\n                delete result[typeName];\n            }\n            else if (result[typeName]) {\n                delete result[typeName][fieldName];\n            }\n        }\n    }\n    return result;\n}\nexports.mergeResolvers = mergeResolvers;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeArguments = void 0;\nconst utils_1 = require(\"@graphql-tools/utils\");\nfunction mergeArguments(args1, args2, config) {\n    const result = deduplicateArguments([...args2, ...args1].filter(utils_1.isSome), config);\n    if (config && config.sort) {\n        result.sort(utils_1.compareNodes);\n    }\n    return result;\n}\nexports.mergeArguments = mergeArguments;\nfunction deduplicateArguments(args, config) {\n    return args.reduce((acc, current) => {\n        const dupIndex = acc.findIndex(arg => arg.name.value === current.name.value);\n        if (dupIndex === -1) {\n            return acc.concat([current]);\n        }\n        else if (!(config === null || config === void 0 ? void 0 : config.reverseArguments)) {\n            acc[dupIndex] = current;\n        }\n        return acc;\n    }, []);\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeDirective = exports.mergeDirectives = void 0;\nconst graphql_1 = require(\"graphql\");\nconst utils_1 = require(\"@graphql-tools/utils\");\nfunction directiveAlreadyExists(directivesArr, otherDirective) {\n    return !!directivesArr.find(directive => directive.name.value === otherDirective.name.value);\n}\nfunction isRepeatableDirective(directive, directives) {\n    var _a;\n    return !!((_a = directives === null || directives === void 0 ? void 0 : directives[directive.name.value]) === null || _a === void 0 ? void 0 : _a.repeatable);\n}\nfunction nameAlreadyExists(name, namesArr) {\n    return namesArr.some(({ value }) => value === name.value);\n}\nfunction mergeArguments(a1, a2) {\n    const result = [...a2];\n    for (const argument of a1) {\n        const existingIndex = result.findIndex(a => a.name.value === argument.name.value);\n        if (existingIndex > -1) {\n            const existingArg = result[existingIndex];\n            if (existingArg.value.kind === 'ListValue') {\n                const source = existingArg.value.values;\n                const target = argument.value.values;\n                // merge values of two lists\n                existingArg.value.values = deduplicateLists(source, target, (targetVal, source) => {\n                    const value = targetVal.value;\n                    return !value || !source.some((sourceVal) => sourceVal.value === value);\n                });\n            }\n            else {\n                existingArg.value = argument.value;\n            }\n        }\n        else {\n            result.push(argument);\n        }\n    }\n    return result;\n}\nfunction deduplicateDirectives(directives, definitions) {\n    return directives\n        .map((directive, i, all) => {\n        const firstAt = all.findIndex(d => d.name.value === directive.name.value);\n        if (firstAt !== i && !isRepeatableDirective(directive, definitions)) {\n            const dup = all[firstAt];\n            directive.arguments = mergeArguments(directive.arguments, dup.arguments);\n            return null;\n        }\n        return directive;\n    })\n        .filter(utils_1.isSome);\n}\nfunction mergeDirectives(d1 = [], d2 = [], config, directives) {\n    const reverseOrder = config && config.reverseDirectives;\n    const asNext = reverseOrder ? d1 : d2;\n    const asFirst = reverseOrder ? d2 : d1;\n    const result = deduplicateDirectives([...asNext], directives);\n    for (const directive of asFirst) {\n        if (directiveAlreadyExists(result, directive) && !isRepeatableDirective(directive, directives)) {\n            const existingDirectiveIndex = result.findIndex(d => d.name.value === directive.name.value);\n            const existingDirective = result[existingDirectiveIndex];\n            result[existingDirectiveIndex].arguments = mergeArguments(directive.arguments || [], existingDirective.arguments || []);\n        }\n        else {\n            result.push(directive);\n        }\n    }\n    return result;\n}\nexports.mergeDirectives = mergeDirectives;\nfunction validateInputs(node, existingNode) {\n    const printedNode = (0, graphql_1.print)({\n        ...node,\n        description: undefined,\n    });\n    const printedExistingNode = (0, graphql_1.print)({\n        ...existingNode,\n        description: undefined,\n    });\n    // eslint-disable-next-line\n    const leaveInputs = new RegExp('(directive @w*d*)|( on .*$)', 'g');\n    const sameArguments = printedNode.replace(leaveInputs, '') === printedExistingNode.replace(leaveInputs, '');\n    if (!sameArguments) {\n        throw new Error(`Unable to merge GraphQL directive \"${node.name.value}\". \\nExisting directive:  \\n\\t${printedExistingNode} \\nReceived directive: \\n\\t${printedNode}`);\n    }\n}\nfunction mergeDirective(node, existingNode) {\n    if (existingNode) {\n        validateInputs(node, existingNode);\n        return {\n            ...node,\n            locations: [\n                ...existingNode.locations,\n                ...node.locations.filter(name => !nameAlreadyExists(name, existingNode.locations)),\n            ],\n        };\n    }\n    return node;\n}\nexports.mergeDirective = mergeDirective;\nfunction deduplicateLists(source, target, filterFn) {\n    return source.concat(target.filter(val => filterFn(val, source)));\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeEnumValues = void 0;\nconst directives_js_1 = require(\"./directives.js\");\nconst utils_1 = require(\"@graphql-tools/utils\");\nfunction mergeEnumValues(first, second, config, directives) {\n    if (config === null || config === void 0 ? void 0 : config.consistentEnumMerge) {\n        const reversed = [];\n        if (first) {\n            reversed.push(...first);\n        }\n        first = second;\n        second = reversed;\n    }\n    const enumValueMap = new Map();\n    if (first) {\n        for (const firstValue of first) {\n            enumValueMap.set(firstValue.name.value, firstValue);\n        }\n    }\n    if (second) {\n        for (const secondValue of second) {\n            const enumValue = secondValue.name.value;\n            if (enumValueMap.has(enumValue)) {\n                const firstValue = enumValueMap.get(enumValue);\n                firstValue.description = secondValue.description || firstValue.description;\n                firstValue.directives = (0, directives_js_1.mergeDirectives)(secondValue.directives, firstValue.directives, directives);\n            }\n            else {\n                enumValueMap.set(enumValue, secondValue);\n            }\n        }\n    }\n    const result = [...enumValueMap.values()];\n    if (config && config.sort) {\n        result.sort(utils_1.compareNodes);\n    }\n    return result;\n}\nexports.mergeEnumValues = mergeEnumValues;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeEnum = void 0;\nconst graphql_1 = require(\"graphql\");\nconst directives_js_1 = require(\"./directives.js\");\nconst enum_values_js_1 = require(\"./enum-values.js\");\nfunction mergeEnum(e1, e2, config, directives) {\n    if (e2) {\n        return {\n            name: e1.name,\n            description: e1['description'] || e2['description'],\n            kind: (config === null || config === void 0 ? void 0 : config.convertExtensions) || e1.kind === 'EnumTypeDefinition' || e2.kind === 'EnumTypeDefinition'\n                ? 'EnumTypeDefinition'\n                : 'EnumTypeExtension',\n            loc: e1.loc,\n            directives: (0, directives_js_1.mergeDirectives)(e1.directives, e2.directives, config, directives),\n            values: (0, enum_values_js_1.mergeEnumValues)(e1.values, e2.values, config),\n        };\n    }\n    return (config === null || config === void 0 ? void 0 : config.convertExtensions)\n        ? {\n            ...e1,\n            kind: graphql_1.Kind.ENUM_TYPE_DEFINITION,\n        }\n        : e1;\n}\nexports.mergeEnum = mergeEnum;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultStringComparator = exports.CompareVal = exports.printTypeNode = exports.isNonNullTypeNode = exports.isListTypeNode = exports.isWrappingTypeNode = exports.extractType = exports.isSourceTypes = exports.isStringTypes = void 0;\nconst graphql_1 = require(\"graphql\");\nfunction isStringTypes(types) {\n    return typeof types === 'string';\n}\nexports.isStringTypes = isStringTypes;\nfunction isSourceTypes(types) {\n    return types instanceof graphql_1.Source;\n}\nexports.isSourceTypes = isSourceTypes;\nfunction extractType(type) {\n    let visitedType = type;\n    while (visitedType.kind === graphql_1.Kind.LIST_TYPE || visitedType.kind === 'NonNullType') {\n        visitedType = visitedType.type;\n    }\n    return visitedType;\n}\nexports.extractType = extractType;\nfunction isWrappingTypeNode(type) {\n    return type.kind !== graphql_1.Kind.NAMED_TYPE;\n}\nexports.isWrappingTypeNode = isWrappingTypeNode;\nfunction isListTypeNode(type) {\n    return type.kind === graphql_1.Kind.LIST_TYPE;\n}\nexports.isListTypeNode = isListTypeNode;\nfunction isNonNullTypeNode(type) {\n    return type.kind === graphql_1.Kind.NON_NULL_TYPE;\n}\nexports.isNonNullTypeNode = isNonNullTypeNode;\nfunction printTypeNode(type) {\n    if (isListTypeNode(type)) {\n        return `[${printTypeNode(type.type)}]`;\n    }\n    if (isNonNullTypeNode(type)) {\n        return `${printTypeNode(type.type)}!`;\n    }\n    return type.name.value;\n}\nexports.printTypeNode = printTypeNode;\nvar CompareVal;\n(function (CompareVal) {\n    CompareVal[CompareVal[\"A_SMALLER_THAN_B\"] = -1] = \"A_SMALLER_THAN_B\";\n    CompareVal[CompareVal[\"A_EQUALS_B\"] = 0] = \"A_EQUALS_B\";\n    CompareVal[CompareVal[\"A_GREATER_THAN_B\"] = 1] = \"A_GREATER_THAN_B\";\n})(CompareVal = exports.CompareVal || (exports.CompareVal = {}));\nfunction defaultStringComparator(a, b) {\n    if (a == null && b == null) {\n        return CompareVal.A_EQUALS_B;\n    }\n    if (a == null) {\n        return CompareVal.A_SMALLER_THAN_B;\n    }\n    if (b == null) {\n        return CompareVal.A_GREATER_THAN_B;\n    }\n    if (a < b)\n        return CompareVal.A_SMALLER_THAN_B;\n    if (a > b)\n        return CompareVal.A_GREATER_THAN_B;\n    return CompareVal.A_EQUALS_B;\n}\nexports.defaultStringComparator = defaultStringComparator;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeFields = void 0;\nconst utils_js_1 = require(\"./utils.js\");\nconst directives_js_1 = require(\"./directives.js\");\nconst utils_1 = require(\"@graphql-tools/utils\");\nconst arguments_js_1 = require(\"./arguments.js\");\nfunction fieldAlreadyExists(fieldsArr, otherField) {\n    const resultIndex = fieldsArr.findIndex(field => field.name.value === otherField.name.value);\n    return [resultIndex > -1 ? fieldsArr[resultIndex] : null, resultIndex];\n}\nfunction mergeFields(type, f1, f2, config, directives) {\n    const result = [];\n    if (f2 != null) {\n        result.push(...f2);\n    }\n    if (f1 != null) {\n        for (const field of f1) {\n            const [existing, existingIndex] = fieldAlreadyExists(result, field);\n            if (existing && !(config === null || config === void 0 ? void 0 : config.ignoreFieldConflicts)) {\n                const newField = ((config === null || config === void 0 ? void 0 : config.onFieldTypeConflict) && config.onFieldTypeConflict(existing, field, type, config === null || config === void 0 ? void 0 : config.throwOnConflict)) ||\n                    preventConflicts(type, existing, field, config === null || config === void 0 ? void 0 : config.throwOnConflict);\n                newField.arguments = (0, arguments_js_1.mergeArguments)(field['arguments'] || [], existing['arguments'] || [], config);\n                newField.directives = (0, directives_js_1.mergeDirectives)(field.directives, existing.directives, config, directives);\n                newField.description = field.description || existing.description;\n                result[existingIndex] = newField;\n            }\n            else {\n                result.push(field);\n            }\n        }\n    }\n    if (config && config.sort) {\n        result.sort(utils_1.compareNodes);\n    }\n    if (config && config.exclusions) {\n        const exclusions = config.exclusions;\n        return result.filter(field => !exclusions.includes(`${type.name.value}.${field.name.value}`));\n    }\n    return result;\n}\nexports.mergeFields = mergeFields;\nfunction preventConflicts(type, a, b, ignoreNullability = false) {\n    const aType = (0, utils_js_1.printTypeNode)(a.type);\n    const bType = (0, utils_js_1.printTypeNode)(b.type);\n    if (aType !== bType) {\n        const t1 = (0, utils_js_1.extractType)(a.type);\n        const t2 = (0, utils_js_1.extractType)(b.type);\n        if (t1.name.value !== t2.name.value) {\n            throw new Error(`Field \"${b.name.value}\" already defined with a different type. Declared as \"${t1.name.value}\", but you tried to override with \"${t2.name.value}\"`);\n        }\n        if (!safeChangeForFieldType(a.type, b.type, !ignoreNullability)) {\n            throw new Error(`Field '${type.name.value}.${a.name.value}' changed type from '${aType}' to '${bType}'`);\n        }\n    }\n    if ((0, utils_js_1.isNonNullTypeNode)(b.type) && !(0, utils_js_1.isNonNullTypeNode)(a.type)) {\n        a.type = b.type;\n    }\n    return a;\n}\nfunction safeChangeForFieldType(oldType, newType, ignoreNullability = false) {\n    // both are named\n    if (!(0, utils_js_1.isWrappingTypeNode)(oldType) && !(0, utils_js_1.isWrappingTypeNode)(newType)) {\n        return oldType.toString() === newType.toString();\n    }\n    // new is non-null\n    if ((0, utils_js_1.isNonNullTypeNode)(newType)) {\n        const ofType = (0, utils_js_1.isNonNullTypeNode)(oldType) ? oldType.type : oldType;\n        return safeChangeForFieldType(ofType, newType.type);\n    }\n    // old is non-null\n    if ((0, utils_js_1.isNonNullTypeNode)(oldType)) {\n        return safeChangeForFieldType(newType, oldType, ignoreNullability);\n    }\n    // old is list\n    if ((0, utils_js_1.isListTypeNode)(oldType)) {\n        return (((0, utils_js_1.isListTypeNode)(newType) && safeChangeForFieldType(oldType.type, newType.type)) ||\n            ((0, utils_js_1.isNonNullTypeNode)(newType) && safeChangeForFieldType(oldType, newType['type'])));\n    }\n    return false;\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeInputType = void 0;\nconst graphql_1 = require(\"graphql\");\nconst fields_js_1 = require(\"./fields.js\");\nconst directives_js_1 = require(\"./directives.js\");\nfunction mergeInputType(node, existingNode, config, directives) {\n    if (existingNode) {\n        try {\n            return {\n                name: node.name,\n                description: node['description'] || existingNode['description'],\n                kind: (config === null || config === void 0 ? void 0 : config.convertExtensions) ||\n                    node.kind === 'InputObjectTypeDefinition' ||\n                    existingNode.kind === 'InputObjectTypeDefinition'\n                    ? 'InputObjectTypeDefinition'\n                    : 'InputObjectTypeExtension',\n                loc: node.loc,\n                fields: (0, fields_js_1.mergeFields)(node, node.fields, existingNode.fields, config),\n                directives: (0, directives_js_1.mergeDirectives)(node.directives, existingNode.directives, config, directives),\n            };\n        }\n        catch (e) {\n            throw new Error(`Unable to merge GraphQL input type \"${node.name.value}\": ${e.message}`);\n        }\n    }\n    return (config === null || config === void 0 ? void 0 : config.convertExtensions)\n        ? {\n            ...node,\n            kind: graphql_1.Kind.INPUT_OBJECT_TYPE_DEFINITION,\n        }\n        : node;\n}\nexports.mergeInputType = mergeInputType;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeNamedTypeArray = void 0;\nconst utils_1 = require(\"@graphql-tools/utils\");\nfunction alreadyExists(arr, other) {\n    return !!arr.find(i => i.name.value === other.name.value);\n}\nfunction mergeNamedTypeArray(first = [], second = [], config = {}) {\n    const result = [...second, ...first.filter(d => !alreadyExists(second, d))];\n    if (config && config.sort) {\n        result.sort(utils_1.compareNodes);\n    }\n    return result;\n}\nexports.mergeNamedTypeArray = mergeNamedTypeArray;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeInterface = void 0;\nconst graphql_1 = require(\"graphql\");\nconst fields_js_1 = require(\"./fields.js\");\nconst directives_js_1 = require(\"./directives.js\");\nconst merge_named_type_array_js_1 = require(\"./merge-named-type-array.js\");\nfunction mergeInterface(node, existingNode, config, directives) {\n    if (existingNode) {\n        try {\n            return {\n                name: node.name,\n                description: node['description'] || existingNode['description'],\n                kind: (config === null || config === void 0 ? void 0 : config.convertExtensions) ||\n                    node.kind === 'InterfaceTypeDefinition' ||\n                    existingNode.kind === 'InterfaceTypeDefinition'\n                    ? 'InterfaceTypeDefinition'\n                    : 'InterfaceTypeExtension',\n                loc: node.loc,\n                fields: (0, fields_js_1.mergeFields)(node, node.fields, existingNode.fields, config),\n                directives: (0, directives_js_1.mergeDirectives)(node.directives, existingNode.directives, config, directives),\n                interfaces: node['interfaces']\n                    ? (0, merge_named_type_array_js_1.mergeNamedTypeArray)(node['interfaces'], existingNode['interfaces'], config)\n                    : undefined,\n            };\n        }\n        catch (e) {\n            throw new Error(`Unable to merge GraphQL interface \"${node.name.value}\": ${e.message}`);\n        }\n    }\n    return (config === null || config === void 0 ? void 0 : config.convertExtensions)\n        ? {\n            ...node,\n            kind: graphql_1.Kind.INTERFACE_TYPE_DEFINITION,\n        }\n        : node;\n}\nexports.mergeInterface = mergeInterface;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeType = void 0;\nconst graphql_1 = require(\"graphql\");\nconst fields_js_1 = require(\"./fields.js\");\nconst directives_js_1 = require(\"./directives.js\");\nconst merge_named_type_array_js_1 = require(\"./merge-named-type-array.js\");\nfunction mergeType(node, existingNode, config, directives) {\n    if (existingNode) {\n        try {\n            return {\n                name: node.name,\n                description: node['description'] || existingNode['description'],\n                kind: (config === null || config === void 0 ? void 0 : config.convertExtensions) ||\n                    node.kind === 'ObjectTypeDefinition' ||\n                    existingNode.kind === 'ObjectTypeDefinition'\n                    ? 'ObjectTypeDefinition'\n                    : 'ObjectTypeExtension',\n                loc: node.loc,\n                fields: (0, fields_js_1.mergeFields)(node, node.fields, existingNode.fields, config),\n                directives: (0, directives_js_1.mergeDirectives)(node.directives, existingNode.directives, config, directives),\n                interfaces: (0, merge_named_type_array_js_1.mergeNamedTypeArray)(node.interfaces, existingNode.interfaces, config),\n            };\n        }\n        catch (e) {\n            throw new Error(`Unable to merge GraphQL type \"${node.name.value}\": ${e.message}`);\n        }\n    }\n    return (config === null || config === void 0 ? void 0 : config.convertExtensions)\n        ? {\n            ...node,\n            kind: graphql_1.Kind.OBJECT_TYPE_DEFINITION,\n        }\n        : node;\n}\nexports.mergeType = mergeType;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeScalar = void 0;\nconst graphql_1 = require(\"graphql\");\nconst directives_js_1 = require(\"./directives.js\");\nfunction mergeScalar(node, existingNode, config, directives) {\n    if (existingNode) {\n        return {\n            name: node.name,\n            description: node['description'] || existingNode['description'],\n            kind: (config === null || config === void 0 ? void 0 : config.convertExtensions) ||\n                node.kind === 'ScalarTypeDefinition' ||\n                existingNode.kind === 'ScalarTypeDefinition'\n                ? 'ScalarTypeDefinition'\n                : 'ScalarTypeExtension',\n            loc: node.loc,\n            directives: (0, directives_js_1.mergeDirectives)(node.directives, existingNode.directives, config, directives),\n        };\n    }\n    return (config === null || config === void 0 ? void 0 : config.convertExtensions)\n        ? {\n            ...node,\n            kind: graphql_1.Kind.SCALAR_TYPE_DEFINITION,\n        }\n        : node;\n}\nexports.mergeScalar = mergeScalar;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeUnion = void 0;\nconst graphql_1 = require(\"graphql\");\nconst directives_js_1 = require(\"./directives.js\");\nconst merge_named_type_array_js_1 = require(\"./merge-named-type-array.js\");\nfunction mergeUnion(first, second, config, directives) {\n    if (second) {\n        return {\n            name: first.name,\n            description: first['description'] || second['description'],\n            // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n            directives: (0, directives_js_1.mergeDirectives)(first.directives, second.directives, config, directives),\n            kind: (config === null || config === void 0 ? void 0 : config.convertExtensions) || first.kind === 'UnionTypeDefinition' || second.kind === 'UnionTypeDefinition'\n                ? graphql_1.Kind.UNION_TYPE_DEFINITION\n                : graphql_1.Kind.UNION_TYPE_EXTENSION,\n            loc: first.loc,\n            types: (0, merge_named_type_array_js_1.mergeNamedTypeArray)(first.types, second.types, config),\n        };\n    }\n    return (config === null || config === void 0 ? void 0 : config.convertExtensions)\n        ? {\n            ...first,\n            kind: graphql_1.Kind.UNION_TYPE_DEFINITION,\n        }\n        : first;\n}\nexports.mergeUnion = mergeUnion;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeSchemaDefs = exports.DEFAULT_OPERATION_TYPE_NAME_MAP = void 0;\nconst graphql_1 = require(\"graphql\");\nconst directives_js_1 = require(\"./directives.js\");\nexports.DEFAULT_OPERATION_TYPE_NAME_MAP = {\n    query: 'Query',\n    mutation: 'Mutation',\n    subscription: 'Subscription',\n};\nfunction mergeOperationTypes(opNodeList = [], existingOpNodeList = []) {\n    const finalOpNodeList = [];\n    for (const opNodeType in exports.DEFAULT_OPERATION_TYPE_NAME_MAP) {\n        const opNode = opNodeList.find(n => n.operation === opNodeType) || existingOpNodeList.find(n => n.operation === opNodeType);\n        if (opNode) {\n            finalOpNodeList.push(opNode);\n        }\n    }\n    return finalOpNodeList;\n}\nfunction mergeSchemaDefs(node, existingNode, config, directives) {\n    if (existingNode) {\n        return {\n            kind: node.kind === graphql_1.Kind.SCHEMA_DEFINITION || existingNode.kind === graphql_1.Kind.SCHEMA_DEFINITION\n                ? graphql_1.Kind.SCHEMA_DEFINITION\n                : graphql_1.Kind.SCHEMA_EXTENSION,\n            description: node['description'] || existingNode['description'],\n            directives: (0, directives_js_1.mergeDirectives)(node.directives, existingNode.directives, config, directives),\n            operationTypes: mergeOperationTypes(node.operationTypes, existingNode.operationTypes),\n        };\n    }\n    return ((config === null || config === void 0 ? void 0 : config.convertExtensions)\n        ? {\n            ...node,\n            kind: graphql_1.Kind.SCHEMA_DEFINITION,\n        }\n        : node);\n}\nexports.mergeSchemaDefs = mergeSchemaDefs;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeGraphQLNodes = exports.isNamedDefinitionNode = exports.schemaDefSymbol = void 0;\nconst graphql_1 = require(\"graphql\");\nconst type_js_1 = require(\"./type.js\");\nconst enum_js_1 = require(\"./enum.js\");\nconst scalar_js_1 = require(\"./scalar.js\");\nconst union_js_1 = require(\"./union.js\");\nconst input_type_js_1 = require(\"./input-type.js\");\nconst interface_js_1 = require(\"./interface.js\");\nconst directives_js_1 = require(\"./directives.js\");\nconst schema_def_js_1 = require(\"./schema-def.js\");\nconst utils_1 = require(\"@graphql-tools/utils\");\nexports.schemaDefSymbol = 'SCHEMA_DEF_SYMBOL';\nfunction isNamedDefinitionNode(definitionNode) {\n    return 'name' in definitionNode;\n}\nexports.isNamedDefinitionNode = isNamedDefinitionNode;\nfunction mergeGraphQLNodes(nodes, config, directives = {}) {\n    var _a, _b, _c;\n    const mergedResultMap = directives;\n    for (const nodeDefinition of nodes) {\n        if (isNamedDefinitionNode(nodeDefinition)) {\n            const name = (_a = nodeDefinition.name) === null || _a === void 0 ? void 0 : _a.value;\n            if (config === null || config === void 0 ? void 0 : config.commentDescriptions) {\n                (0, utils_1.collectComment)(nodeDefinition);\n            }\n            if (name == null) {\n                continue;\n            }\n            if (((_b = config === null || config === void 0 ? void 0 : config.exclusions) === null || _b === void 0 ? void 0 : _b.includes(name + '.*')) || ((_c = config === null || config === void 0 ? void 0 : config.exclusions) === null || _c === void 0 ? void 0 : _c.includes(name))) {\n                delete mergedResultMap[name];\n            }\n            else {\n                switch (nodeDefinition.kind) {\n                    case graphql_1.Kind.OBJECT_TYPE_DEFINITION:\n                    case graphql_1.Kind.OBJECT_TYPE_EXTENSION:\n                        mergedResultMap[name] = (0, type_js_1.mergeType)(nodeDefinition, mergedResultMap[name], config, directives);\n                        break;\n                    case graphql_1.Kind.ENUM_TYPE_DEFINITION:\n                    case graphql_1.Kind.ENUM_TYPE_EXTENSION:\n                        mergedResultMap[name] = (0, enum_js_1.mergeEnum)(nodeDefinition, mergedResultMap[name], config, directives);\n                        break;\n                    case graphql_1.Kind.UNION_TYPE_DEFINITION:\n                    case graphql_1.Kind.UNION_TYPE_EXTENSION:\n                        mergedResultMap[name] = (0, union_js_1.mergeUnion)(nodeDefinition, mergedResultMap[name], config, directives);\n                        break;\n                    case graphql_1.Kind.SCALAR_TYPE_DEFINITION:\n                    case graphql_1.Kind.SCALAR_TYPE_EXTENSION:\n                        mergedResultMap[name] = (0, scalar_js_1.mergeScalar)(nodeDefinition, mergedResultMap[name], config, directives);\n                        break;\n                    case graphql_1.Kind.INPUT_OBJECT_TYPE_DEFINITION:\n                    case graphql_1.Kind.INPUT_OBJECT_TYPE_EXTENSION:\n                        mergedResultMap[name] = (0, input_type_js_1.mergeInputType)(nodeDefinition, mergedResultMap[name], config, directives);\n                        break;\n                    case graphql_1.Kind.INTERFACE_TYPE_DEFINITION:\n                    case graphql_1.Kind.INTERFACE_TYPE_EXTENSION:\n                        mergedResultMap[name] = (0, interface_js_1.mergeInterface)(nodeDefinition, mergedResultMap[name], config, directives);\n                        break;\n                    case graphql_1.Kind.DIRECTIVE_DEFINITION:\n                        mergedResultMap[name] = (0, directives_js_1.mergeDirective)(nodeDefinition, mergedResultMap[name]);\n                        break;\n                }\n            }\n        }\n        else if (nodeDefinition.kind === graphql_1.Kind.SCHEMA_DEFINITION || nodeDefinition.kind === graphql_1.Kind.SCHEMA_EXTENSION) {\n            mergedResultMap[exports.schemaDefSymbol] = (0, schema_def_js_1.mergeSchemaDefs)(nodeDefinition, mergedResultMap[exports.schemaDefSymbol], config);\n        }\n    }\n    return mergedResultMap;\n}\nexports.mergeGraphQLNodes = mergeGraphQLNodes;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeGraphQLTypes = exports.mergeTypeDefs = void 0;\nconst graphql_1 = require(\"graphql\");\nconst utils_js_1 = require(\"./utils.js\");\nconst merge_nodes_js_1 = require(\"./merge-nodes.js\");\nconst utils_1 = require(\"@graphql-tools/utils\");\nconst schema_def_js_1 = require(\"./schema-def.js\");\nfunction mergeTypeDefs(typeSource, config) {\n    (0, utils_1.resetComments)();\n    const doc = {\n        kind: graphql_1.Kind.DOCUMENT,\n        definitions: mergeGraphQLTypes(typeSource, {\n            useSchemaDefinition: true,\n            forceSchemaDefinition: false,\n            throwOnConflict: false,\n            commentDescriptions: false,\n            ...config,\n        }),\n    };\n    let result;\n    if (config === null || config === void 0 ? void 0 : config.commentDescriptions) {\n        result = (0, utils_1.printWithComments)(doc);\n    }\n    else {\n        result = doc;\n    }\n    (0, utils_1.resetComments)();\n    return result;\n}\nexports.mergeTypeDefs = mergeTypeDefs;\nfunction visitTypeSources(typeSource, options, allDirectives = [], allNodes = [], visitedTypeSources = new Set()) {\n    if (typeSource && !visitedTypeSources.has(typeSource)) {\n        visitedTypeSources.add(typeSource);\n        if (typeof typeSource === 'function') {\n            visitTypeSources(typeSource(), options, allDirectives, allNodes, visitedTypeSources);\n        }\n        else if (Array.isArray(typeSource)) {\n            for (const type of typeSource) {\n                visitTypeSources(type, options, allDirectives, allNodes, visitedTypeSources);\n            }\n        }\n        else if ((0, graphql_1.isSchema)(typeSource)) {\n            const documentNode = (0, utils_1.getDocumentNodeFromSchema)(typeSource, options);\n            visitTypeSources(documentNode.definitions, options, allDirectives, allNodes, visitedTypeSources);\n        }\n        else if ((0, utils_js_1.isStringTypes)(typeSource) || (0, utils_js_1.isSourceTypes)(typeSource)) {\n            const documentNode = (0, graphql_1.parse)(typeSource, options);\n            visitTypeSources(documentNode.definitions, options, allDirectives, allNodes, visitedTypeSources);\n        }\n        else if (typeof typeSource === 'object' && (0, graphql_1.isDefinitionNode)(typeSource)) {\n            if (typeSource.kind === graphql_1.Kind.DIRECTIVE_DEFINITION) {\n                allDirectives.push(typeSource);\n            }\n            else {\n                allNodes.push(typeSource);\n            }\n        }\n        else if ((0, utils_1.isDocumentNode)(typeSource)) {\n            visitTypeSources(typeSource.definitions, options, allDirectives, allNodes, visitedTypeSources);\n        }\n        else {\n            throw new Error(`typeDefs must contain only strings, documents, schemas, or functions, got ${typeof typeSource}`);\n        }\n    }\n    return { allDirectives, allNodes };\n}\nfunction mergeGraphQLTypes(typeSource, config) {\n    var _a, _b, _c;\n    (0, utils_1.resetComments)();\n    const { allDirectives, allNodes } = visitTypeSources(typeSource, config);\n    const mergedDirectives = (0, merge_nodes_js_1.mergeGraphQLNodes)(allDirectives, config);\n    const mergedNodes = (0, merge_nodes_js_1.mergeGraphQLNodes)(allNodes, config, mergedDirectives);\n    if (config === null || config === void 0 ? void 0 : config.useSchemaDefinition) {\n        // XXX: right now we don't handle multiple schema definitions\n        const schemaDef = mergedNodes[merge_nodes_js_1.schemaDefSymbol] || {\n            kind: graphql_1.Kind.SCHEMA_DEFINITION,\n            operationTypes: [],\n        };\n        const operationTypes = schemaDef.operationTypes;\n        for (const opTypeDefNodeType in schema_def_js_1.DEFAULT_OPERATION_TYPE_NAME_MAP) {\n            const opTypeDefNode = operationTypes.find(operationType => operationType.operation === opTypeDefNodeType);\n            if (!opTypeDefNode) {\n                const possibleRootTypeName = schema_def_js_1.DEFAULT_OPERATION_TYPE_NAME_MAP[opTypeDefNodeType];\n                const existingPossibleRootType = mergedNodes[possibleRootTypeName];\n                if (existingPossibleRootType != null && existingPossibleRootType.name != null) {\n                    operationTypes.push({\n                        kind: graphql_1.Kind.OPERATION_TYPE_DEFINITION,\n                        type: {\n                            kind: graphql_1.Kind.NAMED_TYPE,\n                            name: existingPossibleRootType.name,\n                        },\n                        operation: opTypeDefNodeType,\n                    });\n                }\n            }\n        }\n        if (((_a = schemaDef === null || schemaDef === void 0 ? void 0 : schemaDef.operationTypes) === null || _a === void 0 ? void 0 : _a.length) != null && schemaDef.operationTypes.length > 0) {\n            mergedNodes[merge_nodes_js_1.schemaDefSymbol] = schemaDef;\n        }\n    }\n    if ((config === null || config === void 0 ? void 0 : config.forceSchemaDefinition) && !((_c = (_b = mergedNodes[merge_nodes_js_1.schemaDefSymbol]) === null || _b === void 0 ? void 0 : _b.operationTypes) === null || _c === void 0 ? void 0 : _c.length)) {\n        mergedNodes[merge_nodes_js_1.schemaDefSymbol] = {\n            kind: graphql_1.Kind.SCHEMA_DEFINITION,\n            operationTypes: [\n                {\n                    kind: graphql_1.Kind.OPERATION_TYPE_DEFINITION,\n                    operation: 'query',\n                    type: {\n                        kind: graphql_1.Kind.NAMED_TYPE,\n                        name: {\n                            kind: graphql_1.Kind.NAME,\n                            value: 'Query',\n                        },\n                    },\n                },\n            ],\n        };\n    }\n    const mergedNodeDefinitions = Object.values(mergedNodes);\n    if (config === null || config === void 0 ? void 0 : config.sort) {\n        const sortFn = typeof config.sort === 'function' ? config.sort : utils_js_1.defaultStringComparator;\n        mergedNodeDefinitions.sort((a, b) => { var _a, _b; return sortFn((_a = a.name) === null || _a === void 0 ? void 0 : _a.value, (_b = b.name) === null || _b === void 0 ? void 0 : _b.value); });\n    }\n    return mergedNodeDefinitions;\n}\nexports.mergeGraphQLTypes = mergeGraphQLTypes;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./arguments.js\"), exports);\ntslib_1.__exportStar(require(\"./directives.js\"), exports);\ntslib_1.__exportStar(require(\"./enum-values.js\"), exports);\ntslib_1.__exportStar(require(\"./enum.js\"), exports);\ntslib_1.__exportStar(require(\"./fields.js\"), exports);\ntslib_1.__exportStar(require(\"./input-type.js\"), exports);\ntslib_1.__exportStar(require(\"./interface.js\"), exports);\ntslib_1.__exportStar(require(\"./merge-named-type-array.js\"), exports);\ntslib_1.__exportStar(require(\"./merge-nodes.js\"), exports);\ntslib_1.__exportStar(require(\"./merge-typedefs.js\"), exports);\ntslib_1.__exportStar(require(\"./scalar.js\"), exports);\ntslib_1.__exportStar(require(\"./type.js\"), exports);\ntslib_1.__exportStar(require(\"./union.js\"), exports);\ntslib_1.__exportStar(require(\"./utils.js\"), exports);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.applyExtensions = exports.mergeExtensions = exports.extractExtensionsFromSchema = void 0;\nconst utils_1 = require(\"@graphql-tools/utils\");\nvar utils_2 = require(\"@graphql-tools/utils\");\nObject.defineProperty(exports, \"extractExtensionsFromSchema\", { enumerable: true, get: function () { return utils_2.extractExtensionsFromSchema; } });\nfunction mergeExtensions(extensions) {\n    return (0, utils_1.mergeDeep)(extensions);\n}\nexports.mergeExtensions = mergeExtensions;\nfunction applyExtensionObject(obj, extensions) {\n    if (!obj) {\n        return;\n    }\n    obj.extensions = (0, utils_1.mergeDeep)([obj.extensions || {}, extensions || {}]);\n}\nfunction applyExtensions(schema, extensions) {\n    applyExtensionObject(schema, extensions.schemaExtensions);\n    for (const [typeName, data] of Object.entries(extensions.types || {})) {\n        const type = schema.getType(typeName);\n        if (type) {\n            applyExtensionObject(type, data.extensions);\n            if (data.type === 'object' || data.type === 'interface') {\n                for (const [fieldName, fieldData] of Object.entries(data.fields)) {\n                    const field = type.getFields()[fieldName];\n                    if (field) {\n                        applyExtensionObject(field, fieldData.extensions);\n                        for (const [arg, argData] of Object.entries(fieldData.arguments)) {\n                            applyExtensionObject(field.args.find(a => a.name === arg), argData);\n                        }\n                    }\n                }\n            }\n            else if (data.type === 'input') {\n                for (const [fieldName, fieldData] of Object.entries(data.fields)) {\n                    const field = type.getFields()[fieldName];\n                    applyExtensionObject(field, fieldData.extensions);\n                }\n            }\n            else if (data.type === 'enum') {\n                for (const [valueName, valueData] of Object.entries(data.values)) {\n                    const value = type.getValue(valueName);\n                    applyExtensionObject(value, valueData);\n                }\n            }\n        }\n    }\n    return schema;\n}\nexports.applyExtensions = applyExtensions;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./merge-resolvers.js\"), exports);\ntslib_1.__exportStar(require(\"./typedefs-mergers/index.js\"), exports);\ntslib_1.__exportStar(require(\"./extensions.js\"), exports);\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.makeExecutableSchema = void 0;\nconst graphql_1 = require(\"graphql\");\nconst utils_1 = require(\"@graphql-tools/utils\");\nconst addResolversToSchema_js_1 = require(\"./addResolversToSchema.js\");\nconst assertResolversPresent_js_1 = require(\"./assertResolversPresent.js\");\nconst merge_1 = require(\"@graphql-tools/merge\");\n/**\n * Builds a schema from the provided type definitions and resolvers.\n *\n * The type definitions are written using Schema Definition Language (SDL). They\n * can be provided as a string, a `DocumentNode`, a function, or an array of any\n * of these. If a function is provided, it will be passed no arguments and\n * should return an array of strings or `DocumentNode`s.\n *\n * Note: You can use GraphQL magic comment provide additional syntax\n * highlighting in your editor (with the appropriate editor plugin).\n *\n * ```js\n * const typeDefs = /* GraphQL *\\/ `\n *   type Query {\n *     posts: [Post]\n *     author(id: Int!): Author\n *   }\n * `;\n * ```\n *\n * The `resolvers` object should be a map of type names to nested object, which\n * themselves map the type's fields to their appropriate resolvers.\n * See the [Resolvers](/docs/resolvers) section of the documentation for more details.\n *\n * ```js\n * const resolvers = {\n *   Query: {\n *     posts: (obj, args, ctx, info) => getAllPosts(),\n *     author: (obj, args, ctx, info) => getAuthorById(args.id)\n *   }\n * };\n * ```\n *\n * Once you've defined both the `typeDefs` and `resolvers`, you can create your\n * schema:\n *\n * ```js\n * const schema = makeExecutableSchema({\n *   typeDefs,\n *   resolvers,\n * })\n * ```\n */\nfunction makeExecutableSchema({ typeDefs, resolvers = {}, resolverValidationOptions = {}, inheritResolversFromInterfaces = false, updateResolversInPlace = false, schemaExtensions, ...otherOptions }) {\n    // Validate and clean up arguments\n    if (typeof resolverValidationOptions !== 'object') {\n        throw new Error('Expected `resolverValidationOptions` to be an object');\n    }\n    if (!typeDefs) {\n        throw new Error('Must provide typeDefs');\n    }\n    let schema;\n    if ((0, graphql_1.isSchema)(typeDefs)) {\n        schema = typeDefs;\n    }\n    else if (otherOptions === null || otherOptions === void 0 ? void 0 : otherOptions.commentDescriptions) {\n        const mergedTypeDefs = (0, merge_1.mergeTypeDefs)(typeDefs, {\n            ...otherOptions,\n            commentDescriptions: true,\n        });\n        schema = (0, graphql_1.buildSchema)(mergedTypeDefs, otherOptions);\n    }\n    else {\n        const mergedTypeDefs = (0, merge_1.mergeTypeDefs)(typeDefs, otherOptions);\n        schema = (0, graphql_1.buildASTSchema)(mergedTypeDefs, otherOptions);\n    }\n    // We allow passing in an array of resolver maps, in which case we merge them\n    schema = (0, addResolversToSchema_js_1.addResolversToSchema)({\n        schema,\n        resolvers: (0, merge_1.mergeResolvers)(resolvers),\n        resolverValidationOptions,\n        inheritResolversFromInterfaces,\n        updateResolversInPlace,\n    });\n    if (Object.keys(resolverValidationOptions).length > 0) {\n        (0, assertResolversPresent_js_1.assertResolversPresent)(schema, resolverValidationOptions);\n    }\n    if (schemaExtensions) {\n        schemaExtensions = (0, merge_1.mergeExtensions)((0, utils_1.asArray)(schemaExtensions));\n        (0, merge_1.applyExtensions)(schema, schemaExtensions);\n    }\n    return schema;\n}\nexports.makeExecutableSchema = makeExecutableSchema;\n", "", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mergeSchemas = void 0;\nconst utils_1 = require(\"@graphql-tools/utils\");\nconst makeExecutableSchema_js_1 = require(\"./makeExecutableSchema.js\");\n/**\n * Synchronously merges multiple schemas, typeDefinitions and/or resolvers into a single schema.\n * @param config Configuration object\n */\nfunction mergeSchemas(config) {\n    const extractedTypeDefs = [];\n    const extractedResolvers = [];\n    const extractedSchemaExtensions = [];\n    if (config.schemas != null) {\n        for (const schema of config.schemas) {\n            extractedTypeDefs.push(schema);\n            extractedResolvers.push((0, utils_1.getResolversFromSchema)(schema));\n            extractedSchemaExtensions.push((0, utils_1.extractExtensionsFromSchema)(schema));\n        }\n    }\n    if (config.typeDefs != null) {\n        extractedTypeDefs.push(config.typeDefs);\n    }\n    if (config.resolvers != null) {\n        const additionalResolvers = (0, utils_1.asArray)(config.resolvers);\n        extractedResolvers.push(...additionalResolvers);\n    }\n    if (config.schemaExtensions != null) {\n        const additionalSchemaExtensions = (0, utils_1.asArray)(config.schemaExtensions);\n        extractedSchemaExtensions.push(...additionalSchemaExtensions);\n    }\n    return (0, makeExecutableSchema_js_1.makeExecutableSchema)({\n        ...config,\n        typeDefs: extractedTypeDefs,\n        resolvers: extractedResolvers,\n        schemaExtensions: extractedSchemaExtensions,\n    });\n}\nexports.mergeSchemas = mergeSchemas;\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.extractExtensionsFromSchema = exports.extendResolversFromInterfaces = exports.checkForResolveTypeResolver = exports.addResolversToSchema = exports.chainResolvers = exports.assertResolversPresent = void 0;\nconst tslib_1 = require(\"tslib\");\nvar assertResolversPresent_js_1 = require(\"./assertResolversPresent.js\");\nObject.defineProperty(exports, \"assertResolversPresent\", { enumerable: true, get: function () { return assertResolversPresent_js_1.assertResolversPresent; } });\nvar chainResolvers_js_1 = require(\"./chainResolvers.js\");\nObject.defineProperty(exports, \"chainResolvers\", { enumerable: true, get: function () { return chainResolvers_js_1.chainResolvers; } });\nvar addResolversToSchema_js_1 = require(\"./addResolversToSchema.js\");\nObject.defineProperty(exports, \"addResolversToSchema\", { enumerable: true, get: function () { return addResolversToSchema_js_1.addResolversToSchema; } });\nvar checkForResolveTypeResolver_js_1 = require(\"./checkForResolveTypeResolver.js\");\nObject.defineProperty(exports, \"checkForResolveTypeResolver\", { enumerable: true, get: function () { return checkForResolveTypeResolver_js_1.checkForResolveTypeResolver; } });\nvar extendResolversFromInterfaces_js_1 = require(\"./extendResolversFromInterfaces.js\");\nObject.defineProperty(exports, \"extendResolversFromInterfaces\", { enumerable: true, get: function () { return extendResolversFromInterfaces_js_1.extendResolversFromInterfaces; } });\ntslib_1.__exportStar(require(\"./makeExecutableSchema.js\"), exports);\ntslib_1.__exportStar(require(\"./types.js\"), exports);\ntslib_1.__exportStar(require(\"./merge-schemas.js\"), exports);\nvar utils_1 = require(\"@graphql-tools/utils\");\nObject.defineProperty(exports, \"extractExtensionsFromSchema\", { enumerable: true, get: function () { return utils_1.extractExtensionsFromSchema; } });\n", "// Copyright 2019 Joseph Gentle\n\n// Permission to use, copy, modify, and / or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n// FITNESS.IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n//   INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n// OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n// PERFORMANCE OF THIS SOFTWARE.\n\nexport type Resolvable<T> = Promise<T> & {\n  resolve: (t: T) => void;\n  reject: (e: any) => void;\n};\n\nexport default <T = void>(): Resolvable<T> => {\n  let resolve: (val: T) => void;\n  let reject: (err: any) => void;\n  const promise = new Promise<T>((_resolve, _reject) => {\n    resolve = _resolve;\n    reject = _reject;\n  }) as Resolvable<T>;\n  promise.resolve = resolve!;\n  promise.reject = reject!;\n  return promise;\n};\n", "/**\n * negotiator\n * Copyright(c) 2012 Isaac Z. Schlueter\n * Copyright(c) 2014 Federico Romero\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = preferredCharsets;\nmodule.exports.preferredCharsets = preferredCharsets;\n\n/**\n * Module variables.\n * @private\n */\n\nvar simpleCharsetRegExp = /^\\s*([^\\s;]+)\\s*(?:;(.*))?$/;\n\n/**\n * Parse the Accept-Charset header.\n * @private\n */\n\nfunction parseAcceptCharset(accept) {\n  var accepts = accept.split(',');\n\n  for (var i = 0, j = 0; i < accepts.length; i++) {\n    var charset = parseCharset(accepts[i].trim(), i);\n\n    if (charset) {\n      accepts[j++] = charset;\n    }\n  }\n\n  // trim accepts\n  accepts.length = j;\n\n  return accepts;\n}\n\n/**\n * Parse a charset from the Accept-Charset header.\n * @private\n */\n\nfunction parseCharset(str, i) {\n  var match = simpleCharsetRegExp.exec(str);\n  if (!match) return null;\n\n  var charset = match[1];\n  var q = 1;\n  if (match[2]) {\n    var params = match[2].split(';')\n    for (var j = 0; j < params.length; j++) {\n      var p = params[j].trim().split('=');\n      if (p[0] === 'q') {\n        q = parseFloat(p[1]);\n        break;\n      }\n    }\n  }\n\n  return {\n    charset: charset,\n    q: q,\n    i: i\n  };\n}\n\n/**\n * Get the priority of a charset.\n * @private\n */\n\nfunction getCharsetPriority(charset, accepted, index) {\n  var priority = {o: -1, q: 0, s: 0};\n\n  for (var i = 0; i < accepted.length; i++) {\n    var spec = specify(charset, accepted[i], index);\n\n    if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {\n      priority = spec;\n    }\n  }\n\n  return priority;\n}\n\n/**\n * Get the specificity of the charset.\n * @private\n */\n\nfunction specify(charset, spec, index) {\n  var s = 0;\n  if(spec.charset.toLowerCase() === charset.toLowerCase()){\n    s |= 1;\n  } else if (spec.charset !== '*' ) {\n    return null\n  }\n\n  return {\n    i: index,\n    o: spec.i,\n    q: spec.q,\n    s: s\n  }\n}\n\n/**\n * Get the preferred charsets from an Accept-Charset header.\n * @public\n */\n\nfunction preferredCharsets(accept, provided) {\n  // RFC 2616 sec 14.2: no header = *\n  var accepts = parseAcceptCharset(accept === undefined ? '*' : accept || '');\n\n  if (!provided) {\n    // sorted list of all charsets\n    return accepts\n      .filter(isQuality)\n      .sort(compareSpecs)\n      .map(getFullCharset);\n  }\n\n  var priorities = provided.map(function getPriority(type, index) {\n    return getCharsetPriority(type, accepts, index);\n  });\n\n  // sorted list of accepted charsets\n  return priorities.filter(isQuality).sort(compareSpecs).map(function getCharset(priority) {\n    return provided[priorities.indexOf(priority)];\n  });\n}\n\n/**\n * Compare two specs.\n * @private\n */\n\nfunction compareSpecs(a, b) {\n  return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;\n}\n\n/**\n * Get full charset string.\n * @private\n */\n\nfunction getFullCharset(spec) {\n  return spec.charset;\n}\n\n/**\n * Check if a spec has any quality.\n * @private\n */\n\nfunction isQuality(spec) {\n  return spec.q > 0;\n}\n", "/**\n * negotiator\n * Copyright(c) 2012 Isaac Z. Schlueter\n * Copyright(c) 2014 Federico Romero\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = preferredEncodings;\nmodule.exports.preferredEncodings = preferredEncodings;\n\n/**\n * Module variables.\n * @private\n */\n\nvar simpleEncodingRegExp = /^\\s*([^\\s;]+)\\s*(?:;(.*))?$/;\n\n/**\n * Parse the Accept-Encoding header.\n * @private\n */\n\nfunction parseAcceptEncoding(accept) {\n  var accepts = accept.split(',');\n  var hasIdentity = false;\n  var minQuality = 1;\n\n  for (var i = 0, j = 0; i < accepts.length; i++) {\n    var encoding = parseEncoding(accepts[i].trim(), i);\n\n    if (encoding) {\n      accepts[j++] = encoding;\n      hasIdentity = hasIdentity || specify('identity', encoding);\n      minQuality = Math.min(minQuality, encoding.q || 1);\n    }\n  }\n\n  if (!hasIdentity) {\n    /*\n     * If identity doesn't explicitly appear in the accept-encoding header,\n     * it's added to the list of acceptable encoding with the lowest q\n     */\n    accepts[j++] = {\n      encoding: 'identity',\n      q: minQuality,\n      i: i\n    };\n  }\n\n  // trim accepts\n  accepts.length = j;\n\n  return accepts;\n}\n\n/**\n * Parse an encoding from the Accept-Encoding header.\n * @private\n */\n\nfunction parseEncoding(str, i) {\n  var match = simpleEncodingRegExp.exec(str);\n  if (!match) return null;\n\n  var encoding = match[1];\n  var q = 1;\n  if (match[2]) {\n    var params = match[2].split(';');\n    for (var j = 0; j < params.length; j++) {\n      var p = params[j].trim().split('=');\n      if (p[0] === 'q') {\n        q = parseFloat(p[1]);\n        break;\n      }\n    }\n  }\n\n  return {\n    encoding: encoding,\n    q: q,\n    i: i\n  };\n}\n\n/**\n * Get the priority of an encoding.\n * @private\n */\n\nfunction getEncodingPriority(encoding, accepted, index) {\n  var priority = {encoding: encoding, o: -1, q: 0, s: 0};\n\n  for (var i = 0; i < accepted.length; i++) {\n    var spec = specify(encoding, accepted[i], index);\n\n    if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {\n      priority = spec;\n    }\n  }\n\n  return priority;\n}\n\n/**\n * Get the specificity of the encoding.\n * @private\n */\n\nfunction specify(encoding, spec, index) {\n  var s = 0;\n  if(spec.encoding.toLowerCase() === encoding.toLowerCase()){\n    s |= 1;\n  } else if (spec.encoding !== '*' ) {\n    return null\n  }\n\n  return {\n    encoding: encoding,\n    i: index,\n    o: spec.i,\n    q: spec.q,\n    s: s\n  }\n};\n\n/**\n * Get the preferred encodings from an Accept-Encoding header.\n * @public\n */\n\nfunction preferredEncodings(accept, provided, preferred) {\n  var accepts = parseAcceptEncoding(accept || '');\n\n  var comparator = preferred ? function comparator (a, b) {\n    if (a.q !== b.q) {\n      return b.q - a.q // higher quality first\n    }\n\n    var aPreferred = preferred.indexOf(a.encoding)\n    var bPreferred = preferred.indexOf(b.encoding)\n\n    if (aPreferred === -1 && bPreferred === -1) {\n      // consider the original specifity/order\n      return (b.s - a.s) || (a.o - b.o) || (a.i - b.i)\n    }\n\n    if (aPreferred !== -1 && bPreferred !== -1) {\n      return aPreferred - bPreferred // consider the preferred order\n    }\n\n    return aPreferred === -1 ? 1 : -1 // preferred first\n  } : compareSpecs;\n\n  if (!provided) {\n    // sorted list of all encodings\n    return accepts\n      .filter(isQuality)\n      .sort(comparator)\n      .map(getFullEncoding);\n  }\n\n  var priorities = provided.map(function getPriority(type, index) {\n    return getEncodingPriority(type, accepts, index);\n  });\n\n  // sorted list of accepted encodings\n  return priorities.filter(isQuality).sort(comparator).map(function getEncoding(priority) {\n    return provided[priorities.indexOf(priority)];\n  });\n}\n\n/**\n * Compare two specs.\n * @private\n */\n\nfunction compareSpecs(a, b) {\n  return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i);\n}\n\n/**\n * Get full encoding string.\n * @private\n */\n\nfunction getFullEncoding(spec) {\n  return spec.encoding;\n}\n\n/**\n * Check if a spec has any quality.\n * @private\n */\n\nfunction isQuality(spec) {\n  return spec.q > 0;\n}\n", "/**\n * negotiator\n * Copyright(c) 2012 Isaac Z. Schlueter\n * Copyright(c) 2014 Federico Romero\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = preferredLanguages;\nmodule.exports.preferredLanguages = preferredLanguages;\n\n/**\n * Module variables.\n * @private\n */\n\nvar simpleLanguageRegExp = /^\\s*([^\\s\\-;]+)(?:-([^\\s;]+))?\\s*(?:;(.*))?$/;\n\n/**\n * Parse the Accept-Language header.\n * @private\n */\n\nfunction parseAcceptLanguage(accept) {\n  var accepts = accept.split(',');\n\n  for (var i = 0, j = 0; i < accepts.length; i++) {\n    var language = parseLanguage(accepts[i].trim(), i);\n\n    if (language) {\n      accepts[j++] = language;\n    }\n  }\n\n  // trim accepts\n  accepts.length = j;\n\n  return accepts;\n}\n\n/**\n * Parse a language from the Accept-Language header.\n * @private\n */\n\nfunction parseLanguage(str, i) {\n  var match = simpleLanguageRegExp.exec(str);\n  if (!match) return null;\n\n  var prefix = match[1]\n  var suffix = match[2]\n  var full = prefix\n\n  if (suffix) full += \"-\" + suffix;\n\n  var q = 1;\n  if (match[3]) {\n    var params = match[3].split(';')\n    for (var j = 0; j < params.length; j++) {\n      var p = params[j].split('=');\n      if (p[0] === 'q') q = parseFloat(p[1]);\n    }\n  }\n\n  return {\n    prefix: prefix,\n    suffix: suffix,\n    q: q,\n    i: i,\n    full: full\n  };\n}\n\n/**\n * Get the priority of a language.\n * @private\n */\n\nfunction getLanguagePriority(language, accepted, index) {\n  var priority = {o: -1, q: 0, s: 0};\n\n  for (var i = 0; i < accepted.length; i++) {\n    var spec = specify(language, accepted[i], index);\n\n    if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {\n      priority = spec;\n    }\n  }\n\n  return priority;\n}\n\n/**\n * Get the specificity of the language.\n * @private\n */\n\nfunction specify(language, spec, index) {\n  var p = parseLanguage(language)\n  if (!p) return null;\n  var s = 0;\n  if(spec.full.toLowerCase() === p.full.toLowerCase()){\n    s |= 4;\n  } else if (spec.prefix.toLowerCase() === p.full.toLowerCase()) {\n    s |= 2;\n  } else if (spec.full.toLowerCase() === p.prefix.toLowerCase()) {\n    s |= 1;\n  } else if (spec.full !== '*' ) {\n    return null\n  }\n\n  return {\n    i: index,\n    o: spec.i,\n    q: spec.q,\n    s: s\n  }\n};\n\n/**\n * Get the preferred languages from an Accept-Language header.\n * @public\n */\n\nfunction preferredLanguages(accept, provided) {\n  // RFC 2616 sec 14.4: no header = *\n  var accepts = parseAcceptLanguage(accept === undefined ? '*' : accept || '');\n\n  if (!provided) {\n    // sorted list of all languages\n    return accepts\n      .filter(isQuality)\n      .sort(compareSpecs)\n      .map(getFullLanguage);\n  }\n\n  var priorities = provided.map(function getPriority(type, index) {\n    return getLanguagePriority(type, accepts, index);\n  });\n\n  // sorted list of accepted languages\n  return priorities.filter(isQuality).sort(compareSpecs).map(function getLanguage(priority) {\n    return provided[priorities.indexOf(priority)];\n  });\n}\n\n/**\n * Compare two specs.\n * @private\n */\n\nfunction compareSpecs(a, b) {\n  return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;\n}\n\n/**\n * Get full language string.\n * @private\n */\n\nfunction getFullLanguage(spec) {\n  return spec.full;\n}\n\n/**\n * Check if a spec has any quality.\n * @private\n */\n\nfunction isQuality(spec) {\n  return spec.q > 0;\n}\n", "/**\n * negotiator\n * Copyright(c) 2012 Isaac Z. Schlueter\n * Copyright(c) 2014 Federico Romero\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = preferredMediaTypes;\nmodule.exports.preferredMediaTypes = preferredMediaTypes;\n\n/**\n * Module variables.\n * @private\n */\n\nvar simpleMediaTypeRegExp = /^\\s*([^\\s\\/;]+)\\/([^;\\s]+)\\s*(?:;(.*))?$/;\n\n/**\n * Parse the Accept header.\n * @private\n */\n\nfunction parseAccept(accept) {\n  var accepts = splitMediaTypes(accept);\n\n  for (var i = 0, j = 0; i < accepts.length; i++) {\n    var mediaType = parseMediaType(accepts[i].trim(), i);\n\n    if (mediaType) {\n      accepts[j++] = mediaType;\n    }\n  }\n\n  // trim accepts\n  accepts.length = j;\n\n  return accepts;\n}\n\n/**\n * Parse a media type from the Accept header.\n * @private\n */\n\nfunction parseMediaType(str, i) {\n  var match = simpleMediaTypeRegExp.exec(str);\n  if (!match) return null;\n\n  var params = Object.create(null);\n  var q = 1;\n  var subtype = match[2];\n  var type = match[1];\n\n  if (match[3]) {\n    var kvps = splitParameters(match[3]).map(splitKeyValuePair);\n\n    for (var j = 0; j < kvps.length; j++) {\n      var pair = kvps[j];\n      var key = pair[0].toLowerCase();\n      var val = pair[1];\n\n      // get the value, unwrapping quotes\n      var value = val && val[0] === '\"' && val[val.length - 1] === '\"'\n        ? val.slice(1, -1)\n        : val;\n\n      if (key === 'q') {\n        q = parseFloat(value);\n        break;\n      }\n\n      // store parameter\n      params[key] = value;\n    }\n  }\n\n  return {\n    type: type,\n    subtype: subtype,\n    params: params,\n    q: q,\n    i: i\n  };\n}\n\n/**\n * Get the priority of a media type.\n * @private\n */\n\nfunction getMediaTypePriority(type, accepted, index) {\n  var priority = {o: -1, q: 0, s: 0};\n\n  for (var i = 0; i < accepted.length; i++) {\n    var spec = specify(type, accepted[i], index);\n\n    if (spec && (priority.s - spec.s || priority.q - spec.q || priority.o - spec.o) < 0) {\n      priority = spec;\n    }\n  }\n\n  return priority;\n}\n\n/**\n * Get the specificity of the media type.\n * @private\n */\n\nfunction specify(type, spec, index) {\n  var p = parseMediaType(type);\n  var s = 0;\n\n  if (!p) {\n    return null;\n  }\n\n  if(spec.type.toLowerCase() == p.type.toLowerCase()) {\n    s |= 4\n  } else if(spec.type != '*') {\n    return null;\n  }\n\n  if(spec.subtype.toLowerCase() == p.subtype.toLowerCase()) {\n    s |= 2\n  } else if(spec.subtype != '*') {\n    return null;\n  }\n\n  var keys = Object.keys(spec.params);\n  if (keys.length > 0) {\n    if (keys.every(function (k) {\n      return spec.params[k] == '*' || (spec.params[k] || '').toLowerCase() == (p.params[k] || '').toLowerCase();\n    })) {\n      s |= 1\n    } else {\n      return null\n    }\n  }\n\n  return {\n    i: index,\n    o: spec.i,\n    q: spec.q,\n    s: s,\n  }\n}\n\n/**\n * Get the preferred media types from an Accept header.\n * @public\n */\n\nfunction preferredMediaTypes(accept, provided) {\n  // RFC 2616 sec 14.2: no header = */*\n  var accepts = parseAccept(accept === undefined ? '*/*' : accept || '');\n\n  if (!provided) {\n    // sorted list of all types\n    return accepts\n      .filter(isQuality)\n      .sort(compareSpecs)\n      .map(getFullType);\n  }\n\n  var priorities = provided.map(function getPriority(type, index) {\n    return getMediaTypePriority(type, accepts, index);\n  });\n\n  // sorted list of accepted types\n  return priorities.filter(isQuality).sort(compareSpecs).map(function getType(priority) {\n    return provided[priorities.indexOf(priority)];\n  });\n}\n\n/**\n * Compare two specs.\n * @private\n */\n\nfunction compareSpecs(a, b) {\n  return (b.q - a.q) || (b.s - a.s) || (a.o - b.o) || (a.i - b.i) || 0;\n}\n\n/**\n * Get full type string.\n * @private\n */\n\nfunction getFullType(spec) {\n  return spec.type + '/' + spec.subtype;\n}\n\n/**\n * Check if a spec has any quality.\n * @private\n */\n\nfunction isQuality(spec) {\n  return spec.q > 0;\n}\n\n/**\n * Count the number of quotes in a string.\n * @private\n */\n\nfunction quoteCount(string) {\n  var count = 0;\n  var index = 0;\n\n  while ((index = string.indexOf('\"', index)) !== -1) {\n    count++;\n    index++;\n  }\n\n  return count;\n}\n\n/**\n * Split a key value pair.\n * @private\n */\n\nfunction splitKeyValuePair(str) {\n  var index = str.indexOf('=');\n  var key;\n  var val;\n\n  if (index === -1) {\n    key = str;\n  } else {\n    key = str.slice(0, index);\n    val = str.slice(index + 1);\n  }\n\n  return [key, val];\n}\n\n/**\n * Split an Accept header into media types.\n * @private\n */\n\nfunction splitMediaTypes(accept) {\n  var accepts = accept.split(',');\n\n  for (var i = 1, j = 0; i < accepts.length; i++) {\n    if (quoteCount(accepts[j]) % 2 == 0) {\n      accepts[++j] = accepts[i];\n    } else {\n      accepts[j] += ',' + accepts[i];\n    }\n  }\n\n  // trim accepts\n  accepts.length = j + 1;\n\n  return accepts;\n}\n\n/**\n * Split a string of parameters.\n * @private\n */\n\nfunction splitParameters(str) {\n  var parameters = str.split(';');\n\n  for (var i = 1, j = 0; i < parameters.length; i++) {\n    if (quoteCount(parameters[j]) % 2 == 0) {\n      parameters[++j] = parameters[i];\n    } else {\n      parameters[j] += ';' + parameters[i];\n    }\n  }\n\n  // trim parameters\n  parameters.length = j + 1;\n\n  for (var i = 0; i < parameters.length; i++) {\n    parameters[i] = parameters[i].trim();\n  }\n\n  return parameters;\n}\n", "/*!\n * negotiator\n * Copyright(c) 2012 Federico Romero\n * Copyright(c) 2012-2014 Isaac Z. Schlueter\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict';\n\nvar preferredCharsets = require('./lib/charset')\nvar preferredEncodings = require('./lib/encoding')\nvar preferredLanguages = require('./lib/language')\nvar preferredMediaTypes = require('./lib/mediaType')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = Negotiator;\nmodule.exports.Negotiator = Negotiator;\n\n/**\n * Create a Negotiator instance from a request.\n * @param {object} request\n * @public\n */\n\nfunction Negotiator(request) {\n  if (!(this instanceof Negotiator)) {\n    return new Negotiator(request);\n  }\n\n  this.request = request;\n}\n\nNegotiator.prototype.charset = function charset(available) {\n  var set = this.charsets(available);\n  return set && set[0];\n};\n\nNegotiator.prototype.charsets = function charsets(available) {\n  return preferredCharsets(this.request.headers['accept-charset'], available);\n};\n\nNegotiator.prototype.encoding = function encoding(available, preferred) {\n  var set = this.encodings(available, preferred);\n  return set && set[0];\n};\n\nNegotiator.prototype.encodings = function encodings(available, preferred) {\n  return preferredEncodings(this.request.headers['accept-encoding'], available, preferred);\n};\n\nNegotiator.prototype.language = function language(available) {\n  var set = this.languages(available);\n  return set && set[0];\n};\n\nNegotiator.prototype.languages = function languages(available) {\n  return preferredLanguages(this.request.headers['accept-language'], available);\n};\n\nNegotiator.prototype.mediaType = function mediaType(available) {\n  var set = this.mediaTypes(available);\n  return set && set[0];\n};\n\nNegotiator.prototype.mediaTypes = function mediaTypes(available) {\n  return preferredMediaTypes(this.request.headers.accept, available);\n};\n\n// Backwards compatibility\nNegotiator.prototype.preferredCharset = Negotiator.prototype.charset;\nNegotiator.prototype.preferredCharsets = Negotiator.prototype.charsets;\nNegotiator.prototype.preferredEncoding = Negotiator.prototype.encoding;\nNegotiator.prototype.preferredEncodings = Negotiator.prototype.encodings;\nNegotiator.prototype.preferredLanguage = Negotiator.prototype.language;\nNegotiator.prototype.preferredLanguages = Negotiator.prototype.languages;\nNegotiator.prototype.preferredMediaType = Negotiator.prototype.mediaType;\nNegotiator.prototype.preferredMediaTypes = Negotiator.prototype.mediaTypes;\n", "import type { CacheHint, CachePolicy } from '@apollo/cache-control-types';\n\nexport function newCachePolicy(): CachePolicy {\n  return {\n    maxAge: undefined,\n    scope: undefined,\n    restrict(hint: CacheHint) {\n      if (\n        hint.maxAge !== undefined &&\n        (this.maxAge === undefined || hint.maxAge < this.maxAge)\n      ) {\n        this.maxAge = hint.maxAge;\n      }\n      if (hint.scope !== undefined && this.scope !== 'PRIVATE') {\n        this.scope = hint.scope;\n      }\n    },\n    replace(hint: CacheHint) {\n      if (hint.maxAge !== undefined) {\n        this.maxAge = hint.maxAge;\n      }\n      if (hint.scope !== undefined) {\n        this.scope = hint.scope;\n      }\n    },\n    policyIfCacheable() {\n      if (this.maxAge === undefined || this.maxAge === 0) {\n        return null;\n      }\n      return { maxAge: this.maxAge, scope: this.scope ?? 'PUBLIC' };\n    },\n  };\n}\n", "import { isNodeLike } from \"@apollo/utils.isnodelike\";\n\nexport function createHash(kind: string): import(\"crypto\").Hash {\n  // Some Node-like environments (like next.js Turbopack) apparently\n  // don't have module.require, so double-check before we call it.\n  // (But don't change the value of isNodeLike because other logic depends on it,\n  // like Apollo Server signal handling defaults.) This does mean that\n  // Turbopack will call sha.js instead of the native crypto module, but\n  // it sure beats throwing because module.require does not exist.\n  if (isNodeLike && module.require) {\n    // Use module.require instead of just require to avoid bundling whatever\n    // crypto polyfills a non-Node bundler might fall back to.\n    return module.require(\"crypto\").createHash(kind);\n  }\n  return require(\"sha.js\")(kind);\n}\n", "import { createHash } from '@apollo/utils.createhash';\nimport type { ApolloConfig, ApolloConfigInput } from './externalTypes/index.js';\nimport type { Logger } from '@apollo/utils.logger';\n\n// This function combines the `apollo` constructor argument and some environment\n// variables to come up with a full ApolloConfig.\nexport function determineApolloConfig(\n  input: ApolloConfigInput | undefined,\n  logger: Logger,\n): ApolloConfig {\n  const apolloConfig: ApolloConfig = {};\n\n  const {\n    APOLLO_KEY,\n    APOLLO_GRAPH_REF,\n    APOLLO_GRAPH_ID,\n    APOLLO_GRAPH_VARIANT,\n  } = process.env;\n\n  // Determine key.\n  if (input?.key) {\n    apolloConfig.key = input.key.trim();\n  } else if (APOLLO_KEY) {\n    apolloConfig.key = APOLLO_KEY.trim();\n  }\n  if ((input?.key ?? APOLLO_KEY) !== apolloConfig.key) {\n    logger.warn(\n      'The provided API key has unexpected leading or trailing whitespace. ' +\n        'Apollo Server will trim the key value before use.',\n    );\n  }\n\n  // Assert API key is a valid header value, since it's going to be used as one\n  // throughout.\n  if (apolloConfig.key) {\n    assertValidHeaderValue(apolloConfig.key);\n  }\n\n  // Determine key hash.\n  if (apolloConfig.key) {\n    apolloConfig.keyHash = createHash('sha512')\n      .update(apolloConfig.key)\n      .digest('hex');\n  }\n\n  // Determine graph ref, if provided together.\n  if (input?.graphRef) {\n    apolloConfig.graphRef = input.graphRef;\n  } else if (APOLLO_GRAPH_REF) {\n    apolloConfig.graphRef = APOLLO_GRAPH_REF;\n  }\n\n  // See if graph ID and variant were provided separately.\n  const graphId = input?.graphId ?? APOLLO_GRAPH_ID;\n  const graphVariant = input?.graphVariant ?? APOLLO_GRAPH_VARIANT;\n\n  if (apolloConfig.graphRef) {\n    if (graphId) {\n      throw new Error(\n        'Cannot specify both graph ref and graph ID. Please use ' +\n          '`apollo.graphRef` or `APOLLO_GRAPH_REF` without also setting the graph ID.',\n      );\n    }\n    if (graphVariant) {\n      throw new Error(\n        'Cannot specify both graph ref and graph variant. Please use ' +\n          '`apollo.graphRef` or `APOLLO_GRAPH_REF` without also setting the graph variant.',\n      );\n    }\n  } else if (graphId) {\n    // Graph ref is not specified, but the ID is. We can construct the ref\n    // from the ID and variant. Note that after this, we stop tracking the ID\n    // and variant, because Apollo Server 3 does not assume that all graph refs\n    // can be decomposed into ID and variant (except in the op reg plugin).\n    apolloConfig.graphRef = graphVariant\n      ? `${graphId}@${graphVariant}`\n      : graphId;\n  }\n\n  return apolloConfig;\n}\n\nfunction assertValidHeaderValue(value: string) {\n  // Ref: node-fetch@2.x `Headers` validation\n  // https://github.com/node-fetch/node-fetch/blob/9b9d45881e5ca68757077726b3c0ecf8fdca1f29/src/headers.js#L18\n  const invalidHeaderCharRegex = /[^\\t\\x20-\\x7e\\x80-\\xff]/g;\n  if (invalidHeaderCharRegex.test(value)) {\n    const invalidChars = value.match(invalidHeaderCharRegex)!;\n    throw new Error(\n      `The API key provided to Apollo Server contains characters which are invalid as HTTP header values. The following characters found in the key are invalid: ${invalidChars.join(\n        ', ',\n      )}. Valid header values may only contain ASCII visible characters. If you think there is an issue with your key, please contact Apollo support.`,\n    );\n  }\n}\n", "import { GraphQLError } from 'graphql';\n\nexport enum ApolloServerErrorCode {\n  INTERNAL_SERVER_ERROR = 'INTERNAL_SERVER_ERROR',\n  GRAPHQL_PARSE_FAILED = 'GRAPHQL_PARSE_FAILED',\n  GRAPHQL_VALIDATION_FAILED = 'GRAPHQL_VALIDATION_FAILED',\n  PERSISTED_QUERY_NOT_FOUND = 'PERSISTED_QUERY_NOT_FOUND',\n  PERSISTED_QUERY_NOT_SUPPORTED = 'PERSISTED_QUERY_NOT_SUPPORTED',\n  BAD_USER_INPUT = 'BAD_USER_INPUT',\n  OPERATION_RESOLUTION_FAILURE = 'OPERATION_RESOLUTION_FAILURE',\n  BAD_REQUEST = 'BAD_REQUEST',\n}\n\nexport enum ApolloServerValidationErrorCode {\n  INTROSPECTION_DISABLED = 'INTROSPECTION_DISABLED',\n  MAX_RECURSIVE_SELECTIONS_EXCEEDED = 'MAX_RECURSIVE_SELECTIONS_EXCEEDED',\n}\n\n/**\n * unwrapResolverError is a useful helper function for `formatError` hooks.\n * Errors thrown in resolvers are wrapped by graphql-js in a GraphQLError that\n * adds context such as the `path` to the field in the operation. If you'd like\n * to look directly at the original error thrown in the resolver (with whatever\n * data is on that error object, but without fields like `path`), you can use\n * this function. Note that other GraphQLErrors that contain `originalError`\n * (like parse errors) are not unwrapped by this function.\n */\nexport function unwrapResolverError(error: unknown): unknown {\n  if (error instanceof GraphQLError && error.path && error.originalError) {\n    return error.originalError;\n  }\n  return error;\n}\n", "export class HeaderMap extends Map<string, string> {\n  // In order for TypeScript to prevent a standard `Map` from being compatible\n  // with a `HeaderMap`, we need some additional property on the class.\n  // @ts-ignore (this is just unused)\n  private __identity = Symbol('HeaderMap');\n\n  override set(key: string, value: string): this {\n    return super.set(key.toLowerCase(), value);\n  }\n\n  override get(key: string) {\n    return super.get(key.toLowerCase());\n  }\n\n  override delete(key: string) {\n    return super.delete(key.toLowerCase());\n  }\n\n  override has(key: string) {\n    return super.has(key.toLowerCase());\n  }\n}\n", "import { GraphQLError, type GraphQLErrorOptions } from 'graphql';\nimport { ApolloServerErrorCode } from './errors/index.js';\nimport { newHTTPGraphQLHead } from './runHttpQuery.js';\nimport { HeaderMap } from './utils/HeaderMap.js';\n\n// These error classes are not part of Apollo Server's external API; the\n// ApolloServerErrorCode enum is (exported from `@apollo/server/errors`).\n\nclass GraphQLErrorWithCode extends GraphQLError {\n  constructor(\n    message: string,\n    code: ApolloServerErrorCode,\n    options?: GraphQLErrorOptions,\n  ) {\n    super(message, {\n      ...options,\n      extensions: { ...options?.extensions, code },\n    });\n    this.name = this.constructor.name;\n  }\n}\n\nexport class SyntaxError extends GraphQLErrorWithCode {\n  constructor(graphqlError: GraphQLError) {\n    super(graphqlError.message, ApolloServerErrorCode.GRAPHQL_PARSE_FAILED, {\n      source: graphqlError.source,\n      positions: graphqlError.positions,\n      extensions: { http: newHTTPGraphQLHead(400), ...graphqlError.extensions },\n      originalError: graphqlError,\n    });\n  }\n}\n\nexport class ValidationError extends GraphQLErrorWithCode {\n  constructor(graphqlError: GraphQLError) {\n    super(\n      graphqlError.message,\n      ApolloServerErrorCode.GRAPHQL_VALIDATION_FAILED,\n      {\n        nodes: graphqlError.nodes,\n        extensions: {\n          http: newHTTPGraphQLHead(400),\n          ...graphqlError.extensions,\n        },\n        originalError: graphqlError.originalError ?? graphqlError,\n      },\n    );\n  }\n}\n\n// Persisted query errors (especially \"not found\") need to be uncached, because\n// hopefully we're about to fill in the APQ cache and the same request will\n// succeed next time. We also want a 200 response to avoid any error handling\n// that may mask the contents of an error response. (Otherwise, the default\n// status code for a response with `errors` but no `data` (even null) is 400.)\nconst getPersistedQueryErrorHttp = () => ({\n  status: 200,\n  headers: new HeaderMap([\n    ['cache-control', 'private, no-cache, must-revalidate'],\n  ]),\n});\n\nexport class PersistedQueryNotFoundError extends GraphQLErrorWithCode {\n  constructor() {\n    super(\n      'PersistedQueryNotFound',\n      ApolloServerErrorCode.PERSISTED_QUERY_NOT_FOUND,\n      { extensions: { http: getPersistedQueryErrorHttp() } },\n    );\n  }\n}\n\nexport class PersistedQueryNotSupportedError extends GraphQLErrorWithCode {\n  constructor() {\n    super(\n      'PersistedQueryNotSupported',\n      ApolloServerErrorCode.PERSISTED_QUERY_NOT_SUPPORTED,\n      // Not super clear why we need this to be uncached (makes sense for\n      // PersistedQueryNotFoundError, because there we're about to fill the\n      // cache and make the next copy of the same request succeed) but we've\n      // been doing it for years so :shrug:\n      { extensions: { http: getPersistedQueryErrorHttp() } },\n    );\n  }\n}\n\nexport class UserInputError extends GraphQLErrorWithCode {\n  constructor(graphqlError: GraphQLError) {\n    super(graphqlError.message, ApolloServerErrorCode.BAD_USER_INPUT, {\n      nodes: graphqlError.nodes,\n      originalError: graphqlError.originalError ?? graphqlError,\n      extensions: graphqlError.extensions,\n    });\n  }\n}\n\nexport class OperationResolutionError extends GraphQLErrorWithCode {\n  constructor(graphqlError: GraphQLError) {\n    super(\n      graphqlError.message,\n      ApolloServerErrorCode.OPERATION_RESOLUTION_FAILURE,\n      {\n        nodes: graphqlError.nodes,\n        originalError: graphqlError.originalError ?? graphqlError,\n        extensions: {\n          http: newHTTPGraphQLHead(400),\n          ...graphqlError.extensions,\n        },\n      },\n    );\n  }\n}\n\nexport class BadRequestError extends GraphQLErrorWithCode {\n  constructor(message: string, options?: GraphQLErrorOptions) {\n    super(message, ApolloServerErrorCode.BAD_REQUEST, {\n      ...options,\n      // Default to 400 status code, but caller can override. (If caller just\n      // wants to override headers... well, they can't, sorry.)\n      extensions: { http: newHTTPGraphQLHead(400), ...options?.extensions },\n    });\n  }\n}\n", "import type {\n  BaseContext,\n  GraphQLExperimentalFormattedIncrementalResult,\n  GraphQLExperimentalFormattedInitialIncrementalExecutionResult,\n  GraphQLExperimentalFormattedSubsequentIncrementalExecutionResult,\n  GraphQLRequest,\n  HTTPGraphQLHead,\n  HTTPGraphQLRequest,\n  HTTPGraphQLResponse,\n} from './externalTypes/index.js';\nimport {\n  type ApolloServer,\n  type ApolloServerInternals,\n  chooseContentTypeForSingleResultResponse,\n  internalExecuteOperation,\n  MEDIA_TYPES,\n  type SchemaDerivedData,\n} from './ApolloServer.js';\nimport { type FormattedExecutionResult, Kind } from 'graphql';\nimport { BadRequestError } from './internalErrorClasses.js';\nimport Negotiator from 'negotiator';\nimport { HeaderMap } from './utils/HeaderMap.js';\n\nfunction fieldIfString(\n  o: Record<string, unknown>,\n  fieldName: string,\n): string | undefined {\n  const value = o[fieldName];\n  if (typeof value === 'string') {\n    return value;\n  }\n  return undefined;\n}\n\nfunction searchParamIfSpecifiedOnce(\n  searchParams: URLSearchParams,\n  paramName: string,\n) {\n  const values = searchParams.getAll(paramName);\n  switch (values.length) {\n    case 0:\n      return undefined;\n    case 1:\n      return values[0];\n    default:\n      throw new BadRequestError(\n        `The '${paramName}' search parameter may only be specified once.`,\n      );\n  }\n}\n\nfunction jsonParsedSearchParamIfSpecifiedOnce(\n  searchParams: URLSearchParams,\n  fieldName: string,\n): Record<string, unknown> | undefined {\n  const value = searchParamIfSpecifiedOnce(searchParams, fieldName);\n  if (value === undefined) {\n    return undefined;\n  }\n  let hopefullyRecord;\n  try {\n    hopefullyRecord = JSON.parse(value);\n  } catch {\n    throw new BadRequestError(\n      `The ${fieldName} search parameter contains invalid JSON.`,\n    );\n  }\n  if (!isStringRecord(hopefullyRecord)) {\n    throw new BadRequestError(\n      `The ${fieldName} search parameter should contain a JSON-encoded object.`,\n    );\n  }\n  return hopefullyRecord;\n}\n\nfunction fieldIfRecord(\n  o: Record<string, unknown>,\n  fieldName: string,\n): Record<string, unknown> | undefined {\n  const value = o[fieldName];\n  if (isStringRecord(value)) {\n    return value;\n  }\n  return undefined;\n}\n\nfunction isStringRecord(o: unknown): o is Record<string, unknown> {\n  return (\n    !!o && typeof o === 'object' && !Buffer.isBuffer(o) && !Array.isArray(o)\n  );\n}\n\nfunction isNonEmptyStringRecord(o: unknown): o is Record<string, unknown> {\n  return isStringRecord(o) && Object.keys(o).length > 0;\n}\n\nfunction ensureQueryIsStringOrMissing(query: unknown) {\n  if (!query || typeof query === 'string') {\n    return;\n  }\n  // Check for a common error first.\n  if ((query as any).kind === Kind.DOCUMENT) {\n    throw new BadRequestError(\n      \"GraphQL queries must be strings. It looks like you're sending the \" +\n        'internal graphql-js representation of a parsed query in your ' +\n        'request instead of a request in the GraphQL query language. You ' +\n        'can convert an AST to a string using the `print` function from ' +\n        '`graphql`, or use a client like `apollo-client` which converts ' +\n        'the internal representation to a string for you.',\n    );\n  } else {\n    throw new BadRequestError('GraphQL queries must be strings.');\n  }\n}\n\nexport async function runHttpQuery<TContext extends BaseContext>({\n  server,\n  httpRequest,\n  contextValue,\n  schemaDerivedData,\n  internals,\n  sharedResponseHTTPGraphQLHead,\n}: {\n  server: ApolloServer<TContext>;\n  httpRequest: HTTPGraphQLRequest;\n  contextValue: TContext;\n  schemaDerivedData: SchemaDerivedData;\n  internals: ApolloServerInternals<TContext>;\n  sharedResponseHTTPGraphQLHead: HTTPGraphQLHead | null;\n}): Promise<HTTPGraphQLResponse> {\n  let graphQLRequest: GraphQLRequest;\n\n  switch (httpRequest.method) {\n    case 'POST': {\n      if (!isNonEmptyStringRecord(httpRequest.body)) {\n        throw new BadRequestError(\n          'POST body missing, invalid Content-Type, or JSON object has no keys.',\n        );\n      }\n\n      ensureQueryIsStringOrMissing(httpRequest.body.query);\n\n      if (typeof httpRequest.body.variables === 'string') {\n        throw new BadRequestError(\n          '`variables` in a POST body should be provided as an object, not a recursively JSON-encoded string.',\n        );\n      }\n\n      if (typeof httpRequest.body.extensions === 'string') {\n        throw new BadRequestError(\n          '`extensions` in a POST body should be provided as an object, not a recursively JSON-encoded string.',\n        );\n      }\n\n      if (\n        'extensions' in httpRequest.body &&\n        httpRequest.body.extensions !== null &&\n        !isStringRecord(httpRequest.body.extensions)\n      ) {\n        throw new BadRequestError(\n          '`extensions` in a POST body must be an object if provided.',\n        );\n      }\n\n      if (\n        'variables' in httpRequest.body &&\n        httpRequest.body.variables !== null &&\n        !isStringRecord(httpRequest.body.variables)\n      ) {\n        throw new BadRequestError(\n          '`variables` in a POST body must be an object if provided.',\n        );\n      }\n\n      if (\n        'operationName' in httpRequest.body &&\n        httpRequest.body.operationName !== null &&\n        typeof httpRequest.body.operationName !== 'string'\n      ) {\n        throw new BadRequestError(\n          '`operationName` in a POST body must be a string if provided.',\n        );\n      }\n\n      graphQLRequest = {\n        query: fieldIfString(httpRequest.body, 'query'),\n        operationName: fieldIfString(httpRequest.body, 'operationName'),\n        variables: fieldIfRecord(httpRequest.body, 'variables'),\n        extensions: fieldIfRecord(httpRequest.body, 'extensions'),\n        http: httpRequest,\n      };\n\n      break;\n    }\n\n    case 'GET': {\n      const searchParams = new URLSearchParams(httpRequest.search);\n\n      graphQLRequest = {\n        query: searchParamIfSpecifiedOnce(searchParams, 'query'),\n        operationName: searchParamIfSpecifiedOnce(\n          searchParams,\n          'operationName',\n        ),\n        variables: jsonParsedSearchParamIfSpecifiedOnce(\n          searchParams,\n          'variables',\n        ),\n        extensions: jsonParsedSearchParamIfSpecifiedOnce(\n          searchParams,\n          'extensions',\n        ),\n        http: httpRequest,\n      };\n\n      break;\n    }\n    default:\n      throw new BadRequestError(\n        'Apollo Server supports only GET/POST requests.',\n        {\n          extensions: {\n            http: {\n              status: 405,\n              headers: new HeaderMap([['allow', 'GET, POST']]),\n            },\n          },\n        },\n      );\n  }\n\n  const graphQLResponse = await internalExecuteOperation(\n    {\n      server,\n      graphQLRequest,\n      internals,\n      schemaDerivedData,\n      sharedResponseHTTPGraphQLHead,\n    },\n    { contextValue },\n  );\n\n  if (graphQLResponse.body.kind === 'single') {\n    if (!graphQLResponse.http.headers.get('content-type')) {\n      // If we haven't already set the content-type (via a plugin or something),\n      // decide which content-type to use based on the accept header.\n      const contentType = chooseContentTypeForSingleResultResponse(httpRequest);\n      if (contentType === null) {\n        throw new BadRequestError(\n          `An 'accept' header was provided for this request which does not accept ` +\n            `${MEDIA_TYPES.APPLICATION_JSON} or ${MEDIA_TYPES.APPLICATION_GRAPHQL_RESPONSE_JSON}`,\n          // Use 406 Not Accepted\n          { extensions: { http: { status: 406 } } },\n        );\n      }\n      graphQLResponse.http.headers.set('content-type', contentType);\n    }\n\n    return {\n      ...graphQLResponse.http,\n      body: {\n        kind: 'complete',\n        string: await internals.stringifyResult(\n          orderExecutionResultFields(graphQLResponse.body.singleResult),\n        ),\n      },\n    };\n  }\n\n  // Note that incremental delivery is not yet part of the official GraphQL\n  // spec. We are implementing a proposed version of the spec, and require\n  // clients to explicitly state `deferSpec=20220824`. Once incremental delivery\n  // has been added to the GraphQL spec, we will support `accept` headers\n  // without `deferSpec` as well (perhaps with slightly different behavior if\n  // anything has changed).\n  const acceptHeader = httpRequest.headers.get('accept');\n  if (\n    !(\n      acceptHeader &&\n      new Negotiator({\n        headers: { accept: httpRequest.headers.get('accept') },\n      }).mediaType([\n        // mediaType() will return the first one that matches, so if the client\n        // doesn't include the deferSpec parameter it will match this one here,\n        // which isn't good enough.\n        MEDIA_TYPES.MULTIPART_MIXED_NO_DEFER_SPEC,\n        MEDIA_TYPES.MULTIPART_MIXED_EXPERIMENTAL,\n      ]) === MEDIA_TYPES.MULTIPART_MIXED_EXPERIMENTAL\n    )\n  ) {\n    // The client ran an operation that would yield multiple parts, but didn't\n    // specify `accept: multipart/mixed`. We return an error.\n    throw new BadRequestError(\n      'Apollo server received an operation that uses incremental delivery ' +\n        '(@defer or @stream), but the client does not accept multipart/mixed ' +\n        'HTTP responses. To enable incremental delivery support, add the HTTP ' +\n        \"header 'Accept: multipart/mixed; deferSpec=20220824'.\",\n      // Use 406 Not Accepted\n      { extensions: { http: { status: 406 } } },\n    );\n  }\n\n  graphQLResponse.http.headers.set(\n    'content-type',\n    'multipart/mixed; boundary=\"-\"; deferSpec=20220824',\n  );\n  return {\n    ...graphQLResponse.http,\n    body: {\n      kind: 'chunked',\n      asyncIterator: writeMultipartBody(\n        graphQLResponse.body.initialResult,\n        graphQLResponse.body.subsequentResults,\n      ),\n    },\n  };\n}\n\nasync function* writeMultipartBody(\n  initialResult: GraphQLExperimentalFormattedInitialIncrementalExecutionResult,\n  subsequentResults: AsyncIterable<GraphQLExperimentalFormattedSubsequentIncrementalExecutionResult>,\n): AsyncGenerator<string> {\n  // Note: we assume in this function that every result other than the last has\n  // hasNext=true and the last has hasNext=false. That is, we choose which kind\n  // of delimiter to place at the end of each block based on the contents of the\n  // message, not the structure of the async iterator. This makes sense because\n  // we want to write the delimiter as soon as each block is done (so the client\n  // can parse it immediately) but we may not know whether a general async\n  // iterator is finished until we do async work.\n\n  yield `\\r\\n---\\r\\ncontent-type: application/json; charset=utf-8\\r\\n\\r\\n${JSON.stringify(\n    orderInitialIncrementalExecutionResultFields(initialResult),\n  )}\\r\\n---${initialResult.hasNext ? '' : '--'}\\r\\n`;\n\n  for await (const result of subsequentResults) {\n    yield `content-type: application/json; charset=utf-8\\r\\n\\r\\n${JSON.stringify(\n      orderSubsequentIncrementalExecutionResultFields(result),\n    )}\\r\\n---${result.hasNext ? '' : '--'}\\r\\n`;\n  }\n}\n\n// See https://github.com/facebook/graphql/pull/384 for why\n// errors comes first.\nfunction orderExecutionResultFields(\n  result: FormattedExecutionResult,\n): FormattedExecutionResult {\n  return {\n    errors: result.errors,\n    data: result.data,\n    extensions: result.extensions,\n  };\n}\nfunction orderInitialIncrementalExecutionResultFields(\n  result: GraphQLExperimentalFormattedInitialIncrementalExecutionResult,\n): GraphQLExperimentalFormattedInitialIncrementalExecutionResult {\n  return {\n    hasNext: result.hasNext,\n    errors: result.errors,\n    data: result.data,\n    incremental: orderIncrementalResultFields(result.incremental),\n    extensions: result.extensions,\n  };\n}\nfunction orderSubsequentIncrementalExecutionResultFields(\n  result: GraphQLExperimentalFormattedSubsequentIncrementalExecutionResult,\n): GraphQLExperimentalFormattedSubsequentIncrementalExecutionResult {\n  return {\n    hasNext: result.hasNext,\n    incremental: orderIncrementalResultFields(result.incremental),\n    extensions: result.extensions,\n  };\n}\n\nfunction orderIncrementalResultFields(\n  incremental?: readonly GraphQLExperimentalFormattedIncrementalResult[],\n): undefined | GraphQLExperimentalFormattedIncrementalResult[] {\n  return incremental?.map((i: any) => ({\n    hasNext: i.hasNext,\n    errors: i.errors,\n    path: i.path,\n    label: i.label,\n    data: i.data,\n    items: i.items,\n    extensions: i.extensions,\n  }));\n}\n\n// The result of a curl does not appear well in the terminal, so we add an extra new line\nexport function prettyJSONStringify(value: FormattedExecutionResult) {\n  return JSON.stringify(value) + '\\n';\n}\n\nexport function newHTTPGraphQLHead(status?: number): HTTPGraphQLHead {\n  return {\n    status,\n    headers: new HeaderMap(),\n  };\n}\n\n// Updates `target` with status code and headers from `source`. For now let's\n// consider it undefined what happens if both have a status code set or both set\n// the same header.\nexport function mergeHTTPGraphQLHead(\n  target: HTTPGraphQLHead,\n  source: HTTPGraphQLHead,\n) {\n  if (source.status) {\n    target.status = source.status;\n  }\n  if (source.headers) {\n    for (const [name, value] of source.headers) {\n      // If source.headers contains non-lowercase header names, this will\n      // catch that case as long as target.headers is a HeaderMap.\n      target.headers.set(name, value);\n    }\n  }\n}\n", "// The functions in this file are not part of Apollo Server's external API.\n\nimport {\n  GraphQLError,\n  type GraphQLErrorExtensions,\n  type GraphQLFormattedError,\n} from 'graphql';\nimport { ApolloServerErrorCode } from './errors/index.js';\nimport type { HTTPGraphQLHead } from './externalTypes/http.js';\nimport { mergeHTTPGraphQLHead, newHTTPGraphQLHead } from './runHttpQuery.js';\nimport { HeaderMap } from './utils/HeaderMap.js';\n\n// This function accepts any value that were thrown and convert it to GraphQLFormattedError.\n// It also add default extensions.code and copy stack trace onto an extension if requested.\n// Additionally, it returns an `HTTPGraphQLHead` created from combining the values of any\n// `HTTPGraphqlHead` objects found on `extensions.http` (the behavior when multiple errors\n// set a status code or set the same header should be treated as undefined); these extensions\n// are removed from the formatted error.\n//\n// This function should not throw.\nexport function normalizeAndFormatErrors(\n  errors: ReadonlyArray<unknown>,\n  options: {\n    formatError?: (\n      formattedError: GraphQLFormattedError,\n      error: unknown,\n    ) => GraphQLFormattedError;\n    includeStacktraceInErrorResponses?: boolean;\n  } = {},\n): {\n  formattedErrors: Array<GraphQLFormattedError>;\n  httpFromErrors: HTTPGraphQLHead;\n} {\n  const formatError = options.formatError ?? ((error) => error);\n  const httpFromErrors = newHTTPGraphQLHead();\n\n  return {\n    httpFromErrors,\n    formattedErrors: errors.map((error) => {\n      try {\n        return formatError(enrichError(error), error);\n      } catch (formattingError) {\n        if (options.includeStacktraceInErrorResponses) {\n          // includeStacktraceInErrorResponses is used in development\n          // so it will be helpful to show errors thrown by formatError hooks in that mode\n          return enrichError(formattingError);\n        } else {\n          // obscure error\n          return {\n            message: 'Internal server error',\n            extensions: { code: ApolloServerErrorCode.INTERNAL_SERVER_ERROR },\n          };\n        }\n      }\n    }),\n  };\n\n  function enrichError(maybeError: unknown): GraphQLFormattedError {\n    const graphqlError = ensureGraphQLError(maybeError);\n\n    const extensions: GraphQLErrorExtensions = {\n      ...graphqlError.extensions,\n      code:\n        graphqlError.extensions.code ??\n        ApolloServerErrorCode.INTERNAL_SERVER_ERROR,\n    };\n\n    if (isPartialHTTPGraphQLHead(extensions.http)) {\n      mergeHTTPGraphQLHead(httpFromErrors, {\n        headers: new HeaderMap(),\n        ...extensions.http,\n      });\n      delete extensions.http;\n    }\n\n    if (options.includeStacktraceInErrorResponses) {\n      // Note that if ensureGraphQLError created graphqlError from an\n      // originalError, graphqlError.stack will be the same as\n      // originalError.stack due to some special code in the GraphQLError\n      // constructor.\n      extensions.stacktrace = graphqlError.stack?.split('\\n');\n    }\n\n    return { ...graphqlError.toJSON(), extensions };\n  }\n}\n\nexport function ensureError(maybeError: unknown): Error {\n  return maybeError instanceof Error\n    ? maybeError\n    : new GraphQLError('Unexpected error value: ' + String(maybeError));\n}\n\nexport function ensureGraphQLError(\n  maybeError: unknown,\n  messagePrefixIfNotGraphQLError: string = '',\n): GraphQLError {\n  const error: Error = ensureError(maybeError);\n\n  return error instanceof GraphQLError\n    ? error\n    : new GraphQLError(messagePrefixIfNotGraphQLError + error.message, {\n        originalError: error,\n      });\n}\n\nfunction isPartialHTTPGraphQLHead(x: unknown): x is Partial<HTTPGraphQLHead> {\n  return (\n    !!x &&\n    typeof x === 'object' &&\n    (!('status' in x) || typeof (x as any).status === 'number') &&\n    (!('headers' in x) || (x as any).headers instanceof Map)\n  );\n}\n", "import type {\n  BaseContext,\n  HTTPGraphQLRequest,\n  HTTPGraphQLResponse,\n} from './externalTypes/index.js';\nimport type {\n  ApolloServer,\n  ApolloServerInternals,\n  SchemaDerivedData,\n} from './ApolloServer';\nimport { newHTTPGraphQLHead, runHttpQuery } from './runHttpQuery.js';\nimport { BadRequestError } from './internalErrorClasses.js';\n\nasync function runBatchedHttpQuery<TContext extends BaseContext>({\n  server,\n  batchRequest,\n  body,\n  contextValue,\n  schemaDerivedData,\n  internals,\n}: {\n  server: ApolloServer<TContext>;\n  batchRequest: HTTPGraphQLRequest;\n  body: unknown[];\n  contextValue: TContext;\n  schemaDerivedData: SchemaDerivedData;\n  internals: ApolloServerInternals<TContext>;\n}): Promise<HTTPGraphQLResponse> {\n  if (body.length === 0) {\n    throw new BadRequestError('No operations found in request.');\n  }\n\n  // This single HTTPGraphQLHead is shared across all the operations in the\n  // batch. This means that any changes to response headers or status code from\n  // one operation can be immediately seen by other operations. Plugins that set\n  // response headers or status code can then choose to combine the data they\n  // are setting with data that may already be there from another operation as\n  // they choose.\n  const sharedResponseHTTPGraphQLHead = newHTTPGraphQLHead();\n  const responseBodies = await Promise.all(\n    body.map(async (bodyPiece: unknown) => {\n      const singleRequest: HTTPGraphQLRequest = {\n        ...batchRequest,\n        body: bodyPiece,\n      };\n\n      const response = await runHttpQuery({\n        server,\n        httpRequest: singleRequest,\n        contextValue,\n        schemaDerivedData,\n        internals,\n        sharedResponseHTTPGraphQLHead,\n      });\n\n      if (response.body.kind === 'chunked') {\n        throw Error(\n          'Incremental delivery is not implemented for batch requests',\n        );\n      }\n      return response.body.string;\n    }),\n  );\n  return {\n    ...sharedResponseHTTPGraphQLHead,\n    body: { kind: 'complete', string: `[${responseBodies.join(',')}]` },\n  };\n}\n\nexport async function runPotentiallyBatchedHttpQuery<\n  TContext extends BaseContext,\n>(\n  server: ApolloServer<TContext>,\n  httpGraphQLRequest: HTTPGraphQLRequest,\n  contextValue: TContext,\n  schemaDerivedData: SchemaDerivedData,\n  internals: ApolloServerInternals<TContext>,\n): Promise<HTTPGraphQLResponse> {\n  if (\n    !(\n      httpGraphQLRequest.method === 'POST' &&\n      Array.isArray(httpGraphQLRequest.body)\n    )\n  ) {\n    return await runHttpQuery({\n      server,\n      httpRequest: httpGraphQLRequest,\n      contextValue,\n      schemaDerivedData,\n      internals,\n      sharedResponseHTTPGraphQLHead: null,\n    });\n  }\n  if (internals.allowBatchedHttpRequests) {\n    return await runBatchedHttpQuery({\n      server,\n      batchRequest: httpGraphQLRequest,\n      body: httpGraphQLRequest.body as unknown[],\n      contextValue,\n      schemaDerivedData,\n      internals,\n    });\n  }\n  throw new BadRequestError('Operation batching disabled.');\n}\n", "import type { BaseContext, ApolloServerPlugin } from './externalTypes/index.js';\n\n// This file's exports should not be exported from the overall\n// @apollo/server module.\n\n// The internal plugins implement this interface which\n// ApolloServer.ensurePluginInstantiation uses to figure out if the plugins have\n// already been installed (or explicitly disabled via the matching Disable\n// plugins).\nexport interface InternalApolloServerPlugin<TContext extends BaseContext>\n  extends ApolloServerPlugin<TContext> {\n  // Used to identify a few specific plugins that are instantiated\n  // by default if not explicitly used or disabled.\n  __internal_plugin_id__: InternalPluginId;\n  __is_disabled_plugin__: boolean;\n}\n\n// Helper function for writing internal plugins which lets you write an object\n// that is type-checked as InternalApolloServerPlugin but is still only of type\n// ApolloServerPlugin (as appropriate for externally-exported plugin-returning\n// functions).\nexport function internalPlugin<TContext extends BaseContext>(\n  p: InternalApolloServerPlugin<TContext>,\n): ApolloServerPlugin<TContext> {\n  return p;\n}\n\nexport type InternalPluginId =\n  | 'CacheControl'\n  | 'LandingPageDisabled'\n  | 'SchemaReporting'\n  | 'InlineTrace'\n  | 'UsageReporting'\n  | 'DisableSuggestions';\n\nexport function pluginIsInternal<TContext extends BaseContext>(\n  plugin: ApolloServerPlugin<TContext>,\n): plugin is InternalApolloServerPlugin<TContext> {\n  // We could call the function and compare it to the list above, but this seems\n  // good enough.\n  return '__internal_plugin_id__' in plugin;\n}\n", "\"use strict\";\n\nexports.removeLeadingAndTrailingHTTPWhitespace = string => {\n  return string.replace(/^[ \\t\\n\\r]+/u, \"\").replace(/[ \\t\\n\\r]+$/u, \"\");\n};\n\nexports.removeTrailingHTTPWhitespace = string => {\n  return string.replace(/[ \\t\\n\\r]+$/u, \"\");\n};\n\nexports.isHTTPWhitespaceChar = char => {\n  return char === \" \" || char === \"\\t\" || char === \"\\n\" || char === \"\\r\";\n};\n\nexports.solelyContainsHTTPTokenCodePoints = string => {\n  return /^[-!#$%&'*+.^_`|~A-Za-z0-9]*$/u.test(string);\n};\n\nexports.soleyContainsHTTPQuotedStringTokenCodePoints = string => {\n  return /^[\\t\\u0020-\\u007E\\u0080-\\u00FF]*$/u.test(string);\n};\n\nexports.asciiLowercase = string => {\n  return string.replace(/[A-Z]/ug, l => l.toLowerCase());\n};\n\n// This variant only implements it with the extract-value flag set.\nexports.collectAnHTTPQuotedString = (input, position) => {\n  let value = \"\";\n\n  position++;\n\n  while (true) {\n    while (position < input.length && input[position] !== \"\\\"\" && input[position] !== \"\\\\\") {\n      value += input[position];\n      ++position;\n    }\n\n    if (position >= input.length) {\n      break;\n    }\n\n    const quoteOrBackslash = input[position];\n    ++position;\n\n    if (quoteOrBackslash === \"\\\\\") {\n      if (position >= input.length) {\n        value += \"\\\\\";\n        break;\n      }\n\n      value += input[position];\n      ++position;\n    } else {\n      break;\n    }\n  }\n\n  return [value, position];\n};\n", "\"use strict\";\nconst {\n  asciiLowercase,\n  solelyContainsHTTPTokenCodePoints,\n  soleyContainsHTTPQuotedStringTokenCodePoints\n} = require(\"./utils.js\");\n\nmodule.exports = class MIMETypeParameters {\n  constructor(map) {\n    this._map = map;\n  }\n\n  get size() {\n    return this._map.size;\n  }\n\n  get(name) {\n    name = asciiLowercase(String(name));\n    return this._map.get(name);\n  }\n\n  has(name) {\n    name = asciiLowercase(String(name));\n    return this._map.has(name);\n  }\n\n  set(name, value) {\n    name = asciiLowercase(String(name));\n    value = String(value);\n\n    if (!solelyContainsHTTPTokenCodePoints(name)) {\n      throw new Error(`Invalid MIME type parameter name \"${name}\": only HTTP token code points are valid.`);\n    }\n    if (!soleyContainsHTTPQuotedStringTokenCodePoints(value)) {\n      throw new Error(`Invalid MIME type parameter value \"${value}\": only HTTP quoted-string token code points are ` +\n                      `valid.`);\n    }\n\n    return this._map.set(name, value);\n  }\n\n  clear() {\n    this._map.clear();\n  }\n\n  delete(name) {\n    name = asciiLowercase(String(name));\n    return this._map.delete(name);\n  }\n\n  forEach(callbackFn, thisArg) {\n    this._map.forEach(callbackFn, thisArg);\n  }\n\n  keys() {\n    return this._map.keys();\n  }\n\n  values() {\n    return this._map.values();\n  }\n\n  entries() {\n    return this._map.entries();\n  }\n\n  [Symbol.iterator]() {\n    return this._map[Symbol.iterator]();\n  }\n};\n", "\"use strict\";\nconst {\n  removeLeadingAndTrailingHTTPWhitespace,\n  removeTrailingHTTPWhitespace,\n  isHTTPWhitespaceChar,\n  solelyContainsHTTPTokenCodePoints,\n  soleyContainsHTTPQuotedStringTokenCodePoints,\n  asciiLowercase,\n  collectAnHTTPQuotedString\n} = require(\"./utils.js\");\n\nmodule.exports = input => {\n  input = removeLeadingAndTrailingHTTPWhitespace(input);\n\n  let position = 0;\n  let type = \"\";\n  while (position < input.length && input[position] !== \"/\") {\n    type += input[position];\n    ++position;\n  }\n\n  if (type.length === 0 || !solelyContainsHTTPTokenCodePoints(type)) {\n    return null;\n  }\n\n  if (position >= input.length) {\n    return null;\n  }\n\n  // Skips past \"/\"\n  ++position;\n\n  let subtype = \"\";\n  while (position < input.length && input[position] !== \";\") {\n    subtype += input[position];\n    ++position;\n  }\n\n  subtype = removeTrailingHTTPWhitespace(subtype);\n\n  if (subtype.length === 0 || !solelyContainsHTTPTokenCodePoints(subtype)) {\n    return null;\n  }\n\n  const mimeType = {\n    type: asciiLowercase(type),\n    subtype: asciiLowercase(subtype),\n    parameters: new Map()\n  };\n\n  while (position < input.length) {\n    // Skip past \";\"\n    ++position;\n\n    while (isHTTPWhitespaceChar(input[position])) {\n      ++position;\n    }\n\n    let parameterName = \"\";\n    while (position < input.length && input[position] !== \";\" && input[position] !== \"=\") {\n      parameterName += input[position];\n      ++position;\n    }\n    parameterName = asciiLowercase(parameterName);\n\n    if (position < input.length) {\n      if (input[position] === \";\") {\n        continue;\n      }\n\n      // Skip past \"=\"\n      ++position;\n    }\n\n    let parameterValue = null;\n    if (input[position] === \"\\\"\") {\n      [parameterValue, position] = collectAnHTTPQuotedString(input, position);\n\n      while (position < input.length && input[position] !== \";\") {\n        ++position;\n      }\n    } else {\n      parameterValue = \"\";\n      while (position < input.length && input[position] !== \";\") {\n        parameterValue += input[position];\n        ++position;\n      }\n\n      parameterValue = removeTrailingHTTPWhitespace(parameterValue);\n\n      if (parameterValue === \"\") {\n        continue;\n      }\n    }\n\n    if (parameterName.length > 0 &&\n        solelyContainsHTTPTokenCodePoints(parameterName) &&\n        soleyContainsHTTPQuotedStringTokenCodePoints(parameterValue) &&\n        !mimeType.parameters.has(parameterName)) {\n      mimeType.parameters.set(parameterName, parameterValue);\n    }\n  }\n\n  return mimeType;\n};\n", "\"use strict\";\nconst { solelyContainsHTTPTokenCodePoints } = require(\"./utils.js\");\n\nmodule.exports = mimeType => {\n  let serialization = `${mimeType.type}/${mimeType.subtype}`;\n\n  if (mimeType.parameters.size === 0) {\n    return serialization;\n  }\n\n  for (let [name, value] of mimeType.parameters) {\n    serialization += \";\";\n    serialization += name;\n    serialization += \"=\";\n\n    if (!solelyContainsHTTPTokenCodePoints(value) || value.length === 0) {\n      value = value.replace(/([\"\\\\])/ug, \"\\\\$1\");\n      value = `\"${value}\"`;\n    }\n\n    serialization += value;\n  }\n\n  return serialization;\n};\n", "\"use strict\";\nconst MIMETypeParameters = require(\"./mime-type-parameters.js\");\nconst parse = require(\"./parser.js\");\nconst serialize = require(\"./serializer.js\");\nconst {\n  asciiLowercase,\n  solelyContainsHTTPTokenCodePoints\n} = require(\"./utils.js\");\n\nmodule.exports = class MIMEType {\n  constructor(string) {\n    string = String(string);\n    const result = parse(string);\n    if (result === null) {\n      throw new Error(`Could not parse MIME type string \"${string}\"`);\n    }\n\n    this._type = result.type;\n    this._subtype = result.subtype;\n    this._parameters = new MIMETypeParameters(result.parameters);\n  }\n\n  static parse(string) {\n    try {\n      return new this(string);\n    } catch (e) {\n      return null;\n    }\n  }\n\n  get essence() {\n    return `${this.type}/${this.subtype}`;\n  }\n\n  get type() {\n    return this._type;\n  }\n\n  set type(value) {\n    value = asciiLowercase(String(value));\n\n    if (value.length === 0) {\n      throw new Error(\"Invalid type: must be a non-empty string\");\n    }\n    if (!solelyContainsHTTPTokenCodePoints(value)) {\n      throw new Error(`Invalid type ${value}: must contain only HTTP token code points`);\n    }\n\n    this._type = value;\n  }\n\n  get subtype() {\n    return this._subtype;\n  }\n\n  set subtype(value) {\n    value = asciiLowercase(String(value));\n\n    if (value.length === 0) {\n      throw new Error(\"Invalid subtype: must be a non-empty string\");\n    }\n    if (!solelyContainsHTTPTokenCodePoints(value)) {\n      throw new Error(`Invalid subtype ${value}: must contain only HTTP token code points`);\n    }\n\n    this._subtype = value;\n  }\n\n  get parameters() {\n    return this._parameters;\n  }\n\n  toString() {\n    // The serialize function works on both \"MIME type records\" (i.e. the results of parse) and on this class, since\n    // this class's interface is identical.\n    return serialize(this);\n  }\n\n  isJavaScript({ prohibitParameters = false } = {}) {\n    switch (this._type) {\n      case \"text\": {\n        switch (this._subtype) {\n          case \"ecmascript\":\n          case \"javascript\":\n          case \"javascript1.0\":\n          case \"javascript1.1\":\n          case \"javascript1.2\":\n          case \"javascript1.3\":\n          case \"javascript1.4\":\n          case \"javascript1.5\":\n          case \"jscript\":\n          case \"livescript\":\n          case \"x-ecmascript\":\n          case \"x-javascript\": {\n            return !prohibitParameters || this._parameters.size === 0;\n          }\n          default: {\n            return false;\n          }\n        }\n      }\n      case \"application\": {\n        switch (this._subtype) {\n          case \"ecmascript\":\n          case \"javascript\":\n          case \"x-ecmascript\":\n          case \"x-javascript\": {\n            return !prohibitParameters || this._parameters.size === 0;\n          }\n          default: {\n            return false;\n          }\n        }\n      }\n      default: {\n        return false;\n      }\n    }\n  }\n  isXML() {\n    return (this._subtype === \"xml\" && (this._type === \"text\" || this._type === \"application\")) ||\n           this._subtype.endsWith(\"+xml\");\n  }\n  isHTML() {\n    return this._subtype === \"html\" && this._type === \"text\";\n  }\n};\n", "import MIMEType from 'whatwg-mimetype';\nimport { BadRequestError } from './internalErrorClasses.js';\nimport type { HeaderMap } from './utils/HeaderMap.js';\n\n// Our recommended set of CSRF prevention headers. Operations that do not\n// provide a content-type such as `application/json` (in practice, this\n// means GET operations) must include at least one of these headers.\n// Apollo Client Web's default behavior is to always sends a\n// `content-type` even for `GET`, and Apollo iOS and Apollo Kotlin always\n// send `x-apollo-operation-name`. So if you set\n// `csrfPreventionRequestHeaders: true` then any `GET` operation from these\n// three client projects and any `POST` operation at all should work\n// successfully; if you need `GET`s from another kind of client to work,\n// just add `apollo-require-preflight: true` to their requests.\nexport const recommendedCsrfPreventionRequestHeaders = [\n  'x-apollo-operation-name',\n  'apollo-require-preflight',\n];\n\n// See https://fetch.spec.whatwg.org/#cors-safelisted-request-header\nconst NON_PREFLIGHTED_CONTENT_TYPES = [\n  'application/x-www-form-urlencoded',\n  'multipart/form-data',\n  'text/plain',\n];\n\n// We don't want random websites to be able to execute actual GraphQL operations\n// from a user's browser unless our CORS policy supports it. It's not good\n// enough just to ensure that the browser can't read the response from the\n// operation; we also want to prevent CSRF, where the attacker can cause side\n// effects with an operation or can measure the timing of a read operation. Our\n// goal is to ensure that we don't run the context function or execute the\n// GraphQL operation until the browser has evaluated the CORS policy, which\n// means we want all operations to be pre-flighted. We can do that by only\n// processing operations that have at least one header set that appears to be\n// manually set by the JS code rather than by the browser automatically.\n//\n// POST requests generally have a content-type `application/json`, which is\n// sufficient to trigger preflighting. So we take extra care with requests that\n// specify no content-type or that specify one of the three non-preflighted\n// content types. For those operations, we require (if this feature is enabled)\n// one of a set of specific headers to be set. By ensuring that every operation\n// either has a custom content-type or sets one of these headers, we know we\n// won't execute operations at the request of origins who our CORS policy will\n// block.\nexport function preventCsrf(\n  headers: HeaderMap,\n  csrfPreventionRequestHeaders: string[],\n) {\n  const contentType = headers.get('content-type');\n\n  // We have to worry about CSRF if it looks like this may have been a\n  // non-preflighted request. If we see a content-type header that is not one of\n  // the three CORS-safelisted MIME types (see\n  // https://fetch.spec.whatwg.org/#cors-safelisted-request-header) then we know\n  // it was preflighted and we don't have to worry.\n  if (contentType !== undefined) {\n    const contentTypeParsed = MIMEType.parse(contentType);\n    if (contentTypeParsed === null) {\n      // If we got null, then parsing the content-type failed... which is\n      // actually *ok* because that would lead to a preflight. (For example, the\n      // header is empty, or doesn't have a slash, or has bad characters.) The\n      // scary CSRF case is only if there's *not* an error. So it is actually\n      // fine for us to just `return` here. (That said, it would also be\n      // reasonable to reject such requests with provided yet unparsable\n      // Content-Type here.)\n      return;\n    }\n    if (!NON_PREFLIGHTED_CONTENT_TYPES.includes(contentTypeParsed.essence)) {\n      // We managed to parse a MIME type that was not one of the\n      // CORS-safelisted ones. (Probably application/json!) That means that if\n      // the client is a browser, the browser must have applied CORS\n      // preflighting and we don't have to worry about CSRF.\n      return;\n    }\n  }\n\n  // Either there was no content-type, or the content-type parsed properly as\n  // one of the three CORS-safelisted values. Let's look for another header that\n  // (if this was a browser) must have been set by the user's code and would\n  // have caused a preflight.\n  if (\n    csrfPreventionRequestHeaders.some((header) => {\n      const value = headers.get(header);\n      return value !== undefined && value.length > 0;\n    })\n  ) {\n    return;\n  }\n\n  throw new BadRequestError(\n    `This operation has been blocked as a potential Cross-Site Request Forgery ` +\n      `(CSRF). Please either specify a 'content-type' header (with a type that ` +\n      `is not one of ${NON_PREFLIGHTED_CONTENT_TYPES.join(', ')}) or provide ` +\n      `a non-empty value for one of the following headers: ${csrfPreventionRequestHeaders.join(\n        ', ',\n      )}\\n`,\n  );\n}\n", "import {\n  type GraphQLSchema,\n  type GraphQLField,\n  getNamedType,\n  GraphQLObjectType,\n  type GraphQLFieldResolver,\n  defaultFieldResolver,\n} from 'graphql';\nimport type {\n  BaseContext,\n  GraphQLRequestExecutionListener,\n} from '../externalTypes/index.js';\n\nexport const symbolExecutionDispatcherWillResolveField = Symbol(\n  'apolloServerExecutionDispatcherWillResolveField',\n);\nexport const symbolUserFieldResolver = Symbol('apolloServerUserFieldResolver');\nconst symbolPluginsEnabled = Symbol('apolloServerPluginsEnabled');\n\nexport function enablePluginsForSchemaResolvers<TContext extends BaseContext>(\n  schema: GraphQLSchema & { [symbolPluginsEnabled]?: boolean },\n) {\n  if (pluginsEnabledForSchemaResolvers(schema)) {\n    return schema;\n  }\n  Object.defineProperty(schema, symbolPluginsEnabled, {\n    value: true,\n  });\n\n  const typeMap = schema.getTypeMap();\n  Object.values(typeMap).forEach((type) => {\n    if (\n      !getNamedType(type).name.startsWith('__') &&\n      type instanceof GraphQLObjectType\n    ) {\n      const fields = type.getFields();\n      Object.values(fields).forEach((field) => {\n        wrapField<TContext>(field);\n      });\n    }\n  });\n\n  return schema;\n}\n\nexport function pluginsEnabledForSchemaResolvers(\n  schema: GraphQLSchema & { [symbolPluginsEnabled]?: boolean },\n): boolean {\n  return !!schema[symbolPluginsEnabled];\n}\n\nfunction wrapField<TContext extends BaseContext>(\n  field: GraphQLField<any, any>,\n): void {\n  const originalFieldResolve = field.resolve;\n\n  field.resolve = (source, args, contextValue, info) => {\n    const willResolveField = contextValue?.[\n      symbolExecutionDispatcherWillResolveField\n    ] as\n      | GraphQLRequestExecutionListener<TContext>['willResolveField']\n      | undefined;\n\n    const userFieldResolver = contextValue?.[symbolUserFieldResolver] as\n      | GraphQLFieldResolver<any, any>\n      | undefined;\n\n    // The technique for implementing a  \"did resolve field\" is accomplished by\n    // returning a function from the `willResolveField` handler.  While there\n    // may be several callbacks, depending on the number of plugins which have\n    // implemented a `willResolveField` hook, this hook will call them all\n    // as dictated by the dispatcher.  We will call this when object\n    // resolution is complete.\n    const didResolveField =\n      typeof willResolveField === 'function' &&\n      willResolveField({ source, args, contextValue, info });\n\n    const fieldResolver =\n      originalFieldResolve || userFieldResolver || defaultFieldResolver;\n\n    try {\n      const result = fieldResolver(source, args, contextValue, info);\n\n      // Call the stack's handlers either immediately (if result is not a\n      // Promise) or once the Promise is done. Then return that same\n      // maybe-Promise value.\n      if (typeof didResolveField === 'function') {\n        whenResultIsFinished(result, didResolveField);\n      }\n      return result;\n    } catch (error) {\n      // Normally it's a bad sign to see an error both handled and\n      // re-thrown. But it is useful to allow extensions to track errors while\n      // still handling them in the normal GraphQL way.\n      if (typeof didResolveField === 'function') {\n        didResolveField(error as Error);\n      }\n      throw error;\n    }\n  };\n}\n\nfunction isPromise(x: any): boolean {\n  return x && typeof x.then === 'function';\n}\n\n// Given result (which may be a Promise or an array some of whose elements are\n// promises) Promises, set up 'callback' to be invoked when result is fully\n// resolved. (Unfortunately, this does not perfectly handle every possible\n// return value shape, such as arrays of arrays of Promises.)\nexport function whenResultIsFinished(\n  result: any,\n  callback: (err: Error | null, result?: any) => void,\n) {\n  if (isPromise(result)) {\n    result.then(\n      (r: any) => whenResultIsFinished(r, callback),\n      (err: Error) => callback(err),\n    );\n  } else if (Array.isArray(result)) {\n    if (result.some(isPromise)) {\n      Promise.all(result).then(\n        (r: any) => callback(null, r),\n        (err: Error) => callback(err),\n      );\n    } else {\n      callback(null, result);\n    }\n  } else {\n    callback(null, result);\n  }\n}\n", "export function isDefined<T>(t: T | undefined | null | void): t is T {\n  return t != null;\n}\n", "import { isDefined } from './isDefined.js';\n\ntype AsyncDidEndHook<TArgs extends any[]> = (...args: TArgs) => Promise<void>;\ntype SyncDidEndHook<TArgs extends any[]> = (...args: TArgs) => void;\n\nexport async function invokeDidStartHook<T, TEndHookArgs extends unknown[]>(\n  targets: T[],\n  hook: (t: T) => Promise<AsyncDidEndHook<TEndHookArgs> | undefined | void>,\n): Promise<AsyncDidEndHook<TEndHookArgs>> {\n  const didEndHooks = (\n    await Promise.all(targets.map((target) => hook(target)))\n  ).filter(isDefined);\n\n  didEndHooks.reverse();\n\n  return async (...args: TEndHookArgs) => {\n    for (const didEndHook of didEndHooks) {\n      didEndHook(...args);\n    }\n  };\n}\n\n// Almost all hooks are async, but as a special case, willResolveField is sync\n// due to performance concerns.\nexport function invokeSyncDidStartHook<T, TEndHookArgs extends unknown[]>(\n  targets: T[],\n  hook: (t: T) => SyncDidEndHook<TEndHookArgs> | undefined | void,\n): SyncDidEndHook<TEndHookArgs> {\n  const didEndHooks: SyncDidEndHook<TEndHookArgs>[] = targets\n    .map((target) => hook(target))\n    .filter(isDefined);\n\n  didEndHooks.reverse();\n\n  return (...args: TEndHookArgs) => {\n    for (const didEndHook of didEndHooks) {\n      didEndHook(...args);\n    }\n  };\n}\n\nexport async function invokeHooksUntilDefinedAndNonNull<T, TOut>(\n  targets: T[],\n  hook: (t: T) => Promise<TOut | null | undefined>,\n): Promise<TOut | null> {\n  for (const target of targets) {\n    const value = await hook(target);\n    if (value != null) {\n      return value;\n    }\n  }\n  return null;\n}\n", "import type {\n  GatewayGraphQLRequest,\n  GatewayGraphQLRequestContext,\n  GatewayGraphQLResponse,\n  GatewaySchemaHash,\n} from '@apollo/server-gateway-interface';\nimport type { FetcherHeaders } from '@apollo/utils.fetcher';\nimport type { ApolloServer, ApolloServerInternals } from '../ApolloServer';\nimport type {\n  BaseContext,\n  GraphQLRequestContextExecutionDidStart,\n} from '../externalTypes';\nimport type { HeaderMap } from './HeaderMap';\n\n// Apollo Gateway's API included `GraphQLRequestContext` from AS2/AS3.\n// Specifically, a request context is passed to the main executor method, which\n// it then exposes to user-configurable `GraphQLDataSource`s.\n// `GraphQLRequestContext` has changed in incompatible ways in AS4; for example,\n// we represent HTTP messages using our own data structures rather than Fetches,\n// and some fields have been removed because they relate to features that don't\n// exist any more.\n//\n// In general, the future of Apollo's development is in Apollo Router, not\n// Gateway. So rather than have a big transition where a new version of Gateway\n// supports AS4's GraphQLRequestContext instead of AS3's, we simply teach AS4\n// how to produce AS3-style GraphQLRequestContext objects specifically for use\n// by Gateway. We have changed Gateway to get its TS type definitions from a new\n// package rather than from AS3 itself, so that Gateway no longer needs to\n// depend on Apollo Server.\n//\n// This function turn an AS4 GraphQLRequestContext into a\n// GatewayGraphQLRequestContext (which is basically an AS3\n// GraphQLRequestContext).\n//\n// You might think that *after* invoking the executor, we would then need to\n// propagate any changes made by the gateway back onto the \"real\"\n// GraphQLRequestContext. It turns out that for each bit of data on the request\n// context, this is either unnecessary or impossible. (We don't need to support\n// use cases where people break type safe, eg by changing the values of readonly\n// fields.) Here's why:\n//\n// Many fields on GatewayGraphQLRequestContext are declared readonly and their\n// values are taken directly from the real GraphQLRequestContext. This means\n// that gateways should not change the field's value, and any mutations of the\n// object stored in the field (say, calling\n// `requestContext.overallCachePolicy.restrict`, as RemoteGraphQLDataSource\n// does) already take effect.\n//\n//  The only two fields not declared as readonly are `logger` and `debug`.\n//\n// Technically, a gateway implementation could set `requestContext.logger` to a\n// different Logger without breaking the TypeScript declarations. In AS4 we\n// don't actually have a requestContext.logger; we have `readonly\n// requestContext.server` and `readonly server.logger`. So there's not an easy\n// way for us to carry out this change: AS4 just doesn't let gateway or plugins\n// override the server's logger (and generally doesn't allow the logger to\n// change after the server is created), which seems like a simpler model. If it\n// turns out there is a real use case for the gateway to be able to change the\n// overall logger for the request as seen by plugins, we can fix that later.\n//\n// Similarly, it's not clear what the intended use case of mutating `debug` in\n// gateway would be. `debug` has now mostly changed into\n// `includeStacktraceInErrorResponses`. So perhaps this could be used to let you\n// decide whether or not to include the stacktrace on a per-operation basis...\n// but you can also use `formatError` or `didEncounterErrors` for this perhaps?\n// In any case, AS4 doesn't track `includeStacktraceInErrorResponses` on a\n// per-operation basis; if we find a use case for this we can add it later.\n//\n// So we'll just ignore changes to `logger` and `debug`.\n//\n// Next, there's `request`. We don't know of a use case for mutating the\n// *request* at execution time. If there was a real use case, we could add a\n// function that copies pieces back from the gateway `request` to the AS4\n// request, but we're not bothering to yet.\n//\n// Finally, there's `response`. Sure, the executor *could* mutate `response`.\n// But the main thing the executor is doing is *returning* a response, which\n// then semi-overwrites `requestContext.response` anyway. So it doesn't seem\n// like we need to support `executor` *also* overwriting response. Yet again, we\n// can fix this if it turns out it's necessary. (That said, the executor could\n// in theory write HTTP response headers or status, so we make sure to hook them\n// up directly to the appropriate data in the real GraphQLRequestContext.)\n//\n// So all in all, it looks like it's OK for this to be a \"one-way\" conversion.\nexport function makeGatewayGraphQLRequestContext<TContext extends BaseContext>(\n  as4RequestContext: GraphQLRequestContextExecutionDidStart<TContext>,\n  server: ApolloServer<TContext>,\n  internals: ApolloServerInternals<TContext>,\n): GatewayGraphQLRequestContext {\n  const request: GatewayGraphQLRequest = {};\n  if ('query' in as4RequestContext.request) {\n    request.query = as4RequestContext.request.query;\n  }\n  if ('operationName' in as4RequestContext.request) {\n    request.operationName = as4RequestContext.request.operationName;\n  }\n  if ('variables' in as4RequestContext.request) {\n    request.variables = as4RequestContext.request.variables;\n  }\n  if ('extensions' in as4RequestContext.request) {\n    request.extensions = as4RequestContext.request.extensions;\n  }\n  if (as4RequestContext.request.http) {\n    const as4http = as4RequestContext.request.http;\n    const needQuestion =\n      as4http.search !== '' && !as4http.search.startsWith('?');\n    request.http = {\n      method: as4http.method,\n      // As of AS4, we no longer attempt to track complete URLs (just the search\n      // parameters used in GET requests). So we have to fake them for Gateway.\n      url: `https://unknown-url.invalid/${needQuestion ? '?' : ''}${\n        as4http.search\n      }`,\n      headers: new FetcherHeadersForHeaderMap(as4http.headers),\n    };\n  }\n\n  const response: GatewayGraphQLResponse = {\n    http: {\n      headers: new FetcherHeadersForHeaderMap(\n        as4RequestContext.response.http.headers,\n      ),\n      get status() {\n        return as4RequestContext.response.http.status;\n      },\n      set status(newStatus) {\n        as4RequestContext.response.http.status = newStatus;\n      },\n    },\n    // We leave off `body` because it hasn't been set yet.\n  };\n\n  return {\n    request,\n    response,\n    logger: server.logger,\n    schema: as4RequestContext.schema,\n    // For the sake of typechecking, we still provide this field, but we don't\n    // calculate it. If somebody really needs it in their gateway\n    // implementation, they're welcome to copy\n    // https://github.com/apollographql/apollo-server/blob/3f218e78/packages/apollo-server-core/src/utils/schemaHash.ts\n    // into their code.\n    schemaHash:\n      'schemaHash no longer exists in Apollo Server 4' as GatewaySchemaHash,\n    context: as4RequestContext.contextValue,\n    cache: server.cache,\n    queryHash: as4RequestContext.queryHash,\n    document: as4RequestContext.document,\n    source: as4RequestContext.source,\n    operationName: as4RequestContext.operationName,\n    operation: as4RequestContext.operation,\n    errors: as4RequestContext.errors,\n    metrics: as4RequestContext.metrics,\n    debug: internals.includeStacktraceInErrorResponses,\n    overallCachePolicy: as4RequestContext.overallCachePolicy,\n    requestIsBatched: as4RequestContext.requestIsBatched,\n  };\n}\n\n// An implementation of the W3C-style headers class used by Gateway (and AS3),\n// backed by AS4's HeaderMap. Changes are written directly to the HeaderMap, so\n// any concurrent writes to the underlying HeaderMap (eg from a plugin) can be\n// seen immediately by the gateway and vice versa.\nclass FetcherHeadersForHeaderMap implements FetcherHeaders {\n  constructor(private map: HeaderMap) {}\n  append(name: string, value: string) {\n    if (this.map.has(name)) {\n      this.map.set(name, this.map.get(name) + ', ' + value);\n    } else {\n      this.map.set(name, value);\n    }\n  }\n  delete(name: string) {\n    this.map.delete(name);\n  }\n  get(name: string): string | null {\n    return this.map.get(name) ?? null;\n  }\n  has(name: string): boolean {\n    return this.map.has(name);\n  }\n  set(name: string, value: string) {\n    this.map.set(name, value);\n  }\n  entries(): Iterator<[string, string]> {\n    return this.map.entries();\n  }\n  keys(): Iterator<string> {\n    return this.map.keys();\n  }\n  values(): Iterator<string> {\n    return this.map.values();\n  }\n  [Symbol.iterator](): Iterator<[string, string]> {\n    return this.map.entries();\n  }\n}\n", "import {\n  execute,\n  type ExecutionArgs,\n  type ExecutionResult,\n  type GraphQLError,\n} from 'graphql';\n\n// This file \"polyfills\" graphql@17's experimentalExecuteIncrementally (by\n// returning a function that does not understand incremental directives if\n// you're using graphql@16). The types defined in this file are largely copied\n// from graphql-js.\n\ninterface ObjMap<T> {\n  [key: string]: T;\n}\nexport interface GraphQLExperimentalInitialIncrementalExecutionResult<\n  TData = ObjMap<unknown>,\n  TExtensions = ObjMap<unknown>,\n> extends ExecutionResult<TData, TExtensions> {\n  hasNext: boolean;\n  incremental?: ReadonlyArray<\n    GraphQLExperimentalIncrementalResult<TData, TExtensions>\n  >;\n  extensions?: TExtensions;\n}\n\nexport interface GraphQLExperimentalSubsequentIncrementalExecutionResult<\n  TData = ObjMap<unknown>,\n  TExtensions = ObjMap<unknown>,\n> {\n  hasNext: boolean;\n  incremental?: ReadonlyArray<\n    GraphQLExperimentalIncrementalResult<TData, TExtensions>\n  >;\n  extensions?: TExtensions;\n}\n\ntype GraphQLExperimentalIncrementalResult<\n  TData = ObjMap<unknown>,\n  TExtensions = ObjMap<unknown>,\n> =\n  | GraphQLExperimentalIncrementalDeferResult<TData, TExtensions>\n  | GraphQLExperimentalIncrementalStreamResult<TData, TExtensions>;\n\ninterface GraphQLExperimentalIncrementalDeferResult<\n  TData = ObjMap<unknown>,\n  TExtensions = ObjMap<unknown>,\n> extends ExecutionResult<TData, TExtensions> {\n  path?: ReadonlyArray<string | number>;\n  label?: string;\n}\n\ninterface GraphQLExperimentalIncrementalStreamResult<\n  TData = Array<unknown>,\n  TExtensions = ObjMap<unknown>,\n> {\n  errors?: ReadonlyArray<GraphQLError>;\n  items?: TData | null;\n  path?: ReadonlyArray<string | number>;\n  label?: string;\n  extensions?: TExtensions;\n}\n\nexport interface GraphQLExperimentalIncrementalExecutionResults<\n  TData = ObjMap<unknown>,\n  TExtensions = ObjMap<unknown>,\n> {\n  initialResult: GraphQLExperimentalInitialIncrementalExecutionResult<\n    TData,\n    TExtensions\n  >;\n  subsequentResults: AsyncGenerator<\n    GraphQLExperimentalSubsequentIncrementalExecutionResult<TData, TExtensions>,\n    void,\n    void\n  >;\n}\n\ntype PromiseOrValue<T> = Promise<T> | T;\n\n// This starts as undefined and is set to a function or null by running\n// tryToLoadGraphQL17(). If graphql-js 17 is installed, it is set to the\n// experimentalExecuteIncrementally function from that package; otherwise it is\n// set to null.\nlet graphqlExperimentalExecuteIncrementally:\n  | ((\n      args: ExecutionArgs,\n    ) => PromiseOrValue<\n      ExecutionResult | GraphQLExperimentalIncrementalExecutionResults\n    >)\n  | null\n  | undefined = undefined;\n\nasync function tryToLoadGraphQL17() {\n  if (graphqlExperimentalExecuteIncrementally !== undefined) {\n    return;\n  }\n  const graphql = await import('graphql');\n  if ('experimentalExecuteIncrementally' in graphql) {\n    graphqlExperimentalExecuteIncrementally = (graphql as any)\n      .experimentalExecuteIncrementally;\n  } else {\n    graphqlExperimentalExecuteIncrementally = null;\n  }\n}\n\nexport async function executeIncrementally(\n  args: ExecutionArgs,\n): Promise<ExecutionResult | GraphQLExperimentalIncrementalExecutionResults> {\n  await tryToLoadGraphQL17();\n  if (graphqlExperimentalExecuteIncrementally) {\n    return graphqlExperimentalExecuteIncrementally(args);\n  }\n  return execute(args);\n}\n", "import { createHash } from '@apollo/utils.createhash';\nimport {\n  specifiedRules,\n  getOperationAST,\n  GraphQLError,\n  validate,\n  parse,\n  Kind,\n  type ExecutionResult,\n} from 'graphql';\nimport {\n  symbolExecutionDispatcherWillResolveField,\n  enablePluginsForSchemaResolvers,\n  symbolUserFieldResolver,\n} from './utils/schemaInstrumentation.js';\nimport {\n  PersistedQueryNotSupportedError,\n  PersistedQueryNotFoundError,\n  UserInputError,\n  BadRequestError,\n  ValidationError,\n  SyntaxError,\n  OperationResolutionError,\n} from './internalErrorClasses.js';\nimport {\n  ensureError,\n  normalizeAndFormatErrors,\n  ensureGraphQLError,\n} from './errorNormalize.js';\nimport type {\n  GraphQLRequestContext,\n  GraphQLRequestContextDidResolveSource,\n  GraphQLRequestContextExecutionDidStart,\n  GraphQLRequestContextResponseForOperation,\n  GraphQLRequestContextDidResolveOperation,\n  GraphQLRequestContextParsingDidStart,\n  GraphQLRequestContextValidationDidStart,\n  GraphQLRequestContextWillSendResponse,\n  GraphQLRequestContextDidEncounterErrors,\n  GraphQLRequestExecutionListener,\n  BaseContext,\n  GraphQLResponse,\n  GraphQLExperimentalFormattedSubsequentIncrementalExecutionResult,\n} from './externalTypes/index.js';\n\nimport {\n  invokeDidStartHook,\n  invokeHooksUntilDefinedAndNonNull,\n  invokeSyncDidStartHook,\n} from './utils/invokeHooks.js';\n\nimport { makeGatewayGraphQLRequestContext } from './utils/makeGatewayGraphQLRequestContext.js';\n\nimport { mergeHTTPGraphQLHead, newHTTPGraphQLHead } from './runHttpQuery.js';\nimport type {\n  ApolloServer,\n  ApolloServerInternals,\n  SchemaDerivedData,\n} from './ApolloServer.js';\nimport { isDefined } from './utils/isDefined.js';\nimport type {\n  GraphQLRequestContextDidEncounterSubsequentErrors,\n  GraphQLRequestContextWillSendSubsequentPayload,\n} from './externalTypes/requestPipeline.js';\nimport {\n  executeIncrementally,\n  type GraphQLExperimentalInitialIncrementalExecutionResult,\n  type GraphQLExperimentalSubsequentIncrementalExecutionResult,\n} from './incrementalDeliveryPolyfill.js';\nimport { HeaderMap } from './utils/HeaderMap.js';\n\nexport const APQ_CACHE_PREFIX = 'apq:';\n\nfunction computeQueryHash(query: string) {\n  return createHash('sha256').update(query).digest('hex');\n}\n\ntype Mutable<T> = { -readonly [P in keyof T]: T[P] };\n\nfunction isBadUserInputGraphQLError(error: GraphQLError): boolean {\n  return (\n    error.nodes?.length === 1 &&\n    error.nodes[0].kind === Kind.VARIABLE_DEFINITION &&\n    (error.message.startsWith(\n      `Variable \"$${error.nodes[0].variable.name.value}\" got invalid value `,\n    ) ||\n      error.message.startsWith(\n        `Variable \"$${error.nodes[0].variable.name.value}\" of required type `,\n      ) ||\n      error.message.startsWith(\n        `Variable \"$${error.nodes[0].variable.name.value}\" of non-null type `,\n      ))\n  );\n}\n\n// This is \"semi-formatted\" because the initial result has not yet been\n// formatted but the subsequent results \"have been\" --- in the sense that they\n// are an async iterable that will format them as they come in.\ntype SemiFormattedExecuteIncrementallyResults =\n  | {\n      singleResult: ExecutionResult;\n    }\n  | {\n      initialResult: GraphQLExperimentalInitialIncrementalExecutionResult;\n      subsequentResults: AsyncIterable<GraphQLExperimentalFormattedSubsequentIncrementalExecutionResult>;\n    };\n\nexport async function processGraphQLRequest<TContext extends BaseContext>(\n  schemaDerivedData: SchemaDerivedData,\n  server: ApolloServer<TContext>,\n  internals: ApolloServerInternals<TContext>,\n  requestContext: Mutable<GraphQLRequestContext<TContext>>,\n): Promise<GraphQLResponse> {\n  const requestListeners = (\n    await Promise.all(\n      internals.plugins.map((p) => p.requestDidStart?.(requestContext)),\n    )\n  ).filter(isDefined);\n\n  const request = requestContext.request;\n\n  let { query, extensions } = request;\n\n  let queryHash: string;\n\n  requestContext.metrics.persistedQueryHit = false;\n  requestContext.metrics.persistedQueryRegister = false;\n\n  if (extensions?.persistedQuery) {\n    // It looks like we've received a persisted query. Check if we\n    // support them.\n    if (!internals.persistedQueries) {\n      return await sendErrorResponse([new PersistedQueryNotSupportedError()]);\n    } else if (extensions.persistedQuery.version !== 1) {\n      return await sendErrorResponse([\n        new GraphQLError('Unsupported persisted query version', {\n          extensions: { http: newHTTPGraphQLHead(400) },\n        }),\n      ]);\n    }\n\n    queryHash = extensions.persistedQuery.sha256Hash;\n\n    if (query === undefined) {\n      query = await internals.persistedQueries.cache.get(queryHash);\n      if (query) {\n        requestContext.metrics.persistedQueryHit = true;\n      } else {\n        return await sendErrorResponse([new PersistedQueryNotFoundError()]);\n      }\n    } else {\n      const computedQueryHash = computeQueryHash(query);\n\n      // The provided hash must exactly match the SHA-256 hash of\n      // the query string. This prevents hash hijacking, where a\n      // new and potentially malicious query is associated with\n      // an existing hash.\n      if (queryHash !== computedQueryHash) {\n        return await sendErrorResponse([\n          new GraphQLError('provided sha does not match query', {\n            extensions: { http: newHTTPGraphQLHead(400) },\n          }),\n        ]);\n      }\n\n      // We won't write to the persisted query cache until later.\n      // Deferring the writing gives plugins the ability to \"win\" from use of\n      // the cache, but also have their say in whether or not the cache is\n      // written to (by interrupting the request with an error).\n      requestContext.metrics.persistedQueryRegister = true;\n    }\n  } else if (query) {\n    queryHash = computeQueryHash(query);\n  } else {\n    return await sendErrorResponse([\n      new BadRequestError(\n        'GraphQL operations must contain a non-empty `query` or a `persistedQuery` extension.',\n      ),\n    ]);\n  }\n\n  requestContext.queryHash = queryHash;\n  requestContext.source = query;\n\n  // Let the plugins know that we now have a STRING of what we hope will\n  // parse and validate into a document we can execute on.  Unless we have\n  // retrieved this from our APQ cache, there's no guarantee that it is\n  // syntactically correct, so this string should not be trusted as a valid\n  // document until after it's parsed and validated.\n  await Promise.all(\n    requestListeners.map((l) =>\n      l.didResolveSource?.(\n        requestContext as GraphQLRequestContextDidResolveSource<TContext>,\n      ),\n    ),\n  );\n\n  // If we're configured with a document store (by default, we are), we'll\n  // utilize the operation's hash to lookup the AST from the previously\n  // parsed-and-validated operation.  Failure to retrieve anything from the\n  // cache just means we're committed to doing the parsing and validation.\n  if (schemaDerivedData.documentStore) {\n    try {\n      requestContext.document = await schemaDerivedData.documentStore.get(\n        schemaDerivedData.documentStoreKeyPrefix + queryHash,\n      );\n    } catch (err: unknown) {\n      server.logger.warn(\n        'An error occurred while attempting to read from the documentStore. ' +\n          ensureError(err).message,\n      );\n    }\n  }\n\n  // If we still don't have a document, we'll need to parse and validate it.\n  // With success, we'll attempt to save it into the store for future use.\n  if (!requestContext.document) {\n    const parsingDidEnd = await invokeDidStartHook(\n      requestListeners,\n      async (l) =>\n        l.parsingDidStart?.(\n          requestContext as GraphQLRequestContextParsingDidStart<TContext>,\n        ),\n    );\n\n    try {\n      requestContext.document = parse(query, internals.parseOptions);\n    } catch (syntaxMaybeError: unknown) {\n      const error = ensureError(syntaxMaybeError);\n      await parsingDidEnd(error);\n      return await sendErrorResponse([\n        new SyntaxError(ensureGraphQLError(error)),\n      ]);\n    }\n    await parsingDidEnd();\n\n    if (internals.dangerouslyDisableValidation !== true) {\n      const validationDidEnd = await invokeDidStartHook(\n        requestListeners,\n        async (l) =>\n          l.validationDidStart?.(\n            requestContext as GraphQLRequestContextValidationDidStart<TContext>,\n          ),\n      );\n\n      let validationErrors = validate(\n        schemaDerivedData.schema,\n        requestContext.document,\n        [...specifiedRules, ...internals.validationRules],\n      );\n      if (validationErrors.length === 0 && internals.laterValidationRules) {\n        validationErrors = validate(\n          schemaDerivedData.schema,\n          requestContext.document,\n          internals.laterValidationRules,\n        );\n      }\n\n      if (validationErrors.length === 0) {\n        await validationDidEnd();\n      } else {\n        await validationDidEnd(validationErrors);\n        return await sendErrorResponse(\n          validationErrors.map((error) => new ValidationError(error)),\n        );\n      }\n    }\n\n    if (schemaDerivedData.documentStore) {\n      // The underlying cache store behind the `documentStore` returns a\n      // `Promise` which is resolved (or rejected), eventually, based on the\n      // success or failure (respectively) of the cache save attempt.  While\n      // it's certainly possible to `await` this `Promise`, we don't care about\n      // whether or not it's successful at this point.  We'll instead proceed\n      // to serve the rest of the request and just hope that this works out.\n      // If it doesn't work, the next request will have another opportunity to\n      // try again.  Errors will surface as warnings, as appropriate.\n      //\n      // While it shouldn't normally be necessary to wrap this `Promise` in a\n      // `Promise.resolve` invocation, it seems that the underlying cache store\n      // is returning a non-native `Promise` (e.g. Bluebird, etc.).\n      Promise.resolve(\n        schemaDerivedData.documentStore.set(\n          schemaDerivedData.documentStoreKeyPrefix + queryHash,\n          requestContext.document,\n        ),\n      ).catch((err) =>\n        server.logger.warn(\n          'Could not store validated document. ' + err?.message || err,\n        ),\n      );\n    }\n  }\n\n  // TODO: If we want to guarantee an operation has been set when invoking\n  // `willExecuteOperation` and executionDidStart`, we need to throw an\n  // error here and not leave this to `buildExecutionContext` in\n  // `graphql-js`.\n  const operation = getOperationAST(\n    requestContext.document,\n    request.operationName,\n  );\n\n  requestContext.operation = operation || undefined;\n  // We'll set `operationName` to `null` for anonymous operations.\n  requestContext.operationName = operation?.name?.value || null;\n\n  // Special case: GET operations should only be queries (not mutations). We\n  // want to throw a particular HTTP error in that case. (This matters because\n  // it's generally how HTTP requests should work, and additionally it makes us\n  // less vulnerable to mutations running over CSRF, if you turn off our CSRF\n  // prevention feature.)\n  if (\n    request.http?.method === 'GET' &&\n    operation?.operation &&\n    operation.operation !== 'query'\n  ) {\n    return await sendErrorResponse([\n      new BadRequestError(\n        `GET requests only support query operations, not ${operation.operation} operations`,\n        {\n          extensions: {\n            http: { status: 405, headers: new HeaderMap([['allow', 'POST']]) },\n          },\n        },\n      ),\n    ]);\n  }\n\n  try {\n    await Promise.all(\n      requestListeners.map((l) =>\n        l.didResolveOperation?.(\n          requestContext as GraphQLRequestContextDidResolveOperation<TContext>,\n        ),\n      ),\n    );\n  } catch (err: unknown) {\n    // Note that we explicitly document throwing `GraphQLError`s from\n    // `didResolveOperation` as a good way to do validation that depends on the\n    // validated operation and the request context. (It will have status 500 by\n    // default.)\n    return await sendErrorResponse([ensureGraphQLError(err)]);\n  }\n\n  // Now that we've gone through the pre-execution phases of the request\n  // pipeline, and given plugins appropriate ability to object (by throwing\n  // an error) and not actually write, we'll write to the cache if it was\n  // determined earlier in the request pipeline that we should do so.\n  if (\n    requestContext.metrics.persistedQueryRegister &&\n    internals.persistedQueries\n  ) {\n    // While it shouldn't normally be necessary to wrap this `Promise` in a\n    // `Promise.resolve` invocation, it seems that the underlying cache store\n    // is returning a non-native `Promise` (e.g. Bluebird, etc.).\n    const ttl = internals.persistedQueries?.ttl;\n    Promise.resolve(\n      internals.persistedQueries.cache.set(\n        queryHash,\n        query,\n        // Explicitly checking for `undefined` which means \"not set\" vs 0 or\n        // null which means \"no TTL\".\n        ttl !== undefined\n          ? { ttl: internals.persistedQueries?.ttl }\n          : undefined,\n      ),\n    ).catch(server.logger.warn);\n  }\n\n  const responseFromPlugin = await invokeHooksUntilDefinedAndNonNull(\n    requestListeners,\n    async (l) =>\n      await l.responseForOperation?.(\n        requestContext as GraphQLRequestContextResponseForOperation<TContext>,\n      ),\n  );\n  if (responseFromPlugin !== null) {\n    requestContext.response.body = responseFromPlugin.body;\n    mergeHTTPGraphQLHead(requestContext.response.http, responseFromPlugin.http);\n  } else {\n    const executionListeners = (\n      await Promise.all(\n        requestListeners.map((l) =>\n          l.executionDidStart?.(\n            requestContext as GraphQLRequestContextExecutionDidStart<TContext>,\n          ),\n        ),\n      )\n    ).filter(isDefined);\n    executionListeners.reverse();\n\n    if (executionListeners.some((l) => l.willResolveField)) {\n      // Create a callback that will trigger the execution dispatcher's\n      // `willResolveField` hook.  We will attach this to the context on a\n      // symbol so it can be invoked by our `wrapField` method during execution.\n      const invokeWillResolveField: GraphQLRequestExecutionListener<TContext>['willResolveField'] =\n        (...args) =>\n          invokeSyncDidStartHook(executionListeners, (l) =>\n            l.willResolveField?.(...args),\n          );\n\n      Object.defineProperty(\n        requestContext.contextValue,\n        symbolExecutionDispatcherWillResolveField,\n        { value: invokeWillResolveField },\n      );\n\n      // If the user has provided a custom field resolver, we will attach\n      // it to the context so we can still invoke it after we've wrapped the\n      // fields with `wrapField` within `enablePluginsForSchemaResolvers` of\n      // the `schemaInstrumentation` module.\n      if (internals.fieldResolver) {\n        Object.defineProperty(\n          requestContext.contextValue,\n          symbolUserFieldResolver,\n          {\n            value: internals.fieldResolver,\n          },\n        );\n      }\n\n      // If the schema is already enabled, this is a no-op.  Otherwise, the\n      // schema will be augmented so it is able to invoke willResolveField. Note\n      // that if we never see a plugin with willResolveField then we will never\n      // need to instrument the schema, which might be a small performance gain.\n      // (For example, this can happen if you pass `fieldLevelInstrumentation:\n      // () => false` to the usage reporting plugin and disable the cache\n      // control plugin. We can consider changing the cache control plugin to\n      // have a \"static cache control only\" mode that doesn't use\n      // willResolveField too if this proves to be helpful in practice.)\n      enablePluginsForSchemaResolvers(schemaDerivedData.schema);\n    }\n\n    try {\n      const fullResult = await execute(\n        requestContext as GraphQLRequestContextExecutionDidStart<TContext>,\n      );\n      const result =\n        'singleResult' in fullResult\n          ? fullResult.singleResult\n          : fullResult.initialResult;\n\n      // If we don't have an operation, there's no reason to go further. We know\n      // `result` will consist of one error (returned by `graphql-js`'s\n      // `buildExecutionContext`).\n      if (!requestContext.operation) {\n        if (!result.errors?.length) {\n          throw new Error(\n            'Unexpected error: Apollo Server did not resolve an operation but execute did not return errors',\n          );\n        }\n        throw new OperationResolutionError(result.errors[0]);\n      }\n\n      // The first thing that execution does is coerce the request's variables\n      // to the types declared in the operation, which can lead to errors if\n      // they are of the wrong type. It also makes sure that all non-null\n      // variables are required and get non-null values. If any of these things\n      // lead to errors, we change them into UserInputError so that their code\n      // doesn't end up being INTERNAL_SERVER_ERROR, since these are client\n      // errors. (But if the error already has a code, perhaps because the\n      // original error was thrown from a custom scalar parseValue, we leave it\n      // alone. We check that here instead of as part of\n      // isBadUserInputGraphQLError since perhaps that function will one day be\n      // changed to something we can get directly from graphql-js, but the\n      // `code` check is AS-specific.)\n      //\n      // This is hacky! Hopefully graphql-js will give us a way to separate\n      // variable resolution from execution later; see\n      // https://github.com/graphql/graphql-js/issues/3169\n      const resultErrors = result.errors?.map((e) => {\n        if (isBadUserInputGraphQLError(e) && e.extensions?.code == null) {\n          return new UserInputError(e);\n        }\n        return e;\n      });\n\n      if (resultErrors) {\n        await didEncounterErrors(resultErrors);\n      }\n\n      const { formattedErrors, httpFromErrors } = resultErrors\n        ? formatErrors(resultErrors)\n        : { formattedErrors: undefined, httpFromErrors: newHTTPGraphQLHead() };\n\n      // TODO(AS5) This becomes the default behavior and the\n      // `status400ForVariableCoercionErrors` configuration option is removed /\n      // ignored.\n      if (\n        internals.status400ForVariableCoercionErrors &&\n        resultErrors?.length &&\n        result.data === undefined &&\n        !httpFromErrors.status\n      ) {\n        httpFromErrors.status = 400;\n      }\n\n      mergeHTTPGraphQLHead(requestContext.response.http, httpFromErrors);\n\n      if ('singleResult' in fullResult) {\n        requestContext.response.body = {\n          kind: 'single',\n          singleResult: {\n            ...result,\n            errors: formattedErrors,\n          },\n        };\n      } else {\n        requestContext.response.body = {\n          kind: 'incremental',\n          initialResult: {\n            ...fullResult.initialResult,\n            errors: formattedErrors,\n          },\n          subsequentResults: fullResult.subsequentResults,\n        };\n      }\n    } catch (executionMaybeError: unknown) {\n      const executionError = ensureError(executionMaybeError);\n      await Promise.all(\n        executionListeners.map((l) => l.executionDidEnd?.(executionError)),\n      );\n\n      return await sendErrorResponse([ensureGraphQLError(executionError)]);\n    }\n\n    await Promise.all(executionListeners.map((l) => l.executionDidEnd?.()));\n  }\n\n  await invokeWillSendResponse();\n  if (!requestContext.response.body) {\n    throw Error('got to end of processGraphQLRequest without setting body?');\n  }\n  return requestContext.response as GraphQLResponse; // cast checked on previous line\n\n  async function execute(\n    requestContext: GraphQLRequestContextExecutionDidStart<TContext>,\n  ): Promise<SemiFormattedExecuteIncrementallyResults> {\n    const { request, document } = requestContext;\n\n    if (internals.__testing_incrementalExecutionResults) {\n      return internals.__testing_incrementalExecutionResults;\n    } else if (internals.gatewayExecutor) {\n      const result = await internals.gatewayExecutor(\n        makeGatewayGraphQLRequestContext(requestContext, server, internals),\n      );\n      return { singleResult: result };\n    } else {\n      const resultOrResults = await executeIncrementally({\n        schema: schemaDerivedData.schema,\n        document,\n        rootValue:\n          typeof internals.rootValue === 'function'\n            ? internals.rootValue(document)\n            : internals.rootValue,\n        contextValue: requestContext.contextValue,\n        variableValues: request.variables,\n        operationName: request.operationName,\n        fieldResolver: internals.fieldResolver,\n      });\n      if ('initialResult' in resultOrResults) {\n        return {\n          initialResult: resultOrResults.initialResult,\n          subsequentResults: formatErrorsInSubsequentResults(\n            resultOrResults.subsequentResults,\n          ),\n        };\n      } else {\n        return { singleResult: resultOrResults };\n      }\n    }\n  }\n\n  async function* formatErrorsInSubsequentResults(\n    results: AsyncIterable<GraphQLExperimentalSubsequentIncrementalExecutionResult>,\n  ): AsyncIterable<GraphQLExperimentalFormattedSubsequentIncrementalExecutionResult> {\n    for await (const result of results) {\n      const payload: GraphQLExperimentalFormattedSubsequentIncrementalExecutionResult =\n        result.incremental\n          ? {\n              ...result,\n              incremental: await seriesAsyncMap(\n                result.incremental,\n                async (incrementalResult) => {\n                  const { errors } = incrementalResult;\n                  if (errors) {\n                    await Promise.all(\n                      requestListeners.map((l) =>\n                        l.didEncounterSubsequentErrors?.(\n                          requestContext as GraphQLRequestContextDidEncounterSubsequentErrors<TContext>,\n                          errors,\n                        ),\n                      ),\n                    );\n\n                    return {\n                      ...incrementalResult,\n                      // Note that any `http` extensions in errors have no\n                      // effect, because we've already sent the status code\n                      // and response headers.\n                      errors: formatErrors(errors).formattedErrors,\n                    };\n                  }\n                  return incrementalResult;\n                },\n              ),\n            }\n          : result;\n\n      // Invoke hook, which is allowed to mutate payload if it really wants to.\n      await Promise.all(\n        requestListeners.map((l) =>\n          l.willSendSubsequentPayload?.(\n            requestContext as GraphQLRequestContextWillSendSubsequentPayload<TContext>,\n            payload,\n          ),\n        ),\n      );\n\n      yield payload;\n    }\n  }\n\n  async function invokeWillSendResponse() {\n    await Promise.all(\n      requestListeners.map((l) =>\n        l.willSendResponse?.(\n          requestContext as GraphQLRequestContextWillSendResponse<TContext>,\n        ),\n      ),\n    );\n  }\n\n  // Note that we ensure that all calls to didEncounterErrors are followed by\n  // calls to willSendResponse. (The usage reporting plugin depends on this.)\n  async function didEncounterErrors(errors: ReadonlyArray<GraphQLError>) {\n    requestContext.errors = errors;\n\n    return await Promise.all(\n      requestListeners.map((l) =>\n        l.didEncounterErrors?.(\n          requestContext as GraphQLRequestContextDidEncounterErrors<TContext>,\n        ),\n      ),\n    );\n  }\n\n  // This function \"sends\" a response that contains errors and no data (not even\n  // `data: null`) because the pipeline does not make it to a successful\n  // `execute` call. (It is *not* called for execution that happens to return\n  // some errors.) In this case \"send\" means \"update requestContext.response and\n  // invoke willSendResponse hooks\".\n  //\n  // If any errors have `extensions.http` set, it sets the response's status code\n  // and errors from them.\n  //\n  // Then, if the HTTP status code is not yet set, it sets it to 500.\n  async function sendErrorResponse(\n    errors: ReadonlyArray<GraphQLError>,\n  ): Promise<GraphQLResponse> {\n    await didEncounterErrors(errors);\n\n    const { formattedErrors, httpFromErrors } = formatErrors(errors);\n\n    requestContext.response.body = {\n      kind: 'single',\n      singleResult: {\n        errors: formattedErrors,\n      },\n    };\n\n    mergeHTTPGraphQLHead(requestContext.response.http, httpFromErrors);\n\n    if (!requestContext.response.http.status) {\n      requestContext.response.http.status = 500;\n    }\n\n    await invokeWillSendResponse();\n\n    // cast safe because we assigned to `body` above\n    return requestContext.response as GraphQLResponse;\n  }\n\n  function formatErrors(\n    errors: ReadonlyArray<GraphQLError>,\n  ): ReturnType<typeof normalizeAndFormatErrors> {\n    return normalizeAndFormatErrors(errors, {\n      formatError: internals.formatError,\n      includeStacktraceInErrorResponses:\n        internals.includeStacktraceInErrorResponses,\n    });\n  }\n}\n\nasync function seriesAsyncMap<T, U>(\n  ts: readonly T[],\n  fn: (value: T) => Promise<U>,\n): Promise<U[]> {\n  const us: U[] = [];\n  for (const t of ts) {\n    const u = await fn(t);\n    us.push(u);\n  }\n  return us;\n}\n", "/**\n * Throw this in places that should be unreachable (because all other cases have\n * been handled, reducing the type of the argument to `never`). TypeScript will\n * complain if in fact there is a valid type for the argument.\n */\nexport class UnreachableCaseError extends Error {\n  constructor(val: never) {\n    super(`Unreachable case: ${val}`);\n  }\n}\n", "import { createHash } from '@apollo/utils.createhash';\n\n// This hash function is used in both the schema reporting and usage reporting\n// plugins. Making sure we use the same hash function hypothetically allows the\n// two reporting features to work well together, though in practice nothing on\n// the Studio side currently correlates this ID across both features.\nexport function computeCoreSchemaHash(schema: string): string {\n  return createHash('sha256').update(schema).digest('hex');\n}\n", "import type { Logger } from '@apollo/utils.logger';\nimport type { GraphQLSchema } from 'graphql';\nimport type {\n  GatewayExecutor,\n  GatewayInterface,\n  GatewayUnsubscriber,\n} from '@apollo/server-gateway-interface';\nimport type { SchemaDerivedData } from '../ApolloServer.js';\nimport type {\n  ApolloConfig,\n  GraphQLSchemaContext,\n} from '../externalTypes/index.js';\n\ntype SchemaDerivedDataProvider = (\n  apiSchema: GraphQLSchema,\n) => SchemaDerivedData;\n\n/**\n * An async-safe class for tracking changes in schemas and schema-derived data.\n *\n * Specifically, as long as start() is called (and completes) before stop() is\n * called, any set of executions of public methods is linearizable.\n *\n * Note that linearizability in Javascript is trivial if all public methods are\n * non-async, but increasingly difficult to guarantee if public methods become\n * async. Accordingly, if you believe a public method should be async, think\n * carefully on whether it's worth the mental overhead. (E.g. if you wished that\n * a callback was async, consider instead resolving a Promise in a non-async\n * callback and having your async code wait on the Promise in setTimeout().)\n */\nexport class SchemaManager {\n  private readonly logger: Logger;\n  private readonly schemaDerivedDataProvider: SchemaDerivedDataProvider;\n  private readonly onSchemaLoadOrUpdateListeners = new Set<\n    (schemaContext: GraphQLSchemaContext) => void\n  >();\n  private isStopped = false;\n  private schemaDerivedData?: SchemaDerivedData;\n  private schemaContext?: GraphQLSchemaContext;\n\n  // For state that's specific to the mode of operation.\n  private readonly modeSpecificState:\n    | {\n        readonly mode: 'gateway';\n        readonly gateway: GatewayInterface;\n        readonly apolloConfig: ApolloConfig;\n        unsubscribeFromGateway?: GatewayUnsubscriber;\n      }\n    | {\n        readonly mode: 'schema';\n        readonly apiSchema: GraphQLSchema;\n        readonly schemaDerivedData: SchemaDerivedData;\n      };\n\n  constructor(\n    options: (\n      | { gateway: GatewayInterface; apolloConfig: ApolloConfig }\n      | { apiSchema: GraphQLSchema }\n    ) & {\n      logger: Logger;\n      schemaDerivedDataProvider: SchemaDerivedDataProvider;\n    },\n  ) {\n    this.logger = options.logger;\n    this.schemaDerivedDataProvider = options.schemaDerivedDataProvider;\n    if ('gateway' in options) {\n      this.modeSpecificState = {\n        mode: 'gateway',\n        gateway: options.gateway,\n        apolloConfig: options.apolloConfig,\n      };\n    } else {\n      this.modeSpecificState = {\n        mode: 'schema',\n        apiSchema: options.apiSchema,\n        // The caller of the constructor expects us to fail early if the schema\n        // given is invalid/has errors, so we call the provider here. We also\n        // pass the result to start(), as the provider can be expensive to call.\n        schemaDerivedData: options.schemaDerivedDataProvider(options.apiSchema),\n      };\n    }\n  }\n\n  /**\n   * Calling start() will:\n   * - Start gateway schema fetching (if a gateway was provided).\n   * - Initialize schema-derived data.\n   * - Synchronously notify onSchemaLoadOrUpdate() listeners of schema load, and\n   *   asynchronously notify them of schema updates.\n   * - If we started a gateway, returns the gateway's executor; otherwise null.\n   */\n  public async start(): Promise<GatewayExecutor | null> {\n    if (this.modeSpecificState.mode === 'gateway') {\n      const gateway = this.modeSpecificState.gateway;\n      if (gateway.onSchemaLoadOrUpdate) {\n        // Use onSchemaLoadOrUpdate, as it reports the core supergraph SDL and\n        // always reports the initial schema load.\n        this.modeSpecificState.unsubscribeFromGateway =\n          gateway.onSchemaLoadOrUpdate((schemaContext) => {\n            this.processSchemaLoadOrUpdateEvent(schemaContext);\n          });\n      } else {\n        throw new Error(\n          \"Unexpectedly couldn't find onSchemaLoadOrUpdate on gateway\",\n        );\n      }\n\n      const config = await this.modeSpecificState.gateway.load({\n        apollo: this.modeSpecificState.apolloConfig,\n      });\n\n      return config.executor;\n    } else {\n      this.processSchemaLoadOrUpdateEvent(\n        {\n          apiSchema: this.modeSpecificState.apiSchema,\n        },\n        this.modeSpecificState.schemaDerivedData,\n      );\n      return null;\n    }\n  }\n\n  /**\n   * Registers a listener for schema load/update events. Note that the latest\n   * event is buffered, i.e.\n   * - If registered before start(), this method will throw. (We have no need\n   *   for registration before start(), but this is easy enough to change.)\n   * - If registered after start() but before stop(), the callback will be first\n   *   called in this method (for whatever the current schema is), and then\n   *   later for updates.\n   * - If registered after stop(), the callback will never be called.\n   *\n   * For gateways, a core supergraph SDL will be provided to the callback.\n   *\n   * @param callback The listener to execute on schema load/updates.\n   */\n  public onSchemaLoadOrUpdate(\n    callback: (schemaContext: GraphQLSchemaContext) => void,\n  ): GatewayUnsubscriber {\n    if (!this.schemaContext) {\n      throw new Error('You must call start() before onSchemaLoadOrUpdate()');\n    }\n    if (!this.isStopped) {\n      try {\n        callback(this.schemaContext);\n      } catch (e) {\n        // Note that onSchemaLoadOrUpdate() is currently only called from\n        // ApolloServer._start(), so we throw here to alert the user early\n        // that their callback is failing.\n        throw new Error(\n          `An error was thrown from an 'onSchemaLoadOrUpdate' listener: ${\n            (e as Error).message\n          }`,\n        );\n      }\n    }\n    this.onSchemaLoadOrUpdateListeners.add(callback);\n\n    return () => {\n      this.onSchemaLoadOrUpdateListeners.delete(callback);\n    };\n  }\n\n  /**\n   * Get the schema-derived state for the current schema. This throws if called\n   * before start() is called.\n   */\n  public getSchemaDerivedData(): SchemaDerivedData {\n    if (!this.schemaDerivedData) {\n      throw new Error('You must call start() before getSchemaDerivedData()');\n    }\n    return this.schemaDerivedData;\n  }\n\n  /**\n   * Calling stop() will:\n   * - Stop gateway schema fetching (if a gateway was provided).\n   *   - Note that this specific step may not succeed if gateway is old.\n   * - Stop updating schema-derived data.\n   * - Stop notifying onSchemaLoadOrUpdate() listeners.\n   */\n  public async stop(): Promise<void> {\n    this.isStopped = true;\n    if (this.modeSpecificState.mode === 'gateway') {\n      this.modeSpecificState.unsubscribeFromGateway?.();\n      await this.modeSpecificState.gateway.stop?.();\n    }\n  }\n\n  private processSchemaLoadOrUpdateEvent(\n    schemaContext: GraphQLSchemaContext,\n    schemaDerivedData?: SchemaDerivedData,\n  ): void {\n    if (!this.isStopped) {\n      this.schemaDerivedData =\n        schemaDerivedData ??\n        this.schemaDerivedDataProvider(schemaContext.apiSchema);\n      this.schemaContext = schemaContext;\n      this.onSchemaLoadOrUpdateListeners.forEach((listener) => {\n        try {\n          listener(schemaContext);\n        } catch (e) {\n          this.logger.error(\n            \"An error was thrown from an 'onSchemaLoadOrUpdate' listener\",\n          );\n          this.logger.error(e);\n        }\n      });\n    }\n  }\n}\n", "import {\n  GraphQLError,\n  type ValidationRule,\n  type ValidationContext,\n} from 'graphql';\nimport { ApolloServerValidationErrorCode } from '../errors/index.js';\n\nexport const NoIntrospection: ValidationRule = (\n  context: ValidationContext,\n) => ({\n  Field(node) {\n    if (node.name.value === '__schema' || node.name.value === '__type') {\n      context.reportError(\n        new GraphQLError(\n          'GraphQL introspection is not allowed by Apollo Server, but the query contained __schema or __type. To enable introspection, pass introspection: true to ApolloServer in production',\n          {\n            nodes: [node],\n            extensions: {\n              validationErrorCode:\n                ApolloServerValidationErrorCode.INTROSPECTION_DISABLED,\n            },\n          },\n        ),\n      );\n    }\n  },\n});\n", "import {\n  GraphQLError,\n  type ValidationRule,\n  type ValidationContext,\n  type ASTVisitor,\n} from 'graphql';\nimport { ApolloServerValidationErrorCode } from '../errors/index.js';\n\nexport const DEFAULT_MAX_RECURSIVE_SELECTIONS = 10_000_000;\n\ninterface ExecutableDefinitionInfo {\n  selectionCount: number;\n  fragmentSpreads: Map<string, number>;\n}\n\nclass RecursiveSelectionValidationContext {\n  private readonly fragmentInfo: Map<string, ExecutableDefinitionInfo> =\n    new Map();\n  private readonly operationInfo: Map<string | null, ExecutableDefinitionInfo> =\n    new Map();\n  private currentFragment?: string;\n  private currentOperation?: string | null;\n  private readonly fragmentRecursiveSelectionCount: Map<string, number | null> =\n    new Map();\n\n  constructor(\n    private readonly selectionCountLimit: number,\n    private readonly context: ValidationContext,\n  ) {}\n\n  private getExecutionDefinitionInfo(): ExecutableDefinitionInfo | undefined {\n    if (this.currentFragment !== undefined) {\n      let entry = this.fragmentInfo.get(this.currentFragment);\n      if (!entry) {\n        entry = {\n          selectionCount: 0,\n          fragmentSpreads: new Map(),\n        };\n        this.fragmentInfo.set(this.currentFragment, entry);\n      }\n      return entry;\n    }\n    if (this.currentOperation !== undefined) {\n      let entry = this.operationInfo.get(this.currentOperation);\n      if (!entry) {\n        entry = {\n          selectionCount: 0,\n          fragmentSpreads: new Map(),\n        };\n        this.operationInfo.set(this.currentOperation, entry);\n      }\n      return entry;\n    }\n    return undefined;\n  }\n\n  processSelection(fragmentSpreadName?: string) {\n    const definitionInfo = this.getExecutionDefinitionInfo();\n    if (!definitionInfo) {\n      return;\n    }\n    definitionInfo.selectionCount++;\n    if (fragmentSpreadName !== undefined) {\n      let spreadCount =\n        (definitionInfo.fragmentSpreads.get(fragmentSpreadName) ?? 0) + 1;\n      definitionInfo.fragmentSpreads.set(fragmentSpreadName, spreadCount);\n    }\n  }\n\n  enterFragment(fragment: string) {\n    this.currentFragment = fragment;\n  }\n\n  leaveFragment() {\n    this.currentFragment = undefined;\n  }\n\n  enterOperation(operation: string | null) {\n    this.currentOperation = operation;\n  }\n\n  leaveOperation() {\n    this.currentOperation = undefined;\n  }\n\n  computeFragmentRecursiveSelectionsCount(fragment: string): number {\n    const cachedCount = this.fragmentRecursiveSelectionCount.get(fragment);\n    if (cachedCount === null) {\n      // We set \"fragmentRecursiveSelectionCount\" to \"null\" for a fragment when\n      // we're in the middle of recursing it, so if we encounter it when getting\n      // a fragment spread, that means we've reached a circular reference. We\n      // don't want to error here, as a separate GraphQL validation checks for\n      // this, so we instead pretend the fragment has zero selections.\n      return 0;\n    }\n    if (cachedCount !== undefined) {\n      return cachedCount;\n    }\n    this.fragmentRecursiveSelectionCount.set(fragment, null);\n    // If \"definitionInfo\" is \"undefined\", it means that the fragment spread\n    // refers to a named fragment that has zero selections or doesn't exist. We\n    // don't want to error here, as a separate GraphQL validation checks for\n    // this, so we instead pretend the fragment always has zero selections.\n    const definitionInfo = this.fragmentInfo.get(fragment);\n    let count = 0;\n    if (definitionInfo) {\n      count = definitionInfo.selectionCount;\n      for (const [fragment, spreadCount] of definitionInfo.fragmentSpreads) {\n        count +=\n          spreadCount * this.computeFragmentRecursiveSelectionsCount(fragment);\n      }\n    }\n    this.fragmentRecursiveSelectionCount.set(fragment, count);\n    return count;\n  }\n\n  private reportError(operation: string | null) {\n    const operationName = operation\n      ? `Operation \"${operation}\"`\n      : 'Anonymous operation';\n    this.context.reportError(\n      new GraphQLError(\n        `${operationName} recursively requests too many selections.`,\n        {\n          nodes: [],\n          extensions: {\n            validationErrorCode:\n              ApolloServerValidationErrorCode.MAX_RECURSIVE_SELECTIONS_EXCEEDED,\n          },\n        },\n      ),\n    );\n  }\n\n  checkLimitExceeded() {\n    for (const [operation, definitionInfo] of this.operationInfo) {\n      let count = definitionInfo.selectionCount;\n      for (const [fragment, spreadCount] of definitionInfo.fragmentSpreads) {\n        count +=\n          spreadCount * this.computeFragmentRecursiveSelectionsCount(fragment);\n      }\n      if (count > this.selectionCountLimit) {\n        this.reportError(operation);\n      }\n    }\n  }\n}\n\n/**\n * Creates a GraphQL validation rule that imposes a limit on the number of\n * recursive selections in an operation. This is the number of selections you\n * would encounter if named fragments were inserted inline whenever a fragment\n * spread referencing them were encountered.\n *\n * @param limit The maximum number of recursive selections in any operation.\n */\nexport function createMaxRecursiveSelectionsRule(\n  limit: number,\n): ValidationRule {\n  return (context: ValidationContext): ASTVisitor => {\n    const selectionContext = new RecursiveSelectionValidationContext(\n      limit,\n      context,\n    );\n    return {\n      Field() {\n        selectionContext.processSelection();\n      },\n      InlineFragment() {\n        selectionContext.processSelection();\n      },\n      FragmentSpread(node) {\n        selectionContext.processSelection(node.name.value);\n      },\n      FragmentDefinition: {\n        enter(node) {\n          selectionContext.enterFragment(node.name.value);\n        },\n        leave() {\n          selectionContext.leaveFragment();\n        },\n      },\n      OperationDefinition: {\n        enter(node) {\n          selectionContext.enterOperation(node.name?.value ?? null);\n        },\n        leave() {\n          selectionContext.leaveOperation();\n        },\n      },\n      Document: {\n        leave() {\n          selectionContext.checkLimitExceeded();\n        },\n      },\n    };\n  };\n}\n", "export { NoIntrospection } from './NoIntrospection.js';\nexport {\n  DEFAULT_MAX_RECURSIVE_SELECTIONS,\n  createMaxRecursiveSelectionsRule,\n} from './RecursiveSelectionsLimit.js';\n", "const perf =\n  typeof performance === 'object' &&\n  performance &&\n  typeof performance.now === 'function'\n    ? performance\n    : Date\n\nconst hasAbortController = typeof AbortController === 'function'\n\n// minimal backwards-compatibility polyfill\n// this doesn't have nearly all the checks and whatnot that\n// actual AbortController/Signal has, but it's enough for\n// our purposes, and if used properly, behaves the same.\nconst AC = hasAbortController\n  ? AbortController\n  : class AbortController {\n      constructor() {\n        this.signal = new AS()\n      }\n      abort(reason = new Error('This operation was aborted')) {\n        this.signal.reason = this.signal.reason || reason\n        this.signal.aborted = true\n        this.signal.dispatchEvent({\n          type: 'abort',\n          target: this.signal,\n        })\n      }\n    }\n\nconst hasAbortSignal = typeof AbortSignal === 'function'\n// Some polyfills put this on the AC class, not global\nconst hasACAbortSignal = typeof AC.AbortSignal === 'function'\nconst AS = hasAbortSignal\n  ? AbortSignal\n  : hasACAbortSignal\n  ? AC.AbortController\n  : class AbortSignal {\n      constructor() {\n        this.reason = undefined\n        this.aborted = false\n        this._listeners = []\n      }\n      dispatchEvent(e) {\n        if (e.type === 'abort') {\n          this.aborted = true\n          this.onabort(e)\n          this._listeners.forEach(f => f(e), this)\n        }\n      }\n      onabort() {}\n      addEventListener(ev, fn) {\n        if (ev === 'abort') {\n          this._listeners.push(fn)\n        }\n      }\n      removeEventListener(ev, fn) {\n        if (ev === 'abort') {\n          this._listeners = this._listeners.filter(f => f !== fn)\n        }\n      }\n    }\n\nconst warned = new Set()\nconst deprecatedOption = (opt, instead) => {\n  const code = `LRU_CACHE_OPTION_${opt}`\n  if (shouldWarn(code)) {\n    warn(code, `${opt} option`, `options.${instead}`, LRUCache)\n  }\n}\nconst deprecatedMethod = (method, instead) => {\n  const code = `LRU_CACHE_METHOD_${method}`\n  if (shouldWarn(code)) {\n    const { prototype } = LRUCache\n    const { get } = Object.getOwnPropertyDescriptor(prototype, method)\n    warn(code, `${method} method`, `cache.${instead}()`, get)\n  }\n}\nconst deprecatedProperty = (field, instead) => {\n  const code = `LRU_CACHE_PROPERTY_${field}`\n  if (shouldWarn(code)) {\n    const { prototype } = LRUCache\n    const { get } = Object.getOwnPropertyDescriptor(prototype, field)\n    warn(code, `${field} property`, `cache.${instead}`, get)\n  }\n}\n\nconst emitWarning = (...a) => {\n  typeof process === 'object' &&\n  process &&\n  typeof process.emitWarning === 'function'\n    ? process.emitWarning(...a)\n    : console.error(...a)\n}\n\nconst shouldWarn = code => !warned.has(code)\n\nconst warn = (code, what, instead, fn) => {\n  warned.add(code)\n  const msg = `The ${what} is deprecated. Please use ${instead} instead.`\n  emitWarning(msg, 'DeprecationWarning', code, fn)\n}\n\nconst isPosInt = n => n && n === Math.floor(n) && n > 0 && isFinite(n)\n\n/* istanbul ignore next - This is a little bit ridiculous, tbh.\n * The maximum array length is 2^32-1 or thereabouts on most JS impls.\n * And well before that point, you're caching the entire world, I mean,\n * that's ~32GB of just integers for the next/prev links, plus whatever\n * else to hold that many keys and values.  Just filling the memory with\n * zeroes at init time is brutal when you get that big.\n * But why not be complete?\n * Maybe in the future, these limits will have expanded. */\nconst getUintArray = max =>\n  !isPosInt(max)\n    ? null\n    : max <= Math.pow(2, 8)\n    ? Uint8Array\n    : max <= Math.pow(2, 16)\n    ? Uint16Array\n    : max <= Math.pow(2, 32)\n    ? Uint32Array\n    : max <= Number.MAX_SAFE_INTEGER\n    ? ZeroArray\n    : null\n\nclass ZeroArray extends Array {\n  constructor(size) {\n    super(size)\n    this.fill(0)\n  }\n}\n\nclass Stack {\n  constructor(max) {\n    if (max === 0) {\n      return []\n    }\n    const UintArray = getUintArray(max)\n    this.heap = new UintArray(max)\n    this.length = 0\n  }\n  push(n) {\n    this.heap[this.length++] = n\n  }\n  pop() {\n    return this.heap[--this.length]\n  }\n}\n\nclass LRUCache {\n  constructor(options = {}) {\n    const {\n      max = 0,\n      ttl,\n      ttlResolution = 1,\n      ttlAutopurge,\n      updateAgeOnGet,\n      updateAgeOnHas,\n      allowStale,\n      dispose,\n      disposeAfter,\n      noDisposeOnSet,\n      noUpdateTTL,\n      maxSize = 0,\n      maxEntrySize = 0,\n      sizeCalculation,\n      fetchMethod,\n      fetchContext,\n      noDeleteOnFetchRejection,\n      noDeleteOnStaleGet,\n      allowStaleOnFetchRejection,\n      allowStaleOnFetchAbort,\n      ignoreFetchAbort,\n    } = options\n\n    // deprecated options, don't trigger a warning for getting them if\n    // the thing being passed in is another LRUCache we're copying.\n    const { length, maxAge, stale } =\n      options instanceof LRUCache ? {} : options\n\n    if (max !== 0 && !isPosInt(max)) {\n      throw new TypeError('max option must be a nonnegative integer')\n    }\n\n    const UintArray = max ? getUintArray(max) : Array\n    if (!UintArray) {\n      throw new Error('invalid max value: ' + max)\n    }\n\n    this.max = max\n    this.maxSize = maxSize\n    this.maxEntrySize = maxEntrySize || this.maxSize\n    this.sizeCalculation = sizeCalculation || length\n    if (this.sizeCalculation) {\n      if (!this.maxSize && !this.maxEntrySize) {\n        throw new TypeError(\n          'cannot set sizeCalculation without setting maxSize or maxEntrySize'\n        )\n      }\n      if (typeof this.sizeCalculation !== 'function') {\n        throw new TypeError('sizeCalculation set to non-function')\n      }\n    }\n\n    this.fetchMethod = fetchMethod || null\n    if (this.fetchMethod && typeof this.fetchMethod !== 'function') {\n      throw new TypeError(\n        'fetchMethod must be a function if specified'\n      )\n    }\n\n    this.fetchContext = fetchContext\n    if (!this.fetchMethod && fetchContext !== undefined) {\n      throw new TypeError(\n        'cannot set fetchContext without fetchMethod'\n      )\n    }\n\n    this.keyMap = new Map()\n    this.keyList = new Array(max).fill(null)\n    this.valList = new Array(max).fill(null)\n    this.next = new UintArray(max)\n    this.prev = new UintArray(max)\n    this.head = 0\n    this.tail = 0\n    this.free = new Stack(max)\n    this.initialFill = 1\n    this.size = 0\n\n    if (typeof dispose === 'function') {\n      this.dispose = dispose\n    }\n    if (typeof disposeAfter === 'function') {\n      this.disposeAfter = disposeAfter\n      this.disposed = []\n    } else {\n      this.disposeAfter = null\n      this.disposed = null\n    }\n    this.noDisposeOnSet = !!noDisposeOnSet\n    this.noUpdateTTL = !!noUpdateTTL\n    this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection\n    this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection\n    this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort\n    this.ignoreFetchAbort = !!ignoreFetchAbort\n\n    // NB: maxEntrySize is set to maxSize if it's set\n    if (this.maxEntrySize !== 0) {\n      if (this.maxSize !== 0) {\n        if (!isPosInt(this.maxSize)) {\n          throw new TypeError(\n            'maxSize must be a positive integer if specified'\n          )\n        }\n      }\n      if (!isPosInt(this.maxEntrySize)) {\n        throw new TypeError(\n          'maxEntrySize must be a positive integer if specified'\n        )\n      }\n      this.initializeSizeTracking()\n    }\n\n    this.allowStale = !!allowStale || !!stale\n    this.noDeleteOnStaleGet = !!noDeleteOnStaleGet\n    this.updateAgeOnGet = !!updateAgeOnGet\n    this.updateAgeOnHas = !!updateAgeOnHas\n    this.ttlResolution =\n      isPosInt(ttlResolution) || ttlResolution === 0\n        ? ttlResolution\n        : 1\n    this.ttlAutopurge = !!ttlAutopurge\n    this.ttl = ttl || maxAge || 0\n    if (this.ttl) {\n      if (!isPosInt(this.ttl)) {\n        throw new TypeError(\n          'ttl must be a positive integer if specified'\n        )\n      }\n      this.initializeTTLTracking()\n    }\n\n    // do not allow completely unbounded caches\n    if (this.max === 0 && this.ttl === 0 && this.maxSize === 0) {\n      throw new TypeError(\n        'At least one of max, maxSize, or ttl is required'\n      )\n    }\n    if (!this.ttlAutopurge && !this.max && !this.maxSize) {\n      const code = 'LRU_CACHE_UNBOUNDED'\n      if (shouldWarn(code)) {\n        warned.add(code)\n        const msg =\n          'TTL caching without ttlAutopurge, max, or maxSize can ' +\n          'result in unbounded memory consumption.'\n        emitWarning(msg, 'UnboundedCacheWarning', code, LRUCache)\n      }\n    }\n\n    if (stale) {\n      deprecatedOption('stale', 'allowStale')\n    }\n    if (maxAge) {\n      deprecatedOption('maxAge', 'ttl')\n    }\n    if (length) {\n      deprecatedOption('length', 'sizeCalculation')\n    }\n  }\n\n  getRemainingTTL(key) {\n    return this.has(key, { updateAgeOnHas: false }) ? Infinity : 0\n  }\n\n  initializeTTLTracking() {\n    this.ttls = new ZeroArray(this.max)\n    this.starts = new ZeroArray(this.max)\n\n    this.setItemTTL = (index, ttl, start = perf.now()) => {\n      this.starts[index] = ttl !== 0 ? start : 0\n      this.ttls[index] = ttl\n      if (ttl !== 0 && this.ttlAutopurge) {\n        const t = setTimeout(() => {\n          if (this.isStale(index)) {\n            this.delete(this.keyList[index])\n          }\n        }, ttl + 1)\n        /* istanbul ignore else - unref() not supported on all platforms */\n        if (t.unref) {\n          t.unref()\n        }\n      }\n    }\n\n    this.updateItemAge = index => {\n      this.starts[index] = this.ttls[index] !== 0 ? perf.now() : 0\n    }\n\n    this.statusTTL = (status, index) => {\n      if (status) {\n        status.ttl = this.ttls[index]\n        status.start = this.starts[index]\n        status.now = cachedNow || getNow()\n        status.remainingTTL = status.now + status.ttl - status.start\n      }\n    }\n\n    // debounce calls to perf.now() to 1s so we're not hitting\n    // that costly call repeatedly.\n    let cachedNow = 0\n    const getNow = () => {\n      const n = perf.now()\n      if (this.ttlResolution > 0) {\n        cachedNow = n\n        const t = setTimeout(\n          () => (cachedNow = 0),\n          this.ttlResolution\n        )\n        /* istanbul ignore else - not available on all platforms */\n        if (t.unref) {\n          t.unref()\n        }\n      }\n      return n\n    }\n\n    this.getRemainingTTL = key => {\n      const index = this.keyMap.get(key)\n      if (index === undefined) {\n        return 0\n      }\n      return this.ttls[index] === 0 || this.starts[index] === 0\n        ? Infinity\n        : this.starts[index] +\n            this.ttls[index] -\n            (cachedNow || getNow())\n    }\n\n    this.isStale = index => {\n      return (\n        this.ttls[index] !== 0 &&\n        this.starts[index] !== 0 &&\n        (cachedNow || getNow()) - this.starts[index] >\n          this.ttls[index]\n      )\n    }\n  }\n  updateItemAge(_index) {}\n  statusTTL(_status, _index) {}\n  setItemTTL(_index, _ttl, _start) {}\n  isStale(_index) {\n    return false\n  }\n\n  initializeSizeTracking() {\n    this.calculatedSize = 0\n    this.sizes = new ZeroArray(this.max)\n    this.removeItemSize = index => {\n      this.calculatedSize -= this.sizes[index]\n      this.sizes[index] = 0\n    }\n    this.requireSize = (k, v, size, sizeCalculation) => {\n      // provisionally accept background fetches.\n      // actual value size will be checked when they return.\n      if (this.isBackgroundFetch(v)) {\n        return 0\n      }\n      if (!isPosInt(size)) {\n        if (sizeCalculation) {\n          if (typeof sizeCalculation !== 'function') {\n            throw new TypeError('sizeCalculation must be a function')\n          }\n          size = sizeCalculation(v, k)\n          if (!isPosInt(size)) {\n            throw new TypeError(\n              'sizeCalculation return invalid (expect positive integer)'\n            )\n          }\n        } else {\n          throw new TypeError(\n            'invalid size value (must be positive integer). ' +\n              'When maxSize or maxEntrySize is used, sizeCalculation or size ' +\n              'must be set.'\n          )\n        }\n      }\n      return size\n    }\n    this.addItemSize = (index, size, status) => {\n      this.sizes[index] = size\n      if (this.maxSize) {\n        const maxSize = this.maxSize - this.sizes[index]\n        while (this.calculatedSize > maxSize) {\n          this.evict(true)\n        }\n      }\n      this.calculatedSize += this.sizes[index]\n      if (status) {\n        status.entrySize = size\n        status.totalCalculatedSize = this.calculatedSize\n      }\n    }\n  }\n  removeItemSize(_index) {}\n  addItemSize(_index, _size) {}\n  requireSize(_k, _v, size, sizeCalculation) {\n    if (size || sizeCalculation) {\n      throw new TypeError(\n        'cannot set size without setting maxSize or maxEntrySize on cache'\n      )\n    }\n  }\n\n  *indexes({ allowStale = this.allowStale } = {}) {\n    if (this.size) {\n      for (let i = this.tail; true; ) {\n        if (!this.isValidIndex(i)) {\n          break\n        }\n        if (allowStale || !this.isStale(i)) {\n          yield i\n        }\n        if (i === this.head) {\n          break\n        } else {\n          i = this.prev[i]\n        }\n      }\n    }\n  }\n\n  *rindexes({ allowStale = this.allowStale } = {}) {\n    if (this.size) {\n      for (let i = this.head; true; ) {\n        if (!this.isValidIndex(i)) {\n          break\n        }\n        if (allowStale || !this.isStale(i)) {\n          yield i\n        }\n        if (i === this.tail) {\n          break\n        } else {\n          i = this.next[i]\n        }\n      }\n    }\n  }\n\n  isValidIndex(index) {\n    return (\n      index !== undefined &&\n      this.keyMap.get(this.keyList[index]) === index\n    )\n  }\n\n  *entries() {\n    for (const i of this.indexes()) {\n      if (\n        this.valList[i] !== undefined &&\n        this.keyList[i] !== undefined &&\n        !this.isBackgroundFetch(this.valList[i])\n      ) {\n        yield [this.keyList[i], this.valList[i]]\n      }\n    }\n  }\n  *rentries() {\n    for (const i of this.rindexes()) {\n      if (\n        this.valList[i] !== undefined &&\n        this.keyList[i] !== undefined &&\n        !this.isBackgroundFetch(this.valList[i])\n      ) {\n        yield [this.keyList[i], this.valList[i]]\n      }\n    }\n  }\n\n  *keys() {\n    for (const i of this.indexes()) {\n      if (\n        this.keyList[i] !== undefined &&\n        !this.isBackgroundFetch(this.valList[i])\n      ) {\n        yield this.keyList[i]\n      }\n    }\n  }\n  *rkeys() {\n    for (const i of this.rindexes()) {\n      if (\n        this.keyList[i] !== undefined &&\n        !this.isBackgroundFetch(this.valList[i])\n      ) {\n        yield this.keyList[i]\n      }\n    }\n  }\n\n  *values() {\n    for (const i of this.indexes()) {\n      if (\n        this.valList[i] !== undefined &&\n        !this.isBackgroundFetch(this.valList[i])\n      ) {\n        yield this.valList[i]\n      }\n    }\n  }\n  *rvalues() {\n    for (const i of this.rindexes()) {\n      if (\n        this.valList[i] !== undefined &&\n        !this.isBackgroundFetch(this.valList[i])\n      ) {\n        yield this.valList[i]\n      }\n    }\n  }\n\n  [Symbol.iterator]() {\n    return this.entries()\n  }\n\n  find(fn, getOptions) {\n    for (const i of this.indexes()) {\n      const v = this.valList[i]\n      const value = this.isBackgroundFetch(v)\n        ? v.__staleWhileFetching\n        : v\n      if (value === undefined) continue\n      if (fn(value, this.keyList[i], this)) {\n        return this.get(this.keyList[i], getOptions)\n      }\n    }\n  }\n\n  forEach(fn, thisp = this) {\n    for (const i of this.indexes()) {\n      const v = this.valList[i]\n      const value = this.isBackgroundFetch(v)\n        ? v.__staleWhileFetching\n        : v\n      if (value === undefined) continue\n      fn.call(thisp, value, this.keyList[i], this)\n    }\n  }\n\n  rforEach(fn, thisp = this) {\n    for (const i of this.rindexes()) {\n      const v = this.valList[i]\n      const value = this.isBackgroundFetch(v)\n        ? v.__staleWhileFetching\n        : v\n      if (value === undefined) continue\n      fn.call(thisp, value, this.keyList[i], this)\n    }\n  }\n\n  get prune() {\n    deprecatedMethod('prune', 'purgeStale')\n    return this.purgeStale\n  }\n\n  purgeStale() {\n    let deleted = false\n    for (const i of this.rindexes({ allowStale: true })) {\n      if (this.isStale(i)) {\n        this.delete(this.keyList[i])\n        deleted = true\n      }\n    }\n    return deleted\n  }\n\n  dump() {\n    const arr = []\n    for (const i of this.indexes({ allowStale: true })) {\n      const key = this.keyList[i]\n      const v = this.valList[i]\n      const value = this.isBackgroundFetch(v)\n        ? v.__staleWhileFetching\n        : v\n      if (value === undefined) continue\n      const entry = { value }\n      if (this.ttls) {\n        entry.ttl = this.ttls[i]\n        // always dump the start relative to a portable timestamp\n        // it's ok for this to be a bit slow, it's a rare operation.\n        const age = perf.now() - this.starts[i]\n        entry.start = Math.floor(Date.now() - age)\n      }\n      if (this.sizes) {\n        entry.size = this.sizes[i]\n      }\n      arr.unshift([key, entry])\n    }\n    return arr\n  }\n\n  load(arr) {\n    this.clear()\n    for (const [key, entry] of arr) {\n      if (entry.start) {\n        // entry.start is a portable timestamp, but we may be using\n        // node's performance.now(), so calculate the offset.\n        // it's ok for this to be a bit slow, it's a rare operation.\n        const age = Date.now() - entry.start\n        entry.start = perf.now() - age\n      }\n      this.set(key, entry.value, entry)\n    }\n  }\n\n  dispose(_v, _k, _reason) {}\n\n  set(\n    k,\n    v,\n    {\n      ttl = this.ttl,\n      start,\n      noDisposeOnSet = this.noDisposeOnSet,\n      size = 0,\n      sizeCalculation = this.sizeCalculation,\n      noUpdateTTL = this.noUpdateTTL,\n      status,\n    } = {}\n  ) {\n    size = this.requireSize(k, v, size, sizeCalculation)\n    // if the item doesn't fit, don't do anything\n    // NB: maxEntrySize set to maxSize by default\n    if (this.maxEntrySize && size > this.maxEntrySize) {\n      if (status) {\n        status.set = 'miss'\n        status.maxEntrySizeExceeded = true\n      }\n      // have to delete, in case a background fetch is there already.\n      // in non-async cases, this is a no-op\n      this.delete(k)\n      return this\n    }\n    let index = this.size === 0 ? undefined : this.keyMap.get(k)\n    if (index === undefined) {\n      // addition\n      index = this.newIndex()\n      this.keyList[index] = k\n      this.valList[index] = v\n      this.keyMap.set(k, index)\n      this.next[this.tail] = index\n      this.prev[index] = this.tail\n      this.tail = index\n      this.size++\n      this.addItemSize(index, size, status)\n      if (status) {\n        status.set = 'add'\n      }\n      noUpdateTTL = false\n    } else {\n      // update\n      this.moveToTail(index)\n      const oldVal = this.valList[index]\n      if (v !== oldVal) {\n        if (this.isBackgroundFetch(oldVal)) {\n          oldVal.__abortController.abort(new Error('replaced'))\n        } else {\n          if (!noDisposeOnSet) {\n            this.dispose(oldVal, k, 'set')\n            if (this.disposeAfter) {\n              this.disposed.push([oldVal, k, 'set'])\n            }\n          }\n        }\n        this.removeItemSize(index)\n        this.valList[index] = v\n        this.addItemSize(index, size, status)\n        if (status) {\n          status.set = 'replace'\n          const oldValue =\n            oldVal && this.isBackgroundFetch(oldVal)\n              ? oldVal.__staleWhileFetching\n              : oldVal\n          if (oldValue !== undefined) status.oldValue = oldValue\n        }\n      } else if (status) {\n        status.set = 'update'\n      }\n    }\n    if (ttl !== 0 && this.ttl === 0 && !this.ttls) {\n      this.initializeTTLTracking()\n    }\n    if (!noUpdateTTL) {\n      this.setItemTTL(index, ttl, start)\n    }\n    this.statusTTL(status, index)\n    if (this.disposeAfter) {\n      while (this.disposed.length) {\n        this.disposeAfter(...this.disposed.shift())\n      }\n    }\n    return this\n  }\n\n  newIndex() {\n    if (this.size === 0) {\n      return this.tail\n    }\n    if (this.size === this.max && this.max !== 0) {\n      return this.evict(false)\n    }\n    if (this.free.length !== 0) {\n      return this.free.pop()\n    }\n    // initial fill, just keep writing down the list\n    return this.initialFill++\n  }\n\n  pop() {\n    if (this.size) {\n      const val = this.valList[this.head]\n      this.evict(true)\n      return val\n    }\n  }\n\n  evict(free) {\n    const head = this.head\n    const k = this.keyList[head]\n    const v = this.valList[head]\n    if (this.isBackgroundFetch(v)) {\n      v.__abortController.abort(new Error('evicted'))\n    } else {\n      this.dispose(v, k, 'evict')\n      if (this.disposeAfter) {\n        this.disposed.push([v, k, 'evict'])\n      }\n    }\n    this.removeItemSize(head)\n    // if we aren't about to use the index, then null these out\n    if (free) {\n      this.keyList[head] = null\n      this.valList[head] = null\n      this.free.push(head)\n    }\n    this.head = this.next[head]\n    this.keyMap.delete(k)\n    this.size--\n    return head\n  }\n\n  has(k, { updateAgeOnHas = this.updateAgeOnHas, status } = {}) {\n    const index = this.keyMap.get(k)\n    if (index !== undefined) {\n      if (!this.isStale(index)) {\n        if (updateAgeOnHas) {\n          this.updateItemAge(index)\n        }\n        if (status) status.has = 'hit'\n        this.statusTTL(status, index)\n        return true\n      } else if (status) {\n        status.has = 'stale'\n        this.statusTTL(status, index)\n      }\n    } else if (status) {\n      status.has = 'miss'\n    }\n    return false\n  }\n\n  // like get(), but without any LRU updating or TTL expiration\n  peek(k, { allowStale = this.allowStale } = {}) {\n    const index = this.keyMap.get(k)\n    if (index !== undefined && (allowStale || !this.isStale(index))) {\n      const v = this.valList[index]\n      // either stale and allowed, or forcing a refresh of non-stale value\n      return this.isBackgroundFetch(v) ? v.__staleWhileFetching : v\n    }\n  }\n\n  backgroundFetch(k, index, options, context) {\n    const v = index === undefined ? undefined : this.valList[index]\n    if (this.isBackgroundFetch(v)) {\n      return v\n    }\n    const ac = new AC()\n    if (options.signal) {\n      options.signal.addEventListener('abort', () =>\n        ac.abort(options.signal.reason)\n      )\n    }\n    const fetchOpts = {\n      signal: ac.signal,\n      options,\n      context,\n    }\n    const cb = (v, updateCache = false) => {\n      const { aborted } = ac.signal\n      const ignoreAbort = options.ignoreFetchAbort && v !== undefined\n      if (options.status) {\n        if (aborted && !updateCache) {\n          options.status.fetchAborted = true\n          options.status.fetchError = ac.signal.reason\n          if (ignoreAbort) options.status.fetchAbortIgnored = true\n        } else {\n          options.status.fetchResolved = true\n        }\n      }\n      if (aborted && !ignoreAbort && !updateCache) {\n        return fetchFail(ac.signal.reason)\n      }\n      // either we didn't abort, and are still here, or we did, and ignored\n      if (this.valList[index] === p) {\n        if (v === undefined) {\n          if (p.__staleWhileFetching) {\n            this.valList[index] = p.__staleWhileFetching\n          } else {\n            this.delete(k)\n          }\n        } else {\n          if (options.status) options.status.fetchUpdated = true\n          this.set(k, v, fetchOpts.options)\n        }\n      }\n      return v\n    }\n    const eb = er => {\n      if (options.status) {\n        options.status.fetchRejected = true\n        options.status.fetchError = er\n      }\n      return fetchFail(er)\n    }\n    const fetchFail = er => {\n      const { aborted } = ac.signal\n      const allowStaleAborted =\n        aborted && options.allowStaleOnFetchAbort\n      const allowStale =\n        allowStaleAborted || options.allowStaleOnFetchRejection\n      const noDelete = allowStale || options.noDeleteOnFetchRejection\n      if (this.valList[index] === p) {\n        // if we allow stale on fetch rejections, then we need to ensure that\n        // the stale value is not removed from the cache when the fetch fails.\n        const del = !noDelete || p.__staleWhileFetching === undefined\n        if (del) {\n          this.delete(k)\n        } else if (!allowStaleAborted) {\n          // still replace the *promise* with the stale value,\n          // since we are done with the promise at this point.\n          // leave it untouched if we're still waiting for an\n          // aborted background fetch that hasn't yet returned.\n          this.valList[index] = p.__staleWhileFetching\n        }\n      }\n      if (allowStale) {\n        if (options.status && p.__staleWhileFetching !== undefined) {\n          options.status.returnedStale = true\n        }\n        return p.__staleWhileFetching\n      } else if (p.__returned === p) {\n        throw er\n      }\n    }\n    const pcall = (res, rej) => {\n      this.fetchMethod(k, v, fetchOpts).then(v => res(v), rej)\n      // ignored, we go until we finish, regardless.\n      // defer check until we are actually aborting,\n      // so fetchMethod can override.\n      ac.signal.addEventListener('abort', () => {\n        if (\n          !options.ignoreFetchAbort ||\n          options.allowStaleOnFetchAbort\n        ) {\n          res()\n          // when it eventually resolves, update the cache.\n          if (options.allowStaleOnFetchAbort) {\n            res = v => cb(v, true)\n          }\n        }\n      })\n    }\n    if (options.status) options.status.fetchDispatched = true\n    const p = new Promise(pcall).then(cb, eb)\n    p.__abortController = ac\n    p.__staleWhileFetching = v\n    p.__returned = null\n    if (index === undefined) {\n      // internal, don't expose status.\n      this.set(k, p, { ...fetchOpts.options, status: undefined })\n      index = this.keyMap.get(k)\n    } else {\n      this.valList[index] = p\n    }\n    return p\n  }\n\n  isBackgroundFetch(p) {\n    return (\n      p &&\n      typeof p === 'object' &&\n      typeof p.then === 'function' &&\n      Object.prototype.hasOwnProperty.call(\n        p,\n        '__staleWhileFetching'\n      ) &&\n      Object.prototype.hasOwnProperty.call(p, '__returned') &&\n      (p.__returned === p || p.__returned === null)\n    )\n  }\n\n  // this takes the union of get() and set() opts, because it does both\n  async fetch(\n    k,\n    {\n      // get options\n      allowStale = this.allowStale,\n      updateAgeOnGet = this.updateAgeOnGet,\n      noDeleteOnStaleGet = this.noDeleteOnStaleGet,\n      // set options\n      ttl = this.ttl,\n      noDisposeOnSet = this.noDisposeOnSet,\n      size = 0,\n      sizeCalculation = this.sizeCalculation,\n      noUpdateTTL = this.noUpdateTTL,\n      // fetch exclusive options\n      noDeleteOnFetchRejection = this.noDeleteOnFetchRejection,\n      allowStaleOnFetchRejection = this.allowStaleOnFetchRejection,\n      ignoreFetchAbort = this.ignoreFetchAbort,\n      allowStaleOnFetchAbort = this.allowStaleOnFetchAbort,\n      fetchContext = this.fetchContext,\n      forceRefresh = false,\n      status,\n      signal,\n    } = {}\n  ) {\n    if (!this.fetchMethod) {\n      if (status) status.fetch = 'get'\n      return this.get(k, {\n        allowStale,\n        updateAgeOnGet,\n        noDeleteOnStaleGet,\n        status,\n      })\n    }\n\n    const options = {\n      allowStale,\n      updateAgeOnGet,\n      noDeleteOnStaleGet,\n      ttl,\n      noDisposeOnSet,\n      size,\n      sizeCalculation,\n      noUpdateTTL,\n      noDeleteOnFetchRejection,\n      allowStaleOnFetchRejection,\n      allowStaleOnFetchAbort,\n      ignoreFetchAbort,\n      status,\n      signal,\n    }\n\n    let index = this.keyMap.get(k)\n    if (index === undefined) {\n      if (status) status.fetch = 'miss'\n      const p = this.backgroundFetch(k, index, options, fetchContext)\n      return (p.__returned = p)\n    } else {\n      // in cache, maybe already fetching\n      const v = this.valList[index]\n      if (this.isBackgroundFetch(v)) {\n        const stale =\n          allowStale && v.__staleWhileFetching !== undefined\n        if (status) {\n          status.fetch = 'inflight'\n          if (stale) status.returnedStale = true\n        }\n        return stale ? v.__staleWhileFetching : (v.__returned = v)\n      }\n\n      // if we force a refresh, that means do NOT serve the cached value,\n      // unless we are already in the process of refreshing the cache.\n      const isStale = this.isStale(index)\n      if (!forceRefresh && !isStale) {\n        if (status) status.fetch = 'hit'\n        this.moveToTail(index)\n        if (updateAgeOnGet) {\n          this.updateItemAge(index)\n        }\n        this.statusTTL(status, index)\n        return v\n      }\n\n      // ok, it is stale or a forced refresh, and not already fetching.\n      // refresh the cache.\n      const p = this.backgroundFetch(k, index, options, fetchContext)\n      const hasStale = p.__staleWhileFetching !== undefined\n      const staleVal = hasStale && allowStale\n      if (status) {\n        status.fetch = hasStale && isStale ? 'stale' : 'refresh'\n        if (staleVal && isStale) status.returnedStale = true\n      }\n      return staleVal ? p.__staleWhileFetching : (p.__returned = p)\n    }\n  }\n\n  get(\n    k,\n    {\n      allowStale = this.allowStale,\n      updateAgeOnGet = this.updateAgeOnGet,\n      noDeleteOnStaleGet = this.noDeleteOnStaleGet,\n      status,\n    } = {}\n  ) {\n    const index = this.keyMap.get(k)\n    if (index !== undefined) {\n      const value = this.valList[index]\n      const fetching = this.isBackgroundFetch(value)\n      this.statusTTL(status, index)\n      if (this.isStale(index)) {\n        if (status) status.get = 'stale'\n        // delete only if not an in-flight background fetch\n        if (!fetching) {\n          if (!noDeleteOnStaleGet) {\n            this.delete(k)\n          }\n          if (status) status.returnedStale = allowStale\n          return allowStale ? value : undefined\n        } else {\n          if (status) {\n            status.returnedStale =\n              allowStale && value.__staleWhileFetching !== undefined\n          }\n          return allowStale ? value.__staleWhileFetching : undefined\n        }\n      } else {\n        if (status) status.get = 'hit'\n        // if we're currently fetching it, we don't actually have it yet\n        // it's not stale, which means this isn't a staleWhileRefetching.\n        // If it's not stale, and fetching, AND has a __staleWhileFetching\n        // value, then that means the user fetched with {forceRefresh:true},\n        // so it's safe to return that value.\n        if (fetching) {\n          return value.__staleWhileFetching\n        }\n        this.moveToTail(index)\n        if (updateAgeOnGet) {\n          this.updateItemAge(index)\n        }\n        return value\n      }\n    } else if (status) {\n      status.get = 'miss'\n    }\n  }\n\n  connect(p, n) {\n    this.prev[n] = p\n    this.next[p] = n\n  }\n\n  moveToTail(index) {\n    // if tail already, nothing to do\n    // if head, move head to next[index]\n    // else\n    //   move next[prev[index]] to next[index] (head has no prev)\n    //   move prev[next[index]] to prev[index]\n    // prev[index] = tail\n    // next[tail] = index\n    // tail = index\n    if (index !== this.tail) {\n      if (index === this.head) {\n        this.head = this.next[index]\n      } else {\n        this.connect(this.prev[index], this.next[index])\n      }\n      this.connect(this.tail, index)\n      this.tail = index\n    }\n  }\n\n  get del() {\n    deprecatedMethod('del', 'delete')\n    return this.delete\n  }\n\n  delete(k) {\n    let deleted = false\n    if (this.size !== 0) {\n      const index = this.keyMap.get(k)\n      if (index !== undefined) {\n        deleted = true\n        if (this.size === 1) {\n          this.clear()\n        } else {\n          this.removeItemSize(index)\n          const v = this.valList[index]\n          if (this.isBackgroundFetch(v)) {\n            v.__abortController.abort(new Error('deleted'))\n          } else {\n            this.dispose(v, k, 'delete')\n            if (this.disposeAfter) {\n              this.disposed.push([v, k, 'delete'])\n            }\n          }\n          this.keyMap.delete(k)\n          this.keyList[index] = null\n          this.valList[index] = null\n          if (index === this.tail) {\n            this.tail = this.prev[index]\n          } else if (index === this.head) {\n            this.head = this.next[index]\n          } else {\n            this.next[this.prev[index]] = this.next[index]\n            this.prev[this.next[index]] = this.prev[index]\n          }\n          this.size--\n          this.free.push(index)\n        }\n      }\n    }\n    if (this.disposed) {\n      while (this.disposed.length) {\n        this.disposeAfter(...this.disposed.shift())\n      }\n    }\n    return deleted\n  }\n\n  clear() {\n    for (const index of this.rindexes({ allowStale: true })) {\n      const v = this.valList[index]\n      if (this.isBackgroundFetch(v)) {\n        v.__abortController.abort(new Error('deleted'))\n      } else {\n        const k = this.keyList[index]\n        this.dispose(v, k, 'delete')\n        if (this.disposeAfter) {\n          this.disposed.push([v, k, 'delete'])\n        }\n      }\n    }\n\n    this.keyMap.clear()\n    this.valList.fill(null)\n    this.keyList.fill(null)\n    if (this.ttls) {\n      this.ttls.fill(0)\n      this.starts.fill(0)\n    }\n    if (this.sizes) {\n      this.sizes.fill(0)\n    }\n    this.head = 0\n    this.tail = 0\n    this.initialFill = 1\n    this.free.length = 0\n    this.calculatedSize = 0\n    this.size = 0\n    if (this.disposed) {\n      while (this.disposed.length) {\n        this.disposeAfter(...this.disposed.shift())\n      }\n    }\n  }\n\n  get reset() {\n    deprecatedMethod('reset', 'clear')\n    return this.clear\n  }\n\n  get length() {\n    deprecatedProperty('length', 'size')\n    return this.size\n  }\n\n  static get AbortController() {\n    return AC\n  }\n  static get AbortSignal() {\n    return AS\n  }\n}\n\nmodule.exports = LRUCache\n", "import type { ApolloServerPlugin } from '../../externalTypes/index.js';\nimport {\n  type DirectiveNode,\n  getNamedType,\n  type GraphQLCompositeType,\n  type GraphQLField,\n  isCompositeType,\n  isInterfaceType,\n  isObjectType,\n  responsePathAsArray,\n} from 'graphql';\nimport { newCachePolicy } from '../../cachePolicy.js';\nimport { internalPlugin } from '../../internalPlugin.js';\nimport LRUCache from 'lru-cache';\nimport type {\n  CacheHint,\n  CacheScope,\n  GraphQLResolveInfoWithCacheControl,\n} from '@apollo/cache-control-types';\n\n/**\n * CacheAnnotation represents the contents of a `@cacheControl` directive.\n * (`inheritMaxAge` is part of this interface and not CacheHint, because\n * `inheritMaxAge` isn't a contributing piece of a cache policy: it just means\n * to not apply default values in some contexts.)\n */\ninterface CacheAnnotation extends CacheHint {\n  inheritMaxAge?: true;\n}\n\nexport interface ApolloServerPluginCacheControlOptions {\n  /**\n   * All root fields and fields returning objects or interfaces have this value\n   * for `maxAge` unless they set a cache hint with a non-undefined `maxAge`\n   * using `@cacheControl` or `setCacheHint`. The default is 0, which means \"not\n   * cacheable\". (That is: if you don't set `defaultMaxAge`, then every root\n   * field in your operation and every field with sub-fields must have a cache\n   * hint or the overall operation will not be cacheable.)\n   */\n  defaultMaxAge?: number;\n  /**\n   * Determines whether to set the `Cache-Control` HTTP header. If true (the\n   * default), the header is written on all responses (with a value of\n   * `no-store` for non-cacheable responses). If `'if-cacheable'`, the header is\n   * only written for cacheable responses. If false, the header is never\n   * written. A response is cacheable if its overall cache policy has a non-zero\n   * `maxAge`, and the body is a single result rather than an incremental\n   * delivery response, and the body contains no errors.\n   */\n  calculateHttpHeaders?: boolean | 'if-cacheable';\n  // For testing only.\n  __testing__cacheHints?: Map<string, CacheHint>;\n}\n\nexport function ApolloServerPluginCacheControl(\n  options: ApolloServerPluginCacheControlOptions = Object.create(null),\n): ApolloServerPlugin {\n  let typeAnnotationCache: LRUCache<GraphQLCompositeType, CacheAnnotation>;\n\n  let fieldAnnotationCache: LRUCache<\n    GraphQLField<unknown, unknown>,\n    CacheAnnotation\n  >;\n\n  return internalPlugin({\n    __internal_plugin_id__: 'CacheControl',\n    __is_disabled_plugin__: false,\n\n    async serverWillStart({ schema }) {\n      // Set the size of the caches to be equal to the number of composite types\n      // and fields in the schema respectively. This generally means that the\n      // cache will always have room for all the cache hints in the active\n      // schema but we won't have a memory leak as schemas are replaced in a\n      // gateway. (Once we're comfortable breaking compatibility with\n      // versions of Gateway older than 0.35.0, we should also run this code\n      // from a schemaDidLoadOrUpdate instead of serverWillStart. Using\n      // schemaDidLoadOrUpdate throws when combined with old gateways.)\n      typeAnnotationCache = new LRUCache<GraphQLCompositeType, CacheAnnotation>(\n        {\n          max: Object.values(schema.getTypeMap()).filter(isCompositeType)\n            .length,\n        },\n      );\n\n      fieldAnnotationCache = new LRUCache<\n        GraphQLField<unknown, unknown>,\n        CacheAnnotation\n      >({\n        max:\n          Object.values(schema.getTypeMap())\n            .filter(isObjectType)\n            .flatMap((t) => Object.values(t.getFields())).length +\n          Object.values(schema.getTypeMap())\n            .filter(isInterfaceType)\n            .flatMap((t) => Object.values(t.getFields())).length,\n      });\n\n      return undefined;\n    },\n\n    async requestDidStart(requestContext) {\n      function memoizedCacheAnnotationFromType(\n        t: GraphQLCompositeType,\n      ): CacheAnnotation {\n        const existing = typeAnnotationCache.get(t);\n        if (existing) {\n          return existing;\n        }\n        const annotation = cacheAnnotationFromType(t);\n        typeAnnotationCache.set(t, annotation);\n        return annotation;\n      }\n\n      function memoizedCacheAnnotationFromField(\n        field: GraphQLField<unknown, unknown>,\n      ): CacheAnnotation {\n        const existing = fieldAnnotationCache.get(field);\n        if (existing) {\n          return existing;\n        }\n        const annotation = cacheAnnotationFromField(field);\n        fieldAnnotationCache.set(field, annotation);\n        return annotation;\n      }\n\n      const defaultMaxAge: number = options.defaultMaxAge ?? 0;\n      const calculateHttpHeaders = options.calculateHttpHeaders ?? true;\n      const { __testing__cacheHints } = options;\n\n      return {\n        async executionDidStart() {\n          // Did something set the overall cache policy before we've even\n          // started? If so, consider that as an override and don't touch it.\n          // Just put set up fake `info.cacheControl` objects and otherwise\n          // don't track cache policy.\n          //\n          // (This doesn't happen in practice using the core plugins: the main\n          // use case for restricting overallCachePolicy outside of this plugin\n          // is apollo-server-plugin-response-cache, but when it sets the policy\n          // we never get to execution at all.)\n          if (isRestricted(requestContext.overallCachePolicy)) {\n            // This is \"fake\" in the sense that it never actually affects\n            // requestContext.overallCachePolicy.\n            const fakeFieldPolicy = newCachePolicy();\n            return {\n              willResolveField({ info }) {\n                // This `as` is \"safe\" in the sense that this is the statement\n                // that makes a GraphQLResolveInfo into a\n                // GraphQLResolveInfoWithCacheControl.\n                (info as GraphQLResolveInfoWithCacheControl).cacheControl = {\n                  setCacheHint: (dynamicHint: CacheHint) => {\n                    fakeFieldPolicy.replace(dynamicHint);\n                  },\n                  cacheHint: fakeFieldPolicy,\n                  cacheHintFromType: memoizedCacheAnnotationFromType,\n                };\n              },\n            };\n          }\n\n          return {\n            willResolveField({ info }) {\n              const fieldPolicy = newCachePolicy();\n\n              let inheritMaxAge = false;\n\n              // If this field's resolver returns an object/interface/union\n              // (maybe wrapped in list/non-null), look for hints on that return\n              // type.\n              const targetType = getNamedType(info.returnType);\n              if (isCompositeType(targetType)) {\n                const typeAnnotation =\n                  memoizedCacheAnnotationFromType(targetType);\n                fieldPolicy.replace(typeAnnotation);\n                inheritMaxAge = !!typeAnnotation.inheritMaxAge;\n              }\n\n              // Look for hints on the field itself (on its parent type), taking\n              // precedence over previously calculated hints.\n              const fieldAnnotation = memoizedCacheAnnotationFromField(\n                info.parentType.getFields()[info.fieldName],\n              );\n\n              // Note that specifying `@cacheControl(inheritMaxAge: true)` on a\n              // field whose return type defines a `maxAge` gives precedence to\n              // the type's `maxAge`. (Perhaps this should be some sort of\n              // error.)\n              if (\n                fieldAnnotation.inheritMaxAge &&\n                fieldPolicy.maxAge === undefined\n              ) {\n                inheritMaxAge = true;\n                // Handle `@cacheControl(inheritMaxAge: true, scope: PRIVATE)`.\n                // (We ignore any specified `maxAge`; perhaps it should be some\n                // sort of error.)\n                if (fieldAnnotation.scope) {\n                  fieldPolicy.replace({ scope: fieldAnnotation.scope });\n                }\n              } else {\n                fieldPolicy.replace(fieldAnnotation);\n              }\n\n              // This `as` is \"safe\" in the sense that this is the statement\n              // that makes a GraphQLResolveInfo into a\n              // GraphQLResolveInfoWithCacheControl.\n              (info as GraphQLResolveInfoWithCacheControl).cacheControl = {\n                setCacheHint: (dynamicHint: CacheHint) => {\n                  fieldPolicy.replace(dynamicHint);\n                },\n                cacheHint: fieldPolicy,\n                cacheHintFromType: memoizedCacheAnnotationFromType,\n              };\n\n              // When the resolver is done, call restrict once. By calling\n              // restrict after the resolver instead of before, we don't need to\n              // \"undo\" the effect on overallCachePolicy of a static hint that\n              // gets refined by a dynamic hint.\n              return () => {\n                // If this field returns a composite type or is a root field and\n                // we haven't seen an explicit maxAge hint, set the maxAge to 0\n                // (uncached) or the default if specified in the constructor.\n                // (Non-object fields by default are assumed to inherit their\n                // cacheability from their parents. But on the other hand, while\n                // root non-object fields can get explicit hints from their\n                // definition on the Query/Mutation object, if that doesn't\n                // exist then there's no parent field that would assign the\n                // default maxAge, so we do it here.)\n                //\n                // You can disable this on a non-root field by writing\n                // `@cacheControl(inheritMaxAge: true)` on it. If you do this,\n                // then its children will be treated like root paths, since\n                // there is no parent maxAge to inherit.\n                //\n                // We do this in the end hook so that dynamic cache control\n                // prevents it from happening (eg,\n                // `info.cacheControl.cacheHint.restrict({maxAge: 60})` should\n                // work rather than doing nothing because we've already set the\n                // max age to the default of 0). This also lets resolvers assume\n                // any hint in `info.cacheControl.cacheHint` was explicitly set.\n                if (\n                  fieldPolicy.maxAge === undefined &&\n                  ((isCompositeType(targetType) && !inheritMaxAge) ||\n                    !info.path.prev)\n                ) {\n                  fieldPolicy.restrict({ maxAge: defaultMaxAge });\n                }\n\n                if (__testing__cacheHints && isRestricted(fieldPolicy)) {\n                  const path = responsePathAsArray(info.path).join('.');\n                  if (__testing__cacheHints.has(path)) {\n                    throw Error(\n                      \"shouldn't happen: addHint should only be called once per path\",\n                    );\n                  }\n                  __testing__cacheHints.set(path, {\n                    maxAge: fieldPolicy.maxAge,\n                    scope: fieldPolicy.scope,\n                  });\n                }\n                requestContext.overallCachePolicy.restrict(fieldPolicy);\n              };\n            },\n          };\n        },\n\n        async willSendResponse(requestContext) {\n          // This hook is just for setting response headers, so make sure that\n          // hasn't been disabled.\n          if (!calculateHttpHeaders) {\n            return;\n          }\n\n          const { response, overallCachePolicy } = requestContext;\n\n          // Look to see if something has already set the cache-control header.\n          // This could be a different plugin... or it could be this very plugin\n          // operating on a different operation in the same batched HTTP\n          // request.\n          const existingCacheControlHeader = parseExistingCacheControlHeader(\n            response.http.headers.get('cache-control'),\n          );\n\n          // If the header contains something other than a value that this\n          // plugin sets, then we leave it alone. We don't want to mangle\n          // something important that you set! That said, it's probably best to\n          // have only one piece of code that writes to a given header, so you\n          // should probably set `calculateHttpHeaders: false` on this plugin.\n          if (existingCacheControlHeader.kind === 'unparsable') {\n            return;\n          }\n\n          const cachePolicy = newCachePolicy();\n          cachePolicy.replace(overallCachePolicy);\n          if (existingCacheControlHeader.kind === 'parsable-and-cacheable') {\n            cachePolicy.restrict(existingCacheControlHeader.hint);\n          }\n          const policyIfCacheable = cachePolicy.policyIfCacheable();\n\n          if (\n            // This code path is only for if we believe it is cacheable.\n            policyIfCacheable &&\n            // Either there wasn't a cache-control header already, or we've\n            // already incorporated it into policyIfCacheable. (If we couldn't\n            // parse it, that means some other plugin or mechanism set the\n            // header. This is confusing, so we just don't make any more\n            // changes. You should probably set `calculateHttpHeaders` to false\n            // in that case and only set the header from one place.)\n            existingCacheControlHeader.kind !== 'uncacheable' &&\n            // At least for now, we don't set cache-control headers for\n            // incremental delivery responses, since we don't know if a later\n            // part of the execution will affect the cache policy (perhaps\n            // dynamically). (Note that willSendResponse is called when the\n            // initial payload is sent, not the final payload.)\n            response.body.kind === 'single' &&\n            !response.body.singleResult.errors\n          ) {\n            response.http.headers.set(\n              'cache-control',\n              `max-age=${\n                policyIfCacheable.maxAge\n              }, ${policyIfCacheable.scope.toLowerCase()}`,\n            );\n          } else if (calculateHttpHeaders !== 'if-cacheable') {\n            // The response is not cacheable, so make sure it doesn't get\n            // cached. This is especially important for GET requests, because\n            // browsers and other agents cache many GET requests by default.\n            // (But if some other plugin set the header to a value that this\n            // plugin does not produce, we don't do anything.)\n            response.http.headers.set(\n              'cache-control',\n              CACHE_CONTROL_HEADER_UNCACHEABLE,\n            );\n          }\n        },\n      };\n    },\n  });\n}\n\nconst CACHE_CONTROL_HEADER_CACHEABLE_REGEXP =\n  /^max-age=(\\d+), (public|private)$/;\nconst CACHE_CONTROL_HEADER_UNCACHEABLE = 'no-store';\n\ntype ExistingCacheControlHeader =\n  | { kind: 'no-header' }\n  | { kind: 'uncacheable' }\n  | { kind: 'parsable-and-cacheable'; hint: CacheHint }\n  | { kind: 'unparsable' };\n\nfunction parseExistingCacheControlHeader(\n  header: string | undefined,\n): ExistingCacheControlHeader {\n  if (!header) {\n    return { kind: 'no-header' };\n  }\n  if (header === CACHE_CONTROL_HEADER_UNCACHEABLE) {\n    return { kind: 'uncacheable' };\n  }\n  const match = CACHE_CONTROL_HEADER_CACHEABLE_REGEXP.exec(header);\n  if (!match) {\n    return { kind: 'unparsable' };\n  }\n  return {\n    kind: 'parsable-and-cacheable',\n    hint: {\n      maxAge: +match[1],\n      scope: match[2] === 'public' ? 'PUBLIC' : 'PRIVATE',\n    },\n  };\n}\n\nfunction cacheAnnotationFromDirectives(\n  directives: ReadonlyArray<DirectiveNode> | undefined,\n): CacheAnnotation | undefined {\n  if (!directives) return undefined;\n\n  const cacheControlDirective = directives.find(\n    (directive) => directive.name.value === 'cacheControl',\n  );\n  if (!cacheControlDirective) return undefined;\n\n  if (!cacheControlDirective.arguments) return undefined;\n\n  const maxAgeArgument = cacheControlDirective.arguments.find(\n    (argument) => argument.name.value === 'maxAge',\n  );\n  const scopeArgument = cacheControlDirective.arguments.find(\n    (argument) => argument.name.value === 'scope',\n  );\n  const inheritMaxAgeArgument = cacheControlDirective.arguments.find(\n    (argument) => argument.name.value === 'inheritMaxAge',\n  );\n\n  const scopeString =\n    scopeArgument?.value?.kind === 'EnumValue'\n      ? scopeArgument.value.value\n      : undefined;\n\n  const scope: CacheScope | undefined =\n    scopeString === 'PUBLIC' || scopeString === 'PRIVATE'\n      ? scopeString\n      : undefined;\n\n  if (\n    inheritMaxAgeArgument?.value?.kind === 'BooleanValue' &&\n    inheritMaxAgeArgument.value.value\n  ) {\n    // We ignore maxAge if it is also specified.\n    return { inheritMaxAge: true, scope };\n  }\n\n  return {\n    maxAge:\n      maxAgeArgument?.value?.kind === 'IntValue'\n        ? parseInt(maxAgeArgument.value.value)\n        : undefined,\n    scope,\n  };\n}\n\nfunction cacheAnnotationFromType(t: GraphQLCompositeType): CacheAnnotation {\n  if (t.astNode) {\n    const hint = cacheAnnotationFromDirectives(t.astNode.directives);\n    if (hint) {\n      return hint;\n    }\n  }\n  if (t.extensionASTNodes) {\n    for (const node of t.extensionASTNodes) {\n      const hint = cacheAnnotationFromDirectives(node.directives);\n      if (hint) {\n        return hint;\n      }\n    }\n  }\n  return {};\n}\n\nfunction cacheAnnotationFromField(\n  field: GraphQLField<unknown, unknown>,\n): CacheAnnotation {\n  if (field.astNode) {\n    const hint = cacheAnnotationFromDirectives(field.astNode.directives);\n    if (hint) {\n      return hint;\n    }\n  }\n  return {};\n}\n\nfunction isRestricted(hint: CacheHint) {\n  return hint.maxAge !== undefined || hint.scope !== undefined;\n}\n", "const { EventEmitter } = require(\"events\");\n\nclass AbortSignal {\n  constructor() {\n    this.eventEmitter = new EventEmitter();\n    this.onabort = null;\n    this.aborted = false;\n    this.reason = undefined;\n  }\n  toString() {\n    return \"[object AbortSignal]\";\n  }\n  get [Symbol.toStringTag]() {\n    return \"AbortSignal\";\n  }\n  removeEventListener(name, handler) {\n    this.eventEmitter.removeListener(name, handler);\n  }\n  addEventListener(name, handler) {\n    this.eventEmitter.on(name, handler);\n  }\n  dispatchEvent(type) {\n    const event = { type, target: this };\n    const handlerName = `on${type}`;\n\n    if (typeof this[handlerName] === \"function\") this[handlerName](event);\n\n    this.eventEmitter.emit(type, event);\n  }\n  throwIfAborted() {\n    if (this.aborted) {\n      throw this.reason;\n    }\n  }\n  static abort(reason) {\n    const controller = new AbortController();\n    controller.abort();\n    return controller.signal;\n  }\n  static timeout(time) {\n    const controller = new AbortController();\n    setTimeout(() => controller.abort(new Error(\"TimeoutError\")), time);\n    return controller.signal;\n  }\n}\nclass AbortController {\n  constructor() {\n    this.signal = new AbortSignal();\n  }\n  abort(reason) {\n    if (this.signal.aborted) return;\n\n    this.signal.aborted = true;\n\n    if (reason) this.signal.reason = reason;\n    else this.signal.reason = new Error(\"AbortError\");\n\n    this.signal.dispatchEvent(\"abort\");\n  }\n  toString() {\n    return \"[object AbortController]\";\n  }\n  get [Symbol.toStringTag]() {\n    return \"AbortController\";\n  }\n}\n\nmodule.exports = { AbortController, AbortSignal };\n", "\"use strict\";\n\nvar conversions = {};\nmodule.exports = conversions;\n\nfunction sign(x) {\n    return x < 0 ? -1 : 1;\n}\n\nfunction evenRound(x) {\n    // Round x to the nearest integer, choosing the even integer if it lies halfway between two.\n    if ((x % 1) === 0.5 && (x & 1) === 0) { // [even number].5; round down (i.e. floor)\n        return Math.floor(x);\n    } else {\n        return Math.round(x);\n    }\n}\n\nfunction createNumberConversion(bitLength, typeOpts) {\n    if (!typeOpts.unsigned) {\n        --bitLength;\n    }\n    const lowerBound = typeOpts.unsigned ? 0 : -Math.pow(2, bitLength);\n    const upperBound = Math.pow(2, bitLength) - 1;\n\n    const moduloVal = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength) : Math.pow(2, bitLength);\n    const moduloBound = typeOpts.moduloBitLength ? Math.pow(2, typeOpts.moduloBitLength - 1) : Math.pow(2, bitLength - 1);\n\n    return function(V, opts) {\n        if (!opts) opts = {};\n\n        let x = +V;\n\n        if (opts.enforceRange) {\n            if (!Number.isFinite(x)) {\n                throw new TypeError(\"Argument is not a finite number\");\n            }\n\n            x = sign(x) * Math.floor(Math.abs(x));\n            if (x < lowerBound || x > upperBound) {\n                throw new TypeError(\"Argument is not in byte range\");\n            }\n\n            return x;\n        }\n\n        if (!isNaN(x) && opts.clamp) {\n            x = evenRound(x);\n\n            if (x < lowerBound) x = lowerBound;\n            if (x > upperBound) x = upperBound;\n            return x;\n        }\n\n        if (!Number.isFinite(x) || x === 0) {\n            return 0;\n        }\n\n        x = sign(x) * Math.floor(Math.abs(x));\n        x = x % moduloVal;\n\n        if (!typeOpts.unsigned && x >= moduloBound) {\n            return x - moduloVal;\n        } else if (typeOpts.unsigned) {\n            if (x < 0) {\n              x += moduloVal;\n            } else if (x === -0) { // don't return negative zero\n              return 0;\n            }\n        }\n\n        return x;\n    }\n}\n\nconversions[\"void\"] = function () {\n    return undefined;\n};\n\nconversions[\"boolean\"] = function (val) {\n    return !!val;\n};\n\nconversions[\"byte\"] = createNumberConversion(8, { unsigned: false });\nconversions[\"octet\"] = createNumberConversion(8, { unsigned: true });\n\nconversions[\"short\"] = createNumberConversion(16, { unsigned: false });\nconversions[\"unsigned short\"] = createNumberConversion(16, { unsigned: true });\n\nconversions[\"long\"] = createNumberConversion(32, { unsigned: false });\nconversions[\"unsigned long\"] = createNumberConversion(32, { unsigned: true });\n\nconversions[\"long long\"] = createNumberConversion(32, { unsigned: false, moduloBitLength: 64 });\nconversions[\"unsigned long long\"] = createNumberConversion(32, { unsigned: true, moduloBitLength: 64 });\n\nconversions[\"double\"] = function (V) {\n    const x = +V;\n\n    if (!Number.isFinite(x)) {\n        throw new TypeError(\"Argument is not a finite floating-point value\");\n    }\n\n    return x;\n};\n\nconversions[\"unrestricted double\"] = function (V) {\n    const x = +V;\n\n    if (isNaN(x)) {\n        throw new TypeError(\"Argument is NaN\");\n    }\n\n    return x;\n};\n\n// not quite valid, but good enough for JS\nconversions[\"float\"] = conversions[\"double\"];\nconversions[\"unrestricted float\"] = conversions[\"unrestricted double\"];\n\nconversions[\"DOMString\"] = function (V, opts) {\n    if (!opts) opts = {};\n\n    if (opts.treatNullAsEmptyString && V === null) {\n        return \"\";\n    }\n\n    return String(V);\n};\n\nconversions[\"ByteString\"] = function (V, opts) {\n    const x = String(V);\n    let c = undefined;\n    for (let i = 0; (c = x.codePointAt(i)) !== undefined; ++i) {\n        if (c > 255) {\n            throw new TypeError(\"Argument is not a valid bytestring\");\n        }\n    }\n\n    return x;\n};\n\nconversions[\"USVString\"] = function (V) {\n    const S = String(V);\n    const n = S.length;\n    const U = [];\n    for (let i = 0; i < n; ++i) {\n        const c = S.charCodeAt(i);\n        if (c < 0xD800 || c > 0xDFFF) {\n            U.push(String.fromCodePoint(c));\n        } else if (0xDC00 <= c && c <= 0xDFFF) {\n            U.push(String.fromCodePoint(0xFFFD));\n        } else {\n            if (i === n - 1) {\n                U.push(String.fromCodePoint(0xFFFD));\n            } else {\n                const d = S.charCodeAt(i + 1);\n                if (0xDC00 <= d && d <= 0xDFFF) {\n                    const a = c & 0x3FF;\n                    const b = d & 0x3FF;\n                    U.push(String.fromCodePoint((2 << 15) + (2 << 9) * a + b));\n                    ++i;\n                } else {\n                    U.push(String.fromCodePoint(0xFFFD));\n                }\n            }\n        }\n    }\n\n    return U.join('');\n};\n\nconversions[\"Date\"] = function (V, opts) {\n    if (!(V instanceof Date)) {\n        throw new TypeError(\"Argument is not a Date object\");\n    }\n    if (isNaN(V)) {\n        return undefined;\n    }\n\n    return V;\n};\n\nconversions[\"RegExp\"] = function (V, opts) {\n    if (!(V instanceof RegExp)) {\n        V = new RegExp(V);\n    }\n\n    return V;\n};\n", "\"use strict\";\n\nmodule.exports.mixin = function mixin(target, source) {\n  const keys = Object.getOwnPropertyNames(source);\n  for (let i = 0; i < keys.length; ++i) {\n    Object.defineProperty(target, keys[i], Object.getOwnPropertyDescriptor(source, keys[i]));\n  }\n};\n\nmodule.exports.wrapperSymbol = Symbol(\"wrapper\");\nmodule.exports.implSymbol = Symbol(\"impl\");\n\nmodule.exports.wrapperForImpl = function (impl) {\n  return impl[module.exports.wrapperSymbol];\n};\n\nmodule.exports.implForWrapper = function (wrapper) {\n  return wrapper[module.exports.implSymbol];\n};\n\n", "[[[0,44],\"disallowed_STD3_valid\"],[[45,46],\"valid\"],[[47,47],\"disallowed_STD3_valid\"],[[48,57],\"valid\"],[[58,64],\"disallowed_STD3_valid\"],[[65,65],\"mapped\",[97]],[[66,66],\"mapped\",[98]],[[67,67],\"mapped\",[99]],[[68,68],\"mapped\",[100]],[[69,69],\"mapped\",[101]],[[70,70],\"mapped\",[102]],[[71,71],\"mapped\",[103]],[[72,72],\"mapped\",[104]],[[73,73],\"mapped\",[105]],[[74,74],\"mapped\",[106]],[[75,75],\"mapped\",[107]],[[76,76],\"mapped\",[108]],[[77,77],\"mapped\",[109]],[[78,78],\"mapped\",[110]],[[79,79],\"mapped\",[111]],[[80,80],\"mapped\",[112]],[[81,81],\"mapped\",[113]],[[82,82],\"mapped\",[114]],[[83,83],\"mapped\",[115]],[[84,84],\"mapped\",[116]],[[85,85],\"mapped\",[117]],[[86,86],\"mapped\",[118]],[[87,87],\"mapped\",[119]],[[88,88],\"mapped\",[120]],[[89,89],\"mapped\",[121]],[[90,90],\"mapped\",[122]],[[91,96],\"disallowed_STD3_valid\"],[[97,122],\"valid\"],[[123,127],\"disallowed_STD3_valid\"],[[128,159],\"disallowed\"],[[160,160],\"disallowed_STD3_mapped\",[32]],[[161,167],\"valid\",[],\"NV8\"],[[168,168],\"disallowed_STD3_mapped\",[32,776]],[[169,169],\"valid\",[],\"NV8\"],[[170,170],\"mapped\",[97]],[[171,172],\"valid\",[],\"NV8\"],[[173,173],\"ignored\"],[[174,174],\"valid\",[],\"NV8\"],[[175,175],\"disallowed_STD3_mapped\",[32,772]],[[176,177],\"valid\",[],\"NV8\"],[[178,178],\"mapped\",[50]],[[179,179],\"mapped\",[51]],[[180,180],\"disallowed_STD3_mapped\",[32,769]],[[181,181],\"mapped\",[956]],[[182,182],\"valid\",[],\"NV8\"],[[183,183],\"valid\"],[[184,184],\"disallowed_STD3_mapped\",[32,807]],[[185,185],\"mapped\",[49]],[[186,186],\"mapped\",[111]],[[187,187],\"valid\",[],\"NV8\"],[[188,188],\"mapped\",[49,8260,52]],[[189,189],\"mapped\",[49,8260,50]],[[190,190],\"mapped\",[51,8260,52]],[[191,191],\"valid\",[],\"NV8\"],[[192,192],\"mapped\",[224]],[[193,193],\"mapped\",[225]],[[194,194],\"mapped\",[226]],[[195,195],\"mapped\",[227]],[[196,196],\"mapped\",[228]],[[197,197],\"mapped\",[229]],[[198,198],\"mapped\",[230]],[[199,199],\"mapped\",[231]],[[200,200],\"mapped\",[232]],[[201,201],\"mapped\",[233]],[[202,202],\"mapped\",[234]],[[203,203],\"mapped\",[235]],[[204,204],\"mapped\",[236]],[[205,205],\"mapped\",[237]],[[206,206],\"mapped\",[238]],[[207,207],\"mapped\",[239]],[[208,208],\"mapped\",[240]],[[209,209],\"mapped\",[241]],[[210,210],\"mapped\",[242]],[[211,211],\"mapped\",[243]],[[212,212],\"mapped\",[244]],[[213,213],\"mapped\",[245]],[[214,214],\"mapped\",[246]],[[215,215],\"valid\",[],\"NV8\"],[[216,216],\"mapped\",[248]],[[217,217],\"mapped\",[249]],[[218,218],\"mapped\",[250]],[[219,219],\"mapped\",[251]],[[220,220],\"mapped\",[252]],[[221,221],\"mapped\",[253]],[[222,222],\"mapped\",[254]],[[223,223],\"deviation\",[115,115]],[[224,246],\"valid\"],[[247,247],\"valid\",[],\"NV8\"],[[248,255],\"valid\"],[[256,256],\"mapped\",[257]],[[257,257],\"valid\"],[[258,258],\"mapped\",[259]],[[259,259],\"valid\"],[[260,260],\"mapped\",[261]],[[261,261],\"valid\"],[[262,262],\"mapped\",[263]],[[263,263],\"valid\"],[[264,264],\"mapped\",[265]],[[265,265],\"valid\"],[[266,266],\"mapped\",[267]],[[267,267],\"valid\"],[[268,268],\"mapped\",[269]],[[269,269],\"valid\"],[[270,270],\"mapped\",[271]],[[271,271],\"valid\"],[[272,272],\"mapped\",[273]],[[273,273],\"valid\"],[[274,274],\"mapped\",[275]],[[275,275],\"valid\"],[[276,276],\"mapped\",[277]],[[277,277],\"valid\"],[[278,278],\"mapped\",[279]],[[279,279],\"valid\"],[[280,280],\"mapped\",[281]],[[281,281],\"valid\"],[[282,282],\"mapped\",[283]],[[283,283],\"valid\"],[[284,284],\"mapped\",[285]],[[285,285],\"valid\"],[[286,286],\"mapped\",[287]],[[287,287],\"valid\"],[[288,288],\"mapped\",[289]],[[289,289],\"valid\"],[[290,290],\"mapped\",[291]],[[291,291],\"valid\"],[[292,292],\"mapped\",[293]],[[293,293],\"valid\"],[[294,294],\"mapped\",[295]],[[295,295],\"valid\"],[[296,296],\"mapped\",[297]],[[297,297],\"valid\"],[[298,298],\"mapped\",[299]],[[299,299],\"valid\"],[[300,300],\"mapped\",[301]],[[301,301],\"valid\"],[[302,302],\"mapped\",[303]],[[303,303],\"valid\"],[[304,304],\"mapped\",[105,775]],[[305,305],\"valid\"],[[306,307],\"mapped\",[105,106]],[[308,308],\"mapped\",[309]],[[309,309],\"valid\"],[[310,310],\"mapped\",[311]],[[311,312],\"valid\"],[[313,313],\"mapped\",[314]],[[314,314],\"valid\"],[[315,315],\"mapped\",[316]],[[316,316],\"valid\"],[[317,317],\"mapped\",[318]],[[318,318],\"valid\"],[[319,320],\"mapped\",[108,183]],[[321,321],\"mapped\",[322]],[[322,322],\"valid\"],[[323,323],\"mapped\",[324]],[[324,324],\"valid\"],[[325,325],\"mapped\",[326]],[[326,326],\"valid\"],[[327,327],\"mapped\",[328]],[[328,328],\"valid\"],[[329,329],\"mapped\",[700,110]],[[330,330],\"mapped\",[331]],[[331,331],\"valid\"],[[332,332],\"mapped\",[333]],[[333,333],\"valid\"],[[334,334],\"mapped\",[335]],[[335,335],\"valid\"],[[336,336],\"mapped\",[337]],[[337,337],\"valid\"],[[338,338],\"mapped\",[339]],[[339,339],\"valid\"],[[340,340],\"mapped\",[341]],[[341,341],\"valid\"],[[342,342],\"mapped\",[343]],[[343,343],\"valid\"],[[344,344],\"mapped\",[345]],[[345,345],\"valid\"],[[346,346],\"mapped\",[347]],[[347,347],\"valid\"],[[348,348],\"mapped\",[349]],[[349,349],\"valid\"],[[350,350],\"mapped\",[351]],[[351,351],\"valid\"],[[352,352],\"mapped\",[353]],[[353,353],\"valid\"],[[354,354],\"mapped\",[355]],[[355,355],\"valid\"],[[356,356],\"mapped\",[357]],[[357,357],\"valid\"],[[358,358],\"mapped\",[359]],[[359,359],\"valid\"],[[360,360],\"mapped\",[361]],[[361,361],\"valid\"],[[362,362],\"mapped\",[363]],[[363,363],\"valid\"],[[364,364],\"mapped\",[365]],[[365,365],\"valid\"],[[366,366],\"mapped\",[367]],[[367,367],\"valid\"],[[368,368],\"mapped\",[369]],[[369,369],\"valid\"],[[370,370],\"mapped\",[371]],[[371,371],\"valid\"],[[372,372],\"mapped\",[373]],[[373,373],\"valid\"],[[374,374],\"mapped\",[375]],[[375,375],\"valid\"],[[376,376],\"mapped\",[255]],[[377,377],\"mapped\",[378]],[[378,378],\"valid\"],[[379,379],\"mapped\",[380]],[[380,380],\"valid\"],[[381,381],\"mapped\",[382]],[[382,382],\"valid\"],[[383,383],\"mapped\",[115]],[[384,384],\"valid\"],[[385,385],\"mapped\",[595]],[[386,386],\"mapped\",[387]],[[387,387],\"valid\"],[[388,388],\"mapped\",[389]],[[389,389],\"valid\"],[[390,390],\"mapped\",[596]],[[391,391],\"mapped\",[392]],[[392,392],\"valid\"],[[393,393],\"mapped\",[598]],[[394,394],\"mapped\",[599]],[[395,395],\"mapped\",[396]],[[396,397],\"valid\"],[[398,398],\"mapped\",[477]],[[399,399],\"mapped\",[601]],[[400,400],\"mapped\",[603]],[[401,401],\"mapped\",[402]],[[402,402],\"valid\"],[[403,403],\"mapped\",[608]],[[404,404],\"mapped\",[611]],[[405,405],\"valid\"],[[406,406],\"mapped\",[617]],[[407,407],\"mapped\",[616]],[[408,408],\"mapped\",[409]],[[409,411],\"valid\"],[[412,412],\"mapped\",[623]],[[413,413],\"mapped\",[626]],[[414,414],\"valid\"],[[415,415],\"mapped\",[629]],[[416,416],\"mapped\",[417]],[[417,417],\"valid\"],[[418,418],\"mapped\",[419]],[[419,419],\"valid\"],[[420,420],\"mapped\",[421]],[[421,421],\"valid\"],[[422,422],\"mapped\",[640]],[[423,423],\"mapped\",[424]],[[424,424],\"valid\"],[[425,425],\"mapped\",[643]],[[426,427],\"valid\"],[[428,428],\"mapped\",[429]],[[429,429],\"valid\"],[[430,430],\"mapped\",[648]],[[431,431],\"mapped\",[432]],[[432,432],\"valid\"],[[433,433],\"mapped\",[650]],[[434,434],\"mapped\",[651]],[[435,435],\"mapped\",[436]],[[436,436],\"valid\"],[[437,437],\"mapped\",[438]],[[438,438],\"valid\"],[[439,439],\"mapped\",[658]],[[440,440],\"mapped\",[441]],[[441,443],\"valid\"],[[444,444],\"mapped\",[445]],[[445,451],\"valid\"],[[452,454],\"mapped\",[100,382]],[[455,457],\"mapped\",[108,106]],[[458,460],\"mapped\",[110,106]],[[461,461],\"mapped\",[462]],[[462,462],\"valid\"],[[463,463],\"mapped\",[464]],[[464,464],\"valid\"],[[465,465],\"mapped\",[466]],[[466,466],\"valid\"],[[467,467],\"mapped\",[468]],[[468,468],\"valid\"],[[469,469],\"mapped\",[470]],[[470,470],\"valid\"],[[471,471],\"mapped\",[472]],[[472,472],\"valid\"],[[473,473],\"mapped\",[474]],[[474,474],\"valid\"],[[475,475],\"mapped\",[476]],[[476,477],\"valid\"],[[478,478],\"mapped\",[479]],[[479,479],\"valid\"],[[480,480],\"mapped\",[481]],[[481,481],\"valid\"],[[482,482],\"mapped\",[483]],[[483,483],\"valid\"],[[484,484],\"mapped\",[485]],[[485,485],\"valid\"],[[486,486],\"mapped\",[487]],[[487,487],\"valid\"],[[488,488],\"mapped\",[489]],[[489,489],\"valid\"],[[490,490],\"mapped\",[491]],[[491,491],\"valid\"],[[492,492],\"mapped\",[493]],[[493,493],\"valid\"],[[494,494],\"mapped\",[495]],[[495,496],\"valid\"],[[497,499],\"mapped\",[100,122]],[[500,500],\"mapped\",[501]],[[501,501],\"valid\"],[[502,502],\"mapped\",[405]],[[503,503],\"mapped\",[447]],[[504,504],\"mapped\",[505]],[[505,505],\"valid\"],[[506,506],\"mapped\",[507]],[[507,507],\"valid\"],[[508,508],\"mapped\",[509]],[[509,509],\"valid\"],[[510,510],\"mapped\",[511]],[[511,511],\"valid\"],[[512,512],\"mapped\",[513]],[[513,513],\"valid\"],[[514,514],\"mapped\",[515]],[[515,515],\"valid\"],[[516,516],\"mapped\",[517]],[[517,517],\"valid\"],[[518,518],\"mapped\",[519]],[[519,519],\"valid\"],[[520,520],\"mapped\",[521]],[[521,521],\"valid\"],[[522,522],\"mapped\",[523]],[[523,523],\"valid\"],[[524,524],\"mapped\",[525]],[[525,525],\"valid\"],[[526,526],\"mapped\",[527]],[[527,527],\"valid\"],[[528,528],\"mapped\",[529]],[[529,529],\"valid\"],[[530,530],\"mapped\",[531]],[[531,531],\"valid\"],[[532,532],\"mapped\",[533]],[[533,533],\"valid\"],[[534,534],\"mapped\",[535]],[[535,535],\"valid\"],[[536,536],\"mapped\",[537]],[[537,537],\"valid\"],[[538,538],\"mapped\",[539]],[[539,539],\"valid\"],[[540,540],\"mapped\",[541]],[[541,541],\"valid\"],[[542,542],\"mapped\",[543]],[[543,543],\"valid\"],[[544,544],\"mapped\",[414]],[[545,545],\"valid\"],[[546,546],\"mapped\",[547]],[[547,547],\"valid\"],[[548,548],\"mapped\",[549]],[[549,549],\"valid\"],[[550,550],\"mapped\",[551]],[[551,551],\"valid\"],[[552,552],\"mapped\",[553]],[[553,553],\"valid\"],[[554,554],\"mapped\",[555]],[[555,555],\"valid\"],[[556,556],\"mapped\",[557]],[[557,557],\"valid\"],[[558,558],\"mapped\",[559]],[[559,559],\"valid\"],[[560,560],\"mapped\",[561]],[[561,561],\"valid\"],[[562,562],\"mapped\",[563]],[[563,563],\"valid\"],[[564,566],\"valid\"],[[567,569],\"valid\"],[[570,570],\"mapped\",[11365]],[[571,571],\"mapped\",[572]],[[572,572],\"valid\"],[[573,573],\"mapped\",[410]],[[574,574],\"mapped\",[11366]],[[575,576],\"valid\"],[[577,577],\"mapped\",[578]],[[578,578],\"valid\"],[[579,579],\"mapped\",[384]],[[580,580],\"mapped\",[649]],[[581,581],\"mapped\",[652]],[[582,582],\"mapped\",[583]],[[583,583],\"valid\"],[[584,584],\"mapped\",[585]],[[585,585],\"valid\"],[[586,586],\"mapped\",[587]],[[587,587],\"valid\"],[[588,588],\"mapped\",[589]],[[589,589],\"valid\"],[[590,590],\"mapped\",[591]],[[591,591],\"valid\"],[[592,680],\"valid\"],[[681,685],\"valid\"],[[686,687],\"valid\"],[[688,688],\"mapped\",[104]],[[689,689],\"mapped\",[614]],[[690,690],\"mapped\",[106]],[[691,691],\"mapped\",[114]],[[692,692],\"mapped\",[633]],[[693,693],\"mapped\",[635]],[[694,694],\"mapped\",[641]],[[695,695],\"mapped\",[119]],[[696,696],\"mapped\",[121]],[[697,705],\"valid\"],[[706,709],\"valid\",[],\"NV8\"],[[710,721],\"valid\"],[[722,727],\"valid\",[],\"NV8\"],[[728,728],\"disallowed_STD3_mapped\",[32,774]],[[729,729],\"disallowed_STD3_mapped\",[32,775]],[[730,730],\"disallowed_STD3_mapped\",[32,778]],[[731,731],\"disallowed_STD3_mapped\",[32,808]],[[732,732],\"disallowed_STD3_mapped\",[32,771]],[[733,733],\"disallowed_STD3_mapped\",[32,779]],[[734,734],\"valid\",[],\"NV8\"],[[735,735],\"valid\",[],\"NV8\"],[[736,736],\"mapped\",[611]],[[737,737],\"mapped\",[108]],[[738,738],\"mapped\",[115]],[[739,739],\"mapped\",[120]],[[740,740],\"mapped\",[661]],[[741,745],\"valid\",[],\"NV8\"],[[746,747],\"valid\",[],\"NV8\"],[[748,748],\"valid\"],[[749,749],\"valid\",[],\"NV8\"],[[750,750],\"valid\"],[[751,767],\"valid\",[],\"NV8\"],[[768,831],\"valid\"],[[832,832],\"mapped\",[768]],[[833,833],\"mapped\",[769]],[[834,834],\"valid\"],[[835,835],\"mapped\",[787]],[[836,836],\"mapped\",[776,769]],[[837,837],\"mapped\",[953]],[[838,846],\"valid\"],[[847,847],\"ignored\"],[[848,855],\"valid\"],[[856,860],\"valid\"],[[861,863],\"valid\"],[[864,865],\"valid\"],[[866,866],\"valid\"],[[867,879],\"valid\"],[[880,880],\"mapped\",[881]],[[881,881],\"valid\"],[[882,882],\"mapped\",[883]],[[883,883],\"valid\"],[[884,884],\"mapped\",[697]],[[885,885],\"valid\"],[[886,886],\"mapped\",[887]],[[887,887],\"valid\"],[[888,889],\"disallowed\"],[[890,890],\"disallowed_STD3_mapped\",[32,953]],[[891,893],\"valid\"],[[894,894],\"disallowed_STD3_mapped\",[59]],[[895,895],\"mapped\",[1011]],[[896,899],\"disallowed\"],[[900,900],\"disallowed_STD3_mapped\",[32,769]],[[901,901],\"disallowed_STD3_mapped\",[32,776,769]],[[902,902],\"mapped\",[940]],[[903,903],\"mapped\",[183]],[[904,904],\"mapped\",[941]],[[905,905],\"mapped\",[942]],[[906,906],\"mapped\",[943]],[[907,907],\"disallowed\"],[[908,908],\"mapped\",[972]],[[909,909],\"disallowed\"],[[910,910],\"mapped\",[973]],[[911,911],\"mapped\",[974]],[[912,912],\"valid\"],[[913,913],\"mapped\",[945]],[[914,914],\"mapped\",[946]],[[915,915],\"mapped\",[947]],[[916,916],\"mapped\",[948]],[[917,917],\"mapped\",[949]],[[918,918],\"mapped\",[950]],[[919,919],\"mapped\",[951]],[[920,920],\"mapped\",[952]],[[921,921],\"mapped\",[953]],[[922,922],\"mapped\",[954]],[[923,923],\"mapped\",[955]],[[924,924],\"mapped\",[956]],[[925,925],\"mapped\",[957]],[[926,926],\"mapped\",[958]],[[927,927],\"mapped\",[959]],[[928,928],\"mapped\",[960]],[[929,929],\"mapped\",[961]],[[930,930],\"disallowed\"],[[931,931],\"mapped\",[963]],[[932,932],\"mapped\",[964]],[[933,933],\"mapped\",[965]],[[934,934],\"mapped\",[966]],[[935,935],\"mapped\",[967]],[[936,936],\"mapped\",[968]],[[937,937],\"mapped\",[969]],[[938,938],\"mapped\",[970]],[[939,939],\"mapped\",[971]],[[940,961],\"valid\"],[[962,962],\"deviation\",[963]],[[963,974],\"valid\"],[[975,975],\"mapped\",[983]],[[976,976],\"mapped\",[946]],[[977,977],\"mapped\",[952]],[[978,978],\"mapped\",[965]],[[979,979],\"mapped\",[973]],[[980,980],\"mapped\",[971]],[[981,981],\"mapped\",[966]],[[982,982],\"mapped\",[960]],[[983,983],\"valid\"],[[984,984],\"mapped\",[985]],[[985,985],\"valid\"],[[986,986],\"mapped\",[987]],[[987,987],\"valid\"],[[988,988],\"mapped\",[989]],[[989,989],\"valid\"],[[990,990],\"mapped\",[991]],[[991,991],\"valid\"],[[992,992],\"mapped\",[993]],[[993,993],\"valid\"],[[994,994],\"mapped\",[995]],[[995,995],\"valid\"],[[996,996],\"mapped\",[997]],[[997,997],\"valid\"],[[998,998],\"mapped\",[999]],[[999,999],\"valid\"],[[1000,1000],\"mapped\",[1001]],[[1001,1001],\"valid\"],[[1002,1002],\"mapped\",[1003]],[[1003,1003],\"valid\"],[[1004,1004],\"mapped\",[1005]],[[1005,1005],\"valid\"],[[1006,1006],\"mapped\",[1007]],[[1007,1007],\"valid\"],[[1008,1008],\"mapped\",[954]],[[1009,1009],\"mapped\",[961]],[[1010,1010],\"mapped\",[963]],[[1011,1011],\"valid\"],[[1012,1012],\"mapped\",[952]],[[1013,1013],\"mapped\",[949]],[[1014,1014],\"valid\",[],\"NV8\"],[[1015,1015],\"mapped\",[1016]],[[1016,1016],\"valid\"],[[1017,1017],\"mapped\",[963]],[[1018,1018],\"mapped\",[1019]],[[1019,1019],\"valid\"],[[1020,1020],\"valid\"],[[1021,1021],\"mapped\",[891]],[[1022,1022],\"mapped\",[892]],[[1023,1023],\"mapped\",[893]],[[1024,1024],\"mapped\",[1104]],[[1025,1025],\"mapped\",[1105]],[[1026,1026],\"mapped\",[1106]],[[1027,1027],\"mapped\",[1107]],[[1028,1028],\"mapped\",[1108]],[[1029,1029],\"mapped\",[1109]],[[1030,1030],\"mapped\",[1110]],[[1031,1031],\"mapped\",[1111]],[[1032,1032],\"mapped\",[1112]],[[1033,1033],\"mapped\",[1113]],[[1034,1034],\"mapped\",[1114]],[[1035,1035],\"mapped\",[1115]],[[1036,1036],\"mapped\",[1116]],[[1037,1037],\"mapped\",[1117]],[[1038,1038],\"mapped\",[1118]],[[1039,1039],\"mapped\",[1119]],[[1040,1040],\"mapped\",[1072]],[[1041,1041],\"mapped\",[1073]],[[1042,1042],\"mapped\",[1074]],[[1043,1043],\"mapped\",[1075]],[[1044,1044],\"mapped\",[1076]],[[1045,1045],\"mapped\",[1077]],[[1046,1046],\"mapped\",[1078]],[[1047,1047],\"mapped\",[1079]],[[1048,1048],\"mapped\",[1080]],[[1049,1049],\"mapped\",[1081]],[[1050,1050],\"mapped\",[1082]],[[1051,1051],\"mapped\",[1083]],[[1052,1052],\"mapped\",[1084]],[[1053,1053],\"mapped\",[1085]],[[1054,1054],\"mapped\",[1086]],[[1055,1055],\"mapped\",[1087]],[[1056,1056],\"mapped\",[1088]],[[1057,1057],\"mapped\",[1089]],[[1058,1058],\"mapped\",[1090]],[[1059,1059],\"mapped\",[1091]],[[1060,1060],\"mapped\",[1092]],[[1061,1061],\"mapped\",[1093]],[[1062,1062],\"mapped\",[1094]],[[1063,1063],\"mapped\",[1095]],[[1064,1064],\"mapped\",[1096]],[[1065,1065],\"mapped\",[1097]],[[1066,1066],\"mapped\",[1098]],[[1067,1067],\"mapped\",[1099]],[[1068,1068],\"mapped\",[1100]],[[1069,1069],\"mapped\",[1101]],[[1070,1070],\"mapped\",[1102]],[[1071,1071],\"mapped\",[1103]],[[1072,1103],\"valid\"],[[1104,1104],\"valid\"],[[1105,1116],\"valid\"],[[1117,1117],\"valid\"],[[1118,1119],\"valid\"],[[1120,1120],\"mapped\",[1121]],[[1121,1121],\"valid\"],[[1122,1122],\"mapped\",[1123]],[[1123,1123],\"valid\"],[[1124,1124],\"mapped\",[1125]],[[1125,1125],\"valid\"],[[1126,1126],\"mapped\",[1127]],[[1127,1127],\"valid\"],[[1128,1128],\"mapped\",[1129]],[[1129,1129],\"valid\"],[[1130,1130],\"mapped\",[1131]],[[1131,1131],\"valid\"],[[1132,1132],\"mapped\",[1133]],[[1133,1133],\"valid\"],[[1134,1134],\"mapped\",[1135]],[[1135,1135],\"valid\"],[[1136,1136],\"mapped\",[1137]],[[1137,1137],\"valid\"],[[1138,1138],\"mapped\",[1139]],[[1139,1139],\"valid\"],[[1140,1140],\"mapped\",[1141]],[[1141,1141],\"valid\"],[[1142,1142],\"mapped\",[1143]],[[1143,1143],\"valid\"],[[1144,1144],\"mapped\",[1145]],[[1145,1145],\"valid\"],[[1146,1146],\"mapped\",[1147]],[[1147,1147],\"valid\"],[[1148,1148],\"mapped\",[1149]],[[1149,1149],\"valid\"],[[1150,1150],\"mapped\",[1151]],[[1151,1151],\"valid\"],[[1152,1152],\"mapped\",[1153]],[[1153,1153],\"valid\"],[[1154,1154],\"valid\",[],\"NV8\"],[[1155,1158],\"valid\"],[[1159,1159],\"valid\"],[[1160,1161],\"valid\",[],\"NV8\"],[[1162,1162],\"mapped\",[1163]],[[1163,1163],\"valid\"],[[1164,1164],\"mapped\",[1165]],[[1165,1165],\"valid\"],[[1166,1166],\"mapped\",[1167]],[[1167,1167],\"valid\"],[[1168,1168],\"mapped\",[1169]],[[1169,1169],\"valid\"],[[1170,1170],\"mapped\",[1171]],[[1171,1171],\"valid\"],[[1172,1172],\"mapped\",[1173]],[[1173,1173],\"valid\"],[[1174,1174],\"mapped\",[1175]],[[1175,1175],\"valid\"],[[1176,1176],\"mapped\",[1177]],[[1177,1177],\"valid\"],[[1178,1178],\"mapped\",[1179]],[[1179,1179],\"valid\"],[[1180,1180],\"mapped\",[1181]],[[1181,1181],\"valid\"],[[1182,1182],\"mapped\",[1183]],[[1183,1183],\"valid\"],[[1184,1184],\"mapped\",[1185]],[[1185,1185],\"valid\"],[[1186,1186],\"mapped\",[1187]],[[1187,1187],\"valid\"],[[1188,1188],\"mapped\",[1189]],[[1189,1189],\"valid\"],[[1190,1190],\"mapped\",[1191]],[[1191,1191],\"valid\"],[[1192,1192],\"mapped\",[1193]],[[1193,1193],\"valid\"],[[1194,1194],\"mapped\",[1195]],[[1195,1195],\"valid\"],[[1196,1196],\"mapped\",[1197]],[[1197,1197],\"valid\"],[[1198,1198],\"mapped\",[1199]],[[1199,1199],\"valid\"],[[1200,1200],\"mapped\",[1201]],[[1201,1201],\"valid\"],[[1202,1202],\"mapped\",[1203]],[[1203,1203],\"valid\"],[[1204,1204],\"mapped\",[1205]],[[1205,1205],\"valid\"],[[1206,1206],\"mapped\",[1207]],[[1207,1207],\"valid\"],[[1208,1208],\"mapped\",[1209]],[[1209,1209],\"valid\"],[[1210,1210],\"mapped\",[1211]],[[1211,1211],\"valid\"],[[1212,1212],\"mapped\",[1213]],[[1213,1213],\"valid\"],[[1214,1214],\"mapped\",[1215]],[[1215,1215],\"valid\"],[[1216,1216],\"disallowed\"],[[1217,1217],\"mapped\",[1218]],[[1218,1218],\"valid\"],[[1219,1219],\"mapped\",[1220]],[[1220,1220],\"valid\"],[[1221,1221],\"mapped\",[1222]],[[1222,1222],\"valid\"],[[1223,1223],\"mapped\",[1224]],[[1224,1224],\"valid\"],[[1225,1225],\"mapped\",[1226]],[[1226,1226],\"valid\"],[[1227,1227],\"mapped\",[1228]],[[1228,1228],\"valid\"],[[1229,1229],\"mapped\",[1230]],[[1230,1230],\"valid\"],[[1231,1231],\"valid\"],[[1232,1232],\"mapped\",[1233]],[[1233,1233],\"valid\"],[[1234,1234],\"mapped\",[1235]],[[1235,1235],\"valid\"],[[1236,1236],\"mapped\",[1237]],[[1237,1237],\"valid\"],[[1238,1238],\"mapped\",[1239]],[[1239,1239],\"valid\"],[[1240,1240],\"mapped\",[1241]],[[1241,1241],\"valid\"],[[1242,1242],\"mapped\",[1243]],[[1243,1243],\"valid\"],[[1244,1244],\"mapped\",[1245]],[[1245,1245],\"valid\"],[[1246,1246],\"mapped\",[1247]],[[1247,1247],\"valid\"],[[1248,1248],\"mapped\",[1249]],[[1249,1249],\"valid\"],[[1250,1250],\"mapped\",[1251]],[[1251,1251],\"valid\"],[[1252,1252],\"mapped\",[1253]],[[1253,1253],\"valid\"],[[1254,1254],\"mapped\",[1255]],[[1255,1255],\"valid\"],[[1256,1256],\"mapped\",[1257]],[[1257,1257],\"valid\"],[[1258,1258],\"mapped\",[1259]],[[1259,1259],\"valid\"],[[1260,1260],\"mapped\",[1261]],[[1261,1261],\"valid\"],[[1262,1262],\"mapped\",[1263]],[[1263,1263],\"valid\"],[[1264,1264],\"mapped\",[1265]],[[1265,1265],\"valid\"],[[1266,1266],\"mapped\",[1267]],[[1267,1267],\"valid\"],[[1268,1268],\"mapped\",[1269]],[[1269,1269],\"valid\"],[[1270,1270],\"mapped\",[1271]],[[1271,1271],\"valid\"],[[1272,1272],\"mapped\",[1273]],[[1273,1273],\"valid\"],[[1274,1274],\"mapped\",[1275]],[[1275,1275],\"valid\"],[[1276,1276],\"mapped\",[1277]],[[1277,1277],\"valid\"],[[1278,1278],\"mapped\",[1279]],[[1279,1279],\"valid\"],[[1280,1280],\"mapped\",[1281]],[[1281,1281],\"valid\"],[[1282,1282],\"mapped\",[1283]],[[1283,1283],\"valid\"],[[1284,1284],\"mapped\",[1285]],[[1285,1285],\"valid\"],[[1286,1286],\"mapped\",[1287]],[[1287,1287],\"valid\"],[[1288,1288],\"mapped\",[1289]],[[1289,1289],\"valid\"],[[1290,1290],\"mapped\",[1291]],[[1291,1291],\"valid\"],[[1292,1292],\"mapped\",[1293]],[[1293,1293],\"valid\"],[[1294,1294],\"mapped\",[1295]],[[1295,1295],\"valid\"],[[1296,1296],\"mapped\",[1297]],[[1297,1297],\"valid\"],[[1298,1298],\"mapped\",[1299]],[[1299,1299],\"valid\"],[[1300,1300],\"mapped\",[1301]],[[1301,1301],\"valid\"],[[1302,1302],\"mapped\",[1303]],[[1303,1303],\"valid\"],[[1304,1304],\"mapped\",[1305]],[[1305,1305],\"valid\"],[[1306,1306],\"mapped\",[1307]],[[1307,1307],\"valid\"],[[1308,1308],\"mapped\",[1309]],[[1309,1309],\"valid\"],[[1310,1310],\"mapped\",[1311]],[[1311,1311],\"valid\"],[[1312,1312],\"mapped\",[1313]],[[1313,1313],\"valid\"],[[1314,1314],\"mapped\",[1315]],[[1315,1315],\"valid\"],[[1316,1316],\"mapped\",[1317]],[[1317,1317],\"valid\"],[[1318,1318],\"mapped\",[1319]],[[1319,1319],\"valid\"],[[1320,1320],\"mapped\",[1321]],[[1321,1321],\"valid\"],[[1322,1322],\"mapped\",[1323]],[[1323,1323],\"valid\"],[[1324,1324],\"mapped\",[1325]],[[1325,1325],\"valid\"],[[1326,1326],\"mapped\",[1327]],[[1327,1327],\"valid\"],[[1328,1328],\"disallowed\"],[[1329,1329],\"mapped\",[1377]],[[1330,1330],\"mapped\",[1378]],[[1331,1331],\"mapped\",[1379]],[[1332,1332],\"mapped\",[1380]],[[1333,1333],\"mapped\",[1381]],[[1334,1334],\"mapped\",[1382]],[[1335,1335],\"mapped\",[1383]],[[1336,1336],\"mapped\",[1384]],[[1337,1337],\"mapped\",[1385]],[[1338,1338],\"mapped\",[1386]],[[1339,1339],\"mapped\",[1387]],[[1340,1340],\"mapped\",[1388]],[[1341,1341],\"mapped\",[1389]],[[1342,1342],\"mapped\",[1390]],[[1343,1343],\"mapped\",[1391]],[[1344,1344],\"mapped\",[1392]],[[1345,1345],\"mapped\",[1393]],[[1346,1346],\"mapped\",[1394]],[[1347,1347],\"mapped\",[1395]],[[1348,1348],\"mapped\",[1396]],[[1349,1349],\"mapped\",[1397]],[[1350,1350],\"mapped\",[1398]],[[1351,1351],\"mapped\",[1399]],[[1352,1352],\"mapped\",[1400]],[[1353,1353],\"mapped\",[1401]],[[1354,1354],\"mapped\",[1402]],[[1355,1355],\"mapped\",[1403]],[[1356,1356],\"mapped\",[1404]],[[1357,1357],\"mapped\",[1405]],[[1358,1358],\"mapped\",[1406]],[[1359,1359],\"mapped\",[1407]],[[1360,1360],\"mapped\",[1408]],[[1361,1361],\"mapped\",[1409]],[[1362,1362],\"mapped\",[1410]],[[1363,1363],\"mapped\",[1411]],[[1364,1364],\"mapped\",[1412]],[[1365,1365],\"mapped\",[1413]],[[1366,1366],\"mapped\",[1414]],[[1367,1368],\"disallowed\"],[[1369,1369],\"valid\"],[[1370,1375],\"valid\",[],\"NV8\"],[[1376,1376],\"disallowed\"],[[1377,1414],\"valid\"],[[1415,1415],\"mapped\",[1381,1410]],[[1416,1416],\"disallowed\"],[[1417,1417],\"valid\",[],\"NV8\"],[[1418,1418],\"valid\",[],\"NV8\"],[[1419,1420],\"disallowed\"],[[1421,1422],\"valid\",[],\"NV8\"],[[1423,1423],\"valid\",[],\"NV8\"],[[1424,1424],\"disallowed\"],[[1425,1441],\"valid\"],[[1442,1442],\"valid\"],[[1443,1455],\"valid\"],[[1456,1465],\"valid\"],[[1466,1466],\"valid\"],[[1467,1469],\"valid\"],[[1470,1470],\"valid\",[],\"NV8\"],[[1471,1471],\"valid\"],[[1472,1472],\"valid\",[],\"NV8\"],[[1473,1474],\"valid\"],[[1475,1475],\"valid\",[],\"NV8\"],[[1476,1476],\"valid\"],[[1477,1477],\"valid\"],[[1478,1478],\"valid\",[],\"NV8\"],[[1479,1479],\"valid\"],[[1480,1487],\"disallowed\"],[[1488,1514],\"valid\"],[[1515,1519],\"disallowed\"],[[1520,1524],\"valid\"],[[1525,1535],\"disallowed\"],[[1536,1539],\"disallowed\"],[[1540,1540],\"disallowed\"],[[1541,1541],\"disallowed\"],[[1542,1546],\"valid\",[],\"NV8\"],[[1547,1547],\"valid\",[],\"NV8\"],[[1548,1548],\"valid\",[],\"NV8\"],[[1549,1551],\"valid\",[],\"NV8\"],[[1552,1557],\"valid\"],[[1558,1562],\"valid\"],[[1563,1563],\"valid\",[],\"NV8\"],[[1564,1564],\"disallowed\"],[[1565,1565],\"disallowed\"],[[1566,1566],\"valid\",[],\"NV8\"],[[1567,1567],\"valid\",[],\"NV8\"],[[1568,1568],\"valid\"],[[1569,1594],\"valid\"],[[1595,1599],\"valid\"],[[1600,1600],\"valid\",[],\"NV8\"],[[1601,1618],\"valid\"],[[1619,1621],\"valid\"],[[1622,1624],\"valid\"],[[1625,1630],\"valid\"],[[1631,1631],\"valid\"],[[1632,1641],\"valid\"],[[1642,1645],\"valid\",[],\"NV8\"],[[1646,1647],\"valid\"],[[1648,1652],\"valid\"],[[1653,1653],\"mapped\",[1575,1652]],[[1654,1654],\"mapped\",[1608,1652]],[[1655,1655],\"mapped\",[1735,1652]],[[1656,1656],\"mapped\",[1610,1652]],[[1657,1719],\"valid\"],[[1720,1721],\"valid\"],[[1722,1726],\"valid\"],[[1727,1727],\"valid\"],[[1728,1742],\"valid\"],[[1743,1743],\"valid\"],[[1744,1747],\"valid\"],[[1748,1748],\"valid\",[],\"NV8\"],[[1749,1756],\"valid\"],[[1757,1757],\"disallowed\"],[[1758,1758],\"valid\",[],\"NV8\"],[[1759,1768],\"valid\"],[[1769,1769],\"valid\",[],\"NV8\"],[[1770,1773],\"valid\"],[[1774,1775],\"valid\"],[[1776,1785],\"valid\"],[[1786,1790],\"valid\"],[[1791,1791],\"valid\"],[[1792,1805],\"valid\",[],\"NV8\"],[[1806,1806],\"disallowed\"],[[1807,1807],\"disallowed\"],[[1808,1836],\"valid\"],[[1837,1839],\"valid\"],[[1840,1866],\"valid\"],[[1867,1868],\"disallowed\"],[[1869,1871],\"valid\"],[[1872,1901],\"valid\"],[[1902,1919],\"valid\"],[[1920,1968],\"valid\"],[[1969,1969],\"valid\"],[[1970,1983],\"disallowed\"],[[1984,2037],\"valid\"],[[2038,2042],\"valid\",[],\"NV8\"],[[2043,2047],\"disallowed\"],[[2048,2093],\"valid\"],[[2094,2095],\"disallowed\"],[[2096,2110],\"valid\",[],\"NV8\"],[[2111,2111],\"disallowed\"],[[2112,2139],\"valid\"],[[2140,2141],\"disallowed\"],[[2142,2142],\"valid\",[],\"NV8\"],[[2143,2207],\"disallowed\"],[[2208,2208],\"valid\"],[[2209,2209],\"valid\"],[[2210,2220],\"valid\"],[[2221,2226],\"valid\"],[[2227,2228],\"valid\"],[[2229,2274],\"disallowed\"],[[2275,2275],\"valid\"],[[2276,2302],\"valid\"],[[2303,2303],\"valid\"],[[2304,2304],\"valid\"],[[2305,2307],\"valid\"],[[2308,2308],\"valid\"],[[2309,2361],\"valid\"],[[2362,2363],\"valid\"],[[2364,2381],\"valid\"],[[2382,2382],\"valid\"],[[2383,2383],\"valid\"],[[2384,2388],\"valid\"],[[2389,2389],\"valid\"],[[2390,2391],\"valid\"],[[2392,2392],\"mapped\",[2325,2364]],[[2393,2393],\"mapped\",[2326,2364]],[[2394,2394],\"mapped\",[2327,2364]],[[2395,2395],\"mapped\",[2332,2364]],[[2396,2396],\"mapped\",[2337,2364]],[[2397,2397],\"mapped\",[2338,2364]],[[2398,2398],\"mapped\",[2347,2364]],[[2399,2399],\"mapped\",[2351,2364]],[[2400,2403],\"valid\"],[[2404,2405],\"valid\",[],\"NV8\"],[[2406,2415],\"valid\"],[[2416,2416],\"valid\",[],\"NV8\"],[[2417,2418],\"valid\"],[[2419,2423],\"valid\"],[[2424,2424],\"valid\"],[[2425,2426],\"valid\"],[[2427,2428],\"valid\"],[[2429,2429],\"valid\"],[[2430,2431],\"valid\"],[[2432,2432],\"valid\"],[[2433,2435],\"valid\"],[[2436,2436],\"disallowed\"],[[2437,2444],\"valid\"],[[2445,2446],\"disallowed\"],[[2447,2448],\"valid\"],[[2449,2450],\"disallowed\"],[[2451,2472],\"valid\"],[[2473,2473],\"disallowed\"],[[2474,2480],\"valid\"],[[2481,2481],\"disallowed\"],[[2482,2482],\"valid\"],[[2483,2485],\"disallowed\"],[[2486,2489],\"valid\"],[[2490,2491],\"disallowed\"],[[2492,2492],\"valid\"],[[2493,2493],\"valid\"],[[2494,2500],\"valid\"],[[2501,2502],\"disallowed\"],[[2503,2504],\"valid\"],[[2505,2506],\"disallowed\"],[[2507,2509],\"valid\"],[[2510,2510],\"valid\"],[[2511,2518],\"disallowed\"],[[2519,2519],\"valid\"],[[2520,2523],\"disallowed\"],[[2524,2524],\"mapped\",[2465,2492]],[[2525,2525],\"mapped\",[2466,2492]],[[2526,2526],\"disallowed\"],[[2527,2527],\"mapped\",[2479,2492]],[[2528,2531],\"valid\"],[[2532,2533],\"disallowed\"],[[2534,2545],\"valid\"],[[2546,2554],\"valid\",[],\"NV8\"],[[2555,2555],\"valid\",[],\"NV8\"],[[2556,2560],\"disallowed\"],[[2561,2561],\"valid\"],[[2562,2562],\"valid\"],[[2563,2563],\"valid\"],[[2564,2564],\"disallowed\"],[[2565,2570],\"valid\"],[[2571,2574],\"disallowed\"],[[2575,2576],\"valid\"],[[2577,2578],\"disallowed\"],[[2579,2600],\"valid\"],[[2601,2601],\"disallowed\"],[[2602,2608],\"valid\"],[[2609,2609],\"disallowed\"],[[2610,2610],\"valid\"],[[2611,2611],\"mapped\",[2610,2620]],[[2612,2612],\"disallowed\"],[[2613,2613],\"valid\"],[[2614,2614],\"mapped\",[2616,2620]],[[2615,2615],\"disallowed\"],[[2616,2617],\"valid\"],[[2618,2619],\"disallowed\"],[[2620,2620],\"valid\"],[[2621,2621],\"disallowed\"],[[2622,2626],\"valid\"],[[2627,2630],\"disallowed\"],[[2631,2632],\"valid\"],[[2633,2634],\"disallowed\"],[[2635,2637],\"valid\"],[[2638,2640],\"disallowed\"],[[2641,2641],\"valid\"],[[2642,2648],\"disallowed\"],[[2649,2649],\"mapped\",[2582,2620]],[[2650,2650],\"mapped\",[2583,2620]],[[2651,2651],\"mapped\",[2588,2620]],[[2652,2652],\"valid\"],[[2653,2653],\"disallowed\"],[[2654,2654],\"mapped\",[2603,2620]],[[2655,2661],\"disallowed\"],[[2662,2676],\"valid\"],[[2677,2677],\"valid\"],[[2678,2688],\"disallowed\"],[[2689,2691],\"valid\"],[[2692,2692],\"disallowed\"],[[2693,2699],\"valid\"],[[2700,2700],\"valid\"],[[2701,2701],\"valid\"],[[2702,2702],\"disallowed\"],[[2703,2705],\"valid\"],[[2706,2706],\"disallowed\"],[[2707,2728],\"valid\"],[[2729,2729],\"disallowed\"],[[2730,2736],\"valid\"],[[2737,2737],\"disallowed\"],[[2738,2739],\"valid\"],[[2740,2740],\"disallowed\"],[[2741,2745],\"valid\"],[[2746,2747],\"disallowed\"],[[2748,2757],\"valid\"],[[2758,2758],\"disallowed\"],[[2759,2761],\"valid\"],[[2762,2762],\"disallowed\"],[[2763,2765],\"valid\"],[[2766,2767],\"disallowed\"],[[2768,2768],\"valid\"],[[2769,2783],\"disallowed\"],[[2784,2784],\"valid\"],[[2785,2787],\"valid\"],[[2788,2789],\"disallowed\"],[[2790,2799],\"valid\"],[[2800,2800],\"valid\",[],\"NV8\"],[[2801,2801],\"valid\",[],\"NV8\"],[[2802,2808],\"disallowed\"],[[2809,2809],\"valid\"],[[2810,2816],\"disallowed\"],[[2817,2819],\"valid\"],[[2820,2820],\"disallowed\"],[[2821,2828],\"valid\"],[[2829,2830],\"disallowed\"],[[2831,2832],\"valid\"],[[2833,2834],\"disallowed\"],[[2835,2856],\"valid\"],[[2857,2857],\"disallowed\"],[[2858,2864],\"valid\"],[[2865,2865],\"disallowed\"],[[2866,2867],\"valid\"],[[2868,2868],\"disallowed\"],[[2869,2869],\"valid\"],[[2870,2873],\"valid\"],[[2874,2875],\"disallowed\"],[[2876,2883],\"valid\"],[[2884,2884],\"valid\"],[[2885,2886],\"disallowed\"],[[2887,2888],\"valid\"],[[2889,2890],\"disallowed\"],[[2891,2893],\"valid\"],[[2894,2901],\"disallowed\"],[[2902,2903],\"valid\"],[[2904,2907],\"disallowed\"],[[2908,2908],\"mapped\",[2849,2876]],[[2909,2909],\"mapped\",[2850,2876]],[[2910,2910],\"disallowed\"],[[2911,2913],\"valid\"],[[2914,2915],\"valid\"],[[2916,2917],\"disallowed\"],[[2918,2927],\"valid\"],[[2928,2928],\"valid\",[],\"NV8\"],[[2929,2929],\"valid\"],[[2930,2935],\"valid\",[],\"NV8\"],[[2936,2945],\"disallowed\"],[[2946,2947],\"valid\"],[[2948,2948],\"disallowed\"],[[2949,2954],\"valid\"],[[2955,2957],\"disallowed\"],[[2958,2960],\"valid\"],[[2961,2961],\"disallowed\"],[[2962,2965],\"valid\"],[[2966,2968],\"disallowed\"],[[2969,2970],\"valid\"],[[2971,2971],\"disallowed\"],[[2972,2972],\"valid\"],[[2973,2973],\"disallowed\"],[[2974,2975],\"valid\"],[[2976,2978],\"disallowed\"],[[2979,2980],\"valid\"],[[2981,2983],\"disallowed\"],[[2984,2986],\"valid\"],[[2987,2989],\"disallowed\"],[[2990,2997],\"valid\"],[[2998,2998],\"valid\"],[[2999,3001],\"valid\"],[[3002,3005],\"disallowed\"],[[3006,3010],\"valid\"],[[3011,3013],\"disallowed\"],[[3014,3016],\"valid\"],[[3017,3017],\"disallowed\"],[[3018,3021],\"valid\"],[[3022,3023],\"disallowed\"],[[3024,3024],\"valid\"],[[3025,3030],\"disallowed\"],[[3031,3031],\"valid\"],[[3032,3045],\"disallowed\"],[[3046,3046],\"valid\"],[[3047,3055],\"valid\"],[[3056,3058],\"valid\",[],\"NV8\"],[[3059,3066],\"valid\",[],\"NV8\"],[[3067,3071],\"disallowed\"],[[3072,3072],\"valid\"],[[3073,3075],\"valid\"],[[3076,3076],\"disallowed\"],[[3077,3084],\"valid\"],[[3085,3085],\"disallowed\"],[[3086,3088],\"valid\"],[[3089,3089],\"disallowed\"],[[3090,3112],\"valid\"],[[3113,3113],\"disallowed\"],[[3114,3123],\"valid\"],[[3124,3124],\"valid\"],[[3125,3129],\"valid\"],[[3130,3132],\"disallowed\"],[[3133,3133],\"valid\"],[[3134,3140],\"valid\"],[[3141,3141],\"disallowed\"],[[3142,3144],\"valid\"],[[3145,3145],\"disallowed\"],[[3146,3149],\"valid\"],[[3150,3156],\"disallowed\"],[[3157,3158],\"valid\"],[[3159,3159],\"disallowed\"],[[3160,3161],\"valid\"],[[3162,3162],\"valid\"],[[3163,3167],\"disallowed\"],[[3168,3169],\"valid\"],[[3170,3171],\"valid\"],[[3172,3173],\"disallowed\"],[[3174,3183],\"valid\"],[[3184,3191],\"disallowed\"],[[3192,3199],\"valid\",[],\"NV8\"],[[3200,3200],\"disallowed\"],[[3201,3201],\"valid\"],[[3202,3203],\"valid\"],[[3204,3204],\"disallowed\"],[[3205,3212],\"valid\"],[[3213,3213],\"disallowed\"],[[3214,3216],\"valid\"],[[3217,3217],\"disallowed\"],[[3218,3240],\"valid\"],[[3241,3241],\"disallowed\"],[[3242,3251],\"valid\"],[[3252,3252],\"disallowed\"],[[3253,3257],\"valid\"],[[3258,3259],\"disallowed\"],[[3260,3261],\"valid\"],[[3262,3268],\"valid\"],[[3269,3269],\"disallowed\"],[[3270,3272],\"valid\"],[[3273,3273],\"disallowed\"],[[3274,3277],\"valid\"],[[3278,3284],\"disallowed\"],[[3285,3286],\"valid\"],[[3287,3293],\"disallowed\"],[[3294,3294],\"valid\"],[[3295,3295],\"disallowed\"],[[3296,3297],\"valid\"],[[3298,3299],\"valid\"],[[3300,3301],\"disallowed\"],[[3302,3311],\"valid\"],[[3312,3312],\"disallowed\"],[[3313,3314],\"valid\"],[[3315,3328],\"disallowed\"],[[3329,3329],\"valid\"],[[3330,3331],\"valid\"],[[3332,3332],\"disallowed\"],[[3333,3340],\"valid\"],[[3341,3341],\"disallowed\"],[[3342,3344],\"valid\"],[[3345,3345],\"disallowed\"],[[3346,3368],\"valid\"],[[3369,3369],\"valid\"],[[3370,3385],\"valid\"],[[3386,3386],\"valid\"],[[3387,3388],\"disallowed\"],[[3389,3389],\"valid\"],[[3390,3395],\"valid\"],[[3396,3396],\"valid\"],[[3397,3397],\"disallowed\"],[[3398,3400],\"valid\"],[[3401,3401],\"disallowed\"],[[3402,3405],\"valid\"],[[3406,3406],\"valid\"],[[3407,3414],\"disallowed\"],[[3415,3415],\"valid\"],[[3416,3422],\"disallowed\"],[[3423,3423],\"valid\"],[[3424,3425],\"valid\"],[[3426,3427],\"valid\"],[[3428,3429],\"disallowed\"],[[3430,3439],\"valid\"],[[3440,3445],\"valid\",[],\"NV8\"],[[3446,3448],\"disallowed\"],[[3449,3449],\"valid\",[],\"NV8\"],[[3450,3455],\"valid\"],[[3456,3457],\"disallowed\"],[[3458,3459],\"valid\"],[[3460,3460],\"disallowed\"],[[3461,3478],\"valid\"],[[3479,3481],\"disallowed\"],[[3482,3505],\"valid\"],[[3506,3506],\"disallowed\"],[[3507,3515],\"valid\"],[[3516,3516],\"disallowed\"],[[3517,3517],\"valid\"],[[3518,3519],\"disallowed\"],[[3520,3526],\"valid\"],[[3527,3529],\"disallowed\"],[[3530,3530],\"valid\"],[[3531,3534],\"disallowed\"],[[3535,3540],\"valid\"],[[3541,3541],\"disallowed\"],[[3542,3542],\"valid\"],[[3543,3543],\"disallowed\"],[[3544,3551],\"valid\"],[[3552,3557],\"disallowed\"],[[3558,3567],\"valid\"],[[3568,3569],\"disallowed\"],[[3570,3571],\"valid\"],[[3572,3572],\"valid\",[],\"NV8\"],[[3573,3584],\"disallowed\"],[[3585,3634],\"valid\"],[[3635,3635],\"mapped\",[3661,3634]],[[3636,3642],\"valid\"],[[3643,3646],\"disallowed\"],[[3647,3647],\"valid\",[],\"NV8\"],[[3648,3662],\"valid\"],[[3663,3663],\"valid\",[],\"NV8\"],[[3664,3673],\"valid\"],[[3674,3675],\"valid\",[],\"NV8\"],[[3676,3712],\"disallowed\"],[[3713,3714],\"valid\"],[[3715,3715],\"disallowed\"],[[3716,3716],\"valid\"],[[3717,3718],\"disallowed\"],[[3719,3720],\"valid\"],[[3721,3721],\"disallowed\"],[[3722,3722],\"valid\"],[[3723,3724],\"disallowed\"],[[3725,3725],\"valid\"],[[3726,3731],\"disallowed\"],[[3732,3735],\"valid\"],[[3736,3736],\"disallowed\"],[[3737,3743],\"valid\"],[[3744,3744],\"disallowed\"],[[3745,3747],\"valid\"],[[3748,3748],\"disallowed\"],[[3749,3749],\"valid\"],[[3750,3750],\"disallowed\"],[[3751,3751],\"valid\"],[[3752,3753],\"disallowed\"],[[3754,3755],\"valid\"],[[3756,3756],\"disallowed\"],[[3757,3762],\"valid\"],[[3763,3763],\"mapped\",[3789,3762]],[[3764,3769],\"valid\"],[[3770,3770],\"disallowed\"],[[3771,3773],\"valid\"],[[3774,3775],\"disallowed\"],[[3776,3780],\"valid\"],[[3781,3781],\"disallowed\"],[[3782,3782],\"valid\"],[[3783,3783],\"disallowed\"],[[3784,3789],\"valid\"],[[3790,3791],\"disallowed\"],[[3792,3801],\"valid\"],[[3802,3803],\"disallowed\"],[[3804,3804],\"mapped\",[3755,3737]],[[3805,3805],\"mapped\",[3755,3745]],[[3806,3807],\"valid\"],[[3808,3839],\"disallowed\"],[[3840,3840],\"valid\"],[[3841,3850],\"valid\",[],\"NV8\"],[[3851,3851],\"valid\"],[[3852,3852],\"mapped\",[3851]],[[3853,3863],\"valid\",[],\"NV8\"],[[3864,3865],\"valid\"],[[3866,3871],\"valid\",[],\"NV8\"],[[3872,3881],\"valid\"],[[3882,3892],\"valid\",[],\"NV8\"],[[3893,3893],\"valid\"],[[3894,3894],\"valid\",[],\"NV8\"],[[3895,3895],\"valid\"],[[3896,3896],\"valid\",[],\"NV8\"],[[3897,3897],\"valid\"],[[3898,3901],\"valid\",[],\"NV8\"],[[3902,3906],\"valid\"],[[3907,3907],\"mapped\",[3906,4023]],[[3908,3911],\"valid\"],[[3912,3912],\"disallowed\"],[[3913,3916],\"valid\"],[[3917,3917],\"mapped\",[3916,4023]],[[3918,3921],\"valid\"],[[3922,3922],\"mapped\",[3921,4023]],[[3923,3926],\"valid\"],[[3927,3927],\"mapped\",[3926,4023]],[[3928,3931],\"valid\"],[[3932,3932],\"mapped\",[3931,4023]],[[3933,3944],\"valid\"],[[3945,3945],\"mapped\",[3904,4021]],[[3946,3946],\"valid\"],[[3947,3948],\"valid\"],[[3949,3952],\"disallowed\"],[[3953,3954],\"valid\"],[[3955,3955],\"mapped\",[3953,3954]],[[3956,3956],\"valid\"],[[3957,3957],\"mapped\",[3953,3956]],[[3958,3958],\"mapped\",[4018,3968]],[[3959,3959],\"mapped\",[4018,3953,3968]],[[3960,3960],\"mapped\",[4019,3968]],[[3961,3961],\"mapped\",[4019,3953,3968]],[[3962,3968],\"valid\"],[[3969,3969],\"mapped\",[3953,3968]],[[3970,3972],\"valid\"],[[3973,3973],\"valid\",[],\"NV8\"],[[3974,3979],\"valid\"],[[3980,3983],\"valid\"],[[3984,3986],\"valid\"],[[3987,3987],\"mapped\",[3986,4023]],[[3988,3989],\"valid\"],[[3990,3990],\"valid\"],[[3991,3991],\"valid\"],[[3992,3992],\"disallowed\"],[[3993,3996],\"valid\"],[[3997,3997],\"mapped\",[3996,4023]],[[3998,4001],\"valid\"],[[4002,4002],\"mapped\",[4001,4023]],[[4003,4006],\"valid\"],[[4007,4007],\"mapped\",[4006,4023]],[[4008,4011],\"valid\"],[[4012,4012],\"mapped\",[4011,4023]],[[4013,4013],\"valid\"],[[4014,4016],\"valid\"],[[4017,4023],\"valid\"],[[4024,4024],\"valid\"],[[4025,4025],\"mapped\",[3984,4021]],[[4026,4028],\"valid\"],[[4029,4029],\"disallowed\"],[[4030,4037],\"valid\",[],\"NV8\"],[[4038,4038],\"valid\"],[[4039,4044],\"valid\",[],\"NV8\"],[[4045,4045],\"disallowed\"],[[4046,4046],\"valid\",[],\"NV8\"],[[4047,4047],\"valid\",[],\"NV8\"],[[4048,4049],\"valid\",[],\"NV8\"],[[4050,4052],\"valid\",[],\"NV8\"],[[4053,4056],\"valid\",[],\"NV8\"],[[4057,4058],\"valid\",[],\"NV8\"],[[4059,4095],\"disallowed\"],[[4096,4129],\"valid\"],[[4130,4130],\"valid\"],[[4131,4135],\"valid\"],[[4136,4136],\"valid\"],[[4137,4138],\"valid\"],[[4139,4139],\"valid\"],[[4140,4146],\"valid\"],[[4147,4149],\"valid\"],[[4150,4153],\"valid\"],[[4154,4159],\"valid\"],[[4160,4169],\"valid\"],[[4170,4175],\"valid\",[],\"NV8\"],[[4176,4185],\"valid\"],[[4186,4249],\"valid\"],[[4250,4253],\"valid\"],[[4254,4255],\"valid\",[],\"NV8\"],[[4256,4293],\"disallowed\"],[[4294,4294],\"disallowed\"],[[4295,4295],\"mapped\",[11559]],[[4296,4300],\"disallowed\"],[[4301,4301],\"mapped\",[11565]],[[4302,4303],\"disallowed\"],[[4304,4342],\"valid\"],[[4343,4344],\"valid\"],[[4345,4346],\"valid\"],[[4347,4347],\"valid\",[],\"NV8\"],[[4348,4348],\"mapped\",[4316]],[[4349,4351],\"valid\"],[[4352,4441],\"valid\",[],\"NV8\"],[[4442,4446],\"valid\",[],\"NV8\"],[[4447,4448],\"disallowed\"],[[4449,4514],\"valid\",[],\"NV8\"],[[4515,4519],\"valid\",[],\"NV8\"],[[4520,4601],\"valid\",[],\"NV8\"],[[4602,4607],\"valid\",[],\"NV8\"],[[4608,4614],\"valid\"],[[4615,4615],\"valid\"],[[4616,4678],\"valid\"],[[4679,4679],\"valid\"],[[4680,4680],\"valid\"],[[4681,4681],\"disallowed\"],[[4682,4685],\"valid\"],[[4686,4687],\"disallowed\"],[[4688,4694],\"valid\"],[[4695,4695],\"disallowed\"],[[4696,4696],\"valid\"],[[4697,4697],\"disallowed\"],[[4698,4701],\"valid\"],[[4702,4703],\"disallowed\"],[[4704,4742],\"valid\"],[[4743,4743],\"valid\"],[[4744,4744],\"valid\"],[[4745,4745],\"disallowed\"],[[4746,4749],\"valid\"],[[4750,4751],\"disallowed\"],[[4752,4782],\"valid\"],[[4783,4783],\"valid\"],[[4784,4784],\"valid\"],[[4785,4785],\"disallowed\"],[[4786,4789],\"valid\"],[[4790,4791],\"disallowed\"],[[4792,4798],\"valid\"],[[4799,4799],\"disallowed\"],[[4800,4800],\"valid\"],[[4801,4801],\"disallowed\"],[[4802,4805],\"valid\"],[[4806,4807],\"disallowed\"],[[4808,4814],\"valid\"],[[4815,4815],\"valid\"],[[4816,4822],\"valid\"],[[4823,4823],\"disallowed\"],[[4824,4846],\"valid\"],[[4847,4847],\"valid\"],[[4848,4878],\"valid\"],[[4879,4879],\"valid\"],[[4880,4880],\"valid\"],[[4881,4881],\"disallowed\"],[[4882,4885],\"valid\"],[[4886,4887],\"disallowed\"],[[4888,4894],\"valid\"],[[4895,4895],\"valid\"],[[4896,4934],\"valid\"],[[4935,4935],\"valid\"],[[4936,4954],\"valid\"],[[4955,4956],\"disallowed\"],[[4957,4958],\"valid\"],[[4959,4959],\"valid\"],[[4960,4960],\"valid\",[],\"NV8\"],[[4961,4988],\"valid\",[],\"NV8\"],[[4989,4991],\"disallowed\"],[[4992,5007],\"valid\"],[[5008,5017],\"valid\",[],\"NV8\"],[[5018,5023],\"disallowed\"],[[5024,5108],\"valid\"],[[5109,5109],\"valid\"],[[5110,5111],\"disallowed\"],[[5112,5112],\"mapped\",[5104]],[[5113,5113],\"mapped\",[5105]],[[5114,5114],\"mapped\",[5106]],[[5115,5115],\"mapped\",[5107]],[[5116,5116],\"mapped\",[5108]],[[5117,5117],\"mapped\",[5109]],[[5118,5119],\"disallowed\"],[[5120,5120],\"valid\",[],\"NV8\"],[[5121,5740],\"valid\"],[[5741,5742],\"valid\",[],\"NV8\"],[[5743,5750],\"valid\"],[[5751,5759],\"valid\"],[[5760,5760],\"disallowed\"],[[5761,5786],\"valid\"],[[5787,5788],\"valid\",[],\"NV8\"],[[5789,5791],\"disallowed\"],[[5792,5866],\"valid\"],[[5867,5872],\"valid\",[],\"NV8\"],[[5873,5880],\"valid\"],[[5881,5887],\"disallowed\"],[[5888,5900],\"valid\"],[[5901,5901],\"disallowed\"],[[5902,5908],\"valid\"],[[5909,5919],\"disallowed\"],[[5920,5940],\"valid\"],[[5941,5942],\"valid\",[],\"NV8\"],[[5943,5951],\"disallowed\"],[[5952,5971],\"valid\"],[[5972,5983],\"disallowed\"],[[5984,5996],\"valid\"],[[5997,5997],\"disallowed\"],[[5998,6000],\"valid\"],[[6001,6001],\"disallowed\"],[[6002,6003],\"valid\"],[[6004,6015],\"disallowed\"],[[6016,6067],\"valid\"],[[6068,6069],\"disallowed\"],[[6070,6099],\"valid\"],[[6100,6102],\"valid\",[],\"NV8\"],[[6103,6103],\"valid\"],[[6104,6107],\"valid\",[],\"NV8\"],[[6108,6108],\"valid\"],[[6109,6109],\"valid\"],[[6110,6111],\"disallowed\"],[[6112,6121],\"valid\"],[[6122,6127],\"disallowed\"],[[6128,6137],\"valid\",[],\"NV8\"],[[6138,6143],\"disallowed\"],[[6144,6149],\"valid\",[],\"NV8\"],[[6150,6150],\"disallowed\"],[[6151,6154],\"valid\",[],\"NV8\"],[[6155,6157],\"ignored\"],[[6158,6158],\"disallowed\"],[[6159,6159],\"disallowed\"],[[6160,6169],\"valid\"],[[6170,6175],\"disallowed\"],[[6176,6263],\"valid\"],[[6264,6271],\"disallowed\"],[[6272,6313],\"valid\"],[[6314,6314],\"valid\"],[[6315,6319],\"disallowed\"],[[6320,6389],\"valid\"],[[6390,6399],\"disallowed\"],[[6400,6428],\"valid\"],[[6429,6430],\"valid\"],[[6431,6431],\"disallowed\"],[[6432,6443],\"valid\"],[[6444,6447],\"disallowed\"],[[6448,6459],\"valid\"],[[6460,6463],\"disallowed\"],[[6464,6464],\"valid\",[],\"NV8\"],[[6465,6467],\"disallowed\"],[[6468,6469],\"valid\",[],\"NV8\"],[[6470,6509],\"valid\"],[[6510,6511],\"disallowed\"],[[6512,6516],\"valid\"],[[6517,6527],\"disallowed\"],[[6528,6569],\"valid\"],[[6570,6571],\"valid\"],[[6572,6575],\"disallowed\"],[[6576,6601],\"valid\"],[[6602,6607],\"disallowed\"],[[6608,6617],\"valid\"],[[6618,6618],\"valid\",[],\"XV8\"],[[6619,6621],\"disallowed\"],[[6622,6623],\"valid\",[],\"NV8\"],[[6624,6655],\"valid\",[],\"NV8\"],[[6656,6683],\"valid\"],[[6684,6685],\"disallowed\"],[[6686,6687],\"valid\",[],\"NV8\"],[[6688,6750],\"valid\"],[[6751,6751],\"disallowed\"],[[6752,6780],\"valid\"],[[6781,6782],\"disallowed\"],[[6783,6793],\"valid\"],[[6794,6799],\"disallowed\"],[[6800,6809],\"valid\"],[[6810,6815],\"disallowed\"],[[6816,6822],\"valid\",[],\"NV8\"],[[6823,6823],\"valid\"],[[6824,6829],\"valid\",[],\"NV8\"],[[6830,6831],\"disallowed\"],[[6832,6845],\"valid\"],[[6846,6846],\"valid\",[],\"NV8\"],[[6847,6911],\"disallowed\"],[[6912,6987],\"valid\"],[[6988,6991],\"disallowed\"],[[6992,7001],\"valid\"],[[7002,7018],\"valid\",[],\"NV8\"],[[7019,7027],\"valid\"],[[7028,7036],\"valid\",[],\"NV8\"],[[7037,7039],\"disallowed\"],[[7040,7082],\"valid\"],[[7083,7085],\"valid\"],[[7086,7097],\"valid\"],[[7098,7103],\"valid\"],[[7104,7155],\"valid\"],[[7156,7163],\"disallowed\"],[[7164,7167],\"valid\",[],\"NV8\"],[[7168,7223],\"valid\"],[[7224,7226],\"disallowed\"],[[7227,7231],\"valid\",[],\"NV8\"],[[7232,7241],\"valid\"],[[7242,7244],\"disallowed\"],[[7245,7293],\"valid\"],[[7294,7295],\"valid\",[],\"NV8\"],[[7296,7359],\"disallowed\"],[[7360,7367],\"valid\",[],\"NV8\"],[[7368,7375],\"disallowed\"],[[7376,7378],\"valid\"],[[7379,7379],\"valid\",[],\"NV8\"],[[7380,7410],\"valid\"],[[7411,7414],\"valid\"],[[7415,7415],\"disallowed\"],[[7416,7417],\"valid\"],[[7418,7423],\"disallowed\"],[[7424,7467],\"valid\"],[[7468,7468],\"mapped\",[97]],[[7469,7469],\"mapped\",[230]],[[7470,7470],\"mapped\",[98]],[[7471,7471],\"valid\"],[[7472,7472],\"mapped\",[100]],[[7473,7473],\"mapped\",[101]],[[7474,7474],\"mapped\",[477]],[[7475,7475],\"mapped\",[103]],[[7476,7476],\"mapped\",[104]],[[7477,7477],\"mapped\",[105]],[[7478,7478],\"mapped\",[106]],[[7479,7479],\"mapped\",[107]],[[7480,7480],\"mapped\",[108]],[[7481,7481],\"mapped\",[109]],[[7482,7482],\"mapped\",[110]],[[7483,7483],\"valid\"],[[7484,7484],\"mapped\",[111]],[[7485,7485],\"mapped\",[547]],[[7486,7486],\"mapped\",[112]],[[7487,7487],\"mapped\",[114]],[[7488,7488],\"mapped\",[116]],[[7489,7489],\"mapped\",[117]],[[7490,7490],\"mapped\",[119]],[[7491,7491],\"mapped\",[97]],[[7492,7492],\"mapped\",[592]],[[7493,7493],\"mapped\",[593]],[[7494,7494],\"mapped\",[7426]],[[7495,7495],\"mapped\",[98]],[[7496,7496],\"mapped\",[100]],[[7497,7497],\"mapped\",[101]],[[7498,7498],\"mapped\",[601]],[[7499,7499],\"mapped\",[603]],[[7500,7500],\"mapped\",[604]],[[7501,7501],\"mapped\",[103]],[[7502,7502],\"valid\"],[[7503,7503],\"mapped\",[107]],[[7504,7504],\"mapped\",[109]],[[7505,7505],\"mapped\",[331]],[[7506,7506],\"mapped\",[111]],[[7507,7507],\"mapped\",[596]],[[7508,7508],\"mapped\",[7446]],[[7509,7509],\"mapped\",[7447]],[[7510,7510],\"mapped\",[112]],[[7511,7511],\"mapped\",[116]],[[7512,7512],\"mapped\",[117]],[[7513,7513],\"mapped\",[7453]],[[7514,7514],\"mapped\",[623]],[[7515,7515],\"mapped\",[118]],[[7516,7516],\"mapped\",[7461]],[[7517,7517],\"mapped\",[946]],[[7518,7518],\"mapped\",[947]],[[7519,7519],\"mapped\",[948]],[[7520,7520],\"mapped\",[966]],[[7521,7521],\"mapped\",[967]],[[7522,7522],\"mapped\",[105]],[[7523,7523],\"mapped\",[114]],[[7524,7524],\"mapped\",[117]],[[7525,7525],\"mapped\",[118]],[[7526,7526],\"mapped\",[946]],[[7527,7527],\"mapped\",[947]],[[7528,7528],\"mapped\",[961]],[[7529,7529],\"mapped\",[966]],[[7530,7530],\"mapped\",[967]],[[7531,7531],\"valid\"],[[7532,7543],\"valid\"],[[7544,7544],\"mapped\",[1085]],[[7545,7578],\"valid\"],[[7579,7579],\"mapped\",[594]],[[7580,7580],\"mapped\",[99]],[[7581,7581],\"mapped\",[597]],[[7582,7582],\"mapped\",[240]],[[7583,7583],\"mapped\",[604]],[[7584,7584],\"mapped\",[102]],[[7585,7585],\"mapped\",[607]],[[7586,7586],\"mapped\",[609]],[[7587,7587],\"mapped\",[613]],[[7588,7588],\"mapped\",[616]],[[7589,7589],\"mapped\",[617]],[[7590,7590],\"mapped\",[618]],[[7591,7591],\"mapped\",[7547]],[[7592,7592],\"mapped\",[669]],[[7593,7593],\"mapped\",[621]],[[7594,7594],\"mapped\",[7557]],[[7595,7595],\"mapped\",[671]],[[7596,7596],\"mapped\",[625]],[[7597,7597],\"mapped\",[624]],[[7598,7598],\"mapped\",[626]],[[7599,7599],\"mapped\",[627]],[[7600,7600],\"mapped\",[628]],[[7601,7601],\"mapped\",[629]],[[7602,7602],\"mapped\",[632]],[[7603,7603],\"mapped\",[642]],[[7604,7604],\"mapped\",[643]],[[7605,7605],\"mapped\",[427]],[[7606,7606],\"mapped\",[649]],[[7607,7607],\"mapped\",[650]],[[7608,7608],\"mapped\",[7452]],[[7609,7609],\"mapped\",[651]],[[7610,7610],\"mapped\",[652]],[[7611,7611],\"mapped\",[122]],[[7612,7612],\"mapped\",[656]],[[7613,7613],\"mapped\",[657]],[[7614,7614],\"mapped\",[658]],[[7615,7615],\"mapped\",[952]],[[7616,7619],\"valid\"],[[7620,7626],\"valid\"],[[7627,7654],\"valid\"],[[7655,7669],\"valid\"],[[7670,7675],\"disallowed\"],[[7676,7676],\"valid\"],[[7677,7677],\"valid\"],[[7678,7679],\"valid\"],[[7680,7680],\"mapped\",[7681]],[[7681,7681],\"valid\"],[[7682,7682],\"mapped\",[7683]],[[7683,7683],\"valid\"],[[7684,7684],\"mapped\",[7685]],[[7685,7685],\"valid\"],[[7686,7686],\"mapped\",[7687]],[[7687,7687],\"valid\"],[[7688,7688],\"mapped\",[7689]],[[7689,7689],\"valid\"],[[7690,7690],\"mapped\",[7691]],[[7691,7691],\"valid\"],[[7692,7692],\"mapped\",[7693]],[[7693,7693],\"valid\"],[[7694,7694],\"mapped\",[7695]],[[7695,7695],\"valid\"],[[7696,7696],\"mapped\",[7697]],[[7697,7697],\"valid\"],[[7698,7698],\"mapped\",[7699]],[[7699,7699],\"valid\"],[[7700,7700],\"mapped\",[7701]],[[7701,7701],\"valid\"],[[7702,7702],\"mapped\",[7703]],[[7703,7703],\"valid\"],[[7704,7704],\"mapped\",[7705]],[[7705,7705],\"valid\"],[[7706,7706],\"mapped\",[7707]],[[7707,7707],\"valid\"],[[7708,7708],\"mapped\",[7709]],[[7709,7709],\"valid\"],[[7710,7710],\"mapped\",[7711]],[[7711,7711],\"valid\"],[[7712,7712],\"mapped\",[7713]],[[7713,7713],\"valid\"],[[7714,7714],\"mapped\",[7715]],[[7715,7715],\"valid\"],[[7716,7716],\"mapped\",[7717]],[[7717,7717],\"valid\"],[[7718,7718],\"mapped\",[7719]],[[7719,7719],\"valid\"],[[7720,7720],\"mapped\",[7721]],[[7721,7721],\"valid\"],[[7722,7722],\"mapped\",[7723]],[[7723,7723],\"valid\"],[[7724,7724],\"mapped\",[7725]],[[7725,7725],\"valid\"],[[7726,7726],\"mapped\",[7727]],[[7727,7727],\"valid\"],[[7728,7728],\"mapped\",[7729]],[[7729,7729],\"valid\"],[[7730,7730],\"mapped\",[7731]],[[7731,7731],\"valid\"],[[7732,7732],\"mapped\",[7733]],[[7733,7733],\"valid\"],[[7734,7734],\"mapped\",[7735]],[[7735,7735],\"valid\"],[[7736,7736],\"mapped\",[7737]],[[7737,7737],\"valid\"],[[7738,7738],\"mapped\",[7739]],[[7739,7739],\"valid\"],[[7740,7740],\"mapped\",[7741]],[[7741,7741],\"valid\"],[[7742,7742],\"mapped\",[7743]],[[7743,7743],\"valid\"],[[7744,7744],\"mapped\",[7745]],[[7745,7745],\"valid\"],[[7746,7746],\"mapped\",[7747]],[[7747,7747],\"valid\"],[[7748,7748],\"mapped\",[7749]],[[7749,7749],\"valid\"],[[7750,7750],\"mapped\",[7751]],[[7751,7751],\"valid\"],[[7752,7752],\"mapped\",[7753]],[[7753,7753],\"valid\"],[[7754,7754],\"mapped\",[7755]],[[7755,7755],\"valid\"],[[7756,7756],\"mapped\",[7757]],[[7757,7757],\"valid\"],[[7758,7758],\"mapped\",[7759]],[[7759,7759],\"valid\"],[[7760,7760],\"mapped\",[7761]],[[7761,7761],\"valid\"],[[7762,7762],\"mapped\",[7763]],[[7763,7763],\"valid\"],[[7764,7764],\"mapped\",[7765]],[[7765,7765],\"valid\"],[[7766,7766],\"mapped\",[7767]],[[7767,7767],\"valid\"],[[7768,7768],\"mapped\",[7769]],[[7769,7769],\"valid\"],[[7770,7770],\"mapped\",[7771]],[[7771,7771],\"valid\"],[[7772,7772],\"mapped\",[7773]],[[7773,7773],\"valid\"],[[7774,7774],\"mapped\",[7775]],[[7775,7775],\"valid\"],[[7776,7776],\"mapped\",[7777]],[[7777,7777],\"valid\"],[[7778,7778],\"mapped\",[7779]],[[7779,7779],\"valid\"],[[7780,7780],\"mapped\",[7781]],[[7781,7781],\"valid\"],[[7782,7782],\"mapped\",[7783]],[[7783,7783],\"valid\"],[[7784,7784],\"mapped\",[7785]],[[7785,7785],\"valid\"],[[7786,7786],\"mapped\",[7787]],[[7787,7787],\"valid\"],[[7788,7788],\"mapped\",[7789]],[[7789,7789],\"valid\"],[[7790,7790],\"mapped\",[7791]],[[7791,7791],\"valid\"],[[7792,7792],\"mapped\",[7793]],[[7793,7793],\"valid\"],[[7794,7794],\"mapped\",[7795]],[[7795,7795],\"valid\"],[[7796,7796],\"mapped\",[7797]],[[7797,7797],\"valid\"],[[7798,7798],\"mapped\",[7799]],[[7799,7799],\"valid\"],[[7800,7800],\"mapped\",[7801]],[[7801,7801],\"valid\"],[[7802,7802],\"mapped\",[7803]],[[7803,7803],\"valid\"],[[7804,7804],\"mapped\",[7805]],[[7805,7805],\"valid\"],[[7806,7806],\"mapped\",[7807]],[[7807,7807],\"valid\"],[[7808,7808],\"mapped\",[7809]],[[7809,7809],\"valid\"],[[7810,7810],\"mapped\",[7811]],[[7811,7811],\"valid\"],[[7812,7812],\"mapped\",[7813]],[[7813,7813],\"valid\"],[[7814,7814],\"mapped\",[7815]],[[7815,7815],\"valid\"],[[7816,7816],\"mapped\",[7817]],[[7817,7817],\"valid\"],[[7818,7818],\"mapped\",[7819]],[[7819,7819],\"valid\"],[[7820,7820],\"mapped\",[7821]],[[7821,7821],\"valid\"],[[7822,7822],\"mapped\",[7823]],[[7823,7823],\"valid\"],[[7824,7824],\"mapped\",[7825]],[[7825,7825],\"valid\"],[[7826,7826],\"mapped\",[7827]],[[7827,7827],\"valid\"],[[7828,7828],\"mapped\",[7829]],[[7829,7833],\"valid\"],[[7834,7834],\"mapped\",[97,702]],[[7835,7835],\"mapped\",[7777]],[[7836,7837],\"valid\"],[[7838,7838],\"mapped\",[115,115]],[[7839,7839],\"valid\"],[[7840,7840],\"mapped\",[7841]],[[7841,7841],\"valid\"],[[7842,7842],\"mapped\",[7843]],[[7843,7843],\"valid\"],[[7844,7844],\"mapped\",[7845]],[[7845,7845],\"valid\"],[[7846,7846],\"mapped\",[7847]],[[7847,7847],\"valid\"],[[7848,7848],\"mapped\",[7849]],[[7849,7849],\"valid\"],[[7850,7850],\"mapped\",[7851]],[[7851,7851],\"valid\"],[[7852,7852],\"mapped\",[7853]],[[7853,7853],\"valid\"],[[7854,7854],\"mapped\",[7855]],[[7855,7855],\"valid\"],[[7856,7856],\"mapped\",[7857]],[[7857,7857],\"valid\"],[[7858,7858],\"mapped\",[7859]],[[7859,7859],\"valid\"],[[7860,7860],\"mapped\",[7861]],[[7861,7861],\"valid\"],[[7862,7862],\"mapped\",[7863]],[[7863,7863],\"valid\"],[[7864,7864],\"mapped\",[7865]],[[7865,7865],\"valid\"],[[7866,7866],\"mapped\",[7867]],[[7867,7867],\"valid\"],[[7868,7868],\"mapped\",[7869]],[[7869,7869],\"valid\"],[[7870,7870],\"mapped\",[7871]],[[7871,7871],\"valid\"],[[7872,7872],\"mapped\",[7873]],[[7873,7873],\"valid\"],[[7874,7874],\"mapped\",[7875]],[[7875,7875],\"valid\"],[[7876,7876],\"mapped\",[7877]],[[7877,7877],\"valid\"],[[7878,7878],\"mapped\",[7879]],[[7879,7879],\"valid\"],[[7880,7880],\"mapped\",[7881]],[[7881,7881],\"valid\"],[[7882,7882],\"mapped\",[7883]],[[7883,7883],\"valid\"],[[7884,7884],\"mapped\",[7885]],[[7885,7885],\"valid\"],[[7886,7886],\"mapped\",[7887]],[[7887,7887],\"valid\"],[[7888,7888],\"mapped\",[7889]],[[7889,7889],\"valid\"],[[7890,7890],\"mapped\",[7891]],[[7891,7891],\"valid\"],[[7892,7892],\"mapped\",[7893]],[[7893,7893],\"valid\"],[[7894,7894],\"mapped\",[7895]],[[7895,7895],\"valid\"],[[7896,7896],\"mapped\",[7897]],[[7897,7897],\"valid\"],[[7898,7898],\"mapped\",[7899]],[[7899,7899],\"valid\"],[[7900,7900],\"mapped\",[7901]],[[7901,7901],\"valid\"],[[7902,7902],\"mapped\",[7903]],[[7903,7903],\"valid\"],[[7904,7904],\"mapped\",[7905]],[[7905,7905],\"valid\"],[[7906,7906],\"mapped\",[7907]],[[7907,7907],\"valid\"],[[7908,7908],\"mapped\",[7909]],[[7909,7909],\"valid\"],[[7910,7910],\"mapped\",[7911]],[[7911,7911],\"valid\"],[[7912,7912],\"mapped\",[7913]],[[7913,7913],\"valid\"],[[7914,7914],\"mapped\",[7915]],[[7915,7915],\"valid\"],[[7916,7916],\"mapped\",[7917]],[[7917,7917],\"valid\"],[[7918,7918],\"mapped\",[7919]],[[7919,7919],\"valid\"],[[7920,7920],\"mapped\",[7921]],[[7921,7921],\"valid\"],[[7922,7922],\"mapped\",[7923]],[[7923,7923],\"valid\"],[[7924,7924],\"mapped\",[7925]],[[7925,7925],\"valid\"],[[7926,7926],\"mapped\",[7927]],[[7927,7927],\"valid\"],[[7928,7928],\"mapped\",[7929]],[[7929,7929],\"valid\"],[[7930,7930],\"mapped\",[7931]],[[7931,7931],\"valid\"],[[7932,7932],\"mapped\",[7933]],[[7933,7933],\"valid\"],[[7934,7934],\"mapped\",[7935]],[[7935,7935],\"valid\"],[[7936,7943],\"valid\"],[[7944,7944],\"mapped\",[7936]],[[7945,7945],\"mapped\",[7937]],[[7946,7946],\"mapped\",[7938]],[[7947,7947],\"mapped\",[7939]],[[7948,7948],\"mapped\",[7940]],[[7949,7949],\"mapped\",[7941]],[[7950,7950],\"mapped\",[7942]],[[7951,7951],\"mapped\",[7943]],[[7952,7957],\"valid\"],[[7958,7959],\"disallowed\"],[[7960,7960],\"mapped\",[7952]],[[7961,7961],\"mapped\",[7953]],[[7962,7962],\"mapped\",[7954]],[[7963,7963],\"mapped\",[7955]],[[7964,7964],\"mapped\",[7956]],[[7965,7965],\"mapped\",[7957]],[[7966,7967],\"disallowed\"],[[7968,7975],\"valid\"],[[7976,7976],\"mapped\",[7968]],[[7977,7977],\"mapped\",[7969]],[[7978,7978],\"mapped\",[7970]],[[7979,7979],\"mapped\",[7971]],[[7980,7980],\"mapped\",[7972]],[[7981,7981],\"mapped\",[7973]],[[7982,7982],\"mapped\",[7974]],[[7983,7983],\"mapped\",[7975]],[[7984,7991],\"valid\"],[[7992,7992],\"mapped\",[7984]],[[7993,7993],\"mapped\",[7985]],[[7994,7994],\"mapped\",[7986]],[[7995,7995],\"mapped\",[7987]],[[7996,7996],\"mapped\",[7988]],[[7997,7997],\"mapped\",[7989]],[[7998,7998],\"mapped\",[7990]],[[7999,7999],\"mapped\",[7991]],[[8000,8005],\"valid\"],[[8006,8007],\"disallowed\"],[[8008,8008],\"mapped\",[8000]],[[8009,8009],\"mapped\",[8001]],[[8010,8010],\"mapped\",[8002]],[[8011,8011],\"mapped\",[8003]],[[8012,8012],\"mapped\",[8004]],[[8013,8013],\"mapped\",[8005]],[[8014,8015],\"disallowed\"],[[8016,8023],\"valid\"],[[8024,8024],\"disallowed\"],[[8025,8025],\"mapped\",[8017]],[[8026,8026],\"disallowed\"],[[8027,8027],\"mapped\",[8019]],[[8028,8028],\"disallowed\"],[[8029,8029],\"mapped\",[8021]],[[8030,8030],\"disallowed\"],[[8031,8031],\"mapped\",[8023]],[[8032,8039],\"valid\"],[[8040,8040],\"mapped\",[8032]],[[8041,8041],\"mapped\",[8033]],[[8042,8042],\"mapped\",[8034]],[[8043,8043],\"mapped\",[8035]],[[8044,8044],\"mapped\",[8036]],[[8045,8045],\"mapped\",[8037]],[[8046,8046],\"mapped\",[8038]],[[8047,8047],\"mapped\",[8039]],[[8048,8048],\"valid\"],[[8049,8049],\"mapped\",[940]],[[8050,8050],\"valid\"],[[8051,8051],\"mapped\",[941]],[[8052,8052],\"valid\"],[[8053,8053],\"mapped\",[942]],[[8054,8054],\"valid\"],[[8055,8055],\"mapped\",[943]],[[8056,8056],\"valid\"],[[8057,8057],\"mapped\",[972]],[[8058,8058],\"valid\"],[[8059,8059],\"mapped\",[973]],[[8060,8060],\"valid\"],[[8061,8061],\"mapped\",[974]],[[8062,8063],\"disallowed\"],[[8064,8064],\"mapped\",[7936,953]],[[8065,8065],\"mapped\",[7937,953]],[[8066,8066],\"mapped\",[7938,953]],[[8067,8067],\"mapped\",[7939,953]],[[8068,8068],\"mapped\",[7940,953]],[[8069,8069],\"mapped\",[7941,953]],[[8070,8070],\"mapped\",[7942,953]],[[8071,8071],\"mapped\",[7943,953]],[[8072,8072],\"mapped\",[7936,953]],[[8073,8073],\"mapped\",[7937,953]],[[8074,8074],\"mapped\",[7938,953]],[[8075,8075],\"mapped\",[7939,953]],[[8076,8076],\"mapped\",[7940,953]],[[8077,8077],\"mapped\",[7941,953]],[[8078,8078],\"mapped\",[7942,953]],[[8079,8079],\"mapped\",[7943,953]],[[8080,8080],\"mapped\",[7968,953]],[[8081,8081],\"mapped\",[7969,953]],[[8082,8082],\"mapped\",[7970,953]],[[8083,8083],\"mapped\",[7971,953]],[[8084,8084],\"mapped\",[7972,953]],[[8085,8085],\"mapped\",[7973,953]],[[8086,8086],\"mapped\",[7974,953]],[[8087,8087],\"mapped\",[7975,953]],[[8088,8088],\"mapped\",[7968,953]],[[8089,8089],\"mapped\",[7969,953]],[[8090,8090],\"mapped\",[7970,953]],[[8091,8091],\"mapped\",[7971,953]],[[8092,8092],\"mapped\",[7972,953]],[[8093,8093],\"mapped\",[7973,953]],[[8094,8094],\"mapped\",[7974,953]],[[8095,8095],\"mapped\",[7975,953]],[[8096,8096],\"mapped\",[8032,953]],[[8097,8097],\"mapped\",[8033,953]],[[8098,8098],\"mapped\",[8034,953]],[[8099,8099],\"mapped\",[8035,953]],[[8100,8100],\"mapped\",[8036,953]],[[8101,8101],\"mapped\",[8037,953]],[[8102,8102],\"mapped\",[8038,953]],[[8103,8103],\"mapped\",[8039,953]],[[8104,8104],\"mapped\",[8032,953]],[[8105,8105],\"mapped\",[8033,953]],[[8106,8106],\"mapped\",[8034,953]],[[8107,8107],\"mapped\",[8035,953]],[[8108,8108],\"mapped\",[8036,953]],[[8109,8109],\"mapped\",[8037,953]],[[8110,8110],\"mapped\",[8038,953]],[[8111,8111],\"mapped\",[8039,953]],[[8112,8113],\"valid\"],[[8114,8114],\"mapped\",[8048,953]],[[8115,8115],\"mapped\",[945,953]],[[8116,8116],\"mapped\",[940,953]],[[8117,8117],\"disallowed\"],[[8118,8118],\"valid\"],[[8119,8119],\"mapped\",[8118,953]],[[8120,8120],\"mapped\",[8112]],[[8121,8121],\"mapped\",[8113]],[[8122,8122],\"mapped\",[8048]],[[8123,8123],\"mapped\",[940]],[[8124,8124],\"mapped\",[945,953]],[[8125,8125],\"disallowed_STD3_mapped\",[32,787]],[[8126,8126],\"mapped\",[953]],[[8127,8127],\"disallowed_STD3_mapped\",[32,787]],[[8128,8128],\"disallowed_STD3_mapped\",[32,834]],[[8129,8129],\"disallowed_STD3_mapped\",[32,776,834]],[[8130,8130],\"mapped\",[8052,953]],[[8131,8131],\"mapped\",[951,953]],[[8132,8132],\"mapped\",[942,953]],[[8133,8133],\"disallowed\"],[[8134,8134],\"valid\"],[[8135,8135],\"mapped\",[8134,953]],[[8136,8136],\"mapped\",[8050]],[[8137,8137],\"mapped\",[941]],[[8138,8138],\"mapped\",[8052]],[[8139,8139],\"mapped\",[942]],[[8140,8140],\"mapped\",[951,953]],[[8141,8141],\"disallowed_STD3_mapped\",[32,787,768]],[[8142,8142],\"disallowed_STD3_mapped\",[32,787,769]],[[8143,8143],\"disallowed_STD3_mapped\",[32,787,834]],[[8144,8146],\"valid\"],[[8147,8147],\"mapped\",[912]],[[8148,8149],\"disallowed\"],[[8150,8151],\"valid\"],[[8152,8152],\"mapped\",[8144]],[[8153,8153],\"mapped\",[8145]],[[8154,8154],\"mapped\",[8054]],[[8155,8155],\"mapped\",[943]],[[8156,8156],\"disallowed\"],[[8157,8157],\"disallowed_STD3_mapped\",[32,788,768]],[[8158,8158],\"disallowed_STD3_mapped\",[32,788,769]],[[8159,8159],\"disallowed_STD3_mapped\",[32,788,834]],[[8160,8162],\"valid\"],[[8163,8163],\"mapped\",[944]],[[8164,8167],\"valid\"],[[8168,8168],\"mapped\",[8160]],[[8169,8169],\"mapped\",[8161]],[[8170,8170],\"mapped\",[8058]],[[8171,8171],\"mapped\",[973]],[[8172,8172],\"mapped\",[8165]],[[8173,8173],\"disallowed_STD3_mapped\",[32,776,768]],[[8174,8174],\"disallowed_STD3_mapped\",[32,776,769]],[[8175,8175],\"disallowed_STD3_mapped\",[96]],[[8176,8177],\"disallowed\"],[[8178,8178],\"mapped\",[8060,953]],[[8179,8179],\"mapped\",[969,953]],[[8180,8180],\"mapped\",[974,953]],[[8181,8181],\"disallowed\"],[[8182,8182],\"valid\"],[[8183,8183],\"mapped\",[8182,953]],[[8184,8184],\"mapped\",[8056]],[[8185,8185],\"mapped\",[972]],[[8186,8186],\"mapped\",[8060]],[[8187,8187],\"mapped\",[974]],[[8188,8188],\"mapped\",[969,953]],[[8189,8189],\"disallowed_STD3_mapped\",[32,769]],[[8190,8190],\"disallowed_STD3_mapped\",[32,788]],[[8191,8191],\"disallowed\"],[[8192,8202],\"disallowed_STD3_mapped\",[32]],[[8203,8203],\"ignored\"],[[8204,8205],\"deviation\",[]],[[8206,8207],\"disallowed\"],[[8208,8208],\"valid\",[],\"NV8\"],[[8209,8209],\"mapped\",[8208]],[[8210,8214],\"valid\",[],\"NV8\"],[[8215,8215],\"disallowed_STD3_mapped\",[32,819]],[[8216,8227],\"valid\",[],\"NV8\"],[[8228,8230],\"disallowed\"],[[8231,8231],\"valid\",[],\"NV8\"],[[8232,8238],\"disallowed\"],[[8239,8239],\"disallowed_STD3_mapped\",[32]],[[8240,8242],\"valid\",[],\"NV8\"],[[8243,8243],\"mapped\",[8242,8242]],[[8244,8244],\"mapped\",[8242,8242,8242]],[[8245,8245],\"valid\",[],\"NV8\"],[[8246,8246],\"mapped\",[8245,8245]],[[8247,8247],\"mapped\",[8245,8245,8245]],[[8248,8251],\"valid\",[],\"NV8\"],[[8252,8252],\"disallowed_STD3_mapped\",[33,33]],[[8253,8253],\"valid\",[],\"NV8\"],[[8254,8254],\"disallowed_STD3_mapped\",[32,773]],[[8255,8262],\"valid\",[],\"NV8\"],[[8263,8263],\"disallowed_STD3_mapped\",[63,63]],[[8264,8264],\"disallowed_STD3_mapped\",[63,33]],[[8265,8265],\"disallowed_STD3_mapped\",[33,63]],[[8266,8269],\"valid\",[],\"NV8\"],[[8270,8274],\"valid\",[],\"NV8\"],[[8275,8276],\"valid\",[],\"NV8\"],[[8277,8278],\"valid\",[],\"NV8\"],[[8279,8279],\"mapped\",[8242,8242,8242,8242]],[[8280,8286],\"valid\",[],\"NV8\"],[[8287,8287],\"disallowed_STD3_mapped\",[32]],[[8288,8288],\"ignored\"],[[8289,8291],\"disallowed\"],[[8292,8292],\"ignored\"],[[8293,8293],\"disallowed\"],[[8294,8297],\"disallowed\"],[[8298,8303],\"disallowed\"],[[8304,8304],\"mapped\",[48]],[[8305,8305],\"mapped\",[105]],[[8306,8307],\"disallowed\"],[[8308,8308],\"mapped\",[52]],[[8309,8309],\"mapped\",[53]],[[8310,8310],\"mapped\",[54]],[[8311,8311],\"mapped\",[55]],[[8312,8312],\"mapped\",[56]],[[8313,8313],\"mapped\",[57]],[[8314,8314],\"disallowed_STD3_mapped\",[43]],[[8315,8315],\"mapped\",[8722]],[[8316,8316],\"disallowed_STD3_mapped\",[61]],[[8317,8317],\"disallowed_STD3_mapped\",[40]],[[8318,8318],\"disallowed_STD3_mapped\",[41]],[[8319,8319],\"mapped\",[110]],[[8320,8320],\"mapped\",[48]],[[8321,8321],\"mapped\",[49]],[[8322,8322],\"mapped\",[50]],[[8323,8323],\"mapped\",[51]],[[8324,8324],\"mapped\",[52]],[[8325,8325],\"mapped\",[53]],[[8326,8326],\"mapped\",[54]],[[8327,8327],\"mapped\",[55]],[[8328,8328],\"mapped\",[56]],[[8329,8329],\"mapped\",[57]],[[8330,8330],\"disallowed_STD3_mapped\",[43]],[[8331,8331],\"mapped\",[8722]],[[8332,8332],\"disallowed_STD3_mapped\",[61]],[[8333,8333],\"disallowed_STD3_mapped\",[40]],[[8334,8334],\"disallowed_STD3_mapped\",[41]],[[8335,8335],\"disallowed\"],[[8336,8336],\"mapped\",[97]],[[8337,8337],\"mapped\",[101]],[[8338,8338],\"mapped\",[111]],[[8339,8339],\"mapped\",[120]],[[8340,8340],\"mapped\",[601]],[[8341,8341],\"mapped\",[104]],[[8342,8342],\"mapped\",[107]],[[8343,8343],\"mapped\",[108]],[[8344,8344],\"mapped\",[109]],[[8345,8345],\"mapped\",[110]],[[8346,8346],\"mapped\",[112]],[[8347,8347],\"mapped\",[115]],[[8348,8348],\"mapped\",[116]],[[8349,8351],\"disallowed\"],[[8352,8359],\"valid\",[],\"NV8\"],[[8360,8360],\"mapped\",[114,115]],[[8361,8362],\"valid\",[],\"NV8\"],[[8363,8363],\"valid\",[],\"NV8\"],[[8364,8364],\"valid\",[],\"NV8\"],[[8365,8367],\"valid\",[],\"NV8\"],[[8368,8369],\"valid\",[],\"NV8\"],[[8370,8373],\"valid\",[],\"NV8\"],[[8374,8376],\"valid\",[],\"NV8\"],[[8377,8377],\"valid\",[],\"NV8\"],[[8378,8378],\"valid\",[],\"NV8\"],[[8379,8381],\"valid\",[],\"NV8\"],[[8382,8382],\"valid\",[],\"NV8\"],[[8383,8399],\"disallowed\"],[[8400,8417],\"valid\",[],\"NV8\"],[[8418,8419],\"valid\",[],\"NV8\"],[[8420,8426],\"valid\",[],\"NV8\"],[[8427,8427],\"valid\",[],\"NV8\"],[[8428,8431],\"valid\",[],\"NV8\"],[[8432,8432],\"valid\",[],\"NV8\"],[[8433,8447],\"disallowed\"],[[8448,8448],\"disallowed_STD3_mapped\",[97,47,99]],[[8449,8449],\"disallowed_STD3_mapped\",[97,47,115]],[[8450,8450],\"mapped\",[99]],[[8451,8451],\"mapped\",[176,99]],[[8452,8452],\"valid\",[],\"NV8\"],[[8453,8453],\"disallowed_STD3_mapped\",[99,47,111]],[[8454,8454],\"disallowed_STD3_mapped\",[99,47,117]],[[8455,8455],\"mapped\",[603]],[[8456,8456],\"valid\",[],\"NV8\"],[[8457,8457],\"mapped\",[176,102]],[[8458,8458],\"mapped\",[103]],[[8459,8462],\"mapped\",[104]],[[8463,8463],\"mapped\",[295]],[[8464,8465],\"mapped\",[105]],[[8466,8467],\"mapped\",[108]],[[8468,8468],\"valid\",[],\"NV8\"],[[8469,8469],\"mapped\",[110]],[[8470,8470],\"mapped\",[110,111]],[[8471,8472],\"valid\",[],\"NV8\"],[[8473,8473],\"mapped\",[112]],[[8474,8474],\"mapped\",[113]],[[8475,8477],\"mapped\",[114]],[[8478,8479],\"valid\",[],\"NV8\"],[[8480,8480],\"mapped\",[115,109]],[[8481,8481],\"mapped\",[116,101,108]],[[8482,8482],\"mapped\",[116,109]],[[8483,8483],\"valid\",[],\"NV8\"],[[8484,8484],\"mapped\",[122]],[[8485,8485],\"valid\",[],\"NV8\"],[[8486,8486],\"mapped\",[969]],[[8487,8487],\"valid\",[],\"NV8\"],[[8488,8488],\"mapped\",[122]],[[8489,8489],\"valid\",[],\"NV8\"],[[8490,8490],\"mapped\",[107]],[[8491,8491],\"mapped\",[229]],[[8492,8492],\"mapped\",[98]],[[8493,8493],\"mapped\",[99]],[[8494,8494],\"valid\",[],\"NV8\"],[[8495,8496],\"mapped\",[101]],[[8497,8497],\"mapped\",[102]],[[8498,8498],\"disallowed\"],[[8499,8499],\"mapped\",[109]],[[8500,8500],\"mapped\",[111]],[[8501,8501],\"mapped\",[1488]],[[8502,8502],\"mapped\",[1489]],[[8503,8503],\"mapped\",[1490]],[[8504,8504],\"mapped\",[1491]],[[8505,8505],\"mapped\",[105]],[[8506,8506],\"valid\",[],\"NV8\"],[[8507,8507],\"mapped\",[102,97,120]],[[8508,8508],\"mapped\",[960]],[[8509,8510],\"mapped\",[947]],[[8511,8511],\"mapped\",[960]],[[8512,8512],\"mapped\",[8721]],[[8513,8516],\"valid\",[],\"NV8\"],[[8517,8518],\"mapped\",[100]],[[8519,8519],\"mapped\",[101]],[[8520,8520],\"mapped\",[105]],[[8521,8521],\"mapped\",[106]],[[8522,8523],\"valid\",[],\"NV8\"],[[8524,8524],\"valid\",[],\"NV8\"],[[8525,8525],\"valid\",[],\"NV8\"],[[8526,8526],\"valid\"],[[8527,8527],\"valid\",[],\"NV8\"],[[8528,8528],\"mapped\",[49,8260,55]],[[8529,8529],\"mapped\",[49,8260,57]],[[8530,8530],\"mapped\",[49,8260,49,48]],[[8531,8531],\"mapped\",[49,8260,51]],[[8532,8532],\"mapped\",[50,8260,51]],[[8533,8533],\"mapped\",[49,8260,53]],[[8534,8534],\"mapped\",[50,8260,53]],[[8535,8535],\"mapped\",[51,8260,53]],[[8536,8536],\"mapped\",[52,8260,53]],[[8537,8537],\"mapped\",[49,8260,54]],[[8538,8538],\"mapped\",[53,8260,54]],[[8539,8539],\"mapped\",[49,8260,56]],[[8540,8540],\"mapped\",[51,8260,56]],[[8541,8541],\"mapped\",[53,8260,56]],[[8542,8542],\"mapped\",[55,8260,56]],[[8543,8543],\"mapped\",[49,8260]],[[8544,8544],\"mapped\",[105]],[[8545,8545],\"mapped\",[105,105]],[[8546,8546],\"mapped\",[105,105,105]],[[8547,8547],\"mapped\",[105,118]],[[8548,8548],\"mapped\",[118]],[[8549,8549],\"mapped\",[118,105]],[[8550,8550],\"mapped\",[118,105,105]],[[8551,8551],\"mapped\",[118,105,105,105]],[[8552,8552],\"mapped\",[105,120]],[[8553,8553],\"mapped\",[120]],[[8554,8554],\"mapped\",[120,105]],[[8555,8555],\"mapped\",[120,105,105]],[[8556,8556],\"mapped\",[108]],[[8557,8557],\"mapped\",[99]],[[8558,8558],\"mapped\",[100]],[[8559,8559],\"mapped\",[109]],[[8560,8560],\"mapped\",[105]],[[8561,8561],\"mapped\",[105,105]],[[8562,8562],\"mapped\",[105,105,105]],[[8563,8563],\"mapped\",[105,118]],[[8564,8564],\"mapped\",[118]],[[8565,8565],\"mapped\",[118,105]],[[8566,8566],\"mapped\",[118,105,105]],[[8567,8567],\"mapped\",[118,105,105,105]],[[8568,8568],\"mapped\",[105,120]],[[8569,8569],\"mapped\",[120]],[[8570,8570],\"mapped\",[120,105]],[[8571,8571],\"mapped\",[120,105,105]],[[8572,8572],\"mapped\",[108]],[[8573,8573],\"mapped\",[99]],[[8574,8574],\"mapped\",[100]],[[8575,8575],\"mapped\",[109]],[[8576,8578],\"valid\",[],\"NV8\"],[[8579,8579],\"disallowed\"],[[8580,8580],\"valid\"],[[8581,8584],\"valid\",[],\"NV8\"],[[8585,8585],\"mapped\",[48,8260,51]],[[8586,8587],\"valid\",[],\"NV8\"],[[8588,8591],\"disallowed\"],[[8592,8682],\"valid\",[],\"NV8\"],[[8683,8691],\"valid\",[],\"NV8\"],[[8692,8703],\"valid\",[],\"NV8\"],[[8704,8747],\"valid\",[],\"NV8\"],[[8748,8748],\"mapped\",[8747,8747]],[[8749,8749],\"mapped\",[8747,8747,8747]],[[8750,8750],\"valid\",[],\"NV8\"],[[8751,8751],\"mapped\",[8750,8750]],[[8752,8752],\"mapped\",[8750,8750,8750]],[[8753,8799],\"valid\",[],\"NV8\"],[[8800,8800],\"disallowed_STD3_valid\"],[[8801,8813],\"valid\",[],\"NV8\"],[[8814,8815],\"disallowed_STD3_valid\"],[[8816,8945],\"valid\",[],\"NV8\"],[[8946,8959],\"valid\",[],\"NV8\"],[[8960,8960],\"valid\",[],\"NV8\"],[[8961,8961],\"valid\",[],\"NV8\"],[[8962,9000],\"valid\",[],\"NV8\"],[[9001,9001],\"mapped\",[12296]],[[9002,9002],\"mapped\",[12297]],[[9003,9082],\"valid\",[],\"NV8\"],[[9083,9083],\"valid\",[],\"NV8\"],[[9084,9084],\"valid\",[],\"NV8\"],[[9085,9114],\"valid\",[],\"NV8\"],[[9115,9166],\"valid\",[],\"NV8\"],[[9167,9168],\"valid\",[],\"NV8\"],[[9169,9179],\"valid\",[],\"NV8\"],[[9180,9191],\"valid\",[],\"NV8\"],[[9192,9192],\"valid\",[],\"NV8\"],[[9193,9203],\"valid\",[],\"NV8\"],[[9204,9210],\"valid\",[],\"NV8\"],[[9211,9215],\"disallowed\"],[[9216,9252],\"valid\",[],\"NV8\"],[[9253,9254],\"valid\",[],\"NV8\"],[[9255,9279],\"disallowed\"],[[9280,9290],\"valid\",[],\"NV8\"],[[9291,9311],\"disallowed\"],[[9312,9312],\"mapped\",[49]],[[9313,9313],\"mapped\",[50]],[[9314,9314],\"mapped\",[51]],[[9315,9315],\"mapped\",[52]],[[9316,9316],\"mapped\",[53]],[[9317,9317],\"mapped\",[54]],[[9318,9318],\"mapped\",[55]],[[9319,9319],\"mapped\",[56]],[[9320,9320],\"mapped\",[57]],[[9321,9321],\"mapped\",[49,48]],[[9322,9322],\"mapped\",[49,49]],[[9323,9323],\"mapped\",[49,50]],[[9324,9324],\"mapped\",[49,51]],[[9325,9325],\"mapped\",[49,52]],[[9326,9326],\"mapped\",[49,53]],[[9327,9327],\"mapped\",[49,54]],[[9328,9328],\"mapped\",[49,55]],[[9329,9329],\"mapped\",[49,56]],[[9330,9330],\"mapped\",[49,57]],[[9331,9331],\"mapped\",[50,48]],[[9332,9332],\"disallowed_STD3_mapped\",[40,49,41]],[[9333,9333],\"disallowed_STD3_mapped\",[40,50,41]],[[9334,9334],\"disallowed_STD3_mapped\",[40,51,41]],[[9335,9335],\"disallowed_STD3_mapped\",[40,52,41]],[[9336,9336],\"disallowed_STD3_mapped\",[40,53,41]],[[9337,9337],\"disallowed_STD3_mapped\",[40,54,41]],[[9338,9338],\"disallowed_STD3_mapped\",[40,55,41]],[[9339,9339],\"disallowed_STD3_mapped\",[40,56,41]],[[9340,9340],\"disallowed_STD3_mapped\",[40,57,41]],[[9341,9341],\"disallowed_STD3_mapped\",[40,49,48,41]],[[9342,9342],\"disallowed_STD3_mapped\",[40,49,49,41]],[[9343,9343],\"disallowed_STD3_mapped\",[40,49,50,41]],[[9344,9344],\"disallowed_STD3_mapped\",[40,49,51,41]],[[9345,9345],\"disallowed_STD3_mapped\",[40,49,52,41]],[[9346,9346],\"disallowed_STD3_mapped\",[40,49,53,41]],[[9347,9347],\"disallowed_STD3_mapped\",[40,49,54,41]],[[9348,9348],\"disallowed_STD3_mapped\",[40,49,55,41]],[[9349,9349],\"disallowed_STD3_mapped\",[40,49,56,41]],[[9350,9350],\"disallowed_STD3_mapped\",[40,49,57,41]],[[9351,9351],\"disallowed_STD3_mapped\",[40,50,48,41]],[[9352,9371],\"disallowed\"],[[9372,9372],\"disallowed_STD3_mapped\",[40,97,41]],[[9373,9373],\"disallowed_STD3_mapped\",[40,98,41]],[[9374,9374],\"disallowed_STD3_mapped\",[40,99,41]],[[9375,9375],\"disallowed_STD3_mapped\",[40,100,41]],[[9376,9376],\"disallowed_STD3_mapped\",[40,101,41]],[[9377,9377],\"disallowed_STD3_mapped\",[40,102,41]],[[9378,9378],\"disallowed_STD3_mapped\",[40,103,41]],[[9379,9379],\"disallowed_STD3_mapped\",[40,104,41]],[[9380,9380],\"disallowed_STD3_mapped\",[40,105,41]],[[9381,9381],\"disallowed_STD3_mapped\",[40,106,41]],[[9382,9382],\"disallowed_STD3_mapped\",[40,107,41]],[[9383,9383],\"disallowed_STD3_mapped\",[40,108,41]],[[9384,9384],\"disallowed_STD3_mapped\",[40,109,41]],[[9385,9385],\"disallowed_STD3_mapped\",[40,110,41]],[[9386,9386],\"disallowed_STD3_mapped\",[40,111,41]],[[9387,9387],\"disallowed_STD3_mapped\",[40,112,41]],[[9388,9388],\"disallowed_STD3_mapped\",[40,113,41]],[[9389,9389],\"disallowed_STD3_mapped\",[40,114,41]],[[9390,9390],\"disallowed_STD3_mapped\",[40,115,41]],[[9391,9391],\"disallowed_STD3_mapped\",[40,116,41]],[[9392,9392],\"disallowed_STD3_mapped\",[40,117,41]],[[9393,9393],\"disallowed_STD3_mapped\",[40,118,41]],[[9394,9394],\"disallowed_STD3_mapped\",[40,119,41]],[[9395,9395],\"disallowed_STD3_mapped\",[40,120,41]],[[9396,9396],\"disallowed_STD3_mapped\",[40,121,41]],[[9397,9397],\"disallowed_STD3_mapped\",[40,122,41]],[[9398,9398],\"mapped\",[97]],[[9399,9399],\"mapped\",[98]],[[9400,9400],\"mapped\",[99]],[[9401,9401],\"mapped\",[100]],[[9402,9402],\"mapped\",[101]],[[9403,9403],\"mapped\",[102]],[[9404,9404],\"mapped\",[103]],[[9405,9405],\"mapped\",[104]],[[9406,9406],\"mapped\",[105]],[[9407,9407],\"mapped\",[106]],[[9408,9408],\"mapped\",[107]],[[9409,9409],\"mapped\",[108]],[[9410,9410],\"mapped\",[109]],[[9411,9411],\"mapped\",[110]],[[9412,9412],\"mapped\",[111]],[[9413,9413],\"mapped\",[112]],[[9414,9414],\"mapped\",[113]],[[9415,9415],\"mapped\",[114]],[[9416,9416],\"mapped\",[115]],[[9417,9417],\"mapped\",[116]],[[9418,9418],\"mapped\",[117]],[[9419,9419],\"mapped\",[118]],[[9420,9420],\"mapped\",[119]],[[9421,9421],\"mapped\",[120]],[[9422,9422],\"mapped\",[121]],[[9423,9423],\"mapped\",[122]],[[9424,9424],\"mapped\",[97]],[[9425,9425],\"mapped\",[98]],[[9426,9426],\"mapped\",[99]],[[9427,9427],\"mapped\",[100]],[[9428,9428],\"mapped\",[101]],[[9429,9429],\"mapped\",[102]],[[9430,9430],\"mapped\",[103]],[[9431,9431],\"mapped\",[104]],[[9432,9432],\"mapped\",[105]],[[9433,9433],\"mapped\",[106]],[[9434,9434],\"mapped\",[107]],[[9435,9435],\"mapped\",[108]],[[9436,9436],\"mapped\",[109]],[[9437,9437],\"mapped\",[110]],[[9438,9438],\"mapped\",[111]],[[9439,9439],\"mapped\",[112]],[[9440,9440],\"mapped\",[113]],[[9441,9441],\"mapped\",[114]],[[9442,9442],\"mapped\",[115]],[[9443,9443],\"mapped\",[116]],[[9444,9444],\"mapped\",[117]],[[9445,9445],\"mapped\",[118]],[[9446,9446],\"mapped\",[119]],[[9447,9447],\"mapped\",[120]],[[9448,9448],\"mapped\",[121]],[[9449,9449],\"mapped\",[122]],[[9450,9450],\"mapped\",[48]],[[9451,9470],\"valid\",[],\"NV8\"],[[9471,9471],\"valid\",[],\"NV8\"],[[9472,9621],\"valid\",[],\"NV8\"],[[9622,9631],\"valid\",[],\"NV8\"],[[9632,9711],\"valid\",[],\"NV8\"],[[9712,9719],\"valid\",[],\"NV8\"],[[9720,9727],\"valid\",[],\"NV8\"],[[9728,9747],\"valid\",[],\"NV8\"],[[9748,9749],\"valid\",[],\"NV8\"],[[9750,9751],\"valid\",[],\"NV8\"],[[9752,9752],\"valid\",[],\"NV8\"],[[9753,9753],\"valid\",[],\"NV8\"],[[9754,9839],\"valid\",[],\"NV8\"],[[9840,9841],\"valid\",[],\"NV8\"],[[9842,9853],\"valid\",[],\"NV8\"],[[9854,9855],\"valid\",[],\"NV8\"],[[9856,9865],\"valid\",[],\"NV8\"],[[9866,9873],\"valid\",[],\"NV8\"],[[9874,9884],\"valid\",[],\"NV8\"],[[9885,9885],\"valid\",[],\"NV8\"],[[9886,9887],\"valid\",[],\"NV8\"],[[9888,9889],\"valid\",[],\"NV8\"],[[9890,9905],\"valid\",[],\"NV8\"],[[9906,9906],\"valid\",[],\"NV8\"],[[9907,9916],\"valid\",[],\"NV8\"],[[9917,9919],\"valid\",[],\"NV8\"],[[9920,9923],\"valid\",[],\"NV8\"],[[9924,9933],\"valid\",[],\"NV8\"],[[9934,9934],\"valid\",[],\"NV8\"],[[9935,9953],\"valid\",[],\"NV8\"],[[9954,9954],\"valid\",[],\"NV8\"],[[9955,9955],\"valid\",[],\"NV8\"],[[9956,9959],\"valid\",[],\"NV8\"],[[9960,9983],\"valid\",[],\"NV8\"],[[9984,9984],\"valid\",[],\"NV8\"],[[9985,9988],\"valid\",[],\"NV8\"],[[9989,9989],\"valid\",[],\"NV8\"],[[9990,9993],\"valid\",[],\"NV8\"],[[9994,9995],\"valid\",[],\"NV8\"],[[9996,10023],\"valid\",[],\"NV8\"],[[10024,10024],\"valid\",[],\"NV8\"],[[10025,10059],\"valid\",[],\"NV8\"],[[10060,10060],\"valid\",[],\"NV8\"],[[10061,10061],\"valid\",[],\"NV8\"],[[10062,10062],\"valid\",[],\"NV8\"],[[10063,10066],\"valid\",[],\"NV8\"],[[10067,10069],\"valid\",[],\"NV8\"],[[10070,10070],\"valid\",[],\"NV8\"],[[10071,10071],\"valid\",[],\"NV8\"],[[10072,10078],\"valid\",[],\"NV8\"],[[10079,10080],\"valid\",[],\"NV8\"],[[10081,10087],\"valid\",[],\"NV8\"],[[10088,10101],\"valid\",[],\"NV8\"],[[10102,10132],\"valid\",[],\"NV8\"],[[10133,10135],\"valid\",[],\"NV8\"],[[10136,10159],\"valid\",[],\"NV8\"],[[10160,10160],\"valid\",[],\"NV8\"],[[10161,10174],\"valid\",[],\"NV8\"],[[10175,10175],\"valid\",[],\"NV8\"],[[10176,10182],\"valid\",[],\"NV8\"],[[10183,10186],\"valid\",[],\"NV8\"],[[10187,10187],\"valid\",[],\"NV8\"],[[10188,10188],\"valid\",[],\"NV8\"],[[10189,10189],\"valid\",[],\"NV8\"],[[10190,10191],\"valid\",[],\"NV8\"],[[10192,10219],\"valid\",[],\"NV8\"],[[10220,10223],\"valid\",[],\"NV8\"],[[10224,10239],\"valid\",[],\"NV8\"],[[10240,10495],\"valid\",[],\"NV8\"],[[10496,10763],\"valid\",[],\"NV8\"],[[10764,10764],\"mapped\",[8747,8747,8747,8747]],[[10765,10867],\"valid\",[],\"NV8\"],[[10868,10868],\"disallowed_STD3_mapped\",[58,58,61]],[[10869,10869],\"disallowed_STD3_mapped\",[61,61]],[[10870,10870],\"disallowed_STD3_mapped\",[61,61,61]],[[10871,10971],\"valid\",[],\"NV8\"],[[10972,10972],\"mapped\",[10973,824]],[[10973,11007],\"valid\",[],\"NV8\"],[[11008,11021],\"valid\",[],\"NV8\"],[[11022,11027],\"valid\",[],\"NV8\"],[[11028,11034],\"valid\",[],\"NV8\"],[[11035,11039],\"valid\",[],\"NV8\"],[[11040,11043],\"valid\",[],\"NV8\"],[[11044,11084],\"valid\",[],\"NV8\"],[[11085,11087],\"valid\",[],\"NV8\"],[[11088,11092],\"valid\",[],\"NV8\"],[[11093,11097],\"valid\",[],\"NV8\"],[[11098,11123],\"valid\",[],\"NV8\"],[[11124,11125],\"disallowed\"],[[11126,11157],\"valid\",[],\"NV8\"],[[11158,11159],\"disallowed\"],[[11160,11193],\"valid\",[],\"NV8\"],[[11194,11196],\"disallowed\"],[[11197,11208],\"valid\",[],\"NV8\"],[[11209,11209],\"disallowed\"],[[11210,11217],\"valid\",[],\"NV8\"],[[11218,11243],\"disallowed\"],[[11244,11247],\"valid\",[],\"NV8\"],[[11248,11263],\"disallowed\"],[[11264,11264],\"mapped\",[11312]],[[11265,11265],\"mapped\",[11313]],[[11266,11266],\"mapped\",[11314]],[[11267,11267],\"mapped\",[11315]],[[11268,11268],\"mapped\",[11316]],[[11269,11269],\"mapped\",[11317]],[[11270,11270],\"mapped\",[11318]],[[11271,11271],\"mapped\",[11319]],[[11272,11272],\"mapped\",[11320]],[[11273,11273],\"mapped\",[11321]],[[11274,11274],\"mapped\",[11322]],[[11275,11275],\"mapped\",[11323]],[[11276,11276],\"mapped\",[11324]],[[11277,11277],\"mapped\",[11325]],[[11278,11278],\"mapped\",[11326]],[[11279,11279],\"mapped\",[11327]],[[11280,11280],\"mapped\",[11328]],[[11281,11281],\"mapped\",[11329]],[[11282,11282],\"mapped\",[11330]],[[11283,11283],\"mapped\",[11331]],[[11284,11284],\"mapped\",[11332]],[[11285,11285],\"mapped\",[11333]],[[11286,11286],\"mapped\",[11334]],[[11287,11287],\"mapped\",[11335]],[[11288,11288],\"mapped\",[11336]],[[11289,11289],\"mapped\",[11337]],[[11290,11290],\"mapped\",[11338]],[[11291,11291],\"mapped\",[11339]],[[11292,11292],\"mapped\",[11340]],[[11293,11293],\"mapped\",[11341]],[[11294,11294],\"mapped\",[11342]],[[11295,11295],\"mapped\",[11343]],[[11296,11296],\"mapped\",[11344]],[[11297,11297],\"mapped\",[11345]],[[11298,11298],\"mapped\",[11346]],[[11299,11299],\"mapped\",[11347]],[[11300,11300],\"mapped\",[11348]],[[11301,11301],\"mapped\",[11349]],[[11302,11302],\"mapped\",[11350]],[[11303,11303],\"mapped\",[11351]],[[11304,11304],\"mapped\",[11352]],[[11305,11305],\"mapped\",[11353]],[[11306,11306],\"mapped\",[11354]],[[11307,11307],\"mapped\",[11355]],[[11308,11308],\"mapped\",[11356]],[[11309,11309],\"mapped\",[11357]],[[11310,11310],\"mapped\",[11358]],[[11311,11311],\"disallowed\"],[[11312,11358],\"valid\"],[[11359,11359],\"disallowed\"],[[11360,11360],\"mapped\",[11361]],[[11361,11361],\"valid\"],[[11362,11362],\"mapped\",[619]],[[11363,11363],\"mapped\",[7549]],[[11364,11364],\"mapped\",[637]],[[11365,11366],\"valid\"],[[11367,11367],\"mapped\",[11368]],[[11368,11368],\"valid\"],[[11369,11369],\"mapped\",[11370]],[[11370,11370],\"valid\"],[[11371,11371],\"mapped\",[11372]],[[11372,11372],\"valid\"],[[11373,11373],\"mapped\",[593]],[[11374,11374],\"mapped\",[625]],[[11375,11375],\"mapped\",[592]],[[11376,11376],\"mapped\",[594]],[[11377,11377],\"valid\"],[[11378,11378],\"mapped\",[11379]],[[11379,11379],\"valid\"],[[11380,11380],\"valid\"],[[11381,11381],\"mapped\",[11382]],[[11382,11383],\"valid\"],[[11384,11387],\"valid\"],[[11388,11388],\"mapped\",[106]],[[11389,11389],\"mapped\",[118]],[[11390,11390],\"mapped\",[575]],[[11391,11391],\"mapped\",[576]],[[11392,11392],\"mapped\",[11393]],[[11393,11393],\"valid\"],[[11394,11394],\"mapped\",[11395]],[[11395,11395],\"valid\"],[[11396,11396],\"mapped\",[11397]],[[11397,11397],\"valid\"],[[11398,11398],\"mapped\",[11399]],[[11399,11399],\"valid\"],[[11400,11400],\"mapped\",[11401]],[[11401,11401],\"valid\"],[[11402,11402],\"mapped\",[11403]],[[11403,11403],\"valid\"],[[11404,11404],\"mapped\",[11405]],[[11405,11405],\"valid\"],[[11406,11406],\"mapped\",[11407]],[[11407,11407],\"valid\"],[[11408,11408],\"mapped\",[11409]],[[11409,11409],\"valid\"],[[11410,11410],\"mapped\",[11411]],[[11411,11411],\"valid\"],[[11412,11412],\"mapped\",[11413]],[[11413,11413],\"valid\"],[[11414,11414],\"mapped\",[11415]],[[11415,11415],\"valid\"],[[11416,11416],\"mapped\",[11417]],[[11417,11417],\"valid\"],[[11418,11418],\"mapped\",[11419]],[[11419,11419],\"valid\"],[[11420,11420],\"mapped\",[11421]],[[11421,11421],\"valid\"],[[11422,11422],\"mapped\",[11423]],[[11423,11423],\"valid\"],[[11424,11424],\"mapped\",[11425]],[[11425,11425],\"valid\"],[[11426,11426],\"mapped\",[11427]],[[11427,11427],\"valid\"],[[11428,11428],\"mapped\",[11429]],[[11429,11429],\"valid\"],[[11430,11430],\"mapped\",[11431]],[[11431,11431],\"valid\"],[[11432,11432],\"mapped\",[11433]],[[11433,11433],\"valid\"],[[11434,11434],\"mapped\",[11435]],[[11435,11435],\"valid\"],[[11436,11436],\"mapped\",[11437]],[[11437,11437],\"valid\"],[[11438,11438],\"mapped\",[11439]],[[11439,11439],\"valid\"],[[11440,11440],\"mapped\",[11441]],[[11441,11441],\"valid\"],[[11442,11442],\"mapped\",[11443]],[[11443,11443],\"valid\"],[[11444,11444],\"mapped\",[11445]],[[11445,11445],\"valid\"],[[11446,11446],\"mapped\",[11447]],[[11447,11447],\"valid\"],[[11448,11448],\"mapped\",[11449]],[[11449,11449],\"valid\"],[[11450,11450],\"mapped\",[11451]],[[11451,11451],\"valid\"],[[11452,11452],\"mapped\",[11453]],[[11453,11453],\"valid\"],[[11454,11454],\"mapped\",[11455]],[[11455,11455],\"valid\"],[[11456,11456],\"mapped\",[11457]],[[11457,11457],\"valid\"],[[11458,11458],\"mapped\",[11459]],[[11459,11459],\"valid\"],[[11460,11460],\"mapped\",[11461]],[[11461,11461],\"valid\"],[[11462,11462],\"mapped\",[11463]],[[11463,11463],\"valid\"],[[11464,11464],\"mapped\",[11465]],[[11465,11465],\"valid\"],[[11466,11466],\"mapped\",[11467]],[[11467,11467],\"valid\"],[[11468,11468],\"mapped\",[11469]],[[11469,11469],\"valid\"],[[11470,11470],\"mapped\",[11471]],[[11471,11471],\"valid\"],[[11472,11472],\"mapped\",[11473]],[[11473,11473],\"valid\"],[[11474,11474],\"mapped\",[11475]],[[11475,11475],\"valid\"],[[11476,11476],\"mapped\",[11477]],[[11477,11477],\"valid\"],[[11478,11478],\"mapped\",[11479]],[[11479,11479],\"valid\"],[[11480,11480],\"mapped\",[11481]],[[11481,11481],\"valid\"],[[11482,11482],\"mapped\",[11483]],[[11483,11483],\"valid\"],[[11484,11484],\"mapped\",[11485]],[[11485,11485],\"valid\"],[[11486,11486],\"mapped\",[11487]],[[11487,11487],\"valid\"],[[11488,11488],\"mapped\",[11489]],[[11489,11489],\"valid\"],[[11490,11490],\"mapped\",[11491]],[[11491,11492],\"valid\"],[[11493,11498],\"valid\",[],\"NV8\"],[[11499,11499],\"mapped\",[11500]],[[11500,11500],\"valid\"],[[11501,11501],\"mapped\",[11502]],[[11502,11505],\"valid\"],[[11506,11506],\"mapped\",[11507]],[[11507,11507],\"valid\"],[[11508,11512],\"disallowed\"],[[11513,11519],\"valid\",[],\"NV8\"],[[11520,11557],\"valid\"],[[11558,11558],\"disallowed\"],[[11559,11559],\"valid\"],[[11560,11564],\"disallowed\"],[[11565,11565],\"valid\"],[[11566,11567],\"disallowed\"],[[11568,11621],\"valid\"],[[11622,11623],\"valid\"],[[11624,11630],\"disallowed\"],[[11631,11631],\"mapped\",[11617]],[[11632,11632],\"valid\",[],\"NV8\"],[[11633,11646],\"disallowed\"],[[11647,11647],\"valid\"],[[11648,11670],\"valid\"],[[11671,11679],\"disallowed\"],[[11680,11686],\"valid\"],[[11687,11687],\"disallowed\"],[[11688,11694],\"valid\"],[[11695,11695],\"disallowed\"],[[11696,11702],\"valid\"],[[11703,11703],\"disallowed\"],[[11704,11710],\"valid\"],[[11711,11711],\"disallowed\"],[[11712,11718],\"valid\"],[[11719,11719],\"disallowed\"],[[11720,11726],\"valid\"],[[11727,11727],\"disallowed\"],[[11728,11734],\"valid\"],[[11735,11735],\"disallowed\"],[[11736,11742],\"valid\"],[[11743,11743],\"disallowed\"],[[11744,11775],\"valid\"],[[11776,11799],\"valid\",[],\"NV8\"],[[11800,11803],\"valid\",[],\"NV8\"],[[11804,11805],\"valid\",[],\"NV8\"],[[11806,11822],\"valid\",[],\"NV8\"],[[11823,11823],\"valid\"],[[11824,11824],\"valid\",[],\"NV8\"],[[11825,11825],\"valid\",[],\"NV8\"],[[11826,11835],\"valid\",[],\"NV8\"],[[11836,11842],\"valid\",[],\"NV8\"],[[11843,11903],\"disallowed\"],[[11904,11929],\"valid\",[],\"NV8\"],[[11930,11930],\"disallowed\"],[[11931,11934],\"valid\",[],\"NV8\"],[[11935,11935],\"mapped\",[27597]],[[11936,12018],\"valid\",[],\"NV8\"],[[12019,12019],\"mapped\",[40863]],[[12020,12031],\"disallowed\"],[[12032,12032],\"mapped\",[19968]],[[12033,12033],\"mapped\",[20008]],[[12034,12034],\"mapped\",[20022]],[[12035,12035],\"mapped\",[20031]],[[12036,12036],\"mapped\",[20057]],[[12037,12037],\"mapped\",[20101]],[[12038,12038],\"mapped\",[20108]],[[12039,12039],\"mapped\",[20128]],[[12040,12040],\"mapped\",[20154]],[[12041,12041],\"mapped\",[20799]],[[12042,12042],\"mapped\",[20837]],[[12043,12043],\"mapped\",[20843]],[[12044,12044],\"mapped\",[20866]],[[12045,12045],\"mapped\",[20886]],[[12046,12046],\"mapped\",[20907]],[[12047,12047],\"mapped\",[20960]],[[12048,12048],\"mapped\",[20981]],[[12049,12049],\"mapped\",[20992]],[[12050,12050],\"mapped\",[21147]],[[12051,12051],\"mapped\",[21241]],[[12052,12052],\"mapped\",[21269]],[[12053,12053],\"mapped\",[21274]],[[12054,12054],\"mapped\",[21304]],[[12055,12055],\"mapped\",[21313]],[[12056,12056],\"mapped\",[21340]],[[12057,12057],\"mapped\",[21353]],[[12058,12058],\"mapped\",[21378]],[[12059,12059],\"mapped\",[21430]],[[12060,12060],\"mapped\",[21448]],[[12061,12061],\"mapped\",[21475]],[[12062,12062],\"mapped\",[22231]],[[12063,12063],\"mapped\",[22303]],[[12064,12064],\"mapped\",[22763]],[[12065,12065],\"mapped\",[22786]],[[12066,12066],\"mapped\",[22794]],[[12067,12067],\"mapped\",[22805]],[[12068,12068],\"mapped\",[22823]],[[12069,12069],\"mapped\",[22899]],[[12070,12070],\"mapped\",[23376]],[[12071,12071],\"mapped\",[23424]],[[12072,12072],\"mapped\",[23544]],[[12073,12073],\"mapped\",[23567]],[[12074,12074],\"mapped\",[23586]],[[12075,12075],\"mapped\",[23608]],[[12076,12076],\"mapped\",[23662]],[[12077,12077],\"mapped\",[23665]],[[12078,12078],\"mapped\",[24027]],[[12079,12079],\"mapped\",[24037]],[[12080,12080],\"mapped\",[24049]],[[12081,12081],\"mapped\",[24062]],[[12082,12082],\"mapped\",[24178]],[[12083,12083],\"mapped\",[24186]],[[12084,12084],\"mapped\",[24191]],[[12085,12085],\"mapped\",[24308]],[[12086,12086],\"mapped\",[24318]],[[12087,12087],\"mapped\",[24331]],[[12088,12088],\"mapped\",[24339]],[[12089,12089],\"mapped\",[24400]],[[12090,12090],\"mapped\",[24417]],[[12091,12091],\"mapped\",[24435]],[[12092,12092],\"mapped\",[24515]],[[12093,12093],\"mapped\",[25096]],[[12094,12094],\"mapped\",[25142]],[[12095,12095],\"mapped\",[25163]],[[12096,12096],\"mapped\",[25903]],[[12097,12097],\"mapped\",[25908]],[[12098,12098],\"mapped\",[25991]],[[12099,12099],\"mapped\",[26007]],[[12100,12100],\"mapped\",[26020]],[[12101,12101],\"mapped\",[26041]],[[12102,12102],\"mapped\",[26080]],[[12103,12103],\"mapped\",[26085]],[[12104,12104],\"mapped\",[26352]],[[12105,12105],\"mapped\",[26376]],[[12106,12106],\"mapped\",[26408]],[[12107,12107],\"mapped\",[27424]],[[12108,12108],\"mapped\",[27490]],[[12109,12109],\"mapped\",[27513]],[[12110,12110],\"mapped\",[27571]],[[12111,12111],\"mapped\",[27595]],[[12112,12112],\"mapped\",[27604]],[[12113,12113],\"mapped\",[27611]],[[12114,12114],\"mapped\",[27663]],[[12115,12115],\"mapped\",[27668]],[[12116,12116],\"mapped\",[27700]],[[12117,12117],\"mapped\",[28779]],[[12118,12118],\"mapped\",[29226]],[[12119,12119],\"mapped\",[29238]],[[12120,12120],\"mapped\",[29243]],[[12121,12121],\"mapped\",[29247]],[[12122,12122],\"mapped\",[29255]],[[12123,12123],\"mapped\",[29273]],[[12124,12124],\"mapped\",[29275]],[[12125,12125],\"mapped\",[29356]],[[12126,12126],\"mapped\",[29572]],[[12127,12127],\"mapped\",[29577]],[[12128,12128],\"mapped\",[29916]],[[12129,12129],\"mapped\",[29926]],[[12130,12130],\"mapped\",[29976]],[[12131,12131],\"mapped\",[29983]],[[12132,12132],\"mapped\",[29992]],[[12133,12133],\"mapped\",[30000]],[[12134,12134],\"mapped\",[30091]],[[12135,12135],\"mapped\",[30098]],[[12136,12136],\"mapped\",[30326]],[[12137,12137],\"mapped\",[30333]],[[12138,12138],\"mapped\",[30382]],[[12139,12139],\"mapped\",[30399]],[[12140,12140],\"mapped\",[30446]],[[12141,12141],\"mapped\",[30683]],[[12142,12142],\"mapped\",[30690]],[[12143,12143],\"mapped\",[30707]],[[12144,12144],\"mapped\",[31034]],[[12145,12145],\"mapped\",[31160]],[[12146,12146],\"mapped\",[31166]],[[12147,12147],\"mapped\",[31348]],[[12148,12148],\"mapped\",[31435]],[[12149,12149],\"mapped\",[31481]],[[12150,12150],\"mapped\",[31859]],[[12151,12151],\"mapped\",[31992]],[[12152,12152],\"mapped\",[32566]],[[12153,12153],\"mapped\",[32593]],[[12154,12154],\"mapped\",[32650]],[[12155,12155],\"mapped\",[32701]],[[12156,12156],\"mapped\",[32769]],[[12157,12157],\"mapped\",[32780]],[[12158,12158],\"mapped\",[32786]],[[12159,12159],\"mapped\",[32819]],[[12160,12160],\"mapped\",[32895]],[[12161,12161],\"mapped\",[32905]],[[12162,12162],\"mapped\",[33251]],[[12163,12163],\"mapped\",[33258]],[[12164,12164],\"mapped\",[33267]],[[12165,12165],\"mapped\",[33276]],[[12166,12166],\"mapped\",[33292]],[[12167,12167],\"mapped\",[33307]],[[12168,12168],\"mapped\",[33311]],[[12169,12169],\"mapped\",[33390]],[[12170,12170],\"mapped\",[33394]],[[12171,12171],\"mapped\",[33400]],[[12172,12172],\"mapped\",[34381]],[[12173,12173],\"mapped\",[34411]],[[12174,12174],\"mapped\",[34880]],[[12175,12175],\"mapped\",[34892]],[[12176,12176],\"mapped\",[34915]],[[12177,12177],\"mapped\",[35198]],[[12178,12178],\"mapped\",[35211]],[[12179,12179],\"mapped\",[35282]],[[12180,12180],\"mapped\",[35328]],[[12181,12181],\"mapped\",[35895]],[[12182,12182],\"mapped\",[35910]],[[12183,12183],\"mapped\",[35925]],[[12184,12184],\"mapped\",[35960]],[[12185,12185],\"mapped\",[35997]],[[12186,12186],\"mapped\",[36196]],[[12187,12187],\"mapped\",[36208]],[[12188,12188],\"mapped\",[36275]],[[12189,12189],\"mapped\",[36523]],[[12190,12190],\"mapped\",[36554]],[[12191,12191],\"mapped\",[36763]],[[12192,12192],\"mapped\",[36784]],[[12193,12193],\"mapped\",[36789]],[[12194,12194],\"mapped\",[37009]],[[12195,12195],\"mapped\",[37193]],[[12196,12196],\"mapped\",[37318]],[[12197,12197],\"mapped\",[37324]],[[12198,12198],\"mapped\",[37329]],[[12199,12199],\"mapped\",[38263]],[[12200,12200],\"mapped\",[38272]],[[12201,12201],\"mapped\",[38428]],[[12202,12202],\"mapped\",[38582]],[[12203,12203],\"mapped\",[38585]],[[12204,12204],\"mapped\",[38632]],[[12205,12205],\"mapped\",[38737]],[[12206,12206],\"mapped\",[38750]],[[12207,12207],\"mapped\",[38754]],[[12208,12208],\"mapped\",[38761]],[[12209,12209],\"mapped\",[38859]],[[12210,12210],\"mapped\",[38893]],[[12211,12211],\"mapped\",[38899]],[[12212,12212],\"mapped\",[38913]],[[12213,12213],\"mapped\",[39080]],[[12214,12214],\"mapped\",[39131]],[[12215,12215],\"mapped\",[39135]],[[12216,12216],\"mapped\",[39318]],[[12217,12217],\"mapped\",[39321]],[[12218,12218],\"mapped\",[39340]],[[12219,12219],\"mapped\",[39592]],[[12220,12220],\"mapped\",[39640]],[[12221,12221],\"mapped\",[39647]],[[12222,12222],\"mapped\",[39717]],[[12223,12223],\"mapped\",[39727]],[[12224,12224],\"mapped\",[39730]],[[12225,12225],\"mapped\",[39740]],[[12226,12226],\"mapped\",[39770]],[[12227,12227],\"mapped\",[40165]],[[12228,12228],\"mapped\",[40565]],[[12229,12229],\"mapped\",[40575]],[[12230,12230],\"mapped\",[40613]],[[12231,12231],\"mapped\",[40635]],[[12232,12232],\"mapped\",[40643]],[[12233,12233],\"mapped\",[40653]],[[12234,12234],\"mapped\",[40657]],[[12235,12235],\"mapped\",[40697]],[[12236,12236],\"mapped\",[40701]],[[12237,12237],\"mapped\",[40718]],[[12238,12238],\"mapped\",[40723]],[[12239,12239],\"mapped\",[40736]],[[12240,12240],\"mapped\",[40763]],[[12241,12241],\"mapped\",[40778]],[[12242,12242],\"mapped\",[40786]],[[12243,12243],\"mapped\",[40845]],[[12244,12244],\"mapped\",[40860]],[[12245,12245],\"mapped\",[40864]],[[12246,12271],\"disallowed\"],[[12272,12283],\"disallowed\"],[[12284,12287],\"disallowed\"],[[12288,12288],\"disallowed_STD3_mapped\",[32]],[[12289,12289],\"valid\",[],\"NV8\"],[[12290,12290],\"mapped\",[46]],[[12291,12292],\"valid\",[],\"NV8\"],[[12293,12295],\"valid\"],[[12296,12329],\"valid\",[],\"NV8\"],[[12330,12333],\"valid\"],[[12334,12341],\"valid\",[],\"NV8\"],[[12342,12342],\"mapped\",[12306]],[[12343,12343],\"valid\",[],\"NV8\"],[[12344,12344],\"mapped\",[21313]],[[12345,12345],\"mapped\",[21316]],[[12346,12346],\"mapped\",[21317]],[[12347,12347],\"valid\",[],\"NV8\"],[[12348,12348],\"valid\"],[[12349,12349],\"valid\",[],\"NV8\"],[[12350,12350],\"valid\",[],\"NV8\"],[[12351,12351],\"valid\",[],\"NV8\"],[[12352,12352],\"disallowed\"],[[12353,12436],\"valid\"],[[12437,12438],\"valid\"],[[12439,12440],\"disallowed\"],[[12441,12442],\"valid\"],[[12443,12443],\"disallowed_STD3_mapped\",[32,12441]],[[12444,12444],\"disallowed_STD3_mapped\",[32,12442]],[[12445,12446],\"valid\"],[[12447,12447],\"mapped\",[12424,12426]],[[12448,12448],\"valid\",[],\"NV8\"],[[12449,12542],\"valid\"],[[12543,12543],\"mapped\",[12467,12488]],[[12544,12548],\"disallowed\"],[[12549,12588],\"valid\"],[[12589,12589],\"valid\"],[[12590,12592],\"disallowed\"],[[12593,12593],\"mapped\",[4352]],[[12594,12594],\"mapped\",[4353]],[[12595,12595],\"mapped\",[4522]],[[12596,12596],\"mapped\",[4354]],[[12597,12597],\"mapped\",[4524]],[[12598,12598],\"mapped\",[4525]],[[12599,12599],\"mapped\",[4355]],[[12600,12600],\"mapped\",[4356]],[[12601,12601],\"mapped\",[4357]],[[12602,12602],\"mapped\",[4528]],[[12603,12603],\"mapped\",[4529]],[[12604,12604],\"mapped\",[4530]],[[12605,12605],\"mapped\",[4531]],[[12606,12606],\"mapped\",[4532]],[[12607,12607],\"mapped\",[4533]],[[12608,12608],\"mapped\",[4378]],[[12609,12609],\"mapped\",[4358]],[[12610,12610],\"mapped\",[4359]],[[12611,12611],\"mapped\",[4360]],[[12612,12612],\"mapped\",[4385]],[[12613,12613],\"mapped\",[4361]],[[12614,12614],\"mapped\",[4362]],[[12615,12615],\"mapped\",[4363]],[[12616,12616],\"mapped\",[4364]],[[12617,12617],\"mapped\",[4365]],[[12618,12618],\"mapped\",[4366]],[[12619,12619],\"mapped\",[4367]],[[12620,12620],\"mapped\",[4368]],[[12621,12621],\"mapped\",[4369]],[[12622,12622],\"mapped\",[4370]],[[12623,12623],\"mapped\",[4449]],[[12624,12624],\"mapped\",[4450]],[[12625,12625],\"mapped\",[4451]],[[12626,12626],\"mapped\",[4452]],[[12627,12627],\"mapped\",[4453]],[[12628,12628],\"mapped\",[4454]],[[12629,12629],\"mapped\",[4455]],[[12630,12630],\"mapped\",[4456]],[[12631,12631],\"mapped\",[4457]],[[12632,12632],\"mapped\",[4458]],[[12633,12633],\"mapped\",[4459]],[[12634,12634],\"mapped\",[4460]],[[12635,12635],\"mapped\",[4461]],[[12636,12636],\"mapped\",[4462]],[[12637,12637],\"mapped\",[4463]],[[12638,12638],\"mapped\",[4464]],[[12639,12639],\"mapped\",[4465]],[[12640,12640],\"mapped\",[4466]],[[12641,12641],\"mapped\",[4467]],[[12642,12642],\"mapped\",[4468]],[[12643,12643],\"mapped\",[4469]],[[12644,12644],\"disallowed\"],[[12645,12645],\"mapped\",[4372]],[[12646,12646],\"mapped\",[4373]],[[12647,12647],\"mapped\",[4551]],[[12648,12648],\"mapped\",[4552]],[[12649,12649],\"mapped\",[4556]],[[12650,12650],\"mapped\",[4558]],[[12651,12651],\"mapped\",[4563]],[[12652,12652],\"mapped\",[4567]],[[12653,12653],\"mapped\",[4569]],[[12654,12654],\"mapped\",[4380]],[[12655,12655],\"mapped\",[4573]],[[12656,12656],\"mapped\",[4575]],[[12657,12657],\"mapped\",[4381]],[[12658,12658],\"mapped\",[4382]],[[12659,12659],\"mapped\",[4384]],[[12660,12660],\"mapped\",[4386]],[[12661,12661],\"mapped\",[4387]],[[12662,12662],\"mapped\",[4391]],[[12663,12663],\"mapped\",[4393]],[[12664,12664],\"mapped\",[4395]],[[12665,12665],\"mapped\",[4396]],[[12666,12666],\"mapped\",[4397]],[[12667,12667],\"mapped\",[4398]],[[12668,12668],\"mapped\",[4399]],[[12669,12669],\"mapped\",[4402]],[[12670,12670],\"mapped\",[4406]],[[12671,12671],\"mapped\",[4416]],[[12672,12672],\"mapped\",[4423]],[[12673,12673],\"mapped\",[4428]],[[12674,12674],\"mapped\",[4593]],[[12675,12675],\"mapped\",[4594]],[[12676,12676],\"mapped\",[4439]],[[12677,12677],\"mapped\",[4440]],[[12678,12678],\"mapped\",[4441]],[[12679,12679],\"mapped\",[4484]],[[12680,12680],\"mapped\",[4485]],[[12681,12681],\"mapped\",[4488]],[[12682,12682],\"mapped\",[4497]],[[12683,12683],\"mapped\",[4498]],[[12684,12684],\"mapped\",[4500]],[[12685,12685],\"mapped\",[4510]],[[12686,12686],\"mapped\",[4513]],[[12687,12687],\"disallowed\"],[[12688,12689],\"valid\",[],\"NV8\"],[[12690,12690],\"mapped\",[19968]],[[12691,12691],\"mapped\",[20108]],[[12692,12692],\"mapped\",[19977]],[[12693,12693],\"mapped\",[22235]],[[12694,12694],\"mapped\",[19978]],[[12695,12695],\"mapped\",[20013]],[[12696,12696],\"mapped\",[19979]],[[12697,12697],\"mapped\",[30002]],[[12698,12698],\"mapped\",[20057]],[[12699,12699],\"mapped\",[19993]],[[12700,12700],\"mapped\",[19969]],[[12701,12701],\"mapped\",[22825]],[[12702,12702],\"mapped\",[22320]],[[12703,12703],\"mapped\",[20154]],[[12704,12727],\"valid\"],[[12728,12730],\"valid\"],[[12731,12735],\"disallowed\"],[[12736,12751],\"valid\",[],\"NV8\"],[[12752,12771],\"valid\",[],\"NV8\"],[[12772,12783],\"disallowed\"],[[12784,12799],\"valid\"],[[12800,12800],\"disallowed_STD3_mapped\",[40,4352,41]],[[12801,12801],\"disallowed_STD3_mapped\",[40,4354,41]],[[12802,12802],\"disallowed_STD3_mapped\",[40,4355,41]],[[12803,12803],\"disallowed_STD3_mapped\",[40,4357,41]],[[12804,12804],\"disallowed_STD3_mapped\",[40,4358,41]],[[12805,12805],\"disallowed_STD3_mapped\",[40,4359,41]],[[12806,12806],\"disallowed_STD3_mapped\",[40,4361,41]],[[12807,12807],\"disallowed_STD3_mapped\",[40,4363,41]],[[12808,12808],\"disallowed_STD3_mapped\",[40,4364,41]],[[12809,12809],\"disallowed_STD3_mapped\",[40,4366,41]],[[12810,12810],\"disallowed_STD3_mapped\",[40,4367,41]],[[12811,12811],\"disallowed_STD3_mapped\",[40,4368,41]],[[12812,12812],\"disallowed_STD3_mapped\",[40,4369,41]],[[12813,12813],\"disallowed_STD3_mapped\",[40,4370,41]],[[12814,12814],\"disallowed_STD3_mapped\",[40,44032,41]],[[12815,12815],\"disallowed_STD3_mapped\",[40,45208,41]],[[12816,12816],\"disallowed_STD3_mapped\",[40,45796,41]],[[12817,12817],\"disallowed_STD3_mapped\",[40,46972,41]],[[12818,12818],\"disallowed_STD3_mapped\",[40,47560,41]],[[12819,12819],\"disallowed_STD3_mapped\",[40,48148,41]],[[12820,12820],\"disallowed_STD3_mapped\",[40,49324,41]],[[12821,12821],\"disallowed_STD3_mapped\",[40,50500,41]],[[12822,12822],\"disallowed_STD3_mapped\",[40,51088,41]],[[12823,12823],\"disallowed_STD3_mapped\",[40,52264,41]],[[12824,12824],\"disallowed_STD3_mapped\",[40,52852,41]],[[12825,12825],\"disallowed_STD3_mapped\",[40,53440,41]],[[12826,12826],\"disallowed_STD3_mapped\",[40,54028,41]],[[12827,12827],\"disallowed_STD3_mapped\",[40,54616,41]],[[12828,12828],\"disallowed_STD3_mapped\",[40,51452,41]],[[12829,12829],\"disallowed_STD3_mapped\",[40,50724,51204,41]],[[12830,12830],\"disallowed_STD3_mapped\",[40,50724,54980,41]],[[12831,12831],\"disallowed\"],[[12832,12832],\"disallowed_STD3_mapped\",[40,19968,41]],[[12833,12833],\"disallowed_STD3_mapped\",[40,20108,41]],[[12834,12834],\"disallowed_STD3_mapped\",[40,19977,41]],[[12835,12835],\"disallowed_STD3_mapped\",[40,22235,41]],[[12836,12836],\"disallowed_STD3_mapped\",[40,20116,41]],[[12837,12837],\"disallowed_STD3_mapped\",[40,20845,41]],[[12838,12838],\"disallowed_STD3_mapped\",[40,19971,41]],[[12839,12839],\"disallowed_STD3_mapped\",[40,20843,41]],[[12840,12840],\"disallowed_STD3_mapped\",[40,20061,41]],[[12841,12841],\"disallowed_STD3_mapped\",[40,21313,41]],[[12842,12842],\"disallowed_STD3_mapped\",[40,26376,41]],[[12843,12843],\"disallowed_STD3_mapped\",[40,28779,41]],[[12844,12844],\"disallowed_STD3_mapped\",[40,27700,41]],[[12845,12845],\"disallowed_STD3_mapped\",[40,26408,41]],[[12846,12846],\"disallowed_STD3_mapped\",[40,37329,41]],[[12847,12847],\"disallowed_STD3_mapped\",[40,22303,41]],[[12848,12848],\"disallowed_STD3_mapped\",[40,26085,41]],[[12849,12849],\"disallowed_STD3_mapped\",[40,26666,41]],[[12850,12850],\"disallowed_STD3_mapped\",[40,26377,41]],[[12851,12851],\"disallowed_STD3_mapped\",[40,31038,41]],[[12852,12852],\"disallowed_STD3_mapped\",[40,21517,41]],[[12853,12853],\"disallowed_STD3_mapped\",[40,29305,41]],[[12854,12854],\"disallowed_STD3_mapped\",[40,36001,41]],[[12855,12855],\"disallowed_STD3_mapped\",[40,31069,41]],[[12856,12856],\"disallowed_STD3_mapped\",[40,21172,41]],[[12857,12857],\"disallowed_STD3_mapped\",[40,20195,41]],[[12858,12858],\"disallowed_STD3_mapped\",[40,21628,41]],[[12859,12859],\"disallowed_STD3_mapped\",[40,23398,41]],[[12860,12860],\"disallowed_STD3_mapped\",[40,30435,41]],[[12861,12861],\"disallowed_STD3_mapped\",[40,20225,41]],[[12862,12862],\"disallowed_STD3_mapped\",[40,36039,41]],[[12863,12863],\"disallowed_STD3_mapped\",[40,21332,41]],[[12864,12864],\"disallowed_STD3_mapped\",[40,31085,41]],[[12865,12865],\"disallowed_STD3_mapped\",[40,20241,41]],[[12866,12866],\"disallowed_STD3_mapped\",[40,33258,41]],[[12867,12867],\"disallowed_STD3_mapped\",[40,33267,41]],[[12868,12868],\"mapped\",[21839]],[[12869,12869],\"mapped\",[24188]],[[12870,12870],\"mapped\",[25991]],[[12871,12871],\"mapped\",[31631]],[[12872,12879],\"valid\",[],\"NV8\"],[[12880,12880],\"mapped\",[112,116,101]],[[12881,12881],\"mapped\",[50,49]],[[12882,12882],\"mapped\",[50,50]],[[12883,12883],\"mapped\",[50,51]],[[12884,12884],\"mapped\",[50,52]],[[12885,12885],\"mapped\",[50,53]],[[12886,12886],\"mapped\",[50,54]],[[12887,12887],\"mapped\",[50,55]],[[12888,12888],\"mapped\",[50,56]],[[12889,12889],\"mapped\",[50,57]],[[12890,12890],\"mapped\",[51,48]],[[12891,12891],\"mapped\",[51,49]],[[12892,12892],\"mapped\",[51,50]],[[12893,12893],\"mapped\",[51,51]],[[12894,12894],\"mapped\",[51,52]],[[12895,12895],\"mapped\",[51,53]],[[12896,12896],\"mapped\",[4352]],[[12897,12897],\"mapped\",[4354]],[[12898,12898],\"mapped\",[4355]],[[12899,12899],\"mapped\",[4357]],[[12900,12900],\"mapped\",[4358]],[[12901,12901],\"mapped\",[4359]],[[12902,12902],\"mapped\",[4361]],[[12903,12903],\"mapped\",[4363]],[[12904,12904],\"mapped\",[4364]],[[12905,12905],\"mapped\",[4366]],[[12906,12906],\"mapped\",[4367]],[[12907,12907],\"mapped\",[4368]],[[12908,12908],\"mapped\",[4369]],[[12909,12909],\"mapped\",[4370]],[[12910,12910],\"mapped\",[44032]],[[12911,12911],\"mapped\",[45208]],[[12912,12912],\"mapped\",[45796]],[[12913,12913],\"mapped\",[46972]],[[12914,12914],\"mapped\",[47560]],[[12915,12915],\"mapped\",[48148]],[[12916,12916],\"mapped\",[49324]],[[12917,12917],\"mapped\",[50500]],[[12918,12918],\"mapped\",[51088]],[[12919,12919],\"mapped\",[52264]],[[12920,12920],\"mapped\",[52852]],[[12921,12921],\"mapped\",[53440]],[[12922,12922],\"mapped\",[54028]],[[12923,12923],\"mapped\",[54616]],[[12924,12924],\"mapped\",[52280,44256]],[[12925,12925],\"mapped\",[51452,51032]],[[12926,12926],\"mapped\",[50864]],[[12927,12927],\"valid\",[],\"NV8\"],[[12928,12928],\"mapped\",[19968]],[[12929,12929],\"mapped\",[20108]],[[12930,12930],\"mapped\",[19977]],[[12931,12931],\"mapped\",[22235]],[[12932,12932],\"mapped\",[20116]],[[12933,12933],\"mapped\",[20845]],[[12934,12934],\"mapped\",[19971]],[[12935,12935],\"mapped\",[20843]],[[12936,12936],\"mapped\",[20061]],[[12937,12937],\"mapped\",[21313]],[[12938,12938],\"mapped\",[26376]],[[12939,12939],\"mapped\",[28779]],[[12940,12940],\"mapped\",[27700]],[[12941,12941],\"mapped\",[26408]],[[12942,12942],\"mapped\",[37329]],[[12943,12943],\"mapped\",[22303]],[[12944,12944],\"mapped\",[26085]],[[12945,12945],\"mapped\",[26666]],[[12946,12946],\"mapped\",[26377]],[[12947,12947],\"mapped\",[31038]],[[12948,12948],\"mapped\",[21517]],[[12949,12949],\"mapped\",[29305]],[[12950,12950],\"mapped\",[36001]],[[12951,12951],\"mapped\",[31069]],[[12952,12952],\"mapped\",[21172]],[[12953,12953],\"mapped\",[31192]],[[12954,12954],\"mapped\",[30007]],[[12955,12955],\"mapped\",[22899]],[[12956,12956],\"mapped\",[36969]],[[12957,12957],\"mapped\",[20778]],[[12958,12958],\"mapped\",[21360]],[[12959,12959],\"mapped\",[27880]],[[12960,12960],\"mapped\",[38917]],[[12961,12961],\"mapped\",[20241]],[[12962,12962],\"mapped\",[20889]],[[12963,12963],\"mapped\",[27491]],[[12964,12964],\"mapped\",[19978]],[[12965,12965],\"mapped\",[20013]],[[12966,12966],\"mapped\",[19979]],[[12967,12967],\"mapped\",[24038]],[[12968,12968],\"mapped\",[21491]],[[12969,12969],\"mapped\",[21307]],[[12970,12970],\"mapped\",[23447]],[[12971,12971],\"mapped\",[23398]],[[12972,12972],\"mapped\",[30435]],[[12973,12973],\"mapped\",[20225]],[[12974,12974],\"mapped\",[36039]],[[12975,12975],\"mapped\",[21332]],[[12976,12976],\"mapped\",[22812]],[[12977,12977],\"mapped\",[51,54]],[[12978,12978],\"mapped\",[51,55]],[[12979,12979],\"mapped\",[51,56]],[[12980,12980],\"mapped\",[51,57]],[[12981,12981],\"mapped\",[52,48]],[[12982,12982],\"mapped\",[52,49]],[[12983,12983],\"mapped\",[52,50]],[[12984,12984],\"mapped\",[52,51]],[[12985,12985],\"mapped\",[52,52]],[[12986,12986],\"mapped\",[52,53]],[[12987,12987],\"mapped\",[52,54]],[[12988,12988],\"mapped\",[52,55]],[[12989,12989],\"mapped\",[52,56]],[[12990,12990],\"mapped\",[52,57]],[[12991,12991],\"mapped\",[53,48]],[[12992,12992],\"mapped\",[49,26376]],[[12993,12993],\"mapped\",[50,26376]],[[12994,12994],\"mapped\",[51,26376]],[[12995,12995],\"mapped\",[52,26376]],[[12996,12996],\"mapped\",[53,26376]],[[12997,12997],\"mapped\",[54,26376]],[[12998,12998],\"mapped\",[55,26376]],[[12999,12999],\"mapped\",[56,26376]],[[13000,13000],\"mapped\",[57,26376]],[[13001,13001],\"mapped\",[49,48,26376]],[[13002,13002],\"mapped\",[49,49,26376]],[[13003,13003],\"mapped\",[49,50,26376]],[[13004,13004],\"mapped\",[104,103]],[[13005,13005],\"mapped\",[101,114,103]],[[13006,13006],\"mapped\",[101,118]],[[13007,13007],\"mapped\",[108,116,100]],[[13008,13008],\"mapped\",[12450]],[[13009,13009],\"mapped\",[12452]],[[13010,13010],\"mapped\",[12454]],[[13011,13011],\"mapped\",[12456]],[[13012,13012],\"mapped\",[12458]],[[13013,13013],\"mapped\",[12459]],[[13014,13014],\"mapped\",[12461]],[[13015,13015],\"mapped\",[12463]],[[13016,13016],\"mapped\",[12465]],[[13017,13017],\"mapped\",[12467]],[[13018,13018],\"mapped\",[12469]],[[13019,13019],\"mapped\",[12471]],[[13020,13020],\"mapped\",[12473]],[[13021,13021],\"mapped\",[12475]],[[13022,13022],\"mapped\",[12477]],[[13023,13023],\"mapped\",[12479]],[[13024,13024],\"mapped\",[12481]],[[13025,13025],\"mapped\",[12484]],[[13026,13026],\"mapped\",[12486]],[[13027,13027],\"mapped\",[12488]],[[13028,13028],\"mapped\",[12490]],[[13029,13029],\"mapped\",[12491]],[[13030,13030],\"mapped\",[12492]],[[13031,13031],\"mapped\",[12493]],[[13032,13032],\"mapped\",[12494]],[[13033,13033],\"mapped\",[12495]],[[13034,13034],\"mapped\",[12498]],[[13035,13035],\"mapped\",[12501]],[[13036,13036],\"mapped\",[12504]],[[13037,13037],\"mapped\",[12507]],[[13038,13038],\"mapped\",[12510]],[[13039,13039],\"mapped\",[12511]],[[13040,13040],\"mapped\",[12512]],[[13041,13041],\"mapped\",[12513]],[[13042,13042],\"mapped\",[12514]],[[13043,13043],\"mapped\",[12516]],[[13044,13044],\"mapped\",[12518]],[[13045,13045],\"mapped\",[12520]],[[13046,13046],\"mapped\",[12521]],[[13047,13047],\"mapped\",[12522]],[[13048,13048],\"mapped\",[12523]],[[13049,13049],\"mapped\",[12524]],[[13050,13050],\"mapped\",[12525]],[[13051,13051],\"mapped\",[12527]],[[13052,13052],\"mapped\",[12528]],[[13053,13053],\"mapped\",[12529]],[[13054,13054],\"mapped\",[12530]],[[13055,13055],\"disallowed\"],[[13056,13056],\"mapped\",[12450,12497,12540,12488]],[[13057,13057],\"mapped\",[12450,12523,12501,12449]],[[13058,13058],\"mapped\",[12450,12531,12506,12450]],[[13059,13059],\"mapped\",[12450,12540,12523]],[[13060,13060],\"mapped\",[12452,12491,12531,12464]],[[13061,13061],\"mapped\",[12452,12531,12481]],[[13062,13062],\"mapped\",[12454,12457,12531]],[[13063,13063],\"mapped\",[12456,12473,12463,12540,12489]],[[13064,13064],\"mapped\",[12456,12540,12459,12540]],[[13065,13065],\"mapped\",[12458,12531,12473]],[[13066,13066],\"mapped\",[12458,12540,12512]],[[13067,13067],\"mapped\",[12459,12452,12522]],[[13068,13068],\"mapped\",[12459,12521,12483,12488]],[[13069,13069],\"mapped\",[12459,12525,12522,12540]],[[13070,13070],\"mapped\",[12460,12525,12531]],[[13071,13071],\"mapped\",[12460,12531,12510]],[[13072,13072],\"mapped\",[12462,12460]],[[13073,13073],\"mapped\",[12462,12491,12540]],[[13074,13074],\"mapped\",[12461,12517,12522,12540]],[[13075,13075],\"mapped\",[12462,12523,12480,12540]],[[13076,13076],\"mapped\",[12461,12525]],[[13077,13077],\"mapped\",[12461,12525,12464,12521,12512]],[[13078,13078],\"mapped\",[12461,12525,12513,12540,12488,12523]],[[13079,13079],\"mapped\",[12461,12525,12527,12483,12488]],[[13080,13080],\"mapped\",[12464,12521,12512]],[[13081,13081],\"mapped\",[12464,12521,12512,12488,12531]],[[13082,13082],\"mapped\",[12463,12523,12476,12452,12525]],[[13083,13083],\"mapped\",[12463,12525,12540,12493]],[[13084,13084],\"mapped\",[12465,12540,12473]],[[13085,13085],\"mapped\",[12467,12523,12490]],[[13086,13086],\"mapped\",[12467,12540,12509]],[[13087,13087],\"mapped\",[12469,12452,12463,12523]],[[13088,13088],\"mapped\",[12469,12531,12481,12540,12512]],[[13089,13089],\"mapped\",[12471,12522,12531,12464]],[[13090,13090],\"mapped\",[12475,12531,12481]],[[13091,13091],\"mapped\",[12475,12531,12488]],[[13092,13092],\"mapped\",[12480,12540,12473]],[[13093,13093],\"mapped\",[12487,12471]],[[13094,13094],\"mapped\",[12489,12523]],[[13095,13095],\"mapped\",[12488,12531]],[[13096,13096],\"mapped\",[12490,12494]],[[13097,13097],\"mapped\",[12494,12483,12488]],[[13098,13098],\"mapped\",[12495,12452,12484]],[[13099,13099],\"mapped\",[12497,12540,12475,12531,12488]],[[13100,13100],\"mapped\",[12497,12540,12484]],[[13101,13101],\"mapped\",[12496,12540,12524,12523]],[[13102,13102],\"mapped\",[12500,12450,12473,12488,12523]],[[13103,13103],\"mapped\",[12500,12463,12523]],[[13104,13104],\"mapped\",[12500,12467]],[[13105,13105],\"mapped\",[12499,12523]],[[13106,13106],\"mapped\",[12501,12449,12521,12483,12489]],[[13107,13107],\"mapped\",[12501,12451,12540,12488]],[[13108,13108],\"mapped\",[12502,12483,12471,12455,12523]],[[13109,13109],\"mapped\",[12501,12521,12531]],[[13110,13110],\"mapped\",[12504,12463,12479,12540,12523]],[[13111,13111],\"mapped\",[12506,12477]],[[13112,13112],\"mapped\",[12506,12491,12498]],[[13113,13113],\"mapped\",[12504,12523,12484]],[[13114,13114],\"mapped\",[12506,12531,12473]],[[13115,13115],\"mapped\",[12506,12540,12472]],[[13116,13116],\"mapped\",[12505,12540,12479]],[[13117,13117],\"mapped\",[12509,12452,12531,12488]],[[13118,13118],\"mapped\",[12508,12523,12488]],[[13119,13119],\"mapped\",[12507,12531]],[[13120,13120],\"mapped\",[12509,12531,12489]],[[13121,13121],\"mapped\",[12507,12540,12523]],[[13122,13122],\"mapped\",[12507,12540,12531]],[[13123,13123],\"mapped\",[12510,12452,12463,12525]],[[13124,13124],\"mapped\",[12510,12452,12523]],[[13125,13125],\"mapped\",[12510,12483,12495]],[[13126,13126],\"mapped\",[12510,12523,12463]],[[13127,13127],\"mapped\",[12510,12531,12471,12519,12531]],[[13128,13128],\"mapped\",[12511,12463,12525,12531]],[[13129,13129],\"mapped\",[12511,12522]],[[13130,13130],\"mapped\",[12511,12522,12496,12540,12523]],[[13131,13131],\"mapped\",[12513,12460]],[[13132,13132],\"mapped\",[12513,12460,12488,12531]],[[13133,13133],\"mapped\",[12513,12540,12488,12523]],[[13134,13134],\"mapped\",[12516,12540,12489]],[[13135,13135],\"mapped\",[12516,12540,12523]],[[13136,13136],\"mapped\",[12518,12450,12531]],[[13137,13137],\"mapped\",[12522,12483,12488,12523]],[[13138,13138],\"mapped\",[12522,12521]],[[13139,13139],\"mapped\",[12523,12500,12540]],[[13140,13140],\"mapped\",[12523,12540,12502,12523]],[[13141,13141],\"mapped\",[12524,12512]],[[13142,13142],\"mapped\",[12524,12531,12488,12466,12531]],[[13143,13143],\"mapped\",[12527,12483,12488]],[[13144,13144],\"mapped\",[48,28857]],[[13145,13145],\"mapped\",[49,28857]],[[13146,13146],\"mapped\",[50,28857]],[[13147,13147],\"mapped\",[51,28857]],[[13148,13148],\"mapped\",[52,28857]],[[13149,13149],\"mapped\",[53,28857]],[[13150,13150],\"mapped\",[54,28857]],[[13151,13151],\"mapped\",[55,28857]],[[13152,13152],\"mapped\",[56,28857]],[[13153,13153],\"mapped\",[57,28857]],[[13154,13154],\"mapped\",[49,48,28857]],[[13155,13155],\"mapped\",[49,49,28857]],[[13156,13156],\"mapped\",[49,50,28857]],[[13157,13157],\"mapped\",[49,51,28857]],[[13158,13158],\"mapped\",[49,52,28857]],[[13159,13159],\"mapped\",[49,53,28857]],[[13160,13160],\"mapped\",[49,54,28857]],[[13161,13161],\"mapped\",[49,55,28857]],[[13162,13162],\"mapped\",[49,56,28857]],[[13163,13163],\"mapped\",[49,57,28857]],[[13164,13164],\"mapped\",[50,48,28857]],[[13165,13165],\"mapped\",[50,49,28857]],[[13166,13166],\"mapped\",[50,50,28857]],[[13167,13167],\"mapped\",[50,51,28857]],[[13168,13168],\"mapped\",[50,52,28857]],[[13169,13169],\"mapped\",[104,112,97]],[[13170,13170],\"mapped\",[100,97]],[[13171,13171],\"mapped\",[97,117]],[[13172,13172],\"mapped\",[98,97,114]],[[13173,13173],\"mapped\",[111,118]],[[13174,13174],\"mapped\",[112,99]],[[13175,13175],\"mapped\",[100,109]],[[13176,13176],\"mapped\",[100,109,50]],[[13177,13177],\"mapped\",[100,109,51]],[[13178,13178],\"mapped\",[105,117]],[[13179,13179],\"mapped\",[24179,25104]],[[13180,13180],\"mapped\",[26157,21644]],[[13181,13181],\"mapped\",[22823,27491]],[[13182,13182],\"mapped\",[26126,27835]],[[13183,13183],\"mapped\",[26666,24335,20250,31038]],[[13184,13184],\"mapped\",[112,97]],[[13185,13185],\"mapped\",[110,97]],[[13186,13186],\"mapped\",[956,97]],[[13187,13187],\"mapped\",[109,97]],[[13188,13188],\"mapped\",[107,97]],[[13189,13189],\"mapped\",[107,98]],[[13190,13190],\"mapped\",[109,98]],[[13191,13191],\"mapped\",[103,98]],[[13192,13192],\"mapped\",[99,97,108]],[[13193,13193],\"mapped\",[107,99,97,108]],[[13194,13194],\"mapped\",[112,102]],[[13195,13195],\"mapped\",[110,102]],[[13196,13196],\"mapped\",[956,102]],[[13197,13197],\"mapped\",[956,103]],[[13198,13198],\"mapped\",[109,103]],[[13199,13199],\"mapped\",[107,103]],[[13200,13200],\"mapped\",[104,122]],[[13201,13201],\"mapped\",[107,104,122]],[[13202,13202],\"mapped\",[109,104,122]],[[13203,13203],\"mapped\",[103,104,122]],[[13204,13204],\"mapped\",[116,104,122]],[[13205,13205],\"mapped\",[956,108]],[[13206,13206],\"mapped\",[109,108]],[[13207,13207],\"mapped\",[100,108]],[[13208,13208],\"mapped\",[107,108]],[[13209,13209],\"mapped\",[102,109]],[[13210,13210],\"mapped\",[110,109]],[[13211,13211],\"mapped\",[956,109]],[[13212,13212],\"mapped\",[109,109]],[[13213,13213],\"mapped\",[99,109]],[[13214,13214],\"mapped\",[107,109]],[[13215,13215],\"mapped\",[109,109,50]],[[13216,13216],\"mapped\",[99,109,50]],[[13217,13217],\"mapped\",[109,50]],[[13218,13218],\"mapped\",[107,109,50]],[[13219,13219],\"mapped\",[109,109,51]],[[13220,13220],\"mapped\",[99,109,51]],[[13221,13221],\"mapped\",[109,51]],[[13222,13222],\"mapped\",[107,109,51]],[[13223,13223],\"mapped\",[109,8725,115]],[[13224,13224],\"mapped\",[109,8725,115,50]],[[13225,13225],\"mapped\",[112,97]],[[13226,13226],\"mapped\",[107,112,97]],[[13227,13227],\"mapped\",[109,112,97]],[[13228,13228],\"mapped\",[103,112,97]],[[13229,13229],\"mapped\",[114,97,100]],[[13230,13230],\"mapped\",[114,97,100,8725,115]],[[13231,13231],\"mapped\",[114,97,100,8725,115,50]],[[13232,13232],\"mapped\",[112,115]],[[13233,13233],\"mapped\",[110,115]],[[13234,13234],\"mapped\",[956,115]],[[13235,13235],\"mapped\",[109,115]],[[13236,13236],\"mapped\",[112,118]],[[13237,13237],\"mapped\",[110,118]],[[13238,13238],\"mapped\",[956,118]],[[13239,13239],\"mapped\",[109,118]],[[13240,13240],\"mapped\",[107,118]],[[13241,13241],\"mapped\",[109,118]],[[13242,13242],\"mapped\",[112,119]],[[13243,13243],\"mapped\",[110,119]],[[13244,13244],\"mapped\",[956,119]],[[13245,13245],\"mapped\",[109,119]],[[13246,13246],\"mapped\",[107,119]],[[13247,13247],\"mapped\",[109,119]],[[13248,13248],\"mapped\",[107,969]],[[13249,13249],\"mapped\",[109,969]],[[13250,13250],\"disallowed\"],[[13251,13251],\"mapped\",[98,113]],[[13252,13252],\"mapped\",[99,99]],[[13253,13253],\"mapped\",[99,100]],[[13254,13254],\"mapped\",[99,8725,107,103]],[[13255,13255],\"disallowed\"],[[13256,13256],\"mapped\",[100,98]],[[13257,13257],\"mapped\",[103,121]],[[13258,13258],\"mapped\",[104,97]],[[13259,13259],\"mapped\",[104,112]],[[13260,13260],\"mapped\",[105,110]],[[13261,13261],\"mapped\",[107,107]],[[13262,13262],\"mapped\",[107,109]],[[13263,13263],\"mapped\",[107,116]],[[13264,13264],\"mapped\",[108,109]],[[13265,13265],\"mapped\",[108,110]],[[13266,13266],\"mapped\",[108,111,103]],[[13267,13267],\"mapped\",[108,120]],[[13268,13268],\"mapped\",[109,98]],[[13269,13269],\"mapped\",[109,105,108]],[[13270,13270],\"mapped\",[109,111,108]],[[13271,13271],\"mapped\",[112,104]],[[13272,13272],\"disallowed\"],[[13273,13273],\"mapped\",[112,112,109]],[[13274,13274],\"mapped\",[112,114]],[[13275,13275],\"mapped\",[115,114]],[[13276,13276],\"mapped\",[115,118]],[[13277,13277],\"mapped\",[119,98]],[[13278,13278],\"mapped\",[118,8725,109]],[[13279,13279],\"mapped\",[97,8725,109]],[[13280,13280],\"mapped\",[49,26085]],[[13281,13281],\"mapped\",[50,26085]],[[13282,13282],\"mapped\",[51,26085]],[[13283,13283],\"mapped\",[52,26085]],[[13284,13284],\"mapped\",[53,26085]],[[13285,13285],\"mapped\",[54,26085]],[[13286,13286],\"mapped\",[55,26085]],[[13287,13287],\"mapped\",[56,26085]],[[13288,13288],\"mapped\",[57,26085]],[[13289,13289],\"mapped\",[49,48,26085]],[[13290,13290],\"mapped\",[49,49,26085]],[[13291,13291],\"mapped\",[49,50,26085]],[[13292,13292],\"mapped\",[49,51,26085]],[[13293,13293],\"mapped\",[49,52,26085]],[[13294,13294],\"mapped\",[49,53,26085]],[[13295,13295],\"mapped\",[49,54,26085]],[[13296,13296],\"mapped\",[49,55,26085]],[[13297,13297],\"mapped\",[49,56,26085]],[[13298,13298],\"mapped\",[49,57,26085]],[[13299,13299],\"mapped\",[50,48,26085]],[[13300,13300],\"mapped\",[50,49,26085]],[[13301,13301],\"mapped\",[50,50,26085]],[[13302,13302],\"mapped\",[50,51,26085]],[[13303,13303],\"mapped\",[50,52,26085]],[[13304,13304],\"mapped\",[50,53,26085]],[[13305,13305],\"mapped\",[50,54,26085]],[[13306,13306],\"mapped\",[50,55,26085]],[[13307,13307],\"mapped\",[50,56,26085]],[[13308,13308],\"mapped\",[50,57,26085]],[[13309,13309],\"mapped\",[51,48,26085]],[[13310,13310],\"mapped\",[51,49,26085]],[[13311,13311],\"mapped\",[103,97,108]],[[13312,19893],\"valid\"],[[19894,19903],\"disallowed\"],[[19904,19967],\"valid\",[],\"NV8\"],[[19968,40869],\"valid\"],[[40870,40891],\"valid\"],[[40892,40899],\"valid\"],[[40900,40907],\"valid\"],[[40908,40908],\"valid\"],[[40909,40917],\"valid\"],[[40918,40959],\"disallowed\"],[[40960,42124],\"valid\"],[[42125,42127],\"disallowed\"],[[42128,42145],\"valid\",[],\"NV8\"],[[42146,42147],\"valid\",[],\"NV8\"],[[42148,42163],\"valid\",[],\"NV8\"],[[42164,42164],\"valid\",[],\"NV8\"],[[42165,42176],\"valid\",[],\"NV8\"],[[42177,42177],\"valid\",[],\"NV8\"],[[42178,42180],\"valid\",[],\"NV8\"],[[42181,42181],\"valid\",[],\"NV8\"],[[42182,42182],\"valid\",[],\"NV8\"],[[42183,42191],\"disallowed\"],[[42192,42237],\"valid\"],[[42238,42239],\"valid\",[],\"NV8\"],[[42240,42508],\"valid\"],[[42509,42511],\"valid\",[],\"NV8\"],[[42512,42539],\"valid\"],[[42540,42559],\"disallowed\"],[[42560,42560],\"mapped\",[42561]],[[42561,42561],\"valid\"],[[42562,42562],\"mapped\",[42563]],[[42563,42563],\"valid\"],[[42564,42564],\"mapped\",[42565]],[[42565,42565],\"valid\"],[[42566,42566],\"mapped\",[42567]],[[42567,42567],\"valid\"],[[42568,42568],\"mapped\",[42569]],[[42569,42569],\"valid\"],[[42570,42570],\"mapped\",[42571]],[[42571,42571],\"valid\"],[[42572,42572],\"mapped\",[42573]],[[42573,42573],\"valid\"],[[42574,42574],\"mapped\",[42575]],[[42575,42575],\"valid\"],[[42576,42576],\"mapped\",[42577]],[[42577,42577],\"valid\"],[[42578,42578],\"mapped\",[42579]],[[42579,42579],\"valid\"],[[42580,42580],\"mapped\",[42581]],[[42581,42581],\"valid\"],[[42582,42582],\"mapped\",[42583]],[[42583,42583],\"valid\"],[[42584,42584],\"mapped\",[42585]],[[42585,42585],\"valid\"],[[42586,42586],\"mapped\",[42587]],[[42587,42587],\"valid\"],[[42588,42588],\"mapped\",[42589]],[[42589,42589],\"valid\"],[[42590,42590],\"mapped\",[42591]],[[42591,42591],\"valid\"],[[42592,42592],\"mapped\",[42593]],[[42593,42593],\"valid\"],[[42594,42594],\"mapped\",[42595]],[[42595,42595],\"valid\"],[[42596,42596],\"mapped\",[42597]],[[42597,42597],\"valid\"],[[42598,42598],\"mapped\",[42599]],[[42599,42599],\"valid\"],[[42600,42600],\"mapped\",[42601]],[[42601,42601],\"valid\"],[[42602,42602],\"mapped\",[42603]],[[42603,42603],\"valid\"],[[42604,42604],\"mapped\",[42605]],[[42605,42607],\"valid\"],[[42608,42611],\"valid\",[],\"NV8\"],[[42612,42619],\"valid\"],[[42620,42621],\"valid\"],[[42622,42622],\"valid\",[],\"NV8\"],[[42623,42623],\"valid\"],[[42624,42624],\"mapped\",[42625]],[[42625,42625],\"valid\"],[[42626,42626],\"mapped\",[42627]],[[42627,42627],\"valid\"],[[42628,42628],\"mapped\",[42629]],[[42629,42629],\"valid\"],[[42630,42630],\"mapped\",[42631]],[[42631,42631],\"valid\"],[[42632,42632],\"mapped\",[42633]],[[42633,42633],\"valid\"],[[42634,42634],\"mapped\",[42635]],[[42635,42635],\"valid\"],[[42636,42636],\"mapped\",[42637]],[[42637,42637],\"valid\"],[[42638,42638],\"mapped\",[42639]],[[42639,42639],\"valid\"],[[42640,42640],\"mapped\",[42641]],[[42641,42641],\"valid\"],[[42642,42642],\"mapped\",[42643]],[[42643,42643],\"valid\"],[[42644,42644],\"mapped\",[42645]],[[42645,42645],\"valid\"],[[42646,42646],\"mapped\",[42647]],[[42647,42647],\"valid\"],[[42648,42648],\"mapped\",[42649]],[[42649,42649],\"valid\"],[[42650,42650],\"mapped\",[42651]],[[42651,42651],\"valid\"],[[42652,42652],\"mapped\",[1098]],[[42653,42653],\"mapped\",[1100]],[[42654,42654],\"valid\"],[[42655,42655],\"valid\"],[[42656,42725],\"valid\"],[[42726,42735],\"valid\",[],\"NV8\"],[[42736,42737],\"valid\"],[[42738,42743],\"valid\",[],\"NV8\"],[[42744,42751],\"disallowed\"],[[42752,42774],\"valid\",[],\"NV8\"],[[42775,42778],\"valid\"],[[42779,42783],\"valid\"],[[42784,42785],\"valid\",[],\"NV8\"],[[42786,42786],\"mapped\",[42787]],[[42787,42787],\"valid\"],[[42788,42788],\"mapped\",[42789]],[[42789,42789],\"valid\"],[[42790,42790],\"mapped\",[42791]],[[42791,42791],\"valid\"],[[42792,42792],\"mapped\",[42793]],[[42793,42793],\"valid\"],[[42794,42794],\"mapped\",[42795]],[[42795,42795],\"valid\"],[[42796,42796],\"mapped\",[42797]],[[42797,42797],\"valid\"],[[42798,42798],\"mapped\",[42799]],[[42799,42801],\"valid\"],[[42802,42802],\"mapped\",[42803]],[[42803,42803],\"valid\"],[[42804,42804],\"mapped\",[42805]],[[42805,42805],\"valid\"],[[42806,42806],\"mapped\",[42807]],[[42807,42807],\"valid\"],[[42808,42808],\"mapped\",[42809]],[[42809,42809],\"valid\"],[[42810,42810],\"mapped\",[42811]],[[42811,42811],\"valid\"],[[42812,42812],\"mapped\",[42813]],[[42813,42813],\"valid\"],[[42814,42814],\"mapped\",[42815]],[[42815,42815],\"valid\"],[[42816,42816],\"mapped\",[42817]],[[42817,42817],\"valid\"],[[42818,42818],\"mapped\",[42819]],[[42819,42819],\"valid\"],[[42820,42820],\"mapped\",[42821]],[[42821,42821],\"valid\"],[[42822,42822],\"mapped\",[42823]],[[42823,42823],\"valid\"],[[42824,42824],\"mapped\",[42825]],[[42825,42825],\"valid\"],[[42826,42826],\"mapped\",[42827]],[[42827,42827],\"valid\"],[[42828,42828],\"mapped\",[42829]],[[42829,42829],\"valid\"],[[42830,42830],\"mapped\",[42831]],[[42831,42831],\"valid\"],[[42832,42832],\"mapped\",[42833]],[[42833,42833],\"valid\"],[[42834,42834],\"mapped\",[42835]],[[42835,42835],\"valid\"],[[42836,42836],\"mapped\",[42837]],[[42837,42837],\"valid\"],[[42838,42838],\"mapped\",[42839]],[[42839,42839],\"valid\"],[[42840,42840],\"mapped\",[42841]],[[42841,42841],\"valid\"],[[42842,42842],\"mapped\",[42843]],[[42843,42843],\"valid\"],[[42844,42844],\"mapped\",[42845]],[[42845,42845],\"valid\"],[[42846,42846],\"mapped\",[42847]],[[42847,42847],\"valid\"],[[42848,42848],\"mapped\",[42849]],[[42849,42849],\"valid\"],[[42850,42850],\"mapped\",[42851]],[[42851,42851],\"valid\"],[[42852,42852],\"mapped\",[42853]],[[42853,42853],\"valid\"],[[42854,42854],\"mapped\",[42855]],[[42855,42855],\"valid\"],[[42856,42856],\"mapped\",[42857]],[[42857,42857],\"valid\"],[[42858,42858],\"mapped\",[42859]],[[42859,42859],\"valid\"],[[42860,42860],\"mapped\",[42861]],[[42861,42861],\"valid\"],[[42862,42862],\"mapped\",[42863]],[[42863,42863],\"valid\"],[[42864,42864],\"mapped\",[42863]],[[42865,42872],\"valid\"],[[42873,42873],\"mapped\",[42874]],[[42874,42874],\"valid\"],[[42875,42875],\"mapped\",[42876]],[[42876,42876],\"valid\"],[[42877,42877],\"mapped\",[7545]],[[42878,42878],\"mapped\",[42879]],[[42879,42879],\"valid\"],[[42880,42880],\"mapped\",[42881]],[[42881,42881],\"valid\"],[[42882,42882],\"mapped\",[42883]],[[42883,42883],\"valid\"],[[42884,42884],\"mapped\",[42885]],[[42885,42885],\"valid\"],[[42886,42886],\"mapped\",[42887]],[[42887,42888],\"valid\"],[[42889,42890],\"valid\",[],\"NV8\"],[[42891,42891],\"mapped\",[42892]],[[42892,42892],\"valid\"],[[42893,42893],\"mapped\",[613]],[[42894,42894],\"valid\"],[[42895,42895],\"valid\"],[[42896,42896],\"mapped\",[42897]],[[42897,42897],\"valid\"],[[42898,42898],\"mapped\",[42899]],[[42899,42899],\"valid\"],[[42900,42901],\"valid\"],[[42902,42902],\"mapped\",[42903]],[[42903,42903],\"valid\"],[[42904,42904],\"mapped\",[42905]],[[42905,42905],\"valid\"],[[42906,42906],\"mapped\",[42907]],[[42907,42907],\"valid\"],[[42908,42908],\"mapped\",[42909]],[[42909,42909],\"valid\"],[[42910,42910],\"mapped\",[42911]],[[42911,42911],\"valid\"],[[42912,42912],\"mapped\",[42913]],[[42913,42913],\"valid\"],[[42914,42914],\"mapped\",[42915]],[[42915,42915],\"valid\"],[[42916,42916],\"mapped\",[42917]],[[42917,42917],\"valid\"],[[42918,42918],\"mapped\",[42919]],[[42919,42919],\"valid\"],[[42920,42920],\"mapped\",[42921]],[[42921,42921],\"valid\"],[[42922,42922],\"mapped\",[614]],[[42923,42923],\"mapped\",[604]],[[42924,42924],\"mapped\",[609]],[[42925,42925],\"mapped\",[620]],[[42926,42927],\"disallowed\"],[[42928,42928],\"mapped\",[670]],[[42929,42929],\"mapped\",[647]],[[42930,42930],\"mapped\",[669]],[[42931,42931],\"mapped\",[43859]],[[42932,42932],\"mapped\",[42933]],[[42933,42933],\"valid\"],[[42934,42934],\"mapped\",[42935]],[[42935,42935],\"valid\"],[[42936,42998],\"disallowed\"],[[42999,42999],\"valid\"],[[43000,43000],\"mapped\",[295]],[[43001,43001],\"mapped\",[339]],[[43002,43002],\"valid\"],[[43003,43007],\"valid\"],[[43008,43047],\"valid\"],[[43048,43051],\"valid\",[],\"NV8\"],[[43052,43055],\"disallowed\"],[[43056,43065],\"valid\",[],\"NV8\"],[[43066,43071],\"disallowed\"],[[43072,43123],\"valid\"],[[43124,43127],\"valid\",[],\"NV8\"],[[43128,43135],\"disallowed\"],[[43136,43204],\"valid\"],[[43205,43213],\"disallowed\"],[[43214,43215],\"valid\",[],\"NV8\"],[[43216,43225],\"valid\"],[[43226,43231],\"disallowed\"],[[43232,43255],\"valid\"],[[43256,43258],\"valid\",[],\"NV8\"],[[43259,43259],\"valid\"],[[43260,43260],\"valid\",[],\"NV8\"],[[43261,43261],\"valid\"],[[43262,43263],\"disallowed\"],[[43264,43309],\"valid\"],[[43310,43311],\"valid\",[],\"NV8\"],[[43312,43347],\"valid\"],[[43348,43358],\"disallowed\"],[[43359,43359],\"valid\",[],\"NV8\"],[[43360,43388],\"valid\",[],\"NV8\"],[[43389,43391],\"disallowed\"],[[43392,43456],\"valid\"],[[43457,43469],\"valid\",[],\"NV8\"],[[43470,43470],\"disallowed\"],[[43471,43481],\"valid\"],[[43482,43485],\"disallowed\"],[[43486,43487],\"valid\",[],\"NV8\"],[[43488,43518],\"valid\"],[[43519,43519],\"disallowed\"],[[43520,43574],\"valid\"],[[43575,43583],\"disallowed\"],[[43584,43597],\"valid\"],[[43598,43599],\"disallowed\"],[[43600,43609],\"valid\"],[[43610,43611],\"disallowed\"],[[43612,43615],\"valid\",[],\"NV8\"],[[43616,43638],\"valid\"],[[43639,43641],\"valid\",[],\"NV8\"],[[43642,43643],\"valid\"],[[43644,43647],\"valid\"],[[43648,43714],\"valid\"],[[43715,43738],\"disallowed\"],[[43739,43741],\"valid\"],[[43742,43743],\"valid\",[],\"NV8\"],[[43744,43759],\"valid\"],[[43760,43761],\"valid\",[],\"NV8\"],[[43762,43766],\"valid\"],[[43767,43776],\"disallowed\"],[[43777,43782],\"valid\"],[[43783,43784],\"disallowed\"],[[43785,43790],\"valid\"],[[43791,43792],\"disallowed\"],[[43793,43798],\"valid\"],[[43799,43807],\"disallowed\"],[[43808,43814],\"valid\"],[[43815,43815],\"disallowed\"],[[43816,43822],\"valid\"],[[43823,43823],\"disallowed\"],[[43824,43866],\"valid\"],[[43867,43867],\"valid\",[],\"NV8\"],[[43868,43868],\"mapped\",[42791]],[[43869,43869],\"mapped\",[43831]],[[43870,43870],\"mapped\",[619]],[[43871,43871],\"mapped\",[43858]],[[43872,43875],\"valid\"],[[43876,43877],\"valid\"],[[43878,43887],\"disallowed\"],[[43888,43888],\"mapped\",[5024]],[[43889,43889],\"mapped\",[5025]],[[43890,43890],\"mapped\",[5026]],[[43891,43891],\"mapped\",[5027]],[[43892,43892],\"mapped\",[5028]],[[43893,43893],\"mapped\",[5029]],[[43894,43894],\"mapped\",[5030]],[[43895,43895],\"mapped\",[5031]],[[43896,43896],\"mapped\",[5032]],[[43897,43897],\"mapped\",[5033]],[[43898,43898],\"mapped\",[5034]],[[43899,43899],\"mapped\",[5035]],[[43900,43900],\"mapped\",[5036]],[[43901,43901],\"mapped\",[5037]],[[43902,43902],\"mapped\",[5038]],[[43903,43903],\"mapped\",[5039]],[[43904,43904],\"mapped\",[5040]],[[43905,43905],\"mapped\",[5041]],[[43906,43906],\"mapped\",[5042]],[[43907,43907],\"mapped\",[5043]],[[43908,43908],\"mapped\",[5044]],[[43909,43909],\"mapped\",[5045]],[[43910,43910],\"mapped\",[5046]],[[43911,43911],\"mapped\",[5047]],[[43912,43912],\"mapped\",[5048]],[[43913,43913],\"mapped\",[5049]],[[43914,43914],\"mapped\",[5050]],[[43915,43915],\"mapped\",[5051]],[[43916,43916],\"mapped\",[5052]],[[43917,43917],\"mapped\",[5053]],[[43918,43918],\"mapped\",[5054]],[[43919,43919],\"mapped\",[5055]],[[43920,43920],\"mapped\",[5056]],[[43921,43921],\"mapped\",[5057]],[[43922,43922],\"mapped\",[5058]],[[43923,43923],\"mapped\",[5059]],[[43924,43924],\"mapped\",[5060]],[[43925,43925],\"mapped\",[5061]],[[43926,43926],\"mapped\",[5062]],[[43927,43927],\"mapped\",[5063]],[[43928,43928],\"mapped\",[5064]],[[43929,43929],\"mapped\",[5065]],[[43930,43930],\"mapped\",[5066]],[[43931,43931],\"mapped\",[5067]],[[43932,43932],\"mapped\",[5068]],[[43933,43933],\"mapped\",[5069]],[[43934,43934],\"mapped\",[5070]],[[43935,43935],\"mapped\",[5071]],[[43936,43936],\"mapped\",[5072]],[[43937,43937],\"mapped\",[5073]],[[43938,43938],\"mapped\",[5074]],[[43939,43939],\"mapped\",[5075]],[[43940,43940],\"mapped\",[5076]],[[43941,43941],\"mapped\",[5077]],[[43942,43942],\"mapped\",[5078]],[[43943,43943],\"mapped\",[5079]],[[43944,43944],\"mapped\",[5080]],[[43945,43945],\"mapped\",[5081]],[[43946,43946],\"mapped\",[5082]],[[43947,43947],\"mapped\",[5083]],[[43948,43948],\"mapped\",[5084]],[[43949,43949],\"mapped\",[5085]],[[43950,43950],\"mapped\",[5086]],[[43951,43951],\"mapped\",[5087]],[[43952,43952],\"mapped\",[5088]],[[43953,43953],\"mapped\",[5089]],[[43954,43954],\"mapped\",[5090]],[[43955,43955],\"mapped\",[5091]],[[43956,43956],\"mapped\",[5092]],[[43957,43957],\"mapped\",[5093]],[[43958,43958],\"mapped\",[5094]],[[43959,43959],\"mapped\",[5095]],[[43960,43960],\"mapped\",[5096]],[[43961,43961],\"mapped\",[5097]],[[43962,43962],\"mapped\",[5098]],[[43963,43963],\"mapped\",[5099]],[[43964,43964],\"mapped\",[5100]],[[43965,43965],\"mapped\",[5101]],[[43966,43966],\"mapped\",[5102]],[[43967,43967],\"mapped\",[5103]],[[43968,44010],\"valid\"],[[44011,44011],\"valid\",[],\"NV8\"],[[44012,44013],\"valid\"],[[44014,44015],\"disallowed\"],[[44016,44025],\"valid\"],[[44026,44031],\"disallowed\"],[[44032,55203],\"valid\"],[[55204,55215],\"disallowed\"],[[55216,55238],\"valid\",[],\"NV8\"],[[55239,55242],\"disallowed\"],[[55243,55291],\"valid\",[],\"NV8\"],[[55292,55295],\"disallowed\"],[[55296,57343],\"disallowed\"],[[57344,63743],\"disallowed\"],[[63744,63744],\"mapped\",[35912]],[[63745,63745],\"mapped\",[26356]],[[63746,63746],\"mapped\",[36554]],[[63747,63747],\"mapped\",[36040]],[[63748,63748],\"mapped\",[28369]],[[63749,63749],\"mapped\",[20018]],[[63750,63750],\"mapped\",[21477]],[[63751,63752],\"mapped\",[40860]],[[63753,63753],\"mapped\",[22865]],[[63754,63754],\"mapped\",[37329]],[[63755,63755],\"mapped\",[21895]],[[63756,63756],\"mapped\",[22856]],[[63757,63757],\"mapped\",[25078]],[[63758,63758],\"mapped\",[30313]],[[63759,63759],\"mapped\",[32645]],[[63760,63760],\"mapped\",[34367]],[[63761,63761],\"mapped\",[34746]],[[63762,63762],\"mapped\",[35064]],[[63763,63763],\"mapped\",[37007]],[[63764,63764],\"mapped\",[27138]],[[63765,63765],\"mapped\",[27931]],[[63766,63766],\"mapped\",[28889]],[[63767,63767],\"mapped\",[29662]],[[63768,63768],\"mapped\",[33853]],[[63769,63769],\"mapped\",[37226]],[[63770,63770],\"mapped\",[39409]],[[63771,63771],\"mapped\",[20098]],[[63772,63772],\"mapped\",[21365]],[[63773,63773],\"mapped\",[27396]],[[63774,63774],\"mapped\",[29211]],[[63775,63775],\"mapped\",[34349]],[[63776,63776],\"mapped\",[40478]],[[63777,63777],\"mapped\",[23888]],[[63778,63778],\"mapped\",[28651]],[[63779,63779],\"mapped\",[34253]],[[63780,63780],\"mapped\",[35172]],[[63781,63781],\"mapped\",[25289]],[[63782,63782],\"mapped\",[33240]],[[63783,63783],\"mapped\",[34847]],[[63784,63784],\"mapped\",[24266]],[[63785,63785],\"mapped\",[26391]],[[63786,63786],\"mapped\",[28010]],[[63787,63787],\"mapped\",[29436]],[[63788,63788],\"mapped\",[37070]],[[63789,63789],\"mapped\",[20358]],[[63790,63790],\"mapped\",[20919]],[[63791,63791],\"mapped\",[21214]],[[63792,63792],\"mapped\",[25796]],[[63793,63793],\"mapped\",[27347]],[[63794,63794],\"mapped\",[29200]],[[63795,63795],\"mapped\",[30439]],[[63796,63796],\"mapped\",[32769]],[[63797,63797],\"mapped\",[34310]],[[63798,63798],\"mapped\",[34396]],[[63799,63799],\"mapped\",[36335]],[[63800,63800],\"mapped\",[38706]],[[63801,63801],\"mapped\",[39791]],[[63802,63802],\"mapped\",[40442]],[[63803,63803],\"mapped\",[30860]],[[63804,63804],\"mapped\",[31103]],[[63805,63805],\"mapped\",[32160]],[[63806,63806],\"mapped\",[33737]],[[63807,63807],\"mapped\",[37636]],[[63808,63808],\"mapped\",[40575]],[[63809,63809],\"mapped\",[35542]],[[63810,63810],\"mapped\",[22751]],[[63811,63811],\"mapped\",[24324]],[[63812,63812],\"mapped\",[31840]],[[63813,63813],\"mapped\",[32894]],[[63814,63814],\"mapped\",[29282]],[[63815,63815],\"mapped\",[30922]],[[63816,63816],\"mapped\",[36034]],[[63817,63817],\"mapped\",[38647]],[[63818,63818],\"mapped\",[22744]],[[63819,63819],\"mapped\",[23650]],[[63820,63820],\"mapped\",[27155]],[[63821,63821],\"mapped\",[28122]],[[63822,63822],\"mapped\",[28431]],[[63823,63823],\"mapped\",[32047]],[[63824,63824],\"mapped\",[32311]],[[63825,63825],\"mapped\",[38475]],[[63826,63826],\"mapped\",[21202]],[[63827,63827],\"mapped\",[32907]],[[63828,63828],\"mapped\",[20956]],[[63829,63829],\"mapped\",[20940]],[[63830,63830],\"mapped\",[31260]],[[63831,63831],\"mapped\",[32190]],[[63832,63832],\"mapped\",[33777]],[[63833,63833],\"mapped\",[38517]],[[63834,63834],\"mapped\",[35712]],[[63835,63835],\"mapped\",[25295]],[[63836,63836],\"mapped\",[27138]],[[63837,63837],\"mapped\",[35582]],[[63838,63838],\"mapped\",[20025]],[[63839,63839],\"mapped\",[23527]],[[63840,63840],\"mapped\",[24594]],[[63841,63841],\"mapped\",[29575]],[[63842,63842],\"mapped\",[30064]],[[63843,63843],\"mapped\",[21271]],[[63844,63844],\"mapped\",[30971]],[[63845,63845],\"mapped\",[20415]],[[63846,63846],\"mapped\",[24489]],[[63847,63847],\"mapped\",[19981]],[[63848,63848],\"mapped\",[27852]],[[63849,63849],\"mapped\",[25976]],[[63850,63850],\"mapped\",[32034]],[[63851,63851],\"mapped\",[21443]],[[63852,63852],\"mapped\",[22622]],[[63853,63853],\"mapped\",[30465]],[[63854,63854],\"mapped\",[33865]],[[63855,63855],\"mapped\",[35498]],[[63856,63856],\"mapped\",[27578]],[[63857,63857],\"mapped\",[36784]],[[63858,63858],\"mapped\",[27784]],[[63859,63859],\"mapped\",[25342]],[[63860,63860],\"mapped\",[33509]],[[63861,63861],\"mapped\",[25504]],[[63862,63862],\"mapped\",[30053]],[[63863,63863],\"mapped\",[20142]],[[63864,63864],\"mapped\",[20841]],[[63865,63865],\"mapped\",[20937]],[[63866,63866],\"mapped\",[26753]],[[63867,63867],\"mapped\",[31975]],[[63868,63868],\"mapped\",[33391]],[[63869,63869],\"mapped\",[35538]],[[63870,63870],\"mapped\",[37327]],[[63871,63871],\"mapped\",[21237]],[[63872,63872],\"mapped\",[21570]],[[63873,63873],\"mapped\",[22899]],[[63874,63874],\"mapped\",[24300]],[[63875,63875],\"mapped\",[26053]],[[63876,63876],\"mapped\",[28670]],[[63877,63877],\"mapped\",[31018]],[[63878,63878],\"mapped\",[38317]],[[63879,63879],\"mapped\",[39530]],[[63880,63880],\"mapped\",[40599]],[[63881,63881],\"mapped\",[40654]],[[63882,63882],\"mapped\",[21147]],[[63883,63883],\"mapped\",[26310]],[[63884,63884],\"mapped\",[27511]],[[63885,63885],\"mapped\",[36706]],[[63886,63886],\"mapped\",[24180]],[[63887,63887],\"mapped\",[24976]],[[63888,63888],\"mapped\",[25088]],[[63889,63889],\"mapped\",[25754]],[[63890,63890],\"mapped\",[28451]],[[63891,63891],\"mapped\",[29001]],[[63892,63892],\"mapped\",[29833]],[[63893,63893],\"mapped\",[31178]],[[63894,63894],\"mapped\",[32244]],[[63895,63895],\"mapped\",[32879]],[[63896,63896],\"mapped\",[36646]],[[63897,63897],\"mapped\",[34030]],[[63898,63898],\"mapped\",[36899]],[[63899,63899],\"mapped\",[37706]],[[63900,63900],\"mapped\",[21015]],[[63901,63901],\"mapped\",[21155]],[[63902,63902],\"mapped\",[21693]],[[63903,63903],\"mapped\",[28872]],[[63904,63904],\"mapped\",[35010]],[[63905,63905],\"mapped\",[35498]],[[63906,63906],\"mapped\",[24265]],[[63907,63907],\"mapped\",[24565]],[[63908,63908],\"mapped\",[25467]],[[63909,63909],\"mapped\",[27566]],[[63910,63910],\"mapped\",[31806]],[[63911,63911],\"mapped\",[29557]],[[63912,63912],\"mapped\",[20196]],[[63913,63913],\"mapped\",[22265]],[[63914,63914],\"mapped\",[23527]],[[63915,63915],\"mapped\",[23994]],[[63916,63916],\"mapped\",[24604]],[[63917,63917],\"mapped\",[29618]],[[63918,63918],\"mapped\",[29801]],[[63919,63919],\"mapped\",[32666]],[[63920,63920],\"mapped\",[32838]],[[63921,63921],\"mapped\",[37428]],[[63922,63922],\"mapped\",[38646]],[[63923,63923],\"mapped\",[38728]],[[63924,63924],\"mapped\",[38936]],[[63925,63925],\"mapped\",[20363]],[[63926,63926],\"mapped\",[31150]],[[63927,63927],\"mapped\",[37300]],[[63928,63928],\"mapped\",[38584]],[[63929,63929],\"mapped\",[24801]],[[63930,63930],\"mapped\",[20102]],[[63931,63931],\"mapped\",[20698]],[[63932,63932],\"mapped\",[23534]],[[63933,63933],\"mapped\",[23615]],[[63934,63934],\"mapped\",[26009]],[[63935,63935],\"mapped\",[27138]],[[63936,63936],\"mapped\",[29134]],[[63937,63937],\"mapped\",[30274]],[[63938,63938],\"mapped\",[34044]],[[63939,63939],\"mapped\",[36988]],[[63940,63940],\"mapped\",[40845]],[[63941,63941],\"mapped\",[26248]],[[63942,63942],\"mapped\",[38446]],[[63943,63943],\"mapped\",[21129]],[[63944,63944],\"mapped\",[26491]],[[63945,63945],\"mapped\",[26611]],[[63946,63946],\"mapped\",[27969]],[[63947,63947],\"mapped\",[28316]],[[63948,63948],\"mapped\",[29705]],[[63949,63949],\"mapped\",[30041]],[[63950,63950],\"mapped\",[30827]],[[63951,63951],\"mapped\",[32016]],[[63952,63952],\"mapped\",[39006]],[[63953,63953],\"mapped\",[20845]],[[63954,63954],\"mapped\",[25134]],[[63955,63955],\"mapped\",[38520]],[[63956,63956],\"mapped\",[20523]],[[63957,63957],\"mapped\",[23833]],[[63958,63958],\"mapped\",[28138]],[[63959,63959],\"mapped\",[36650]],[[63960,63960],\"mapped\",[24459]],[[63961,63961],\"mapped\",[24900]],[[63962,63962],\"mapped\",[26647]],[[63963,63963],\"mapped\",[29575]],[[63964,63964],\"mapped\",[38534]],[[63965,63965],\"mapped\",[21033]],[[63966,63966],\"mapped\",[21519]],[[63967,63967],\"mapped\",[23653]],[[63968,63968],\"mapped\",[26131]],[[63969,63969],\"mapped\",[26446]],[[63970,63970],\"mapped\",[26792]],[[63971,63971],\"mapped\",[27877]],[[63972,63972],\"mapped\",[29702]],[[63973,63973],\"mapped\",[30178]],[[63974,63974],\"mapped\",[32633]],[[63975,63975],\"mapped\",[35023]],[[63976,63976],\"mapped\",[35041]],[[63977,63977],\"mapped\",[37324]],[[63978,63978],\"mapped\",[38626]],[[63979,63979],\"mapped\",[21311]],[[63980,63980],\"mapped\",[28346]],[[63981,63981],\"mapped\",[21533]],[[63982,63982],\"mapped\",[29136]],[[63983,63983],\"mapped\",[29848]],[[63984,63984],\"mapped\",[34298]],[[63985,63985],\"mapped\",[38563]],[[63986,63986],\"mapped\",[40023]],[[63987,63987],\"mapped\",[40607]],[[63988,63988],\"mapped\",[26519]],[[63989,63989],\"mapped\",[28107]],[[63990,63990],\"mapped\",[33256]],[[63991,63991],\"mapped\",[31435]],[[63992,63992],\"mapped\",[31520]],[[63993,63993],\"mapped\",[31890]],[[63994,63994],\"mapped\",[29376]],[[63995,63995],\"mapped\",[28825]],[[63996,63996],\"mapped\",[35672]],[[63997,63997],\"mapped\",[20160]],[[63998,63998],\"mapped\",[33590]],[[63999,63999],\"mapped\",[21050]],[[64000,64000],\"mapped\",[20999]],[[64001,64001],\"mapped\",[24230]],[[64002,64002],\"mapped\",[25299]],[[64003,64003],\"mapped\",[31958]],[[64004,64004],\"mapped\",[23429]],[[64005,64005],\"mapped\",[27934]],[[64006,64006],\"mapped\",[26292]],[[64007,64007],\"mapped\",[36667]],[[64008,64008],\"mapped\",[34892]],[[64009,64009],\"mapped\",[38477]],[[64010,64010],\"mapped\",[35211]],[[64011,64011],\"mapped\",[24275]],[[64012,64012],\"mapped\",[20800]],[[64013,64013],\"mapped\",[21952]],[[64014,64015],\"valid\"],[[64016,64016],\"mapped\",[22618]],[[64017,64017],\"valid\"],[[64018,64018],\"mapped\",[26228]],[[64019,64020],\"valid\"],[[64021,64021],\"mapped\",[20958]],[[64022,64022],\"mapped\",[29482]],[[64023,64023],\"mapped\",[30410]],[[64024,64024],\"mapped\",[31036]],[[64025,64025],\"mapped\",[31070]],[[64026,64026],\"mapped\",[31077]],[[64027,64027],\"mapped\",[31119]],[[64028,64028],\"mapped\",[38742]],[[64029,64029],\"mapped\",[31934]],[[64030,64030],\"mapped\",[32701]],[[64031,64031],\"valid\"],[[64032,64032],\"mapped\",[34322]],[[64033,64033],\"valid\"],[[64034,64034],\"mapped\",[35576]],[[64035,64036],\"valid\"],[[64037,64037],\"mapped\",[36920]],[[64038,64038],\"mapped\",[37117]],[[64039,64041],\"valid\"],[[64042,64042],\"mapped\",[39151]],[[64043,64043],\"mapped\",[39164]],[[64044,64044],\"mapped\",[39208]],[[64045,64045],\"mapped\",[40372]],[[64046,64046],\"mapped\",[37086]],[[64047,64047],\"mapped\",[38583]],[[64048,64048],\"mapped\",[20398]],[[64049,64049],\"mapped\",[20711]],[[64050,64050],\"mapped\",[20813]],[[64051,64051],\"mapped\",[21193]],[[64052,64052],\"mapped\",[21220]],[[64053,64053],\"mapped\",[21329]],[[64054,64054],\"mapped\",[21917]],[[64055,64055],\"mapped\",[22022]],[[64056,64056],\"mapped\",[22120]],[[64057,64057],\"mapped\",[22592]],[[64058,64058],\"mapped\",[22696]],[[64059,64059],\"mapped\",[23652]],[[64060,64060],\"mapped\",[23662]],[[64061,64061],\"mapped\",[24724]],[[64062,64062],\"mapped\",[24936]],[[64063,64063],\"mapped\",[24974]],[[64064,64064],\"mapped\",[25074]],[[64065,64065],\"mapped\",[25935]],[[64066,64066],\"mapped\",[26082]],[[64067,64067],\"mapped\",[26257]],[[64068,64068],\"mapped\",[26757]],[[64069,64069],\"mapped\",[28023]],[[64070,64070],\"mapped\",[28186]],[[64071,64071],\"mapped\",[28450]],[[64072,64072],\"mapped\",[29038]],[[64073,64073],\"mapped\",[29227]],[[64074,64074],\"mapped\",[29730]],[[64075,64075],\"mapped\",[30865]],[[64076,64076],\"mapped\",[31038]],[[64077,64077],\"mapped\",[31049]],[[64078,64078],\"mapped\",[31048]],[[64079,64079],\"mapped\",[31056]],[[64080,64080],\"mapped\",[31062]],[[64081,64081],\"mapped\",[31069]],[[64082,64082],\"mapped\",[31117]],[[64083,64083],\"mapped\",[31118]],[[64084,64084],\"mapped\",[31296]],[[64085,64085],\"mapped\",[31361]],[[64086,64086],\"mapped\",[31680]],[[64087,64087],\"mapped\",[32244]],[[64088,64088],\"mapped\",[32265]],[[64089,64089],\"mapped\",[32321]],[[64090,64090],\"mapped\",[32626]],[[64091,64091],\"mapped\",[32773]],[[64092,64092],\"mapped\",[33261]],[[64093,64094],\"mapped\",[33401]],[[64095,64095],\"mapped\",[33879]],[[64096,64096],\"mapped\",[35088]],[[64097,64097],\"mapped\",[35222]],[[64098,64098],\"mapped\",[35585]],[[64099,64099],\"mapped\",[35641]],[[64100,64100],\"mapped\",[36051]],[[64101,64101],\"mapped\",[36104]],[[64102,64102],\"mapped\",[36790]],[[64103,64103],\"mapped\",[36920]],[[64104,64104],\"mapped\",[38627]],[[64105,64105],\"mapped\",[38911]],[[64106,64106],\"mapped\",[38971]],[[64107,64107],\"mapped\",[24693]],[[64108,64108],\"mapped\",[148206]],[[64109,64109],\"mapped\",[33304]],[[64110,64111],\"disallowed\"],[[64112,64112],\"mapped\",[20006]],[[64113,64113],\"mapped\",[20917]],[[64114,64114],\"mapped\",[20840]],[[64115,64115],\"mapped\",[20352]],[[64116,64116],\"mapped\",[20805]],[[64117,64117],\"mapped\",[20864]],[[64118,64118],\"mapped\",[21191]],[[64119,64119],\"mapped\",[21242]],[[64120,64120],\"mapped\",[21917]],[[64121,64121],\"mapped\",[21845]],[[64122,64122],\"mapped\",[21913]],[[64123,64123],\"mapped\",[21986]],[[64124,64124],\"mapped\",[22618]],[[64125,64125],\"mapped\",[22707]],[[64126,64126],\"mapped\",[22852]],[[64127,64127],\"mapped\",[22868]],[[64128,64128],\"mapped\",[23138]],[[64129,64129],\"mapped\",[23336]],[[64130,64130],\"mapped\",[24274]],[[64131,64131],\"mapped\",[24281]],[[64132,64132],\"mapped\",[24425]],[[64133,64133],\"mapped\",[24493]],[[64134,64134],\"mapped\",[24792]],[[64135,64135],\"mapped\",[24910]],[[64136,64136],\"mapped\",[24840]],[[64137,64137],\"mapped\",[24974]],[[64138,64138],\"mapped\",[24928]],[[64139,64139],\"mapped\",[25074]],[[64140,64140],\"mapped\",[25140]],[[64141,64141],\"mapped\",[25540]],[[64142,64142],\"mapped\",[25628]],[[64143,64143],\"mapped\",[25682]],[[64144,64144],\"mapped\",[25942]],[[64145,64145],\"mapped\",[26228]],[[64146,64146],\"mapped\",[26391]],[[64147,64147],\"mapped\",[26395]],[[64148,64148],\"mapped\",[26454]],[[64149,64149],\"mapped\",[27513]],[[64150,64150],\"mapped\",[27578]],[[64151,64151],\"mapped\",[27969]],[[64152,64152],\"mapped\",[28379]],[[64153,64153],\"mapped\",[28363]],[[64154,64154],\"mapped\",[28450]],[[64155,64155],\"mapped\",[28702]],[[64156,64156],\"mapped\",[29038]],[[64157,64157],\"mapped\",[30631]],[[64158,64158],\"mapped\",[29237]],[[64159,64159],\"mapped\",[29359]],[[64160,64160],\"mapped\",[29482]],[[64161,64161],\"mapped\",[29809]],[[64162,64162],\"mapped\",[29958]],[[64163,64163],\"mapped\",[30011]],[[64164,64164],\"mapped\",[30237]],[[64165,64165],\"mapped\",[30239]],[[64166,64166],\"mapped\",[30410]],[[64167,64167],\"mapped\",[30427]],[[64168,64168],\"mapped\",[30452]],[[64169,64169],\"mapped\",[30538]],[[64170,64170],\"mapped\",[30528]],[[64171,64171],\"mapped\",[30924]],[[64172,64172],\"mapped\",[31409]],[[64173,64173],\"mapped\",[31680]],[[64174,64174],\"mapped\",[31867]],[[64175,64175],\"mapped\",[32091]],[[64176,64176],\"mapped\",[32244]],[[64177,64177],\"mapped\",[32574]],[[64178,64178],\"mapped\",[32773]],[[64179,64179],\"mapped\",[33618]],[[64180,64180],\"mapped\",[33775]],[[64181,64181],\"mapped\",[34681]],[[64182,64182],\"mapped\",[35137]],[[64183,64183],\"mapped\",[35206]],[[64184,64184],\"mapped\",[35222]],[[64185,64185],\"mapped\",[35519]],[[64186,64186],\"mapped\",[35576]],[[64187,64187],\"mapped\",[35531]],[[64188,64188],\"mapped\",[35585]],[[64189,64189],\"mapped\",[35582]],[[64190,64190],\"mapped\",[35565]],[[64191,64191],\"mapped\",[35641]],[[64192,64192],\"mapped\",[35722]],[[64193,64193],\"mapped\",[36104]],[[64194,64194],\"mapped\",[36664]],[[64195,64195],\"mapped\",[36978]],[[64196,64196],\"mapped\",[37273]],[[64197,64197],\"mapped\",[37494]],[[64198,64198],\"mapped\",[38524]],[[64199,64199],\"mapped\",[38627]],[[64200,64200],\"mapped\",[38742]],[[64201,64201],\"mapped\",[38875]],[[64202,64202],\"mapped\",[38911]],[[64203,64203],\"mapped\",[38923]],[[64204,64204],\"mapped\",[38971]],[[64205,64205],\"mapped\",[39698]],[[64206,64206],\"mapped\",[40860]],[[64207,64207],\"mapped\",[141386]],[[64208,64208],\"mapped\",[141380]],[[64209,64209],\"mapped\",[144341]],[[64210,64210],\"mapped\",[15261]],[[64211,64211],\"mapped\",[16408]],[[64212,64212],\"mapped\",[16441]],[[64213,64213],\"mapped\",[152137]],[[64214,64214],\"mapped\",[154832]],[[64215,64215],\"mapped\",[163539]],[[64216,64216],\"mapped\",[40771]],[[64217,64217],\"mapped\",[40846]],[[64218,64255],\"disallowed\"],[[64256,64256],\"mapped\",[102,102]],[[64257,64257],\"mapped\",[102,105]],[[64258,64258],\"mapped\",[102,108]],[[64259,64259],\"mapped\",[102,102,105]],[[64260,64260],\"mapped\",[102,102,108]],[[64261,64262],\"mapped\",[115,116]],[[64263,64274],\"disallowed\"],[[64275,64275],\"mapped\",[1396,1398]],[[64276,64276],\"mapped\",[1396,1381]],[[64277,64277],\"mapped\",[1396,1387]],[[64278,64278],\"mapped\",[1406,1398]],[[64279,64279],\"mapped\",[1396,1389]],[[64280,64284],\"disallowed\"],[[64285,64285],\"mapped\",[1497,1460]],[[64286,64286],\"valid\"],[[64287,64287],\"mapped\",[1522,1463]],[[64288,64288],\"mapped\",[1506]],[[64289,64289],\"mapped\",[1488]],[[64290,64290],\"mapped\",[1491]],[[64291,64291],\"mapped\",[1492]],[[64292,64292],\"mapped\",[1499]],[[64293,64293],\"mapped\",[1500]],[[64294,64294],\"mapped\",[1501]],[[64295,64295],\"mapped\",[1512]],[[64296,64296],\"mapped\",[1514]],[[64297,64297],\"disallowed_STD3_mapped\",[43]],[[64298,64298],\"mapped\",[1513,1473]],[[64299,64299],\"mapped\",[1513,1474]],[[64300,64300],\"mapped\",[1513,1468,1473]],[[64301,64301],\"mapped\",[1513,1468,1474]],[[64302,64302],\"mapped\",[1488,1463]],[[64303,64303],\"mapped\",[1488,1464]],[[64304,64304],\"mapped\",[1488,1468]],[[64305,64305],\"mapped\",[1489,1468]],[[64306,64306],\"mapped\",[1490,1468]],[[64307,64307],\"mapped\",[1491,1468]],[[64308,64308],\"mapped\",[1492,1468]],[[64309,64309],\"mapped\",[1493,1468]],[[64310,64310],\"mapped\",[1494,1468]],[[64311,64311],\"disallowed\"],[[64312,64312],\"mapped\",[1496,1468]],[[64313,64313],\"mapped\",[1497,1468]],[[64314,64314],\"mapped\",[1498,1468]],[[64315,64315],\"mapped\",[1499,1468]],[[64316,64316],\"mapped\",[1500,1468]],[[64317,64317],\"disallowed\"],[[64318,64318],\"mapped\",[1502,1468]],[[64319,64319],\"disallowed\"],[[64320,64320],\"mapped\",[1504,1468]],[[64321,64321],\"mapped\",[1505,1468]],[[64322,64322],\"disallowed\"],[[64323,64323],\"mapped\",[1507,1468]],[[64324,64324],\"mapped\",[1508,1468]],[[64325,64325],\"disallowed\"],[[64326,64326],\"mapped\",[1510,1468]],[[64327,64327],\"mapped\",[1511,1468]],[[64328,64328],\"mapped\",[1512,1468]],[[64329,64329],\"mapped\",[1513,1468]],[[64330,64330],\"mapped\",[1514,1468]],[[64331,64331],\"mapped\",[1493,1465]],[[64332,64332],\"mapped\",[1489,1471]],[[64333,64333],\"mapped\",[1499,1471]],[[64334,64334],\"mapped\",[1508,1471]],[[64335,64335],\"mapped\",[1488,1500]],[[64336,64337],\"mapped\",[1649]],[[64338,64341],\"mapped\",[1659]],[[64342,64345],\"mapped\",[1662]],[[64346,64349],\"mapped\",[1664]],[[64350,64353],\"mapped\",[1658]],[[64354,64357],\"mapped\",[1663]],[[64358,64361],\"mapped\",[1657]],[[64362,64365],\"mapped\",[1700]],[[64366,64369],\"mapped\",[1702]],[[64370,64373],\"mapped\",[1668]],[[64374,64377],\"mapped\",[1667]],[[64378,64381],\"mapped\",[1670]],[[64382,64385],\"mapped\",[1671]],[[64386,64387],\"mapped\",[1677]],[[64388,64389],\"mapped\",[1676]],[[64390,64391],\"mapped\",[1678]],[[64392,64393],\"mapped\",[1672]],[[64394,64395],\"mapped\",[1688]],[[64396,64397],\"mapped\",[1681]],[[64398,64401],\"mapped\",[1705]],[[64402,64405],\"mapped\",[1711]],[[64406,64409],\"mapped\",[1715]],[[64410,64413],\"mapped\",[1713]],[[64414,64415],\"mapped\",[1722]],[[64416,64419],\"mapped\",[1723]],[[64420,64421],\"mapped\",[1728]],[[64422,64425],\"mapped\",[1729]],[[64426,64429],\"mapped\",[1726]],[[64430,64431],\"mapped\",[1746]],[[64432,64433],\"mapped\",[1747]],[[64434,64449],\"valid\",[],\"NV8\"],[[64450,64466],\"disallowed\"],[[64467,64470],\"mapped\",[1709]],[[64471,64472],\"mapped\",[1735]],[[64473,64474],\"mapped\",[1734]],[[64475,64476],\"mapped\",[1736]],[[64477,64477],\"mapped\",[1735,1652]],[[64478,64479],\"mapped\",[1739]],[[64480,64481],\"mapped\",[1733]],[[64482,64483],\"mapped\",[1737]],[[64484,64487],\"mapped\",[1744]],[[64488,64489],\"mapped\",[1609]],[[64490,64491],\"mapped\",[1574,1575]],[[64492,64493],\"mapped\",[1574,1749]],[[64494,64495],\"mapped\",[1574,1608]],[[64496,64497],\"mapped\",[1574,1735]],[[64498,64499],\"mapped\",[1574,1734]],[[64500,64501],\"mapped\",[1574,1736]],[[64502,64504],\"mapped\",[1574,1744]],[[64505,64507],\"mapped\",[1574,1609]],[[64508,64511],\"mapped\",[1740]],[[64512,64512],\"mapped\",[1574,1580]],[[64513,64513],\"mapped\",[1574,1581]],[[64514,64514],\"mapped\",[1574,1605]],[[64515,64515],\"mapped\",[1574,1609]],[[64516,64516],\"mapped\",[1574,1610]],[[64517,64517],\"mapped\",[1576,1580]],[[64518,64518],\"mapped\",[1576,1581]],[[64519,64519],\"mapped\",[1576,1582]],[[64520,64520],\"mapped\",[1576,1605]],[[64521,64521],\"mapped\",[1576,1609]],[[64522,64522],\"mapped\",[1576,1610]],[[64523,64523],\"mapped\",[1578,1580]],[[64524,64524],\"mapped\",[1578,1581]],[[64525,64525],\"mapped\",[1578,1582]],[[64526,64526],\"mapped\",[1578,1605]],[[64527,64527],\"mapped\",[1578,1609]],[[64528,64528],\"mapped\",[1578,1610]],[[64529,64529],\"mapped\",[1579,1580]],[[64530,64530],\"mapped\",[1579,1605]],[[64531,64531],\"mapped\",[1579,1609]],[[64532,64532],\"mapped\",[1579,1610]],[[64533,64533],\"mapped\",[1580,1581]],[[64534,64534],\"mapped\",[1580,1605]],[[64535,64535],\"mapped\",[1581,1580]],[[64536,64536],\"mapped\",[1581,1605]],[[64537,64537],\"mapped\",[1582,1580]],[[64538,64538],\"mapped\",[1582,1581]],[[64539,64539],\"mapped\",[1582,1605]],[[64540,64540],\"mapped\",[1587,1580]],[[64541,64541],\"mapped\",[1587,1581]],[[64542,64542],\"mapped\",[1587,1582]],[[64543,64543],\"mapped\",[1587,1605]],[[64544,64544],\"mapped\",[1589,1581]],[[64545,64545],\"mapped\",[1589,1605]],[[64546,64546],\"mapped\",[1590,1580]],[[64547,64547],\"mapped\",[1590,1581]],[[64548,64548],\"mapped\",[1590,1582]],[[64549,64549],\"mapped\",[1590,1605]],[[64550,64550],\"mapped\",[1591,1581]],[[64551,64551],\"mapped\",[1591,1605]],[[64552,64552],\"mapped\",[1592,1605]],[[64553,64553],\"mapped\",[1593,1580]],[[64554,64554],\"mapped\",[1593,1605]],[[64555,64555],\"mapped\",[1594,1580]],[[64556,64556],\"mapped\",[1594,1605]],[[64557,64557],\"mapped\",[1601,1580]],[[64558,64558],\"mapped\",[1601,1581]],[[64559,64559],\"mapped\",[1601,1582]],[[64560,64560],\"mapped\",[1601,1605]],[[64561,64561],\"mapped\",[1601,1609]],[[64562,64562],\"mapped\",[1601,1610]],[[64563,64563],\"mapped\",[1602,1581]],[[64564,64564],\"mapped\",[1602,1605]],[[64565,64565],\"mapped\",[1602,1609]],[[64566,64566],\"mapped\",[1602,1610]],[[64567,64567],\"mapped\",[1603,1575]],[[64568,64568],\"mapped\",[1603,1580]],[[64569,64569],\"mapped\",[1603,1581]],[[64570,64570],\"mapped\",[1603,1582]],[[64571,64571],\"mapped\",[1603,1604]],[[64572,64572],\"mapped\",[1603,1605]],[[64573,64573],\"mapped\",[1603,1609]],[[64574,64574],\"mapped\",[1603,1610]],[[64575,64575],\"mapped\",[1604,1580]],[[64576,64576],\"mapped\",[1604,1581]],[[64577,64577],\"mapped\",[1604,1582]],[[64578,64578],\"mapped\",[1604,1605]],[[64579,64579],\"mapped\",[1604,1609]],[[64580,64580],\"mapped\",[1604,1610]],[[64581,64581],\"mapped\",[1605,1580]],[[64582,64582],\"mapped\",[1605,1581]],[[64583,64583],\"mapped\",[1605,1582]],[[64584,64584],\"mapped\",[1605,1605]],[[64585,64585],\"mapped\",[1605,1609]],[[64586,64586],\"mapped\",[1605,1610]],[[64587,64587],\"mapped\",[1606,1580]],[[64588,64588],\"mapped\",[1606,1581]],[[64589,64589],\"mapped\",[1606,1582]],[[64590,64590],\"mapped\",[1606,1605]],[[64591,64591],\"mapped\",[1606,1609]],[[64592,64592],\"mapped\",[1606,1610]],[[64593,64593],\"mapped\",[1607,1580]],[[64594,64594],\"mapped\",[1607,1605]],[[64595,64595],\"mapped\",[1607,1609]],[[64596,64596],\"mapped\",[1607,1610]],[[64597,64597],\"mapped\",[1610,1580]],[[64598,64598],\"mapped\",[1610,1581]],[[64599,64599],\"mapped\",[1610,1582]],[[64600,64600],\"mapped\",[1610,1605]],[[64601,64601],\"mapped\",[1610,1609]],[[64602,64602],\"mapped\",[1610,1610]],[[64603,64603],\"mapped\",[1584,1648]],[[64604,64604],\"mapped\",[1585,1648]],[[64605,64605],\"mapped\",[1609,1648]],[[64606,64606],\"disallowed_STD3_mapped\",[32,1612,1617]],[[64607,64607],\"disallowed_STD3_mapped\",[32,1613,1617]],[[64608,64608],\"disallowed_STD3_mapped\",[32,1614,1617]],[[64609,64609],\"disallowed_STD3_mapped\",[32,1615,1617]],[[64610,64610],\"disallowed_STD3_mapped\",[32,1616,1617]],[[64611,64611],\"disallowed_STD3_mapped\",[32,1617,1648]],[[64612,64612],\"mapped\",[1574,1585]],[[64613,64613],\"mapped\",[1574,1586]],[[64614,64614],\"mapped\",[1574,1605]],[[64615,64615],\"mapped\",[1574,1606]],[[64616,64616],\"mapped\",[1574,1609]],[[64617,64617],\"mapped\",[1574,1610]],[[64618,64618],\"mapped\",[1576,1585]],[[64619,64619],\"mapped\",[1576,1586]],[[64620,64620],\"mapped\",[1576,1605]],[[64621,64621],\"mapped\",[1576,1606]],[[64622,64622],\"mapped\",[1576,1609]],[[64623,64623],\"mapped\",[1576,1610]],[[64624,64624],\"mapped\",[1578,1585]],[[64625,64625],\"mapped\",[1578,1586]],[[64626,64626],\"mapped\",[1578,1605]],[[64627,64627],\"mapped\",[1578,1606]],[[64628,64628],\"mapped\",[1578,1609]],[[64629,64629],\"mapped\",[1578,1610]],[[64630,64630],\"mapped\",[1579,1585]],[[64631,64631],\"mapped\",[1579,1586]],[[64632,64632],\"mapped\",[1579,1605]],[[64633,64633],\"mapped\",[1579,1606]],[[64634,64634],\"mapped\",[1579,1609]],[[64635,64635],\"mapped\",[1579,1610]],[[64636,64636],\"mapped\",[1601,1609]],[[64637,64637],\"mapped\",[1601,1610]],[[64638,64638],\"mapped\",[1602,1609]],[[64639,64639],\"mapped\",[1602,1610]],[[64640,64640],\"mapped\",[1603,1575]],[[64641,64641],\"mapped\",[1603,1604]],[[64642,64642],\"mapped\",[1603,1605]],[[64643,64643],\"mapped\",[1603,1609]],[[64644,64644],\"mapped\",[1603,1610]],[[64645,64645],\"mapped\",[1604,1605]],[[64646,64646],\"mapped\",[1604,1609]],[[64647,64647],\"mapped\",[1604,1610]],[[64648,64648],\"mapped\",[1605,1575]],[[64649,64649],\"mapped\",[1605,1605]],[[64650,64650],\"mapped\",[1606,1585]],[[64651,64651],\"mapped\",[1606,1586]],[[64652,64652],\"mapped\",[1606,1605]],[[64653,64653],\"mapped\",[1606,1606]],[[64654,64654],\"mapped\",[1606,1609]],[[64655,64655],\"mapped\",[1606,1610]],[[64656,64656],\"mapped\",[1609,1648]],[[64657,64657],\"mapped\",[1610,1585]],[[64658,64658],\"mapped\",[1610,1586]],[[64659,64659],\"mapped\",[1610,1605]],[[64660,64660],\"mapped\",[1610,1606]],[[64661,64661],\"mapped\",[1610,1609]],[[64662,64662],\"mapped\",[1610,1610]],[[64663,64663],\"mapped\",[1574,1580]],[[64664,64664],\"mapped\",[1574,1581]],[[64665,64665],\"mapped\",[1574,1582]],[[64666,64666],\"mapped\",[1574,1605]],[[64667,64667],\"mapped\",[1574,1607]],[[64668,64668],\"mapped\",[1576,1580]],[[64669,64669],\"mapped\",[1576,1581]],[[64670,64670],\"mapped\",[1576,1582]],[[64671,64671],\"mapped\",[1576,1605]],[[64672,64672],\"mapped\",[1576,1607]],[[64673,64673],\"mapped\",[1578,1580]],[[64674,64674],\"mapped\",[1578,1581]],[[64675,64675],\"mapped\",[1578,1582]],[[64676,64676],\"mapped\",[1578,1605]],[[64677,64677],\"mapped\",[1578,1607]],[[64678,64678],\"mapped\",[1579,1605]],[[64679,64679],\"mapped\",[1580,1581]],[[64680,64680],\"mapped\",[1580,1605]],[[64681,64681],\"mapped\",[1581,1580]],[[64682,64682],\"mapped\",[1581,1605]],[[64683,64683],\"mapped\",[1582,1580]],[[64684,64684],\"mapped\",[1582,1605]],[[64685,64685],\"mapped\",[1587,1580]],[[64686,64686],\"mapped\",[1587,1581]],[[64687,64687],\"mapped\",[1587,1582]],[[64688,64688],\"mapped\",[1587,1605]],[[64689,64689],\"mapped\",[1589,1581]],[[64690,64690],\"mapped\",[1589,1582]],[[64691,64691],\"mapped\",[1589,1605]],[[64692,64692],\"mapped\",[1590,1580]],[[64693,64693],\"mapped\",[1590,1581]],[[64694,64694],\"mapped\",[1590,1582]],[[64695,64695],\"mapped\",[1590,1605]],[[64696,64696],\"mapped\",[1591,1581]],[[64697,64697],\"mapped\",[1592,1605]],[[64698,64698],\"mapped\",[1593,1580]],[[64699,64699],\"mapped\",[1593,1605]],[[64700,64700],\"mapped\",[1594,1580]],[[64701,64701],\"mapped\",[1594,1605]],[[64702,64702],\"mapped\",[1601,1580]],[[64703,64703],\"mapped\",[1601,1581]],[[64704,64704],\"mapped\",[1601,1582]],[[64705,64705],\"mapped\",[1601,1605]],[[64706,64706],\"mapped\",[1602,1581]],[[64707,64707],\"mapped\",[1602,1605]],[[64708,64708],\"mapped\",[1603,1580]],[[64709,64709],\"mapped\",[1603,1581]],[[64710,64710],\"mapped\",[1603,1582]],[[64711,64711],\"mapped\",[1603,1604]],[[64712,64712],\"mapped\",[1603,1605]],[[64713,64713],\"mapped\",[1604,1580]],[[64714,64714],\"mapped\",[1604,1581]],[[64715,64715],\"mapped\",[1604,1582]],[[64716,64716],\"mapped\",[1604,1605]],[[64717,64717],\"mapped\",[1604,1607]],[[64718,64718],\"mapped\",[1605,1580]],[[64719,64719],\"mapped\",[1605,1581]],[[64720,64720],\"mapped\",[1605,1582]],[[64721,64721],\"mapped\",[1605,1605]],[[64722,64722],\"mapped\",[1606,1580]],[[64723,64723],\"mapped\",[1606,1581]],[[64724,64724],\"mapped\",[1606,1582]],[[64725,64725],\"mapped\",[1606,1605]],[[64726,64726],\"mapped\",[1606,1607]],[[64727,64727],\"mapped\",[1607,1580]],[[64728,64728],\"mapped\",[1607,1605]],[[64729,64729],\"mapped\",[1607,1648]],[[64730,64730],\"mapped\",[1610,1580]],[[64731,64731],\"mapped\",[1610,1581]],[[64732,64732],\"mapped\",[1610,1582]],[[64733,64733],\"mapped\",[1610,1605]],[[64734,64734],\"mapped\",[1610,1607]],[[64735,64735],\"mapped\",[1574,1605]],[[64736,64736],\"mapped\",[1574,1607]],[[64737,64737],\"mapped\",[1576,1605]],[[64738,64738],\"mapped\",[1576,1607]],[[64739,64739],\"mapped\",[1578,1605]],[[64740,64740],\"mapped\",[1578,1607]],[[64741,64741],\"mapped\",[1579,1605]],[[64742,64742],\"mapped\",[1579,1607]],[[64743,64743],\"mapped\",[1587,1605]],[[64744,64744],\"mapped\",[1587,1607]],[[64745,64745],\"mapped\",[1588,1605]],[[64746,64746],\"mapped\",[1588,1607]],[[64747,64747],\"mapped\",[1603,1604]],[[64748,64748],\"mapped\",[1603,1605]],[[64749,64749],\"mapped\",[1604,1605]],[[64750,64750],\"mapped\",[1606,1605]],[[64751,64751],\"mapped\",[1606,1607]],[[64752,64752],\"mapped\",[1610,1605]],[[64753,64753],\"mapped\",[1610,1607]],[[64754,64754],\"mapped\",[1600,1614,1617]],[[64755,64755],\"mapped\",[1600,1615,1617]],[[64756,64756],\"mapped\",[1600,1616,1617]],[[64757,64757],\"mapped\",[1591,1609]],[[64758,64758],\"mapped\",[1591,1610]],[[64759,64759],\"mapped\",[1593,1609]],[[64760,64760],\"mapped\",[1593,1610]],[[64761,64761],\"mapped\",[1594,1609]],[[64762,64762],\"mapped\",[1594,1610]],[[64763,64763],\"mapped\",[1587,1609]],[[64764,64764],\"mapped\",[1587,1610]],[[64765,64765],\"mapped\",[1588,1609]],[[64766,64766],\"mapped\",[1588,1610]],[[64767,64767],\"mapped\",[1581,1609]],[[64768,64768],\"mapped\",[1581,1610]],[[64769,64769],\"mapped\",[1580,1609]],[[64770,64770],\"mapped\",[1580,1610]],[[64771,64771],\"mapped\",[1582,1609]],[[64772,64772],\"mapped\",[1582,1610]],[[64773,64773],\"mapped\",[1589,1609]],[[64774,64774],\"mapped\",[1589,1610]],[[64775,64775],\"mapped\",[1590,1609]],[[64776,64776],\"mapped\",[1590,1610]],[[64777,64777],\"mapped\",[1588,1580]],[[64778,64778],\"mapped\",[1588,1581]],[[64779,64779],\"mapped\",[1588,1582]],[[64780,64780],\"mapped\",[1588,1605]],[[64781,64781],\"mapped\",[1588,1585]],[[64782,64782],\"mapped\",[1587,1585]],[[64783,64783],\"mapped\",[1589,1585]],[[64784,64784],\"mapped\",[1590,1585]],[[64785,64785],\"mapped\",[1591,1609]],[[64786,64786],\"mapped\",[1591,1610]],[[64787,64787],\"mapped\",[1593,1609]],[[64788,64788],\"mapped\",[1593,1610]],[[64789,64789],\"mapped\",[1594,1609]],[[64790,64790],\"mapped\",[1594,1610]],[[64791,64791],\"mapped\",[1587,1609]],[[64792,64792],\"mapped\",[1587,1610]],[[64793,64793],\"mapped\",[1588,1609]],[[64794,64794],\"mapped\",[1588,1610]],[[64795,64795],\"mapped\",[1581,1609]],[[64796,64796],\"mapped\",[1581,1610]],[[64797,64797],\"mapped\",[1580,1609]],[[64798,64798],\"mapped\",[1580,1610]],[[64799,64799],\"mapped\",[1582,1609]],[[64800,64800],\"mapped\",[1582,1610]],[[64801,64801],\"mapped\",[1589,1609]],[[64802,64802],\"mapped\",[1589,1610]],[[64803,64803],\"mapped\",[1590,1609]],[[64804,64804],\"mapped\",[1590,1610]],[[64805,64805],\"mapped\",[1588,1580]],[[64806,64806],\"mapped\",[1588,1581]],[[64807,64807],\"mapped\",[1588,1582]],[[64808,64808],\"mapped\",[1588,1605]],[[64809,64809],\"mapped\",[1588,1585]],[[64810,64810],\"mapped\",[1587,1585]],[[64811,64811],\"mapped\",[1589,1585]],[[64812,64812],\"mapped\",[1590,1585]],[[64813,64813],\"mapped\",[1588,1580]],[[64814,64814],\"mapped\",[1588,1581]],[[64815,64815],\"mapped\",[1588,1582]],[[64816,64816],\"mapped\",[1588,1605]],[[64817,64817],\"mapped\",[1587,1607]],[[64818,64818],\"mapped\",[1588,1607]],[[64819,64819],\"mapped\",[1591,1605]],[[64820,64820],\"mapped\",[1587,1580]],[[64821,64821],\"mapped\",[1587,1581]],[[64822,64822],\"mapped\",[1587,1582]],[[64823,64823],\"mapped\",[1588,1580]],[[64824,64824],\"mapped\",[1588,1581]],[[64825,64825],\"mapped\",[1588,1582]],[[64826,64826],\"mapped\",[1591,1605]],[[64827,64827],\"mapped\",[1592,1605]],[[64828,64829],\"mapped\",[1575,1611]],[[64830,64831],\"valid\",[],\"NV8\"],[[64832,64847],\"disallowed\"],[[64848,64848],\"mapped\",[1578,1580,1605]],[[64849,64850],\"mapped\",[1578,1581,1580]],[[64851,64851],\"mapped\",[1578,1581,1605]],[[64852,64852],\"mapped\",[1578,1582,1605]],[[64853,64853],\"mapped\",[1578,1605,1580]],[[64854,64854],\"mapped\",[1578,1605,1581]],[[64855,64855],\"mapped\",[1578,1605,1582]],[[64856,64857],\"mapped\",[1580,1605,1581]],[[64858,64858],\"mapped\",[1581,1605,1610]],[[64859,64859],\"mapped\",[1581,1605,1609]],[[64860,64860],\"mapped\",[1587,1581,1580]],[[64861,64861],\"mapped\",[1587,1580,1581]],[[64862,64862],\"mapped\",[1587,1580,1609]],[[64863,64864],\"mapped\",[1587,1605,1581]],[[64865,64865],\"mapped\",[1587,1605,1580]],[[64866,64867],\"mapped\",[1587,1605,1605]],[[64868,64869],\"mapped\",[1589,1581,1581]],[[64870,64870],\"mapped\",[1589,1605,1605]],[[64871,64872],\"mapped\",[1588,1581,1605]],[[64873,64873],\"mapped\",[1588,1580,1610]],[[64874,64875],\"mapped\",[1588,1605,1582]],[[64876,64877],\"mapped\",[1588,1605,1605]],[[64878,64878],\"mapped\",[1590,1581,1609]],[[64879,64880],\"mapped\",[1590,1582,1605]],[[64881,64882],\"mapped\",[1591,1605,1581]],[[64883,64883],\"mapped\",[1591,1605,1605]],[[64884,64884],\"mapped\",[1591,1605,1610]],[[64885,64885],\"mapped\",[1593,1580,1605]],[[64886,64887],\"mapped\",[1593,1605,1605]],[[64888,64888],\"mapped\",[1593,1605,1609]],[[64889,64889],\"mapped\",[1594,1605,1605]],[[64890,64890],\"mapped\",[1594,1605,1610]],[[64891,64891],\"mapped\",[1594,1605,1609]],[[64892,64893],\"mapped\",[1601,1582,1605]],[[64894,64894],\"mapped\",[1602,1605,1581]],[[64895,64895],\"mapped\",[1602,1605,1605]],[[64896,64896],\"mapped\",[1604,1581,1605]],[[64897,64897],\"mapped\",[1604,1581,1610]],[[64898,64898],\"mapped\",[1604,1581,1609]],[[64899,64900],\"mapped\",[1604,1580,1580]],[[64901,64902],\"mapped\",[1604,1582,1605]],[[64903,64904],\"mapped\",[1604,1605,1581]],[[64905,64905],\"mapped\",[1605,1581,1580]],[[64906,64906],\"mapped\",[1605,1581,1605]],[[64907,64907],\"mapped\",[1605,1581,1610]],[[64908,64908],\"mapped\",[1605,1580,1581]],[[64909,64909],\"mapped\",[1605,1580,1605]],[[64910,64910],\"mapped\",[1605,1582,1580]],[[64911,64911],\"mapped\",[1605,1582,1605]],[[64912,64913],\"disallowed\"],[[64914,64914],\"mapped\",[1605,1580,1582]],[[64915,64915],\"mapped\",[1607,1605,1580]],[[64916,64916],\"mapped\",[1607,1605,1605]],[[64917,64917],\"mapped\",[1606,1581,1605]],[[64918,64918],\"mapped\",[1606,1581,1609]],[[64919,64920],\"mapped\",[1606,1580,1605]],[[64921,64921],\"mapped\",[1606,1580,1609]],[[64922,64922],\"mapped\",[1606,1605,1610]],[[64923,64923],\"mapped\",[1606,1605,1609]],[[64924,64925],\"mapped\",[1610,1605,1605]],[[64926,64926],\"mapped\",[1576,1582,1610]],[[64927,64927],\"mapped\",[1578,1580,1610]],[[64928,64928],\"mapped\",[1578,1580,1609]],[[64929,64929],\"mapped\",[1578,1582,1610]],[[64930,64930],\"mapped\",[1578,1582,1609]],[[64931,64931],\"mapped\",[1578,1605,1610]],[[64932,64932],\"mapped\",[1578,1605,1609]],[[64933,64933],\"mapped\",[1580,1605,1610]],[[64934,64934],\"mapped\",[1580,1581,1609]],[[64935,64935],\"mapped\",[1580,1605,1609]],[[64936,64936],\"mapped\",[1587,1582,1609]],[[64937,64937],\"mapped\",[1589,1581,1610]],[[64938,64938],\"mapped\",[1588,1581,1610]],[[64939,64939],\"mapped\",[1590,1581,1610]],[[64940,64940],\"mapped\",[1604,1580,1610]],[[64941,64941],\"mapped\",[1604,1605,1610]],[[64942,64942],\"mapped\",[1610,1581,1610]],[[64943,64943],\"mapped\",[1610,1580,1610]],[[64944,64944],\"mapped\",[1610,1605,1610]],[[64945,64945],\"mapped\",[1605,1605,1610]],[[64946,64946],\"mapped\",[1602,1605,1610]],[[64947,64947],\"mapped\",[1606,1581,1610]],[[64948,64948],\"mapped\",[1602,1605,1581]],[[64949,64949],\"mapped\",[1604,1581,1605]],[[64950,64950],\"mapped\",[1593,1605,1610]],[[64951,64951],\"mapped\",[1603,1605,1610]],[[64952,64952],\"mapped\",[1606,1580,1581]],[[64953,64953],\"mapped\",[1605,1582,1610]],[[64954,64954],\"mapped\",[1604,1580,1605]],[[64955,64955],\"mapped\",[1603,1605,1605]],[[64956,64956],\"mapped\",[1604,1580,1605]],[[64957,64957],\"mapped\",[1606,1580,1581]],[[64958,64958],\"mapped\",[1580,1581,1610]],[[64959,64959],\"mapped\",[1581,1580,1610]],[[64960,64960],\"mapped\",[1605,1580,1610]],[[64961,64961],\"mapped\",[1601,1605,1610]],[[64962,64962],\"mapped\",[1576,1581,1610]],[[64963,64963],\"mapped\",[1603,1605,1605]],[[64964,64964],\"mapped\",[1593,1580,1605]],[[64965,64965],\"mapped\",[1589,1605,1605]],[[64966,64966],\"mapped\",[1587,1582,1610]],[[64967,64967],\"mapped\",[1606,1580,1610]],[[64968,64975],\"disallowed\"],[[64976,65007],\"disallowed\"],[[65008,65008],\"mapped\",[1589,1604,1746]],[[65009,65009],\"mapped\",[1602,1604,1746]],[[65010,65010],\"mapped\",[1575,1604,1604,1607]],[[65011,65011],\"mapped\",[1575,1603,1576,1585]],[[65012,65012],\"mapped\",[1605,1581,1605,1583]],[[65013,65013],\"mapped\",[1589,1604,1593,1605]],[[65014,65014],\"mapped\",[1585,1587,1608,1604]],[[65015,65015],\"mapped\",[1593,1604,1610,1607]],[[65016,65016],\"mapped\",[1608,1587,1604,1605]],[[65017,65017],\"mapped\",[1589,1604,1609]],[[65018,65018],\"disallowed_STD3_mapped\",[1589,1604,1609,32,1575,1604,1604,1607,32,1593,1604,1610,1607,32,1608,1587,1604,1605]],[[65019,65019],\"disallowed_STD3_mapped\",[1580,1604,32,1580,1604,1575,1604,1607]],[[65020,65020],\"mapped\",[1585,1740,1575,1604]],[[65021,65021],\"valid\",[],\"NV8\"],[[65022,65023],\"disallowed\"],[[65024,65039],\"ignored\"],[[65040,65040],\"disallowed_STD3_mapped\",[44]],[[65041,65041],\"mapped\",[12289]],[[65042,65042],\"disallowed\"],[[65043,65043],\"disallowed_STD3_mapped\",[58]],[[65044,65044],\"disallowed_STD3_mapped\",[59]],[[65045,65045],\"disallowed_STD3_mapped\",[33]],[[65046,65046],\"disallowed_STD3_mapped\",[63]],[[65047,65047],\"mapped\",[12310]],[[65048,65048],\"mapped\",[12311]],[[65049,65049],\"disallowed\"],[[65050,65055],\"disallowed\"],[[65056,65059],\"valid\"],[[65060,65062],\"valid\"],[[65063,65069],\"valid\"],[[65070,65071],\"valid\"],[[65072,65072],\"disallowed\"],[[65073,65073],\"mapped\",[8212]],[[65074,65074],\"mapped\",[8211]],[[65075,65076],\"disallowed_STD3_mapped\",[95]],[[65077,65077],\"disallowed_STD3_mapped\",[40]],[[65078,65078],\"disallowed_STD3_mapped\",[41]],[[65079,65079],\"disallowed_STD3_mapped\",[123]],[[65080,65080],\"disallowed_STD3_mapped\",[125]],[[65081,65081],\"mapped\",[12308]],[[65082,65082],\"mapped\",[12309]],[[65083,65083],\"mapped\",[12304]],[[65084,65084],\"mapped\",[12305]],[[65085,65085],\"mapped\",[12298]],[[65086,65086],\"mapped\",[12299]],[[65087,65087],\"mapped\",[12296]],[[65088,65088],\"mapped\",[12297]],[[65089,65089],\"mapped\",[12300]],[[65090,65090],\"mapped\",[12301]],[[65091,65091],\"mapped\",[12302]],[[65092,65092],\"mapped\",[12303]],[[65093,65094],\"valid\",[],\"NV8\"],[[65095,65095],\"disallowed_STD3_mapped\",[91]],[[65096,65096],\"disallowed_STD3_mapped\",[93]],[[65097,65100],\"disallowed_STD3_mapped\",[32,773]],[[65101,65103],\"disallowed_STD3_mapped\",[95]],[[65104,65104],\"disallowed_STD3_mapped\",[44]],[[65105,65105],\"mapped\",[12289]],[[65106,65106],\"disallowed\"],[[65107,65107],\"disallowed\"],[[65108,65108],\"disallowed_STD3_mapped\",[59]],[[65109,65109],\"disallowed_STD3_mapped\",[58]],[[65110,65110],\"disallowed_STD3_mapped\",[63]],[[65111,65111],\"disallowed_STD3_mapped\",[33]],[[65112,65112],\"mapped\",[8212]],[[65113,65113],\"disallowed_STD3_mapped\",[40]],[[65114,65114],\"disallowed_STD3_mapped\",[41]],[[65115,65115],\"disallowed_STD3_mapped\",[123]],[[65116,65116],\"disallowed_STD3_mapped\",[125]],[[65117,65117],\"mapped\",[12308]],[[65118,65118],\"mapped\",[12309]],[[65119,65119],\"disallowed_STD3_mapped\",[35]],[[65120,65120],\"disallowed_STD3_mapped\",[38]],[[65121,65121],\"disallowed_STD3_mapped\",[42]],[[65122,65122],\"disallowed_STD3_mapped\",[43]],[[65123,65123],\"mapped\",[45]],[[65124,65124],\"disallowed_STD3_mapped\",[60]],[[65125,65125],\"disallowed_STD3_mapped\",[62]],[[65126,65126],\"disallowed_STD3_mapped\",[61]],[[65127,65127],\"disallowed\"],[[65128,65128],\"disallowed_STD3_mapped\",[92]],[[65129,65129],\"disallowed_STD3_mapped\",[36]],[[65130,65130],\"disallowed_STD3_mapped\",[37]],[[65131,65131],\"disallowed_STD3_mapped\",[64]],[[65132,65135],\"disallowed\"],[[65136,65136],\"disallowed_STD3_mapped\",[32,1611]],[[65137,65137],\"mapped\",[1600,1611]],[[65138,65138],\"disallowed_STD3_mapped\",[32,1612]],[[65139,65139],\"valid\"],[[65140,65140],\"disallowed_STD3_mapped\",[32,1613]],[[65141,65141],\"disallowed\"],[[65142,65142],\"disallowed_STD3_mapped\",[32,1614]],[[65143,65143],\"mapped\",[1600,1614]],[[65144,65144],\"disallowed_STD3_mapped\",[32,1615]],[[65145,65145],\"mapped\",[1600,1615]],[[65146,65146],\"disallowed_STD3_mapped\",[32,1616]],[[65147,65147],\"mapped\",[1600,1616]],[[65148,65148],\"disallowed_STD3_mapped\",[32,1617]],[[65149,65149],\"mapped\",[1600,1617]],[[65150,65150],\"disallowed_STD3_mapped\",[32,1618]],[[65151,65151],\"mapped\",[1600,1618]],[[65152,65152],\"mapped\",[1569]],[[65153,65154],\"mapped\",[1570]],[[65155,65156],\"mapped\",[1571]],[[65157,65158],\"mapped\",[1572]],[[65159,65160],\"mapped\",[1573]],[[65161,65164],\"mapped\",[1574]],[[65165,65166],\"mapped\",[1575]],[[65167,65170],\"mapped\",[1576]],[[65171,65172],\"mapped\",[1577]],[[65173,65176],\"mapped\",[1578]],[[65177,65180],\"mapped\",[1579]],[[65181,65184],\"mapped\",[1580]],[[65185,65188],\"mapped\",[1581]],[[65189,65192],\"mapped\",[1582]],[[65193,65194],\"mapped\",[1583]],[[65195,65196],\"mapped\",[1584]],[[65197,65198],\"mapped\",[1585]],[[65199,65200],\"mapped\",[1586]],[[65201,65204],\"mapped\",[1587]],[[65205,65208],\"mapped\",[1588]],[[65209,65212],\"mapped\",[1589]],[[65213,65216],\"mapped\",[1590]],[[65217,65220],\"mapped\",[1591]],[[65221,65224],\"mapped\",[1592]],[[65225,65228],\"mapped\",[1593]],[[65229,65232],\"mapped\",[1594]],[[65233,65236],\"mapped\",[1601]],[[65237,65240],\"mapped\",[1602]],[[65241,65244],\"mapped\",[1603]],[[65245,65248],\"mapped\",[1604]],[[65249,65252],\"mapped\",[1605]],[[65253,65256],\"mapped\",[1606]],[[65257,65260],\"mapped\",[1607]],[[65261,65262],\"mapped\",[1608]],[[65263,65264],\"mapped\",[1609]],[[65265,65268],\"mapped\",[1610]],[[65269,65270],\"mapped\",[1604,1570]],[[65271,65272],\"mapped\",[1604,1571]],[[65273,65274],\"mapped\",[1604,1573]],[[65275,65276],\"mapped\",[1604,1575]],[[65277,65278],\"disallowed\"],[[65279,65279],\"ignored\"],[[65280,65280],\"disallowed\"],[[65281,65281],\"disallowed_STD3_mapped\",[33]],[[65282,65282],\"disallowed_STD3_mapped\",[34]],[[65283,65283],\"disallowed_STD3_mapped\",[35]],[[65284,65284],\"disallowed_STD3_mapped\",[36]],[[65285,65285],\"disallowed_STD3_mapped\",[37]],[[65286,65286],\"disallowed_STD3_mapped\",[38]],[[65287,65287],\"disallowed_STD3_mapped\",[39]],[[65288,65288],\"disallowed_STD3_mapped\",[40]],[[65289,65289],\"disallowed_STD3_mapped\",[41]],[[65290,65290],\"disallowed_STD3_mapped\",[42]],[[65291,65291],\"disallowed_STD3_mapped\",[43]],[[65292,65292],\"disallowed_STD3_mapped\",[44]],[[65293,65293],\"mapped\",[45]],[[65294,65294],\"mapped\",[46]],[[65295,65295],\"disallowed_STD3_mapped\",[47]],[[65296,65296],\"mapped\",[48]],[[65297,65297],\"mapped\",[49]],[[65298,65298],\"mapped\",[50]],[[65299,65299],\"mapped\",[51]],[[65300,65300],\"mapped\",[52]],[[65301,65301],\"mapped\",[53]],[[65302,65302],\"mapped\",[54]],[[65303,65303],\"mapped\",[55]],[[65304,65304],\"mapped\",[56]],[[65305,65305],\"mapped\",[57]],[[65306,65306],\"disallowed_STD3_mapped\",[58]],[[65307,65307],\"disallowed_STD3_mapped\",[59]],[[65308,65308],\"disallowed_STD3_mapped\",[60]],[[65309,65309],\"disallowed_STD3_mapped\",[61]],[[65310,65310],\"disallowed_STD3_mapped\",[62]],[[65311,65311],\"disallowed_STD3_mapped\",[63]],[[65312,65312],\"disallowed_STD3_mapped\",[64]],[[65313,65313],\"mapped\",[97]],[[65314,65314],\"mapped\",[98]],[[65315,65315],\"mapped\",[99]],[[65316,65316],\"mapped\",[100]],[[65317,65317],\"mapped\",[101]],[[65318,65318],\"mapped\",[102]],[[65319,65319],\"mapped\",[103]],[[65320,65320],\"mapped\",[104]],[[65321,65321],\"mapped\",[105]],[[65322,65322],\"mapped\",[106]],[[65323,65323],\"mapped\",[107]],[[65324,65324],\"mapped\",[108]],[[65325,65325],\"mapped\",[109]],[[65326,65326],\"mapped\",[110]],[[65327,65327],\"mapped\",[111]],[[65328,65328],\"mapped\",[112]],[[65329,65329],\"mapped\",[113]],[[65330,65330],\"mapped\",[114]],[[65331,65331],\"mapped\",[115]],[[65332,65332],\"mapped\",[116]],[[65333,65333],\"mapped\",[117]],[[65334,65334],\"mapped\",[118]],[[65335,65335],\"mapped\",[119]],[[65336,65336],\"mapped\",[120]],[[65337,65337],\"mapped\",[121]],[[65338,65338],\"mapped\",[122]],[[65339,65339],\"disallowed_STD3_mapped\",[91]],[[65340,65340],\"disallowed_STD3_mapped\",[92]],[[65341,65341],\"disallowed_STD3_mapped\",[93]],[[65342,65342],\"disallowed_STD3_mapped\",[94]],[[65343,65343],\"disallowed_STD3_mapped\",[95]],[[65344,65344],\"disallowed_STD3_mapped\",[96]],[[65345,65345],\"mapped\",[97]],[[65346,65346],\"mapped\",[98]],[[65347,65347],\"mapped\",[99]],[[65348,65348],\"mapped\",[100]],[[65349,65349],\"mapped\",[101]],[[65350,65350],\"mapped\",[102]],[[65351,65351],\"mapped\",[103]],[[65352,65352],\"mapped\",[104]],[[65353,65353],\"mapped\",[105]],[[65354,65354],\"mapped\",[106]],[[65355,65355],\"mapped\",[107]],[[65356,65356],\"mapped\",[108]],[[65357,65357],\"mapped\",[109]],[[65358,65358],\"mapped\",[110]],[[65359,65359],\"mapped\",[111]],[[65360,65360],\"mapped\",[112]],[[65361,65361],\"mapped\",[113]],[[65362,65362],\"mapped\",[114]],[[65363,65363],\"mapped\",[115]],[[65364,65364],\"mapped\",[116]],[[65365,65365],\"mapped\",[117]],[[65366,65366],\"mapped\",[118]],[[65367,65367],\"mapped\",[119]],[[65368,65368],\"mapped\",[120]],[[65369,65369],\"mapped\",[121]],[[65370,65370],\"mapped\",[122]],[[65371,65371],\"disallowed_STD3_mapped\",[123]],[[65372,65372],\"disallowed_STD3_mapped\",[124]],[[65373,65373],\"disallowed_STD3_mapped\",[125]],[[65374,65374],\"disallowed_STD3_mapped\",[126]],[[65375,65375],\"mapped\",[10629]],[[65376,65376],\"mapped\",[10630]],[[65377,65377],\"mapped\",[46]],[[65378,65378],\"mapped\",[12300]],[[65379,65379],\"mapped\",[12301]],[[65380,65380],\"mapped\",[12289]],[[65381,65381],\"mapped\",[12539]],[[65382,65382],\"mapped\",[12530]],[[65383,65383],\"mapped\",[12449]],[[65384,65384],\"mapped\",[12451]],[[65385,65385],\"mapped\",[12453]],[[65386,65386],\"mapped\",[12455]],[[65387,65387],\"mapped\",[12457]],[[65388,65388],\"mapped\",[12515]],[[65389,65389],\"mapped\",[12517]],[[65390,65390],\"mapped\",[12519]],[[65391,65391],\"mapped\",[12483]],[[65392,65392],\"mapped\",[12540]],[[65393,65393],\"mapped\",[12450]],[[65394,65394],\"mapped\",[12452]],[[65395,65395],\"mapped\",[12454]],[[65396,65396],\"mapped\",[12456]],[[65397,65397],\"mapped\",[12458]],[[65398,65398],\"mapped\",[12459]],[[65399,65399],\"mapped\",[12461]],[[65400,65400],\"mapped\",[12463]],[[65401,65401],\"mapped\",[12465]],[[65402,65402],\"mapped\",[12467]],[[65403,65403],\"mapped\",[12469]],[[65404,65404],\"mapped\",[12471]],[[65405,65405],\"mapped\",[12473]],[[65406,65406],\"mapped\",[12475]],[[65407,65407],\"mapped\",[12477]],[[65408,65408],\"mapped\",[12479]],[[65409,65409],\"mapped\",[12481]],[[65410,65410],\"mapped\",[12484]],[[65411,65411],\"mapped\",[12486]],[[65412,65412],\"mapped\",[12488]],[[65413,65413],\"mapped\",[12490]],[[65414,65414],\"mapped\",[12491]],[[65415,65415],\"mapped\",[12492]],[[65416,65416],\"mapped\",[12493]],[[65417,65417],\"mapped\",[12494]],[[65418,65418],\"mapped\",[12495]],[[65419,65419],\"mapped\",[12498]],[[65420,65420],\"mapped\",[12501]],[[65421,65421],\"mapped\",[12504]],[[65422,65422],\"mapped\",[12507]],[[65423,65423],\"mapped\",[12510]],[[65424,65424],\"mapped\",[12511]],[[65425,65425],\"mapped\",[12512]],[[65426,65426],\"mapped\",[12513]],[[65427,65427],\"mapped\",[12514]],[[65428,65428],\"mapped\",[12516]],[[65429,65429],\"mapped\",[12518]],[[65430,65430],\"mapped\",[12520]],[[65431,65431],\"mapped\",[12521]],[[65432,65432],\"mapped\",[12522]],[[65433,65433],\"mapped\",[12523]],[[65434,65434],\"mapped\",[12524]],[[65435,65435],\"mapped\",[12525]],[[65436,65436],\"mapped\",[12527]],[[65437,65437],\"mapped\",[12531]],[[65438,65438],\"mapped\",[12441]],[[65439,65439],\"mapped\",[12442]],[[65440,65440],\"disallowed\"],[[65441,65441],\"mapped\",[4352]],[[65442,65442],\"mapped\",[4353]],[[65443,65443],\"mapped\",[4522]],[[65444,65444],\"mapped\",[4354]],[[65445,65445],\"mapped\",[4524]],[[65446,65446],\"mapped\",[4525]],[[65447,65447],\"mapped\",[4355]],[[65448,65448],\"mapped\",[4356]],[[65449,65449],\"mapped\",[4357]],[[65450,65450],\"mapped\",[4528]],[[65451,65451],\"mapped\",[4529]],[[65452,65452],\"mapped\",[4530]],[[65453,65453],\"mapped\",[4531]],[[65454,65454],\"mapped\",[4532]],[[65455,65455],\"mapped\",[4533]],[[65456,65456],\"mapped\",[4378]],[[65457,65457],\"mapped\",[4358]],[[65458,65458],\"mapped\",[4359]],[[65459,65459],\"mapped\",[4360]],[[65460,65460],\"mapped\",[4385]],[[65461,65461],\"mapped\",[4361]],[[65462,65462],\"mapped\",[4362]],[[65463,65463],\"mapped\",[4363]],[[65464,65464],\"mapped\",[4364]],[[65465,65465],\"mapped\",[4365]],[[65466,65466],\"mapped\",[4366]],[[65467,65467],\"mapped\",[4367]],[[65468,65468],\"mapped\",[4368]],[[65469,65469],\"mapped\",[4369]],[[65470,65470],\"mapped\",[4370]],[[65471,65473],\"disallowed\"],[[65474,65474],\"mapped\",[4449]],[[65475,65475],\"mapped\",[4450]],[[65476,65476],\"mapped\",[4451]],[[65477,65477],\"mapped\",[4452]],[[65478,65478],\"mapped\",[4453]],[[65479,65479],\"mapped\",[4454]],[[65480,65481],\"disallowed\"],[[65482,65482],\"mapped\",[4455]],[[65483,65483],\"mapped\",[4456]],[[65484,65484],\"mapped\",[4457]],[[65485,65485],\"mapped\",[4458]],[[65486,65486],\"mapped\",[4459]],[[65487,65487],\"mapped\",[4460]],[[65488,65489],\"disallowed\"],[[65490,65490],\"mapped\",[4461]],[[65491,65491],\"mapped\",[4462]],[[65492,65492],\"mapped\",[4463]],[[65493,65493],\"mapped\",[4464]],[[65494,65494],\"mapped\",[4465]],[[65495,65495],\"mapped\",[4466]],[[65496,65497],\"disallowed\"],[[65498,65498],\"mapped\",[4467]],[[65499,65499],\"mapped\",[4468]],[[65500,65500],\"mapped\",[4469]],[[65501,65503],\"disallowed\"],[[65504,65504],\"mapped\",[162]],[[65505,65505],\"mapped\",[163]],[[65506,65506],\"mapped\",[172]],[[65507,65507],\"disallowed_STD3_mapped\",[32,772]],[[65508,65508],\"mapped\",[166]],[[65509,65509],\"mapped\",[165]],[[65510,65510],\"mapped\",[8361]],[[65511,65511],\"disallowed\"],[[65512,65512],\"mapped\",[9474]],[[65513,65513],\"mapped\",[8592]],[[65514,65514],\"mapped\",[8593]],[[65515,65515],\"mapped\",[8594]],[[65516,65516],\"mapped\",[8595]],[[65517,65517],\"mapped\",[9632]],[[65518,65518],\"mapped\",[9675]],[[65519,65528],\"disallowed\"],[[65529,65531],\"disallowed\"],[[65532,65532],\"disallowed\"],[[65533,65533],\"disallowed\"],[[65534,65535],\"disallowed\"],[[65536,65547],\"valid\"],[[65548,65548],\"disallowed\"],[[65549,65574],\"valid\"],[[65575,65575],\"disallowed\"],[[65576,65594],\"valid\"],[[65595,65595],\"disallowed\"],[[65596,65597],\"valid\"],[[65598,65598],\"disallowed\"],[[65599,65613],\"valid\"],[[65614,65615],\"disallowed\"],[[65616,65629],\"valid\"],[[65630,65663],\"disallowed\"],[[65664,65786],\"valid\"],[[65787,65791],\"disallowed\"],[[65792,65794],\"valid\",[],\"NV8\"],[[65795,65798],\"disallowed\"],[[65799,65843],\"valid\",[],\"NV8\"],[[65844,65846],\"disallowed\"],[[65847,65855],\"valid\",[],\"NV8\"],[[65856,65930],\"valid\",[],\"NV8\"],[[65931,65932],\"valid\",[],\"NV8\"],[[65933,65935],\"disallowed\"],[[65936,65947],\"valid\",[],\"NV8\"],[[65948,65951],\"disallowed\"],[[65952,65952],\"valid\",[],\"NV8\"],[[65953,65999],\"disallowed\"],[[66000,66044],\"valid\",[],\"NV8\"],[[66045,66045],\"valid\"],[[66046,66175],\"disallowed\"],[[66176,66204],\"valid\"],[[66205,66207],\"disallowed\"],[[66208,66256],\"valid\"],[[66257,66271],\"disallowed\"],[[66272,66272],\"valid\"],[[66273,66299],\"valid\",[],\"NV8\"],[[66300,66303],\"disallowed\"],[[66304,66334],\"valid\"],[[66335,66335],\"valid\"],[[66336,66339],\"valid\",[],\"NV8\"],[[66340,66351],\"disallowed\"],[[66352,66368],\"valid\"],[[66369,66369],\"valid\",[],\"NV8\"],[[66370,66377],\"valid\"],[[66378,66378],\"valid\",[],\"NV8\"],[[66379,66383],\"disallowed\"],[[66384,66426],\"valid\"],[[66427,66431],\"disallowed\"],[[66432,66461],\"valid\"],[[66462,66462],\"disallowed\"],[[66463,66463],\"valid\",[],\"NV8\"],[[66464,66499],\"valid\"],[[66500,66503],\"disallowed\"],[[66504,66511],\"valid\"],[[66512,66517],\"valid\",[],\"NV8\"],[[66518,66559],\"disallowed\"],[[66560,66560],\"mapped\",[66600]],[[66561,66561],\"mapped\",[66601]],[[66562,66562],\"mapped\",[66602]],[[66563,66563],\"mapped\",[66603]],[[66564,66564],\"mapped\",[66604]],[[66565,66565],\"mapped\",[66605]],[[66566,66566],\"mapped\",[66606]],[[66567,66567],\"mapped\",[66607]],[[66568,66568],\"mapped\",[66608]],[[66569,66569],\"mapped\",[66609]],[[66570,66570],\"mapped\",[66610]],[[66571,66571],\"mapped\",[66611]],[[66572,66572],\"mapped\",[66612]],[[66573,66573],\"mapped\",[66613]],[[66574,66574],\"mapped\",[66614]],[[66575,66575],\"mapped\",[66615]],[[66576,66576],\"mapped\",[66616]],[[66577,66577],\"mapped\",[66617]],[[66578,66578],\"mapped\",[66618]],[[66579,66579],\"mapped\",[66619]],[[66580,66580],\"mapped\",[66620]],[[66581,66581],\"mapped\",[66621]],[[66582,66582],\"mapped\",[66622]],[[66583,66583],\"mapped\",[66623]],[[66584,66584],\"mapped\",[66624]],[[66585,66585],\"mapped\",[66625]],[[66586,66586],\"mapped\",[66626]],[[66587,66587],\"mapped\",[66627]],[[66588,66588],\"mapped\",[66628]],[[66589,66589],\"mapped\",[66629]],[[66590,66590],\"mapped\",[66630]],[[66591,66591],\"mapped\",[66631]],[[66592,66592],\"mapped\",[66632]],[[66593,66593],\"mapped\",[66633]],[[66594,66594],\"mapped\",[66634]],[[66595,66595],\"mapped\",[66635]],[[66596,66596],\"mapped\",[66636]],[[66597,66597],\"mapped\",[66637]],[[66598,66598],\"mapped\",[66638]],[[66599,66599],\"mapped\",[66639]],[[66600,66637],\"valid\"],[[66638,66717],\"valid\"],[[66718,66719],\"disallowed\"],[[66720,66729],\"valid\"],[[66730,66815],\"disallowed\"],[[66816,66855],\"valid\"],[[66856,66863],\"disallowed\"],[[66864,66915],\"valid\"],[[66916,66926],\"disallowed\"],[[66927,66927],\"valid\",[],\"NV8\"],[[66928,67071],\"disallowed\"],[[67072,67382],\"valid\"],[[67383,67391],\"disallowed\"],[[67392,67413],\"valid\"],[[67414,67423],\"disallowed\"],[[67424,67431],\"valid\"],[[67432,67583],\"disallowed\"],[[67584,67589],\"valid\"],[[67590,67591],\"disallowed\"],[[67592,67592],\"valid\"],[[67593,67593],\"disallowed\"],[[67594,67637],\"valid\"],[[67638,67638],\"disallowed\"],[[67639,67640],\"valid\"],[[67641,67643],\"disallowed\"],[[67644,67644],\"valid\"],[[67645,67646],\"disallowed\"],[[67647,67647],\"valid\"],[[67648,67669],\"valid\"],[[67670,67670],\"disallowed\"],[[67671,67679],\"valid\",[],\"NV8\"],[[67680,67702],\"valid\"],[[67703,67711],\"valid\",[],\"NV8\"],[[67712,67742],\"valid\"],[[67743,67750],\"disallowed\"],[[67751,67759],\"valid\",[],\"NV8\"],[[67760,67807],\"disallowed\"],[[67808,67826],\"valid\"],[[67827,67827],\"disallowed\"],[[67828,67829],\"valid\"],[[67830,67834],\"disallowed\"],[[67835,67839],\"valid\",[],\"NV8\"],[[67840,67861],\"valid\"],[[67862,67865],\"valid\",[],\"NV8\"],[[67866,67867],\"valid\",[],\"NV8\"],[[67868,67870],\"disallowed\"],[[67871,67871],\"valid\",[],\"NV8\"],[[67872,67897],\"valid\"],[[67898,67902],\"disallowed\"],[[67903,67903],\"valid\",[],\"NV8\"],[[67904,67967],\"disallowed\"],[[67968,68023],\"valid\"],[[68024,68027],\"disallowed\"],[[68028,68029],\"valid\",[],\"NV8\"],[[68030,68031],\"valid\"],[[68032,68047],\"valid\",[],\"NV8\"],[[68048,68049],\"disallowed\"],[[68050,68095],\"valid\",[],\"NV8\"],[[68096,68099],\"valid\"],[[68100,68100],\"disallowed\"],[[68101,68102],\"valid\"],[[68103,68107],\"disallowed\"],[[68108,68115],\"valid\"],[[68116,68116],\"disallowed\"],[[68117,68119],\"valid\"],[[68120,68120],\"disallowed\"],[[68121,68147],\"valid\"],[[68148,68151],\"disallowed\"],[[68152,68154],\"valid\"],[[68155,68158],\"disallowed\"],[[68159,68159],\"valid\"],[[68160,68167],\"valid\",[],\"NV8\"],[[68168,68175],\"disallowed\"],[[68176,68184],\"valid\",[],\"NV8\"],[[68185,68191],\"disallowed\"],[[68192,68220],\"valid\"],[[68221,68223],\"valid\",[],\"NV8\"],[[68224,68252],\"valid\"],[[68253,68255],\"valid\",[],\"NV8\"],[[68256,68287],\"disallowed\"],[[68288,68295],\"valid\"],[[68296,68296],\"valid\",[],\"NV8\"],[[68297,68326],\"valid\"],[[68327,68330],\"disallowed\"],[[68331,68342],\"valid\",[],\"NV8\"],[[68343,68351],\"disallowed\"],[[68352,68405],\"valid\"],[[68406,68408],\"disallowed\"],[[68409,68415],\"valid\",[],\"NV8\"],[[68416,68437],\"valid\"],[[68438,68439],\"disallowed\"],[[68440,68447],\"valid\",[],\"NV8\"],[[68448,68466],\"valid\"],[[68467,68471],\"disallowed\"],[[68472,68479],\"valid\",[],\"NV8\"],[[68480,68497],\"valid\"],[[68498,68504],\"disallowed\"],[[68505,68508],\"valid\",[],\"NV8\"],[[68509,68520],\"disallowed\"],[[68521,68527],\"valid\",[],\"NV8\"],[[68528,68607],\"disallowed\"],[[68608,68680],\"valid\"],[[68681,68735],\"disallowed\"],[[68736,68736],\"mapped\",[68800]],[[68737,68737],\"mapped\",[68801]],[[68738,68738],\"mapped\",[68802]],[[68739,68739],\"mapped\",[68803]],[[68740,68740],\"mapped\",[68804]],[[68741,68741],\"mapped\",[68805]],[[68742,68742],\"mapped\",[68806]],[[68743,68743],\"mapped\",[68807]],[[68744,68744],\"mapped\",[68808]],[[68745,68745],\"mapped\",[68809]],[[68746,68746],\"mapped\",[68810]],[[68747,68747],\"mapped\",[68811]],[[68748,68748],\"mapped\",[68812]],[[68749,68749],\"mapped\",[68813]],[[68750,68750],\"mapped\",[68814]],[[68751,68751],\"mapped\",[68815]],[[68752,68752],\"mapped\",[68816]],[[68753,68753],\"mapped\",[68817]],[[68754,68754],\"mapped\",[68818]],[[68755,68755],\"mapped\",[68819]],[[68756,68756],\"mapped\",[68820]],[[68757,68757],\"mapped\",[68821]],[[68758,68758],\"mapped\",[68822]],[[68759,68759],\"mapped\",[68823]],[[68760,68760],\"mapped\",[68824]],[[68761,68761],\"mapped\",[68825]],[[68762,68762],\"mapped\",[68826]],[[68763,68763],\"mapped\",[68827]],[[68764,68764],\"mapped\",[68828]],[[68765,68765],\"mapped\",[68829]],[[68766,68766],\"mapped\",[68830]],[[68767,68767],\"mapped\",[68831]],[[68768,68768],\"mapped\",[68832]],[[68769,68769],\"mapped\",[68833]],[[68770,68770],\"mapped\",[68834]],[[68771,68771],\"mapped\",[68835]],[[68772,68772],\"mapped\",[68836]],[[68773,68773],\"mapped\",[68837]],[[68774,68774],\"mapped\",[68838]],[[68775,68775],\"mapped\",[68839]],[[68776,68776],\"mapped\",[68840]],[[68777,68777],\"mapped\",[68841]],[[68778,68778],\"mapped\",[68842]],[[68779,68779],\"mapped\",[68843]],[[68780,68780],\"mapped\",[68844]],[[68781,68781],\"mapped\",[68845]],[[68782,68782],\"mapped\",[68846]],[[68783,68783],\"mapped\",[68847]],[[68784,68784],\"mapped\",[68848]],[[68785,68785],\"mapped\",[68849]],[[68786,68786],\"mapped\",[68850]],[[68787,68799],\"disallowed\"],[[68800,68850],\"valid\"],[[68851,68857],\"disallowed\"],[[68858,68863],\"valid\",[],\"NV8\"],[[68864,69215],\"disallowed\"],[[69216,69246],\"valid\",[],\"NV8\"],[[69247,69631],\"disallowed\"],[[69632,69702],\"valid\"],[[69703,69709],\"valid\",[],\"NV8\"],[[69710,69713],\"disallowed\"],[[69714,69733],\"valid\",[],\"NV8\"],[[69734,69743],\"valid\"],[[69744,69758],\"disallowed\"],[[69759,69759],\"valid\"],[[69760,69818],\"valid\"],[[69819,69820],\"valid\",[],\"NV8\"],[[69821,69821],\"disallowed\"],[[69822,69825],\"valid\",[],\"NV8\"],[[69826,69839],\"disallowed\"],[[69840,69864],\"valid\"],[[69865,69871],\"disallowed\"],[[69872,69881],\"valid\"],[[69882,69887],\"disallowed\"],[[69888,69940],\"valid\"],[[69941,69941],\"disallowed\"],[[69942,69951],\"valid\"],[[69952,69955],\"valid\",[],\"NV8\"],[[69956,69967],\"disallowed\"],[[69968,70003],\"valid\"],[[70004,70005],\"valid\",[],\"NV8\"],[[70006,70006],\"valid\"],[[70007,70015],\"disallowed\"],[[70016,70084],\"valid\"],[[70085,70088],\"valid\",[],\"NV8\"],[[70089,70089],\"valid\",[],\"NV8\"],[[70090,70092],\"valid\"],[[70093,70093],\"valid\",[],\"NV8\"],[[70094,70095],\"disallowed\"],[[70096,70105],\"valid\"],[[70106,70106],\"valid\"],[[70107,70107],\"valid\",[],\"NV8\"],[[70108,70108],\"valid\"],[[70109,70111],\"valid\",[],\"NV8\"],[[70112,70112],\"disallowed\"],[[70113,70132],\"valid\",[],\"NV8\"],[[70133,70143],\"disallowed\"],[[70144,70161],\"valid\"],[[70162,70162],\"disallowed\"],[[70163,70199],\"valid\"],[[70200,70205],\"valid\",[],\"NV8\"],[[70206,70271],\"disallowed\"],[[70272,70278],\"valid\"],[[70279,70279],\"disallowed\"],[[70280,70280],\"valid\"],[[70281,70281],\"disallowed\"],[[70282,70285],\"valid\"],[[70286,70286],\"disallowed\"],[[70287,70301],\"valid\"],[[70302,70302],\"disallowed\"],[[70303,70312],\"valid\"],[[70313,70313],\"valid\",[],\"NV8\"],[[70314,70319],\"disallowed\"],[[70320,70378],\"valid\"],[[70379,70383],\"disallowed\"],[[70384,70393],\"valid\"],[[70394,70399],\"disallowed\"],[[70400,70400],\"valid\"],[[70401,70403],\"valid\"],[[70404,70404],\"disallowed\"],[[70405,70412],\"valid\"],[[70413,70414],\"disallowed\"],[[70415,70416],\"valid\"],[[70417,70418],\"disallowed\"],[[70419,70440],\"valid\"],[[70441,70441],\"disallowed\"],[[70442,70448],\"valid\"],[[70449,70449],\"disallowed\"],[[70450,70451],\"valid\"],[[70452,70452],\"disallowed\"],[[70453,70457],\"valid\"],[[70458,70459],\"disallowed\"],[[70460,70468],\"valid\"],[[70469,70470],\"disallowed\"],[[70471,70472],\"valid\"],[[70473,70474],\"disallowed\"],[[70475,70477],\"valid\"],[[70478,70479],\"disallowed\"],[[70480,70480],\"valid\"],[[70481,70486],\"disallowed\"],[[70487,70487],\"valid\"],[[70488,70492],\"disallowed\"],[[70493,70499],\"valid\"],[[70500,70501],\"disallowed\"],[[70502,70508],\"valid\"],[[70509,70511],\"disallowed\"],[[70512,70516],\"valid\"],[[70517,70783],\"disallowed\"],[[70784,70853],\"valid\"],[[70854,70854],\"valid\",[],\"NV8\"],[[70855,70855],\"valid\"],[[70856,70863],\"disallowed\"],[[70864,70873],\"valid\"],[[70874,71039],\"disallowed\"],[[71040,71093],\"valid\"],[[71094,71095],\"disallowed\"],[[71096,71104],\"valid\"],[[71105,71113],\"valid\",[],\"NV8\"],[[71114,71127],\"valid\",[],\"NV8\"],[[71128,71133],\"valid\"],[[71134,71167],\"disallowed\"],[[71168,71232],\"valid\"],[[71233,71235],\"valid\",[],\"NV8\"],[[71236,71236],\"valid\"],[[71237,71247],\"disallowed\"],[[71248,71257],\"valid\"],[[71258,71295],\"disallowed\"],[[71296,71351],\"valid\"],[[71352,71359],\"disallowed\"],[[71360,71369],\"valid\"],[[71370,71423],\"disallowed\"],[[71424,71449],\"valid\"],[[71450,71452],\"disallowed\"],[[71453,71467],\"valid\"],[[71468,71471],\"disallowed\"],[[71472,71481],\"valid\"],[[71482,71487],\"valid\",[],\"NV8\"],[[71488,71839],\"disallowed\"],[[71840,71840],\"mapped\",[71872]],[[71841,71841],\"mapped\",[71873]],[[71842,71842],\"mapped\",[71874]],[[71843,71843],\"mapped\",[71875]],[[71844,71844],\"mapped\",[71876]],[[71845,71845],\"mapped\",[71877]],[[71846,71846],\"mapped\",[71878]],[[71847,71847],\"mapped\",[71879]],[[71848,71848],\"mapped\",[71880]],[[71849,71849],\"mapped\",[71881]],[[71850,71850],\"mapped\",[71882]],[[71851,71851],\"mapped\",[71883]],[[71852,71852],\"mapped\",[71884]],[[71853,71853],\"mapped\",[71885]],[[71854,71854],\"mapped\",[71886]],[[71855,71855],\"mapped\",[71887]],[[71856,71856],\"mapped\",[71888]],[[71857,71857],\"mapped\",[71889]],[[71858,71858],\"mapped\",[71890]],[[71859,71859],\"mapped\",[71891]],[[71860,71860],\"mapped\",[71892]],[[71861,71861],\"mapped\",[71893]],[[71862,71862],\"mapped\",[71894]],[[71863,71863],\"mapped\",[71895]],[[71864,71864],\"mapped\",[71896]],[[71865,71865],\"mapped\",[71897]],[[71866,71866],\"mapped\",[71898]],[[71867,71867],\"mapped\",[71899]],[[71868,71868],\"mapped\",[71900]],[[71869,71869],\"mapped\",[71901]],[[71870,71870],\"mapped\",[71902]],[[71871,71871],\"mapped\",[71903]],[[71872,71913],\"valid\"],[[71914,71922],\"valid\",[],\"NV8\"],[[71923,71934],\"disallowed\"],[[71935,71935],\"valid\"],[[71936,72383],\"disallowed\"],[[72384,72440],\"valid\"],[[72441,73727],\"disallowed\"],[[73728,74606],\"valid\"],[[74607,74648],\"valid\"],[[74649,74649],\"valid\"],[[74650,74751],\"disallowed\"],[[74752,74850],\"valid\",[],\"NV8\"],[[74851,74862],\"valid\",[],\"NV8\"],[[74863,74863],\"disallowed\"],[[74864,74867],\"valid\",[],\"NV8\"],[[74868,74868],\"valid\",[],\"NV8\"],[[74869,74879],\"disallowed\"],[[74880,75075],\"valid\"],[[75076,77823],\"disallowed\"],[[77824,78894],\"valid\"],[[78895,82943],\"disallowed\"],[[82944,83526],\"valid\"],[[83527,92159],\"disallowed\"],[[92160,92728],\"valid\"],[[92729,92735],\"disallowed\"],[[92736,92766],\"valid\"],[[92767,92767],\"disallowed\"],[[92768,92777],\"valid\"],[[92778,92781],\"disallowed\"],[[92782,92783],\"valid\",[],\"NV8\"],[[92784,92879],\"disallowed\"],[[92880,92909],\"valid\"],[[92910,92911],\"disallowed\"],[[92912,92916],\"valid\"],[[92917,92917],\"valid\",[],\"NV8\"],[[92918,92927],\"disallowed\"],[[92928,92982],\"valid\"],[[92983,92991],\"valid\",[],\"NV8\"],[[92992,92995],\"valid\"],[[92996,92997],\"valid\",[],\"NV8\"],[[92998,93007],\"disallowed\"],[[93008,93017],\"valid\"],[[93018,93018],\"disallowed\"],[[93019,93025],\"valid\",[],\"NV8\"],[[93026,93026],\"disallowed\"],[[93027,93047],\"valid\"],[[93048,93052],\"disallowed\"],[[93053,93071],\"valid\"],[[93072,93951],\"disallowed\"],[[93952,94020],\"valid\"],[[94021,94031],\"disallowed\"],[[94032,94078],\"valid\"],[[94079,94094],\"disallowed\"],[[94095,94111],\"valid\"],[[94112,110591],\"disallowed\"],[[110592,110593],\"valid\"],[[110594,113663],\"disallowed\"],[[113664,113770],\"valid\"],[[113771,113775],\"disallowed\"],[[113776,113788],\"valid\"],[[113789,113791],\"disallowed\"],[[113792,113800],\"valid\"],[[113801,113807],\"disallowed\"],[[113808,113817],\"valid\"],[[113818,113819],\"disallowed\"],[[113820,113820],\"valid\",[],\"NV8\"],[[113821,113822],\"valid\"],[[113823,113823],\"valid\",[],\"NV8\"],[[113824,113827],\"ignored\"],[[113828,118783],\"disallowed\"],[[118784,119029],\"valid\",[],\"NV8\"],[[119030,119039],\"disallowed\"],[[119040,119078],\"valid\",[],\"NV8\"],[[119079,119080],\"disallowed\"],[[119081,119081],\"valid\",[],\"NV8\"],[[119082,119133],\"valid\",[],\"NV8\"],[[119134,119134],\"mapped\",[119127,119141]],[[119135,119135],\"mapped\",[119128,119141]],[[119136,119136],\"mapped\",[119128,119141,119150]],[[119137,119137],\"mapped\",[119128,119141,119151]],[[119138,119138],\"mapped\",[119128,119141,119152]],[[119139,119139],\"mapped\",[119128,119141,119153]],[[119140,119140],\"mapped\",[119128,119141,119154]],[[119141,119154],\"valid\",[],\"NV8\"],[[119155,119162],\"disallowed\"],[[119163,119226],\"valid\",[],\"NV8\"],[[119227,119227],\"mapped\",[119225,119141]],[[119228,119228],\"mapped\",[119226,119141]],[[119229,119229],\"mapped\",[119225,119141,119150]],[[119230,119230],\"mapped\",[119226,119141,119150]],[[119231,119231],\"mapped\",[119225,119141,119151]],[[119232,119232],\"mapped\",[119226,119141,119151]],[[119233,119261],\"valid\",[],\"NV8\"],[[119262,119272],\"valid\",[],\"NV8\"],[[119273,119295],\"disallowed\"],[[119296,119365],\"valid\",[],\"NV8\"],[[119366,119551],\"disallowed\"],[[119552,119638],\"valid\",[],\"NV8\"],[[119639,119647],\"disallowed\"],[[119648,119665],\"valid\",[],\"NV8\"],[[119666,119807],\"disallowed\"],[[119808,119808],\"mapped\",[97]],[[119809,119809],\"mapped\",[98]],[[119810,119810],\"mapped\",[99]],[[119811,119811],\"mapped\",[100]],[[119812,119812],\"mapped\",[101]],[[119813,119813],\"mapped\",[102]],[[119814,119814],\"mapped\",[103]],[[119815,119815],\"mapped\",[104]],[[119816,119816],\"mapped\",[105]],[[119817,119817],\"mapped\",[106]],[[119818,119818],\"mapped\",[107]],[[119819,119819],\"mapped\",[108]],[[119820,119820],\"mapped\",[109]],[[119821,119821],\"mapped\",[110]],[[119822,119822],\"mapped\",[111]],[[119823,119823],\"mapped\",[112]],[[119824,119824],\"mapped\",[113]],[[119825,119825],\"mapped\",[114]],[[119826,119826],\"mapped\",[115]],[[119827,119827],\"mapped\",[116]],[[119828,119828],\"mapped\",[117]],[[119829,119829],\"mapped\",[118]],[[119830,119830],\"mapped\",[119]],[[119831,119831],\"mapped\",[120]],[[119832,119832],\"mapped\",[121]],[[119833,119833],\"mapped\",[122]],[[119834,119834],\"mapped\",[97]],[[119835,119835],\"mapped\",[98]],[[119836,119836],\"mapped\",[99]],[[119837,119837],\"mapped\",[100]],[[119838,119838],\"mapped\",[101]],[[119839,119839],\"mapped\",[102]],[[119840,119840],\"mapped\",[103]],[[119841,119841],\"mapped\",[104]],[[119842,119842],\"mapped\",[105]],[[119843,119843],\"mapped\",[106]],[[119844,119844],\"mapped\",[107]],[[119845,119845],\"mapped\",[108]],[[119846,119846],\"mapped\",[109]],[[119847,119847],\"mapped\",[110]],[[119848,119848],\"mapped\",[111]],[[119849,119849],\"mapped\",[112]],[[119850,119850],\"mapped\",[113]],[[119851,119851],\"mapped\",[114]],[[119852,119852],\"mapped\",[115]],[[119853,119853],\"mapped\",[116]],[[119854,119854],\"mapped\",[117]],[[119855,119855],\"mapped\",[118]],[[119856,119856],\"mapped\",[119]],[[119857,119857],\"mapped\",[120]],[[119858,119858],\"mapped\",[121]],[[119859,119859],\"mapped\",[122]],[[119860,119860],\"mapped\",[97]],[[119861,119861],\"mapped\",[98]],[[119862,119862],\"mapped\",[99]],[[119863,119863],\"mapped\",[100]],[[119864,119864],\"mapped\",[101]],[[119865,119865],\"mapped\",[102]],[[119866,119866],\"mapped\",[103]],[[119867,119867],\"mapped\",[104]],[[119868,119868],\"mapped\",[105]],[[119869,119869],\"mapped\",[106]],[[119870,119870],\"mapped\",[107]],[[119871,119871],\"mapped\",[108]],[[119872,119872],\"mapped\",[109]],[[119873,119873],\"mapped\",[110]],[[119874,119874],\"mapped\",[111]],[[119875,119875],\"mapped\",[112]],[[119876,119876],\"mapped\",[113]],[[119877,119877],\"mapped\",[114]],[[119878,119878],\"mapped\",[115]],[[119879,119879],\"mapped\",[116]],[[119880,119880],\"mapped\",[117]],[[119881,119881],\"mapped\",[118]],[[119882,119882],\"mapped\",[119]],[[119883,119883],\"mapped\",[120]],[[119884,119884],\"mapped\",[121]],[[119885,119885],\"mapped\",[122]],[[119886,119886],\"mapped\",[97]],[[119887,119887],\"mapped\",[98]],[[119888,119888],\"mapped\",[99]],[[119889,119889],\"mapped\",[100]],[[119890,119890],\"mapped\",[101]],[[119891,119891],\"mapped\",[102]],[[119892,119892],\"mapped\",[103]],[[119893,119893],\"disallowed\"],[[119894,119894],\"mapped\",[105]],[[119895,119895],\"mapped\",[106]],[[119896,119896],\"mapped\",[107]],[[119897,119897],\"mapped\",[108]],[[119898,119898],\"mapped\",[109]],[[119899,119899],\"mapped\",[110]],[[119900,119900],\"mapped\",[111]],[[119901,119901],\"mapped\",[112]],[[119902,119902],\"mapped\",[113]],[[119903,119903],\"mapped\",[114]],[[119904,119904],\"mapped\",[115]],[[119905,119905],\"mapped\",[116]],[[119906,119906],\"mapped\",[117]],[[119907,119907],\"mapped\",[118]],[[119908,119908],\"mapped\",[119]],[[119909,119909],\"mapped\",[120]],[[119910,119910],\"mapped\",[121]],[[119911,119911],\"mapped\",[122]],[[119912,119912],\"mapped\",[97]],[[119913,119913],\"mapped\",[98]],[[119914,119914],\"mapped\",[99]],[[119915,119915],\"mapped\",[100]],[[119916,119916],\"mapped\",[101]],[[119917,119917],\"mapped\",[102]],[[119918,119918],\"mapped\",[103]],[[119919,119919],\"mapped\",[104]],[[119920,119920],\"mapped\",[105]],[[119921,119921],\"mapped\",[106]],[[119922,119922],\"mapped\",[107]],[[119923,119923],\"mapped\",[108]],[[119924,119924],\"mapped\",[109]],[[119925,119925],\"mapped\",[110]],[[119926,119926],\"mapped\",[111]],[[119927,119927],\"mapped\",[112]],[[119928,119928],\"mapped\",[113]],[[119929,119929],\"mapped\",[114]],[[119930,119930],\"mapped\",[115]],[[119931,119931],\"mapped\",[116]],[[119932,119932],\"mapped\",[117]],[[119933,119933],\"mapped\",[118]],[[119934,119934],\"mapped\",[119]],[[119935,119935],\"mapped\",[120]],[[119936,119936],\"mapped\",[121]],[[119937,119937],\"mapped\",[122]],[[119938,119938],\"mapped\",[97]],[[119939,119939],\"mapped\",[98]],[[119940,119940],\"mapped\",[99]],[[119941,119941],\"mapped\",[100]],[[119942,119942],\"mapped\",[101]],[[119943,119943],\"mapped\",[102]],[[119944,119944],\"mapped\",[103]],[[119945,119945],\"mapped\",[104]],[[119946,119946],\"mapped\",[105]],[[119947,119947],\"mapped\",[106]],[[119948,119948],\"mapped\",[107]],[[119949,119949],\"mapped\",[108]],[[119950,119950],\"mapped\",[109]],[[119951,119951],\"mapped\",[110]],[[119952,119952],\"mapped\",[111]],[[119953,119953],\"mapped\",[112]],[[119954,119954],\"mapped\",[113]],[[119955,119955],\"mapped\",[114]],[[119956,119956],\"mapped\",[115]],[[119957,119957],\"mapped\",[116]],[[119958,119958],\"mapped\",[117]],[[119959,119959],\"mapped\",[118]],[[119960,119960],\"mapped\",[119]],[[119961,119961],\"mapped\",[120]],[[119962,119962],\"mapped\",[121]],[[119963,119963],\"mapped\",[122]],[[119964,119964],\"mapped\",[97]],[[119965,119965],\"disallowed\"],[[119966,119966],\"mapped\",[99]],[[119967,119967],\"mapped\",[100]],[[119968,119969],\"disallowed\"],[[119970,119970],\"mapped\",[103]],[[119971,119972],\"disallowed\"],[[119973,119973],\"mapped\",[106]],[[119974,119974],\"mapped\",[107]],[[119975,119976],\"disallowed\"],[[119977,119977],\"mapped\",[110]],[[119978,119978],\"mapped\",[111]],[[119979,119979],\"mapped\",[112]],[[119980,119980],\"mapped\",[113]],[[119981,119981],\"disallowed\"],[[119982,119982],\"mapped\",[115]],[[119983,119983],\"mapped\",[116]],[[119984,119984],\"mapped\",[117]],[[119985,119985],\"mapped\",[118]],[[119986,119986],\"mapped\",[119]],[[119987,119987],\"mapped\",[120]],[[119988,119988],\"mapped\",[121]],[[119989,119989],\"mapped\",[122]],[[119990,119990],\"mapped\",[97]],[[119991,119991],\"mapped\",[98]],[[119992,119992],\"mapped\",[99]],[[119993,119993],\"mapped\",[100]],[[119994,119994],\"disallowed\"],[[119995,119995],\"mapped\",[102]],[[119996,119996],\"disallowed\"],[[119997,119997],\"mapped\",[104]],[[119998,119998],\"mapped\",[105]],[[119999,119999],\"mapped\",[106]],[[120000,120000],\"mapped\",[107]],[[120001,120001],\"mapped\",[108]],[[120002,120002],\"mapped\",[109]],[[120003,120003],\"mapped\",[110]],[[120004,120004],\"disallowed\"],[[120005,120005],\"mapped\",[112]],[[120006,120006],\"mapped\",[113]],[[120007,120007],\"mapped\",[114]],[[120008,120008],\"mapped\",[115]],[[120009,120009],\"mapped\",[116]],[[120010,120010],\"mapped\",[117]],[[120011,120011],\"mapped\",[118]],[[120012,120012],\"mapped\",[119]],[[120013,120013],\"mapped\",[120]],[[120014,120014],\"mapped\",[121]],[[120015,120015],\"mapped\",[122]],[[120016,120016],\"mapped\",[97]],[[120017,120017],\"mapped\",[98]],[[120018,120018],\"mapped\",[99]],[[120019,120019],\"mapped\",[100]],[[120020,120020],\"mapped\",[101]],[[120021,120021],\"mapped\",[102]],[[120022,120022],\"mapped\",[103]],[[120023,120023],\"mapped\",[104]],[[120024,120024],\"mapped\",[105]],[[120025,120025],\"mapped\",[106]],[[120026,120026],\"mapped\",[107]],[[120027,120027],\"mapped\",[108]],[[120028,120028],\"mapped\",[109]],[[120029,120029],\"mapped\",[110]],[[120030,120030],\"mapped\",[111]],[[120031,120031],\"mapped\",[112]],[[120032,120032],\"mapped\",[113]],[[120033,120033],\"mapped\",[114]],[[120034,120034],\"mapped\",[115]],[[120035,120035],\"mapped\",[116]],[[120036,120036],\"mapped\",[117]],[[120037,120037],\"mapped\",[118]],[[120038,120038],\"mapped\",[119]],[[120039,120039],\"mapped\",[120]],[[120040,120040],\"mapped\",[121]],[[120041,120041],\"mapped\",[122]],[[120042,120042],\"mapped\",[97]],[[120043,120043],\"mapped\",[98]],[[120044,120044],\"mapped\",[99]],[[120045,120045],\"mapped\",[100]],[[120046,120046],\"mapped\",[101]],[[120047,120047],\"mapped\",[102]],[[120048,120048],\"mapped\",[103]],[[120049,120049],\"mapped\",[104]],[[120050,120050],\"mapped\",[105]],[[120051,120051],\"mapped\",[106]],[[120052,120052],\"mapped\",[107]],[[120053,120053],\"mapped\",[108]],[[120054,120054],\"mapped\",[109]],[[120055,120055],\"mapped\",[110]],[[120056,120056],\"mapped\",[111]],[[120057,120057],\"mapped\",[112]],[[120058,120058],\"mapped\",[113]],[[120059,120059],\"mapped\",[114]],[[120060,120060],\"mapped\",[115]],[[120061,120061],\"mapped\",[116]],[[120062,120062],\"mapped\",[117]],[[120063,120063],\"mapped\",[118]],[[120064,120064],\"mapped\",[119]],[[120065,120065],\"mapped\",[120]],[[120066,120066],\"mapped\",[121]],[[120067,120067],\"mapped\",[122]],[[120068,120068],\"mapped\",[97]],[[120069,120069],\"mapped\",[98]],[[120070,120070],\"disallowed\"],[[120071,120071],\"mapped\",[100]],[[120072,120072],\"mapped\",[101]],[[120073,120073],\"mapped\",[102]],[[120074,120074],\"mapped\",[103]],[[120075,120076],\"disallowed\"],[[120077,120077],\"mapped\",[106]],[[120078,120078],\"mapped\",[107]],[[120079,120079],\"mapped\",[108]],[[120080,120080],\"mapped\",[109]],[[120081,120081],\"mapped\",[110]],[[120082,120082],\"mapped\",[111]],[[120083,120083],\"mapped\",[112]],[[120084,120084],\"mapped\",[113]],[[120085,120085],\"disallowed\"],[[120086,120086],\"mapped\",[115]],[[120087,120087],\"mapped\",[116]],[[120088,120088],\"mapped\",[117]],[[120089,120089],\"mapped\",[118]],[[120090,120090],\"mapped\",[119]],[[120091,120091],\"mapped\",[120]],[[120092,120092],\"mapped\",[121]],[[120093,120093],\"disallowed\"],[[120094,120094],\"mapped\",[97]],[[120095,120095],\"mapped\",[98]],[[120096,120096],\"mapped\",[99]],[[120097,120097],\"mapped\",[100]],[[120098,120098],\"mapped\",[101]],[[120099,120099],\"mapped\",[102]],[[120100,120100],\"mapped\",[103]],[[120101,120101],\"mapped\",[104]],[[120102,120102],\"mapped\",[105]],[[120103,120103],\"mapped\",[106]],[[120104,120104],\"mapped\",[107]],[[120105,120105],\"mapped\",[108]],[[120106,120106],\"mapped\",[109]],[[120107,120107],\"mapped\",[110]],[[120108,120108],\"mapped\",[111]],[[120109,120109],\"mapped\",[112]],[[120110,120110],\"mapped\",[113]],[[120111,120111],\"mapped\",[114]],[[120112,120112],\"mapped\",[115]],[[120113,120113],\"mapped\",[116]],[[120114,120114],\"mapped\",[117]],[[120115,120115],\"mapped\",[118]],[[120116,120116],\"mapped\",[119]],[[120117,120117],\"mapped\",[120]],[[120118,120118],\"mapped\",[121]],[[120119,120119],\"mapped\",[122]],[[120120,120120],\"mapped\",[97]],[[120121,120121],\"mapped\",[98]],[[120122,120122],\"disallowed\"],[[120123,120123],\"mapped\",[100]],[[120124,120124],\"mapped\",[101]],[[120125,120125],\"mapped\",[102]],[[120126,120126],\"mapped\",[103]],[[120127,120127],\"disallowed\"],[[120128,120128],\"mapped\",[105]],[[120129,120129],\"mapped\",[106]],[[120130,120130],\"mapped\",[107]],[[120131,120131],\"mapped\",[108]],[[120132,120132],\"mapped\",[109]],[[120133,120133],\"disallowed\"],[[120134,120134],\"mapped\",[111]],[[120135,120137],\"disallowed\"],[[120138,120138],\"mapped\",[115]],[[120139,120139],\"mapped\",[116]],[[120140,120140],\"mapped\",[117]],[[120141,120141],\"mapped\",[118]],[[120142,120142],\"mapped\",[119]],[[120143,120143],\"mapped\",[120]],[[120144,120144],\"mapped\",[121]],[[120145,120145],\"disallowed\"],[[120146,120146],\"mapped\",[97]],[[120147,120147],\"mapped\",[98]],[[120148,120148],\"mapped\",[99]],[[120149,120149],\"mapped\",[100]],[[120150,120150],\"mapped\",[101]],[[120151,120151],\"mapped\",[102]],[[120152,120152],\"mapped\",[103]],[[120153,120153],\"mapped\",[104]],[[120154,120154],\"mapped\",[105]],[[120155,120155],\"mapped\",[106]],[[120156,120156],\"mapped\",[107]],[[120157,120157],\"mapped\",[108]],[[120158,120158],\"mapped\",[109]],[[120159,120159],\"mapped\",[110]],[[120160,120160],\"mapped\",[111]],[[120161,120161],\"mapped\",[112]],[[120162,120162],\"mapped\",[113]],[[120163,120163],\"mapped\",[114]],[[120164,120164],\"mapped\",[115]],[[120165,120165],\"mapped\",[116]],[[120166,120166],\"mapped\",[117]],[[120167,120167],\"mapped\",[118]],[[120168,120168],\"mapped\",[119]],[[120169,120169],\"mapped\",[120]],[[120170,120170],\"mapped\",[121]],[[120171,120171],\"mapped\",[122]],[[120172,120172],\"mapped\",[97]],[[120173,120173],\"mapped\",[98]],[[120174,120174],\"mapped\",[99]],[[120175,120175],\"mapped\",[100]],[[120176,120176],\"mapped\",[101]],[[120177,120177],\"mapped\",[102]],[[120178,120178],\"mapped\",[103]],[[120179,120179],\"mapped\",[104]],[[120180,120180],\"mapped\",[105]],[[120181,120181],\"mapped\",[106]],[[120182,120182],\"mapped\",[107]],[[120183,120183],\"mapped\",[108]],[[120184,120184],\"mapped\",[109]],[[120185,120185],\"mapped\",[110]],[[120186,120186],\"mapped\",[111]],[[120187,120187],\"mapped\",[112]],[[120188,120188],\"mapped\",[113]],[[120189,120189],\"mapped\",[114]],[[120190,120190],\"mapped\",[115]],[[120191,120191],\"mapped\",[116]],[[120192,120192],\"mapped\",[117]],[[120193,120193],\"mapped\",[118]],[[120194,120194],\"mapped\",[119]],[[120195,120195],\"mapped\",[120]],[[120196,120196],\"mapped\",[121]],[[120197,120197],\"mapped\",[122]],[[120198,120198],\"mapped\",[97]],[[120199,120199],\"mapped\",[98]],[[120200,120200],\"mapped\",[99]],[[120201,120201],\"mapped\",[100]],[[120202,120202],\"mapped\",[101]],[[120203,120203],\"mapped\",[102]],[[120204,120204],\"mapped\",[103]],[[120205,120205],\"mapped\",[104]],[[120206,120206],\"mapped\",[105]],[[120207,120207],\"mapped\",[106]],[[120208,120208],\"mapped\",[107]],[[120209,120209],\"mapped\",[108]],[[120210,120210],\"mapped\",[109]],[[120211,120211],\"mapped\",[110]],[[120212,120212],\"mapped\",[111]],[[120213,120213],\"mapped\",[112]],[[120214,120214],\"mapped\",[113]],[[120215,120215],\"mapped\",[114]],[[120216,120216],\"mapped\",[115]],[[120217,120217],\"mapped\",[116]],[[120218,120218],\"mapped\",[117]],[[120219,120219],\"mapped\",[118]],[[120220,120220],\"mapped\",[119]],[[120221,120221],\"mapped\",[120]],[[120222,120222],\"mapped\",[121]],[[120223,120223],\"mapped\",[122]],[[120224,120224],\"mapped\",[97]],[[120225,120225],\"mapped\",[98]],[[120226,120226],\"mapped\",[99]],[[120227,120227],\"mapped\",[100]],[[120228,120228],\"mapped\",[101]],[[120229,120229],\"mapped\",[102]],[[120230,120230],\"mapped\",[103]],[[120231,120231],\"mapped\",[104]],[[120232,120232],\"mapped\",[105]],[[120233,120233],\"mapped\",[106]],[[120234,120234],\"mapped\",[107]],[[120235,120235],\"mapped\",[108]],[[120236,120236],\"mapped\",[109]],[[120237,120237],\"mapped\",[110]],[[120238,120238],\"mapped\",[111]],[[120239,120239],\"mapped\",[112]],[[120240,120240],\"mapped\",[113]],[[120241,120241],\"mapped\",[114]],[[120242,120242],\"mapped\",[115]],[[120243,120243],\"mapped\",[116]],[[120244,120244],\"mapped\",[117]],[[120245,120245],\"mapped\",[118]],[[120246,120246],\"mapped\",[119]],[[120247,120247],\"mapped\",[120]],[[120248,120248],\"mapped\",[121]],[[120249,120249],\"mapped\",[122]],[[120250,120250],\"mapped\",[97]],[[120251,120251],\"mapped\",[98]],[[120252,120252],\"mapped\",[99]],[[120253,120253],\"mapped\",[100]],[[120254,120254],\"mapped\",[101]],[[120255,120255],\"mapped\",[102]],[[120256,120256],\"mapped\",[103]],[[120257,120257],\"mapped\",[104]],[[120258,120258],\"mapped\",[105]],[[120259,120259],\"mapped\",[106]],[[120260,120260],\"mapped\",[107]],[[120261,120261],\"mapped\",[108]],[[120262,120262],\"mapped\",[109]],[[120263,120263],\"mapped\",[110]],[[120264,120264],\"mapped\",[111]],[[120265,120265],\"mapped\",[112]],[[120266,120266],\"mapped\",[113]],[[120267,120267],\"mapped\",[114]],[[120268,120268],\"mapped\",[115]],[[120269,120269],\"mapped\",[116]],[[120270,120270],\"mapped\",[117]],[[120271,120271],\"mapped\",[118]],[[120272,120272],\"mapped\",[119]],[[120273,120273],\"mapped\",[120]],[[120274,120274],\"mapped\",[121]],[[120275,120275],\"mapped\",[122]],[[120276,120276],\"mapped\",[97]],[[120277,120277],\"mapped\",[98]],[[120278,120278],\"mapped\",[99]],[[120279,120279],\"mapped\",[100]],[[120280,120280],\"mapped\",[101]],[[120281,120281],\"mapped\",[102]],[[120282,120282],\"mapped\",[103]],[[120283,120283],\"mapped\",[104]],[[120284,120284],\"mapped\",[105]],[[120285,120285],\"mapped\",[106]],[[120286,120286],\"mapped\",[107]],[[120287,120287],\"mapped\",[108]],[[120288,120288],\"mapped\",[109]],[[120289,120289],\"mapped\",[110]],[[120290,120290],\"mapped\",[111]],[[120291,120291],\"mapped\",[112]],[[120292,120292],\"mapped\",[113]],[[120293,120293],\"mapped\",[114]],[[120294,120294],\"mapped\",[115]],[[120295,120295],\"mapped\",[116]],[[120296,120296],\"mapped\",[117]],[[120297,120297],\"mapped\",[118]],[[120298,120298],\"mapped\",[119]],[[120299,120299],\"mapped\",[120]],[[120300,120300],\"mapped\",[121]],[[120301,120301],\"mapped\",[122]],[[120302,120302],\"mapped\",[97]],[[120303,120303],\"mapped\",[98]],[[120304,120304],\"mapped\",[99]],[[120305,120305],\"mapped\",[100]],[[120306,120306],\"mapped\",[101]],[[120307,120307],\"mapped\",[102]],[[120308,120308],\"mapped\",[103]],[[120309,120309],\"mapped\",[104]],[[120310,120310],\"mapped\",[105]],[[120311,120311],\"mapped\",[106]],[[120312,120312],\"mapped\",[107]],[[120313,120313],\"mapped\",[108]],[[120314,120314],\"mapped\",[109]],[[120315,120315],\"mapped\",[110]],[[120316,120316],\"mapped\",[111]],[[120317,120317],\"mapped\",[112]],[[120318,120318],\"mapped\",[113]],[[120319,120319],\"mapped\",[114]],[[120320,120320],\"mapped\",[115]],[[120321,120321],\"mapped\",[116]],[[120322,120322],\"mapped\",[117]],[[120323,120323],\"mapped\",[118]],[[120324,120324],\"mapped\",[119]],[[120325,120325],\"mapped\",[120]],[[120326,120326],\"mapped\",[121]],[[120327,120327],\"mapped\",[122]],[[120328,120328],\"mapped\",[97]],[[120329,120329],\"mapped\",[98]],[[120330,120330],\"mapped\",[99]],[[120331,120331],\"mapped\",[100]],[[120332,120332],\"mapped\",[101]],[[120333,120333],\"mapped\",[102]],[[120334,120334],\"mapped\",[103]],[[120335,120335],\"mapped\",[104]],[[120336,120336],\"mapped\",[105]],[[120337,120337],\"mapped\",[106]],[[120338,120338],\"mapped\",[107]],[[120339,120339],\"mapped\",[108]],[[120340,120340],\"mapped\",[109]],[[120341,120341],\"mapped\",[110]],[[120342,120342],\"mapped\",[111]],[[120343,120343],\"mapped\",[112]],[[120344,120344],\"mapped\",[113]],[[120345,120345],\"mapped\",[114]],[[120346,120346],\"mapped\",[115]],[[120347,120347],\"mapped\",[116]],[[120348,120348],\"mapped\",[117]],[[120349,120349],\"mapped\",[118]],[[120350,120350],\"mapped\",[119]],[[120351,120351],\"mapped\",[120]],[[120352,120352],\"mapped\",[121]],[[120353,120353],\"mapped\",[122]],[[120354,120354],\"mapped\",[97]],[[120355,120355],\"mapped\",[98]],[[120356,120356],\"mapped\",[99]],[[120357,120357],\"mapped\",[100]],[[120358,120358],\"mapped\",[101]],[[120359,120359],\"mapped\",[102]],[[120360,120360],\"mapped\",[103]],[[120361,120361],\"mapped\",[104]],[[120362,120362],\"mapped\",[105]],[[120363,120363],\"mapped\",[106]],[[120364,120364],\"mapped\",[107]],[[120365,120365],\"mapped\",[108]],[[120366,120366],\"mapped\",[109]],[[120367,120367],\"mapped\",[110]],[[120368,120368],\"mapped\",[111]],[[120369,120369],\"mapped\",[112]],[[120370,120370],\"mapped\",[113]],[[120371,120371],\"mapped\",[114]],[[120372,120372],\"mapped\",[115]],[[120373,120373],\"mapped\",[116]],[[120374,120374],\"mapped\",[117]],[[120375,120375],\"mapped\",[118]],[[120376,120376],\"mapped\",[119]],[[120377,120377],\"mapped\",[120]],[[120378,120378],\"mapped\",[121]],[[120379,120379],\"mapped\",[122]],[[120380,120380],\"mapped\",[97]],[[120381,120381],\"mapped\",[98]],[[120382,120382],\"mapped\",[99]],[[120383,120383],\"mapped\",[100]],[[120384,120384],\"mapped\",[101]],[[120385,120385],\"mapped\",[102]],[[120386,120386],\"mapped\",[103]],[[120387,120387],\"mapped\",[104]],[[120388,120388],\"mapped\",[105]],[[120389,120389],\"mapped\",[106]],[[120390,120390],\"mapped\",[107]],[[120391,120391],\"mapped\",[108]],[[120392,120392],\"mapped\",[109]],[[120393,120393],\"mapped\",[110]],[[120394,120394],\"mapped\",[111]],[[120395,120395],\"mapped\",[112]],[[120396,120396],\"mapped\",[113]],[[120397,120397],\"mapped\",[114]],[[120398,120398],\"mapped\",[115]],[[120399,120399],\"mapped\",[116]],[[120400,120400],\"mapped\",[117]],[[120401,120401],\"mapped\",[118]],[[120402,120402],\"mapped\",[119]],[[120403,120403],\"mapped\",[120]],[[120404,120404],\"mapped\",[121]],[[120405,120405],\"mapped\",[122]],[[120406,120406],\"mapped\",[97]],[[120407,120407],\"mapped\",[98]],[[120408,120408],\"mapped\",[99]],[[120409,120409],\"mapped\",[100]],[[120410,120410],\"mapped\",[101]],[[120411,120411],\"mapped\",[102]],[[120412,120412],\"mapped\",[103]],[[120413,120413],\"mapped\",[104]],[[120414,120414],\"mapped\",[105]],[[120415,120415],\"mapped\",[106]],[[120416,120416],\"mapped\",[107]],[[120417,120417],\"mapped\",[108]],[[120418,120418],\"mapped\",[109]],[[120419,120419],\"mapped\",[110]],[[120420,120420],\"mapped\",[111]],[[120421,120421],\"mapped\",[112]],[[120422,120422],\"mapped\",[113]],[[120423,120423],\"mapped\",[114]],[[120424,120424],\"mapped\",[115]],[[120425,120425],\"mapped\",[116]],[[120426,120426],\"mapped\",[117]],[[120427,120427],\"mapped\",[118]],[[120428,120428],\"mapped\",[119]],[[120429,120429],\"mapped\",[120]],[[120430,120430],\"mapped\",[121]],[[120431,120431],\"mapped\",[122]],[[120432,120432],\"mapped\",[97]],[[120433,120433],\"mapped\",[98]],[[120434,120434],\"mapped\",[99]],[[120435,120435],\"mapped\",[100]],[[120436,120436],\"mapped\",[101]],[[120437,120437],\"mapped\",[102]],[[120438,120438],\"mapped\",[103]],[[120439,120439],\"mapped\",[104]],[[120440,120440],\"mapped\",[105]],[[120441,120441],\"mapped\",[106]],[[120442,120442],\"mapped\",[107]],[[120443,120443],\"mapped\",[108]],[[120444,120444],\"mapped\",[109]],[[120445,120445],\"mapped\",[110]],[[120446,120446],\"mapped\",[111]],[[120447,120447],\"mapped\",[112]],[[120448,120448],\"mapped\",[113]],[[120449,120449],\"mapped\",[114]],[[120450,120450],\"mapped\",[115]],[[120451,120451],\"mapped\",[116]],[[120452,120452],\"mapped\",[117]],[[120453,120453],\"mapped\",[118]],[[120454,120454],\"mapped\",[119]],[[120455,120455],\"mapped\",[120]],[[120456,120456],\"mapped\",[121]],[[120457,120457],\"mapped\",[122]],[[120458,120458],\"mapped\",[97]],[[120459,120459],\"mapped\",[98]],[[120460,120460],\"mapped\",[99]],[[120461,120461],\"mapped\",[100]],[[120462,120462],\"mapped\",[101]],[[120463,120463],\"mapped\",[102]],[[120464,120464],\"mapped\",[103]],[[120465,120465],\"mapped\",[104]],[[120466,120466],\"mapped\",[105]],[[120467,120467],\"mapped\",[106]],[[120468,120468],\"mapped\",[107]],[[120469,120469],\"mapped\",[108]],[[120470,120470],\"mapped\",[109]],[[120471,120471],\"mapped\",[110]],[[120472,120472],\"mapped\",[111]],[[120473,120473],\"mapped\",[112]],[[120474,120474],\"mapped\",[113]],[[120475,120475],\"mapped\",[114]],[[120476,120476],\"mapped\",[115]],[[120477,120477],\"mapped\",[116]],[[120478,120478],\"mapped\",[117]],[[120479,120479],\"mapped\",[118]],[[120480,120480],\"mapped\",[119]],[[120481,120481],\"mapped\",[120]],[[120482,120482],\"mapped\",[121]],[[120483,120483],\"mapped\",[122]],[[120484,120484],\"mapped\",[305]],[[120485,120485],\"mapped\",[567]],[[120486,120487],\"disallowed\"],[[120488,120488],\"mapped\",[945]],[[120489,120489],\"mapped\",[946]],[[120490,120490],\"mapped\",[947]],[[120491,120491],\"mapped\",[948]],[[120492,120492],\"mapped\",[949]],[[120493,120493],\"mapped\",[950]],[[120494,120494],\"mapped\",[951]],[[120495,120495],\"mapped\",[952]],[[120496,120496],\"mapped\",[953]],[[120497,120497],\"mapped\",[954]],[[120498,120498],\"mapped\",[955]],[[120499,120499],\"mapped\",[956]],[[120500,120500],\"mapped\",[957]],[[120501,120501],\"mapped\",[958]],[[120502,120502],\"mapped\",[959]],[[120503,120503],\"mapped\",[960]],[[120504,120504],\"mapped\",[961]],[[120505,120505],\"mapped\",[952]],[[120506,120506],\"mapped\",[963]],[[120507,120507],\"mapped\",[964]],[[120508,120508],\"mapped\",[965]],[[120509,120509],\"mapped\",[966]],[[120510,120510],\"mapped\",[967]],[[120511,120511],\"mapped\",[968]],[[120512,120512],\"mapped\",[969]],[[120513,120513],\"mapped\",[8711]],[[120514,120514],\"mapped\",[945]],[[120515,120515],\"mapped\",[946]],[[120516,120516],\"mapped\",[947]],[[120517,120517],\"mapped\",[948]],[[120518,120518],\"mapped\",[949]],[[120519,120519],\"mapped\",[950]],[[120520,120520],\"mapped\",[951]],[[120521,120521],\"mapped\",[952]],[[120522,120522],\"mapped\",[953]],[[120523,120523],\"mapped\",[954]],[[120524,120524],\"mapped\",[955]],[[120525,120525],\"mapped\",[956]],[[120526,120526],\"mapped\",[957]],[[120527,120527],\"mapped\",[958]],[[120528,120528],\"mapped\",[959]],[[120529,120529],\"mapped\",[960]],[[120530,120530],\"mapped\",[961]],[[120531,120532],\"mapped\",[963]],[[120533,120533],\"mapped\",[964]],[[120534,120534],\"mapped\",[965]],[[120535,120535],\"mapped\",[966]],[[120536,120536],\"mapped\",[967]],[[120537,120537],\"mapped\",[968]],[[120538,120538],\"mapped\",[969]],[[120539,120539],\"mapped\",[8706]],[[120540,120540],\"mapped\",[949]],[[120541,120541],\"mapped\",[952]],[[120542,120542],\"mapped\",[954]],[[120543,120543],\"mapped\",[966]],[[120544,120544],\"mapped\",[961]],[[120545,120545],\"mapped\",[960]],[[120546,120546],\"mapped\",[945]],[[120547,120547],\"mapped\",[946]],[[120548,120548],\"mapped\",[947]],[[120549,120549],\"mapped\",[948]],[[120550,120550],\"mapped\",[949]],[[120551,120551],\"mapped\",[950]],[[120552,120552],\"mapped\",[951]],[[120553,120553],\"mapped\",[952]],[[120554,120554],\"mapped\",[953]],[[120555,120555],\"mapped\",[954]],[[120556,120556],\"mapped\",[955]],[[120557,120557],\"mapped\",[956]],[[120558,120558],\"mapped\",[957]],[[120559,120559],\"mapped\",[958]],[[120560,120560],\"mapped\",[959]],[[120561,120561],\"mapped\",[960]],[[120562,120562],\"mapped\",[961]],[[120563,120563],\"mapped\",[952]],[[120564,120564],\"mapped\",[963]],[[120565,120565],\"mapped\",[964]],[[120566,120566],\"mapped\",[965]],[[120567,120567],\"mapped\",[966]],[[120568,120568],\"mapped\",[967]],[[120569,120569],\"mapped\",[968]],[[120570,120570],\"mapped\",[969]],[[120571,120571],\"mapped\",[8711]],[[120572,120572],\"mapped\",[945]],[[120573,120573],\"mapped\",[946]],[[120574,120574],\"mapped\",[947]],[[120575,120575],\"mapped\",[948]],[[120576,120576],\"mapped\",[949]],[[120577,120577],\"mapped\",[950]],[[120578,120578],\"mapped\",[951]],[[120579,120579],\"mapped\",[952]],[[120580,120580],\"mapped\",[953]],[[120581,120581],\"mapped\",[954]],[[120582,120582],\"mapped\",[955]],[[120583,120583],\"mapped\",[956]],[[120584,120584],\"mapped\",[957]],[[120585,120585],\"mapped\",[958]],[[120586,120586],\"mapped\",[959]],[[120587,120587],\"mapped\",[960]],[[120588,120588],\"mapped\",[961]],[[120589,120590],\"mapped\",[963]],[[120591,120591],\"mapped\",[964]],[[120592,120592],\"mapped\",[965]],[[120593,120593],\"mapped\",[966]],[[120594,120594],\"mapped\",[967]],[[120595,120595],\"mapped\",[968]],[[120596,120596],\"mapped\",[969]],[[120597,120597],\"mapped\",[8706]],[[120598,120598],\"mapped\",[949]],[[120599,120599],\"mapped\",[952]],[[120600,120600],\"mapped\",[954]],[[120601,120601],\"mapped\",[966]],[[120602,120602],\"mapped\",[961]],[[120603,120603],\"mapped\",[960]],[[120604,120604],\"mapped\",[945]],[[120605,120605],\"mapped\",[946]],[[120606,120606],\"mapped\",[947]],[[120607,120607],\"mapped\",[948]],[[120608,120608],\"mapped\",[949]],[[120609,120609],\"mapped\",[950]],[[120610,120610],\"mapped\",[951]],[[120611,120611],\"mapped\",[952]],[[120612,120612],\"mapped\",[953]],[[120613,120613],\"mapped\",[954]],[[120614,120614],\"mapped\",[955]],[[120615,120615],\"mapped\",[956]],[[120616,120616],\"mapped\",[957]],[[120617,120617],\"mapped\",[958]],[[120618,120618],\"mapped\",[959]],[[120619,120619],\"mapped\",[960]],[[120620,120620],\"mapped\",[961]],[[120621,120621],\"mapped\",[952]],[[120622,120622],\"mapped\",[963]],[[120623,120623],\"mapped\",[964]],[[120624,120624],\"mapped\",[965]],[[120625,120625],\"mapped\",[966]],[[120626,120626],\"mapped\",[967]],[[120627,120627],\"mapped\",[968]],[[120628,120628],\"mapped\",[969]],[[120629,120629],\"mapped\",[8711]],[[120630,120630],\"mapped\",[945]],[[120631,120631],\"mapped\",[946]],[[120632,120632],\"mapped\",[947]],[[120633,120633],\"mapped\",[948]],[[120634,120634],\"mapped\",[949]],[[120635,120635],\"mapped\",[950]],[[120636,120636],\"mapped\",[951]],[[120637,120637],\"mapped\",[952]],[[120638,120638],\"mapped\",[953]],[[120639,120639],\"mapped\",[954]],[[120640,120640],\"mapped\",[955]],[[120641,120641],\"mapped\",[956]],[[120642,120642],\"mapped\",[957]],[[120643,120643],\"mapped\",[958]],[[120644,120644],\"mapped\",[959]],[[120645,120645],\"mapped\",[960]],[[120646,120646],\"mapped\",[961]],[[120647,120648],\"mapped\",[963]],[[120649,120649],\"mapped\",[964]],[[120650,120650],\"mapped\",[965]],[[120651,120651],\"mapped\",[966]],[[120652,120652],\"mapped\",[967]],[[120653,120653],\"mapped\",[968]],[[120654,120654],\"mapped\",[969]],[[120655,120655],\"mapped\",[8706]],[[120656,120656],\"mapped\",[949]],[[120657,120657],\"mapped\",[952]],[[120658,120658],\"mapped\",[954]],[[120659,120659],\"mapped\",[966]],[[120660,120660],\"mapped\",[961]],[[120661,120661],\"mapped\",[960]],[[120662,120662],\"mapped\",[945]],[[120663,120663],\"mapped\",[946]],[[120664,120664],\"mapped\",[947]],[[120665,120665],\"mapped\",[948]],[[120666,120666],\"mapped\",[949]],[[120667,120667],\"mapped\",[950]],[[120668,120668],\"mapped\",[951]],[[120669,120669],\"mapped\",[952]],[[120670,120670],\"mapped\",[953]],[[120671,120671],\"mapped\",[954]],[[120672,120672],\"mapped\",[955]],[[120673,120673],\"mapped\",[956]],[[120674,120674],\"mapped\",[957]],[[120675,120675],\"mapped\",[958]],[[120676,120676],\"mapped\",[959]],[[120677,120677],\"mapped\",[960]],[[120678,120678],\"mapped\",[961]],[[120679,120679],\"mapped\",[952]],[[120680,120680],\"mapped\",[963]],[[120681,120681],\"mapped\",[964]],[[120682,120682],\"mapped\",[965]],[[120683,120683],\"mapped\",[966]],[[120684,120684],\"mapped\",[967]],[[120685,120685],\"mapped\",[968]],[[120686,120686],\"mapped\",[969]],[[120687,120687],\"mapped\",[8711]],[[120688,120688],\"mapped\",[945]],[[120689,120689],\"mapped\",[946]],[[120690,120690],\"mapped\",[947]],[[120691,120691],\"mapped\",[948]],[[120692,120692],\"mapped\",[949]],[[120693,120693],\"mapped\",[950]],[[120694,120694],\"mapped\",[951]],[[120695,120695],\"mapped\",[952]],[[120696,120696],\"mapped\",[953]],[[120697,120697],\"mapped\",[954]],[[120698,120698],\"mapped\",[955]],[[120699,120699],\"mapped\",[956]],[[120700,120700],\"mapped\",[957]],[[120701,120701],\"mapped\",[958]],[[120702,120702],\"mapped\",[959]],[[120703,120703],\"mapped\",[960]],[[120704,120704],\"mapped\",[961]],[[120705,120706],\"mapped\",[963]],[[120707,120707],\"mapped\",[964]],[[120708,120708],\"mapped\",[965]],[[120709,120709],\"mapped\",[966]],[[120710,120710],\"mapped\",[967]],[[120711,120711],\"mapped\",[968]],[[120712,120712],\"mapped\",[969]],[[120713,120713],\"mapped\",[8706]],[[120714,120714],\"mapped\",[949]],[[120715,120715],\"mapped\",[952]],[[120716,120716],\"mapped\",[954]],[[120717,120717],\"mapped\",[966]],[[120718,120718],\"mapped\",[961]],[[120719,120719],\"mapped\",[960]],[[120720,120720],\"mapped\",[945]],[[120721,120721],\"mapped\",[946]],[[120722,120722],\"mapped\",[947]],[[120723,120723],\"mapped\",[948]],[[120724,120724],\"mapped\",[949]],[[120725,120725],\"mapped\",[950]],[[120726,120726],\"mapped\",[951]],[[120727,120727],\"mapped\",[952]],[[120728,120728],\"mapped\",[953]],[[120729,120729],\"mapped\",[954]],[[120730,120730],\"mapped\",[955]],[[120731,120731],\"mapped\",[956]],[[120732,120732],\"mapped\",[957]],[[120733,120733],\"mapped\",[958]],[[120734,120734],\"mapped\",[959]],[[120735,120735],\"mapped\",[960]],[[120736,120736],\"mapped\",[961]],[[120737,120737],\"mapped\",[952]],[[120738,120738],\"mapped\",[963]],[[120739,120739],\"mapped\",[964]],[[120740,120740],\"mapped\",[965]],[[120741,120741],\"mapped\",[966]],[[120742,120742],\"mapped\",[967]],[[120743,120743],\"mapped\",[968]],[[120744,120744],\"mapped\",[969]],[[120745,120745],\"mapped\",[8711]],[[120746,120746],\"mapped\",[945]],[[120747,120747],\"mapped\",[946]],[[120748,120748],\"mapped\",[947]],[[120749,120749],\"mapped\",[948]],[[120750,120750],\"mapped\",[949]],[[120751,120751],\"mapped\",[950]],[[120752,120752],\"mapped\",[951]],[[120753,120753],\"mapped\",[952]],[[120754,120754],\"mapped\",[953]],[[120755,120755],\"mapped\",[954]],[[120756,120756],\"mapped\",[955]],[[120757,120757],\"mapped\",[956]],[[120758,120758],\"mapped\",[957]],[[120759,120759],\"mapped\",[958]],[[120760,120760],\"mapped\",[959]],[[120761,120761],\"mapped\",[960]],[[120762,120762],\"mapped\",[961]],[[120763,120764],\"mapped\",[963]],[[120765,120765],\"mapped\",[964]],[[120766,120766],\"mapped\",[965]],[[120767,120767],\"mapped\",[966]],[[120768,120768],\"mapped\",[967]],[[120769,120769],\"mapped\",[968]],[[120770,120770],\"mapped\",[969]],[[120771,120771],\"mapped\",[8706]],[[120772,120772],\"mapped\",[949]],[[120773,120773],\"mapped\",[952]],[[120774,120774],\"mapped\",[954]],[[120775,120775],\"mapped\",[966]],[[120776,120776],\"mapped\",[961]],[[120777,120777],\"mapped\",[960]],[[120778,120779],\"mapped\",[989]],[[120780,120781],\"disallowed\"],[[120782,120782],\"mapped\",[48]],[[120783,120783],\"mapped\",[49]],[[120784,120784],\"mapped\",[50]],[[120785,120785],\"mapped\",[51]],[[120786,120786],\"mapped\",[52]],[[120787,120787],\"mapped\",[53]],[[120788,120788],\"mapped\",[54]],[[120789,120789],\"mapped\",[55]],[[120790,120790],\"mapped\",[56]],[[120791,120791],\"mapped\",[57]],[[120792,120792],\"mapped\",[48]],[[120793,120793],\"mapped\",[49]],[[120794,120794],\"mapped\",[50]],[[120795,120795],\"mapped\",[51]],[[120796,120796],\"mapped\",[52]],[[120797,120797],\"mapped\",[53]],[[120798,120798],\"mapped\",[54]],[[120799,120799],\"mapped\",[55]],[[120800,120800],\"mapped\",[56]],[[120801,120801],\"mapped\",[57]],[[120802,120802],\"mapped\",[48]],[[120803,120803],\"mapped\",[49]],[[120804,120804],\"mapped\",[50]],[[120805,120805],\"mapped\",[51]],[[120806,120806],\"mapped\",[52]],[[120807,120807],\"mapped\",[53]],[[120808,120808],\"mapped\",[54]],[[120809,120809],\"mapped\",[55]],[[120810,120810],\"mapped\",[56]],[[120811,120811],\"mapped\",[57]],[[120812,120812],\"mapped\",[48]],[[120813,120813],\"mapped\",[49]],[[120814,120814],\"mapped\",[50]],[[120815,120815],\"mapped\",[51]],[[120816,120816],\"mapped\",[52]],[[120817,120817],\"mapped\",[53]],[[120818,120818],\"mapped\",[54]],[[120819,120819],\"mapped\",[55]],[[120820,120820],\"mapped\",[56]],[[120821,120821],\"mapped\",[57]],[[120822,120822],\"mapped\",[48]],[[120823,120823],\"mapped\",[49]],[[120824,120824],\"mapped\",[50]],[[120825,120825],\"mapped\",[51]],[[120826,120826],\"mapped\",[52]],[[120827,120827],\"mapped\",[53]],[[120828,120828],\"mapped\",[54]],[[120829,120829],\"mapped\",[55]],[[120830,120830],\"mapped\",[56]],[[120831,120831],\"mapped\",[57]],[[120832,121343],\"valid\",[],\"NV8\"],[[121344,121398],\"valid\"],[[121399,121402],\"valid\",[],\"NV8\"],[[121403,121452],\"valid\"],[[121453,121460],\"valid\",[],\"NV8\"],[[121461,121461],\"valid\"],[[121462,121475],\"valid\",[],\"NV8\"],[[121476,121476],\"valid\"],[[121477,121483],\"valid\",[],\"NV8\"],[[121484,121498],\"disallowed\"],[[121499,121503],\"valid\"],[[121504,121504],\"disallowed\"],[[121505,121519],\"valid\"],[[121520,124927],\"disallowed\"],[[124928,125124],\"valid\"],[[125125,125126],\"disallowed\"],[[125127,125135],\"valid\",[],\"NV8\"],[[125136,125142],\"valid\"],[[125143,126463],\"disallowed\"],[[126464,126464],\"mapped\",[1575]],[[126465,126465],\"mapped\",[1576]],[[126466,126466],\"mapped\",[1580]],[[126467,126467],\"mapped\",[1583]],[[126468,126468],\"disallowed\"],[[126469,126469],\"mapped\",[1608]],[[126470,126470],\"mapped\",[1586]],[[126471,126471],\"mapped\",[1581]],[[126472,126472],\"mapped\",[1591]],[[126473,126473],\"mapped\",[1610]],[[126474,126474],\"mapped\",[1603]],[[126475,126475],\"mapped\",[1604]],[[126476,126476],\"mapped\",[1605]],[[126477,126477],\"mapped\",[1606]],[[126478,126478],\"mapped\",[1587]],[[126479,126479],\"mapped\",[1593]],[[126480,126480],\"mapped\",[1601]],[[126481,126481],\"mapped\",[1589]],[[126482,126482],\"mapped\",[1602]],[[126483,126483],\"mapped\",[1585]],[[126484,126484],\"mapped\",[1588]],[[126485,126485],\"mapped\",[1578]],[[126486,126486],\"mapped\",[1579]],[[126487,126487],\"mapped\",[1582]],[[126488,126488],\"mapped\",[1584]],[[126489,126489],\"mapped\",[1590]],[[126490,126490],\"mapped\",[1592]],[[126491,126491],\"mapped\",[1594]],[[126492,126492],\"mapped\",[1646]],[[126493,126493],\"mapped\",[1722]],[[126494,126494],\"mapped\",[1697]],[[126495,126495],\"mapped\",[1647]],[[126496,126496],\"disallowed\"],[[126497,126497],\"mapped\",[1576]],[[126498,126498],\"mapped\",[1580]],[[126499,126499],\"disallowed\"],[[126500,126500],\"mapped\",[1607]],[[126501,126502],\"disallowed\"],[[126503,126503],\"mapped\",[1581]],[[126504,126504],\"disallowed\"],[[126505,126505],\"mapped\",[1610]],[[126506,126506],\"mapped\",[1603]],[[126507,126507],\"mapped\",[1604]],[[126508,126508],\"mapped\",[1605]],[[126509,126509],\"mapped\",[1606]],[[126510,126510],\"mapped\",[1587]],[[126511,126511],\"mapped\",[1593]],[[126512,126512],\"mapped\",[1601]],[[126513,126513],\"mapped\",[1589]],[[126514,126514],\"mapped\",[1602]],[[126515,126515],\"disallowed\"],[[126516,126516],\"mapped\",[1588]],[[126517,126517],\"mapped\",[1578]],[[126518,126518],\"mapped\",[1579]],[[126519,126519],\"mapped\",[1582]],[[126520,126520],\"disallowed\"],[[126521,126521],\"mapped\",[1590]],[[126522,126522],\"disallowed\"],[[126523,126523],\"mapped\",[1594]],[[126524,126529],\"disallowed\"],[[126530,126530],\"mapped\",[1580]],[[126531,126534],\"disallowed\"],[[126535,126535],\"mapped\",[1581]],[[126536,126536],\"disallowed\"],[[126537,126537],\"mapped\",[1610]],[[126538,126538],\"disallowed\"],[[126539,126539],\"mapped\",[1604]],[[126540,126540],\"disallowed\"],[[126541,126541],\"mapped\",[1606]],[[126542,126542],\"mapped\",[1587]],[[126543,126543],\"mapped\",[1593]],[[126544,126544],\"disallowed\"],[[126545,126545],\"mapped\",[1589]],[[126546,126546],\"mapped\",[1602]],[[126547,126547],\"disallowed\"],[[126548,126548],\"mapped\",[1588]],[[126549,126550],\"disallowed\"],[[126551,126551],\"mapped\",[1582]],[[126552,126552],\"disallowed\"],[[126553,126553],\"mapped\",[1590]],[[126554,126554],\"disallowed\"],[[126555,126555],\"mapped\",[1594]],[[126556,126556],\"disallowed\"],[[126557,126557],\"mapped\",[1722]],[[126558,126558],\"disallowed\"],[[126559,126559],\"mapped\",[1647]],[[126560,126560],\"disallowed\"],[[126561,126561],\"mapped\",[1576]],[[126562,126562],\"mapped\",[1580]],[[126563,126563],\"disallowed\"],[[126564,126564],\"mapped\",[1607]],[[126565,126566],\"disallowed\"],[[126567,126567],\"mapped\",[1581]],[[126568,126568],\"mapped\",[1591]],[[126569,126569],\"mapped\",[1610]],[[126570,126570],\"mapped\",[1603]],[[126571,126571],\"disallowed\"],[[126572,126572],\"mapped\",[1605]],[[126573,126573],\"mapped\",[1606]],[[126574,126574],\"mapped\",[1587]],[[126575,126575],\"mapped\",[1593]],[[126576,126576],\"mapped\",[1601]],[[126577,126577],\"mapped\",[1589]],[[126578,126578],\"mapped\",[1602]],[[126579,126579],\"disallowed\"],[[126580,126580],\"mapped\",[1588]],[[126581,126581],\"mapped\",[1578]],[[126582,126582],\"mapped\",[1579]],[[126583,126583],\"mapped\",[1582]],[[126584,126584],\"disallowed\"],[[126585,126585],\"mapped\",[1590]],[[126586,126586],\"mapped\",[1592]],[[126587,126587],\"mapped\",[1594]],[[126588,126588],\"mapped\",[1646]],[[126589,126589],\"disallowed\"],[[126590,126590],\"mapped\",[1697]],[[126591,126591],\"disallowed\"],[[126592,126592],\"mapped\",[1575]],[[126593,126593],\"mapped\",[1576]],[[126594,126594],\"mapped\",[1580]],[[126595,126595],\"mapped\",[1583]],[[126596,126596],\"mapped\",[1607]],[[126597,126597],\"mapped\",[1608]],[[126598,126598],\"mapped\",[1586]],[[126599,126599],\"mapped\",[1581]],[[126600,126600],\"mapped\",[1591]],[[126601,126601],\"mapped\",[1610]],[[126602,126602],\"disallowed\"],[[126603,126603],\"mapped\",[1604]],[[126604,126604],\"mapped\",[1605]],[[126605,126605],\"mapped\",[1606]],[[126606,126606],\"mapped\",[1587]],[[126607,126607],\"mapped\",[1593]],[[126608,126608],\"mapped\",[1601]],[[126609,126609],\"mapped\",[1589]],[[126610,126610],\"mapped\",[1602]],[[126611,126611],\"mapped\",[1585]],[[126612,126612],\"mapped\",[1588]],[[126613,126613],\"mapped\",[1578]],[[126614,126614],\"mapped\",[1579]],[[126615,126615],\"mapped\",[1582]],[[126616,126616],\"mapped\",[1584]],[[126617,126617],\"mapped\",[1590]],[[126618,126618],\"mapped\",[1592]],[[126619,126619],\"mapped\",[1594]],[[126620,126624],\"disallowed\"],[[126625,126625],\"mapped\",[1576]],[[126626,126626],\"mapped\",[1580]],[[126627,126627],\"mapped\",[1583]],[[126628,126628],\"disallowed\"],[[126629,126629],\"mapped\",[1608]],[[126630,126630],\"mapped\",[1586]],[[126631,126631],\"mapped\",[1581]],[[126632,126632],\"mapped\",[1591]],[[126633,126633],\"mapped\",[1610]],[[126634,126634],\"disallowed\"],[[126635,126635],\"mapped\",[1604]],[[126636,126636],\"mapped\",[1605]],[[126637,126637],\"mapped\",[1606]],[[126638,126638],\"mapped\",[1587]],[[126639,126639],\"mapped\",[1593]],[[126640,126640],\"mapped\",[1601]],[[126641,126641],\"mapped\",[1589]],[[126642,126642],\"mapped\",[1602]],[[126643,126643],\"mapped\",[1585]],[[126644,126644],\"mapped\",[1588]],[[126645,126645],\"mapped\",[1578]],[[126646,126646],\"mapped\",[1579]],[[126647,126647],\"mapped\",[1582]],[[126648,126648],\"mapped\",[1584]],[[126649,126649],\"mapped\",[1590]],[[126650,126650],\"mapped\",[1592]],[[126651,126651],\"mapped\",[1594]],[[126652,126703],\"disallowed\"],[[126704,126705],\"valid\",[],\"NV8\"],[[126706,126975],\"disallowed\"],[[126976,127019],\"valid\",[],\"NV8\"],[[127020,127023],\"disallowed\"],[[127024,127123],\"valid\",[],\"NV8\"],[[127124,127135],\"disallowed\"],[[127136,127150],\"valid\",[],\"NV8\"],[[127151,127152],\"disallowed\"],[[127153,127166],\"valid\",[],\"NV8\"],[[127167,127167],\"valid\",[],\"NV8\"],[[127168,127168],\"disallowed\"],[[127169,127183],\"valid\",[],\"NV8\"],[[127184,127184],\"disallowed\"],[[127185,127199],\"valid\",[],\"NV8\"],[[127200,127221],\"valid\",[],\"NV8\"],[[127222,127231],\"disallowed\"],[[127232,127232],\"disallowed\"],[[127233,127233],\"disallowed_STD3_mapped\",[48,44]],[[127234,127234],\"disallowed_STD3_mapped\",[49,44]],[[127235,127235],\"disallowed_STD3_mapped\",[50,44]],[[127236,127236],\"disallowed_STD3_mapped\",[51,44]],[[127237,127237],\"disallowed_STD3_mapped\",[52,44]],[[127238,127238],\"disallowed_STD3_mapped\",[53,44]],[[127239,127239],\"disallowed_STD3_mapped\",[54,44]],[[127240,127240],\"disallowed_STD3_mapped\",[55,44]],[[127241,127241],\"disallowed_STD3_mapped\",[56,44]],[[127242,127242],\"disallowed_STD3_mapped\",[57,44]],[[127243,127244],\"valid\",[],\"NV8\"],[[127245,127247],\"disallowed\"],[[127248,127248],\"disallowed_STD3_mapped\",[40,97,41]],[[127249,127249],\"disallowed_STD3_mapped\",[40,98,41]],[[127250,127250],\"disallowed_STD3_mapped\",[40,99,41]],[[127251,127251],\"disallowed_STD3_mapped\",[40,100,41]],[[127252,127252],\"disallowed_STD3_mapped\",[40,101,41]],[[127253,127253],\"disallowed_STD3_mapped\",[40,102,41]],[[127254,127254],\"disallowed_STD3_mapped\",[40,103,41]],[[127255,127255],\"disallowed_STD3_mapped\",[40,104,41]],[[127256,127256],\"disallowed_STD3_mapped\",[40,105,41]],[[127257,127257],\"disallowed_STD3_mapped\",[40,106,41]],[[127258,127258],\"disallowed_STD3_mapped\",[40,107,41]],[[127259,127259],\"disallowed_STD3_mapped\",[40,108,41]],[[127260,127260],\"disallowed_STD3_mapped\",[40,109,41]],[[127261,127261],\"disallowed_STD3_mapped\",[40,110,41]],[[127262,127262],\"disallowed_STD3_mapped\",[40,111,41]],[[127263,127263],\"disallowed_STD3_mapped\",[40,112,41]],[[127264,127264],\"disallowed_STD3_mapped\",[40,113,41]],[[127265,127265],\"disallowed_STD3_mapped\",[40,114,41]],[[127266,127266],\"disallowed_STD3_mapped\",[40,115,41]],[[127267,127267],\"disallowed_STD3_mapped\",[40,116,41]],[[127268,127268],\"disallowed_STD3_mapped\",[40,117,41]],[[127269,127269],\"disallowed_STD3_mapped\",[40,118,41]],[[127270,127270],\"disallowed_STD3_mapped\",[40,119,41]],[[127271,127271],\"disallowed_STD3_mapped\",[40,120,41]],[[127272,127272],\"disallowed_STD3_mapped\",[40,121,41]],[[127273,127273],\"disallowed_STD3_mapped\",[40,122,41]],[[127274,127274],\"mapped\",[12308,115,12309]],[[127275,127275],\"mapped\",[99]],[[127276,127276],\"mapped\",[114]],[[127277,127277],\"mapped\",[99,100]],[[127278,127278],\"mapped\",[119,122]],[[127279,127279],\"disallowed\"],[[127280,127280],\"mapped\",[97]],[[127281,127281],\"mapped\",[98]],[[127282,127282],\"mapped\",[99]],[[127283,127283],\"mapped\",[100]],[[127284,127284],\"mapped\",[101]],[[127285,127285],\"mapped\",[102]],[[127286,127286],\"mapped\",[103]],[[127287,127287],\"mapped\",[104]],[[127288,127288],\"mapped\",[105]],[[127289,127289],\"mapped\",[106]],[[127290,127290],\"mapped\",[107]],[[127291,127291],\"mapped\",[108]],[[127292,127292],\"mapped\",[109]],[[127293,127293],\"mapped\",[110]],[[127294,127294],\"mapped\",[111]],[[127295,127295],\"mapped\",[112]],[[127296,127296],\"mapped\",[113]],[[127297,127297],\"mapped\",[114]],[[127298,127298],\"mapped\",[115]],[[127299,127299],\"mapped\",[116]],[[127300,127300],\"mapped\",[117]],[[127301,127301],\"mapped\",[118]],[[127302,127302],\"mapped\",[119]],[[127303,127303],\"mapped\",[120]],[[127304,127304],\"mapped\",[121]],[[127305,127305],\"mapped\",[122]],[[127306,127306],\"mapped\",[104,118]],[[127307,127307],\"mapped\",[109,118]],[[127308,127308],\"mapped\",[115,100]],[[127309,127309],\"mapped\",[115,115]],[[127310,127310],\"mapped\",[112,112,118]],[[127311,127311],\"mapped\",[119,99]],[[127312,127318],\"valid\",[],\"NV8\"],[[127319,127319],\"valid\",[],\"NV8\"],[[127320,127326],\"valid\",[],\"NV8\"],[[127327,127327],\"valid\",[],\"NV8\"],[[127328,127337],\"valid\",[],\"NV8\"],[[127338,127338],\"mapped\",[109,99]],[[127339,127339],\"mapped\",[109,100]],[[127340,127343],\"disallowed\"],[[127344,127352],\"valid\",[],\"NV8\"],[[127353,127353],\"valid\",[],\"NV8\"],[[127354,127354],\"valid\",[],\"NV8\"],[[127355,127356],\"valid\",[],\"NV8\"],[[127357,127358],\"valid\",[],\"NV8\"],[[127359,127359],\"valid\",[],\"NV8\"],[[127360,127369],\"valid\",[],\"NV8\"],[[127370,127373],\"valid\",[],\"NV8\"],[[127374,127375],\"valid\",[],\"NV8\"],[[127376,127376],\"mapped\",[100,106]],[[127377,127386],\"valid\",[],\"NV8\"],[[127387,127461],\"disallowed\"],[[127462,127487],\"valid\",[],\"NV8\"],[[127488,127488],\"mapped\",[12411,12363]],[[127489,127489],\"mapped\",[12467,12467]],[[127490,127490],\"mapped\",[12469]],[[127491,127503],\"disallowed\"],[[127504,127504],\"mapped\",[25163]],[[127505,127505],\"mapped\",[23383]],[[127506,127506],\"mapped\",[21452]],[[127507,127507],\"mapped\",[12487]],[[127508,127508],\"mapped\",[20108]],[[127509,127509],\"mapped\",[22810]],[[127510,127510],\"mapped\",[35299]],[[127511,127511],\"mapped\",[22825]],[[127512,127512],\"mapped\",[20132]],[[127513,127513],\"mapped\",[26144]],[[127514,127514],\"mapped\",[28961]],[[127515,127515],\"mapped\",[26009]],[[127516,127516],\"mapped\",[21069]],[[127517,127517],\"mapped\",[24460]],[[127518,127518],\"mapped\",[20877]],[[127519,127519],\"mapped\",[26032]],[[127520,127520],\"mapped\",[21021]],[[127521,127521],\"mapped\",[32066]],[[127522,127522],\"mapped\",[29983]],[[127523,127523],\"mapped\",[36009]],[[127524,127524],\"mapped\",[22768]],[[127525,127525],\"mapped\",[21561]],[[127526,127526],\"mapped\",[28436]],[[127527,127527],\"mapped\",[25237]],[[127528,127528],\"mapped\",[25429]],[[127529,127529],\"mapped\",[19968]],[[127530,127530],\"mapped\",[19977]],[[127531,127531],\"mapped\",[36938]],[[127532,127532],\"mapped\",[24038]],[[127533,127533],\"mapped\",[20013]],[[127534,127534],\"mapped\",[21491]],[[127535,127535],\"mapped\",[25351]],[[127536,127536],\"mapped\",[36208]],[[127537,127537],\"mapped\",[25171]],[[127538,127538],\"mapped\",[31105]],[[127539,127539],\"mapped\",[31354]],[[127540,127540],\"mapped\",[21512]],[[127541,127541],\"mapped\",[28288]],[[127542,127542],\"mapped\",[26377]],[[127543,127543],\"mapped\",[26376]],[[127544,127544],\"mapped\",[30003]],[[127545,127545],\"mapped\",[21106]],[[127546,127546],\"mapped\",[21942]],[[127547,127551],\"disallowed\"],[[127552,127552],\"mapped\",[12308,26412,12309]],[[127553,127553],\"mapped\",[12308,19977,12309]],[[127554,127554],\"mapped\",[12308,20108,12309]],[[127555,127555],\"mapped\",[12308,23433,12309]],[[127556,127556],\"mapped\",[12308,28857,12309]],[[127557,127557],\"mapped\",[12308,25171,12309]],[[127558,127558],\"mapped\",[12308,30423,12309]],[[127559,127559],\"mapped\",[12308,21213,12309]],[[127560,127560],\"mapped\",[12308,25943,12309]],[[127561,127567],\"disallowed\"],[[127568,127568],\"mapped\",[24471]],[[127569,127569],\"mapped\",[21487]],[[127570,127743],\"disallowed\"],[[127744,127776],\"valid\",[],\"NV8\"],[[127777,127788],\"valid\",[],\"NV8\"],[[127789,127791],\"valid\",[],\"NV8\"],[[127792,127797],\"valid\",[],\"NV8\"],[[127798,127798],\"valid\",[],\"NV8\"],[[127799,127868],\"valid\",[],\"NV8\"],[[127869,127869],\"valid\",[],\"NV8\"],[[127870,127871],\"valid\",[],\"NV8\"],[[127872,127891],\"valid\",[],\"NV8\"],[[127892,127903],\"valid\",[],\"NV8\"],[[127904,127940],\"valid\",[],\"NV8\"],[[127941,127941],\"valid\",[],\"NV8\"],[[127942,127946],\"valid\",[],\"NV8\"],[[127947,127950],\"valid\",[],\"NV8\"],[[127951,127955],\"valid\",[],\"NV8\"],[[127956,127967],\"valid\",[],\"NV8\"],[[127968,127984],\"valid\",[],\"NV8\"],[[127985,127991],\"valid\",[],\"NV8\"],[[127992,127999],\"valid\",[],\"NV8\"],[[128000,128062],\"valid\",[],\"NV8\"],[[128063,128063],\"valid\",[],\"NV8\"],[[128064,128064],\"valid\",[],\"NV8\"],[[128065,128065],\"valid\",[],\"NV8\"],[[128066,128247],\"valid\",[],\"NV8\"],[[128248,128248],\"valid\",[],\"NV8\"],[[128249,128252],\"valid\",[],\"NV8\"],[[128253,128254],\"valid\",[],\"NV8\"],[[128255,128255],\"valid\",[],\"NV8\"],[[128256,128317],\"valid\",[],\"NV8\"],[[128318,128319],\"valid\",[],\"NV8\"],[[128320,128323],\"valid\",[],\"NV8\"],[[128324,128330],\"valid\",[],\"NV8\"],[[128331,128335],\"valid\",[],\"NV8\"],[[128336,128359],\"valid\",[],\"NV8\"],[[128360,128377],\"valid\",[],\"NV8\"],[[128378,128378],\"disallowed\"],[[128379,128419],\"valid\",[],\"NV8\"],[[128420,128420],\"disallowed\"],[[128421,128506],\"valid\",[],\"NV8\"],[[128507,128511],\"valid\",[],\"NV8\"],[[128512,128512],\"valid\",[],\"NV8\"],[[128513,128528],\"valid\",[],\"NV8\"],[[128529,128529],\"valid\",[],\"NV8\"],[[128530,128532],\"valid\",[],\"NV8\"],[[128533,128533],\"valid\",[],\"NV8\"],[[128534,128534],\"valid\",[],\"NV8\"],[[128535,128535],\"valid\",[],\"NV8\"],[[128536,128536],\"valid\",[],\"NV8\"],[[128537,128537],\"valid\",[],\"NV8\"],[[128538,128538],\"valid\",[],\"NV8\"],[[128539,128539],\"valid\",[],\"NV8\"],[[128540,128542],\"valid\",[],\"NV8\"],[[128543,128543],\"valid\",[],\"NV8\"],[[128544,128549],\"valid\",[],\"NV8\"],[[128550,128551],\"valid\",[],\"NV8\"],[[128552,128555],\"valid\",[],\"NV8\"],[[128556,128556],\"valid\",[],\"NV8\"],[[128557,128557],\"valid\",[],\"NV8\"],[[128558,128559],\"valid\",[],\"NV8\"],[[128560,128563],\"valid\",[],\"NV8\"],[[128564,128564],\"valid\",[],\"NV8\"],[[128565,128576],\"valid\",[],\"NV8\"],[[128577,128578],\"valid\",[],\"NV8\"],[[128579,128580],\"valid\",[],\"NV8\"],[[128581,128591],\"valid\",[],\"NV8\"],[[128592,128639],\"valid\",[],\"NV8\"],[[128640,128709],\"valid\",[],\"NV8\"],[[128710,128719],\"valid\",[],\"NV8\"],[[128720,128720],\"valid\",[],\"NV8\"],[[128721,128735],\"disallowed\"],[[128736,128748],\"valid\",[],\"NV8\"],[[128749,128751],\"disallowed\"],[[128752,128755],\"valid\",[],\"NV8\"],[[128756,128767],\"disallowed\"],[[128768,128883],\"valid\",[],\"NV8\"],[[128884,128895],\"disallowed\"],[[128896,128980],\"valid\",[],\"NV8\"],[[128981,129023],\"disallowed\"],[[129024,129035],\"valid\",[],\"NV8\"],[[129036,129039],\"disallowed\"],[[129040,129095],\"valid\",[],\"NV8\"],[[129096,129103],\"disallowed\"],[[129104,129113],\"valid\",[],\"NV8\"],[[129114,129119],\"disallowed\"],[[129120,129159],\"valid\",[],\"NV8\"],[[129160,129167],\"disallowed\"],[[129168,129197],\"valid\",[],\"NV8\"],[[129198,129295],\"disallowed\"],[[129296,129304],\"valid\",[],\"NV8\"],[[129305,129407],\"disallowed\"],[[129408,129412],\"valid\",[],\"NV8\"],[[129413,129471],\"disallowed\"],[[129472,129472],\"valid\",[],\"NV8\"],[[129473,131069],\"disallowed\"],[[131070,131071],\"disallowed\"],[[131072,173782],\"valid\"],[[173783,173823],\"disallowed\"],[[173824,177972],\"valid\"],[[177973,177983],\"disallowed\"],[[177984,178205],\"valid\"],[[178206,178207],\"disallowed\"],[[178208,183969],\"valid\"],[[183970,194559],\"disallowed\"],[[194560,194560],\"mapped\",[20029]],[[194561,194561],\"mapped\",[20024]],[[194562,194562],\"mapped\",[20033]],[[194563,194563],\"mapped\",[131362]],[[194564,194564],\"mapped\",[20320]],[[194565,194565],\"mapped\",[20398]],[[194566,194566],\"mapped\",[20411]],[[194567,194567],\"mapped\",[20482]],[[194568,194568],\"mapped\",[20602]],[[194569,194569],\"mapped\",[20633]],[[194570,194570],\"mapped\",[20711]],[[194571,194571],\"mapped\",[20687]],[[194572,194572],\"mapped\",[13470]],[[194573,194573],\"mapped\",[132666]],[[194574,194574],\"mapped\",[20813]],[[194575,194575],\"mapped\",[20820]],[[194576,194576],\"mapped\",[20836]],[[194577,194577],\"mapped\",[20855]],[[194578,194578],\"mapped\",[132380]],[[194579,194579],\"mapped\",[13497]],[[194580,194580],\"mapped\",[20839]],[[194581,194581],\"mapped\",[20877]],[[194582,194582],\"mapped\",[132427]],[[194583,194583],\"mapped\",[20887]],[[194584,194584],\"mapped\",[20900]],[[194585,194585],\"mapped\",[20172]],[[194586,194586],\"mapped\",[20908]],[[194587,194587],\"mapped\",[20917]],[[194588,194588],\"mapped\",[168415]],[[194589,194589],\"mapped\",[20981]],[[194590,194590],\"mapped\",[20995]],[[194591,194591],\"mapped\",[13535]],[[194592,194592],\"mapped\",[21051]],[[194593,194593],\"mapped\",[21062]],[[194594,194594],\"mapped\",[21106]],[[194595,194595],\"mapped\",[21111]],[[194596,194596],\"mapped\",[13589]],[[194597,194597],\"mapped\",[21191]],[[194598,194598],\"mapped\",[21193]],[[194599,194599],\"mapped\",[21220]],[[194600,194600],\"mapped\",[21242]],[[194601,194601],\"mapped\",[21253]],[[194602,194602],\"mapped\",[21254]],[[194603,194603],\"mapped\",[21271]],[[194604,194604],\"mapped\",[21321]],[[194605,194605],\"mapped\",[21329]],[[194606,194606],\"mapped\",[21338]],[[194607,194607],\"mapped\",[21363]],[[194608,194608],\"mapped\",[21373]],[[194609,194611],\"mapped\",[21375]],[[194612,194612],\"mapped\",[133676]],[[194613,194613],\"mapped\",[28784]],[[194614,194614],\"mapped\",[21450]],[[194615,194615],\"mapped\",[21471]],[[194616,194616],\"mapped\",[133987]],[[194617,194617],\"mapped\",[21483]],[[194618,194618],\"mapped\",[21489]],[[194619,194619],\"mapped\",[21510]],[[194620,194620],\"mapped\",[21662]],[[194621,194621],\"mapped\",[21560]],[[194622,194622],\"mapped\",[21576]],[[194623,194623],\"mapped\",[21608]],[[194624,194624],\"mapped\",[21666]],[[194625,194625],\"mapped\",[21750]],[[194626,194626],\"mapped\",[21776]],[[194627,194627],\"mapped\",[21843]],[[194628,194628],\"mapped\",[21859]],[[194629,194630],\"mapped\",[21892]],[[194631,194631],\"mapped\",[21913]],[[194632,194632],\"mapped\",[21931]],[[194633,194633],\"mapped\",[21939]],[[194634,194634],\"mapped\",[21954]],[[194635,194635],\"mapped\",[22294]],[[194636,194636],\"mapped\",[22022]],[[194637,194637],\"mapped\",[22295]],[[194638,194638],\"mapped\",[22097]],[[194639,194639],\"mapped\",[22132]],[[194640,194640],\"mapped\",[20999]],[[194641,194641],\"mapped\",[22766]],[[194642,194642],\"mapped\",[22478]],[[194643,194643],\"mapped\",[22516]],[[194644,194644],\"mapped\",[22541]],[[194645,194645],\"mapped\",[22411]],[[194646,194646],\"mapped\",[22578]],[[194647,194647],\"mapped\",[22577]],[[194648,194648],\"mapped\",[22700]],[[194649,194649],\"mapped\",[136420]],[[194650,194650],\"mapped\",[22770]],[[194651,194651],\"mapped\",[22775]],[[194652,194652],\"mapped\",[22790]],[[194653,194653],\"mapped\",[22810]],[[194654,194654],\"mapped\",[22818]],[[194655,194655],\"mapped\",[22882]],[[194656,194656],\"mapped\",[136872]],[[194657,194657],\"mapped\",[136938]],[[194658,194658],\"mapped\",[23020]],[[194659,194659],\"mapped\",[23067]],[[194660,194660],\"mapped\",[23079]],[[194661,194661],\"mapped\",[23000]],[[194662,194662],\"mapped\",[23142]],[[194663,194663],\"mapped\",[14062]],[[194664,194664],\"disallowed\"],[[194665,194665],\"mapped\",[23304]],[[194666,194667],\"mapped\",[23358]],[[194668,194668],\"mapped\",[137672]],[[194669,194669],\"mapped\",[23491]],[[194670,194670],\"mapped\",[23512]],[[194671,194671],\"mapped\",[23527]],[[194672,194672],\"mapped\",[23539]],[[194673,194673],\"mapped\",[138008]],[[194674,194674],\"mapped\",[23551]],[[194675,194675],\"mapped\",[23558]],[[194676,194676],\"disallowed\"],[[194677,194677],\"mapped\",[23586]],[[194678,194678],\"mapped\",[14209]],[[194679,194679],\"mapped\",[23648]],[[194680,194680],\"mapped\",[23662]],[[194681,194681],\"mapped\",[23744]],[[194682,194682],\"mapped\",[23693]],[[194683,194683],\"mapped\",[138724]],[[194684,194684],\"mapped\",[23875]],[[194685,194685],\"mapped\",[138726]],[[194686,194686],\"mapped\",[23918]],[[194687,194687],\"mapped\",[23915]],[[194688,194688],\"mapped\",[23932]],[[194689,194689],\"mapped\",[24033]],[[194690,194690],\"mapped\",[24034]],[[194691,194691],\"mapped\",[14383]],[[194692,194692],\"mapped\",[24061]],[[194693,194693],\"mapped\",[24104]],[[194694,194694],\"mapped\",[24125]],[[194695,194695],\"mapped\",[24169]],[[194696,194696],\"mapped\",[14434]],[[194697,194697],\"mapped\",[139651]],[[194698,194698],\"mapped\",[14460]],[[194699,194699],\"mapped\",[24240]],[[194700,194700],\"mapped\",[24243]],[[194701,194701],\"mapped\",[24246]],[[194702,194702],\"mapped\",[24266]],[[194703,194703],\"mapped\",[172946]],[[194704,194704],\"mapped\",[24318]],[[194705,194706],\"mapped\",[140081]],[[194707,194707],\"mapped\",[33281]],[[194708,194709],\"mapped\",[24354]],[[194710,194710],\"mapped\",[14535]],[[194711,194711],\"mapped\",[144056]],[[194712,194712],\"mapped\",[156122]],[[194713,194713],\"mapped\",[24418]],[[194714,194714],\"mapped\",[24427]],[[194715,194715],\"mapped\",[14563]],[[194716,194716],\"mapped\",[24474]],[[194717,194717],\"mapped\",[24525]],[[194718,194718],\"mapped\",[24535]],[[194719,194719],\"mapped\",[24569]],[[194720,194720],\"mapped\",[24705]],[[194721,194721],\"mapped\",[14650]],[[194722,194722],\"mapped\",[14620]],[[194723,194723],\"mapped\",[24724]],[[194724,194724],\"mapped\",[141012]],[[194725,194725],\"mapped\",[24775]],[[194726,194726],\"mapped\",[24904]],[[194727,194727],\"mapped\",[24908]],[[194728,194728],\"mapped\",[24910]],[[194729,194729],\"mapped\",[24908]],[[194730,194730],\"mapped\",[24954]],[[194731,194731],\"mapped\",[24974]],[[194732,194732],\"mapped\",[25010]],[[194733,194733],\"mapped\",[24996]],[[194734,194734],\"mapped\",[25007]],[[194735,194735],\"mapped\",[25054]],[[194736,194736],\"mapped\",[25074]],[[194737,194737],\"mapped\",[25078]],[[194738,194738],\"mapped\",[25104]],[[194739,194739],\"mapped\",[25115]],[[194740,194740],\"mapped\",[25181]],[[194741,194741],\"mapped\",[25265]],[[194742,194742],\"mapped\",[25300]],[[194743,194743],\"mapped\",[25424]],[[194744,194744],\"mapped\",[142092]],[[194745,194745],\"mapped\",[25405]],[[194746,194746],\"mapped\",[25340]],[[194747,194747],\"mapped\",[25448]],[[194748,194748],\"mapped\",[25475]],[[194749,194749],\"mapped\",[25572]],[[194750,194750],\"mapped\",[142321]],[[194751,194751],\"mapped\",[25634]],[[194752,194752],\"mapped\",[25541]],[[194753,194753],\"mapped\",[25513]],[[194754,194754],\"mapped\",[14894]],[[194755,194755],\"mapped\",[25705]],[[194756,194756],\"mapped\",[25726]],[[194757,194757],\"mapped\",[25757]],[[194758,194758],\"mapped\",[25719]],[[194759,194759],\"mapped\",[14956]],[[194760,194760],\"mapped\",[25935]],[[194761,194761],\"mapped\",[25964]],[[194762,194762],\"mapped\",[143370]],[[194763,194763],\"mapped\",[26083]],[[194764,194764],\"mapped\",[26360]],[[194765,194765],\"mapped\",[26185]],[[194766,194766],\"mapped\",[15129]],[[194767,194767],\"mapped\",[26257]],[[194768,194768],\"mapped\",[15112]],[[194769,194769],\"mapped\",[15076]],[[194770,194770],\"mapped\",[20882]],[[194771,194771],\"mapped\",[20885]],[[194772,194772],\"mapped\",[26368]],[[194773,194773],\"mapped\",[26268]],[[194774,194774],\"mapped\",[32941]],[[194775,194775],\"mapped\",[17369]],[[194776,194776],\"mapped\",[26391]],[[194777,194777],\"mapped\",[26395]],[[194778,194778],\"mapped\",[26401]],[[194779,194779],\"mapped\",[26462]],[[194780,194780],\"mapped\",[26451]],[[194781,194781],\"mapped\",[144323]],[[194782,194782],\"mapped\",[15177]],[[194783,194783],\"mapped\",[26618]],[[194784,194784],\"mapped\",[26501]],[[194785,194785],\"mapped\",[26706]],[[194786,194786],\"mapped\",[26757]],[[194787,194787],\"mapped\",[144493]],[[194788,194788],\"mapped\",[26766]],[[194789,194789],\"mapped\",[26655]],[[194790,194790],\"mapped\",[26900]],[[194791,194791],\"mapped\",[15261]],[[194792,194792],\"mapped\",[26946]],[[194793,194793],\"mapped\",[27043]],[[194794,194794],\"mapped\",[27114]],[[194795,194795],\"mapped\",[27304]],[[194796,194796],\"mapped\",[145059]],[[194797,194797],\"mapped\",[27355]],[[194798,194798],\"mapped\",[15384]],[[194799,194799],\"mapped\",[27425]],[[194800,194800],\"mapped\",[145575]],[[194801,194801],\"mapped\",[27476]],[[194802,194802],\"mapped\",[15438]],[[194803,194803],\"mapped\",[27506]],[[194804,194804],\"mapped\",[27551]],[[194805,194805],\"mapped\",[27578]],[[194806,194806],\"mapped\",[27579]],[[194807,194807],\"mapped\",[146061]],[[194808,194808],\"mapped\",[138507]],[[194809,194809],\"mapped\",[146170]],[[194810,194810],\"mapped\",[27726]],[[194811,194811],\"mapped\",[146620]],[[194812,194812],\"mapped\",[27839]],[[194813,194813],\"mapped\",[27853]],[[194814,194814],\"mapped\",[27751]],[[194815,194815],\"mapped\",[27926]],[[194816,194816],\"mapped\",[27966]],[[194817,194817],\"mapped\",[28023]],[[194818,194818],\"mapped\",[27969]],[[194819,194819],\"mapped\",[28009]],[[194820,194820],\"mapped\",[28024]],[[194821,194821],\"mapped\",[28037]],[[194822,194822],\"mapped\",[146718]],[[194823,194823],\"mapped\",[27956]],[[194824,194824],\"mapped\",[28207]],[[194825,194825],\"mapped\",[28270]],[[194826,194826],\"mapped\",[15667]],[[194827,194827],\"mapped\",[28363]],[[194828,194828],\"mapped\",[28359]],[[194829,194829],\"mapped\",[147153]],[[194830,194830],\"mapped\",[28153]],[[194831,194831],\"mapped\",[28526]],[[194832,194832],\"mapped\",[147294]],[[194833,194833],\"mapped\",[147342]],[[194834,194834],\"mapped\",[28614]],[[194835,194835],\"mapped\",[28729]],[[194836,194836],\"mapped\",[28702]],[[194837,194837],\"mapped\",[28699]],[[194838,194838],\"mapped\",[15766]],[[194839,194839],\"mapped\",[28746]],[[194840,194840],\"mapped\",[28797]],[[194841,194841],\"mapped\",[28791]],[[194842,194842],\"mapped\",[28845]],[[194843,194843],\"mapped\",[132389]],[[194844,194844],\"mapped\",[28997]],[[194845,194845],\"mapped\",[148067]],[[194846,194846],\"mapped\",[29084]],[[194847,194847],\"disallowed\"],[[194848,194848],\"mapped\",[29224]],[[194849,194849],\"mapped\",[29237]],[[194850,194850],\"mapped\",[29264]],[[194851,194851],\"mapped\",[149000]],[[194852,194852],\"mapped\",[29312]],[[194853,194853],\"mapped\",[29333]],[[194854,194854],\"mapped\",[149301]],[[194855,194855],\"mapped\",[149524]],[[194856,194856],\"mapped\",[29562]],[[194857,194857],\"mapped\",[29579]],[[194858,194858],\"mapped\",[16044]],[[194859,194859],\"mapped\",[29605]],[[194860,194861],\"mapped\",[16056]],[[194862,194862],\"mapped\",[29767]],[[194863,194863],\"mapped\",[29788]],[[194864,194864],\"mapped\",[29809]],[[194865,194865],\"mapped\",[29829]],[[194866,194866],\"mapped\",[29898]],[[194867,194867],\"mapped\",[16155]],[[194868,194868],\"mapped\",[29988]],[[194869,194869],\"mapped\",[150582]],[[194870,194870],\"mapped\",[30014]],[[194871,194871],\"mapped\",[150674]],[[194872,194872],\"mapped\",[30064]],[[194873,194873],\"mapped\",[139679]],[[194874,194874],\"mapped\",[30224]],[[194875,194875],\"mapped\",[151457]],[[194876,194876],\"mapped\",[151480]],[[194877,194877],\"mapped\",[151620]],[[194878,194878],\"mapped\",[16380]],[[194879,194879],\"mapped\",[16392]],[[194880,194880],\"mapped\",[30452]],[[194881,194881],\"mapped\",[151795]],[[194882,194882],\"mapped\",[151794]],[[194883,194883],\"mapped\",[151833]],[[194884,194884],\"mapped\",[151859]],[[194885,194885],\"mapped\",[30494]],[[194886,194887],\"mapped\",[30495]],[[194888,194888],\"mapped\",[30538]],[[194889,194889],\"mapped\",[16441]],[[194890,194890],\"mapped\",[30603]],[[194891,194891],\"mapped\",[16454]],[[194892,194892],\"mapped\",[16534]],[[194893,194893],\"mapped\",[152605]],[[194894,194894],\"mapped\",[30798]],[[194895,194895],\"mapped\",[30860]],[[194896,194896],\"mapped\",[30924]],[[194897,194897],\"mapped\",[16611]],[[194898,194898],\"mapped\",[153126]],[[194899,194899],\"mapped\",[31062]],[[194900,194900],\"mapped\",[153242]],[[194901,194901],\"mapped\",[153285]],[[194902,194902],\"mapped\",[31119]],[[194903,194903],\"mapped\",[31211]],[[194904,194904],\"mapped\",[16687]],[[194905,194905],\"mapped\",[31296]],[[194906,194906],\"mapped\",[31306]],[[194907,194907],\"mapped\",[31311]],[[194908,194908],\"mapped\",[153980]],[[194909,194910],\"mapped\",[154279]],[[194911,194911],\"disallowed\"],[[194912,194912],\"mapped\",[16898]],[[194913,194913],\"mapped\",[154539]],[[194914,194914],\"mapped\",[31686]],[[194915,194915],\"mapped\",[31689]],[[194916,194916],\"mapped\",[16935]],[[194917,194917],\"mapped\",[154752]],[[194918,194918],\"mapped\",[31954]],[[194919,194919],\"mapped\",[17056]],[[194920,194920],\"mapped\",[31976]],[[194921,194921],\"mapped\",[31971]],[[194922,194922],\"mapped\",[32000]],[[194923,194923],\"mapped\",[155526]],[[194924,194924],\"mapped\",[32099]],[[194925,194925],\"mapped\",[17153]],[[194926,194926],\"mapped\",[32199]],[[194927,194927],\"mapped\",[32258]],[[194928,194928],\"mapped\",[32325]],[[194929,194929],\"mapped\",[17204]],[[194930,194930],\"mapped\",[156200]],[[194931,194931],\"mapped\",[156231]],[[194932,194932],\"mapped\",[17241]],[[194933,194933],\"mapped\",[156377]],[[194934,194934],\"mapped\",[32634]],[[194935,194935],\"mapped\",[156478]],[[194936,194936],\"mapped\",[32661]],[[194937,194937],\"mapped\",[32762]],[[194938,194938],\"mapped\",[32773]],[[194939,194939],\"mapped\",[156890]],[[194940,194940],\"mapped\",[156963]],[[194941,194941],\"mapped\",[32864]],[[194942,194942],\"mapped\",[157096]],[[194943,194943],\"mapped\",[32880]],[[194944,194944],\"mapped\",[144223]],[[194945,194945],\"mapped\",[17365]],[[194946,194946],\"mapped\",[32946]],[[194947,194947],\"mapped\",[33027]],[[194948,194948],\"mapped\",[17419]],[[194949,194949],\"mapped\",[33086]],[[194950,194950],\"mapped\",[23221]],[[194951,194951],\"mapped\",[157607]],[[194952,194952],\"mapped\",[157621]],[[194953,194953],\"mapped\",[144275]],[[194954,194954],\"mapped\",[144284]],[[194955,194955],\"mapped\",[33281]],[[194956,194956],\"mapped\",[33284]],[[194957,194957],\"mapped\",[36766]],[[194958,194958],\"mapped\",[17515]],[[194959,194959],\"mapped\",[33425]],[[194960,194960],\"mapped\",[33419]],[[194961,194961],\"mapped\",[33437]],[[194962,194962],\"mapped\",[21171]],[[194963,194963],\"mapped\",[33457]],[[194964,194964],\"mapped\",[33459]],[[194965,194965],\"mapped\",[33469]],[[194966,194966],\"mapped\",[33510]],[[194967,194967],\"mapped\",[158524]],[[194968,194968],\"mapped\",[33509]],[[194969,194969],\"mapped\",[33565]],[[194970,194970],\"mapped\",[33635]],[[194971,194971],\"mapped\",[33709]],[[194972,194972],\"mapped\",[33571]],[[194973,194973],\"mapped\",[33725]],[[194974,194974],\"mapped\",[33767]],[[194975,194975],\"mapped\",[33879]],[[194976,194976],\"mapped\",[33619]],[[194977,194977],\"mapped\",[33738]],[[194978,194978],\"mapped\",[33740]],[[194979,194979],\"mapped\",[33756]],[[194980,194980],\"mapped\",[158774]],[[194981,194981],\"mapped\",[159083]],[[194982,194982],\"mapped\",[158933]],[[194983,194983],\"mapped\",[17707]],[[194984,194984],\"mapped\",[34033]],[[194985,194985],\"mapped\",[34035]],[[194986,194986],\"mapped\",[34070]],[[194987,194987],\"mapped\",[160714]],[[194988,194988],\"mapped\",[34148]],[[194989,194989],\"mapped\",[159532]],[[194990,194990],\"mapped\",[17757]],[[194991,194991],\"mapped\",[17761]],[[194992,194992],\"mapped\",[159665]],[[194993,194993],\"mapped\",[159954]],[[194994,194994],\"mapped\",[17771]],[[194995,194995],\"mapped\",[34384]],[[194996,194996],\"mapped\",[34396]],[[194997,194997],\"mapped\",[34407]],[[194998,194998],\"mapped\",[34409]],[[194999,194999],\"mapped\",[34473]],[[195000,195000],\"mapped\",[34440]],[[195001,195001],\"mapped\",[34574]],[[195002,195002],\"mapped\",[34530]],[[195003,195003],\"mapped\",[34681]],[[195004,195004],\"mapped\",[34600]],[[195005,195005],\"mapped\",[34667]],[[195006,195006],\"mapped\",[34694]],[[195007,195007],\"disallowed\"],[[195008,195008],\"mapped\",[34785]],[[195009,195009],\"mapped\",[34817]],[[195010,195010],\"mapped\",[17913]],[[195011,195011],\"mapped\",[34912]],[[195012,195012],\"mapped\",[34915]],[[195013,195013],\"mapped\",[161383]],[[195014,195014],\"mapped\",[35031]],[[195015,195015],\"mapped\",[35038]],[[195016,195016],\"mapped\",[17973]],[[195017,195017],\"mapped\",[35066]],[[195018,195018],\"mapped\",[13499]],[[195019,195019],\"mapped\",[161966]],[[195020,195020],\"mapped\",[162150]],[[195021,195021],\"mapped\",[18110]],[[195022,195022],\"mapped\",[18119]],[[195023,195023],\"mapped\",[35488]],[[195024,195024],\"mapped\",[35565]],[[195025,195025],\"mapped\",[35722]],[[195026,195026],\"mapped\",[35925]],[[195027,195027],\"mapped\",[162984]],[[195028,195028],\"mapped\",[36011]],[[195029,195029],\"mapped\",[36033]],[[195030,195030],\"mapped\",[36123]],[[195031,195031],\"mapped\",[36215]],[[195032,195032],\"mapped\",[163631]],[[195033,195033],\"mapped\",[133124]],[[195034,195034],\"mapped\",[36299]],[[195035,195035],\"mapped\",[36284]],[[195036,195036],\"mapped\",[36336]],[[195037,195037],\"mapped\",[133342]],[[195038,195038],\"mapped\",[36564]],[[195039,195039],\"mapped\",[36664]],[[195040,195040],\"mapped\",[165330]],[[195041,195041],\"mapped\",[165357]],[[195042,195042],\"mapped\",[37012]],[[195043,195043],\"mapped\",[37105]],[[195044,195044],\"mapped\",[37137]],[[195045,195045],\"mapped\",[165678]],[[195046,195046],\"mapped\",[37147]],[[195047,195047],\"mapped\",[37432]],[[195048,195048],\"mapped\",[37591]],[[195049,195049],\"mapped\",[37592]],[[195050,195050],\"mapped\",[37500]],[[195051,195051],\"mapped\",[37881]],[[195052,195052],\"mapped\",[37909]],[[195053,195053],\"mapped\",[166906]],[[195054,195054],\"mapped\",[38283]],[[195055,195055],\"mapped\",[18837]],[[195056,195056],\"mapped\",[38327]],[[195057,195057],\"mapped\",[167287]],[[195058,195058],\"mapped\",[18918]],[[195059,195059],\"mapped\",[38595]],[[195060,195060],\"mapped\",[23986]],[[195061,195061],\"mapped\",[38691]],[[195062,195062],\"mapped\",[168261]],[[195063,195063],\"mapped\",[168474]],[[195064,195064],\"mapped\",[19054]],[[195065,195065],\"mapped\",[19062]],[[195066,195066],\"mapped\",[38880]],[[195067,195067],\"mapped\",[168970]],[[195068,195068],\"mapped\",[19122]],[[195069,195069],\"mapped\",[169110]],[[195070,195071],\"mapped\",[38923]],[[195072,195072],\"mapped\",[38953]],[[195073,195073],\"mapped\",[169398]],[[195074,195074],\"mapped\",[39138]],[[195075,195075],\"mapped\",[19251]],[[195076,195076],\"mapped\",[39209]],[[195077,195077],\"mapped\",[39335]],[[195078,195078],\"mapped\",[39362]],[[195079,195079],\"mapped\",[39422]],[[195080,195080],\"mapped\",[19406]],[[195081,195081],\"mapped\",[170800]],[[195082,195082],\"mapped\",[39698]],[[195083,195083],\"mapped\",[40000]],[[195084,195084],\"mapped\",[40189]],[[195085,195085],\"mapped\",[19662]],[[195086,195086],\"mapped\",[19693]],[[195087,195087],\"mapped\",[40295]],[[195088,195088],\"mapped\",[172238]],[[195089,195089],\"mapped\",[19704]],[[195090,195090],\"mapped\",[172293]],[[195091,195091],\"mapped\",[172558]],[[195092,195092],\"mapped\",[172689]],[[195093,195093],\"mapped\",[40635]],[[195094,195094],\"mapped\",[19798]],[[195095,195095],\"mapped\",[40697]],[[195096,195096],\"mapped\",[40702]],[[195097,195097],\"mapped\",[40709]],[[195098,195098],\"mapped\",[40719]],[[195099,195099],\"mapped\",[40726]],[[195100,195100],\"mapped\",[40763]],[[195101,195101],\"mapped\",[173568]],[[195102,196605],\"disallowed\"],[[196606,196607],\"disallowed\"],[[196608,262141],\"disallowed\"],[[262142,262143],\"disallowed\"],[[262144,327677],\"disallowed\"],[[327678,327679],\"disallowed\"],[[327680,393213],\"disallowed\"],[[393214,393215],\"disallowed\"],[[393216,458749],\"disallowed\"],[[458750,458751],\"disallowed\"],[[458752,524285],\"disallowed\"],[[524286,524287],\"disallowed\"],[[524288,589821],\"disallowed\"],[[589822,589823],\"disallowed\"],[[589824,655357],\"disallowed\"],[[655358,655359],\"disallowed\"],[[655360,720893],\"disallowed\"],[[720894,720895],\"disallowed\"],[[720896,786429],\"disallowed\"],[[786430,786431],\"disallowed\"],[[786432,851965],\"disallowed\"],[[851966,851967],\"disallowed\"],[[851968,917501],\"disallowed\"],[[917502,917503],\"disallowed\"],[[917504,917504],\"disallowed\"],[[917505,917505],\"disallowed\"],[[917506,917535],\"disallowed\"],[[917536,917631],\"disallowed\"],[[917632,917759],\"disallowed\"],[[917760,917999],\"ignored\"],[[918000,983037],\"disallowed\"],[[983038,983039],\"disallowed\"],[[983040,1048573],\"disallowed\"],[[1048574,1048575],\"disallowed\"],[[1048576,1114109],\"disallowed\"],[[1114110,1114111],\"disallowed\"]]", "\"use strict\";\n\nvar punycode = require(\"punycode\");\nvar mappingTable = require(\"./lib/mappingTable.json\");\n\nvar PROCESSING_OPTIONS = {\n  TRANSITIONAL: 0,\n  NONTRANSITIONAL: 1\n};\n\nfunction normalize(str) { // fix bug in v8\n  return str.split('\\u0000').map(function (s) { return s.normalize('NFC'); }).join('\\u0000');\n}\n\nfunction findStatus(val) {\n  var start = 0;\n  var end = mappingTable.length - 1;\n\n  while (start <= end) {\n    var mid = Math.floor((start + end) / 2);\n\n    var target = mappingTable[mid];\n    if (target[0][0] <= val && target[0][1] >= val) {\n      return target;\n    } else if (target[0][0] > val) {\n      end = mid - 1;\n    } else {\n      start = mid + 1;\n    }\n  }\n\n  return null;\n}\n\nvar regexAstralSymbols = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/g;\n\nfunction countSymbols(string) {\n  return string\n    // replace every surrogate pair with a BMP symbol\n    .replace(regexAstralSymbols, '_')\n    // then get the length\n    .length;\n}\n\nfunction mapChars(domain_name, useSTD3, processing_option) {\n  var hasError = false;\n  var processed = \"\";\n\n  var len = countSymbols(domain_name);\n  for (var i = 0; i < len; ++i) {\n    var codePoint = domain_name.codePointAt(i);\n    var status = findStatus(codePoint);\n\n    switch (status[1]) {\n      case \"disallowed\":\n        hasError = true;\n        processed += String.fromCodePoint(codePoint);\n        break;\n      case \"ignored\":\n        break;\n      case \"mapped\":\n        processed += String.fromCodePoint.apply(String, status[2]);\n        break;\n      case \"deviation\":\n        if (processing_option === PROCESSING_OPTIONS.TRANSITIONAL) {\n          processed += String.fromCodePoint.apply(String, status[2]);\n        } else {\n          processed += String.fromCodePoint(codePoint);\n        }\n        break;\n      case \"valid\":\n        processed += String.fromCodePoint(codePoint);\n        break;\n      case \"disallowed_STD3_mapped\":\n        if (useSTD3) {\n          hasError = true;\n          processed += String.fromCodePoint(codePoint);\n        } else {\n          processed += String.fromCodePoint.apply(String, status[2]);\n        }\n        break;\n      case \"disallowed_STD3_valid\":\n        if (useSTD3) {\n          hasError = true;\n        }\n\n        processed += String.fromCodePoint(codePoint);\n        break;\n    }\n  }\n\n  return {\n    string: processed,\n    error: hasError\n  };\n}\n\nvar combiningMarksRegex = /[\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08E4-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C03\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D01-\\u0D03\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D82\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u19B0-\\u19C0\\u19C8\\u19C9\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF2-\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF5\\u1DFC-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA880\\uA881\\uA8B4-\\uA8C4\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2D]|\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD804[\\uDC00-\\uDC02\\uDC38-\\uDC46\\uDC7F-\\uDC82\\uDCB0-\\uDCBA\\uDD00-\\uDD02\\uDD27-\\uDD34\\uDD73\\uDD80-\\uDD82\\uDDB3-\\uDDC0\\uDE2C-\\uDE37\\uDEDF-\\uDEEA\\uDF01-\\uDF03\\uDF3C\\uDF3E-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF57\\uDF62\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDCB0-\\uDCC3\\uDDAF-\\uDDB5\\uDDB8-\\uDDC0\\uDE30-\\uDE40\\uDEAB-\\uDEB7]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF51-\\uDF7E\\uDF8F-\\uDF92]|\\uD82F[\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD83A[\\uDCD0-\\uDCD6]|\\uDB40[\\uDD00-\\uDDEF]/;\n\nfunction validateLabel(label, processing_option) {\n  if (label.substr(0, 4) === \"xn--\") {\n    label = punycode.toUnicode(label);\n    processing_option = PROCESSING_OPTIONS.NONTRANSITIONAL;\n  }\n\n  var error = false;\n\n  if (normalize(label) !== label ||\n      (label[3] === \"-\" && label[4] === \"-\") ||\n      label[0] === \"-\" || label[label.length - 1] === \"-\" ||\n      label.indexOf(\".\") !== -1 ||\n      label.search(combiningMarksRegex) === 0) {\n    error = true;\n  }\n\n  var len = countSymbols(label);\n  for (var i = 0; i < len; ++i) {\n    var status = findStatus(label.codePointAt(i));\n    if ((processing === PROCESSING_OPTIONS.TRANSITIONAL && status[1] !== \"valid\") ||\n        (processing === PROCESSING_OPTIONS.NONTRANSITIONAL &&\n         status[1] !== \"valid\" && status[1] !== \"deviation\")) {\n      error = true;\n      break;\n    }\n  }\n\n  return {\n    label: label,\n    error: error\n  };\n}\n\nfunction processing(domain_name, useSTD3, processing_option) {\n  var result = mapChars(domain_name, useSTD3, processing_option);\n  result.string = normalize(result.string);\n\n  var labels = result.string.split(\".\");\n  for (var i = 0; i < labels.length; ++i) {\n    try {\n      var validation = validateLabel(labels[i]);\n      labels[i] = validation.label;\n      result.error = result.error || validation.error;\n    } catch(e) {\n      result.error = true;\n    }\n  }\n\n  return {\n    string: labels.join(\".\"),\n    error: result.error\n  };\n}\n\nmodule.exports.toASCII = function(domain_name, useSTD3, processing_option, verifyDnsLength) {\n  var result = processing(domain_name, useSTD3, processing_option);\n  var labels = result.string.split(\".\");\n  labels = labels.map(function(l) {\n    try {\n      return punycode.toASCII(l);\n    } catch(e) {\n      result.error = true;\n      return l;\n    }\n  });\n\n  if (verifyDnsLength) {\n    var total = labels.slice(0, labels.length - 1).join(\".\").length;\n    if (total.length > 253 || total.length === 0) {\n      result.error = true;\n    }\n\n    for (var i=0; i < labels.length; ++i) {\n      if (labels.length > 63 || labels.length === 0) {\n        result.error = true;\n        break;\n      }\n    }\n  }\n\n  if (result.error) return null;\n  return labels.join(\".\");\n};\n\nmodule.exports.toUnicode = function(domain_name, useSTD3) {\n  var result = processing(domain_name, useSTD3, PROCESSING_OPTIONS.NONTRANSITIONAL);\n\n  return {\n    domain: result.string,\n    error: result.error\n  };\n};\n\nmodule.exports.PROCESSING_OPTIONS = PROCESSING_OPTIONS;\n", "\"use strict\";\r\nconst punycode = require(\"punycode\");\r\nconst tr46 = require(\"tr46\");\r\n\r\nconst specialSchemes = {\r\n  ftp: 21,\r\n  file: null,\r\n  gopher: 70,\r\n  http: 80,\r\n  https: 443,\r\n  ws: 80,\r\n  wss: 443\r\n};\r\n\r\nconst failure = Symbol(\"failure\");\r\n\r\nfunction countSymbols(str) {\r\n  return punycode.ucs2.decode(str).length;\r\n}\r\n\r\nfunction at(input, idx) {\r\n  const c = input[idx];\r\n  return isNaN(c) ? undefined : String.fromCodePoint(c);\r\n}\r\n\r\nfunction isASCIIDigit(c) {\r\n  return c >= 0x30 && c <= 0x39;\r\n}\r\n\r\nfunction isASCIIAlpha(c) {\r\n  return (c >= 0x41 && c <= 0x5A) || (c >= 0x61 && c <= 0x7A);\r\n}\r\n\r\nfunction isASCIIAlphanumeric(c) {\r\n  return isASCIIAlpha(c) || isASCIIDigit(c);\r\n}\r\n\r\nfunction isASCIIHex(c) {\r\n  return isASCIIDigit(c) || (c >= 0x41 && c <= 0x46) || (c >= 0x61 && c <= 0x66);\r\n}\r\n\r\nfunction isSingleDot(buffer) {\r\n  return buffer === \".\" || buffer.toLowerCase() === \"%2e\";\r\n}\r\n\r\nfunction isDoubleDot(buffer) {\r\n  buffer = buffer.toLowerCase();\r\n  return buffer === \"..\" || buffer === \"%2e.\" || buffer === \".%2e\" || buffer === \"%2e%2e\";\r\n}\r\n\r\nfunction isWindowsDriveLetterCodePoints(cp1, cp2) {\r\n  return isASCIIAlpha(cp1) && (cp2 === 58 || cp2 === 124);\r\n}\r\n\r\nfunction isWindowsDriveLetterString(string) {\r\n  return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && (string[1] === \":\" || string[1] === \"|\");\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetterString(string) {\r\n  return string.length === 2 && isASCIIAlpha(string.codePointAt(0)) && string[1] === \":\";\r\n}\r\n\r\nfunction containsForbiddenHostCodePoint(string) {\r\n  return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|%|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction containsForbiddenHostCodePointExcludingPercent(string) {\r\n  return string.search(/\\u0000|\\u0009|\\u000A|\\u000D|\\u0020|#|\\/|:|\\?|@|\\[|\\\\|\\]/) !== -1;\r\n}\r\n\r\nfunction isSpecialScheme(scheme) {\r\n  return specialSchemes[scheme] !== undefined;\r\n}\r\n\r\nfunction isSpecial(url) {\r\n  return isSpecialScheme(url.scheme);\r\n}\r\n\r\nfunction defaultPort(scheme) {\r\n  return specialSchemes[scheme];\r\n}\r\n\r\nfunction percentEncode(c) {\r\n  let hex = c.toString(16).toUpperCase();\r\n  if (hex.length === 1) {\r\n    hex = \"0\" + hex;\r\n  }\r\n\r\n  return \"%\" + hex;\r\n}\r\n\r\nfunction utf8PercentEncode(c) {\r\n  const buf = new Buffer(c);\r\n\r\n  let str = \"\";\r\n\r\n  for (let i = 0; i < buf.length; ++i) {\r\n    str += percentEncode(buf[i]);\r\n  }\r\n\r\n  return str;\r\n}\r\n\r\nfunction utf8PercentDecode(str) {\r\n  const input = new Buffer(str);\r\n  const output = [];\r\n  for (let i = 0; i < input.length; ++i) {\r\n    if (input[i] !== 37) {\r\n      output.push(input[i]);\r\n    } else if (input[i] === 37 && isASCIIHex(input[i + 1]) && isASCIIHex(input[i + 2])) {\r\n      output.push(parseInt(input.slice(i + 1, i + 3).toString(), 16));\r\n      i += 2;\r\n    } else {\r\n      output.push(input[i]);\r\n    }\r\n  }\r\n  return new Buffer(output).toString();\r\n}\r\n\r\nfunction isC0ControlPercentEncode(c) {\r\n  return c <= 0x1F || c > 0x7E;\r\n}\r\n\r\nconst extraPathPercentEncodeSet = new Set([32, 34, 35, 60, 62, 63, 96, 123, 125]);\r\nfunction isPathPercentEncode(c) {\r\n  return isC0ControlPercentEncode(c) || extraPathPercentEncodeSet.has(c);\r\n}\r\n\r\nconst extraUserinfoPercentEncodeSet =\r\n  new Set([47, 58, 59, 61, 64, 91, 92, 93, 94, 124]);\r\nfunction isUserinfoPercentEncode(c) {\r\n  return isPathPercentEncode(c) || extraUserinfoPercentEncodeSet.has(c);\r\n}\r\n\r\nfunction percentEncodeChar(c, encodeSetPredicate) {\r\n  const cStr = String.fromCodePoint(c);\r\n\r\n  if (encodeSetPredicate(c)) {\r\n    return utf8PercentEncode(cStr);\r\n  }\r\n\r\n  return cStr;\r\n}\r\n\r\nfunction parseIPv4Number(input) {\r\n  let R = 10;\r\n\r\n  if (input.length >= 2 && input.charAt(0) === \"0\" && input.charAt(1).toLowerCase() === \"x\") {\r\n    input = input.substring(2);\r\n    R = 16;\r\n  } else if (input.length >= 2 && input.charAt(0) === \"0\") {\r\n    input = input.substring(1);\r\n    R = 8;\r\n  }\r\n\r\n  if (input === \"\") {\r\n    return 0;\r\n  }\r\n\r\n  const regex = R === 10 ? /[^0-9]/ : (R === 16 ? /[^0-9A-Fa-f]/ : /[^0-7]/);\r\n  if (regex.test(input)) {\r\n    return failure;\r\n  }\r\n\r\n  return parseInt(input, R);\r\n}\r\n\r\nfunction parseIPv4(input) {\r\n  const parts = input.split(\".\");\r\n  if (parts[parts.length - 1] === \"\") {\r\n    if (parts.length > 1) {\r\n      parts.pop();\r\n    }\r\n  }\r\n\r\n  if (parts.length > 4) {\r\n    return input;\r\n  }\r\n\r\n  const numbers = [];\r\n  for (const part of parts) {\r\n    if (part === \"\") {\r\n      return input;\r\n    }\r\n    const n = parseIPv4Number(part);\r\n    if (n === failure) {\r\n      return input;\r\n    }\r\n\r\n    numbers.push(n);\r\n  }\r\n\r\n  for (let i = 0; i < numbers.length - 1; ++i) {\r\n    if (numbers[i] > 255) {\r\n      return failure;\r\n    }\r\n  }\r\n  if (numbers[numbers.length - 1] >= Math.pow(256, 5 - numbers.length)) {\r\n    return failure;\r\n  }\r\n\r\n  let ipv4 = numbers.pop();\r\n  let counter = 0;\r\n\r\n  for (const n of numbers) {\r\n    ipv4 += n * Math.pow(256, 3 - counter);\r\n    ++counter;\r\n  }\r\n\r\n  return ipv4;\r\n}\r\n\r\nfunction serializeIPv4(address) {\r\n  let output = \"\";\r\n  let n = address;\r\n\r\n  for (let i = 1; i <= 4; ++i) {\r\n    output = String(n % 256) + output;\r\n    if (i !== 4) {\r\n      output = \".\" + output;\r\n    }\r\n    n = Math.floor(n / 256);\r\n  }\r\n\r\n  return output;\r\n}\r\n\r\nfunction parseIPv6(input) {\r\n  const address = [0, 0, 0, 0, 0, 0, 0, 0];\r\n  let pieceIndex = 0;\r\n  let compress = null;\r\n  let pointer = 0;\r\n\r\n  input = punycode.ucs2.decode(input);\r\n\r\n  if (input[pointer] === 58) {\r\n    if (input[pointer + 1] !== 58) {\r\n      return failure;\r\n    }\r\n\r\n    pointer += 2;\r\n    ++pieceIndex;\r\n    compress = pieceIndex;\r\n  }\r\n\r\n  while (pointer < input.length) {\r\n    if (pieceIndex === 8) {\r\n      return failure;\r\n    }\r\n\r\n    if (input[pointer] === 58) {\r\n      if (compress !== null) {\r\n        return failure;\r\n      }\r\n      ++pointer;\r\n      ++pieceIndex;\r\n      compress = pieceIndex;\r\n      continue;\r\n    }\r\n\r\n    let value = 0;\r\n    let length = 0;\r\n\r\n    while (length < 4 && isASCIIHex(input[pointer])) {\r\n      value = value * 0x10 + parseInt(at(input, pointer), 16);\r\n      ++pointer;\r\n      ++length;\r\n    }\r\n\r\n    if (input[pointer] === 46) {\r\n      if (length === 0) {\r\n        return failure;\r\n      }\r\n\r\n      pointer -= length;\r\n\r\n      if (pieceIndex > 6) {\r\n        return failure;\r\n      }\r\n\r\n      let numbersSeen = 0;\r\n\r\n      while (input[pointer] !== undefined) {\r\n        let ipv4Piece = null;\r\n\r\n        if (numbersSeen > 0) {\r\n          if (input[pointer] === 46 && numbersSeen < 4) {\r\n            ++pointer;\r\n          } else {\r\n            return failure;\r\n          }\r\n        }\r\n\r\n        if (!isASCIIDigit(input[pointer])) {\r\n          return failure;\r\n        }\r\n\r\n        while (isASCIIDigit(input[pointer])) {\r\n          const number = parseInt(at(input, pointer));\r\n          if (ipv4Piece === null) {\r\n            ipv4Piece = number;\r\n          } else if (ipv4Piece === 0) {\r\n            return failure;\r\n          } else {\r\n            ipv4Piece = ipv4Piece * 10 + number;\r\n          }\r\n          if (ipv4Piece > 255) {\r\n            return failure;\r\n          }\r\n          ++pointer;\r\n        }\r\n\r\n        address[pieceIndex] = address[pieceIndex] * 0x100 + ipv4Piece;\r\n\r\n        ++numbersSeen;\r\n\r\n        if (numbersSeen === 2 || numbersSeen === 4) {\r\n          ++pieceIndex;\r\n        }\r\n      }\r\n\r\n      if (numbersSeen !== 4) {\r\n        return failure;\r\n      }\r\n\r\n      break;\r\n    } else if (input[pointer] === 58) {\r\n      ++pointer;\r\n      if (input[pointer] === undefined) {\r\n        return failure;\r\n      }\r\n    } else if (input[pointer] !== undefined) {\r\n      return failure;\r\n    }\r\n\r\n    address[pieceIndex] = value;\r\n    ++pieceIndex;\r\n  }\r\n\r\n  if (compress !== null) {\r\n    let swaps = pieceIndex - compress;\r\n    pieceIndex = 7;\r\n    while (pieceIndex !== 0 && swaps > 0) {\r\n      const temp = address[compress + swaps - 1];\r\n      address[compress + swaps - 1] = address[pieceIndex];\r\n      address[pieceIndex] = temp;\r\n      --pieceIndex;\r\n      --swaps;\r\n    }\r\n  } else if (compress === null && pieceIndex !== 8) {\r\n    return failure;\r\n  }\r\n\r\n  return address;\r\n}\r\n\r\nfunction serializeIPv6(address) {\r\n  let output = \"\";\r\n  const seqResult = findLongestZeroSequence(address);\r\n  const compress = seqResult.idx;\r\n  let ignore0 = false;\r\n\r\n  for (let pieceIndex = 0; pieceIndex <= 7; ++pieceIndex) {\r\n    if (ignore0 && address[pieceIndex] === 0) {\r\n      continue;\r\n    } else if (ignore0) {\r\n      ignore0 = false;\r\n    }\r\n\r\n    if (compress === pieceIndex) {\r\n      const separator = pieceIndex === 0 ? \"::\" : \":\";\r\n      output += separator;\r\n      ignore0 = true;\r\n      continue;\r\n    }\r\n\r\n    output += address[pieceIndex].toString(16);\r\n\r\n    if (pieceIndex !== 7) {\r\n      output += \":\";\r\n    }\r\n  }\r\n\r\n  return output;\r\n}\r\n\r\nfunction parseHost(input, isSpecialArg) {\r\n  if (input[0] === \"[\") {\r\n    if (input[input.length - 1] !== \"]\") {\r\n      return failure;\r\n    }\r\n\r\n    return parseIPv6(input.substring(1, input.length - 1));\r\n  }\r\n\r\n  if (!isSpecialArg) {\r\n    return parseOpaqueHost(input);\r\n  }\r\n\r\n  const domain = utf8PercentDecode(input);\r\n  const asciiDomain = tr46.toASCII(domain, false, tr46.PROCESSING_OPTIONS.NONTRANSITIONAL, false);\r\n  if (asciiDomain === null) {\r\n    return failure;\r\n  }\r\n\r\n  if (containsForbiddenHostCodePoint(asciiDomain)) {\r\n    return failure;\r\n  }\r\n\r\n  const ipv4Host = parseIPv4(asciiDomain);\r\n  if (typeof ipv4Host === \"number\" || ipv4Host === failure) {\r\n    return ipv4Host;\r\n  }\r\n\r\n  return asciiDomain;\r\n}\r\n\r\nfunction parseOpaqueHost(input) {\r\n  if (containsForbiddenHostCodePointExcludingPercent(input)) {\r\n    return failure;\r\n  }\r\n\r\n  let output = \"\";\r\n  const decoded = punycode.ucs2.decode(input);\r\n  for (let i = 0; i < decoded.length; ++i) {\r\n    output += percentEncodeChar(decoded[i], isC0ControlPercentEncode);\r\n  }\r\n  return output;\r\n}\r\n\r\nfunction findLongestZeroSequence(arr) {\r\n  let maxIdx = null;\r\n  let maxLen = 1; // only find elements > 1\r\n  let currStart = null;\r\n  let currLen = 0;\r\n\r\n  for (let i = 0; i < arr.length; ++i) {\r\n    if (arr[i] !== 0) {\r\n      if (currLen > maxLen) {\r\n        maxIdx = currStart;\r\n        maxLen = currLen;\r\n      }\r\n\r\n      currStart = null;\r\n      currLen = 0;\r\n    } else {\r\n      if (currStart === null) {\r\n        currStart = i;\r\n      }\r\n      ++currLen;\r\n    }\r\n  }\r\n\r\n  // if trailing zeros\r\n  if (currLen > maxLen) {\r\n    maxIdx = currStart;\r\n    maxLen = currLen;\r\n  }\r\n\r\n  return {\r\n    idx: maxIdx,\r\n    len: maxLen\r\n  };\r\n}\r\n\r\nfunction serializeHost(host) {\r\n  if (typeof host === \"number\") {\r\n    return serializeIPv4(host);\r\n  }\r\n\r\n  // IPv6 serializer\r\n  if (host instanceof Array) {\r\n    return \"[\" + serializeIPv6(host) + \"]\";\r\n  }\r\n\r\n  return host;\r\n}\r\n\r\nfunction trimControlChars(url) {\r\n  return url.replace(/^[\\u0000-\\u001F\\u0020]+|[\\u0000-\\u001F\\u0020]+$/g, \"\");\r\n}\r\n\r\nfunction trimTabAndNewline(url) {\r\n  return url.replace(/\\u0009|\\u000A|\\u000D/g, \"\");\r\n}\r\n\r\nfunction shortenPath(url) {\r\n  const path = url.path;\r\n  if (path.length === 0) {\r\n    return;\r\n  }\r\n  if (url.scheme === \"file\" && path.length === 1 && isNormalizedWindowsDriveLetter(path[0])) {\r\n    return;\r\n  }\r\n\r\n  path.pop();\r\n}\r\n\r\nfunction includesCredentials(url) {\r\n  return url.username !== \"\" || url.password !== \"\";\r\n}\r\n\r\nfunction cannotHaveAUsernamePasswordPort(url) {\r\n  return url.host === null || url.host === \"\" || url.cannotBeABaseURL || url.scheme === \"file\";\r\n}\r\n\r\nfunction isNormalizedWindowsDriveLetter(string) {\r\n  return /^[A-Za-z]:$/.test(string);\r\n}\r\n\r\nfunction URLStateMachine(input, base, encodingOverride, url, stateOverride) {\r\n  this.pointer = 0;\r\n  this.input = input;\r\n  this.base = base || null;\r\n  this.encodingOverride = encodingOverride || \"utf-8\";\r\n  this.stateOverride = stateOverride;\r\n  this.url = url;\r\n  this.failure = false;\r\n  this.parseError = false;\r\n\r\n  if (!this.url) {\r\n    this.url = {\r\n      scheme: \"\",\r\n      username: \"\",\r\n      password: \"\",\r\n      host: null,\r\n      port: null,\r\n      path: [],\r\n      query: null,\r\n      fragment: null,\r\n\r\n      cannotBeABaseURL: false\r\n    };\r\n\r\n    const res = trimControlChars(this.input);\r\n    if (res !== this.input) {\r\n      this.parseError = true;\r\n    }\r\n    this.input = res;\r\n  }\r\n\r\n  const res = trimTabAndNewline(this.input);\r\n  if (res !== this.input) {\r\n    this.parseError = true;\r\n  }\r\n  this.input = res;\r\n\r\n  this.state = stateOverride || \"scheme start\";\r\n\r\n  this.buffer = \"\";\r\n  this.atFlag = false;\r\n  this.arrFlag = false;\r\n  this.passwordTokenSeenFlag = false;\r\n\r\n  this.input = punycode.ucs2.decode(this.input);\r\n\r\n  for (; this.pointer <= this.input.length; ++this.pointer) {\r\n    const c = this.input[this.pointer];\r\n    const cStr = isNaN(c) ? undefined : String.fromCodePoint(c);\r\n\r\n    // exec state machine\r\n    const ret = this[\"parse \" + this.state](c, cStr);\r\n    if (!ret) {\r\n      break; // terminate algorithm\r\n    } else if (ret === failure) {\r\n      this.failure = true;\r\n      break;\r\n    }\r\n  }\r\n}\r\n\r\nURLStateMachine.prototype[\"parse scheme start\"] = function parseSchemeStart(c, cStr) {\r\n  if (isASCIIAlpha(c)) {\r\n    this.buffer += cStr.toLowerCase();\r\n    this.state = \"scheme\";\r\n  } else if (!this.stateOverride) {\r\n    this.state = \"no scheme\";\r\n    --this.pointer;\r\n  } else {\r\n    this.parseError = true;\r\n    return failure;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse scheme\"] = function parseScheme(c, cStr) {\r\n  if (isASCIIAlphanumeric(c) || c === 43 || c === 45 || c === 46) {\r\n    this.buffer += cStr.toLowerCase();\r\n  } else if (c === 58) {\r\n    if (this.stateOverride) {\r\n      if (isSpecial(this.url) && !isSpecialScheme(this.buffer)) {\r\n        return false;\r\n      }\r\n\r\n      if (!isSpecial(this.url) && isSpecialScheme(this.buffer)) {\r\n        return false;\r\n      }\r\n\r\n      if ((includesCredentials(this.url) || this.url.port !== null) && this.buffer === \"file\") {\r\n        return false;\r\n      }\r\n\r\n      if (this.url.scheme === \"file\" && (this.url.host === \"\" || this.url.host === null)) {\r\n        return false;\r\n      }\r\n    }\r\n    this.url.scheme = this.buffer;\r\n    this.buffer = \"\";\r\n    if (this.stateOverride) {\r\n      return false;\r\n    }\r\n    if (this.url.scheme === \"file\") {\r\n      if (this.input[this.pointer + 1] !== 47 || this.input[this.pointer + 2] !== 47) {\r\n        this.parseError = true;\r\n      }\r\n      this.state = \"file\";\r\n    } else if (isSpecial(this.url) && this.base !== null && this.base.scheme === this.url.scheme) {\r\n      this.state = \"special relative or authority\";\r\n    } else if (isSpecial(this.url)) {\r\n      this.state = \"special authority slashes\";\r\n    } else if (this.input[this.pointer + 1] === 47) {\r\n      this.state = \"path or authority\";\r\n      ++this.pointer;\r\n    } else {\r\n      this.url.cannotBeABaseURL = true;\r\n      this.url.path.push(\"\");\r\n      this.state = \"cannot-be-a-base-URL path\";\r\n    }\r\n  } else if (!this.stateOverride) {\r\n    this.buffer = \"\";\r\n    this.state = \"no scheme\";\r\n    this.pointer = -1;\r\n  } else {\r\n    this.parseError = true;\r\n    return failure;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse no scheme\"] = function parseNoScheme(c) {\r\n  if (this.base === null || (this.base.cannotBeABaseURL && c !== 35)) {\r\n    return failure;\r\n  } else if (this.base.cannotBeABaseURL && c === 35) {\r\n    this.url.scheme = this.base.scheme;\r\n    this.url.path = this.base.path.slice();\r\n    this.url.query = this.base.query;\r\n    this.url.fragment = \"\";\r\n    this.url.cannotBeABaseURL = true;\r\n    this.state = \"fragment\";\r\n  } else if (this.base.scheme === \"file\") {\r\n    this.state = \"file\";\r\n    --this.pointer;\r\n  } else {\r\n    this.state = \"relative\";\r\n    --this.pointer;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special relative or authority\"] = function parseSpecialRelativeOrAuthority(c) {\r\n  if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n    this.state = \"special authority ignore slashes\";\r\n    ++this.pointer;\r\n  } else {\r\n    this.parseError = true;\r\n    this.state = \"relative\";\r\n    --this.pointer;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path or authority\"] = function parsePathOrAuthority(c) {\r\n  if (c === 47) {\r\n    this.state = \"authority\";\r\n  } else {\r\n    this.state = \"path\";\r\n    --this.pointer;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative\"] = function parseRelative(c) {\r\n  this.url.scheme = this.base.scheme;\r\n  if (isNaN(c)) {\r\n    this.url.username = this.base.username;\r\n    this.url.password = this.base.password;\r\n    this.url.host = this.base.host;\r\n    this.url.port = this.base.port;\r\n    this.url.path = this.base.path.slice();\r\n    this.url.query = this.base.query;\r\n  } else if (c === 47) {\r\n    this.state = \"relative slash\";\r\n  } else if (c === 63) {\r\n    this.url.username = this.base.username;\r\n    this.url.password = this.base.password;\r\n    this.url.host = this.base.host;\r\n    this.url.port = this.base.port;\r\n    this.url.path = this.base.path.slice();\r\n    this.url.query = \"\";\r\n    this.state = \"query\";\r\n  } else if (c === 35) {\r\n    this.url.username = this.base.username;\r\n    this.url.password = this.base.password;\r\n    this.url.host = this.base.host;\r\n    this.url.port = this.base.port;\r\n    this.url.path = this.base.path.slice();\r\n    this.url.query = this.base.query;\r\n    this.url.fragment = \"\";\r\n    this.state = \"fragment\";\r\n  } else if (isSpecial(this.url) && c === 92) {\r\n    this.parseError = true;\r\n    this.state = \"relative slash\";\r\n  } else {\r\n    this.url.username = this.base.username;\r\n    this.url.password = this.base.password;\r\n    this.url.host = this.base.host;\r\n    this.url.port = this.base.port;\r\n    this.url.path = this.base.path.slice(0, this.base.path.length - 1);\r\n\r\n    this.state = \"path\";\r\n    --this.pointer;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse relative slash\"] = function parseRelativeSlash(c) {\r\n  if (isSpecial(this.url) && (c === 47 || c === 92)) {\r\n    if (c === 92) {\r\n      this.parseError = true;\r\n    }\r\n    this.state = \"special authority ignore slashes\";\r\n  } else if (c === 47) {\r\n    this.state = \"authority\";\r\n  } else {\r\n    this.url.username = this.base.username;\r\n    this.url.password = this.base.password;\r\n    this.url.host = this.base.host;\r\n    this.url.port = this.base.port;\r\n    this.state = \"path\";\r\n    --this.pointer;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority slashes\"] = function parseSpecialAuthoritySlashes(c) {\r\n  if (c === 47 && this.input[this.pointer + 1] === 47) {\r\n    this.state = \"special authority ignore slashes\";\r\n    ++this.pointer;\r\n  } else {\r\n    this.parseError = true;\r\n    this.state = \"special authority ignore slashes\";\r\n    --this.pointer;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse special authority ignore slashes\"] = function parseSpecialAuthorityIgnoreSlashes(c) {\r\n  if (c !== 47 && c !== 92) {\r\n    this.state = \"authority\";\r\n    --this.pointer;\r\n  } else {\r\n    this.parseError = true;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse authority\"] = function parseAuthority(c, cStr) {\r\n  if (c === 64) {\r\n    this.parseError = true;\r\n    if (this.atFlag) {\r\n      this.buffer = \"%40\" + this.buffer;\r\n    }\r\n    this.atFlag = true;\r\n\r\n    // careful, this is based on buffer and has its own pointer (this.pointer != pointer) and inner chars\r\n    const len = countSymbols(this.buffer);\r\n    for (let pointer = 0; pointer < len; ++pointer) {\r\n      const codePoint = this.buffer.codePointAt(pointer);\r\n\r\n      if (codePoint === 58 && !this.passwordTokenSeenFlag) {\r\n        this.passwordTokenSeenFlag = true;\r\n        continue;\r\n      }\r\n      const encodedCodePoints = percentEncodeChar(codePoint, isUserinfoPercentEncode);\r\n      if (this.passwordTokenSeenFlag) {\r\n        this.url.password += encodedCodePoints;\r\n      } else {\r\n        this.url.username += encodedCodePoints;\r\n      }\r\n    }\r\n    this.buffer = \"\";\r\n  } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n             (isSpecial(this.url) && c === 92)) {\r\n    if (this.atFlag && this.buffer === \"\") {\r\n      this.parseError = true;\r\n      return failure;\r\n    }\r\n    this.pointer -= countSymbols(this.buffer) + 1;\r\n    this.buffer = \"\";\r\n    this.state = \"host\";\r\n  } else {\r\n    this.buffer += cStr;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse hostname\"] =\r\nURLStateMachine.prototype[\"parse host\"] = function parseHostName(c, cStr) {\r\n  if (this.stateOverride && this.url.scheme === \"file\") {\r\n    --this.pointer;\r\n    this.state = \"file host\";\r\n  } else if (c === 58 && !this.arrFlag) {\r\n    if (this.buffer === \"\") {\r\n      this.parseError = true;\r\n      return failure;\r\n    }\r\n\r\n    const host = parseHost(this.buffer, isSpecial(this.url));\r\n    if (host === failure) {\r\n      return failure;\r\n    }\r\n\r\n    this.url.host = host;\r\n    this.buffer = \"\";\r\n    this.state = \"port\";\r\n    if (this.stateOverride === \"hostname\") {\r\n      return false;\r\n    }\r\n  } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n             (isSpecial(this.url) && c === 92)) {\r\n    --this.pointer;\r\n    if (isSpecial(this.url) && this.buffer === \"\") {\r\n      this.parseError = true;\r\n      return failure;\r\n    } else if (this.stateOverride && this.buffer === \"\" &&\r\n               (includesCredentials(this.url) || this.url.port !== null)) {\r\n      this.parseError = true;\r\n      return false;\r\n    }\r\n\r\n    const host = parseHost(this.buffer, isSpecial(this.url));\r\n    if (host === failure) {\r\n      return failure;\r\n    }\r\n\r\n    this.url.host = host;\r\n    this.buffer = \"\";\r\n    this.state = \"path start\";\r\n    if (this.stateOverride) {\r\n      return false;\r\n    }\r\n  } else {\r\n    if (c === 91) {\r\n      this.arrFlag = true;\r\n    } else if (c === 93) {\r\n      this.arrFlag = false;\r\n    }\r\n    this.buffer += cStr;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse port\"] = function parsePort(c, cStr) {\r\n  if (isASCIIDigit(c)) {\r\n    this.buffer += cStr;\r\n  } else if (isNaN(c) || c === 47 || c === 63 || c === 35 ||\r\n             (isSpecial(this.url) && c === 92) ||\r\n             this.stateOverride) {\r\n    if (this.buffer !== \"\") {\r\n      const port = parseInt(this.buffer);\r\n      if (port > Math.pow(2, 16) - 1) {\r\n        this.parseError = true;\r\n        return failure;\r\n      }\r\n      this.url.port = port === defaultPort(this.url.scheme) ? null : port;\r\n      this.buffer = \"\";\r\n    }\r\n    if (this.stateOverride) {\r\n      return false;\r\n    }\r\n    this.state = \"path start\";\r\n    --this.pointer;\r\n  } else {\r\n    this.parseError = true;\r\n    return failure;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nconst fileOtherwiseCodePoints = new Set([47, 92, 63, 35]);\r\n\r\nURLStateMachine.prototype[\"parse file\"] = function parseFile(c) {\r\n  this.url.scheme = \"file\";\r\n\r\n  if (c === 47 || c === 92) {\r\n    if (c === 92) {\r\n      this.parseError = true;\r\n    }\r\n    this.state = \"file slash\";\r\n  } else if (this.base !== null && this.base.scheme === \"file\") {\r\n    if (isNaN(c)) {\r\n      this.url.host = this.base.host;\r\n      this.url.path = this.base.path.slice();\r\n      this.url.query = this.base.query;\r\n    } else if (c === 63) {\r\n      this.url.host = this.base.host;\r\n      this.url.path = this.base.path.slice();\r\n      this.url.query = \"\";\r\n      this.state = \"query\";\r\n    } else if (c === 35) {\r\n      this.url.host = this.base.host;\r\n      this.url.path = this.base.path.slice();\r\n      this.url.query = this.base.query;\r\n      this.url.fragment = \"\";\r\n      this.state = \"fragment\";\r\n    } else {\r\n      if (this.input.length - this.pointer - 1 === 0 || // remaining consists of 0 code points\r\n          !isWindowsDriveLetterCodePoints(c, this.input[this.pointer + 1]) ||\r\n          (this.input.length - this.pointer - 1 >= 2 && // remaining has at least 2 code points\r\n           !fileOtherwiseCodePoints.has(this.input[this.pointer + 2]))) {\r\n        this.url.host = this.base.host;\r\n        this.url.path = this.base.path.slice();\r\n        shortenPath(this.url);\r\n      } else {\r\n        this.parseError = true;\r\n      }\r\n\r\n      this.state = \"path\";\r\n      --this.pointer;\r\n    }\r\n  } else {\r\n    this.state = \"path\";\r\n    --this.pointer;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file slash\"] = function parseFileSlash(c) {\r\n  if (c === 47 || c === 92) {\r\n    if (c === 92) {\r\n      this.parseError = true;\r\n    }\r\n    this.state = \"file host\";\r\n  } else {\r\n    if (this.base !== null && this.base.scheme === \"file\") {\r\n      if (isNormalizedWindowsDriveLetterString(this.base.path[0])) {\r\n        this.url.path.push(this.base.path[0]);\r\n      } else {\r\n        this.url.host = this.base.host;\r\n      }\r\n    }\r\n    this.state = \"path\";\r\n    --this.pointer;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse file host\"] = function parseFileHost(c, cStr) {\r\n  if (isNaN(c) || c === 47 || c === 92 || c === 63 || c === 35) {\r\n    --this.pointer;\r\n    if (!this.stateOverride && isWindowsDriveLetterString(this.buffer)) {\r\n      this.parseError = true;\r\n      this.state = \"path\";\r\n    } else if (this.buffer === \"\") {\r\n      this.url.host = \"\";\r\n      if (this.stateOverride) {\r\n        return false;\r\n      }\r\n      this.state = \"path start\";\r\n    } else {\r\n      let host = parseHost(this.buffer, isSpecial(this.url));\r\n      if (host === failure) {\r\n        return failure;\r\n      }\r\n      if (host === \"localhost\") {\r\n        host = \"\";\r\n      }\r\n      this.url.host = host;\r\n\r\n      if (this.stateOverride) {\r\n        return false;\r\n      }\r\n\r\n      this.buffer = \"\";\r\n      this.state = \"path start\";\r\n    }\r\n  } else {\r\n    this.buffer += cStr;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path start\"] = function parsePathStart(c) {\r\n  if (isSpecial(this.url)) {\r\n    if (c === 92) {\r\n      this.parseError = true;\r\n    }\r\n    this.state = \"path\";\r\n\r\n    if (c !== 47 && c !== 92) {\r\n      --this.pointer;\r\n    }\r\n  } else if (!this.stateOverride && c === 63) {\r\n    this.url.query = \"\";\r\n    this.state = \"query\";\r\n  } else if (!this.stateOverride && c === 35) {\r\n    this.url.fragment = \"\";\r\n    this.state = \"fragment\";\r\n  } else if (c !== undefined) {\r\n    this.state = \"path\";\r\n    if (c !== 47) {\r\n      --this.pointer;\r\n    }\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse path\"] = function parsePath(c) {\r\n  if (isNaN(c) || c === 47 || (isSpecial(this.url) && c === 92) ||\r\n      (!this.stateOverride && (c === 63 || c === 35))) {\r\n    if (isSpecial(this.url) && c === 92) {\r\n      this.parseError = true;\r\n    }\r\n\r\n    if (isDoubleDot(this.buffer)) {\r\n      shortenPath(this.url);\r\n      if (c !== 47 && !(isSpecial(this.url) && c === 92)) {\r\n        this.url.path.push(\"\");\r\n      }\r\n    } else if (isSingleDot(this.buffer) && c !== 47 &&\r\n               !(isSpecial(this.url) && c === 92)) {\r\n      this.url.path.push(\"\");\r\n    } else if (!isSingleDot(this.buffer)) {\r\n      if (this.url.scheme === \"file\" && this.url.path.length === 0 && isWindowsDriveLetterString(this.buffer)) {\r\n        if (this.url.host !== \"\" && this.url.host !== null) {\r\n          this.parseError = true;\r\n          this.url.host = \"\";\r\n        }\r\n        this.buffer = this.buffer[0] + \":\";\r\n      }\r\n      this.url.path.push(this.buffer);\r\n    }\r\n    this.buffer = \"\";\r\n    if (this.url.scheme === \"file\" && (c === undefined || c === 63 || c === 35)) {\r\n      while (this.url.path.length > 1 && this.url.path[0] === \"\") {\r\n        this.parseError = true;\r\n        this.url.path.shift();\r\n      }\r\n    }\r\n    if (c === 63) {\r\n      this.url.query = \"\";\r\n      this.state = \"query\";\r\n    }\r\n    if (c === 35) {\r\n      this.url.fragment = \"\";\r\n      this.state = \"fragment\";\r\n    }\r\n  } else {\r\n    // TODO: If c is not a URL code point and not \"%\", parse error.\r\n\r\n    if (c === 37 &&\r\n      (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n        !isASCIIHex(this.input[this.pointer + 2]))) {\r\n      this.parseError = true;\r\n    }\r\n\r\n    this.buffer += percentEncodeChar(c, isPathPercentEncode);\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse cannot-be-a-base-URL path\"] = function parseCannotBeABaseURLPath(c) {\r\n  if (c === 63) {\r\n    this.url.query = \"\";\r\n    this.state = \"query\";\r\n  } else if (c === 35) {\r\n    this.url.fragment = \"\";\r\n    this.state = \"fragment\";\r\n  } else {\r\n    // TODO: Add: not a URL code point\r\n    if (!isNaN(c) && c !== 37) {\r\n      this.parseError = true;\r\n    }\r\n\r\n    if (c === 37 &&\r\n        (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n         !isASCIIHex(this.input[this.pointer + 2]))) {\r\n      this.parseError = true;\r\n    }\r\n\r\n    if (!isNaN(c)) {\r\n      this.url.path[0] = this.url.path[0] + percentEncodeChar(c, isC0ControlPercentEncode);\r\n    }\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse query\"] = function parseQuery(c, cStr) {\r\n  if (isNaN(c) || (!this.stateOverride && c === 35)) {\r\n    if (!isSpecial(this.url) || this.url.scheme === \"ws\" || this.url.scheme === \"wss\") {\r\n      this.encodingOverride = \"utf-8\";\r\n    }\r\n\r\n    const buffer = new Buffer(this.buffer); // TODO: Use encoding override instead\r\n    for (let i = 0; i < buffer.length; ++i) {\r\n      if (buffer[i] < 0x21 || buffer[i] > 0x7E || buffer[i] === 0x22 || buffer[i] === 0x23 ||\r\n          buffer[i] === 0x3C || buffer[i] === 0x3E) {\r\n        this.url.query += percentEncode(buffer[i]);\r\n      } else {\r\n        this.url.query += String.fromCodePoint(buffer[i]);\r\n      }\r\n    }\r\n\r\n    this.buffer = \"\";\r\n    if (c === 35) {\r\n      this.url.fragment = \"\";\r\n      this.state = \"fragment\";\r\n    }\r\n  } else {\r\n    // TODO: If c is not a URL code point and not \"%\", parse error.\r\n    if (c === 37 &&\r\n      (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n        !isASCIIHex(this.input[this.pointer + 2]))) {\r\n      this.parseError = true;\r\n    }\r\n\r\n    this.buffer += cStr;\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nURLStateMachine.prototype[\"parse fragment\"] = function parseFragment(c) {\r\n  if (isNaN(c)) { // do nothing\r\n  } else if (c === 0x0) {\r\n    this.parseError = true;\r\n  } else {\r\n    // TODO: If c is not a URL code point and not \"%\", parse error.\r\n    if (c === 37 &&\r\n      (!isASCIIHex(this.input[this.pointer + 1]) ||\r\n        !isASCIIHex(this.input[this.pointer + 2]))) {\r\n      this.parseError = true;\r\n    }\r\n\r\n    this.url.fragment += percentEncodeChar(c, isC0ControlPercentEncode);\r\n  }\r\n\r\n  return true;\r\n};\r\n\r\nfunction serializeURL(url, excludeFragment) {\r\n  let output = url.scheme + \":\";\r\n  if (url.host !== null) {\r\n    output += \"//\";\r\n\r\n    if (url.username !== \"\" || url.password !== \"\") {\r\n      output += url.username;\r\n      if (url.password !== \"\") {\r\n        output += \":\" + url.password;\r\n      }\r\n      output += \"@\";\r\n    }\r\n\r\n    output += serializeHost(url.host);\r\n\r\n    if (url.port !== null) {\r\n      output += \":\" + url.port;\r\n    }\r\n  } else if (url.host === null && url.scheme === \"file\") {\r\n    output += \"//\";\r\n  }\r\n\r\n  if (url.cannotBeABaseURL) {\r\n    output += url.path[0];\r\n  } else {\r\n    for (const string of url.path) {\r\n      output += \"/\" + string;\r\n    }\r\n  }\r\n\r\n  if (url.query !== null) {\r\n    output += \"?\" + url.query;\r\n  }\r\n\r\n  if (!excludeFragment && url.fragment !== null) {\r\n    output += \"#\" + url.fragment;\r\n  }\r\n\r\n  return output;\r\n}\r\n\r\nfunction serializeOrigin(tuple) {\r\n  let result = tuple.scheme + \"://\";\r\n  result += serializeHost(tuple.host);\r\n\r\n  if (tuple.port !== null) {\r\n    result += \":\" + tuple.port;\r\n  }\r\n\r\n  return result;\r\n}\r\n\r\nmodule.exports.serializeURL = serializeURL;\r\n\r\nmodule.exports.serializeURLOrigin = function (url) {\r\n  // https://url.spec.whatwg.org/#concept-url-origin\r\n  switch (url.scheme) {\r\n    case \"blob\":\r\n      try {\r\n        return module.exports.serializeURLOrigin(module.exports.parseURL(url.path[0]));\r\n      } catch (e) {\r\n        // serializing an opaque origin returns \"null\"\r\n        return \"null\";\r\n      }\r\n    case \"ftp\":\r\n    case \"gopher\":\r\n    case \"http\":\r\n    case \"https\":\r\n    case \"ws\":\r\n    case \"wss\":\r\n      return serializeOrigin({\r\n        scheme: url.scheme,\r\n        host: url.host,\r\n        port: url.port\r\n      });\r\n    case \"file\":\r\n      // spec says \"exercise to the reader\", chrome says \"file://\"\r\n      return \"file://\";\r\n    default:\r\n      // serializing an opaque origin returns \"null\"\r\n      return \"null\";\r\n  }\r\n};\r\n\r\nmodule.exports.basicURLParse = function (input, options) {\r\n  if (options === undefined) {\r\n    options = {};\r\n  }\r\n\r\n  const usm = new URLStateMachine(input, options.baseURL, options.encodingOverride, options.url, options.stateOverride);\r\n  if (usm.failure) {\r\n    return \"failure\";\r\n  }\r\n\r\n  return usm.url;\r\n};\r\n\r\nmodule.exports.setTheUsername = function (url, username) {\r\n  url.username = \"\";\r\n  const decoded = punycode.ucs2.decode(username);\r\n  for (let i = 0; i < decoded.length; ++i) {\r\n    url.username += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n  }\r\n};\r\n\r\nmodule.exports.setThePassword = function (url, password) {\r\n  url.password = \"\";\r\n  const decoded = punycode.ucs2.decode(password);\r\n  for (let i = 0; i < decoded.length; ++i) {\r\n    url.password += percentEncodeChar(decoded[i], isUserinfoPercentEncode);\r\n  }\r\n};\r\n\r\nmodule.exports.serializeHost = serializeHost;\r\n\r\nmodule.exports.cannotHaveAUsernamePasswordPort = cannotHaveAUsernamePasswordPort;\r\n\r\nmodule.exports.serializeInteger = function (integer) {\r\n  return String(integer);\r\n};\r\n\r\nmodule.exports.parseURL = function (input, options) {\r\n  if (options === undefined) {\r\n    options = {};\r\n  }\r\n\r\n  // We don't handle blobs, so this just delegates:\r\n  return module.exports.basicURLParse(input, { baseURL: options.baseURL, encodingOverride: options.encodingOverride });\r\n};\r\n", "\"use strict\";\nconst usm = require(\"./url-state-machine\");\n\nexports.implementation = class URLImpl {\n  constructor(constructorArgs) {\n    const url = constructorArgs[0];\n    const base = constructorArgs[1];\n\n    let parsedBase = null;\n    if (base !== undefined) {\n      parsedBase = usm.basicURLParse(base);\n      if (parsedBase === \"failure\") {\n        throw new TypeError(\"Invalid base URL\");\n      }\n    }\n\n    const parsedURL = usm.basicURLParse(url, { baseURL: parsedBase });\n    if (parsedURL === \"failure\") {\n      throw new TypeError(\"Invalid URL\");\n    }\n\n    this._url = parsedURL;\n\n    // TODO: query stuff\n  }\n\n  get href() {\n    return usm.serializeURL(this._url);\n  }\n\n  set href(v) {\n    const parsedURL = usm.basicURLParse(v);\n    if (parsedURL === \"failure\") {\n      throw new TypeError(\"Invalid URL\");\n    }\n\n    this._url = parsedURL;\n  }\n\n  get origin() {\n    return usm.serializeURLOrigin(this._url);\n  }\n\n  get protocol() {\n    return this._url.scheme + \":\";\n  }\n\n  set protocol(v) {\n    usm.basicURLParse(v + \":\", { url: this._url, stateOverride: \"scheme start\" });\n  }\n\n  get username() {\n    return this._url.username;\n  }\n\n  set username(v) {\n    if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n      return;\n    }\n\n    usm.setTheUsername(this._url, v);\n  }\n\n  get password() {\n    return this._url.password;\n  }\n\n  set password(v) {\n    if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n      return;\n    }\n\n    usm.setThePassword(this._url, v);\n  }\n\n  get host() {\n    const url = this._url;\n\n    if (url.host === null) {\n      return \"\";\n    }\n\n    if (url.port === null) {\n      return usm.serializeHost(url.host);\n    }\n\n    return usm.serializeHost(url.host) + \":\" + usm.serializeInteger(url.port);\n  }\n\n  set host(v) {\n    if (this._url.cannotBeABaseURL) {\n      return;\n    }\n\n    usm.basicURLParse(v, { url: this._url, stateOverride: \"host\" });\n  }\n\n  get hostname() {\n    if (this._url.host === null) {\n      return \"\";\n    }\n\n    return usm.serializeHost(this._url.host);\n  }\n\n  set hostname(v) {\n    if (this._url.cannotBeABaseURL) {\n      return;\n    }\n\n    usm.basicURLParse(v, { url: this._url, stateOverride: \"hostname\" });\n  }\n\n  get port() {\n    if (this._url.port === null) {\n      return \"\";\n    }\n\n    return usm.serializeInteger(this._url.port);\n  }\n\n  set port(v) {\n    if (usm.cannotHaveAUsernamePasswordPort(this._url)) {\n      return;\n    }\n\n    if (v === \"\") {\n      this._url.port = null;\n    } else {\n      usm.basicURLParse(v, { url: this._url, stateOverride: \"port\" });\n    }\n  }\n\n  get pathname() {\n    if (this._url.cannotBeABaseURL) {\n      return this._url.path[0];\n    }\n\n    if (this._url.path.length === 0) {\n      return \"\";\n    }\n\n    return \"/\" + this._url.path.join(\"/\");\n  }\n\n  set pathname(v) {\n    if (this._url.cannotBeABaseURL) {\n      return;\n    }\n\n    this._url.path = [];\n    usm.basicURLParse(v, { url: this._url, stateOverride: \"path start\" });\n  }\n\n  get search() {\n    if (this._url.query === null || this._url.query === \"\") {\n      return \"\";\n    }\n\n    return \"?\" + this._url.query;\n  }\n\n  set search(v) {\n    // TODO: query stuff\n\n    const url = this._url;\n\n    if (v === \"\") {\n      url.query = null;\n      return;\n    }\n\n    const input = v[0] === \"?\" ? v.substring(1) : v;\n    url.query = \"\";\n    usm.basicURLParse(input, { url, stateOverride: \"query\" });\n  }\n\n  get hash() {\n    if (this._url.fragment === null || this._url.fragment === \"\") {\n      return \"\";\n    }\n\n    return \"#\" + this._url.fragment;\n  }\n\n  set hash(v) {\n    if (v === \"\") {\n      this._url.fragment = null;\n      return;\n    }\n\n    const input = v[0] === \"#\" ? v.substring(1) : v;\n    this._url.fragment = \"\";\n    usm.basicURLParse(input, { url: this._url, stateOverride: \"fragment\" });\n  }\n\n  toJSON() {\n    return this.href;\n  }\n};\n", "\"use strict\";\n\nconst conversions = require(\"webidl-conversions\");\nconst utils = require(\"./utils.js\");\nconst Impl = require(\".//URL-impl.js\");\n\nconst impl = utils.implSymbol;\n\nfunction URL(url) {\n  if (!this || this[impl] || !(this instanceof URL)) {\n    throw new TypeError(\"Failed to construct 'URL': Please use the 'new' operator, this DOM object constructor cannot be called as a function.\");\n  }\n  if (arguments.length < 1) {\n    throw new TypeError(\"Failed to construct 'URL': 1 argument required, but only \" + arguments.length + \" present.\");\n  }\n  const args = [];\n  for (let i = 0; i < arguments.length && i < 2; ++i) {\n    args[i] = arguments[i];\n  }\n  args[0] = conversions[\"USVString\"](args[0]);\n  if (args[1] !== undefined) {\n  args[1] = conversions[\"USVString\"](args[1]);\n  }\n\n  module.exports.setup(this, args);\n}\n\nURL.prototype.toJSON = function toJSON() {\n  if (!this || !module.exports.is(this)) {\n    throw new TypeError(\"Illegal invocation\");\n  }\n  const args = [];\n  for (let i = 0; i < arguments.length && i < 0; ++i) {\n    args[i] = arguments[i];\n  }\n  return this[impl].toJSON.apply(this[impl], args);\n};\nObject.defineProperty(URL.prototype, \"href\", {\n  get() {\n    return this[impl].href;\n  },\n  set(V) {\n    V = conversions[\"USVString\"](V);\n    this[impl].href = V;\n  },\n  enumerable: true,\n  configurable: true\n});\n\nURL.prototype.toString = function () {\n  if (!this || !module.exports.is(this)) {\n    throw new TypeError(\"Illegal invocation\");\n  }\n  return this.href;\n};\n\nObject.defineProperty(URL.prototype, \"origin\", {\n  get() {\n    return this[impl].origin;\n  },\n  enumerable: true,\n  configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"protocol\", {\n  get() {\n    return this[impl].protocol;\n  },\n  set(V) {\n    V = conversions[\"USVString\"](V);\n    this[impl].protocol = V;\n  },\n  enumerable: true,\n  configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"username\", {\n  get() {\n    return this[impl].username;\n  },\n  set(V) {\n    V = conversions[\"USVString\"](V);\n    this[impl].username = V;\n  },\n  enumerable: true,\n  configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"password\", {\n  get() {\n    return this[impl].password;\n  },\n  set(V) {\n    V = conversions[\"USVString\"](V);\n    this[impl].password = V;\n  },\n  enumerable: true,\n  configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"host\", {\n  get() {\n    return this[impl].host;\n  },\n  set(V) {\n    V = conversions[\"USVString\"](V);\n    this[impl].host = V;\n  },\n  enumerable: true,\n  configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hostname\", {\n  get() {\n    return this[impl].hostname;\n  },\n  set(V) {\n    V = conversions[\"USVString\"](V);\n    this[impl].hostname = V;\n  },\n  enumerable: true,\n  configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"port\", {\n  get() {\n    return this[impl].port;\n  },\n  set(V) {\n    V = conversions[\"USVString\"](V);\n    this[impl].port = V;\n  },\n  enumerable: true,\n  configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"pathname\", {\n  get() {\n    return this[impl].pathname;\n  },\n  set(V) {\n    V = conversions[\"USVString\"](V);\n    this[impl].pathname = V;\n  },\n  enumerable: true,\n  configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"search\", {\n  get() {\n    return this[impl].search;\n  },\n  set(V) {\n    V = conversions[\"USVString\"](V);\n    this[impl].search = V;\n  },\n  enumerable: true,\n  configurable: true\n});\n\nObject.defineProperty(URL.prototype, \"hash\", {\n  get() {\n    return this[impl].hash;\n  },\n  set(V) {\n    V = conversions[\"USVString\"](V);\n    this[impl].hash = V;\n  },\n  enumerable: true,\n  configurable: true\n});\n\n\nmodule.exports = {\n  is(obj) {\n    return !!obj && obj[impl] instanceof Impl.implementation;\n  },\n  create(constructorArgs, privateData) {\n    let obj = Object.create(URL.prototype);\n    this.setup(obj, constructorArgs, privateData);\n    return obj;\n  },\n  setup(obj, constructorArgs, privateData) {\n    if (!privateData) privateData = {};\n    privateData.wrapper = obj;\n\n    obj[impl] = new Impl.implementation(constructorArgs, privateData);\n    obj[impl][utils.wrapperSymbol] = obj;\n  },\n  interface: URL,\n  expose: {\n    Window: { URL: URL },\n    Worker: { URL: URL }\n  }\n};\n\n", "\"use strict\";\n\nexports.URL = require(\"./URL\").interface;\nexports.serializeURL = require(\"./url-state-machine\").serializeURL;\nexports.serializeURLOrigin = require(\"./url-state-machine\").serializeURLOrigin;\nexports.basicURLParse = require(\"./url-state-machine\").basicURLParse;\nexports.setTheUsername = require(\"./url-state-machine\").setTheUsername;\nexports.setThePassword = require(\"./url-state-machine\").setThePassword;\nexports.serializeHost = require(\"./url-state-machine\").serializeHost;\nexports.serializeInteger = require(\"./url-state-machine\").serializeInteger;\nexports.parseURL = require(\"./url-state-machine\").parseURL;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar Stream = _interopDefault(require('stream'));\nvar http = _interopDefault(require('http'));\nvar Url = _interopDefault(require('url'));\nvar whatwgUrl = _interopDefault(require('whatwg-url'));\nvar https = _interopDefault(require('https'));\nvar zlib = _interopDefault(require('zlib'));\n\n// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js\n\n// fix for \"Readable\" isn't a named export issue\nconst Readable = Stream.Readable;\n\nconst BUFFER = Symbol('buffer');\nconst TYPE = Symbol('type');\n\nclass Blob {\n\tconstructor() {\n\t\tthis[TYPE] = '';\n\n\t\tconst blobParts = arguments[0];\n\t\tconst options = arguments[1];\n\n\t\tconst buffers = [];\n\t\tlet size = 0;\n\n\t\tif (blobParts) {\n\t\t\tconst a = blobParts;\n\t\t\tconst length = Number(a.length);\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst element = a[i];\n\t\t\t\tlet buffer;\n\t\t\t\tif (element instanceof Buffer) {\n\t\t\t\t\tbuffer = element;\n\t\t\t\t} else if (ArrayBuffer.isView(element)) {\n\t\t\t\t\tbuffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);\n\t\t\t\t} else if (element instanceof ArrayBuffer) {\n\t\t\t\t\tbuffer = Buffer.from(element);\n\t\t\t\t} else if (element instanceof Blob) {\n\t\t\t\t\tbuffer = element[BUFFER];\n\t\t\t\t} else {\n\t\t\t\t\tbuffer = Buffer.from(typeof element === 'string' ? element : String(element));\n\t\t\t\t}\n\t\t\t\tsize += buffer.length;\n\t\t\t\tbuffers.push(buffer);\n\t\t\t}\n\t\t}\n\n\t\tthis[BUFFER] = Buffer.concat(buffers);\n\n\t\tlet type = options && options.type !== undefined && String(options.type).toLowerCase();\n\t\tif (type && !/[^\\u0020-\\u007E]/.test(type)) {\n\t\t\tthis[TYPE] = type;\n\t\t}\n\t}\n\tget size() {\n\t\treturn this[BUFFER].length;\n\t}\n\tget type() {\n\t\treturn this[TYPE];\n\t}\n\ttext() {\n\t\treturn Promise.resolve(this[BUFFER].toString());\n\t}\n\tarrayBuffer() {\n\t\tconst buf = this[BUFFER];\n\t\tconst ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\treturn Promise.resolve(ab);\n\t}\n\tstream() {\n\t\tconst readable = new Readable();\n\t\treadable._read = function () {};\n\t\treadable.push(this[BUFFER]);\n\t\treadable.push(null);\n\t\treturn readable;\n\t}\n\ttoString() {\n\t\treturn '[object Blob]';\n\t}\n\tslice() {\n\t\tconst size = this.size;\n\n\t\tconst start = arguments[0];\n\t\tconst end = arguments[1];\n\t\tlet relativeStart, relativeEnd;\n\t\tif (start === undefined) {\n\t\t\trelativeStart = 0;\n\t\t} else if (start < 0) {\n\t\t\trelativeStart = Math.max(size + start, 0);\n\t\t} else {\n\t\t\trelativeStart = Math.min(start, size);\n\t\t}\n\t\tif (end === undefined) {\n\t\t\trelativeEnd = size;\n\t\t} else if (end < 0) {\n\t\t\trelativeEnd = Math.max(size + end, 0);\n\t\t} else {\n\t\t\trelativeEnd = Math.min(end, size);\n\t\t}\n\t\tconst span = Math.max(relativeEnd - relativeStart, 0);\n\n\t\tconst buffer = this[BUFFER];\n\t\tconst slicedBuffer = buffer.slice(relativeStart, relativeStart + span);\n\t\tconst blob = new Blob([], { type: arguments[2] });\n\t\tblob[BUFFER] = slicedBuffer;\n\t\treturn blob;\n\t}\n}\n\nObject.defineProperties(Blob.prototype, {\n\tsize: { enumerable: true },\n\ttype: { enumerable: true },\n\tslice: { enumerable: true }\n});\n\nObject.defineProperty(Blob.prototype, Symbol.toStringTag, {\n\tvalue: 'Blob',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * fetch-error.js\n *\n * FetchError interface for operational errors\n */\n\n/**\n * Create FetchError instance\n *\n * @param   String      message      Error message for human\n * @param   String      type         Error type for machine\n * @param   String      systemError  For Node.js system error\n * @return  FetchError\n */\nfunction FetchError(message, type, systemError) {\n  Error.call(this, message);\n\n  this.message = message;\n  this.type = type;\n\n  // when err.type is `system`, err.code contains system error code\n  if (systemError) {\n    this.code = this.errno = systemError.code;\n  }\n\n  // hide custom error implementation details from end-users\n  Error.captureStackTrace(this, this.constructor);\n}\n\nFetchError.prototype = Object.create(Error.prototype);\nFetchError.prototype.constructor = FetchError;\nFetchError.prototype.name = 'FetchError';\n\nlet convert;\ntry {\n\tconvert = require('encoding').convert;\n} catch (e) {}\n\nconst INTERNALS = Symbol('Body internals');\n\n// fix an issue where \"PassThrough\" isn't a named export for node <10\nconst PassThrough = Stream.PassThrough;\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param   Stream  body  Readable stream\n * @param   Object  opts  Response options\n * @return  Void\n */\nfunction Body(body) {\n\tvar _this = this;\n\n\tvar _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n\t    _ref$size = _ref.size;\n\n\tlet size = _ref$size === undefined ? 0 : _ref$size;\n\tvar _ref$timeout = _ref.timeout;\n\tlet timeout = _ref$timeout === undefined ? 0 : _ref$timeout;\n\n\tif (body == null) {\n\t\t// body is undefined or null\n\t\tbody = null;\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\tbody = Buffer.from(body.toString());\n\t} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\tbody = Buffer.from(body);\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t} else if (body instanceof Stream) ; else {\n\t\t// none of the above\n\t\t// coerce to string then buffer\n\t\tbody = Buffer.from(String(body));\n\t}\n\tthis[INTERNALS] = {\n\t\tbody,\n\t\tdisturbed: false,\n\t\terror: null\n\t};\n\tthis.size = size;\n\tthis.timeout = timeout;\n\n\tif (body instanceof Stream) {\n\t\tbody.on('error', function (err) {\n\t\t\tconst error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);\n\t\t\t_this[INTERNALS].error = error;\n\t\t});\n\t}\n}\n\nBody.prototype = {\n\tget body() {\n\t\treturn this[INTERNALS].body;\n\t},\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t},\n\n\t/**\n  * Decode response as ArrayBuffer\n  *\n  * @return  Promise\n  */\n\tarrayBuffer() {\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\t});\n\t},\n\n\t/**\n  * Return raw response as Blob\n  *\n  * @return Promise\n  */\n\tblob() {\n\t\tlet ct = this.headers && this.headers.get('content-type') || '';\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn Object.assign(\n\t\t\t// Prevent copying\n\t\t\tnew Blob([], {\n\t\t\t\ttype: ct.toLowerCase()\n\t\t\t}), {\n\t\t\t\t[BUFFER]: buf\n\t\t\t});\n\t\t});\n\t},\n\n\t/**\n  * Decode response as json\n  *\n  * @return  Promise\n  */\n\tjson() {\n\t\tvar _this2 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(buffer.toString());\n\t\t\t} catch (err) {\n\t\t\t\treturn Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n  * Decode response as text\n  *\n  * @return  Promise\n  */\n\ttext() {\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn buffer.toString();\n\t\t});\n\t},\n\n\t/**\n  * Decode response as buffer (non-spec api)\n  *\n  * @return  Promise\n  */\n\tbuffer() {\n\t\treturn consumeBody.call(this);\n\t},\n\n\t/**\n  * Decode response as text, while automatically detecting the encoding and\n  * trying to decode to UTF-8 (non-spec api)\n  *\n  * @return  Promise\n  */\n\ttextConverted() {\n\t\tvar _this3 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn convertBody(buffer, _this3.headers);\n\t\t});\n\t}\n};\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: { enumerable: true },\n\tbodyUsed: { enumerable: true },\n\tarrayBuffer: { enumerable: true },\n\tblob: { enumerable: true },\n\tjson: { enumerable: true },\n\ttext: { enumerable: true }\n});\n\nBody.mixIn = function (proto) {\n\tfor (const name of Object.getOwnPropertyNames(Body.prototype)) {\n\t\t// istanbul ignore else: future proof\n\t\tif (!(name in proto)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(Body.prototype, name);\n\t\t\tObject.defineProperty(proto, name, desc);\n\t\t}\n\t}\n};\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return  Promise\n */\nfunction consumeBody() {\n\tvar _this4 = this;\n\n\tif (this[INTERNALS].disturbed) {\n\t\treturn Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));\n\t}\n\n\tthis[INTERNALS].disturbed = true;\n\n\tif (this[INTERNALS].error) {\n\t\treturn Body.Promise.reject(this[INTERNALS].error);\n\t}\n\n\tlet body = this.body;\n\n\t// body is null\n\tif (body === null) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is blob\n\tif (isBlob(body)) {\n\t\tbody = body.stream();\n\t}\n\n\t// body is buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn Body.Promise.resolve(body);\n\t}\n\n\t// istanbul ignore if: should never happen\n\tif (!(body instanceof Stream)) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is stream\n\t// get ready to actually consume the body\n\tlet accum = [];\n\tlet accumBytes = 0;\n\tlet abort = false;\n\n\treturn new Body.Promise(function (resolve, reject) {\n\t\tlet resTimeout;\n\n\t\t// allow timeout on slow response body\n\t\tif (_this4.timeout) {\n\t\t\tresTimeout = setTimeout(function () {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));\n\t\t\t}, _this4.timeout);\n\t\t}\n\n\t\t// handle stream errors\n\t\tbody.on('error', function (err) {\n\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t// if the request was aborted, reject with this Error\n\t\t\t\tabort = true;\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\t// other errors, such as incorrect content-encoding\n\t\t\t\treject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\n\t\tbody.on('data', function (chunk) {\n\t\t\tif (abort || chunk === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_this4.size && accumBytes + chunk.length > _this4.size) {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t});\n\n\t\tbody.on('end', function () {\n\t\t\tif (abort) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(resTimeout);\n\n\t\t\ttry {\n\t\t\t\tresolve(Buffer.concat(accum, accumBytes));\n\t\t\t} catch (err) {\n\t\t\t\t// handle streams that have accumulated too much data (issue #414)\n\t\t\t\treject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect buffer encoding and convert to target encoding\n * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding\n *\n * @param   Buffer  buffer    Incoming buffer\n * @param   String  encoding  Target encoding\n * @return  String\n */\nfunction convertBody(buffer, headers) {\n\tif (typeof convert !== 'function') {\n\t\tthrow new Error('The package `encoding` must be installed to use the textConverted() function');\n\t}\n\n\tconst ct = headers.get('content-type');\n\tlet charset = 'utf-8';\n\tlet res, str;\n\n\t// header\n\tif (ct) {\n\t\tres = /charset=([^;]*)/i.exec(ct);\n\t}\n\n\t// no charset in content type, peek at response body for at most 1024 bytes\n\tstr = buffer.slice(0, 1024).toString();\n\n\t// html5\n\tif (!res && str) {\n\t\tres = /<meta.+?charset=(['\"])(.+?)\\1/i.exec(str);\n\t}\n\n\t// html4\n\tif (!res && str) {\n\t\tres = /<meta[\\s]+?http-equiv=(['\"])content-type\\1[\\s]+?content=(['\"])(.+?)\\2/i.exec(str);\n\t\tif (!res) {\n\t\t\tres = /<meta[\\s]+?content=(['\"])(.+?)\\1[\\s]+?http-equiv=(['\"])content-type\\3/i.exec(str);\n\t\t\tif (res) {\n\t\t\t\tres.pop(); // drop last quote\n\t\t\t}\n\t\t}\n\n\t\tif (res) {\n\t\t\tres = /charset=(.*)/i.exec(res.pop());\n\t\t}\n\t}\n\n\t// xml\n\tif (!res && str) {\n\t\tres = /<\\?xml.+?encoding=(['\"])(.+?)\\1/i.exec(str);\n\t}\n\n\t// found charset\n\tif (res) {\n\t\tcharset = res.pop();\n\n\t\t// prevent decode issues when sites use incorrect encoding\n\t\t// ref: https://hsivonen.fi/encoding-menu/\n\t\tif (charset === 'gb2312' || charset === 'gbk') {\n\t\t\tcharset = 'gb18030';\n\t\t}\n\t}\n\n\t// turn raw buffers into a single utf-8 buffer\n\treturn convert(buffer, 'UTF-8', charset).toString();\n}\n\n/**\n * Detect a URLSearchParams object\n * ref: https://github.com/bitinn/node-fetch/issues/296#issuecomment-307598143\n *\n * @param   Object  obj     Object to detect by type or brand\n * @return  String\n */\nfunction isURLSearchParams(obj) {\n\t// Duck-typing as a necessary condition.\n\tif (typeof obj !== 'object' || typeof obj.append !== 'function' || typeof obj.delete !== 'function' || typeof obj.get !== 'function' || typeof obj.getAll !== 'function' || typeof obj.has !== 'function' || typeof obj.set !== 'function') {\n\t\treturn false;\n\t}\n\n\t// Brand-checking and more duck-typing as optional condition.\n\treturn obj.constructor.name === 'URLSearchParams' || Object.prototype.toString.call(obj) === '[object URLSearchParams]' || typeof obj.sort === 'function';\n}\n\n/**\n * Check if `obj` is a W3C `Blob` object (which `File` inherits from)\n * @param  {*} obj\n * @return {boolean}\n */\nfunction isBlob(obj) {\n\treturn typeof obj === 'object' && typeof obj.arrayBuffer === 'function' && typeof obj.type === 'string' && typeof obj.stream === 'function' && typeof obj.constructor === 'function' && typeof obj.constructor.name === 'string' && /^(Blob|File)$/.test(obj.constructor.name) && /^(Blob|File)$/.test(obj[Symbol.toStringTag]);\n}\n\n/**\n * Clone body given Res/Req instance\n *\n * @param   Mixed  instance  Response or Request instance\n * @return  Mixed\n */\nfunction clone(instance) {\n\tlet p1, p2;\n\tlet body = instance.body;\n\n\t// don't allow cloning a used body\n\tif (instance.bodyUsed) {\n\t\tthrow new Error('cannot clone body after it is used');\n\t}\n\n\t// check that body is a stream and not form-data object\n\t// note: we can't clone the form-data object without having it as a dependency\n\tif (body instanceof Stream && typeof body.getBoundary !== 'function') {\n\t\t// tee instance body\n\t\tp1 = new PassThrough();\n\t\tp2 = new PassThrough();\n\t\tbody.pipe(p1);\n\t\tbody.pipe(p2);\n\t\t// set instance body to teed body and return the other teed body\n\t\tinstance[INTERNALS].body = p1;\n\t\tbody = p2;\n\t}\n\n\treturn body;\n}\n\n/**\n * Performs the operation \"extract a `Content-Type` value from |object|\" as\n * specified in the specification:\n * https://fetch.spec.whatwg.org/#concept-bodyinit-extract\n *\n * This function assumes that instance.body is present.\n *\n * @param   Mixed  instance  Any options.body input\n */\nfunction extractContentType(body) {\n\tif (body === null) {\n\t\t// body is null\n\t\treturn null;\n\t} else if (typeof body === 'string') {\n\t\t// body is string\n\t\treturn 'text/plain;charset=UTF-8';\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\treturn 'application/x-www-form-urlencoded;charset=UTF-8';\n\t} else if (isBlob(body)) {\n\t\t// body is blob\n\t\treturn body.type || null;\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\treturn null;\n\t} else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\treturn null;\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\treturn null;\n\t} else if (typeof body.getBoundary === 'function') {\n\t\t// detect form data input from form-data module\n\t\treturn `multipart/form-data;boundary=${body.getBoundary()}`;\n\t} else if (body instanceof Stream) {\n\t\t// body is stream\n\t\t// can't really do much about this\n\t\treturn null;\n\t} else {\n\t\t// Body constructor defaults other things to string\n\t\treturn 'text/plain;charset=UTF-8';\n\t}\n}\n\n/**\n * The Fetch Standard treats this as if \"total bytes\" is a property on the body.\n * For us, we have to explicitly get it with a function.\n *\n * ref: https://fetch.spec.whatwg.org/#concept-body-total-bytes\n *\n * @param   Body    instance   Instance of Body\n * @return  Number?            Number of bytes, or null if not possible\n */\nfunction getTotalBytes(instance) {\n\tconst body = instance.body;\n\n\n\tif (body === null) {\n\t\t// body is null\n\t\treturn 0;\n\t} else if (isBlob(body)) {\n\t\treturn body.size;\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\treturn body.length;\n\t} else if (body && typeof body.getLengthSync === 'function') {\n\t\t// detect form data input from form-data module\n\t\tif (body._lengthRetrievers && body._lengthRetrievers.length == 0 || // 1.x\n\t\tbody.hasKnownLength && body.hasKnownLength()) {\n\t\t\t// 2.x\n\t\t\treturn body.getLengthSync();\n\t\t}\n\t\treturn null;\n\t} else {\n\t\t// body is stream\n\t\treturn null;\n\t}\n}\n\n/**\n * Write a Body to a Node.js WritableStream (e.g. http.Request) object.\n *\n * @param   Body    instance   Instance of Body\n * @return  Void\n */\nfunction writeToStream(dest, instance) {\n\tconst body = instance.body;\n\n\n\tif (body === null) {\n\t\t// body is null\n\t\tdest.end();\n\t} else if (isBlob(body)) {\n\t\tbody.stream().pipe(dest);\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\tdest.write(body);\n\t\tdest.end();\n\t} else {\n\t\t// body is stream\n\t\tbody.pipe(dest);\n\t}\n}\n\n// expose Promise\nBody.Promise = global.Promise;\n\n/**\n * headers.js\n *\n * Headers class offers convenient helpers\n */\n\nconst invalidTokenRegex = /[^\\^_`a-zA-Z\\-0-9!#$%&'*+.|~]/;\nconst invalidHeaderCharRegex = /[^\\t\\x20-\\x7e\\x80-\\xff]/;\n\nfunction validateName(name) {\n\tname = `${name}`;\n\tif (invalidTokenRegex.test(name) || name === '') {\n\t\tthrow new TypeError(`${name} is not a legal HTTP header name`);\n\t}\n}\n\nfunction validateValue(value) {\n\tvalue = `${value}`;\n\tif (invalidHeaderCharRegex.test(value)) {\n\t\tthrow new TypeError(`${value} is not a legal HTTP header value`);\n\t}\n}\n\n/**\n * Find the key in the map object given a header name.\n *\n * Returns undefined if not found.\n *\n * @param   String  name  Header name\n * @return  String|Undefined\n */\nfunction find(map, name) {\n\tname = name.toLowerCase();\n\tfor (const key in map) {\n\t\tif (key.toLowerCase() === name) {\n\t\t\treturn key;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nconst MAP = Symbol('map');\nclass Headers {\n\t/**\n  * Headers class\n  *\n  * @param   Object  headers  Response headers\n  * @return  Void\n  */\n\tconstructor() {\n\t\tlet init = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n\t\tthis[MAP] = Object.create(null);\n\n\t\tif (init instanceof Headers) {\n\t\t\tconst rawHeaders = init.raw();\n\t\t\tconst headerNames = Object.keys(rawHeaders);\n\n\t\t\tfor (const headerName of headerNames) {\n\t\t\t\tfor (const value of rawHeaders[headerName]) {\n\t\t\t\t\tthis.append(headerName, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// We don't worry about converting prop to ByteString here as append()\n\t\t// will handle it.\n\t\tif (init == null) ; else if (typeof init === 'object') {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\tif (method != null) {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// sequence<sequence<ByteString>>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tconst pairs = [];\n\t\t\t\tfor (const pair of init) {\n\t\t\t\t\tif (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be iterable');\n\t\t\t\t\t}\n\t\t\t\t\tpairs.push(Array.from(pair));\n\t\t\t\t}\n\n\t\t\t\tfor (const pair of pairs) {\n\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t}\n\t\t\t\t\tthis.append(pair[0], pair[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// record<ByteString, ByteString>\n\t\t\t\tfor (const key of Object.keys(init)) {\n\t\t\t\t\tconst value = init[key];\n\t\t\t\t\tthis.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Provided initializer must be an object');\n\t\t}\n\t}\n\n\t/**\n  * Return combined header value given name\n  *\n  * @param   String  name  Header name\n  * @return  Mixed\n  */\n\tget(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this[MAP][key].join(', ');\n\t}\n\n\t/**\n  * Iterate over all headers\n  *\n  * @param   Function  callback  Executed for each item with parameters (value, name, thisArg)\n  * @param   Boolean   thisArg   `this` context for callback function\n  * @return  Void\n  */\n\tforEach(callback) {\n\t\tlet thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\tlet pairs = getHeaders(this);\n\t\tlet i = 0;\n\t\twhile (i < pairs.length) {\n\t\t\tvar _pairs$i = pairs[i];\n\t\t\tconst name = _pairs$i[0],\n\t\t\t      value = _pairs$i[1];\n\n\t\t\tcallback.call(thisArg, value, name, this);\n\t\t\tpairs = getHeaders(this);\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/**\n  * Overwrite header values given name\n  *\n  * @param   String  name   Header name\n  * @param   String  value  Header value\n  * @return  Void\n  */\n\tset(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tthis[MAP][key !== undefined ? key : name] = [value];\n\t}\n\n\t/**\n  * Append a value onto existing header\n  *\n  * @param   String  name   Header name\n  * @param   String  value  Header value\n  * @return  Void\n  */\n\tappend(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tthis[MAP][key].push(value);\n\t\t} else {\n\t\t\tthis[MAP][name] = [value];\n\t\t}\n\t}\n\n\t/**\n  * Check for header name existence\n  *\n  * @param   String   name  Header name\n  * @return  Boolean\n  */\n\thas(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\treturn find(this[MAP], name) !== undefined;\n\t}\n\n\t/**\n  * Delete all header values given name\n  *\n  * @param   String  name  Header name\n  * @return  Void\n  */\n\tdelete(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tdelete this[MAP][key];\n\t\t}\n\t}\n\n\t/**\n  * Return raw headers (non-spec api)\n  *\n  * @return  Object\n  */\n\traw() {\n\t\treturn this[MAP];\n\t}\n\n\t/**\n  * Get an iterator on keys.\n  *\n  * @return  Iterator\n  */\n\tkeys() {\n\t\treturn createHeadersIterator(this, 'key');\n\t}\n\n\t/**\n  * Get an iterator on values.\n  *\n  * @return  Iterator\n  */\n\tvalues() {\n\t\treturn createHeadersIterator(this, 'value');\n\t}\n\n\t/**\n  * Get an iterator on entries.\n  *\n  * This is the default iterator of the Headers object.\n  *\n  * @return  Iterator\n  */\n\t[Symbol.iterator]() {\n\t\treturn createHeadersIterator(this, 'key+value');\n\t}\n}\nHeaders.prototype.entries = Headers.prototype[Symbol.iterator];\n\nObject.defineProperty(Headers.prototype, Symbol.toStringTag, {\n\tvalue: 'Headers',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Headers.prototype, {\n\tget: { enumerable: true },\n\tforEach: { enumerable: true },\n\tset: { enumerable: true },\n\tappend: { enumerable: true },\n\thas: { enumerable: true },\n\tdelete: { enumerable: true },\n\tkeys: { enumerable: true },\n\tvalues: { enumerable: true },\n\tentries: { enumerable: true }\n});\n\nfunction getHeaders(headers) {\n\tlet kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';\n\n\tconst keys = Object.keys(headers[MAP]).sort();\n\treturn keys.map(kind === 'key' ? function (k) {\n\t\treturn k.toLowerCase();\n\t} : kind === 'value' ? function (k) {\n\t\treturn headers[MAP][k].join(', ');\n\t} : function (k) {\n\t\treturn [k.toLowerCase(), headers[MAP][k].join(', ')];\n\t});\n}\n\nconst INTERNAL = Symbol('internal');\n\nfunction createHeadersIterator(target, kind) {\n\tconst iterator = Object.create(HeadersIteratorPrototype);\n\titerator[INTERNAL] = {\n\t\ttarget,\n\t\tkind,\n\t\tindex: 0\n\t};\n\treturn iterator;\n}\n\nconst HeadersIteratorPrototype = Object.setPrototypeOf({\n\tnext() {\n\t\t// istanbul ignore if\n\t\tif (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {\n\t\t\tthrow new TypeError('Value of `this` is not a HeadersIterator');\n\t\t}\n\n\t\tvar _INTERNAL = this[INTERNAL];\n\t\tconst target = _INTERNAL.target,\n\t\t      kind = _INTERNAL.kind,\n\t\t      index = _INTERNAL.index;\n\n\t\tconst values = getHeaders(target, kind);\n\t\tconst len = values.length;\n\t\tif (index >= len) {\n\t\t\treturn {\n\t\t\t\tvalue: undefined,\n\t\t\t\tdone: true\n\t\t\t};\n\t\t}\n\n\t\tthis[INTERNAL].index = index + 1;\n\n\t\treturn {\n\t\t\tvalue: values[index],\n\t\t\tdone: false\n\t\t};\n\t}\n}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));\n\nObject.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {\n\tvalue: 'HeadersIterator',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * Export the Headers object in a form that Node.js can consume.\n *\n * @param   Headers  headers\n * @return  Object\n */\nfunction exportNodeCompatibleHeaders(headers) {\n\tconst obj = Object.assign({ __proto__: null }, headers[MAP]);\n\n\t// http.request() only supports string as Host header. This hack makes\n\t// specifying custom Host header possible.\n\tconst hostHeaderKey = find(headers[MAP], 'Host');\n\tif (hostHeaderKey !== undefined) {\n\t\tobj[hostHeaderKey] = obj[hostHeaderKey][0];\n\t}\n\n\treturn obj;\n}\n\n/**\n * Create a Headers object from an object of headers, ignoring those that do\n * not conform to HTTP grammar productions.\n *\n * @param   Object  obj  Object of headers\n * @return  Headers\n */\nfunction createHeadersLenient(obj) {\n\tconst headers = new Headers();\n\tfor (const name of Object.keys(obj)) {\n\t\tif (invalidTokenRegex.test(name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(obj[name])) {\n\t\t\tfor (const val of obj[name]) {\n\t\t\t\tif (invalidHeaderCharRegex.test(val)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (headers[MAP][name] === undefined) {\n\t\t\t\t\theaders[MAP][name] = [val];\n\t\t\t\t} else {\n\t\t\t\t\theaders[MAP][name].push(val);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!invalidHeaderCharRegex.test(obj[name])) {\n\t\t\theaders[MAP][name] = [obj[name]];\n\t\t}\n\t}\n\treturn headers;\n}\n\nconst INTERNALS$1 = Symbol('Response internals');\n\n// fix an issue where \"STATUS_CODES\" aren't a named export for node <10\nconst STATUS_CODES = http.STATUS_CODES;\n\n/**\n * Response class\n *\n * @param   Stream  body  Readable stream\n * @param   Object  opts  Response options\n * @return  Void\n */\nclass Response {\n\tconstructor() {\n\t\tlet body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tBody.call(this, body, opts);\n\n\t\tconst status = opts.status || 200;\n\t\tconst headers = new Headers(opts.headers);\n\n\t\tif (body != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS$1] = {\n\t\t\turl: opts.url,\n\t\t\tstatus,\n\t\t\tstatusText: opts.statusText || STATUS_CODES[status],\n\t\t\theaders,\n\t\t\tcounter: opts.counter\n\t\t};\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS$1].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS$1].status;\n\t}\n\n\t/**\n  * Convenience property representing if the request ended normally\n  */\n\tget ok() {\n\t\treturn this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS$1].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS$1].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$1].headers;\n\t}\n\n\t/**\n  * Clone this response\n  *\n  * @return  Response\n  */\n\tclone() {\n\t\treturn new Response(clone(this), {\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected\n\t\t});\n\t}\n}\n\nBody.mixIn(Response.prototype);\n\nObject.defineProperties(Response.prototype, {\n\turl: { enumerable: true },\n\tstatus: { enumerable: true },\n\tok: { enumerable: true },\n\tredirected: { enumerable: true },\n\tstatusText: { enumerable: true },\n\theaders: { enumerable: true },\n\tclone: { enumerable: true }\n});\n\nObject.defineProperty(Response.prototype, Symbol.toStringTag, {\n\tvalue: 'Response',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nconst INTERNALS$2 = Symbol('Request internals');\nconst URL = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"format\", \"parse\" aren't a named export for node <10\nconst parse_url = Url.parse;\nconst format_url = Url.format;\n\n/**\n * Wrapper around `new URL` to handle arbitrary URLs\n *\n * @param  {string} urlStr\n * @return {void}\n */\nfunction parseURL(urlStr) {\n\t/*\n \tCheck whether the URL is absolute or not\n \t\tScheme: https://tools.ietf.org/html/rfc3986#section-3.1\n \tAbsolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\n */\n\tif (/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.exec(urlStr)) {\n\t\turlStr = new URL(urlStr).toString();\n\t}\n\n\t// Fallback to old implementation for arbitrary URLs\n\treturn parse_url(urlStr);\n}\n\nconst streamDestructionSupported = 'destroy' in Stream.Readable.prototype;\n\n/**\n * Check if a value is an instance of Request.\n *\n * @param   Mixed   input\n * @return  Boolean\n */\nfunction isRequest(input) {\n\treturn typeof input === 'object' && typeof input[INTERNALS$2] === 'object';\n}\n\nfunction isAbortSignal(signal) {\n\tconst proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);\n\treturn !!(proto && proto.constructor.name === 'AbortSignal');\n}\n\n/**\n * Request class\n *\n * @param   Mixed   input  Url or Request instance\n * @param   Object  init   Custom options\n * @return  Void\n */\nclass Request {\n\tconstructor(input) {\n\t\tlet init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tlet parsedURL;\n\n\t\t// normalize input\n\t\tif (!isRequest(input)) {\n\t\t\tif (input && input.href) {\n\t\t\t\t// in order to support Node.js' Url objects; though WHATWG's URL objects\n\t\t\t\t// will fall into this branch also (since their `toString()` will return\n\t\t\t\t// `href` property anyway)\n\t\t\t\tparsedURL = parseURL(input.href);\n\t\t\t} else {\n\t\t\t\t// coerce input to a string before attempting to parse\n\t\t\t\tparsedURL = parseURL(`${input}`);\n\t\t\t}\n\t\t\tinput = {};\n\t\t} else {\n\t\t\tparsedURL = parseURL(input.url);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tlet inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;\n\n\t\tBody.call(this, inputBody, {\n\t\t\ttimeout: init.timeout || input.timeout || 0,\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ? input.signal : null;\n\t\tif ('signal' in init) signal = init.signal;\n\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal');\n\t\t}\n\n\t\tthis[INTERNALS$2] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal\n\t\t};\n\n\t\t// node-fetch-only options\n\t\tthis.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;\n\t\tthis.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t}\n\n\tget method() {\n\t\treturn this[INTERNALS$2].method;\n\t}\n\n\tget url() {\n\t\treturn format_url(this[INTERNALS$2].parsedURL);\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$2].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS$2].redirect;\n\t}\n\n\tget signal() {\n\t\treturn this[INTERNALS$2].signal;\n\t}\n\n\t/**\n  * Clone this request\n  *\n  * @return  Request\n  */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n}\n\nBody.mixIn(Request.prototype);\n\nObject.defineProperty(Request.prototype, Symbol.toStringTag, {\n\tvalue: 'Request',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Request.prototype, {\n\tmethod: { enumerable: true },\n\turl: { enumerable: true },\n\theaders: { enumerable: true },\n\tredirect: { enumerable: true },\n\tclone: { enumerable: true },\n\tsignal: { enumerable: true }\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param   Request  A Request instance\n * @return  Object   The options object to be passed to http.request\n */\nfunction getNodeRequestOptions(request) {\n\tconst parsedURL = request[INTERNALS$2].parsedURL;\n\tconst headers = new Headers(request[INTERNALS$2].headers);\n\n\t// fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// Basic fetch\n\tif (!parsedURL.protocol || !parsedURL.hostname) {\n\t\tthrow new TypeError('Only absolute URLs are supported');\n\t}\n\n\tif (!/^https?:$/.test(parsedURL.protocol)) {\n\t\tthrow new TypeError('Only HTTP(S) protocols are supported');\n\t}\n\n\tif (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {\n\t\tthrow new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body == null && /^(POST|PUT)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\tif (request.body != null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\tif (typeof totalBytes === 'number') {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate');\n\t}\n\n\tlet agent = request.agent;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\treturn Object.assign({}, parsedURL, {\n\t\tmethod: request.method,\n\t\theaders: exportNodeCompatibleHeaders(headers),\n\t\tagent\n\t});\n}\n\n/**\n * abort-error.js\n *\n * AbortError interface for cancelled requests\n */\n\n/**\n * Create AbortError instance\n *\n * @param   String      message      Error message for human\n * @return  AbortError\n */\nfunction AbortError(message) {\n  Error.call(this, message);\n\n  this.type = 'aborted';\n  this.message = message;\n\n  // hide custom error implementation details from end-users\n  Error.captureStackTrace(this, this.constructor);\n}\n\nAbortError.prototype = Object.create(Error.prototype);\nAbortError.prototype.constructor = AbortError;\nAbortError.prototype.name = 'AbortError';\n\nconst URL$1 = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"PassThrough\", \"resolve\" aren't a named export for node <10\nconst PassThrough$1 = Stream.PassThrough;\n\nconst isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) {\n\tconst orig = new URL$1(original).hostname;\n\tconst dest = new URL$1(destination).hostname;\n\n\treturn orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);\n};\n\n/**\n * isSameProtocol reports whether the two provided URLs use the same protocol.\n *\n * Both domains must already be in canonical form.\n * @param {string|URL} original\n * @param {string|URL} destination\n */\nconst isSameProtocol = function isSameProtocol(destination, original) {\n\tconst orig = new URL$1(original).protocol;\n\tconst dest = new URL$1(destination).protocol;\n\n\treturn orig === dest;\n};\n\n/**\n * Fetch function\n *\n * @param   Mixed    url   Absolute url or Request instance\n * @param   Object   opts  Fetch options\n * @return  Promise\n */\nfunction fetch(url, opts) {\n\n\t// allow custom promise\n\tif (!fetch.Promise) {\n\t\tthrow new Error('native promise missing, set fetch.Promise to your favorite alternative');\n\t}\n\n\tBody.Promise = fetch.Promise;\n\n\t// wrap http.request into fetch\n\treturn new fetch.Promise(function (resolve, reject) {\n\t\t// build request object\n\t\tconst request = new Request(url, opts);\n\t\tconst options = getNodeRequestOptions(request);\n\n\t\tconst send = (options.protocol === 'https:' ? https : http).request;\n\t\tconst signal = request.signal;\n\n\t\tlet response = null;\n\n\t\tconst abort = function abort() {\n\t\t\tlet error = new AbortError('The user aborted a request.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\tdestroyStream(request.body, error);\n\t\t\t}\n\t\t\tif (!response || !response.body) return;\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = function abortAndFinalize() {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// send request\n\t\tconst req = send(options);\n\t\tlet reqTimeout;\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tfunction finalize() {\n\t\t\treq.abort();\n\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\tclearTimeout(reqTimeout);\n\t\t}\n\n\t\tif (request.timeout) {\n\t\t\treq.once('socket', function (socket) {\n\t\t\t\treqTimeout = setTimeout(function () {\n\t\t\t\t\treject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));\n\t\t\t\t\tfinalize();\n\t\t\t\t}, request.timeout);\n\t\t\t});\n\t\t}\n\n\t\treq.on('error', function (err) {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\n\t\t\tfinalize();\n\t\t});\n\n\t\tfixResponseChunkedTransferBadEnding(req, function (err) {\n\t\t\tif (signal && signal.aborted) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\t\t});\n\n\t\t/* c8 ignore next 18 */\n\t\tif (parseInt(process.version.substring(1)) < 14) {\n\t\t\t// Before Node.js 14, pipeline() does not fully support async iterators and does not always\n\t\t\t// properly handle when the socket close/end events are out of order.\n\t\t\treq.on('socket', function (s) {\n\t\t\t\ts.addListener('close', function (hadError) {\n\t\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\t\tconst hasDataListener = s.listenerCount('data') > 0;\n\n\t\t\t\t\t// if end happened before close but the socket didn't emit an error, do it now\n\t\t\t\t\tif (response && hasDataListener && !hadError && !(signal && signal.aborted)) {\n\t\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\t\tresponse.body.emit('error', err);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treq.on('response', function (res) {\n\t\t\tclearTimeout(reqTimeout);\n\n\t\t\tconst headers = createHeadersLenient(res.headers);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (fetch.isRedirect(res.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tlet locationURL = null;\n\t\t\t\ttry {\n\t\t\t\t\tlocationURL = location === null ? null : new URL$1(location, request.url).toString();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// error here can only be invalid URL in Location: header\n\t\t\t\t\t// do not throw when options.redirect == manual\n\t\t\t\t\t// let the user extract the errorneous redirect URL\n\t\t\t\t\tif (request.redirect !== 'manual') {\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.\n\t\t\t\t\t\tif (locationURL !== null) {\n\t\t\t\t\t\t\t// handle corrupted header\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\theaders.set('Location', locationURL);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOpts = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\ttimeout: request.timeout,\n\t\t\t\t\t\t\tsize: request.size\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {\n\t\t\t\t\t\t\tfor (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {\n\t\t\t\t\t\t\t\trequestOpts.headers.delete(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {\n\t\t\t\t\t\t\trequestOpts.method = 'GET';\n\t\t\t\t\t\t\trequestOpts.body = undefined;\n\t\t\t\t\t\t\trequestOpts.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOpts)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prepare response\n\t\t\tres.once('end', function () {\n\t\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\t});\n\t\t\tlet body = res.pipe(new PassThrough$1());\n\n\t\t\tconst response_options = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: res.statusCode,\n\t\t\t\tstatusText: res.statusMessage,\n\t\t\t\theaders: headers,\n\t\t\t\tsize: request.size,\n\t\t\t\ttimeout: request.timeout,\n\t\t\t\tcounter: request.counter\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// for gzip\n\t\t\tif (codings == 'gzip' || codings == 'x-gzip') {\n\t\t\t\tbody = body.pipe(zlib.createGunzip(zlibOptions));\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for deflate\n\t\t\tif (codings == 'deflate' || codings == 'x-deflate') {\n\t\t\t\t// handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = res.pipe(new PassThrough$1());\n\t\t\t\traw.once('data', function (chunk) {\n\t\t\t\t\t// see http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflate());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflateRaw());\n\t\t\t\t\t}\n\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\traw.on('end', function () {\n\t\t\t\t\t// some old IIS servers return zero-length OK deflate responses, so 'data' is never emitted.\n\t\t\t\t\tif (!response) {\n\t\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\t\tresolve(response);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for br\n\t\t\tif (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {\n\t\t\t\tbody = body.pipe(zlib.createBrotliDecompress());\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// otherwise, use response as-is\n\t\t\tresponse = new Response(body, response_options);\n\t\t\tresolve(response);\n\t\t});\n\n\t\twriteToStream(req, request);\n\t});\n}\nfunction fixResponseChunkedTransferBadEnding(request, errorCallback) {\n\tlet socket;\n\n\trequest.on('socket', function (s) {\n\t\tsocket = s;\n\t});\n\n\trequest.on('response', function (response) {\n\t\tconst headers = response.headers;\n\n\t\tif (headers['transfer-encoding'] === 'chunked' && !headers['content-length']) {\n\t\t\tresponse.once('close', function (hadError) {\n\t\t\t\t// tests for socket presence, as in some situations the\n\t\t\t\t// the 'socket' event is not triggered for the request\n\t\t\t\t// (happens in deno), avoids `TypeError`\n\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\tconst hasDataListener = socket && socket.listenerCount('data') > 0;\n\n\t\t\t\tif (hasDataListener && !hadError) {\n\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\terrorCallback(err);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n}\n\nfunction destroyStream(stream, err) {\n\tif (stream.destroy) {\n\t\tstream.destroy(err);\n\t} else {\n\t\t// node < 8\n\t\tstream.emit('error', err);\n\t\tstream.end();\n\t}\n}\n\n/**\n * Redirect code matching\n *\n * @param   Number   code  Status code\n * @return  Boolean\n */\nfetch.isRedirect = function (code) {\n\treturn code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n};\n\n// expose Promise\nfetch.Promise = global.Promise;\n\nmodule.exports = exports = fetch;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = exports;\nexports.Headers = Headers;\nexports.Request = Request;\nexports.Response = Response;\nexports.FetchError = FetchError;\nexports.AbortError = AbortError;\n", "// This class is a helper for ApolloServerPluginUsageReporting and\n// ApolloServerPluginInlineTrace.\nimport {\n  GraphQLError,\n  type GraphQLResolveInfo,\n  type ResponsePath,\n} from 'graphql';\nimport { Trace, google } from '@apollo/usage-reporting-protobuf';\nimport type { SendErrorsOptions } from './usageReporting';\nimport { UnreachableCaseError } from '../utils/UnreachableCaseError.js';\n\nfunction internalError(message: string) {\n  return new Error(`[internal apollo-server error] ${message}`);\n}\n\nexport class TraceTreeBuilder {\n  private rootNode = new Trace.Node();\n  public trace = new Trace({\n    root: this.rootNode,\n    // By default, each trace counts as one operation for the sake of field\n    // execution counts. If we end up calling the fieldLevelInstrumentation\n    // callback (once we've successfully resolved the operation) then we\n    // may set this to a higher number; but we'll start it at 1 so that traces\n    // that don't successfully resolve the operation (eg parse failures) or\n    // where we don't call the callback because a plugin set captureTraces to\n    // true have a reasonable default.\n    fieldExecutionWeight: 1,\n  });\n  public startHrTime?: [number, number];\n  private stopped = false;\n  private nodes = new Map<string, Trace.Node>([\n    [responsePathAsString(), this.rootNode],\n  ]);\n  private readonly transformError:\n    | ((err: GraphQLError) => GraphQLError | null)\n    | null;\n\n  public constructor(options: {\n    maskedBy: string;\n    sendErrors?: SendErrorsOptions;\n  }) {\n    const { sendErrors, maskedBy } = options;\n    if (!sendErrors || 'masked' in sendErrors) {\n      this.transformError = () =>\n        new GraphQLError('<masked>', {\n          extensions: { maskedBy },\n        });\n    } else if ('transform' in sendErrors) {\n      this.transformError = sendErrors.transform;\n    } else if ('unmodified' in sendErrors) {\n      this.transformError = null;\n    } else {\n      throw new UnreachableCaseError(sendErrors);\n    }\n  }\n\n  public startTiming() {\n    if (this.startHrTime) {\n      throw internalError('startTiming called twice!');\n    }\n    if (this.stopped) {\n      throw internalError('startTiming called after stopTiming!');\n    }\n    this.trace.startTime = dateToProtoTimestamp(new Date());\n    this.startHrTime = process.hrtime();\n  }\n\n  public stopTiming() {\n    if (!this.startHrTime) {\n      throw internalError('stopTiming called before startTiming!');\n    }\n    if (this.stopped) {\n      throw internalError('stopTiming called twice!');\n    }\n\n    this.trace.durationNs = durationHrTimeToNanos(\n      process.hrtime(this.startHrTime),\n    );\n    this.trace.endTime = dateToProtoTimestamp(new Date());\n    this.stopped = true;\n  }\n\n  public willResolveField(info: GraphQLResolveInfo): () => void {\n    if (!this.startHrTime) {\n      throw internalError('willResolveField called before startTiming!');\n    }\n    if (this.stopped) {\n      // We've been stopped, which means execution is done... and yet we're\n      // still resolving more fields? How can that be? Shouldn't we throw an\n      // error or something?\n      //\n      // Well... we used to do exactly that. But this \"shouldn't happen\" error\n      // showed up in practice! Turns out that graphql-js can actually continue\n      // to execute more fields indefinitely long after `execute()` resolves!\n      // That's because parallelism on a selection set is implemented using\n      // `Promise.all`, and as soon as one of its arguments (ie, one field)\n      // throws an error, the combined Promise resolves, but there's no\n      // \"cancellation\" of the Promises that are the other arguments to\n      // `Promise.all`. So the code contributing to those Promises keeps on\n      // chugging away indefinitely.\n      //\n      // Concrete example: let\u2019s say you have\n      //\n      //    { x y { ARBITRARY_SELECTION_SET } }\n      //\n      // where x has a non-null return type, and x and y both have resolvers\n      // that return Promises. And let\u2019s say that x returns a Promise that\n      // rejects (or resolves to null). What this means is that we\u2019re going to\n      // eventually end up with `data: null` (nothing under y will actually\n      // matter), but graphql-js execution will continue running whatever is\n      // under ARBITRARY_SELECTION_SET without any sort of short circuiting. In\n      // fact, the Promise returned from execute itself can happily resolve\n      // while execution is still chugging away on an arbitrary amount of fields\n      // under that ARBITRARY_SELECTION_SET. There\u2019s no way to detect from the\n      // outside \"all the execution related to this operation is done\", nor to\n      // \"short-circuit\" execution so that it stops going.\n      //\n      // So, um. We will record any field whose execution we manage to observe\n      // before we \"stop\" the TraceTreeBuilder (whether it is one that actually\n      // ends up in the response or whether it gets thrown away due to null\n      // bubbling), but if we get any more fields afterwards, we just ignore\n      // them rather than throwing a confusing error.\n      //\n      // (That said, the error we used to throw here generally was hidden\n      // anyway, for the same reason: it comes from a branch of execution that\n      // ends up not being included in the response. But\n      // https://github.com/graphql/graphql-js/pull/3529 means that this\n      // sometimes crashed execution anyway. Our error never caught any actual\n      // problematic cases, so keeping it around doesn't really help.)\n      return () => {};\n    }\n\n    const path = info.path;\n    const node = this.newNode(path);\n    node.type = info.returnType.toString();\n    node.parentType = info.parentType.toString();\n    node.startTime = durationHrTimeToNanos(process.hrtime(this.startHrTime));\n    if (typeof path.key === 'string' && path.key !== info.fieldName) {\n      // This field was aliased; send the original field name too (for FieldStats).\n      node.originalFieldName = info.fieldName;\n    }\n\n    return () => {\n      node.endTime = durationHrTimeToNanos(process.hrtime(this.startHrTime));\n    };\n  }\n\n  public didEncounterErrors(errors: readonly GraphQLError[]) {\n    errors.forEach((err) => {\n      // This is an error from a federated service. We will already be reporting\n      // it in the nested Trace in the query plan.\n      //\n      // XXX This probably shouldn't skip query or validation errors, which are\n      //      not in nested Traces because format() isn't called in this case! Or\n      //      maybe format() should be called in that case?\n      if (err.extensions?.serviceName) {\n        return;\n      }\n\n      // In terms of reporting, errors can be re-written by the user by\n      // utilizing the `transformError` parameter.  This allows changing\n      // the message or stack to remove potentially sensitive information.\n      // Returning `null` will result in the error not being reported at all.\n      const errorForReporting = this.transformAndNormalizeError(err);\n\n      if (errorForReporting === null) {\n        return;\n      }\n\n      this.addProtobufError(\n        errorForReporting.path,\n        errorToProtobufError(errorForReporting),\n      );\n    });\n  }\n\n  private addProtobufError(\n    path: ReadonlyArray<string | number> | undefined,\n    error: Trace.Error,\n  ) {\n    if (!this.startHrTime) {\n      throw internalError('addProtobufError called before startTiming!');\n    }\n    if (this.stopped) {\n      throw internalError('addProtobufError called after stopTiming!');\n    }\n\n    // By default, put errors on the root node.\n    let node = this.rootNode;\n    // If a non-GraphQLError Error sneaks in here somehow with a non-array\n    // path, don't crash.\n    if (Array.isArray(path)) {\n      const specificNode = this.nodes.get(path.join('.'));\n      if (specificNode) {\n        node = specificNode;\n      } else {\n        const responsePath = responsePathFromArray(path, this.rootNode);\n        if (!responsePath) {\n          throw internalError('addProtobufError called with invalid path!');\n        }\n        node = this.newNode(responsePath);\n      }\n    }\n\n    node.error.push(error);\n  }\n\n  private newNode(path: ResponsePath): Trace.Node {\n    const node = new Trace.Node();\n    const id = path.key;\n    if (typeof id === 'number') {\n      node.index = id;\n    } else {\n      node.responseName = id;\n    }\n    this.nodes.set(responsePathAsString(path), node);\n    const parentNode = this.ensureParentNode(path);\n    parentNode.child.push(node);\n    return node;\n  }\n\n  private ensureParentNode(path: ResponsePath): Trace.Node {\n    const parentPath = responsePathAsString(path.prev);\n    const parentNode = this.nodes.get(parentPath);\n    if (parentNode) {\n      return parentNode;\n    }\n    // Because we set up the root path when creating this.nodes, we now know\n    // that path.prev isn't undefined.\n    return this.newNode(path.prev!);\n  }\n\n  private transformAndNormalizeError(err: GraphQLError): GraphQLError | null {\n    if (this.transformError) {\n      // Before passing the error to the user-provided `transformError` function,\n      // we'll make a shadow copy of the error so the user is free to change\n      // the object as they see fit.\n\n      // At this stage, this error is only for the purposes of reporting, but\n      // this is even more important since this is still a reference to the\n      // original error object and changing it would also change the error which\n      // is returned in the response to the client.\n\n      // For the clone, we'll create a new object which utilizes the exact same\n      // prototype of the error being reported.\n      const clonedError = Object.assign(\n        Object.create(Object.getPrototypeOf(err)),\n        err,\n      );\n\n      const rewrittenError = this.transformError(clonedError);\n\n      // Returning an explicit `null` means the user is requesting that the error\n      // not be reported to Apollo.\n      if (rewrittenError === null) {\n        return null;\n      }\n\n      // We don't want users to be inadvertently not reporting errors, so if\n      // they haven't returned an explicit `GraphQLError` (or `null`, handled\n      // above), then we'll report the error as usual.\n      if (!(rewrittenError instanceof GraphQLError)) {\n        return err;\n      }\n\n      // We only allow transformError to change the message and extensions of the\n      // error; we keep everything else the same. That way people don't have to\n      // do extra work to keep the error on the same trace node. We also keep\n      // extensions the same if it isn't explicitly changed (to, eg, {}). (Note\n      // that many of the fields of GraphQLError are not enumerable and won't\n      // show up in the trace (even in the json field) anyway.)\n      return new GraphQLError(rewrittenError.message, {\n        nodes: err.nodes,\n        source: err.source,\n        positions: err.positions,\n        path: err.path,\n        originalError: err.originalError,\n        extensions: rewrittenError.extensions || err.extensions,\n      });\n    }\n    return err;\n  }\n}\n\n// Converts an hrtime array (as returned from process.hrtime) to nanoseconds.\n//\n// ONLY CALL THIS ON VALUES REPRESENTING DELTAS, NOT ON THE RAW RETURN VALUE\n// FROM process.hrtime() WITH NO ARGUMENTS.\n//\n// The entire point of the hrtime data structure is that the JavaScript Number\n// type can't represent all int64 values without loss of precision:\n// Number.MAX_SAFE_INTEGER nanoseconds is about 104 days. Calling this function\n// on a duration that represents a value less than 104 days is fine. Calling\n// this function on an absolute time (which is generally roughly time since\n// system boot) is not a good idea.\n//\n// XXX We should probably use google.protobuf.Duration on the wire instead of\n// ever trying to store durations in a single number.\nfunction durationHrTimeToNanos(hrtime: [number, number]) {\n  return hrtime[0] * 1e9 + hrtime[1];\n}\n\n// Convert from the linked-list ResponsePath format to a dot-joined\n// string. Includes the full path (field names and array indices).\nfunction responsePathAsString(p?: ResponsePath): string {\n  if (p === undefined) {\n    return '';\n  }\n\n  // A previous implementation used `responsePathAsArray` from `graphql-js/execution`,\n  // however, that employed an approach that created new arrays unnecessarily.\n  let res = String(p.key);\n\n  while ((p = p.prev) !== undefined) {\n    res = `${p.key}.${res}`;\n  }\n\n  return res;\n}\n\nfunction responsePathFromArray(\n  path: ReadonlyArray<string | number>,\n  node: Trace.Node,\n): ResponsePath | undefined {\n  let responsePath: ResponsePath | undefined;\n  let nodePtr: Trace.INode | undefined = node;\n  for (const key of path) {\n    nodePtr = nodePtr?.child?.find((child) => child.responseName === key);\n    responsePath = {\n      key,\n      prev: responsePath,\n      typename: nodePtr?.type ?? undefined,\n    };\n  }\n  return responsePath;\n}\n\nfunction errorToProtobufError(error: GraphQLError): Trace.Error {\n  return new Trace.Error({\n    message: error.message,\n    location: (error.locations || []).map(\n      ({ line, column }) => new Trace.Location({ line, column }),\n    ),\n    json: JSON.stringify(error),\n  });\n}\n\n// Converts a JS Date into a Timestamp.\nexport function dateToProtoTimestamp(date: Date): google.protobuf.Timestamp {\n  const totalMillis = +date;\n  const millis = totalMillis % 1000;\n  return new google.protobuf.Timestamp({\n    seconds: (totalMillis - millis) / 1000,\n    nanos: millis * 1e6,\n  });\n}\n", "import type { Trace } from '@apollo/usage-reporting-protobuf';\n\n/**\n * Iterates over the entire trace, calling `f` on each Trace.Node found. It\n * looks under the \"root\" node as well as any inside the query plan. If any `f`\n * returns true, it stops walking the tree.\n *\n * Each call to `f` will receive an object that implements ResponseNamePath. If\n * `includePath` is true, `f` can call `toArray()` on it to convert the\n * linked-list representation to an array of the response name (field name)\n * nodes that you navigate to get to the node (including a \"service:subgraph\"\n * top-level node if this is a federated trace). Note that we don't add anything\n * to the path for index (list element) nodes. This is because the only use case\n * we have (error path statistics) does not care about list indexes (it's not\n * that interesting to know that sometimes an error was at foo.3.bar and\n * sometimes foo.5.bar, vs just generally foo.bar).\n *\n * If `includePath` is false, we don't bother to build up the linked lists, and\n * calling `toArray()` will throw.\n */\nexport function iterateOverTrace(\n  trace: Trace,\n  f: (node: Trace.INode, path: ResponseNamePath) => boolean,\n  includePath: boolean,\n) {\n  const rootPath = includePath\n    ? new RootCollectingPathsResponseNamePath()\n    : notCollectingPathsResponseNamePath;\n  if (trace.root) {\n    if (iterateOverTraceNode(trace.root, rootPath, f)) return;\n  }\n\n  if (trace.queryPlan) {\n    if (iterateOverQueryPlan(trace.queryPlan, rootPath, f)) return;\n  }\n}\n\n// Helper for iterateOverTrace; returns true to stop the overall walk.\nfunction iterateOverQueryPlan(\n  node: Trace.IQueryPlanNode,\n  rootPath: ResponseNamePath,\n  f: (node: Trace.INode, path: ResponseNamePath) => boolean,\n): boolean {\n  if (!node) return false;\n\n  if (node.fetch?.trace?.root && node.fetch.serviceName) {\n    return iterateOverTraceNode(\n      node.fetch.trace.root,\n      rootPath.child(`service:${node.fetch.serviceName}`),\n      f,\n    );\n  }\n  if (node.flatten?.node) {\n    return iterateOverQueryPlan(node.flatten.node, rootPath, f);\n  }\n  if (node.parallel?.nodes) {\n    // We want to stop as soon as some call returns true, which happens to be\n    // exactly what 'some' does.\n    return node.parallel.nodes.some((node) =>\n      iterateOverQueryPlan(node, rootPath, f),\n    );\n  }\n  if (node.sequence?.nodes) {\n    // We want to stop as soon as some call returns true, which happens to be\n    // exactly what 'some' does.\n    return node.sequence.nodes.some((node) =>\n      iterateOverQueryPlan(node, rootPath, f),\n    );\n  }\n\n  return false;\n}\n\n// Helper for iterateOverTrace; returns true to stop the overall walk.\nfunction iterateOverTraceNode(\n  node: Trace.INode,\n  path: ResponseNamePath,\n  f: (node: Trace.INode, path: ResponseNamePath) => boolean,\n): boolean {\n  // Invoke the function; if it returns true, don't descend and tell callers to\n  // stop walking.\n  if (f(node, path)) {\n    return true;\n  }\n\n  return (\n    // We want to stop as soon as some call returns true, which happens to be\n    // exactly what 'some' does.\n    node.child?.some((child) => {\n      const childPath = child.responseName\n        ? path.child(child.responseName)\n        : path;\n      return iterateOverTraceNode(child, childPath, f);\n    }) ?? false\n  );\n}\n\nexport interface ResponseNamePath {\n  toArray(): string[];\n  child(responseName: string): ResponseNamePath;\n}\n\nconst notCollectingPathsResponseNamePath: ResponseNamePath = {\n  toArray() {\n    throw Error('not collecting paths!');\n  },\n  child() {\n    return this;\n  },\n};\n\ntype CollectingPathsResponseNamePath =\n  | RootCollectingPathsResponseNamePath\n  | ChildCollectingPathsResponseNamePath;\nclass RootCollectingPathsResponseNamePath implements ResponseNamePath {\n  toArray() {\n    return [];\n  }\n  child(responseName: string) {\n    return new ChildCollectingPathsResponseNamePath(responseName, this);\n  }\n}\nclass ChildCollectingPathsResponseNamePath implements ResponseNamePath {\n  constructor(\n    readonly responseName: string,\n    readonly prev: CollectingPathsResponseNamePath,\n  ) {}\n  toArray() {\n    const out = [];\n    let curr: CollectingPathsResponseNamePath = this;\n    while (curr instanceof ChildCollectingPathsResponseNamePath) {\n      out.push(curr.responseName);\n      curr = curr.prev;\n    }\n    return out.reverse();\n  }\n  child(responseName: string) {\n    return new ChildCollectingPathsResponseNamePath(responseName, this);\n  }\n}\n", "export interface DurationHistogramOptions {\n  initSize?: number;\n  buckets?: number[];\n}\nexport class DurationHistogram {\n  // Note that it's legal for the values in \"buckets\" to be non-integers; they\n  // will be floored by toArray (which is called by the protobuf encoder).\n  // (We take advantage of this for field latencies specifically, because\n  // the ability to return a non-1 weight from fieldLevelInstrumentation\n  // means we want to build up our histograms as floating-point rather than\n  // rounding after every operation.)\n  private readonly buckets: number[];\n  static readonly BUCKET_COUNT = 384;\n  static readonly EXPONENT_LOG = Math.log(1.1);\n\n  toArray(): number[] {\n    let bufferedZeroes = 0;\n    const outputArray: number[] = [];\n\n    for (const value of this.buckets) {\n      if (value === 0) {\n        bufferedZeroes++;\n      } else {\n        if (bufferedZeroes === 1) {\n          outputArray.push(0);\n        } else if (bufferedZeroes !== 0) {\n          outputArray.push(-bufferedZeroes);\n        }\n        outputArray.push(Math.floor(value));\n        bufferedZeroes = 0;\n      }\n    }\n    return outputArray;\n  }\n\n  static durationToBucket(durationNs: number): number {\n    const log = Math.log(durationNs / 1000.0);\n    const unboundedBucket = Math.ceil(log / DurationHistogram.EXPONENT_LOG);\n\n    // Compare <= 0 to catch -0 and -infinity\n    return unboundedBucket <= 0 || Number.isNaN(unboundedBucket)\n      ? 0\n      : unboundedBucket >= DurationHistogram.BUCKET_COUNT\n        ? DurationHistogram.BUCKET_COUNT - 1\n        : unboundedBucket;\n  }\n\n  incrementDuration(durationNs: number, value = 1): DurationHistogram {\n    this.incrementBucket(DurationHistogram.durationToBucket(durationNs), value);\n    return this;\n  }\n\n  incrementBucket(bucket: number, value = 1) {\n    if (bucket >= DurationHistogram.BUCKET_COUNT) {\n      // Since we don't have fixed size arrays I'd rather throw the error manually\n      throw Error('Bucket is out of bounds of the buckets array');\n    }\n\n    // Extend the array if we haven't gotten it long enough to handle the new bucket\n    if (bucket >= this.buckets.length) {\n      const oldLength = this.buckets.length;\n      this.buckets.length = bucket + 1;\n      this.buckets.fill(0, oldLength);\n    }\n\n    this.buckets[bucket] += value;\n  }\n\n  combine(otherHistogram: DurationHistogram) {\n    for (let i = 0; i < otherHistogram.buckets.length; i++) {\n      this.incrementBucket(i, otherHistogram.buckets[i]);\n    }\n  }\n\n  constructor(options?: DurationHistogramOptions) {\n    const initSize = options?.initSize || 74;\n    const buckets = options?.buckets;\n\n    const arrayInitSize = Math.max(buckets?.length || 0, initSize);\n\n    this.buckets = Array<number>(arrayInitSize).fill(0);\n\n    if (buckets) {\n      buckets.forEach((val, index) => (this.buckets[index] = val));\n    }\n  }\n}\n", "import LRUCache from 'lru-cache';\nimport type { Trace } from '@apollo/usage-reporting-protobuf';\nimport { iterateOverTrace } from './iterateOverTrace.js';\nimport { DurationHistogram } from './durationHistogram.js';\n\nexport function defaultSendOperationsAsTrace() {\n  // We keep an LRU cache mapping from a trace key (which consists of the\n  // operation as defined by statsReportKey, the rough duration of the\n  // operation, what minute the operation ended at, etc) to `true` if we've seen\n  // it recently. We actually split this into one cache per minute so we can\n  // throw away a full minute's worth of cache at once; we keep only the last\n  // three minutes.\n  // Note that if a trace is over a certain size, we will always send it as\n  // stats. We check this within the addTrace function of the OurReport class so\n  // that we don't have to encode these large traces twice.\n  const cache = new LRUCache<string, true>({\n    // 3MiB limit, very much approximately since we can't be sure how V8 might\n    // be storing these strings internally. Though this should be enough to\n    // store a fair amount of trace keys.\n\n    // A future version of this might expose some\n    // configuration option to grow the cache, but ideally, we could do that\n    // dynamically based on the resources available to the server, and not add\n    // more configuration surface area. Hopefully the warning message will allow\n    // us to evaluate the need with more validated input from those that receive\n    // it.\n    maxSize: Math.pow(2, 20),\n    sizeCalculation: (_val, key) => {\n      return (key && Buffer.byteLength(key)) || 0;\n    },\n  });\n\n  return (trace: Trace, statsReportKey: string): boolean => {\n    const endTimeSeconds = trace.endTime?.seconds;\n    if (endTimeSeconds == null) {\n      throw Error('programming error: endTime not set on trace');\n    }\n\n    const hasErrors = traceHasErrors(trace);\n    const cacheKey = JSON.stringify([\n      statsReportKey,\n      DurationHistogram.durationToBucket(trace.durationNs),\n      // What minute it started at\n      Math.floor(endTimeSeconds / 60),\n      // If the trace has an error, send one errored trace per 5 second interval\n      // instead of the normal minutely bucket a non-errored trace takes.\n      hasErrors ? Math.floor(endTimeSeconds / 5) : '',\n    ]);\n\n    // If we've already seen something roughly like this, don't send as a trace.\n    if (cache.get(cacheKey)) {\n      return false;\n    }\n\n    cache.set(cacheKey, true);\n    return true;\n  };\n}\n\n// Returns true if any node on the trace has errors. (If this ends up being a\n// hot spot, we can precalculate it in TraceTreeBuilder.)\nfunction traceHasErrors(trace: Trace): boolean {\n  let hasErrors = false;\n\n  function traceNodeStats(node: Trace.INode): boolean {\n    if ((node.error?.length ?? 0) > 0) {\n      hasErrors = true;\n    }\n    return hasErrors;\n  }\n\n  iterateOverTrace(trace, traceNodeStats, false);\n  return hasErrors;\n}\n", "import type { Logger } from '@apollo/utils.logger';\nimport type { ReferencedFieldsByType } from '@apollo/utils.usagereporting';\nimport LRUCache from 'lru-cache';\n\nexport interface OperationDerivedData {\n  signature: string;\n  referencedFieldsByType: ReferencedFieldsByType;\n}\n\nexport function createOperationDerivedDataCache({\n  logger,\n}: {\n  logger: Logger;\n}): LRUCache<string, OperationDerivedData> {\n  let lastWarn: Date;\n  let lastDisposals = 0;\n  return new LRUCache<string, OperationDerivedData>({\n    // Calculate the length of cache objects by the JSON.stringify byteLength.\n    sizeCalculation(obj) {\n      return Buffer.byteLength(JSON.stringify(obj), 'utf8');\n    },\n    // 10MiB limit, very much approximately since we can't be sure how V8 might\n    // be storing this data internally. Though this should be enough to store a\n    // fair amount of operation data, depending on their overall complexity. A\n    // future version of this might expose some configuration option to grow the\n    // cache, but ideally, we could do that dynamically based on the resources\n    // available to the server, and not add more configuration surface area.\n    // Hopefully the warning message will allow us to evaluate the need with\n    // more validated input from those that receive it.\n    maxSize: Math.pow(2, 20) * 10,\n    dispose() {\n      // Count the number of disposals between warning messages.\n      lastDisposals++;\n\n      // Only show a message warning about the high turnover every 60 seconds.\n      if (!lastWarn || new Date().getTime() - lastWarn.getTime() > 60000) {\n        // Log the time that we last displayed the message.\n        lastWarn = new Date();\n        logger.warn(\n          [\n            'This server is processing a high number of unique operations.  ',\n            `A total of ${lastDisposals} records have been `,\n            'ejected from the ApolloServerPluginUsageReporting signature cache in the past ',\n            'interval.  If you see this warning frequently, please open an ',\n            'issue on the Apollo Server repository.',\n          ].join(''),\n        );\n\n        // Reset the disposal counter for the next message interval.\n        lastDisposals = 0;\n      }\n    },\n  });\n}\n\nexport function operationDerivedDataCacheKey(\n  queryHash: string,\n  operationName: string,\n) {\n  return `${queryHash}${operationName && ':' + operationName}`;\n}\n", "import type { NonFtv1ErrorPath } from '@apollo/server-gateway-interface';\nimport {\n  type google,\n  type IContextualizedStats,\n  type IFieldStat,\n  type IPathErrorStats,\n  type IQueryLatencyStats,\n  type IReport,\n  type IStatsContext,\n  type ITracesAndStats,\n  type ITypeStat,\n  type ReportHeader,\n  Trace,\n} from '@apollo/usage-reporting-protobuf';\nimport type { ReferencedFieldsByType } from '@apollo/utils.usagereporting';\nimport { DurationHistogram } from './durationHistogram.js';\nimport { iterateOverTrace, type ResponseNamePath } from './iterateOverTrace.js';\n\n// protobuf.js exports both a class and an interface (starting with I) for each\n// message type. The class is what it produces when it decodes the message; the\n// interface is what is accepted as input. We build up our messages using custom\n// types implementing the interfaces, so that we can take advantage of the\n// js_use_toArray option we added to our protobuf.js fork which allows us to use\n// classes like DurationHistogram to generate repeated fields. We end up\n// re-creating most of the report structure as custom classes (starting with\n// \"Our\"). TypeScript validates that we've properly listed all of the message\n// fields with the appropriate types (we use `Required` to ensure we implement\n// all message fields). Using our own classes has other advantages, like being\n// able to specify that nested messages are instances of the same class rather\n// than the interface type and thus that they have non-null fields (because the\n// interface type allows all fields to be optional, even though the protobuf\n// format doesn't differentiate between missing and falsey).\n\nexport class SizeEstimator {\n  bytes = 0;\n}\nexport class OurReport implements Required<IReport> {\n  // Apollo Server includes each operation either as aggregated stats or as a\n  // trace, but not both. Other reporting agents such as Apollo Router include\n  // all operations in stats (even those that are sent as traces), and they set\n  // this flag to true.\n  tracesPreAggregated = false;\n\n  constructor(readonly header: ReportHeader) {}\n  readonly tracesPerQuery: Record<string, OurTracesAndStats> =\n    Object.create(null);\n  endTime: google.protobuf.ITimestamp | null = null;\n  operationCount = 0;\n  // A rough estimate of the number of bytes currently in the report. We start\n  // at zero and don't count `header` and `endTime`, which have the same size\n  // for every report. This really is a rough estimate, so we don't stress too\n  // much about counting bytes for the tags and string/message lengths, etc:\n  // we mostly just count the lengths of strings plus some estimates for the\n  // messages with a bunch of numbers in them.\n  //\n  // We store this in a class so we can pass it down as a reference to other\n  // methods which increment it.\n  readonly sizeEstimator = new SizeEstimator();\n\n  ensureCountsAreIntegers() {\n    for (const tracesAndStats of Object.values(this.tracesPerQuery)) {\n      tracesAndStats.ensureCountsAreIntegers();\n    }\n  }\n\n  addTrace({\n    statsReportKey,\n    trace,\n    asTrace,\n    referencedFieldsByType,\n    // The max size a trace can be before it is sent as stats. Note that the\n    // Apollo reporting ingress server will never store any traces over 10mb\n    // anyway. They will still be converted to stats as we would do here.\n    maxTraceBytes = 10 * 1024 * 1024,\n    nonFtv1ErrorPaths,\n  }: {\n    statsReportKey: string;\n    trace: Trace;\n    asTrace: boolean;\n    referencedFieldsByType: ReferencedFieldsByType;\n    maxTraceBytes?: number;\n    nonFtv1ErrorPaths: NonFtv1ErrorPath[];\n  }) {\n    const tracesAndStats = this.getTracesAndStats({\n      statsReportKey,\n      referencedFieldsByType,\n    });\n    if (asTrace) {\n      const encodedTrace = Trace.encode(trace).finish();\n\n      if (!isNaN(maxTraceBytes) && encodedTrace.length > maxTraceBytes) {\n        tracesAndStats.statsWithContext.addTrace(\n          trace,\n          this.sizeEstimator,\n          nonFtv1ErrorPaths,\n        );\n      } else {\n        tracesAndStats.trace.push(encodedTrace);\n        this.sizeEstimator.bytes += 2 + encodedTrace.length;\n      }\n    } else {\n      tracesAndStats.statsWithContext.addTrace(\n        trace,\n        this.sizeEstimator,\n        nonFtv1ErrorPaths,\n      );\n    }\n  }\n\n  private getTracesAndStats({\n    statsReportKey,\n    referencedFieldsByType,\n  }: {\n    statsReportKey: string;\n    referencedFieldsByType: ReferencedFieldsByType;\n  }) {\n    const existing = this.tracesPerQuery[statsReportKey];\n    if (existing) {\n      return existing;\n    }\n    this.sizeEstimator.bytes += estimatedBytesForString(statsReportKey);\n\n    // Update the size estimator for the referenced field structure.\n    for (const [typeName, referencedFieldsForType] of Object.entries(\n      referencedFieldsByType,\n    )) {\n      // Two bytes each for the map entry and for the ReferencedFieldsForType,\n      // and for the isInterface bool if it's set.\n      this.sizeEstimator.bytes += 2 + 2;\n      if (referencedFieldsForType.isInterface) {\n        this.sizeEstimator.bytes += 2;\n      }\n      this.sizeEstimator.bytes += estimatedBytesForString(typeName);\n      for (const fieldName of referencedFieldsForType.fieldNames) {\n        this.sizeEstimator.bytes += estimatedBytesForString(fieldName);\n      }\n    }\n\n    // Include the referenced fields map in the report. (In an ideal world we\n    // could have a slightly more sophisticated protocol and ingestion pipeline\n    // that allowed us to only have to send this data once for each\n    // schema/operation pair.)\n    return (this.tracesPerQuery[statsReportKey] = new OurTracesAndStats(\n      referencedFieldsByType,\n    ));\n  }\n}\n\nclass OurTracesAndStats implements Required<ITracesAndStats> {\n  constructor(readonly referencedFieldsByType: ReferencedFieldsByType) {}\n  readonly trace: Uint8Array[] = [];\n  readonly statsWithContext = new StatsByContext();\n  readonly internalTracesContributingToStats: Uint8Array[] = [];\n\n  ensureCountsAreIntegers() {\n    this.statsWithContext.ensureCountsAreIntegers();\n  }\n}\n\nclass StatsByContext {\n  readonly map: { [k: string]: OurContextualizedStats } = Object.create(null);\n\n  /**\n   * This function is used by the protobuf generator to convert this map into\n   * an array of contextualized stats to serialize\n   */\n  toArray(): IContextualizedStats[] {\n    return Object.values(this.map);\n  }\n\n  ensureCountsAreIntegers() {\n    for (const contextualizedStats of Object.values(this.map)) {\n      contextualizedStats.ensureCountsAreIntegers();\n    }\n  }\n\n  addTrace(\n    trace: Trace,\n    sizeEstimator: SizeEstimator,\n    nonFtv1ErrorPaths: NonFtv1ErrorPath[],\n  ) {\n    this.getContextualizedStats(trace, sizeEstimator).addTrace(\n      trace,\n      sizeEstimator,\n      nonFtv1ErrorPaths,\n    );\n  }\n\n  private getContextualizedStats(\n    trace: Trace,\n    sizeEstimator: SizeEstimator,\n  ): OurContextualizedStats {\n    const statsContext: IStatsContext = {\n      clientName: trace.clientName,\n      clientVersion: trace.clientVersion,\n    };\n    const statsContextKey = JSON.stringify(statsContext);\n\n    const existing = this.map[statsContextKey];\n    if (existing) {\n      return existing;\n    }\n    // Adding a ContextualizedStats means adding a StatsContext plus a\n    // QueryLatencyStats. Let's guess about 20 bytes for a QueryLatencyStats;\n    // it'll be more if more features are used (like cache, APQ, etc).\n    sizeEstimator.bytes +=\n      20 +\n      estimatedBytesForString(trace.clientName) +\n      estimatedBytesForString(trace.clientVersion);\n    const contextualizedStats = new OurContextualizedStats(statsContext);\n    this.map[statsContextKey] = contextualizedStats;\n    return contextualizedStats;\n  }\n}\n\nexport class OurContextualizedStats implements Required<IContextualizedStats> {\n  queryLatencyStats = new OurQueryLatencyStats();\n  perTypeStat: { [k: string]: OurTypeStat } = Object.create(null);\n\n  constructor(readonly context: IStatsContext) {}\n\n  ensureCountsAreIntegers() {\n    for (const typeStat of Object.values(this.perTypeStat)) {\n      typeStat.ensureCountsAreIntegers();\n    }\n  }\n\n  // Extract statistics from the trace, and increment the estimated report size.\n  // We only add to the estimate when adding whole sub-messages. If it really\n  // mattered, we could do a lot more careful things like incrementing it\n  // whenever a numeric field on queryLatencyStats gets incremented over 0.\n  addTrace(\n    trace: Trace,\n    sizeEstimator: SizeEstimator,\n    nonFtv1ErrorPaths: NonFtv1ErrorPath[] = [],\n  ) {\n    const { fieldExecutionWeight } = trace;\n    if (!fieldExecutionWeight) {\n      this.queryLatencyStats.requestsWithoutFieldInstrumentation++;\n    }\n\n    this.queryLatencyStats.requestCount++;\n    if (trace.fullQueryCacheHit) {\n      this.queryLatencyStats.cacheLatencyCount.incrementDuration(\n        trace.durationNs,\n      );\n      this.queryLatencyStats.cacheHits++;\n    } else {\n      this.queryLatencyStats.latencyCount.incrementDuration(trace.durationNs);\n    }\n\n    // We only provide stats about cache TTLs on cache misses (ie, TTLs directly\n    // calculated by the backend), not for cache hits. This matches the\n    // behavior we've had for a while when converting traces into statistics\n    // in Studio's servers.\n    if (!trace.fullQueryCacheHit && trace.cachePolicy?.maxAgeNs != null) {\n      switch (trace.cachePolicy.scope) {\n        case Trace.CachePolicy.Scope.PRIVATE:\n          this.queryLatencyStats.privateCacheTtlCount.incrementDuration(\n            trace.cachePolicy.maxAgeNs,\n          );\n          break;\n        case Trace.CachePolicy.Scope.PUBLIC:\n          this.queryLatencyStats.publicCacheTtlCount.incrementDuration(\n            trace.cachePolicy.maxAgeNs,\n          );\n          break;\n      }\n    }\n\n    if (trace.persistedQueryHit) {\n      this.queryLatencyStats.persistedQueryHits++;\n    }\n    if (trace.persistedQueryRegister) {\n      this.queryLatencyStats.persistedQueryMisses++;\n    }\n\n    if (trace.forbiddenOperation) {\n      this.queryLatencyStats.forbiddenOperationCount++;\n    }\n    if (trace.registeredOperation) {\n      this.queryLatencyStats.registeredOperationCount++;\n    }\n\n    let hasError = false;\n\n    const errorPathStats = new Set<OurPathErrorStats>();\n\n    const traceNodeStats = (node: Trace.INode, path: ResponseNamePath) => {\n      // Generate error stats and error path information\n      if (node.error?.length) {\n        hasError = true;\n\n        let currPathErrorStats = this.queryLatencyStats.rootErrorStats;\n        path.toArray().forEach((subPath) => {\n          currPathErrorStats = currPathErrorStats.getChild(\n            subPath,\n            sizeEstimator,\n          );\n        });\n\n        errorPathStats.add(currPathErrorStats);\n        currPathErrorStats.errorsCount += node.error.length;\n      }\n\n      if (fieldExecutionWeight) {\n        // The actual field name behind the node; originalFieldName is set\n        // if an alias was used, otherwise responseName. (This is falsey for\n        // nodes that are not fields (root, array index, etc).)\n        const fieldName = node.originalFieldName || node.responseName;\n\n        // Protobuf doesn't really differentiate between \"unset\" and \"falsey\" so\n        // we're mostly actually checking that these things are non-empty string /\n        // non-zero numbers. The time fields represent the number of nanoseconds\n        // since the beginning of the entire trace, so let's pretend for the\n        // moment that it's plausible for a node to start or even end exactly when\n        // the trace started (ie, for the time values to be 0). This is unlikely\n        // in practice (everything should take at least 1ns). In practice we only\n        // write `type` and `parentType` on a Node when we write `startTime`, so\n        // the main thing we're looking out for by checking the time values is\n        // whether we somehow failed to write `endTime` at the end of the field;\n        // in this case, the `endTime >= startTime` check won't match.\n        if (\n          node.parentType &&\n          fieldName &&\n          node.type &&\n          node.endTime != null &&\n          node.startTime != null &&\n          node.endTime >= node.startTime\n        ) {\n          const typeStat = this.getTypeStat(node.parentType, sizeEstimator);\n\n          const fieldStat = typeStat.getFieldStat(\n            fieldName,\n            node.type,\n            sizeEstimator,\n          );\n\n          fieldStat.errorsCount += node.error?.length ?? 0;\n          fieldStat.observedExecutionCount++;\n          fieldStat.estimatedExecutionCount += fieldExecutionWeight;\n          // Note: this is actually counting the number of resolver calls for this\n          // field that had at least one error, not the number of overall GraphQL\n          // queries that had at least one error for this field. That doesn't seem\n          // to match the name, but it does match the other implementations of this\n          // logic.\n          fieldStat.requestsWithErrorsCount +=\n            (node.error?.length ?? 0) > 0 ? 1 : 0;\n          fieldStat.latencyCount.incrementDuration(\n            node.endTime - node.startTime,\n            // The latency histogram is always \"estimated\"; we don't track\n            // \"observed\" and \"estimated\" separately.\n            fieldExecutionWeight,\n          );\n        }\n      }\n\n      return false;\n    };\n\n    iterateOverTrace(trace, traceNodeStats, true);\n\n    // iterate over nonFtv1ErrorPaths, using some bits from traceNodeStats function\n    for (const { subgraph, path } of nonFtv1ErrorPaths) {\n      hasError = true;\n      if (path) {\n        let currPathErrorStats = this.queryLatencyStats.rootErrorStats.getChild(\n          `service:${subgraph}`,\n          sizeEstimator,\n        );\n        path.forEach((subPath) => {\n          if (typeof subPath === 'string') {\n            currPathErrorStats = currPathErrorStats.getChild(\n              subPath,\n              sizeEstimator,\n            );\n          }\n        });\n\n        errorPathStats.add(currPathErrorStats);\n        currPathErrorStats.errorsCount += 1;\n      }\n    }\n\n    for (const errorPath of errorPathStats) {\n      errorPath.requestsWithErrorsCount += 1;\n    }\n\n    if (hasError) {\n      this.queryLatencyStats.requestsWithErrorsCount++;\n    }\n  }\n\n  getTypeStat(parentType: string, sizeEstimator: SizeEstimator): OurTypeStat {\n    const existing = this.perTypeStat[parentType];\n    if (existing) {\n      return existing;\n    }\n    sizeEstimator.bytes += estimatedBytesForString(parentType);\n    const typeStat = new OurTypeStat();\n    this.perTypeStat[parentType] = typeStat;\n    return typeStat;\n  }\n}\n\nclass OurQueryLatencyStats implements Required<IQueryLatencyStats> {\n  latencyCount: DurationHistogram = new DurationHistogram();\n  requestCount = 0;\n  requestsWithoutFieldInstrumentation = 0;\n  cacheHits = 0;\n  persistedQueryHits = 0;\n  persistedQueryMisses = 0;\n  cacheLatencyCount: DurationHistogram = new DurationHistogram();\n  rootErrorStats: OurPathErrorStats = new OurPathErrorStats();\n  requestsWithErrorsCount = 0;\n  publicCacheTtlCount: DurationHistogram = new DurationHistogram();\n  privateCacheTtlCount: DurationHistogram = new DurationHistogram();\n  registeredOperationCount = 0;\n  forbiddenOperationCount = 0;\n}\n\nclass OurPathErrorStats implements Required<IPathErrorStats> {\n  children: { [k: string]: OurPathErrorStats } = Object.create(null);\n  errorsCount = 0;\n  requestsWithErrorsCount = 0;\n\n  getChild(subPath: string, sizeEstimator: SizeEstimator): OurPathErrorStats {\n    const existing = this.children[subPath];\n    if (existing) {\n      return existing;\n    }\n    const child = new OurPathErrorStats();\n    this.children[subPath] = child;\n    // Include a few bytes in the estimate for the numbers etc.\n    sizeEstimator.bytes += estimatedBytesForString(subPath) + 4;\n    return child;\n  }\n}\n\nclass OurTypeStat implements Required<ITypeStat> {\n  perFieldStat: { [k: string]: OurFieldStat } = Object.create(null);\n\n  getFieldStat(\n    fieldName: string,\n    returnType: string,\n    sizeEstimator: SizeEstimator,\n  ): OurFieldStat {\n    const existing = this.perFieldStat[fieldName];\n    if (existing) {\n      return existing;\n    }\n    // Rough estimate of 10 bytes for the numbers in the FieldStat.\n    sizeEstimator.bytes +=\n      estimatedBytesForString(fieldName) +\n      estimatedBytesForString(returnType) +\n      10;\n    const fieldStat = new OurFieldStat(returnType);\n    this.perFieldStat[fieldName] = fieldStat;\n    return fieldStat;\n  }\n\n  ensureCountsAreIntegers() {\n    for (const fieldStat of Object.values(this.perFieldStat)) {\n      fieldStat.ensureCountsAreIntegers();\n    }\n  }\n}\n\nclass OurFieldStat implements Required<IFieldStat> {\n  errorsCount = 0;\n  observedExecutionCount = 0;\n  // Note that this number isn't necessarily an integer while it is being\n  // aggregated. Before encoding as a protobuf we call ensureCountsAreIntegers\n  // which floors it.\n  estimatedExecutionCount = 0;\n  requestsWithErrorsCount = 0;\n  latencyCount: DurationHistogram = new DurationHistogram();\n\n  constructor(readonly returnType: string) {}\n\n  ensureCountsAreIntegers() {\n    // This is the only one that ever can receive non-integers.\n    this.estimatedExecutionCount = Math.floor(this.estimatedExecutionCount);\n  }\n}\n\nfunction estimatedBytesForString(s: string) {\n  // 2 is for the tag (field ID + wire type) plus the encoded length. (The\n  // encoded length takes up more than 1 byte for strings that are longer than\n  // 127 bytes, but this is an estimate.)\n  return 2 + Buffer.byteLength(s);\n}\n", "import { Trace } from '@apollo/usage-reporting-protobuf';\nimport type { VariableValueOptions } from './options.js';\n\n// Creates trace details from request variables, given a specification for modifying\n// values of private or sensitive variables.\n// The details will include all variable names and their (possibly hidden or modified) values.\n// If sendVariableValues is {all: bool}, {none: bool} or {exceptNames: Array}, the option will act similarly to\n// to the to-be-deprecated options.privateVariables, except that the redacted variable\n// names will still be visible in the UI even if the values are hidden.\n// If sendVariableValues is null or undefined, we default to the {none: true} case.\nexport function makeTraceDetails(\n  variables: Record<string, any>,\n  sendVariableValues?: VariableValueOptions,\n  operationString?: string,\n): Trace.Details {\n  const details = new Trace.Details();\n  const variablesToRecord = (() => {\n    if (sendVariableValues && 'transform' in sendVariableValues) {\n      const originalKeys = Object.keys(variables);\n      try {\n        // Custom function to allow user to specify what variablesJson will look like\n        const modifiedVariables = sendVariableValues.transform({\n          variables: variables,\n          operationString: operationString,\n        });\n        return cleanModifiedVariables(originalKeys, modifiedVariables);\n      } catch (e) {\n        // If the custom function provided by the user throws an exception,\n        // change all the variable values to an appropriate error message.\n        return handleVariableValueTransformError(originalKeys);\n      }\n    } else {\n      return variables;\n    }\n  })();\n\n  // Note: we explicitly do *not* include the details.rawQuery field. The\n  // Studio web app currently does nothing with this other than store it in\n  // the database and offer it up via its GraphQL API, and sending it means\n  // that using calculateSignature to hide sensitive data in the query\n  // string is ineffective.\n  Object.keys(variablesToRecord).forEach((name) => {\n    if (\n      !sendVariableValues ||\n      ('none' in sendVariableValues && sendVariableValues.none) ||\n      ('all' in sendVariableValues && !sendVariableValues.all) ||\n      ('exceptNames' in sendVariableValues &&\n        // We assume that most users will have only a few variables values to hide,\n        // or will just set {none: true}; we can change this\n        // linear-time operation if it causes real performance issues.\n        sendVariableValues.exceptNames.includes(name)) ||\n      ('onlyNames' in sendVariableValues &&\n        !sendVariableValues.onlyNames.includes(name))\n    ) {\n      // Special case for private variables. Note that this is a different\n      // representation from a variable containing the empty string, as that\n      // will be sent as '\"\"'.\n      details.variablesJson![name] = '';\n    } else {\n      try {\n        details.variablesJson![name] =\n          typeof variablesToRecord[name] === 'undefined'\n            ? ''\n            : JSON.stringify(variablesToRecord[name]);\n      } catch (e) {\n        details.variablesJson![name] = JSON.stringify(\n          '[Unable to convert value to JSON]',\n        );\n      }\n    }\n  });\n  return details;\n}\n\nfunction handleVariableValueTransformError(\n  variableNames: string[],\n): Record<string, any> {\n  const modifiedVariables = Object.create(null);\n  variableNames.forEach((name) => {\n    modifiedVariables[name] = '[PREDICATE_FUNCTION_ERROR]';\n  });\n  return modifiedVariables;\n}\n\n// Helper for makeTraceDetails() to enforce that the keys of a modified 'variables'\n// matches that of the original 'variables'\nfunction cleanModifiedVariables(\n  originalKeys: Array<string>,\n  modifiedVariables: Record<string, any>,\n): Record<string, any> {\n  const cleanedVariables: Record<string, any> = Object.create(null);\n  originalKeys.forEach((name) => {\n    cleanedVariables[name] = modifiedVariables[name];\n  });\n  return cleanedVariables;\n}\n", "export const packageVersion = \"4.12.2\";\n", "import {\n  type GraphQLSchema,\n  isObjectType,\n  isScalarType,\n  isNonNullType,\n} from 'graphql';\n\n// Returns true if it appears that the schema was appears to be of a subgraph\n// (eg, returned from @apollo/subgraph's buildSubgraphSchema). This strategy\n// avoids depending explicitly on @apollo/subgraph or relying on something that\n// might not survive transformations like monkey-patching a boolean field onto\n// the schema.\n//\n// This is used for two things:\n// 1) Determining whether traces should be added to responses if requested with\n//    an HTTP header. If you want to include these traces even for non-subgraphs\n//    (when requested via header, eg for Apollo Explorer's trace view) you can\n//    use ApolloServerPluginInlineTrace explicitly; if you want to never include\n//    these traces even for subgraphs you can use\n//    ApolloServerPluginInlineTraceDisabled.\n// 2) Determining whether schema-reporting should be allowed; subgraphs cannot\n//    report schemas, and we accordingly throw if it's attempted.\nexport function schemaIsSubgraph(schema: GraphQLSchema): boolean {\n  const serviceType = schema.getType('_Service');\n  if (!isObjectType(serviceType)) {\n    return false;\n  }\n  const sdlField = serviceType.getFields().sdl;\n  if (!sdlField) {\n    return false;\n  }\n\n  let sdlFieldType = sdlField.type;\n  if (isNonNullType(sdlFieldType)) {\n    sdlFieldType = sdlFieldType.ofType;\n  }\n  if (!isScalarType(sdlFieldType)) {\n    return false;\n  }\n  return sdlFieldType.name == 'String';\n}\n", "import { Report, ReportHeader, Trace } from '@apollo/usage-reporting-protobuf';\nimport type { Fetcher, FetcherResponse } from '@apollo/utils.fetcher';\nimport {\n  usageReportingSignature,\n  calculateReferencedFieldsByType,\n  type ReferencedFieldsByType,\n} from '@apollo/utils.usagereporting';\nimport retry from 'async-retry';\nimport { type GraphQLSchema, printSchema } from 'graphql';\nimport type LRUCache from 'lru-cache';\nimport { AbortController } from 'node-abort-controller';\nimport fetch from 'node-fetch';\nimport os from 'os';\nimport { gzip } from 'zlib';\nimport type {\n  ApolloServerPlugin,\n  BaseContext,\n  GraphQLRequestContext,\n  GraphQLRequestContextDidResolveOperation,\n  GraphQLRequestContextWillSendResponse,\n  GraphQLRequestListener,\n  GraphQLServerListener,\n} from '../../externalTypes/index.js';\nimport { internalPlugin } from '../../internalPlugin.js';\nimport { dateToProtoTimestamp, TraceTreeBuilder } from '../traceTreeBuilder.js';\nimport { defaultSendOperationsAsTrace } from './defaultSendOperationsAsTrace.js';\nimport {\n  createOperationDerivedDataCache,\n  type OperationDerivedData,\n  operationDerivedDataCacheKey,\n} from './operationDerivedDataCache.js';\nimport type {\n  ApolloServerPluginUsageReportingOptions,\n  SendValuesBaseOptions,\n} from './options.js';\nimport { OurReport } from './stats.js';\nimport { makeTraceDetails } from './traceDetails.js';\nimport { packageVersion } from '../../generated/packageVersion.js';\nimport { computeCoreSchemaHash } from '../../utils/computeCoreSchemaHash.js';\nimport type { HeaderMap } from '../../utils/HeaderMap.js';\nimport { schemaIsSubgraph } from '../schemaIsSubgraph.js';\n\nconst reportHeaderDefaults = {\n  hostname: os.hostname(),\n  agentVersion: `@apollo/server@${packageVersion}`,\n  runtimeVersion: `node ${process.version}`,\n  // XXX not actually uname, but what node has easily.\n  uname: `${os.platform()}, ${os.type()}, ${os.release()}, ${os.arch()})`,\n};\n\nexport function ApolloServerPluginUsageReporting<TContext extends BaseContext>(\n  options: ApolloServerPluginUsageReportingOptions<TContext> = Object.create(\n    null,\n  ),\n): ApolloServerPlugin<TContext> {\n  // Note: We'd like to change the default to false in Apollo Server 4, so that\n  // the default usage reporting experience doesn't include *anything* that\n  // could potentially be PII (like error messages) --- just operations and\n  // numbers.\n  const fieldLevelInstrumentationOption = options.fieldLevelInstrumentation;\n  const fieldLevelInstrumentation =\n    typeof fieldLevelInstrumentationOption === 'number'\n      ? async () =>\n          Math.random() < fieldLevelInstrumentationOption\n            ? 1 / fieldLevelInstrumentationOption\n            : 0\n      : fieldLevelInstrumentationOption\n        ? fieldLevelInstrumentationOption\n        : async () => true;\n\n  let requestDidStartHandler:\n    | ((\n        requestContext: GraphQLRequestContext<TContext>,\n      ) => GraphQLRequestListener<TContext>)\n    | null = null;\n  return internalPlugin({\n    __internal_plugin_id__: 'UsageReporting',\n    __is_disabled_plugin__: false,\n\n    // We want to be able to access locals from `serverWillStart` in our `requestDidStart`, thus\n    // this little hack. (Perhaps we should also allow GraphQLServerListener to contain\n    // a requestDidStart?)\n    async requestDidStart(requestContext: GraphQLRequestContext<TContext>) {\n      if (requestDidStartHandler) {\n        return requestDidStartHandler(requestContext);\n      }\n      // This happens if usage reporting is disabled (eg because this is a\n      // subgraph).\n      return {};\n    },\n\n    async serverWillStart({\n      logger: serverLogger,\n      apollo,\n      startedInBackground,\n      schema,\n    }): Promise<GraphQLServerListener> {\n      // Use the plugin-specific logger if one is provided; otherwise the general server one.\n      const logger = options.logger ?? serverLogger;\n      const { key, graphRef } = apollo;\n      if (!(key && graphRef)) {\n        throw new Error(\n          \"You've enabled usage reporting via ApolloServerPluginUsageReporting, \" +\n            'but you also need to provide your Apollo API key and graph ref, via ' +\n            'the APOLLO_KEY/APOLLO_GRAPH_REF environment ' +\n            'variables or via `new ApolloServer({apollo: {key, graphRef})`.',\n        );\n      }\n\n      if (schemaIsSubgraph(schema)) {\n        if (options.__onlyIfSchemaIsNotSubgraph) {\n          logger.warn(\n            'You have specified an Apollo API key and graph ref but this server appears ' +\n              'to be a subgraph. Typically usage reports are sent to Apollo by your Router ' +\n              'or Gateway, not directly from your subgraph; usage reporting is disabled. To ' +\n              'enable usage reporting anyway, explicitly install `ApolloServerPluginUsageReporting`. ' +\n              'To disable this warning, install `ApolloServerPluginUsageReportingDisabled`.',\n          );\n          // This early return means we don't start background timers, don't\n          // register serverDidStart, don't assign requestDidStartHandler, etc.\n          return {};\n        } else {\n          // This is just a warning; usage reporting is still enabled. If it\n          // turns out there are lots of people who really need to have this odd\n          // setup and they don't like the warning, we can provide a new option\n          // to disable the warning (or they can filter in their `logger`).\n          logger.warn(\n            'You have installed `ApolloServerPluginUsageReporting` but this server appears to ' +\n              'be a subgraph. Typically usage reports are sent to Apollo by your Router ' +\n              'or Gateway, not directly from your subgraph. If this was unintentional, remove ' +\n              \"`ApolloServerPluginUsageReporting` from your server's `plugins` array.\",\n          );\n        }\n      }\n\n      logger.info(\n        'Apollo usage reporting starting! See your graph at ' +\n          `https://studio.apollographql.com/graph/${encodeURI(graphRef)}/`,\n      );\n\n      // If sendReportsImmediately is not specified, we default to true if we're running\n      // with the ApolloServer designed for Lambda or similar. That's because these\n      // environments aren't designed around letting us run a background task to\n      // send reports later or hook into container destruction to flush buffered reports.\n      const sendReportsImmediately =\n        options.sendReportsImmediately ?? startedInBackground;\n\n      // Since calculating the signature and referenced fields for usage\n      // reporting is potentially an expensive operation, we'll cache the data\n      // we generate and re-use them for repeated operations for the same\n      // `queryHash`. However, because referenced fields depend on the current\n      // schema, we want to throw it out entirely any time the schema changes.\n      let operationDerivedDataCache: {\n        forSchema: GraphQLSchema;\n        cache: LRUCache<string, OperationDerivedData>;\n      } | null = null;\n\n      // This map maps from executable schema ID (schema hash, basically) to the\n      // report we'll send about it. That's because when we're using a gateway,\n      // the schema can change over time, but each report needs to be about a\n      // single schema. We avoid having this function be a memory leak by\n      // removing values from it when we're in the process of sending reports.\n      // That means we have to be very careful never to pull a Report out of it\n      // and hang on to it for a while before writing to it, because the report\n      // might have gotten sent and discarded in the meantime. So you should\n      // only access the values of this Map via\n      // getReportWhichMustBeUsedImmediately and getAndDeleteReport, and never\n      // hang on to the value returned by getReportWhichMustBeUsedImmediately.\n      const reportByExecutableSchemaId = new Map<string, OurReport>();\n      const getReportWhichMustBeUsedImmediately = (\n        executableSchemaId: string,\n      ): OurReport => {\n        const existing = reportByExecutableSchemaId.get(executableSchemaId);\n        if (existing) {\n          return existing;\n        }\n        const report = new OurReport(\n          new ReportHeader({\n            ...reportHeaderDefaults,\n            executableSchemaId,\n            graphRef,\n          }),\n        );\n        reportByExecutableSchemaId.set(executableSchemaId, report);\n        return report;\n      };\n      const getAndDeleteReport = (\n        executableSchemaId: string,\n      ): OurReport | null => {\n        const report = reportByExecutableSchemaId.get(executableSchemaId);\n        if (report) {\n          reportByExecutableSchemaId.delete(executableSchemaId);\n          return report;\n        }\n        return null;\n      };\n\n      const overriddenExecutableSchemaId = options.overrideReportedSchema\n        ? computeCoreSchemaHash(options.overrideReportedSchema)\n        : undefined;\n\n      let lastSeenExecutableSchemaToId:\n        | {\n            executableSchema: GraphQLSchema;\n            executableSchemaId: string;\n          }\n        | undefined;\n\n      let reportTimer: NodeJS.Timeout | undefined;\n      if (!sendReportsImmediately) {\n        reportTimer = setInterval(\n          () => sendAllReportsAndReportErrors(),\n          options.reportIntervalMs || 10 * 1000,\n        );\n      }\n\n      // We don't send traces if the user set `sendTraces: false`. We also may\n      // set this to false later if the usage-reporting ingress informs us that\n      // this graph does not support viewing traces.\n      let sendTraces = options.sendTraces ?? true;\n      const sendOperationAsTrace =\n        options.experimental_sendOperationAsTrace ??\n        defaultSendOperationsAsTrace();\n\n      let stopped = false;\n\n      function executableSchemaIdForSchema(schema: GraphQLSchema) {\n        if (lastSeenExecutableSchemaToId?.executableSchema === schema) {\n          return lastSeenExecutableSchemaToId.executableSchemaId;\n        }\n        const id = computeCoreSchemaHash(printSchema(schema));\n\n        // We override this variable every time we get a new schema so we cache\n        // the last seen value. It is a single-entry cache.\n        lastSeenExecutableSchemaToId = {\n          executableSchema: schema,\n          executableSchemaId: id,\n        };\n\n        return id;\n      }\n\n      async function sendAllReportsAndReportErrors(): Promise<void> {\n        await Promise.all(\n          [...reportByExecutableSchemaId.keys()].map((executableSchemaId) =>\n            sendReportAndReportErrors(executableSchemaId),\n          ),\n        );\n      }\n\n      async function sendReportAndReportErrors(\n        executableSchemaId: string,\n      ): Promise<void> {\n        return sendReport(executableSchemaId).catch((err) => {\n          // This catch block is primarily intended to catch network errors from\n          // the retried request itself, which include network errors and non-2xx\n          // HTTP errors.\n          if (options.reportErrorFunction) {\n            options.reportErrorFunction(err);\n          } else {\n            logger.error(err.message);\n          }\n        });\n      }\n\n      // Needs to be an arrow function to be confident that key is defined.\n      const sendReport = async (executableSchemaId: string): Promise<void> => {\n        let report = getAndDeleteReport(executableSchemaId);\n        if (\n          !report ||\n          (Object.keys(report.tracesPerQuery).length === 0 &&\n            report.operationCount === 0)\n        ) {\n          return;\n        }\n\n        // Set the report's overall end time. This is the timestamp that will be\n        // associated with the summarized statistics.\n        report.endTime = dateToProtoTimestamp(new Date());\n\n        report.ensureCountsAreIntegers();\n\n        const protobufError = Report.verify(report);\n        if (protobufError) {\n          throw new Error(`Error verifying report: ${protobufError}`);\n        }\n        let message: Uint8Array | null = Report.encode(report).finish();\n        // Let the original protobuf object be garbage collected (helpful if the\n        // HTTP request hangs).\n        report = null;\n\n        // Potential follow-up: we can compare message.length to\n        // report.sizeEstimator.bytes and use it to \"learn\" if our estimation is\n        // off and adjust it based on what we learn.\n\n        if (options.debugPrintReports) {\n          // We decode the report rather than printing the original `report`\n          // so that it includes all of the pre-encoded traces.\n          const decodedReport = Report.decode(message);\n          logger.info(\n            `Apollo usage report: ${JSON.stringify(decodedReport.toJSON())}`,\n          );\n        }\n\n        const compressed = await new Promise<Buffer>((resolve, reject) => {\n          gzip(message!, (error, result) => {\n            error ? reject(error) : resolve(result);\n          });\n        });\n        // Let the uncompressed message be garbage collected (helpful if the\n        // HTTP request is slow).\n        message = null;\n\n        // Wrap fetcher with async-retry for automatic retrying\n        const fetcher: Fetcher = options.fetcher ?? fetch;\n        const response: FetcherResponse = await retry(\n          // Retry on network errors and 5xx HTTP\n          // responses.\n          async () => {\n            // Note that once we require Node v16 we can use its global\n            // AbortController instead of the one from `node-abort-controller`.\n            const controller = new AbortController();\n            const abortTimeout = setTimeout(() => {\n              controller.abort();\n            }, options.requestTimeoutMs ?? 30_000);\n            let curResponse;\n            try {\n              curResponse = await fetcher(\n                (options.endpointUrl ||\n                  'https://usage-reporting.api.apollographql.com') +\n                  '/api/ingress/traces',\n                {\n                  method: 'POST',\n                  headers: {\n                    'user-agent': 'ApolloServerPluginUsageReporting',\n                    'x-api-key': key,\n                    'content-encoding': 'gzip',\n                    accept: 'application/json',\n                  },\n                  body: compressed,\n                  signal: controller.signal,\n                },\n              );\n            } finally {\n              clearTimeout(abortTimeout);\n            }\n\n            if (curResponse.status >= 500 && curResponse.status < 600) {\n              throw new Error(\n                `HTTP status ${curResponse.status}, ${\n                  (await curResponse.text()) || '(no body)'\n                }`,\n              );\n            } else {\n              return curResponse;\n            }\n          },\n          {\n            retries: (options.maxAttempts || 5) - 1,\n            minTimeout: options.minimumRetryDelayMs || 100,\n            factor: 2,\n          },\n        ).catch((err: Error) => {\n          throw new Error(\n            `Error sending report to Apollo servers: ${err.message}`,\n          );\n        });\n\n        if (response.status < 200 || response.status >= 300) {\n          // Note that we don't expect to see a 3xx here because request follows\n          // redirects.\n          throw new Error(\n            `Error sending report to Apollo servers: HTTP status ${\n              response.status\n            }, ${(await response.text()) || '(no body)'}`,\n          );\n        }\n\n        if (\n          sendTraces &&\n          response.status === 200 &&\n          response.headers\n            .get('content-type')\n            ?.match(/^\\s*application\\/json\\s*(?:;|$)/i)\n        ) {\n          const body = await response.text();\n          let parsedBody;\n          try {\n            parsedBody = JSON.parse(body);\n          } catch (e) {\n            throw new Error(`Error parsing response from Apollo servers: ${e}`);\n          }\n          if (parsedBody.tracesIgnored === true) {\n            logger.debug(\n              \"This graph's organization does not have access to traces; sending all \" +\n                'subsequent operations as stats.',\n            );\n            sendTraces = false;\n          }\n        }\n        if (options.debugPrintReports) {\n          logger.info(`Apollo usage report: status ${response.status}`);\n        }\n      };\n\n      requestDidStartHandler = ({\n        metrics,\n        schema,\n        request: { http, variables },\n      }): GraphQLRequestListener<TContext> => {\n        const treeBuilder: TraceTreeBuilder = new TraceTreeBuilder({\n          maskedBy: 'ApolloServerPluginUsageReporting',\n          sendErrors: options.sendErrors,\n        });\n        treeBuilder.startTiming();\n        metrics.startHrTime = treeBuilder.startHrTime;\n        let graphqlValidationFailure = false;\n        let graphqlUnknownOperationName = false;\n        let includeOperationInUsageReporting: boolean | null = null;\n\n        if (http) {\n          treeBuilder.trace.http = new Trace.HTTP({\n            method:\n              Trace.HTTP.Method[\n                http.method as keyof typeof Trace.HTTP.Method\n              ] || Trace.HTTP.Method.UNKNOWN,\n          });\n\n          if (options.sendHeaders) {\n            makeHTTPRequestHeaders(\n              treeBuilder.trace.http,\n              http.headers,\n              options.sendHeaders,\n            );\n          }\n        }\n\n        // After this function completes, includeOperationInUsageReporting is\n        // defined.\n        async function maybeCallIncludeRequestHook(\n          requestContext:\n            | GraphQLRequestContextDidResolveOperation<TContext>\n            | GraphQLRequestContextWillSendResponse<TContext>,\n        ): Promise<void> {\n          // If this is the second call in `willSendResponse` after\n          // `didResolveOperation`, we're done.\n          if (includeOperationInUsageReporting !== null) return;\n\n          if (typeof options.includeRequest !== 'function') {\n            // Default case we always report\n            includeOperationInUsageReporting = true;\n            return;\n          }\n          includeOperationInUsageReporting =\n            await options.includeRequest(requestContext);\n\n          // Help the user understand they've returned an unexpected value,\n          // which might be a subtle mistake.\n          if (typeof includeOperationInUsageReporting !== 'boolean') {\n            logger.warn(\n              \"The 'includeRequest' async predicate function must return a boolean value.\",\n            );\n            includeOperationInUsageReporting = true;\n          }\n        }\n\n        // Our usage reporting groups everything by operation, so we don't\n        // actually report about any issues that prevent us from getting an\n        // operation string (eg, a missing operation, or APQ problems).\n        // This is effectively bypassing the reporting of:\n        //   - PersistedQueryNotFoundError\n        //   - PersistedQueryNotSupportedError\n        //   - Missing `query` error\n        // We may want to report them some other way later!\n        let didResolveSource = false;\n\n        return {\n          async didResolveSource(requestContext) {\n            didResolveSource = true;\n\n            if (metrics.persistedQueryHit) {\n              treeBuilder.trace.persistedQueryHit = true;\n            }\n            if (metrics.persistedQueryRegister) {\n              treeBuilder.trace.persistedQueryRegister = true;\n            }\n\n            if (variables) {\n              treeBuilder.trace.details = makeTraceDetails(\n                variables,\n                options.sendVariableValues,\n                requestContext.source,\n              );\n            }\n\n            const clientInfo = (\n              options.generateClientInfo || defaultGenerateClientInfo\n            )(requestContext);\n            if (clientInfo) {\n              // While there is a clientAddress protobuf field, the backend\n              // doesn't pay attention to it yet, so we'll ignore it for now.\n              const { clientName, clientVersion } = clientInfo;\n              treeBuilder.trace.clientVersion = clientVersion || '';\n              treeBuilder.trace.clientName = clientName || '';\n            }\n          },\n          async validationDidStart() {\n            return async (validationErrors?: ReadonlyArray<Error>) => {\n              graphqlValidationFailure = validationErrors\n                ? validationErrors.length !== 0\n                : false;\n            };\n          },\n          async didResolveOperation(requestContext) {\n            // If operation is undefined then `getOperationAST` returned null\n            // and an unknown operation was specified.\n            graphqlUnknownOperationName =\n              requestContext.operation === undefined;\n            await maybeCallIncludeRequestHook(requestContext);\n\n            if (\n              includeOperationInUsageReporting &&\n              // No need to capture traces if the operation is going to\n              // immediately fail due to unknown operation name.\n              !graphqlUnknownOperationName\n            ) {\n              if (metrics.captureTraces === undefined) {\n                // We're not completely ignoring the operation. But should we\n                // calculate a detailed trace of every field while we do so (either\n                // directly in this plugin, or in a subgraph by sending the\n                // apollo-federation-include-trace header)? That will allow this\n                // operation to contribute to the \"field executions\" column in the\n                // Studio Fields page, to the timing hints in Explorer and\n                // vscode-graphql, and to the traces visible under Operations. (Note\n                // that `true` here does not imply that this operation will\n                // necessarily be *sent* to the usage-reporting endpoint in the form\n                // of a trace --- it still might be aggregated into stats first. But\n                // capturing a trace will mean we can understand exactly what fields\n                // were executed and what their performance was, at the tradeoff of\n                // some overhead for tracking the trace (and transmitting it between\n                // subgraph and gateway).\n                const rawWeight =\n                  await fieldLevelInstrumentation(requestContext);\n                treeBuilder.trace.fieldExecutionWeight =\n                  typeof rawWeight === 'number' ? rawWeight : rawWeight ? 1 : 0;\n\n                metrics.captureTraces =\n                  !!treeBuilder.trace.fieldExecutionWeight;\n              }\n            }\n          },\n          async executionDidStart() {\n            // If we're not capturing traces, don't return a willResolveField so\n            // that we don't build up a detailed trace inside treeBuilder. (We still\n            // will use treeBuilder as a convenient place to put top-level facts\n            // about the operation which can end up aggregated as stats, and we do\n            // eventually put *errors* onto the trace tree.)\n            if (!metrics.captureTraces) return;\n\n            return {\n              willResolveField({ info }) {\n                return treeBuilder.willResolveField(info);\n                // We could save the error into the trace during the end handler, but\n                // it won't have all the information that graphql-js adds to it later,\n                // like 'locations'.\n              },\n            };\n          },\n\n          async didEncounterSubsequentErrors(_requestContext, errors) {\n            treeBuilder.didEncounterErrors(errors);\n          },\n\n          async willSendSubsequentPayload(requestContext, payload) {\n            if (!payload.hasNext) {\n              await operationFinished(requestContext);\n            }\n          },\n\n          async willSendResponse(requestContext) {\n            // Search above for a comment about \"didResolveSource\" to see which\n            // of the pre-source-resolution errors we are intentionally avoiding.\n            if (!didResolveSource) return;\n            if (requestContext.errors) {\n              treeBuilder.didEncounterErrors(requestContext.errors);\n            }\n\n            // If there isn't any defer/stream coming later, we're done.\n            // Otherwise willSendSubsequentPayload will trigger\n            // operationFinished.\n            if (requestContext.response.body.kind === 'single') {\n              await operationFinished(requestContext);\n            }\n          },\n        };\n\n        async function operationFinished(\n          requestContext: GraphQLRequestContextWillSendResponse<TContext>,\n        ) {\n          const resolvedOperation = !!requestContext.operation;\n\n          // If we got an error before we called didResolveOperation (eg parse or\n          // validation error), check to see if we should include the request.\n          await maybeCallIncludeRequestHook(requestContext);\n\n          treeBuilder.stopTiming();\n          const executableSchemaId =\n            overriddenExecutableSchemaId ?? executableSchemaIdForSchema(schema);\n\n          if (includeOperationInUsageReporting === false) {\n            if (resolvedOperation) {\n              getReportWhichMustBeUsedImmediately(executableSchemaId)\n                .operationCount++;\n            }\n            return;\n          }\n\n          treeBuilder.trace.fullQueryCacheHit = !!metrics.responseCacheHit;\n          treeBuilder.trace.forbiddenOperation = !!metrics.forbiddenOperation;\n          treeBuilder.trace.registeredOperation = !!metrics.registeredOperation;\n\n          const policyIfCacheable =\n            requestContext.overallCachePolicy.policyIfCacheable();\n          if (policyIfCacheable) {\n            treeBuilder.trace.cachePolicy = new Trace.CachePolicy({\n              scope:\n                policyIfCacheable.scope === 'PRIVATE'\n                  ? Trace.CachePolicy.Scope.PRIVATE\n                  : policyIfCacheable.scope === 'PUBLIC'\n                    ? Trace.CachePolicy.Scope.PUBLIC\n                    : Trace.CachePolicy.Scope.UNKNOWN,\n              // Convert from seconds to ns.\n              maxAgeNs: policyIfCacheable.maxAge * 1e9,\n            });\n          }\n\n          // If this was a federated operation and we're the gateway, add the query plan\n          // to the trace.\n          if (metrics.queryPlanTrace) {\n            treeBuilder.trace.queryPlan = metrics.queryPlanTrace;\n          }\n\n          // Intentionally un-awaited so as not to block the response.  Any\n          // errors will be logged, but will not manifest a user-facing error.\n          // The logger in this case is a request specific logger OR the logger\n          // defined by the plugin if that's unavailable.  The request-specific\n          // logger is preferred since this is very much coupled directly to a\n          // client-triggered action which might be more granularly tagged by\n          // logging implementations.\n          addTrace().catch(logger.error);\n\n          async function addTrace(): Promise<void> {\n            // Ignore traces that come in after stop().\n            if (stopped) {\n              return;\n            }\n\n            // Ensure that the caller of addTrace (which does not await it) is\n            // not blocked. We use setImmediate rather than process.nextTick or\n            // just relying on the Promise microtask queue because setImmediate\n            // comes after IO, which is what we want.\n            await new Promise((res) => setImmediate(res));\n\n            const executableSchemaId =\n              overriddenExecutableSchemaId ??\n              executableSchemaIdForSchema(schema);\n\n            const { trace } = treeBuilder;\n\n            let statsReportKey: string | undefined = undefined;\n            let referencedFieldsByType: ReferencedFieldsByType;\n            if (!requestContext.document) {\n              statsReportKey = `## GraphQLParseFailure\\n`;\n            } else if (graphqlValidationFailure) {\n              statsReportKey = `## GraphQLValidationFailure\\n`;\n            } else if (graphqlUnknownOperationName) {\n              statsReportKey = `## GraphQLUnknownOperationName\\n`;\n            }\n\n            const isExecutable = statsReportKey === undefined;\n\n            if (statsReportKey) {\n              if (options.sendUnexecutableOperationDocuments) {\n                trace.unexecutedOperationBody = requestContext.source;\n                // Get the operation name from the request (which might not\n                // correspond to an actual operation).\n                trace.unexecutedOperationName =\n                  requestContext.request.operationName || '';\n              }\n              referencedFieldsByType = Object.create(null);\n            } else {\n              const operationDerivedData = getOperationDerivedData();\n              statsReportKey = `# ${requestContext.operationName || '-'}\\n${\n                operationDerivedData.signature\n              }`;\n              referencedFieldsByType =\n                operationDerivedData.referencedFieldsByType;\n            }\n\n            const protobufError = Trace.verify(trace);\n            if (protobufError) {\n              throw new Error(`Error encoding trace: ${protobufError}`);\n            }\n\n            if (resolvedOperation) {\n              getReportWhichMustBeUsedImmediately(executableSchemaId)\n                .operationCount++;\n            }\n\n            getReportWhichMustBeUsedImmediately(executableSchemaId).addTrace({\n              statsReportKey,\n              trace,\n              // We include the operation as a trace (rather than aggregated into stats) only if:\n              // * the user didn't set `sendTraces: false` AND\n              // * it's possible that the organization's plan allows for viewing traces AND\n              // * we captured this as a full trace AND\n              // * gateway reported no errors missing ftv1 data AND\n              // * sendOperationAsTrace says so\n              //\n              // (As an edge case, if the reason metrics.captureTraces is\n              // falsey is that this is an unexecutable operation and thus we\n              // never ran the code in didResolveOperation that sets\n              // metrics.captureTrace, we allow it to be sent as a trace. This\n              // means we'll still send some parse and validation failures as\n              // traces, for the sake of the Errors page.)\n              asTrace:\n                sendTraces &&\n                (!isExecutable || !!metrics.captureTraces) &&\n                !metrics.nonFtv1ErrorPaths?.length &&\n                sendOperationAsTrace(trace, statsReportKey),\n              referencedFieldsByType,\n              nonFtv1ErrorPaths: metrics.nonFtv1ErrorPaths ?? [],\n            });\n\n            // If the buffer gets big (according to our estimate), send.\n            if (\n              sendReportsImmediately ||\n              getReportWhichMustBeUsedImmediately(executableSchemaId)\n                .sizeEstimator.bytes >=\n                (options.maxUncompressedReportSize || 4 * 1024 * 1024)\n            ) {\n              await sendReportAndReportErrors(executableSchemaId);\n            }\n          }\n\n          // Calculates signature and referenced fields for the current document.\n          // Only call this when the document properly parses and validates and\n          // the given operation name (if any) is known!\n          function getOperationDerivedData(): OperationDerivedData {\n            if (!requestContext.document) {\n              // This shouldn't happen: no document means parse failure, which\n              // uses its own special statsReportKey.\n              throw new Error('No document?');\n            }\n\n            const cacheKey = operationDerivedDataCacheKey(\n              requestContext.queryHash,\n              requestContext.operationName || '',\n            );\n\n            // Ensure that the cache we have is for the right schema.\n            if (\n              !operationDerivedDataCache ||\n              operationDerivedDataCache.forSchema !== schema\n            ) {\n              operationDerivedDataCache = {\n                forSchema: schema,\n                cache: createOperationDerivedDataCache({ logger }),\n              };\n            }\n\n            // If we didn't have the signature in the cache, we'll resort to\n            // calculating it.\n            const cachedOperationDerivedData =\n              operationDerivedDataCache.cache.get(cacheKey);\n            if (cachedOperationDerivedData) {\n              return cachedOperationDerivedData;\n            }\n\n            const generatedSignature = (\n              options.calculateSignature || usageReportingSignature\n            )(requestContext.document, requestContext.operationName || '');\n\n            const generatedOperationDerivedData: OperationDerivedData = {\n              signature: generatedSignature,\n              referencedFieldsByType: calculateReferencedFieldsByType({\n                document: requestContext.document,\n                schema,\n                resolvedOperationName: requestContext.operationName ?? null,\n              }),\n            };\n\n            // Note that this cache is always an in-memory cache.\n            // If we replace it with a more generic async cache, we should\n            // not await the write operation.\n            operationDerivedDataCache.cache.set(\n              cacheKey,\n              generatedOperationDerivedData,\n            );\n            return generatedOperationDerivedData;\n          }\n        }\n      };\n\n      return {\n        async serverWillStop() {\n          if (reportTimer) {\n            clearInterval(reportTimer);\n            reportTimer = undefined;\n          }\n\n          stopped = true;\n          await sendAllReportsAndReportErrors();\n        },\n      };\n    },\n  });\n}\n\nexport function makeHTTPRequestHeaders(\n  http: Trace.IHTTP,\n  headers: HeaderMap,\n  sendHeaders?: SendValuesBaseOptions,\n): void {\n  if (\n    !sendHeaders ||\n    ('none' in sendHeaders && sendHeaders.none) ||\n    ('all' in sendHeaders && !sendHeaders.all)\n  ) {\n    return;\n  }\n  for (const [key, value] of headers) {\n    // Note that HeaderMap keys are already lower-case.\n    if (\n      ('exceptNames' in sendHeaders &&\n        // We assume that most users only have a few headers to hide, or will\n        // just set {none: true} ; we can change this linear-time\n        // operation if it causes real performance issues.\n        sendHeaders.exceptNames.some((exceptHeader) => {\n          // Headers are case-insensitive, and should be compared as such.\n          return exceptHeader.toLowerCase() === key;\n        })) ||\n      ('onlyNames' in sendHeaders &&\n        !sendHeaders.onlyNames.some((header) => {\n          return header.toLowerCase() === key;\n        }))\n    ) {\n      continue;\n    }\n\n    switch (key) {\n      case 'authorization':\n      case 'cookie':\n      case 'set-cookie':\n        break;\n      default:\n        http!.requestHeaders![key] = new Trace.HTTP.Values({\n          value: [value],\n        });\n    }\n  }\n}\n\nfunction defaultGenerateClientInfo<TContext extends BaseContext>({\n  request,\n}: GraphQLRequestContext<TContext>) {\n  const clientNameHeaderKey = 'apollographql-client-name';\n  const clientVersionHeaderKey = 'apollographql-client-version';\n\n  // Default to using the `apollo-client-x` header fields if present.\n  // If none are present, fallback on the `clientInfo` query extension\n  // for backwards compatibility.\n  // The default value if neither header values nor query extension is\n  // set is the empty String for all fields (as per protobuf defaults)\n  if (\n    request.http?.headers?.get(clientNameHeaderKey) ||\n    request.http?.headers?.get(clientVersionHeaderKey)\n  ) {\n    return {\n      clientName: request.http?.headers?.get(clientNameHeaderKey),\n      clientVersion: request.http?.headers?.get(clientVersionHeaderKey),\n    };\n  } else if (request.extensions?.clientInfo) {\n    return request.extensions.clientInfo;\n  } else {\n    return {};\n  }\n}\n", "export { ApolloServerPluginUsageReporting } from './plugin.js';\nexport type {\n  ApolloServerPluginUsageReportingOptions,\n  SendValuesBaseOptions,\n  VariableValueOptions,\n  SendErrorsOptions,\n  ClientInfo,\n  GenerateClientInfo,\n} from './options.js';\n", "import fetch from 'node-fetch';\nimport type { GraphQLRequest } from '../../externalTypes/index.js';\nimport type { Logger } from '@apollo/utils.logger';\nimport type {\n  SchemaReport,\n  SchemaReportMutationVariables,\n  SchemaReportMutation,\n  ReportSchemaResponse,\n} from './generated/operations';\nimport type { Fetcher } from '@apollo/utils.fetcher';\nimport { packageVersion } from '../../generated/packageVersion.js';\n\n// Magic GraphQL comment allows codegen to find the query\n// prettier-ignore\nexport const schemaReportGql = /* GraphQL */ `#graphql\n  mutation SchemaReport($report: SchemaReport!, $coreSchema: String) {\n    reportSchema(report: $report, coreSchema: $coreSchema) {\n      __typename\n      ... on ReportSchemaError {\n        message\n        code\n      }\n      ... on ReportSchemaResponse {\n        inSeconds\n        withCoreSchema\n      }\n    }\n  }\n`;\n\n// This class is meant to be a thin shim around the gql mutations.\nexport class SchemaReporter {\n  // These mirror the gql variables\n  private readonly schemaReport: SchemaReport;\n  private readonly coreSchema: string;\n  private readonly endpointUrl: string;\n  private readonly logger: Logger;\n  private readonly initialReportingDelayInMs: number;\n  private readonly fallbackReportingDelayInMs: number;\n  private readonly fetcher: Fetcher;\n\n  private isStopped: boolean;\n  private pollTimer?: NodeJS.Timeout;\n  private readonly headers: Record<string, string>;\n\n  constructor(options: {\n    schemaReport: SchemaReport;\n    coreSchema: string;\n    apiKey: string;\n    endpointUrl: string | undefined;\n    logger: Logger;\n    initialReportingDelayInMs: number;\n    fallbackReportingDelayInMs: number;\n    fetcher?: Fetcher;\n  }) {\n    this.headers = {\n      'Content-Type': 'application/json',\n      'x-api-key': options.apiKey,\n      'apollographql-client-name': 'ApolloServerPluginSchemaReporting',\n      'apollographql-client-version': packageVersion,\n    };\n\n    this.endpointUrl =\n      options.endpointUrl ||\n      'https://schema-reporting.api.apollographql.com/api/graphql';\n\n    this.schemaReport = options.schemaReport;\n    this.coreSchema = options.coreSchema;\n    this.isStopped = false;\n    this.logger = options.logger;\n    this.initialReportingDelayInMs = options.initialReportingDelayInMs;\n    this.fallbackReportingDelayInMs = options.fallbackReportingDelayInMs;\n    this.fetcher = options.fetcher ?? fetch;\n  }\n\n  public stopped(): boolean {\n    return this.isStopped;\n  }\n\n  public start() {\n    this.pollTimer = setTimeout(\n      () => this.sendOneReportAndScheduleNext(false),\n      this.initialReportingDelayInMs,\n    );\n  }\n\n  public stop() {\n    this.isStopped = true;\n    if (this.pollTimer) {\n      clearTimeout(this.pollTimer);\n      this.pollTimer = undefined;\n    }\n  }\n\n  private async sendOneReportAndScheduleNext(sendNextWithCoreSchema: boolean) {\n    this.pollTimer = undefined;\n\n    // Bail out permanently\n    if (this.stopped()) return;\n    try {\n      const result = await this.reportSchema(sendNextWithCoreSchema);\n      if (!result) {\n        return;\n      }\n      if (!this.stopped()) {\n        this.pollTimer = setTimeout(\n          () => this.sendOneReportAndScheduleNext(result.withCoreSchema),\n          result.inSeconds * 1000,\n        );\n      }\n      return;\n    } catch (error) {\n      // In the case of an error we want to continue looping\n      // We can add hardcoded backoff in the future,\n      // or on repeated failures stop responding reporting.\n      this.logger.error(\n        `Error reporting server info to Apollo during schema reporting: ${error}`,\n      );\n      if (!this.stopped()) {\n        this.pollTimer = setTimeout(\n          () => this.sendOneReportAndScheduleNext(false),\n          this.fallbackReportingDelayInMs,\n        );\n      }\n    }\n  }\n\n  public async reportSchema(\n    withCoreSchema: boolean,\n  ): Promise<ReportSchemaResponse | null> {\n    const { data, errors } = await this.apolloQuery({\n      report: this.schemaReport,\n      coreSchema: withCoreSchema ? this.coreSchema : null,\n    });\n\n    if (errors) {\n      throw new Error(errors.map((x: any) => x.message).join('\\n'));\n    }\n\n    function msgForUnexpectedResponse(data: any): string {\n      return [\n        'Unexpected response shape from Apollo when',\n        'reporting schema. If this continues, please reach',\n        'out to support@apollographql.com.',\n        'Received response:',\n        JSON.stringify(data),\n      ].join(' ');\n    }\n\n    if (!data || !data.reportSchema) {\n      throw new Error(msgForUnexpectedResponse(data));\n    }\n\n    if (data.reportSchema.__typename === 'ReportSchemaResponse') {\n      return data.reportSchema;\n    } else if (data.reportSchema.__typename === 'ReportSchemaError') {\n      this.logger.error(\n        [\n          'Received input validation error from Apollo:',\n          data.reportSchema.message,\n          'Stopping reporting. Please fix the input errors.',\n        ].join(' '),\n      );\n      this.stop();\n      return null;\n    }\n    throw new Error(msgForUnexpectedResponse(data));\n  }\n\n  private async apolloQuery(\n    variables: SchemaReportMutationVariables,\n  ): Promise<{ data?: SchemaReportMutation; errors?: any[] }> {\n    const request: GraphQLRequest = {\n      query: schemaReportGql,\n      variables,\n    };\n\n    const httpResponse = await this.fetcher(this.endpointUrl, {\n      method: 'POST',\n      headers: this.headers,\n      body: JSON.stringify(request),\n    });\n\n    if (!httpResponse.ok) {\n      throw new Error(\n        [\n          `An unexpected HTTP status code (${httpResponse.status}) was`,\n          'encountered during schema reporting.',\n        ].join(' '),\n      );\n    }\n\n    try {\n      // JSON parsing failure due to malformed data is the likely failure case\n      // here.  Any non-JSON response (e.g. HTML) is usually the suspect.\n      return await httpResponse.json();\n    } catch (error) {\n      throw new Error(\n        [\n          \"Couldn't report schema to Apollo.\",\n          'Parsing response as JSON failed.',\n          'If this continues please reach out to support@apollographql.com',\n          error,\n        ].join(' '),\n      );\n    }\n  }\n}\n", "import os from 'os';\nimport { internalPlugin } from '../../internalPlugin.js';\nimport { v4 as uuidv4 } from 'uuid';\nimport { printSchema, validateSchema, buildSchema } from 'graphql';\nimport { SchemaReporter } from './schemaReporter.js';\nimport { schemaIsSubgraph } from '../schemaIsSubgraph.js';\nimport type { SchemaReport } from './generated/operations.js';\nimport type { ApolloServerPlugin } from '../../externalTypes/index.js';\nimport type { Fetcher } from '@apollo/utils.fetcher';\nimport { packageVersion } from '../../generated/packageVersion.js';\nimport { computeCoreSchemaHash } from '../../utils/computeCoreSchemaHash.js';\n\nexport interface ApolloServerPluginSchemaReportingOptions {\n  /**\n   * The schema reporter waits before starting reporting.\n   * By default, the report waits some random amount of time between 0 and 10 seconds.\n   * A longer interval leads to more staggered starts which means it is less likely\n   * multiple servers will get asked to upload the same schema.\n   *\n   * If this server runs in lambda or in other constrained environments it would be useful\n   * to decrease the schema reporting max wait time to be less than default.\n   *\n   * This number will be the max for the range in ms that the schema reporter will\n   * wait before starting to report.\n   */\n  initialDelayMaxMs?: number;\n  /**\n   * Override the reported schema that is reported to the Apollo registry. This\n   * schema does not go through any normalizations and the string is directly\n   * sent to the Apollo registry. This can be useful for comments or other\n   * ordering and whitespace changes that get stripped when generating a\n   * `GraphQLSchema`.\n   *\n   * **If you pass this option to this plugin, you should explicitly configure\n   * `ApolloServerPluginUsageReporting` and pass the same value to its\n   * `overrideReportedSchema` option.** This ensures that the schema ID\n   * associated with requests reported by the usage reporting plugin matches the\n   * schema ID that this plugin reports. For example:\n   *\n   * ```js\n   * new ApolloServer({\n   *   plugins: [\n   *     ApolloServerPluginSchemaReporting({overrideReportedSchema: schema}),\n   *     ApolloServerPluginUsageReporting({overrideReportedSchema: schema}),\n   *   ],\n   * })\n   * ```\n   */\n  overrideReportedSchema?: string;\n  /**\n   * The URL to use for reporting schemas. Primarily for testing and internal\n   * Apollo use.\n   */\n  endpointUrl?: string;\n  /**\n   * Specifies which Fetch API implementation to use when reporting schemas.\n   */\n  fetcher?: Fetcher;\n}\n\nexport function ApolloServerPluginSchemaReporting(\n  {\n    initialDelayMaxMs,\n    overrideReportedSchema,\n    endpointUrl,\n    fetcher,\n  }: ApolloServerPluginSchemaReportingOptions = Object.create(null),\n): ApolloServerPlugin {\n  const bootId = uuidv4();\n\n  return internalPlugin({\n    __internal_plugin_id__: 'SchemaReporting',\n    __is_disabled_plugin__: false,\n    async serverWillStart({ apollo, schema, logger }) {\n      const { key, graphRef } = apollo;\n      if (!key) {\n        throw Error(\n          'To use ApolloServerPluginSchemaReporting, you must provide an Apollo API ' +\n            'key, via the APOLLO_KEY environment variable or via `new ApolloServer({apollo: {key})`',\n        );\n      }\n      if (!graphRef) {\n        // This error is a bit imprecise as you can also specify ID and variant separately,\n        // or rely on API-key parsing (before AS3), but this is \"best practices\".\n        throw Error(\n          'To use ApolloServerPluginSchemaReporting, you must provide your graph ref (eg, ' +\n            \"'my-graph-id@my-graph-variant'). Try setting the APOLLO_GRAPH_REF environment \" +\n            'variable or passing `new ApolloServer({apollo: {graphRef}})`.',\n        );\n      }\n\n      // Ensure a provided override schema can be parsed and validated\n      if (overrideReportedSchema) {\n        try {\n          const validationErrors = validateSchema(\n            buildSchema(overrideReportedSchema, { noLocation: true }),\n          );\n          if (validationErrors.length) {\n            throw new Error(\n              validationErrors.map((error) => error.message).join('\\n'),\n            );\n          }\n        } catch (err) {\n          throw new Error(\n            'The schema provided to overrideReportedSchema failed to parse or ' +\n              `validate: ${(err as Error).message}`,\n          );\n        }\n      }\n\n      if (schemaIsSubgraph(schema)) {\n        throw Error(\n          [\n            'Schema reporting is not yet compatible with Apollo Federation subgraphs.',\n            \"If you're interested in using schema reporting with subgraphs,\",\n            'please contact Apollo support. To set up managed federation, see',\n            'https://go.apollo.dev/s/managed-federation',\n          ].join(' '),\n        );\n      }\n\n      if (endpointUrl !== undefined) {\n        logger.info(\n          `Apollo schema reporting: schema reporting URL override: ${endpointUrl}`,\n        );\n      }\n\n      const baseSchemaReport: Omit<SchemaReport, 'coreSchemaHash'> = {\n        bootId,\n        graphRef,\n        // The infra environment in which this edge server is running, e.g. localhost, Kubernetes\n        // Length must be <= 256 characters.\n        platform: process.env.APOLLO_SERVER_PLATFORM || 'local',\n        runtimeVersion: `node ${process.version}`,\n        // An identifier used to distinguish the version of the server code such as git or docker sha.\n        // Length must be <= 256 characters\n        userVersion: process.env.APOLLO_SERVER_USER_VERSION,\n        // \"An identifier for the server instance. Length must be <= 256 characters.\n        serverId:\n          process.env.APOLLO_SERVER_ID || process.env.HOSTNAME || os.hostname(),\n        libraryVersion: `@apollo/server@${packageVersion}`,\n      };\n      let currentSchemaReporter: SchemaReporter | undefined;\n\n      return {\n        schemaDidLoadOrUpdate({ apiSchema, coreSupergraphSdl }): void {\n          if (overrideReportedSchema !== undefined) {\n            if (currentSchemaReporter) {\n              // When the schema to report has been overridden, there is no need\n              // to create a new schema reporter.\n              return;\n            } else {\n              logger.info(\n                'Apollo schema reporting: schema to report has been overridden',\n              );\n            }\n          }\n\n          const coreSchema =\n            overrideReportedSchema ??\n            coreSupergraphSdl ??\n            printSchema(apiSchema);\n          const coreSchemaHash = computeCoreSchemaHash(coreSchema);\n          const schemaReport: SchemaReport = {\n            ...baseSchemaReport,\n            coreSchemaHash,\n          };\n\n          currentSchemaReporter?.stop();\n          currentSchemaReporter = new SchemaReporter({\n            schemaReport,\n            coreSchema,\n            apiKey: key,\n            endpointUrl,\n            logger,\n            // Jitter the startup between 0 and 10 seconds\n            initialReportingDelayInMs: Math.floor(\n              Math.random() * (initialDelayMaxMs ?? 10_000),\n            ),\n            fallbackReportingDelayInMs: 20_000,\n            fetcher,\n          });\n          currentSchemaReporter.start();\n\n          logger.info(\n            'Apollo schema reporting: reporting a new schema to Studio! See your graph at ' +\n              `https://studio.apollographql.com/graph/${encodeURI(\n                graphRef,\n              )}/ with server info ${JSON.stringify(schemaReport)}`,\n          );\n        },\n        async serverWillStop() {\n          currentSchemaReporter?.stop();\n        },\n      };\n    },\n  });\n}\n", "import { Trace } from '@apollo/usage-reporting-protobuf';\nimport { TraceTreeBuilder } from '../traceTreeBuilder.js';\nimport type { SendErrorsOptions } from '../usageReporting/index.js';\nimport { internalPlugin } from '../../internalPlugin.js';\nimport { schemaIsSubgraph } from '../schemaIsSubgraph.js';\nimport type { ApolloServerPlugin } from '../../externalTypes/index.js';\n\nexport interface ApolloServerPluginInlineTraceOptions {\n  /**\n   * By default, if a trace contains errors, the errors are included in the\n   * trace with the message `<masked>`. The errors are associated with specific\n   * paths in the operation, but do not include the original error message or\n   * any extensions such as the error `code`, as those details may contain your\n   * users' private data. The extension `maskedBy:\n   * 'ApolloServerPluginInlineTrace'` is added.\n   *\n   * If you'd like details about the error included in traces, set this option.\n   * This option can take several forms:\n   *\n   * - { masked: true }: mask error messages and omit extensions (DEFAULT)\n   * - { unmodified: true }: include all error messages and extensions\n   * - { transform: ... }: a custom function for transforming errors. This\n   *   function receives a `GraphQLError` and may return a `GraphQLError`\n   *   (either a new error, or its potentially-modified argument) or `null`.\n   *   This error is used in the trace; if `null`, the error is not included in\n   *   traces or error statistics.\n   */\n  includeErrors?: SendErrorsOptions;\n  /**\n   * This option is for internal use by `@apollo/server` only.\n   *\n   * By default we want to enable this plugin for subgraph schemas only, but we\n   * need to come up with our list of plugins before we have necessarily loaded\n   * the schema. So (unless the user installs this plugin or\n   * ApolloServerPluginInlineTraceDisabled themselves), `@apollo/server` always\n   * installs this plugin and uses this option to make sure traces are only\n   * included if the schema appears to be a subgraph.\n   */\n  __onlyIfSchemaIsSubgraph?: boolean;\n}\n\n// This ftv1 plugin produces a base64'd Trace protobuf containing only the\n// durationNs, startTime, endTime, and root fields.  This output is placed\n// on the `extensions`.`ftv1` property of the response.  The Apollo Gateway\n// utilizes this data to construct the full trace and submit it to Apollo's\n// usage reporting ingress.\nexport function ApolloServerPluginInlineTrace(\n  options: ApolloServerPluginInlineTraceOptions = Object.create(null),\n): ApolloServerPlugin {\n  let enabled: boolean | null = options.__onlyIfSchemaIsSubgraph ? null : true;\n  return internalPlugin({\n    __internal_plugin_id__: 'InlineTrace',\n    __is_disabled_plugin__: false,\n    async serverWillStart({ schema, logger }) {\n      // Handle the case that the plugin was implicitly installed. We only want it\n      // to actually be active if the schema appears to be federated. If you don't\n      // like the log line, just install `ApolloServerPluginInlineTrace()` in\n      // `plugins` yourself.\n      if (enabled === null) {\n        enabled = schemaIsSubgraph(schema);\n        if (enabled) {\n          logger.info(\n            'Enabling inline tracing for this subgraph. To disable, use ' +\n              'ApolloServerPluginInlineTraceDisabled.',\n          );\n        }\n      }\n    },\n    async requestDidStart({ request: { http }, metrics }) {\n      if (!enabled) {\n        return;\n      }\n\n      const treeBuilder = new TraceTreeBuilder({\n        maskedBy: 'ApolloServerPluginInlineTrace',\n        sendErrors: options.includeErrors,\n      });\n\n      // XXX Provide a mechanism to customize this logic.\n      if (http?.headers.get('apollo-federation-include-trace') !== 'ftv1') {\n        return;\n      }\n\n      // If some other (user-written?) plugin already decided that we are not\n      // capturing traces, then we should not capture traces.\n      if (metrics.captureTraces === false) {\n        return;\n      }\n\n      // Note that this will override any `fieldLevelInstrumentation` parameter\n      // to the usage reporting plugin for requests with the\n      // `apollo-federation-include-trace` header set.\n      metrics.captureTraces = true;\n\n      treeBuilder.startTiming();\n\n      return {\n        async executionDidStart() {\n          return {\n            willResolveField({ info }) {\n              return treeBuilder.willResolveField(info);\n            },\n          };\n        },\n\n        async didEncounterErrors({ errors }) {\n          treeBuilder.didEncounterErrors(errors);\n        },\n\n        async willSendResponse({ response }) {\n          // We record the end time at the latest possible time: right before serializing the trace.\n          // If we wait any longer, the time we record won't actually be sent anywhere!\n          treeBuilder.stopTiming();\n\n          // For now, we don't support inline traces on incremental delivery\n          // responses. (We could perhaps place the trace on the final chunk, or\n          // even deliver it bit by bit. For now, since Gateway does not support\n          // incremental delivery and Router does not pass through defers to\n          // subgraphs, this doesn't affect the \"federated tracing\" use case,\n          // though it does affect the ability to look at inline traces in other\n          // tools like Explorer.\n          if (response.body.kind === 'incremental') {\n            return;\n          }\n\n          // If we're in a gateway, include the query plan (and subgraph traces)\n          // in the inline trace. This is designed more for manually querying\n          // your graph while running locally to see what the query planner is\n          // doing rather than for running in production.\n          if (metrics.queryPlanTrace) {\n            treeBuilder.trace.queryPlan = metrics.queryPlanTrace;\n          }\n\n          const encodedUint8Array = Trace.encode(treeBuilder.trace).finish();\n          const encodedBuffer = Buffer.from(\n            encodedUint8Array,\n            encodedUint8Array.byteOffset,\n            encodedUint8Array.byteLength,\n          );\n\n          const extensions =\n            response.body.singleResult.extensions ||\n            (response.body.singleResult.extensions = Object.create(null));\n\n          // This should only happen if another plugin is using the same name-\n          // space within the `extensions` object and got to it before us.\n          if (typeof extensions.ftv1 !== 'undefined') {\n            throw new Error('The `ftv1` extension was already present.');\n          }\n\n          extensions.ftv1 = encodedBuffer.toString('base64');\n        },\n      };\n    },\n  });\n}\n", "import type {\n  ApolloServerPluginEmbeddedLandingPageLocalDefaultOptions,\n  ApolloServerPluginEmbeddedLandingPageProductionDefaultOptions,\n} from './types';\n\n// This function turns an object into a string and replaces\n// <, >, &, ' with their unicode chars to avoid adding html tags to\n// the landing page html that might be passed from the config.\n// The only place these characters can appear in the output of\n// JSON.stringify is within string literals, where they can equally\n// well appear \\u-escaped. This specifically means that\n// `</script>` won't terminate the script block early.\n// (Perhaps we should have done this instead of the triple-encoding\n// of encodeConfig for the main landing page.)\nfunction getConfigStringForHtml(config: object) {\n  return JSON.stringify(config)\n    .replace('<', '\\\\u003c')\n    .replace('>', '\\\\u003e')\n    .replace('&', '\\\\u0026')\n    .replace(\"'\", '\\\\u0027');\n}\n\nexport const getEmbeddedExplorerHTML = (\n  explorerCdnVersion: string,\n  config: ApolloServerPluginEmbeddedLandingPageProductionDefaultOptions,\n  apolloServerVersion: string,\n  nonce: string,\n) => {\n  interface EmbeddableExplorerOptions {\n    graphRef: string;\n    target: string;\n\n    initialState?: {\n      document?: string;\n      variables?: Record<string, any>;\n      headers?: Record<string, string>;\n      collectionId?: string;\n      operationId?: string;\n      displayOptions: {\n        docsPanelState?: 'open' | 'closed'; // default to 'open',\n        showHeadersAndEnvVars?: boolean; // default to `false`\n        theme?: 'dark' | 'light';\n      };\n    };\n    persistExplorerState?: boolean; // defaults to 'false'\n\n    endpointUrl: string;\n\n    includeCookies?: boolean; // defaults to 'false'\n\n    runTelemetry?: boolean;\n\n    allowDynamicStyles?: boolean; // defaults to 'true'\n  }\n  const productionLandingPageEmbedConfigOrDefault = {\n    displayOptions: {},\n    persistExplorerState: false,\n    runTelemetry: true,\n    ...(typeof config.embed === 'boolean' ? {} : config.embed),\n  };\n  const embeddedExplorerParams: Omit<\n    EmbeddableExplorerOptions,\n    'endpointUrl'\n  > & { runtime: string } = {\n    graphRef: config.graphRef,\n    target: '#embeddableExplorer',\n    initialState: {\n      ...('document' in config || 'headers' in config || 'variables' in config\n        ? {\n            document: config.document,\n            headers: config.headers,\n            variables: config.variables,\n          }\n        : {}),\n      ...('collectionId' in config\n        ? {\n            collectionId: config.collectionId,\n            operationId: config.operationId,\n          }\n        : {}),\n      displayOptions: {\n        ...productionLandingPageEmbedConfigOrDefault.displayOptions,\n      },\n    },\n    persistExplorerState:\n      productionLandingPageEmbedConfigOrDefault.persistExplorerState,\n    includeCookies: config.includeCookies,\n    runtime: apolloServerVersion,\n    runTelemetry: productionLandingPageEmbedConfigOrDefault.runTelemetry,\n    allowDynamicStyles: false, // disabled for CSP - we add the iframe styles ourselves instead\n  };\n\n  return `\n<div class=\"fallback\">\n  <h1>Welcome to Apollo Server</h1>\n  <p>Apollo Explorer cannot be loaded; it appears that you might be offline.</p>\n</div>\n<style nonce=${nonce}>\n  iframe {\n    background-color: white;\n    height: 100%;\n    width: 100%;\n    border: none;\n  }\n  #embeddableExplorer {\n    width: 100vw;\n    height: 100vh;\n    position: absolute;\n    top: 0;\n  }\n</style>\n<div id=\"embeddableExplorer\"></div>\n<script nonce=\"${nonce}\" src=\"https://embeddable-explorer.cdn.apollographql.com/${encodeURIComponent(\n    explorerCdnVersion,\n  )}/embeddable-explorer.umd.production.min.js?runtime=${encodeURIComponent(\n    apolloServerVersion,\n  )}\"></script>\n<script nonce=\"${nonce}\">\n  var endpointUrl = window.location.href;\n  var embeddedExplorerConfig = ${getConfigStringForHtml(\n    embeddedExplorerParams,\n  )};\n  new window.EmbeddedExplorer({\n    ...embeddedExplorerConfig,\n    endpointUrl,\n  });\n</script>\n`;\n};\n\nexport const getEmbeddedSandboxHTML = (\n  sandboxCdnVersion: string,\n  config: ApolloServerPluginEmbeddedLandingPageLocalDefaultOptions,\n  apolloServerVersion: string,\n  nonce: string,\n) => {\n  const localDevelopmentEmbedConfigOrDefault = {\n    runTelemetry: true,\n    endpointIsEditable: false,\n    initialState: {},\n    ...(typeof config.embed === 'boolean' ? {} : (config.embed ?? {})),\n  };\n  const embeddedSandboxConfig = {\n    target: '#embeddableSandbox',\n    initialState: {\n      ...('document' in config || 'headers' in config || 'variables' in config\n        ? {\n            document: config.document,\n            variables: config.variables,\n            headers: config.headers,\n          }\n        : {}),\n      ...('collectionId' in config\n        ? {\n            collectionId: config.collectionId,\n            operationId: config.operationId,\n          }\n        : {}),\n      includeCookies: config.includeCookies,\n      ...localDevelopmentEmbedConfigOrDefault.initialState,\n    },\n    hideCookieToggle: false,\n    endpointIsEditable: localDevelopmentEmbedConfigOrDefault.endpointIsEditable,\n    runtime: apolloServerVersion,\n    runTelemetry: localDevelopmentEmbedConfigOrDefault.runTelemetry,\n    allowDynamicStyles: false, // disabled for CSP - we add the iframe styles ourselves instead\n  };\n  return `\n<div class=\"fallback\">\n  <h1>Welcome to Apollo Server</h1>\n  <p>Apollo Sandbox cannot be loaded; it appears that you might be offline.</p>\n</div>\n<style nonce=${nonce}>\n  iframe {\n    background-color: white;\n    height: 100%;\n    width: 100%;\n    border: none;\n  }\n  #embeddableSandbox {\n    width: 100vw;\n    height: 100vh;\n    position: absolute;\n    top: 0;\n  }\n</style>\n<div id=\"embeddableSandbox\"></div>\n<script nonce=\"${nonce}\" src=\"https://embeddable-sandbox.cdn.apollographql.com/${encodeURIComponent(\n    sandboxCdnVersion,\n  )}/embeddable-sandbox.umd.production.min.js?runtime=${encodeURIComponent(\n    apolloServerVersion,\n  )}\"></script>\n<script nonce=\"${nonce}\">\n  var initialEndpoint = window.location.href;\n  var embeddedSandboxConfig = ${getConfigStringForHtml(embeddedSandboxConfig)};\n  new window.EmbeddedSandbox(\n    {\n      ...embeddedSandboxConfig,\n      initialEndpoint,\n    }\n  );\n</script>\n`;\n};\n", "import type {\n  ApolloServerPlugin,\n  BaseContext,\n} from '../../../externalTypes/index.js';\nimport type { ImplicitlyInstallablePlugin } from '../../../ApolloServer.js';\nimport type {\n  ApolloServerPluginLandingPageLocalDefaultOptions,\n  ApolloServerPluginLandingPageProductionDefaultOptions,\n  LandingPageConfig,\n} from './types.js';\nimport {\n  getEmbeddedExplorerHTML,\n  getEmbeddedSandboxHTML,\n} from './getEmbeddedHTML.js';\nimport { packageVersion } from '../../../generated/packageVersion.js';\nimport { createHash } from '@apollo/utils.createhash';\nimport { v4 as uuidv4 } from 'uuid';\n\nexport type {\n  ApolloServerPluginLandingPageLocalDefaultOptions,\n  ApolloServerPluginLandingPageProductionDefaultOptions,\n};\n\nexport function ApolloServerPluginLandingPageLocalDefault(\n  options: ApolloServerPluginLandingPageLocalDefaultOptions = {},\n): ApolloServerPlugin {\n  const { version, __internal_apolloStudioEnv__, ...rest } = {\n    // we default to Sandbox unless embed is specified as false\n    embed: true as const,\n    ...options,\n  };\n  return ApolloServerPluginLandingPageDefault(version, {\n    isProd: false,\n    apolloStudioEnv: __internal_apolloStudioEnv__,\n    ...rest,\n  });\n}\n\nexport function ApolloServerPluginLandingPageProductionDefault(\n  options: ApolloServerPluginLandingPageProductionDefaultOptions = {},\n): ApolloServerPlugin {\n  const { version, __internal_apolloStudioEnv__, ...rest } = options;\n  return ApolloServerPluginLandingPageDefault(version, {\n    isProd: true,\n    apolloStudioEnv: __internal_apolloStudioEnv__,\n    ...rest,\n  });\n}\n\n// A triple encoding! Wow! First we use JSON.stringify to turn our object into a\n// string. Then we encodeURIComponent so we don't have to stress about what\n// would happen if the config contained `</script>`. Finally, we JSON.stringify\n// it again, which in practice just wraps it in a pair of double quotes (since\n// there shouldn't be any backslashes left after encodeURIComponent). The\n// consumer of this needs to decodeURIComponent and then JSON.parse; there's\n// only one JSON.parse because the outermost JSON string is parsed by the JS\n// parser itself.\nfunction encodeConfig(config: LandingPageConfig): string {\n  return JSON.stringify(encodeURIComponent(JSON.stringify(config)));\n}\n\nconst getNonEmbeddedLandingPageHTML = (\n  cdnVersion: string,\n  config: LandingPageConfig,\n  apolloServerVersion: string,\n  nonce: string,\n) => {\n  const encodedConfig = encodeConfig(config);\n\n  return `\n <div class=\"fallback\">\n  <h1>Welcome to Apollo Server</h1>\n  <p>The full landing page cannot be loaded; it appears that you might be offline.</p>\n</div>\n<script nonce=\"${nonce}\">window.landingPage = ${encodedConfig};</script>\n<script nonce=\"${nonce}\" src=\"https://apollo-server-landing-page.cdn.apollographql.com/${encodeURIComponent(\n    cdnVersion,\n  )}/static/js/main.js?runtime=${apolloServerVersion}\"></script>`;\n};\n\nexport const DEFAULT_EMBEDDED_EXPLORER_VERSION = 'v3';\nexport const DEFAULT_EMBEDDED_SANDBOX_VERSION = 'v2';\nexport const DEFAULT_APOLLO_SERVER_LANDING_PAGE_VERSION = '_latest';\n\n// Helper for the two actual plugin functions.\nfunction ApolloServerPluginLandingPageDefault<TContext extends BaseContext>(\n  maybeVersion: string | undefined,\n  config: LandingPageConfig & {\n    isProd: boolean;\n    apolloStudioEnv: 'staging' | 'prod' | undefined;\n  },\n): ImplicitlyInstallablePlugin<TContext> {\n  const explorerVersion = maybeVersion ?? DEFAULT_EMBEDDED_EXPLORER_VERSION;\n  const sandboxVersion = maybeVersion ?? DEFAULT_EMBEDDED_SANDBOX_VERSION;\n  const apolloServerLandingPageVersion =\n    maybeVersion ?? DEFAULT_APOLLO_SERVER_LANDING_PAGE_VERSION;\n  const apolloServerVersion = `@apollo/server@${packageVersion}`;\n\n  const scriptSafeList = [\n    'https://apollo-server-landing-page.cdn.apollographql.com',\n    'https://embeddable-sandbox.cdn.apollographql.com',\n    'https://embeddable-explorer.cdn.apollographql.com',\n  ].join(' ');\n  const styleSafeList = [\n    'https://apollo-server-landing-page.cdn.apollographql.com',\n    'https://embeddable-sandbox.cdn.apollographql.com',\n    'https://embeddable-explorer.cdn.apollographql.com',\n    'https://fonts.googleapis.com',\n  ].join(' ');\n  const iframeSafeList = [\n    'https://explorer.embed.apollographql.com',\n    'https://sandbox.embed.apollographql.com',\n    'https://embed.apollo.local:3000',\n  ].join(' ');\n\n  return {\n    __internal_installed_implicitly__: false,\n    async serverWillStart(server) {\n      if (config.precomputedNonce) {\n        server.logger.warn(\n          \"The `precomputedNonce` landing page configuration option is deprecated. Removing this option is strictly an improvement to Apollo Server's landing page Content Security Policy (CSP) implementation for preventing XSS attacks.\",\n        );\n      }\n      return {\n        async renderLandingPage() {\n          const encodedASLandingPageVersion = encodeURIComponent(\n            apolloServerLandingPageVersion,\n          );\n          async function html() {\n            const nonce =\n              config.precomputedNonce ??\n              createHash('sha256').update(uuidv4()).digest('hex');\n            const scriptCsp = `script-src 'self' 'nonce-${nonce}' ${scriptSafeList}`;\n            const styleCsp = `style-src 'nonce-${nonce}' ${styleSafeList}`;\n            const imageCsp = `img-src https://apollo-server-landing-page.cdn.apollographql.com`;\n            const manifestCsp = `manifest-src https://apollo-server-landing-page.cdn.apollographql.com`;\n            const frameCsp = `frame-src ${iframeSafeList}`;\n            return `\n<!DOCTYPE html>\n<html lang=\"en\">\n  <head>\n    <meta charset=\"utf-8\" />\n    <meta http-equiv=\"Content-Security-Policy\" content=\"${scriptCsp}; ${styleCsp}; ${imageCsp}; ${manifestCsp}; ${frameCsp}\" />\n    <link\n      rel=\"icon\"\n      href=\"https://apollo-server-landing-page.cdn.apollographql.com/${encodedASLandingPageVersion}/assets/favicon.png\"\n    />\n    <meta name=\"viewport\" content=\"width=device-width,initial-scale=1\" />\n    <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" />\n    <link\n      href=\"https://fonts.googleapis.com/css2?family=Source+Sans+Pro&display=swap\"\n      rel=\"stylesheet\"\n    />\n    <meta name=\"theme-color\" content=\"#000000\" />\n    <meta name=\"description\" content=\"Apollo server landing page\" />\n    <link\n      rel=\"apple-touch-icon\"\n      href=\"https://apollo-server-landing-page.cdn.apollographql.com/${encodedASLandingPageVersion}/assets/favicon.png\"\n    />\n    <link\n      rel=\"manifest\"\n      href=\"https://apollo-server-landing-page.cdn.apollographql.com/${encodedASLandingPageVersion}/manifest.json\"\n    />\n    <title>Apollo Server</title>\n  </head>\n  <body>\n    <noscript>You need to enable JavaScript to run this app.</noscript>\n    <div id=\"react-root\">\n      <style nonce=${nonce}>\n        body {\n          margin: 0;\n          overflow-x: hidden;\n          overflow-y: hidden;\n        }\n        .fallback {\n          opacity: 0;\n          animation: fadeIn 1s 1s;\n          animation-iteration-count: 1;\n          animation-fill-mode: forwards;\n          padding: 1em;\n        }\n        @keyframes fadeIn {\n          0% {opacity:0;}\n          100% {opacity:1; }\n        }\n      </style>\n    ${\n      config.embed\n        ? 'graphRef' in config && config.graphRef\n          ? getEmbeddedExplorerHTML(\n              explorerVersion,\n              config,\n              apolloServerVersion,\n              nonce,\n            )\n          : !('graphRef' in config)\n            ? getEmbeddedSandboxHTML(\n                sandboxVersion,\n                config,\n                apolloServerVersion,\n                nonce,\n              )\n            : getNonEmbeddedLandingPageHTML(\n                apolloServerLandingPageVersion,\n                config,\n                apolloServerVersion,\n                nonce,\n              )\n        : getNonEmbeddedLandingPageHTML(\n            apolloServerLandingPageVersion,\n            config,\n            apolloServerVersion,\n            nonce,\n          )\n    }\n    </div>\n  </body>\n</html>\n          `;\n          }\n          return { html };\n        },\n      };\n    },\n  };\n}\n", "import type { ApolloServerPlugin } from '../../externalTypes/index.js';\nimport { internalPlugin } from '../../internalPlugin.js';\n\nexport function ApolloServerPluginDisableSuggestions(): ApolloServerPlugin {\n  return internalPlugin({\n    __internal_plugin_id__: 'DisableSuggestions',\n    __is_disabled_plugin__: false,\n    async requestDidStart() {\n      return {\n        async validationDidStart() {\n          return async (validationErrors) => {\n            validationErrors?.forEach((error) => {\n              error.message = error.message.replace(\n                / ?Did you mean(.+?)\\?$/,\n                '',\n              );\n            });\n          };\n        },\n      };\n    },\n  });\n}\n", "import type { GatewayExecutor } from '@apollo/server-gateway-interface';\nimport { isNodeLike } from '@apollo/utils.isnodelike';\nimport {\n  InMemoryLRUCache,\n  PrefixingKeyValueCache,\n  type KeyValueCache,\n} from '@apollo/utils.keyvaluecache';\nimport type { Logger } from '@apollo/utils.logger';\nimport type { WithRequired } from '@apollo/utils.withrequired';\nimport { makeExecutableSchema } from '@graphql-tools/schema';\nimport resolvable, { type Resolvable } from './utils/resolvable.js';\nimport {\n  GraphQLError,\n  assertValidSchema,\n  print,\n  printSchema,\n  type DocumentNode,\n  type FormattedExecutionResult,\n  type GraphQLFieldResolver,\n  type GraphQLFormattedError,\n  type GraphQLSchema,\n  type ParseOptions,\n  type TypedQueryDocumentNode,\n  type ValidationRule,\n} from 'graphql';\nimport loglevel from 'loglevel';\nimport Negotiator from 'negotiator';\nimport { newCachePolicy } from './cachePolicy.js';\nimport { determineApolloConfig } from './determineApolloConfig.js';\nimport {\n  ensureError,\n  ensureGraphQLError,\n  normalizeAndFormatErrors,\n} from './errorNormalize.js';\nimport { ApolloServerErrorCode } from './errors/index.js';\nimport type { ApolloServerOptionsWithStaticSchema } from './externalTypes/constructor.js';\nimport type {\n  ExecuteOperationOptions,\n  VariableValues,\n} from './externalTypes/graphql.js';\nimport type {\n  ApolloConfig,\n  ApolloServerOptions,\n  ApolloServerPlugin,\n  BaseContext,\n  ContextThunk,\n  DocumentStore,\n  GraphQLRequest,\n  GraphQLRequestContext,\n  GraphQLResponse,\n  GraphQLServerContext,\n  GraphQLServerListener,\n  HTTPGraphQLHead,\n  HTTPGraphQLRequest,\n  HTTPGraphQLResponse,\n  LandingPage,\n  PersistedQueryOptions,\n} from './externalTypes/index.js';\nimport { runPotentiallyBatchedHttpQuery } from './httpBatching.js';\nimport type { GraphQLExperimentalIncrementalExecutionResults } from './incrementalDeliveryPolyfill.js';\nimport { pluginIsInternal, type InternalPluginId } from './internalPlugin.js';\nimport {\n  preventCsrf,\n  recommendedCsrfPreventionRequestHeaders,\n} from './preventCsrf.js';\nimport { APQ_CACHE_PREFIX, processGraphQLRequest } from './requestPipeline.js';\nimport { newHTTPGraphQLHead, prettyJSONStringify } from './runHttpQuery.js';\nimport { HeaderMap } from './utils/HeaderMap.js';\nimport { UnreachableCaseError } from './utils/UnreachableCaseError.js';\nimport { computeCoreSchemaHash } from './utils/computeCoreSchemaHash.js';\nimport { isDefined } from './utils/isDefined.js';\nimport { SchemaManager } from './utils/schemaManager.js';\nimport {\n  NoIntrospection,\n  createMaxRecursiveSelectionsRule,\n  DEFAULT_MAX_RECURSIVE_SELECTIONS,\n} from './validationRules/index.js';\n\nexport type SchemaDerivedData = {\n  schema: GraphQLSchema;\n  // A store that, when enabled (default), will store the parsed and validated\n  // versions of operations in-memory, allowing subsequent parses/validates\n  // on the same operation to be executed immediately.\n  documentStore: DocumentStore | null;\n  // Prefix for keys in the DocumentStore if a custom one is provided (to\n  // separate the cache for different schema versions). This is vital to\n  // security so we do it explicitly so that\n  // PrefixingKeyValueCache.cacheDangerouslyDoesNotNeedPrefixesForIsolation\n  // doesn't affect it.\n  documentStoreKeyPrefix: string;\n};\n\ntype RunningServerState = {\n  schemaManager: SchemaManager;\n  landingPage: LandingPage | null;\n};\n\ntype ServerState =\n  | {\n      phase: 'initialized';\n      schemaManager: SchemaManager;\n    }\n  | {\n      phase: 'starting';\n      barrier: Resolvable<void>;\n      schemaManager: SchemaManager;\n      // This is set to true if you called\n      // startInBackgroundHandlingStartupErrorsByLoggingAndFailingAllRequests\n      // instead of start. The main purpose is that assertStarted allows you to\n      // still be in the starting phase if this is set. (This is the serverless\n      // use case.)\n      startedInBackground: boolean;\n    }\n  | {\n      phase: 'failed to start';\n      error: Error;\n    }\n  | ({\n      phase: 'started';\n      drainServers: (() => Promise<void>) | null;\n      toDispose: (() => Promise<void>)[];\n      toDisposeLast: (() => Promise<void>)[];\n    } & RunningServerState)\n  | ({\n      phase: 'draining';\n      barrier: Resolvable<void>;\n    } & RunningServerState)\n  | {\n      phase: 'stopping';\n      barrier: Resolvable<void>;\n    }\n  | {\n      phase: 'stopped';\n      stopError: Error | null;\n    };\n\nexport interface ApolloServerInternals<TContext extends BaseContext> {\n  state: ServerState;\n  gatewayExecutor: GatewayExecutor | null;\n  dangerouslyDisableValidation?: boolean;\n  formatError?: (\n    formattedError: GraphQLFormattedError,\n    error: unknown,\n  ) => GraphQLFormattedError;\n  includeStacktraceInErrorResponses: boolean;\n  persistedQueries?: WithRequired<PersistedQueryOptions, 'cache'>;\n  nodeEnv: string;\n  allowBatchedHttpRequests: boolean;\n  apolloConfig: ApolloConfig;\n  plugins: ApolloServerPlugin<TContext>[];\n  parseOptions: ParseOptions;\n  // `undefined` means we figure out what to do during _start (because\n  // the default depends on whether or not we used the background version\n  // of start).\n  stopOnTerminationSignals: boolean | undefined;\n  csrfPreventionRequestHeaders: string[] | null;\n\n  rootValue?: ((parsedQuery: DocumentNode) => unknown) | unknown;\n  validationRules: Array<ValidationRule>;\n  laterValidationRules?: Array<ValidationRule>;\n  hideSchemaDetailsFromClientErrors: boolean;\n  fieldResolver?: GraphQLFieldResolver<any, TContext>;\n  // TODO(AS5): remove OR warn + ignore with this option set, ignore option and\n  // flip default behavior.\n  status400ForVariableCoercionErrors?: boolean;\n  __testing_incrementalExecutionResults?: GraphQLExperimentalIncrementalExecutionResults;\n  stringifyResult: (\n    value: FormattedExecutionResult,\n  ) => string | Promise<string>;\n}\n\nfunction defaultLogger(): Logger {\n  const loglevelLogger = loglevel.getLogger('apollo-server');\n  loglevelLogger.setLevel(loglevel.levels.INFO);\n  return loglevelLogger;\n}\n\n// We really want to prevent this from being legal:\n//\n//     const s: ApolloServer<{}> =\n//       new ApolloServer<{importantContextField: boolean}>({ ... });\n//     s.executeOperation({query}, {contextValue: {}});\n//\n// ie, if you declare an ApolloServer whose context values must be of a certain\n// type, you can't assign it to a variable whose context values are less\n// constrained and then pass in a context value missing important fields.\n//\n// We also want this to be illegal:\n//\n//     const sBase = new ApolloServer<{}>({ ... });\n//     const s: ApolloServer<{importantContextField: boolean}> = sBase;\n//     s.addPlugin({async requestDidStart({contextValue: {importantContextField}}) { ... }})\n//     sBase.executeOperation({query}, {contextValue: {}});\n//\n// so you shouldn't be able to assign an ApolloServer to a variable whose\n// context values are more constrained, either. So we want to declare that\n// ApolloServer is *invariant* in TContext, which we do with `in out` (a\n// TypeScript 4.7 feature).\nexport class ApolloServer<in out TContext extends BaseContext = BaseContext> {\n  private internals: ApolloServerInternals<TContext>;\n\n  public readonly cache: KeyValueCache<string>;\n  public readonly logger: Logger;\n\n  constructor(config: ApolloServerOptions<TContext>) {\n    const nodeEnv = config.nodeEnv ?? process.env.NODE_ENV ?? '';\n\n    this.logger = config.logger ?? defaultLogger();\n\n    const apolloConfig = determineApolloConfig(config.apollo, this.logger);\n\n    const isDev = nodeEnv !== 'production';\n\n    if (\n      config.cache &&\n      config.cache !== 'bounded' &&\n      PrefixingKeyValueCache.prefixesAreUnnecessaryForIsolation(config.cache)\n    ) {\n      throw new Error(\n        'You cannot pass a cache returned from ' +\n          '`PrefixingKeyValueCache.cacheDangerouslyDoesNotNeedPrefixesForIsolation`' +\n          'to `new ApolloServer({ cache })`, because Apollo Server may use it for ' +\n          'multiple features whose cache keys must be distinct from each other.',\n      );\n    }\n\n    const state: ServerState = config.gateway\n      ? // ApolloServer has been initialized but we have not yet tried to load the\n        // schema from the gateway. That will wait until `start()` or\n        // `startInBackgroundHandlingStartupErrorsByLoggingAndFailingAllRequests()`\n        // is called. (These may be called by other helpers; for example,\n        // `standaloneServer` calls `start` for you inside its `listen` method,\n        // and a serverless framework integration would call\n        // startInBackgroundHandlingStartupErrorsByLoggingAndFailingAllRequests\n        // for you.)\n        {\n          phase: 'initialized',\n          schemaManager: new SchemaManager({\n            gateway: config.gateway,\n            apolloConfig,\n            schemaDerivedDataProvider: (schema) =>\n              ApolloServer.generateSchemaDerivedData(\n                schema,\n                config.documentStore,\n              ),\n            logger: this.logger,\n          }),\n        }\n      : // We construct the schema synchronously so that we can fail fast if the\n        // schema can't be constructed. (This used to be more important because we\n        // used to have a 'schema' field that was publicly accessible immediately\n        // after construction, though that field never actually worked with\n        // gateways.)\n        {\n          phase: 'initialized',\n          schemaManager: new SchemaManager({\n            apiSchema: ApolloServer.constructSchema(config),\n            schemaDerivedDataProvider: (schema) =>\n              ApolloServer.generateSchemaDerivedData(\n                schema,\n                config.documentStore,\n              ),\n            logger: this.logger,\n          }),\n        };\n\n    const introspectionEnabled = config.introspection ?? isDev;\n    const hideSchemaDetailsFromClientErrors =\n      config.hideSchemaDetailsFromClientErrors ?? false;\n\n    // We continue to allow 'bounded' for backwards-compatibility with the AS3.9\n    // API.\n    this.cache =\n      config.cache === undefined || config.cache === 'bounded'\n        ? new InMemoryLRUCache()\n        : config.cache;\n\n    // Check whether the recursive selections limit has been enabled (off by\n    // default), or whether a custom limit has been specified.\n    const maxRecursiveSelectionsRule =\n      config.maxRecursiveSelections === true\n        ? [createMaxRecursiveSelectionsRule(DEFAULT_MAX_RECURSIVE_SELECTIONS)]\n        : typeof config.maxRecursiveSelections === 'number'\n          ? [createMaxRecursiveSelectionsRule(config.maxRecursiveSelections)]\n          : [];\n\n    // If the recursive selections rule has been enabled, then run configured\n    // validations in a later validate() pass.\n    const validationRules = [\n      ...(introspectionEnabled ? [] : [NoIntrospection]),\n      ...maxRecursiveSelectionsRule,\n    ];\n    let laterValidationRules;\n    if (maxRecursiveSelectionsRule.length > 0) {\n      laterValidationRules = config.validationRules;\n    } else {\n      validationRules.push(...(config.validationRules ?? []));\n    }\n\n    // Note that we avoid calling methods on `this` before `this.internals` is assigned\n    // (thus a bunch of things being static methods above).\n    this.internals = {\n      formatError: config.formatError,\n      rootValue: config.rootValue,\n      validationRules,\n      laterValidationRules,\n      hideSchemaDetailsFromClientErrors,\n      dangerouslyDisableValidation:\n        config.dangerouslyDisableValidation ?? false,\n      fieldResolver: config.fieldResolver,\n      includeStacktraceInErrorResponses:\n        config.includeStacktraceInErrorResponses ??\n        (nodeEnv !== 'production' && nodeEnv !== 'test'),\n      persistedQueries:\n        config.persistedQueries === false\n          ? undefined\n          : {\n              ...config.persistedQueries,\n              cache: new PrefixingKeyValueCache(\n                config.persistedQueries?.cache ?? this.cache,\n                APQ_CACHE_PREFIX,\n              ),\n            },\n      nodeEnv,\n      allowBatchedHttpRequests: config.allowBatchedHttpRequests ?? false,\n      apolloConfig,\n      // Note that more plugins can be added before `start()` with `addPlugin()`\n      // (eg, plugins that want to take this ApolloServer as an argument), and\n      // `start()` will call `addDefaultPlugins` to add default plugins.\n      plugins: config.plugins ?? [],\n      parseOptions: config.parseOptions ?? {},\n      state,\n      stopOnTerminationSignals: config.stopOnTerminationSignals,\n\n      gatewayExecutor: null, // set by _start\n\n      csrfPreventionRequestHeaders:\n        config.csrfPrevention === true || config.csrfPrevention === undefined\n          ? recommendedCsrfPreventionRequestHeaders\n          : config.csrfPrevention === false\n            ? null\n            : (config.csrfPrevention.requestHeaders ??\n              recommendedCsrfPreventionRequestHeaders),\n      status400ForVariableCoercionErrors:\n        config.status400ForVariableCoercionErrors ?? false,\n      __testing_incrementalExecutionResults:\n        config.__testing_incrementalExecutionResults,\n      stringifyResult: config.stringifyResult ?? prettyJSONStringify,\n    };\n  }\n\n  // Awaiting a call to `start` ensures that a schema has been loaded and that\n  // all plugin `serverWillStart` hooks have been called. If either of these\n  // processes throw, `start` will (async) throw as well.\n  //\n  // If you're using `standaloneServer`, you don't need to call `start` yourself\n  // (in fact, it will throw if you do so); its `listen` method takes care of\n  // that for you.\n  //\n  // If instead you're using an integration package for a non-serverless\n  // framework (like Express), you must await a call to `start` immediately\n  // after creating your `ApolloServer`, before attaching it to your web\n  // framework and starting to accept requests. `start` should only be called\n  // once; if it throws and you'd like to retry, just create another\n  // `ApolloServer`. (Calling `start` was optional in Apollo Server 2, but in\n  // Apollo Server 3+ the functions like `expressMiddleware` use `assertStarted`\n  // to throw if `start` hasn't successfully completed.)\n  //\n  // Serverless integrations like Lambda do not support calling `start()`,\n  // because their lifecycle doesn't allow you to wait before assigning a\n  // handler or allowing the handler to be called. So they call\n  // `startInBackgroundHandlingStartupErrorsByLoggingAndFailingAllRequests()`\n  // instead, and don't really differentiate between startup failures and\n  // request failures. This is hopefully appropriate for a \"serverless\"\n  // framework. Serverless startup failures result in returning a redacted error\n  // to the end user and logging the more detailed error.\n  public async start(): Promise<void> {\n    return await this._start(false);\n  }\n\n  public startInBackgroundHandlingStartupErrorsByLoggingAndFailingAllRequests(): void {\n    this._start(true).catch((e) => this.logStartupError(e));\n  }\n\n  private async _start(startedInBackground: boolean): Promise<void> {\n    if (this.internals.state.phase !== 'initialized') {\n      // If we wanted we could make this error detectable and change\n      // `standaloneServer` to change the message to say not to call start() at\n      // all.\n      throw new Error(\n        `You should only call 'start()' or ` +\n          `'startInBackgroundHandlingStartupErrorsByLoggingAndFailingAllRequests()' ` +\n          `once on your ApolloServer.`,\n      );\n    }\n    const schemaManager = this.internals.state.schemaManager;\n    const barrier = resolvable();\n    this.internals.state = {\n      phase: 'starting',\n      barrier,\n      schemaManager,\n      startedInBackground,\n    };\n    try {\n      // Now that you can't call addPlugin any more, add default plugins like\n      // usage reporting if they're not already added.\n      await this.addDefaultPlugins();\n\n      const toDispose: (() => Promise<void>)[] = [];\n      const executor = await schemaManager.start();\n      if (executor) {\n        this.internals.gatewayExecutor = executor;\n      }\n      toDispose.push(async () => {\n        await schemaManager.stop();\n      });\n\n      const schemaDerivedData = schemaManager.getSchemaDerivedData();\n      const service: GraphQLServerContext = {\n        logger: this.logger,\n        cache: this.cache,\n        schema: schemaDerivedData.schema,\n        apollo: this.internals.apolloConfig,\n        startedInBackground,\n      };\n\n      const taggedServerListeners = (\n        await Promise.all(\n          this.internals.plugins.map(async (plugin) => ({\n            serverListener:\n              plugin.serverWillStart && (await plugin.serverWillStart(service)),\n            installedImplicitly:\n              isImplicitlyInstallablePlugin(plugin) &&\n              plugin.__internal_installed_implicitly__,\n          })),\n        )\n      ).filter(\n        (\n          maybeTaggedServerListener,\n        ): maybeTaggedServerListener is {\n          serverListener: GraphQLServerListener;\n          installedImplicitly: boolean;\n        } => typeof maybeTaggedServerListener.serverListener === 'object',\n      );\n\n      taggedServerListeners.forEach(\n        ({ serverListener: { schemaDidLoadOrUpdate } }) => {\n          if (schemaDidLoadOrUpdate) {\n            schemaManager.onSchemaLoadOrUpdate(schemaDidLoadOrUpdate);\n          }\n        },\n      );\n\n      const serverWillStops = taggedServerListeners\n        .map((l) => l.serverListener.serverWillStop)\n        .filter(isDefined);\n      if (serverWillStops.length) {\n        toDispose.push(async () => {\n          await Promise.all(\n            serverWillStops.map((serverWillStop) => serverWillStop()),\n          );\n        });\n      }\n\n      const drainServerCallbacks = taggedServerListeners\n        .map((l) => l.serverListener.drainServer)\n        .filter(isDefined);\n      const drainServers = drainServerCallbacks.length\n        ? async () => {\n            await Promise.all(\n              drainServerCallbacks.map((drainServer) => drainServer()),\n            );\n          }\n        : null;\n\n      // Find the renderLandingPage callback, if one is provided. If the user\n      // installed ApolloServerPluginLandingPageDisabled then there may be none\n      // found. On the other hand, if the user installed a landingPage plugin,\n      // then both the implicit installation of\n      // ApolloServerPluginLandingPage*Default and the other plugin will be\n      // found; we skip the implicit plugin.\n      let taggedServerListenersWithRenderLandingPage =\n        taggedServerListeners.filter((l) => l.serverListener.renderLandingPage);\n      if (taggedServerListenersWithRenderLandingPage.length > 1) {\n        taggedServerListenersWithRenderLandingPage =\n          taggedServerListenersWithRenderLandingPage.filter(\n            (l) => !l.installedImplicitly,\n          );\n      }\n      let landingPage: LandingPage | null = null;\n      if (taggedServerListenersWithRenderLandingPage.length > 1) {\n        throw Error('Only one plugin can implement renderLandingPage.');\n      } else if (taggedServerListenersWithRenderLandingPage.length) {\n        landingPage =\n          await taggedServerListenersWithRenderLandingPage[0].serverListener\n            .renderLandingPage!();\n      }\n\n      const toDisposeLast = this.maybeRegisterTerminationSignalHandlers(\n        ['SIGINT', 'SIGTERM'],\n        startedInBackground,\n      );\n\n      this.internals.state = {\n        phase: 'started',\n        schemaManager,\n        drainServers,\n        landingPage,\n        toDispose,\n        toDisposeLast,\n      };\n    } catch (maybeError: unknown) {\n      const error = ensureError(maybeError);\n\n      try {\n        await Promise.all(\n          this.internals.plugins.map(async (plugin) =>\n            plugin.startupDidFail?.({ error }),\n          ),\n        );\n      } catch (pluginError) {\n        this.logger.error(`startupDidFail hook threw: ${pluginError}`);\n      }\n\n      this.internals.state = {\n        phase: 'failed to start',\n        error,\n      };\n      throw error;\n    } finally {\n      barrier.resolve();\n    }\n  }\n\n  private maybeRegisterTerminationSignalHandlers(\n    signals: NodeJS.Signals[],\n    startedInBackground: boolean,\n  ): (() => Promise<void>)[] {\n    const toDisposeLast: (() => Promise<void>)[] = [];\n\n    // We handle signals if it was explicitly requested\n    // (stopOnTerminationSignals === true), or if we're in Node, not in a test,\n    // not in a serverless framework (which we guess based on whether they\n    // called\n    // startInBackgroundHandlingStartupErrorsByLoggingAndFailingAllRequests),\n    // and it wasn't explicitly turned off. (We only actually register the\n    // signal handlers once we've successfully started up, because there's\n    // nothing to stop otherwise.)\n    if (\n      this.internals.stopOnTerminationSignals === false ||\n      (this.internals.stopOnTerminationSignals === undefined &&\n        !(\n          isNodeLike &&\n          this.internals.nodeEnv !== 'test' &&\n          !startedInBackground\n        ))\n    ) {\n      return toDisposeLast;\n    }\n\n    let receivedSignal = false;\n    const signalHandler: NodeJS.SignalsListener = async (signal) => {\n      if (receivedSignal) {\n        // If we receive another SIGINT or SIGTERM while we're waiting\n        // for the server to stop, just ignore it.\n        return;\n      }\n      receivedSignal = true;\n      try {\n        await this.stop();\n      } catch (e) {\n        this.logger.error(`stop() threw during ${signal} shutdown`);\n        this.logger.error(e);\n        // Can't rely on the signal handlers being removed.\n        process.exit(1);\n      }\n      // Note: this.stop will call the toDisposeLast handlers below, so at\n      // this point this handler will have been removed and we can re-kill\n      // ourself to die with the appropriate signal exit status. this.stop\n      // takes care to call toDisposeLast last, so the signal handler isn't\n      // removed until after the rest of shutdown happens.\n      process.kill(process.pid, signal);\n    };\n\n    signals.forEach((signal) => {\n      process.on(signal, signalHandler);\n      toDisposeLast.push(async () => {\n        process.removeListener(signal, signalHandler);\n      });\n    });\n    return toDisposeLast;\n  }\n\n  // This method is called at the beginning of each GraphQL request by\n  // `executeHTTPGraphQLRequest` and `executeOperation`. Most of its logic is\n  // only helpful if you started the server in the background (ie, for\n  // serverless frameworks): unless you're in a serverless framework, you should\n  // have called `await server.start()` before the server got to the point of\n  // running GraphQL requests (`assertStarted` calls in the framework\n  // integrations verify that) and so the only cases for non-serverless\n  // frameworks that this should hit are 'started', 'stopping', and 'stopped'.\n  // But if you started the server in the background (with\n  // startInBackgroundHandlingStartupErrorsByLoggingAndFailingAllRequests), this\n  // lets the server wait until fully started before serving operations.\n  private async _ensureStarted(): Promise<RunningServerState> {\n    while (true) {\n      switch (this.internals.state.phase) {\n        case 'initialized':\n          // This error probably won't happen: serverless framework integrations\n          // should call\n          // `startInBackgroundHandlingStartupErrorsByLoggingAndFailingAllRequests`\n          // for you, and other frameworks call `assertStarted` before setting\n          // things up enough to make calling this function possible.\n          throw new Error(\n            'You need to call `server.start()` before using your Apollo Server.',\n          );\n        case 'starting':\n          await this.internals.state.barrier;\n          // continue the while loop\n          break;\n        case 'failed to start':\n          // First we log the error that prevented startup (which means it will\n          // get logged once for every GraphQL operation).\n          this.logStartupError(this.internals.state.error);\n          // Now make the operation itself fail.\n          // We intentionally do not re-throw actual startup error as it may contain\n          // implementation details and this error will propagate to the client.\n          throw new Error(\n            'This data graph is missing a valid configuration. More details may be available in the server logs.',\n          );\n        case 'started':\n        case 'draining': // We continue to run operations while draining.\n          return this.internals.state;\n        case 'stopping':\n        case 'stopped':\n          this.logger.warn(\n            'A GraphQL operation was received during server shutdown. The ' +\n              'operation will fail. Consider draining the HTTP server on shutdown; ' +\n              'see https://go.apollo.dev/s/drain for details.',\n          );\n          throw new Error(\n            `Cannot execute GraphQL operations ${\n              this.internals.state.phase === 'stopping'\n                ? 'while the server is stopping'\n                : 'after the server has stopped'\n            }.'`,\n          );\n        default:\n          throw new UnreachableCaseError(this.internals.state);\n      }\n    }\n  }\n\n  // Framework integrations should call this to ensure that you've properly\n  // started your server before you get anywhere close to actually listening for\n  // incoming requests.\n  //\n  // There's a special case that if you called\n  // `startInBackgroundHandlingStartupErrorsByLoggingAndFailingAllRequests` and\n  // it hasn't finished starting up yet, this works too. This is intended for\n  // cases like a serverless integration (say, Google Cloud Functions) that\n  // calls\n  // `startInBackgroundHandlingStartupErrorsByLoggingAndFailingAllRequests` for\n  // you and then immediately sets up an integration based on another middleware\n  // like `expressMiddleware` which calls this function. We'd like this to be\n  // OK, but we still want normal Express users to start their ApolloServer\n  // before setting up their HTTP server unless they know what they are doing\n  // well enough to call the function with the long name themselves.\n  public assertStarted(expressionForError: string) {\n    if (\n      this.internals.state.phase !== 'started' &&\n      this.internals.state.phase !== 'draining' &&\n      !(\n        this.internals.state.phase === 'starting' &&\n        this.internals.state.startedInBackground\n      )\n    ) {\n      throw new Error(\n        'You must `await server.start()` before calling `' +\n          expressionForError +\n          '`',\n      );\n    }\n  }\n\n  // Given an error that occurred during Apollo Server startup, log it with a\n  // helpful message. This should happen when you call\n  // `startInBackgroundHandlingStartupErrorsByLoggingAndFailingAllRequests` (ie,\n  // in serverless frameworks); with other frameworks, you must `await\n  // server.start()` which will throw the startup error directly instead of\n  // logging. This gets called both immediately when the startup error happens,\n  // and on all subsequent requests.\n  private logStartupError(err: Error) {\n    this.logger.error(\n      'An error occurred during Apollo Server startup. All GraphQL requests ' +\n        'will now fail. The startup error was: ' +\n        (err?.message || err),\n    );\n  }\n\n  private static constructSchema<TContext extends BaseContext>(\n    config: ApolloServerOptionsWithStaticSchema<TContext>,\n  ): GraphQLSchema {\n    if (config.schema) {\n      return config.schema;\n    }\n\n    const { typeDefs, resolvers } = config;\n    const augmentedTypeDefs = Array.isArray(typeDefs) ? typeDefs : [typeDefs];\n\n    // For convenience, we allow you to pass a few options that we pass through\n    // to a particular version of `@graphql-tools/schema`'s\n    // `makeExecutableSchema`. If you want to use more of this function's\n    // features or have more control over the version of the packages used, just\n    // call it yourself like `new ApolloServer({schema:\n    // makeExecutableSchema(...)})`.\n    return makeExecutableSchema({\n      typeDefs: augmentedTypeDefs,\n      resolvers,\n    });\n  }\n\n  private static generateSchemaDerivedData(\n    schema: GraphQLSchema,\n    // null means don't use a documentStore at all.\n    // missing/undefined means use the default (creating a new one each\n    // time).\n    // defined means wrap this one in a random prefix for each new schema.\n    providedDocumentStore: DocumentStore | null | undefined,\n  ): SchemaDerivedData {\n    // Instead of waiting for the first operation execution against the schema\n    // to find out if it's a valid schema or not, check right now. In the\n    // non-gateway case, if this throws then the `new ApolloServer` call will\n    // throw. In the gateway case if this throws then it will log a message and\n    // just not update the schema (although oddly the message will claim that\n    // the schema is updating).\n    assertValidSchema(schema);\n\n    return {\n      schema,\n      // The DocumentStore is schema-derived because we put documents in it\n      // after checking that they pass GraphQL validation against the schema and\n      // use this to skip validation as well as parsing. So we can't reuse the\n      // same DocumentStore for different schemas because that might make us\n      // treat invalid operations as valid. If we're using the default\n      // DocumentStore, then we just create it from scratch each time we get a\n      // new schema. If we're using a user-provided DocumentStore, then we use\n      // the schema hash as a prefix.\n      documentStore:\n        providedDocumentStore === undefined\n          ? new InMemoryLRUCache<DocumentNode>()\n          : providedDocumentStore,\n      documentStoreKeyPrefix: providedDocumentStore\n        ? `${computeCoreSchemaHash(printSchema(schema))}:`\n        : '',\n    };\n  }\n\n  public async stop() {\n    switch (this.internals.state.phase) {\n      case 'initialized':\n      case 'starting':\n      case 'failed to start':\n        throw Error(\n          'apolloServer.stop() should only be called after `await apolloServer.start()` has succeeded',\n        );\n\n      // Calling stop more than once should have the same result as the first time.\n      case 'stopped':\n        if (this.internals.state.stopError) {\n          throw this.internals.state.stopError;\n        }\n        return;\n\n      // Two parallel calls to stop; just wait for the other one to finish and\n      // do whatever it did.\n      case 'stopping':\n      case 'draining': {\n        await this.internals.state.barrier;\n        // The cast here is because TS doesn't understand that this.state can\n        // change during the await\n        // (https://github.com/microsoft/TypeScript/issues/9998).\n        const state = this.internals.state as ServerState;\n        if (state.phase !== 'stopped') {\n          throw Error(`Surprising post-stopping state ${state.phase}`);\n        }\n        if (state.stopError) {\n          throw state.stopError;\n        }\n        return;\n      }\n\n      case 'started':\n        // This is handled by the rest of the function.\n        break;\n\n      default:\n        throw new UnreachableCaseError(this.internals.state);\n    }\n\n    const barrier = resolvable();\n\n    const {\n      schemaManager,\n      drainServers,\n      landingPage,\n      toDispose,\n      toDisposeLast,\n    } = this.internals.state;\n\n    // Commit to stopping and start draining servers.\n    this.internals.state = {\n      phase: 'draining',\n      barrier,\n      schemaManager,\n      landingPage,\n    };\n\n    try {\n      await drainServers?.();\n\n      // Servers are drained. Prevent further operations from starting and call\n      // stop handlers.\n      this.internals.state = { phase: 'stopping', barrier };\n\n      // We run shutdown handlers in two phases because we don't want to turn\n      // off our signal listeners (ie, allow signals to kill the process) until\n      // we've done the important parts of shutdown like running serverWillStop\n      // handlers. (We can make this more generic later if it's helpful.)\n      await Promise.all([...toDispose].map((dispose) => dispose()));\n      await Promise.all([...toDisposeLast].map((dispose) => dispose()));\n    } catch (stopError) {\n      this.internals.state = {\n        phase: 'stopped',\n        stopError: stopError as Error,\n      };\n      barrier.resolve();\n      throw stopError;\n    }\n    this.internals.state = { phase: 'stopped', stopError: null };\n  }\n\n  private async addDefaultPlugins() {\n    const {\n      plugins,\n      apolloConfig,\n      nodeEnv,\n      hideSchemaDetailsFromClientErrors,\n    } = this.internals;\n    const isDev = nodeEnv !== 'production';\n\n    const alreadyHavePluginWithInternalId = (id: InternalPluginId) =>\n      plugins.some(\n        (p) => pluginIsInternal(p) && p.__internal_plugin_id__ === id,\n      );\n\n    // Make sure we're not trying to explicitly enable and disable the same\n    // feature. (Be careful: we are not trying to stop people from installing\n    // the same plugin twice if they have a use case for it, like two usage\n    // reporting plugins for different variants.)\n    //\n    // Note that this check doesn't work for the landing page plugin, because\n    // users can write their own landing page plugins and we don't know if a\n    // given plugin is a landing page plugin until the server has started.\n    const pluginsByInternalID = new Map<\n      InternalPluginId,\n      { sawDisabled: boolean; sawNonDisabled: boolean }\n    >();\n    for (const p of plugins) {\n      if (pluginIsInternal(p)) {\n        const id = p.__internal_plugin_id__;\n        if (!pluginsByInternalID.has(id)) {\n          pluginsByInternalID.set(id, {\n            sawDisabled: false,\n            sawNonDisabled: false,\n          });\n        }\n        const seen = pluginsByInternalID.get(id)!;\n        if (p.__is_disabled_plugin__) {\n          seen.sawDisabled = true;\n        } else {\n          seen.sawNonDisabled = true;\n        }\n\n        if (seen.sawDisabled && seen.sawNonDisabled) {\n          throw new Error(\n            `You have tried to install both ApolloServerPlugin${id} and ` +\n              `ApolloServerPlugin${id}Disabled in your server. Please choose ` +\n              `whether or not you want to disable the feature and install the ` +\n              `appropriate plugin for your use case.`,\n          );\n        }\n      }\n    }\n\n    // Special case: cache control is on unless you explicitly disable it.\n    {\n      if (!alreadyHavePluginWithInternalId('CacheControl')) {\n        const { ApolloServerPluginCacheControl } = await import(\n          './plugin/cacheControl/index.js'\n        );\n        plugins.push(ApolloServerPluginCacheControl());\n      }\n    }\n\n    // Special case: usage reporting is on by default (and first!) if you\n    // configure an API key.\n    {\n      const alreadyHavePlugin =\n        alreadyHavePluginWithInternalId('UsageReporting');\n      if (!alreadyHavePlugin && apolloConfig.key) {\n        if (apolloConfig.graphRef) {\n          // Keep this plugin first so it wraps everything. (Unfortunately despite\n          // the fact that the person who wrote this line also was the original\n          // author of the comment above in #1105, they don't quite understand why this was important.)\n          const { ApolloServerPluginUsageReporting } = await import(\n            './plugin/usageReporting/index.js'\n          );\n          plugins.unshift(\n            ApolloServerPluginUsageReporting({\n              __onlyIfSchemaIsNotSubgraph: true,\n            }),\n          );\n        } else {\n          this.logger.warn(\n            'You have specified an Apollo key but have not specified a graph ref; usage ' +\n              'reporting is disabled. To enable usage reporting, set the `APOLLO_GRAPH_REF` ' +\n              'environment variable to `your-graph-id@your-graph-variant`. To disable this ' +\n              'warning, install `ApolloServerPluginUsageReportingDisabled`.',\n          );\n        }\n      }\n    }\n\n    // Special case: schema reporting can be turned on via environment variable.\n    {\n      const alreadyHavePlugin =\n        alreadyHavePluginWithInternalId('SchemaReporting');\n      const enabledViaEnvVar = process.env.APOLLO_SCHEMA_REPORTING === 'true';\n      if (!alreadyHavePlugin && enabledViaEnvVar) {\n        if (apolloConfig.key) {\n          const { ApolloServerPluginSchemaReporting } = await import(\n            './plugin/schemaReporting/index.js'\n          );\n          plugins.push(ApolloServerPluginSchemaReporting());\n        } else {\n          throw new Error(\n            \"You've enabled schema reporting by setting the APOLLO_SCHEMA_REPORTING \" +\n              'environment variable to true, but you also need to provide your ' +\n              'Apollo API key, via the APOLLO_KEY environment ' +\n              'variable or via `new ApolloServer({apollo: {key})',\n          );\n        }\n      }\n    }\n\n    // Special case: inline tracing is on by default for federated schemas.\n    {\n      const alreadyHavePlugin = alreadyHavePluginWithInternalId('InlineTrace');\n      if (!alreadyHavePlugin) {\n        // If we haven't explicitly disabled inline tracing via\n        // ApolloServerPluginInlineTraceDisabled or explicitly installed our own\n        // ApolloServerPluginInlineTrace, we set up inline tracing in \"only if\n        // federated\" mode.  (This is slightly different than the\n        // pre-ApolloServerPluginInlineTrace where we would also avoid doing\n        // this if an API key was configured and log a warning.)\n        const { ApolloServerPluginInlineTrace } = await import(\n          './plugin/inlineTrace/index.js'\n        );\n        plugins.push(\n          ApolloServerPluginInlineTrace({ __onlyIfSchemaIsSubgraph: true }),\n        );\n      }\n    }\n\n    // Special case: If we're not in production, show our default landing page.\n    //\n    // This works a bit differently from the other implicitly installed plugins,\n    // which rely entirely on the __internal_plugin_id__ to decide whether the\n    // plugin takes effect. That's because we want third-party plugins to be\n    // able to provide a landing page that overrides the default landing page,\n    // without them having to know about __internal_plugin_id__. So unless we\n    // actively disable the default landing page with\n    // ApolloServerPluginLandingPageDisabled, we install the default landing\n    // page, but with a special flag that _start() uses to ignore it if some\n    // other plugin defines a renderLandingPage callback. (We can't just look\n    // now to see if the plugin defines renderLandingPage because we haven't run\n    // serverWillStart yet.)\n    const alreadyHavePlugin = alreadyHavePluginWithInternalId(\n      'LandingPageDisabled',\n    );\n    if (!alreadyHavePlugin) {\n      const {\n        ApolloServerPluginLandingPageLocalDefault,\n        ApolloServerPluginLandingPageProductionDefault,\n      } = await import('./plugin/landingPage/default/index.js');\n      const plugin: ApolloServerPlugin<TContext> = isDev\n        ? ApolloServerPluginLandingPageLocalDefault()\n        : ApolloServerPluginLandingPageProductionDefault();\n      if (!isImplicitlyInstallablePlugin(plugin)) {\n        throw Error(\n          'default landing page plugin should be implicitly installable?',\n        );\n      }\n      plugin.__internal_installed_implicitly__ = true;\n      plugins.push(plugin);\n    }\n\n    {\n      const alreadyHavePlugin =\n        alreadyHavePluginWithInternalId('DisableSuggestions');\n      if (hideSchemaDetailsFromClientErrors && !alreadyHavePlugin) {\n        const { ApolloServerPluginDisableSuggestions } = await import(\n          './plugin/disableSuggestions/index.js'\n        );\n        plugins.push(ApolloServerPluginDisableSuggestions());\n      }\n    }\n  }\n\n  public addPlugin(plugin: ApolloServerPlugin<TContext>) {\n    if (this.internals.state.phase !== 'initialized') {\n      throw new Error(\"Can't add plugins after the server has started\");\n    }\n    this.internals.plugins.push(plugin);\n  }\n\n  public async executeHTTPGraphQLRequest({\n    httpGraphQLRequest,\n    context,\n  }: {\n    httpGraphQLRequest: HTTPGraphQLRequest;\n    context: ContextThunk<TContext>;\n  }): Promise<HTTPGraphQLResponse> {\n    try {\n      let runningServerState;\n      try {\n        runningServerState = await this._ensureStarted();\n      } catch (error: unknown) {\n        // This is typically either the masked error from when background startup\n        // failed, or related to invoking this function before startup or\n        // during/after shutdown (due to lack of draining).\n        return await this.errorResponse(error, httpGraphQLRequest);\n      }\n\n      if (\n        runningServerState.landingPage &&\n        this.prefersHTML(httpGraphQLRequest)\n      ) {\n        let renderedHtml;\n        if (typeof runningServerState.landingPage.html === 'string') {\n          renderedHtml = runningServerState.landingPage.html;\n        } else {\n          try {\n            renderedHtml = await runningServerState.landingPage.html();\n          } catch (maybeError: unknown) {\n            const error = ensureError(maybeError);\n            this.logger.error(`Landing page \\`html\\` function threw: ${error}`);\n            return await this.errorResponse(error, httpGraphQLRequest);\n          }\n        }\n\n        return {\n          headers: new HeaderMap([['content-type', 'text/html']]),\n          body: {\n            kind: 'complete',\n            string: renderedHtml,\n          },\n        };\n      }\n\n      // If enabled, check to ensure that this request was preflighted before doing\n      // anything real (such as running the context function).\n      if (this.internals.csrfPreventionRequestHeaders) {\n        preventCsrf(\n          httpGraphQLRequest.headers,\n          this.internals.csrfPreventionRequestHeaders,\n        );\n      }\n\n      let contextValue: TContext;\n      try {\n        contextValue = await context();\n      } catch (maybeError: unknown) {\n        const error = ensureError(maybeError);\n        try {\n          await Promise.all(\n            this.internals.plugins.map(async (plugin) =>\n              plugin.contextCreationDidFail?.({\n                error,\n              }),\n            ),\n          );\n        } catch (pluginError) {\n          this.logger.error(\n            `contextCreationDidFail hook threw: ${pluginError}`,\n          );\n        }\n\n        // If some random function threw, add a helpful prefix when converting\n        // to GraphQLError. If it was already a GraphQLError, trust that the\n        // message was chosen thoughtfully and leave off the prefix.\n        return await this.errorResponse(\n          ensureGraphQLError(error, 'Context creation failed: '),\n          httpGraphQLRequest,\n        );\n      }\n\n      return await runPotentiallyBatchedHttpQuery(\n        this,\n        httpGraphQLRequest,\n        contextValue,\n        runningServerState.schemaManager.getSchemaDerivedData(),\n        this.internals,\n      );\n    } catch (maybeError_: unknown) {\n      const maybeError = maybeError_; // fixes inference because catch vars are not const\n      if (\n        maybeError instanceof GraphQLError &&\n        maybeError.extensions.code === ApolloServerErrorCode.BAD_REQUEST\n      ) {\n        try {\n          await Promise.all(\n            this.internals.plugins.map(async (plugin) =>\n              plugin.invalidRequestWasReceived?.({ error: maybeError }),\n            ),\n          );\n        } catch (pluginError) {\n          this.logger.error(\n            `invalidRequestWasReceived hook threw: ${pluginError}`,\n          );\n        }\n      }\n      return await this.errorResponse(maybeError, httpGraphQLRequest);\n    }\n  }\n\n  private async errorResponse(\n    error: unknown,\n    requestHead: HTTPGraphQLHead,\n  ): Promise<HTTPGraphQLResponse> {\n    const { formattedErrors, httpFromErrors } = normalizeAndFormatErrors(\n      [error],\n      {\n        includeStacktraceInErrorResponses:\n          this.internals.includeStacktraceInErrorResponses,\n        formatError: this.internals.formatError,\n      },\n    );\n\n    return {\n      status: httpFromErrors.status ?? 500,\n      headers: new HeaderMap([\n        ...httpFromErrors.headers,\n        [\n          'content-type',\n          // Note that we may change the default to\n          // 'application/graphql-response+json' by 2025 as encouraged by the\n          // graphql-over-http spec. It's maybe a bit bad for us to provide\n          // an application/json response if they send `accept: foo/bar`,\n          // but we're already providing some sort of bad request error, and\n          // it's probably more useful for them to fix the other error before\n          // they deal with the `accept` header.\n          chooseContentTypeForSingleResultResponse(requestHead) ??\n            MEDIA_TYPES.APPLICATION_JSON,\n        ],\n      ]),\n      body: {\n        kind: 'complete',\n        string: await this.internals.stringifyResult({\n          errors: formattedErrors,\n        }),\n      },\n    };\n  }\n\n  private prefersHTML(request: HTTPGraphQLRequest): boolean {\n    const acceptHeader = request.headers.get('accept');\n    return (\n      request.method === 'GET' &&\n      !!acceptHeader &&\n      new Negotiator({\n        headers: { accept: acceptHeader },\n      }).mediaType([\n        // We need it to actively prefer text/html over less browser-y types;\n        // eg, `accept: */*' should still go for JSON. Negotiator does tiebreak\n        // by the order in the list we provide, so we put text/html last.\n        MEDIA_TYPES.APPLICATION_JSON,\n        MEDIA_TYPES.APPLICATION_GRAPHQL_RESPONSE_JSON,\n        MEDIA_TYPES.MULTIPART_MIXED_EXPERIMENTAL,\n        MEDIA_TYPES.MULTIPART_MIXED_NO_DEFER_SPEC,\n        MEDIA_TYPES.TEXT_HTML,\n      ]) === MEDIA_TYPES.TEXT_HTML\n    );\n  }\n\n  /**\n   * This method is primarily meant for testing: it allows you to execute a\n   * GraphQL operation via the request pipeline without going through the HTTP\n   * layer. Note that this means that any handling you do in your server at the\n   * HTTP level will not affect this call!\n   *\n   * For convenience, you can provide `request.query` either as a string or a\n   * DocumentNode, in case you choose to use the gql tag in your tests. This is\n   * just a convenience, not an optimization (we convert provided ASTs back into\n   * string).\n   *\n   * The second object is an optional options object which includes the optional\n   * `contextValue` object available in resolvers.\n   *\n   * You may specify the TData and TVariables generic types when calling this\n   * method; Apollo Server does not validate that the returned data actually\n   * matches the structure of TData. (Typically these types are created by a\n   * code generation tool.) Note that this does not enforce that `variables` is\n   * provided at all, just that it has the right type if provided.\n   */\n  public async executeOperation<\n    TData = Record<string, unknown>,\n    TVariables extends VariableValues = VariableValues,\n  >(\n    this: ApolloServer<BaseContext>,\n    request: Omit<GraphQLRequest<TVariables>, 'query'> & {\n      query?: string | DocumentNode | TypedQueryDocumentNode<TData, TVariables>;\n    },\n  ): Promise<GraphQLResponse<TData>>;\n  public async executeOperation<\n    TData = Record<string, unknown>,\n    TVariables extends VariableValues = VariableValues,\n  >(\n    request: Omit<GraphQLRequest<TVariables>, 'query'> & {\n      query?: string | DocumentNode | TypedQueryDocumentNode<TData, TVariables>;\n    },\n    options?: ExecuteOperationOptions<TContext>,\n  ): Promise<GraphQLResponse<TData>>;\n\n  async executeOperation<\n    TData = Record<string, unknown>,\n    TVariables extends VariableValues = VariableValues,\n  >(\n    request: Omit<GraphQLRequest<TVariables>, 'query'> & {\n      // We should consider supporting TypedDocumentNode from\n      // `@graphql-typed-document-node/core` as well, as it is more popular than\n      // the newer built-in type.\n      query?: string | DocumentNode | TypedQueryDocumentNode<TData, TVariables>;\n    },\n    options: ExecuteOperationOptions<TContext> = {},\n  ): Promise<GraphQLResponse<TData>> {\n    // Since this function is mostly for testing, you don't need to explicitly\n    // start your server before calling it. (That also means you can use it with\n    // `apollo-server` which doesn't support `start()`.)\n    if (this.internals.state.phase === 'initialized') {\n      await this.start();\n    }\n\n    const schemaDerivedData = (\n      await this._ensureStarted()\n    ).schemaManager.getSchemaDerivedData();\n\n    // For convenience, this function lets you pass either a string or an AST,\n    // but we normalize to string.\n    const graphQLRequest: GraphQLRequest = {\n      ...request,\n      query:\n        request.query && typeof request.query !== 'string'\n          ? print(request.query)\n          : request.query,\n    };\n\n    const response: GraphQLResponse = await internalExecuteOperation(\n      {\n        server: this,\n        graphQLRequest,\n        internals: this.internals,\n        schemaDerivedData,\n        sharedResponseHTTPGraphQLHead: null,\n      },\n      options,\n    );\n\n    // It's your job to set an appropriate TData (perhaps using codegen); we\n    // don't validate it.\n    return response as GraphQLResponse<TData>;\n  }\n}\n\n// Shared code between runHttpQuery (ie executeHTTPGraphQLRequest) and\n// executeOperation to set up a request context and invoke the request pipeline.\nexport async function internalExecuteOperation<TContext extends BaseContext>(\n  {\n    server,\n    graphQLRequest,\n    internals,\n    schemaDerivedData,\n    sharedResponseHTTPGraphQLHead,\n  }: {\n    server: ApolloServer<TContext>;\n    graphQLRequest: GraphQLRequest;\n    internals: ApolloServerInternals<TContext>;\n    schemaDerivedData: SchemaDerivedData;\n    sharedResponseHTTPGraphQLHead: HTTPGraphQLHead | null;\n  },\n  options: ExecuteOperationOptions<TContext>,\n): Promise<GraphQLResponse> {\n  const requestContext: GraphQLRequestContext<TContext> = {\n    logger: server.logger,\n    cache: server.cache,\n    schema: schemaDerivedData.schema,\n    request: graphQLRequest,\n    response: {\n      http: sharedResponseHTTPGraphQLHead ?? newHTTPGraphQLHead(),\n    },\n    // We clone the context because there are some assumptions that every operation\n    // execution has a brand new context object; specifically, in order to implement\n    // willResolveField we put a Symbol on the context that is specific to a particular\n    // request pipeline execution. We could avoid this if we had a better way of\n    // instrumenting execution.\n    //\n    // We don't want to do a deep clone here, because one of the main advantages of\n    // using batched HTTP requests is to share context across operations for a\n    // single request.\n    //\n    // The typecast here is safe, because the only way `contextValue` can be\n    // null-ish is if we used the `contextValue?: BaseContext` override, in\n    // which case TContext is BaseContext and {} is ok. (This does depend on\n    // the fact we've hackily forced the class to be contravariant in\n    // TContext.)\n    contextValue: cloneObject(options?.contextValue ?? ({} as TContext)),\n    metrics: {},\n    overallCachePolicy: newCachePolicy(),\n    requestIsBatched: sharedResponseHTTPGraphQLHead !== null,\n  };\n\n  try {\n    return await processGraphQLRequest(\n      schemaDerivedData,\n      server,\n      internals,\n      requestContext,\n    );\n  } catch (maybeError: unknown) {\n    // processGraphQLRequest throwing usually means that either there's a bug in\n    // Apollo Server or some plugin hook threw unexpectedly.\n    const error = ensureError(maybeError);\n    // If *these* hooks throw then we'll still get a 500 but won't mask its\n    // error.\n    await Promise.all(\n      internals.plugins.map(async (plugin) =>\n        plugin.unexpectedErrorProcessingRequest?.({\n          requestContext,\n          error,\n        }),\n      ),\n    );\n    // Mask unexpected error externally.\n    server.logger.error(`Unexpected error processing request: ${error}`);\n    throw new Error('Internal server error');\n  }\n}\n\n// Unlike InternalPlugins (where we can decide whether to install the default\n// plugin based on looking at which plugins are installed),\n// ImplicitlyInstallablePlugins (ie the default landing page plugin) can't\n// determine if they're needed until later in startup. Specifically, we can't\n// know if we've defined our own landing page until after serverWillStart\n// plugins have run.\nexport type ImplicitlyInstallablePlugin<TContext extends BaseContext> =\n  ApolloServerPlugin<TContext> & {\n    __internal_installed_implicitly__: boolean;\n  };\n\nexport function isImplicitlyInstallablePlugin<TContext extends BaseContext>(\n  p: ApolloServerPlugin<TContext>,\n): p is ImplicitlyInstallablePlugin<TContext> {\n  return '__internal_installed_implicitly__' in p;\n}\n\nexport const MEDIA_TYPES = {\n  APPLICATION_JSON: 'application/json; charset=utf-8',\n  APPLICATION_JSON_GRAPHQL_CALLBACK:\n    'application/json; callbackSpec=1.0; charset=utf-8',\n  APPLICATION_GRAPHQL_RESPONSE_JSON:\n    'application/graphql-response+json; charset=utf-8',\n  // We do *not* currently support this content-type; we will once incremental\n  // delivery is part of the official GraphQL spec.\n  MULTIPART_MIXED_NO_DEFER_SPEC: 'multipart/mixed',\n  MULTIPART_MIXED_EXPERIMENTAL: 'multipart/mixed; deferSpec=20220824',\n  TEXT_HTML: 'text/html',\n};\n\nexport function chooseContentTypeForSingleResultResponse(\n  head: HTTPGraphQLHead,\n): string | null {\n  const acceptHeader = head.headers.get('accept');\n  if (!acceptHeader) {\n    // Note that we may change the default to\n    // 'application/graphql-response+json' by 2025 as encouraged by the\n    // graphql-over-http spec.\n    return MEDIA_TYPES.APPLICATION_JSON;\n  } else {\n    const preferred = new Negotiator({\n      headers: { accept: head.headers.get('accept') },\n    }).mediaType([\n      MEDIA_TYPES.APPLICATION_JSON,\n      MEDIA_TYPES.APPLICATION_GRAPHQL_RESPONSE_JSON,\n      MEDIA_TYPES.APPLICATION_JSON_GRAPHQL_CALLBACK,\n    ]);\n    if (preferred) {\n      return preferred;\n    } else {\n      return null;\n    }\n  }\n}\n\nfunction cloneObject<T extends Object>(object: T): T {\n  return Object.assign(Object.create(Object.getPrototypeOf(object)), object);\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=index.js.map", "export { ApolloServer } from './ApolloServer.js';\nexport { HeaderMap } from './utils/HeaderMap.js';\n// Note that this is purely a type export.\nexport * from './externalTypes/index.js';\n", "import { Readable } from 'node:stream';\nimport { parse } from 'node:url';\nimport type { WithRequired } from '@apollo/utils.withrequired';\nimport {\n  type ApolloServer,\n  type BaseContext,\n  type ContextFunction,\n  type HTTPGraphQLRequest,\n  HeaderMap,\n} from '@apollo/server';\nimport type Koa from 'koa';\n// we need the extended `Request` type from `koa-bodyparser`,\n// this is similar to an effectful import but for types, since\n// the `koa-bodyparser` types \"polyfill\" the `koa` types\nimport type * as _ from 'koa-bodyparser';\n\nexport interface KoaContextFunctionArgument<\n  StateT = Koa.DefaultState,\n  ContextT = Koa.DefaultContext,\n> {\n  ctx: Koa.ParameterizedContext<StateT, ContextT>;\n}\n\ninterface KoaMiddlewareOptions<TContext extends BaseContext, StateT, ContextT> {\n  context?: ContextFunction<\n    [KoaContextFunctionArgument<StateT, ContextT>],\n    TContext\n  >;\n}\n\nexport function koaMiddleware<\n  StateT = Koa.DefaultState,\n  ContextT = Koa.DefaultContext,\n>(\n  server: ApolloServer<BaseContext>,\n  options?: KoaMiddlewareOptions<BaseContext, StateT, ContextT>,\n): Koa.Middleware<StateT, ContextT>;\nexport function koaMiddleware<\n  TContext extends BaseContext,\n  StateT = Koa.DefaultState,\n  ContextT = Koa.DefaultContext,\n>(\n  server: ApolloServer<TContext>,\n  options: WithRequired<\n    KoaMiddlewareOptions<TContext, StateT, ContextT>,\n    'context'\n  >,\n): Koa.Middleware<StateT, ContextT>;\nexport function koaMiddleware<\n  TContext extends BaseContext,\n  StateT = Koa.DefaultState,\n  ContextT = Koa.DefaultContext,\n>(\n  server: ApolloServer<TContext>,\n  options?: KoaMiddlewareOptions<TContext, StateT, ContextT>,\n): Koa.Middleware<StateT, ContextT> {\n  server.assertStarted('koaMiddleware()');\n\n  // This `any` is safe because the overload above shows that context can\n  // only be left out if you're using BaseContext as your context, and {} is a\n  // valid BaseContext.\n  const defaultContext: ContextFunction<\n    [KoaContextFunctionArgument<StateT, ContextT>],\n    any\n  > = async () => ({});\n\n  const context: ContextFunction<\n    [KoaContextFunctionArgument<StateT, ContextT>],\n    TContext\n  > = options?.context ?? defaultContext;\n\n  return async (ctx) => {\n    if (!ctx.request.body) {\n      // The json koa-bodyparser *always* sets ctx.request.body to {} if it's unset (even\n      // if the Content-Type doesn't match), so if it isn't set, you probably\n      // forgot to set up koa-bodyparser.\n      ctx.status = 500;\n      ctx.body =\n        '`ctx.request.body` is not set; this probably means you forgot to set up the ' +\n        '`koa-bodyparser` middleware before the Apollo Server middleware.';\n      return;\n    }\n\n    const incomingHeaders = new HeaderMap();\n    for (const [key, value] of Object.entries(ctx.headers)) {\n      if (value !== undefined) {\n        // Node/Koa headers can be an array or a single value. We join\n        // multi-valued headers with `, ` just like the Fetch API's `Headers`\n        // does. We assume that keys are already lower-cased (as per the Node\n        // docs on IncomingMessage.headers) and so we don't bother to lower-case\n        // them or combine across multiple keys that would lower-case to the\n        // same value.\n        incomingHeaders.set(\n          key,\n          Array.isArray(value) ? value.join(', ') : value,\n        );\n      }\n    }\n\n    const httpGraphQLRequest: HTTPGraphQLRequest = {\n      method: ctx.method.toUpperCase(),\n      headers: incomingHeaders,\n      search: parse(ctx.url).search ?? '',\n      body: ctx.request.body,\n    };\n\n    const { body, headers, status } = await server.executeHTTPGraphQLRequest({\n      httpGraphQLRequest,\n      context: () => context({ ctx }),\n    });\n\n    if (body.kind === 'complete') {\n      ctx.body = body.string;\n    } else if (body.kind === 'chunked') {\n      ctx.body = Readable.from(\n        (async function* () {\n          for await (const chunk of body.asyncIterator) {\n            yield chunk;\n            if (typeof ctx.body.flush === 'function') {\n              // If this response has been piped to a writable compression stream then `flush` after\n              // each chunk.\n              // This is identical to the Express integration:\n              // https://github.com/apollographql/apollo-server/blob/a69580565dadad69de701da84092e89d0fddfa00/packages/server/src/express4/index.ts#L96-L105\n              ctx.body.flush();\n            }\n          }\n        })(),\n      );\n    } else {\n      throw Error(`Delivery method ${(body as any).kind} not implemented`);\n    }\n\n    if (status !== undefined) {\n      ctx.status = status;\n    }\n    for (const [key, value] of headers) {\n      ctx.set(key, value);\n    }\n  };\n}\n", "/**\n * Exposes methods to reason about types and their relationship.\n */\n\nimport {\n  AbstractType,\n  InterfaceType,\n  isCompositeType,\n  isInterfaceType,\n  isListType,\n  isNamedType,\n  isNonNullType,\n  isObjectType,\n  isUnionType,\n  ObjectType,\n  Type,\n  UnionType\n} from \"./definitions\";\n\nexport const ALL_SUBTYPING_RULES = [\n  'direct' as const,\n  'nonNullable_downgrade' as const,\n  'list_upgrade' as const,\n  'list_propagation' as const,\n  'nonNullable_propagation' as const\n];\n\nexport type SubtypingRule = typeof ALL_SUBTYPING_RULES[number];\n\n// The subtyping rules that graphQL-js enforces in particular\nexport const DEFAULT_SUBTYPING_RULES = ALL_SUBTYPING_RULES.filter(r => r !== \"list_upgrade\");\n\n/**\n * Tests whether 2 types are the \"same\" type.\n *\n * To be the same type, for this method, is defined as having the samee name for named types\n * or, for wrapper types, the same wrapper type and recursively same wrapped one.\n *\n * This method does not check that both types are from the same schema and does not validate\n * that the structure of named types is the same. Also note that it does not check the \"kind\"\n * of the type, which is actually relied on due to @interfaceObject (where the \"same\" type \n * can be an interface in one subgraph but an object type in another, while fundamentally being\n * the same type).\n */\nexport function sameType(t1: Type, t2: Type): boolean {\n  switch (t1.kind) {\n    case 'ListType':\n      return isListType(t2) && sameType(t1.ofType, t2.ofType);\n    case 'NonNullType':\n      return isNonNullType(t2) && sameType(t1.ofType, t2.ofType);\n    default:\n      return isNamedType(t2) && t1.name === t2.name;\n  }\n}\n\n/**\n * Tests whether `maybeSubType` is a direct subtype of `type`.\n *\n * A type `maybeSubType` is a direct subtype of `type` if either `type` is a union and\n * `maybeSubType` is a member of that union, or `type` is an interface and `maybeSubType`\n * implements `type`.\n *\n * The notion of \"direct\" subtypes is a strict one, in that a type is never a direct subtype\n * of itself.\n *\n * This relation does _not_ check that both types are from the same schema: union type\n * membership and interface implementation is based on type names only.\n *\n */\nexport function isDirectSubtype(\n  type: AbstractType,\n  maybeSubType: ObjectType | InterfaceType,\n  unionMembershipTester: (union: UnionType, maybeMember: ObjectType) => boolean = (u, m) => u.hasTypeMember(m),\n  implementsInterfaceTester: (maybeImplementer: ObjectType | InterfaceType, itf: InterfaceType) => boolean = (m, i) => m.implementsInterface(i),\n): boolean {\n  if (isUnionType(type)) {\n    return isObjectType(maybeSubType) && unionMembershipTester(type, maybeSubType);\n  }\n  return implementsInterfaceTester(maybeSubType, type);\n}\n\n/**\n * Tests whether `maybeSubType` is a subtype of `type`.\n *\n * Subtyping is defined as the notion of \"direct\" subtyping (of `isDirectSubtype`) extended to wrapper types\n * and to equality. More precisely, `maybeSubType` is a subtype of `type` if one of the following is true:\n * - both types are the same.\n * - `maybeSubType` is a direct subtype of `type`.\n * - `maybeSubType` and `type` are the same kind of wrapper type (both lists or both non-null), and the\n *   type wrapped by `maybeSubType` is a subtype of the type wrapped by `type`.\n * - `maybeSubType` is a non-null type and the type wrapped by `maybeSubType` is a subtype of `type`.\n *\n * As usual, this subtyping relation ensures that if a value is of type `subType` and `subType` is a subtype\n * of `type`, then it can be used where a value of type `type` is expected.\n *\n * If you to exclude equality from the relation, use `isStrictSubtype`.\n */\nexport function isSubtype(\n  type: Type,\n  maybeSubType: Type,\n  allowedRules: SubtypingRule[] = DEFAULT_SUBTYPING_RULES,\n  unionMembershipTester: (union: UnionType, maybeMember: ObjectType) => boolean = (u, m) => u.hasTypeMember(m),\n  implementsInterfaceTester: (maybeImplementer: ObjectType | InterfaceType, itf: InterfaceType) => boolean = (m, i) => m.implementsInterface(i)\n): boolean {\n  return sameType(type, maybeSubType) || isStrictSubtype(type, maybeSubType, allowedRules, unionMembershipTester, implementsInterfaceTester);\n}\n\n/**\n * Tests whether `maybeSubType` is a strict subtype of `type`.\n *\n * Strict subtyping is the subtyping relation defined on `isSubtype`, but where\n * equality (as defined by `sameType`) is excluded.\n */\nexport function isStrictSubtype(\n  type: Type,\n  maybeSubType: Type,\n  allowedRules: SubtypingRule[] = DEFAULT_SUBTYPING_RULES,\n  unionMembershipTester: (union: UnionType, maybeMember: ObjectType) => boolean = (u, m) => u.hasTypeMember(m),\n  implementsInterfaceTester: (maybeImplementer: ObjectType | InterfaceType, itf: InterfaceType) => boolean = (m, i) => m.implementsInterface(i)\n): boolean {\n  switch (maybeSubType.kind) {\n    case 'ListType':\n      return allowedRules.includes('list_propagation')\n        && isListType(type)\n        && isSubtype(type.ofType, maybeSubType.ofType, allowedRules, unionMembershipTester, implementsInterfaceTester);\n    case 'NonNullType':\n      if (isNonNullType(type)) {\n        return allowedRules.includes('nonNullable_propagation')\n          && isSubtype(type.ofType, maybeSubType.ofType, allowedRules, unionMembershipTester, implementsInterfaceTester);\n      }\n      return allowedRules.includes('nonNullable_downgrade')\n        && isSubtype(type, maybeSubType.ofType, allowedRules, unionMembershipTester, implementsInterfaceTester);\n    case 'ObjectType':\n    case 'InterfaceType':\n      if (isListType(type)) {\n        return allowedRules.includes('list_upgrade')\n          && isSubtype(type.ofType, maybeSubType, allowedRules, unionMembershipTester, implementsInterfaceTester);\n      }\n      return allowedRules.includes('direct')\n        && (isInterfaceType(type) || isUnionType(type))\n        && isDirectSubtype(type, maybeSubType, unionMembershipTester, implementsInterfaceTester);\n    default:\n      return isListType(type)\n        && allowedRules.includes('list_upgrade')\n        && isSubtype(type.ofType, maybeSubType, allowedRules, unionMembershipTester, implementsInterfaceTester);\n  }\n}\n\n/**\n * This essentially follows the beginning of https://spec.graphql.org/draft/#SameResponseShape().\n * That is, the types cannot be merged unless:\n * - they have the same nullability and \"list-ability\", potentially recursively.\n * - their base type is either both composite, or are the same type.\n */\nexport function typesCanBeMerged(t1: Type, t2: Type): boolean {\n  if (isNonNullType(t1)) {\n    return isNonNullType(t2) ? typesCanBeMerged(t1.ofType, t2.ofType) : false;\n  }\n  if (isListType(t1)) {\n    return isListType(t2) ? typesCanBeMerged(t1.ofType, t2.ofType) : false;\n  }\n  if (isCompositeType(t1)) {\n    return isCompositeType(t2);\n  }\n  return sameType(t1, t2);\n}\n\n", "/**\n * For lack of a \"home of federation utilities\", this function is copy/pasted\n * verbatim across the federation, gateway, and query-planner packages. Any changes\n * made here should be reflected in the other two locations as well.\n *\n * @param condition\n * @param message\n * @throws\n */\nexport function assert(condition: any, message: string | (() => string)): asserts condition {\n  if (!condition) {\n    throw new Error(typeof message === 'string' ? message : message());\n  }\n}\n\nexport function assertUnreachable(_: never): never {\n  throw new Error(\"Didn't expect to get here\");\n}\n\nexport class MultiMap<K, V> extends Map<K, V[]> {\n  add(key: K, value: V): this {\n    const values = this.get(key);\n    if (values) {\n      values.push(value);\n    } else {\n      this.set(key, [value]);\n    }\n    return this;\n  }\n\n  addAll(otherMap: MultiMap<K, V>): this {\n    for (const [k, vs] of otherMap.entries()) {\n      for (const v of vs) {\n        this.add(k, v);\n      }\n    }\n    return this;\n  }\n}\n\nexport class SetMultiMap<K, V> extends Map<K, Set<V>> {\n  add(key: K, value: V): this {\n    let values = this.get(key);\n    if (!values) {\n      values = new Set<V>();\n      this.set(key, values);\n    }\n    values.add(value);\n    return this;\n  }\n\n  addAll(otherMap: SetMultiMap<K, V>): this {\n    for (const [k, vs] of otherMap.entries()) {\n      for (const v of vs) {\n        this.add(k, v);\n      }\n    }\n    return this;\n  }\n}\n\n/**\n * Generic OrderedMap class that can sort keys based on an arbitrary sorting function\n * Insert time is O(log(N))\n * Remove is not implemented, but the trivial implementation would be O(N)\n * Uses '<' '>' sorting by default\n * Collisions are fine, it will just overwrite the old value\n */\nexport class OrderedMap<K,V> {\n  private _keys: K[] = [];\n  private _values: Map<K,V> = new Map<K,V>();\n  private _compareFn: (a: K, b: K) => number;\n\n  private static defaultCompareFn<K>(a: K, b: K) {\n    if (a < b) {\n      return -1;\n    } else if (b < a) {\n      return 1;\n    }\n    return 0;\n  }\n\n  constructor(compareFn: (a: K, b: K) => number = OrderedMap.defaultCompareFn) {\n    this._compareFn = compareFn;\n  }\n\n  add(key: K, value: V) {\n    if (!this._values.has(key)) {\n      this.insertKeyInOrder(key);\n    }\n    this._values.set(key, value);\n  }\n\n  get(key: K): V | undefined {\n    return this._values.get(key);\n  }\n\n  has(key: K): boolean {\n    return this._values.has(key);\n  }\n\n  get size() {\n    return this._keys.length;\n  }\n\n  keys(): K[] {\n    return this._keys;\n  }\n\n  values(): V[] {\n    return this._keys.map(key => {\n      const v = this._values.get(key);\n      assert(v, 'value for known key not found in OrderedMap');\n      return v;\n    });\n  }\n\n  // O(log(N)) - find location via middle finding\n  private insertKeyInOrder(key: K) {\n    let lower = 0;\n    let upper = this._keys.length - 1;\n    while (lower <= upper) {\n      const middle = Math.floor((upper + lower) / 2);\n      if (this._compareFn(this._keys[middle], key) < 0) {\n        lower = middle + 1;\n      } else {\n        upper = middle - 1;\n      }\n    }\n    this._keys = this._keys.slice(0, lower).concat(key).concat(this._keys.slice(lower));\n  }\n\n  // remove(key: K): void - not implemented\n\n  *[Symbol.iterator]() {\n    for (let i = 0; i < this._keys.length; i += 1) {\n      const v = this._values.get(this._keys[i]);\n      assert(v, 'value for known key not found in OrderedMap');\n      yield v;\n    }\n  }\n}\n\n/**\n * Tests if the provided arrays have the same elements (using '===' equality or the provided\n * equality function).\n * This is _not_ a deep equality by default, though you can build one somewhat when passing\n * an equality function.\n */\nexport function arrayEquals<T>(\n  a: readonly T[],\n  b: readonly T[],\n  equalFct?: (e1: T, e2: T) => boolean\n): boolean {\n  if (a === b) {\n    return true;\n  }\n  if (a.length !== b.length) {\n    return false;\n  }\n  for (let i = 0; i < a.length; ++i) {\n    const eltEqual = equalFct ? equalFct(a[i], b[i]) : a[i] === b[i];\n    if (!eltEqual) {\n      return false;\n    }\n  }\n  return true;\n}\n\n/**\n * Whether the first set is a (non-strict) subset of the second set.\n */\nexport function isSubset<T>(superset: Set<T>, maybeSubset: Set<T>): boolean {\n  if (superset === maybeSubset) {\n    return true;\n  }\n  for (const elt of maybeSubset) {\n    if (!superset.has(elt)) {\n      return false;\n    }\n  }\n  return true;\n}\n\nexport function firstOf<T>(iterable: Iterable<T>): T | undefined {\n  const res = iterable[Symbol.iterator]().next();\n  return res.done ? undefined : res.value;\n}\n\nexport function mapValues<V>(map: ReadonlyMap<any, V>): V[] {\n  const array = new Array(map.size);\n  let i = 0;\n  for (const v of map.values()) {\n    array[i++] = v;\n  }\n  return array;\n}\n\nexport function mapKeys<K>(map: ReadonlyMap<K, any>): K[] {\n  const array = new Array(map.size);\n  let i = 0;\n  for (const k of map.keys()) {\n    array[i++] = k;\n  }\n  return array;\n}\n\nexport function mapEntries<K, V>(map: ReadonlyMap<K, V>): [K, V][] {\n  const array = new Array(map.size);\n  let i = 0;\n  for (const entry of map.entries()) {\n    array[i++] = entry;\n  }\n  return array;\n}\n\nexport function setValues<V>(set: ReadonlySet<V>): V[] {\n  const array = new Array(set.size);\n  let i = 0;\n  for (const v of set.values()) {\n    array[i++] = v;\n  }\n  return array;\n}\n\nexport class MapWithCachedArrays<K, V> {\n  private readonly map = new Map<K, V>();\n  private cachedKeys?: readonly K[];\n  private cachedValues?: readonly V[];\n\n  private clearCaches() {\n    this.cachedKeys = undefined;\n    this.cachedValues = undefined;\n  }\n\n  get size(): number {\n    return this.map.size;\n  }\n\n  has(key: K): boolean {\n    return this.map.has(key);\n  }\n\n  get(key: K): V | undefined {\n    return this.map.get(key);\n  }\n\n  set(key: K, value: V): this {\n    this.map.set(key, value);\n    this.clearCaches();\n    return this;\n  }\n\n  delete(key: K): boolean {\n    const deleted = this.map.delete(key);\n    if (deleted) {\n      this.clearCaches();\n    }\n    return deleted;\n  }\n\n  clear(): void {\n    this.map.clear();\n    this.clearCaches();\n  }\n\n  keys(): readonly K[] {\n    if (!this.cachedKeys) {\n      this.cachedKeys = mapKeys(this.map);\n    }\n    return this.cachedKeys;\n  }\n\n  values(): readonly V[] {\n    if (!this.cachedValues) {\n      this.cachedValues = mapValues(this.map);\n    }\n    return this.cachedValues;\n  }\n}\n\nexport function copyWitNewLength<T>(arr: T[], newLength: number): T[] {\n  assert(newLength >= arr.length, () => `${newLength} < ${arr.length}`);\n  const copy = new Array(newLength);\n  for (let i = 0; i < arr.length; i++) {\n    copy[i] = arr[i];\n  }\n  return copy;\n}\n\n/**\n * Checks whether the provided string value is defined and represents a \"boolean-ish\"\n * value, returning that boolean value.\n *\n * @param str - the string to check.\n * @return the boolean value contains in `str` if `str` represents a boolean-ish value,\n * where \"boolean-ish\" is one of \"true\"/\"false\", \"yes\"/\"no\" or \"0\"/\"1\" (where the check\n * is case-insensitive). Otherwise, `undefined` is returned.\n */\nexport function validateStringContainsBoolean(str?: string) : boolean | undefined {\n  if (!str) {\n    return false;\n  }\n  switch (str.toLocaleLowerCase()) {\n    case \"true\":\n    case \"yes\":\n    case \"1\":\n      return true;\n    case \"false\":\n    case \"no\":\n    case \"0\":\n      return false;\n    default:\n      return undefined;\n  }\n}\n\n/**\n * Joins an array of string, much like `Array.prototype.join`, but with the ability to use a specific different\n * separator for the first and/or last occurence.\n *\n * The goal is to make reading flow slightly better. For instance, if you have a list of subgraphs `s = [\"A\", \"B\", \"C\"]`,\n * then `\"subgraphs \" + joinString(s)` will yield \"subgraphs A, B and C\".\n */\nexport function joinStrings(toJoin: string[], sep: string = ', ', firstSep?: string, lastSep: string = ' and ') {\n  if (toJoin.length == 0) {\n    return '';\n  }\n  const first = toJoin[0];\n  if (toJoin.length == 1) {\n    return first;\n  }\n  const last = toJoin[toJoin.length - 1];\n  if (toJoin.length == 2) {\n    return first + (firstSep ? firstSep : lastSep) + last;\n  }\n  return first + (firstSep ? firstSep : sep) + toJoin.slice(1, toJoin.length - 1).join(sep) + lastSep + last;\n}\n\n// When displaying a list of something in a human readable form, after what size (in\n// number of characters) we start displaying only a subset of the list.\nconst DEFAULT_HUMAN_READABLE_LIST_CUTOFF_LENGTH = 100;\n\n/**\n * Like `joinStrings`, joins an array of string, but with a few twists, namely:\n *  - If the resulting list to print is \"too long\", it only display a subset of the elements and use some elipsis (...). In other\n *    words, this method is for case where, where the list ot print is too long, it is more useful to avoid flooding the output than\n *    printing everything.\n *  - it allows to prefix the whole list, and to use a different prefix for a single element than for > 1 elements.\n *  - it forces the use of ',' as separator, but allow a different lastSeparator.\n */\nexport function printHumanReadableList(\n  names: string[],\n  {\n    emptyValue,\n    prefix,\n    prefixPlural,\n    lastSeparator,\n    cutoff_output_length,\n  } : {\n    emptyValue?: string,\n    prefix?: string,\n    prefixPlural?: string,\n    lastSeparator?: string,\n    cutoff_output_length?: number,\n  }\n): string {\n  if (names.length === 0) {\n    return emptyValue ?? '';\n  }\n  if (names.length == 1) {\n    return prefix ? prefix + ' ' + names[0] : names[0];\n  }\n  const cutoff = cutoff_output_length ?? DEFAULT_HUMAN_READABLE_LIST_CUTOFF_LENGTH;\n\n  const { lastIdx } = names.reduce(\n    ({ lastIdx, length }, name) => {\n      if (length + name.length > cutoff) {\n        return {\n          lastIdx,\n          length,\n        };\n      }\n      return {\n        lastIdx: lastIdx + 1,\n        length: length + name.length,\n      };\n    },\n    { lastIdx: 0, length: 0}\n  );\n  // In case the name we list have absurdly long names, we cut it off but ensure we at least display one.\n  const toDisplay = names.slice(0, Math.max(1, lastIdx));\n  const actualPrefix = prefixPlural\n    ? prefixPlural + ' '\n    : (prefix ? prefix + ' ' : '');\n  if (toDisplay.length === names.length) {\n    return actualPrefix + joinStrings(toDisplay, ', ', undefined, lastSeparator);\n  } else {\n    return actualPrefix + joinStrings(toDisplay, ', ', undefined, ', ') + ', ...';\n  }\n}\n\nexport type Concrete<Type> = {\n  [Property in keyof Type]-?: Concrete<Type[Property]>;\n};\n\n// for use with Array.filter\n// Example:\n//   const x = [1,2,undefined];\n//   const y: number[] = x.filter(isDefined);\nexport const isDefined = <T>(t: T | undefined): t is T => t === undefined ? false : true;\n\n/**\n * Removes the first occurrence of the provided element in the provided array, if said array contains said elements.\n *\n * @return whether the element was removed.\n */\nexport function removeArrayElement<T>(element: T, array: T[]): boolean {\n  const index = array.indexOf(element);\n  if (index >= 0) {\n    array.splice(index, 1);\n    return true;\n  } else {\n    return false;\n  }\n}\n\nexport type NonEmptyArray<T> = [T, ...T[]];\n\nexport function isNonEmptyArray<T>(array: T[]): array is NonEmptyArray<T> {\n  return array.length > 0;\n}\n\n// We can switch to `Array.prototype.findLast` when we drop support for Node 16\nexport function findLast<T>(array: T[], predicate: (t: T) => boolean): T | undefined {\n  for (let i = array.length - 1; i >= 0; i--) {\n    const t = array[i];\n    if (predicate(t)) {\n      return t;\n    }\n  }\n  return undefined;\n}\n\nexport function mergeMapOrNull<K,V>(m1: Map<K, V> | null, m2: Map<K, V> | null): Map<K, V> | null {\n  if (!m1) {\n    return m2;\n  }\n  if (!m2) {\n    return m1;\n  }\n  return new Map<K, V>([...m1, ...m2]);\n}\n\nexport function composeSets<T>(s1: Set<T> | null, s2: Set<T> | null): Set<T> | null {\n  if (!s1 && !s2) {\n    return null;\n  }\n  const result = new Set<T>();\n  s1?.forEach(v => result.add(v));\n  s2?.forEach(v => result.add(v));\n  return result;\n}\n\nexport function setsEqual<T>(s1: Set<T> | null, s2: Set<T> | null): boolean {\n  if (s1 === s2) {\n    return true;\n  }\n  if (!s1 && !s2) {\n    return true;\n  }\n  if (!s1 || !s2 || s1.size !== s2.size) {\n    return false;\n  }\n  for (const key of s1) {\n    if (!s2.has(key)) {\n      return false;\n    }\n  }\n  return true;\n}\n", "import { ASTNode, GraphQLError, GraphQLErrorOptions, GraphQLFormattedError } from \"graphql\";\nimport { assert } from \"./utils\";\n\n// Redefining `SchemaRootKind` here instead of using the version from `./definition.ts` because we don't want\n// this file to import other ones, so it can be used without worrying about recusive dependency. That\n// \"duplication\" is very minor in practice though and unlikely to be a maintenance headache (graphQL is unlikely\n// to add new root kind all that often).\ntype SchemaRootKind = 'query' | 'mutation' | 'subscription';\n\n/*\n * We didn't track errors addition precisely pre-2.0 and tracking it now has an\n * unclear ROI, so we just mark all the error code that predates 2.0 as 0.x.\n */\nconst FED1_CODE = '0.x';\n\nexport type ErrorCodeMetadata = {\n  addedIn: string,\n  replaces?: string[],\n}\n\nexport type ErrorCodeDefinition = {\n  code: string,\n  description: string,\n  metadata: ErrorCodeMetadata,\n  err: (message: string, options?: GraphQLErrorOptions) => GraphQLError,\n}\n\nconst makeCodeDefinition = (\n  code: string,\n  description: string,\n  metadata: ErrorCodeMetadata = DEFAULT_METADATA\n): ErrorCodeDefinition => ({\n  code,\n  description,\n  metadata,\n  err: (message: string, options?: GraphQLErrorOptions) => new GraphQLError(\n    message,\n    {\n      ...options,\n      extensions: {\n        ...options?.extensions,\n        code,\n      }\n    }\n  ),\n});\n\nexport function extractGraphQLErrorOptions(e: GraphQLError): GraphQLErrorOptions {\n  return {\n    nodes: e.nodes,\n    source: e.source,\n    positions: e.positions,\n    path: e.path,\n    originalError: e.originalError,\n    extensions: e.extensions,\n  };\n}\n\nclass AggregateGraphQLError extends GraphQLError {\n  constructor(\n    code: string,\n    message: string,\n    readonly causes: GraphQLError[],\n    options?: GraphQLErrorOptions,\n  ) {\n    super(\n      message + '. Caused by:\\n' + causes.map((c) => c.toString()).join('\\n\\n'),\n      {\n        ...options,\n        extensions: { code },\n      }\n    );\n  }\n\n  toString() {\n    let output = `[${this.extensions.code}] ${super.toString()}`\n    output += \"\\ncaused by:\";\n    for (const cause of this.causes) {\n      output += \"\\n\\n  - \";\n      output += cause.toString().split(\"\\n\").join(\"\\n    \");\n    }\n    return output;\n  }\n}\n\nexport function aggregateError(code: string, message: string, causes: GraphQLError[]): GraphQLError {\n  return new AggregateGraphQLError(code, message, causes);\n}\n\n/**\n * Given an error, check if it is a graphQL error and potentially extract its causes if is aggregate.\n * If the error is not a graphQL error, undefined is returned.\n */\nexport function errorCauses(e: Error): GraphQLError[] | undefined {\n  if (e instanceof AggregateGraphQLError) {\n    return e.causes;\n  }\n  if (e instanceof GraphQLError) {\n    return [e];\n  }\n  return undefined;\n}\n\nexport function printGraphQLErrorsOrRethrow(e: Error): string {\n  const causes = errorCauses(e);\n  if (!causes) {\n    throw e;\n  }\n  return causes.map(e => e.toString()).join('\\n\\n');\n}\n\nexport function printErrors(errors: GraphQLError[]): string {\n  return errors.map(e => e.toString()).join('\\n\\n');\n}\n/*\n * Most codes currently originate from the initial fed 2 release so we use this for convenience.\n * This can be changed later, inline versions everywhere, if that becomes irrelevant.\n */\nconst DEFAULT_METADATA = { addedIn: '2.0.0' };\n\nexport type ErrorCodeCategory<TElement = string> = {\n  get(element: TElement): ErrorCodeDefinition;\n}\n\nconst makeErrorCodeCategory = <TElement = string>(\n  extractCode: (element: TElement) => string,\n  makeDescription: (element: TElement) => string,\n  metadata: ErrorCodeMetadata = DEFAULT_METADATA,\n): ErrorCodeCategory<TElement> & { createCode(element: TElement): ErrorCodeDefinition } => ({\n  createCode: (element: TElement) => {\n    return makeCodeDefinition(extractCode(element), makeDescription(element), metadata);\n  },\n  get: (element: TElement) => {\n    const def = codeDefByCode[extractCode(element)];\n    assert(def, `Unexpected element: ${element}`);\n    return def;\n  }\n});\n\nconst makeFederationDirectiveErrorCodeCategory = (\n  codeSuffix: string,\n  makeDescription: (directiveName: string) => string,\n  metadata: ErrorCodeMetadata = DEFAULT_METADATA,\n) => makeErrorCodeCategory((directive) => `${directive.toLocaleUpperCase()}_${codeSuffix}`, makeDescription, metadata);\n\n\nexport function errorCode(e: GraphQLError | GraphQLFormattedError): string | undefined {\n  if (!e.extensions || !('code' in e.extensions)) {\n    return undefined;\n  }\n  return e.extensions.code as string;\n}\n\nexport function errorCodeDef(e: GraphQLError | GraphQLFormattedError | string): ErrorCodeDefinition | undefined {\n  const code = typeof e === 'string' ? e : errorCode(e);\n  return code ? codeDefByCode[code] : undefined;\n}\n\nexport function withModifiedErrorMessage(e: GraphQLError, newMessage: string): GraphQLError {\n  return new GraphQLError(\n    newMessage,\n    {\n      nodes: e.nodes,\n      source: e.source,\n      positions: e.positions,\n      path: e.path,\n      originalError: e.originalError,\n      extensions: e.extensions\n    }\n  );\n}\n\nexport function withModifiedErrorNodes(e: GraphQLError, newNodes: readonly ASTNode[] | ASTNode | undefined): GraphQLError {\n  return new GraphQLError(\n    e.message,\n    {\n      nodes: newNodes,\n      source: e.source,\n      positions: e.positions,\n      path: e.path,\n      originalError: e.originalError,\n      extensions: e.extensions\n    }\n  );\n}\n\nconst INVALID_GRAPHQL = makeCodeDefinition(\n  'INVALID_GRAPHQL',\n  'A schema is invalid GraphQL: it violates one of the rule of the specification.'\n);\n\nconst DIRECTIVE_DEFINITION_INVALID = makeCodeDefinition(\n  'DIRECTIVE_DEFINITION_INVALID',\n  'A built-in or federation directive has an invalid definition in the schema.',\n  { ...DEFAULT_METADATA, replaces: ['TAG_DEFINITION_INVALID'] },\n);\n\nconst TYPE_DEFINITION_INVALID = makeCodeDefinition(\n  'TYPE_DEFINITION_INVALID',\n  'A built-in or federation type has an invalid definition in the schema.',\n);\n\nconst UNSUPPORTED_LINKED_FEATURE = makeCodeDefinition(\n  'UNSUPPORTED_LINKED_FEATURE',\n  'Indicates that a feature used in a @link is either unsupported or is used with unsupported options.',\n);\n\nconst UNKNOWN_FEDERATION_LINK_VERSION = makeCodeDefinition(\n  'UNKNOWN_FEDERATION_LINK_VERSION',\n  'The version of federation in a @link directive on the schema is unknown.',\n);\n\nconst UNKNOWN_LINK_VERSION = makeCodeDefinition(\n  'UNKNOWN_LINK_VERSION',\n  'The version of @link set on the schema is unknown.',\n  { addedIn: '2.1.0' },\n);\n\nconst FIELDS_HAS_ARGS = makeFederationDirectiveErrorCodeCategory(\n  'FIELDS_HAS_ARGS',\n  (directive) => `The \\`fields\\` argument of a \\`@${directive}\\` directive includes a field defined with arguments (which is not currently supported).`\n);\n\nconst KEY_FIELDS_HAS_ARGS = FIELDS_HAS_ARGS.createCode('key');\nconst PROVIDES_FIELDS_HAS_ARGS = FIELDS_HAS_ARGS.createCode('provides');\n\nconst DIRECTIVE_FIELDS_MISSING_EXTERNAL = makeFederationDirectiveErrorCodeCategory(\n  'FIELDS_MISSING_EXTERNAL',\n  (directive) => `The \\`fields\\` argument of a \\`@${directive}\\` directive includes a field that is not marked as \\`@external\\`.`,\n  { addedIn: FED1_CODE },\n);\n\nconst PROVIDES_MISSING_EXTERNAL = DIRECTIVE_FIELDS_MISSING_EXTERNAL.createCode('provides');\nconst REQUIRES_MISSING_EXTERNAL = DIRECTIVE_FIELDS_MISSING_EXTERNAL.createCode('requires');\n\nconst DIRECTIVE_UNSUPPORTED_ON_INTERFACE = makeFederationDirectiveErrorCodeCategory(\n  'UNSUPPORTED_ON_INTERFACE',\n  (directive) => `A \\`@${directive}\\` directive is used on an interface, which is ${directive === 'key' ? 'only supported when @linking to federation 2.3+' : 'not (yet) supported'}.`,\n);\n\nconst KEY_UNSUPPORTED_ON_INTERFACE = DIRECTIVE_UNSUPPORTED_ON_INTERFACE.createCode('key');\nconst PROVIDES_UNSUPPORTED_ON_INTERFACE = DIRECTIVE_UNSUPPORTED_ON_INTERFACE.createCode('provides');\nconst REQUIRES_UNSUPPORTED_ON_INTERFACE = DIRECTIVE_UNSUPPORTED_ON_INTERFACE.createCode('requires');\n\nconst DIRECTIVE_IN_FIELDS_ARG = makeFederationDirectiveErrorCodeCategory(\n  'DIRECTIVE_IN_FIELDS_ARG',\n  (directive) => `The \\`fields\\` argument of a \\`@${directive}\\` directive includes some directive applications. This is not supported`,\n  { addedIn: '2.1.0' },\n);\n\nconst KEY_HAS_DIRECTIVE_IN_FIELDS_ARGS = DIRECTIVE_IN_FIELDS_ARG.createCode('key');\nconst PROVIDES_HAS_DIRECTIVE_IN_FIELDS_ARGS = DIRECTIVE_IN_FIELDS_ARG.createCode('provides');\nconst REQUIRES_HAS_DIRECTIVE_IN_FIELDS_ARGS = DIRECTIVE_IN_FIELDS_ARG.createCode('requires');\n\nconst EXTERNAL_UNUSED = makeCodeDefinition(\n  'EXTERNAL_UNUSED',\n  'An `@external` field is not being used by any instance of `@key`, `@requires`, `@provides` or to satisfy an interface implementation.',\n  { addedIn: FED1_CODE },\n);\n\nconst TYPE_WITH_ONLY_UNUSED_EXTERNAL = makeCodeDefinition(\n  'TYPE_WITH_ONLY_UNUSED_EXTERNAL',\n  'A federation 1 schema has a composite type comprised only of unused external fields.'\n  + ` Note that this error can _only_ be raised for federation 1 schema as federation 2 schema do not allow unused external fields (and errors with code ${EXTERNAL_UNUSED.code} will be raised in that case).`\n  + ' But when federation 1 schema are automatically migrated to federation 2 ones, unused external fields are automatically removed, and in rare case this can leave a type empty. If that happens, an error with this code will be raised',\n);\n\nconst PROVIDES_ON_NON_OBJECT_FIELD = makeCodeDefinition(\n  'PROVIDES_ON_NON_OBJECT_FIELD',\n  'A `@provides` directive is used to mark a field whose base type is not an object type.'\n);\n\nconst DIRECTIVE_INVALID_FIELDS_TYPE = makeFederationDirectiveErrorCodeCategory(\n  'INVALID_FIELDS_TYPE',\n  (directive) => `The value passed to the \\`fields\\` argument of a \\`@${directive}\\` directive is not a string.`,\n);\n\nconst KEY_INVALID_FIELDS_TYPE = DIRECTIVE_INVALID_FIELDS_TYPE.createCode('key');\nconst PROVIDES_INVALID_FIELDS_TYPE = DIRECTIVE_INVALID_FIELDS_TYPE.createCode('provides');\nconst REQUIRES_INVALID_FIELDS_TYPE = DIRECTIVE_INVALID_FIELDS_TYPE.createCode('requires');\n\nconst DIRECTIVE_INVALID_FIELDS = makeFederationDirectiveErrorCodeCategory(\n  'INVALID_FIELDS',\n  (directive) => `The \\`fields\\` argument of a \\`@${directive}\\` directive is invalid (it has invalid syntax, includes unknown fields, ...).`,\n);\n\nconst KEY_INVALID_FIELDS = DIRECTIVE_INVALID_FIELDS.createCode('key');\nconst PROVIDES_INVALID_FIELDS = DIRECTIVE_INVALID_FIELDS.createCode('provides');\nconst REQUIRES_INVALID_FIELDS = DIRECTIVE_INVALID_FIELDS.createCode('requires');\n\nconst KEY_FIELDS_SELECT_INVALID_TYPE = makeCodeDefinition(\n  'KEY_FIELDS_SELECT_INVALID_TYPE',\n  'The `fields` argument of `@key` directive includes a field whose type is a list, interface, or union type. Fields of these types cannot be part of a `@key`',\n  { addedIn: FED1_CODE },\n)\n\nconst ROOT_TYPE_USED = makeErrorCodeCategory<SchemaRootKind>(\n  (kind) => `ROOT_${kind.toLocaleUpperCase()}_USED`,\n  (kind) => `A subgraph's schema defines a type with the name \\`${kind}\\`, while also specifying a _different_ type name as the root query object. This is not allowed.`,\n  { addedIn: FED1_CODE },\n);\n\nconst ROOT_QUERY_USED = ROOT_TYPE_USED.createCode('query');\nconst ROOT_MUTATION_USED = ROOT_TYPE_USED.createCode('mutation');\nconst ROOT_SUBSCRIPTION_USED = ROOT_TYPE_USED.createCode('subscription');\n\nconst INVALID_SUBGRAPH_NAME = makeCodeDefinition(\n  'INVALID_SUBGRAPH_NAME',\n  'A subgraph name is invalid (subgraph names cannot be a single underscore (\"_\")).'\n);\n\nconst NO_QUERIES = makeCodeDefinition(\n  'NO_QUERIES',\n  'None of the composed subgraphs expose any query.'\n);\n\nconst INTERFACE_FIELD_NO_IMPLEM = makeCodeDefinition(\n  'INTERFACE_FIELD_NO_IMPLEM',\n  'After subgraph merging, an implementation is missing a field of one of the interface it implements (which can happen for valid subgraphs).'\n);\n\nconst TYPE_KIND_MISMATCH = makeCodeDefinition(\n  'TYPE_KIND_MISMATCH',\n  'A type has the same name in different subgraphs, but a different kind. For instance, one definition is an object type but another is an interface.',\n  { ...DEFAULT_METADATA, replaces: ['VALUE_TYPE_KIND_MISMATCH', 'EXTENSION_OF_WRONG_KIND', 'ENUM_MISMATCH_TYPE'] },\n);\n\nconst CONTEXT_NOT_SET = makeCodeDefinition(\n  'CONTEXT_NOT_SET',\n  'Context is never set for context trying to be used.',\n  { addedIn: '2.8.0' },\n);\n\nconst CONTEXT_INVALID_SELECTION= makeCodeDefinition(\n  'CONTEXT_INVALID_SELECTION',\n  'Selection within @fromContext must resolve to a single field.',\n  { addedIn: '2.8.0' },\n);\n\nconst NO_CONTEXT_IN_SELECTION = makeCodeDefinition(\n  'NO_CONTEXT_IN_SELECTION',\n  'Selection in @fromContext field argument does not reference a context.',\n  { addedIn: '2.8.0' },\n);\n\nconst CONTEXT_NO_RESOLVABLE_KEY = makeCodeDefinition(\n  'CONTEXT_NO_RESOLVABLE_KEY',\n  'If an ObjectType uses a @fromContext, at least one of its keys must be resolvable.',\n  { addedIn: '2.8.0' },\n);\n\nconst CONTEXT_NAME_INVALID = makeCodeDefinition(\n  'CONTEXT_NAME_INVALID',\n  'Context name is invalid.',\n  { addedIn: '2.8.0' },\n);\n\nconst EXTERNAL_TYPE_MISMATCH = makeCodeDefinition(\n  'EXTERNAL_TYPE_MISMATCH',\n  'An `@external` field has a type that is incompatible with the declaration(s) of that field in other subgraphs.',\n  { addedIn: FED1_CODE },\n);\n\nconst EXTERNAL_COLLISION_WITH_ANOTHER_DIRECTIVE = makeCodeDefinition(\n  'EXTERNAL_COLLISION_WITH_ANOTHER_DIRECTIVE',\n  'The @external directive collides with other directives in some situations.',\n  { addedIn: '2.1.0' },\n);\n\nconst EXTERNAL_ARGUMENT_MISSING = makeCodeDefinition(\n  'EXTERNAL_ARGUMENT_MISSING',\n  'An `@external` field is missing some arguments present in the declaration(s) of that field in other subgraphs.',\n);\n\nconst EXTERNAL_ARGUMENT_TYPE_MISMATCH = makeCodeDefinition(\n  'EXTERNAL_ARGUMENT_TYPE_MISMATCH',\n  'An `@external` field declares an argument with a type that is incompatible with the corresponding argument in the declaration(s) of that field in other subgraphs.',\n);\n\nconst EXTERNAL_ARGUMENT_DEFAULT_MISMATCH = makeCodeDefinition(\n  'EXTERNAL_ARGUMENT_DEFAULT_MISMATCH',\n  'An `@external` field declares an argument with a default that is incompatible with the corresponding argument in the declaration(s) of that field in other subgraphs.',\n);\n\nconst EXTERNAL_ON_INTERFACE = makeCodeDefinition(\n  'EXTERNAL_ON_INTERFACE',\n  'The field of an interface type is marked with `@external`: as external is about marking field not resolved by the subgraph and as interface field are not resolved (only implementations of those fields are), an \"external\" interface field is nonsensical',\n);\n\nconst MERGED_DIRECTIVE_APPLICATION_ON_EXTERNAL = makeCodeDefinition(\n  'MERGED_DIRECTIVE_APPLICATION_ON_EXTERNAL',\n  'In a subgraph, a field is both marked @external and has a merged directive applied to it',\n);\n\nconst FIELD_TYPE_MISMATCH = makeCodeDefinition(\n  'FIELD_TYPE_MISMATCH',\n  'A field has a type that is incompatible with other declarations of that field in other subgraphs.',\n  { ...DEFAULT_METADATA, replaces: ['VALUE_TYPE_FIELD_TYPE_MISMATCH'] },\n);\n\nconst ARGUMENT_TYPE_MISMATCH = makeCodeDefinition(\n  'FIELD_ARGUMENT_TYPE_MISMATCH',\n  'An argument (of a field/directive) has a type that is incompatible with that of other declarations of that same argument in other subgraphs.',\n  { ...DEFAULT_METADATA, replaces: ['VALUE_TYPE_INPUT_VALUE_MISMATCH'] },\n);\n\nconst INPUT_FIELD_DEFAULT_MISMATCH = makeCodeDefinition(\n  'INPUT_FIELD_DEFAULT_MISMATCH',\n  'An input field has a default value that is incompatible with other declarations of that field in other subgraphs.',\n);\nconst ARGUMENT_DEFAULT_MISMATCH = makeCodeDefinition(\n  'FIELD_ARGUMENT_DEFAULT_MISMATCH',\n  'An argument (of a field/directive) has a default value that is incompatible with that of other declarations of that same argument in other subgraphs.',\n);\n\nconst EXTENSION_WITH_NO_BASE = makeCodeDefinition(\n  'EXTENSION_WITH_NO_BASE',\n  'A subgraph is attempting to `extend` a type that is not originally defined in any known subgraph.',\n  { addedIn: FED1_CODE },\n);\n\nconst EXTERNAL_MISSING_ON_BASE = makeCodeDefinition(\n  'EXTERNAL_MISSING_ON_BASE',\n  'A field is marked as `@external` in a subgraph but with no non-external declaration in any other subgraph.',\n  { addedIn: FED1_CODE },\n);\n\nconst INVALID_FIELD_SHARING = makeCodeDefinition(\n  'INVALID_FIELD_SHARING',\n  'A field that is non-shareable in at least one subgraph is resolved by multiple subgraphs.'\n);\n\nconst INVALID_SHAREABLE_USAGE = makeCodeDefinition(\n  'INVALID_SHAREABLE_USAGE',\n  'The `@shareable` federation directive is used in an invalid way.',\n  { addedIn: '2.1.2' },\n);\n\nconst INVALID_LINK_DIRECTIVE_USAGE = makeCodeDefinition(\n  'INVALID_LINK_DIRECTIVE_USAGE',\n  'An application of the @link directive is invalid/does not respect the specification.'\n);\n\nconst INVALID_LINK_IDENTIFIER = makeCodeDefinition(\n  'INVALID_LINK_IDENTIFIER',\n  'A url/version for a @link feature is invalid/does not respect the specification.',\n  { addedIn: '2.1.0' },\n);\n\nconst LINK_IMPORT_NAME_MISMATCH = makeCodeDefinition(\n  'LINK_IMPORT_NAME_MISMATCH',\n  'The import name for a merged directive (as declared by the relevant `@link(import:)` argument) is inconsistent between subgraphs.'\n);\n\nconst REFERENCED_INACCESSIBLE = makeCodeDefinition(\n  'REFERENCED_INACCESSIBLE',\n  'An element is marked as @inaccessible but is referenced by an element visible in the API schema.'\n);\n\nconst DEFAULT_VALUE_USES_INACCESSIBLE = makeCodeDefinition(\n  'DEFAULT_VALUE_USES_INACCESSIBLE',\n  'An element is marked as @inaccessible but is used in the default value of an element visible in the API schema.'\n);\n\nconst QUERY_ROOT_TYPE_INACCESSIBLE = makeCodeDefinition(\n  'QUERY_ROOT_TYPE_INACCESSIBLE',\n  'An element is marked as @inaccessible but is the query root type, which must be visible in the API schema.'\n);\n\nconst REQUIRED_INACCESSIBLE = makeCodeDefinition(\n  'REQUIRED_INACCESSIBLE',\n  'An element is marked as @inaccessible but is required by an element visible in the API schema.'\n);\n\nconst IMPLEMENTED_BY_INACCESSIBLE = makeCodeDefinition(\n  'IMPLEMENTED_BY_INACCESSIBLE',\n  'An element is marked as @inaccessible but implements an element visible in the API schema.'\n);\n\nconst DISALLOWED_INACCESSIBLE = makeCodeDefinition(\n  'DISALLOWED_INACCESSIBLE',\n  'An element is marked as @inaccessible that is not allowed to be @inaccessible.'\n);\n\nconst ONLY_INACCESSIBLE_CHILDREN = makeCodeDefinition(\n  'ONLY_INACCESSIBLE_CHILDREN',\n  'A type visible in the API schema has only @inaccessible children.'\n);\n\nconst REQUIRED_INPUT_FIELD_MISSING_IN_SOME_SUBGRAPH = makeCodeDefinition(\n  'REQUIRED_INPUT_FIELD_MISSING_IN_SOME_SUBGRAPH',\n  'A field of an input object type is mandatory in some subgraphs, but the field is not defined in all the subgraphs that define the input object type.'\n);\n\nconst REQUIRED_ARGUMENT_MISSING_IN_SOME_SUBGRAPH = makeCodeDefinition(\n  'REQUIRED_ARGUMENT_MISSING_IN_SOME_SUBGRAPH',\n  'An argument of a field or directive definition is mandatory in some subgraphs, but the argument is not defined in all the subgraphs that define the field or directive definition.'\n);\n\nconst EMPTY_MERGED_INPUT_TYPE = makeCodeDefinition(\n  'EMPTY_MERGED_INPUT_TYPE',\n  'An input object type has no field common to all the subgraphs that define the type. Merging that type would result in an invalid empty input object type.'\n);\n\nconst ENUM_VALUE_MISMATCH = makeCodeDefinition(\n  'ENUM_VALUE_MISMATCH',\n  'An enum type that is used as both an input and output type has a value that is not defined in all the subgraphs that define the enum type.'\n);\n\nconst EMPTY_MERGED_ENUM_TYPE = makeCodeDefinition(\n  'EMPTY_MERGED_ENUM_TYPE',\n  'An enum type has no value common to all the subgraphs that define the type. Merging that type would result in an invalid empty enum type.'\n);\n\nconst SHAREABLE_HAS_MISMATCHED_RUNTIME_TYPES = makeCodeDefinition(\n  'SHAREABLE_HAS_MISMATCHED_RUNTIME_TYPES',\n  'A shareable field return type has mismatched possible runtime types in the subgraphs in which the field is declared. As shared fields must resolve the same way in all subgraphs, this is almost surely a mistake.'\n);\n\nconst SATISFIABILITY_ERROR = makeCodeDefinition(\n  'SATISFIABILITY_ERROR',\n  'Subgraphs can be merged, but the resulting supergraph API would have queries that cannot be satisfied by those subgraphs.',\n);\n\nconst OVERRIDE_FROM_SELF_ERROR = makeCodeDefinition(\n  'OVERRIDE_FROM_SELF_ERROR',\n  'Field with `@override` directive has \"from\" location that references its own subgraph.',\n);\n\nconst OVERRIDE_SOURCE_HAS_OVERRIDE = makeCodeDefinition(\n  'OVERRIDE_SOURCE_HAS_OVERRIDE',\n  'Field which is overridden to another subgraph is also marked @override.',\n);\n\nconst OVERRIDE_COLLISION_WITH_ANOTHER_DIRECTIVE = makeCodeDefinition(\n  'OVERRIDE_COLLISION_WITH_ANOTHER_DIRECTIVE',\n  'The @override directive cannot be used on external fields, nor to override fields with either @external, @provides, or @requires.',\n);\n\nconst OVERRIDE_ON_INTERFACE = makeCodeDefinition(\n  'OVERRIDE_ON_INTERFACE',\n  'The @override directive cannot be used on the fields of an interface type.',\n  { addedIn: '2.3.0' },\n);\n\nconst OVERRIDE_LABEL_INVALID = makeCodeDefinition(\n  'OVERRIDE_LABEL_INVALID',\n  'The @override directive `label` argument must match the pattern /^[a-zA-Z][a-zA-Z0-9_\\-:./]*$/ or /^percent\\((\\d{1,2}(\\.\\d{1,8})?|100)\\)$/',\n  { addedIn: '2.7.0' },\n);\n\nconst UNSUPPORTED_FEATURE = makeCodeDefinition(\n  'UNSUPPORTED_FEATURE',\n  'Indicates an error due to feature currently unsupported by federation.',\n  { addedIn: '2.1.0' },\n);\n\nconst INVALID_FEDERATION_SUPERGRAPH = makeCodeDefinition(\n  'INVALID_FEDERATION_SUPERGRAPH',\n  'Indicates that a schema provided for an Apollo Federation supergraph is not a valid supergraph schema.',\n  { addedIn: '2.1.0' },\n);\n\nconst DOWNSTREAM_SERVICE_ERROR = makeCodeDefinition(\n  'DOWNSTREAM_SERVICE_ERROR',\n  'Indicates an error in a subgraph service query during query execution in a federated service.',\n  { addedIn: FED1_CODE },\n);\n\nconst DIRECTIVE_COMPOSITION_ERROR = makeCodeDefinition(\n  'DIRECTIVE_COMPOSITION_ERROR',\n  'Error when composing custom directives.',\n  { addedIn: '2.1.0' },\n);\n\nconst INTERFACE_OBJECT_USAGE_ERROR = makeCodeDefinition(\n  'INTERFACE_OBJECT_USAGE_ERROR',\n  'Error in the usage of the @interfaceObject directive.',\n  { addedIn: '2.3.0' },\n);\n\nconst INTERFACE_KEY_NOT_ON_IMPLEMENTATION = makeCodeDefinition(\n  'INTERFACE_KEY_NOT_ON_IMPLEMENTATION',\n  'A `@key` is defined on an interface type, but is not defined (or is not resolvable) on at least one of the interface implementations',\n  { addedIn: '2.3.0' },\n);\n\nconst INTERFACE_KEY_MISSING_IMPLEMENTATION_TYPE = makeCodeDefinition(\n  'INTERFACE_KEY_MISSING_IMPLEMENTATION_TYPE',\n  'A subgraph has a `@key` on an interface type, but that subgraph does not define an implementation (in the supergraph) of that interface',\n  { addedIn: '2.3.0' },\n)\n\nconst CONTEXTUAL_ARGUMENT_NOT_CONTEXTUAL_IN_ALL_SUBGRAPHS = makeCodeDefinition(\n    'CONTEXTUAL_ARGUMENT_NOT_CONTEXTUAL_IN_ALL_SUBGRAPHS',\n    'Argument on field is marked contextual in only some subgraphs',\n    { addedIn: '2.7.0' },\n);\n\nconst COST_APPLIED_TO_INTERFACE_FIELD = makeCodeDefinition(\n  'COST_APPLIED_TO_INTERFACE_FIELD',\n  'The `@cost` directive must be applied to concrete types',\n  { addedIn: '2.9.2' },\n);\n\nconst LIST_SIZE_APPLIED_TO_NON_LIST = makeCodeDefinition(\n  'LIST_SIZE_APPLIED_TO_NON_LIST',\n  'The `@listSize` directive must be applied to list types',\n  { addedIn: '2.9.2' },\n);\n\nconst LIST_SIZE_INVALID_ASSUMED_SIZE = makeCodeDefinition(\n  'LIST_SIZE_INVALID_ASSUMED_SIZE',\n  'The `@listSize` directive assumed size cannot be negative',\n  { addedIn: '2.9.2' },\n);\n\nconst LIST_SIZE_INVALID_SLICING_ARGUMENT = makeCodeDefinition(\n  'LIST_SIZE_INVALID_SLICING_ARGUMENT',\n  'The `@listSize` directive must have existing integer slicing arguments',\n  { addedIn: '2.9.2' },\n);\n\nconst LIST_SIZE_INVALID_SIZED_FIELD = makeCodeDefinition(\n  'LIST_SIZE_INVALID_SIZED_FIELD',\n  'The `@listSize` directive must reference existing list fields as sized fields',\n  { addedIn: '2.9.2' },\n);\n\nconst MAX_VALIDATION_SUBGRAPH_PATHS_EXCEEDED = makeCodeDefinition(\n  'MAX_VALIDATION_SUBGRAPH_PATHS_EXCEEDED',\n  'The maximum number of validation subgraph paths has been exceeded.',\n  { addedIn: '2.8.0' },\n);\n\nconst AUTH_REQUIREMENTS_APPLIED_ON_INTERFACE = makeCodeDefinition(\n    'AUTH_REQUIREMENTS_APPLIED_ON_INTERFACE',\n    'The @authenticated, @requiresScopes and @policy directive cannot be applied on interface, interface fields and interface object',\n    { addedIn: '2.9.4' },\n);\n\nconst MISSING_TRANSITIVE_AUTH_REQUIREMENTS = makeCodeDefinition(\n    'MISSING_TRANSITIVE_AUTH_REQUIREMENTS',\n    'Field missing transitive @authenticated, @requiresScopes and/or @policy auth requirements needed to access dependent data.',\n    { addedIn: '2.9.4' },\n)\n\nexport const ERROR_CATEGORIES = {\n  DIRECTIVE_FIELDS_MISSING_EXTERNAL,\n  DIRECTIVE_UNSUPPORTED_ON_INTERFACE,\n  DIRECTIVE_INVALID_FIELDS_TYPE,\n  DIRECTIVE_INVALID_FIELDS,\n  FIELDS_HAS_ARGS,\n  ROOT_TYPE_USED,\n  DIRECTIVE_IN_FIELDS_ARG,\n}\n\nexport const ERRORS = {\n  INVALID_GRAPHQL,\n  DIRECTIVE_DEFINITION_INVALID,\n  TYPE_DEFINITION_INVALID,\n  UNSUPPORTED_LINKED_FEATURE,\n  UNKNOWN_FEDERATION_LINK_VERSION,\n  UNKNOWN_LINK_VERSION,\n  KEY_FIELDS_HAS_ARGS,\n  PROVIDES_FIELDS_HAS_ARGS,\n  PROVIDES_MISSING_EXTERNAL,\n  REQUIRES_MISSING_EXTERNAL,\n  KEY_UNSUPPORTED_ON_INTERFACE,\n  PROVIDES_UNSUPPORTED_ON_INTERFACE,\n  REQUIRES_UNSUPPORTED_ON_INTERFACE,\n  EXTERNAL_UNUSED,\n  EXTERNAL_COLLISION_WITH_ANOTHER_DIRECTIVE,\n  TYPE_WITH_ONLY_UNUSED_EXTERNAL,\n  PROVIDES_ON_NON_OBJECT_FIELD,\n  KEY_INVALID_FIELDS_TYPE,\n  PROVIDES_INVALID_FIELDS_TYPE,\n  REQUIRES_INVALID_FIELDS_TYPE,\n  KEY_INVALID_FIELDS,\n  PROVIDES_INVALID_FIELDS,\n  REQUIRES_INVALID_FIELDS,\n  KEY_FIELDS_SELECT_INVALID_TYPE,\n  ROOT_QUERY_USED,\n  ROOT_MUTATION_USED,\n  ROOT_SUBSCRIPTION_USED,\n  INVALID_SUBGRAPH_NAME,\n  NO_QUERIES,\n  INTERFACE_FIELD_NO_IMPLEM,\n  TYPE_KIND_MISMATCH,\n  CONTEXT_NOT_SET,\n  CONTEXT_INVALID_SELECTION,\n  NO_CONTEXT_IN_SELECTION,\n  CONTEXT_NO_RESOLVABLE_KEY,\n  CONTEXT_NAME_INVALID,\n  EXTERNAL_TYPE_MISMATCH,\n  EXTERNAL_ARGUMENT_MISSING,\n  EXTERNAL_ARGUMENT_TYPE_MISMATCH,\n  EXTERNAL_ARGUMENT_DEFAULT_MISMATCH,\n  EXTERNAL_ON_INTERFACE,\n  MERGED_DIRECTIVE_APPLICATION_ON_EXTERNAL,\n  FIELD_TYPE_MISMATCH,\n  ARGUMENT_TYPE_MISMATCH,\n  INPUT_FIELD_DEFAULT_MISMATCH,\n  ARGUMENT_DEFAULT_MISMATCH,\n  EXTENSION_WITH_NO_BASE,\n  EXTERNAL_MISSING_ON_BASE,\n  INVALID_FIELD_SHARING,\n  INVALID_SHAREABLE_USAGE,\n  INVALID_LINK_DIRECTIVE_USAGE,\n  INVALID_LINK_IDENTIFIER,\n  LINK_IMPORT_NAME_MISMATCH,\n  REFERENCED_INACCESSIBLE,\n  DEFAULT_VALUE_USES_INACCESSIBLE,\n  QUERY_ROOT_TYPE_INACCESSIBLE,\n  REQUIRED_INACCESSIBLE,\n  DISALLOWED_INACCESSIBLE,\n  IMPLEMENTED_BY_INACCESSIBLE,\n  ONLY_INACCESSIBLE_CHILDREN,\n  REQUIRED_ARGUMENT_MISSING_IN_SOME_SUBGRAPH,\n  REQUIRED_INPUT_FIELD_MISSING_IN_SOME_SUBGRAPH,\n  EMPTY_MERGED_INPUT_TYPE,\n  ENUM_VALUE_MISMATCH,\n  EMPTY_MERGED_ENUM_TYPE,\n  SHAREABLE_HAS_MISMATCHED_RUNTIME_TYPES,\n  SATISFIABILITY_ERROR,\n  OVERRIDE_COLLISION_WITH_ANOTHER_DIRECTIVE,\n  OVERRIDE_FROM_SELF_ERROR,\n  OVERRIDE_SOURCE_HAS_OVERRIDE,\n  OVERRIDE_ON_INTERFACE,\n  OVERRIDE_LABEL_INVALID,\n  UNSUPPORTED_FEATURE,\n  INVALID_FEDERATION_SUPERGRAPH,\n  DOWNSTREAM_SERVICE_ERROR,\n  KEY_HAS_DIRECTIVE_IN_FIELDS_ARGS,\n  PROVIDES_HAS_DIRECTIVE_IN_FIELDS_ARGS,\n  REQUIRES_HAS_DIRECTIVE_IN_FIELDS_ARGS,\n  DIRECTIVE_COMPOSITION_ERROR,\n  INTERFACE_OBJECT_USAGE_ERROR,\n  INTERFACE_KEY_NOT_ON_IMPLEMENTATION,\n  INTERFACE_KEY_MISSING_IMPLEMENTATION_TYPE,\n  CONTEXTUAL_ARGUMENT_NOT_CONTEXTUAL_IN_ALL_SUBGRAPHS,\n  // Errors related to demand control\n  COST_APPLIED_TO_INTERFACE_FIELD,\n  LIST_SIZE_APPLIED_TO_NON_LIST,\n  LIST_SIZE_INVALID_ASSUMED_SIZE,\n  LIST_SIZE_INVALID_SIZED_FIELD,\n  LIST_SIZE_INVALID_SLICING_ARGUMENT,\n  MAX_VALIDATION_SUBGRAPH_PATHS_EXCEEDED,\n  AUTH_REQUIREMENTS_APPLIED_ON_INTERFACE,\n  MISSING_TRANSITIVE_AUTH_REQUIREMENTS,\n};\n\nconst codeDefByCode = Object.values(ERRORS).reduce((obj: {[code: string]: ErrorCodeDefinition}, codeDef: ErrorCodeDefinition) => { obj[codeDef.code] = codeDef; return obj; }, {});\n\n/*\n * A list of now-removed errors, each as a pair of the old code and a comment for the removal.\n * This exist mostly for the sake of being included in the auto-generated documentation. But\n * having it here means that grepping any error code in this file should turn up something:\n * - either a currently active code.\n * - or one that has been replaced/generalized (in a `replaces:` of an active code).\n * - or a now removed code below.\n */\nexport const REMOVED_ERRORS = [\n  ['KEY_FIELDS_MISSING_ON_BASE', 'Keys can now use any field from any other subgraph.'],\n  ['KEY_FIELDS_MISSING_EXTERNAL', 'Using `@external` for key fields is now discouraged, unless the field is truly meant to be external.'],\n  ['KEY_MISSING_ON_BASE', 'Each subgraph is now free to declare a key only if it needs it.'],\n  ['MULTIPLE_KEYS_ON_EXTENSION', 'Every subgraph can have multiple keys, as necessary.'],\n  ['KEY_NOT_SPECIFIED', 'Each subgraph can declare key independently of any other subgraph.'],\n  ['EXTERNAL_USED_ON_BASE', 'As there is not type ownership anymore, there is also no particular limitation as to where a field can be external.'],\n\n  ['PROVIDES_NOT_ON_ENTITY', '@provides can now be used on any type.'],\n  ['REQUIRES_FIELDS_MISSING_ON_BASE', 'Fields in @requires can now be from any subgraph.'],\n  ['REQUIRES_USED_ON_BASE', 'As there is not type ownership anymore, there is also no particular limitation as to which subgraph can use a @requires.'],\n\n  ['DUPLICATE_SCALAR_DEFINITION', 'As duplicate scalar definitions is invalid GraphQL, this will now be an error with code `INVALID_GRAPHQL`.'],\n  ['DUPLICATE_ENUM_DEFINITION', 'As duplicate enum definitions is invalid GraphQL, this will now be an error with code `INVALID_GRAPHQL`.'],\n  ['DUPLICATE_ENUM_VALUE', 'As duplicate enum values is invalid GraphQL, this will now be an error with code `INVALID_GRAPHQL`.'],\n\n  ['ENUM_MISMATCH', 'Subgraph definitions for an enum are now merged by composition.'],\n  ['VALUE_TYPE_NO_ENTITY', 'There is no strong different between entity and value types in the model (they are just usage pattern) and a type can have keys in one subgraph but not another.'],\n  ['VALUE_TYPE_UNION_TYPES_MISMATCH', 'Subgraph definitions for an union are now merged by composition.'],\n  ['PROVIDES_FIELDS_SELECT_INVALID_TYPE', '@provides can now be used on field of interface, union and list types.'],\n  ['RESERVED_FIELD_USED', 'This error was previously not correctly enforced: the _service and _entities, if present, were overridden; this is still the case.'],\n\n  ['NON_REPEATABLE_DIRECTIVE_ARGUMENTS_MISMATCH', 'Since federation 2.1.0, the case this error used to cover is now a warning (with code `INCONSISTENT_NON_REPEATABLE_DIRECTIVE_ARGUMENTS`) instead of an error.'],\n  ['REQUIRES_FIELDS_HAS_ARGS', 'Since federation 2.1.1, using fields with arguments in a @requires is fully supported.'],\n\n  ['INTERFACE_FIELD_IMPLEM_TYPE_MISMATCH', 'This error was thrown by a validation introduced to avoid running into a known runtime bug. Since federation 2.3, the underlying runtime bug has been addressed and the validation/limitation was no longer necessary and has been removed.'],\n];\n", "'use strict';\nmodule.exports = (function()\n{\n  function _min(d0, d1, d2, bx, ay)\n  {\n    return d0 < d1 || d2 < d1\n        ? d0 > d2\n            ? d2 + 1\n            : d0 + 1\n        : bx === ay\n            ? d1\n            : d1 + 1;\n  }\n\n  return function(a, b)\n  {\n    if (a === b) {\n      return 0;\n    }\n\n    if (a.length > b.length) {\n      var tmp = a;\n      a = b;\n      b = tmp;\n    }\n\n    var la = a.length;\n    var lb = b.length;\n\n    while (la > 0 && (a.charCodeAt(la - 1) === b.charCodeAt(lb - 1))) {\n      la--;\n      lb--;\n    }\n\n    var offset = 0;\n\n    while (offset < la && (a.charCodeAt(offset) === b.charCodeAt(offset))) {\n      offset++;\n    }\n\n    la -= offset;\n    lb -= offset;\n\n    if (la === 0 || lb < 3) {\n      return lb;\n    }\n\n    var x = 0;\n    var y;\n    var d0;\n    var d1;\n    var d2;\n    var d3;\n    var dd;\n    var dy;\n    var ay;\n    var bx0;\n    var bx1;\n    var bx2;\n    var bx3;\n\n    var vector = [];\n\n    for (y = 0; y < la; y++) {\n      vector.push(y + 1);\n      vector.push(a.charCodeAt(offset + y));\n    }\n\n    var len = vector.length - 1;\n\n    for (; x < lb - 3;) {\n      bx0 = b.charCodeAt(offset + (d0 = x));\n      bx1 = b.charCodeAt(offset + (d1 = x + 1));\n      bx2 = b.charCodeAt(offset + (d2 = x + 2));\n      bx3 = b.charCodeAt(offset + (d3 = x + 3));\n      dd = (x += 4);\n      for (y = 0; y < len; y += 2) {\n        dy = vector[y];\n        ay = vector[y + 1];\n        d0 = _min(dy, d0, d1, bx0, ay);\n        d1 = _min(d0, d1, d2, bx1, ay);\n        d2 = _min(d1, d2, d3, bx2, ay);\n        dd = _min(d2, d3, dd, bx3, ay);\n        vector[y] = dd;\n        d3 = d2;\n        d2 = d1;\n        d1 = d0;\n        d0 = dy;\n      }\n    }\n\n    for (; x < lb;) {\n      bx0 = b.charCodeAt(offset + (d0 = x));\n      dd = ++x;\n      for (y = 0; y < len; y += 2) {\n        dy = vector[y];\n        vector[y] = dd = _min(dy, d0, dd, bx0, vector[y + 1]);\n        d0 = dy;\n      }\n    }\n\n    return dd;\n  };\n})();\n\n", "import levenshtein from 'js-levenshtein';\nimport { mapKeys } from './utils';\n\n/**\n * Given an invalid input string and a list of valid options, returns a filtered\n * list of valid options sorted based on their similarity with the input.\n */\nexport function suggestionList(input: string, options: readonly string[]): string[] {\n  const optionsByDistance = new Map<string, number>();\n\n  const threshold = Math.floor(input.length * 0.4) + 1;\n  const inputLowerCase = input.toLowerCase();\n  for (const option of options) {\n    // Special casing so that if the only mismatch is in uppper/lower-case, then the\n    // option is always shown.\n    const distance = inputLowerCase === option.toLowerCase()\n      ? 1\n      : levenshtein(input, option);\n    if (distance <= threshold) {\n      optionsByDistance.set(option, distance);\n    }\n  }\n\n  return mapKeys(optionsByDistance).sort((a, b) => {\n    const distanceDiff = optionsByDistance.get(a)! - optionsByDistance.get(b)!;\n    return distanceDiff !== 0 ? distanceDiff : a.localeCompare(b);\n  });\n}\n\nconst MAX_SUGGESTIONS = 5;\n\n/**\n * Given [ A, B, C ] return ' Did you mean A, B, or C?'.\n */\nexport function didYouMean(suggestions: readonly string[]): string {\n  const message = ' Did you mean ';\n\n  const quotedSuggestions = suggestions.map((x) => `\"${x}\"`);\n  switch (suggestions.length) {\n    case 0:\n      return '';\n    case 1:\n      return message + quotedSuggestions[0] + '?';\n    case 2:\n      return message + quotedSuggestions[0] + ' or ' + quotedSuggestions[1] + '?';\n  }\n\n  const selected = quotedSuggestions.slice(0, MAX_SUGGESTIONS);\n  const lastItem = selected.pop();\n  return message + selected.join(', ') + ', or ' + lastItem + '?';\n}\n\n", "import {\n  ArgumentDefinition,\n  EnumType,\n  InputFieldDefinition,\n  InputObjectType,\n  InputType,\n  isBooleanType,\n  isCustomScalarType,\n  isEnumType,\n  isFloatType,\n  isIDType,\n  isInputObjectType,\n  isIntType,\n  isListType,\n  isNonNullType,\n  isScalarType,\n  isStringType,\n  isVariable,\n  ScalarType,\n  Schema,\n  Variable,\n  VariableCollector,\n  VariableDefinition,\n  VariableDefinitions,\n} from './definitions';\nimport {\n  ArgumentNode,\n  GraphQLError,\n  Kind,\n  print,\n  ValueNode,\n  ObjectFieldNode,\n  ConstValueNode,\n  ConstObjectFieldNode,\n} from 'graphql';\nimport { didYouMean, suggestionList } from './suggestions';\nimport { inspect } from 'util';\nimport { sameType } from './types';\nimport { assert, assertUnreachable } from './utils';\nimport { ERRORS } from './error';\n\n// Per-GraphQL spec, max and value for an Int type.\nconst MAX_INT = 2147483647;\nconst MIN_INT = -2147483648;\n\n/**\n * Converts a graphQL value into it's textual representation.\n *\n * @param v - the value to convert/display. This method assumes that it is a value graphQL\n *   value (essentially, one that could have been produced by `valueFromAST`/`valueFormASTUntyped`).\n *   If this is not the case, the behaviour is unspecified, and in particular this method may\n *   throw or produce an output that is not valid graphQL syntax.\n * @param expectedType - the type of the value being converted. This is optional is only used to\n *   ensure enum values are displayed as such and not as strings. In other words, the type of\n *   the value should be provided when possible (when the value is known to be of a ype) but\n *   using this method without a type is useful to dispaly the value in error/debug messages\n *   where no type may be known. Note that if `v` is not a valid value for `expectedType`,\n *   this method will not throw but enum values may be represented by strings in the output.\n * @return a textual representation of the value. It is guaranteed to  be valid graphQL syntax\n *   if the input value is a valid graphQL value.\n */\nexport function valueToString(v: any, expectedType?: InputType): string {\n  if (v === undefined || v === null) {\n    return \"null\";\n  }\n\n  if (expectedType && isNonNullType(expectedType)) {\n    return valueToString(v, expectedType.ofType);\n  }\n\n  if (expectedType && isCustomScalarType(expectedType)) {\n    // If the expected type is a custom scalar, we can't really infer anything from it.\n    expectedType = undefined;\n  }\n\n  if (isVariable(v)) {\n    return v.toString();\n  }\n\n  if (Array.isArray(v)) {\n    let elementsType: InputType | undefined = undefined;\n    // If the expected type is not a list, we've been given an invalid type. We don't want this\n    // method to fail though, so we just ignore the provided type from that point one (passing\n    // `undefined` to the recursion).\n    if (expectedType && isListType(expectedType)) {\n      elementsType = expectedType.ofType;\n    }\n    return '[' + v.map(e => valueToString(e, elementsType)).join(', ') + ']';\n  }\n\n  // We know the value is not a list/array. But if the type is a list, we still want to print\n  // the value correctly, at least as long as it's a valid value for the element type, since\n  // list input coercions may allow this.\n  if (expectedType && isListType(expectedType)) {\n    return valueToString(v, expectedType.ofType);\n  }\n\n  if (typeof v === 'object') {\n    if (expectedType && !isInputObjectType(expectedType)) {\n      // expectedType does not match the value, we ignore it for what remains.\n      expectedType = undefined;\n    }\n    return '{' + Object.keys(v).map(k => {\n      const valueType = expectedType ? (expectedType as InputObjectType).field(k)?.type : undefined;\n      return `${k}: ${valueToString(v[k], valueType)}`;\n    }).join(', ') + '}';\n  }\n\n  if (typeof v === 'string') {\n    if (expectedType) {\n      if (isEnumType(expectedType)) {\n        // If the value is essentially invalid (not one of the enum value), then we display it as a string. This\n        // avoid strange syntax errors if the string itself is not even valid graphQL. Note that validation will\n        // reject such a value at some point with a proper error message, but this isn't the right place to error\n        // out and generate something syntactially invalid is dodgy (in particular because the input from which this\n        // value comes was probably syntactially valid, so the value was probably inputed as a string there).\n        return expectedType.value(v) ? v : JSON.stringify(v);\n      }\n      if (expectedType === expectedType.schema().idType() && integerStringRegExp.test(v)) {\n        return v;\n      }\n    }\n    return JSON.stringify(v);\n  }\n\n  return String(v);\n}\n\n// Fundamentally a deep-equal, but the generic 'deep-equal' was showing up on profiling and\n// as we know our values can only so many things, we can do faster fairly simply.\nexport function valueEquals(a: any, b: any): boolean {\n  if (a === b) {\n    return true;\n  }\n  if (Array.isArray(a)) {\n    return Array.isArray(b) && arrayValueEquals(a, b) ;\n  }\n  // Note that typeof null === 'object', so we have to manually rule that out\n  // here.\n  if (a !== null && typeof a === 'object') {\n    return b !== null && typeof b === 'object' && objectEquals(a, b);\n  }\n  return a === b;\n}\n\nfunction arrayValueEquals(a: any[], b: any[]): boolean {\n  if (a.length !== b.length) {\n    return false;\n  }\n  for (let i = 0; i < a.length; ++i) {\n    if (!valueEquals(a[i], b[i])) {\n      return false;\n    }\n  }\n  return true;\n}\n\nfunction objectEquals(a: {[key: string]: any}, b: {[key: string]: any}): boolean {\n  const keys1 = Object.keys(a);\n  const keys2 = Object.keys(b);\n  if (keys1.length != keys2.length) {\n    return false;\n  }\n  for (const key of keys1) {\n    const v1 = a[key];\n    const v2 = b[key];\n    // Beware of false-negative due to getting undefined because the property is not\n    // in args2.\n    if (v2 === undefined && !keys2.includes(key)) {\n      return false;\n    }\n    if (!valueEquals(v1, v2)) {\n      return false;\n    }\n  }\n  return true;\n}\n\nexport function argumentsEquals(args1: {[key: string]: any}, args2: {[key: string]: any}): boolean {\n  if (args1 === args2) {\n    return true;\n  }\n  return objectEquals(args1, args2);\n}\n\nfunction buildError(message: string): Error {\n  // Maybe not the right error for this?\n  return new Error(message);\n}\n\nfunction applyDefaultValues(value: any, type: InputType): any {\n  if (isVariable(value)) {\n    return value;\n  }\n\n  if (value === null) {\n    if (isNonNullType(type)) {\n      throw ERRORS.INVALID_GRAPHQL.err(`Invalid null value for non-null type ${type} while computing default values`);\n    }\n    return null;\n  }\n\n  if (isNonNullType(type)) {\n    return applyDefaultValues(value, type.ofType);\n  }\n\n  if (isListType(type)) {\n    if (Array.isArray(value)) {\n      return value.map(v => applyDefaultValues(v, type.ofType));\n    } else {\n      return applyDefaultValues(value, type.ofType);\n    }\n  }\n\n  if (isInputObjectType(type)) {\n    if (typeof value !== 'object') {\n      throw ERRORS.INVALID_GRAPHQL.err(`Expected value for type ${type} to be an object, but is ${typeof value}.`);\n    }\n\n    const updated = Object.create(null);\n    for (const field of type.fields()) {\n      if (!field.type) {\n        throw buildError(`Cannot compute default value for field ${field.name} of ${type} as the field type is undefined`);\n      }\n      const fieldValue = value[field.name];\n      if (fieldValue === undefined) {\n        if (field.defaultValue !== undefined) {\n          updated[field.name] = applyDefaultValues(field.defaultValue, field.type);\n        } else if (!isNonNullType(field.type)) {\n          updated[field.name] = null;\n        } else {\n          throw ERRORS.INVALID_GRAPHQL.err(`Required field \"${field.name}\" of type ${type} was not provided.`);\n        }\n      } else {\n        updated[field.name] = applyDefaultValues(fieldValue, field.type);\n      }\n    }\n\n    // Ensure every provided field is defined.\n    for (const fieldName of Object.keys(value)) {\n      if (!type.field(fieldName)) {\n        const suggestions = suggestionList(fieldName, type.fields().map(f => f.name));\n        throw ERRORS.INVALID_GRAPHQL.err(`Field \"${fieldName}\" is not defined by type \"${type}\".` + didYouMean(suggestions));\n      }\n    }\n    return updated;\n  }\n  return value;\n}\n\nexport function withDefaultValues(value: any, argument: ArgumentDefinition<any>): any {\n  if (!argument.type) {\n    throw buildError(`Cannot compute default value for argument ${argument} as the type is undefined`);\n  }\n  if (value === undefined) {\n    if (argument.defaultValue !== undefined) {\n      return applyDefaultValues(argument.defaultValue, argument.type);\n    } else if (!isNonNullType(argument.type)) {\n      return null;\n    } else {\n      throw ERRORS.INVALID_GRAPHQL.err(`Required argument \"${argument.coordinate}\" was not provided.`);\n    }\n  }\n  return applyDefaultValues(value, argument.type);\n}\n\nconst integerStringRegExp = /^-?(?:0|[1-9][0-9]*)$/;\n\nfunction objectFieldNodeToConst(field: ObjectFieldNode): ConstObjectFieldNode {\n  return { ...field, value: valueNodeToConstValueNode(field.value) };\n}\n\n/**\n * Transforms a ValueNode to a ConstValueNode. This should only be invoked when we know that the value node can be const\n * as it will result in an exception if it contains a VariableNode\n */\nexport function valueNodeToConstValueNode(value: ValueNode): ConstValueNode {\n  if (value.kind === Kind.NULL\n    || value.kind === Kind.INT\n    || value.kind === Kind.FLOAT\n    || value.kind === Kind.STRING\n    || value.kind === Kind.BOOLEAN\n    || value.kind === Kind.ENUM\n    ) {\n    return value;\n  }\n  if (value.kind === Kind.LIST) {\n    const constValues = value.values.map(v => valueNodeToConstValueNode(v));\n    return { ...value, values: constValues };\n  }\n  if (value.kind === Kind.OBJECT) {\n    const constFields = value.fields.map(f => objectFieldNodeToConst(f));\n    return { ...value, fields: constFields };\n  }\n  if (value.kind === Kind.VARIABLE) {\n    // VarableNode does not exist in ConstValueNode\n    throw new Error('Unexpected VariableNode in const AST');\n  }\n  assertUnreachable(value);\n}\n\n// Adapted from the `astFromValue` function in graphQL-js\nexport function valueToAST(value: any, type: InputType): ValueNode | undefined {\n  if (value === undefined) {\n    return undefined;\n  }\n\n  if (isNonNullType(type)) {\n    const astValue = valueToAST(value, type.ofType);\n    if (astValue?.kind === Kind.NULL) {\n      throw buildError(`Invalid null value ${valueToString(value)} for non-null type ${type}`);\n    }\n     return astValue;\n  }\n\n  // only explicit null, not undefined, NaN\n  if (value === null) {\n    return { kind: Kind.NULL };\n  }\n\n  if (isVariable(value)) {\n    return { kind: Kind.VARIABLE, name: { kind: Kind.NAME, value: value.name } };\n  }\n\n  if (isCustomScalarType(type)) {\n    return valueToASTUntyped(value);\n  }\n\n  // Convert JavaScript array to GraphQL list. If the GraphQLType is a list, but\n  // the value is not an array, convert the value using the list's item type.\n  if (isListType(type)) {\n    const itemType: InputType = type.ofType;\n    const items = Array.from(value);\n    if (items != null) {\n      const valuesNodes = [];\n      for (const item of items) {\n        const itemNode = valueToAST(item, itemType);\n        if (itemNode != null) {\n          valuesNodes.push(itemNode);\n        }\n      }\n      return { kind: Kind.LIST, values: valuesNodes };\n    }\n    return valueToAST(value, itemType);\n  }\n\n  // Populate the fields of the input object by creating ASTs from each value\n  // in the JavaScript object according to the fields in the input type.\n  if (isInputObjectType(type)) {\n    if (typeof value !== 'object') {\n      throw buildError(`Invalid non-objet value for input type ${type}, cannot be converted to AST: ${inspect(value, true, 10, true)}`);\n    }\n    const fieldNodes: ObjectFieldNode[] = [];\n    for (const field of type.fields()) {\n      if (!field.type) {\n        throw buildError(`Cannot convert value ${valueToString(value)} as field ${field} has no type set`);\n      }\n      const fieldValue = valueToAST(value[field.name], field.type);\n      if (fieldValue) {\n        fieldNodes.push({\n          kind: Kind.OBJECT_FIELD,\n          name: { kind: Kind.NAME, value: field.name },\n          value: fieldValue,\n        });\n      }\n    }\n    return { kind: Kind.OBJECT, fields: fieldNodes };\n  }\n\n  // TODO: we may have to handle some coercions (not sure it matters in our use case\n  // though).\n\n  if (typeof value === 'boolean') {\n    return { kind: Kind.BOOLEAN, value: value };\n  }\n\n  if (typeof value === 'number' && isFinite(value)) {\n    const stringNum = String(value);\n    return integerStringRegExp.test(stringNum)\n      ? { kind: Kind.INT, value: stringNum }\n      : { kind: Kind.FLOAT, value: stringNum };\n  }\n\n  if (typeof value === 'string') {\n    // Enum types use Enum literals.\n    if (isEnumType(type)) {\n      return { kind: Kind.ENUM, value: value };\n    }\n\n    // ID types can use Int literals.\n    if (type === type.schema().idType() && integerStringRegExp.test(value)) {\n      return { kind: Kind.INT, value: value };\n    }\n\n    return {\n      kind: Kind.STRING,\n      value: value,\n    };\n  }\n\n  throw buildError(`Invalid value for type ${type}, cannot be converted to AST: ${inspect(value)}`);\n}\n\nfunction valueToASTUntyped(value: any): ValueNode | undefined {\n  if (value === undefined) {\n    return undefined;\n  }\n\n  if (value === null) {\n    return { kind: Kind.NULL };\n  }\n\n  if (isVariable(value)) {\n    return { kind: Kind.VARIABLE, name: { kind: Kind.NAME, value: value.name } };\n  }\n\n  // Convert JavaScript array to GraphQL list. If the GraphQLType is a list, but\n  // the value is not an array, convert the value using the list's item type.\n  if (Array.isArray(value)) {\n    const valuesNodes = [];\n    for (const item of value) {\n      const itemNode = valueToASTUntyped(item);\n      if (itemNode !== undefined) {\n        valuesNodes.push(itemNode);\n      }\n    }\n    return { kind: Kind.LIST, values: valuesNodes };\n  }\n\n  if (typeof value === 'object') {\n    const fieldNodes: ObjectFieldNode[] = [];\n    for (const key of Object.keys(value)) {\n      const fieldValue = valueToASTUntyped(value[key]);\n      if (fieldValue) {\n        fieldNodes.push({\n          kind: Kind.OBJECT_FIELD,\n          name: { kind: Kind.NAME, value: key },\n          value: fieldValue,\n        });\n      }\n    }\n    return { kind: Kind.OBJECT, fields: fieldNodes };\n  }\n\n  if (typeof value === 'boolean') {\n    return { kind: Kind.BOOLEAN, value: value };\n  }\n\n  if (typeof value === 'number' && isFinite(value)) {\n    const stringNum = String(value);\n    return integerStringRegExp.test(stringNum)\n      ? { kind: Kind.INT, value: stringNum }\n      : { kind: Kind.FLOAT, value: stringNum };\n  }\n\n  if (typeof value === 'string') {\n    return { kind: Kind.STRING, value: value };\n  }\n\n  throw buildError(`Invalid value, cannot be converted to AST: ${inspect(value, true, 10, true)}`);\n}\n\n// see https://spec.graphql.org/draft/#IsVariableUsageAllowed()\nfunction isValidVariable(variable: VariableDefinition, locationType: InputType, locationDefault: any): boolean {\n  const variableType = variable.type;\n\n  if (isNonNullType(locationType) && !isNonNullType(variableType)) {\n    const hasVariableDefault = variable.defaultValue !== undefined && variable.defaultValue !== null;\n    const hasLocationDefault = locationDefault !== undefined;\n    if (!hasVariableDefault && !hasLocationDefault) {\n      return false;\n    }\n    return areTypesCompatible(variableType, locationType.ofType);\n  }\n\n  return areTypesCompatible(variableType, locationType);\n}\n\n// see https://spec.graphql.org/draft/#AreTypesCompatible()\nfunction areTypesCompatible(variableType: InputType, locationType: InputType): boolean {\n  if (isNonNullType(locationType)) {\n    if (!isNonNullType(variableType)) {\n      return false;\n    }\n    return areTypesCompatible(variableType.ofType, locationType.ofType);\n  }\n  if (isNonNullType(variableType)) {\n    return areTypesCompatible(variableType.ofType, locationType);\n  }\n  if (isListType(locationType)) {\n    if (!isListType(variableType)) {\n      return false;\n    }\n    return areTypesCompatible(variableType.ofType, locationType.ofType);\n  }\n  return !isListType(variableType) && sameType(variableType, locationType);\n}\n\nexport function isValidValue(value: any, argument: ArgumentDefinition<any> | InputFieldDefinition, variableDefinitions: VariableDefinitions): boolean {\n  return isValidValueApplication(value, argument.type!, argument.defaultValue, variableDefinitions);\n}\n\nexport function isValidValueApplication(value: any, locationType: InputType, locationDefault: any, variableDefinitions: VariableDefinitions): boolean {\n  // Note that this needs to be first, or the recursive call within 'isNonNullType' would break for variables\n  if (isVariable(value)) {\n    const definition = variableDefinitions.definition(value);\n    return !!definition && isValidVariable(definition, locationType, locationDefault);\n  }\n\n  if (isNonNullType(locationType)) {\n    return value !== null && isValidValueApplication(value, locationType.ofType, undefined, variableDefinitions);\n  }\n\n  if (value === null || value === undefined) {\n    return true;\n  }\n\n  if (isListType(locationType)) {\n    const itemType: InputType = locationType.ofType;\n    if (Array.isArray(value)) {\n      return value.every(item => isValidValueApplication(item, itemType, undefined, variableDefinitions));\n    }\n    // Equivalent of coercing non-null element as a list of one.\n    return isValidValueApplication(value, itemType, locationDefault, variableDefinitions);\n  }\n\n  if (isInputObjectType(locationType)) {\n    if (typeof value !== 'object') {\n      return false;\n    }\n    const valueKeys = new Set(Object.keys(value));\n    const fieldsAreValid = locationType.fields().every(field => {\n      valueKeys.delete(field.name);\n      return isValidValueApplication(value[field.name], field.type!, field.defaultValue, variableDefinitions)\n    });\n    const hasUnexpectedField = valueKeys.size !== 0\n    return fieldsAreValid && !hasUnexpectedField;\n  }\n\n  // TODO: we may have to handle some coercions (not sure it matters in our use case\n  // though).\n  return isValidLeafValue(locationType.schema(), value, locationType);\n}\n\nexport function valueFromAST(node: ValueNode, expectedType: InputType): any {\n  if (node.kind === Kind.NULL) {\n    if (isNonNullType(expectedType)) {\n      throw ERRORS.INVALID_GRAPHQL.err(`Invalid null value for non-null type \"${expectedType}\"`);\n    }\n    return null;\n  }\n\n  if (node.kind === Kind.VARIABLE) {\n    return new Variable(node.name.value);\n  }\n\n  if (isNonNullType(expectedType)) {\n    expectedType = expectedType.ofType;\n  }\n\n  if (isListType(expectedType)) {\n    const baseType = expectedType.ofType;\n    if (node.kind === Kind.LIST) {\n      return node.values.map(v => valueFromAST(v, baseType));\n    }\n    return [valueFromAST(node, baseType)];\n  }\n\n  if (isIntType(expectedType)) {\n    if (node.kind !== Kind.INT) {\n      throw ERRORS.INVALID_GRAPHQL.err(`Int cannot represent non-integer value ${print(node)}.`);\n    }\n    const i = parseInt(node.value, 10);\n    if (i > MAX_INT || i < MIN_INT) {\n      throw ERRORS.INVALID_GRAPHQL.err(`Int cannot represent non 32-bit signed integer value ${i}.`);\n    }\n    return i;\n  }\n\n  if (isFloatType(expectedType)) {\n    let parsed: number;\n    if (node.kind === Kind.INT) {\n      parsed = parseInt(node.value, 10);\n    } else if (node.kind === Kind.FLOAT) {\n      parsed = parseFloat(node.value);\n    } else {\n      throw ERRORS.INVALID_GRAPHQL.err(`Float can only represent integer or float value, but got a ${node.kind}.`);\n    }\n    if (!isFinite(parsed)) {\n      throw ERRORS.INVALID_GRAPHQL.err( `Float cannot represent non numeric value ${parsed}.`);\n    }\n    return parsed;\n  }\n\n  if (isBooleanType(expectedType)) {\n    if (node.kind !== Kind.BOOLEAN) {\n      throw ERRORS.INVALID_GRAPHQL.err(`Boolean cannot represent a non boolean value ${print(node)}.`);\n    }\n    return node.value;\n  }\n\n  if (isStringType(expectedType)) {\n    if (node.kind !== Kind.STRING) {\n      throw ERRORS.INVALID_GRAPHQL.err(`String cannot represent non string value ${print(node)}.`);\n    }\n    return node.value;\n  }\n\n  if (isIDType(expectedType)) {\n    if (node.kind !== Kind.STRING && node.kind !== Kind.INT) {\n      throw ERRORS.INVALID_GRAPHQL.err(`ID cannot represent value ${print(node)}.`);\n    }\n    return node.value;\n  }\n\n  if (isScalarType(expectedType)) {\n    return valueFromASTUntyped(node);\n  }\n\n  if (isInputObjectType(expectedType)) {\n    if (node.kind !== Kind.OBJECT) {\n      throw ERRORS.INVALID_GRAPHQL.err(`Input Object Type ${expectedType} cannot represent non-object value ${print(node)}.`);\n    }\n    const obj = Object.create(null);\n    for (const f of node.fields) {\n      const name = f.name.value;\n      const field = expectedType.field(name);\n      if (!field) {\n        throw ERRORS.INVALID_GRAPHQL.err(`Unknown field \"${name}\" found in value for Input Object Type \"${expectedType}\".`);\n      }\n      // TODO: as we recurse in sub-objects, we may get an error on a field value deep in the object\n      // and the error will not be precise to where it happens. We could try to build the path to\n      // the error and include it in the error somehow.\n      obj[name] = valueFromAST(f.value, field.type!);\n    }\n    return obj;\n  }\n\n  if (isEnumType(expectedType)) {\n    if (node.kind !== Kind.STRING && node.kind !== Kind.ENUM) {\n      throw ERRORS.INVALID_GRAPHQL.err(`Enum Type ${expectedType} cannot represent value ${print(node)}.`);\n    }\n    if (!expectedType.value(node.value)) {\n      throw ERRORS.INVALID_GRAPHQL.err(`Enum Type ${expectedType} has no value ${node.value}.`);\n    }\n    return node.value;\n  }\n\n  assert(false, () => `Unexpected input type ${expectedType} of kind ${expectedType.kind}.`);\n}\n\nexport function valueFromASTUntyped(node: ValueNode): any {\n  switch (node.kind) {\n    case Kind.NULL:\n      return null;\n    case Kind.INT:\n      return parseInt(node.value, 10);\n    case Kind.FLOAT:\n      return parseFloat(node.value);\n    case Kind.STRING:\n    case Kind.ENUM:\n    case Kind.BOOLEAN:\n      return node.value;\n    case Kind.LIST:\n      return node.values.map(valueFromASTUntyped);\n    case Kind.OBJECT:\n      const obj = Object.create(null);\n      node.fields.forEach(f => obj[f.name.value] = valueFromASTUntyped(f.value));\n      return obj;\n    case Kind.VARIABLE:\n      return new Variable(node.name.value);\n  }\n}\n\nexport function isValidLeafValue(schema: Schema, value: any, type: ScalarType | EnumType): boolean {\n  if (isCustomScalarType(type)) {\n    // There is no imposition on what a custom scalar value can be.\n    return true;\n  }\n\n  if (typeof value === 'boolean') {\n    return type === schema.booleanType();\n  }\n\n  if (typeof value === 'number' && isFinite(value)) {\n    const stringNum = String(value);\n    if (type === schema.intType() || type === schema.idType()) {\n      return integerStringRegExp.test(stringNum);\n    }\n    return type === schema.floatType();\n  }\n\n  if (typeof value === 'string') {\n    if (isEnumType(type)) {\n      return type.value(value) !== undefined;\n    }\n    return type !== schema.booleanType()\n      && type !== schema.intType()\n      && type !== schema.floatType();\n  }\n  return false;\n}\n\nexport function argumentsFromAST(\n  context: string,\n  args: readonly ArgumentNode[] | undefined,\n  argsDefiner: { argument(name: string): ArgumentDefinition<any> | undefined }\n): {[key: string]: any} | undefined {\n  if (!args || args.length === 0) {\n    return undefined;\n  }\n\n  const values = Object.create(null);\n  for (const argNode of args) {\n    const name = argNode.name.value;\n    const expectedType = argsDefiner.argument(name)?.type;\n    if (!expectedType) {\n      throw ERRORS.INVALID_GRAPHQL.err(\n        `Unknown argument \"${name}\" found in value: \"${context}\" has no argument named \"${name}\"`\n      );\n    }\n    try {\n      values[name] = valueFromAST(argNode.value, expectedType);\n    } catch (e) {\n      if (e instanceof GraphQLError) {\n        throw ERRORS.INVALID_GRAPHQL.err(`Invalid value for argument \"${name}\": ${e.message}`);\n      }\n      throw e;\n    }\n  }\n  return values;\n}\n\nexport function collectVariablesInValue(value: any, collector: VariableCollector) {\n  if (isVariable(value)) {\n    collector.add(value);\n    return;\n  }\n\n  if (!value) {\n    return;\n  }\n\n  if (Array.isArray(value)) {\n    value.forEach(v => collectVariablesInValue(v, collector));\n  }\n\n  if (typeof value === 'object') {\n    Object.keys(value).forEach(k => collectVariablesInValue(value[k], collector));\n  }\n}\n", "import { FeatureDefinition, FeatureDefinitions, FeatureUrl } from \"./specs/coreSpec\";\n\nconst registeredFeatures = new Map<string, FeatureDefinitions>();\n\nexport function registerKnownFeature(definitions: FeatureDefinitions) {\n  if (!registeredFeatures.has(definitions.identity)) {\n    registeredFeatures.set(definitions.identity, definitions);\n  }\n}\n\nexport function coreFeatureDefinitionIfKnown(url: FeatureUrl): FeatureDefinition | undefined {\n  return registeredFeatures.get(url.identity)?.find(url.version);\n}\n\n/**\n * Removes a feature from the set of known features.\n *\n * This exists purely for testing purposes. There is no reason to unregistered features otherwise.\n */\nexport function unregisterKnownFeatures(definitions: FeatureDefinitions) {\n  registeredFeatures.delete(definitions.identity);\n}\n", "import { ASTNode, DirectiveLocation, GraphQLError } from \"graphql\";\nimport {\n  ArgumentDefinition,\n  CoreFeature,\n  DirectiveDefinition,\n  EnumType,\n  InputType,\n  isCustomScalarType,\n  isEnumType,\n  isListType,\n  isNonNullType,\n  isObjectType,\n  isUnionType,\n  NamedType,\n  ObjectType,\n  OutputType,\n  ScalarType,\n  Schema,\n  UnionType,\n} from \"./definitions\";\nimport { ERRORS } from \"./error\";\nimport { valueEquals, valueToString } from \"./values\";\nimport { sameType } from \"./types\";\nimport { arrayEquals, assert } from \"./utils\";\nimport { ArgumentCompositionStrategy } from \"./argumentCompositionStrategies\";\nimport { FeatureDefinition, FeatureVersion } from \"./specs/coreSpec\";\nimport { Subgraph } from '.';\n\nexport type DirectiveSpecification = {\n  name: string,\n  checkOrAdd: (schema: Schema, feature?: CoreFeature, asBuiltIn?: boolean) => GraphQLError[],\n  composition?: DirectiveCompositionSpecification,\n}\n\nexport type DirectiveCompositionSpecification = {\n  supergraphSpecification: (federationVersion: FeatureVersion) => FeatureDefinition,\n  useJoinDirective: boolean,\n  argumentsMerger?: (schema: Schema, feature: CoreFeature) => ArgumentMerger | GraphQLError,\n  staticArgumentTransform?: StaticArgumentsTransform,\n}\n\nexport type StaticArgumentsTransform = (subgraph: Subgraph, args: Readonly<{[key: string]: any}>) => Readonly<{[key: string]: any}>;\n\nexport type ArgumentMerger = {\n  merge: (argName: string, values: any[]) => any,\n  toString: () => string,\n}\n\nexport type TypeSpecification = {\n  name: string,\n  checkOrAdd: (schema: Schema, feature?: CoreFeature, asBuiltIn?: boolean) => GraphQLError[],\n}\n\nexport type ArgumentSpecification = {\n  name: string,\n  type: (schema: Schema, feature?: CoreFeature) => InputType | GraphQLError[],\n  defaultValue?: any,\n}\n\nexport type DirectiveArgumentSpecification = ArgumentSpecification & {\n  compositionStrategy?: ArgumentCompositionStrategy,\n}\n\nexport type FieldSpecification = {\n  name: string,\n  type: OutputType,\n  args?: ResolvedArgumentSpecification[],\n}\n\nexport type ResolvedArgumentSpecification = {\n  name: string,\n  type: InputType,\n  defaultValue?: any,\n}\n\nexport type InputFieldSpecification = {\n  name: string,\n  type: InputType,\n  defaultValue?: any,\n}\n\nexport function createDirectiveSpecification({\n  name,\n  locations,\n  repeatable = false,\n  args = [],\n  composes = false,\n  supergraphSpecification = undefined,\n  useJoinDirective = false,\n  staticArgumentTransform = undefined,\n}: {\n  name: string,\n  locations: DirectiveLocation[],\n  repeatable?: boolean,\n  args?: DirectiveArgumentSpecification[],\n  composes?: boolean,\n  supergraphSpecification?: (fedVersion: FeatureVersion) => FeatureDefinition,\n  useJoinDirective?: boolean,\n  staticArgumentTransform?: (subgraph: Subgraph, args: {[key: string]: any}) => {[key: string]: any},\n}): DirectiveSpecification {\n  let composition: DirectiveCompositionSpecification | undefined = undefined;\n  if (composes) {\n    assert(supergraphSpecification, `Should provide a @link specification to use in supergraph for directive @${name} if it composes`);\n    const argStrategies = new Map(args.filter((arg) => arg.compositionStrategy).map((arg) => [arg.name, arg.compositionStrategy!]));\n    let argumentsMerger: ((schema: Schema, feature: CoreFeature) => ArgumentMerger | GraphQLError) | undefined = undefined;\n    if (argStrategies.size > 0) {\n      assert(!repeatable, () => `Invalid directive specification for @${name}: @${name} is repeatable and should not define composition strategy for its arguments`);\n      assert(argStrategies.size === args.length, () => `Invalid directive specification for @${name}: not all arguments define a composition strategy`);\n      argumentsMerger = (schema, feature) => {\n        // Validate that the arguments have compatible types with the declared strategies (a bit unfortunate that we can't do this until\n        // we have a schema but well, not a huge deal either).\n        for (const { name: argName, type } of args) {\n          const strategy = argStrategies.get(argName);\n          // Note that we've built `argStrategies` from the declared args and checked that all argument had a strategy, so it would be\n          // a bug in the code if we didn't get a strategy (not an issue in the directive declaration).\n          assert(strategy, () => `Should have a strategy for ${argName}`);\n          const argType = type(schema, feature);\n          // By the time we call this, the directive should have been added to the schema and so getting the type should not raise errors.\n          assert(!Array.isArray(argType), () => `Should have gotten error getting type for @${name}(${argName}:), but got ${argType}`)\n          const { valid, supportedMsg } = strategy.isTypeSupported(schema, argType);\n          if (!valid) {\n            return new GraphQLError(\n              `Invalid composition strategy ${strategy.name} for argument @${name}(${argName}:) of type ${argType}; `\n              + `${strategy.name} only supports ${supportedMsg}`\n            );\n          }\n        }\n        return {\n          merge: (argName, values) => {\n            const strategy = argStrategies.get(argName);\n            assert(strategy, () => `Should have a strategy for ${argName}`);\n            return strategy.mergeValues(values);\n          },\n          toString: () => {\n            if (argStrategies.size === 0) {\n              return \"<none>\";\n            }\n            return '{ ' + [...argStrategies.entries()].map(([arg, strategy]) => `\"${arg}\": ${strategy.name}`).join(', ') + ' }';\n          }\n        };\n      }\n    }\n    composition = {\n      supergraphSpecification,\n      useJoinDirective: useJoinDirective ?? false,\n      argumentsMerger,\n      staticArgumentTransform,\n    };\n  }\n\n  return {\n    name,\n    composition,\n    checkOrAdd: (schema: Schema, feature?: CoreFeature, asBuiltIn?: boolean) => {\n      const actualName = feature?.directiveNameInSchema(name) ?? name;\n      const { resolvedArgs, errors } = args.reduce<{ resolvedArgs: (ResolvedArgumentSpecification & { compositionStrategy?: ArgumentCompositionStrategy })[], errors: GraphQLError[] }>(\n        ({ resolvedArgs, errors }, arg) => {\n          const typeOrErrors = arg.type(schema, feature);\n          if (Array.isArray(typeOrErrors)) {\n            errors.push(...typeOrErrors);\n          } else {\n            resolvedArgs.push({ ...arg, type: typeOrErrors });\n          }\n          return { resolvedArgs, errors };\n        },\n        { resolvedArgs: [], errors: [] }\n      );\n      if (errors.length > 0) {\n        return errors;\n      }\n      const existing = schema.directive(actualName);\n      if (existing) {\n        return ensureSameDirectiveStructure({ name: actualName, locations, repeatable, args: resolvedArgs }, existing);\n      } else {\n        const directive = schema.addDirectiveDefinition(new DirectiveDefinition(actualName, asBuiltIn));\n        directive.repeatable = repeatable;\n        directive.addLocations(...locations);\n        for (const { name, type, defaultValue } of resolvedArgs) {\n          directive.addArgument(name, type, defaultValue);\n        }\n        return [];\n      }\n    },\n  }\n}\n\nexport function createScalarTypeSpecification({ name }: { name: string }): TypeSpecification {\n  return {\n    name,\n    checkOrAdd: (schema: Schema, feature?: CoreFeature, asBuiltIn?: boolean) => {\n      const actualName = feature?.typeNameInSchema(name) ?? name;\n      const existing = schema.type(actualName);\n      if (existing) {\n        return ensureSameTypeKind('ScalarType', existing);\n      } else {\n        schema.addType(new ScalarType(actualName, asBuiltIn));\n        return [];\n      }\n    },\n  }\n}\n\nexport function createObjectTypeSpecification({\n  name,\n  fieldsFct,\n}: {\n  name: string,\n  fieldsFct: (schema: Schema) => FieldSpecification[],\n}): TypeSpecification {\n  return {\n    name,\n    checkOrAdd: (schema: Schema, feature?: CoreFeature, asBuiltIn?: boolean) => {\n      const actualName = feature?.typeNameInSchema(name) ?? name;\n      const expectedFields = fieldsFct(schema);\n      const existing = schema.type(actualName);\n      if (existing) {\n        let errors = ensureSameTypeKind('ObjectType', existing);\n        if (errors.length > 0) {\n          return errors;\n        }\n        assert(isObjectType(existing), 'Should be an object type');\n        for (const { name, type, args } of expectedFields) {\n          const existingField = existing.field(name);\n          if (!existingField) {\n            errors = errors.concat(ERRORS.TYPE_DEFINITION_INVALID.err(\n              `Invalid definition of type ${name}: missing field ${name}`,\n              { nodes: existing.sourceAST },\n            ));\n            continue;\n          }\n          // We allow adding non-nullability because we've seen redefinition of the federation _Service type with type String! for the `sdl` field\n          // and we don't want to break backward compatibility as this doesn't feel too harmful.\n          let existingType = existingField.type!;\n          if (!isNonNullType(type) && isNonNullType(existingType)) {\n            existingType = existingType.ofType;\n          }\n          if (!sameType(type, existingType)) {\n            errors = errors.concat(ERRORS.TYPE_DEFINITION_INVALID.err(\n              `Invalid definition for field ${name} of type ${name}: should have type ${type} but found type ${existingField.type}`,\n              { nodes: existingField.sourceAST },\n            ));\n          }\n          errors = errors.concat(ensureSameArguments(\n            { name, args },\n            existingField,\n            `field \"${existingField.coordinate}\"`,\n          ));\n        }\n        return errors;\n      } else {\n        const createdType = schema.addType(new ObjectType(actualName, asBuiltIn));\n        for (const { name, type, args } of expectedFields) {\n          const field = createdType.addField(name, type);\n          for (const { name: argName, type: argType, defaultValue } of args ?? []) {\n            field.addArgument(argName, argType, defaultValue);\n          }\n        }\n        return [];\n      }\n    },\n  }\n}\n\nexport function createUnionTypeSpecification({\n  name,\n  membersFct,\n}: {\n  name: string,\n  membersFct: (schema: Schema) => string[],\n}): TypeSpecification {\n  return {\n    name,\n    checkOrAdd: (schema: Schema, feature?: CoreFeature, asBuiltIn?: boolean) => {\n      const actualName = feature?.typeNameInSchema(name) ?? name;\n      const existing = schema.type(actualName);\n      const expectedMembers = membersFct(schema).sort((n1, n2) => n1.localeCompare(n2));\n      if (expectedMembers.length === 0) {\n        if (existing) {\n          return [ERRORS.TYPE_DEFINITION_INVALID.err(\n            `Invalid definition of type ${name}: expected the union type to not exist/have no members but it is defined.`,\n            { nodes: existing.sourceAST },\n          )];\n        }\n        return [];\n      }\n      if (existing) {\n        let errors = ensureSameTypeKind('UnionType', existing);\n        if (errors.length > 0) {\n          return errors;\n        }\n        assert(isUnionType(existing), 'Should be an union type');\n        const actualMembers = existing.members().map(m => m.type.name).sort((n1, n2) => n1.localeCompare(n2));\n        // This is kind of fragile in a core schema world where members may have been renamed, but we currently\n        // only use this one for the _Entity type where that shouldn't be an issue.\n        if (!arrayEquals(expectedMembers, actualMembers)) {\n          errors = errors.concat(ERRORS.TYPE_DEFINITION_INVALID.err(\n            `Invalid definition of type ${name}: expected members [${expectedMembers}] but found [${actualMembers}].`,\n            { nodes: existing.sourceAST },\n          ));\n        }\n        return errors;\n      } else {\n        const type = schema.addType(new UnionType(actualName, asBuiltIn));\n        for (const member of expectedMembers) {\n          type.addType(member);\n        }\n        return [];\n      }\n    },\n  }\n}\n\nexport function createEnumTypeSpecification({\n  name,\n  values,\n}: {\n  name: string,\n  values: { name: string, description?: string }[],\n}): TypeSpecification {\n  return {\n    name,\n    checkOrAdd: (schema: Schema, feature?: CoreFeature, asBuiltIn?: boolean) => {\n      const actualName = feature?.typeNameInSchema(name) ?? name;\n      const existing = schema.type(actualName);\n      const expectedValueNames = values.map((v) => v.name).sort((n1, n2) => n1.localeCompare(n2));\n      if (existing) {\n        let errors = ensureSameTypeKind('EnumType', existing);\n        if (errors.length > 0) {\n          return errors;\n        }\n        assert(isEnumType(existing), 'Should be an enum type');\n        const actualValueNames = existing.values.map(v => v.name).sort((n1, n2) => n1.localeCompare(n2));\n        if (!arrayEquals(expectedValueNames, actualValueNames)) {\n          errors = errors.concat(ERRORS.TYPE_DEFINITION_INVALID.err(\n            `Invalid definition for type \"${name}\": expected values [${expectedValueNames.join(', ')}] but found [${actualValueNames.join(', ')}].`,\n            { nodes: existing.sourceAST },\n          ));\n        }\n        return errors;\n      } else {\n        const type = schema.addType(new EnumType(actualName, asBuiltIn));\n        for (const { name, description } of values) {\n          type.addValue(name).description = description;\n        }\n        return [];\n      }\n    },\n  }\n}\n\nexport function ensureSameTypeKind(expected: NamedType['kind'], actual: NamedType): GraphQLError[] {\n  return expected === actual.kind\n    ? []\n    : [\n      ERRORS.TYPE_DEFINITION_INVALID.err(\n        `Invalid definition for type ${actual.name}: ${actual.name} should be a ${expected} but is defined as a ${actual.kind}`,\n        { nodes: actual.sourceAST },\n      )\n    ];\n}\n\nfunction ensureSameDirectiveStructure(\n  expected: {\n    name: string,\n    locations: DirectiveLocation[],\n    repeatable: boolean,\n    args: ResolvedArgumentSpecification[]\n  },\n  actual: DirectiveDefinition<any>,\n): GraphQLError[] {\n  const directiveName = `\"@${expected.name}\"`\n  let errors = ensureSameArguments(expected, actual, `directive ${directiveName}`);\n  // It's ok to say you'll never repeat a repeatable directive. It's not ok to repeat one that isn't.\n  if (!expected.repeatable && actual.repeatable) {\n    errors = errors.concat(ERRORS.DIRECTIVE_DEFINITION_INVALID.err(\n      `Invalid definition for directive ${directiveName}: ${directiveName} should${expected.repeatable ? \"\" : \" not\"} be repeatable`,\n      { nodes: actual.sourceAST },\n    ));\n  }\n  // Similarly, it's ok to say that you will never use a directive in some locations, but not that you will use it in places not allowed by what is expected.\n  if (!actual.locations.every(loc => expected.locations.includes(loc))) {\n    errors = errors.concat(ERRORS.DIRECTIVE_DEFINITION_INVALID.err(\n      `Invalid definition for directive ${directiveName}: ${directiveName} should have locations ${expected.locations.join(', ')}, but found (non-subset) ${actual.locations.join(', ')}`,\n      { nodes: actual.sourceAST },\n    ));\n  }\n  return errors;\n}\n\nfunction ensureSameArguments(\n  expected: {\n    name: string,\n    args?: ResolvedArgumentSpecification[]\n  },\n  actual: { argument(name: string): ArgumentDefinition<any> | undefined, arguments(): readonly ArgumentDefinition<any>[] },\n  what: string,\n  containerSourceAST?: ASTNode,\n): GraphQLError[] {\n  const expectedArguments = expected.args ?? [];\n  const errors: GraphQLError[] = [];\n  for (const { name, type, defaultValue } of expectedArguments) {\n    const actualArgument = actual.argument(name);\n    if (!actualArgument) {\n      // Not declaring an optional argument is ok: that means you won't be able to pass a non-default value in your schema, but we allow you that.\n      // But missing a required argument it not ok.\n      if (isNonNullType(type) && defaultValue === undefined) {\n        errors.push(ERRORS.DIRECTIVE_DEFINITION_INVALID.err(\n          `Invalid definition for ${what}: missing required argument \"${name}\"`,\n          { nodes: containerSourceAST },\n        ));\n      }\n      continue;\n    }\n\n    let actualType = actualArgument.type!;\n    if (isNonNullType(actualType) && !isNonNullType(type)) {\n      // It's ok to redefine an optional argument as mandatory. For instance, if you want to force people on your team to provide a \"deprecation reason\", you can\n      // redefine @deprecated as `directive @deprecated(reason: String!)...` to get validation. In other words, you are allowed to always pass an argument that\n      // is optional if you so wish.\n      actualType = actualType.ofType;\n    }\n    if (!sameType(type, actualType) && !isValidInputTypeRedefinition(type, actualType)) {\n      errors.push(ERRORS.DIRECTIVE_DEFINITION_INVALID.err(\n        `Invalid definition for ${what}: argument \"${name}\" should have type \"${type}\" but found type \"${actualArgument.type!}\"`,\n        { nodes: actualArgument.sourceAST },\n      ));\n    } else if (!isNonNullType(actualArgument.type!) && !valueEquals(defaultValue, actualArgument.defaultValue)) {\n      errors.push(ERRORS.DIRECTIVE_DEFINITION_INVALID.err(\n        `Invalid definition for ${what}: argument \"${name}\" should have default value ${valueToString(defaultValue)} but found default value ${valueToString(actualArgument.defaultValue)}`,\n        { nodes: actualArgument.sourceAST },\n      ));\n    }\n  }\n  for (const actualArgument of actual.arguments()) {\n    // If it's an expect argument, we already validated it. But we still need to reject unkown argument.\n    if (!expectedArguments.some((arg) => arg.name === actualArgument.name)) {\n      errors.push(ERRORS.DIRECTIVE_DEFINITION_INVALID.err(\n        `Invalid definition for ${what}: unknown/unsupported argument \"${actualArgument.name}\"`,\n        { nodes: actualArgument.sourceAST },\n      ));\n    }\n  }\n  return errors;\n}\n\nfunction isValidInputTypeRedefinition(expectedType: InputType, actualType: InputType): boolean {\n  // If the expected type is a custom scalar, then we allow the redefinition to be another type (unless it's a custom scalar, in which\n  // case it has to be the same scalar). The rational being that since graphQL does no validation of values passed to a custom scalar,\n  // any code that gets some value as input for a custom scalar has to do validation manually, and so there is little harm in allowing\n  // a redefinition with another type since any truly invalid value would failed that \"manual validation\". In practice, this leeway\n  // make sense because many scalar will tend to accept only one kind of values (say, strings) and exists only to inform that said string\n  // needs to follow a specific format, and in such case, letting user redefine the type as String adds flexibility while doing little harm.\n  if (isListType(expectedType)) {\n    return isListType(actualType) && isValidInputTypeRedefinition(expectedType.ofType, actualType.ofType);\n  }\n  if (isNonNullType(expectedType)) {\n    return isNonNullType(actualType) && isValidInputTypeRedefinition(expectedType.ofType, actualType.ofType);\n  }\n  return isCustomScalarType(expectedType) && !isCustomScalarType(actualType);\n}\n", "import { ASTNode, DirectiveLocation, GraphQLError, StringValueNode } from \"graphql\";\nimport { URL } from \"url\";\nimport { CoreFeature, Directive, DirectiveDefinition, EnumType, ErrGraphQLAPISchemaValidationFailed, ErrGraphQLValidationFailed, InputType, ListType, NamedType, NonNullType, ScalarType, Schema, SchemaDefinition, SchemaElement, sourceASTs } from \"../definitions\";\nimport { sameType } from \"../types\";\nimport { assert, findLast, firstOf, MapWithCachedArrays } from '../utils';\nimport { aggregateError, ERRORS } from \"../error\";\nimport { valueToString } from \"../values\";\nimport { coreFeatureDefinitionIfKnown, registerKnownFeature } from \"../knownCoreFeatures\";\nimport { didYouMean, suggestionList } from \"../suggestions\";\nimport { ArgumentSpecification, createDirectiveSpecification, createEnumTypeSpecification, createScalarTypeSpecification, DirectiveCompositionSpecification, DirectiveSpecification, TypeSpecification } from \"../directiveAndTypeSpecification\";\n\nexport const coreIdentity = 'https://specs.apollo.dev/core';\nexport const linkIdentity = 'https://specs.apollo.dev/link';\n\nexport const linkDirectiveDefaultName = 'link';\n\nexport const ErrCoreCheckFailed = (causes: GraphQLError[]) => aggregateError('CheckFailed', 'one or more checks failed', causes);\n\nfunction buildError(message: string): Error {\n  // Maybe not the right error for this?\n  return new Error(message);\n}\n\nexport const corePurposes = [\n  'SECURITY' as const,\n  'EXECUTION' as const,\n];\n\nexport type CorePurpose = typeof corePurposes[number];\n\nfunction purposesDescription(purpose: CorePurpose) {\n  switch (purpose) {\n    case 'SECURITY': return \"`SECURITY` features provide metadata necessary to securely resolve fields.\";\n    case 'EXECUTION': return \"`EXECUTION` features provide metadata necessary for operation execution.\";\n  }\n}\n\nexport abstract class FeatureDefinition {\n  readonly url: FeatureUrl;\n\n  private readonly _directiveSpecs = new MapWithCachedArrays<string, DirectiveSpecification>();\n  private readonly _typeSpecs = new MapWithCachedArrays<string, TypeSpecification>();\n\n  // A minimumFederationVersion that's undefined would mean that we won't produce that version in the supergraph SDL.\n  constructor(url: FeatureUrl | string, readonly minimumFederationVersion?: FeatureVersion) {\n    this.url = typeof url === 'string' ? FeatureUrl.parse(url) : url;\n  }\n\n  protected registerDirective(spec: DirectiveSpecification) {\n    this._directiveSpecs.set(spec.name, spec);\n  }\n\n  protected registerType(spec: TypeSpecification) {\n    this._typeSpecs.set(spec.name, spec);\n  }\n\n  protected registerSubFeature(subFeature: FeatureDefinition) {\n    for (const typeSpec of subFeature.typeSpecs()) {\n      this.registerType(typeSpec);\n    }\n    for (const directiveSpec of subFeature.directiveSpecs()) {\n      this.registerDirective(directiveSpec);\n    }\n  }\n\n  directiveSpecs(): readonly DirectiveSpecification[] {\n    return this._directiveSpecs.values();\n  }\n\n  directiveSpec(name: string): DirectiveSpecification | undefined {\n    return this._directiveSpecs.get(name);\n  }\n\n  typeSpecs(): readonly TypeSpecification[] {\n    return this._typeSpecs.values();\n  }\n\n  typeSpec(name: string): TypeSpecification | undefined {\n    return this._typeSpecs.get(name);\n  }\n\n  get identity(): string {\n    return this.url.identity;\n  }\n\n  get version(): FeatureVersion {\n    return this.url.version;\n  }\n\n  isSpecType(type: NamedType): boolean {\n    const nameInSchema = this.nameInSchema(type.schema());\n    return nameInSchema !== undefined && type.name.startsWith(`${nameInSchema}__`);\n  }\n\n  isSpecDirective(directive: DirectiveDefinition): boolean {\n    const nameInSchema = this.nameInSchema(directive.schema());\n    return nameInSchema != undefined && (directive.name === nameInSchema || directive.name.startsWith(`${nameInSchema}__`));\n  }\n\n  addElementsToSchema(schema: Schema): GraphQLError[] {\n    const feature = this.featureInSchema(schema);\n    assert(feature, () => `The ${this.url} specification should have been added to the schema before this is called`);\n\n    let errors: GraphQLError[] = [];\n    for (const type of this.typeSpecs()) {\n      errors = errors.concat(type.checkOrAdd(schema, feature));\n    }\n\n    for (const directive of this.directiveSpecs()) {\n      errors = errors.concat(directive.checkOrAdd(schema, feature));\n    }\n    return errors;\n  }\n\n  allElementNames(): string[] {\n    return this.directiveSpecs().map((spec) => `@${spec.name}`)\n      .concat(this.typeSpecs().map((spec) => spec.name));\n  }\n\n  protected nameInSchema(schema: Schema): string | undefined {\n    const feature = this.featureInSchema(schema);\n    return feature?.nameInSchema;\n  }\n\n  protected directiveNameInSchema(schema: Schema, directiveName: string): string | undefined {\n    const feature = this.featureInSchema(schema);\n    return feature ? feature.directiveNameInSchema(directiveName) : undefined;\n  }\n\n  protected typeNameInSchema(schema: Schema, typeName: string): string | undefined {\n    const feature = this.featureInSchema(schema);\n    return feature ? feature.typeNameInSchema(typeName) : undefined;\n  }\n\n  protected rootDirective<TApplicationArgs extends { [key: string]: any }>(schema: Schema): DirectiveDefinition<TApplicationArgs> | undefined {\n    const name = this.nameInSchema(schema);\n    return name ? schema.directive(name) as DirectiveDefinition<TApplicationArgs> | undefined : undefined;\n  }\n\n  protected directive<TApplicationArgs extends { [key: string]: any }>(schema: Schema, elementName: string): DirectiveDefinition<TApplicationArgs> | undefined {\n    const name = this.directiveNameInSchema(schema, elementName);\n    return name ? schema.directive(name) as DirectiveDefinition<TApplicationArgs> | undefined : undefined;\n  }\n\n  protected type<T extends NamedType>(schema: Schema, elementName: string): T | undefined {\n    const name = this.typeNameInSchema(schema, elementName);\n    return name ? schema.type(name) as T : undefined;\n  }\n\n  protected addRootDirective(schema: Schema): DirectiveDefinition {\n    return schema.addDirectiveDefinition(this.nameInSchema(schema)!);\n  }\n\n  protected addDirective(schema: Schema, name: string): DirectiveDefinition {\n    return schema.addDirectiveDefinition(this.directiveNameInSchema(schema, name)!);\n  }\n\n  protected addScalarType(schema: Schema, name: string): ScalarType {\n    return schema.addType(new ScalarType(this.typeNameInSchema(schema, name)!));\n  }\n\n  protected addEnumType(schema: Schema, name: string): EnumType {\n    return schema.addType(new EnumType(this.typeNameInSchema(schema, name)!));\n  }\n\n  protected featureInSchema(schema: Schema): CoreFeature | undefined {\n    const features = schema.coreFeatures;\n    if (!features) {\n      throw buildError(`Schema is not a core schema (add @link first)`);\n    }\n    return features.getByIdentity(this.identity);\n  }\n\n  get defaultCorePurpose(): CorePurpose | undefined {\n    return undefined;\n  }\n\n  compositionSpecification(directiveNameInFeature: string): DirectiveCompositionSpecification | undefined {\n    const spec = this._directiveSpecs.get(directiveNameInFeature);\n    return spec?.composition;\n  }\n\n  toString(): string {\n    return `${this.identity}/${this.version}`\n  }\n}\n\n\nexport type CoreDirectiveArgs = {\n  url: undefined,\n  feature: string,\n  as?: string,\n  for?: string,\n  import: undefined,\n}\n\nexport type LinkDirectiveArgs = {\n  url: string,\n  feature: undefined,\n  as?: string,\n  for?: string,\n  import?: (string | CoreImport)[],\n}\n\nexport type CoreOrLinkDirectiveArgs = CoreDirectiveArgs | LinkDirectiveArgs;\n\nexport type CoreImport = {\n  name: string,\n  as?: string,\n};\n\nexport function extractCoreFeatureImports(url: FeatureUrl, directive: Directive<SchemaDefinition, CoreOrLinkDirectiveArgs>): CoreImport[] {\n  // Note: up to this point, we've kind of cheated with typing and force-casted the arguments to `CoreOrLinkDirectiveArgs`, and while this\n  // graphQL type validations ensure this is \"mostly\" true, the `import' arg is an exception becuse it uses the `link__Import` scalar,\n  // and so there is no fine-grained graphQL-side validation of the values. So we'll need to double-check that the values are indeed\n  // either a string or a valid `CoreImport` value.\n  const args = directive.arguments();\n  if (!('import' in args) || !args.import) {\n    return [];\n  }\n  const importArgValue = args.import;\n  const definition = coreFeatureDefinitionIfKnown(url);\n  const knownElements = definition?.allElementNames();\n  const errors: GraphQLError[] = [];\n  const imports: CoreImport[] = [];\n\n  importArgLoop:\n  for (const elt of importArgValue) {\n    if (typeof elt === 'string') {\n      imports.push({ name: elt });\n      validateImportedName(elt, knownElements, errors, directive);\n      continue;\n    }\n    if (typeof elt !== 'object') {\n      errors.push(ERRORS.INVALID_LINK_DIRECTIVE_USAGE.err(\n        `Invalid sub-value ${valueToString(elt)} for @link(import:) argument: values should be either strings or input object values of the form { name: \"<importedElement>\", as: \"<alias>\" }.`,\n        { nodes: directive.sourceAST },\n      ));\n      continue;\n    }\n    let name: string | undefined;\n    for (const [key, value] of Object.entries(elt)) {\n      switch (key) {\n        case 'name':\n          if (typeof value !== 'string') {\n            errors.push(ERRORS.INVALID_LINK_DIRECTIVE_USAGE.err(\n              `Invalid value for the \"name\" field for sub-value ${valueToString(elt)} of @link(import:) argument: must be a string.`,\n              { nodes: directive.sourceAST },\n            ));\n            continue importArgLoop;\n          }\n          name = value;\n          break;\n        case 'as':\n          if (typeof value !== 'string') {\n            errors.push(ERRORS.INVALID_LINK_DIRECTIVE_USAGE.err(\n              `Invalid value for the \"as\" field for sub-value ${valueToString(elt)} of @link(import:) argument: must be a string.`,\n              { nodes: directive.sourceAST },\n            ));\n            continue importArgLoop;\n          }\n          break;\n        default:\n          errors.push(ERRORS.INVALID_LINK_DIRECTIVE_USAGE.err(\n            `Unknown field \"${key}\" for sub-value ${valueToString(elt)} of @link(import:) argument.`,\n            { nodes: directive.sourceAST },\n          ));\n          continue importArgLoop;\n      }\n    }\n    if (name) {\n      const i = elt as CoreImport;\n      imports.push(i);\n      if (i.as) {\n        if (i.name.charAt(0) === '@' && i.as.charAt(0) !== '@') {\n          errors.push(ERRORS.INVALID_LINK_DIRECTIVE_USAGE.err(\n            `Invalid @link import renaming: directive \"${i.name}\" imported name should start with a '@' character, but got \"${i.as}\".`,\n            { nodes: directive.sourceAST },\n          ));\n        }\n        else if (i.name.charAt(0) !== '@' && i.as.charAt(0) === '@') {\n          errors.push(ERRORS.INVALID_LINK_DIRECTIVE_USAGE.err(\n            `Invalid @link import renaming: type \"${i.name}\" imported name should not start with a '@' character, but got \"${i.as}\" (or, if @${i.name} is a directive, then it should be referred to with a '@').`,\n            { nodes: directive.sourceAST },\n          ));\n        }\n      }\n      validateImportedName(name, knownElements, errors, directive);\n    } else {\n      errors.push(ERRORS.INVALID_LINK_DIRECTIVE_USAGE.err(\n        `Invalid sub-value ${valueToString(elt)} for @link(import:) argument: missing mandatory \"name\" field.`,\n        { nodes: directive.sourceAST },\n      ));\n    }\n  }\n\n  if (errors.length > 0) {\n    throw ErrGraphQLValidationFailed(errors);\n  }\n  return imports;\n}\n\nfunction validateImportedName(name: string, knownElements: string[] | undefined, errors: GraphQLError[], directive: Directive<SchemaDefinition>) {\n  if (knownElements && !knownElements.includes(name)) {\n    let details = '';\n    if (!name.startsWith('@') && knownElements.includes('@' + name)) {\n      details = ` Did you mean directive \"@${name}\"?`;\n    } else {\n      const suggestions = suggestionList(name, knownElements);\n      if (suggestions) {\n        details = didYouMean(suggestions);\n      }\n    }\n    errors.push(ERRORS.INVALID_LINK_DIRECTIVE_USAGE.err(\n      `Cannot import unknown element \"${name}\".${details}`,\n      { nodes: directive.sourceAST },\n    ));\n  }\n}\n\nexport function isCoreSpecDirectiveApplication(directive: Directive<SchemaDefinition, any>): directive is Directive<SchemaDefinition, CoreOrLinkDirectiveArgs> {\n  const definition = directive.definition;\n  if (!definition) {\n    return false;\n  }\n  const asArg = definition.argument('as');\n  if (asArg && !sameType(asArg.type!, directive.schema().stringType())) {\n    return false;\n  }\n  if (!definition.repeatable || definition.locations.length !== 1 || definition.locations[0] !== DirectiveLocation.SCHEMA) {\n    return false;\n  }\n  const urlArg = definition.argument('url') ?? definition.argument('feature');\n  if (!urlArg || !isValidUrlArgumentType(urlArg.type!, directive.schema())) {\n    return false;\n  }\n\n  const args = directive.arguments();\n  try {\n    const url = FeatureUrl.parse(args[urlArg.name] as string);\n    if (url.identity === coreIdentity) {\n      return directive.name === (args.as ?? 'core');\n    } else {\n      return url.identity === linkIdentity && directive.name === (args.as ?? linkDirectiveDefaultName);\n    }\n  } catch (err) {\n    return false;\n  }\n}\n\nfunction isValidUrlArgumentType(type: InputType, schema: Schema): boolean {\n  // Note that the 'url' arg is defined as nullable (mostly for future proofing reasons) but we allow use to provide a definition\n  // where it's non-nullable (and in practice, @core (which we never generate anymore, but recognize) definition technically uses\n  // with a non-nullable argument, and some fed2 previews did if for @link, so this ensure we handle reading schema generated\n  // by those versions just fine).\n  return sameType(type, schema.stringType())\n    || sameType(type, new NonNullType(schema.stringType()));\n}\n\nconst linkPurposeTypeSpec = createEnumTypeSpecification({\n  name: 'Purpose',\n  values: corePurposes.map((name) => ({ name, description: purposesDescription(name) }))\n});\n\nconst linkImportTypeSpec = createScalarTypeSpecification({ name: 'Import' });\n\nexport class CoreSpecDefinition extends FeatureDefinition {\n  private readonly directiveDefinitionSpec: DirectiveSpecification;\n\n  constructor(version: FeatureVersion, minimumFederationVersion?: FeatureVersion, identity: string = linkIdentity, name: string = linkDirectiveDefaultName) {\n    super(new FeatureUrl(identity, name, version), minimumFederationVersion);\n    this.directiveDefinitionSpec = createDirectiveSpecification({\n      name,\n      locations: [DirectiveLocation.SCHEMA],\n      repeatable: true,\n      args: this.createDefinitionArgumentSpecifications(),\n    });\n    this.registerDirective(this.directiveDefinitionSpec);\n  }\n\n  private createDefinitionArgumentSpecifications(): ArgumentSpecification[] {\n    const args: ArgumentSpecification[] = [\n      { name: this.urlArgName(), type: (schema) => schema.stringType() },\n      { name: 'as', type: (schema) => schema.stringType() },\n    ];\n    if (this.supportPurposes()) {\n      args.push({\n        name: 'for',\n        type: (schema, feature) => {\n          assert(feature, \"Shouldn't be added without being attached to a @link spec\");\n          return schema.type(feature.typeNameInSchema(linkPurposeTypeSpec.name)) as InputType;\n        },\n      });\n    }\n    if (this.supportImport()) {\n      args.push({\n        name: 'import',\n        type: (schema, feature) => {\n          assert(feature, \"Shouldn't be added without being attached to a @link spec\");\n          return new ListType(schema.type(feature.typeNameInSchema(linkImportTypeSpec.name))!);\n        }\n      });\n    }\n    return args;\n  }\n\n  addElementsToSchema(_: Schema): GraphQLError[] {\n    // Core is special and the @core directive is added in `addToSchema` below\n    return [];\n  }\n\n  // TODO: we may want to allow some `import` as argument to this method. When we do, we need to watch for imports of\n  // `Purpose` and `Import` and add the types under their imported name.\n  addToSchema(schema: Schema, alias?: string): GraphQLError[] {\n    const errors = this.addDefinitionsToSchema(schema, alias);\n    if (errors.length > 0) {\n      return errors;\n    }\n\n    // Note: we don't use `applyFeatureToSchema` because it would complain the schema is not a core schema, which it isn't\n    // until the next line.\n    const args = { [this.urlArgName()]: this.toString() } as unknown as CoreOrLinkDirectiveArgs;\n    if (alias) {\n      args.as = alias;\n    }\n\n    // This adds `@link(url: \"https://specs.apollo.dev/link/v1.0\")` to the \"schema\" definition. And we have\n    // a choice to add it either the main definition, or to an `extend schema`.\n    //\n    // In theory, always adding it to the main definition should be safe since even if some root operations\n    // can be defined in extensions, you shouldn't have an extension without a definition, and so we should\n    // never be in a case where _all_ root operations are defined in extensions (which would be a problem\n    // for printing the definition itsef since it's syntactically invalid to have a schema definition with\n    // no operations).\n    //\n    // In practice however, graphQL-js has historically accepted extensions without definition for schema,\n    // and we even abuse this a bit with federation out of convenience, so we could end up in the situation\n    // where if we put the directive on the definition, it cannot be printed properly due to the user having\n    // defined all its root operations in an extension.\n    //\n    // We could always add the directive to an extension, and that could kind of work but:\n    // 1. the core/link spec says that the link-to-link application should be the first `@link` of the\n    //   schema, but if user put some `@link` on their schema definition but we always put the link-to-link\n    //   on an extension, then we're kind of not respecting our own spec (in practice, our own code can\n    //   actually handle this as it does not strongly rely on that \"it should be the first\" rule, but that\n    //   would set a bad example).\n    // 2. earlier versions (pre-#1875) were always putting that directive on the definition, and we wanted\n    //   to avoid suprising users by changing that for not reason.\n    //\n    // So instead, we put the directive on the schema definition unless some extensions exists but no\n    // definition does (that is, no non-extension elements are populated).\n    const schemaDef = schema.schemaDefinition;\n    // Side-note: this test must be done _before_ we call `applyDirective`, otherwise it would take it into\n    // account.\n    const hasDefinition = schemaDef.hasNonExtensionElements();\n    const directive = schemaDef.applyDirective(alias ?? this.url.name, args, true);\n    if (!hasDefinition && schemaDef.hasExtensionElements()) {\n      const extension = firstOf(schemaDef.extensions());\n      assert(extension, '`hasExtensionElements` should not have been `true`');\n      directive.setOfExtension(extension);\n    }\n    return [];\n  }\n\n  addDefinitionsToSchema(schema: Schema, as?: string, imports: CoreImport[] = []): GraphQLError[] {\n    const existingCore = schema.coreFeatures;\n    if (existingCore) {\n      if (existingCore.coreItself.url.identity === this.identity) {\n        // Already exists with the same version, let it be.\n        return [];\n      } else {\n        return [ERRORS.INVALID_LINK_DIRECTIVE_USAGE.err(\n          `Cannot add feature ${this} to the schema, it already uses ${existingCore.coreItself.url}`\n        )];\n      }\n    }\n\n    const nameInSchema = as ?? this.url.name;\n    // The @link spec is special in that it is the one that bootstrap everything, and by the time this method\n    // is called, the `schema` may not yet have any `schema.coreFeatures` setup yet. To have `checkAndAdd`\n    // calls below still work, we pass a temp feature object with the proper information (not that the\n    // `Directive` we pass is not complete and not even attached to the schema, but that is not used\n    // in practice so unused).\n    const feature = new CoreFeature(this.url, nameInSchema, new Directive(nameInSchema), imports);\n\n    let errors: GraphQLError[] = [];\n    errors = errors.concat(linkPurposeTypeSpec.checkOrAdd(schema, feature));\n    errors = errors.concat(linkImportTypeSpec.checkOrAdd(schema, feature));\n    errors = errors.concat(this.directiveDefinitionSpec.checkOrAdd(schema, feature));\n    return errors;\n  }\n\n  /**\n   * The list of all the element names that can be \"imported\" from this feature. Importantly, directive names\n   * must start with a `@`.\n   */\n  allElementNames(): string[] {\n    const names = [`@${this.url.name}`];\n    if (this.supportPurposes()) {\n      names.push('Purpose');\n    }\n    if (this.supportImport()) {\n      names.push('Import');\n    }\n    return names;\n  }\n\n  private supportPurposes() {\n    return this.version.strictlyGreaterThan(new FeatureVersion(0, 1));\n  }\n\n  private supportImport() {\n    return this.url.name === linkDirectiveDefaultName;\n  }\n\n  private extractFeature(schema: Schema): CoreFeature {\n    const features = schema.coreFeatures;\n    if (!features) {\n      throw buildError(`Schema is not a core schema (add @core first)`);\n    }\n    if (!features.coreItself.url.version.equals(this.version)) {\n      throw buildError(`Cannot use this version of @core (${this.version}), the schema uses version ${features.coreItself.url.version}`);\n    }\n    return features.coreItself;\n  }\n\n  coreDirective(schema: Schema): DirectiveDefinition<CoreOrLinkDirectiveArgs> {\n    const feature = this.extractFeature(schema);\n    const directive = schema.directive(feature.nameInSchema);\n    return directive as DirectiveDefinition<CoreOrLinkDirectiveArgs>;\n  }\n\n  coreVersion(schema: Schema): FeatureVersion {\n    const feature = this.extractFeature(schema);\n    return feature.url.version;\n  }\n\n  applyFeatureToSchema(\n    schema: Schema,\n    feature: FeatureDefinition,\n    as?: string,\n    purpose?: CorePurpose,\n    imports?: CoreImport[],\n  ): GraphQLError[] {\n    const coreDirective = this.coreDirective(schema);\n    const args = {\n      [this.urlArgName()]: feature.toString(),\n      as,\n    } as CoreOrLinkDirectiveArgs;\n    if (purpose) {\n      if (this.supportPurposes()) {\n        args.for = purpose;\n      } else {\n        return [new GraphQLError(\n          `Cannot apply feature ${feature} with purpose since the schema's @core/@link version does not support it.`\n        )];\n      }\n    }\n    if (imports && imports.length > 0) {\n      if (this.supportImport()) {\n        args.import = imports.map(i => i.as ? i : i.name);\n      } else {\n        return [new GraphQLError(\n          `Cannot apply feature ${feature} with imports since the schema's @core/@link version does not support it.`\n        )];\n      }\n    }\n    schema.schemaDefinition.applyDirective(coreDirective, args);\n    return feature.addElementsToSchema(schema);\n  }\n\n  extractFeatureUrl(args: CoreOrLinkDirectiveArgs): FeatureUrl {\n    return FeatureUrl.parse(args[this.urlArgName()]!);\n  }\n\n  urlArgName(): 'feature' | 'url' {\n    return this.url.name === 'core' ? 'feature' : 'url';\n  }\n}\n\nexport class FeatureDefinitions<T extends FeatureDefinition = FeatureDefinition> {\n  // The list of definition corresponding to the known version of the particular feature this object handles,\n  // sorted by _decreased_ versions.\n  private readonly _definitions: T[] = [];\n\n  constructor(readonly identity: string) {\n  }\n\n  add(definition: T): FeatureDefinitions<T> {\n    if (definition.identity !== this.identity) {\n      throw buildError(`Cannot add definition for ${definition} to the versions of definitions for ${this.identity}`);\n    }\n    if (this._definitions.find(def => definition.version.equals(def.version))) {\n      return this;\n    }\n    this._definitions.push(definition);\n    // We sort by decreased versions sa it feels somewhat natural anyway to have more recent versions first.\n    this._definitions.sort((def1, def2) => -def1.version.compareTo(def2.version));\n    return this;\n  }\n\n  /**\n   * Returns the definition corresponding to the requested version if known.\n   */\n  find(requested: FeatureVersion): T | undefined {\n    return this._definitions.find((def) => def.version.equals(requested));\n  }\n\n  versions(): FeatureVersion[] {\n    return this._definitions.map(def => def.version);\n  }\n\n  latest(): T {\n    assert(this._definitions.length > 0, 'Trying to get latest when no definitions exist');\n    return this._definitions[0];\n  }\n\n  getMinimumRequiredVersion(fedVersion: FeatureVersion): T {\n    // this._definitions is already sorted with the most recent first\n    // get the first definition that is compatible with the federation version\n    // if the minimum version is not present, assume that we won't look for an older version\n    const def = this._definitions.find(def => def.minimumFederationVersion ? fedVersion.gte(def.minimumFederationVersion) : true);\n    assert(def, `No compatible definition exists for federation version ${fedVersion}`);\n\n    // note that it's necessary that we can only get versions that have the same major version as the latest,\n    // because otherwise we can not guarantee compatibility. In this case, we want to return the oldest version with\n    // the same major version as the latest.\n    const latestMajor = this.latest().version.major;\n    if (def.version.major !== latestMajor) {\n      return findLast(this._definitions, def => def.version.major === latestMajor) ?? this.latest();\n    }\n    return def;\n  }\n}\n\n/**\n * Versions are a (major, minor) number pair.\n */\nexport class FeatureVersion {\n  constructor(public readonly major: number, public readonly minor: number) { }\n\n  /**\n   * Parse a version specifier of the form \"v(major).(minor)\" or throw\n   *\n   * # Example\n   * ```\n   * expect(FeatureVersion.parse('v1.0')).toEqual(new FeatureVersion(1, 0))\n   * expect(FeatureVersion.parse('v0.1')).toEqual(new FeatureVersion(0, 1))\n   * expect(FeatureVersion.parse(\"v987.65432\")).toEqual(new FeatureVersion(987, 65432))\n   * ```\n   */\n  public static parse(input: string): FeatureVersion {\n    const match = input.match(this.VERSION_RE)\n    if (!match) {\n      throw ERRORS.INVALID_LINK_IDENTIFIER.err(`Expected a version string (of the form v1.2), got ${input}`);\n    }\n    return new this(+match[1], +match[2])\n  }\n\n  /**\n   * Find the maximum version in a collection of versions, returning undefined in the case\n   * that the collection is empty.\n   *\n   * # Example\n   * ```\n   * expect(FeatureVersion.max([new FeatureVersion(1, 0), new FeatureVersion(2, 0)])).toBe(new FeatureVersion(2, 0))\n   * expect(FeatureVersion.max([])).toBe(undefined)\n   * ```\n   */\n  public static max(versions: Iterable<FeatureVersion>): FeatureVersion | undefined {\n    let max: FeatureVersion | undefined;\n\n    for (const version of versions) {\n      if (!max || version.gt(max)) {\n        max = version;\n      }\n    }\n\n    return max;\n  }\n\n  /**\n   * Return true if and only if this FeatureVersion satisfies the `required` version\n   *\n   * # Example\n   * ```\n   * expect(new FeatureVersion(1, 0).satisfies(new FeatureVersion(1, 0))).toBe(true)\n   * expect(new FeatureVersion(1, 2).satisfies(new FeatureVersion(1, 0))).toBe(true)\n   * expect(new FeatureVersion(2, 0).satisfies(new FeatureVersion(1, 9))).toBe(false)\n   * expect(new FeatureVersion(0, 9).satisfies(new FeatureVersion(0, 8))).toBe(false)\n   * ```\n   **/\n  public satisfies(required: FeatureVersion): boolean {\n    const { major, minor } = this\n    const { major: rMajor, minor: rMinor } = required\n    return rMajor == major && (\n      major == 0\n        ? rMinor == minor\n        : rMinor <= minor\n    )\n  }\n\n  /**\n   * a string indicating this version's compatibility series. for release versions (>= 1.0), this\n   * will be a string like \"v1.x\", \"v2.x\", and so on. experimental minor updates carry no expectation\n   * of compatibility, so those will just return the same thing as `this.toString()`.\n   */\n  public get series() {\n    const { major } = this\n    return major > 0 ? `${major}.x` : String(this)\n  }\n\n  /**\n   * Compares this version to the provide one, returning 1 if it strictly greater, 0 if they are equals, and -1 if this\n    * version is strictly smaller. The underlying ordering is that of major version and then minor versions.\n   *\n   * Be aware that this ordering does *not* imply compatibility. For example, `FeatureVersion(2, 0) > FeatureVersion(1, 9)`,\n    * but an implementation of `FeatureVersion(2, 0)` *cannot* satisfy a request for `FeatureVersion(1, 9)`. To check for\n    * version compatibility, use [the `satisfies` method](#satisfies).\n   */\n  public compareTo(other: FeatureVersion): number {\n    if (this.major > other.major) {\n      return 1;\n    }\n    if (this.major < other.major) {\n      return -1;\n    }\n    if (this.minor > other.minor) {\n      return 1;\n    }\n    if (this.minor < other.minor) {\n      return -1;\n    }\n    return 0;\n  }\n\n  public lt(other: FeatureVersion): boolean {\n    return this.compareTo(other) < 0;\n  }\n\n  public lte(other: FeatureVersion): boolean {\n    return this.compareTo(other) <= 0;\n  }\n\n  public gt(other: FeatureVersion): boolean {\n    return this.compareTo(other) > 0;\n  }\n\n  public gte(other: FeatureVersion): boolean {\n    return this.compareTo(other) >= 0;\n  }\n\n  /**\n   * Return true if this FeatureVersion is strictly greater than the provided one,\n   * where ordering is meant by major and then minor number.\n   *\n   * Be aware that this ordering does *not* imply compatibility. For\n   * example, `FeatureVersion(2, 0) > FeatureVersion(1, 9)`, but an implementation of `FeatureVersion(2, 0)`\n   * *cannot* satisfy a request for `FeatureVersion(1, 9)`. To check for version compatibility,\n   * use [the `satisfies` method](#satisfies).\n   */\n  public strictlyGreaterThan(version: FeatureVersion) {\n    return this.compareTo(version) > 0;\n  }\n\n  /**\n   * return the string version tag, like \"v2.9\"\n   *\n   * @returns a version tag\n   */\n  public toString() {\n    return `v${this.major}.${this.minor}`\n  }\n\n  /**\n   * return true iff this version is exactly equal to the provided version\n   *\n   * @param other the version to compare\n   * @returns true if versions are strictly equal\n   */\n  public equals(other: FeatureVersion) {\n    return this.major === other.major && this.minor === other.minor\n  }\n\n  private static VERSION_RE = /^v(\\d+)\\.(\\d+)$/\n}\n\n\nexport class FeatureUrl {\n  constructor(\n    public readonly identity: string,\n    public readonly name: string,\n    public readonly version: FeatureVersion,\n    public readonly element?: string,\n  ) { }\n\n  public static maybeParse(input: string, node?: ASTNode): FeatureUrl | undefined {\n    try {\n      return FeatureUrl.parse(input, node);\n    } catch (err) {\n      return undefined;\n    }\n  }\n    /// Parse a spec URL or throw\n  public static parse(input: string, node?: ASTNode): FeatureUrl {\n    const url = new URL(input)\n    if (!url.pathname || url.pathname === '/') {\n      throw ERRORS.INVALID_LINK_IDENTIFIER.err(`Missing path in feature url '${url}'`, { nodes: node })\n    }\n    const path = url.pathname.split('/')\n    const verStr = path.pop()\n    if (!verStr) {\n      throw ERRORS.INVALID_LINK_IDENTIFIER.err(`Missing version component in feature url '${url}'`, { nodes: node })\n    }\n    const version = FeatureVersion.parse(verStr)\n    const name = path[path.length - 1]\n    if (!name) {\n      throw ERRORS.INVALID_LINK_IDENTIFIER.err(`Missing feature name component in feature url '${url}'`, { nodes: node })\n    }\n    const element = url.hash ? url.hash.slice(1) : undefined\n    url.hash = ''\n    url.search = ''\n    url.password = ''\n    url.username = ''\n    url.pathname = path.join('/')\n    return new FeatureUrl(url.toString(), name, version, element)\n  }\n\n  /// Decode a StringValueNode containing a feature url\n  public static decode(node: StringValueNode): FeatureUrl {\n    return this.parse(node.value, node)\n  }\n\n  /**\n   * Return true if and only if this spec satisfies the `requested`\n   * spec.\n   *\n   * @param request\n   */\n  public satisfies(requested: FeatureUrl): boolean {\n    return requested.identity === this.identity &&\n      this.version.satisfies(requested.version)\n  }\n\n  public equals(other: FeatureUrl) {\n    return this.identity === other.identity &&\n      this.version.equals(other.version)\n  }\n\n  get url() {\n    return this.element ?\n      `${this.identity}/${this.version}#${this.element}`\n      : `${this.identity}/${this.version}`\n  }\n\n  get isDirective() {\n    return this.element?.startsWith('@')\n  }\n\n  get elementName() {\n    return this.isDirective ? this.element?.slice(1) : this.element\n  }\n\n  get base(): FeatureUrl {\n    if (!this.element) return this\n    return new FeatureUrl(this.identity, this.name, this.version)\n  }\n\n  toString() {\n    return this.url\n  }\n}\n\nexport function findCoreSpecVersion(featureUrl: FeatureUrl): CoreSpecDefinition | undefined {\n  return featureUrl.name === 'core'\n    ? CORE_VERSIONS.find(featureUrl.version)\n    : (featureUrl.name === linkDirectiveDefaultName ? LINK_VERSIONS.find(featureUrl.version) : undefined)\n}\n\nexport const CORE_VERSIONS = new FeatureDefinitions<CoreSpecDefinition>(coreIdentity)\n  .add(new CoreSpecDefinition(new FeatureVersion(0, 1), undefined, coreIdentity, 'core'))\n  .add(new CoreSpecDefinition(new FeatureVersion(0, 2), new FeatureVersion(2, 0), coreIdentity, 'core'));\n\nexport const LINK_VERSIONS = new FeatureDefinitions<CoreSpecDefinition>(linkIdentity)\n  .add(new CoreSpecDefinition(new FeatureVersion(1, 0), new FeatureVersion(2, 0)));\n\nregisterKnownFeature(CORE_VERSIONS);\nregisterKnownFeature(LINK_VERSIONS);\n\nexport function removeAllCoreFeatures(schema: Schema) {\n  // Gather a list of core features up front, since we can't fetch them during\n  // removal. (Also note that core being a feature itself, this will remove core\n  // itself and mark the schema as 'not core').\n  const coreFeatures = [...(schema.coreFeatures?.allFeatures() ?? [])];\n\n  // Remove all feature elements, keeping track of any type references found\n  // along the way.\n  const typeReferences: {\n    feature: CoreFeature;\n    type: NamedType;\n    references: SchemaElement<any, any>[];\n  }[] = [];\n  for (const feature of coreFeatures) {\n    // Remove feature directive definitions and their applications.\n    const featureDirectiveDefs = schema.directives()\n      .filter(d => feature.isFeatureDefinition(d));\n    featureDirectiveDefs.forEach(def =>\n      def.remove().forEach(application => application.remove())\n    );\n\n    // Remove feature types.\n    const featureTypes = schema.types()\n      .filter(t => feature.isFeatureDefinition(t));\n    featureTypes.forEach(type => {\n      const references = type.remove();\n      if (references.length > 0) {\n        typeReferences.push({\n          feature,\n          type,\n          references,\n        });\n      }\n    });\n  }\n\n  // Now that we're finished with removals, for any referencers encountered,\n  // check whether they're still attached to the schema (and fail if they are).\n  //\n  // We wait for after all removals are done, since it means we don't have to\n  // worry about the ordering of removals (e.g. if one feature element refers\n  // to a different feature's element) or any circular references.\n  //\n  // Note that we fail for ALL type referencers, regardless of whether removing\n  // the type necessitates removal of the type referencer. E.g. even if some\n  // non-core object type were to implement some core feature interface type, we\n  // would still require removal of the non-core object type. Users don't have\n  // to enact this removal by removing the object type from their supergraph\n  // schema though; they could also just mark it @inaccessible (since this\n  // function is called after removeInaccessibleElements()).\n  //\n  // In the future, we could potentially relax this validation once we determine\n  // the appropriate semantics. (This validation has already been relaxed for\n  // directive applications, since feature directive definition removal does not\n  // necessitate removal of elements with directive applications.)\n  const errors: GraphQLError[] = [];\n  for (const { feature, type, references } of typeReferences) {\n    const referencesInSchema = references.filter(r => r.isAttached());\n    if (referencesInSchema.length > 0) {\n      // Note: using REFERENCED_INACCESSIBLE is slightly abusive because the reference element is not marked\n      // @inacessible exactly. Instead, it is inacessible due to core elements being removed, but that's very\n      // very close semantically. Overall, adding a publicly documented error code just to minor difference\n      // doesn't feel worth it, especially since that case is super unlikely in the first place (and, as\n      // the prior comment says, may one day be removed too).\n      errors.push(ERRORS.REFERENCED_INACCESSIBLE.err(\n        `Cannot remove elements of feature ${feature} as feature type ${type}` +\n        ` is referenced by elements: ${referencesInSchema.join(', ')}`,\n        { nodes: sourceASTs(...references) },\n      ));\n    }\n  }\n  if (errors.length > 0) {\n    throw ErrGraphQLAPISchemaValidationFailed(errors);\n  }\n}\n", "import { CorePurpose, FeatureDefinition, FeatureDefinitions, FeatureUrl, FeatureVersion } from \"./coreSpec\";\nimport {\n  ArgumentDefinition,\n  CoreFeatures,\n  DirectiveDefinition,\n  EnumType,\n  EnumValue,\n  ErrGraphQLAPISchemaValidationFailed,\n  FieldDefinition,\n  InputFieldDefinition,\n  InputObjectType,\n  InputType,\n  InterfaceType,\n  isEnumType,\n  isInputObjectType,\n  isListType,\n  isNonNullType,\n  isScalarType,\n  isTypeSystemDirectiveLocation,\n  isVariable,\n  NamedType,\n  ObjectType,\n  ScalarType,\n  Schema,\n  SchemaDefinition,\n  SchemaElement,\n  UnionType,\n} from \"../definitions\";\nimport { GraphQLError, DirectiveLocation } from \"graphql\";\nimport { registerKnownFeature } from \"../knownCoreFeatures\";\nimport { ERRORS } from \"../error\";\nimport { createDirectiveSpecification, DirectiveSpecification } from \"../directiveAndTypeSpecification\";\nimport { assert } from \"../utils\";\n\nexport const inaccessibleIdentity = 'https://specs.apollo.dev/inaccessible';\n\nexport class InaccessibleSpecDefinition extends FeatureDefinition {\n  public readonly inaccessibleLocations: DirectiveLocation[];\n  public readonly inaccessibleDirectiveSpec: DirectiveSpecification;\n  private readonly printedInaccessibleDefinition: string;\n\n  constructor(version: FeatureVersion, minimumFederationVersion?: FeatureVersion) {\n    super(new FeatureUrl(inaccessibleIdentity, 'inaccessible', version), minimumFederationVersion);\n    this.inaccessibleLocations = [\n      DirectiveLocation.FIELD_DEFINITION,\n      DirectiveLocation.OBJECT,\n      DirectiveLocation.INTERFACE,\n      DirectiveLocation.UNION,\n    ];\n    this.printedInaccessibleDefinition = 'directive @inaccessible on FIELD_DEFINITION | INTERFACE | OBJECT | UNION';\n    if (!this.isV01()) {\n      this.inaccessibleLocations.push(\n        DirectiveLocation.ARGUMENT_DEFINITION,\n        DirectiveLocation.SCALAR,\n        DirectiveLocation.ENUM,\n        DirectiveLocation.ENUM_VALUE,\n        DirectiveLocation.INPUT_OBJECT,\n        DirectiveLocation.INPUT_FIELD_DEFINITION,\n      );\n      this.printedInaccessibleDefinition = 'directive @inaccessible on FIELD_DEFINITION | INTERFACE | OBJECT | UNION | ARGUMENT_DEFINITION | SCALAR | ENUM | ENUM_VALUE | INPUT_OBJECT | INPUT_FIELD_DEFINITION';\n    }\n    this.inaccessibleDirectiveSpec = createDirectiveSpecification({\n      name: 'inaccessible',\n      locations: this.inaccessibleLocations,\n      composes: true,\n      supergraphSpecification: (fedVersion) => INACCESSIBLE_VERSIONS.getMinimumRequiredVersion(fedVersion),\n    });\n    this.registerDirective(this.inaccessibleDirectiveSpec);\n  }\n\n  isV01() {\n    return this.version.equals(new FeatureVersion(0, 1));\n  }\n\n  inaccessibleDirective(schema: Schema): DirectiveDefinition<Record<string, never>> | undefined {\n    return this.directive(schema, 'inaccessible');\n  }\n\n  checkCompatibleDirective(definition: DirectiveDefinition): GraphQLError | undefined {\n    const hasUnknownArguments = Object.keys(definition.arguments()).length > 0;\n    const hasRepeatable = definition.repeatable;\n    const hasValidLocations = definition.locations.every(loc => this.inaccessibleLocations.includes(loc));\n    if (hasUnknownArguments || hasRepeatable || !hasValidLocations) {\n      return ERRORS.DIRECTIVE_DEFINITION_INVALID.err(\n        `Found invalid @inaccessible directive definition. Please ensure the directive definition in your schema's definitions matches the following:\\n\\t${this.printedInaccessibleDefinition}`,\n      );\n    }\n    return undefined;\n  }\n\n  get defaultCorePurpose(): CorePurpose | undefined {\n    return 'SECURITY';\n  }\n}\n\nexport const INACCESSIBLE_VERSIONS = new FeatureDefinitions<InaccessibleSpecDefinition>(inaccessibleIdentity)\n  .add(new InaccessibleSpecDefinition(new FeatureVersion(0, 1)))\n  .add(new InaccessibleSpecDefinition(new FeatureVersion(0, 2), new FeatureVersion(2, 0)));\n\nregisterKnownFeature(INACCESSIBLE_VERSIONS);\n\nexport function removeInaccessibleElements(schema: Schema) {\n  // Note it doesn't hurt to validate here, since we expect the schema to be\n  // validated already, and if it has been, it's cached/inexpensive.\n  schema.validate();\n\n  const coreFeatures = schema.coreFeatures;\n  if (!coreFeatures) {\n    return;\n  }\n\n  const inaccessibleFeature = coreFeatures.getByIdentity(inaccessibleIdentity);\n  if (!inaccessibleFeature) {\n    return;\n  }\n  const inaccessibleSpec = INACCESSIBLE_VERSIONS.find(\n    inaccessibleFeature.url.version\n  );\n  if (!inaccessibleSpec) {\n    throw ErrGraphQLAPISchemaValidationFailed([new GraphQLError(\n      `Cannot remove inaccessible elements: the schema uses unsupported` +\n      ` inaccessible spec version ${inaccessibleFeature.url.version}` +\n      ` (supported versions: ${INACCESSIBLE_VERSIONS.versions().join(', ')})`\n    )]);\n  }\n\n  const inaccessibleDirective = inaccessibleSpec.inaccessibleDirective(schema);\n  if (!inaccessibleDirective) {\n    throw ErrGraphQLAPISchemaValidationFailed([new GraphQLError(\n      `Invalid schema: declares ${inaccessibleSpec.url} spec but does not` +\n      ` define a @inaccessible directive.`\n    )]);\n  }\n\n  const incompatibleError =\n    inaccessibleSpec.checkCompatibleDirective(inaccessibleDirective);\n  if (incompatibleError) {\n    throw ErrGraphQLAPISchemaValidationFailed([incompatibleError]);\n  }\n\n  validateInaccessibleElements(\n    schema,\n    coreFeatures,\n    inaccessibleSpec,\n    inaccessibleDirective,\n  );\n\n  removeInaccessibleElementsAssumingValid(\n    schema,\n    inaccessibleDirective,\n  )\n}\n\n// These are elements that may be hidden, by either @inaccessible or core\n// feature definition hiding.\ntype HideableElement =\n  | ObjectType\n  | InterfaceType\n  | UnionType\n  | ScalarType\n  | EnumType\n  | InputObjectType\n  | DirectiveDefinition\n  | FieldDefinition<ObjectType | InterfaceType>\n  | ArgumentDefinition<\n    | DirectiveDefinition\n    | FieldDefinition<ObjectType | InterfaceType>>\n  | InputFieldDefinition\n  | EnumValue\n\n// Validate the applications of @inaccessible in the schema. Some of these may\n// technically be caught by Schema.validate() later, but we'd like to give\n// clearer error messaging when possible.\nfunction validateInaccessibleElements(\n  schema: Schema,\n  coreFeatures: CoreFeatures,\n  inaccessibleSpec: InaccessibleSpecDefinition,\n  inaccessibleDirective: DirectiveDefinition,\n): void {\n  function isInaccessible(element: SchemaElement<any, any>): boolean {\n    return element.hasAppliedDirective(inaccessibleDirective);\n  }\n\n  const featureList = [...coreFeatures.allFeatures()];\n  function isFeatureDefinition(\n    element: NamedType | DirectiveDefinition\n  ): boolean {\n    return featureList.some((feature) => feature.isFeatureDefinition(element));\n  }\n\n  function isInAPISchema(element: HideableElement): boolean {\n    // If this element is @inaccessible, it's not in the API schema.\n    if (\n      !(element instanceof DirectiveDefinition) &&\n      isInaccessible(element)\n    ) return false;\n\n    if (\n      (element instanceof ObjectType) ||\n      (element instanceof InterfaceType) ||\n      (element instanceof UnionType) ||\n      (element instanceof ScalarType) ||\n      (element instanceof EnumType) ||\n      (element instanceof InputObjectType) ||\n      (element instanceof DirectiveDefinition)\n    ) {\n      // These are top-level elements. If they're not @inaccessible, the only\n      // way they won't be in the API schema is if they're definitions of some\n      // core feature. However, we do intend on introducing mechanisms for\n      // exposing core feature elements in the API schema in the near feature.\n      // Because such mechanisms aren't completely nailed down yet, we opt to\n      // pretend here that all core feature elements are in the API schema for\n      // simplicity sake.\n      //\n      // This has the effect that if a non-core schema element is referenced by\n      // a core schema element, that non-core schema element can't be marked\n      // @inaccessible, despite that the core schema element may likely not be\n      // in the API schema. This may be relaxed in a later version of the\n      // inaccessible spec.\n      return true;\n    } else if (\n      (element instanceof FieldDefinition) ||\n      (element instanceof ArgumentDefinition) ||\n      (element instanceof InputFieldDefinition) ||\n      (element instanceof EnumValue)\n    ) {\n      // While this element isn't marked @inaccessible, this element won't be in\n      // the API schema if its parent isn't.\n      return isInAPISchema(element.parent);\n    }\n    assert(false, \"Unreachable code, element is of unknown type.\");\n  }\n\n  function fetchInaccessibleElementsDeep(\n    element: HideableElement\n  ): HideableElement[] {\n    const inaccessibleElements: HideableElement[] = [];\n    if (isInaccessible(element)) {\n      inaccessibleElements.push(element);\n    }\n\n    if (\n      (element instanceof ObjectType) ||\n      (element instanceof InterfaceType) ||\n      (element instanceof InputObjectType)\n    ) {\n      for (const field of element.fields()) {\n        inaccessibleElements.push(\n          ...fetchInaccessibleElementsDeep(field),\n        );\n      }\n      return inaccessibleElements;\n    } else if (element instanceof EnumType) {\n      for (const enumValue of element.values) {\n        inaccessibleElements.push(\n          ...fetchInaccessibleElementsDeep(enumValue),\n        )\n      }\n      return inaccessibleElements;\n    } else if (\n      (element instanceof DirectiveDefinition) ||\n      (element instanceof FieldDefinition)\n    ) {\n      for (const argument of element.arguments()) {\n        inaccessibleElements.push(\n          ...fetchInaccessibleElementsDeep(argument),\n        )\n      }\n      return inaccessibleElements;\n    } else if (\n      (element instanceof UnionType) ||\n      (element instanceof ScalarType) ||\n      (element instanceof ArgumentDefinition) ||\n      (element instanceof InputFieldDefinition) ||\n      (element instanceof EnumValue)\n    ) {\n      return inaccessibleElements;\n    }\n    assert(false, \"Unreachable code, element is of unknown type.\");\n  }\n\n  const errors: GraphQLError[] = [];\n  let defaultValueReferencers: Map<\n    DefaultValueReference,\n    SchemaElementWithDefaultValue[]\n  > | undefined = undefined;\n  if (!inaccessibleSpec.isV01()) {\n    // Note that for inaccessible v0.1, enum values and input fields can't be\n    // @inaccessible, so there's no need to compute references (the inaccessible\n    // v0.1 spec also doesn't require default values to be valid, so it doesn't\n    // make sense to compute them).\n    defaultValueReferencers = computeDefaultValueReferencers(schema);\n  }\n\n  for (const type of schema.allTypes()) {\n    if (hasBuiltInName(type)) {\n      // Built-in types (and their descendants) aren't allowed to be\n      // @inaccessible, regardless of shadowing.\n      const inaccessibleElements = fetchInaccessibleElementsDeep(type);\n      if (inaccessibleElements.length > 0) {\n        errors.push(ERRORS.DISALLOWED_INACCESSIBLE.err(\n          `Built-in type \"${type.coordinate}\" cannot use @inaccessible.`,\n          {\n            nodes: type.sourceAST,\n            extensions: {\n              inaccessible_elements: inaccessibleElements\n              .map((element) => element.coordinate),\n              inaccessible_referencers: [type.coordinate],\n            }\n          },\n        ));\n      }\n    } else if (isFeatureDefinition(type)) {\n      // Core feature types (and their descendants) aren't allowed to be\n      // @inaccessible.\n      const inaccessibleElements = fetchInaccessibleElementsDeep(type);\n      if (inaccessibleElements.length > 0) {\n        errors.push(ERRORS.DISALLOWED_INACCESSIBLE.err(\n          `Core feature type \"${type.coordinate}\" cannot use @inaccessible.`,\n          {\n            nodes: type.sourceAST,\n            extensions: {\n              inaccessible_elements: inaccessibleElements\n              .map((element) => element.coordinate),\n              inaccessible_referencers: [type.coordinate],\n            }\n          },\n        ));\n      }\n    } else if (isInaccessible(type)) {\n      // Types can be referenced by other schema elements in a few ways:\n      // 1. Fields, arguments, and input fields may have the type as their base\n      //    type.\n      // 2. Union types may have the type as a member (for object types).\n      // 3. Object and interface types may implement the type (for interface\n      //    types).\n      // 4. Schemas may have the type as a root operation type (for object\n      //    types).\n      //\n      // When a type is hidden, the referencer must follow certain rules for the\n      // schema to be valid. Respectively, these rules are:\n      // 1. The field/argument/input field must not be in the API schema.\n      // 2. The union type, if empty, must not be in the API schema.\n      // 3. No rules are imposed in this case.\n      // 4. The root operation type must not be the query type.\n      //\n      // We validate the 1st and 4th rules above, and leave the 2nd for when we\n      // look at accessible union types.\n      const referencers = type.referencers();\n      for (const referencer of referencers) {\n        if (\n          referencer instanceof FieldDefinition ||\n          referencer instanceof ArgumentDefinition ||\n          referencer instanceof InputFieldDefinition\n        ) {\n          if (isInAPISchema(referencer)) {\n            errors.push(ERRORS.REFERENCED_INACCESSIBLE.err(\n              `Type \"${type.coordinate}\" is @inaccessible but is referenced` +\n              ` by \"${referencer.coordinate}\", which is in the API schema.`,\n              {\n                nodes: type.sourceAST,\n                extensions: {\n                  inaccessible_elements: [type.coordinate],\n                  inaccessible_referencers: [referencer.coordinate],\n                }\n              },\n            ));\n          }\n        } else if (referencer instanceof SchemaDefinition) {\n          if (type === referencer.rootType('query')) {\n            errors.push(ERRORS.QUERY_ROOT_TYPE_INACCESSIBLE.err(\n              `Type \"${type.coordinate}\" is @inaccessible but is the root` +\n              ` query type, which must be in the API schema.`,\n              {\n                nodes: type.sourceAST,\n                extensions: {\n                  inaccessible_elements: [type.coordinate],\n                }\n              },\n            ));\n          }\n        }\n      }\n    } else {\n      // At this point, we know the type must be in the API schema. For types\n      // with children (all types except scalar), we check that at least one of\n      // the children is accessible.\n      if (\n        (type instanceof ObjectType) ||\n        (type instanceof InterfaceType) ||\n        (type instanceof InputObjectType)\n      ) {\n        let isEmpty = true;\n        for (const field of type.fields()) {\n          if (!isInaccessible(field)) isEmpty = false;\n        }\n        if (isEmpty) {\n          errors.push(ERRORS.ONLY_INACCESSIBLE_CHILDREN.err(\n            `Type \"${type.coordinate}\" is in the API schema but all of its` +\n            ` ${(type instanceof InputObjectType) ? 'input ' : ''}fields` +\n            ` are @inaccessible.`,\n            {\n              nodes: type.sourceAST,\n              extensions: {\n                inaccessible_elements: type.fields()\n                .map((field) => field.coordinate),\n                inaccessible_referencers: [type.coordinate],\n              }\n            },\n          ));\n        }\n      } else if (type instanceof UnionType) {\n        let isEmpty = true;\n        for (const member of type.types()) {\n          if (!isInaccessible(member)) isEmpty = false;\n        }\n        if (isEmpty) {\n          errors.push(ERRORS.ONLY_INACCESSIBLE_CHILDREN.err(\n            `Type \"${type.coordinate}\" is in the API schema but all of its` +\n            ` members are @inaccessible.`,\n            {\n              nodes: type.sourceAST,\n              extensions: {\n                inaccessible_elements: type.types()\n                .map((type) => type.coordinate),\n                inaccessible_referencers: [type.coordinate],\n              }\n            }\n          ));\n        }\n      } else if (type instanceof EnumType) {\n        let isEmpty = true;\n        for (const enumValue of type.values) {\n          if (!isInaccessible(enumValue)) isEmpty = false;\n        }\n        if (isEmpty) {\n          errors.push(ERRORS.ONLY_INACCESSIBLE_CHILDREN.err(\n            `Type \"${type.coordinate}\" is in the API schema but all of its` +\n            ` values are @inaccessible.`,\n            {\n              nodes: type.sourceAST,\n              extensions: {\n                inaccessible_elements: type.values\n                .map((enumValue) => enumValue.coordinate),\n                inaccessible_referencers: [type.coordinate],\n              }\n            }\n          ));\n        }\n      }\n\n      // Descend into the type's children if needed.\n      if (\n        (type instanceof ObjectType) ||\n        (type instanceof InterfaceType)\n      ) {\n        const implementedInterfaces = type.interfaces();\n        const implementingTypes: (ObjectType | InterfaceType)[] = [];\n        if (type instanceof InterfaceType) {\n          for (const referencer of type.referencers()) {\n            if (\n              (referencer instanceof ObjectType) ||\n              (referencer instanceof InterfaceType)\n            ) {\n              implementingTypes.push(referencer);\n            }\n          }\n        }\n        for (const field of type.fields()) {\n          if (isInaccessible(field)) {\n            // Fields can be \"referenced\" by the corresponding fields of any\n            // interfaces their parent type implements. When a field is hidden\n            // (but its parent isn't), we check that such implemented fields\n            // aren't in the API schema.\n            for (const implementedInterface of implementedInterfaces) {\n              const implementedField = implementedInterface.field(field.name);\n              if (implementedField && isInAPISchema(implementedField)) {\n                errors.push(ERRORS.IMPLEMENTED_BY_INACCESSIBLE.err(\n                  `Field \"${field.coordinate}\" is @inaccessible but` +\n                  ` implements the interface field` +\n                  ` \"${implementedField.coordinate}\", which is in the API` +\n                  ` schema.`,\n                  {\n                    nodes: field.sourceAST,\n                    extensions: {\n                      inaccessible_elements: [field.coordinate],\n                      inaccessible_referencers: [implementedField.coordinate],\n                    }\n                  }\n                ));\n              }\n            }\n          } else {\n            // Descend into the field's arguments.\n            for (const argument of field.arguments()) {\n              if (isInaccessible(argument)) {\n                // When an argument is hidden (but its ancestors aren't), we\n                // check that it isn't a required argument of its field.\n                if (argument.isRequired()) {\n                  errors.push(ERRORS.REQUIRED_INACCESSIBLE.err(\n                    `Argument \"${argument.coordinate}\" is @inaccessible but` +\n                    ` is a required argument of its field.`,\n                    {\n                      nodes: argument.sourceAST,\n                      extensions: {\n                        inaccessible_elements: [argument.coordinate],\n                        inaccessible_referencers: [argument.coordinate],\n                      }\n                    },\n                  ));\n                }\n                // When an argument is hidden (but its ancestors aren't), we\n                // check that it isn't a required argument of any implementing\n                // fields in the API schema. This is because the GraphQL spec\n                // requires that any arguments of an implementing field that\n                // aren't in its implemented field are optional.\n                //\n                // You might be thinking that a required argument in an\n                // implementing field would necessitate that the implemented\n                // field would also require that argument (and thus the check\n                // above would also always error, removing the need for this\n                // one), but the GraphQL spec does not enforce this. E.g. it's\n                // valid GraphQL for the implementing and implemented arguments\n                // to be both non-nullable, but for just the implemented\n                // argument to have a default value. Not providing a value for\n                // the argument when querying the implemented type succeeds\n                // GraphQL operation validation, but results in input coercion\n                // failure for the field at runtime.\n                for (const implementingType of implementingTypes) {\n                  const implementingField = implementingType.field(field.name);\n                  assert(\n                    implementingField,\n                    \"Schema should have been valid, but an implementing type\" +\n                    \" did not implement one of this type's fields.\"\n                  );\n                  const implementingArgument = implementingField\n                    .argument(argument.name);\n                  assert(\n                    implementingArgument,\n                    \"Schema should have been valid, but an implementing type\" +\n                    \" did not implement one of this type's field's arguments.\"\n                  );\n                  if (\n                    isInAPISchema(implementingArgument) &&\n                    implementingArgument.isRequired()\n                  ) {\n                    errors.push(ERRORS.REQUIRED_INACCESSIBLE.err(\n                      `Argument \"${argument.coordinate}\" is @inaccessible` +\n                      ` but is implemented by the required argument` +\n                      ` \"${implementingArgument.coordinate}\", which is` +\n                      ` in the API schema.`,\n                      {\n                        nodes: argument.sourceAST,\n                        extensions: {\n                          inaccessible_elements: [argument.coordinate],\n                          inaccessible_referencers: [\n                            implementingArgument.coordinate,\n                          ],\n                        }\n                      },\n                    ));\n                  }\n                }\n\n                // Arguments can be \"referenced\" by the corresponding arguments\n                // of any interfaces their parent type implements. When an\n                // argument is hidden (but its ancestors aren't), we check that\n                // such implemented arguments aren't in the API schema.\n                for (const implementedInterface of implementedInterfaces) {\n                  const implementedArgument = implementedInterface\n                    .field(field.name)\n                    ?.argument(argument.name);\n                  if (\n                    implementedArgument &&\n                    isInAPISchema(implementedArgument)\n                  ) {\n                    errors.push(ERRORS.IMPLEMENTED_BY_INACCESSIBLE.err(\n                      `Argument \"${argument.coordinate}\" is @inaccessible` +\n                      ` but implements the interface argument` +\n                      ` \"${implementedArgument.coordinate}\", which is in` +\n                      ` the API schema.`,\n                      {\n                        nodes: argument.sourceAST,\n                        extensions: {\n                          inaccessible_elements: [argument.coordinate],\n                          inaccessible_referencers: [\n                            implementedArgument.coordinate,\n                          ],\n                        }\n                      },\n                    ));\n                  }\n                }\n              }\n            }\n          }\n        }\n      } else if (type instanceof InputObjectType) {\n        for (const inputField of type.fields()) {\n          if (isInaccessible(inputField)) {\n            // When an input field is hidden (but its parent isn't), we check\n            // that it isn't a required argument of its field.\n            if (inputField.isRequired()) {\n              errors.push(ERRORS.REQUIRED_INACCESSIBLE.err(\n                `Input field \"${inputField.coordinate}\" is @inaccessible` +\n                ` but is a required input field of its type.`,\n                {\n                  nodes: inputField.sourceAST,\n                  extensions: {\n                    inaccessible_elements: [inputField.coordinate],\n                    inaccessible_referencers: [inputField.coordinate],\n                  }\n                },\n              ));\n            }\n\n            // Input fields can be referenced by schema default values. When an\n            // input field is hidden (but its parent isn't), we check that the\n            // arguments/input fields with such default values aren't in the API\n            // schema.\n            assert(\n              defaultValueReferencers,\n              \"Input fields can't be @inaccessible in v0.1, but default value\" +\n              \" referencers weren't computed (which is only skipped for v0.1).\"\n            );\n            const referencers = defaultValueReferencers.get(inputField) ?? [];\n            for (const referencer of referencers) {\n              if (isInAPISchema(referencer)) {\n                errors.push(ERRORS.DEFAULT_VALUE_USES_INACCESSIBLE.err(\n                  `Input field \"${inputField.coordinate}\" is @inaccessible` +\n                  ` but is used in the default value of` +\n                  ` \"${referencer.coordinate}\", which is in the API schema.`,\n                  {\n                    nodes: type.sourceAST,\n                    extensions: {\n                      inaccessible_elements: [type.coordinate],\n                      inaccessible_referencers: [referencer.coordinate],\n                    }\n                  },\n                ));\n              }\n            }\n          }\n        }\n      } else if (type instanceof EnumType) {\n        for (const enumValue of type.values) {\n          if (isInaccessible(enumValue)) {\n            // Enum values can be referenced by schema default values. When an\n            // enum value is hidden (but its parent isn't), we check that the\n            // arguments/input fields with such default values aren't in the API\n            // schema.\n            assert(\n              defaultValueReferencers,\n              \"Enum values can't be @inaccessible in v0.1, but default value\" +\n              \" referencers weren't computed (which is only skipped for v0.1).\"\n            );\n            const referencers = defaultValueReferencers.get(enumValue) ?? [];\n            for (const referencer of referencers) {\n              if (isInAPISchema(referencer)) {\n                errors.push(ERRORS.DEFAULT_VALUE_USES_INACCESSIBLE.err(\n                  `Enum value \"${enumValue.coordinate}\" is @inaccessible` +\n                  ` but is used in the default value of` +\n                  ` \"${referencer.coordinate}\", which is in the API schema.`,\n                  {\n                    nodes: type.sourceAST,\n                    extensions: {\n                      inaccessible_elements: [type.coordinate],\n                      inaccessible_referencers: [referencer.coordinate],\n                    }\n                  },\n                ));\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n\n  for (const directive of schema.allDirectives()) {\n    const typeSystemLocations = directive.locations.filter((loc) => isTypeSystemDirectiveLocation(loc));\n    if (hasBuiltInName(directive)) {\n      // Built-in directives (and their descendants) aren't allowed to be\n      // @inaccessible, regardless of shadowing.\n      const inaccessibleElements =\n        fetchInaccessibleElementsDeep(directive);\n      if (inaccessibleElements.length > 0) {\n        errors.push(ERRORS.DISALLOWED_INACCESSIBLE.err(\n          `Built-in directive \"${directive.coordinate}\" cannot use @inaccessible.`,\n          {\n            nodes: directive.sourceAST,\n            extensions: {\n              inaccessible_elements: inaccessibleElements\n              .map((element) => element.coordinate),\n              inaccessible_referencers: [directive.coordinate],\n            }\n          },\n        ));\n      }\n    } else if (isFeatureDefinition(directive)) {\n      // Core feature directives (and their descendants) aren't allowed to be\n      // @inaccessible.\n      const inaccessibleElements =\n        fetchInaccessibleElementsDeep(directive);\n      if (inaccessibleElements.length > 0) {\n        errors.push(ERRORS.DISALLOWED_INACCESSIBLE.err(\n          `Core feature directive \"${directive.coordinate}\" cannot use @inaccessible.`,\n          {\n            nodes: directive.sourceAST,\n            extensions: {\n              inaccessible_elements: inaccessibleElements\n              .map((element) => element.coordinate),\n              inaccessible_referencers: [directive.coordinate],\n            }\n          },\n        ));\n      }\n    } else if (typeSystemLocations.length > 0) {\n      // Directives that can appear on type-system locations (and their\n      // descendants) aren't allowed to be @inaccessible.\n      const inaccessibleElements =\n        fetchInaccessibleElementsDeep(directive);\n      if (inaccessibleElements.length > 0) {\n        errors.push(ERRORS.DISALLOWED_INACCESSIBLE.err(\n          `Directive \"${directive.coordinate}\" cannot use @inaccessible` +\n          ` because it may be applied to these type-system locations:` +\n          ` ${typeSystemLocations.join(', ')}.`,\n          {\n            nodes: directive.sourceAST,\n            extensions: {\n              inaccessible_elements: inaccessibleElements\n              .map((element) => element.coordinate),\n              inaccessible_referencers: [directive.coordinate],\n            }\n          },\n        ));\n      }\n    } else {\n      // At this point, we know the directive must be in the API schema. Descend\n      // into the directive's arguments.\n      for (const argument of directive.arguments()) {\n        // When an argument is hidden (but its parent isn't), we check that it\n        // isn't a required argument of its directive.\n        if (argument.isRequired()) {\n          if (isInaccessible(argument)) {\n            errors.push(ERRORS.REQUIRED_INACCESSIBLE.err(\n              `Argument \"${argument.coordinate}\" is @inaccessible but is a` +\n              ` required argument of its directive.`,\n              {\n                nodes: argument.sourceAST,\n                extensions: {\n                  inaccessible_elements: [argument.coordinate],\n                  inaccessible_referencers: [argument.coordinate],\n                }\n              },\n            ));\n          }\n        }\n      }\n    }\n  }\n\n  if (errors.length > 0) {\n    throw ErrGraphQLAPISchemaValidationFailed(errors);\n  }\n}\n\ntype DefaultValueReference = InputFieldDefinition | EnumValue;\ntype SchemaElementWithDefaultValue =\n  | ArgumentDefinition<\n    | DirectiveDefinition\n    | FieldDefinition<ObjectType | InterfaceType>>\n  | InputFieldDefinition;\n\n// Default values in a schema may contain references to selectable elements that\n// are @inaccessible (input fields and enum values). For a given schema, this\n// function returns a map from such selectable elements to the elements with\n// default values referencing them. (The default values of built-ins and their\n// descendants are skipped.)\n//\n// This function assumes default values are coercible to their location types\n// (see the comments for addValueReferences() for details).\nfunction computeDefaultValueReferencers(\n  schema: Schema,\n): Map<\n  DefaultValueReference,\n  SchemaElementWithDefaultValue[]\n> {\n  const referencers = new Map<\n    DefaultValueReference,\n    SchemaElementWithDefaultValue[]\n  >();\n\n  function addReference(\n    reference: DefaultValueReference,\n    referencer: SchemaElementWithDefaultValue,\n  ) {\n    const referencerList = referencers.get(reference) ?? [];\n    if (referencerList.length === 0) {\n      referencers.set(reference, referencerList);\n    }\n    referencerList.push(referencer);\n  }\n\n  // Note that the fields/arguments/input fields for built-in schema elements\n  // can presumably only have types that are built-in types. Since built-ins and\n  // their children aren't allowed to be @inaccessible, this means we shouldn't\n  // have to worry about references within the default values of arguments and\n  // input fields of built-ins, which is why we skip them below.\n  for (const type of schema.allTypes()) {\n    if (hasBuiltInName(type)) continue;\n\n    // Scan object/interface field arguments.\n    if (\n      (type instanceof ObjectType) ||\n      (type instanceof InterfaceType)\n    ) {\n      for (const field of type.fields()) {\n        for (const argument of field.arguments()) {\n          for (\n            const reference of computeDefaultValueReferences(argument)\n          ) {\n            addReference(reference, argument);\n          }\n        }\n      }\n    }\n\n    // Scan input object fields.\n    if (type instanceof InputObjectType) {\n      for (const inputField of type.fields()) {\n        for (\n          const reference of computeDefaultValueReferences(inputField)\n        ) {\n          addReference(reference, inputField);\n        }\n      }\n    }\n  }\n\n  // Scan directive definition arguments.\n  for (const directive of schema.allDirectives()) {\n    if (hasBuiltInName(directive)) continue;\n    for (const argument of directive.arguments()) {\n      for (\n        const reference of computeDefaultValueReferences(argument)\n      ) {\n        addReference(reference, argument);\n      }\n    }\n  }\n\n  return referencers;\n}\n\n// For the given element, compute a list of input fields and enum values that\n// are referenced in its default value (if any). This function assumes the\n// default value is coercible to the element's type (see the comments for\n// addValueReferences() for details).\nfunction computeDefaultValueReferences(\n  element: SchemaElementWithDefaultValue,\n): DefaultValueReference[] {\n  const references: DefaultValueReference[] = [];\n  addValueReferences(\n    element.defaultValue,\n    getInputType(element),\n    references,\n  )\n  return references;\n}\n\nfunction getInputType(element: SchemaElementWithDefaultValue): InputType {\n  const type = element.type;\n  assert(\n    type,\n    \"Schema should have been valid, but argument/input field did not have type.\"\n  );\n  return type;\n}\n\n// For the given GraphQL input value (represented in the format implicitly\n// defined in buildValue()) and its type, add any references to input fields and\n// enum values in that input value to the given references list.\n//\n// Note that this function requires the input value to be coercible to its type,\n// similar to the \"Values of Correct Type\" validation in the GraphQL spec.\n// However, there are two noteable differences:\n// 1. Variable references are not allowed.\n// 2. Scalar values are not required to be coercible (due to machine-specific differences in input coercion rules).\n// As it turns out, building a Schema object validates this (and a bit more)\n// already, so in the interests of not duplicating validations/keeping the logic\n// centralized, this code assumes the input values it receives satisfy the above\n// validations.\n//\n// Accordingly, this function's code is structured very similarly to the\n// valueToString() function, which makes similar assumptions about its given\n// value. If any inconsistencies/invalidities are discovered, they will be\n// silently ignored.\nfunction addValueReferences(\n  value: any,\n  type: InputType,\n  references: DefaultValueReference[],\n): void {\n  if (value === undefined || value === null) {\n    return;\n  }\n\n  if (isNonNullType(type)) {\n    return addValueReferences(value, type.ofType, references);\n  }\n\n  if (isScalarType(type)) {\n    // No need to look at scalar values.\n    return;\n  }\n\n  if (isVariable(value)) {\n    // Values in schemas shouldn't use variables, but we silently ignore it.\n    return;\n  }\n\n  if (Array.isArray(value)) {\n    if (isListType(type)) {\n      const itemType = type.ofType;\n      for (const item of value) {\n        addValueReferences(item, itemType, references);\n      }\n    } else {\n      // At this point a JS array can only be a list type, but we silently\n      // ignore when it's not.\n    }\n    return;\n  }\n\n  if (isListType(type)) {\n    // Note that GraphQL spec coerces non-list items into single-element lists.\n    return addValueReferences(value, type.ofType, references);\n  }\n\n  if (typeof value === 'object') {\n    if (isInputObjectType(type)) {\n      // Silently ignore object keys that aren't in the input object.\n      for (const field of type.fields()) {\n        const fieldValue = value[field.name];\n        if (fieldValue !== undefined) {\n          references.push(field);\n          addValueReferences(fieldValue, field.type!, references);\n        } else {\n          // Silently ignore when required input fields are omitted.\n        }\n      }\n    } else {\n      // At this point a JS object can only be an input object type, but we\n      // silently ignore when it's not.\n    }\n    return;\n  }\n\n  if (typeof value === 'string') {\n    if (isEnumType(type)) {\n      const enumValue = type.value(value);\n      if (enumValue !== undefined) {\n        references.push(enumValue);\n      } else {\n        // Silently ignore enum values that aren't in the enum type.\n      }\n    } else {\n      // At this point a JS string can only be an enum type, but we silently\n      // ignore when it's not.\n    }\n    return;\n  }\n\n  // This should be unreachable code, but we silently ignore when it's not.\n  return;\n}\n\n// Determine whether a given schema element has a built-in's name. Note that\n// this is not the same as the isBuiltIn flag, due to shadowing definitions\n// (which will not have the flag set).\nfunction hasBuiltInName(element: NamedType | DirectiveDefinition): boolean {\n  const schema = element.schema();\n  if (\n    (element instanceof ObjectType) ||\n    (element instanceof InterfaceType) ||\n    (element instanceof UnionType) ||\n    (element instanceof ScalarType) ||\n    (element instanceof EnumType) ||\n    (element instanceof InputObjectType)\n  ) {\n    return schema.builtInTypes(true).some((type) =>\n      type.name === element.name\n    );\n  } else if (element instanceof DirectiveDefinition) {\n    return schema.builtInDirectives(true).some((directive) =>\n      directive.name === element.name\n    );\n  }\n  assert(false, \"Unreachable code, element is of unknown type.\")\n}\n\n// Remove schema elements marked with @inaccessible in the schema, assuming the\n// schema has been validated with validateInaccessibleElements().\n//\n// Note the schema that results from this may not necessarily be valid GraphQL\n// until core feature definitions have been removed by removeFeatureElements().\nfunction removeInaccessibleElementsAssumingValid(\n  schema: Schema,\n  inaccessibleDirective: DirectiveDefinition,\n): void {\n  function isInaccessible(element: SchemaElement<any, any>): boolean {\n    return element.hasAppliedDirective(inaccessibleDirective);\n  }\n\n  for (const type of schema.types()) {\n    if (isInaccessible(type)) {\n      type.remove();\n    } else {\n      if ((type instanceof ObjectType) || (type instanceof InterfaceType)) {\n        for (const field of type.fields()) {\n          if (isInaccessible(field)) {\n            field.remove();\n          } else {\n            for (const argument of field.arguments()) {\n              if (isInaccessible(argument)) {\n                argument.remove();\n              }\n            }\n          }\n        }\n      } else if (type instanceof InputObjectType) {\n        for (const inputField of type.fields()) {\n          if (isInaccessible(inputField)) {\n            inputField.remove();\n          }\n        }\n      } else if (type instanceof EnumType) {\n        for (const enumValue of type.values) {\n          if (isInaccessible(enumValue)) {\n            enumValue.remove();\n          }\n        }\n      }\n    }\n  }\n\n  for (const directive of schema.directives()) {\n    for (const argument of directive.arguments()) {\n      if (isInaccessible(argument)) {\n        argument.remove();\n      }\n    }\n  }\n}\n", "import {\n  ArgumentDefinition,\n  Directive,\n  DirectiveDefinition,\n  EnumType,\n  EnumValue,\n  ExtendableElement,\n  Extension,\n  FieldDefinition,\n  InputFieldDefinition,\n  InputObjectType,\n  InterfaceImplementation,\n  InterfaceType,\n  NamedType,\n  ObjectType,\n  RootType,\n  ScalarType,\n  Schema,\n  SchemaDefinition,\n  SchemaElement,\n  SchemaRootKind,\n  UnionMember,\n  UnionType\n} from \"./definitions\";\nimport { assert } from \"./utils\";\nimport { valueToString } from \"./values\";\n\nexport type PrintOptions = {\n  indentString: string;\n  definitionsOrder: ('schema' | 'types' | 'directives')[],\n  rootTypesOrder: SchemaRootKind[],\n  typeCompareFn?: (t1: NamedType, t2: NamedType) => number;\n  implementedInterfaceCompareFn?: (t1: InterfaceImplementation<any>, t2: InterfaceImplementation<any>) => number;\n  fieldCompareFn?: (t1: FieldDefinition<any>, t2: FieldDefinition<any>) => number;\n  unionMemberCompareFn?: (t1: UnionMember, t2: UnionMember) => number;\n  enumValueCompareFn?: (t1: EnumValue, t2: EnumValue) => number;\n  inputObjectFieldCompareFn?: (t1: InputFieldDefinition, t2: InputFieldDefinition) => number;\n  directiveCompareFn?: (d1: DirectiveDefinition, d2: DirectiveDefinition) => number;\n  mergeTypesAndExtensions: boolean;\n  showAllBuiltIns: boolean;\n  noDescriptions: boolean;\n  directiveDefinitionFilter?: (d: DirectiveDefinition) => boolean,\n  typeFilter: (t: NamedType) => boolean,\n  fieldFilter: (f: FieldDefinition<any>) => boolean,\n  directiveApplicationFilter: (d: Directive) => boolean,\n}\n\nexport const defaultPrintOptions: PrintOptions = {\n  indentString: \"  \",\n  definitionsOrder: ['schema', 'directives', 'types'],\n  rootTypesOrder: ['query', 'mutation', 'subscription'],\n  mergeTypesAndExtensions: false,\n  showAllBuiltIns: false,\n  noDescriptions: false,\n  typeFilter: () => true,\n  fieldFilter: () => true,\n  directiveApplicationFilter: () => true,\n}\n\nexport function orderPrintedDefinitions(options: PrintOptions): PrintOptions {\n  return {\n    ...options,\n    typeCompareFn: (t1, t2) => t1.name.localeCompare(t2.name),\n    implementedInterfaceCompareFn: (t1, t2) => t1.interface.name.localeCompare(t2.interface.name),\n    fieldCompareFn: (t1, t2) => t1.name.localeCompare(t2.name),\n    unionMemberCompareFn: (t1, t2) => t1.type.name.localeCompare(t2.type.name),\n    enumValueCompareFn: (t1, t2) => t1.name.localeCompare(t2.name),\n    inputObjectFieldCompareFn: (t1, t2) => t1.name.localeCompare(t2.name),\n    directiveCompareFn: (t1, t2) => t1.name.localeCompare(t2.name),\n  };\n}\n\nexport function shallowOrderPrintedDefinitions(options: PrintOptions): PrintOptions {\n  return {\n    ...options,\n    typeCompareFn: (t1, t2) => t1.name.localeCompare(t2.name),\n    directiveCompareFn: (t1, t2) => t1.name.localeCompare(t2.name),\n  };\n}\n\nfunction isDefinitionOrderValid(options: PrintOptions): boolean {\n  return options.definitionsOrder.length === 3\n    && options.definitionsOrder.indexOf('schema') >= 0\n    && options.definitionsOrder.indexOf('types') >= 0\n    && options.definitionsOrder.indexOf('directives') >= 0;\n}\n\nfunction validateOptions(options: PrintOptions) {\n  if (!isDefinitionOrderValid(options)) {\n    throw new Error(`'definitionsOrder' should be a 3-element array containing 'schema', 'types' and 'directives' in the desired order (got: [${options.definitionsOrder.join(', ')}])`);\n  }\n}\n\nexport function printSchema(schema: Schema, options: PrintOptions = defaultPrintOptions): string {\n  validateOptions(options);\n  let directives = options.showAllBuiltIns ? schema.allDirectives() : schema.directives();\n  if (options.directiveDefinitionFilter) {\n    directives = directives.filter(options.directiveDefinitionFilter);\n  }\n  if (options.directiveCompareFn) {\n    directives = directives.concat().sort(options.directiveCompareFn);\n  }\n  let types = options.showAllBuiltIns ? schema.allTypes() : schema.types();\n  if (options.typeFilter) {\n    types = types.filter(options.typeFilter);\n  }\n  if (options.typeCompareFn) {\n    types = types.concat().sort(options.typeCompareFn);\n  }\n  const definitions: string[][] = new Array(3);\n  definitions[options.definitionsOrder.indexOf('schema')] = printSchemaDefinitionAndExtensions(schema.schemaDefinition, options);\n  definitions[options.definitionsOrder.indexOf('directives')] = directives.map(directive => printDirectiveDefinition(directive, options));\n  definitions[options.definitionsOrder.indexOf('types')] = types.flatMap(type => printTypeDefinitionAndExtensions(type, options));\n  return definitions.flat().join('\\n\\n');\n}\n\nfunction definitionAndExtensions<T extends ExtendableElement>(element: {extensions(): readonly Extension<T>[]}, options: PrintOptions): (Extension<any> | null | undefined)[] {\n  return options.mergeTypesAndExtensions ? [undefined] : [null, ...element.extensions()];\n}\n\nfunction printSchemaDefinitionAndExtensions(schemaDefinition: SchemaDefinition, options: PrintOptions): string[] {\n  return printDefinitionAndExtensions(schemaDefinition, options, printSchemaDefinitionOrExtension);\n}\n\nfunction printDefinitionAndExtensions<T extends {extensions(): readonly Extension<any>[]}>(\n  t: T,\n  options: PrintOptions,\n  printer: (t: T, options: PrintOptions, extension?: Extension<any> | null) => string | undefined\n): string[] {\n  return definitionAndExtensions(t, options)\n    .map(ext => printer(t, options, ext))\n    .filter(v => v !== undefined) as string[];\n}\n\nfunction printIsExtension(extension?: Extension<any> | null): string {\n  return extension ? 'extend ' : '';\n}\n\nfunction forExtension<T extends {ofExtension(): Extension<any> | undefined}>(ts: readonly T[], extension?: Extension<any> |null): readonly T[]  {\n  if (extension === undefined) {\n    return ts;\n  }\n  return ts.filter(r => (r.ofExtension() ?? null) === extension);\n}\n\nfunction orderRoots(roots: readonly RootType[], options: PrintOptions): RootType[] {\n  return roots.concat().sort((r1, r2) => options.rootTypesOrder.indexOf(r1.rootKind) - options.rootTypesOrder.indexOf(r2.rootKind));\n}\n\nfunction appliedDirectives(\n  element: SchemaElement<any, any>,\n  options: PrintOptions,\n  extension?: Extension<any> | null,\n): readonly Directive[] {\n  let directives = forExtension(element.appliedDirectives, extension);\n  if (options.directiveApplicationFilter) {\n    directives = directives.filter(options.directiveApplicationFilter);\n  }\n  return directives;\n}\n\nfunction printSchemaDefinitionOrExtension(\n  schemaDefinition: SchemaDefinition,\n  options: PrintOptions,\n  extension?: Extension<SchemaDefinition> | null\n): string | undefined {\n  const roots = forExtension(schemaDefinition.roots(),  extension);\n  const directives = appliedDirectives(schemaDefinition, options, extension);\n\n  if (!roots.length && !directives.length) {\n    return undefined;\n  }\n  if (!extension && !directives.length && isSchemaOfCommonNames(schemaDefinition)) {\n    return undefined;\n  }\n  const rootEntries = orderRoots(roots, options).map((rootType) => `${options.indentString}${rootType.rootKind}: ${rootType.type}`);\n  // Note that that the description is never written with the extension as `extend schema` doesn _not_ support descriptions\n  return printDescription(schemaDefinition, options, extension)\n    + printIsExtension(extension)\n    + 'schema'\n    + printAppliedDirectives(directives, options, true, rootEntries.length !== 0)\n    + (directives.length === 0 ? ' ' : '')\n    + (rootEntries.length === 0 ? '' : '{\\n' + rootEntries.join('\\n') + '\\n}');\n}\n\n/**\n * GraphQL schema define root types for each type of operation. These types are\n * the same as any other type and can be named in any manner, however there is\n * a common naming convention:\n *\n *   schema {\n *     query: Query\n *     mutation: Mutation\n *   }\n *\n * When using this naming convention, the schema description can be omitted.\n */\nfunction isSchemaOfCommonNames(schema: SchemaDefinition): boolean {\n  return !schema.description && schema.roots().every(r => r.isDefaultRootName());\n}\n\n/**\n * Convenience function that assumes `printTypeDefinitionAndExtensions` returns a single result and return that result.\n * Throw an error if there `printTypeDefinitionAndExtensions` returns multiple results.\n */\nexport function printType(type: NamedType, options: PrintOptions = defaultPrintOptions): string {\n  const definitionAndExtensions = printTypeDefinitionAndExtensions(type, options);\n  assert(definitionAndExtensions.length == 1, `Type ${type} is built from more than 1 definition or extension`);\n  return definitionAndExtensions[0];\n}\n\nexport function printTypeDefinitionAndExtensions(type: NamedType, options: PrintOptions = defaultPrintOptions): string[] {\n  switch (type.kind) {\n    case 'ScalarType': return printDefinitionAndExtensions(type, options, printScalarDefinitionOrExtension);\n    case 'ObjectType': return printDefinitionAndExtensions(type, options, (t, options, ext) => printFieldBasedTypeDefinitionOrExtension('type', t, options, ext));\n    case 'InterfaceType': return printDefinitionAndExtensions(type, options, (t, options, ext) => printFieldBasedTypeDefinitionOrExtension('interface', t, options, ext));\n    case 'UnionType': return printDefinitionAndExtensions(type, options, printUnionDefinitionOrExtension);\n    case 'EnumType': return printDefinitionAndExtensions(type, options, printEnumDefinitionOrExtension);\n    case 'InputObjectType': return printDefinitionAndExtensions(type, options, printInputDefinitionOrExtension);\n  }\n}\n\nexport function printDirectiveDefinition(directive: DirectiveDefinition, options: PrintOptions = defaultPrintOptions): string {\n  const locations = directive.locations.join(' | ');\n  return `${printDescription(directive, options, null)}directive ${directive}${printArgs(directive.arguments(), options)}${directive.repeatable ? ' repeatable' : ''} on ${locations}`;\n}\n\nfunction printAppliedDirectives(\n  appliedDirectives: readonly Directive<any>[],\n  options: PrintOptions,\n  onNewLines: boolean = false,\n  endWithNewLine: boolean = onNewLines\n): string {\n  if (appliedDirectives.length == 0) {\n    return \"\";\n  }\n  const joinStr = onNewLines ? '\\n' + options.indentString : ' ';\n  const directives = appliedDirectives.map(d => d.toString()).join(joinStr);\n  return onNewLines ? '\\n' + options.indentString + directives + (endWithNewLine ? '\\n' : '') : ' ' + directives;\n}\n\nfunction printDescription(\n  element: SchemaElement<any, any>,\n  options: PrintOptions,\n  extension: Extension<any> | undefined | null,\n  indentation: string = '',\n  firstInBlock: boolean = true\n): string {\n  // Note that extensions cannot have descriptions (it's not syntactically valid)\n  if (extension || element.description === undefined || options.noDescriptions) {\n    return '';\n  }\n\n  const preferMultipleLines = element.description.length > 70;\n  const blockString = printBlockString(element.description, '', preferMultipleLines);\n  const prefix =\n    indentation && !firstInBlock ? '\\n' + indentation : indentation;\n\n  return prefix + blockString.replace(/\\n/g, '\\n' + indentation) + '\\n';\n}\n\nfunction printScalarDefinitionOrExtension(type: ScalarType, options: PrintOptions, extension?: Extension<any> | null): string | undefined {\n  const directives = appliedDirectives(type, options, extension);\n  if (extension && !directives.length) {\n    return undefined;\n  }\n  return `${printDescription(type, options, extension)}${printIsExtension(extension)}scalar ${type.name}${printAppliedDirectives(directives, options, true, false)}`\n}\n\nfunction printImplementedInterfaces(implementations: readonly InterfaceImplementation<any>[]): string {\n  return implementations.length\n    ? ' implements ' + implementations.map(i => i.interface.name).join(' & ')\n    : '';\n}\n\nfunction printFieldBasedTypeDefinitionOrExtension(kind: string, type: ObjectType | InterfaceType, options: PrintOptions, extension?: Extension<any> | null): string | undefined {\n  const directives = appliedDirectives(type, options, extension);\n  let interfaces = forExtension<InterfaceImplementation<any>>(type.interfaceImplementations(), extension);\n  let fields = forExtension<FieldDefinition<any>>(type.fields(), extension);\n  if (options.fieldFilter) {\n    fields = fields.filter(options.fieldFilter);\n  }\n  if (!directives.length && !interfaces.length && !fields.length && (extension || !type.preserveEmptyDefinition)) {\n    return undefined;\n  }\n  if (options.implementedInterfaceCompareFn) {\n    interfaces = interfaces.concat().sort(options.implementedInterfaceCompareFn);\n  }\n  if (options.fieldCompareFn) {\n    fields = fields.concat().sort(options.fieldCompareFn);\n  }\n  return printDescription(type, options, extension)\n    + printIsExtension(extension)\n    + kind + ' ' + type\n    + printImplementedInterfaces(interfaces)\n    + printAppliedDirectives(directives, options, true, fields.length > 0)\n    + (directives.length === 0 && fields.length > 0 ? ' ' : '')\n    + printFields(fields, options);\n}\n\nfunction printUnionDefinitionOrExtension(type: UnionType, options: PrintOptions, extension?: Extension<any> | null): string | undefined {\n  const directives = appliedDirectives(type, options, extension);\n  let members = forExtension(type.members(), extension);\n  if (!directives.length && !members.length && (extension || !type.preserveEmptyDefinition)) {\n    return undefined;\n  }\n  if (options.unionMemberCompareFn) {\n    members = members.concat().sort(options.unionMemberCompareFn);\n  }\n  const possibleTypes = members.length ? ' = ' + members.map(m => m.type).join(' | ') : '';\n  return printDescription(type, options, extension)\n    + printIsExtension(extension)\n    + 'union ' + type\n    + printAppliedDirectives(directives, options, true, members.length > 0)\n    + possibleTypes;\n}\n\nfunction printEnumDefinitionOrExtension(type: EnumType, options: PrintOptions, extension?: Extension<any> | null): string | undefined {\n  const directives = appliedDirectives(type, options, extension);\n  let values = forExtension(type.values, extension);\n  if (!directives.length && !values.length && (extension || !type.preserveEmptyDefinition)) {\n    return undefined;\n  }\n  if (options.enumValueCompareFn) {\n    values = values.concat().sort(options.enumValueCompareFn);\n  }\n  const vals = values.map((v, i) =>\n    printDescription(v, options, extension, options.indentString, !i)\n    + options.indentString\n    + v\n    + printAppliedDirectives(v.appliedDirectives, options));\n  return printDescription(type, options, extension)\n    + printIsExtension(extension)\n    + 'enum ' + type\n    + printAppliedDirectives(directives, options, true, vals.length > 0)\n    + (directives.length === 0 && vals.length > 0 ? ' ' : '')\n    + printBlock(vals);\n}\n\nfunction printInputDefinitionOrExtension(type: InputObjectType, options: PrintOptions, extension?: Extension<any> | null): string | undefined {\n  const directives = appliedDirectives(type, options, extension);\n  let fields = forExtension(type.fields(), extension);\n  if (!directives.length && !fields.length && (extension || !type.preserveEmptyDefinition)) {\n    return undefined;\n  }\n  if (options.inputObjectFieldCompareFn) {\n    fields = fields.concat().sort(options.inputObjectFieldCompareFn);\n  }\n  return printDescription(type, options, extension)\n    + printIsExtension(extension)\n    + 'input ' + type\n    + printAppliedDirectives(directives, options, true, fields.length > 0)\n    + (directives.length === 0 && fields.length > 0 ? ' ' : '')\n    + printFields(fields, options);\n}\n\nfunction printFields(fields: readonly (FieldDefinition<any> | InputFieldDefinition)[], options: PrintOptions): string {\n  return printBlock(fields.map((f, i) =>\n    printDescription(f, options, undefined, options.indentString, !i)\n    + options.indentString\n    + printField(f, options)\n    + printAppliedDirectives(appliedDirectives(f, options), options)));\n}\n\nfunction printField(field: FieldDefinition<any> | InputFieldDefinition, options: PrintOptions): string {\n  const args = field.kind == 'FieldDefinition' ? printArgs(field.arguments(), options, options.indentString) : '';\n  const defaultValue = field.kind === 'InputFieldDefinition' && field.defaultValue !== undefined\n    ? ' = ' + valueToString(field.defaultValue, field.type)\n    : '';\n  return `${field.name}${args}: ${field.type}${defaultValue}`;\n}\n\nfunction printArgs(args: readonly ArgumentDefinition<any>[], options: PrintOptions, indentation = '') {\n  if (args.length === 0) {\n    return '';\n  }\n\n  // If every arg does not have a description, print them on one line.\n  // Note: this line means that, for args, we skip empty descriptions (because the empty string is falsy). This is inconsistent with\n  // `printDescription` where we print such description in other places. _However_, this is what graphQL-js does as well, and for now,\n  // we'd rather not have things diverge because of just that.\n  if (args.every(arg => !arg.description)) {\n    return '(' + args.map(arg => printArg(arg, options)).join(', ') + ')';\n  }\n\n  const formattedArgs = args\n    .map((arg, i) => printDescription(arg, options, null, '  ' + indentation, !i) + '  ' + indentation + printArg(arg, options))\n    .join('\\n');\n  return `(\\n${formattedArgs}\\n${indentation})`;\n}\n\nfunction printArg(arg: ArgumentDefinition<any>, options: PrintOptions) {\n  return `${arg}${printAppliedDirectives(appliedDirectives(arg, options), options)}`;\n}\n\nfunction printBlock(items: string[]): string {\n  return items.length !== 0 ? '{\\n' + items.join('\\n') + '\\n}' : '';\n}\n\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n */\nfunction printBlockString(\n  value: string,\n  indentation: string = '',\n  preferMultipleLines: boolean = false,\n): string {\n  const isSingleLine = value.indexOf('\\n') === -1;\n  const hasLeadingSpace = value[0] === ' ' || value[0] === '\\t';\n  const hasTrailingQuote = value[value.length - 1] === '\"';\n  const hasTrailingSlash = value[value.length - 1] === '\\\\';\n  const printAsMultipleLines =\n    !isSingleLine ||\n    hasTrailingQuote ||\n    hasTrailingSlash ||\n    preferMultipleLines;\n\n  let result = '';\n  // Format a multi-line block quote to account for leading space.\n  if (printAsMultipleLines && !(isSingleLine && hasLeadingSpace)) {\n    result += '\\n' + indentation;\n  }\n  result += indentation ? value.replace(/\\n/g, '\\n' + indentation) : value;\n  if (printAsMultipleLines) {\n    result += '\\n';\n  }\n\n  return '\"\"\"' + result.replace(/\"\"\"/g, '\\\\\"\"\"') + '\"\"\"';\n}\n", "import { DirectiveLocation } from \"graphql\";\nimport { EnumType, FieldDefinition, ListType, NonNullType, ObjectType, Schema } from \"./definitions\";\n\nexport const introspectionFieldNames = [ '__schema', '__type' ];\nexport const introspectionTypeNames = [\n  '__Schema',\n  '__Directive',\n  '__DirectiveLocation',\n  '__Type',\n  '__Field',\n  '__InputValue',\n  '__EnumValue',\n  '__TypeKind',\n]\n\nexport function isIntrospectionName(name: string): boolean {\n  return name.startsWith('__');\n}\n\nexport function addIntrospectionFields(schema: Schema) {\n  if (schema.type('__Schema')) {\n    return;\n  }\n  const typeKindEnum = schema.addType(new EnumType('__TypeKind', true));\n  typeKindEnum.addValue('SCALAR');\n  typeKindEnum.addValue('OBJECT');\n  typeKindEnum.addValue('INTERFACE');\n  typeKindEnum.addValue('UNION');\n  typeKindEnum.addValue('ENUM');\n  typeKindEnum.addValue('INPUT_OBJECT');\n  typeKindEnum.addValue('LIST');\n  typeKindEnum.addValue('NON_NULL');\n\n  const inputValueType = schema.addType(new ObjectType('__InputValue', true));\n  const fieldType = schema.addType(new ObjectType('__Field', true));\n  const typeType = schema.addType(new ObjectType('__Type', true));\n  const enumValueType = schema.addType(new ObjectType('__EnumValue', true));\n\n  typeType.addField('kind', new NonNullType(typeKindEnum));\n  typeType.addField('name', schema.stringType());\n  typeType.addField('description', schema.stringType());\n  typeType.addField('fields', new ListType(new NonNullType(fieldType)))\n    .addArgument('includeDeprecated', schema.booleanType(), false);\n  typeType.addField('interfaces', new ListType(new NonNullType(typeType)));\n  typeType.addField('possibleTypes', new ListType(new NonNullType(typeType)));\n  typeType.addField('enumValues', new ListType(new NonNullType(enumValueType)))\n    .addArgument('includeDeprecated', schema.booleanType(), false);\n  typeType.addField('inputFields', new ListType(new NonNullType(inputValueType)))\n    .addArgument('includeDeprecated', schema.booleanType(), false);\n  typeType.addField('ofType', typeType);\n  typeType.addField('specifiedByURL', schema.stringType());\n\n  fieldType.addField('name', new NonNullType(schema.stringType()));\n  fieldType.addField('description', schema.stringType());\n  fieldType.addField('args', new NonNullType(new ListType(new NonNullType(inputValueType))))\n    .addArgument('includeDeprecated', schema.booleanType(), false);\n  fieldType.addField('type', new NonNullType(typeType));\n  fieldType.addField('isDeprecated', new NonNullType(schema.booleanType()));\n  fieldType.addField('deprecationReason', schema.stringType());\n\n  inputValueType.addField('name', new NonNullType(schema.stringType()));\n  inputValueType.addField('description', schema.stringType());\n  inputValueType.addField('type', new NonNullType(typeType));\n  inputValueType.addField('defaultValue', schema.stringType());\n  inputValueType.addField('isDeprecated', new NonNullType(schema.booleanType()));\n  inputValueType.addField('deprecationReason', schema.stringType());\n\n  enumValueType.addField('name', new NonNullType(schema.stringType()));\n  enumValueType.addField('description', schema.stringType());\n  enumValueType.addField('isDeprecated', new NonNullType(schema.booleanType()));\n  enumValueType.addField('deprecationReason', schema.stringType());\n\n  const directiveLocationEnum = schema.addType(new EnumType('__DirectiveLocation', true));\n  for (const location of Object.values(DirectiveLocation)) {\n    directiveLocationEnum.addValue(location);\n  }\n\n  const directiveType = schema.addType(new ObjectType('__Directive', true));\n  directiveType.addField('name', new NonNullType(schema.stringType()));\n  directiveType.addField('description', schema.stringType());\n  directiveType.addField('locations', new NonNullType(new ListType(new NonNullType(directiveLocationEnum))));\n  directiveType.addField('args', new NonNullType(new ListType(new NonNullType(inputValueType))))\n    .addArgument('includeDeprecated', schema.booleanType(), false);\n  directiveType.addField('isRepeatable', new NonNullType(schema.booleanType()));\n\n  const schemaType = schema.addType(new ObjectType('__Schema', true));\n  schemaType.addField('description', schema.stringType());\n  schemaType.addField('types', new NonNullType(new ListType(new NonNullType(typeType))));\n  schemaType.addField('queryType', new NonNullType(typeType));\n  schemaType.addField('mutationType', new NonNullType(typeType));\n  schemaType.addField('subscriptionType', new NonNullType(typeType));\n  schemaType.addField('directives', new NonNullType(new ListType(new NonNullType(directiveType))));\n\n  let queryRoot = schema.schemaDefinition.rootType('query');\n  if (!queryRoot) {\n    queryRoot = schema.addType(new ObjectType('Query'));\n    schema.schemaDefinition.setRoot('query', queryRoot);\n  }\n\n  queryRoot.addField(new FieldDefinition('__schema', true), new NonNullType(schemaType));\n  queryRoot.addField(new FieldDefinition('__type', true), typeType)\n    .addArgument('name', new NonNullType(schema.stringType()));\n}\n", "import {\n  ArgumentDefinition,\n  Directive,\n  DirectiveDefinition,\n  EnumType,\n  InputFieldDefinition,\n  InputObjectType,\n  InterfaceType,\n  isInputObjectType,\n  isNonNullType,\n  isScalarType,\n  NamedSchemaElement,\n  ObjectType,\n  Schema,\n  sourceASTs,\n  Type,\n  UnionType,\n  VariableDefinitions\n} from \"./definitions\";\nimport { assertName, ASTNode, GraphQLError, GraphQLErrorOptions } from \"graphql\";\nimport { isValidValue, valueToString, isValidValueApplication } from \"./values\";\nimport { introspectionTypeNames, isIntrospectionName } from \"./introspection\";\nimport { isSubtype, sameType } from \"./types\";\nimport { ERRORS } from \"./error\";\n\n// Note really meant to be called manually as it is part of `Schema.validate`, but separated for core-organization reasons.\n// This mostly apply the validations that graphQL-js does in `validateSchema` which we don't reuse because it applies to\n// a `GraphQLSchema` (but note that the bulk of the validation is done by `validateSDL` which we _do_ reuse in `Schema.validate`).\nexport function validateSchema(schema: Schema): GraphQLError[] {\n  return new Validator(schema).validate();\n}\n\nclass InputObjectCircularRefsValidator {\n  private readonly visitedTypes = new Set<string>();\n  // Array of types nodes used to produce meaningful errors\n  private readonly fieldPath: InputFieldDefinition[] = [];\n  // Position in the field path\n  private readonly fieldPathIndexByTypeName = new Map<string, number>();\n\n  constructor(private readonly onError: (message: string, options: GraphQLErrorOptions) => void) {\n  }\n\n  detectCycles(type: InputObjectType) {\n    if (this.visitedTypes.has(type.name)) {\n      return;\n    }\n\n    this.visitedTypes.add(type.name);\n    this.fieldPathIndexByTypeName.set(type.name, this.fieldPath.length);\n\n    for (const field of type.fields()) {\n      if (isNonNullType(field.type!) && isInputObjectType(field.type.ofType)) {\n        const fieldType = field.type.ofType;\n        const cycleIndex = this.fieldPathIndexByTypeName.get(fieldType.name);\n\n        this.fieldPath.push(field);\n        if (cycleIndex === undefined) {\n          this.detectCycles(fieldType);\n        } else {\n          const cyclePath = this.fieldPath.slice(cycleIndex);\n          const pathStr = cyclePath.map((fieldObj) => fieldObj.name).join('.');\n          this.onError(\n            `Cannot reference Input Object \"${fieldType.name}\" within itself through a series of non-null fields: \"${pathStr}\".`,\n            { nodes: sourceASTs(...cyclePath) },\n          );\n        }\n        this.fieldPath.pop();\n      }\n    }\n    this.fieldPathIndexByTypeName.delete(type.name);\n  }\n}\n\nclass Validator {\n  private readonly emptyVariables = new VariableDefinitions();\n  private hasMissingTypes: boolean = false;\n  private readonly errors: GraphQLError[] = [];\n\n  constructor(readonly schema: Schema) {}\n\n  validate(): GraphQLError[] {\n    for (const type of this.schema.types()) {\n\n      if (!introspectionTypeNames.includes(type.name)) {\n        this.validateName(type);\n      }\n      switch (type.kind) {\n        case 'ObjectType':\n        case 'InterfaceType':\n          this.validateObjectOrInterfaceType(type);\n          break;\n        case 'InputObjectType':\n          this.validateInputObjectType(type);\n          break;\n        case 'UnionType':\n          this.validateUnionType(type);\n          break;\n        case 'EnumType':\n          this.validateEnumType(type);\n          break;\n      }\n    }\n\n    for (const directive of this.schema.allDirectives()) {\n      this.validateName(directive);\n      for (const arg of directive.arguments()) {\n        this.validateArg(arg);\n      }\n      for (const application of directive.applications()) {\n        this.validateDirectiveApplication(directive, application)\n      }\n    }\n\n    // We do the interface implementation and input object cycles validation after we've validated\n    // all types, because both of those checks reach into other types than the one directly checked\n    // so we want to make sure all types are properly set. That is also why we skip those checks if\n    // we found any type missing (in which case, there will be some errors and users should fix those\n    // first).\n    if (!this.hasMissingTypes) {\n      const refsValidator = new InputObjectCircularRefsValidator((msg, opts) => this.addError(msg, opts));\n      for (const type of this.schema.types()) {\n        switch (type.kind) {\n          case 'ObjectType':\n          case 'InterfaceType':\n            this.validateImplementedInterfaces(type);\n            break;\n          case 'InputObjectType':\n            refsValidator.detectCycles(type);\n            break;\n        }\n      }\n    }\n\n    return this.errors;\n  }\n\n  private addError(message: string, options: GraphQLErrorOptions) {\n    this.errors.push(ERRORS.INVALID_GRAPHQL.err(message, options));\n  }\n\n  private validateHasType(elt: { type?: Type, coordinate: string, sourceAST?: ASTNode }): boolean {\n    // Note that this error can't happen if you parse the schema since it wouldn't be valid syntax, but it can happen for\n    // programmatically constructed schema.\n    if (!elt.type) {\n      this.addError(`Element ${elt.coordinate} does not have a type set`, { nodes: elt.sourceAST });\n      this.hasMissingTypes = false;\n    }\n    return !!elt.type;\n  }\n\n  private validateName(elt: { name: string, sourceAST?: ASTNode}) {\n    if (isIntrospectionName(elt.name)) {\n      this.addError(\n        `Name \"${elt.name}\" must not begin with \"__\", which is reserved by GraphQL introspection.`,\n        elt.sourceAST ? { nodes: elt.sourceAST } : {}\n      );\n      return;\n    }\n    try {\n      assertName(elt.name);\n    } catch (e) {\n      this.addError(e.message, elt.sourceAST ? { nodes: elt.sourceAST } : {});\n    }\n  }\n\n  private validateObjectOrInterfaceType(type: ObjectType | InterfaceType) {\n    if (!type.hasFields()) {\n      this.addError(`Type ${type.name} must define one or more fields.`, { nodes: type.sourceAST });\n    }\n    for (const field of type.fields()) {\n      this.validateName(field);\n      this.validateHasType(field);\n      for (const arg of field.arguments()) {\n        this.validateArg(arg);\n      }\n    }\n  }\n\n  private validateImplementedInterfaces(type: ObjectType | InterfaceType) {\n    if (type.implementsInterface(type.name)) {\n      this.addError(\n        `Type ${type} cannot implement itself because it would create a circular reference.`,\n        { nodes: sourceASTs(type, type.interfaceImplementation(type.name)!) },\n      );\n    }\n\n    for (const itf of type.interfaces()) {\n      for (const itfField of itf.fields()) {\n        const field = type.field(itfField.name);\n        if (!field) {\n          this.addError(\n            `Interface field ${itfField.coordinate} expected but ${type} does not provide it.`,\n            { nodes: sourceASTs(itfField, type) },\n          );\n          continue;\n        }\n        // Note that we may not have validated the interface yet, so making sure we have a meaningful error\n        // if the type is not set, even if that means a bit of cpu wasted since we'll re-check later (and\n        // as many type as the interface is implemented); it's a cheap check anyway.\n        if (this.validateHasType(itfField) && !isSubtype(itfField.type!, field.type!)) {\n          this.addError(\n            `Interface field ${itfField.coordinate} expects type ${itfField.type} but ${field.coordinate} of type ${field.type} is not a proper subtype.`,\n            { nodes: sourceASTs(itfField, field) },\n          );\n        }\n\n        for (const itfArg of itfField.arguments()) {\n          const arg = field.argument(itfArg.name);\n          if (!arg) {\n            this.addError(\n              `Interface field argument ${itfArg.coordinate} expected but ${field.coordinate} does not provide it.`,\n              { nodes: sourceASTs(itfArg, field) },\n            );\n            continue;\n          }\n          // Note that we could use contra-variance but as graphQL-js currently doesn't allow it, we mimic that.\n          if (this.validateHasType(itfArg) && !sameType(itfArg.type!, arg.type!)) {\n            this.addError(\n              `Interface field argument ${itfArg.coordinate} expects type ${itfArg.type} but ${arg.coordinate} is type ${arg.type}.`,\n              { nodes: sourceASTs(itfArg, arg) },\n            );\n          }\n        }\n\n        for (const arg of field.arguments()) {\n          // Now check arguments on the type field that are not in the interface. They should not be required.\n          if (itfField.argument(arg.name)) {\n            continue;\n          }\n          if (arg.isRequired()) {\n            this.addError(\n              `Field ${field.coordinate} includes required argument ${arg.name} that is missing from the Interface field ${itfField.coordinate}.`,\n              { nodes: sourceASTs(arg, itfField) },\n            );\n          }\n        }\n      }\n\n      // Now check that this type also declare implementations of all the interfaces of its interface.\n      for (const itfOfItf of itf.interfaces()) {\n        if (!type.implementsInterface(itfOfItf)) {\n          if (itfOfItf === type) {\n            this.addError(\n              `Type ${type} cannot implement ${itf} because it would create a circular reference.`,\n              { nodes: sourceASTs(type, itf) },\n            );\n          } else {\n            this.addError(\n              `Type ${type} must implement ${itfOfItf} because it is implemented by ${itf}.`,\n              { nodes: sourceASTs(type, itf, itfOfItf) },\n            );\n          }\n        }\n      }\n    }\n  }\n\n  private validateInputObjectType(type: InputObjectType) {\n    if (!type.hasFields()) {\n      this.addError(`Input Object type ${type.name} must define one or more fields.`, { nodes: type.sourceAST });\n    }\n    for (const field of type.fields()) {\n      this.validateName(field);\n      if (!this.validateHasType(field)) {\n        continue;\n      }\n      if (field.isRequired() && field.isDeprecated()) {\n        this.addError(\n          `Required input field ${field.coordinate} cannot be deprecated.`,\n          { nodes: sourceASTs(field.appliedDirectivesOf('deprecated')[0], field) },\n        );\n      }\n      if (field.defaultValue !== undefined && !isValidValue(field.defaultValue, field, new VariableDefinitions())) {\n        this.addError(\n          `Invalid default value (got: ${valueToString(field.defaultValue)}) provided for input field ${field.coordinate} of type ${field.type}.`,\n          { nodes: sourceASTs(field) },\n        );\n      }\n    }\n  }\n\n  private validateArg(arg: ArgumentDefinition<any>) {\n    this.validateName(arg);\n    if (!this.validateHasType(arg)) {\n      return;\n    }\n    if (arg.isRequired() && arg.isDeprecated()) {\n      this.addError(\n        `Required argument ${arg.coordinate} cannot be deprecated.`,\n        { nodes: sourceASTs(arg.appliedDirectivesOf('deprecated')[0], arg) },\n      );\n    }\n    if (arg.defaultValue !== undefined && !isValidValue(arg.defaultValue, arg, new VariableDefinitions())) {\n      // don't error if custom scalar is shadowing a builtin scalar\n      const builtInScalar = this.schema.builtInScalarTypes().find((t) => arg.type && isScalarType(arg.type) && t.name === arg.type.name);\n      if (!builtInScalar || !isValidValueApplication(arg.defaultValue, builtInScalar, arg.defaultValue, new VariableDefinitions())) {\n        this.addError(\n          `Invalid default value (got: ${valueToString(arg.defaultValue)}) provided for argument ${arg.coordinate} of type ${arg.type}.`,\n          { nodes: sourceASTs(arg) },\n        );\n      }\n    }\n  }\n\n  private validateUnionType(type: UnionType) {\n    if (type.membersCount() === 0) {\n      this.addError(`Union type ${type.coordinate} must define one or more member types.`, { nodes: type.sourceAST });\n    }\n  }\n\n  private validateEnumType(type: EnumType) {\n    if (type.values.length === 0) {\n      this.addError(`Enum type ${type.coordinate} must define one or more values.`, { nodes: type.sourceAST });\n    }\n    for (const value of type.values) {\n      this.validateName(value);\n      if (value.name === 'true' || value.name === 'false' || value.name === 'null') {\n        this.addError(\n          `Enum type ${type.coordinate} cannot include value: ${value}.`,\n          { nodes: value.sourceAST },\n        );\n      }\n    }\n  }\n\n  private validateDirectiveApplication(definition: DirectiveDefinition, application: Directive) {\n    // Note that graphQL `validateSDL` method will already have validated that we only have\n    // known arguments and that that we don't miss a required argument. What remains is to\n    // ensure each provided value if valid for the argument type.\n    for (const argument of definition.arguments()) {\n      const value = application.arguments()[argument.name];\n      if (!value) {\n        // Again, that implies that value is not required.\n        continue;\n      }\n      // Note that we validate if the definition argument has a type set separatly\n      // and log an error if necesary, but we just want to avoid calling\n      // `isValidValue` if there is not type as it may throw.\n      if (argument.type && !isValidValue(value, argument, this.emptyVariables)) {\n        const parent = application.parent;\n        // The only non-named SchemaElement is the `schema` definition.\n        const parentDesc = parent instanceof NamedSchemaElement\n          ? parent.coordinate\n          : 'schema';\n        this.addError(\n          `Invalid value for \"${argument.coordinate}\" of type \"${argument.type}\" in application of \"${definition.coordinate}\" to \"${parentDesc}\".`,\n          { nodes: sourceASTs(application, argument) },\n        );\n      }\n    }\n  }\n}\n", "import {\n  ConstArgumentNode,\n  ASTNode,\n  buildASTSchema as buildGraphqlSchemaFromAST,\n  DirectiveLocation,\n  ConstDirectiveNode,\n  ConstValueNode,\n  DocumentNode,\n  GraphQLError,\n  GraphQLSchema,\n  Kind,\n  ListTypeNode,\n  NamedTypeNode,\n  parse,\n  TypeNode,\n  VariableDefinitionNode,\n  VariableNode,\n  SchemaDefinitionNode,\n  TypeDefinitionNode,\n  DefinitionNode,\n  DirectiveDefinitionNode,\n  DirectiveNode,\n} from \"graphql\";\nimport {\n  CoreImport,\n  CoreOrLinkDirectiveArgs,\n  CoreSpecDefinition,\n  extractCoreFeatureImports,\n  FeatureUrl,\n  FeatureVersion,\n  findCoreSpecVersion,\n  isCoreSpecDirectiveApplication,\n  removeAllCoreFeatures,\n} from \"./specs/coreSpec\";\nimport { assert, mapValues, MapWithCachedArrays, removeArrayElement } from \"./utils\";\nimport {\n  withDefaultValues,\n  valueEquals,\n  valueToString,\n  valueToAST,\n  valueFromAST,\n  valueNodeToConstValueNode,\n  argumentsEquals,\n  collectVariablesInValue\n} from \"./values\";\nimport { removeInaccessibleElements } from \"./specs/inaccessibleSpec\";\nimport { printDirectiveDefinition, printSchema } from './print';\nimport { sameType } from './types';\nimport { addIntrospectionFields, introspectionFieldNames, isIntrospectionName } from \"./introspection\";\nimport { validateSDL } from \"graphql/validation/validate\";\nimport { SDLValidationRule } from \"graphql/validation/ValidationContext\";\nimport { specifiedSDLRules } from \"graphql/validation/specifiedRules\";\nimport { validateSchema } from \"./validate\";\nimport { createDirectiveSpecification, createScalarTypeSpecification, DirectiveSpecification, TypeSpecification } from \"./directiveAndTypeSpecification\";\nimport { didYouMean, suggestionList } from \"./suggestions\";\nimport { aggregateError, ERRORS, withModifiedErrorMessage } from \"./error\";\nimport { coreFeatureDefinitionIfKnown } from \"./knownCoreFeatures\";\n\nconst validationErrorCode = 'GraphQLValidationFailed';\nconst DEFAULT_VALIDATION_ERROR_MESSAGE = 'The schema is not a valid GraphQL schema.';\n\nconst EMPTY_SET = new Set<never>();\n\nexport const ErrGraphQLValidationFailed = (causes: GraphQLError[], message: string = DEFAULT_VALIDATION_ERROR_MESSAGE) =>\n  aggregateError(validationErrorCode, message, causes);\n\nconst apiSchemaValidationErrorCode = 'GraphQLAPISchemaValidationFailed';\n\nexport const ErrGraphQLAPISchemaValidationFailed = (causes: GraphQLError[]) =>\n  aggregateError(apiSchemaValidationErrorCode, 'The supergraph schema failed to produce a valid API schema', causes);\n\nexport const typenameFieldName = '__typename';\n\nexport type QueryRootKind = 'query';\nexport type MutationRootKind = 'mutation';\nexport type SubscriptionRootKind = 'subscription';\nexport type SchemaRootKind = QueryRootKind | MutationRootKind | SubscriptionRootKind;\n\nexport const allSchemaRootKinds: SchemaRootKind[] = ['query', 'mutation', 'subscription'];\n\nexport function defaultRootName(rootKind: SchemaRootKind): string {\n  return rootKind.charAt(0).toUpperCase() + rootKind.slice(1);\n}\n\nfunction checkDefaultSchemaRoot(type: NamedType): SchemaRootKind | undefined {\n  if (type.kind !== 'ObjectType') {\n    return undefined;\n  }\n  switch (type.name) {\n    case 'Query': return 'query';\n    case 'Mutation': return 'mutation';\n    case 'Subscription': return 'subscription';\n    default: return undefined;\n  }\n}\n\nexport function isSchemaRootType(type: NamedType): boolean {\n  return isObjectType(type) && type.isRootType();\n}\n\nexport type Type = NamedType | WrapperType;\nexport type NamedType = ScalarType | ObjectType | InterfaceType | UnionType | EnumType | InputObjectType;\nexport type OutputType = ScalarType | ObjectType | InterfaceType | UnionType | EnumType | ListType<any> | NonNullType<any>;\nexport type InputType = ScalarType | EnumType | InputObjectType | ListType<any> | NonNullType<any>;\nexport type WrapperType = ListType<any> | NonNullType<any>;\nexport type AbstractType = InterfaceType | UnionType;\nexport type CompositeType = ObjectType | InterfaceType | UnionType;\n\nexport type OutputTypeReferencer = FieldDefinition<any>;\nexport type InputTypeReferencer = InputFieldDefinition | ArgumentDefinition<any>;\nexport type ObjectTypeReferencer = OutputTypeReferencer | UnionType | SchemaDefinition;\nexport type InterfaceTypeReferencer = OutputTypeReferencer | ObjectType | InterfaceType;\n\nexport type NullableType = NamedType | ListType<any>;\n\nexport type NamedTypeKind = NamedType['kind'];\n\nexport function isNamedType(type: Type): type is NamedType {\n  return type instanceof BaseNamedType;\n}\n\nexport function isWrapperType(type: Type): type is WrapperType {\n  return isListType(type) || isNonNullType(type);\n}\n\nexport function isListType(type: Type): type is ListType<any> {\n  return type.kind == 'ListType';\n}\n\nexport function isNonNullType(type: Type): type is NonNullType<any> {\n  return type.kind == 'NonNullType';\n}\n\nexport function isScalarType(type: Type): type is ScalarType {\n  return type.kind == 'ScalarType';\n}\n\nexport function isCustomScalarType(type: Type): boolean {\n  return isScalarType(type) && !graphQLBuiltInTypes.includes(type.name);\n}\n\nexport function isIntType(type: Type): boolean {\n  return type === type.schema().intType();\n}\n\nexport function isStringType(type: Type): boolean {\n  return type === type.schema().stringType();\n}\n\nexport function isFloatType(type: Type): boolean {\n  return type === type.schema().floatType();\n}\n\nexport function isBooleanType(type: Type): boolean {\n  return type === type.schema().booleanType();\n}\n\nexport function isIDType(type: Type): boolean {\n  return type === type.schema().idType();\n}\n\nexport function isObjectType(type: Type): type is ObjectType {\n  return type.kind == 'ObjectType';\n}\n\nexport function isInterfaceType(type: Type): type is InterfaceType {\n  return type.kind == 'InterfaceType';\n}\n\nexport function isEnumType(type: Type): type is EnumType {\n  return type.kind == 'EnumType';\n}\n\nexport function isUnionType(type: Type): type is UnionType {\n  return type.kind == 'UnionType';\n}\n\nexport function isInputObjectType(type: Type): type is InputObjectType {\n  return type.kind == 'InputObjectType';\n}\n\nexport function isOutputType(type: Type): type is OutputType {\n  switch (baseType(type).kind) {\n    case 'ScalarType':\n    case 'ObjectType':\n    case 'UnionType':\n    case 'EnumType':\n    case 'InterfaceType':\n      return true;\n    default:\n      return false;\n  }\n}\n\nexport function isInputType(type: Type): type is InputType {\n  switch (baseType(type).kind) {\n    case 'ScalarType':\n    case 'EnumType':\n    case 'InputObjectType':\n      return true;\n    default:\n      return false;\n  }\n}\n\nexport function isTypeOfKind<T extends Type>(type: Type, kind: T['kind']): type is T {\n  return type.kind === kind;\n}\n\nexport function filterTypesOfKind<T extends Type>(types: readonly Type[], kind: T['kind']): T[] {\n  return types.reduce(\n    (acc: T[], type: Type) => {\n      if (isTypeOfKind(type, kind)) {\n        acc.push(type);\n      }\n      return acc;\n    },\n    [],\n  );\n}\n\nexport function baseType(type: Type): NamedType {\n  return isWrapperType(type) ? type.baseType() : type;\n}\n\nexport function isNullableType(type: Type): boolean {\n  return !isNonNullType(type);\n}\n\nexport function isAbstractType(type: Type): type is AbstractType {\n  return isInterfaceType(type) || isUnionType(type);\n}\n\nexport function isCompositeType(type: Type): type is CompositeType {\n  return isObjectType(type) || isInterfaceType(type) || isUnionType(type);\n}\n\nexport function possibleRuntimeTypes(type: CompositeType): readonly ObjectType[] {\n  switch (type.kind) {\n    case 'InterfaceType': return type.possibleRuntimeTypes();\n    case 'UnionType': return type.types();\n    case 'ObjectType': return [type];\n  }\n}\n\nexport function runtimeTypesIntersects(t1: CompositeType, t2: CompositeType): boolean {\n  if (t1 === t2) {\n    return true;\n  }\n\n  const rt1 = possibleRuntimeTypes(t1);\n  const rt2 = possibleRuntimeTypes(t2);\n  for (const obj1 of rt1) {\n    if (rt2.some(obj2 => obj1.name === obj2.name)) {\n      return true;\n    }\n  }\n  return false;\n}\n\nexport function supertypes(type: CompositeType): readonly CompositeType[] {\n  switch (type.kind) {\n    case 'InterfaceType': return type.interfaces();\n    case 'UnionType': return [];\n    case 'ObjectType': return (type.interfaces() as CompositeType[]).concat(type.unionsWhereMember());\n  }\n}\n\nexport function isConditionalDirective(directive: Directive<any, any> | DirectiveDefinition<any>): boolean {\n  return ['include', 'skip'].includes(directive.name);\n}\n\nexport const executableDirectiveLocations: DirectiveLocation[] = [\n  DirectiveLocation.QUERY,\n  DirectiveLocation.MUTATION,\n  DirectiveLocation.SUBSCRIPTION,\n  DirectiveLocation.FIELD,\n  DirectiveLocation.FRAGMENT_DEFINITION,\n  DirectiveLocation.FRAGMENT_SPREAD,\n  DirectiveLocation.INLINE_FRAGMENT,\n  DirectiveLocation.VARIABLE_DEFINITION,\n];\n\nconst executableDirectiveLocationsSet = new Set(executableDirectiveLocations);\n\nexport function isExecutableDirectiveLocation(loc: DirectiveLocation): boolean {\n  return executableDirectiveLocationsSet.has(loc);\n}\n\nexport const typeSystemDirectiveLocations: DirectiveLocation[] = [\n  DirectiveLocation.SCHEMA,\n  DirectiveLocation.SCALAR,\n  DirectiveLocation.OBJECT,\n  DirectiveLocation.FIELD_DEFINITION,\n  DirectiveLocation.ARGUMENT_DEFINITION,\n  DirectiveLocation.INTERFACE,\n  DirectiveLocation.UNION,\n  DirectiveLocation.ENUM,\n  DirectiveLocation.ENUM_VALUE,\n  DirectiveLocation.INPUT_OBJECT,\n  DirectiveLocation.INPUT_FIELD_DEFINITION,\n];\n\nconst typeSystemDirectiveLocationsSet = new Set(typeSystemDirectiveLocations);\n\nexport function isTypeSystemDirectiveLocation(loc: DirectiveLocation): boolean {\n  return typeSystemDirectiveLocationsSet.has(loc);\n}\n\n/**\n * Converts a type to an AST of a \"reference\" to that type, one corresponding to the type `toString()` (and thus never a type definition).\n *\n * To print a type definition, see the `printTypeDefinitionAndExtensions` method.\n */\nexport function typeToAST(type: Type): TypeNode {\n  switch (type.kind) {\n    case 'ListType':\n      return {\n        kind: Kind.LIST_TYPE,\n        type: typeToAST(type.ofType)\n      };\n    case 'NonNullType':\n      return {\n        kind: Kind.NON_NULL_TYPE,\n        type: typeToAST(type.ofType) as NamedTypeNode | ListTypeNode\n      };\n    default:\n      return {\n        kind: Kind.NAMED_TYPE,\n        name: { kind: Kind.NAME, value: type.name }\n      };\n  }\n}\n\nexport function typeFromAST(schema: Schema, node: TypeNode): Type {\n  switch (node.kind) {\n    case Kind.LIST_TYPE:\n      return new ListType(typeFromAST(schema, node.type));\n    case Kind.NON_NULL_TYPE:\n      return new NonNullType(typeFromAST(schema, node.type) as NullableType);\n    default:\n      const type = schema.type(node.name.value);\n      if (!type) {\n        throw ERRORS.INVALID_GRAPHQL.err(`Unknown type \"${node.name.value}\"`, { nodes: node });\n      }\n      return type;\n  }\n}\n\nexport type LeafType = ScalarType | EnumType;\n\nexport function isLeafType(type: Type): type is LeafType {\n  return isScalarType(type) || isEnumType(type);\n}\n\nexport interface Named {\n  readonly name: string;\n}\n\nexport type ExtendableElement = SchemaDefinition | NamedType;\n\nexport class DirectiveTargetElement<T extends DirectiveTargetElement<T>> {\n  readonly appliedDirectives: Directive<T>[];\n\n  constructor(\n    private readonly _schema: Schema,\n    directives: readonly Directive<any>[] = [],\n  ) {\n    this.appliedDirectives = directives.map((d) => this.attachDirective(d));\n  }\n\n  schema(): Schema {\n    return this._schema;\n  }\n\n  private attachDirective(directive: Directive<any>): Directive<T> {\n    // if the directive is not attached, we can assume we're fine just attaching it to use. Otherwise, we're \"copying\" it.\n    const toAdd = directive.isAttached()\n      ? new Directive(directive.name, directive.arguments())\n      : directive;\n\n    Element.prototype['setParent'].call(toAdd, this);\n    return toAdd;\n  }\n\n  appliedDirectivesOf<TApplicationArgs extends {[key: string]: any} = {[key: string]: any}>(nameOrDefinition: string | DirectiveDefinition<TApplicationArgs>): Directive<T, TApplicationArgs>[] {\n    const directiveName = typeof nameOrDefinition === 'string' ? nameOrDefinition : nameOrDefinition.name;\n    return this.appliedDirectives.filter(d => d.name == directiveName) as Directive<T, TApplicationArgs>[];\n  }\n\n  hasAppliedDirective(nameOrDefinition: string | DirectiveDefinition): boolean {\n    const directiveName = typeof nameOrDefinition === 'string' ? nameOrDefinition : nameOrDefinition.name;\n    return this.appliedDirectives.some(d => d.name == directiveName);\n  }\n\n  appliedDirectivesToDirectiveNodes() : ConstDirectiveNode[] | undefined {\n    return directivesToDirectiveNodes(this.appliedDirectives);\n  }\n\n  appliedDirectivesToString(): string {\n    return directivesToString(this.appliedDirectives);\n  }\n\n  collectVariablesInAppliedDirectives(collector: VariableCollector) {\n    for (const applied of this.appliedDirectives) {\n      collector.collectInArguments(applied.arguments());\n    }\n  }\n}\n\nexport function sourceASTs<TNode extends ASTNode = ASTNode>(...elts: ({ sourceAST?: TNode } | undefined)[]): TNode[] {\n  return elts.map(elt => elt?.sourceAST).filter((elt): elt is TNode => elt !== undefined);\n}\n\n// Not exposed: mostly about avoid code duplication between SchemaElement and Directive (which is not a SchemaElement as it can't\n// have applied directives or a description\nabstract class Element<TParent extends SchemaElement<any, any> | Schema | DirectiveTargetElement<any>> {\n  protected _parent?: TParent;\n  sourceAST?: ASTNode;\n\n  schema(): Schema {\n    const schema = this.schemaInternal();\n    assert(schema, 'requested schema does not exist. Probably because the element is unattached');\n    return schema;\n  }\n\n  // this function exists because sometimes we can have an element that will be attached soon even though the current state is unattached\n  // (mainly for callbacks). Sometimes these intermediate states need to get the schema if it exists, but it may not.\n  // all external clients should use schema()\n  protected schemaInternal(): Schema | undefined {\n    if (!this._parent) {\n      return undefined;\n    } else if (this._parent instanceof Schema) {\n      // Note: at the time of this writing, it seems like typescript type-checking breaks a bit around generics.\n      // At this point of the code, `this._parent` is typed as 'TParent & Schema', but for some reason this is\n      // \"not assignable to type 'Schema | undefined'\" (which sounds wrong: if my type theory is not too broken,\n      // 'A & B' should always be assignable to both 'A' and 'B').\n      return this._parent as any;\n    } else if (this._parent instanceof SchemaElement) {\n      return this._parent.schemaInternal();\n    } else if (this._parent instanceof DirectiveTargetElement) {\n      return this._parent.schema();\n    }\n    assert(false, 'unreachable code. parent is of unknown type');\n  }\n\n  get parent(): TParent {\n    assert(this._parent, 'trying to access non-existent parent');\n    return this._parent;\n  }\n\n  isAttached(): boolean {\n    return !!this._parent;\n  }\n\n  // Accessed only through Element.prototype['setParent'] (so we don't mark it protected as an override wouldn't be properly called).\n  private setParent(parent: TParent) {\n    assert(!this._parent, \"Cannot set parent of an already attached element\");\n    this._parent = parent;\n    this.onAttached();\n  }\n\n  protected onAttached() {\n    // Nothing by default, but can be overriden.\n  }\n\n  protected checkUpdate() {\n    // Allowing to add element to a detached element would get hairy. Because that would mean that when you do attach an element,\n    // you have to recurse within that element to all children elements to check whether they are attached or not and to which\n    // schema. And if they aren't attached, attaching them as side-effect could be surprising (think that adding a single field\n    // to a schema could bring a whole hierarchy of types and directives for instance). If they are attached, it only work if\n    // it's to the same schema, but you have to check.\n    // Overall, it's simpler to force attaching elements before you add other elements to them.\n    assert(this.isAttached(), () => `Cannot modify detached element ${this}`);\n  }\n}\n\nexport class Extension<TElement extends ExtendableElement> {\n  protected _extendedElement?: TElement;\n  sourceAST?: ASTNode;\n\n  get extendedElement(): TElement | undefined {\n    return this._extendedElement;\n  }\n\n  private setExtendedElement(element: TElement) {\n    assert(!this._extendedElement, \"Cannot attached already attached extension\");\n    this._extendedElement = element;\n  }\n}\n\ntype UnappliedDirective = {\n  nameOrDef: DirectiveDefinition<Record<string, any>> | string,\n  args: Record<string, any>,\n  extension?: Extension<any>,\n  directive: DirectiveNode,\n};\n\n// TODO: ideally, we should hide the ctor of this class as we rely in places on the fact the no-one external defines new implementations.\nexport abstract class SchemaElement<TOwnType extends SchemaElement<any, TParent>, TParent extends SchemaElement<any, any> | Schema> extends Element<TParent> {\n  protected _appliedDirectives: Directive<TOwnType>[] | undefined;\n  protected _unappliedDirectives: UnappliedDirective[] | undefined;\n  description?: string;\n\n  addUnappliedDirective({ nameOrDef, args, extension, directive }: UnappliedDirective) {\n    const toAdd = {\n      nameOrDef,\n      args: args ?? {},\n      extension,\n      directive,\n    };\n    if (this._unappliedDirectives) {\n      this._unappliedDirectives.push(toAdd);\n    } else {\n      this._unappliedDirectives = [toAdd];\n    }\n  }\n\n  processUnappliedDirectives() {\n    for (const { nameOrDef, args, extension, directive } of this._unappliedDirectives ?? []) {\n      const d = this.applyDirective(nameOrDef, args);\n      d.setOfExtension(extension);\n      d.sourceAST = directive;\n    }\n    this._unappliedDirectives = undefined;\n  }\n\n  get appliedDirectives(): readonly Directive<TOwnType>[] {\n    return this._appliedDirectives ?? [];\n  }\n\n  appliedDirectivesOf<TApplicationArgs extends {[key: string]: any} = {[key: string]: any}>(nameOrDefinition: string | DirectiveDefinition<TApplicationArgs>): Directive<TOwnType, TApplicationArgs>[] {\n    const directiveName = typeof nameOrDefinition === 'string' ? nameOrDefinition : nameOrDefinition.name;\n    return this.appliedDirectives.filter(d => d.name == directiveName) as Directive<TOwnType, TApplicationArgs>[];\n  }\n\n  hasAppliedDirective(nameOrDefinition: string | DirectiveDefinition<any>): boolean {\n    // From the type-system point of view, there is no `appliedDirectivesOf(_: string | DirectiveDefinition)` function, but rather 2 overloads, neither of\n    // which can take 'string | DirectiveDefinition', hence the need for this surprisingly looking code. And we don't really want to remove the overloading\n    // on `appliedDirectivesOf` because that would lose us the type-checking of arguments in the case where we pass a definition (or rather, we could\n    // preserve it, but it would make is a bit too easy to mess up calls with the 'string' argument).\n    return (typeof nameOrDefinition === 'string'\n      ? this.appliedDirectivesOf(nameOrDefinition)\n      : this.appliedDirectivesOf(nameOrDefinition)\n    ).length !== 0;\n  }\n\n  applyDirective<TApplicationArgs extends {[key: string]: any} = {[key: string]: any}>(\n    nameOrDef: DirectiveDefinition<TApplicationArgs> | string,\n    args?: TApplicationArgs,\n    asFirstDirective: boolean = false,\n  ): Directive<TOwnType, TApplicationArgs> {\n    let toAdd: Directive<TOwnType, TApplicationArgs>;\n    if (typeof nameOrDef === 'string') {\n      this.checkUpdate();\n      toAdd = new Directive<TOwnType, TApplicationArgs>(nameOrDef, args ?? Object.create(null));\n      const def = this.schema().directive(nameOrDef) ?? this.schema().blueprint.onMissingDirectiveDefinition(this.schema(), toAdd);\n      if (!def) {\n        throw this.schema().blueprint.onGraphQLJSValidationError(\n          this.schema(),\n           ERRORS.INVALID_GRAPHQL.err(`Unknown directive \"@${nameOrDef}\".`)\n        );\n      }\n      if (Array.isArray(def)) {\n        throw ErrGraphQLValidationFailed(def);\n      }\n    } else {\n      this.checkUpdate(nameOrDef);\n      toAdd = new Directive<TOwnType, TApplicationArgs>(nameOrDef.name, args ?? Object.create(null));\n    }\n    Element.prototype['setParent'].call(toAdd, this);\n    // TODO: we should typecheck arguments or our TApplicationArgs business is just a lie.\n    if (this._appliedDirectives) {\n      if (asFirstDirective) {\n        this._appliedDirectives.unshift(toAdd);\n      } else {\n        this._appliedDirectives.push(toAdd);\n      }\n    } else {\n      this._appliedDirectives = [toAdd];\n    }\n    DirectiveDefinition.prototype['addReferencer'].call(toAdd.definition!, toAdd);\n    this.onModification();\n    return toAdd;\n  }\n\n  protected removeAppliedDirectives() {\n    // We copy the array because this._appliedDirectives is modified in-place by `directive.remove()`\n    if (!this._appliedDirectives) {\n      return;\n    }\n    const applied = this._appliedDirectives.concat();\n    applied.forEach(d => d.remove());\n  }\n\n  protected onModification() {\n    const schema = this.schemaInternal();\n    if (schema) {\n      Schema.prototype['onModification'].call(schema);\n    }\n  }\n\n  protected isElementBuiltIn(): boolean {\n    return false;\n  }\n\n  protected removeTypeReferenceInternal(type: BaseNamedType<any, any>) {\n    // This method is a bit of a hack: we don't want to expose it and we call it from an other class, so we call it though\n    // `SchemaElement.prototype`, but we also want this to abstract as it can only be implemented by each concrete subclass.\n    // As we can't have both at the same time, this method just delegate to `remoteTypeReference` which is genuinely\n    // abstract. This also allow to work around the typing issue that the type checker cannot tell that every BaseNamedType\n    // is a NamedType (because in theory, someone could extend BaseNamedType without listing it in NamedType; but as\n    // BaseNamedType is not exported and we don't plan to make that mistake ...).\n    this.removeTypeReference(type as any);\n  }\n\n  protected abstract removeTypeReference(type: NamedType): void;\n\n  protected checkRemoval() {\n    assert(!this.isElementBuiltIn() || Schema.prototype['canModifyBuiltIn'].call(this.schema()), () => `Cannot modify built-in ${this}`);\n    // We allow removals even on detached element because that doesn't particularly create issues (and we happen to do such\n    // removals on detached internally; though of course we could refactor the code if we wanted).\n  }\n\n  protected checkUpdate(addedElement?: { schema(): Schema, isAttached(): boolean }) {\n    super.checkUpdate();\n    if (!Schema.prototype['canModifyBuiltIn'].call(this.schema())) {\n      // Ensure this element (the modified one), is not a built-in, or part of one.\n      let thisElement: SchemaElement<TOwnType, any> | Schema | undefined = this;\n      while (thisElement && thisElement instanceof SchemaElement) {\n        assert(!thisElement.isElementBuiltIn(), () => `Cannot modify built-in (or part of built-in) ${this}`);\n        thisElement = thisElement.parent;\n      }\n    }\n    if (addedElement && addedElement.isAttached()) {\n      const thatSchema = addedElement.schema();\n      assert(!thatSchema || thatSchema === this.schema(), () => `Cannot add element ${addedElement} to ${this} as it is attached to another schema`);\n    }\n  }\n}\n\n// TODO: ideally, we should hide the ctor of this class as we rely in places on the fact the no-one external defines new implementations.\nexport abstract class NamedSchemaElement<TOwnType extends NamedSchemaElement<TOwnType, TParent, TReferencer>, TParent extends NamedSchemaElement<any, any, any> | Schema, TReferencer> extends SchemaElement<TOwnType, TParent> implements Named {\n  // We want to be able to rename some elements, but we prefer offering that through a `rename`\n  // method rather than exposing a name setter, as this feel more explicit (but that's arguably debatable).\n  // We also currently only offer renames on types (because that's the only one we currently need),\n  // though we could expand that.\n  protected _name: string;\n\n  constructor(name: string) {\n    super();\n    this._name = name;\n  }\n\n  get name(): string {\n    return this._name;\n  }\n\n  abstract coordinate: string;\n\n  abstract remove(): TReferencer[];\n}\n\nabstract class BaseNamedType<TReferencer, TOwnType extends NamedType & NamedSchemaElement<TOwnType, Schema, TReferencer>> extends NamedSchemaElement<TOwnType, Schema, TReferencer> {\n  protected _referencers?: Set<TReferencer>;\n  protected _extensions?: Extension<TOwnType>[];\n  public preserveEmptyDefinition: boolean = false;\n\n  constructor(name: string, readonly isBuiltIn: boolean = false) {\n    super(name);\n  }\n\n  private addReferencer(referencer: TReferencer) {\n    this._referencers ??= new Set();\n    this._referencers.add(referencer);\n  }\n\n  private removeReferencer(referencer: TReferencer) {\n    this._referencers?.delete(referencer)\n  }\n\n  get coordinate(): string {\n    return this.name;\n  }\n\n  *allChildElements(): Generator<NamedSchemaElement<any, TOwnType, any>, void, undefined> {\n    // Overriden by those types that do have children\n  }\n\n  extensions(): readonly Extension<TOwnType>[] {\n    return this._extensions ?? [];\n  }\n\n  hasExtension(extension: Extension<any>): boolean {\n    return this._extensions?.includes(extension) ?? false;\n  }\n\n  newExtension(): Extension<TOwnType> {\n    return this.addExtension(new Extension<TOwnType>());\n  }\n\n  addExtension(extension: Extension<TOwnType>): Extension<TOwnType> {\n    this.checkUpdate();\n    // Let's be nice and not complaint if we add an extension already added.\n    if (this.hasExtension(extension)) {\n      return extension;\n    }\n    assert(!extension.extendedElement, () => `Cannot add extension to type ${this}: it is already added to another type`);\n    if (this._extensions) {\n      this._extensions.push(extension);\n    } else {\n      this._extensions = [ extension ];\n    }\n    Extension.prototype['setExtendedElement'].call(extension, this);\n    this.onModification();\n    return extension;\n  }\n\n  removeExtensions() {\n    if (!this._extensions) {\n      return;\n    }\n\n    this._extensions = undefined;\n    for (const directive of this.appliedDirectives) {\n      directive.removeOfExtension();\n    }\n    this.removeInnerElementsExtensions();\n  }\n\n  isIntrospectionType(): boolean {\n    return isIntrospectionName(this.name);\n  }\n\n  hasExtensionElements(): boolean {\n    return !!this._extensions;\n  }\n\n  hasNonExtensionElements(): boolean {\n    return this.preserveEmptyDefinition\n      || this.appliedDirectives.some(d => d.ofExtension() === undefined)\n      || this.hasNonExtensionInnerElements();\n  }\n\n  protected abstract hasNonExtensionInnerElements(): boolean;\n  protected abstract removeInnerElementsExtensions(): void;\n\n  protected isElementBuiltIn(): boolean {\n    return this.isBuiltIn;\n  }\n\n  rename(newName: string) {\n    // Mostly called to ensure we don't rename built-in types. It does mean we can't renamed detached\n    // types while this wouldn't be dangerous, but it's probably not a big deal (the API is designed\n    // in such a way that you probably should avoid reusing detached elements).\n    this.checkUpdate();\n    const oldName = this._name;\n    this._name = newName;\n    Schema.prototype['renameTypeInternal'].call(this._parent, oldName, newName);\n    this.onModification();\n  }\n\n  /**\n   * Removes this type definition from its parent schema.\n   *\n   * After calling this method, this type will be \"detached\": it will have no parent, schema, fields,\n   * values, directives, etc...\n   *\n   * Note that it is always allowed to remove a type, but this may make a valid schema\n   * invalid, and in particular any element that references this type will, after this call, have an undefined\n   * reference.\n   *\n   * @returns an array of all the elements in the schema of this type (before the removal) that were\n   * referencing this type (and have thus now an undefined reference).\n   */\n  remove(): TReferencer[] {\n    if (!this._parent) {\n      return [];\n    }\n    this.checkRemoval();\n    this.onModification();\n    // Remove this type's children.\n    this.sourceAST = undefined;\n    this.removeAppliedDirectives();\n    this.removeInnerElements();\n    // Remove this type's references.\n    const toReturn: TReferencer[] = [];\n    this._referencers?.forEach(r => {\n      SchemaElement.prototype['removeTypeReferenceInternal'].call(r, this);\n      toReturn.push(r);\n    });\n    this._referencers = undefined;\n    // Remove this type from its parent schema.\n    Schema.prototype['removeTypeInternal'].call(this._parent, this);\n    this._parent = undefined;\n    return toReturn;\n  }\n\n  /**\n   * Removes this this definition _and_, recursively, any other elements that references this type and would be invalid\n   * after the removal.\n   *\n   * Note that contrarily to `remove()` (which this method essentially call recursively), this method leaves the schema\n   * valid (assuming it was valid beforehand) _unless_ all the schema ends up being removed through recursion (in which\n   * case this leaves an empty schema, and that is not technically valid).\n   *\n   * Also note that this method does _not_ necessarily remove all the elements that reference this type: for instance,\n   * if this type is an interface, objects implementing it will _not_ be removed, they will simply stop implementing\n   * the interface. In practice, this method mainly remove fields that were using the removed type (in either argument or\n   * return type), but it can also remove object/input object/interface if through such field removal some type ends up\n   * empty, and it can remove unions if through that removal process and union becomes empty.\n   */\n  removeRecursive(): void {\n    this.remove().forEach(ref => this.removeReferenceRecursive(ref));\n  }\n\n  protected abstract removeReferenceRecursive(ref: TReferencer): void;\n\n  referencers(): ReadonlySet<TReferencer> {\n    return this._referencers ?? EMPTY_SET;\n  }\n\n  isReferenced(): boolean {\n    return !!this._referencers;\n  }\n\n  protected abstract removeInnerElements(): void;\n\n  toString(): string {\n    return this.name;\n  }\n}\n\n// TODO: ideally, we should hide the ctor of this class as we rely in places on the fact the no-one external defines new implementations.\nexport abstract class NamedSchemaElementWithType<TType extends Type, TOwnType extends NamedSchemaElementWithType<TType, TOwnType, P, Referencer>, P extends NamedSchemaElement<any, any, any> | Schema, Referencer> extends NamedSchemaElement<TOwnType, P, Referencer> {\n  private _type?: TType;\n\n  get type(): TType | undefined {\n    return this._type;\n  }\n\n  set type(type: TType | undefined) {\n    if (type) {\n      this.checkUpdate(type);\n    } else {\n      this.checkRemoval();\n    }\n    if (this._type) {\n      removeReferenceToType(this, this._type);\n    }\n    this._type = type;\n    if (type) {\n      addReferenceToType(this, type);\n    }\n  }\n\n  protected removeTypeReference(type: NamedType) {\n    // We shouldn't have been listed as a reference if we're not one, so make it sure.\n    assert(this._type && baseType(this._type) === type, () => `Cannot remove reference to type ${type} on ${this} as its type is ${this._type}`);\n    this._type = undefined;\n  }\n}\n\nabstract class BaseExtensionMember<TExtended extends ExtendableElement> extends Element<TExtended> {\n  private _extension?: Extension<TExtended>;\n\n  ofExtension(): Extension<TExtended> | undefined {\n    return this._extension;\n  }\n\n  removeOfExtension() {\n    this._extension = undefined;\n  }\n\n  setOfExtension(extension: Extension<TExtended> | undefined) {\n    this.checkUpdate();\n    assert(!extension || this._parent?.hasExtension(extension), () => `Cannot set object as part of the provided extension: it is not an extension of parent ${this.parent}`);\n    this._extension = extension;\n  }\n\n  remove() {\n    this.removeInner();\n    Schema.prototype['onModification'].call(this.schema());\n    this._extension = undefined;\n    this._parent = undefined;\n  }\n\n  protected abstract removeInner(): void;\n}\n\nexport class SchemaBlueprint {\n  onMissingDirectiveDefinition(_schema: Schema, _directive: Directive): DirectiveDefinition | GraphQLError[] | undefined {\n    // No-op by default, but used for federation.\n    return undefined;\n  }\n\n  onDirectiveDefinitionAndSchemaParsed(_: Schema): GraphQLError[] {\n    // No-op by default, but used for federation.\n    return [];\n  }\n\n  ignoreParsedField(_type: NamedType, _fieldName: string): boolean {\n    // No-op by default, but used for federation.\n    return false;\n  }\n\n  onConstructed(_: Schema) {\n    // No-op by default, but used for federation.\n  }\n\n  onAddedCoreFeature(_schema: Schema, _feature: CoreFeature) {\n    // No-op by default, but used for federation.\n  }\n\n  onInvalidation(_: Schema) {\n    // No-op by default, but used for federation.\n  }\n\n  onValidation(_schema: Schema): GraphQLError[] {\n    // No-op by default, but used for federation.\n    return []\n  }\n\n  validationRules(): readonly SDLValidationRule[] {\n    return specifiedSDLRules;\n  }\n\n  /**\n   * Allows to intercept some graphQL-js error messages when we can provide additional guidance to users.\n   */\n  onGraphQLJSValidationError(schema: Schema, error: GraphQLError): GraphQLError {\n    // For now, the main additional guidance we provide is around directives, where we could provide additional help in 2 main ways:\n    // - if a directive name is likely misspelled (somehow, graphQL-js has methods to offer suggestions on likely mispelling, but don't use this (at the\n    //   time of this writting) for directive names).\n    // - for fed 2 schema, if a federation directive is refered under it's \"default\" naming but is not properly imported (not enforced\n    //   in the method but rather in the `FederationBlueprint`).\n    //\n    // Note that intercepting/parsing error messages to modify them is never ideal, but pragmatically, it's probably better than rewriting the relevant\n    // rules entirely (in that later case, our \"copied\" rule would stop getting any potential graphQL-js made improvements for instance). And while such\n    // parsing is fragile, in that it'll break if the original message change, we have unit tests to surface any such breakage so it's not really a risk.\n    const matcher = /^Unknown directive \"@(?<directive>[_A-Za-z][_0-9A-Za-z]*)\"\\.$/.exec(error.message);\n    const name = matcher?.groups?.directive;\n    if (!name) {\n      return error;\n    }\n\n    const allDefinedDirectiveNames = schema.allDirectives().map((d) => d.name);\n    const suggestions = suggestionList(name, allDefinedDirectiveNames);\n    if (suggestions.length === 0) {\n      return this.onUnknownDirectiveValidationError(schema, name, error);\n    } else {\n      return withModifiedErrorMessage(error, `${error.message}${didYouMean(suggestions.map((s) => '@' + s))}`);\n    }\n  }\n\n  onUnknownDirectiveValidationError(_schema: Schema, _unknownDirectiveName: string, error: GraphQLError): GraphQLError {\n    return error;\n  }\n\n  applyDirectivesAfterParsing() {\n    return false;\n  }\n}\n\nexport const defaultSchemaBlueprint = new SchemaBlueprint();\n\nexport class CoreFeature {\n  constructor(\n    readonly url: FeatureUrl,\n    readonly nameInSchema: string,\n    readonly directive: Directive<SchemaDefinition>,\n    readonly imports: CoreImport[],\n    readonly purpose?: string,\n  ) {\n  }\n\n  isFeatureDefinition(element: NamedType | DirectiveDefinition): boolean {\n    const importName = element.kind === 'DirectiveDefinition'\n      ? '@' + element.name\n      : element.name;\n    return element.name.startsWith(this.nameInSchema + '__')\n      || (element.kind === 'DirectiveDefinition' && element.name === this.nameInSchema)\n      || !!this.imports.find((i) => importName === (i.as ?? i.name));\n  }\n\n  directiveNameInSchema(name: string): string {\n    return CoreFeature.directiveNameInSchemaForCoreArguments(\n      this.url,\n      this.nameInSchema,\n      this.imports,\n      name,\n    );\n  }\n\n  static directiveNameInSchemaForCoreArguments(\n    specUrl: FeatureUrl,\n    specNameInSchema: string,\n    imports: CoreImport[],\n    directiveNameInSpec: string,\n  ): string {\n    const elementImport = imports.find((i) =>\n      i.name.charAt(0) === '@' && i.name.slice(1) === directiveNameInSpec\n    );\n    return elementImport\n      ? (elementImport.as?.slice(1) ?? directiveNameInSpec)\n      : (directiveNameInSpec === specUrl.name\n        ? specNameInSchema\n        : specNameInSchema + '__' + directiveNameInSpec\n      );\n  }\n\n  typeNameInSchema(name: string): string {\n    const elementImport = this.imports.find((i) => i.name === name);\n    return elementImport ? (elementImport.as ?? name) : this.nameInSchema + '__' + name;\n  }\n\n  minimumFederationVersion(): FeatureVersion | undefined {\n    return coreFeatureDefinitionIfKnown(this.url)?.minimumFederationVersion;\n  }\n}\n\nexport class CoreFeatures {\n  readonly coreDefinition: CoreSpecDefinition;\n  private readonly byAlias: Map<string, CoreFeature> = new Map();\n  private readonly byIdentity: Map<string, CoreFeature> = new Map();\n\n  constructor(readonly coreItself: CoreFeature) {\n    this.add(coreItself);\n    const coreDef = findCoreSpecVersion(coreItself.url);\n    if (!coreDef) {\n      throw ERRORS.UNKNOWN_LINK_VERSION.err(`Schema uses unknown version ${coreItself.url.version} of the ${coreItself.url.name} spec`);\n    }\n    this.coreDefinition = coreDef;\n  }\n\n  getByIdentity(identity: string): CoreFeature | undefined {\n    return this.byIdentity.get(identity);\n  }\n\n  allFeatures(): IterableIterator<CoreFeature> {\n    return this.byIdentity.values();\n  }\n\n  private removeFeature(featureIdentity: string) {\n    const feature = this.byIdentity.get(featureIdentity);\n    if (feature) {\n      this.byIdentity.delete(featureIdentity);\n      this.byAlias.delete(feature.nameInSchema);\n    }\n  }\n\n  private maybeAddFeature(directive: Directive<SchemaDefinition>): CoreFeature | undefined {\n    if (directive.definition?.name !== this.coreItself.nameInSchema) {\n      return undefined;\n    }\n    const typedDirective = directive as Directive<SchemaDefinition, CoreOrLinkDirectiveArgs>\n    const args = typedDirective.arguments();\n    const url = this.coreDefinition.extractFeatureUrl(args);\n    const existing = this.byIdentity.get(url.identity);\n    if (existing) {\n      // TODO: we may want to lossen that limitation at some point. Including the same feature for 2 different major versions should be ok.\n      throw ERRORS.INVALID_LINK_DIRECTIVE_USAGE.err(`Duplicate inclusion of feature ${url.identity}`);\n    }\n    const imports = extractCoreFeatureImports(url, typedDirective);\n    const feature = new CoreFeature(url, args.as ?? url.name, directive, imports, args.for);\n    this.add(feature);\n    directive.schema().blueprint.onAddedCoreFeature(directive.schema(), feature);\n    return feature;\n  }\n\n  private add(feature: CoreFeature) {\n    this.byAlias.set(feature.nameInSchema, feature);\n    this.byIdentity.set(feature.url.identity, feature);\n  }\n\n  sourceFeature(element: DirectiveDefinition | Directive | NamedType): { feature: CoreFeature, nameInFeature: string, isImported: boolean } | undefined {\n    const isDirective = element instanceof DirectiveDefinition || element instanceof Directive;\n    const splitted = element.name.split('__');\n    if (splitted.length > 1) {\n      const feature = this.byAlias.get(splitted[0]);\n      return feature ? {\n        feature,\n        nameInFeature: splitted.slice(1).join('__'),\n        isImported: false,\n      } : undefined;\n    } else {\n      // Let's first see if it's an import, as this would take precedence over directive implicitely named like their feature.\n      const importName = isDirective ? '@' + element.name : element.name;\n      const allFeatures = [this.coreItself, ...this.byIdentity.values()];\n      for (const feature of allFeatures) {\n        for (const { as, name } of feature.imports) {\n          if ((as ?? name) === importName) {\n            return {\n              feature,\n              nameInFeature: isDirective ? name.slice(1) : name,\n              isImported: true,\n            };\n          }\n        }\n      }\n\n      // Otherwise, this may be the special directive having the same name as its feature.\n      const directFeature = this.byAlias.get(element.name);\n      if (directFeature && isDirective) {\n        return {\n          feature: directFeature,\n          nameInFeature: element.name,\n          isImported: false,\n        };\n      }\n\n      return undefined;\n    }\n  }\n}\n\nconst graphQLBuiltInTypes: readonly string[] = [ 'Int', 'Float', 'String', 'Boolean', 'ID' ];\nconst graphQLBuiltInTypesSpecifications: readonly TypeSpecification[] = graphQLBuiltInTypes.map((name) => createScalarTypeSpecification({ name }));\n\nconst graphQLBuiltInDirectivesSpecifications: readonly DirectiveSpecification[] = [\n  createDirectiveSpecification({\n    name: 'include',\n    locations: [DirectiveLocation.FIELD, DirectiveLocation.FRAGMENT_SPREAD, DirectiveLocation.INLINE_FRAGMENT],\n    args: [{ name: 'if', type: (schema) => new NonNullType(schema.booleanType()) }],\n  }),\n  createDirectiveSpecification({\n    name: 'skip',\n    locations: [DirectiveLocation.FIELD, DirectiveLocation.FRAGMENT_SPREAD, DirectiveLocation.INLINE_FRAGMENT],\n    args: [{ name: 'if', type: (schema) => new NonNullType(schema.booleanType()) }],\n  }),\n  createDirectiveSpecification({\n    name: 'deprecated',\n    locations: [DirectiveLocation.FIELD_DEFINITION, DirectiveLocation.ENUM_VALUE, DirectiveLocation.ARGUMENT_DEFINITION, DirectiveLocation.INPUT_FIELD_DEFINITION],\n    args: [{ name: 'reason', type: (schema) => schema.stringType(), defaultValue: 'No longer supported' }],\n  }),\n  createDirectiveSpecification({\n    name: 'specifiedBy',\n    locations: [DirectiveLocation.SCALAR],\n    args: [{ name: 'url', type: (schema) => new NonNullType(schema.stringType()) }],\n  }),\n  // Note that @defer and @stream are unconditionally added to `Schema` even if they are technically \"optional\" built-in. _But_,\n  // the `Schema#toGraphQLJSSchema` method has an option to decide if @defer/@stream should be included or not in the resulting\n  // schema, which is how the gateway and router can, at runtime, decide to include or not include them based on actual support.\n  createDirectiveSpecification({\n    name: 'defer',\n    locations: [DirectiveLocation.FRAGMENT_SPREAD, DirectiveLocation.INLINE_FRAGMENT],\n    args: [\n      { name: 'label', type: (schema) => schema.stringType() },\n      { name: 'if', type: (schema) => new NonNullType(schema.booleanType()), defaultValue: true },\n    ],\n  }),\n  // Adding @stream too so that it's know and we don't error out if it is queries. It feels like it would be weird to do so for @stream but not\n  // @defer when both are defined in the same spec. That said, that does *not* mean we currently _implement_ @stream, we don't, and so putting\n  // it in a query will be a no-op at the moment (which technically is valid according to the spec so ...).\n  createDirectiveSpecification({\n    name: 'stream',\n    locations: [DirectiveLocation.FIELD],\n    args: [\n      { name: 'label', type: (schema) => schema.stringType() },\n      { name: 'initialCount', type: (schema) => schema.intType(), defaultValue: 0 },\n      { name: 'if', type: (schema) => new NonNullType(schema.booleanType()), defaultValue: true },\n    ],\n  }),\n];\n\nexport type DeferDirectiveArgs = {\n  label?: string,\n  if?: boolean | Variable,\n}\n\nexport type StreamDirectiveArgs = {\n  label?: string,\n  initialCount: number,\n  if?: boolean,\n}\n\n\n// A coordinate is up to 3 \"graphQL name\" ([_A-Za-z][_0-9A-Za-z]*).\nconst coordinateRegexp = /^@?[_A-Za-z][_0-9A-Za-z]*(\\.[_A-Za-z][_0-9A-Za-z]*)?(\\([_A-Za-z][_0-9A-Za-z]*:\\))?$/;\n\nexport type SchemaConfig = {\n  cacheAST?: boolean,\n}\n\nexport class Schema {\n  private _schemaDefinition: SchemaDefinition;\n  private readonly _builtInTypes = new MapWithCachedArrays<string, NamedType>();\n  private readonly _types = new MapWithCachedArrays<string, NamedType>();\n  private readonly _builtInDirectives = new MapWithCachedArrays<string, DirectiveDefinition>();\n  private readonly _directives = new MapWithCachedArrays<string, DirectiveDefinition>();\n  private _coreFeatures?: CoreFeatures;\n  private isConstructed: boolean = false;\n  public isValidated: boolean = false;\n\n  private cachedDocument?: DocumentNode;\n  private apiSchema?: Schema;\n\n  constructor(\n    readonly blueprint: SchemaBlueprint = defaultSchemaBlueprint,\n    readonly config: SchemaConfig = {},\n  ) {\n    this._schemaDefinition = new SchemaDefinition();\n    Element.prototype['setParent'].call(this._schemaDefinition, this);\n    graphQLBuiltInTypesSpecifications.forEach((spec) => spec.checkOrAdd(this, undefined, true));\n    graphQLBuiltInDirectivesSpecifications.forEach((spec) => spec.checkOrAdd(this, undefined, true));\n    blueprint.onConstructed(this);\n    this.isConstructed = true;\n  }\n\n  private canModifyBuiltIn(): boolean {\n    return !this.isConstructed;\n  }\n\n  private runWithBuiltInModificationAllowed(fct: () => void) {\n    const wasConstructed = this.isConstructed;\n    this.isConstructed = false;\n    fct();\n    this.isConstructed = wasConstructed;\n  }\n\n  private renameTypeInternal(oldName: string, newName: string) {\n    this._types.set(newName, this._types.get(oldName)!);\n    this._types.delete(oldName);\n  }\n\n  private removeTypeInternal(type: BaseNamedType<any, any>) {\n    this._types.delete(type.name);\n  }\n\n  private removeDirectiveInternal(definition: DirectiveDefinition) {\n    this._directives.delete(definition.name);\n  }\n\n  private markAsCoreSchema(coreItself: CoreFeature) {\n    this._coreFeatures = new CoreFeatures(coreItself);\n  }\n\n  private unmarkAsCoreSchema() {\n    this._coreFeatures = undefined;\n  }\n\n  private onModification() {\n    // The only stuffs that are added while !isConstructed are built-in, and those shouldn't invalidate everything.\n    if (this.isConstructed) {\n      this.invalidate();\n      this.cachedDocument = undefined;\n      this.apiSchema = undefined;\n    }\n  }\n\n  isCoreSchema(): boolean {\n    return this.coreFeatures !== undefined;\n  }\n\n  get coreFeatures(): CoreFeatures | undefined {\n    return this._coreFeatures;\n  }\n\n  toAST(): DocumentNode {\n    if (!this.cachedDocument) {\n      // As we're not building the document from a file, having locations info might be more confusing that not.\n      const ast = parse(printSchema(this), { noLocation: true });\n      const shouldCache = this.config.cacheAST ?? false;\n      if (!shouldCache) {\n        return ast;\n      }\n      this.cachedDocument = ast;\n    }\n    return this.cachedDocument!;\n  }\n\n  toAPISchema(): Schema {\n    if (!this.apiSchema) {\n      this.validate();\n\n      const apiSchema = this.clone(undefined, false);\n\n      // As we compute the API schema of a supergraph, we want to ignore explicit definitions of `@defer` and `@stream` because\n      // those correspond to the merging of potential definitions from the subgraphs, but whether the supergraph API schema\n      // supports defer or not is unrelated to the subgraph capacity. As far as gateway/router support goes, whether the defer/stream\n      // definitions end up being provided or not will depend on the runtime `config` argument of the `toGraphQLJSSchema` that\n      // is the called on the API schema (the schema resulting from that method).\n      for (const toRemoveIfCustom of ['defer', 'stream']) {\n        const directive = apiSchema.directive(toRemoveIfCustom);\n        if (directive && !directive.isBuiltIn) {\n          directive.removeRecursive();\n        }\n      }\n\n      removeInaccessibleElements(apiSchema);\n      removeAllCoreFeatures(apiSchema);\n      assert(!apiSchema.isCoreSchema(), \"The API schema shouldn't be a core schema\")\n      apiSchema.validate();\n      this.apiSchema = apiSchema;\n    }\n    return this.apiSchema;\n  }\n\n  private emptyASTDefinitionsForExtensionsWithoutDefinition(): DefinitionNode[] {\n    const nodes = [];\n    if (this.schemaDefinition.hasExtensionElements() && !this.schemaDefinition.hasNonExtensionElements()) {\n      const node: SchemaDefinitionNode = { kind: Kind.SCHEMA_DEFINITION, operationTypes: [] };\n      nodes.push(node);\n    }\n    for (const type of this.types()) {\n      if (type.hasExtensionElements() && !type.hasNonExtensionElements()) {\n        const node: TypeDefinitionNode = {\n          kind: type.astDefinitionKind,\n          name: { kind: Kind.NAME, value: type.name },\n        };\n        nodes.push(node);\n      }\n    }\n    return nodes;\n  }\n\n  toGraphQLJSSchema(config?: { includeDefer?: boolean, includeStream?: boolean }): GraphQLSchema {\n    const includeDefer = config?.includeDefer ?? false;\n    const includeStream = config?.includeStream ?? false;\n\n    let ast = this.toAST();\n\n    // Note that AST generated by `this.toAST()` may not be fully graphQL valid because, in federation subgraphs, we accept\n    // extensions that have no corresponding definitions. This won't fly however if we try to build a `GraphQLSchema`, so\n    // we need to \"fix\" that problem. For that, we add empty definitions for every element that has extensions without\n    // definitions (which is also what `fed1` was effectively doing).\n    const additionalNodes = this.emptyASTDefinitionsForExtensionsWithoutDefinition();\n    if (includeDefer) {\n      additionalNodes.push(this.deferDirective().toAST());\n    }\n    if (includeStream) {\n      additionalNodes.push(this.streamDirective().toAST());\n    }\n    if (additionalNodes.length > 0) {\n      ast = {\n        kind: Kind.DOCUMENT,\n        definitions: ast.definitions.concat(additionalNodes),\n      }\n    }\n\n    const graphQLSchema = buildGraphqlSchemaFromAST(ast);\n    if (additionalNodes.length > 0) {\n      // As mentionned, if we have extensions without definition, we _have_ to add an empty definition to be able to\n      // build a `GraphQLSchema` object. But that also mean that we lose the information doing so, as we cannot\n      // distinguish anymore that we have no definition. A method like `graphQLSchemaToAST` for instance, would\n      // include a definition in particular, and that could a bit surprised (and could lead to an hard-to-find bug\n      // in the worst case if you were expecting it that something like `graphQLSchemaToAST(buildSchema(defs).toGraphQLJSSchema())`\n      // gives you back the original `defs`).\n      // So to avoid this, we manually delete the definition `astNode` post-construction on the created schema if\n      // we had not definition. This should break users of the resulting schema since `astNode` is allowed to be `undefined`,\n      // but it allows `graphQLSchemaToAST` to make the proper distinction in general.\n      for (const node of additionalNodes) {\n        switch (node.kind) {\n          case Kind.SCHEMA_DEFINITION:\n            graphQLSchema.astNode = undefined;\n            break;\n          case Kind.SCALAR_TYPE_DEFINITION:\n          case Kind.OBJECT_TYPE_DEFINITION:\n          case Kind.INTERFACE_TYPE_DEFINITION:\n          case Kind.ENUM_TYPE_DEFINITION:\n          case Kind.UNION_TYPE_DEFINITION:\n          case Kind.INPUT_OBJECT_TYPE_DEFINITION:\n            const type = graphQLSchema.getType(node.name.value);\n            if (type) {\n              type.astNode = undefined;\n            }\n        }\n      }\n    }\n    return graphQLSchema;\n  }\n\n  get schemaDefinition(): SchemaDefinition {\n    return this._schemaDefinition;\n  }\n\n  /**\n   * All the types defined on this schema, excluding the built-in types.\n   */\n  types(): readonly NamedType[] {\n    return this._types.values();\n  }\n\n  interfaceTypes(): readonly InterfaceType[] {\n    return filterTypesOfKind<InterfaceType>(this.types(), 'InterfaceType');\n  }\n\n  objectTypes(): readonly ObjectType[] {\n    return filterTypesOfKind<ObjectType>(this.types(), 'ObjectType');\n  }\n\n  unionTypes(): readonly UnionType[] {\n    return filterTypesOfKind<UnionType>(this.types(), 'UnionType');\n  }\n\n  scalarTypes(): readonly ScalarType[] {\n    return filterTypesOfKind<ScalarType>(this.types(), 'ScalarType');\n  }\n\n  inputTypes(): readonly InputObjectType[] {\n    return filterTypesOfKind<InputObjectType>(this.types(), 'InputObjectType');\n  }\n\n  enumTypes(): readonly EnumType[] {\n    return filterTypesOfKind<EnumType>(this.types(), 'EnumType');\n  }\n\n  /**\n   * All the built-in types for this schema (those that are not displayed when printing the schema).\n   */\n  builtInTypes(includeShadowed: boolean = false): readonly NamedType[] {\n    const allBuiltIns = this._builtInTypes.values();\n    return includeShadowed\n      ? allBuiltIns\n      : allBuiltIns.filter(t => !this.isShadowedBuiltInType(t));\n  }\n\n  private isShadowedBuiltInType(type: NamedType) {\n    return type.isBuiltIn && this._types.has(type.name);\n  }\n\n  /**\n    * All the types, including the built-in ones.\n    */\n  allTypes(): readonly NamedType[] {\n    return this.builtInTypes().concat(this.types());\n  }\n\n  /**\n   * The type of the provide name in this schema if one is defined or if it is the name of a built-in.\n   */\n  type(name: string): NamedType | undefined {\n    const type = this._types.get(name);\n    return type ? type : this._builtInTypes.get(name);\n  }\n\n  typeOfKind<T extends NamedType>(name: string, kind: T['kind']): T | undefined {\n    const type = this.type(name);\n    return type && type.kind === kind ? type as T : undefined;\n  }\n\n  intType(): ScalarType {\n    return this._builtInTypes.get('Int')! as ScalarType;\n  }\n\n  floatType(): ScalarType {\n    return this._builtInTypes.get('Float')! as ScalarType;\n  }\n\n  stringType(): ScalarType {\n    return this._builtInTypes.get('String')! as ScalarType;\n  }\n\n  booleanType(): ScalarType {\n    return this._builtInTypes.get('Boolean')! as ScalarType;\n  }\n\n  idType(): ScalarType {\n    return this._builtInTypes.get('ID')! as ScalarType;\n  }\n\n  builtInScalarTypes(): ScalarType[] {\n    return [\n      this.intType(),\n      this.floatType(),\n      this.stringType(),\n      this.booleanType(),\n      this.idType(),\n    ];\n  }\n\n  addType<T extends NamedType>(type: T): T {\n    const existing = this.type(type.name);\n    if (existing) {\n      // Like for directive, we let user shadow built-in types, but the definition must be valid.\n      assert(existing.isBuiltIn, () => `Type ${type} already exists in this schema`);\n    }\n    if (type.isAttached()) {\n      // For convenience, let's not error out on adding an already added type.\n      assert(type.parent == this, () => `Cannot add type ${type} to this schema; it is already attached to another schema`);\n      return type;\n    }\n    if (type.isBuiltIn) {\n      assert(!this.isConstructed, `Cannot add built-in ${type} to this schema (built-ins can only be added at schema construction time)`);\n      this._builtInTypes.set(type.name, type);\n    } else {\n      this._types.set(type.name, type);\n    }\n    Element.prototype['setParent'].call(type, this);\n    // If a type is the default name of a root, it \"becomes\" that root automatically,\n    // unless some other root has already been set.\n    const defaultSchemaRoot = checkDefaultSchemaRoot(type);\n    if (defaultSchemaRoot && !this.schemaDefinition.root(defaultSchemaRoot)) {\n      // Note that checkDefaultSchemaRoot guarantees us type is an ObjectType\n      this.schemaDefinition.setRoot(defaultSchemaRoot, type as ObjectType);\n    }\n    this.onModification();\n    return type;\n  }\n\n  /**\n   * All the directive defined on this schema, excluding the built-in directives.\n   */\n  directives(): readonly DirectiveDefinition[] {\n    return this._directives.values();\n  }\n\n  /**\n   * All the built-in directives for this schema (those that are not displayed when printing the schema).\n   */\n  builtInDirectives(includeShadowed: boolean = false): readonly DirectiveDefinition[] {\n    return includeShadowed\n      ? this._builtInDirectives.values()\n      : this._builtInDirectives.values().filter(d => !this.isShadowedBuiltInDirective(d));\n  }\n\n  allDirectives(): readonly DirectiveDefinition[] {\n    return this.builtInDirectives().concat(this.directives());\n  }\n\n  private isShadowedBuiltInDirective(directive: DirectiveDefinition) {\n    return directive.isBuiltIn && this._directives.has(directive.name);\n  }\n\n  directive(name: string): DirectiveDefinition | undefined {\n    const directive = this._directives.get(name);\n    return directive ? directive : this.builtInDirective(name);\n  }\n\n  builtInDirective(name: string): DirectiveDefinition | undefined {\n    return this._builtInDirectives.get(name);\n  }\n\n  *allNamedSchemaElement(): Generator<NamedSchemaElement<any, any, any>, void, undefined> {\n    for (const type of this.types()) {\n      yield type;\n      yield* type.allChildElements();\n    }\n    for (const directive of this.directives()) {\n      yield directive;\n      yield* directive.arguments();\n    }\n  }\n\n  *allSchemaElement(): Generator<SchemaElement<any, any>, void, undefined> {\n    yield this._schemaDefinition;\n    yield* this.allNamedSchemaElement();\n  }\n\n  addDirectiveDefinition(name: string): DirectiveDefinition;\n  addDirectiveDefinition(directive: DirectiveDefinition): DirectiveDefinition;\n  addDirectiveDefinition(directiveOrName: string | DirectiveDefinition): DirectiveDefinition {\n    const definition = typeof directiveOrName === 'string' ? new DirectiveDefinition(directiveOrName) : directiveOrName;\n    const existing = this.directive(definition.name);\n    // Note that we allow the schema to define a built-in manually (and the manual definition will shadow the\n    // built-in one). It's just that validation will ensure the definition ends up the one expected.\n    assert(!existing || existing.isBuiltIn, () => `Directive ${definition} already exists in this schema`);\n    if (definition.isAttached()) {\n      // For convenience, let's not error out on adding an already added directive.\n      assert(definition.parent == this, () => `Cannot add directive ${definition} to this schema; it is already attached to another schema`);\n      return definition;\n    }\n    if (definition.isBuiltIn) {\n      assert(!this.isConstructed, () => `Cannot add built-in ${definition} to this schema (built-ins can only be added at schema construction time)`);\n      this._builtInDirectives.set(definition.name, definition);\n    } else {\n      this._directives.set(definition.name, definition);\n    }\n    Element.prototype['setParent'].call(definition, this);\n    this.onModification();\n    return definition;\n  }\n\n  invalidate() {\n    if (this.isValidated) {\n      this.blueprint.onInvalidation(this);\n    }\n    this.isValidated = false;\n  }\n\n  /**\n   * Marks the schema as validated _without running actual validation_.\n   * Should obviously only be called when we know the built schema must be valid.\n   *\n   * Note that if `validate` is called after this, then it will exit immediately without validation as\n   * the schema will have been marked as validated. However, if this schema is further modified, then\n   * `invalidate` will be called, after which `validate` would run validation again.\n   */\n  assumeValid() {\n    this.runWithBuiltInModificationAllowed(() => {\n      addIntrospectionFields(this);\n    });\n\n    this.isValidated = true;\n  }\n\n  validate() {\n    if (this.isValidated) {\n      return;\n    }\n\n    this.runWithBuiltInModificationAllowed(() => {\n      addIntrospectionFields(this);\n    });\n\n    // TODO: we check that all types are properly set (aren't undefined) in `validateSchema`, but `validateSDL` will error out beforehand. We should\n    // probably extract that part of `validateSchema` and run `validateSDL` conditionally on that first check.\n    let errors = validateSDL(this.toAST(), undefined, this.blueprint.validationRules()).map((e) => this.blueprint.onGraphQLJSValidationError(this, e));\n    errors = errors.concat(validateSchema(this));\n\n    // We avoid adding federation-specific validations if the base schema is not proper graphQL as the later can easily trigger\n    // the former (for instance, someone mistyping the 'fields' argument name of a @key).\n    if (errors.length === 0) {\n      this.runWithBuiltInModificationAllowed(() => {\n        errors = this.blueprint.onValidation(this);\n      });\n    }\n\n    if (errors.length > 0) {\n      throw ErrGraphQLValidationFailed(errors as GraphQLError[]);\n    }\n\n    this.isValidated = true;\n  }\n\n  clone(builtIns?: SchemaBlueprint, cloneJoinDirectives: boolean = true): Schema {\n    const cloned = new Schema(builtIns ?? this.blueprint);\n    copy(this, cloned, cloneJoinDirectives);\n    if (this.isValidated) {\n      cloned.assumeValid();\n    }\n    return cloned;\n  }\n\n  private getBuiltInDirective<TApplicationArgs extends {[key: string]: any}>(\n    name: string\n  ): DirectiveDefinition<TApplicationArgs> {\n    const directive = this.directive(name);\n    assert(directive, `The provided schema has not be built with the ${name} directive built-in`);\n    return directive as DirectiveDefinition<TApplicationArgs>;\n  }\n\n  includeDirective(): DirectiveDefinition<{if: boolean | Variable}> {\n    return this.getBuiltInDirective('include');\n  }\n\n  skipDirective(): DirectiveDefinition<{if: boolean | Variable}> {\n    return this.getBuiltInDirective('skip');\n  }\n\n  deprecatedDirective(): DirectiveDefinition<{reason?: string}> {\n    return this.getBuiltInDirective('deprecated');\n  }\n\n  specifiedByDirective(): DirectiveDefinition<{url: string}> {\n    return this.getBuiltInDirective('specifiedBy');\n  }\n\n  deferDirective(): DirectiveDefinition<DeferDirectiveArgs> {\n    return this.getBuiltInDirective('defer');\n  }\n\n  streamDirective(): DirectiveDefinition<StreamDirectiveArgs> {\n    return this.getBuiltInDirective('stream');\n  }\n\n  /**\n   * Gets an element of the schema given its \"schema coordinate\".\n   *\n   * Note that the syntax for schema coordinates is the one from the upcoming GraphQL spec: https://github.com/graphql/graphql-spec/pull/794.\n   */\n  elementByCoordinate(coordinate: string): NamedSchemaElement<any, any, any> | undefined {\n    if (!coordinate.match(coordinateRegexp)) {\n      // To be fair, graphQL coordinate is not yet officially part of the spec but well...\n      throw ERRORS.INVALID_GRAPHQL.err(`Invalid argument \"${coordinate}: it is not a syntactically valid graphQL coordinate.\"`);\n    }\n\n    const argStartIdx = coordinate.indexOf('(');\n    const start = argStartIdx < 0 ? coordinate : coordinate.slice(0, argStartIdx);\n    // Argument syntax is `foo(argName:)`, so the arg name start after the open parenthesis and go until the final ':)'.\n    const argName = argStartIdx < 0 ? undefined : coordinate.slice(argStartIdx + 1, coordinate.length - 2);\n    const splittedStart = start.split('.');\n    const typeOrDirectiveName = splittedStart[0];\n    const fieldOrEnumName = splittedStart[1];\n    const isDirective = typeOrDirectiveName.startsWith('@');\n    if (isDirective) {\n      if (fieldOrEnumName) {\n        throw ERRORS.INVALID_GRAPHQL.err(`Invalid argument \"${coordinate}: it is not a syntactically valid graphQL coordinate.\"`);\n      }\n      const directive = this.directive(typeOrDirectiveName.slice(1));\n      return argName ? directive?.argument(argName) : directive;\n    } else {\n      const type = this.type(typeOrDirectiveName);\n      if (!type || !fieldOrEnumName) {\n        return type;\n      }\n      switch (type.kind) {\n        case 'ObjectType':\n        case 'InterfaceType':\n          const field = type.field(fieldOrEnumName);\n          return argName ? field?.argument(argName) : field;\n        case 'InputObjectType':\n          if (argName) {\n            throw ERRORS.INVALID_GRAPHQL.err(`Invalid argument \"${coordinate}: it is not a syntactically valid graphQL coordinate.\"`);\n          }\n          return type.field(fieldOrEnumName);\n        case 'EnumType':\n          if (argName) {\n            throw ERRORS.INVALID_GRAPHQL.err(`Invalid argument \"${coordinate}: it is not a syntactically valid graphQL coordinate.\"`);\n          }\n          return type.value(fieldOrEnumName);\n        default:\n          throw ERRORS.INVALID_GRAPHQL.err(`Invalid argument \"${coordinate}: it is not a syntactically valid graphQL coordinate.\"`);\n      }\n    }\n  }\n}\n\nexport class RootType extends BaseExtensionMember<SchemaDefinition> {\n  constructor(readonly rootKind: SchemaRootKind, readonly type: ObjectType) {\n    super();\n  }\n\n  isDefaultRootName() {\n    return defaultRootName(this.rootKind) == this.type.name;\n  }\n\n  protected removeInner() {\n    SchemaDefinition.prototype['removeRootType'].call(this._parent, this);\n  }\n}\n\nexport class SchemaDefinition extends SchemaElement<SchemaDefinition, Schema>  {\n  readonly kind = 'SchemaDefinition' as const;\n  protected readonly _roots = new MapWithCachedArrays<SchemaRootKind, RootType>();\n  protected _extensions: Extension<SchemaDefinition>[] | undefined;\n  public preserveEmptyDefinition: boolean = false;\n\n  roots(): readonly RootType[] {\n    return this._roots.values();\n  }\n\n  applyDirective<TApplicationArgs extends {[key: string]: any} = {[key: string]: any}>(\n    nameOrDef: DirectiveDefinition<TApplicationArgs> | string,\n    args?: TApplicationArgs,\n    asFirstDirective: boolean = false,\n  ): Directive<SchemaDefinition, TApplicationArgs> {\n    const applied = super.applyDirective(nameOrDef, args, asFirstDirective) as Directive<SchemaDefinition, TApplicationArgs>;\n    const schema = this.schema();\n    const coreFeatures = schema.coreFeatures;\n    if (isCoreSpecDirectiveApplication(applied)) {\n      if (coreFeatures) {\n        throw ERRORS.INVALID_LINK_DIRECTIVE_USAGE.err(`Invalid duplicate application of @core/@link`);\n      }\n      const schemaDirective = applied as Directive<SchemaDefinition, CoreOrLinkDirectiveArgs>;\n      const args = schemaDirective.arguments();\n      const url = FeatureUrl.parse((args.url ?? args.feature)!);\n      const imports = extractCoreFeatureImports(url, schemaDirective);\n      const core = new CoreFeature(url, args.as ?? url.name, schemaDirective, imports, args.for);\n      Schema.prototype['markAsCoreSchema'].call(schema, core);\n      // We also any core features that may have been added before we saw the @link for link itself\n      this.appliedDirectives\n        .filter((a) => a !== applied)\n        .forEach((other) => CoreFeatures.prototype['maybeAddFeature'].call(schema.coreFeatures, other));\n    } else if (coreFeatures) {\n      CoreFeatures.prototype['maybeAddFeature'].call(coreFeatures, applied);\n    }\n    this.onModification();\n    return applied;\n  }\n\n  root(rootKind: SchemaRootKind): RootType | undefined {\n    return this._roots.get(rootKind);\n  }\n\n  rootType(rootKind: SchemaRootKind): ObjectType | undefined {\n    return this.root(rootKind)?.type;\n  }\n\n  setRoot(rootKind: SchemaRootKind, nameOrType: ObjectType | string): RootType {\n    let toSet: RootType;\n    if (typeof nameOrType === 'string') {\n      this.checkUpdate();\n      const obj = this.schema().type(nameOrType);\n      if (!obj) {\n        throw ERRORS.INVALID_GRAPHQL.err(`Cannot set schema ${rootKind} root to unknown type ${nameOrType}`);\n      } else if (obj.kind != 'ObjectType') {\n        throw ERRORS.INVALID_GRAPHQL.err(`${defaultRootName(rootKind)} root type must be an Object type${rootKind === 'query' ? '' : ' if provided'}, it cannot be set to ${nameOrType} (an ${obj.kind}).`);\n      }\n      toSet = new RootType(rootKind, obj);\n    } else {\n      this.checkUpdate(nameOrType);\n      toSet = new RootType(rootKind, nameOrType);\n    }\n    const prevRoot = this._roots.get(rootKind);\n    if (prevRoot) {\n      removeReferenceToType(this, prevRoot.type);\n    }\n    this._roots.set(rootKind, toSet);\n    Element.prototype['setParent'].call(toSet, this);\n    addReferenceToType(this, toSet.type);\n    this.onModification();\n    return toSet;\n  }\n\n  extensions(): Extension<SchemaDefinition>[] {\n    return this._extensions ?? [];\n  }\n\n  hasExtension(extension: Extension<any>): boolean {\n    return this._extensions?.includes(extension) ?? false;\n  }\n\n  newExtension(): Extension<SchemaDefinition> {\n    return this.addExtension(new Extension());\n  }\n\n  addExtension(extension: Extension<SchemaDefinition>): Extension<SchemaDefinition> {\n    this.checkUpdate();\n    // Let's be nice and not complaint if we add an extension already added.\n    if (this.hasExtension(extension)) {\n      return extension;\n    }\n    assert(!extension.extendedElement, 'Cannot add extension to this schema: extension is already added to another schema');\n    if (this._extensions) {\n      this._extensions.push(extension);\n    } else {\n      this._extensions = [extension];\n    }\n    Extension.prototype['setExtendedElement'].call(extension, this);\n    this.onModification();\n    return extension;\n  }\n\n  hasExtensionElements(): boolean {\n    return !!this._extensions;\n  }\n\n  hasNonExtensionElements(): boolean {\n    return this.preserveEmptyDefinition\n      || this.appliedDirectives.some((d) => d.ofExtension() === undefined)\n      || this.roots().some((r) => r.ofExtension() === undefined);\n  }\n\n  private removeRootType(rootType: RootType) {\n    this._roots.delete(rootType.rootKind);\n    removeReferenceToType(this, rootType.type);\n  }\n\n  protected removeTypeReference(toRemove: NamedType) {\n    for (const rootType of this.roots()) {\n      if (rootType.type == toRemove) {\n        this._roots.delete(rootType.rootKind);\n      }\n    }\n  }\n\n  toString() {\n    return `schema[${this._roots.keys().join(', ')}]`;\n  }\n}\n\nexport class ScalarType extends BaseNamedType<OutputTypeReferencer | InputTypeReferencer, ScalarType> {\n  readonly kind = 'ScalarType' as const;\n  readonly astDefinitionKind = Kind.SCALAR_TYPE_DEFINITION;\n\n  protected removeTypeReference(type: NamedType) {\n    assert(false, `Scalar type ${this} can't reference other types; shouldn't be asked to remove reference to ${type}`);\n  }\n\n  protected hasNonExtensionInnerElements(): boolean {\n    return false; // No inner elements\n  }\n\n  protected removeInnerElementsExtensions(): void {\n    // No inner elements\n  }\n\n  protected removeInnerElements(): void {\n    // No inner elements\n  }\n\n  protected removeReferenceRecursive(ref: OutputTypeReferencer | InputTypeReferencer): void {\n    ref.remove();\n  }\n}\n\nexport class InterfaceImplementation<T extends ObjectType | InterfaceType> extends BaseExtensionMember<T> {\n  readonly interface: InterfaceType\n\n  // Note: typescript complains if a parameter is named 'interface'. This is why we don't just declare the `readonly interface`\n  // field within the constructor.\n  constructor(itf: InterfaceType) {\n    super();\n    this.interface = itf;\n  }\n\n  protected removeInner() {\n    FieldBasedType.prototype['removeInterfaceImplementation'].call(this._parent, this.interface);\n  }\n\n  toString() {\n    return `'implements ${this.interface}'`;\n  }\n}\n\n// Abstract class for ObjectType and InterfaceType as they share most of their structure. Note that UnionType also\n// technically has one field (__typename), but because it's only one, it is special cased and UnionType is not a\n// subclass of this class.\nabstract class FieldBasedType<T extends (ObjectType | InterfaceType) & NamedSchemaElement<T, Schema, R>, R> extends BaseNamedType<R, T> {\n  // Note that we only keep one InterfaceImplementation per interface name, and so each `implements X` belong\n  // either to the main type definition _or_ to a single extension. In theory, a document could have `implements X`\n  // in both of those places (or on 2 distinct extensions). We don't preserve that level of detail, but this\n  // feels like a very minor limitation with little practical impact, and it avoids additional complexity.\n  private _interfaceImplementations: MapWithCachedArrays<string, InterfaceImplementation<T>> | undefined;\n  private readonly _fields: MapWithCachedArrays<string, FieldDefinition<T>> = new MapWithCachedArrays();\n  private _cachedNonBuiltInFields?: readonly FieldDefinition<T>[];\n\n  protected onAttached() {\n    // Note that we can only add the __typename built-in field when we're attached, because we need access to the\n    // schema string type. Also, we're effectively modifying a built-in (to add the type), so we\n    // need to let the schema accept it.\n    Schema.prototype['runWithBuiltInModificationAllowed'].call(this.schema(), () => {\n      this.addField(new FieldDefinition(typenameFieldName, true), new NonNullType(this.schema().stringType()));\n    });\n  }\n\n  private removeFieldInternal(field: FieldDefinition<T>) {\n    this._fields.delete(field.name);\n    this._cachedNonBuiltInFields = undefined;\n  }\n\n  interfaceImplementations(): readonly InterfaceImplementation<T>[] {\n    return this._interfaceImplementations?.values() ?? [];\n  }\n\n  interfaceImplementation(type: string | InterfaceType): InterfaceImplementation<T> | undefined {\n    return this._interfaceImplementations ? this._interfaceImplementations.get(typeof type === 'string' ? type : type.name) : undefined;\n  }\n\n  interfaces(): readonly InterfaceType[] {\n    return this.interfaceImplementations().map(impl => impl.interface);\n  }\n\n  implementsInterface(type: string | InterfaceType): boolean {\n    return this._interfaceImplementations?.has(typeof type === 'string' ? type : type.name) ?? false;\n  }\n\n  addImplementedInterface(nameOrItfOrItfImpl: InterfaceImplementation<T> | InterfaceType | string): InterfaceImplementation<T> {\n    let toAdd: InterfaceImplementation<T>;\n    if (nameOrItfOrItfImpl instanceof InterfaceImplementation) {\n      this.checkUpdate(nameOrItfOrItfImpl);\n      toAdd = nameOrItfOrItfImpl;\n    } else {\n      let itf: InterfaceType;\n      if (typeof nameOrItfOrItfImpl === 'string') {\n        this.checkUpdate();\n        const maybeItf = this.schema().type(nameOrItfOrItfImpl);\n        if (!maybeItf) {\n          throw ERRORS.INVALID_GRAPHQL.err(`Cannot implement unknown type ${nameOrItfOrItfImpl}`);\n        } else if (maybeItf.kind != 'InterfaceType') {\n          throw ERRORS.INVALID_GRAPHQL.err(`Cannot implement non-interface type ${nameOrItfOrItfImpl} (of type ${maybeItf.kind})`);\n        }\n        itf = maybeItf;\n      } else {\n        itf = nameOrItfOrItfImpl;\n      }\n      toAdd = new InterfaceImplementation<T>(itf);\n    }\n    const existing = this._interfaceImplementations?.get(toAdd.interface.name);\n    if (!existing) {\n      if (!this._interfaceImplementations) {\n        this._interfaceImplementations = new MapWithCachedArrays();\n      }\n      this._interfaceImplementations.set(toAdd.interface.name, toAdd);\n      addReferenceToType(this, toAdd.interface);\n      Element.prototype['setParent'].call(toAdd, this);\n      this.onModification();\n      return toAdd;\n    } else {\n      return existing;\n    }\n  }\n\n  /**\n   * All the fields of this type, excluding the built-in ones.\n   */\n  fields(): readonly FieldDefinition<T>[] {\n    if (!this._cachedNonBuiltInFields) {\n      this._cachedNonBuiltInFields = this._fields.values().filter(f => !f.isBuiltIn);\n    }\n    return this._cachedNonBuiltInFields;\n  }\n\n  hasFields(): boolean {\n    return this.fields().length > 0;\n  }\n\n  /**\n   * All the built-in fields for this type (those that are not displayed when printing the schema).\n   */\n  builtInFields(): FieldDefinition<T>[] {\n    return this.allFields().filter(f => f.isBuiltIn);\n  }\n\n  /**\n    * All the fields of this type, including the built-in ones.\n    */\n  allFields(): readonly FieldDefinition<T>[] {\n    return this._fields.values();\n  }\n\n  field(name: string): FieldDefinition<T> | undefined {\n    return this._fields.get(name);\n  }\n\n  /**\n   * A shortcut to access the __typename field.\n   *\n   * Note that an _attached_ (field-based) type will always have this field, but _detached_ types won't, so this method\n   * will only return `undefined` on detached objects.\n   */\n  typenameField(): FieldDefinition<T> | undefined {\n    return this.field(typenameFieldName);\n  }\n\n  addField(nameOrField: string | FieldDefinition<T>, type?: Type): FieldDefinition<T> {\n    let toAdd: FieldDefinition<T>;\n    if (typeof nameOrField === 'string') {\n      this.checkUpdate();\n      toAdd = new FieldDefinition<T>(nameOrField);\n    } else {\n      this.checkUpdate(nameOrField);\n      toAdd = nameOrField;\n    }\n    if (this.field(toAdd.name)) {\n      throw ERRORS.INVALID_GRAPHQL.err(`Field ${toAdd.name} already exists on ${this}`);\n    }\n    if (type && !isOutputType(type)) {\n      throw ERRORS.INVALID_GRAPHQL.err(`Invalid input type ${type} for field ${toAdd.name}: object and interface field types should be output types.`);\n    }\n    this._fields.set(toAdd.name, toAdd);\n    this._cachedNonBuiltInFields = undefined;\n    Element.prototype['setParent'].call(toAdd, this);\n    // Note that we need to wait we have attached the field to set the type.\n    if (type) {\n      toAdd.type = type;\n    }\n    this.onModification();\n    return toAdd;\n  }\n\n  *allChildElements(): Generator<NamedSchemaElement<any, any, any>, void, undefined> {\n    for (const field of this._fields.values()) {\n      yield field;\n      yield* field.arguments();\n    }\n  }\n\n  private removeInterfaceImplementation(itf: InterfaceType) {\n    this._interfaceImplementations?.delete(itf.name);\n    removeReferenceToType(this, itf);\n  }\n\n  protected removeTypeReference(type: NamedType) {\n    this._interfaceImplementations?.delete(type.name);\n  }\n\n  protected removeInnerElements(): void {\n    for (const interfaceImpl of this.interfaceImplementations()) {\n      interfaceImpl.remove();\n    }\n    for (const field of this.allFields()) {\n      if (field.isBuiltIn) {\n        // Calling remove on a built-in (think _typename) throws, with reason (we don't want\n        // to allow removing _typename from a type in general). So all we do for built-in is\n        // detach the parent.\n        FieldDefinition.prototype['removeParent'].call(field);\n      } else {\n        field.remove();\n      }\n    }\n  }\n\n  protected hasNonExtensionInnerElements(): boolean {\n    return this.interfaceImplementations().some(itf => itf.ofExtension() === undefined)\n      || this.fields().some(f => f.ofExtension() === undefined);\n  }\n\n  protected removeInnerElementsExtensions(): void {\n    this.interfaceImplementations().forEach(itf => itf.removeOfExtension());\n    this.fields().forEach(f => f.removeOfExtension());\n  }\n}\n\nexport class ObjectType extends FieldBasedType<ObjectType, ObjectTypeReferencer> {\n  readonly kind = 'ObjectType' as const;\n  readonly astDefinitionKind = Kind.OBJECT_TYPE_DEFINITION;\n\n  /**\n   *  Whether this type is one of the schema root type (will return false if the type is detached).\n   */\n  isRootType(): boolean {\n    const schema = this.schema();\n    return schema.schemaDefinition.roots().some(rt => rt.type == this);\n  }\n\n  /**\n   *  Whether this type is the \"query\" root type of the schema (will return false if the type is detached).\n   */\n  isQueryRootType(): boolean {\n    const schema = this.schema();\n    return schema.schemaDefinition.root('query')?.type === this;\n  }\n\n  /**\n   *  Whether this type is the \"subscription\" root type of the schema (will return false if the type is detached).\n   */\n  isSubscriptionRootType(): boolean {\n    const schema = this.schema();\n    return schema.schemaDefinition.root('subscription')?.type === this;\n  }\n\n  protected removeReferenceRecursive(ref: ObjectTypeReferencer): void {\n    // Note that the ref can also be a`SchemaDefinition`, but don't have anything to do then.\n    switch (ref.kind) {\n      case 'FieldDefinition':\n        ref.removeRecursive();\n        break;\n      case 'UnionType':\n        if (ref.membersCount() === 0) {\n          ref.removeRecursive();\n        }\n        break;\n    }\n  }\n\n  unionsWhereMember(): readonly UnionType[] {\n    const unions: UnionType[] = [];\n    this._referencers?.forEach((r) => {\n      if (r instanceof BaseNamedType && isUnionType(r)) {\n        unions.push(r);\n      }\n    });\n    return unions;\n  }\n}\n\nexport class InterfaceType extends FieldBasedType<InterfaceType, InterfaceTypeReferencer> {\n  readonly kind = 'InterfaceType' as const;\n  readonly astDefinitionKind = Kind.INTERFACE_TYPE_DEFINITION;\n\n  allImplementations(): (ObjectType | InterfaceType)[] {\n    const implementations: (ObjectType | InterfaceType)[] = [];\n    this.referencers().forEach(ref => {\n      if (ref.kind === 'ObjectType' || ref.kind === 'InterfaceType') {\n        implementations.push(ref);\n      }\n    });\n    return implementations;\n  }\n\n  possibleRuntimeTypes(): readonly ObjectType[] {\n    // Note that object types in GraphQL needs to reference directly all the interfaces they implement, and cannot rely on transitivity.\n    return this.allImplementations().filter(impl => impl.kind === 'ObjectType') as ObjectType[];\n  }\n\n  isPossibleRuntimeType(type: string | NamedType): boolean {\n    const typeName = typeof type === 'string' ? type : type.name;\n    return this.possibleRuntimeTypes().some(t => t.name == typeName);\n  }\n\n  protected removeReferenceRecursive(ref: InterfaceTypeReferencer): void {\n    // Note that an interface can be referenced by an object/interface that implements it, but after remove(), said object/interface\n    // will simply not implement \"this\" anymore and we have nothing more to do.\n    if (ref.kind === 'FieldDefinition') {\n      ref.removeRecursive();\n    }\n  }\n}\n\nexport class UnionMember extends BaseExtensionMember<UnionType> {\n  constructor(readonly type: ObjectType) {\n    super();\n  }\n\n  protected removeInner() {\n    UnionType.prototype['removeMember'].call(this._parent, this.type);\n  }\n}\n\nexport class UnionType extends BaseNamedType<OutputTypeReferencer, UnionType> {\n  readonly kind = 'UnionType' as const;\n  readonly astDefinitionKind = Kind.UNION_TYPE_DEFINITION;\n  protected readonly _members: MapWithCachedArrays<string, UnionMember> = new MapWithCachedArrays();\n  private _typenameField?: FieldDefinition<UnionType>;\n\n  protected onAttached() {\n    // Note that we can only create the __typename built-in field when we're attached, because we need access to the\n    // schema string type. Also, we're effectively modifying a built-in (to add the type), so we\n    // need to let the schema accept it.\n    Schema.prototype['runWithBuiltInModificationAllowed'].call(this.schema(), () => {\n      this._typenameField = new FieldDefinition(typenameFieldName, true);\n      Element.prototype['setParent'].call(this._typenameField, this);\n      this._typenameField.type = new NonNullType(this.schema().stringType());\n    });\n  }\n\n  types(): ObjectType[] {\n    return this.members().map(m => m.type);\n  }\n\n  members(): readonly UnionMember[] {\n    return this._members.values();\n  }\n\n  membersCount(): number {\n    return this._members.size;\n  }\n\n  hasTypeMember(type: string | ObjectType) {\n    return this._members.has(typeof type === 'string' ? type : type.name);\n  }\n\n  addType(nameOrTypeOrMember: ObjectType | string | UnionMember): UnionMember {\n    let toAdd: UnionMember;\n    if (nameOrTypeOrMember instanceof UnionMember) {\n      this.checkUpdate(nameOrTypeOrMember);\n      toAdd = nameOrTypeOrMember;\n    } else {\n      let obj: ObjectType;\n      if (typeof nameOrTypeOrMember === 'string') {\n        this.checkUpdate();\n        const maybeObj = this.schema().type(nameOrTypeOrMember);\n        if (!maybeObj) {\n          throw ERRORS.INVALID_GRAPHQL.err(`Cannot add unknown type ${nameOrTypeOrMember} as member of union type ${this.name}`);\n        } else if (maybeObj.kind != 'ObjectType') {\n          throw ERRORS.INVALID_GRAPHQL.err(`Cannot add non-object type ${nameOrTypeOrMember} (of type ${maybeObj.kind}) as member of union type ${this.name}`);\n        }\n        obj = maybeObj;\n      } else {\n        this.checkUpdate(nameOrTypeOrMember);\n        obj = nameOrTypeOrMember;\n      }\n      toAdd = new UnionMember(obj);\n    }\n    const existing = this._members.get(toAdd.type.name);\n    if (!existing) {\n      this._members.set(toAdd.type.name, toAdd);\n      Element.prototype['setParent'].call(toAdd, this);\n      addReferenceToType(this, toAdd.type);\n      this.onModification();\n      return toAdd;\n    } else {\n      return existing;\n    }\n  }\n\n  clearTypes() {\n    for (const type of this.types()) {\n      this.removeMember(type);\n    }\n    this.onModification();\n  }\n\n  /**\n   * Access a field of the union by name.\n   * As the only field that can be accessed on an union is the __typename one, this method will always return undefined unless called\n   * on \"__typename\". However, this exists to allow code working on CompositeType to be more generic.\n   */\n  field(name: string): FieldDefinition<UnionType> | undefined {\n    if (name === typenameFieldName && this._typenameField) {\n      return this._typenameField;\n    }\n    return undefined;\n  }\n\n  /**\n   * The __typename field (and only field of a union).\n   *\n   * Note that _attached_ unions always have this field, so this method will only return `undefined` on detached objects.\n   */\n  typenameField(): FieldDefinition<UnionType> | undefined {\n    return this._typenameField;\n  }\n\n  private removeMember(type: ObjectType) {\n    this._members.delete(type.name);\n    removeReferenceToType(this, type);\n  }\n\n  protected removeTypeReference(type: NamedType) {\n    this._members.delete(type.name);\n  }\n\n  protected removeInnerElements(): void {\n    for (const member of this.members()) {\n      member.remove();\n    }\n  }\n\n  protected hasNonExtensionInnerElements(): boolean {\n    return this.members().some(m => m.ofExtension() === undefined);\n  }\n\n  protected removeReferenceRecursive(ref: OutputTypeReferencer): void {\n    ref.removeRecursive();\n  }\n\n  protected removeInnerElementsExtensions(): void {\n    this.members().forEach(m => m.removeOfExtension());\n  }\n}\n\nexport class EnumType extends BaseNamedType<OutputTypeReferencer, EnumType> {\n  readonly kind = 'EnumType' as const;\n  readonly astDefinitionKind = Kind.ENUM_TYPE_DEFINITION;\n  private _values = new Map<string, EnumValue>();\n\n  get values(): readonly EnumValue[] {\n    // Because our abstractions are mutable, and removal is done by calling\n    // `remove()` on the element to remove, it's not unlikely someone mauy\n    // try to iterate on the result of this method and call `remove()` on\n    // some of the return value based on some condition. But this will break\n    // in an error-prone way if we don't copy, so we do.\n    return Array.from(this._values.values());\n  }\n  \n  value(name: string): EnumValue | undefined {\n    return this._values.get(name);\n  }\n\n  addValue(value: EnumValue): EnumValue;\n  addValue(name: string): EnumValue;\n  addValue(nameOrValue: EnumValue | string): EnumValue {\n    let toAdd: EnumValue;\n    if (typeof nameOrValue === 'string') {\n      this.checkUpdate();\n      toAdd = new EnumValue(nameOrValue);\n    } else {\n      this.checkUpdate(nameOrValue);\n      toAdd = nameOrValue;\n    }\n    const existing = this.value(toAdd.name);\n    if (!existing) {\n      this._values.set(toAdd.name, toAdd);\n      Element.prototype['setParent'].call(toAdd, this);\n      this.onModification();\n      return toAdd;\n    } else {\n      return existing;\n    }\n  }\n\n  protected removeTypeReference(type: NamedType) {\n    assert(false, `Eum type ${this} can't reference other types; shouldn't be asked to remove reference to ${type}`);\n  }\n\n  private removeValueInternal(value: EnumValue) {\n    this._values.delete(value.name);\n  }\n\n  protected removeInnerElements(): void {\n    // Make a copy (indirectly), since EnumValue.remove() will modify this._values.\n    const values = this.values;\n    for (const value of values) {\n      value.remove();\n    }\n  }\n\n  protected hasNonExtensionInnerElements(): boolean {\n    return Array.from(this._values.values()).some(v => v.ofExtension() === undefined);\n  }\n\n  protected removeReferenceRecursive(ref: OutputTypeReferencer): void {\n    ref.removeRecursive();\n  }\n\n  protected removeInnerElementsExtensions(): void {\n    for (const v of this._values.values()) {\n      v.removeOfExtension();\n    }\n  }\n}\n\nexport class InputObjectType extends BaseNamedType<InputTypeReferencer, InputObjectType> {\n  readonly kind = 'InputObjectType' as const;\n  readonly astDefinitionKind = Kind.INPUT_OBJECT_TYPE_DEFINITION;\n  private readonly _fields: Map<string, InputFieldDefinition> = new Map();\n  private _cachedFieldsArray?: InputFieldDefinition[];\n\n  /**\n   * All the fields of this input type.\n   */\n  fields(): InputFieldDefinition[] {\n    if (!this._cachedFieldsArray) {\n      this._cachedFieldsArray = mapValues(this._fields);\n    }\n    return this._cachedFieldsArray;\n  }\n\n  field(name: string): InputFieldDefinition | undefined {\n    return this._fields.get(name);\n  }\n\n  addField(field: InputFieldDefinition): InputFieldDefinition;\n  addField(name: string, type?: Type): InputFieldDefinition;\n  addField(nameOrField: string | InputFieldDefinition, type?: Type): InputFieldDefinition {\n    const toAdd = typeof nameOrField === 'string' ? new InputFieldDefinition(nameOrField) : nameOrField;\n    this.checkUpdate(toAdd);\n    if (this.field(toAdd.name)) {\n      throw ERRORS.INVALID_GRAPHQL.err(`Field ${toAdd.name} already exists on ${this}`);\n    }\n    if (type && !isInputType(type)) {\n      throw ERRORS.INVALID_GRAPHQL.err(`Invalid output type ${type} for field ${toAdd.name}: input field types should be input types.`);\n    }\n    this._fields.set(toAdd.name, toAdd);\n    this._cachedFieldsArray = undefined;\n    Element.prototype['setParent'].call(toAdd, this);\n    // Note that we need to wait we have attached the field to set the type.\n    if (typeof nameOrField === 'string' && type) {\n      toAdd.type = type;\n    }\n    this.onModification();\n    return toAdd;\n  }\n\n  hasFields(): boolean {\n    return this._fields.size > 0;\n  }\n\n  *allChildElements(): Generator<NamedSchemaElement<any, any, any>, void, undefined> {\n    yield* this._fields.values();\n  }\n\n  protected removeTypeReference(type: NamedType) {\n    assert(false, `Input Object type ${this} can't reference other types; shouldn't be asked to remove reference to ${type}`);\n  }\n\n  protected removeInnerElements(): void {\n    // Not that we modify the type during iteration, but the reference we get from `this.fields()` will not change\n    for (const field of this.fields()) {\n      field.remove();\n    }\n  }\n\n  private removeFieldInternal(field: InputFieldDefinition) {\n    this._fields.delete(field.name);\n    this._cachedFieldsArray = undefined;\n  }\n\n  protected hasNonExtensionInnerElements(): boolean {\n    return this.fields().some(f => f.ofExtension() === undefined);\n  }\n\n  protected removeReferenceRecursive(ref: InputTypeReferencer): void {\n    if (ref.kind === 'ArgumentDefinition') {\n      // Not only do we want to remove the argument, but we want to remove its parent. Technically, only removing the argument would\n      // leave the schema in a valid state so it would be an option, but this feel a bit too weird of a behaviour in practice for a\n      // method calling `removeRecursive`. And in particular, it would mean that if the argument is a directive definition one,\n      // we'd also have to update each of the directive application to remove the correspond argument. Removing the full directive\n      // definition (and all its applications) feels a bit more predictable.\n      ref.parent().removeRecursive();\n    } else {\n      ref.removeRecursive();\n    }\n  }\n\n  protected removeInnerElementsExtensions(): void {\n    this.fields().forEach(f => f.removeOfExtension());\n  }\n}\n\nclass BaseWrapperType<T extends Type> {\n  protected constructor(protected _type: T) {\n    assert(this._type, 'Cannot wrap an undefined/null type');\n  }\n\n  schema(): Schema {\n    return this.baseType().schema();\n  }\n\n  isAttached(): boolean {\n    return this.baseType().isAttached();\n  }\n\n  get ofType(): T {\n    return this._type;\n  }\n\n  baseType(): NamedType {\n    return baseType(this._type);\n  }\n}\n\nexport class ListType<T extends Type> extends BaseWrapperType<T> {\n  readonly kind = 'ListType' as const;\n\n  constructor(type: T) {\n    super(type);\n  }\n\n  toString(): string {\n    return `[${this.ofType}]`;\n  }\n}\n\nexport class NonNullType<T extends NullableType> extends BaseWrapperType<T> {\n  readonly kind = 'NonNullType' as const;\n\n  constructor(type: T) {\n    super(type);\n  }\n\n  toString(): string {\n    return `${this.ofType}!`;\n  }\n}\n\nexport class FieldDefinition<TParent extends CompositeType> extends NamedSchemaElementWithType<OutputType, FieldDefinition<TParent>, TParent, never> {\n  readonly kind = 'FieldDefinition' as const;\n  private _args: MapWithCachedArrays<string, ArgumentDefinition<FieldDefinition<TParent>>> | undefined;\n  private _extension?: Extension<TParent>;\n\n  constructor(name: string, readonly isBuiltIn: boolean = false) {\n    super(name);\n  }\n\n  protected isElementBuiltIn(): boolean {\n    return this.isBuiltIn;\n  }\n\n  get coordinate(): string {\n    const parent = this._parent;\n    return `${parent == undefined ? '<detached>' : parent.coordinate}.${this.name}`;\n  }\n\n  hasArguments(): boolean {\n    return !!this._args && this._args.size > 0;\n  }\n\n  arguments(): readonly ArgumentDefinition<FieldDefinition<TParent>>[] {\n    return this._args?.values() ?? [];\n  }\n\n  argument(name: string): ArgumentDefinition<FieldDefinition<TParent>> | undefined {\n    return this._args?.get(name);\n  }\n\n  addArgument(arg: ArgumentDefinition<FieldDefinition<TParent>>): ArgumentDefinition<FieldDefinition<TParent>>;\n  addArgument(name: string, type?: Type, defaultValue?: any): ArgumentDefinition<FieldDefinition<TParent>>;\n  addArgument(nameOrArg: string | ArgumentDefinition<FieldDefinition<TParent>>, type?: Type, defaultValue?: any): ArgumentDefinition<FieldDefinition<TParent>> {\n    let toAdd: ArgumentDefinition<FieldDefinition<TParent>>;\n    if (typeof nameOrArg === 'string') {\n      this.checkUpdate();\n      toAdd = new ArgumentDefinition<FieldDefinition<TParent>>(nameOrArg);\n      toAdd.defaultValue = defaultValue;\n    } else {\n      this.checkUpdate(nameOrArg);\n      toAdd = nameOrArg;\n    }\n    const existing = this.argument(toAdd.name);\n    if (existing) {\n      // For some reason (bad codegen, maybe?), some users have field where a arg is defined more than one. And this doesn't seem rejected by\n      // graphQL (?). So we accept it, but ensure the types/default values are the same.\n      if (type && existing.type && !sameType(type, existing.type)) {\n        throw ERRORS.INVALID_GRAPHQL.err(`Argument ${toAdd.name} already exists on field ${this.name} with a different type (${existing.type})`);\n      }\n      if (defaultValue && (!existing.defaultValue || !valueEquals(defaultValue, existing.defaultValue))) {\n        throw ERRORS.INVALID_GRAPHQL.err(`Argument ${toAdd.name} already exists on field ${this.name} with a different default value (${valueToString(existing.defaultValue)})`);\n      }\n      return existing;\n    }\n    if (type && !isInputType(type)) {\n      throw ERRORS.INVALID_GRAPHQL.err(`Invalid output type ${type} for argument ${toAdd.name} of ${this}: arguments should be input types.`);\n    }\n    if (!this._args) {\n      this._args = new MapWithCachedArrays();\n    }\n    this._args.set(toAdd.name, toAdd);\n    Element.prototype['setParent'].call(toAdd, this);\n    if (typeof nameOrArg === 'string') {\n      toAdd.type = type;\n    }\n    this.onModification();\n    return toAdd;\n  }\n\n  ofExtension(): Extension<TParent> | undefined {\n    return this._extension;\n  }\n\n  removeOfExtension() {\n    this._extension = undefined;\n  }\n\n  setOfExtension(extension: Extension<TParent> | undefined) {\n    this.checkUpdate();\n    assert(\n      !extension || this._parent?.hasExtension(extension),\n      () => `Cannot mark field ${this.name} as part of the provided extension: it is not an extension of field parent type ${this.parent}`\n    );\n    this._extension = extension;\n    this.onModification();\n  }\n\n  isIntrospectionField(): boolean {\n    return isIntrospectionName(this.name);\n  }\n\n  isSchemaIntrospectionField(): boolean {\n    return introspectionFieldNames.includes(this.name);\n  }\n\n  private removeArgumentInternal(name: string) {\n    if (this._args) {\n      this._args.delete(name);\n    }\n  }\n\n  // Only called through the prototype from FieldBasedType.removeInnerElements because we don't want to expose it.\n  private removeParent() {\n    this._parent = undefined;\n  }\n\n  isDeprecated(): boolean {\n    return this.hasAppliedDirective('deprecated');\n  }\n\n  /**\n   * Removes this field definition from its parent type.\n   *\n   * After calling this method, this field definition will be \"detached\": it will have no parent, schema, type,\n   * arguments, or directives.\n   */\n  remove(): never[] {\n    if (!this._parent) {\n      return [];\n    }\n    this.checkRemoval();\n    this.onModification();\n    // Remove this field's children.\n    this.sourceAST = undefined;\n    this.type = undefined;\n    this.removeAppliedDirectives();\n    for (const arg of this.arguments()) {\n      arg.remove();\n    }\n    // Note that we don't track field references outside of parents, so no\n    // removal needed there.\n    //\n    // TODO: One could consider interface fields as references to implementing\n    //   object/interface fields, in the sense that removing an implementing\n    //   object/interface field breaks the validity of the implementing\n    //   interface field. Being aware that an object/interface field is being\n    //   referenced in such a way would be useful for understanding breakages\n    //   that need to be resolved as a consequence of removal.\n    //\n    // Remove this field from its parent object/interface type.\n    FieldBasedType.prototype['removeFieldInternal'].call(this._parent, this);\n    this._parent = undefined;\n    this._extension = undefined;\n    return [];\n  }\n\n  /**\n   * Like `remove()`, but if this field was the last field of its parent type, the parent type is removed through its `removeRecursive` method.\n   */\n  removeRecursive(): void {\n    const parent = this._parent;\n    this.remove();\n    // Note that we exclude the union type here because it doesn't have the `fields()` method, but the only field unions can have is the __typename\n    // one and it cannot be removed, so remove() above will actually throw in practice before reaching this.\n    if (parent && !isUnionType(parent) && parent.fields().length === 0) {\n      parent.removeRecursive();\n    }\n  }\n\n  toString(): string {\n    const args = this.hasArguments()\n      ? '(' + this.arguments().map(arg => arg.toString()).join(', ') + ')'\n      : \"\";\n    return `${this.name}${args}: ${this.type}`;\n  }\n}\n\nexport class InputFieldDefinition extends NamedSchemaElementWithType<InputType, InputFieldDefinition, InputObjectType, never> {\n  readonly kind = 'InputFieldDefinition' as const;\n  private _extension?: Extension<InputObjectType>;\n  defaultValue?: any\n\n  get coordinate(): string {\n    const parent = this._parent;\n    return `${parent == undefined ? '<detached>' : parent.coordinate}.${this.name}`;\n  }\n\n  isRequired(): boolean {\n    return isNonNullType(this.type!) && this.defaultValue === undefined;\n  }\n\n  ofExtension(): Extension<InputObjectType> | undefined {\n    return this._extension;\n  }\n\n  removeOfExtension() {\n    this._extension = undefined;\n  }\n\n  setOfExtension(extension: Extension<InputObjectType> | undefined) {\n    this.checkUpdate();\n    assert(\n      !extension || this._parent?.hasExtension(extension),\n      () => `Cannot mark field ${this.name} as part of the provided extension: it is not an extension of field parent type ${this.parent}`,\n    );\n    this._extension = extension;\n    this.onModification();\n  }\n\n  isDeprecated(): boolean {\n    return this.hasAppliedDirective('deprecated');\n  }\n\n  /**\n   * Removes this input field definition from its parent type.\n   *\n   * After calling this method, this input field definition will be \"detached\": it will have no parent, schema,\n   * type, default value, or directives.\n   */\n  remove(): never[] {\n    if (!this._parent) {\n      return [];\n    }\n    this.checkRemoval();\n    this.onModification();\n    // Remove this input field's children.\n    this.sourceAST = undefined;\n    this.type = undefined;\n    this.defaultValue = undefined;\n    this.removeAppliedDirectives();\n    // Note that we don't track input field references outside of parents, so no\n    // removal needed there.\n    //\n    // TODO: One could consider default values (in field arguments, input\n    //   fields, or directive definitions) as references to input fields they\n    //   use, in the sense that removing the input field breaks the validity of\n    //   the default value. Being aware that an input field is being referenced\n    //   in such a way would be useful for understanding breakages that need to\n    //   be resolved as a consequence of removal. (The reference is indirect\n    //   though, as input field usages are currently represented as strings\n    //   within GraphQL values).\n    //\n    // Remove this input field from its parent input object type.\n    InputObjectType.prototype['removeFieldInternal'].call(this._parent, this);\n    this._parent = undefined;\n    this._extension = undefined;\n    return [];\n  }\n\n  /**\n   * Like `remove()`, but if this field was the last field of its parent type, the parent type is removed through its `removeRecursive` method.\n   */\n  removeRecursive(): void {\n    const parent = this._parent;\n    this.remove();\n    if (parent && parent.fields().length === 0) {\n      parent.removeRecursive();\n    }\n  }\n\n  toString(): string {\n    const defaultStr = this.defaultValue === undefined ? \"\" : ` = ${valueToString(this.defaultValue, this.type)}`;\n    return `${this.name}: ${this.type}${defaultStr}`;\n  }\n}\n\nexport class ArgumentDefinition<TParent extends FieldDefinition<any> | DirectiveDefinition> extends NamedSchemaElementWithType<InputType, ArgumentDefinition<TParent>, TParent, never> {\n  readonly kind = 'ArgumentDefinition' as const;\n  defaultValue?: any\n\n  constructor(name: string) {\n    super(name);\n  }\n\n  get coordinate(): string {\n    const parent = this._parent;\n    return `${parent == undefined ? '<detached>' : parent.coordinate}(${this.name}:)`;\n  }\n\n  isRequired(): boolean {\n    return isNonNullType(this.type!) && this.defaultValue === undefined;\n  }\n\n  isDeprecated(): boolean {\n    return this.hasAppliedDirective('deprecated');\n  }\n\n  /**\n   * Removes this argument definition from its parent element (field or directive).\n   *\n   * After calling this method, this argument definition will be \"detached\": it will have no parent, schema, type,\n   * default value, or directives.\n   */\n  remove(): never[] {\n    if (!this._parent) {\n      return [];\n    }\n    this.checkRemoval();\n    this.onModification();\n    // Remove this argument's children.\n    this.sourceAST = undefined;\n    this.type = undefined;\n    this.defaultValue = undefined;\n    this.removeAppliedDirectives();\n    // Note that we don't track argument references outside of parents, so no\n    // removal needed there.\n    //\n    // TODO: One could consider the arguments of directive applications as\n    //   references to the arguments of directive definitions, in the sense that\n    //   removing a directive definition argument can break the validity of the\n    //   directive application. Being aware that a directive definition argument\n    //   is being referenced in such a way would be useful for understanding\n    //   breakages that need to be resolved as a consequence of removal. (You\n    //   could make a similar claim about interface field arguments being\n    //   references to object field arguments.)\n    //\n    // Remove this argument from its parent field or directive definition.\n    if (this._parent instanceof FieldDefinition) {\n      FieldDefinition.prototype['removeArgumentInternal'].call(this._parent, this.name);\n    } else {\n      DirectiveDefinition.prototype['removeArgumentInternal'].call(this._parent, this.name);\n    }\n    this._parent = undefined;\n    return [];\n  }\n\n  toString() {\n    const defaultStr = this.defaultValue === undefined ? \"\" : ` = ${valueToString(this.defaultValue, this.type)}`;\n    return `${this.name}: ${this.type}${defaultStr}`;\n  }\n}\n\nexport class EnumValue extends NamedSchemaElement<EnumValue, EnumType, never> {\n  readonly kind = 'EnumValue' as const;\n  private _extension?: Extension<EnumType>;\n\n  get coordinate(): string {\n    const parent = this._parent;\n    return `${parent == undefined ? '<detached>' : parent.coordinate}.${this.name}`;\n  }\n\n  ofExtension(): Extension<EnumType> | undefined {\n    return this._extension;\n  }\n\n  removeOfExtension() {\n    this._extension = undefined;\n  }\n\n  setOfExtension(extension: Extension<EnumType> | undefined) {\n    this.checkUpdate();\n    assert(\n      !extension || this._parent?.hasExtension(extension),\n      () => `Cannot mark field ${this.name} as part of the provided extension: it is not an extension of enum value parent type ${this.parent}`,\n    );\n    this._extension = extension;\n    this.onModification();\n  }\n\n  isDeprecated(): boolean {\n    return this.hasAppliedDirective('deprecated');\n  }\n\n  /**\n   * Removes this enum value definition from its parent type.\n   *\n   * After calling this method, this enum value definition will be \"detached\": it will have no parent, schema, type,\n   * arguments, or directives.\n   */\n  remove(): never[] {\n    if (!this._parent) {\n      return [];\n    }\n    this.checkRemoval();\n    this.onModification();\n    // Remove this enum value's children.\n    this.sourceAST = undefined;\n    this.removeAppliedDirectives();\n    // Note that we don't track enum value references outside of parents, so no\n    // removal needed there.\n    //\n    // TODO: One could consider default values (in field arguments, input\n    //   fields, or directive definitions) as references to enum values they\n    //   use, in the sense that removing the enum value breaks the validity of\n    //   the default value. Being aware that an enum value is being referenced\n    //   in such a way would be useful for understanding breakages that need to\n    //   be resolved as a consequence of removal. (The reference is indirect\n    //   though, as enum value usages are currently represented as strings\n    //   within GraphQL values).\n    //\n    // Remove this enum value from its parent enum type.\n    EnumType.prototype['removeValueInternal'].call(this._parent, this);\n    this._parent = undefined;\n    this._extension = undefined;\n    return [];\n  }\n\n  protected removeTypeReference(type: NamedType) {\n    assert(false, `Enum value ${this} can't reference other types; shouldn't be asked to remove reference to ${type}`);\n  }\n\n  toString(): string {\n    return `${this.name}`;\n  }\n}\n\nexport class DirectiveDefinition<TApplicationArgs extends {[key: string]: any} = {[key: string]: any}> extends NamedSchemaElement<DirectiveDefinition<TApplicationArgs>, Schema, Directive> {\n  readonly kind = 'DirectiveDefinition' as const;\n\n  private _args?: MapWithCachedArrays<string, ArgumentDefinition<DirectiveDefinition>>;\n  repeatable: boolean = false;\n  private readonly _locations: DirectiveLocation[] = [];\n  private _referencers?: Set<Directive<SchemaElement<any, any>, TApplicationArgs>>;\n\n  constructor(name: string, readonly isBuiltIn: boolean = false) {\n    super(name);\n  }\n\n  get coordinate(): string {\n    return `@${this.name}`;\n  }\n\n  arguments(): readonly ArgumentDefinition<DirectiveDefinition>[] {\n    return this._args?.values() ?? [];\n  }\n\n  argument(name: string): ArgumentDefinition<DirectiveDefinition> | undefined {\n    return this._args?.get(name);\n  }\n\n  addArgument(arg: ArgumentDefinition<DirectiveDefinition>): ArgumentDefinition<DirectiveDefinition>;\n  addArgument(name: string, type?: InputType, defaultValue?: any): ArgumentDefinition<DirectiveDefinition>;\n  addArgument(nameOrArg: string | ArgumentDefinition<DirectiveDefinition>, type?: InputType, defaultValue?: any): ArgumentDefinition<DirectiveDefinition> {\n    let toAdd: ArgumentDefinition<DirectiveDefinition>;\n    if (typeof nameOrArg === 'string') {\n      this.checkUpdate();\n      toAdd = new ArgumentDefinition<DirectiveDefinition>(nameOrArg);\n      toAdd.defaultValue = defaultValue;\n    } else {\n      this.checkUpdate(nameOrArg);\n      toAdd = nameOrArg;\n    }\n    if (this.argument(toAdd.name)) {\n      throw ERRORS.INVALID_GRAPHQL.err(`Argument ${toAdd.name} already exists on field ${this.name}`);\n    }\n    if (!this._args) {\n      this._args = new MapWithCachedArrays();\n    }\n    this._args.set(toAdd.name, toAdd);\n    Element.prototype['setParent'].call(toAdd, this);\n    if (typeof nameOrArg === 'string') {\n      toAdd.type = type;\n    }\n    this.onModification();\n    return toAdd;\n  }\n\n  private removeArgumentInternal(name: string) {\n    this._args?.delete(name);\n  }\n\n  get locations(): readonly DirectiveLocation[] {\n    return this._locations;\n  }\n\n  addLocations(...locations: DirectiveLocation[]): DirectiveDefinition {\n    let modified = false;\n    for (const location of locations) {\n      if (!this._locations.includes(location)) {\n        this._locations.push(location);\n        modified = true;\n      }\n    }\n    if (modified) {\n      this.onModification();\n    }\n    return this;\n  }\n\n  addAllLocations(): DirectiveDefinition {\n    return this.addLocations(...Object.values(DirectiveLocation));\n  }\n\n  /**\n  * Adds the subset of type system locations that correspond to type definitions.\n  */\n  addAllTypeLocations(): DirectiveDefinition {\n    return this.addLocations(\n      DirectiveLocation.SCALAR,\n      DirectiveLocation.OBJECT,\n      DirectiveLocation.INTERFACE,\n      DirectiveLocation.UNION,\n      DirectiveLocation.ENUM,\n      DirectiveLocation.INPUT_OBJECT,\n    );\n  }\n\n  removeLocations(...locations: DirectiveLocation[]): DirectiveDefinition {\n    let modified = false;\n    for (const location of locations) {\n      modified ||= removeArrayElement(location, this._locations);\n    }\n    if (modified) {\n      this.onModification();\n    }\n    return this;\n  }\n\n  hasExecutableLocations(): boolean {\n    return this.locations.some((loc) => isExecutableDirectiveLocation(loc));\n  }\n\n  hasTypeSystemLocations(): boolean {\n    return this.locations.some((loc) => isTypeSystemDirectiveLocation(loc));\n  }\n\n  applications(): ReadonlySet<Directive<SchemaElement<any, any>, TApplicationArgs>> {\n    this._referencers ??= new Set();\n    return this._referencers;\n  }\n\n  private addReferencer(referencer: Directive<SchemaElement<any, any>, TApplicationArgs>) {\n    assert(referencer, 'Referencer should exists');\n    this._referencers ??= new Set();\n    this._referencers.add(referencer);\n  }\n\n  private removeReferencer(referencer: Directive<SchemaElement<any, any>, TApplicationArgs>) {\n    this._referencers?.delete(referencer);\n  }\n\n  protected removeTypeReference(type: NamedType) {\n    assert(false, `Directive definition ${this} can't reference other types (it's arguments can); shouldn't be asked to remove reference to ${type}`);\n  }\n\n  /**\n   * Removes this directive definition from its parent schema.\n   *\n   * After calling this method, this directive definition will be \"detached\": it will have no parent, schema, or\n   * arguments.\n   */\n  remove(): Directive[] {\n    if (!this._parent) {\n      return [];\n    }\n    this.checkRemoval();\n    this.onModification();\n    // Remove this directive definition's children.\n    this.sourceAST = undefined;\n    assert(!this._appliedDirectives || this._appliedDirectives.length === 0, \"Directive definition should not have directive applied to it\");\n    for (const arg of this.arguments()) {\n      arg.remove();\n    }\n    // Remove this directive definition's references.\n    //\n    // Note that while a directive application references its definition, it\n    // doesn't store a link to that definition. Instead, we fetch the definition\n    // from the schema when requested. So we don't have to do anything on the\n    // referencers other than clear them (and return the pre-cleared set).\n    const toReturn = Array.from(this._referencers ?? []);\n    this._referencers = undefined;\n    // Remove this directive definition from its parent schema.\n    Schema.prototype['removeDirectiveInternal'].call(this._parent, this);\n    this._parent = undefined;\n    return toReturn;\n  }\n\n  /**\n   * Removes this this directive definition _and_ all its applications.\n   */\n  removeRecursive(): void {\n    this.remove().forEach(ref => ref.remove());\n  }\n\n  toAST(): DirectiveDefinitionNode {\n    const doc = parse(printDirectiveDefinition(this));\n    return doc.definitions[0] as DirectiveDefinitionNode;\n  }\n\n  toString(): string {\n    return `@${this.name}`;\n  }\n}\n\nexport class Directive<\n  TParent extends SchemaElement<any, any> | DirectiveTargetElement<any> = SchemaElement<any, any>,\n  TArgs extends {[key: string]: any} = {[key: string]: any}\n> extends Element<TParent> implements Named {\n  // Note that _extension will only be set for directive directly applied to an extendable element. Meaning that if a directive is\n  // applied to a field that is part of an extension, the field will have its extension set, but not the underlying directive.\n  private _extension?: Extension<any>;\n\n  constructor(readonly name: string, private _args: TArgs = Object.create(null)) {\n    super();\n  }\n\n  schema(): Schema {\n    return this.parent.schema();\n  }\n\n  get definition(): DirectiveDefinition | undefined {\n    if (!this.isAttached()) {\n      return undefined;\n    }\n    const doc = this.schema();\n    return doc.directive(this.name);\n  }\n\n  arguments(includeDefaultValues: boolean = false) : Readonly<TArgs> {\n    if (!includeDefaultValues) {\n      return this._args;\n    }\n    const definition = this.definition;\n    assert(definition, () => `Cannot include default values for arguments: cannot find directive definition for ${this.name}`);\n    const updated = Object.create(null);\n    for (const argDef of definition.arguments()) {\n      const argValue = withDefaultValues(this._args[argDef.name], argDef);\n      // Note that argValue could be '0' or something falsy here, so we must explicitly check === undefined\n      if (argValue !== undefined) {\n        updated[argDef.name] = argValue;\n      }\n    }\n    return updated;\n  }\n\n  private onModification() {\n    if (this.isAttachedToSchemaElement()) {\n      Schema.prototype['onModification'].call(this.schema());\n    }\n  }\n\n  private isAttachedToSchemaElement(): boolean {\n    return this.isAttached();\n  }\n\n  setArguments(args: TArgs) {\n    this._args = args;\n    this.onModification();\n  }\n\n  argumentType(name: string): InputType | undefined {\n    return this.definition?.argument(name)?.type;\n  }\n\n  matchArguments(expectedArgs: Record<string, any>): boolean {\n    const entries = Object.entries(this._args);\n    if (entries.length !== Object.keys(expectedArgs).length) {\n      return false;\n    }\n    for (const [key, val] of entries) {\n      if (!(key in expectedArgs)) {\n        return false;\n      }\n      const expectedVal = expectedArgs[key];\n      if (!valueEquals(expectedVal, val)) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  ofExtension(): Extension<any> | undefined {\n    return this._extension;\n  }\n\n  removeOfExtension() {\n    this._extension = undefined;\n  }\n\n  setOfExtension(extension: Extension<any> | undefined) {\n    this.checkUpdate();\n    if (extension) {\n      const parent = this.parent;\n      assert(\n        parent instanceof SchemaDefinition || parent instanceof BaseNamedType,\n        'Can only mark directive parts of extensions when directly apply to type or schema definition.'\n      );\n      assert(parent.hasExtension(extension), () => `Cannot mark directive ${this.name} as part of the provided extension: it is not an extension of parent ${parent}`);\n    }\n    this._extension = extension;\n    this.onModification();\n  }\n\n  argumentsToAST(): ConstArgumentNode[] | undefined {\n    const entries = Object.entries(this._args);\n    if (entries.length === 0) {\n      return undefined;\n    }\n\n    const definition = this.definition;\n    assert(definition, () => `Cannot convert arguments of detached directive ${this}`);\n    return entries.map(([n, v]) => {\n      return {\n        kind: Kind.ARGUMENT,\n        name: { kind: Kind.NAME, value: n },\n        value: valueToAST(v, definition.argument(n)!.type!)! as ConstValueNode,\n      };\n    });\n  }\n\n  /**\n   * Removes this directive application from its parent type.\n   *\n   * @returns whether the directive was actually removed, that is whether it had a parent.\n   */\n  remove(): boolean {\n    if (!this._parent) {\n      return false;\n    }\n    this.onModification();\n    const coreFeatures = this.schema().coreFeatures;\n    if (coreFeatures && this.name === coreFeatures.coreItself.nameInSchema) {\n      // We're removing a @core/@link directive application, so we remove it from the list of core features. And\n      // if it is @core itself, we clean all features (to avoid having things too inconsistent).\n      const url = FeatureUrl.parse(this._args[coreFeatures.coreDefinition.urlArgName()]!);\n      if (url.identity === coreFeatures.coreItself.url.identity) {\n        // Note that we unmark first because the loop after that will nuke our parent.\n        Schema.prototype['unmarkAsCoreSchema'].call(this.schema());\n        for (const d of this.schema().schemaDefinition.appliedDirectivesOf(coreFeatures.coreItself.nameInSchema)) {\n          d.removeInternal();\n        }\n        // The loop above will already have call removeInternal on this instance, so we can return\n        return true;\n      } else {\n        CoreFeatures.prototype['removeFeature'].call(coreFeatures, url.identity);\n      }\n    }\n    return this.removeInternal();\n  }\n\n  private removeInternal(): boolean {\n    if (!this._parent) {\n      return false;\n    }\n    // Remove this directive application's reference to its definition.\n    const definition = this.definition;\n    if (definition && this.isAttachedToSchemaElement()) {\n      DirectiveDefinition.prototype['removeReferencer'].call(definition, this as Directive<SchemaElement<any, any>>);\n    }\n    // Remove this directive application from its parent schema element.\n    const parentDirectives = this._parent.appliedDirectives as Directive<TParent>[];\n    const removed = removeArrayElement(this, parentDirectives);\n    assert(removed, () => `Directive ${this} lists ${this._parent} as parent, but that parent doesn't list it as applied directive`);\n    this._parent = undefined;\n    this._extension = undefined;\n    return true;\n  }\n\n  toString(): string {\n    const entries = Object.entries(this._args).filter(([_, v]) => v !== undefined);\n    const args = entries.length == 0 ? '' : '(' + entries.map(([n, v]) => `${n}: ${valueToString(v, this.argumentType(n))}`).join(', ') + ')';\n    return `@${this.name}${args}`;\n  }\n}\n\n/**\n * Formats a Directive array as a string (with a leading space, if present).\n */\nexport function directivesToString(directives?: readonly Directive<any>[])\n  : string\n{\n  return (!directives || directives.length == 0)\n        ? ''\n        : ' ' + directives.join(' ');\n}\n\n/**\n * Converts a Directive array into DirectiveNode array.\n */\nexport function directivesToDirectiveNodes(directives?: readonly Directive<any>[])\n  : ConstDirectiveNode[] | undefined\n{\n  return (!directives || directives.length === 0)\n    ? undefined\n    : directives.map(directive => {\n      return {\n        kind: Kind.DIRECTIVE,\n        name: {\n          kind: Kind.NAME,\n          value: directive.name,\n        },\n        arguments: directive.argumentsToAST()\n      };\n    });\n}\n\n/**\n * Checks if 2 directive applications should be considered equal.\n *\n * By default, 2 directive applications are considered equal if they are for the same directive and are passed the same values to\n * the same arguments. However, some special directive can be excluded so that no 2 applications are ever consider equal. By default,\n * this is the case of @defer, as never want to merge @defer applications so that each create its own \"deferred block\".\n */\nexport function sameDirectiveApplication(\n  application1: Directive<any, any>,\n  application2: Directive<any, any>,\n  directivesNeverEqualToThemselves: string[] = [ 'defer' ],\n): boolean {\n  // Note: we check name equality first because this method is most often called with directive that are simply not the same\n  // name and this ensure we exit cheaply more often than not.\n  return application1.name === application2.name\n    && !directivesNeverEqualToThemselves.includes(application1.name)\n    && !directivesNeverEqualToThemselves.includes(application2.name)\n    && argumentsEquals(application1.arguments(), application2.arguments());\n}\n\n/**\n * Checks whether the 2 provided \"set\" of directive applications are the same (same applications, regardless or order).\n */\nexport function sameDirectiveApplications(\n  applications1: readonly Directive<any, any>[],\n  applications2: readonly Directive<any, any>[],\n  directivesNeverEqualToThemselves: string[] = [ 'defer' ],\n): boolean {\n  if (applications1.length !== applications2.length) {\n    return false;\n  }\n\n  for (const directive1 of applications1) {\n    if (!applications2.some(directive2 => sameDirectiveApplication(directive1, directive2, directivesNeverEqualToThemselves))) {\n      return false;\n    }\n  }\n  return true;\n}\n\n/**\n * Checks whether a given array of directive applications (`maybeSubset`) is a sub-set of another array of directive applications (`applications`).\n *\n * Sub-set here means that all of the applications in `maybeSubset` appears in `applications`.\n */\nexport function isDirectiveApplicationsSubset(applications: readonly Directive<any, any>[], maybeSubset: readonly Directive<any, any>[]): boolean {\n  if (maybeSubset.length > applications.length) {\n    return false;\n  }\n\n  for (const directive1 of maybeSubset) {\n    if (!applications.some(directive2 => sameDirectiveApplication(directive1, directive2))) {\n      return false;\n    }\n  }\n  return true;\n}\n\n/**\n * Computes the difference between the set of directives applications `baseApplications` and the `toRemove` one.\n */\nexport function directiveApplicationsSubstraction(baseApplications: readonly Directive<any, any>[], toRemove: readonly Directive<any, any>[]): Directive<any, any>[] {\n  return baseApplications.filter((application) => !toRemove.some((other) => sameDirectiveApplication(application, other)));\n}\n\nexport class Variable {\n  constructor(readonly name: string) {}\n\n  toVariableNode(): VariableNode {\n    return {\n      kind: Kind.VARIABLE,\n      name: { kind: Kind.NAME, value: this.name },\n    }\n  }\n\n  toString(): string {\n    return '$' + this.name;\n  }\n}\n\nexport type Variables = readonly Variable[];\n\nexport class VariableCollector {\n  private readonly _variables = new Map<string, Variable>();\n\n  add(variable: Variable) {\n    this._variables.set(variable.name, variable);\n  }\n\n  addAll(variables: Variables) {\n    for (const variable of variables) {\n      this.add(variable);\n    }\n  }\n\n  collectInArguments(args: {[key: string]: any}) {\n    for (const value of Object.values(args)) {\n      collectVariablesInValue(value, this);\n    }\n  }\n\n  variables() {\n    return mapValues(this._variables);\n  }\n\n  toString(): string {\n    return this.variables().toString();\n  }\n}\n\nexport function isVariable(v: any): v is Variable {\n  return v instanceof Variable;\n}\n\nexport class VariableDefinition extends DirectiveTargetElement<VariableDefinition> {\n  constructor(\n    schema: Schema,\n    readonly variable: Variable,\n    readonly type: InputType,\n    readonly defaultValue?: any,\n  ) {\n    super(schema);\n  }\n\n  toVariableDefinitionNode(): VariableDefinitionNode {\n    const ast = valueToAST(this.defaultValue, this.type);\n\n    return {\n      kind: Kind.VARIABLE_DEFINITION,\n      variable: this.variable.toVariableNode(),\n      type: typeToAST(this.type),\n      defaultValue: (ast !== undefined) ? valueNodeToConstValueNode(ast) : undefined,\n      directives: this.appliedDirectivesToDirectiveNodes(),\n    }\n  }\n\n  toString() {\n    let base = this.variable + ': ' + this.type;\n    if (this.defaultValue !== undefined) {\n      base = base + ' = ' + valueToString(this.defaultValue, this.type);\n    }\n    return base + this.appliedDirectivesToString();\n  }\n}\n\nexport class VariableDefinitions {\n  private readonly _definitions: MapWithCachedArrays<string, VariableDefinition> = new MapWithCachedArrays();\n\n  add(definition: VariableDefinition): boolean {\n    if (this._definitions.has(definition.variable.name)) {\n      return false;\n    }\n    this._definitions.set(definition.variable.name, definition);\n    return true;\n  }\n\n  addAll(definitions: VariableDefinitions) {\n    for (const definition of definitions._definitions.values()) {\n      this.add(definition);\n    }\n  }\n\n  definition(variable: Variable | string): VariableDefinition | undefined {\n    const varName = typeof variable === 'string' ? variable : variable.name;\n    return this._definitions.get(varName);\n  }\n\n  isEmpty(): boolean {\n    return this._definitions.size === 0;\n  }\n\n  definitions(): readonly VariableDefinition[] {\n    return this._definitions.values();\n  }\n\n  filter(variables: Variables): VariableDefinitions {\n    if (variables.length === 0) {\n      return new VariableDefinitions();\n    }\n\n    const newDefs = new VariableDefinitions();\n    for (const variable of variables) {\n      const def = this.definition(variable);\n      if (!def) {\n        throw new Error(`Cannot find variable ${variable} in definitions ${this}`);\n      }\n      newDefs.add(def);\n    }\n    return newDefs;\n  }\n\n  toVariableDefinitionNodes(): readonly VariableDefinitionNode[] | undefined {\n    if (this._definitions.size === 0) {\n      return undefined;\n    }\n\n    return this.definitions().map(def => def.toVariableDefinitionNode());\n  }\n\n  toString() {\n    return '(' + this.definitions().join(', ') + ')';\n  }\n}\n\nexport function variableDefinitionsFromAST(schema: Schema, definitionNodes: readonly VariableDefinitionNode[]): VariableDefinitions {\n  const definitions = new VariableDefinitions();\n  for (const definitionNode of definitionNodes) {\n    if (!definitions.add(variableDefinitionFromAST(schema, definitionNode))) {\n      const name = definitionNode.variable.name.value;\n      throw ERRORS.INVALID_GRAPHQL.err(`Duplicate definition for variable ${name}`, { nodes: definitionNodes.filter(n => n.variable.name.value === name) });\n    }\n  }\n  return definitions;\n}\n\nexport function variableDefinitionFromAST(schema: Schema, definitionNode: VariableDefinitionNode): VariableDefinition {\n  const variable = new Variable(definitionNode.variable.name.value);\n  const type = typeFromAST(schema, definitionNode.type);\n  if (!isInputType(type)) {\n    throw ERRORS.INVALID_GRAPHQL.err(`Invalid type \"${type}\" for variable $${variable}: not an input type`, { nodes: definitionNode.type });\n  }\n  const def = new VariableDefinition(\n    schema,\n    variable,\n    type,\n    definitionNode.defaultValue ? valueFromAST(definitionNode.defaultValue, type) : undefined\n  );\n  return def;\n}\n\nfunction addReferenceToType(referencer: SchemaElement<any, any>, type: Type) {\n  switch (type.kind) {\n    case 'ListType':\n      addReferenceToType(referencer, type.baseType());\n      break;\n    case 'NonNullType':\n      addReferenceToType(referencer, type.baseType());\n      break;\n    default:\n      BaseNamedType.prototype['addReferencer'].call(type, referencer);\n      break;\n  }\n}\n\nfunction removeReferenceToType(referencer: SchemaElement<any, any>, type: Type) {\n  switch (type.kind) {\n    case 'ListType':\n      removeReferenceToType(referencer, type.baseType());\n      break;\n    case 'NonNullType':\n      removeReferenceToType(referencer, type.baseType());\n      break;\n    default:\n      BaseNamedType.prototype['removeReferencer'].call(type, referencer);\n      break;\n  }\n}\n\nexport function newNamedType(kind: NamedTypeKind, name: string): NamedType {\n  switch (kind) {\n    case 'ScalarType':\n      return new ScalarType(name);\n    case 'ObjectType':\n      return new ObjectType(name);\n    case 'InterfaceType':\n      return new InterfaceType(name);\n    case 'UnionType':\n      return new UnionType(name);\n    case 'EnumType':\n      return new EnumType(name);\n    case 'InputObjectType':\n      return new InputObjectType(name);\n    default:\n      assert(false, `Unhandled kind ${kind} for type ${name}`);\n  }\n}\n\nfunction *typesToCopy(source: Schema, dest: Schema): Generator<NamedType, void, undefined>  {\n  for (const type of source.builtInTypes()) {\n    if (!type.isIntrospectionType() && !dest.type(type.name)?.isBuiltIn) {\n      yield type;\n    }\n  }\n  yield* source.types();\n}\n\nfunction *directivesToCopy(source: Schema, dest: Schema): Generator<DirectiveDefinition, void, undefined>  {\n  for (const directive of source.builtInDirectives()) {\n    if (!dest.directive(directive.name)?.isBuiltIn) {\n      yield directive;\n    }\n  }\n  yield* source.directives();\n}\n\n/**\n * Creates, in the provided schema, a directive definition equivalent to the provided one.\n *\n * Note that this method assumes that:\n *  - the provided schema does not already have a directive with the name of the definition to copy.\n *  - if the copied definition has arguments, then the provided schema has existing types with\n *    names matching any type used in copied definition.\n */\nexport function copyDirectiveDefinitionToSchema({\n  definition,\n  schema,\n  copyDirectiveApplicationsInArguments = true,\n  locationFilter,\n}: {\n  definition: DirectiveDefinition,\n  schema: Schema,\n  copyDirectiveApplicationsInArguments: boolean,\n  locationFilter?: (loc: DirectiveLocation) => boolean,\n}\n) {\n  copyDirectiveDefinitionInner(\n    definition,\n    schema.addDirectiveDefinition(definition.name),\n    copyDirectiveApplicationsInArguments,\n    locationFilter,\n  );\n}\n\nfunction copy(source: Schema, dest: Schema, cloneJoinDirectives: boolean) {\n  // We shallow copy types first so any future reference to any of them can be dereferenced.\n  for (const type of typesToCopy(source, dest)) {\n    dest.addType(newNamedType(type.kind, type.name));\n  }\n  // Directives can use other directives in their arguments. So, like types, we first shallow copy\n  // directives so future references to any of them can be dereferenced. We'll copy the actual\n  // definition later after all directives are defined.\n  for (const directive of directivesToCopy(source, dest)) {\n    dest.addDirectiveDefinition(directive.name);\n  }\n  for (const directive of directivesToCopy(source, dest)) {\n    copyDirectiveDefinitionInner(directive, dest.directive(directive.name)!);\n  }\n\n  copySchemaDefinitionInner(source.schemaDefinition, dest.schemaDefinition);\n  for (const type of typesToCopy(source, dest)) {\n    copyNamedTypeInner(type, dest.type(type.name)!, cloneJoinDirectives);\n  }\n}\n\nfunction copyExtensions<T extends ExtendableElement>(source: T, dest: T): Map<Extension<T>, Extension<T>> {\n  const extensionMap = new Map<Extension<T>, Extension<T>>();\n  for (const sourceExtension of source.extensions()) {\n    const destExtension = new Extension<T>();\n    dest.addExtension(destExtension as any);\n    extensionMap.set(sourceExtension as any, destExtension);\n  }\n  return extensionMap;\n}\n\nfunction copyOfExtension<T extends ExtendableElement>(\n  extensionsMap: Map<Extension<T>, Extension<T>>,\n  source: { ofExtension(): Extension<T> | undefined },\n  dest: { setOfExtension(ext: Extension<T> | undefined):any }\n) {\n  const toCopy = source.ofExtension();\n  if (toCopy) {\n    dest.setOfExtension(extensionsMap.get(toCopy));\n  }\n}\n\nfunction copySchemaDefinitionInner(source: SchemaDefinition, dest: SchemaDefinition) {\n  dest.preserveEmptyDefinition = source.preserveEmptyDefinition;\n  const extensionsMap = copyExtensions(source, dest);\n  for (const rootType of source.roots()) {\n    copyOfExtension(extensionsMap, rootType, dest.setRoot(rootType.rootKind, rootType.type.name));\n  }\n  // Same as copyAppliedDirectives, but as the directive applies to the schema definition, we need to remember if the application\n  // is for the extension or not.\n  for (const directive of source.appliedDirectives) {\n    copyOfExtension(extensionsMap, directive, copyAppliedDirective(directive, dest));\n  }\n  dest.description = source.description;\n  dest.sourceAST = source.sourceAST;\n}\n\nfunction copyNamedTypeInner(source: NamedType, dest: NamedType, cloneJoinDirectives: boolean) {\n  dest.preserveEmptyDefinition = source.preserveEmptyDefinition;\n  const extensionsMap = copyExtensions(source, dest);\n  // Same as copyAppliedDirectives, but as the directive applies to the type, we need to remember if the application\n  // is for the extension or not.\n  for (const directive of source.appliedDirectives) {\n    copyOfExtension(extensionsMap, directive, copyAppliedDirective(directive, dest));\n  }\n  dest.description = source.description;\n  dest.sourceAST = source.sourceAST;\n  switch (source.kind) {\n    case 'ObjectType':\n    case 'InterfaceType':\n      const destFieldBasedType = dest as FieldBasedType<any, any>;\n      for (const sourceField of source.fields()) {\n        const destField = destFieldBasedType.addField(new FieldDefinition(sourceField.name));\n        copyOfExtension(extensionsMap, sourceField, destField);\n        copyFieldDefinitionInner(sourceField, destField, cloneJoinDirectives);\n      }\n      for (const sourceImpl of source.interfaceImplementations()) {\n        const destImpl = destFieldBasedType.addImplementedInterface(sourceImpl.interface.name);\n        copyOfExtension(extensionsMap, sourceImpl, destImpl);\n      }\n      break;\n    case 'UnionType':\n      const destUnionType = dest as UnionType;\n      for (const sourceType of source.members()) {\n        const destType = destUnionType.addType(sourceType.type.name);\n        copyOfExtension(extensionsMap, sourceType, destType);\n      }\n      break;\n    case 'EnumType':\n      const destEnumType = dest as EnumType;\n      for (const sourceValue of source.values) {\n        const destValue = destEnumType.addValue(sourceValue.name);\n        destValue.description = sourceValue.description;\n        copyOfExtension(extensionsMap, sourceValue, destValue);\n        copyAppliedDirectives(sourceValue, destValue, cloneJoinDirectives);\n      }\n      break\n    case 'InputObjectType':\n      const destInputType = dest as InputObjectType;\n      for (const sourceField of source.fields()) {\n        const destField = destInputType.addField(new InputFieldDefinition(sourceField.name));\n        copyOfExtension(extensionsMap, sourceField, destField);\n        copyInputFieldDefinitionInner(sourceField, destField, cloneJoinDirectives);\n      }\n  }\n}\n\nfunction copyAppliedDirectives(source: SchemaElement<any, any>, dest: SchemaElement<any, any>, cloneJoinDirectives: boolean) {\n  source.appliedDirectives.filter(d => cloneJoinDirectives || !d.name.startsWith('join__')).forEach((d) => copyAppliedDirective(d, dest));\n}\n\nfunction copyAppliedDirective(source: Directive<any, any>, dest: SchemaElement<any, any>): Directive<any, any> {\n  const res = dest.applyDirective(source.name, { ...source.arguments() });\n  res.sourceAST = source.sourceAST\n  return res;\n}\n\nfunction copyFieldDefinitionInner<P extends ObjectType | InterfaceType>(source: FieldDefinition<P>, dest: FieldDefinition<P>, cloneJoinDirectives: boolean) {\n  const type = copyWrapperTypeOrTypeRef(source.type, dest.schema()) as OutputType;\n  dest.type = type;\n  for (const arg of source.arguments()) {\n    const argType = copyWrapperTypeOrTypeRef(arg.type, dest.schema());\n    copyArgumentDefinitionInner({\n      source: arg, \n      dest: dest.addArgument(arg.name, argType as InputType),\n      cloneJoinDirectives,\n    });\n  }\n  copyAppliedDirectives(source, dest, cloneJoinDirectives);\n  dest.description = source.description;\n  dest.sourceAST = source.sourceAST;\n}\n\nfunction copyInputFieldDefinitionInner(source: InputFieldDefinition, dest: InputFieldDefinition, cloneJoinDirectives: boolean) {\n  const type = copyWrapperTypeOrTypeRef(source.type, dest.schema()) as InputType;\n  dest.type = type;\n  dest.defaultValue = source.defaultValue;\n  copyAppliedDirectives(source, dest, cloneJoinDirectives);\n  dest.description = source.description;\n  dest.sourceAST = source.sourceAST;\n}\n\nfunction copyWrapperTypeOrTypeRef(source: Type | undefined, destParent: Schema): Type | undefined {\n  if (!source) {\n    return undefined;\n  }\n  switch (source.kind) {\n    case 'ListType':\n      return new ListType(copyWrapperTypeOrTypeRef(source.ofType, destParent)!);\n    case 'NonNullType':\n      return new NonNullType(copyWrapperTypeOrTypeRef(source.ofType, destParent)! as NullableType);\n    default:\n      return destParent.type(source.name)!;\n  }\n}\n\nfunction copyArgumentDefinitionInner<P extends FieldDefinition<any> | DirectiveDefinition>({\n  source,\n  dest,\n  copyDirectiveApplications = true,\n  cloneJoinDirectives,\n}: {\n  source: ArgumentDefinition<P>,\n  dest: ArgumentDefinition<P>,\n  copyDirectiveApplications?: boolean,\n  cloneJoinDirectives: boolean,\n}) {\n  const type = copyWrapperTypeOrTypeRef(source.type, dest.schema()) as InputType;\n  dest.type = type;\n  dest.defaultValue = source.defaultValue;\n  if (copyDirectiveApplications) {\n    copyAppliedDirectives(source, dest, cloneJoinDirectives);\n  }\n  dest.description = source.description;\n  dest.sourceAST = source.sourceAST;\n}\n\nfunction copyDirectiveDefinitionInner(\n  source: DirectiveDefinition,\n  dest: DirectiveDefinition,\n  copyDirectiveApplicationsInArguments: boolean = true,\n  locationFilter?: (loc: DirectiveLocation) => boolean,\n) {\n  let locations = source.locations;\n  if (locationFilter) {\n    locations = locations.filter((loc) => locationFilter(loc));\n  }\n  if (locations.length === 0) {\n    return;\n  }\n\n  for (const arg of source.arguments()) {\n    const type = copyWrapperTypeOrTypeRef(arg.type, dest.schema());\n    copyArgumentDefinitionInner({\n      source: arg,\n      dest: dest.addArgument(arg.name, type as InputType),\n      copyDirectiveApplications: copyDirectiveApplicationsInArguments,\n      cloneJoinDirectives: true,\n    });\n  }\n  dest.repeatable = source.repeatable;\n  dest.addLocations(...locations);\n  dest.sourceAST = source.sourceAST;\n  dest.description = source.description;\n}\n\nexport function isFieldDefinition(elem: SchemaElement<any, any>): elem is FieldDefinition<any> {\n  return elem instanceof FieldDefinition;\n}\n\nexport function isElementNamedType(elem: SchemaElement<any, any>): elem is NamedType {\n  return elem instanceof BaseNamedType;\n}\n", "import { DirectiveLocation } from 'graphql';\nimport {\n  CorePurpose,\n  FeatureDefinition,\n  FeatureDefinitions,\n  FeatureUrl,\n  FeatureVersion,\n} from './coreSpec';\nimport {\n  CoreFeature,\n  InputObjectType,\n  isInputObjectType,\n  isNonNullType,\n  ListType,\n  NamedType,\n  NonNullType,\n  ScalarType,\n  Schema,\n} from '../definitions';\nimport { registerKnownFeature } from '../knownCoreFeatures';\nimport {\n  createDirectiveSpecification,\n  createScalarTypeSpecification,\n  ensureSameTypeKind,\n  InputFieldSpecification,\n  TypeSpecification,\n} from '../directiveAndTypeSpecification';\nimport { ERRORS } from '../error';\nimport { sameType } from '../types';\nimport { assert } from '../utils';\nimport { valueEquals, valueToString } from '../values';\n\nexport const connectIdentity = 'https://specs.apollo.dev/connect';\n\nconst CONNECT = 'connect';\nconst SOURCE = 'source';\nconst URL_PATH_TEMPLATE = 'URLPathTemplate';\nconst JSON_SELECTION = 'JSONSelection';\nconst CONNECT_HTTP = 'ConnectHTTP';\nconst CONNECT_BATCH = 'ConnectBatch';\nconst CONNECTOR_ERRORS = \"ConnectorErrors\";\nconst SOURCE_HTTP = \"SourceHTTP\";\nconst HTTP_HEADER_MAPPING = 'HTTPHeaderMapping';\n\nexport class ConnectSpecDefinition extends FeatureDefinition {\n  constructor(\n    version: FeatureVersion,\n    readonly minimumFederationVersion: FeatureVersion,\n  ) {\n    super(\n      new FeatureUrl(connectIdentity, CONNECT, version),\n      minimumFederationVersion,\n    );\n\n    function lookupFeatureTypeInSchema<T extends NamedType>(name: string, kind: T['kind'], schema: Schema, feature?: CoreFeature): T {\n      assert(feature, `Shouldn't be added without being attached to a @connect spec`);\n      const typeName = feature.typeNameInSchema(name);\n      const type = schema.typeOfKind<T>(typeName, kind);\n      assert(type, () => `Expected \"${typeName}\" to be defined`);\n      return type;\n    }\n\n\n    /* scalar URLPathTemplate */\n    this.registerType(\n        createScalarTypeSpecification({ name: URL_PATH_TEMPLATE }),\n    );\n    /* scalar JSONSelection */\n    this.registerType(createScalarTypeSpecification({ name: JSON_SELECTION }));\n\n    /*\n      input ConnectorErrors {\n        message: JSONSelection\n        extensions: JSONSelection\n      }\n    */\n    this.registerType(\n        createInputObjectTypeSpecification({\n          name: CONNECTOR_ERRORS,\n          inputFieldsFct: (schema, feature) => {\n            const jsonSelectionType =\n                lookupFeatureTypeInSchema<ScalarType>(JSON_SELECTION, 'ScalarType', schema, feature);\n            return [\n              {\n                name: 'message',\n                type: jsonSelectionType\n              },\n              {\n                name: 'extensions',\n                type: jsonSelectionType\n              },\n            ]\n          }\n        })\n    );\n\n    /*\n      input HTTPHeaderMapping {\n        name: String!\n        from: String\n        value: String\n      }\n    */\n    this.registerType(\n        createInputObjectTypeSpecification({\n          name: HTTP_HEADER_MAPPING,\n          inputFieldsFct: (schema) => [\n            {\n              name: 'name',\n              type: new NonNullType(schema.stringType())\n            },\n            {\n              name: 'from',\n              type: schema.stringType()\n            },\n            {\n              name: 'value',\n              type: schema.stringType()\n            },\n          ]\n        })\n    );\n\n    /*\n      input ConnectBatch {\n        maxSize: Int\n      }\n     */\n    this.registerType(\n        createInputObjectTypeSpecification({\n          name: CONNECT_BATCH,\n          inputFieldsFct: (schema) => [\n            {\n              name: 'maxSize',\n              type: schema.intType()\n            }\n          ]\n        })\n    )\n\n    /*\n      input SourceHTTP {\n        baseURL: String!\n        headers: [HTTPHeaderMapping!]\n\n        # added in v0.2\n        path: JSONSelection\n        queryParams: JSONSelection\n      }\n    */\n    this.registerType(\n        createInputObjectTypeSpecification({\n          name: SOURCE_HTTP,\n          inputFieldsFct: (schema, feature) => {\n            const jsonSelectionType =\n                lookupFeatureTypeInSchema<ScalarType>(JSON_SELECTION, 'ScalarType', schema, feature);\n            const httpHeaderMappingType =\n                lookupFeatureTypeInSchema<InputObjectType>(HTTP_HEADER_MAPPING, 'InputObjectType', schema, feature);\n            return [\n              {\n                name: 'baseURL',\n                type: new NonNullType(schema.stringType())\n              },\n              {\n                name: 'headers',\n                type: new ListType(new NonNullType(httpHeaderMappingType))\n              },\n              {\n                name: 'path',\n                type: jsonSelectionType\n              },\n              {\n                name: 'queryParams',\n                type: jsonSelectionType\n              }\n            ];\n          }\n        })\n    );\n\n    /*\n      input ConnectHTTP {\n        GET: URLPathTemplate\n        POST: URLPathTemplate\n        PUT: URLPathTemplate\n        PATCH: URLPathTemplate\n        DELETE: URLPathTemplate\n        body: JSONSelection\n        headers: [HTTPHeaderMapping!]\n\n        # added in v0.2\n        path: JSONSelection\n        queryParams: JSONSelection\n      }\n    */\n    this.registerType(\n      createInputObjectTypeSpecification({\n        name: CONNECT_HTTP,\n        inputFieldsFct: (schema, feature) => {\n          const urlPathTemplateType =\n              lookupFeatureTypeInSchema<ScalarType>(URL_PATH_TEMPLATE, 'ScalarType', schema, feature);\n          const jsonSelectionType =\n              lookupFeatureTypeInSchema<ScalarType>(JSON_SELECTION, 'ScalarType', schema, feature);\n          const httpHeaderMappingType =\n              lookupFeatureTypeInSchema<InputObjectType>(HTTP_HEADER_MAPPING, 'InputObjectType', schema, feature);\n          return [\n            {\n              name: 'GET',\n              type: urlPathTemplateType\n            },\n            {\n              name: 'POST',\n              type: urlPathTemplateType\n            },\n            {\n              name: 'PUT',\n              type: urlPathTemplateType\n            },\n            {\n              name: 'PATCH',\n              type: urlPathTemplateType\n            },\n            {\n              name: 'DELETE',\n              type: urlPathTemplateType\n            },\n            {\n              name: 'body',\n              type: jsonSelectionType\n            },\n            {\n              name: 'headers',\n              type: new ListType(new NonNullType(httpHeaderMappingType))\n            },\n            {\n              name: 'path',\n              type: jsonSelectionType\n            },\n            {\n              name: 'queryParams',\n              type: jsonSelectionType\n            },\n          ];\n        }\n      })\n    );\n\n    /*\n      directive @connect(\n        source: String\n        id: String\n        http: ConnectHTTP!\n        batch: ConnectBatch\n        errors: ConnectorErrors\n        selection: JSONSelection!\n        entity: Boolean = false\n        isSuccess: JSONSelection\n      ) repeatable on FIELD_DEFINITION\n        | OBJECT # added in v0.2, validation enforced in rust\n    */\n    this.registerDirective(\n      createDirectiveSpecification({\n        name: CONNECT,\n        locations: [DirectiveLocation.FIELD_DEFINITION, DirectiveLocation.OBJECT],\n        repeatable: true,\n        args: [\n          {\n            name: 'source',\n            type: (schema) => schema.stringType()\n          },\n          {\n            name: 'id',\n            type: (schema) => schema.stringType()\n          },\n          {\n            name: 'http',\n            type: (schema, feature) => {\n              const connectHttpType =\n                  lookupFeatureTypeInSchema<InputObjectType>(CONNECT_HTTP, 'InputObjectType', schema, feature);\n              return new NonNullType(connectHttpType);\n            }\n          },\n          {\n            name: 'batch',\n            type: (schema, feature) =>\n                lookupFeatureTypeInSchema<InputObjectType>(CONNECT_BATCH, 'InputObjectType', schema, feature)\n          },\n          {\n            name: 'errors',\n            type: (schema, feature) =>\n                lookupFeatureTypeInSchema<InputObjectType>(CONNECTOR_ERRORS, 'InputObjectType', schema, feature)\n          },\n          {\n            name: 'selection',\n            type: (schema, feature) => {\n              const jsonSelectionType =\n                  lookupFeatureTypeInSchema<ScalarType>(JSON_SELECTION, 'ScalarType', schema, feature);\n              return new NonNullType(jsonSelectionType);\n            }\n          },\n          {\n            name: 'entity',\n            type: (schema) => schema.booleanType(),\n            defaultValue: false\n          },\n          {\n            name: 'isSuccess',\n            type: (schema, feature) =>\n                lookupFeatureTypeInSchema<ScalarType>(JSON_SELECTION, 'ScalarType', schema, feature)\n          }\n        ],\n        // We \"compose\" these directives using the  `@join__directive` mechanism,\n        // so they do not need to be composed in the way passing `composes: true`\n        // here implies.\n        composes: false,\n      }),\n    );\n\n    /*\n      directive @source(\n        name: String!\n        http: SourceHTTP!\n        errors: ConnectorErrors\n        isSuccess: JSONSelection\n      ) repeatable on SCHEMA\n    */\n    this.registerDirective(\n      createDirectiveSpecification({\n        name: SOURCE,\n        locations: [DirectiveLocation.SCHEMA],\n        repeatable: true,\n        composes: false,\n        args: [\n          {\n            name: 'name',\n            type: (schema) => new NonNullType(schema.stringType())\n          },\n          {\n            name: 'http',\n            type: (schema, feature) => {\n              const sourceHttpType =\n                  lookupFeatureTypeInSchema<InputObjectType>(SOURCE_HTTP, 'InputObjectType', schema, feature);\n              return new NonNullType(sourceHttpType);\n            }\n          },\n          {\n            name: 'errors',\n            type: (schema, feature) =>\n                lookupFeatureTypeInSchema<InputObjectType>(CONNECTOR_ERRORS, 'InputObjectType', schema, feature)\n          },\n          {\n            name: 'isSuccess',\n            type: (schema, feature) =>\n                lookupFeatureTypeInSchema<ScalarType>(JSON_SELECTION, 'ScalarType', schema, feature)\n          }\n        ]\n      }),\n    );\n  }\n\n  get defaultCorePurpose(): CorePurpose {\n    return 'EXECUTION';\n  }\n}\n\nexport const CONNECT_VERSIONS = new FeatureDefinitions<ConnectSpecDefinition>(\n  connectIdentity,\n)\n  .add(\n    new ConnectSpecDefinition(\n      new FeatureVersion(0, 1),\n      new FeatureVersion(2, 10),\n    ),\n  )\n  .add(\n    new ConnectSpecDefinition(\n      new FeatureVersion(0, 2),\n      new FeatureVersion(2, 10),\n    ),\n  )\n  .add(\n    new ConnectSpecDefinition(\n      new FeatureVersion(0, 3),\n      new FeatureVersion(2, 12),\n    ),\n  )\n  .add(\n    new ConnectSpecDefinition(\n      new FeatureVersion(0, 4),\n      new FeatureVersion(2, 13),\n    ),\n  );\n\nregisterKnownFeature(CONNECT_VERSIONS);\n\n// This function is purposefully declared only in this file and without export.\n//\n// Do NOT add this to \"internals-js/src/directiveAndTypeSpecification.ts\", and\n// do NOT export this function.\n//\n// Subgraph schema building, at this time of writing, does not really support\n// input objects in specs. We did a number of one-off things to support them in\n// the connect spec's case, and it will be non-maintainable/bug-prone to do them\n// again.\n// \n// There's work to be done to support input objects more generally; please see\n// https://github.com/apollographql/federation/pull/3311 for more information. \nfunction createInputObjectTypeSpecification({\n  name,\n  inputFieldsFct,\n}: {\n  name: string,\n  inputFieldsFct: (schema: Schema, feature?: CoreFeature) => InputFieldSpecification[],\n}): TypeSpecification {\n  return {\n    name,\n    checkOrAdd: (schema: Schema, feature?: CoreFeature, asBuiltIn?: boolean) => {\n      const actualName = feature?.typeNameInSchema(name) ?? name;\n      const expectedFields = inputFieldsFct(schema, feature);\n      const existing = schema.type(actualName);\n      if (existing) {\n        let errors = ensureSameTypeKind('InputObjectType', existing);\n        if (errors.length > 0) {\n          return errors;\n        }\n        assert(isInputObjectType(existing), 'Should be an input object type');\n        // The following mimics `ensureSameArguments()`, but with some changes.\n        for (const { name: fieldName, type, defaultValue } of expectedFields) {\n          const existingField = existing.field(fieldName);\n          if (!existingField) {\n            // Not declaring an optional input field is ok: that means you won't\n            // be able to pass a non-default value in your schema, but we allow\n            // you that. But missing a required input field it not ok.\n            if (isNonNullType(type) && defaultValue === undefined) {\n              errors.push(ERRORS.TYPE_DEFINITION_INVALID.err(\n                `Invalid definition for type ${name}: missing required input field \"${fieldName}\"`,\n                { nodes: existing.sourceAST },\n              ));\n            }\n            continue;\n          }\n\n          let existingType = existingField.type!;\n          if (isNonNullType(existingType) && !isNonNullType(type)) {\n            // It's ok to redefine an optional input field as mandatory. For\n            // instance, if you want to force people on your team to provide a\n            // \"maxSize\", you can redefine ConnectBatch as\n            // `input ConnectBatch { maxSize: Int! }` to get validation. In\n            // other words, you are allowed to always pass an input field that\n            // is optional if you so wish.\n            existingType = existingType.ofType;\n          }\n          // Note that while `ensureSameArguments()` allows input type\n          // redefinitions (e.g. allowing users to declare `String` instead of a\n          // custom scalar), this behavior can be confusing/error-prone more\n          // generally, so we forbid this for now. We can relax this later on a\n          // case-by-case basis if needed.\n          //\n          // Further, `ensureSameArguments()` would skip default value checking\n          // if the input type was non-nullable. It's unclear why this is there;\n          // it may have been a mistake due to the impression that non-nullable\n          // inputs can't have default values (they can), or this may have been\n          // to avoid some breaking change, but there's no such limitation in\n          // the case of input objects, so we always validate default values\n          // here.\n          if (!sameType(type, existingType)) {\n            errors.push(ERRORS.TYPE_DEFINITION_INVALID.err(\n              `Invalid definition for type ${name}: input field \"${fieldName}\" should have type \"${type}\" but found type \"${existingField.type!}\"`,\n              { nodes: existingField.sourceAST },\n            ));\n          } else if (!valueEquals(defaultValue, existingField.defaultValue)) {\n            errors.push(ERRORS.TYPE_DEFINITION_INVALID.err(\n              `Invalid definition type ${name}: input field \"${fieldName}\" should have default value ${valueToString(defaultValue)} but found default value ${valueToString(existingField.defaultValue)}`,\n              { nodes: existingField.sourceAST },\n            ));\n          }\n        }\n        for (const existingField of existing.fields()) {\n          // If it's an expected input field, we already validated it. But we\n          // still need to reject unknown input fields.\n          if (!expectedFields.some((field) => field.name === existingField.name)) {\n            errors.push(ERRORS.TYPE_DEFINITION_INVALID.err(\n              `Invalid definition for type ${name}: unknown/unsupported input field \"${existingField.name}\"`,\n              { nodes: existingField.sourceAST },\n            ));\n          }\n        }\n        return errors;\n      } else {\n        const createdType = schema.addType(new InputObjectType(actualName, asBuiltIn));\n        for (const { name, type, defaultValue } of expectedFields) {\n          const newField = createdType.addField(name, type);\n          newField.defaultValue = defaultValue;\n        }\n        return [];\n      }\n    },\n  }\n}\n", "import {\n  DefinitionNode,\n  DirectiveDefinitionNode,\n  DirectiveLocation,\n  DirectiveNode,\n  DocumentNode,\n  FieldDefinitionNode,\n  GraphQLError,\n  InputValueDefinitionNode,\n  parse,\n  SchemaDefinitionNode,\n  Source,\n  TypeNode,\n  ValueNode,\n  NamedTypeNode,\n  ArgumentNode,\n  StringValueNode,\n  ASTNode,\n  SchemaExtensionNode,\n  parseType,\n  Kind,\n  TypeDefinitionNode,\n  TypeExtensionNode,\n  EnumTypeExtensionNode,\n  EnumTypeDefinitionNode,\n} from \"graphql\";\nimport { Maybe } from \"graphql/jsutils/Maybe\";\nimport { valueFromASTUntyped } from \"./values\";\nimport {\n  SchemaBlueprint,\n  Schema,\n  newNamedType,\n  NamedTypeKind,\n  NamedType,\n  SchemaDefinition,\n  SchemaElement,\n  ObjectType,\n  InterfaceType,\n  FieldDefinition,\n  Type,\n  ListType,\n  OutputType,\n  isOutputType,\n  isInputType,\n  InputType,\n  NonNullType,\n  ArgumentDefinition,\n  InputFieldDefinition,\n  DirectiveDefinition,\n  UnionType,\n  InputObjectType,\n  EnumType,\n  Extension,\n  ErrGraphQLValidationFailed,\n  NamedSchemaElement,\n} from \"./definitions\";\nimport { ERRORS, errorCauses, withModifiedErrorNodes } from \"./error\";\nimport { introspectionTypeNames } from \"./introspection\";\nimport { coreFeatureDefinitionIfKnown } from \"./knownCoreFeatures\";\nimport { connectIdentity } from \"./specs/connectSpec\";\n\n\nfunction buildValue(value?: ValueNode): any {\n  return value ? valueFromASTUntyped(value) : undefined;\n}\n\nexport type BuildSchemaOptions = {\n  blueprint?: SchemaBlueprint,\n  validate?: boolean,\n}\n\nexport function buildSchema(source: string | Source, options?: BuildSchemaOptions): Schema {\n  return buildSchemaFromAST(parse(source), options);\n}\n\nexport function buildSchemaFromAST(\n  documentNode: DocumentNode,\n  options?: BuildSchemaOptions,\n): Schema {\n  const errors: GraphQLError[] = [];\n  const schema = new Schema(options?.blueprint);\n\n  // Building schema has to proceed in a particular order due to 2 main constraints:\n  // 1. some elements can refer other elements even if the definition of those referenced elements appear later in the AST.\n  //   And in fact, definitions can be cyclic (a type having field whose type is themselves for instance). Which we\n  //   deal with by first adding empty definition for every type and directive name, because handling any of their content.\n  // 2. we accept \"incomplete\" schema due to `@link` (incomplete in the sense of the graphQL spec). Indeed, `@link` is all\n  //   about importing definitions, but that mean that some element may be _reference_ in the AST without their _definition_\n  //   being in the AST. So we need to ensure we \"import\" those definitions before we try to \"build\" references to them.\n\n\n  // We do a first pass to add all empty types and directives definition. This ensure any reference on one of\n  // those can be resolved in the 2nd pass, regardless of the order of the definitions in the AST.\n  const {\n    directiveDefinitions,\n    typeDefinitions,\n    typeExtensions,\n    schemaDefinitions,\n    schemaExtensions,\n  } = buildNamedTypeAndDirectivesShallow(documentNode, schema, errors);\n\n  // We then build the content of enum types, but excluding their directive _applications. The reason we do this\n  // is that:\n  // 1. we can (enum values are self-contained and cannot reference anything that may need to be imported first; this\n  //   is also why we skip directive applications at that point, as those _may_ reference something that hasn't been imported yet)\n  // 2. this allows the code to handle better the case where the `link__Purpose` enum is provided in the AST despite the `@link`\n  //   _definition_ not being provided. And the reason that is true is that as we later _add_ the `@link` definition, we\n  //   will need to check if `link_Purpose` needs to be added or not, but when it is already present, we check it's definition\n  //   is the expected, but that check will unexpected fail if we haven't finished \"building\" said type definition.\n  // Do note that we can only do that \"early building\" for scalar and enum types (and it happens that there is nothing to do\n  // for scalar because they are the only types whose \"content\" don't reference other types (and again, for definitions\n  // referencing other types, we need to import `@link`-ed definition first). Thankfully, the `@link` directive definition\n  // only rely on a scalar (`Import`) and an enum (`Purpose`) type (if that ever changes, we may have to something more here\n  // to be resilient to weirdly incomplete schema).\n  for (const typeNode of typeDefinitions) {\n    if (typeNode.kind === Kind.ENUM_TYPE_DEFINITION) {\n      buildEnumTypeValuesWithoutDirectiveApplications(typeNode, schema.type(typeNode.name.value) as EnumType);\n    }\n  }\n  for (const typeExtensionNode of typeExtensions) {\n    if (typeExtensionNode.kind === Kind.ENUM_TYPE_EXTENSION) {\n      const toExtend = schema.type(typeExtensionNode.name.value)!;\n      const extension = toExtend.newExtension();\n      extension.sourceAST = typeExtensionNode;\n      buildEnumTypeValuesWithoutDirectiveApplications(typeExtensionNode, schema.type(typeExtensionNode.name.value) as EnumType, extension);\n    }\n  }\n\n  // We then deal with directive definition first. This is mainly for the sake of core schemas: the core schema\n  // handling in `Schema` detects that the schema is a core one when it see the application of `@core(feature: \".../core/...\")`\n  // to the schema element. But that detection necessitates that the corresponding directive definition has been fully\n  // populated (and at this point, we don't really know the name of the `@core` directive since it can be renamed, so\n  // we just handle all directives).\n  // Note that one subtlety is that we skip, for now, directive _applications_ within those directive definitions (we can\n  // have such applications on the arguments). The reason is again core schema related: we haven't yet properly detected\n  // if the schema if a core-schema yet, and for federation subgraphs, we haven't yet \"imported\" federation definitions.\n  // So if one of those directive application was relying on that \"importing\", it would fail at this point. Which is why\n  // directive application is delayed to later in that method.\n  for (const directiveDefinitionNode of directiveDefinitions) {\n    buildDirectiveDefinitionInnerWithoutDirectiveApplications(directiveDefinitionNode, schema.directive(directiveDefinitionNode.name.value)!, errors);\n  }\n  for (const schemaDefinition of schemaDefinitions) {\n    buildSchemaDefinitionInner(schemaDefinition, schema.schemaDefinition, errors);\n  }\n  for (const schemaExtension of schemaExtensions) {\n    buildSchemaDefinitionInner(schemaExtension, schema.schemaDefinition, errors, schema.schemaDefinition.newExtension());\n  }\n\n  // The following block of code is a one-off to support input objects in the\n  // connect spec. It will be non-maintainable/bug-prone to do this again, and\n  // has various limitations/unsupported edge cases already.\n  //\n  // There's work to be done to support input objects more generally; please see\n  // https://github.com/apollographql/federation/pull/3311 for more information.\n  const connectFeature = schema.coreFeatures?.getByIdentity(connectIdentity);\n  const handledConnectTypeNames = new Set<string>();\n  if (connectFeature) {\n    const connectFeatureDefinition =\n      coreFeatureDefinitionIfKnown(connectFeature.url);\n    if (connectFeatureDefinition) {\n      const connectTypeNamesInSchema = new Set(\n        connectFeatureDefinition.typeSpecs()\n          .map(({ name }) => connectFeature.typeNameInSchema(name))\n      );\n      for (const typeNode of typeDefinitions) {\n        if (connectTypeNamesInSchema.has(typeNode.name.value)\n          && typeNode.kind === 'InputObjectTypeDefinition'\n        ) {\n          handledConnectTypeNames.add(typeNode.name.value)\n        } else {\n          continue;\n        }\n        buildNamedTypeInner(typeNode, schema.type(typeNode.name.value)!, schema.blueprint, errors);\n      }\n      for (const typeExtensionNode of typeExtensions) {\n        if (connectTypeNamesInSchema.has(typeExtensionNode.name.value)\n          && typeExtensionNode.kind === 'InputObjectTypeExtension'\n        ) {\n          handledConnectTypeNames.add(typeExtensionNode.name.value)\n        } else {\n          continue;\n        }\n        const toExtend = schema.type(typeExtensionNode.name.value)!;\n        const extension = toExtend.newExtension();\n        extension.sourceAST = typeExtensionNode;\n        buildNamedTypeInner(typeExtensionNode, toExtend, schema.blueprint, errors, extension);\n      }\n    }\n  }\n\n  // The following is a no-op for \"standard\" schema, but for federation subgraphs, this is where we handle the auto-addition\n  // of imported federation directive definitions. That is why we have avoid looking at directive applications within\n  // directive definition earlier: if one of those application was of an imported federation directive, the definition\n  // wouldn't be presence before this point and we'd have triggered an error. After this, we can handle any directive\n  // application safely.\n  errors.push(...schema.blueprint.onDirectiveDefinitionAndSchemaParsed(schema));\n\n  for (const directiveDefinitionNode of directiveDefinitions) {\n    buildDirectiveApplicationsInDirectiveDefinition(directiveDefinitionNode, schema.directive(directiveDefinitionNode.name.value)!, errors);\n  }\n\n  for (const typeNode of typeDefinitions) {\n    if (handledConnectTypeNames.has(typeNode.name.value)) {\n      continue;\n    }\n    buildNamedTypeInner(typeNode, schema.type(typeNode.name.value)!, schema.blueprint, errors);\n  }\n  for (const typeExtensionNode of typeExtensions) {\n    if (handledConnectTypeNames.has(typeExtensionNode.name.value)) {\n      continue;\n    }\n    const toExtend = schema.type(typeExtensionNode.name.value)!;\n    const extension = toExtend.newExtension();\n    extension.sourceAST = typeExtensionNode;\n    buildNamedTypeInner(typeExtensionNode, toExtend, schema.blueprint, errors, extension);\n  }\n\n  // Note: we could try calling `schema.validate()` regardless of errors building the schema and merge the resulting\n  // errors, and there is some subset of cases where this be a tad more convenient (as the user would get all the errors\n  // at once), but in most cases a bunch of the errors thrown by `schema.validate()` would actually be consequences of\n  // the schema not be properly built in the first place and those errors would be confusing to the user. And avoiding\n  // confusing users probably trumps a rare minor convenience.\n  if (errors.length > 0) {\n    throw ErrGraphQLValidationFailed(errors);\n  }\n\n  if (options?.validate ?? true) {\n    schema.validate();\n  }\n\n  return schema;\n}\n\nfunction buildNamedTypeAndDirectivesShallow(documentNode: DocumentNode, schema: Schema, errors: GraphQLError[]): {\n  directiveDefinitions: DirectiveDefinitionNode[],\n  typeDefinitions: TypeDefinitionNode[],\n  typeExtensions: TypeExtensionNode[],\n  schemaDefinitions: SchemaDefinitionNode[],\n  schemaExtensions: SchemaExtensionNode[],\n}  {\n  const directiveDefinitions = [];\n  const typeDefinitions = [];\n  const typeExtensions = [];\n  const schemaDefinitions = [];\n  const schemaExtensions = [];\n  for (const definitionNode of documentNode.definitions) {\n    switch (definitionNode.kind) {\n      case 'OperationDefinition':\n      case 'FragmentDefinition':\n        errors.push(ERRORS.INVALID_GRAPHQL.err(\"Invalid executable definition found while building schema\", { nodes: definitionNode }));\n        continue;\n      case 'SchemaDefinition':\n        schemaDefinitions.push(definitionNode);\n        schema.schemaDefinition.preserveEmptyDefinition = true;\n        break;\n      case 'SchemaExtension':\n        schemaExtensions.push(definitionNode);\n        break;\n      case 'ScalarTypeDefinition':\n      case 'ObjectTypeDefinition':\n      case 'InterfaceTypeDefinition':\n      case 'UnionTypeDefinition':\n      case 'EnumTypeDefinition':\n      case 'InputObjectTypeDefinition':\n        // Like graphql-js, we just silently ignore definitions for introspection types\n        if (introspectionTypeNames.includes(definitionNode.name.value)) {\n          continue;\n        }\n        typeDefinitions.push(definitionNode);\n        let type = schema.type(definitionNode.name.value);\n        // Note that the type may already exists due to an extension having been processed first, but we know we\n        // have seen 2 definitions (which is invalid) if the definition has `preserverEmptyDefnition` already set\n        // since it's only set for definitions, not extensions.\n        // Also note that we allow to redefine built-ins.\n        if (!type || type.isBuiltIn) {\n          type = schema.addType(newNamedType(withoutTrailingDefinition(definitionNode.kind), definitionNode.name.value));\n        } else if (type.preserveEmptyDefinition)  {\n          // Note: we reuse the same error message than graphQL-js would output\n          throw ERRORS.INVALID_GRAPHQL.err(`There can be only one type named \"${definitionNode.name.value}\"`);\n        }\n        // It's possible for the type definition to be empty, because it is valid graphQL to have:\n        //   type Foo\n        //\n        //   extend type Foo {\n        //     bar: Int\n        //   }\n        // and we need a way to distinguish between the case above, and the case where only an extension is provided.\n        // `preserveEmptyDefinition` serves that purpose.\n        // Note that we do this even if the type was already existing because an extension could have been processed\n        // first and have created the definition, but we still want to remember that the definition _does_ exists.\n        type.preserveEmptyDefinition = true;\n        break;\n      case 'ScalarTypeExtension':\n      case 'ObjectTypeExtension':\n      case 'InterfaceTypeExtension':\n      case 'UnionTypeExtension':\n      case 'EnumTypeExtension':\n      case 'InputObjectTypeExtension':\n        // Like graphql-js, we just silently ignore definitions for introspection types\n        if (introspectionTypeNames.includes(definitionNode.name.value)) {\n          continue;\n        }\n        typeExtensions.push(definitionNode);\n        const existing = schema.type(definitionNode.name.value);\n        // In theory, graphQL does not let you have an extension without a corresponding definition. However,\n        // 1) this is validated later, so there is no real reason to do it here and\n        // 2) we actually accept it for federation subgraph (due to federation 1 mostly as it's not strictly needed\n        //   for federation 22, but it is still supported to ease migration there too).\n        // So if the type exists, we simply create it. However, we don't set `preserveEmptyDefinition` since it\n        // is _not_ a definition.\n        if (!existing) {\n          schema.addType(newNamedType(withoutTrailingDefinition(definitionNode.kind), definitionNode.name.value));\n        } else if (existing.isBuiltIn) {\n          throw ERRORS.INVALID_GRAPHQL.err(`Cannot extend built-in type \"${definitionNode.name.value}\"`);\n        }\n        break;\n      case 'DirectiveDefinition':\n        directiveDefinitions.push(definitionNode);\n        schema.addDirectiveDefinition(definitionNode.name.value);\n        break;\n    }\n  }\n  return {\n    directiveDefinitions,\n    typeDefinitions,\n    typeExtensions,\n    schemaDefinitions,\n    schemaExtensions,\n  }\n}\n\ntype NodeWithDirectives = {directives?: ReadonlyArray<DirectiveNode>};\ntype NodeWithDescription = {description?: Maybe<StringValueNode>};\ntype NodeWithArguments = {arguments?: ReadonlyArray<ArgumentNode>};\n\nfunction withoutTrailingDefinition(str: string): NamedTypeKind {\n  const endString = str.endsWith('Definition') ? 'Definition' : 'Extension';\n  return str.slice(0, str.length - endString.length) as NamedTypeKind;\n}\n\nfunction getReferencedType(node: NamedTypeNode, schema: Schema): NamedType {\n  const type = schema.type(node.name.value);\n  if (!type) {\n    throw ERRORS.INVALID_GRAPHQL.err(`Unknown type ${node.name.value}`, { nodes: node });\n  }\n  return type;\n}\n\nfunction withNodeAttachedToError(operation: () => void, node: ASTNode, errors: GraphQLError[]) {\n  try {\n    operation();\n  } catch (e) {\n    const causes = errorCauses(e);\n    if (causes) {\n      for (const cause of causes) {\n        const allNodes: ASTNode | ASTNode[] = cause.nodes ? [node, ...cause.nodes] : node;\n        errors.push(withModifiedErrorNodes(cause, allNodes));\n      }\n    } else {\n      throw e;\n    }\n  }\n}\n\nfunction buildSchemaDefinitionInner(\n  schemaNode: SchemaDefinitionNode | SchemaExtensionNode,\n  schemaDefinition: SchemaDefinition,\n  errors: GraphQLError[],\n  extension?: Extension<SchemaDefinition>\n) {\n  for (const opTypeNode of schemaNode.operationTypes ?? []) {\n    withNodeAttachedToError(\n      () => schemaDefinition.setRoot(opTypeNode.operation, opTypeNode.type.name.value).setOfExtension(extension),\n      opTypeNode,\n      errors,\n    );\n  }\n  schemaDefinition.sourceAST = schemaNode;\n  if ('description' in schemaNode) {\n    schemaDefinition.description = schemaNode.description?.value;\n  }\n  buildAppliedDirectives(schemaNode, schemaDefinition, errors, extension);\n}\n\nfunction buildAppliedDirectives(\n  elementNode: NodeWithDirectives,\n  element: SchemaElement<any, any>,\n  errors: GraphQLError[],\n  extension?: Extension<any>\n) {\n  for (const directive of elementNode.directives ?? []) {\n    withNodeAttachedToError(\n      () => {\n        /**\n         * If we are at the schemaDefinition level of a federation schema, it's possible that some directives\n         * will not be added until after the federation calls completeSchema. In that case, we want to wait\n         * until after completeSchema is called before we try to apply those directives.\n         */\n        if (element !== element.schema().schemaDefinition || directive.name.value === 'link' || !element.schema().blueprint.applyDirectivesAfterParsing()) {\n          const d = element.applyDirective(directive.name.value, buildArgs(directive));\n          d.setOfExtension(extension);\n          d.sourceAST = directive;\n        } else {\n          element.addUnappliedDirective({\n            extension,\n            directive,\n            args: buildArgs(directive),\n            nameOrDef: directive.name.value,\n          });\n        }\n      },\n      directive,\n      errors,\n    );\n  }\n}\n\nfunction buildArgs(argumentsNode: NodeWithArguments): Record<string, any> {\n  const args = Object.create(null);\n  for (const argNode of argumentsNode.arguments ?? []) {\n    args[argNode.name.value] = buildValue(argNode.value);\n  }\n  return args;\n}\n\nfunction buildNamedTypeInner(\n  definitionNode: DefinitionNode & NodeWithDirectives & NodeWithDescription,\n  type: NamedType,\n  blueprint: SchemaBlueprint,\n  errors: GraphQLError[],\n  extension?: Extension<any>,\n) {\n  switch (definitionNode.kind) {\n    case 'EnumTypeDefinition':\n    case 'EnumTypeExtension':\n      // We built enum values earlier in the `buildEnumTypeValuesWithoutDirectiveApplications`, but as the name\n      // of that method implies, we just need to finish building directive applications.\n      const enumType = type as EnumType;\n      for (const enumVal of definitionNode.values ?? []) {\n        buildAppliedDirectives(enumVal, enumType.value(enumVal.name.value)!, errors);\n      }\n      break;\n    case 'ObjectTypeDefinition':\n    case 'ObjectTypeExtension':\n    case 'InterfaceTypeDefinition':\n    case 'InterfaceTypeExtension':\n      const fieldBasedType = type as ObjectType | InterfaceType;\n      for (const fieldNode of definitionNode.fields ?? []) {\n        if (blueprint.ignoreParsedField(type, fieldNode.name.value)) {\n          continue;\n        }\n        const field = fieldBasedType.addField(fieldNode.name.value);\n        field.setOfExtension(extension);\n        buildFieldDefinitionInner(fieldNode, field, errors);\n      }\n      for (const itfNode of definitionNode.interfaces ?? []) {\n        withNodeAttachedToError(\n          () => {\n            const itfName = itfNode.name.value;\n            if (fieldBasedType.implementsInterface(itfName)) {\n              throw ERRORS.INVALID_GRAPHQL.err(`Type \"${type}\" can only implement \"${itfName}\" once.`);\n            }\n            fieldBasedType.addImplementedInterface(itfName).setOfExtension(extension);\n          },\n          itfNode,\n          errors,\n        );\n      }\n      break;\n    case 'UnionTypeDefinition':\n    case 'UnionTypeExtension':\n      const unionType = type as UnionType;\n      for (const namedType of definitionNode.types ?? []) {\n        withNodeAttachedToError(\n          () => {\n            const name = namedType.name.value;\n            if (unionType.hasTypeMember(name)) {\n              throw ERRORS.INVALID_GRAPHQL.err(`Union type \"${unionType}\" can only include type \"${name}\" once.`);\n            }\n            unionType.addType(name).setOfExtension(extension);\n          },\n          namedType,\n          errors,\n        );\n      }\n      break;\n    case 'InputObjectTypeDefinition':\n    case 'InputObjectTypeExtension':\n      const inputObjectType = type as InputObjectType;\n      for (const fieldNode of definitionNode.fields ?? []) {\n        const field = inputObjectType.addField(fieldNode.name.value);\n        field.setOfExtension(extension);\n        buildInputFieldDefinitionInner(fieldNode, field, errors);\n      }\n      break;\n  }\n  buildAppliedDirectives(definitionNode, type, errors, extension);\n  buildDescriptionAndSourceAST(definitionNode, type);\n}\n\nfunction buildEnumTypeValuesWithoutDirectiveApplications(\n  definitionNode: EnumTypeDefinitionNode | EnumTypeExtensionNode,\n  type: EnumType,\n  extension?: Extension<any>,\n) {\n  const enumType = type as EnumType;\n  for (const enumVal of definitionNode.values ?? []) {\n    const v = enumType.addValue(enumVal.name.value);\n    if (enumVal.description) {\n      v.description = enumVal.description.value;\n    }\n    v.setOfExtension(extension);\n  }\n  buildDescriptionAndSourceAST(definitionNode, type);\n}\n\nfunction buildDescriptionAndSourceAST<T extends NamedSchemaElement<T, Schema, unknown>>(\n  definitionNode: DefinitionNode & NodeWithDescription,\n  dest: T,\n) {\n  if (definitionNode.description) {\n    dest.description = definitionNode.description.value;\n  }\n  dest.sourceAST = definitionNode;\n}\n\nfunction buildFieldDefinitionInner(\n  fieldNode: FieldDefinitionNode,\n  field: FieldDefinition<any>,\n  errors: GraphQLError[],\n) {\n  const type = buildTypeReferenceFromAST(fieldNode.type, field.schema());\n  field.type = validateOutputType(type, field.coordinate, fieldNode, errors);\n  for (const inputValueDef of fieldNode.arguments ?? []) {\n    buildArgumentDefinitionInner(inputValueDef, field.addArgument(inputValueDef.name.value), errors, true);\n  }\n  buildAppliedDirectives(fieldNode, field, errors);\n  field.description = fieldNode.description?.value;\n  field.sourceAST = fieldNode;\n}\n\nfunction validateOutputType(type: Type, what: string, node: ASTNode, errors: GraphQLError[]): OutputType | undefined {\n  if (isOutputType(type)) {\n    return type;\n  } else {\n    errors.push(ERRORS.INVALID_GRAPHQL.err(`The type of \"${what}\" must be Output Type but got \"${type}\", a ${type.kind}.`, { nodes: node }));\n    return undefined;\n  }\n}\n\nfunction validateInputType(type: Type, what: string, node: ASTNode, errors: GraphQLError[]): InputType | undefined {\n  if (isInputType(type)) {\n    return type;\n  } else {\n    errors.push(ERRORS.INVALID_GRAPHQL.err(`The type of \"${what}\" must be Input Type but got \"${type}\", a ${type.kind}.`, { nodes: node }));\n    return undefined;\n  }\n}\n\nexport function builtTypeReference(encodedType: string, schema: Schema): Type {\n  return buildTypeReferenceFromAST(parseType(encodedType), schema);\n}\n\nfunction buildTypeReferenceFromAST(typeNode: TypeNode, schema: Schema): Type {\n  switch (typeNode.kind) {\n    case Kind.LIST_TYPE:\n      return new ListType(buildTypeReferenceFromAST(typeNode.type, schema));\n    case Kind.NON_NULL_TYPE:\n      const wrapped = buildTypeReferenceFromAST(typeNode.type, schema);\n      if (wrapped.kind == Kind.NON_NULL_TYPE) {\n        throw ERRORS.INVALID_GRAPHQL.err(`Cannot apply the non-null operator (!) twice to the same type`, { nodes: typeNode });\n      }\n      return new NonNullType(wrapped);\n    default:\n      return getReferencedType(typeNode, schema);\n  }\n}\n\nfunction buildArgumentDefinitionInner(\n  inputNode: InputValueDefinitionNode,\n  arg: ArgumentDefinition<any>,\n  errors: GraphQLError[],\n  includeDirectiveApplication: boolean,\n) {\n  const type = buildTypeReferenceFromAST(inputNode.type, arg.schema());\n  arg.type = validateInputType(type, arg.coordinate, inputNode, errors);\n  arg.defaultValue = buildValue(inputNode.defaultValue);\n  if (includeDirectiveApplication) {\n    buildAppliedDirectives(inputNode, arg, errors);\n  }\n  arg.description = inputNode.description?.value;\n  arg.sourceAST = inputNode;\n}\n\nfunction buildInputFieldDefinitionInner(\n  fieldNode: InputValueDefinitionNode,\n  field: InputFieldDefinition,\n  errors: GraphQLError[],\n) {\n  const type = buildTypeReferenceFromAST(fieldNode.type, field.schema());\n  field.type = validateInputType(type, field.coordinate, fieldNode, errors);\n  field.defaultValue = buildValue(fieldNode.defaultValue);\n  buildAppliedDirectives(fieldNode, field, errors);\n  field.description = fieldNode.description?.value;\n  field.sourceAST = fieldNode;\n}\n\nfunction buildDirectiveDefinitionInnerWithoutDirectiveApplications(\n  directiveNode: DirectiveDefinitionNode,\n  directive: DirectiveDefinition,\n  errors: GraphQLError[],\n) {\n  for (const inputValueDef of directiveNode.arguments ?? []) {\n    buildArgumentDefinitionInner(inputValueDef, directive.addArgument(inputValueDef.name.value), errors, false);\n  }\n  directive.repeatable = directiveNode.repeatable;\n  const locations = directiveNode.locations.map(({ value }) => value as DirectiveLocation);\n  directive.addLocations(...locations);\n  buildDescriptionAndSourceAST(directiveNode, directive);\n}\n\nfunction buildDirectiveApplicationsInDirectiveDefinition(\n  directiveNode: DirectiveDefinitionNode,\n  directive: DirectiveDefinition,\n  errors: GraphQLError[],\n) {\n  for (const inputValueDef of directiveNode.arguments ?? []) {\n    buildAppliedDirectives(inputValueDef, directive.argument(inputValueDef.name.value)!, errors);\n  }\n}\n", "import { ASTNode, ASTVisitor, GraphQLError, introspectionTypes, isTypeDefinitionNode, isTypeExtensionNode, isTypeSystemDefinitionNode, isTypeSystemExtensionNode, specifiedScalarTypes, ValidationContext } from \"graphql\";\nimport { SDLValidationContext } from \"graphql/validation/ValidationContext\";\nimport { didYouMean, suggestionList } from \"../suggestions\";\n\n/**\n * Modified version of the 'Known type names' GraphQL-js rule that allows types to only be defined as \"extensions\".\n */\nexport function KnownTypeNamesInFederationRule(\n  context: ValidationContext | SDLValidationContext,\n): ASTVisitor {\n  const schema = context.getSchema();\n  const existingTypesMap = schema ? schema.getTypeMap() : Object.create(null);\n\n  const definedTypes = Object.create(null);\n  for (const def of context.getDocument().definitions) {\n    // Note: this is the one change  compared to the original GraphQL-js rule: we recore type extensions names as well.\n    if (isTypeDefinitionNode(def) || isTypeExtensionNode(def)) {\n      definedTypes[def.name.value] = true;\n    }\n  }\n\n  const typeNames = Object.keys(existingTypesMap).concat(\n    Object.keys(definedTypes),\n  );\n\n  return {\n    NamedType(node, _1, parent, _2, ancestors) {\n      const typeName = node.name.value;\n      if (!existingTypesMap[typeName] && !definedTypes[typeName]) {\n        const definitionNode = ancestors[2] ?? parent;\n        const isSDL = definitionNode != null && isSDLNode(definitionNode);\n        if (isSDL && isStandardTypeName(typeName)) {\n          return;\n        }\n\n        const suggestedTypes = suggestionList(\n          typeName,\n          isSDL ? standardTypeNames.concat(typeNames) : typeNames,\n        );\n        context.reportError(\n          new GraphQLError(\n            `Unknown type \"${typeName}\".` + didYouMean(suggestedTypes),\n            { nodes: node },\n          ),\n        );\n      }\n    },\n  };\n}\n\nconst standardTypeNames = [...specifiedScalarTypes, ...introspectionTypes].map(\n  (type) => type.name,\n);\n\nfunction isStandardTypeName(typeName: string): boolean {\n  return standardTypeNames.indexOf(typeName) !== -1;\n}\n\nfunction isSDLNode(value: ASTNode | readonly ASTNode[]): boolean {\n  return (\n    !Array.isArray(value) &&\n    (isTypeSystemDefinitionNode(value as ASTNode) || isTypeSystemExtensionNode(value as ASTNode))\n  );\n}\n", "import {\n  ArgumentNode,\n  ASTNode,\n  DefinitionNode,\n  DirectiveNode,\n  DocumentNode,\n  FieldNode,\n  FragmentDefinitionNode,\n  FragmentSpreadNode,\n  InlineFragmentNode,\n  Kind,\n  OperationDefinitionNode,\n  parse,\n  SelectionNode,\n  SelectionSetNode,\n  OperationTypeNode,\n  NameNode,\n} from \"graphql\";\nimport {\n  baseType,\n  Directive,\n  DirectiveTargetElement,\n  FieldDefinition,\n  isCompositeType,\n  isInterfaceType,\n  isNullableType,\n  runtimeTypesIntersects,\n  Schema,\n  SchemaRootKind,\n  VariableCollector,\n  VariableDefinitions,\n  variableDefinitionsFromAST,\n  CompositeType,\n  typenameFieldName,\n  sameDirectiveApplications,\n  isConditionalDirective,\n  isDirectiveApplicationsSubset,\n  isAbstractType,\n  DeferDirectiveArgs,\n  Variable,\n  possibleRuntimeTypes,\n  Type,\n  sameDirectiveApplication,\n  isLeafType,\n  Variables,\n  isObjectType,\n  NamedType,\n  isUnionType,\n  directivesToString,\n  directivesToDirectiveNodes,\n} from \"./definitions\";\nimport { federationMetadata, isFederationDirectiveDefinedInSchema, isInterfaceObjectType } from \"./federation\";\nimport { ERRORS } from \"./error\";\nimport { isSubtype, sameType, typesCanBeMerged } from \"./types\";\nimport { assert, mapKeys, mapValues, MapWithCachedArrays, MultiMap, SetMultiMap } from \"./utils\";\nimport { argumentsEquals, argumentsFromAST, isValidValue, valueToAST, valueToString } from \"./values\";\nimport { v1 as uuidv1 } from 'uuid';\n\nexport const DEFAULT_MIN_USAGES_TO_OPTIMIZE = 2;\n\nfunction validate(condition: any, message: () => string, sourceAST?: ASTNode): asserts condition {\n  if (!condition) {\n    throw ERRORS.INVALID_GRAPHQL.err(message(), { nodes: sourceAST });\n  }\n}\n\nfunction haveSameDirectives<TElement extends OperationElement>(op1: TElement, op2: TElement): boolean {\n  return sameDirectiveApplications(op1.appliedDirectives, op2.appliedDirectives);\n}\n\nabstract class AbstractOperationElement<T extends AbstractOperationElement<T>> extends DirectiveTargetElement<T> {\n  private attachments?: Map<string, string>;\n\n  constructor(\n    schema: Schema,\n    directives?: readonly Directive<any>[],\n  ) {\n    super(schema, directives);\n  }\n\n  collectVariables(collector: VariableCollector) {\n    this.collectVariablesInElement(collector);\n    this.collectVariablesInAppliedDirectives(collector);\n  }\n\n  abstract key(): string;\n\n  abstract asPathElement(): string | undefined;\n\n  abstract rebaseOn(args: { parentType: CompositeType, errorIfCannotRebase: boolean }): T | undefined;\n\n  rebaseOnOrError(parentType: CompositeType): T {\n    return this.rebaseOn({ parentType, errorIfCannotRebase: true })!;\n  }\n\n  abstract withUpdatedDirectives(newDirectives: readonly Directive<any>[]): T;\n\n  protected abstract collectVariablesInElement(collector: VariableCollector): void;\n\n  addAttachment(key: string, value: string) {\n    if (!this.attachments) {\n      this.attachments = new Map();\n    }\n    this.attachments.set(key, value);\n  }\n\n  getAttachment(key: string): string | undefined {\n    return this.attachments?.get(key);\n  }\n\n  protected copyAttachmentsTo(elt: AbstractOperationElement<any>) {\n    if (this.attachments) {\n      for (const [k, v] of this.attachments.entries()) {\n        elt.addAttachment(k, v);\n      }\n    }\n  }\n\n  protected keyForDirectives(): string {\n    return this.appliedDirectives.map((d) => keyForDirective(d)).join(' ');\n  }\n}\n\nexport class Field<TArgs extends {[key: string]: any} = {[key: string]: any}> extends AbstractOperationElement<Field<TArgs>> {\n  readonly kind = 'Field' as const;\n\n  constructor(\n    readonly definition: FieldDefinition<CompositeType>,\n    readonly args?: TArgs,\n    directives?: readonly Directive<any>[],\n    readonly alias?: string,\n  ) {\n    super(definition.schema(), directives);\n  }\n\n  protected collectVariablesInElement(collector: VariableCollector): void {\n    if (this.args) {\n      collector.collectInArguments(this.args);\n    }\n  }\n\n  get name(): string {\n    return this.definition.name;\n  }\n\n  argumentValue(name: string): any {\n    return this.args ? this.args[name] : undefined;\n  }\n\n  responseName(): string {\n    return this.alias ? this.alias : this.name;\n  }\n\n  key(): string {\n    return this.responseName() + this.keyForDirectives();\n  }\n\n  asPathElement(): string {\n    return this.responseName();\n  }\n\n  get parentType(): CompositeType {\n    return this.definition.parent;\n  }\n\n  isLeafField(): boolean {\n    return isLeafType(this.baseType());\n  }\n\n  baseType(): NamedType {\n    return baseType(this.definition.type!);\n  }\n\n  copy(): Field<TArgs> {\n    const newField = new Field<TArgs>(\n      this.definition,\n      this.args,\n      this.appliedDirectives,\n      this.alias,\n    );\n    this.copyAttachmentsTo(newField);\n    return newField;\n  }\n  \n  withUpdatedArguments(newArgs: TArgs): Field<TArgs> {\n    const newField = new Field<TArgs>(\n      this.definition,\n      { ...this.args, ...newArgs },\n      this.appliedDirectives,\n      this.alias,\n    );\n    this.copyAttachmentsTo(newField);\n    return newField;\n  }\n\n  withUpdatedDefinition(newDefinition: FieldDefinition<any>): Field<TArgs> {\n    const newField = new Field<TArgs>(\n      newDefinition,\n      this.args,\n      this.appliedDirectives,\n      this.alias,\n    );\n    this.copyAttachmentsTo(newField);\n    return newField;\n  }\n\n  withUpdatedAlias(newAlias: string | undefined): Field<TArgs> {\n    const newField = new Field<TArgs>(\n      this.definition,\n      this.args,\n      this.appliedDirectives,\n      newAlias,\n    );\n    this.copyAttachmentsTo(newField);\n    return newField;\n  }\n\n  withUpdatedDirectives(newDirectives: readonly Directive<any>[]): Field<TArgs> {\n    const newField = new Field<TArgs>(\n      this.definition,\n      this.args,\n      newDirectives,\n      this.alias,\n    );\n    this.copyAttachmentsTo(newField);\n    return newField;\n  }\n\n  argumentsToNodes(): ArgumentNode[] | undefined {\n    if (!this.args) {\n      return undefined;\n    }\n\n    const entries = Object.entries(this.args);\n    if (entries.length === 0) {\n      return undefined;\n    }\n\n    return entries.map(([n, v]) => {\n      return {\n        kind: Kind.ARGUMENT,\n        name: { kind: Kind.NAME, value: n },\n        value: valueToAST(v, this.definition.argument(n)!.type!)!,\n      };\n    });\n  }\n  \n  selects(\n    definition: FieldDefinition<any>,\n    assumeValid: boolean = false,\n    variableDefinitions?: VariableDefinitions,\n    contextualArguments?: string[],\n  ): boolean {\n    assert(assumeValid || variableDefinitions, 'Must provide variable definitions if validation is needed');\n\n    // We've already validated that the field selects the definition on which it was built.\n    if (definition === this.definition) {\n      return true;\n    }\n\n    // This code largely mirrors validate, so we could generalize that and return false on exception, but this\n    // method is called fairly often and that has been shown to impact performance quite a lot. So a little\n    // bit of code duplication is ok.\n    if (this.name !== definition.name) {\n      return false;\n    }\n\n    // We need to make sure the field has valid values for every non-optional argument.\n    for (const argDef of definition.arguments()) {\n      const appliedValue = this.argumentValue(argDef.name);\n      if (appliedValue === undefined) {\n        if (argDef.defaultValue === undefined && !isNullableType(argDef.type!) && (!contextualArguments || !contextualArguments?.includes(argDef.name))) {\n          return false;\n        }\n      } else {\n        if (!assumeValid && !isValidValue(appliedValue, argDef, variableDefinitions!)) {\n          return false;\n        }\n      }\n    }\n\n    // We also make sure the field application does not have non-null values for field that are not part of the definition.\n    if (!assumeValid && this.args) {\n      for (const [name, value] of Object.entries(this.args)) {\n        if (value !== null && definition.argument(name) === undefined) {\n          return false\n        }\n      }\n    }\n    return true;\n  }\n\n  validate(variableDefinitions: VariableDefinitions, validateContextualArgs: boolean) {\n    validate(this.name === this.definition.name, () => `Field name \"${this.name}\" cannot select field \"${this.definition.coordinate}: name mismatch\"`);\n    \n    \n    // We need to make sure the field has valid values for every non-optional argument.\n    for (const argDef of this.definition.arguments()) {\n      const appliedValue = this.argumentValue(argDef.name);\n\n      let isContextualArg = false;\n      const schema = this.definition.schema();\n      const fromContextDirective = federationMetadata(schema)?.fromContextDirective();\n      if (fromContextDirective && isFederationDirectiveDefinedInSchema(fromContextDirective)) {\n        isContextualArg = argDef.appliedDirectivesOf(fromContextDirective).length > 0;\n      }\n\n      if (appliedValue === undefined) {\n        validate(\n          (isContextualArg && !validateContextualArgs) || argDef.defaultValue !== undefined || isNullableType(argDef.type!),\n          () => `Missing mandatory value for argument \"${argDef.name}\" of field \"${this.definition.coordinate}\" in selection \"${this}\"`);\n      } else {\n        validate(\n          (isContextualArg && !validateContextualArgs) || isValidValue(appliedValue, argDef, variableDefinitions),\n          () => `Invalid value ${valueToString(appliedValue)} for argument \"${argDef.coordinate}\" of type ${argDef.type}`)\n      }\n    }\n\n    // We also make sure the field application does not have non-null values for field that are not part of the definition.\n    if (this.args) {\n      for (const [name, value] of Object.entries(this.args)) {\n        validate(\n          value === null || this.definition.argument(name) !== undefined,\n          () => `Unknown argument \"${name}\" in field application of \"${this.name}\"`);\n      }\n    }\n  }\n\n  rebaseOn({ parentType, errorIfCannotRebase }: { parentType: CompositeType, errorIfCannotRebase: boolean }): Field<TArgs> | undefined {\n    const fieldParent = this.definition.parent;\n    if (parentType === fieldParent) {\n      return this;\n    }\n\n    if (this.name === typenameFieldName) {\n      if (possibleRuntimeTypes(parentType).some((runtimeType) => isInterfaceObjectType(runtimeType))) {\n        validate(\n          !errorIfCannotRebase,\n          () => `Cannot add selection of field \"${this.definition.coordinate}\" to selection set of parent type \"${parentType}\" that is potentially an interface object type at runtime`\n        );\n        return undefined;\n      } else {\n        return this.withUpdatedDefinition(parentType.typenameField()!);\n      }\n    }\n\n    const fieldDef = parentType.field(this.name);\n    const canRebase = this.canRebaseOn(parentType) && fieldDef;\n    if (!canRebase) {\n      validate(\n        !errorIfCannotRebase,\n        () => `Cannot add selection of field \"${this.definition.coordinate}\" to selection set of parent type \"${parentType}\"`\n      );\n      return undefined;\n    }\n\n    return this.withUpdatedDefinition(fieldDef);\n  }\n\n  private canRebaseOn(parentType: CompositeType) {\n    const fieldParentType = this.definition.parent\n    // There is 2 valid cases we want to allow:\n    //  1. either `selectionParent` and `fieldParent` are the same underlying type (same name) but from different underlying schema. Typically,\n    //    happens when we're building subgraph queries but using selections from the original query which is against the supergraph API schema.\n    //  2. or they are not the same underlying type, but the field parent type is from an interface (or an interface object, which is the same\n    //    here), in which case we may be rebasing an interface field on one of the implementation type, which is ok. Note that we don't verify\n    //    that `parentType` is indeed an implementation of `fieldParentType` because it's possible that this implementation relationship exists\n    //    in the supergraph, but not in any of the subgraph schema involved here. So we just let it be. Not that `rebaseOn` will complain anyway\n    //    if the field name simply does not exists in `parentType`.\n    return parentType.name === fieldParentType.name\n      || isInterfaceType(fieldParentType)\n      || isInterfaceObjectType(fieldParentType);\n  }\n\n  typeIfAddedTo(parentType: CompositeType): Type | undefined {\n    const fieldParentType = this.definition.parent;\n    if (parentType == fieldParentType) {\n      return this.definition.type;\n    }\n\n    if (this.name === typenameFieldName) {\n      return parentType.typenameField()?.type;\n    }\n    \n    const returnType = this.canRebaseOn(parentType)\n      ? parentType.field(this.name)?.type\n      : undefined;\n      \n    // If the field has an argument with fromContextDirective on it. We should not rebase it.\n    const fromContextDirective = federationMetadata(parentType.schema())?.fromContextDirective();\n    if (fromContextDirective && isFederationDirectiveDefinedInSchema(fromContextDirective)) {\n      const fieldInParent = parentType.field(this.name);\n      if (fieldInParent && fieldInParent.arguments()\n          .some(arg => arg.appliedDirectivesOf(fromContextDirective).length > 0 && (!this.args || this.args[arg.name] === undefined))\n        ) {\n        return undefined;\n      }  \n    }\n\n    return returnType;\n  }\n\n  hasDefer(): boolean {\n    // @defer cannot be on field at the moment\n    return false;\n  }\n\n  deferDirectiveArgs(): undefined {\n    // @defer cannot be on field at the moment (but exists so we can call this method on any `OperationElement` conveniently)\n    return undefined;\n  }\n\n  withoutDefer(): Field<TArgs> {\n    // @defer cannot be on field at the moment\n    return this;\n  }\n\n  equals(that: OperationElement): boolean {\n    if (this === that) {\n      return true;\n    }\n    return that.kind === 'Field'\n      && this.name === that.name\n      && this.alias === that.alias\n      && (this.args ? that.args && argumentsEquals(this.args, that.args) : !that.args)\n      && haveSameDirectives(this, that);\n  }\n\n  toString(): string {\n    const alias = this.alias ? this.alias + ': ' : '';\n    const entries = this.args ? Object.entries(this.args) : [];\n    const args = entries.length === 0\n      ? ''\n      : '(' + entries.map(([n, v]) => `${n}: ${valueToString(v, this.definition.argument(n)?.type)}`).join(', ') + ')';\n    return alias + this.name + args + this.appliedDirectivesToString();\n  }\n}\n\n/**\n * Computes a string key representing a directive application, so that if 2 directive applications have the same key, then they\n * represent the same application.\n *\n * Note that this is mostly just the `toString` representation of the directive, but for 2 subtlety:\n * 1. for a handful of directives (really just `@defer` for now), we never want to consider directive applications the same, no\n *    matter that the arguments of the directive match, and this for the same reason as documented on the `sameDirectiveApplications`\n *    method in `definitions.ts`.\n * 2. we sort the argument (by their name) before converting them to string, since argument order does not matter in graphQL.\n */\nfunction keyForDirective(\n  directive: Directive<AbstractOperationElement<any>>,\n  directivesNeverEqualToThemselves: string[] = [ 'defer' ],\n): string {\n  if (directivesNeverEqualToThemselves.includes(directive.name)) {\n    return uuidv1();\n  }\n  const entries = Object.entries(directive.arguments()).filter(([_, v]) => v !== undefined);\n  entries.sort(([n1], [n2]) => n1.localeCompare(n2));\n  const args = entries.length == 0 ? '' : '(' + entries.map(([n, v]) => `${n}: ${valueToString(v, directive.argumentType(n))}`).join(', ') + ')';\n  return `@${directive.name}${args}`;\n}\n\nexport class FragmentElement extends AbstractOperationElement<FragmentElement> {\n  readonly kind = 'FragmentElement' as const;\n  readonly typeCondition?: CompositeType;\n  private computedKey: string | undefined;\n\n  constructor(\n    private readonly sourceType: CompositeType,\n    typeCondition?: string | CompositeType,\n    directives?: readonly Directive<any>[],\n  ) {\n    // TODO: we should do some validation here (remove the ! with proper error, and ensure we have some intersection between\n    // the source type and the type condition)\n    super(sourceType.schema(), directives);\n    this.typeCondition = typeCondition !== undefined && typeof typeCondition === 'string'\n      ? this.schema().type(typeCondition)! as CompositeType\n      : typeCondition;\n  }\n\n  protected collectVariablesInElement(_: VariableCollector): void {\n    // Cannot have variables in fragments\n  }\n\n  get parentType(): CompositeType {\n    return this.sourceType;\n  }\n\n  key(): string {\n    if (!this.computedKey) {\n      // The key is such that 2 fragments with the same key within a selection set gets merged together. So the type-condition\n      // is include, but so are the directives.\n      this.computedKey = '...' + (this.typeCondition ? ' on ' + this.typeCondition.name : '') + this.keyForDirectives();\n    }\n    return this.computedKey;\n  }\n\n  castedType(): CompositeType {\n    return this.typeCondition ? this.typeCondition : this.sourceType;\n  }\n\n  asPathElement(): string | undefined {\n    const condition = this.typeCondition;\n    return condition ? `... on ${condition}` : undefined;\n  }\n\n  withUpdatedSourceType(newSourceType: CompositeType): FragmentElement {\n    return this.withUpdatedTypes(newSourceType, this.typeCondition);\n  }\n\n  withUpdatedCondition(newCondition: CompositeType | undefined): FragmentElement {\n    return this.withUpdatedTypes(this.sourceType, newCondition);\n  }\n\n  withUpdatedTypes(newSourceType: CompositeType, newCondition: CompositeType | undefined): FragmentElement {\n    // Note that we pass the type-condition name instead of the type itself, to ensure that if `newSourceType` was from a different\n    // schema (typically, the supergraph) than `this.sourceType` (typically, a subgraph), then the new condition uses the\n    // definition of the proper schema (the supergraph in such cases, instead of the subgraph).\n    const newFragment = new FragmentElement(newSourceType, newCondition?.name, this.appliedDirectives);\n    this.copyAttachmentsTo(newFragment);\n    return newFragment;\n  }\n\n  withUpdatedDirectives(newDirectives: Directive<OperationElement>[]): FragmentElement {\n    const newFragment = new FragmentElement(this.sourceType, this.typeCondition, newDirectives);\n    this.copyAttachmentsTo(newFragment);\n    return newFragment;\n  }\n\n  rebaseOn({ parentType, errorIfCannotRebase }: { parentType: CompositeType, errorIfCannotRebase: boolean }): FragmentElement | undefined {\n    const fragmentParent = this.parentType;\n    const typeCondition = this.typeCondition;\n    if (parentType === fragmentParent) {\n      return this;\n    }\n\n    // This usually imply that the fragment is not from the same sugraph than then selection. So we need\n    // to update the source type of the fragment, but also \"rebase\" the condition to the selection set\n    // schema.\n    const { canRebase, rebasedCondition } = this.canRebaseOn(parentType);\n    if (!canRebase) {\n      validate(\n        !errorIfCannotRebase,\n        () => `Cannot add fragment of condition \"${typeCondition}\" (runtimes: [${possibleRuntimeTypes(typeCondition!)}]) to parent type \"${parentType}\" (runtimes: ${possibleRuntimeTypes(parentType)})`\n      );\n      return undefined;\n    }\n    return this.withUpdatedTypes(parentType, rebasedCondition);\n  }\n\n  private canRebaseOn(parentType: CompositeType): { canRebase: boolean, rebasedCondition?: CompositeType } {\n    if (!this.typeCondition) {\n      return { canRebase: true, rebasedCondition: undefined };\n    }\n\n    const rebasedCondition = parentType.schema().type(this.typeCondition.name);\n    if (!rebasedCondition || !isCompositeType(rebasedCondition) || !runtimeTypesIntersects(parentType, rebasedCondition)) {\n      return { canRebase: false };\n    }\n\n    return { canRebase: true, rebasedCondition };\n  }\n\n  castedTypeIfAddedTo(parentType: CompositeType): CompositeType | undefined {\n    if (parentType == this.parentType) {\n      return this.castedType();\n    }\n\n    const { canRebase, rebasedCondition } = this.canRebaseOn(parentType);\n    return canRebase ? (rebasedCondition ? rebasedCondition : parentType) : undefined;\n  }\n\n  hasDefer(): boolean {\n    return this.hasAppliedDirective('defer');\n  }\n\n  hasStream(): boolean {\n    return this.hasAppliedDirective('stream');\n  }\n\n  deferDirectiveArgs(): DeferDirectiveArgs | undefined {\n    // Note: @defer is not repeatable, so the return array below is either empty, or has a single value.\n    return this.appliedDirectivesOf(this.schema().deferDirective())[0]?.arguments();\n  }\n\n  /**\n   * Returns this fragment element but with any @defer directive on it removed.\n   *\n   * This method will return `undefined` if, upon removing @defer, the fragment has no conditions nor\n   * any remaining applied directives (meaning that it carries no information whatsoever and can be\n   * ignored).\n   */\n  withoutDefer(): FragmentElement | undefined {\n    const deferName = this.schema().deferDirective().name;\n    const updatedDirectives = this.appliedDirectives.filter((d) => d.name !== deferName);\n    if (!this.typeCondition && updatedDirectives.length === 0) {\n      return undefined;\n    }\n\n    if (updatedDirectives.length === this.appliedDirectives.length) {\n      return this;\n    }\n\n    const updated = new FragmentElement(this.sourceType, this.typeCondition, updatedDirectives);\n    this.copyAttachmentsTo(updated);\n    return updated;\n  }\n\n  /**\n   * Returns this fragment element, but it is has a @defer directive, the element is returned with\n   * the @defer \"normalized\".\n   *\n   * See `Operation.withNormalizedDefer` for details on our so-called @defer normalization.\n   */\n  withNormalizedDefer(normalizer: DeferNormalizer): FragmentElement | undefined {\n    const deferArgs = this.deferDirectiveArgs();\n    if (!deferArgs) {\n      return this;\n    }\n\n    let newDeferArgs: DeferDirectiveArgs | undefined = undefined;\n    let conditionVariable: Variable | undefined = undefined;\n    if (deferArgs.if !== undefined) {\n      if (typeof deferArgs.if === 'boolean') {\n        if (deferArgs.if) {\n          // Harcoded `if: true`, remove the `if`\n          newDeferArgs = {\n            ...deferArgs,\n            if: undefined,\n          }\n        } else {\n          // Harcoded `if: false`, remove the @defer altogether\n          return this.withoutDefer();\n        }\n      } else {\n        // `if` on a variable\n        conditionVariable = deferArgs.if;\n      }\n    }\n\n    let label = deferArgs.label;\n    if (!label) {\n      label = normalizer.newLabel();\n      if (newDeferArgs) {\n        newDeferArgs.label = label;\n      } else {\n        newDeferArgs = {\n          ...deferArgs,\n          label,\n        }\n      }\n    }\n\n    // Now that we are sure to have a label, if we had a (non-trivial) condition,\n    // associate it to that label.\n    if (conditionVariable) {\n      normalizer.registerCondition(label, conditionVariable);\n    }\n\n    if (!newDeferArgs) {\n      return this;\n    }\n\n    const deferDirective = this.schema().deferDirective();\n    const updatedDirectives = this.appliedDirectives\n      .filter((d) => d.name !== deferDirective.name)\n      .concat(new Directive<FragmentElement>(deferDirective.name, newDeferArgs));\n\n    const updated = new FragmentElement(this.sourceType, this.typeCondition, updatedDirectives);\n    this.copyAttachmentsTo(updated);\n    return updated;\n  }\n\n  equals(that: OperationElement): boolean {\n    if (this === that) {\n      return true;\n    }\n    return that.kind === 'FragmentElement'\n      && this.typeCondition?.name === that.typeCondition?.name\n      && haveSameDirectives(this, that);\n  }\n\n  toString(): string {\n    return '...' + (this.typeCondition ? ' on ' + this.typeCondition : '') + this.appliedDirectivesToString();\n  }\n}\n\nexport type OperationElement = Field<any> | FragmentElement;\n\nexport type OperationPath = OperationElement[];\n\nexport function operationPathToStringPath(path: OperationPath): string[] {\n  return path\n    .filter((p) => !(p.kind === 'FragmentElement' && !p.typeCondition))\n    .map((p) => p.kind === 'Field' ? p.responseName() : `... on ${p.typeCondition?.coordinate}`);\n}\n\nexport function sameOperationPaths(p1: OperationPath, p2: OperationPath): boolean {\n  if (p1 === p2) {\n    return true;\n  }\n\n  if (p1.length !== p2.length) {\n    return false;\n  }\n  for (let i = 0; i < p1.length; i++) {\n    if (!p1[i].equals(p2[i])) {\n      return false;\n    }\n  }\n  return true;\n}\n\n/**\n * Returns all the \"conditional\" directive applications (`@skip` and `@include`) in the provided path.\n */\nexport function conditionalDirectivesInOperationPath(path: OperationPath): Directive<any, any>[] {\n  return path.map((e) => e.appliedDirectives).flat().filter((d) => isConditionalDirective(d));\n}\n\nexport function concatOperationPaths(head: OperationPath, tail: OperationPath): OperationPath {\n  // While this is mainly a simple array concatenation, we optimize slightly by recognizing if the\n  // tail path starts by a fragment selection that is useless given the end of the head path.\n  if (head.length === 0) {\n    return tail;\n  }\n  if (tail.length === 0) {\n    return head;\n  }\n  const lastOfHead = head[head.length - 1];\n  const conditionals = conditionalDirectivesInOperationPath(head);\n  let firstOfTail = tail[0];\n  // Note that in practice, we may be able to eliminate a few elements at the beginning of the path\n  // due do conditionals ('@skip' and '@include'). Indeed, a (tail) path crossing multiple conditions\n  // may start with: [ ... on X @include(if: $c1), ... on X @ksip(if: $c2), (...)], but if `head`\n  // already ends on type `X` _and_ both the conditions on `$c1` and `$c2` are alredy found on `head`,\n  // then we can remove both fragments in `tail`.\n  while (firstOfTail && isUselessFollowupElement(lastOfHead, firstOfTail, conditionals)) {\n    tail = tail.slice(1);\n    firstOfTail = tail[0];\n  }\n  return head.concat(tail);\n}\n\nfunction isUselessFollowupElement(first: OperationElement, followup: OperationElement, conditionals: Directive<any, any>[]): boolean {\n  const typeOfFirst = first.kind === 'Field'\n    ? first.baseType()\n    : first.typeCondition;\n\n  // The followup is useless if it's a fragment (with no directives we would want to preserve) whose type\n  // is already that of the first element (or a supertype).\n  return !!typeOfFirst\n    && followup.kind === 'FragmentElement'\n    && !!followup.typeCondition\n    && (followup.appliedDirectives.length === 0 || isDirectiveApplicationsSubset(conditionals, followup.appliedDirectives))\n    && isSubtype(followup.typeCondition, typeOfFirst);\n}\n\nexport type RootOperationPath = {\n  rootKind: SchemaRootKind,\n  path: OperationPath\n}\n\n// Computes for every fragment, which other fragments use it (so the reverse of it's dependencies, the other fragment it uses).\nfunction computeFragmentsDependents(fragments: NamedFragments): SetMultiMap<string, string> {\n  const reverseDeps = new SetMultiMap<string, string>();\n  for (const fragment of fragments.definitions()) {\n    for (const dependency of fragment.fragmentUsages().keys()) {\n      reverseDeps.add(dependency, fragment.name);\n    }\n  }\n  return reverseDeps;\n}\n\nfunction clearKeptFragments(\n  usages: Map<string, number>,\n  fragments: NamedFragments,\n  minUsagesToOptimize: number\n) {\n  // `toCheck` will contain only fragments that we know we want to keep (but haven't handled/removed from `usages` yet).\n  let toCheck = Array.from(usages.entries()).filter(([_, count]) => count >= minUsagesToOptimize).map(([name, _]) => name);\n  while (toCheck.length > 0) {\n    const newToCheck = [];\n    for (const name of toCheck) {\n      // We \"keep\" that fragment so clear it.\n      usages.delete(name);\n      // But as it is used, bump the usage for every fragment it uses.\n      const ownUsages = fragments.get(name)!.fragmentUsages();\n      for (const [otherName, otherCount] of ownUsages.entries()) {\n        const prevCount = usages.get(otherName);\n        // We're interested in fragment not in `usages` anymore.\n        if (prevCount !== undefined) {\n          const newCount = prevCount + otherCount;\n          usages.set(otherName, newCount);\n          if (prevCount < minUsagesToOptimize && newCount >= minUsagesToOptimize) {\n            newToCheck.push(otherName);\n          }\n        }\n      }\n    }\n    toCheck = newToCheck;\n  }\n}\n\n// Checks, in `selectionSet`, which fragments (of `fragments`) are used at least `minUsagesToOptimize` times.\n// Returns the updated set of fragments containing only the fragment definitions with usage above our threshold,\n// and `undefined` or `null` if no such fragment meets said threshold. When this method returns `null`, it\n// additionally means that no fragments are use at all in `selectionSet` (and so `undefined` means that\n// \"some\" fragments are used in `selectionSet`, but just none of them is used at least `minUsagesToOptimize`\n// times).\nfunction computeFragmentsToKeep(\n  selectionSet: SelectionSet,\n  fragments: NamedFragments,\n  minUsagesToOptimize: number\n): NamedFragments | undefined | null {\n  // We start by collecting the usages within the selection set.\n  const usages = new Map<string, number>();\n  selectionSet.collectUsedFragmentNames(usages);\n\n  // If we have no fragment in the selection set, then it's simple, we just don't keep any fragments.\n  if (usages.size === 0) {\n    return null;\n  }\n\n  // We're going to remove fragments from usages as we categorize them as kept or expanded, so we\n  // first ensure that it has entries for every fragment, default to 0.\n  for (const fragment of fragments.definitions()) {\n    if (usages.get(fragment.name) === undefined) {\n      usages.set(fragment.name, 0);\n    }\n  }\n\n  // At this point, `usages` contains the usages of fragments \"in the selection\". From that, we want\n  // to decide which fragment to \"keep\", and which to re-expand. But there is 2 subtlety:\n  // 1. when we decide to keep some fragment F, then we should could it's own usages of other fragments. That\n  //  is, if a fragment G is use once in the selection, but also use once in a fragment F that we\n  //  keep, then the usages for G is really 2 (but if F is unused, then we don't want to count\n  //  it's usage of G for instance).\n  // 2. when we decide to expand a fragment, then this also impact the usages of other fragments it\n  //  uses, as those gets \"inlined\" into the selection. But that also mean we have to be careful\n  //  of the order in which we pick fragments to expand. Say we have:\n  //  ```graphql\n  //   query {\n  //      ...F1\n  //   }\n  //\n  //   fragment F1 {\n  //     a { ...F2 }\n  //     b { ...F2 }\n  //   }\n  //\n  //   fragment F2 {\n  //      // something\n  //   }\n  //  ```\n  //  then at this point where we've only counted usages in the query selection, `usages` will be\n  //  `{ F1: 1, F2: 0 }`. But we do not want to expand _both_ F1 and F2. Instead, we want to expand\n  //  F1 first, and then realize that this increases F2 usages to 2, which means we stop there and keep F2.\n  //  Generalizing this, it means we want to first pick up fragments to expand that are _not_ used by any\n  //  other fragments that may be expanded.\n  const reverseDependencies = computeFragmentsDependents(fragments);\n  // We'll add to `toExpand` fragment we will definitively expand.\n  const toExpand = new Set<string>;\n  let shouldContinue = true;\n  while (shouldContinue) {\n    // We'll do an iteration, but if we make no progress, we won't continue (we don't want to loop forever).\n    shouldContinue = false;\n    clearKeptFragments(usages, fragments, minUsagesToOptimize);\n    for (const name of mapKeys(usages)) {\n      // Note that we modify `usages` as we iterate it, so 1) we use `mapKeys` above which copy into a list and 2)\n      // we get the `count` manually instead of relying on (possibly outdated) entries.\n      const count = usages.get(name)!;\n      // A unused fragment is not technically expanded, it is just removed and we can ignore for now (it's count\n      // count increase later but ...).\n      if (count === 0) {\n        continue;\n      }\n\n      // If we find a fragment to keep, it means some fragment we expanded earlier in this iteration bump this\n      // one count. We unsure `shouldContinue` is set so `clearKeptFragments` is called again, but let that\n      // method deal with it otherwise.\n      if (count >= minUsagesToOptimize) {\n        shouldContinue = true;\n        break;\n      }\n\n      const fragmentsUsingName = reverseDependencies.get(name);\n      if (!fragmentsUsingName || [...fragmentsUsingName].every((fragName) => toExpand.has(fragName) || !usages.get(fragName))) {\n        // This fragment is not used enough, and is only used by fragments we keep, so we\n        // are guaranteed that expanding another fragment will not increase its usage. So\n        // we definitively expand it.\n        toExpand.add(name);\n        usages.delete(name);\n\n        // We've added to `toExpand`, so it's worth redoing another iteration\n        // after that to see if something changes.\n        shouldContinue = true;\n\n        // Now that we expand it, we should bump the usage for every fragment it uses.\n        const nameUsages = fragments.get(name)!.fragmentUsages();\n        for (const [otherName, otherCount] of nameUsages.entries()) {\n          const prev = usages.get(otherName);\n          // Note that if `otherName` is not part of usages, it means it's a fragment we\n          // already decided to keep/expand, so we just ignore it.\n          if (prev !== undefined) {\n            usages.set(otherName, prev + count * otherCount);\n          }\n        }\n      }\n    }\n  }\n\n  // Finally, we know that to expand, which is `toExpand` plus whatever remains in `usage` (typically\n  // genuinely unused fragments).\n  for (const name of usages.keys()) {\n    toExpand.add(name);\n  }\n\n  return toExpand.size === 0 ? fragments : fragments.filter((f) => !toExpand.has(f.name));\n}\n\nexport class Operation extends DirectiveTargetElement<Operation> {\n  constructor(\n    schema: Schema,\n    readonly rootKind: SchemaRootKind,\n    readonly selectionSet: SelectionSet,\n    readonly variableDefinitions: VariableDefinitions,\n    readonly fragments?: NamedFragments,\n    readonly name?: string,\n    directives: readonly Directive<any>[] = []) {\n      super(schema, directives);\n  }\n\n  // Returns a copy of this operation with the provided updated selection set.\n  // Note that this method assumes that the existing `this.fragments` is still appropriate.\n  private withUpdatedSelectionSet(newSelectionSet: SelectionSet): Operation {\n    if (this.selectionSet === newSelectionSet) {\n      return this;\n    }\n\n    return new Operation(\n      this.schema(),\n      this.rootKind,\n      newSelectionSet,\n      this.variableDefinitions,\n      this.fragments,\n      this.name,\n      this.appliedDirectives,\n    );\n  }\n  \n  private collectUndefinedVariablesFromFragments(fragments: NamedFragments): Variable[] {\n    const collector = new VariableCollector();\n    for (const namedFragment of fragments.definitions()) {\n      namedFragment.selectionSet.usedVariables().forEach(v => {\n        if (!this.variableDefinitions.definition(v)) {\n          collector.add(v);\n        }\n      });\n    }\n    return collector.variables();\n  }\n\n  // Returns a copy of this operation with the provided updated selection set and fragments.\n  private withUpdatedSelectionSetAndFragments(\n    newSelectionSet: SelectionSet,\n    newFragments: NamedFragments | undefined,\n    allAvailableVariables?: VariableDefinitions,\n  ): Operation {\n    if (this.selectionSet === newSelectionSet && newFragments === this.fragments) {\n      return this;\n    }\n    \n    let newVariableDefinitions = this.variableDefinitions;\n    if (allAvailableVariables && newFragments) {\n      const undefinedVariables = this.collectUndefinedVariablesFromFragments(newFragments);\n      if (undefinedVariables.length > 0) {\n        newVariableDefinitions = new VariableDefinitions();\n        newVariableDefinitions.addAll(this.variableDefinitions);\n        newVariableDefinitions.addAll(allAvailableVariables.filter(undefinedVariables));\n      }\n    }\n\n    return new Operation(\n      this.schema(),\n      this.rootKind,\n      newSelectionSet,\n      newVariableDefinitions,\n      newFragments,\n      this.name,\n      this.appliedDirectives,\n    );\n  }\n\n  optimize(\n    fragments?: NamedFragments,\n    minUsagesToOptimize: number = DEFAULT_MIN_USAGES_TO_OPTIMIZE,\n    allAvailableVariables?: VariableDefinitions,\n  ): Operation {\n    assert(minUsagesToOptimize >= 1, `Expected 'minUsagesToOptimize' to be at least 1, but got ${minUsagesToOptimize}`)\n    if (!fragments || fragments.isEmpty()) {\n      return this;\n    }\n\n    let optimizedSelection = this.selectionSet.optimize(fragments);\n    if (optimizedSelection === this.selectionSet) {\n      return this;\n    }\n\n    let finalFragments = computeFragmentsToKeep(optimizedSelection, fragments, minUsagesToOptimize);\n\n    // If there is fragment usages and we're not keeping all fragments, we need to expand fragments.\n    if (finalFragments !== null && finalFragments?.size !== fragments.size) {\n      // Note that optimizing all fragments to potentially re-expand some is not entirely optimal, but it's unclear\n      // how to do otherwise, and it probably don't matter too much in practice (we only call this optimization\n      // on the final computed query plan, so not a very hot path; plus in most cases we won't even reach that\n      // point either because there is no fragment, or none will have been optimized away so we'll exit above).\n      optimizedSelection = optimizedSelection.expandFragments(finalFragments);\n\n      // Expanding fragments could create some \"inefficiencies\" that we wouldn't have if we hadn't re-optimized\n      // the fragments to de-optimize it later, so we do a final \"normalize\" pass to remove those.\n      optimizedSelection = optimizedSelection.normalize({ parentType: optimizedSelection.parentType });\n\n      // And if we've expanded some fragments but kept others, then it's not 100% impossible that some\n      // fragment was used multiple times in some expanded fragment(s), but that post-expansion all of\n      // it's usages are \"dead\" branches that are removed by the final `normalize`. In that case though,\n      // we need to ensure we don't include the now-unused fragment in the final list of fragments.\n      // TODO: remark that the same reasoning could leave a single instance of a fragment usage, so if\n      // we really really want to never have less than `minUsagesToOptimize`, we could do some loop of\n      // `expand then normalize` unless all fragments are provably used enough. We don't bother, because\n      // leaving this is not a huge deal and it's not worth the complexity, but it could be that we can\n      // refactor all this later to avoid this case without additional complexity.\n      if (finalFragments) {\n        // Note that removing a fragment might lead to another fragment being unused, so we need to iterate\n        // until there is nothing more to remove, or we're out of fragments.\n        let beforeRemoval: NamedFragments;\n        do {\n          beforeRemoval = finalFragments;\n          const usages = new Map<string, number>();\n          // Collecting all usages, both in the selection and within other fragments.\n          optimizedSelection.collectUsedFragmentNames(usages);\n          finalFragments.collectUsedFragmentNames(usages);\n          finalFragments = finalFragments.filter((f) => (usages.get(f.name) ?? 0) > 0);\n        } while (finalFragments && finalFragments.size < beforeRemoval.size);\n      }\n    }\n\n    return this.withUpdatedSelectionSetAndFragments(\n      optimizedSelection,\n      finalFragments ?? undefined,\n      allAvailableVariables,\n    );\n  }\n\n  generateQueryFragments(): Operation {\n    const [minimizedSelectionSet, fragments] = this.selectionSet.minimizeSelectionSet();\n    \n    return new Operation(\n      this.schema(),\n      this.rootKind,\n      minimizedSelectionSet,\n      this.variableDefinitions,\n      fragments,\n      this.name,\n      this.appliedDirectives,\n    );\n  }\n\n  expandAllFragments(): Operation {\n    // We clear up the fragments since we've expanded all.\n    // Also note that expanding fragment usually generate unecessary fragments/inefficient selections, so it\n    // basically always make sense to normalize afterwards. Besides, fragment reuse (done by `optimize`) rely\n    // on the fact that its input is normalized to work properly, so all the more reason to do it here.\n    const expanded = this.selectionSet.expandFragments();\n    return this.withUpdatedSelectionSetAndFragments(expanded.normalize({ parentType: expanded.parentType }), undefined);\n  }\n\n  normalize(): Operation {\n    return this.withUpdatedSelectionSet(this.selectionSet.normalize({ parentType: this.selectionSet.parentType }));\n  }\n\n  /**\n   * Returns this operation but potentially modified so all/some of the @defer applications have been removed.\n   *\n   * @param labelsToRemove - If provided, then only the `@defer` applications with labels in the provided\n   * set will be remove. Other `@defer` applications will be untouched. If `undefined`, then all `@defer`\n   * applications are removed.\n   */\n  withoutDefer(labelsToRemove?: Set<string>): Operation {\n    return this.withUpdatedSelectionSet(this.selectionSet.withoutDefer(labelsToRemove));\n  }\n\n  /**\n   * Returns this operation but modified to \"normalize\" all the @defer applications.\n   *\n   * \"Normalized\" in this context means that all the `@defer` application in the\n   * resulting operation will:\n   *  - have a (unique) label. Which imply that this method generates label for\n   *    any `@defer` not having a label.\n   *  - have a non-trivial `if` condition, if any. By non-trivial, we mean that\n   *    the condition will be a variable and not an hard-coded `true` or `false`.\n   *    To do this, this method will remove the condition of any `@defer` that\n   *    has `if: true`, and will completely remove any `@defer` application that\n   *    has `if: false`.\n   */\n  withNormalizedDefer(): {\n    operation: Operation,\n    hasDefers: boolean,\n    assignedDeferLabels: Set<string>,\n    deferConditions: SetMultiMap<string, string>,\n  } {\n    const normalizer = new DeferNormalizer();\n    const { hasDefers, hasNonLabelledOrConditionalDefers } = normalizer.init(this.selectionSet);\n    let updatedOperation: Operation = this;\n    if (hasNonLabelledOrConditionalDefers) {\n      updatedOperation = this.withUpdatedSelectionSet(this.selectionSet.withNormalizedDefer(normalizer));\n    }\n    return {\n      operation: updatedOperation,\n      hasDefers,\n      assignedDeferLabels: normalizer.assignedLabels,\n      deferConditions: normalizer.deferConditions,\n    };\n  }\n\n  collectDefaultedVariableValues(): Record<string, any> {\n    const defaultedVariableValues: Record<string, any> = {};\n    for (const { variable, defaultValue } of this.variableDefinitions.definitions()) {\n      if (defaultValue !== undefined) {\n        defaultedVariableValues[variable.name] = defaultValue;\n      }\n    }\n    return defaultedVariableValues;\n  }\n\n  toString(expandFragments: boolean = false, prettyPrint: boolean = true): string {\n    return this.selectionSet.toOperationString(this.rootKind, this.variableDefinitions, this.fragments, this.name, this.appliedDirectives, expandFragments, prettyPrint);\n  }\n}\n\nexport type FragmentRestrictionAtType = { selectionSet: SelectionSet, validator?: FieldsConflictValidator };\n\nexport class NamedFragmentDefinition extends DirectiveTargetElement<NamedFragmentDefinition> {\n  private _selectionSet: SelectionSet | undefined;\n\n  // Lazily computed cache of the expanded selection set.\n  private _expandedSelectionSet: SelectionSet | undefined;\n\n  private _fragmentUsages: Map<string, number> | undefined;\n  private _includedFragmentNames: Set<string> | undefined;\n\n  private readonly expandedSelectionSetsAtTypesCache = new Map<string, FragmentRestrictionAtType>();\n\n  constructor(\n    schema: Schema,\n    readonly name: string,\n    readonly typeCondition: CompositeType,\n    directives?: Directive<NamedFragmentDefinition>[],\n  ) {\n    super(schema, directives);\n  }\n\n  setSelectionSet(selectionSet: SelectionSet): NamedFragmentDefinition {\n    assert(!this._selectionSet, 'Attempting to set the selection set of a fragment definition already built')\n    // We set the selection set post-construction to simplify the handling of fragments that use other fragments,\n    // but let's make sure we've properly used the fragment type condition as parent type of the selection set, as we should.\n    assert(selectionSet.parentType === this.typeCondition, `Fragment selection set parent is ${selectionSet.parentType} differs from the fragment condition type ${this.typeCondition}`);\n    this._selectionSet = selectionSet;\n    return this;\n  }\n\n  get selectionSet(): SelectionSet {\n    assert(this._selectionSet, () => `Trying to access fragment definition ${this.name} before it is fully built`);\n    return this._selectionSet;\n  }\n\n  withUpdatedSelectionSet(newSelectionSet: SelectionSet): NamedFragmentDefinition {\n    return new NamedFragmentDefinition(this.schema(), this.name, this.typeCondition).setSelectionSet(newSelectionSet);\n  }\n\n  fragmentUsages(): ReadonlyMap<string, number> {\n    if (!this._fragmentUsages) {\n      this._fragmentUsages = new Map();\n      this.selectionSet.collectUsedFragmentNames(this._fragmentUsages);\n    }\n    return this._fragmentUsages;\n  }\n\n  collectUsedFragmentNames(collector: Map<string, number>) {\n    const usages = this.fragmentUsages();\n    for (const [name, count] of usages.entries()) {\n      const prevCount = collector.get(name);\n      collector.set(name, prevCount ? prevCount + count : count);\n    }\n  }\n\n  collectVariables(collector: VariableCollector) {\n    this.selectionSet.collectVariables(collector);\n    this.collectVariablesInAppliedDirectives(collector);\n  }\n\n  toFragmentDefinitionNode() : FragmentDefinitionNode {\n    return {\n      kind: Kind.FRAGMENT_DEFINITION,\n      name: {\n        kind: Kind.NAME,\n        value: this.name\n      },\n      typeCondition: {\n        kind: Kind.NAMED_TYPE,\n        name: {\n          kind: Kind.NAME,\n          value: this.typeCondition.name\n        }\n      },\n      selectionSet: this.selectionSet.toSelectionSetNode()\n    };\n  }\n\n  /**\n   * Whether this fragment may apply _directly_ at the provided type, meaning that the fragment sub-selection\n   * (_without_ the fragment condition, hence the \"directly\") can be normalized at `type` and this without\n   * \"widening\" the runtime types to types that do not intersect the fragment condition.\n   *\n   * For that to be true, we need one of this to be true:\n   * 1. the runtime types of the fragment condition must be at least as general as those of the provided `type`.\n   *    Otherwise, putting it at `type` without its condition would \"generalize\" more than the fragment meant to (and\n   *    so we'd \"widen\" the runtime types more than what the query meant to.\n   * 2. either `type` and `this.typeCondition` are equal, or `type` is an object or `this.typeCondition` is a union\n   *    The idea is that, assuming our 1st point, then:\n   *    - if both are equal, things works trivially.\n   *    - if `type` is an object, `this.typeCondition` is either the same object, or a union/interface for which\n   *      type is a valid runtime. In all case, anything valid on `this.typeCondition` would apply to `type` too.\n   *    - if `this.typeCondition` is a union, then it's selection can only have fragments at top-level\n   *      (no fields save for `__typename`), and normalising is always fine with top-level fragments.\n   *    But in any other case, both types must be abstract (if `this.typeCondition` is an object, the 1st condition\n   *    imply `type` can only be the same type) and we're in one of:\n   *    - `type` and `this.typeCondition` are both different interfaces (that intersect but are different).\n   *    - `type` is aunion and `this.typeCondition` an interface.\n   *    And in both cases, since `this.typeCondition` is an interface, the fragment selection set may have field selections\n   *    on that interface, and those fields may not be valid for `type`.\n   *\n   * @param type - the type at which we're looking at applying the fragment\n   */\n  canApplyDirectlyAtType(type: CompositeType): boolean {\n    if (sameType(type, this.typeCondition)) {\n      return true;\n    }\n\n    // No point computing runtime types if the condition is an object (it can never cover all of\n    // the runtimes of `type` unless it's the same type, which is already covered).\n    if (!isAbstractType(this.typeCondition)) {\n      return false;\n    }\n\n    const conditionRuntimes = possibleRuntimeTypes(this.typeCondition);\n    const typeRuntimes = possibleRuntimeTypes(type);\n    // The fragment condition must be at least as general as the provided type (in other words, all of the\n    // runtimes of `type` must be in `conditionRuntimes`).\n    // Note: the `length` test is technically redundant, but just avoid the more costly sub-set check if we\n    // can cheaply show it's unnecessary.\n    if (conditionRuntimes.length < typeRuntimes.length\n      || !typeRuntimes.every((t1) => conditionRuntimes.some((t2) => sameType(t1, t2)))) {\n      return false;\n    }\n\n    return isObjectType(type) || isUnionType(this.typeCondition);\n  }\n\n  private expandedSelectionSet(): SelectionSet {\n    if (!this._expandedSelectionSet) {\n      this._expandedSelectionSet = this.selectionSet.expandFragments();\n    }\n    return this._expandedSelectionSet;\n  }\n\n  /**\n   * This methods *assumes* that `this.canApplyDirectlyAtType(type)` is `true` (and may crash if this is not true), and returns\n   * a version fo this named fragment selection set that corresponds to the \"expansion\" of this named fragment at `type`\n   *\n   * The overall idea here is that if we have an interface I with 2 implementations T1 and T2, and we have a fragment like:\n   * ```graphql\n   *  fragment X on I {\n   *    ... on T1 {\n   *      <stuff>\n   *    }\n   *    ... on T2 {\n   *      <stuff>\n   *    }\n   *  }\n   * ```\n   * then if the current type is `T1`, then all we care about matching for this fragment is the `... on T1` part, and this method gives\n   * us that part.\n   */\n  expandedSelectionSetAtType(type: CompositeType): FragmentRestrictionAtType {\n    let cached = this.expandedSelectionSetsAtTypesCache.get(type.name);\n    if (!cached) {\n      cached = this.computeExpandedSelectionSetAtType(type);\n      this.expandedSelectionSetsAtTypesCache.set(type.name, cached);\n    }\n    return cached;\n  }\n\n  private computeExpandedSelectionSetAtType(type: CompositeType): FragmentRestrictionAtType {\n    const expandedSelectionSet = this.expandedSelectionSet();\n    const selectionSet = expandedSelectionSet.normalize({ parentType: type });\n\n    if (!isObjectType(this.typeCondition)) {\n      // When the type condition of the fragment is not an object type, the `FieldsInSetCanMerge` rule is more\n      // restrictive and any fields can create conflicts. Thus, we have to use the full validator in this case.\n      // (see https://github.com/graphql/graphql-spec/issues/1085 for details.)\n      const validator = FieldsConflictValidator.build(expandedSelectionSet);\n      return { selectionSet, validator };\n    }\n\n    // Note that `trimmed` is the difference of 2 selections that may not have been normalized on the same parent type,\n    // so in practice, it is possible that `trimmed` contains some of the selections that `selectionSet` contains, but\n    // that they have been simplified in `selectionSet` in such a way that the `minus` call does not see it. However,\n    // it is not trivial to deal with this, and it is fine given that we use trimmed to create the validator because\n    // we know the non-trimmed parts cannot create field conflict issues so we're trying to build a smaller validator,\n    // but it's ok if trimmed is not as small as it theoretically can be.\n    const trimmed = expandedSelectionSet.minus(selectionSet);\n    const validator = trimmed.isEmpty() ? undefined : FieldsConflictValidator.build(trimmed);\n    return { selectionSet, validator };\n  }\n\n  /**\n   * Whether this fragment fully includes `otherFragment`.\n   * Note that this is slightly different from `this` \"using\" `otherFragment` in that this essentially checks\n   * if the full selection set of `otherFragment` is contained by `this`, so this only look at \"top-level\" usages.\n   *\n   * Note that this is guaranteed to return `false` if passed `this` name.\n   */\n  includes(otherFragment: string): boolean {\n    if (this.name === otherFragment) {\n      return false;\n    }\n\n    if (!this._includedFragmentNames) {\n      this._includedFragmentNames = this.computeIncludedFragmentNames();\n    }\n    return this._includedFragmentNames.has(otherFragment);\n  }\n\n  private computeIncludedFragmentNames(): Set<string> {\n    const included = new Set<string>();\n    for (const selection of this.selectionSet.selections()) {\n      if (selection instanceof FragmentSpreadSelection) {\n        included.add(selection.namedFragment.name);\n      }\n    }\n    return included;\n  }\n\n  toString(indent?: string): string {\n    return `fragment ${this.name} on ${this.typeCondition}${this.appliedDirectivesToString()} ${this.selectionSet.toString(false, true, indent)}`;\n  }\n}\n\n\nexport class NamedFragments {\n  private readonly fragments = new MapWithCachedArrays<string, NamedFragmentDefinition>();\n\n  isEmpty(): boolean {\n    return this.size === 0;\n  }\n\n  get size(): number {\n    return this.fragments.size;\n  }\n\n  names(): readonly string[] {\n    return this.fragments.keys();\n  }\n\n  add(fragment: NamedFragmentDefinition) {\n    if (this.fragments.has(fragment.name)) {\n      throw ERRORS.INVALID_GRAPHQL.err(`Duplicate fragment name '${fragment}'`);\n    }\n    this.fragments.set(fragment.name, fragment);\n  }\n\n  addIfNotExist(fragment: NamedFragmentDefinition) {\n    if (!this.fragments.has(fragment.name)) {\n      this.fragments.set(fragment.name, fragment);\n    }\n  }\n\n  maybeApplyingDirectlyAtType(type: CompositeType): NamedFragmentDefinition[] {\n    return this.fragments.values().filter(f => f.canApplyDirectlyAtType(type));\n  }\n\n  get(name: string): NamedFragmentDefinition | undefined {\n    return this.fragments.get(name);\n  }\n\n  has(name: string): boolean {\n    return this.fragments.has(name);\n  }\n\n  definitions(): readonly NamedFragmentDefinition[] {\n    return this.fragments.values();\n  }\n\n  /**\n   * Collect the usages of fragments that are used within the selection of other fragments.\n   */\n  collectUsedFragmentNames(collector: Map<string, number>) {\n    for (const fragment of this.definitions()) {\n      fragment.collectUsedFragmentNames(collector);\n    }\n  }\n\n  map(mapper: (def: NamedFragmentDefinition) => NamedFragmentDefinition): NamedFragments {\n    const mapped = new NamedFragments();\n    for (const def of this.fragments.values()) {\n      mapped.fragments.set(def.name, mapper(def));\n    }\n    return mapped;\n  }\n\n  /**\n   * The mapper is called on every fragment definition (`fragment` argument), but in such a way that if a fragment A uses another fragment B,\n   * then the mapper is guaranteed to be called on B _before_ being called on A. Further, the `newFragments` argument is a new `NamedFragments`\n   * containing all the previously mapped definition (minus those for which the mapper returned `undefined`). So if A uses B (and the mapper\n   * on B do not return undefined), then when mapper is called on A `newFragments` will have the mapped value for B.\n   */\n  mapInDependencyOrder(\n    mapper: (fragment: NamedFragmentDefinition, newFragments: NamedFragments) => NamedFragmentDefinition | undefined\n  ): NamedFragments | undefined {\n    type FragmentDependencies = {\n      fragment: NamedFragmentDefinition,\n      dependsOn: string[],\n    };\n    const fragmentsMap = new Map<string, FragmentDependencies>();\n    for (const fragment of this.definitions()) {\n      fragmentsMap.set(fragment.name, {\n        fragment,\n        dependsOn: Array.from(fragment.fragmentUsages().keys()),\n      });\n    }\n\n    const removedFragments = new Set<string>();\n    const mappedFragments = new NamedFragments();\n    while (fragmentsMap.size > 0) {\n      for (const [name, info] of fragmentsMap) {\n        // Note that graphQL specifies that named fragments cannot have cycles (https://spec.graphql.org/draft/#sec-Fragment-spreads-must-not-form-cycles)\n        // and so we're guaranteed that on every iteration, at least one element of the map is removed (so the `while` loop will terminate).\n        if (info.dependsOn.every((n) => mappedFragments.has(n) || removedFragments.has(n))) {\n          const mapped = mapper(info.fragment, mappedFragments);\n          fragmentsMap.delete(name);\n          if (!mapped) {\n            removedFragments.add(name);\n          } else {\n            mappedFragments.add(mapped);\n          }\n          // We just deleted from `fragmentsMap` so continuing our current `for` iteration is dangerous,\n          // so we break to the `while` loop (besides, there is no reason why continuing the inner iteration\n          // would be better than restarting it right away).\n          break;\n        }\n      }\n    }\n\n    return mappedFragments.isEmpty() ? undefined : mappedFragments;\n  }\n\n  /**\n   * This method:\n   * - expands all nested fragments,\n   * - applies the provided mapper to the selection set of the fragments,\n   * - and finally re-fragments the nested fragments.\n   */\n  mapToExpandedSelectionSets(\n    mapper: (selectionSet: SelectionSet) => SelectionSet | undefined,\n  ): NamedFragments | undefined {\n    return this.mapInDependencyOrder((fragment, newFragments) => {\n      const mappedSelectionSet = mapper(fragment.selectionSet.expandFragments().normalize({ parentType: fragment.typeCondition }));\n      if (!mappedSelectionSet) {\n        return undefined;\n      }\n      const reoptimizedSelectionSet = mappedSelectionSet.optimize(newFragments);\n      return fragment.withUpdatedSelectionSet(reoptimizedSelectionSet);\n    });\n  }\n\n  rebaseOn(schema: Schema): NamedFragments | undefined {\n    return this.mapInDependencyOrder((fragment, newFragments) => {\n      const rebasedType = schema.type(fragment.selectionSet.parentType.name);\n      if (!rebasedType || !isCompositeType(rebasedType)) {\n        return undefined;\n      }\n\n      let rebasedSelection = fragment.selectionSet.rebaseOn({ parentType: rebasedType, fragments: newFragments, errorIfCannotRebase: false });\n      // Rebasing can leave some inefficiencies in some case (particularly when a spread has to be \"expanded\", see `FragmentSpreadSelection.rebaseOn`),\n      // so we do a top-level normalization to keep things clean.\n      rebasedSelection = rebasedSelection.normalize({ parentType: rebasedType });\n      return rebasedSelection.isWorthUsing()\n        ? new NamedFragmentDefinition(schema, fragment.name, rebasedType).setSelectionSet(rebasedSelection)\n        : undefined;\n    });\n  }\n\n  filter(predicate: (fragment: NamedFragmentDefinition) => boolean): NamedFragments | undefined {\n    return this.mapInDependencyOrder((fragment, newFragments) => {\n      if (predicate(fragment)) {\n        // We want to keep that fragment. But that fragment might use a fragment we remove, and if so,\n        // we need to expand that removed fragment. Note that because we're running in\n        // dependency order, we know that `newFragments` will have every fragments that should be\n        // kept/not expanded.\n        const updatedSelectionSet = fragment.selectionSet.expandFragments(newFragments);\n        // Note that if we did expanded some fragments (the updated selection is not the original one), then the\n        // results may not be fully normalized, so we do it to be sure.\n        return updatedSelectionSet === fragment.selectionSet\n          ? fragment\n          : fragment.withUpdatedSelectionSet(updatedSelectionSet.normalize({ parentType: updatedSelectionSet.parentType}));\n      } else {\n        return undefined;\n      }\n    });\n  }\n\n  validate(variableDefinitions: VariableDefinitions) {\n    for (const fragment of this.fragments.values()) {\n      fragment.selectionSet.validate(variableDefinitions);\n    }\n  }\n\n  toFragmentDefinitionNodes() : FragmentDefinitionNode[] {\n    return this.definitions().map(f => f.toFragmentDefinitionNode());\n  }\n\n  toString(indent?: string) {\n    return this.definitions().map(f => f.toString(indent)).join('\\n\\n');\n  }\n}\n\n/**\n * Utility class used to handle \"normalizing\" the @defer in an operation.\n *\n * See `Operation.withNormalizedDefer` for details on what we mean by normalizing in\n * this context.\n */\nclass DeferNormalizer {\n  private index = 0;\n  readonly assignedLabels = new Set<string>();\n  readonly deferConditions = new SetMultiMap<string, string>();\n  private readonly usedLabels = new Set<string>();\n\n  /**\n   * Initializes the \"labeller\" with all the labels used in the provided selections set.\n   *\n   * @return - whether `selectionSet` has any non-labeled @defer.\n   */\n  init(selectionSet: SelectionSet): { hasDefers: boolean, hasNonLabelledOrConditionalDefers: boolean }  {\n    let hasNonLabelledOrConditionalDefers = false;\n    let hasDefers = false;\n    const stack: Selection[] = selectionSet.selections().concat();\n    while (stack.length > 0) {\n      const selection = stack.pop()!;\n      if (selection.kind === 'FragmentSelection') {\n        const deferArgs = selection.element.deferDirectiveArgs();\n        if (deferArgs) {\n          hasDefers = true;\n          if (!deferArgs.label || deferArgs.if !== undefined) {\n            hasNonLabelledOrConditionalDefers = true;\n          }\n          if (deferArgs.label) {\n            this.usedLabels.add(deferArgs.label);\n          }\n        }\n      }\n      if (selection.selectionSet) {\n        selection.selectionSet.selections().forEach((s) => stack.push(s));\n      }\n    }\n    return { hasDefers, hasNonLabelledOrConditionalDefers };\n  }\n\n  private nextLabel(): string {\n    return `qp__${this.index++}`;\n  }\n\n  newLabel(): string {\n    let candidate = this.nextLabel();\n    // It's unlikely that auto-generated label would conflict an existing one, but\n    // not taking any chances.\n    while (this.usedLabels.has(candidate)) {\n      candidate = this.nextLabel();\n    }\n    this.assignedLabels.add(candidate);\n    return candidate;\n  }\n\n  registerCondition(label: string, condition: Variable): void {\n    this.deferConditions.add(condition.name, label);\n  }\n}\n\nexport enum ContainsResult {\n  // Note: enum values are numbers in the end, and 0 means false in JS, so we should keep `NOT_CONTAINED` first\n  // so that using the result of `contains` as a boolean works.\n  NOT_CONTAINED,\n  STRICTLY_CONTAINED,\n  EQUAL,\n}\n\nexport type CollectedFieldsInSet = { path: string[], field: FieldSelection }[];\n\nexport class SelectionSet {\n  private readonly _keyedSelections: Map<string, Selection>;\n  private readonly _selections: readonly Selection[];\n\n  constructor(\n    readonly parentType: CompositeType,\n    keyedSelections: Map<string, Selection> = new Map(),\n  ) {\n    this._keyedSelections = keyedSelections;\n    this._selections = mapValues(keyedSelections);\n  }\n\n  /**\n   * Takes a selection set and extracts inline fragments into named fragments,\n   * reusing generated named fragments when possible.\n   */\n  minimizeSelectionSet(\n    namedFragments: NamedFragments = new NamedFragments(),\n    seenSelections: Map<string, [SelectionSet, NamedFragmentDefinition][]> = new Map(),\n  ): [SelectionSet, NamedFragments] {\n    const minimizedSelectionSet = this.lazyMap((selection) => {\n      if (selection.kind === 'FragmentSelection' && selection.element.typeCondition && selection.element.appliedDirectives.length === 0\n          && selection.selectionSet && selection.selectionSet.isWorthUsing() ) {\n        // No proper hash code, so we use a unique enough number that's cheap to\n        // compute and handle collisions as necessary.\n        const mockHashCode = `on${selection.element.typeCondition}` + selection.selectionSet.selections().length;\n        const equivalentSelectionSetCandidates = seenSelections.get(mockHashCode);\n\n        if (equivalentSelectionSetCandidates) {\n          // See if any candidates have an equivalent selection set, i.e. {x y} and {y x}.\n          const match = equivalentSelectionSetCandidates.find(([candidateSet]) => candidateSet.equals(selection.selectionSet!));\n          if (match) {\n            // If we found a match, we can reuse the fragment (but we still need\n            // to create a new FragmentSpread since parent types may differ).\n            return new FragmentSpreadSelection(this.parentType, namedFragments, match[1], []);\n          }\n        }\n\n        // No match, so we need to create a new fragment. First, we minimize the\n        // selection set before creating the fragment with it.\n        const [minimizedSelectionSet] = selection.selectionSet.minimizeSelectionSet(namedFragments, seenSelections);\n        const updatedEquivalentSelectionSetCandidates = seenSelections.get(mockHashCode); // may have changed after previous statement\n        const fragmentDefinition = new NamedFragmentDefinition(\n          this.parentType.schema(),\n          `_generated_${mockHashCode}_${updatedEquivalentSelectionSetCandidates?.length ?? 0}`,\n          selection.element.typeCondition\n        ).setSelectionSet(minimizedSelectionSet);\n        namedFragments.add(fragmentDefinition);\n\n        // Create a new \"hash code\" bucket or add to the existing one.\n        if (updatedEquivalentSelectionSetCandidates) {\n          updatedEquivalentSelectionSetCandidates.push([selection.selectionSet, fragmentDefinition]);\n        } else {\n            seenSelections.set(mockHashCode, [[selection.selectionSet, fragmentDefinition]]);\n        }\n\n        return new FragmentSpreadSelection(this.parentType, namedFragments, fragmentDefinition, []);\n      }\n\n      if (selection.selectionSet) {\n        selection = selection.withUpdatedSelectionSet(selection.selectionSet.minimizeSelectionSet(namedFragments, seenSelections)[0]);\n      }\n      return selection;\n    });\n\n    return [minimizedSelectionSet, namedFragments];\n  }\n\n  selectionsInReverseOrder(): readonly Selection[] {\n    const length = this._selections.length;\n    const reversed = new Array<Selection>(length);\n    for (let i = 0; i < length; i++) {\n      reversed[i] = this._selections[length - i - 1];\n    }\n    return reversed;\n  }\n\n  selections(): readonly Selection[] {\n    return this._selections;\n  }\n\n  // Returns whether the selection contains a _non-aliased_ selection of __typename.\n  hasTopLevelTypenameField(): boolean {\n    return this._keyedSelections.has(typenameFieldName);\n  }\n\n  withoutTopLevelTypenameField(): SelectionSet {\n    if (!this.hasTopLevelTypenameField) {\n      return this;\n    }\n\n    const newKeyedSelections = new Map<string, Selection>();\n    for (const [key, selection] of this._keyedSelections) {\n      if (key !== typenameFieldName) {\n        newKeyedSelections.set(key, selection);\n      }\n    }\n    return new SelectionSet(this.parentType, newKeyedSelections);\n  }\n\n  fieldsInSet(): CollectedFieldsInSet {\n    const fields = new Array<{ path: string[], field: FieldSelection }>();\n    for (const selection of this.selections()) {\n      if (selection.kind === 'FieldSelection') {\n        fields.push({ path: [], field: selection });\n      } else {\n        const condition = selection.element.typeCondition;\n        const header = condition ? [`... on ${condition}`] : [];\n        for (const { path, field } of selection.selectionSet.fieldsInSet()) {\n          fields.push({ path: header.concat(path), field});\n        }\n      }\n    }\n    return fields;\n  }\n\n  fieldsByResponseName(): MultiMap<string, FieldSelection> {\n    const byResponseName = new MultiMap<string, FieldSelection>();\n    this.collectFieldsByResponseName(byResponseName);\n    return byResponseName;\n  }\n\n  private collectFieldsByResponseName(collector: MultiMap<string, FieldSelection>) {\n    for (const selection of this.selections()) {\n      if (selection.kind === 'FieldSelection') {\n        collector.add(selection.element.responseName(), selection);\n      } else {\n        selection.selectionSet.collectFieldsByResponseName(collector);\n      }\n    }\n  }\n\n  usedVariables(): Variables {\n    const collector = new VariableCollector();\n    this.collectVariables(collector);\n    return collector.variables();\n  }\n\n  collectVariables(collector: VariableCollector) {\n    for (const selection of this.selections()) {\n      selection.collectVariables(collector);\n    }\n  }\n\n  collectUsedFragmentNames(collector: Map<string, number>) {\n    for (const selection of this.selections()) {\n      selection.collectUsedFragmentNames(collector);\n    }\n  }\n\n  optimize(fragments?: NamedFragments): SelectionSet {\n    if (!fragments || fragments.isEmpty()) {\n      return this;\n    }\n\n    // Calling optimizeSelections() will not match a fragment that would have expanded at top-level.\n    // That is, say we have the selection set `{ x y }` for a top-level `Query`, and we have a fragment\n    // ```\n    // fragment F on Query {\n    //   x\n    //   y\n    // }\n    // ```\n    // then calling `this.optimizeSelections(fragments)` would only apply check if F apply to `x` and\n    // then `y`.\n    //\n    // To ensure the fragment match in this case, we \"wrap\" the selection into a trivial fragment of\n    // the selection parent, so in the example above, we create selection `... on Query { x y}`.\n    // With that, `optimizeSelections` will correctly match on the `on Query` fragment; after which\n    // we can unpack the final result.\n    const wrapped = new InlineFragmentSelection(new FragmentElement(this.parentType, this.parentType), this);\n    const validator = FieldsConflictMultiBranchValidator.ofInitial(FieldsConflictValidator.build(this));\n    const optimized = wrapped.optimize(fragments, validator);\n\n    // Now, it's possible we matched a full fragment, in which case `optimized` will be just the named fragment,\n    // and in that case we return a singleton selection with just that. Otherwise, it's our wrapping inline fragment\n    // with the sub-selections optimized, and we just return that subselection.\n    return optimized instanceof FragmentSpreadSelection\n      ? selectionSetOf(this.parentType, optimized)\n      : optimized.selectionSet;\n  }\n\n  // Tries to match fragments inside each selections of this selection set, and this recursively. However, note that this\n  // may not match fragments that would apply at top-level, so you should usually use `optimize` instead (this exists mostly\n  // for the recursion).\n  optimizeSelections(fragments: NamedFragments, validator: FieldsConflictMultiBranchValidator): SelectionSet {\n    return this.lazyMap((selection) => selection.optimize(fragments, validator));\n  }\n\n  expandFragments(updatedFragments?: NamedFragments): SelectionSet {\n    return this.lazyMap((selection) => selection.expandFragments(updatedFragments));\n  }\n\n  /**\n   * Applies some normalization rules to this selection set in the context of the provided `parentType`.\n   *\n   * Normalization mostly removes unecessary/redundant inline fragments, so that for instance, with\n   * schema:\n   * ```graphql\n   *   type Query {\n   *     t1: T1\n   *     i: I\n   *   }\n   *\n   *   interface I {\n   *     id: ID!\n   *   }\n   *\n   *   type T1 implements I {\n   *     id: ID!\n   *     v1: Int\n   *   }\n   *\n   *   type T2 implements I {\n   *     id: ID!\n   *     v2: Int\n   *   }\n   * ```\n   *\n   * ```\n   * normalize({\n   *   t1 {\n   *     ... on I {\n   *       id\n   *     }\n   *   }\n   *   i {\n   *     ... on T1 {\n   *       ... on I {\n   *          ... on T1 {\n   *            v1\n   *          }\n   *          ... on T2 {\n   *            v2\n   *          }\n   *       }\n   *     }\n   *     ... on T2 {\n   *       ... on I {\n   *         id\n   *       }\n   *     }\n   *   }\n   * }) === {\n   *   t1 {\n   *     id\n   *   }\n   *   i {\n   *     ... on T1 {\n   *       v1\n   *     }\n   *     ... on T2 {\n   *       id\n   *     }\n   *   }\n   * }\n   * ```\n   *\n   * For this operation to be valid (to not throw), `parentType` must be such that every field selection in\n   * this selection set is such that the field parent type intersects `parentType` (there is no limitation\n   * on the fragment selections, though any fragment selections whose condition do not intersects `parentType`\n   * will be discarded). Note that `this.normalize(this.parentType)` is always valid and useful, but it is\n   * also possible to pass a `parentType` that is more \"restrictive\" than the selection current parent type\n   * (as long as the top-level fields of this selection set can be rebased on that type).\n   *\n   * Passing the option `recursive == false` makes the normalization only apply at the top-level, removing\n   * any unecessary top-level inline fragments, possibly multiple layers of them, but we never recurse\n   * inside the sub-selection of an selection that is not removed by the normalization.\n   */\n  normalize({ parentType, recursive }: { parentType: CompositeType, recursive? : boolean }): SelectionSet {\n    return this.lazyMap((selection) => selection.normalize({ parentType, recursive }), { parentType });\n  }\n\n  /**\n   * Returns the result of mapping the provided `mapper` to all the selection of this selection set.\n   *\n   * This method assumes that the `mapper` may often return it's argument directly, meaning that only\n   * a small subset of selection actually need any modifications, and will avoid re-creating new\n   * objects when that is the case. This does mean that the resulting selection set may be `this`\n   * directly, or may alias some of the sub-selection in `this`.\n   */\n  lazyMap(\n    mapper: (selection: Selection) => Selection | readonly Selection[] | SelectionSet | undefined,\n    options?: {\n      parentType?: CompositeType,\n    }\n  ): SelectionSet {\n    const selections = this.selections();\n    let updatedSelections: SelectionSetUpdates | undefined = undefined;\n    for (let i = 0; i < selections.length; i++) {\n      const selection = selections[i];\n      const updated = mapper(selection);\n      if (updated !== selection && !updatedSelections) {\n        updatedSelections = new SelectionSetUpdates();\n        for (let j = 0; j < i; j++) {\n          updatedSelections.add(selections[j]);\n        }\n      }\n      if (!!updated && updatedSelections) {\n        updatedSelections.add(updated);\n      }\n    }\n    if (!updatedSelections) {\n      return this;\n    }\n    return updatedSelections.toSelectionSet(options?.parentType ?? this.parentType);\n  }\n\n  withoutDefer(labelsToRemove?: Set<string>): SelectionSet {\n    return this.lazyMap((selection) => selection.withoutDefer(labelsToRemove));\n  }\n\n  withNormalizedDefer(normalizer: DeferNormalizer): SelectionSet {\n    return this.lazyMap((selection) => selection.withNormalizedDefer(normalizer));\n  }\n\n  hasDefer(): boolean {\n    return this.selections().some((s) => s.hasDefer());\n  }\n\n  /**\n   * Returns the selection set resulting from filtering out any of the top-level selection that does not match the provided predicate.\n   *\n   * Please that this method does not recurse within sub-selections.\n   */\n  filter(predicate: (selection: Selection) => boolean): SelectionSet {\n    return this.lazyMap((selection) => predicate(selection) ? selection : undefined);\n  }\n\n  /**\n   * Returns the selection set resulting from \"recursively\" filtering any selection that does not match the provided predicate.\n   * This method calls `predicate` on every selection of the selection set, not just top-level ones, and apply a \"depth-first\"\n   * strategy, meaning that when the predicate is call on a given selection, the it is guaranteed that filtering has happened\n   * on all the selections of its sub-selection.\n   */\n  filterRecursiveDepthFirst(predicate: (selection: Selection) => boolean): SelectionSet {\n    return this.lazyMap((selection) => selection.filterRecursiveDepthFirst(predicate));\n  }\n\n  withoutEmptyBranches(): SelectionSet | undefined {\n    const updated = this.filterRecursiveDepthFirst((selection) => selection.selectionSet?.isEmpty() !== true);\n    return updated.isEmpty() ? undefined : updated;\n  }\n\n  rebaseOn({\n    parentType,\n    fragments,\n    errorIfCannotRebase,\n  }: {\n    parentType: CompositeType,\n    fragments: NamedFragments | undefined\n    errorIfCannotRebase: boolean,\n  }): SelectionSet {\n    if (this.parentType === parentType) {\n      return this;\n    }\n\n    const newSelections = new Map<string, Selection>();\n    for (const selection of this.selections()) {\n      const rebasedSelection = selection.rebaseOn({ parentType, fragments, errorIfCannotRebase });\n      if (rebasedSelection) {\n        newSelections.set(selection.key(), rebasedSelection);\n      }\n    }\n\n    return new SelectionSet(parentType, newSelections);\n  }\n\n  equals(that: SelectionSet): boolean {\n    if (this === that) {\n      return true;\n    }\n\n    if (this._selections.length !== that._selections.length) {\n      return false;\n    }\n\n    for (const [key, thisSelection] of this._keyedSelections) {\n      const thatSelection = that._keyedSelections.get(key);\n      if (!thatSelection || !thisSelection.equals(thatSelection)) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  contains(that: SelectionSet, options?: { ignoreMissingTypename?: boolean }): ContainsResult {\n    const ignoreMissingTypename = options?.ignoreMissingTypename ?? false;\n    if (that._selections.length > this._selections.length) {\n      // If `that` has more selections but we're ignoring missing __typename, then in the case where\n      // `that` has a __typename but `this` does not, then we need the length of `that` to be at\n      // least 2 more than that of `this` to be able to conclude there is no contains.\n      if (!ignoreMissingTypename || that._selections.length > this._selections.length + 1 || this.hasTopLevelTypenameField() || !that.hasTopLevelTypenameField()) {\n        return ContainsResult.NOT_CONTAINED;\n      }\n    }\n\n    let isEqual = true;\n    let didIgnoreTypename = false;\n    for (const [key, thatSelection] of that._keyedSelections) {\n      if (key === typenameFieldName && ignoreMissingTypename) {\n        if (!this._keyedSelections.has(typenameFieldName)) {\n          didIgnoreTypename = true;\n        }\n        continue;\n      }\n\n      const thisSelection = this._keyedSelections.get(key);\n      const selectionResult = thisSelection?.contains(thatSelection, options);\n      if (selectionResult === undefined || selectionResult === ContainsResult.NOT_CONTAINED) {\n        return ContainsResult.NOT_CONTAINED;\n      }\n      isEqual &&= selectionResult === ContainsResult.EQUAL;\n    }\n\n    return isEqual && that._selections.length === (this._selections.length + (didIgnoreTypename ? 1 : 0))\n      ? ContainsResult.EQUAL\n      : ContainsResult.STRICTLY_CONTAINED;\n  }\n\n  containsTopLevelField(field: Field): boolean {\n    const selection = this._keyedSelections.get(field.key());\n    return !!selection && selection.element.equals(field);\n  }\n\n  /**\n   * Returns a selection set that correspond to this selection set but where any of the selections in the\n   * provided selection set have been remove.\n   */\n  minus(that: SelectionSet): SelectionSet {\n    const updated = new SelectionSetUpdates();\n\n    for (const [key, thisSelection] of this._keyedSelections) {\n      const thatSelection = that._keyedSelections.get(key);\n      if (thatSelection) {\n        const remainder = thisSelection.minus(thatSelection);\n        if (remainder) {\n          updated.add(remainder);\n        }\n      } else {\n        updated.add(thisSelection);\n      }\n    }\n    return updated.toSelectionSet(this.parentType);\n  }\n\n  intersectionWith(that: SelectionSet): SelectionSet {\n    if (this.isEmpty()) {\n      return this;\n    }\n    if (that.isEmpty()) {\n      return that;\n    }\n\n    const intersection = new SelectionSetUpdates();\n    for (const [key, thisSelection] of this._keyedSelections) {\n      const thatSelection = that._keyedSelections.get(key);\n      if (thatSelection) {\n        const selection = thisSelection.intersectionWith(thatSelection);\n        if (selection) {\n          intersection.add(selection);\n        }\n      }\n    }\n\n    return intersection.toSelectionSet(this.parentType);\n  }\n\n  canRebaseOn(parentTypeToTest: CompositeType): boolean {\n    return this.selections().every((selection) => selection.canAddTo(parentTypeToTest));\n  }\n\n  validate(variableDefinitions: VariableDefinitions, validateContextualArgs: boolean = false) {\n    validate(!this.isEmpty(), () => `Invalid empty selection set`);\n    for (const selection of this.selections()) {\n      selection.validate(variableDefinitions, validateContextualArgs);\n    }\n  }\n\n  isEmpty(): boolean {\n    return this._selections.length === 0;\n  }\n\n  toSelectionSetNode(): SelectionSetNode {\n    // In theory, for valid operations, we shouldn't have empty selection sets (field selections whose type is a leaf will\n    // have an undefined selection set, not an empty one). We do \"abuse\" this a bit however when create query \"witness\"\n    // during composition validation where, to make it easier for users to locate the issue, we want the created witness\n    // query to stop where the validation problem lies, even if we're not on a leaf type. To make this look nice and\n    // explicit, we handle that case by create a fake selection set that just contains an ellipsis, indicate there is\n    // supposed to be more but we elided it for clarity. And yes, the whole thing is a bit of a hack, albeit a convenient\n    // one.\n    if (this.isEmpty()) {\n      return {\n        kind: Kind.SELECTION_SET,\n        selections: [{\n          kind: Kind.FIELD,\n          name: {\n            kind: Kind.NAME,\n            value: '...',\n          },\n        }]\n      }\n    }\n    return {\n      kind: Kind.SELECTION_SET,\n      selections: Array.from(this.selectionsInPrintOrder(), s => s.toSelectionNode())\n    }\n  }\n\n  private selectionsInPrintOrder(): readonly Selection[] {\n    // By default, we will print the selection the order in which things were added to it.\n    // If __typename is selected however, we put it first. It's a detail but as __typename is a bit special it looks better,\n    // and it happens to mimic prior behavior on the query plan side so it saves us from changing tests for no good reasons.\n    const isPlainTypenameSelection = (s: Selection) => s.kind === 'FieldSelection' && s.isPlainTypenameField();\n    const typenameSelection = this._selections.find((s) => isPlainTypenameSelection(s));\n    if (typenameSelection) {\n      return [typenameSelection].concat(this.selections().filter(s => !isPlainTypenameSelection(s)));\n    } else {\n      return this._selections;\n    }\n  }\n\n  toOperationPaths(): OperationPath[] {\n    return this.toOperationPathsInternal([]);\n  }\n\n  private toOperationPathsInternal(parentPaths: OperationPath[]): OperationPath[] {\n    return this.selections().flatMap((selection) => {\n      const updatedPaths = parentPaths.map(path => path.concat(selection.element));\n      return selection.selectionSet\n        ? selection.selectionSet.toOperationPathsInternal(updatedPaths)\n        : updatedPaths;\n    });\n  }\n\n  /**\n   * Calls the provided callback on all the \"elements\" (including nested ones) of this selection set.\n   * The order of traversal is that of the selection set.\n   */\n  forEachElement(callback: (elt: OperationElement) => void) {\n    // Note: we reverse to preserve ordering (since the stack re-reverse).\n    const stack = this.selectionsInReverseOrder().concat();\n    while (stack.length > 0) {\n      const selection = stack.pop()!;\n      callback(selection.element);\n      selection.selectionSet?.selectionsInReverseOrder().forEach((s) => stack.push(s));\n    }\n  }\n\n  /**\n   * Returns true if any of the element in this selection set matches the provided predicate.\n   */\n  some(predicate: (elt: OperationElement) => boolean): boolean {\n    for (const selection of this.selections()) {\n      if (predicate(selection.element) || (selection.selectionSet && selection.selectionSet.some(predicate))) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  toOperationString(\n    rootKind: SchemaRootKind,\n    variableDefinitions: VariableDefinitions,\n    fragments: NamedFragments | undefined,\n    operationName?: string,\n    directives?: readonly Directive<any>[],\n    expandFragments: boolean = false,\n    prettyPrint: boolean = true\n  ): string {\n    const indent = prettyPrint ? '' : undefined;\n    const fragmentsDefinitions = !expandFragments && fragments && !fragments.isEmpty()\n      ? fragments.toString(indent) + \"\\n\\n\"\n      : \"\";\n    if (rootKind == \"query\" && !operationName && variableDefinitions.isEmpty()) {\n      return fragmentsDefinitions + this.toString(expandFragments, true, indent);\n    }\n    const nameAndVariables = operationName\n      ? \" \" + (operationName + (variableDefinitions.isEmpty() ? \"\" : variableDefinitions.toString()))\n      : (variableDefinitions.isEmpty() ? \"\" : \" \" + variableDefinitions.toString());\n    const directives_str = directivesToString(directives);\n    return fragmentsDefinitions + rootKind + nameAndVariables + directives_str + \" \" + this.toString(expandFragments, true, indent);\n  }\n\n  /**\n   * The string representation of this selection set.\n   *\n   * By default, this expand all fragments so that the returned string is self-contained. You can\n   * use the `expandFragments` boolean to force fragments to not be expanded but the fragments\n   * definitions will _not_ be included in the returned string. If you want a representation of\n   * this selection set with fragments definitions included, use `toOperationString` instead.\n   */\n  toString(\n    expandFragments: boolean = true,\n    includeExternalBrackets: boolean = true,\n    indent?: string\n  ): string {\n    if (this.isEmpty()) {\n      return '{}';\n    }\n\n    if (indent === undefined) {\n      const selectionsToString = this.selections().map(s => s.toString(expandFragments)).join(' ');\n      return includeExternalBrackets ?  '{ ' + selectionsToString  + ' }' : selectionsToString;\n    } else {\n      const selectionIndent = includeExternalBrackets ? indent + \"  \" : indent;\n      const selectionsToString = this.selections().map(s => s.toString(expandFragments, selectionIndent)).join('\\n');\n      return includeExternalBrackets\n        ? '{\\n' + selectionsToString  + '\\n' + indent + '}'\n        : selectionsToString;\n    }\n  }\n\n  // `isWorthUsing` method is used to determine whether we want to factor out\n  // given selection set into a named fragment so it can be reused across the query.\n  // Currently, it is used in these cases:\n  // 1) to reuse existing named fragments in subgraph queries (when reuseQueryFragments is on)\n  // 2) to factor selection sets into named fragments (when generateQueryFragments is on).\n  //\n  // When we rebase named fragments on a subgraph schema, only a subset of what the fragment handles may belong\n  // to that particular subgraph. And there are a few sub-cases where that subset is such that we basically need or\n  // want to consider to ignore the fragment for that subgraph, and that is when:\n  // 1. the subset that apply is actually empty. The fragment wouldn't be valid in this case anyway.\n  // 2. the subset is a single leaf field: in that case, using the one field directly is just shorter than using\n  //   the fragment, so we consider the fragment don't really apply to that subgraph. Technically, using the\n  //   fragment could still be of value if the fragment name is a lot smaller than the one field name, but it's\n  //   enough of a niche case that we ignore it. Note in particular that one sub-case of this rule that is likely\n  //   to be common is when the subset ends up being just `__typename`: this would basically mean the fragment\n  //   don't really apply to the subgraph, and that this will ensure this is the case.\n  isWorthUsing(): boolean {\n    const selections = this.selections();\n    if (selections.length === 0) {\n      return false;\n    }\n    if (selections.length === 1) {\n      const s = selections[0];\n      return !(s.kind === 'FieldSelection' && s.element.isLeafField());\n    }\n    return true;\n  }\n}\n\ntype PathBasedUpdate = { path: OperationPath, selections?: Selection | SelectionSet | readonly Selection[] };\ntype SelectionUpdate = Selection | PathBasedUpdate;\n\n/**\n * Accumulates updates in order to build a new `SelectionSet`.\n */\nexport class SelectionSetUpdates {\n  private readonly keyedUpdates = new MultiMap<string, SelectionUpdate>;\n\n  isEmpty(): boolean {\n    return this.keyedUpdates.size === 0;\n  }\n\n  /**\n   * Adds the provided selections to those updates.\n   */\n  add(selections: Selection | SelectionSet | readonly Selection[]): SelectionSetUpdates {\n    addToKeyedUpdates(this.keyedUpdates, selections);\n    return this;\n  }\n\n  /**\n   * Adds a path, and optional some selections following that path, to those updates.\n   *\n   * The final selections are optional (for instance, if `path` ends on a leaf field, then no followup selections would\n   * make sense), but when some are provided, uncesssary fragments will be automaticaly removed at the junction between\n   * the path and those final selections. For instance, suppose that we have:\n   *  - a `path` argument that is `a::b::c`, where the type of the last field `c` is some object type `C`.\n   *  - a `selections` argument that is `{ ... on C { d } }`.\n   * Then the resulting built selection set will be: `{ a { b { c { d } } }`, and in particular the `... on C` fragment\n   * will be eliminated since it is unecesasry (since again, `c` is of type `C`).\n   */\n  addAtPath(path: OperationPath, selections?: Selection | SelectionSet | readonly Selection[]): SelectionSetUpdates {\n    if (path.length === 0) {\n      if (selections) {\n        addToKeyedUpdates(this.keyedUpdates, selections)\n      }\n    } else {\n      if (path.length === 1 && !selections) {\n        const element = path[0];\n        if (element.kind === 'Field' && element.isLeafField()) {\n          // This is a somewhat common case (when we deal with @key \"conditions\", those are often trivial and end up here),\n          // so we unpack it directly instead of creating unecessary temporary objects (not that we only do it for leaf\n          // field; for non-leaf ones, we'd have to create an empty sub-selectionSet, and that may have to get merged\n          // with other entries of this `SleectionSetUpdates`, so we wouldn't really save work).\n          const selection = selectionOfElement(element);\n          this.keyedUpdates.add(selection.key(), selection);\n          return this;\n        }\n      }\n      // We store the provided update \"as is\" (we don't convert it to a `Selection` just yet) and process everything\n      // when we build the final `SelectionSet`. This is done because multipe different updates can intersect in various\n      // ways, and the work to build a `Selection` now could be largely wasted due to followup updates.\n      this.keyedUpdates.add(path[0].key(), { path, selections });\n    }\n    return this;\n  }\n\n  clone(): SelectionSetUpdates {\n    const cloned = new SelectionSetUpdates();\n    for (const [key, values] of this.keyedUpdates.entries()) {\n      cloned.keyedUpdates.set(key, Array.from(values));\n    }\n    return cloned;\n  }\n\n  clear() {\n    this.keyedUpdates.clear();\n  }\n\n  toSelectionSet(parentType: CompositeType, fragments?: NamedFragments): SelectionSet {\n    return makeSelectionSet(parentType, this.keyedUpdates, fragments);\n  }\n\n  toString() {\n    return '{\\n'\n      + [...this.keyedUpdates.entries()].map(([k, updates]) => {\n        const updStr = updates.map((upd) =>\n        upd instanceof AbstractSelection\n          ? upd.toString()\n          : `${upd.path} -> ${upd.selections}`\n        );\n        return ` - ${k}: ${updStr}`;\n      }).join('\\n')\n      +'\\n\\}'\n  }\n}\n\nfunction addToKeyedUpdates(keyedUpdates: MultiMap<string, SelectionUpdate>, selections: Selection | SelectionSet | readonly Selection[]) {\n  if (selections instanceof AbstractSelection) {\n    addOneToKeyedUpdates(keyedUpdates, selections);\n  } else {\n    const toAdd = selections instanceof SelectionSet ? selections.selections() : selections;\n    for (const selection of toAdd) {\n      addOneToKeyedUpdates(keyedUpdates, selection);\n    }\n  }\n}\n\nfunction addOneToKeyedUpdates(keyedUpdates: MultiMap<string, SelectionUpdate>, selection: Selection) {\n  // Keys are such that for a named fragment, only a selection of the same fragment with same directives can have the same key.\n  // But if we end up with multiple spread of the same named fragment, we don't want to try to \"merge\" the sub-selections of\n  // each, as it would expand the fragments and make things harder. So we essentially special case spreads to avoid having\n  // to deal with multiple time the exact same one.\n  if (selection instanceof FragmentSpreadSelection) {\n    keyedUpdates.set(selection.key(), [selection]);\n  } else {\n    keyedUpdates.add(selection.key(), selection);\n  }\n}\n\nfunction maybeRebaseOnSchema(toRebase: CompositeType, schema: Schema): CompositeType {\n  if (toRebase.schema() === schema) {\n    return toRebase;\n  }\n\n  const rebased = schema.type(toRebase.name);\n  assert(rebased && isCompositeType(rebased), () => `Expected ${toRebase} to exists and be composite in the rebased schema, but got ${rebased?.kind}`);\n  return rebased;\n}\n\nfunction isUnecessaryFragment(parentType: CompositeType, fragment: FragmentSelection): boolean {\n  return fragment.element.appliedDirectives.length === 0\n    && (!fragment.element.typeCondition || isSubtype(maybeRebaseOnSchema(fragment.element.typeCondition, parentType.schema()), parentType));\n}\n\nfunction withUnecessaryFragmentsRemoved(\n  parentType: CompositeType,\n  selections: Selection | SelectionSet | readonly Selection[],\n): Selection | readonly Selection[] {\n  if (selections instanceof AbstractSelection) {\n    if (selections.kind !== 'FragmentSelection' || !isUnecessaryFragment(parentType, selections)) {\n      return selections;\n    }\n    return withUnecessaryFragmentsRemoved(parentType, selections.selectionSet);\n  }\n\n  const toCheck = selections instanceof SelectionSet ? selections.selections() : selections;\n  const filtered: Selection[] = [];\n  for (const selection of toCheck) {\n    if (selection.kind === 'FragmentSelection' && isUnecessaryFragment(parentType, selection)) {\n      const subSelections = withUnecessaryFragmentsRemoved(parentType, selection.selectionSet);\n      if (subSelections instanceof AbstractSelection) {\n        filtered.push(subSelections);\n      } else {\n        for (const subSelection of subSelections) {\n          filtered.push(subSelection);\n        }\n      }\n    } else {\n      filtered.push(selection);\n    }\n  }\n  return filtered;\n}\n\nfunction makeSelection(parentType: CompositeType, updates: SelectionUpdate[], fragments?: NamedFragments): Selection {\n  assert(updates.length > 0, 'Should not be called without any updates');\n  const first = updates[0];\n\n  // Optimize for the simple case of a single selection, as we don't have to do anything complex to merge the sub-selections.\n  if (updates.length === 1 && first instanceof AbstractSelection) {\n    return first.rebaseOnOrError({ parentType, fragments });\n  }\n\n  const element = updateElement(first).rebaseOnOrError(parentType);\n  const subSelectionParentType = element.kind === 'Field' ? element.baseType() : element.castedType();\n  if (!isCompositeType(subSelectionParentType)) {\n    // This is a leaf, so all updates should correspond ot the same field and we just use the first.\n    return selectionOfElement(element);\n  }\n\n  const subSelectionKeyedUpdates = new MultiMap<string, SelectionUpdate>();\n  for (const update of updates) {\n    if (update instanceof AbstractSelection) {\n      if (update.selectionSet) {\n        addToKeyedUpdates(subSelectionKeyedUpdates, update.selectionSet);\n      }\n    } else {\n      addSubpathToKeyUpdates(subSelectionKeyedUpdates, subSelectionParentType, update);\n    }\n  }\n  return selectionOfElement(element, makeSelectionSet(subSelectionParentType, subSelectionKeyedUpdates, fragments));\n}\n\nfunction updateElement(update: SelectionUpdate): OperationElement {\n  return update instanceof AbstractSelection ? update.element : update.path[0];\n}\n\nfunction addSubpathToKeyUpdates(\n  keyedUpdates: MultiMap<string, SelectionUpdate>,\n  subSelectionParentType: CompositeType,\n  pathUpdate: PathBasedUpdate\n) {\n  if (pathUpdate.path.length === 1) {\n    if (!pathUpdate.selections) {\n      return;\n    }\n    addToKeyedUpdates(keyedUpdates, withUnecessaryFragmentsRemoved(subSelectionParentType, pathUpdate.selections!));\n  } else {\n    keyedUpdates.add(pathUpdate.path[1].key(), { path: pathUpdate.path.slice(1), selections: pathUpdate.selections });\n  }\n}\n\nfunction makeSelectionSet(parentType: CompositeType, keyedUpdates: MultiMap<string, SelectionUpdate>, fragments?: NamedFragments): SelectionSet {\n  const selections = new Map<string, Selection>();\n  for (const [key, updates] of keyedUpdates.entries()) {\n    selections.set(key, makeSelection(parentType, updates, fragments));\n  }\n  return new SelectionSet(parentType, selections);\n}\n\n/**\n * A simple wrapper over a `SelectionSetUpdates` that allows to conveniently build a selection set, then add some more updates and build it again, etc...\n */\nexport class MutableSelectionSet<TMemoizedValue extends { [key: string]: any } = {}> {\n  private computed: SelectionSet | undefined;\n  private _memoized: TMemoizedValue | undefined;\n\n  private constructor(\n    readonly parentType: CompositeType,\n    private readonly _updates: SelectionSetUpdates,\n    private readonly memoizer: (s: SelectionSet) => TMemoizedValue,\n  ) {\n  }\n\n  static empty(parentType: CompositeType): MutableSelectionSet {\n    return this.emptyWithMemoized(parentType, () => ({}));\n  }\n\n  static emptyWithMemoized<TMemoizedValue extends { [key: string]: any }>(\n    parentType: CompositeType,\n    memoizer: (s: SelectionSet) => TMemoizedValue,\n  ): MutableSelectionSet<TMemoizedValue> {\n    return new MutableSelectionSet( parentType, new SelectionSetUpdates(), memoizer);\n  }\n\n\n  static of(selectionSet: SelectionSet): MutableSelectionSet {\n    return this.ofWithMemoized(selectionSet, () => ({}));\n  }\n\n  static ofWithMemoized<TMemoizedValue extends { [key: string]: any }>(\n    selectionSet: SelectionSet,\n    memoizer: (s: SelectionSet) => TMemoizedValue,\n  ): MutableSelectionSet<TMemoizedValue> {\n    const s = new MutableSelectionSet(selectionSet.parentType, new SelectionSetUpdates(), memoizer);\n    s._updates.add(selectionSet);\n    // Avoids needing to re-compute `selectionSet` until there is new updates.\n    s.computed = selectionSet;\n    return s;\n  }\n\n  isEmpty(): boolean {\n    return this._updates.isEmpty();\n  }\n\n  get(): SelectionSet {\n    if (!this.computed) {\n      this.computed = this._updates.toSelectionSet(this.parentType);\n      // But now, we clear the updates an re-add the selections from computed. Of course, we could also\n      // not clear updates at all, but that would mean that the computations going on for merging selections\n      // would be re-done every time and that would be a lot less efficient.\n      this._updates.clear();\n      this._updates.add(this.computed);\n    }\n    return this.computed;\n  }\n\n  updates(): SelectionSetUpdates {\n    // We clear our cached version since we're about to add more updates and so this cached version won't\n    // represent the mutable set properly anymore.\n    this.computed = undefined;\n    this._memoized = undefined;\n    return this._updates;\n  }\n\n  clone(): MutableSelectionSet<TMemoizedValue> {\n    const cloned = new MutableSelectionSet(this.parentType, this._updates.clone(), this.memoizer);\n    // Until we have more updates, we can share the computed values (if any).\n    cloned.computed = this.computed;\n    cloned._memoized = this._memoized;\n    return cloned;\n  }\n\n  rebaseOn(parentType: CompositeType): MutableSelectionSet<TMemoizedValue> {\n    const rebased = new MutableSelectionSet(parentType, new SelectionSetUpdates(), this.memoizer);\n    // Note that updates are always rebased on their parentType, so we won't have to call `rebaseOn` manually on `this.get()`.\n    rebased._updates.add(this.get());\n    return rebased;\n  }\n\n  memoized(): TMemoizedValue {\n    if (!this._memoized) {\n      this._memoized = this.memoizer(this.get());\n    }\n    return this._memoized;\n  }\n\n  toString() {\n    return this.get().toString();\n  }\n}\n\nexport function allFieldDefinitionsInSelectionSet(selection: SelectionSet): FieldDefinition<CompositeType>[] {\n  const stack = Array.from(selection.selections());\n  const allFields: FieldDefinition<CompositeType>[] = [];\n  while (stack.length > 0) {\n    const selection = stack.pop()!;\n    if (selection.kind === 'FieldSelection') {\n      allFields.push(selection.element.definition);\n    }\n    if (selection.selectionSet) {\n      stack.push(...selection.selectionSet.selections());\n    }\n  }\n  return allFields;\n}\n\nexport function selectionSetOf(parentType: CompositeType, selection: Selection): SelectionSet {\n  const map = new Map<string, Selection>()\n  map.set(selection.key(), selection);\n  return new SelectionSet(parentType, map);\n}\n\nexport function selectionSetOfElement(element: OperationElement, subSelection?: SelectionSet): SelectionSet {\n  return selectionSetOf(element.parentType, selectionOfElement(element, subSelection));\n}\n\nexport function selectionOfElement(element: OperationElement, subSelection?: SelectionSet): Selection {\n  // TODO: validate that the subSelection is ok for the element\n  return element.kind === 'Field' ? new FieldSelection(element, subSelection) : new InlineFragmentSelection(element, subSelection!);\n}\n\nexport type Selection = FieldSelection | FragmentSelection;\nabstract class AbstractSelection<TElement extends OperationElement, TIsLeaf extends undefined | never, TOwnType extends AbstractSelection<TElement, TIsLeaf, TOwnType>> {\n  constructor(\n    readonly element: TElement,\n  ) {\n    // TODO: we should do validate the type of the selection set matches the element.\n  }\n\n  abstract get selectionSet(): SelectionSet | TIsLeaf;\n\n  protected abstract us(): TOwnType;\n\n  abstract key(): string;\n\n  abstract optimize(fragments: NamedFragments, validator: FieldsConflictMultiBranchValidator): Selection;\n\n  abstract toSelectionNode(): SelectionNode;\n\n  abstract validate(variableDefinitions: VariableDefinitions, validateContextualArgs: boolean): void;\n\n  abstract rebaseOn(args: { parentType: CompositeType, fragments: NamedFragments | undefined, errorIfCannotRebase: boolean}): TOwnType | undefined;\n\n  rebaseOnOrError({ parentType, fragments }: { parentType: CompositeType, fragments: NamedFragments | undefined }): TOwnType {\n    return this.rebaseOn({ parentType, fragments, errorIfCannotRebase: true})!;\n  }\n\n  get parentType(): CompositeType {\n    return this.element.parentType;\n  }\n\n  isTypenameField(): boolean {\n    // Overridden where appropriate\n    return false;\n  }\n\n  collectVariables(collector: VariableCollector) {\n    this.element.collectVariables(collector);\n    this.selectionSet?.collectVariables(collector)\n  }\n\n  collectUsedFragmentNames(collector: Map<string, number>) {\n    this.selectionSet?.collectUsedFragmentNames(collector);\n  }\n\n  abstract withUpdatedComponents(element: TElement, selectionSet: SelectionSet | TIsLeaf): TOwnType;\n\n  withUpdatedSelectionSet(selectionSet: SelectionSet | TIsLeaf): TOwnType {\n    return this.withUpdatedComponents(this.element, selectionSet);\n  }\n\n  withUpdatedElement(element: TElement): TOwnType {\n    return this.withUpdatedComponents(element, this.selectionSet);\n  }\n\n  mapToSelectionSet(mapper: (s: SelectionSet) => SelectionSet): TOwnType {\n    if (!this.selectionSet) {\n      return this.us();\n    }\n\n    const updatedSelectionSet = mapper(this.selectionSet);\n    return updatedSelectionSet === this.selectionSet\n      ? this.us()\n      : this.withUpdatedSelectionSet(updatedSelectionSet);\n  }\n\n  abstract withoutDefer(labelsToRemove?: Set<string>): TOwnType | SelectionSet;\n\n  abstract withNormalizedDefer(normalizer: DeferNormalizer): TOwnType | SelectionSet;\n\n  abstract hasDefer(): boolean;\n\n  abstract expandFragments(updatedFragments: NamedFragments | undefined): TOwnType | readonly Selection[];\n\n  abstract normalize(args: { parentType: CompositeType, recursive? : boolean }): TOwnType | SelectionSet | undefined;\n\n  isFragmentSpread(): boolean {\n    return false;\n  }\n\n  minus(that: Selection): TOwnType | undefined {\n    // If there is a subset, then we compute the diff of the subset and add that (if not empty).\n    // Otherwise, we have no diff.\n    if (this.selectionSet && that.selectionSet) {\n      const updatedSubSelectionSet = this.selectionSet.minus(that.selectionSet);\n      if (!updatedSubSelectionSet.isEmpty()) {\n        return this.withUpdatedSelectionSet(updatedSubSelectionSet);\n      }\n    }\n    return undefined;\n  }\n\n  intersectionWith(that: Selection): TOwnType | undefined {\n    // If there is a subset, then we compute the intersection add that (if not empty).\n    // Otherwise, the intersection is this element.\n    if (this.selectionSet && that.selectionSet) {\n      const subSelectionSetIntersection = this.selectionSet.intersectionWith(that.selectionSet);\n      if (subSelectionSetIntersection.isEmpty()) {\n        return undefined;\n      } else {\n        return this.withUpdatedSelectionSet(subSelectionSetIntersection);\n      }\n    } else {\n      return this.us();\n    }\n  }\n\n  protected tryOptimizeSubselectionWithFragments({\n    parentType,\n    subSelection,\n    fragments,\n    validator,\n    canUseFullMatchingFragment,\n  }: {\n    parentType: CompositeType,\n    subSelection: SelectionSet,\n    fragments: NamedFragments,\n    validator: FieldsConflictMultiBranchValidator,\n    canUseFullMatchingFragment: (match: NamedFragmentDefinition) => boolean,\n  }): SelectionSet | NamedFragmentDefinition {\n    // We limit to fragments whose selection could be applied \"directly\" at `parentType`, meaning without taking the fragment condition\n    // into account. The idea being that if the fragment condition would be needed inside `parentType`, then that condition will not\n    // have been \"normalized away\" and so we want for this very call to be called on the fragment whose type _is_ the fragment condition (at\n    // which point, this `maybeApplyingDirectlyAtType` method will apply.\n    // Also note that this is because we have this restriction that calling `expandedSelectionSetAtType` is ok.\n    const candidates = fragments.maybeApplyingDirectlyAtType(parentType);\n    if (candidates.length === 0) {\n      return subSelection;\n    }\n\n    // First, we check which of the candidates do apply inside `subSelection`, if any.\n    // If we find a candidate that applies to the whole `subSelection`, then we stop and only return\n    // that one candidate. Otherwise, we cumulate in `applyingFragments` the list of fragments that\n    // applies to a subset of `subSelection`.\n    const applyingFragments: { fragment: NamedFragmentDefinition, atType: FragmentRestrictionAtType }[] = [];\n    for (const candidate of candidates) {\n      const atType = candidate.expandedSelectionSetAtType(parentType);\n      // It's possible that while the fragment technically applies at `parentType`, it's \"rebasing\" on\n      // `parentType` is empty, or contains only `__typename`. For instance, suppose we have\n      // a union `U = A | B | C`, and then a fragment:\n      // ```graphql\n      //   fragment F on U {\n      //     ... on A {\n      //       x\n      //     }\n      //     ... on b {\n      //       y\n      //     }\n      //   }\n      // ```\n      // It is then possible to apply `F` when the parent type is `C`, but this ends up selecting\n      // nothing at all.\n      //\n      // Using `F` in those cases is, while not 100% incorrect, at least not productive, and so we\n      // skip it that case. This is essentially an optimisation.\n      if (atType.selectionSet.isEmpty() || (atType.selectionSet.selections().length === 1 && atType.selectionSet.selections()[0].isTypenameField())) {\n        continue;\n      }\n\n      // As we check inclusion, we ignore the case where the fragment queries __typename but the subSelection does not.\n      // The rational is that querying `__typename` unecessarily is mostly harmless (it always works and it's super cheap)\n      // so we don't want to not use a fragment just to save querying a `__typename` in a few cases. But the underlying\n      // context of why this matters is that the query planner always requests __typename for abstract type, and will do\n      // so in fragments too, but we can have a field that _does_ return an abstract type within a fragment, but that\n      // _does not_ end up returning an abstract type when applied in a \"more specific\" context (think a fragment on\n      // an interface I1 where a inside field returns another interface I2, but applied in the context of a implementation\n      // type of I1 where that particular field returns an implementation of I2 rather than I2 directly; we would have\n      // added __typename to the fragment (because it's all interfaces), but the selection itself, which only deals\n      // with object type, may not have __typename requested; using the fragment might still be a good idea, and\n      // querying __typename needlessly is a very small price to pay for that).\n      const res = subSelection.contains(atType.selectionSet, { ignoreMissingTypename: true });\n\n      if (res === ContainsResult.EQUAL) {\n        if (canUseFullMatchingFragment(candidate)) {\n          if (!validator.checkCanReuseFragmentAndTrackIt(atType)) {\n            // We cannot use it at all, so no point in adding to `applyingFragments`.\n            continue;\n          }\n          return candidate;\n        }\n        // If we're not going to replace the full thing, then same reasoning a below.\n        if (candidate.appliedDirectives.length === 0) {\n          applyingFragments.push({ fragment: candidate, atType});\n        }\n      // Note that if a fragment applies to only a subset of the subSelection, then we really only can use\n      // it if that fragment is defined _without_ directives.\n      } else if (res === ContainsResult.STRICTLY_CONTAINED && candidate.appliedDirectives.length === 0) {\n        applyingFragments.push({ fragment: candidate, atType });\n      }\n    }\n\n    if (applyingFragments.length === 0) {\n      return subSelection;\n    }\n\n    // We have found the list of fragments that applies to some subset of `subSelection`. In general, we\n    // want to now produce the selection set with spread for those fragments plus any selection that is not\n    // covered by any of the fragments. For instance, suppose that `subselection` is `{ a b c d e }`\n    // and we have found that `fragment F1 on X { a b c }` and `fragment F2 on X { c d }` applies, then\n    // we will generate `{ ...F1 ...F2 e }`.\n    //\n    // In that example, `c` is covered by both fragments. And this is fine in this example as it is\n    // worth using both fragments in general. A special case of this however is if a fragment is entirely\n    // included into another. That is, consider that we now have `fragment F1 on X { a ...F2 }` and\n    // `fragment F2 on X { b c }`. In that case, the code above would still match both `F1 and `F2`,\n    // but as `F1` includes `F2` already, we really want to only use `F1`. So in practice, we filter\n    // away any fragment spread that is known to be included in another one that applies.\n    //\n    // TODO: note that the logic used for this is theoretically a bit sub-optimial. That is, we only\n    // check if one of the fragment happens to directly include a spread for another fragment at\n    // top-level as in the example above. We do this because it is cheap to check and is likely the\n    // most common case of this kind of inclusion. But in theory, we would have\n    // `fragment F1 on X { a b c }` and `fragment F2 on X { b c }`, in which case `F2` is still\n    // included in `F1`, but we'd have to work harder to figure this out and it's unclear it's\n    // a good tradeoff. And while you could argue that it's on the user to define its fragments\n    // a bit more optimally, it's actually a tad more complex because we're looking at fragments\n    // in a particular context/parent type. Consider an interface `I` and:\n    // ```graphql\n    //   fragment F3 on I {\n    //     ... on X {\n    //       a\n    //     }\n    //     ... on Y {\n    //       b\n    //       c\n    //     }\n    //   }\n    //\n    //   fragment F4 on I {\n    //     ... on Y {\n    //       c\n    //     }\n    //     ... on Z {\n    //       d\n    //     }\n    //   }\n    // ```\n    // In that case, neither fragment include the other per-se. But what if we have sub-selection\n    // `{ b c }` but where parent type is `Y`. In that case, both `F3` and `F4` applies, and in that\n    // particular context, `F3` is fully included in `F4`. Long story short, we'll currently\n    // return `{ ...F3 ...F4 }` in that case, but it would be technically better to return only `F4`.\n    // However, this feels niche, and it might be costly to verify such inclusions, so not doing it\n    // for now.\n    const filteredApplyingFragments = applyingFragments.filter(({ fragment }) => !applyingFragments.some((o) => o.fragment.includes(fragment.name)))\n\n    let notCoveredByFragments = subSelection;\n    const optimized = new SelectionSetUpdates();\n    for (const { fragment, atType } of filteredApplyingFragments) {\n      if (!validator.checkCanReuseFragmentAndTrackIt(atType)) {\n        continue;\n      }\n      const notCovered = subSelection.minus(atType.selectionSet);\n      notCoveredByFragments = notCoveredByFragments.intersectionWith(notCovered);\n      optimized.add(new FragmentSpreadSelection(parentType, fragments, fragment, []));\n    }\n\n    return optimized.add(notCoveredByFragments).toSelectionSet(parentType, fragments)\n  }\n}\n\nclass FieldsConflictMultiBranchValidator {\n  private usedSpreadTrimmedPartAtLevel?: FieldsConflictValidator[];\n\n  constructor(\n    private readonly validators: FieldsConflictValidator[],\n  ) {\n  }\n\n  static ofInitial(validator: FieldsConflictValidator): FieldsConflictMultiBranchValidator {\n    return new FieldsConflictMultiBranchValidator([validator]);\n  }\n\n  forField(field: Field): FieldsConflictMultiBranchValidator {\n    const forAllBranches = this.validators.flatMap((vs) => vs.forField(field));\n    // As this is called on (non-leaf) field from the same query on which we have build the initial validators, we\n    // should find at least one validator.\n    assert(forAllBranches.length > 0, `Shoud have found at least one validator for ${field}`);\n    return new FieldsConflictMultiBranchValidator(forAllBranches);\n  }\n\n  // At this point, we known that the fragment, restricted to the current parent type, matches a subset of the\n  // sub-selection. However, there is still one case we we cannot use it that we need to check, and this is\n  // if using the fragment would create a field \"conflict\" (in the sense of the graphQL spec\n  // [`FieldsInSetCanMerge`](https://spec.graphql.org/draft/#FieldsInSetCanMerge())) and thus create an\n  // invalid selection. To be clear, `atType.selectionSet` cannot create a conflict, since it is a subset\n  // of `subSelection` and `subSelection` is valid. *But* there may be some part of the fragment that\n  // is not `atType.selectionSet` due to being \"dead branches\" for type `parentType`. And while those\n  // branches _are_ \"dead\" as far as execution goes, the `FieldsInSetCanMerge` validation does not take\n  // this into account (it's 1st step says \"including visiting fragments and inline fragments\" but has\n  // no logic regarding ignoring any fragment that may not apply due to the intersection of runtimes\n  // between multiple fragment being empty).\n  checkCanReuseFragmentAndTrackIt(fragment: FragmentRestrictionAtType): boolean {\n    // No validator means that everything in the fragment selection was part of the selection we're optimizing\n    // away (by using the fragment), and we know the original selection was ok, so nothing to check.\n    const validator = fragment.validator;\n    if (!validator) {\n      return true;\n    }\n\n    if (!this.validators.every((v) => v.doMergeWith(validator))) {\n      return false;\n    }\n\n    // We need to make sure the trimmed parts of `fragment` merges with the rest of the selection,\n    // but also that it merge with any of the trimmed parts of any fragment we have added already.\n    // Note: this last condition means that if 2 fragment conflict on their \"trimmed\" parts,\n    // then the choice of which is used can be based on the fragment ordering and selection order,\n    // which may not be optimal. This feels niche enough that we keep it simple for now, but we\n    // can revisit this decision if we run into real cases that justify it (but making it optimal\n    // would be a involved in general, as in theory you could have complex dependencies of fragments\n    // that conflict, even cycles, and you need to take the size of fragments into account to know\n    // what's best; and even then, this could even depend on overall usage, as it can be better to\n    // reuse a fragment that is used in other places, than to use one for which it's the only usage.\n    // Adding to all that the fact that conflict can happen in sibling branches).\n    if (this.usedSpreadTrimmedPartAtLevel) {\n      if (!this.usedSpreadTrimmedPartAtLevel.every((t) => validator.doMergeWith(t))) {\n        return false;\n      }\n    } else {\n      this.usedSpreadTrimmedPartAtLevel = [];\n    }\n\n    // We're good, but track the fragment\n    this.usedSpreadTrimmedPartAtLevel.push(validator);\n    return true;\n  }\n}\n\nclass FieldsConflictValidator {\n  private constructor(\n    private readonly byResponseName: Map<string, Map<Field, FieldsConflictValidator | null>>,\n  ) {\n  }\n\n  static build(s: SelectionSet): FieldsConflictValidator {\n    return FieldsConflictValidator.forLevel(s.fieldsInSet());\n  }\n\n  private static forLevel(level: CollectedFieldsInSet): FieldsConflictValidator {\n    const atLevel = new Map<string, Map<Field, CollectedFieldsInSet | null>>();\n\n    for (const { field } of level) {\n      const responseName = field.element.responseName();\n      let atResponseName = atLevel.get(responseName);\n      if (!atResponseName) {\n        atResponseName = new Map<Field, CollectedFieldsInSet>();\n        atLevel.set(responseName, atResponseName);\n      }\n      if (field.selectionSet) {\n        // It's unlikely that we've seen the same `field.element` as we don't particularly \"intern\" `Field` object (so even if the exact same field\n        // is used in 2 parts of a selection set, it will probably be a different `Field` object), so the `get` below will probably mostly return `undefined`,\n        // but it wouldn't be incorrect to re-use a `Field` object multiple side, so no reason not to handle that correctly.\n        const forField = atResponseName.get(field.element) ?? [];\n        atResponseName.set(field.element, forField.concat(field.selectionSet.fieldsInSet()));\n      } else {\n        // Note that whether a `FieldSelection` has `selectionSet` or not is entirely determined by whether the field type is a composite type\n        // or not, so even if we've seen a previous version of `field.element` before, we know it's guarantee to have had no `selectionSet`.\n        // So the `set` below may overwrite a previous entry, but it would be a `null` so no harm done.\n        atResponseName.set(field.element, null);\n      }\n    }\n\n    const byResponseName = new Map<string, Map<Field, FieldsConflictValidator | null>>();\n    for (const [name, level] of atLevel.entries()) {\n      const atResponseName = new Map<Field, FieldsConflictValidator | null>();\n      for (const [field, collectedFields] of level) {\n        const validator = collectedFields ? FieldsConflictValidator.forLevel(collectedFields) : null;\n        atResponseName.set(field, validator);\n      }\n      byResponseName.set(name, atResponseName);\n    }\n    return new FieldsConflictValidator(byResponseName);\n  }\n\n  forField(field: Field): FieldsConflictValidator[] {\n    const byResponseName = this.byResponseName.get(field.responseName());\n    if (!byResponseName) {\n      return [];\n    }\n    return mapValues(byResponseName).filter((v): v is FieldsConflictValidator => !!v);\n  }\n\n  doMergeWith(that: FieldsConflictValidator): boolean {\n    for (const [responseName, thisFields] of this.byResponseName.entries()) {\n      const thatFields = that.byResponseName.get(responseName);\n      if (!thatFields) {\n        continue;\n      }\n\n      // We're basically checking [FieldsInSetCanMerge](https://spec.graphql.org/draft/#FieldsInSetCanMerge()),\n      // but from 2 set of fields (`thisFields` and `thatFields`) of the same response that we know individually\n      // merge already.\n      for (const [thisField, thisValidator] of thisFields.entries()) {\n        for (const [thatField, thatValidator] of thatFields.entries()) {\n          // The `SameResponseShape` test that all fields must pass.\n          if (!typesCanBeMerged(thisField.definition.type!, thatField.definition.type!)) {\n            return false;\n          }\n\n          const p1 = thisField.parentType;\n          const p2 = thatField.parentType;\n          if (sameType(p1, p2) || !isObjectType(p1) || !isObjectType(p2)) {\n            // Additional checks of `FieldsInSetCanMerge` when same parent type or one isn't object\n            if (thisField.name !== thatField.name\n              || !argumentsEquals(thisField.args ?? {}, thatField.args ?? {})\n              || (thisValidator && thatValidator && !thisValidator.doMergeWith(thatValidator))\n            ) {\n              return false;\n            }\n          } else {\n            // Otherwise, the sub-selection must pass [SameResponseShape](https://spec.graphql.org/draft/#SameResponseShape()).\n            if (thisValidator && thatValidator && !thisValidator.hasSameResponseShapeThan(thatValidator)) {\n              return false;\n            }\n          }\n        }\n      }\n    }\n    return true;\n  }\n\n  hasSameResponseShapeThan(that: FieldsConflictValidator): boolean {\n    for (const [responseName, thisFields] of this.byResponseName.entries()) {\n      const thatFields = that.byResponseName.get(responseName);\n      if (!thatFields) {\n        continue;\n      }\n\n      for (const [thisField, thisValidator] of thisFields.entries()) {\n        for (const [thatField, thatValidator] of thatFields.entries()) {\n          if (!typesCanBeMerged(thisField.definition.type!, thatField.definition.type!)\n            || (thisValidator && thatValidator && !thisValidator.hasSameResponseShapeThan(thatValidator))) {\n            return false;\n          }\n        }\n      }\n    }\n    return true;\n  }\n\n  toString(indent: string = ''): string {\n    // For debugging/testing ...\n    return '{\\n'\n      + [...this.byResponseName.entries()].map(([name, byFields]) => {\n        const innerIndent = indent + '  ';\n        return `${innerIndent}${name}: [\\n`\n        + [...byFields.entries()]\n            .map(([field, next]) => `${innerIndent}  ${field.parentType}.${field}${next ? next.toString(innerIndent + '  '): ''}`)\n            .join('\\n')\n        + `\\n${innerIndent}]`;\n      }).join('\\n')\n      + `\\n${indent}}`\n  }\n}\n\nexport class FieldSelection extends AbstractSelection<Field<any>, undefined, FieldSelection> {\n  readonly kind = 'FieldSelection' as const;\n\n  constructor(\n    field: Field<any>,\n    private readonly _selectionSet?: SelectionSet,\n  ) {\n    super(field);\n  }\n\n  get selectionSet(): SelectionSet | undefined {\n    return this._selectionSet;\n  }\n\n  protected us(): FieldSelection {\n    return this;\n  }\n\n  isTypenameField(): boolean {\n    return this.element.definition.name === typenameFieldName;\n  }\n\n  // Is this a plain simple __typename without any directive or alias?\n  isPlainTypenameField(): boolean {\n    return this.element.definition.name === typenameFieldName\n        && this.element.appliedDirectives.length == 0\n        && !this.element.alias;\n  }\n\n  withAttachment(key: string, value: string): FieldSelection {\n    const updatedField = this.element.copy();\n    updatedField.addAttachment(key, value);\n    return this.withUpdatedElement(updatedField);\n  }\n\n  withUpdatedComponents(field: Field<any>, selectionSet: SelectionSet | undefined): FieldSelection {\n    if (this.element === field && this.selectionSet === selectionSet) {\n      return this;\n    }\n    return new FieldSelection(field, selectionSet);\n  }\n\n  key(): string {\n    return this.element.key();\n  }\n\n  optimize(fragments: NamedFragments, validator: FieldsConflictMultiBranchValidator): Selection {\n    const fieldBaseType = baseType(this.element.definition.type!);\n    if (!isCompositeType(fieldBaseType) || !this.selectionSet) {\n      return this;\n    }\n\n    const fieldValidator = validator.forField(this.element);\n\n    // First, see if we can reuse fragments for the selection of this field.\n    const optimized = this.tryOptimizeSubselectionWithFragments({\n      parentType: fieldBaseType,\n      subSelection: this.selectionSet,\n      fragments,\n      validator: fieldValidator,\n      // We can never apply a fragments that has directives on it at the field level.\n      canUseFullMatchingFragment: (fragment) => fragment.appliedDirectives.length === 0,\n    });\n\n    let optimizedSelection;\n    if (optimized instanceof NamedFragmentDefinition) {\n      optimizedSelection = selectionSetOf(fieldBaseType, new FragmentSpreadSelection(fieldBaseType, fragments, optimized, []));\n    } else {\n      optimizedSelection = optimized;\n    }\n\n    // Then, recurse inside the field sub-selection (note that if we matched some fragments above,\n    // this recursion will \"ignore\" those as `FragmentSpreadSelection.optimize()` is a no-op).\n    optimizedSelection = optimizedSelection.optimizeSelections(fragments, fieldValidator);\n\n    return this.selectionSet === optimizedSelection\n      ? this\n      : this.withUpdatedSelectionSet(optimizedSelection);\n  }\n\n  filterRecursiveDepthFirst(predicate: (selection: Selection) => boolean): FieldSelection | undefined {\n    if (!this.selectionSet) {\n      return predicate(this) ? this : undefined;\n    }\n\n    const updatedSelectionSet = this.selectionSet.filterRecursiveDepthFirst(predicate);\n    const thisWithFilteredSelectionSet = this.selectionSet === updatedSelectionSet\n      ? this\n      : new FieldSelection(this.element, updatedSelectionSet);\n    return predicate(thisWithFilteredSelectionSet) ? thisWithFilteredSelectionSet : undefined;\n  }\n\n  validate(variableDefinitions: VariableDefinitions, validateContextualArgs: boolean) {\n    this.element.validate(variableDefinitions, validateContextualArgs);\n    // Note that validation is kind of redundant since `this.selectionSet.validate()` will check that it isn't empty. But doing it\n    // allow to provide much better error messages.\n    validate(\n      this.element.isLeafField() || (this.selectionSet && !this.selectionSet.isEmpty()),\n      () => `Invalid empty selection set for field \"${this.element.definition.coordinate}\" of non-leaf type ${this.element.definition.type}`,\n      this.element.definition.sourceAST\n    );\n    this.selectionSet?.validate(variableDefinitions);\n  }\n\n  /**\n   * Returns a field selection \"equivalent\" to the one represented by this object, but such that its parent type\n   * is the one provided as argument.\n   *\n   * Obviously, this operation will only succeed if this selection (both the field itself and its subselections)\n   * make sense from the provided parent type. If this is not the case, this method will throw.\n   */\n  rebaseOn({\n    parentType,\n    fragments,\n    errorIfCannotRebase,\n  }: {\n    parentType: CompositeType,\n    fragments: NamedFragments | undefined,\n    errorIfCannotRebase: boolean,\n  }): FieldSelection | undefined {\n    if (this.element.parentType === parentType) {\n      return this;\n    }\n\n    const rebasedElement = this.element.rebaseOn({ parentType, errorIfCannotRebase });\n    if (!rebasedElement) {\n      return undefined;\n    }\n\n    if (!this.selectionSet) {\n      return this.withUpdatedElement(rebasedElement);\n    }\n\n    const rebasedBase = rebasedElement.baseType();\n    if (rebasedBase === this.selectionSet.parentType) {\n      return this.withUpdatedElement(rebasedElement);\n    }\n\n    validate(isCompositeType(rebasedBase), () => `Cannot rebase field selection ${this} on ${parentType}: rebased field base return type ${rebasedBase} is not composite`);\n    const rebasedSelectionSet = this.selectionSet.rebaseOn({ parentType: rebasedBase, fragments, errorIfCannotRebase });\n    return rebasedSelectionSet.isEmpty() ? undefined : this.withUpdatedComponents(rebasedElement, rebasedSelectionSet);\n  }\n\n  /**\n   * Essentially checks if `updateForAddingTo` would work on an selecion set of the provide parent type.\n   */\n  canAddTo(parentType: CompositeType): boolean {\n    if (this.element.parentType === parentType) {\n      return true;\n    }\n\n    const type = this.element.typeIfAddedTo(parentType);\n    if (!type) {\n      return false;\n    }\n\n    const base = baseType(type);\n    if (this.selectionSet && this.selectionSet.parentType !== base) {\n      assert(isCompositeType(base), () => `${this.element} should have a selection set as it's type is not a composite`);\n      return this.selectionSet.selections().every((s) => s.canAddTo(base));\n    }\n    return true;\n  }\n\n  toSelectionNode(): FieldNode {\n    const alias: NameNode | undefined = this.element.alias ? { kind: Kind.NAME, value: this.element.alias, } : undefined;\n    return {\n      kind: Kind.FIELD,\n      name: {\n        kind: Kind.NAME,\n        value: this.element.name,\n      },\n      alias,\n      arguments: this.element.argumentsToNodes(),\n      directives: this.element.appliedDirectivesToDirectiveNodes(),\n      selectionSet: this.selectionSet?.toSelectionSetNode()\n    };\n  }\n\n  withoutDefer(labelsToRemove?: Set<string>): FieldSelection {\n    return this.mapToSelectionSet((s) => s.withoutDefer(labelsToRemove));\n  }\n\n  withNormalizedDefer(normalizer: DeferNormalizer): FieldSelection {\n    return this.mapToSelectionSet((s) => s.withNormalizedDefer(normalizer));\n  }\n\n  hasDefer(): boolean {\n    return !!this.selectionSet?.hasDefer();\n  }\n\n  normalize({ parentType, recursive }: { parentType: CompositeType, recursive? : boolean }): FieldSelection {\n    // This could be an interface field, and if we're normalizing on one of the implementation of that\n    // interface, we want to make sure we use the field of the implementation, as it may in particular\n    // have a more specific type which should propagate to the recursive call to normalize.\n\n    const definition = parentType === this.parentType\n      ? this.element.definition\n      : parentType.field(this.element.name);\n    assert(definition, `Cannot normalize ${this.element} at ${parentType} which does not have that field`)\n\n    const element = this.element.definition === definition ? this.element : this.element.withUpdatedDefinition(definition);\n    if (!this.selectionSet) {\n      return this.withUpdatedElement(element);\n    }\n\n    const base = element.baseType();\n    assert(isCompositeType(base), () => `Field ${element} should not have a sub-selection`);\n    const normalizedSubSelection = (recursive ?? true) ? this.selectionSet.normalize({ parentType: base }) : this.selectionSet;\n    // In rare caes, it's possible that everything in the sub-selection was trimmed away and so the\n    // sub-selection is empty. Which suggest something may be wrong with this part of the query\n    // intent, but the query was valid while keeping an empty sub-selection isn't. So in that\n    // case, we just add some \"non-included\" __typename field just to keep the query valid.\n    if (normalizedSubSelection?.isEmpty()) {\n      return this.withUpdatedComponents(\n        element,\n        selectionSetOfElement(\n          new Field(\n            base.typenameField()!,\n            undefined,\n            [new Directive('include', { 'if': false })],\n          )\n        )\n      );\n    } else {\n      return this.withUpdatedComponents(element, normalizedSubSelection);\n    }\n  }\n\n  expandFragments(updatedFragments?: NamedFragments): FieldSelection {\n    return this.mapToSelectionSet((s) => s.expandFragments(updatedFragments));\n  }\n\n  equals(that: Selection): boolean {\n    if (this === that) {\n      return true;\n    }\n\n    if (!(that instanceof FieldSelection) || !this.element.equals(that.element)) {\n      return false;\n    }\n    if (!this.selectionSet) {\n      return !that.selectionSet;\n    }\n    return !!that.selectionSet && this.selectionSet.equals(that.selectionSet);\n  }\n\n  contains(that: Selection, options?: { ignoreMissingTypename?: boolean }): ContainsResult {\n    if (!(that instanceof FieldSelection) || !this.element.equals(that.element)) {\n      return ContainsResult.NOT_CONTAINED;\n    }\n\n    if (!this.selectionSet) {\n      assert(!that.selectionSet, '`this` and `that` have the same element, so if one does not have a sub-selection, neither should the other one')\n      return ContainsResult.EQUAL;\n    }\n    assert(that.selectionSet, '`this` and `that` have the same element, so if one has sub-selection, the other one should too')\n    return this.selectionSet.contains(that.selectionSet, options);\n  }\n\n  toString(expandFragments: boolean = true, indent?: string): string {\n    return (indent ?? '') + this.element + (this.selectionSet ? ' ' + this.selectionSet.toString(expandFragments, true, indent) : '');\n  }\n}\n\nexport abstract class FragmentSelection extends AbstractSelection<FragmentElement, never, FragmentSelection> {\n  readonly kind = 'FragmentSelection' as const;\n\n  abstract canAddTo(parentType: CompositeType): boolean;\n\n  protected us(): FragmentSelection {\n    return this;\n  }\n\n  protected validateDeferAndStream() {\n    if (this.element.hasDefer() || this.element.hasStream()) {\n      const schemaDef = this.element.schema().schemaDefinition;\n      const parentType = this.parentType;\n      validate(\n        schemaDef.rootType('mutation') !== parentType && schemaDef.rootType('subscription') !== parentType,\n        () => `The @defer and @stream directives cannot be used on ${schemaDef.roots().filter((t) => t.type === parentType).pop()?.rootKind} root type \"${parentType}\"`,\n      );\n    }\n  }\n\n  filterRecursiveDepthFirst(predicate: (selection: Selection) => boolean): FragmentSelection | undefined {\n    // Note that we essentially expand all fragments as part of this.\n    const updatedSelectionSet = this.selectionSet.filterRecursiveDepthFirst(predicate);\n    const thisWithFilteredSelectionSet = updatedSelectionSet === this.selectionSet\n      ? this\n      : new InlineFragmentSelection(this.element, updatedSelectionSet);\n\n    return predicate(thisWithFilteredSelectionSet) ? thisWithFilteredSelectionSet : undefined;\n  }\n\n  hasDefer(): boolean {\n    return this.element.hasDefer() || this.selectionSet.hasDefer();\n  }\n\n  abstract equals(that: Selection): boolean;\n\n  abstract contains(that: Selection, options?: { ignoreMissingTypename?: boolean }): ContainsResult;\n\n  normalize({ parentType, recursive }: { parentType: CompositeType, recursive? : boolean }): FragmentSelection | SelectionSet | undefined {\n    const thisCondition = this.element.typeCondition;\n\n    // This method assumes by contract that `parentType` runtimes intersects `this.parentType`'s, but `parentType`\n    // runtimes may be a subset. So first check if the selection should not be discarded on that account (that\n    // is, we should not keep the selection if its condition runtimes don't intersect at all with those of\n    // `parentType` as that would ultimately make an invalid selection set).\n    if (thisCondition && parentType !== this.parentType) {\n      const conditionRuntimes = possibleRuntimeTypes(thisCondition);\n      const typeRuntimes = possibleRuntimeTypes(parentType);\n      if (!conditionRuntimes.some((t) => typeRuntimes.includes(t))) {\n        return undefined;\n      }\n    }\n\n    return this.normalizeKnowingItIntersects({ parentType, recursive });\n  }\n\n  protected abstract normalizeKnowingItIntersects({ parentType, recursive }: { parentType: CompositeType, recursive? : boolean }): FragmentSelection | SelectionSet | undefined;\n}\n\nclass InlineFragmentSelection extends FragmentSelection {\n  constructor(\n    fragment: FragmentElement,\n    private readonly _selectionSet: SelectionSet,\n  ) {\n    super(fragment);\n  }\n\n  get selectionSet(): SelectionSet {\n    return this._selectionSet;\n  }\n\n  key(): string {\n    return this.element.key();\n  }\n\n  withUpdatedComponents(fragment: FragmentElement, selectionSet: SelectionSet): InlineFragmentSelection {\n    if (fragment === this.element && selectionSet === this.selectionSet) {\n      return this;\n    }\n    return new InlineFragmentSelection(fragment, selectionSet);\n  }\n\n  validate(variableDefinitions: VariableDefinitions) {\n    this.validateDeferAndStream();\n    // Note that validation is kind of redundant since `this.selectionSet.validate()` will check that it isn't empty. But doing it\n    // allow to provide much better error messages.\n    validate(\n      !this.selectionSet.isEmpty(),\n      () => `Invalid empty selection set for fragment \"${this.element}\"`\n    );\n    this.selectionSet.validate(variableDefinitions);\n  }\n\n  rebaseOn({\n    parentType,\n    fragments,\n    errorIfCannotRebase,\n  }: {\n    parentType: CompositeType,\n    fragments: NamedFragments | undefined,\n    errorIfCannotRebase: boolean,\n  }): FragmentSelection | undefined {\n    if (this.parentType === parentType) {\n      return this;\n    }\n\n    const rebasedFragment = this.element.rebaseOn({ parentType, errorIfCannotRebase });\n    if (!rebasedFragment) {\n      return undefined;\n    }\n\n    const rebasedCastedType = rebasedFragment.castedType();\n    if (rebasedCastedType === this.selectionSet.parentType) {\n      return this.withUpdatedElement(rebasedFragment);\n    }\n\n    const rebasedSelectionSet = this.selectionSet.rebaseOn({ parentType: rebasedCastedType, fragments, errorIfCannotRebase });\n    return rebasedSelectionSet.isEmpty() ? undefined : this.withUpdatedComponents(rebasedFragment, rebasedSelectionSet);\n  }\n\n  canAddTo(parentType: CompositeType): boolean {\n    if (this.element.parentType === parentType) {\n      return true;\n    }\n\n    const type = this.element.castedTypeIfAddedTo(parentType);\n    if (!type) {\n      return false;\n    }\n\n    if (this.selectionSet.parentType !== type) {\n      return this.selectionSet.selections().every((s) => s.canAddTo(type));\n    }\n    return true;\n  }\n\n  toSelectionNode(): InlineFragmentNode {\n    const typeCondition = this.element.typeCondition;\n    return {\n      kind: Kind.INLINE_FRAGMENT,\n      typeCondition: typeCondition\n        ? {\n          kind: Kind.NAMED_TYPE,\n          name: {\n            kind: Kind.NAME,\n            value: typeCondition.name,\n          },\n        }\n        : undefined,\n      directives: this.element.appliedDirectivesToDirectiveNodes(),\n      selectionSet: this.selectionSet.toSelectionSetNode()\n    };\n  }\n\n  optimize(fragments: NamedFragments, validator: FieldsConflictMultiBranchValidator): FragmentSelection {\n    let optimizedSelection = this.selectionSet;\n\n    // First, see if we can reuse fragments for the selection of this field.\n    const typeCondition = this.element.typeCondition;\n    if (typeCondition) {\n      const optimized = this.tryOptimizeSubselectionWithFragments({\n        parentType: typeCondition,\n        subSelection: optimizedSelection,\n        fragments,\n        validator,\n        canUseFullMatchingFragment: (fragment) => {\n          // To be able to use a matching fragment, it needs to have either no directives, or if it has\n          // some, then:\n          //  1. all it's directives should also be on the current element.\n          //  2. the directives of this element should be the fragment condition.\n          // because if those 2 conditions are true, we can replace the whole current inline fragment\n          // with the match spread and directives will still match.\n          return fragment.appliedDirectives.length === 0\n            || (\n              sameType(typeCondition, fragment.typeCondition)\n                && fragment.appliedDirectives.every((d) => this.element.appliedDirectives.some((s) => sameDirectiveApplication(d, s)))\n            );\n        },\n      });\n\n      if (optimized instanceof NamedFragmentDefinition) {\n        // We're fully matching the sub-selection. If the fragment condition is also this element condition,\n        // then we can replace the whole element by the spread (not just the sub-selection).\n        if (sameType(typeCondition, optimized.typeCondition)) {\n          // Note that `canUseFullMatchingFragment` above guarantees us that this element directives\n          // are a superset of the fragment directives. But there can be additional directives, and in\n          // that case they should be kept on the spread.\n          let spreadDirectives = this.element.appliedDirectives;\n          if (optimized.appliedDirectives) {\n            spreadDirectives = spreadDirectives.filter(\n              (s) => !optimized.appliedDirectives.some((d) => sameDirectiveApplication(d, s))\n            );\n          }\n          return new FragmentSpreadSelection(this.parentType, fragments, optimized, spreadDirectives);\n        } else {\n          // Otherwise, we keep this element and use a sub-selection with just the spread.\n          optimizedSelection = selectionSetOf(typeCondition, new FragmentSpreadSelection(typeCondition, fragments, optimized, []));\n        }\n      } else {\n        optimizedSelection = optimized;\n      }\n    }\n\n    // Then, recurse inside the field sub-selection (note that if we matched some fragments above,\n    // this recursion will \"ignore\" those as `FragmentSpreadSelection.optimize()` is a no-op).\n    optimizedSelection = optimizedSelection.optimizeSelections(fragments, validator);\n\n    return this.selectionSet === optimizedSelection\n      ? this\n      : new InlineFragmentSelection(this.element, optimizedSelection);\n  }\n\n  withoutDefer(labelsToRemove?: Set<string>): InlineFragmentSelection | SelectionSet {\n    const newSelection = this.selectionSet.withoutDefer(labelsToRemove);\n    const deferArgs = this.element.deferDirectiveArgs();\n    const hasDeferToRemove = deferArgs && (!labelsToRemove || (deferArgs.label && labelsToRemove.has(deferArgs.label)));\n    if (newSelection === this.selectionSet && !hasDeferToRemove) {\n      return this;\n    }\n    const newElement = hasDeferToRemove ? this.element.withoutDefer() : this.element;\n    if (!newElement) {\n      return newSelection;\n    }\n    return this.withUpdatedComponents(newElement, newSelection);\n  }\n\n  withNormalizedDefer(normalizer: DeferNormalizer): InlineFragmentSelection | SelectionSet {\n    const newElement = this.element.withNormalizedDefer(normalizer);\n    const newSelection = this.selectionSet.withNormalizedDefer(normalizer)\n    if (!newElement) {\n      return newSelection;\n    }\n    return newElement === this.element && newSelection === this.selectionSet\n      ? this\n      : this.withUpdatedComponents(newElement, newSelection);\n  }\n\n  protected normalizeKnowingItIntersects({ parentType, recursive }: { parentType: CompositeType, recursive? : boolean }): FragmentSelection | SelectionSet | undefined {\n    const thisCondition = this.element.typeCondition;\n\n    // We know the condition is \"valid\", but it may not be useful. That said, if the condition has directives,\n    // we preserve the fragment no matter what.\n    if (this.element.appliedDirectives.length === 0) {\n      // There is a number of cases where a fragment is not useful:\n      // 1. if there is not conditions (remember it also has no directives).\n      // 2. if it's the same type as the current type: it's not restricting types further.\n      // 3. if the current type is an object more generally: because in that case too the condition\n      //   cannot be restricting things further (it's typically a less precise interface/union).\n      if (!thisCondition || parentType === this.element.typeCondition || isObjectType(parentType)) {\n        const normalized = this.selectionSet.normalize({ parentType, recursive });\n        return normalized.isEmpty() ? undefined : normalized;\n      }\n    }\n\n    // We preserve the current fragment, so we only recurse within the sub-selection if we're asked to be recusive.\n    // (note that even if we're not recursive, we may still have some \"lifting\" to do)\n    let normalizedSelectionSet: SelectionSet;\n    if (recursive ?? true) {\n      normalizedSelectionSet = this.selectionSet.normalize({ parentType: thisCondition ?? parentType });\n\n      // It could be that everything was unsatisfiable.\n      if (normalizedSelectionSet.isEmpty()) {\n        if (this.element.appliedDirectives.length === 0) {\n          return undefined;\n        } else {\n          return this.withUpdatedComponents(\n            // We should be able to rebase, or there is a bug, so error if that is the case.\n            this.element.rebaseOnOrError(parentType),\n            selectionSetOfElement(\n              new Field(\n                (this.element.typeCondition ?? parentType).typenameField()!,\n                undefined,\n                [new Directive('include', { 'if': false })],\n              )\n            )\n          );\n        }\n      }\n    } else {\n      normalizedSelectionSet = this.selectionSet;\n    }\n\n    // Second, we check if some of the sub-selection fragments can be \"lifted\" outside of this fragment. This can happen if:\n    // 1. the current fragment is an abstract type,\n    // 2. the sub-fragment is an object type,\n    // 3. the sub-fragment type is a valid runtime of the current type.\n    if (this.element.appliedDirectives.length === 0 && isAbstractType(thisCondition!)) {\n      assert(!isObjectType(parentType), () => `Should not have got here if ${parentType} is an object type`);\n      const currentRuntimes = possibleRuntimeTypes(parentType);\n      const liftableSelections: Selection[] = [];\n      for (const selection of normalizedSelectionSet.selections()) {\n        if (selection.kind === 'FragmentSelection'\n          && selection.element.typeCondition\n          && isObjectType(selection.element.typeCondition)\n          && currentRuntimes.includes(selection.element.typeCondition)\n        ) {\n          liftableSelections.push(selection);\n        }\n      }\n\n      // If we can lift all selections, then that just mean we can get rid of the current fragment altogether\n      if (liftableSelections.length === normalizedSelectionSet.selections().length) {\n        return normalizedSelectionSet;\n      }\n\n      // Otherwise, if there is \"liftable\" selections, we must return a set comprised of those lifted selection,\n      // and the current fragment _without_ those lifted selections.\n      if (liftableSelections.length > 0) {\n        const newSet = new SelectionSetUpdates();\n        newSet.add(liftableSelections);\n        newSet.add(this.withUpdatedSelectionSet(\n          normalizedSelectionSet.filter((s) => !liftableSelections.includes(s)),\n        ));\n        return newSet.toSelectionSet(parentType);\n      }\n    }\n\n    return this.parentType === parentType && this.selectionSet === normalizedSelectionSet\n      ? this\n      : this.withUpdatedComponents(this.element.rebaseOnOrError(parentType), normalizedSelectionSet);\n  }\n\n  expandFragments(updatedFragments: NamedFragments | undefined): FragmentSelection {\n    return this.mapToSelectionSet((s) => s.expandFragments(updatedFragments));\n  }\n\n  equals(that: Selection): boolean {\n    if (this === that) {\n      return true;\n    }\n\n    return (that instanceof FragmentSelection)\n      && this.element.equals(that.element)\n      && this.selectionSet.equals(that.selectionSet);\n  }\n\n  contains(that: Selection, options?: { ignoreMissingTypename?: boolean }): ContainsResult {\n    if (!(that instanceof FragmentSelection) || !this.element.equals(that.element)) {\n      return ContainsResult.NOT_CONTAINED;\n    }\n\n    return this.selectionSet.contains(that.selectionSet, options);\n  }\n\n  toString(expandFragments: boolean = true, indent?: string): string {\n    return (indent ?? '') + this.element + ' ' + this.selectionSet.toString(expandFragments, true, indent);\n  }\n}\n\nexport class FragmentSpreadSelection extends FragmentSelection {\n  private computedKey: string | undefined;\n\n  constructor(\n    sourceType: CompositeType,\n    private readonly fragments: NamedFragments,\n    readonly namedFragment: NamedFragmentDefinition,\n    private readonly spreadDirectives: readonly Directive<any>[],\n  ) {\n    super(new FragmentElement(sourceType, namedFragment.typeCondition, namedFragment.appliedDirectives.concat(spreadDirectives)));\n  }\n\n  isFragmentSpread(): boolean {\n    return true;\n  }\n\n  get selectionSet(): SelectionSet {\n    return this.namedFragment.selectionSet;\n  }\n\n  key(): string {\n    if (!this.computedKey) {\n      this.computedKey = '...' + this.namedFragment.name + directivesToString(this.spreadDirectives);\n    }\n    return this.computedKey;\n  }\n\n  withUpdatedComponents(_fragment: FragmentElement, _selectionSet: SelectionSet): InlineFragmentSelection {\n    assert(false, `Unsupported`);\n  }\n\n  normalizeKnowingItIntersects({ parentType }: { parentType: CompositeType }): FragmentSelection {\n    // We must update the spread parent type if necessary since we're not going deeper,\n    // or we'll be fundamentally losing context.\n    assert(parentType.schema() === this.parentType.schema(), 'Should not try to normalize using a type from another schema');\n    return this.rebaseOnOrError({ parentType, fragments: this.fragments });\n  }\n\n  validate(): void {\n    this.validateDeferAndStream();\n\n    validate(\n      runtimeTypesIntersects(this.parentType, this.namedFragment.typeCondition),\n      () => `Fragment \"${this.namedFragment.name}\" cannot be spread inside type ${this.parentType} as the runtime types do not intersect ${this.namedFragment.typeCondition}`\n    );\n  }\n\n  toSelectionNode(): FragmentSpreadNode {\n    const directiveNodes = directivesToDirectiveNodes(this.spreadDirectives);\n    return {\n      kind: Kind.FRAGMENT_SPREAD,\n      name: { kind: Kind.NAME, value: this.namedFragment.name },\n      directives: directiveNodes,\n    };\n  }\n\n  optimize(_1: NamedFragments, _2: FieldsConflictMultiBranchValidator): FragmentSelection {\n    return this;\n  }\n\n  rebaseOn({\n    parentType,\n    fragments,\n    errorIfCannotRebase,\n  }: {\n    parentType: CompositeType,\n    fragments: NamedFragments | undefined,\n    errorIfCannotRebase: boolean,\n  }): FragmentSelection | undefined {\n    // We preserve the parent type here, to make sure we don't lose context, but we actually don't\n    // want to expand the spread  as that would compromise the code that optimize subgraph fetches to re-use named\n    // fragments.\n    //\n    // This is a little bit iffy, because the fragment may not apply at this parent type, but we\n    // currently leave it to the caller to ensure this is not a mistake. But most of the\n    // QP code works on selections with fully expanded fragments, so this code (and that of `canAddTo`\n    // on come into play in the code for reusing fragments, and that code calls those methods\n    // appropriately.\n    if (this.parentType === parentType) {\n      return this;\n    }\n\n    // If we're rebasing on a _different_ schema, then we *must* have fragments, since reusing\n    // `this.fragments` would be incorrect. If we're on the same schema though, we're happy to default\n    // to `this.fragments`.\n    const rebaseOnSameSchema = this.parentType.schema() === parentType.schema();\n    assert(fragments || rebaseOnSameSchema, `Must provide fragments is rebasing on other schema`);\n    const newFragments = fragments ?? this.fragments;\n    const namedFragment = newFragments.get(this.namedFragment.name);\n    // If we're rebasing on another schema (think a subgraph), then named fragments will have been rebased on that, and some\n    // of them may not contain anything that is on that subgraph, in which case they will not have been included at all.\n    // If so, then as long as we're not ask to error if we cannot rebase, then we're happy to skip that spread (since again,\n    // it expands to nothing that apply on the schema).\n    if (!namedFragment) {\n      validate(!errorIfCannotRebase, () => `Cannot rebase ${this.toString(false)} if it isn't part of the provided fragments`);\n      return undefined;\n    }\n\n    // Lastly, if we rebase on a different schema, it's possible the fragment type does not intersect the\n    // parent type. For instance, the parent type could be some object type T while the fragment is an\n    // interface I, and T may implement I in the supergraph, but not in a particular subgraph (of course,\n    // if I don't exist at all in the subgraph, then we'll have exited above, but I may exist in the\n    // subgraph, just not be implemented by T for some reason). In that case, we can't reuse the fragment\n    // as its spread is essentially invalid in that position, so we have to replace it by the expansion\n    // of that fragment, which we rebase on the parentType (which in turn, will remove anythings within\n    // the fragment selection that needs removing, potentially everything).\n    if (!rebaseOnSameSchema && !runtimeTypesIntersects(parentType, namedFragment.typeCondition)) {\n      // Note that we've used the rebased `namedFragment` to check the type intersection because we needed to\n      // compare runtime types \"for the schema we're rebasing into\". But now that we're deciding to not reuse\n      // this rebased fragment, what we rebase is the selection set of the non-rebased fragment. And that's\n      // important because the very logic we're hitting here may need to happen inside the rebase do the\n      // fragment selection, but that logic would not be triggered if we used the rebased `namedFragment` since\n      // `rebaseOnSameSchema` would then be 'true'.\n      const expanded = this.namedFragment.selectionSet.rebaseOn({ parentType, fragments, errorIfCannotRebase });\n      // In theory, we could return the selection set directly, but making `Selection.rebaseOn` sometimes\n      // return a `SelectionSet` complicate things quite a bit. So instead, we encapsulate the selection set\n      // in an \"empty\" inline fragment. This make for non-really-optimal selection sets in the (relatively\n      // rare) case where this is triggered, but in practice this \"inefficiency\" is removed by future calls\n      // to `normalize`.\n      return expanded.isEmpty() ? undefined : new InlineFragmentSelection(new FragmentElement(parentType), expanded);\n    }\n\n    return new FragmentSpreadSelection(\n      parentType,\n      newFragments,\n      namedFragment,\n      this.spreadDirectives,\n    );\n  }\n\n  canAddTo(_: CompositeType): boolean {\n    // Since `rebaseOn` never fail, we copy the logic here and always return `true`. But as\n    // mentioned in `rebaseOn`, this leave it a bit to the caller to know what he is doing.\n    return true;\n  }\n\n  expandFragments(updatedFragments: NamedFragments | undefined): FragmentSelection | readonly Selection[] {\n    // Note that this test will always fail if `updatedFragments` is `undefined`, making us expand everything.\n    if (updatedFragments?.has(this.namedFragment.name)) {\n      // This one is still there, it's not expanded.\n      return this;\n    }\n\n    const expandedSubSelections = this.selectionSet.expandFragments(updatedFragments);\n    return sameType(this.parentType, this.namedFragment.typeCondition) && this.element.appliedDirectives.length === 0\n      ? expandedSubSelections.selections()\n      : new InlineFragmentSelection(this.element, expandedSubSelections);\n  }\n\n  collectUsedFragmentNames(collector: Map<string, number>): void {\n    const usageCount = collector.get(this.namedFragment.name);\n    collector.set(this.namedFragment.name, usageCount === undefined ? 1 : usageCount + 1);\n  }\n\n  withoutDefer(_labelsToRemove?: Set<string>): FragmentSpreadSelection {\n    assert(false, 'Unsupported, see `Operation.withAllDeferLabelled`');\n  }\n\n  withNormalizedDefer(_normalizer: DeferNormalizer): FragmentSpreadSelection {\n    assert(false, 'Unsupported, see `Operation.withAllDeferLabelled`');\n  }\n\n  minus(that: Selection): undefined {\n    assert(this.equals(that), () => `Invalid operation for ${this.toString(false)} and ${that.toString(false)}`);\n    return undefined;\n  }\n\n  equals(that: Selection): boolean {\n    if (this === that) {\n      return true;\n    }\n\n    return (that instanceof FragmentSpreadSelection)\n      && this.namedFragment.name === that.namedFragment.name\n      && sameDirectiveApplications(this.spreadDirectives, that.spreadDirectives);\n  }\n\n  contains(that: Selection, options?: { ignoreMissingTypename?: boolean }): ContainsResult {\n    if (this.equals(that)) {\n      return ContainsResult.EQUAL;\n    }\n\n    if (!(that instanceof FragmentSelection) || !this.element.equals(that.element)) {\n      return ContainsResult.NOT_CONTAINED;\n    }\n\n    return this.selectionSet.contains(that.selectionSet, options);\n  }\n\n  toString(expandFragments: boolean = true, indent?: string): string {\n    if (expandFragments) {\n      return (indent ?? '') + this.element + ' ' + this.selectionSet.toString(true, true, indent);\n    } else {\n      return (indent ?? '') + '...' + this.namedFragment.name + directivesToString(this.spreadDirectives);\n    }\n  }\n}\n\nfunction selectionSetOfNode(\n  parentType: CompositeType,\n  node: SelectionSetNode,\n  variableDefinitions: VariableDefinitions,\n  fragments: NamedFragments | undefined,\n  fieldAccessor: (type: CompositeType, fieldName: string) => FieldDefinition<any> | undefined = (type, name) => type.field(name)\n): SelectionSet {\n  if (node.selections.length === 1) {\n    return selectionSetOf(\n      parentType,\n      selectionOfNode(parentType, node.selections[0], variableDefinitions, fragments, fieldAccessor),\n    );\n  }\n\n  const selections = new SelectionSetUpdates();\n  for (const selectionNode of node.selections) {\n    selections.add(selectionOfNode(parentType, selectionNode, variableDefinitions, fragments, fieldAccessor));\n  }\n  return selections.toSelectionSet(parentType, fragments);\n}\n\nfunction directiveOfNode<T extends DirectiveTargetElement<T>>(schema: Schema, node: DirectiveNode): Directive<T> {\n  const directiveDef = schema.directive(node.name.value);\n  validate(directiveDef, () => `Unknown directive \"@${node.name.value}\"`)\n  return new Directive(directiveDef.name, argumentsFromAST(directiveDef.coordinate, node.arguments, directiveDef));\n}\n\nfunction directivesOfNodes<T extends DirectiveTargetElement<T>>(schema: Schema, nodes: readonly DirectiveNode[] | undefined): Directive<T>[] {\n  return nodes?.map((n) => directiveOfNode(schema, n)) ?? [];\n}\n\nfunction selectionOfNode(\n  parentType: CompositeType,\n  node: SelectionNode,\n  variableDefinitions: VariableDefinitions,\n  fragments: NamedFragments | undefined,\n  fieldAccessor: (type: CompositeType, fieldName: string) => FieldDefinition<any> | undefined = (type, name) => type.field(name)\n): Selection {\n  let selection: Selection;\n  const directives = directivesOfNodes(parentType.schema(), node.directives);\n  switch (node.kind) {\n    case Kind.FIELD:\n      const definition: FieldDefinition<any> | undefined  = fieldAccessor(parentType, node.name.value);\n      validate(definition, () => `Cannot query field \"${node.name.value}\" on type \"${parentType}\".`, parentType.sourceAST);\n      const type = baseType(definition.type!);\n      const selectionSet = node.selectionSet\n        ? selectionSetOfNode(type as CompositeType, node.selectionSet, variableDefinitions, fragments, fieldAccessor)\n        : undefined;\n\n      selection = new FieldSelection(\n        new Field(definition, argumentsFromAST(definition.coordinate, node.arguments, definition), directives, node.alias?.value),\n        selectionSet,\n      );\n      break;\n    case Kind.INLINE_FRAGMENT:\n      const element = new FragmentElement(parentType, node.typeCondition?.name.value, directives);\n      selection = new InlineFragmentSelection(\n        element,\n        selectionSetOfNode(element.typeCondition ? element.typeCondition : element.parentType, node.selectionSet, variableDefinitions, fragments, fieldAccessor),\n      );\n      break;\n    case Kind.FRAGMENT_SPREAD:\n      const fragmentName = node.name.value;\n      validate(fragments, () => `Cannot find fragment name \"${fragmentName}\" (no fragments were provided)`);\n      const fragment = fragments.get(fragmentName);\n      validate(fragment, () => `Cannot find fragment name \"${fragmentName}\" (provided fragments are: [${fragments.names().join(', ')}])`);\n      selection = new FragmentSpreadSelection(parentType, fragments, fragment, directives);\n      break;\n  }\n  return selection;\n}\n\nexport function operationFromDocument(\n  schema: Schema,\n  document: DocumentNode,\n  options?: {\n    operationName?: string,\n    validate?: boolean,\n  }\n) : Operation {\n  let operation: OperationDefinitionNode | undefined;\n  let operation_directives: Directive<any>[] | undefined; // the directives on `operation`\n  const operationName = options?.operationName;\n  const fragments = new NamedFragments();\n  // We do a first pass to collect the operation, and create all named fragment, but without their selection set yet.\n  // This allow later to be able to access any fragment regardless of the order in which the fragments are defined.\n  document.definitions.forEach(definition => {\n    switch (definition.kind) {\n      case Kind.OPERATION_DEFINITION:\n        validate(!operation || operationName, () => 'Must provide operation name if query contains multiple operations.');\n        if (!operationName || (definition.name && definition.name.value === operationName)) {\n          operation = definition;\n          operation_directives = directivesOfNodes(schema, definition.directives);\n        }\n        break;\n      case Kind.FRAGMENT_DEFINITION:\n        const name = definition.name.value;\n        const typeName = definition.typeCondition.name.value;\n        const typeCondition = schema.type(typeName);\n        if (!typeCondition) {\n          throw ERRORS.INVALID_GRAPHQL.err(`Unknown type \"${typeName}\" for fragment \"${name}\"`, { nodes: definition });\n        }\n        if (!isCompositeType(typeCondition)) {\n          throw ERRORS.INVALID_GRAPHQL.err(`Invalid fragment \"${name}\" on non-composite type \"${typeName}\"`, { nodes: definition });\n        }\n        fragments.add(new NamedFragmentDefinition(schema, name, typeCondition, directivesOfNodes(schema, definition.directives)));\n        break;\n    }\n  });\n\n  validate(operation, () => operationName ? `Unknown operation named \"${operationName}\"` : 'No operation found in provided document.');\n  // Note that we need the variables to handle the fragments, as they can be used there.\n  const variableDefinitions = operation.variableDefinitions\n    ? variableDefinitionsFromAST(schema, operation.variableDefinitions)\n    : new VariableDefinitions();\n\n  // We can now parse all fragments.\n  document.definitions.forEach(definition => {\n    switch (definition.kind) {\n      case Kind.FRAGMENT_DEFINITION:\n        const fragment = fragments.get(definition.name.value)!;\n        fragment.setSelectionSet(selectionSetOfNode(fragment.typeCondition, definition.selectionSet, variableDefinitions, fragments));\n        break;\n    }\n  });\n  fragments.validate(variableDefinitions);\n  return operationFromAST({schema, operation, operation_directives, variableDefinitions, fragments, validateInput: options?.validate});\n}\n\nfunction operationFromAST({\n  schema,\n  operation,\n  operation_directives,\n  variableDefinitions,\n  fragments,\n  validateInput,\n}:{\n  schema: Schema,\n  operation: OperationDefinitionNode,\n  operation_directives?: Directive<any>[],\n  variableDefinitions: VariableDefinitions,\n  fragments: NamedFragments,\n  validateInput?: boolean,\n}) : Operation {\n  const rootType = schema.schemaDefinition.root(operation.operation);\n  validate(rootType, () => `The schema has no \"${operation.operation}\" root type defined`);\n  const fragmentsIfAny = fragments.isEmpty() ? undefined : fragments;\n  return new Operation(\n    schema,\n    operation.operation,\n    parseSelectionSet({\n      parentType: rootType.type,\n      source: operation.selectionSet,\n      variableDefinitions,\n      fragments: fragmentsIfAny,\n      validate: validateInput,\n    }),\n    variableDefinitions,\n    fragmentsIfAny,\n    operation.name?.value,\n    operation_directives\n  );\n}\n\nexport function parseOperation(\n  schema: Schema,\n  operation: string,\n  options?: {\n    operationName?: string,\n    validate?: boolean,\n  },\n): Operation {\n  return operationFromDocument(schema, parse(operation), options);\n}\n\nexport function parseSelectionSet({\n  parentType,\n  source,\n  variableDefinitions = new VariableDefinitions(),\n  fragments,\n  fieldAccessor,\n  validate = true,\n}: {\n  parentType: CompositeType,\n  source: string | SelectionSetNode,\n  variableDefinitions?: VariableDefinitions,\n  fragments?: NamedFragments,\n  fieldAccessor?: (type: CompositeType, fieldName: string) => (FieldDefinition<any> | undefined),\n  validate?: boolean,\n}): SelectionSet {\n  // TODO: we should maybe allow the selection, when a string, to contain fragment definitions?\n  const node = typeof source === 'string'\n    ? parseOperationAST(source.trim().startsWith('{') ? source : `{${source}}`).selectionSet\n    : source;\n  const selectionSet = selectionSetOfNode(parentType, node, variableDefinitions ?? new VariableDefinitions(), fragments, fieldAccessor);\n  if (validate)\n    selectionSet.validate(variableDefinitions);\n  return selectionSet;\n}\n\nexport function parseOperationAST(source: string): OperationDefinitionNode {\n  const parsed = parse(source);\n  validate(parsed.definitions.length === 1, () => 'Selections should contain a single definitions, found ' + parsed.definitions.length);\n  const def = parsed.definitions[0];\n  validate(def.kind === Kind.OPERATION_DEFINITION, () => 'Expected an operation definition but got a ' + def.kind);\n  return def;\n}\n\nexport function operationToDocument(operation: Operation): DocumentNode {\n  const operationAST: OperationDefinitionNode = {\n    kind: Kind.OPERATION_DEFINITION,\n    operation: operation.rootKind as OperationTypeNode,\n    name: operation.name ? { kind: Kind.NAME, value: operation.name } : undefined,\n    selectionSet: operation.selectionSet.toSelectionSetNode(),\n    variableDefinitions: operation.variableDefinitions.toVariableDefinitionNodes(),\n    directives: directivesToDirectiveNodes(operation.appliedDirectives),\n  };\n  const fragmentASTs: DefinitionNode[] = operation.fragments\n    ? operation.fragments?.toFragmentDefinitionNodes()\n    : [];\n  return {\n    kind: Kind.DOCUMENT,\n    definitions: [operationAST as DefinitionNode].concat(fragmentASTs),\n  };\n}\n\nexport function hasSelectionWithPredicate(selectionSet: SelectionSet, predicate: (s: Selection) => boolean): boolean {\n  for (const selection of selectionSet.selections()) {\n    if (predicate(selection)) {\n      return true;\n    }\n    if (selection.selectionSet) {\n      if (hasSelectionWithPredicate(selection.selectionSet, predicate)) {\n        return true;\n      }\n    }\n  }\n  return false;\n}\n", "import { DirectiveLocation, GraphQLError } from \"graphql\";\nimport { FeatureDefinition, FeatureDefinitions, FeatureUrl, FeatureVersion } from \"./coreSpec\";\nimport { DirectiveDefinition, NonNullType } from \"../definitions\";\nimport { createDirectiveSpecification, DirectiveSpecification } from \"../directiveAndTypeSpecification\";\nimport { ERRORS } from \"../error\";\nimport { registerKnownFeature } from \"../knownCoreFeatures\";\nimport { sameType } from \"../types\";\n\nexport const tagIdentity = 'https://specs.apollo.dev/tag';\n\nexport class TagSpecDefinition extends FeatureDefinition {\n  public readonly tagLocations: DirectiveLocation[];\n  public readonly tagDirectiveSpec: DirectiveSpecification;\n  private readonly printedTagDefinition: string;\n\n  constructor(version: FeatureVersion, minimumFederationVersion?: FeatureVersion) {\n    super(new FeatureUrl(tagIdentity, 'tag', version), minimumFederationVersion);\n    this.tagLocations = [\n      DirectiveLocation.FIELD_DEFINITION,\n      DirectiveLocation.OBJECT,\n      DirectiveLocation.INTERFACE,\n      DirectiveLocation.UNION,\n    ];\n    this.printedTagDefinition = 'directive @tag(name: String!) repeatable on FIELD_DEFINITION | INTERFACE | OBJECT | UNION';\n    if (!this.isV01()) {\n      this.tagLocations.push(\n        DirectiveLocation.ARGUMENT_DEFINITION,\n        DirectiveLocation.SCALAR,\n        DirectiveLocation.ENUM,\n        DirectiveLocation.ENUM_VALUE,\n        DirectiveLocation.INPUT_OBJECT,\n        DirectiveLocation.INPUT_FIELD_DEFINITION,\n      );\n      this.printedTagDefinition = 'directive @tag(name: String!) repeatable on FIELD_DEFINITION | INTERFACE | OBJECT | UNION | ARGUMENT_DEFINITION | SCALAR | ENUM | ENUM_VALUE | INPUT_OBJECT | INPUT_FIELD_DEFINITION';\n      if (!this.isV02()) {\n        this.tagLocations.push(DirectiveLocation.SCHEMA);\n        this.printedTagDefinition = 'directive @tag(name: String!) repeatable on FIELD_DEFINITION | INTERFACE | OBJECT | UNION | ARGUMENT_DEFINITION | SCALAR | ENUM | ENUM_VALUE | INPUT_OBJECT | INPUT_FIELD_DEFINITION | SCHEMA';\n      }\n    }\n    this.tagDirectiveSpec = createDirectiveSpecification({\n      name:'tag',\n      locations: this.tagLocations,\n      repeatable: true,\n      args: [{ name: 'name', type: (schema) => new NonNullType(schema.stringType()) }],\n      composes: true,\n      supergraphSpecification: (fedVersion) => TAG_VERSIONS.getMinimumRequiredVersion(fedVersion),\n    });\n    this.registerDirective(this.tagDirectiveSpec);\n  }\n\n  private isV01() {\n    return this.version.equals(new FeatureVersion(0, 1));\n  }\n\n  private isV02() {\n    return this.version.equals(new FeatureVersion(0, 2))\n  }\n\n  checkCompatibleDirective(definition: DirectiveDefinition): GraphQLError | undefined {\n    const hasUnknownArguments = Object.keys(definition.arguments()).length > 1;\n    const nameArg = definition.argument('name');\n    const hasValidNameArg = nameArg && sameType(nameArg.type!, new NonNullType(definition.schema().stringType()));\n    const hasValidLocations = definition.locations.every(loc => this.tagLocations.includes(loc));\n    if (hasUnknownArguments || !hasValidNameArg || !hasValidLocations) {\n      return ERRORS.DIRECTIVE_DEFINITION_INVALID.err(\n        `Found invalid @tag directive definition. Please ensure the directive definition in your schema's definitions matches the following:\\n\\t${this.printedTagDefinition}`,\n      );\n    }\n    return undefined;\n  }\n}\n\nexport const TAG_VERSIONS = new FeatureDefinitions<TagSpecDefinition>(tagIdentity)\n  .add(new TagSpecDefinition(new FeatureVersion(0, 1)))\n  .add(new TagSpecDefinition(new FeatureVersion(0, 2)))\n  .add(new TagSpecDefinition(new FeatureVersion(0, 3), new FeatureVersion(2, 0)));\n\nregisterKnownFeature(TAG_VERSIONS);\n", "import {\n  assert,\n  baseType,\n  CompositeType,\n  federationMetadata,\n  FieldDefinition,\n  collectTargetFields,\n  Schema,\n  isCompositeType,\n} from \".\";\n\nexport function computeShareables(schema: Schema): (field: FieldDefinition<CompositeType>) => boolean {\n  const metadata = federationMetadata(schema);\n  assert(metadata, 'Schema should be a federation subgraph');\n\n  const keyDirective = metadata.keyDirective();\n  const providesDirective = metadata.providesDirective();\n  // @shareable is only avalaible on fed2 schema, but the schema upgrader call this on fed1 schema as a shortcut to\n  // identify key fields (because if we know nothing is marked @shareable, then the only fields that are shareable\n  // by default are key fields).\n  const shareableDirective = metadata.isFed2Schema() ? metadata.shareableDirective() : undefined;\n\n  const shareableFields: Set<string> = new Set();\n  const addKeyFields = (type: CompositeType) => {\n    for (const key of type.appliedDirectivesOf(keyDirective)) {\n      collectTargetFields({\n        parentType: type,\n        directive: key,\n        includeInterfaceFieldsImplementations: true,\n        validate: false,\n      }).forEach((f) => shareableFields.add(f.coordinate));\n    }\n  };\n\n  for (const type of schema.objectTypes()) {\n    addKeyFields(type);\n    const shareablesOnType = shareableDirective ? type.appliedDirectivesOf(shareableDirective) : [];\n    for (const field of type.fields()) {\n      const fieldIsShareable = shareableDirective && field.hasAppliedDirective(shareableDirective)\n        || (shareablesOnType.length > 0 && shareablesOnType.some((d) => field.ofExtension() === d.ofExtension()));\n      if (fieldIsShareable) {\n        shareableFields.add(field.coordinate);\n      }\n      for (const provides of field.appliedDirectivesOf(providesDirective)) {\n        const parentType = baseType(field.type!);\n        // It's never valid to put a @provides on a non-composite type, but things haven't been fully validated when this\n        // code run and we just want to ignore non-sensical cases (this is also why we pass `validate: false` below).\n        if (isCompositeType(parentType)) {\n          collectTargetFields({\n            parentType,\n            directive: provides,\n            includeInterfaceFieldsImplementations: true,\n            validate: false,\n          }).forEach((f) => {\n            // Fed2 schema reject provides on non-external field, but fed1 doesn't (at least not always), and we actually\n            // call this on fed1 schema upgrader. So let's make sure we do ignore non-external fields.\n            if (metadata.isFieldExternal(f)) {\n              shareableFields.add(f.coordinate);\n            }\n          });\n        }\n      }\n    }\n  }\n\n  for (const type of schema.interfaceTypes()) {\n    addKeyFields(type);\n  }\n\n  return (field) => shareableFields.has(field.coordinate);\n}\n", "import { DirectiveLocation } from \"graphql\";\nimport {\n  CorePurpose,\n  FeatureDefinition,\n  FeatureDefinitions,\n  FeatureUrl,\n  FeatureVersion,\n} from \"./coreSpec\";\nimport { createDirectiveSpecification } from \"../directiveAndTypeSpecification\";\nimport { registerKnownFeature } from \"../knownCoreFeatures\";\nimport {DirectiveDefinition, Schema} from \"../definitions\";\n\nexport class AuthenticatedSpecDefinition extends FeatureDefinition {\n  public static readonly directiveName = \"authenticated\";\n  public static readonly identity = `https://specs.apollo.dev/${AuthenticatedSpecDefinition.directiveName}`;\n\n  constructor(version: FeatureVersion, minimumFederationVersion: FeatureVersion) {\n    super(\n      new FeatureUrl(\n        AuthenticatedSpecDefinition.identity,\n        AuthenticatedSpecDefinition.directiveName,\n        version\n      ),\n      minimumFederationVersion,\n    );\n\n    // WARNING: we cannot declare staticArgumentTransform() as access control merge logic needs to propagate\n    // requirements upwards/downwards between types and interfaces. We hijack the merge process by providing\n    // implementations/interfaces as \"additional sources\". This means that we cannot apply staticArgumentTransform()\n    // as subgraph index index will be wrong/undefined.\n    this.registerDirective(createDirectiveSpecification({\n      name: AuthenticatedSpecDefinition.directiveName,\n      locations: [\n        DirectiveLocation.FIELD_DEFINITION,\n        DirectiveLocation.OBJECT,\n        DirectiveLocation.INTERFACE,\n        DirectiveLocation.SCALAR,\n        DirectiveLocation.ENUM,\n      ],\n      composes: true,\n      supergraphSpecification: () => AUTHENTICATED_VERSIONS.latest(),\n    }));\n  }\n\n  authenticatedDirective(schema: Schema): DirectiveDefinition | undefined {\n    return this.directive(schema, AuthenticatedSpecDefinition.directiveName);\n  }\n\n  get defaultCorePurpose(): CorePurpose {\n    return 'SECURITY';\n  }\n}\n\nexport const AUTHENTICATED_VERSIONS =\n  new FeatureDefinitions<AuthenticatedSpecDefinition>(\n    AuthenticatedSpecDefinition.identity\n  ).add(\n    new AuthenticatedSpecDefinition(\n      new FeatureVersion(0, 1),\n      new FeatureVersion(2, 5),\n    ),\n  );\n\nregisterKnownFeature(AUTHENTICATED_VERSIONS);\n", "import {InputType, NonNullType, Schema, isListType, isNonNullType} from \"./definitions\"\nimport { sameType } from \"./types\";\nimport { valueEquals } from \"./values\";\n\ntype TypeSupportValidator = (schema: Schema, type: InputType) => { valid: boolean, supportedMsg?: string };\n\nexport type ArgumentCompositionStrategy = {\n  name: string,\n  isTypeSupported: TypeSupportValidator,\n  mergeValues: (values: any[]) => any,\n}\n\nfunction supportFixedTypes(types: (schema: Schema) => InputType[]): TypeSupportValidator {\n  return (schema, type) => {\n    const supported = types(schema);\n    return supported.some((t) => sameType(t, type))\n      ? { valid: true }\n      : { valid: false, supportedMsg: `type(s) ${supported.join(', ')}` };\n  };\n}\n\nfunction supportAnyNonNullNestedArray(): TypeSupportValidator {\n  return (_, type) =>\n    isNonNullType(type) && isListType(type.ofType)\n      && isNonNullType(type.ofType.ofType) && isListType(type.ofType.ofType.ofType)\n        ? { valid: true }\n        : { valid: false, supportedMsg: 'non nullable nested list types of any type' }\n}\n\nfunction supportAnyNonNullArray(): TypeSupportValidator {\n  return (_, type) => isNonNullType(type) && isListType(type.ofType)\n    ? { valid: true }\n    : { valid: false, supportedMsg: 'non nullable list types of any type' }\n}\n\nfunction supportAnyArray(): TypeSupportValidator {\n  return (_, type) => isListType(type) || (isNonNullType(type) && isListType(type.ofType))\n    ? { valid: true }\n    : { valid: false, supportedMsg: 'list types of any type' };\n}\n\n// NOTE: This function makes the assumption that for the directive argument\n// being merged, it is not \"nullable with non-null default\" in the supergraph\n// schema (this kind of type/default combo is confusing and should be avoided,\n// if possible). This assumption allows this function to replace null with\n// undefined, which makes for a cleaner supergraph schema.\nfunction mergeNullableValues<T>(\n  mergeValues: (values: T[]) => T\n): (values: (T | null | undefined)[]) => T | undefined {\n  return (values: (T | null | undefined)[]) => {\n    const nonNullValues = values.filter((v) => v !== null && v !== undefined) as T[];\n    return nonNullValues.length > 0\n      ? mergeValues(nonNullValues)\n      : undefined;\n  };\n}\n\nfunction unionValues(values: any[]): any {\n  return values.reduce((acc, next) => {\n    const newValues = next.filter((v1: any) => !acc.some((v2: any) => valueEquals(v1, v2)));\n    return acc.concat(newValues);\n  }, []);\n}\n\n/**\n * Performs conjunction of 2d arrays that represent conditions in Disjunctive Normal Form.\n *\n * Each 2D array is interpreted as follows\n * * Inner array is interpreted as the conjunction (an AND) of the conditions in the array.\n * * Outer array is interpreted as the disjunction (an OR) of the inner arrays.\n *\n * Algorithm\n * * filter out duplicate entries to limit the amount of necessary computations\n * * calculate cartesian product of the arrays to find all possible combinations\n *   * simplify combinations by dropping duplicate conditions (i.e. p ^ p = p, p ^ q = q ^ p)\n * * eliminate entries that are subsumed by others (i.e. (p ^ q) subsumes (p ^ q ^ r))\n */\nexport function dnfConjunction<T>(values: T[][][]): T[][] {\n  // should never be the case\n  if (values.length == 0) {\n    return [];\n  }\n\n  // Copy the 2D arrays, as we'll be modifying them below (due to sorting).\n  for (let i = 0; i < values.length; i++) {\n    // See the doc string for `convertEmptyToTrue()` to understand why this is\n    // necessary.\n    values[i] = convertEmptyToTrue(dnfCopy(values[i]));\n  }\n\n  // we first filter out duplicate values from candidates\n  // this avoids exponential computation of exactly the same conditions\n  const filtered = filterNestedArrayDuplicates(values);\n\n  // initialize with first entry\n  let result: T[][] = filtered[0];\n  // perform cartesian product to find all possible entries\n  for (let i = 1; i < filtered.length; i++) {\n    const current = filtered[i];\n    const accumulator: T[][] = [];\n    const seen = new Set<string>;\n\n    for (const accElement of result) {\n      for (const currentElement of current) {\n        // filter out elements that are already present in accElement\n        const filteredElement = currentElement.filter((e) => !accElement.includes(e));\n        const candidate = [...accElement, ...filteredElement].sort();\n        const key = JSON.stringify(candidate);\n        // only add entries which has not been seen yet\n        if (!seen.has(key)) {\n          seen.add(key);\n          accumulator.push(candidate);\n        }\n      }\n    }\n    // Now we need to deduplicate the results. Given that\n    // - outer array implies OR requirements\n    // - inner array implies AND requirements\n    // We can filter out any inner arrays that fully contain other inner arrays, i.e.\n    //   A OR B OR (A AND B) OR (A AND B AND C) => A OR B\n    result = deduplicateSubsumedValues(accumulator);\n  }\n  return result;\n}\n\nfunction filterNestedArrayDuplicates<T>(values: T[][][]): T[][][] {\n  const filtered: T[][][] = [];\n  const seen = new Set<string>;\n  values.forEach((value) => {\n    value.forEach((inner) => {\n      inner.sort();\n    })\n    value.sort((a, b) => {\n      const left = JSON.stringify(a);\n      const right = JSON.stringify(b);\n      return left > right ? 1 : left < right ? -1 : 0;\n    });\n    const key = JSON.stringify(value);\n    if (!seen.has(key)) {\n      seen.add(key);\n      filtered.push(value);\n    }\n  });\n  return filtered;\n}\n\nfunction deduplicateSubsumedValues<T>(values: T[][]): T[][] {\n  const result: T[][] = [];\n  // we first sort by length as the longer ones might be dropped\n  values.sort((first, second) => {\n    if (first.length < second.length) {\n      return -1;\n    } else if (first.length > second.length) {\n      return 1;\n    } else {\n      return 0;\n    }\n  });\n\n  for (const candidate of values) {\n    const entry = new Set(candidate);\n    let redundant = false;\n    for (const r of result) {\n      if (r.every(e => entry.has(e))) {\n        // if `r` is a subset of a `candidate` then it means `candidate` is redundant\n        redundant = true;\n        break;\n      }\n    }\n\n    if (!redundant) {\n      result.push(candidate);\n    }\n  }\n  return result;\n}\n\nfunction dnfCopy<T>(value: T[][]): T[][] {\n  const newValue = new Array(value.length);\n  for (let i = 0; i < value.length; i++) {\n    newValue[i] = value[i].slice();\n  }\n  return newValue;\n}\n\n/**\n * Normally for DNF, you'd consider [] to be always false and [[]] to be always\n * true, and code that uses some()/every() needs no special-casing to work with\n * these definitions. However, router special-cases [] to also mean true, and so\n * if we're about to do any evaluation on DNFs, we need to do these conversions\n * beforehand.\n */\nexport function convertEmptyToTrue<T>(value: T[][]): T[][] {\n  return value.length === 0 ? [[]] : value;\n}\n\nexport const ARGUMENT_COMPOSITION_STRATEGIES = {\n  MAX: {\n    name: 'MAX',\n    isTypeSupported: supportFixedTypes((schema: Schema) => [new NonNullType(schema.intType())]),\n    mergeValues: (values: number[]) => Math.max(...values),\n  },\n  MIN: {\n    name: 'MIN',\n    isTypeSupported: supportFixedTypes((schema: Schema) => [new NonNullType(schema.intType())]),\n    mergeValues: (values: number[]) => Math.min(...values),\n  },\n  // NOTE: This doesn't work today because directive applications are de-duped\n  // before being merged, we'd need to modify merge logic if we need this kind\n  // of behavior.\n  // SUM: {\n  //   name: 'SUM',\n  //   isTypeSupported: supportFixedTypes((schema: Schema) => [new NonNullType(schema.intType())]),\n  //   mergeValues: (values: any[]) => values.reduce((acc, val) => acc + val, 0),\n  // },\n  INTERSECTION: {\n    name: 'INTERSECTION',\n    isTypeSupported: supportAnyNonNullArray(),\n    mergeValues: (values: any[]) => values.reduce((acc, next) => {\n      if (acc === undefined) {\n        return next;\n      } else {\n        return acc.filter((v1: any) => next.some((v2: any) => valueEquals(v1, v2)));\n      }  \n    }, undefined) ?? [],\n  },\n  UNION: {\n    name: 'UNION',\n    isTypeSupported: supportAnyNonNullArray(),\n    mergeValues: unionValues,\n  },\n  NULLABLE_AND: {\n    name: 'NULLABLE_AND',\n    isTypeSupported: supportFixedTypes((schema: Schema) => [\n      schema.booleanType(),\n      new NonNullType(schema.booleanType())\n    ]),\n    mergeValues:\n        mergeNullableValues(\n      (values: boolean[]) => values.every((v) => v)\n    ),\n  },\n  NULLABLE_MAX: {\n    name: 'NULLABLE_MAX',\n    isTypeSupported: supportFixedTypes((schema: Schema) => [\n      schema.intType(),\n      new NonNullType(schema.intType())\n    ]),\n    mergeValues: mergeNullableValues(\n      (values: number[]) => Math.max(...values)\n    )\n  },\n  NULLABLE_UNION: {\n    name: 'NULLABLE_UNION',\n    isTypeSupported: supportAnyArray(),\n    mergeValues: mergeNullableValues(unionValues),\n  },\n  DNF_CONJUNCTION: {\n    name: 'DNF_CONJUNCTION',\n    isTypeSupported: supportAnyNonNullNestedArray(),\n    mergeValues: dnfConjunction\n  }\n}\n", "import { DirectiveLocation } from \"graphql\";\nimport {\n  CorePurpose,\n  FeatureDefinition,\n  FeatureDefinitions,\n  FeatureUrl,\n  FeatureVersion,\n} from \"./coreSpec\";\nimport {DirectiveDefinition, ListType, NonNullType, Schema} from \"../definitions\";\nimport { createDirectiveSpecification, createScalarTypeSpecification } from \"../directiveAndTypeSpecification\";\nimport { registerKnownFeature } from \"../knownCoreFeatures\";\nimport { ARGUMENT_COMPOSITION_STRATEGIES } from \"../argumentCompositionStrategies\";\nimport { assert } from \"../utils\";\n\nexport enum RequiresScopesTypeName {\n  SCOPE = 'Scope',\n}\n\nexport class RequiresScopesSpecDefinition extends FeatureDefinition {\n  public static readonly directiveName = \"requiresScopes\";\n  public static readonly identity =\n    `https://specs.apollo.dev/${RequiresScopesSpecDefinition.directiveName}`;\n\n  constructor(version: FeatureVersion) {\n    super(\n      new FeatureUrl(\n        RequiresScopesSpecDefinition.identity,\n        RequiresScopesSpecDefinition.directiveName,\n        version,\n      )\n    );\n\n    this.registerType(createScalarTypeSpecification({ name: RequiresScopesTypeName.SCOPE }));\n\n    // WARNING: we cannot declare staticArgumentTransform() as access control merge logic needs to propagate\n    // requirements upwards/downwards between types and interfaces. We hijack the merge process by providing\n    // implementations/interfaces as \"additional sources\". This means that we cannot apply staticArgumentTransform()\n    // as subgraph index index will be wrong/undefined.\n    this.registerDirective(createDirectiveSpecification({\n      name: RequiresScopesSpecDefinition.directiveName,\n      args: [{\n        name: 'scopes',\n        type: (schema, feature) => {\n          assert(feature, \"Shouldn't be added without being attached to a @link spec\");\n          const scopeName = feature.typeNameInSchema(RequiresScopesTypeName.SCOPE);\n          const scopeType = schema.type(scopeName);\n          assert(scopeType, () => `Expected \"${scopeName}\" to be defined`);\n          return new NonNullType(new ListType(new NonNullType(new ListType(new NonNullType(scopeType)))));\n        },\n        compositionStrategy: ARGUMENT_COMPOSITION_STRATEGIES.DNF_CONJUNCTION,\n      }],\n      locations: [\n        DirectiveLocation.FIELD_DEFINITION,\n        DirectiveLocation.OBJECT,\n        DirectiveLocation.INTERFACE,\n        DirectiveLocation.SCALAR,\n        DirectiveLocation.ENUM,\n      ],\n      composes: true,\n      supergraphSpecification: () => REQUIRES_SCOPES_VERSIONS.latest(),\n    }));\n  }\n\n  requiresScopesDirective(schema: Schema): DirectiveDefinition<{scopes: string[][]}> | undefined {\n    return this.directive(schema, RequiresScopesSpecDefinition.directiveName);\n  }\n\n  get defaultCorePurpose(): CorePurpose {\n    return 'SECURITY';\n  }\n}\n\nexport const REQUIRES_SCOPES_VERSIONS =\n  new FeatureDefinitions<RequiresScopesSpecDefinition>(\n    RequiresScopesSpecDefinition.identity\n  ).add(new RequiresScopesSpecDefinition(new FeatureVersion(0, 1)));\n\nregisterKnownFeature(REQUIRES_SCOPES_VERSIONS);\n", "import { DirectiveLocation } from \"graphql\";\nimport {\n  CorePurpose,\n  FeatureDefinition,\n  FeatureDefinitions,\n  FeatureUrl,\n  FeatureVersion,\n} from \"./coreSpec\";\nimport {DirectiveDefinition, ListType, NonNullType, Schema} from \"../definitions\";\nimport { createDirectiveSpecification, createScalarTypeSpecification } from \"../directiveAndTypeSpecification\";\nimport { registerKnownFeature } from \"../knownCoreFeatures\";\nimport { ARGUMENT_COMPOSITION_STRATEGIES } from \"../argumentCompositionStrategies\";\nimport { assert } from \"../utils\";\n\nexport enum PolicyTypeName {\n  POLICY = 'Policy',\n}\nexport class PolicySpecDefinition extends FeatureDefinition {\n  public static readonly directiveName = \"policy\";\n  public static readonly identity =\n    `https://specs.apollo.dev/${PolicySpecDefinition.directiveName}`;\n\n  constructor(version: FeatureVersion) {\n    super(\n      new FeatureUrl(\n        PolicySpecDefinition.identity,\n        PolicySpecDefinition.directiveName,\n        version,\n      )\n    );\n\n    this.registerType(createScalarTypeSpecification({ name: PolicyTypeName.POLICY }));\n\n    // WARNING: we cannot declare staticArgumentTransform() as access control merge logic needs to propagate\n    // requirements upwards/downwards between types and interfaces. We hijack the merge process by providing\n    // implementations/interfaces as \"additional sources\". This means that we cannot apply staticArgumentTransform()\n    // as subgraph index index will be wrong/undefined.\n    this.registerDirective(createDirectiveSpecification({\n      name: PolicySpecDefinition.directiveName,\n      args: [{\n        name: 'policies',\n        type: (schema, feature) => {\n          assert(feature, \"Shouldn't be added without being attached to a @link spec\");\n          const policyName = feature.typeNameInSchema(PolicyTypeName.POLICY);\n          const PolicyType = schema.type(policyName);\n          assert(PolicyType, () => `Expected \"${policyName}\" to be defined`);\n          return new NonNullType(new ListType(new NonNullType(new ListType(new NonNullType(PolicyType)))));\n        },\n        compositionStrategy: ARGUMENT_COMPOSITION_STRATEGIES.DNF_CONJUNCTION,\n      }],\n      locations: [\n        DirectiveLocation.FIELD_DEFINITION,\n        DirectiveLocation.OBJECT,\n        DirectiveLocation.INTERFACE,\n        DirectiveLocation.SCALAR,\n        DirectiveLocation.ENUM,\n      ],\n      composes: true,\n      supergraphSpecification: () => POLICY_VERSIONS.latest(),\n    }));\n  }\n\n  policyDirective(schema: Schema): DirectiveDefinition<{policies: string[][]}> | undefined {\n    return this.directive(schema, PolicySpecDefinition.directiveName);\n  }\n\n  get defaultCorePurpose(): CorePurpose {\n    return 'SECURITY';\n  }\n}\n\nexport const POLICY_VERSIONS =\n  new FeatureDefinitions<PolicySpecDefinition>(\n    PolicySpecDefinition.identity\n  ).add(new PolicySpecDefinition(new FeatureVersion(0, 1)));\n\nregisterKnownFeature(POLICY_VERSIONS);\n", "import { DirectiveLocation } from \"graphql\";\nimport {\n  CorePurpose,\n  FeatureDefinition,\n  FeatureDefinitions,\n  FeatureUrl,\n  FeatureVersion,\n} from \"./coreSpec\";\nimport { DirectiveDefinition, NonNullType, Schema, isInputType } from \"../definitions\";\nimport { DirectiveSpecification, createDirectiveSpecification, createScalarTypeSpecification } from \"../directiveAndTypeSpecification\";\nimport { registerKnownFeature } from \"../knownCoreFeatures\";\nimport { Subgraph } from '../federation';\nimport { assert } from '../utils';\n\nexport enum ContextDirectiveName {\n  CONTEXT = 'context',\n  FROM_CONTEXT = 'fromContext',\n}\n\nconst fieldValueScalar = 'ContextFieldValue';\n\nexport class ContextSpecDefinition extends FeatureDefinition {\n  public static readonly directiveName = 'context';\n  public static readonly identity =\n    `https://specs.apollo.dev/${ContextSpecDefinition.directiveName}`;\n  public readonly contextDirectiveSpec: DirectiveSpecification;\n  public readonly fromContextDirectiveSpec: DirectiveSpecification;\n\n  constructor(version: FeatureVersion) {\n    super(\n      new FeatureUrl(\n        ContextSpecDefinition.identity,\n        ContextSpecDefinition.directiveName,\n        version,\n      )\n    );\n\n    this.registerType(createScalarTypeSpecification({ name: fieldValueScalar }));\n    \n    this.contextDirectiveSpec = createDirectiveSpecification({\n      name: ContextDirectiveName.CONTEXT,\n      locations: [DirectiveLocation.INTERFACE, DirectiveLocation.OBJECT, DirectiveLocation.UNION],\n      args: [{ name: 'name', type: (schema) => new NonNullType(schema.stringType())}],\n      composes: true,\n      repeatable: true,\n      supergraphSpecification: (fedVersion) => CONTEXT_VERSIONS.getMinimumRequiredVersion(fedVersion),\n      staticArgumentTransform: (subgraph: Subgraph, args: {[key: string]: any}) => {\n        const subgraphName = subgraph.name;\n        return {\n          name: `${subgraphName}__${args.name}`,\n        }; \n      },\n    });\n    \n    this.fromContextDirectiveSpec = createDirectiveSpecification({\n      name: ContextDirectiveName.FROM_CONTEXT,\n      locations: [DirectiveLocation.ARGUMENT_DEFINITION],\n      args: [{ name: 'field', type: (schema, feature) => {\n        assert(feature, \"Shouldn't be added without being attached to a @link spec\");\n        const fieldValue = feature.typeNameInSchema(fieldValueScalar);\n        const fieldValueType = schema.type(fieldValue);\n        assert(fieldValueType, () => `Expected \"${fieldValue}\" to be defined`);\n        assert(isInputType(fieldValueType), `Expected \"${fieldValue}\" to be an input type`);\n        return fieldValueType;\n      }}],\n      composes: false,\n    });\n    \n    this.registerDirective(this.contextDirectiveSpec);\n    this.registerDirective(this.fromContextDirectiveSpec);\n  }\n\n  get defaultCorePurpose(): CorePurpose {\n    return 'SECURITY';\n  }\n  \n  contextDirective(schema: Schema): DirectiveDefinition<{ name: string }> | undefined {\n    return this.directive(schema, ContextSpecDefinition.directiveName);\n  }\n}\n\nexport const CONTEXT_VERSIONS =\n  new FeatureDefinitions<ContextSpecDefinition>(\n    ContextSpecDefinition.identity\n  ).add(new ContextSpecDefinition(new FeatureVersion(0, 1)));\n\nregisterKnownFeature(CONTEXT_VERSIONS);\n", "import { DirectiveLocation } from 'graphql';\nimport { createDirectiveSpecification } from '../directiveAndTypeSpecification';\nimport { FeatureDefinition, FeatureDefinitions, FeatureUrl, FeatureVersion } from './coreSpec';\nimport { DirectiveDefinition, ListType, NonNullType, Schema } from '../definitions';\nimport { registerKnownFeature } from '../knownCoreFeatures';\nimport { ARGUMENT_COMPOSITION_STRATEGIES } from '../argumentCompositionStrategies';\n\nexport const costIdentity = 'https://specs.apollo.dev/cost';\n\nexport class CostSpecDefinition extends FeatureDefinition {\n  constructor(version: FeatureVersion, readonly minimumFederationVersion: FeatureVersion) {\n    super(new FeatureUrl(costIdentity, 'cost', version), minimumFederationVersion);\n\n    this.registerDirective(createDirectiveSpecification({\n      name: 'cost',\n      locations: [\n        DirectiveLocation.ARGUMENT_DEFINITION,\n        DirectiveLocation.ENUM,\n        DirectiveLocation.FIELD_DEFINITION,\n        DirectiveLocation.INPUT_FIELD_DEFINITION,\n        DirectiveLocation.OBJECT,\n        DirectiveLocation.SCALAR\n      ],\n      args: [{ name: 'weight', type: (schema) => new NonNullType(schema.intType()), compositionStrategy: ARGUMENT_COMPOSITION_STRATEGIES.MAX }],\n      composes: true,\n      repeatable: false,\n      supergraphSpecification: (fedVersion) => COST_VERSIONS.getMinimumRequiredVersion(fedVersion),\n    }));\n\n    this.registerDirective(createDirectiveSpecification({\n      name: 'listSize',\n      locations: [DirectiveLocation.FIELD_DEFINITION],\n      args: [\n        { name: 'assumedSize', type: (schema) => schema.intType(), compositionStrategy: ARGUMENT_COMPOSITION_STRATEGIES.NULLABLE_MAX },\n        { name: 'slicingArguments', type: (schema) => new ListType(new NonNullType(schema.stringType())), compositionStrategy: ARGUMENT_COMPOSITION_STRATEGIES.NULLABLE_UNION },\n        { name: 'sizedFields', type: (schema) => new ListType(new NonNullType(schema.stringType())), compositionStrategy: ARGUMENT_COMPOSITION_STRATEGIES.NULLABLE_UNION },\n        { name: 'requireOneSlicingArgument', type: (schema) => schema.booleanType(), defaultValue: true, compositionStrategy: ARGUMENT_COMPOSITION_STRATEGIES.NULLABLE_AND },\n      ],\n      composes: true,\n      repeatable: false,\n      supergraphSpecification: (fedVersion) => COST_VERSIONS.getMinimumRequiredVersion(fedVersion)\n    }));\n  }\n\n  costDirective(schema: Schema): DirectiveDefinition<CostDirectiveArguments> | undefined {\n    return this.directive(schema, 'cost');\n  }\n\n  listSizeDirective(schema: Schema): DirectiveDefinition<ListSizeDirectiveArguments> | undefined {\n    return this.directive(schema, 'listSize');\n  }\n}\n\nexport const COST_VERSIONS = new FeatureDefinitions<CostSpecDefinition>(costIdentity)\n  .add(new CostSpecDefinition(new FeatureVersion(0, 1), new FeatureVersion(2, 9)));\n\nregisterKnownFeature(COST_VERSIONS);\n\nexport interface CostDirectiveArguments {\n  weight: number;\n}\n\nexport interface ListSizeDirectiveArguments {\n  assumedSize?: number;\n  slicingArguments?: string[];\n  sizedFields?: string[];\n  requireOneSlicingArgument?: boolean;\n}\n", "// This `cacheTag` spec is a supergraph-only feature spec to indicate that some of the subgraphs\n// use the `@cacheTag` directive. The `@cacheTag` directive itself is not used in supergraph\n// schema, since `@cacheTag` directive applications are composed using the `@join__directive`\n// directive.\nimport {\n  CorePurpose,\n  FeatureDefinition,\n  FeatureDefinitions,\n  FeatureUrl,\n  FeatureVersion,\n} from \"./coreSpec\";\n\nexport const CACHE_TAG = 'cacheTag';\n\nexport class CacheTagSpecDefinition extends FeatureDefinition {\n  public static readonly specName = CACHE_TAG;\n  public static readonly identity = `https://specs.apollo.dev/${CacheTagSpecDefinition.specName}`;\n\n  constructor(version: FeatureVersion, minimumFederationVersion?: FeatureVersion) {\n    super(\n      new FeatureUrl(\n        CacheTagSpecDefinition.identity,\n        CacheTagSpecDefinition.specName,\n        version\n      ),\n      minimumFederationVersion,\n    );\n  }\n\n  get defaultCorePurpose(): CorePurpose {\n    return 'EXECUTION';\n  }\n}\n\nexport const CACHE_TAG_VERSIONS =\n  new FeatureDefinitions<CacheTagSpecDefinition>(\n    CacheTagSpecDefinition.identity\n  ).add(\n    new CacheTagSpecDefinition(new FeatureVersion(0, 1)),\n  );\n", "import {\n  InputType,\n  NonNullType,\n  Schema,\n} from \"../definitions\";\nimport { FeatureDefinition, FeatureDefinitions, FeatureUrl, FeatureVersion } from \"./coreSpec\";\nimport {\n  ArgumentSpecification,\n  createDirectiveSpecification,\n  createScalarTypeSpecification,\n} from \"../directiveAndTypeSpecification\";\nimport { DirectiveLocation } from \"graphql\";\nimport { assert } from \"../utils\";\nimport { TAG_VERSIONS } from \"./tagSpec\";\nimport { federationMetadata } from \"../federation\";\nimport { registerKnownFeature } from \"../knownCoreFeatures\";\nimport { INACCESSIBLE_VERSIONS } from \"./inaccessibleSpec\";\nimport { AUTHENTICATED_VERSIONS } from \"./authenticatedSpec\";\nimport { REQUIRES_SCOPES_VERSIONS } from \"./requiresScopesSpec\";\nimport { POLICY_VERSIONS } from './policySpec';\nimport { CONTEXT_VERSIONS } from './contextSpec';\nimport { COST_VERSIONS } from \"./costSpec\";\nimport { CACHE_TAG_VERSIONS, CACHE_TAG as CACHE_TAG_DIRECTIVE_NAME } from \"./cacheTagSpec\";\n\nexport const federationIdentity = 'https://specs.apollo.dev/federation';\n\nexport enum FederationTypeName {\n  FIELD_SET = 'FieldSet',\n  CONTEXT_FIELD_VALUE = 'ContextFieldValue',\n}\n\nexport enum FederationDirectiveName {\n  KEY = 'key',\n  EXTERNAL = 'external',\n  REQUIRES = 'requires',\n  PROVIDES = 'provides',\n  EXTENDS = 'extends',\n  SHAREABLE = 'shareable',\n  OVERRIDE = 'override',\n  TAG = 'tag',\n  INACCESSIBLE = 'inaccessible',\n  COMPOSE_DIRECTIVE = 'composeDirective',\n  INTERFACE_OBJECT = 'interfaceObject',\n  AUTHENTICATED = 'authenticated',\n  REQUIRES_SCOPES = 'requiresScopes',\n  POLICY = 'policy',\n  CONTEXT = 'context',\n  FROM_CONTEXT = 'fromContext',\n  COST = 'cost',\n  LIST_SIZE = 'listSize',\n  CACHE_TAG = CACHE_TAG_DIRECTIVE_NAME,\n}\n\nconst fieldSetTypeSpec = createScalarTypeSpecification({ name: FederationTypeName.FIELD_SET });\n\nconst fieldsArgument: ArgumentSpecification = { name: 'fields', type: (schema) => fieldSetType(schema) };\n\nconst keyDirectiveSpec = createDirectiveSpecification({\n  name: FederationDirectiveName.KEY,\n  locations: [DirectiveLocation.OBJECT, DirectiveLocation.INTERFACE],\n  repeatable: true,\n  args: [\n    fieldsArgument,\n    { name: 'resolvable', type: (schema) => schema.booleanType(), defaultValue: true },\n  ]\n});\n\nconst extendsDirectiveSpec = createDirectiveSpecification({\n  name: FederationDirectiveName.EXTENDS,\n  locations: [DirectiveLocation.OBJECT, DirectiveLocation.INTERFACE],\n});\n\nconst externalDirectiveSpec = createDirectiveSpecification({\n  name: FederationDirectiveName.EXTERNAL,\n  locations: [DirectiveLocation.OBJECT, DirectiveLocation.FIELD_DEFINITION],\n  args: [{ name: 'reason', type: (schema) => schema.stringType() }],\n});\n\nconst requiresDirectiveSpec = createDirectiveSpecification({\n  name: FederationDirectiveName.REQUIRES,\n  locations: [DirectiveLocation.FIELD_DEFINITION],\n  args: [fieldsArgument],\n});\n\nconst providesDirectiveSpec = createDirectiveSpecification({\n  name: FederationDirectiveName.PROVIDES,\n  locations: [DirectiveLocation.FIELD_DEFINITION],\n  args: [fieldsArgument],\n});\n\nconst legacyFederationTypes = [\n  fieldSetTypeSpec,\n];\n\nconst legacyFederationDirectives = [\n  keyDirectiveSpec,\n  requiresDirectiveSpec,\n  providesDirectiveSpec,\n  externalDirectiveSpec,\n  // This should really be v0.1 instead of v0.2, but we can't change this to\n  // v0.1 without checking whether anyone relied on the v0.2 behavior.\n  TAG_VERSIONS.find(new FeatureVersion(0, 2))!.tagDirectiveSpec,\n  extendsDirectiveSpec,\n];\n\nexport const FEDERATION1_TYPES = legacyFederationTypes;\nexport const FEDERATION1_DIRECTIVES = legacyFederationDirectives;\n\n\nfunction fieldSetType(schema: Schema): InputType {\n  const metadata = federationMetadata(schema);\n  assert(metadata, `The schema is not a federation subgraph`);\n  return new NonNullType(metadata.fieldSetType());\n}\n\nexport class FederationSpecDefinition extends FeatureDefinition {\n  constructor(version: FeatureVersion) {\n    super(new FeatureUrl(federationIdentity, 'federation', version));\n\n    for (const type of legacyFederationTypes) {\n      this.registerType(type);\n    }\n\n    for (const directive of legacyFederationDirectives) {\n      this.registerDirective(directive);\n    }\n\n    this.registerDirective(createDirectiveSpecification({\n      name: FederationDirectiveName.SHAREABLE,\n      locations: [DirectiveLocation.OBJECT, DirectiveLocation.FIELD_DEFINITION],\n      repeatable: version.gte(new FeatureVersion(2, 2)),\n    }));\n\n    this.registerSubFeature(INACCESSIBLE_VERSIONS.getMinimumRequiredVersion(version));\n\n    if (version.gte(new FeatureVersion(2, 7))) {\n      this.registerDirective(createDirectiveSpecification({\n        name: FederationDirectiveName.OVERRIDE,\n        locations: [DirectiveLocation.FIELD_DEFINITION],\n        args: [\n          { name: 'from', type: (schema) => new NonNullType(schema.stringType()) },\n          { name: 'label', type: (schema) => schema.stringType() },\n        ],\n      }));\n    } else {\n      this.registerDirective(createDirectiveSpecification({\n        name: FederationDirectiveName.OVERRIDE,\n        locations: [DirectiveLocation.FIELD_DEFINITION],\n        args: [{ name: 'from', type: (schema) => new NonNullType(schema.stringType()) }],\n      }));\n    }\n\n    if (version.gte(new FeatureVersion(2, 1))) {\n      this.registerDirective(createDirectiveSpecification({\n        name: FederationDirectiveName.COMPOSE_DIRECTIVE,\n        locations: [DirectiveLocation.SCHEMA],\n        repeatable: true,\n        args: [{ name: 'name', type: (schema) => schema.stringType() }],\n      }));\n    }\n\n    if (version.gte(new FeatureVersion(2, 3))) {\n      this.registerDirective(createDirectiveSpecification({\n        name: FederationDirectiveName.INTERFACE_OBJECT,\n        locations: [DirectiveLocation.OBJECT],\n      }));\n      this.registerSubFeature(TAG_VERSIONS.find(new FeatureVersion(0, 3))!);\n    }\n\n    if (version.gte(new FeatureVersion(2, 5))) {\n      this.registerSubFeature(AUTHENTICATED_VERSIONS.find(new FeatureVersion(0, 1))!);\n      this.registerSubFeature(REQUIRES_SCOPES_VERSIONS.find(new FeatureVersion(0, 1))!);\n    }\n\n    if (version.gte(new FeatureVersion(2, 6))) {\n      this.registerSubFeature(POLICY_VERSIONS.find(new FeatureVersion(0, 1))!);\n    }\n\n    if (version.gte(new FeatureVersion(2, 8))) {\n      this.registerSubFeature(CONTEXT_VERSIONS.find(new FeatureVersion(0, 1))!);\n    }\n\n    if (version.gte(new FeatureVersion(2, 9))) {\n      this.registerSubFeature(COST_VERSIONS.find(new FeatureVersion(0, 1))!);\n    }\n\n    if (version.gte(new FeatureVersion(2, 12))) {\n      this.registerDirective(createDirectiveSpecification({\n        name: FederationDirectiveName.CACHE_TAG,\n        locations: [DirectiveLocation.OBJECT, DirectiveLocation.FIELD_DEFINITION],\n        repeatable: true,\n        args: [{ name: 'format', type: (schema) => new NonNullType(schema.stringType()) }],\n        composes: true,\n        supergraphSpecification: (fedVersion) => CACHE_TAG_VERSIONS.getMinimumRequiredVersion(fedVersion),\n        useJoinDirective: true,\n      }));\n    }\n  }\n}\n\nexport const FEDERATION_VERSIONS = new FeatureDefinitions<FederationSpecDefinition>(federationIdentity)\n  .add(new FederationSpecDefinition(new FeatureVersion(2, 0)))\n  .add(new FederationSpecDefinition(new FeatureVersion(2, 1)))\n  .add(new FederationSpecDefinition(new FeatureVersion(2, 2)))\n  .add(new FederationSpecDefinition(new FeatureVersion(2, 3)))\n  .add(new FederationSpecDefinition(new FeatureVersion(2, 4)))\n  .add(new FederationSpecDefinition(new FeatureVersion(2, 5)))\n  .add(new FederationSpecDefinition(new FeatureVersion(2, 6)))\n  .add(new FederationSpecDefinition(new FeatureVersion(2, 7)))\n  .add(new FederationSpecDefinition(new FeatureVersion(2, 8)))\n  .add(new FederationSpecDefinition(new FeatureVersion(2, 9)))\n  .add(new FederationSpecDefinition(new FeatureVersion(2, 10)))\n  .add(new FederationSpecDefinition(new FeatureVersion(2, 11)))\n  .add(new FederationSpecDefinition(new FeatureVersion(2, 12)))\n  .add(new FederationSpecDefinition(new FeatureVersion(2, 13)));\n\nregisterKnownFeature(FEDERATION_VERSIONS);\n", "import { DirectiveLocation, GraphQLError } from 'graphql';\nimport { CorePurpose, FeatureDefinition, FeatureDefinitions, FeatureUrl, FeatureVersion } from \"./coreSpec\";\nimport {\n  DirectiveDefinition,\n  EnumType,\n  ScalarType,\n  Schema,\n  NonNullType,\n  ListType,\n  InputObjectType,\n} from \"../definitions\";\nimport { Subgraph, Subgraphs } from \"../federation\";\nimport { registerKnownFeature } from '../knownCoreFeatures';\nimport { MultiMap } from \"../utils\";\n\nexport const joinIdentity = 'https://specs.apollo.dev/join';\n\nfunction sanitizeGraphQLName(name: string) {\n  // replace all non-word characters (\\W). Word chars are _a-zA-Z0-9\n  const alphaNumericUnderscoreOnly = name.replace(/[\\W]/g, '_');\n  // prefix a digit in the first position with an _\n  const noNumericFirstChar = alphaNumericUnderscoreOnly.match(/^\\d/)\n    ? '_' + alphaNumericUnderscoreOnly\n    : alphaNumericUnderscoreOnly;\n  // suffix an underscore + digit in the last position with an _\n  const noUnderscoreNumericEnding = noNumericFirstChar.match(/_\\d+$/)\n    ? noNumericFirstChar + '_'\n    : noNumericFirstChar;\n\n  // toUpper not really necessary but follows convention of enum values\n  const toUpper = noUnderscoreNumericEnding.toLocaleUpperCase();\n  return toUpper;\n}\n\nexport type JoinTypeDirectiveArguments = {\n  graph: string,\n  key?: string,\n  extension?: boolean,\n  resolvable?: boolean,\n  isInterfaceObject?: boolean,\n};\n\nexport type JoinFieldDirectiveArguments = {\n  graph?: string,\n  requires?: string,\n  provides?: string,\n  override?: string,\n  type?: string,\n  external?: boolean,\n  usedOverridden?: boolean,\n  overrideLabel?: string,\n  contextArguments?: {\n    name: string,\n    type: string,\n    context: string,\n    selection: string,\n  }[],\n}\n\nexport type JoinDirectiveArguments = {\n  graphs: string[],\n  name: string,\n  args?: Record<string, any>,\n};\n\nexport class JoinSpecDefinition extends FeatureDefinition {\n  constructor(version: FeatureVersion, minimumFederationVersion?: FeatureVersion) {\n    super(new FeatureUrl(joinIdentity, 'join', version), minimumFederationVersion);\n  }\n\n  private isV01() {\n    return this.version.equals(new FeatureVersion(0, 1));\n  }\n\n  addElementsToSchema(schema: Schema): GraphQLError[] {\n    const joinGraph = this.addDirective(schema, 'graph').addLocations(DirectiveLocation.ENUM_VALUE);\n    joinGraph.addArgument('name', new NonNullType(schema.stringType()));\n    joinGraph.addArgument('url', new NonNullType(schema.stringType()));\n\n    const graphEnum = this.addEnumType(schema, 'Graph');\n\n    const joinFieldSet = this.addScalarType(schema, 'FieldSet');\n\n    const joinType = this.addDirective(schema, 'type').addLocations(\n      DirectiveLocation.OBJECT,\n      DirectiveLocation.INTERFACE,\n      DirectiveLocation.UNION,\n      DirectiveLocation.ENUM,\n      DirectiveLocation.INPUT_OBJECT,\n      DirectiveLocation.SCALAR,\n    );\n    if (!this.isV01()) {\n      joinType.repeatable = true;\n    }\n    joinType.addArgument('graph', new NonNullType(graphEnum));\n    joinType.addArgument('key', joinFieldSet);\n    if (!this.isV01()) {\n      joinType.addArgument('extension', new NonNullType(schema.booleanType()), false);\n      joinType.addArgument('resolvable', new NonNullType(schema.booleanType()), true);\n\n      if (this.version.gte(new FeatureVersion(0, 3))) {\n        joinType.addArgument('isInterfaceObject', new NonNullType(schema.booleanType()), false);\n      }\n    }\n\n    const joinField = this.addDirective(schema, 'field').addLocations(DirectiveLocation.FIELD_DEFINITION, DirectiveLocation.INPUT_FIELD_DEFINITION);\n    joinField.repeatable = true;\n    // The `graph` argument used to be non-nullable, but @interfaceObject makes us add some field in\n    // the supergraph that don't \"directly\" come from any subgraph (they indirectly are inherited from\n    // an `@interfaceObject` type), and to indicate that, we use a `@join__field(graph: null)` annotation.\n    const graphArgType = this.version.gte(new FeatureVersion(0, 3))\n      ? graphEnum\n      : new NonNullType(graphEnum);\n    joinField.addArgument('graph', graphArgType);\n    joinField.addArgument('requires', joinFieldSet);\n    joinField.addArgument('provides', joinFieldSet);\n    if (!this.isV01()) {\n      joinField.addArgument('type', schema.stringType());\n      joinField.addArgument('external', schema.booleanType());\n      joinField.addArgument('override', schema.stringType());\n      joinField.addArgument('usedOverridden', schema.booleanType());\n    }\n\n    if (!this.isV01()) {\n      const joinImplements = this.addDirective(schema, 'implements').addLocations(\n        DirectiveLocation.OBJECT, DirectiveLocation.INTERFACE,\n      );\n      joinImplements.repeatable = true;\n      joinImplements.addArgument('graph', new NonNullType(graphEnum));\n      joinImplements.addArgument('interface', new NonNullType(schema.stringType()));\n    }\n\n    if (this.version.gte(new FeatureVersion(0, 3))) {\n      const joinUnionMember = this.addDirective(schema, 'unionMember').addLocations(DirectiveLocation.UNION);\n      joinUnionMember.repeatable = true;\n      joinUnionMember.addArgument('graph', new NonNullType(graphEnum));\n      joinUnionMember.addArgument('member', new NonNullType(schema.stringType()));\n\n      const joinEnumValue = this.addDirective(schema, 'enumValue').addLocations(DirectiveLocation.ENUM_VALUE);\n      joinEnumValue.repeatable = true;\n      joinEnumValue.addArgument('graph', new NonNullType(graphEnum));\n    }\n\n    if (this.version.gte(new FeatureVersion(0, 4))) {\n      const joinDirective = this.addDirective(schema, 'directive').addLocations(\n        DirectiveLocation.SCHEMA,\n        DirectiveLocation.OBJECT,\n        DirectiveLocation.INTERFACE,\n        DirectiveLocation.FIELD_DEFINITION,\n      );\n      joinDirective.repeatable = true;\n      // Note this 'graphs' argument is plural, since the same directive\n      // application can appear on the same schema element in multiple subgraphs.\n      // Repetition of a graph in this 'graphs' list is allowed, and corresponds\n      // to repeated application of the same directive in the same subgraph, which\n      // is allowed.\n      joinDirective.addArgument('graphs', new ListType(new NonNullType(graphEnum)));\n      joinDirective.addArgument('name', new NonNullType(schema.stringType()));\n      joinDirective.addArgument('args', this.addScalarType(schema, 'DirectiveArguments'));\n\n      // progressive override\n      joinField.addArgument('overrideLabel', schema.stringType());\n    }\n    \n    if (this.version.gte(new FeatureVersion(0, 5))) {\n      const fieldValue = this.addScalarType(schema, 'FieldValue');\n\n      // set context\n      // there are no renames that happen within the join spec, so this is fine\n      // note that join spec will only used in supergraph schema\n      const contextArgumentsType = schema.addType(new InputObjectType('join__ContextArgument'));\n      contextArgumentsType.addField('name', new NonNullType(schema.stringType()));\n      contextArgumentsType.addField('type', new NonNullType(schema.stringType()));\n      contextArgumentsType.addField('context', new NonNullType(schema.stringType()));\n      contextArgumentsType.addField('selection', new NonNullType(fieldValue));\n\n      joinField.addArgument('contextArguments', new ListType(new NonNullType(contextArgumentsType)));\n    }\n\n    if (this.isV01()) {\n      const joinOwner = this.addDirective(schema, 'owner').addLocations(DirectiveLocation.OBJECT);\n      joinOwner.addArgument('graph', new NonNullType(graphEnum));\n    }\n    return [];\n  }\n\n  allElementNames(): string[] {\n    const names = [\n      'graph',\n      'Graph',\n      'FieldSet',\n      '@type',\n      '@field',\n    ];\n    if (this.isV01()) {\n      names.push('@owner');\n    } else {\n      names.push('@implements');\n    }\n    return names;\n  }\n\n  populateGraphEnum(schema: Schema, subgraphs: Subgraphs): Map<string, string> {\n    // Duplicate enum values can occur due to sanitization and must be accounted for\n    // collect the duplicates in an array so we can uniquify them in a second pass.\n    const sanitizedNameToSubgraphs = new MultiMap<string, Subgraph>();\n    for (const subgraph of subgraphs) {\n      const sanitized = sanitizeGraphQLName(subgraph.name);\n      sanitizedNameToSubgraphs.add(sanitized, subgraph);\n    }\n\n    // if no duplicates for a given name, add it as is\n    // if duplicates exist, append _{n} to each duplicate in the array\n    const subgraphToEnumName = new Map<string, string>();\n    for (const [sanitizedName, subgraphsForName] of sanitizedNameToSubgraphs) {\n      if (subgraphsForName.length === 1) {\n        subgraphToEnumName.set(subgraphsForName[0].name, sanitizedName);\n      } else {\n        for (const [index, subgraph] of subgraphsForName.entries()) {\n          subgraphToEnumName.set(subgraph.name, `${sanitizedName}_${index + 1}`);\n        }\n      }\n    }\n\n    const graphEnum = this.graphEnum(schema);\n    const graphDirective = this.graphDirective(schema);\n    for (const subgraph of subgraphs) {\n      const enumValue = graphEnum.addValue(subgraphToEnumName.get(subgraph.name)!);\n      enumValue.applyDirective(graphDirective, { name: subgraph.name, url: subgraph.url });\n    }\n    return subgraphToEnumName;\n  }\n\n  fieldSetScalar(schema: Schema): ScalarType {\n    return this.type(schema, 'FieldSet')!;\n  }\n\n  graphEnum(schema: Schema): EnumType {\n    return this.type(schema, 'Graph')!;\n  }\n\n  graphDirective(schema: Schema): DirectiveDefinition<{name: string, url: string}> {\n    return this.directive(schema, 'graph')!;\n  }\n\n  directiveDirective(schema: Schema): DirectiveDefinition<JoinDirectiveArguments> {\n    return this.directive(schema, 'directive')!;\n  }\n\n  typeDirective(schema: Schema): DirectiveDefinition<JoinTypeDirectiveArguments> {\n    return this.directive(schema, 'type')!;\n  }\n\n  implementsDirective(schema: Schema): DirectiveDefinition<{graph: string, interface: string}> | undefined {\n    return this.directive(schema, 'implements');\n  }\n\n  fieldDirective(schema: Schema): DirectiveDefinition<JoinFieldDirectiveArguments> {\n    return this.directive(schema, 'field')!;\n  }\n\n  unionMemberDirective(schema: Schema): DirectiveDefinition<{graph: string, member: string}> | undefined {\n    return this.directive(schema, 'unionMember');\n  }\n\n  enumValueDirective(schema: Schema): DirectiveDefinition<{graph: string}> | undefined {\n    return this.directive(schema, 'enumValue');\n  }\n\n  ownerDirective(schema: Schema): DirectiveDefinition<{graph: string}> | undefined {\n    return this.directive(schema, 'owner');\n  }\n\n  get defaultCorePurpose(): CorePurpose | undefined {\n    return 'EXECUTION';\n  }\n}\n\n// The versions are as follows:\n//  - 0.1: this is the version used by federation 1 composition. Federation 2 is still able to read supergraphs\n//    using that verison for backward compatibility, but never writes this spec version is not expressive enough\n//    for federation 2 in general.\n//  - 0.2: this is the original version released with federation 2.\n//  - 0.3: adds the `isInterfaceObject` argument to `@join__type`, and make the `graph` in `@join__field` skippable.\n//  - 0.4: adds the optional `overrideLabel` argument to `@join_field` for progressive override.\n//  - 0.5: adds the `contextArguments` argument to `@join_field` for setting context.\nexport const JOIN_VERSIONS = new FeatureDefinitions<JoinSpecDefinition>(joinIdentity)\n  .add(new JoinSpecDefinition(new FeatureVersion(0, 1)))\n  .add(new JoinSpecDefinition(new FeatureVersion(0, 2)))\n  .add(new JoinSpecDefinition(new FeatureVersion(0, 3), new FeatureVersion(2, 0)))\n  .add(new JoinSpecDefinition(new FeatureVersion(0, 4), new FeatureVersion(2, 7)))\n  .add(new JoinSpecDefinition(new FeatureVersion(0, 5), new FeatureVersion(2, 8)));\n\nregisterKnownFeature(JOIN_VERSIONS);\n", "import {\n  allSchemaRootKinds,\n  baseType,\n  CompositeType,\n  CoreFeature,\n  defaultRootName,\n  Directive,\n  DirectiveDefinition,\n  ErrGraphQLValidationFailed,\n  Extension,\n  FieldDefinition,\n  InputFieldDefinition,\n  InterfaceType,\n  isCompositeType,\n  isInterfaceType,\n  isObjectType,\n  isUnionType,\n  ListType,\n  NamedType,\n  NonNullType,\n  ObjectType,\n  ScalarType,\n  Schema,\n  SchemaBlueprint,\n  SchemaConfig,\n  SchemaDefinition,\n  SchemaElement,\n  sourceASTs,\n  UnionType,\n  ArgumentDefinition,\n  InputType,\n  OutputType,\n  WrapperType,\n  isNonNullType,\n  isLeafType,\n  isListType,\n  isWrapperType,\n  possibleRuntimeTypes,\n  isIntType,\n  Type, isFieldDefinition, isElementNamedType,\n} from \"./definitions\";\nimport { assert, MultiMap, printHumanReadableList, OrderedMap, mapValues, assertUnreachable } from \"./utils\";\nimport { SDLValidationRule } from \"graphql/validation/ValidationContext\";\nimport { specifiedSDLRules } from \"graphql/validation/specifiedRules\";\nimport {\n  ASTNode,\n  DocumentNode,\n  GraphQLError,\n  Kind,\n  KnownTypeNamesRule,\n  PossibleTypeExtensionsRule,\n  print as printAST,\n  Source,\n  GraphQLErrorOptions,\n  SchemaDefinitionNode,\n  OperationTypeNode,\n  OperationTypeDefinitionNode,\n  ConstDirectiveNode,\n} from \"graphql\";\nimport { KnownTypeNamesInFederationRule } from \"./validation/KnownTypeNamesInFederationRule\";\nimport { buildSchema, buildSchemaFromAST } from \"./buildSchema\";\nimport { FragmentSelection, hasSelectionWithPredicate, parseOperationAST, parseSelectionSet, Selection, SelectionSet } from './operations';\nimport { TAG_VERSIONS } from \"./specs/tagSpec\";\nimport {\n  errorCodeDef,\n  ErrorCodeDefinition,\n  ERROR_CATEGORIES,\n  ERRORS,\n  withModifiedErrorMessage,\n  extractGraphQLErrorOptions,\n  errorCauses,\n} from \"./error\";\nimport { computeShareables } from \"./precompute\";\nimport {\n  CoreSpecDefinition,\n  FeatureVersion,\n  LINK_VERSIONS,\n  LinkDirectiveArgs,\n  linkDirectiveDefaultName,\n  linkIdentity,\n  FeatureUrl,\n  CoreImport,\n  extractCoreFeatureImports,\n  CoreOrLinkDirectiveArgs,\n} from \"./specs/coreSpec\";\nimport {\n  FEDERATION_VERSIONS,\n  federationIdentity,\n  FederationDirectiveName,\n  FederationTypeName,\n  FEDERATION1_TYPES,\n  FEDERATION1_DIRECTIVES,\n  FederationSpecDefinition,\n} from \"./specs/federationSpec\";\nimport { defaultPrintOptions, PrintOptions as PrintOptions, printSchema } from \"./print\";\nimport { createObjectTypeSpecification, createScalarTypeSpecification, createUnionTypeSpecification } from \"./directiveAndTypeSpecification\";\nimport { didYouMean, suggestionList } from \"./suggestions\";\nimport { coreFeatureDefinitionIfKnown } from \"./knownCoreFeatures\";\nimport { joinIdentity } from \"./specs/joinSpec\";\nimport { CostDirectiveArguments, ListSizeDirectiveArguments } from \"./specs/costSpec\";\n\nconst linkSpec = LINK_VERSIONS.latest();\nconst tagSpec = TAG_VERSIONS.latest();\nconst federationSpec = (version?: FeatureVersion): FederationSpecDefinition => {\n  if (!version) return FEDERATION_VERSIONS.latest();\n  const spec = FEDERATION_VERSIONS.find(version);\n  assert(spec, `Federation spec version ${version} is not known`);\n  return spec;\n};\n\n// Some users rely on auto-expanding fed v1 graphs with fed v2 directives. While technically we should only expand @tag\n// directive from v2 definitions, we will continue expanding other directives (up to v2.4) to ensure backwards compatibility.\nconst autoExpandedFederationSpec = federationSpec(new FeatureVersion(2, 4));\n\nconst latestFederationSpec = federationSpec();\n\n// We don't let user use this as a subgraph name. That allows us to use it in `query graphs` to name the source of roots\n// in the \"federated query graph\" without worrying about conflict (see `FEDERATED_GRAPH_ROOT_SOURCE` in `querygraph.ts`).\n// (note that we could deal with this in other ways, but having a graph named '_' feels like a terrible idea anyway, so\n// disallowing it feels like more a good thing than a real restriction).\nexport const FEDERATION_RESERVED_SUBGRAPH_NAME = '_';\n\nexport const FEDERATION_UNNAMED_SUBGRAPH_NAME = '<unnamed>';\n\nconst FEDERATION_OMITTED_VALIDATION_RULES = [\n  // We allow subgraphs to declare an extension even if the subgraph itself doesn't have a corresponding definition.\n  // The implication being that the definition is in another subgraph.\n  PossibleTypeExtensionsRule,\n  // The `KnownTypeNamesRule` of graphQL-js only looks at type definitions, so this goes against our previous\n  // desire to let a subgraph only have an extension for a type. Below, we add a replacement rules that looks\n  // at both type definitions _and_ extensions.\n  KnownTypeNamesRule\n];\n\nconst FEDERATION_SPECIFIC_VALIDATION_RULES = [\n  KnownTypeNamesInFederationRule\n];\n\nconst FEDERATION_VALIDATION_RULES = specifiedSDLRules.filter(rule => !FEDERATION_OMITTED_VALIDATION_RULES.includes(rule)).concat(FEDERATION_SPECIFIC_VALIDATION_RULES);\n\nconst ALL_DEFAULT_FEDERATION_DIRECTIVE_NAMES: string[] = Object.values(FederationDirectiveName);\n\n/**\n * Federation 1 has that specificity that it wasn't using @link to name-space federation elements,\n * and so to \"distinguish\" the few federation type names, it prefixed those with a `_`. That is,\n * the `FieldSet` type was named `_FieldSet` in federation1. To handle this without too much effort,\n * we use a fake `CoreFeature` with imports for all the fed1 types to use those specific \"aliases\"\n * and we pass it when adding those types. This allows to reuse the same `TypeSpecification` objects\n * for both fed1 and fed2. Note that in the object below, all that is used is the imports, the rest\n * is just filling the blanks.\n */\nconst FAKE_FED1_CORE_FEATURE_TO_RENAME_TYPES: CoreFeature = new CoreFeature(\n  new FeatureUrl('<fed1>', 'fed1', new FeatureVersion(0, 1)),\n  'fed1',\n  new Directive('fed1'),\n  FEDERATION1_TYPES.map((spec) => ({ name: spec.name, as: '_' + spec.name})),\n);\n\n\nfunction validateFieldSetSelections({\n  directiveName,\n  selectionSet,\n  hasExternalInParents,\n  metadata,\n  onError,\n  allowOnNonExternalLeafFields,\n  allowFieldsWithArguments,\n}: {\n  directiveName: string,\n  selectionSet: SelectionSet,\n  hasExternalInParents: boolean,\n  metadata: FederationMetadata,\n  onError: (error: GraphQLError) => void,\n  allowOnNonExternalLeafFields: boolean,\n  allowFieldsWithArguments: boolean,\n}): void {\n  for (const selection of selectionSet.selections()) {\n    const appliedDirectives = selection.element.appliedDirectives;\n    if (appliedDirectives.length > 0) {\n      onError(ERROR_CATEGORIES.DIRECTIVE_IN_FIELDS_ARG.get(directiveName).err(\n        `cannot have directive applications in the @${directiveName}(fields:) argument but found ${appliedDirectives.join(', ')}.`,\n      ));\n    }\n\n    if (selection.kind === 'FieldSelection') {\n      const field = selection.element.definition;\n      const isExternal = metadata.isFieldExternal(field);\n      if (!allowFieldsWithArguments && field.hasArguments()) {\n        onError(ERROR_CATEGORIES.FIELDS_HAS_ARGS.get(directiveName).err(\n          `field ${field.coordinate} cannot be included because it has arguments (fields with argument are not allowed in @${directiveName})`,\n          { nodes: field.sourceAST },\n        ));\n      }\n      // The field must be external if we don't allow non-external leaf fields, it's a leaf, and we haven't traversed an external field in parent chain leading here.\n      const mustBeExternal = !selection.selectionSet && !allowOnNonExternalLeafFields && !hasExternalInParents;\n      if (!isExternal && mustBeExternal) {\n        const errorCode = ERROR_CATEGORIES.DIRECTIVE_FIELDS_MISSING_EXTERNAL.get(directiveName);\n        if (metadata.isFieldFakeExternal(field)) {\n          onError(errorCode.err(\n            `field \"${field.coordinate}\" should not be part of a @${directiveName} since it is already \"effectively\" provided by this subgraph `\n              + `(while it is marked @${FederationDirectiveName.EXTERNAL}, it is a @${FederationDirectiveName.KEY} field of an extension type, which are not internally considered external for historical/backward compatibility reasons)`,\n            { nodes: field.sourceAST }\n          ));\n        } else {\n          onError(errorCode.err(\n            `field \"${field.coordinate}\" should not be part of a @${directiveName} since it is already provided by this subgraph (it is not marked @${FederationDirectiveName.EXTERNAL})`,\n            { nodes: field.sourceAST }\n          ));\n        }\n      }\n      if (selection.selectionSet) {\n        // When passing the 'hasExternalInParents', the field might be external himself, but we may also have\n        // the case where the field parent is an interface and some implementation of the field are external, in\n        // which case we should say we have an external on the path, because we may have one.\n        let newHasExternalInParents = hasExternalInParents || isExternal;\n        const parentType = field.parent;\n        if (!newHasExternalInParents && isInterfaceType(parentType)) {\n          for (const implem of parentType.possibleRuntimeTypes()) {\n            const fieldInImplem = implem.field(field.name);\n            if (fieldInImplem && metadata.isFieldExternal(fieldInImplem)) {\n              newHasExternalInParents = true;\n              break;\n            }\n          }\n        }\n        validateFieldSetSelections({\n          directiveName,\n          selectionSet: selection.selectionSet,\n          hasExternalInParents: newHasExternalInParents,\n          metadata,\n          onError,\n          allowOnNonExternalLeafFields,\n          allowFieldsWithArguments,\n        });\n      }\n    } else {\n      validateFieldSetSelections({\n        directiveName,\n        selectionSet: selection.selectionSet,\n        hasExternalInParents,\n        metadata,\n        onError,\n        allowOnNonExternalLeafFields,\n        allowFieldsWithArguments,\n      });\n    }\n  }\n}\n\nfunction validateFieldSet({\n  type,\n  directive,\n  metadata,\n  errorCollector,\n  allowOnNonExternalLeafFields,\n  allowFieldsWithArguments,\n  onFields,\n}: {\n  type: CompositeType,\n  directive: Directive<any, {fields: any}>,\n  metadata: FederationMetadata,\n  errorCollector: GraphQLError[],\n  allowOnNonExternalLeafFields: boolean,\n  allowFieldsWithArguments: boolean,\n  onFields?: (field: FieldDefinition<any>) => void,\n}): void {\n  try {\n    // Note that `parseFieldSetArgument` already properly format the error, hence the separate try-catch.\n    // TODO: `parseFieldSetArgument` throws on the first issue found and never accumulate multiple\n    // errors. We could fix this, but this require changes that reaches beyond this single file, so\n    // we leave this for \"later\" (the `fields` value are rarely very big, so the benefit of accumulating\n    // multiple errors within one such value is not tremendous, so that this doesn't feel like a pressing\n    // issue).\n    const fieldAccessor = onFields\n      ? (type: CompositeType, fieldName: string) => {\n        const field = type.field(fieldName);\n        if (field) {\n          onFields(field);\n        }\n        return field;\n      }\n      : undefined;\n    const selectionSet = parseFieldSetArgument({parentType: type, directive, fieldAccessor});\n    validateFieldSetSelections({\n      directiveName: directive.name,\n      selectionSet,\n      hasExternalInParents: false,\n      metadata,\n      onError: (error) => errorCollector.push(handleFieldSetValidationError(directive, error)),\n      allowOnNonExternalLeafFields,\n      allowFieldsWithArguments,\n    });\n  } catch (e) {\n    if (e instanceof GraphQLError) {\n      errorCollector.push(e);\n    } else {\n      throw e;\n    }\n  }\n}\n\nfunction handleFieldSetValidationError(\n  directive: Directive<any, {fields: any}>,\n  originalError: GraphQLError,\n  messageUpdater?: (msg: string) => string,\n): GraphQLError {\n  const nodes = sourceASTs(directive);\n  if (originalError.nodes) {\n    nodes.push(...originalError.nodes);\n  }\n  let codeDef = errorCodeDef(originalError);\n  // \"INVALID_GRAPHQL\" errors happening during validation means that the selection set is invalid, and\n  // that's where we want to use a more precise code.\n  if (!codeDef || codeDef === ERRORS.INVALID_GRAPHQL) {\n    codeDef = ERROR_CATEGORIES.DIRECTIVE_INVALID_FIELDS.get(directive.name);\n  }\n  let msg = originalError.message.trim();\n  if (messageUpdater) {\n    msg = messageUpdater(msg);\n  }\n  return codeDef.err(\n    `${fieldSetErrorDescriptor(directive)}: ${msg}`,\n    {\n      nodes,\n      originalError,\n    }\n  );\n}\n\nfunction fieldSetErrorDescriptor(directive: Directive<any, {fields: any}>): string {\n  return `On ${fieldSetTargetDescription(directive)}, for ${directiveStrUsingASTIfPossible(directive)}`;\n}\n\n// This method is called to display @key, @provides or @requires directives in error message in place where the directive `fields`\n// argument might be invalid because it was not a string in the underlying AST. If that's the case, we want to use the AST to\n// print the directive or the message might be a bit confusing for the user.\nfunction directiveStrUsingASTIfPossible(directive: Directive<any>): string {\n  return directive.sourceAST ? printAST(directive.sourceAST) : directive.toString();\n}\n\nfunction fieldSetTargetDescription(directive: Directive<any, {fields: any}>): string {\n  const targetKind = directive.parent instanceof FieldDefinition ? \"field\" : \"type\";\n  return `${targetKind} \"${directive.parent?.coordinate}\"`;\n}\n\nexport function parseContext(input: string) {\n  const regex = /^(?:[\\n\\r\\t ,]|#[^\\n\\r]*(?![^\\n\\r]))*\\$(?:[\\n\\r\\t ,]|#[^\\n\\r]*(?![^\\n\\r]))*([A-Za-z_]\\w*(?!\\w))([\\s\\S]*)$/;\n  const match = input.match(regex);\n  if (!match) {\n    return { context: undefined, selection: undefined };\n  }\n\n  const [, context, selection] = match;\n  return {\n    context,\n    selection,\n  };\n}\n\nconst wrapResolvedType = ({\n  originalType,\n  resolvedType,\n}: {\n  originalType: OutputType,\n  resolvedType: InputType,\n}): InputType | undefined => {\n  const stack = [];\n  let unwrappedType: NamedType | WrapperType = originalType;\n  while(unwrappedType.kind === 'NonNullType' || unwrappedType.kind === 'ListType') {\n    stack.push(unwrappedType.kind);\n    unwrappedType = unwrappedType.ofType;\n  }\n\n  let type: NamedType | WrapperType = resolvedType;\n  while(stack.length > 0) {\n    const kind = stack.pop();\n    if (kind === 'ListType') {\n      type = new ListType(type);\n    }\n  }\n  return type;\n};\n\nconst validateFieldValueType = ({\n  currentType,\n  selectionSet,\n  errorCollector,\n  metadata,\n  fromContextParent,\n}: {\n  currentType: CompositeType,\n  selectionSet: SelectionSet,\n  errorCollector: GraphQLError[],\n  metadata: FederationMetadata,\n  fromContextParent: ArgumentDefinition<FieldDefinition<ObjectType | InterfaceType | UnionType>>,\n}): { resolvedType: InputType | undefined } => {\n  const selections = selectionSet.selections();\n\n  // ensure that type is not an interfaceObject\n  const interfaceObjectDirective = metadata.interfaceObjectDirective();\n  if (currentType.kind === 'ObjectType' && isFederationDirectiveDefinedInSchema(interfaceObjectDirective) && (currentType.appliedDirectivesOf(interfaceObjectDirective).length > 0)) {\n    errorCollector.push(ERRORS.CONTEXT_INVALID_SELECTION.err(\n      `Context \"is used in \"${fromContextParent.coordinate}\" but the selection is invalid: One of the types in the selection is an interfaceObject: \"${currentType.name}\"`,\n      { nodes: sourceASTs(fromContextParent) }\n    ));\n  }\n\n  const typesArray = selections.map((selection): { resolvedType: InputType | undefined } => {\n    if (selection.kind !== 'FieldSelection') {\n      return { resolvedType: undefined };\n    }\n    const { element, selectionSet: childSelectionSet } = selection;\n    assert(element.definition.type, 'Element type definition should exist');\n    let type = element.definition.type;\n\n    if (childSelectionSet) {\n      assert(isCompositeType(baseType(type)), 'Child selection sets should only exist on composite types');\n      const { resolvedType } = validateFieldValueType({\n        currentType: baseType(type) as CompositeType,\n        selectionSet: childSelectionSet,\n        errorCollector,\n        metadata,\n        fromContextParent,\n      });\n      if (!resolvedType) {\n        return { resolvedType: undefined };\n      }\n      return { resolvedType: wrapResolvedType({ originalType: type, resolvedType}) };\n    }\n    assert(isLeafType(baseType(type)), 'Expected a leaf type');\n    return {\n      resolvedType: wrapResolvedType({\n        originalType: type,\n        resolvedType: baseType(type) as InputType\n      })\n    };\n  });\n  return typesArray.reduce((acc, { resolvedType }) => {\n    if (acc.resolvedType?.toString() === resolvedType?.toString()) {\n      return { resolvedType };\n    }\n    return { resolvedType: undefined };\n  });\n};\n\nconst validateSelectionFormat = ({\n  context,\n  selection,\n  fromContextParent,\n  errorCollector,\n} : {\n  context: string,\n  selection: string,\n  fromContextParent: ArgumentDefinition<FieldDefinition<ObjectType | InterfaceType | UnionType>>,\n  errorCollector: GraphQLError[],\n}): {\n  selectionType: 'error' | 'field',\n} | {\n  selectionType: 'inlineFragment',\n  typeConditions: Set<string>,\n} => {\n  // we only need to parse the selection once, not do it for each location\n  try {\n    const node = parseOperationAST(selection.trim().startsWith('{') ? selection : `{${selection}}`);\n    const selections = node.selectionSet.selections;\n    if (selections.length === 0) {\n      // a selection must be made.\n      errorCollector.push(ERRORS.CONTEXT_INVALID_SELECTION.err(\n        `Context \"${context}\" is used in \"${fromContextParent.coordinate}\" but the selection is invalid: no selection is made`,\n        { nodes: sourceASTs(fromContextParent) }\n      ));\n      return { selectionType: 'error' };\n    }\n    const firstSelectionKind = selections[0].kind;\n    if (firstSelectionKind === 'Field') {\n      // if the first selection is a field, there should be only one\n      if (selections.length !== 1) {\n        errorCollector.push(ERRORS.CONTEXT_INVALID_SELECTION.err(\n          `Context \"${context}\" is used in \"${fromContextParent.coordinate}\" but the selection is invalid: multiple selections are made`,\n          { nodes: sourceASTs(fromContextParent) }\n        ));\n        return { selectionType: 'error' };\n      }\n      return { selectionType: 'field' };\n    } else if (firstSelectionKind === 'InlineFragment') {\n      const inlineFragmentTypeConditions: Set<string> = new Set();\n      if (!selections.every((s) => s.kind === 'InlineFragment')) {\n        errorCollector.push(ERRORS.CONTEXT_INVALID_SELECTION.err(\n          `Context \"${context}\" is used in \"${fromContextParent.coordinate}\" but the selection is invalid: multiple fields could be selected`,\n          { nodes: sourceASTs(fromContextParent) }\n        ));\n        return { selectionType: 'error' };\n      }\n      selections.forEach((s) => {\n        assert(s.kind === 'InlineFragment', 'Expected an inline fragment');\n        const { typeCondition }= s;\n        if (typeCondition) {\n          inlineFragmentTypeConditions.add(typeCondition.name.value);\n        }\n      });\n      if (inlineFragmentTypeConditions.size !== selections.length) {\n        errorCollector.push(ERRORS.CONTEXT_INVALID_SELECTION.err(\n          `Context \"${context}\" is used in \"${fromContextParent.coordinate}\" but the selection is invalid: type conditions have same name`,\n          { nodes: sourceASTs(fromContextParent) }\n        ));\n        return { selectionType: 'error' };\n      }\n      return {\n        selectionType: 'inlineFragment',\n        typeConditions: inlineFragmentTypeConditions,\n      };\n    } else if (firstSelectionKind === 'FragmentSpread') {\n      errorCollector.push(ERRORS.CONTEXT_INVALID_SELECTION.err(\n        `Context \"${context}\" is used in \"${fromContextParent.coordinate}\" but the selection is invalid: fragment spread is not allowed`,\n        { nodes: sourceASTs(fromContextParent) }\n      ));\n      return { selectionType: 'error' };\n    } else {\n      assertUnreachable(firstSelectionKind);\n    }\n  } catch (err) {\n    errorCollector.push(ERRORS.CONTEXT_INVALID_SELECTION.err(\n      `Context \"${context}\" is used in \"${fromContextParent.coordinate}\" but the selection is invalid: ${err.message}`,\n      { nodes: sourceASTs(fromContextParent) }\n    ));\n\n    return { selectionType: 'error' };\n  }\n}\n\n// implementation of spec https://spec.graphql.org/draft/#IsValidImplementationFieldType()\nfunction isValidImplementationFieldType(fieldType: InputType, implementedFieldType: InputType): boolean {\n  if (isNonNullType(fieldType)) {\n    if (isNonNullType(implementedFieldType)) {\n      return isValidImplementationFieldType(fieldType.ofType, implementedFieldType.ofType);\n    } else {\n      return isValidImplementationFieldType(fieldType.ofType, implementedFieldType);\n    }\n  }\n  if (isListType(fieldType) && isListType(implementedFieldType)) {\n    return isValidImplementationFieldType(fieldType.ofType, implementedFieldType.ofType);\n  }\n  return !isWrapperType(fieldType) &&\n    !isWrapperType(implementedFieldType) &&\n    fieldType.name === implementedFieldType.name;\n}\n\nfunction selectionSetHasDirectives(selectionSet: SelectionSet): boolean {\n  return hasSelectionWithPredicate(selectionSet, (s: Selection) => {\n    if (s.kind === 'FieldSelection') {\n      return s.element.appliedDirectives.length > 0;\n    }\n    else if (s.kind === 'FragmentSelection') {\n      return s.element.appliedDirectives.length > 0;\n    } else {\n      assertUnreachable(s);\n    }\n  });\n}\n\nfunction selectionSetHasAlias(selectionSet: SelectionSet): boolean {\n  return hasSelectionWithPredicate(selectionSet, (s: Selection) => {\n    if (s.kind === 'FieldSelection') {\n      return s.element.alias !== undefined;\n    }\n    return false;\n  });\n}\n\nfunction validateFieldValue({\n  context,\n  selection,\n  fromContextParent,\n  setContextLocations,\n  errorCollector,\n  metadata,\n} : {\n  context: string,\n  selection: string,\n  fromContextParent: ArgumentDefinition<FieldDefinition<ObjectType | InterfaceType | UnionType>>,\n  setContextLocations: (ObjectType | InterfaceType | UnionType)[],\n  errorCollector: GraphQLError[],\n  metadata: FederationMetadata,\n}): void {\n  const expectedType = fromContextParent.type;\n  assert(expectedType, 'Expected a type');\n  const validateSelectionFormatResults =\n    validateSelectionFormat({ context, selection, fromContextParent, errorCollector });\n  const selectionType = validateSelectionFormatResults.selectionType;\n\n  // if there was an error, just return, we've already added it to the errorCollector\n  if (selectionType === 'error') {\n    return;\n  }\n\n  const usedTypeConditions = new Set<string>;\n  for (const location of setContextLocations) {\n    // for each location, we need to validate that the selection will result in exactly one field being selected\n    // the number of selection sets created will be the same\n    let selectionSet: SelectionSet;\n    try {\n      selectionSet = parseSelectionSet({ parentType: location,  source: selection});\n    } catch (e) {\n      errorCollector.push(ERRORS.CONTEXT_INVALID_SELECTION.err(\n        `Context \"${context}\" is used in \"${fromContextParent.coordinate}\" but the selection is invalid for type ${location.name}. Error: ${e.message}`,\n        { nodes: sourceASTs(fromContextParent) }\n      ));\n      return;\n    }\n    if (selectionSetHasDirectives(selectionSet)) {\n      errorCollector.push(ERRORS.CONTEXT_INVALID_SELECTION.err(\n        `Context \"${context}\" is used in \"${fromContextParent.coordinate}\" but the selection is invalid: directives are not allowed in the selection`,\n        { nodes: sourceASTs(fromContextParent) }\n      ));\n    }\n    if (selectionSetHasAlias(selectionSet)) {\n      errorCollector.push(ERRORS.CONTEXT_INVALID_SELECTION.err(\n        `Context \"${context}\" is used in \"${fromContextParent.coordinate}\" but the selection is invalid: aliases are not allowed in the selection`,\n        { nodes: sourceASTs(fromContextParent) }\n      ));\n    }\n\n    if (selectionType === 'field') {\n      const { resolvedType } = validateFieldValueType({\n        currentType: location,\n        selectionSet,\n        errorCollector,\n        metadata,\n        fromContextParent,\n      });\n      if (resolvedType === undefined || !isValidImplementationFieldType(resolvedType, expectedType!)) {\n        errorCollector.push(ERRORS.CONTEXT_INVALID_SELECTION.err(\n          `Context \"${context}\" is used in \"${fromContextParent.coordinate}\" but the selection is invalid: the type of the selection \"${resolvedType}\" does not match the expected type \"${expectedType?.toString()}\"`,\n          { nodes: sourceASTs(fromContextParent) }\n        ));\n        return;\n      }\n    } else if (selectionType === 'inlineFragment') {\n      // ensure that each location maps to exactly one fragment\n      const selections: FragmentSelection[] = [];\n      for (const selection of selectionSet.selections()) {\n        if (selection.kind !== 'FragmentSelection') {\n          errorCollector.push(ERRORS.CONTEXT_INVALID_SELECTION.err(\n            `Context \"${context}\" is used in \"${fromContextParent.coordinate}\" but the selection is invalid: selection should only contain a single field or at least one inline fragment}\"`,\n            { nodes: sourceASTs(fromContextParent) }\n          ));\n          continue;\n        }\n\n        const { typeCondition } = selection.element;\n        if (!typeCondition) {\n          errorCollector.push(ERRORS.CONTEXT_INVALID_SELECTION.err(\n            `Context \"${context}\" is used in \"${fromContextParent.coordinate}\" but the selection is invalid: inline fragments must have type conditions\"`,\n            { nodes: sourceASTs(fromContextParent) }\n          ));\n          continue;\n        }\n\n        if (typeCondition.kind === 'ObjectType') {\n          if (possibleRuntimeTypes(location).includes(typeCondition)) {\n            selections.push(selection);\n            usedTypeConditions.add(typeCondition.name);\n          }\n        } else {\n          errorCollector.push(ERRORS.CONTEXT_INVALID_SELECTION.err(\n            `Context \"${context}\" is used in \"${fromContextParent.coordinate}\" but the selection is invalid: type conditions must be an object type\"`,\n            { nodes: sourceASTs(fromContextParent) }\n          ));\n        }\n      }\n\n      if (selections.length === 0) {\n        errorCollector.push(ERRORS.CONTEXT_INVALID_SELECTION.err(\n          `Context \"${context}\" is used in \"${fromContextParent.coordinate}\" but the selection is invalid: no type condition matches the location \"${location.coordinate}\"`,\n          { nodes: sourceASTs(fromContextParent) }\n        ));\n        return;\n      } else {\n        for (const selection of selections) {\n          let { resolvedType } = validateFieldValueType({\n            currentType: selection.element.typeCondition!,\n            selectionSet: selection.selectionSet,\n            errorCollector,\n            metadata,\n            fromContextParent,\n          });\n\n          if (resolvedType === undefined) {\n            errorCollector.push(ERRORS.CONTEXT_INVALID_SELECTION.err(\n              `Context \"${context}\" is used in \"${fromContextParent.coordinate}\" but the selection is invalid: the type of the selection does not match the expected type \"${expectedType?.toString()}\"`,\n              { nodes: sourceASTs(fromContextParent) }\n            ));\n            return;\n          }\n\n          // Because other subgraphs may define members of the location type,\n          // it's always possible that none of the type conditions map, so we\n          // must remove any surrounding non-null wrapper if present.\n          if (isNonNullType(resolvedType)) {\n            resolvedType = resolvedType.ofType;\n          }\n\n          if (!isValidImplementationFieldType(resolvedType!, expectedType!)) {\n            errorCollector.push(ERRORS.CONTEXT_INVALID_SELECTION.err(\n              `Context \"${context}\" is used in \"${fromContextParent.coordinate}\" but the selection is invalid: the type of the selection \"${resolvedType?.toString()}\" does not match the expected type \"${expectedType?.toString()}\"`,\n              { nodes: sourceASTs(fromContextParent) }\n            ));\n            return;\n          }\n        }\n      }\n    }\n  }\n\n  if (validateSelectionFormatResults.selectionType === 'inlineFragment') {\n    for (const typeCondition of validateSelectionFormatResults.typeConditions) {\n      if (!usedTypeConditions.has(typeCondition)) {\n        errorCollector.push(ERRORS.CONTEXT_INVALID_SELECTION.err(\n          `Context \"${context}\" is used in \"${fromContextParent.coordinate}\" but the selection is invalid: type condition \"${typeCondition}\" is never used.`,\n          { nodes: sourceASTs(fromContextParent) }\n        ));\n      }\n    }\n  }\n}\n\nfunction validateAllFieldSet<TParent extends SchemaElement<any, any>>({\n  definition,\n  targetTypeExtractor,\n  errorCollector,\n  metadata,\n  isOnParentType = false,\n  allowOnNonExternalLeafFields = false,\n  allowFieldsWithArguments = false,\n  allowOnInterface = false,\n  onFields,\n}: {\n  definition: DirectiveDefinition<{fields: any}>,\n  targetTypeExtractor: (element: TParent) => CompositeType,\n  errorCollector: GraphQLError[],\n  metadata: FederationMetadata,\n  isOnParentType?: boolean,\n  allowOnNonExternalLeafFields?: boolean,\n  allowFieldsWithArguments?: boolean,\n  allowOnInterface?: boolean,\n  onFields?: (field: FieldDefinition<any>) => void,\n}): void {\n  for (const application of definition.applications()) {\n    const elt = application.parent as TParent;\n    const type = targetTypeExtractor(elt);\n    const parentType = isOnParentType ? type : (elt.parent as NamedType);\n    if (isInterfaceType(parentType) && !allowOnInterface) {\n      const code = ERROR_CATEGORIES.DIRECTIVE_UNSUPPORTED_ON_INTERFACE.get(definition.name);\n      errorCollector.push(code.err(\n        isOnParentType\n          ? `Cannot use ${definition.coordinate} on interface \"${parentType.coordinate}\": ${definition.coordinate} is not yet supported on interfaces`\n          : `Cannot use ${definition.coordinate} on ${fieldSetTargetDescription(application)} of parent type \"${parentType}\": ${definition.coordinate} is not yet supported within interfaces`,\n        { nodes: sourceASTs(application).concat(isOnParentType ? [] : sourceASTs(type)) },\n      ));\n    }\n    validateFieldSet({\n      type,\n      directive: application,\n      metadata,\n      errorCollector,\n      allowOnNonExternalLeafFields,\n      allowFieldsWithArguments,\n      onFields,\n    });\n  }\n}\n\nexport function collectUsedFields(metadata: FederationMetadata): Set<FieldDefinition<CompositeType>> {\n  const usedFields = new Set<FieldDefinition<CompositeType>>();\n\n  // Collects all external fields used by a key, requires or provides\n  collectUsedFieldsForDirective<CompositeType>(\n    metadata.keyDirective(),\n    type => type,\n    usedFields,\n  );\n  collectUsedFieldsForDirective<FieldDefinition<CompositeType>>(\n    metadata.requiresDirective(),\n    field => field.parent!,\n    usedFields,\n  );\n  collectUsedFieldsForDirective<FieldDefinition<CompositeType>>(\n    metadata.providesDirective(),\n    field => {\n      const type = baseType(field.type!);\n      return isCompositeType(type) ? type : undefined;\n    },\n    usedFields,\n  );\n\n  // also for @fromContext\n  collectUsedFieldsForFromContext<CompositeType>(\n    metadata,\n    usedFields,\n  );\n\n  // Collects all fields used to satisfy an interface constraint\n  for (const itfType of metadata.schema.interfaceTypes()) {\n    const runtimeTypes = itfType.possibleRuntimeTypes();\n    for (const field of itfType.fields()) {\n      for (const runtimeType of runtimeTypes) {\n        const implemField = runtimeType.field(field.name);\n        if (implemField) {\n          usedFields.add(implemField);\n        }\n      }\n    }\n  }\n\n  return usedFields;\n}\n\nfunction collectUsedFieldsForFromContext<TParent extends SchemaElement<any, any>>(\n  metadata: FederationMetadata,\n  usedFieldDefs: Set<FieldDefinition<CompositeType>>\n) {\n  const fromContextDirective = metadata.fromContextDirective();\n  const contextDirective = metadata.contextDirective();\n\n  // if one of the directives is not defined, there's nothing to validate\n  if (!isFederationDirectiveDefinedInSchema(fromContextDirective) || !isFederationDirectiveDefinedInSchema(contextDirective)) {\n    return;\n  }\n\n  // build the list of context entry points\n  const entryPoints = new Map<string, Set<CompositeType>>();\n  for (const application of contextDirective.applications()) {\n    const type = application.parent;\n    if (!type) {\n      // Means the application is wrong: we ignore it here as later validation will detect it\n      continue;\n    }\n    const context = application.arguments().name;\n    if (!entryPoints.has(context)) {\n      entryPoints.set(context, new Set());\n    }\n    entryPoints.get(context)!.add(type as CompositeType);\n  }\n\n  for (const application of fromContextDirective.applications()) {\n    const type = application.parent as TParent;\n    if (!type) {\n      // Means the application is wrong: we ignore it here as later validation will detect it\n      continue;\n    }\n\n    const fieldValue = application.arguments().field;\n    const { context, selection } = parseContext(fieldValue);\n\n    if (!context) {\n      continue;\n    }\n\n    // now we need to collect all the fields used for every type that they could be used for\n    const contextTypes = entryPoints.get(context);\n    if (!contextTypes) {\n      continue;\n    }\n\n    for (const contextType of contextTypes) {\n      try {\n        // helper function\n        const fieldAccessor = (t: CompositeType, f: string) => {\n          const field = t.field(f);\n          if (field) {\n            usedFieldDefs.add(field);\n            if (isInterfaceType(t)) {\n              for (const implType of t.possibleRuntimeTypes()) {\n                const implField = implType.field(f);\n                if (implField) {\n                  usedFieldDefs.add(implField);\n                }\n              }\n            }\n          }\n          return field;\n        };\n\n        parseSelectionSet({ parentType: contextType, source: selection, fieldAccessor });\n      } catch (e) {\n        // ignore the error, it will be caught later\n      }\n    }\n  }\n}\n\nfunction collectUsedFieldsForDirective<TParent extends SchemaElement<any, any>>(\n  definition: DirectiveDefinition<{fields: any}>,\n  targetTypeExtractor: (element: TParent) => CompositeType | undefined,\n  usedFieldDefs: Set<FieldDefinition<CompositeType>>\n) {\n  for (const application of definition.applications()) {\n    const type = targetTypeExtractor(application.parent! as TParent);\n    if (!type) {\n      // Means the application is wrong: we ignore it here as later validation will detect it\n      continue;\n    }\n    // Note that we don't want to 'validate', because even if a field set is invalid for some reason, we still want to consider\n    // its field as \"used\". This avoid, when a `fields` argument is invalid, to get one error for the `fields` itself, but also\n    // a bunch of other errors that says some external fields are unused that are just a consequence of not considering that\n    // particular `fields` argument. In other words, this avoid cascading errors that would be confusing to the user without\n    // being of any concrete use.\n    collectTargetFields({\n      parentType: type,\n      directive: application as Directive<any, {fields: any}>,\n      includeInterfaceFieldsImplementations: true,\n      validate: false,\n    }).forEach((field) => usedFieldDefs.add(field));\n  }\n}\n\n/**\n * Checks that all fields marked @external is used in a federation directive (@key, @provides or @requires) _or_ to satisfy an\n * interface implementation. Otherwise, the field declaration is somewhat useless.\n */\nfunction validateAllExternalFieldsUsed(metadata: FederationMetadata, errorCollector: GraphQLError[]): void {\n  for (const type of metadata.schema.types()) {\n    if (!isObjectType(type) && !isInterfaceType(type)) {\n      continue;\n    }\n    for (const field of type.fields()) {\n      if (!metadata.isFieldExternal(field) || metadata.isFieldUsed(field)) {\n        continue;\n      }\n      errorCollector.push(ERRORS.EXTERNAL_UNUSED.err(\n        `Field \"${field.coordinate}\" is marked @external but is not used in any federation directive (@key, @provides, @requires) or to satisfy an interface;`\n        + ' the field declaration has no use and should be removed (or the field should not be @external).',\n        { nodes: field.sourceAST },\n      ));\n    }\n  }\n}\n\nfunction validateNoExternalOnInterfaceFields(metadata: FederationMetadata, errorCollector: GraphQLError[]) {\n  for (const itf of metadata.schema.interfaceTypes()) {\n    for (const field of itf.fields()) {\n      if (metadata.isFieldExternal(field)) {\n        errorCollector.push(ERRORS.EXTERNAL_ON_INTERFACE.err(\n          `Interface type field \"${field.coordinate}\" is marked @external but @external is not allowed on interface fields (it is nonsensical).`,\n          { nodes: field.sourceAST },\n        ));\n      }\n    }\n  }\n}\n\nfunction validateKeyOnInterfacesAreAlsoOnAllImplementations(metadata: FederationMetadata, errorCollector: GraphQLError[]): void {\n  for (const itfType of metadata.schema.interfaceTypes()) {\n    const implementations = itfType.possibleRuntimeTypes();\n    for (const keyApplication of itfType.appliedDirectivesOf(metadata.keyDirective())) {\n      // Note that we will always have validated all @key fields at this point, so not bothering with extra validation\n      const fields = parseFieldSetArgument({parentType: itfType, directive: keyApplication, validate: false});\n      const isResolvable = !(keyApplication.arguments().resolvable === false);\n      const implementationsWithKeyButNotResolvable = new Array<ObjectType>();\n      const implementationsMissingKey = new Array<ObjectType>();\n      for (const type of implementations) {\n        const matchingApp = type.appliedDirectivesOf(metadata.keyDirective()).find((app) => {\n          const appFields = parseFieldSetArgument({parentType: type, directive: app, validate: false});\n          return fields.equals(appFields);\n        });\n        if (matchingApp) {\n          if (isResolvable && matchingApp.arguments().resolvable === false) {\n            implementationsWithKeyButNotResolvable.push(type);\n          }\n        } else {\n          implementationsMissingKey.push(type);\n        }\n      }\n\n      if (implementationsMissingKey.length > 0) {\n        const typesString = printHumanReadableList(\n          implementationsMissingKey.map((i) => `\"${i.coordinate}\"`),\n          {\n            prefix: 'type',\n            prefixPlural: 'types',\n          }\n        );\n        errorCollector.push(ERRORS.INTERFACE_KEY_NOT_ON_IMPLEMENTATION.err(\n          `Key ${keyApplication} on interface type \"${itfType.coordinate}\" is missing on implementation ${typesString}.`,\n          { nodes: sourceASTs(...implementationsMissingKey) },\n        ));\n      } else if (implementationsWithKeyButNotResolvable.length > 0) {\n        const typesString = printHumanReadableList(\n          implementationsWithKeyButNotResolvable.map((i) => `\"${i.coordinate}\"`),\n          {\n            prefix: 'type',\n            prefixPlural: 'types',\n          }\n        );\n        errorCollector.push(ERRORS.INTERFACE_KEY_NOT_ON_IMPLEMENTATION.err(\n          `Key ${keyApplication} on interface type \"${itfType.coordinate}\" should be resolvable on all implementation types, but is declared with argument \"@key(resolvable:)\" set to false in ${typesString}.`,\n          { nodes: sourceASTs(...implementationsWithKeyButNotResolvable) },\n        ));\n      }\n    }\n  }\n}\n\nfunction validateInterfaceObjectsAreOnEntities(metadata: FederationMetadata, errorCollector: GraphQLError[]): void {\n  for (const application of metadata.interfaceObjectDirective().applications()) {\n    if (!isEntityType(application.parent)) {\n      errorCollector.push(ERRORS.INTERFACE_OBJECT_USAGE_ERROR.err(\n        `The @interfaceObject directive can only be applied to entity types but type \"${application.parent.coordinate}\" has no @key in this subgraph.`,\n        { nodes: application.parent.sourceAST }\n      ));\n    }\n  }\n}\n\nfunction validateShareableNotRepeatedOnSameDeclaration(\n  element: ObjectType | FieldDefinition<ObjectType>,\n  metadata: FederationMetadata,\n  errorCollector: GraphQLError[],\n) {\n  const shareableApplications: Directive[] = element.appliedDirectivesOf(metadata.shareableDirective());\n  if (shareableApplications.length <= 1) {\n    return;\n  }\n\n  type ByExtensions = {\n    without: Directive<any, {}>[],\n    with: MultiMap<Extension<any>, Directive<any, {}>>,\n  };\n  const byExtensions = shareableApplications.reduce<ByExtensions>(\n    (acc, v) => {\n      const ext = v.ofExtension();\n      if (ext) {\n        acc.with.add(ext, v);\n      } else {\n        acc.without.push(v);\n      }\n      return acc;\n    },\n    { without: [], with: new MultiMap() }\n  );\n  const groups = [ byExtensions.without ].concat(mapValues(byExtensions.with));\n  for (const group of groups) {\n    if (group.length > 1) {\n      const eltStr = element.kind === 'ObjectType'\n        ? `the same type declaration of \"${element.coordinate}\"`\n        : `field \"${element.coordinate}\"`;\n      errorCollector.push(ERRORS.INVALID_SHAREABLE_USAGE.err(\n        `Invalid duplicate application of @shareable on ${eltStr}: `\n        + '@shareable is only repeatable on types so it can be used simultaneously on a type definition and its extensions, but it should not be duplicated on the same definition/extension declaration',\n        { nodes: sourceASTs(...group) },\n      ));\n    }\n  }\n}\n\nfunction validateCostNotAppliedToInterface(application: Directive<SchemaElement<any, any>, CostDirectiveArguments>, errorCollector: GraphQLError[]) {\n  const parent = application.parent;\n  // @cost cannot be used on interfaces https://ibm.github.io/graphql-specs/cost-spec.html#sec-No-Cost-on-Interface-Fields\n  if (parent instanceof FieldDefinition && parent.parent instanceof InterfaceType) {\n    errorCollector.push(ERRORS.COST_APPLIED_TO_INTERFACE_FIELD.err(\n      `@cost cannot be applied to interface \"${parent.coordinate}\"`,\n      { nodes: sourceASTs(application, parent) }\n    ));\n  }\n}\n\nfunction validateListSizeAppliedToList(\n  application: Directive<SchemaElement<any, any>, ListSizeDirectiveArguments>,\n  parent: FieldDefinition<CompositeType>,\n  errorCollector: GraphQLError[],\n) {\n  const { sizedFields = [] } = application.arguments();\n  // @listSize must be applied to a list https://ibm.github.io/graphql-specs/cost-spec.html#sec-Valid-List-Size-Target\n  if (!sizedFields.length && parent.type && !isListType(parent.type) && !isNonNullListType(parent.type)) {\n    errorCollector.push(ERRORS.LIST_SIZE_APPLIED_TO_NON_LIST.err(\n      `\"${parent.coordinate}\" is not a list`,\n      { nodes: sourceASTs(application, parent) },\n    ));\n  }\n}\n\nfunction validateAssumedSizeNotNegative(\n  application: Directive<SchemaElement<any, any>, ListSizeDirectiveArguments>,\n  parent: FieldDefinition<CompositeType>,\n  errorCollector: GraphQLError[]\n) {\n  const { assumedSize } = application.arguments();\n  // Validate assumed size, but we differ from https://ibm.github.io/graphql-specs/cost-spec.html#sec-Valid-Assumed-Size.\n  // Assumed size is used as a backup for slicing arguments in the event they are both specified.\n  // The spec aims to rule out cases when the assumed size will never be used because there is always\n  // a slicing argument. Two applications which are compliant with that validation rule can be merged\n  // into an application which is not compliant, thus we need to handle this case gracefully at runtime regardless.\n  // We omit this check to keep the validations to those that will otherwise cause runtime failures.\n  //\n  // With all that said, assumed size should not be negative.\n  if (assumedSize !== undefined && assumedSize !== null && assumedSize < 0) {\n    errorCollector.push(ERRORS.LIST_SIZE_INVALID_ASSUMED_SIZE.err(\n      `Assumed size of \"${parent.coordinate}\" cannot be negative`,\n      { nodes: sourceASTs(application, parent) },\n    ));\n  }\n}\n\nfunction isNonNullIntType(ty: Type): boolean {\n  return isNonNullType(ty) && isIntType(ty.ofType)\n}\n\nfunction validateSlicingArgumentsAreValidIntegers(\n  application: Directive<SchemaElement<any, any>, ListSizeDirectiveArguments>,\n  parent: FieldDefinition<CompositeType>,\n  errorCollector: GraphQLError[]\n) {\n  const { slicingArguments = [] } = application.arguments();\n  // Validate slicingArguments https://ibm.github.io/graphql-specs/cost-spec.html#sec-Valid-Slicing-Arguments-Target\n  for (const slicingArgumentName of slicingArguments) {\n    const slicingArgument = parent.argument(slicingArgumentName);\n    if (!slicingArgument?.type) {\n      // Slicing arguments must be one of the field's arguments\n      errorCollector.push(ERRORS.LIST_SIZE_INVALID_SLICING_ARGUMENT.err(\n        `Slicing argument \"${slicingArgumentName}\" is not an argument of \"${parent.coordinate}\"`,\n        { nodes: sourceASTs(application, parent) }\n      ));\n    } else if (!isIntType(slicingArgument.type) && !isNonNullIntType(slicingArgument.type)) {\n      // Slicing arguments must be Int or Int!\n      errorCollector.push(ERRORS.LIST_SIZE_INVALID_SLICING_ARGUMENT.err(\n        `Slicing argument \"${slicingArgument.coordinate}\" must be Int or Int!`,\n        { nodes: sourceASTs(application, parent) }\n      ));\n    }\n  }\n}\n\nfunction isNonNullListType(ty: Type): boolean {\n  return isNonNullType(ty) && isListType(ty.ofType)\n}\n\nfunction validateSizedFieldsAreValidLists(\n  application: Directive<SchemaElement<any, any>, ListSizeDirectiveArguments>,\n  parent: FieldDefinition<CompositeType>,\n  errorCollector: GraphQLError[]\n) {\n  const { sizedFields = [] } = application.arguments();\n  // Validate sizedFields https://ibm.github.io/graphql-specs/cost-spec.html#sec-Valid-Sized-Fields-Target\n  if (sizedFields.length && parent.type) {\n    const baseParentType = baseType(parent.type);\n    if (!isCompositeType(baseParentType)) {\n      // The output type must have fields\n      errorCollector.push(ERRORS.LIST_SIZE_INVALID_SIZED_FIELD.err(\n        `Sized fields cannot be used because \"${parent.type}\" is not a composite type`,\n        { nodes: sourceASTs(application, parent)}\n      ));\n    } else {\n      for (const sizedFieldName of sizedFields) {\n        const sizedField = baseParentType.field(sizedFieldName);\n        if (!sizedField) {\n          // Sized fields must be present on the output type\n          errorCollector.push(ERRORS.LIST_SIZE_INVALID_SIZED_FIELD.err(\n            `Sized field \"${sizedFieldName}\" is not a field on type \"${baseParentType.coordinate}\"`,\n            { nodes: sourceASTs(application, parent) }\n          ));\n        } else if (!sizedField.type || !(isListType(sizedField.type) || isNonNullListType(sizedField.type))) {\n          // Sized fields must be lists\n          errorCollector.push(ERRORS.LIST_SIZE_APPLIED_TO_NON_LIST.err(\n            `Sized field \"${sizedField.coordinate}\" is not a list`,\n            { nodes: sourceASTs(application, parent) },\n          ));\n        }\n      }\n    }\n  }\n}\n\nexport class FederationMetadata {\n  private _externalTester?: ExternalTester;\n  private _sharingPredicate?: (field: FieldDefinition<CompositeType>) => boolean;\n  private _fieldUsedPredicate?: (field: FieldDefinition<CompositeType>) => boolean;\n  private _isFed2Schema?: boolean;\n\n  constructor(readonly schema: Schema) {}\n\n  private onInvalidate() {\n    this._externalTester = undefined;\n    this._sharingPredicate = undefined;\n    this._isFed2Schema = undefined;\n    this._fieldUsedPredicate = undefined;\n  }\n\n  isFed2Schema(): boolean {\n    if (!this._isFed2Schema) {\n      const feature = this.federationFeature();\n      this._isFed2Schema = !!feature && feature.url.version.satisfies(new FeatureVersion(2, 0))\n    }\n    return this._isFed2Schema;\n  }\n\n  federationFeature(): CoreFeature | undefined {\n    return this.schema.coreFeatures?.getByIdentity(latestFederationSpec.identity);\n  }\n\n  private externalTester(): ExternalTester {\n    if (!this._externalTester) {\n      this._externalTester = new ExternalTester(this.schema, this.isFed2Schema());\n    }\n    return this._externalTester;\n  }\n\n  private sharingPredicate(): (field: FieldDefinition<CompositeType>) => boolean {\n    if (!this._sharingPredicate) {\n      this._sharingPredicate = computeShareables(this.schema);\n    }\n    return this._sharingPredicate;\n  }\n\n  private fieldUsedPredicate(): (field: FieldDefinition<CompositeType>) => boolean {\n    if (!this._fieldUsedPredicate) {\n      const usedFields = collectUsedFields(this);\n      this._fieldUsedPredicate = (field: FieldDefinition<CompositeType>) => !!usedFields.has(field);\n    }\n    return this._fieldUsedPredicate;\n  }\n\n  isFieldUsed(field: FieldDefinition<CompositeType>): boolean {\n    return this.fieldUsedPredicate()(field);\n  }\n\n  isFieldExternal(field: FieldDefinition<any> | InputFieldDefinition) {\n    return this.externalTester().isExternal(field);\n  }\n\n  isFieldPartiallyExternal(field: FieldDefinition<any> | InputFieldDefinition) {\n    return this.externalTester().isPartiallyExternal(field);\n  }\n\n  isFieldFullyExternal(field: FieldDefinition<any> | InputFieldDefinition) {\n    return this.externalTester().isFullyExternal(field);\n  }\n\n  isFieldFakeExternal(field: FieldDefinition<any> | InputFieldDefinition) {\n    return this.externalTester().isFakeExternal(field);\n  }\n\n  selectionSelectsAnyExternalField(selectionSet: SelectionSet): boolean {\n    return this.externalTester().selectsAnyExternalField(selectionSet);\n  }\n\n  isFieldShareable(field: FieldDefinition<any>): boolean {\n    return this.sharingPredicate()(field);\n  }\n\n  isInterfaceObjectType(type: NamedType): type is ObjectType {\n    return isObjectType(type)\n      && hasAppliedDirective(type, this.interfaceObjectDirective());\n  }\n\n  federationDirectiveNameInSchema(name: string): string {\n    if (this.isFed2Schema()) {\n      const coreFeatures = this.schema.coreFeatures;\n      assert(coreFeatures, 'Schema should be a core schema');\n      const federationFeature = coreFeatures.getByIdentity(latestFederationSpec.identity);\n      assert(federationFeature, 'Schema should have the federation feature');\n      return federationFeature.directiveNameInSchema(name);\n    } else {\n      return name;\n    }\n  }\n\n  federationTypeNameInSchema(name: string): string {\n    // Currently, the types used to define the federation operations, that is _Any, _Entity and _Service,\n    // are not considered part of the federation spec, and are instead hardcoded to the names above.\n    // The reason being that there is no way to maintain backward compatbility with fed2 if we were to add\n    // those to the federation spec without requiring users to add those types to their @link `import`,\n    // and that wouldn't be a good user experience (because most users don't really know what those types\n    // are/do). And so we special case it.\n    if (name.charAt(0) === '_') {\n      return name;\n    }\n\n    if (this.isFed2Schema()) {\n      const coreFeatures = this.schema.coreFeatures;\n      assert(coreFeatures, 'Schema should be a core schema');\n      const federationFeature = coreFeatures.getByIdentity(latestFederationSpec.identity);\n      assert(federationFeature, 'Schema should have the federation feature');\n      return federationFeature.typeNameInSchema(name);\n    } else {\n      // The only type here so far is the the `FieldSet` one. And in fed1, it's called `_FieldSet`, so ...\n      return '_' + name;\n    }\n  }\n\n  // Should only be be called for \"legacy\" directives, those that existed in 2.0. This\n  // allow to avoiding have to double-check the directive exists every time when we\n  // know it will always exists (note that even though we accept fed1 schema as inputs,\n  // those are almost immediately converted to fed2 ones by the `SchemaUpgrader`, so\n  // we include @shareable or @override in those \"legacy\" directives).\n  private getLegacyFederationDirective<TApplicationArgs extends {[key: string]: any}>(\n    name: FederationDirectiveName\n  ): DirectiveDefinition<TApplicationArgs> {\n    const directive = this.getFederationDirective<TApplicationArgs>(name);\n    assert(directive, `The provided schema does not have federation directive @${name}`);\n    return directive;\n  }\n\n  private getFederationDirective<TApplicationArgs extends {[key: string]: any}>(\n    name: FederationDirectiveName\n  ): DirectiveDefinition<TApplicationArgs> | undefined {\n    return this.schema.directive(this.federationDirectiveNameInSchema(name)) as DirectiveDefinition<TApplicationArgs> | undefined;\n  }\n\n  private getPost20FederationDirective<TApplicationArgs extends {[key: string]: any}>(\n    name: FederationDirectiveName\n  ): Post20FederationDirectiveDefinition<TApplicationArgs> {\n    return this.getFederationDirective<TApplicationArgs>(name) ?? {\n      name,\n      applications: () => new Set<Directive<any, TApplicationArgs>>(),\n    };\n  }\n\n  keyDirective(): DirectiveDefinition<{fields: any, resolvable?: boolean}> {\n    return this.getLegacyFederationDirective(FederationDirectiveName.KEY);\n  }\n\n  overrideDirective(): DirectiveDefinition<{from: string, label?: string}> {\n    return this.getLegacyFederationDirective(FederationDirectiveName.OVERRIDE);\n  }\n\n  extendsDirective(): DirectiveDefinition<Record<string, never>> {\n    return this.getLegacyFederationDirective(FederationDirectiveName.EXTENDS);\n  }\n\n  externalDirective(): DirectiveDefinition<{reason: string}> {\n    return this.getLegacyFederationDirective(FederationDirectiveName.EXTERNAL);\n  }\n\n  requiresDirective(): DirectiveDefinition<{fields: any}> {\n    return this.getLegacyFederationDirective(FederationDirectiveName.REQUIRES);\n  }\n\n  providesDirective(): DirectiveDefinition<{fields: any}> {\n    return this.getLegacyFederationDirective(FederationDirectiveName.PROVIDES);\n  }\n\n  shareableDirective(): DirectiveDefinition<{}> {\n    return this.getLegacyFederationDirective(FederationDirectiveName.SHAREABLE);\n  }\n\n  tagDirective(): DirectiveDefinition<{name: string}> {\n    return this.getLegacyFederationDirective(FederationDirectiveName.TAG);\n  }\n\n  composeDirective(): Post20FederationDirectiveDefinition<{name: string}> {\n    return this.getPost20FederationDirective(FederationDirectiveName.COMPOSE_DIRECTIVE);\n  }\n\n  inaccessibleDirective(): DirectiveDefinition<{}> {\n    return this.getLegacyFederationDirective(FederationDirectiveName.INACCESSIBLE);\n  }\n\n  interfaceObjectDirective(): Post20FederationDirectiveDefinition<{}> {\n    return this.getPost20FederationDirective(FederationDirectiveName.INTERFACE_OBJECT);\n  }\n\n  authenticatedDirective(): Post20FederationDirectiveDefinition<{}> {\n    return this.getPost20FederationDirective(FederationDirectiveName.AUTHENTICATED);\n  }\n\n  requiresScopesDirective(): Post20FederationDirectiveDefinition<{scopes: string[]}> {\n    return this.getPost20FederationDirective(FederationDirectiveName.REQUIRES_SCOPES);\n  }\n\n  policyDirective(): Post20FederationDirectiveDefinition<{scopes: string[]}> {\n    return this.getPost20FederationDirective(FederationDirectiveName.POLICY);\n  }\n\n  fromContextDirective(): Post20FederationDirectiveDefinition<{ field: string }> {\n    return this.getPost20FederationDirective(FederationDirectiveName.FROM_CONTEXT);\n  }\n\n  contextDirective(): Post20FederationDirectiveDefinition<{ name: string }> {\n    return this.getPost20FederationDirective(FederationDirectiveName.CONTEXT);\n  }\n\n  costDirective(): Post20FederationDirectiveDefinition<CostDirectiveArguments> {\n    return this.getPost20FederationDirective(FederationDirectiveName.COST);\n  }\n\n  listSizeDirective(): Post20FederationDirectiveDefinition<ListSizeDirectiveArguments> {\n    return this.getPost20FederationDirective(FederationDirectiveName.LIST_SIZE);\n  }\n\n  cacheTagDirective(): Post20FederationDirectiveDefinition<{format: string}> {\n    return this.getPost20FederationDirective(FederationDirectiveName.CACHE_TAG);\n  }\n\n  allFederationDirectives(): DirectiveDefinition[] {\n    const baseDirectives: DirectiveDefinition[] = [\n      this.keyDirective(),\n      this.externalDirective(),\n      this.requiresDirective(),\n      this.providesDirective(),\n      this.tagDirective(),\n      this.extendsDirective(),\n    ];\n    if (!this.isFed2Schema()) {\n      return baseDirectives;\n    }\n\n    baseDirectives.push(this.shareableDirective());\n    baseDirectives.push(this.inaccessibleDirective());\n    baseDirectives.push(this.overrideDirective());\n    const composeDirective = this.composeDirective();\n    if (isFederationDirectiveDefinedInSchema(composeDirective)) {\n      baseDirectives.push(composeDirective);\n    }\n    const interfaceObjectDirective = this.interfaceObjectDirective();\n    if (isFederationDirectiveDefinedInSchema(interfaceObjectDirective)) {\n      baseDirectives.push(interfaceObjectDirective);\n    }\n\n    const authenticatedDirective = this.authenticatedDirective();\n    if (isFederationDirectiveDefinedInSchema(authenticatedDirective)) {\n      baseDirectives.push(authenticatedDirective);\n    }\n\n    const requiresScopesDirective = this.requiresScopesDirective();\n    if (isFederationDirectiveDefinedInSchema(requiresScopesDirective)) {\n      baseDirectives.push(requiresScopesDirective);\n    }\n\n    const policyDirective = this.policyDirective();\n    if (isFederationDirectiveDefinedInSchema(policyDirective)) {\n      baseDirectives.push(policyDirective);\n    }\n\n    const contextDirective = this.contextDirective();\n    if (isFederationDirectiveDefinedInSchema(contextDirective)) {\n      baseDirectives.push(contextDirective);\n    }\n\n    const fromContextDirective = this.fromContextDirective();\n    if (isFederationDirectiveDefinedInSchema(fromContextDirective)) {\n      baseDirectives.push(fromContextDirective);\n    }\n\n    const costDirective = this.costDirective();\n    if (isFederationDirectiveDefinedInSchema(costDirective)) {\n      baseDirectives.push(costDirective);\n    }\n\n    const listSizeDirective = this.listSizeDirective();\n    if (isFederationDirectiveDefinedInSchema(listSizeDirective)) {\n      baseDirectives.push(listSizeDirective);\n    }\n\n    const cacheTagDirective = this.cacheTagDirective();\n    if (isFederationDirectiveDefinedInSchema(cacheTagDirective)) {\n      baseDirectives.push(cacheTagDirective);\n    }\n    return baseDirectives;\n  }\n\n  // Note that a subgraph may have no \"entities\" and so no _EntityType.\n  entityType(): UnionType | undefined {\n    return this.schema.type(this.federationTypeNameInSchema(entityTypeSpec.name)) as UnionType | undefined;\n  }\n\n  anyType(): ScalarType {\n    return this.schema.type(this.federationTypeNameInSchema(anyTypeSpec.name)) as ScalarType;\n  }\n\n  serviceType(): ObjectType {\n    return this.schema.type(this.federationTypeNameInSchema(serviceTypeSpec.name)) as ObjectType;\n  }\n\n  fieldSetType(): ScalarType {\n    return this.schema.type(this.federationTypeNameInSchema(FederationTypeName.FIELD_SET)) as ScalarType;\n  }\n\n  allFederationTypes(): NamedType[] {\n    // We manually include the `_Any`, `_Service` and `Entity` types because there are not strictly\n    // speaking part of the federation @link spec.\n    const fedTypes: NamedType[] = [\n      this.anyType(),\n      this.serviceType(),\n    ];\n\n    const fedFeature = this.federationFeature();\n    if (fedFeature) {\n      const featureDef = FEDERATION_VERSIONS.find(fedFeature.url.version);\n      assert(featureDef, () => `Federation spec should be known, but got ${fedFeature.url}`);\n      for (const typeSpec of featureDef.typeSpecs()) {\n        const type = this.schema.type(fedFeature.typeNameInSchema(typeSpec.name));\n        if (type) {\n          fedTypes.push(type);\n        }\n      }\n    } else {\n      // Fed1: the only type we had was _FieldSet.\n      fedTypes.push(this.fieldSetType());\n    }\n\n    const entityType = this.entityType();\n    if (entityType) {\n      fedTypes.push(entityType);\n    }\n    return fedTypes;\n  }\n}\n\nexport type FederationDirectiveNotDefinedInSchema<TApplicationArgs extends {[key: string]: any}> = {\n  name: string,\n  applications: () => ReadonlySet<Directive<any, TApplicationArgs>>,\n}\n\nexport type Post20FederationDirectiveDefinition<TApplicationArgs extends {[key: string]: any}> =\n  DirectiveDefinition<TApplicationArgs>\n  | FederationDirectiveNotDefinedInSchema<TApplicationArgs>;\n\nexport function isFederationDirectiveDefinedInSchema<TApplicationArgs extends {[key: string]: any}>(\n  definition: Post20FederationDirectiveDefinition<TApplicationArgs>\n): definition is DirectiveDefinition<TApplicationArgs> {\n  return definition instanceof DirectiveDefinition;\n}\n\nexport function hasAppliedDirective(type: NamedType, definition: Post20FederationDirectiveDefinition<any>): boolean {\n  return isFederationDirectiveDefinedInSchema(definition) && type.hasAppliedDirective(definition);\n}\n\nexport class FederationBlueprint extends SchemaBlueprint {\n  constructor(private readonly withRootTypeRenaming: boolean) {\n    super();\n  }\n\n  onAddedCoreFeature(schema: Schema, feature: CoreFeature) {\n    super.onAddedCoreFeature(schema, feature);\n    if (feature.url.identity === federationIdentity) {\n      const spec = FEDERATION_VERSIONS.find(feature.url.version);\n      if (spec) {\n        spec.addElementsToSchema(schema);\n      }\n    }\n  }\n\n  onMissingDirectiveDefinition(schema: Schema, directive: Directive): DirectiveDefinition | GraphQLError[] | undefined {\n    if (directive.name === linkDirectiveDefaultName) {\n      const args = directive.arguments();\n      const url = args && (args['url'] as string | undefined);\n      let as: string | undefined = undefined;\n      let imports: CoreImport[] = [];\n      if (url && url.startsWith(linkSpec.identity)) {\n        as = args['as'] as string | undefined;\n        imports = extractCoreFeatureImports(linkSpec.url, directive as Directive<SchemaDefinition, CoreOrLinkDirectiveArgs>);\n      }\n      const errors = linkSpec.addDefinitionsToSchema(schema, as, imports);\n      return errors.length > 0 ? errors : schema.directive(directive.name);\n    }\n    return super.onMissingDirectiveDefinition(schema, directive);\n  }\n\n  ignoreParsedField(type: NamedType, fieldName: string): boolean {\n    // Historically, federation 1 has accepted invalid schema, including some where the Query type included\n    // the definition of `_entities` (so `_entities(representations: [_Any!]!): [_Entity]!`) but _without_\n    // defining the `_Any` or `_Entity` type. So while we want to be stricter for fed2 (so this kind of\n    // really weird case can be fixed), we want fed2 to accept as much fed1 schema as possible.\n    //\n    // So, to avoid this problem, we ignore the _entities and _service fields if we parse them from\n    // a fed1 input schema. Those will be added back anyway (along with the proper types) post-parsing.\n    if (!FEDERATION_OPERATION_FIELDS.includes(fieldName)) {\n      return false;\n    }\n    const metadata = federationMetadata(type.schema());\n    return !!metadata && !metadata.isFed2Schema();\n  }\n\n  onConstructed(schema: Schema) {\n    const existing = federationMetadata(schema);\n    if (!existing) {\n      (schema as any)['_federationMetadata'] = new FederationMetadata(schema);\n    }\n  }\n\n  onDirectiveDefinitionAndSchemaParsed(schema: Schema): GraphQLError[] {\n    const errors = completeSubgraphSchema(schema);\n    schema.schemaDefinition.processUnappliedDirectives();\n    return errors;\n  }\n\n  onInvalidation(schema: Schema) {\n    super.onInvalidation(schema);\n    const metadata = federationMetadata(schema);\n    assert(metadata, 'Federation schema should have had its metadata set on construction');\n    FederationMetadata.prototype['onInvalidate'].call(metadata);\n  }\n\n  onValidation(schema: Schema): GraphQLError[] {\n    const errorCollector = super.onValidation(schema);\n\n    // We rename all root type to their default names (we do here rather than in `prepareValidation` because\n    // that can actually fail).\n    if (this.withRootTypeRenaming) {\n      for (const k of allSchemaRootKinds) {\n        const type = schema.schemaDefinition.root(k)?.type;\n        const defaultName = defaultRootName(k);\n        if (type && type.name !== defaultName) {\n          // We first ensure there is no other type using the default root name. If there is, this is a\n          // composition error.\n          const existing = schema.type(defaultName);\n          if (existing) {\n            errorCollector.push(ERROR_CATEGORIES.ROOT_TYPE_USED.get(k).err(\n              `The schema has a type named \"${defaultName}\" but it is not set as the ${k} root type (\"${type.name}\" is instead): `\n              + 'this is not supported by federation. '\n              + 'If a root type does not use its default name, there should be no other type with that default name.',\n              { nodes: sourceASTs(type, existing) },\n            ));\n          }\n          type.rename(defaultName);\n        }\n      }\n    }\n\n    const metadata = federationMetadata(schema);\n    assert(metadata, 'Federation schema should have had its metadata set on construction');\n    // We skip the rest of validation for fed1 schema because there is a number of validation that is stricter than what fed 1\n    // accepted, and some of those issues are fixed by `SchemaUpgrader`. So insofar as any fed 1 scheam is ultimately converted\n    // to a fed 2 one before composition, then skipping some validation on fed 1 schema is fine.\n    if (!metadata.isFed2Schema()) {\n      return errorCollector;\n    }\n\n    // We validate the @key, @requires and @provides.\n    const keyDirective = metadata.keyDirective();\n    validateAllFieldSet<CompositeType>({\n      definition: keyDirective,\n      targetTypeExtractor: type => type,\n      errorCollector,\n      metadata,\n      isOnParentType: true,\n      allowOnNonExternalLeafFields: true,\n      allowOnInterface: metadata.federationFeature()!.url.version.compareTo(new FeatureVersion(2, 3)) >= 0,\n      onFields: field => {\n        const type = baseType(field.type!);\n        if (isUnionType(type) || isInterfaceType(type)) {\n          let kind: string = type.kind;\n          kind = kind.slice(0, kind.length - 'Type'.length);\n          throw ERRORS.KEY_FIELDS_SELECT_INVALID_TYPE.err(\n            `field \"${field.coordinate}\" is a ${kind} type which is not allowed in @key`,\n          );\n        }\n      }\n    });\n    // Note that we currently reject @requires where a leaf field of the selection is not external,\n    // because if it's provided by the current subgraph, why \"requires\" it? That said, it's not 100%\n    // nonsensical if you wanted a local field to be part of the subgraph fetch even if it's not\n    // truly queried _for some reason_. But it's unclear such reasons exists, so for now we prefer\n    // rejecting it as it also make it less likely user misunderstand what @requires actually do.\n    // But we could consider lifting that limitation if users comes with a good rational for allowing\n    // it.\n    validateAllFieldSet<FieldDefinition<CompositeType>>({\n      definition: metadata.requiresDirective(),\n      targetTypeExtractor: field => field.parent,\n      errorCollector,\n      metadata,\n      allowFieldsWithArguments: true,\n    });\n    // Note that like for @requires above, we error out if a leaf field of the selection is not\n    // external in a @provides (we pass `false` for the `allowOnNonExternalLeafFields` parameter),\n    // but contrarily to @requires, there is probably no reason to ever change this, as a @provides\n    // of a field already provides is 100% nonsensical.\n    validateAllFieldSet<FieldDefinition<CompositeType>>({\n      definition: metadata.providesDirective(),\n      targetTypeExtractor: field => {\n        if (metadata.isFieldExternal(field)) {\n          throw ERRORS.EXTERNAL_COLLISION_WITH_ANOTHER_DIRECTIVE.err(\n            `Cannot have both @provides and @external on field \"${field.coordinate}\"`,\n            { nodes: field.sourceAST },\n          );\n        }\n        const type = baseType(field.type!);\n        if (!isCompositeType(type)) {\n          throw ERRORS.PROVIDES_ON_NON_OBJECT_FIELD.err(\n            `Invalid @provides directive on field \"${field.coordinate}\": field has type \"${field.type}\" which is not a Composite Type`,\n            { nodes: field.sourceAST },\n          );\n        }\n        return type;\n      },\n      errorCollector,\n      metadata,\n    });\n\n    // validate @context and @fromContext\n    const contextDirective = metadata.contextDirective();\n    const contextToTypeMap = new Map<string, (ObjectType | InterfaceType | UnionType)[]>();\n    for (const application of contextDirective.applications()) {\n      const parent = application.parent;\n      const name = application.arguments().name as string;\n      const match = name.match(/^([A-Za-z]\\w*)$/);\n      if (name.includes('_')) {\n        errorCollector.push(ERRORS.CONTEXT_NAME_INVALID.err(\n          `Context name \"${name}\" may not contain an underscore.`,\n          { nodes: sourceASTs(application) }\n        ));\n      }\n      else if (!match) {\n        errorCollector.push(ERRORS.CONTEXT_NAME_INVALID.err(\n          `Context name \"${name}\" is invalid. It should have only alphanumeric characters.`,\n          { nodes: sourceASTs(application) }\n        ));\n      }\n      const types = contextToTypeMap.get(name);\n      if (types) {\n        types.push(parent);\n      } else {\n        contextToTypeMap.set(name, [parent]);\n      }\n    }\n\n    const fromContextDirective = metadata.fromContextDirective();\n    for (const application of fromContextDirective.applications()) {\n      const { field } = application.arguments();\n      const { context, selection } = parseContext(field);\n\n      // error if parent's parent is a directive definition\n      if (application.parent.parent.kind === 'DirectiveDefinition') {\n        errorCollector.push(ERRORS.CONTEXT_NOT_SET.err(\n          `@fromContext argument cannot be used on a directive definition \"${application.parent.coordinate}\".`,\n          { nodes: sourceASTs(application) }\n        ));\n        continue;\n      }\n\n      const parent = application.parent as ArgumentDefinition<FieldDefinition<ObjectType | InterfaceType | UnionType>>;\n\n      // error if parent's parent is an interface\n      if (parent?.parent?.parent?.kind !== 'ObjectType') {\n        errorCollector.push(ERRORS.CONTEXT_NOT_SET.err(\n          `@fromContext argument cannot be used on a field that exists on an abstract type \"${application.parent.coordinate}\".`,\n          { nodes: sourceASTs(application) }\n        ));\n        continue;\n      }\n\n      // error if the parent's parent implements an interface containing the field\n      const objectType = parent.parent.parent;\n      for (const implementedInterfaceType of objectType.interfaces()) {\n        const implementedInterfaceField = implementedInterfaceType.field(parent.parent.name);\n        if (implementedInterfaceField) {\n          errorCollector.push(ERRORS.CONTEXT_NOT_SET.err(\n            `@fromContext argument cannot be used on a field implementing an interface field \"${implementedInterfaceField.coordinate}\".`,\n            { nodes: sourceASTs(application) }\n          ));\n        }\n      }\n\n      if (parent.defaultValue !== undefined) {\n        errorCollector.push(ERRORS.CONTEXT_NOT_SET.err(\n          `@fromContext arguments may not have a default value: \"${parent.coordinate}\".`,\n          { nodes: sourceASTs(application) }\n        ));\n      }\n\n      if (!context || !selection) {\n        errorCollector.push(ERRORS.NO_CONTEXT_IN_SELECTION.err(\n          `@fromContext argument does not reference a context \"${field}\".`,\n          { nodes: sourceASTs(application) }\n        ));\n      } else {\n        const locations = contextToTypeMap.get(context);\n        if (!locations) {\n          errorCollector.push(ERRORS.CONTEXT_NOT_SET.err(\n            `Context \"${context}\" is used at location \"${parent.coordinate}\" but is never set.`,\n            { nodes: sourceASTs(application) }\n          ));\n        } else {\n          validateFieldValue({\n            context,\n            selection,\n            fromContextParent: parent,\n            setContextLocations: locations,\n            errorCollector,\n            metadata,\n          });\n        }\n\n        // validate that there is at least one resolvable key on the type\n        const keyDirective = metadata.keyDirective();\n        const keyApplications = objectType.appliedDirectivesOf(keyDirective);\n        if (!keyApplications.some(app => app.arguments().resolvable || app.arguments().resolvable === undefined)) {\n          errorCollector.push(ERRORS.CONTEXT_NO_RESOLVABLE_KEY.err(\n            `Object \"${objectType.coordinate}\" has no resolvable key but has a field with a contextual argument.`,\n            { nodes: sourceASTs(objectType) }\n          ));\n        }\n      }\n    }\n\n    validateNoExternalOnInterfaceFields(metadata, errorCollector);\n    validateAllExternalFieldsUsed(metadata, errorCollector);\n    validateKeyOnInterfacesAreAlsoOnAllImplementations(metadata, errorCollector);\n    validateInterfaceObjectsAreOnEntities(metadata, errorCollector);\n\n    // If tag is redefined by the user, make sure the definition is compatible with what we expect\n    const tagDirective = metadata.tagDirective();\n    if (tagDirective) {\n      const error = tagSpec.checkCompatibleDirective(tagDirective);\n      if (error) {\n        errorCollector.push(error);\n      }\n    }\n\n    // While @shareable is \"repeatable\", this is only so one can use it on both a main\n    // type definition _and_ possible other type extensions. But putting 2 @shareable\n    // on the same type definition or field is both useless, and suggest some miscomprehension,\n    // so we reject it with an (hopefully helpful) error message.\n    for (const objectType of schema.objectTypes()) {\n      validateShareableNotRepeatedOnSameDeclaration(objectType, metadata, errorCollector);\n      for (const field of objectType.fields()) {\n        validateShareableNotRepeatedOnSameDeclaration(field, metadata, errorCollector);\n      }\n    }\n    // Additionally, reject using @shareable on an interface field, as that does not actually\n    // make sense.\n    for (const shareableApplication of metadata.shareableDirective().applications()) {\n      const element = shareableApplication.parent;\n      if (element instanceof FieldDefinition && !isObjectType(element.parent)) {\n        errorCollector.push(ERRORS.INVALID_SHAREABLE_USAGE.err(\n          `Invalid use of @shareable on field \"${element.coordinate}\": only object type fields can be marked with @shareable`,\n          { nodes: sourceASTs(shareableApplication, element.parent) },\n        ));\n      }\n    }\n\n    const costDirective = metadata.costDirective();\n    const listSizeDirective = metadata.listSizeDirective();\n\n    // Validate @cost\n    for (const application of costDirective.applications()) {\n      validateCostNotAppliedToInterface(application, errorCollector);\n    }\n\n    // Validate @listSize\n    for (const application of listSizeDirective.applications()) {\n      const parent = application.parent;\n      assert(parent instanceof FieldDefinition, \"@listSize can only be applied to FIELD_DEFINITION\");\n      validateListSizeAppliedToList(application, parent, errorCollector);\n      validateAssumedSizeNotNegative(application, parent, errorCollector);\n      validateSlicingArgumentsAreValidIntegers(application, parent, errorCollector);\n      validateSizedFieldsAreValidLists(application, parent, errorCollector);\n    }\n\n    // Validate @authenticated, @requireScopes and @policy usage on interfaces and interface objects\n    validateNoAuthenticationOnInterfaces(metadata, errorCollector);\n\n    return errorCollector;\n  }\n\n  validationRules(): readonly SDLValidationRule[] {\n    return FEDERATION_VALIDATION_RULES;\n  }\n\n  onUnknownDirectiveValidationError(schema: Schema, unknownDirectiveName: string, error: GraphQLError): GraphQLError {\n    const metadata = federationMetadata(schema);\n    assert(metadata, `This method should only have been called on a subgraph schema`)\n    if (ALL_DEFAULT_FEDERATION_DIRECTIVE_NAMES.includes(unknownDirectiveName)) {\n      // The directive name is \"unknown\" but it is a default federation directive name. So it means one of a few things\n      // happened:\n      //  1. it's a fed1 schema but the directive is a fed2 only one (only possible case for fed1 schema).\n      //  2. the directive has not been imported at all (so needs to be prefixed for it to work).\n      //  3. the directive has an `import`, but it's been aliased to another name.\n      if (metadata.isFed2Schema()) {\n        const federationFeature = metadata.federationFeature();\n        assert(federationFeature, 'Fed2 subgraph _must_ link to the federation feature')\n        const directiveNameInSchema = federationFeature.directiveNameInSchema(unknownDirectiveName);\n        if (directiveNameInSchema.startsWith(federationFeature.nameInSchema + '__')) {\n          // There is no import for that directive\n          return withModifiedErrorMessage(\n            error,\n            `${error.message} If you meant the \"@${unknownDirectiveName}\" federation directive, you should use fully-qualified name \"@${directiveNameInSchema}\" or add \"@${unknownDirectiveName}\" to the \\`import\\` argument of the @link to the federation specification.`\n          );\n        } else {\n          // There's an import, but it's renamed\n          return withModifiedErrorMessage(\n            error,\n            `${error.message} If you meant the \"@${unknownDirectiveName}\" federation directive, you should use \"@${directiveNameInSchema}\" as it is imported under that name in the @link to the federation specification of this schema.`\n          );\n        }\n      } else {\n        return withModifiedErrorMessage(\n          error,\n          `${error.message} If you meant the \"@${unknownDirectiveName}\" federation 2 directive, note that this schema is a federation 1 schema. To be a federation 2 schema, it needs to @link to the federation specifcation v2.`\n        );\n      }\n    } else if (!metadata.isFed2Schema()) {\n      // We could get here in the case where a fed1 schema has tried to use a fed2 directive but mispelled it.\n      const suggestions = suggestionList(unknownDirectiveName, ALL_DEFAULT_FEDERATION_DIRECTIVE_NAMES);\n      if (suggestions.length > 0) {\n        return withModifiedErrorMessage(\n          error,\n          `${error.message}${didYouMean(suggestions.map((s) => '@' + s))} If so, note that ${suggestions.length === 1 ? 'it is a federation 2 directive' : 'they are federation 2 directives'} but this schema is a federation 1 one. To be a federation 2 schema, it needs to @link to the federation specifcation v2.`\n        );\n      }\n    }\n    return error;\n  }\n\n  applyDirectivesAfterParsing() {\n    return true;\n  }\n}\n\nfunction findUnusedNamedForLinkDirective(schema: Schema): string | undefined {\n  if (!schema.directive(linkSpec.url.name)) {\n    return undefined;\n  }\n\n  // The schema already defines a directive named `@link` so we need to use an alias.\n  // To keep it simple, we add a number in the end (so we try `@link1`, and if that's taken `@link2`, ...)\n  const baseName = linkSpec.url.name;\n  const n = 1;\n  for (;;) {\n    const candidate = baseName + n;\n    if (!schema.directive(candidate)) {\n      return candidate;\n    }\n  }\n}\n\nexport function setSchemaAsFed2Subgraph(schema: Schema, useLatest: boolean = false) {\n  let core = schema.coreFeatures;\n  let spec: CoreSpecDefinition;\n  if (core) {\n    spec = core.coreDefinition;\n    // We don't accept pre-1.0 @core: this avoid having to care about what the name\n    // of the argument below is, and why would be bother?\n    assert(spec.url.version.satisfies(linkSpec.version), `Fed2 schema must use @link with version >= 1.0, but schema uses ${spec.url}`);\n  } else {\n    const alias = findUnusedNamedForLinkDirective(schema);\n    const errors = linkSpec.addToSchema(schema, alias);\n    if (errors.length > 0) {\n      throw ErrGraphQLValidationFailed(errors);\n    }\n    spec = linkSpec;\n    core = schema.coreFeatures;\n    assert(core, 'Schema should now be a core schema');\n  }\n\n  const fedSpec = useLatest ? latestFederationSpec : autoExpandedFederationSpec;\n\n  assert(!core.getByIdentity(fedSpec.identity), 'Schema already set as a federation subgraph');\n  schema.schemaDefinition.applyDirective(\n    core.coreItself.nameInSchema,\n    {\n      // note that there is a mismatch between url and directives that are imported. This is because\n      // we want to maintain backward compatibility for those who have already upgraded and we had been upgrading the url to\n      // latest, but we never automatically import directives that exist past 2.4\n      url: fedSpec.url.toString(),\n      import: autoExpandedFederationSpec.directiveSpecs().map((spec) => `@${spec.name}`),\n    }\n  );\n  const errors = completeSubgraphSchema(schema);\n  if (errors.length > 0) {\n    throw ErrGraphQLValidationFailed(errors);\n  }\n}\n\n// This is the full @link declaration as added by `asFed2SubgraphDocument`. It's here primarily for uses by tests that print and match\n// subgraph schema to avoid having to update 20+ tests every time we use a new directive or the order of import changes ...\nexport const FEDERATION2_LINK_WITH_FULL_IMPORTS = '@link(url: \"https://specs.apollo.dev/federation/v2.13\", import: [\"@key\", \"@requires\", \"@provides\", \"@external\", \"@tag\", \"@extends\", \"@shareable\", \"@inaccessible\", \"@override\", \"@composeDirective\", \"@interfaceObject\", \"@authenticated\", \"@requiresScopes\", \"@policy\", \"@context\", \"@fromContext\", \"@cost\", \"@listSize\", \"@cacheTag\"])';\n// This is the full @link declaration that is added when upgrading fed v1 subgraphs to v2 version. It should only be used by tests.\nexport const FEDERATION2_LINK_WITH_AUTO_EXPANDED_IMPORTS = '@link(url: \"https://specs.apollo.dev/federation/v2.13\", import: [\"@key\", \"@requires\", \"@provides\", \"@external\", \"@tag\", \"@extends\", \"@shareable\", \"@inaccessible\", \"@override\", \"@composeDirective\", \"@interfaceObject\"])';\n\n// This is the federation @link for tests that go through the SchemaUpgrader.\nexport const FEDERATION2_LINK_WITH_AUTO_EXPANDED_IMPORTS_UPGRADED = '@link(url: \"https://specs.apollo.dev/federation/v2.4\", import: [\"@key\", \"@requires\", \"@provides\", \"@external\", \"@tag\", \"@extends\", \"@shareable\", \"@inaccessible\", \"@override\", \"@composeDirective\", \"@interfaceObject\"])';\n\n/**\n * Given a document that is assumed to _not_ be a fed2 schema (it does not have a `@link` to the federation spec),\n * returns an equivalent document that `@link` to the last known federation spec.\n *\n * @param document - the document to \"augment\".\n * @param options.addAsSchemaExtension - defines whether the added `@link` is added as a schema extension (`extend schema`) or\n *   added to the schema definition. Defaults to `true` (added as an extension), as this mimics what we tends to write manually.\n * @param options.includeAllImports - defines whether we should auto import ALL latest federation v2 directive definitions or include\n *   only limited set of directives (i.e. federation v2.4 definitions)\n */\nexport function asFed2SubgraphDocument(document: DocumentNode, options?: { addAsSchemaExtension?: boolean, includeAllImports?: boolean }): DocumentNode {\n  const importedDirectives = options?.includeAllImports ? latestFederationSpec.directiveSpecs() : autoExpandedFederationSpec.directiveSpecs();\n  const directiveToAdd: ConstDirectiveNode = ({\n    kind: Kind.DIRECTIVE,\n    name: { kind: Kind.NAME, value: linkDirectiveDefaultName },\n    arguments: [\n      {\n        kind: Kind.ARGUMENT,\n        name: { kind: Kind.NAME, value: 'url' },\n        value: { kind: Kind.STRING, value: latestFederationSpec.url.toString() }\n      },\n      {\n        kind: Kind.ARGUMENT,\n        name: { kind: Kind.NAME, value: 'import' },\n        value: { kind: Kind.LIST, values: importedDirectives.map((spec) => ({ kind: Kind.STRING, value: `@${spec.name}` })) }\n      }\n    ]\n  });\n  if (options?.addAsSchemaExtension ?? true) {\n    return {\n      kind: Kind.DOCUMENT,\n      loc: document.loc,\n      definitions: document.definitions.concat({\n        kind: Kind.SCHEMA_EXTENSION,\n        directives: [directiveToAdd]\n      }),\n    }\n  }\n\n  // We can't add a new schema definition if it already exists. If it doesn't we need to know if there is a mutation type or\n  // not.\n  const existingSchemaDefinition = document.definitions.find((d): d is SchemaDefinitionNode => d.kind == Kind.SCHEMA_DEFINITION);\n  if (existingSchemaDefinition) {\n    return {\n      kind: Kind.DOCUMENT,\n      loc: document.loc,\n      definitions: document.definitions.filter((d) => d !== existingSchemaDefinition).concat([{\n        ...existingSchemaDefinition,\n        directives: [directiveToAdd].concat(existingSchemaDefinition.directives ?? []),\n      }]),\n    }\n  } else {\n    const hasMutation = document.definitions.some((d) => d.kind === Kind.OBJECT_TYPE_DEFINITION && d.name.value === 'Mutation');\n    const makeOpType = (opType: OperationTypeNode, name: string): OperationTypeDefinitionNode => ({\n      kind: Kind.OPERATION_TYPE_DEFINITION,\n      operation: opType,\n      type: {\n        kind: Kind.NAMED_TYPE,\n        name: {\n          kind: Kind.NAME,\n          value: name,\n        }\n      },\n    });\n    return {\n      kind: Kind.DOCUMENT,\n      loc: document.loc,\n      definitions: document.definitions.concat({\n        kind: Kind.SCHEMA_DEFINITION,\n        directives: [directiveToAdd],\n        operationTypes: [ makeOpType(OperationTypeNode.QUERY, 'Query') ].concat(hasMutation ? makeOpType(OperationTypeNode.MUTATION, 'Mutation') : []),\n      }),\n    }\n  }\n}\n\nexport function printSubgraphNames(names: string[]): string {\n  return printHumanReadableList(\n    names.map(n => `\"${n}\"`),\n    {\n      prefix: 'subgraph',\n      prefixPlural: 'subgraphs',\n    }\n  );\n}\n\nexport function federationMetadata(schema: Schema): FederationMetadata | undefined {\n  return (schema as any)['_federationMetadata'];\n}\n\nexport function isFederationSubgraphSchema(schema: Schema): boolean {\n  return !!federationMetadata(schema);\n}\n\nexport function isFederationField(field: FieldDefinition<CompositeType>): boolean {\n  if (field.parent === field.schema().schemaDefinition.root(\"query\")?.type) {\n    return FEDERATION_OPERATION_FIELDS.includes(field.name);\n  }\n  return false;\n}\n\nexport function isEntityType(type: NamedType): boolean {\n  if (!isObjectType(type) && !isInterfaceType(type)) {\n    return false;\n  }\n  const metadata = federationMetadata(type.schema());\n  return !!metadata && type.hasAppliedDirective(metadata.keyDirective());\n}\n\nexport function isInterfaceObjectType(type: NamedType): boolean {\n  if (!isObjectType(type)) {\n    return false;\n  }\n  const metadata = federationMetadata(type.schema());\n  return !!metadata && metadata.isInterfaceObjectType(type);\n}\n\nexport function buildSubgraph(\n  name: string,\n  url: string,\n  source: DocumentNode | string,\n  withRootTypeRenaming: boolean = true,\n): Subgraph {\n  const buildOptions = {\n    blueprint: new FederationBlueprint(withRootTypeRenaming),\n    validate: false,\n  };\n  let subgraph: Subgraph;\n  try {\n    const schema = typeof source === 'string'\n      ? buildSchema(new Source(source, name), buildOptions)\n      : buildSchemaFromAST(source, buildOptions)\n    subgraph = new Subgraph(name, url, schema);\n  } catch (e) {\n    if (e instanceof GraphQLError && name !== FEDERATION_UNNAMED_SUBGRAPH_NAME) {\n      throw addSubgraphToError(e, name, ERRORS.INVALID_GRAPHQL);\n    } else {\n      throw e;\n    }\n  }\n  return subgraph.validate();\n}\n\nexport function newEmptyFederation2Schema(config?: SchemaConfig): Schema {\n  const schema = new Schema(new FederationBlueprint(true), config);\n  setSchemaAsFed2Subgraph(schema, true);\n  return schema;\n}\n\nfunction completeSubgraphSchema(schema: Schema): GraphQLError[] {\n  const coreFeatures = schema.coreFeatures;\n  if (coreFeatures) {\n    const fedFeature = coreFeatures.getByIdentity(federationIdentity);\n    if (fedFeature) {\n      return completeFed2SubgraphSchema(schema);\n    } else {\n      return completeFed1SubgraphSchema(schema);\n    }\n  } else {\n    const fedLink = schema.schemaDefinition.appliedDirectivesOf(linkDirectiveDefaultName).find(isFedSpecLinkDirective);\n    if (fedLink) {\n      const errors = linkSpec.addToSchema(schema);\n      if (errors.length > 0) {\n        return errors;\n      }\n      return completeFed2SubgraphSchema(schema);\n    } else {\n      return completeFed1SubgraphSchema(schema);\n    }\n  }\n}\n\nfunction isFedSpecLinkDirective(directive: Directive<SchemaDefinition>): directive is Directive<SchemaDefinition, LinkDirectiveArgs> {\n  const args = directive.arguments();\n  return directive.name === linkDirectiveDefaultName && args['url'] && (args['url'] as string).startsWith(federationIdentity);\n}\n\nfunction completeFed1SubgraphSchema(schema: Schema): GraphQLError[] {\n  // We special case @key, @requires and @provides because we've seen existing user schema where those\n  // have been defined in an invalid way, but in a way that fed1 wasn't rejecting. So for convenience,\n  // if we detect one of those case, we just remove the definition and let the code afteward add the\n  // proper definition back.\n  // Note that, in a perfect world, we'd do this within the `SchemaUpgrader`. But the way the code\n  // is organised, this method is called before we reach the `SchemaUpgrader`, and it doesn't seem\n  // worth refactoring things drastically for that minor convenience.\n  for (const name of [FederationDirectiveName.KEY, FederationDirectiveName.PROVIDES, FederationDirectiveName.REQUIRES]) {\n    const directive = schema.directive(name);\n    if (!directive) {\n      continue;\n    }\n\n    // We shouldn't have applications at the time of this writing because `completeSubgraphSchema`, which calls this,\n    // is only called:\n    // 1. during schema parsing, by `FederationBluePrint.onDirectiveDefinitionAndSchemaParsed`, and that is called\n    //   before we process any directive applications.\n    // 2. by `setSchemaAsFed2Subgraph`, but as the name imply, this trickles to `completeFed2SubgraphSchema`, not\n    //   this one method.\n    // In other words, there is currently no way to create a full fed1 schema first, and get that method called\n    // second. If that changes (no real reason but...), we'd have to modify this because when we remove the\n    // definition to re-add the \"correct\" version, we'd have to re-attach existing applications (doable but not\n    // done). This assert is so we notice it quickly if that ever happens (again, unlikely, because fed1 schema\n    // is a backward compatibility thing and there is no reason to expand that too much in the future).\n    assert(directive.applications().size === 0, `${directive} shouldn't have had validation at that places`);\n\n    // The patterns we recognize and \"correct\" (by essentially ignoring the definition)\n    // are:\n    //  1. if the definition has no arguments at all.\n    //  2. if the `fields` argument is declared as nullable.\n    //  3. if the `fields` argument type is named \"FieldSet\" instead of \"_FieldSet\".\n    //\n    // Note that they all correspong to things we've seen in use schema.\n    const fieldType = directive.argument('fields')?.type?.toString();\n    // Note that to be on the safe side, we check that `fields` is the only argument. That's\n    // because while fed2 accepts the optional `resolvable` arg for @key, fed1 only ever\n    // accepted that one argument for all those directives. But if the use had definited\n    // more arguments _and_ provided value for such extra argument in some applications,\n    // us removing the definition would create validation errors that would be hard to\n    // understand for the user.\n    const fieldTypeIsWrongInKnownWays = !!fieldType\n      && directive.arguments().length === 1\n      && (fieldType === 'String' || fieldType === '_FieldSet' || fieldType === 'FieldSet');\n\n    if (directive.arguments().length === 0 || fieldTypeIsWrongInKnownWays) {\n      directive.remove();\n    }\n  }\n\n  const errors = FEDERATION1_TYPES.map((spec) => spec.checkOrAdd(schema, FAKE_FED1_CORE_FEATURE_TO_RENAME_TYPES))\n    .concat(FEDERATION1_DIRECTIVES.map((spec) => spec.checkOrAdd(schema)))\n    .flat();\n\n  return errors.length === 0 ? expandKnownFeatures(schema) : errors;\n}\n\nfunction completeFed2SubgraphSchema(schema: Schema): GraphQLError[] {\n  const coreFeatures = schema.coreFeatures;\n  assert(coreFeatures, 'This method should not have been called on a non-core schema');\n\n  const fedFeature = coreFeatures.getByIdentity(federationIdentity);\n  assert(fedFeature, 'This method should not have been called on a schema with no @link for federation');\n\n  const spec = FEDERATION_VERSIONS.find(fedFeature.url.version);\n  if (!spec) {\n    return [ERRORS.UNKNOWN_FEDERATION_LINK_VERSION.err(\n      `Invalid version ${fedFeature.url.version} for the federation feature in @link directive on schema`,\n      { nodes: fedFeature.directive.sourceAST },\n    )];\n  }\n\n  const errors = spec.addElementsToSchema(schema);\n  return errors.length === 0 ? expandKnownFeatures(schema) : errors;\n}\n\nfunction expandKnownFeatures(schema: Schema): GraphQLError[] {\n  const coreFeatures = schema.coreFeatures;\n  if (!coreFeatures) {\n    return [];\n  }\n\n  let errors: GraphQLError[] = [];\n  for (const feature of coreFeatures.allFeatures()) {\n    // We should already have dealt with the core/link spec and federation at this point. Also, we shouldn't have the `join` spec in subgraphs,\n    // but some tests play with the idea and currently the join spec is implemented in a way that is not idempotent (it doesn't use\n    // `DirectiveSpecification.checkAndAdd`; we should clean it up at some point, but not exactly urgent).\n    if (feature === coreFeatures.coreItself || feature.url.identity === federationIdentity  || feature.url.identity === joinIdentity) {\n      continue;\n    }\n\n    const spec = coreFeatureDefinitionIfKnown(feature.url);\n    if (!spec) {\n      continue;\n    }\n\n    errors = errors.concat(spec.addElementsToSchema(schema));\n  }\n  return errors;\n}\n\nexport function parseFieldSetArgument({\n  parentType,\n  directive,\n  fieldAccessor,\n  validate,\n  decorateValidationErrors = true,\n  normalize = false,\n}: {\n  parentType: CompositeType,\n  directive: Directive<SchemaElement<any, any>, {fields: any}>,\n  fieldAccessor?: (type: CompositeType, fieldName: string) => FieldDefinition<any> | undefined,\n  validate?: boolean,\n  decorateValidationErrors?: boolean,\n  normalize?: boolean,\n}): SelectionSet {\n  try {\n    const selectionSet = parseSelectionSet({\n      parentType,\n      source: validateFieldSetValue(directive),\n      fieldAccessor,\n      validate,\n    });\n    if (validate ?? true) {\n      selectionSet.forEachElement((elt) => {\n        if (elt.kind === 'Field' && elt.alias) {\n          // Note that this will be caught by the surrounding catch and \"decorated\".\n          throw new GraphQLError(`Cannot use alias \"${elt.alias}\" in \"${elt}\": aliases are not currently supported in @${directive.name}`);\n        }\n      });\n    }\n    return normalize\n      ? selectionSet.normalize({ parentType, recursive: true })\n      : selectionSet;\n  } catch (e) {\n    if (!(e instanceof GraphQLError) || !decorateValidationErrors) {\n      throw e;\n    }\n\n    throw handleFieldSetValidationError(\n      directive,\n      e,\n      (msg: string) => {\n        if (msg.startsWith('Cannot query field')) {\n          if (msg.endsWith('.')) {\n            msg = msg.slice(0, msg.length - 1);\n          }\n          if (directive.name === FederationDirectiveName.KEY) {\n            msg = msg + ' (the field should either be added to this subgraph or, if it should not be resolved by this subgraph, you need to add it to this subgraph with @external).';\n          } else {\n            msg = msg + ' (if the field is defined in another subgraph, you need to add it to this subgraph with @external).';\n          }\n        }\n        return msg;\n      },\n    );\n  }\n}\n\nexport function collectTargetFields({\n  parentType,\n  directive,\n  includeInterfaceFieldsImplementations,\n  validate = true,\n}: {\n  parentType: CompositeType,\n  directive: Directive<NamedType | FieldDefinition<CompositeType>, {fields: any}>,\n  includeInterfaceFieldsImplementations: boolean,\n  validate?: boolean,\n}): FieldDefinition<CompositeType>[] {\n  const fields: FieldDefinition<CompositeType>[] = [];\n  try {\n    parseFieldSetArgument({\n      parentType,\n      directive,\n      fieldAccessor: (t, f) => {\n        const field = t.field(f);\n        if (field) {\n          fields.push(field);\n          if (includeInterfaceFieldsImplementations && isInterfaceType(t)) {\n            for (const implType of t.possibleRuntimeTypes()) {\n              const implField = implType.field(f);\n              if (implField) {\n                fields.push(implField);\n              }\n            }\n          }\n        }\n        return field;\n      },\n      validate,\n    });\n  } catch (e) {\n    // If we explicitly requested no validation, then we shouldn't throw a (graphQL) error, but if we do, we swallow it\n    // (returning a partial result, but we assume it is fine).\n    const isGraphQLError = errorCauses(e) !== undefined\n    if (!isGraphQLError || validate) {\n      throw e;\n    }\n  }\n  return fields;\n}\n\nfunction validateFieldSetValue(directive: Directive<SchemaElement<any, any>, {fields: any}>): string {\n  const fields = directive.arguments().fields;\n  const nodes = directive.sourceAST;\n  if (typeof fields !== 'string') {\n    throw ERROR_CATEGORIES.DIRECTIVE_INVALID_FIELDS_TYPE.get(directive.name).err(\n      `Invalid value for argument \"${directive.definition!.argument('fields')!.name}\": must be a string.`,\n      { nodes },\n    );\n  }\n  // While validating if the field is a string will work in most cases, this will not catch the case where the field argument was\n  // unquoted but parsed as an enum value (see federation/issues/850 in particular). So if we have the AST (which we will usually\n  // have in practice), use that to check that the argument was truly a string.\n  if (nodes && nodes.kind === 'Directive') {\n    for (const argNode of nodes.arguments ?? []) {\n      if (argNode.name.value === 'fields') {\n        if (argNode.value.kind !== 'StringValue') {\n          throw ERROR_CATEGORIES.DIRECTIVE_INVALID_FIELDS_TYPE.get(directive.name).err(\n            `Invalid value for argument \"${directive.definition!.argument('fields')!.name}\": must be a string.`,\n            { nodes },\n          );\n        }\n        break;\n      }\n    }\n  }\n\n  return fields;\n}\n\nexport interface ServiceDefinition {\n  typeDefs: DocumentNode;\n  name: string;\n  url?: string;\n}\nexport function subgraphsFromServiceList(serviceList: ServiceDefinition[]): Subgraphs | GraphQLError[] {\n  let errors: GraphQLError[] = [];\n  const subgraphs = new Subgraphs();\n  for (const service of serviceList) {\n    try {\n      subgraphs.add(buildSubgraph(service.name, service.url ?? '', service.typeDefs));\n    } catch (e) {\n      const causes = errorCauses(e);\n      if (causes) {\n        errors = errors.concat(causes);\n      } else {\n        throw e;\n      }\n    }\n  }\n  return errors.length === 0 ? subgraphs : errors;\n}\n\n// Simple wrapper around a Subgraph[] that ensures that 1) we never mistakenly get 2 subgraph with the same name,\n// 2) keep the subgraphs sorted by name (makes iteration more predictable). It also allow convenient access to\n// a subgraph by name so behave like a map<string, Subgraph> in most ways (but with the previously mentioned benefits).\nexport class Subgraphs {\n  private readonly subgraphs = new OrderedMap<string, Subgraph>();\n\n  add(subgraph: Subgraph): Subgraph {\n    if (this.subgraphs.has(subgraph.name)) {\n      throw new Error(`A subgraph named ${subgraph.name} already exists` + (subgraph.url ? ` (with url '${subgraph.url}')` : ''));\n    }\n\n    this.subgraphs.add(subgraph.name, subgraph);\n    return subgraph;\n  }\n\n  get(name: string): Subgraph | undefined {\n    return this.subgraphs.get(name);\n  }\n\n  size(): number {\n    return this.subgraphs.size;\n  }\n\n  names(): readonly string[] {\n    return this.subgraphs.keys();\n  }\n\n  values(): readonly Subgraph[] {\n    return this.subgraphs.values();\n  }\n\n  *[Symbol.iterator]() {\n    for (const subgraph of this.subgraphs) {\n      yield subgraph;\n    }\n  }\n\n  validate(): GraphQLError[] | undefined {\n    let errors: GraphQLError[] = [];\n    for (const subgraph of this.values()) {\n      try {\n        subgraph.validate();\n      } catch (e) {\n        const causes = errorCauses(e);\n        if (!causes) {\n          throw e;\n        }\n        errors = errors.concat(causes);\n      }\n    }\n    return errors.length === 0 ? undefined : errors;\n  }\n\n  toString(): string {\n    return '[' + this.subgraphs.keys().join(', ') + ']'\n  }\n}\n\nexport const anyTypeSpec = createScalarTypeSpecification({ name: '_Any' });\n\nexport const serviceTypeSpec = createObjectTypeSpecification({\n  name: '_Service',\n  fieldsFct: (schema) => [{ name: 'sdl', type: schema.stringType() }],\n});\n\nexport const entityTypeSpec = createUnionTypeSpecification({\n  name: '_Entity',\n  membersFct: (schema) => {\n    // Please note that `_Entity` cannot use \"interface entities\" since interface types cannot be in unions.\n    // It is ok in practice because _Entity is only use as return type for `_entities`, and even when interfaces\n    // are involve, the result of an `_entities` call will always be an object type anyway, and since we force\n    // all implementations of an interface entity to be entity themselves in a subgraph, we're fine.\n    return schema.objectTypes().filter(isEntityType).map((t) => t.name);\n  },\n});\n\nexport const FEDERATION_OPERATION_TYPES = [ anyTypeSpec, serviceTypeSpec, entityTypeSpec ];\n\nexport const serviceFieldName = '_service';\nexport const entitiesFieldName = '_entities';\n\nexport const FEDERATION_OPERATION_FIELDS: readonly string[] = [ serviceFieldName, entitiesFieldName ];\n\nexport class Subgraph {\n  constructor(\n    readonly name: string,\n    readonly url: string,\n    readonly schema: Schema,\n  ) {\n    if (name === FEDERATION_RESERVED_SUBGRAPH_NAME) {\n      throw ERRORS.INVALID_SUBGRAPH_NAME.err(`Invalid name ${FEDERATION_RESERVED_SUBGRAPH_NAME} for a subgraph: this name is reserved`);\n    }\n  }\n\n  metadata(): FederationMetadata {\n    const metadata = federationMetadata(this.schema);\n    assert(metadata, 'The subgraph schema should have built with the federation built-ins.');\n    return metadata;\n  }\n\n  isFed2Subgraph(): boolean {\n    return this.metadata().isFed2Schema();\n  }\n\n  // Adds the _entities and _service fields to the root query type.\n  private addFederationOperations() {\n    const metadata = this.metadata();\n\n    for (const type of FEDERATION_OPERATION_TYPES) {\n      type.checkOrAdd(this.schema);\n    }\n\n    const queryRoot = this.schema.schemaDefinition.root(\"query\");\n    const queryType = queryRoot ? queryRoot.type : this.schema.addType(new ObjectType(\"Query\"));\n\n    const entityField = queryType.field(entitiesFieldName);\n    const entityType = metadata.entityType();\n    if (entityType) {\n      const entityFieldType = new NonNullType(new ListType(entityType));\n      if (!entityField) {\n        queryType.addField(entitiesFieldName, entityFieldType)\n          .addArgument('representations', new NonNullType(new ListType(new NonNullType(metadata.anyType()))));\n      } else if (!entityField.type) {\n        // This can happen when the schema had an empty redefinition of _Entity as we've removed it in\n        // that clear and that would have clear the type of the correspond field. Let's re-populate it\n        // in that case.\n        entityField.type = entityType;\n      }\n    } else if (entityField) {\n      entityField.remove();\n    }\n\n    if (!queryType.field(serviceFieldName)) {\n      queryType.addField(serviceFieldName, new NonNullType(metadata.serviceType()));\n    }\n  }\n\n  /**\n   * Same as `Schema.assumeValid`. Use carefully.\n   */\n  assumeValid(): Subgraph {\n    this.addFederationOperations();\n    this.schema.assumeValid();\n    return this;\n  }\n\n  validate(): Subgraph {\n    try {\n      this.addFederationOperations();\n      this.schema.validate();\n      return this;\n    } catch (e) {\n      if (e instanceof GraphQLError) {\n        // Note that `addSubgraphToError` only adds the provided code if the original error\n        // didn't have one, and the only one that will not have a code are GraphQL errors\n        // (since we assign specific codes to the federation errors).\n        throw addSubgraphToError(e, this.name, ERRORS.INVALID_GRAPHQL);\n      } else {\n        throw e;\n      }\n    }\n  }\n\n  private isPrintedDirective(d: DirectiveDefinition): boolean {\n    if (this.metadata().allFederationDirectives().includes(d)) {\n      return false;\n    }\n\n    const core = this.schema.coreFeatures;\n    return !core || core.sourceFeature(d)?.feature.url.identity !== linkIdentity;\n  }\n\n  private isPrintedType(t: NamedType): boolean {\n    if (this.metadata().allFederationTypes().includes(t)) {\n      return false;\n    }\n\n    // If the query type only have our federation specific fields, then that (almost surely) means the original subgraph\n    // had no Query type and so we save printing it.\n    if (isObjectType(t) && t.isQueryRootType() && t.fields().filter((f) => !isFederationField(f)).length === 0) {\n      return false;\n    }\n\n    const core = this.schema.coreFeatures;\n    return !core || core.sourceFeature(t)?.feature.url.identity !== linkIdentity;\n  }\n\n  private isPrintedDirectiveApplication(d: Directive): boolean {\n    // We print almost all directive application, but the one we skip is the `@link` to the link spec itself.\n    // The reason is that it is one of the things that usually not provided by users but is instead auto-added\n    // and so this keep the output a tad \"cleaner\".\n    // Do note that it is only auto-added if it uses the `@link` name. If it is renamed, we need to include\n    // the application (and more generally, if there is more argument set than just the url, we print\n    // the directive to make sure we're not hidding something relevant).\n    if (!this.schema.coreFeatures || d.name !== linkSpec.url.name) {\n      return true;\n    }\n    const args = d.arguments();\n    let urlArg: FeatureUrl | undefined = undefined;\n    if ('url' in args) {\n      try {\n        urlArg = FeatureUrl.parse(args['url']);\n      } catch (e) {\n        // ignored on purpose: if the 'url' arg don't parse properly as a Feature url, then `urlArg` will\n        // be `undefined` which we want.\n      }\n    }\n    const isDefaultLinkToLink = urlArg?.identity === linkIdentity && Object.keys(args).length === 1;\n    return !isDefaultLinkToLink;\n  }\n\n  /**\n   * Returns a representation of the subgraph without any auto-imported directive definitions or \"federation private\"\n   * types and fiels (`_service` et al.).\n   *\n   * In other words, this will correspond to what a user would usually write.\n   *\n   * Note that if one just want a representation of the full schema, then it can simply call `printSchema(this.schema)`.\n   */\n  toString(basePrintOptions: PrintOptions = defaultPrintOptions) {\n    return printSchema(\n      this.schema,\n      {\n        ...basePrintOptions,\n        directiveDefinitionFilter: (d) => this.isPrintedDirective(d),\n        typeFilter: (t) => this.isPrintedType(t),\n        fieldFilter: (f) => !isFederationField(f),\n        directiveApplicationFilter: (d) => this.isPrintedDirectiveApplication(d),\n      }\n    );\n  }\n}\n\nexport type SubgraphASTNode = ASTNode & { subgraph: string };\n\nexport function addSubgraphToASTNode(node: ASTNode, subgraph: string): SubgraphASTNode {\n  // We won't override a existing subgraph info: it's not like the subgraph an ASTNode can come\n  // from can ever change and this allow the provided to act as a \"default\" rather than a\n  // hard setter, which is convenient in `addSubgraphToError` below if some of the AST of\n  // the provided error already have a subgraph \"origin\".\n  if ('subgraph' in (node as any)) {\n    return node as SubgraphASTNode;\n  }\n  return {\n    ...node,\n    subgraph\n  };\n}\n\nexport function addSubgraphToError(e: GraphQLError, subgraphName: string, errorCode?: ErrorCodeDefinition): GraphQLError {\n  const updatedCauses = errorCauses(e)!.map(cause => {\n    const message = `[${subgraphName}] ${cause.message}`;\n    const nodes = cause.nodes\n      ? cause.nodes.map(node => addSubgraphToASTNode(node, subgraphName))\n      : undefined;\n\n    const code = errorCodeDef(cause) ?? errorCode;\n    const options: GraphQLErrorOptions = {\n      ...extractGraphQLErrorOptions(cause),\n      nodes,\n      originalError: cause,\n    };\n\n    return code\n      ? code.err(message, options)\n      : new GraphQLError(message, options);\n  });\n\n  return updatedCauses.length === 1 ? updatedCauses[0] : ErrGraphQLValidationFailed(updatedCauses);\n}\n\nclass ExternalTester {\n  private readonly fakeExternalFields = new Set<string>();\n  private readonly providedFields = new Set<string>();\n  private readonly externalDirective: DirectiveDefinition<{}>;\n  private readonly externalFieldsOnType = new Set<string>();\n\n  constructor(readonly schema: Schema, private readonly isFed2Schema: boolean) {\n    this.externalDirective = this.metadata().externalDirective();\n    this.collectFakeExternals();\n    this.collectProvidedFields();\n    this.collectExternalsOnType();\n  }\n\n  private metadata(): FederationMetadata {\n    const metadata = federationMetadata(this.schema);\n    assert(metadata, 'Schema should be a subgraphs schema');\n    return metadata;\n  }\n\n  private collectFakeExternals() {\n    const metadata = this.metadata();\n    const extendsDirective =  metadata.extendsDirective();\n    for (const key of metadata.keyDirective().applications()) {\n      const parentType = key.parent as CompositeType;\n      if (!(key.ofExtension() || parentType.hasAppliedDirective(extendsDirective))) {\n        continue;\n      }\n      collectTargetFields({\n        parentType,\n        directive: key as Directive<any, {fields: any}>,\n        includeInterfaceFieldsImplementations: false,\n        validate: false,\n      }).filter((field) => field.hasAppliedDirective(this.externalDirective))\n        .forEach((field) => this.fakeExternalFields.add(field.coordinate));\n    }\n  }\n\n  private collectProvidedFields() {\n    for (const provides of this.metadata().providesDirective().applications()) {\n      const parent = provides.parent as FieldDefinition<CompositeType>;\n      const parentType = baseType(parent.type!);\n      // If `parentType` is not a composite, that means an invalid @provides, but we ignore such errors\n      // for now (also why we pass 'validate: false'). Proper errors will be thrown later during validation.\n      if (isCompositeType(parentType)) {\n        collectTargetFields({\n          parentType,\n          directive: provides as Directive<any, {fields: any}>,\n          includeInterfaceFieldsImplementations: true,\n          validate: false,\n        }).forEach((f) => this.providedFields.add(f.coordinate));\n      }\n    }\n  }\n\n  private collectExternalsOnType() {\n    // We do not collect @external on types for fed1 schema since those will be discarded by the schema upgrader.\n    // The schema upgrader, through calls to `isExternal`, relies on the populated `externalFieldsOnType` object to\n    // inform when @shareable should be automatically added. In the fed1 case, if the map is populated then @shareable won't\n    // be added in places where it should have.\n    if (!this.isFed2Schema) {\n      return;\n    }\n\n    for (const type of this.schema.objectTypes()) {\n      if (type.hasAppliedDirective(this.externalDirective)) {\n        for (const field of type.fields()) {\n          this.externalFieldsOnType.add(field.coordinate);\n        }\n      }\n    }\n  }\n\n  isExternal(field: FieldDefinition<any> | InputFieldDefinition) {\n    return (field.hasAppliedDirective(this.externalDirective) || this.externalFieldsOnType.has(field.coordinate)) && !this.isFakeExternal(field);\n  }\n\n  isFakeExternal(field: FieldDefinition<any> | InputFieldDefinition) {\n    return this.fakeExternalFields.has(field.coordinate);\n  }\n\n  selectsAnyExternalField(selectionSet: SelectionSet): boolean {\n    for (const selection of selectionSet.selections()) {\n      if (selection.kind === 'FieldSelection' && this.isExternal(selection.element.definition)) {\n        return true;\n      }\n      if (selection.selectionSet) {\n        if (this.selectsAnyExternalField(selection.selectionSet)) {\n          return true;\n        }\n      }\n    }\n    return false;\n  }\n\n  isPartiallyExternal(field: FieldDefinition<any> | InputFieldDefinition) {\n    return this.isExternal(field) && this.providedFields.has(field.coordinate);\n  }\n\n  isFullyExternal(field: FieldDefinition<any> | InputFieldDefinition) {\n    return this.isExternal(field) && !this.providedFields.has(field.coordinate);\n  }\n}\n\nexport type ProvidesOrRequiresApplication = Directive<FieldDefinition<ObjectType | InterfaceType>, {fields: any}>\n\n/*\n * It makes no sense to have a @provides/@requires on a non-external leaf field, and we usually reject it during schema\n * validation but this method allows to remove those for:\n *  1. when we extract subgraphs from a fed 1 supergraph, where such validation hadn't been run.\n *  2. for the fed 1 -> fed 2 upgader code.\n *\n * The reason we do this (and generally reject it) is that such provides/requires have a negative impact on later query\n * planning, because it sometimes make us to try type-exploding some interfaces unecessarily. Besides, if a use add\n * something useless, there is a change it hasn't fully understood something, and warning it about that fact through\n * an error is more helpful.\n */\nexport function removeInactiveProvidesAndRequires(\n  schema: Schema,\n  onModified: (field: FieldDefinition<any>, original: ProvidesOrRequiresApplication, updated?: ProvidesOrRequiresApplication) => void = () => {},\n) {\n  const metadata = federationMetadata(schema);\n  if (!metadata) {\n    return;\n  }\n  const providesDirective = metadata.providesDirective();\n  const requiresDirective = metadata.requiresDirective();\n\n  for (const type of schema.types()) {\n    if (!isObjectType(type) && !isInterfaceType(type)) {\n      continue;\n    }\n\n    for (const field of type.fields()) {\n      const fieldBaseType = baseType(field.type!) as CompositeType;\n      removeInactiveApplications(providesDirective, field, fieldBaseType, onModified);\n      removeInactiveApplications(requiresDirective, field, type, onModified);\n    }\n  }\n}\n\nfunction removeInactiveApplications(\n  directiveDefinition: DirectiveDefinition<{fields: any}>,\n  field: FieldDefinition<any>,\n  parentType: CompositeType,\n  onModified: (field: FieldDefinition<any>, original: ProvidesOrRequiresApplication, updated?: ProvidesOrRequiresApplication) => void\n) {\n  for (const application of field.appliedDirectivesOf(directiveDefinition)) {\n    let selection;\n    try {\n      selection = parseFieldSetArgument({parentType, directive: application});\n    } catch (e) {\n      // This method is sometimes called on federation directives that haven't been validated, and so parsing the\n      // `fields` argument may throw. In that case, we just silently ignore that particular directive application:\n      // it's not the job of this method to do validation, but we will always validate things in other places\n      // when needed so whatever error that directive has will be caught in a more appropriate place.\n      continue;\n    }\n    if (selectsNonExternalLeafField(selection)) {\n      application.remove();\n      const updated = withoutNonExternalLeafFields(selection);\n      if (!updated.isEmpty()) {\n        const updatedDirective = field.applyDirective(directiveDefinition, { fields: updated.toString(true, false) });\n        onModified(field, application, updatedDirective);\n      } else {\n        onModified(field, application);\n      }\n    }\n  }\n}\n\nfunction isExternalOrHasExternalImplementations(field: FieldDefinition<CompositeType>): boolean {\n  const metadata = federationMetadata(field.schema());\n  if (!metadata) {\n    return false;\n  }\n  if (field.hasAppliedDirective(metadata.externalDirective())) {\n    return true;\n  }\n  const parentType = field.parent;\n  if (isInterfaceType(parentType)) {\n    for (const implem of parentType.possibleRuntimeTypes()) {\n      const fieldInImplem = implem.field(field.name);\n      if (fieldInImplem && fieldInImplem.hasAppliedDirective(metadata.externalDirective())) {\n        return true;\n      }\n    }\n  }\n  return false;\n}\n\nfunction selectsNonExternalLeafField(selection: SelectionSet): boolean {\n  return selection.selections().some(s => {\n    if (s.kind === 'FieldSelection') {\n      // If it's external, we're good and don't need to recurse.\n      if (isExternalOrHasExternalImplementations(s.element.definition)) {\n        return false;\n      }\n      // Otherwise, we select a non-external if it's a leaf, or the sub-selection does.\n      return !s.selectionSet || selectsNonExternalLeafField(s.selectionSet);\n    } else {\n      return selectsNonExternalLeafField(s.selectionSet);\n    }\n  });\n}\n\nfunction withoutNonExternalLeafFields(selectionSet: SelectionSet): SelectionSet {\n  return selectionSet.lazyMap((selection) => {\n    if (selection.kind === 'FieldSelection') {\n      if (isExternalOrHasExternalImplementations(selection.element.definition)) {\n        // That field is external, so we can add the selection back entirely.\n        return selection;\n      }\n    }\n    if (selection.selectionSet) {\n      // Note that for fragments this will always be true (and we just recurse), while\n      // for fields, we'll only get here if the field is not external, and so\n      // we want to add the selection only if it's not a leaf and even then, only\n      // the part where we've recursed.\n      const updated = withoutNonExternalLeafFields(selection.selectionSet);\n      if (!updated.isEmpty()) {\n        return selection.withUpdatedSelectionSet(updated);\n      }\n    }\n    // We skip that selection.\n    return undefined;\n  });\n}\n\nfunction validateNoAuthenticationOnInterfaces(metadata: FederationMetadata, errorCollector: GraphQLError[]) {\n  const authenticatedDirective = metadata.authenticatedDirective();\n  const requiresScopesDirective = metadata.requiresScopesDirective();\n  const policyDirective = metadata.policyDirective();\n  [authenticatedDirective, requiresScopesDirective, policyDirective].forEach((directive) => {\n    for (const application of directive.applications()) {\n      const element: SchemaElement<any, any> = application.parent;\n      if (\n        // Is it applied on interface or interface object types?\n        (isElementNamedType(element) &&\n          (isInterfaceType(element) || isInterfaceObjectType(element))\n        ) ||\n        // Is it applied on interface fields?\n        (isFieldDefinition(element) && isInterfaceType(element.parent))\n      ) {\n        let kind = '';\n        switch (element.kind) {\n          case 'FieldDefinition':\n            kind = 'field';\n            break;\n          case 'InterfaceType':\n            kind = 'interface';\n            break;\n          case 'ObjectType':\n            kind = 'interface object';\n            break;\n        }\n        errorCollector.push(ERRORS.AUTH_REQUIREMENTS_APPLIED_ON_INTERFACE.err(\n            `Invalid use of @${directive.name} on ${kind} \"${element.coordinate}\": @${directive.name} cannot be applied on interfaces, interface fields and interface objects`,\n            {nodes: sourceASTs(application, element.parent)},\n        ));\n      }\n    }\n  });\n}\n", "'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n", "/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n//       values that give correct `typeof` results).\n//       do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v;  g = n;  b = wh; break;\n\t\tcase 1: r = n;  g = v;  b = wh; break;\n\t\tcase 2: r = wh; g = v;  b = n; break;\n\t\tcase 3: r = wh; g = n;  b = v; break;\n\t\tcase 4: r = n;  g = wh; b = v; break;\n\t\tcase 5: r = v;  g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n", "const conversions = require('./conversions');\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n", "const conversions = require('./conversions');\nconst route = require('./route');\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n", "'use strict';\n\nconst wrapAnsi16 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => (...args) => {\n\tconst rgb = fn(...args);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nconst ansi2ansi = n => n;\nconst rgb2rgb = (r, g, b) => [r, g, b];\n\nconst setLazyProperty = (object, property, get) => {\n\tObject.defineProperty(object, property, {\n\t\tget: () => {\n\t\t\tconst value = get();\n\n\t\t\tObject.defineProperty(object, property, {\n\t\t\t\tvalue,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true\n\t\t\t});\n\n\t\t\treturn value;\n\t\t},\n\t\tenumerable: true,\n\t\tconfigurable: true\n\t});\n};\n\n/** @type {typeof import('color-convert')} */\nlet colorConvert;\nconst makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => {\n\tif (colorConvert === undefined) {\n\t\tcolorConvert = require('color-convert');\n\t}\n\n\tconst offset = isBackground ? 10 : 0;\n\tconst styles = {};\n\n\tfor (const [sourceSpace, suite] of Object.entries(colorConvert)) {\n\t\tconst name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace;\n\t\tif (sourceSpace === targetSpace) {\n\t\t\tstyles[name] = wrap(identity, offset);\n\t\t} else if (typeof suite === 'object') {\n\t\t\tstyles[name] = wrap(suite[targetSpace], offset);\n\t\t}\n\t}\n\n\treturn styles;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tsetLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false));\n\tsetLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true));\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n", "'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n", "'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tforceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = 1;\n}\n\nif ('FORCE_COLOR' in env) {\n\tif (env.FORCE_COLOR === 'true') {\n\t\tforceColor = 1;\n\t} else if (env.FORCE_COLOR === 'false') {\n\t\tforceColor = 0;\n\t} else {\n\t\tforceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, streamIsTTY) {\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream, stream && stream.isTTY);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: translateLevel(supportsColor(true, tty.isatty(1))),\n\tstderr: translateLevel(supportsColor(true, tty.isatty(2)))\n};\n", "'use strict';\n\nconst stringReplaceAll = (string, substring, replacer) => {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.substr(endIndex, index - endIndex) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nconst stringEncaseCRLFWithFirstIndex = (string, prefix, postfix, index) => {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nmodule.exports = {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n};\n", "'use strict';\nconst TEMPLATE_REGEX = /(?:\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\nconst STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\nconst STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\nconst ESCAPE_REGEX = /\\\\(u(?:[a-f\\d]{4}|{[a-f\\d]{1,6}})|x[a-f\\d]{2}|.)|([^\\\\])/gi;\n\nconst ESCAPES = new Map([\n\t['n', '\\n'],\n\t['r', '\\r'],\n\t['t', '\\t'],\n\t['b', '\\b'],\n\t['f', '\\f'],\n\t['v', '\\v'],\n\t['0', '\\0'],\n\t['\\\\', '\\\\'],\n\t['e', '\\u001B'],\n\t['a', '\\u0007']\n]);\n\nfunction unescape(c) {\n\tconst u = c[0] === 'u';\n\tconst bracket = c[1] === '{';\n\n\tif ((u && !bracket && c.length === 5) || (c[0] === 'x' && c.length === 3)) {\n\t\treturn String.fromCharCode(parseInt(c.slice(1), 16));\n\t}\n\n\tif (u && bracket) {\n\t\treturn String.fromCodePoint(parseInt(c.slice(2, -1), 16));\n\t}\n\n\treturn ESCAPES.get(c) || c;\n}\n\nfunction parseArguments(name, arguments_) {\n\tconst results = [];\n\tconst chunks = arguments_.trim().split(/\\s*,\\s*/g);\n\tlet matches;\n\n\tfor (const chunk of chunks) {\n\t\tconst number = Number(chunk);\n\t\tif (!Number.isNaN(number)) {\n\t\t\tresults.push(number);\n\t\t} else if ((matches = chunk.match(STRING_REGEX))) {\n\t\t\tresults.push(matches[2].replace(ESCAPE_REGEX, (m, escape, character) => escape ? unescape(escape) : character));\n\t\t} else {\n\t\t\tthrow new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction parseStyle(style) {\n\tSTYLE_REGEX.lastIndex = 0;\n\n\tconst results = [];\n\tlet matches;\n\n\twhile ((matches = STYLE_REGEX.exec(style)) !== null) {\n\t\tconst name = matches[1];\n\n\t\tif (matches[2]) {\n\t\t\tconst args = parseArguments(name, matches[2]);\n\t\t\tresults.push([name].concat(args));\n\t\t} else {\n\t\t\tresults.push([name]);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction buildStyle(chalk, styles) {\n\tconst enabled = {};\n\n\tfor (const layer of styles) {\n\t\tfor (const style of layer.styles) {\n\t\t\tenabled[style[0]] = layer.inverse ? null : style.slice(1);\n\t\t}\n\t}\n\n\tlet current = chalk;\n\tfor (const [styleName, styles] of Object.entries(enabled)) {\n\t\tif (!Array.isArray(styles)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!(styleName in current)) {\n\t\t\tthrow new Error(`Unknown Chalk style: ${styleName}`);\n\t\t}\n\n\t\tcurrent = styles.length > 0 ? current[styleName](...styles) : current[styleName];\n\t}\n\n\treturn current;\n}\n\nmodule.exports = (chalk, temporary) => {\n\tconst styles = [];\n\tconst chunks = [];\n\tlet chunk = [];\n\n\t// eslint-disable-next-line max-params\n\ttemporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse, style, close, character) => {\n\t\tif (escapeCharacter) {\n\t\t\tchunk.push(unescape(escapeCharacter));\n\t\t} else if (style) {\n\t\t\tconst string = chunk.join('');\n\t\t\tchunk = [];\n\t\t\tchunks.push(styles.length === 0 ? string : buildStyle(chalk, styles)(string));\n\t\t\tstyles.push({inverse, styles: parseStyle(style)});\n\t\t} else if (close) {\n\t\t\tif (styles.length === 0) {\n\t\t\t\tthrow new Error('Found extraneous } in Chalk template literal');\n\t\t\t}\n\n\t\t\tchunks.push(buildStyle(chalk, styles)(chunk.join('')));\n\t\t\tchunk = [];\n\t\t\tstyles.pop();\n\t\t} else {\n\t\t\tchunk.push(character);\n\t\t}\n\t});\n\n\tchunks.push(chunk.join(''));\n\n\tif (styles.length > 0) {\n\t\tconst errMessage = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\\`}\\`)`;\n\t\tthrow new Error(errMessage);\n\t}\n\n\treturn chunks.join('');\n};\n", "'use strict';\nconst ansiStyles = require('ansi-styles');\nconst {stdout: stdoutColor, stderr: stderrColor} = require('supports-color');\nconst {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n} = require('./util');\n\nconst {isArray} = Array;\n\n// `supportsColor.level` \u2192 `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m'\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nclass ChalkClass {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = {};\n\tapplyOptions(chalk, options);\n\n\tchalk.template = (...arguments_) => chalkTag(chalk.template, ...arguments_);\n\n\tObject.setPrototypeOf(chalk, Chalk.prototype);\n\tObject.setPrototypeOf(chalk.template, chalk);\n\n\tchalk.template.constructor = () => {\n\t\tthrow new Error('`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.');\n\t};\n\n\tchalk.template.Instance = ChalkClass;\n\n\treturn chalk.template;\n};\n\nfunction Chalk(options) {\n\treturn chalkFactory(options);\n}\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this._styler), this._isEmpty);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t}\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this._styler, true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t}\n};\n\nconst usedModels = ['rgb', 'hex', 'keyword', 'hsl', 'hsv', 'hwb', 'ansi', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.color[levelMapping[level]][model](...arguments_), ansiStyles.color.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nfor (const model of usedModels) {\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.bgColor[levelMapping[level]][model](...arguments_), ansiStyles.bgColor.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this._generator.level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis._generator.level = level;\n\t\t}\n\t}\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\tconst builder = (...arguments_) => {\n\t\tif (isArray(arguments_[0]) && isArray(arguments_[0].raw)) {\n\t\t\t// Called as a template literal, for example: chalk.red`2 + 3 = {bold ${2+3}}`\n\t\t\treturn applyStyle(builder, chalkTag(builder, ...arguments_));\n\t\t}\n\n\t\t// Single argument is hot path, implicit coercion is faster than anything\n\t\t// eslint-disable-next-line no-implicit-coercion\n\t\treturn applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\t};\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder._generator = self;\n\tbuilder._styler = _styler;\n\tbuilder._isEmpty = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self._isEmpty ? '' : string;\n\t}\n\n\tlet styler = self._styler;\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.indexOf('\\u001B') !== -1) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nlet template;\nconst chalkTag = (chalk, ...strings) => {\n\tconst [firstString] = strings;\n\n\tif (!isArray(firstString) || !isArray(firstString.raw)) {\n\t\t// If chalk() was called by itself or with a string,\n\t\t// return the string itself as a string.\n\t\treturn strings.join(' ');\n\t}\n\n\tconst arguments_ = strings.slice(1);\n\tconst parts = [firstString.raw[0]];\n\n\tfor (let i = 1; i < firstString.length; i++) {\n\t\tparts.push(\n\t\t\tString(arguments_[i - 1]).replace(/[{}\\\\]/g, '\\\\$&'),\n\t\t\tString(firstString.raw[i])\n\t\t);\n\t}\n\n\tif (template === undefined) {\n\t\ttemplate = require('./templates');\n\t}\n\n\treturn template(chalk, parts.join(''));\n};\n\nObject.defineProperties(Chalk.prototype, styles);\n\nconst chalk = Chalk(); // eslint-disable-line new-cap\nchalk.supportsColor = stdoutColor;\nchalk.stderr = Chalk({level: stderrColor ? stderrColor.level : 0}); // eslint-disable-line new-cap\nchalk.stderr.supportsColor = stderrColor;\n\nmodule.exports = chalk;\n", "// Simple debugging facility.\n\nimport chalk from 'chalk';\nimport { validateStringContainsBoolean } from './utils';\n\nfunction indentString(indentLevel: number) : string {\n  let str = \"\";\n  for (let i = 0; i < indentLevel; i++) {\n    str += chalk.blackBright(\"\u23B8 \");\n  }\n  return str;\n}\n\nfunction isEnabled(name: string): boolean {\n  const v = process.env.APOLLO_FEDERATION_DEBUG;\n  const bool = validateStringContainsBoolean(v);\n  if (bool !== undefined) {\n    return bool;\n  }\n\n  const enabledNames = v!.split(',').map(n => n.trim());\n  return enabledNames.includes(name);\n}\n\nlet currentIndentLevel = 0;\nlet currentIndentation = '';\nlet maxLoggerNameLength = 0;\n\nconst createdLoggers: DebugLogger[] = [];\n\nexport function newDebugLogger(name: string): DebugLogger {\n  const enabled = isEnabled(name);\n  const created = new DebugLogger(name, enabled);\n  if (enabled) {\n    // This next line is to avoid having JEST capture console logging if any logger is\n    // enabled, as this make things unreadable\n    global.console = require('console');\n    createdLoggers.push(created);\n    maxLoggerNameLength = Math.max(maxLoggerNameLength, name.length);\n    for (const logger of createdLoggers) {\n      DebugLogger.prototype['updateHeader'].call(logger, maxLoggerNameLength);\n    }\n  }\n  return created;\n}\n\nfunction increaseIndentation() {\n  currentIndentLevel++;\n  currentIndentation = indentString(currentIndentLevel);\n}\n\nfunction decreaseIndentation() {\n  if (currentIndentLevel > 0) {\n    currentIndentLevel--;\n    currentIndentation = indentString(currentIndentLevel);\n  }\n}\n\n/**\n * A facility to log messages for debugging.\n *\n * All `DebugLogger` share an indentation level that is used before logged messages. That indentation level gets\n * increased by calling `group()` and decreased by `groupEnd()`. This is meant to help representing the nestedness\n * of the code being debugged.\n */\nexport class DebugLogger {\n  private header: string;\n\n  /**\n   * Builds a new `DebugLogger`.\n   *\n   * @param enabled - whether the logger is enabled. If it is disabled, no message will be logged. Currently, a logger\n   * cannot be enabled/disabled after construction.\n   */\n  constructor(readonly name: string, readonly enabled: boolean) {\n    this.header = chalk.blackBright(`[${name}] `);\n  }\n\n  private updateHeader(maxLength: number) {\n    let padding = \"\";\n    if (maxLength > this.name.length) {\n      const toPad = maxLength - this.name.length;\n      for (let i = 0; i < toPad; i++) {\n        padding += \" \";\n      }\n    }\n    this.header = chalk.blackBright('[' + padding + this.name + '] ');\n  }\n\n  private doLog(str: string) {\n    const indent = this.header + currentIndentation;\n    const withIndentedNewlines = str.replace(/\\n/g, '\\n' + indent + '  ');\n    console.log(indent + withIndentedNewlines);\n  }\n\n  /**\n   * Logs the provided message at the current indentation level, if this logger is enabled.\n   *\n   * @param message - the message to log. This can optionally be a closure, which allows for the message to only be\n   * computed if the logger is enabled (the closure is only called in this case).\n   * @param prefix - an optional string printed as a direct prefix of the message.\n   */\n  public log(message: string | (() => string), prefix: string = chalk.yellow('\u2022 ')): DebugLogger {\n    if (!this.enabled) return this;\n\n    if (typeof message !== 'string') {\n      message = message();\n    }\n    this.doLog(prefix + message);\n    return this;\n  }\n\n  /**\n   * Logs the provided values, indented and one per line.\n   *\n   * @param values - an array of the values to log.\n   * @param printFn - the function to apply to each of the value to convert it to a string to log.\n   * @param initialMessage - an optional message to write before the grouped values.\n   */\n  public groupedValues<T>(values: T[], printFn: (v: T) => string, initialMessage?: string): DebugLogger {\n    if (!this.enabled) return this;\n\n    this.group(initialMessage);\n    for (const value of values) {\n      this.doLog('- ' + printFn(value));\n    }\n    return this.groupEnd();\n  }\n\n  /**\n   * Logs the entries of the provided map, indented and one per line.\n   *\n   * @param map - a map of keys and values to log.\n   * @param keyPrintFn - the function to apply to each of the key to convert it to a string to log.\n   * @param valuePrintFn - the function to apply to each of the value to convert it to a string to log.\n   */\n  public groupedEntries<K, V>(\n    map: Map<K, V>,\n    keyPrintFn: (k: K) => string,\n    valuePrintFn: (v : V) => string\n  ): DebugLogger {\n    if (!this.enabled) return this;\n\n    this.group();\n    for (const [k, v] of map.entries()) {\n      this.doLog('- ' + keyPrintFn(k) + ': ' + valuePrintFn(v));\n    }\n    return this.groupEnd();\n  }\n\n  /**\n   * Starts a new debug \"group\"; every following message logged after this called and before the corresponding\n   * `groupEnd()` call will be indented by one more level than is current.\n   *\n   * @param openingMessage - an optional message to log _before_ starting the group. This can typically be used to\n   * describe what the message logged within the group will describe.\n   */\n  public group(openingMessage?: string | (() => string)): DebugLogger {\n    if (this.enabled) {\n      if (openingMessage) {\n        this.log(openingMessage, chalk.blue('\u2023 '));\n      }\n      increaseIndentation();\n    }\n    return this;\n  }\n\n  /**\n   * Ends the current (last started) debug \"group\", thus decreasing the indent level to what it was before the\n   * `group()` call this ends.\n   *\n   * If no group had been started, this is a no-op (and no `closingMessage` is printed in particular).\n   *\n   * @param closingMessage - an optional message to log _after_ ending the group. This can typically be used to\n   * describe what the messages logged within the group yielded.\n   */\n  public groupEnd(closingMessage?: string | (() => string)): DebugLogger {\n    if (!this.enabled) {\n      return this;\n    }\n    decreaseIndentation();\n    if (closingMessage) {\n      this.log(closingMessage, chalk.green('\u21D2 '));\n    }\n    return this;\n  }\n}\n", "import {\n  baseType,\n  CompositeType,\n  copyDirectiveDefinitionToSchema,\n  Directive,\n  FieldDefinition,\n  InputFieldDefinition,\n  InputObjectType,\n  InterfaceType,\n  isExecutableDirectiveLocation,\n  isEnumType,\n  isInterfaceType,\n  isObjectType,\n  isUnionType,\n  ListType,\n  NamedType,\n  newNamedType,\n  NonNullType,\n  NullableType,\n  ObjectType,\n  Schema,\n  Type,\n  EnumType,\n  UnionType,\n} from \"./definitions\";\nimport {\n  newEmptyFederation2Schema,\n  parseFieldSetArgument,\n  removeInactiveProvidesAndRequires,\n} from \"./federation\";\nimport { CoreSpecDefinition, FeatureVersion } from \"./specs/coreSpec\";\nimport { JoinFieldDirectiveArguments, JoinSpecDefinition, JoinTypeDirectiveArguments } from \"./specs/joinSpec\";\nimport { FederationMetadata, Subgraph, Subgraphs } from \"./federation\";\nimport { assert } from \"./utils\";\nimport { validateSupergraph } from \"./supergraphs\";\nimport { builtTypeReference } from \"./buildSchema\";\nimport { isSubtype } from \"./types\";\nimport { printSchema } from \"./print\";\nimport { parseSelectionSet } from \"./operations\";\nimport fs from 'fs';\nimport path from 'path';\nimport { validateStringContainsBoolean } from \"./utils\";\nimport { ContextSpecDefinition, CostSpecDefinition, SchemaElement, errorCauses, isFederationDirectiveDefinedInSchema, printErrors } from \".\";\n\nfunction filteredTypes(\n  supergraph: Schema,\n  joinSpec: JoinSpecDefinition,\n  coreSpec: CoreSpecDefinition\n): NamedType[] {\n  // Note: we skip coreSpec to avoid having core__Purpose since we don't create core schema subgraph.\n  // But once we support core schema subgraphs and start shipping federation core features, we may need\n  // to revisit this.\n  return supergraph.types().filter(t => !joinSpec.isSpecType(t) && !coreSpec.isSpecType(t));\n}\n\nexport function extractSubgraphsNamesAndUrlsFromSupergraph(supergraph: Schema): {name: string, url: string}[] {\n  const [_, joinSpec] = validateSupergraph(supergraph);\n  const [subgraphs] = collectEmptySubgraphs(supergraph, joinSpec);\n  return subgraphs.values().map(subgraph => {return { name: subgraph.name, url: subgraph.url }});\n}\n\nfunction collectEmptySubgraphs(supergraph: Schema, joinSpec: JoinSpecDefinition): [Subgraphs, Map<string, string>] {\n  const subgraphs = new Subgraphs();\n  const graphDirective = joinSpec.graphDirective(supergraph);\n  const graphEnum = joinSpec.graphEnum(supergraph);\n  const graphEnumNameToSubgraphName = new Map<string, string>();\n  for (const value of graphEnum.values) {\n    const graphApplications = value.appliedDirectivesOf(graphDirective);\n    if (!graphApplications.length) {\n      throw new Error(`Value ${value} of join__Graph enum has no @join__graph directive`);\n    }\n    const info = graphApplications[0].arguments();\n    const subgraph = new Subgraph(info.name, info.url, newEmptyFederation2Schema());\n    subgraphs.add(subgraph);\n    graphEnumNameToSubgraphName.set(value.name, info.name);\n  }\n  return [subgraphs, graphEnumNameToSubgraphName];\n}\n\nclass SubgraphExtractionError {\n  constructor(\n    readonly originalError: any,\n    readonly subgraph: Subgraph,\n  ) {\n  }\n}\n\nfunction collectFieldReachableTypesForSubgraph(\n  supergraph: Schema,\n  subgraphName: string,\n  addReachableType: (t: NamedType) => void,\n  fieldInfoInSubgraph: (f: FieldDefinition<any> | InputFieldDefinition, subgraphName: string) => { isInSubgraph: boolean, typesInFederationDirectives: NamedType[] },\n  typeInfoInSubgraph: (t: NamedType, subgraphName: string) => { isEntityWithKeyInSubgraph: boolean, typesInFederationDirectives: NamedType[] },\n): void {\n  const seenTypes = new Set<string>();\n  // The types reachable at \"top-level\" are both the root types, plus any entity type with a key in this subgraph.\n  const stack = supergraph.schemaDefinition.roots().map((root) => root.type as NamedType)\n  for (const type of supergraph.types()) {\n    const { isEntityWithKeyInSubgraph, typesInFederationDirectives } = typeInfoInSubgraph(type, subgraphName);\n    if (isEntityWithKeyInSubgraph) {\n      stack.push(type);\n    }\n    typesInFederationDirectives.forEach((t) => stack.push(t));\n  }\n  while (stack.length > 0) {\n    const type = stack.pop()!;\n    addReachableType(type);\n    if (seenTypes.has(type.name)) {\n      continue;\n    }\n    seenTypes.add(type.name);\n    switch (type.kind) {\n      // @ts-expect-error: we fall-through to ObjectType for fields and implemented interfaces.\n      case 'InterfaceType':\n        // If an interface if reachable, then all of its implementation are too (a field returning the interface could return any of the\n        // implementation at runtime typically).\n        type.allImplementations().forEach((t) => stack.push(t));\n      case 'ObjectType':\n        type.interfaces().forEach((t) => stack.push(t));\n        for (const field of type.fields()) {\n          const { isInSubgraph, typesInFederationDirectives } = fieldInfoInSubgraph(field, subgraphName);\n          if (isInSubgraph) {\n            field.arguments().forEach((arg) => stack.push(baseType(arg.type!)));\n            stack.push(baseType(field.type!));\n            typesInFederationDirectives.forEach((t) => stack.push(t));\n          }\n        }\n        break;\n      case 'InputObjectType':\n        for (const field of type.fields()) {\n          const { isInSubgraph, typesInFederationDirectives } = fieldInfoInSubgraph(field, subgraphName);\n          if (isInSubgraph) {\n            stack.push(baseType(field.type!));\n            typesInFederationDirectives.forEach((t) => stack.push(t));\n          }\n        }\n        break;\n      case 'UnionType':\n        type.members().forEach((m) => stack.push(m.type));\n        break;\n    }\n  }\n\n  for (const directive of supergraph.directives()) {\n    // In fed1 supergraphs, which is the only place this is called, only executable directive from subgraph only ever made\n    // it to the supergraph. Skipping anything else saves us from worrying about supergraph-specific directives too.\n    if (!directive.hasExecutableLocations()) {\n      continue;\n    }\n    directive.arguments().forEach((arg) => stack.push(baseType(arg.type!)));\n  }\n}\n\nfunction collectFieldReachableTypesForAllSubgraphs(\n  supergraph: Schema,\n  allSubgraphs: readonly string[],\n  fieldInfoInSubgraph: (f: FieldDefinition<any> | InputFieldDefinition, subgraphName: string) => { isInSubgraph: boolean, typesInFederationDirectives: NamedType[] },\n  typeInfoInSubgraph: (t: NamedType, subgraphName: string) => { isEntityWithKeyInSubgraph: boolean, typesInFederationDirectives: NamedType[] },\n): Map<string, Set<string>> {\n  const reachableTypesBySubgraphs = new Map<string, Set<string>>();\n  for (const subgraphName of allSubgraphs) {\n    const reachableTypes = new Set<string>();\n    collectFieldReachableTypesForSubgraph(\n      supergraph,\n      subgraphName,\n      (t) => reachableTypes.add(t.name),\n      fieldInfoInSubgraph,\n      typeInfoInSubgraph,\n    );\n    reachableTypesBySubgraphs.set(subgraphName, reachableTypes);\n  }\n  return reachableTypesBySubgraphs;\n}\n\nfunction typesUsedInFederationDirective(fieldSet: string | undefined, parentType: CompositeType): NamedType[] {\n  if (!fieldSet) {\n    return [];\n  }\n\n  const usedTypes: NamedType[] = [];\n  parseSelectionSet({\n    parentType,\n    source: fieldSet,\n    fieldAccessor: (type, fieldName) => {\n      const field = type.field(fieldName);\n      if (field) {\n        usedTypes.push(baseType(field.type!));\n      }\n      return field;\n    },\n    validate: false,\n  });\n  return usedTypes;\n}\n\nexport function extractSubgraphsFromSupergraph(supergraph: Schema, validateExtractedSubgraphs: boolean = true): [Subgraphs, Map<string, string>] {\n  const [coreFeatures, joinSpec, contextSpec, costSpec] = validateSupergraph(supergraph);\n  const isFed1 = joinSpec.version.equals(new FeatureVersion(0, 1));\n  try {\n    // We first collect the subgraphs (creating an empty schema that we'll populate next for each).\n    const [subgraphs, graphEnumNameToSubgraphName] = collectEmptySubgraphs(supergraph, joinSpec);\n\n    const getSubgraph = (application: Directive<any, { graph?: string }>): Subgraph | undefined => {\n      const graph = application.arguments().graph;\n      if (!graph) {\n        return undefined;\n      }\n      const subgraphName = graphEnumNameToSubgraphName.get(graph);\n      assert(subgraphName, () => `Invalid graph name ${graph} found in ${application} on ${application.parent}: does not match a graph defined in the @join__Graph enum`);\n      const subgraph = subgraphs.get(subgraphName);\n      assert(subgraph, 'All subgraphs should have been created by `collectEmptySubgraphs`');\n      return subgraph;\n    };\n\n    const subgraphNameToGraphEnumValue = new Map<string, string>();\n    for (const [k, v] of graphEnumNameToSubgraphName.entries()) {\n      subgraphNameToGraphEnumValue.set(v, k);\n    }\n\n    const getSubgraphEnumValue = (subgraphName: string): string => {\n      const enumValue = subgraphNameToGraphEnumValue.get(subgraphName);\n      assert(enumValue, () => `Invalid subgraph name ${subgraphName} found: does not match a subgraph defined in the @join__Graph enum`);\n      return enumValue;\n    }\n\n    const types = filteredTypes(supergraph, joinSpec, coreFeatures.coreDefinition);\n    const args: ExtractArguments = {\n       supergraph,\n       subgraphs,\n       joinSpec,\n       contextSpec,\n       costSpec,\n       filteredTypes: types,\n       getSubgraph,\n       getSubgraphEnumValue,\n    };\n    if (isFed1) {\n      extractSubgraphsFromFed1Supergraph(args);\n    } else {\n      extractSubgraphsFromFed2Supergraph(args);\n    }\n\n    // We're done with the subgraphs, so call validate (which, amongst other things, sets up the _entities query field, which ensures\n    // all entities in all subgraphs are reachable from a query and so are properly included in the \"query graph\" later).\n    for (const subgraph of subgraphs) {\n      if (validateExtractedSubgraphs) {\n        try {\n          subgraph.validate();\n        } catch (e) {\n          // This is going to be caught directly by the enclosing try-catch, but this is so we indicate the subgraph having the issue.\n          throw new SubgraphExtractionError(e, subgraph);\n        }\n      } else {\n        subgraph.assumeValid();\n      }\n    }\n\n    return [subgraphs, subgraphNameToGraphEnumValue];\n  } catch (e) {\n    let error = e;\n    let subgraph: Subgraph | undefined = undefined;\n    // We want this catch to capture all errors happening during extraction, but the most common\n    // case is likely going to be fed2 validation that fed1 didn't enforced, and those will be\n    // throw when validating the extracted subgraphs, and n that case we use\n    // `SubgraphExtractionError` to pass the subgraph that errored out, which allows us\n    // to provide a bit more context in those cases.\n    if (e instanceof SubgraphExtractionError) {\n      error = e.originalError;\n      subgraph = e.subgraph;\n    }\n\n    // There is 2 reasons this could happen:\n    // 1. if the supergraph is a Fed1 one, because fed2 has stricter validations than fed1, this could be due to the supergraph\n    //    containing something invalid that fed1 accepted and fed2 didn't (for instance, an invalid `@provides` selection).\n    // 2. otherwise, this would be a bug (because fed1 compatibility excluded, we shouldn't extract invalid subgraphs from valid supergraphs).\n    // We throw essentially the same thing in both cases, but adapt the message slightly.\n    const impacted = subgraph ? `subgraph \"${subgraph.name}\"` : 'subgraphs';\n    if (isFed1) {\n      // Note that this could be a bug with the code handling fed1 as well, but it's more helpful to ask users to recompose their subgraphs with fed2 as either\n      // it'll solve the issue and that's good, or we'll hit the other message anyway.\n      const msg = `Error extracting ${impacted} from the supergraph: this might be due to errors in subgraphs that were mistakenly ignored by federation 0.x versions but are rejected by federation 2.\\n`\n        + 'Please try composing your subgraphs with federation 2: this should help precisely pinpoint the problems and, once fixed, generate a correct federation 2 supergraph';\n      throw new Error(`${msg}.\\n\\nDetails:\\n${errorToString(error)}`);\n    } else {\n      const msg = `Unexpected error extracting ${impacted} from the supergraph: this is either a bug, or the supergraph has been corrupted`;\n      const dumpMsg = subgraph ? '\\n\\n' + maybeDumpSubgraphSchema(subgraph) : '';\n      throw new Error(`${msg}.\\n\\nDetails:\\n${errorToString(error)}${dumpMsg}`);\n    }\n  }\n}\n\ntype ExtractArguments = {\n  supergraph: Schema,\n  subgraphs: Subgraphs,\n  joinSpec: JoinSpecDefinition,\n  contextSpec: ContextSpecDefinition | undefined,\n  costSpec: CostSpecDefinition | undefined,\n  filteredTypes: NamedType[],\n  getSubgraph: (application: Directive<any, { graph?: string }>) => Subgraph | undefined,\n  getSubgraphEnumValue: (subgraphName: string) => string\n}\n\ntype SubgraphTypeInfo<T extends NamedType> = Map<string, { type: T, subgraph: Subgraph }>;\n\ntype TypeInfo<T extends NamedType> = {\n  type: T,\n  subgraphsInfo: SubgraphTypeInfo<T>,\n};\n\ntype TypesInfo = {\n  objOrItfTypes: TypeInfo<ObjectType | InterfaceType>[],\n  inputObjTypes: TypeInfo<InputObjectType>[],\n  enumTypes:     TypeInfo<EnumType>[],\n  unionTypes:    TypeInfo<UnionType>[],\n};\n\nfunction addAllEmptySubgraphTypes(args: ExtractArguments): TypesInfo {\n  const {\n    supergraph,\n    joinSpec,\n    filteredTypes,\n    getSubgraph,\n  } = args;\n  const typeDirective = joinSpec.typeDirective(supergraph);\n\n  const objOrItfTypes: TypeInfo<ObjectType | InterfaceType>[] = [];\n  const inputObjTypes: TypeInfo<InputObjectType>[] = [];\n  const enumTypes: TypeInfo<EnumType>[] = [];\n  const unionTypes: TypeInfo<UnionType>[] = [];\n  for (const type of filteredTypes) {\n    const typeApplications = type.appliedDirectivesOf(typeDirective);\n    switch (type.kind) {\n      // See comment in `addEmptyType` for why it actually matters that object and interface are handled together.\n      // (on top of it making sense code-wise since both type behave exactly the same for most of what we're doing here).\n      case 'InterfaceType':\n      case 'ObjectType':\n        objOrItfTypes.push({ type, subgraphsInfo: addEmptyType(type, type.appliedDirectivesOf(typeDirective), args) });\n        break;\n      case 'InputObjectType':\n        inputObjTypes.push({ type, subgraphsInfo: addEmptyType(type, type.appliedDirectivesOf(typeDirective), args) });\n        break;\n      case 'EnumType':\n        enumTypes.push({ type, subgraphsInfo: addEmptyType(type, type.appliedDirectivesOf(typeDirective), args) });\n        break;\n      case 'UnionType':\n        unionTypes.push({ type, subgraphsInfo: addEmptyType(type, type.appliedDirectivesOf(typeDirective), args) });\n        break;\n      case 'ScalarType':\n        // Scalar are a bit special in that they don't have any sub-component, so we don't track them beyond adding them to the\n        // proper subgraphs. It's also simple because there is no possible key so there is exactly on @join__type application for\n        // each subgraph having the scalar (and most arg cannot be present).\n        for (const application of typeApplications) {\n          const subgraph = getSubgraph(application);\n          assert(subgraph, () => `Should have found the subgraph for ${application}`);\n          const subgraphType = subgraph.schema.addType(newNamedType(type.kind, type.name));\n          if (args.costSpec) {\n            propagateDemandControlDirectives(type, subgraphType, subgraph, args.costSpec);\n          }\n        }\n        break;\n    }\n  }\n  return {\n    objOrItfTypes,\n    inputObjTypes,\n    enumTypes,\n    unionTypes,\n  }\n}\n\nfunction addEmptyType<T extends NamedType>(\n  type: T,\n  typeApplications: Directive<T, JoinTypeDirectiveArguments>[],\n  args: ExtractArguments,\n): SubgraphTypeInfo<T> {\n  const { supergraph, getSubgraph, getSubgraphEnumValue } = args;\n  // In fed2, we always mark all types with `@join__type` but making sure.\n  assert(typeApplications.length > 0, `Missing @join__type on ${type}`)\n  const subgraphsInfo: SubgraphTypeInfo<T> = new Map<string, { type: T, subgraph: Subgraph }>();\n  for (const application of typeApplications) {\n    const { graph, key, extension, resolvable, isInterfaceObject } = application.arguments();\n    let subgraphInfo = subgraphsInfo.get(graph);\n    if (!subgraphInfo) {\n      const subgraph = getSubgraph(application);\n      assert(subgraph, () => `Should have found the subgraph for ${application}`);\n      const kind = isInterfaceObject ? 'ObjectType' : type.kind;\n      // Note that we have to cast to `T` below. First because going through `type.kind` and `newNamedType`\n      // does not give a `T`. But even if we were to bend the type-system to work for that, there is the\n      // case of interface objects where an interface in the supergraph ends up being an object in the\n      // subgraph. But this is ok because we the object and interface type cases are lumped together (and\n      // this also means we \"need\" it to be this way).\n      const subgraphType = subgraph.schema.addType(newNamedType(kind, type.name)) as T;\n      if (isInterfaceObject) {\n        subgraphType.applyDirective('interfaceObject');\n      }\n      subgraphInfo = { type: subgraphType, subgraph };\n      subgraphsInfo.set(graph, subgraphInfo);\n    }\n\n    if (key) {\n      const directive = subgraphInfo.type.applyDirective('key', {'fields': key, resolvable});\n      if (extension) {\n        directive.setOfExtension(subgraphInfo.type.newExtension());\n      }\n    }\n  }\n\n  const supergraphContextDirective = args.contextSpec?.contextDirective(supergraph);\n  if (supergraphContextDirective) {\n    const contextApplications = type.appliedDirectivesOf(supergraphContextDirective);\n    // for every application, apply the context directive to the correct subgraph\n    for (const application of contextApplications) {\n      const { name } = application.arguments();\n      const match = name.match(/^(.*)__([A-Za-z]\\w*)$/);\n      const graph = match ? match[1] : undefined;\n      const context = match ? match[2] : undefined;\n      assert(graph, `Invalid context name ${name} found in ${application} on ${application.parent}: does not match the expected pattern`);\n      const subgraphInfo = subgraphsInfo.get(getSubgraphEnumValue(graph));\n      const contextDirective = subgraphInfo?.subgraph.metadata().contextDirective();\n      if (subgraphInfo && contextDirective && isFederationDirectiveDefinedInSchema(contextDirective)) {\n        subgraphInfo.type.applyDirective(contextDirective, {name: context});\n      }\n    }\n  }\n  return subgraphsInfo;\n}\n\nfunction extractObjOrItfContent(args: ExtractArguments, info: TypeInfo<ObjectType | InterfaceType>[]) {\n  const fieldDirective = args.joinSpec.fieldDirective(args.supergraph);\n\n  // join_implements was added in join 0.2, and this method does not run for join 0.1, so it should be defined.\n  const implementsDirective = args.joinSpec.implementsDirective(args.supergraph);\n  assert(implementsDirective, '@join__implements should existing for a fed2 supergraph');\n\n  for (const { type, subgraphsInfo } of info) {\n    const implementsApplications = type.appliedDirectivesOf(implementsDirective);\n    for (const application of implementsApplications) {\n      const args = application.arguments();\n      // Note that if we have a `@join__implements` for a subgraph, then we must have a `@join__type` too, so\n      // the `get` below is guaranteed to not be undefined.\n      const subgraphInfo = subgraphsInfo.get(args.graph)!;\n      subgraphInfo.type.addImplementedInterface(args.interface);\n    }\n\n    if (args.costSpec) {\n      for (const { type: subgraphType, subgraph } of subgraphsInfo.values()) {\n        propagateDemandControlDirectives(type, subgraphType, subgraph, args.costSpec);\n      }\n    }\n\n    for (const field of type.fields()) {\n      const fieldApplications = field.appliedDirectivesOf(fieldDirective);\n      if (fieldApplications.length === 0) {\n        // In fed2 subgraph, no @join__field means that the field is in all the subgraphs in which the type is.\n        const isShareable = isObjectType(type) && subgraphsInfo.size > 1;\n        for (const { type: subgraphType, subgraph } of subgraphsInfo.values()) {\n          addSubgraphField({\n            field,\n            type: subgraphType,\n            subgraph,\n            isShareable,\n            costSpec: args.costSpec\n          });\n        }\n      } else {\n        const isShareable = isObjectType(type)\n          && (fieldApplications as Directive<any, { external?: boolean, usedOverridden?: boolean }>[]).filter((application) => {\n            const args = application.arguments();\n            return !args.external && !args.usedOverridden;\n          }).length > 1;\n\n        for (const application of fieldApplications) {\n          const joinFieldArgs = application.arguments();\n          // We use a @join__field with no graph to indicates when a field in the supergraph does not come\n          // directly from any subgraph and there is thus nothing to do to \"extract\" it.\n          if (!joinFieldArgs.graph) {\n            continue;\n          }\n\n          const { type: subgraphType, subgraph } = subgraphsInfo.get(joinFieldArgs.graph)!;\n          addSubgraphField({\n            field,\n            type: subgraphType,\n            subgraph, isShareable,\n            joinFieldArgs,\n            costSpec: args.costSpec\n          });\n        }\n      }\n    }\n  }\n}\n\nfunction extractInputObjContent(args: ExtractArguments, info: TypeInfo<InputObjectType>[]) {\n  const fieldDirective = args.joinSpec.fieldDirective(args.supergraph);\n\n  for (const { type, subgraphsInfo } of info) {\n    for (const field of type.fields()) {\n      const fieldApplications = field.appliedDirectivesOf(fieldDirective);\n      if (fieldApplications.length === 0) {\n        // In fed2 subgraph, no @join__field means that the field is in all the subgraphs in which the type is.\n        for (const { type: subgraphType, subgraph } of subgraphsInfo.values()) {\n          addSubgraphInputField({\n            field,\n            type: subgraphType,\n            subgraph,\n            costSpec: args.costSpec\n          });\n        }\n      } else {\n        for (const application of fieldApplications) {\n          const joinFieldArgs = application.arguments();\n          // We use a @join__field with no graph to indicates when a field in the supergraph does not come\n          // directly from any subgraph and there is thus nothing to do to \"extract\" it.\n          if (!joinFieldArgs.graph) {\n            continue;\n          }\n\n          const { type: subgraphType, subgraph } = subgraphsInfo.get(joinFieldArgs.graph)!;\n          addSubgraphInputField({\n            field,\n            type: subgraphType,\n            subgraph,\n            joinFieldArgs,\n            costSpec: args.costSpec\n          });\n        }\n      }\n    }\n  }\n}\n\nfunction extractEnumTypeContent(args: ExtractArguments, info: TypeInfo<EnumType>[]) {\n  // This was added in join 0.3, so it can genuinely be undefined.\n  const enumValueDirective = args.joinSpec.enumValueDirective(args.supergraph);\n\n  for (const { type, subgraphsInfo } of info) {\n    if (args.costSpec) {\n      for (const { type: subgraphType, subgraph } of subgraphsInfo.values()) {\n        propagateDemandControlDirectives(type, subgraphType, subgraph, args.costSpec);\n      }\n    }\n\n    for (const value of type.values) {\n      const enumValueApplications = enumValueDirective ? value.appliedDirectivesOf(enumValueDirective) : [];\n      if (enumValueApplications.length === 0) {\n        for (const { type: subgraphType } of subgraphsInfo.values()) {\n          subgraphType.addValue(value.name);\n        }\n      } else {\n        for (const application of enumValueApplications) {\n          const args = application.arguments();\n          const { type: subgraphType } = subgraphsInfo.get(args.graph)!;\n          subgraphType.addValue(value.name);\n        }\n      }\n    }\n  }\n}\n\nfunction extractUnionTypeContent(args: ExtractArguments, info: TypeInfo<UnionType>[]) {\n  // This was added in join 0.3, so it can genuinely be undefined.\n  const unionMemberDirective = args.joinSpec.unionMemberDirective(args.supergraph);\n\n  // Note that union members works a bit differently from fields or enum values, and this because we cannot have\n  // directive applications on type members. So the `unionMemberDirective` applications are on the type itself,\n  // and they mention the member that they target.\n\n\n  for (const { type, subgraphsInfo } of info) {\n    const unionMemberApplications = unionMemberDirective ? type.appliedDirectivesOf(unionMemberDirective) : [];\n    if (unionMemberApplications.length === 0) {\n      // No @join__unionMember; every member should be added to every subgraph having the union (at least as long\n      // as the subgraph has the member itself).\n      for (const { type: subgraphType, subgraph } of subgraphsInfo.values()) {\n        for (const member of type.types()) {\n          const subgraphMember = subgraph.schema.type(member.name);\n          if (subgraphMember) {\n            // Note that object types in the supergraph are guaranteed to be object types in subgraphs.\n            subgraphType.addType(subgraphMember as ObjectType);\n          }\n        }\n      }\n    } else {\n      for (const application of unionMemberApplications) {\n        const args = application.arguments();\n        const { type: subgraphType, subgraph } = subgraphsInfo.get(args.graph)!;\n        // Note that object types in the supergraph are guaranteed to be object types in subgraphs.\n        // We also know that the type must exist in this case (we don't generate broken @join_unionMember).\n        subgraphType.addType(subgraph.schema.type(args.member) as ObjectType);\n      }\n    }\n  }\n}\n\nfunction extractSubgraphsFromFed2Supergraph(args: ExtractArguments) {\n  const {\n    objOrItfTypes,\n    inputObjTypes,\n    enumTypes,\n    unionTypes,\n  } = addAllEmptySubgraphTypes(args);\n\n  extractObjOrItfContent(args, objOrItfTypes);\n  extractInputObjContent(args, inputObjTypes);\n  extractEnumTypeContent(args, enumTypes);\n  extractUnionTypeContent(args, unionTypes);\n\n  // We add all the \"executable\" directives from the supergraph to each subgraphs, as those may be part\n  // of a query and end up in any subgraph fetches. We do this \"last\" to make sure that if one of the directive\n  // use a type for an argument, that argument exists.\n  // Note that we don't bother with non-executable directives at the moment since we've don't extract their\n  // applications. It might become something we need later, but we don't so far.\n  const allExecutableDirectives = args.supergraph.directives().filter((def) => def.hasExecutableLocations());\n  for (const subgraph of args.subgraphs) {\n    removeInactiveProvidesAndRequires(subgraph.schema);\n\n    removeUnusedTypesFromSubgraph(subgraph.schema);\n\n    for (const definition of allExecutableDirectives) {\n      // Note that we skip any potentially applied directives in the argument of the copied definition, because as said\n      // in the comment above, we haven't copied type-system directives. And so far, we really don't care about those\n      // applications.\n      copyDirectiveDefinitionToSchema({\n        definition,\n        schema: subgraph.schema,\n        copyDirectiveApplicationsInArguments: false,\n        locationFilter: (loc) => isExecutableDirectiveLocation(loc),\n      });\n    }\n  }\n}\n\nconst DEBUG_SUBGRAPHS_ENV_VARIABLE_NAME = 'APOLLO_FEDERATION_DEBUG_SUBGRAPHS';\n\nfunction maybeDumpSubgraphSchema(subgraph: Subgraph): string {\n  const shouldDump = !!validateStringContainsBoolean(process.env[DEBUG_SUBGRAPHS_ENV_VARIABLE_NAME]);\n  if (!shouldDump) {\n    return `Re-run with environment variable '${DEBUG_SUBGRAPHS_ENV_VARIABLE_NAME}' set to 'true' to extract the invalid subgraph`;\n  }\n  try {\n    const filename = `extracted-subgraph-${subgraph.name}-${Date.now()}.graphql`;\n    const file = path.resolve(filename);\n    if (fs.existsSync(file)) {\n      // Note that this is caught directly by the surrounded catch.\n      throw new Error(`candidate file ${filename} already existed`);\n    }\n    fs.writeFileSync(file, printSchema(subgraph.schema));\n    return `The (invalid) extracted subgraph has been written in: ${file}.`;\n  }\n  catch (e2) {\n    return `Was not able to print generated subgraph for \"${subgraph.name}\" because: ${errorToString(e2)}`;\n  }\n}\n\nfunction propagateDemandControlDirectives(source: SchemaElement<any, any>, dest: SchemaElement<any, any>, subgraph: Subgraph, costSpec: CostSpecDefinition) {\n  const costDirective = costSpec.costDirective(source.schema());\n  if (costDirective) {\n    const application = source.appliedDirectivesOf(costDirective)[0];\n    if (application) {\n      dest.applyDirective(subgraph.metadata().costDirective().name, application.arguments());\n    }\n  }\n\n  const listSizeDirective = costSpec.listSizeDirective(source.schema());\n  if (listSizeDirective) {\n    const application = source.appliedDirectivesOf(listSizeDirective)[0];\n    if (application) {\n      dest.applyDirective(subgraph.metadata().listSizeDirective().name, application.arguments());\n    }\n  }\n}\n\nfunction errorToString(e: any,): string {\n  const causes = errorCauses(e);\n  return causes ? printErrors(causes) : String(e);\n}\n\nfunction addSubgraphField({\n  field,\n  type,\n  subgraph,\n  isShareable,\n  joinFieldArgs,\n  costSpec,\n}: {\n  field: FieldDefinition<ObjectType | InterfaceType>,\n  type: ObjectType | InterfaceType,\n  subgraph: Subgraph,\n  isShareable: boolean,\n  joinFieldArgs?: JoinFieldDirectiveArguments,\n  costSpec?: CostSpecDefinition,\n}): FieldDefinition<ObjectType | InterfaceType> {\n  const copiedFieldType = joinFieldArgs?.type\n    ? decodeType(joinFieldArgs.type, subgraph.schema, subgraph.name)\n    : copyType(field.type!, subgraph.schema, subgraph.name);\n\n  const subgraphField = type.addField(field.name, copiedFieldType);\n  for (const arg of field.arguments()) {\n    const argDef = subgraphField.addArgument(arg.name, copyType(arg.type!, subgraph.schema, subgraph.name), arg.defaultValue);\n    if (costSpec) {\n      propagateDemandControlDirectives(arg, argDef, subgraph, costSpec);\n    }\n  }\n  if (joinFieldArgs?.requires) {\n    subgraphField.applyDirective(subgraph.metadata().requiresDirective(), {'fields': joinFieldArgs.requires});\n  }\n  if (joinFieldArgs?.provides) {\n    subgraphField.applyDirective(subgraph.metadata().providesDirective(), {'fields': joinFieldArgs.provides});\n  }\n  if (joinFieldArgs?.contextArguments) {\n    const fromContextDirective = subgraph.metadata().fromContextDirective();\n    if (!isFederationDirectiveDefinedInSchema(fromContextDirective)) {\n      throw new Error(`@fromContext directive is not defined in the subgraph schema: ${subgraph.name}`);\n    } else {\n      for (const arg of joinFieldArgs.contextArguments) {\n        // this code will remove the subgraph name from the context\n        const match = arg.context.match(/^.*__([A-Za-z]\\w*)$/);\n        if (!match) {\n          throw new Error(`Invalid context argument: ${arg.context}`);\n        }\n        \n        subgraphField.addArgument(arg.name, decodeType(arg.type, subgraph.schema, subgraph.name));\n        const argOnField = subgraphField.argument(arg.name);\n        argOnField?.applyDirective(fromContextDirective, {\n          field: `\\$${match[1]} ${arg.selection}`,\n        });\n      }\n    }\n  }\n  const external = !!joinFieldArgs?.external;\n  if (external) {\n    subgraphField.applyDirective(subgraph.metadata().externalDirective());\n  }\n  const usedOverridden = !!joinFieldArgs?.usedOverridden;\n  if (usedOverridden && !joinFieldArgs?.overrideLabel) {\n    subgraphField.applyDirective(subgraph.metadata().externalDirective(), {'reason': '[overridden]'});\n  }\n  if (joinFieldArgs?.override) {\n    subgraphField.applyDirective(subgraph.metadata().overrideDirective(), {\n      from: joinFieldArgs.override,\n      ...(joinFieldArgs.overrideLabel ? { label: joinFieldArgs.overrideLabel } : {})\n    });\n  }\n  if (isShareable && !external && !usedOverridden) {\n    subgraphField.applyDirective(subgraph.metadata().shareableDirective());\n  }\n\n  if (costSpec) {\n    propagateDemandControlDirectives(field, subgraphField, subgraph, costSpec);\n  }\n\n  return subgraphField;\n}\n\nfunction addSubgraphInputField({\n  field,\n  type,\n  subgraph,\n  joinFieldArgs,\n  costSpec,\n}: {\n  field: InputFieldDefinition,\n  type: InputObjectType,\n  subgraph: Subgraph,\n  joinFieldArgs?: JoinFieldDirectiveArguments,\n  costSpec?: CostSpecDefinition,\n}): InputFieldDefinition {\n  const copiedType = joinFieldArgs?.type\n    ? decodeType(joinFieldArgs?.type, subgraph.schema, subgraph.name)\n    : copyType(field.type!, subgraph.schema, subgraph.name);\n\n  const inputField = type.addField(field.name, copiedType);\n  inputField.defaultValue = field.defaultValue\n\n  if (costSpec) {\n    propagateDemandControlDirectives(field, inputField, subgraph, costSpec);\n  }\n\n  return inputField;\n}\n\nfunction extractSubgraphsFromFed1Supergraph({\n  supergraph,\n  subgraphs,\n  joinSpec,\n  filteredTypes,\n  getSubgraph,\n}: ExtractArguments): Subgraphs {\n  const typeDirective = joinSpec.typeDirective(supergraph);\n  const ownerDirective = joinSpec.ownerDirective(supergraph);\n  const fieldDirective = joinSpec.fieldDirective(supergraph);\n\n  /*\n   * For fed1 supergraph, only entity types are marked with `@join__type` and `@join__field`. Which mean that for value types,\n   * we cannot directly know in which subgraphs they were initially defined. One strategy consists in \"extracting\" value types into\n   * all subgraphs blindly: functionally, having some unused types in an extracted subgraph schema does not matter much. However, adding\n   * those useless types increases memory usage, and we've seen some case with lots of subgraphs and lots of value types where those\n   * unused types balloon up memory usage (from 100MB to 1GB in one example; obviously, this is made worst by the fact that javascript\n   * is pretty memory heavy in the first place). So to avoid that problem, for fed1 supergraph, we do a first pass where we collect\n   * for all the subgraphs the set of types that are actually reachable in that subgraph. As we extract do the actual type extraction,\n   * we use this to ignore non-reachable types for any given subgraph.\n   */\n  const reachableTypesBySubgraph = collectFieldReachableTypesForAllSubgraphs(\n    supergraph,\n    subgraphs.names(),\n    (f, name) => {\n      const fieldApplications: Directive<any, { graph?: string, requires?: string, provides?: string }>[] = f.appliedDirectivesOf(fieldDirective);\n      if (fieldApplications.length) {\n        const application = fieldApplications.find((application) => getSubgraph(application)?.name === name);\n        if (application) {\n          const args = application.arguments();\n          const typesInFederationDirectives =\n            typesUsedInFederationDirective(args.provides, baseType(f.type!) as CompositeType)\n            .concat(typesUsedInFederationDirective(args.requires, f.parent));\n          return { isInSubgraph: true, typesInFederationDirectives };\n        } else {\n          return { isInSubgraph: false, typesInFederationDirectives: [] };\n        }\n      } else {\n        // No field application depends on the \"owner\" directive on the type. If we have no owner, then the\n        // field is in all subgraph and we return true. Otherwise, the field is only in the owner subgraph.\n        // In any case, the field cannot have a requires or provides\n        const ownerApplications = ownerDirective ? f.parent.appliedDirectivesOf(ownerDirective) : [];\n        return { isInSubgraph: !ownerApplications.length || getSubgraph(ownerApplications[0])?.name == name, typesInFederationDirectives: [] };\n      }\n    },\n    (t, name) => {\n      const typeApplications: Directive<any, { graph: string, key?: string}>[] = t.appliedDirectivesOf(typeDirective);\n      const application = typeApplications.find((application) => (application.arguments().key && (getSubgraph(application)?.name === name)));\n      if (application) {\n        const typesInFederationDirectives = typesUsedInFederationDirective(application.arguments().key, t as CompositeType);\n        return { isEntityWithKeyInSubgraph: true, typesInFederationDirectives };\n      } else {\n        return { isEntityWithKeyInSubgraph: false, typesInFederationDirectives: [] };\n      }\n    },\n  );\n  const includeTypeInSubgraph = (t: NamedType, name: string) => reachableTypesBySubgraph.get(name)?.has(t.name) ?? false;\n\n  // Next, we iterate on all types and add it to the proper subgraphs (along with any @key).\n  // Note that we first add all types empty and populate the types next. This avoids having to care about the iteration\n  // order if we have fields than depends on other types.\n  for (const type of filteredTypes) {\n    const typeApplications = type.appliedDirectivesOf(typeDirective);\n    if (!typeApplications.length) {\n      // Imply we don't know in which subgraph the type is, so we had it in all subgraph in which the type is reachable.\n      for (const subgraph of subgraphs) {\n        if (includeTypeInSubgraph(type, subgraph.name)) {\n          subgraph.schema.addType(newNamedType(type.kind, type.name));\n        }\n      }\n    } else {\n      for (const application of typeApplications) {\n        const args = application.arguments();\n        const subgraph = getSubgraph(application)!;\n        assert(subgraph, () => `Should have found the subgraph for ${application}`);\n        const schema = subgraph.schema;\n        // We can have more than one type directive for a given subgraph\n        let subgraphType = schema.type(type.name);\n        if (!subgraphType) {\n          const kind = args.isInterfaceObject ? 'ObjectType' : type.kind;\n          subgraphType = schema.addType(newNamedType(kind, type.name));\n          if (args.isInterfaceObject) {\n            subgraphType.applyDirective('interfaceObject');\n          }\n        }\n        if (args.key) {\n          const { resolvable } = args;\n          const directive = subgraphType.applyDirective('key', {'fields': args.key, resolvable});\n          if (args.extension) {\n            directive.setOfExtension(subgraphType.newExtension());\n          }\n        }\n      }\n    }\n  }\n\n  // We can now populate all those types (with relevant @provides and @requires on fields).\n  for (const type of filteredTypes) {\n    switch (type.kind) {\n      case 'ObjectType':\n        // @ts-expect-error: we fall-through the inputObjectType for fields.\n      case 'InterfaceType':\n        for (const implementations of type.interfaceImplementations()) {\n          // There is no `@join__implements` in fed1 supergraphs, so we have no choice but to mark the\n          // object/interface as implementing the interface in all subgraphs (at least those that contains\n          // both types).\n          const name = implementations.interface.name;\n          for (const subgraph of subgraphs) {\n            const subgraphType = subgraph.schema.type(type.name);\n            const subgraphItf = subgraph.schema.type(name);\n            if (subgraphType && subgraphItf) {\n              (subgraphType as (ObjectType | InterfaceType)).addImplementedInterface(name);\n            }\n          }\n        }\n        // Fall-through on purpose.\n      case 'InputObjectType':\n        for (const field of type.fields()) {\n          const fieldApplications = field.appliedDirectivesOf(fieldDirective);\n          if (!fieldApplications.length) {\n            // In fed1 supergraphs, the meaning of having no join__field depends on whether the parent type has a\n            // `@join__owner`. If it does, it means the field is only on that owner subgraph. Otherwise, we kind of\n            // don't know, so we add it to all subgraphs that have the parent type and, if the field base type\n            // is a named type, know that field type.\n            const ownerApplications = ownerDirective ? type.appliedDirectivesOf(ownerDirective) : [];\n            if (ownerApplications.length > 0) {\n              assert(ownerApplications.length == 1, () => `Found multiple join__owner directives on type ${type}`)\n              const subgraph = getSubgraph(ownerApplications[0]);\n              assert(subgraph, () => `Should have found the subgraph for ${ownerApplications[0]}`);\n              addSubgraphFieldForFed1(field, subgraph, false);\n            } else {\n              const fieldBaseType = baseType(field.type!);\n              const isShareable = isObjectType(type) && subgraphs.values().filter((s) => s.schema.type(type.name)).length > 1;\n              for (const subgraph of subgraphs) {\n                if (subgraph.schema.type(fieldBaseType.name)) {\n                  addSubgraphFieldForFed1(field, subgraph, isShareable);\n                }\n              }\n            }\n          } else {\n            // Note that fed1 supergraphs only include `@join__field` for non-external fields, so it needs shareable as soon\n            // as it has more than one `@join__field`.\n            const isShareable = isObjectType(type) && fieldApplications.length > 1;\n            for (const application of fieldApplications) {\n              const subgraph = getSubgraph(application);\n              // We use a @join__field with no graph to indicates when a field in the supergraph does not come\n              // directly from any subgraph and there is thus nothing to do to \"extract\" it.\n              if (!subgraph) {\n                continue;\n              }\n\n              const args = application.arguments();\n              addSubgraphFieldForFed1(field, subgraph, isShareable, args);\n            }\n          }\n        }\n        break;\n      case 'EnumType':\n        for (const subgraph of subgraphs) {\n          const subgraphEnum = subgraph.schema.type(type.name);\n          if (!subgraphEnum) {\n            continue;\n          }\n          assert(isEnumType(subgraphEnum), () => `${subgraphEnum} should be an enum but found a ${subgraphEnum.kind}`);\n\n          // There is not `@join__enumValue` in fed1, so we add to all graphs regardless.\n          for (const value of type.values) {\n            subgraphEnum.addValue(value.name);\n          }\n        }\n        break;\n      case 'UnionType':\n        for (const subgraph of subgraphs) {\n          const subgraphUnion = subgraph.schema.type(type.name);\n          if (!subgraphUnion) {\n            continue;\n          }\n          assert(isUnionType(subgraphUnion), () => `${subgraphUnion} should be an enum but found a ${subgraphUnion.kind}`);\n\n          // There is not `@join__unionMember` in fed1, so we add to all graphs regardless.\n          for (const memberTypeName of type.types().map((t) => t.name)) {\n            const subgraphType = subgraph.schema.type(memberTypeName);\n            if (subgraphType) {\n              subgraphUnion.addType(subgraphType as ObjectType);\n            }\n          }\n        }\n        break;\n    }\n  }\n\n  const allExecutableDirectives = supergraph.directives().filter((def) => def.hasExecutableLocations());\n  for (const subgraph of subgraphs) {\n    // The join spec in fed1 was not including external fields. Let's make sure we had them or we'll get validation\n    // errors later.\n    addExternalFields(subgraph, supergraph, true);\n    removeInactiveProvidesAndRequires(subgraph.schema);\n\n    removeUnusedTypesFromSubgraph(subgraph.schema);\n\n    // Lastly, we add all the \"executable\" directives from the supergraph to each subgraphs, as those may be part\n    // of a query and end up in any subgraph fetches. We do this \"last\" to make sure that if one of the directive\n    // use a type for an argument, that argument exists.\n    // Note that we don't bother with non-executable directives at the moment since we've don't extract their\n    // applications. It might become something we need later, but we don't so far.\n    for (const definition of allExecutableDirectives) {\n      // Note that we skip any potentially applied directives in the argument of the copied definition, because as said\n      // in the comment above, we haven't copied type-system directives. And so far, we really don't care about those\n      // applications.\n      copyDirectiveDefinitionToSchema({\n        definition,\n        schema: subgraph.schema,\n        copyDirectiveApplicationsInArguments: false,\n        locationFilter: (loc) => isExecutableDirectiveLocation(loc),\n      });\n    }\n  }\n\n  return subgraphs;\n}\n\n\ntype AnyField = FieldDefinition<ObjectType | InterfaceType> | InputFieldDefinition;\n\nfunction addSubgraphFieldForFed1(field: AnyField, subgraph: Subgraph, isShareable: boolean, joinFieldArgs?: JoinFieldDirectiveArguments): void {\n  const subgraphType = subgraph.schema.type(field.parent.name);\n  if (!subgraphType) {\n    return;\n  }\n\n  if (field instanceof FieldDefinition) {\n    addSubgraphField({\n      field,\n      subgraph,\n      type: subgraphType as ObjectType | InterfaceType,\n      isShareable,\n      joinFieldArgs,\n    });\n  } else {\n    addSubgraphInputField({\n      field,\n      subgraph,\n      type: subgraphType as InputObjectType,\n      joinFieldArgs,\n    });\n  }\n}\n\nfunction decodeType(encodedType: string, subgraph: Schema, subgraphName: string): Type {\n  try {\n    return builtTypeReference(encodedType, subgraph);\n  } catch (e) {\n    assert(false, () => `Cannot parse type \"${encodedType}\" in subgraph ${subgraphName}: ${e}`);\n  }\n}\n\nfunction copyType(type: Type, subgraph: Schema, subgraphName: string): Type {\n  switch (type.kind) {\n    case 'ListType':\n      return new ListType(copyType(type.ofType, subgraph, subgraphName));\n    case 'NonNullType':\n      return new NonNullType(copyType(type.ofType, subgraph, subgraphName) as NullableType);\n    default:\n      const subgraphType = subgraph.type(type.name);\n      assert(subgraphType, () => `Cannot find type \"${type.name}\" in subgraph \"${subgraphName}\"`);\n      return subgraphType;\n  }\n}\n\nfunction addExternalFields(subgraph: Subgraph, supergraph: Schema, isFed1: boolean) {\n  const metadata = subgraph.metadata();\n  for (const type of subgraph.schema.types()) {\n    if (!isObjectType(type) && !isInterfaceType(type)) {\n      continue;\n    }\n\n    // First, handle @key\n    for (const keyApplication of type.appliedDirectivesOf(metadata.keyDirective())) {\n      // Historically, the federation code for keys, when applied _to a type extension_:\n      //  1) required @external on any field of the key\n      //  2) but required the subgraph to resolve any field of that key\n      // despite the combination of those being arguably illogical (@external is supposed to signify the field is _not_ resolve\n      // by the subgraph).\n      // To maintain backward compatibility, we have to preserve that behavior. The way this is done is that during merging,\n      // if a key is on an extension, we remember it in the corresponding @join__type. And when reading @join__type directive\n      // in `extractSubgraphsFromSupergraph`, we mark the generated key directive as applied to an extension (note that only\n      // the key directive is marked that way, not the rest of the type; this is because we actually don't know if the rest\n      // what part of an extension or not and we prefer not presuming). So, now, if we look at the fields in a key and\n      // that key was on an extension, we know that we should not mark it @external, because it _is_ resolved by the subgraph.\n      // If the key is on a type definition however, then we don't have that historical legacy, and so if the field is\n      // not part of the subgraph, then it means that it is truly external (and composition validation will ensure that this\n      // is fine).\n      // Note that this is called `forceNonExternal` because an extension key field might well be part of a @provides somewhere\n      // else (it's not useful to do so, kind of imply an incomprehension and we'll remove those in `removeNeedlessProvides`,\n      // but it's not forbidden and has been seen) which has already added the field as @external, and we want to _remove_ the\n      // @external in that case. Also note that for fed 1 supergraphs, the 'ofExtension' information is not available so we\n      // have to default of forcing non-external on all key fields. Which is ok because \"true\" external on key fields was not\n      // supported anyway.\n      const forceNonExternal = isFed1 || !!keyApplication.ofExtension();\n      addExternalFieldsFromDirectiveFieldSet(subgraph, type, keyApplication, supergraph, forceNonExternal);\n    }\n    // Then any @requires or @provides on fields\n    for (const field of type.fields()) {\n      for (const requiresApplication of field.appliedDirectivesOf(metadata.requiresDirective())) {\n        addExternalFieldsFromDirectiveFieldSet(subgraph, type, requiresApplication, supergraph);\n      }\n      const fieldBaseType = baseType(field.type!);\n      for (const providesApplication of field.appliedDirectivesOf(metadata.providesDirective())) {\n        assert(isObjectType(fieldBaseType) || isInterfaceType(fieldBaseType), () => `Found @provides on field ${field.coordinate} whose type ${field.type!} (${fieldBaseType.kind}) is not an object or interface `);\n        addExternalFieldsFromDirectiveFieldSet(subgraph, fieldBaseType, providesApplication, supergraph);\n      }\n    }\n\n    // And then any constraint due to implemented interfaces.\n    addExternalFieldsFromInterface(metadata, type);\n  }\n}\n\nfunction addExternalFieldsFromDirectiveFieldSet(\n  subgraph: Subgraph,\n  parentType: ObjectType | InterfaceType,\n  directive: Directive<NamedType | FieldDefinition<CompositeType>, {fields: any}>,\n  supergraph: Schema,\n  forceNonExternal: boolean = false,\n) {\n  const external = subgraph.metadata().externalDirective();\n\n  const fieldAccessor = function (type: CompositeType, fieldName: string): FieldDefinition<any> {\n    const field = type.field(fieldName);\n    if (field) {\n      if (forceNonExternal && field.hasAppliedDirective(external)) {\n        field.appliedDirectivesOf(external).forEach(d => d.remove());\n      }\n      return field;\n    }\n    assert(!isUnionType(type), () => `Shouldn't select field ${fieldName} from union type ${type}`);\n\n    // If the field has not been added, it is external and needs to be added as such\n    const supergraphType = supergraph.type(type.name) as ObjectType | InterfaceType;\n    const supergraphField = supergraphType.field(fieldName);\n    assert(supergraphField, () => `No field named ${fieldName} found on type ${type.name} in the supergraph`);\n    // We're know the parent type of the field exists in the subgraph (it's `type`), so we're guaranteed a field is created.\n    const created = addSubgraphField({\n      field: supergraphField,\n      subgraph,\n      type,\n      isShareable: false,\n    });\n    if (!forceNonExternal) {\n      created.applyDirective(external);\n    }\n    return created;\n  };\n  try {\n    parseFieldSetArgument({parentType, directive, fieldAccessor, validate: false});\n  } catch (e) {\n    // Ignored on purpose: for fed1 supergraphs, it's possible that some of the fields defined in a federation directive\n    // was _not_ defined in the subgraph because fed1 was not validating this properly (the validation wasn't handling\n    // nested fields as it should), which may result in an error when trying to add those as an external field.\n    // However, this is not the right place to throw. Instead, we ignore the problem and thus exit without having added\n    // all the necessary fields, and so this very same directive will fail validation at the end of the extraction when\n    // we do the final validation of the extracted subgraph (see end of `extractSubgraphsFromSupergraph`). And we prefer\n    // failing then because 1) that later validation will collect all errors instead of failing on the first one and\n    // 2) we already have special error messages and the ability to dump the extracted subgraphs for debug at that point,\n    // so it's a much better place.\n  }\n}\n\nfunction addExternalFieldsFromInterface(metadata: FederationMetadata, type: ObjectType | InterfaceType) {\n  for (const itf of type.interfaces()) {\n    for (const field of itf.fields()) {\n      const typeField = type.field(field.name);\n      if (!typeField) {\n        copyFieldAsExternal(metadata, field, type);\n      } else if (typeField.hasAppliedDirective(metadata.externalDirective())) {\n        // A subtlety here is that a type may implements multiple interfaces providing a given field, and the field may\n        // not have the exact same definition in all interface. So if we may have added the field in a previous loop\n        // iteration, we need to check if we shouldn't update the field type.\n        maybeUpdateFieldForInterface(typeField, field);\n      }\n    }\n  }\n}\n\nfunction copyFieldAsExternal(metadata: FederationMetadata, field: FieldDefinition<InterfaceType>, type: ObjectType | InterfaceType) {\n  const newField = type.addField(field.name, field.type);\n  for (const arg of field.arguments()) {\n    newField.addArgument(arg.name, arg.type, arg.defaultValue);\n  }\n  newField.applyDirective(metadata.externalDirective());\n}\n\nfunction maybeUpdateFieldForInterface(toModify: FieldDefinition<ObjectType | InterfaceType>, itfField: FieldDefinition<InterfaceType>) {\n  // Note that we only care about the field type because while graphql does not allow contravariance of args for field implementations.\n  // And while fed2 allow it when merging, this code doesn't run for fed2 generated supergraph, so this isn't a concern.\n  if (!isSubtype(itfField.type!, toModify.type!)) {\n    assert(isSubtype(toModify.type!, itfField.type!), () => `For ${toModify.coordinate}, expected ${itfField.type} and ${toModify.type} to be in a subtyping relationship`);\n    toModify.type = itfField.type!;\n  }\n}\n\nfunction removeUnusedTypesFromSubgraph(schema: Schema) {\n  // We now do an additional path on all types because we sometimes added types to subgraphs without\n  // being sure that the subgraph had the type in the first place (especially with the 0.1 join spec), and because\n  // we later might not have added any fields/members to said type, they may be empty (indicating they clearly\n  // didn't belong to the subgraph in the first) and we need to remove them.\n  // Note that need to do this _after_ the `addExternalFields` call above since it may have added (external) fields\n  // to some of the types.\n  for (const type of schema.types()) {\n    switch (type.kind) {\n      case 'ObjectType':\n      case 'InterfaceType':\n      case 'InputObjectType':\n        if (!type.hasFields()) {\n          // Note that we have to use removeRecursive or this could leave the subgraph invalid. But if the\n          // type was not in this subgraphs, nothing that depends on it should be either.\n          type.removeRecursive();\n        }\n        break;\n      case 'UnionType':\n        if (type.membersCount() === 0) {\n          type.removeRecursive();\n        }\n        break;\n    }\n  }\n}\n", "import { DocumentNode, GraphQLError } from \"graphql\";\nimport { CoreFeatures, Schema, sourceASTs } from \"./definitions\";\nimport {\n  ErrCoreCheckFailed,\n  FeatureUrl,\n  FeatureVersion,\n} from './specs/coreSpec';\nimport { joinIdentity, JoinSpecDefinition, JOIN_VERSIONS } from \"./specs/joinSpec\";\nimport { CONTEXT_VERSIONS, ContextSpecDefinition } from \"./specs/contextSpec\";\nimport { COST_VERSIONS, costIdentity, CostSpecDefinition } from \"./specs/costSpec\";\nimport { buildSchema, buildSchemaFromAST } from \"./buildSchema\";\nimport { extractSubgraphsNamesAndUrlsFromSupergraph, extractSubgraphsFromSupergraph } from \"./extractSubgraphsFromSupergraph\";\nimport { ERRORS } from \"./error\";\nimport { Subgraphs } from './federation';\n\nexport const DEFAULT_SUPPORTED_SUPERGRAPH_FEATURES = new Set([\n  'https://specs.apollo.dev/core/v0.1',\n  'https://specs.apollo.dev/core/v0.2',\n  'https://specs.apollo.dev/join/v0.1',\n  'https://specs.apollo.dev/join/v0.2',\n  'https://specs.apollo.dev/join/v0.3',\n  'https://specs.apollo.dev/join/v0.4',\n  'https://specs.apollo.dev/join/v0.5',\n  'https://specs.apollo.dev/tag/v0.1',\n  'https://specs.apollo.dev/tag/v0.2',\n  'https://specs.apollo.dev/tag/v0.3',\n  'https://specs.apollo.dev/inaccessible/v0.1',\n  'https://specs.apollo.dev/inaccessible/v0.2',\n]);\n\nexport const ROUTER_SUPPORTED_SUPERGRAPH_FEATURES: Set<string> = new Set([\n  'https://specs.apollo.dev/core/v0.1',\n  'https://specs.apollo.dev/core/v0.2',\n  'https://specs.apollo.dev/join/v0.1',\n  'https://specs.apollo.dev/join/v0.2',\n  'https://specs.apollo.dev/join/v0.3',\n  'https://specs.apollo.dev/join/v0.4',\n  'https://specs.apollo.dev/join/v0.5',\n  'https://specs.apollo.dev/tag/v0.1',\n  'https://specs.apollo.dev/tag/v0.2',\n  'https://specs.apollo.dev/tag/v0.3',\n  'https://specs.apollo.dev/inaccessible/v0.1',\n  'https://specs.apollo.dev/inaccessible/v0.2',\n  'https://specs.apollo.dev/authenticated/v0.1',\n  'https://specs.apollo.dev/requiresScopes/v0.1',\n  'https://specs.apollo.dev/policy/v0.1',\n  'https://specs.apollo.dev/context/v0.1',\n  'https://specs.apollo.dev/cost/v0.1',\n  'https://specs.apollo.dev/connect/v0.1',\n  'https://specs.apollo.dev/connect/v0.2',\n  'https://specs.apollo.dev/connect/v0.3',\n  'https://specs.apollo.dev/connect/v0.4',\n  'https://specs.apollo.dev/cacheTag/v0.1',\n]);\n\nconst coreVersionZeroDotOneUrl = FeatureUrl.parse('https://specs.apollo.dev/core/v0.1');\n\n/**\n * Checks that only our hard-coded list of features are part of the provided schema, and that if\n * the schema uses core v0.1, then it doesn't use the 'for' (purpose) argument.\n * Throws if that is not true.\n */\nfunction checkFeatureSupport(coreFeatures: CoreFeatures, supportedFeatures: Set<string>) {\n  const errors: GraphQLError[] = [];\n  const coreItself = coreFeatures.coreItself;\n  if (coreItself.url.equals(coreVersionZeroDotOneUrl)) {\n    const purposefulFeatures = [...coreFeatures.allFeatures()].filter(f => f.purpose)\n    if (purposefulFeatures.length > 0) {\n      errors.push(ERRORS.UNSUPPORTED_LINKED_FEATURE.err(\n        `the \\`for:\\` argument is unsupported by version ${coreItself.url.version} ` +\n        `of the core spec. Please upgrade to at least @core v0.2 (https://specs.apollo.dev/core/v0.2).`,\n        {\n          nodes: sourceASTs(coreItself.directive, ...purposefulFeatures.map(f => f.directive))\n        }\n      ));\n    }\n  }\n\n  for (const feature of coreFeatures.allFeatures()) {\n    if (feature.url.equals(coreVersionZeroDotOneUrl) || feature.purpose === 'EXECUTION' || feature.purpose === 'SECURITY') {\n      if (!supportedFeatures.has(feature.url.base.toString())) {\n        errors.push(ERRORS.UNSUPPORTED_LINKED_FEATURE.err(\n          `feature ${feature.url} is for: ${feature.purpose} but is unsupported`,\n          { nodes: feature.directive.sourceAST },\n        ));\n      }\n    }\n  }\n  if (errors.length > 0) {\n    throw ErrCoreCheckFailed(errors);\n  }\n}\n\nexport function validateSupergraph(supergraph: Schema): [\n  CoreFeatures,\n  JoinSpecDefinition,\n  ContextSpecDefinition | undefined,\n  CostSpecDefinition | undefined,\n] {\n  const coreFeatures = supergraph.coreFeatures;\n  if (!coreFeatures) {\n    throw ERRORS.INVALID_FEDERATION_SUPERGRAPH.err(\"Invalid supergraph: must be a core schema\");\n  }\n\n  const joinFeature = coreFeatures.getByIdentity(joinIdentity);\n  if (!joinFeature) {\n    throw ERRORS.INVALID_FEDERATION_SUPERGRAPH.err(\"Invalid supergraph: must use the join spec\");\n  }\n  const joinSpec = JOIN_VERSIONS.find(joinFeature.url.version);\n  if (!joinSpec) {\n    throw ERRORS.INVALID_FEDERATION_SUPERGRAPH.err(\n      `Invalid supergraph: uses unsupported join spec version ${joinFeature.url.version} (supported versions: ${JOIN_VERSIONS.versions().join(', ')})`);\n  }\n\n  const contextFeature = coreFeatures.getByIdentity(ContextSpecDefinition.identity);\n  let contextSpec = undefined;\n  if (contextFeature) {\n    contextSpec = CONTEXT_VERSIONS.find(contextFeature.url.version);\n    if (!contextSpec) {\n      throw ERRORS.INVALID_FEDERATION_SUPERGRAPH.err(\n        `Invalid supergraph: uses unsupported context spec version ${contextFeature.url.version} (supported versions: ${CONTEXT_VERSIONS.versions().join(', ')})`);\n    }\n  }\n\n  const costFeature = coreFeatures.getByIdentity(costIdentity);\n  let costSpec = undefined;\n  if (costFeature) {\n    costSpec = COST_VERSIONS.find(costFeature.url.version);\n    if (!costSpec) {\n      throw ERRORS.INVALID_FEDERATION_SUPERGRAPH.err(\n        `Invalid supergraph: uses unsupported cost spec version ${costFeature.url.version} (supported versions: ${COST_VERSIONS.versions().join(', ')})`);\n    }\n  }\n  return [coreFeatures, joinSpec, contextSpec, costSpec];\n}\n\nexport function isFed1Supergraph(supergraph: Schema): boolean {\n  return validateSupergraph(supergraph)[1].version.equals(new FeatureVersion(0, 1));\n}\n\nexport class Supergraph {\n  private readonly containedSubgraphs: readonly {name: string, url: string}[];\n  // Lazily computed as that requires a bit of work.\n  private _subgraphs?: Subgraphs;\n  private _subgraphNameToGraphEnumValue?: Map<string, string>;\n\n  constructor(\n    readonly schema: Schema,\n    supportedFeatures: Set<string> | null = DEFAULT_SUPPORTED_SUPERGRAPH_FEATURES,\n    private readonly shouldValidate: boolean = true,\n  ) {\n    const [coreFeatures] = validateSupergraph(schema);\n\n    if (supportedFeatures !== null) {\n      checkFeatureSupport(coreFeatures, supportedFeatures);\n    }\n\n    if (shouldValidate) {\n      schema.validate();\n    } else {\n      schema.assumeValid();\n    }\n\n    this.containedSubgraphs = extractSubgraphsNamesAndUrlsFromSupergraph(schema);\n  }\n\n  static build(supergraphSdl: string | DocumentNode, options?: { supportedFeatures?: Set<string> | null, validateSupergraph?: boolean }) {\n    // We delay validation because `checkFeatureSupport` in the constructor gives slightly more useful errors if, say, 'for' is used with core v0.1.\n    const schema = typeof supergraphSdl === 'string'\n      ? buildSchema(supergraphSdl, { validate: false })\n      : buildSchemaFromAST(supergraphSdl, { validate: false });\n\n    return new Supergraph(schema, options?.supportedFeatures, options?.validateSupergraph);\n  }\n\n  static buildForTests(supergraphSdl: string | DocumentNode, validateSupergraph?: boolean) {\n    return Supergraph.build(supergraphSdl, { supportedFeatures: ROUTER_SUPPORTED_SUPERGRAPH_FEATURES, validateSupergraph });\n  }\n  /**\n   * The list of names/urls of the subgraphs contained in this subgraph.\n   *\n   * Note that this is a subset of what `this.subgraphs()` returns, but contrarily to that method, this method does not do a full extraction of the\n   * subgraphs schema.\n   */\n  subgraphsMetadata(): readonly {name: string, url: string}[] {\n    return this.containedSubgraphs;\n  }\n\n  subgraphs(): Subgraphs {\n    if (!this._subgraphs) {\n      // Note that `extractSubgraphsFromSupergraph` redo a little bit of work we're already one, like validating\n      // the supergraph. We could refactor things to avoid it, but it's completely negligible in practice so we\n      // can leave that to \"some day, maybe\".\n      const extractionResults = extractSubgraphsFromSupergraph(this.schema, this.shouldValidate);\n      this._subgraphs = extractionResults[0];\n      this._subgraphNameToGraphEnumValue = extractionResults[1];\n    }\n    return this._subgraphs;\n  }\n\n  subgraphNameToGraphEnumValue(): Map<string, string> {\n    if (!this._subgraphNameToGraphEnumValue) {\n      const extractionResults = extractSubgraphsFromSupergraph(this.schema, this.shouldValidate);\n      this._subgraphs = extractionResults[0];\n      this._subgraphNameToGraphEnumValue = extractionResults[1];\n    }\n    return new Map([...this._subgraphNameToGraphEnumValue]);\n  }\n\n  apiSchema(): Schema {\n    return this.schema.toAPISchema();\n  }\n}\n", "import {\n    ASTNode,\n  GraphQLError,\n  Kind,\n  print as printAST,\n} from \"graphql\";\nimport { errorCauses, ERRORS } from \"./error\";\nimport {\n  baseType,\n  CompositeType,\n  Directive,\n  Extension,\n  FieldDefinition,\n  InterfaceType,\n  isCompositeType,\n  isInterfaceType,\n  isObjectType,\n  NamedSchemaElement,\n  NamedType,\n  ObjectType,\n  Schema,\n  SchemaElement,\n} from \"./definitions\";\nimport {\n  addSubgraphToError,\n  collectTargetFields,\n  federationMetadata,\n  FederationMetadata,\n  printSubgraphNames,\n  removeInactiveProvidesAndRequires,\n  setSchemaAsFed2Subgraph,\n  Subgraph,\n  Subgraphs,\n} from \"./federation\";\nimport { assert, firstOf, MultiMap } from \"./utils\";\nimport { valueEquals } from \"./values\";\nimport { FEDERATION1_TYPES } from \"./specs/federationSpec\";\n\nexport type UpgradeResult = UpgradeSuccess | UpgradeFailure;\n\ntype UpgradeChanges = MultiMap<UpgradeChangeID, UpgradeChange>;\n\nexport type UpgradeSuccess = {\n  subgraphs: Subgraphs,\n  changes: Map<string, UpgradeChanges>,\n  errors?: never,\n}\n\nexport type UpgradeFailure = {\n  subgraphs?: never,\n  changes?: never,\n  errors: GraphQLError[],\n}\n\nexport type UpgradeChangeID = UpgradeChange['id'];\n\nexport type UpgradeChange =\n  ExternalOnTypeExtensionRemoval\n  | TypeExtensionRemoval\n  | UnusedExternalRemoval\n  | TypeWithOnlyUnusedExternalRemoval\n  | ExternalOnInterfaceRemoval\n  | ExternalOnObjectTypeRemoval\n  | InactiveProvidesOrRequiresRemoval\n  | InactiveProvidesOrRequiresFieldsRemoval\n  | ShareableFieldAddition\n  | ShareableTypeAddition\n  | KeyOnInterfaceRemoval\n  | ProvidesOrRequiresOnInterfaceFieldRemoval\n  | ProvidesOnNonCompositeRemoval\n  | FieldsArgumentCoercionToString\n  | RemovedTagOnExternal\n;\n\nexport class ExternalOnTypeExtensionRemoval {\n  readonly id = 'EXTERNAL_ON_TYPE_EXTENSION_REMOVAL' as const;\n\n  constructor(readonly field: string) {}\n\n  toString() {\n    return `Removed @external from field \"${this.field}\" as it is a key of an extension type`;\n  }\n}\n\nexport class TypeExtensionRemoval {\n  readonly id = 'TYPE_EXTENSION_REMOVAL' as const;\n\n  constructor(readonly type: string) {}\n\n  toString() {\n    return `Switched type \"${this.type}\" from an extension to a definition`;\n  }\n}\n\nexport class ExternalOnInterfaceRemoval {\n  readonly id = 'EXTERNAL_ON_INTERFACE_REMOVAL' as const;\n\n  constructor(readonly field: string) {}\n\n  toString() {\n    return `Removed @external directive on interface type field \"${this.field}\": @external is nonsensical on interface fields`;\n  }\n}\n\nexport class ExternalOnObjectTypeRemoval {\n  readonly id = 'EXTERNAL_ON_OBJECT_TYPE_REMOVAL' as const;\n\n  constructor(readonly type: string) {}\n\n  toString() {\n    return `Removed @external directive on object type \"${this.type}\": @external on types was not rejected but was inactive in fed1`;\n  }\n}\n\nexport class UnusedExternalRemoval {\n  readonly id = 'UNUSED_EXTERNAL_REMOVAL' as const;\n\n  constructor(readonly field: string) {}\n\n  toString() {\n    return `Removed @external field \"${this.field}\" as it was not used in any @key, @provides or @requires`;\n  }\n}\n\nexport class TypeWithOnlyUnusedExternalRemoval {\n  readonly id = 'TYPE_WITH_ONLY_UNUSED_EXTERNAL_REMOVAL' as const;\n\n  constructor(readonly type: string) {}\n\n  toString() {\n    return `Removed type ${this.type} that is not referenced in the schema and only declares unused @external fields`;\n  }\n}\n\nexport class InactiveProvidesOrRequiresRemoval {\n  readonly id = 'INACTIVE_PROVIDES_OR_REQUIRES_REMOVAL' as const;\n\n  constructor(readonly parent: string, readonly removed: string) {}\n\n  toString() {\n    return `Removed directive ${this.removed} on \"${this.parent}\": none of the fields were truly @external`;\n  }\n}\n\nexport class InactiveProvidesOrRequiresFieldsRemoval {\n  readonly id = 'INACTIVE_PROVIDES_OR_REQUIRES_FIELDS_REMOVAL' as const;\n\n  constructor(readonly parent: string, readonly original: string, readonly updated: string) {}\n\n  toString() {\n    return `Updated directive ${this.original} on \"${this.parent}\" to ${this.updated}: removed fields that were not truly @external`;\n  }\n}\n\nexport class ShareableFieldAddition {\n  readonly id = 'SHAREABLE_FIELD_ADDITION' as const;\n\n  constructor(readonly field: string, readonly declaringSubgraphs: string[]) {}\n\n  toString() {\n    return `Added @shareable to field \"${this.field}\": it is also resolved by ${printSubgraphNames(this.declaringSubgraphs)}`;\n  }\n}\n\nexport class ShareableTypeAddition {\n  readonly id = 'SHAREABLE_TYPE_ADDITION' as const;\n\n  constructor(readonly type: string, readonly declaringSubgraphs: string[]) {}\n\n  toString() {\n    return `Added @shareable to type \"${this.type}\": it is a \"value type\" and is also declared in ${printSubgraphNames(this.declaringSubgraphs)}`;\n  }\n}\n\nexport class KeyOnInterfaceRemoval {\n  readonly id = 'KEY_ON_INTERFACE_REMOVAL' as const;\n\n  constructor(readonly type: string) {}\n\n  toString() {\n    return `Removed @key on interface \"${this.type}\": while allowed by federation 0.x, @key on interfaces were completely ignored/had no effect`;\n  }\n}\n\nexport class ProvidesOrRequiresOnInterfaceFieldRemoval {\n  readonly id = 'PROVIDES_OR_REQUIRES_ON_INTERFACE_FIELD_REMOVAL' as const;\n\n  constructor(readonly field: string, readonly directive: string) {}\n\n  toString() {\n    return `Removed @${this.directive} on interface field \"${this.field}\": while allowed by federation 0.x, @${this.directive} on interface fields were completely ignored/had no effect`;\n  }\n}\n\nexport class ProvidesOnNonCompositeRemoval {\n  readonly id = 'PROVIDES_ON_NON_COMPOSITE_REMOVAL' as const;\n\n  constructor(readonly field: string, readonly type: string) {}\n\n  toString() {\n    return `Removed @provides directive on field \"${this.field}\" as it is of non-composite type \"${this.type}\": while not rejected by federation 0.x, such @provide is nonsensical and was ignored`;\n  }\n}\n\nexport class FieldsArgumentCoercionToString {\n  readonly id = 'FIELDS_ARGUMENT_COERCION_TO_STRING' as const;\n\n  constructor(readonly element: string, readonly directive: string, readonly before: string, readonly after: string) {}\n\n  toString() {\n    return `Coerced \"fields\" argument for directive @${this.directive} for \"${this.element}\" into a string: coerced from ${this.before} to ${this.after}`;\n  }\n}\n\nexport class RemovedTagOnExternal {\n  readonly id = 'REMOVED_TAG_ON_EXTERNAL' as const;\n\n  constructor(readonly application: string, readonly element: string) {}\n\n  toString() {\n    return `Removed ${this.application} application on @external \"${this.element}\" as the @tag application is on another definition`;\n  }\n}\n\nexport function upgradeSubgraphsIfNecessary(inputs: Subgraphs): UpgradeResult {\n  const changes: Map<string, UpgradeChanges> = new Map();\n  if (inputs.values().every((s) => s.isFed2Subgraph())) {\n    return { subgraphs: inputs, changes };\n  }\n\n  const subgraphs = new Subgraphs();\n  let errors: GraphQLError[] = [];\n  const subgraphsUsingInterfaceObject = [];\n  \n  // build a data structure to help us do computation only once\n  const objectTypeMap = new Map<string, Map<string, [ObjectType | InterfaceType, FederationMetadata]>>();\n  for (const subgraph of inputs.values()) {\n    for (const t of subgraph.schema.objectTypes()) {\n      let entry = objectTypeMap.get(t.name);\n      if (!entry) {\n        entry = new Map();\n        objectTypeMap.set(t.name, entry);\n      }\n      entry.set(subgraph.name, [t, subgraph.metadata()]);\n    }\n    for (const t of subgraph.schema.interfaceTypes()) {\n      let entry = objectTypeMap.get(t.name);\n      if (!entry) {\n        entry = new Map();\n        objectTypeMap.set(t.name, entry);\n      }\n      entry.set(subgraph.name, [t, subgraph.metadata()]);\n    }\n  }\n  \n  for (const subgraph of inputs.values()) {\n    if (subgraph.isFed2Subgraph()) {\n      subgraphs.add(subgraph);\n      if (subgraph.metadata().interfaceObjectDirective().applications().size > 0) {\n        subgraphsUsingInterfaceObject.push(subgraph.name);\n      }\n    } else {\n      const res = new SchemaUpgrader(subgraph, inputs.values(), objectTypeMap).upgrade();\n      if (res.errors) {\n        errors = errors.concat(res.errors);\n      } else {\n        subgraphs.add(res.upgraded);\n        changes.set(subgraph.name, res.changes);\n      }\n    }\n  }\n  if (errors.length === 0 && subgraphsUsingInterfaceObject.length > 0) {\n    const fed1Subgraphs = inputs.values().filter((s) => !s.isFed2Subgraph()).map((s) => s.name);\n    // Note that we exit this method early if everything is a fed2 schema, so we know at least one of them wasn't.\n    errors = [ ERRORS.INTERFACE_OBJECT_USAGE_ERROR.err(\n      'The @interfaceObject directive can only be used if all subgraphs have federation 2 subgraph schema (schema with a `@link` to \"https://specs.apollo.dev/federation\" version 2.0 or newer): '\n      + `@interfaceObject is used in ${printSubgraphNames(subgraphsUsingInterfaceObject)} but ${printSubgraphNames(fed1Subgraphs)} ${fed1Subgraphs.length > 1 ? 'are not' : 'is not a'} federation 2 subgraph schema.`,\n    )];\n  }\n\n  return errors.length === 0 ? { subgraphs, changes } : { errors };\n}\n\n/**\n * Wether the type represents a type extension in the sense of federation 1.\n * That is, type extension are a thing in GraphQL, but federation 1 overloads the notion for entities. This method\n * return true if the type is used in the federation 1 sense of an extension.\n * And we recognize federation 1 type extensions as type extension that:\n *  1. are on object type or interface type (note that federation 1 don't really handle interface type extension properly but it \"accepts\" them\n *     so we do it here too).\n *  2. do not have a definition for the same type in the same subgraph (this is a GraphQL extension otherwise).\n *\n * Not that type extensions in federation 1 generally have a @key but in really the code consider something a type extension even without\n * it (which I'd argue is a unintended bug of fed1 since this leads to various problems) so we don't check for the presence of @key here.\n */\nfunction isFederationTypeExtension(type: NamedType): boolean {\n  const metadata = federationMetadata(type.schema());\n  assert(metadata, 'Should be a subgraph schema');\n  const hasExtend = type.hasAppliedDirective(metadata.extendsDirective());\n  return (type.hasExtensionElements() || hasExtend)\n    && (isObjectType(type) || isInterfaceType(type))\n    && (hasExtend || !type.hasNonExtensionElements());\n}\n\n/**\n * Whether the type is a root type but is declared has (only) an extension, which federation 1 actually accepts.\n */\nfunction isRootTypeExtension(type: NamedType): boolean {\n  const metadata = federationMetadata(type.schema());\n  assert(metadata, 'Should be a subgraph schema');\n  return isObjectType(type)\n    && type.isRootType()\n    && (type.hasAppliedDirective(metadata.extendsDirective()) || (type.hasExtensionElements() && !type.hasNonExtensionElements()));\n}\n\nfunction getField(schema: Schema, typeName: string, fieldName: string): FieldDefinition<CompositeType> | undefined {\n  const type = schema.type(typeName);\n  return type && isCompositeType(type) ? type.field(fieldName) : undefined;\n}\n\nclass SchemaUpgrader {\n  private readonly changes = new MultiMap<UpgradeChangeID, UpgradeChange>();\n  private readonly schema: Schema;\n  private readonly subgraph: Subgraph;\n  private readonly metadata: FederationMetadata;\n  private readonly errors: GraphQLError[] = [];\n\n  constructor(private readonly originalSubgraph: Subgraph, private readonly allSubgraphs: readonly Subgraph[], private readonly objectTypeMap: Map<string, Map<string, [ObjectType | InterfaceType, FederationMetadata]>>) {\n    // Note that as we clone the original schema, the 'sourceAST' values in the elements of the new schema will be those of the original schema\n    // and those won't be updated as we modify the schema to make it fed2-enabled. This is _important_ for us here as this is what ensures that\n    // later merge errors \"AST\" nodes ends up pointing to the original schema, the one that make sense to the user.\n    this.schema = originalSubgraph.schema.clone();\n    this.renameFederationTypes();\n    // Setting this property before trying to switch the cloned schema to fed2 because on\n    // errors `addError` uses `this.subgraph.name`.\n    this.subgraph = new Subgraph(originalSubgraph.name, originalSubgraph.url, this.schema);\n    try {\n      setSchemaAsFed2Subgraph(this.schema);\n    } catch (e) {\n      // This could error out if some directive definition clashes with a federation one while\n      // having an incompatible definition. Note that in that case, the choices for the user\n      // are either:\n      // 1. fix/remove the definition if they did meant the federation directive, just had an\n      //   invalid definition.\n      // 2. but if they have their own directive whose name happens to clash with a federation\n      //   directive one but is genuinely a different directive, they will have to move their\n      //   schema to a fed2 one and use renaming.\n      const causes = errorCauses(e);\n      if (causes) {\n        causes.forEach((c) => this.addError(c));\n      } else {\n        // An unexpected exception, rethrow.\n        throw e;\n      }\n    }\n    this.metadata = this.subgraph.metadata();\n  }\n\n  private addError(e: GraphQLError): void {\n    this.errors.push(addSubgraphToError(e, this.subgraph.name, ERRORS.INVALID_GRAPHQL));\n  }\n\n  private renameFederationTypes() {\n    // When we set the upgraded schema as a fed2 schema, we only \"import\" the federation directives, but not the federation types. This\n    // means that those types will be called `_Entity`, `_Any`, ... in the fed1 original schema, but they should be called `federation__Entity`,\n    // `federation__Any`, ... in the new upgraded schema.\n    // But note that even \"importing\" those types would not completely work because fed2 essentially drops the `_` at the beginning of those\n    // type names (relying on the core schema prefixing instead) and so some special translation needs to happen.\n    for (const typeSpec of FEDERATION1_TYPES) {\n      const typeNameInOriginal = this.originalSubgraph.metadata().federationTypeNameInSchema(typeSpec.name);\n      const type = this.schema.type(typeNameInOriginal);\n      if (type) {\n        type.rename(`federation__${typeSpec.name}`);\n      }\n    }\n  }\n\n  private external(elt: FieldDefinition<any>): Directive<any, {}> | undefined {\n    const applications = elt.appliedDirectivesOf(this.metadata.externalDirective());\n    return applications.length === 0 ? undefined : applications[0];\n  }\n\n  private addChange(change: UpgradeChange) {\n    this.changes.add(change.id, change);\n  }\n\n  private checkForExtensionWithNoBase(type: NamedType): void {\n    // The checks that if the type is a \"federation 1\" type extension, then another subgraph has a proper definition\n    // for that type.\n    if (isRootTypeExtension(type) || !isFederationTypeExtension(type)) {\n      return;\n    }\n\n    const extensionAST = firstOf<Extension<any>>(type.extensions().values())?.sourceAST;\n    const typeInOtherSubgraphs = Array.from(this.objectTypeMap.get(type.name)!.entries()).filter(([subgraphName, _]) => subgraphName !== this.subgraph.name);\n    for (let i = 0; i < typeInOtherSubgraphs.length; i += 1) {\n      const otherType = typeInOtherSubgraphs[i][1][0];\n      if (otherType && otherType.hasNonExtensionElements()) {\n        return;\n      }\n    }\n\n    // We look at all the other subgraphs and didn't found a (non-extension) definition of that type\n    this.addError(ERRORS.EXTENSION_WITH_NO_BASE.err(\n      `Type \"${type}\" is an extension type, but there is no type definition for \"${type}\" in any subgraph.`,\n      { nodes: extensionAST },\n    ));\n  }\n\n  private preUpgradeValidations(): void {\n    for (const type of this.schema.types()) {\n     this.checkForExtensionWithNoBase(type);\n    }\n  }\n\n  upgrade(): { upgraded: Subgraph, changes: UpgradeChanges, errors?: never } | { errors: GraphQLError[] } {\n    this.preUpgradeValidations();\n\n    this.fixFederationDirectivesArguments();\n\n    this.removeExternalOnInterface();\n    this.removeExternalOnObjectTypes();\n\n    // Note that we remove all external on type extensions first, so we don't have to care about it later in @key, @provides and @requires.\n    this.removeExternalOnTypeExtensions();\n\n    this.fixInactiveProvidesAndRequires();\n\n    this.removeTypeExtensions();\n\n    this.removeDirectivesOnInterface();\n\n    // Note that this rule rely on being after `removeDirectivesOnInterface` in practice (in that it doesn't check interfaces).\n    this.removeProvidesOnNonComposite();\n\n    // Note that this should come _after_ all the other changes that may remove/update federation directives, since those may create unused\n    // externals. Which is why this is toward  the end.\n    this.removeUnusedExternals();\n\n    this.addShareable();\n\n    this.removeTagOnExternal();\n\n    // If we had errors during the upgrade, we throw them before trying to validate the resulting subgraph, because any invalidity in the\n    // migrated subgraph may well due to those migration errors and confuse users.\n    if (this.errors.length > 0) {\n      return { errors: this.errors };\n    }\n\n    try {\n      this.subgraph.validate();\n      return {\n        upgraded: this.subgraph,\n        changes: this.changes,\n      };\n    } catch (e) {\n      const errors = errorCauses(e);\n      if (!errors) {\n        throw e;\n      }\n      // Do note that it's genuinely possible to return errors here, because federation validations (validating @key, @provides, ...) is mostly\n      // not done on the input schema and will only be triggered now, on the upgraded schema. Importantly, the errors returned here shouldn't\n      // be due to the upgrade process, but either due to the fed1 schema being invalid in the first place, or due to validation of fed2 that\n      // cannot be dealt with by the upgrade process (like, for instance, the fact that fed1 doesn't always reject fields mentioned in a @key\n      // that are not defined in the subgraph, but fed2 consistently do).\n      return { errors };\n    }\n  }\n\n  private fixFederationDirectivesArguments() {\n    for (const directive of [this.metadata.keyDirective(), this.metadata.requiresDirective(), this.metadata.providesDirective()]) {\n      // Note that we may remove (to replace) some of the application we iterate on, so we need to copy the list we iterate on first.\n      for (const application of Array.from(directive.applications())) {\n        const fields = application.arguments().fields;\n        if (typeof fields !== 'string') {\n          // The one case we have seen in practice is user passing an array of string, so we handle that. If it's something else,\n          // it's probably just completely invalid, so we ignore the application and let validation complain later.\n          if (Array.isArray(fields) && fields.every((f) => typeof f === 'string')) {\n            this.replaceFederationDirectiveApplication(application, application.toString(), fields.join(' '), directive.sourceAST);\n          }\n          continue;\n        }\n\n        // While validating if the field is a string will work in most cases, this will not catch the case where the field argument was\n        // unquoted but parsed as an enum value (see federation/issues/850 in particular). So if we have the AST (which we will usually\n        // have in practice), use that to check that the argument was truly a string.\n        const nodes = application.sourceAST;\n        if (nodes && nodes.kind === 'Directive') {\n          for (const argNode of nodes.arguments ?? []) {\n            if (argNode.name.value === 'fields') {\n              if (argNode.value.kind === Kind.ENUM) {\n                // Note that we we mostly want here is replacing the sourceAST because that is what is later used by validation\n                // to detect the problem.\n                this.replaceFederationDirectiveApplication(application, printAST(nodes), fields, {\n                  ...nodes,\n                  arguments: [{\n                    ...argNode,\n                    value: {\n                      kind: Kind.STRING,\n                      value: fields\n                    }\n                  }]\n                })\n                break;\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n\n  private removeExternalOnInterface() {\n    for (const itf of this.schema.interfaceTypes()) {\n      for (const field of itf.fields()) {\n        const external = this.external(field);\n        if (external) {\n          this.addChange(new ExternalOnInterfaceRemoval(field.coordinate));\n          external.remove();\n        }\n      }\n    }\n  }\n\n  private removeExternalOnObjectTypes() {\n    for (const type of this.schema.objectTypes()) {\n      const external = type.appliedDirectivesOf(this.metadata.externalDirective())[0];\n      if (external) {\n        this.addChange(new ExternalOnObjectTypeRemoval(type.coordinate));\n        external.remove();\n      }\n    }\n  }\n\n  private replaceFederationDirectiveApplication(\n    application: Directive<SchemaElement<any, any>, {fields: any}>,\n    before: string,\n    fields: string,\n    updatedSourceAST: ASTNode | undefined,\n  ) {\n    const directive = application.definition!;\n    // Note that in practice, federation directives can only be on either a type or a field, both of which are named.\n    const parent = application.parent as NamedSchemaElement<any, any, any>;\n    application.remove();\n    const newDirective = parent.applyDirective(directive, {fields});\n    newDirective.sourceAST = updatedSourceAST;\n    this.addChange(new FieldsArgumentCoercionToString(parent.coordinate, directive.name, before, newDirective.toString()));\n  }\n\n  private fixInactiveProvidesAndRequires() {\n    removeInactiveProvidesAndRequires(\n      this.schema,\n      (field, original, updated) => {\n        if (updated) {\n          this.addChange(new InactiveProvidesOrRequiresFieldsRemoval(field.coordinate, original.toString(), updated.toString()));\n        } else {\n          this.addChange(new InactiveProvidesOrRequiresRemoval(field.coordinate, original.toString()));\n        }\n      }\n    );\n  }\n\n  private removeExternalOnTypeExtensions() {\n    for (const type of this.schema.types()) {\n      if (!isCompositeType(type)) {\n        continue;\n      }\n      if (!isFederationTypeExtension(type) && !isRootTypeExtension(type)) {\n        continue;\n      }\n\n      const keyApplications = type.appliedDirectivesOf(this.metadata.keyDirective());\n      if (keyApplications.length > 0) {\n        // If the type extension has keys, then fed1 will essentially consider the key fields not external ...\n        for (const keyApplication of type.appliedDirectivesOf(this.metadata.keyDirective())) {\n          collectTargetFields({\n            parentType: type,\n            directive: keyApplication,\n            includeInterfaceFieldsImplementations: false,\n            validate: false,\n          }).forEach((field) => {\n            // We only consider \"top-level\" fields, the one of the type on which the key is, because that's what fed1 does.\n            if (field.parent !== type) {\n              return;\n            }\n            const external = this.external(field);\n            if (external) {\n              this.addChange(new ExternalOnTypeExtensionRemoval(field.coordinate));\n              external.remove();\n            }\n          });\n        }\n      } else {\n        // ... but if the extension does _not_ have a key, then if the extension has a field that is\n        // part of the _1st_ key on the subgraph owning the type, then this field is not considered\n        // external (yes, it's pretty damn random, and it's even worst in that even if the extension\n        // does _not_ have the \"field of the _1st_ key on the subraph owning the type\", then the\n        // query planner will still request it to the subgraph, generating an invalid query; but\n        // we ignore that here). Note however that because other subgraphs may have already been\n        // upgraded, we don't know which is the \"type owner\", so instead we look up at the first\n        // key of every other subgraph. It's not 100% what fed1 does, but we're in very-strange\n        // case territory in the first place, so this is probably good enough (that is, there is\n        // customer schema for which what we do here matter but not that I know of for which it's\n        // not good enough).\n        const typeInOtherSubgraphs = Array.from(this.objectTypeMap.get(type.name)!.entries()).filter(([subgraphName, _]) => subgraphName !== this.subgraph.name);\n        \n        for (const [otherSubgraphName, v] of typeInOtherSubgraphs) {\n          const [typeInOther, metadata] = v;\n          assert(isCompositeType(typeInOther), () => `Type ${type} is of kind ${type.kind} in ${this.subgraph.name} but ${typeInOther.kind} in ${otherSubgraphName}`);\n          const keysInOther = typeInOther.appliedDirectivesOf(metadata.keyDirective());\n          if (keysInOther.length === 0) {\n            continue;\n          }\n          collectTargetFields({\n            parentType: typeInOther,\n            directive: keysInOther[0],\n            includeInterfaceFieldsImplementations: false,\n            validate: false,\n          }).forEach((field) => {\n            if (field.parent !== typeInOther) {\n              return;\n            }\n            // Remark that we're iterating on the fields of _another_ subgraph that the one we're upgrading.\n            // We only consider \"top-level\" fields, the one of the type on which the key is, because that's what fed1 does.\n            const ownField = type.field(field.name);\n            if (!ownField) {\n              return;\n            }\n            const external = this.external(ownField);\n            if (external) {\n              this.addChange(new ExternalOnTypeExtensionRemoval(ownField.coordinate));\n              external.remove();\n            }\n          });\n        }\n      }\n    }\n  }\n\n  private removeTypeExtensions() {\n    for (const type of this.schema.types()) {\n      if (!isFederationTypeExtension(type) && !isRootTypeExtension(type)) {\n        continue;\n      }\n\n      this.addChange(new TypeExtensionRemoval(type.coordinate));\n      type.removeExtensions();\n    }\n  }\n\n  private removeUnusedExternals() {\n    for (const type of this.schema.types()) {\n      if (!isObjectType(type) && !isInterfaceType(type)) {\n        continue;\n      }\n      for (const field of type.fields()) {\n        if (this.metadata.isFieldExternal(field) && !this.metadata.isFieldUsed(field)) {\n          this.addChange(new UnusedExternalRemoval(field.coordinate));\n          field.remove();\n        }\n      }\n      if (!type.hasFields()) {\n        if (type.isReferenced()) {\n          this.addError(ERRORS.TYPE_WITH_ONLY_UNUSED_EXTERNAL.err(\n            `Type ${type} contains only external fields and all those fields are all unused (they do not appear in any @key, @provides or @requires).`,\n            { nodes: type.sourceAST },\n          ));\n        } else {\n          // The type only had unused externals, but it is also unreferenced in the subgraph. Unclear why\n          // it was there in the first place, but we can remove it and move on.\n          this.addChange(new TypeWithOnlyUnusedExternalRemoval(type.name));\n          type.remove();\n        }\n      }\n    }\n  }\n\n  private removeDirectivesOnInterface() {\n    for (const type of this.schema.interfaceTypes()) {\n      for (const application of type.appliedDirectivesOf(this.metadata.keyDirective())) {\n        this.addChange(new KeyOnInterfaceRemoval(type.name));\n        application.remove();\n      }\n      for (const field of type.fields()) {\n        for (const directive of [this.metadata.providesDirective(), this.metadata.requiresDirective()]) {\n          for (const application of field.appliedDirectivesOf(directive)) {\n            this.addChange(new ProvidesOrRequiresOnInterfaceFieldRemoval(field.coordinate, directive.name));\n            application.remove();\n          }\n        }\n      }\n    }\n  }\n\n  private removeProvidesOnNonComposite() {\n    for (const type of this.schema.objectTypes()) {\n      for (const field of type.fields()) {\n        if (isCompositeType(baseType(field.type!))) {\n          continue;\n        }\n        for (const application of field.appliedDirectivesOf(this.metadata.providesDirective())) {\n          this.addChange(new ProvidesOnNonCompositeRemoval(field.coordinate, field.type!.toString()));\n          application.remove();\n        }\n      }\n    }\n  }\n\n  private addShareable() {\n    const originalMetadata = this.originalSubgraph.metadata();\n    const keyDirective = this.metadata.keyDirective();\n    const shareableDirective = this.metadata.shareableDirective();\n    // We add shareable:\n    // - to every \"value type\" (in the fed1 sense of non-root type and non-entity) if it is used in any other subgraphs\n    // - to any (non-external) field of an entity/root-type that is not a key field and if another subgraphs resolve it (fully or partially through @provides)\n    for (const type of this.schema.objectTypes()) {\n      if(type.isSubscriptionRootType()) {\n        continue;\n      }\n      if (type.hasAppliedDirective(keyDirective) || (type.isRootType())) {\n        for (const field of type.fields()) {\n          // To know if the field is a \"key\" field which doesn't need shareable, we rely on whether the field is shareable in the original\n          // schema (the fed1 version), because as fed1 schema will have no @shareable, the key fields will effectively be the only field\n          // considered shareable.\n          if (originalMetadata.isFieldShareable(field)) {\n            continue;\n          }\n          \n          const entries = Array.from(this.objectTypeMap.get(type.name)!.entries());\n          const typeInOtherSubgraphs = entries.filter(([subgraphName, v]) => {\n            if (subgraphName === this.subgraph.name) {\n              return false;\n            }\n            const f = v[0].field(field.name);\n            return !!f && (!v[1].isFieldExternal(f) || v[1].isFieldPartiallyExternal(f));\n          });\n          \n          if (typeInOtherSubgraphs.length > 0 && !field.hasAppliedDirective(shareableDirective)) {\n            field.applyDirective(shareableDirective);\n            this.addChange(new ShareableFieldAddition(field.coordinate, typeInOtherSubgraphs.map(([s]) => s)));\n          }\n        }\n      } else {\n        const typeInOtherSubgraphs = Array.from(this.objectTypeMap.get(type.name)!.entries()).filter(([subgraphName, _]) => subgraphName !== this.subgraph.name);\n        if (typeInOtherSubgraphs.length > 0 && !type.hasAppliedDirective(shareableDirective)) {\n          type.applyDirective(shareableDirective);\n          this.addChange(new ShareableTypeAddition(type.coordinate, typeInOtherSubgraphs.map(([s]) => s)));\n        }\n      }\n    }\n  }\n\n  private removeTagOnExternal() {\n    const tagDirective = this.schema.directive('tag');\n    if (!tagDirective) {\n      return;\n    }\n\n    // Copying the list we iterate on as we remove in the loop.\n    for (const application of Array.from(tagDirective.applications())) {\n      const element = application.parent;\n      if (!(element instanceof FieldDefinition)) {\n        continue;\n      }\n      if (this.external(element)) {\n        const tagIsUsedInOtherDefinition = this.allSubgraphs\n          .map((s) => s.name === this.originalSubgraph.name ? undefined : getField(s.schema, element.parent.name, element.name))\n          .filter((f) => !(f && f.hasAppliedDirective('external')))\n          .some((f) => f && f.appliedDirectivesOf('tag').some((d) => valueEquals(application.arguments(), d.arguments())));\n\n        if (tagIsUsedInOtherDefinition) {\n          this.addChange(new RemovedTagOnExternal(application.toString(), element.coordinate));\n          application.remove();\n        }\n      }\n    }\n  }\n}\n", "import {\n  DefinitionNode,\n  DirectiveDefinitionNode,\n  DocumentNode,\n  GraphQLDirective,\n  GraphQLNamedType,\n  GraphQLObjectType,\n  GraphQLSchema,\n  isIntrospectionType,\n  isSpecifiedDirective,\n  isSpecifiedScalarType,\n  Kind,\n  OperationTypeDefinitionNode,\n  OperationTypeNode,\n  parse,\n  printSchema,\n  printType,\n  SchemaDefinitionNode,\n  SchemaExtensionNode,\n  TypeDefinitionNode,\n  TypeExtensionNode\n} from \"graphql\";\nimport { Maybe } from \"graphql/jsutils/Maybe\";\nimport { defaultRootName } from \"./definitions\";\n\nconst allOperationTypeNode = [ OperationTypeNode.QUERY, OperationTypeNode.MUTATION, OperationTypeNode.SUBSCRIPTION];\n\n/**\n * Converts a graphql-js schema into an equivalent AST document.\n *\n * Note importantly that this method is not, in general, equivalent to `parse(printSchema(schema))` in that\n * the returned AST will contain directive _applications_ when those can be found in AST nodes linked by\n * the elements of the provided schema.\n */\nexport function graphQLJSSchemaToAST(schema: GraphQLSchema): DocumentNode {\n  const types = Object.values(schema.getTypeMap()).filter((type) => !isIntrospectionType(type) && !isSpecifiedScalarType(type));\n  const directives = schema.getDirectives().filter((directive) => !isSpecifiedDirective(directive));\n\n  const schemaASTs = toNodeArray(graphQLJSSchemaToSchemaDefinitionAST(schema));\n  const typesASTs = types.map((type) => toNodeArray(graphQLJSNamedTypeToAST(type))).flat();\n  const directivesASTs = directives.map((directive) => graphQLJSDirectiveToAST(directive));\n\n  return {\n    kind: Kind.DOCUMENT,\n    definitions: [...schemaASTs, ...typesASTs, ...directivesASTs],\n  }\n}\n\nfunction toNodeArray<TDef extends DefinitionNode, TExt extends DefinitionNode>({\n  definition,\n  extensions,\n}: {\n  definition?: TDef,\n  extensions: readonly TExt[]}\n): readonly DefinitionNode[] {\n  return definition ? [definition, ...extensions] : extensions;\n}\n\nfunction maybe<T>(v: Maybe<T>): T | undefined {\n  return v ? v : undefined;\n}\n\n// Not exposing that one for now because it's a bit weirder API-wise (and take a `GraphqQLSchema` but only handle a specific subpart of it) .\nfunction graphQLJSSchemaToSchemaDefinitionAST(schema: GraphQLSchema): { definition?: SchemaDefinitionNode, extensions: readonly SchemaExtensionNode[] } {\n  if (schema.astNode || schema.extensionASTNodes.length > 0) {\n    return {\n      definition: maybe(schema.astNode),\n      extensions: schema.extensionASTNodes,\n    };\n  } else {\n    let definition: SchemaDefinitionNode | undefined = undefined;\n    if (hasNonDefaultRootNames(schema)) {\n      const operationTypes: OperationTypeDefinitionNode[] = [];\n      for (const operation of allOperationTypeNode) {\n        const type = schema.getRootType(operation);\n        if (type) {\n          operationTypes.push({\n            kind: Kind.OPERATION_TYPE_DEFINITION,\n            operation,\n            type: { kind: Kind.NAMED_TYPE, name: { kind: Kind.NAME, value : type.name } },\n          });\n        }\n      }\n      definition = {\n        kind: Kind.SCHEMA_DEFINITION,\n        description: schema.description ? {\n          kind: Kind.STRING,\n          value: schema.description,\n        } : undefined,\n        operationTypes,\n      }\n    }\n    return {\n      definition,\n      extensions: [],\n    };\n  }\n}\n\nfunction hasNonDefaultRootNames(schema: GraphQLSchema): boolean {\n  return allOperationTypeNode.some((t) => isNonDefaultRootName(schema.getRootType(t), t));\n}\n\nfunction isNonDefaultRootName(type: Maybe<GraphQLObjectType>, operation: OperationTypeNode): boolean {\n  return !!type && type.name !== defaultRootName(operation);\n}\n\nexport function graphQLJSNamedTypeToAST(type: GraphQLNamedType): { definition?: TypeDefinitionNode, extensions: readonly TypeExtensionNode[] }  {\n  if (type.astNode || type.extensionASTNodes.length > 0) {\n    return {\n      definition: maybe(type.astNode),\n      extensions: type.extensionASTNodes,\n    };\n  } else {\n    // While we could theoretically manually build the AST, it's just simpler to print the type and parse it back.\n    return {\n      definition: parse(printType(type)).definitions[0] as TypeDefinitionNode,\n      extensions: [],\n    };\n  }\n}\n\nexport function graphQLJSDirectiveToAST(directive: GraphQLDirective): DirectiveDefinitionNode {\n  if (directive.astNode) {\n    return directive.astNode;\n  } else {\n    // Note that the trick used for type of printing and parsing back is tad less convenient here because graphQL-js does not\n    // expose a direct way to print a directive alone. So we work-around it by built-in a \"fake\" schema with essentially just\n    // that directive.\n    const fakeSchema = new GraphQLSchema({\n      directives: [directive],\n      assumeValid: true,\n    });\n    const reparsed = parse(printSchema(fakeSchema));\n    return reparsed.definitions.find((def) => def.kind === Kind.DIRECTIVE_DEFINITION) as DirectiveDefinitionNode;\n  }\n}\n\n", "export * from './definitions';\nexport * from './buildSchema';\nexport * from './print';\nexport * from './values';\nexport * from './federation';\nexport * from './types';\nexport * from './operations';\nexport * from './utils';\nexport * from './debug';\nexport * from './specs/coreSpec';\nexport * from './specs/joinSpec';\nexport * from './specs/tagSpec';\nexport * from './specs/inaccessibleSpec';\nexport * from './specs/federationSpec';\nexport * from './specs/contextSpec';\nexport * from './supergraphs';\nexport * from './error';\nexport * from './schemaUpgrader';\nexport * from './suggestions';\nexport * from './graphQLJSSchemaToAST';\nexport * from './directiveAndTypeSpecification';\nexport { coreFeatureDefinitionIfKnown } from './knownCoreFeatures';\nexport * from './argumentCompositionStrategies';\nexport * from './specs/authenticatedSpec';\nexport * from './specs/requiresScopesSpec';\nexport * from './specs/policySpec';\nexport * from './specs/connectSpec';\nexport * from './specs/costSpec';\nexport * from './specs/cacheTagSpec';\n", "import { ERRORS } from '@apollo/federation-internals';\nimport {\n  DocumentNode,\n  FragmentDefinitionNode,\n  GraphQLSchema,\n  Kind,\n  OperationDefinitionNode,\n} from 'graphql';\n\ntype FragmentMap = { [fragmentName: string]: FragmentDefinitionNode };\n\nexport type OperationContext = {\n  schema: GraphQLSchema;\n  operation: OperationDefinitionNode;\n  fragments: FragmentMap;\n};\n\n// Adapted from buildExecutionContext in graphql-js\ninterface BuildOperationContextOptions {\n  schema: GraphQLSchema;\n  operationDocument: DocumentNode;\n  operationName?: string;\n}\n\nexport function buildOperationContext({\n  schema,\n  operationDocument,\n  operationName,\n}: BuildOperationContextOptions): OperationContext {\n  let operation: OperationDefinitionNode | undefined;\n  let operationCount = 0;\n  const fragments: {\n    [fragmentName: string]: FragmentDefinitionNode;\n  } = Object.create(null);\n  operationDocument.definitions.forEach(definition => {\n    switch (definition.kind) {\n      case Kind.OPERATION_DEFINITION:\n        operationCount++;\n        if (!operationName && operationCount > 1) {\n          throw ERRORS.INVALID_GRAPHQL.err(\n            'Must provide operation name if query contains ' +\n              'multiple operations.',\n          );\n        }\n        if (\n          !operationName ||\n          (definition.name && definition.name.value === operationName)\n        ) {\n          operation = definition;\n        }\n        break;\n      case Kind.FRAGMENT_DEFINITION:\n        fragments[definition.name.value] = definition;\n        break;\n    }\n  });\n  if (!operation) {\n    throw ERRORS.INVALID_GRAPHQL.err(\n      operationName ? `Unknown operation named \"${operationName}\".` : 'Must provide an operation.'\n    );\n  }\n\n  return {\n    schema,\n    operation,\n    fragments,\n  };\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }\n\nvar Stream = _interopDefault(require('stream'));\nvar http = _interopDefault(require('http'));\nvar Url = _interopDefault(require('url'));\nvar whatwgUrl = _interopDefault(require('whatwg-url'));\nvar https = _interopDefault(require('https'));\nvar zlib = _interopDefault(require('zlib'));\n\n// Based on https://github.com/tmpvar/jsdom/blob/aa85b2abf07766ff7bf5c1f6daafb3726f2f2db5/lib/jsdom/living/blob.js\n\n// fix for \"Readable\" isn't a named export issue\nconst Readable = Stream.Readable;\n\nconst BUFFER = Symbol('buffer');\nconst TYPE = Symbol('type');\n\nclass Blob {\n\tconstructor() {\n\t\tthis[TYPE] = '';\n\n\t\tconst blobParts = arguments[0];\n\t\tconst options = arguments[1];\n\n\t\tconst buffers = [];\n\t\tlet size = 0;\n\n\t\tif (blobParts) {\n\t\t\tconst a = blobParts;\n\t\t\tconst length = Number(a.length);\n\t\t\tfor (let i = 0; i < length; i++) {\n\t\t\t\tconst element = a[i];\n\t\t\t\tlet buffer;\n\t\t\t\tif (element instanceof Buffer) {\n\t\t\t\t\tbuffer = element;\n\t\t\t\t} else if (ArrayBuffer.isView(element)) {\n\t\t\t\t\tbuffer = Buffer.from(element.buffer, element.byteOffset, element.byteLength);\n\t\t\t\t} else if (element instanceof ArrayBuffer) {\n\t\t\t\t\tbuffer = Buffer.from(element);\n\t\t\t\t} else if (element instanceof Blob) {\n\t\t\t\t\tbuffer = element[BUFFER];\n\t\t\t\t} else {\n\t\t\t\t\tbuffer = Buffer.from(typeof element === 'string' ? element : String(element));\n\t\t\t\t}\n\t\t\t\tsize += buffer.length;\n\t\t\t\tbuffers.push(buffer);\n\t\t\t}\n\t\t}\n\n\t\tthis[BUFFER] = Buffer.concat(buffers);\n\n\t\tlet type = options && options.type !== undefined && String(options.type).toLowerCase();\n\t\tif (type && !/[^\\u0020-\\u007E]/.test(type)) {\n\t\t\tthis[TYPE] = type;\n\t\t}\n\t}\n\tget size() {\n\t\treturn this[BUFFER].length;\n\t}\n\tget type() {\n\t\treturn this[TYPE];\n\t}\n\ttext() {\n\t\treturn Promise.resolve(this[BUFFER].toString());\n\t}\n\tarrayBuffer() {\n\t\tconst buf = this[BUFFER];\n\t\tconst ab = buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\treturn Promise.resolve(ab);\n\t}\n\tstream() {\n\t\tconst readable = new Readable();\n\t\treadable._read = function () {};\n\t\treadable.push(this[BUFFER]);\n\t\treadable.push(null);\n\t\treturn readable;\n\t}\n\ttoString() {\n\t\treturn '[object Blob]';\n\t}\n\tslice() {\n\t\tconst size = this.size;\n\n\t\tconst start = arguments[0];\n\t\tconst end = arguments[1];\n\t\tlet relativeStart, relativeEnd;\n\t\tif (start === undefined) {\n\t\t\trelativeStart = 0;\n\t\t} else if (start < 0) {\n\t\t\trelativeStart = Math.max(size + start, 0);\n\t\t} else {\n\t\t\trelativeStart = Math.min(start, size);\n\t\t}\n\t\tif (end === undefined) {\n\t\t\trelativeEnd = size;\n\t\t} else if (end < 0) {\n\t\t\trelativeEnd = Math.max(size + end, 0);\n\t\t} else {\n\t\t\trelativeEnd = Math.min(end, size);\n\t\t}\n\t\tconst span = Math.max(relativeEnd - relativeStart, 0);\n\n\t\tconst buffer = this[BUFFER];\n\t\tconst slicedBuffer = buffer.slice(relativeStart, relativeStart + span);\n\t\tconst blob = new Blob([], { type: arguments[2] });\n\t\tblob[BUFFER] = slicedBuffer;\n\t\treturn blob;\n\t}\n}\n\nObject.defineProperties(Blob.prototype, {\n\tsize: { enumerable: true },\n\ttype: { enumerable: true },\n\tslice: { enumerable: true }\n});\n\nObject.defineProperty(Blob.prototype, Symbol.toStringTag, {\n\tvalue: 'Blob',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * fetch-error.js\n *\n * FetchError interface for operational errors\n */\n\n/**\n * Create FetchError instance\n *\n * @param   String      message      Error message for human\n * @param   String      type         Error type for machine\n * @param   String      systemError  For Node.js system error\n * @return  FetchError\n */\nfunction FetchError(message, type, systemError) {\n  Error.call(this, message);\n\n  this.message = message;\n  this.type = type;\n\n  // when err.type is `system`, err.code contains system error code\n  if (systemError) {\n    this.code = this.errno = systemError.code;\n  }\n\n  // hide custom error implementation details from end-users\n  Error.captureStackTrace(this, this.constructor);\n}\n\nFetchError.prototype = Object.create(Error.prototype);\nFetchError.prototype.constructor = FetchError;\nFetchError.prototype.name = 'FetchError';\n\nlet convert;\ntry {\n\tconvert = require('encoding').convert;\n} catch (e) {}\n\nconst INTERNALS = Symbol('Body internals');\n\n// fix an issue where \"PassThrough\" isn't a named export for node <10\nconst PassThrough = Stream.PassThrough;\n\n/**\n * Body mixin\n *\n * Ref: https://fetch.spec.whatwg.org/#body\n *\n * @param   Stream  body  Readable stream\n * @param   Object  opts  Response options\n * @return  Void\n */\nfunction Body(body) {\n\tvar _this = this;\n\n\tvar _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n\t    _ref$size = _ref.size;\n\n\tlet size = _ref$size === undefined ? 0 : _ref$size;\n\tvar _ref$timeout = _ref.timeout;\n\tlet timeout = _ref$timeout === undefined ? 0 : _ref$timeout;\n\n\tif (body == null) {\n\t\t// body is undefined or null\n\t\tbody = null;\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\tbody = Buffer.from(body.toString());\n\t} else if (isBlob(body)) ; else if (Buffer.isBuffer(body)) ; else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\tbody = Buffer.from(body);\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\tbody = Buffer.from(body.buffer, body.byteOffset, body.byteLength);\n\t} else if (body instanceof Stream) ; else {\n\t\t// none of the above\n\t\t// coerce to string then buffer\n\t\tbody = Buffer.from(String(body));\n\t}\n\tthis[INTERNALS] = {\n\t\tbody,\n\t\tdisturbed: false,\n\t\terror: null\n\t};\n\tthis.size = size;\n\tthis.timeout = timeout;\n\n\tif (body instanceof Stream) {\n\t\tbody.on('error', function (err) {\n\t\t\tconst error = err.name === 'AbortError' ? err : new FetchError(`Invalid response body while trying to fetch ${_this.url}: ${err.message}`, 'system', err);\n\t\t\t_this[INTERNALS].error = error;\n\t\t});\n\t}\n}\n\nBody.prototype = {\n\tget body() {\n\t\treturn this[INTERNALS].body;\n\t},\n\n\tget bodyUsed() {\n\t\treturn this[INTERNALS].disturbed;\n\t},\n\n\t/**\n  * Decode response as ArrayBuffer\n  *\n  * @return  Promise\n  */\n\tarrayBuffer() {\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength);\n\t\t});\n\t},\n\n\t/**\n  * Return raw response as Blob\n  *\n  * @return Promise\n  */\n\tblob() {\n\t\tlet ct = this.headers && this.headers.get('content-type') || '';\n\t\treturn consumeBody.call(this).then(function (buf) {\n\t\t\treturn Object.assign(\n\t\t\t// Prevent copying\n\t\t\tnew Blob([], {\n\t\t\t\ttype: ct.toLowerCase()\n\t\t\t}), {\n\t\t\t\t[BUFFER]: buf\n\t\t\t});\n\t\t});\n\t},\n\n\t/**\n  * Decode response as json\n  *\n  * @return  Promise\n  */\n\tjson() {\n\t\tvar _this2 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\ttry {\n\t\t\t\treturn JSON.parse(buffer.toString());\n\t\t\t} catch (err) {\n\t\t\t\treturn Body.Promise.reject(new FetchError(`invalid json response body at ${_this2.url} reason: ${err.message}`, 'invalid-json'));\n\t\t\t}\n\t\t});\n\t},\n\n\t/**\n  * Decode response as text\n  *\n  * @return  Promise\n  */\n\ttext() {\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn buffer.toString();\n\t\t});\n\t},\n\n\t/**\n  * Decode response as buffer (non-spec api)\n  *\n  * @return  Promise\n  */\n\tbuffer() {\n\t\treturn consumeBody.call(this);\n\t},\n\n\t/**\n  * Decode response as text, while automatically detecting the encoding and\n  * trying to decode to UTF-8 (non-spec api)\n  *\n  * @return  Promise\n  */\n\ttextConverted() {\n\t\tvar _this3 = this;\n\n\t\treturn consumeBody.call(this).then(function (buffer) {\n\t\t\treturn convertBody(buffer, _this3.headers);\n\t\t});\n\t}\n};\n\n// In browsers, all properties are enumerable.\nObject.defineProperties(Body.prototype, {\n\tbody: { enumerable: true },\n\tbodyUsed: { enumerable: true },\n\tarrayBuffer: { enumerable: true },\n\tblob: { enumerable: true },\n\tjson: { enumerable: true },\n\ttext: { enumerable: true }\n});\n\nBody.mixIn = function (proto) {\n\tfor (const name of Object.getOwnPropertyNames(Body.prototype)) {\n\t\t// istanbul ignore else: future proof\n\t\tif (!(name in proto)) {\n\t\t\tconst desc = Object.getOwnPropertyDescriptor(Body.prototype, name);\n\t\t\tObject.defineProperty(proto, name, desc);\n\t\t}\n\t}\n};\n\n/**\n * Consume and convert an entire Body to a Buffer.\n *\n * Ref: https://fetch.spec.whatwg.org/#concept-body-consume-body\n *\n * @return  Promise\n */\nfunction consumeBody() {\n\tvar _this4 = this;\n\n\tif (this[INTERNALS].disturbed) {\n\t\treturn Body.Promise.reject(new TypeError(`body used already for: ${this.url}`));\n\t}\n\n\tthis[INTERNALS].disturbed = true;\n\n\tif (this[INTERNALS].error) {\n\t\treturn Body.Promise.reject(this[INTERNALS].error);\n\t}\n\n\tlet body = this.body;\n\n\t// body is null\n\tif (body === null) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is blob\n\tif (isBlob(body)) {\n\t\tbody = body.stream();\n\t}\n\n\t// body is buffer\n\tif (Buffer.isBuffer(body)) {\n\t\treturn Body.Promise.resolve(body);\n\t}\n\n\t// istanbul ignore if: should never happen\n\tif (!(body instanceof Stream)) {\n\t\treturn Body.Promise.resolve(Buffer.alloc(0));\n\t}\n\n\t// body is stream\n\t// get ready to actually consume the body\n\tlet accum = [];\n\tlet accumBytes = 0;\n\tlet abort = false;\n\n\treturn new Body.Promise(function (resolve, reject) {\n\t\tlet resTimeout;\n\n\t\t// allow timeout on slow response body\n\t\tif (_this4.timeout) {\n\t\t\tresTimeout = setTimeout(function () {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`Response timeout while trying to fetch ${_this4.url} (over ${_this4.timeout}ms)`, 'body-timeout'));\n\t\t\t}, _this4.timeout);\n\t\t}\n\n\t\t// handle stream errors\n\t\tbody.on('error', function (err) {\n\t\t\tif (err.name === 'AbortError') {\n\t\t\t\t// if the request was aborted, reject with this Error\n\t\t\t\tabort = true;\n\t\t\t\treject(err);\n\t\t\t} else {\n\t\t\t\t// other errors, such as incorrect content-encoding\n\t\t\t\treject(new FetchError(`Invalid response body while trying to fetch ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\n\t\tbody.on('data', function (chunk) {\n\t\t\tif (abort || chunk === null) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (_this4.size && accumBytes + chunk.length > _this4.size) {\n\t\t\t\tabort = true;\n\t\t\t\treject(new FetchError(`content size at ${_this4.url} over limit: ${_this4.size}`, 'max-size'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\taccumBytes += chunk.length;\n\t\t\taccum.push(chunk);\n\t\t});\n\n\t\tbody.on('end', function () {\n\t\t\tif (abort) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tclearTimeout(resTimeout);\n\n\t\t\ttry {\n\t\t\t\tresolve(Buffer.concat(accum, accumBytes));\n\t\t\t} catch (err) {\n\t\t\t\t// handle streams that have accumulated too much data (issue #414)\n\t\t\t\treject(new FetchError(`Could not create Buffer from response body for ${_this4.url}: ${err.message}`, 'system', err));\n\t\t\t}\n\t\t});\n\t});\n}\n\n/**\n * Detect buffer encoding and convert to target encoding\n * ref: http://www.w3.org/TR/2011/WD-html5-20110113/parsing.html#determining-the-character-encoding\n *\n * @param   Buffer  buffer    Incoming buffer\n * @param   String  encoding  Target encoding\n * @return  String\n */\nfunction convertBody(buffer, headers) {\n\tif (typeof convert !== 'function') {\n\t\tthrow new Error('The package `encoding` must be installed to use the textConverted() function');\n\t}\n\n\tconst ct = headers.get('content-type');\n\tlet charset = 'utf-8';\n\tlet res, str;\n\n\t// header\n\tif (ct) {\n\t\tres = /charset=([^;]*)/i.exec(ct);\n\t}\n\n\t// no charset in content type, peek at response body for at most 1024 bytes\n\tstr = buffer.slice(0, 1024).toString();\n\n\t// html5\n\tif (!res && str) {\n\t\tres = /<meta.+?charset=(['\"])(.+?)\\1/i.exec(str);\n\t}\n\n\t// html4\n\tif (!res && str) {\n\t\tres = /<meta[\\s]+?http-equiv=(['\"])content-type\\1[\\s]+?content=(['\"])(.+?)\\2/i.exec(str);\n\t\tif (!res) {\n\t\t\tres = /<meta[\\s]+?content=(['\"])(.+?)\\1[\\s]+?http-equiv=(['\"])content-type\\3/i.exec(str);\n\t\t\tif (res) {\n\t\t\t\tres.pop(); // drop last quote\n\t\t\t}\n\t\t}\n\n\t\tif (res) {\n\t\t\tres = /charset=(.*)/i.exec(res.pop());\n\t\t}\n\t}\n\n\t// xml\n\tif (!res && str) {\n\t\tres = /<\\?xml.+?encoding=(['\"])(.+?)\\1/i.exec(str);\n\t}\n\n\t// found charset\n\tif (res) {\n\t\tcharset = res.pop();\n\n\t\t// prevent decode issues when sites use incorrect encoding\n\t\t// ref: https://hsivonen.fi/encoding-menu/\n\t\tif (charset === 'gb2312' || charset === 'gbk') {\n\t\t\tcharset = 'gb18030';\n\t\t}\n\t}\n\n\t// turn raw buffers into a single utf-8 buffer\n\treturn convert(buffer, 'UTF-8', charset).toString();\n}\n\n/**\n * Detect a URLSearchParams object\n * ref: https://github.com/bitinn/node-fetch/issues/296#issuecomment-307598143\n *\n * @param   Object  obj     Object to detect by type or brand\n * @return  String\n */\nfunction isURLSearchParams(obj) {\n\t// Duck-typing as a necessary condition.\n\tif (typeof obj !== 'object' || typeof obj.append !== 'function' || typeof obj.delete !== 'function' || typeof obj.get !== 'function' || typeof obj.getAll !== 'function' || typeof obj.has !== 'function' || typeof obj.set !== 'function') {\n\t\treturn false;\n\t}\n\n\t// Brand-checking and more duck-typing as optional condition.\n\treturn obj.constructor.name === 'URLSearchParams' || Object.prototype.toString.call(obj) === '[object URLSearchParams]' || typeof obj.sort === 'function';\n}\n\n/**\n * Check if `obj` is a W3C `Blob` object (which `File` inherits from)\n * @param  {*} obj\n * @return {boolean}\n */\nfunction isBlob(obj) {\n\treturn typeof obj === 'object' && typeof obj.arrayBuffer === 'function' && typeof obj.type === 'string' && typeof obj.stream === 'function' && typeof obj.constructor === 'function' && typeof obj.constructor.name === 'string' && /^(Blob|File)$/.test(obj.constructor.name) && /^(Blob|File)$/.test(obj[Symbol.toStringTag]);\n}\n\n/**\n * Clone body given Res/Req instance\n *\n * @param   Mixed  instance  Response or Request instance\n * @return  Mixed\n */\nfunction clone(instance) {\n\tlet p1, p2;\n\tlet body = instance.body;\n\n\t// don't allow cloning a used body\n\tif (instance.bodyUsed) {\n\t\tthrow new Error('cannot clone body after it is used');\n\t}\n\n\t// check that body is a stream and not form-data object\n\t// note: we can't clone the form-data object without having it as a dependency\n\tif (body instanceof Stream && typeof body.getBoundary !== 'function') {\n\t\t// tee instance body\n\t\tp1 = new PassThrough();\n\t\tp2 = new PassThrough();\n\t\tbody.pipe(p1);\n\t\tbody.pipe(p2);\n\t\t// set instance body to teed body and return the other teed body\n\t\tinstance[INTERNALS].body = p1;\n\t\tbody = p2;\n\t}\n\n\treturn body;\n}\n\n/**\n * Performs the operation \"extract a `Content-Type` value from |object|\" as\n * specified in the specification:\n * https://fetch.spec.whatwg.org/#concept-bodyinit-extract\n *\n * This function assumes that instance.body is present.\n *\n * @param   Mixed  instance  Any options.body input\n */\nfunction extractContentType(body) {\n\tif (body === null) {\n\t\t// body is null\n\t\treturn null;\n\t} else if (typeof body === 'string') {\n\t\t// body is string\n\t\treturn 'text/plain;charset=UTF-8';\n\t} else if (isURLSearchParams(body)) {\n\t\t// body is a URLSearchParams\n\t\treturn 'application/x-www-form-urlencoded;charset=UTF-8';\n\t} else if (isBlob(body)) {\n\t\t// body is blob\n\t\treturn body.type || null;\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\treturn null;\n\t} else if (Object.prototype.toString.call(body) === '[object ArrayBuffer]') {\n\t\t// body is ArrayBuffer\n\t\treturn null;\n\t} else if (ArrayBuffer.isView(body)) {\n\t\t// body is ArrayBufferView\n\t\treturn null;\n\t} else if (typeof body.getBoundary === 'function') {\n\t\t// detect form data input from form-data module\n\t\treturn `multipart/form-data;boundary=${body.getBoundary()}`;\n\t} else if (body instanceof Stream) {\n\t\t// body is stream\n\t\t// can't really do much about this\n\t\treturn null;\n\t} else {\n\t\t// Body constructor defaults other things to string\n\t\treturn 'text/plain;charset=UTF-8';\n\t}\n}\n\n/**\n * The Fetch Standard treats this as if \"total bytes\" is a property on the body.\n * For us, we have to explicitly get it with a function.\n *\n * ref: https://fetch.spec.whatwg.org/#concept-body-total-bytes\n *\n * @param   Body    instance   Instance of Body\n * @return  Number?            Number of bytes, or null if not possible\n */\nfunction getTotalBytes(instance) {\n\tconst body = instance.body;\n\n\n\tif (body === null) {\n\t\t// body is null\n\t\treturn 0;\n\t} else if (isBlob(body)) {\n\t\treturn body.size;\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\treturn body.length;\n\t} else if (body && typeof body.getLengthSync === 'function') {\n\t\t// detect form data input from form-data module\n\t\tif (body._lengthRetrievers && body._lengthRetrievers.length == 0 || // 1.x\n\t\tbody.hasKnownLength && body.hasKnownLength()) {\n\t\t\t// 2.x\n\t\t\treturn body.getLengthSync();\n\t\t}\n\t\treturn null;\n\t} else {\n\t\t// body is stream\n\t\treturn null;\n\t}\n}\n\n/**\n * Write a Body to a Node.js WritableStream (e.g. http.Request) object.\n *\n * @param   Body    instance   Instance of Body\n * @return  Void\n */\nfunction writeToStream(dest, instance) {\n\tconst body = instance.body;\n\n\n\tif (body === null) {\n\t\t// body is null\n\t\tdest.end();\n\t} else if (isBlob(body)) {\n\t\tbody.stream().pipe(dest);\n\t} else if (Buffer.isBuffer(body)) {\n\t\t// body is buffer\n\t\tdest.write(body);\n\t\tdest.end();\n\t} else {\n\t\t// body is stream\n\t\tbody.pipe(dest);\n\t}\n}\n\n// expose Promise\nBody.Promise = global.Promise;\n\n/**\n * headers.js\n *\n * Headers class offers convenient helpers\n */\n\nconst invalidTokenRegex = /[^\\^_`a-zA-Z\\-0-9!#$%&'*+.|~]/;\nconst invalidHeaderCharRegex = /[^\\t\\x20-\\x7e\\x80-\\xff]/;\n\nfunction validateName(name) {\n\tname = `${name}`;\n\tif (invalidTokenRegex.test(name) || name === '') {\n\t\tthrow new TypeError(`${name} is not a legal HTTP header name`);\n\t}\n}\n\nfunction validateValue(value) {\n\tvalue = `${value}`;\n\tif (invalidHeaderCharRegex.test(value)) {\n\t\tthrow new TypeError(`${value} is not a legal HTTP header value`);\n\t}\n}\n\n/**\n * Find the key in the map object given a header name.\n *\n * Returns undefined if not found.\n *\n * @param   String  name  Header name\n * @return  String|Undefined\n */\nfunction find(map, name) {\n\tname = name.toLowerCase();\n\tfor (const key in map) {\n\t\tif (key.toLowerCase() === name) {\n\t\t\treturn key;\n\t\t}\n\t}\n\treturn undefined;\n}\n\nconst MAP = Symbol('map');\nclass Headers {\n\t/**\n  * Headers class\n  *\n  * @param   Object  headers  Response headers\n  * @return  Void\n  */\n\tconstructor() {\n\t\tlet init = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : undefined;\n\n\t\tthis[MAP] = Object.create(null);\n\n\t\tif (init instanceof Headers) {\n\t\t\tconst rawHeaders = init.raw();\n\t\t\tconst headerNames = Object.keys(rawHeaders);\n\n\t\t\tfor (const headerName of headerNames) {\n\t\t\t\tfor (const value of rawHeaders[headerName]) {\n\t\t\t\t\tthis.append(headerName, value);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// We don't worry about converting prop to ByteString here as append()\n\t\t// will handle it.\n\t\tif (init == null) ; else if (typeof init === 'object') {\n\t\t\tconst method = init[Symbol.iterator];\n\t\t\tif (method != null) {\n\t\t\t\tif (typeof method !== 'function') {\n\t\t\t\t\tthrow new TypeError('Header pairs must be iterable');\n\t\t\t\t}\n\n\t\t\t\t// sequence<sequence<ByteString>>\n\t\t\t\t// Note: per spec we have to first exhaust the lists then process them\n\t\t\t\tconst pairs = [];\n\t\t\t\tfor (const pair of init) {\n\t\t\t\t\tif (typeof pair !== 'object' || typeof pair[Symbol.iterator] !== 'function') {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be iterable');\n\t\t\t\t\t}\n\t\t\t\t\tpairs.push(Array.from(pair));\n\t\t\t\t}\n\n\t\t\t\tfor (const pair of pairs) {\n\t\t\t\t\tif (pair.length !== 2) {\n\t\t\t\t\t\tthrow new TypeError('Each header pair must be a name/value tuple');\n\t\t\t\t\t}\n\t\t\t\t\tthis.append(pair[0], pair[1]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// record<ByteString, ByteString>\n\t\t\t\tfor (const key of Object.keys(init)) {\n\t\t\t\t\tconst value = init[key];\n\t\t\t\t\tthis.append(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tthrow new TypeError('Provided initializer must be an object');\n\t\t}\n\t}\n\n\t/**\n  * Return combined header value given name\n  *\n  * @param   String  name  Header name\n  * @return  Mixed\n  */\n\tget(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key === undefined) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this[MAP][key].join(', ');\n\t}\n\n\t/**\n  * Iterate over all headers\n  *\n  * @param   Function  callback  Executed for each item with parameters (value, name, thisArg)\n  * @param   Boolean   thisArg   `this` context for callback function\n  * @return  Void\n  */\n\tforEach(callback) {\n\t\tlet thisArg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : undefined;\n\n\t\tlet pairs = getHeaders(this);\n\t\tlet i = 0;\n\t\twhile (i < pairs.length) {\n\t\t\tvar _pairs$i = pairs[i];\n\t\t\tconst name = _pairs$i[0],\n\t\t\t      value = _pairs$i[1];\n\n\t\t\tcallback.call(thisArg, value, name, this);\n\t\t\tpairs = getHeaders(this);\n\t\t\ti++;\n\t\t}\n\t}\n\n\t/**\n  * Overwrite header values given name\n  *\n  * @param   String  name   Header name\n  * @param   String  value  Header value\n  * @return  Void\n  */\n\tset(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tthis[MAP][key !== undefined ? key : name] = [value];\n\t}\n\n\t/**\n  * Append a value onto existing header\n  *\n  * @param   String  name   Header name\n  * @param   String  value  Header value\n  * @return  Void\n  */\n\tappend(name, value) {\n\t\tname = `${name}`;\n\t\tvalue = `${value}`;\n\t\tvalidateName(name);\n\t\tvalidateValue(value);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tthis[MAP][key].push(value);\n\t\t} else {\n\t\t\tthis[MAP][name] = [value];\n\t\t}\n\t}\n\n\t/**\n  * Check for header name existence\n  *\n  * @param   String   name  Header name\n  * @return  Boolean\n  */\n\thas(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\treturn find(this[MAP], name) !== undefined;\n\t}\n\n\t/**\n  * Delete all header values given name\n  *\n  * @param   String  name  Header name\n  * @return  Void\n  */\n\tdelete(name) {\n\t\tname = `${name}`;\n\t\tvalidateName(name);\n\t\tconst key = find(this[MAP], name);\n\t\tif (key !== undefined) {\n\t\t\tdelete this[MAP][key];\n\t\t}\n\t}\n\n\t/**\n  * Return raw headers (non-spec api)\n  *\n  * @return  Object\n  */\n\traw() {\n\t\treturn this[MAP];\n\t}\n\n\t/**\n  * Get an iterator on keys.\n  *\n  * @return  Iterator\n  */\n\tkeys() {\n\t\treturn createHeadersIterator(this, 'key');\n\t}\n\n\t/**\n  * Get an iterator on values.\n  *\n  * @return  Iterator\n  */\n\tvalues() {\n\t\treturn createHeadersIterator(this, 'value');\n\t}\n\n\t/**\n  * Get an iterator on entries.\n  *\n  * This is the default iterator of the Headers object.\n  *\n  * @return  Iterator\n  */\n\t[Symbol.iterator]() {\n\t\treturn createHeadersIterator(this, 'key+value');\n\t}\n}\nHeaders.prototype.entries = Headers.prototype[Symbol.iterator];\n\nObject.defineProperty(Headers.prototype, Symbol.toStringTag, {\n\tvalue: 'Headers',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Headers.prototype, {\n\tget: { enumerable: true },\n\tforEach: { enumerable: true },\n\tset: { enumerable: true },\n\tappend: { enumerable: true },\n\thas: { enumerable: true },\n\tdelete: { enumerable: true },\n\tkeys: { enumerable: true },\n\tvalues: { enumerable: true },\n\tentries: { enumerable: true }\n});\n\nfunction getHeaders(headers) {\n\tlet kind = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'key+value';\n\n\tconst keys = Object.keys(headers[MAP]).sort();\n\treturn keys.map(kind === 'key' ? function (k) {\n\t\treturn k.toLowerCase();\n\t} : kind === 'value' ? function (k) {\n\t\treturn headers[MAP][k].join(', ');\n\t} : function (k) {\n\t\treturn [k.toLowerCase(), headers[MAP][k].join(', ')];\n\t});\n}\n\nconst INTERNAL = Symbol('internal');\n\nfunction createHeadersIterator(target, kind) {\n\tconst iterator = Object.create(HeadersIteratorPrototype);\n\titerator[INTERNAL] = {\n\t\ttarget,\n\t\tkind,\n\t\tindex: 0\n\t};\n\treturn iterator;\n}\n\nconst HeadersIteratorPrototype = Object.setPrototypeOf({\n\tnext() {\n\t\t// istanbul ignore if\n\t\tif (!this || Object.getPrototypeOf(this) !== HeadersIteratorPrototype) {\n\t\t\tthrow new TypeError('Value of `this` is not a HeadersIterator');\n\t\t}\n\n\t\tvar _INTERNAL = this[INTERNAL];\n\t\tconst target = _INTERNAL.target,\n\t\t      kind = _INTERNAL.kind,\n\t\t      index = _INTERNAL.index;\n\n\t\tconst values = getHeaders(target, kind);\n\t\tconst len = values.length;\n\t\tif (index >= len) {\n\t\t\treturn {\n\t\t\t\tvalue: undefined,\n\t\t\t\tdone: true\n\t\t\t};\n\t\t}\n\n\t\tthis[INTERNAL].index = index + 1;\n\n\t\treturn {\n\t\t\tvalue: values[index],\n\t\t\tdone: false\n\t\t};\n\t}\n}, Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())));\n\nObject.defineProperty(HeadersIteratorPrototype, Symbol.toStringTag, {\n\tvalue: 'HeadersIterator',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\n/**\n * Export the Headers object in a form that Node.js can consume.\n *\n * @param   Headers  headers\n * @return  Object\n */\nfunction exportNodeCompatibleHeaders(headers) {\n\tconst obj = Object.assign({ __proto__: null }, headers[MAP]);\n\n\t// http.request() only supports string as Host header. This hack makes\n\t// specifying custom Host header possible.\n\tconst hostHeaderKey = find(headers[MAP], 'Host');\n\tif (hostHeaderKey !== undefined) {\n\t\tobj[hostHeaderKey] = obj[hostHeaderKey][0];\n\t}\n\n\treturn obj;\n}\n\n/**\n * Create a Headers object from an object of headers, ignoring those that do\n * not conform to HTTP grammar productions.\n *\n * @param   Object  obj  Object of headers\n * @return  Headers\n */\nfunction createHeadersLenient(obj) {\n\tconst headers = new Headers();\n\tfor (const name of Object.keys(obj)) {\n\t\tif (invalidTokenRegex.test(name)) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (Array.isArray(obj[name])) {\n\t\t\tfor (const val of obj[name]) {\n\t\t\t\tif (invalidHeaderCharRegex.test(val)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (headers[MAP][name] === undefined) {\n\t\t\t\t\theaders[MAP][name] = [val];\n\t\t\t\t} else {\n\t\t\t\t\theaders[MAP][name].push(val);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (!invalidHeaderCharRegex.test(obj[name])) {\n\t\t\theaders[MAP][name] = [obj[name]];\n\t\t}\n\t}\n\treturn headers;\n}\n\nconst INTERNALS$1 = Symbol('Response internals');\n\n// fix an issue where \"STATUS_CODES\" aren't a named export for node <10\nconst STATUS_CODES = http.STATUS_CODES;\n\n/**\n * Response class\n *\n * @param   Stream  body  Readable stream\n * @param   Object  opts  Response options\n * @return  Void\n */\nclass Response {\n\tconstructor() {\n\t\tlet body = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n\t\tlet opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tBody.call(this, body, opts);\n\n\t\tconst status = opts.status || 200;\n\t\tconst headers = new Headers(opts.headers);\n\n\t\tif (body != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(body);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tthis[INTERNALS$1] = {\n\t\t\turl: opts.url,\n\t\t\tstatus,\n\t\t\tstatusText: opts.statusText || STATUS_CODES[status],\n\t\t\theaders,\n\t\t\tcounter: opts.counter\n\t\t};\n\t}\n\n\tget url() {\n\t\treturn this[INTERNALS$1].url || '';\n\t}\n\n\tget status() {\n\t\treturn this[INTERNALS$1].status;\n\t}\n\n\t/**\n  * Convenience property representing if the request ended normally\n  */\n\tget ok() {\n\t\treturn this[INTERNALS$1].status >= 200 && this[INTERNALS$1].status < 300;\n\t}\n\n\tget redirected() {\n\t\treturn this[INTERNALS$1].counter > 0;\n\t}\n\n\tget statusText() {\n\t\treturn this[INTERNALS$1].statusText;\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$1].headers;\n\t}\n\n\t/**\n  * Clone this response\n  *\n  * @return  Response\n  */\n\tclone() {\n\t\treturn new Response(clone(this), {\n\t\t\turl: this.url,\n\t\t\tstatus: this.status,\n\t\t\tstatusText: this.statusText,\n\t\t\theaders: this.headers,\n\t\t\tok: this.ok,\n\t\t\tredirected: this.redirected\n\t\t});\n\t}\n}\n\nBody.mixIn(Response.prototype);\n\nObject.defineProperties(Response.prototype, {\n\turl: { enumerable: true },\n\tstatus: { enumerable: true },\n\tok: { enumerable: true },\n\tredirected: { enumerable: true },\n\tstatusText: { enumerable: true },\n\theaders: { enumerable: true },\n\tclone: { enumerable: true }\n});\n\nObject.defineProperty(Response.prototype, Symbol.toStringTag, {\n\tvalue: 'Response',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nconst INTERNALS$2 = Symbol('Request internals');\nconst URL = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"format\", \"parse\" aren't a named export for node <10\nconst parse_url = Url.parse;\nconst format_url = Url.format;\n\n/**\n * Wrapper around `new URL` to handle arbitrary URLs\n *\n * @param  {string} urlStr\n * @return {void}\n */\nfunction parseURL(urlStr) {\n\t/*\n \tCheck whether the URL is absolute or not\n \t\tScheme: https://tools.ietf.org/html/rfc3986#section-3.1\n \tAbsolute URL: https://tools.ietf.org/html/rfc3986#section-4.3\n */\n\tif (/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.exec(urlStr)) {\n\t\turlStr = new URL(urlStr).toString();\n\t}\n\n\t// Fallback to old implementation for arbitrary URLs\n\treturn parse_url(urlStr);\n}\n\nconst streamDestructionSupported = 'destroy' in Stream.Readable.prototype;\n\n/**\n * Check if a value is an instance of Request.\n *\n * @param   Mixed   input\n * @return  Boolean\n */\nfunction isRequest(input) {\n\treturn typeof input === 'object' && typeof input[INTERNALS$2] === 'object';\n}\n\nfunction isAbortSignal(signal) {\n\tconst proto = signal && typeof signal === 'object' && Object.getPrototypeOf(signal);\n\treturn !!(proto && proto.constructor.name === 'AbortSignal');\n}\n\n/**\n * Request class\n *\n * @param   Mixed   input  Url or Request instance\n * @param   Object  init   Custom options\n * @return  Void\n */\nclass Request {\n\tconstructor(input) {\n\t\tlet init = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t\tlet parsedURL;\n\n\t\t// normalize input\n\t\tif (!isRequest(input)) {\n\t\t\tif (input && input.href) {\n\t\t\t\t// in order to support Node.js' Url objects; though WHATWG's URL objects\n\t\t\t\t// will fall into this branch also (since their `toString()` will return\n\t\t\t\t// `href` property anyway)\n\t\t\t\tparsedURL = parseURL(input.href);\n\t\t\t} else {\n\t\t\t\t// coerce input to a string before attempting to parse\n\t\t\t\tparsedURL = parseURL(`${input}`);\n\t\t\t}\n\t\t\tinput = {};\n\t\t} else {\n\t\t\tparsedURL = parseURL(input.url);\n\t\t}\n\n\t\tlet method = init.method || input.method || 'GET';\n\t\tmethod = method.toUpperCase();\n\n\t\tif ((init.body != null || isRequest(input) && input.body !== null) && (method === 'GET' || method === 'HEAD')) {\n\t\t\tthrow new TypeError('Request with GET/HEAD method cannot have body');\n\t\t}\n\n\t\tlet inputBody = init.body != null ? init.body : isRequest(input) && input.body !== null ? clone(input) : null;\n\n\t\tBody.call(this, inputBody, {\n\t\t\ttimeout: init.timeout || input.timeout || 0,\n\t\t\tsize: init.size || input.size || 0\n\t\t});\n\n\t\tconst headers = new Headers(init.headers || input.headers || {});\n\n\t\tif (inputBody != null && !headers.has('Content-Type')) {\n\t\t\tconst contentType = extractContentType(inputBody);\n\t\t\tif (contentType) {\n\t\t\t\theaders.append('Content-Type', contentType);\n\t\t\t}\n\t\t}\n\n\t\tlet signal = isRequest(input) ? input.signal : null;\n\t\tif ('signal' in init) signal = init.signal;\n\n\t\tif (signal != null && !isAbortSignal(signal)) {\n\t\t\tthrow new TypeError('Expected signal to be an instanceof AbortSignal');\n\t\t}\n\n\t\tthis[INTERNALS$2] = {\n\t\t\tmethod,\n\t\t\tredirect: init.redirect || input.redirect || 'follow',\n\t\t\theaders,\n\t\t\tparsedURL,\n\t\t\tsignal\n\t\t};\n\n\t\t// node-fetch-only options\n\t\tthis.follow = init.follow !== undefined ? init.follow : input.follow !== undefined ? input.follow : 20;\n\t\tthis.compress = init.compress !== undefined ? init.compress : input.compress !== undefined ? input.compress : true;\n\t\tthis.counter = init.counter || input.counter || 0;\n\t\tthis.agent = init.agent || input.agent;\n\t}\n\n\tget method() {\n\t\treturn this[INTERNALS$2].method;\n\t}\n\n\tget url() {\n\t\treturn format_url(this[INTERNALS$2].parsedURL);\n\t}\n\n\tget headers() {\n\t\treturn this[INTERNALS$2].headers;\n\t}\n\n\tget redirect() {\n\t\treturn this[INTERNALS$2].redirect;\n\t}\n\n\tget signal() {\n\t\treturn this[INTERNALS$2].signal;\n\t}\n\n\t/**\n  * Clone this request\n  *\n  * @return  Request\n  */\n\tclone() {\n\t\treturn new Request(this);\n\t}\n}\n\nBody.mixIn(Request.prototype);\n\nObject.defineProperty(Request.prototype, Symbol.toStringTag, {\n\tvalue: 'Request',\n\twritable: false,\n\tenumerable: false,\n\tconfigurable: true\n});\n\nObject.defineProperties(Request.prototype, {\n\tmethod: { enumerable: true },\n\turl: { enumerable: true },\n\theaders: { enumerable: true },\n\tredirect: { enumerable: true },\n\tclone: { enumerable: true },\n\tsignal: { enumerable: true }\n});\n\n/**\n * Convert a Request to Node.js http request options.\n *\n * @param   Request  A Request instance\n * @return  Object   The options object to be passed to http.request\n */\nfunction getNodeRequestOptions(request) {\n\tconst parsedURL = request[INTERNALS$2].parsedURL;\n\tconst headers = new Headers(request[INTERNALS$2].headers);\n\n\t// fetch step 1.3\n\tif (!headers.has('Accept')) {\n\t\theaders.set('Accept', '*/*');\n\t}\n\n\t// Basic fetch\n\tif (!parsedURL.protocol || !parsedURL.hostname) {\n\t\tthrow new TypeError('Only absolute URLs are supported');\n\t}\n\n\tif (!/^https?:$/.test(parsedURL.protocol)) {\n\t\tthrow new TypeError('Only HTTP(S) protocols are supported');\n\t}\n\n\tif (request.signal && request.body instanceof Stream.Readable && !streamDestructionSupported) {\n\t\tthrow new Error('Cancellation of streamed requests with AbortSignal is not supported in node < 8');\n\t}\n\n\t// HTTP-network-or-cache fetch steps 2.4-2.7\n\tlet contentLengthValue = null;\n\tif (request.body == null && /^(POST|PUT)$/i.test(request.method)) {\n\t\tcontentLengthValue = '0';\n\t}\n\tif (request.body != null) {\n\t\tconst totalBytes = getTotalBytes(request);\n\t\tif (typeof totalBytes === 'number') {\n\t\t\tcontentLengthValue = String(totalBytes);\n\t\t}\n\t}\n\tif (contentLengthValue) {\n\t\theaders.set('Content-Length', contentLengthValue);\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.11\n\tif (!headers.has('User-Agent')) {\n\t\theaders.set('User-Agent', 'node-fetch/1.0 (+https://github.com/bitinn/node-fetch)');\n\t}\n\n\t// HTTP-network-or-cache fetch step 2.15\n\tif (request.compress && !headers.has('Accept-Encoding')) {\n\t\theaders.set('Accept-Encoding', 'gzip,deflate');\n\t}\n\n\tlet agent = request.agent;\n\tif (typeof agent === 'function') {\n\t\tagent = agent(parsedURL);\n\t}\n\n\t// HTTP-network fetch step 4.2\n\t// chunked encoding is handled by Node.js\n\n\treturn Object.assign({}, parsedURL, {\n\t\tmethod: request.method,\n\t\theaders: exportNodeCompatibleHeaders(headers),\n\t\tagent\n\t});\n}\n\n/**\n * abort-error.js\n *\n * AbortError interface for cancelled requests\n */\n\n/**\n * Create AbortError instance\n *\n * @param   String      message      Error message for human\n * @return  AbortError\n */\nfunction AbortError(message) {\n  Error.call(this, message);\n\n  this.type = 'aborted';\n  this.message = message;\n\n  // hide custom error implementation details from end-users\n  Error.captureStackTrace(this, this.constructor);\n}\n\nAbortError.prototype = Object.create(Error.prototype);\nAbortError.prototype.constructor = AbortError;\nAbortError.prototype.name = 'AbortError';\n\nconst URL$1 = Url.URL || whatwgUrl.URL;\n\n// fix an issue where \"PassThrough\", \"resolve\" aren't a named export for node <10\nconst PassThrough$1 = Stream.PassThrough;\n\nconst isDomainOrSubdomain = function isDomainOrSubdomain(destination, original) {\n\tconst orig = new URL$1(original).hostname;\n\tconst dest = new URL$1(destination).hostname;\n\n\treturn orig === dest || orig[orig.length - dest.length - 1] === '.' && orig.endsWith(dest);\n};\n\n/**\n * isSameProtocol reports whether the two provided URLs use the same protocol.\n *\n * Both domains must already be in canonical form.\n * @param {string|URL} original\n * @param {string|URL} destination\n */\nconst isSameProtocol = function isSameProtocol(destination, original) {\n\tconst orig = new URL$1(original).protocol;\n\tconst dest = new URL$1(destination).protocol;\n\n\treturn orig === dest;\n};\n\n/**\n * Fetch function\n *\n * @param   Mixed    url   Absolute url or Request instance\n * @param   Object   opts  Fetch options\n * @return  Promise\n */\nfunction fetch(url, opts) {\n\n\t// allow custom promise\n\tif (!fetch.Promise) {\n\t\tthrow new Error('native promise missing, set fetch.Promise to your favorite alternative');\n\t}\n\n\tBody.Promise = fetch.Promise;\n\n\t// wrap http.request into fetch\n\treturn new fetch.Promise(function (resolve, reject) {\n\t\t// build request object\n\t\tconst request = new Request(url, opts);\n\t\tconst options = getNodeRequestOptions(request);\n\n\t\tconst send = (options.protocol === 'https:' ? https : http).request;\n\t\tconst signal = request.signal;\n\n\t\tlet response = null;\n\n\t\tconst abort = function abort() {\n\t\t\tlet error = new AbortError('The user aborted a request.');\n\t\t\treject(error);\n\t\t\tif (request.body && request.body instanceof Stream.Readable) {\n\t\t\t\tdestroyStream(request.body, error);\n\t\t\t}\n\t\t\tif (!response || !response.body) return;\n\t\t\tresponse.body.emit('error', error);\n\t\t};\n\n\t\tif (signal && signal.aborted) {\n\t\t\tabort();\n\t\t\treturn;\n\t\t}\n\n\t\tconst abortAndFinalize = function abortAndFinalize() {\n\t\t\tabort();\n\t\t\tfinalize();\n\t\t};\n\n\t\t// send request\n\t\tconst req = send(options);\n\t\tlet reqTimeout;\n\n\t\tif (signal) {\n\t\t\tsignal.addEventListener('abort', abortAndFinalize);\n\t\t}\n\n\t\tfunction finalize() {\n\t\t\treq.abort();\n\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\tclearTimeout(reqTimeout);\n\t\t}\n\n\t\tif (request.timeout) {\n\t\t\treq.once('socket', function (socket) {\n\t\t\t\treqTimeout = setTimeout(function () {\n\t\t\t\t\treject(new FetchError(`network timeout at: ${request.url}`, 'request-timeout'));\n\t\t\t\t\tfinalize();\n\t\t\t\t}, request.timeout);\n\t\t\t});\n\t\t}\n\n\t\treq.on('error', function (err) {\n\t\t\treject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, 'system', err));\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\n\t\t\tfinalize();\n\t\t});\n\n\t\tfixResponseChunkedTransferBadEnding(req, function (err) {\n\t\t\tif (signal && signal.aborted) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (response && response.body) {\n\t\t\t\tdestroyStream(response.body, err);\n\t\t\t}\n\t\t});\n\n\t\t/* c8 ignore next 18 */\n\t\tif (parseInt(process.version.substring(1)) < 14) {\n\t\t\t// Before Node.js 14, pipeline() does not fully support async iterators and does not always\n\t\t\t// properly handle when the socket close/end events are out of order.\n\t\t\treq.on('socket', function (s) {\n\t\t\t\ts.addListener('close', function (hadError) {\n\t\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\t\tconst hasDataListener = s.listenerCount('data') > 0;\n\n\t\t\t\t\t// if end happened before close but the socket didn't emit an error, do it now\n\t\t\t\t\tif (response && hasDataListener && !hadError && !(signal && signal.aborted)) {\n\t\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\t\tresponse.body.emit('error', err);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\n\t\treq.on('response', function (res) {\n\t\t\tclearTimeout(reqTimeout);\n\n\t\t\tconst headers = createHeadersLenient(res.headers);\n\n\t\t\t// HTTP fetch step 5\n\t\t\tif (fetch.isRedirect(res.statusCode)) {\n\t\t\t\t// HTTP fetch step 5.2\n\t\t\t\tconst location = headers.get('Location');\n\n\t\t\t\t// HTTP fetch step 5.3\n\t\t\t\tlet locationURL = null;\n\t\t\t\ttry {\n\t\t\t\t\tlocationURL = location === null ? null : new URL$1(location, request.url).toString();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// error here can only be invalid URL in Location: header\n\t\t\t\t\t// do not throw when options.redirect == manual\n\t\t\t\t\t// let the user extract the errorneous redirect URL\n\t\t\t\t\tif (request.redirect !== 'manual') {\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// HTTP fetch step 5.5\n\t\t\t\tswitch (request.redirect) {\n\t\t\t\t\tcase 'error':\n\t\t\t\t\t\treject(new FetchError(`uri requested responds with a redirect, redirect mode is set to error: ${request.url}`, 'no-redirect'));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t\tcase 'manual':\n\t\t\t\t\t\t// node-fetch-specific step: make manual redirect a bit easier to use by setting the Location header value to the resolved URL.\n\t\t\t\t\t\tif (locationURL !== null) {\n\t\t\t\t\t\t\t// handle corrupted header\n\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\theaders.set('Location', locationURL);\n\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t// istanbul ignore next: nodejs server prevent invalid response headers, we can't test this through normal request\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase 'follow':\n\t\t\t\t\t\t// HTTP-redirect fetch step 2\n\t\t\t\t\t\tif (locationURL === null) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 5\n\t\t\t\t\t\tif (request.counter >= request.follow) {\n\t\t\t\t\t\t\treject(new FetchError(`maximum redirect reached at: ${request.url}`, 'max-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 6 (counter increment)\n\t\t\t\t\t\t// Create a new Request object.\n\t\t\t\t\t\tconst requestOpts = {\n\t\t\t\t\t\t\theaders: new Headers(request.headers),\n\t\t\t\t\t\t\tfollow: request.follow,\n\t\t\t\t\t\t\tcounter: request.counter + 1,\n\t\t\t\t\t\t\tagent: request.agent,\n\t\t\t\t\t\t\tcompress: request.compress,\n\t\t\t\t\t\t\tmethod: request.method,\n\t\t\t\t\t\t\tbody: request.body,\n\t\t\t\t\t\t\tsignal: request.signal,\n\t\t\t\t\t\t\ttimeout: request.timeout,\n\t\t\t\t\t\t\tsize: request.size\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tif (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {\n\t\t\t\t\t\t\tfor (const name of ['authorization', 'www-authenticate', 'cookie', 'cookie2']) {\n\t\t\t\t\t\t\t\trequestOpts.headers.delete(name);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 9\n\t\t\t\t\t\tif (res.statusCode !== 303 && request.body && getTotalBytes(request) === null) {\n\t\t\t\t\t\t\treject(new FetchError('Cannot follow redirect with body being a readable stream', 'unsupported-redirect'));\n\t\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 11\n\t\t\t\t\t\tif (res.statusCode === 303 || (res.statusCode === 301 || res.statusCode === 302) && request.method === 'POST') {\n\t\t\t\t\t\t\trequestOpts.method = 'GET';\n\t\t\t\t\t\t\trequestOpts.body = undefined;\n\t\t\t\t\t\t\trequestOpts.headers.delete('content-length');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// HTTP-redirect fetch step 15\n\t\t\t\t\t\tresolve(fetch(new Request(locationURL, requestOpts)));\n\t\t\t\t\t\tfinalize();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// prepare response\n\t\t\tres.once('end', function () {\n\t\t\t\tif (signal) signal.removeEventListener('abort', abortAndFinalize);\n\t\t\t});\n\t\t\tlet body = res.pipe(new PassThrough$1());\n\n\t\t\tconst response_options = {\n\t\t\t\turl: request.url,\n\t\t\t\tstatus: res.statusCode,\n\t\t\t\tstatusText: res.statusMessage,\n\t\t\t\theaders: headers,\n\t\t\t\tsize: request.size,\n\t\t\t\ttimeout: request.timeout,\n\t\t\t\tcounter: request.counter\n\t\t\t};\n\n\t\t\t// HTTP-network fetch step 12.1.1.3\n\t\t\tconst codings = headers.get('Content-Encoding');\n\n\t\t\t// HTTP-network fetch step 12.1.1.4: handle content codings\n\n\t\t\t// in following scenarios we ignore compression support\n\t\t\t// 1. compression support is disabled\n\t\t\t// 2. HEAD request\n\t\t\t// 3. no Content-Encoding header\n\t\t\t// 4. no content response (204)\n\t\t\t// 5. content not modified response (304)\n\t\t\tif (!request.compress || request.method === 'HEAD' || codings === null || res.statusCode === 204 || res.statusCode === 304) {\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// For Node v6+\n\t\t\t// Be less strict when decoding compressed responses, since sometimes\n\t\t\t// servers send slightly invalid responses that are still accepted\n\t\t\t// by common browsers.\n\t\t\t// Always using Z_SYNC_FLUSH is what cURL does.\n\t\t\tconst zlibOptions = {\n\t\t\t\tflush: zlib.Z_SYNC_FLUSH,\n\t\t\t\tfinishFlush: zlib.Z_SYNC_FLUSH\n\t\t\t};\n\n\t\t\t// for gzip\n\t\t\tif (codings == 'gzip' || codings == 'x-gzip') {\n\t\t\t\tbody = body.pipe(zlib.createGunzip(zlibOptions));\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for deflate\n\t\t\tif (codings == 'deflate' || codings == 'x-deflate') {\n\t\t\t\t// handle the infamous raw deflate response from old servers\n\t\t\t\t// a hack for old IIS and Apache servers\n\t\t\t\tconst raw = res.pipe(new PassThrough$1());\n\t\t\t\traw.once('data', function (chunk) {\n\t\t\t\t\t// see http://stackoverflow.com/questions/37519828\n\t\t\t\t\tif ((chunk[0] & 0x0F) === 0x08) {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflate());\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbody = body.pipe(zlib.createInflateRaw());\n\t\t\t\t\t}\n\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\tresolve(response);\n\t\t\t\t});\n\t\t\t\traw.on('end', function () {\n\t\t\t\t\t// some old IIS servers return zero-length OK deflate responses, so 'data' is never emitted.\n\t\t\t\t\tif (!response) {\n\t\t\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\t\t\tresolve(response);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// for br\n\t\t\tif (codings == 'br' && typeof zlib.createBrotliDecompress === 'function') {\n\t\t\t\tbody = body.pipe(zlib.createBrotliDecompress());\n\t\t\t\tresponse = new Response(body, response_options);\n\t\t\t\tresolve(response);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// otherwise, use response as-is\n\t\t\tresponse = new Response(body, response_options);\n\t\t\tresolve(response);\n\t\t});\n\n\t\twriteToStream(req, request);\n\t});\n}\nfunction fixResponseChunkedTransferBadEnding(request, errorCallback) {\n\tlet socket;\n\n\trequest.on('socket', function (s) {\n\t\tsocket = s;\n\t});\n\n\trequest.on('response', function (response) {\n\t\tconst headers = response.headers;\n\n\t\tif (headers['transfer-encoding'] === 'chunked' && !headers['content-length']) {\n\t\t\tresponse.once('close', function (hadError) {\n\t\t\t\t// tests for socket presence, as in some situations the\n\t\t\t\t// the 'socket' event is not triggered for the request\n\t\t\t\t// (happens in deno), avoids `TypeError`\n\t\t\t\t// if a data listener is still present we didn't end cleanly\n\t\t\t\tconst hasDataListener = socket && socket.listenerCount('data') > 0;\n\n\t\t\t\tif (hasDataListener && !hadError) {\n\t\t\t\t\tconst err = new Error('Premature close');\n\t\t\t\t\terr.code = 'ERR_STREAM_PREMATURE_CLOSE';\n\t\t\t\t\terrorCallback(err);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n}\n\nfunction destroyStream(stream, err) {\n\tif (stream.destroy) {\n\t\tstream.destroy(err);\n\t} else {\n\t\t// node < 8\n\t\tstream.emit('error', err);\n\t\tstream.end();\n\t}\n}\n\n/**\n * Redirect code matching\n *\n * @param   Number   code  Status code\n * @return  Boolean\n */\nfetch.isRedirect = function (code) {\n\treturn code === 301 || code === 302 || code === 303 || code === 307 || code === 308;\n};\n\n// expose Promise\nfetch.Promise = global.Promise;\n\nmodule.exports = exports = fetch;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = exports;\nexports.Headers = Headers;\nexports.Request = Request;\nexports.Response = Response;\nexports.FetchError = FetchError;\nexports.AbortError = AbortError;\n", "import { ResponsePath } from '@apollo/query-planner';\nimport { GatewayGraphQLResponse, GatewayGraphQLRequestContext } from '@apollo/server-gateway-interface';\n\nexport interface GraphQLDataSource<\n  TContext extends Record<string, any> = Record<string, any>,\n> {\n  process(\n    options: GraphQLDataSourceProcessOptions<TContext>,\n  ): Promise<GatewayGraphQLResponse>;\n}\n\nexport enum GraphQLDataSourceRequestKind {\n  INCOMING_OPERATION = 'incoming operation',\n  HEALTH_CHECK = 'health check',\n  LOADING_SCHEMA = 'loading schema',\n}\n\nexport type GraphQLDataSourceProcessOptions<\n  TContext extends Record<string, any> = Record<string, any>,\n> = {\n  /**\n   * The request to send to the subgraph.\n   */\n  request: GatewayGraphQLRequestContext<TContext>['request'];\n} & (\n  | {\n      kind: GraphQLDataSourceRequestKind.INCOMING_OPERATION;\n      /**\n       * The GraphQLRequestContext for the operation received by the gateway, or\n       * one of the strings if this operation is generated by the gateway without an\n       * incoming request.\n       */\n      incomingRequestContext: GatewayGraphQLRequestContext<TContext>;\n      /**\n       * Equivalent to incomingRequestContext.context (provided here for\n       * backwards compatibility): the object created by the Apollo Server\n       * `context` function.\n       *\n       * @deprecated Use `incomingRequestContext.context` instead (after\n       * checking `kind`).\n       */\n      context: GatewayGraphQLRequestContext<TContext>['context'];\n      /**\n       * The document representation of the request's query being sent to the subgraph, if available.\n       *\n       * Note that this field is not populated by default. You can enable it by setting the\n       * `GatewayConfig.queryPlannerConfig.exposeDocumentNodeInFetchNode` configuration but note that\n       * this will increase the memory used by the gateway query plan cache.\n       */\n      document?: GatewayGraphQLRequestContext<TContext>['document'];\n\n      /**\n      * The path in the overall gateway operation at which that subgraph request gets inserted.\n      * Please note that this could be set to `undefined` when the path is not available, or set to an empty array for top-level fetch operations.\n      */\n      pathInIncomingRequest?: ResponsePath;\n    }\n  | {\n      kind:\n        | GraphQLDataSourceRequestKind.HEALTH_CHECK\n        | GraphQLDataSourceRequestKind.LOADING_SCHEMA;\n      /**\n       * Mostly provided for historical reasons.\n       */\n      context: Record<string, any>;\n    }\n);\n", "import { Config, Plugin, Refs } from 'pretty-format';\nimport { DeferredNode, PlanNode, QueryPlan, SubscriptionNode } from '../';\nimport { parse, Kind, visit, DocumentNode } from 'graphql';\n\nexport default {\n  test(value: any) {\n    return value && value.kind === 'QueryPlan';\n  },\n\n  serialize(\n    queryPlan: QueryPlan,\n    config: Config,\n    indentation: string,\n    depth: number,\n    refs: Refs,\n    printer: any,\n  ): string {\n    return (\n      'QueryPlan {' +\n      printNodes(\n        queryPlan.node ? [queryPlan.node] : undefined,\n        config,\n        indentation,\n        depth,\n        refs,\n        printer,\n      ) +\n      '}'\n    );\n  },\n} as Plugin;\n\nfunction printNode(\n  node: PlanNode | SubscriptionNode,\n  config: Config,\n  indentation: string,\n  depth: number,\n  refs: Refs,\n  printer: any,\n): string {\n  let result = '';\n\n  const indentationNext = indentation + config.indent;\n\n  const printOperation = (operationString: string, indent: string) =>\n    printer(\n      flattenEntitiesField(parse(operationString)),\n      config,\n      indent,\n      depth,\n      refs,\n      printer,\n    );\n\n  switch (node.kind) {\n    case 'Fetch':\n      const idStr = node.id ? `, id: ${node.id}` : '';\n      result +=\n        `${node.kind}(service: \"${node.serviceName}\"${idStr})` +\n        ' {' +\n        config.spacingOuter +\n        (node.requires\n          ? printer(\n              // this is an array of selections, so we need to make it a proper\n              // selectionSet so we can print it\n              { kind: Kind.SELECTION_SET, selections: node.requires },\n              config,\n              indentationNext,\n              depth,\n              refs,\n              printer,\n            ) +\n            ' =>' +\n            config.spacingOuter\n          : '') +\n        printOperation(node.operation, indentationNext) +\n        config.spacingOuter +\n        indentation +\n        '}';\n      break;\n    case 'Flatten':\n      result += `Flatten(path: \"${node.path.join('.')}\")`;\n      break;\n    case 'Defer':\n      const primary = node.primary;\n      const indentationInner = indentationNext + config.indent;\n      result +=\n        'Defer {' + config.spacingOuter +\n        indentationNext + `Primary {` + config.spacingOuter +\n        (primary.subselection ? printOperation(primary.subselection, indentationInner): indentationInner) + ':' + config.spacingOuter +\n        (primary.node ? (indentationInner + printNode(primary.node, config, indentationInner, depth, refs, printer) + config.spacingOuter) : '') +\n        indentationNext + '}, [' +\n        printDeferredNodes(node.deferred, config, indentationNext, depth, refs, printer) +\n        ']' + config.spacingOuter +\n        indentation + '}';\n      break;\n    case 'Condition':\n      if (node.ifClause) {\n        const indentationInner = indentationNext + config.indent;\n        if (node.elseClause) {\n          result +=\n            `Condition(if: \\$${node.condition}) {` + config.spacingOuter +\n            indentationNext + `Then {` + config.spacingOuter +\n            indentationInner + printNode(node.ifClause, config, indentationInner, depth, refs, printer) + config.spacingOuter +\n            indentationNext + `} Else {` + config.spacingOuter +\n            indentationInner + printNode(node.elseClause, config, indentationInner, depth, refs, printer) + config.spacingOuter +\n            indentationNext + `}` + config.spacingOuter +\n            indentation + '}'\n        } else {\n          result +=\n            `Include(if: \\$${node.condition}) {` + config.spacingOuter +\n            indentationNext + printNode(node.ifClause, config, indentationNext, depth, refs, printer) + config.spacingOuter +\n            indentation + '}'\n        }\n      } else {\n        result +=\n          `Skip(if: \\$${node.condition}) {` + config.spacingOuter +\n          indentationNext + printNode(node.elseClause!, config, indentationNext, depth, refs, printer) + config.spacingOuter +\n          indentation + '}'\n      }\n      break;\n    case 'Subscription': {\n      const primary = node.primary;\n      const rest = node.rest;\n      const indentationInner = indentationNext + config.indent;\n      result += 'Subscription {'\n        + config.spacingOuter + indentationNext + 'Primary: {' + config.spacingOuter + indentationInner + printNode(primary, config, indentationInner, depth, refs, printer)\n        + config.spacingOuter + indentationNext + '},'\n        + (rest ? (config.spacingOuter + indentationNext + 'Rest: {' + config.spacingOuter + indentationInner + printNode(rest, config, indentationInner, depth, refs, printer)) : '')\n        + config.spacingOuter + indentationNext + '}'\n        + config.spacingOuter + config.indent + '}'; // TODO: Is this right?\n        break;\n    }\n    default:\n      result += node.kind;\n  }\n\n  const nodes =\n    'nodes' in node ? node.nodes : 'node' in node ? [node.node] : [];\n\n  if (nodes.length > 0) {\n    result +=\n      ' {' + printNodes(nodes, config, indentation, depth, refs, printer) + '}';\n  }\n\n  return result;\n}\n\nfunction printNodes(\n  nodes: (SubscriptionNode | PlanNode)[] | undefined,\n  config: Config,\n  indentation: string,\n  depth: number,\n  refs: Refs,\n  printer: any,\n): string {\n  let result = '';\n\n  if (nodes && nodes.length > 0) {\n    result += config.spacingOuter;\n\n    const indentationNext = indentation + config.indent;\n    for (let i = 0; i < nodes.length; i++) {\n      const node = nodes[i];\n      if (!node) continue;\n\n      result +=\n        indentationNext +\n        printNode(node, config, indentationNext, depth, refs, printer);\n\n      if (i < nodes.length - 1) {\n        result += ',' + config.spacingInner;\n      } else if (!config.min) {\n        result += ',';\n      }\n    }\n\n    result += config.spacingOuter + indentation;\n  }\n\n  return result;\n}\n\nfunction printDeferredNodes(\n  nodes: DeferredNode[],\n  config: Config,\n  indentation: string,\n  depth: number,\n  refs: Refs,\n  printer: any,\n): string {\n  let result = config.spacingOuter;\n\n  const indentationNext = indentation + config.indent;\n  for (let i = 0; i < nodes.length; i++) {\n    const node = nodes[i];\n    if (!node) continue;\n\n    result +=\n      indentationNext +\n      printDeferredNode(node, config, indentationNext, depth, refs, printer);\n\n    if (i < nodes.length - 1) {\n      result += ',' + config.spacingInner;\n    } else if (!config.min) {\n      result += ',';\n    }\n  }\n  result += config.spacingOuter + indentation;\n\n  return result;\n}\n\nfunction printDeferredNode(\n  node: DeferredNode,\n  config: Config,\n  indentation: string,\n  depth: number,\n  refs: Refs,\n  printer: any,\n): string {\n  const printOperation = (operationString: string) =>\n    printer(\n      flattenEntitiesField(parse(operationString)),\n      config,\n      indentationNext,\n      depth,\n      refs,\n      printer,\n    );\n\n  const indentationNext = indentation + config.indent;\n  const dependsStr = node.depends.map(({id, deferLabel}) => id + (deferLabel ? (`:\"${deferLabel}\"`) : '')).join(', ');\n  const pathStr = node.queryPath.join('/');\n  const labelStr = node.label ? `, label: \"${node.label}\"` : '';\n  let result = `Deferred(depends: [${dependsStr}], path: \"${pathStr}\"${labelStr}) {`;\n  if (node.subselection) {\n    result += config.spacingOuter + printOperation(node.subselection) + ':';\n  }\n  if (node.node) {\n    result += config.spacingOuter + indentationNext + printNode(node.node, config, indentationNext, depth, refs, printer);\n  }\n  result += config.spacingOuter + indentation + '}';\n  return result;\n}\n\n/**\n * when we serialize a query plan, we want to serialize the operation, but not\n * show the root level `query` definition or the `_entities` call. This function\n * flattens those nodes to only show their selectionSets\n */\nfunction flattenEntitiesField(node: DocumentNode) {\n  return visit(node, {\n    OperationDefinition: ({ operation, selectionSet }) => {\n      const firstSelection = selectionSet.selections[0];\n      if (\n        operation === 'query' &&\n        firstSelection.kind === Kind.FIELD &&\n        firstSelection.name.value === '_entities'\n      ) {\n        return firstSelection.selectionSet;\n      }\n      // we don't want to print the `query { }` definition either for query plan printing\n      return selectionSet;\n    },\n  });\n}\n", "import { QueryPlanInlineFragmentNode, QueryPlanSelectionNode } from '../';\nimport { ASTNode, Kind, print, SelectionNode as GraphQLJSSelectionNode, visit } from 'graphql';\nimport { Config, NewPlugin, Refs } from 'pretty-format';\n\nexport default {\n  test(value: any) {\n    // Note that this isn't a reliable test because other objects may also have a `kind` property\n    // (like query plans!).\n    // `graphql-js` does have an unexported `isNode` function, but that currently performs the same check\n    // and doesn't check whether `kind` represents a valid AST node either:\n    // https://github.com/graphql/graphql-js/blob/998bea680d6e11e1c055a400a887a9539de08f75/src/language/ast.js#L135-L137\n    // Perhaps we should attempt to contribute an improved `isNode` function.\n    return value && typeof value.kind === 'string';\n  },\n\n  serialize(\n    value: ASTNode,\n    config: Config,\n    indentation: string,\n    _depth: number,\n    _refs: Refs,\n    _printer: any,\n  ): string {\n    const lines = print(remapInlineFragmentNodes(value)).trim().split('\\n');\n\n    // Avoid adding newlines for single line results.\n    if (lines.length === 0) {\n      return '';\n    } else if (lines.length === 1) {\n      return lines[0];\n    }\n\n    return lines.map(line => {\n      // We re-indent the lines printed from `graphql-js` to respect the passed in `indentation`\n      // and`config.indent` values.\n      // This is important because Jest has started to ignore indentation when diffing snapshots,\n      // and it does this by invoking snapshot serializers with these values set to 0.\n      // Without re-indenting, every line printed from `graphql-js` would be shown as changed.\n      // See https://github.com/facebook/jest/pull/9203\n      const indentationLength = getIndentationLength(line);\n      const dedentedLine = line.slice(indentationLength);\n      // `graphql-js` always indents with 2 spaces\n      const indentationDepth = indentationLength / 2;\n\n      return indentation + config.indent.repeat(indentationDepth) + dedentedLine;\n    }).join(config.spacingOuter);\n  },\n} as NewPlugin;\n\n// From https://github.com/facebook/jest/blob/32aaff83f02c347ccd591727544002490fb4ee9a/packages/jest-snapshot/src/dedentLines.ts#L8\nfunction getIndentationLength(line: string): number {\n  const result = /^( {2})+/.exec(line);\n  return result === null ? 0 : result[0].length;\n}\n\n/**\n * This function converts potential InlineFragmentNodes that WE created\n * (defined in ../QueryPlan, not graphql-js) to GraphQL-js compliant AST nodes\n * for the graphql-js printer to work with\n *\n * The arg type here SHOULD be (node: AstNode | SelectionNode (from ../QueryPlan)),\n * but that breaks the graphql-js visitor, as it won't allow our redefined\n * SelectionNode to be passed in.\n *\n * Since our SelectionNode still has a `kind`, this will still functionally work\n * at runtime to call the InlineFragment visitor defined below\n *\n * We have to cast the `fragmentNode as unknown` and then to an InlineFragmentNode\n * at the bottom though, since there's no way to cast it appropriately to an\n * `InlineFragmentNode` as defined in ../QueryPlan.ts. TypeScript will complain\n * about there not being overlapping fields\n */\nexport function remapInlineFragmentNodes(node: ASTNode): ASTNode {\n  return visit(node, {\n    InlineFragment: (fragmentNode) => {\n      // if the fragmentNode is already a proper graphql AST Node, return it\n      if (fragmentNode.selectionSet) return fragmentNode;\n\n      /**\n       * Since the above check wasn't hit, we _know_ that fragmentNode is an\n       * InlineFragmentNode from ../QueryPlan, but we can't actually type that\n       * without causing ourselves a lot of headache, so we cast to unknown and\n       * then to InlineFragmentNode (from ../QueryPlan) below\n       */\n\n      // if the fragmentNode is a QueryPlan InlineFragmentNode, convert it to graphql-js node\n      return {\n        kind: Kind.INLINE_FRAGMENT,\n        typeCondition: fragmentNode.typeCondition\n          ? {\n              kind: Kind.NAMED_TYPE,\n              name: {\n                kind: Kind.NAME,\n                value: fragmentNode.typeCondition,\n              },\n            }\n          : undefined,\n        selectionSet: {\n          kind: Kind.SELECTION_SET,\n          // we have to recursively rebuild the selectionSet using selections\n          selections: remapSelections(\n            ((fragmentNode as unknown) as QueryPlanInlineFragmentNode).selections,\n          ),\n        },\n      };\n    },\n  });\n}\n\nfunction remapSelections(\n  selections: QueryPlanSelectionNode[],\n): readonly GraphQLJSSelectionNode[] {\n  return selections.map((selection) => {\n    switch (selection.kind) {\n      case 'Field':\n        return {\n          kind: Kind.FIELD,\n          name: {\n            kind: Kind.NAME,\n            value: selection.name,\n          },\n          selectionSet: {\n            kind: Kind.SELECTION_SET,\n            selections: remapSelections(selection.selections || []),\n          },\n        };\n      case 'InlineFragment':\n        return {\n          kind: Kind.INLINE_FRAGMENT,\n          selectionSet: {\n            kind: Kind.SELECTION_SET,\n            selections: remapSelections(selection.selections || []),\n          },\n          typeCondition: selection.typeCondition\n            ? {\n                kind: Kind.NAMED_TYPE,\n                name: {\n                  kind: Kind.NAME,\n                  value: selection.typeCondition,\n                },\n              }\n            : undefined,\n        };\n    }\n  });\n}\n", "export { default as queryPlanSerializer } from './queryPlanSerializer';\nexport { default as astSerializer } from './astSerializer';\n", "'use strict';\n\nconst ANSI_BACKGROUND_OFFSET = 10;\n\nconst wrapAnsi256 = (offset = 0) => code => `\\u001B[${38 + offset};5;${code}m`;\n\nconst wrapAnsi16m = (offset = 0) => (red, green, blue) => `\\u001B[${38 + offset};2;${red};${green};${blue}m`;\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\toverline: [53, 55],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tstyles.color.ansi256 = wrapAnsi256();\n\tstyles.color.ansi16m = wrapAnsi16m();\n\tstyles.bgColor.ansi256 = wrapAnsi256(ANSI_BACKGROUND_OFFSET);\n\tstyles.bgColor.ansi16m = wrapAnsi16m(ANSI_BACKGROUND_OFFSET);\n\n\t// From https://github.com/Qix-/color-convert/blob/3f0e0d4e92e235796ccb17f6e85c72094a651f49/conversions.js\n\tObject.defineProperties(styles, {\n\t\trgbToAnsi256: {\n\t\t\tvalue: (red, green, blue) => {\n\t\t\t\t// We use the extended greyscale palette here, with the exception of\n\t\t\t\t// black and white. normal palette only has 4 greyscale shades.\n\t\t\t\tif (red === green && green === blue) {\n\t\t\t\t\tif (red < 8) {\n\t\t\t\t\t\treturn 16;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (red > 248) {\n\t\t\t\t\t\treturn 231;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Math.round(((red - 8) / 247) * 24) + 232;\n\t\t\t\t}\n\n\t\t\t\treturn 16 +\n\t\t\t\t\t(36 * Math.round(red / 255 * 5)) +\n\t\t\t\t\t(6 * Math.round(green / 255 * 5)) +\n\t\t\t\t\tMath.round(blue / 255 * 5);\n\t\t\t},\n\t\t\tenumerable: false\n\t\t},\n\t\thexToRgb: {\n\t\t\tvalue: hex => {\n\t\t\t\tconst matches = /(?<colorString>[a-f\\d]{6}|[a-f\\d]{3})/i.exec(hex.toString(16));\n\t\t\t\tif (!matches) {\n\t\t\t\t\treturn [0, 0, 0];\n\t\t\t\t}\n\n\t\t\t\tlet {colorString} = matches.groups;\n\n\t\t\t\tif (colorString.length === 3) {\n\t\t\t\t\tcolorString = colorString.split('').map(character => character + character).join('');\n\t\t\t\t}\n\n\t\t\t\tconst integer = Number.parseInt(colorString, 16);\n\n\t\t\t\treturn [\n\t\t\t\t\t(integer >> 16) & 0xFF,\n\t\t\t\t\t(integer >> 8) & 0xFF,\n\t\t\t\t\tinteger & 0xFF\n\t\t\t\t];\n\t\t\t},\n\t\t\tenumerable: false\n\t\t},\n\t\thexToAnsi256: {\n\t\t\tvalue: hex => styles.rgbToAnsi256(...styles.hexToRgb(hex)),\n\t\t\tenumerable: false\n\t\t}\n\t});\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.printIteratorEntries = printIteratorEntries;\nexports.printIteratorValues = printIteratorValues;\nexports.printListItems = printListItems;\nexports.printObjectProperties = printObjectProperties;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\nconst getKeysOfEnumerableProperties = (object, compareKeys) => {\n  const rawKeys = Object.keys(object);\n  const keys = compareKeys !== null ? rawKeys.sort(compareKeys) : rawKeys;\n  if (Object.getOwnPropertySymbols) {\n    Object.getOwnPropertySymbols(object).forEach(symbol => {\n      if (Object.getOwnPropertyDescriptor(object, symbol).enumerable) {\n        keys.push(symbol);\n      }\n    });\n  }\n  return keys;\n};\n\n/**\n * Return entries (for example, of a map)\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, braces)\n */\nfunction printIteratorEntries(\n  iterator,\n  config,\n  indentation,\n  depth,\n  refs,\n  printer,\n  // Too bad, so sad that separator for ECMAScript Map has been ' => '\n  // What a distracting diff if you change a data structure to/from\n  // ECMAScript Object or Immutable.Map/OrderedMap which use the default.\n  separator = ': '\n) {\n  let result = '';\n  let width = 0;\n  let current = iterator.next();\n  if (!current.done) {\n    result += config.spacingOuter;\n    const indentationNext = indentation + config.indent;\n    while (!current.done) {\n      result += indentationNext;\n      if (width++ === config.maxWidth) {\n        result += '\u2026';\n        break;\n      }\n      const name = printer(\n        current.value[0],\n        config,\n        indentationNext,\n        depth,\n        refs\n      );\n      const value = printer(\n        current.value[1],\n        config,\n        indentationNext,\n        depth,\n        refs\n      );\n      result += name + separator + value;\n      current = iterator.next();\n      if (!current.done) {\n        result += `,${config.spacingInner}`;\n      } else if (!config.min) {\n        result += ',';\n      }\n    }\n    result += config.spacingOuter + indentation;\n  }\n  return result;\n}\n\n/**\n * Return values (for example, of a set)\n * with spacing, indentation, and comma\n * without surrounding punctuation (braces or brackets)\n */\nfunction printIteratorValues(\n  iterator,\n  config,\n  indentation,\n  depth,\n  refs,\n  printer\n) {\n  let result = '';\n  let width = 0;\n  let current = iterator.next();\n  if (!current.done) {\n    result += config.spacingOuter;\n    const indentationNext = indentation + config.indent;\n    while (!current.done) {\n      result += indentationNext;\n      if (width++ === config.maxWidth) {\n        result += '\u2026';\n        break;\n      }\n      result += printer(current.value, config, indentationNext, depth, refs);\n      current = iterator.next();\n      if (!current.done) {\n        result += `,${config.spacingInner}`;\n      } else if (!config.min) {\n        result += ',';\n      }\n    }\n    result += config.spacingOuter + indentation;\n  }\n  return result;\n}\n\n/**\n * Return items (for example, of an array)\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, brackets)\n **/\nfunction printListItems(list, config, indentation, depth, refs, printer) {\n  let result = '';\n  if (list.length) {\n    result += config.spacingOuter;\n    const indentationNext = indentation + config.indent;\n    for (let i = 0; i < list.length; i++) {\n      result += indentationNext;\n      if (i === config.maxWidth) {\n        result += '\u2026';\n        break;\n      }\n      if (i in list) {\n        result += printer(list[i], config, indentationNext, depth, refs);\n      }\n      if (i < list.length - 1) {\n        result += `,${config.spacingInner}`;\n      } else if (!config.min) {\n        result += ',';\n      }\n    }\n    result += config.spacingOuter + indentation;\n  }\n  return result;\n}\n\n/**\n * Return properties of an object\n * with spacing, indentation, and comma\n * without surrounding punctuation (for example, braces)\n */\nfunction printObjectProperties(val, config, indentation, depth, refs, printer) {\n  let result = '';\n  const keys = getKeysOfEnumerableProperties(val, config.compareKeys);\n  if (keys.length) {\n    result += config.spacingOuter;\n    const indentationNext = indentation + config.indent;\n    for (let i = 0; i < keys.length; i++) {\n      const key = keys[i];\n      const name = printer(key, config, indentationNext, depth, refs);\n      const value = printer(val[key], config, indentationNext, depth, refs);\n      result += `${indentationNext + name}: ${value}`;\n      if (i < keys.length - 1) {\n        result += `,${config.spacingInner}`;\n      } else if (!config.min) {\n        result += ',';\n      }\n    }\n    result += config.spacingOuter + indentation;\n  }\n  return result;\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\nvar Symbol = globalThis['jest-symbol-do-not-touch'] || globalThis.Symbol;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nconst asymmetricMatcher =\n  typeof Symbol === 'function' && Symbol.for\n    ? Symbol.for('jest.asymmetricMatcher')\n    : 0x1357a5;\nconst SPACE = ' ';\nconst serialize = (val, config, indentation, depth, refs, printer) => {\n  const stringedValue = val.toString();\n  if (\n    stringedValue === 'ArrayContaining' ||\n    stringedValue === 'ArrayNotContaining'\n  ) {\n    if (++depth > config.maxDepth) {\n      return `[${stringedValue}]`;\n    }\n    return `${stringedValue + SPACE}[${(0, _collections.printListItems)(\n      val.sample,\n      config,\n      indentation,\n      depth,\n      refs,\n      printer\n    )}]`;\n  }\n  if (\n    stringedValue === 'ObjectContaining' ||\n    stringedValue === 'ObjectNotContaining'\n  ) {\n    if (++depth > config.maxDepth) {\n      return `[${stringedValue}]`;\n    }\n    return `${stringedValue + SPACE}{${(0, _collections.printObjectProperties)(\n      val.sample,\n      config,\n      indentation,\n      depth,\n      refs,\n      printer\n    )}}`;\n  }\n  if (\n    stringedValue === 'StringMatching' ||\n    stringedValue === 'StringNotMatching'\n  ) {\n    return (\n      stringedValue +\n      SPACE +\n      printer(val.sample, config, indentation, depth, refs)\n    );\n  }\n  if (\n    stringedValue === 'StringContaining' ||\n    stringedValue === 'StringNotContaining'\n  ) {\n    return (\n      stringedValue +\n      SPACE +\n      printer(val.sample, config, indentation, depth, refs)\n    );\n  }\n  if (typeof val.toAsymmetricMatcher !== 'function') {\n    throw new Error(\n      `Asymmetric matcher ${val.constructor.name} does not implement toAsymmetricMatcher()`\n    );\n  }\n  return val.toAsymmetricMatcher();\n};\nexports.serialize = serialize;\nconst test = val => val && val.$$typeof === asymmetricMatcher;\nexports.test = test;\nconst plugin = {\n  serialize,\n  test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst SPACE = ' ';\nconst OBJECT_NAMES = ['DOMStringMap', 'NamedNodeMap'];\nconst ARRAY_REGEXP = /^(HTML\\w*Collection|NodeList)$/;\nconst testName = name =>\n  OBJECT_NAMES.indexOf(name) !== -1 || ARRAY_REGEXP.test(name);\nconst test = val =>\n  val &&\n  val.constructor &&\n  !!val.constructor.name &&\n  testName(val.constructor.name);\nexports.test = test;\nconst isNamedNodeMap = collection =>\n  collection.constructor.name === 'NamedNodeMap';\nconst serialize = (collection, config, indentation, depth, refs, printer) => {\n  const name = collection.constructor.name;\n  if (++depth > config.maxDepth) {\n    return `[${name}]`;\n  }\n  return (\n    (config.min ? '' : name + SPACE) +\n    (OBJECT_NAMES.indexOf(name) !== -1\n      ? `{${(0, _collections.printObjectProperties)(\n          isNamedNodeMap(collection)\n            ? Array.from(collection).reduce((props, attribute) => {\n                props[attribute.name] = attribute.value;\n                return props;\n              }, {})\n            : {\n                ...collection\n              },\n          config,\n          indentation,\n          depth,\n          refs,\n          printer\n        )}}`\n      : `[${(0, _collections.printListItems)(\n          Array.from(collection),\n          config,\n          indentation,\n          depth,\n          refs,\n          printer\n        )}]`)\n  );\n};\nexports.serialize = serialize;\nconst plugin = {\n  serialize,\n  test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = escapeHTML;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nfunction escapeHTML(str) {\n  return str.replace(/</g, '&lt;').replace(/>/g, '&gt;');\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.printText =\n  exports.printProps =\n  exports.printElementAsLeaf =\n  exports.printElement =\n  exports.printComment =\n  exports.printChildren =\n    void 0;\nvar _escapeHTML = _interopRequireDefault(require('./escapeHTML'));\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {default: obj};\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// Return empty string if keys is empty.\nconst printProps = (keys, props, config, indentation, depth, refs, printer) => {\n  const indentationNext = indentation + config.indent;\n  const colors = config.colors;\n  return keys\n    .map(key => {\n      const value = props[key];\n      let printed = printer(value, config, indentationNext, depth, refs);\n      if (typeof value !== 'string') {\n        if (printed.indexOf('\\n') !== -1) {\n          printed =\n            config.spacingOuter +\n            indentationNext +\n            printed +\n            config.spacingOuter +\n            indentation;\n        }\n        printed = `{${printed}}`;\n      }\n      return `${\n        config.spacingInner +\n        indentation +\n        colors.prop.open +\n        key +\n        colors.prop.close\n      }=${colors.value.open}${printed}${colors.value.close}`;\n    })\n    .join('');\n};\n\n// Return empty string if children is empty.\nexports.printProps = printProps;\nconst printChildren = (children, config, indentation, depth, refs, printer) =>\n  children\n    .map(\n      child =>\n        config.spacingOuter +\n        indentation +\n        (typeof child === 'string'\n          ? printText(child, config)\n          : printer(child, config, indentation, depth, refs))\n    )\n    .join('');\nexports.printChildren = printChildren;\nconst printText = (text, config) => {\n  const contentColor = config.colors.content;\n  return (\n    contentColor.open + (0, _escapeHTML.default)(text) + contentColor.close\n  );\n};\nexports.printText = printText;\nconst printComment = (comment, config) => {\n  const commentColor = config.colors.comment;\n  return `${commentColor.open}<!--${(0, _escapeHTML.default)(comment)}-->${\n    commentColor.close\n  }`;\n};\n\n// Separate the functions to format props, children, and element,\n// so a plugin could override a particular function, if needed.\n// Too bad, so sad: the traditional (but unnecessary) space\n// in a self-closing tagColor requires a second test of printedProps.\nexports.printComment = printComment;\nconst printElement = (\n  type,\n  printedProps,\n  printedChildren,\n  config,\n  indentation\n) => {\n  const tagColor = config.colors.tag;\n  return `${tagColor.open}<${type}${\n    printedProps &&\n    tagColor.close +\n      printedProps +\n      config.spacingOuter +\n      indentation +\n      tagColor.open\n  }${\n    printedChildren\n      ? `>${tagColor.close}${printedChildren}${config.spacingOuter}${indentation}${tagColor.open}</${type}`\n      : `${printedProps && !config.min ? '' : ' '}/`\n  }>${tagColor.close}`;\n};\nexports.printElement = printElement;\nconst printElementAsLeaf = (type, config) => {\n  const tagColor = config.colors.tag;\n  return `${tagColor.open}<${type}${tagColor.close} \u2026${tagColor.open} />${tagColor.close}`;\n};\nexports.printElementAsLeaf = printElementAsLeaf;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _markup = require('./lib/markup');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nconst ELEMENT_NODE = 1;\nconst TEXT_NODE = 3;\nconst COMMENT_NODE = 8;\nconst FRAGMENT_NODE = 11;\nconst ELEMENT_REGEXP = /^((HTML|SVG)\\w*)?Element$/;\nconst testHasAttribute = val => {\n  try {\n    return typeof val.hasAttribute === 'function' && val.hasAttribute('is');\n  } catch {\n    return false;\n  }\n};\nconst testNode = val => {\n  const constructorName = val.constructor.name;\n  const {nodeType, tagName} = val;\n  const isCustomElement =\n    (typeof tagName === 'string' && tagName.includes('-')) ||\n    testHasAttribute(val);\n  return (\n    (nodeType === ELEMENT_NODE &&\n      (ELEMENT_REGEXP.test(constructorName) || isCustomElement)) ||\n    (nodeType === TEXT_NODE && constructorName === 'Text') ||\n    (nodeType === COMMENT_NODE && constructorName === 'Comment') ||\n    (nodeType === FRAGMENT_NODE && constructorName === 'DocumentFragment')\n  );\n};\nconst test = val => val?.constructor?.name && testNode(val);\nexports.test = test;\nfunction nodeIsText(node) {\n  return node.nodeType === TEXT_NODE;\n}\nfunction nodeIsComment(node) {\n  return node.nodeType === COMMENT_NODE;\n}\nfunction nodeIsFragment(node) {\n  return node.nodeType === FRAGMENT_NODE;\n}\nconst serialize = (node, config, indentation, depth, refs, printer) => {\n  if (nodeIsText(node)) {\n    return (0, _markup.printText)(node.data, config);\n  }\n  if (nodeIsComment(node)) {\n    return (0, _markup.printComment)(node.data, config);\n  }\n  const type = nodeIsFragment(node)\n    ? 'DocumentFragment'\n    : node.tagName.toLowerCase();\n  if (++depth > config.maxDepth) {\n    return (0, _markup.printElementAsLeaf)(type, config);\n  }\n  return (0, _markup.printElement)(\n    type,\n    (0, _markup.printProps)(\n      nodeIsFragment(node)\n        ? []\n        : Array.from(node.attributes, attr => attr.name).sort(),\n      nodeIsFragment(node)\n        ? {}\n        : Array.from(node.attributes).reduce((props, attribute) => {\n            props[attribute.name] = attribute.value;\n            return props;\n          }, {}),\n      config,\n      indentation + config.indent,\n      depth,\n      refs,\n      printer\n    ),\n    (0, _markup.printChildren)(\n      Array.prototype.slice.call(node.childNodes || node.children),\n      config,\n      indentation + config.indent,\n      depth,\n      refs,\n      printer\n    ),\n    config,\n    indentation\n  );\n};\nexports.serialize = serialize;\nconst plugin = {\n  serialize,\n  test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _collections = require('../collections');\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// SENTINEL constants are from https://github.com/facebook/immutable-js\nconst IS_ITERABLE_SENTINEL = '@@__IMMUTABLE_ITERABLE__@@';\nconst IS_LIST_SENTINEL = '@@__IMMUTABLE_LIST__@@';\nconst IS_KEYED_SENTINEL = '@@__IMMUTABLE_KEYED__@@';\nconst IS_MAP_SENTINEL = '@@__IMMUTABLE_MAP__@@';\nconst IS_ORDERED_SENTINEL = '@@__IMMUTABLE_ORDERED__@@';\nconst IS_RECORD_SENTINEL = '@@__IMMUTABLE_RECORD__@@'; // immutable v4\nconst IS_SEQ_SENTINEL = '@@__IMMUTABLE_SEQ__@@';\nconst IS_SET_SENTINEL = '@@__IMMUTABLE_SET__@@';\nconst IS_STACK_SENTINEL = '@@__IMMUTABLE_STACK__@@';\nconst getImmutableName = name => `Immutable.${name}`;\nconst printAsLeaf = name => `[${name}]`;\nconst SPACE = ' ';\nconst LAZY = '\u2026'; // Seq is lazy if it calls a method like filter\n\nconst printImmutableEntries = (\n  val,\n  config,\n  indentation,\n  depth,\n  refs,\n  printer,\n  type\n) =>\n  ++depth > config.maxDepth\n    ? printAsLeaf(getImmutableName(type))\n    : `${getImmutableName(type) + SPACE}{${(0,\n      _collections.printIteratorEntries)(\n        val.entries(),\n        config,\n        indentation,\n        depth,\n        refs,\n        printer\n      )}}`;\n\n// Record has an entries method because it is a collection in immutable v3.\n// Return an iterator for Immutable Record from version v3 or v4.\nfunction getRecordEntries(val) {\n  let i = 0;\n  return {\n    next() {\n      if (i < val._keys.length) {\n        const key = val._keys[i++];\n        return {\n          done: false,\n          value: [key, val.get(key)]\n        };\n      }\n      return {\n        done: true,\n        value: undefined\n      };\n    }\n  };\n}\nconst printImmutableRecord = (\n  val,\n  config,\n  indentation,\n  depth,\n  refs,\n  printer\n) => {\n  // _name property is defined only for an Immutable Record instance\n  // which was constructed with a second optional descriptive name arg\n  const name = getImmutableName(val._name || 'Record');\n  return ++depth > config.maxDepth\n    ? printAsLeaf(name)\n    : `${name + SPACE}{${(0, _collections.printIteratorEntries)(\n        getRecordEntries(val),\n        config,\n        indentation,\n        depth,\n        refs,\n        printer\n      )}}`;\n};\nconst printImmutableSeq = (val, config, indentation, depth, refs, printer) => {\n  const name = getImmutableName('Seq');\n  if (++depth > config.maxDepth) {\n    return printAsLeaf(name);\n  }\n  if (val[IS_KEYED_SENTINEL]) {\n    return `${name + SPACE}{${\n      // from Immutable collection of entries or from ECMAScript object\n      val._iter || val._object\n        ? (0, _collections.printIteratorEntries)(\n            val.entries(),\n            config,\n            indentation,\n            depth,\n            refs,\n            printer\n          )\n        : LAZY\n    }}`;\n  }\n  return `${name + SPACE}[${\n    val._iter ||\n    // from Immutable collection of values\n    val._array ||\n    // from ECMAScript array\n    val._collection ||\n    // from ECMAScript collection in immutable v4\n    val._iterable // from ECMAScript collection in immutable v3\n      ? (0, _collections.printIteratorValues)(\n          val.values(),\n          config,\n          indentation,\n          depth,\n          refs,\n          printer\n        )\n      : LAZY\n  }]`;\n};\nconst printImmutableValues = (\n  val,\n  config,\n  indentation,\n  depth,\n  refs,\n  printer,\n  type\n) =>\n  ++depth > config.maxDepth\n    ? printAsLeaf(getImmutableName(type))\n    : `${getImmutableName(type) + SPACE}[${(0,\n      _collections.printIteratorValues)(\n        val.values(),\n        config,\n        indentation,\n        depth,\n        refs,\n        printer\n      )}]`;\nconst serialize = (val, config, indentation, depth, refs, printer) => {\n  if (val[IS_MAP_SENTINEL]) {\n    return printImmutableEntries(\n      val,\n      config,\n      indentation,\n      depth,\n      refs,\n      printer,\n      val[IS_ORDERED_SENTINEL] ? 'OrderedMap' : 'Map'\n    );\n  }\n  if (val[IS_LIST_SENTINEL]) {\n    return printImmutableValues(\n      val,\n      config,\n      indentation,\n      depth,\n      refs,\n      printer,\n      'List'\n    );\n  }\n  if (val[IS_SET_SENTINEL]) {\n    return printImmutableValues(\n      val,\n      config,\n      indentation,\n      depth,\n      refs,\n      printer,\n      val[IS_ORDERED_SENTINEL] ? 'OrderedSet' : 'Set'\n    );\n  }\n  if (val[IS_STACK_SENTINEL]) {\n    return printImmutableValues(\n      val,\n      config,\n      indentation,\n      depth,\n      refs,\n      printer,\n      'Stack'\n    );\n  }\n  if (val[IS_SEQ_SENTINEL]) {\n    return printImmutableSeq(val, config, indentation, depth, refs, printer);\n  }\n\n  // For compatibility with immutable v3 and v4, let record be the default.\n  return printImmutableRecord(val, config, indentation, depth, refs, printer);\n};\n\n// Explicitly comparing sentinel properties to true avoids false positive\n// when mock identity-obj-proxy returns the key as the value for any key.\nexports.serialize = serialize;\nconst test = val =>\n  val &&\n  (val[IS_ITERABLE_SENTINEL] === true || val[IS_RECORD_SENTINEL] === true);\nexports.test = test;\nconst plugin = {\n  serialize,\n  test\n};\nvar _default = plugin;\nexports.default = _default;\n", "/**\n * @license React\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var b=Symbol.for(\"react.element\"),c=Symbol.for(\"react.portal\"),d=Symbol.for(\"react.fragment\"),e=Symbol.for(\"react.strict_mode\"),f=Symbol.for(\"react.profiler\"),g=Symbol.for(\"react.provider\"),h=Symbol.for(\"react.context\"),k=Symbol.for(\"react.server_context\"),l=Symbol.for(\"react.forward_ref\"),m=Symbol.for(\"react.suspense\"),n=Symbol.for(\"react.suspense_list\"),p=Symbol.for(\"react.memo\"),q=Symbol.for(\"react.lazy\"),t=Symbol.for(\"react.offscreen\"),u;u=Symbol.for(\"react.module.reference\");\nfunction v(a){if(\"object\"===typeof a&&null!==a){var r=a.$$typeof;switch(r){case b:switch(a=a.type,a){case d:case f:case e:case m:case n:return a;default:switch(a=a&&a.$$typeof,a){case k:case h:case l:case q:case p:case g:return a;default:return r}}case c:return r}}}exports.ContextConsumer=h;exports.ContextProvider=g;exports.Element=b;exports.ForwardRef=l;exports.Fragment=d;exports.Lazy=q;exports.Memo=p;exports.Portal=c;exports.Profiler=f;exports.StrictMode=e;exports.Suspense=m;\nexports.SuspenseList=n;exports.isAsyncMode=function(){return!1};exports.isConcurrentMode=function(){return!1};exports.isContextConsumer=function(a){return v(a)===h};exports.isContextProvider=function(a){return v(a)===g};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===b};exports.isForwardRef=function(a){return v(a)===l};exports.isFragment=function(a){return v(a)===d};exports.isLazy=function(a){return v(a)===q};exports.isMemo=function(a){return v(a)===p};\nexports.isPortal=function(a){return v(a)===c};exports.isProfiler=function(a){return v(a)===f};exports.isStrictMode=function(a){return v(a)===e};exports.isSuspense=function(a){return v(a)===m};exports.isSuspenseList=function(a){return v(a)===n};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===d||a===f||a===e||a===m||a===n||a===t||\"object\"===typeof a&&null!==a&&(a.$$typeof===q||a.$$typeof===p||a.$$typeof===g||a.$$typeof===h||a.$$typeof===l||a.$$typeof===u||void 0!==a.getModuleId)?!0:!1};exports.typeOf=v;\n", "/**\n * @license React\n * react-is.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nif (process.env.NODE_ENV !== \"production\") {\n  (function() {\n'use strict';\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_SERVER_CONTEXT_TYPE = Symbol.for('react.server_context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar REACT_MODULE_REFERENCE;\n\n{\n  REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n  if (typeof type === 'string' || typeof type === 'function') {\n    return true;\n  } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n  if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing  || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden  || type === REACT_OFFSCREEN_TYPE || enableScopeAPI  || enableCacheElement  || enableTransitionTracing ) {\n    return true;\n  }\n\n  if (typeof type === 'object' && type !== null) {\n    if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n    // types supported by any Flight configuration anywhere since\n    // we don't know which Flight build this will end up being used\n    // with.\n    type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction typeOf(object) {\n  if (typeof object === 'object' && object !== null) {\n    var $$typeof = object.$$typeof;\n\n    switch ($$typeof) {\n      case REACT_ELEMENT_TYPE:\n        var type = object.type;\n\n        switch (type) {\n          case REACT_FRAGMENT_TYPE:\n          case REACT_PROFILER_TYPE:\n          case REACT_STRICT_MODE_TYPE:\n          case REACT_SUSPENSE_TYPE:\n          case REACT_SUSPENSE_LIST_TYPE:\n            return type;\n\n          default:\n            var $$typeofType = type && type.$$typeof;\n\n            switch ($$typeofType) {\n              case REACT_SERVER_CONTEXT_TYPE:\n              case REACT_CONTEXT_TYPE:\n              case REACT_FORWARD_REF_TYPE:\n              case REACT_LAZY_TYPE:\n              case REACT_MEMO_TYPE:\n              case REACT_PROVIDER_TYPE:\n                return $$typeofType;\n\n              default:\n                return $$typeof;\n            }\n\n        }\n\n      case REACT_PORTAL_TYPE:\n        return $$typeof;\n    }\n  }\n\n  return undefined;\n}\nvar ContextConsumer = REACT_CONTEXT_TYPE;\nvar ContextProvider = REACT_PROVIDER_TYPE;\nvar Element = REACT_ELEMENT_TYPE;\nvar ForwardRef = REACT_FORWARD_REF_TYPE;\nvar Fragment = REACT_FRAGMENT_TYPE;\nvar Lazy = REACT_LAZY_TYPE;\nvar Memo = REACT_MEMO_TYPE;\nvar Portal = REACT_PORTAL_TYPE;\nvar Profiler = REACT_PROFILER_TYPE;\nvar StrictMode = REACT_STRICT_MODE_TYPE;\nvar Suspense = REACT_SUSPENSE_TYPE;\nvar SuspenseList = REACT_SUSPENSE_LIST_TYPE;\nvar hasWarnedAboutDeprecatedIsAsyncMode = false;\nvar hasWarnedAboutDeprecatedIsConcurrentMode = false; // AsyncMode should be deprecated\n\nfunction isAsyncMode(object) {\n  {\n    if (!hasWarnedAboutDeprecatedIsAsyncMode) {\n      hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint\n\n      console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n    }\n  }\n\n  return false;\n}\nfunction isConcurrentMode(object) {\n  {\n    if (!hasWarnedAboutDeprecatedIsConcurrentMode) {\n      hasWarnedAboutDeprecatedIsConcurrentMode = true; // Using console['warn'] to evade Babel and ESLint\n\n      console['warn']('The ReactIs.isConcurrentMode() alias has been deprecated, ' + 'and will be removed in React 18+.');\n    }\n  }\n\n  return false;\n}\nfunction isContextConsumer(object) {\n  return typeOf(object) === REACT_CONTEXT_TYPE;\n}\nfunction isContextProvider(object) {\n  return typeOf(object) === REACT_PROVIDER_TYPE;\n}\nfunction isElement(object) {\n  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\nfunction isForwardRef(object) {\n  return typeOf(object) === REACT_FORWARD_REF_TYPE;\n}\nfunction isFragment(object) {\n  return typeOf(object) === REACT_FRAGMENT_TYPE;\n}\nfunction isLazy(object) {\n  return typeOf(object) === REACT_LAZY_TYPE;\n}\nfunction isMemo(object) {\n  return typeOf(object) === REACT_MEMO_TYPE;\n}\nfunction isPortal(object) {\n  return typeOf(object) === REACT_PORTAL_TYPE;\n}\nfunction isProfiler(object) {\n  return typeOf(object) === REACT_PROFILER_TYPE;\n}\nfunction isStrictMode(object) {\n  return typeOf(object) === REACT_STRICT_MODE_TYPE;\n}\nfunction isSuspense(object) {\n  return typeOf(object) === REACT_SUSPENSE_TYPE;\n}\nfunction isSuspenseList(object) {\n  return typeOf(object) === REACT_SUSPENSE_LIST_TYPE;\n}\n\nexports.ContextConsumer = ContextConsumer;\nexports.ContextProvider = ContextProvider;\nexports.Element = Element;\nexports.ForwardRef = ForwardRef;\nexports.Fragment = Fragment;\nexports.Lazy = Lazy;\nexports.Memo = Memo;\nexports.Portal = Portal;\nexports.Profiler = Profiler;\nexports.StrictMode = StrictMode;\nexports.Suspense = Suspense;\nexports.SuspenseList = SuspenseList;\nexports.isAsyncMode = isAsyncMode;\nexports.isConcurrentMode = isConcurrentMode;\nexports.isContextConsumer = isContextConsumer;\nexports.isContextProvider = isContextProvider;\nexports.isElement = isElement;\nexports.isForwardRef = isForwardRef;\nexports.isFragment = isFragment;\nexports.isLazy = isLazy;\nexports.isMemo = isMemo;\nexports.isPortal = isPortal;\nexports.isProfiler = isProfiler;\nexports.isStrictMode = isStrictMode;\nexports.isSuspense = isSuspense;\nexports.isSuspenseList = isSuspenseList;\nexports.isValidElementType = isValidElementType;\nexports.typeOf = typeOf;\n  })();\n}\n", "'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n  module.exports = require('./cjs/react-is.production.min.js');\n} else {\n  module.exports = require('./cjs/react-is.development.js');\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar ReactIs = _interopRequireWildcard(require('react-is'));\nvar _markup = require('./lib/markup');\nfunction _getRequireWildcardCache(nodeInterop) {\n  if (typeof WeakMap !== 'function') return null;\n  var cacheBabelInterop = new WeakMap();\n  var cacheNodeInterop = new WeakMap();\n  return (_getRequireWildcardCache = function (nodeInterop) {\n    return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n  })(nodeInterop);\n}\nfunction _interopRequireWildcard(obj, nodeInterop) {\n  if (!nodeInterop && obj && obj.__esModule) {\n    return obj;\n  }\n  if (obj === null || (typeof obj !== 'object' && typeof obj !== 'function')) {\n    return {default: obj};\n  }\n  var cache = _getRequireWildcardCache(nodeInterop);\n  if (cache && cache.has(obj)) {\n    return cache.get(obj);\n  }\n  var newObj = {};\n  var hasPropertyDescriptor =\n    Object.defineProperty && Object.getOwnPropertyDescriptor;\n  for (var key in obj) {\n    if (key !== 'default' && Object.prototype.hasOwnProperty.call(obj, key)) {\n      var desc = hasPropertyDescriptor\n        ? Object.getOwnPropertyDescriptor(obj, key)\n        : null;\n      if (desc && (desc.get || desc.set)) {\n        Object.defineProperty(newObj, key, desc);\n      } else {\n        newObj[key] = obj[key];\n      }\n    }\n  }\n  newObj.default = obj;\n  if (cache) {\n    cache.set(obj, newObj);\n  }\n  return newObj;\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n// Given element.props.children, or subtree during recursive traversal,\n// return flattened array of children.\nconst getChildren = (arg, children = []) => {\n  if (Array.isArray(arg)) {\n    arg.forEach(item => {\n      getChildren(item, children);\n    });\n  } else if (arg != null && arg !== false) {\n    children.push(arg);\n  }\n  return children;\n};\nconst getType = element => {\n  const type = element.type;\n  if (typeof type === 'string') {\n    return type;\n  }\n  if (typeof type === 'function') {\n    return type.displayName || type.name || 'Unknown';\n  }\n  if (ReactIs.isFragment(element)) {\n    return 'React.Fragment';\n  }\n  if (ReactIs.isSuspense(element)) {\n    return 'React.Suspense';\n  }\n  if (typeof type === 'object' && type !== null) {\n    if (ReactIs.isContextProvider(element)) {\n      return 'Context.Provider';\n    }\n    if (ReactIs.isContextConsumer(element)) {\n      return 'Context.Consumer';\n    }\n    if (ReactIs.isForwardRef(element)) {\n      if (type.displayName) {\n        return type.displayName;\n      }\n      const functionName = type.render.displayName || type.render.name || '';\n      return functionName !== '' ? `ForwardRef(${functionName})` : 'ForwardRef';\n    }\n    if (ReactIs.isMemo(element)) {\n      const functionName =\n        type.displayName || type.type.displayName || type.type.name || '';\n      return functionName !== '' ? `Memo(${functionName})` : 'Memo';\n    }\n  }\n  return 'UNDEFINED';\n};\nconst getPropKeys = element => {\n  const {props} = element;\n  return Object.keys(props)\n    .filter(key => key !== 'children' && props[key] !== undefined)\n    .sort();\n};\nconst serialize = (element, config, indentation, depth, refs, printer) =>\n  ++depth > config.maxDepth\n    ? (0, _markup.printElementAsLeaf)(getType(element), config)\n    : (0, _markup.printElement)(\n        getType(element),\n        (0, _markup.printProps)(\n          getPropKeys(element),\n          element.props,\n          config,\n          indentation + config.indent,\n          depth,\n          refs,\n          printer\n        ),\n        (0, _markup.printChildren)(\n          getChildren(element.props.children),\n          config,\n          indentation + config.indent,\n          depth,\n          refs,\n          printer\n        ),\n        config,\n        indentation\n      );\nexports.serialize = serialize;\nconst test = val => val != null && ReactIs.isElement(val);\nexports.test = test;\nconst plugin = {\n  serialize,\n  test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.test = exports.serialize = exports.default = void 0;\nvar _markup = require('./lib/markup');\nvar Symbol = globalThis['jest-symbol-do-not-touch'] || globalThis.Symbol;\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n// Child can be `number` in Stack renderer but not in Fiber renderer.\n\nconst testSymbol =\n  typeof Symbol === 'function' && Symbol.for\n    ? Symbol.for('react.test.json')\n    : 0xea71357;\nconst getPropKeys = object => {\n  const {props} = object;\n  return props\n    ? Object.keys(props)\n        .filter(key => props[key] !== undefined)\n        .sort()\n    : [];\n};\nconst serialize = (object, config, indentation, depth, refs, printer) =>\n  ++depth > config.maxDepth\n    ? (0, _markup.printElementAsLeaf)(object.type, config)\n    : (0, _markup.printElement)(\n        object.type,\n        object.props\n          ? (0, _markup.printProps)(\n              getPropKeys(object),\n              object.props,\n              config,\n              indentation + config.indent,\n              depth,\n              refs,\n              printer\n            )\n          : '',\n        object.children\n          ? (0, _markup.printChildren)(\n              object.children,\n              config,\n              indentation + config.indent,\n              depth,\n              refs,\n              printer\n            )\n          : '',\n        config,\n        indentation\n      );\nexports.serialize = serialize;\nconst test = val => val && val.$$typeof === testSymbol;\nexports.test = test;\nconst plugin = {\n  serialize,\n  test\n};\nvar _default = plugin;\nexports.default = _default;\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', {\n  value: true\n});\nexports.default = exports.DEFAULT_OPTIONS = void 0;\nexports.format = format;\nexports.plugins = void 0;\nvar _ansiStyles = _interopRequireDefault(require('ansi-styles'));\nvar _collections = require('./collections');\nvar _AsymmetricMatcher = _interopRequireDefault(\n  require('./plugins/AsymmetricMatcher')\n);\nvar _DOMCollection = _interopRequireDefault(require('./plugins/DOMCollection'));\nvar _DOMElement = _interopRequireDefault(require('./plugins/DOMElement'));\nvar _Immutable = _interopRequireDefault(require('./plugins/Immutable'));\nvar _ReactElement = _interopRequireDefault(require('./plugins/ReactElement'));\nvar _ReactTestComponent = _interopRequireDefault(\n  require('./plugins/ReactTestComponent')\n);\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {default: obj};\n}\n/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n/* eslint-disable local/ban-types-eventually */\n\nconst toString = Object.prototype.toString;\nconst toISOString = Date.prototype.toISOString;\nconst errorToString = Error.prototype.toString;\nconst regExpToString = RegExp.prototype.toString;\n\n/**\n * Explicitly comparing typeof constructor to function avoids undefined as name\n * when mock identity-obj-proxy returns the key as the value for any key.\n */\nconst getConstructorName = val =>\n  (typeof val.constructor === 'function' && val.constructor.name) || 'Object';\n\n/* global window */\n/** Is val is equal to global window object? Works even if it does not exist :) */\nconst isWindow = val => typeof window !== 'undefined' && val === window;\nconst SYMBOL_REGEXP = /^Symbol\\((.*)\\)(.*)$/;\nconst NEWLINE_REGEXP = /\\n/gi;\nclass PrettyFormatPluginError extends Error {\n  constructor(message, stack) {\n    super(message);\n    this.stack = stack;\n    this.name = this.constructor.name;\n  }\n}\nfunction isToStringedArrayType(toStringed) {\n  return (\n    toStringed === '[object Array]' ||\n    toStringed === '[object ArrayBuffer]' ||\n    toStringed === '[object DataView]' ||\n    toStringed === '[object Float32Array]' ||\n    toStringed === '[object Float64Array]' ||\n    toStringed === '[object Int8Array]' ||\n    toStringed === '[object Int16Array]' ||\n    toStringed === '[object Int32Array]' ||\n    toStringed === '[object Uint8Array]' ||\n    toStringed === '[object Uint8ClampedArray]' ||\n    toStringed === '[object Uint16Array]' ||\n    toStringed === '[object Uint32Array]'\n  );\n}\nfunction printNumber(val) {\n  return Object.is(val, -0) ? '-0' : String(val);\n}\nfunction printBigInt(val) {\n  return String(`${val}n`);\n}\nfunction printFunction(val, printFunctionName) {\n  if (!printFunctionName) {\n    return '[Function]';\n  }\n  return `[Function ${val.name || 'anonymous'}]`;\n}\nfunction printSymbol(val) {\n  return String(val).replace(SYMBOL_REGEXP, 'Symbol($1)');\n}\nfunction printError(val) {\n  return `[${errorToString.call(val)}]`;\n}\n\n/**\n * The first port of call for printing an object, handles most of the\n * data-types in JS.\n */\nfunction printBasicValue(val, printFunctionName, escapeRegex, escapeString) {\n  if (val === true || val === false) {\n    return `${val}`;\n  }\n  if (val === undefined) {\n    return 'undefined';\n  }\n  if (val === null) {\n    return 'null';\n  }\n  const typeOf = typeof val;\n  if (typeOf === 'number') {\n    return printNumber(val);\n  }\n  if (typeOf === 'bigint') {\n    return printBigInt(val);\n  }\n  if (typeOf === 'string') {\n    if (escapeString) {\n      return `\"${val.replace(/\"|\\\\/g, '\\\\$&')}\"`;\n    }\n    return `\"${val}\"`;\n  }\n  if (typeOf === 'function') {\n    return printFunction(val, printFunctionName);\n  }\n  if (typeOf === 'symbol') {\n    return printSymbol(val);\n  }\n  const toStringed = toString.call(val);\n  if (toStringed === '[object WeakMap]') {\n    return 'WeakMap {}';\n  }\n  if (toStringed === '[object WeakSet]') {\n    return 'WeakSet {}';\n  }\n  if (\n    toStringed === '[object Function]' ||\n    toStringed === '[object GeneratorFunction]'\n  ) {\n    return printFunction(val, printFunctionName);\n  }\n  if (toStringed === '[object Symbol]') {\n    return printSymbol(val);\n  }\n  if (toStringed === '[object Date]') {\n    return isNaN(+val) ? 'Date { NaN }' : toISOString.call(val);\n  }\n  if (toStringed === '[object Error]') {\n    return printError(val);\n  }\n  if (toStringed === '[object RegExp]') {\n    if (escapeRegex) {\n      // https://github.com/benjamingr/RegExp.escape/blob/main/polyfill.js\n      return regExpToString.call(val).replace(/[\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n    }\n    return regExpToString.call(val);\n  }\n  if (val instanceof Error) {\n    return printError(val);\n  }\n  return null;\n}\n\n/**\n * Handles more complex objects ( such as objects with circular references.\n * maps and sets etc )\n */\nfunction printComplexValue(\n  val,\n  config,\n  indentation,\n  depth,\n  refs,\n  hasCalledToJSON\n) {\n  if (refs.indexOf(val) !== -1) {\n    return '[Circular]';\n  }\n  refs = refs.slice();\n  refs.push(val);\n  const hitMaxDepth = ++depth > config.maxDepth;\n  const min = config.min;\n  if (\n    config.callToJSON &&\n    !hitMaxDepth &&\n    val.toJSON &&\n    typeof val.toJSON === 'function' &&\n    !hasCalledToJSON\n  ) {\n    return printer(val.toJSON(), config, indentation, depth, refs, true);\n  }\n  const toStringed = toString.call(val);\n  if (toStringed === '[object Arguments]') {\n    return hitMaxDepth\n      ? '[Arguments]'\n      : `${min ? '' : 'Arguments '}[${(0, _collections.printListItems)(\n          val,\n          config,\n          indentation,\n          depth,\n          refs,\n          printer\n        )}]`;\n  }\n  if (isToStringedArrayType(toStringed)) {\n    return hitMaxDepth\n      ? `[${val.constructor.name}]`\n      : `${\n          min\n            ? ''\n            : !config.printBasicPrototype && val.constructor.name === 'Array'\n            ? ''\n            : `${val.constructor.name} `\n        }[${(0, _collections.printListItems)(\n          val,\n          config,\n          indentation,\n          depth,\n          refs,\n          printer\n        )}]`;\n  }\n  if (toStringed === '[object Map]') {\n    return hitMaxDepth\n      ? '[Map]'\n      : `Map {${(0, _collections.printIteratorEntries)(\n          val.entries(),\n          config,\n          indentation,\n          depth,\n          refs,\n          printer,\n          ' => '\n        )}}`;\n  }\n  if (toStringed === '[object Set]') {\n    return hitMaxDepth\n      ? '[Set]'\n      : `Set {${(0, _collections.printIteratorValues)(\n          val.values(),\n          config,\n          indentation,\n          depth,\n          refs,\n          printer\n        )}}`;\n  }\n\n  // Avoid failure to serialize global window object in jsdom test environment.\n  // For example, not even relevant if window is prop of React element.\n  return hitMaxDepth || isWindow(val)\n    ? `[${getConstructorName(val)}]`\n    : `${\n        min\n          ? ''\n          : !config.printBasicPrototype && getConstructorName(val) === 'Object'\n          ? ''\n          : `${getConstructorName(val)} `\n      }{${(0, _collections.printObjectProperties)(\n        val,\n        config,\n        indentation,\n        depth,\n        refs,\n        printer\n      )}}`;\n}\nfunction isNewPlugin(plugin) {\n  return plugin.serialize != null;\n}\nfunction printPlugin(plugin, val, config, indentation, depth, refs) {\n  let printed;\n  try {\n    printed = isNewPlugin(plugin)\n      ? plugin.serialize(val, config, indentation, depth, refs, printer)\n      : plugin.print(\n          val,\n          valChild => printer(valChild, config, indentation, depth, refs),\n          str => {\n            const indentationNext = indentation + config.indent;\n            return (\n              indentationNext +\n              str.replace(NEWLINE_REGEXP, `\\n${indentationNext}`)\n            );\n          },\n          {\n            edgeSpacing: config.spacingOuter,\n            min: config.min,\n            spacing: config.spacingInner\n          },\n          config.colors\n        );\n  } catch (error) {\n    throw new PrettyFormatPluginError(error.message, error.stack);\n  }\n  if (typeof printed !== 'string') {\n    throw new Error(\n      `pretty-format: Plugin must return type \"string\" but instead returned \"${typeof printed}\".`\n    );\n  }\n  return printed;\n}\nfunction findPlugin(plugins, val) {\n  for (let p = 0; p < plugins.length; p++) {\n    try {\n      if (plugins[p].test(val)) {\n        return plugins[p];\n      }\n    } catch (error) {\n      throw new PrettyFormatPluginError(error.message, error.stack);\n    }\n  }\n  return null;\n}\nfunction printer(val, config, indentation, depth, refs, hasCalledToJSON) {\n  const plugin = findPlugin(config.plugins, val);\n  if (plugin !== null) {\n    return printPlugin(plugin, val, config, indentation, depth, refs);\n  }\n  const basicResult = printBasicValue(\n    val,\n    config.printFunctionName,\n    config.escapeRegex,\n    config.escapeString\n  );\n  if (basicResult !== null) {\n    return basicResult;\n  }\n  return printComplexValue(\n    val,\n    config,\n    indentation,\n    depth,\n    refs,\n    hasCalledToJSON\n  );\n}\nconst DEFAULT_THEME = {\n  comment: 'gray',\n  content: 'reset',\n  prop: 'yellow',\n  tag: 'cyan',\n  value: 'green'\n};\nconst DEFAULT_THEME_KEYS = Object.keys(DEFAULT_THEME);\n\n// could be replaced by `satisfies` operator in the future: https://github.com/microsoft/TypeScript/issues/47920\nconst toOptionsSubtype = options => options;\nconst DEFAULT_OPTIONS = toOptionsSubtype({\n  callToJSON: true,\n  compareKeys: undefined,\n  escapeRegex: false,\n  escapeString: true,\n  highlight: false,\n  indent: 2,\n  maxDepth: Infinity,\n  maxWidth: Infinity,\n  min: false,\n  plugins: [],\n  printBasicPrototype: true,\n  printFunctionName: true,\n  theme: DEFAULT_THEME\n});\nexports.DEFAULT_OPTIONS = DEFAULT_OPTIONS;\nfunction validateOptions(options) {\n  Object.keys(options).forEach(key => {\n    if (!Object.prototype.hasOwnProperty.call(DEFAULT_OPTIONS, key)) {\n      throw new Error(`pretty-format: Unknown option \"${key}\".`);\n    }\n  });\n  if (options.min && options.indent !== undefined && options.indent !== 0) {\n    throw new Error(\n      'pretty-format: Options \"min\" and \"indent\" cannot be used together.'\n    );\n  }\n  if (options.theme !== undefined) {\n    if (options.theme === null) {\n      throw new Error('pretty-format: Option \"theme\" must not be null.');\n    }\n    if (typeof options.theme !== 'object') {\n      throw new Error(\n        `pretty-format: Option \"theme\" must be of type \"object\" but instead received \"${typeof options.theme}\".`\n      );\n    }\n  }\n}\nconst getColorsHighlight = options =>\n  DEFAULT_THEME_KEYS.reduce((colors, key) => {\n    const value =\n      options.theme && options.theme[key] !== undefined\n        ? options.theme[key]\n        : DEFAULT_THEME[key];\n    const color = value && _ansiStyles.default[value];\n    if (\n      color &&\n      typeof color.close === 'string' &&\n      typeof color.open === 'string'\n    ) {\n      colors[key] = color;\n    } else {\n      throw new Error(\n        `pretty-format: Option \"theme\" has a key \"${key}\" whose value \"${value}\" is undefined in ansi-styles.`\n      );\n    }\n    return colors;\n  }, Object.create(null));\nconst getColorsEmpty = () =>\n  DEFAULT_THEME_KEYS.reduce((colors, key) => {\n    colors[key] = {\n      close: '',\n      open: ''\n    };\n    return colors;\n  }, Object.create(null));\nconst getPrintFunctionName = options =>\n  options?.printFunctionName ?? DEFAULT_OPTIONS.printFunctionName;\nconst getEscapeRegex = options =>\n  options?.escapeRegex ?? DEFAULT_OPTIONS.escapeRegex;\nconst getEscapeString = options =>\n  options?.escapeString ?? DEFAULT_OPTIONS.escapeString;\nconst getConfig = options => ({\n  callToJSON: options?.callToJSON ?? DEFAULT_OPTIONS.callToJSON,\n  colors: options?.highlight ? getColorsHighlight(options) : getColorsEmpty(),\n  compareKeys:\n    typeof options?.compareKeys === 'function' || options?.compareKeys === null\n      ? options.compareKeys\n      : DEFAULT_OPTIONS.compareKeys,\n  escapeRegex: getEscapeRegex(options),\n  escapeString: getEscapeString(options),\n  indent: options?.min\n    ? ''\n    : createIndent(options?.indent ?? DEFAULT_OPTIONS.indent),\n  maxDepth: options?.maxDepth ?? DEFAULT_OPTIONS.maxDepth,\n  maxWidth: options?.maxWidth ?? DEFAULT_OPTIONS.maxWidth,\n  min: options?.min ?? DEFAULT_OPTIONS.min,\n  plugins: options?.plugins ?? DEFAULT_OPTIONS.plugins,\n  printBasicPrototype: options?.printBasicPrototype ?? true,\n  printFunctionName: getPrintFunctionName(options),\n  spacingInner: options?.min ? ' ' : '\\n',\n  spacingOuter: options?.min ? '' : '\\n'\n});\nfunction createIndent(indent) {\n  return new Array(indent + 1).join(' ');\n}\n\n/**\n * Returns a presentation string of your `val` object\n * @param val any potential JavaScript object\n * @param options Custom settings\n */\nfunction format(val, options) {\n  if (options) {\n    validateOptions(options);\n    if (options.plugins) {\n      const plugin = findPlugin(options.plugins, val);\n      if (plugin !== null) {\n        return printPlugin(plugin, val, getConfig(options), '', 0, []);\n      }\n    }\n  }\n  const basicResult = printBasicValue(\n    val,\n    getPrintFunctionName(options),\n    getEscapeRegex(options),\n    getEscapeString(options)\n  );\n  if (basicResult !== null) {\n    return basicResult;\n  }\n  return printComplexValue(val, getConfig(options), '', 0, []);\n}\nconst plugins = {\n  AsymmetricMatcher: _AsymmetricMatcher.default,\n  DOMCollection: _DOMCollection.default,\n  DOMElement: _DOMElement.default,\n  Immutable: _Immutable.default,\n  ReactElement: _ReactElement.default,\n  ReactTestComponent: _ReactTestComponent.default\n};\nexports.plugins = plugins;\nvar _default = format;\nexports.default = _default;\n", "import { QueryPlan } from './';\nimport prettyFormat from 'pretty-format';\nimport { astSerializer, queryPlanSerializer } from './snapshotSerializers';\n\nexport function prettyFormatQueryPlan(queryPlan: QueryPlan) {\n  return prettyFormat(queryPlan, {\n    plugins: [queryPlanSerializer, astSerializer],\n  });\n}\n", "import {\n  Kind,\n  SelectionNode as GraphQLJSSelectionNode,\n  OperationTypeNode,\n  DocumentNode,\n} from 'graphql';\nimport prettyFormat from 'pretty-format';\nimport { queryPlanSerializer, astSerializer } from './snapshotSerializers';\n\nexport type ResponsePath = (string | number)[];\n\nexport interface QueryPlan {\n  kind: 'QueryPlan';\n  node?: PlanNode | SubscriptionNode;\n}\n\nexport type PlanNode = SequenceNode | ParallelNode | FetchNode | FlattenNode | DeferNode | ConditionNode;\n\nexport interface SequenceNode {\n  kind: 'Sequence';\n  nodes: PlanNode[];\n}\n\nexport interface ParallelNode {\n  kind: 'Parallel';\n  nodes: PlanNode[];\n}\n\nexport interface SubscriptionNode {\n  kind: 'Subscription';\n  primary: FetchNode;\n  rest?: PlanNode;\n}\n\nexport interface FetchNode {\n  kind: 'Fetch';\n  serviceName: string;\n  // Optional identifier for the fetch for defer support. All fetches of a given plan will be guaranteed to have a unique `id`.\n  id?: string,\n  // If QP defer support is enabled _and_ the `serviceName` subgraph support defer, then whether `operation` contains some @defer. Unset otherwise.\n  hasDefers?: boolean,\n  variableUsages?: string[];\n  requires?: QueryPlanSelectionNode[];\n  operation: string;\n  operationName: string | undefined;\n  operationKind: OperationTypeNode;\n  operationDocumentNode?: DocumentNode;\n  // Optionally describe a number of \"rewrites\" that query plan executors should apply to the data that is sent as input of this fetch.\n  // Note that such rewrites should only impact the inputs of the fetch they are applied to (meaning that, as those inputs are collected\n  // from the current in-memory result, the rewrite should _not_ impact said in-memory results, only what is sent in the fetch).\n  inputRewrites?: FetchDataRewrite[];\n  // Similar, but for optional \"rewrites\" to apply to the data that received from a fetch (and before it is applied to the current in-memory results).\n  outputRewrites?: FetchDataRewrite[];\n  \n  // Optional rewrites to apply to the data that is sent as input of this fetch. This is a list of rewrites that should be applied to the data\n  contextRewrites?: FetchDataKeyRenamer[];\n}\n\n/**\n * The type of rewrites currently supported on the input/output data of fetches.\n *\n * A rewrite usually identifies some subpart of thedata and some action to perform on that subpart.\n */\nexport type FetchDataRewrite = FetchDataValueSetter | FetchDataKeyRenamer;\n\n/**\n * A rewrite that sets a value at the provided path of the data it is applied to.\n */\nexport interface FetchDataValueSetter {\n  kind: 'ValueSetter',\n  // Path to the key that is set by this \"rewrite\". It is of the form `[ 'x', '... on A', 'y' ]`, where fragments\n  // means that the path should only match for objects whose `__typename` is he provided type.\n  // If the path does not match in the data this is applied to, then this setter should not rewrite the data.\n  // The path starts at the top of the data it is applied to. So for instance, for fetch data inputs, the path\n  // start at the root of the object representing those inputs.\n  path: string[],\n  // The value to set at `path`.\n  setValueTo: any,\n}\n\nexport interface FetchDataKeyRenamer {\n  kind: 'KeyRenamer'\n  // Same format as in `FetchDataValueSetter`, but this renames the key at the very end of this path to the\n  // name from `renameKeyTo`.\n  path: string[],\n  renameKeyTo: string,\n}\n\nexport interface FlattenNode {\n  kind: 'Flatten';\n  path: ResponsePath;\n  node: PlanNode;\n}\n\n/**\n * A `DeferNode` corresponds to one or more @defer at the same level of \"nestedness\" in the planned query.\n *\n * It contains a \"primary block\" and an array of \"deferred blocks\". The \"primary block represents the part of\n * the query that is _not_ deferred (so the part of the query up until we reach the @defer(s) this handle),\n * while each \"deferred block\" correspond to the deferred part of one of the @defer handle by the node.\n *\n * Note that `DeferNode` are only generated if defer support is enabled for the query planner. Also note that\n * if said support is enabled, then `DeferNode` are always generated if the query has a @defer, even if in some\n * case the generated plan may not \"truly\" defer the underlying fetches (in cases where `defered[*].node`\n * are all undefined; this currently happens because some specific case of defer cannot be handled, but could\n * later also happen if we implement more advanced server-side heuristic to decide if deferring is judicious or\n * not). This allow the executor of the plan to consistely send a defer-abiding multipart response to the client.\n */\nexport interface DeferNode {\n  kind: 'Defer',\n  // The \"primary\" part of a defer, that is the non-deferred part (though could be deferred itself for a nested defer).\n  primary: {\n    // The part of the original query that \"selects\" the data to send in that primary response (once the plan in `node` completes).\n    // Note that if this `DeferNode` is nested, then it must come inside the `DeferredNode` in which it is nested, and in that\n    // case this subselection will start that that parent `DeferredNode.path`.\n    // Note: this can be undefined in the rare case where everything in the original query is deferred (which is not very\n    // useful in practice, but not disallowed by the @defer spec at the moment).\n    subselection?: string,\n    // The plan to get all the data for that primary part. Same as for subselection: usually defined, but can be undefined\n    // in some corner cases where nothing is to be done in the primary part.\n    node?: PlanNode,\n  },\n  // The \"deferred\" parts of the defer (note that it's an array). Each of those deferred elements will correspond to\n  // a different chunk of the response to the client (after the initial non-deferred one that is).\n  deferred: DeferredNode[],\n}\n\n// Note that `DeferredNode` is not a \"full\" node in the sense that it is not part of the `PlanNode`\n// type union, because it never appears alone, it is a sub-part of `DeferNode`. It is nonetheless\n// useful to extract it as a named type for use in the code generating plans.\nexport interface DeferredNode {\n  // References one or more fetch node(s) (by `id`) within `primary.node`. The plan of this deferred part should not be started before all those fetches returns.\n  depends: {\n    id: string,\n    // If `FetchNode` pointed by `id` has `hasDefers=true` and this value is set (to the label of one of the defer of the pointed fetch), then this deferred \"block\"\n    // .\n    deferLabel?: string,\n  }[],\n  // The optional defer label.\n  label?: string,\n  // Path, in the query, to the @defer this corresponds to. The `subselection` starts at that `queryPath`.\n  // This look like: `[ 'products', '... on Book', 'reviews' ]`\n  queryPath: string[],\n  // The part of the original query that \"selects\" the data to send in that deferred response (once the plan in `node` completes). Will be set _unless_ `node` is a `DeferNode` itself.\n  subselection?: string,\n  // The plan to get all the data for that deferred part. Usually set, but can be undefined for a `@defer` where everything has been fetched in the \"primary block\", that is when\n  // this deferred only exists to expose what should be send to the upstream client in a deferred response, but without declaring additional fetches (which happens for @defer that\n  // cannot be handled through query planner and where the defer cannot be passed through to the subgraph).\n  node?: PlanNode,\n}\n\nexport interface ConditionNode {\n  kind: 'Condition',\n  condition: string,\n  ifClause?: PlanNode,\n  elseClause?: PlanNode,\n}\n\n/**\n * SelectionNodes from GraphQL-js _can_ have a FragmentSpreadNode\n * but this SelectionNode is specifically typing the `requires` key\n * in a built query plan, where there can't be FragmentSpreadNodes\n * since that info is contained in the `FetchNode.operation`\n */\nexport type QueryPlanSelectionNode = QueryPlanFieldNode | QueryPlanInlineFragmentNode;\n\nexport interface QueryPlanFieldNode {\n  readonly kind: 'Field';\n  readonly alias?: string;\n  readonly name: string;\n  readonly selections?: QueryPlanSelectionNode[];\n}\n\nexport interface QueryPlanInlineFragmentNode {\n  readonly kind: 'InlineFragment';\n  readonly typeCondition?: string;\n  readonly selections: QueryPlanSelectionNode[];\n}\n\nexport function serializeQueryPlan(queryPlan: QueryPlan) {\n  return prettyFormat(queryPlan, {\n    plugins: [queryPlanSerializer, astSerializer],\n  });\n}\n\nexport function getResponseName(node: QueryPlanFieldNode): string {\n  return node.alias ? node.alias : node.name;\n}\n\n/**\n * Converts a GraphQL-js SelectionNode to our newly defined SelectionNode\n *\n * This function is used to remove the unneeded pieces of a SelectionSet's\n * `.selections`. It is only ever called on a query plan's `requires` field,\n * so we can guarantee there won't be any FragmentSpreads passed in. That's why\n * we can ignore the case where `selection.kind === Kind.FRAGMENT_SPREAD`\n */\nexport const trimSelectionNodes = (\n  selections: readonly GraphQLJSSelectionNode[],\n): QueryPlanSelectionNode[] => {\n  /**\n   * Using an array to push to instead of returning value from `selections.map`\n   * because TypeScript thinks we can encounter a `Kind.FRAGMENT_SPREAD` here,\n   * so if we mapped the array directly to the return, we'd have to `return undefined`\n   * from one branch of the map and then `.filter(Boolean)` on that returned\n   * array\n   */\n  const remapped: QueryPlanSelectionNode[] = [];\n\n  selections.forEach((selection) => {\n    if (selection.kind === Kind.FIELD) {\n      remapped.push({\n        kind: Kind.FIELD,\n        name: selection.name.value,\n        selections:\n          selection.selectionSet &&\n          trimSelectionNodes(selection.selectionSet.selections),\n      });\n    }\n    if (selection.kind === Kind.INLINE_FRAGMENT) {\n      remapped.push({\n        kind: Kind.INLINE_FRAGMENT,\n        typeCondition: selection.typeCondition?.name.value,\n        selections: trimSelectionNodes(selection.selectionSet.selections),\n      });\n    }\n  });\n\n  return remapped;\n};\n\nexport const isPlanNode = (node: PlanNode | SubscriptionNode | undefined): node is PlanNode => {\n  return !!node && node.kind !== 'Subscription';\n}\n", "import { FieldDefinition, CompositeType, SchemaRootKind } from \"@apollo/federation-internals\";\n\n/**\n * The type of query graphs edge \"transitions\".\n *\n * An edge transition encodes what the edges correspond to, in the underlying graphQL\n * schema.\n */\nexport type Transition =\n  /**\n   * A field: the edge goes from (a vertex for) the field parent type, to the field (base) type.\n   */\n  FieldCollection\n\n  /**\n   * A \"downcast\": the edges goes from an abstract type (interface or union) to a type that implements that abstract\n   * type (for interfaces) or is a member of that abstract type (for unions)\n   */\n  | DownCast\n\n  /**\n   * A key, only found in \"federated\" query graphs: the edge goes from an entity type in a particular subgraph to the\n   * same entity type but in another subgraph. Edge with key transition _must_ have `conditions` corresponding to the\n   * key fields\n   */\n  | KeyResolution\n\n  /**\n   * A root type, only found in \"federated\" query graphs: the edge goes from a root type (query, mutation or subscription)\n   * of a subgraph to the (same) root type of another subgraph. It encodes the fact that if a subgraph field returns a root\n   * type, any subgraph can be queried from there.\n   */\n  | RootTypeResolution\n\n  /**\n   * A \"subgraph entering\" edge: this is a special case only used for the edges out of the root vertices of \"federated\"\n   * query graphs. It does not correspond to any physical graphQL elements but can be understood as the fact that the gateway\n   * is always free to start querying any of the subgraph services as needed.\n   */\n  | SubgraphEnteringTransition\n\n  /**\n   * A special \"fake\" downcast for an @interfaceObject type to an implementation, only found in \"federated\" query graphs:\n   * this encodes the fact that an @interfaceObject type \"stand-in\" for any possible implementations (in the supergraph)\n   * of the corresponding interface. It is \"fake\" because the corresponding edges stays on the @interfaceObject type (this\n   * is also why the \"casted type\" is only a name: that casted type does not actually exists in the subgraph in which \n   * the corresponding edge will be found).\n   */\n  | InterfaceObjectFakeDownCast\n;\n\nexport class KeyResolution {\n  readonly kind = 'KeyResolution'\n  readonly collectOperationElements = false;\n\n  toString() {\n    return 'key()';\n  }\n}\n\nexport class RootTypeResolution {\n  readonly kind = 'RootTypeResolution';\n  readonly collectOperationElements = false;\n\n  constructor(readonly rootKind: SchemaRootKind) {\n  }\n\n  toString() {\n    return this.rootKind + '()';\n  }\n}\n\nexport class FieldCollection {\n  readonly kind = 'FieldCollection';\n  readonly collectOperationElements = true;\n\n  constructor(\n    readonly definition: FieldDefinition<CompositeType>,\n    readonly isPartOfProvide: boolean = false\n  ) {}\n\n  toString() {\n    return this.definition.name;\n  }\n}\n\nexport class DownCast {\n  readonly kind = 'DownCast';\n  readonly collectOperationElements = true;\n\n  constructor(readonly sourceType: CompositeType, readonly castedType: CompositeType) {}\n\n  toString() {\n    return '... on ' + this.castedType.name;\n  }\n}\n\nexport class SubgraphEnteringTransition {\n  readonly kind = 'SubgraphEnteringTransition';\n  readonly collectOperationElements = false;\n\n  toString() {\n    return '\u2205';\n  }\n}\n\nexport class InterfaceObjectFakeDownCast {\n  readonly kind = 'InterfaceObjectFakeDownCast';\n  readonly collectOperationElements = true;\n\n  constructor(readonly sourceType: CompositeType, readonly castedTypeName: string) {}\n\n  toString() {\n    return '... on ' + this.castedTypeName;\n  }\n}\n\nexport const subgraphEnteringTransition = new SubgraphEnteringTransition();\n\n", "import { assert } from \"@apollo/federation-internals\";\nimport { Edge, QueryGraph, QueryGraphState, simpleTraversal } from \"./querygraph\";\n\nexport function preComputeNonTrivialFollowupEdges(graph: QueryGraph): (previousEdge: Edge) => readonly Edge[] {\n  const state = new QueryGraphState<undefined, readonly Edge[]>();\n  simpleTraversal(graph, () => {}, (edge) => {\n    const followupEdges = graph.outEdges(edge.tail);\n    state.setEdgeState(edge, computeNonTrivialFollowups(edge, followupEdges));\n    return true;\n  });\n  return (previousEdge) => {\n    const nonTrivialFollowups = state.getEdgeState(previousEdge);\n    assert(nonTrivialFollowups, () => `Non-trivial followup edges of ${previousEdge} should have been computed`);\n    return nonTrivialFollowups;\n  }\n}\n\nfunction computeNonTrivialFollowups(edge: Edge, allFollowups: readonly Edge[]): readonly Edge[] {\n  switch (edge.transition.kind) {\n    case 'KeyResolution':\n      // After taking a key from subgraph A to B, there is no point of following that up with another key\n      // to subgraph C if that key has _the same_ conditions. This is because, due to the way key edges\n      // are created, if we have a key (with some conditions X) from B to C, then we are guaranteed to\n      // also have a key (with the same conditions X) from A to C, and so it's that later key we\n      // should be using in the first place. In other words, it's never better to do 2 hops rather than 1.\n      return allFollowups.filter((followup) => followup.transition.kind !== 'KeyResolution' || !sameConditions(edge, followup));\n    case 'RootTypeResolution':\n      // A 'RootTypeResolution' means that a query reached the query type (or another root type) in some\n      // subgraph A and we're looking at jumping to another subgraph B. But like for keys, there is\n      // no point in trying to jump directly to yet another subgpraph C from B, since we can always\n      // jump directly from A to C and it's better.\n      return allFollowups.filter((followup) => followup.transition.kind !== 'RootTypeResolution');\n    case 'SubgraphEnteringTransition':\n      // This is somewhat similar to 'RootTypeResolution' except that we're starting the query.\n      // But still, not doing \"start of query\" -> B -> C, since we can do \"start of query\" -> C\n      // and that's always better.\n      return allFollowups.filter((followup) => followup.transition.kind !== 'RootTypeResolution');\n    default:\n      return allFollowups;\n  }\n}\n\nfunction sameConditions(e1: Edge, e2: Edge): boolean {\n  if (!e1.conditions) {\n    return !e2.conditions;\n  }\n  return !!e2.conditions && e1.conditions.equals(e2.conditions);\n}\n", "import {\n  assert,\n  assertUnreachable,\n  federationMetadata,\n  isCompositeType,\n  isObjectType,\n  OperationElement,\n  possibleRuntimeTypes,\n  Schema,\n  Selection,\n  SelectionSet,\n  typenameFieldName,\n} from '@apollo/federation-internals';\nimport {\n  checkOverrideCondition,\n  FEDERATED_GRAPH_ROOT_SOURCE,\n  OverrideCondition,\n  QueryGraph,\n  Vertex,\n} from './querygraph';\nimport { SimultaneousPathsWithLazyIndirectPaths } from './graphPath';\n\n/**\n * Indirect option metadata for the complete digraph for type T. See\n * {@link NonLocalSelectionsMetadata} for more information about how we group\n * indirect options into complete digraphs.\n */\ninterface IndirectOptionsMetadata {\n  /**\n   * The members of the complete digraph for type T.\n   */\n  sameTypeOptions: Set<Vertex>;\n  /**\n   * Any interface object types I that are reachable for at least one vertex in\n   * the complete digraph for type T.\n   */\n  interfaceObjectOptions: Set<string>;\n}\n\ninterface FieldTail {\n  /**\n   * The tail vertex of this field edge.\n   */\n  tail: Vertex;\n  /**\n   * The override condition of the field, if it has one.\n   */\n  overrideCondition?: OverrideCondition;\n}\n\n/**\n * Downcasts from normal non-interface-object types, which have regular\n * downcasts to their object type vertices.\n */\ninterface NonInterfaceObjectDowncasts {\n  kind: 'NonInterfaceObject';\n  downcasts: Map<string, Vertex>;\n};\n\n/**\n * \"Fake\" downcasts from interface object types to object types that don't\n * really exist in the subgraph schema (and hence have no vertex).\n */\ninterface InterfaceObjectDowncasts {\n  kind: 'InterfaceObject';\n  downcasts: Set<string>;\n}\n\n/**\n * Downcasts edges to the possible runtime object types of a composite type.\n */\ntype ObjectTypeDowncasts =\n  | NonInterfaceObjectDowncasts\n  | InterfaceObjectDowncasts;\n\nexport class NonLocalSelectionsMetadata {\n  static readonly MAX_NON_LOCAL_SELECTIONS = 100_000;\n  /**\n   * When a (resolvable) @key exists on a type T in a subgraph, a key resolution\n   * edge is created from every subgraph's type T to that subgraph's type T.\n   * This similarly holds for root type resolution edges. This means that the\n   * vertices of type T with such a @key (or are operation root types) form a\n   * complete digraph in the query graph. These indirect options effectively\n   * occur as a group in our estimation process, so we track group members here\n   * per type name, and precompute units of work relative to these groups.\n   * \n   * Interface object types I in a subgraph will only sometimes create a key\n   * resolution edge between an implementing type T in a subgraph and that\n   * subgraph's type I. This means the vertices of the complete digraph for I\n   * are indirect options for such vertices of type T. We track any such types I\n   * that are reachable for at least one vertex in the complete digraph for type\n   * T here as well.\n   */ \n  private readonly typesToIndirectOptions =\n    new Map<string, IndirectOptionsMetadata>();\n  /**\n   * For vertices of a type T that aren't in their complete digraph (due to not\n   * having a @key), these remaining vertices will have the complete digraph of\n   * T (and any interface object complete digraphs) as indirect options, but\n   * these remaining vertices may separately have more indirect options that are\n   * not options for the complete digraph of T, specifically if the complete\n   * digraph for T has no key resolution edges to an interface object I, but\n   * this remaining vertex does. We keep track of such interface object types\n   * for those remaining vertices here.\n   */\n  private readonly remainingVerticesToInterfaceObjectOptions =\n    new Map<Vertex, Set<string>>;\n  /**\n   * A map of field names to the endpoints of field query graph edges with that\n   * field name. Note we additionally store the progressive overrides label, if\n   * the edge is conditioned on it.\n   */\n  private readonly fieldsToEndpoints =\n    new Map<string, Map<Vertex, FieldTail>>();\n  /**\n   * A map of type condition names to endpoints of downcast query graph edges\n   * with that type condition name, including fake downcasts for interface\n   * objects, and a non-existent edge that represents a type condition name \n   * equal to the parent type.\n   */\n  private readonly inlineFragmentsToEndpoints =\n    new Map<string, Map<Vertex, Vertex>>();\n  /**\n   * A map of composite type vertices to their downcast edges that lead\n   * specifically to an object type (i.e., the possible runtime types of the\n   * vertex's type).\n   */\n  private readonly verticesToObjectTypeDowncasts =\n    new Map<Vertex, ObjectTypeDowncasts>();\n  /**\n   * A map of field names to parent vertices whose corresponding type and schema\n   * can be rebased on by the field.\n   */\n  private readonly fieldsToRebaseableParentVertices =\n    new Map<string, Set<Vertex>>;\n  /**\n   * A map of type condition names to parent vertices whose corresponding type\n   * and schema can be rebased on by an inline fragment with that type\n   * condition.\n   */\n  private readonly inlineFragmentsToRebaseableParentVertices =\n    new Map<string, Set<Vertex>>;\n\n  constructor(graph: QueryGraph) {\n    this.precomputeNonLocalSelectionMetadata(graph);\n  }\n\n  /**\n   * Precompute relevant metadata about the query graph for speeding up the\n   * estimation of the count of non-local selections. Note that none of the\n   * algorithms used in this function should take any longer algorithmically as\n   * the rest of query graph creation (and similarly for query graph memory).\n   */\n  private precomputeNonLocalSelectionMetadata(graph: QueryGraph) {\n    this.precomputeNextVertexMetadata(graph);\n    this.precomputeRebasingMetadata(graph);\n  }\n\n  private precomputeNextVertexMetadata(graph: QueryGraph) {\n    const verticesToInterfaceObjectOptions = new Map<Vertex, Set<string>>();\n    for (const edge of graph.allEdges()) {\n      switch (edge.transition.kind) {\n        case 'FieldCollection': {\n          // We skip selections where the tail is a non-composite type, as we'll\n          // never need to estimate the next vertices for such selections.\n          if (!isCompositeType(edge.tail.type)) {\n            continue;\n          }\n          const fieldName = edge.transition.definition.name;\n          let endpointsEntry = this.fieldsToEndpoints.get(fieldName);\n          if (!endpointsEntry) {\n            endpointsEntry = new Map();\n            this.fieldsToEndpoints.set(fieldName, endpointsEntry);\n          }\n          endpointsEntry.set(edge.head, {\n            tail: edge.tail,\n            overrideCondition: edge.overrideCondition\n          });\n          break;\n        }\n        case 'DownCast': {\n          if (isObjectType(edge.transition.castedType)) {\n            let downcastsEntry =\n              this.verticesToObjectTypeDowncasts.get(edge.head);\n            if (!downcastsEntry) {\n              downcastsEntry = {\n                kind: 'NonInterfaceObject',\n                downcasts: new Map(),\n              };\n              this.verticesToObjectTypeDowncasts.set(edge.head, downcastsEntry);\n            }\n            assert(\n              downcastsEntry.kind === 'NonInterfaceObject',\n              () => 'Unexpectedly found interface object with regular object downcasts',\n            );\n            downcastsEntry.downcasts.set(\n              edge.transition.castedType.name,\n              edge.tail\n            );\n          }\n          const typeConditionName = edge.transition.castedType.name;\n          let endpointsEntry = this.inlineFragmentsToEndpoints\n            .get(typeConditionName);\n          if (!endpointsEntry) {\n            endpointsEntry = new Map();\n            this.inlineFragmentsToEndpoints.set(\n              typeConditionName,\n              endpointsEntry\n            );\n          }\n          endpointsEntry.set(edge.head, edge.tail);\n          break;\n        }\n        case 'InterfaceObjectFakeDownCast': {\n          // Note that fake downcasts for interface objects are only created to\n          // \"fake\" object types.\n          let downcastsEntry =\n            this.verticesToObjectTypeDowncasts.get(edge.head);\n          if (!downcastsEntry) {\n            downcastsEntry = {\n              kind: 'InterfaceObject',\n              downcasts: new Set(),\n            };\n            this.verticesToObjectTypeDowncasts.set(edge.head, downcastsEntry);\n          }\n          assert(\n            downcastsEntry.kind === 'InterfaceObject',\n            () => 'Unexpectedly found abstract type with interface object downcasts',\n          );\n          downcastsEntry.downcasts.add(edge.transition.castedTypeName);\n          const typeConditionName = edge.transition.castedTypeName;\n          let endpointsEntry = this.inlineFragmentsToEndpoints\n            .get(typeConditionName);\n          if (!endpointsEntry) {\n            endpointsEntry = new Map();\n            this.inlineFragmentsToEndpoints.set(\n              typeConditionName,\n              endpointsEntry\n            );\n          }\n          endpointsEntry.set(edge.head, edge.tail);\n          break;\n        }\n        case 'KeyResolution':\n        case 'RootTypeResolution': {\n          const headTypeName = edge.head.type.name;\n          const tailTypeName = edge.tail.type.name;\n          if (headTypeName === tailTypeName) {\n            // In this case, we have a non-interface-object key resolution edge\n            // or a root type resolution edge. The tail must be part of the\n            // complete digraph for the tail's type, so we record the member.\n            let indirectOptionsEntry = this.typesToIndirectOptions\n              .get(tailTypeName);\n            if (!indirectOptionsEntry) {\n              indirectOptionsEntry = {\n                sameTypeOptions: new Set(),\n                interfaceObjectOptions: new Set(),\n              };\n              this.typesToIndirectOptions.set(\n                tailTypeName,\n                indirectOptionsEntry,\n              );\n            }\n            indirectOptionsEntry.sameTypeOptions.add(edge.tail);\n          } else {\n            // Otherwise, this must be an interface object key resolution edge.\n            // We don't know the members of the complete digraph for the head's\n            // type yet, so we can't set the metadata yet, and instead store the\n            // head to interface object type mapping in a temporary map.\n            let interfaceObjectOptionsEntry = verticesToInterfaceObjectOptions\n              .get(edge.head);\n            if (!interfaceObjectOptionsEntry) {\n              interfaceObjectOptionsEntry = new Set();\n              verticesToInterfaceObjectOptions.set(\n                edge.head,\n                interfaceObjectOptionsEntry,\n              );\n            }\n            interfaceObjectOptionsEntry.add(tailTypeName);\n          }\n          break;\n        }\n        case 'SubgraphEnteringTransition':\n          break;\n        default:\n          assertUnreachable(edge.transition);\n      }\n    }\n\n    // Now that we've finished computing members of the complete digraphs, we\n    // can properly track interface object options.\n    for (const [vertex, options] of verticesToInterfaceObjectOptions) {\n      const optionsMetadata = this.typesToIndirectOptions.get(vertex.type.name);\n      if (optionsMetadata) {\n        if (optionsMetadata.sameTypeOptions.has(vertex)) {\n          for (const option of options) {\n            optionsMetadata.interfaceObjectOptions.add(option);\n          }\n          continue;\n        }\n      }\n      this.remainingVerticesToInterfaceObjectOptions.set(vertex, options);\n    }\n\n    // The interface object options for the complete digraphs are now correct,\n    // but we need to subtract these from any interface object options for\n    // remaining vertices.\n    for (const [vertex, options] of this.remainingVerticesToInterfaceObjectOptions) {\n      const indirectOptionsMetadata = this.typesToIndirectOptions\n        .get(vertex.type.name);\n      if (!indirectOptionsMetadata) {\n        continue;\n      }\n      for (const option of options) {\n        if (indirectOptionsMetadata.interfaceObjectOptions.has(option)) {\n          options.delete(option);\n        }\n      }\n      // If this subtraction left any interface object option sets empty, we\n      // remove them.\n      if (options.size === 0) {\n        this.remainingVerticesToInterfaceObjectOptions.delete(vertex);\n      }\n    }\n\n    // For all composite type vertices, we pretend that there's a self-downcast\n    // edge for that type, as this simplifies next vertex calculation.\n    for (const vertex of graph.allVertices()) {\n      if (\n        vertex.source === FEDERATED_GRAPH_ROOT_SOURCE\n        || !isCompositeType(vertex.type)\n      ) {\n        continue;\n      }\n      const typeConditionName = vertex.type.name;\n      let endpointsEntry = this.inlineFragmentsToEndpoints\n        .get(typeConditionName);\n      if (!endpointsEntry) {\n        endpointsEntry = new Map();\n        this.inlineFragmentsToEndpoints.set(\n          typeConditionName,\n          endpointsEntry\n        );\n      }\n      endpointsEntry.set(vertex, vertex);\n      if (!isObjectType(vertex.type)) {\n        continue;\n      }\n      const metadata = federationMetadata(vertex.type.schema());\n      assert(\n        metadata,\n        () => 'Subgraph schema unexpectedly did not have subgraph metadata',\n      );\n      if (metadata.isInterfaceObjectType(vertex.type)) {\n        continue;\n      }\n      let downcastsEntry = this.verticesToObjectTypeDowncasts.get(vertex);\n      if (!downcastsEntry) {\n        downcastsEntry = {\n          kind: 'NonInterfaceObject',\n          downcasts: new Map(),\n        };\n        this.verticesToObjectTypeDowncasts.set(vertex, downcastsEntry);\n      }\n      assert(\n        downcastsEntry.kind === 'NonInterfaceObject',\n        () => 'Unexpectedly found object type with interface object downcasts in supergraph',\n      );\n      downcastsEntry.downcasts.set(typeConditionName, vertex);\n    }\n  }\n\n  private precomputeRebasingMetadata(graph: QueryGraph) {\n    // We need composite-types-to-vertices map by source for the federated query\n    // graph, so we compute that here.\n    const compositeTypesToVerticesBySource =\n      new Map<string, Map<string, Set<Vertex>>>();\n    for (const vertex of graph.allVertices()) {\n      if (\n        vertex.source === FEDERATED_GRAPH_ROOT_SOURCE\n        || !isCompositeType(vertex.type)\n      ) {\n        continue;\n      }\n      let typesToVerticesEntry = compositeTypesToVerticesBySource\n        .get(vertex.source);\n      if (!typesToVerticesEntry) {\n        typesToVerticesEntry = new Map();\n        compositeTypesToVerticesBySource.set(\n          vertex.source,\n          typesToVerticesEntry\n        );\n      }\n      let verticesEntry = typesToVerticesEntry.get(vertex.type.name);\n      if (!verticesEntry) {\n        verticesEntry = new Set();\n        typesToVerticesEntry.set(vertex.type.name, verticesEntry);\n      }\n      verticesEntry.add(vertex);\n    }\n\n    // For each subgraph schema, we iterate through its composite types, so that\n    // we can collect metadata relevant to rebasing.\n    for (const [source, schema] of graph.sources) {\n      if (source === FEDERATED_GRAPH_ROOT_SOURCE) {\n        continue;\n      }\n      // We pass through each composite type, recording whether the field can be\n      // rebased on it along with interface implements/union membership\n      // relationships.\n      const fieldsToRebaseableTypes = new Map<string, Set<string>>();\n      const objectTypesToImplementingCompositeTypes =\n        new Map<string, Set<string>>();\n      const metadata = federationMetadata(schema);\n      assert(\n        metadata,\n        () => 'Subgraph schema unexpectedly did not have subgraph metadata',\n      );\n      const fromContextDirectiveName = metadata.fromContextDirective().name;\n      for (const type of schema.types()) {\n        switch (type.kind) {\n          case 'ObjectType': {\n            // Record fields that don't contain @fromContext as being rebaseable\n            // (also including __typename).\n            for (const field of type.fields()) {\n              if (field.arguments().some((arg) => \n                arg.hasAppliedDirective(fromContextDirectiveName)\n              )) {\n                continue;\n              }\n              let rebaseableTypesEntry =\n                fieldsToRebaseableTypes.get(field.name);\n              if (!rebaseableTypesEntry) {\n                rebaseableTypesEntry = new Set();\n                fieldsToRebaseableTypes.set(field.name, rebaseableTypesEntry);\n              }\n              rebaseableTypesEntry.add(type.name);\n            }\n            let rebaseableTypesEntry =\n              fieldsToRebaseableTypes.get(typenameFieldName);  \n            if (!rebaseableTypesEntry) {\n              rebaseableTypesEntry = new Set();\n              fieldsToRebaseableTypes.set(\n                typenameFieldName,\n                rebaseableTypesEntry\n              );\n            }\n            rebaseableTypesEntry.add(type.name);\n            // Record the object type as implementing itself.\n            let implementingObjectTypesEntry =\n              objectTypesToImplementingCompositeTypes.get(type.name);\n            if (!implementingObjectTypesEntry) {\n              implementingObjectTypesEntry = new Set();\n              objectTypesToImplementingCompositeTypes.set(\n                type.name,\n                implementingObjectTypesEntry,\n              );\n            }\n            implementingObjectTypesEntry.add(type.name);\n            // For each implements, record the interface type as an implementing\n            // type.\n            for (const interfaceImplementation of type.interfaceImplementations()) {\n              implementingObjectTypesEntry.add(\n                interfaceImplementation.interface.name\n              );\n            }\n            break;\n          }\n          case 'InterfaceType': {\n            // Record fields that don't contain @fromContext as being rebaseable\n            // (also including __typename).\n            for (const field of type.fields()) {\n              if (field.arguments().some((arg) => \n                arg.hasAppliedDirective(fromContextDirectiveName)\n              )) {\n                continue;\n              }\n              let rebaseableTypesEntry =\n                fieldsToRebaseableTypes.get(field.name);\n              if (!rebaseableTypesEntry) {\n                rebaseableTypesEntry = new Set();\n                fieldsToRebaseableTypes.set(field.name, rebaseableTypesEntry);\n              }\n              rebaseableTypesEntry.add(type.name);\n            }\n            let rebaseableTypesEntry =\n              fieldsToRebaseableTypes.get(typenameFieldName);  \n            if (!rebaseableTypesEntry) {\n              rebaseableTypesEntry = new Set();\n              fieldsToRebaseableTypes.set(\n                typenameFieldName,\n                rebaseableTypesEntry\n              );\n            }\n            rebaseableTypesEntry.add(type.name);\n            break;\n          }\n          case 'UnionType': {\n            // Just record the __typename field as being rebaseable.\n            let rebaseableTypesEntry =\n              fieldsToRebaseableTypes.get(typenameFieldName);  \n            if (!rebaseableTypesEntry) {\n              rebaseableTypesEntry = new Set();\n              fieldsToRebaseableTypes.set(\n                typenameFieldName,\n                rebaseableTypesEntry\n              );\n            }\n            rebaseableTypesEntry.add(type.name);\n            // For each member, record the union type as an implementing type.\n            for (const member of type.members()) {\n              let implementingObjectTypesEntry =\n                objectTypesToImplementingCompositeTypes.get(member.type.name);\n              if (!implementingObjectTypesEntry) {\n                implementingObjectTypesEntry = new Set();\n                objectTypesToImplementingCompositeTypes.set(\n                  member.type.name,\n                  implementingObjectTypesEntry,\n                );\n              }\n              implementingObjectTypesEntry.add(type.name);\n            }\n            break;\n          }\n          case 'ScalarType':\n          case 'EnumType':\n          case 'InputObjectType':\n            break;\n          default:\n            assertUnreachable(type);\n        }\n      }\n\n      // With the interface implements/union membership relationships, we can\n      // compute which pairs of types have at least one possible runtime type in\n      // their intersection, and are thus rebaseable.\n      const inlineFragmentsToRebaseableTypes = new Map<string, Set<string>>();\n      for (const implementingTypes of objectTypesToImplementingCompositeTypes.values()) {\n        for (const typeName of implementingTypes) {\n          let rebaseableTypesEntry =\n            inlineFragmentsToRebaseableTypes.get(typeName);  \n          if (!rebaseableTypesEntry) {\n            rebaseableTypesEntry = new Set();\n            fieldsToRebaseableTypes.set(typeName, rebaseableTypesEntry);\n          }\n          for (const implementingType of implementingTypes) {\n            rebaseableTypesEntry.add(implementingType);\n          }\n        }\n      }\n\n      // Finally, we can compute the vertices for the rebaseable types, as we'll\n      // be working with those instead of types when checking whether an\n      // operation element can be rebased.\n      const compositeTypesToVertices =\n        compositeTypesToVerticesBySource.get(source)\n          ?? new Map<string, Set<Vertex>>();\n      for (const [fieldName, types] of fieldsToRebaseableTypes) {\n        let rebaseableParentVerticesEntry =\n          this.fieldsToRebaseableParentVertices.get(fieldName);\n        if (!rebaseableParentVerticesEntry) {\n          rebaseableParentVerticesEntry = new Set();\n          this.fieldsToRebaseableParentVertices.set(\n            fieldName,\n            rebaseableParentVerticesEntry,\n          );\n        }\n        for (const type of types) {\n          const vertices = compositeTypesToVertices.get(type);\n          if (vertices) {\n            for (const vertex of vertices) {\n              rebaseableParentVerticesEntry.add(vertex);\n            }\n          }\n        }\n      }\n      for (const [typeConditionName, types] of inlineFragmentsToRebaseableTypes) {\n        let rebaseableParentVerticesEntry =\n        this.inlineFragmentsToRebaseableParentVertices.get(typeConditionName);\n        if (!rebaseableParentVerticesEntry) {\n          rebaseableParentVerticesEntry = new Set();\n          this.inlineFragmentsToRebaseableParentVertices.set(\n            typeConditionName,\n            rebaseableParentVerticesEntry,\n          );\n        }\n        for (const type of types) {\n          const vertices = compositeTypesToVertices.get(type);\n          if (vertices) {\n            for (const vertex of vertices) {\n              rebaseableParentVerticesEntry.add(vertex);\n            }\n          }\n        }\n      }\n    }\n  }\n\n  /**\n   * This calls {@link checkNonLocalSelectionsLimitExceeded} for each of the\n   * selections in the open branches stack; see that function's doc comment for\n   * more information.\n   *\n   * To support mutations, we allow indicating the initial subgraph is\n   * constrained, in which case indirect options will be ignored until the first\n   * field (similar to query planning).\n   */\n  checkNonLocalSelectionsLimitExceededAtRoot(\n    stack: [Selection, SimultaneousPathsWithLazyIndirectPaths[]][],\n    state: NonLocalSelectionsState,\n    supergraphSchema: Schema,\n    inconsistentAbstractTypesRuntimes: Set<string>,\n    overrideConditions: Map<string, boolean>,\n    isInitialSubgraphConstrained: boolean,\n  ): boolean {\n    for (const [selection, simultaneousPaths] of stack) {\n      const tailVertices = new Set<Vertex>();\n      for (const simultaneousPath of simultaneousPaths) {\n        for (const path of simultaneousPath.paths) {\n          tailVertices.add(path.tail);\n        }\n      }\n      const tailVerticesInfo =\n        this.estimateVerticesWithIndirectOptions(\n          tailVertices,\n          isInitialSubgraphConstrained,\n        );\n\n      // Note that top-level selections aren't avoided via fully-local selection\n      // set optimization, so we always add them here.\n      if (this.updateCount(1, tailVertices.size, state)) {\n        return true;\n      }\n\n      if (selection.selectionSet) {\n        const selectionHasDefer = selection.hasDefer();\n        const isInitialSubgraphConstrainedAfterElement =\n          isInitialSubgraphConstrained\n            && selection.kind === 'FragmentSelection';\n        const nextVertices = this.estimateNextVerticesForSelection(\n          selection.element,\n          tailVerticesInfo,\n          state,\n          supergraphSchema,\n          overrideConditions,\n          isInitialSubgraphConstrainedAfterElement,\n        );\n        if (this.checkNonLocalSelectionsLimitExceeded(\n          selection.selectionSet,\n          nextVertices,\n          selectionHasDefer,\n          state,\n          supergraphSchema,\n          inconsistentAbstractTypesRuntimes,\n          overrideConditions,\n          isInitialSubgraphConstrainedAfterElement,\n        )) {\n          return true;\n        }\n      }\n    }\n    return false;\n  }\n\n  /**\n   * When recursing through a selection set to generate options from each\n   * element, there is an optimization that allows us to avoid option\n   * exploration if a selection set is \"fully local\" from all the possible\n   * vertices we could be at in the query graph.\n   *\n   * This function computes an approximate upper bound on the number of\n   * selections in a selection set that wouldn't be avoided by such an\n   * optimization (i.e. the \"non-local\" selections), and adds it to the given\n   * count in the state. Note that the count for a given selection set is scaled\n   * by an approximate upper bound on the possible number of tail vertices for\n   * paths ending at that selection set. If at any point, the count exceeds\n   * `MAX_NON_LOCAL_SELECTIONS`, then this function will return `true`.\n   *\n   * This function's code is closely related to\n   * `selectionIsFullyLocalFromAllVertices()` (which implements the\n   * aforementioned optimization). However, when it comes to traversing the\n   * query graph, we generally ignore the effects of edge pre-conditions and\n   * other optimizations to option generation for efficiency's sake, giving us\n   * an upper bound since the extra vertices may fail some of the checks (e.g.\n   * the selection set may not rebase on them).\n   *\n   * Note that this function takes in whether the parent selection of the\n   * selection set has @defer, as that affects whether the optimization is\n   * disabled for that selection set.\n   *\n   * To support mutations, we allow indicating the initial subgraph is\n   * constrained, in which case indirect options will be ignored until the first\n   * field (similar to query planning).\n   */\n  private checkNonLocalSelectionsLimitExceeded(\n    selectionSet: SelectionSet,\n    parentVertices: NextVerticesInfo,\n    parentSelectionHasDefer: boolean,\n    state: NonLocalSelectionsState,\n    supergraphSchema: Schema,\n    inconsistentAbstractTypesRuntimes: Set<string>,\n    overrideConditions: Map<string, boolean>,\n    isInitialSubgraphConstrained: boolean,\n  ): boolean {\n    // Compute whether the selection set is non-local, and if so, add its\n    // selections to the count. Any of the following causes the selection set to\n    // be non-local.\n    // 1. The selection set's vertices having at least one reachable\n    //    cross-subgraph edge.\n    // 2. The parent selection having @defer.\n    // 3. Any selection in the selection set having @defer.\n    // 4. Any selection in the selection set being an inline fragment whose type\n    //    condition has inconsistent runtime types across subgraphs.\n    // 5. Any selection in the selection set being unable to be rebased on the\n    //    selection set's vertices.\n    // 6. Any nested selection sets causing the count to be incremented.\n    let selectionSetIsNonLocal =\n      parentVertices.nextVerticesHaveReachableCrossSubgraphEdges\n        || parentSelectionHasDefer;\n    for (const selection of selectionSet.selections()) {\n      const element = selection.element;\n      const selectionHasDefer = element.hasDefer();\n      const selectionHasInconsistentRuntimeTypes =\n        element.kind === 'FragmentElement'\n          && element.typeCondition\n          && inconsistentAbstractTypesRuntimes.has(element.typeCondition.name);\n      \n      const oldCount = state.count;\n      if (selection.selectionSet) {\n        const isInitialSubgraphConstrainedAfterElement =\n          isInitialSubgraphConstrained\n            && selection.kind === 'FragmentSelection';\n        const nextVertices = this.estimateNextVerticesForSelection(\n          element,\n          parentVertices,\n          state,\n          supergraphSchema,\n          overrideConditions,\n          isInitialSubgraphConstrainedAfterElement,\n        );\n        if (this.checkNonLocalSelectionsLimitExceeded(\n          selection.selectionSet,\n          nextVertices,\n          selectionHasDefer,\n          state,\n          supergraphSchema,\n          inconsistentAbstractTypesRuntimes,\n          overrideConditions,\n          isInitialSubgraphConstrainedAfterElement,\n        )) {\n          return true;\n        }\n      }\n\n      selectionSetIsNonLocal ||= selectionHasDefer\n        || selectionHasInconsistentRuntimeTypes\n        || (oldCount != state.count);\n    }\n    // Determine whether the selection can be rebased on all selection set\n    // vertices (without indirect options). This is more expensive, so we do\n    // this last/only if needed. Note that we were originally calling a slightly\n    // modified `canAddTo()` to mimic the logic in\n    // `selectionIsFullyLocalFromAllVertices()`, but this ended up being rather\n    // expensive in practice, so an optimized version using precomputation is\n    // used below.\n    if (!selectionSetIsNonLocal && parentVertices.nextVertices.size > 0) {\n      outer: for (const selection of selectionSet.selections()) {\n        switch (selection.kind) {\n          case 'FieldSelection': {\n            // Note that while the precomputed metadata accounts for\n            // @fromContext, it doesn't account for checking whether the\n            // operation field's parent type either matches the subgraph\n            // schema's parent type name or is an interface type. Given current\n            // composition rules, this should always be the case when rebasing\n            // supergraph/API schema queries onto one of its subgraph schema, so\n            // we avoid the check here for performance.\n            const rebaseableParentVertices =\n              this.fieldsToRebaseableParentVertices\n                .get(selection.element.definition.name);\n            if (!rebaseableParentVertices) {\n              selectionSetIsNonLocal = true;\n              break outer;\n            }\n            for (const vertex of parentVertices.nextVertices) {\n              if (!rebaseableParentVertices.has(vertex)) {\n                selectionSetIsNonLocal = true;\n                break outer;\n              }\n            }\n            break;\n          }\n          case 'FragmentSelection': {\n            const typeConditionName = selection.element.typeCondition?.name;\n            if (!typeConditionName) {\n              // Inline fragments without type conditions can always be rebased.\n              continue;\n            }\n            const rebaseableParentVertices =\n              this.inlineFragmentsToRebaseableParentVertices\n                .get(typeConditionName);\n            if (!rebaseableParentVertices) {\n              selectionSetIsNonLocal = true;\n              break outer;\n            }\n            for (const vertex of parentVertices.nextVertices) {\n              if (!rebaseableParentVertices.has(vertex)) {\n                selectionSetIsNonLocal = true;\n                break outer;\n              }\n            }\n            break;\n          }\n          default:\n            assertUnreachable(selection);\n        }\n      }\n    }\n    return selectionSetIsNonLocal && this.updateCount(\n      selectionSet.selections().length,\n      parentVertices.nextVertices.size,\n      state,\n    );\n  }\n\n  /**\n   * Updates the non-local selection set count in the state, returning true if\n   * this causes the count to exceed `MAX_NON_LOCAL_SELECTIONS`.\n   */\n  private updateCount(\n    numSelections: number,\n    numParentVertices: number,\n    state: NonLocalSelectionsState,\n  ): boolean {\n    const additional_count = numSelections * numParentVertices;\n    const new_count = state.count + additional_count;\n    if (new_count > NonLocalSelectionsMetadata.MAX_NON_LOCAL_SELECTIONS) {\n      return true;\n    }\n    state.count = new_count;\n    return false;\n  }\n\n  /**\n   * In `checkNonLocalSelectionsLimitExceeded()`, when handling a given\n   * selection for a set of parent vertices (including indirect options), this\n   * function can be used to estimate an upper bound on the next vertices after\n   * taking the selection (also with indirect options).\n   *\n   * To support mutations, we allow indicating the initial subgraph will be\n   * constrained after taking the element, in which case indirect options will\n   * be ignored (and caching will be skipped). This is to ensure that top-level\n   * mutation fields are not executed on a different subgraph than the initial\n   * one during query planning.\n   */\n  private estimateNextVerticesForSelection(\n    element: OperationElement,\n    parentVertices: NextVerticesInfo,\n    state: NonLocalSelectionsState,\n    supergraphSchema: Schema,\n    overrideConditions: Map<string, boolean>,\n    isInitialSubgraphConstrainedAfterElement: boolean,\n  ): NextVerticesInfo {\n    const selectionKey = element.kind === 'Field'\n      ? element.definition.name\n      : element.typeCondition?.name;\n    if (!selectionKey) {\n      // For empty type condition, the vertices don't change.\n      return parentVertices;\n    }\n    if (isInitialSubgraphConstrainedAfterElement) {\n      // When the initial subgraph is constrained, skip caching entirely. Note\n      // that caching is not skipped when the initial subgraph is constrained\n      // before this element but not after. Because of that, there may be cache\n      // entries for remaining vertices that were actually part of a complete\n      // digraph, but this is only a slight caching inefficiency and doesn't\n      // affect the computation's result.\n      assert(\n        parentVertices.nextVerticesWithIndirectOptions.types.size === 0,\n        () => 'Initial subgraph was constrained which indicates no indirect'\n          + ' options should be taken, but the parent vertices unexpectedly had'\n          + ' a complete digraph which indicates indirect options were taken'\n          + ' upstream in the path.',\n      );\n      return this.estimateNextVerticesForSelectionWithoutCaching(\n        element,\n        parentVertices.nextVerticesWithIndirectOptions.remainingVertices,\n        supergraphSchema,\n        overrideConditions,\n        true,\n      );\n    }\n    let cache = state.nextVerticesCache.get(selectionKey);\n    if (!cache) {\n      cache = {\n        typesToNextVertices: new Map(),\n        remainingVerticesToNextVertices: new Map(),\n      };\n      state.nextVerticesCache.set(selectionKey, cache);\n    }\n    const nextVerticesInfo: NextVerticesInfo = {\n      nextVertices: new Set(),\n      nextVerticesHaveReachableCrossSubgraphEdges: false,\n      nextVerticesWithIndirectOptions: {\n        types: new Set(),\n        remainingVertices: new Set(),\n      }\n    }\n    for (const typeName of parentVertices.nextVerticesWithIndirectOptions.types) {\n      let cacheEntry = cache.typesToNextVertices.get(typeName);\n      if (!cacheEntry) {\n        const indirectOptions = this.typesToIndirectOptions.get(typeName);\n        assert(\n          indirectOptions,\n          () => 'Unexpectedly missing vertex information for cached type',\n        );\n        cacheEntry = this.estimateNextVerticesForSelectionWithoutCaching(\n          element,\n          indirectOptions.sameTypeOptions,\n          supergraphSchema,\n          overrideConditions,\n          false,\n        );\n        cache.typesToNextVertices.set(typeName, cacheEntry);\n      }\n      this.mergeNextVerticesInfo(cacheEntry, nextVerticesInfo);\n    }\n    for (const vertex of parentVertices.nextVerticesWithIndirectOptions.remainingVertices) {\n      let cacheEntry = cache.remainingVerticesToNextVertices.get(vertex);\n      if (!cacheEntry) {\n        cacheEntry = this.estimateNextVerticesForSelectionWithoutCaching(\n          element,\n          [vertex],\n          supergraphSchema,\n          overrideConditions,\n          false,\n        );\n        cache.remainingVerticesToNextVertices.set(vertex, cacheEntry);\n      }\n      this.mergeNextVerticesInfo(cacheEntry, nextVerticesInfo);\n    }\n    return nextVerticesInfo;\n  }\n\n  private mergeNextVerticesInfo(\n    source: NextVerticesInfo,\n    target: NextVerticesInfo\n  ) {\n    for (const vertex of source.nextVertices) {\n      target.nextVertices.add(vertex);\n    }\n    target.nextVerticesHaveReachableCrossSubgraphEdges ||=\n      source.nextVerticesHaveReachableCrossSubgraphEdges;\n    this.mergeVerticesWithIndirectOptionsInfo(\n      source.nextVerticesWithIndirectOptions,\n      target.nextVerticesWithIndirectOptions,\n    );\n  }\n\n  private mergeVerticesWithIndirectOptionsInfo(\n    source: VerticesWithIndirectOptionsInfo,\n    target: VerticesWithIndirectOptionsInfo,\n  ) {\n    for (const type of source.types) {\n      target.types.add(type);\n    }\n    for (const vertex of source.remainingVertices) {\n      target.remainingVertices.add(vertex);\n    }\n  }\n\n  /**\n   * Estimate an upper bound on the next vertices after taking the selection on\n   * the given parent vertices. Because we're just trying for an upper bound, we\n   * assume we can always take type-preserving non-collecting transitions, we\n   * ignore any conditions on the selection edge, and we always type-explode.\n   * (We do account for override conditions, which are relatively\n   * straightforward.)\n   *\n   * Since we're iterating through next vertices in the process, for\n   * efficiency's sake we also compute whether there are any reachable\n   * cross-subgraph edges from the next vertices (without indirect options).\n   * This method assumes that inline fragments have type conditions.\n   *\n   * To support mutations, we allow indicating the initial subgraph will be\n   * constrained after taking the element, in which case indirect options will\n   * be ignored. This is to ensure that top-level mutation fields are not\n   * executed on a different subgraph than the initial one during query\n   * planning.\n   */\n  private estimateNextVerticesForSelectionWithoutCaching(\n    element: OperationElement,\n    parentVertices: Iterable<Vertex>,\n    supergraphSchema: Schema,\n    overrideConditions: Map<string, boolean>,\n    isInitialSubgraphConstrainedAfterElement: boolean,\n  ): NextVerticesInfo {\n    const nextVertices = new Set<Vertex>();\n    switch (element.kind) {\n      case 'Field': {\n        const fieldEndpoints = this.fieldsToEndpoints\n          .get(element.definition.name);\n        const processHeadVertex = (vertex: Vertex) => {\n          const fieldTail = fieldEndpoints?.get(vertex);\n          if (!fieldTail) {\n            return;\n          }\n          if (fieldTail.overrideCondition) {\n            if (checkOverrideCondition(\n              fieldTail.overrideCondition,\n              overrideConditions,\n            )) {\n              nextVertices.add(fieldTail.tail);\n            }\n          } else {\n            nextVertices.add(fieldTail.tail);\n          }\n        };\n        for (const vertex of parentVertices) {\n          // As an upper bound for efficiency's sake, we consider both\n          // non-type-exploded and type-exploded options.\n          processHeadVertex(vertex);\n          const downcasts = this.verticesToObjectTypeDowncasts.get(vertex);\n          if (!downcasts) {\n            continue;\n          }\n          // Interface object fake downcasts only go back to the self vertex, so\n          // we ignore them.\n          if (downcasts.kind === 'NonInterfaceObject') {\n            for (const vertex of downcasts.downcasts.values()) {\n              processHeadVertex(vertex);\n            }\n          }\n        }\n        break;\n      }\n      case 'FragmentElement': {\n        const typeConditionName = element.typeCondition?.name;\n        assert(\n          typeConditionName,\n          () => 'Inline fragment unexpectedly had no type condition',\n        );\n        const inlineFragmentEndpoints = this.inlineFragmentsToEndpoints\n          .get(typeConditionName);\n        // If we end up computing runtime types for the type condition, only do\n        // it once.\n        let runtimeTypes: Set<string> | null = null;\n        for (const vertex of parentVertices) {\n          // We check whether there's already a (maybe fake) downcast edge for\n          // the type condition (note that we've inserted fake downcasts for\n          // same-type type conditions into the metadata).\n          const nextVertex = inlineFragmentEndpoints?.get(vertex);\n          if (nextVertex) {\n            nextVertices.add(nextVertex);\n            continue;\n          }\n\n          // If not, then we need to type explode across the possible runtime\n          // types (in the supergraph schema) for the type condition.\n          const downcasts = this.verticesToObjectTypeDowncasts.get(vertex);\n          if (!downcasts) {\n            continue;\n          }\n          if (!runtimeTypes) {\n            const typeInSupergraph = supergraphSchema.type(typeConditionName);\n            assert(\n              typeInSupergraph && isCompositeType(typeInSupergraph),\n              () => 'Type unexpectedly missing or non-composite in supergraph schema',\n            );\n            runtimeTypes = new Set<string>();\n            for (const type of possibleRuntimeTypes(typeInSupergraph)) {\n              runtimeTypes.add(type.name);\n            }\n          }\n\n          switch (downcasts.kind) {\n            case 'NonInterfaceObject': {\n              for (const [typeName, vertex] of downcasts.downcasts) {\n                if (runtimeTypes.has(typeName)) {\n                  nextVertices.add(vertex);\n                }\n              }\n              break;\n            }\n            case 'InterfaceObject': {\n              for (const typeName of downcasts.downcasts) {\n                if (runtimeTypes.has(typeName)) {\n                  // Note that interface object fake downcasts are self edges,\n                  // so we're done once we find one.\n                  nextVertices.add(vertex);\n                  break;\n                }\n              }\n              break;\n            }\n            default:\n              assertUnreachable(downcasts);\n          }\n        }\n        break;\n      }\n      default:\n        assertUnreachable(element);\n    }\n\n    return this.estimateVerticesWithIndirectOptions(\n      nextVertices,\n      isInitialSubgraphConstrainedAfterElement,\n    );\n  }\n\n  /**\n   * Estimate the indirect options for the given next vertices, and return the\n   * given next vertices along with `nextVerticesWithIndirectOptions` which\n   * contains these direct and indirect options. As an upper bound for\n   * efficiency's sake, we assume we can take any indirect option (i.e. ignore\n   * any edge conditions).\n   *\n   * Since we're iterating through next vertices in the process, for\n   * efficiency's sake we also compute whether there are any reachable\n   * cross-subgraph edges from the next vertices (without indirect options).\n   *\n   * To support mutations, we allow ignoring indirect options, as we don't want\n   * top-level mutation fields to be executed on a different subgraph than the\n   * initial one. In that case, `nextVerticesWithIndirectOptions` will not have\n   * any `types`, and the given vertices will be added to `remainingVertices`\n   * (despite them potentially being part of the complete digraph for their\n   * type). This is fine, as caching logic accounts for this accordingly.\n   */\n  private estimateVerticesWithIndirectOptions(\n    nextVertices: Set<Vertex>,\n    ignoreIndirectOptions: boolean,\n  ): NextVerticesInfo {\n    const nextVerticesInfo: NextVerticesInfo = {\n      nextVertices,\n      nextVerticesHaveReachableCrossSubgraphEdges: false,\n      nextVerticesWithIndirectOptions: {\n        types: new Set(),\n        remainingVertices: new Set(),\n      }\n    };\n    for (const nextVertex of nextVertices) {\n      nextVerticesInfo.nextVerticesHaveReachableCrossSubgraphEdges ||=\n        nextVertex.hasReachableCrossSubgraphEdges;\n\n      // As noted above, we don't want top-level mutation fields to be executed\n      // on a different subgraph than the initial one, so we support ignoring\n      // indirect options here.\n      if (ignoreIndirectOptions) {\n        nextVerticesInfo.nextVerticesWithIndirectOptions.remainingVertices\n          .add(nextVertex);\n        continue;\n      }\n\n      const typeName = nextVertex.type.name\n      const optionsMetadata = this.typesToIndirectOptions.get(typeName);\n      if (optionsMetadata) {\n        // If there's an entry in `typesToIndirectOptions` for the type, then\n        // the complete digraph for T is non-empty, so we add its type. If it's\n        // our first time seeing this type, we also add any of the complete\n        // digraph's interface object options.\n        if (\n          !nextVerticesInfo.nextVerticesWithIndirectOptions.types.has(typeName)\n        ) {\n          nextVerticesInfo.nextVerticesWithIndirectOptions.types.add(typeName);\n          for (const option of optionsMetadata.interfaceObjectOptions) {\n            nextVerticesInfo.nextVerticesWithIndirectOptions.types.add(option);\n          }\n        }\n        // If the vertex is a member of the complete digraph, then we don't need\n        // to separately add the remaining vertex.\n        if (optionsMetadata.sameTypeOptions.has(nextVertex)) {\n          continue;\n        }\n      }\n      // We need to add the remaining vertex, and if it's our first time seeing\n      // it, we also add any of its interface object options.\n      if (\n        !nextVerticesInfo.nextVerticesWithIndirectOptions.remainingVertices\n          .has(nextVertex)\n      ) {\n        nextVerticesInfo.nextVerticesWithIndirectOptions.remainingVertices\n          .add(nextVertex);\n        const options = this.remainingVerticesToInterfaceObjectOptions\n          .get(nextVertex);\n        if (options) {\n          for (const option of options) {\n            nextVerticesInfo.nextVerticesWithIndirectOptions.types.add(option);\n          }\n        }\n      }\n    }\n\n    return nextVerticesInfo;\n  }\n}\n\ninterface NextVerticesCache {\n  /**\n   * This is the merged next vertex info for selections on the set of vertices\n   * in the complete digraph for the given type T. Note that this does not merge\n   * in the next vertex info for any interface object options reachable from\n   * vertices in that complete digraph for T.\n   */\n  typesToNextVertices: Map<string, NextVerticesInfo>,\n  /**\n   * This is the next vertex info for selections on the given vertex. Note that\n   * this does not merge in the next vertex info for any interface object\n   * options reachable from that vertex.\n   */\n  remainingVerticesToNextVertices: Map<Vertex, NextVerticesInfo>,\n}\n\ninterface NextVerticesInfo {\n  /**\n   * The next vertices after taking the selection.\n   */\n  nextVertices: Set<Vertex>,\n  /**\n   * Whether any cross-subgraph edges are reachable from any next vertices.\n   */\n  nextVerticesHaveReachableCrossSubgraphEdges: boolean,\n  /**\n   * These are the next vertices along with indirect options, represented\n   * succinctly by the types of any complete digraphs along with remaining\n   * vertices.\n   */\n  nextVerticesWithIndirectOptions: VerticesWithIndirectOptionsInfo,\n}\n\ninterface VerticesWithIndirectOptionsInfo {\n  /**\n   * For indirect options that are representable as complete digraphs for a type\n   * T, these are those types.\n   */\n  types: Set<string>,\n  /**\n   * For any vertices of type T that aren't in their complete digraphs for type\n   * T, these are those vertices.\n   */\n  remainingVertices: Set<Vertex>,\n}\n\nexport class NonLocalSelectionsState {\n  /**\n   * An estimation of the number of non-local selections for the whole operation\n   * (where the count for a given selection set is scaled by the number of tail\n   * vertices at that selection set). Note this does not count selections from\n   * recursive query planning.\n   */\n  count = 0;\n  /**\n   * Whenever we take a selection on a set of vertices with indirect options, we\n   * cache the resulting vertices here. The map key for field selections is the\n   * field's name and for inline fragment selections is the type condition's\n   * name.\n   */\n  readonly nextVerticesCache = new Map<string, NextVerticesCache>;\n}\n", "import {\n  assert,\n  MultiMap,\n  InterfaceType,\n  isInterfaceType,\n  isFed1Supergraph,\n  isObjectType,\n  isUnionType,\n  NamedType,\n  ObjectType,\n  Schema,\n  SchemaRootKind,\n  Type,\n  UnionType,\n  baseType,\n  SelectionSet,\n  isFederationSubgraphSchema,\n  FieldDefinition,\n  isCompositeType,\n  parseFieldSetArgument,\n  AbstractType,\n  isAbstractType,\n  possibleRuntimeTypes,\n  MapWithCachedArrays,\n  mapKeys,\n  firstOf,\n  FEDERATION_RESERVED_SUBGRAPH_NAME,\n  federationMetadata,\n  FederationMetadata,\n  DirectiveDefinition,\n  Directive,\n  typenameFieldName,\n  Field,\n  selectionSetOfElement,\n  SelectionSetUpdates,\n  Supergraph,\n  NamedSchemaElement,\n  validateSupergraph,\n  parseContext,\n} from '@apollo/federation-internals';\nimport { inspect } from 'util';\nimport { DownCast, FieldCollection, subgraphEnteringTransition, SubgraphEnteringTransition, Transition, KeyResolution, RootTypeResolution, InterfaceObjectFakeDownCast } from './transition';\nimport { preComputeNonTrivialFollowupEdges } from './nonTrivialEdgePrecomputing';\nimport { NonLocalSelectionsMetadata } from './nonLocalSelectionsEstimation';\n\n// We use our federation reserved subgraph name to avoid risk of conflict with other subgraph names (wouldn't be a huge\n// deal, but safer that way). Using something short like `_` is also on purpose: it makes it stand out in debug messages\n// without taking space.\nexport const FEDERATED_GRAPH_ROOT_SOURCE = FEDERATION_RESERVED_SUBGRAPH_NAME;\nconst FEDERATED_GRAPH_ROOT_SCHEMA = new Schema();\n\nexport function federatedGraphRootTypeName(rootKind: SchemaRootKind): string {\n  return `[${rootKind}]`;\n}\n\nexport function isFederatedGraphRootType(type: NamedType) {\n  return type.name.startsWith('[') && type.name.endsWith(']');\n}\n\n/**\n * A vertex of a query graph, which points to a type (definition) in a particular graphQL schema (the `source` being\n * an identifier for that schema).\n *\n * @see QueryGraph\n */\nexport class Vertex {\n  hasReachableCrossSubgraphEdges: boolean = false;\n  // @provides works by creating duplicates of the vertex/type involved in the provides and adding the provided\n  // edges only to those copy. This means that with @provides, you can have more than one vertex per-type-and-subgraph\n  // in a query graph. Which is fined, but this `provideId` allows to distinguish if a vertex was created as part of\n  // this @provides duplication or not. The value of this field has no other meaning than to be unique per-@provide,\n  // and so all the vertex copied for a given @provides application will have the same `provideId`. Overall, this\n  // mostly exists for debugging visualization.\n  provideId: number | undefined;\n\n  constructor(\n    /** Index used for this vertex in the query graph it is part of. */\n    readonly index: number,\n    /** The graphQL type the vertex points to. */\n    readonly type: NamedType,\n    /**\n     * An identifier of the underlying schema containing the `type` this vertex points to.\n     * This is mainly used in \"federated\" query graphs, where the `source` is a subgraph name.\n     */\n    readonly source : string\n  ) {}\n\n  toString(): string {\n    const label = `${this.type}(${this.source})`;\n    return this.provideId ? `${label}-${this.provideId}` : label;\n  }\n}\n\n/**\n * A \"root\" `Vertex`, that is a vertex that one of the root of a query graph.\n *\n * @see Vertex\n * @see QueryGraph.roots\n */\nexport class RootVertex extends Vertex {\n  constructor(\n    readonly rootKind: SchemaRootKind,\n    index: number,\n    type: NamedType,\n    source : string\n  ) {\n    super(index, type, source);\n  }\n\n  toString(): string {\n    return super.toString() + '*';\n  }\n}\n\nfunction toRootVertex(vertex: Vertex, rootKind: SchemaRootKind): RootVertex {\n  return new RootVertex(rootKind, vertex.index, vertex.type, vertex.source);\n}\n\nexport function isRootVertex(vertex: Vertex): vertex is RootVertex {\n  return vertex instanceof RootVertex;\n}\n\nexport interface OverrideCondition {\n  label: string;\n  condition: boolean;\n}\n\nexport function checkOverrideCondition(\n  overrideCondition: OverrideCondition,\n  conditionsToCheck: Map<string, boolean>\n): boolean {\n  const { label, condition } = overrideCondition;\n  return conditionsToCheck.has(label) ? conditionsToCheck.get(label) === condition : false;\n}\n\nexport type ContextCondition = {\n  context: string;\n  subgraphName: string;\n  namedParameter: string;\n  selection: string;\n  typesWithContextSet: Set<string>;\n  argType: Type,\n  coordinate: string;\n}\n\n/**\n * An edge of a query graph.\n *\n * Query graphs are directed and an edge goes from its `head` vertex to its `tail` one.\n * Edges also have additional metadata: their `transition` and, optionally, `conditions`.\n */\nexport class Edge {\n  private _conditions?: SelectionSet;\n  \n  public requiredContexts: ContextCondition[] = [];\n  \n  constructor(\n    /**\n     * Index used for this edge in the query graph it is part of (note that this index is \"scoped\" within\n     * the head vertex, meaning that if 2 different vertices of the same query graph both have a single\n     * out-edge, then both of those edges have index 0, and if a vertex has 3 out-edges, their index will\n      * be 0, 1 and 2).\n     */\n    public readonly index: number,\n    /**\n     * The vertex from which the edge starts.\n     */\n    public readonly head: Vertex,\n    /**\n     * The vertex on which the edge ends.\n     */\n    public readonly tail: Vertex,\n    /**\n     * Indicates what kind of edges this is and what the edges does/represents.\n     * For instance, if the edge represents a field, the `transition` will be a `FieldCollection` transition\n     * and will link to the definition of the field it represents.\n     *\n     * @see Transition\n     */\n    public readonly transition: Transition,\n    /**\n     * Optional conditions on an edge.\n     *\n     * Conditions are a select of selections (in the graphQL sense) that the traversal of a query graph\n     * needs to \"collect\" (traverse edges with transitions corresponding to those selections) in order\n     * to be able to collect that edge.\n     *\n     * Conditions are primarily used for edges corresponding to @key, in which case they correspond\n     * to the fields composing the key. In other words, for a key edges, conditions basically represents\n     * the fact that you need the key to be able to use a key edge.\n     *\n     * Outside of keys, @requires also rely on conditions.\n     */\n    conditions?: SelectionSet,\n    /**\n     * Edges can require that an override condition (provided during query\n     * planning) be met in order to be taken. This is used for progressive\n     * @override, where (at least) 2 subgraphs can resolve the same field, but\n     * one of them has an @override with a label. If the override condition\n     * matches the query plan parameters, this edge can be taken.\n     */\n    public overrideCondition?: OverrideCondition,\n    \n    /**\n     * Potentially multiple context conditions. When @fromContext is used on a argument definition, the edge representing\n     * the argument's field needs to reflect that the condition must be satisfied in order for the edge to be taken\n     */\n    requiredContexts?: ContextCondition[],\n  ) {\n    this._conditions = conditions;\n    if (requiredContexts) {\n      this.requiredContexts = [...requiredContexts];\n    }\n  }\n\n  get conditions(): SelectionSet | undefined {\n    return this._conditions;\n  }\n\n  isEdgeForField(name: string): boolean {\n    return this.transition.kind === 'FieldCollection' && this.transition.definition.name === name;\n  }\n\n  matchesSupergraphTransition(otherTransition: Transition): boolean {\n    assert(otherTransition.collectOperationElements, () => `Supergraphs shouldn't have transition that don't collect elements; got ${otherTransition}\"`);\n    const transition = this.transition;\n    switch (transition.kind) {\n      case 'FieldCollection': return otherTransition.kind === 'FieldCollection' && transition.definition.name === otherTransition.definition.name;\n      case 'DownCast': return otherTransition.kind === 'DownCast' && transition.castedType.name === otherTransition.castedType.name;\n      case 'InterfaceObjectFakeDownCast': return otherTransition.kind === 'DownCast' && transition.castedTypeName === otherTransition.castedType.name;\n      default: return false;\n    }\n  }\n\n  changesSubgraph(): boolean {\n    return this.head.source !== this.tail.source;\n  }\n\n  label(): string {\n    if (this.transition instanceof SubgraphEnteringTransition && !this._conditions) {\n      return \"\";\n    }\n\n    let conditionsString = (this._conditions ?? '').toString();\n    if (this.overrideCondition) {\n      if (conditionsString.length) conditionsString += ', ';\n      conditionsString += `${this.overrideCondition.label} = ${this.overrideCondition.condition}`;\n    }\n    // we had at least some condition, add the turnstile and spacing\n    if (conditionsString.length) conditionsString += ' \u22A2 ';\n\n    return conditionsString + this.transition.toString();\n  }\n\n  withNewHead(newHead: Vertex): Edge {\n    return new Edge(\n      this.index,\n      newHead,\n      this.tail,\n      this.transition,\n      this._conditions,\n      this.overrideCondition,\n      this.requiredContexts,\n    );\n  }\n\n  addToConditions(newConditions: SelectionSet) {\n    this._conditions = this._conditions\n      ? new SelectionSetUpdates().add(this._conditions).add(newConditions).toSelectionSet(this._conditions.parentType)\n      : newConditions;\n  }\n  \n  addToContextConditions(contextConditions: ContextCondition[]) {\n    this.requiredContexts.push(...contextConditions);\n  }\n\n  isKeyOrRootTypeEdgeToSelf(): boolean {\n    return this.head === this.tail && (this.transition.kind === 'KeyResolution' || this.transition.kind === 'RootTypeResolution');\n  }\n\n  satisfiesOverrideConditions(conditionsToCheck: Map<string, boolean>) {\n    if (!this.overrideCondition) return true;\n    return checkOverrideCondition(\n      this.overrideCondition,\n      conditionsToCheck,\n    );\n  }\n\n  toString(): string {\n    return `${this.head} -> ${this.tail} (${this.label()})`;\n  }\n}\n\n/**\n * An immutable directed graph data structure (built of vertices and edges) that is layered over one or multiple\n * graphQL schema, that aims to facilitate reasoning about queries expressed on the underlying schema.\n *\n * On top of its set of vertices and edges, a query graph exposes:\n *  - its set of \"sources\": pointers to the graphQL schema on which the query graph was built.\n *  - a set of distinguished vertices called \"root\" vertices. A query graph has at most one root\n *    vertex per `SchemaRootKind`, and those vertices are usually entry points for traversals of\n *    a query graph.\n *\n * In practice, the code builds 2 \"kind\" of query graphs:\n *  1. a supergraph query graph, which is built on top of a supergraph API schema (@see buildGraph()),\n *     and is built to reason about user queries (made on the supergraph API). This supergraph query\n *     graph is used to validate composition.\n *  2. a \"federated\" query graph, which is a single graph built on top of a) a number of subgraph\n *    API schema and b) the additional federation directives on those subgraphs (@see buildFederatedQueryGraph()).\n *    This query graph is used both for validating composition and for query planning.\n *\n * Note that this class handles both cases, but a \"supergraph query graph\" will, by construction, have\n * a few more invariants than a \"federated query graph\". Including (but not necessarily limited to):\n *  - edges in a super graph query graph will never have `conditions` or 'key' edges (edges with a `KeyResolution` edges).\n *  - supergraph query graphs will have a single value in `sources` (the supergraph schema).\n *\n * Also note that as query graphs are about reasoning about queries over schema, they only contain vertices\n * that points to \"reachable\" types (reachable from any kind of operations).\n */\nexport class QueryGraph {\n  /**\n   * Given an edge, returns the possible edges that can follow it \"productively\", that is without creating\n   * a trivially inefficient path.\n   *\n   * More precisely, `nonTrivialFollowupEdges(e)` is equivalent calling `outEdges(e.tail)` and filtering\n   * the edges that \"never make sense\" after `e`, which mainly amounts to avoiding chaining key edges\n   * when we know there is guaranteed to be a better option. As an example, suppose we have 3 subgraphs\n   * A, B and C which all defined a `@key(fields: \"id\")` on some entity type `T`. Then it is never\n   * interesting to take that key edge from B -> C after A -> B because if we're in A and want to get\n   * to C, we can always do A -> C (of course, this is only true because it's the \"same\" key).\n   *\n   * See `preComputeNonTrivialFollowupEdges` for more details on which exact edges are filtered.\n   *\n   * Lastly, note that the main reason for exposing this method is that its result is pre-computed.\n   * Which in turn is done for performance reasons: having the same key defined in multiple subgraphs\n   * is _the_ most common pattern, and while our later algorithms (composition validation and query\n   * planning) would know to not select those trivially inefficient \"detour\", they might have to redo\n   * those checks many times and pre-computing once it is significantly faster (and pretty easy).\n   * Fwiw, when originally introduced, this optimization lowered composition validation on a big\n   * composition (100+ subgraphs) from ~4 \"minutes\" to ~10 seconds.\n   */\n  readonly nonTrivialFollowupEdges: (edge: Edge) => readonly Edge[];\n  /**\n   * To speed up the estimation of counting non-local selections, we\n   * precompute specific metadata. We only computed this for federated query\n   * graphs used during query planning.\n   */\n  readonly nonLocalSelectionsMetadata: NonLocalSelectionsMetadata | null;\n\n  /**\n   * Creates a new query graph.\n   *\n   * This isn't meant to be be called directly outside of `GraphBuilder.build`.\n   */\n  constructor(\n    /** A name to identify the graph. Mostly for pretty-printing/debugging purpose. */\n    readonly name: string,\n    /** The vertices of the query graph. The index of each vertex in the array will be the value of its `Vertex.index` value. */\n    readonly vertices: Vertex[],\n    /**\n    * For each vertex, the edges that originate from that array. This array has the same length as `vertices` and `_outEdges[i]`\n    * is an array of all the edges starting at vertices[i].\n    */\n    private readonly _outEdges: Edge[][],\n    /**\n     * A map that associate type names of the underlying schema on which this query graph was built to each of the vertex\n     * (vertex index) that points to a type of that name. Note that in a \"supergraph query graph\", each type name will only\n     * map to a single vertex,\n     */\n    private readonly typesToVertices: MultiMap<string, number>,\n    /** The set of distinguished root vertices (pointers to vertices in `vertices`), keyed by their kind.  */\n    private readonly rootVertices: MapWithCachedArrays<SchemaRootKind, RootVertex>,\n    /**\n     * The sources on which the query graph was built, that is a set (which can be of size 1) of graphQL schema keyed by\n     * the name identifying them. Note that the `source` string in the `Vertex` of a query graph is guaranteed to be\n     * valid key in this map.\n     */\n    readonly sources: ReadonlyMap<string, Schema>,\n    \n    readonly subgraphToArgs: Map<string, string[]>,\n    \n    readonly subgraphToArgIndices: Map<string, Map<string, string>>,\n\n    readonly schema: Schema,\n\n    isFederatedAndForQueryPlanning?: boolean,\n  ) {\n    this.nonTrivialFollowupEdges = preComputeNonTrivialFollowupEdges(this);\n    this.nonLocalSelectionsMetadata = isFederatedAndForQueryPlanning\n     ? new NonLocalSelectionsMetadata(this)\n     : null;\n  }\n\n  /** The number of vertices in this query graph. */\n  verticesCount(): number {\n    return this.vertices.length;\n  }\n\n  /** The number of edges in this query graph. */\n  edgesCount(): number {\n    // We could count edges as we add them and pass it to the ctor. For now though, it's not meant to be\n    // on a hot path, so recomputing is probably fine.\n    return this._outEdges.reduce((acc, v) => acc + v.length, 0);\n  }\n\n  /**\n   * The set of `SchemaRootKind` for which this query graph has a root vertex (for\n   * which `root(SchemaRootKind)` will _not_ return `undefined`).\n   */\n  rootKinds(): readonly SchemaRootKind[] {\n    return this.rootVertices.keys();\n  }\n\n  /**\n   * The set of root vertices in this query graph.\n   */\n  roots(): readonly RootVertex[] {\n    return this.rootVertices.values();\n  }\n\n  /**\n   * The root vertex corresponding to the provided root kind, if this query graph has one.\n   *\n   * @param kind - the root kind for which to get the root vertex.\n   * @returns the root vertex for `kind` if this query graph has one.\n   */\n  root(kind: SchemaRootKind): RootVertex | undefined {\n    return this.rootVertices.get(kind);\n  }\n\n  /**\n   * The edges out of the provided vertex.\n   *\n   * @param vertex - the vertex for which to return out edges. This method _assumes_ that\n   *   the provided vertex is a vertex of this query graph (and its behavior is undefined\n   *   if it isn't).\n   * @param includeKeyAndRootTypeEdgesToSelf - whether key/root type edges that stay on the same\n   *  vertex should be included. This default to `false` are those are rarely useful. More\n   *   precisely, the only current use of them is for @defer where they may be needed to re-enter\n   *   the current subgraph in a deferred section.\n   * @returns the list of all the edges out of this vertex.\n   */\n  outEdges(vertex: Vertex, includeKeyAndRootTypeEdgesToSelf: boolean = false): readonly Edge[] {\n    const allEdges = this._outEdges[vertex.index];\n    return includeKeyAndRootTypeEdgesToSelf ? allEdges : allEdges.filter((e) => !e.isKeyOrRootTypeEdgeToSelf())\n  }\n\n  /**\n   * The number of edges out of the provided vertex.\n   *\n   * This is a shortcut for `this.outEdges(vertex, true).length`, and the reason it considers\n   * edge-to-self by default while `this.outEdges` doesn't is that this method is generally\n   * used to size other arrays indexed by edges index, and so we want to consider all edges\n   * in general.\n   */\n  outEdgesCount(vertex: Vertex): number {\n    return this._outEdges[vertex.index].length;\n  }\n\n  /**\n   * The edge out of the provided vertex at the provided (edge) index.\n   *\n   * @param vertex - the vertex for which to return the out edge. This method _assumes_ that\n   *   the provided vertex is a vertex of this query graph (and its behavior is undefined\n   *   if it isn't).\n   * @param edgeIndex - the edge index (relative to `vertex`, see `Edge.index`) to retrieve.\n   * @returns the `edgeIndex`^th edge out of `vertex`, if such edges exists.\n   */\n  outEdge(vertex: Vertex, edgeIndex: number): Edge | undefined {\n    return this._outEdges[vertex.index][edgeIndex];\n  }\n\n  allVertices(): Iterable<Vertex> {\n    return this.vertices;\n  }\n\n  *allEdges(): Iterable<Edge> {\n    for (const vertexOutEdges of this._outEdges) {\n      for (const outEdge of vertexOutEdges) {\n        yield outEdge;\n      }\n    }\n  }\n\n  /**\n   * Whether the provided vertex is a terminal one (has no out edges).\n   *\n   * @param vertex - the vertex to check.\n   * @returns whether the provided vertex is terminal.\n   */\n  isTerminal(vertex: Vertex): boolean {\n    return this.outEdgesCount(vertex) === 0;\n  }\n\n  /**\n   * The set of vertices whose associated type (see `Vertex.type`) is of type `typeName`.\n   */\n  verticesForType(typeName: string): Vertex[] {\n    const indexes = this.typesToVertices.get(typeName);\n    return indexes == undefined ? [] : indexes.map(i => this.vertices[i]);\n  }\n}\n\n/**\n * A utility class that allows to associate state to the vertices and/or edges of a query graph.\n *\n * @param VertexState - the type of the state associated to vertices.\n * @param EdgeState - the type of the state associated to edges. Defaults to `undefined`, which\n *   means that state is only associated to vertices.\n */\nexport class QueryGraphState<VertexState, EdgeState = undefined> {\n  // Store some \"user\" state for each vertex (accessed by index)\n  private readonly verticesStates: Map<number, VertexState> = new Map();\n  private readonly adjacenciesStates: Map<number, Map<number, EdgeState>> = new Map();\n\n  /**\n   * Associates the provided state to the provided vertex.\n   *\n   * @param vertex - the vertex to which state should be associated. This method _assumes_\n   *    that the provided vertex is a vertex of the query graph against which this\n   *    `QueryGraphState` was created (and its behavior is undefined if it isn't).\n   * @param state - the state/value to associate to `vertex`.\n   */\n  setVertexState(vertex: Vertex, state: VertexState) {\n    this.verticesStates.set(vertex.index, state);\n  }\n\n  /**\n   * Removes the state associated to the provided vertex (if any is).\n   *\n   * @param vertex - the vertex for which state should be removed. This method _assumes_\n   *    that the provided vertex is a vertex of the query graph against which this\n   *    `QueryGraphState` was created (and its behavior is undefined if it isn't).\n   */\n  removeVertexState(vertex: Vertex) {\n    this.verticesStates.delete(vertex.index);\n  }\n\n  /**\n   * Retrieves the state associated to the provided vertex (if any is).\n   *\n   * @param vertex - the vertex for which state should be retrieved. This method _assumes_\n   *    that the provided vertex is a vertex of the query graph against which this\n   *    `QueryGraphState` was created (and its behavior is undefined if it isn't).\n   * @return the state associated to `vertex`, if any.\n   */\n  getVertexState(vertex: Vertex): VertexState | undefined {\n    return this.verticesStates.get(vertex.index);\n  }\n\n  /**\n   * Associates the provided state to the provided edge.\n   *\n   * @param edge - the edge to which state should be associated. This method _assumes_\n   *    that the provided edge is an edge of the query graph against which this\n   *    `QueryGraphState` was created (and its behavior is undefined if it isn't).\n   * @param state - the state/value to associate to `edge`.\n   */\n  setEdgeState(edge: Edge, state: EdgeState) {\n    let edgeMap = this.adjacenciesStates.get(edge.head.index)\n    if (!edgeMap) {\n      edgeMap = new Map();\n      this.adjacenciesStates.set(edge.head.index, edgeMap);\n    }\n    edgeMap.set(edge.index, state);\n  }\n\n  /**\n   * Removes the state associated to the provided edge (if any is).\n   *\n   * @param edge - the edge for which state should be removed. This method _assumes_\n   *    that the provided edge is an edge of the query graph against which this\n   *    `QueryGraphState` was created (and its behavior is undefined if it isn't).\n   */\n  removeEdgeState(edge: Edge) {\n    const edgeMap = this.adjacenciesStates.get(edge.head.index);\n    if (edgeMap) {\n      edgeMap.delete(edge.index);\n      if (edgeMap.size === 0) {\n        this.adjacenciesStates.delete(edge.head.index);\n      }\n    }\n  }\n\n  /**\n   * Retrieves the state associated to the provided edge (if any is).\n   *\n   * @param edge - the edge for which state should be retrieved. This method _assumes_\n   *    that the provided vertex is an edge of the query graph against which this\n   *    `QueryGraphState` was created (and its behavior is undefined if it isn't).\n   * @return the state associated to `edge`, if any.\n   */\n  getEdgeState(edge: Edge): EdgeState | undefined {\n    return this.adjacenciesStates.get(edge.head.index)?.get(edge.index);\n  }\n\n  toDebugString(\n    vertexMapper: (s: VertexState) => string,\n    edgeMapper: (e: EdgeState) => string\n  ): string {\n    const vs = Array.from(this.verticesStates.entries()).sort(([a], [b]) => a - b).map(([idx, state]) =>\n      ` ${idx}: ${!state ? \"<null>\" : vertexMapper(state)}`\n    ).join(\"\\n\");\n    const es = Array.from(this.adjacenciesStates.entries()).sort(([a], [b]) => a - b).map(([vIdx, adj]) =>\n      Array.from(adj.entries()).sort(([a], [b]) => a - b).map(([eIdx, state]) =>\n        ` ${vIdx}[${eIdx}]: ${!state ? \"<null>\" : edgeMapper(state)}`\n      ).join(\"\\n\")\n    ).join(\"\\n\");\n    return `vertices = {${vs}\\n}, edges = {${es}\\n}`;\n  }\n}\n\n/**\n * Builds the query graph corresponding to the provided schema.\n *\n * Note that this method and mainly exported for the sake of testing but should rarely, if\n * ever, be used otherwise. Instead use either `buildSupergraphAPIQueryGraph` or\n * `buildFederatedQueryGraph` which are more explicit.\n *\n * @param name - the name to use for the created graph and as \"source\" name for the schema.\n * @param schema - the schema for which to build the query graph.\n * @param overrideLabelsByCoordinate - A Map of coordinate -> override label to apply to the query graph.\n *   Additional \"virtual\" edges will be created for progressively overridden fields in order to ensure that\n *   all possibilities are considered during query planning.\n * @returns the query graph corresponding to `schema` \"API\" (in the sense that no federation\n *   directives are taken into account by this method in the building of the query graph).\n */\nexport function buildQueryGraph(name: string, schema: Schema, overrideLabelsByCoordinate?: Map<string, string>): QueryGraph {\n  return buildGraphInternal(name, schema, false, undefined, overrideLabelsByCoordinate);\n}\n\nfunction buildGraphInternal(\n  name: string,\n  schema: Schema,\n  addAdditionalAbstractTypeEdges: boolean,\n  supergraphSchema?: Schema,\n  overrideLabelsByCoordinate?: Map<string, string>,\n): QueryGraph {\n  const builder = new GraphBuilderFromSchema(\n    name,\n    schema,\n    supergraphSchema ? { apiSchema: supergraphSchema.toAPISchema(), isFed1: isFed1Supergraph(supergraphSchema) } : undefined,\n    overrideLabelsByCoordinate,\n  );\n  for (const rootType of schema.schemaDefinition.roots()) {\n    builder.addRecursivelyFromRoot(rootType.rootKind, rootType.type);\n  }\n  if (builder.isFederatedSubgraph) {\n    builder.addInterfaceEntityEdges();\n  }\n  if (addAdditionalAbstractTypeEdges) {\n    builder.addAdditionalAbstractTypeEdges();\n  }\n  return builder.build();\n}\n\n/**\n * Builds a \"supergraph API\" query graph based on the provided supergraph schema.\n *\n * A \"supergraph API\" query graph is one that is used to reason about queries against said\n * supergraph API, but @see QueryGraph for more details.\n *\n * @param supergraph - the schema of the supergraph for which to build the query graph.\n  *  The provided schema should generally be a \"supergraph\" as generated by composition merging.\n  *  Note however that the query graph built by this method is only based on the supergraph\n  *  API and doesn't rely on the join spec directives, so it is valid to also directly\n  *  pass a schema that directly corresponds to the supergraph API.\n * @returns the built query graph.\n */\nexport function buildSupergraphAPIQueryGraph(supergraph: Supergraph): QueryGraph {\n  const apiSchema = supergraph.apiSchema();\n\n  const overrideLabelsByCoordinate = new Map<string, string>();\n  const joinFieldApplications = validateSupergraph(supergraph.schema)[1]\n    .fieldDirective(supergraph.schema).applications();\n  for (const application of joinFieldApplications) {\n    const overrideLabel = application.arguments().overrideLabel;\n    if (overrideLabel) {\n      overrideLabelsByCoordinate.set(\n        (application.parent as FieldDefinition<any>).coordinate,\n        overrideLabel\n      );\n    }\n  }\n  return buildQueryGraph(\"supergraph\", apiSchema, overrideLabelsByCoordinate);\n}\n\n/**\n * Builds a \"federated\" query graph based on the provided supergraph schema.\n *\n * A \"federated\" query graph is one that is used to reason about queries made by a\n * gateway/router against a set of federated subgraph services.\n *\n * @see QueryGraph\n *\n * @param supergraph - the supergraph for which to build the query graph.\n * @param forQueryPlanning - whether the build query graph is built for query planning (if\n *   so, it will include some additional edges that don't impact validation but allow\n *   to generate more efficient query plans).\n * @returns the built federated query graph.\n */\nexport function buildFederatedQueryGraph(supergraph: Supergraph, forQueryPlanning: boolean): QueryGraph {\n  const subgraphs = supergraph.subgraphs();\n  const graphs = [];\n  for (const subgraph of subgraphs) {\n    graphs.push(buildGraphInternal(subgraph.name, subgraph.schema, forQueryPlanning, supergraph.schema));\n  }\n  return federateSubgraphs(supergraph.schema, graphs, forQueryPlanning);\n}\n\nfunction federatedProperties(subgraphs: QueryGraph[]) : [number, Set<SchemaRootKind>, Schema[]] {\n  let vertices = 0;\n  const rootKinds = new Set<SchemaRootKind>();\n  const schemas: Schema[] = [];\n  for (const subgraph of subgraphs) {\n    vertices += subgraph.verticesCount();\n    subgraph.rootKinds().forEach(k => rootKinds.add(k));\n    assert(subgraph.sources.size === 1, () => `Subgraphs should only have one sources, got ${subgraph.sources.size} ([${mapKeys(subgraph.sources).join(', ')}])`);\n    schemas.push(firstOf(subgraph.sources.values())!);\n  }\n  return [vertices + rootKinds.size, rootKinds, schemas];\n}\n\nfunction resolvableKeyApplications(\n  keyDirective: DirectiveDefinition<{fields: any, resolvable?: boolean}>,\n  type: NamedType\n): Directive<NamedType, {fields: any, resolvable?: boolean}>[] {\n  const applications: Directive<NamedType, {fields: any, resolvable?: boolean}>[] = type.appliedDirectivesOf(keyDirective);\n  return applications.filter((application) => application.arguments().resolvable ?? true);\n}\n\nfunction federateSubgraphs(\n  supergraph: Schema,\n  subgraphs: QueryGraph[],\n  forQueryPlanning: boolean,\n): QueryGraph {\n  const [verticesCount, rootKinds, schemas] = federatedProperties(subgraphs);\n  const builder = new GraphBuilder(supergraph, verticesCount);\n  rootKinds.forEach(k => builder.createRootVertex(\n    k,\n    new ObjectType(federatedGraphRootTypeName(k)),\n    FEDERATED_GRAPH_ROOT_SOURCE,\n    FEDERATED_GRAPH_ROOT_SCHEMA\n  ));\n\n  // We first add all the vertices and edges from the subgraphs\n  const copyPointers: SubgraphCopyPointer[] = new Array(subgraphs.length);\n  for (const [i, subgraph] of subgraphs.entries()) {\n    copyPointers[i] = builder.copyGraph(subgraph);\n  }\n\n  // We then add the edges from supergraph roots to the subgraph ones.\n  // Also, for each root kind, we also add edges from the corresponding root type of each subgraph to the root type of other subgraphs\n  // (and for @defer, like for @key, we also add self-link looping on the current subgraph).\n  // This essentially encode the fact that if a field return a root type, we can always query any subgraph from that point.\n  for (const [i, subgraph] of subgraphs.entries()) {\n    const copyPointer = copyPointers[i];\n    for (const rootKind of subgraph.rootKinds()) {\n      const rootVertex = copyPointer.copiedVertex(subgraph.root(rootKind)!);\n      builder.addEdge(builder.root(rootKind)!, rootVertex, subgraphEnteringTransition)\n\n      for (const [j, otherSubgraph] of subgraphs.entries()) {\n        const otherRootVertex = otherSubgraph.root(rootKind);\n        if (otherRootVertex) {\n          const otherCopyPointer = copyPointers[j];\n          builder.addEdge(rootVertex, otherCopyPointer.copiedVertex(otherRootVertex), new RootTypeResolution(rootKind));\n        }\n      }\n    }\n  }\n\n  // Then we add/update edges for @key and @requires. We do @provides in a second step because its handling requires\n  // copying vertex and their edges, and it's easier to reason about this if we know all keys have already been created.\n  for (const [i, subgraph] of subgraphs.entries()) {\n    const subgraphSchema = schemas[i];\n    const subgraphMetadata = federationMetadata(subgraphSchema);\n    assert(subgraphMetadata, `Subgraph ${i} is not a valid federation subgraph`);\n    const keyDirective = subgraphMetadata.keyDirective();\n    const requireDirective = subgraphMetadata.requiresDirective();\n    simpleTraversal(\n      subgraph,\n      v => {\n        const type = v.type;\n        for (const keyApplication of resolvableKeyApplications(keyDirective, type)) {\n          // The @key directive creates an edge from every subgraphs (having that type)\n          // to the current subgraph. In other words, the fact this subgraph has a @key means\n          // that the service of the current subgraph can be queried for the entity (through\n          // _entities) as long as \"the other side\" can provide the proper field values.\n          // Note that we only require that \"the other side\" can gather the key fields (through\n          // the path conditions; note that it's possible those conditions are never satisfiable),\n          // but don't care that it defines the same key, because it's not a technical\n          // requirement (and while we probably don't want to allow in general a type to be an\n          // entity in some subgraphs but not other, this is not the place to impose that\n          // restriction, and this may be useful at least temporarily to allow convert a type to\n          // an entity).\n          assert(isInterfaceType(type) || isObjectType(type), () => `Invalid \"@key\" application on non Object || Interface type \"${type}\"`);\n          const isInterfaceObject = subgraphMetadata.isInterfaceObjectType(type);\n          const conditions = parseFieldSetArgument({ parentType: type, directive: keyApplication, normalize: true });\n\n          // We'll look at adding edges from \"other subgraphs\" to the current type. So the tail of all the edges\n          // we'll build in this branch is always going to be the same.\n          const tail = copyPointers[i].copiedVertex(v);\n          // Note that each subgraph has a key edge to itself (when i === j below). We usually ignore\n          // this edges, but they exists for the special case of @defer, where we technically may have\n          // to take such \"edge-to-self\" as a mean to \"re-enter\" a subgraph for a deferred section.\n          for (const [j, otherSubgraph] of subgraphs.entries()) {\n            const otherVertices = otherSubgraph.verticesForType(type.name);\n            if (otherVertices.length > 0) {\n              // Note that later, when we've handled @provides, this might not be true anymore as @provides may create copy of a\n              // certain type. But for now, it's true.\n              assert(\n                otherVertices.length == 1,\n                () => `Subgraph ${j} should have a single vertex for type ${type.name} but got ${otherVertices.length}: ${inspect(otherVertices)}`);\n\n              const otherVertex = otherVertices[0];\n              // The edge goes from the otherSubgraph to the current one.\n              const head = copyPointers[j].copiedVertex(otherVertex);\n              const tail = copyPointers[i].copiedVertex(v);\n              builder.addEdge(head, tail, new KeyResolution(), conditions);\n            }\n\n            // Additionally, if the key is on an @interfaceObject and this \"other\" subgraph has some of the implementations\n            // of the corresponding interface, then we need an edge from each of those implementations (to the @interfaceObject).\n            // This is used when an entity of specific implementation is queried first, but then some of the\n            // requested fields are only provided by that @interfaceObject.\n            if (isInterfaceObject) {\n              const typeInSupergraph = supergraph.type(type.name);\n              assert(typeInSupergraph && isInterfaceType(typeInSupergraph), () => `Type ${type} is an interfaceObject in subgraph ${i}; should be an interface in the supergraph`);\n              for (const implemTypeInSupergraph of typeInSupergraph.possibleRuntimeTypes()) {\n                // That implementation type may or may not exists in \"otherSubgraph\". If it doesn't, we just have nothing to\n                // do for that particular impelmentation. If it does, we'll add the proper edge, but note that we're guaranteed\n                // to have at most one vertex for the same reason than mentioned above (only the handling @provides will make it\n                // so that there can be more than one vertex per type).\n                const implemVertice = otherSubgraph.verticesForType(implemTypeInSupergraph.name)[0];\n                if (!implemVertice) {\n                  continue;\n                }\n\n                const implemHead = copyPointers[j].copiedVertex(implemVertice);\n                // The key goes from the implementation type to the @interfaceObject one, so the conditions\n                // will be \"fetched\" on the implementation type, but `conditions` has been parsed on the\n                // interface type, so it will use fields from the interface, not the implementation type.\n                // So we re-parse the condition using the implementation type: this could fail, but in\n                // that case it just mean that key is not usable.\n                const implemType = implemVertice.type;\n                assert(isCompositeType(implemType), () => `${implemType} should be composite since it implements ${typeInSupergraph} in the supergraph`);\n                try {\n                  const implConditions = parseFieldSetArgument({ parentType: implemType, directive: keyApplication, validate: false, normalize: true });\n                  builder.addEdge(implemHead, tail, new KeyResolution(), implConditions);\n                } catch (e) {\n                  // Ignored on purpose: it just means the key is not usable on this subgraph.\n                }\n              }\n            }\n          }\n        }\n      },\n      e => {\n        // Handling @requires\n        if (e.transition.kind === 'FieldCollection') {\n          const type = e.head.type;\n          const field = e.transition.definition;\n          assert(isCompositeType(type), () => `Non composite type \"${type}\" should not have field collection edge ${e}`);\n          for (const requiresApplication of field.appliedDirectivesOf(requireDirective)) {\n            const conditions = parseFieldSetArgument({ parentType: type, directive: requiresApplication, normalize: true });\n            const head = copyPointers[i].copiedVertex(e.head);\n            // We rely on the fact that the edge indexes will be the same in the copied builder. But there is no real reason for\n            // this to not be the case at this point so...\n            const copiedEdge = builder.edge(head, e.index);\n            copiedEdge.addToConditions(conditions);\n          }\n        }\n        return true; // Always traverse edges\n      }\n    );\n  }\n\n  /**\n   * Handling progressive overrides here. For each progressive @override\n   * application (with a label), we want to update the edges to the overridden\n   * field within the \"to\" and \"from\" subgraphs with their respective override\n   * condition (the label and a T/F value). The \"from\" subgraph will have an\n   * override condition of `false`, whereas the \"to\" subgraph will have an\n   * override condition of `true`.\n   */\n  const subgraphsByName = new Map(subgraphs.map((s) => [s.name, s]));\n  for (const [i, toSubgraph] of subgraphs.entries()) {\n    const subgraphSchema = schemas[i];\n    const subgraphMetadata = federationMetadata(subgraphSchema);\n    assert(subgraphMetadata, `Subgraph ${i} is not a valid federation subgraph`);\n\n    for (const application of subgraphMetadata.overrideDirective().applications()) {\n      const { from, label } = application.arguments();\n      if (!label) continue;\n      const fromSubgraph = subgraphsByName.get(from);\n      assert(fromSubgraph, () => `Subgraph ${from} not found`);\n\n      function updateEdgeWithOverrideCondition(subgraph: QueryGraph, label: string, condition: boolean) {\n        const field = application.parent;\n        assert(field instanceof NamedSchemaElement, () => `@override should have been on a field, got ${field}`);\n        const typeName = field.parent.name;\n\n        const [vertex, ...unexpectedAdditionalVertices] = subgraph.verticesForType(typeName);\n        assert(vertex && unexpectedAdditionalVertices.length === 0, () => `Subgraph ${subgraph.name} should have exactly one vertex for type ${typeName}`);\n\n        const subgraphEdges = subgraph.outEdges(vertex);\n        for (const edge of subgraphEdges) {\n          if (\n            edge.transition.kind === \"FieldCollection\"\n            && edge.transition.definition.name === field.name\n          ) {\n            const head = copyPointers[subgraphs.indexOf(subgraph)].copiedVertex(vertex);\n            const copiedEdge = builder.edge(head, edge.index);\n\n            copiedEdge.overrideCondition = {\n              label,\n              condition,\n            };\n          }\n        }\n      }\n\n      updateEdgeWithOverrideCondition(toSubgraph, label, true);\n      updateEdgeWithOverrideCondition(fromSubgraph, label, false);\n    }\n  }\n \n  /** \n   * Now we'll handle instances of @fromContext. For each argument with @fromContext, I want to add its corresponding \n   * context conditions to the edge corresponding to the argument's field\n  */\n  const subgraphToArgs: Map<string, string[]> = new Map();\n  const subgraphToArgIndices: Map<string, Map<string, string>> = new Map();\n  \n  for (const [i, subgraph] of subgraphs.entries()) {\n    const subgraphSchema = schemas[i];\n    const subgraphMetadata = federationMetadata(subgraphSchema);\n    assert(subgraphMetadata, `Subgraph ${i} is not a valid federation subgraph`);\n    \n    const contextNameToTypes: Map<string, Set<string>> = new Map();\n    \n    for (const application of subgraphMetadata.contextDirective().applications()) {\n      const { name: context } = application.arguments();\n        if (contextNameToTypes.has(context)) {\n          contextNameToTypes.get(context)!.add(application.parent.name);\n        } else {\n          contextNameToTypes.set(context, new Set([application.parent.name]));\n        }\n    }\n    \n    const coordinateMap: Map<string, ContextCondition[]> = new Map();\n    for (const application of subgraphMetadata.fromContextDirective().applications()) {\n      const { field } = application.arguments();\n      const { context, selection } = parseContext(field);\n      \n      assert(context, () => `FieldValue has invalid format. Context not found ${field}`);\n      assert(selection, () => `FieldValue has invalid format. Selection not found ${field}`);\n      const namedParameter = application.parent.name;\n      const argCoordinate = application.parent.coordinate;\n      const args = subgraphToArgs.get(subgraph.name) ?? [];\n      args.push(argCoordinate);\n      subgraphToArgs.set(subgraph.name, args);\n      \n      const fieldCoordinate = application.parent.parent.coordinate;\n      const typesWithContextSet = contextNameToTypes.get(context);\n      assert(typesWithContextSet, () => `Context ${context} is never set in subgraph`);\n      const z = coordinateMap.get(fieldCoordinate);\n      if (z) {\n        z.push({ namedParameter, coordinate: argCoordinate, context, selection, typesWithContextSet, subgraphName: subgraph.name, argType: application.parent.type });\n      } else {\n        coordinateMap.set(fieldCoordinate, [{ namedParameter, coordinate: argCoordinate, context, selection, typesWithContextSet, subgraphName: subgraph.name, argType: application.parent.type }]);\n      }\n    }\n    \n    simpleTraversal(\n      subgraph,\n      _v => { return undefined; },\n      e => {\n        if (e.head.type.kind === 'ObjectType' && e.transition.kind === 'FieldCollection') {\n          const coordinate = `${e.head.type.name}.${e.transition.definition.name}`;\n          const requiredContexts = coordinateMap.get(coordinate);\n          if (requiredContexts) {\n            const headInSupergraph = copyPointers[i].copiedVertex(e.head);\n            assert(headInSupergraph, () => `Vertex for type ${e.head.type.name} not found in supergraph`);\n            const edgeInSupergraph = builder.edge(headInSupergraph, e.index);\n            edgeInSupergraph.addToContextConditions(requiredContexts);\n          }\n        }\n        return true;\n      }\n    );\n   \n  }\n\n  // add contextual argument maps to builder\n  for (const [i, subgraph] of subgraphs.entries()) {\n    const subgraphName = subgraph.name;\n    const args = subgraphToArgs.get(subgraph.name);\n    if (args) {\n      args.sort();\n      const argToIndex = new Map();\n      for (let idx=0; idx < args.length; idx++) {\n        argToIndex.set(args[idx], `contextualArgument_${i+1}_${idx}`);\n      }\n      subgraphToArgIndices.set(subgraphName, argToIndex);\n    }\n  }\n  \n  builder.setContextMaps(subgraphToArgs, subgraphToArgIndices);\n      \n  // Now we handle @provides\n  let provideId = 0;\n  for (const [i, subgraph] of subgraphs.entries()) {\n    const subgraphSchema = schemas[i];\n    const subgraphMetadata = federationMetadata(subgraphSchema);\n    assert(subgraphMetadata, `Subgraph ${i} is not a valid federation subgraph`);\n    const providesDirective = subgraphMetadata.providesDirective();\n    simpleTraversal(\n      subgraph,\n      _ => undefined,\n      e => {\n        // Handling @provides\n        if (e.transition.kind === 'FieldCollection') {\n          const type = e.head.type;\n          const field = e.transition.definition;\n          assert(isCompositeType(type), () => `Non composite type \"${type}\" should not have field collection edge ${e}`);\n          for (const providesApplication of field.appliedDirectivesOf(providesDirective)) {\n            ++provideId;\n            const fieldType = baseType(field.type!);\n            assert(isCompositeType(fieldType), () => `Invalid @provide on field \"${field}\" whose type \"${fieldType}\" is not a composite type`)\n            const provided = parseFieldSetArgument({ parentType: fieldType, directive: providesApplication });\n            const head = copyPointers[i].copiedVertex(e.head);\n            const tail = copyPointers[i].copiedVertex(e.tail);\n            // We rely on the fact that the edge indexes will be the same in the copied builder. But there is no real reason for\n            // this to not be the case at this point so...\n            const copiedEdge = builder.edge(head, e.index);\n            // We make a copy of the `fieldType` vertex (with all the same edges), and we change this particular edge to point to the\n            // new copy. From that, we can add all the provides edges to the copy.\n            const copiedTail = builder.makeCopy(tail, provideId);\n            builder.updateEdgeTail(copiedEdge, copiedTail);\n            addProvidesEdges(subgraphSchema, builder, copiedTail, provided, provideId);\n          }\n        }\n        return true; // Always traverse edges\n      }\n    );\n  }\n\n  // We now need to finish handling @interfaceObject types. More precisely, there is cases where only a/some implementation(s)\n  // of a interface are queried, and that could apply to an interface that is an @interfaceObject in some sugraph. Consider\n  // the following example:\n  // ```graphql\n  // type Query {\n  //   getIs: [I]\n  // }\n  //\n  // type I @key(fields: \"id\") @interfaceObject {\n  //   id: ID!\n  //   x: Int\n  // }\n  // ```\n  // where we suppose that `I` has some implementations say, `A`, `B` and `C`, in some other subgraph.\n  // Now, consider query:\n  // ```graphql\n  // {\n  //   getIs {\n  //     ... on B {\n  //       x\n  //     }\n  //   }\n  // }\n  // ```\n  // So here, we query `x` which the subgraph provides, but we only do so for one of the impelementation.\n  // So in that case, we essentially need to figure out the `__typename` first (of more precisely, we need\n  // to know the real __typename \"eventually\"; we could theoretically query `x` first, and then get the __typename\n  // to know if we should keep the result or discard it, and that could be more efficient in certain case,\n  // but as we don't know both 1) if `x` is expansive to resolve and 2) what the ratio of results from `getIs`\n  // will be `B` versus some other implementation, it is \"safer\" to get the __typename first and only resolve `x`\n  // when we need to).\n  //\n  // Long story short, to solve this, we create edges from @interfaceObject types to themselves for every implementation\n  // types of the interface: those edges will be taken when we try to take a `... on B` condition, and those edge\n  // have __typename as a condition, forcing to find __typename in another subgraph first.\n  for (const [i, subgraph] of subgraphs.entries()) {\n    const subgraphSchema = schemas[i];\n    const subgraphMetadata = federationMetadata(subgraphSchema);\n    assert(subgraphMetadata, `Subgraph ${i} is not a valid federation subgraph`);\n    const interfaceObjectDirective = subgraphMetadata.interfaceObjectDirective();\n    for (const application of interfaceObjectDirective.applications()) {\n      const type = application.parent;\n      assert(isObjectType(type), '@interfaceObject should have been on an object type');\n      const vertex = copyPointers[i].copiedVertex(subgraph.verticesForType(type.name)[0]);\n      const supergraphItf = supergraph.type(type.name);\n      assert(supergraphItf && isInterfaceType(supergraphItf), () => `${type} has @interfaceObject in subgraph but has kind ${supergraphItf?.kind} in supergraph`)\n      const condition = selectionSetOfElement(new Field(type.typenameField()!));\n      for (const implementation of supergraphItf.possibleRuntimeTypes()) {\n        builder.addEdge(vertex, vertex, new InterfaceObjectFakeDownCast(type, implementation.name), condition);\n      }\n    }\n  }\n\n  return builder.build(FEDERATED_GRAPH_ROOT_SOURCE, forQueryPlanning);\n}\n\nfunction addProvidesEdges(schema: Schema, builder: GraphBuilder, from: Vertex, provided: SelectionSet, provideId: number) {\n  const stack: [Vertex, SelectionSet][] = [[from, provided]];\n  const source = from.source;\n  while (stack.length > 0) {\n    const [v, selectionSet] = stack.pop()!;\n    // We reverse the selections to cancel the reversing that the stack does.\n    for (const selection of selectionSet.selectionsInReverseOrder()) {\n      const element = selection.element;\n      if (element.kind == 'Field') {\n        const fieldDef = element.definition;\n        const existingEdge = builder.edges(v).find(e => e.transition.kind === 'FieldCollection' && e.transition.definition.name === fieldDef.name);\n        if (existingEdge) {\n          // If this is a leaf field, then we don't really have anything to do. Otherwise, we need to copy\n          // the tail and continue propagating the provides from there.\n          if (selection.selectionSet) {\n            const copiedTail = builder.makeCopy(existingEdge.tail, provideId);\n            builder.updateEdgeTail(existingEdge, copiedTail);\n            stack.push([copiedTail, selection.selectionSet]);\n          }\n        } else {\n          // There is no exisiting edges, which means that it's an edge added by the provide.\n          // We find the existing vertex it leads to, if it exists and create a new one otherwise.\n          const fieldType = baseType(fieldDef.type!);\n          const existingTail = builder.verticesForType(fieldType.name).find(v => v.source === source);\n          const newTail = existingTail ? existingTail : builder.createNewVertex(fieldType, v.source, schema);\n          // If the field is a leaf, then just create the new edge and we're done. Othewise, we\n          // should copy the vertex (unless we just created it), add the edge and continue.\n          if (selection.selectionSet) {\n            const copiedTail = existingTail ? builder.makeCopy(existingTail, provideId) : newTail;\n            builder.addEdge(v, copiedTail, new FieldCollection(fieldDef, true));\n            stack.push([copiedTail, selection.selectionSet]);\n          } else {\n            builder.addEdge(v, newTail, new FieldCollection(fieldDef, true));\n          }\n        }\n      } else {\n        const typeCondition = element.typeCondition;\n        if (typeCondition) {\n          const existingEdge = builder.edges(v).find(e => e.transition.kind === 'DownCast' && e.transition.castedType.name === typeCondition.name);\n          // We always should have an edge: otherwise it would mean we list a type condition for a type that isn't in the subgraph, but the\n          // @provides shouldn't have validated in the first place (another way to put it is, contrary to fields, there is no way currently\n          // to mark a full type as @external).\n          assert(existingEdge, () => `Shouldn't have ${selection} with no corresponding edge on ${v} (edges are: [${builder.edges(v)}])`);\n          const copiedTail = builder.makeCopy(existingEdge.tail, provideId);\n          builder.updateEdgeTail(existingEdge, copiedTail);\n          stack.push([copiedTail, selection.selectionSet!]);\n        } else {\n          // Essentially ignore the condition, it's useless\n          stack.push([v, selection.selectionSet!]);\n        }\n      }\n    }\n  }\n}\n\ninterface SubgraphCopyPointer {\n  copiedVertex(original: Vertex): Vertex;\n}\n\n/**\n * Temporary abstraction used to build a query graph.\n */\nclass GraphBuilder {\n  private readonly vertices: Vertex[];\n  private nextIndex: number = 0;\n  private readonly outEdges: Edge[][];\n  private readonly inEdges: Edge[][];\n  private readonly typesToVertices: MultiMap<string, number> = new MultiMap();\n  private readonly rootVertices: MapWithCachedArrays<SchemaRootKind, RootVertex> = new MapWithCachedArrays();\n  private readonly sources: Map<string, Schema> = new Map();\n  private subgraphToArgs: Map<string, string[]> = new Map();\n  private subgraphToArgIndices: Map<string, Map<string, string>> = new Map();\n  readonly schema: Schema;\n\n  constructor(schema: Schema, verticesCount?: number) {\n    this.vertices = verticesCount ? new Array(verticesCount) : [];\n    this.outEdges = verticesCount ? new Array(verticesCount) : [];\n    this.inEdges = verticesCount ? new Array(verticesCount) : [];\n    this.schema = schema;\n  }\n\n  verticesForType(typeName: string): Vertex[] {\n    const indexes = this.typesToVertices.get(typeName);\n    return indexes == undefined ? [] : indexes.map(i => this.vertices[i]);\n  }\n  \n  root(kind: SchemaRootKind): Vertex | undefined {\n    return this.rootVertices.get(kind);\n  }\n\n  addEdge(head: Vertex, tail: Vertex, transition: Transition, conditions?: SelectionSet, overrideCondition?: OverrideCondition, requiredContexts?: ContextCondition[]) {\n    const headOutEdges = this.outEdges[head.index];\n    const tailInEdges = this.inEdges[tail.index];\n    const edge = new Edge(headOutEdges.length, head, tail, transition, conditions, overrideCondition, requiredContexts);\n    headOutEdges.push(edge);\n    tailInEdges.push(edge);\n\n    if (head.source !== tail.source) {\n      this.markInEdgesHasReachingCrossSubgraphEdge(head);\n    }\n  }\n\n  markInEdgesHasReachingCrossSubgraphEdge(from: Vertex) {\n    // When we mark a vertex, we mark all of its \"ancestor\" vertices, so if we\n    // get vertex already marked, there is nothing more to do.\n    if (from.hasReachableCrossSubgraphEdges) {\n      return;\n    }\n\n    const stack = [from];\n    while (stack.length > 0) {\n      const v = stack.pop()!;\n      v.hasReachableCrossSubgraphEdges = true;\n      for (const edge of this.inEdges[v.index]) {\n        // Again, no point in redoing work as soon as we read an aready marked vertec.\n        // We also only follow in-edges within the same subgraph, as vertices on other subgraphs\n        // will have been marked with their own cross-subgraph edges.\n        if (edge.head.source === edge.tail.source && !edge.head.hasReachableCrossSubgraphEdges) {\n          stack.push(edge.head);\n        }\n      }\n    }\n  }\n\n  createNewVertex(type: NamedType, source: string, schema: Schema, index?: number): Vertex {\n    if (!index) {\n      index = this.nextIndex++;\n    }\n    const vertex = new Vertex(index, type, source);\n    const previous = this.vertices[index];\n    assert(!previous, () => `Overriding existing vertex ${previous} with ${vertex}`);\n    this.vertices[index] = vertex;\n    this.typesToVertices.add(type.name, index);\n    this.outEdges[index] = [];\n    this.inEdges[index] = [];\n    if (!this.sources.has(source)) {\n      this.sources.set(source, schema);\n    }\n    return vertex;\n  }\n\n  createRootVertex(kind: SchemaRootKind, type: NamedType, source: string, schema: Schema) {\n    const vertex = this.createNewVertex(type, source, schema);\n    assert(!this.rootVertices.has(kind), () => `Root vertex for ${kind} (${this.rootVertices.get(kind)}) already exists: cannot replace by ${vertex}`);\n    this.setAsRoot(kind, vertex.index);\n  }\n\n  setAsRoot(kind: SchemaRootKind, index: number) {\n    const vertex = this.vertices[index];\n    assert(vertex, () => `Cannot set non-existing vertex at index ${index} as root ${kind}`);\n    const rootVertex = toRootVertex(vertex, kind);\n    this.vertices[vertex.index] = rootVertex;\n    this.rootVertices.set(kind, rootVertex);\n    const rootEdges = this.outEdges[vertex.index];\n    for (let i = 0; i < rootEdges.length; i++) {\n      rootEdges[i] = rootEdges[i].withNewHead(rootVertex);\n    }\n  }\n\n  copyGraph(graph: QueryGraph): SubgraphCopyPointer {\n    const offset = this.nextIndex;\n    // Note that we don't use a normal traversal to do the copying because it's possible the provided `graph`\n    // has some sub-parts that are not reachable from one of the roots but that we still want to copy those\n    // sub-parts. The reason is that, while we don't care about unreachable parts in general, at the time\n    // this method is called, we haven't added edges for @provides, and adding those edges may \"connect\" those\n    // currently unreachable parts. And to be connected, they need to exist/have been copied in the first\n    // place (note that this means we may copy some unreachable sub-parts that will _not_ be connected later (a subgraph\n    // can well have genuinely unreachable definitions), but that's harmless).\n    for (const vertex of graph.vertices) {\n      const newHead = this.getOrCopyVertex(vertex, offset, graph);\n      for (const edge of graph.outEdges(vertex, true)) {\n        const newTail = this.getOrCopyVertex(edge.tail, offset, graph);\n        this.addEdge(newHead, newTail, edge.transition, edge.conditions, edge.overrideCondition, edge.requiredContexts);\n      }\n    }\n    this.nextIndex += graph.verticesCount();\n    const that = this;\n    return {\n      copiedVertex(original: Vertex): Vertex {\n        const vertex = that.vertices[original.index + offset];\n        assert(vertex, () => `Vertex ${original} has no copy for offset ${offset}`);\n        return vertex;\n      }\n    };\n  }\n\n  vertex(index: number): Vertex {\n    return this.vertices[index];\n  }\n\n  edge(head: Vertex, index: number): Edge {\n    return this.outEdges[head.index][index];\n  }\n\n  edges(head: Vertex): Edge[] {\n    return this.outEdges[head.index];\n  }\n\n  /**\n   * Creates a new vertex that is a full copy of the provided one, including having the same out-edge, but with no incoming edges.\n   *\n   * @param vertex - the vertex to copy.\n   * @param provideId - if the vertex is copied for the sake of a `@provides`, an id that identify that provide and will be set on\n   *   the newly copied vertex.\n   * @returns the newly created copy.\n   */\n  makeCopy(vertex: Vertex, provideId?: number): Vertex {\n    const newVertex = this.createNewVertex(vertex.type, vertex.source, this.sources.get(vertex.source)!);\n    newVertex.provideId = provideId;\n    newVertex.hasReachableCrossSubgraphEdges = vertex.hasReachableCrossSubgraphEdges;\n    for (const edge of this.outEdges[vertex.index]) {\n      this.addEdge(newVertex, edge.tail, edge.transition, edge.conditions, edge.overrideCondition, edge.requiredContexts);\n    }\n    return newVertex;\n  }\n\n  /**\n   * Replaces the provided edge by a copy but with the provided new tail vertex.\n   *\n   * @param edge - the edge to replace.\n   * @param newTail - the tail to change in `edge`.\n   * @returns the newly created edge that, as of this method returning, replaces `edge`.\n   */\n  updateEdgeTail(edge: Edge, newTail: Vertex): Edge {\n    const newEdge = new Edge(edge.index, edge.head, newTail, edge.transition, edge.conditions, edge.overrideCondition, edge.requiredContexts);\n    this.outEdges[edge.head.index][edge.index] = newEdge;\n    // For in-edge, we need to remove the edge from the inputs of the previous tail,\n    // and add it to the new tail.\n    this.inEdges[edge.tail.index] = this.inEdges[edge.tail.index].filter((e) => e !== edge);\n    this.inEdges[newTail.index].push(newEdge);\n    return newEdge;\n  }\n\n  private getOrCopyVertex(toCopy: Vertex, indexOffset: number, graph: QueryGraph): Vertex {\n    const index = toCopy.index + indexOffset;\n    let v = this.vertices[index];\n    if (!v) {\n      v = this.createNewVertex(toCopy.type, toCopy.source, graph.sources.get(toCopy.source)!, index);\n    }\n    return v;\n  }\n\n  build(name: string, isFederatedAndForQueryPlanning?: boolean): QueryGraph {\n    return new QueryGraph(\n      name,\n      this.vertices,\n      this.outEdges,\n      this.typesToVertices,\n      this.rootVertices,\n      this.sources,\n      this.subgraphToArgs,\n      this.subgraphToArgIndices,\n      this.schema,\n      isFederatedAndForQueryPlanning,\n    );\n  }\n  \n  setContextMaps(subgraphToArgs: Map<string, string[]>, subgraphToArgIndices: Map<string, Map<string, string>>) {\n    this.subgraphToArgs = subgraphToArgs;\n    this.subgraphToArgIndices = subgraphToArgIndices;\n  }\n}\n\n/**\n * Specialization of `GraphBuilder` for building the parts of a query graph that correspond\n * to a schema API (meaning that it helps building the vertices and edges corresponding to a\n * schema API, but does not handle vertices and edges related to federation).\n */\nclass GraphBuilderFromSchema extends GraphBuilder {\n  readonly isFederatedSubgraph: boolean;\n\n  constructor(\n    private readonly name: string,\n    schema: Schema,\n    private readonly supergraph?: { apiSchema: Schema, isFed1: boolean },\n    private readonly overrideLabelsByCoordinate?: Map<string, string>,\n  ) {\n    super(schema);\n    this.isFederatedSubgraph = !!supergraph && isFederationSubgraphSchema(schema);\n  }\n\n  private hasDirective(elt: FieldDefinition<any> | NamedType, directiveFct: (metadata: FederationMetadata) => DirectiveDefinition): boolean {\n    const metadata = federationMetadata(this.schema);\n    return !!metadata && elt.hasAppliedDirective(directiveFct(metadata));\n  }\n\n  private isExternal(field: FieldDefinition<any>): boolean {\n    const metadata = federationMetadata(this.schema);\n    return !!metadata && metadata.isFieldExternal(field);\n  }\n\n  /**\n   * Adds a vertex for the provided root object type (marking that vertex as a root vertex for the\n   * provided `kind`) and recursively descend into the type definition to adds the related vertices\n   * and edges.\n   *\n   * In other words, calling this method on, say, the `Query` type of a schema will add vertices\n   * and edges for all the type reachable from that `Query` type.\n   */\n  addRecursivelyFromRoot(kind: SchemaRootKind, root: ObjectType) {\n    this.setAsRoot(kind, this.addTypeRecursively(root).index);\n  }\n\n  /**\n   * Adds in a vertex for the provided type in the in-building query graph, and recursively\n   * adds edges and vertices corresponding to the type definition (so for object types, it\n   * will add edges for each fields and recursively add vertices for each field type, etc...).\n   */\n  private addTypeRecursively(type: Type): Vertex {\n    const namedType = baseType(type);\n    const existing = this.verticesForType(namedType.name);\n    if (existing.length > 0) {\n      assert(existing.length == 1, () => `Only one vertex should have been created for type ${namedType.name}, got ${existing.length}: ${inspect(this)}`);\n      return existing[0];\n    }\n    const vertex = this.createNewVertex(namedType, this.name, this.schema);\n    if (isObjectType(namedType)) {\n      this.addObjectTypeEdges(namedType, vertex);\n    } else if (isInterfaceType(namedType)) {\n      // For interfaces, we generally don't add direct edges for their fields. Because in general, the subgraph where a particular\n      // field can be fetched from may depend on the runtime implementation. However, if the subgraph we're currently including\n      // \"provides\" a particular interface field locally *for all the supergraph interfaces implementations* (in other words, we\n      // know we can always ask the field to that subgraph directly on the interface and will never miss anything), then we can\n      // add a direct edge to the field for the interface in that subgraph (which avoids unnecessary type exploding in practice).\n      if (this.isFederatedSubgraph) {\n        this.maybeAddInterfaceFieldsEdges(namedType, vertex);\n      }\n      this.addAbstractTypeEdges(namedType, vertex);\n    } else if (isUnionType(namedType)) {\n      // Adding the special-case __typename edge for union.\n      this.addEdgeForField(namedType.typenameField()!, vertex);\n      this.addAbstractTypeEdges(namedType, vertex);\n    }\n    // Any other case (scalar or enum; inputs at not possible here) is terminal and has no edges to\n    // consider.\n    return vertex;\n  }\n\n  private addObjectTypeEdges(type: ObjectType, head: Vertex) {\n    const isInterfaceObject = federationMetadata(this.schema)?.isInterfaceObjectType(type) ?? false;\n\n    // We do want all fields, including most built-in. For instance, it's perfectly valid to query __typename manually, so we want\n    // to have an edge for it. Also, the fact we handle the _entities field ensure that all entities are part of the graph,\n    // even if they are not reachable by any other user operations.\n    // We do skip introspection fields however.\n    for (const field of type.allFields()) {\n      // Note that @interfaceObject types are an exception to the rule of \"it's perfectly valid to query __typename\". More\n      // precisely, a query can ask for the `__typename` of anything, but it shouldn't be answered by an @interfaceObject\n      // and so we don't add an edge, ensuring the query planner has to get it from another subgraph (than the one with\n      // said @interfaceObject).\n      if (field.isSchemaIntrospectionField() || (isInterfaceObject && field.name === typenameFieldName)) {\n        continue;\n      }\n\n      // Field marked @external only exists to ensure subgraphs schema are valid graphQL, but they don't create actual edges.\n      // However, even if we don't add an edge, we still want to add the field type. The reason is that while we don't add\n      // a \"general\" edge for an external field, we may later add path-specific edges for the field due to a `@provides`. When\n      // we do so, we need the vertex corresponding to that field type to exists, and in rare cases a type could be only\n      // mentioned in this external field, so if we don't add the type here, we'll never do and get an issue later as we\n      // add @provides edges.\n      if (this.isExternal(field)) {\n        this.addTypeRecursively(field.type!)\n      } else {\n        this.addEdgeForField(field, head);\n      }\n    }\n  }\n\n  private addEdgeForField(field: FieldDefinition<any>, head: Vertex) {\n    const tail = this.addTypeRecursively(field.type!);\n    const overrideLabel = this.overrideLabelsByCoordinate?.get(field.coordinate);\n    if (overrideLabel) {\n      this.addEdge(head, tail, new FieldCollection(field), undefined, {\n        label: overrideLabel,\n        condition: true,\n      });\n      this.addEdge(head, tail, new FieldCollection(field), undefined, {\n        label: overrideLabel,\n        condition: false,\n      });\n    } else {\n      this.addEdge(head, tail, new FieldCollection(field));\n    }\n  }\n\n  private isDirectlyProvidedByType(type: ObjectType, fieldName: string) {\n    const field = type.field(fieldName);\n    // The field is directly provided if:\n    //   1) the type does have it.\n    //   2) it is not external.\n    //   3) it does not have a @require (essentially, this method is called on type implementations of an interface\n    //      to decide if we can avoid type-explosion, but if the field has a @require on an implementation, then we\n    //      need to type-explode to make sure we handle that @require).\n    return field && !this.isExternal(field) && !this.hasDirective(field, (m) => m.requiresDirective());\n  }\n\n  private maybeAddInterfaceFieldsEdges(type: InterfaceType, head: Vertex) {\n    assert(this.supergraph, 'Missing supergraph schema when building a subgraph');\n    const supergraphType = this.supergraph.apiSchema.type(type.name);\n    // In theory, the interface might have been marked inaccessible and not be in the supergraph. If that's the case,\n    // we just don't add direct edges at all (adding interface edges is an optimization and if the interface is inaccessible, it\n    // probably doesn't play any role in query planning anyway, so it doesn't matter).\n    if (!supergraphType) {\n      return;\n    }\n    const supergraphRuntimeTypes = (supergraphType as InterfaceType).possibleRuntimeTypes().map(t => t.name);\n    // Note that it's possible that the current subgraph does not even know some of the possible runtime types of the supergraph.\n    // But as edges to interfaces can only come from the current subgraph, it does mean that whatever field led to this\n    // interface was resolved in this subgraph and can never return one of those unknown runtime types. So we can ignore them.\n    // TODO: We *must* revisit this once we add @key for interfaces as it will invalidate the \"edges to interfaces can only\n    // come from the current subgraph\". Most likely, _if_ an interface has a key, then we should return early from this\n    // function (add no field edges at all) if subgraph doesn't know of at least one implementation.\n    const localRuntimeTypes = supergraphRuntimeTypes.map(t => this.schema.type(t) as ObjectType).filter(t => t !== undefined);\n    // Same as for objects, we want `allFields` so we capture __typename (which will never be external and always provided\n    // by all local runtime types, so will always have an edge added, which we want).\n    for (const field of type.allFields()) {\n      // To include the field, it must not be external itself, and it must be provided on every of the runtime types\n      if (this.isExternal(field) || localRuntimeTypes.some(t => !this.isDirectlyProvidedByType(t, field.name))) {\n        continue;\n      }\n      this.addEdgeForField(field, head);\n    }\n  }\n\n  private addAbstractTypeEdges(type: InterfaceType | UnionType, head: Vertex) {\n    const implementations = isInterfaceType(type) ? type.possibleRuntimeTypes() : type.types();\n    for (const implementationType of implementations) {\n      const tail = this.addTypeRecursively(implementationType);\n      this.addEdge(head, tail, new DownCast(type, implementationType));\n    }\n  }\n\n  /*\n   * We've added edges that avoid type-explosion _directly_ from an interface, but it means that so far we\n   * always type-explode unions to all their implementation types, and always type-explode when we go\n   * through 2 unrelated interfaces. For instance, say we have\n   * ```\n   * type Query {\n   *  i1: I1\n   *  i2: I2\n   *  u: U\n   * }\n   *\n   * interface I1 {\n   *   x: Int\n   * }\n   *\n   * interface I2 {\n   *   y: Int\n   * }\n   *\n   * type A implements I1 & I2 {\n   *   x: Int\n   *   y: Int\n   * }\n   *\n   * type B implements I1 & I2 {\n   *   x: Int\n   *   y: Int\n   * }\n   *\n   * union U = A | B\n   * ```\n   * If we query:\n   * ```\n   * {\n   *   u {\n   *     ... on I1 {\n   *       x\n   *     }\n   *   }\n   * }\n   * ```\n   * then we currently have no edge between `U` and `I1` whatsoever, so query planning would have\n   * to type-explode `U` even though that's not necessary (assuming everything is in the same\n   * subgraph, we'd want to send the query \"as-is\").\n   * Same thing for:\n   * ```\n   * {\n   *   i1 {\n   *     x\n   *     ... on I2 {\n   *       y\n   *     }\n   *   }\n   * }\n   * ```\n   * due to not having edges from `I1` to `I2` (granted, in that example, type-exploding is not all\n   * that worth, but it gets worth with more implementations/fields).\n   *\n   * And so this method is about adding such edges. Essentially, every time 2 abstract types have\n   * an intersection of runtime types > 1, we add an edge.\n   *\n   * Do note that in practice we only add those edges when we build a query graph for query planning\n   * purposes, because not type-exploding is only an optimization but type-exploding will always \"work\"\n   * and for composition validation, we don't care about being optimal, while limiting edges make\n   * validation faster by limiting the choices to explore. Also, query planning is careful, as\n   * it walk those edges, to compute the actual possible runtime types we could have to avoid\n   * later type-exploding in impossible runtime types.\n   */\n  addAdditionalAbstractTypeEdges() {\n    // As mentioned above, we only care about this on subgraphs query graphs and during query planning, and\n    // we'll have a supergraph when that happens. But if this ever get called in some other path, ignore this.\n    if (!this.supergraph) {\n      return;\n    }\n\n    // For each abstract type in the schema, it's runtime types.\n    type AbstractTypeWithRuntimes = {\n      type: AbstractType,\n      runtimeTypesInSubgraph: readonly ObjectType[],\n      runtimeTypesInSupergraph: readonly ObjectType[],\n    }\n    const abstractTypesWithTheirRuntimeTypes: AbstractTypeWithRuntimes[] = [];\n    for (const type of this.schema.types()) {\n      if (isAbstractType(type)) {\n        const typeInSupergraph = this.supergraph.apiSchema.type(type.name);\n        // All \"normal\" types from subgraphs should be in the supergraph API, but there is a couple exceptions:\n        // - subgraphs have the `_Entity` type, which is not in the supergraph.\n        // - inaccessible types also won't be in the supergrah.\n        // In all those cases, we don't create any additional edges for those types. For inaccessible type, we\n        // could theoretically try to add them, but we would need the full supergraph while we currently only\n        // have access to the API schema, and besides, inacessible types can only be part of the query execution in\n        // indirect ways, through some @requires for instance, and you'd need pretty weird @requires for the\n        // optimization here to ever matter.\n        if (!typeInSupergraph) {\n          continue;\n        }\n        assert(isAbstractType(typeInSupergraph), () => `${type} should not be a ${type.kind} in a subgraph but a ${typeInSupergraph.kind} in the supergraph`);\n        abstractTypesWithTheirRuntimeTypes.push({\n          type,\n          runtimeTypesInSubgraph: possibleRuntimeTypes(type),\n          runtimeTypesInSupergraph: possibleRuntimeTypes(typeInSupergraph),\n        });\n      }\n    }\n\n    // Check every pair of abstract type that intersect on at least 2 runtime types to see if have\n    // edges to add. Note that in practice, we only care about 'Union -> Interface' and 'Interface -> Interface'\n    for (let i = 0; i < abstractTypesWithTheirRuntimeTypes.length - 1; i++) {\n      const t1 = abstractTypesWithTheirRuntimeTypes[i];\n      // Note that in general, t1 is already part of the graph `addTypeRecursively` don't really add anything, it\n      // just return the existing vertex. That said, if t1 is returned by no field (at least no field reachable from\n      // a root type), the type will not be part of the graph. And in that case, we do add it. And it's actually\n      // possible that we don't create any edge to that created vertex, so we may be creating a disconnected subset\n      // of the graph, a part that is not reachable from any root. It's not optimal, but it's a bit hard to avoid\n      // in the first place (we could also try to purge such subset after this method, but it's probably not worth\n      // it in general) and it's not a big deal: it will just use a bit more memory than necessary, and it's probably\n      // pretty rare in the first place.\n      const t1Vertex = this.addTypeRecursively(t1.type);\n      for (let j = i; j < abstractTypesWithTheirRuntimeTypes.length; j++) {\n        const t2 = abstractTypesWithTheirRuntimeTypes[j];\n\n        let addT1ToT2 = false;\n        let addT2ToT1 = false;\n        if (t1.type === t2.type) {\n          // We always add an edge from a type to itself. This is just saying that if we're type-casting to the type we're already\n          // on, it's doing nothing, and in particular it shouldn't force us to type-explode anymore that if we didn't had the\n          // cast in the first place. Note that we only set `addT1ToT1` to true, otherwise we'd be adding the same edge twice.\n          addT1ToT2 = true;\n        } else {\n          // Otherwise, there is 2 aspects to take into account:\n          // - it's only worth adding an edge between types, meaining that we might save type-exploding into the runtime\n          //   types of the \"target\" one, if the local intersection (of runtime types, in the current subgraph) for the\n          //   abstract types is more than 2. If it's just 1 type, then going to that type directly is not less efficient\n          //   and is more precise in a sense. And if the intersection is empty, then no point in polluting the query graphs\n          //   with edges we'll never take.\n          // - _but_ we can only save type-exploding if that local intersection does not exclude any runtime types that\n          //   are local to the \"source\" type, not local to the \"target\" type, *but* are global to the \"taget\" type,\n          //   because such type should not be excluded and only type-explosion will achieve that (for some concrete\n          //   example, see the \"merged abstract types handling\" tests in `buildPlan.test.ts`).\n          //   In other words, we don't want to avoid the type explosion if there is a type in the intersection of\n          //   the local \"source\" runtimes and global \"target\" runtimes that are not in the purely local runtimes\n          //   intersection.\n\n          // Everything comes from the same subgraph schema, using reference equality is fine here.\n          const intersectingLocal = t1.runtimeTypesInSubgraph.filter(o1 => t2.runtimeTypesInSubgraph.includes(o1));\n          if (intersectingLocal.length >= 2) {\n            const isInLocalOtherTypeButNotLocalIntersection = (type: ObjectType, otherType: AbstractTypeWithRuntimes) => (\n              otherType.runtimeTypesInSubgraph.some((t) => t.name === type.name)\n              && !intersectingLocal.some((t) => t.name === type.name)\n            );\n            // TODO: we're currently _never_ adding the edge if the \"target\" is a union. We shouldn't be doing that, this\n            // will genuinely make some cases less efficient than they could be (though those cases are admittedly a bit convoluted),\n            // but this make sense *until* https://github.com/apollographql/federation/issues/2256 gets fixed. Because until\n            // then, we do not properly track unions through composition, and that means there is never a difference (in the query\n            // planner) between a local union definition and the supergraph one, even if that different actually exists.\n            // And so, never type-exploding in that case is somewhat safer, as not-type-exploding is ultimately an optimisation.\n            // Please note that this is *not* a fix for #2256, and most of the issues created by #2256 still needs fixing, but\n            // it avoids making it even worth for a few corner cases. We should remove the `isUnionType` below once the\n            // fix for #2256 is implemented.\n            if (!(isUnionType(t2.type) || t2.runtimeTypesInSupergraph.some((rt) => isInLocalOtherTypeButNotLocalIntersection(rt, t1)))) {\n              addT1ToT2 = true;\n            }\n            if (!(isUnionType(t1.type) ||t1.runtimeTypesInSupergraph.some((rt) => isInLocalOtherTypeButNotLocalIntersection(rt, t2)))) {\n              addT2ToT1 = true;\n            }\n          }\n        }\n\n        if (addT1ToT2 || addT2ToT1) {\n          // Same remark as for t1 above.\n          const t2Vertex = this.addTypeRecursively(t2.type);\n          if (addT1ToT2) {\n            this.addEdge(t1Vertex, t2Vertex, new DownCast(t1.type, t2.type));\n          }\n          if (addT2ToT1) {\n            this.addEdge(t2Vertex, t1Vertex, new DownCast(t2.type, t1.type));\n          }\n        }\n      }\n    }\n  }\n\n  /**\n   * In a subgraph, all entity object type will be \"automatically\" reachable (from the query root) because\n   * of the `_entities` operation. Indeed, it returns `_Entity`, which is a union of all entity object types,\n   * making those reachable.\n   *\n   * However, we also want entity interface types (interface with a @key) to be reachable in a similar way,\n   * because the `_entities` operation is also technically the one resolving them, and not having them\n   * reachable would break plenty of code that assume that by traversing a query graph from root, we get to\n   * everything that can be queried.\n   *\n   * But because graphQL unions cannot have interface types, they are not part of the `_Entity` union (and\n   * cannot be). This is ok as far as the typing of the schema does, because even when `_entities` is called\n   * to resolve an interface type, it technically returns a concrete object, and so, since every\n   * implementation of an entity interface is also an entity, this is captured by the `_Entity` union.\n   *\n   * But it does mean we want to manually add the corresponding edges now for interfaces, or @key on\n   * interfaces wouldn't work properly (at least whenthe interface is not otherwise reachable by a use operation\n   * in the subgraph).\n   */\n  addInterfaceEntityEdges() {\n    const subgraphMetadata = federationMetadata(this.schema);\n    assert(subgraphMetadata, () => `${this.name} does not correspond to a subgraph`);\n    const entityType = subgraphMetadata.entityType();\n    // We can ignore this case because if the subgraph has an interface with a @key, then we force its\n    // implementations to be marked as entity too and so we know that if `_Entity` is undefined, then\n    // we have no need for entity edges.\n    if (!entityType) {\n      return;\n    }\n    const entityTypeVertex = this.addTypeRecursively(entityType);\n    const keyDirective = subgraphMetadata.keyDirective();\n    for (const itfType of this.schema.interfaceTypes()) {\n      if (resolvableKeyApplications(keyDirective, itfType).length > 0) {\n        const itfTypeVertex = this.addTypeRecursively(itfType);\n        this.addEdge(entityTypeVertex, itfTypeVertex, new DownCast(entityType, itfType));\n      }\n    }\n  }\n\n  build(): QueryGraph {\n    return super.build(this.name);\n  }\n}\n\n/**\n * Performs a simple traversal of a query graph that _ignores_ edge conditions.\n *\n * Note that the order of the traversal shouldn't be relied on strongly, only that\n * the provided `onVertex` and `onEdges` will get called (exactly) once for every vertices\n * and edges in the query graph.\n *\n * That said, in practice, this method does `n` traversals, one from each root vertex in the\n * provided query graph (so in practice, `0 < n <= 3`) and each traversal happens to be a\n * depth first traversal (one that stops as soon as it encounters a vertex previously seen).\n *\n * @param graph - the query graph to traverse.\n * @param onVertex - a function called on each vertex traversed the first time it is traversed.\n * @param onEdges - a function called on each edges traversed the first time it is traversed.\n *   When this function is called for an edge, it is guaranteed that `onVertex` has previously\n *   been called on the edge's head vertex (there is no guarantee on the tail vertex in that\n *  `onVertex` may or may not have been called for it).\n */\nexport function simpleTraversal(\n  graph: QueryGraph,\n  onVertex: (v: Vertex) => void,\n  onEdges: (e: Edge) => boolean\n) {\n  // A marked vertex (accessed by its index) is one that has already been traversed.\n  const marked: boolean[] = new Array(graph.verticesCount());\n  // The stack contains vertices that haven't been traversed yet but need to.\n  const stack: Vertex[] = [];\n\n  const maybeAdd = function(vertex: Vertex) {\n    if (!marked[vertex.index]) {\n      stack.push(vertex);\n      marked[vertex.index] = true;\n    }\n  }\n\n  graph.roots().forEach(maybeAdd);\n  while (stack.length > 0) {\n    const vertex = stack.pop()!;\n    onVertex(vertex);\n    for (const edge of graph.outEdges(vertex)) {\n      const shouldTraverse = onEdges(edge);\n      if (shouldTraverse) {\n        maybeAdd(edge.tail);\n      }\n    }\n  }\n}\n", "'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n", "'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n", "'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n", "'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar defineDataProperty = require('define-data-property');\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar supportsDescriptors = require('has-property-descriptors')();\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object) {\n\t\tif (predicate === true) {\n\t\t\tif (object[name] === value) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else if (!isFunction(predicate) || !predicate()) {\n\t\t\treturn;\n\t\t}\n\t}\n\n\tif (supportsDescriptors) {\n\t\tdefineDataProperty(object, name, value, true);\n\t} else {\n\t\tdefineDataProperty(object, name, value);\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n", "'use strict';\n\n// modified from https://github.com/es-shims/es6-shim\nvar objectKeys = require('object-keys');\nvar hasSymbols = require('has-symbols/shams')();\nvar callBound = require('call-bound');\nvar $Object = require('es-object-atoms');\nvar $push = callBound('Array.prototype.push');\nvar $propIsEnumerable = callBound('Object.prototype.propertyIsEnumerable');\nvar originalGetSymbols = hasSymbols ? $Object.getOwnPropertySymbols : null;\n\n// eslint-disable-next-line no-unused-vars\nmodule.exports = function assign(target, source1) {\n\tif (target == null) { throw new TypeError('target must be an object'); }\n\tvar to = $Object(target); // step 1\n\tif (arguments.length === 1) {\n\t\treturn to; // step 2\n\t}\n\tfor (var s = 1; s < arguments.length; ++s) {\n\t\tvar from = $Object(arguments[s]); // step 3.a.i\n\n\t\t// step 3.a.ii:\n\t\tvar keys = objectKeys(from);\n\t\tvar getSymbols = hasSymbols && ($Object.getOwnPropertySymbols || originalGetSymbols);\n\t\tif (getSymbols) {\n\t\t\tvar syms = getSymbols(from);\n\t\t\tfor (var j = 0; j < syms.length; ++j) {\n\t\t\t\tvar key = syms[j];\n\t\t\t\tif ($propIsEnumerable(from, key)) {\n\t\t\t\t\t$push(keys, key);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// step 3.a.iii:\n\t\tfor (var i = 0; i < keys.length; ++i) {\n\t\t\tvar nextKey = keys[i];\n\t\t\tif ($propIsEnumerable(from, nextKey)) { // step 3.a.iii.2\n\t\t\t\tvar propValue = from[nextKey]; // step 3.a.iii.2.a\n\t\t\t\tto[nextKey] = propValue; // step 3.a.iii.2.b\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to; // step 4\n};\n", "'use strict';\n\nvar implementation = require('./implementation');\n\nvar lacksProperEnumerationOrder = function () {\n\tif (!Object.assign) {\n\t\treturn false;\n\t}\n\t/*\n\t * v8, specifically in node 4.x, has a bug with incorrect property enumeration order\n\t * note: this does not detect the bug unless there's 20 characters\n\t */\n\tvar str = 'abcdefghijklmnopqrst';\n\tvar letters = str.split('');\n\tvar map = {};\n\tfor (var i = 0; i < letters.length; ++i) {\n\t\tmap[letters[i]] = letters[i];\n\t}\n\tvar obj = Object.assign({}, map);\n\tvar actual = '';\n\tfor (var k in obj) {\n\t\tactual += k;\n\t}\n\treturn str !== actual;\n};\n\nvar assignHasPendingExceptions = function () {\n\tif (!Object.assign || !Object.preventExtensions) {\n\t\treturn false;\n\t}\n\t/*\n\t * Firefox 37 still has \"pending exception\" logic in its Object.assign implementation,\n\t * which is 72% slower than our shim, and Firefox 40's native implementation.\n\t */\n\tvar thrower = Object.preventExtensions({ 1: 2 });\n\ttry {\n\t\tObject.assign(thrower, 'xy');\n\t} catch (e) {\n\t\treturn thrower[1] === 'y';\n\t}\n\treturn false;\n};\n\nmodule.exports = function getPolyfill() {\n\tif (!Object.assign) {\n\t\treturn implementation;\n\t}\n\tif (lacksProperEnumerationOrder()) {\n\t\treturn implementation;\n\t}\n\tif (assignHasPendingExceptions()) {\n\t\treturn implementation;\n\t}\n\treturn Object.assign;\n};\n", "'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\nmodule.exports = function shimAssign() {\n\tvar polyfill = getPolyfill();\n\tdefine(\n\t\tObject,\n\t\t{ assign: polyfill },\n\t\t{ assign: function () { return Object.assign !== polyfill; } }\n\t);\n\treturn polyfill;\n};\n", "'use strict';\n\nvar defineProperties = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind.apply(getPolyfill());\n// eslint-disable-next-line no-unused-vars\nvar bound = function assign(target, source1) {\n\treturn polyfill(Object, arguments);\n};\n\ndefineProperties(bound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = bound;\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n", "'use strict';\n\nvar functionsHaveNames = function functionsHaveNames() {\n\treturn typeof function f() {}.name === 'string';\n};\n\nvar gOPD = Object.getOwnPropertyDescriptor;\nif (gOPD) {\n\ttry {\n\t\tgOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\tgOPD = null;\n\t}\n}\n\nfunctionsHaveNames.functionsHaveConfigurableNames = function functionsHaveConfigurableNames() {\n\tif (!functionsHaveNames() || !gOPD) {\n\t\treturn false;\n\t}\n\tvar desc = gOPD(function () {}, 'name');\n\treturn !!desc && !!desc.configurable;\n};\n\nvar $bind = Function.prototype.bind;\n\nfunctionsHaveNames.boundFunctionsHaveNames = function boundFunctionsHaveNames() {\n\treturn functionsHaveNames() && typeof $bind === 'function' && function f() {}.bind().name !== '';\n};\n\nmodule.exports = functionsHaveNames;\n", "'use strict';\n\nvar define = require('define-data-property');\nvar hasDescriptors = require('has-property-descriptors')();\nvar functionsHaveConfigurableNames = require('functions-have-names').functionsHaveConfigurableNames();\n\nvar $TypeError = require('es-errors/type');\n\n/** @type {import('.')} */\nmodule.exports = function setFunctionName(fn, name) {\n\tif (typeof fn !== 'function') {\n\t\tthrow new $TypeError('`fn` is not a function');\n\t}\n\tvar loose = arguments.length > 2 && !!arguments[2];\n\tif (!loose || functionsHaveConfigurableNames) {\n\t\tif (hasDescriptors) {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'name', name, true, true);\n\t\t} else {\n\t\t\tdefine(/** @type {Parameters<define>[0]} */ (fn), 'name', name);\n\t\t}\n\t}\n\treturn fn;\n};\n", "'use strict';\n\nvar setFunctionName = require('set-function-name');\nvar $TypeError = require('es-errors/type');\n\nvar $Object = Object;\n\nmodule.exports = setFunctionName(function flags() {\n\tif (this == null || this !== $Object(this)) {\n\t\tthrow new $TypeError('RegExp.prototype.flags getter called on non-object');\n\t}\n\tvar result = '';\n\tif (this.hasIndices) {\n\t\tresult += 'd';\n\t}\n\tif (this.global) {\n\t\tresult += 'g';\n\t}\n\tif (this.ignoreCase) {\n\t\tresult += 'i';\n\t}\n\tif (this.multiline) {\n\t\tresult += 'm';\n\t}\n\tif (this.dotAll) {\n\t\tresult += 's';\n\t}\n\tif (this.unicode) {\n\t\tresult += 'u';\n\t}\n\tif (this.unicodeSets) {\n\t\tresult += 'v';\n\t}\n\tif (this.sticky) {\n\t\tresult += 'y';\n\t}\n\treturn result;\n}, 'get flags', true);\n\n", "'use strict';\n\nvar implementation = require('./implementation');\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar $gOPD = Object.getOwnPropertyDescriptor;\n\nmodule.exports = function getPolyfill() {\n\tif (supportsDescriptors && (/a/mig).flags === 'gim') {\n\t\tvar descriptor = $gOPD(RegExp.prototype, 'flags');\n\t\tif (\n\t\t\tdescriptor\n\t\t\t&& typeof descriptor.get === 'function'\n\t\t\t&& 'dotAll' in RegExp.prototype\n\t\t\t&& 'hasIndices' in RegExp.prototype\n\t\t) {\n\t\t\t/* eslint getter-return: 0 */\n\t\t\tvar calls = '';\n\t\t\tvar o = {};\n\t\t\tObject.defineProperty(o, 'hasIndices', {\n\t\t\t\tget: function () {\n\t\t\t\t\tcalls += 'd';\n\t\t\t\t}\n\t\t\t});\n\t\t\tObject.defineProperty(o, 'sticky', {\n\t\t\t\tget: function () {\n\t\t\t\t\tcalls += 'y';\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tdescriptor.get.call(o);\n\n\t\t\tif (calls === 'dy') {\n\t\t\t\treturn descriptor.get;\n\t\t\t}\n\t\t}\n\t}\n\treturn implementation;\n};\n", "'use strict';\n\nvar supportsDescriptors = require('define-properties').supportsDescriptors;\nvar getPolyfill = require('./polyfill');\nvar gOPD = require('gopd');\nvar defineProperty = Object.defineProperty;\nvar $TypeError = require('es-errors');\nvar getProto = require('get-proto');\nvar regex = /a/;\n\nmodule.exports = function shimFlags() {\n\tif (!supportsDescriptors || !getProto) {\n\t\tthrow new $TypeError('RegExp.prototype.flags requires a true ES5 environment that supports property descriptors');\n\t}\n\tvar polyfill = getPolyfill();\n\tvar proto = getProto(regex);\n\tvar descriptor = gOPD(proto, 'flags');\n\tif (!descriptor || descriptor.get !== polyfill) {\n\t\tdefineProperty(proto, 'flags', {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tget: polyfill\n\t\t});\n\t}\n\treturn polyfill;\n};\n", "'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar flagsBound = callBind(getPolyfill());\n\ndefine(flagsBound, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = flagsBound;\n", "'use strict';\n\n// this should only run in node >= 13.2, so it\n// does not need any of the intense fallbacks that old node/browsers do\n\nvar $iterator = Symbol.iterator;\nmodule.exports = function getIterator(iterable) {\n\t// alternatively, `iterable[$iterator]?.()`\n\tif (iterable != null && typeof iterable[$iterator] !== 'undefined') {\n\t\treturn iterable[$iterator]();\n\t}\n};\n", "module.exports = require('util').inspect;\n", "var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n    ? Symbol.toStringTag\n    : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n    [].__proto__ === Array.prototype // eslint-disable-line no-proto\n        ? function (O) {\n            return O.__proto__; // eslint-disable-line no-proto\n        }\n        : null\n);\n\nfunction addNumericSeparator(num, str) {\n    if (\n        num === Infinity\n        || num === -Infinity\n        || num !== num\n        || (num && num > -1000 && num < 1000)\n        || $test.call(/e/, str)\n    ) {\n        return str;\n    }\n    var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n    if (typeof num === 'number') {\n        var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n        if (int !== num) {\n            var intStr = String(int);\n            var dec = $slice.call(str, intStr.length + 1);\n            return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n        }\n    }\n    return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nvar quotes = {\n    __proto__: null,\n    'double': '\"',\n    single: \"'\"\n};\nvar quoteREs = {\n    __proto__: null,\n    'double': /([\"\\\\])/g,\n    single: /(['\\\\])/g\n};\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n    var opts = options || {};\n\n    if (has(opts, 'quoteStyle') && !has(quotes, opts.quoteStyle)) {\n        throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n    }\n    if (\n        has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n            ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n            : opts.maxStringLength !== null\n        )\n    ) {\n        throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n    }\n    var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n    if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n        throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n    }\n\n    if (\n        has(opts, 'indent')\n        && opts.indent !== null\n        && opts.indent !== '\\t'\n        && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n    ) {\n        throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n    }\n    if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n        throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n    }\n    var numericSeparator = opts.numericSeparator;\n\n    if (typeof obj === 'undefined') {\n        return 'undefined';\n    }\n    if (obj === null) {\n        return 'null';\n    }\n    if (typeof obj === 'boolean') {\n        return obj ? 'true' : 'false';\n    }\n\n    if (typeof obj === 'string') {\n        return inspectString(obj, opts);\n    }\n    if (typeof obj === 'number') {\n        if (obj === 0) {\n            return Infinity / obj > 0 ? '0' : '-0';\n        }\n        var str = String(obj);\n        return numericSeparator ? addNumericSeparator(obj, str) : str;\n    }\n    if (typeof obj === 'bigint') {\n        var bigIntStr = String(obj) + 'n';\n        return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n    }\n\n    var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n    if (typeof depth === 'undefined') { depth = 0; }\n    if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n        return isArray(obj) ? '[Array]' : '[Object]';\n    }\n\n    var indent = getIndent(opts, depth);\n\n    if (typeof seen === 'undefined') {\n        seen = [];\n    } else if (indexOf(seen, obj) >= 0) {\n        return '[Circular]';\n    }\n\n    function inspect(value, from, noIndent) {\n        if (from) {\n            seen = $arrSlice.call(seen);\n            seen.push(from);\n        }\n        if (noIndent) {\n            var newOpts = {\n                depth: opts.depth\n            };\n            if (has(opts, 'quoteStyle')) {\n                newOpts.quoteStyle = opts.quoteStyle;\n            }\n            return inspect_(value, newOpts, depth + 1, seen);\n        }\n        return inspect_(value, opts, depth + 1, seen);\n    }\n\n    if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n        var name = nameOf(obj);\n        var keys = arrObjKeys(obj, inspect);\n        return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n    }\n    if (isSymbol(obj)) {\n        var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n        return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n    }\n    if (isElement(obj)) {\n        var s = '<' + $toLowerCase.call(String(obj.nodeName));\n        var attrs = obj.attributes || [];\n        for (var i = 0; i < attrs.length; i++) {\n            s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n        }\n        s += '>';\n        if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n        s += '</' + $toLowerCase.call(String(obj.nodeName)) + '>';\n        return s;\n    }\n    if (isArray(obj)) {\n        if (obj.length === 0) { return '[]'; }\n        var xs = arrObjKeys(obj, inspect);\n        if (indent && !singleLineValues(xs)) {\n            return '[' + indentedJoin(xs, indent) + ']';\n        }\n        return '[ ' + $join.call(xs, ', ') + ' ]';\n    }\n    if (isError(obj)) {\n        var parts = arrObjKeys(obj, inspect);\n        if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n            return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n        }\n        if (parts.length === 0) { return '[' + String(obj) + ']'; }\n        return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n    }\n    if (typeof obj === 'object' && customInspect) {\n        if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n            return utilInspect(obj, { depth: maxDepth - depth });\n        } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n            return obj.inspect();\n        }\n    }\n    if (isMap(obj)) {\n        var mapParts = [];\n        if (mapForEach) {\n            mapForEach.call(obj, function (value, key) {\n                mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n            });\n        }\n        return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n    }\n    if (isSet(obj)) {\n        var setParts = [];\n        if (setForEach) {\n            setForEach.call(obj, function (value) {\n                setParts.push(inspect(value, obj));\n            });\n        }\n        return collectionOf('Set', setSize.call(obj), setParts, indent);\n    }\n    if (isWeakMap(obj)) {\n        return weakCollectionOf('WeakMap');\n    }\n    if (isWeakSet(obj)) {\n        return weakCollectionOf('WeakSet');\n    }\n    if (isWeakRef(obj)) {\n        return weakCollectionOf('WeakRef');\n    }\n    if (isNumber(obj)) {\n        return markBoxed(inspect(Number(obj)));\n    }\n    if (isBigInt(obj)) {\n        return markBoxed(inspect(bigIntValueOf.call(obj)));\n    }\n    if (isBoolean(obj)) {\n        return markBoxed(booleanValueOf.call(obj));\n    }\n    if (isString(obj)) {\n        return markBoxed(inspect(String(obj)));\n    }\n    // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other\n    /* eslint-env browser */\n    if (typeof window !== 'undefined' && obj === window) {\n        return '{ [object Window] }';\n    }\n    if (\n        (typeof globalThis !== 'undefined' && obj === globalThis)\n        || (typeof global !== 'undefined' && obj === global)\n    ) {\n        return '{ [object globalThis] }';\n    }\n    if (!isDate(obj) && !isRegExp(obj)) {\n        var ys = arrObjKeys(obj, inspect);\n        var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n        var protoTag = obj instanceof Object ? '' : 'null prototype';\n        var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n        var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n        var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n        if (ys.length === 0) { return tag + '{}'; }\n        if (indent) {\n            return tag + '{' + indentedJoin(ys, indent) + '}';\n        }\n        return tag + '{ ' + $join.call(ys, ', ') + ' }';\n    }\n    return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n    var style = opts.quoteStyle || defaultStyle;\n    var quoteChar = quotes[style];\n    return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n    return $replace.call(String(s), /\"/g, '&quot;');\n}\n\nfunction canTrustToString(obj) {\n    return !toStringTag || !(typeof obj === 'object' && (toStringTag in obj || typeof obj[toStringTag] !== 'undefined'));\n}\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && canTrustToString(obj); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && canTrustToString(obj); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && canTrustToString(obj); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && canTrustToString(obj); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && canTrustToString(obj); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && canTrustToString(obj); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && canTrustToString(obj); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n    if (hasShammedSymbols) {\n        return obj && typeof obj === 'object' && obj instanceof Symbol;\n    }\n    if (typeof obj === 'symbol') {\n        return true;\n    }\n    if (!obj || typeof obj !== 'object' || !symToString) {\n        return false;\n    }\n    try {\n        symToString.call(obj);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nfunction isBigInt(obj) {\n    if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n        return false;\n    }\n    try {\n        bigIntValueOf.call(obj);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n    return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n    return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n    if (f.name) { return f.name; }\n    var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n    if (m) { return m[1]; }\n    return null;\n}\n\nfunction indexOf(xs, x) {\n    if (xs.indexOf) { return xs.indexOf(x); }\n    for (var i = 0, l = xs.length; i < l; i++) {\n        if (xs[i] === x) { return i; }\n    }\n    return -1;\n}\n\nfunction isMap(x) {\n    if (!mapSize || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        mapSize.call(x);\n        try {\n            setSize.call(x);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof Map; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakMap(x) {\n    if (!weakMapHas || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakMapHas.call(x, weakMapHas);\n        try {\n            weakSetHas.call(x, weakSetHas);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakRef(x) {\n    if (!weakRefDeref || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakRefDeref.call(x);\n        return true;\n    } catch (e) {}\n    return false;\n}\n\nfunction isSet(x) {\n    if (!setSize || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        setSize.call(x);\n        try {\n            mapSize.call(x);\n        } catch (m) {\n            return true;\n        }\n        return x instanceof Set; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isWeakSet(x) {\n    if (!weakSetHas || !x || typeof x !== 'object') {\n        return false;\n    }\n    try {\n        weakSetHas.call(x, weakSetHas);\n        try {\n            weakMapHas.call(x, weakMapHas);\n        } catch (s) {\n            return true;\n        }\n        return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n    } catch (e) {}\n    return false;\n}\n\nfunction isElement(x) {\n    if (!x || typeof x !== 'object') { return false; }\n    if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n        return true;\n    }\n    return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n    if (str.length > opts.maxStringLength) {\n        var remaining = str.length - opts.maxStringLength;\n        var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n        return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n    }\n    var quoteRE = quoteREs[opts.quoteStyle || 'single'];\n    quoteRE.lastIndex = 0;\n    // eslint-disable-next-line no-control-regex\n    var s = $replace.call($replace.call(str, quoteRE, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n    return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n    var n = c.charCodeAt(0);\n    var x = {\n        8: 'b',\n        9: 't',\n        10: 'n',\n        12: 'f',\n        13: 'r'\n    }[n];\n    if (x) { return '\\\\' + x; }\n    return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n    return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n    return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n    var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n    return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n    for (var i = 0; i < xs.length; i++) {\n        if (indexOf(xs[i], '\\n') >= 0) {\n            return false;\n        }\n    }\n    return true;\n}\n\nfunction getIndent(opts, depth) {\n    var baseIndent;\n    if (opts.indent === '\\t') {\n        baseIndent = '\\t';\n    } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n        baseIndent = $join.call(Array(opts.indent + 1), ' ');\n    } else {\n        return null;\n    }\n    return {\n        base: baseIndent,\n        prev: $join.call(Array(depth + 1), baseIndent)\n    };\n}\n\nfunction indentedJoin(xs, indent) {\n    if (xs.length === 0) { return ''; }\n    var lineJoiner = '\\n' + indent.prev + indent.base;\n    return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n    var isArr = isArray(obj);\n    var xs = [];\n    if (isArr) {\n        xs.length = obj.length;\n        for (var i = 0; i < obj.length; i++) {\n            xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n        }\n    }\n    var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n    var symMap;\n    if (hasShammedSymbols) {\n        symMap = {};\n        for (var k = 0; k < syms.length; k++) {\n            symMap['$' + syms[k]] = syms[k];\n        }\n    }\n\n    for (var key in obj) { // eslint-disable-line no-restricted-syntax\n        if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n        if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n        if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n            // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n            continue; // eslint-disable-line no-restricted-syntax, no-continue\n        } else if ($test.call(/[^\\w$]/, key)) {\n            xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n        } else {\n            xs.push(key + ': ' + inspect(obj[key], obj));\n        }\n    }\n    if (typeof gOPS === 'function') {\n        for (var j = 0; j < syms.length; j++) {\n            if (isEnumerable.call(obj, syms[j])) {\n                xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n            }\n        }\n    }\n    return xs;\n}\n", "'use strict';\n\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\n\n/*\n* This function traverses the list returning the node corresponding to the given key.\n*\n* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list.\n* By doing so, all the recently used nodes can be accessed relatively quickly.\n*/\n/** @type {import('./list.d.ts').listGetNode} */\n// eslint-disable-next-line consistent-return\nvar listGetNode = function (list, key, isDelete) {\n\t/** @type {typeof list | NonNullable<(typeof list)['next']>} */\n\tvar prev = list;\n\t/** @type {(typeof list)['next']} */\n\tvar curr;\n\t// eslint-disable-next-line eqeqeq\n\tfor (; (curr = prev.next) != null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\tif (!isDelete) {\n\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\tcurr.next = /** @type {NonNullable<typeof list.next>} */ (list.next);\n\t\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\t}\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\n/** @type {import('./list.d.ts').listGet} */\nvar listGet = function (objects, key) {\n\tif (!objects) {\n\t\treturn void undefined;\n\t}\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\n/** @type {import('./list.d.ts').listSet} */\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = /** @type {import('./list.d.ts').ListNode<typeof value, typeof key>} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t});\n\t}\n};\n/** @type {import('./list.d.ts').listHas} */\nvar listHas = function (objects, key) {\n\tif (!objects) {\n\t\treturn false;\n\t}\n\treturn !!listGetNode(objects, key);\n};\n/** @type {import('./list.d.ts').listDelete} */\n// eslint-disable-next-line consistent-return\nvar listDelete = function (objects, key) {\n\tif (objects) {\n\t\treturn listGetNode(objects, key, true);\n\t}\n};\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannelList() {\n\t/** @typedef {ReturnType<typeof getSideChannelList>} Channel */\n\t/** @typedef {Parameters<Channel['get']>[0]} K */\n\t/** @typedef {Parameters<Channel['set']>[1]} V */\n\n\t/** @type {import('./list.d.ts').RootNode<V, K> | undefined} */ var $o;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\tvar root = $o && $o.next;\n\t\t\tvar deletedNode = listDelete($o, key);\n\t\t\tif (deletedNode && root && root === deletedNode) {\n\t\t\t\t$o = void undefined;\n\t\t\t}\n\t\t\treturn !!deletedNode;\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn listGet($o, key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn listHas($o, key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$o) {\n\t\t\t\t// Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head\n\t\t\t\t$o = {\n\t\t\t\t\tnext: void undefined\n\t\t\t\t};\n\t\t\t}\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\tlistSet(/** @type {NonNullable<typeof $o>} */ ($o), key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\n\treturn channel;\n};\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\nvar $Map = GetIntrinsic('%Map%', true);\n\n/** @type {<K, V>(thisArg: Map<K, V>, key: K) => V} */\nvar $mapGet = callBound('Map.prototype.get', true);\n/** @type {<K, V>(thisArg: Map<K, V>, key: K, value: V) => void} */\nvar $mapSet = callBound('Map.prototype.set', true);\n/** @type {<K, V>(thisArg: Map<K, V>, key: K) => boolean} */\nvar $mapHas = callBound('Map.prototype.has', true);\n/** @type {<K, V>(thisArg: Map<K, V>, key: K) => boolean} */\nvar $mapDelete = callBound('Map.prototype.delete', true);\n/** @type {<K, V>(thisArg: Map<K, V>) => number} */\nvar $mapSize = callBound('Map.prototype.size', true);\n\n/** @type {import('.')} */\nmodule.exports = !!$Map && /** @type {Exclude<import('.'), false>} */ function getSideChannelMap() {\n\t/** @typedef {ReturnType<typeof getSideChannelMap>} Channel */\n\t/** @typedef {Parameters<Channel['get']>[0]} K */\n\t/** @typedef {Parameters<Channel['set']>[1]} V */\n\n\t/** @type {Map<K, V> | undefined} */ var $m;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\tif ($m) {\n\t\t\t\tvar result = $mapDelete($m, key);\n\t\t\t\tif ($mapSize($m) === 0) {\n\t\t\t\t\t$m = void undefined;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($m) {\n\t\t\t\treturn $mapGet($m, key);\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($m) {\n\t\t\t\treturn $mapHas($m, key);\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$m) {\n\t\t\t\t// @ts-expect-error TS can't handle narrowing a variable inside a closure\n\t\t\t\t$m = new $Map();\n\t\t\t}\n\t\t\t$mapSet($m, key, value);\n\t\t}\n\t};\n\n\t// @ts-expect-error TODO: figure out why TS is erroring here\n\treturn channel;\n};\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\nvar inspect = require('object-inspect');\nvar getSideChannelMap = require('side-channel-map');\n\nvar $TypeError = require('es-errors/type');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\n\n/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => V} */\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\n/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K, value: V) => void} */\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\n/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => boolean} */\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\n/** @type {<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => boolean} */\nvar $weakMapDelete = callBound('WeakMap.prototype.delete', true);\n\n/** @type {import('.')} */\nmodule.exports = $WeakMap\n\t? /** @type {Exclude<import('.'), false>} */ function getSideChannelWeakMap() {\n\t\t/** @typedef {ReturnType<typeof getSideChannelWeakMap>} Channel */\n\t\t/** @typedef {Parameters<Channel['get']>[0]} K */\n\t\t/** @typedef {Parameters<Channel['set']>[1]} V */\n\n\t\t/** @type {WeakMap<K & object, V> | undefined} */ var $wm;\n\t\t/** @type {Channel | undefined} */ var $m;\n\n\t\t/** @type {Channel} */\n\t\tvar channel = {\n\t\t\tassert: function (key) {\n\t\t\t\tif (!channel.has(key)) {\n\t\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t\t}\n\t\t\t},\n\t\t\t'delete': function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapDelete($wm, key);\n\t\t\t\t\t}\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif ($m) {\n\t\t\t\t\t\treturn $m['delete'](key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\tget: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn $m && $m.get(key);\n\t\t\t},\n\t\t\thas: function (key) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif ($wm) {\n\t\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn !!$m && $m.has(key);\n\t\t\t},\n\t\t\tset: function (key, value) {\n\t\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\t\tif (!$wm) {\n\t\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t\t}\n\t\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t\t} else if (getSideChannelMap) {\n\t\t\t\t\tif (!$m) {\n\t\t\t\t\t\t$m = getSideChannelMap();\n\t\t\t\t\t}\n\t\t\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t\t\t/** @type {NonNullable<typeof $m>} */ ($m).set(key, value);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\t// @ts-expect-error TODO: figure out why this is erroring\n\t\treturn channel;\n\t}\n\t: getSideChannelMap;\n", "'use strict';\n\nvar $TypeError = require('es-errors/type');\nvar inspect = require('object-inspect');\nvar getSideChannelList = require('side-channel-list');\nvar getSideChannelMap = require('side-channel-map');\nvar getSideChannelWeakMap = require('side-channel-weakmap');\n\nvar makeChannel = getSideChannelWeakMap || getSideChannelMap || getSideChannelList;\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannel() {\n\t/** @typedef {ReturnType<typeof getSideChannel>} Channel */\n\n\t/** @type {Channel | undefined} */ var $channelData;\n\n\t/** @type {Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\t'delete': function (key) {\n\t\t\treturn !!$channelData && $channelData['delete'](key);\n\t\t},\n\t\tget: function (key) {\n\t\t\treturn $channelData && $channelData.get(key);\n\t\t},\n\t\thas: function (key) {\n\t\t\treturn !!$channelData && $channelData.has(key);\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif (!$channelData) {\n\t\t\t\t$channelData = makeChannel();\n\t\t\t}\n\n\t\t\t$channelData.set(key, value);\n\t\t}\n\t};\n\t// @ts-expect-error TODO: figure out why this is erroring\n\treturn channel;\n};\n", "'use strict';\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n", "'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n", "'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n", "'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n", "'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bound');\n\nvar $toString = callBound('Object.prototype.toString');\n\n/** @type {import('.')} */\nvar isStandardArguments = function isArguments(value) {\n\tif (\n\t\thasToStringTag\n\t\t&& value\n\t\t&& typeof value === 'object'\n\t\t&& Symbol.toStringTag in value\n\t) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\n/** @type {import('.')} */\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null\n\t\t&& typeof value === 'object'\n\t\t&& 'length' in value\n\t\t&& typeof value.length === 'number'\n\t\t&& value.length >= 0\n\t\t&& $toString(value) !== '[object Array]'\n\t\t&& 'callee' in value\n\t\t&& $toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\n// @ts-expect-error TODO make this not error\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\n/** @type {import('.')} */\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n", "'use strict';\n\nvar callBind = require('call-bind');\nvar callBound = require('call-bound');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $ArrayBuffer = GetIntrinsic('%ArrayBuffer%', true);\n/** @type {undefined | ((receiver: ArrayBuffer) => number) | ((receiver: unknown) => never)} */\nvar $byteLength = callBound('ArrayBuffer.prototype.byteLength', true);\nvar $toString = callBound('Object.prototype.toString');\n\n// in node 0.10, ArrayBuffers have no prototype methods, but have an own slot-checking `slice` method\nvar abSlice = !!$ArrayBuffer && !$byteLength && new $ArrayBuffer(0).slice;\nvar $abSlice = !!abSlice && callBind(abSlice);\n\n/** @type {import('.')} */\nmodule.exports = $byteLength || $abSlice\n\t? function isArrayBuffer(obj) {\n\t\tif (!obj || typeof obj !== 'object') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\tif ($byteLength) {\n\t\t\t\t// @ts-expect-error no idea why TS can't handle the overload\n\t\t\t\t$byteLength(obj);\n\t\t\t} else {\n\t\t\t\t// @ts-expect-error TS chooses not to type-narrow inside a closure\n\t\t\t\t$abSlice(obj, 0);\n\t\t\t}\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t: $ArrayBuffer\n\t\t// in node 0.8, ArrayBuffers have no prototype or own methods, but also no Symbol.toStringTag\n\t\t? function isArrayBuffer(obj) {\n\t\t\treturn $toString(obj) === '[object ArrayBuffer]';\n\t\t}\n\t\t// @ts-expect-error\n\t\t: function isArrayBuffer(obj) { // eslint-disable-line no-unused-vars\n\t\t\treturn false;\n\t\t};\n", "'use strict';\n\nvar callBound = require('call-bound');\n\nvar getDay = callBound('Date.prototype.getDay');\n/** @type {import('.')} */\nvar tryDateObject = function tryDateGetDayCall(value) {\n\ttry {\n\t\tgetDay(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n\n/** @type {(value: unknown) => string} */\nvar toStr = callBound('Object.prototype.toString');\nvar dateClass = '[object Date]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\n/** @type {import('.')} */\nmodule.exports = function isDateObject(value) {\n\tif (typeof value !== 'object' || value === null) {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryDateObject(value) : toStr(value) === dateClass;\n};\n", "'use strict';\n\nvar callBound = require('call-bound');\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar hasOwn = require('hasown');\nvar gOPD = require('gopd');\n\n/** @type {import('.')} */\nvar fn;\n\nif (hasToStringTag) {\n\t/** @type {(receiver: ThisParameterType<typeof RegExp.prototype.exec>, ...args: Parameters<typeof RegExp.prototype.exec>) => ReturnType<typeof RegExp.prototype.exec>} */\n\tvar $exec = callBound('RegExp.prototype.exec');\n\t/** @type {object} */\n\tvar isRegexMarker = {};\n\n\tvar throwRegexMarker = function () {\n\t\tthrow isRegexMarker;\n\t};\n\t/** @type {{ toString(): never, valueOf(): never, [Symbol.toPrimitive]?(): never }} */\n\tvar badStringifier = {\n\t\ttoString: throwRegexMarker,\n\t\tvalueOf: throwRegexMarker\n\t};\n\n\tif (typeof Symbol.toPrimitive === 'symbol') {\n\t\tbadStringifier[Symbol.toPrimitive] = throwRegexMarker;\n\t}\n\n\t/** @type {import('.')} */\n\t// @ts-expect-error TS can't figure out that the $exec call always throws\n\t// eslint-disable-next-line consistent-return\n\tfn = function isRegex(value) {\n\t\tif (!value || typeof value !== 'object') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {NonNullable<typeof gOPD>} */ (gOPD)(/** @type {{ lastIndex?: unknown }} */ (value), 'lastIndex');\n\t\tvar hasLastIndexDataProperty = descriptor && hasOwn(descriptor, 'value');\n\t\tif (!hasLastIndexDataProperty) {\n\t\t\treturn false;\n\t\t}\n\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\t$exec(value, /** @type {string} */ (/** @type {unknown} */ (badStringifier)));\n\t\t} catch (e) {\n\t\t\treturn e === isRegexMarker;\n\t\t}\n\t};\n} else {\n\t/** @type {(receiver: ThisParameterType<typeof Object.prototype.toString>, ...args: Parameters<typeof Object.prototype.toString>) => ReturnType<typeof Object.prototype.toString>} */\n\tvar $toString = callBound('Object.prototype.toString');\n\t/** @const @type {'[object RegExp]'} */\n\tvar regexClass = '[object RegExp]';\n\n\t/** @type {import('.')} */\n\tfn = function isRegex(value) {\n\t\t// In older browsers, typeof regex incorrectly returns 'function'\n\t\tif (!value || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn $toString(value) === regexClass;\n\t};\n}\n\nmodule.exports = fn;\n", "'use strict';\n\nvar callBound = require('call-bound');\n\n/** @type {undefined | ((thisArg: SharedArrayBuffer) => number)} */\nvar $byteLength = callBound('SharedArrayBuffer.prototype.byteLength', true);\n\n/** @type {import('.')} */\nmodule.exports = $byteLength\n\t? function isSharedArrayBuffer(obj) {\n\t\tif (!obj || typeof obj !== 'object') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\t// @ts-expect-error TS can't figure out this closed-over variable is non-nullable, and it's fine that `obj` might not be a SAB\n\t\t\t$byteLength(obj);\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t: function isSharedArrayBuffer(_obj) { // eslint-disable-line no-unused-vars\n\t\treturn false;\n\t};\n", "'use strict';\n\nvar callBound = require('call-bound');\n\n/** @type {(receiver: ThisParameterType<typeof String.prototype.valueOf>, ...args: Parameters<typeof String.prototype.valueOf>) => ReturnType<typeof String.prototype.valueOf>} */\nvar $strValueOf = callBound('String.prototype.valueOf');\n\n/** @type {import('.')} */\nvar tryStringObject = function tryStringObject(value) {\n\ttry {\n\t\t$strValueOf(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\n/** @type {(receiver: ThisParameterType<typeof Object.prototype.toString>, ...args: Parameters<typeof Object.prototype.toString>) => ReturnType<typeof Object.prototype.toString>} */\nvar $toString = callBound('Object.prototype.toString');\nvar strClass = '[object String]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\n/** @type {import('.')} */\nmodule.exports = function isString(value) {\n\tif (typeof value === 'string') {\n\t\treturn true;\n\t}\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryStringObject(value) : $toString(value) === strClass;\n};\n", "'use strict';\n\nvar callBound = require('call-bound');\n\nvar $numToStr = callBound('Number.prototype.toString');\n\n/** @type {import('.')} */\nvar tryNumberObject = function tryNumberObject(value) {\n\ttry {\n\t\t$numToStr(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar $toString = callBound('Object.prototype.toString');\nvar numClass = '[object Number]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\n/** @type {import('.')} */\nmodule.exports = function isNumberObject(value) {\n\tif (typeof value === 'number') {\n\t\treturn true;\n\t}\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryNumberObject(value) : $toString(value) === numClass;\n};\n", "'use strict';\n\nvar callBound = require('call-bound');\nvar $boolToStr = callBound('Boolean.prototype.toString');\nvar $toString = callBound('Object.prototype.toString');\n\n/** @type {import('.')} */\nvar tryBooleanObject = function booleanBrandCheck(value) {\n\ttry {\n\t\t$boolToStr(value);\n\t\treturn true;\n\t} catch (e) {\n\t\treturn false;\n\t}\n};\nvar boolClass = '[object Boolean]';\nvar hasToStringTag = require('has-tostringtag/shams')();\n\n/** @type {import('.')} */\nmodule.exports = function isBoolean(value) {\n\tif (typeof value === 'boolean') {\n\t\treturn true;\n\t}\n\tif (value === null || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\treturn hasToStringTag ? tryBooleanObject(value) : $toString(value) === boolClass;\n};\n", "'use strict';\n\nvar callBound = require('call-bound');\nvar isRegex = require('is-regex');\n\nvar $exec = callBound('RegExp.prototype.exec');\nvar $TypeError = require('es-errors/type');\n\n/** @type {import('.')} */\nmodule.exports = function regexTester(regex) {\n\tif (!isRegex(regex)) {\n\t\tthrow new $TypeError('`regex` must be a RegExp');\n\t}\n\treturn function test(s) {\n\t\treturn $exec(regex, s) !== null;\n\t};\n};\n", "'use strict';\n\nvar callBound = require('call-bound');\nvar $toString = callBound('Object.prototype.toString');\nvar hasSymbols = require('has-symbols')();\nvar safeRegexTest = require('safe-regex-test');\n\nif (hasSymbols) {\n\tvar $symToStr = callBound('Symbol.prototype.toString');\n\tvar isSymString = safeRegexTest(/^Symbol\\(.*\\)$/);\n\n\t/** @type {(value: object) => value is Symbol} */\n\tvar isSymbolObject = function isRealSymbolObject(value) {\n\t\tif (typeof value.valueOf() !== 'symbol') {\n\t\t\treturn false;\n\t\t}\n\t\treturn isSymString($symToStr(value));\n\t};\n\n\t/** @type {import('.')} */\n\tmodule.exports = function isSymbol(value) {\n\t\tif (typeof value === 'symbol') {\n\t\t\treturn true;\n\t\t}\n\t\tif (!value || typeof value !== 'object' || $toString(value) !== '[object Symbol]') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\treturn isSymbolObject(value);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n} else {\n\t/** @type {import('.')} */\n\tmodule.exports = function isSymbol(value) {\n\t\t// this environment does not support Symbols.\n\t\treturn false && value;\n\t};\n}\n", "'use strict';\n\nvar $BigInt = typeof BigInt !== 'undefined' && BigInt;\n\n/** @type {import('.')} */\nmodule.exports = function hasNativeBigInts() {\n\treturn typeof $BigInt === 'function'\n\t\t&& typeof BigInt === 'function'\n\t\t&& typeof $BigInt(42) === 'bigint' // eslint-disable-line no-magic-numbers\n\t\t&& typeof BigInt(42) === 'bigint'; // eslint-disable-line no-magic-numbers\n};\n", "'use strict';\n\nvar hasBigInts = require('has-bigints')();\n\nif (hasBigInts) {\n\tvar bigIntValueOf = BigInt.prototype.valueOf;\n\t/** @type {(value: object) => value is BigInt} */\n\tvar tryBigInt = function tryBigIntObject(value) {\n\t\ttry {\n\t\t\tbigIntValueOf.call(value);\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t}\n\t\treturn false;\n\t};\n\n\t/** @type {import('.')} */\n\tmodule.exports = function isBigInt(value) {\n\t\tif (\n\t\t\tvalue === null\n\t\t\t|| typeof value === 'undefined'\n\t\t\t|| typeof value === 'boolean'\n\t\t\t|| typeof value === 'string'\n\t\t\t|| typeof value === 'number'\n\t\t\t|| typeof value === 'symbol'\n\t\t\t|| typeof value === 'function'\n\t\t) {\n\t\t\treturn false;\n\t\t}\n\t\tif (typeof value === 'bigint') {\n\t\t\treturn true;\n\t\t}\n\n\t\treturn tryBigInt(value);\n\t};\n} else {\n\t/** @type {import('.')} */\n\tmodule.exports = function isBigInt(value) {\n\t\treturn false && value;\n\t};\n}\n", "'use strict';\n\nvar isString = require('is-string');\nvar isNumber = require('is-number-object');\nvar isBoolean = require('is-boolean-object');\nvar isSymbol = require('is-symbol');\nvar isBigInt = require('is-bigint');\n\n/** @type {import('.')} */\n// eslint-disable-next-line consistent-return\nmodule.exports = function whichBoxedPrimitive(value) {\n\t// eslint-disable-next-line eqeqeq\n\tif (value == null || (typeof value !== 'object' && typeof value !== 'function')) {\n\t\treturn null;\n\t}\n\tif (isString(value)) {\n\t\treturn 'String';\n\t}\n\tif (isNumber(value)) {\n\t\treturn 'Number';\n\t}\n\tif (isBoolean(value)) {\n\t\treturn 'Boolean';\n\t}\n\tif (isSymbol(value)) {\n\t\treturn 'Symbol';\n\t}\n\tif (isBigInt(value)) {\n\t\treturn 'BigInt';\n\t}\n};\n", "'use strict';\n\n/** @const */\nvar $Map = typeof Map === 'function' && Map.prototype ? Map : null;\nvar $Set = typeof Set === 'function' && Set.prototype ? Set : null;\n\nvar exported;\n\nif (!$Map) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isMap(x) {\n\t\t// `Map` is not present in this environment.\n\t\treturn false;\n\t};\n}\n\nvar $mapHas = $Map ? Map.prototype.has : null;\nvar $setHas = $Set ? Set.prototype.has : null;\nif (!exported && !$mapHas) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isMap(x) {\n\t\t// `Map` does not have a `has` method\n\t\treturn false;\n\t};\n}\n\n/** @type {import('.')} */\nmodule.exports = exported || function isMap(x) {\n\tif (!x || typeof x !== 'object') {\n\t\treturn false;\n\t}\n\ttry {\n\t\t$mapHas.call(x);\n\t\tif ($setHas) {\n\t\t\ttry {\n\t\t\t\t$setHas.call(x);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t// @ts-expect-error TS can't figure out that $Map is always truthy here\n\t\treturn x instanceof $Map; // core-js workaround, pre-v2.5.0\n\t} catch (e) {}\n\treturn false;\n};\n", "'use strict';\n\nvar $Map = typeof Map === 'function' && Map.prototype ? Map : null;\nvar $Set = typeof Set === 'function' && Set.prototype ? Set : null;\n\nvar exported;\n\nif (!$Set) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isSet(x) {\n\t\t// `Set` is not present in this environment.\n\t\treturn false;\n\t};\n}\n\nvar $mapHas = $Map ? Map.prototype.has : null;\nvar $setHas = $Set ? Set.prototype.has : null;\nif (!exported && !$setHas) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isSet(x) {\n\t\t// `Set` does not have a `has` method\n\t\treturn false;\n\t};\n}\n\n/** @type {import('.')} */\nmodule.exports = exported || function isSet(x) {\n\tif (!x || typeof x !== 'object') {\n\t\treturn false;\n\t}\n\ttry {\n\t\t$setHas.call(x);\n\t\tif ($mapHas) {\n\t\t\ttry {\n\t\t\t\t$mapHas.call(x);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t// @ts-expect-error TS can't figure out that $Set is always truthy here\n\t\treturn x instanceof $Set; // core-js workaround, pre-v2.5.0\n\t} catch (e) {}\n\treturn false;\n};\n", "'use strict';\n\nvar $WeakMap = typeof WeakMap === 'function' && WeakMap.prototype ? WeakMap : null;\nvar $WeakSet = typeof WeakSet === 'function' && WeakSet.prototype ? WeakSet : null;\n\nvar exported;\n\nif (!$WeakMap) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isWeakMap(x) {\n\t\t// `WeakMap` is not present in this environment.\n\t\treturn false;\n\t};\n}\n\nvar $mapHas = $WeakMap ? $WeakMap.prototype.has : null;\nvar $setHas = $WeakSet ? $WeakSet.prototype.has : null;\nif (!exported && !$mapHas) {\n\t/** @type {import('.')} */\n\t// eslint-disable-next-line no-unused-vars\n\texported = function isWeakMap(x) {\n\t\t// `WeakMap` does not have a `has` method\n\t\treturn false;\n\t};\n}\n\n/** @type {import('.')} */\nmodule.exports = exported || function isWeakMap(x) {\n\tif (!x || typeof x !== 'object') {\n\t\treturn false;\n\t}\n\ttry {\n\t\t$mapHas.call(x, $mapHas);\n\t\tif ($setHas) {\n\t\t\ttry {\n\t\t\t\t$setHas.call(x, $setHas);\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t// @ts-expect-error TS can't figure out that $WeakMap is always truthy here\n\t\treturn x instanceof $WeakMap; // core-js workaround, pre-v3\n\t} catch (e) {}\n\treturn false;\n};\n", "'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bound');\n\nvar $WeakSet = GetIntrinsic('%WeakSet%', true);\n\n/** @type {undefined | (<V>(thisArg: Set<V>, value: V) => boolean)} */\nvar $setHas = callBound('WeakSet.prototype.has', true);\n\nif ($setHas) {\n\t/** @type {undefined | (<K extends object, V>(thisArg: WeakMap<K, V>, key: K) => boolean)} */\n\tvar $mapHas = callBound('WeakMap.prototype.has', true);\n\n\t/** @type {import('.')} */\n\tmodule.exports = function isWeakSet(x) {\n\t\tif (!x || typeof x !== 'object') {\n\t\t\treturn false;\n\t\t}\n\t\ttry {\n\t\t\t// @ts-expect-error TS can't figure out that $setHas is always truthy here\n\t\t\t$setHas(x, $setHas);\n\t\t\tif ($mapHas) {\n\t\t\t\ttry {\n\t\t\t\t\t// @ts-expect-error this indeed might not be a weak collection\n\t\t\t\t\t$mapHas(x, $mapHas);\n\t\t\t\t} catch (e) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// @ts-expect-error TS can't figure out that $WeakSet is always truthy here\n\t\t\treturn x instanceof $WeakSet; // core-js workaround, pre-v3\n\t\t} catch (e) {}\n\t\treturn false;\n\t};\n} else {\n\t/** @type {import('.')} */\n\t// @ts-expect-error\n\tmodule.exports = function isWeakSet(x) { // eslint-disable-line no-unused-vars\n\t\t// `WeakSet` does not exist, or does not have a `has` method\n\t\treturn false;\n\t};\n}\n", "'use strict';\n\nvar isMap = require('is-map');\nvar isSet = require('is-set');\nvar isWeakMap = require('is-weakmap');\nvar isWeakSet = require('is-weakset');\n\n/** @type {import('.')} */\nmodule.exports = function whichCollection(/** @type {unknown} */ value) {\n\tif (value && typeof value === 'object') {\n\t\tif (isMap(value)) {\n\t\t\treturn 'Map';\n\t\t}\n\t\tif (isSet(value)) {\n\t\t\treturn 'Set';\n\t\t}\n\t\tif (isWeakMap(value)) {\n\t\t\treturn 'WeakMap';\n\t\t}\n\t\tif (isWeakSet(value)) {\n\t\t\treturn 'WeakSet';\n\t\t}\n\t}\n\treturn false;\n};\n", "'use strict';\n\nvar callBound = require('call-bound');\nvar $byteLength = callBound('ArrayBuffer.prototype.byteLength', true);\n\nvar isArrayBuffer = require('is-array-buffer');\n\n/** @type {import('.')} */\nmodule.exports = function byteLength(ab) {\n\tif (!isArrayBuffer(ab)) {\n\t\treturn NaN;\n\t}\n\treturn $byteLength ? $byteLength(ab) : ab.byteLength;\n}; // in node < 0.11, byteLength is an own nonconfigurable property\n", "'use strict';\n\nvar assign = require('object.assign');\nvar callBound = require('call-bind/callBound');\nvar flags = require('regexp.prototype.flags');\nvar GetIntrinsic = require('get-intrinsic');\nvar getIterator = require('es-get-iterator');\nvar getSideChannel = require('side-channel');\nvar is = require('object-is');\nvar isArguments = require('is-arguments');\nvar isArray = require('isarray');\nvar isArrayBuffer = require('is-array-buffer');\nvar isDate = require('is-date-object');\nvar isRegex = require('is-regex');\nvar isSharedArrayBuffer = require('is-shared-array-buffer');\nvar objectKeys = require('object-keys');\nvar whichBoxedPrimitive = require('which-boxed-primitive');\nvar whichCollection = require('which-collection');\nvar whichTypedArray = require('which-typed-array');\nvar byteLength = require('array-buffer-byte-length');\n\nvar sabByteLength = callBound('SharedArrayBuffer.prototype.byteLength', true);\n\nvar $getTime = callBound('Date.prototype.getTime');\nvar gPO = Object.getPrototypeOf;\nvar $objToString = callBound('Object.prototype.toString');\n\nvar $Set = GetIntrinsic('%Set%', true);\nvar $mapHas = callBound('Map.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSize = callBound('Map.prototype.size', true);\nvar $setAdd = callBound('Set.prototype.add', true);\nvar $setDelete = callBound('Set.prototype.delete', true);\nvar $setHas = callBound('Set.prototype.has', true);\nvar $setSize = callBound('Set.prototype.size', true);\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L401-L414\nfunction setHasEqualElement(set, val1, opts, channel) {\n  var i = getIterator(set);\n  var result;\n  while ((result = i.next()) && !result.done) {\n    if (internalDeepEqual(val1, result.value, opts, channel)) { // eslint-disable-line no-use-before-define\n      // Remove the matching element to make sure we do not check that again.\n      $setDelete(set, result.value);\n      return true;\n    }\n  }\n\n  return false;\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L416-L439\nfunction findLooseMatchingPrimitives(prim) {\n  if (typeof prim === 'undefined') {\n    return null;\n  }\n  if (typeof prim === 'object') { // Only pass in null as object!\n    return void 0;\n  }\n  if (typeof prim === 'symbol') {\n    return false;\n  }\n  if (typeof prim === 'string' || typeof prim === 'number') {\n    // Loose equal entries exist only if the string is possible to convert to a regular number and not NaN.\n    return +prim === +prim; // eslint-disable-line no-implicit-coercion\n  }\n  return true;\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L449-L460\nfunction mapMightHaveLoosePrim(a, b, prim, item, opts, channel) {\n  var altValue = findLooseMatchingPrimitives(prim);\n  if (altValue != null) {\n    return altValue;\n  }\n  var curB = $mapGet(b, altValue);\n  var looseOpts = assign({}, opts, { strict: false });\n  if (\n    (typeof curB === 'undefined' && !$mapHas(b, altValue))\n    // eslint-disable-next-line no-use-before-define\n    || !internalDeepEqual(item, curB, looseOpts, channel)\n  ) {\n    return false;\n  }\n  // eslint-disable-next-line no-use-before-define\n  return !$mapHas(a, altValue) && internalDeepEqual(item, curB, looseOpts, channel);\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L441-L447\nfunction setMightHaveLoosePrim(a, b, prim) {\n  var altValue = findLooseMatchingPrimitives(prim);\n  if (altValue != null) {\n    return altValue;\n  }\n\n  return $setHas(b, altValue) && !$setHas(a, altValue);\n}\n\n// taken from https://github.com/browserify/commonjs-assert/blob/bba838e9ba9e28edf3127ce6974624208502f6bc/internal/util/comparisons.js#L518-L533\nfunction mapHasEqualEntry(set, map, key1, item1, opts, channel) {\n  var i = getIterator(set);\n  var result;\n  var key2;\n  while ((result = i.next()) && !result.done) {\n    key2 = result.value;\n    if (\n      // eslint-disable-next-line no-use-before-define\n      internalDeepEqual(key1, key2, opts, channel)\n      // eslint-disable-next-line no-use-before-define\n      && internalDeepEqual(item1, $mapGet(map, key2), opts, channel)\n    ) {\n      $setDelete(set, key2);\n      return true;\n    }\n  }\n\n  return false;\n}\n\nfunction internalDeepEqual(actual, expected, options, channel) {\n  var opts = options || {};\n\n  // 7.1. All identical values are equivalent, as determined by ===.\n  if (opts.strict ? is(actual, expected) : actual === expected) {\n    return true;\n  }\n\n  var actualBoxed = whichBoxedPrimitive(actual);\n  var expectedBoxed = whichBoxedPrimitive(expected);\n  if (actualBoxed !== expectedBoxed) {\n    return false;\n  }\n\n  // 7.3. Other pairs that do not both pass typeof value == 'object', equivalence is determined by ==.\n  if (!actual || !expected || (typeof actual !== 'object' && typeof expected !== 'object')) {\n    return opts.strict ? is(actual, expected) : actual == expected; // eslint-disable-line eqeqeq\n  }\n\n  /*\n   * 7.4. For all other Object pairs, including Array objects, equivalence is\n   * determined by having the same number of owned properties (as verified\n   * with Object.prototype.hasOwnProperty.call), the same set of keys\n   * (although not necessarily the same order), equivalent values for every\n   * corresponding key, and an identical 'prototype' property. Note: this\n   * accounts for both named and indexed properties on Arrays.\n   */\n  // see https://github.com/nodejs/node/commit/d3aafd02efd3a403d646a3044adcf14e63a88d32 for memos/channel inspiration\n\n  var hasActual = channel.has(actual);\n  var hasExpected = channel.has(expected);\n  var sentinel;\n  if (hasActual && hasExpected) {\n    if (channel.get(actual) === channel.get(expected)) {\n      return true;\n    }\n  } else {\n    sentinel = {};\n  }\n  if (!hasActual) { channel.set(actual, sentinel); }\n  if (!hasExpected) { channel.set(expected, sentinel); }\n\n  // eslint-disable-next-line no-use-before-define\n  return objEquiv(actual, expected, opts, channel);\n}\n\nfunction isBuffer(x) {\n  if (!x || typeof x !== 'object' || typeof x.length !== 'number') {\n    return false;\n  }\n  if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n    return false;\n  }\n  if (x.length > 0 && typeof x[0] !== 'number') {\n    return false;\n  }\n\n  return !!(x.constructor && x.constructor.isBuffer && x.constructor.isBuffer(x));\n}\n\nfunction setEquiv(a, b, opts, channel) {\n  if ($setSize(a) !== $setSize(b)) {\n    return false;\n  }\n  var iA = getIterator(a);\n  var iB = getIterator(b);\n  var resultA;\n  var resultB;\n  var set;\n  while ((resultA = iA.next()) && !resultA.done) {\n    if (resultA.value && typeof resultA.value === 'object') {\n      if (!set) { set = new $Set(); }\n      $setAdd(set, resultA.value);\n    } else if (!$setHas(b, resultA.value)) {\n      if (opts.strict) { return false; }\n      if (!setMightHaveLoosePrim(a, b, resultA.value)) {\n        return false;\n      }\n      if (!set) { set = new $Set(); }\n      $setAdd(set, resultA.value);\n    }\n  }\n  if (set) {\n    while ((resultB = iB.next()) && !resultB.done) {\n      // We have to check if a primitive value is already matching and only if it's not, go hunting for it.\n      if (resultB.value && typeof resultB.value === 'object') {\n        if (!setHasEqualElement(set, resultB.value, opts.strict, channel)) {\n          return false;\n        }\n      } else if (\n        !opts.strict\n        && !$setHas(a, resultB.value)\n        && !setHasEqualElement(set, resultB.value, opts.strict, channel)\n      ) {\n        return false;\n      }\n    }\n    return $setSize(set) === 0;\n  }\n  return true;\n}\n\nfunction mapEquiv(a, b, opts, channel) {\n  if ($mapSize(a) !== $mapSize(b)) {\n    return false;\n  }\n  var iA = getIterator(a);\n  var iB = getIterator(b);\n  var resultA;\n  var resultB;\n  var set;\n  var key;\n  var item1;\n  var item2;\n  while ((resultA = iA.next()) && !resultA.done) {\n    key = resultA.value[0];\n    item1 = resultA.value[1];\n    if (key && typeof key === 'object') {\n      if (!set) { set = new $Set(); }\n      $setAdd(set, key);\n    } else {\n      item2 = $mapGet(b, key);\n      if ((typeof item2 === 'undefined' && !$mapHas(b, key)) || !internalDeepEqual(item1, item2, opts, channel)) {\n        if (opts.strict) {\n          return false;\n        }\n        if (!mapMightHaveLoosePrim(a, b, key, item1, opts, channel)) {\n          return false;\n        }\n        if (!set) { set = new $Set(); }\n        $setAdd(set, key);\n      }\n    }\n  }\n\n  if (set) {\n    while ((resultB = iB.next()) && !resultB.done) {\n      key = resultB.value[0];\n      item2 = resultB.value[1];\n      if (key && typeof key === 'object') {\n        if (!mapHasEqualEntry(set, a, key, item2, opts, channel)) {\n          return false;\n        }\n      } else if (\n        !opts.strict\n        && (!a.has(key) || !internalDeepEqual($mapGet(a, key), item2, opts, channel))\n        && !mapHasEqualEntry(set, a, key, item2, assign({}, opts, { strict: false }), channel)\n      ) {\n        return false;\n      }\n    }\n    return $setSize(set) === 0;\n  }\n  return true;\n}\n\nfunction objEquiv(a, b, opts, channel) {\n  /* eslint max-statements: [2, 100], max-lines-per-function: [2, 120], max-depth: [2, 5], max-lines: [2, 400] */\n  var i, key;\n\n  if (typeof a !== typeof b) { return false; }\n  if (a == null || b == null) { return false; }\n\n  if ($objToString(a) !== $objToString(b)) { return false; }\n\n  if (isArguments(a) !== isArguments(b)) { return false; }\n\n  var aIsArray = isArray(a);\n  var bIsArray = isArray(b);\n  if (aIsArray !== bIsArray) { return false; }\n\n  // TODO: replace when a cross-realm brand check is available\n  var aIsError = a instanceof Error;\n  var bIsError = b instanceof Error;\n  if (aIsError !== bIsError) { return false; }\n  if (aIsError || bIsError) {\n    if (a.name !== b.name || a.message !== b.message) { return false; }\n  }\n\n  var aIsRegex = isRegex(a);\n  var bIsRegex = isRegex(b);\n  if (aIsRegex !== bIsRegex) { return false; }\n  if ((aIsRegex || bIsRegex) && (a.source !== b.source || flags(a) !== flags(b))) {\n    return false;\n  }\n\n  var aIsDate = isDate(a);\n  var bIsDate = isDate(b);\n  if (aIsDate !== bIsDate) { return false; }\n  if (aIsDate || bIsDate) { // && would work too, because both are true or both false here\n    if ($getTime(a) !== $getTime(b)) { return false; }\n  }\n  if (opts.strict && gPO && gPO(a) !== gPO(b)) { return false; }\n\n  var aWhich = whichTypedArray(a);\n  var bWhich = whichTypedArray(b);\n  if (aWhich !== bWhich) {\n    return false;\n  }\n  if (aWhich || bWhich) { // && would work too, because both are true or both false here\n    if (a.length !== b.length) { return false; }\n    for (i = 0; i < a.length; i++) {\n      if (a[i] !== b[i]) { return false; }\n    }\n    return true;\n  }\n\n  var aIsBuffer = isBuffer(a);\n  var bIsBuffer = isBuffer(b);\n  if (aIsBuffer !== bIsBuffer) { return false; }\n  if (aIsBuffer || bIsBuffer) { // && would work too, because both are true or both false here\n    if (a.length !== b.length) { return false; }\n    for (i = 0; i < a.length; i++) {\n      if (a[i] !== b[i]) { return false; }\n    }\n    return true;\n  }\n\n  var aIsArrayBuffer = isArrayBuffer(a);\n  var bIsArrayBuffer = isArrayBuffer(b);\n  if (aIsArrayBuffer !== bIsArrayBuffer) { return false; }\n  if (aIsArrayBuffer || bIsArrayBuffer) { // && would work too, because both are true or both false here\n    if (byteLength(a) !== byteLength(b)) { return false; }\n    return typeof Uint8Array === 'function' && internalDeepEqual(new Uint8Array(a), new Uint8Array(b), opts, channel);\n  }\n\n  var aIsSAB = isSharedArrayBuffer(a);\n  var bIsSAB = isSharedArrayBuffer(b);\n  if (aIsSAB !== bIsSAB) { return false; }\n  if (aIsSAB || bIsSAB) { // && would work too, because both are true or both false here\n    if (sabByteLength(a) !== sabByteLength(b)) { return false; }\n    return typeof Uint8Array === 'function' && internalDeepEqual(new Uint8Array(a), new Uint8Array(b), opts, channel);\n  }\n\n  if (typeof a !== typeof b) { return false; }\n\n  var ka = objectKeys(a);\n  var kb = objectKeys(b);\n  // having the same number of owned properties (keys incorporates hasOwnProperty)\n  if (ka.length !== kb.length) { return false; }\n\n  // the same set of keys (although not necessarily the same order),\n  ka.sort();\n  kb.sort();\n  // ~~~cheap key test\n  for (i = ka.length - 1; i >= 0; i--) {\n    if (ka[i] != kb[i]) { return false; } // eslint-disable-line eqeqeq\n  }\n\n  // equivalent values for every corresponding key, and ~~~possibly expensive deep test\n  for (i = ka.length - 1; i >= 0; i--) {\n    key = ka[i];\n    if (!internalDeepEqual(a[key], b[key], opts, channel)) { return false; }\n  }\n\n  var aCollection = whichCollection(a);\n  var bCollection = whichCollection(b);\n  if (aCollection !== bCollection) {\n    return false;\n  }\n  if (aCollection === 'Set' || bCollection === 'Set') { // aCollection === bCollection\n    return setEquiv(a, b, opts, channel);\n  }\n  if (aCollection === 'Map') { // aCollection === bCollection\n    return mapEquiv(a, b, opts, channel);\n  }\n\n  return true;\n}\n\nmodule.exports = function deepEqual(a, b, opts) {\n  return internalDeepEqual(a, b, opts, getSideChannel());\n};\n", "import { \n  assert,\n  isVariable,\n  OperationElement,\n  Variable,\n} from \"@apollo/federation-internals\";\nimport deepEqual from \"deep-equal\";\n\nexport function isPathContext(v: any): v is PathContext {\n  return v instanceof PathContext;\n}\n\nexport type OperationConditional = {\n  kind: 'include' | 'skip',\n  value: boolean | Variable,\n}\n\nexport function extractOperationConditionals(operation: OperationElement): OperationConditional[] {\n  const conditionals: OperationConditional[] = [];\n  addExtractedConditional(operation, 'skip', conditionals);\n  addExtractedConditional(operation, 'include', conditionals);\n  return conditionals;\n}\n\nfunction addExtractedConditional(operation: OperationElement, kind: 'include' | 'skip', addTo: OperationConditional[]) {\n  const applied = operation.appliedDirectivesOf(kind);\n  if (applied.length > 0) {\n    assert(applied.length === 1, () => `${kind} shouldn't be repeated on ${operation}`)\n    const value = applied[0].arguments()['if'];\n    assert(typeof value === 'boolean' || isVariable(value), () => `Invalid value ${value} found as condition of @${kind}`);\n    addTo.push({ kind, value });\n  }\n}\n\n/**\n * Records, as we walk a graphQL operation path, important directives encountered (@include and @skip with their conditions).\n */\nexport class PathContext {\n  constructor(\n    // A list of conditionals (say: [{ kind 'include', value: 'true'}], [{ kind: 'skip', value: '$foo' }]]) in the reverse order in which they were applied (so \n    // the first element is the inner-most applied skip/include).\n    readonly conditionals: OperationConditional[],\n  ) {\n  }\n\n  isEmpty() {\n    return this.conditionals.length === 0;\n  }\n\n  withContextOf(operation: OperationElement): PathContext {\n    if (operation.appliedDirectives.length === 0) {\n      return this;\n    }\n\n    const newConditionals = extractOperationConditionals(operation);\n    return newConditionals.length === 0\n      ? this\n      : new PathContext(newConditionals.concat(this.conditionals));\n  }\n\n  equals(that: PathContext): boolean {\n    return deepEqual(this.conditionals, that.conditionals);\n  }\n\n  toString(): string {\n    return '['\n      + this.conditionals.map(({kind, value}) => `@${kind}(if: ${value})`).join(', ')\n      + ']';\n  }\n}\n\nexport const emptyContext = new PathContext([]);\n\n", "import { arrayEquals, assert, composeSets, copyWitNewLength, mergeMapOrNull, SelectionSet, setsEqual } from \"@apollo/federation-internals\";\nimport { OpGraphPath, OpTrigger, PathIterator, ContextAtUsageEntry } from \"./graphPath\";\nimport { Edge, QueryGraph, RootVertex, isRootVertex, Vertex } from \"./querygraph\";\nimport { isPathContext } from \"./pathContext\";\n\nfunction opTriggerEquality(t1: OpTrigger, t2: OpTrigger): boolean {\n  if (t1 === t2) {\n    return true;\n  }\n  if (isPathContext(t1)) {\n    return isPathContext(t2) && t1.equals(t2);\n  }\n  if (isPathContext(t2)) {\n    return false;\n  }\n  return t1.equals(t2);\n}\n\ntype Child<TTrigger, RV extends Vertex, TNullEdge extends null | never> = {\n  index: number | TNullEdge,\n  trigger: TTrigger,\n  conditions: OpPathTree | null,\n  tree: PathTree<TTrigger, RV, TNullEdge>,\n  contextToSelection: Set<string> | null,\n  parameterToContext: Map<string, ContextAtUsageEntry> | null,\n}\n\nfunction findTriggerIdx<TTrigger, TElements>(\n  triggerEquality: (t1: TTrigger, t2: TTrigger) => boolean,\n  forIndex: [TTrigger, OpPathTree | null, TElements, Set<string> | null, Map<string, ContextAtUsageEntry> | null][],\n  trigger: TTrigger\n): number {\n  for (let i = 0; i < forIndex.length; i++) {\n    if (triggerEquality(forIndex[i][0], trigger)) {\n      return i;\n    }\n  }\n  return -1;\n}\n\ntype IterAndSelection<TTrigger, TNullEdge extends null | never> = { \n  path: PathIterator<TTrigger, TNullEdge>,\n  selection?: SelectionSet,\n}\n\nexport class PathTree<TTrigger, RV extends Vertex = Vertex, TNullEdge extends null | never = never> {\n  private constructor(\n    readonly graph: QueryGraph,\n    readonly vertex: RV,\n    readonly localSelections: readonly SelectionSet[] | undefined,\n    private readonly triggerEquality: (t1: TTrigger, t2: TTrigger) => boolean,\n    private readonly childs: Child<TTrigger, Vertex, TNullEdge>[],\n  ) {\n  }\n\n  static create<TTrigger, RV extends Vertex = Vertex, TNullEdge extends null | never = never>(\n    graph: QueryGraph,\n    root: RV,\n    triggerEquality: (t1: TTrigger, t2: TTrigger) => boolean\n  ): PathTree<TTrigger, RV, TNullEdge> {\n    return new PathTree(graph, root, undefined, triggerEquality, []);\n  }\n\n  static createOp<RV extends Vertex = Vertex>(graph: QueryGraph, root: RV): OpPathTree<RV> {\n    return this.create(graph, root, opTriggerEquality);\n  }\n\n  static createFromOpPaths<RV extends Vertex = Vertex>(\n    graph: QueryGraph,\n    root: RV,\n    paths: { path: OpGraphPath<RV>, selection?: SelectionSet }[]\n  ): OpPathTree<RV> {\n    assert(paths.length > 0, `Should compute on empty paths`);\n\n    return this.createFromPaths(\n      graph,\n      opTriggerEquality,\n      root,\n      paths.map(({path, selection}) => ({ path: path[Symbol.iterator](), selection }))\n    );\n  }\n\n  private static createFromPaths<TTrigger, RV extends Vertex = Vertex, TNullEdge extends null | never = never>(\n    graph: QueryGraph,\n    triggerEquality: (t1: TTrigger, t2: TTrigger) => boolean,\n    currentVertex: RV,\n    pathAndSelections: IterAndSelection<TTrigger, TNullEdge>[]\n  ): PathTree<TTrigger, RV, TNullEdge> {\n    const maxEdges = graph.outEdgesCount(currentVertex);\n    // We store 'null' edges at `maxEdges` index\n    const forEdgeIndex: [TTrigger, OpPathTree | null, IterAndSelection<TTrigger, TNullEdge>[], Set<string> | null, Map<string, ContextAtUsageEntry> | null][][] = new Array(maxEdges + 1);\n    const newVertices: Vertex[] = new Array(maxEdges);\n    const order: number[] = new Array(maxEdges + 1);\n    let currentOrder = 0;\n    let totalChilds = 0;\n    let localSelections: SelectionSet[] | undefined = undefined;\n    for (const ps of pathAndSelections) {\n      const iterResult = ps.path.next();\n      if (iterResult.done) {\n        if (ps.selection) {\n          localSelections = localSelections ? localSelections.concat(ps.selection) : [ps.selection];\n        }\n        continue;\n      }\n      const [edge, trigger, conditions, contextToSelection, parameterToContext] = iterResult.value;\n      const idx = edge ? edge.index : maxEdges;\n      if (edge) {\n        newVertices[idx] = edge.tail;\n      }\n      const forIndex = forEdgeIndex[idx];\n      if (forIndex) {\n        const triggerIdx = findTriggerIdx(triggerEquality, forIndex, trigger);\n        if (triggerIdx < 0) {\n          forIndex.push([trigger, conditions, [ps], contextToSelection, parameterToContext]);\n          totalChilds++;\n        } else {\n          const existing = forIndex[triggerIdx];\n          const existingCond = existing[1];\n          const mergedConditions = existingCond ? (conditions ? existingCond.mergeIfNotEqual(conditions) : existingCond) : conditions;\n          const newPaths = existing[2];\n          const mergedContextToSelection = composeSets(existing[3], contextToSelection);\n          const mergedParameterToContext = mergeMapOrNull(existing[4], parameterToContext);\n          newPaths.push(ps);\n          forIndex[triggerIdx] = [trigger, mergedConditions, newPaths, mergedContextToSelection, mergedParameterToContext];\n          // Note that as we merge, we don't create a new child\n        }\n      } else {\n        // First time we see someone from that index; record the order\n        order[currentOrder++] = idx;\n        forEdgeIndex[idx] = [[trigger, conditions, [ps], contextToSelection, parameterToContext]];\n        totalChilds++;\n      }\n    }\n\n    const childs: Child<TTrigger, Vertex, TNullEdge>[] = new Array(totalChilds);\n    let idx = 0;\n    for (let i = 0; i < currentOrder; i++) {\n      const edgeIndex = order[i];\n      const index = (edgeIndex === maxEdges ? null : edgeIndex) as number | TNullEdge;\n      const newVertex = index === null ? currentVertex : newVertices[edgeIndex];\n      const values = forEdgeIndex[edgeIndex];\n      for (const [trigger, conditions, subPathAndSelections, contextToSelection, parameterToContext] of values) {\n        childs[idx++] = {\n          index,\n          trigger,\n          conditions,\n          tree: this.createFromPaths(graph, triggerEquality, newVertex, subPathAndSelections),\n          contextToSelection,\n          parameterToContext,\n        };\n      }\n    }\n    assert(idx === totalChilds, () => `Expected to have ${totalChilds} childs but only ${idx} added`);\n    return new PathTree<TTrigger, RV, TNullEdge>(graph, currentVertex, localSelections, triggerEquality, childs);\n  }\n\n  childCount(): number {\n    return this.childs.length;\n  }\n\n  isLeaf(): boolean {\n    return this.childCount() === 0;\n  }\n\n  *childElements(reverseOrder: boolean = false): Generator<[Edge | TNullEdge, TTrigger, OpPathTree | null, PathTree<TTrigger, Vertex, TNullEdge>, Set<string> | null, Map<string, ContextAtUsageEntry> | null], void, undefined> {\n    if (reverseOrder) {\n      for (let i = this.childs.length - 1; i >= 0; i--) {\n        yield this.element(i);\n      }\n    } else {\n      for (let i = 0; i < this.childs.length; i++) {\n        yield this.element(i);\n      }\n    }\n  }\n\n  private element(i: number): [Edge | TNullEdge, TTrigger, OpPathTree | null, PathTree<TTrigger, Vertex, TNullEdge>, Set<string> | null, Map<string, ContextAtUsageEntry> | null] {\n    const child = this.childs[i];\n    return [\n      (child.index === null ? null : this.graph.outEdge(this.vertex, child.index)) as Edge | TNullEdge,\n      child.trigger,\n      child.conditions,\n      child.tree,\n      child.contextToSelection,\n      child.parameterToContext,\n    ];\n  }\n\n  private mergeChilds(c1: Child<TTrigger, Vertex, TNullEdge>, c2: Child<TTrigger, Vertex, TNullEdge>): Child<TTrigger, Vertex, TNullEdge> {\n    const cond1 = c1.conditions;\n    const cond2 = c2.conditions;\n    return {\n      index: c1.index,\n      trigger: c1.trigger,\n      conditions: cond1 ? (cond2 ? cond1.mergeIfNotEqual(cond2) : cond1) : cond2,\n      tree: c1.tree.merge(c2.tree),\n      contextToSelection: composeSets(c1.contextToSelection, c2.contextToSelection),\n      parameterToContext: mergeMapOrNull(c1.parameterToContext, c2.parameterToContext),\n    };\n  }\n\n  mergeIfNotEqual(other: PathTree<TTrigger, RV, TNullEdge>): PathTree<TTrigger, RV, TNullEdge> {\n    if (this.equalsSameRoot(other)) {\n      return this;\n    }\n    return this.merge(other);\n  }\n\n  private mergeLocalSelectionsWith(other: PathTree<TTrigger, RV, TNullEdge>): readonly SelectionSet[] | undefined {\n    return this.localSelections\n      ? (other.localSelections ? this.localSelections.concat(other.localSelections) : this.localSelections)\n      : other.localSelections;\n  }\n\n  merge(other: PathTree<TTrigger, RV, TNullEdge>): PathTree<TTrigger, RV, TNullEdge> {\n    // If we somehow end up trying to merge a tree with itself, let's not waste work on it.\n    if (this === other) {\n      return this;\n    }\n\n    assert(other.graph === this.graph, 'Cannot merge path tree build on another graph');\n    assert(other.vertex.index === this.vertex.index, () => `Cannot merge path tree rooted at vertex ${other.vertex} into tree rooted at other vertex ${this.vertex}`);\n    if (!other.childs.length) {\n      return this;\n    }\n    if (!this.childs.length) {\n      return other;\n    }\n\n    const localSelections = this.mergeLocalSelectionsWith(other);\n\n    const mergeIndexes: number[] = new Array(other.childs.length);\n    let countToAdd = 0;\n    for (let i = 0; i < other.childs.length; i++) {\n      const otherChild = other.childs[i];\n      const idx = this.findIndex(otherChild.trigger, otherChild.index);\n      mergeIndexes[i] = idx;\n      if (idx < 0) {\n        ++countToAdd;\n      }\n    }\n\n    const thisSize = this.childs.length;\n    const newSize = thisSize + countToAdd;\n    const newChilds = copyWitNewLength(this.childs, newSize);\n    let addIdx = thisSize;\n\n    for (let i = 0; i < other.childs.length; i++) {\n      const idx = mergeIndexes[i];\n      if (idx < 0) {\n        newChilds[addIdx++] = other.childs[i];\n      } else {\n        newChilds[idx] = this.mergeChilds(newChilds[idx], other.childs[i]);\n      }\n    }\n    assert(addIdx === newSize, () => `Expected ${newSize} childs but only got ${addIdx}`);\n\n    return new PathTree(this.graph, this.vertex, localSelections, this.triggerEquality, newChilds);\n  }\n\n  private equalsSameRoot(that: PathTree<TTrigger, RV, TNullEdge>): boolean {\n    if (this === that) {\n      return true;\n    }\n\n    // Note that we use '===' for trigger instead of `triggerEquality`: this method is all about avoid unnecessary merging\n    // when we suspect conditions trees have been build from the exact same inputs and `===` is faster and good enough for this.\n    return arrayEquals(this.childs, that.childs, (c1, c2) => {\n      return c1.index === c2.index\n        && c1.trigger === c2.trigger\n        && (c1.conditions ? (c2.conditions ? c1.conditions.equalsSameRoot(c2.conditions) : false) : !c2.conditions)\n        && c1.tree.equalsSameRoot(c2.tree)\n        && setsEqual(c1.contextToSelection, c2.contextToSelection)\n        && PathTree.parameterToContextEquals(c1.parameterToContext, c2.parameterToContext)\n    });    \n  }\n\n  private static parameterToContextEquals(ptc1: Map<string, ContextAtUsageEntry> | null, ptc2: Map<string, ContextAtUsageEntry> | null): boolean {\n    if (ptc1 === ptc2) {\n      return true;\n    }\n    const thisKeys = Array.from(ptc1?.keys() ?? []);\n    const thatKeys = Array.from(ptc2?.keys() ?? []);\n    \n    if (thisKeys.length !== thatKeys.length) {\n      return false; \n    }\n    \n    for (const key of thisKeys) {\n      const thisSelection = ptc1!.get(key);\n      const thatSelection = ptc2!.get(key);\n      assert(thisSelection, () => `Expected to have a selection for key ${key}`);\n      \n      if (!thatSelection \n        || (thisSelection.contextId !== thatSelection.contextId) \n        || !arrayEquals(thisSelection.relativePath, thatSelection.relativePath)\n        || !thisSelection.selectionSet.equals(thatSelection.selectionSet)\n        || (thisSelection.subgraphArgType !== thatSelection.subgraphArgType)) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  // Like merge(), this create a new tree that contains the content of both `this` and `other` to this pathTree, but contrarily\n  // to merge() this never merge childs together, even if they are equal. This is only for the special case of mutations.\n  concat(other: PathTree<TTrigger, RV, TNullEdge>): PathTree<TTrigger, RV, TNullEdge> {\n    assert(other.graph === this.graph, 'Cannot concat path tree build on another graph');\n    assert(other.vertex.index === this.vertex.index, () => `Cannot concat path tree rooted at vertex ${other.vertex} into tree rooted at other vertex ${this.vertex}`);\n    if (!other.childs.length) {\n      return this;\n    }\n    if (!this.childs.length) {\n      return other;\n    }\n\n    const localSelections = this.mergeLocalSelectionsWith(other);\n    const newChilds = this.childs.concat(other.childs);\n    return new PathTree(this.graph, this.vertex, localSelections, this.triggerEquality, newChilds);\n  }\n\n  private findIndex(trigger: TTrigger, edgeIndex: number | TNullEdge): number {\n    for (let i = 0; i < this.childs.length; i++) {\n      const child = this.childs[i];\n      if (child.index === edgeIndex && this.triggerEquality(child.trigger, trigger)) {\n        return i;\n      }\n    }\n    return -1;\n  }\n\n  isAllInSameSubgraph(): boolean {\n    return this.isAllInSameSubgraphInternal(this.vertex.source);\n  }\n\n  private isAllInSameSubgraphInternal(target: string): boolean {\n    return this.vertex.source === target\n      && this.childs.every(c => c.tree.isAllInSameSubgraphInternal(target));\n  }\n\n  toString(indent: string = \"\", includeConditions: boolean = false): string {\n    return this.toStringInternal(indent, includeConditions);\n  }\n\n\n  private toStringInternal(indent: string, includeConditions: boolean): string {\n    if (this.isLeaf()) {\n      return this.vertex.toString();\n    }\n    return this.vertex + ':\\n' +\n      this.childs.map(child =>\n        indent\n        + ` -> [${child.index}] `\n        + (includeConditions && child.conditions ? `!! {\\n${indent + \"  \"}${child.conditions!.toString(indent + \"     \", true)}\\n${indent} } ` : \"\")\n        + `${child.trigger} = `\n        + child.tree.toStringInternal(indent + \"  \", includeConditions)\n      ).join('\\n');\n  }\n}\n\nexport type RootPathTree<TTrigger, TNullEdge extends null | never = never> = PathTree<TTrigger, RootVertex, TNullEdge>;\n\nexport type OpPathTree<RV extends Vertex = Vertex> = PathTree<OpTrigger, RV, null>;\nexport type OpRootPathTree = OpPathTree<RootVertex>;\n\nexport function isRootPathTree(tree: OpPathTree<any>): tree is OpRootPathTree {\n  return isRootVertex(tree.vertex);\n}\n\nexport function traversePathTree<TTrigger, RV extends Vertex = Vertex, TNullEdge extends null | never = never>(\n  pathTree: PathTree<TTrigger, RV, TNullEdge>,\n  onEdges: (edge: Edge) => void\n) {\n  for (const [edge, _, conditions, childTree] of pathTree.childElements()) {\n    if (edge) {\n      onEdges(edge);\n    }\n    if (conditions) {\n      traversePathTree(conditions, onEdges);\n    }\n    traversePathTree(childTree, onEdges);\n  }\n}\n", "import {\n  assert,\n  Field,\n  FragmentElement,\n  InterfaceType,\n  NamedType,\n  OperationElement,\n  Schema,\n  SchemaRootKind,\n  SelectionSet,\n  typenameFieldName,\n  isLeafType,\n  baseType,\n  CompositeType,\n  isAbstractType,\n  newDebugLogger,\n  isCompositeType,\n  parseFieldSetArgument,\n  possibleRuntimeTypes,\n  ObjectType,\n  isObjectType,\n  mapValues,\n  federationMetadata,\n  isSchemaRootType,\n  Directive,\n  FieldDefinition,\n  printSubgraphNames,\n  allFieldDefinitionsInSelectionSet,\n  DeferDirectiveArgs,\n  isInterfaceType,\n  isSubset,\n  parseSelectionSet,\n  Variable,\n  Type,\n  isScalarType,\n  isEnumType,\n  isUnionType,\n  Selection,\n} from \"@apollo/federation-internals\";\nimport { OpPathTree, traversePathTree } from \"./pathTree\";\nimport { Vertex, QueryGraph, Edge, RootVertex, isRootVertex, isFederatedGraphRootType, FEDERATED_GRAPH_ROOT_SOURCE } from \"./querygraph\";\nimport { DownCast, Transition } from \"./transition\";\nimport { PathContext, emptyContext, isPathContext } from \"./pathContext\";\nimport { v4 as uuidv4 } from 'uuid';\n\nconst debug = newDebugLogger('path');\n\nexport type ContextAtUsageEntry = { \n  contextId: string, \n  relativePath: string[],\n  selectionSet: SelectionSet,\n  subgraphArgType: Type,\n};\n\nfunction updateRuntimeTypes(currentRuntimeTypes: readonly ObjectType[], edge: Edge | null): readonly ObjectType[] {\n  if (!edge) {\n    return currentRuntimeTypes;\n  }\n\n  switch (edge.transition.kind) {\n    case 'FieldCollection':\n      const field = edge.transition.definition;\n      if (!isCompositeType(baseType(field.type!))) {\n        return [];\n      }\n      const newRuntimeTypes: ObjectType[] = [];\n      for (const parentType of currentRuntimeTypes) {\n        const fieldType = parentType.field(field.name)?.type;\n        if (fieldType) {\n          for (const type of possibleRuntimeTypes(baseType(fieldType) as CompositeType)) {\n            if (!newRuntimeTypes.includes(type)) {\n              newRuntimeTypes.push(type);\n            }\n          }\n        }\n      }\n      return newRuntimeTypes;\n    case 'DownCast':\n      const castedType = edge.transition.castedType;\n      const castedRuntimeTypes = possibleRuntimeTypes(castedType);\n      return currentRuntimeTypes.filter(t => castedRuntimeTypes.includes(t));\n    case 'InterfaceObjectFakeDownCast':\n      return currentRuntimeTypes;\n    case 'KeyResolution':\n      const currentType = edge.tail.type as CompositeType;\n      // We've taken a key into a new subgraph, so any of the possible runtime types of the new subgraph could be returned.\n      return possibleRuntimeTypes(currentType);\n    case 'RootTypeResolution':\n    case 'SubgraphEnteringTransition':\n      assert(isObjectType(edge.tail.type), () => `Query edge should be between object type but got ${edge}`);\n      return [ edge.tail.type ];\n  }\n}\n\nfunction withReplacedLastElement<T>(arr: readonly T[], newLast: T): T[] {\n  assert(arr.length > 0, 'Should not have been called on empty array');\n  const newArr = new Array<T>(arr.length);\n  for (let i = 0; i < arr.length - 1; i++) {\n    newArr[i] = arr[i];\n  }\n  newArr[arr.length - 1] = newLast;\n  return newArr;\n}\n\n/**\n * An immutable path in a query graph.\n *\n * Path is mostly understood in the graph theoretical sense of the term, that is as \"a connected series of edges\"\n * and a `GraphPath` is generated by traversing a graph query.\n * However, as query graph edges may have conditions, a `GraphPath` also records, for reach edges it is composed of,\n * the set of paths (an `OpPathTree` in practice) that were taken to fulfill the edge conditions (when the edge has\n * one).\n *\n * Additionally, for each edge of the path, a `GraphPath` records the \"trigger\" that made the traversal take that\n * edge. In practice, the \"trigger\" can be seen as a way to decorate a path with some additional metadata for each\n * elements of the path. In practice, that trigger is used in 2 main ways (corresponding to our 2 main query graph\n * traversals):\n *  - for composition validation, the traversal of the federated query graph is driven by other transitions into the\n *    supergraph API query graphs (essentially, composition validation is about finding, for every supergraph API\n *    query graph path, a \"matching\" traversal of the federated query graph). In that case, for the graph paths\n *    we build on the federated query graph, the \"trigger\" will be one of the `Transition` from the supergraph\n *    API graph (which, granted, will be fairly similar to the one of the edge we're taking in the federated query\n *    graph; in practice, triggers are more useful in the query planning case).\n *  - for query planning, the traversal of the federated query graph is driven by the elements of the query we are\n *    planning. Which means that the \"trigger\" for taking an edge in this case will be an `OperationElement`\n *    (or null). See the specialized `OpGraphPath` that is defined for this use case.\n *\n * Lastly, some `GraphPath` can actually encode \"null\" edges: this is used during query planning in the (rare)\n * case where the query we plan for has fragment spread without type condition (or a \"useless\" one, on that doesn't\n * restrict the possible types anymore than they already were) but with some directives. In that case, we want\n * to preserve the information about the directive (to properly rebuild query plans later) but it doesn't correspond\n * to taking any edges, so we add a \"null\" edge and use the trigger to store the fragment spread.\n *\n * @param TTrigger - the type of the paths \"triggers\", metadata that can associated to each element of the path (see\n *   above for more details).\n * @param RV - the type of the vertex starting the path. This simply default to `Vertex` but is used in `RootPath`/`OpRootPath`\n *   to easily distinguish those paths that starts from a root of a query graph.\n * @param TNullEdge - typing information to indicate whether the path can have \"null\" edges or not. Either `null` (\n *   meaning that the path may have null edges) or `never` (the path cannot have null edges).\n */\ntype PathProps<TTrigger, RV extends Vertex = Vertex, TNullEdge extends null | never = never> = {\n  /** The query graph of which this is a path. */\n  readonly graph: QueryGraph,\n  /** The vertex at which the path starts (the head vertex of the first edge in path, aliased here for convenience). */\n  readonly root: RV,\n  /** The vertex at which the path stops (the tail vertex of the last edge in path, aliased here for convenience). */\n  readonly tail: Vertex,\n  /** The triggers associated to each edges in the paths (see `GraphPath` for more details on triggers). */\n  readonly edgeTriggers: readonly TTrigger[],\n  /** The edges (stored by edge index) composing the path. */\n  readonly edgeIndexes: readonly (number | TNullEdge)[],\n  /**\n  * For each edge in the path, if the edge has conditions, the set of paths that fulfill that condition.\n  * Note that no matter which kind of traversal we are doing, fulfilling the conditions is always driven by\n  * the conditions themselves, and as conditions are a graphQL result set, the resulting set of paths are\n  * `OpGraphPath` (and as they are all rooted at the edge head vertex, we use the `OpPathTree` representation\n    * for that set of paths).\n  */\n  readonly edgeConditions: readonly (OpPathTree | null)[],\n\n  readonly subgraphEnteringEdge?: {\n    index: number,\n    edge: Edge,\n    cost: number,\n  },\n\n  readonly ownPathIds: readonly string[],\n  readonly overriddingPathIds: readonly string[],\n\n  readonly edgeToTail?: Edge | TNullEdge,\n  /** Names of the all the possible runtime types the tail of the path can be. */\n  readonly runtimeTypesOfTail: readonly ObjectType[],\n  /** If the last edge (the one getting to tail) was a DownCast, the runtime types before that edge. */\n  readonly runtimeTypesBeforeTailIfLastIsCast?: readonly ObjectType[],\n\n  readonly deferOnTail?: DeferDirectiveArgs,\n  \n  /** We may have a map of selections that get mapped to a context */\n  readonly contextToSelection: readonly (Set<string> | null)[],\n  \n  /** This parameter is for mapping contexts back to the parameter used to collect the field */\n  readonly parameterToContext: readonly (Map<string, ContextAtUsageEntry> | null)[],\n}\n\nexport class GraphPath<TTrigger, RV extends Vertex = Vertex, TNullEdge extends null | never = never> implements Iterable<[Edge | TNullEdge, TTrigger, OpPathTree | null, Set<string> | null, Map<string, ContextAtUsageEntry> | null]> {\n  private constructor(\n    private readonly props: PathProps<TTrigger, RV, TNullEdge>,\n  ) {\n  }\n\n  get graph(): QueryGraph {\n    return this.props.graph;\n  }\n\n  get root(): RV {\n    return this.props.root;\n  }\n\n  get tail(): Vertex {\n    return this.props.tail;\n  }\n\n  get deferOnTail(): DeferDirectiveArgs | undefined {\n    return this.props.deferOnTail;\n  }\n\n  get subgraphEnteringEdge(): { index: number, edge: Edge, cost: number } | undefined {\n    return this.props.subgraphEnteringEdge;\n  }\n\n  /**\n   * Creates a new (empty) path starting at the provided vertex.\n   */\n  static create<TTrigger, RV extends Vertex = Vertex, TNullEdge extends null | never = never>(\n    graph: QueryGraph,\n    root: RV\n  ): GraphPath<TTrigger, RV, TNullEdge> {\n    // If 'graph' is a federated query graph, federation renames all root type to their default names, so we rely on this here.\n    const runtimeTypes = isFederatedGraphRootType(root.type) ? [] : possibleRuntimeTypes(root.type as CompositeType);\n    return new GraphPath({\n      graph,\n      root,\n      tail: root,\n      edgeTriggers: [],\n      edgeIndexes: [],\n      edgeConditions: [],\n      ownPathIds: [],\n      overriddingPathIds: [],\n      runtimeTypesOfTail: runtimeTypes,\n      contextToSelection: [],\n      parameterToContext: [],\n    });\n  }\n\n  /**\n   * Creates a new (empty) path starting from the root vertex in `graph` corresponding to the provide `rootKind`.\n   */\n  static fromGraphRoot<TTrigger, TNullEdge extends null | never = never>(\n    graph: QueryGraph,\n    rootKind: SchemaRootKind\n  ): RootPath<TTrigger, TNullEdge> | undefined {\n    const root = graph.root(rootKind);\n    return root ? this.create(graph, root) : undefined;\n  }\n\n  /**\n   * The size of the path, that is the number of edges composing it.\n   *\n   * Note that this only the \"main\" edges composing the path: some of those edges may have conditions for which the\n   * path will also store the \"sub-paths\" necessary to fulfill said conditions, but the edges of those sub-paths are\n   * _not_ counted here.\n   */\n  get size(): number {\n    return this.props.edgeIndexes.length;\n  }\n\n  /**\n   * That method first look for the biggest common prefix to `this` and `that` (assuming that both path are build as choices\n   * of the same \"query path\"), and the count how many subgraph jumps each of the path has after said prefix.\n   *\n   * Note that this method always returns something but the biggest common prefix considered might well be empty.\n   *\n   * Please note that this method assumes that the 2 paths have the same root, and will fail if that's not the case.\n   */\n  countSubgraphJumpsAfterLastCommonVertex(that: GraphPath<TTrigger, RV, TNullEdge>): {\n    thisJumps: number,\n    thatJumps: number\n  } {\n    const { vertex, index } = this.findLastCommonVertex(that);\n    return {\n      thisJumps: this.subgraphJumpsAtIdx(vertex, index),\n      thatJumps: that.subgraphJumpsAtIdx(vertex, index),\n    };\n  }\n\n  private findLastCommonVertex(that: GraphPath<TTrigger, RV, TNullEdge>): { vertex: Vertex, index: number } {\n    let vertex: Vertex = this.root;\n    assert(that.root === vertex, () => `Expected both path to start on the same root, but 'this' has root ${vertex} while 'that' has ${that.root}`);\n\n    const minSize = Math.min(this.size, that.size);\n    let index = 0;\n    for (; index < minSize; index++) {\n      const thisEdge = this.edgeAt(index, vertex);\n      const thatEdge = that.edgeAt(index, vertex);\n      if (thisEdge !== thatEdge) {\n        break;\n      }\n      if (thisEdge) {\n        vertex = thisEdge.tail;\n      }\n    }\n    return { vertex, index};\n  }\n\n  private subgraphJumpsAtIdx(vertex: Vertex, index: number): number {\n    let jumps = 0;\n    let v: Vertex = vertex;\n    for (let i = index; i < this.size; i++) {\n      const edge = this.edgeAt(i, v);\n      if (!edge) {\n        continue;\n      }\n      if (edge.changesSubgraph()) {\n        ++jumps;\n      }\n      v = edge.tail;\n    }\n    return jumps;\n  }\n\n  subgraphJumps(): number {\n    return this.subgraphJumpsAtIdx(this.root, 0);\n  }\n\n  isEquivalentSaveForTypeExplosionTo(that: GraphPath<TTrigger, RV, TNullEdge>): boolean {\n    // We're looking a the specific case were both path are basically equivalent except\n    // for a single step of type-explosion, so if either the paths don't start and end in the\n    // same vertex, or if `other` is not exactly 1 more step than `this`, we're done.\n    if (this.root !== that.root || this.tail !== that.tail || this.size !== that.size - 1) {\n      return false;\n    }\n\n    // If that's true, then we get to our comparison.\n    let thisV: Vertex = this.root;\n    let thatV: Vertex = that.root;\n    for (let i = 0; i < this.size; i++) {\n      let thisEdge = this.edgeAt(i, thisV);\n      let thatEdge = that.edgeAt(i, thatV);\n      if (thisEdge !== thatEdge) {\n        // First difference. If it's not a \"type-explosion\", that is `that` is a cast from an\n        // interface to one of the implementation, then we're not in the case we're looking for.\n        if (!thisEdge || !thatEdge || !isInterfaceType(thatV.type) || thatEdge.transition.kind !== 'DownCast') {\n          return false;\n        }\n        thatEdge = that.edgeAt(i+1, thatEdge.tail);\n        if (!thatEdge) {\n          return false;\n        }\n        thisV = thisEdge.tail;\n        thatV = thatEdge.tail;\n\n        // At that point, we want both path to take the \"same\" key, but because one is starting\n        // from the interface while the other one from an implementation, they won't be technically\n        // the \"same\" edge object. So we check that both are key, to the same subgraph and type,\n        // and with the same condition.\n        if (thisEdge.transition.kind !== 'KeyResolution'\n          || thatEdge.transition.kind !== 'KeyResolution'\n          || thisEdge.tail.source !== thatEdge.tail.source\n          || thisV !== thatV\n          || !thisEdge.conditions!.equals(thatEdge.conditions!)\n        ) {\n          return false;\n        }\n\n        // So far, so good. `thisV` and `thatV` are positioned on the vertex after which the path\n        // must be equal again. So check that it's true, and if it is, we're good.\n        // Note that for `this`, the last edge we looked at was `i`, so the next is `i+1`. And\n        // for `that`, we've skipped over one more edge, so need to use `j+1`.\n        for (let j = i + 1; j < this.size; j++) {\n          thisEdge = this.edgeAt(j, thisV);\n          thatEdge = that.edgeAt(j+1, thatV);\n          if (thisEdge !== thatEdge) {\n            return false;\n          }\n          if (thisEdge) {\n            thisV = thisEdge.tail;\n            thatV = thatEdge!.tail;\n          }\n        }\n        return true;\n      }\n      if (thisEdge) {\n        thisV = thisEdge.tail;\n        thatV = thatEdge!.tail;\n      }\n    }\n    // If we get here, both path are actually exactly the same. So technically there is not additional\n    // type explosion, but they are equivalent and we can return `true`.\n    return true;\n  }\n\n  [Symbol.iterator](): PathIterator<TTrigger, TNullEdge> {\n    const path = this;\n    return {\n      currentIndex: 0,\n      currentVertex: this.root,\n      next(): IteratorResult<[Edge | TNullEdge, TTrigger, OpPathTree | null, Set<string> | null, Map<string, ContextAtUsageEntry> | null]> {\n        if (this.currentIndex >= path.size) {\n          return { done: true, value: undefined };\n        }\n        const idx = this.currentIndex++;\n        const edge = path.edgeAt(idx, this.currentVertex);\n        if (edge) {\n          this.currentVertex = edge.tail;\n        }\n        return { done: false, value: [\n          edge, \n          path.props.edgeTriggers[idx],\n          path.props.edgeConditions[idx],\n          path.props.contextToSelection[idx],\n          path.props.parameterToContext[idx],\n        ] };\n      }\n    };\n  }\n\n  /**\n   * The last edge in the path (if it isn't empty).\n   */\n  lastEdge(): Edge | TNullEdge | undefined {\n    return this.props.edgeToTail;\n  }\n\n  lastTrigger(): TTrigger | undefined {\n    return this.props.edgeTriggers[this.size - 1];\n  }\n\n  /** The possible runtime types the tail of the path can be (this is deduplicated). */\n  tailPossibleRuntimeTypes(): readonly ObjectType[] {\n    return this.props.runtimeTypesOfTail;\n  }\n\n  /**\n   * Returns `true` if the last edge of the path correspond to an @interfaceObject \"fake cast\" while the the previous edge was an edge that \"entered\" the subgraph (a key edge from another subgraph).\n   */\n  lastIsIntefaceObjectFakeDownCastAfterEnteringSubgraph(): boolean {\n    return this.lastIsInterfaceObjectFakeDownCast()\n      && this.subgraphEnteringEdge?.index === this.size - 2; // size - 1 is the last index (the fake cast), so size - 2 is the previous edge.\n  }\n\n  private lastIsInterfaceObjectFakeDownCast(): boolean {\n    return this.lastEdge()?.transition.kind === 'InterfaceObjectFakeDownCast';\n  }\n\n  /**\n   * Creates the new path corresponding to appending to this path the provided `edge`.\n   *\n   * @param trigger - the trigger for taking the edge in the created path.\n   * @param edge - the edge to add (which may be 'null' if this type of path allows it, but if it isn't should be an out-edge\n   *   for `s.tail`).\n   * @param conditionsResolution - the result of resolving the conditions for this edge.\n   * @param defer - if the trigger is an operation with a @defer on it, the arguments of this @defer.\n   * @returns the newly created path.\n   */\n  add(trigger: TTrigger, edge: Edge | TNullEdge, conditionsResolution: ConditionResolution, defer?: DeferDirectiveArgs): GraphPath<TTrigger, RV, TNullEdge> {\n    assert(!edge || this.tail.index === edge.head.index, () => `Cannot add edge ${edge} to path ending at ${this.tail}`);\n    assert(conditionsResolution.satisfied, 'Should add to a path if the conditions cannot be satisfied');\n    assert(!edge || edge.conditions || edge.requiredContexts.length > 0 || !conditionsResolution.pathTree, () => `Shouldn't have conditions paths (got ${conditionsResolution.pathTree}) for edge without conditions (edge: ${edge})`);\n\n    // We clear `subgraphEnteringEdge` as we enter a @defer: that is because `subgraphEnteringEdge` is used to eliminate some\n    // non-optimal paths, but we don't want those optimizations to bypass a defer.\n    let subgraphEnteringEdge = defer ? undefined : this.subgraphEnteringEdge;\n\n    if (edge) {\n      if (edge.transition.kind === 'DownCast' && this.props.edgeToTail) {\n        const previousOperation = this.lastTrigger();\n        if (previousOperation instanceof FragmentElement && previousOperation.appliedDirectives.length === 0) {\n          // This mean we have 2 type-cast back-to-back and that means the previous operation might not be\n          // useful on this path. More precisely, the previous type-cast was only useful if it restricted\n          // the possible runtime types of the type on which it applied more than the current type-cast\n          // does (but note that if the previous type-cast had directives, we keep it no matter what in\n          // case those directives are important).\n          // That is, we're in the case where we have (somewhere potentially deep in a query):\n          //   f {  # field 'f' of type A\n          //     ... on B {\n          //       ... on C {\n          //          # more stuffs\n          //       }\n          //     }\n          //   }\n          // If the intersection of A and C is non empty and included (or equal) to the intersection of A and B,\n          // then there is no reason to have `... on B` at all because:\n          //  1. you can do `... on C` on `f` directly since the intersection of A and C is non-empty.\n          //  2. `... on C` restricts strictly more than `... on B` and so the latter can't impact the result.\n          // So if we detect that we're in that situation, we remove the `... on B` (but note that this is an\n          // optimization, keeping `... on B` wouldn't be incorrect, just useless).\n          const runtimeTypesWithoutPreviousCast = updateRuntimeTypes(this.props.runtimeTypesBeforeTailIfLastIsCast!, edge);\n          if (runtimeTypesWithoutPreviousCast.length > 0\n            && runtimeTypesWithoutPreviousCast.every(t => this.props.runtimeTypesOfTail.includes(t))\n          ) {\n            // Note that edge is from the vertex we've eliminating from the path. So we need to get the edge goes\n            // directly from the prior vertex to the new tail for that path.\n            const updatedEdge = this.graph.outEdges(this.props.edgeToTail!.head).find(e => e.tail.type === edge.tail.type);\n            if (updatedEdge) {\n              // We replace the previous operation by the new one.\n              debug.log(() => `Previous cast ${previousOperation} is made obsolete by new cast ${trigger}, removing from path.`);\n              return new GraphPath({\n                ...this.props,\n                tail: updatedEdge.tail,\n                edgeTriggers: withReplacedLastElement(this.props.edgeTriggers, trigger),\n                edgeIndexes: withReplacedLastElement(this.props.edgeIndexes, updatedEdge.index),\n                edgeConditions: withReplacedLastElement(this.props.edgeConditions, conditionsResolution.pathTree ?? null),\n                edgeToTail: updatedEdge,\n                runtimeTypesOfTail: runtimeTypesWithoutPreviousCast,\n                // We know the edge is a DownCast, so if there is no new `defer` taking precedence, we just inherit the\n                // prior version.\n                deferOnTail: defer ?? this.props.deferOnTail,\n              });\n            }\n          }\n        }\n      }\n\n      // Again, we don't want to set `subgraphEnteringEdge` if we're entering a @defer (see above).\n      if (!defer && edge.changesSubgraph()) {\n        subgraphEnteringEdge = {\n          index: this.size,\n          edge,\n          cost: conditionsResolution.cost,\n        };\n      }\n\n      if (edge.transition.kind === 'KeyResolution') {\n        // We're adding a key edge. If the last edge to that point is an @interfaceObject fake downcast, and if our destination\n        // type is not an @interfaceObject itself, then we can eliminate that last edge as it does nothing useful, but also,\n        // it has conditions and we don't need/want the key we're following to depend on those conditions, since it doesn't have\n        // to.\n        if (this.lastIsInterfaceObjectFakeDownCast() && isInterfaceType(edge.tail.type)) {\n          return new GraphPath({\n            ...this.props,\n            tail: edge.tail,\n            edgeTriggers: withReplacedLastElement(this.props.edgeTriggers, trigger),\n            edgeIndexes: withReplacedLastElement(this.props.edgeIndexes, edge.index),\n            edgeConditions: withReplacedLastElement(this.props.edgeConditions, conditionsResolution.pathTree ?? null),\n            subgraphEnteringEdge,\n            edgeToTail: edge,\n            runtimeTypesOfTail: updateRuntimeTypes(this.props.runtimeTypesOfTail, edge),\n            runtimeTypesBeforeTailIfLastIsCast: undefined, // we know last is not a cast\n            deferOnTail: defer,\n          });\n        }\n      }\n    }\n    \n    const { edgeConditions, contextToSelection, parameterToContext } = this.mergeEdgeConditionsWithResolution(conditionsResolution);\n    const lastParameterToContext = parameterToContext[parameterToContext.length-1];\n    let newTrigger = trigger;\n    if (lastParameterToContext !== null && (trigger as any).kind === 'Field') {\n      // If this is the last edge that reaches a contextual element, we should update the trigger to use the contextual arguments\n      const args = Array.from(lastParameterToContext).reduce((acc: {[key: string]: any}, [key, value]: [string, ContextAtUsageEntry]) => {\n        acc[key] = new Variable(value.contextId);\n        return acc;\n      }, {});\n      newTrigger = (trigger as Field).withUpdatedArguments(args) as TTrigger;\n    }\n      \n    return new GraphPath({\n      ...this.props,\n      tail: edge ? edge.tail : this.tail,\n      edgeTriggers: this.props.edgeTriggers.concat(newTrigger),\n      edgeIndexes: this.props.edgeIndexes.concat((edge ? edge.index : null) as number | TNullEdge),\n      edgeConditions,\n      subgraphEnteringEdge,\n      edgeToTail: edge,\n      runtimeTypesOfTail: updateRuntimeTypes(this.props.runtimeTypesOfTail, edge),\n      runtimeTypesBeforeTailIfLastIsCast: edge?.transition?.kind === 'DownCast' ? this.props.runtimeTypesOfTail : undefined,\n      // If there is no new `defer` taking precedence, and the edge is downcast, then we inherit the prior version. This\n      // is because we only try to re-enter subgraphs for @defer on concrete fields, and so as long as we add downcasts,\n      // we should remember that we still need to try re-entering the subgraph.\n      deferOnTail: defer ?? (edge && edge.transition.kind === 'DownCast' ? this.props.deferOnTail : undefined),\n      contextToSelection,\n      parameterToContext,\n    });\n  }\n  \n  /**\n   * We are going to grow the conditions by one element with the pathTree on the resolution. Additionally, we may need to merge or replace\n   * the existing elements with elements from the ContextMap\n   */\n  private mergeEdgeConditionsWithResolution(conditionsResolution: ConditionResolution): {\n    edgeConditions: (OpPathTree | null)[],\n    contextToSelection: (Set<string> | null)[],\n    parameterToContext: (Map<string, ContextAtUsageEntry> | null)[],\n  }{\n    const edgeConditions = this.props.edgeConditions.concat(conditionsResolution.pathTree ?? null);\n    const contextToSelection = this.props.contextToSelection.concat(null);\n    const parameterToContext = this.props.parameterToContext.concat(null);\n    \n    if (conditionsResolution.contextMap === undefined || conditionsResolution.contextMap.size === 0) {\n      return {\n        edgeConditions,\n        contextToSelection,\n        parameterToContext,\n      };\n    }\n    \n    parameterToContext[parameterToContext.length-1] = new Map();\n    \n    for (const [_, entry] of conditionsResolution.contextMap) {\n      const idx = edgeConditions.length - entry.levelsInQueryPath -1;\n      assert(idx >= 0, 'calculated condition index must be positive');\n      \n      \n      if (entry.pathTree) {\n        edgeConditions[idx] = edgeConditions[idx]?.merge(entry.pathTree) ?? entry.pathTree;\n      }\n      if (contextToSelection[idx] === null) {\n        contextToSelection[idx] = new Set();\n      }\n      contextToSelection[idx]?.add(entry.id);\n      \n      parameterToContext[parameterToContext.length-1]?.set(entry.paramName, { contextId: entry.id, relativePath: Array(entry.levelsInDataPath).fill(\"..\"), selectionSet: entry.selectionSet, subgraphArgType: entry.argType } );\n    }\n    return {\n      edgeConditions,\n      contextToSelection,\n      parameterToContext,\n    };\n  }\n  \n  /**\n   * Creates a new path corresponding to concatenating the provide path _after_ this path.\n   *\n   * @param tailPath - the path to concatenate at the end of this path. That path must start on the vertex at which\n   *   this path ends.\n   * @returns the newly created path.\n   */\n  concat(tailPath: GraphPath<TTrigger, Vertex, TNullEdge>): GraphPath<TTrigger, RV, TNullEdge> {\n    assert(this.tail.index === tailPath.root.index, () => `Cannot concat ${tailPath} after ${this}`);\n    if (tailPath.size === 0) {\n      return this;\n    }\n\n    let prevRuntimeTypes = this.props.runtimeTypesBeforeTailIfLastIsCast;\n    let runtimeTypes = this.props.runtimeTypesOfTail;\n    for (const [edge] of tailPath) {\n      prevRuntimeTypes = runtimeTypes;\n      runtimeTypes = updateRuntimeTypes(runtimeTypes, edge);\n    }\n    return new GraphPath({\n      ...this.props,\n      tail: tailPath.tail,\n      edgeTriggers: this.props.edgeTriggers.concat(tailPath.props.edgeTriggers),\n      edgeIndexes: this.props.edgeIndexes.concat(tailPath.props.edgeIndexes),\n      edgeConditions: this.props.edgeConditions.concat(tailPath.props.edgeConditions),\n      subgraphEnteringEdge: tailPath.subgraphEnteringEdge ? tailPath.subgraphEnteringEdge : this.subgraphEnteringEdge,\n      ownPathIds: this.props.ownPathIds.concat(tailPath.props.ownPathIds),\n      overriddingPathIds: this.props.overriddingPathIds.concat(tailPath.props.overriddingPathIds),\n      edgeToTail: tailPath.props.edgeToTail,\n      runtimeTypesOfTail: runtimeTypes,\n      runtimeTypesBeforeTailIfLastIsCast: tailPath.props.edgeToTail?.transition?.kind === 'DownCast' ? prevRuntimeTypes : undefined,\n      deferOnTail: tailPath.deferOnTail,\n    });\n  }\n\n  checkDirectPathFromPreviousSubgraphTo(\n    typeName: string,\n    triggerToEdge: (graph: QueryGraph, vertex: Vertex, t: TTrigger, overrideConditions: Map<string, boolean>) => Edge | null | undefined,\n    overrideConditions: Map<string, boolean>,\n    prevSubgraphStartingVertex?: Vertex,\n  ): Vertex | undefined {\n    const enteringEdge = this.subgraphEnteringEdge;\n    if (!enteringEdge) {\n      return undefined;\n    }\n    \n    // TODO: Temporary fix to avoid optimization if context exists.\n    // permanent fix is described here: https://github.com/apollographql/federation/pull/3017#pullrequestreview-2083949094\n    if (this.graph.subgraphToArgs.size > 0) {\n      return undefined;\n    }\n\n    // Usually, the starting subgraph in which we want to look for a direct path is the head of\n    // `subgraphEnteringEdge`, that is, where we were just before coming to the current subgraph.\n    // But for subgraph entering edges, we're not coming from a subgraph, so instead we pass the\n    // \"root\" vertex of the subgraph of interest in `prevSubgraphStartingVertex`. And if that\n    // is undefined (for a subgraph entering edge), then that means the subgraph does not have\n    // the root type in question (say, no mutation type), and so there can be no direct path in\n    // that subgraph.\n    if (enteringEdge.edge.transition.kind === 'SubgraphEnteringTransition' && !prevSubgraphStartingVertex) {\n      return undefined;\n    }\n\n    let prevSubgraphVertex = prevSubgraphStartingVertex ?? enteringEdge.edge.head;\n    for (let i = enteringEdge.index + 1; i < this.size; i++) {\n      const triggerToMatch = this.props.edgeTriggers[i];\n      const prevSubgraphMatchingEdge = triggerToEdge(this.graph, prevSubgraphVertex, triggerToMatch, overrideConditions);\n      if (prevSubgraphMatchingEdge === null) {\n        // This means the trigger doesn't make us move (it's typically an inline fragment with no conditions, just directive), which we can always match.\n        continue;\n      }\n      // If the edge has conditions, we don't consider it a direct path as we don't know if that condition can be satisfied and at what cost.\n      if (!prevSubgraphMatchingEdge || prevSubgraphMatchingEdge.conditions) {\n        return undefined;\n      }\n      prevSubgraphVertex = prevSubgraphMatchingEdge.tail;\n    }\n    // If we got here, that mean we were able to match all the triggers from the path since we switched from the previous graph directly into\n    // the previous graph, and so, assuming we're on the proper type, we have a direct path in that previous graph.\n    return prevSubgraphVertex.type.name === typeName ? prevSubgraphVertex : undefined;\n  }\n\n  /**\n   * The set of edges that may legally continue this path.\n   */\n  nextEdges(): readonly Edge[] {\n    if (this.deferOnTail) {\n      // If we path enters a @defer (meaning that what comes after needs to be deferred), then it's the one special case where we\n      // explicitly need to ask for edges-to-self, as we _will_ force the use of a @key edge (so we can send the non-deferred part\n      // immediately) and we may have to resume the deferred part in the same subgraph than the one in which we were (hence the need\n      // for edges to self).\n      return this.graph.outEdges(this.tail, true);\n    }\n\n    // In theory, we could always return `this.graph.outEdges(this.tail)` here. But in practice, `nonTrivialFollowupEdges` may give us a subset\n    // of those \"out edges\" that avoids some of the edges that we know we don't need to check because they are guaranteed to be inefficient\n    // after the previous `tailEdge`. Note that is purely an optimization (see https://github.com/apollographql/federation/pull/1653 for more details).\n    const tailEdge = this.props.edgeToTail;\n    return tailEdge\n      ? this.graph.nonTrivialFollowupEdges(tailEdge)\n      : this.graph.outEdges(this.tail);\n  }\n\n  /**\n   * Whether the path is terminal, that is ends on a terminal vertex.\n   */\n  isTerminal() {\n    return this.graph.isTerminal(this.tail);\n  }\n\n  /**\n   * Whether this path is a `RootPath`, that is one whose starting vertex is one of the underlying query graph root.\n   */\n  isRootPath(): this is RootPath<TTrigger, TNullEdge> {\n    return isRootVertex(this.root);\n  }\n\n  mapMainPath<T>(mapper: (e: Edge | TNullEdge, pathIdx: number) => T): T[] {\n    const result = new Array(this.size);\n    let v: Vertex = this.root;\n    for (let i = 0; i < this.size; i++) {\n      const edge = this.edgeAt(i, v);\n      result[i] = mapper(edge, i);\n      if (edge) {\n        v = edge.tail;\n      }\n    }\n    return result;\n  }\n\n  private edgeAt(index: number, v: Vertex): Edge | TNullEdge {\n    const edgeIdx = this.props.edgeIndexes[index];\n    return (edgeIdx !== null ? this.graph.outEdge(v, edgeIdx) : null) as Edge | TNullEdge;\n  }\n\n  reduceMainPath<T>(reducer: (accumulator: T, edge: Edge | TNullEdge, pathIdx: number) => T, initialValue: T): T {\n    let value = initialValue;\n    let v: Vertex = this.root;\n    for (let i = 0; i < this.size; i++) {\n      const edge = this.edgeAt(i, v);\n      value = reducer(value, edge, i);\n      if (edge) {\n        v = edge.tail;\n      }\n    }\n    return value;\n  }\n\n  /**\n   * Whether the path forms a cycle on the its end vertex, that is if the end vertex of this path has already been encountered earlier in the path.\n   */\n  hasJustCycled(): boolean {\n    if (this.root.index == this.tail.index) {\n      return true;\n    }\n    let v: Vertex = this.root;\n    // We ignore the last edge since it's the one leading to the current vertex.\n    for (let i = 0; i < this.size - 1; i++) {\n      const edge = this.edgeAt(i, v);\n      if (!edge) {\n        continue;\n      }\n      v = edge.tail;\n      if (v.index == this.tail.index) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * Whether any of the edge in the path has associated conditions paths.\n   */\n  hasAnyEdgeConditions(): boolean {\n    return this.props.edgeConditions.some(c => c !== null);\n  }\n\n  isOnTopLevelQueryRoot(): boolean {\n    if (!isRootVertex(this.root)) {\n      return false;\n    }\n    // We walk the vertices and as soon as we take a field (or move out of the root type),\n    // we know we're not on the top-level query/mutation/subscription root anymore. The reason we don't\n    // just check that size <= 1 is that we could have top-level `... on Query`\n    // conditions that don't actually move us.\n    let vertex: Vertex = this.root;\n    for (let i = 0; i < this.size; i++) {\n      const edge = this.edgeAt(i, vertex);\n      if (!edge) {\n        continue;\n      }\n      if (edge.transition.kind === 'FieldCollection' || !isSchemaRootType(edge.tail.type)) {\n        return false;\n      }\n      vertex = edge.tail;\n    }\n    return true;\n  }\n\n  truncateTrailingDowncasts(): GraphPath<TTrigger, RV, TNullEdge> {\n    let lastNonDowncastIdx = -1;\n    let v: Vertex = this.root;\n    let lastNonDowncastVertex = v;\n    let lastNonDowncastEdge: Edge | undefined;\n    let runtimeTypes = isFederatedGraphRootType(this.root.type) ? [] : possibleRuntimeTypes(this.root.type as CompositeType);\n    let runtimeTypesAtLastNonDowncastEdge = runtimeTypes;\n    for (let i = 0; i < this.size; i++) {\n      const edge = this.edgeAt(i, v);\n      runtimeTypes = updateRuntimeTypes(runtimeTypes, edge);\n      if (edge) {\n        v = edge.tail;\n        if (edge.transition.kind !== 'DownCast') {\n          lastNonDowncastIdx = i;\n          lastNonDowncastVertex = v;\n          lastNonDowncastEdge = edge;\n          runtimeTypesAtLastNonDowncastEdge = runtimeTypes;\n        }\n      }\n    }\n    if (lastNonDowncastIdx < 0 || lastNonDowncastIdx === this.size -1) {\n      return this;\n    }\n\n    const newSize = lastNonDowncastIdx + 1;\n    return new GraphPath({\n      ...this.props,\n      tail: lastNonDowncastVertex,\n      edgeTriggers: this.props.edgeTriggers.slice(0, newSize),\n      edgeIndexes: this.props.edgeIndexes.slice(0, newSize),\n      edgeConditions: this.props.edgeConditions.slice(0, newSize),\n      edgeToTail: lastNonDowncastEdge,\n      runtimeTypesOfTail: runtimeTypesAtLastNonDowncastEdge,\n      runtimeTypesBeforeTailIfLastIsCast: undefined,\n    });\n  }\n\n  markOverridding(otherOptions: GraphPath<TTrigger, RV, TNullEdge>[][]): {\n    thisPath: GraphPath<TTrigger, RV, TNullEdge>,\n    otherOptions: GraphPath<TTrigger, RV, TNullEdge>[][],\n  } {\n    const newId = uuidv4();\n    return {\n      thisPath: new GraphPath({\n        ...this.props,\n        ownPathIds: this.props.ownPathIds.concat(newId),\n      }),\n      otherOptions: otherOptions.map((paths) => paths.map((p) => new GraphPath({\n        ...p.props,\n        overriddingPathIds: p.props.overriddingPathIds.concat(newId),\n      }))),\n    };\n  }\n\n  isOverriddenBy(otherPath: GraphPath<TTrigger, RV, TNullEdge>): boolean {\n    for (const overriddingId of this.props.overriddingPathIds) {\n      if (otherPath.props.ownPathIds.includes(overriddingId)) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  tailIsInterfaceObject(): boolean {\n    if (!isObjectType(this.tail.type)) {\n      return false;\n    }\n\n    const schema = this.graph.sources.get(this.tail.source);\n    const metadata = federationMetadata(schema!);\n    return metadata?.isInterfaceObjectType(this.tail.type) ?? false;\n  }\n\n  toString(): string {\n    const isRoot = isRootVertex(this.root);\n    if (isRoot && this.size === 0) {\n      return '_';\n    }\n    const pathStr = this.mapMainPath((edge, idx) => {\n      if (edge) {\n        if (isRoot && idx == 0) {\n          return edge.tail.toString();\n        }\n        const label = edge.label();\n        return ` -${label === \"\" ? \"\" : '-[' + label + ']-'}-> ${edge.tail}`\n      }\n      return ` (${this.props.edgeTriggers[idx]}) `;\n    }).join('');\n    const deferStr = this.deferOnTail ? ` <defer='${this.deferOnTail.label}'>` : '';\n    const typeStr = this.props.runtimeTypesOfTail.length > 0 ? ` (types: [${this.props.runtimeTypesOfTail.join(', ')}])` : '';\n    return `${isRoot ? '' : this.root}${pathStr}${deferStr}${typeStr}`;\n  }\n}\n\nexport interface PathIterator<TTrigger, TNullEdge extends null | never = never> extends Iterator<[Edge | TNullEdge, TTrigger, OpPathTree | null, Set<string> | null, Map<string, ContextAtUsageEntry> | null]> {\n  currentIndex: number,\n  currentVertex: Vertex\n}\n\n/**\n * A `GraphPath` that starts on a vertex that is a root vertex (of the query graph of which this is a path).\n */\nexport type RootPath<TTrigger, TNullEdge extends null | never = never> = GraphPath<TTrigger, RootVertex, TNullEdge>;\n\nexport type OpTrigger = OperationElement | PathContext;\n\n/**\n * A `GraphPath` whose triggers are `OperationElement` (essentially meaning that the path has been guided by a graphQL query).\n */\nexport type OpGraphPath<RV extends Vertex = Vertex> = GraphPath<OpTrigger, RV, null>;\n\n/**\n * An `OpGraphPath` that starts on a vertex that is a root vertex (of the query graph of which this is a path).\n */\nexport type OpRootPath = OpGraphPath<RootVertex>;\n\nexport function isRootPath(path: OpGraphPath<any>): path is OpRootPath {\n  return isRootVertex(path.root);\n}\n\nexport function terminateWithNonRequestedTypenameField<V extends Vertex>(path: OpGraphPath<V>, overrideConditions: Map<string, boolean>): OpGraphPath<V> {\n  // If the last step of the path was a fragment/type-condition, we want to remove it before we get __typename.\n  // The reason is that this avoid cases where this method would make us build plans like:\n  // {\n  //   foo {\n  //     __typename\n  //     ... on A {\n  //       __typename\n  //     }\n  //     ... on B {\n  //       __typename\n  //     }\n  // }\n  // Instead, we just generate:\n  // {\n  //   foo {\n  //     __typename\n  //   }\n  // }\n  // Note it's ok to do this because the __typename we add is _not_ requested, it is just added in cases where we\n  // need to ensure a selection is not empty, and so this transformation is fine to do.\n  path = path.truncateTrailingDowncasts();\n  if (!isCompositeType(path.tail.type)) {\n    return path;\n  }\n  const typenameField = new Field(path.tail.type.typenameField()!);\n  const edge = edgeForField(path.graph, path.tail, typenameField, overrideConditions);\n  assert(edge, () => `We should have an edge from ${path.tail} for ${typenameField}`);\n  return path.add(typenameField, edge, noConditionsResolution);\n}\n\nexport function traversePath(\n  path: GraphPath<any>,\n  onEdges: (edge: Edge) => void\n){\n  for (const [edge, _, conditions] of path) {\n    if (conditions) {\n      traversePathTree(conditions, onEdges);\n    }\n    onEdges(edge);\n  }\n}\n\n// Note that ConditionResolver are guaranteed to be only called for edge with conditions.\nexport type ConditionResolver =\n  (edge: Edge, context: PathContext, excludedDestinations: ExcludedDestinations, excludedConditions: ExcludedConditions, extraConditions?: SelectionSet) => ConditionResolution;\n\n\ntype ContextMapEntry = {\n  levelsInDataPath: number,\n  levelsInQueryPath: number,\n  pathTree?: OpPathTree,\n  selectionSet: SelectionSet,\n  inboundEdge: Edge,\n  paramName: string,\n  argType: Type,\n  id: string,\n}\n  \nexport type ConditionResolution = {\n  satisfied: boolean,\n  cost: number,\n  pathTree?: OpPathTree,\n  contextMap?: Map<string, ContextMapEntry>,\n  // Note that this is not guaranteed to be set even if satistied === false.\n  unsatisfiedConditionReason?: UnsatisfiedConditionReason\n}\n\nexport enum UnsatisfiedConditionReason {\n  NO_POST_REQUIRE_KEY,\n  NO_CONTEXT_SET\n}\n\nexport const noConditionsResolution: ConditionResolution = { satisfied: true, cost: 0 };\nexport const unsatisfiedConditionsResolution: ConditionResolution = { satisfied: false, cost: -1 };\n\nexport enum UnadvanceableReason {\n  UNSATISFIABLE_KEY_CONDITION,\n  UNSATISFIABLE_REQUIRES_CONDITION,\n  UNRESOLVABLE_INTERFACE_OBJECT,\n  NO_MATCHING_TRANSITION,\n  UNREACHABLE_TYPE,\n  IGNORED_INDIRECT_PATH,\n  UNSATISFIABLE_OVERRIDE_CONDITION,\n}\n\nexport type Unadvanceable = {\n  sourceSubgraph: string,\n  destSubgraph: string,\n  reason: UnadvanceableReason,\n  details: string\n};\n\nexport class Unadvanceables {\n  constructor(readonly reasons: Unadvanceable[]) {}\n\n  toString() {\n    return '[' + this.reasons.map((r) => `[${r.reason}](${r.sourceSubgraph}->${r.destSubgraph}) ${r.details}`).join(', ') + ']';\n  }\n}\n\nexport type UnadvanceableClosure = () => Unadvanceable | Unadvanceable[];\n\nexport class UnadvanceableClosures {\n  private _unadvanceables: Unadvanceables | undefined;\n  readonly closures: UnadvanceableClosure[];\n  constructor(closures: UnadvanceableClosure | UnadvanceableClosure[]) {\n    if (Array.isArray(closures)) {\n      this.closures = closures;\n    } else {\n      this.closures = [closures];\n    }\n  }\n\n  toUnadvanceables(): Unadvanceables {\n    if (!this._unadvanceables) {\n      this._unadvanceables = new Unadvanceables(this.closures.map((c) => c()).flat());\n    }\n    return this._unadvanceables;\n  }\n}\n\nexport function isUnadvanceableClosures(result: any[] | UnadvanceableClosures): result is UnadvanceableClosures {\n  return result instanceof UnadvanceableClosures;\n}\n\nfunction pathTransitionToEdge(graph: QueryGraph, vertex: Vertex, transition: Transition, overrideConditions: Map<string, boolean>): Edge | null | undefined {\n  for (const edge of graph.outEdges(vertex)) {\n    // The edge must match the transition.\n    if (!edge.matchesSupergraphTransition(transition)) {\n      continue;\n    }\n\n    if (edge.satisfiesOverrideConditions(overrideConditions)) {\n      return edge;\n    }\n  }\n  return undefined;\n}\n\n/**\n * Wraps a 'composition validation' path (one built from `Transition`) along with the information necessary to compute\n * the indirect paths following that path, and cache the result of that computation when triggered.\n *\n * In other words, this is a `GraphPath<Transition, V>` plus lazy memoization of the computation of its following indirect\n * options.\n *\n * The rational is that after we've reached a given path, we might never need to compute the indirect paths following it\n * (maybe all the fields we'll care about are available \"directive\" (from the same subgraph)), or we might need to compute\n * it once, or we might need them multiple times, but the way the algorithm work, we don't know this in advance. So\n * this abstraction ensure that we only compute such indirect paths lazily, if we ever need them, but while ensuring\n * we don't recompute them multiple times if we do need them multiple times.\n */\nexport class TransitionPathWithLazyIndirectPaths<V extends Vertex = Vertex> {\n  private lazilyComputedIndirectPaths: IndirectPaths<Transition, V> | undefined;\n\n  constructor(\n    readonly path: GraphPath<Transition, V>,\n    readonly conditionResolver: ConditionResolver,\n    readonly overrideConditions: Map<string, boolean>,\n  ) {\n  }\n\n  static initial<V extends Vertex = Vertex>(\n    initialPath: GraphPath<Transition, V>,\n    conditionResolver: ConditionResolver,\n    overrideConditions: Map<string, boolean>,\n  ): TransitionPathWithLazyIndirectPaths<V> {\n    return new TransitionPathWithLazyIndirectPaths(initialPath, conditionResolver, overrideConditions);\n  }\n\n  indirectOptions(): IndirectPaths<Transition, V> {\n    if (!this.lazilyComputedIndirectPaths) {\n      this.lazilyComputedIndirectPaths = this.computeIndirectPaths();\n    }\n    return this.lazilyComputedIndirectPaths;\n  }\n\n  private computeIndirectPaths(): IndirectPaths<Transition, V>  {\n    return advancePathWithNonCollectingAndTypePreservingTransitions(\n      this.path,\n      emptyContext,\n      this.conditionResolver,\n      [],\n      [],\n      (t) => t,\n      pathTransitionToEdge,\n      this.overrideConditions,\n      getFieldParentTypeForEdge,\n    );\n  }\n\n  toString(): string {\n    return this.path.toString();\n  }\n}\n\n// Note: conditions resolver should return `null` if the condition cannot be satisfied. If it is satisfied, it has the choice of computing\n// the actual tree, which we need for query planning, or simply returning \"undefined\" which means \"The condition can be satisfied but I didn't\n// bother computing a tree for it\", which we use for simple validation.\n\n// Returns some a `Unadvanceables` object if there is no way to advance the path with this transition. Otherwise, it returns a list of options (paths) we can be in after advancing the transition.\n// The lists of options can be empty, which has the special meaning that the transition is guaranteed to have no results (it corresponds to unsatisfiable conditions),\n// meaning that as far as composition validation goes, we can ignore that transition (and anything that follows) and otherwise continue.\nexport function advancePathWithTransition<V extends Vertex>(\n  subgraphPath: TransitionPathWithLazyIndirectPaths<V>,\n  transition: Transition,\n  targetType: NamedType,\n  overrideConditions: Map<string, boolean>,\n) : TransitionPathWithLazyIndirectPaths<V>[] | UnadvanceableClosures {\n  // The `transition` comes from the supergraph. Now, it is possible that a transition can be expressed on the supergraph, but correspond\n  // to an 'unsatisfiable' condition on the subgraph. Let's consider:\n  // - Subgraph A:\n  //    type Query {\n  //       get: [I]\n  //    }\n  //\n  //    interface I {\n  //      k: Int\n  //    }\n  //\n  //    type T1 implements I @key(fields: \"k\") {\n  //      k: Int\n  //      a: String\n  //    }\n  //\n  //    type T2 implements I @key(fields: \"k\") {\n  //      k: Int\n  //      b: String\n  //    }\n  //\n  // - Subgraph B:\n  //    interface I {\n  //      k: Int\n  //    }\n  //\n  //    type T1 implements I @key(fields: \"k\") {\n  //      k: Int\n  //      myself: I\n  //    }\n  //\n  // On the resulting supergraph, we will have a path for:\n  //   {\n  //     get {\n  //       ... on T1 {\n  //         myself {\n  //           ... on T2 {\n  //             b\n  //           }\n  //         }\n  //       }\n  //     }\n  //   }\n  //\n  // However, as we compute possible subgraph paths, the `myself` field will get us\n  // in subgraph `B` through `T1`'s key. But then, as we look at transition `... on T2`\n  // from subgraph `B`, we have no such type/transition. But this does not mean that\n  // the subgraphs shouldn't compose. What it really means is that the corresponding\n  // query above can be done, but is guaranteed to never return anything (essentially,\n  // we can query subgraph 'B' but will never get a `T2` so the result of the query\n  // should be empty).\n  //\n  // So we need to handle this case and we do this first. Note that the only kind of\n  // transition that can give use this is a 'DownCast' transition.\n  // Also note that if the subgraph type we're on is an @interfaceObject type, then we\n  // also can't be in this situation as an @interfaceObject type \"stands in\" for all\n  // the possible implementations of that interface. And one way to detect if the subgraph\n  // type an @interfaceObject is to check if the subgraph type is an object type while the\n  // supergraph type is an interface one.\n  if (transition.kind === 'DownCast' && !(isInterfaceType(transition.sourceType) && isObjectType(subgraphPath.path.tail.type))) {\n    // If we consider a 'downcast' transition, it means that the target of that cast is composite, but also that the\n    // last type of the subgraph path also is (that type is essentially the \"source\" of the cast).\n    const supergraphRuntimeTypes = possibleRuntimeTypes(targetType as CompositeType);\n    const subgraphRuntimeTypes = subgraphPath.path.tailPossibleRuntimeTypes();\n    const intersection = supergraphRuntimeTypes.filter(t1 => subgraphRuntimeTypes.some(t2 => t1.name === t2.name)).map(t => t.name);\n    // if we intersection is empty, it means whatever field got us here can never resolve into an object of the type we're casting\n    // into. Essentially, we're good building a plan for this transition and whatever comes next: it'll just return nothing.\n    if (intersection.length === 0) {\n      debug.log(() => `No intersection between casted type ${targetType} and the possible types in this subgraph`);\n      return [];\n    }\n  }\n\n  debug.group(() => `Trying to advance ${subgraphPath} for ${transition}`);\n  debug.group('Direct options:');\n  const directOptions = advancePathWithDirectTransition(\n    subgraphPath.path,\n    transition,\n    subgraphPath.conditionResolver,\n    overrideConditions,\n  );\n  let options: GraphPath<Transition, V>[];\n  const deadEndClosures: UnadvanceableClosure[] = [];\n  if (isUnadvanceableClosures(directOptions)) {\n    options = [];\n    debug.groupEnd(() => 'No direct options');\n    deadEndClosures.push(...directOptions.closures);\n  } else {\n    debug.groupEnd(() => advanceOptionsToString(directOptions));\n    // If we can fulfill the transition directly (without taking an edge) and the target type is \"terminal\", then there is\n    // no point in computing all the options.\n    if (directOptions.length > 0 && isLeafType(targetType)) {\n      debug.groupEnd(() => `reached leaf type ${targetType} so not trying indirect paths`);\n      return createLazyTransitionOptions(directOptions, subgraphPath, overrideConditions);\n    }\n    options = directOptions;\n  }\n  // Otherwise, let's try non-collecting edges and see if we can find some (more) options there.\n  debug.group(`Computing indirect paths:`);\n  const pathsWithNonCollecting = subgraphPath.indirectOptions();\n  if (pathsWithNonCollecting.paths.length > 0) {\n    debug.groupEnd(() => `${pathsWithNonCollecting.paths.length} indirect paths: ${pathsWithNonCollecting.paths}`);\n    debug.group('Validating indirect options:');\n    for (const nonCollectingPath of pathsWithNonCollecting.paths) {\n      debug.group(() => `For indirect path ${nonCollectingPath}:`);\n      const pathsWithTransition = advancePathWithDirectTransition(\n        nonCollectingPath,\n        transition,\n        subgraphPath.conditionResolver,\n        overrideConditions,\n      );\n      if (isUnadvanceableClosures(pathsWithTransition)) {\n        debug.groupEnd(() => `Cannot be advanced with ${transition}`);\n        deadEndClosures.push(...pathsWithTransition.closures);\n      } else {\n        debug.groupEnd(() => `Adding valid option: ${pathsWithTransition}`);\n        options = options.concat(pathsWithTransition);\n      }\n    }\n    debug.groupEnd();\n  } else {\n    debug.groupEnd('no indirect paths');\n  }\n  debug.groupEnd(() => options.length > 0 ? advanceOptionsToString(options) : `Cannot advance ${transition} for this path`);\n  if (options.length > 0) {\n    return createLazyTransitionOptions(options, subgraphPath, overrideConditions);\n  }\n\n  const indirectDeadEndClosures = pathsWithNonCollecting.deadEnds.closures;\n  return new UnadvanceableClosures(() => {\n    const allDeadEnds = new UnadvanceableClosures(deadEndClosures.concat(indirectDeadEndClosures))\n      .toUnadvanceables().reasons;\n    if (transition.kind === 'FieldCollection') {\n      const typeName = transition.definition.parent.name;\n      const fieldName = transition.definition.name;\n      const subgraphsWithDeadEnd = new Set(allDeadEnds.map(e => e.destSubgraph));\n      for (const [subgraph, schema] of subgraphPath.path.graph.sources.entries()) {\n        if (subgraphsWithDeadEnd.has(subgraph)) {\n          continue;\n        }\n        const type = schema.type(typeName);\n        if (type && isCompositeType(type) && type.field(fieldName)) {\n          // That subgraph has the type we look for, but we have recorded no dead-ends. This means there is no edge to that type,\n          // and thus that either:\n          // - it has no keys.\n          // - the path to advance it an @interfaceObject type, the type we look for is an implementation of that interface, and\n          //   there no key on the interface.\n          const typenameOfTail = subgraphPath.path.tail.type.name;\n          const typeOfTailInSubgraph = schema.type(typenameOfTail);\n          if (!typeOfTailInSubgraph) {\n            // This means that 1) the type of the path we're trying to advance is different from the transition we're considering,\n            // and that should only happen if the path is on an @interfaceObject type, and 2) the subgraph we're looking at\n            // actually doesn't have that interface. To be able to jump to that subgraph, we would need the interface and it\n            // would need to have a resolvable key, but it has neither.\n            allDeadEnds.push({\n              sourceSubgraph: subgraphPath.path.tail.source,\n              destSubgraph: subgraph,\n              reason: UnadvanceableReason.UNREACHABLE_TYPE,\n              details: `cannot move to subgraph \"${subgraph}\", which has field \"${transition.definition.coordinate}\", because interface \"${typenameOfTail}\" is not defined in this subgraph (to jump to \"${subgraph}\", it would need to both define interface \"${typenameOfTail}\" and have a @key on it)`,\n            });\n          } else {\n            // `typeOfTailInSubgraph` exists, so it's either equal to `type`, or it's an interface of it. In any case, it's composite.\n            assert(isCompositeType(typeOfTailInSubgraph), () => `Type ${typeOfTailInSubgraph} in ${subgraph} should be composite`);\n            const metadata = federationMetadata(schema);\n            const keys: Directive<CompositeType, {fields: any, resolvable?: boolean}>[] = metadata ? typeOfTailInSubgraph.appliedDirectivesOf(metadata.keyDirective()) : [];\n            const allNonResolvable = keys.length > 0 && keys.every((k) => !(k.arguments().resolvable ?? true));\n            assert(keys.length === 0 || allNonResolvable, () => `After ${subgraphPath} and for transition ${transition}, expected type ${type} in ${subgraph} to have no resolvable keys`);\n            const kindOfType = typeOfTailInSubgraph === type ? 'type' : 'interface';\n            const explanation = keys.length === 0\n              ? `${kindOfType} \"${typenameOfTail}\" has no @key defined in subgraph \"${subgraph}\"`\n              : `none of the @key defined on ${kindOfType} \"${typenameOfTail}\" in subgraph \"${subgraph}\" are resolvable (they are all declared with their \"resolvable\" argument set to false)`;\n            allDeadEnds.push({\n              sourceSubgraph: subgraphPath.path.tail.source,\n              destSubgraph: subgraph,\n              reason: UnadvanceableReason.UNREACHABLE_TYPE,\n              details: `cannot move to subgraph \"${subgraph}\", which has field \"${transition.definition.coordinate}\", because ${explanation}`\n            });\n          }\n        }\n      }\n    }\n  \n    return allDeadEnds;\n  });\n}\n\nfunction createLazyTransitionOptions<V extends Vertex>(\n  options: GraphPath<Transition, V>[],\n  origin: TransitionPathWithLazyIndirectPaths<V>,\n  overrideConditions: Map<string, boolean>,\n) : TransitionPathWithLazyIndirectPaths<V>[] {\n  return options.map(option => new TransitionPathWithLazyIndirectPaths(\n    option,\n    origin.conditionResolver,\n    overrideConditions,\n  ));\n}\n\n// A \"set\" of excluded destinations, that is subgraph name. Note that we use an array instead of set because this is used\n// in pretty hot paths (the whole path computation is CPU intensive) and will basically always be tiny (it's bounded\n// by the number of distinct key on a given type, so usually 2-3 max; even in completely unrealistic cases, it's hard bounded\n// by the number of subgraph), so array is going to perform a lot better than `Set` in practice.\nexport type ExcludedDestinations = readonly string[];\n\nfunction isDestinationExcluded(destination: string, excluded: ExcludedDestinations): boolean {\n  return excluded.includes(destination);\n}\n\nexport function sameExcludedDestinations(ex1: ExcludedDestinations, ex2: ExcludedDestinations): boolean {\n  if (ex1 === ex2) {\n    return true;\n  }\n  if (ex1.length !== ex2.length) {\n    return false;\n  }\n  return ex1.every((d) => ex2.includes(d));\n}\n\nfunction addDestinationExclusion(excluded: ExcludedDestinations, destination: string): ExcludedDestinations {\n  return excluded.includes(destination) ? excluded : excluded.concat(destination);\n}\n\nexport type ExcludedConditions = readonly SelectionSet[];\n\nfunction isConditionExcluded(condition: SelectionSet | undefined, excluded: ExcludedConditions): boolean {\n  if (!condition) {\n    return false;\n  }\n  return excluded.find(e => condition.equals(e)) !== undefined;\n}\n\nexport function addConditionExclusion(excluded: ExcludedConditions, newExclusion: SelectionSet | undefined): ExcludedConditions {\n  return newExclusion ? excluded.concat(newExclusion) : excluded;\n}\n\nfunction popMin<TTrigger, V extends Vertex, TNullEdge extends null | never = never>(\n  stack: GraphPath<TTrigger, V, TNullEdge>[]\n): GraphPath<TTrigger, V, TNullEdge> {\n  let minIdx = 0;\n  let minSize = stack[0].size;\n  for (let i = 1; i < stack.length; i++) {\n    if (stack[i].size < minSize) {\n      minSize = stack[i].size;\n      minIdx = i;\n    }\n  }\n  const min = stack[minIdx];\n  stack.splice(minIdx, 1);\n  return min;\n}\n\nexport type IndirectPaths<TTrigger, V extends Vertex = Vertex, TNullEdge extends null | never = never, TDeadEnds extends UnadvanceableClosures | never = UnadvanceableClosures> = {\n  paths: GraphPath<TTrigger, V, TNullEdge>[],\n  deadEnds: TDeadEnds\n}\n\nfunction advancePathWithNonCollectingAndTypePreservingTransitions<TTrigger, V extends Vertex, TNullEdge extends null | never = never, TDeadEnds extends UnadvanceableClosures | never = UnadvanceableClosures>(\n  path: GraphPath<TTrigger, V, TNullEdge>,\n  context: PathContext,\n  conditionResolver: ConditionResolver,\n  excludedDestinations: ExcludedDestinations,\n  excludedConditions: ExcludedConditions,\n  convertTransitionWithCondition: (transition: Transition, context: PathContext) => TTrigger,\n  triggerToEdge: (graph: QueryGraph, vertex: Vertex, t: TTrigger, overrideConditions: Map<string, boolean>) => Edge | null | undefined,\n  overrideConditions: Map<string, boolean>,\n  getFieldParentType: (trigger: TTrigger) => CompositeType | null,\n): IndirectPaths<TTrigger, V, TNullEdge, TDeadEnds>  {\n  // If we're asked for indirect paths after an \"@interfaceObject fake down cast\" but that down cast comes just after a non-collecting edges, then\n  // we can ignore it (skip indirect paths from there). The reason is that the presence of the non-collecting just before the fake down-cast means\n  // we add looked at indirect paths just before that down cast, but that fake downcast really does nothing in practice with the subgraph it's on,\n  // so any indirect path from that fake down cast will have a valid indirect path _before_ it, and so will have been taken into account independently.\n  if (path.lastIsIntefaceObjectFakeDownCastAfterEnteringSubgraph()) {\n    // Note: we need to register a dead-end for every subgraphs we \"could\" be going to, or the code calling this may try to infer a reason on its own\n    // and we'll run into some assertion.\n    return {\n      paths: [],\n      deadEnds: new UnadvanceableClosures(() => {\n        const reachableSubgraphs = new Set(path.nextEdges().filter((e) => !e.transition.collectOperationElements && e.tail.source !== path.tail.source).map((e) => e.tail.source));\n        return Array.from(reachableSubgraphs).map((s) => ({\n          sourceSubgraph: path.tail.source,\n          destSubgraph: s,\n          reason: UnadvanceableReason.IGNORED_INDIRECT_PATH,\n          details: `ignoring moving from \"${path.tail.source}\" to \"${s}\" as a more direct option exists`,\n        }))\n      }) as TDeadEnds,\n    };\n  }\n\n  const isTopLevelPath = path.isOnTopLevelQueryRoot();\n  const typeName = isFederatedGraphRootType(path.tail.type) ? undefined : path.tail.type.name;\n  const originalSource = path.tail.source;\n  // For each source, we store the best path we find for that source with the score, or `null` if we can\n  // decide that we should try going to that source (typically because we can prove that this create an\n  // inefficient detour for which a more direct path exists and will be found).\n  const bestPathBySource = new Map<string, [GraphPath<TTrigger, V, TNullEdge>, number] | null>();\n  const deadEndClosures: UnadvanceableClosure[] = [];\n  const toTry: GraphPath<TTrigger, V, TNullEdge>[] = [ path ];\n  while (toTry.length > 0) {\n    // Note that through `excluded` we avoid taking the same edge from multiple options. But that means it's important we try\n    // the smallest paths first. That is, if we could in theory have path A -> B and A -> C -> B, and we can do B -> D,\n    // then we want to keep A -> B -> D, not A -> C -> B -> D.\n    const toAdvance = popMin(toTry);\n    const nextEdges =  toAdvance.nextEdges().filter(e => !e.transition.collectOperationElements);\n    if (nextEdges.length === 0) {\n      // The subtlety here is that this may either mean that there is no non-collecting edges from the tail of\n      // this path, _or_ that there is some but they \"trivial\" since `nextEdges` above may end up calling\n      // `QueryGraph.nonTrivialFollowupEdges()`. In the later, this means there is a key we could use, but\n      // it get us back to the previous vertex in the path, which is useless. But we distinguish that case\n      // to 1) make the debug more \"true\" and 2) much more importantly, record a \"dead-end\" for this path.\n      const outEdges = toAdvance.graph.outEdges(toAdvance.tail).filter(e => !e.transition.collectOperationElements);\n      if (outEdges.length > 0) {\n        debug.log(() => `Nothing to try for ${toAdvance}: it only has \"trivial\" non-collecting outbound edges`);\n        deadEndClosures.push(() => {\n          const unadvanceables = [];\n          for (const edge of outEdges) {\n            if (edge.tail.source !== toAdvance.tail.source && edge.tail.source !== originalSource) {\n              unadvanceables.push({\n                sourceSubgraph: toAdvance.tail.source,\n                destSubgraph: edge.tail.source,\n                reason: UnadvanceableReason.IGNORED_INDIRECT_PATH,\n                details: `ignoring moving to subgraph \"${edge.tail.source}\" using @key(fields: \"${edge.conditions?.toString(true, false)}\") of \"${edge.head.type}\" because there is a more direct path in ${edge.tail.source} that avoids ${toAdvance.tail.source} altogether`\n              });\n            }\n          }\n          return unadvanceables;\n        })\n      } else {\n        debug.log(() => `Nothing to try for ${toAdvance}: it has no non-collecting outbound edges`);\n      }\n      continue;\n    }\n    debug.group(() => `From ${toAdvance}:`);\n    for (const edge of nextEdges) {\n      debug.group(() => `Testing edge ${edge}`);\n      const target = edge.tail;\n\n      if (isDestinationExcluded(target.source, excludedDestinations)) {\n        debug.groupEnd(`Ignored: edge is excluded`);\n        continue;\n      }\n\n      // If the edge takes us back to the subgraph in which we started, we're not really interested\n      // (we've already checked for direct transition from that original subgraph). On exception though\n      // is if we're just after a @defer, in which case re-entering the current subgraph is actually\n      // a thing.\n      if (target.source === originalSource && !toAdvance.deferOnTail) {\n        debug.groupEnd('Ignored: edge get us back to our original source');\n        continue;\n      }\n\n      // We have edges between Query objects so that if a field returns a query object, we can jump to any subgraph\n      // at that point. However, there is no point of using those edges at the beginning of a path, except for when\n      // we have a @defer, in which case we want to allow re-jumping to the same subgraph.\n      if (isTopLevelPath\n        && (edge.transition.kind === 'RootTypeResolution' || edge.transition.kind === 'KeyResolution')\n        && !(toAdvance.deferOnTail && edge.isKeyOrRootTypeEdgeToSelf())\n      ) {\n        debug.groupEnd(`Ignored: edge is a top-level \"RootTypeResolution\" or \"KeyResolution\"`);\n        continue;\n      }\n\n      const prevForSource = bestPathBySource.get(target.source);\n      if (prevForSource === null) {\n        debug.groupEnd(() => `Ignored: we've shown before than going to ${target.source} is not productive`);\n        continue;\n      }\n\n      if (prevForSource\n        && (prevForSource[0].size < toAdvance.size + 1\n          || (prevForSource[0].size == toAdvance.size + 1 && prevForSource[1] <= 1)\n        )\n      ) {\n        // We've already found another path that gets us to the same subgraph than the edge we're\n        // about to check. If that previous path is strictly shorter than the path we'd obtain\n        // with the new edge, then we don't consider this edge (it's a longer way to get to the same place).\n        // And if the previous path is the same size (as the one obtained with that edge), but\n        // that the previous path cost for getting the condition was 0 or 1, then the new edge cannot\n        // really improve on this and we don't bother with it. Note that a cost of 0 can only happen\n        // during composition validation where all costs are 0 to mean \"we don't care about costs\".\n        // Meaning effectively that for validation, as soon as we have a path to a subgraph, we ignore\n        // other options even if they may be \"faster\".\n        debug.groupEnd(() => `Ignored: a better (shorter) path to the same subgraph already added`);\n        continue;\n      }\n\n      if (isConditionExcluded(edge.conditions, excludedConditions)) {\n        debug.groupEnd(`Ignored: edge condition is excluded`);\n        continue;\n      }\n\n      debug.group(() => `Validating conditions ${edge.conditions}`);\n      // As we validate the condition for this edge, it might be necessary to jump to another subgraph, but if for that\n      // we need to jump to the same subgraph we're trying to get to, then it means there is another, shorter way to\n      // go to our destination and we can return that shorter path, not the one with the edge we're trying.\n      const conditionResolution = canSatisfyConditions(\n        toAdvance,\n        edge,\n        conditionResolver,\n        context,\n        addDestinationExclusion(excludedDestinations, target.source),\n        excludedConditions,\n        getFieldParentType,\n      );\n      if (conditionResolution.satisfied) {\n        debug.groupEnd('Condition satisfied');\n        // We _can_ get to `target.source` with that edge. But if we had already found another path to\n        // the same subgraph, we want to replace it by this one only if either 1) it is shorter or 2) if\n        // it's of equal size, only if the condition cost are lower than the previous one.\n        if (prevForSource && prevForSource[0].size === toAdvance.size + 1 && prevForSource[1] <= conditionResolution.cost) {\n          debug.groupEnd('Ignored: a better (less costly) path to the same subgraph already added');\n          continue;\n        }\n\n        // It's important we minimize the number of options this method returns, because during query planning\n        // with many fields, options here translate to state explosion. This is why we eliminated above\n        // edges that provably have better options.\n        // But we can do a slightly more involved check. Suppose we have a few subgraph A, B and C,\n        // and suppose that we're considering an edge from B to C. We can then look at which subgraph we\n        // were into before reaching B (which can be \"none\" if the query starts at B), and let say that\n        // it is A. In other words, if we use the edge we're considering, we'll be looking at a path doing:\n        //   ... -> A -> B -> <some fields in B> -> C\n        // and `toAdvance` is currently just before that last step.\n        // Now, we can fairly easily check if the fields we collected in B (the `<some fields in B>`) can\n        // be also collected *directly* (without keys, nor requires) from A and if after that we could take\n        // an edge to C. If we can do all that, then we know that the path we're considering is strictly\n        // less efficient than doing:\n        //   .. -> A -> <same fields but in A> -> C\n        // and we've just validated that path exists and so will be found by another branch of the algorithm.\n        // In that case, we can ignore the edge, knowing a better path exists.\n        // Doing this drastically reduce state explosion in a number of cases.\n        const subgraphEnteringEdge = toAdvance.subgraphEnteringEdge;\n        // Note that we ignore the case where the \"entering edge\" is the \"current\" type as we might end up in an infinite\n        // loop when calling `hasValidDirectKeyEdge` in that case without additional care and it's not useful because this\n        // very method already ensure we don't create unnecessary chains of keys for the \"current type\"\n        if (subgraphEnteringEdge && subgraphEnteringEdge.edge.tail.type.name !== typeName) {\n          let prevSubgraphEnteringVertex: Vertex | undefined = undefined;\n          let backToPreviousSubgraph: boolean;\n          if (subgraphEnteringEdge.edge.transition.kind === 'SubgraphEnteringTransition') {\n            assert(toAdvance.root instanceof RootVertex, () => `${toAdvance} should be a root path if it starts with subgraph entering edge ${subgraphEnteringEdge.edge}`);\n            // Since mutation options need to originate from the same subgraph, we pretend we cannot find a root vertex\n            // in another subgraph (effectively skipping the optimization).\n            prevSubgraphEnteringVertex = toAdvance.root.rootKind !== 'mutation'\n              ? rootVertexForSubgraph(toAdvance.graph, edge.tail.source, toAdvance.root.rootKind)\n              : undefined;\n            // If the entering edge is the root entering of subgraphs, then the \"prev subgraph\" is really `edge.tail.source` and\n            // so `edge` always get us back to that (but `subgraphEnteringEdge.edge.head.source` would be `FEDERATED_GRAPH_ROOT_SOURCE`,\n            // so the test we do in the `else` branch would not work here).\n            backToPreviousSubgraph = true;\n          } else {\n            backToPreviousSubgraph = subgraphEnteringEdge.edge.head.source === edge.tail.source;\n          }\n          const prevSubgraphVertex = toAdvance.checkDirectPathFromPreviousSubgraphTo(edge.tail.type.name, triggerToEdge, overrideConditions, prevSubgraphEnteringVertex);\n          const maxCost = toAdvance.subgraphEnteringEdge.cost + (backToPreviousSubgraph ? 0 : conditionResolution.cost);\n          if (prevSubgraphVertex\n            && (\n              backToPreviousSubgraph\n              || hasValidDirectKeyEdge(toAdvance.graph, prevSubgraphVertex, edge.tail.source, conditionResolver, maxCost)\n            )\n          ) {\n            debug.groupEnd(\n              () => `Ignored: edge correspond to a detour by subgraph ${edge.head.source} from subgraph ${subgraphEnteringEdge.edge.head.source}: `\n              + `we have a direct path from ${subgraphEnteringEdge.edge.head.type} to ${edge.tail.type} in ${subgraphEnteringEdge.edge.head.source}`\n              + (backToPreviousSubgraph ? '.' : ` and can move to ${edge.tail.source} from there`)\n            );\n            // Note that we just found that going to the previous subgraph is useless because there is a more direct path.\n            // But we record that this previous subgraph should be avoid altogether because other some longer path\n            // could try to get back to that same source but defeat this specific check due to having taken another\n            // edge first (and thus the entering edge is different).\n            // What we mean here is that if the path is A -> B -> <some fields> and we just found that we don't want to keep\n            // A -> B -> <some fields> -> A because we know A -> <some fields> is possible directly, then we don't want this\n            // method to later add A -> B -> <some fields> -> C -> A, as that is equally not useful.\n            bestPathBySource.set(edge.tail.source, null);\n            // We also record a dead-end because this optimization might make us return no path at all, and having\n            // recorded no-dead ends would break an assertion in `advancePathWithTransition` that assumes that if\n            // we have recorded no-dead end, that's because we have no key edges. But note that this 'dead end'\n            // message shouldn't really ever reach users.\n            deadEndClosures.push(() => {\n              return {\n                sourceSubgraph: toAdvance.tail.source,\n                destSubgraph: edge.tail.source,\n                reason: UnadvanceableReason.IGNORED_INDIRECT_PATH,\n                details: `ignoring moving to subgraph \"${edge.tail.source}\" using @key(fields: \"${edge.conditions?.toString(true, false)}\") of \"${edge.head.type}\" because there is a more direct path in ${edge.tail.source} that avoids ${toAdvance.tail.source} altogether`\n              };\n            });\n            continue;\n          }\n        }\n\n        const updatedPath = toAdvance.add(convertTransitionWithCondition(edge.transition, context), edge, conditionResolution);\n        debug.log(() => `Using edge, advance path: ${updatedPath}`);\n        bestPathBySource.set(target.source, [updatedPath, conditionResolution.cost]);\n        // It can be necessary to \"chain\" keys, because different subgraphs may have different keys exposed, and so we when we took\n        // a key, we want to check if there is new key we can now take that take us to other subgraphs. For other 'non-collecting'\n        // edges ('QueryResolution' and 'SubgraphEnteringTransition') however, chaining never give us additional value.\n        // Note: one exception is the case of self-edges (which stay on the same vertex/subgraph): those will only be\n        // looked at just after a @defer to handle potentially re-entering the same subgraph. When we take this, no point in\n        // looking for chaining since we'll independently check the other edges already.\n        if (edge.transition.kind === 'KeyResolution' && edge.head.source !== edge.tail.source) {\n          toTry.push(updatedPath);\n        }\n      } else {\n        debug.groupEnd('Condition unsatisfiable');\n        deadEndClosures.push(() => {\n          const source = toAdvance.tail.source;\n          const dest = edge.tail.source;\n          const hasOverriddenField = conditionHasOverriddenFieldsInSource(path.graph.sources.get(toAdvance.tail.source)!, edge.conditions!);\n          const extraMsg = hasOverriddenField\n            ? ` (note that some of those key fields are overridden in \"${source}\")`\n            : \"\";\n          return {\n            sourceSubgraph: source,\n            destSubgraph: dest,\n            reason: UnadvanceableReason.UNSATISFIABLE_KEY_CONDITION,\n            details: `cannot move to subgraph \"${dest}\" using @key(fields: \"${edge.conditions?.toString(true, false)}\") of \"${edge.head.type}\", the key field(s) cannot be resolved from subgraph \"${source}\"${extraMsg}`\n          };\n        });\n      }\n      debug.groupEnd(); // End of edge\n    }\n    debug.groupEnd();\n  }\n  return {\n    paths: mapValues(bestPathBySource).filter(p => p !== null).map(b => b![0]),\n    deadEnds: new UnadvanceableClosures(deadEndClosures) as TDeadEnds\n  }\n}\n\nfunction rootVertexForSubgraph(graph: QueryGraph, subgraphName: string, rootKind: SchemaRootKind): Vertex | undefined {\n  const root = graph.root(rootKind);\n  assert(root, () => `Should not have ask for ${rootKind} as the graph does not have one`);\n  const subgraphRootEdge = graph.outEdges(root).find((e) => e.tail.source === subgraphName);\n  return subgraphRootEdge?.tail;\n}\n\nfunction conditionHasOverriddenFieldsInSource(schema: Schema, condition: SelectionSet): boolean {\n  const externalDirective = federationMetadata(schema)!.externalDirective();\n  return allFieldDefinitionsInSelectionSet(condition).some((field) => {\n    // The subtlety here is that the definition of the fields in the condition are not the one of the subgraph we care\n    // about here in general, because the conditions on key edge are those of the destination of the edge, and here\n    // we want to check if the field is overridden in the source of the edge. Hence us getting the matching\n    // definition in the input schema.\n    const typeInSource = schema.type(field.parent.name)\n    const fieldInSource = typeInSource && isObjectType(typeInSource) && typeInSource.field(field.name);\n    return fieldInSource && fieldInSource.appliedDirectivesOf(externalDirective)?.pop()?.arguments().reason === '[overridden]';\n  });\n}\n\nfunction hasValidDirectKeyEdge(\n  graph: QueryGraph,\n  from: Vertex,\n  to: string,\n  conditionResolver: ConditionResolver,\n  maxCost: number\n): boolean {\n  for (const edge of graph.outEdges(from)) {\n    if (edge.transition.kind !== 'KeyResolution' || edge.tail.source !== to) {\n      continue;\n    }\n    const resolution = conditionResolver(edge, emptyContext, [], []);\n    if (!resolution.satisfied) {\n      continue;\n    }\n    // During composition validation, we consider all conditions to have cost 1.\n    if (resolution.cost <= maxCost) {\n      return true;\n    }\n  }\n  return false;\n}\n\nfunction advancePathWithDirectTransition<V extends Vertex>(\n  path: GraphPath<Transition, V>,\n  transition: Transition,\n  conditionResolver: ConditionResolver,\n  overrideConditions: Map<string, boolean>,\n) : GraphPath<Transition, V>[] | UnadvanceableClosures {\n  assert(transition.collectOperationElements, \"Supergraphs shouldn't have transitions that don't collect elements\");\n\n  if (\n    transition.kind === 'FieldCollection'\n    && transition.definition.parent.name !== path.tail.type.name\n    && isCompositeType(path.tail.type)\n    && !path.tailIsInterfaceObject()\n  ) {\n    // Usually, when we collect a field, the path should already be on the type of that field.\n    // But one exception is due to the fact that a type condition may be \"absorbed\" by an\n    // @interfaceObject, and once we'we taken a key on the interface to another subgraph\n    // (the tail is not the interface object anymore), we need to \"restore\" the type condition\n    // first.\n    const updatedPath = advancePathWithDirectTransition(\n      path,\n      new DownCast(path.tail.type, transition.definition.parent),\n      conditionResolver,\n      overrideConditions,\n    );\n    // The case we described above should be the only case we capture here, and so the current\n    // subgraph must have the implementation type (it may not have the field we want, but it\n    // must have the type) and so we should be able to advance to it.\n    assert(!isUnadvanceableClosures(updatedPath), () => `Advancing ${path} for ${transition} gave ${updatedPath}`);\n    // Also note that there is currently no case where we should have more that one option.\n    assert(updatedPath.length === 1, () => `Expect one path, got ${updatedPath.length}`)\n    path = updatedPath[0];\n    // We can now continue on dealing with the actual field.\n  }\n\n  if (\n    transition.kind === 'DownCast'\n    && transition.castedType.name === path.tail.type.name\n  ) {\n    // Due to output type covariance, a downcast supergraph transition may be a no-op on the\n    // subgraph path. In these cases, we effectively ignore the type condition.\n    return [path];\n  }\n\n  const options: GraphPath<Transition, V>[] = [];\n  const deadEndClosures: UnadvanceableClosure[] = [];\n\n  for (const edge of path.nextEdges()) {\n    // The edge must match the transition. If it doesn't, we cannot use it.\n    if (!edge.matchesSupergraphTransition(transition)) {\n      continue;\n    }\n\n    if (\n      edge.overrideCondition\n      && !edge.satisfiesOverrideConditions(overrideConditions)\n    ) {\n      deadEndClosures.push(() => {\n        return {\n          destSubgraph: edge.tail.source,\n          sourceSubgraph: edge.head.source,\n          reason: UnadvanceableReason.UNSATISFIABLE_OVERRIDE_CONDITION,\n          // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n          details: `Unable to take edge ${edge.toString()} because override condition \"${edge.overrideCondition!.label}\" is ${overrideConditions.get(edge.overrideCondition!.label)}`,\n        };\n      });\n      continue;\n    }\n\n    // Additionally, we can only take an edge if we can satisfy its conditions.\n    const conditionResolution = canSatisfyConditions(path, edge, conditionResolver, emptyContext, [], [], getFieldParentTypeForEdge);\n    if (conditionResolution.satisfied) {\n      options.push(path.add(transition, edge, conditionResolution));\n    } else {\n      deadEndClosures.push(() => {\n        switch (edge.transition.kind) {\n          case 'FieldCollection':\n            {\n              // Condition on a field means a @require\n              const field = edge.transition.definition;\n              const parentTypeInSubgraph = path.graph.sources.get(edge.head.source)!.type(field.parent.name)! as CompositeType;\n              const details = conditionResolution.unsatisfiedConditionReason === UnsatisfiedConditionReason.NO_POST_REQUIRE_KEY\n                ? `@require condition on field \"${field.coordinate}\" can be satisfied but missing usable key on \"${parentTypeInSubgraph}\" in subgraph \"${edge.head.source}\" to resume query`\n                : conditionResolution.unsatisfiedConditionReason === UnsatisfiedConditionReason.NO_CONTEXT_SET\n                ? `could not find a match for required context for field \"${field.coordinate}\"`\n                // TODO: This isn't necessarily just because an @requires\n                // condition was unsatisfied, but could also be because a\n                // @fromContext condition was unsatisfied.\n                : `cannot satisfy @require conditions on field \"${field.coordinate}\"${warnOnKeyFieldsMarkedExternal(parentTypeInSubgraph)}`;\n              return {\n                sourceSubgraph: edge.head.source,\n                destSubgraph: edge.head.source,\n                reason: UnadvanceableReason.UNSATISFIABLE_REQUIRES_CONDITION,\n                details\n              };\n            }\n          case 'InterfaceObjectFakeDownCast':\n            {\n              // The condition on such edge is only __typename, so it essentially means that an @interfaceObject exists but there is no reachable subgraph\n              // with a @key on an interface to find out proper implementations.\n              const details = conditionResolution.unsatisfiedConditionReason === UnsatisfiedConditionReason.NO_POST_REQUIRE_KEY\n                ? `@interfaceObject type \"${edge.transition.sourceType.coordinate}\" misses a resolvable key to resume query once the implementation type has been resolved`\n                : `no subgraph can be reached to resolve the implementation type of @interfaceObject type \"${edge.transition.sourceType.coordinate}\"`;\n              return {\n                sourceSubgraph: edge.head.source,\n                destSubgraph: edge.head.source,\n                reason: UnadvanceableReason.UNRESOLVABLE_INTERFACE_OBJECT,\n                details\n              };\n            }\n          default:\n            assert(false, () => `Shouldn't have conditions on direct transition ${transition}`);\n        }\n      });\n    }\n  }\n  if (options.length > 0) {\n    return options;\n  }\n\n  return new UnadvanceableClosures(() => {\n    const deadEnds = new UnadvanceableClosures(deadEndClosures).toUnadvanceables().reasons;\n    if (deadEnds.length > 0) {\n      return deadEnds;\n    } else {\n      let details: string;\n      const subgraph = path.tail.source;\n      if (transition.kind === 'FieldCollection') {\n        const schema = path.graph.sources.get(subgraph)!;\n        const fieldTypeName = transition.definition.parent.name;\n        const typeInSubgraph = schema.type(fieldTypeName);\n        if (!typeInSubgraph && path.tail.type.name !== fieldTypeName) {\n          // This is due to us looking for an implementation field, but the subgraph not having that implementation because\n          // it uses @interfaceObject on an interface of that implementation.\n          details = `cannot find implementation type \"${fieldTypeName}\" (supergraph interface \"${path.tail.type.name}\" is declared with @interfaceObject in \"${subgraph}\")`;\n        } else {\n          const fieldInSubgraph = typeInSubgraph && isCompositeType(typeInSubgraph)\n            ? typeInSubgraph.field(transition.definition.name)\n            : undefined;\n  \n          if (fieldInSubgraph) {\n            // the subgraph has the field but no corresponding edge. This should only happen if the field is external.\n            const externalDirective = fieldInSubgraph.appliedDirectivesOf(federationMetadata(fieldInSubgraph.schema())!.externalDirective()).pop();\n            assert(\n              externalDirective,\n              () => `${fieldInSubgraph.coordinate} in ${subgraph} is not external but there is no corresponding edge (edges from ${path} = [${path.nextEdges().join(', ')}])`\n            );\n            // but the field is external in the \"subgraph-extracted-from-the-supergraph\", but it might have been forced to an external\n            // due to being a used-overriden field, in which case we want to amend the message to avoid confusing the user.\n            // Note that the subgraph extraction marks such \"forced external due to being overriden\" by setting the \"reason\" to \"[overridden]\".\n            const overriddingSources = externalDirective.arguments().reason === '[overridden]'\n              ? findOverriddingSourcesIfOverridden(fieldInSubgraph, subgraph, path.graph.sources)\n              : [];\n            if (overriddingSources.length > 0) {\n              details = `field \"${transition.definition.coordinate}\" is not resolvable because it is overridden by ${printSubgraphNames(overriddingSources)}`;\n            } else {\n              details = `field \"${transition.definition.coordinate}\" is not resolvable because marked @external`;\n            }\n          } else {\n            details = `cannot find field \"${transition.definition.coordinate}\"`;\n          }\n        }\n      } else {\n        assert(transition.kind === 'DownCast', () => `Unhandled direct transition ${transition} of kind ${transition.kind}`);\n        details = `cannot find type \"${transition.castedType}\"`;\n      }\n      return {\n        sourceSubgraph: subgraph,\n        destSubgraph: subgraph,\n        reason: UnadvanceableReason.NO_MATCHING_TRANSITION,\n        details\n      };\n    }\n  });\n\n}\n\nfunction findOverriddingSourcesIfOverridden(\n  field: FieldDefinition<CompositeType>,\n  fieldSource: string,\n  sources: ReadonlyMap<string, Schema>,\n): string[] {\n  return [...sources.entries()]\n    .map(([name, schema]) => {\n      if (name === FEDERATED_GRAPH_ROOT_SOURCE || name === fieldSource) {\n        return undefined;\n      }\n      const sourceMetadata = federationMetadata(schema)!;\n      const typeInSource = schema.type(field.parent.name);\n      if (!typeInSource || !isObjectType(typeInSource)) {\n        return undefined;\n      }\n      const fieldInSource = typeInSource.field(field.name);\n      const isOverriddingSource = fieldInSource?.appliedDirectivesOf(sourceMetadata.overrideDirective())?.pop()?.arguments()?.from === fieldSource;\n      return isOverriddingSource ? name : undefined;\n    })\n    .filter((name) => !!name) as string[];\n}\n\nfunction warnOnKeyFieldsMarkedExternal(type: CompositeType): string {\n  // Because fed 1 used to (somewhat wrongly) require @external on key fields of type extension and because fed 2 allows you\n  // to avoid type extensions, users upgrading might try to remove `extend` from their schema, but forgot to remove the @external\n  // on their key field. The problem is that doing that make the key field truly external, and that could easily make @require\n  // condition no satisfiable (because the key you'd need to get the require is now external). To help user locate that mistake\n  // we add a specific pointer to this potential problem is the type is indeed an entity.\n  const metadata = federationMetadata(type.schema());\n  assert(metadata, \"Type should originate from a federation subgraph schema\");\n  const keyDirective = metadata.keyDirective();\n  const keys = type.appliedDirectivesOf(keyDirective);\n  if (keys.length === 0) {\n    return \"\";\n  }\n  const keyFieldMarkedExternal: string[] = [];\n  for (const key of keys) {\n    const fieldSet = parseFieldSetArgument({ parentType: type, directive: key });\n    for (const selection of fieldSet.selections()) {\n      if (selection.kind === 'FieldSelection' && selection.element.definition.hasAppliedDirective(metadata.externalDirective())) {\n        const fieldName = selection.element.name;\n        if (!keyFieldMarkedExternal.includes(fieldName)) {\n          keyFieldMarkedExternal.push(fieldName);\n        }\n      }\n    }\n  }\n  if (keyFieldMarkedExternal.length === 0) {\n    return \"\";\n  }\n  const printedFields = keyFieldMarkedExternal.map(f => `\"${f}\"`).join(', ');\n  const fieldWithPlural = keyFieldMarkedExternal.length === 1 ? 'field' : 'fields';\n  return ` (please ensure that this is not due to key ${fieldWithPlural} ${printedFields} being accidentally marked @external)`;\n}\n\nexport function getLocallySatisfiableKey(graph: QueryGraph, typeVertex: Vertex): SelectionSet | undefined  {\n  const type = typeVertex.type as CompositeType;\n  const schema = graph.sources.get(typeVertex.source);\n  const metadata = schema ? federationMetadata(schema) : undefined;\n  assert(metadata, () => `Could not find federation metadata for source ${typeVertex.source}`);\n  const keyDirective = metadata.keyDirective();\n  for (const key of type.appliedDirectivesOf(keyDirective)) {\n    const selection = parseFieldSetArgument({ parentType: type, directive: key });\n    if (!metadata.selectionSelectsAnyExternalField(selection)) {\n      return selection;\n    }\n  }\n  return undefined;\n}\n\nfunction canSatisfyConditions<TTrigger, V extends Vertex, TNullEdge extends null | never = never>(\n  path: GraphPath<TTrigger, V, TNullEdge>,\n  edge: Edge,\n  conditionResolver: ConditionResolver,\n  context: PathContext,\n  excludedEdges: ExcludedDestinations,\n  excludedConditions: ExcludedConditions,\n  getFieldParentType: (trigger: TTrigger) => CompositeType | null,\n): ConditionResolution {\n  const { conditions, requiredContexts } = edge;\n  if (!conditions && requiredContexts.length === 0) {\n    return noConditionsResolution;\n  }\n  \n  let totalCost = 0;\n  const contextMap = new Map<string, ContextMapEntry>();\n  \n  if (requiredContexts.length > 0) {\n    // if one of the conditions fails to satisfy, it's ok to bail\n    let someSelectionUnsatisfied = false;\n    for (const cxt of requiredContexts) {\n      let levelsInQueryPath = 0;\n      let levelsInDataPath = 0;\n      for (const [e, trigger] of [...path].reverse()) {\n        const parentType = getFieldParentType(trigger);\n        levelsInQueryPath += 1;\n        if (parentType) {\n          levelsInDataPath += 1;\n        }\n        if (e !== null && !contextMap.has(cxt.namedParameter) && !someSelectionUnsatisfied) {\n          const matches = Array.from(cxt.typesWithContextSet).some(t => {\n            if (parentType) {\n              const parentInSupergraph = path.graph.schema.type(parentType.name)!;\n              if (parentInSupergraph.name === t) {\n                return true;\n              }\n              if (isObjectType(parentInSupergraph) || isInterfaceType(parentInSupergraph)) {\n                if (parentInSupergraph.interfaces().some(i => i.name === t)) {\n                  return true;\n                }\n              }\n              const tInSupergraph = parentInSupergraph.schema().type(t);\n              if (tInSupergraph && isUnionType(tInSupergraph)) {\n                return tInSupergraph.types().some(t => t.name === parentType.name);              \n              }\n            }\n            return false;\n          });\n          if (parentType && matches) {\n            const parentInSupergraph = path.graph.schema.type(parentType.name)!;\n            assert(isCompositeType(parentInSupergraph), \"Parent type should be composite type\");\n            let selectionSet = parseSelectionSet({ parentType: parentInSupergraph, source: cxt.selection });\n            \n            // We want to ignore type conditions that are impossible/don't intersect with the parent type\n            selectionSet = selectionSet.lazyMap((selection): Selection | undefined => {\n              if (selection.kind === 'FragmentSelection') {\n                if (selection.element.typeCondition && isObjectType(selection.element.typeCondition)) {\n                  if (!possibleRuntimeTypes(parentInSupergraph).includes(selection.element.typeCondition)) {\n                    return undefined;\n                  }\n                }\n              }\n              return selection;\n            })\n            const resolution = conditionResolver(e, context, excludedEdges, excludedConditions, selectionSet);\n            assert(edge.transition.kind === 'FieldCollection', () => `Expected edge to be a FieldCollection edge, got ${edge.transition.kind}`);\n            \n            const argIndices = path.graph.subgraphToArgIndices.get(cxt.subgraphName);\n            assert(argIndices, () => `Expected to find arg indices for subgraph ${cxt.subgraphName}`);\n            \n            const id = argIndices.get(cxt.coordinate);\n            assert(id !== undefined, () => `Expected to find arg index for ${cxt.coordinate}`);\n            contextMap.set(cxt.namedParameter, { selectionSet, levelsInDataPath, levelsInQueryPath, inboundEdge: e, pathTree: resolution.pathTree, paramName: cxt.namedParameter, id, argType: cxt.argType });\n            someSelectionUnsatisfied = someSelectionUnsatisfied || !resolution.satisfied;\n            if (resolution.cost === -1 || totalCost === -1) {\n              totalCost = -1;\n            } else {\n              totalCost += resolution.cost;            \n            }\n          }\n        }\n      }\n    }\n    \n    if (requiredContexts.some(c => !contextMap.has(c.namedParameter))) {\n      // in this case there is a context that is unsatisfied. Return no path.\n      debug.groupEnd('@fromContext requires a context that is not set in graph path');\n      return { ...unsatisfiedConditionsResolution, unsatisfiedConditionReason: UnsatisfiedConditionReason.NO_CONTEXT_SET };\n    }\n    \n    if (someSelectionUnsatisfied) {\n      debug.groupEnd('@fromContext selection set is unsatisfied');\n      return { ...unsatisfiedConditionsResolution };\n    }\n    \n    // it's possible that we will need to create a new fetch group at this point, in which case we'll need to collect the keys\n    // to jump back to this object as a precondition for satisfying it.    \n    debug.log('@fromContext conditions are satisfied, but validating post-context key.');\n    const postContextKeyCondition = getLocallySatisfiableKey(path.graph, edge.head);\n    if (!postContextKeyCondition) {\n      debug.groupEnd('Post-context conditions cannot be satisfied');\n      return { ...unsatisfiedConditionsResolution, unsatisfiedConditionReason: UnsatisfiedConditionReason.NO_POST_REQUIRE_KEY };\n    }\n\n    if (!conditions) {\n      return { contextMap, cost: totalCost, satisfied: true };\n    }\n  }\n  \n  debug.group(() => `Checking conditions ${conditions} on edge ${edge}`);\n  const resolution = conditionResolver(edge, context, excludedEdges, excludedConditions);\n  if (!resolution.satisfied) {\n    debug.groupEnd('Conditions are not satisfied');\n    return unsatisfiedConditionsResolution;\n  }\n  const pathTree = resolution.pathTree;\n  const lastEdge = path.lastEdge();\n  if (edge.transition.kind === 'FieldCollection'\n    && lastEdge !== null\n    && lastEdge?.transition.kind !== 'KeyResolution'\n    && (!pathTree || pathTree.isAllInSameSubgraph())) {\n\n    debug.log('@requires conditions are satisfied, but validating post-require key.');\n    const postRequireKeyCondition = getLocallySatisfiableKey(path.graph, edge.head);\n    if (!postRequireKeyCondition) {\n      debug.groupEnd('Post-require conditions cannot be satisfied');\n      return { ...unsatisfiedConditionsResolution, unsatisfiedConditionReason: UnsatisfiedConditionReason.NO_POST_REQUIRE_KEY };\n    }\n\n    // We're in a case where we have a `@require` (we have a condition but we're a 'FieldCollection') and we\n    // have to jump to other subgraph to satisfy the require, which means we need to use a key on \"the current\n    // subgraph\" to resume collecting the field with the require. `getLocallySatisfiableKey` essentially tells\n    // us that we have such key, and that's good enough here. Not that the way the code is organised, we don't\n    // use an actual edge of the query graph, so we cannot use `conditionResolver` and so it's not easy to\n    // get a proper cost or tree. That's ok in the sense that the cost of the key is negligible because we\n    // know it's a \"local\" one (there is no subgraph jump) and the code to build plan will deal with adding\n    // that key anyway (so not having the tree is ok).\n    // TODO(Sylvain): the whole hanlding of @require is a bit too complex and hopefully we might be able to\n    // clean that up, but it's unclear to me how at the moment and it may not be a small change so this will\n    // have to do for now.\n  }\n\n  debug.groupEnd('Conditions satisfied');\n  return { ...resolution, contextMap, cost: totalCost + resolution.cost };\n}\n\nfunction isTerminalOperation(operation: OperationElement): boolean {\n  return operation.kind === 'Field' && isLeafType(baseType(operation.definition.type!));\n}\n\nexport type SimultaneousPaths<V extends Vertex = Vertex> = OpGraphPath<V>[];\n\ntype OpIndirectPaths<V extends Vertex> = IndirectPaths<OpTrigger, V, null, never>;\n\n/**\n * Memoize the computation of indirect paths, like `TransitionPathWithLazyIndirectPaths` does, but for query planning.\n *\n * Here again, this is an optimization that avoids computing indirect paths eagerly (since we may not need them) but\n  * ensures we don't re-do their computation multiple times when we do need them multiple times.\n */\nexport class SimultaneousPathsWithLazyIndirectPaths<V extends Vertex = Vertex> {\n  private lazilyComputedIndirectPaths: OpIndirectPaths<V>[];\n\n  constructor(\n    readonly paths: SimultaneousPaths<V>,\n    readonly context: PathContext,\n    readonly conditionResolver: ConditionResolver,\n    readonly excludedNonCollectingEdges: ExcludedDestinations = [],\n    readonly excludedConditionsOnNonCollectingEdges: ExcludedConditions = [],\n    readonly overrideConditions: Map<string, boolean>,\n  ) {\n    this.lazilyComputedIndirectPaths = new Array(paths.length);\n  }\n\n  // For a given \"input\" path (identified by an idx in `paths`), each of its indirect options.\n  indirectOptions(updatedContext: PathContext, pathIdx: number): OpIndirectPaths<V> {\n    // Note that the provided context will usually be one we had during construction (the `updatedContext` will be `this.context` updated\n    // by whichever operation we're looking at, but only operation with a @skip/@include will change the context so it's pretty rare),\n    // which is why we save recomputation by caching the computed value in that case, but in case it's different, we compute without caching.\n    if (updatedContext !== this.context) {\n      return this.computeIndirectPaths(pathIdx);\n    }\n    if (!this.lazilyComputedIndirectPaths[pathIdx]) {\n      this.lazilyComputedIndirectPaths[pathIdx] = this.computeIndirectPaths(pathIdx);\n    }\n    return this.lazilyComputedIndirectPaths[pathIdx];\n  }\n\n  private computeIndirectPaths(idx: number): OpIndirectPaths<V>  {\n    return advancePathWithNonCollectingAndTypePreservingTransitions(\n      this.paths[idx],\n      this.context,\n      this.conditionResolver,\n      this.excludedNonCollectingEdges,\n      this.excludedConditionsOnNonCollectingEdges,\n      // the transitions taken by this function are non collecting transitions, and we ship the context as trigger (a slight hack admittedly,\n      // but as we'll need the context handy for keys ...).\n      (_t, context) => context,\n      opPathTriggerToEdge,\n      this.overrideConditions,\n      getFieldParentTypeForOpTrigger,\n    );\n  }\n\n  toString(): string {\n    return simultaneousPathsToString(this.paths);\n  }\n}\n\nexport function simultaneousPathsToString(simultaneousPaths: SimultaneousPaths<any> | SimultaneousPathsWithLazyIndirectPaths<any>, indentOnNewLine: string=\"\"): string {\n  const paths = Array.isArray(simultaneousPaths) ? simultaneousPaths : simultaneousPaths.paths;\n  if (paths.length === 0) {\n    return '<no path>';\n  }\n  if (paths.length === 1) {\n    return paths[0].toString();\n  }\n  return `{\\n${indentOnNewLine}  ` + paths.join(`\\n${indentOnNewLine}  `) + `\\n${indentOnNewLine}}`;\n}\n\nexport function advanceOptionsToString(options: (SimultaneousPaths<any> | SimultaneousPathsWithLazyIndirectPaths<any> | GraphPath<any>)[] | undefined): string {\n  if (!options) {\n    return '<no options>';\n  }\n  if (options.length === 0) {\n    return '<unsatisfiable branch>';\n  }\n  if (options.length === 1) {\n    return '[' + options[0] + ']';\n  }\n  return '[\\n  ' + options.map(opt => Array.isArray(opt) ? simultaneousPathsToString(opt, \"  \") : opt.toString()).join('\\n  ') + '\\n]';\n}\n\n// Given a list of just computed indirect paths and a field that we're trying to advance after those paths, this\n// method fields any path that should note be considered.\n//\n// Currently, this handle the case where the key used at the end of the indirect path contains (at top level) the field\n// being queried. Or to make this more concrete, if we're trying to collect field `id`, and the path last edge was using\n// key `id`, then we can ignore that path because this imply that there is a way to `id` \"some other way\" (also see\n// the `does not evaluate plans relying on a key field to fetch that same field` test in `buildPlan` for more details).\nfunction filterNonCollectingPathsForField<V extends Vertex>(\n  paths: OpIndirectPaths<V>,\n  field: Field,\n): OpIndirectPaths<V> {\n  // We only handle leafs. Things are more complex non-leaf.\n  if (!field.isLeafField()) {\n    return paths;\n  }\n\n  const filtered = paths.paths.filter((p) => {\n    const lastEdge = p.lastEdge();\n    if (!lastEdge || lastEdge.transition.kind !== 'KeyResolution') {\n      return true;\n    }\n\n    const conditions = lastEdge.conditions;\n    return !(conditions && conditions.containsTopLevelField(field));\n  });\n  return filtered.length === paths.paths.length\n    ? paths\n    : {\n      ...paths,\n      paths: filtered\n    };\n\n}\n\n// Returns undefined if the operation cannot be dealt with/advanced. Otherwise, it returns a list of options we can be in after advancing the operation, each option\n// being a set of simultaneous paths in the subgraphs (a single path in the simple case, but type exploding may make us explore multiple paths simultaneously).\n// The lists of options can be empty, which has the special meaning that the operation is guaranteed to have no results (it corresponds to unsatisfiable conditions),\n// meaning that as far as query planning goes, we can just ignore the operation but otherwise continue.\nexport function advanceSimultaneousPathsWithOperation<V extends Vertex>(\n  supergraphSchema: Schema,\n  subgraphSimultaneousPaths: SimultaneousPathsWithLazyIndirectPaths<V>,\n  operation: OperationElement,\n  overrideConditions: Map<string, boolean>,\n) : SimultaneousPathsWithLazyIndirectPaths<V>[] | undefined {\n  debug.group(() => `Trying to advance ${simultaneousPathsToString(subgraphSimultaneousPaths)} for ${operation}`);\n  const updatedContext = subgraphSimultaneousPaths.context.withContextOf(operation);\n  const optionsForEachPath: SimultaneousPaths<V>[][] = [];\n  for (const [i, path] of subgraphSimultaneousPaths.paths.entries()) {\n    let options: SimultaneousPaths<V>[] | undefined = undefined;\n\n    debug.group(() => `Computing options for ${path}`);\n    const shouldReenterSubgraph = path.deferOnTail && operation.kind === 'Field';\n    // If we're just entering a deferred section, then we will need to re-enter subgraphs, so we should not consider\n    // direct options and instead force an indirect path.\n    if (!shouldReenterSubgraph) {\n      debug.group(() => `Direct options`);\n      const { options: advanceOptions, hasOnlyTypeExplodedResults } = advanceWithOperation(\n        supergraphSchema,\n        path,\n        operation,\n        updatedContext,\n        subgraphSimultaneousPaths.conditionResolver,\n        overrideConditions,\n      );\n      options = advanceOptions;\n      debug.groupEnd(() => advanceOptionsToString(options));\n      // If we got some options, there is number of cases where there is no point looking for indirect paths:\n      // - if the operation is terminal: this mean we just found a direct edge that is terminal, so no\n      //   indirect options could be better (this is no true for non-terminal where the direct route may\n      //   end up being a dead end later). One exception however is when `advanceWithOperation` type-exploded (meaning\n      //   that're on an interface), because in that case, the type-exploded options have already taken indirect edges\n      //   into account, so it's possible that an indirect edge _from the interface_ could be better, but only if\n      //   there wasn't a \"true\" direct edge on the interface, which is what `hasOnlyTypeExplodedResults` tells us.\n      // - if we get options, but an empty set of them, which signifies the operation correspond to unsatisfiable\n      //   conditions and we can essentially ignore it.\n      // - if the operation is a fragment in general: if we were able to find a direct option, that means the type\n      //   is known in the \"current\" subgraph, and so we'll still be able to take any indirect edges that we could\n      //   take now later, for the follow-up operation. And pushing the decision will give us more context and may\n      //   avoid a bunch of state explosion in practice.\n      if (options && (options.length === 0 || (isTerminalOperation(operation) && !hasOnlyTypeExplodedResults) || operation.kind === 'FragmentElement')) {\n        debug.groupEnd(() => `Final options for ${path}: ${advanceOptionsToString(options)}`);\n        // Note that options is empty, that means this particular \"branch\" is unsatisfiable, so we should just ignore it.\n        if (options.length > 0) {\n          optionsForEachPath.push(options);\n        }\n        continue;\n      }\n    }\n\n    // If there was not valid direct path (or we didn't check those because we enter a defer), that's ok, we'll just try with non-collecting edges.\n    options = options ?? [];\n    if (operation.kind === 'Field') {\n      debug.group(`Computing indirect paths:`);\n      // Then adds whatever options can be obtained by taking some non-collecting edges first.\n      const pathsWithNonCollecting = filterNonCollectingPathsForField(\n        subgraphSimultaneousPaths.indirectOptions(updatedContext, i),\n        operation\n      );\n      debug.groupEnd(() => pathsWithNonCollecting.paths.length == 0 ? `no indirect paths` : `${pathsWithNonCollecting.paths.length} indirect paths`);\n      if (pathsWithNonCollecting.paths.length > 0) {\n        debug.group('Validating indirect options:');\n        for (const pathWithNonCollecting of pathsWithNonCollecting.paths) {\n          debug.group(() => `For indirect path ${pathWithNonCollecting}:`);\n          const { options: pathWithOperation } = advanceWithOperation(\n            supergraphSchema,\n            pathWithNonCollecting,\n            operation,\n            updatedContext,\n            subgraphSimultaneousPaths.conditionResolver,\n            overrideConditions,\n          );\n          // If we can't advance the operation after that path, ignore it, it's just not an option.\n          if (!pathWithOperation) {\n            debug.groupEnd(() => `Ignoring: cannot be advanced with ${operation}`);\n            continue;\n          }\n          debug.groupEnd(() => `Adding valid option: ${pathWithOperation}`);\n          // advancedWithOperation can return an empty list only if the operation if a fragment with a condition that, on top of the \"current\" type\n          // is unsatisfiable. But as we've only taken type preserving transitions, we cannot get an empty results at this point if we haven't\n          // had one when testing direct transitions above (in which case we have exited the method early).\n          assert(pathWithOperation.length > 0, () => `Unexpected empty options after non-collecting path ${pathWithNonCollecting} for ${operation}`);\n\n          // There is a special case we can deal with now. Namely, suppose we have a case where a query\n          // is reaching an interface I in a subgraph S1, we query some field of that interface x, and\n          // say that x is provided in subgraph S2 but by an @interfaceObject for I.\n          // As we look for direct options for I.x in S1 initially, as we didn't found `x`, we will have tried\n          // to type-explode I (in say implementation A and B). And in some case doing so is necessary, but\n          // it may also lead for the type-exploding option to look like:\n          //  [\n          //    I(S1) -[... on A]-> A(S1) -[key]-> I(S2) -[x] -> Int(S2),\n          //    I(S1) -[... on B]-> B(S1) -[key]-> I(S2) -[x] -> Int(S2),\n          //  ]\n          // But as we look at indirect option now (still from I in S1), we will note that we can also\n          // do:\n          //    I(S1) -[key]-> I(S2) -[x] -> Int(S2),\n          // And while both options are technically valid, the new one really subsume the first one: there\n          // is no point in type-exploding to take a key to the same exact subgraph if using the key\n          // on the interface directly works.\n          //\n          // So here, we look for that case and remove any type-exploding option that the new path\n          // render unecessary.\n          // Do note that we only make that check when the new option is a single-path option, because\n          // this gets kind of complicated otherwise.\n          if (pathWithNonCollecting.tailIsInterfaceObject()) {\n            for (const indirectOption of pathWithOperation) {\n              if (indirectOption.length === 1) {\n                options = options.filter((opt) => !opt.every((p) => indirectOption[0].isEquivalentSaveForTypeExplosionTo(p)));\n              }\n            }\n          }\n          options = options.concat(pathWithOperation);\n        }\n        debug.groupEnd();\n      }\n    }\n\n    // If we were entering a @defer, we've skipped the potential \"direct\" options because we need an \"indirect\" one (a key/root query)\n    // to be able to actualy defer. But in rare cases, it's possible we actually couldn't resolve the key fields needed to take a key\n    // but could still find a direct path. If so, it means it's a corner case where we cannot do query-planner-based-@defer and have\n    // to fall back on not deferring.\n    if (options.length === 0 && shouldReenterSubgraph) {\n      debug.group(() => `Cannot defer (no indirect options); falling back to direct options`);\n      const { options: advanceOptions } = advanceWithOperation(\n        supergraphSchema,\n        path,\n        operation,\n        updatedContext,\n        subgraphSimultaneousPaths.conditionResolver,\n        overrideConditions,\n      );\n      options = advanceOptions ?? [];\n      debug.groupEnd(() => advanceOptionsToString(options));\n    }\n\n    // At this point, if options is empty, it means we found no ways to advance the operation for this path, so we should return undefined.\n    if (options.length === 0) {\n      debug.groupEnd(); // end of this input path\n      debug.groupEnd(() => `No valid options for ${operation}, aborting operation ${operation}`);\n      return undefined;\n    } else {\n      debug.groupEnd(() => advanceOptionsToString(options));\n      optionsForEachPath.push(options);\n    }\n  }\n\n  const allOptions: SimultaneousPaths<V>[] = flatCartesianProduct(optionsForEachPath);\n  debug.groupEnd(() => advanceOptionsToString(allOptions));\n  return createLazyOptions(\n    allOptions,\n    subgraphSimultaneousPaths,\n    updatedContext,\n    subgraphSimultaneousPaths.overrideConditions,\n  );\n}\n\n\nexport function createInitialOptions<V extends Vertex>(\n  initialPath: OpGraphPath<V>,\n  initialContext: PathContext,\n  conditionResolver: ConditionResolver,\n  excludedEdges: ExcludedDestinations,\n  excludedConditions: ExcludedConditions,\n  overrideConditions: Map<string, boolean>,\n  initialSubgraphConstraint: string | null,\n): SimultaneousPathsWithLazyIndirectPaths<V>[] {\n  const lazyInitialPath = new SimultaneousPathsWithLazyIndirectPaths(\n    [initialPath],\n    initialContext,\n    conditionResolver,\n    excludedEdges,\n    excludedConditions,\n    overrideConditions,\n  );\n  if (isFederatedGraphRootType(initialPath.tail.type)) {\n    let initialOptions = lazyInitialPath.indirectOptions(initialContext, 0);\n    if (initialSubgraphConstraint !== null) {\n      initialOptions.paths = initialOptions\n        .paths\n        .filter((path) => path.tail.source === initialSubgraphConstraint);\n    }\n    return createLazyOptions(initialOptions.paths.map(p => [p]), lazyInitialPath, initialContext, overrideConditions);\n  } else {\n    return [lazyInitialPath];\n  }\n}\n\nfunction createLazyOptions<V extends Vertex>(\n  options: SimultaneousPaths<V>[],\n  origin: SimultaneousPathsWithLazyIndirectPaths<V>,\n  context: PathContext,\n  overrideConditions: Map<string, boolean>,\n) : SimultaneousPathsWithLazyIndirectPaths<V>[] {\n  return options.map(option => new SimultaneousPathsWithLazyIndirectPaths(\n    option,\n    context,\n    origin.conditionResolver,\n    origin.excludedNonCollectingEdges,\n    origin.excludedConditionsOnNonCollectingEdges,\n    overrideConditions,\n  ));\n}\n\nfunction opPathTriggerToEdge(graph: QueryGraph, vertex: Vertex, trigger: OpTrigger, overrideConditions: Map<string, boolean>): Edge | null | undefined {\n  if (trigger instanceof PathContext) {\n    return undefined;\n  }\n  if (trigger.kind === 'Field') {\n    return edgeForField(graph, vertex, trigger, overrideConditions);\n  } else {\n    return trigger.typeCondition ? edgeForTypeCast(graph, vertex, trigger.typeCondition.name) : null;\n  }\n}\n\n// This can be written more tersely with a bunch of reduce/flatMap and friends, but when interfaces type-explode into many\n// implementations, this can end up with fairly large arrays and be a bottleneck, and a more iterative version that pre-allocate\n// arrays is quite a bit faster.\nfunction flatCartesianProduct<V>(arr:V[][][]): V[][] {\n  const size = arr.length;\n  if (size === 0) {\n    return [];\n  }\n\n  // Track, for each element, at which index we are\n  const eltIndexes = new Array<number>(size);\n  let totalCombinations = 1;\n  for (let i = 0; i < size; ++i){\n    const eltSize = arr[i].length;\n    if(!eltSize) {\n      totalCombinations = 0;\n      break;\n    }\n    eltIndexes[i] = 0;\n    totalCombinations *= eltSize;\n  }\n\n  const product = new Array<V[]>(totalCombinations);\n  for (let i = 0; i < totalCombinations; ++i){\n    let itemSize = 0;\n    for (let j = 0; j < size; ++j) {\n      itemSize += arr[j][eltIndexes[j]].length;\n    }\n    const item = new Array<V>(itemSize);\n    let k = 0;\n    for (let j = 0; j < size; ++j) {\n      for (const v of arr[j][eltIndexes[j]]) {\n        item[k++] = v;\n      }\n    }\n    product[i] = item;\n\n    for (let idx = 0; idx < size; ++idx) {\n      if (eltIndexes[idx] == arr[idx].length - 1) {\n        eltIndexes[idx] = 0;\n      } else {\n        eltIndexes[idx] += 1;\n        break;\n      }\n    }\n  }\n  return product;\n}\n\nfunction anImplementationHasAProvides(fieldName: string, itf: InterfaceType): boolean {\n  const metadata = federationMetadata(itf.schema());\n  assert(metadata, \"Interface should have come from a federation subgraph\");\n  for (const implem of itf.possibleRuntimeTypes()) {\n    const field = implem.field(fieldName);\n    // Note that this should only be called if field exists, but no reason to fail otherwise.\n    if (field && field.hasAppliedDirective(metadata.providesDirective())) {\n      return true;\n    }\n  }\n  return false;\n}\n\n/*\n * This method is used to detect the case where using an interface field \"directly\" could fail (lead to a dead end later for the quer path)\n * _while_ type-exploding may succeed.\n *\n * In general, taking a field from an interface directly or through it's implementation by type-exploding leads to the same option, and so\n * taking one or the other is more of a matter of \"which is more efficient\". But there is a special case where this may not be the case,\n * and this is:\n *  1. when the interface is implemented by an entity type.\n *  2. the field being looked at is @shareable.\n *  3. the field type has a different set of fields (and less fields) in the \"current\" subgraph than in another one.\n *\n * Consider for instance:\n * ```\n *   # Subgraph A\n *   type Query {\n *     i: I\n *   }\n  *\n *   interface I {\n *     s: S\n *   }\n *\n *   type T implements I @key(fields: \"id\") {\n *     id: ID!\n *     s: S @shareable\n *   }\n *\n *   type S @shareable {\n *     x: Int\n *   }\n * ```\n * ```\n *   # Subgraph B\n *   type T @key(fields: \"id\") {\n *     id: ID!\n *     s: S @shareable\n *   }\n *\n *   type S @shareable {\n *     x: Int\n *     y: Int\n *   }\n * ```\n * and suppose that `{ i { s { y } } }` is queried. If we follow `I.s` in subgraph A, then the `y` field\n * cannot be found, because `S` is not an entity (not that it could also be an entity but not have a usable\n * key between the 2 subgraphs) and so we cannot \"jump\" to subgraph B. However, if we \"type-explode\" into\n * implementation `T`, then we can jump to subgraph B from that, at which point we can reach `y`.\n *\n * So the goal of this method is to detect when we might be in such a case: when we are, we will have to\n * consider type-explosion on top of the direct route in case that direct route ends up \"not panning out\"\n * (note that by the time this method is called, we're only looking at the options for type `I.s`; we\n * do not know yet if `y` is queried next and so cannot tell if type-explosion will be necessary or not).\n */\nfunction anImplementationIsEntityWithFieldShareable<V extends Vertex>(path: OpGraphPath<V>, fieldName: string, itf: InterfaceType): boolean {\n  const metadata = federationMetadata(itf.schema());\n  assert(metadata, \"Interface should have come from a federation subgraph\");\n  for (const implem of itf.possibleRuntimeTypes()) {\n    if (!implem.hasAppliedDirective(metadata.keyDirective())) {\n      continue;\n    }\n    const field = implem.field(fieldName);\n    // Note that this should only be called if field exists, but no reason to fail otherwise.\n    if (!field || !field.hasAppliedDirective(metadata.shareableDirective())) {\n      continue;\n    }\n\n    // Returning `true` for this method has a cost: it will make us consider type-explosion for `itf`, and this can\n    // sometime lead to a large number of additional path to explore, which can have a substantial cost. So we want\n    // to limit it if we can avoid it. As it happens, we should return `true` if it is possible that \"something\"\n    // (some field) in the type of `field` is reachable in _another_ subgraph but no in the one of the current path.\n    // And while it's not trivial to check this in general, there is some easy case we can elimiate. For instance,\n    // if the type in the current subgraph has only leaf fields, we can check that all other subgraphs reachable\n    // from the implementation have the same set of leafs.\n    const type = baseType(field.type!);\n    if (isLeafType(type)) {\n      continue;\n    }\n    if (isObjectType(type) && type.fields().every((f) => isLeafType(baseType(f.type!)))) {\n      const fieldNames = new Set(type.fields().map((f) => f.name));\n      for (const v of path.graph.verticesForType(implem.name)) {\n        if (v.source === path.tail.source) {\n          continue;\n        }\n        const otherMetadata = federationMetadata(v.type.schema());\n        assert(otherMetadata, \"Type should have come from a federation subgraph\");\n        assert(isObjectType(v.type) || isInterfaceType(v.type), () => `${implem} is an object in ${path.tail.source} but a ${v.type.kind} in ${v.source}`);\n        const fieldInOther = v.type.field(fieldName);\n        if (!fieldInOther || !fieldInOther.hasAppliedDirective(otherMetadata.shareableDirective())) {\n          // The shareable field is actually not shared here (it's either not declared, or external), so we can ignore that subgraph.\n          continue;\n        }\n        const typeInOther = baseType(fieldInOther.type!);\n        if (typeInOther.name !== type.name || !(isObjectType(typeInOther) || isInterfaceType(typeInOther))) {\n          // We have a genuine difference here, so we should explore type explosion.\n          return true;\n        }\n        const otherNames = new Set(typeInOther.fields().map((f) => f.name));\n        if (!isSubset(fieldNames, otherNames)) {\n          // Same, we have a genuine difference.\n          return true;\n        }\n        // Note that if the type is the same and the fields too, then we know the type of those fields must be leaf type,\n        // or merging would have complained.\n      }\n      // So every other instance of the type\n      return false;\n    }\n    // Alright, we officially \"don't know\", so we return \"true\" so type-explosion is tested.\n    return true;\n  }\n  return false;\n}\n\nfunction isProvidedEdge(edge: Edge): boolean {\n  return edge.transition.kind === 'FieldCollection' && edge.transition.isPartOfProvide;\n}\n\n// The result has the same meaning than in advanceSimultaneousPathsWithOperation.\n// We also actually need to return a set of options of simultaneous paths. Cause when we type explode, we create simultaneous paths, but\n// as a field might be resolve by multiple subgraphs, we may have options created.\nfunction advanceWithOperation<V extends Vertex>(\n  supergraphSchema: Schema,\n  path: OpGraphPath<V>,\n  operation: OperationElement,\n  context: PathContext,\n  conditionResolver: ConditionResolver,\n  overrideConditions: Map<string, boolean>,\n) : {\n  options: SimultaneousPaths<V>[] | undefined,\n  hasOnlyTypeExplodedResults?: boolean,\n} {\n  debug.group(() => `Trying to advance ${path} directly with ${operation}`);\n\n  const currentType = path.tail.type;\n  if (isFederatedGraphRootType(currentType)) {\n    // We cannot advance any operation from there: we need to take the initial non-collecting edges first.\n    debug.groupEnd('Cannot advance federated graph root with direct operations');\n    return { options: undefined };\n  }\n\n  if (operation.kind === 'Field') {\n    const field = operation.definition;\n    switch (currentType.kind) {\n      case 'ObjectType':\n        // Just take the edge corresponding to the field, if it exists and can be used.\n        const edge = nextEdgeForField(path, operation, overrideConditions);\n        if (!edge) {\n          debug.groupEnd(() => `No edge for field ${field} on object type ${currentType}`);\n          return { options: undefined };\n        }\n\n        // If the current type is an @interfaceObject, it's possible that the requested field\n        // is a field of an implementation of the interface. Because we found an edge, we\n        // know that the interface has the field and we can use the edge, but we should redact\n        // the `operation` to use the current type field, so the operation does not continue\n        // referring to a type that is not in the current subgraph.\n        if (path.tailIsInterfaceObject() && field.parent.name !== currentType.name) {\n          const fieldOnCurrentType = currentType.field(field.name);\n          assert(fieldOnCurrentType, () => `We should not have found edge ${edge} for ${field} from ${path}`)\n          operation = operation.withUpdatedDefinition(fieldOnCurrentType);\n        }\n\n        const fieldPath = addFieldEdge(path, operation, edge, conditionResolver, context);\n        debug.groupEnd(() => fieldPath\n          ? `Collected field ${field} on object type ${currentType}`\n          : `Cannot satisfy @requires on field ${field} for object type ${currentType}`\n        );\n        return { options: pathAsOptions(fieldPath) };\n      case 'InterfaceType':\n        // Due to @interfaceObject, we could be in a case where the field asked is not on the interface but\n        // rather on one of it's implementation. This can happen if we just entered the subgraph on an interface @key\n        // and coming from an @interfaceObject. In that case, we'll skip checking for an interface direct edge and\n        // simply cast into that implementation below.\n        const fieldIsOfAnImplementation = field.parent.name !== currentType.name;\n\n        // First, we check if there is a direct edge from the interface (which only happens if we're in a subgraph that knows all of the\n        // implementations of that interface globally and all of them resolve the field).\n        // If there is one, then we have 2 options:\n        //  - either we take that edge,\n        //  - or we type-explode (like when we don't have a direct interface edge).\n        // We want to avoid looking at both options if we can avoid it because it multiplies planning work quickly if\n        // we always check both options. And in general, taking the interface edge is better than type explosion \"if it works\",\n        // so we distinguish a number of cases where we know that:\n        // - either type-exploding cannot work unless taking the interface edge also do (the `anImplementationIsEntityWithFieldShareable`)\n        // - or that type-exploding cannot be more efficient than the direct path (when no @provides are involved; if a provide is involved\n        //   in one of the implementation, then type-exploding may lead to a shorter overall plan thanks to that @provides)\n        const itfEdge = fieldIsOfAnImplementation ? undefined : nextEdgeForField(path, operation, overrideConditions);\n        let itfPath: OpGraphPath<V> | undefined = undefined;\n        let directPathOverrideTypeExplosion = false;\n        if (itfEdge) {\n          itfPath = addFieldEdge(path, operation, itfEdge, conditionResolver, context);\n          assert(itfPath, () => `Interface edge ${itfEdge} shouldn't have conditions`);\n          // There is 2 separate case where we going to do _both_ \"direct\" and \"type-exploding\" options:\n          // 1. if there is a @provides: in that case the \"type-exploding\" case can legit be more efficient and we want to\n          //   consider it \"all the way\"\n          // 2. in the sub-case of `!anImplementationIsEntityWithFieldShareable(...)`, where we want to have the type-exploding\n          //   option only for the case where the \"direct\" one fails later. But in that case, we'll remember that if the direct\n          //   option pan out, then we can ignore the type-exploding one.\n          // `directPathOverrideTypeExplosion` indicates that we're in the 2nd case above, not the 1st one.\n          directPathOverrideTypeExplosion =\n            field.name === typenameFieldName\n            || (!isProvidedEdge(itfEdge) && !anImplementationHasAProvides(field.name, currentType));\n          // We can special case terminal (leaf) fields: as long they have no @provides, then the path ends there and there is no need\n          // to check type explosion \"in case the direct path don't pan out\". Additionally, if we're not in the case where an implementation\n          // is an entity and the field is shareable, then there is no case where the direct case wouldn't \"pan out\" but the type-explosion\n          // would, so we can ignore type-exploding there too.\n          // TODO: We should re-assess this when we support @requires on interface fields (typically, should we even try to type-explode\n          // if the direct edge cannot be satisfied? Probably depends on the exact semantic of @requires on interface fields).\n          if (directPathOverrideTypeExplosion && (isLeafType(field.type!) || !anImplementationIsEntityWithFieldShareable(path, field.name, currentType))) {\n            debug.groupEnd(() => `Collecting (leaf) field ${field} on interface ${currentType} without type-exploding`);\n            return { options: pathAsOptions(itfPath) };\n          }\n          debug.log(() => `Collecting field ${field} on interface ${currentType} as 1st option`);\n        }\n\n        // There is 2 main cases to handle here:\n        // - the most common is that it's a field of the interface that is queried, and\n        //   so we should type-explode because either didn't had a direct edge, or @provides\n        //   makes it potentially worthwhile to check with type explosion.\n        // - but, as mentioned earlier, we could be in the case where the field queried is actually of one\n        //   of the implementation of the interface. In that case, we only want to consider that one\n        //   implementation.\n        let implementations: readonly ObjectType[];\n        if (fieldIsOfAnImplementation) {\n          assert(\n            isObjectType(field.parent) && path.tailPossibleRuntimeTypes().some((t) => t.name === field.parent.name),\n            () => `${field.coordinate} requested on ${currentType}, but ${field.parent} is not an implementation`\n          );\n          implementations = [ field.parent ];\n          debug.log(() => `Casting into requested type ${field.parent}`);\n        } else {\n          implementations = path.tailPossibleRuntimeTypes();\n          debug.log(() => !itfPath\n            ? `No direct edge: type exploding interface ${currentType} into possible runtime types [${implementations.join(', ')}]`\n            : `Type exploding interface ${currentType} into possible runtime types [${implementations.join(', ')}] as 2nd option`\n          );\n        }\n\n        // For all implementations, We need to call advanceSimultaneousPathsWithOperation on a made-up Fragment. If any\n        // gives use empty options, we bail.\n        const optionsByImplems: OpGraphPath<V>[][][] = [];\n        for (const implemType of implementations) {\n          const castOp = new FragmentElement(currentType, implemType.name);\n          debug.group(() => `Handling implementation ${implemType}`);\n          const implemOptions = advanceSimultaneousPathsWithOperation(\n            supergraphSchema,\n            new SimultaneousPathsWithLazyIndirectPaths([path], context, conditionResolver, [], [], overrideConditions),\n            castOp,\n            overrideConditions,\n          );\n          // If we find no option for that implementation, we bail (as we need to simultaneously advance all implementations).\n          if (!implemOptions) {\n            debug.groupEnd();\n            debug.groupEnd(() => `Cannot collect field ${field} from ${implemType}: stopping with options [${itfPath}]`);\n            return { options: pathAsOptions(itfPath) };\n          }\n          // If the new fragment makes it so that we're on an unsatisfiable branch, we just ignore that implementation.\n          if (implemOptions.length === 0) {\n            debug.groupEnd(() => `Cannot ever get ${implemType} from this branch, ignoring it`);\n            continue;\n          }\n          // For each option, we call advanceSimultaneousPathsWithOperation again on our own operation (the field),\n          // which gives us some options (or not and we bail).\n          let withField: SimultaneousPaths<V>[] = [];\n          debug.log(() => `Trying to collect ${field} from options ${advanceOptionsToString(implemOptions)}`);\n          for (const optPaths of implemOptions) {\n            debug.group(() => `For ${simultaneousPathsToString(optPaths)}`);\n            const withFieldOptions = advanceSimultaneousPathsWithOperation(\n              supergraphSchema,\n              optPaths,\n              operation,\n              overrideConditions,\n            );\n            if (!withFieldOptions) {\n              debug.groupEnd(() => `Cannot collect ${field}`);\n              continue;\n            }\n            // Advancing a field should never get us into an unsatisfiable condition. Only fragments can.\n            assert(withFieldOptions.length > 0, () => `Unexpected unsatisfiable path after ${optPaths} for ${operation}`);\n            debug.groupEnd(() => `Collected field ${field}: adding ${advanceOptionsToString(withFieldOptions)}`);\n            withField = withField.concat(withFieldOptions.map(opt => opt.paths));\n          }\n          // If we find no option to advance that implementation, we bail (as we need to simultaneously advance all implementations).\n          if (withField.length === 0) {\n            debug.groupEnd(); // implem group\n            debug.groupEnd(() => `Cannot collect field ${field} from ${implemType}: stopping with options [${itfPath}]`);\n            return { options: pathAsOptions(itfPath) };\n          }\n          debug.groupEnd(() => `Collected field ${field} from ${implemType}`);\n          optionsByImplems.push(withField);\n        }\n        let allOptions = flatCartesianProduct(optionsByImplems);\n        if (itfPath) {\n          if (directPathOverrideTypeExplosion) {\n            ({ thisPath: itfPath, otherOptions: allOptions } = itfPath.markOverridding(allOptions));\n          }\n          allOptions = pathAsOptions(itfPath)!.concat(allOptions);\n        }\n        debug.groupEnd(() => `With type-exploded options: ${advanceOptionsToString(allOptions)}`);\n        return { options: allOptions, hasOnlyTypeExplodedResults: !itfPath };\n      case 'UnionType':\n        assert(field.name === typenameFieldName, () => `Invalid field selection ${operation} for union type ${currentType}`);\n        const typenameEdge = nextEdgeForField(path, operation, overrideConditions);\n        assert(typenameEdge, `Should always have an edge for __typename edge on an union`);\n        debug.groupEnd(() => `Trivial collection of __typename for union ${currentType}`);\n        return { options: pathAsOptions(addFieldEdge(path, operation, typenameEdge, conditionResolver, context)) };\n      default:\n        // Only object, interfaces and unions (only for __typename) have fields so the query should have been flagged invalid if a field was selected on something else.\n        assert(false, `Unexpected ${currentType.kind} type ${currentType} from ${path.tail} given operation ${operation}`);\n    }\n  } else {\n    assert(operation.kind === 'FragmentElement', () => \"Unhandled operation kind: \" + operation.kind);\n    if (!operation.typeCondition || currentType.name === operation.typeCondition.name) {\n      // If there is no typename (or the condition is the type we're already one), it means we're essentially\n      // just applying some directives (could be a @skip/@include for instance). This doesn't make us take any\n      // edge but if operation does have directives, we record it.\n      debug.groupEnd(() => `No edge to take for condition ${operation} from current type ${currentType}`);\n      const updatedPath = operation.appliedDirectives.length > 0\n        ? path.add(operation, null, noConditionsResolution, operation.deferDirectiveArgs())\n        : path;\n      return { options: [[ updatedPath ]] };\n    }\n    const typeName = operation.typeCondition.name;\n    switch (currentType.kind) {\n      case 'InterfaceType':\n      case 'UnionType':\n        // If we have an edge for the type case, take that.\n        const edge = nextEdgeForTypeCast(path, typeName);\n        if (edge) {\n          assert(!edge.conditions, \"TypeCast collecting edges shouldn't have conditions\");\n          debug.groupEnd(() => `Using type-casting edge for ${typeName} from current type ${currentType}`);\n          return { options: [[path.add(operation, edge, noConditionsResolution, operation.deferDirectiveArgs())]] };\n        }\n        // Otherwise, checks what is the intersection between the possible runtime types of the current type\n        // and the ones of the cast. We need to be able to go into all those types simultaneously.\n        const parentTypes = path.tailPossibleRuntimeTypes() ;\n        const castedTypes = possibleRuntimeTypes(supergraphSchema.type(typeName) as CompositeType);\n        const intersection = parentTypes.filter(t1 => castedTypes.some(t2 => t1.name === t2.name)).map(t => t.name);\n        debug.log(() => `Trying to type-explode into intersection between ${currentType} and ${typeName} = [${intersection}]`);\n        const optionsByImplems: OpGraphPath<V>[][][] = [];\n        for (const tName of intersection) {\n          debug.group(() => `Trying ${tName}`);\n          const castOp = new FragmentElement(currentType, tName, operation.appliedDirectives);\n          const implemOptions = advanceSimultaneousPathsWithOperation(\n            supergraphSchema,\n            new SimultaneousPathsWithLazyIndirectPaths([path], context, conditionResolver, [], [], overrideConditions),\n            castOp,\n            overrideConditions,\n          );\n          if (!implemOptions) {\n            debug.groupEnd();\n            debug.groupEnd(() => `Cannot advance into ${tName} from ${currentType}: no options for ${operation}.`);\n            return { options: undefined };\n          }\n          // If the new fragment makes it so that we're on an unsatisfiable branch, we just ignore that implementation.\n          if (implemOptions.length === 0) {\n            debug.groupEnd(() => `Cannot ever get ${tName} from this branch, ignoring it`);\n            continue;\n          }\n          debug.groupEnd(() => `Advanced into ${tName} from ${currentType}: ${advanceOptionsToString(implemOptions)}`);\n          optionsByImplems.push(implemOptions.map(opt => opt.paths));\n        }\n        const allCastOptions = flatCartesianProduct(optionsByImplems);\n        debug.groupEnd(() => `Type-exploded options: ${advanceOptionsToString(allCastOptions)}`);\n        return { options: allCastOptions };\n      case 'ObjectType':\n        // We've already handled the case of a fragment whose condition is this type. But the fragment might\n        // be for either:\n        // - a super-type of the current type: in which case, we're pretty much in the same case than if there\n        //   were no particular condition.\n        // - if the current type is an @interfaceObject, then this can be an implementation type of\n        //   the interface in the supergraph. In that case, the type of the condition is not a\n        //   type known of the subgraph, but the subgraph might still be able to handle some of\n        //   fields, so in that case, we essentially \"ignore\" the fragment for now. We will re-add\n        //   it back later for fields that are not in the current subgraph after we've taken\n        //   a @key for the interface.\n        // - another, incompatible type. This can happen for a type that intersects a super-type of the\n        //   current type (since graphQL allows a fragment as long as there is an intersection). In that\n        //   case, the whole operation simply cannot ever return anything.\n        const conditionType = supergraphSchema.type(typeName)!;\n        if (isAbstractType(conditionType) && possibleRuntimeTypes(conditionType).some(t => t.name == currentType.name)) {\n          debug.groupEnd(() => `${typeName} is a super-type of current type ${currentType}: no edge to take`);\n          // Operation type condition is applicable on the current type, so the types are already exploded but the\n          // condition can reference types from the supergraph that are not present in the local subgraph.\n          //\n          // If operation has applied directives we need to convert to inline fragment without type condition, otherwise\n          // we ignore the fragment altogether.\n          const updatedPath = operation.appliedDirectives.length > 0\n            ? path.add(operation.withUpdatedTypes(currentType, undefined), null, noConditionsResolution, operation.deferDirectiveArgs())\n            : path;\n          return { options: [[ updatedPath ]] };\n        }\n\n        if (path.tailIsInterfaceObject()) {\n          const fakeDownCastEdge = path.nextEdges().find((e) => e.transition.kind === 'InterfaceObjectFakeDownCast' && e.transition.castedTypeName === typeName);\n          if (fakeDownCastEdge) {\n            const conditionResolution = canSatisfyConditions(path, fakeDownCastEdge, conditionResolver, context, [], [], getFieldParentTypeForOpTrigger);\n            if (!conditionResolution.satisfied) {\n              return { options: undefined };\n            }\n            const updatedPath = path.add(operation, fakeDownCastEdge, conditionResolution, operation.deferDirectiveArgs());\n            return { options: [[ updatedPath ]] };\n          }\n        }\n\n        // The operation we're dealing with can never return results (the type conditions applies have no intersection).\n        // This means we _can_ fulfill this operation (by doing nothing and returning an empty result), which we indicate\n        // by return an empty list of options.\n        debug.groupEnd(() => `Cannot ever get ${typeName} from current type ${currentType}: returning empty branch`);\n        return { options: [] };\n      default:\n        // We shouldn't have a fragment on a non-selectable type\n        assert(false, `Unexpected ${currentType.kind} type ${currentType} from ${path.tail} given operation ${operation}`);\n    }\n  }\n}\n\nfunction addFieldEdge<V extends Vertex>(\n  path: OpGraphPath<V>,\n  fieldOperation: Field<any>,\n  edge: Edge,\n  conditionResolver: ConditionResolver,\n  context: PathContext\n): OpGraphPath<V> | undefined {\n  const conditionResolution = canSatisfyConditions(path, edge, conditionResolver, context, [], [], getFieldParentTypeForOpTrigger);\n  return conditionResolution.satisfied ? path.add(fieldOperation, edge, conditionResolution) : undefined;\n}\n\nfunction pathAsOptions<V extends Vertex>(path: OpGraphPath<V> | undefined): SimultaneousPaths<V>[] | undefined {\n  return path ? [[path]] : undefined;\n}\n\nfunction nextEdgeForField<V extends Vertex>(\n  path: OpGraphPath<V>,\n  field: Field<any>,\n  overrideConditions: Map<string, boolean>\n): Edge | undefined {\n  return edgeForField(path.graph, path.tail, field, overrideConditions);\n}\n\nfunction edgeForField(\n  graph: QueryGraph,\n  vertex: Vertex,\n  field: Field<any>,\n  overrideConditions: Map<string, boolean>\n): Edge | undefined {\n  const candidates = graph.outEdges(vertex)\n    .filter(e =>\n      e.transition.kind === 'FieldCollection'\n      && field.selects(e.transition.definition, true, undefined, e.requiredContexts?.map(c => c.namedParameter))\n      && e.satisfiesOverrideConditions(overrideConditions)\n  );\n  assert(candidates.length <= 1, () => `Vertex ${vertex} has multiple edges matching ${field} (${candidates})`);\n  return candidates.length === 0 ? undefined : candidates[0];\n}\n\nfunction nextEdgeForTypeCast<V extends Vertex>(\n  path: OpGraphPath<V>,\n  typeName: string\n): Edge | undefined {\n  return edgeForTypeCast(path.graph, path.tail, typeName);\n}\n\nfunction edgeForTypeCast(\n  graph: QueryGraph,\n  vertex: Vertex,\n  typeName: string\n): Edge | undefined {\n  const candidates = graph.outEdges(vertex).filter(e => e.transition.kind === 'DownCast' && typeName === e.transition.castedType.name);\n  assert(candidates.length <= 1, () => `Vertex ${vertex} has multiple edges matching ${typeName} (${candidates})`);\n  return candidates.length === 0 ? undefined : candidates[0];\n}\n\nconst getFieldParentTypeForOpTrigger = (trigger: OpTrigger): CompositeType | null => {\n  if (!isPathContext(trigger)) {\n    if (trigger.kind === 'Field') {\n      return trigger.definition.parent;\n    }\n  }\n  return null;\n};\n\nconst getFieldParentTypeForEdge = (transition: Transition): CompositeType | null => {\n  if (transition.kind === 'FieldCollection') {\n    const type = transition.definition.parent;\n    if (!type || isScalarType(type) || isEnumType(type)) {\n      return null;\n    }\n    if (isObjectType(type) || isInterfaceType(type) || isUnionType(type)) {\n      return type;\n    }\n  }\n  return null;\n}\n", "'use strict';\n\nfunction isForwardRefNode(object) {\n  return typeof object === 'object' && object !== null && typeof object.id === 'string';\n}\nfunction isNodeModel(object) {\n  return typeof object === 'object' && object !== null && object.$$type === 'Node' && typeof object.id === 'string';\n}\nfunction isNodeRef(node) {\n  return isNodeModel(node) || isForwardRefNode(node);\n}\nfunction isNodeRefLike(node) {\n  return typeof node === 'string' || isNodeRef(node);\n}\nfunction isNodeRefGroupLike(target) {\n  return Array.isArray(target) && target.every(isNodeRefLike);\n}\nfunction isCompass(c) {\n  return ['n', 'ne', 'e', 'se', 's', 'sw', 'w', 'nw', 'c'].includes(c);\n}\nfunction toNodeRef(target) {\n  if (isNodeRef(target)) {\n    return target;\n  }\n  const [id, port, compass] = target.split(':');\n  if (isCompass(compass)) {\n    return { id, port, compass };\n  }\n  return { id, port };\n}\nfunction toNodeRefGroup(targets) {\n  if (targets.length < 2 && (isNodeRefLike(targets[0]) && isNodeRefLike(targets[1])) === false) {\n    throw Error('EdgeTargets must have at least 2 elements.');\n  }\n  return targets.map((t) => toNodeRef(t));\n}\n\nconst RootModelsContext = Object.seal({\n  Graph: null,\n  Digraph: null,\n  Subgraph: null,\n  Node: null,\n  Edge: null,\n});\nfunction createModelsContext(models) {\n  return Object.assign(Object.seal(Object.assign({}, RootModelsContext)), models);\n}\n\nexports.RootModelsContext = RootModelsContext;\nexports.createModelsContext = createModelsContext;\nexports.isCompass = isCompass;\nexports.isForwardRefNode = isForwardRefNode;\nexports.isNodeModel = isNodeModel;\nexports.isNodeRef = isNodeRef;\nexports.isNodeRefGroupLike = isNodeRefGroupLike;\nexports.isNodeRefLike = isNodeRefLike;\nexports.toNodeRef = toNodeRef;\nexports.toNodeRefGroup = toNodeRefGroup;\n", "'use strict';\n\nfunction _pipe(...args) {\n  const [o1, ...operations] = args;\n  return (...t) => operations.reduce((acc, f) => f(acc), o1(...t));\n}\nfunction pipe(o1, ...operations) {\n  return _pipe(o1, ...operations);\n}\nconst defer =\n  (fn) =>\n  (...args) =>\n  (src) =>\n    fn(src, ...args);\nconst toIterable = (f) => ({\n  [Symbol.iterator]: f,\n});\nconst map = defer((src, selector) =>\n  Array.from(\n    toIterable(function* () {\n      for (const v of src) {\n        yield selector(v);\n      }\n    }),\n  ),\n);\nconst filter = defer((src, pred) =>\n  Array.from(\n    toIterable(function* () {\n      for (const x of src) {\n        if (pred(x)) {\n          yield x;\n        }\n      }\n    }),\n  ),\n);\n\nexports.filter = filter;\nexports.map = map;\nexports.pipe = pipe;\n", "'use strict';\n\nvar index_js = require('../utils/index.cjs');\nvar index_js$1 = require('../common/index.cjs');\n\nclass Builder {\n  options;\n  getLocation() {\n    return this.options?.locationFunction?.() ?? null;\n  }\n  constructor(options) {\n    this.options = options;\n  }\n  createElement(type, props, children = []) {\n    return {\n      location: this.getLocation(),\n      ...props,\n      type,\n      children,\n    };\n  }\n}\n\nconst createElement = Builder.prototype.createElement.bind(new Builder());\n\nconst EOL = /\\r?\\n/;\nfunction joinBy(sep) {\n  return (value) => value.join(sep);\n}\nfunction wrapWith(wrapper) {\n  return (value) => wrapper + value + wrapper;\n}\nfunction wrapByPair(l, r) {\n  return (value) => l + value + r;\n}\nfunction leftPadWith(left) {\n  return (value) => left + value;\n}\nconst escape = (value) => value.replace(/\\r/g, '\\\\r').replace(/\\n/g, '\\\\n').replace(/\"/g, '\\\\\"');\nconst splitByLine = (value) => value.split(EOL);\nconst indent = (style, size, eol) =>\n  index_js.pipe(splitByLine, index_js.map(leftPadWith(style === 'space' ? ' '.repeat(size) : '\\n')), joinBy(eol));\nconst endOfLine = (eol) => {\n  switch (eol) {\n    case 'crlf':\n      return '\\r\\n';\n    case 'lf':\n      return '\\n';\n  }\n};\n\nconst AttributeListPrintPlugin = {\n  match(ast) {\n    return ast.type === 'AttributeList';\n  },\n  print(context, ast) {\n    if (ast.children.length === 0) {\n      return `${ast.kind.toLocaleLowerCase()} [];`;\n    }\n    const eol = endOfLine(context.endOfLine);\n    return index_js.pipe(\n      index_js.map(context.print),\n      joinBy(eol),\n      indent(context.indentStyle, context.indentSize, eol),\n      wrapByPair(`${ast.kind.toLocaleLowerCase()} [${eol}`, `${eol}];`),\n    )(ast.children);\n  },\n};\n\nconst AttributePrintPlugin = {\n  match(ast) {\n    return ast.type === 'Attribute';\n  },\n  print(context, ast) {\n    return `${context.print(ast.key)} = ${context.print(ast.value)};`;\n  },\n};\n\nconst CommentPrintPlugin = {\n  match(ast) {\n    return ast.type === 'Comment';\n  },\n  print(context, ast) {\n    const eol = endOfLine(context.endOfLine);\n    switch (ast.kind) {\n      case 'Block':\n        return index_js.pipe(\n          splitByLine,\n          index_js.map(leftPadWith(' * ')),\n          joinBy(eol),\n          wrapByPair(`/**${eol}`, `${eol} */`),\n        )(ast.value);\n      case 'Macro':\n        return index_js.pipe(splitByLine, index_js.map(leftPadWith('# ')), joinBy(eol))(ast.value);\n      case 'Slash':\n      default:\n        return index_js.pipe(splitByLine, index_js.map(leftPadWith('// ')), joinBy(eol))(ast.value);\n    }\n  },\n};\n\nconst DotPrintPlugin = {\n  match(ast) {\n    return ast.type === 'Dot';\n  },\n  print(context, ast) {\n    return ast.children.map(context.print).join(endOfLine(context.endOfLine));\n  },\n};\n\nconst EdgePrintPlugin = {\n  match(ast) {\n    return ast.type === 'Edge';\n  },\n  print(context, ast) {\n    const targets = index_js.pipe(index_js.map(context.print), joinBy(context.directed ? ' -> ' : ' -- '))(ast.targets);\n    if (ast.children.length === 0) {\n      return `${targets};`;\n    }\n    const eol = endOfLine(context.endOfLine);\n    const contents = index_js.pipe(\n      index_js.map(context.print),\n      joinBy(eol),\n      indent(context.indentStyle, context.indentSize, eol),\n      wrapByPair(`[${eol}`, `${eol}];`),\n    )(ast.children);\n    return `${targets} ${contents}`;\n  },\n};\n\nconst GraphPrintPlugin = {\n  match(ast) {\n    return ast.type === 'Graph';\n  },\n  print(context, ast) {\n    context.directed = ast.directed;\n    const parts = [];\n    if (ast.strict) {\n      parts.push('strict');\n    }\n    parts.push(ast.directed ? 'digraph' : 'graph');\n    if (ast.id) {\n      parts.push(context.print(ast.id));\n    }\n    if (ast.children.length === 0) {\n      return `${parts.join(' ')} {}`;\n    }\n    const eol = endOfLine(context.endOfLine);\n    const contents = index_js.pipe(\n      index_js.map(context.print),\n      joinBy(eol),\n      indent(context.indentStyle, context.indentSize, eol),\n      wrapByPair(`{${eol}`, `${eol}}`),\n    )(ast.children);\n    return `${parts.join(' ')} ${contents}`;\n  },\n};\n\nconst quoteLiteralValue = index_js.pipe(escape, wrapWith('\"'));\nconst quoteHTMLLikeLiteralValue = wrapByPair('<', '>');\nconst LiteralPrintPlugin = {\n  match(ast) {\n    return ast.type === 'Literal';\n  },\n  print(context, ast) {\n    switch (ast.quoted) {\n      case 'html':\n        return quoteHTMLLikeLiteralValue(ast.value);\n      case true:\n        return quoteLiteralValue(ast.value);\n      case false:\n      default:\n        return escape(ast.value);\n    }\n  },\n};\n\nconst NodePrintPlugin = {\n  match(ast) {\n    return ast.type === 'Node';\n  },\n  print(context, ast) {\n    const id = context.print(ast.id);\n    if (ast.children.length === 0) {\n      return `${id};`;\n    }\n    const eol = endOfLine(context.endOfLine);\n    const contents = index_js.pipe(\n      index_js.map(context.print),\n      joinBy(eol),\n      indent(context.indentStyle, context.indentSize, eol),\n      wrapByPair(`[${eol}`, `${eol}];`),\n    )(ast.children);\n    return `${id} ${contents}`;\n  },\n};\n\nconst NodeRefGroupPrintPlugin = {\n  match(ast) {\n    return ast.type === 'NodeRefGroup';\n  },\n  print(context, ast) {\n    return index_js.pipe(index_js.map(context.print), joinBy(' '), wrapByPair('{', '}'))(ast.children);\n  },\n};\n\nconst NodeRefPrintPlugin = {\n  match(ast) {\n    return ast.type === 'NodeRef';\n  },\n  print(context, ast) {\n    const parts = [context.print(ast.id)];\n    if (ast.port) {\n      parts.push(context.print(ast.port));\n    }\n    if (ast.compass) {\n      parts.push(context.print(ast.compass));\n    }\n    return parts.join(':');\n  },\n};\n\nconst SubgraphPrintPlugin = {\n  match(ast) {\n    return ast.type === 'Subgraph';\n  },\n  print(context, ast) {\n    const parts = ['subgraph'];\n    if (ast.id) {\n      parts.push(context.print(ast.id));\n    }\n    if (ast.children.length === 0) {\n      return `${parts.join(' ')} {}`;\n    }\n    const eol = endOfLine(context.endOfLine);\n    const contents = index_js.pipe(\n      index_js.map(context.print),\n      joinBy(eol),\n      indent(context.indentStyle, context.indentSize, eol),\n      wrapByPair(`{${eol}`, `${eol}}`),\n    )(ast.children);\n    return `${parts.join(' ')} ${contents}`;\n  },\n};\n\nconst defaultPlugins$2 = [\n  AttributeListPrintPlugin,\n  AttributePrintPlugin,\n  CommentPrintPlugin,\n  DotPrintPlugin,\n  EdgePrintPlugin,\n  GraphPrintPlugin,\n  LiteralPrintPlugin,\n  NodePrintPlugin,\n  NodeRefGroupPrintPlugin,\n  NodeRefPrintPlugin,\n  SubgraphPrintPlugin,\n];\n\nclass Printer {\n  options;\n  #plugins = [...defaultPlugins$2];\n  constructor(options = {}) {\n    this.options = options;\n  }\n  print(ast) {\n    const plugins = [...this.#plugins];\n    const { indentSize = 2, indentStyle = 'space', endOfLine = 'lf' } = this.options;\n    const context = {\n      directed: true,\n      indentSize,\n      indentStyle,\n      endOfLine,\n      print(a) {\n        for (const plugin of plugins) {\n          if (plugin.match(a)) {\n            return plugin.print(context, a);\n          }\n        }\n        throw Error();\n      },\n    };\n    return context.print(ast);\n  }\n}\n\nfunction stringify(ast, options) {\n  const result = new Printer(options).print(ast);\n  if (!result) {\n    throw new Error();\n  }\n  return result;\n}\n\nfunction peg$padEnd(str, targetLength, padString) {\n  padString = padString || ' ';\n  if (str.length > targetLength) {\n    return str;\n  }\n  targetLength -= str.length;\n  padString += padString.repeat(targetLength);\n  return str + padString.slice(0, targetLength);\n}\nlet DotSyntaxError$1 = class DotSyntaxError extends Error {\n  static buildMessage(expected, found) {\n    function hex(ch) {\n      return ch.charCodeAt(0).toString(16).toUpperCase();\n    }\n    function literalEscape(s) {\n      return s\n        .replace(/\\\\/g, '\\\\\\\\')\n        .replace(/\"/g, '\\\\\"')\n        .replace(/\\0/g, '\\\\0')\n        .replace(/\\t/g, '\\\\t')\n        .replace(/\\n/g, '\\\\n')\n        .replace(/\\r/g, '\\\\r')\n        .replace(/[\\x00-\\x0F]/g, (ch) => '\\\\x0' + hex(ch))\n        .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => '\\\\x' + hex(ch));\n    }\n    function classEscape(s) {\n      return s\n        .replace(/\\\\/g, '\\\\\\\\')\n        .replace(/\\]/g, '\\\\]')\n        .replace(/\\^/g, '\\\\^')\n        .replace(/-/g, '\\\\-')\n        .replace(/\\0/g, '\\\\0')\n        .replace(/\\t/g, '\\\\t')\n        .replace(/\\n/g, '\\\\n')\n        .replace(/\\r/g, '\\\\r')\n        .replace(/[\\x00-\\x0F]/g, (ch) => '\\\\x0' + hex(ch))\n        .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, (ch) => '\\\\x' + hex(ch));\n    }\n    function describeExpectation(expectation) {\n      switch (expectation.type) {\n        case 'literal':\n          return '\"' + literalEscape(expectation.text) + '\"';\n        case 'class':\n          const escapedParts = expectation.parts.map((part) => {\n            return Array.isArray(part) ? classEscape(part[0]) + '-' + classEscape(part[1]) : classEscape(part);\n          });\n          return '[' + (expectation.inverted ? '^' : '') + escapedParts + ']';\n        case 'any':\n          return 'any character';\n        case 'end':\n          return 'end of input';\n        case 'other':\n          return expectation.description;\n      }\n    }\n    function describeExpected(expected1) {\n      const descriptions = expected1.map(describeExpectation);\n      let i;\n      let j;\n      descriptions.sort();\n      if (descriptions.length > 0) {\n        for (i = 1, j = 1; i < descriptions.length; i++) {\n          if (descriptions[i - 1] !== descriptions[i]) {\n            descriptions[j] = descriptions[i];\n            j++;\n          }\n        }\n        descriptions.length = j;\n      }\n      switch (descriptions.length) {\n        case 1:\n          return descriptions[0];\n        case 2:\n          return descriptions[0] + ' or ' + descriptions[1];\n        default:\n          return descriptions.slice(0, -1).join(', ') + ', or ' + descriptions[descriptions.length - 1];\n      }\n    }\n    function describeFound(found1) {\n      return found1 ? '\"' + literalEscape(found1) + '\"' : 'end of input';\n    }\n    return 'Expected ' + describeExpected(expected) + ' but ' + describeFound(found) + ' found.';\n  }\n  message;\n  expected;\n  found;\n  location;\n  name;\n  constructor(message, expected, found, location) {\n    super();\n    this.message = message;\n    this.expected = expected;\n    this.found = found;\n    this.location = location;\n    this.name = 'DotSyntaxError';\n    if (typeof Object.setPrototypeOf === 'function') {\n      Object.setPrototypeOf(this, DotSyntaxError$1.prototype);\n    } else {\n      this.__proto__ = DotSyntaxError$1.prototype;\n    }\n    if (typeof Error.captureStackTrace === 'function') {\n      Error.captureStackTrace(this, DotSyntaxError$1);\n    }\n  }\n  format(sources) {\n    let str = 'Error: ' + this.message;\n    if (this.location) {\n      let src = null;\n      let k;\n      for (k = 0; k < sources.length; k++) {\n        if (sources[k].grammarSource === this.location.source) {\n          src = sources[k].text.split(/\\r\\n|\\n|\\r/g);\n          break;\n        }\n      }\n      let s = this.location.start;\n      let loc = this.location.source + ':' + s.line + ':' + s.column;\n      if (src) {\n        let e = this.location.end;\n        let filler = peg$padEnd('', s.line.toString().length, ' ');\n        let line = src[s.line - 1];\n        let last = s.line === e.line ? e.column : line.length + 1;\n        str +=\n          '\\n --> ' +\n          loc +\n          '\\n' +\n          filler +\n          ' |\\n' +\n          s.line +\n          ' | ' +\n          line +\n          '\\n' +\n          filler +\n          ' | ' +\n          peg$padEnd('', s.column - 1, ' ') +\n          peg$padEnd('', last - s.column, '^');\n      } else {\n        str += '\\n at ' + loc;\n      }\n    }\n    return str;\n  }\n};\nfunction peg$parse(input, options) {\n  options = options !== undefined ? options : {};\n  const peg$FAILED = {};\n  const peg$source = options.grammarSource;\n  const peg$startRuleFunctions = {\n    Dot: peg$parseDot,\n    Graph: peg$parseGraph,\n    Subgraph: peg$parseSubgraph,\n    Node: peg$parseNode,\n    Edge: peg$parseEdge,\n    AttributeList: peg$parseAttributeList,\n    Attribute: peg$parseAttribute,\n    ClusterStatements: peg$parseClusterStatements,\n  };\n  let peg$startRuleFunction = peg$parseDot;\n  const peg$c0 = function (v) {\n    return v;\n  };\n  const peg$c1 = function (c1, graph, c2) {\n    return b.createElement('Dot', {}, [...c1, graph, ...c2]);\n  };\n  const peg$c2 = 'strict';\n  const peg$c3 = peg$literalExpectation('strict', true);\n  const peg$c4 = 'graph';\n  const peg$c5 = peg$literalExpectation('graph', true);\n  const peg$c6 = 'digraph';\n  const peg$c7 = peg$literalExpectation('digraph', true);\n  const peg$c8 = '{';\n  const peg$c9 = peg$literalExpectation('{', false);\n  const peg$c10 = '}';\n  const peg$c11 = peg$literalExpectation('}', false);\n  const peg$c12 = function (_strict, _kind, id, children) {\n    const strict = !!_strict;\n    const kind = _kind.toLowerCase();\n    const directed = kind === 'digraph';\n    for (const edgeop of edgeops) {\n      if (directed) {\n        if (edgeop.operator !== '->') {\n          error(`In digraph, it's necessary to describe with \"->\" operator to create edge.`, edgeop.location);\n        }\n      } else {\n        if (edgeop.operator !== '--') {\n          error(`In graph, it's necessary to describe with \"--\" operator to create edge.`, edgeop.location);\n        }\n      }\n    }\n    return b.createElement(\n      'Graph',\n      id !== null\n        ? {\n            id,\n            directed,\n            strict,\n          }\n        : {\n            directed,\n            strict,\n          },\n      children,\n    );\n  };\n  const peg$c13 = ';';\n  const peg$c14 = peg$literalExpectation(';', false);\n  const peg$c15 = function (keyValue) {\n    return b.createElement(\n      'Attribute',\n      {\n        ...keyValue,\n      },\n      [],\n    );\n  };\n  const peg$c16 = 'node';\n  const peg$c17 = peg$literalExpectation('node', true);\n  const peg$c18 = 'edge';\n  const peg$c19 = peg$literalExpectation('edge', true);\n  const peg$c20 = function (_kind, children) {\n    return b.createElement(\n      'AttributeList',\n      {\n        kind: `${_kind.slice(0, 1).toUpperCase()}${_kind.slice(1).toLowerCase()}`,\n      },\n      children,\n    );\n  };\n  const peg$c21 = function (id, rhs, _children) {\n    return b.createElement(\n      'Edge',\n      {\n        targets: [id, ...rhs],\n      },\n      _children ?? [],\n    );\n  };\n  const peg$c22 = function (id, _children) {\n    return b.createElement(\n      'Node',\n      {\n        id,\n      },\n      _children ?? [],\n    );\n  };\n  const peg$c23 = '=';\n  const peg$c24 = peg$literalExpectation('=', false);\n  const peg$c25 = function (key, value) {\n    return { key, value };\n  };\n  const peg$c26 = ',';\n  const peg$c27 = peg$literalExpectation(',', false);\n  const peg$c28 = function (kv) {\n    return b.createElement(\n      'Attribute',\n      {\n        ...kv,\n        location: location(),\n      },\n      [],\n    );\n  };\n  const peg$c29 = '[';\n  const peg$c30 = peg$literalExpectation('[', false);\n  const peg$c31 = ']';\n  const peg$c32 = peg$literalExpectation(']', false);\n  const peg$c33 = function (list) {\n    return list;\n  };\n  const peg$c34 = function (id, v) {\n    return v;\n  };\n  const peg$c35 = function (id, rest) {\n    return b.createElement('NodeRefGroup', {}, [id, ...rest]);\n  };\n  const peg$c36 = '->';\n  const peg$c37 = peg$literalExpectation('->', false);\n  const peg$c38 = '--';\n  const peg$c39 = peg$literalExpectation('--', false);\n  const peg$c40 = function (operator) {\n    return { operator, location: location() };\n  };\n  const peg$c41 = function (edgeop, id, rest) {\n    edgeops.push(edgeop);\n    return [id].concat(rest || []);\n  };\n  const peg$c42 = function (id, port) {\n    return b.createElement(\n      'NodeRef',\n      {\n        id,\n        ...port,\n      },\n      [],\n    );\n  };\n  const peg$c43 = peg$otherExpectation('port');\n  const peg$c44 = ':';\n  const peg$c45 = peg$literalExpectation(':', false);\n  const peg$c46 = function (port, compass) {\n    return compass;\n  };\n  const peg$c47 = function (port, compass) {\n    if (['n', 'ne', 'e', 'se', 's', 'sw', 'w', 'nw'].includes(port)) {\n      return { compass: port };\n    } else if (compass) {\n      return { port, compass };\n    }\n    return { port };\n  };\n  const peg$c48 = 'subgraph';\n  const peg$c49 = peg$literalExpectation('subgraph', true);\n  const peg$c50 = function (id) {\n    return id;\n  };\n  const peg$c51 = function (id, _children) {\n    const children = _children ?? [];\n    return b.createElement('Subgraph', id ? { id } : {}, children);\n  };\n  const peg$c52 = 'n';\n  const peg$c53 = peg$literalExpectation('n', false);\n  const peg$c54 = 'ne';\n  const peg$c55 = peg$literalExpectation('ne', false);\n  const peg$c56 = 'e';\n  const peg$c57 = peg$literalExpectation('e', false);\n  const peg$c58 = 'se';\n  const peg$c59 = peg$literalExpectation('se', false);\n  const peg$c60 = 's';\n  const peg$c61 = peg$literalExpectation('s', false);\n  const peg$c62 = 'sw';\n  const peg$c63 = peg$literalExpectation('sw', false);\n  const peg$c64 = 'w';\n  const peg$c65 = peg$literalExpectation('w', false);\n  const peg$c66 = 'nw';\n  const peg$c67 = peg$literalExpectation('nw', false);\n  const peg$c68 = function (value) {\n    return { value, quoted: false };\n  };\n  const peg$c69 = '\"';\n  const peg$c70 = peg$literalExpectation('\"', false);\n  const peg$c71 = function (value) {\n    return { value, quoted: true };\n  };\n  const peg$c72 = function (v) {\n    return b.createElement(\n      'Literal',\n      {\n        ...v,\n      },\n      [],\n    );\n  };\n  const peg$c73 = function (value) {\n    return b.createElement(\n      'Literal',\n      {\n        value,\n        quoted: false,\n      },\n      [],\n    );\n  };\n  const peg$c74 = '/*';\n  const peg$c75 = peg$literalExpectation('/*', false);\n  const peg$c76 = '*/';\n  const peg$c77 = peg$literalExpectation('*/', false);\n  const peg$c78 = peg$anyExpectation();\n  const peg$c79 = function (v) {\n    return b.createElement(\n      'Comment',\n      {\n        kind: 'Block',\n        value: dedent(v.join('').replace(/[ \\t]*\\*/g, '')),\n      },\n      [],\n    );\n  };\n  const peg$c80 = function (lines) {\n    return b.createElement(\n      'Comment',\n      {\n        kind: 'Slash',\n        value: dedent(lines.join('\\n')),\n      },\n      [],\n    );\n  };\n  const peg$c81 = '//';\n  const peg$c82 = peg$literalExpectation('//', false);\n  const peg$c83 = function (v) {\n    return v.join('');\n  };\n  const peg$c84 = function (lines) {\n    return b.createElement(\n      'Comment',\n      {\n        kind: 'Macro',\n        value: dedent(lines.join('\\n')),\n      },\n      [],\n    );\n  };\n  const peg$c85 = '#';\n  const peg$c86 = peg$literalExpectation('#', false);\n  const peg$c87 = peg$otherExpectation('UNICODE_STRING');\n  const peg$c88 = function (first, rest) {\n    return first + rest.join('');\n  };\n  const peg$c89 = function (first, rest) {\n    return first + rest;\n  };\n  const peg$c90 = '$';\n  const peg$c91 = peg$literalExpectation('$', false);\n  const peg$c92 = '_';\n  const peg$c93 = peg$literalExpectation('_', false);\n  const peg$c94 = peg$otherExpectation('NUMBER');\n  const peg$c95 = '-';\n  const peg$c96 = peg$literalExpectation('-', false);\n  const peg$c97 = '.';\n  const peg$c98 = peg$literalExpectation('.', false);\n  const peg$c99 = /^[0-9]/;\n  const peg$c100 = peg$classExpectation([['0', '9']], false, false);\n  const peg$c101 = function (n) {\n    return text();\n  };\n  const peg$c102 = function (v) {\n    return b.createElement(\n      'Literal',\n      {\n        value: v.slice(1, v.length - 1),\n        quoted: 'html',\n      },\n      [],\n    );\n  };\n  const peg$c103 = '<';\n  const peg$c104 = peg$literalExpectation('<', false);\n  const peg$c105 = '>';\n  const peg$c106 = peg$literalExpectation('>', false);\n  const peg$c107 = function (v) {\n    return '<' + v.join('') + '>';\n  };\n  const peg$c108 = function (chars) {\n    return b.createElement(\n      'Literal',\n      {\n        value: chars.join(''),\n        quoted: true,\n      },\n      [],\n    );\n  };\n  const peg$c109 = function () {\n    return text();\n  };\n  const peg$c110 = '\\\\';\n  const peg$c111 = peg$literalExpectation('\\\\', false);\n  const peg$c112 = function (v) {\n    return v[1] === '\"' ? '\"' : v[0] + v[1];\n  };\n  const peg$c113 = function () {\n    return '';\n  };\n  const peg$c114 = /^[\\n\\r\\u2028\\u2029]/;\n  const peg$c115 = peg$classExpectation(['\\n', '\\r', '\\u2028', '\\u2029'], false, false);\n  const peg$c116 = peg$otherExpectation('end of line');\n  const peg$c117 = '\\n';\n  const peg$c118 = peg$literalExpectation('\\n', false);\n  const peg$c119 = '\\r\\n';\n  const peg$c120 = peg$literalExpectation('\\r\\n', false);\n  const peg$c121 = '\\r';\n  const peg$c122 = peg$literalExpectation('\\r', false);\n  const peg$c123 = '\\u2028';\n  const peg$c124 = peg$literalExpectation('\\u2028', false);\n  const peg$c125 = '\\u2029';\n  const peg$c126 = peg$literalExpectation('\\u2029', false);\n  const peg$c134 = peg$otherExpectation('whitespace');\n  const peg$c135 = peg$otherExpectation('WHITESPACE');\n  const peg$c136 = /^[\\n\\r]/;\n  const peg$c137 = peg$classExpectation(['\\n', '\\r'], false, false);\n  const peg$c138 = /^[ \\t]/;\n  const peg$c139 = peg$classExpectation([' ', '\\t'], false, false);\n  const peg$c140 =\n    /^[a-z\\xB5\\xDF-\\xF6\\xF8-\\xFF\\u0101\\u0103\\u0105\\u0107\\u0109\\u010B\\u010D\\u010F\\u0111\\u0113\\u0115\\u0117\\u0119\\u011B\\u011D\\u011F\\u0121\\u0123\\u0125\\u0127\\u0129\\u012B\\u012D\\u012F\\u0131\\u0133\\u0135\\u0137-\\u0138\\u013A\\u013C\\u013E\\u0140\\u0142\\u0144\\u0146\\u0148-\\u0149\\u014B\\u014D\\u014F\\u0151\\u0153\\u0155\\u0157\\u0159\\u015B\\u015D\\u015F\\u0161\\u0163\\u0165\\u0167\\u0169\\u016B\\u016D\\u016F\\u0171\\u0173\\u0175\\u0177\\u017A\\u017C\\u017E-\\u0180\\u0183\\u0185\\u0188\\u018C-\\u018D\\u0192\\u0195\\u0199-\\u019B\\u019E\\u01A1\\u01A3\\u01A5\\u01A8\\u01AA-\\u01AB\\u01AD\\u01B0\\u01B4\\u01B6\\u01B9-\\u01BA\\u01BD-\\u01BF\\u01C6\\u01C9\\u01CC\\u01CE\\u01D0\\u01D2\\u01D4\\u01D6\\u01D8\\u01DA\\u01DC-\\u01DD\\u01DF\\u01E1\\u01E3\\u01E5\\u01E7\\u01E9\\u01EB\\u01ED\\u01EF-\\u01F0\\u01F3\\u01F5\\u01F9\\u01FB\\u01FD\\u01FF\\u0201\\u0203\\u0205\\u0207\\u0209\\u020B\\u020D\\u020F\\u0211\\u0213\\u0215\\u0217\\u0219\\u021B\\u021D\\u021F\\u0221\\u0223\\u0225\\u0227\\u0229\\u022B\\u022D\\u022F\\u0231\\u0233-\\u0239\\u023C\\u023F-\\u0240\\u0242\\u0247\\u0249\\u024B\\u024D\\u024F-\\u0293\\u0295-\\u02AF\\u0371\\u0373\\u0377\\u037B-\\u037D\\u0390\\u03AC-\\u03CE\\u03D0-\\u03D1\\u03D5-\\u03D7\\u03D9\\u03DB\\u03DD\\u03DF\\u03E1\\u03E3\\u03E5\\u03E7\\u03E9\\u03EB\\u03ED\\u03EF-\\u03F3\\u03F5\\u03F8\\u03FB-\\u03FC\\u0430-\\u045F\\u0461\\u0463\\u0465\\u0467\\u0469\\u046B\\u046D\\u046F\\u0471\\u0473\\u0475\\u0477\\u0479\\u047B\\u047D\\u047F\\u0481\\u048B\\u048D\\u048F\\u0491\\u0493\\u0495\\u0497\\u0499\\u049B\\u049D\\u049F\\u04A1\\u04A3\\u04A5\\u04A7\\u04A9\\u04AB\\u04AD\\u04AF\\u04B1\\u04B3\\u04B5\\u04B7\\u04B9\\u04BB\\u04BD\\u04BF\\u04C2\\u04C4\\u04C6\\u04C8\\u04CA\\u04CC\\u04CE-\\u04CF\\u04D1\\u04D3\\u04D5\\u04D7\\u04D9\\u04DB\\u04DD\\u04DF\\u04E1\\u04E3\\u04E5\\u04E7\\u04E9\\u04EB\\u04ED\\u04EF\\u04F1\\u04F3\\u04F5\\u04F7\\u04F9\\u04FB\\u04FD\\u04FF\\u0501\\u0503\\u0505\\u0507\\u0509\\u050B\\u050D\\u050F\\u0511\\u0513\\u0515\\u0517\\u0519\\u051B\\u051D\\u051F\\u0521\\u0523\\u0525\\u0527\\u0561-\\u0587\\u1D00-\\u1D2B\\u1D6B-\\u1D77\\u1D79-\\u1D9A\\u1E01\\u1E03\\u1E05\\u1E07\\u1E09\\u1E0B\\u1E0D\\u1E0F\\u1E11\\u1E13\\u1E15\\u1E17\\u1E19\\u1E1B\\u1E1D\\u1E1F\\u1E21\\u1E23\\u1E25\\u1E27\\u1E29\\u1E2B\\u1E2D\\u1E2F\\u1E31\\u1E33\\u1E35\\u1E37\\u1E39\\u1E3B\\u1E3D\\u1E3F\\u1E41\\u1E43\\u1E45\\u1E47\\u1E49\\u1E4B\\u1E4D\\u1E4F\\u1E51\\u1E53\\u1E55\\u1E57\\u1E59\\u1E5B\\u1E5D\\u1E5F\\u1E61\\u1E63\\u1E65\\u1E67\\u1E69\\u1E6B\\u1E6D\\u1E6F\\u1E71\\u1E73\\u1E75\\u1E77\\u1E79\\u1E7B\\u1E7D\\u1E7F\\u1E81\\u1E83\\u1E85\\u1E87\\u1E89\\u1E8B\\u1E8D\\u1E8F\\u1E91\\u1E93\\u1E95-\\u1E9D\\u1E9F\\u1EA1\\u1EA3\\u1EA5\\u1EA7\\u1EA9\\u1EAB\\u1EAD\\u1EAF\\u1EB1\\u1EB3\\u1EB5\\u1EB7\\u1EB9\\u1EBB\\u1EBD\\u1EBF\\u1EC1\\u1EC3\\u1EC5\\u1EC7\\u1EC9\\u1ECB\\u1ECD\\u1ECF\\u1ED1\\u1ED3\\u1ED5\\u1ED7\\u1ED9\\u1EDB\\u1EDD\\u1EDF\\u1EE1\\u1EE3\\u1EE5\\u1EE7\\u1EE9\\u1EEB\\u1EED\\u1EEF\\u1EF1\\u1EF3\\u1EF5\\u1EF7\\u1EF9\\u1EFB\\u1EFD\\u1EFF-\\u1F07\\u1F10-\\u1F15\\u1F20-\\u1F27\\u1F30-\\u1F37\\u1F40-\\u1F45\\u1F50-\\u1F57\\u1F60-\\u1F67\\u1F70-\\u1F7D\\u1F80-\\u1F87\\u1F90-\\u1F97\\u1FA0-\\u1FA7\\u1FB0-\\u1FB4\\u1FB6-\\u1FB7\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FC7\\u1FD0-\\u1FD3\\u1FD6-\\u1FD7\\u1FE0-\\u1FE7\\u1FF2-\\u1FF4\\u1FF6-\\u1FF7\\u210A\\u210E-\\u210F\\u2113\\u212F\\u2134\\u2139\\u213C-\\u213D\\u2146-\\u2149\\u214E\\u2184\\u2C30-\\u2C5E\\u2C61\\u2C65-\\u2C66\\u2C68\\u2C6A\\u2C6C\\u2C71\\u2C73-\\u2C74\\u2C76-\\u2C7B\\u2C81\\u2C83\\u2C85\\u2C87\\u2C89\\u2C8B\\u2C8D\\u2C8F\\u2C91\\u2C93\\u2C95\\u2C97\\u2C99\\u2C9B\\u2C9D\\u2C9F\\u2CA1\\u2CA3\\u2CA5\\u2CA7\\u2CA9\\u2CAB\\u2CAD\\u2CAF\\u2CB1\\u2CB3\\u2CB5\\u2CB7\\u2CB9\\u2CBB\\u2CBD\\u2CBF\\u2CC1\\u2CC3\\u2CC5\\u2CC7\\u2CC9\\u2CCB\\u2CCD\\u2CCF\\u2CD1\\u2CD3\\u2CD5\\u2CD7\\u2CD9\\u2CDB\\u2CDD\\u2CDF\\u2CE1\\u2CE3-\\u2CE4\\u2CEC\\u2CEE\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\uA641\\uA643\\uA645\\uA647\\uA649\\uA64B\\uA64D\\uA64F\\uA651\\uA653\\uA655\\uA657\\uA659\\uA65B\\uA65D\\uA65F\\uA661\\uA663\\uA665\\uA667\\uA669\\uA66B\\uA66D\\uA681\\uA683\\uA685\\uA687\\uA689\\uA68B\\uA68D\\uA68F\\uA691\\uA693\\uA695\\uA697\\uA723\\uA725\\uA727\\uA729\\uA72B\\uA72D\\uA72F-\\uA731\\uA733\\uA735\\uA737\\uA739\\uA73B\\uA73D\\uA73F\\uA741\\uA743\\uA745\\uA747\\uA749\\uA74B\\uA74D\\uA74F\\uA751\\uA753\\uA755\\uA757\\uA759\\uA75B\\uA75D\\uA75F\\uA761\\uA763\\uA765\\uA767\\uA769\\uA76B\\uA76D\\uA76F\\uA771-\\uA778\\uA77A\\uA77C\\uA77F\\uA781\\uA783\\uA785\\uA787\\uA78C\\uA78E\\uA791\\uA793\\uA7A1\\uA7A3\\uA7A5\\uA7A7\\uA7A9\\uA7FA\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF41-\\uFF5A]/;\n  const peg$c141 = peg$classExpectation(\n    [\n      ['a', 'z'],\n      '\\xB5',\n      ['\\xDF', '\\xF6'],\n      ['\\xF8', '\\xFF'],\n      '\\u0101',\n      '\\u0103',\n      '\\u0105',\n      '\\u0107',\n      '\\u0109',\n      '\\u010B',\n      '\\u010D',\n      '\\u010F',\n      '\\u0111',\n      '\\u0113',\n      '\\u0115',\n      '\\u0117',\n      '\\u0119',\n      '\\u011B',\n      '\\u011D',\n      '\\u011F',\n      '\\u0121',\n      '\\u0123',\n      '\\u0125',\n      '\\u0127',\n      '\\u0129',\n      '\\u012B',\n      '\\u012D',\n      '\\u012F',\n      '\\u0131',\n      '\\u0133',\n      '\\u0135',\n      ['\\u0137', '\\u0138'],\n      '\\u013A',\n      '\\u013C',\n      '\\u013E',\n      '\\u0140',\n      '\\u0142',\n      '\\u0144',\n      '\\u0146',\n      ['\\u0148', '\\u0149'],\n      '\\u014B',\n      '\\u014D',\n      '\\u014F',\n      '\\u0151',\n      '\\u0153',\n      '\\u0155',\n      '\\u0157',\n      '\\u0159',\n      '\\u015B',\n      '\\u015D',\n      '\\u015F',\n      '\\u0161',\n      '\\u0163',\n      '\\u0165',\n      '\\u0167',\n      '\\u0169',\n      '\\u016B',\n      '\\u016D',\n      '\\u016F',\n      '\\u0171',\n      '\\u0173',\n      '\\u0175',\n      '\\u0177',\n      '\\u017A',\n      '\\u017C',\n      ['\\u017E', '\\u0180'],\n      '\\u0183',\n      '\\u0185',\n      '\\u0188',\n      ['\\u018C', '\\u018D'],\n      '\\u0192',\n      '\\u0195',\n      ['\\u0199', '\\u019B'],\n      '\\u019E',\n      '\\u01A1',\n      '\\u01A3',\n      '\\u01A5',\n      '\\u01A8',\n      ['\\u01AA', '\\u01AB'],\n      '\\u01AD',\n      '\\u01B0',\n      '\\u01B4',\n      '\\u01B6',\n      ['\\u01B9', '\\u01BA'],\n      ['\\u01BD', '\\u01BF'],\n      '\\u01C6',\n      '\\u01C9',\n      '\\u01CC',\n      '\\u01CE',\n      '\\u01D0',\n      '\\u01D2',\n      '\\u01D4',\n      '\\u01D6',\n      '\\u01D8',\n      '\\u01DA',\n      ['\\u01DC', '\\u01DD'],\n      '\\u01DF',\n      '\\u01E1',\n      '\\u01E3',\n      '\\u01E5',\n      '\\u01E7',\n      '\\u01E9',\n      '\\u01EB',\n      '\\u01ED',\n      ['\\u01EF', '\\u01F0'],\n      '\\u01F3',\n      '\\u01F5',\n      '\\u01F9',\n      '\\u01FB',\n      '\\u01FD',\n      '\\u01FF',\n      '\\u0201',\n      '\\u0203',\n      '\\u0205',\n      '\\u0207',\n      '\\u0209',\n      '\\u020B',\n      '\\u020D',\n      '\\u020F',\n      '\\u0211',\n      '\\u0213',\n      '\\u0215',\n      '\\u0217',\n      '\\u0219',\n      '\\u021B',\n      '\\u021D',\n      '\\u021F',\n      '\\u0221',\n      '\\u0223',\n      '\\u0225',\n      '\\u0227',\n      '\\u0229',\n      '\\u022B',\n      '\\u022D',\n      '\\u022F',\n      '\\u0231',\n      ['\\u0233', '\\u0239'],\n      '\\u023C',\n      ['\\u023F', '\\u0240'],\n      '\\u0242',\n      '\\u0247',\n      '\\u0249',\n      '\\u024B',\n      '\\u024D',\n      ['\\u024F', '\\u0293'],\n      ['\\u0295', '\\u02AF'],\n      '\\u0371',\n      '\\u0373',\n      '\\u0377',\n      ['\\u037B', '\\u037D'],\n      '\\u0390',\n      ['\\u03AC', '\\u03CE'],\n      ['\\u03D0', '\\u03D1'],\n      ['\\u03D5', '\\u03D7'],\n      '\\u03D9',\n      '\\u03DB',\n      '\\u03DD',\n      '\\u03DF',\n      '\\u03E1',\n      '\\u03E3',\n      '\\u03E5',\n      '\\u03E7',\n      '\\u03E9',\n      '\\u03EB',\n      '\\u03ED',\n      ['\\u03EF', '\\u03F3'],\n      '\\u03F5',\n      '\\u03F8',\n      ['\\u03FB', '\\u03FC'],\n      ['\\u0430', '\\u045F'],\n      '\\u0461',\n      '\\u0463',\n      '\\u0465',\n      '\\u0467',\n      '\\u0469',\n      '\\u046B',\n      '\\u046D',\n      '\\u046F',\n      '\\u0471',\n      '\\u0473',\n      '\\u0475',\n      '\\u0477',\n      '\\u0479',\n      '\\u047B',\n      '\\u047D',\n      '\\u047F',\n      '\\u0481',\n      '\\u048B',\n      '\\u048D',\n      '\\u048F',\n      '\\u0491',\n      '\\u0493',\n      '\\u0495',\n      '\\u0497',\n      '\\u0499',\n      '\\u049B',\n      '\\u049D',\n      '\\u049F',\n      '\\u04A1',\n      '\\u04A3',\n      '\\u04A5',\n      '\\u04A7',\n      '\\u04A9',\n      '\\u04AB',\n      '\\u04AD',\n      '\\u04AF',\n      '\\u04B1',\n      '\\u04B3',\n      '\\u04B5',\n      '\\u04B7',\n      '\\u04B9',\n      '\\u04BB',\n      '\\u04BD',\n      '\\u04BF',\n      '\\u04C2',\n      '\\u04C4',\n      '\\u04C6',\n      '\\u04C8',\n      '\\u04CA',\n      '\\u04CC',\n      ['\\u04CE', '\\u04CF'],\n      '\\u04D1',\n      '\\u04D3',\n      '\\u04D5',\n      '\\u04D7',\n      '\\u04D9',\n      '\\u04DB',\n      '\\u04DD',\n      '\\u04DF',\n      '\\u04E1',\n      '\\u04E3',\n      '\\u04E5',\n      '\\u04E7',\n      '\\u04E9',\n      '\\u04EB',\n      '\\u04ED',\n      '\\u04EF',\n      '\\u04F1',\n      '\\u04F3',\n      '\\u04F5',\n      '\\u04F7',\n      '\\u04F9',\n      '\\u04FB',\n      '\\u04FD',\n      '\\u04FF',\n      '\\u0501',\n      '\\u0503',\n      '\\u0505',\n      '\\u0507',\n      '\\u0509',\n      '\\u050B',\n      '\\u050D',\n      '\\u050F',\n      '\\u0511',\n      '\\u0513',\n      '\\u0515',\n      '\\u0517',\n      '\\u0519',\n      '\\u051B',\n      '\\u051D',\n      '\\u051F',\n      '\\u0521',\n      '\\u0523',\n      '\\u0525',\n      '\\u0527',\n      ['\\u0561', '\\u0587'],\n      ['\\u1D00', '\\u1D2B'],\n      ['\\u1D6B', '\\u1D77'],\n      ['\\u1D79', '\\u1D9A'],\n      '\\u1E01',\n      '\\u1E03',\n      '\\u1E05',\n      '\\u1E07',\n      '\\u1E09',\n      '\\u1E0B',\n      '\\u1E0D',\n      '\\u1E0F',\n      '\\u1E11',\n      '\\u1E13',\n      '\\u1E15',\n      '\\u1E17',\n      '\\u1E19',\n      '\\u1E1B',\n      '\\u1E1D',\n      '\\u1E1F',\n      '\\u1E21',\n      '\\u1E23',\n      '\\u1E25',\n      '\\u1E27',\n      '\\u1E29',\n      '\\u1E2B',\n      '\\u1E2D',\n      '\\u1E2F',\n      '\\u1E31',\n      '\\u1E33',\n      '\\u1E35',\n      '\\u1E37',\n      '\\u1E39',\n      '\\u1E3B',\n      '\\u1E3D',\n      '\\u1E3F',\n      '\\u1E41',\n      '\\u1E43',\n      '\\u1E45',\n      '\\u1E47',\n      '\\u1E49',\n      '\\u1E4B',\n      '\\u1E4D',\n      '\\u1E4F',\n      '\\u1E51',\n      '\\u1E53',\n      '\\u1E55',\n      '\\u1E57',\n      '\\u1E59',\n      '\\u1E5B',\n      '\\u1E5D',\n      '\\u1E5F',\n      '\\u1E61',\n      '\\u1E63',\n      '\\u1E65',\n      '\\u1E67',\n      '\\u1E69',\n      '\\u1E6B',\n      '\\u1E6D',\n      '\\u1E6F',\n      '\\u1E71',\n      '\\u1E73',\n      '\\u1E75',\n      '\\u1E77',\n      '\\u1E79',\n      '\\u1E7B',\n      '\\u1E7D',\n      '\\u1E7F',\n      '\\u1E81',\n      '\\u1E83',\n      '\\u1E85',\n      '\\u1E87',\n      '\\u1E89',\n      '\\u1E8B',\n      '\\u1E8D',\n      '\\u1E8F',\n      '\\u1E91',\n      '\\u1E93',\n      ['\\u1E95', '\\u1E9D'],\n      '\\u1E9F',\n      '\\u1EA1',\n      '\\u1EA3',\n      '\\u1EA5',\n      '\\u1EA7',\n      '\\u1EA9',\n      '\\u1EAB',\n      '\\u1EAD',\n      '\\u1EAF',\n      '\\u1EB1',\n      '\\u1EB3',\n      '\\u1EB5',\n      '\\u1EB7',\n      '\\u1EB9',\n      '\\u1EBB',\n      '\\u1EBD',\n      '\\u1EBF',\n      '\\u1EC1',\n      '\\u1EC3',\n      '\\u1EC5',\n      '\\u1EC7',\n      '\\u1EC9',\n      '\\u1ECB',\n      '\\u1ECD',\n      '\\u1ECF',\n      '\\u1ED1',\n      '\\u1ED3',\n      '\\u1ED5',\n      '\\u1ED7',\n      '\\u1ED9',\n      '\\u1EDB',\n      '\\u1EDD',\n      '\\u1EDF',\n      '\\u1EE1',\n      '\\u1EE3',\n      '\\u1EE5',\n      '\\u1EE7',\n      '\\u1EE9',\n      '\\u1EEB',\n      '\\u1EED',\n      '\\u1EEF',\n      '\\u1EF1',\n      '\\u1EF3',\n      '\\u1EF5',\n      '\\u1EF7',\n      '\\u1EF9',\n      '\\u1EFB',\n      '\\u1EFD',\n      ['\\u1EFF', '\\u1F07'],\n      ['\\u1F10', '\\u1F15'],\n      ['\\u1F20', '\\u1F27'],\n      ['\\u1F30', '\\u1F37'],\n      ['\\u1F40', '\\u1F45'],\n      ['\\u1F50', '\\u1F57'],\n      ['\\u1F60', '\\u1F67'],\n      ['\\u1F70', '\\u1F7D'],\n      ['\\u1F80', '\\u1F87'],\n      ['\\u1F90', '\\u1F97'],\n      ['\\u1FA0', '\\u1FA7'],\n      ['\\u1FB0', '\\u1FB4'],\n      ['\\u1FB6', '\\u1FB7'],\n      '\\u1FBE',\n      ['\\u1FC2', '\\u1FC4'],\n      ['\\u1FC6', '\\u1FC7'],\n      ['\\u1FD0', '\\u1FD3'],\n      ['\\u1FD6', '\\u1FD7'],\n      ['\\u1FE0', '\\u1FE7'],\n      ['\\u1FF2', '\\u1FF4'],\n      ['\\u1FF6', '\\u1FF7'],\n      '\\u210A',\n      ['\\u210E', '\\u210F'],\n      '\\u2113',\n      '\\u212F',\n      '\\u2134',\n      '\\u2139',\n      ['\\u213C', '\\u213D'],\n      ['\\u2146', '\\u2149'],\n      '\\u214E',\n      '\\u2184',\n      ['\\u2C30', '\\u2C5E'],\n      '\\u2C61',\n      ['\\u2C65', '\\u2C66'],\n      '\\u2C68',\n      '\\u2C6A',\n      '\\u2C6C',\n      '\\u2C71',\n      ['\\u2C73', '\\u2C74'],\n      ['\\u2C76', '\\u2C7B'],\n      '\\u2C81',\n      '\\u2C83',\n      '\\u2C85',\n      '\\u2C87',\n      '\\u2C89',\n      '\\u2C8B',\n      '\\u2C8D',\n      '\\u2C8F',\n      '\\u2C91',\n      '\\u2C93',\n      '\\u2C95',\n      '\\u2C97',\n      '\\u2C99',\n      '\\u2C9B',\n      '\\u2C9D',\n      '\\u2C9F',\n      '\\u2CA1',\n      '\\u2CA3',\n      '\\u2CA5',\n      '\\u2CA7',\n      '\\u2CA9',\n      '\\u2CAB',\n      '\\u2CAD',\n      '\\u2CAF',\n      '\\u2CB1',\n      '\\u2CB3',\n      '\\u2CB5',\n      '\\u2CB7',\n      '\\u2CB9',\n      '\\u2CBB',\n      '\\u2CBD',\n      '\\u2CBF',\n      '\\u2CC1',\n      '\\u2CC3',\n      '\\u2CC5',\n      '\\u2CC7',\n      '\\u2CC9',\n      '\\u2CCB',\n      '\\u2CCD',\n      '\\u2CCF',\n      '\\u2CD1',\n      '\\u2CD3',\n      '\\u2CD5',\n      '\\u2CD7',\n      '\\u2CD9',\n      '\\u2CDB',\n      '\\u2CDD',\n      '\\u2CDF',\n      '\\u2CE1',\n      ['\\u2CE3', '\\u2CE4'],\n      '\\u2CEC',\n      '\\u2CEE',\n      '\\u2CF3',\n      ['\\u2D00', '\\u2D25'],\n      '\\u2D27',\n      '\\u2D2D',\n      '\\uA641',\n      '\\uA643',\n      '\\uA645',\n      '\\uA647',\n      '\\uA649',\n      '\\uA64B',\n      '\\uA64D',\n      '\\uA64F',\n      '\\uA651',\n      '\\uA653',\n      '\\uA655',\n      '\\uA657',\n      '\\uA659',\n      '\\uA65B',\n      '\\uA65D',\n      '\\uA65F',\n      '\\uA661',\n      '\\uA663',\n      '\\uA665',\n      '\\uA667',\n      '\\uA669',\n      '\\uA66B',\n      '\\uA66D',\n      '\\uA681',\n      '\\uA683',\n      '\\uA685',\n      '\\uA687',\n      '\\uA689',\n      '\\uA68B',\n      '\\uA68D',\n      '\\uA68F',\n      '\\uA691',\n      '\\uA693',\n      '\\uA695',\n      '\\uA697',\n      '\\uA723',\n      '\\uA725',\n      '\\uA727',\n      '\\uA729',\n      '\\uA72B',\n      '\\uA72D',\n      ['\\uA72F', '\\uA731'],\n      '\\uA733',\n      '\\uA735',\n      '\\uA737',\n      '\\uA739',\n      '\\uA73B',\n      '\\uA73D',\n      '\\uA73F',\n      '\\uA741',\n      '\\uA743',\n      '\\uA745',\n      '\\uA747',\n      '\\uA749',\n      '\\uA74B',\n      '\\uA74D',\n      '\\uA74F',\n      '\\uA751',\n      '\\uA753',\n      '\\uA755',\n      '\\uA757',\n      '\\uA759',\n      '\\uA75B',\n      '\\uA75D',\n      '\\uA75F',\n      '\\uA761',\n      '\\uA763',\n      '\\uA765',\n      '\\uA767',\n      '\\uA769',\n      '\\uA76B',\n      '\\uA76D',\n      '\\uA76F',\n      ['\\uA771', '\\uA778'],\n      '\\uA77A',\n      '\\uA77C',\n      '\\uA77F',\n      '\\uA781',\n      '\\uA783',\n      '\\uA785',\n      '\\uA787',\n      '\\uA78C',\n      '\\uA78E',\n      '\\uA791',\n      '\\uA793',\n      '\\uA7A1',\n      '\\uA7A3',\n      '\\uA7A5',\n      '\\uA7A7',\n      '\\uA7A9',\n      '\\uA7FA',\n      ['\\uFB00', '\\uFB06'],\n      ['\\uFB13', '\\uFB17'],\n      ['\\uFF41', '\\uFF5A'],\n    ],\n    false,\n    false,\n  );\n  const peg$c142 =\n    /^[\\u02B0-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0374\\u037A\\u0559\\u0640\\u06E5-\\u06E6\\u07F4-\\u07F5\\u07FA\\u081A\\u0824\\u0828\\u0971\\u0E46\\u0EC6\\u10FC\\u17D7\\u1843\\u1AA7\\u1C78-\\u1C7D\\u1D2C-\\u1D6A\\u1D78\\u1D9B-\\u1DBF\\u2071\\u207F\\u2090-\\u209C\\u2C7C-\\u2C7D\\u2D6F\\u2E2F\\u3005\\u3031-\\u3035\\u303B\\u309D-\\u309E\\u30FC-\\u30FE\\uA015\\uA4F8-\\uA4FD\\uA60C\\uA67F\\uA717-\\uA71F\\uA770\\uA788\\uA7F8-\\uA7F9\\uA9CF\\uAA70\\uAADD\\uAAF3-\\uAAF4\\uFF70\\uFF9E-\\uFF9F]/;\n  const peg$c143 = peg$classExpectation(\n    [\n      ['\\u02B0', '\\u02C1'],\n      ['\\u02C6', '\\u02D1'],\n      ['\\u02E0', '\\u02E4'],\n      '\\u02EC',\n      '\\u02EE',\n      '\\u0374',\n      '\\u037A',\n      '\\u0559',\n      '\\u0640',\n      ['\\u06E5', '\\u06E6'],\n      ['\\u07F4', '\\u07F5'],\n      '\\u07FA',\n      '\\u081A',\n      '\\u0824',\n      '\\u0828',\n      '\\u0971',\n      '\\u0E46',\n      '\\u0EC6',\n      '\\u10FC',\n      '\\u17D7',\n      '\\u1843',\n      '\\u1AA7',\n      ['\\u1C78', '\\u1C7D'],\n      ['\\u1D2C', '\\u1D6A'],\n      '\\u1D78',\n      ['\\u1D9B', '\\u1DBF'],\n      '\\u2071',\n      '\\u207F',\n      ['\\u2090', '\\u209C'],\n      ['\\u2C7C', '\\u2C7D'],\n      '\\u2D6F',\n      '\\u2E2F',\n      '\\u3005',\n      ['\\u3031', '\\u3035'],\n      '\\u303B',\n      ['\\u309D', '\\u309E'],\n      ['\\u30FC', '\\u30FE'],\n      '\\uA015',\n      ['\\uA4F8', '\\uA4FD'],\n      '\\uA60C',\n      '\\uA67F',\n      ['\\uA717', '\\uA71F'],\n      '\\uA770',\n      '\\uA788',\n      ['\\uA7F8', '\\uA7F9'],\n      '\\uA9CF',\n      '\\uAA70',\n      '\\uAADD',\n      ['\\uAAF3', '\\uAAF4'],\n      '\\uFF70',\n      ['\\uFF9E', '\\uFF9F'],\n    ],\n    false,\n    false,\n  );\n  const peg$c144 =\n    /^[\\xAA\\xBA\\u01BB\\u01C0-\\u01C3\\u0294\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u063F\\u0641-\\u064A\\u066E-\\u066F\\u0671-\\u06D3\\u06D5\\u06EE-\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u0800-\\u0815\\u0840-\\u0858\\u08A0\\u08A2-\\u08AC\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0972-\\u0977\\u0979-\\u097F\\u0985-\\u098C\\u098F-\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC-\\u09DD\\u09DF-\\u09E1\\u09F0-\\u09F1\\u0A05-\\u0A0A\\u0A0F-\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32-\\u0A33\\u0A35-\\u0A36\\u0A38-\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2-\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0-\\u0AE1\\u0B05-\\u0B0C\\u0B0F-\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32-\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C-\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99-\\u0B9A\\u0B9C\\u0B9E-\\u0B9F\\u0BA3-\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C33\\u0C35-\\u0C39\\u0C3D\\u0C58-\\u0C59\\u0C60-\\u0C61\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0-\\u0CE1\\u0CF1-\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D60-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32-\\u0E33\\u0E40-\\u0E45\\u0E81-\\u0E82\\u0E84\\u0E87-\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA-\\u0EAB\\u0EAD-\\u0EB0\\u0EB2-\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065-\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10D0-\\u10FA\\u10FD-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F4\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17DC\\u1820-\\u1842\\u1844-\\u1877\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191C\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19C1-\\u19C7\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE-\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C77\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5-\\u1CF6\\u2135-\\u2138\\u2D30-\\u2D67\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3006\\u303C\\u3041-\\u3096\\u309F\\u30A1-\\u30FA\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FCC\\uA000-\\uA014\\uA016-\\uA48C\\uA4D0-\\uA4F7\\uA500-\\uA60B\\uA610-\\uA61F\\uA62A-\\uA62B\\uA66E\\uA6A0-\\uA6E5\\uA7FB-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA6F\\uAA71-\\uAA76\\uAA7A\\uAA80-\\uAAAF\\uAAB1\\uAAB5-\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADC\\uAAE0-\\uAAEA\\uAAF2\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40-\\uFB41\\uFB43-\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF66-\\uFF6F\\uFF71-\\uFF9D\\uFFA0-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]/;\n  const peg$c145 = peg$classExpectation(\n    [\n      '\\xAA',\n      '\\xBA',\n      '\\u01BB',\n      ['\\u01C0', '\\u01C3'],\n      '\\u0294',\n      ['\\u05D0', '\\u05EA'],\n      ['\\u05F0', '\\u05F2'],\n      ['\\u0620', '\\u063F'],\n      ['\\u0641', '\\u064A'],\n      ['\\u066E', '\\u066F'],\n      ['\\u0671', '\\u06D3'],\n      '\\u06D5',\n      ['\\u06EE', '\\u06EF'],\n      ['\\u06FA', '\\u06FC'],\n      '\\u06FF',\n      '\\u0710',\n      ['\\u0712', '\\u072F'],\n      ['\\u074D', '\\u07A5'],\n      '\\u07B1',\n      ['\\u07CA', '\\u07EA'],\n      ['\\u0800', '\\u0815'],\n      ['\\u0840', '\\u0858'],\n      '\\u08A0',\n      ['\\u08A2', '\\u08AC'],\n      ['\\u0904', '\\u0939'],\n      '\\u093D',\n      '\\u0950',\n      ['\\u0958', '\\u0961'],\n      ['\\u0972', '\\u0977'],\n      ['\\u0979', '\\u097F'],\n      ['\\u0985', '\\u098C'],\n      ['\\u098F', '\\u0990'],\n      ['\\u0993', '\\u09A8'],\n      ['\\u09AA', '\\u09B0'],\n      '\\u09B2',\n      ['\\u09B6', '\\u09B9'],\n      '\\u09BD',\n      '\\u09CE',\n      ['\\u09DC', '\\u09DD'],\n      ['\\u09DF', '\\u09E1'],\n      ['\\u09F0', '\\u09F1'],\n      ['\\u0A05', '\\u0A0A'],\n      ['\\u0A0F', '\\u0A10'],\n      ['\\u0A13', '\\u0A28'],\n      ['\\u0A2A', '\\u0A30'],\n      ['\\u0A32', '\\u0A33'],\n      ['\\u0A35', '\\u0A36'],\n      ['\\u0A38', '\\u0A39'],\n      ['\\u0A59', '\\u0A5C'],\n      '\\u0A5E',\n      ['\\u0A72', '\\u0A74'],\n      ['\\u0A85', '\\u0A8D'],\n      ['\\u0A8F', '\\u0A91'],\n      ['\\u0A93', '\\u0AA8'],\n      ['\\u0AAA', '\\u0AB0'],\n      ['\\u0AB2', '\\u0AB3'],\n      ['\\u0AB5', '\\u0AB9'],\n      '\\u0ABD',\n      '\\u0AD0',\n      ['\\u0AE0', '\\u0AE1'],\n      ['\\u0B05', '\\u0B0C'],\n      ['\\u0B0F', '\\u0B10'],\n      ['\\u0B13', '\\u0B28'],\n      ['\\u0B2A', '\\u0B30'],\n      ['\\u0B32', '\\u0B33'],\n      ['\\u0B35', '\\u0B39'],\n      '\\u0B3D',\n      ['\\u0B5C', '\\u0B5D'],\n      ['\\u0B5F', '\\u0B61'],\n      '\\u0B71',\n      '\\u0B83',\n      ['\\u0B85', '\\u0B8A'],\n      ['\\u0B8E', '\\u0B90'],\n      ['\\u0B92', '\\u0B95'],\n      ['\\u0B99', '\\u0B9A'],\n      '\\u0B9C',\n      ['\\u0B9E', '\\u0B9F'],\n      ['\\u0BA3', '\\u0BA4'],\n      ['\\u0BA8', '\\u0BAA'],\n      ['\\u0BAE', '\\u0BB9'],\n      '\\u0BD0',\n      ['\\u0C05', '\\u0C0C'],\n      ['\\u0C0E', '\\u0C10'],\n      ['\\u0C12', '\\u0C28'],\n      ['\\u0C2A', '\\u0C33'],\n      ['\\u0C35', '\\u0C39'],\n      '\\u0C3D',\n      ['\\u0C58', '\\u0C59'],\n      ['\\u0C60', '\\u0C61'],\n      ['\\u0C85', '\\u0C8C'],\n      ['\\u0C8E', '\\u0C90'],\n      ['\\u0C92', '\\u0CA8'],\n      ['\\u0CAA', '\\u0CB3'],\n      ['\\u0CB5', '\\u0CB9'],\n      '\\u0CBD',\n      '\\u0CDE',\n      ['\\u0CE0', '\\u0CE1'],\n      ['\\u0CF1', '\\u0CF2'],\n      ['\\u0D05', '\\u0D0C'],\n      ['\\u0D0E', '\\u0D10'],\n      ['\\u0D12', '\\u0D3A'],\n      '\\u0D3D',\n      '\\u0D4E',\n      ['\\u0D60', '\\u0D61'],\n      ['\\u0D7A', '\\u0D7F'],\n      ['\\u0D85', '\\u0D96'],\n      ['\\u0D9A', '\\u0DB1'],\n      ['\\u0DB3', '\\u0DBB'],\n      '\\u0DBD',\n      ['\\u0DC0', '\\u0DC6'],\n      ['\\u0E01', '\\u0E30'],\n      ['\\u0E32', '\\u0E33'],\n      ['\\u0E40', '\\u0E45'],\n      ['\\u0E81', '\\u0E82'],\n      '\\u0E84',\n      ['\\u0E87', '\\u0E88'],\n      '\\u0E8A',\n      '\\u0E8D',\n      ['\\u0E94', '\\u0E97'],\n      ['\\u0E99', '\\u0E9F'],\n      ['\\u0EA1', '\\u0EA3'],\n      '\\u0EA5',\n      '\\u0EA7',\n      ['\\u0EAA', '\\u0EAB'],\n      ['\\u0EAD', '\\u0EB0'],\n      ['\\u0EB2', '\\u0EB3'],\n      '\\u0EBD',\n      ['\\u0EC0', '\\u0EC4'],\n      ['\\u0EDC', '\\u0EDF'],\n      '\\u0F00',\n      ['\\u0F40', '\\u0F47'],\n      ['\\u0F49', '\\u0F6C'],\n      ['\\u0F88', '\\u0F8C'],\n      ['\\u1000', '\\u102A'],\n      '\\u103F',\n      ['\\u1050', '\\u1055'],\n      ['\\u105A', '\\u105D'],\n      '\\u1061',\n      ['\\u1065', '\\u1066'],\n      ['\\u106E', '\\u1070'],\n      ['\\u1075', '\\u1081'],\n      '\\u108E',\n      ['\\u10D0', '\\u10FA'],\n      ['\\u10FD', '\\u1248'],\n      ['\\u124A', '\\u124D'],\n      ['\\u1250', '\\u1256'],\n      '\\u1258',\n      ['\\u125A', '\\u125D'],\n      ['\\u1260', '\\u1288'],\n      ['\\u128A', '\\u128D'],\n      ['\\u1290', '\\u12B0'],\n      ['\\u12B2', '\\u12B5'],\n      ['\\u12B8', '\\u12BE'],\n      '\\u12C0',\n      ['\\u12C2', '\\u12C5'],\n      ['\\u12C8', '\\u12D6'],\n      ['\\u12D8', '\\u1310'],\n      ['\\u1312', '\\u1315'],\n      ['\\u1318', '\\u135A'],\n      ['\\u1380', '\\u138F'],\n      ['\\u13A0', '\\u13F4'],\n      ['\\u1401', '\\u166C'],\n      ['\\u166F', '\\u167F'],\n      ['\\u1681', '\\u169A'],\n      ['\\u16A0', '\\u16EA'],\n      ['\\u1700', '\\u170C'],\n      ['\\u170E', '\\u1711'],\n      ['\\u1720', '\\u1731'],\n      ['\\u1740', '\\u1751'],\n      ['\\u1760', '\\u176C'],\n      ['\\u176E', '\\u1770'],\n      ['\\u1780', '\\u17B3'],\n      '\\u17DC',\n      ['\\u1820', '\\u1842'],\n      ['\\u1844', '\\u1877'],\n      ['\\u1880', '\\u18A8'],\n      '\\u18AA',\n      ['\\u18B0', '\\u18F5'],\n      ['\\u1900', '\\u191C'],\n      ['\\u1950', '\\u196D'],\n      ['\\u1970', '\\u1974'],\n      ['\\u1980', '\\u19AB'],\n      ['\\u19C1', '\\u19C7'],\n      ['\\u1A00', '\\u1A16'],\n      ['\\u1A20', '\\u1A54'],\n      ['\\u1B05', '\\u1B33'],\n      ['\\u1B45', '\\u1B4B'],\n      ['\\u1B83', '\\u1BA0'],\n      ['\\u1BAE', '\\u1BAF'],\n      ['\\u1BBA', '\\u1BE5'],\n      ['\\u1C00', '\\u1C23'],\n      ['\\u1C4D', '\\u1C4F'],\n      ['\\u1C5A', '\\u1C77'],\n      ['\\u1CE9', '\\u1CEC'],\n      ['\\u1CEE', '\\u1CF1'],\n      ['\\u1CF5', '\\u1CF6'],\n      ['\\u2135', '\\u2138'],\n      ['\\u2D30', '\\u2D67'],\n      ['\\u2D80', '\\u2D96'],\n      ['\\u2DA0', '\\u2DA6'],\n      ['\\u2DA8', '\\u2DAE'],\n      ['\\u2DB0', '\\u2DB6'],\n      ['\\u2DB8', '\\u2DBE'],\n      ['\\u2DC0', '\\u2DC6'],\n      ['\\u2DC8', '\\u2DCE'],\n      ['\\u2DD0', '\\u2DD6'],\n      ['\\u2DD8', '\\u2DDE'],\n      '\\u3006',\n      '\\u303C',\n      ['\\u3041', '\\u3096'],\n      '\\u309F',\n      ['\\u30A1', '\\u30FA'],\n      '\\u30FF',\n      ['\\u3105', '\\u312D'],\n      ['\\u3131', '\\u318E'],\n      ['\\u31A0', '\\u31BA'],\n      ['\\u31F0', '\\u31FF'],\n      ['\\u3400', '\\u4DB5'],\n      ['\\u4E00', '\\u9FCC'],\n      ['\\uA000', '\\uA014'],\n      ['\\uA016', '\\uA48C'],\n      ['\\uA4D0', '\\uA4F7'],\n      ['\\uA500', '\\uA60B'],\n      ['\\uA610', '\\uA61F'],\n      ['\\uA62A', '\\uA62B'],\n      '\\uA66E',\n      ['\\uA6A0', '\\uA6E5'],\n      ['\\uA7FB', '\\uA801'],\n      ['\\uA803', '\\uA805'],\n      ['\\uA807', '\\uA80A'],\n      ['\\uA80C', '\\uA822'],\n      ['\\uA840', '\\uA873'],\n      ['\\uA882', '\\uA8B3'],\n      ['\\uA8F2', '\\uA8F7'],\n      '\\uA8FB',\n      ['\\uA90A', '\\uA925'],\n      ['\\uA930', '\\uA946'],\n      ['\\uA960', '\\uA97C'],\n      ['\\uA984', '\\uA9B2'],\n      ['\\uAA00', '\\uAA28'],\n      ['\\uAA40', '\\uAA42'],\n      ['\\uAA44', '\\uAA4B'],\n      ['\\uAA60', '\\uAA6F'],\n      ['\\uAA71', '\\uAA76'],\n      '\\uAA7A',\n      ['\\uAA80', '\\uAAAF'],\n      '\\uAAB1',\n      ['\\uAAB5', '\\uAAB6'],\n      ['\\uAAB9', '\\uAABD'],\n      '\\uAAC0',\n      '\\uAAC2',\n      ['\\uAADB', '\\uAADC'],\n      ['\\uAAE0', '\\uAAEA'],\n      '\\uAAF2',\n      ['\\uAB01', '\\uAB06'],\n      ['\\uAB09', '\\uAB0E'],\n      ['\\uAB11', '\\uAB16'],\n      ['\\uAB20', '\\uAB26'],\n      ['\\uAB28', '\\uAB2E'],\n      ['\\uABC0', '\\uABE2'],\n      ['\\uAC00', '\\uD7A3'],\n      ['\\uD7B0', '\\uD7C6'],\n      ['\\uD7CB', '\\uD7FB'],\n      ['\\uF900', '\\uFA6D'],\n      ['\\uFA70', '\\uFAD9'],\n      '\\uFB1D',\n      ['\\uFB1F', '\\uFB28'],\n      ['\\uFB2A', '\\uFB36'],\n      ['\\uFB38', '\\uFB3C'],\n      '\\uFB3E',\n      ['\\uFB40', '\\uFB41'],\n      ['\\uFB43', '\\uFB44'],\n      ['\\uFB46', '\\uFBB1'],\n      ['\\uFBD3', '\\uFD3D'],\n      ['\\uFD50', '\\uFD8F'],\n      ['\\uFD92', '\\uFDC7'],\n      ['\\uFDF0', '\\uFDFB'],\n      ['\\uFE70', '\\uFE74'],\n      ['\\uFE76', '\\uFEFC'],\n      ['\\uFF66', '\\uFF6F'],\n      ['\\uFF71', '\\uFF9D'],\n      ['\\uFFA0', '\\uFFBE'],\n      ['\\uFFC2', '\\uFFC7'],\n      ['\\uFFCA', '\\uFFCF'],\n      ['\\uFFD2', '\\uFFD7'],\n      ['\\uFFDA', '\\uFFDC'],\n    ],\n    false,\n    false,\n  );\n  const peg$c146 = /^[\\u01C5\\u01C8\\u01CB\\u01F2\\u1F88-\\u1F8F\\u1F98-\\u1F9F\\u1FA8-\\u1FAF\\u1FBC\\u1FCC\\u1FFC]/;\n  const peg$c147 = peg$classExpectation(\n    [\n      '\\u01C5',\n      '\\u01C8',\n      '\\u01CB',\n      '\\u01F2',\n      ['\\u1F88', '\\u1F8F'],\n      ['\\u1F98', '\\u1F9F'],\n      ['\\u1FA8', '\\u1FAF'],\n      '\\u1FBC',\n      '\\u1FCC',\n      '\\u1FFC',\n    ],\n    false,\n    false,\n  );\n  const peg$c148 =\n    /^[A-Z\\xC0-\\xD6\\xD8-\\xDE\\u0100\\u0102\\u0104\\u0106\\u0108\\u010A\\u010C\\u010E\\u0110\\u0112\\u0114\\u0116\\u0118\\u011A\\u011C\\u011E\\u0120\\u0122\\u0124\\u0126\\u0128\\u012A\\u012C\\u012E\\u0130\\u0132\\u0134\\u0136\\u0139\\u013B\\u013D\\u013F\\u0141\\u0143\\u0145\\u0147\\u014A\\u014C\\u014E\\u0150\\u0152\\u0154\\u0156\\u0158\\u015A\\u015C\\u015E\\u0160\\u0162\\u0164\\u0166\\u0168\\u016A\\u016C\\u016E\\u0170\\u0172\\u0174\\u0176\\u0178-\\u0179\\u017B\\u017D\\u0181-\\u0182\\u0184\\u0186-\\u0187\\u0189-\\u018B\\u018E-\\u0191\\u0193-\\u0194\\u0196-\\u0198\\u019C-\\u019D\\u019F-\\u01A0\\u01A2\\u01A4\\u01A6-\\u01A7\\u01A9\\u01AC\\u01AE-\\u01AF\\u01B1-\\u01B3\\u01B5\\u01B7-\\u01B8\\u01BC\\u01C4\\u01C7\\u01CA\\u01CD\\u01CF\\u01D1\\u01D3\\u01D5\\u01D7\\u01D9\\u01DB\\u01DE\\u01E0\\u01E2\\u01E4\\u01E6\\u01E8\\u01EA\\u01EC\\u01EE\\u01F1\\u01F4\\u01F6-\\u01F8\\u01FA\\u01FC\\u01FE\\u0200\\u0202\\u0204\\u0206\\u0208\\u020A\\u020C\\u020E\\u0210\\u0212\\u0214\\u0216\\u0218\\u021A\\u021C\\u021E\\u0220\\u0222\\u0224\\u0226\\u0228\\u022A\\u022C\\u022E\\u0230\\u0232\\u023A-\\u023B\\u023D-\\u023E\\u0241\\u0243-\\u0246\\u0248\\u024A\\u024C\\u024E\\u0370\\u0372\\u0376\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u038F\\u0391-\\u03A1\\u03A3-\\u03AB\\u03CF\\u03D2-\\u03D4\\u03D8\\u03DA\\u03DC\\u03DE\\u03E0\\u03E2\\u03E4\\u03E6\\u03E8\\u03EA\\u03EC\\u03EE\\u03F4\\u03F7\\u03F9-\\u03FA\\u03FD-\\u042F\\u0460\\u0462\\u0464\\u0466\\u0468\\u046A\\u046C\\u046E\\u0470\\u0472\\u0474\\u0476\\u0478\\u047A\\u047C\\u047E\\u0480\\u048A\\u048C\\u048E\\u0490\\u0492\\u0494\\u0496\\u0498\\u049A\\u049C\\u049E\\u04A0\\u04A2\\u04A4\\u04A6\\u04A8\\u04AA\\u04AC\\u04AE\\u04B0\\u04B2\\u04B4\\u04B6\\u04B8\\u04BA\\u04BC\\u04BE\\u04C0-\\u04C1\\u04C3\\u04C5\\u04C7\\u04C9\\u04CB\\u04CD\\u04D0\\u04D2\\u04D4\\u04D6\\u04D8\\u04DA\\u04DC\\u04DE\\u04E0\\u04E2\\u04E4\\u04E6\\u04E8\\u04EA\\u04EC\\u04EE\\u04F0\\u04F2\\u04F4\\u04F6\\u04F8\\u04FA\\u04FC\\u04FE\\u0500\\u0502\\u0504\\u0506\\u0508\\u050A\\u050C\\u050E\\u0510\\u0512\\u0514\\u0516\\u0518\\u051A\\u051C\\u051E\\u0520\\u0522\\u0524\\u0526\\u0531-\\u0556\\u10A0-\\u10C5\\u10C7\\u10CD\\u1E00\\u1E02\\u1E04\\u1E06\\u1E08\\u1E0A\\u1E0C\\u1E0E\\u1E10\\u1E12\\u1E14\\u1E16\\u1E18\\u1E1A\\u1E1C\\u1E1E\\u1E20\\u1E22\\u1E24\\u1E26\\u1E28\\u1E2A\\u1E2C\\u1E2E\\u1E30\\u1E32\\u1E34\\u1E36\\u1E38\\u1E3A\\u1E3C\\u1E3E\\u1E40\\u1E42\\u1E44\\u1E46\\u1E48\\u1E4A\\u1E4C\\u1E4E\\u1E50\\u1E52\\u1E54\\u1E56\\u1E58\\u1E5A\\u1E5C\\u1E5E\\u1E60\\u1E62\\u1E64\\u1E66\\u1E68\\u1E6A\\u1E6C\\u1E6E\\u1E70\\u1E72\\u1E74\\u1E76\\u1E78\\u1E7A\\u1E7C\\u1E7E\\u1E80\\u1E82\\u1E84\\u1E86\\u1E88\\u1E8A\\u1E8C\\u1E8E\\u1E90\\u1E92\\u1E94\\u1E9E\\u1EA0\\u1EA2\\u1EA4\\u1EA6\\u1EA8\\u1EAA\\u1EAC\\u1EAE\\u1EB0\\u1EB2\\u1EB4\\u1EB6\\u1EB8\\u1EBA\\u1EBC\\u1EBE\\u1EC0\\u1EC2\\u1EC4\\u1EC6\\u1EC8\\u1ECA\\u1ECC\\u1ECE\\u1ED0\\u1ED2\\u1ED4\\u1ED6\\u1ED8\\u1EDA\\u1EDC\\u1EDE\\u1EE0\\u1EE2\\u1EE4\\u1EE6\\u1EE8\\u1EEA\\u1EEC\\u1EEE\\u1EF0\\u1EF2\\u1EF4\\u1EF6\\u1EF8\\u1EFA\\u1EFC\\u1EFE\\u1F08-\\u1F0F\\u1F18-\\u1F1D\\u1F28-\\u1F2F\\u1F38-\\u1F3F\\u1F48-\\u1F4D\\u1F59\\u1F5B\\u1F5D\\u1F5F\\u1F68-\\u1F6F\\u1FB8-\\u1FBB\\u1FC8-\\u1FCB\\u1FD8-\\u1FDB\\u1FE8-\\u1FEC\\u1FF8-\\u1FFB\\u2102\\u2107\\u210B-\\u210D\\u2110-\\u2112\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u2130-\\u2133\\u213E-\\u213F\\u2145\\u2183\\u2C00-\\u2C2E\\u2C60\\u2C62-\\u2C64\\u2C67\\u2C69\\u2C6B\\u2C6D-\\u2C70\\u2C72\\u2C75\\u2C7E-\\u2C80\\u2C82\\u2C84\\u2C86\\u2C88\\u2C8A\\u2C8C\\u2C8E\\u2C90\\u2C92\\u2C94\\u2C96\\u2C98\\u2C9A\\u2C9C\\u2C9E\\u2CA0\\u2CA2\\u2CA4\\u2CA6\\u2CA8\\u2CAA\\u2CAC\\u2CAE\\u2CB0\\u2CB2\\u2CB4\\u2CB6\\u2CB8\\u2CBA\\u2CBC\\u2CBE\\u2CC0\\u2CC2\\u2CC4\\u2CC6\\u2CC8\\u2CCA\\u2CCC\\u2CCE\\u2CD0\\u2CD2\\u2CD4\\u2CD6\\u2CD8\\u2CDA\\u2CDC\\u2CDE\\u2CE0\\u2CE2\\u2CEB\\u2CED\\u2CF2\\uA640\\uA642\\uA644\\uA646\\uA648\\uA64A\\uA64C\\uA64E\\uA650\\uA652\\uA654\\uA656\\uA658\\uA65A\\uA65C\\uA65E\\uA660\\uA662\\uA664\\uA666\\uA668\\uA66A\\uA66C\\uA680\\uA682\\uA684\\uA686\\uA688\\uA68A\\uA68C\\uA68E\\uA690\\uA692\\uA694\\uA696\\uA722\\uA724\\uA726\\uA728\\uA72A\\uA72C\\uA72E\\uA732\\uA734\\uA736\\uA738\\uA73A\\uA73C\\uA73E\\uA740\\uA742\\uA744\\uA746\\uA748\\uA74A\\uA74C\\uA74E\\uA750\\uA752\\uA754\\uA756\\uA758\\uA75A\\uA75C\\uA75E\\uA760\\uA762\\uA764\\uA766\\uA768\\uA76A\\uA76C\\uA76E\\uA779\\uA77B\\uA77D-\\uA77E\\uA780\\uA782\\uA784\\uA786\\uA78B\\uA78D\\uA790\\uA792\\uA7A0\\uA7A2\\uA7A4\\uA7A6\\uA7A8\\uA7AA\\uFF21-\\uFF3A]/;\n  const peg$c149 = peg$classExpectation(\n    [\n      ['A', 'Z'],\n      ['\\xC0', '\\xD6'],\n      ['\\xD8', '\\xDE'],\n      '\\u0100',\n      '\\u0102',\n      '\\u0104',\n      '\\u0106',\n      '\\u0108',\n      '\\u010A',\n      '\\u010C',\n      '\\u010E',\n      '\\u0110',\n      '\\u0112',\n      '\\u0114',\n      '\\u0116',\n      '\\u0118',\n      '\\u011A',\n      '\\u011C',\n      '\\u011E',\n      '\\u0120',\n      '\\u0122',\n      '\\u0124',\n      '\\u0126',\n      '\\u0128',\n      '\\u012A',\n      '\\u012C',\n      '\\u012E',\n      '\\u0130',\n      '\\u0132',\n      '\\u0134',\n      '\\u0136',\n      '\\u0139',\n      '\\u013B',\n      '\\u013D',\n      '\\u013F',\n      '\\u0141',\n      '\\u0143',\n      '\\u0145',\n      '\\u0147',\n      '\\u014A',\n      '\\u014C',\n      '\\u014E',\n      '\\u0150',\n      '\\u0152',\n      '\\u0154',\n      '\\u0156',\n      '\\u0158',\n      '\\u015A',\n      '\\u015C',\n      '\\u015E',\n      '\\u0160',\n      '\\u0162',\n      '\\u0164',\n      '\\u0166',\n      '\\u0168',\n      '\\u016A',\n      '\\u016C',\n      '\\u016E',\n      '\\u0170',\n      '\\u0172',\n      '\\u0174',\n      '\\u0176',\n      ['\\u0178', '\\u0179'],\n      '\\u017B',\n      '\\u017D',\n      ['\\u0181', '\\u0182'],\n      '\\u0184',\n      ['\\u0186', '\\u0187'],\n      ['\\u0189', '\\u018B'],\n      ['\\u018E', '\\u0191'],\n      ['\\u0193', '\\u0194'],\n      ['\\u0196', '\\u0198'],\n      ['\\u019C', '\\u019D'],\n      ['\\u019F', '\\u01A0'],\n      '\\u01A2',\n      '\\u01A4',\n      ['\\u01A6', '\\u01A7'],\n      '\\u01A9',\n      '\\u01AC',\n      ['\\u01AE', '\\u01AF'],\n      ['\\u01B1', '\\u01B3'],\n      '\\u01B5',\n      ['\\u01B7', '\\u01B8'],\n      '\\u01BC',\n      '\\u01C4',\n      '\\u01C7',\n      '\\u01CA',\n      '\\u01CD',\n      '\\u01CF',\n      '\\u01D1',\n      '\\u01D3',\n      '\\u01D5',\n      '\\u01D7',\n      '\\u01D9',\n      '\\u01DB',\n      '\\u01DE',\n      '\\u01E0',\n      '\\u01E2',\n      '\\u01E4',\n      '\\u01E6',\n      '\\u01E8',\n      '\\u01EA',\n      '\\u01EC',\n      '\\u01EE',\n      '\\u01F1',\n      '\\u01F4',\n      ['\\u01F6', '\\u01F8'],\n      '\\u01FA',\n      '\\u01FC',\n      '\\u01FE',\n      '\\u0200',\n      '\\u0202',\n      '\\u0204',\n      '\\u0206',\n      '\\u0208',\n      '\\u020A',\n      '\\u020C',\n      '\\u020E',\n      '\\u0210',\n      '\\u0212',\n      '\\u0214',\n      '\\u0216',\n      '\\u0218',\n      '\\u021A',\n      '\\u021C',\n      '\\u021E',\n      '\\u0220',\n      '\\u0222',\n      '\\u0224',\n      '\\u0226',\n      '\\u0228',\n      '\\u022A',\n      '\\u022C',\n      '\\u022E',\n      '\\u0230',\n      '\\u0232',\n      ['\\u023A', '\\u023B'],\n      ['\\u023D', '\\u023E'],\n      '\\u0241',\n      ['\\u0243', '\\u0246'],\n      '\\u0248',\n      '\\u024A',\n      '\\u024C',\n      '\\u024E',\n      '\\u0370',\n      '\\u0372',\n      '\\u0376',\n      '\\u0386',\n      ['\\u0388', '\\u038A'],\n      '\\u038C',\n      ['\\u038E', '\\u038F'],\n      ['\\u0391', '\\u03A1'],\n      ['\\u03A3', '\\u03AB'],\n      '\\u03CF',\n      ['\\u03D2', '\\u03D4'],\n      '\\u03D8',\n      '\\u03DA',\n      '\\u03DC',\n      '\\u03DE',\n      '\\u03E0',\n      '\\u03E2',\n      '\\u03E4',\n      '\\u03E6',\n      '\\u03E8',\n      '\\u03EA',\n      '\\u03EC',\n      '\\u03EE',\n      '\\u03F4',\n      '\\u03F7',\n      ['\\u03F9', '\\u03FA'],\n      ['\\u03FD', '\\u042F'],\n      '\\u0460',\n      '\\u0462',\n      '\\u0464',\n      '\\u0466',\n      '\\u0468',\n      '\\u046A',\n      '\\u046C',\n      '\\u046E',\n      '\\u0470',\n      '\\u0472',\n      '\\u0474',\n      '\\u0476',\n      '\\u0478',\n      '\\u047A',\n      '\\u047C',\n      '\\u047E',\n      '\\u0480',\n      '\\u048A',\n      '\\u048C',\n      '\\u048E',\n      '\\u0490',\n      '\\u0492',\n      '\\u0494',\n      '\\u0496',\n      '\\u0498',\n      '\\u049A',\n      '\\u049C',\n      '\\u049E',\n      '\\u04A0',\n      '\\u04A2',\n      '\\u04A4',\n      '\\u04A6',\n      '\\u04A8',\n      '\\u04AA',\n      '\\u04AC',\n      '\\u04AE',\n      '\\u04B0',\n      '\\u04B2',\n      '\\u04B4',\n      '\\u04B6',\n      '\\u04B8',\n      '\\u04BA',\n      '\\u04BC',\n      '\\u04BE',\n      ['\\u04C0', '\\u04C1'],\n      '\\u04C3',\n      '\\u04C5',\n      '\\u04C7',\n      '\\u04C9',\n      '\\u04CB',\n      '\\u04CD',\n      '\\u04D0',\n      '\\u04D2',\n      '\\u04D4',\n      '\\u04D6',\n      '\\u04D8',\n      '\\u04DA',\n      '\\u04DC',\n      '\\u04DE',\n      '\\u04E0',\n      '\\u04E2',\n      '\\u04E4',\n      '\\u04E6',\n      '\\u04E8',\n      '\\u04EA',\n      '\\u04EC',\n      '\\u04EE',\n      '\\u04F0',\n      '\\u04F2',\n      '\\u04F4',\n      '\\u04F6',\n      '\\u04F8',\n      '\\u04FA',\n      '\\u04FC',\n      '\\u04FE',\n      '\\u0500',\n      '\\u0502',\n      '\\u0504',\n      '\\u0506',\n      '\\u0508',\n      '\\u050A',\n      '\\u050C',\n      '\\u050E',\n      '\\u0510',\n      '\\u0512',\n      '\\u0514',\n      '\\u0516',\n      '\\u0518',\n      '\\u051A',\n      '\\u051C',\n      '\\u051E',\n      '\\u0520',\n      '\\u0522',\n      '\\u0524',\n      '\\u0526',\n      ['\\u0531', '\\u0556'],\n      ['\\u10A0', '\\u10C5'],\n      '\\u10C7',\n      '\\u10CD',\n      '\\u1E00',\n      '\\u1E02',\n      '\\u1E04',\n      '\\u1E06',\n      '\\u1E08',\n      '\\u1E0A',\n      '\\u1E0C',\n      '\\u1E0E',\n      '\\u1E10',\n      '\\u1E12',\n      '\\u1E14',\n      '\\u1E16',\n      '\\u1E18',\n      '\\u1E1A',\n      '\\u1E1C',\n      '\\u1E1E',\n      '\\u1E20',\n      '\\u1E22',\n      '\\u1E24',\n      '\\u1E26',\n      '\\u1E28',\n      '\\u1E2A',\n      '\\u1E2C',\n      '\\u1E2E',\n      '\\u1E30',\n      '\\u1E32',\n      '\\u1E34',\n      '\\u1E36',\n      '\\u1E38',\n      '\\u1E3A',\n      '\\u1E3C',\n      '\\u1E3E',\n      '\\u1E40',\n      '\\u1E42',\n      '\\u1E44',\n      '\\u1E46',\n      '\\u1E48',\n      '\\u1E4A',\n      '\\u1E4C',\n      '\\u1E4E',\n      '\\u1E50',\n      '\\u1E52',\n      '\\u1E54',\n      '\\u1E56',\n      '\\u1E58',\n      '\\u1E5A',\n      '\\u1E5C',\n      '\\u1E5E',\n      '\\u1E60',\n      '\\u1E62',\n      '\\u1E64',\n      '\\u1E66',\n      '\\u1E68',\n      '\\u1E6A',\n      '\\u1E6C',\n      '\\u1E6E',\n      '\\u1E70',\n      '\\u1E72',\n      '\\u1E74',\n      '\\u1E76',\n      '\\u1E78',\n      '\\u1E7A',\n      '\\u1E7C',\n      '\\u1E7E',\n      '\\u1E80',\n      '\\u1E82',\n      '\\u1E84',\n      '\\u1E86',\n      '\\u1E88',\n      '\\u1E8A',\n      '\\u1E8C',\n      '\\u1E8E',\n      '\\u1E90',\n      '\\u1E92',\n      '\\u1E94',\n      '\\u1E9E',\n      '\\u1EA0',\n      '\\u1EA2',\n      '\\u1EA4',\n      '\\u1EA6',\n      '\\u1EA8',\n      '\\u1EAA',\n      '\\u1EAC',\n      '\\u1EAE',\n      '\\u1EB0',\n      '\\u1EB2',\n      '\\u1EB4',\n      '\\u1EB6',\n      '\\u1EB8',\n      '\\u1EBA',\n      '\\u1EBC',\n      '\\u1EBE',\n      '\\u1EC0',\n      '\\u1EC2',\n      '\\u1EC4',\n      '\\u1EC6',\n      '\\u1EC8',\n      '\\u1ECA',\n      '\\u1ECC',\n      '\\u1ECE',\n      '\\u1ED0',\n      '\\u1ED2',\n      '\\u1ED4',\n      '\\u1ED6',\n      '\\u1ED8',\n      '\\u1EDA',\n      '\\u1EDC',\n      '\\u1EDE',\n      '\\u1EE0',\n      '\\u1EE2',\n      '\\u1EE4',\n      '\\u1EE6',\n      '\\u1EE8',\n      '\\u1EEA',\n      '\\u1EEC',\n      '\\u1EEE',\n      '\\u1EF0',\n      '\\u1EF2',\n      '\\u1EF4',\n      '\\u1EF6',\n      '\\u1EF8',\n      '\\u1EFA',\n      '\\u1EFC',\n      '\\u1EFE',\n      ['\\u1F08', '\\u1F0F'],\n      ['\\u1F18', '\\u1F1D'],\n      ['\\u1F28', '\\u1F2F'],\n      ['\\u1F38', '\\u1F3F'],\n      ['\\u1F48', '\\u1F4D'],\n      '\\u1F59',\n      '\\u1F5B',\n      '\\u1F5D',\n      '\\u1F5F',\n      ['\\u1F68', '\\u1F6F'],\n      ['\\u1FB8', '\\u1FBB'],\n      ['\\u1FC8', '\\u1FCB'],\n      ['\\u1FD8', '\\u1FDB'],\n      ['\\u1FE8', '\\u1FEC'],\n      ['\\u1FF8', '\\u1FFB'],\n      '\\u2102',\n      '\\u2107',\n      ['\\u210B', '\\u210D'],\n      ['\\u2110', '\\u2112'],\n      '\\u2115',\n      ['\\u2119', '\\u211D'],\n      '\\u2124',\n      '\\u2126',\n      '\\u2128',\n      ['\\u212A', '\\u212D'],\n      ['\\u2130', '\\u2133'],\n      ['\\u213E', '\\u213F'],\n      '\\u2145',\n      '\\u2183',\n      ['\\u2C00', '\\u2C2E'],\n      '\\u2C60',\n      ['\\u2C62', '\\u2C64'],\n      '\\u2C67',\n      '\\u2C69',\n      '\\u2C6B',\n      ['\\u2C6D', '\\u2C70'],\n      '\\u2C72',\n      '\\u2C75',\n      ['\\u2C7E', '\\u2C80'],\n      '\\u2C82',\n      '\\u2C84',\n      '\\u2C86',\n      '\\u2C88',\n      '\\u2C8A',\n      '\\u2C8C',\n      '\\u2C8E',\n      '\\u2C90',\n      '\\u2C92',\n      '\\u2C94',\n      '\\u2C96',\n      '\\u2C98',\n      '\\u2C9A',\n      '\\u2C9C',\n      '\\u2C9E',\n      '\\u2CA0',\n      '\\u2CA2',\n      '\\u2CA4',\n      '\\u2CA6',\n      '\\u2CA8',\n      '\\u2CAA',\n      '\\u2CAC',\n      '\\u2CAE',\n      '\\u2CB0',\n      '\\u2CB2',\n      '\\u2CB4',\n      '\\u2CB6',\n      '\\u2CB8',\n      '\\u2CBA',\n      '\\u2CBC',\n      '\\u2CBE',\n      '\\u2CC0',\n      '\\u2CC2',\n      '\\u2CC4',\n      '\\u2CC6',\n      '\\u2CC8',\n      '\\u2CCA',\n      '\\u2CCC',\n      '\\u2CCE',\n      '\\u2CD0',\n      '\\u2CD2',\n      '\\u2CD4',\n      '\\u2CD6',\n      '\\u2CD8',\n      '\\u2CDA',\n      '\\u2CDC',\n      '\\u2CDE',\n      '\\u2CE0',\n      '\\u2CE2',\n      '\\u2CEB',\n      '\\u2CED',\n      '\\u2CF2',\n      '\\uA640',\n      '\\uA642',\n      '\\uA644',\n      '\\uA646',\n      '\\uA648',\n      '\\uA64A',\n      '\\uA64C',\n      '\\uA64E',\n      '\\uA650',\n      '\\uA652',\n      '\\uA654',\n      '\\uA656',\n      '\\uA658',\n      '\\uA65A',\n      '\\uA65C',\n      '\\uA65E',\n      '\\uA660',\n      '\\uA662',\n      '\\uA664',\n      '\\uA666',\n      '\\uA668',\n      '\\uA66A',\n      '\\uA66C',\n      '\\uA680',\n      '\\uA682',\n      '\\uA684',\n      '\\uA686',\n      '\\uA688',\n      '\\uA68A',\n      '\\uA68C',\n      '\\uA68E',\n      '\\uA690',\n      '\\uA692',\n      '\\uA694',\n      '\\uA696',\n      '\\uA722',\n      '\\uA724',\n      '\\uA726',\n      '\\uA728',\n      '\\uA72A',\n      '\\uA72C',\n      '\\uA72E',\n      '\\uA732',\n      '\\uA734',\n      '\\uA736',\n      '\\uA738',\n      '\\uA73A',\n      '\\uA73C',\n      '\\uA73E',\n      '\\uA740',\n      '\\uA742',\n      '\\uA744',\n      '\\uA746',\n      '\\uA748',\n      '\\uA74A',\n      '\\uA74C',\n      '\\uA74E',\n      '\\uA750',\n      '\\uA752',\n      '\\uA754',\n      '\\uA756',\n      '\\uA758',\n      '\\uA75A',\n      '\\uA75C',\n      '\\uA75E',\n      '\\uA760',\n      '\\uA762',\n      '\\uA764',\n      '\\uA766',\n      '\\uA768',\n      '\\uA76A',\n      '\\uA76C',\n      '\\uA76E',\n      '\\uA779',\n      '\\uA77B',\n      ['\\uA77D', '\\uA77E'],\n      '\\uA780',\n      '\\uA782',\n      '\\uA784',\n      '\\uA786',\n      '\\uA78B',\n      '\\uA78D',\n      '\\uA790',\n      '\\uA792',\n      '\\uA7A0',\n      '\\uA7A2',\n      '\\uA7A4',\n      '\\uA7A6',\n      '\\uA7A8',\n      '\\uA7AA',\n      ['\\uFF21', '\\uFF3A'],\n    ],\n    false,\n    false,\n  );\n  const peg$c150 = /^[\\u16EE-\\u16F0\\u2160-\\u2182\\u2185-\\u2188\\u3007\\u3021-\\u3029\\u3038-\\u303A\\uA6E6-\\uA6EF]/;\n  const peg$c151 = peg$classExpectation(\n    [\n      ['\\u16EE', '\\u16F0'],\n      ['\\u2160', '\\u2182'],\n      ['\\u2185', '\\u2188'],\n      '\\u3007',\n      ['\\u3021', '\\u3029'],\n      ['\\u3038', '\\u303A'],\n      ['\\uA6E6', '\\uA6EF'],\n    ],\n    false,\n    false,\n  );\n  const peg$c152 =\n    /^[0-9\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19]/;\n  const peg$c153 = peg$classExpectation(\n    [\n      ['0', '9'],\n      ['\\u0660', '\\u0669'],\n      ['\\u06F0', '\\u06F9'],\n      ['\\u07C0', '\\u07C9'],\n      ['\\u0966', '\\u096F'],\n      ['\\u09E6', '\\u09EF'],\n      ['\\u0A66', '\\u0A6F'],\n      ['\\u0AE6', '\\u0AEF'],\n      ['\\u0B66', '\\u0B6F'],\n      ['\\u0BE6', '\\u0BEF'],\n      ['\\u0C66', '\\u0C6F'],\n      ['\\u0CE6', '\\u0CEF'],\n      ['\\u0D66', '\\u0D6F'],\n      ['\\u0E50', '\\u0E59'],\n      ['\\u0ED0', '\\u0ED9'],\n      ['\\u0F20', '\\u0F29'],\n      ['\\u1040', '\\u1049'],\n      ['\\u1090', '\\u1099'],\n      ['\\u17E0', '\\u17E9'],\n      ['\\u1810', '\\u1819'],\n      ['\\u1946', '\\u194F'],\n      ['\\u19D0', '\\u19D9'],\n      ['\\u1A80', '\\u1A89'],\n      ['\\u1A90', '\\u1A99'],\n      ['\\u1B50', '\\u1B59'],\n      ['\\u1BB0', '\\u1BB9'],\n      ['\\u1C40', '\\u1C49'],\n      ['\\u1C50', '\\u1C59'],\n      ['\\uA620', '\\uA629'],\n      ['\\uA8D0', '\\uA8D9'],\n      ['\\uA900', '\\uA909'],\n      ['\\uA9D0', '\\uA9D9'],\n      ['\\uAA50', '\\uAA59'],\n      ['\\uABF0', '\\uABF9'],\n      ['\\uFF10', '\\uFF19'],\n    ],\n    false,\n    false,\n  );\n  let peg$currPos = 0;\n  let peg$savedPos = 0;\n  const peg$posDetailsCache = [{ line: 1, column: 1 }];\n  let peg$maxFailPos = 0;\n  let peg$maxFailExpected = [];\n  let peg$silentFails = 0;\n  let peg$result;\n  if (options.startRule !== undefined) {\n    if (!(options.startRule in peg$startRuleFunctions)) {\n      throw new Error('Can\\'t start parsing from rule \"' + options.startRule + '\".');\n    }\n    peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n  }\n  function text() {\n    return input.substring(peg$savedPos, peg$currPos);\n  }\n  function location() {\n    return peg$computeLocation(peg$savedPos, peg$currPos);\n  }\n  function error(message, location1) {\n    location1 = location1 !== undefined ? location1 : peg$computeLocation(peg$savedPos, peg$currPos);\n    throw peg$buildSimpleError(message, location1);\n  }\n  function peg$literalExpectation(text1, ignoreCase) {\n    return { type: 'literal', text: text1, ignoreCase: ignoreCase };\n  }\n  function peg$classExpectation(parts, inverted, ignoreCase) {\n    return { type: 'class', parts: parts, inverted: inverted, ignoreCase: ignoreCase };\n  }\n  function peg$anyExpectation() {\n    return { type: 'any' };\n  }\n  function peg$endExpectation() {\n    return { type: 'end' };\n  }\n  function peg$otherExpectation(description) {\n    return { type: 'other', description: description };\n  }\n  function peg$computePosDetails(pos) {\n    let details = peg$posDetailsCache[pos];\n    let p;\n    if (details) {\n      return details;\n    } else {\n      p = pos - 1;\n      while (!peg$posDetailsCache[p]) {\n        p--;\n      }\n      details = peg$posDetailsCache[p];\n      details = {\n        line: details.line,\n        column: details.column,\n      };\n      while (p < pos) {\n        if (input.charCodeAt(p) === 10) {\n          details.line++;\n          details.column = 1;\n        } else {\n          details.column++;\n        }\n        p++;\n      }\n      peg$posDetailsCache[pos] = details;\n      return details;\n    }\n  }\n  function peg$computeLocation(startPos, endPos) {\n    const startPosDetails = peg$computePosDetails(startPos);\n    const endPosDetails = peg$computePosDetails(endPos);\n    return {\n      source: peg$source,\n      start: {\n        offset: startPos,\n        line: startPosDetails.line,\n        column: startPosDetails.column,\n      },\n      end: {\n        offset: endPos,\n        line: endPosDetails.line,\n        column: endPosDetails.column,\n      },\n    };\n  }\n  function peg$fail(expected1) {\n    if (peg$currPos < peg$maxFailPos) {\n      return;\n    }\n    if (peg$currPos > peg$maxFailPos) {\n      peg$maxFailPos = peg$currPos;\n      peg$maxFailExpected = [];\n    }\n    peg$maxFailExpected.push(expected1);\n  }\n  function peg$buildSimpleError(message, location1) {\n    return new DotSyntaxError$1(message, [], '', location1);\n  }\n  function peg$buildStructuredError(expected1, found, location1) {\n    return new DotSyntaxError$1(DotSyntaxError$1.buildMessage(expected1, found), expected1, found, location1);\n  }\n  function peg$parseDot() {\n    let s0, s1, s2, s3;\n    s0 = peg$currPos;\n    s1 = peg$parse__();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_dot();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parse__();\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c0(s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    return s0;\n  }\n  function peg$parseGraph() {\n    let s0, s1, s2, s3;\n    s0 = peg$currPos;\n    s1 = peg$parse__();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_graph();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parse__();\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c0(s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    return s0;\n  }\n  function peg$parseNode() {\n    let s0, s1, s2, s3;\n    s0 = peg$currPos;\n    s1 = peg$parse__();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_node();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parse__();\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c0(s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    return s0;\n  }\n  function peg$parseAttributeList() {\n    let s0, s1, s2, s3;\n    s0 = peg$currPos;\n    s1 = peg$parse__();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_attributes();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parse__();\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c0(s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    return s0;\n  }\n  function peg$parseAttribute() {\n    let s0, s1, s2, s3;\n    s0 = peg$currPos;\n    s1 = peg$parse__();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_attribute();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parse__();\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c0(s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    return s0;\n  }\n  function peg$parseEdge() {\n    let s0, s1, s2, s3;\n    s0 = peg$currPos;\n    s1 = peg$parse__();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_edge();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parse__();\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c0(s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    return s0;\n  }\n  function peg$parseSubgraph() {\n    let s0, s1, s2, s3;\n    s0 = peg$currPos;\n    s1 = peg$parse__();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_subgraph();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parse__();\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c0(s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    return s0;\n  }\n  function peg$parseNodeRef() {\n    let s0, s1, s2, s3;\n    s0 = peg$currPos;\n    s1 = peg$parse__();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_node_ref();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parse__();\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c0(s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    return s0;\n  }\n  function peg$parseAttibutesItem() {\n    let s0, s1, s2, s3;\n    s0 = peg$currPos;\n    s1 = peg$parse__();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_attibutes_item();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parse__();\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c0(s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    return s0;\n  }\n  function peg$parseComment() {\n    let s0, s1, s2, s3;\n    s0 = peg$currPos;\n    s1 = peg$parse__();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_comment();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parse__();\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c0(s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    return s0;\n  }\n  function peg$parseClusterStatements() {\n    let s0, s1;\n    s0 = [];\n    s1 = peg$parseAttribute();\n    if (s1 === peg$FAILED) {\n      s1 = peg$parseAttributeList();\n      if (s1 === peg$FAILED) {\n        s1 = peg$parseEdge();\n        if (s1 === peg$FAILED) {\n          s1 = peg$parseSubgraph();\n          if (s1 === peg$FAILED) {\n            s1 = peg$parseNode();\n            if (s1 === peg$FAILED) {\n              s1 = peg$parseComment();\n            }\n          }\n        }\n      }\n    }\n    while (s1 !== peg$FAILED) {\n      s0.push(s1);\n      s1 = peg$parseAttribute();\n      if (s1 === peg$FAILED) {\n        s1 = peg$parseAttributeList();\n        if (s1 === peg$FAILED) {\n          s1 = peg$parseEdge();\n          if (s1 === peg$FAILED) {\n            s1 = peg$parseSubgraph();\n            if (s1 === peg$FAILED) {\n              s1 = peg$parseNode();\n              if (s1 === peg$FAILED) {\n                s1 = peg$parseComment();\n              }\n            }\n          }\n        }\n      }\n    }\n    return s0;\n  }\n  function peg$parse_dot() {\n    let s0, s1, s2, s3, s4;\n    s0 = peg$currPos;\n    s1 = [];\n    s2 = peg$parseComment();\n    while (s2 !== peg$FAILED) {\n      s1.push(s2);\n      s2 = peg$parseComment();\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parseGraph();\n      if (s2 !== peg$FAILED) {\n        s3 = [];\n        s4 = peg$parseComment();\n        while (s4 !== peg$FAILED) {\n          s3.push(s4);\n          s4 = peg$parseComment();\n        }\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c1(s1, s2, s3);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    return s0;\n  }\n  function peg$parse_graph() {\n    let s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;\n    s0 = peg$currPos;\n    if (input.substr(peg$currPos, 6).toLowerCase() === peg$c2) {\n      s1 = input.substr(peg$currPos, 6);\n      peg$currPos += 6;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) {\n        peg$fail(peg$c3);\n      }\n    }\n    if (s1 === peg$FAILED) {\n      s1 = null;\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 !== peg$FAILED) {\n        if (input.substr(peg$currPos, 5).toLowerCase() === peg$c4) {\n          s3 = input.substr(peg$currPos, 5);\n          peg$currPos += 5;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$c5);\n          }\n        }\n        if (s3 === peg$FAILED) {\n          if (input.substr(peg$currPos, 7).toLowerCase() === peg$c6) {\n            s3 = input.substr(peg$currPos, 7);\n            peg$currPos += 7;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$c7);\n            }\n          }\n        }\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parse_();\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parse_literal();\n            if (s5 === peg$FAILED) {\n              s5 = null;\n            }\n            if (s5 !== peg$FAILED) {\n              s6 = peg$parse__();\n              if (s6 !== peg$FAILED) {\n                if (input.charCodeAt(peg$currPos) === 123) {\n                  s7 = peg$c8;\n                  peg$currPos++;\n                } else {\n                  s7 = peg$FAILED;\n                  if (peg$silentFails === 0) {\n                    peg$fail(peg$c9);\n                  }\n                }\n                if (s7 !== peg$FAILED) {\n                  s8 = peg$parseClusterStatements();\n                  if (s8 !== peg$FAILED) {\n                    s9 = peg$parse__();\n                    if (s9 !== peg$FAILED) {\n                      if (input.charCodeAt(peg$currPos) === 125) {\n                        s10 = peg$c10;\n                        peg$currPos++;\n                      } else {\n                        s10 = peg$FAILED;\n                        if (peg$silentFails === 0) {\n                          peg$fail(peg$c11);\n                        }\n                      }\n                      if (s10 !== peg$FAILED) {\n                        peg$savedPos = s0;\n                        s1 = peg$c12(s1, s3, s5, s8);\n                        s0 = s1;\n                      } else {\n                        peg$currPos = s0;\n                        s0 = peg$FAILED;\n                      }\n                    } else {\n                      peg$currPos = s0;\n                      s0 = peg$FAILED;\n                    }\n                  } else {\n                    peg$currPos = s0;\n                    s0 = peg$FAILED;\n                  }\n                } else {\n                  peg$currPos = s0;\n                  s0 = peg$FAILED;\n                }\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    return s0;\n  }\n  function peg$parse_attribute() {\n    let s0, s1, s2, s3;\n    s0 = peg$currPos;\n    s1 = peg$parse_key_value();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 59) {\n          s3 = peg$c13;\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$c14);\n          }\n        }\n        if (s3 === peg$FAILED) {\n          s3 = null;\n        }\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c15(s1);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    return s0;\n  }\n  function peg$parse_attributes() {\n    let s0, s1, s2, s3, s4;\n    s0 = peg$currPos;\n    if (input.substr(peg$currPos, 5).toLowerCase() === peg$c4) {\n      s1 = input.substr(peg$currPos, 5);\n      peg$currPos += 5;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) {\n        peg$fail(peg$c5);\n      }\n    }\n    if (s1 === peg$FAILED) {\n      if (input.substr(peg$currPos, 4).toLowerCase() === peg$c16) {\n        s1 = input.substr(peg$currPos, 4);\n        peg$currPos += 4;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) {\n          peg$fail(peg$c17);\n        }\n      }\n      if (s1 === peg$FAILED) {\n        if (input.substr(peg$currPos, 4).toLowerCase() === peg$c18) {\n          s1 = input.substr(peg$currPos, 4);\n          peg$currPos += 4;\n        } else {\n          s1 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$c19);\n          }\n        }\n      }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_attribute_list();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parse_();\n        if (s3 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 59) {\n            s4 = peg$c13;\n            peg$currPos++;\n          } else {\n            s4 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$c14);\n            }\n          }\n          if (s4 === peg$FAILED) {\n            s4 = null;\n          }\n          if (s4 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c20(s1, s2);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    return s0;\n  }\n  function peg$parse_edge() {\n    let s0, s1, s2, s3, s4, s5;\n    s0 = peg$currPos;\n    s1 = peg$parse_edge_target();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_edge_rhs();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parse_attribute_list();\n        if (s3 === peg$FAILED) {\n          s3 = null;\n        }\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parse_();\n          if (s4 !== peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 59) {\n              s5 = peg$c13;\n              peg$currPos++;\n            } else {\n              s5 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$c14);\n              }\n            }\n            if (s5 === peg$FAILED) {\n              s5 = null;\n            }\n            if (s5 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s1 = peg$c21(s1, s2, s3);\n              s0 = s1;\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    return s0;\n  }\n  function peg$parse_node() {\n    let s0, s1, s2, s3, s4, s5;\n    s0 = peg$currPos;\n    s1 = peg$parse_literal();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parse_attribute_list();\n        if (s3 === peg$FAILED) {\n          s3 = null;\n        }\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parse_();\n          if (s4 !== peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 59) {\n              s5 = peg$c13;\n              peg$currPos++;\n            } else {\n              s5 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$c14);\n              }\n            }\n            if (s5 === peg$FAILED) {\n              s5 = null;\n            }\n            if (s5 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s1 = peg$c22(s1, s3);\n              s0 = s1;\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    return s0;\n  }\n  function peg$parse_key_value() {\n    let s0, s1, s2, s3, s4, s5;\n    s0 = peg$currPos;\n    s1 = peg$parse_literal();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 61) {\n          s3 = peg$c23;\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$c24);\n          }\n        }\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parse_();\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parse_literal();\n            if (s5 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s1 = peg$c25(s1, s5);\n              s0 = s1;\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    return s0;\n  }\n  function peg$parse_attibutes_item() {\n    let s0, s1, s2, s3;\n    s0 = peg$currPos;\n    s1 = peg$parse_key_value();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 44) {\n          s3 = peg$c26;\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$c27);\n          }\n        }\n        if (s3 === peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 59) {\n            s3 = peg$c13;\n            peg$currPos++;\n          } else {\n            s3 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$c14);\n            }\n          }\n        }\n        if (s3 === peg$FAILED) {\n          s3 = null;\n        }\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c28(s1);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    return s0;\n  }\n  function peg$parse_attribute_list() {\n    let s0, s1, s2, s3, s4, s5;\n    s0 = peg$currPos;\n    s1 = peg$parse_();\n    if (s1 !== peg$FAILED) {\n      if (input.charCodeAt(peg$currPos) === 91) {\n        s2 = peg$c29;\n        peg$currPos++;\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) {\n          peg$fail(peg$c30);\n        }\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = [];\n        s4 = peg$parseAttibutesItem();\n        if (s4 === peg$FAILED) {\n          s4 = peg$parseComment();\n        }\n        while (s4 !== peg$FAILED) {\n          s3.push(s4);\n          s4 = peg$parseAttibutesItem();\n          if (s4 === peg$FAILED) {\n            s4 = peg$parseComment();\n          }\n        }\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parse__();\n          if (s4 !== peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 93) {\n              s5 = peg$c31;\n              peg$currPos++;\n            } else {\n              s5 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$c32);\n              }\n            }\n            if (s5 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s1 = peg$c33(s3);\n              s0 = s1;\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    return s0;\n  }\n  function peg$parse_edge_target_group() {\n    let s0, s1, s2, s3, s4, s5, s6;\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 123) {\n      s1 = peg$c8;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) {\n        peg$fail(peg$c9);\n      }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parseNodeRef();\n      if (s2 !== peg$FAILED) {\n        s3 = [];\n        s4 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 44) {\n          s5 = peg$c26;\n          peg$currPos++;\n        } else {\n          s5 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$c27);\n          }\n        }\n        if (s5 === peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 59) {\n            s5 = peg$c13;\n            peg$currPos++;\n          } else {\n            s5 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$c14);\n            }\n          }\n        }\n        if (s5 === peg$FAILED) {\n          s5 = null;\n        }\n        if (s5 !== peg$FAILED) {\n          s6 = peg$parseNodeRef();\n          if (s6 !== peg$FAILED) {\n            peg$savedPos = s4;\n            s5 = peg$c34(s2, s6);\n            s4 = s5;\n          } else {\n            peg$currPos = s4;\n            s4 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s4;\n          s4 = peg$FAILED;\n        }\n        while (s4 !== peg$FAILED) {\n          s3.push(s4);\n          s4 = peg$currPos;\n          if (input.charCodeAt(peg$currPos) === 44) {\n            s5 = peg$c26;\n            peg$currPos++;\n          } else {\n            s5 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$c27);\n            }\n          }\n          if (s5 === peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 59) {\n              s5 = peg$c13;\n              peg$currPos++;\n            } else {\n              s5 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$c14);\n              }\n            }\n          }\n          if (s5 === peg$FAILED) {\n            s5 = null;\n          }\n          if (s5 !== peg$FAILED) {\n            s6 = peg$parseNodeRef();\n            if (s6 !== peg$FAILED) {\n              peg$savedPos = s4;\n              s5 = peg$c34(s2, s6);\n              s4 = s5;\n            } else {\n              peg$currPos = s4;\n              s4 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s4;\n            s4 = peg$FAILED;\n          }\n        }\n        if (s3 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 44) {\n            s4 = peg$c26;\n            peg$currPos++;\n          } else {\n            s4 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$c27);\n            }\n          }\n          if (s4 === peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 59) {\n              s4 = peg$c13;\n              peg$currPos++;\n            } else {\n              s4 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$c14);\n              }\n            }\n          }\n          if (s4 === peg$FAILED) {\n            s4 = null;\n          }\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parse__();\n            if (s5 !== peg$FAILED) {\n              if (input.charCodeAt(peg$currPos) === 125) {\n                s6 = peg$c10;\n                peg$currPos++;\n              } else {\n                s6 = peg$FAILED;\n                if (peg$silentFails === 0) {\n                  peg$fail(peg$c11);\n                }\n              }\n              if (s6 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c35(s2, s3);\n                s0 = s1;\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    return s0;\n  }\n  function peg$parse_edge_target() {\n    let s0;\n    s0 = peg$parse_edge_target_group();\n    if (s0 === peg$FAILED) {\n      s0 = peg$parseNodeRef();\n    }\n    return s0;\n  }\n  function peg$parse_edge_operator() {\n    let s0, s1;\n    s0 = peg$currPos;\n    if (input.substr(peg$currPos, 2) === peg$c36) {\n      s1 = peg$c36;\n      peg$currPos += 2;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) {\n        peg$fail(peg$c37);\n      }\n    }\n    if (s1 === peg$FAILED) {\n      if (input.substr(peg$currPos, 2) === peg$c38) {\n        s1 = peg$c38;\n        peg$currPos += 2;\n      } else {\n        s1 = peg$FAILED;\n        if (peg$silentFails === 0) {\n          peg$fail(peg$c39);\n        }\n      }\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c40(s1);\n    }\n    s0 = s1;\n    return s0;\n  }\n  function peg$parse_edge_rhs() {\n    let s0, s1, s2, s3, s4, s5, s6;\n    s0 = peg$currPos;\n    s1 = peg$parse_();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_edge_operator();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parse_();\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parse_edge_target();\n          if (s4 !== peg$FAILED) {\n            s5 = peg$parse_();\n            if (s5 !== peg$FAILED) {\n              s6 = peg$parse_edge_rhs();\n              if (s6 === peg$FAILED) {\n                s6 = null;\n              }\n              if (s6 !== peg$FAILED) {\n                peg$savedPos = s0;\n                s1 = peg$c41(s2, s4, s6);\n                s0 = s1;\n              } else {\n                peg$currPos = s0;\n                s0 = peg$FAILED;\n              }\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    return s0;\n  }\n  function peg$parse_node_ref() {\n    let s0, s1, s2;\n    s0 = peg$currPos;\n    s1 = peg$parse_literal();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_port();\n      if (s2 === peg$FAILED) {\n        s2 = null;\n      }\n      if (s2 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c42(s1, s2);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    return s0;\n  }\n  function peg$parse_port() {\n    let s0, s1, s2, s3, s4, s5;\n    peg$silentFails++;\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 58) {\n      s1 = peg$c44;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) {\n        peg$fail(peg$c45);\n      }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_literal();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$currPos;\n        if (input.charCodeAt(peg$currPos) === 58) {\n          s4 = peg$c44;\n          peg$currPos++;\n        } else {\n          s4 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$c45);\n          }\n        }\n        if (s4 !== peg$FAILED) {\n          s5 = peg$parse_compass();\n          if (s5 !== peg$FAILED) {\n            peg$savedPos = s3;\n            s4 = peg$c46(s2, s5);\n            s3 = s4;\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n        if (s3 === peg$FAILED) {\n          s3 = null;\n        }\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c47(s2, s3);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) {\n        peg$fail(peg$c43);\n      }\n    }\n    return s0;\n  }\n  function peg$parse_subgraph_id() {\n    let s0, s1, s2, s3, s4;\n    s0 = peg$currPos;\n    if (input.substr(peg$currPos, 8).toLowerCase() === peg$c48) {\n      s1 = input.substr(peg$currPos, 8);\n      peg$currPos += 8;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) {\n        peg$fail(peg$c49);\n      }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parse_();\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parse_literal();\n        if (s3 === peg$FAILED) {\n          s3 = null;\n        }\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parse_();\n          if (s4 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c50(s3);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    return s0;\n  }\n  function peg$parse_subgraph() {\n    let s0, s1, s2, s3, s4, s5;\n    s0 = peg$currPos;\n    s1 = peg$parse_subgraph_id();\n    if (s1 === peg$FAILED) {\n      s1 = null;\n    }\n    if (s1 !== peg$FAILED) {\n      if (input.charCodeAt(peg$currPos) === 123) {\n        s2 = peg$c8;\n        peg$currPos++;\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) {\n          peg$fail(peg$c9);\n        }\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parseClusterStatements();\n        if (s3 === peg$FAILED) {\n          s3 = null;\n        }\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parse__();\n          if (s4 !== peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 125) {\n              s5 = peg$c10;\n              peg$currPos++;\n            } else {\n              s5 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$c11);\n              }\n            }\n            if (s5 !== peg$FAILED) {\n              peg$savedPos = s0;\n              s1 = peg$c51(s1, s3);\n              s0 = s1;\n            } else {\n              peg$currPos = s0;\n              s0 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    return s0;\n  }\n  function peg$parse_compass_keyword() {\n    let s0;\n    if (input.charCodeAt(peg$currPos) === 110) {\n      s0 = peg$c52;\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) {\n        peg$fail(peg$c53);\n      }\n    }\n    if (s0 === peg$FAILED) {\n      if (input.substr(peg$currPos, 2) === peg$c54) {\n        s0 = peg$c54;\n        peg$currPos += 2;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) {\n          peg$fail(peg$c55);\n        }\n      }\n      if (s0 === peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 101) {\n          s0 = peg$c56;\n          peg$currPos++;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$c57);\n          }\n        }\n        if (s0 === peg$FAILED) {\n          if (input.substr(peg$currPos, 2) === peg$c58) {\n            s0 = peg$c58;\n            peg$currPos += 2;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$c59);\n            }\n          }\n          if (s0 === peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 115) {\n              s0 = peg$c60;\n              peg$currPos++;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$c61);\n              }\n            }\n            if (s0 === peg$FAILED) {\n              if (input.substr(peg$currPos, 2) === peg$c62) {\n                s0 = peg$c62;\n                peg$currPos += 2;\n              } else {\n                s0 = peg$FAILED;\n                if (peg$silentFails === 0) {\n                  peg$fail(peg$c63);\n                }\n              }\n              if (s0 === peg$FAILED) {\n                if (input.charCodeAt(peg$currPos) === 119) {\n                  s0 = peg$c64;\n                  peg$currPos++;\n                } else {\n                  s0 = peg$FAILED;\n                  if (peg$silentFails === 0) {\n                    peg$fail(peg$c65);\n                  }\n                }\n                if (s0 === peg$FAILED) {\n                  if (input.substr(peg$currPos, 2) === peg$c66) {\n                    s0 = peg$c66;\n                    peg$currPos += 2;\n                  } else {\n                    s0 = peg$FAILED;\n                    if (peg$silentFails === 0) {\n                      peg$fail(peg$c67);\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n    return s0;\n  }\n  function peg$parse_compass() {\n    let s0, s1, s2, s3, s4;\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    s2 = peg$parse_compass_keyword();\n    if (s2 !== peg$FAILED) {\n      peg$savedPos = s1;\n      s2 = peg$c68(s2);\n    }\n    s1 = s2;\n    if (s1 === peg$FAILED) {\n      s1 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 34) {\n        s2 = peg$c69;\n        peg$currPos++;\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) {\n          peg$fail(peg$c70);\n        }\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = peg$parse_compass_keyword();\n        if (s3 !== peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 34) {\n            s4 = peg$c69;\n            peg$currPos++;\n          } else {\n            s4 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$c70);\n            }\n          }\n          if (s4 !== peg$FAILED) {\n            peg$savedPos = s1;\n            s2 = peg$c71(s3);\n            s1 = s2;\n          } else {\n            peg$currPos = s1;\n            s1 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s1;\n          s1 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c72(s1);\n    }\n    s0 = s1;\n    return s0;\n  }\n  function peg$parse_literal() {\n    let s0, s1;\n    s0 = peg$parseQUOTED_STRING();\n    if (s0 === peg$FAILED) {\n      s0 = peg$parseHTML_STRING();\n      if (s0 === peg$FAILED) {\n        s0 = peg$currPos;\n        s1 = peg$parseSTRING();\n        if (s1 === peg$FAILED) {\n          s1 = peg$parseNUMBER_STRING();\n          if (s1 === peg$FAILED) {\n            s1 = peg$parseNUMBER();\n          }\n        }\n        if (s1 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c73(s1);\n        }\n        s0 = s1;\n      }\n    }\n    return s0;\n  }\n  function peg$parse_comment() {\n    let s0;\n    s0 = peg$parse_block_comment();\n    if (s0 === peg$FAILED) {\n      s0 = peg$parse_slash_comment();\n      if (s0 === peg$FAILED) {\n        s0 = peg$parse_macro_comment();\n      }\n    }\n    return s0;\n  }\n  function peg$parse_block_comment() {\n    let s0, s1, s2, s3, s4, s5;\n    s0 = peg$currPos;\n    if (input.substr(peg$currPos, 2) === peg$c74) {\n      s1 = peg$c74;\n      peg$currPos += 2;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) {\n        peg$fail(peg$c75);\n      }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$currPos;\n      s4 = peg$currPos;\n      peg$silentFails++;\n      if (input.substr(peg$currPos, 2) === peg$c76) {\n        s5 = peg$c76;\n        peg$currPos += 2;\n      } else {\n        s5 = peg$FAILED;\n        if (peg$silentFails === 0) {\n          peg$fail(peg$c77);\n        }\n      }\n      peg$silentFails--;\n      if (s5 === peg$FAILED) {\n        s4 = undefined;\n      } else {\n        peg$currPos = s4;\n        s4 = peg$FAILED;\n      }\n      if (s4 !== peg$FAILED) {\n        if (input.length > peg$currPos) {\n          s5 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s5 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$c78);\n          }\n        }\n        if (s5 !== peg$FAILED) {\n          peg$savedPos = s3;\n          s4 = peg$c0(s5);\n          s3 = s4;\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$currPos;\n        s4 = peg$currPos;\n        peg$silentFails++;\n        if (input.substr(peg$currPos, 2) === peg$c76) {\n          s5 = peg$c76;\n          peg$currPos += 2;\n        } else {\n          s5 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$c77);\n          }\n        }\n        peg$silentFails--;\n        if (s5 === peg$FAILED) {\n          s4 = undefined;\n        } else {\n          peg$currPos = s4;\n          s4 = peg$FAILED;\n        }\n        if (s4 !== peg$FAILED) {\n          if (input.length > peg$currPos) {\n            s5 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s5 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$c78);\n            }\n          }\n          if (s5 !== peg$FAILED) {\n            peg$savedPos = s3;\n            s4 = peg$c0(s5);\n            s3 = s4;\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      }\n      if (s2 !== peg$FAILED) {\n        if (input.substr(peg$currPos, 2) === peg$c76) {\n          s3 = peg$c76;\n          peg$currPos += 2;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$c77);\n          }\n        }\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c79(s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    return s0;\n  }\n  function peg$parse_slash_comment() {\n    let s0, s1, s2;\n    s0 = peg$currPos;\n    s1 = [];\n    s2 = peg$parse_slash_comment_line();\n    if (s2 !== peg$FAILED) {\n      while (s2 !== peg$FAILED) {\n        s1.push(s2);\n        s2 = peg$parse_slash_comment_line();\n      }\n    } else {\n      s1 = peg$FAILED;\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c80(s1);\n    }\n    s0 = s1;\n    return s0;\n  }\n  function peg$parse_slash_comment_line() {\n    let s0, s1, s2, s3, s4, s5, s6;\n    s0 = peg$currPos;\n    s1 = peg$parse_();\n    if (s1 !== peg$FAILED) {\n      if (input.substr(peg$currPos, 2) === peg$c81) {\n        s2 = peg$c81;\n        peg$currPos += 2;\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) {\n          peg$fail(peg$c82);\n        }\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = [];\n        s4 = peg$currPos;\n        s5 = peg$currPos;\n        peg$silentFails++;\n        s6 = peg$parse_newline();\n        peg$silentFails--;\n        if (s6 === peg$FAILED) {\n          s5 = undefined;\n        } else {\n          peg$currPos = s5;\n          s5 = peg$FAILED;\n        }\n        if (s5 !== peg$FAILED) {\n          if (input.length > peg$currPos) {\n            s6 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s6 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$c78);\n            }\n          }\n          if (s6 !== peg$FAILED) {\n            peg$savedPos = s4;\n            s5 = peg$c0(s6);\n            s4 = s5;\n          } else {\n            peg$currPos = s4;\n            s4 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s4;\n          s4 = peg$FAILED;\n        }\n        while (s4 !== peg$FAILED) {\n          s3.push(s4);\n          s4 = peg$currPos;\n          s5 = peg$currPos;\n          peg$silentFails++;\n          s6 = peg$parse_newline();\n          peg$silentFails--;\n          if (s6 === peg$FAILED) {\n            s5 = undefined;\n          } else {\n            peg$currPos = s5;\n            s5 = peg$FAILED;\n          }\n          if (s5 !== peg$FAILED) {\n            if (input.length > peg$currPos) {\n              s6 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s6 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$c78);\n              }\n            }\n            if (s6 !== peg$FAILED) {\n              peg$savedPos = s4;\n              s5 = peg$c0(s6);\n              s4 = s5;\n            } else {\n              peg$currPos = s4;\n              s4 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s4;\n            s4 = peg$FAILED;\n          }\n        }\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parse_newline();\n          if (s4 === peg$FAILED) {\n            s4 = null;\n          }\n          if (s4 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c83(s3);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    return s0;\n  }\n  function peg$parse_macro_comment() {\n    let s0, s1, s2;\n    s0 = peg$currPos;\n    s1 = [];\n    s2 = peg$parse_macro_comment_line();\n    if (s2 !== peg$FAILED) {\n      while (s2 !== peg$FAILED) {\n        s1.push(s2);\n        s2 = peg$parse_macro_comment_line();\n      }\n    } else {\n      s1 = peg$FAILED;\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c84(s1);\n    }\n    s0 = s1;\n    return s0;\n  }\n  function peg$parse_macro_comment_line() {\n    let s0, s1, s2, s3, s4, s5, s6;\n    s0 = peg$currPos;\n    s1 = peg$parse_();\n    if (s1 !== peg$FAILED) {\n      if (input.charCodeAt(peg$currPos) === 35) {\n        s2 = peg$c85;\n        peg$currPos++;\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) {\n          peg$fail(peg$c86);\n        }\n      }\n      if (s2 !== peg$FAILED) {\n        s3 = [];\n        s4 = peg$currPos;\n        s5 = peg$currPos;\n        peg$silentFails++;\n        s6 = peg$parse_newline();\n        peg$silentFails--;\n        if (s6 === peg$FAILED) {\n          s5 = undefined;\n        } else {\n          peg$currPos = s5;\n          s5 = peg$FAILED;\n        }\n        if (s5 !== peg$FAILED) {\n          if (input.length > peg$currPos) {\n            s6 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s6 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$c78);\n            }\n          }\n          if (s6 !== peg$FAILED) {\n            peg$savedPos = s4;\n            s5 = peg$c0(s6);\n            s4 = s5;\n          } else {\n            peg$currPos = s4;\n            s4 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s4;\n          s4 = peg$FAILED;\n        }\n        while (s4 !== peg$FAILED) {\n          s3.push(s4);\n          s4 = peg$currPos;\n          s5 = peg$currPos;\n          peg$silentFails++;\n          s6 = peg$parse_newline();\n          peg$silentFails--;\n          if (s6 === peg$FAILED) {\n            s5 = undefined;\n          } else {\n            peg$currPos = s5;\n            s5 = peg$FAILED;\n          }\n          if (s5 !== peg$FAILED) {\n            if (input.length > peg$currPos) {\n              s6 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s6 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$c78);\n              }\n            }\n            if (s6 !== peg$FAILED) {\n              peg$savedPos = s4;\n              s5 = peg$c0(s6);\n              s4 = s5;\n            } else {\n              peg$currPos = s4;\n              s4 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s4;\n            s4 = peg$FAILED;\n          }\n        }\n        if (s3 !== peg$FAILED) {\n          s4 = peg$parse_newline();\n          if (s4 === peg$FAILED) {\n            s4 = null;\n          }\n          if (s4 !== peg$FAILED) {\n            peg$savedPos = s0;\n            s1 = peg$c83(s3);\n            s0 = s1;\n          } else {\n            peg$currPos = s0;\n            s0 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    return s0;\n  }\n  function peg$parseSTRING() {\n    let s0, s1, s2, s3;\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = peg$parseStringStart();\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$parseStringPart();\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$parseStringPart();\n      }\n      if (s2 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c88(s1, s2);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) {\n        peg$fail(peg$c87);\n      }\n    }\n    return s0;\n  }\n  function peg$parseNUMBER_STRING() {\n    let s0, s1, s2;\n    s0 = peg$currPos;\n    s1 = peg$parseNUMBER();\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parseSTRING();\n      if (s2 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c89(s1, s2);\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    return s0;\n  }\n  function peg$parseStringStart() {\n    let s0;\n    s0 = peg$parseUnicodeLetter();\n    if (s0 === peg$FAILED) {\n      if (input.charCodeAt(peg$currPos) === 36) {\n        s0 = peg$c90;\n        peg$currPos++;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) {\n          peg$fail(peg$c91);\n        }\n      }\n      if (s0 === peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 95) {\n          s0 = peg$c92;\n          peg$currPos++;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$c93);\n          }\n        }\n      }\n    }\n    return s0;\n  }\n  function peg$parseStringPart() {\n    let s0;\n    s0 = peg$parseStringStart();\n    if (s0 === peg$FAILED) {\n      s0 = peg$parseNd();\n    }\n    return s0;\n  }\n  function peg$parseNUMBER() {\n    let s0, s1, s2, s3, s4, s5, s6, s7, s8;\n    peg$silentFails++;\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 45) {\n      s2 = peg$c95;\n      peg$currPos++;\n    } else {\n      s2 = peg$FAILED;\n      if (peg$silentFails === 0) {\n        peg$fail(peg$c96);\n      }\n    }\n    if (s2 === peg$FAILED) {\n      s2 = null;\n    }\n    if (s2 !== peg$FAILED) {\n      s3 = peg$currPos;\n      if (input.charCodeAt(peg$currPos) === 46) {\n        s4 = peg$c97;\n        peg$currPos++;\n      } else {\n        s4 = peg$FAILED;\n        if (peg$silentFails === 0) {\n          peg$fail(peg$c98);\n        }\n      }\n      if (s4 !== peg$FAILED) {\n        s5 = [];\n        if (peg$c99.test(input.charAt(peg$currPos))) {\n          s6 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s6 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$c100);\n          }\n        }\n        if (s6 !== peg$FAILED) {\n          while (s6 !== peg$FAILED) {\n            s5.push(s6);\n            if (peg$c99.test(input.charAt(peg$currPos))) {\n              s6 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s6 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$c100);\n              }\n            }\n          }\n        } else {\n          s5 = peg$FAILED;\n        }\n        if (s5 !== peg$FAILED) {\n          s4 = [s4, s5];\n          s3 = s4;\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s3;\n        s3 = peg$FAILED;\n      }\n      if (s3 === peg$FAILED) {\n        s3 = peg$currPos;\n        s4 = [];\n        if (peg$c99.test(input.charAt(peg$currPos))) {\n          s5 = input.charAt(peg$currPos);\n          peg$currPos++;\n        } else {\n          s5 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$c100);\n          }\n        }\n        if (s5 !== peg$FAILED) {\n          while (s5 !== peg$FAILED) {\n            s4.push(s5);\n            if (peg$c99.test(input.charAt(peg$currPos))) {\n              s5 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s5 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$c100);\n              }\n            }\n          }\n        } else {\n          s4 = peg$FAILED;\n        }\n        if (s4 !== peg$FAILED) {\n          s5 = peg$currPos;\n          if (input.charCodeAt(peg$currPos) === 46) {\n            s6 = peg$c97;\n            peg$currPos++;\n          } else {\n            s6 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$c98);\n            }\n          }\n          if (s6 !== peg$FAILED) {\n            s7 = [];\n            if (peg$c99.test(input.charAt(peg$currPos))) {\n              s8 = input.charAt(peg$currPos);\n              peg$currPos++;\n            } else {\n              s8 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$c100);\n              }\n            }\n            while (s8 !== peg$FAILED) {\n              s7.push(s8);\n              if (peg$c99.test(input.charAt(peg$currPos))) {\n                s8 = input.charAt(peg$currPos);\n                peg$currPos++;\n              } else {\n                s8 = peg$FAILED;\n                if (peg$silentFails === 0) {\n                  peg$fail(peg$c100);\n                }\n              }\n            }\n            if (s7 !== peg$FAILED) {\n              s6 = [s6, s7];\n              s5 = s6;\n            } else {\n              peg$currPos = s5;\n              s5 = peg$FAILED;\n            }\n          } else {\n            peg$currPos = s5;\n            s5 = peg$FAILED;\n          }\n          if (s5 === peg$FAILED) {\n            s5 = null;\n          }\n          if (s5 !== peg$FAILED) {\n            s4 = [s4, s5];\n            s3 = s4;\n          } else {\n            peg$currPos = s3;\n            s3 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n      }\n      if (s3 !== peg$FAILED) {\n        s2 = [s2, s3];\n        s1 = s2;\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c101();\n    }\n    s0 = s1;\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) {\n        peg$fail(peg$c94);\n      }\n    }\n    return s0;\n  }\n  function peg$parseHTML_STRING() {\n    let s0, s1;\n    s0 = peg$currPos;\n    s1 = peg$parsehtml_raw_string();\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c102(s1);\n    }\n    s0 = s1;\n    return s0;\n  }\n  function peg$parsehtml_raw_string() {\n    let s0, s1, s2, s3;\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 60) {\n      s1 = peg$c103;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) {\n        peg$fail(peg$c104);\n      }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$parsehtml_char();\n      if (s3 === peg$FAILED) {\n        s3 = peg$parsehtml_raw_string();\n      }\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$parsehtml_char();\n        if (s3 === peg$FAILED) {\n          s3 = peg$parsehtml_raw_string();\n        }\n      }\n      if (s2 !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 62) {\n          s3 = peg$c105;\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$c106);\n          }\n        }\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c107(s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    return s0;\n  }\n  function peg$parsehtml_char() {\n    let s0, s1, s2, s3, s4;\n    s0 = peg$currPos;\n    s1 = [];\n    s2 = peg$currPos;\n    s3 = peg$currPos;\n    peg$silentFails++;\n    if (input.charCodeAt(peg$currPos) === 62) {\n      s4 = peg$c105;\n      peg$currPos++;\n    } else {\n      s4 = peg$FAILED;\n      if (peg$silentFails === 0) {\n        peg$fail(peg$c106);\n      }\n    }\n    if (s4 === peg$FAILED) {\n      if (input.charCodeAt(peg$currPos) === 60) {\n        s4 = peg$c103;\n        peg$currPos++;\n      } else {\n        s4 = peg$FAILED;\n        if (peg$silentFails === 0) {\n          peg$fail(peg$c104);\n        }\n      }\n    }\n    peg$silentFails--;\n    if (s4 === peg$FAILED) {\n      s3 = undefined;\n    } else {\n      peg$currPos = s3;\n      s3 = peg$FAILED;\n    }\n    if (s3 !== peg$FAILED) {\n      if (input.length > peg$currPos) {\n        s4 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s4 = peg$FAILED;\n        if (peg$silentFails === 0) {\n          peg$fail(peg$c78);\n        }\n      }\n      if (s4 !== peg$FAILED) {\n        peg$savedPos = s2;\n        s3 = peg$c0(s4);\n        s2 = s3;\n      } else {\n        peg$currPos = s2;\n        s2 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s2;\n      s2 = peg$FAILED;\n    }\n    if (s2 !== peg$FAILED) {\n      while (s2 !== peg$FAILED) {\n        s1.push(s2);\n        s2 = peg$currPos;\n        s3 = peg$currPos;\n        peg$silentFails++;\n        if (input.charCodeAt(peg$currPos) === 62) {\n          s4 = peg$c105;\n          peg$currPos++;\n        } else {\n          s4 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$c106);\n          }\n        }\n        if (s4 === peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 60) {\n            s4 = peg$c103;\n            peg$currPos++;\n          } else {\n            s4 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$c104);\n            }\n          }\n        }\n        peg$silentFails--;\n        if (s4 === peg$FAILED) {\n          s3 = undefined;\n        } else {\n          peg$currPos = s3;\n          s3 = peg$FAILED;\n        }\n        if (s3 !== peg$FAILED) {\n          if (input.length > peg$currPos) {\n            s4 = input.charAt(peg$currPos);\n            peg$currPos++;\n          } else {\n            s4 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$c78);\n            }\n          }\n          if (s4 !== peg$FAILED) {\n            peg$savedPos = s2;\n            s3 = peg$c0(s4);\n            s2 = s3;\n          } else {\n            peg$currPos = s2;\n            s2 = peg$FAILED;\n          }\n        } else {\n          peg$currPos = s2;\n          s2 = peg$FAILED;\n        }\n      }\n    } else {\n      s1 = peg$FAILED;\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c83(s1);\n    }\n    s0 = s1;\n    return s0;\n  }\n  function peg$parseQUOTED_STRING() {\n    let s0, s1, s2, s3;\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 34) {\n      s1 = peg$c69;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) {\n        peg$fail(peg$c70);\n      }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = [];\n      s3 = peg$parseDoubleStringCharacter();\n      while (s3 !== peg$FAILED) {\n        s2.push(s3);\n        s3 = peg$parseDoubleStringCharacter();\n      }\n      if (s2 !== peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 34) {\n          s3 = peg$c69;\n          peg$currPos++;\n        } else {\n          s3 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$c70);\n          }\n        }\n        if (s3 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c108(s2);\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    return s0;\n  }\n  function peg$parseDoubleStringCharacter() {\n    let s0, s1, s2;\n    s0 = peg$parseQuoteEscape();\n    if (s0 === peg$FAILED) {\n      s0 = peg$currPos;\n      s1 = peg$currPos;\n      peg$silentFails++;\n      if (input.charCodeAt(peg$currPos) === 34) {\n        s2 = peg$c69;\n        peg$currPos++;\n      } else {\n        s2 = peg$FAILED;\n        if (peg$silentFails === 0) {\n          peg$fail(peg$c70);\n        }\n      }\n      if (s2 === peg$FAILED) {\n        s2 = peg$parseLineTerminator();\n      }\n      peg$silentFails--;\n      if (s2 === peg$FAILED) {\n        s1 = undefined;\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n      if (s1 !== peg$FAILED) {\n        s2 = peg$parseSourceCharacter();\n        if (s2 !== peg$FAILED) {\n          peg$savedPos = s0;\n          s1 = peg$c109();\n          s0 = s1;\n        } else {\n          peg$currPos = s0;\n          s0 = peg$FAILED;\n        }\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n      if (s0 === peg$FAILED) {\n        s0 = peg$parseLineContinuation();\n      }\n    }\n    return s0;\n  }\n  function peg$parseQuoteEscape() {\n    let s0, s1, s2, s3;\n    s0 = peg$currPos;\n    s1 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 92) {\n      s2 = peg$c110;\n      peg$currPos++;\n    } else {\n      s2 = peg$FAILED;\n      if (peg$silentFails === 0) {\n        peg$fail(peg$c111);\n      }\n    }\n    if (s2 !== peg$FAILED) {\n      if (input.length > peg$currPos) {\n        s3 = input.charAt(peg$currPos);\n        peg$currPos++;\n      } else {\n        s3 = peg$FAILED;\n        if (peg$silentFails === 0) {\n          peg$fail(peg$c78);\n        }\n      }\n      if (s3 !== peg$FAILED) {\n        s2 = [s2, s3];\n        s1 = s2;\n      } else {\n        peg$currPos = s1;\n        s1 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s1;\n      s1 = peg$FAILED;\n    }\n    if (s1 !== peg$FAILED) {\n      peg$savedPos = s0;\n      s1 = peg$c112(s1);\n    }\n    s0 = s1;\n    return s0;\n  }\n  function peg$parseLineContinuation() {\n    let s0, s1, s2;\n    s0 = peg$currPos;\n    if (input.charCodeAt(peg$currPos) === 92) {\n      s1 = peg$c110;\n      peg$currPos++;\n    } else {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) {\n        peg$fail(peg$c111);\n      }\n    }\n    if (s1 !== peg$FAILED) {\n      s2 = peg$parseLineTerminatorSequence();\n      if (s2 !== peg$FAILED) {\n        peg$savedPos = s0;\n        s1 = peg$c113();\n        s0 = s1;\n      } else {\n        peg$currPos = s0;\n        s0 = peg$FAILED;\n      }\n    } else {\n      peg$currPos = s0;\n      s0 = peg$FAILED;\n    }\n    return s0;\n  }\n  function peg$parseLineTerminator() {\n    let s0;\n    if (peg$c114.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) {\n        peg$fail(peg$c115);\n      }\n    }\n    return s0;\n  }\n  function peg$parseLineTerminatorSequence() {\n    let s0;\n    peg$silentFails++;\n    if (input.charCodeAt(peg$currPos) === 10) {\n      s0 = peg$c117;\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) {\n        peg$fail(peg$c118);\n      }\n    }\n    if (s0 === peg$FAILED) {\n      if (input.substr(peg$currPos, 2) === peg$c119) {\n        s0 = peg$c119;\n        peg$currPos += 2;\n      } else {\n        s0 = peg$FAILED;\n        if (peg$silentFails === 0) {\n          peg$fail(peg$c120);\n        }\n      }\n      if (s0 === peg$FAILED) {\n        if (input.charCodeAt(peg$currPos) === 13) {\n          s0 = peg$c121;\n          peg$currPos++;\n        } else {\n          s0 = peg$FAILED;\n          if (peg$silentFails === 0) {\n            peg$fail(peg$c122);\n          }\n        }\n        if (s0 === peg$FAILED) {\n          if (input.charCodeAt(peg$currPos) === 8232) {\n            s0 = peg$c123;\n            peg$currPos++;\n          } else {\n            s0 = peg$FAILED;\n            if (peg$silentFails === 0) {\n              peg$fail(peg$c124);\n            }\n          }\n          if (s0 === peg$FAILED) {\n            if (input.charCodeAt(peg$currPos) === 8233) {\n              s0 = peg$c125;\n              peg$currPos++;\n            } else {\n              s0 = peg$FAILED;\n              if (peg$silentFails === 0) {\n                peg$fail(peg$c126);\n              }\n            }\n          }\n        }\n      }\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      if (peg$silentFails === 0) {\n        peg$fail(peg$c116);\n      }\n    }\n    return s0;\n  }\n  function peg$parseSourceCharacter() {\n    let s0;\n    if (input.length > peg$currPos) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) {\n        peg$fail(peg$c78);\n      }\n    }\n    return s0;\n  }\n  function peg$parse_() {\n    let s0, s1;\n    peg$silentFails++;\n    s0 = [];\n    s1 = peg$parse_whitespace();\n    while (s1 !== peg$FAILED) {\n      s0.push(s1);\n      s1 = peg$parse_whitespace();\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) {\n        peg$fail(peg$c134);\n      }\n    }\n    return s0;\n  }\n  function peg$parse__() {\n    let s0, s1;\n    peg$silentFails++;\n    s0 = [];\n    s1 = peg$parse_whitespace();\n    if (s1 === peg$FAILED) {\n      s1 = peg$parse_newline();\n    }\n    while (s1 !== peg$FAILED) {\n      s0.push(s1);\n      s1 = peg$parse_whitespace();\n      if (s1 === peg$FAILED) {\n        s1 = peg$parse_newline();\n      }\n    }\n    peg$silentFails--;\n    if (s0 === peg$FAILED) {\n      s1 = peg$FAILED;\n      if (peg$silentFails === 0) {\n        peg$fail(peg$c135);\n      }\n    }\n    return s0;\n  }\n  function peg$parse_newline() {\n    let s0;\n    if (peg$c136.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) {\n        peg$fail(peg$c137);\n      }\n    }\n    return s0;\n  }\n  function peg$parse_whitespace() {\n    let s0;\n    if (peg$c138.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) {\n        peg$fail(peg$c139);\n      }\n    }\n    return s0;\n  }\n  function peg$parseUnicodeLetter() {\n    let s0;\n    s0 = peg$parseLu();\n    if (s0 === peg$FAILED) {\n      s0 = peg$parseLl();\n      if (s0 === peg$FAILED) {\n        s0 = peg$parseLt();\n        if (s0 === peg$FAILED) {\n          s0 = peg$parseLm();\n          if (s0 === peg$FAILED) {\n            s0 = peg$parseLo();\n            if (s0 === peg$FAILED) {\n              s0 = peg$parseNl();\n            }\n          }\n        }\n      }\n    }\n    return s0;\n  }\n  function peg$parseLl() {\n    let s0;\n    if (peg$c140.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) {\n        peg$fail(peg$c141);\n      }\n    }\n    return s0;\n  }\n  function peg$parseLm() {\n    let s0;\n    if (peg$c142.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) {\n        peg$fail(peg$c143);\n      }\n    }\n    return s0;\n  }\n  function peg$parseLo() {\n    let s0;\n    if (peg$c144.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) {\n        peg$fail(peg$c145);\n      }\n    }\n    return s0;\n  }\n  function peg$parseLt() {\n    let s0;\n    if (peg$c146.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) {\n        peg$fail(peg$c147);\n      }\n    }\n    return s0;\n  }\n  function peg$parseLu() {\n    let s0;\n    if (peg$c148.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) {\n        peg$fail(peg$c149);\n      }\n    }\n    return s0;\n  }\n  function peg$parseNl() {\n    let s0;\n    if (peg$c150.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) {\n        peg$fail(peg$c151);\n      }\n    }\n    return s0;\n  }\n  function peg$parseNd() {\n    let s0;\n    if (peg$c152.test(input.charAt(peg$currPos))) {\n      s0 = input.charAt(peg$currPos);\n      peg$currPos++;\n    } else {\n      s0 = peg$FAILED;\n      if (peg$silentFails === 0) {\n        peg$fail(peg$c153);\n      }\n    }\n    return s0;\n  }\n  function dedent(value) {\n    const str = value.trim();\n    const matches = str.match(/\\n([\\t ]+|(?!\\s).)/g);\n    if (matches) {\n      const indentLengths = matches.map((match) => match.match(/[\\t ]/g)?.length ?? 0);\n      const pattern = new RegExp(`\\n[\\t ]{${Math.min(...indentLengths)}}`, 'g');\n      return str.replace(pattern, '\\n');\n    }\n    return str;\n  }\n  const edgeops = [];\n  const b = new Builder({\n    locationFunction: location,\n  });\n  peg$result = peg$startRuleFunction();\n  if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n    return peg$result;\n  } else {\n    if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n      peg$fail(peg$endExpectation());\n    }\n    throw peg$buildStructuredError(\n      peg$maxFailExpected,\n      peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n      peg$maxFailPos < input.length\n        ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n        : peg$computeLocation(peg$maxFailPos, peg$maxFailPos),\n    );\n  }\n}\nconst parse$1 = peg$parse;\n\nfunction parse(input, options) {\n  return parse$1(input, options);\n}\nconst DotSyntaxError = DotSyntaxError$1;\n\nfunction convertAttribute(key, value) {\n  if (typeof value === 'string') {\n    const trimmed = value.trim();\n    const isHTMLLike = /^<.+>$/ms.test(trimmed);\n    if (isHTMLLike) {\n      return createElement(\n        'Attribute',\n        {\n          key: createElement('Literal', { value: key, quoted: false }, []),\n          value: createElement('Literal', { value: trimmed.slice(1, trimmed.length - 1), quoted: 'html' }, []),\n        },\n        [],\n      );\n    } else {\n      return createElement(\n        'Attribute',\n        {\n          key: createElement('Literal', { value: key, quoted: false }, []),\n          value: createElement('Literal', { value: value, quoted: true }, []),\n        },\n        [],\n      );\n    }\n  }\n  return createElement(\n    'Attribute',\n    {\n      key: createElement('Literal', { value: key, quoted: false }, []),\n      value: createElement('Literal', { value: String(value), quoted: false }, []),\n    },\n    [],\n  );\n}\n\nfunction convertComment(value, kind) {\n  return createElement(\n    'Comment',\n    {\n      kind: kind,\n      value: value,\n    },\n    [],\n  );\n}\n\nfunction convertClusterChildren(context, model) {\n  return Array.from(\n    (function* () {\n      for (const [key, value] of model.values) {\n        yield convertAttribute(key, value);\n      }\n      for (const attrs of Object.values(model.attributes)) {\n        if (attrs.size > 0) {\n          if (attrs.comment) {\n            yield convertComment(attrs.comment, context.commentKind);\n          }\n          yield context.convert(attrs);\n        }\n      }\n      for (const node of model.nodes) {\n        if (node.comment) {\n          yield convertComment(node.comment, context.commentKind);\n        }\n        yield context.convert(node);\n      }\n      for (const subgraph of model.subgraphs) {\n        if (subgraph.comment) {\n          yield convertComment(subgraph.comment, context.commentKind);\n        }\n        yield context.convert(subgraph);\n      }\n      for (const edge of model.edges) {\n        if (edge.comment) {\n          yield convertComment(edge.comment, context.commentKind);\n        }\n        yield context.convert(edge);\n      }\n    })(),\n  );\n}\n\nconst AttributeListPlugin = {\n  match(model) {\n    return model.$$type === 'AttributeList';\n  },\n  convert(context, model) {\n    return createElement(\n      'AttributeList',\n      {\n        kind: model.$$kind,\n      },\n      model.values.map(([key, value]) => convertAttribute(key, value)),\n    );\n  },\n};\n\nconst EdgePlugin$1 = {\n  match(model) {\n    return model.$$type === 'Edge';\n  },\n  convert(context, model) {\n    return createElement(\n      'Edge',\n      {\n        targets: model.targets.map((target) => {\n          if (index_js$1.isNodeModel(target)) {\n            return createElement(\n              'NodeRef',\n              {\n                id: createElement(\n                  'Literal',\n                  {\n                    value: target.id,\n                    quoted: true,\n                  },\n                  [],\n                ),\n              },\n              [],\n            );\n          } else if (index_js$1.isForwardRefNode(target)) {\n            return createElement(\n              'NodeRef',\n              {\n                id: createElement(\n                  'Literal',\n                  {\n                    value: target.id,\n                    quoted: true,\n                  },\n                  [],\n                ),\n                port: target.port\n                  ? createElement(\n                      'Literal',\n                      {\n                        value: target.port,\n                        quoted: true,\n                      },\n                      [],\n                    )\n                  : undefined,\n                compass: target.compass\n                  ? createElement(\n                      'Literal',\n                      {\n                        value: target.compass,\n                        quoted: true,\n                      },\n                      [],\n                    )\n                  : undefined,\n              },\n              [],\n            );\n          } else {\n            return createElement(\n              'NodeRefGroup',\n              {},\n              target.map((n) => {\n                if (index_js$1.isNodeModel(n)) {\n                  return createElement(\n                    'NodeRef',\n                    {\n                      id: createElement(\n                        'Literal',\n                        {\n                          value: n.id,\n                          quoted: true,\n                        },\n                        [],\n                      ),\n                    },\n                    [],\n                  );\n                }\n                return createElement(\n                  'NodeRef',\n                  {\n                    id: createElement(\n                      'Literal',\n                      {\n                        value: n.id,\n                        quoted: true,\n                      },\n                      [],\n                    ),\n                    port: n.port\n                      ? createElement(\n                          'Literal',\n                          {\n                            value: n.port,\n                            quoted: true,\n                          },\n                          [],\n                        )\n                      : undefined,\n                    compass: n.compass\n                      ? createElement(\n                          'Literal',\n                          {\n                            value: n.compass,\n                            quoted: true,\n                          },\n                          [],\n                        )\n                      : undefined,\n                  },\n                  [],\n                );\n              }),\n            );\n          }\n        }),\n      },\n      [\n        ...(model.attributes.comment ? [convertComment(model.attributes.comment, context.commentKind)] : []),\n        ...model.attributes.values.map(([key, value]) => convertAttribute(key, value)),\n      ],\n    );\n  },\n};\n\nconst GraphPlugin$1 = {\n  match(model) {\n    return model.$$type === 'Graph';\n  },\n  convert(context, model) {\n    return createElement('Dot', {}, [\n      ...(model.comment ? [convertComment(model.comment, context.commentKind)] : []),\n      createElement(\n        'Graph',\n        {\n          directed: model.directed,\n          strict: model.strict,\n          id: model.id\n            ? createElement(\n                'Literal',\n                {\n                  value: model.id,\n                  quoted: true,\n                },\n                [],\n              )\n            : undefined,\n        },\n        convertClusterChildren(context, model),\n      ),\n    ]);\n  },\n};\n\nconst NodePlugin$1 = {\n  match(model) {\n    return model.$$type === 'Node';\n  },\n  convert(context, model) {\n    return createElement(\n      'Node',\n      {\n        id: createElement(\n          'Literal',\n          {\n            value: model.id,\n            quoted: true,\n          },\n          [],\n        ),\n      },\n      [\n        ...(model.attributes.comment ? [convertComment(model.attributes.comment, context.commentKind)] : []),\n        ...model.attributes.values.map(([key, value]) => convertAttribute(key, value)),\n      ],\n    );\n  },\n};\n\nconst SubgraphPlugin$1 = {\n  match(model) {\n    return model.$$type === 'Subgraph';\n  },\n  convert(context, model) {\n    return createElement(\n      'Subgraph',\n      {\n        id: model.id\n          ? createElement(\n              'Literal',\n              {\n                value: model.id,\n                quoted: true,\n              },\n              [],\n            )\n          : undefined,\n      },\n      convertClusterChildren(context, model),\n    );\n  },\n};\n\nconst defaultPlugins$1 = [AttributeListPlugin, EdgePlugin$1, NodePlugin$1, GraphPlugin$1, SubgraphPlugin$1];\n\nclass FromModelConverter {\n  options;\n  #plugins = [...defaultPlugins$1];\n  constructor(options = {}) {\n    this.options = options;\n  }\n  convert(model) {\n    const plugins = [...this.#plugins];\n    const { commentKind = 'Slash' } = this.options;\n    const context = {\n      commentKind,\n      convert(m) {\n        for (const plugin of plugins) {\n          if (plugin.match(m)) {\n            return plugin.convert(context, m);\n          }\n        }\n        throw Error();\n      },\n    };\n    return context.convert(model);\n  }\n}\n\nfunction fromModel(model, options) {\n  return new FromModelConverter(options).convert(model);\n}\n\nclass CommentHolder {\n  comment = null;\n  set(comment) {\n    this.comment = comment;\n  }\n  reset() {\n    this.comment = null;\n  }\n  apply(model, location) {\n    if (location && this.comment?.location) {\n      if (this.comment?.kind === 'Block') {\n        if (this.comment.location.end.line === location.start.line - 1) {\n          model.comment = this.comment.value;\n        }\n      } else {\n        if (this.comment.location.end.line === location.start.line) {\n          model.comment = this.comment.value;\n        }\n      }\n    } else {\n      model.comment = this.comment?.value;\n    }\n    this.reset();\n  }\n}\n\nconst DotPlugin = {\n  match(ast) {\n    return ast.type === 'Dot';\n  },\n  convert(context, ast) {\n    const commentHolder = new CommentHolder();\n    for (const stmt of ast.children) {\n      switch (stmt.type) {\n        case 'Comment':\n          commentHolder.set(stmt);\n          break;\n        case 'Graph':\n          const graph = context.convert(stmt);\n          commentHolder.apply(graph, stmt.location);\n          return graph;\n      }\n    }\n    throw Error();\n  },\n};\n\nfunction convertToEdgeTargetTuple(edge) {\n  return edge.targets.map((t) => {\n    switch (t.type) {\n      case 'NodeRef':\n        return { id: t.id.value, port: t.port?.value, compass: t.compass?.value };\n      case 'NodeRefGroup':\n        return t.children.map((t) => ({ id: t.id.value, port: t.port?.value, compass: t.compass?.value }));\n    }\n  });\n}\n\nconst EdgePlugin = {\n  match(ast) {\n    return ast.type === 'Edge';\n  },\n  convert(context, ast) {\n    const edge = new context.models.Edge(\n      convertToEdgeTargetTuple(ast),\n      ast.children\n        .filter((v) => v.type === 'Attribute')\n        .reduce((prev, curr) => ({ ...prev, [curr.key.value]: curr.value.value }), {}),\n    );\n    return edge;\n  },\n};\n\nfunction applyStatements(graph, statements) {\n  const commentHolder = new CommentHolder();\n  for (const stmt of statements) {\n    switch (stmt.type) {\n      case 'Subgraph':\n        const subgraph = stmt.id ? graph.subgraph(stmt.id.value) : graph.subgraph();\n        applyStatements(subgraph, stmt.children);\n        commentHolder.apply(subgraph, stmt.location);\n        break;\n      case 'Attribute':\n        graph.set(stmt.key.value, stmt.value.value);\n        commentHolder.reset();\n        break;\n      case 'Node':\n        commentHolder.apply(\n          graph.node(\n            stmt.id.value,\n            stmt.children\n              .filter((v) => v.type === 'Attribute')\n              .reduce((prev, curr) => ({ ...prev, [curr.key.value]: curr.value.value }), {}),\n          ),\n          stmt.location,\n        );\n        break;\n      case 'Edge':\n        commentHolder.apply(\n          graph.edge(\n            convertToEdgeTargetTuple(stmt),\n            stmt.children\n              .filter((v) => v.type === 'Attribute')\n              .reduce((prev, curr) => ({ ...prev, [curr.key.value]: curr.value.value }), {}),\n          ),\n          stmt.location,\n        );\n        break;\n      case 'AttributeList':\n        const attrs = stmt.children\n          .filter((v) => v.type === 'Attribute')\n          .reduce((prev, curr) => ({ ...prev, [curr.key.value]: curr.value.value }), {});\n        switch (stmt.kind) {\n          case 'Edge':\n            graph.edge(attrs);\n            break;\n          case 'Node':\n            graph.node(attrs);\n            break;\n          case 'Graph':\n            graph.graph(attrs);\n            break;\n        }\n        commentHolder.reset();\n        break;\n      case 'Comment':\n        commentHolder.set(stmt);\n    }\n  }\n}\n\nconst GraphPlugin = {\n  match(ast) {\n    return ast.type === 'Graph';\n  },\n  convert(context, ast) {\n    const G = ast.directed ? context.models.Digraph : context.models.Graph;\n    const graph = new G(ast.id?.value, ast.strict);\n    applyStatements(graph, ast.children);\n    return graph;\n  },\n};\n\nconst SubgraphPlugin = {\n  match(ast) {\n    return ast.type === 'Subgraph';\n  },\n  convert(context, ast) {\n    const subgraph = new context.models.Subgraph(ast.id?.value);\n    applyStatements(subgraph, ast.children);\n    return subgraph;\n  },\n};\n\nconst NodePlugin = {\n  match(ast) {\n    return ast.type === 'Node';\n  },\n  convert(context, ast) {\n    const node = new context.models.Node(\n      ast.id.value,\n      ast.children\n        .filter((v) => v.type === 'Attribute')\n        .reduce((prev, curr) => ({ ...prev, [curr.key.value]: curr.value.value }), {}),\n    );\n    return node;\n  },\n};\n\nconst defaultPlugins = [NodePlugin, EdgePlugin, SubgraphPlugin, GraphPlugin, DotPlugin];\n\nclass ToModelConverter {\n  options;\n  plugins = [...defaultPlugins];\n  constructor(options = {}) {\n    this.options = options;\n  }\n  convert(ast) {\n    const plugins = [...this.plugins];\n    const context = {\n      models: index_js$1.createModelsContext(this.options.models ?? {}),\n      convert(m) {\n        for (const plugin of plugins) {\n          if (plugin.match(m)) {\n            return plugin.convert(context, m);\n          }\n        }\n        throw Error();\n      },\n    };\n    return context.convert(ast);\n  }\n}\n\nfunction toModel(ast, options) {\n  return new ToModelConverter(options).convert(ast);\n}\n\nexports.Builder = Builder;\nexports.DotSyntaxError = DotSyntaxError;\nexports.FromModelConverter = FromModelConverter;\nexports.Printer = Printer;\nexports.ToModelConverter = ToModelConverter;\nexports.createElement = createElement;\nexports.fromModel = fromModel;\nexports.parse = parse;\nexports.stringify = stringify;\nexports.toModel = toModel;\n", "'use strict';\n\nvar index_js = require('../common/index.cjs');\nvar index_js$1 = require('../ast/index.cjs');\n\nconst attribute = new Proxy(Object.freeze({}), {\n  get: (_, key) => key,\n});\n\nclass DotObject {}\n\nclass AttributesBase extends DotObject {\n  #attrs = new Map();\n  constructor(attributes) {\n    super();\n    if (attributes !== undefined) {\n      this.apply(attributes);\n    }\n  }\n  get values() {\n    return Array.from(this.#attrs.entries());\n  }\n  get size() {\n    return this.#attrs.size;\n  }\n  get(key) {\n    return this.#attrs.get(key);\n  }\n  set(key, value) {\n    if (value !== null && value !== undefined) {\n      this.#attrs.set(key, value);\n    }\n  }\n  delete(key) {\n    this.#attrs.delete(key);\n  }\n  apply(attributes) {\n    const entries = Array.isArray(attributes) ? attributes : Object.entries(attributes);\n    for (const [key, value] of entries) {\n      this.set(key, value);\n    }\n  }\n  clear() {\n    this.#attrs.clear();\n  }\n}\n\nclass AttributeList extends AttributesBase {\n  $$kind;\n  get $$type() {\n    return 'AttributeList';\n  }\n  comment;\n  constructor($$kind, attributes) {\n    super(attributes);\n    this.$$kind = $$kind;\n  }\n}\n\nclass GraphBase extends AttributesBase {\n  #models = index_js.RootModelsContext;\n  id;\n  comment;\n  attributes = Object.freeze({\n    graph: new AttributeList('Graph'),\n    edge: new AttributeList('Edge'),\n    node: new AttributeList('Node'),\n  });\n  get nodes() {\n    return Array.from(this.#objects.nodes.values());\n  }\n  get edges() {\n    return Array.from(this.#objects.edges.values());\n  }\n  get subgraphs() {\n    return Array.from(this.#objects.subgraphs.values());\n  }\n  #objects = {\n    nodes: new Map(),\n    edges: new Set(),\n    subgraphs: new Set(),\n  };\n  with(models) {\n    this.#models = index_js.createModelsContext(models);\n  }\n  addNode(node) {\n    this.#objects.nodes.set(node.id, node);\n  }\n  addEdge(edge) {\n    this.#objects.edges.add(edge);\n  }\n  addSubgraph(subgraph) {\n    this.#objects.subgraphs.add(subgraph);\n  }\n  existNode(nodeId) {\n    return this.#objects.nodes.has(nodeId);\n  }\n  existEdge(edge) {\n    return this.#objects.edges.has(edge);\n  }\n  existSubgraph(subgraph) {\n    return this.#objects.subgraphs.has(subgraph);\n  }\n  createSubgraph(...args) {\n    const subgraph = new this.#models.Subgraph(...args);\n    subgraph.with(this.#models);\n    this.addSubgraph(subgraph);\n    return subgraph;\n  }\n  removeNode(node) {\n    this.#objects.nodes.delete(typeof node === 'string' ? node : node.id);\n  }\n  removeEdge(edge) {\n    this.#objects.edges.delete(edge);\n  }\n  removeSubgraph(subgraph) {\n    this.#objects.subgraphs.delete(subgraph);\n  }\n  createNode(id, attributes) {\n    const node = new this.#models.Node(id, attributes);\n    this.addNode(node);\n    return node;\n  }\n  getSubgraph(id) {\n    return Array.from(this.#objects.subgraphs.values()).find((subgraph) => subgraph.id === id);\n  }\n  getNode(id) {\n    return this.#objects.nodes.get(id);\n  }\n  createEdge(targets, attributes) {\n    const ts = targets.map((t) =>\n      index_js.isNodeRefGroupLike(t) ? index_js.toNodeRefGroup(t) : index_js.toNodeRef(t),\n    );\n    const edge = new this.#models.Edge(ts, attributes);\n    this.addEdge(edge);\n    return edge;\n  }\n  subgraph(...args) {\n    const id = args.find((arg) => typeof arg === 'string');\n    const attributes = args.find((arg) => typeof arg === 'object' && arg !== null);\n    const callback = args.find((arg) => typeof arg === 'function');\n    const subgraph = id ? this.getSubgraph(id) ?? this.createSubgraph(id) : this.createSubgraph();\n    if (attributes !== undefined) {\n      subgraph.apply(attributes);\n    }\n    if (callback !== undefined) {\n      callback(subgraph);\n    }\n    return subgraph;\n  }\n  node(firstArg, ...args) {\n    if (typeof firstArg === 'string') {\n      const id = firstArg;\n      const attributes = args.find((arg) => typeof arg === 'object' && arg !== null);\n      const callback = args.find((arg) => typeof arg === 'function');\n      const node = this.getNode(id) ?? this.createNode(id);\n      if (attributes !== undefined) {\n        node.attributes.apply(attributes);\n      }\n      if (callback !== undefined) {\n        callback(node);\n      }\n      return node;\n    }\n    if (typeof firstArg === 'object' && firstArg !== null) {\n      this.attributes.node.apply(firstArg);\n    }\n  }\n  edge(firstArg, ...args) {\n    if (Array.isArray(firstArg)) {\n      const targets = firstArg;\n      const attributes = args.find((arg) => typeof arg === 'object');\n      const callback = args.find((arg) => typeof arg === 'function');\n      const edge = this.createEdge(targets, attributes);\n      if (callback !== undefined) {\n        callback(edge);\n      }\n      return edge;\n    }\n    if (typeof firstArg === 'object' && firstArg !== null) {\n      this.attributes.edge.apply(firstArg);\n    }\n  }\n  graph(attributes) {\n    this.attributes.graph.apply(attributes);\n  }\n}\n\nclass RootGraph extends GraphBase {\n  get $$type() {\n    return 'Graph';\n  }\n  id;\n  strict;\n  constructor(...args) {\n    super();\n    this.id = args.find((arg) => typeof arg === 'string');\n    this.strict = args.find((arg) => typeof arg === 'boolean') ?? false;\n    const attributes = args.find((arg) => typeof arg === 'object' && arg !== null);\n    if (attributes !== undefined) {\n      this.apply(attributes);\n    }\n  }\n}\n\nclass Digraph extends RootGraph {\n  get directed() {\n    return true;\n  }\n}\n\nclass Graph extends RootGraph {\n  get directed() {\n    return false;\n  }\n}\n\nclass Subgraph extends GraphBase {\n  get $$type() {\n    return 'Subgraph';\n  }\n  id;\n  constructor(...args) {\n    super();\n    this.id = args.find((arg) => typeof arg === 'string');\n    const attributes = args.find((arg) => typeof arg === 'object' && arg !== null);\n    if (attributes !== undefined) {\n      this.apply(attributes);\n    }\n  }\n  isSubgraphCluster() {\n    if (typeof this.id === 'string') {\n      return this.id.startsWith('cluster');\n    }\n    return false;\n  }\n}\n\nclass AttributesGroup extends AttributesBase {\n  comment;\n}\n\nclass Node extends DotObject {\n  id;\n  get $$type() {\n    return 'Node';\n  }\n  comment;\n  attributes;\n  constructor(id, attributes) {\n    super();\n    this.id = id;\n    this.attributes = new AttributesGroup(attributes);\n  }\n  port(port) {\n    if (typeof port === 'string') {\n      return { id: this.id, port };\n    }\n    return { id: this.id, ...port };\n  }\n}\n\nclass Edge extends DotObject {\n  targets;\n  get $$type() {\n    return 'Edge';\n  }\n  comment;\n  attributes;\n  constructor(targets, attributes) {\n    super();\n    this.targets = targets;\n    if (targets.length < 2 && (index_js.isNodeRefLike(targets[0]) && index_js.isNodeRefLike(targets[1])) === false) {\n      throw Error('The element of Edge target is missing or not satisfied as Edge target.');\n    }\n    this.attributes = new AttributesGroup(attributes);\n  }\n}\n\nObject.assign(index_js.RootModelsContext, {\n  Graph,\n  Digraph,\n  Subgraph,\n  Node,\n  Edge,\n});\n\nfunction ModelFactoryBuilder(directed, strictMode) {\n  return (...args) => {\n    const G = directed ? this.Digraph : this.Graph;\n    const id = args.find((arg) => typeof arg === 'string');\n    const attributes = args.find((arg) => typeof arg === 'object');\n    const callback = args.find((arg) => typeof arg === 'function');\n    const g = new G(id, strictMode, attributes);\n    g.with(this);\n    if (typeof callback === 'function') {\n      callback(g);\n    }\n    return g;\n  };\n}\nfunction createModelFactories(strict, context = index_js.RootModelsContext) {\n  return Object.freeze({\n    digraph: ModelFactoryBuilder.call(context, true, strict),\n    graph: ModelFactoryBuilder.call(context, false, strict),\n  });\n}\n\nconst noStrict = createModelFactories(false);\nconst digraph = noStrict.digraph;\nconst graph = noStrict.graph;\nconst strict = createModelFactories(true);\nfunction withContext(models) {\n  const context = index_js.createModelsContext(models);\n  return Object.freeze({\n    ...createModelFactories(false, context),\n    strict: createModelFactories(true, context),\n  });\n}\n\nfunction toDot(model, options) {\n  const ast = index_js$1.fromModel(model, options?.convert);\n  return index_js$1.stringify(ast, options?.print);\n}\n\nfunction fromDot(dot, options) {\n  const ast = index_js$1.parse(dot, options?.parse);\n  if (\n    Array.isArray(ast) ||\n    ast.type === 'Attribute' ||\n    ast.type === 'AttributeList' ||\n    ast.type === 'Comment' ||\n    ast.type === 'NodeRef' ||\n    ast.type === 'NodeRefGroup' ||\n    ast.type === 'Literal'\n  ) {\n    throw new Error();\n  }\n  return index_js$1.toModel(ast, options?.convert);\n}\n\nexports.AttributeList = AttributeList;\nexports.AttributesBase = AttributesBase;\nexports.AttributesGroup = AttributesGroup;\nexports.Digraph = Digraph;\nexports.DotObject = DotObject;\nexports.Edge = Edge;\nexports.Graph = Graph;\nexports.GraphBase = GraphBase;\nexports.Node = Node;\nexports.RootGraph = RootGraph;\nexports.Subgraph = Subgraph;\nexports.attribute = attribute;\nexports.digraph = digraph;\nexports.fromDot = fromDot;\nexports.graph = graph;\nexports.strict = strict;\nexports.toDot = toDot;\nexports.withContext = withContext;\n", "'use strict';\n\nvar index_js = require('./common/index.cjs');\nvar index_js$1 = require('./core/index.cjs');\n\nObject.keys(index_js).forEach(function (k) {\n  if (k !== 'default' && !exports.hasOwnProperty(k))\n    Object.defineProperty(exports, k, {\n      enumerable: true,\n      get: function () {\n        return index_js[k];\n      },\n    });\n});\nObject.keys(index_js$1).forEach(function (k) {\n  if (k !== 'default' && !exports.hasOwnProperty(k))\n    Object.defineProperty(exports, k, {\n      enumerable: true,\n      get: function () {\n        return index_js$1[k];\n      },\n    });\n});\n", "/* Functions used to output query graphs as [graphviz dot](https://graphviz.org/doc/info/lang.html) outputs.  */\n\nimport { simpleTraversal, Edge, QueryGraph, QueryGraphState, Vertex } from \"./querygraph\";\nimport { attribute, digraph, RootGraphModel, GraphBaseModel, EdgeModel, NodeModel, toDot as graphvizToDot } from 'ts-graphviz';\nimport { RootPath, traversePath } from \"./graphPath\";\n\nfunction setDefaultGraphAttributes(_: RootGraphModel) {\n  //vizGraph.attributes.edge.set(attribute.labelfloat, true);\n}\n\nexport function toDot(graph: QueryGraph, config?: DotGraphConfig): string {\n  const vizGraph = digraph(graph.name);\n  setDefaultGraphAttributes(vizGraph);\n  addToVizGraphAndHighlight(graph, vizGraph, config);\n  return graphvizToDot(vizGraph);\n}\n\nexport function groupToDot(\n  name: string,\n  graphs: Map<string, QueryGraph>,\n  configs: Map<string, DotGraphConfig> = new Map(),\n): string {\n  const vizGraph = digraph(name);\n  setDefaultGraphAttributes(vizGraph);\n  for (const [group, graph] of graphs.entries()) {\n    const cluster = vizGraph.createSubgraph(`cluster_${group}`, {\n      [attribute.label]: `${group}`,\n      [attribute.style]: \"filled\",\n      [attribute.color]: \"grey95\"\n    });\n    addToVizGraphAndHighlight(graph, cluster, configs.get(group));\n  }\n  return graphvizToDot(vizGraph);\n}\n\nfunction addToVizGraphAndHighlight(graph: QueryGraph, vizGraph: GraphBaseModel, config?: DotGraphConfig) {\n  const state = addToVizGraph(graph, vizGraph, config?.noTerminal);\n  highlightPaths(state, config?.highlightedPaths);\n}\n\nexport type DotGraphConfig = {\n  highlightedPaths?: HighlitedPath[],\n  noTerminal?: boolean\n}\n\n// Colors chosen from https://graphviz.org/doc/info/colors.html, picked so that\n// they are not too close to each other.\nconst colors = [\n  'blue',\n  'darkgreen',\n  'red',\n  'yellow',\n  'orange',\n  'lightseagreen'\n];\n\nexport function pickHighlights(paths: RootPath<any>[], excluded: string[] = []): HighlitedPath[] {\n  const usableColors = colors.filter(c => !excluded.includes(c));\n  return paths.map((path, i) => { return { path, color: usableColors[i % usableColors.length]}});\n}\n\ntype HighlitedPath = {\n  path: RootPath<any>,\n  color: string\n}\n\nfunction addToVizGraph(graph: QueryGraph, vizGraph: GraphBaseModel, noTerminal: boolean = false): QueryGraphState<NodeModel, EdgeModel> {\n  const vizSubGraphs = new Map();\n  for (const source of graph.sources.keys()) {\n    if (source != graph.name) {\n      // Note: the fact the subgraph name is prefixed by \"cluster\" is a graphviz thing (https://graphviz.org/Gallery/directed/cluster.html)\n      vizSubGraphs.set(source, vizGraph.createSubgraph(`cluster_${source}`, {\n        [attribute.label]: `Subgraph \"${source}\"`,\n        [attribute.color]: \"black\",\n        [attribute.style]: \"\" // Reset to non-filled\n      }));\n    }\n  }\n  const getNode = function (vertex: Vertex): NodeModel {\n    const existingNode = state.getVertexState(vertex);\n    if (existingNode) {\n      return existingNode;\n    }\n    let newNode: NodeModel;\n    if (vertex.source == graph.name) {\n      newNode = vizGraph.createNode(vertex.type.name);\n    } else {\n      const vizSubGraph = vizSubGraphs.get(vertex.source);\n      // Do note that we graphviz identify nodes by their name, so we can't just use the type name as\n      // this would collapse the vertices from different subgraphs. So we include the source in the\n      // name, even if it's not that useful graphically since we already group vertices by subgraphs.\n      newNode = vizSubGraph.createNode(`${vertex.type.name}@${vertex.source}`);\n    }\n    state.setVertexState(vertex, newNode);\n    return newNode;\n  }\n  const pickGraphForEdge = function (head: Vertex, tail: Vertex): GraphBaseModel {\n    if (head.source == tail.source && head.source != graph.name) {\n      return vizSubGraphs.get(head.source);\n    }\n    return vizGraph;\n  }\n  const state = new QueryGraphState<NodeModel, EdgeModel>();\n  const onEdge = function (edge: Edge): boolean {\n    const head = edge.head;\n    const tail = edge.tail;\n    if (noTerminal && graph.isTerminal(tail)) {\n      return false;\n    }\n    const headNode = getNode(head);\n    const tailNode = getNode(tail);\n    const attributes = {\n      [attribute.label]: edge.label(),\n    };\n    state.setEdgeState(edge, pickGraphForEdge(head, tail).createEdge([headNode, tailNode], attributes));\n    return true;\n  }\n  simpleTraversal(graph, _ => undefined, onEdge);\n  return state;\n}\n\nfunction highlightPaths(state: QueryGraphState<NodeModel, EdgeModel>, toHighlights?: HighlitedPath[]) {\n  toHighlights?.forEach(h => highlightPath(state, h));\n}\n\nfunction highlightPath(state: QueryGraphState<NodeModel, EdgeModel>, toHighlight: HighlitedPath) {\n  traversePath(toHighlight.path, e => {\n    for (const vAttrs of [state.getVertexState(e.head)?.attributes, state.getVertexState(e.tail)?.attributes ]) {\n      vAttrs?.set(attribute.color, toHighlight.color);\n      vAttrs?.set(attribute.fontcolor, toHighlight.color);\n    }\n    const eAttrs = state.getEdgeState(e)?.attributes;\n    eAttrs?.set(attribute.color, toHighlight.color);\n    eAttrs?.set(attribute.fontcolor, toHighlight.color);\n  });\n}\n", "import { SelectionSet, assert } from \"@apollo/federation-internals\";\nimport { ConditionResolution, ConditionResolver, ExcludedConditions, ExcludedDestinations, sameExcludedDestinations } from \"./graphPath\";\nimport { PathContext } from \"./pathContext\";\nimport { Edge, QueryGraphState } from \"./querygraph\";\n\nexport function cachingConditionResolver(resolver: ConditionResolver): ConditionResolver {\n  // For every edge having a condition, we cache the resolution its conditions when possible.\n  // We save resolution with the set of excluded edges that were used to compute it: the reason we do this is\n  // that excluded edges impact the resolution, so we should only used a cached value if we know the excluded\n  // edges are the same as when caching, and while we could decide to cache only when we have no excluded edges\n  // at all, this would sub-optimal for types that have multiple keys, as the algorithm will always at least\n  // include the previous key edges to the excluded edges of other keys. In other words, if we only cached\n  // when we have no excluded edges, we'd only ever use the cache for the first key of every type. However,\n  // as the algorithm always try keys in the same order (the order of the edges in the query graph), including\n  // the excluded edges we see on the first ever call is actually the proper thing to do.\n  const cache = new QueryGraphState<undefined, [ConditionResolution, ExcludedDestinations]>();\n  return (edge: Edge, context: PathContext, excludedDestinations: ExcludedDestinations, excludedConditions: ExcludedConditions, extraConditions?: SelectionSet) => {\n    assert(edge.conditions || extraConditions, 'Should not have been called for edge without conditions');\n\n    // We don't cache if there is a context or excluded conditions because those would impact the resolution and\n    // we don't want to cache a value per-context and per-excluded-conditions (we also don't cache per-excluded-edges though\n    // instead we cache a value only for the first-see excluded edges; see above why that work in practice).\n    // TODO: we could actually have a better handling of the context: it doesn't really change how we'd resolve the condition, it's only\n    // that the context, if not empty, would have to be added to the trigger of key edges in the resolution path tree when appropriate\n    // and we currently don't handle that. But we could cache with an empty context, and then apply the proper transformation on the\n    // cached value `pathTree` when the context is not empty. That said, the context is about active @include/@skip and it's not use\n    // that commonly, so this is probably not an urgent improvement.\n    if (!context.isEmpty() || excludedConditions.length > 0 || extraConditions) {\n      return resolver(edge, context, excludedDestinations, excludedConditions, extraConditions);\n    }\n\n    const cachedResolutionAndExcludedEdges = cache.getEdgeState(edge);\n    if (cachedResolutionAndExcludedEdges) {\n      const [cachedResolution, forExcludedEdges] = cachedResolutionAndExcludedEdges;\n      return sameExcludedDestinations(forExcludedEdges, excludedDestinations)\n        ? cachedResolution\n        : resolver(edge, context, excludedDestinations, excludedConditions, extraConditions);\n    } else {\n      const resolution = resolver(edge, context, excludedDestinations, excludedConditions, extraConditions);\n      cache.setEdgeState(edge, [resolution, excludedDestinations]);\n      return resolution;\n    }\n  };\n}\n", "import { Schema, Selection, SelectionSet } from \"@apollo/federation-internals\";\nimport {\n    ConditionResolution,\n  ConditionResolver,\n  ExcludedConditions,\n  ExcludedDestinations,\n  GraphPath,\n  OpGraphPath,\n  SimultaneousPathsWithLazyIndirectPaths,\n  addConditionExclusion,\n  advanceOptionsToString,\n  advanceSimultaneousPathsWithOperation,\n  unsatisfiedConditionsResolution\n} from \"./graphPath\";\nimport { Edge, QueryGraph } from \"./querygraph\";\nimport { PathContext } from \"./pathContext\";\nimport { cachingConditionResolver } from \"./conditionsCaching\";\n\nclass ConditionValidationState {\n  constructor(\n    // Selection that belongs to the condition we're validating.\n    readonly selection: Selection,\n    // All the possible \"simultaneous paths\" we could be in the subgraph when we reach this state selection.\n    readonly subgraphOptions: SimultaneousPathsWithLazyIndirectPaths[],\n  ) {}\n\n  advance(supergraph: Schema): ConditionValidationState[] | null {\n    const newOptions: SimultaneousPathsWithLazyIndirectPaths[] = [];\n    for (const paths of this.subgraphOptions) {\n      const pathsOptions = advanceSimultaneousPathsWithOperation(\n        supergraph,\n        paths,\n        this.selection.element,\n        // In this particular case, we're traversing the selections of a\n        // FieldSet. By providing _no_ overrides here, it'll ensure that we\n        // don't incorrectly validate any cases where overridden fields are in\n        // a FieldSet, it's just disallowed completely.\n        new Map(),\n      );\n      if (!pathsOptions) {\n        continue;\n      }\n      newOptions.push(...pathsOptions);\n    }\n\n    // If we got no options, it means that particular selection of the conditions cannot be satisfied, so the\n    // overall condition cannot.\n    if (newOptions.length === 0) {\n      return null;\n    }\n    return this.selection.selectionSet ? this.selection.selectionSet.selections().map(\n      s => new ConditionValidationState(\n        s,\n        newOptions,\n      )\n    ) : [];\n  }\n\n  toString(): string {\n    return `${this.selection} <=> ${advanceOptionsToString(this.subgraphOptions)}`;\n  }\n}\n\n/**\n * Creates a `ConditionResolver` that only validates that the condition can be satisfied, but without\n * trying compare/evaluate the potential various ways to validate said conditions. Concretely, the\n * `ConditionResolution` values returned by the create resolver will never contain a `pathTree` (or\n * an `unsatisfiedConditionReason` for that matter) and the cost will always default to 1 if the\n * conditions are satisfied.\n */\nexport function simpleValidationConditionResolver({\n  supergraph,\n  queryGraph,\n  withCaching,\n}: {\n  supergraph: Schema,\n  queryGraph: QueryGraph,\n  withCaching?: boolean,\n}): ConditionResolver {\n  const resolver = (\n    edge: Edge,\n    context: PathContext,\n    excludedDestinations: ExcludedDestinations,\n    excludedConditions: ExcludedConditions,\n    extraConditions?: SelectionSet,\n  ): ConditionResolution => {\n    const conditions = (extraConditions ?? edge.conditions)!; // TODO: ensure that only one is set\n    excludedConditions = addConditionExclusion(excludedConditions, conditions);\n\n    const initialPath: OpGraphPath = GraphPath.create(queryGraph, edge.head);\n    const initialOptions = [\n      new SimultaneousPathsWithLazyIndirectPaths(\n        [initialPath],\n        context,\n        simpleValidationConditionResolver({ supergraph, queryGraph, withCaching }),\n        excludedDestinations,\n        excludedConditions,\n        new Map(),\n      )\n    ];\n\n    const stack: ConditionValidationState[] = [];\n    for (const selection of conditions.selections()) {\n      stack.push(\n        new ConditionValidationState(\n          selection,\n          initialOptions,\n        ),\n      );\n    }\n\n    while (stack.length > 0) {\n      const state = stack.pop()!;\n      const newStates = state.advance(supergraph);\n      if (newStates === null) {\n        return unsatisfiedConditionsResolution;\n      }\n      newStates.forEach(s => stack.push(s));\n    }\n    // If we exhaust the stack, it means we've been able to find \"some\" path for every possible selection in the condition, so the\n    // condition is validated. Note that we use a cost of 1 for all conditions as we don't care about efficiency.\n    return { satisfied: true, cost: 1 };\n  };\n  return withCaching ? cachingConditionResolver(resolver) : resolver;\n}\n", "/* Functions used to output query graphs as [mermaid graphs](https://mermaid.js.org/syntax/flowchart.html). */\n\nimport { ObjectType } from \"@apollo/federation-internals\";\nimport { Edge, FEDERATED_GRAPH_ROOT_SOURCE, QueryGraph, Vertex, isFederatedGraphRootType, simpleTraversal } from \"./querygraph\";\n\nexport type MermaidOptions = {\n  includeRootTypeLinks?: boolean,\n}\n\nexport class MermaidGraph {\n  private readonly before: string[] = [];\n  private readonly after: string[] = [];\n  private readonly subgraphs = new Map<string, string[]>();\n\n  private isBuilt = false;\n\n  constructor(\n    private readonly graph: QueryGraph,\n    private readonly options: MermaidOptions = {},\n  ) {\n    for (const name of graph.sources.keys()) {\n      if (name === this.graph.name || name === FEDERATED_GRAPH_ROOT_SOURCE) {\n        continue;\n      }\n      this.subgraphs.set(name, []);\n    }\n  }\n\n  private subgraphName(vertex: Vertex): string | undefined {\n    if (vertex.source === this.graph.name || vertex.source === FEDERATED_GRAPH_ROOT_SOURCE) {\n      return undefined;\n    }\n    return vertex.source;\n  }\n\n  private vertexName(vertex: Vertex): string {\n    if (isFederatedGraphRootType(vertex.type)) {\n      return `root-${vertex.type.name.slice(1, vertex.type.name.length-1)}`;\n    }\n    const sg = this.subgraphName(vertex);\n    const n = sg ? `${vertex.type.name}-${sg}` : `${vertex.type.name}`;\n    return vertex.provideId ? `${n}-${vertex.provideId}` : n;\n  }\n\n  addVertex(vertex: Vertex): void {\n    const sg = this.subgraphName(vertex);\n    const addTo = sg ? this.subgraphs.get(sg)! : this.before;\n    if (isFederatedGraphRootType(vertex.type)) {\n      addTo.push(`${this.vertexName(vertex)}([\"root(${vertex.type.name.slice(1, vertex.type.name.length)})\"])`);\n    } else {\n      addTo.push(`${this.vertexName(vertex)}[\"${vertex.toString()}\"]`);\n    }\n  }\n\n  addEdge(edge: Edge): boolean {\n    switch (edge.transition.kind) {\n      case 'FieldCollection':\n        if (edge.transition.definition.name.startsWith('_')) {\n          return false;\n        }\n        break;\n      case 'RootTypeResolution':\n        if (!(this.options.includeRootTypeLinks ?? true)) {\n          return false;\n        }\n        break;\n      case 'SubgraphEnteringTransition':\n        const rt = edge.tail.type as ObjectType;\n        if (rt.fields().filter((f) => !f.name.startsWith('_')).length === 0) {\n          return false;\n        }\n        break;\n    }\n\n    const head = this.vertexName(edge.head);\n    const tail = this.vertexName(edge.tail);\n    const addTo = edge.head.source !== this.graph.name && edge.head.source === edge.tail.source\n      ? this.subgraphs.get(edge.head.source)!\n      : this.after;\n    const label = edge.label();\n    if (label.length === 0) {\n      addTo.push(`${head} --> ${tail}`);\n    } else {\n      addTo.push(`${head} -->|\"${label}\"| ${tail}`);\n    }\n    return true;\n  }\n\n  build(): void {\n    if (this.isBuilt) {\n      return;\n    }\n\n    simpleTraversal(\n      this.graph,\n      (v) => this.addVertex(v),\n      (e) => this.addEdge(e),\n    );\n\n    this.isBuilt = true;\n  }\n\n  toString(): string {\n    this.build();\n\n    const final = [ 'flowchart TD' ];\n    this.before.forEach((b) => final.push('  ' + b));\n    for (const [name, data] of this.subgraphs.entries()) {\n      final.push(`  subgraph ${name}`);\n      data.forEach((d) => final.push('    ' + d));\n      final.push('  end');\n    }\n    this.after.forEach((a) => final.push('  ' + a));\n    return final.join('\\n');\n  }\n}\n", "export * from './querygraph';\nexport * from './graphPath';\nexport * from './pathTree';\nexport * from './graphviz';\nexport * from './transition';\nexport * from './pathContext';\nexport * from './conditionsCaching';\nexport * from './conditionsValidation';\nexport * from './mermaid';\nexport * from './nonLocalSelectionsEstimation';\n", "import {\n  assert,\n  Directive,\n  isNonEmptyArray,\n  isVariable,\n  NonEmptyArray,\n  OperationElement,\n  Selection,\n  selectionOfElement,\n  SelectionSet,\n  Variable,\n  VariableDefinitions\n} from \"@apollo/federation-internals\";\nimport { extractOperationConditionals } from \"@apollo/query-graphs\";\nimport { ConditionNode } from \".\";\n\nexport type VariableCondition = {\n  variable: Variable,\n  negated: boolean,\n}\n\nexport type Condition = VariableCondition | boolean;\n\n// The invariant maintained on this type are that if is an array of variable conditions, then:\n// 1. that array is not empty (it has at least one condition).\n// 2. that array has at most one condition for any given variable name.\nexport type Conditions = NonEmptyArray<VariableCondition> | boolean;\n\nexport function isConstantCondition(cond: Condition | Conditions): cond is boolean {\n  return typeof cond === 'boolean';\n}\n\nexport function mergeConditions(conditions1: Conditions, conditions2: Conditions): Conditions {\n  if (isConstantCondition(conditions1)) {\n    return conditions1 ? conditions2 : false;\n  }\n  if (isConstantCondition(conditions2)) {\n    return conditions2 ? conditions1 : false;\n  }\n\n  // `Conditions` needs to maintains the invariant that it can have only a single `VariableCondition` for a given variable name.\n  // So we start with `conditions1`, and then adds all of `conditions2` but for condition that are already in `conditions1`. For\n  // those, if the negation is the same, then we just ignore the condition from `conditions2` (keeping only the one from `conditions1`).\n  // But if the negation is opposite, then it means the whole conditions are impossible and we just return false.\n  const merged: NonEmptyArray<VariableCondition> = [...conditions1];\n  for (const cond2 of conditions2) {\n    const cond1 = conditions1.find((c1) => c1.variable.name === cond2.variable.name);\n    if (cond1) {\n      if (cond1.negated !== cond2.negated) {\n        return false;\n      }\n    } else {\n      merged.push(cond2);\n    }\n  }\n  return merged;\n}\n\nfunction sameConditions(conditions1: Conditions, conditions2: Conditions): boolean {\n  if (isConstantCondition(conditions1)) {\n    return isConstantCondition(conditions2) && conditions1 === conditions2;\n  }\n  if (isConstantCondition(conditions2)) {\n    return false;\n  }\n  // We treat the array of variable conditions as a set, because that's what it is really.\n  return conditions1.length === conditions2.length\n    && conditions1.every((cond1) => conditions2.some((cond2) => cond1.variable.name === cond2.variable.name && cond1.negated === cond2.negated));\n}\n\nexport function conditionsOfSelectionSet(selectionSet: SelectionSet): Conditions {\n  // If the conditions of all the selections within the set are the same, then those are conditions of the whole set\n  // and we return it. Otherwise, we just return `true` (which essentially translate to \"that selection always need\n  // to be queried\"). Note that for the case where the set has only 1 selection, then this just mean we return\n  // the condition of that one selection. Also note that in theory we could be a tad more precise, and when\n  // all the selections have variable conditions, we could return the intersection of all of them, but\n  // we don't bother for now as that has probably extremely rarely an impact in practice.\n  const selections = selectionSet.selections();\n  if (selections.length === 0) {\n    // we shouldn't really get here for well-formed selection, so whether we return true or false doesn't matter\n    // too much, but in principle, if there is no selection, we should be cool not including it.\n    return false;\n  }\n  const conditions = conditionsOfSelection(selections[0]);\n  for (let i = 1; i < selections.length; i++) {\n    const otherConditions = conditionsOfSelection(selections[i]);\n    if (!sameConditions(conditions, otherConditions)) {\n      return true;\n    }\n  }\n  return conditions;\n}\n\nfunction conditionsOfSelection(selection: Selection): Conditions {\n  const elementConditions = conditionsOfElement(selection.element);\n  if (!selection.selectionSet) {\n    return elementConditions;\n  }\n\n  if (isConstantCondition(elementConditions)) {\n    // If we get a constant, and it's `false`, then it means that element is never\n    // included and no point in recursing, we can return false immediately.\n    //\n    // If it's `true`, then it means that element is included. If it is a field,\n    // then we should also stop and return `true`, because no matter what the\n    // sub-selection is, we need to get that field. But if it's a fragment, it\n    // doesn't really select anything by itself, so we can recurse in that case.\n    if (!elementConditions || selection.kind === 'FieldSelection') {\n      return elementConditions;\n    }\n  }\n\n  const selectionConditions = conditionsOfSelectionSet(selection.selectionSet);\n  return mergeConditions(elementConditions, selectionConditions);\n}\n\nfunction conditionsOfElement(element: OperationElement): Conditions {\n  const conditionals = extractOperationConditionals(element);\n  if (conditionals.length === 0) {\n    return true;\n  }\n  const conditions: VariableCondition[] = [];\n  for (const conditional of conditionals) {\n    const value = conditional.value;\n    if (typeof value === 'boolean') {\n      // We want to \"resolve\" @include/@skip that have a constant value. If that constant value means skipping\n      // (so 'skip' + true or 'include' + false), then we can skip the whole element (return `false`). But\n      // it it means \"always include\" then it's a useless condition we can ignore.\n      if (value === (conditional.kind === 'skip')) {\n        return false;\n      }\n    } else {\n      conditions.push({\n        variable: value,\n        negated: conditional.kind === 'skip',\n      });\n    }\n  }\n\n  if (isNonEmptyArray(conditions)) {\n    // Technically, users are not forbidden to write something useless like:\n    //   ... on X @include(if: $x) @skip(if: $x)\n    // so if we want to maintain our invariant on `Conditions` that a variable only appear once, we need to check for\n    // that case manually.\n    if (conditions.length === 2 && conditions[0].variable.name === conditions[1].variable.name) {\n      // Note that neither @include or @skip are repeatable, so this is necessarily a @skip and an @include on the\n      // same variable, and this mean this element is always excluded.\n      return false;\n    }\n    return conditions;\n  }\n\n  return true;\n}\n\nexport function updatedConditions(newConditions: Conditions, handledConditions: Conditions): Conditions {\n  if (isConstantCondition(newConditions) || isConstantCondition(handledConditions)) {\n    return newConditions;\n  }\n\n  const filtered: VariableCondition[] = [];\n  for (const cond of newConditions) {\n    const handledCond = handledConditions.find((r) => cond.variable.name === r.variable.name);\n    if (handledCond) {\n      // If we've already handled that exact condition, we can skip it.\n      // But if we've already handled the _negation_ of this condition, then this mean the overall conditions\n      // are unreachable and we can just return `false` directly.\n      if (cond.negated !== handledCond.negated) {\n        return false;\n      }\n    } else {\n      filtered.push(cond);\n    }\n  }\n  return isNonEmptyArray(filtered) ? filtered : true;\n}\n\nexport function removeConditionsFromSelectionSet(selectionSet: SelectionSet, conditions: Conditions): SelectionSet {\n  if (isConstantCondition(conditions)) {\n    // If the conditions are the constant false, this means we know the selection will not be included\n    // in the plan in practice, and it doesn't matter too much what we return here. So we just\n    // the input unchanged as a shortcut.\n    // If the conditions are the constant true, then it means we have no conditions to remove and we can\n    // keep the selection \"as is\".\n    return selectionSet;\n  }\n\n  return selectionSet.lazyMap((selection) => {\n    // We remove any of the conditions on the element and recurse.\n    const updatedElement = removeConditionsOfElement(selection.element, conditions);\n    if (selection.selectionSet) {\n      const updatedSelectionSet = removeConditionsFromSelectionSet(selection.selectionSet, conditions);\n      if (updatedElement === selection.element) {\n        if (updatedSelectionSet === selection.selectionSet) {\n          return selection;\n        } else {\n          return selection.withUpdatedSelectionSet(updatedSelectionSet);\n        }\n      } else {\n        return selectionOfElement(updatedElement, updatedSelectionSet);\n      }\n    } else {\n      return updatedElement === selection.element ? selection : selectionOfElement(updatedElement);\n    }\n  });\n}\n\nfunction removeConditionsOfElement(element: OperationElement, conditions: VariableCondition[]): OperationElement {\n  const updatedDirectives = (element.appliedDirectives as Directive<OperationElement>[]).filter((d) => !matchesConditionForKind(d, conditions, 'include') && !matchesConditionForKind(d, conditions, 'skip'));\n  if (updatedDirectives.length === element.appliedDirectives.length) {\n    return element;\n  }\n  return element.withUpdatedDirectives(updatedDirectives);\n}\n\nfunction matchesConditionForKind(\n  directive: Directive<OperationElement>,\n  conditions: VariableCondition[],\n  kind: 'include' | 'skip'\n): boolean {\n  if (directive.name !== kind) {\n    return false;\n  }\n\n  const value = directive.arguments()['if'];\n  return !isVariable(value) || conditions.some((cond) => cond.variable.name === value.name && cond.negated === (kind === 'skip'));\n}\n\n/**\n * Evaluates the provided condition given variable definitions and concrete values.\n *\n * Note that this method allows the entry of `values` to be of `any` type, but this is only to make it possible\n * to call this method with all of the variables values of a query, but this method assumes that:\n *  1. `values` contains a value for `condition.condition`, _or_ the variable in question is defined with a default value.\n *  2. that the value found for the `condition.condition` variable (in `values`, or the default for the variable) is a boolean.\n */\nexport function evaluateCondition(\n  condition: ConditionNode,\n  variables: VariableDefinitions,\n  values: Record<string, any> | undefined,\n): boolean {\n  const variable = condition.condition;\n  let val = values ? values[variable] : undefined;\n  if (val === undefined) {\n    val = variables.definition(variable)?.defaultValue;\n  }\n  assert(val !== undefined, () => `Missing value for variable \\$${variable} (and no default found)`);\n  assert(typeof val === 'boolean', () => `Invalid non-boolean value ${val} for Boolean! variable \\$${variable}`)\n  return val;\n}\n", "import { Concrete } from \"@apollo/federation-internals\";\nimport { QueryPlan } from \".\";\nimport { InMemoryLRUCache, KeyValueCache } from '@apollo/utils.keyvaluecache';\n\nexport type QueryPlanCache = KeyValueCache<QueryPlan> & { clear: () => void }\n\nexport type QueryPlannerConfig = {\n  /**\n   * If enabled, the `FetchNode.operationDocumentNode` field in query plan will be populated with the AST\n   * of the underlying operation (_on top_ of the \"serialized\" string `FetchNode.operation` which is always\n   * present). This can used by specific gateway user code that needs read-only access to such AST in\n   * order to save having to parse `FetchNode.operation`. Without this option, `FetchNode.operationDocumentNode`\n   * will always be `undefined`.\n   *\n   * Enabling this option will make query plans use more memory and you should consider increasing the\n   * query plan cache size (though `GatewayConfig.experimental_approximateQueryPlanStoreMiB`) if you enable it.\n   *\n   * Defaults to false (at least since 2.2; it temporarily defaulted to true before 2.2).\n   */\n  exposeDocumentNodeInFetchNode?: boolean;\n\n  /**\n   * Whether the query planner should try to reused the named fragments of the planned query in subgraph fetches.\n   *\n   * This is often a good idea as it can prevent very large subgraph queries in some cases (named fragments can\n   * make some relatively small queries (using said fragments) expand to a very large query if all the spreads\n   * are inline). However, due to architecture of the query planner, this optimization is done as an additional\n   * pass on the subgraph queries of the generated plan and can thus increase the latency of building a plan.\n   * As long as query plans are sufficiently cached, this should not be a problem, which is why this option is\n   * enabled by default, but if the distribution of inbound queries prevents efficient caching of query plans,\n   * this may become an undesirable trade-off and cand be disabled in that case.\n   *\n   * Defaults to true.\n   */\n  reuseQueryFragments?: boolean,\n\n  /**\n   * If enabled, the query planner will extract inline fragments into fragment\n   * definitions before sending queries to subgraphs. This can significantly\n   * reduce the size of the query sent to subgraphs, but may increase the time\n   * it takes to plan the query.\n   */\n  generateQueryFragments?: boolean,\n\n  // Side-note: implemented as an object instead of single boolean because we expect to add more to this soon\n  // enough. In particular, once defer-passthrough to subgraphs is implemented, the idea would be to add a\n  // new `passthroughSubgraphs` option that is the list of subgraph to which we can pass-through some @defer\n  // (and it would be empty by default). Similarly, once we support @stream, grouping the options here will\n  // make sense too.\n  incrementalDelivery?: {\n    /**\n     * Enables @defer support by the query planner.\n     *\n     * If set, then the query plan for queries having some @defer will contains some `DeferNode` (see `QueryPlan.ts`).\n     *\n     * Defaults to false (meaning that the @defer are ignored).\n     */\n    enableDefer?: boolean,\n  }\n\n  cache?: QueryPlanCache,\n\n  /**\n   * A sub-set of configurations that are meant for debugging or testing. All the configurations in this\n   * sub-set are provided without guarantees of stability (they may be dangerous) or continued support (they\n   * may be removed without warning).\n   */\n  debug?: {\n    /**\n     * If used and the supergraph is built from a single subgraph, then user queries do not go through the\n     * normal query planning and instead a fetch to the one subgraph is built directly from the input query.\n     */\n    bypassPlannerForSingleSubgraph?: boolean,\n\n    /**\n     * Query planning is an exploratory process. Depending on the specificities and feature used by\n     * subgraphs, there could exist may different theoretical valid (if not always efficient) plans\n     * for a given query, and at a high level, the query planner generates those possible choices,\n     * evaluate them, and return the best one. In some complex cases however, the number of\n     * theoretically possible plans can be very large, and to keep query planning time acceptable,\n     * the query planner cap the maximum number of plans it evaluates. This config allows to configure\n     * that cap. Note if planning a query hits that cap, then the planner will still always return a\n     * \"correct\" plan, but it may not return _the_ optimal one, so this config can be considered a\n     * trade-off between the worst-time for query planning computation processing, and the risk of\n     * having non-optimal query plans (impacting query runtimes).\n     *\n     * This value currently defaults to 10 000, but this default is considered an implementation\n     * detail and is subject to change. We do not recommend setting this value unless it is to\n     * debug a specific issue (with unexpectedly slow query planning for instance). Remember that\n     * setting this value too low can negatively affect query runtime (due to the use of sub-optimal\n     * query plans).\n     */\n    maxEvaluatedPlans?: number,\n\n    /**\n     * Before creating query plans, for each path of fields in the query we compute all the\n     * possible options to traverse that path via the subgraphs. Multiple options can arise because\n     * fields in the path can be provided by multiple subgraphs, and abstract types (i.e. unions\n     * and interfaces) returned by fields sometimes require the query planner to traverse through\n     * each constituent object type. The number of options generated in this computation can grow\n     * large if the schema or query are sufficiently complex, and that will increase the time spent\n     * planning.\n     *\n     * This config allows specifying a per-path limit to the number of options considered. If any\n     * path's options exceeds this limit, query planning will abort and the operation will fail.\n     *\n     * The default value is null, which specifies no limit.\n     */\n    pathsLimit?: number | null\n  },\n\n   /**\n   * Enables type conditioned fetching.\n   * This flag is a workaround, which may yield significant\n   * performance degradation when computing query plans,\n   * and increase query plan size.\n   *\n   * If you aren't aware of this flag, you probably don't need it.\n   */\n    typeConditionedFetching?: boolean,\n}\n\nexport function enforceQueryPlannerConfigDefaults(\n  config?: QueryPlannerConfig\n): Concrete<QueryPlannerConfig> {\n  return {\n    exposeDocumentNodeInFetchNode: false,\n    reuseQueryFragments: true,\n    generateQueryFragments: false,\n    cache: new InMemoryLRUCache<QueryPlan>({maxSize: Math.pow(2, 20) * 50 }),\n    ...config,\n    incrementalDelivery: {\n      enableDefer: false,\n      ...config?.incrementalDelivery,\n    },\n    debug: {\n      bypassPlannerForSingleSubgraph: false,\n      // Note that this number is a tad arbitrary: it's a nice round number that, on my laptop, ensure query planning\n      // don't take more than a handful of seconds. It might be worth running a bit more experiments on more environment\n      // to see if it's such a good default.\n      maxEvaluatedPlans: 10000,\n      pathsLimit: null,\n      ...config?.debug,\n    },\n    typeConditionedFetching: config?.typeConditionedFetching || false,\n  };\n}\n\nexport function validateQueryPlannerConfig(\n  config: Concrete<QueryPlannerConfig>,\n) {\n  if (config.debug.maxEvaluatedPlans < 1) {\n    throw new Error(`Invalid value for query planning configuration \"debug.maxEvaluatedPlans\"; expected a number >= 1 but got ${config.debug.maxEvaluatedPlans}`);\n  }\n}\n", "import { assert } from \"@apollo/federation-internals\";\n\ntype Choices<T> = (T | undefined)[];\n\ntype Partial<P, T> = {\n  partial: P,\n  partialCost?: number,\n  remaining: Choices<T>[],\n  isRoot: boolean,\n  index?: number,\n}\n\n/**\n * Given some initial partial plan and a list of options for the remaining parts that need to be added to that plan to make it complete,\n * this method \"efficiently\" generates (or at least evaluate) all the possible complete plans and the returns the \"best\" one (the one\n * with the lowest cost).\n *\n * Note that this method abstracts the actualy types of both plans and additional elements to add to the plan, and this both for clarity\n * and to make testing of this method easier. But type parameter `P` should be though of as abstracting a query plan (in practice, it\n * is instanciated to a pair of a [`DependencyGraph`, corresponding `PathTree`]), whith `E` should be though of as an additional element\n * to add to the plan to make it complete (instanciated in practice by a `PathTree` for ... reasons ... but one that really correspond to\n * a single `GraphPath`).\n *\n * As said above, this method takes 2 arguments:\n * - `initial` is a partial plan, and corresponds to all the parts of the query being planned for which there no choices (and\n *   theoretically can be empty, though very very rarely is in practice).\n * - `toAdd` is the list of additional elements to add to `initial` ot make a full plan of the query being planned. Each element of\n *   `toAdd` corresponds to one of the query \"leaf\" and is itself a list of all the possible options for that \"leaf\".\n *\n * In other words, a comple plan is obtained by picking one choice in each of the element of `toAdd` (so picking `toAdd.length` element)\n * and adding them all to `initial`. The question being, which particular choice for each element of `toAdd` yield the best plan.\n *\n * Of course, the total number of possible plans is the cartesian product of `toAdd`, which can get large, and so this method is trying\n * to trim some of the options. For that, the general idea is that we first generate one of the plan, compute its cost, and then as\n * we build other options, we can check as we pick elements of `toAdd` the cost of what we get, and if we ever get a higher cost than\n * the one fo the complete plan we already have, then there is no point in checking the remaining elements, and we can thus cut all\n * the options for the remaining elements. In other words, if a partial plan is ever already more costly than another full plan we\n * have computed, then adding more will never get us a better plan.\n *\n * Of course, this method is not guaranteed to save work, and in the worst case, we'll still generate all plans. But when a \"good\" \n * plan is generated early, it can save a lot of computing work.\n *\n * And the 2nd \"trick\" of this method is that it starts by generating the plans that correspond to picking choices in `toAdd` at\n * the same indexes, and this because this often actually generate good plans. The reason is that the order of choices for each\n * element of `toAdd` is not necessarily random, because the algorithm generating paths is not random either. In other words, elements\n * at similar indexes have some good change to correspond to similar choices, and so will tend to correspond to good plans.\n *\n * @param initial - the initial partial plan to use. \n * @param toAdd - a list of the remaining \"elements\" to add to `initial`. Each element of `toAdd` correspond to multiple choice we can \n *   use to plan that particular element.\n * @param addFct - how to obtain a new plan by taking some plan and adding a new element to it.\n * @param costFct - how to compute the cost of a plan.\n * @param onPlan - an optional method called on every _complete_ plan generated by this method, with both the cost of that plan and\n *   the best cost we have generated thus far (if that's not the first plan generated). This mostly exists to allow some debugging.\n */\nexport function generateAllPlansAndFindBest<P, E>({\n  initial,\n  toAdd,\n  addFct,\n  costFct,\n  onPlan = () => {},\n}: {\n  initial: P,\n  toAdd: E[][],\n  addFct: (p: P, e: E) => P,\n  costFct: (p: P) => number,\n  onPlan?: (p: P, cost: number, previousCost: number | undefined) => void,\n}): {\n  best: P,\n  cost: number,\n}{\n  // Note: we save ourselves the computation of the cost of `initial` (we pass no `partialCost` in this initialization).\n  // That's because `partialCost` is about exiting early when we've found at least one full plan and the cost of that\n  // plan is already smaller than the cost of a partial computation. But any plan is going be built from `initial` with\n  // at least one 'choice' added to it, all plans are guaranteed to be more costly than `initial` anyway. Note that\n  // save for `initial`, we always compute `partialCost` as the pros of exiting some branches early are large enough\n  // that it outweight computing some costs unecessarily from time to time.\n  const stack: Partial<P, E>[] = [{\n    partial: initial,\n    remaining: toAdd,\n    isRoot: true,\n    index: 0,\n  }];\n\n  let min: { best: P, cost: number } | undefined = undefined;\n\n  while (stack.length > 0) {\n    const { partial, partialCost, remaining, isRoot, index } = stack.pop()!;\n\n    // If we've found some plan already, and the partial we have is already more costly than that,\n    // then no point continuing with it.\n    if (min !== undefined && partialCost !== undefined && partialCost >= min.cost) {\n      continue;\n    }\n\n    const nextChoices = remaining[0];\n    const otherChoices = remaining.slice(1);\n\n    const pickedIndex = pickNext(index, nextChoices);\n    const { extracted, updatedChoices, isLast } = extract(pickedIndex, nextChoices);\n\n    if (!isLast) {\n      // First, re-insert what correspond to all the choices that do _not_ pick `extracted`.\n      insertInStack({\n        partial,\n        remaining: [updatedChoices].concat(otherChoices),\n        isRoot,\n        index: isRoot && index !== undefined && index < nextChoices.length - 1 ? index + 1 : undefined,\n        partialCost,\n      }, stack);\n    }\n\n    const newPartial = addFct(partial, extracted);\n    const cost = costFct(newPartial);\n    if (otherChoices.length === 0) {\n      // We have a complete plan. If it is best, save it, otherwise, we're done with it.\n      const isNewMin = min === undefined || cost < min.cost;\n      onPlan(newPartial, cost, min?.cost);\n      if (isNewMin) {\n        min = {\n          best: newPartial,\n          cost\n        };\n      }\n      continue;\n    }\n\n    if (min === undefined || cost < min.cost) {\n      insertInStack({\n        partial: newPartial,\n        partialCost: cost,\n        remaining: otherChoices,\n        isRoot: false,\n        index,\n      }, stack);\n    }\n  }\n\n  assert(min, 'A plan should have been found');\n  return min;\n}\n\nfunction insertInStack<P, E>(elt: Partial<P, E>, stack: Partial<P, E>[]) {\n  // We push elements with a fixed index at the end so they are handled first.\n  if (elt.index !== undefined) {\n    stack.push(elt);\n  } else {\n    stack.unshift(elt);\n  }\n}\n\nfunction pickNext<E>(index: number | undefined, remaining: Choices<E>): number {\n  if (index === undefined || index >= remaining.length) {\n    for (let i = 0; i < remaining.length; i++) {\n      if (remaining[i] !== undefined) {\n        return i;\n      }\n    }\n    assert(false, 'Passed a \"remaining\" with all undefined');\n  } else {\n    assert(remaining[index] !== undefined, () => `Invalid index ${index}`);\n    return index;\n  }\n}\n\nfunction extract<E>(index: number, choices: Choices<E>): { extracted: E, isLast: boolean, updatedChoices: Choices<E>} {\n  const extracted = choices[index];\n  assert(extracted !== undefined, () => `Index ${index} of ${choices} is undefined`)\n  const updatedChoices = new Array<E | undefined>(choices.length);\n  let isLast = true;\n  for (let i = 0; i < choices.length; i++) {\n    if (i !== index) {\n      isLast &&= choices[i] === undefined;\n      updatedChoices[i] = choices[i];\n    }\n  }\n  return {\n    extracted,\n    isLast,\n    updatedChoices,\n  };\n} \n\n", "import {\n  assertUnreachable,\n  FragmentSpreadSelection,\n  Operation,\n  SelectionSet\n} from '@apollo/federation-internals';\n\nconst MAX_RECURSIVE_SELECTIONS = 10_000_000;\n\n/**\n * Measures the number of selections that would be encountered if we walked\n * the given selection set while recursing into fragment spreads. Returns\n * `null` if this number exceeds `MAX_RECURSIVE_SELECTIONS`.\n * \n * Assumes that fragments referenced by spreads exist and don't form cycles. If\n * If a fragment spread appears multiple times for the same named fragment, it\n * is counted multiple times.\n */\nfunction countRecursiveSelections(\n  operation: Operation,\n  fragmentCache: Map<string, number>,\n  selectionSet: SelectionSet,\n  count: number,\n): number | null {\n  for (const selection of selectionSet.selections()) {\n    // Add 1 for the current selection and check bounds.\n    count++;\n    if (count > MAX_RECURSIVE_SELECTIONS) {\n      return null;\n    }\n\n    switch (selection.kind) {\n      case 'FieldSelection': {\n        if (selection.selectionSet) {\n          const result = countRecursiveSelections(\n            operation,\n            fragmentCache,\n            selection.selectionSet,\n            count,\n          );\n          if (result === null) return null;\n          count = result;\n        }\n        break;\n      }\n      case 'FragmentSelection': {\n        if (selection instanceof FragmentSpreadSelection) {\n          const name = selection.namedFragment.name;\n          const cached = fragmentCache.get(name);\n\n          if (cached !== undefined) {\n            count = count + cached;\n            if (count > MAX_RECURSIVE_SELECTIONS) {\n              return null;\n            }\n          } else {\n            const oldCount = count;\n            const result = countRecursiveSelections(\n              operation,\n              fragmentCache,\n              selection.selectionSet,\n              count,\n            );\n            if (result === null) return null;\n            count = result;\n            fragmentCache.set(name, count - oldCount);\n          }\n        } else { // Inline fragment\n          const result = countRecursiveSelections(\n            operation,\n            fragmentCache,\n            selection.selectionSet,\n            count,\n          );\n          if (result === null) return null;\n          count = result;\n        }\n        break;\n      }\n      default:\n        assertUnreachable(selection);\n    }\n  }\n  \n  return count;\n}\n\nexport function validateRecursiveSelections(\n  operation: Operation,\n) {\n  const fragmentCache = new Map<string, number>();\n  const result = countRecursiveSelections(\n    operation,\n    fragmentCache,\n    operation.selectionSet,\n    0);\n  if (result === null) {\n    throw new Error('Exceeded maximum recursive selections in this operation');\n  }\n};\n", "import {\n  assert,\n  arrayEquals,\n  baseType,\n  CompositeType,\n  Field,\n  FieldSelection,\n  FragmentElement,\n  isAbstractType,\n  isCompositeType,\n  isListType,\n  isObjectType,\n  isNamedType,\n  ListType,\n  NonNullType,\n  ObjectType,\n  Operation,\n  OperationPath,\n  sameOperationPaths,\n  Schema,\n  SchemaRootKind,\n  Selection,\n  SelectionSet,\n  selectionSetOf,\n  Variable,\n  VariableDefinition,\n  VariableDefinitions,\n  newDebugLogger,\n  selectionOfElement,\n  selectionSetOfElement,\n  NamedFragments,\n  operationToDocument,\n  MapWithCachedArrays,\n  FederationMetadata,\n  federationMetadata,\n  entitiesFieldName,\n  concatOperationPaths,\n  Directive,\n  directiveApplicationsSubstraction,\n  conditionalDirectivesInOperationPath,\n  SetMultiMap,\n  OperationElement,\n  Concrete,\n  DeferDirectiveArgs,\n  setValues,\n  MultiMap,\n  typenameFieldName,\n  mapKeys,\n  operationPathToStringPath,\n  mapValues,\n  isInterfaceObjectType,\n  isInterfaceType,\n  Type,\n  MutableSelectionSet,\n  SelectionSetUpdates,\n  AbstractType,\n  isDefined,\n  InterfaceType,\n  FragmentSelection,\n  typesCanBeMerged,\n  Supergraph,\n  sameType,\n  isInputType,\n  possibleRuntimeTypes,\n  NamedType,\n  VariableCollector,\n  DEFAULT_MIN_USAGES_TO_OPTIMIZE,\n} from \"@apollo/federation-internals\";\nimport {\n  advanceSimultaneousPathsWithOperation,\n  Edge,\n  emptyContext,\n  ExcludedDestinations,\n  QueryGraph,\n  GraphPath,\n  isPathContext,\n  isRootPathTree,\n  OpGraphPath,\n  OpPathTree,\n  OpRootPathTree,\n  PathContext,\n  PathTree,\n  RootVertex,\n  Vertex,\n  isRootVertex,\n  ExcludedConditions,\n  advanceOptionsToString,\n  ConditionResolution,\n  unsatisfiedConditionsResolution,\n  cachingConditionResolver,\n  ConditionResolver,\n  addConditionExclusion,\n  SimultaneousPathsWithLazyIndirectPaths,\n  simultaneousPathsToString,\n  SimultaneousPaths,\n  terminateWithNonRequestedTypenameField,\n  getLocallySatisfiableKey,\n  createInitialOptions,\n  buildFederatedQueryGraph,\n  FEDERATED_GRAPH_ROOT_SOURCE,\n  NonLocalSelectionsState,\n  NonLocalSelectionsMetadata,\n} from \"@apollo/query-graphs\";\nimport { stripIgnoredCharacters, print, OperationTypeNode, SelectionSetNode, Kind } from \"graphql\";\nimport { DeferredNode, FetchDataKeyRenamer, FetchDataRewrite } from \".\";\nimport { Conditions, conditionsOfSelectionSet, isConstantCondition, mergeConditions, removeConditionsFromSelectionSet, updatedConditions } from \"./conditions\";\nimport { enforceQueryPlannerConfigDefaults, QueryPlannerConfig, validateQueryPlannerConfig } from \"./config\";\nimport { generateAllPlansAndFindBest } from \"./generateAllPlans\";\nimport { QueryPlan, ResponsePath, SequenceNode, PlanNode, ParallelNode, FetchNode, SubscriptionNode, trimSelectionNodes } from \"./QueryPlan\";\nimport { validateRecursiveSelections } from './recursiveSelectionsLimit';\n\n\nconst debug = newDebugLogger('plan');\n\n// Somewhat random string used to optimise handling __typename in some cases. See usage for details. The concrete value\n// has no particular significance.\nconst SIBLING_TYPENAME_KEY = 'sibling_typename';\n\ntype CostFunction = FetchGroupProcessor<number, number>;\n\n/**\n * Constant used during query plan cost computation to account for the base cost of doing a fetch, that is the\n * fact any fetch imply some networking cost, request serialization/deserialization, validation, ...\n *\n * The number is a little bit arbitrary, but insofar as we roughly assign a cost of 1 to a single field queried\n * (see `selectionCost` method), this can be though of as saying that resolving a single field is in general\n * a tiny fraction of the actual cost of doing a subgraph fetch.\n */\nconst fetchCost = 1000;\n\n/**\n * Constant used during query plan cost computation as a multiplier to the cost of fetches made in sequences.\n *\n * This means that if 3 fetches are done in sequence, the cost of 1nd one is multiplied by this number, the\n * 2nd by twice this number, and the 3rd one by thrice this number. The goal is to heavily favor query plans\n * with the least amount of sequences, since this affect overall latency directly. The exact number is a tad\n * arbitrary however.\n */\nconst pipeliningCost = 100;\n\n/**\n * Computes the cost of a Plan.\n *\n * A plan is essentially some mix of sequences and parallels of fetches. And the plan cost\n * is about minimizing both:\n *  1. The expected total latency of executing the plan. Typically, doing 2 fetches in\n *    parallel will most likely have much better latency then executing those exact same\n *    fetches in sequence, and so the cost of the latter must be greater than that of\n *    the former.\n *  2. The underlying use of resources. For instance, if we query 2 fields and we have\n *    the choice between getting those 2 fields from a single subgraph in 1 fetch, or\n *    get each from a different subgraph with 2 fetches in parallel, then we want to\n *    favor the former as just doing a fetch in and of itself has a cost in terms of\n *    resources consumed.\n *\n * Do note that at the moment, this cost is solely based on the \"shape\" of the plan and has\n * to make some conservative assumption regarding concrete runtime behaviour. In particular,\n * it assumes that:\n *  - all fields have the same cost (all resolvers take the same time).\n *  - that field cost is relative small compare to actually doing a subgraph fetch. That is,\n *    it assumes that the networking and other query processing costs are much higher than\n *    the cost of resolving a single field. Or to put it more concretely, it assumes that\n *    a fetch of 5 fields is probably not too different from than of 2 fields.\n */\nconst defaultCostFunction: CostFunction = {\n  /**\n   * The cost of a fetch roughly proportional to how many fields it fetches (but see `selectionCost` for more details)\n   * plus some constant \"premium\" to account for the fact than doing each fetch is costly (and that fetch cost often\n   * dwarfted the actual cost of fields resolution).\n   */\n  onFetchGroup: (group: FetchGroup) => (fetchCost + group.cost()),\n\n  /**\n   * We don't take conditions into account in costing for now as they don't really know anything on the condition\n   * and this shouldn't really play a role in picking a plan over another.\n   */\n  onConditions: (_: Conditions, value: number) => value,\n\n  /**\n   * We sum the cost of fetch groups in parallel. Note that if we were only concerned about expected latency,\n   * we could instead take the `max` of the values, but as we also try to minimize general resource usage, we\n   * want 2 parallel fetches with cost 1000 to be more costly than one with cost 1000 and one with cost 10,\n   * so suming is a simple option.\n   */\n  reduceParallel: (values: number[]) => parallelCost(values),\n\n  /**\n   * For sequences, we want to heavily favor \"shorter\" pipelines of fetches as this directly impact the\n   * expected latency of the overall plan.\n   *\n   * To do so, each \"stage\" of a sequence/pipeline gets an additional multiplier on the intrinsic cost\n   * of that stage.\n   */\n  reduceSequence: (values: number[]) => sequenceCost(values),\n\n  /**\n   * This method exists so we can inject the necessary information for deferred block when\n   * genuinely creating plan nodes. It's irrelevant to cost computation however and we just\n   * return the cost of the block unchanged.\n   */\n  reduceDeferred(_: DeferredInfo, value: number): number {\n    return value;\n  },\n\n  /**\n   * It is unfortunately a bit difficult to properly compute costs for defers because in theory\n   * some of the deferred blocks (the costs in `deferredValues`) can be started _before_ the full\n   * `nonDeferred` part finishes (more precisely, the \"structure\" of query plans express the fact\n   * that there is a non-deferred part and other deferred parts, but the complete dependency of\n   * when a deferred part can be start is expressed through the `FetchNode.id` field, and as\n   * this cost function is currently mainly based on the \"structure\" of query plans, we don't\n   * have easy access to this info).\n   *\n   * Anyway, the approximation we make here is that all the deferred starts strictly after the\n   * non-deferred one, and that all the deferred parts can be done in parallel.\n   */\n  reduceDefer(nonDeferred: number, _: SelectionSet, deferredValues: number[]): number {\n    return sequenceCost([nonDeferred, parallelCost(deferredValues)]);\n  },\n};\n\nfunction parallelCost(values: number[]): number {\n  return sum(values);\n}\n\nfunction sequenceCost(stages: number[]): number {\n  return stages.reduceRight((acc, stage, idx) => (acc + (Math.max(1, idx * pipeliningCost) * stage)), 0);\n}\n\ntype ClosedPath<RV extends Vertex> = {\n  paths: SimultaneousPaths<RV>,\n  selection?: SelectionSet,\n}\n\nfunction closedPathToString(p: ClosedPath<any>): string {\n  const pathStr = simultaneousPathsToString(p.paths);\n  return p.selection ? `${pathStr} -> ${p.selection}` : pathStr;\n}\n\nfunction flattenClosedPath<RV extends Vertex>(\n  p: ClosedPath<RV>\n): { path: OpGraphPath<RV>, selection?: SelectionSet }[] {\n  return p.paths.map((path) => ({ path, selection: p.selection}));\n}\n\ntype ClosedBranch<RV extends Vertex> = ClosedPath<RV>[];\n\nfunction allTailVertices(options: SimultaneousPathsWithLazyIndirectPaths<any>[]): Set<Vertex> {\n  const vertices = new Set<Vertex>();\n  for (const option of options) {\n    for (const path of option.paths) {\n      vertices.add(path.tail);\n    }\n  }\n  return vertices;\n}\n\nfunction selectionIsFullyLocalFromAllVertices(\n  selection: SelectionSet,\n  vertices: Set<Vertex>,\n  inconsistentAbstractTypesRuntimes: Set<string>,\n): boolean {\n  let _useInconsistentAbstractTypes: boolean | undefined = undefined;\n  const useInconsistentAbstractTypes = (): boolean => {\n    if (_useInconsistentAbstractTypes === undefined) {\n      _useInconsistentAbstractTypes = selection.some((elt) =>\n        elt.kind === 'FragmentElement' && !!elt.typeCondition && inconsistentAbstractTypesRuntimes.has(elt.typeCondition.name)\n      );\n    }\n    return _useInconsistentAbstractTypes;\n  }\n  for (const vertex of vertices) {\n    // To guarantee that the selection is fully local from the provided vertex/type, we must have:\n    // - no edge crossing subgraphs from that vertex.\n    // - the type must be compositeType (mostly just ensuring the selection make sense).\n    // - everything in the selection must be avaiable in the type (which `rebaseOn` essentially validates).\n    // - the selection must not \"type-cast\" into any abstract type that has inconsistent runtimes acrosse subgraphs. The reason for the\n    //   later condition is that `selection` is originally a supergraph selection, but that we're looking to apply \"as-is\" to a subgraph.\n    //   But suppose it has a `... on I` where `I` is an interface. Then it's possible that `I` includes \"more\" types in the supergraph\n    //   than in the subgraph, and so we might have to type-explode it. If so, we cannot use the selection \"as-is\".\n    if (vertex.hasReachableCrossSubgraphEdges\n      || !isCompositeType(vertex.type)\n      || !selection.canRebaseOn(vertex.type)\n      || useInconsistentAbstractTypes()\n    ) {\n      return false;\n    }\n  }\n  return true;\n}\n\n/**\n * Given 2 paths that are 2 different options to reach the same query leaf field, checks if one can be shown\n * to be always \"better\" (more efficient/optimal) than the other one, and this regardless of any surrounding context (that\n * is regardless of what the rest of the query plan would be for any other query leaf field.\n *\n * Note that this method is used on final options of a given \"query path\", so all the heuristics done within `GraphPath`\n * to avoid unecessary option have already been applied (say, avoiding to consider a path that do 2 successives key jumps\n * when there is a 1 jump equivalent, ...), so this focus on what can be done based on the fact that the path considered\n * are \"finished\".\n *\n * @return -1 if `opt1` is known to be strictly better than `opt2`, 1 if it is `opt2` that is strictly better, and 0 if we\n * cannot really guarantee anything (at least \"out of context\").\n */\nexport function compareOptionsComplexityOutOfContext<RV extends Vertex>(opt1: SimultaneousPaths<RV>, opt2: SimultaneousPaths<RV>): number {\n  // Currently, we only every compare single-path options. We may find smart things to do for multi-path options later,\n  // but unsure what currently.\n  if (opt1.length === 1) {\n    if (opt2.length === 1) {\n      return compareSinglePathOptionsComplexityOutOfContext(opt1[0], opt2[0]);\n    } else {\n      return compareSingleVsMultiPathOptionsComplexityOutOfContext(opt1[0], opt2);\n    }\n  } else if (opt2.length === 1) {\n    return -compareSingleVsMultiPathOptionsComplexityOutOfContext(opt2[0], opt1);\n  }\n  return 0;\n}\n\nfunction compareSinglePathOptionsComplexityOutOfContext<RV extends Vertex>(p1: OpGraphPath<RV>, p2: OpGraphPath<RV>): number {\n  // Currently, this method only handle the case where we have something like:\n  //  - `p1`: <some prefix> -[t]-> T(A)               -[u]-> U(A) -[x] -> Int(A)\n  //  - `p2`: <some prefix> -[t]-> T(A) -[key]-> T(B) -[u]-> U(B) -[x] -> Int(B)\n  // That is, we have 2 choices that are identical up to the \"end\", when one stays in the subgraph (p1, which stays in A)\n  // while the other use a key to another subgraph (p2, going to B).\n  //\n  // In such a case, whatever else the a query might be doing, it can never be \"worst\"\n  // to use `p1` than to use `p2` because both will force the same \"fetch group\" up to the\n  // end, but `p2` may force one more fetch that `p` does not.\n  // Do note that we say \"may\" above, because the rest of the plan may well have a forced\n  // choice like:\n  //  - `other`: <some prefix> -[t]-> T(A) -[key]-> T(B) -[u]-> U(B) -[y] -> Int(B)\n  // in which case the plan will have the jump from A to B after `t` whether we use `p1` or\n  // `p2`, but while in that particular case `p1` and `p2` are about comparable in term\n  // of performance, `p1` is still not worst than `p2` (and in other situtation, `p1` may\n  // genuinely be better).\n  //\n  // Note that this is in many ways just a generalization of a heuristic we use earlier for leaf field. That is,\n  // we will never get as input to this method something like:\n  //  - `p1`: <some prefix> -[t]-> T(A)               -[x] -> Int(A)\n  //  - `p2`: <some prefix> -[t]-> T(A) -[key]-> T(B) -[x] -> Int(B)\n  // because when the code is asked for option for `x` after `<some prefix> -[t]-> T(A)`, it notices that `x`\n  // is a leaf and is in `A`, so it doesn't ever look for alternative path. But this only work for direct\n  // leaf of an entity. In the example at the beginning, field `u` makes this not working, because when\n  // we compute choices for `u`, we don't yet know what comes after that, and so we have to take the option\n  // of going to subgraph `B` into account (it may very be that whatever comes after `u` is not in `A` for\n  // instance).\n  if (p1.tail.source !== p2.tail.source) {\n    const { thisJumps: p1Jumps, thatJumps: p2Jumps } = p1.countSubgraphJumpsAfterLastCommonVertex(p2);\n    // As described above, we want to known if one of the path has no jumps at all (after the common prefix) while\n    // the other do have some.\n    if (p1Jumps === 0 && p2Jumps > 0) {\n      return -1;\n    } else if (p1Jumps > 0 && p2Jumps === 0) {\n      return 1;\n    } else {\n      return 0;\n    }\n  }\n  return 0;\n}\n\nfunction compareSingleVsMultiPathOptionsComplexityOutOfContext<RV extends Vertex>(p1: OpGraphPath<RV>, p2s: SimultaneousPaths<RV>): number {\n  // This handle the same case than for the single-path only case, but compares the single path against\n  // each of the option of the multi-path, and only \"ignore\" the multi-path if all its paths can be ignored.\n  // Note that this happens less often than the single-path only case, but with @provides on an interface, you can\n  // have case where one the one side you can get something entirely on the current graph, but the type-exploded case\n  // has still be generated due to the leaf field not being the one just after \"provided\" interface.\n  for (const p2 of p2s) {\n    // Note: not sure if it is possible for a branch of the multi-path option to subsume the single-path one in practice, but\n    // if it does, we ignore it because it's not obvious that this is enough to get rid of `p1` (maybe `p1` is provably a bit\n    // costlier than one of the path of `p2s`, but `p2s` may have many paths and could still be collectively worst than `p1`).\n    if (compareSinglePathOptionsComplexityOutOfContext(p1, p2) >= 0) {\n      return 0;\n    }\n  }\n  return -1;\n}\n\nclass QueryPlanningTraversal<RV extends Vertex> {\n  // The stack contains all states that aren't terminal.\n  private bestPlan: [FetchDependencyGraph, OpPathTree<RV>, number] | undefined;\n  private readonly isTopLevel: boolean;\n  private conditionResolver: ConditionResolver;\n\n  private stack: [Selection, SimultaneousPathsWithLazyIndirectPaths<RV>[]][];\n  private readonly closedBranches: ClosedBranch<RV>[] = [];\n  private readonly optionsLimit: number | null;\n  private readonly typeConditionedFetching: boolean;\n\n  constructor(\n    readonly parameters: PlanningParameters<RV>,\n    selectionSet: SelectionSet,\n    readonly startFetchIdGen: number,\n    readonly hasDefers: boolean,\n    private readonly rootKind: SchemaRootKind,\n    readonly costFunction: CostFunction,\n    initialContext: PathContext,\n    typeConditionedFetching: boolean,\n    nonLocalSelectionsState: NonLocalSelectionsState | null,\n    initialSubgraphConstraint: string | null,\n    excludedDestinations: ExcludedDestinations = [],\n    excludedConditions: ExcludedConditions = [],\n  ) {\n    const { root, federatedQueryGraph } = parameters;\n    this.typeConditionedFetching = typeConditionedFetching || false;\n    this.isTopLevel = isRootVertex(root);\n    this.optionsLimit = parameters.config.debug?.pathsLimit;\n    this.conditionResolver = cachingConditionResolver(\n      (edge, context, excludedEdges, excludedConditions, extras) => this.resolveConditionPlan(edge, context, excludedEdges, excludedConditions, extras),\n    );\n\n    const initialPath: OpGraphPath<RV> = GraphPath.create(federatedQueryGraph, root);\n\n    const initialOptions = createInitialOptions(\n      initialPath,\n      initialContext,\n      this.conditionResolver,\n      excludedDestinations,\n      excludedConditions,\n      parameters.overrideConditions,\n      initialSubgraphConstraint,\n    );\n    this.stack = mapOptionsToSelections(selectionSet, initialOptions);\n    if (\n      this.parameters.federatedQueryGraph.nonLocalSelectionsMetadata\n        && nonLocalSelectionsState\n    ) {\n      if (this.parameters.federatedQueryGraph.nonLocalSelectionsMetadata\n        .checkNonLocalSelectionsLimitExceededAtRoot(\n          this.stack,\n          nonLocalSelectionsState,\n          this.parameters.supergraphSchema,\n          this.parameters.inconsistentAbstractTypesRuntimes,\n          this.parameters.overrideConditions,\n          initialSubgraphConstraint !== null,\n        )\n      ) {\n        throw Error(`Number of non-local selections exceeds limit of ${\n          NonLocalSelectionsMetadata.MAX_NON_LOCAL_SELECTIONS\n        }`);\n      }\n    }\n  }\n\n  private debugStack() {\n    if (this.isTopLevel && debug.enabled) {\n      debug.group('Query planning open branches:');\n      for (const [selection, options] of this.stack) {\n        debug.groupedValues(options, opt => `${simultaneousPathsToString(opt)}`, `${selection}:`);\n      }\n      debug.groupEnd();\n    }\n  }\n\n  findBestPlan(): [FetchDependencyGraph, OpPathTree<RV>, number] | undefined {\n    while (this.stack.length > 0) {\n      this.debugStack();\n      const [selection, options] = this.stack.pop()!;\n      this.handleOpenBranch(selection, options);\n    }\n    this.computeBestPlanFromClosedBranches();\n    return this.bestPlan;\n  }\n\n  private recordClosedBranch(closed: ClosedBranch<RV>) {\n    const maybeTrimmed = this.maybeEliminateStrictlyMoreCostlyPaths(closed);\n    debug.log(() => `Closed branch has ${maybeTrimmed.length} options (eliminated ${closed.length - maybeTrimmed.length} that could be proved as unecessary)`);\n    this.closedBranches.push(maybeTrimmed);\n  }\n\n  private handleOpenBranch(selection: Selection, options: SimultaneousPathsWithLazyIndirectPaths<RV>[]) {\n    const operation = selection.element;\n    debug.group(() => `Handling open branch: ${operation}`);\n    let newOptions: SimultaneousPathsWithLazyIndirectPaths<RV>[] = [];\n    for (const option of options) {\n      const followupForOption = advanceSimultaneousPathsWithOperation(\n        this.parameters.supergraphSchema,\n        option,\n        operation,\n        this.parameters.overrideConditions,\n      );\n      if (!followupForOption) {\n        // There is no valid way to advance the current `operation` from this option, so this option is a dead branch\n        // that cannot produce a valid query plan. So we simply ignore it and rely on other options.\n        continue;\n      }\n      if (followupForOption.length === 0) {\n        // This `operation` is valid from that option but is guarantee to yield no result (it's a type condition that, along\n        // with prior condition, has no intersection). Given that (assuming the user do properly resolve all versions of a\n        // given field the same way from all subgraphs) all options should return the same results, we know that operation\n        // should return no result from all options (even if we can't provide it technically).\n        // More concretely, this usually means the current operation is a type condition that has no intersection with the possible\n        // current runtime types at this point, and this means whatever fields the type condition sub-selection selects, they\n        // will never be part of the results. That said, we cannot completely ignore the type-condition/fragment or we'd end\n        // up with the wrong results. Consider the example a sub-part of the query is :\n        //   {\n        //     foo {\n        //       ... on Bar {\n        //         field\n        //       }\n        //     }\n        //   }\n        // and suppose that `... on Bar` can never match a concrete runtime type at this point. Because that's the only sub-selection\n        // of `foo`, if we completely ignore it, we'll end up not querying this at all. Which means that, during execution,\n        // we'd either return (for that sub-part of the query) `{ foo: null }` if `foo` happens to be nullable, or just `null` for\n        // the whole sub-part otherwise. But what we *should* return (assuming foo doesn't actually return `null`) is `{ foo: {} }`.\n        // Meaning, we have queried `foo` and it returned something, but it's simply not a `Bar` and so nothing was included.\n        // Long story short, to avoid that situation, we replace the whole `... on Bar` section that can never match the runtime\n        // type by simply getting the `__typename` of `foo`. This ensure we do query `foo` but don't end up including condiditions\n        // that may not even make sense to the subgraph we're querying.\n        // Do note that we'll only need that `__typename` if there is no other selections inside `foo`, and so we might include\n        // it unecessarally in practice: it's a very minor inefficiency though.\n        if (operation.kind === 'FragmentElement') {\n          this.recordClosedBranch(options.map((o) => ({\n            paths: o.paths.map(p => terminateWithNonRequestedTypenameField(p, this.parameters.overrideConditions))\n          })));\n        }\n        debug.groupEnd(() => `Terminating branch with no possible results`);\n        return;\n      }\n      newOptions = newOptions.concat(followupForOption);\n\n      if (this.optionsLimit && newOptions.length > this.optionsLimit) {\n        throw new Error(`Too many options generated for ${selection}, reached the limit of ${this.optionsLimit}`);\n      }\n    }\n\n    if (newOptions.length === 0) {\n      // If we have no options, it means there is no way to build a plan for that branch, and\n      // that means the whole query planning has no plan.\n      // This should never happen for a top-level query planning (unless the supergraph has *not* been\n      // validated), but can happen when computing sub-plans for a key condition and when computing\n      // a top-level plan for a mutation field on a specific subgraph.\n      if (this.isTopLevel && this.rootKind !== 'mutation') {\n        debug.groupEnd(() => `No valid options to advance ${selection} from ${advanceOptionsToString(options)}`);\n        throw new Error(`Was not able to find any options for ${selection}: This shouldn't have happened.`);\n      } else {\n        // We clear both open branches and closed ones as a mean to terminate the plan computation with\n        // no plan\n        this.stack.splice(0, this.stack.length);\n        this.closedBranches.splice(0, this.closedBranches.length);\n        debug.groupEnd(() => `No possible plan for ${selection} from ${advanceOptionsToString(options)}; terminating condition`);\n        return;\n      }\n    }\n\n    if (selection.selectionSet) {\n      const allTails = allTailVertices(newOptions);\n      if (selectionIsFullyLocalFromAllVertices(selection.selectionSet, allTails, this.parameters.inconsistentAbstractTypesRuntimes)\n        && !selection.hasDefer()\n      ) {\n        // We known the rest of the selection is local to whichever subgraph the current options are in, and so we're\n        // going to keep that selection around and add it \"as-is\" to the `FetchNode` when needed, saving a bunch of\n        // work (created `GraphPath`, merging `PathTree`, ...). However, as we're skipping the \"normal path\" for that\n        // sub-selection, there is a few things that are handled in said \"normal path\" that we need to still handle.\n        // More precisely:\n        // - we have this \"attachment\" trick that removes requested `__typename` temporarily, so we should add it back.\n        // - we still need to add the selection of `__typename` for abstract types. It is not really necessary for the\n        //   execution per-se, but if we don't do it, then we will not be able to reuse named fragments as often\n        //   as we should (we add `__typename` for abstract types on the \"normal path\" and so we add them too to\n        //   named fragments; as such, we need them here too).\n        const selectionSet = addTypenameFieldForAbstractTypes(addBackTypenameInAttachments(selection.selectionSet));\n        this.recordClosedBranch(newOptions.map((opt) => ({ paths: opt.paths, selection: selectionSet })));\n      } else {\n        for (const branch of mapOptionsToSelections(selection.selectionSet, newOptions)) {\n          this.stack.push(branch);\n        }\n      }\n      debug.groupEnd();\n    } else {\n      this.recordClosedBranch(newOptions.map((opt) => ({ paths: opt.paths })));\n      debug.groupEnd(() => `Branch finished`);\n    }\n  }\n\n  /**\n   * This method is called on a closed branch, that is on all the possible options found\n   * to get a particular leaf of the query being planned. And when there is more than one\n   * option, it tries a last effort at checking an option can be shown to be less efficient\n   * than another one _whatever the rest of the query plan is_ (that is, whatever the options\n   * for any other leaf of the query are).\n   *\n   * In practice, this compare all pair of options and call the heuristics\n   * of `compareOptionsComplexityOutOfContext` on them to see if one strictly\n   * subsume the other (and if that's the case, the subsumed one is ignored).\n   */\n  private maybeEliminateStrictlyMoreCostlyPaths(branch: ClosedBranch<RV>): ClosedBranch<RV> {\n    if (branch.length <= 1) {\n      return branch;\n    }\n\n    // Copying the branch because we're going to modify in place.\n    const toHandle = branch.concat();\n\n    const keptOptions: ClosedPath<RV>[] = [];\n    while (toHandle.length >= 2) {\n      const first = toHandle[0];\n      let shouldKeepFirst = true;\n      // We compare `first` to every other remaining. But we iterate from end to beginning\n      // because we may remove in place some of those we iterate on and that makes it safe.\n      for (let i = toHandle.length - 1 ; i >= 1; i--) {\n        const other = toHandle[i];\n        const cmp = compareOptionsComplexityOutOfContext(first.paths, other.paths);\n        if (cmp < 0) {\n          // This means that `first` is always better than `other`. So we eliminate `other`.\n          toHandle.splice(i, 1);\n        } else if (cmp > 0) {\n          // This means that `first` is always worst than `other`. So we eliminate `first` (\n          // and we're done with this inner loop).\n          toHandle.splice(0, 1);\n          shouldKeepFirst = false;\n          break;\n        }\n      }\n      if (shouldKeepFirst) {\n        // Means that we found no other option that make first unecessary. We mark first as kept,\n        // and remove it from our working set (which we know it hasn't yet).\n        keptOptions.push(first);\n        toHandle.splice(0, 1);\n      }\n    }\n    // We know toHandle has at most 1 element, but it may have one and we should keep it.\n    if (toHandle.length > 0) {\n      keptOptions.push(toHandle[0]);\n    }\n    return keptOptions;\n  }\n\n  private newDependencyGraph(): FetchDependencyGraph {\n    const { supergraphSchema, federatedQueryGraph } = this.parameters;\n    const rootType = this.isTopLevel && this.hasDefers ? supergraphSchema.schemaDefinition.rootType(this.rootKind) : undefined;\n    return FetchDependencyGraph.create(supergraphSchema, federatedQueryGraph, this.startFetchIdGen, rootType, this.parameters.config.generateQueryFragments);\n  }\n\n  // Moves the first closed branch to after any branch having more options.\n  // This method assumes that closed branches are sorted by decreasing number of options _except_ for the first element\n  // which may be out of order, and this method restore that order.\n  private reorderFirstBranch() {\n    const firstBranch = this.closedBranches[0];\n    let i = 1;\n    while (i < this.closedBranches.length && this.closedBranches[i].length > firstBranch.length) {\n      i++;\n    }\n    // `i` is the smallest index of an element having the same number or less options than the first one,\n    // so we switch that first branch with the element \"before\" `i` (which has more elements).\n    this.closedBranches[0] = this.closedBranches[i - 1];\n    this.closedBranches[i - 1] = firstBranch;\n  }\n\n  private sortOptionsInClosedBranches() {\n    this.closedBranches.forEach((branch) => branch.sort((p1, p2) => {\n      const p1Jumps = Math.max(...p1.paths.map((p) => p.subgraphJumps()));\n      const p2Jumps = Math.max(...p2.paths.map((p) => p.subgraphJumps()));\n      return p1Jumps - p2Jumps;\n    }));\n  }\n\n  private computeBestPlanFromClosedBranches() {\n    if (this.closedBranches.length === 0) {\n      return;\n    }\n\n    // We now sort the options within each branch, putting those with the least amount of subgraph jumps first.\n    // The idea is that for each branch taken individually, the option with the least jumps is going to be\n    // the most efficient, and while it is not always the case that the best plan is built for those\n    // individual bests, they are still statistically more likely to be part of the best plan. So putting\n    // them first has 2 benefits for the rest of this method:\n    // 1. if we end up cutting some options of a branch below (due to having too many possible plans),\n    //   we'll cut the last option first (we `pop()`), so better cut what it the least likely to be good.\n    // 2. when we finally generate the plan, we use the cost of previously computed plans to cut computation\n    //   early when possible (see `generateAllPlansAndFindBest`), so there is a premium in generating good\n    //   plans early (it cuts more computation), and putting those more-likely-to-be-good options first helps\n    //   this.\n    this.sortOptionsInClosedBranches();\n\n    // We're out of smart ideas for now, so we look at how many plans we'd have to generate, and if it's\n    // \"too much\", we reduce it to something manageable by arbitrarilly throwing out options. This effectively\n    // means that when a query has too many options, we give up on always finding the \"best\"\n    // query plan in favor of an \"ok\" query plan.\n    // TODO: currently, when we need to reduce options, we do so somewhat arbitrarilly. More\n    // precisely, we reduce the branches with the most options first and then drop the last\n    // option of the branch, repeating until we have a reasonable number of plans to consider.\n    // The sorting we do about help making this slightly more likely to be a good choice, but\n    // there is likely more \"smarts\" we could add to this.\n\n    // We sort branches by those that have the most options first.\n    this.closedBranches.sort((b1, b2) => b1.length > b2.length ? -1 : (b1.length < b2.length ? 1 : 0));\n    let planCount = possiblePlans(this.closedBranches);\n    debug.log(() => `Query has ${planCount} possible plans`);\n\n    let firstBranch = this.closedBranches[0];\n    const maxPlansToCompute = this.parameters.config.debug.maxEvaluatedPlans;\n    while (planCount > maxPlansToCompute && firstBranch.length > 1) {\n      // we remove the right-most option of the first branch, and them move that branch to it's new place.\n      const prevSize = BigInt(firstBranch.length);\n      firstBranch.pop();\n      planCount -= planCount / prevSize;\n      this.reorderFirstBranch();\n      // Note that if firstBranch is our only branch, it's fine, we'll continue to remove options from\n      // it (but that is beyond unlikely).\n      firstBranch = this.closedBranches[0];\n      debug.log(() => `Reduced plans to consider to ${planCount} plans`);\n    }\n\n    // Note that if `!this.isTopLevel`, then this means we're resolving a sub-plan for an edge condition, and we\n    // don't want to count those as \"evaluated plans\".\n    if (this.parameters.statistics && this.isTopLevel) {\n      this.parameters.statistics.evaluatedPlanCount += Number(planCount);\n    }\n\n    debug.log(() => `All branches:${this.closedBranches.map((opts, i) => `\\n${i}:${opts.map((opt => `\\n - ${closedPathToString(opt)}`))}`)}`);\n\n    // Note that usually, we'll have a majority of branches with just one option. We can group them in\n    // a PathTree first with no fuss. When then need to do a cartesian product between this created\n    // tree an other branches however to build the possible plans and chose.\n    let idxFirstOfLengthOne = 0;\n    while (idxFirstOfLengthOne < this.closedBranches.length && this.closedBranches[idxFirstOfLengthOne].length > 1) {\n      idxFirstOfLengthOne++;\n    }\n\n    let initialTree: OpPathTree<RV>;\n    let initialDependencyGraph: FetchDependencyGraph;\n    const { federatedQueryGraph, root } = this.parameters;\n    if (idxFirstOfLengthOne === this.closedBranches.length) {\n      initialTree = PathTree.createOp(federatedQueryGraph, root);\n      initialDependencyGraph = this.newDependencyGraph();\n    } else {\n      const singleChoiceBranches = this\n        .closedBranches\n        .slice(idxFirstOfLengthOne)\n        .flat()\n        .map((cp) => flattenClosedPath(cp))\n        .flat();\n      initialTree = PathTree.createFromOpPaths(federatedQueryGraph, root, singleChoiceBranches);\n      initialDependencyGraph = this.updatedDependencyGraph(this.newDependencyGraph(), initialTree);\n      if (idxFirstOfLengthOne === 0) {\n        // Well, we have the only possible plan; it's also the best.\n        this.bestPlan = [initialDependencyGraph, initialTree, this.cost(initialDependencyGraph)];\n        return;\n      }\n    }\n\n    const otherTrees = this\n      .closedBranches\n      .slice(0, idxFirstOfLengthOne)\n      .map(b => b.map(opt => PathTree.createFromOpPaths(federatedQueryGraph, root, flattenClosedPath(opt))));\n\n    const { best, cost} = generateAllPlansAndFindBest({\n      initial: { graph: initialDependencyGraph, tree: initialTree },\n      toAdd: otherTrees,\n      addFct: (p, t) => {\n        const updatedDependencyGraph = p.graph.clone();\n        this.updatedDependencyGraph(updatedDependencyGraph, t);\n        const updatedTree = p.tree.merge(t);\n        return { graph: updatedDependencyGraph, tree: updatedTree };\n      },\n      costFct: (p) => this.cost(p.graph),\n      onPlan: (p, cost, prevCost) => {\n        debug.log(() => {\n          if (!prevCost) {\n            return `Computed plan with cost ${cost}: ${p.tree}`;\n          } else if (cost > prevCost) {\n            return `Ignoring plan with cost ${cost} (a better plan with cost ${prevCost} exists): ${p.tree}`\n          } else {\n            return `Found better with cost ${cost} (previous had cost ${prevCost}: ${p.tree}`;\n          }\n        });\n      },\n    });\n    this.bestPlan = [best.graph, best.tree, cost];\n  }\n\n  private cost(dependencyGraph: FetchDependencyGraph): number {\n    const { main, deferred } = dependencyGraph.process(this.costFunction, this.rootKind);\n    return deferred.length === 0\n      ? main\n      : this.costFunction.reduceDefer(main, dependencyGraph.deferTracking.primarySelection!.get(), deferred);\n  }\n\n  private updatedDependencyGraph(dependencyGraph: FetchDependencyGraph, tree: OpPathTree<RV>): FetchDependencyGraph {\n    return isRootPathTree(tree)\n      ? computeRootFetchGroups(dependencyGraph, tree, this.rootKind, this.typeConditionedFetching)\n      : computeNonRootFetchGroups(dependencyGraph, tree, this.rootKind, this.typeConditionedFetching);\n  }\n\n  private resolveConditionPlan(edge: Edge, context: PathContext, excludedDestinations: ExcludedDestinations, excludedConditions: ExcludedConditions, extraConditions?: SelectionSet): ConditionResolution {\n    const bestPlan = new QueryPlanningTraversal(\n      {\n        ...this.parameters,\n        root: edge.head,\n      },\n      extraConditions ?? edge.conditions!,\n      0,\n      false,\n      'query',\n      this.costFunction,\n      context,\n      this.typeConditionedFetching,\n      null,\n      null,\n      excludedDestinations,\n      addConditionExclusion(excludedConditions, edge.conditions),\n    ).findBestPlan();\n    // Note that we want to return 'null', not 'undefined', because it's the latter that means \"I cannot resolve that\n    // condition\" within `advanceSimultaneousPathsWithOperation`.\n    return bestPlan ? { satisfied: true, cost: bestPlan[2], pathTree: bestPlan[1] } : unsatisfiedConditionsResolution;\n  }\n}\n\n/**\n * Used in `FetchDependencyGraph` to store, for a given group, information about one of its parent.\n * Namely, this structure stores:\n *  1. the actual parent group, and\n *  2. the path of the group for which this is a \"parent relation\" into said parent (`group`). This information\n *   is maintained for the case where we want/need to merge groups into each other. One can roughly think of\n *   this as similar to a `mergeAt`, but that is relative to the start of `group`. It can be `undefined`, which\n *   either mean we don't know that path or that this simply doesn't make sense (there is case where a child `mergeAt` can\n *   be shorter than its parent's, in which case the `path`, which is essentially `child-mergeAt - parent-mergeAt`, does\n *   not make sense (or rather, it's negative, which we cannot represent)). Tl;dr, `undefined` for the `path` means that\n *   should make no assumption and bail on any merging that uses said path.\n */\ntype ParentRelation = {\n  group: FetchGroup,\n  path?: OperationPath,\n}\n\nconst conditionsMemoizer = (selectionSet: SelectionSet) => ({ conditions: conditionsOfSelectionSet(selectionSet) });\n\nclass GroupInputs {\n  readonly usedContexts = new Map<string, Type>;\n  private readonly perType = new Map<string, MutableSelectionSet>();\n  onUpdateCallback?: () => void | undefined = undefined;\n\n  constructor(\n    readonly supergraphSchema: Schema,\n  ) {\n  }\n\n  add(selection: Selection | SelectionSet) {\n    assert(selection.parentType.schema() === this.supergraphSchema, 'Inputs selections must be based on the supergraph schema');\n\n    const typeName = selection.parentType.name;\n    let typeSelection = this.perType.get(typeName);\n    if (!typeSelection) {\n      typeSelection = MutableSelectionSet.empty(selection.parentType);\n      this.perType.set(typeName, typeSelection);\n    }\n    typeSelection.updates().add(selection);\n    this.onUpdateCallback?.();\n  }\n  \n  addContext(context: string, type: Type) {\n    this.usedContexts.set(context, type);\n  }\n\n  addAll(other: GroupInputs) {\n    for (const otherSelection of other.perType.values()) {\n      this.add(otherSelection.get());\n    }\n    for (const [context, type] of other.usedContexts) {\n      this.addContext(context, type);\n    }\n  }\n\n  selectionSets(): SelectionSet[] {\n    return mapValues(this.perType).map((s) => s.get());\n  }\n\n  toSelectionSetNode(variablesDefinitions: VariableDefinitions, handledConditions: Conditions): SelectionSetNode {\n    const selectionSets = mapValues(this.perType).map((s) => removeConditionsFromSelectionSet(s.get(), handledConditions));\n    // Making sure we're not generating something invalid.\n    selectionSets.forEach((s) => s.validate(variablesDefinitions));\n    const selections = selectionSets.flatMap((sSet) => sSet.selections().map((s) => s.toSelectionNode()));\n    return {\n      kind: Kind.SELECTION_SET,\n      selections,\n    }\n  }\n\n  contains(other: GroupInputs): boolean {\n    for (const [type, otherSelection] of other.perType) {\n      const thisSelection = this.perType.get(type);\n      if (!thisSelection || !thisSelection.get().contains(otherSelection.get())) {\n        return false;\n      }\n    }\n    if (this.usedContexts.size < other.usedContexts.size) {\n      return false;\n    }\n    for (const [c,_] of other.usedContexts) {\n      if (!this.usedContexts.has(c)) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  equals(other: GroupInputs): boolean {\n    if (this.perType.size !== other.perType.size) {\n      return false;\n    }\n\n    for (const [type, thisSelection] of this.perType) {\n      const otherSelection = other.perType.get(type);\n      if (!otherSelection || !thisSelection.get().equals(otherSelection.get())) {\n        return false;\n      }\n    }\n    if (this.usedContexts.size !== other.usedContexts.size) {\n      return false;\n    }\n    for (const [c,_] of other.usedContexts) {\n      if (!this.usedContexts.has(c)) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  clone(): GroupInputs {\n    const cloned = new GroupInputs(this.supergraphSchema);\n    for (const [type, selection] of this.perType.entries()) {\n      cloned.perType.set(type, selection.clone());\n    }\n    for (const [c,v] of this.usedContexts) {\n      cloned.usedContexts.set(c,v);\n    }\n    return cloned;\n  }\n\n  toString(): string {\n    const inputs = mapValues(this.perType);\n    if (inputs.length === 0) {\n      return '{}';\n    }\n    if (inputs.length === 1) {\n      return inputs[0].toString();\n    }\n\n    return '[' + inputs.join(',') + ']';\n  }\n}\n\n/**\n * Represents a subgraph fetch of a query plan, and is a vertex of a `FetchDependencyGraph` (and as such provides links to\n * its parent and children in that dependency graph).\n */\nclass FetchGroup {\n  private readonly _parents: ParentRelation[] = [];\n  private readonly _children: FetchGroup[] = [];\n\n  private _id: string | undefined;\n\n  // Set in some code-path to indicate that the selection of the group not be optimized away even if it \"looks\" useless.\n  mustPreserveSelection: boolean = false;\n\n  private constructor(\n    readonly dependencyGraph: FetchDependencyGraph,\n    public index: number,\n    readonly subgraphName: string,\n    readonly rootKind: SchemaRootKind,\n    readonly parentType: CompositeType,\n    readonly isEntityFetch: boolean,\n    private _selection: MutableSelectionSet<{ conditions: Conditions}>,\n    private _inputs?: GroupInputs,\n    private _contextInputs?: FetchDataKeyRenamer[],\n    readonly mergeAt?: ResponsePath,\n    readonly deferRef?: string,\n    // Some of the processing on the dependency graph checks for groups to the same subgraph and same mergeAt, and we use this\n    // key for that. Having it here saves us from re-computing it more than once.\n    readonly subgraphAndMergeAtKey?: string,\n    private cachedCost?: number,\n    private generateQueryFragments: boolean = false,\n    // Cache used to save unecessary recomputation of the `isUseless` method.\n    private isKnownUseful: boolean = false,\n    private readonly inputRewrites: FetchDataRewrite[] = [],\n  ) {\n    if (this._inputs) {\n      this._inputs.onUpdateCallback = () => {\n        // We're trying to avoid the full recomputation of `isUseless` when we're already\n        // shown that the group is known useful (if it is shown useless, the group is removed,\n        // so we're not caching that result but it's ok). And `isUseless` basically checks if\n        // `inputs.contains(selection)`, so if a group is shown useful, it means that there\n        // is some selections not in the inputs, but as long as we add to selections (and we\n        // never remove from selections; `MutableSelectionSet` don't have removing methods),\n        // then this won't change. Only changing inputs may require some recomputation.\n        this.isKnownUseful = false;\n      }\n    }\n  }\n\n  static create({\n    dependencyGraph,\n    index,\n    subgraphName,\n    rootKind,\n    parentType,\n    hasInputs,\n    mergeAt,\n    deferRef,\n    generateQueryFragments,\n  }: {\n    dependencyGraph: FetchDependencyGraph,\n    index: number,\n    subgraphName: string,\n    rootKind: SchemaRootKind,\n    parentType: CompositeType,\n    hasInputs: boolean,\n    mergeAt?: ResponsePath,\n    deferRef?: string,\n    generateQueryFragments: boolean,\n  }): FetchGroup {\n    // Sanity checks that the selection parent type belongs to the schema of the subgraph we're querying.\n    assert(parentType.schema() === dependencyGraph.subgraphSchemas.get(subgraphName), `Expected parent type ${parentType} to belong to ${subgraphName}`);\n    return new FetchGroup(\n      dependencyGraph,\n      index,\n      subgraphName,\n      rootKind,\n      parentType,\n      hasInputs,\n      MutableSelectionSet.emptyWithMemoized(parentType, conditionsMemoizer),\n      hasInputs ? new GroupInputs(dependencyGraph.supergraphSchema) : undefined,\n      undefined,\n      mergeAt,\n      deferRef,\n      hasInputs ? `${toValidGraphQLName(subgraphName)}-${mergeAt?.join('::') ?? ''}` : undefined,\n      undefined,\n      generateQueryFragments,\n    );\n  }\n\n  // Clones everything on the group itself, but not it's `_parents` or `_children` links.\n  cloneShallow(newDependencyGraph: FetchDependencyGraph): FetchGroup {\n    return new FetchGroup(\n      newDependencyGraph,\n      this.index,\n      this.subgraphName,\n      this.rootKind,\n      this.parentType,\n      this.isEntityFetch,\n      this._selection.clone(),\n      this._inputs?.clone(),\n      this._contextInputs ? this._contextInputs.map((c) => ({ ...c})) : undefined,\n      this.mergeAt,\n      this.deferRef,\n      this.subgraphAndMergeAtKey,\n      this.cachedCost,\n      this.generateQueryFragments,\n      this.isKnownUseful,\n      [...this.inputRewrites],\n    );\n  }\n\n  cost(): number {\n    if (!this.cachedCost) {\n      this.cachedCost = selectionCost(this.selection);\n    }\n    return this.cachedCost;\n  }\n\n  set id(id: string | undefined) {\n    assert(!this._id, () => `The id for fetch group ${this} is already set`);\n    this._id = id;\n  }\n\n  get id(): string | undefined {\n    return this._id;\n  }\n\n  get isTopLevel(): boolean {\n    return !this.mergeAt;\n  }\n\n  get selection(): SelectionSet {\n    return this._selection.get();\n  }\n\n  private selectionUpdates(): SelectionSetUpdates {\n    this.cachedCost = undefined;\n    return this._selection.updates();\n  }\n\n  get inputs(): GroupInputs | undefined {\n    return this._inputs;\n  }\n\n  addParents(parents: readonly ParentRelation[]) {\n    for (const parent of parents) {\n      this.addParent(parent);\n    }\n  }\n\n  /**\n   * Adds another group as a parent of this one (meaning that this fetch should happen after the provided one).\n   */\n  addParent(parent: ParentRelation) {\n    if (this.isChildOf(parent.group)) {\n      // Due to how we handle the building of multiple query plans when there is choices, it's possible that we re-traverse\n      // key edges we've already traversed before, and that can means hitting this condition. While we could try to filter\n      // \"already-children\" before calling this method, it's easier to just make this a no-op.\n      return;\n    }\n\n    assert(!parent.group.isParentOf(this), () => `Group ${parent.group} is a parent of ${this}, but the child relationship is broken`);\n    assert(!parent.group.isChildOf(this), () => `Group ${parent.group} is a child of ${this}: adding it as parent would create a cycle`);\n\n    this.dependencyGraph.onModification();\n    this._parents.push(parent);\n    parent.group._children.push(this);\n  }\n\n  removeChild(child: FetchGroup) {\n    if (!this.isParentOf(child)) {\n      return;\n    }\n\n    this.dependencyGraph.onModification();\n    findAndRemoveInPlace((g) => g === child, this._children);\n    findAndRemoveInPlace((p) => p.group === this, child._parents);\n  }\n\n  isParentOf(maybeChild: FetchGroup): boolean {\n    return this._children.includes(maybeChild);\n  }\n\n  isChildOf(maybeParent: FetchGroup): boolean {\n    return !!this.parentRelation(maybeParent);\n  }\n\n  isDescendantOf(maybeAncestor: FetchGroup): boolean {\n    const children = Array.from(maybeAncestor.children());\n    while (children.length > 0) {\n      const child = children.pop()!;\n      if (child === this) {\n        return true;\n      }\n      child.children().forEach((c) => children.push(c));\n    }\n    return false;\n  }\n\n  /**\n   * Returns whether this group is both a child of `maybeParent` but also if we can show that the\n   * dependency between the group is \"artificial\" in the sense that this group inputs do not truly\n   * depend on anything `maybeParent` fetches.\n   */\n  isChildOfWithArtificialDependency(maybeParent: FetchGroup): boolean {\n    const relation =  this.parentRelation(maybeParent);\n    // To be a child with an artificial dependency, it needs to be a child first, and the \"path in parent\" should be know.\n    if (!relation || !relation.path) {\n      return false;\n    }\n\n    // Then, if we have no inputs, we know we don't depend on anything from the parent no matter what.\n    if (!this.inputs) {\n      return true;\n    }\n\n    // If we do have inputs, then we first look at the path to `maybeParent`, and it needs to be\n    // essentially empty, \"essentially\" is because path can sometimes have some leading fragment(s)\n    // and those are fine to ignore. But if the path has some field, then this implies that the inputs\n    // of `this` are based on something at a deeper level than those of `maybeParent`, and the \"contains\"\n    // comparison we do below would not make sense.\n    if (relation.path.some((elt) => elt.kind === 'Field')) {\n      return false;\n    }\n\n    // In theory, the most general test we could have here is to check if `this.inputs` \"intersects\"\n    // `maybeParent.selection. As if it doesn't, we know our inputs don't depend on anything the\n    // parent fetches. However, selection set intersection is a bit tricky to implement (due to fragments,\n    // it would be a bit of code to do not-too-inefficiently, but both fragments and alias makes the\n    // definition of what the intersection we'd need here fairly subtle), and getting it wrong could\n    // make us generate incorrect query plans. Adding to that, the current know cases for this method\n    // being useful happens to be when `this.inputs` and `maybeParent.inputs` are the same. Now, checking\n    // inputs is a bit weaker, in the sense that the input could be different and yet the child group\n    // not depend on anything the parent fetches, but it is \"sufficient\", in that if the inputs of the\n    // parent includes entirely the child inputs, then we know nothing the child needs can be fetched\n    // by the parent (or rather, if it does, it's useless). Anyway, checking inputs inclusion is easier\n    // to do so we rely on this for now. If we run into examples where this happens to general non-optimal\n    // query plan, we can decide then to optimize further and implement a proper intersections.\n    return !!maybeParent.inputs && maybeParent.inputs.contains(this.inputs);\n  }\n\n  parentRelation(maybeParent: FetchGroup): ParentRelation | undefined {\n    return this._parents.find(({ group }) => maybeParent === group);\n  }\n\n  parents(): readonly ParentRelation[] {\n    return this._parents;\n  }\n\n  parentGroups(): readonly FetchGroup[] {\n    return this.parents().map((p) => p.group);\n  }\n\n  children(): readonly FetchGroup[] {\n    return this._children;\n  }\n\n  addInputs(selection: Selection | SelectionSet, rewrites?: FetchDataRewrite[]) {\n    assert(this._inputs, \"Shouldn't try to add inputs to a root fetch group\");\n\n    this._inputs.add(selection);\n\n    if (rewrites) {\n      rewrites.forEach((r) => this.inputRewrites.push(r));\n    }\n  }\n  \n  addInputContext(context: string, type: Type) {\n    assert(this._inputs, \"Shouldn't try to add inputs to a root fetch group\");\n\n    this._inputs.addContext(context, type);\n  }\n\n  copyInputsOf(other: FetchGroup) {\n    if (other.inputs) {\n      this.inputs?.addAll(other.inputs);\n\n      if (other.inputRewrites) {\n        other.inputRewrites.forEach((r) => {\n          if (!this.inputRewrites.some((r2) => r2 === r)) {\n            this.inputRewrites.push(r);\n          }\n        });\n      }\n      if (other._contextInputs) {\n        if (!this._contextInputs) {\n          this._contextInputs = [];\n        }\n        other._contextInputs.forEach((r) => {\n          if (!this._contextInputs!.some((r2) => sameKeyRenamer(r, r2))) {\n            this._contextInputs!.push(r);\n          }\n        });\n      }\n    }\n  }\n\n  addAtPath(path: OperationPath, selection?: Selection | SelectionSet | readonly Selection[]) {\n    this.selectionUpdates().addAtPath(path, selection);\n  }\n\n  addSelections(selection: SelectionSet) {\n    this.selectionUpdates().add(selection);\n  }\n\n  canMergeChildIn(child: FetchGroup): boolean {\n    return this.deferRef === child.deferRef && !!child.parentRelation(this)?.path;\n  }\n\n  removeInputsFromSelection() {\n    const inputs = this.inputs;\n    if (inputs) {\n      this.cachedCost = undefined;\n      const updated = inputs.selectionSets().reduce((prev, value) => prev.minus(value), this.selection);\n      this._selection = MutableSelectionSet.ofWithMemoized(updated, conditionsMemoizer);\n    }\n  }\n\n  // If a group is such that everything is fetches is already included in the inputs, then\n  // this group does useless fetches.\n  isUseless(): boolean {\n    if (this.isKnownUseful || !this.inputs || this.mustPreserveSelection) {\n      return false;\n    }\n\n    // For groups that fetches from an @interfaceObject, we can sometimes have something like\n    //   { ... on Book { id } } => { ... on Product { id } }\n    // where `Book` is an implementation of interface `Product`.\n    // And that is because while only \"books\" are concerned by this fetch, the `Book` type is unknown\n    // of the queried subgraph (in that example, it defines `Product` as an @interfaceObject) and\n    // so we have to \"cast\" into `Product` instead of `Book`.\n    // But the fetch above _is_ useless, it does only fetch its inputs, and we wouldn't catch this\n    // if we do a raw inclusion check of `selection` into `inputs`\n    //\n    // We only care about this problem at the top-level of the selections however, so we do that\n    // top-level check manually (instead of just calling `this.inputs.contains(this.selection)`)\n    // but fallback on `contains` for anything deeper.\n\n    const conditionInSupergraphIfInterfaceObject = (selection: Selection): InterfaceType | undefined => {\n      if (selection.kind === 'FragmentSelection') {\n        const condition = selection.element.typeCondition;\n        if (condition && isObjectType(condition)) {\n          const conditionInSupergraph = this.dependencyGraph.supergraphSchema.type(condition.name);\n          // Note that we're checking the true supergraph, not the API schema, so even @inaccessible types will be found.\n          assert(conditionInSupergraph, () => `Type ${condition.name} should exists in the supergraph`)\n          if (isInterfaceType(conditionInSupergraph)) {\n            return conditionInSupergraph;\n          }\n        }\n      }\n      return undefined;\n    }\n\n    // This condition is specific to the case where we're resolving the _concrete_\n    // `__typename` field of an interface when coming from an interfaceObject type.\n    // i.e. { ... on Product { __typename id }} => { ... on Product { __typename} }\n    // This is usually useless at a glance, but in this case we need to actually\n    // keep this since this is our only path to resolving the concrete `__typename`.\n    const isInterfaceTypeConditionOnInterfaceObject = (\n      selection: Selection\n    ): boolean => {\n      if (selection.kind === \"FragmentSelection\") {\n        const parentType = selection.element.typeCondition;\n        if (parentType && isInterfaceType(parentType)) {\n          // Lastly, we just need to check that we're coming from a subgraph\n          // that has the type as an interface object in its schema.\n          return this.parents().some((p) => {\n            const typeInParent = this.dependencyGraph.subgraphSchemas\n              .get(p.group.subgraphName)\n              ?.type(parentType.name);\n            return typeInParent && isInterfaceObjectType(typeInParent);\n          });\n        }\n      }\n      return false;\n    };\n\n    const inputSelections = this.inputs.selectionSets().flatMap((s) => s.selections());\n    // Checks that every selection is contained in the input selections.\n    const isUseless = this.selection.selections().every((selection) => {\n      // If we're coming from an interfaceObject _to_ an interface, we're\n      // \"resolving\" the concrete type of the interface and don't want to treat\n      // this as useless.\n      if (isInterfaceTypeConditionOnInterfaceObject(selection)) {\n        return false;\n      }\n      const conditionInSupergraph = conditionInSupergraphIfInterfaceObject(selection);\n      if (!conditionInSupergraph) {\n        // We're not in the @interfaceObject case described above. We just check that an input selection contains the\n        // one we check.\n        return inputSelections.some((input) => input.contains(selection));\n      }\n\n      const implemTypeNames = conditionInSupergraph.possibleRuntimeTypes().map((t) => t.name);\n      // Find all the input selections that selects object for this interface, that is selection on\n      // either the interface directly or on one of it's implementation type (we keep both kind separate).\n      const interfaceInputSelections: FragmentSelection[] = [];\n      const implementationInputSelections: FragmentSelection[] = [];\n      for (const inputSelection of inputSelections) {\n        // We know that fetch inputs are wrapped in fragments whose condition is an entity type:\n        // that's how we build them and we couldn't select inputs correctly otherwise.\n        assert(inputSelection.kind === 'FragmentSelection', () => `Unexpecting input selection ${inputSelection} on ${this}`);\n        const inputCondition = inputSelection.element.typeCondition;\n        assert(inputCondition, () => `Unexpecting input selection ${inputSelection} on ${this} (missing condition)`);\n        if (inputCondition.name == conditionInSupergraph.name) {\n          interfaceInputSelections.push(inputSelection);\n        } else if (implemTypeNames.includes(inputCondition.name)) {\n          implementationInputSelections.push(inputSelection);\n        }\n      }\n\n      const subSelectionSet = selection.selectionSet;\n      // we're only here if `conditionInSupergraphIfInterfaceObject` returned something, we imply that selection is a fragment\n      // selection and so has a sub-selectionSet.\n      assert(subSelectionSet, () => `Should not be here for ${selection}`);\n\n      // If there is some selections on the interface, then the selection needs to be contained in those.\n      // Otherwise, if there is implementation selections, it must be contained in _each_ of them (we\n      // shouldn't have the case where there is neither interface nor implementation selections, but\n      // we just return false if that's the case as a \"safe\" default).\n      if (interfaceInputSelections.length > 0) {\n        return interfaceInputSelections.some((input) => input.selectionSet.contains(subSelectionSet));\n      }\n      return implementationInputSelections.length > 0\n        && implementationInputSelections.every((input) => input.selectionSet.contains(subSelectionSet));\n    });\n\n    this.isKnownUseful = !isUseless;\n    return isUseless;\n  }\n\n  /**\n   * Merges a child of `this` group into it.\n   *\n   * Note that it is up to the caller to know that doing such merging is reasonable in the first place, which\n   * generally means knowing that 1) `child.inputs` are included in `this.inputs` and 2) all of `child.selection`\n   * can safely be queried on the `this.subgraphName` subgraph.\n   *\n   * @param child - a group that must be a `child` of this, and for which the 'path in parent' (for `this`) is\n   *   known. The `canMergeChildIn` method can be used to ensure that `child` meets those requirement.\n   */\n  mergeChildIn(child: FetchGroup) {\n    const relationToChild = child.parentRelation(this);\n    assert(relationToChild, () => `Cannot merge ${child} into ${this}: the former is not a child of the latter`);\n    const childPathInThis = relationToChild.path;\n    assert(childPathInThis, () => `Cannot merge ${child} into ${this}: the path of the former into the later is unknown`);\n    this.mergeInInternal(child, childPathInThis);\n  }\n\n  canMergeSiblingIn(sibling: FetchGroup): boolean {\n    // We only allow merging sibling on the same subgraph, same \"mergeAt\" and when the common parent is their only parent:\n    // - there is no reason merging siblings of different subgraphs could ever make sense.\n    // - ensuring the same \"mergeAt\" makes so we can merge the inputs and selections without having to worry about those\n    //   not being at the same level (hence the empty path in the call to `mergeInInternal` below). In theory, we could\n    //   relax this when we have the \"path in parent\" for both sibling, and if `siblingToMerge` is \"deeper\" than `this`,\n    //   we could still merge it in using the appropriate path. We don't use this yet, but if this get in the way of\n    //   some query plan optimisation, we may have to do so.\n    // - only handling a single parent could be expanded on later, but we don't need it yet so we focus on the simpler case.\n    const ownParents = this.parents();\n    const siblingParents = sibling.parents();\n    return this.deferRef === sibling.deferRef\n      && this.subgraphName === sibling.subgraphName\n      && sameMergeAt(this.mergeAt, sibling.mergeAt)\n      && ownParents.length === 1\n      && siblingParents.length === 1\n      && ownParents[0].group === siblingParents[0].group;\n  }\n\n  /**\n   * Merges the provided sibling (shares a common parent) of `this` group into it.\n   *\n   * Callers _must_ ensures that such merging is possible by calling `canMergeSiblingIn`.\n   *\n   * @param sibling - a sibling group of `this`. Both `this` and `sibling` must share a parent but it should also be\n   * their _only_ parent. Further `this` and `sibling` must be on the same subgraph and have the same `mergeAt`.\n   */\n  mergeSiblingIn(sibling: FetchGroup) {\n    this.copyInputsOf(sibling);\n    this.mergeInInternal(sibling, []);\n  }\n\n  canMergeGrandChildIn(grandChild: FetchGroup): boolean {\n    const gcParents = grandChild.parents();\n    if (gcParents.length !== 1) {\n      return false;\n    }\n    return this.deferRef === grandChild.deferRef && !!gcParents[0].path && !!gcParents[0].group.parentRelation(this)?.path;\n  }\n\n  /**\n   * Merges a grand child of `this` group into it.\n   *\n   * Note that it is up to the caller to know that doing such merging is reasonable in the first place, which\n   * generally means knowing that 1) `grandChild.inputs` are included in `this.inputs` and 2) all of `grandChild.selection`\n   * can safely be queried on the `this.subgraphName` subgraph (the later of which is trivially true if `this` and\n   * `grandChild` are on the same subgraph and same mergeAt).\n   *\n   * @param grandChild - a group that must be a \"grand child\" (a child of a child) of `this`, and for which the\n   *   'path in parent' is know for _both_ the grand child to tis parent and that parent to `this`. The `canMergeGrandChildIn`\n  *     method can be used to ensure that `grandChild` meets those requirement.\n   */\n  mergeGrandChildIn(grandChild: FetchGroup) {\n    const gcParents = grandChild.parents();\n    assert(gcParents.length === 1, () => `Cannot merge ${grandChild} as it has multiple parents ([${gcParents}])`);\n    const gcParent = gcParents[0];\n    const gcGrandParent = gcParent.group.parentRelation(this);\n    assert(gcGrandParent, () => `Cannot merge ${grandChild} into ${this}: the former parent (${gcParent.group}) is not a child of the latter`);\n    assert(gcParent.path && gcGrandParent.path, () => `Cannot merge ${grandChild} into ${this}: some paths in parents are unknown`);\n    this.mergeInInternal(grandChild, concatOperationPaths(gcGrandParent.path, gcParent.path));\n  }\n\n  /**\n   * Merges another group into `this` group, without knowing the dependencies between those 2 groups.\n   *\n   * Note that it is up to the caller to know if such merging is desirable. In particular, if both group have completely\n   * different inputs, merging them, which also merges their dependencies, might not be judicious for the optimality of\n   * the query plan.\n   *\n   * @param other - another group to merge into `this`. Both `this` and `other` must be on the same subgraph and have the same\n   *   `mergeAt`.\n   */\n  mergeInWithAllDependencies(other: FetchGroup) {\n    assert(this.deferRef === other.deferRef, () => `Can only merge unrelated groups within the same @defer block: cannot merge ${this} and ${other}`);\n    assert(this.subgraphName === other.subgraphName, () => `Can only merge unrelated groups to the same subraphs: cannot merge ${this} and ${other}`);\n    assert(sameMergeAt(this.mergeAt, other.mergeAt), () => `Can only merge unrelated groups at the same \"mergeAt\": ${this} has mergeAt=${this.mergeAt}, but ${other} has mergeAt=${other.mergeAt}`);\n\n    this.copyInputsOf(other);\n    this.mergeInInternal(other, [], true);\n  }\n\n  private mergeInInternal(merged: FetchGroup, path: OperationPath, mergeParentDependencies: boolean = false) {\n    assert(!merged.isTopLevel, \"Shouldn't remove top level groups\");\n\n    if (path.length === 0) {\n      this.addSelections(merged.selection);\n    } else {\n      // The merged groups might have some @include/@skip at top-level that are already part of the path. If so,\n      // we clean things up a bit.\n      const mergePathConditionalDirectives = conditionalDirectivesInOperationPath(path);\n      this.addAtPath(path, removeUnneededTopLevelFragmentDirectives(merged.selection, mergePathConditionalDirectives));\n    }\n\n    this.dependencyGraph.onModification();\n    this.relocateChildrenOnMergedIn(merged, path);\n    if (mergeParentDependencies) {\n      this.relocateParentsOnMergedIn(merged);\n    }\n\n    if (merged.mustPreserveSelection) {\n      this.mustPreserveSelection = true;\n    }\n    this.dependencyGraph.remove(merged);\n  }\n\n  removeUselessChild(child: FetchGroup) {\n    const relationToChild = child.parentRelation(this);\n    assert(relationToChild, () => `Cannot remove useless ${child} of ${this}: the former is not a child of the latter`);\n    const childPathInThis = relationToChild.path;\n    assert(childPathInThis, () => `Cannot remove useless ${child} of ${this}: the path of the former into the later is unknown`);\n\n    this.dependencyGraph.onModification();\n    // Removing the child means atttaching all it's children to the parent, so it's the same relocation than on a \"mergeIn\".\n    this.relocateChildrenOnMergedIn(child, childPathInThis);\n    this.dependencyGraph.remove(child);\n  }\n\n  private relocateChildrenOnMergedIn(merged: FetchGroup, pathInThis: OperationPath) {\n    for (const child of merged.children()) {\n      // This could already be a child of `this`. Typically, we can have case where we have:\n      //     1\n      //   /  \\\n      // 0     3\n      //   \\  /\n      //     2\n      // and we can merge siblings 2 into 1.\n      if (this.isParentOf(child)) {\n        continue;\n      }\n      const pathInMerged = child.parentRelation(merged)?.path;\n      child.addParent({ group: this, path: concatPathsInParents(pathInThis, pathInMerged) });\n    }\n  }\n\n  private relocateParentsOnMergedIn(merged: FetchGroup) {\n    for (const parent of merged.parents()) {\n      // If the parent of the merged is already a parent of ours, don't re-create the already existing relationship.\n      if (parent.group.isParentOf(this)) {\n        continue;\n      }\n\n      // Further, if the parent is a descendant of `this`, we also should ignore that relationship, becuase\n      // adding it a parent of `this` would create a cycle. And assuming this method is called properly,\n      // that when `merged` can genuinely be safely merged into `this`, then this just mean the `parent` -> `merged`\n      // relationship was unecessary after all (which can happen given how groups are generated).\n      if (parent.group.isDescendantOf(this)) {\n        continue;\n      }\n      this.addParent(parent);\n    }\n  }\n\n  private finalizeSelection(\n    variableDefinitions: VariableDefinitions,\n    handledConditions: Conditions,\n  ): { selection: SelectionSet, outputRewrites: FetchDataRewrite[] } {\n    // Finalizing the selection involves the following:\n    // 1. removing any @include/@skip that are not necessary because they are already handled earlier in the query plan by\n    //    some `ConditionNode`.\n    // 2. adding __typename to all abstract types. This is because any follow-up fetch may need to select some of the entities fetched by this\n    //   group, and so we need to have the __typename of those.\n    // 3. checking if some selection violates `https://spec.graphql.org/draft/#FieldsInSetCanMerge()`: while the original query we plan for will\n    //   never violate this, because the planner adds some additional fields to the query (due to @key and @requires) and because type-explosion\n    //   changes the query, we could have violation of this. If that is the case, we introduce aliases to the selection to make it valid, and\n    //   then generate a rewrite on the output of the fetch so that data aliased this way is rewritten back to the original/proper response name.\n\n    const selectionWithoutConditions = removeConditionsFromSelectionSet(this.selection, handledConditions);\n    const selectionWithTypenames = addTypenameFieldForAbstractTypes(selectionWithoutConditions);\n\n    const { updated: selection, outputRewrites } = addAliasesForNonMergingFields(selectionWithTypenames);\n\n    selection.validate(variableDefinitions, true);\n    return { selection, outputRewrites };\n  }\n\n  /**\n   * Returns the conditions (in the sense of @include/@skip) necessary for actually fetching (\"including\") that group.\n   *\n   * Note that in most cases, this will just return `true`, meaning that the group always need to be executed (which does not mean\n   * that there isn't any @include/@skip in the group selection, only that those are either not top-level, or they do not include\n   * the whole group selection).\n   */\n  conditions(): Conditions {\n    return this._selection.memoized().conditions;\n  }\n\n  toPlanNode(\n    queryPlannerConfig: Concrete<QueryPlannerConfig>,\n    handledConditions: Conditions,\n    variableDefinitions: VariableDefinitions,\n    fragments?: RebasedFragments,\n    operationName?: string,\n    directives?: readonly Directive<any>[],\n  ) : PlanNode | undefined {\n    if (this.selection.isEmpty()) {\n      return undefined;\n    }\n    \n    // for all contextual arguments, the values will be provided as an inputRewrite rather than in the variableDefintions.\n    // Note that it won't match the actual type, so we just use String! here as a placeholder\n    for (const [context, type] of this.inputs?.usedContexts ?? []) {\n      assert(isInputType(type), () => `Expected ${type} to be a input type`);\n      variableDefinitions.add(new VariableDefinition(type.schema(), new Variable(context), type));\n    }\n\n    const { selection, outputRewrites } = this.finalizeSelection(variableDefinitions, handledConditions);\n\n    const inputNodes = this._inputs ? this._inputs.toSelectionSetNode(variableDefinitions, handledConditions) : undefined;\n\n    const subgraphSchema = this.dependencyGraph.subgraphSchemas.get(this.subgraphName)!;\n    let operation = this.isEntityFetch\n      ? operationForEntitiesFetch(\n          subgraphSchema,\n          selection,\n          variableDefinitions,\n          operationName,\n          directives,\n        )\n      : operationForQueryFetch(\n          subgraphSchema,\n          this.rootKind,\n          selection,\n          variableDefinitions,\n          operationName,\n          directives,\n        );\n\n    if (this.generateQueryFragments) {\n      operation = operation.generateQueryFragments();\n    } else {\n      operation = operation.optimize(\n        fragments?.forSubgraph(this.subgraphName, subgraphSchema),\n        DEFAULT_MIN_USAGES_TO_OPTIMIZE,\n        variableDefinitions,\n      );\n    }\n\n    // collect all used variables in the selection and the used directives and fragments.\n    const collector = new VariableCollector();\n    // Note: The operation's selectionSet includes `representations` variable,\n    //       thus we use `selection` here instead.\n    selection.collectVariables(collector);\n    operation.collectVariablesInAppliedDirectives(collector);\n    if (operation.fragments) {\n      for (const namedFragment of operation.fragments.definitions()) {\n        namedFragment.collectVariables(collector);\n      }\n    }\n    const usedVariables = collector.variables();\n\n    const operationDocument = operationToDocument(operation);\n    const fetchNode: FetchNode = {\n      kind: 'Fetch',\n      id: this.id,\n      serviceName: this.subgraphName,\n      requires: inputNodes ? trimSelectionNodes(inputNodes.selections) : undefined,\n      variableUsages: usedVariables.map((v) => v.name),\n      operation: stripIgnoredCharacters(print(operationDocument)),\n      operationKind: schemaRootKindToOperationKind(operation.rootKind),\n      operationName: operation.name,\n      operationDocumentNode: queryPlannerConfig.exposeDocumentNodeInFetchNode ? operationDocument : undefined,\n      inputRewrites: this.inputRewrites.length === 0 ? undefined : this.inputRewrites,\n      outputRewrites: outputRewrites.length === 0 ? undefined : outputRewrites,\n      contextRewrites: this._contextInputs,\n    };\n\n    return this.isTopLevel\n      ? fetchNode\n      : {\n        kind: 'Flatten',\n        path: this.mergeAt!,\n        node: fetchNode,\n      };\n  }\n  \n  addContextRenamer(renamer: FetchDataKeyRenamer) {\n    if (!this._contextInputs) {\n      this._contextInputs = [];\n    }\n    if (!this._contextInputs.some((c) => sameKeyRenamer(c, renamer))) {\n      this._contextInputs.push(renamer);\n    }\n  }\n\n  toString(): string {\n    const base = `[${this.index}]${this.deferRef ? '(deferred)' : ''}${this._id ? `{id: ${this._id}}` : ''} ${this.subgraphName}`;\n    return this.isTopLevel\n      ? `${base}[${this._selection}]`\n      : `${base}@(${this.mergeAt})[${this._inputs} => ${this._selection}]`;\n  }\n}\n\nclass RebasedFragments {\n  private readonly bySubgraph = new Map<string, NamedFragments | null>();\n\n  constructor(private readonly queryFragments: NamedFragments) {\n  }\n\n  forSubgraph(name: string, schema: Schema): NamedFragments | undefined {\n    let frags = this.bySubgraph.get(name);\n    if (frags === undefined) {\n      frags = this.queryFragments.rebaseOn(schema) ?? null;\n      this.bySubgraph.set(name, frags);\n    }\n    return frags ?? undefined;\n  }\n}\n\nfunction genAliasName(baseName: string, unavailableNames: Map<string, any>): string {\n  let counter = 0;\n  let candidate = `${baseName}__alias_${counter}`;\n  while (unavailableNames.has(candidate)) {\n    candidate = `${baseName}__alias_${++counter}`;\n  }\n  return candidate;\n}\n\ntype SelectionSetAtPath = {\n  path: string[],\n  selections: SelectionSet,\n}\n\ntype FieldToAlias = {\n  path: string[],\n  responseName: string,\n  alias: string,\n}\n\nfunction selectionSetAsKeyRenamers(selectionSet: SelectionSet | undefined, relPath: string[], alias: string): FetchDataKeyRenamer[] {\n  if (!selectionSet || selectionSet.isEmpty()) {\n    return [\n      {\n        kind: 'KeyRenamer',\n        path: relPath,\n        renameKeyTo: alias,\n      }\n    ];\n  }\n  \n  return selectionSet.selections().map((selection: Selection): FetchDataKeyRenamer[] | undefined => {\n    if (selection.kind === 'FieldSelection') {\n      if (relPath[relPath.length - 1] === '..' && selectionSet.parentType.name !== 'Query') {\n        return possibleRuntimeTypes(selectionSet.parentType).map((t) => selectionSetAsKeyRenamers(selectionSet, [...relPath, `... on ${t.name}`], alias)).flat();\n      } else {\n        return selectionSetAsKeyRenamers(selection.selectionSet, [...relPath, selection.element.name], alias);\n      }\n    } else if (selection.kind === 'FragmentSelection') {\n      const element = selection.element;\n      if (element.typeCondition) {\n        return selectionSetAsKeyRenamers(selection.selectionSet, [...relPath, `... on ${element.typeCondition.name}`], alias);\n      }\n    }\n    return undefined;\n  }).filter(isDefined)\n  .reduce((acc, val) => acc.concat(val), []);\n}\n\nfunction computeAliasesForNonMergingFields(selections: SelectionSetAtPath[], aliasCollector: FieldToAlias[]) {\n  const seenResponseNames = new Map<string, { fieldName: string, fieldType: Type, selections?: SelectionSetAtPath[] }>();\n  const rebasedFieldsInSet = (s: SelectionSetAtPath) => (\n    s.selections.fieldsInSet().map(({ path, field }) => ({ fieldPath: s.path.concat(path), field }))\n  );\n  for (const { fieldPath, field } of selections.map((s) => rebasedFieldsInSet(s)).flat()) {\n    const fieldName = field.element.name;\n    const responseName = field.element.responseName();\n    const fieldType = field.element.definition.type!;\n    const previous = seenResponseNames.get(responseName);\n    if (previous) {\n      if (previous.fieldName === fieldName && typesCanBeMerged(previous.fieldType, fieldType)) {\n        // If the type is non-composite, then we're all set. But if it is composite, we need to record the sub-selection to that response name\n        // as we need to \"recurse\" on the merged of both the previous and this new field.\n        if (isCompositeType(baseType(fieldType))) {\n          assert(previous.selections, () => `Should have added selections for ${previous.fieldType}`);\n          const selections = previous.selections.concat({ path: fieldPath.concat(responseName), selections: field.selectionSet! });\n          seenResponseNames.set(responseName, { ...previous, selections });\n        }\n      } else {\n        // We need to alias the new occurence.\n        const alias = genAliasName(responseName, seenResponseNames);\n        // Given how we generate aliases, it's is very unlikely that the generated alias will conflict with any of the other response name\n        // at the level, but it's theoretically possible. By adding the alias to the seen names, we ensure that in the remote change that\n        // this ever happen, we'll avoid the conflict by giving another alias to the followup occurence.\n        const selections = field.selectionSet ? [{ path: fieldPath.concat(alias), selections: field.selectionSet }] : undefined;\n\n        seenResponseNames.set(alias, { fieldName, fieldType, selections });\n\n        // Lastly, we record that the added alias need to be rewritten back to the proper response name post query.\n        aliasCollector.push({\n          path: fieldPath,\n          responseName,\n          alias\n        });\n      }\n    } else {\n      const selections = field.selectionSet ? [{ path: fieldPath.concat(responseName), selections: field.selectionSet }] : undefined;\n      seenResponseNames.set(responseName, { fieldName, fieldType, selections });\n    }\n  }\n  for (const selections of seenResponseNames.values()) {\n    if (!selections.selections) {\n      continue;\n    }\n    computeAliasesForNonMergingFields(selections.selections, aliasCollector);\n  }\n}\n\nfunction addAliasesForNonMergingFields(selectionSet: SelectionSet): { updated: SelectionSet, outputRewrites: FetchDataRewrite[] } {\n  const aliases: FieldToAlias[] = [];\n  computeAliasesForNonMergingFields([{ path: [], selections: selectionSet}], aliases);\n  const updated = withFieldAliased(selectionSet, aliases);\n  const outputRewrites = aliases.map<FetchDataRewrite>(({path, responseName, alias}) => ({\n    kind: 'KeyRenamer',\n    path: path.concat(alias),\n    renameKeyTo: responseName,\n  }));\n  return { updated, outputRewrites };\n}\n\nfunction withFieldAliased(selectionSet: SelectionSet, aliases: FieldToAlias[]): SelectionSet {\n  if (aliases.length === 0) {\n    return selectionSet;\n  }\n\n  const atCurrentLevel = new Map<string, FieldToAlias>();\n  const remaining = new Array<FieldToAlias>();\n  for (const alias of aliases) {\n    if (alias.path.length > 0) {\n      remaining.push(alias);\n    } else {\n      atCurrentLevel.set(alias.responseName, alias);\n    }\n  }\n\n  return selectionSet.lazyMap((selection) => {\n    const pathElement = selection.element.asPathElement();\n    const subselectionAliases = remaining.map((alias) => {\n      if (alias.path[0] === pathElement) {\n        return {\n          ...alias,\n          path: alias.path.slice(1),\n        };\n      } else {\n        return undefined;\n      }\n    }).filter(isDefined);\n    const updatedSelectionSet = selection.selectionSet\n      ? withFieldAliased(selection.selectionSet, subselectionAliases)\n      : undefined;\n\n    if (selection.kind === 'FieldSelection') {\n      const field = selection.element;\n      const alias = pathElement && atCurrentLevel.get(pathElement);\n      return !alias && selection.selectionSet === updatedSelectionSet\n        ? selection\n        : selection.withUpdatedComponents(alias ? field.withUpdatedAlias(alias.alias) : field, updatedSelectionSet);\n    } else {\n      return selection.selectionSet === updatedSelectionSet\n        ? selection\n        : selection.withUpdatedSelectionSet(updatedSelectionSet!);\n    }\n  });\n}\n\nclass DeferredInfo {\n  private constructor(\n    readonly label: string,\n    readonly path: GroupPath,\n    readonly subselection: MutableSelectionSet,\n    readonly deferred = new Set<string>(),\n    readonly dependencies = new Set<string>(),\n  ) {\n  }\n\n  static empty(label: string, path: GroupPath, parentType: CompositeType): DeferredInfo {\n    return new DeferredInfo(\n      label,\n      path,\n      MutableSelectionSet.empty(parentType),\n    );\n  }\n\n  clone(): DeferredInfo {\n    return new DeferredInfo(\n      this.label,\n      this.path,\n      this.subselection.clone(),\n      new Set(this.deferred),\n      new Set(this.dependencies),\n    );\n  }\n}\n\ntype DeferContext = {\n  currentDeferRef: string | undefined,\n  pathToDeferParent: OperationPath,\n  activeDeferRef: string | undefined,\n  isPartOfQuery: boolean,\n}\n\nconst emptyDeferContext: DeferContext = {\n  currentDeferRef: undefined,\n  pathToDeferParent: [],\n  activeDeferRef: undefined,\n  isPartOfQuery: true,\n}\n\nfunction deferContextForConditions(baseContext: DeferContext): DeferContext {\n  return {\n    ...baseContext,\n    isPartOfQuery: false,\n    currentDeferRef: baseContext.activeDeferRef,\n  };\n}\n\nfunction deferContextAfterSubgraphJump(baseContext: DeferContext): DeferContext {\n  return baseContext.currentDeferRef === baseContext.activeDeferRef\n    ? baseContext\n    : {\n      ...baseContext,\n      activeDeferRef: baseContext.currentDeferRef,\n    };\n}\n\n/**\n * Filter any fragment element in the provided path whose type condition does not exists in the provide schema.\n * Not that if the fragment element should be filtered but it has applied directives, then we preserve those applications by\n * replacing with a fragment with no condition (but if there is not directives, we simply remove the fragment from the path).\n */\nfunction filterOperationPath(path: OperationPath, schema: Schema): OperationPath {\n  return path.map((elt) => {\n    if (elt.kind === 'FragmentElement' && elt.typeCondition && !schema.type(elt.typeCondition.name)) {\n      return elt.appliedDirectives.length > 0 ? elt.withUpdatedCondition(undefined) : undefined;\n    }\n    return elt;\n  }).filter(isDefined);\n}\n\nclass GroupPath {\n  private constructor(\n    private readonly fullPath: OperationPath,\n    private readonly pathInGroup: OperationPath,\n    private readonly responsePath: ResponsePath,\n    private readonly typeConditionedFetching: boolean,\n    private readonly possibleTypes: ObjectType[],\n    private readonly possibleTypesAfterLastField: ObjectType[],\n  ) {\n  }\n\n  static empty(typeConditionedFetching: boolean, rootType: CompositeType): GroupPath {\n    const rootPossibleRuntimeTypes = typeConditionedFetching ? Array.from(possibleRuntimeTypes(rootType)): [];\n    rootPossibleRuntimeTypes.sort();\n    return new GroupPath([], [], [], typeConditionedFetching, rootPossibleRuntimeTypes, rootPossibleRuntimeTypes);\n  }\n\n  inGroup(): OperationPath {\n    return this.pathInGroup;\n  }\n\n  full(): OperationPath {\n    return this.fullPath;\n  }\n\n  inResponse(): ResponsePath {\n    return this.responsePath;\n  }\n\n  forNewKeyFetch(newGroupContext: OperationPath): GroupPath {\n    return new GroupPath(\n      this.fullPath,\n      newGroupContext,\n      this.responsePath,\n      this.typeConditionedFetching,\n      this.possibleTypes,\n      this.possibleTypesAfterLastField,\n    );\n  }\n\n  forParentOfGroup(pathOfGroupInParent: OperationPath, parentSchema: Schema): GroupPath {\n    return new GroupPath(\n      this.fullPath,\n      // The group refered by `this` may have types that do not exists in the group \"parent\", so we filter\n      // out any type conditions on those. This typically happens jumping to a group that use an @interfaceObject\n      // from a (parent) group that does not know the corresponding interface but has some of the type that\n      // implements it (in the supergraph).\n      concatOperationPaths(pathOfGroupInParent, filterOperationPath(this.pathInGroup, parentSchema)),\n      this.responsePath,\n      this.typeConditionedFetching,\n      this.possibleTypes,\n      this.possibleTypesAfterLastField\n    );\n  }\n\n  private updatedResponsePath(element: OperationElement): ResponsePath {\n    switch (element.kind){\n      case 'FragmentElement':\n        return this.responsePath;\n      case 'Field':\n        let newPath = this.responsePath;\n        if (this.possibleTypesAfterLastField.length !== this.possibleTypes.length) {\n          const conditions = `|[${this.possibleTypes.join(',')}]`;\n          const previousLastElement = newPath[newPath.length -1] as string || '';\n\n          if (previousLastElement.startsWith('|[')) {\n            newPath = [...newPath.slice(0, -1), conditions];\n          } else {\n            newPath = [...newPath.slice(0, -1), `${previousLastElement}${conditions}`];\n          }\n        }\n        let type = element.definition.type!;\n        if (newPath.length === 0 && this.typeConditionedFetching) {\n          newPath = newPath.concat('');\n        }\n        newPath = newPath.concat(`${element.responseName()}`);\n        while (!isNamedType(type)) {\n          if (isListType(type)) {\n            newPath.push('@');\n          }\n          type = type.ofType;\n        }\n        return newPath;\n    }\n  }\n\n  add(element: OperationElement): GroupPath {\n    const responsePath = this.updatedResponsePath(element);\n    const newPossibleTypes = this.computeNewPossibleTypes(element);\n    return new GroupPath(\n      this.fullPath.concat(element),\n      this.pathInGroup.concat(element),\n      responsePath,\n      this.typeConditionedFetching,\n      newPossibleTypes,\n      element.kind === 'Field'? newPossibleTypes: this.possibleTypesAfterLastField\n    );\n  }\n\n  toString() {\n    return this.inResponse().join('.');\n  }\n\n  computeNewPossibleTypes(element: OperationElement): ObjectType[] {\n    if (!this.typeConditionedFetching) {\n      return [];\n    }\n    switch (element.kind){\n      case 'FragmentElement':\n        if (!element.typeCondition) {\n          return this.possibleTypes;\n        }\n        const elementPossibleTypes = possibleRuntimeTypes(element.typeCondition);\n        return this.possibleTypes.filter((pt) => elementPossibleTypes.some((ept) => ept.name === pt.name));\n      case 'Field':\n        return this.advanceFieldType(element);\n    }\n  }\n\n\n  advanceFieldType(element: Field): ObjectType[] {\n    if (!isCompositeType(element.baseType())) {\n      return [];\n    }\n\n    const res = Array.from(\n      new Set(\n        this.possibleTypes.map(\n          (pt) => possibleRuntimeTypes(\n            // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n            baseType(pt.field(element.name)!.type!) as CompositeType\n          )\n        ).flat()\n      )\n    );\n    res.sort();\n    return res;\n  }\n}\n\nclass DeferTracking {\n  private readonly topLevelDeferred = new Set<string>();\n  private readonly deferred = new MapWithCachedArrays<string, DeferredInfo>();\n\n  private constructor(\n    readonly primarySelection: MutableSelectionSet | undefined\n  ) {\n  }\n\n  static empty(rootType: CompositeType | undefined): DeferTracking {\n    return new DeferTracking(rootType ? MutableSelectionSet.empty(rootType) : undefined);\n  }\n\n  clone(): DeferTracking {\n    const cloned = new DeferTracking(this.primarySelection?.clone());\n    this.topLevelDeferred.forEach((label) => cloned.topLevelDeferred.add(label));\n    for (const deferredBlock of this.deferred.values()) {\n      cloned.deferred.set(deferredBlock.label, deferredBlock.clone());\n    }\n    return cloned;\n  }\n\n  registerDefer({\n    deferContext,\n    deferArgs,\n    path,\n    parentType,\n  }: {\n    deferContext: DeferContext,\n    deferArgs: DeferDirectiveArgs,\n    path: GroupPath,\n    parentType: CompositeType,\n  }): void {\n    // Having the primary selection undefined means that @defer handling is actually disabled, so save anything costly that we won't be using.\n    if (!this.primarySelection) {\n      return;\n    }\n\n    assert(deferArgs.label, 'All @defer should have be labelled at this point');\n    let deferredBlock = this.deferred.get(deferArgs.label);\n    if (!deferredBlock) {\n      deferredBlock = DeferredInfo.empty(deferArgs.label, path, parentType);\n      this.deferred.set(deferArgs.label, deferredBlock);\n    }\n\n    const parentRef = deferContext.currentDeferRef;\n    if (!parentRef) {\n      this.topLevelDeferred.add(deferArgs.label);\n      this.primarySelection.updates().addAtPath(deferContext.pathToDeferParent);\n    } else {\n      const parentInfo = this.deferred.get(parentRef);\n      assert(parentInfo, `Cannot find info for parent ${parentRef} or ${deferArgs.label}`);\n      parentInfo.deferred.add(deferArgs.label);\n      parentInfo.subselection.updates().addAtPath(deferContext.pathToDeferParent);\n    }\n  }\n\n  updateSubselection(deferContext: DeferContext, selection?: SelectionSet): void {\n    if (!this.primarySelection || !deferContext.isPartOfQuery) {\n      return;\n    }\n\n    const parentRef = deferContext.currentDeferRef;\n    let updates: SelectionSetUpdates;\n    if (parentRef) {\n      const info = this.deferred.get(parentRef);\n      assert(info, () => `Cannot find info for label ${parentRef}`);\n      updates = info.subselection.updates();\n    } else {\n      updates = this.primarySelection.updates();\n    }\n    updates.addAtPath(deferContext.pathToDeferParent, selection);\n  }\n\n  getBlock(label: string): DeferredInfo | undefined {\n    return  this.deferred.get(label);\n  }\n\n  addDependency(label: string, idDependency: string): void {\n    const info = this.deferred.get(label);\n    assert(info, () => `Cannot find info for label ${label}`);\n    info.dependencies.add(idDependency);\n  }\n\n  defersInParent(parentRef: string | undefined): readonly DeferredInfo[] {\n    const labels = parentRef ? this.deferred.get(parentRef)?.deferred : this.topLevelDeferred;\n    return labels\n      ? setValues(labels).map((label) => {\n        const info = this.deferred.get(label);\n        assert(info, () => `Should not have referenced ${label} without an existing info`);\n        return info;\n      })\n      : [];\n  }\n}\n\n/**\n * UnhandledGroups is used while processing fetch groups in dependency order to track group for which\n * one of the parent has been processed/handled but which has other parents. So it is a set of\n * groups and for each group which parent(s) remains to be processed before the group itself can be\n * processed.\n */\ntype UnhandledGroups = [FetchGroup, UnhandledParentRelations][];\ntype UnhandledParentRelations = ParentRelation[];\n\nfunction printUnhandled(u: UnhandledGroups): string {\n  return '[' + u.map(([g, relations]) =>\n    `${g.index} (missing: [${relations.map((r) => r.group.index).join(', ')}])`\n  ).join(', ') + ']';\n}\n\n/*\n * Used during the processing of fetch groups in dependency order.\n */\nclass ProcessingState {\n  private constructor(\n    // Groups that can be handled (because all their parents/dependencies have been processed before).\n    readonly next: readonly FetchGroup[],\n    // Groups that needs some parents/dependencies to be processed first because they can be themselves.\n    // Note that we make sure that this never hold group with no \"edges\".\n    readonly unhandled: UnhandledGroups,\n  ) {\n  }\n\n  static empty(): ProcessingState {\n    return new ProcessingState([], []);\n  }\n\n  static forChildrenOfProcessedGroup(processed: FetchGroup, children: FetchGroup[]): ProcessingState {\n    const ready: FetchGroup[] = [];\n    const unhandled: UnhandledGroups = [];\n    for (const c of children) {\n      const parents = c.parents();\n      if (parents.length === 1) {\n        // The parent we have processed is the only one parent of that children; we can handle the children\n        ready.push(c);\n      } else {\n        unhandled.push([c, parents.filter((p) => p.group !== processed)]);\n      }\n    }\n    return new ProcessingState(ready, unhandled);\n  }\n\n  static ofReadyGroups(groups: readonly FetchGroup[]): ProcessingState {\n    return new ProcessingState(groups, []);\n  }\n\n  withOnlyUnhandled(): ProcessingState {\n    return new ProcessingState([], this.unhandled);\n  }\n\n  mergeWith(that: ProcessingState): ProcessingState {\n    const next: FetchGroup[] = this.next.concat(that.next.filter((g) => !this.next.includes(g)));\n    const unhandled: UnhandledGroups = [];\n\n    const thatUnhandled = that.unhandled.concat();\n    for (const [g, edges] of this.unhandled) {\n      const newEdges = this.mergeRemaingsAndRemoveIfFound(g, edges, thatUnhandled);\n      if (newEdges.length == 0) {\n        if (!next.includes(g)) {\n          next.push(g);\n        }\n      } else {\n        unhandled.push([g, newEdges])\n      }\n    }\n    // Anything remaining in `thatUnhandled` are groups that were not in `this` at all.\n    unhandled.push(...thatUnhandled);\n    return new ProcessingState(next, unhandled);\n  }\n\n  private mergeRemaingsAndRemoveIfFound(group: FetchGroup, inEdges: UnhandledParentRelations, otherGroups: UnhandledGroups): UnhandledParentRelations {\n    const idx = otherGroups.findIndex(g => g[0] === group);\n    if (idx < 0) {\n      return inEdges;\n    } else {\n      const otherEdges = otherGroups[idx][1];\n      otherGroups.splice(idx, 1);\n      // The uhandled are the one that are unhandled on both side.\n      return inEdges.filter(e => otherEdges.includes(e))\n    }\n  }\n\n  updateForProcessedGroups(processed: readonly FetchGroup[]): ProcessingState {\n    const next: FetchGroup[] = this.next.concat();\n    const unhandled: UnhandledGroups = [];\n    for (const [g, edges] of this.unhandled) {\n      // Remove any of the processed groups from the unhandled edges of that group.\n      // And if there is no remaining edge, that group can be handled.\n      const newEdges = edges.filter((edge) => !processed.includes(edge.group));\n      if (newEdges.length === 0) {\n        if (!next.includes(g)) {\n          next.push(g);\n        }\n      } else {\n        unhandled.push([g, newEdges]);\n      }\n    }\n    return new ProcessingState(next, unhandled);\n  }\n}\n\n/**\n * A Directed Acyclic Graph (DAG) of `FetchGroup` and their dependencies.\n *\n * In the graph, 2 groups are connected if one of them (the parent) must be performed strictly before the other one (the child).\n */\nclass FetchDependencyGraph {\n  private isReduced: boolean = false;\n  private isOptimized: boolean = false;\n\n  private fetchIdGen: number;\n\n  private constructor(\n    readonly supergraphSchema: Schema,\n    readonly subgraphSchemas: ReadonlyMap<string, Schema>,\n    readonly federatedQueryGraph: QueryGraph,\n    readonly startingIdGen: number,\n    private readonly rootGroups: MapWithCachedArrays<string, FetchGroup>,\n    readonly groups: FetchGroup[],\n    readonly deferTracking: DeferTracking,\n    readonly generateQueryFragments: boolean,\n  ) {\n    this.fetchIdGen = startingIdGen;\n  }\n\n  static create(supergraphSchema: Schema, federatedQueryGraph: QueryGraph, startingIdGen: number, rootTypeForDefer: CompositeType | undefined, generateQueryFragments: boolean) {\n    return new FetchDependencyGraph(\n      supergraphSchema,\n      federatedQueryGraph.sources,\n      federatedQueryGraph,\n      startingIdGen,\n      new MapWithCachedArrays(),\n      [],\n      DeferTracking.empty(rootTypeForDefer),\n      generateQueryFragments,\n    );\n  }\n\n  private federationMetadata(subgraphName: string): FederationMetadata {\n    const schema = this.subgraphSchemas.get(subgraphName);\n    assert(schema, () => `Unknown schema ${subgraphName}`)\n    const metadata = federationMetadata(schema);\n    assert(metadata, () => `Schema ${subgraphName} should be a federation subgraph`);\n    return metadata;\n  }\n\n  nextFetchId(): number {\n    return this.fetchIdGen;\n  }\n\n  clone(): FetchDependencyGraph {\n    const cloned = new FetchDependencyGraph(\n      this.supergraphSchema,\n      this.subgraphSchemas,\n      this.federatedQueryGraph,\n      this.startingIdGen,\n      new MapWithCachedArrays<string, FetchGroup>(),\n      new Array(this.groups.length),\n      this.deferTracking.clone(),\n      this.generateQueryFragments,\n    );\n\n    for (const group of this.groups) {\n      cloned.groups[group.index] = group.cloneShallow(cloned);\n    }\n\n    for (const root of this.rootGroups.values()) {\n      cloned.rootGroups.set(root.subgraphName, cloned.groups[root.index]);\n    }\n\n    for (const group of this.groups) {\n      const clonedGroup = cloned.groups[group.index];\n      // Note that `addParent` makes sure to set both the parent link in\n      // `clonedGroup` but also the corresponding child link in `parent`.\n      for (const parent of group.parents()) {\n        clonedGroup.addParent({\n          group: cloned.groups[parent.group.index],\n          path: parent.path\n        });\n      }\n    }\n\n    return cloned;\n  }\n\n\n  supergraphSchemaType(typeName: string): NamedType | undefined {\n    return this.supergraphSchema.type(typeName)\n  }\n\n  getOrCreateRootFetchGroup({\n    subgraphName,\n    rootKind,\n    parentType,\n  }: {\n    subgraphName: string,\n    rootKind: SchemaRootKind,\n    parentType: CompositeType,\n  }): FetchGroup {\n    let group = this.rootGroups.get(subgraphName);\n    if (!group) {\n      group = this.createRootFetchGroup({ subgraphName, rootKind, parentType });\n      this.rootGroups.set(subgraphName, group);\n    }\n    return group;\n  }\n\n  rootSubgraphs(): readonly string[] {\n    return this.rootGroups.keys();\n  }\n\n  isRootGroup(group: FetchGroup): boolean {\n    return group === this.rootGroups.get(group.subgraphName);\n  }\n\n  createRootFetchGroup({\n    subgraphName,\n    rootKind,\n    parentType,\n  }: {\n    subgraphName: string,\n    rootKind: SchemaRootKind,\n    parentType: CompositeType,\n  }): FetchGroup {\n    const group = this.newFetchGroup({ subgraphName, parentType, rootKind, hasInputs: false });\n    this.rootGroups.set(subgraphName, group);\n    return group;\n  }\n\n  private newFetchGroup({\n    subgraphName,\n    parentType,\n    hasInputs,\n    rootKind, // always \"query\" for entity fetches\n    mergeAt,\n    deferRef,\n  }: {\n    subgraphName: string,\n    parentType: CompositeType,\n    hasInputs: boolean,\n    rootKind: SchemaRootKind,\n    mergeAt?: ResponsePath,\n    deferRef?: string,\n  }): FetchGroup {\n    this.onModification();\n    const newGroup = FetchGroup.create({\n      dependencyGraph: this,\n      index: this.groups.length,\n      subgraphName,\n      rootKind,\n      parentType,\n      hasInputs,\n      mergeAt,\n      deferRef,\n      generateQueryFragments: this.generateQueryFragments,\n    });\n    this.groups.push(newGroup);\n    return newGroup;\n  }\n\n  getOrCreateKeyFetchGroup({\n    subgraphName,\n    mergeAt,\n    type,\n    parent,\n    conditionsGroups,\n    deferRef,\n  }: {\n    subgraphName: string,\n    mergeAt: ResponsePath,\n    type: CompositeType,\n    parent: ParentRelation,\n    conditionsGroups: FetchGroup[],\n    deferRef?: string,\n  }): FetchGroup {\n    // Let's look if we can reuse a group we have, that is an existing child of the parent that:\n    // 1. is for the same subgraph\n    // 2. has the same mergeAt\n    // 3. is for the same entity type (we don't reuse groups for different entities just yet, as this can create unecessary dependencies that\n    //   gets in the way of some optimizations; the final optimizations in `reduceAndOptimize` will however later merge groups on the same subgraph\n    //   and mergeAt when possible).\n    // 4. is not part of our conditions or our conditions ancestors (meaning that we annot reuse a group if it fetches something we take as input).\n    // 5. is part of the same \"defer\" grouping\n    // 6. has the same path in parents (here again, we _will_ eventually merge fetches for which this is not true later in `reduceAndOptimize`, but\n    //   for now, keeping groups separated when they have a different path in their parent allows to keep that \"path in parent\" more precisely,\n    //   which is important for some case of @requires).\n    for (const existing of parent.group.children()) {\n      if (existing.subgraphName === subgraphName\n        && existing.mergeAt\n        && sameMergeAt(existing.mergeAt, mergeAt)\n        && existing.selection.selections().every((s) => s.kind === 'FragmentSelection' && s.element.castedType() === type)\n        && !this.isInGroupsOrTheirAncestors(existing, conditionsGroups)\n        && existing.deferRef === deferRef\n        && samePathsInParents(existing.parentRelation(parent.group)?.path, parent.path)\n      ) {\n        return existing;\n      }\n    }\n    const newGroup = this.newKeyFetchGroup({\n      subgraphName,\n      mergeAt,\n      deferRef\n    });\n    newGroup.addParent(parent);\n    return newGroup\n  }\n\n  newRootTypeFetchGroup({\n    subgraphName,\n    rootKind,\n    parentType,\n    mergeAt,\n    deferRef,\n  }: {\n    subgraphName: string,\n    rootKind: SchemaRootKind,\n    parentType: ObjectType,\n    mergeAt: ResponsePath,\n    deferRef?: string,\n  }): FetchGroup {\n    return this.newFetchGroup({\n      subgraphName,\n      parentType,\n      rootKind,\n      hasInputs: false,\n      mergeAt,\n      deferRef\n    });\n  }\n\n  // Returns true if `toCheck` is either part of `conditions`, or is one of their ancestors (potentially recursively).\n  private isInGroupsOrTheirAncestors(toCheck: FetchGroup, conditions: FetchGroup[]): boolean  {\n    const stack = conditions.concat();\n    while (stack.length > 0) {\n      const group = stack.pop()!;\n      if (toCheck === group) {\n        return true;\n      }\n      stack.push(...group.parentGroups());\n    }\n    return false;\n  }\n\n  typeForFetchInputs(name: string): CompositeType {\n    const type = this.supergraphSchema.type(name);\n    assert(type, `Type ${name} should exist in the supergraph`)\n    assert(isCompositeType(type), `Type ${type} should be a composite, but got ${type.kind}`);\n    return type;\n  }\n\n  newKeyFetchGroup({\n    subgraphName,\n    mergeAt,\n    deferRef,\n  }: {\n    subgraphName: string,\n    mergeAt: ResponsePath,\n    deferRef?: string,\n  }): FetchGroup {\n    const parentType = this.federationMetadata(subgraphName).entityType();\n    assert(parentType, () => `Subgraph ${subgraphName} has no entities defined`);\n    return this.newFetchGroup({\n      subgraphName,\n      parentType,\n      hasInputs: true,\n      rootKind: 'query',\n      mergeAt,\n      deferRef\n    });\n  }\n\n  remove(toRemove: FetchGroup) {\n    this.onModification();\n\n    // We copy the initial children and parents since we're going to modify them and wand to avoid issue with\n    // modifying the list we're iterating one.\n    const children = toRemove.children().concat();\n    const parents = toRemove.parents().concat();\n    // We remove any relationship from the removed group to it's children.\n    for (const child of children) {\n      // At the point where we call this, any potential child of the removed group should have been \"dealt with\": on\n      // merge, the children should have relocated to whichever group we merged into, and if we remove some useless\n      // group, then its child should have other parents, or we would be breaking our graph (leaving those child groups\n      // unreachable). So this is our sanity check to ensure we haven't forgotten some step.\n      assert(child.parents().length > 1, () => `Cannot remove ${toRemove} as it is the *only* parent of ${child}`);\n      toRemove.removeChild(child);\n    }\n\n    // and then any parent relationship to the removed group.\n    for (const parent of parents) {\n      parent.group.removeChild(toRemove);\n    }\n\n    // We can now remove the entries for the removed group itself since it shouldn't be referenced anymore.\n    this.groups.splice(toRemove.index, 1);\n\n    // But as our group indexes index into arrays, we need to keep all existing group indexes contiguous, and as\n    // we just removed `toRemove.index`, we need to \"fixup\" every index of groups with a higher index (decrementing\n    // said index).\n    for (let i = toRemove.index; i < this.groups.length; i++) {\n      --this.groups[i].index;\n    }\n  }\n\n  /**\n   * Must be called every time the \"shape\" of the graph is modified to know that the graph may not be minimal/optimized anymore.\n   *\n   * This is not private due to the fact that the graph is implemented through the inter-connection of this class and the\n   * `FetchGroup` one and so `FetchGroup` needs to call this. But this has no reason to be called from any other place.\n   */\n  onModification() {\n    this.isReduced = false;\n    this.isOptimized = false;\n  }\n\n  // Do a transitive reduction (https://en.wikipedia.org/wiki/Transitive_reduction) of the graph\n  // We keep it simple and do a DFS from each vertex. The complexity is not amazing, but dependency\n  // graphs between fetch groups will almost surely never be huge and query planning performance\n  // is not paramount so this is almost surely \"good enough\".\n  reduce() {\n    if (this.isReduced) {\n      return;\n    }\n\n    for (const group of this.groups) {\n      this.dfsRemoveRedundantEdges(group);\n    }\n\n    this.isReduced = true;\n  }\n\n  // Reduce the graph (see `reduce`) and then do a some additional traversals to optimize for:\n  //  1) fetches with no selection: this can happen when we have a require if the only field requested\n  //     was the one with the require and that forced some dependencies. Those fetch should have\n  //     no dependents and we can just remove them.\n  //  2) fetches that are made in parallel to the same subgraph and the same path, and merge those.\n  private reduceAndOptimize() {\n    if (this.isOptimized) {\n      return;\n    }\n    this.reduce();\n\n    for (const group of this.rootGroups.values()) {\n      this.removeEmptyGroups(group);\n    }\n\n    for (const group of this.rootGroups.values()) {\n      this.removeUselessGroups(group);\n    }\n\n    for (const group of this.rootGroups.values()) {\n      this.mergeChildFetchesForSameSubgraphAndPath(group);\n    }\n\n    this.mergeFetchesToSameSubgraphAndSameInputs();\n\n    this.isOptimized = true;\n  }\n\n  private removeEmptyGroups(group: FetchGroup) {\n    const children = group.children().concat();\n    // Note: usually, empty groups are due to temporary groups created during the handling of @require\n    // and note needed. There is a special case with @defer however whereby everything in a query is\n    // deferred (not very useful in practice, but not disallowed by the spec), and in that case we will\n    // end up with an empty root group. In that case, we don't remove that group, but instead will\n    // recognize that case when processing groups later.\n    if (group.selection.isEmpty() && !this.isRootGroup(group)) {\n      this.remove(group);\n    }\n    for (const g of children) {\n      this.removeEmptyGroups(g);\n    }\n  }\n\n  private removeUselessGroups(group: FetchGroup) {\n    // Since we can potentially remove child in place, we need to\n    // explicitly copy the list of all children to ensure that we\n    // process ALL children\n    const children = group.children().concat();\n    // Recursing first, this makes it a bit easier to reason about.\n    for (const child of children) {\n      this.removeUselessGroups(child);\n    }\n\n    if (group.isUseless()) {\n      // In general, removing a group is a bit tricky because we need to deal\n      // with the fact that the group can have multiple parents, and we don't\n      // have the \"path in parent\" in all cases. To keep thing relatively\n      // easily, we only handle the following cases (other cases will remain\n      // non-optimal, but hopefully this handle all the cases we care about in\n      // practice):\n      //   1. if the group has no children. In which case we can just remove it\n      //      with no ceremony.\n      //   2. if the group has only a single parent and we have a path to that\n      //      parent.\n      if (group.children().length === 0) {\n        this.remove(group);\n      } else {\n        const parents = group.parents();\n        const parent = parents[0];\n        if (parents.length === 1 && parent.path) {\n          parent.group.removeUselessChild(group);\n        }\n      }\n    }\n  }\n\n  private mergeChildFetchesForSameSubgraphAndPath(group: FetchGroup) {\n    const children = group.children();\n    if (children.length > 1) {\n      // We iterate on all pairs of children and merge those siblings that can be merged together. Note\n      // that when we merged, we effectively modify the array we're iterating over, so we use indexes\n      // and re-test against `children.length` every time to ensure we don't miss elements as we do so.\n      for (let i = 0; i < children.length; i++) {\n        const gi = children[i];\n        let j = i + 1;\n        while (j < children.length) {\n          const gj = children[j];\n          if (gi.canMergeSiblingIn(gj)) {\n            // In theory, we can merge gi into gj, or gj into gi, it shouldn't matter. But we\n            // merge gi into gj so our iteration can continue properly.\n            gi.mergeSiblingIn(gj);\n\n            // We're working on a minimal graph (we've done a transitive reduction beforehand) and we need to keep the graph\n            // minimal as post-reduce steps (the `process` method) rely on it. But merging 2 groups _can_ break minimality.\n            // Say we have:\n            //   0 ------\n            //            \\\n            //             4\n            //   1 -- 3 --/\n            // and we merge groups 0 and 1 (and let's call 2 the result), then we now have:\n            //      ------\n            //     /       \\\n            //   0 <-- 3 -- 4\n            // which is not minimal.\n            //\n            // So to fix it, we just re-run our dfs removal from that merged edge (which is probably a tad overkill in theory,\n            // but for the reasons mentioned on `reduce`, this is most likely a non-issue in practice).\n            //\n            // Note that this DFS can only affect the descendants of gi (its children and recursively so), so it does not\n            // affect our current iteration.\n            this.dfsRemoveRedundantEdges(gi);\n\n            // The merging removed `gj`, so we shouldn't bump `j`, it's already on the next group.\n          } else {\n            ++j;\n          }\n        }\n      }\n    }\n\n    // Now recurse to the sub-groups.\n    for (const g of children) {\n      this.mergeChildFetchesForSameSubgraphAndPath(g);\n    }\n  }\n\n  private mergeFetchesToSameSubgraphAndSameInputs() {\n    // Sometimes, the query will directly query some fields that are also requirements for some other queried fields, and because there\n    // is complex dependencies involved, we won't be able to easily realize that we're doing the same fetch to a subgraph twice in 2\n    // different places (once for the user query, once for the require). For an example of this happening, see the test called 'handles\n    // diamond-shaped dependencies' in `buildPlan.test.ts` Of course, doing so is always inefficient and so this method ensures we\n    // merge such fetches.\n    // In practice, this method merges any 2 fetches that are to the same subgraph and same mergeAt, and have the exact same inputs.\n\n    // To find which groups are to the same subgraph and mergeAt somewhat efficient, we generate a simple string key from each\n    // group subgraph name and mergeAt. We do \"sanitize\" subgraph name, but have no worries for `mergeAt` since it contains either\n    // number of field names, and the later is restricted by graphQL so as to not be an issue.\n    const bySubgraphs = new MultiMap<string, FetchGroup>();\n    for (const group of this.groups) {\n      // we exclude groups without inputs because that's what we look for. In practice, this mostly just exclude\n      // root groups, which we don't really want to bother with anyway.\n      if (group.inputs) {\n        bySubgraphs.add(group.subgraphAndMergeAtKey!, group);\n      }\n    }\n    for (const groups of bySubgraphs.values()) {\n      // In the vast majority of cases `groups` is going be a single element, so optimize that trival case away.\n      if (groups.length <= 1) {\n        continue;\n      }\n\n      // An array where each entry is a \"bucket\" of groups that can all be merge together.\n      const toMergeBuckets: FetchGroup[][] = [];\n      while (groups.length > 1) {\n        const group = groups.pop()!;\n        const bucket: FetchGroup[] = [ group ];\n        // Bit of a hand-rolled loop here, but we're removing some elements, so this feel clearer overall\n        let i = 0;\n        while (i < groups.length) {\n          const current = groups[i];\n          if (group.deferRef === current.deferRef && group.inputs!.equals(current.inputs!)) {\n            bucket.push(current);\n            groups.splice(i, 1);\n            // Note that we don't change `i` since we just removed the element at that index and so the new\n            // element at that index is the next one we need to check.\n          } else {\n            ++i;\n          }\n        }\n        // The bucket always has at leat the initial group, but there is only merging to be done if there is at least one more\n        if (bucket.length > 1) {\n          toMergeBuckets.push(bucket);\n        }\n      }\n\n      for (const bucket of toMergeBuckets) {\n        // We pick one fo the group and merge all other into it. Note that which group we choose shouldn't matter since\n        // the merging preserves all the dependencies of each group (both parents and children).\n        const group = bucket.pop()!;\n        for (const other of bucket) {\n          group.mergeInWithAllDependencies(other);\n        }\n      }\n    }\n\n    // We may have merged groups and broke the graph miminality in doing so, so we re-reduce to make sure. Note\n    // that if we did no modification to the graph, calling `reduce` is cheap (the `isReduced` variable will still be `true`).\n    this.reduce();\n  }\n\n  private dfsRemoveRedundantEdges(from: FetchGroup) {\n    for (const startVertex of from.children()) {\n      const stack = startVertex.children().concat();\n      while (stack.length > 0) {\n        const v = stack.pop()!;\n        // Note that we rely on `removeChild` to be a no-op if there is not parent-child relation.\n        from.removeChild(v);\n        stack.push(...v.children());\n      }\n    }\n  }\n\n  private extractChildrenAndDeferredDependencies(\n    group: FetchGroup\n  ): {\n    children: FetchGroup[],\n    deferredGroups: SetMultiMap<string, FetchGroup>,\n  } {\n    const children: FetchGroup[] = [];\n    const deferredGroups = new SetMultiMap<string, FetchGroup>();\n    for (const child of group.children()) {\n      if (group.deferRef === child.deferRef) {\n        children.push(child);\n      } else {\n        assert(child.deferRef, () => `${group} has deferRef \"${group.deferRef}\", so its child ${child} cannot have a top-level deferRef`);\n        // In general, we want to mark the group as a dependency for its deferred children. An exception is where this group\n        // is empty, in which case it won't be included in the plan, and so we don't want to indicate a \"broken\" dependency\n        // in the resulting plan. Note that in practice this only happen for a case where everything in a query is deferred,\n        // and so the \"primary\" part of the `DeferNode` will be empyt, so having an empty set of dependencies for the deferred\n        // part is harmless (basically, it says \"wait for everyting in the primary part\" but there is nothing in the primary\n        // part so there is not actualy \"wait\").\n        if (!group.selection.isEmpty()) {\n          if (!group.id) {\n            group.id = String(this.fetchIdGen++);\n          }\n          this.deferTracking.addDependency(child.deferRef, group.id);\n        }\n        deferredGroups.add(child.deferRef, child);\n      }\n    }\n    return { children, deferredGroups };\n  }\n\n  private processGroup<TProcessed, TDeferred>(\n    processor: FetchGroupProcessor<TProcessed, TDeferred>,\n    group: FetchGroup,\n    handledConditions: Conditions,\n  ): {\n    main: TProcessed,\n    state: ProcessingState,\n    deferredGroups: SetMultiMap<string, FetchGroup>,\n  } {\n    const conditions = updatedConditions(group.conditions(), handledConditions);\n    const newHandledConditions = mergeConditions(conditions, handledConditions);\n    const { children, deferredGroups } = this.extractChildrenAndDeferredDependencies(group);\n    const processed = processor.onFetchGroup(group, newHandledConditions);\n    if (children.length == 0) {\n      return { main: processor.onConditions(conditions, processed), state: ProcessingState.empty(), deferredGroups };\n    }\n\n    const state = ProcessingState.forChildrenOfProcessedGroup(group, children);\n    if (state.next.length > 0) {\n      // We process the ready children as if they were parallel roots (they are from `processed`\n      // in a way), and then just add process at the beginning of the sequence.\n      const {\n        mainSequence,\n        newState,\n        deferredGroups: allDeferredGroups,\n      } = this.processRootMainGroups({\n        processor,\n        state,\n        rootsAreParallel: true,\n        initialDeferredGroups: deferredGroups,\n        handledConditions: newHandledConditions,\n      });\n      return {\n        main: processor.onConditions(conditions, processor.reduceSequence([processed].concat(mainSequence))),\n        state: newState,\n        deferredGroups: allDeferredGroups,\n      };\n    } else {\n      return {\n        main: processor.onConditions(conditions, processed),\n        state,\n        deferredGroups,\n      };\n    }\n  }\n\n  private processGroups<TProcessed, TDeferred>(\n    processor: FetchGroupProcessor<TProcessed, TDeferred>,\n    state: ProcessingState,\n    processInParallel: boolean,\n    handledConditions: Conditions,\n  ): {\n    processed: TProcessed,\n    newState: ProcessingState,\n    deferredGroups: SetMultiMap<string, FetchGroup>,\n  } {\n    const processedNodes: TProcessed[] = [];\n    const allDeferredGroups = new SetMultiMap<string, FetchGroup>();\n    let newState = state.withOnlyUnhandled();\n    for (const group of state.next) {\n      const { main, deferredGroups, state: stateAfterGroup } = this.processGroup(processor, group, handledConditions);\n      processedNodes.push(main);\n      allDeferredGroups.addAll(deferredGroups);\n      newState = newState.mergeWith(stateAfterGroup);\n    }\n\n    // Note that `newState` is the merged result of everything after each individual group (anything that was _only_ depending\n    // on it), but the fact that groups themselves (`state.next`) have been handled has not necessarily be taking into\n    // account yet, so we do it below. Also note that this must be done outside of the `for` loop above, because any\n    // group that dependend on multiple of the input groups of this function must not be handled _within_ this function\n    // but rather after it, and this is what ensures it.\n    return {\n      processed: processInParallel ? processor.reduceParallel(processedNodes) : processor.reduceSequence(processedNodes),\n      newState: newState.updateForProcessedGroups(state.next),\n      deferredGroups: allDeferredGroups,\n    };\n  }\n\n  /**\n   * Process the \"main\" (non-deferred) groups starting at the provided roots. The deferred groups are collected\n   * by this method but not otherwise processed.\n   */\n  private processRootMainGroups<TProcessed, TDeferred>({\n    processor,\n    state,\n    rootsAreParallel,\n    initialDeferredGroups,\n    handledConditions,\n  }: {\n    processor: FetchGroupProcessor<TProcessed, TDeferred>,\n    state: ProcessingState,\n    rootsAreParallel: boolean,\n    initialDeferredGroups?: SetMultiMap<string, FetchGroup>,\n    handledConditions: Conditions,\n  }): {\n    mainSequence: TProcessed[],\n    newState: ProcessingState,\n    deferredGroups: SetMultiMap<string, FetchGroup>,\n  } {\n    const mainSequence: TProcessed[] = [];\n    const allDeferredGroups = initialDeferredGroups\n      ? new SetMultiMap<string, FetchGroup>(initialDeferredGroups)\n      : new SetMultiMap<string, FetchGroup>();\n    let processInParallel = rootsAreParallel;\n    while (state.next.length > 0) {\n      const { processed, newState, deferredGroups } = this.processGroups(processor, state, processInParallel, handledConditions);\n      // After the root groups, handled on the first iteration, we can process everything in parallel.\n      processInParallel = true;\n      mainSequence.push(processed);\n      state = newState;\n      allDeferredGroups.addAll(deferredGroups);\n    }\n    return {\n      mainSequence,\n      newState: state,\n      deferredGroups: allDeferredGroups,\n    };\n  }\n\n  private processRootGroups<TProcessed, TDeferred>({\n    processor,\n    rootGroups,\n    rootsAreParallel = true,\n    currentDeferRef,\n    otherDeferGroups = undefined,\n    handledConditions,\n  }: {\n    processor: FetchGroupProcessor<TProcessed, TDeferred>,\n    rootGroups: readonly FetchGroup[],\n    rootsAreParallel: boolean,\n    unhandledGroups?: UnhandledGroups,\n    currentDeferRef?: string,\n    otherDeferGroups?: SetMultiMap<string, FetchGroup>,\n    handledConditions: Conditions,\n  }): {\n    mainSequence: TProcessed[],\n    deferred: TDeferred[],\n  } {\n    const {\n      mainSequence,\n      newState,\n      deferredGroups,\n    } = this.processRootMainGroups({ processor, rootsAreParallel, state: ProcessingState.ofReadyGroups(rootGroups), handledConditions });\n    assert(newState.next.length === 0, () => `Should not have left some ready groups, but got ${newState.next}`);\n    assert(\n      newState.unhandled.length == 0,\n      () => `Root groups:\\n${rootGroups.map((g) => ` - ${g}`).join('\\n')}\\nshould have no remaining groups unhandled, but got: ${printUnhandled(newState.unhandled)}`\n    );\n    const allDeferredGroups = new SetMultiMap<string, FetchGroup>();\n    if (otherDeferGroups) {\n      allDeferredGroups.addAll(otherDeferGroups);\n    }\n    allDeferredGroups.addAll(deferredGroups);\n\n    // We're going to handled all @defer at our \"current level\" (so at top-level, that's all the non-nested @defer),\n    // and the \"starting\" group for those defers, if any, are in `allDeferredGroups`. However, `allDeferredGroups`\n    // can actually contains defer groups that are for \"deeper\" level of @defer-nestedness, and that is because\n    // sometimes the key we need to resume a nested @defer is the same than for the current @defer (or put another way,\n    // a @defer B may be nested inside @defer A \"in the query\", but be such that we don't need anything fetched within\n    // the deferred part of A to start the deferred part of B).\n    // Long story short, we first collect the groups from `allDeferredGroups` that are _not_ in our current level, if\n    // any, and pass those to recursion call below so they can be use a their proper level of nestedness.\n    const defersInCurrent = this.deferTracking.defersInParent(currentDeferRef);\n    const handledDefersInCurrent = new Set(defersInCurrent.map((d) => d.label));\n    const unhandledDefersInCurrent = mapKeys(allDeferredGroups).filter((label) => !handledDefersInCurrent.has(label));\n    let unhandledDeferGroups: SetMultiMap<string, FetchGroup> | undefined = undefined;\n    if (unhandledDefersInCurrent.length > 0) {\n      unhandledDeferGroups = new SetMultiMap();\n      for (const label of unhandledDefersInCurrent) {\n        unhandledDeferGroups.set(label, allDeferredGroups.get(label)!);\n      }\n    }\n\n    // We now iterate on every @defer of said \"current level\". Note in particular that we may not be able to truly defer\n    // anything for some of those @defer due the limitations of what can be done at the query planner level. However, we\n    // still create `DeferNode` and `DeferredNode` in those case so that the execution can at least defer the sending of\n    // the response back (future handling of defer-passthrough will also piggy-back on this).\n    const allDeferred: TDeferred[] = [];\n    for (const defer of defersInCurrent) {\n      const groups = allDeferredGroups.get(defer.label) ?? [];\n      const { mainSequence: mainSequenceOfDefer, deferred: deferredOfDefer } = this.processRootGroups({\n        processor,\n        rootGroups: Array.from(groups),\n        rootsAreParallel: true,\n        currentDeferRef: defer.label,\n        otherDeferGroups: unhandledDeferGroups,\n        handledConditions,\n      });\n      const mainReduced = processor.reduceSequence(mainSequenceOfDefer);\n      const processed = deferredOfDefer.length === 0\n        ? mainReduced\n        : processor.reduceDefer(mainReduced, defer.subselection.get(), deferredOfDefer);\n      allDeferred.push(processor.reduceDeferred(defer, processed));\n    }\n    return { mainSequence, deferred: allDeferred };\n  }\n\n  /**\n   * Processes the \"plan\" represented by this dependency graph using the provided `processor`.\n   *\n   * @return both a \"main\" (non-deferred) part and a (potentially empty) deferred part.\n   */\n  process<TProcessed, TDeferred>(\n    processor: FetchGroupProcessor<TProcessed, TDeferred>,\n    rootKind: SchemaRootKind,\n  ): {\n    main: TProcessed,\n    deferred: TDeferred[],\n  } {\n    this.reduceAndOptimize();\n\n    const { mainSequence, deferred } = this.processRootGroups({\n      processor,\n      rootGroups: this.rootGroups.values(),\n      rootsAreParallel: rootKind === 'query',\n      handledConditions: true,\n    });\n    // Note that the return of `processRootGroups` should always be reduced as a sequence, regardless of `rootKind`.\n    // For queries, it just happens in that the majority of cases, `mainSequence` will be an array of a single element\n    // and that single element will be a parallel node of the actual roots. But there is some special cases where some\n    // while the roots are started in parallel, the overall plan shape is something like:\n    //   Root1 \\\n    //          -> Other\n    //   Root2 /\n    // And so it is a sequence, even if the roots will be queried in parallel.\n    return {\n      main: processor.reduceSequence(mainSequence),\n      deferred,\n    };\n  }\n\n  dumpOnConsole(msg?: string) {\n    if (msg) {\n      console.log(msg);\n    }\n    console.log('Groups:');\n    for (const group of this.groups) {\n      console.log(`  ${group}`);\n    }\n    console.log('Children relationships:');\n    for (const group of this.groups) {\n      const children = group.children();\n      if (children.length === 1) {\n        console.log(`  [${group.index}] => [ ${children[0]} ]`);\n      } else if (children.length !== 0) {\n        console.log(`  [${group.index}] => [\\n    ${children.join('\\n    ')}\\n  ]`);\n      }\n    }\n    console.log('Parent relationships:');\n    const printParentRelation = (rel: ParentRelation) => (\n      rel.path ? `${rel.group} (path: [${rel.path.join(', ')}])` : rel.group.toString()\n    );\n    for (const group of this.groups) {\n      const parents = group.parents();\n      if (parents.length === 1) {\n        console.log(`  [${group.index}] => [ ${printParentRelation(parents[0])} ]`);\n      } else if (parents.length !== 0) {\n        console.log(`  [${group.index}] => [\\n    ${parents.map(printParentRelation).join('\\n    ')}\\n  ]`);\n      }\n    }\n    console.log('--------');\n  }\n\n  toString() : string {\n    return this.rootGroups.values().map(g => this.toStringInternal(g, \"\")).join('\\n');\n  }\n\n  toStringInternal(group: FetchGroup, indent: string): string {\n    const children = group.children();\n    return [indent + group.subgraphName + ' <- ' + children.map((child) => child.subgraphName).join(', ')]\n      .concat(children\n        .flatMap(g => g.children().length == 0\n          ? []\n          : this.toStringInternal(g, indent + \"  \")))\n      .join('\\n');\n  }\n}\n\n/**\n * Generic interface for \"processing\" a (reduced) dependency graph of fetch groups (a `FetchDependencyGraph`).\n *\n * The processor methods will be called in a way that \"respects\" the dependency graph. More precisely, a\n * reduced fetch group dependency graph can be expressed as an alternance of parallel branches and sequences\n * of groups (the roots needing to be either parallel or sequential depending on whether we represent a `query`\n * or a `mutation`), and the processor will be called on groups in such a way.\n */\ninterface FetchGroupProcessor<TProcessed, TDeferred> {\n  onFetchGroup(group: FetchGroup, handledConditions: Conditions): TProcessed;\n  onConditions(conditions: Conditions, value: TProcessed): TProcessed;\n  reduceParallel(values: TProcessed[]): TProcessed;\n  reduceSequence(values: TProcessed[]): TProcessed;\n  reduceDeferred(deferInfo: DeferredInfo, value: TProcessed): TDeferred;\n  reduceDefer(main: TProcessed, subSelection: SelectionSet, deferredBlocks: TDeferred[]): TProcessed,\n}\n\nexport type PlanningStatistics = {\n  evaluatedPlanCount: number,\n}\n\ntype PlanningParameters<RV extends Vertex> = {\n  supergraphSchema: Schema,\n  federatedQueryGraph: QueryGraph,\n  operation: Operation,\n  statistics?: PlanningStatistics,\n  processor: FetchGroupProcessor<PlanNode | undefined, DeferredNode>\n  root: RV,\n  inconsistentAbstractTypesRuntimes: Set<string>,\n  config: Concrete<QueryPlannerConfig>,\n  overrideConditions: Map<string, boolean>,\n}\n\ninterface BuildQueryPlanOptions {\n  /**\n   * A set of labels which will be used _during query planning_ to\n   * enable/disable edges with a matching label in their override condition.\n   * Edges with override conditions require their label to be present or absent\n   * from this set in order to be traversable. These labels enable the\n   * progressive @override feature.\n   */\n  overrideConditions?: Map<string, boolean>,\n  /**\n   * Normally, we impose a limit on the number of recursive selections, which if\n   * high can cause poor query planner performance. Setting this flag to `true`\n   * will disable this limit check. This is not advised if gateway is being used\n   * to serve queries outside your control, as doing so will leave query planner\n   * susceptible to denial-of-service attacks.\n   */\n  recursiveSelectionsLimitDisabled?: boolean,\n  /**\n   * Normally, we impose a limit on the number of non-local selections, which if\n   * high can cause poor query planner performance. Setting this flag to `true`\n   * will disable this limit check. This is not advised if gateway is being used\n   * to serve queries outside your control, as doing so will leave query planner\n   * susceptible to denial-of-service attacks.\n   */\n  nonLocalSelectionsLimitDisabled?: boolean,\n}\n\nexport class QueryPlanner {\n  private readonly config: Concrete<QueryPlannerConfig>;\n  private readonly federatedQueryGraph: QueryGraph;\n  private _lastGeneratedPlanStatistics: PlanningStatistics | undefined;\n  private _defaultOverrideConditions: Map<string, boolean> = new Map();\n  // A set of the names of interface types for which at least one subgraph use an @interfaceObject to abstract\n  // that interface.\n  private readonly interfaceTypesWithInterfaceObjects = new Set<string>();\n\n  // A set of the names of interface or union types that have inconsistent \"runtime types\" across subgraphs.\n  private readonly inconsistentAbstractTypesRuntimes = new Set<string>();\n\n  constructor(\n    public readonly supergraph: Supergraph,\n    config?: QueryPlannerConfig\n  ) {\n    this.config = enforceQueryPlannerConfigDefaults(config);\n    // Validating post default-setting to catch any fat-fingering of the defaults themselves.\n    validateQueryPlannerConfig(this.config);\n    this.federatedQueryGraph = buildFederatedQueryGraph(supergraph, true);\n    this.collectInterfaceTypesWithInterfaceObjects();\n    this.collectInconsistentAbstractTypesRuntimes();\n    this.collectAllOverrideLabels();\n\n    if (this.config.debug.bypassPlannerForSingleSubgraph && this.config.incrementalDelivery.enableDefer) {\n      throw new Error(`Cannot use the \"debug.bypassPlannerForSingleSubgraph\" query planner option when @defer support is enabled`);\n    }\n  }\n\n  private collectInterfaceTypesWithInterfaceObjects() {\n    const isInterfaceObject = (name: string, schema: Schema) => {\n      const typeInSchema = schema.type(name);\n      return !!typeInSchema && isInterfaceObjectType(typeInSchema);\n    }\n\n    for (const itfType of this.supergraph.schema.interfaceTypes()) {\n      if (mapValues(this.federatedQueryGraph.sources).some((s) => isInterfaceObject(itfType.name, s))) {\n        this.interfaceTypesWithInterfaceObjects.add(itfType.name);\n      }\n    }\n  }\n\n  private collectInconsistentAbstractTypesRuntimes() {\n    const subgraphs = mapValues(this.federatedQueryGraph.sources);\n    const isInconsistent = (name: string) => {\n      // Note that we use type names since we're comparing types from different subgraphs (and so the objects themselves\n      // will not be equal).\n      let expectedRuntimes: Set<string> | undefined = undefined;\n      for (const subgraph of subgraphs) {\n        const typeInSubgraph = subgraph.type(name);\n        // This is only called for type name that are abstract in the supergraph, so it\n        // can only be an object in a subgraph if it is an @interfaceObject. And as @interfaceObject\n        // \"stand-in\" for all possible runtimes, they don't create inconsistencies by themselves\n        // and we can ignore them.\n        if (!typeInSubgraph || isObjectType(typeInSubgraph)) {\n          continue;\n        }\n\n        assert(isAbstractType(typeInSubgraph), () => `Expected type ${typeInSubgraph} to be abstract but is ${typeInSubgraph.kind}`);\n        const runtimes = possibleRuntimeTypes(typeInSubgraph);\n        if (!expectedRuntimes) {\n          expectedRuntimes = new Set(runtimes.map((t) => t.name));\n        } else if (runtimes.length !== expectedRuntimes.size || runtimes.some((t) => !expectedRuntimes?.has(t.name))) {\n          return true;\n        }\n      }\n      return false;\n    }\n\n    for (const type of this.supergraph.schema.types()) {\n      if (!isAbstractType(type)) {\n        continue;\n      }\n\n      if (isAbstractType(type) && isInconsistent(type.name)) {\n        this.inconsistentAbstractTypesRuntimes.add(type.name);\n      }\n    }\n  }\n\n  private collectAllOverrideLabels() {\n    // inspect every join__field directive application in the supergraph and collect all `overrideLabel` argument values\n    const applications = this.supergraph.schema.directives()\n      .find((d) => d.name === 'join__field')\n      ?.applications() ?? new Set();\n    this._defaultOverrideConditions = new Map(\n      Array.from(applications)\n        .map((application) => application.arguments().overrideLabel)\n        .filter(Boolean)\n        .map(label => [label, false])\n    );\n  }\n\n  buildQueryPlan(operation: Operation, options?: BuildQueryPlanOptions): QueryPlan {\n    if (operation.selectionSet.isEmpty()) {\n      return { kind: 'QueryPlan' };\n    }\n\n    if (!options?.recursiveSelectionsLimitDisabled) {\n      // Before running anything that might expand named fragments recursively,\n      // we ensure that doing so won't generate too many selections.\n      //\n      // This is done before the single-subgraph bypass to avoid those subgraphs\n      // being sent such a query. For gateway, note that top-level introspection\n      // fields are not split off from the query given to query planning, and\n      // this allows the check below to also impose a limit on the introspection\n      // part of queries. (Which is important, since query plan execution in\n      // gateway expands introspection fragments at the moment.)\n      validateRecursiveSelections(operation);\n    }\n\n    const isSubscription = operation.rootKind === 'subscription';\n\n    const statistics: PlanningStatistics = {\n      evaluatedPlanCount: 0,\n    };\n    this._lastGeneratedPlanStatistics = statistics;\n\n    if (this.config.debug.bypassPlannerForSingleSubgraph) {\n      // A federated query graph always have 1 more sources than there is subgraph, because the root vertices\n      // belong to no subgraphs and use a special source named '_'. So we skip that \"fake\" source.\n      const subgraphs = mapKeys(this.federatedQueryGraph.sources).filter((name) => name !== FEDERATED_GRAPH_ROOT_SOURCE);\n      if (subgraphs.length === 1) {\n        const operationDocument = operationToDocument(operation);\n        const node: FetchNode = {\n          kind: 'Fetch',\n          serviceName: subgraphs[0],\n          variableUsages: operation.variableDefinitions.definitions().map(v => v.variable.name),\n          operation: stripIgnoredCharacters(print(operationDocument)),\n          operationKind: schemaRootKindToOperationKind(operation.rootKind),\n          operationName: operation.name,\n          operationDocumentNode: this.config.exposeDocumentNodeInFetchNode ? operationDocument : undefined,\n        };\n        return { kind: 'QueryPlan', node  };\n      }\n    }\n\n    const reuseQueryFragments = this.config.reuseQueryFragments ?? true;\n    let fragments = operation.fragments;\n    if (fragments && !fragments.isEmpty() && reuseQueryFragments) {\n      // For all subgraph fetches we query `__typename` on every abstract types (see `FetchGroup.toPlanNode`) so if we want\n      // to have a chance to reuse fragments, we should make sure those fragments also query `__typename` for every abstract type.\n      fragments = addTypenameFieldForAbstractTypesInNamedFragments(fragments);\n    } else {\n      fragments = undefined;\n    }\n\n    // We expand all fragments. This might merge a number of common branches and save us some work, and we're\n    // going to expand everything during the algorithm anyway. We'll re-optimize subgraph fetches with fragments\n    // later if possible (which is why we saved them above before expansion).\n    operation = operation.expandAllFragments();\n    operation = withoutIntrospection(operation);\n    operation = this.withSiblingTypenameOptimizedAway(operation);\n\n    let assignedDeferLabels: Set<string> | undefined = undefined;\n    let hasDefers = false;\n    let deferConditions: SetMultiMap<string, string> | undefined = undefined;\n    if (this.config.incrementalDelivery.enableDefer) {\n      ({ operation, hasDefers, assignedDeferLabels, deferConditions } = operation.withNormalizedDefer());\n      if (isSubscription && hasDefers) {\n        throw new Error(`@defer is not supported on subscriptions`);\n      }\n    } else {\n      // If defer is not enabled, we remove all @defer from the query. This feels cleaner do this once here than\n      // having to guard all the code dealing with defer later, and is probably less error prone too (less likely\n      // to end up passing through a @defer to a subgraph by mistake).\n      operation = operation.withoutDefer();\n    }\n\n    debug.group(() => `Computing plan for\\n${operation}`);\n    if (operation.selectionSet.isEmpty()) {\n      debug.groupEnd('Empty plan');\n      return { kind: 'QueryPlan' };\n    }\n\n    const root = this.federatedQueryGraph.root(operation.rootKind);\n    assert(root, () => `Shouldn't have a ${operation.rootKind} operation if the subgraphs don't have a ${operation.rootKind} root`);\n    const processor = fetchGroupToPlanProcessor({\n      config: this.config,\n      variableDefinitions: operation.variableDefinitions,\n      fragments: fragments ? new RebasedFragments(fragments) : undefined,\n      operationName: operation.name,\n      directives: operation.appliedDirectives,\n      assignedDeferLabels,\n    });\n\n    // Default all override conditions to false (not overridden) in case any\n    // aren't provided by the caller\n    const overrideConditions = new Map(this._defaultOverrideConditions);\n    if (options?.overrideConditions) {\n      for (const [label, value] of options.overrideConditions) {\n        overrideConditions.set(label, value);\n      }\n    }\n\n    const parameters: PlanningParameters<RootVertex> = {\n      supergraphSchema: this.supergraph.schema,\n      federatedQueryGraph: this.federatedQueryGraph,\n      operation,\n      processor,\n      root,\n      statistics,\n      inconsistentAbstractTypesRuntimes: this.inconsistentAbstractTypesRuntimes,\n      config: this.config,\n      overrideConditions,\n    }\n\n    let rootNode: PlanNode | SubscriptionNode | undefined;\n    let nonLocalSelectionsState = options?.nonLocalSelectionsLimitDisabled\n      ? null\n      : new NonLocalSelectionsState();\n    if (deferConditions && deferConditions.size > 0) {\n      assert(hasDefers, 'Should not have defer conditions without @defer');\n      rootNode = computePlanForDeferConditionals({\n        parameters,\n        deferConditions,\n        nonLocalSelectionsState,\n      })\n    } else {\n      rootNode = computePlanInternal({\n        parameters,\n        hasDefers,\n        nonLocalSelectionsState,\n      });\n    }\n\n    // If this is a subscription, we want to make sure that we return a SubscriptionNode rather than a PlanNode\n    // We potentially will need to separate \"primary\" from \"rest\"\n    // Note that if it is a subscription, we are guaranteed that nothing is deferred.\n    if (rootNode && isSubscription) {\n      switch (rootNode.kind) {\n        case 'Fetch': {\n          rootNode = {\n            kind: 'Subscription',\n            primary: rootNode,\n          };\n        }\n        break;\n        case 'Sequence': {\n          const [primary, ...rest] = rootNode.nodes;\n          assert(primary.kind === 'Fetch', 'Primary node of a subscription is not a Fetch');\n          rootNode = {\n            kind: 'Subscription',\n            primary,\n            rest: {\n              kind: 'Sequence',\n              nodes: rest,\n            },\n          };\n        }\n        break;\n        default:\n          throw new Error(`Unexpected top level PlanNode kind: '${rootNode.kind}' when processing subscription`);\n      }\n    }\n\n    debug.groupEnd('Query plan computed');\n\n    return { kind: 'QueryPlan', node: rootNode };\n  }\n\n  /**\n   * Modifies the provided selection set to optimize the handling of __typename selection for query planning.\n   *\n   * Explicit querying of __typename can create some inefficiency for the query planning process if not\n   * handled specially. More precisely, query planning performance is directly proportional to how many possible\n   * plans a query has, since it compute all those options to compare them. Further, the number of possible\n   * plans double for every field for which there is a choice, so miminizing the number of field for which we\n   * have choices is paramount.\n   *\n   * And for a given type, __typename can always be provided by any subgraph having that type (it works as a\n   * kind of \"always @shareable\" field), so it often creates theoretical choices. In practice it doesn't\n   * matter which subgraph we use for __typename: we're happy to use whichever subgraph we're using for\n   * the \"other\" fields queried for the type. But the default query planning algorithm does not know how\n   * to do that.\n   *\n   * Let's note that this isn't an issue in most cases, because the query planning algorithm knows not to\n   * consider \"obviously\" inefficient paths. Typically, querying the __typename of an entity is generally\n   * ok because when looking at a path, the query planning algorithm always favor getting a field \"locally\"\n   * if it can (which it always can for __typename) and ignore alternative that would jump subgraphs.\n   *\n   * But this can still be a performance issue when a __typename is queried after a @shareable field: in\n   * that case, the algorithm would consider getting the __typename from each version of the @shareable\n   * field and this would add to the options to consider. But as, again, __typename can always be fetched\n   * from any subgraph, it's more efficient to ignore those options and simply get __typename from whichever\n   * subgraph we get any other of the other field requested (on the type on which we request __typename).\n   *\n   * It is unclear how to do this cleanly with the current planning algorithm however, so this method\n   * implements an alternative: to avoid the query planning spending time of exploring options for\n   * __typename, we \"remove\" the __typename selections from the operation. But of course, we still\n   * need to ensure that __typename is effectively queried, so as we do that removal, we also \"tag\"\n   * one of the \"sibling\" selection (using `addAttachment`) to remember that __typename needs to\n   * be added back eventually. The core query planning algorithm will ignore that tag, and because\n   * __typename has been otherwise removed, we'll save any related work. But as we build the final\n   * query plan, we'll check back for those \"tags\" (see `getAttachment` in `computeGroupsForTree`),\n   * and when we fine one, we'll add back the request to __typename. As this only happen after the\n   * query planning algorithm has computed all choices, we achieve our goal of not considering useless\n   * choices due to __typename. Do note that if __typename is the \"only\" selection of some selection\n   * set, then we leave it untouched, and let the query planning algorithm treat it as any other\n   * field. We have no other choice in that case, and that's actually what we want.\n   */\n  private optimizeSiblingTypenames(selectionSet: SelectionSet): SelectionSet {\n    const selections = selectionSet.selections();\n    const parentType = selectionSet.parentType;\n    const parentMaybeInterfaceObject = this.interfaceTypesWithInterfaceObjects.has(parentType.name);\n    let updatedSelections: Selection[] | undefined = undefined;\n    let typenameSelection: Selection | undefined = undefined;\n    // We remember the first non-__typename field selection found. This is the one we'll \"tag\" if we do find a __typename\n    // occurrence that we want to remove. We only use for _field_ selections because at the stage where this is applied,\n    // we cannot be sure the selection set is \"minimized\" and so some of the inline fragments may end up being eliminated\n    // (for instance, the fragment condition could be \"less precise\" than the parent type, in which case query planning\n    // will ignore it) and tagging those could lose the tagging.\n    let firstFieldSelection: FieldSelection | undefined = undefined;\n    let firstFieldIndex = -1;\n    for (let i = 0; i < selections.length; i++) {\n      const selection = selections[i];\n      let updated: Selection | undefined;\n      if (\n        !typenameSelection\n        && selection.kind === 'FieldSelection'\n        && selection.isPlainTypenameField()\n        && !parentMaybeInterfaceObject\n      ) {\n        // The reason we check for `!typenameSelection` is that due to aliasing, there can be more than one __typename selection\n        // in theory, and so this will only kick in on the first one. This is fine in practice: it only means that if there _is_\n        // 2 selection of __typename, then we won't optimise things as much as we could, but there is no practical reason\n        // whatsoever to have 2 selection of __typename in the first place, so not being optimal is moot.\n        //\n        // Also note that we do not remove __typename if on (interface) types that are implemented by\n        // an @interfaceObject in some subgraph: the reason is that those types are an exception to the rule\n        // that __typename can be resolved from _any_ subgraph, as the __typename of @interfaceObject is not\n        // one we should return externally and so cannot fulfill the user query.\n        updated = undefined;\n        typenameSelection = selection;\n      } else {\n        const updatedSubSelection = selection.selectionSet ? this.optimizeSiblingTypenames(selection.selectionSet) : undefined;\n        if (updatedSubSelection === selection.selectionSet) {\n          updated = selection;\n        } else {\n          // Note that updateSubSelection can genuinely be undefined for leaf fields, but the type system can track it properly\n          // so we force it to accept it with `!` (to avoid it, we would have to duplicate the code for field and fragment\n          // separately, and that doesn't feel like it would be cleaner).\n          updated = selection.withUpdatedSelectionSet(updatedSubSelection!);\n        }\n        if (!firstFieldSelection && updated.kind === 'FieldSelection') {\n          firstFieldSelection = updated;\n          firstFieldIndex = updatedSelections\n            ? updatedSelections.length\n            : i;\n        }\n      }\n\n      // As soon as we find a selection that is discarded or modified, we need to create new selection set so we\n      // first copy everything up to this selection.\n      if (updated !== selection && !updatedSelections) {\n        updatedSelections = [];\n        for (let j = 0; j < i; j++) {\n          updatedSelections.push(selections[j]);\n        }\n      }\n      // Record the (potentially updated) selection if we're creating a new selection set, and said selection is not discarded.\n      if (updatedSelections && !!updated) {\n        updatedSelections.push(updated);\n      }\n    }\n\n    if (!updatedSelections || updatedSelections.length === 0) {\n      // No selection was modified at all, or there is no other field selection than __typename one.\n      // In both case, we just return the current selectionSet unmodified.\n      return selectionSet;\n    }\n\n    // If we have some __typename selection that was removed but need to be \"remembered\" for later,\n    // \"tag\" whichever first field selection is still part of the operation.\n    if (typenameSelection) {\n      if (firstFieldSelection) {\n        // Note that as we tag the element, we also record the alias used if any since that needs to be preserved.\n        updatedSelections[firstFieldIndex] = firstFieldSelection.withAttachment(SIBLING_TYPENAME_KEY, typenameSelection.element.alias ? typenameSelection.element.alias : '');\n      } else {\n        // If we have no other field selection, then we can't optimize __typename and we need to add\n        // it back to the updated subselections (we add it first because that's usually where we\n        // put __typename by convention).\n        updatedSelections = [typenameSelection as Selection].concat(updatedSelections);\n      }\n    }\n    return new SelectionSetUpdates().add(updatedSelections).toSelectionSet(selectionSet.parentType);\n  }\n\n  /**\n   * Applies `optimizeSiblingTypenames` to the provided operation selection set.\n   */\n  private withSiblingTypenameOptimizedAway(operation: Operation): Operation {\n    const updatedSelectionSet = this.optimizeSiblingTypenames(operation.selectionSet);\n    if (updatedSelectionSet === operation.selectionSet) {\n      return operation;\n    }\n    return new Operation(\n      operation.schema(),\n      operation.rootKind,\n      updatedSelectionSet,\n      operation.variableDefinitions,\n      operation.fragments,\n      operation.name,\n      operation.appliedDirectives,\n    );\n  }\n\n  lastGeneratedPlanStatistics(): PlanningStatistics | undefined {\n    return this._lastGeneratedPlanStatistics;\n  }\n}\n\nfunction computePlanInternal({\n  parameters,\n  hasDefers,\n  nonLocalSelectionsState,\n}: {\n  parameters: PlanningParameters<RootVertex>,\n  hasDefers: boolean,\n  nonLocalSelectionsState: NonLocalSelectionsState | null,\n}): PlanNode | undefined {\n  let main: PlanNode | undefined = undefined;\n  let primarySelection: MutableSelectionSet | undefined = undefined;\n  let deferred: DeferredNode[] = [];\n\n  const { operation, processor } = parameters;\n  if (operation.rootKind === 'mutation') {\n    const dependencyGraphs = computeRootSerialDependencyGraphForMutation(\n      parameters,\n      hasDefers,\n      nonLocalSelectionsState,\n    );\n    for (const dependencyGraph of dependencyGraphs) {\n      const { main: localMain, deferred: localDeferred } = dependencyGraph.process(processor, operation.rootKind);\n      // Note that `reduceSequence` \"flatten\" sequence if needs be.\n      main = main ? processor.reduceSequence([main, localMain]) : localMain;\n      deferred = deferred.concat(localDeferred);\n      const newSelection = dependencyGraph.deferTracking.primarySelection;\n      if (newSelection) {\n        if (primarySelection) {\n          primarySelection.updates().add(newSelection.get());\n        } else {\n          primarySelection = newSelection.clone();\n        }\n      }\n    }\n  } else {\n    const dependencyGraph =  computeRootParallelDependencyGraph(\n      parameters,\n      0,\n      hasDefers,\n      nonLocalSelectionsState,\n    );\n    ({ main, deferred } = dependencyGraph.process(processor, operation.rootKind));\n    primarySelection = dependencyGraph.deferTracking.primarySelection;\n  }\n  if (deferred.length > 0) {\n    assert(primarySelection, 'Should have had a primary selection created');\n    return processor.reduceDefer(main, primarySelection.get(), deferred);\n  }\n  return main;\n}\n\nfunction computePlanForDeferConditionals({\n  parameters,\n  deferConditions,\n  nonLocalSelectionsState,\n}: {\n  parameters: PlanningParameters<RootVertex>,\n  deferConditions: SetMultiMap<string, string>,\n  nonLocalSelectionsState: NonLocalSelectionsState | null,\n}): PlanNode | undefined {\n  return generateConditionNodes(\n    parameters.operation,\n    Array.from(deferConditions.entries()),\n    0,\n    (op) => computePlanInternal({\n      parameters: {\n        ...parameters,\n        operation: op,\n      },\n      hasDefers: true,\n      nonLocalSelectionsState,\n    }),\n  );\n}\n\nfunction generateConditionNodes(\n  operation: Operation,\n  conditions: [string, Set<string>][],\n  idx: number,\n  onFinalOperation: (operation: Operation) => PlanNode | undefined,\n): PlanNode | undefined {\n  if (idx >= conditions.length) {\n    return onFinalOperation(operation);\n  }\n\n  const [variable, labels] = conditions[idx];\n  const ifOperation = operation;\n  const elseOperation = operation.withoutDefer(labels);\n  return {\n    kind: 'Condition',\n    condition: variable,\n    // Note: for the `<variable>: true` case, we don't modify the operation at all. In theory, it would be cleaner to\n    // modify the operation to remove the `if` condition on all the `@defer` from `labels` (or modify it to hard-coded 'true'),\n    // to make it clear those @defer are \"enabled\" on that branch. In practice though, the rest of the query planning\n    // completely ignores the `if` argument, so leaving it in untouched ends up equivalent and that saves us a few cyclesf.\n    ifClause: generateConditionNodes(ifOperation, conditions, idx+1, onFinalOperation),\n    elseClause: generateConditionNodes(elseOperation, conditions, idx+1, onFinalOperation),\n  };\n}\n\nfunction isIntrospectionSelection(selection: Selection): boolean {\n  return selection.kind == 'FieldSelection' && selection.element.definition.isIntrospectionField();\n}\n\nfunction mapOptionsToSelections<RV extends Vertex>(\n  selectionSet: SelectionSet,\n  options: SimultaneousPathsWithLazyIndirectPaths<RV>[]\n): [Selection, SimultaneousPathsWithLazyIndirectPaths<RV>[]][]  {\n  // We reverse the selections because we're going to pop from `openPaths` and this ensure we end up handling things in the query order.\n  return selectionSet.selectionsInReverseOrder().map(node => [node, options]);\n}\n\nfunction possiblePlans(closedBranches: ClosedBranch<any>[]): bigint {\n  let totalCombinations = BigInt(1);\n  for (let i = 0; i < closedBranches.length; ++i){\n    const eltSize = BigInt(closedBranches[i].length);\n    if (eltSize === BigInt(0)) {\n      // This would correspond to not being to find *any* path for a particular queried field, which means we have no plan\n      // for the overall query. Now, this shouldn't happen in practice if composition validation has been run successfully\n      // (and is not buggy), since the goal of composition validation is exactly to ensure we can never run into this path.\n      // In any case, we will throw later if that happens, but let's just return the proper result here, which is no plan at all.\n      return BigInt(0);\n    }\n    totalCombinations *= eltSize;\n  }\n  return totalCombinations;\n}\n\nfunction sum(arr: number[]): number {\n  return arr.reduce((a, b) => a + b, 0);\n}\n\nfunction selectionCost(selection?: SelectionSet, depth: number = 1): number {\n  // The cost is essentially the number of elements in the selection, but we make deeped element cost a tiny bit more, mostly to make things a tad more\n  // deterministic (typically, if we have an interface with a single implementation, then we can have a choice between a query plan that type-explode a\n  // field of the interface and one that doesn't, and both will be almost identical, except that the type-exploded field will be a different depth; by\n  // favoring lesser depth in that case, we favor not type-exploding).\n  //return selection ? 10 + depth : 0;\n  return selection ? selection.selections().reduce((prev, curr) => prev + depth + selectionCost(curr.selectionSet, depth + 1), 0) : 0;\n}\n\nfunction withoutIntrospection(operation: Operation): Operation {\n  // Note that, because we only apply this to the top-level selections, we skip all introspection, including\n  // __typename. In general, we don't want o ignore __typename during query plans, but at top-level, we\n  // can let the gateway execution deal with it rather than querying some service for that.\n  if (!operation.selectionSet.selections().some(isIntrospectionSelection)) {\n    return operation\n  }\n\n  return new Operation(\n    operation.schema(),\n    operation.rootKind,\n    operation.selectionSet.lazyMap((s) => isIntrospectionSelection(s) ? undefined : s),\n    operation.variableDefinitions,\n    operation.fragments,\n    operation.name,\n    operation.appliedDirectives,\n  );\n}\n\nfunction computeRootParallelDependencyGraph(\n  parameters: PlanningParameters<RootVertex>,\n  startFetchIdGen: number,\n  hasDefer: boolean,\n  nonLocalSelectionsState: NonLocalSelectionsState | null,\n): FetchDependencyGraph {\n  return computeRootParallelBestPlan(\n    parameters,\n    parameters.operation.selectionSet,\n    startFetchIdGen,\n    hasDefer,\n    nonLocalSelectionsState,\n  )[0];\n}\n\nfunction computeRootParallelBestPlan(\n  parameters: PlanningParameters<RootVertex>,\n  selection: SelectionSet,\n  startFetchIdGen: number,\n  hasDefers: boolean,\n  nonLocalSelectionsState: NonLocalSelectionsState | null,\n): [FetchDependencyGraph, OpPathTree<RootVertex>, number] {\n  const planningTraversal = new QueryPlanningTraversal(\n    parameters,\n    selection,\n    startFetchIdGen,\n    hasDefers,\n    parameters.root.rootKind,\n    defaultCostFunction,\n    emptyContext,\n    parameters.config.typeConditionedFetching,\n    nonLocalSelectionsState,\n    null,\n  );\n  const plan = planningTraversal.findBestPlan();\n  // Getting no plan means the query is essentially unsatisfiable (it's a valid query, but we can prove it will never return a result),\n  // so we just return an empty plan.\n  return plan ?? createEmptyPlan(parameters);\n}\n\nfunction computeRootParallelBestPlanForMutation(\n  parameters: PlanningParameters<RootVertex>,\n  selection: SelectionSet,\n  startFetchIdGen: number,\n  hasDefers: boolean,\n  nonLocalSelectionsState: NonLocalSelectionsState | null,\n): [FetchDependencyGraph, OpPathTree<RootVertex>, number] {\n  let bestPlan:\n    | [FetchDependencyGraph, OpPathTree<RootVertex>, number]\n    | undefined;\n  const mutationSubgraphs = parameters.federatedQueryGraph\n    .outEdges(parameters.root).map((edge) => edge.tail.source);\n  for (const mutationSubgraph of mutationSubgraphs) {\n    const planningTraversal = new QueryPlanningTraversal(\n      parameters,\n      selection,\n      startFetchIdGen,\n      hasDefers,\n      parameters.root.rootKind,\n      defaultCostFunction,\n      emptyContext,\n      parameters.config.typeConditionedFetching,\n      nonLocalSelectionsState,\n      mutationSubgraph,\n    );\n    const plan = planningTraversal.findBestPlan();\n    if (!bestPlan || (plan && plan[2] < bestPlan[2])) {\n      bestPlan = plan;\n    }\n  }\n  if (!bestPlan) {\n    throw new Error(\n      `Was not able to plan ${parameters.operation.toString(false, false)} starting from a single subgraph: This shouldn't have happened.`,\n    );\n  }\n  return bestPlan;\n}\n\nfunction createEmptyPlan(\n  parameters: PlanningParameters<RootVertex>,\n): [FetchDependencyGraph, OpPathTree<RootVertex>, number] {\n  const { supergraphSchema, federatedQueryGraph, root, config } = parameters;\n  return [\n    FetchDependencyGraph.create(supergraphSchema, federatedQueryGraph, 0, undefined, config.generateQueryFragments),\n    PathTree.createOp(federatedQueryGraph, root),\n    0\n  ];\n}\n\nfunction onlyRootSubgraph(graph: FetchDependencyGraph): string {\n  const subgraphs = graph.rootSubgraphs();\n  assert(subgraphs.length === 1, () => `${graph} should have only one root, but has [${graph.rootSubgraphs()}]`);\n  return subgraphs[0];\n}\n\nfunction computeRootSerialDependencyGraphForMutation(\n  parameters: PlanningParameters<RootVertex>,\n  hasDefers: boolean,\n  nonLocalSelectionsState: NonLocalSelectionsState | null,\n): FetchDependencyGraph[] {\n  const { supergraphSchema, federatedQueryGraph, operation, root } = parameters;\n  const rootType = hasDefers ? supergraphSchema.schemaDefinition.rootType(root.rootKind) : undefined;\n  // We have to serially compute a plan for each top-level selection.\n  const splittedRoots = splitTopLevelFields(operation.selectionSet);\n  const graphs: FetchDependencyGraph[] = [];\n  let startingFetchId = 0;\n  let [prevDepGraph, prevPaths] = computeRootParallelBestPlanForMutation(\n    parameters,\n    splittedRoots[0],\n    startingFetchId,\n    hasDefers,\n    nonLocalSelectionsState,\n  );\n  let prevSubgraph = onlyRootSubgraph(prevDepGraph);\n  for (let i = 1; i < splittedRoots.length; i++) {\n    const [newDepGraph, newPaths] = computeRootParallelBestPlanForMutation(\n      parameters,\n      splittedRoots[i],\n      prevDepGraph.nextFetchId(),\n      hasDefers,\n      nonLocalSelectionsState,\n    );\n    const newSubgraph = onlyRootSubgraph(newDepGraph);\n    if (prevSubgraph === newSubgraph) {\n      // The new operation (think 'mutation' operation) is on the same subgraph than the previous one, so we can concat them in a single fetch\n      // and rely on the subgraph to enforce seriability. Do note that we need to `concat()` and not `merge()` because if we have\n      // mutation Mut {\n      //    mut1 {...}\n      //    mut2 {...}\n      //    mut1 {...}\n      // }\n      // then we should _not_ merge the 2 `mut1` fields (contrarily to what happens on queried fields).\n      prevPaths = prevPaths.concat(newPaths);\n      prevDepGraph = computeRootFetchGroups(\n        FetchDependencyGraph.create(\n          supergraphSchema,\n          federatedQueryGraph,\n          startingFetchId,\n          rootType,\n          parameters.config.generateQueryFragments,\n        ),\n        prevPaths,\n        root.rootKind,\n        parameters.config.typeConditionedFetching\n      );\n    } else {\n      startingFetchId = prevDepGraph.nextFetchId();\n      graphs.push(prevDepGraph);\n      [prevDepGraph, prevPaths, prevSubgraph] = [newDepGraph, newPaths, newSubgraph];\n    }\n  }\n  graphs.push(prevDepGraph);\n  return graphs;\n}\n\nfunction splitTopLevelFields(selectionSet: SelectionSet): SelectionSet[] {\n  return selectionSet.selections().flatMap(selection => {\n    if (selection.kind === 'FieldSelection') {\n      return [selectionSetOf(selectionSet.parentType, selection)];\n    } else {\n      return splitTopLevelFields(selection.selectionSet).map(s => selectionSetOfElement(selection.element, s));\n    }\n  });\n}\n\nfunction toValidGraphQLName(subgraphName: string): string {\n  // We have almost no limitations on subgraph names, so we cannot use them inside query names\n  // without some cleaning up. GraphQL names can only be: [_A-Za-z][_0-9A-Za-z]*.\n  // To do so, we:\n  //  1. replace '-' by '_' because the former is not allowed but it's probably pretty\n  //   common and using the later should be fairly readable.\n  //  2. remove any character in what remains that is not allowed.\n  //  3. Unsure the first character is not a number, and if it is, add a leading `_`.\n  // Note that this could theoretically lead to substantial changes to the name but should\n  // work well in practice (and if it's a huge problem for someone, we can change it).\n  const sanitized = subgraphName\n    .replace(/-/ig, '_')\n    .replace(/[^_0-9A-Za-z]/ig, '');\n  return sanitized.match(/^[0-9].*/i) ? '_' + sanitized : sanitized;\n}\n\nfunction sanitizeAndPrintSubselection(subSelection: SelectionSet): string | undefined {\n  return subSelection.withoutEmptyBranches()?.toString();\n}\n\nfunction fetchGroupToPlanProcessor({\n  config,\n  variableDefinitions,\n  fragments,\n  operationName,\n  directives,\n  assignedDeferLabels,\n}: {\n  config: Concrete<QueryPlannerConfig>,\n  variableDefinitions: VariableDefinitions,\n  fragments?: RebasedFragments,\n  operationName?: string,\n  directives?: readonly Directive<any>[],\n  assignedDeferLabels?: Set<string>,\n}): FetchGroupProcessor<PlanNode | undefined, DeferredNode> {\n  let counter = 0;\n  return {\n    onFetchGroup: (group: FetchGroup, handledConditions: Conditions) => {\n      const opName = operationName ? `${operationName}__${toValidGraphQLName(group.subgraphName)}__${counter++}` : undefined;\n      return group.toPlanNode(config, handledConditions, variableDefinitions, fragments, opName, directives);\n    },\n    onConditions: (conditions: Conditions, value: PlanNode | undefined) => {\n      if (!value) {\n        return undefined;\n      }\n      if (isConstantCondition(conditions)) {\n        // Note that currently `ConditionNode` only works for variables (`ConditionNode.condition` is expected to be a variable name\n        // and nothing else). We could change that, but really, why have a trivial `ConditionNode` when we can optimise things righ away.\n        return conditions ? value : undefined;\n      } else {\n        return conditions.reduce<PlanNode>(\n          (node, condition) => ({\n            kind: 'Condition',\n            condition: condition.variable.name,\n            ifClause: condition.negated ? undefined : node,\n            elseClause: condition.negated ? node : undefined,\n          }),\n          value,\n        );\n      }\n    },\n    reduceParallel: (values: (PlanNode | undefined)[]) => flatWrapNodes('Parallel', values),\n    reduceSequence: (values: (PlanNode | undefined)[]) => flatWrapNodes('Sequence', values),\n    reduceDeferred: (deferInfo: DeferredInfo, value: PlanNode | undefined): DeferredNode => ({\n      depends: [...deferInfo.dependencies].map((id) => ({ id })),\n      label: assignedDeferLabels?.has(deferInfo.label) ? undefined : deferInfo.label,\n      queryPath: operationPathToStringPath(deferInfo.path.full()),\n      // Note that if the deferred block has nested @defer, then the `value` is going to be a `DeferNode` and we'll\n      // use it's own `subselection`, so we don't need it here.\n      subselection: deferInfo.deferred.size === 0 ? sanitizeAndPrintSubselection(deferInfo.subselection.get()) : undefined,\n      node: value,\n    }),\n    reduceDefer: (main: PlanNode | undefined, subselection: SelectionSet, deferredBlocks: DeferredNode[]) => ({\n      kind: 'Defer',\n      primary: {\n        subselection: sanitizeAndPrintSubselection(subselection),\n        node: main,\n      },\n      deferred: deferredBlocks,\n    }),\n  };\n}\n\n// Wraps the given nodes in a ParallelNode or SequenceNode, unless there's only\n// one node, in which case it is returned directly. Any nodes of the same kind\n// in the given list have their sub-nodes flattened into the list: ie,\n// flatWrapNodes('Sequence', [a, flatWrapNodes('Sequence', b, c), d]) returns a SequenceNode\n// with four children.\nfunction flatWrapNodes(\n  kind: ParallelNode['kind'] | SequenceNode['kind'],\n  nodes: (PlanNode | undefined)[],\n): PlanNode | undefined {\n  const filteredNodes = nodes.filter((n) => !!n) as PlanNode[];\n  if (filteredNodes.length === 0) {\n    return undefined;\n  }\n  if (filteredNodes.length === 1) {\n    return filteredNodes[0];\n  }\n  return {\n    kind,\n    nodes: filteredNodes.flatMap((n) => n.kind === kind ? n.nodes : [n]),\n  };\n}\n\nfunction addTypenameFieldForAbstractTypesInNamedFragments(fragments: NamedFragments): NamedFragments {\n  // This method is a bit tricky due to potentially nested fragments. More precisely, suppose that\n  // we have:\n  //   fragment MyFragment on T {\n  //     a {\n  //       b {\n  //         ...InnerB\n  //       }\n  //     }\n  //   }\n  //\n  //   fragment InnerB on B {\n  //     __typename\n  //     x\n  //     y\n  //   }\n  // then if we were to \"naively\" add `__typename`, the first fragment would end up being:\n  //   fragment MyFragment on T {\n  //     a {\n  //       __typename\n  //       b {\n  //         __typename\n  //         ...InnerX\n  //       }\n  //     }\n  //   }\n  // but that's not ideal because the inner-most `__typename` is already within `InnerX`. And that\n  // gets in the way to re-adding fragments (the `SelectionSet.optimize` method) because if we start\n  // with:\n  //   {\n  //     a {\n  //       __typename\n  //       b {\n  //         __typename\n  //         x\n  //         y\n  //       }\n  //     }\n  //   }\n  // and add `InnerB` first, we get:\n  //   {\n  //     a {\n  //       __typename\n  //       b {\n  //         ...InnerB\n  //       }\n  //     }\n  //   }\n  // and it becomes tricky to recognize the \"updated-with-typename\" version of `MyFragment` now (we \"seem\"\n  // to miss a `__typename`).\n  //\n  // Anyway, to avoid this issue, what we do is that for every fragment, we:\n  //  1. expand any nested fragments in its selection.\n  //  2. add `__typename` where we should in that expanded selection.\n  //  3. re-optimize all fragments (using the \"updated-with-typename\" versions).\n  // which is what `mapToExpandedSelectionSets` gives us.\n  assert(!fragments.isEmpty(), 'Should not pass empty fragments to this method');\n  const updated = fragments.mapToExpandedSelectionSets(addTypenameFieldForAbstractTypes);\n  assert(updated, 'No fragments should have been removed');\n  return updated;\n}\n\n/**\n * Given a selection select (`selectionSet`) and given a set of directive applications that can be eliminated (`unneededDirectives`; in\n * practice those are conditionals (@skip and @include) already accounted for), returns an equivalent selection set but with unecessary\n * \"starting\" fragments having the unneeded condition/directives removed.\n */\nfunction removeUnneededTopLevelFragmentDirectives(\n  selectionSet: SelectionSet,\n  unneededDirectives: Directive<any, any>[],\n): SelectionSet {\n  return selectionSet.lazyMap((selection) => {\n    if (selection.kind !== 'FragmentSelection') {\n      return selection;\n    }\n\n    const fragment = selection.element;\n    const fragmentType = fragment.typeCondition;\n    if (!fragmentType) {\n      return selection;\n    }\n\n    let neededDirectives: Directive<any>[] = [];\n    if (fragment.appliedDirectives.length > 0) {\n      neededDirectives = directiveApplicationsSubstraction(fragment.appliedDirectives, unneededDirectives);\n    }\n\n    // We recurse, knowing that we'll stop as soon a we hit field selections, so this only cover the fragments\n    // at the \"top-level\" of the set.\n    const updated = removeUnneededTopLevelFragmentDirectives(selection.selectionSet, unneededDirectives);\n    if (neededDirectives.length === fragment.appliedDirectives.length) {\n      // We need all the directives that the fragment has. Return it unchanged.\n      return selection.selectionSet === updated ? selection : selection.withUpdatedSelectionSet(updated);\n    }\n\n    // We can skip some of the fragment directives directive.\n    return selection.withUpdatedComponents(fragment.withUpdatedDirectives(neededDirectives), updated);\n  });\n}\n\nfunction schemaRootKindToOperationKind(operation: SchemaRootKind): OperationTypeNode {\n  switch(operation) {\n    case \"query\": return OperationTypeNode.QUERY;\n    case \"mutation\": return OperationTypeNode.MUTATION;\n    case \"subscription\": return  OperationTypeNode.SUBSCRIPTION;\n  }\n}\n\nfunction findAndRemoveInPlace<T>(predicate: (v: T) => boolean, array: T[]): number {\n  const idx = array.findIndex((v) => predicate(v));\n  if (idx >= 0) {\n    array.splice(idx, 1);\n  }\n  return idx;\n}\n\nfunction sameMergeAt(m1: ResponsePath | undefined, m2: ResponsePath | undefined): boolean {\n  if (!m1) {\n    return !m2;\n  }\n  if (!m2) {\n    return false;\n  }\n  return arrayEquals(m1, m2);\n}\n\nfunction concatPathsInParents(first: OperationPath | undefined, second: OperationPath | undefined): OperationPath | undefined  {\n  return first && second ? concatOperationPaths(first, second) : undefined;\n}\n\nfunction samePathsInParents(first: OperationPath | undefined, second: OperationPath | undefined): boolean  {\n  if (!first) {\n    return !second;\n  }\n  return !!second && sameOperationPaths(first, second);\n}\n\nfunction computeRootFetchGroups(dependencyGraph: FetchDependencyGraph, pathTree: OpRootPathTree, rootKind: SchemaRootKind, typeConditionedFetching: boolean): FetchDependencyGraph {\n  // The root of the pathTree is one of the \"fake\" root of the subgraphs graph, which belongs to no subgraph but points to each ones.\n  // So we \"unpack\" the first level of the tree to find out our top level groups (and initialize our stack).\n  // Note that we can safely ignore the triggers of that first level as it will all be free transition, and we know we cannot have conditions.\n  for (const [edge, _trigger, _conditions, child] of pathTree.childElements()) {\n    assert(edge !== null, `The root edge should not be null`);\n    const subgraphName = edge.tail.source;\n    // The edge tail type is one of the subgraph root type, so it has to be an ObjectType.\n    const rootType = edge.tail.type as ObjectType;\n    const group = dependencyGraph.getOrCreateRootFetchGroup({ subgraphName, rootKind, parentType: rootType });\n    // If a type is in a subgraph, it has to be in the supergraph.\n    // A root type has to be a Composite type.\n    const rootTypeInSupergraph = dependencyGraph.supergraphSchemaType(rootType.name) as CompositeType;\n    computeGroupsForTree({ \n      dependencyGraph,\n      pathTree: child,\n      startGroup: group,\n      initialGroupPath: GroupPath.empty(typeConditionedFetching, rootTypeInSupergraph),\n      initialDeferContext: emptyDeferContext,\n    });\n  }\n  return dependencyGraph;\n}\n\nfunction computeNonRootFetchGroups(dependencyGraph: FetchDependencyGraph, pathTree: OpPathTree, rootKind: SchemaRootKind, typeConditionedFetching: boolean): FetchDependencyGraph {\n  const subgraphName = pathTree.vertex.source;\n  // The edge tail type is one of the subgraph root type, so it has to be an ObjectType.\n  const rootType = pathTree.vertex.type;\n  assert(isCompositeType(rootType), () => `Should not have condition on non-selectable type ${rootType}`);\n  const group = dependencyGraph.getOrCreateRootFetchGroup({ subgraphName, rootKind, parentType: rootType} );\n  // If a type is in a subgraph, it has to be in the supergraph.\n  // A root type has to be a Composite type.\n  const rootTypeInSupergraph = dependencyGraph.supergraphSchemaType(rootType.name) as CompositeType;\n  computeGroupsForTree({\n    dependencyGraph, \n    pathTree, \n    startGroup: group, \n    initialGroupPath: GroupPath.empty(typeConditionedFetching, rootTypeInSupergraph), \n    initialDeferContext: emptyDeferContext,\n  });\n  return dependencyGraph;\n}\n\nfunction wrapInputsSelections(\n  wrappingType: CompositeType,\n  selections: SelectionSet,\n  context: PathContext\n): SelectionSet {\n  return wrapSelectionWithTypeAndConditions<SelectionSet>(\n    wrappingType,\n    selections,\n    (fragment, currentSeletions) => selectionSetOf(fragment.parentType, selectionOfElement(fragment, currentSeletions)),\n    context\n  );\n}\n\nfunction createFetchInitialPath(supergraphSchema: Schema, wrappingType: CompositeType, context: PathContext): OperationPath {\n  // We make sure that all `OperationPath` are based on the supergraph as `OperationPath` is really about path on the input query/overall supergraph data\n  // (most other places already do this as the elements added to the operation path are from the input query, but this is an exception\n  // when we create an element from an type that may/usually will not be from the supergraph). Doing this make sure we can rely on things like checking\n  // subtyping between the types of a given path.\n  const rebasedType = supergraphSchema.type(wrappingType.name);\n  assert(rebasedType && isCompositeType(rebasedType), () => `${wrappingType} should be composite in the supergraph but got ${rebasedType?.kind}`)\n  return wrapSelectionWithTypeAndConditions<OperationPath>(\n    rebasedType,\n    [],\n    (fragment, path) => [fragment as OperationElement].concat(path),\n    context,\n  );\n}\n\nfunction wrapSelectionWithTypeAndConditions<TSelection>(\n  wrappingType: CompositeType,\n  initialSelection: TSelection,\n  wrapInFragment: (fragment: FragmentElement, current: TSelection) => TSelection,\n  context: PathContext,\n): TSelection {\n  if (context.conditionals.length === 0) {\n    return wrapInFragment(new FragmentElement(wrappingType, wrappingType.name), initialSelection);\n  }\n\n  // We add the first include/skip to the current typeCast and then wrap in additional type-casts for the next ones\n  // if necessary. Note that we use type-casts (... on <type>), but, outside of the first one, we could well also\n  // use fragments with no type-condition. We do the former mostly to preverve older behavior, but doing the latter\n  // would technically produce slightly small query plans.\n  const { kind: name0, value: ifs0 } = context.conditionals[0];\n  let updatedSelection = wrapInFragment(\n    new FragmentElement(wrappingType, wrappingType.name, [new Directive(name0, { 'if': ifs0 })]),\n    initialSelection,\n  );\n\n  for (let i = 1; i < context.conditionals.length; i++) {\n    const { kind: name, value: ifs } = context.conditionals[i];\n    updatedSelection = wrapInFragment(\n      new FragmentElement(wrappingType, wrappingType.name, [new Directive(name, { 'if': ifs })]),\n      updatedSelection\n    );\n  }\n\n  return updatedSelection;\n}\n\n/**\n * If `maybePrefix` is a prefix of `basePath`, then return the path corresponding to the end of `basePath` after `maybePrefix` (which may\n * be empty if those are the same path). Otherwise, if `maybePrefix` is not a proper prefix, return `undefined`.\n */\nfunction maybeSubstratPathPrefix(basePath: OperationPath, maybePrefix: OperationPath): OperationPath | undefined {\n  if (maybePrefix.length <= basePath.length && sameOperationPaths(maybePrefix,  basePath.slice(0, maybePrefix.length))) {\n    return basePath.slice(maybePrefix.length);\n  }\n  return undefined;\n}\n\nfunction updateCreatedGroups(createdGroups: FetchGroup[], ...newCreatedGroups: FetchGroup[]) {\n  for (const newGroup of newCreatedGroups) {\n    if (!createdGroups.includes(newGroup)) {\n      createdGroups.push(newGroup);\n    }\n  }\n}\n\nfunction computeGroupsForTree(\n  {\n    dependencyGraph,\n    pathTree,\n    startGroup,\n    initialGroupPath,\n    initialDeferContext,\n    initialContext = emptyContext,\n    initialContextsToConditionsGroups = new Map(),\n  }: {\n    dependencyGraph: FetchDependencyGraph,\n    pathTree: OpPathTree<any>,\n    startGroup: FetchGroup,\n    initialGroupPath: GroupPath,\n    initialDeferContext: DeferContext,\n    initialContext?: PathContext,\n    initialContextsToConditionsGroups?: Map<string, FetchGroup[]>,\n}): FetchGroup[] {\n  const stack: {\n    tree: OpPathTree,\n    group: FetchGroup,\n    path: GroupPath,\n    context: PathContext,\n    deferContext: DeferContext,\n    contextToConditionsGroups: Map<string, FetchGroup[]>,\n  }[] = [{\n    tree: pathTree,\n    group: startGroup,\n    path: initialGroupPath,\n    context: initialContext,\n    deferContext: initialDeferContext,\n    contextToConditionsGroups: initialContextsToConditionsGroups,\n  }];\n  const createdGroups: FetchGroup[] = [ ];\n  while (stack.length > 0) {\n    const { tree, group, path, context, deferContext, contextToConditionsGroups } = stack.pop()!;\n    if (tree.localSelections) {\n      for (const selection of tree.localSelections) {\n        group.addAtPath(path.inGroup(), selection);\n        dependencyGraph.deferTracking.updateSubselection(deferContext, selection);\n      }\n    }\n    if (tree.isLeaf()) {\n      group.addAtPath(path.inGroup());\n      dependencyGraph.deferTracking.updateSubselection(deferContext);\n    } else {\n      // We want to preserve the order of the elements in the child, but the stack will reverse everything, so we iterate\n      // in reverse order to counter-balance it.\n      for (const [edge, operation, conditions, child, contextToSelection, parameterToContext] of tree.childElements(true)) {\n        if (isPathContext(operation)) {\n          const newContext = operation;\n          // The only 3 cases where we can take edge not \"driven\" by an operation is either when we resolve a key, resolve\n          // a query (switch subgraphs because the query root type is the type of a field), or at the root of subgraph graph.\n          // The latter case has already be handled the beginning of `computeFetchGroups` so only the 2 former remains.\n          assert(edge !== null, () => `Unexpected 'null' edge with no trigger at ${path}`);\n          if (edge.transition.kind === 'KeyResolution') {\n            assert(conditions, () => `Key edge ${edge} should have some conditions paths`);\n            // First, we need to ensure we fetch the conditions from the current group.\n            const conditionsGroups = computeGroupsForTree({\n              dependencyGraph, \n              pathTree: conditions, \n              startGroup: group, \n              initialGroupPath: path, \n              initialDeferContext: deferContextForConditions(deferContext),\n            });\n            updateCreatedGroups(createdGroups, ...conditionsGroups);\n            // Then we can \"take the edge\", creating a new group. That group depends\n            // on the condition ones.\n            const sourceType = edge.head.type as CompositeType; // We shouldn't have a key on a non-composite type\n            const destType = edge.tail.type as CompositeType; // We shouldn't have a key on a non-composite type\n            const pathInParent = path.inGroup();\n            const updatedDeferContext = deferContextAfterSubgraphJump(deferContext);\n            // Note that we use the name of `destType` for the inputs parent type, which can seem strange, but the reason is that we\n            // 2 kind of cases:\n            //  - either sourceType == destType, which is the case for an object entity key, or for a key from an @interfaceObject\n            //    to an interface key.\n            //  - or sourceType !== destType, and that means the source is an implementation type X of some interface I, and\n            //    destType is an @interfaceObject corresponding to I. But in that case, using I as base for the inputs is a\n            //    bit more flexible as it ensure that if the query uses multiple such key for multiple implementations (so,\n            //    key from X to I, and then Y to I), then the same fetch is properly reused. Note that it is ok to do so\n            //    since 1) inputs are based on the supergraph schema, so I is going to exist there and 2) we wrap the input\n            //    selection properly against `sourceType` below anyway.\n            const newGroup = dependencyGraph.getOrCreateKeyFetchGroup({\n              subgraphName: edge.tail.source,\n              mergeAt: path.inResponse(),\n              type: destType,\n              parent: { group, path: pathInParent },\n              conditionsGroups,\n              deferRef: updatedDeferContext.activeDeferRef,\n            });\n            updateCreatedGroups(createdGroups, newGroup);\n            newGroup.addParents(conditionsGroups.map((conditionGroup) => {\n              // If `conditionGroup` parent is `group`, that is the same as `groupCopy` current parent, then we can infer the path of `groupCopy` into\n              // that condition `group` by looking at the paths of each to their common parent. But otherwise, we cannot have a proper\n              // \"path in parent\".\n              const conditionGroupParents = conditionGroup.parents();\n              let path: OperationPath | undefined = undefined;\n              if (conditionGroupParents.length === 1 && conditionGroupParents[0].group === group && conditionGroupParents[0].path) {\n                path = maybeSubstratPathPrefix(conditionGroupParents[0].path, pathInParent);\n              }\n              return { group: conditionGroup, path };\n            }));\n            // Note that inputs must be based on the supergraph schema, not any particular subgraph, since sometimes key conditions\n            // are fetched from multiple subgraphs (and so no one subgraph has a type definition with all the proper fields, only\n            // the supergraph does).\n            const inputType = dependencyGraph.typeForFetchInputs(sourceType.name);\n            const inputSelections = newCompositeTypeSelectionSet(inputType);\n            inputSelections.updates().add(edge.conditions!);\n            newGroup.addInputs(\n              wrapInputsSelections(inputType, inputSelections.get(), newContext),\n              computeInputRewritesOnKeyFetch(inputType.name, destType),\n            );\n\n            // We also ensure to get the __typename of the current type in the \"original\" group.\n            group.addAtPath(path.inGroup().concat(new Field(sourceType.typenameField()!)));\n\n            stack.push({\n              tree: child,\n              group: newGroup,\n              path: path.forNewKeyFetch(createFetchInitialPath(dependencyGraph.supergraphSchema, edge.tail.type as CompositeType, newContext)),\n              context: newContext,\n              deferContext: updatedDeferContext,\n              contextToConditionsGroups,\n            });\n          } else {\n            assert(edge.transition.kind === 'RootTypeResolution', () => `Unexpected non-collecting edge ${edge}`);\n            const rootKind = edge.transition.rootKind;\n            assert(!conditions, () => `Root type resolution edge ${edge} should not have conditions`);\n\n            assert(isObjectType(edge.head.type) && isObjectType(edge.tail.type), () => `Expected an objects for the vertices of ${edge}`);\n            const type = edge.tail.type;\n            assert(type === type.schema().schemaDefinition.rootType(rootKind), () => `Expected ${type} to be the root ${rootKind} type, but that is ${type.schema().schemaDefinition.rootType(rootKind)}`);\n\n            // Usually, we get here because a field (say `q`) has query root type as type, and the field queried for that root\n            // type is on another subgraph. When that happens, it means that on the original subgraph we may not have\n            // added _any_ subselection for type `q` and that would make the query to the original subgraph invalid.\n            // To avoid this, we request the __typename field.\n            // One exception however is if we're at the \"top\" of the current group (`pathInGroup.length === 0`, which is a corner\n            // case but can happen with @defer when everything in a query is deferred): in that case, there is no\n            // point in adding __typename because if we don't add any other selection, the group will be empty\n            // and we've rather detect that and remove the group entirely later.\n            if (path.inGroup().length > 0) {\n              group.addAtPath(path.inGroup().concat(new Field((edge.head.type as CompositeType).typenameField()!)));\n            }\n\n            // We take the edge, creating a new group. Note that we always create a new group because this\n            // correspond to jumping subgraph after a field returned the query root type, and we want to\n            // preserve this ordering somewhat (debatable, possibly).\n            const updatedDeferContext = deferContextAfterSubgraphJump(deferContext);\n            const newGroup = dependencyGraph.newRootTypeFetchGroup({\n              subgraphName: edge.tail.source,\n              rootKind,\n              parentType: type,\n              mergeAt: path.inResponse(),\n              deferRef: updatedDeferContext.activeDeferRef,\n            });\n            newGroup.addParent({ group, path: path.inGroup() });            \n            stack.push({\n              tree: child,\n              group: newGroup,\n              path: path.forNewKeyFetch(createFetchInitialPath(dependencyGraph.supergraphSchema, type, newContext)),\n              context: newContext,\n              deferContext: updatedDeferContext,\n              contextToConditionsGroups,\n            });\n          }\n        } else if (edge === null) {\n          // A null edge means that the operation does nothing but may contain directives to preserve.\n          // If it does contains directives, we look for @defer in particular. If we find it, this\n          // means that we should change our current group to one for the defer in question.\n\n          const { updatedOperation, updatedDeferContext } = extractDeferFromOperation({\n            dependencyGraph,\n            operation,\n            deferContext,\n            path,\n          });\n\n          // We're now removed any @defer. If the operation contains other directives or a non-trivial\n          // type condition, we need to preserve it and so we add operation. Otherwise, we just skip it as a minor optimization (it makes the subgraph query\n          // slighly smaller and on complex queries, it might also deduplicate similar selections).\n          let newPath = path;\n          if (updatedOperation && updatedOperation.appliedDirectives.length > 0) {\n            newPath = path.add(updatedOperation)\n          }\n          stack.push({\n            tree: child,\n            group,\n            path: newPath,\n            context,\n            deferContext: updatedDeferContext,\n            contextToConditionsGroups,\n          });\n        } else {\n          assert(edge.head.source === edge.tail.source, () => `Collecting edge ${edge} for ${operation} should not change the underlying subgraph`)\n\n          // We have a operation element, field or inline fragment. We first check if it's been \"tagged\" to remember that __typename\n          // must be queried. See the comment on the `optimizeSiblingTypenames()` method to see why this exists.\n          const typenameAttachment = operation.getAttachment(SIBLING_TYPENAME_KEY);\n          if (typenameAttachment !== undefined) {\n            // We need to add the query __typename for the current type in the current group.\n            // Note that the value of the \"attachment\" is the alias or '' if there is no alias\n            const alias = typenameAttachment === '' ? undefined : typenameAttachment;\n            const typenameField = new Field(operation.parentType.typenameField()!, undefined, undefined, alias);\n            group.addAtPath(path.inGroup().concat(typenameField));\n            dependencyGraph.deferTracking.updateSubselection({\n              ...deferContext,\n              pathToDeferParent: deferContext.pathToDeferParent.concat(typenameField),\n            });\n          }\n\n          const { updatedOperation, updatedDeferContext } = extractDeferFromOperation({\n            dependencyGraph,\n            operation,\n            deferContext,\n            path,\n          });\n          assert(updatedOperation, () => `Extracting @defer from ${operation} should not have resulted in no operation`);\n\n          const updated = {\n            tree: child,\n            group,\n            path,\n            context,\n            deferContext: updatedDeferContext,\n            contextToConditionsGroups,\n          };\n\n          if (conditions) {\n            // add __typename to site where we are retrieving context from\n            // this is necessary because the context rewrites path will start with a type condition\n            let addTypenameAtPath;\n            if (contextToSelection) {\n              assert(isCompositeType(edge.head.type), () => `Expected a composite type for ${edge.head.type}`);\n              addTypenameAtPath = {\n                pathType: edge.head.type,\n              };\n            }\n            // We have @requires, an fake interface object downcast, or a @fromContext\n            // to create groups for.\n            const handleRequiresResult = handleRequiresTree(\n              dependencyGraph,\n              conditions,\n              group,\n              path,\n              deferContext,\n              addTypenameAtPath,\n            );\n            updateCreatedGroups(createdGroups, ...handleRequiresResult.createdGroups);\n\n            if (contextToSelection) {\n              const newContextToConditionsGroups = new Map<string, FetchGroup[]>([...contextToConditionsGroups]);\n              for (const context of contextToSelection) {\n                newContextToConditionsGroups.set(context, [handleRequiresResult.conditionsMergeGroup, ...handleRequiresResult.createdGroups]);\n              }\n              updated.contextToConditionsGroups = newContextToConditionsGroups;\n            }\n\n            if (edge.conditions) {\n              // This edge needs the conditions just fetched, to be provided via\n              // _entities (@requires or fake interface object downcast). So we\n              // create the post-@requires group, adding the subgraph jump (if\n              // needed).\n              const createPostRequiresResult = createPostRequiresGroup(\n                dependencyGraph,\n                edge,\n                group,\n                path,\n                context,\n                handleRequiresResult,\n              );\n              updated.group = createPostRequiresResult.group;\n              updated.path = createPostRequiresResult.path;\n              updateCreatedGroups(createdGroups, ...createPostRequiresResult.createdGroups);\n            }\n          }\n\n          // if we're going to start using context variables, every variable used must be set in a different parent\n          // fetch group or else we need to create a new one\n          if (parameterToContext && Array.from(parameterToContext.values()).some(({ contextId }) => updated.contextToConditionsGroups.get(contextId)?.[0] === updated.group)) { \n            assert(group === updated.group, \"Group created by @requires handling shouldn't have set context already\");\n            // All groups that get the contextual variable should be parents of this group\n            const conditionGroups: Set<FetchGroup> = new Set();\n            for (const { contextId } of parameterToContext.values()) {\n              const groups = updated.contextToConditionsGroups.get(contextId);\n              assert(groups, () => `Could not find groups for context ${contextId}`);\n              for (const conditionGroup of groups) {\n                conditionGroups.add(conditionGroup);\n              }\n            }\n\n            assert(isCompositeType(edge.head.type), () => `Expected a composite type for ${edge.head.type}`);\n            updated.group = dependencyGraph.getOrCreateKeyFetchGroup({\n              subgraphName: edge.head.source,\n              mergeAt: updated.path.inResponse(),\n              type: edge.head.type,\n              parent: { group: group, path: path.inGroup() },\n              conditionsGroups: [...conditionGroups],\n            });\n            updateCreatedGroups(createdGroups, updated.group);\n            updated.path = path.forNewKeyFetch(createFetchInitialPath(dependencyGraph.supergraphSchema, edge.head.type, context));\n\n            const keyCondition = getLocallySatisfiableKey(dependencyGraph.federatedQueryGraph, edge.head);\n            assert(keyCondition, () => `canSatisfyConditions() validation should have required a key to be present for ${edge}`);\n            const keyInputs = newCompositeTypeSelectionSet(edge.head.type);\n            keyInputs.updates().add(keyCondition);\n            group.addAtPath(path.inGroup(), keyInputs.get());\n\n            const inputType = dependencyGraph.typeForFetchInputs(edge.head.type.name);\n            const inputSelectionSet = newCompositeTypeSelectionSet(inputType);\n            inputSelectionSet.updates().add(keyCondition);\n            const inputs = wrapInputsSelections(inputType, inputSelectionSet.get(), context);\n            updated.group.addInputs(\n              inputs,\n              computeInputRewritesOnKeyFetch(edge.head.type.name, edge.head.type),\n            );\n            \n            // Add the condition groups as parent groups.\n            for (const parentGroup of conditionGroups) {\n              updated.group.addParent({ group: parentGroup });\n            }\n\n            // Add context renamers.\n            for (const [_, { contextId, selectionSet, relativePath, subgraphArgType }] of parameterToContext) {\n              updated.group.addInputContext(contextId, subgraphArgType);\n              const keyRenamers = selectionSetAsKeyRenamers(selectionSet, relativePath, contextId);\n              for (const keyRenamer of keyRenamers) {\n                updated.group.addContextRenamer(keyRenamer);\n              }\n            }\n          } else {\n            // in this case we can just continue with the current group, but we need to add the context rewrites\n            if (parameterToContext) {\n              const numFields = updated.path.inGroup().filter((e) => e.kind === 'Field').length;\n              for (const [_, { selectionSet, relativePath, contextId, subgraphArgType }] of parameterToContext) {\n                const newRelativePath = relativePath.slice(0, relativePath.length - numFields);\n                updated.group.addInputContext(contextId, subgraphArgType);\n                const keyRenamers = selectionSetAsKeyRenamers(selectionSet, newRelativePath, contextId);\n                for (const keyRenamer of keyRenamers) {\n                  updated.group.addContextRenamer(keyRenamer);\n                }\n              }\n            }\n          }\n\n          if (updatedOperation.kind === 'Field' && updatedOperation.name === typenameFieldName) {\n            // Because of the optimization done in `QueryPlanner.optimizeSiblingTypenames`, we will rarely get an explicit `__typename`\n            // edge here. But one case where it can happen is where an @interfaceObject was involved, and we had to force jumping to\n            // another subgraph for getting the \"true\" `__typename`. However, this case can sometimes lead to fetch group that only\n            // exists for that `__typename` resolution and that \"look\" useless. That, we could have a fetch group that looks like:\n            //   Fetch(service: \"Subgraph2\") {\n            //     {\n            //       ... on I {\n            //         __typename\n            //         id\n            //       }\n            //     } =>\n            //     {\n            //       ... on I {\n            //         __typename\n            //       }\n            //     }\n            //   }\n            // but the trick is that the `__typename` in the input will be the name of the interface itself (`I` in this case)\n            // but the one return after the fetch will the name of the actual implementation (some implementation of `I`).\n            // *But* we later have optimizations that would remove such a group, on the group that the output is included\n            // in the input, which is in general the right thing to do (and genuinely ensure that some useless groups created when\n            // handling complex @require gets eliminated). So we \"protect\" the group in this case to ensure that later\n            // optimization doesn't kick in in this case.\n            updated.group.mustPreserveSelection = true\n          }\n\n          if (edge.transition.kind === 'InterfaceObjectFakeDownCast') {\n            // We shouldn't add the operation \"as is\" as it's a down-cast but we're \"faking it\". However,\n            // if the operation has directives, we should preserve that.\n            assert(updatedOperation.kind === 'FragmentElement', () => `Unexpected operation ${updatedOperation} for edge ${edge}`);\n            if (updatedOperation.appliedDirectives.length > 0) {\n              // We want to keep the directives, but we clear the condition since it's to a type that doesn't exists in the\n              // subgraph we're currently in.\n              updated.path = updated.path.add(updatedOperation.withUpdatedCondition(undefined));\n            }\n          } else {\n            updated.path = updated.path.add(updatedOperation);\n          }\n\n          stack.push(updated);\n        }\n      }\n    }\n  }\n  return createdGroups;\n}\n\nfunction computeInputRewritesOnKeyFetch(inputTypeName: string, destType: CompositeType): FetchDataRewrite[] | undefined {\n  // When we send a fetch to a subgraph, the inputs __typename must essentially match `destType` so the proper __resolveReference\n  // is called. If `destType` is a \"normal\" object type, that's going to be fine by default, but if `destType` is an interface\n  // in the supergraph (meaning that it is either an interface or an interface object), then the underlying object might have\n  // a __typename that is the concrete implementation type of the object, and we need to rewrite it.\n  if (isInterfaceObjectType(destType) || isInterfaceType(destType)) {\n    return [{\n      kind: 'ValueSetter',\n      path: [ `... on ${inputTypeName}`, typenameFieldName ],\n      setValueTo: destType.name,\n    }];\n  }\n  return undefined;\n}\n\nfunction extractDeferFromOperation({\n  dependencyGraph,\n  operation,\n  deferContext,\n  path,\n}: {\n  dependencyGraph: FetchDependencyGraph,\n  operation: OperationElement,\n  deferContext: DeferContext,\n  path: GroupPath,\n}): {\n  updatedOperation: OperationElement | undefined,\n  updatedDeferContext: DeferContext,\n}{\n  const deferArgs = operation.deferDirectiveArgs();\n  if (!deferArgs) {\n    return {\n      updatedOperation: operation,\n      updatedDeferContext: {\n        ...deferContext,\n        pathToDeferParent: deferContext.pathToDeferParent.concat(operation),\n      }\n    };\n  }\n\n  assert(deferArgs.label, 'All defers should have a lalel at this point');\n  const updatedDeferRef = deferArgs.label;\n  const updatedOperation = operation.withoutDefer();\n  const updatedPathToDeferParent = updatedOperation ? [ updatedOperation ] : [];\n\n  dependencyGraph.deferTracking.registerDefer({\n    deferContext,\n    deferArgs,\n    path,\n    parentType: operation.parentType,\n  });\n\n  return {\n    updatedOperation,\n    updatedDeferContext: {\n      ...deferContext,\n      currentDeferRef: updatedDeferRef,\n      pathToDeferParent: updatedPathToDeferParent,\n    },\n  };\n}\n\nfunction subselectionTypeIfAbstract(selection: Selection): AbstractType | undefined {\n  if (selection.kind === 'FieldSelection') {\n    const fieldBaseType = baseType(selection.element.definition.type!);\n    return isAbstractType(fieldBaseType) ? fieldBaseType : undefined;\n  } else {\n    const conditionType = selection.element.typeCondition;\n    return conditionType && isAbstractType(conditionType) ? conditionType : undefined;\n  }\n}\n\nfunction addTypenameFieldForAbstractTypes(selectionSet: SelectionSet, parentTypeIfAbstract?: AbstractType): SelectionSet {\n  const handleSelection = (selection: Selection): Selection => {\n      if (!selection.selectionSet) {\n        return selection;\n      }\n\n      const typeIfAbstract = subselectionTypeIfAbstract(selection);\n      const updatedSelectionSet = addTypenameFieldForAbstractTypes(selection.selectionSet, typeIfAbstract);\n      if (updatedSelectionSet === selection.selectionSet) {\n        return selection;\n      } else {\n        return selection.withUpdatedSelectionSet(updatedSelectionSet);\n      }\n  }\n\n  if (!parentTypeIfAbstract || selectionSet.hasTopLevelTypenameField()) {\n    return selectionSet.lazyMap((selection) => handleSelection(selection));\n  }\n\n  const updates = new SelectionSetUpdates();\n  updates.add(new FieldSelection(new Field(parentTypeIfAbstract.typenameField()!)));\n  selectionSet.selections().forEach((selection) => updates.add(handleSelection(selection)))\n  return updates.toSelectionSet(selectionSet.parentType);\n}\n\nfunction addBackTypenameInAttachments(selectionSet: SelectionSet): SelectionSet {\n  return selectionSet.lazyMap((s) => {\n    const updated = s.mapToSelectionSet((ss) => addBackTypenameInAttachments(ss));\n    const typenameAttachment = s.element.getAttachment(SIBLING_TYPENAME_KEY);\n    if (typenameAttachment === undefined) {\n      return updated;\n    } else {\n      // We need to add the query __typename for the current type in the current group.\n      // Note that the value of the \"attachment\" is the alias or '' if there is no alias\n      const alias = typenameAttachment === '' ? undefined : typenameAttachment;\n      const typenameField = new Field(s.element.parentType.typenameField()!, undefined, undefined, alias);\n      return [\n        selectionOfElement(typenameField),\n        updated,\n      ];\n    }\n  });\n}\n\nfunction pathHasOnlyFragments(path: OperationPath): boolean {\n  return path.every((element) => element.kind === 'FragmentElement');\n}\n\nfunction typeAtPath(parentType: CompositeType, path: OperationPath): CompositeType {\n  let type = parentType;\n  for (const element of path) {\n    if (element.kind === 'Field') {\n      const fieldType = baseType(type.field(element.name)!.type!);\n      assert(isCompositeType(fieldType), () => `Invalid call fro ${path} starting at ${parentType}: ${element.definition.coordinate} is not composite`);\n      type = fieldType;\n    } else if (element.typeCondition) {\n      const rebasedType = parentType.schema().type(element.typeCondition.name);\n      assert(rebasedType && isCompositeType(rebasedType), () => `Type condition of ${element} should be composite`);\n      type = rebasedType;\n    }\n  }\n  return type;\n}\n\nfunction createPostRequiresGroup(\n  dependencyGraph: FetchDependencyGraph,\n  edge: Edge,\n  group: FetchGroup,\n  path: GroupPath,\n  context: PathContext,\n  result: {\n    fullyLocalRequires: boolean,\n    createdGroups: FetchGroup[],\n    requiresParent: ParentRelation | undefined,\n  }\n): {\n  group: FetchGroup,\n  path: GroupPath,\n  createdGroups: FetchGroup[],\n} {\n  const { fullyLocalRequires, createdGroups } = result;\n  const entityType = edge.head.type as ObjectType;\n  // if we never created any groups, all conditions were local\n  if (fullyLocalRequires) {\n    return { group, path, ...result };\n  }\n  const parents = group.parents();\n  const triedToMerge = parents.length === 1 && pathHasOnlyFragments(path.inGroup());\n  if (triedToMerge) {\n    const parent = parents[0];\n    if (createdGroups.length === 0) {\n      group.addInputs(\n        inputsForRequire(\n          dependencyGraph, \n          entityType, \n          edge,\n          context, false).inputs);\n      return { group, path, createdGroups: [] };\n    }\n    // If we get here, it means that @requires needs the information from `createdGroups` (plus whatever has\n    // been merged before) _and_ that relies on some information from the current `group` (if it hadn't, we\n    // would have been able to merge `groupCopy` to `group`'s parent). So the group we should return, which\n    // is the group where the \"post-@require\" fields will be added, needs to a be a new group that depends\n    // on all those `createdGroups`.\n    const postRequireGroup = dependencyGraph.newKeyFetchGroup({\n      subgraphName: group.subgraphName,\n      mergeAt: group.mergeAt!,\n      deferRef: group.deferRef\n    });\n    // Note that `postRequireGroup` cannot generally be merged into any of the `createdGroups`, so we don't provide a `path`.\n    postRequireGroup.addParents(createdGroups.map((group) => ({ group })));\n    // That group also needs, in general, to depend on the current `group`. That said, if we detected that the @requires\n    // didn't need anything of said `group` (if `newGroupIsUnneeded`), then we can depend on the parent instead.\n    if (result.requiresParent) {\n      postRequireGroup.addParent(result.requiresParent);\n    }\n\n    // Note(Sylvain): I'm not 100% sure about this assert in the sense that while I cannot think of a case where `parent.path` wouldn't\n    // exist, the code paths are complex enough that I'm not able to prove this easily and could easily be missing something. That said,\n    // we need the path here, so this will have to do for now, and if this ever breaks in practice, we'll at least have an example to\n    // guide us toward improving/fixing.\n    assert(parent.path, `Missing path-in-parent for @requires on ${edge} with group ${group} and parent ${parent}`);\n    let requirePath = path.forParentOfGroup(parent.path, parent.group.parentType.schema());\n    let preRequireGroup = parent.group;\n\n    // The `postRequireGroup` needs a key. This can come from `group` (and code\n    // in `canSatisfyConditions()` guarantees such a locally satisfiable key\n    // exists in `group`), but it can also potentially come from `parent.group`,\n    // and previous code had (wrongfully) always assumed it could.\n    //\n    // To keep this previous optimization, we now explicitly check whether the\n    // known locally satisfiable key can be rebased in `parent.group`, and we\n    // fall back to `group` if it doesn't.\n    const keyCondition = getLocallySatisfiableKey(dependencyGraph.federatedQueryGraph, edge.head);\n    assert(keyCondition, () => `Due to @requires, validation should have required a key to be present for ${edge}`);\n    if (!keyCondition.canRebaseOn(typeAtPath(preRequireGroup.selection.parentType, requirePath.inGroup()))) {\n      requirePath = path;\n      preRequireGroup = group;\n      // It's possible we didn't add `group` as a parent previously, so we do so\n      // here similarly to how `handleRequiresTree()` specifies it.\n      postRequireGroup.addParent({ group, path: [] });\n    }\n\n    addPostRequireInputs(\n      dependencyGraph,\n      requirePath,\n      entityType,\n      edge,\n      context,\n      preRequireGroup,\n      postRequireGroup,\n    );\n    return {\n      group: postRequireGroup,\n      path: path.forNewKeyFetch(createFetchInitialPath(dependencyGraph.supergraphSchema, entityType, context)),\n      createdGroups: [postRequireGroup],\n    };\n  } else {\n    const postRequireGroup = dependencyGraph.newKeyFetchGroup({\n      subgraphName: group.subgraphName,\n      mergeAt: path.inResponse(),\n    });\n    postRequireGroup.addParents(\n      createdGroups.map((group) => ({\n        group,\n        // Usually, computing the path of our new group into the created groups\n        // is not entirely trivial, but there is at least the relatively common\n        // case where the 2 groups we look at have:\n        // 1) the same `mergeAt`, and\n        // 2) the same parentType; in that case, we can basically infer those 2\n        //    groups apply at the same \"place\" and so the \"path in parent\" is\n        //    empty. TODO: it should probably be possible to generalize this by\n        //    checking the `mergeAt` plus analyzing the selection but that\n        //    warrants some reflection...\n        path: sameMergeAt(group.mergeAt, postRequireGroup.mergeAt)\n          && sameType(group.parentType, postRequireGroup.parentType)\n          ? []\n          : undefined,\n      })),\n    );\n    addPostRequireInputs(\n      dependencyGraph,\n      path,\n      entityType,\n      edge,\n      context,\n      group,\n      postRequireGroup,\n    );\n    return {\n      group: postRequireGroup,\n      path: path.forNewKeyFetch(createFetchInitialPath(dependencyGraph.supergraphSchema, entityType, context)),\n      createdGroups: [postRequireGroup],\n    };\n  }\n}\n\nfunction handleRequiresTree(\n  dependencyGraph: FetchDependencyGraph,\n  requiresConditions: OpPathTree,\n  group: FetchGroup,\n  path: GroupPath,\n  deferContext: DeferContext,\n  addTypenameAtPath: {\n    pathType: CompositeType,\n  } | undefined,\n): {\n  fullyLocalRequires: boolean,\n  createdGroups: FetchGroup[],\n  requiresParent: ParentRelation | undefined,\n  conditionsMergeGroup: FetchGroup,\n} {\n  // In many case, we can optimize requires by merging the requirement to previously existing groups. However,\n  // we only do this when the current group has only a single parent (it's hard to reason about it otherwise).\n  // But the current could have multiple parents due to the graph lacking minimimality, and we don't want that\n  // to needlessly prevent us from this optimization. So we do a graph reduction first (which effectively\n  // just eliminate unecessary edges). To illustrate, we could be in a case like:\n  //     1\n  //   /  \\\n  // 0 --- 2\n  // with current group 2. And while the group currently has 2 parents, the `reduce` step will ensure\n  // the edge `0 --- 2` is removed (since the dependency of 2 on 0 is already provide transitively through 1).\n  dependencyGraph.reduce();\n\n  const parents = group.parents();\n  \n  // In general, we should do like for an edge, and create a new group _for the current subgraph_\n  // that depends on the createdGroups and have the created groups depend on the current one.\n  // However, we can be more efficient in general (and this is expected by the user) because\n  // required fields will usually come just after a key edge (at the top of a fetch group).\n  // In that case (when the path is only typeCasts), we can put the created groups directly\n  // as dependency of the current group, avoiding to create a new one. Additionally, if the\n  // group we're coming from is our \"direct parent\", we can merge it to said direct parent (which\n  // effectively means that the parent group will collect the provides before taking the edge\n  // to our current group).\n  let groupCopy : FetchGroup | undefined;\n  if (parents.length === 1 && pathHasOnlyFragments(path.inGroup())) {\n    const parent = parents[0];\n\n    // We start by computing the groups for the conditions. We do this using a copy of the current\n    // group (with only the inputs) as that allows to modify this copy without modifying `group`.\n    groupCopy = dependencyGraph.newKeyFetchGroup({\n      subgraphName: group.subgraphName,\n      mergeAt: group.mergeAt!,\n      deferRef: group.deferRef\n    });\n    groupCopy.addParent(parent);\n    groupCopy.copyInputsOf(group);\n    if (addTypenameAtPath) {\n      groupCopy.addAtPath(path.inGroup().concat(new Field(addTypenameAtPath.pathType.typenameField()!)));\n    }\n  } else {\n    if (addTypenameAtPath) {\n      group.addAtPath(path.inGroup().concat(new Field(addTypenameAtPath.pathType.typenameField()!)));\n    }\n  }\n  \n  // Call computeGroupsForTree on the requiresConditions. The start group will either be group or the copy of group if we \n  // expect to be able to optimize\n  const createdGroups = computeGroupsForTree({\n    dependencyGraph, \n    pathTree: requiresConditions, \n    startGroup: groupCopy ?? group, \n    initialGroupPath: path, \n    initialDeferContext: deferContextForConditions(deferContext)\n  });\n\n  if (createdGroups.length == 0) {\n    // All conditions were local. If we created a copy of the current group, merge it back in\n    if (groupCopy) {\n      assert(group.canMergeSiblingIn(groupCopy), () => `We should be able to merge ${groupCopy} into ${group} by construction`);\n      group.mergeSiblingIn(groupCopy);\n    }\n    return { fullyLocalRequires: true, createdGroups: [], requiresParent: undefined, conditionsMergeGroup: group };\n  }\n  \n  if (groupCopy) {\n    const parent = groupCopy.parents()[0];\n    // We know the @require needs createdGroups. We do want to know however if any of the conditions was\n    // fetched from our `groupCopy`. If not, then this means that the `createdGroups` don't really depend on\n    // the current `group` and can be dependencies of the parent (or even merged into this parent).\n    //\n    // So we want to know if anything in `groupCopy` selection cannot be fetched directly from the parent.\n    // For that, we first remove any of `groupCopy` inputs from its selection: in most case, `groupCopy`\n    // will just contain the key needed to jump back to its parent, and those would usually be the same\n    // as the inputs. And since by definition we know `groupCopy`'s inputs are already fetched, we\n    // know they are not things that we need. Then, we check if what remains (often empty) can be\n    // directly fetched from the parent. If it can, then we can just merge `groupCopy` into that parent.\n    // Otherwise, we will have to \"keep it\".\n    // Note: it is to be sure this test is not poluted by other things in `group` that we created `groupCopy`.\n    groupCopy.removeInputsFromSelection();\n    const newGroupIsUnneeded = parent.path && groupCopy.selection.canRebaseOn(typeAtPath(parent.group.selection.parentType, parent.path));\n    const unmergedGroups = [];\n\n    if (newGroupIsUnneeded) {\n      // Up to this point, `groupCopy` had no parent, so let's first merge `groupCopy` to the parent, thus \"rooting\"\n      // its children to it. Note that we just checked that `groupCopy` selection was just its inputs, so\n      // we know that merging it to the parent is mostly a no-op from that POV, except maybe for requesting\n      // a few additional `__typename` we didn't before (due to the exclusion of `__typename` in the `newGroupIsUnneeded` check)\n      parent.group.mergeChildIn(groupCopy);\n\n      // Now, all created groups are going to be descendant of `parentGroup`. But some of them may actually be\n      // mergeable into it.\n      for (const created of createdGroups) {\n        // Note that `created` may not be a direct child of `parent.group`, but `canMergeChildIn` just return `false` in\n        // that case, yielding the behaviour we want (not trying to merge it in).\n        if (created.subgraphName === parent.group.subgraphName && parent.group.canMergeChildIn(created)) {\n          parent.group.mergeChildIn(created);\n        } else {\n          unmergedGroups.push(created);\n          // `created` cannot be merged into `parent.group`, which may typically be because they are not to the same\n          // subgraph. However, while `created` currently depend on `parent.group` (directly or indirectly), that\n          // dependency just comes from the fact that `parent.group` is the parent of the group whose @require we're\n          // dealing with. And in practice, it could well be that some of the fetches needed for that require don't\n          // really depend on anything that parent fetches and could be done in parallel with it. If we detect that\n          // this is the case for `created`, we can move it \"up the chain of dependency\".\n          let currentParent: ParentRelation | undefined = parent;\n          while (currentParent\n            && !currentParent.group.isTopLevel\n            && created.isChildOfWithArtificialDependency(currentParent.group)\n          ) {\n            currentParent.group.removeChild(created);\n            const grandParents = currentParent.group.parents();\n            assert(grandParents.length > 0, `${currentParent.group} is not top-level, so it should have parents`);\n            for (const grandParent of grandParents) {\n              created.addParent({\n                group: grandParent.group,\n                path: concatPathsInParents(grandParent.path, currentParent.path),\n              });\n            }\n            // If we have more that 1 \"grand parent\", let's stop there as it would get more complicated\n            // and that's probably not needed. Otherwise, we can check if `created` may be able to move even\n            // further up.\n            currentParent = grandParents.length === 1 ? grandParents[0] : undefined;\n          }\n        }\n      }\n    } else {\n      // We cannot merge `groupCopy` to the parent, either because there it fetches some things necessary to the\n      // @require, or because we had more than one parent and don't know how to handle this (unsure if the later\n      // can actually happen at this point tbh (?)). Bu not reason not to merge `groupCopy` back to `group` so\n      // we do that first.\n      assert(group.canMergeSiblingIn(groupCopy), () => `We should be able to merge ${groupCopy} into ${group} by construction`);\n      group.mergeSiblingIn(groupCopy);\n\n      // The created group depends on `group` and the dependency cannot be moved to the parent in\n      // this case. However, we might still be able to merge some created group directly in the\n      // parent. But for this to be true, we should essentially make sure that the dependency\n      // on `group` is not a \"true\" dependency. That is, if the created group inputs are the same\n      // as `group` inputs (and said created group is the same subgraph than the parent of\n      // `group`, then it means we're only depending on values that are already in the parent and\n      // can merge the group).\n      if (parent.path) {\n        for (const created of createdGroups) {\n          if (created.subgraphName === parent.group.subgraphName\n            && parent.group.canMergeGrandChildIn(created)\n            && sameMergeAt(created.mergeAt, group.mergeAt)\n            && group.inputs!.contains(created.inputs!)\n          ) {\n            parent.group.mergeGrandChildIn(created);\n          } else {\n            unmergedGroups.push(created);\n          }\n        }\n      }\n    }\n\n    return {\n      fullyLocalRequires: false,\n      createdGroups: unmergedGroups,\n      requiresParent: newGroupIsUnneeded ? parent : { group, path: [] },\n      conditionsMergeGroup: newGroupIsUnneeded ? parent.group : group,\n    };\n  } else {\n    return {\n      fullyLocalRequires: false,\n      createdGroups,\n      requiresParent: undefined,\n      conditionsMergeGroup: group,\n    };\n  }\n}\n\nfunction addPostRequireInputs(\n  dependencyGraph: FetchDependencyGraph,\n  requirePath: GroupPath,\n  entityType: ObjectType,\n  edge: Edge,\n  context: PathContext,\n  preRequireGroup: FetchGroup,\n  postRequireGroup: FetchGroup,\n) {\n  const { inputs, keyInputs } = inputsForRequire(dependencyGraph, entityType, edge, context);\n  // Note that `computeInputRewritesOnKeyFetch` will return `undefined` in general, but if `entityType` is an interface/interface object,\n  // then we need those rewrites to ensure the underlying fetch is valid.\n  postRequireGroup.addInputs(\n    inputs,\n    computeInputRewritesOnKeyFetch(entityType.name, entityType)\n  );\n  if (keyInputs) {\n    // It could be the key used to resume fetching after the @require is already fetched in the original group, but we cannot\n    // guarantee it, so we add it now (and if it was already selected, this is a no-op).\n    preRequireGroup.addAtPath(requirePath.inGroup(), keyInputs.selections());\n  }\n}\n\nfunction newCompositeTypeSelectionSet(type: CompositeType): MutableSelectionSet {\n  const selectionSet = MutableSelectionSet.empty(type);\n  selectionSet.updates().add(new FieldSelection(new Field(type.typenameField()!)));\n  return selectionSet;\n}\n\nfunction inputsForRequire(\n  dependencyGraph: FetchDependencyGraph,\n  entityType: ObjectType,\n  edge: Edge,\n  context: PathContext,\n  includeKeyInputs: boolean = true\n): {\n  inputs: SelectionSet,\n  keyInputs: SelectionSet | undefined,\n}{\n  // This method is actually called for to handle conditions of @requires, but also to fetch `__typename` in the\n  // case of \"fake downcast on an @interfaceObject\". In that later case, once we're fetched that `__typename`,\n  // we want to wrap the input into the \"downcasted\" type, not the @interfaceObject one, so that we don't end\n  // up querying some fields in the @interfaceObject subgraph for entities that we know won't match a type\n  // condition of the query.\n  const isInterfaceObjectDownCast = edge.transition.kind === 'InterfaceObjectFakeDownCast';\n  const inputTypeName = isInterfaceObjectDownCast ? edge.transition.castedTypeName : entityType.name;\n  const inputType = dependencyGraph.supergraphSchema.type(inputTypeName);\n  assert(inputType && isCompositeType(inputType), () => `Type ${inputTypeName} should exist in the supergraph and be a composite type`);\n\n  const fullSelectionSet = newCompositeTypeSelectionSet(inputType);\n  if (edge.conditions) {\n    fullSelectionSet.updates().add(edge.conditions);\n  }\n  let keyInputs: MutableSelectionSet | undefined = undefined;\n  if (includeKeyInputs) {\n    const keyCondition = getLocallySatisfiableKey(dependencyGraph.federatedQueryGraph, edge.head);\n    assert(keyCondition, () => `Due to @require, validation should have required a key to be present for ${edge}`);\n    let keyConditionAsInput = keyCondition;\n    if (isInterfaceObjectDownCast) {\n      // This means that conditions parents are on the @interfaceObject type, but we actually want to select only the\n      // `inputTypeName` implementation, the `mergeIn` below will try to add fields from the interface to one of the\n      // implementationt type. Which `mergeIn` usually let us do as that's safe, but because `keyCondition` are on\n      // the @interfaceObject subgraph, the type there is not an interface. To work around this, we \"rebase\" the\n      // condition on the supergraph type (which is an interface) first, which lets the `mergeIn` work.\n      const supergraphItfType = dependencyGraph.supergraphSchema.type(entityType.name);\n      assert(supergraphItfType && isInterfaceType(supergraphItfType), () => `Type ${entityType} should be an interface in the supergraph`);\n      // Note: we are rebasing on another schema below, but we also known that we're working on a full expanded\n      // selection set (no spread), so passing undefined is actually correct.\n      keyConditionAsInput = keyConditionAsInput.rebaseOn({ parentType: supergraphItfType, fragments: undefined, errorIfCannotRebase: true });\n    }\n    fullSelectionSet.updates().add(keyConditionAsInput);\n\n    // Note that `keyInputs` are used to ensure those input are fetch on the original group, the one having `edge`. In\n    // the case of an @interfaceObject downcast, that's the subgraph with said @interfaceObject, so in that case we\n    // should just use `entityType` (that @interfaceObject type), not input type which will be an implementation the\n    // subgraph does not know in that particular case.\n    keyInputs = newCompositeTypeSelectionSet(entityType);\n    keyInputs.updates().add(keyCondition);\n  }\n  return {\n    inputs: wrapInputsSelections(inputType, fullSelectionSet.get(), context),\n    keyInputs: keyInputs?.get(),\n  };\n}\n\nconst representationsVariable = new Variable('representations');\nfunction representationsVariableDefinition(schema: Schema): VariableDefinition {\n  const metadata = federationMetadata(schema);\n  assert(metadata, 'Expected schema to be a federation subgraph')\n  const representationsType = new NonNullType(new ListType(new NonNullType(metadata.anyType())));\n  return new VariableDefinition(schema, representationsVariable, representationsType);\n}\n\n// Collects all variables used in the operation to be created.\n// - It's computed based on its selection set and directives.\nfunction collectUsedVariables(selectionSet: SelectionSet, operationDirectives?: readonly Directive<any>[]) {\n  const collector = new VariableCollector();\n  selectionSet.collectVariables(collector);\n\n  if (operationDirectives) {\n    for (const applied of operationDirectives) {\n      collector.collectInArguments(applied.arguments());\n    }\n  }\n  return collector.variables();\n}\n\nfunction operationForEntitiesFetch(\n  subgraphSchema: Schema,\n  selectionSet: SelectionSet,\n  allVariableDefinitions: VariableDefinitions,\n  operationName?: string,\n  directives?: readonly Directive<any>[],\n): Operation {\n  const variableDefinitions = new VariableDefinitions();\n  variableDefinitions.add(representationsVariableDefinition(subgraphSchema));\n  variableDefinitions.addAll(\n    allVariableDefinitions.filter(collectUsedVariables(selectionSet, directives)),\n  );\n\n  const queryType = subgraphSchema.schemaDefinition.rootType('query');\n  assert(\n    queryType,\n    `Subgraphs should always have a query root (they should at least provides _entities)`,\n  );\n\n  const entities = queryType.field(entitiesFieldName);\n  assert(entities, `Subgraphs should always have the _entities field`);\n\n  const entitiesCall = selectionSetOfElement(\n    new Field(\n      entities,\n      { representations: representationsVariable },\n    ),\n    selectionSet,\n  );\n\n  // Note that this is called _before_ named fragments reuse is attempted, so there is not spread in\n  // the selection, hence the `undefined` for fragments.\n  return new Operation(subgraphSchema, 'query', entitiesCall, variableDefinitions, undefined, operationName, directives);\n}\n\nfunction operationForQueryFetch(\n  subgraphSchema: Schema,\n  rootKind: SchemaRootKind,\n  selectionSet: SelectionSet,\n  allVariableDefinitions: VariableDefinitions,\n  operationName?: string,\n  directives?: readonly Directive<any>[],\n): Operation {\n  // Note that this is called _before_ named fragments reuse is attempted, so there is not spread in\n  // the selection, hence the `undefined` for fragments.\n  return new Operation(subgraphSchema, rootKind, selectionSet,\n                       allVariableDefinitions.filter(collectUsedVariables(selectionSet, directives)),\n                       /*fragments*/undefined, operationName, directives);\n}\n\nconst sameKeyRenamer = (k1: FetchDataKeyRenamer, k2: FetchDataKeyRenamer): boolean => {\n  if (k1.renameKeyTo !== k2.renameKeyTo || k1.path.length !== k2.path.length) {\n    return false;\n  }\n  for (let i = 0; i < k1.path.length; i++) {\n    if (k1.path[i] !== k2.path[i]) {\n      return false;\n    }  \n  }\n  return true;\n}\n", "export { queryPlanSerializer, astSerializer } from './snapshotSerializers';\nexport { prettyFormatQueryPlan } from './prettyFormatQueryPlan';\n\nexport * from './QueryPlan';\nexport { QueryPlanner } from './buildPlan';\nexport { QueryPlanCache, QueryPlannerConfig } from './config';\nexport * from './conditions';\n\n", "export function isObject(value: any): value is object {\n  return (\n    value !== undefined &&\n    value !== null &&\n    typeof value === 'object' &&\n    !Array.isArray(value)\n  );\n}\n", "import { isObject } from './predicates';\n\nexport function deepMerge(target: any, source: any): any {\n  if (source === undefined || source === null) return target;\n\n  for (const key of Object.keys(source)) {\n    if (source[key] === undefined || key === '__proto__') continue;\n\n    if (target[key] && isObject(source[key])) {\n      deepMerge(target[key], source[key]);\n    } else if (\n      Array.isArray(source[key]) &&\n      Array.isArray(target[key]) &&\n      source[key].length === target[key].length\n    ) {\n      let i = 0;\n      for (; i < source[key].length; i++) {\n        if (isObject(target[key][i]) && isObject(source[key][i])) {\n          deepMerge(target[key][i], source[key][i]);\n        } else {\n          target[key][i] = source[key][i];\n        }\n      }\n    } else {\n      target[key] = source[key];\n    }\n  }\n\n  return target;\n}\n", "export function isNotNullOrUndefined<T>(\n  value: T | null | undefined,\n): value is T {\n  return value !== null && typeof value !== 'undefined';\n}\n\nexport function compactMap<T, U>(\n  array: T[],\n  callbackfn: (value: T, index: number, array: T[]) => U | null | undefined,\n): U[] {\n  return array.reduce(\n    (accumulator, element, index, array) => {\n      const result = callbackfn(element, index, array);\n      if (isNotNullOrUndefined(result)) {\n        accumulator.push(result);\n      }\n      return accumulator;\n    },\n    [] as U[],\n  );\n}\n\nexport function findAndExtract<T>(\n  array: T[],\n  predicate: (element: T, index: number, array: T[]) => boolean,\n): [T | undefined, T[]] {\n  const index = array.findIndex(predicate);\n  if (index === -1) return [undefined, array];\n\n  const remaining = array.slice(0, index);\n  if (index < array.length - 1) {\n    remaining.push(...array.slice(index + 1));\n  }\n\n  return [array[index], remaining];\n}\n\nexport function groupBy<T, U>(keyFunction: (element: T) => U) {\n  return (iterable: Iterable<T>) => {\n    const result = new Map<U, T[]>();\n\n    for (const element of iterable) {\n      const key = keyFunction(element);\n      const group = result.get(key);\n\n      if (group) {\n        group.push(element);\n      } else {\n        result.set(key, [element]);\n      }\n    }\n\n    return result;\n  };\n}\n", "{\n  \"name\": \"@apollo/gateway\",\n  \"version\": \"2.13.0\",\n  \"description\": \"Apollo Gateway\",\n  \"author\": \"Apollo <packages@apollographql.com>\",\n  \"main\": \"dist/index.js\",\n  \"types\": \"dist/index.d.ts\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/apollographql/federation.git\",\n    \"directory\": \"gateway-js/\"\n  },\n  \"keywords\": [\n    \"graphql\",\n    \"federation\",\n    \"gateway\",\n    \"server\",\n    \"apollo\"\n  ],\n  \"engines\": {\n    \"node\": \">=14.15.0\"\n  },\n  \"license\": \"Elastic-2.0\",\n  \"publishConfig\": {\n    \"access\": \"public\"\n  },\n  \"dependencies\": {\n    \"@apollo/composition\": \"2.13.0\",\n    \"@apollo/federation-internals\": \"2.13.0\",\n    \"@apollo/query-planner\": \"2.13.0\",\n    \"@apollo/server-gateway-interface\": \"^1.1.0\",\n    \"@apollo/usage-reporting-protobuf\": \"^4.1.0\",\n    \"@apollo/utils.createhash\": \"^2.0.0\",\n    \"@apollo/utils.fetcher\": \"^2.0.0\",\n    \"@apollo/utils.isnodelike\": \"^2.0.0\",\n    \"@apollo/utils.keyvaluecache\": \"^2.1.0\",\n    \"@apollo/utils.logger\": \"^2.0.0\",\n    \"@josephg/resolvable\": \"^1.0.1\",\n    \"@opentelemetry/api\": \"^1.0.1\",\n    \"@types/node-fetch\": \"^2.6.2\",\n    \"async-retry\": \"^1.3.3\",\n    \"loglevel\": \"^1.6.1\",\n    \"make-fetch-happen\": \"^11.0.0\",\n    \"node-abort-controller\": \"^3.0.1\",\n    \"node-fetch\": \"^2.6.7\"\n  },\n  \"peerDependencies\": {\n    \"graphql\": \"^16.5.0\"\n  }\n}", "import opentelemetry from '@opentelemetry/api';\nimport type { Attributes, Exception, Span } from '@opentelemetry/api';\nimport type { GatewayGraphQLRequestContext } from '@apollo/server-gateway-interface';\nimport { OperationContext } from '../operationContext';\n\nexport type OpenTelemetryConfig = {\n  /**\n   * Whether to include the `graphql.document` attribute in the `gateway.request` OpenTelemetry spans.\n   * When set to `true`, the attribute will contain the entire GraphQL document for the current request.\n   *\n   * Defaults to `false`, meaning that the GraphQL document will not be added as a span attribute.\n   */\n  includeDocument?: boolean;\n  /**\n   * Whether to record the GraphQL and internal errors that take place while processing a request as\n   * exception events in the OpenTelemetry spans in which they occur.\n   *\n   * When a number is given as a value, it represents the maximum number of exceptions that will be\n   * reported in each OpenTelemetry span.\n   *\n   * Regardless of the value of this setting, the span status code will be set to `ERROR` when a GraphQL\n   * or internal error occurs.\n   *\n   * Defaults to `false`, meaning that no exceptions will be reported in any spans.\n   */\n  recordExceptions?: boolean | number;\n}\n\nexport enum OpenTelemetrySpanNames {\n  REQUEST = 'gateway.request',\n  PLAN = 'gateway.plan',\n  FETCH = 'gateway.fetch',\n  POST_PROCESSING = 'gateway.postprocessing',\n  EXECUTE = 'gateway.execute',\n  VALIDATE = 'gateway.validate',\n}\n\n/*\n   When adding any more, please refer to:\n   https://opentelemetry.io/docs/specs/otel/common/attribute-naming/\n   https://opentelemetry.io/docs/specs/otel/trace/semantic_conventions/instrumentation/graphql/\n*/\nexport enum OpenTelemetryAttributeNames {\n  GRAPHQL_DOCUMENT = 'graphql.document',\n  GRAPHQL_OPERATION_NAME = 'graphql.operation.name',\n  GRAPHQL_OPERATION_NAME_DEPRECATED = 'operationName', // deprecated in favor of GRAPHQL_OPERATION_NAME\n  GRAPHQL_OPERATION_TYPE = 'graphql.operation.type',\n}\n\nconst { name, version } = require('../../package.json');\nexport const tracer = opentelemetry.trace.getTracer(`${name}/${version}`);\n\nexport interface SpanAttributes extends Attributes {\n  /**\n   * @deprecated in favor of `graphql.operation.name`\n   */\n  [OpenTelemetryAttributeNames.GRAPHQL_OPERATION_NAME_DEPRECATED]?: string;\n  [OpenTelemetryAttributeNames.GRAPHQL_OPERATION_NAME]?: string;\n  [OpenTelemetryAttributeNames.GRAPHQL_OPERATION_TYPE]?: string;\n  [OpenTelemetryAttributeNames.GRAPHQL_DOCUMENT]?: string;\n}\n\nexport function requestContextSpanAttributes(\n  requestContext: GatewayGraphQLRequestContext,\n  config: OpenTelemetryConfig | undefined\n): SpanAttributes {\n  const spanAttributes: SpanAttributes = {};\n\n  if (requestContext.operationName) {\n    spanAttributes[\n      OpenTelemetryAttributeNames.GRAPHQL_OPERATION_NAME_DEPRECATED\n    ] = requestContext.operationName;\n    spanAttributes[OpenTelemetryAttributeNames.GRAPHQL_OPERATION_NAME] =\n      requestContext.operationName;\n  }\n  if (config?.includeDocument && requestContext.source) {\n    spanAttributes[OpenTelemetryAttributeNames.GRAPHQL_DOCUMENT] =\n      requestContext.source;\n  }\n\n  return spanAttributes;\n}\n\nexport function operationContextSpanAttributes(\n  operationContext: OperationContext\n): SpanAttributes {\n  const spanAttributes: SpanAttributes = {};\n\n  if (operationContext.operation.operation) {\n    spanAttributes[OpenTelemetryAttributeNames.GRAPHQL_OPERATION_TYPE] =\n      operationContext.operation.operation;\n  }\n\n  return spanAttributes;\n}\n\nexport function recordExceptions(\n  span: Span,\n  exceptions: readonly Exception[],\n  config: OpenTelemetryConfig | undefined\n) {\n  const recordExceptions = config?.recordExceptions;\n\n  if (recordExceptions === undefined || recordExceptions === false) {\n    return;\n  }\n\n  let exceptionsToRecord;\n\n  if (recordExceptions === true) {\n    exceptionsToRecord = exceptions;\n  } else if (recordExceptions <= 0) {\n    return;\n  } else {\n    exceptionsToRecord = exceptions.slice(0, recordExceptions)\n  }\n\n  for (const exception of exceptionsToRecord) {\n    span.recordException(exception);\n  }\n}\n", "import {\n  assert,\n  CompositeType,\n  Directive,\n  ERRORS,\n  FieldSelection,\n  isCompositeType,\n  isListType,\n  isNonNullType,\n  isObjectType,\n  isSubtype,\n  isValidLeafValue,\n  Operation,\n  OperationElement,\n  OutputType,\n  Schema,\n  SelectionSet,\n  Type,\n  typenameFieldName,\n  Variable\n} from \"@apollo/federation-internals\";\nimport { ResponsePath } from \"@apollo/query-planner\";\nimport { GraphQLError } from \"graphql\";\n\n/**\n * Performs post-query plan execution processing of internally fetched data to produce the final query response.\n *\n * The reason for this post-processing are the following ones:\n * 1. executing the query plan will usually query more fields that are strictly requested. That is because key, required\n *   and __typename fields must often be requested to subgraphs even when they are not part of the query. So this method\n *   will filter out anything that has been fetched but isn't part of the user query.\n * 2. query plan execution does not guarantee that in the data fetched, the fields will respect the ordering that the\n *   GraphQL spec defines (for the query). The reason for that being that as we fetch data from multiple subgraphs, we\n *   have to \"destroy\" the ordering to an extend, and that order has to be re-establish as a post-fetches step, and it's\n *   a lot easier to do this as part of this final post-processing step.\n * 3. query plan execution ignores schema introspection sub-parts as those are not something to be asked to subgraphs,\n *  and so any requested introspection needs to be added separatly from query plan execution. Note that this method\n *  does add introspection results to the final response returned, but it delegates the computation of introspect to\n *  its `introspectionHandling` callback.\n * 4. query plans do not request the __typename of root types to subgraphs, even if those are queried. The reason is\n *  that subgraph are allowed to use non-standard root type names, but the supergraph always use the standard name,\n *  so asking the subgraph for __typename on those type may actually return an incorrect result. This method\n *  compelets those __typename of root types if necessary.\n *\n * @param operation - the query that was planned and for which we're post-processing the result.\n * @param variables - the value for the variables in `operation`.\n * @param input - the data fetched during query plan execution and that should be filtered/re-ordered.\n * @param instrospectionHandling - a function that, given the selection of a schema introspection field (`__schema`)\n *   returns the introspection results for that field. This method does not handle introspection by itself, and\n *   so if some introspection is requested (`__schema` or `__type` only , `__typename` *is* handled by this method),\n *   this function is called to compute the proper result.\n */\nexport function computeResponse({\n  operation,\n  variables,\n  input,\n  introspectionHandling,\n}: {\n  operation: Operation,\n  variables?: Record<string, any>,\n  input: Record<string, any> | null | undefined,\n  introspectionHandling: (introspectionSelection: FieldSelection) => any,\n}): {\n  data: Record<string, any> | null | undefined,\n  errors: GraphQLError[],\n} {\n  if (!input) {\n    return { data: input, errors: [] };\n  }\n\n  const parameters = {\n    schema: operation.schema(),\n    variables: {\n      ...operation.collectDefaultedVariableValues(),\n      // overwrite any defaulted variables if they are provided\n      ...variables,\n    },\n    errors: [],\n    introspectionHandling,\n  };\n\n  const data = Object.create(null);\n\n  const res = applySelectionSet({\n    input,\n    selectionSet: operation.selectionSet,\n    output: data,\n    parameters,\n    path: [],\n    parentType: operation.schema().schemaDefinition.rootType(operation.rootKind)!,\n  });\n\n  return {\n    data: res === ApplyResult.NULL_BUBBLE_UP ? null : data,\n    errors: parameters.errors,\n  };\n}\n\ntype Parameters = {\n  schema: Schema,\n  variables: Record<string, any>,\n  errors: GraphQLError[],\n  introspectionHandling: (introspectionSelection: FieldSelection) => any,\n}\n\n\nfunction shouldSkip(element: OperationElement, parameters: Parameters): boolean {\n  const skipDirective = element.appliedDirectivesOf(parameters.schema.skipDirective())[0];\n  const includeDirective = element.appliedDirectivesOf(parameters.schema.includeDirective())[0];\n  return (skipDirective && ifValue(skipDirective, parameters.variables))\n    || (includeDirective && !ifValue(includeDirective, parameters.variables));\n}\n\nfunction ifValue(directive: Directive<any, { if: boolean | Variable }>, variables: Record<string, any>): boolean {\n  const ifArg = directive.arguments().if;\n  if (ifArg instanceof Variable) {\n    const value = variables[ifArg.name];\n    // If the query has been validated, which we assume, the value must exists and be a boolean\n    assert(value !== undefined && typeof value === 'boolean', () => `Unexpected value ${value} for variable ${ifArg} of ${directive}`);\n    return value;\n  } else {\n    return ifArg;\n  }\n}\n\nenum ApplyResult { OK, NULL_BUBBLE_UP }\n\nfunction typeConditionApplies(\n  schema: Schema,\n  typeCondition: CompositeType | undefined,\n  typename: string | undefined,\n  parentType: CompositeType,\n): boolean {\n  if (!typeCondition) {\n    return true;\n  }\n\n  if (typename) {\n    const type = schema.type(typename);\n    return !!type && isSubtype(typeCondition, type);\n  } else {\n    // No __typename, just check that the condition matches the parent type (unsure this is necessary as the query wouldn't have\n    // been valid otherwise but ...).\n    return isSubtype(typeCondition, parentType);\n  }\n}\n\nfunction applySelectionSet({\n  input,\n  selectionSet,\n  output,\n  parameters,\n  path,\n  parentType,\n}: {\n  input: Record<string, any>,\n  selectionSet: SelectionSet,\n  output: Record<string, any>,\n  parameters: Parameters,\n  path: ResponsePath,\n  parentType: CompositeType,\n}): ApplyResult {\n  for (const selection of selectionSet.selections()) {\n    if (shouldSkip(selection.element, parameters)) {\n      continue;\n    }\n\n    if (selection.kind === 'FieldSelection') {\n      const field = selection.element;\n      const fieldType = field.definition.type!;\n      const responseName = field.responseName();\n      const outputValue = output[responseName];\n\n      if (field.definition.isSchemaIntrospectionField()) {\n        if (outputValue === undefined) {\n          output[responseName] = parameters.introspectionHandling(selection);\n        }\n        continue;\n      }\n\n      let inputValue = input[responseName] ?? null;\n\n      // We handle __typename separately because there is some cases where the internal data may either not have\n      // the value (despite __typename always having a value), or an actually incorrect value that should not be\n      // returned. More specifically, this is due to 2 things at the moment:\n      // 1. it is allowed for subgraphs to use custom names for root types, and different subgraphs can even use\n      //   different names, but the supergraph will always use the default names (`Mutation` or `Query`). But it\n      //   means that if we ask a subgraph for the __typename of a root type, the returned value may well be\n      //   incorrect. In fact, to work around this, the query planner does not query the __typename of root\n      //   types from subgraphs, and this is why this needs to be handled now.\n      // 2. @interfaceObject makes it so that some subgraph may know what is an interface type in the supergraph\n      //   as an object type locally. When __typename is used to such subgraph, it will thus return what is an\n      //   interface type name for the supergraph and is thus invalid. Now, if __typename is explicitly queried\n      //   (the case we're handling here) then the query planner will ensure in the query plan that after having\n      //   queried a subgraph with @interfaceObject, we always follow that with a query to another subgraph\n      //   having the type as an interface (and a @key on it), so as to \"override\" the __typename with the\n      //   correct implementation type. _However_, that later fetch could fail, and when that is the case,\n      //   the incorrect __typename will be incorrect. In that case, we must return it but instead should make\n      //   the whole object null.\n      if (field.name === typenameFieldName) {\n        // If we've already set outputValue, we've already run this logic and are just dealing with a repeated\n        // fragments, so just continue with the rest of the selections.\n        if (outputValue === undefined) {\n          // Note that this could an aliasing of __typename. If so, we've checked the input for the alias, but\n          // if we found nothing it's worth double check if we don't have the __typename unaliased.\n          // Note(Sylvain): unsure if there is real situation where this would help but it's cheap to check\n          // and it's pretty logical to try so...\n          if (inputValue === null && responseName !== typenameFieldName) {\n            inputValue = input[typenameFieldName] ?? null;\n          }\n\n          // We're using the type pointed by our input value if there is one and it points to a genuine\n          // type of the schema. Otherwise, we default to our parent type.\n          const type = inputValue !== null && typeof inputValue === 'string'\n            ? parameters.schema.type(inputValue) ?? parentType\n            : parentType;\n\n          // If if that type is not an object, then we cannot use it and our only option is to nullify\n          // the whole object.\n          if (!isObjectType(type)) {\n            return ApplyResult.NULL_BUBBLE_UP;\n          }\n          output[responseName] = type.name;\n        }\n        continue;\n      }\n\n      path.push(responseName);\n      const { updated, isInvalid } = updateOutputValue({\n        outputValue,\n        type: fieldType,\n        inputValue,\n        selectionSet: selection.selectionSet,\n        path,\n        parameters,\n        parentType,\n      });\n      output[responseName] = updated\n      path.pop();\n      if (isInvalid) {\n        return ApplyResult.NULL_BUBBLE_UP;\n      }\n    } else {\n      const fragment = selection.element;\n      const typename = input[typenameFieldName];\n      assert(!typename || typeof typename === 'string', () => `Got unexpected value for __typename: ${typename}`);\n      if (typeConditionApplies(parameters.schema, fragment.typeCondition, typename, parentType)) {\n        const res = applySelectionSet({\n          input,\n          selectionSet: selection.selectionSet,\n          output,\n          parameters,\n          path,\n          parentType: fragment.typeCondition ?? parentType,\n        });\n        if (res === ApplyResult.NULL_BUBBLE_UP) {\n          return ApplyResult.NULL_BUBBLE_UP;\n        }\n      }\n    }\n  }\n\n  return ApplyResult.OK;\n}\n\nfunction pathLastElementDescription(path: ResponsePath, currentType: Type, parentType: CompositeType): string {\n  const element = path[path.length - 1];\n  assert(element !== undefined, 'Should not have been called on an empty path');\n  return typeof element === 'string'\n    ? `field ${parentType}.${element}`\n    : `array element of type ${currentType} at index ${element}`;\n}\n\n/**\n * Given some partially computed output value (`outputValue`, possibly `undefined`) for a given `type` and the\n * corresponding input value (`inputValue`, which should never be `undefined` for this method, but can be `null`),\n * computes an updated output value for applying the provided `selectionSet` as sub-selection.\n */\nfunction updateOutputValue({\n  outputValue,\n  type,\n  inputValue,\n  selectionSet,\n  path,\n  parameters,\n  parentType,\n}: {\n  outputValue: any,\n  type: OutputType,\n  inputValue: any,\n  selectionSet: SelectionSet | undefined,\n  path: ResponsePath,\n  parameters: Parameters,\n  parentType: CompositeType,\n}): {\n  // The updated version of `outputValue`. Never `undefined`, but can be `null`.\n  updated: any,\n  // Whether the returned value is \"valid\" for `type`. In other words, this is true only if both `updated` is `null`\n  // and `type` is non-nullable. This indicates that this is a `null` that needs to be \"bubbled up\".\n  isInvalid?: boolean,\n  // Whether errors have already been generated for the computation of the current value. This only exists for the sake\n  // of recursive calls to avoid generating multiple errors as we bubble up nulls.\n  hasErrors?: boolean,\n} {\n  assert(inputValue !== undefined, 'Should not pass undefined for `inputValue` to this method');\n\n  if (outputValue === null || (outputValue !== undefined && !selectionSet)) {\n    // If we've already computed the value for a non-composite type (scalar or enum), then we're just\n    // running into a \"duplicate\" selection of this value but we have nothing more to do (the reason we\n    // have more to do for composites is that the sub-selection may differ from the previous we've seen).\n    // And if the value is null, even if the type is composite, then there is nothing more to be done (do\n    // not that if there was some bubbling up of `null` to be done, it would have been done before because\n    // the rulesof graphQL ensures that everything going into a given response name has same nullability\n    // constraints (https://spec.graphql.org/June2018/#SameResponseShape()).\n    return { updated: outputValue };\n  }\n\n  if (isNonNullType(type)) {\n    const { updated, hasErrors } = updateOutputValue({\n      outputValue,\n      type: type.ofType,\n      inputValue,\n      selectionSet,\n      path,\n      parameters,\n      parentType,\n    });\n    if (updated === null) {\n      if (!hasErrors) {\n        parameters.errors.push(ERRORS.INVALID_GRAPHQL.err(\n          `Cannot return null for non-nullable ${pathLastElementDescription(path, type.ofType, parentType)}.`,\n          { path: Array.from(path) }\n        ));\n      }\n      return { updated, isInvalid: true, hasErrors: true };\n    }\n    return { updated };\n  }\n\n  // Note that from that point, we never have to bubble up null since the type is nullable.\n\n  if (inputValue === null) {\n    // If the input is null, so is the output, no matter what. And since we already dealt with non-nullable, then it's\n    // an ok value at that point.\n    return { updated: null };\n  }\n\n  if (isListType(type)) {\n    // The current `outputValue` can't be `null` at that point, so it's either:\n    //   1. some array: we need to recurse into each value of that array, and deal with potential\n    //     null bubbling up.\n    //   2. undefined: this is the first time we're computing anything for this value, so we\n    //     want to recurse like in the previous case, but just with undefined as current value.\n    // Anything else means the subgraph sent us something fishy.\n    assert(Array.isArray(inputValue), () => `Invalid non-list value ${inputValue} returned by subgraph for list type ${type}`)\n    assert(outputValue === undefined || Array.isArray(outputValue), () => `Invalid non-list value ${outputValue} returned by subgraph for list type ${type}`)\n    const outputValueList: any[] = outputValue === undefined ? new Array(inputValue.length).fill(undefined) : outputValue;\n    // Note that if we already had an existing output value, then it was built from the same \"input\" list than we have now, so it should match length.\n    assert(inputValue.length === outputValueList.length, () => `[${inputValue}].length (${inputValue.length}) !== [${outputValueList}].length (${outputValueList.length})`)\n    let shouldNullify = false;\n    let hasErrors = false;\n    const updated = outputValueList.map((outputEltValue, idx) => {\n      path.push(idx);\n      const elt = updateOutputValue({\n        outputValue: outputEltValue,\n        type: type.ofType,\n        inputValue: inputValue[idx],\n        selectionSet,\n        path,\n        parameters,\n        parentType,\n      });\n      path.pop();\n      // If the element is invalid, it means it's a null but the list inner type is non-nullable, and we should nullify the whole list.\n      // We do continue iterating so we collect potential errors for other elements.\n      shouldNullify ||= !!elt.isInvalid;\n      hasErrors ||= !!elt.hasErrors;\n      return elt.updated;\n    });\n    // Note that we should pass up whether an error has already be logged for the inner elements or not, but the value is otherwise not\n    // invalid at this point, even if null.\n    return { updated: shouldNullify ? null : updated, hasErrors }\n  }\n\n  if (isCompositeType(type)) {\n    assert(selectionSet, () => `Invalid empty selection set for composite type ${type}`);\n    assert(typeof inputValue === 'object', () => `Invalid non-object value ${inputValue} returned by subgraph for composite type ${type}`)\n    assert(outputValue === undefined || typeof outputValue === 'object', () => `Invalid non-object value ${inputValue} returned by subgraph for composite type ${type}`)\n\n    const inputTypename = inputValue[typenameFieldName];\n    assert(inputTypename === undefined || typeof inputTypename === 'string', () => `Invalid non-string value ${inputTypename} for __typename at ${path}`)\n    let objType = type;\n    if (inputTypename) {\n      // If we do have a typename, but the type is not in our api schema (or is not a composite for some reason), we play it safe and\n      // return `null`.\n      const typenameType = parameters.schema.type(inputTypename);\n      if (!typenameType || !isCompositeType(typenameType)) {\n        // Please note that, as `parameters.schema` is the API schema, this is were we will get if a subgraph returns an object for type that is @inacessible.\n        // And as we don't want to leak inaccessible type names, we should _not_ include `inputTypename` in the error message (note that both `type` and\n        // `parentType` are fine to include because both come from the query and thus API schema; but typically, `type` might be an (accessible) interface\n        // while `inputTypename` is the name of an implementation that happens to not be accessible).\n        parameters.errors.push(ERRORS.INVALID_GRAPHQL.err(\n          `Invalid __typename found for object at ${pathLastElementDescription(path, type, parentType)}.`,\n          { path: Array.from(path) }\n        ));\n        return { updated: null, hasErrors: true };\n      }\n      objType = typenameType;\n    }\n\n    const outputValueObject: Record<string, any> = outputValue === undefined ? Object.create(null) : outputValue;\n\n    const res = applySelectionSet({\n      input: inputValue,\n      selectionSet,\n      output: outputValueObject,\n      parameters,\n      path,\n      parentType: objType,\n    });\n    // If we're bubbling up a null, then we return a null for the whole object; but we also know that a null error has\n    // already been logged and don't need to anymore.\n    const hasErrors = res === ApplyResult.NULL_BUBBLE_UP;\n    return { updated: hasErrors ? null : outputValueObject, hasErrors };\n  }\n\n  // Note that because of the initial condition of this function, and the fact we've essentially deal with the\n  // cases where `isCompositeType(baseType(type))`, we know that if we're still here, `outputValue` is undefined\n  // and was remains is just to validate that the input is a valid value for the type and return that.\n  assert(outputValue === undefined, () => `Excepted output to be undefined but got ${type} for type ${type}`)\n\n  const isValidValue = isValidLeafValue(parameters.schema, inputValue, type);\n  if (!isValidValue) {\n    parameters.errors.push(ERRORS.INVALID_GRAPHQL.err(\n      `Invalid value found for ${pathLastElementDescription(path, type, parentType)}.`,\n      { path: Array.from(path) }\n    ));\n  }\n  // Not that we're already logged an error that the value is invalid, so no point in throwing an addition null error if\n  // the type ends up being null on top of that.\n  return { updated: isValidValue ? inputValue : null, hasErrors: !isValidValue};\n}\n", "import { FetchDataRewrite } from \"@apollo/query-planner\";\nimport { assert } from \"@apollo/federation-internals\";\nimport { GraphQLSchema, isAbstractType, isInterfaceType, isObjectType } from \"graphql\";\n\nconst FRAGMENT_PREFIX = '... on ';\n\nexport function applyRewrites(schema: GraphQLSchema, rewrites: FetchDataRewrite[] | undefined,  value: Record<string, any>) {\n  if (!rewrites) {\n    return;\n  }\n\n  for (const rewrite of rewrites) {\n    applyRewrite(schema, rewrite, value);\n  }\n}\n\nfunction applyRewrite(schema: GraphQLSchema, rewrite: FetchDataRewrite,  value: Record<string, any>) {\n  const splitted = splitPathLastElement(rewrite.path);\n  if (!splitted) {\n    return;\n  }\n\n  const [parent, last] = splitted;\n  const { kind, value: fieldName } = parsePathElement(last);\n  // So far, all rewrites finish by a field name. If this ever changes, this assertion will catch it early and we can update.\n  assert(kind === 'fieldName', () => `Unexpected fragment as last element of ${rewrite.path}`);\n  applyAtPath(schema, parent, value, rewriteAtPathFunction(rewrite, fieldName));\n}\n\nfunction rewriteAtPathFunction(rewrite: FetchDataRewrite, fieldAtPath: string): (obj: Record<string, any>) => void {\n  switch (rewrite.kind) {\n    case 'ValueSetter':\n      return (obj) => {\n        obj[fieldAtPath] = rewrite.setValueTo;\n      };\n    case 'KeyRenamer':\n      return (obj) => {\n        const objAtPath = obj[fieldAtPath];\n        if (objAtPath) {\n          obj[rewrite.renameKeyTo] = obj[fieldAtPath];\n          obj[fieldAtPath] = undefined;\n        }\n      };\n  }\n}\n\n\n/**\n * Given a path, separates the last element of path and the rest of it and return them as a pair.\n * This will return `undefined` if the path is empty.\n */\nfunction splitPathLastElement(path: string[]): [string[], string] | undefined {\n  if (path.length === 0) {\n    return undefined;\n  }\n\n  const lastIdx = path.length - 1;\n  return [path.slice(0, lastIdx), path[lastIdx]];\n}\n\nfunction applyAtPath(schema: GraphQLSchema, path: string[], value: any, fct: (objAtPath: Record<string, any>) => void) {\n  if (Array.isArray(value)) {\n    for (const arrayValue of value) {\n      applyAtPath(schema, path, arrayValue, fct);\n    }\n    return;\n  }\n\n  if (typeof value !== 'object' || value === null) {\n    return;\n  }\n\n  if (path.length === 0) {\n    fct(value);\n    return;\n  }\n\n  const [first, ...rest] = path;\n  const { kind, value: eltValue } = parsePathElement(first);\n  switch (kind) {\n    case 'fieldName':\n      applyAtPath(schema, rest, value[eltValue], fct);\n      break;\n    case 'typeName':\n      // When we apply rewrites, we don't always have the __typename of all object we would need to, but the code expects that\n      // this does not stop the rewrite to applying, hence the modified to `true` when the object typename is not found.\n      if (isObjectOfType(schema, value, eltValue, true)) {\n        applyAtPath(schema, rest, value, fct);\n      }\n      break;\n  }\n}\n\nfunction parsePathElement(elt: string): { kind: 'fieldName' | 'typeName', value: string } {\n  if (elt.startsWith(FRAGMENT_PREFIX)) {\n    return { kind: 'typeName', value: elt.slice(FRAGMENT_PREFIX.length) };\n  } else {\n    return { kind: 'fieldName', value: elt };\n  }\n}\n\n\nexport function isObjectOfType(\n  schema: GraphQLSchema,\n  obj: Record<string, any>,\n  typeCondition: string,\n  defaultOnUnknownObjectType: boolean = false,\n): boolean {\n  const objTypename = obj['__typename'];\n  if (!objTypename) {\n    return defaultOnUnknownObjectType;\n  }\n\n  if (typeCondition === objTypename) {\n    return true;\n  }\n\n  const type = schema.getType(objTypename);\n  if (!type) {\n    return false;\n  }\n\n  const conditionalType = schema.getType(typeCondition);\n  if (!conditionalType) {\n    return false;\n  }\n\n  if (isAbstractType(conditionalType)) {\n    return (isObjectType(type) || isInterfaceType(type)) && schema.isSubType(conditionalType, type);\n  }\n\n  return false;\n}\n", "import { Headers } from 'node-fetch';\nimport {\n  GraphQLError,\n  Kind,\n  TypeNameMetaFieldDef,\n  GraphQLFieldResolver,\n  GraphQLFormattedError,\n  GraphQLSchema,\n  GraphQLErrorOptions,\n  DocumentNode,\n  executeSync,\n  OperationTypeNode,\n  FieldNode,\n  visit,\n  ASTNode,\n  VariableDefinitionNode,\n} from 'graphql';\nimport { Trace, google } from '@apollo/usage-reporting-protobuf';\nimport { GraphQLDataSource, GraphQLDataSourceRequestKind } from './datasources/types';\nimport { OperationContext } from './operationContext';\nimport {\n  FetchNode,\n  PlanNode,\n  QueryPlan,\n  ResponsePath,\n  QueryPlanSelectionNode,\n  QueryPlanFieldNode,\n  getResponseName,\n  evaluateCondition,\n} from '@apollo/query-planner';\nimport { deepMerge } from './utilities/deepMerge';\nimport { isNotNullOrUndefined } from './utilities/array';\nimport { SpanStatusCode } from \"@opentelemetry/api\";\nimport { OpenTelemetryConfig, OpenTelemetrySpanNames, recordExceptions, tracer } from \"./utilities/opentelemetry\";\nimport { assert, defaultRootName, errorCodeDef, ERRORS, Operation, operationFromDocument, Schema } from '@apollo/federation-internals';\nimport { GatewayGraphQLRequestContext, GatewayExecutionResult } from '@apollo/server-gateway-interface';\nimport { computeResponse } from './resultShaping';\nimport { applyRewrites, isObjectOfType } from './dataRewrites';\n\nexport type ServiceMap = {\n  [serviceName: string]: GraphQLDataSource;\n};\n\ntype ResultMap = Record<string, any>;\n\n/**\n * Represents some \"cursor\" within the full result, or put another way, a path into the full result and where it points to.\n *\n * Note that results can include lists and the the `path` considered can traverse those lists (the path will have a '@' character) so\n * the data pointed by a cursor is not necessarily a single \"branch\" of the full results, but is in general a flattened list of all\n * the sub-branches pointed by the path.\n */\ntype ResultCursor = {\n  // Path into `fullResult` this cursor is pointing at.\n  path: ResponsePath,\n\n  // The data pointed by this cursor.\n  data: ResultMap | ResultMap[],\n\n  // The full result .\n  fullResult: ResultMap,\n}\n\ninterface ExecutionContext {\n  queryPlan: QueryPlan;\n  operationContext: OperationContext;\n  operation: Operation,\n  serviceMap: ServiceMap;\n  requestContext: GatewayGraphQLRequestContext;\n  supergraphSchema: GraphQLSchema;\n  errors: GraphQLError[];\n}\n\nfunction collectUsedVariables(node: ASTNode): Set<string> {\n  const usedVariables = new Set<string>();\n  visit(node, {\n    Variable: ({ name }) => {\n      usedVariables.add(name.value);\n    }\n  });\n  return usedVariables;\n}\n\nfunction makeIntrospectionQueryDocument(\n  introspectionSelection: FieldNode,\n  variableDefinitions?: readonly VariableDefinitionNode[],\n): DocumentNode {\n  const usedVariables = collectUsedVariables(introspectionSelection);\n  const usedVariableDefinitions = variableDefinitions?.filter((def) => usedVariables.has(def.variable.name.value));\n  assert(\n    usedVariables.size === (usedVariableDefinitions?.length ?? 0),\n    () => `Should have found all used variables ${[...usedVariables]} in definitions ${JSON.stringify(variableDefinitions)}`,\n  );\n  return {\n    kind: Kind.DOCUMENT,\n    definitions: [\n      {\n        kind: Kind.OPERATION_DEFINITION,\n        operation: OperationTypeNode.QUERY,\n        variableDefinitions: usedVariableDefinitions,\n        selectionSet: {\n          kind: Kind.SELECTION_SET,\n          selections: [ introspectionSelection ],\n        }\n      }\n    ],\n  };\n}\n\nfunction executeIntrospection(\n  schema: GraphQLSchema,\n  introspectionSelection: FieldNode,\n  variableDefinitions: ReadonlyArray<VariableDefinitionNode> | undefined,\n  variableValues: Record<string, any> | undefined,\n): any {\n  const { data, errors } = executeSync({\n    schema,\n    document: makeIntrospectionQueryDocument(introspectionSelection, variableDefinitions),\n    rootValue: {},\n    variableValues,\n  });\n  assert(\n    !errors || errors.length === 0,\n    () => `Introspection query for ${JSON.stringify(introspectionSelection)} should not have failed but got ${JSON.stringify(errors)}`\n  );\n  assert(data, () => `Introspection query for ${JSON.stringify(introspectionSelection)} should not have failed`);\n  return data[introspectionSelection.alias?.value ?? introspectionSelection.name.value];\n}\n\nexport async function executeQueryPlan(\n  queryPlan: QueryPlan,\n  serviceMap: ServiceMap,\n  requestContext: GatewayGraphQLRequestContext,\n  operationContext: OperationContext,\n  supergraphSchema: GraphQLSchema,\n  apiSchema: Schema,\n  telemetryConfig?: OpenTelemetryConfig\n): Promise<GatewayExecutionResult> {\n\n  const logger = requestContext.logger || console;\n\n  return tracer.startActiveSpan(OpenTelemetrySpanNames.EXECUTE, async span => {\n    try {\n      const errors: GraphQLError[] = [];\n\n      let operation: Operation;\n      try {\n        operation = operationFromDocument(\n          apiSchema,\n          {\n            kind: Kind.DOCUMENT,\n            definitions: [\n              operationContext.operation,\n              ...Object.values(operationContext.fragments),\n            ],\n          },\n          {\n            validate: false,\n          }\n        );\n      } catch (err) {\n        // We shouldn't really have errors as the operation should already have been validated, but if something still\n        // happens, we should report it properly (plus, some of our tests call this method directly and blow up if we don't\n        // handle this correctly).\n        // TODO: we are doing some duplicate work by building both `OperationContext` and this `Operation`. Ideally we\n        // would remove `OperationContext`, pass the `Operation` directly to this method, and only use that. This would change\n        // the signature of this method though and it is exported so ... maybe later ?\n        //\n        if (err instanceof GraphQLError) {\n          return { errors: [err] };\n        }\n        throw err;\n      }\n\n      const context: ExecutionContext = {\n        queryPlan,\n        operationContext,\n        operation,\n        serviceMap,\n        requestContext,\n        supergraphSchema,\n        errors,\n      };\n\n      const unfilteredData: ResultMap = Object.create(null);\n\n      const captureTraces = !!(\n          requestContext.metrics && requestContext.metrics.captureTraces\n      );\n\n      if (queryPlan.node?.kind === 'Subscription') {\n        throw new Error('Execution of subscriptions not supported by gateway');\n      }\n\n      if (queryPlan.node) {\n        const traceNode = await executeNode(\n          context,\n          queryPlan.node,\n          {\n            path: [],\n            data: unfilteredData,\n            fullResult: unfilteredData,\n          },\n          captureTraces,\n          telemetryConfig\n        );\n        if (captureTraces) {\n          requestContext.metrics!.queryPlanTrace = traceNode;\n        }\n      }\n\n      const result = await tracer.startActiveSpan(OpenTelemetrySpanNames.POST_PROCESSING, async (span) => {\n        let data;\n        try {\n          let postProcessingErrors: GraphQLError[];\n          const variables = requestContext.request.variables;\n          ({ data, errors: postProcessingErrors } = computeResponse({\n            operation,\n            variables,\n            input: unfilteredData,\n            introspectionHandling: (f) => executeIntrospection(\n              operationContext.schema,\n              f.expandFragments().toSelectionNode(),\n              operationContext.operation.variableDefinitions,\n              variables,\n            ),\n          }));\n\n          // If we have errors during the post-processing, we ignore them if any other errors have been thrown during\n          // query plan execution. That is because in many cases, errors during query plan execution will leave the\n          // internal data in a state that triggers additional post-processing errors, but that leads to 2 errors recorded\n          // for the same problem and that is unexpected by clients. See https://github.com/apollographql/federation/issues/981\n          // for additional context.\n          // If we had no errors during query plan execution, then we do ship any post-processing ones, but not as \"normal\"\n          // errors, as \"extensions\". The reason is that we used to completely ignore those post-processing errors, and as a\n          // result some users have been relying on not getting errors in some nullability related cases that post-processing\n          // cover, and switching to returning errors in those case is problematic. Putting these error messages in `extensions`\n          // is a compromise in that the errors are still part of the reponse, which may help users debug an issue, but are\n          // not \"normal graphQL errors\", so clients and tooling will mostly ignore them.\n          //\n          // Note that this behavior is also what the router does (and in fact, the exact name of the `extensions` we use,\n          // \"valueCompletion\", comes from the router and we use it for alignment.\n          if (errors.length === 0 && postProcessingErrors.length > 0) {\n            recordExceptions(span, postProcessingErrors, telemetryConfig);\n            span.setStatus({ code:SpanStatusCode.ERROR });\n            return { extensions: { \"valueCompletion\":  postProcessingErrors }, data };\n          }\n        } catch (error) {\n          recordExceptions(span, [error], telemetryConfig);\n          span.setStatus({ code:SpanStatusCode.ERROR });\n          if (error instanceof GraphQLError) {\n            return { errors: [error] };\n          } else if (error instanceof Error) {\n            return {\n              errors: [\n                new GraphQLError(\n                  error.message,\n                  { originalError: error },\n                )\n              ]\n            };\n          } else {\n            // The above cases should cover the known cases, but if we received\n            // something else in the `catch` \u2014 like an object or something, we\n            // may not want to merely return this to the client.\n            logger.error(\n              \"Unexpected error during query plan execution: \" + error);\n            return {\n              errors: [\n                new GraphQLError(\n                  \"Unexpected error during query plan execution\",\n                )\n              ]\n            };\n          }\n        }\n        finally {\n          span.end()\n        }\n        return errors.length === 0 ? { data } : { errors, data };\n      });\n\n      if(result.errors) {\n        recordExceptions(span, result.errors, telemetryConfig);\n        span.setStatus({ code:SpanStatusCode.ERROR });\n      }\n      return result;\n    }\n    catch (err) {\n      recordExceptions(span, [err], telemetryConfig)\n      span.setStatus({ code:SpanStatusCode.ERROR });\n      throw err;\n    }\n    finally {\n      span.end();\n    }\n  });\n}\n\n// Note: this function always returns a protobuf QueryPlanNode tree, even if\n// we're going to ignore it, because it makes the code much simpler and more\n// typesafe. However, it doesn't actually ask for traces from the backend\n// service unless we are capturing traces for Studio.\nasync function executeNode(\n  context: ExecutionContext,\n  node: PlanNode,\n  currentCursor: ResultCursor | undefined,\n  captureTraces: boolean,\n  telemetryConfig?: OpenTelemetryConfig\n): Promise<Trace.QueryPlanNode> {\n  if (!currentCursor) {\n    // XXX I don't understand `results` threading well enough to understand when this happens\n    //     and if this corresponds to a real query plan node that should be reported or not.\n    //\n    // This may be if running something like `query { fooOrNullFromServiceA {\n    // somethingFromServiceB } }` and the first field is null, then we don't bother to run the\n    // inner field at all.\n    return new Trace.QueryPlanNode();\n  }\n\n  switch (node.kind) {\n    case 'Sequence': {\n      const traceNode = new Trace.QueryPlanNode.SequenceNode();\n      for (const childNode of node.nodes) {\n        const childTraceNode = await executeNode(\n          context,\n          childNode,\n          currentCursor,\n          captureTraces,\n          telemetryConfig\n        );\n        traceNode.nodes.push(childTraceNode!);\n      }\n      return new Trace.QueryPlanNode({ sequence: traceNode });\n    }\n    case 'Parallel': {\n      const childTraceNodes = await Promise.all(\n        node.nodes.map(async (childNode) =>\n          executeNode(\n            context,\n            childNode,\n            currentCursor,\n            captureTraces,\n            telemetryConfig\n          ),\n        ),\n      );\n      return new Trace.QueryPlanNode({\n        parallel: new Trace.QueryPlanNode.ParallelNode({\n          nodes: childTraceNodes,\n        }),\n      });\n    }\n    case 'Flatten': {\n      return new Trace.QueryPlanNode({\n        flatten: new Trace.QueryPlanNode.FlattenNode({\n          responsePath: node.path.map(\n            id =>\n              new Trace.QueryPlanNode.ResponsePathElement(\n                typeof id === 'string' ? { fieldName: id } : { index: id },\n              ),\n          ),\n          node: await executeNode(\n            context,\n            node.node,\n            moveIntoCursor(currentCursor, node.path),\n            captureTraces,\n            telemetryConfig\n          ),\n        }),\n      });\n    }\n    case 'Fetch': {\n      const traceNode = new Trace.QueryPlanNode.FetchNode({\n        serviceName: node.serviceName,\n        // executeFetch will fill in the other fields if desired.\n      });\n      try {\n        await executeFetch(\n          context,\n          node,\n          currentCursor,\n          captureTraces ? traceNode : null,\n          telemetryConfig\n        );\n      } catch (error) {\n        context.errors.push(error);\n      }\n      return new Trace.QueryPlanNode({ fetch: traceNode });\n    }\n    case 'Condition': {\n      const condition = evaluateCondition(node, context.operation.variableDefinitions, context.requestContext.request.variables);\n      const pickedBranch = condition ? node.ifClause : node.elseClause;\n      let branchTraceNode: Trace.QueryPlanNode | undefined = undefined;\n      if (pickedBranch) {\n        branchTraceNode = await executeNode(\n          context,\n          pickedBranch,\n          currentCursor,\n          captureTraces,\n          telemetryConfig\n        );\n      }\n\n      return new Trace.QueryPlanNode({\n        condition: new Trace.QueryPlanNode.ConditionNode({\n          condition: node.condition,\n          ifClause: condition ? branchTraceNode : undefined,\n          elseClause: condition ? undefined : branchTraceNode,\n        }),\n      });\n    }\n    case 'Defer': {\n      assert(false, `@defer support is not available in the gateway`);\n    }\n  }\n}\n\nasync function executeFetch(\n  context: ExecutionContext,\n  fetch: FetchNode,\n  currentCursor: ResultCursor,\n  traceNode: Trace.QueryPlanNode.FetchNode | null,\n  telemetryConfig?: OpenTelemetryConfig\n): Promise<void> {\n\n  const logger = context.requestContext.logger || console;\n  const service = context.serviceMap[fetch.serviceName];\n\n  return tracer.startActiveSpan(OpenTelemetrySpanNames.FETCH, {attributes:{service:fetch.serviceName}}, async span => {\n    try {\n      if (!service) {\n        throw new Error(`Couldn't find service with name \"${fetch.serviceName}\"`);\n      }\n\n      let entities: ResultMap[];\n      if (Array.isArray(currentCursor.data)) {\n        // Remove null or undefined entities from the list\n        entities = currentCursor.data.filter(isNotNullOrUndefined);\n      } else {\n        entities = [currentCursor.data];\n      }\n\n      if (entities.length < 1) return;\n\n      const variables = Object.create(null);\n      if (fetch.variableUsages) {\n        for (const variableName of fetch.variableUsages) {\n          const providedVariables = context.requestContext.request.variables;\n          if (\n              providedVariables &&\n              typeof providedVariables[variableName] !== 'undefined'\n          ) {\n            variables[variableName] = providedVariables[variableName];\n          }\n        }\n      }\n\n      if (!fetch.requires) {\n        const dataReceivedFromService = await sendOperation(variables);\n        if (dataReceivedFromService) {\n          applyRewrites(context.supergraphSchema, fetch.outputRewrites, dataReceivedFromService);\n        }\n\n        for (const entity of entities) {\n          deepMerge(entity, dataReceivedFromService);\n        }\n      } else {\n        const requires = fetch.requires;\n\n        const representations: ResultMap[] = [];\n        const representationToEntity: number[] = [];\n\n        entities.forEach((entity, index) => {\n          const representation = executeSelectionSet(\n            // Note that `requires` may include references to inacessible elements, so we should \"execute\" it using the supergrah\n            // schema, _not_ the API schema (the one in `context.operationContext.schema`). And this is not a security risk since\n            // what we're extracting here is what is sent to subgraphs, and subgraphs knows `@inacessible` elements.\n            context.supergraphSchema,\n            entity,\n            requires,\n          );\n          if (representation && representation[TypeNameMetaFieldDef.name]) {\n            applyRewrites(context.supergraphSchema, fetch.inputRewrites, representation);\n            representations.push(representation);\n            representationToEntity.push(index);\n          }\n        });\n\n        // If there are no representations, that means the type conditions in\n        // the requires don't match any entities.\n        if (representations.length < 1) return;\n\n        if ('representations' in variables) {\n          throw new Error(`Variables cannot contain key \"representations\"`);\n        }\n\n        const dataReceivedFromService = await sendOperation({...variables, representations});\n\n        if (!dataReceivedFromService) {\n          return;\n        }\n\n        if (\n            !(\n                dataReceivedFromService._entities &&\n                Array.isArray(dataReceivedFromService._entities)\n            )\n        ) {\n          throw new Error(`Expected \"data._entities\" in response to be an array`);\n        }\n\n        const receivedEntities = dataReceivedFromService._entities;\n\n        if (receivedEntities.length !== representations.length) {\n          throw new Error(\n              `Expected \"data._entities\" to contain ${representations.length} elements`,\n          );\n        }\n\n\n        for (let i = 0; i < entities.length; i++) {\n          const receivedEntity = receivedEntities[i];\n          const existingEntity = entities[representationToEntity[i]];\n          if (receivedEntity && !receivedEntity[\"__typename\"]) {\n            const typename = existingEntity[\"__typename\"];\n            receivedEntity[\"__typename\"] = typename;\n          }\n          applyRewrites(context.supergraphSchema, fetch.outputRewrites, receivedEntity);\n          deepMerge(entities[representationToEntity[i]], receivedEntity);\n        }\n      }\n    }\n    catch (err) {\n      recordExceptions(span, [err], telemetryConfig)\n      span.setStatus({ code:SpanStatusCode.ERROR });\n      throw err;\n    }\n    finally\n    {\n      span.end();\n    }\n  });\n\n  async function sendOperation(\n    variables: Record<string, any>,\n  ): Promise<ResultMap | void | null> {\n\n    // We declare this as 'any' because it is missing url and method, which\n    // GraphQLRequest.http is supposed to have if it exists.\n    // (This is admittedly kinda weird, since we currently do pass url and\n    // method to `process` from the SDL fetching call site, but presumably\n    // existing implementation of the interface don't try to look for these\n    // fields. RemoteGraphQLDataSource just overwrites them.)\n    let http: any;\n\n    // If we're capturing a trace for Studio, then save the operation text to\n    // the node we're building and tell the federated service to include a trace\n    // in its response.\n    if (traceNode) {\n      http = {\n        headers: new Headers({ 'apollo-federation-include-trace': 'ftv1' }),\n      };\n      if (\n        context.requestContext.metrics &&\n        context.requestContext.metrics.startHrTime\n      ) {\n        traceNode.sentTimeOffset = durationHrTimeToNanos(\n          process.hrtime(context.requestContext.metrics.startHrTime),\n        );\n      }\n      traceNode.sentTime = dateToProtoTimestamp(new Date());\n    }\n\n    const response = await service.process({\n      kind: GraphQLDataSourceRequestKind.INCOMING_OPERATION,\n      request: {\n        query: fetch.operation,\n        variables,\n        operationName: fetch.operationName,\n        http,\n      },\n      incomingRequestContext: context.requestContext,\n      context: context.requestContext.context,\n      document: fetch.operationDocumentNode,\n      pathInIncomingRequest: currentCursor.path\n    });\n\n    if (response.errors) {\n      const errorPathHelper = makeLazyErrorPathGenerator(fetch, currentCursor);\n\n      const errors = response.errors.map((error) =>\n        downstreamServiceError(error, fetch.serviceName, errorPathHelper),\n      );\n      context.errors.push(...errors);\n\n      if (!response.extensions?.ftv1) {\n        const errorPaths = response.errors.map((error) => ({\n          subgraph: fetch.serviceName,\n          path: error.path,\n        }));\n        if (context.requestContext.metrics.nonFtv1ErrorPaths) {\n          context.requestContext.metrics.nonFtv1ErrorPaths.push(...errorPaths);\n        } else {\n          context.requestContext.metrics.nonFtv1ErrorPaths = errorPaths;\n        }\n      }\n    }\n\n    // If we're capturing a trace for Studio, save the received trace into the\n    // query plan.\n    if (traceNode) {\n      traceNode.receivedTime = dateToProtoTimestamp(new Date());\n\n      if (response.extensions && response.extensions.ftv1) {\n        const traceBase64 = response.extensions.ftv1;\n\n        let traceBuffer: Buffer | undefined;\n        let traceParsingFailed = false;\n        try {\n          // XXX support non-Node implementations by using Uint8Array? protobufjs\n          // supports that, but there's not a no-deps base64 implementation.\n          traceBuffer = Buffer.from(traceBase64, 'base64');\n        } catch (err) {\n          logger.error(\n            `error decoding base64 for federated trace from ${fetch.serviceName}: ${err}`,\n          );\n          traceParsingFailed = true;\n        }\n\n        if (traceBuffer) {\n          try {\n            const trace = Trace.decode(traceBuffer);\n            traceNode.trace = trace;\n          } catch (err) {\n            logger.error(\n              `error decoding protobuf for federated trace from ${fetch.serviceName}: ${err}`,\n            );\n            traceParsingFailed = true;\n          }\n        }\n        if (traceNode.trace) {\n          // Federation requires the root operations in the composed schema\n          // to have the default names (Query, Mutation, Subscription) even\n          // if the implementing services choose different names, so we override\n          // whatever the implementing service reported here.\n          const rootTypeName = defaultRootName(\n            context.operationContext.operation.operation,\n          );\n          traceNode.trace.root?.child?.forEach((child) => {\n            child.parentType = rootTypeName;\n          });\n        }\n        traceNode.traceParsingFailed = traceParsingFailed;\n      }\n    }\n\n    return response.data;\n  }\n}\n\ntype ErrorPathGenerator = (\n  path: GraphQLErrorOptions['path'],\n) => GraphQLErrorOptions['path'];\n\n/**\n * Given response data collected so far and a path such as:\n *\n *    [\"foo\", \"@\", \"bar\", \"@\"]\n *\n * the returned function generates a list of \"hydrated\" paths, replacing the\n * `\"@\"` with array indices from the actual data. When we encounter an error in\n * a subgraph fetch, we can use the index in the error's path (e.g.\n * `[\"_entities\", 2, \"boom\"]`) to look up the appropriate \"hydrated\" path\n * prefix. The result is something like:\n *\n *    [\"foo\", 1, \"bar\", 2, \"boom\"]\n *\n * The returned function is lazy \u2014\u00A0if we don't encounter errors and it's never\n * called, then we never process the response data to hydrate the paths.\n *\n * This approach is inspired by Apollo Router: https://github.com/apollographql/router/blob/0fd59d2e11cc09e82c876a5fee263b5658cb9539/apollo-router/src/query_planner/fetch.rs#L295-L403\n */\nfunction makeLazyErrorPathGenerator(\n  fetch: FetchNode,\n  cursor: ResultCursor,\n): ErrorPathGenerator {\n  let hydratedPaths: ResponsePath[] | undefined;\n\n  return (errorPath: GraphQLErrorOptions['path']) => {\n    if (fetch.requires && typeof errorPath?.[1] === 'number') {\n      // only generate paths if we need to look them up via entity index\n      if (!hydratedPaths) {\n        hydratedPaths = [];\n        generateHydratedPaths(\n          [],\n          cursor.path,\n          cursor.fullResult,\n          hydratedPaths,\n        );\n      }\n\n      const hydratedPath = hydratedPaths[errorPath[1]] ?? [];\n      return [...hydratedPath, ...errorPath.slice(2)];\n    } else {\n      return errorPath ? [...cursor.path, ...errorPath.slice()] : undefined;\n    }\n  };\n}\n\n/**\n * Given a deeply nested object and a path such as `[\"foo\", \"@\", \"bar\", \"@\"]`,\n * walk the path to build up a list of of \"hydrated\" paths that match the data,\n * such as:\n *\n *    [\n *      [\"foo\", 0, \"bar\", 0, \"boom\"],\n *      [\"foo\", 0, \"bar\", 1, \"boom\"]\n *      [\"foo\", 1, \"bar\", 0, \"boom\"],\n *      [\"foo\", 1, \"bar\", 1, \"boom\"]\n *    ]\n */\nexport function generateHydratedPaths(\n  parent: ResponsePath,\n  path: ResponsePath,\n  data: ResultMap | null,\n  result: ResponsePath[],\n) {\n  const head = path[0];\n\n  if (data == null) {\n    return;\n  }\n\n  if (head == null) { // terminate recursion\n    result.push(parent.slice());\n  } else if (head === '@') {\n    assert(Array.isArray(data), 'expected array when encountering `@`');\n    for (const [i, value] of data.entries()) {\n      parent.push(i);\n      generateHydratedPaths(parent, path.slice(1), value, result);\n      parent.pop();\n    }\n  } else if (typeof head === 'string') {\n    if (Array.isArray(data)) {\n      for (const [i, value] of data.entries()) {\n        parent.push(i);\n        generateHydratedPaths(parent, path, value, result);\n        parent.pop();\n      }\n    } else {\n      if (head in data) {\n        const value = data[head];\n        parent.push(head);\n        generateHydratedPaths(parent, path.slice(1), value, result);\n        parent.pop();\n      }\n    }\n  } else {\n    assert(false, `unknown path part \"${head}\"`);\n  }\n}\n\n/**\n *\n * @param source Result of GraphQL execution.\n * @param selectionSet\n */\nfunction executeSelectionSet(\n  schema: GraphQLSchema,\n  source: Record<string, any> | null,\n  selections: QueryPlanSelectionNode[],\n): Record<string, any> | null {\n\n  // If the underlying service has returned null for the parent (source)\n  // then there is no need to iterate through the parent's selection set\n  if (source === null) {\n    return null;\n  }\n\n  const result: Record<string, any> = Object.create(null);\n\n  for (const selection of selections) {\n    switch (selection.kind) {\n      case Kind.FIELD:\n        const responseName = getResponseName(selection as QueryPlanFieldNode);\n        const selections = (selection as QueryPlanFieldNode).selections;\n\n        if (typeof source[responseName] === 'undefined') {\n          // This method is called to collect the inputs/requires of a fetch. So, assuming query plans are correct\n          // (and we have not reason to assume otherwise here), all inputs should be fetched beforehand and the\n          // only reason for not finding one of the inputs is that we had an error fetching it _and_ that field\n          // is non-nullable (it it was nullable, error fetching the input would have make that input `null`; not\n          // having the input means the field is non-nullable so the whole entity had to be nullified/ignored,\n          // leading use to not have the field at all).\n          // In any case, we don't have all the necessary inputs for this particular entity and should ignore it.\n          // Note that an error has already been logged for whichever issue happen while fetching the inputs we're\n          // missing here, and that error had much more context, so no reason to log a duplicate (less useful) error\n          // here.\n          return null;\n        }\n\n        if (Array.isArray(source[responseName])) {\n          result[responseName] = source[responseName].map((value: any) =>\n            selections\n              ? executeSelectionSet(schema, value, selections)\n              : value,\n          );\n        } else if (selections) {\n          result[responseName] = executeSelectionSet(\n            schema,\n            source[responseName],\n            selections,\n          );\n        } else {\n          result[responseName] = source[responseName];\n        }\n        break;\n      case Kind.INLINE_FRAGMENT:\n        if (!selection.typeCondition || !source) continue;\n\n        if (isObjectOfType(schema, source, selection.typeCondition)) {\n          deepMerge(\n            result,\n            executeSelectionSet(schema, source, selection.selections),\n          );\n        }\n        break;\n    }\n  }\n\n  return result;\n}\n\nfunction moveIntoCursor(cursor: ResultCursor, pathInCursor: ResponsePath): ResultCursor | undefined {\n  const data = flattenResultsAtPath(cursor.data, pathInCursor);\n  return data ? {\n    path: cursor.path.concat(pathInCursor),\n    data,\n    fullResult: cursor.fullResult,\n  } : undefined;\n}\n\nfunction flattenResultsAtPath(value: ResultCursor['data'] | undefined | null, path: ResponsePath): ResultCursor['data'] | undefined | null {\n  if (path.length === 0) return value;\n  if (value === undefined || value === null) return value;\n\n  const [current, ...rest] = path;\n  if (current === '@') {\n    return value.flatMap((element: any) => flattenResultsAtPath(element, rest));\n  } else {\n    assert(typeof current === 'string', () => `Unexpected ${typeof current} found in path`);\n    assert(!Array.isArray(value), () => `Unexpected array in result for path element ${current}`);\n    // Note that this typecheck because `value[current]` is of type `any` and so the typechecker \"trusts us\", but in\n    // practice this only work because we use this on path that do not point to leaf types, and the `value[current]`\n    // is never a base type (non-object nor null/undefined).\n    return flattenResultsAtPath(value[current], rest);\n  }\n}\n\nfunction downstreamServiceError(\n  originalError: GraphQLFormattedError,\n  serviceName: string,\n  generateErrorPath: ErrorPathGenerator,\n) {\n  let { message } = originalError;\n  const { extensions } = originalError;\n\n  if (!message) {\n    message = `Error while fetching subquery from service \"${serviceName}\"`;\n  }\n\n  const errorOptions: GraphQLErrorOptions = {\n    originalError: originalError as Error,\n    path: generateErrorPath(originalError.path),\n    extensions: {\n      ...extensions,\n      // XXX The presence of a serviceName in extensions is used to\n      // determine if this error should be captured for metrics reporting.\n      serviceName,\n    },\n  };\n\n  const codeDef = errorCodeDef(originalError);\n  // It's possible the orignal has a code, but not one we know about (one generated by the underlying `GraphQLDataSource`,\n  // which we don't control). In that case, we want to use that code (and have thus no `ErrorCodeDefinition` usable).\n  if (!codeDef && extensions?.code) {\n    return new GraphQLError(message, errorOptions);\n  }\n  // Otherwise, we either use the code we found and know, or default to a general downstream error code.\n  return (codeDef ?? ERRORS.DOWNSTREAM_SERVICE_ERROR).err(\n    message,\n    errorOptions,\n  );\n}\n\nexport const defaultFieldResolverWithAliasSupport: GraphQLFieldResolver<\n  any,\n  any\n> = function(source, args, contextValue, info) {\n  // ensure source is a value for which property access is acceptable.\n  if (typeof source === 'object' || typeof source === 'function') {\n    // if this is an alias, check it first because a downstream service\n    // would have returned the data *already cast* to an alias responseName\n    const property = source[info.path.key];\n    if (typeof property === 'function') {\n      return source[info.fieldName](args, contextValue, info);\n    }\n    return property;\n  }\n};\n\n// Converts an hrtime array (as returned from process.hrtime) to nanoseconds.\n//\n// ONLY CALL THIS ON VALUES REPRESENTING DELTAS, NOT ON THE RAW RETURN VALUE\n// FROM process.hrtime() WITH NO ARGUMENTS.\n//\n// The entire point of the hrtime data structure is that the JavaScript Number\n// type can't represent all int64 values without loss of precision:\n// Number.MAX_SAFE_INTEGER nanoseconds is about 104 days. Calling this function\n// on a duration that represents a value less than 104 days is fine. Calling\n// this function on an absolute time (which is generally roughly time since\n// system boot) is not a good idea.\n//\n// XXX We should probably use google.protobuf.Duration on the wire instead of\n// ever trying to store durations in a single number.\nfunction durationHrTimeToNanos(hrtime: [number, number]) {\n  return hrtime[0] * 1e9 + hrtime[1];\n}\n\n// Converts a JS Date into a Timestamp.\nfunction dateToProtoTimestamp(date: Date): google.protobuf.Timestamp {\n  const totalMillis = +date;\n  const millis = totalMillis % 1000;\n  return new google.protobuf.Timestamp({\n    seconds: (totalMillis - millis) / 1000,\n    nanos: millis * 1e6,\n  });\n}\n", "// Adapted from https://github.com/kornelski/http-cache-semantics\n//\n// Copyright 2016-2018 Kornel Lesi\u0144ski\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions\n// are met:\n//\n// 1. Redistributions of source code must retain the above copyright\n//    notice, this list of conditions and the following disclaimer.\n//\n// 2. Redistributions in binary form must reproduce the above copyright\n//    notice, this list of conditions and the following disclaimer in\n//    the documentation and/or other materials provided with the\n//    distribution.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,\n// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\n// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS\n// OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED\n// AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT\n// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY\n// WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\n// POSSIBILITY OF SUCH DAMAGE.\n\nexport function parseCacheControlHeader(\n  header: string | null | undefined,\n): Record<string, string | true> {\n  const cc: Record<string, string | true> = {};\n  if (!header) return cc;\n\n  const parts = header.trim().split(/\\s*,\\s*/);\n  for (const part of parts) {\n    const [k, v] = part.split(/\\s*=\\s*/, 2);\n    cc[k] = v === undefined ? true : v.replace(/^\"|\"$/g, '');\n  }\n\n  return cc;\n}\n", "// Update with any zlib constants that are added or changed in the future.\n// Node v6 didn't export this, so we just hard code the version and rely\n// on all the other hard-coded values from zlib v4736.  When node v6\n// support drops, we can just export the realZlibConstants object.\nconst realZlibConstants = require('zlib').constants ||\n  /* istanbul ignore next */ { ZLIB_VERNUM: 4736 }\n\nmodule.exports = Object.freeze(Object.assign(Object.create(null), {\n  Z_NO_FLUSH: 0,\n  Z_PARTIAL_FLUSH: 1,\n  Z_SYNC_FLUSH: 2,\n  Z_FULL_FLUSH: 3,\n  Z_FINISH: 4,\n  Z_BLOCK: 5,\n  Z_OK: 0,\n  Z_STREAM_END: 1,\n  Z_NEED_DICT: 2,\n  Z_ERRNO: -1,\n  Z_STREAM_ERROR: -2,\n  Z_DATA_ERROR: -3,\n  Z_MEM_ERROR: -4,\n  Z_BUF_ERROR: -5,\n  Z_VERSION_ERROR: -6,\n  Z_NO_COMPRESSION: 0,\n  Z_BEST_SPEED: 1,\n  Z_BEST_COMPRESSION: 9,\n  Z_DEFAULT_COMPRESSION: -1,\n  Z_FILTERED: 1,\n  Z_HUFFMAN_ONLY: 2,\n  Z_RLE: 3,\n  Z_FIXED: 4,\n  Z_DEFAULT_STRATEGY: 0,\n  DEFLATE: 1,\n  INFLATE: 2,\n  GZIP: 3,\n  GUNZIP: 4,\n  DEFLATERAW: 5,\n  INFLATERAW: 6,\n  UNZIP: 7,\n  BROTLI_DECODE: 8,\n  BROTLI_ENCODE: 9,\n  Z_MIN_WINDOWBITS: 8,\n  Z_MAX_WINDOWBITS: 15,\n  Z_DEFAULT_WINDOWBITS: 15,\n  Z_MIN_CHUNK: 64,\n  Z_MAX_CHUNK: Infinity,\n  Z_DEFAULT_CHUNK: 16384,\n  Z_MIN_MEMLEVEL: 1,\n  Z_MAX_MEMLEVEL: 9,\n  Z_DEFAULT_MEMLEVEL: 8,\n  Z_MIN_LEVEL: -1,\n  Z_MAX_LEVEL: 9,\n  Z_DEFAULT_LEVEL: -1,\n  BROTLI_OPERATION_PROCESS: 0,\n  BROTLI_OPERATION_FLUSH: 1,\n  BROTLI_OPERATION_FINISH: 2,\n  BROTLI_OPERATION_EMIT_METADATA: 3,\n  BROTLI_MODE_GENERIC: 0,\n  BROTLI_MODE_TEXT: 1,\n  BROTLI_MODE_FONT: 2,\n  BROTLI_DEFAULT_MODE: 0,\n  BROTLI_MIN_QUALITY: 0,\n  BROTLI_MAX_QUALITY: 11,\n  BROTLI_DEFAULT_QUALITY: 11,\n  BROTLI_MIN_WINDOW_BITS: 10,\n  BROTLI_MAX_WINDOW_BITS: 24,\n  BROTLI_LARGE_MAX_WINDOW_BITS: 30,\n  BROTLI_DEFAULT_WINDOW: 22,\n  BROTLI_MIN_INPUT_BLOCK_BITS: 16,\n  BROTLI_MAX_INPUT_BLOCK_BITS: 24,\n  BROTLI_PARAM_MODE: 0,\n  BROTLI_PARAM_QUALITY: 1,\n  BROTLI_PARAM_LGWIN: 2,\n  BROTLI_PARAM_LGBLOCK: 3,\n  BROTLI_PARAM_DISABLE_LITERAL_CONTEXT_MODELING: 4,\n  BROTLI_PARAM_SIZE_HINT: 5,\n  BROTLI_PARAM_LARGE_WINDOW: 6,\n  BROTLI_PARAM_NPOSTFIX: 7,\n  BROTLI_PARAM_NDIRECT: 8,\n  BROTLI_DECODER_RESULT_ERROR: 0,\n  BROTLI_DECODER_RESULT_SUCCESS: 1,\n  BROTLI_DECODER_RESULT_NEEDS_MORE_INPUT: 2,\n  BROTLI_DECODER_RESULT_NEEDS_MORE_OUTPUT: 3,\n  BROTLI_DECODER_PARAM_DISABLE_RING_BUFFER_REALLOCATION: 0,\n  BROTLI_DECODER_PARAM_LARGE_WINDOW: 1,\n  BROTLI_DECODER_NO_ERROR: 0,\n  BROTLI_DECODER_SUCCESS: 1,\n  BROTLI_DECODER_NEEDS_MORE_INPUT: 2,\n  BROTLI_DECODER_NEEDS_MORE_OUTPUT: 3,\n  BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_NIBBLE: -1,\n  BROTLI_DECODER_ERROR_FORMAT_RESERVED: -2,\n  BROTLI_DECODER_ERROR_FORMAT_EXUBERANT_META_NIBBLE: -3,\n  BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_ALPHABET: -4,\n  BROTLI_DECODER_ERROR_FORMAT_SIMPLE_HUFFMAN_SAME: -5,\n  BROTLI_DECODER_ERROR_FORMAT_CL_SPACE: -6,\n  BROTLI_DECODER_ERROR_FORMAT_HUFFMAN_SPACE: -7,\n  BROTLI_DECODER_ERROR_FORMAT_CONTEXT_MAP_REPEAT: -8,\n  BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_1: -9,\n  BROTLI_DECODER_ERROR_FORMAT_BLOCK_LENGTH_2: -10,\n  BROTLI_DECODER_ERROR_FORMAT_TRANSFORM: -11,\n  BROTLI_DECODER_ERROR_FORMAT_DICTIONARY: -12,\n  BROTLI_DECODER_ERROR_FORMAT_WINDOW_BITS: -13,\n  BROTLI_DECODER_ERROR_FORMAT_PADDING_1: -14,\n  BROTLI_DECODER_ERROR_FORMAT_PADDING_2: -15,\n  BROTLI_DECODER_ERROR_FORMAT_DISTANCE: -16,\n  BROTLI_DECODER_ERROR_DICTIONARY_NOT_SET: -19,\n  BROTLI_DECODER_ERROR_INVALID_ARGUMENTS: -20,\n  BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MODES: -21,\n  BROTLI_DECODER_ERROR_ALLOC_TREE_GROUPS: -22,\n  BROTLI_DECODER_ERROR_ALLOC_CONTEXT_MAP: -25,\n  BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_1: -26,\n  BROTLI_DECODER_ERROR_ALLOC_RING_BUFFER_2: -27,\n  BROTLI_DECODER_ERROR_ALLOC_BLOCK_TYPE_TREES: -30,\n  BROTLI_DECODER_ERROR_UNREACHABLE: -31,\n}, realZlibConstants))\n", "'use strict'\nconst proc = typeof process === 'object' && process ? process : {\n  stdout: null,\n  stderr: null,\n}\nconst EE = require('events')\nconst Stream = require('stream')\nconst SD = require('string_decoder').StringDecoder\n\nconst EOF = Symbol('EOF')\nconst MAYBE_EMIT_END = Symbol('maybeEmitEnd')\nconst EMITTED_END = Symbol('emittedEnd')\nconst EMITTING_END = Symbol('emittingEnd')\nconst EMITTED_ERROR = Symbol('emittedError')\nconst CLOSED = Symbol('closed')\nconst READ = Symbol('read')\nconst FLUSH = Symbol('flush')\nconst FLUSHCHUNK = Symbol('flushChunk')\nconst ENCODING = Symbol('encoding')\nconst DECODER = Symbol('decoder')\nconst FLOWING = Symbol('flowing')\nconst PAUSED = Symbol('paused')\nconst RESUME = Symbol('resume')\nconst BUFFERLENGTH = Symbol('bufferLength')\nconst BUFFERPUSH = Symbol('bufferPush')\nconst BUFFERSHIFT = Symbol('bufferShift')\nconst OBJECTMODE = Symbol('objectMode')\nconst DESTROYED = Symbol('destroyed')\nconst EMITDATA = Symbol('emitData')\nconst EMITEND = Symbol('emitEnd')\nconst EMITEND2 = Symbol('emitEnd2')\nconst ASYNC = Symbol('async')\n\nconst defer = fn => Promise.resolve().then(fn)\n\n// TODO remove when Node v8 support drops\nconst doIter = global._MP_NO_ITERATOR_SYMBOLS_  !== '1'\nconst ASYNCITERATOR = doIter && Symbol.asyncIterator\n  || Symbol('asyncIterator not implemented')\nconst ITERATOR = doIter && Symbol.iterator\n  || Symbol('iterator not implemented')\n\n// events that mean 'the stream is over'\n// these are treated specially, and re-emitted\n// if they are listened for after emitting.\nconst isEndish = ev =>\n  ev === 'end' ||\n  ev === 'finish' ||\n  ev === 'prefinish'\n\nconst isArrayBuffer = b => b instanceof ArrayBuffer ||\n  typeof b === 'object' &&\n  b.constructor &&\n  b.constructor.name === 'ArrayBuffer' &&\n  b.byteLength >= 0\n\nconst isArrayBufferView = b => !Buffer.isBuffer(b) && ArrayBuffer.isView(b)\n\nclass Pipe {\n  constructor (src, dest, opts) {\n    this.src = src\n    this.dest = dest\n    this.opts = opts\n    this.ondrain = () => src[RESUME]()\n    dest.on('drain', this.ondrain)\n  }\n  unpipe () {\n    this.dest.removeListener('drain', this.ondrain)\n  }\n  // istanbul ignore next - only here for the prototype\n  proxyErrors () {}\n  end () {\n    this.unpipe()\n    if (this.opts.end)\n      this.dest.end()\n  }\n}\n\nclass PipeProxyErrors extends Pipe {\n  unpipe () {\n    this.src.removeListener('error', this.proxyErrors)\n    super.unpipe()\n  }\n  constructor (src, dest, opts) {\n    super(src, dest, opts)\n    this.proxyErrors = er => dest.emit('error', er)\n    src.on('error', this.proxyErrors)\n  }\n}\n\nmodule.exports = class Minipass extends Stream {\n  constructor (options) {\n    super()\n    this[FLOWING] = false\n    // whether we're explicitly paused\n    this[PAUSED] = false\n    this.pipes = []\n    this.buffer = []\n    this[OBJECTMODE] = options && options.objectMode || false\n    if (this[OBJECTMODE])\n      this[ENCODING] = null\n    else\n      this[ENCODING] = options && options.encoding || null\n    if (this[ENCODING] === 'buffer')\n      this[ENCODING] = null\n    this[ASYNC] = options && !!options.async || false\n    this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null\n    this[EOF] = false\n    this[EMITTED_END] = false\n    this[EMITTING_END] = false\n    this[CLOSED] = false\n    this[EMITTED_ERROR] = null\n    this.writable = true\n    this.readable = true\n    this[BUFFERLENGTH] = 0\n    this[DESTROYED] = false\n  }\n\n  get bufferLength () { return this[BUFFERLENGTH] }\n\n  get encoding () { return this[ENCODING] }\n  set encoding (enc) {\n    if (this[OBJECTMODE])\n      throw new Error('cannot set encoding in objectMode')\n\n    if (this[ENCODING] && enc !== this[ENCODING] &&\n        (this[DECODER] && this[DECODER].lastNeed || this[BUFFERLENGTH]))\n      throw new Error('cannot change encoding')\n\n    if (this[ENCODING] !== enc) {\n      this[DECODER] = enc ? new SD(enc) : null\n      if (this.buffer.length)\n        this.buffer = this.buffer.map(chunk => this[DECODER].write(chunk))\n    }\n\n    this[ENCODING] = enc\n  }\n\n  setEncoding (enc) {\n    this.encoding = enc\n  }\n\n  get objectMode () { return this[OBJECTMODE] }\n  set objectMode (om) { this[OBJECTMODE] = this[OBJECTMODE] || !!om }\n\n  get ['async'] () { return this[ASYNC] }\n  set ['async'] (a) { this[ASYNC] = this[ASYNC] || !!a }\n\n  write (chunk, encoding, cb) {\n    if (this[EOF])\n      throw new Error('write after end')\n\n    if (this[DESTROYED]) {\n      this.emit('error', Object.assign(\n        new Error('Cannot call write after a stream was destroyed'),\n        { code: 'ERR_STREAM_DESTROYED' }\n      ))\n      return true\n    }\n\n    if (typeof encoding === 'function')\n      cb = encoding, encoding = 'utf8'\n\n    if (!encoding)\n      encoding = 'utf8'\n\n    const fn = this[ASYNC] ? defer : f => f()\n\n    // convert array buffers and typed array views into buffers\n    // at some point in the future, we may want to do the opposite!\n    // leave strings and buffers as-is\n    // anything else switches us into object mode\n    if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {\n      if (isArrayBufferView(chunk))\n        chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)\n      else if (isArrayBuffer(chunk))\n        chunk = Buffer.from(chunk)\n      else if (typeof chunk !== 'string')\n        // use the setter so we throw if we have encoding set\n        this.objectMode = true\n    }\n\n    // handle object mode up front, since it's simpler\n    // this yields better performance, fewer checks later.\n    if (this[OBJECTMODE]) {\n      /* istanbul ignore if - maybe impossible? */\n      if (this.flowing && this[BUFFERLENGTH] !== 0)\n        this[FLUSH](true)\n\n      if (this.flowing)\n        this.emit('data', chunk)\n      else\n        this[BUFFERPUSH](chunk)\n\n      if (this[BUFFERLENGTH] !== 0)\n        this.emit('readable')\n\n      if (cb)\n        fn(cb)\n\n      return this.flowing\n    }\n\n    // at this point the chunk is a buffer or string\n    // don't buffer it up or send it to the decoder\n    if (!chunk.length) {\n      if (this[BUFFERLENGTH] !== 0)\n        this.emit('readable')\n      if (cb)\n        fn(cb)\n      return this.flowing\n    }\n\n    // fast-path writing strings of same encoding to a stream with\n    // an empty buffer, skipping the buffer/decoder dance\n    if (typeof chunk === 'string' &&\n        // unless it is a string already ready for us to use\n        !(encoding === this[ENCODING] && !this[DECODER].lastNeed)) {\n      chunk = Buffer.from(chunk, encoding)\n    }\n\n    if (Buffer.isBuffer(chunk) && this[ENCODING])\n      chunk = this[DECODER].write(chunk)\n\n    // Note: flushing CAN potentially switch us into not-flowing mode\n    if (this.flowing && this[BUFFERLENGTH] !== 0)\n      this[FLUSH](true)\n\n    if (this.flowing)\n      this.emit('data', chunk)\n    else\n      this[BUFFERPUSH](chunk)\n\n    if (this[BUFFERLENGTH] !== 0)\n      this.emit('readable')\n\n    if (cb)\n      fn(cb)\n\n    return this.flowing\n  }\n\n  read (n) {\n    if (this[DESTROYED])\n      return null\n\n    if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH]) {\n      this[MAYBE_EMIT_END]()\n      return null\n    }\n\n    if (this[OBJECTMODE])\n      n = null\n\n    if (this.buffer.length > 1 && !this[OBJECTMODE]) {\n      if (this.encoding)\n        this.buffer = [this.buffer.join('')]\n      else\n        this.buffer = [Buffer.concat(this.buffer, this[BUFFERLENGTH])]\n    }\n\n    const ret = this[READ](n || null, this.buffer[0])\n    this[MAYBE_EMIT_END]()\n    return ret\n  }\n\n  [READ] (n, chunk) {\n    if (n === chunk.length || n === null)\n      this[BUFFERSHIFT]()\n    else {\n      this.buffer[0] = chunk.slice(n)\n      chunk = chunk.slice(0, n)\n      this[BUFFERLENGTH] -= n\n    }\n\n    this.emit('data', chunk)\n\n    if (!this.buffer.length && !this[EOF])\n      this.emit('drain')\n\n    return chunk\n  }\n\n  end (chunk, encoding, cb) {\n    if (typeof chunk === 'function')\n      cb = chunk, chunk = null\n    if (typeof encoding === 'function')\n      cb = encoding, encoding = 'utf8'\n    if (chunk)\n      this.write(chunk, encoding)\n    if (cb)\n      this.once('end', cb)\n    this[EOF] = true\n    this.writable = false\n\n    // if we haven't written anything, then go ahead and emit,\n    // even if we're not reading.\n    // we'll re-emit if a new 'end' listener is added anyway.\n    // This makes MP more suitable to write-only use cases.\n    if (this.flowing || !this[PAUSED])\n      this[MAYBE_EMIT_END]()\n    return this\n  }\n\n  // don't let the internal resume be overwritten\n  [RESUME] () {\n    if (this[DESTROYED])\n      return\n\n    this[PAUSED] = false\n    this[FLOWING] = true\n    this.emit('resume')\n    if (this.buffer.length)\n      this[FLUSH]()\n    else if (this[EOF])\n      this[MAYBE_EMIT_END]()\n    else\n      this.emit('drain')\n  }\n\n  resume () {\n    return this[RESUME]()\n  }\n\n  pause () {\n    this[FLOWING] = false\n    this[PAUSED] = true\n  }\n\n  get destroyed () {\n    return this[DESTROYED]\n  }\n\n  get flowing () {\n    return this[FLOWING]\n  }\n\n  get paused () {\n    return this[PAUSED]\n  }\n\n  [BUFFERPUSH] (chunk) {\n    if (this[OBJECTMODE])\n      this[BUFFERLENGTH] += 1\n    else\n      this[BUFFERLENGTH] += chunk.length\n    this.buffer.push(chunk)\n  }\n\n  [BUFFERSHIFT] () {\n    if (this.buffer.length) {\n      if (this[OBJECTMODE])\n        this[BUFFERLENGTH] -= 1\n      else\n        this[BUFFERLENGTH] -= this.buffer[0].length\n    }\n    return this.buffer.shift()\n  }\n\n  [FLUSH] (noDrain) {\n    do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]()))\n\n    if (!noDrain && !this.buffer.length && !this[EOF])\n      this.emit('drain')\n  }\n\n  [FLUSHCHUNK] (chunk) {\n    return chunk ? (this.emit('data', chunk), this.flowing) : false\n  }\n\n  pipe (dest, opts) {\n    if (this[DESTROYED])\n      return\n\n    const ended = this[EMITTED_END]\n    opts = opts || {}\n    if (dest === proc.stdout || dest === proc.stderr)\n      opts.end = false\n    else\n      opts.end = opts.end !== false\n    opts.proxyErrors = !!opts.proxyErrors\n\n    // piping an ended stream ends immediately\n    if (ended) {\n      if (opts.end)\n        dest.end()\n    } else {\n      this.pipes.push(!opts.proxyErrors ? new Pipe(this, dest, opts)\n        : new PipeProxyErrors(this, dest, opts))\n      if (this[ASYNC])\n        defer(() => this[RESUME]())\n      else\n        this[RESUME]()\n    }\n\n    return dest\n  }\n\n  unpipe (dest) {\n    const p = this.pipes.find(p => p.dest === dest)\n    if (p) {\n      this.pipes.splice(this.pipes.indexOf(p), 1)\n      p.unpipe()\n    }\n  }\n\n  addListener (ev, fn) {\n    return this.on(ev, fn)\n  }\n\n  on (ev, fn) {\n    const ret = super.on(ev, fn)\n    if (ev === 'data' && !this.pipes.length && !this.flowing)\n      this[RESUME]()\n    else if (ev === 'readable' && this[BUFFERLENGTH] !== 0)\n      super.emit('readable')\n    else if (isEndish(ev) && this[EMITTED_END]) {\n      super.emit(ev)\n      this.removeAllListeners(ev)\n    } else if (ev === 'error' && this[EMITTED_ERROR]) {\n      if (this[ASYNC])\n        defer(() => fn.call(this, this[EMITTED_ERROR]))\n      else\n        fn.call(this, this[EMITTED_ERROR])\n    }\n    return ret\n  }\n\n  get emittedEnd () {\n    return this[EMITTED_END]\n  }\n\n  [MAYBE_EMIT_END] () {\n    if (!this[EMITTING_END] &&\n        !this[EMITTED_END] &&\n        !this[DESTROYED] &&\n        this.buffer.length === 0 &&\n        this[EOF]) {\n      this[EMITTING_END] = true\n      this.emit('end')\n      this.emit('prefinish')\n      this.emit('finish')\n      if (this[CLOSED])\n        this.emit('close')\n      this[EMITTING_END] = false\n    }\n  }\n\n  emit (ev, data, ...extra) {\n    // error and close are only events allowed after calling destroy()\n    if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED])\n      return\n    else if (ev === 'data') {\n      return !data ? false\n        : this[ASYNC] ? defer(() => this[EMITDATA](data))\n        : this[EMITDATA](data)\n    } else if (ev === 'end') {\n      return this[EMITEND]()\n    } else if (ev === 'close') {\n      this[CLOSED] = true\n      // don't emit close before 'end' and 'finish'\n      if (!this[EMITTED_END] && !this[DESTROYED])\n        return\n      const ret = super.emit('close')\n      this.removeAllListeners('close')\n      return ret\n    } else if (ev === 'error') {\n      this[EMITTED_ERROR] = data\n      const ret = super.emit('error', data)\n      this[MAYBE_EMIT_END]()\n      return ret\n    } else if (ev === 'resume') {\n      const ret = super.emit('resume')\n      this[MAYBE_EMIT_END]()\n      return ret\n    } else if (ev === 'finish' || ev === 'prefinish') {\n      const ret = super.emit(ev)\n      this.removeAllListeners(ev)\n      return ret\n    }\n\n    // Some other unknown event\n    const ret = super.emit(ev, data, ...extra)\n    this[MAYBE_EMIT_END]()\n    return ret\n  }\n\n  [EMITDATA] (data) {\n    for (const p of this.pipes) {\n      if (p.dest.write(data) === false)\n        this.pause()\n    }\n    const ret = super.emit('data', data)\n    this[MAYBE_EMIT_END]()\n    return ret\n  }\n\n  [EMITEND] () {\n    if (this[EMITTED_END])\n      return\n\n    this[EMITTED_END] = true\n    this.readable = false\n    if (this[ASYNC])\n      defer(() => this[EMITEND2]())\n    else\n      this[EMITEND2]()\n  }\n\n  [EMITEND2] () {\n    if (this[DECODER]) {\n      const data = this[DECODER].end()\n      if (data) {\n        for (const p of this.pipes) {\n          p.dest.write(data)\n        }\n        super.emit('data', data)\n      }\n    }\n\n    for (const p of this.pipes) {\n      p.end()\n    }\n    const ret = super.emit('end')\n    this.removeAllListeners('end')\n    return ret\n  }\n\n  // const all = await stream.collect()\n  collect () {\n    const buf = []\n    if (!this[OBJECTMODE])\n      buf.dataLength = 0\n    // set the promise first, in case an error is raised\n    // by triggering the flow here.\n    const p = this.promise()\n    this.on('data', c => {\n      buf.push(c)\n      if (!this[OBJECTMODE])\n        buf.dataLength += c.length\n    })\n    return p.then(() => buf)\n  }\n\n  // const data = await stream.concat()\n  concat () {\n    return this[OBJECTMODE]\n      ? Promise.reject(new Error('cannot concat in objectMode'))\n      : this.collect().then(buf =>\n          this[OBJECTMODE]\n            ? Promise.reject(new Error('cannot concat in objectMode'))\n            : this[ENCODING] ? buf.join('') : Buffer.concat(buf, buf.dataLength))\n  }\n\n  // stream.promise().then(() => done, er => emitted error)\n  promise () {\n    return new Promise((resolve, reject) => {\n      this.on(DESTROYED, () => reject(new Error('stream destroyed')))\n      this.on('error', er => reject(er))\n      this.on('end', () => resolve())\n    })\n  }\n\n  // for await (let chunk of stream)\n  [ASYNCITERATOR] () {\n    const next = () => {\n      const res = this.read()\n      if (res !== null)\n        return Promise.resolve({ done: false, value: res })\n\n      if (this[EOF])\n        return Promise.resolve({ done: true })\n\n      let resolve = null\n      let reject = null\n      const onerr = er => {\n        this.removeListener('data', ondata)\n        this.removeListener('end', onend)\n        reject(er)\n      }\n      const ondata = value => {\n        this.removeListener('error', onerr)\n        this.removeListener('end', onend)\n        this.pause()\n        resolve({ value: value, done: !!this[EOF] })\n      }\n      const onend = () => {\n        this.removeListener('error', onerr)\n        this.removeListener('data', ondata)\n        resolve({ done: true })\n      }\n      const ondestroy = () => onerr(new Error('stream destroyed'))\n      return new Promise((res, rej) => {\n        reject = rej\n        resolve = res\n        this.once(DESTROYED, ondestroy)\n        this.once('error', onerr)\n        this.once('end', onend)\n        this.once('data', ondata)\n      })\n    }\n\n    return { next }\n  }\n\n  // for (let chunk of stream)\n  [ITERATOR] () {\n    const next = () => {\n      const value = this.read()\n      const done = value === null\n      return { value, done }\n    }\n    return { next }\n  }\n\n  destroy (er) {\n    if (this[DESTROYED]) {\n      if (er)\n        this.emit('error', er)\n      else\n        this.emit(DESTROYED)\n      return this\n    }\n\n    this[DESTROYED] = true\n\n    // throw away all buffered data, it's never coming out\n    this.buffer.length = 0\n    this[BUFFERLENGTH] = 0\n\n    if (typeof this.close === 'function' && !this[CLOSED])\n      this.close()\n\n    if (er)\n      this.emit('error', er)\n    else // if no error to emit, still reject pending promises\n      this.emit(DESTROYED)\n\n    return this\n  }\n\n  static isStream (s) {\n    return !!s && (s instanceof Minipass || s instanceof Stream ||\n      s instanceof EE && (\n        typeof s.pipe === 'function' || // readable\n        (typeof s.write === 'function' && typeof s.end === 'function') // writable\n      ))\n  }\n}\n", "'use strict'\n\nconst assert = require('assert')\nconst Buffer = require('buffer').Buffer\nconst realZlib = require('zlib')\n\nconst constants = exports.constants = require('./constants.js')\nconst Minipass = require('minipass')\n\nconst OriginalBufferConcat = Buffer.concat\n\nconst _superWrite = Symbol('_superWrite')\nclass ZlibError extends Error {\n  constructor (err) {\n    super('zlib: ' + err.message)\n    this.code = err.code\n    this.errno = err.errno\n    /* istanbul ignore if */\n    if (!this.code)\n      this.code = 'ZLIB_ERROR'\n\n    this.message = 'zlib: ' + err.message\n    Error.captureStackTrace(this, this.constructor)\n  }\n\n  get name () {\n    return 'ZlibError'\n  }\n}\n\n// the Zlib class they all inherit from\n// This thing manages the queue of requests, and returns\n// true or false if there is anything in the queue when\n// you call the .write() method.\nconst _opts = Symbol('opts')\nconst _flushFlag = Symbol('flushFlag')\nconst _finishFlushFlag = Symbol('finishFlushFlag')\nconst _fullFlushFlag = Symbol('fullFlushFlag')\nconst _handle = Symbol('handle')\nconst _onError = Symbol('onError')\nconst _sawError = Symbol('sawError')\nconst _level = Symbol('level')\nconst _strategy = Symbol('strategy')\nconst _ended = Symbol('ended')\nconst _defaultFullFlush = Symbol('_defaultFullFlush')\n\nclass ZlibBase extends Minipass {\n  constructor (opts, mode) {\n    if (!opts || typeof opts !== 'object')\n      throw new TypeError('invalid options for ZlibBase constructor')\n\n    super(opts)\n    this[_sawError] = false\n    this[_ended] = false\n    this[_opts] = opts\n\n    this[_flushFlag] = opts.flush\n    this[_finishFlushFlag] = opts.finishFlush\n    // this will throw if any options are invalid for the class selected\n    try {\n      this[_handle] = new realZlib[mode](opts)\n    } catch (er) {\n      // make sure that all errors get decorated properly\n      throw new ZlibError(er)\n    }\n\n    this[_onError] = (err) => {\n      // no sense raising multiple errors, since we abort on the first one.\n      if (this[_sawError])\n        return\n\n      this[_sawError] = true\n\n      // there is no way to cleanly recover.\n      // continuing only obscures problems.\n      this.close()\n      this.emit('error', err)\n    }\n\n    this[_handle].on('error', er => this[_onError](new ZlibError(er)))\n    this.once('end', () => this.close)\n  }\n\n  close () {\n    if (this[_handle]) {\n      this[_handle].close()\n      this[_handle] = null\n      this.emit('close')\n    }\n  }\n\n  reset () {\n    if (!this[_sawError]) {\n      assert(this[_handle], 'zlib binding closed')\n      return this[_handle].reset()\n    }\n  }\n\n  flush (flushFlag) {\n    if (this.ended)\n      return\n\n    if (typeof flushFlag !== 'number')\n      flushFlag = this[_fullFlushFlag]\n    this.write(Object.assign(Buffer.alloc(0), { [_flushFlag]: flushFlag }))\n  }\n\n  end (chunk, encoding, cb) {\n    if (chunk)\n      this.write(chunk, encoding)\n    this.flush(this[_finishFlushFlag])\n    this[_ended] = true\n    return super.end(null, null, cb)\n  }\n\n  get ended () {\n    return this[_ended]\n  }\n\n  write (chunk, encoding, cb) {\n    // process the chunk using the sync process\n    // then super.write() all the outputted chunks\n    if (typeof encoding === 'function')\n      cb = encoding, encoding = 'utf8'\n\n    if (typeof chunk === 'string')\n      chunk = Buffer.from(chunk, encoding)\n\n    if (this[_sawError])\n      return\n    assert(this[_handle], 'zlib binding closed')\n\n    // _processChunk tries to .close() the native handle after it's done, so we\n    // intercept that by temporarily making it a no-op.\n    const nativeHandle = this[_handle]._handle\n    const originalNativeClose = nativeHandle.close\n    nativeHandle.close = () => {}\n    const originalClose = this[_handle].close\n    this[_handle].close = () => {}\n    // It also calls `Buffer.concat()` at the end, which may be convenient\n    // for some, but which we are not interested in as it slows us down.\n    Buffer.concat = (args) => args\n    let result\n    try {\n      const flushFlag = typeof chunk[_flushFlag] === 'number'\n        ? chunk[_flushFlag] : this[_flushFlag]\n      result = this[_handle]._processChunk(chunk, flushFlag)\n      // if we don't throw, reset it back how it was\n      Buffer.concat = OriginalBufferConcat\n    } catch (err) {\n      // or if we do, put Buffer.concat() back before we emit error\n      // Error events call into user code, which may call Buffer.concat()\n      Buffer.concat = OriginalBufferConcat\n      this[_onError](new ZlibError(err))\n    } finally {\n      if (this[_handle]) {\n        // Core zlib resets `_handle` to null after attempting to close the\n        // native handle. Our no-op handler prevented actual closure, but we\n        // need to restore the `._handle` property.\n        this[_handle]._handle = nativeHandle\n        nativeHandle.close = originalNativeClose\n        this[_handle].close = originalClose\n        // `_processChunk()` adds an 'error' listener. If we don't remove it\n        // after each call, these handlers start piling up.\n        this[_handle].removeAllListeners('error')\n        // make sure OUR error listener is still attached tho\n      }\n    }\n\n    if (this[_handle])\n      this[_handle].on('error', er => this[_onError](new ZlibError(er)))\n\n    let writeReturn\n    if (result) {\n      if (Array.isArray(result) && result.length > 0) {\n        // The first buffer is always `handle._outBuffer`, which would be\n        // re-used for later invocations; so, we always have to copy that one.\n        writeReturn = this[_superWrite](Buffer.from(result[0]))\n        for (let i = 1; i < result.length; i++) {\n          writeReturn = this[_superWrite](result[i])\n        }\n      } else {\n        writeReturn = this[_superWrite](Buffer.from(result))\n      }\n    }\n\n    if (cb)\n      cb()\n    return writeReturn\n  }\n\n  [_superWrite] (data) {\n    return super.write(data)\n  }\n}\n\nclass Zlib extends ZlibBase {\n  constructor (opts, mode) {\n    opts = opts || {}\n\n    opts.flush = opts.flush || constants.Z_NO_FLUSH\n    opts.finishFlush = opts.finishFlush || constants.Z_FINISH\n    super(opts, mode)\n\n    this[_fullFlushFlag] = constants.Z_FULL_FLUSH\n    this[_level] = opts.level\n    this[_strategy] = opts.strategy\n  }\n\n  params (level, strategy) {\n    if (this[_sawError])\n      return\n\n    if (!this[_handle])\n      throw new Error('cannot switch params when binding is closed')\n\n    // no way to test this without also not supporting params at all\n    /* istanbul ignore if */\n    if (!this[_handle].params)\n      throw new Error('not supported in this implementation')\n\n    if (this[_level] !== level || this[_strategy] !== strategy) {\n      this.flush(constants.Z_SYNC_FLUSH)\n      assert(this[_handle], 'zlib binding closed')\n      // .params() calls .flush(), but the latter is always async in the\n      // core zlib. We override .flush() temporarily to intercept that and\n      // flush synchronously.\n      const origFlush = this[_handle].flush\n      this[_handle].flush = (flushFlag, cb) => {\n        this.flush(flushFlag)\n        cb()\n      }\n      try {\n        this[_handle].params(level, strategy)\n      } finally {\n        this[_handle].flush = origFlush\n      }\n      /* istanbul ignore else */\n      if (this[_handle]) {\n        this[_level] = level\n        this[_strategy] = strategy\n      }\n    }\n  }\n}\n\n// minimal 2-byte header\nclass Deflate extends Zlib {\n  constructor (opts) {\n    super(opts, 'Deflate')\n  }\n}\n\nclass Inflate extends Zlib {\n  constructor (opts) {\n    super(opts, 'Inflate')\n  }\n}\n\n// gzip - bigger header, same deflate compression\nconst _portable = Symbol('_portable')\nclass Gzip extends Zlib {\n  constructor (opts) {\n    super(opts, 'Gzip')\n    this[_portable] = opts && !!opts.portable\n  }\n\n  [_superWrite] (data) {\n    if (!this[_portable])\n      return super[_superWrite](data)\n\n    // we'll always get the header emitted in one first chunk\n    // overwrite the OS indicator byte with 0xFF\n    this[_portable] = false\n    data[9] = 255\n    return super[_superWrite](data)\n  }\n}\n\nclass Gunzip extends Zlib {\n  constructor (opts) {\n    super(opts, 'Gunzip')\n  }\n}\n\n// raw - no header\nclass DeflateRaw extends Zlib {\n  constructor (opts) {\n    super(opts, 'DeflateRaw')\n  }\n}\n\nclass InflateRaw extends Zlib {\n  constructor (opts) {\n    super(opts, 'InflateRaw')\n  }\n}\n\n// auto-detect header.\nclass Unzip extends Zlib {\n  constructor (opts) {\n    super(opts, 'Unzip')\n  }\n}\n\nclass Brotli extends ZlibBase {\n  constructor (opts, mode) {\n    opts = opts || {}\n\n    opts.flush = opts.flush || constants.BROTLI_OPERATION_PROCESS\n    opts.finishFlush = opts.finishFlush || constants.BROTLI_OPERATION_FINISH\n\n    super(opts, mode)\n\n    this[_fullFlushFlag] = constants.BROTLI_OPERATION_FLUSH\n  }\n}\n\nclass BrotliCompress extends Brotli {\n  constructor (opts) {\n    super(opts, 'BrotliCompress')\n  }\n}\n\nclass BrotliDecompress extends Brotli {\n  constructor (opts) {\n    super(opts, 'BrotliDecompress')\n  }\n}\n\nexports.Deflate = Deflate\nexports.Inflate = Inflate\nexports.Gzip = Gzip\nexports.Gunzip = Gunzip\nexports.DeflateRaw = DeflateRaw\nexports.InflateRaw = InflateRaw\nexports.Unzip = Unzip\n/* istanbul ignore else */\nif (typeof realZlib.BrotliCompress === 'function') {\n  exports.BrotliCompress = BrotliCompress\n  exports.BrotliDecompress = BrotliDecompress\n} else {\n  exports.BrotliCompress = exports.BrotliDecompress = class {\n    constructor () {\n      throw new Error('Brotli is not supported in this version of Node.js')\n    }\n  }\n}\n", "const proc =\n  typeof process === 'object' && process\n    ? process\n    : {\n        stdout: null,\n        stderr: null,\n      }\nimport { EventEmitter } from 'node:events'\nimport Stream from 'node:stream'\nimport { StringDecoder } from 'node:string_decoder'\n\n/**\n * Same as StringDecoder, but exposing the `lastNeed` flag on the type\n */\ntype SD = StringDecoder & { lastNeed: boolean }\n\nexport type { SD, Pipe, PipeProxyErrors }\n\n/**\n * Return true if the argument is a Minipass stream, Node stream, or something\n * else that Minipass can interact with.\n */\nexport const isStream = (\n  s: any\n): s is Minipass.Readable | Minipass.Writable =>\n  !!s &&\n  typeof s === 'object' &&\n  (s instanceof Minipass ||\n    s instanceof Stream ||\n    isReadable(s) ||\n    isWritable(s))\n\n/**\n * Return true if the argument is a valid {@link Minipass.Readable}\n */\nexport const isReadable = (s: any): s is Minipass.Readable =>\n  !!s &&\n  typeof s === 'object' &&\n  s instanceof EventEmitter &&\n  typeof (s as Minipass.Readable).pipe === 'function' &&\n  // node core Writable streams have a pipe() method, but it throws\n  (s as Minipass.Readable).pipe !== Stream.Writable.prototype.pipe\n\n/**\n * Return true if the argument is a valid {@link Minipass.Writable}\n */\nexport const isWritable = (s: any): s is Minipass.Readable =>\n  !!s &&\n  typeof s === 'object' &&\n  s instanceof EventEmitter &&\n  typeof (s as Minipass.Writable).write === 'function' &&\n  typeof (s as Minipass.Writable).end === 'function'\n\nconst EOF = Symbol('EOF')\nconst MAYBE_EMIT_END = Symbol('maybeEmitEnd')\nconst EMITTED_END = Symbol('emittedEnd')\nconst EMITTING_END = Symbol('emittingEnd')\nconst EMITTED_ERROR = Symbol('emittedError')\nconst CLOSED = Symbol('closed')\nconst READ = Symbol('read')\nconst FLUSH = Symbol('flush')\nconst FLUSHCHUNK = Symbol('flushChunk')\nconst ENCODING = Symbol('encoding')\nconst DECODER = Symbol('decoder')\nconst FLOWING = Symbol('flowing')\nconst PAUSED = Symbol('paused')\nconst RESUME = Symbol('resume')\nconst BUFFER = Symbol('buffer')\nconst PIPES = Symbol('pipes')\nconst BUFFERLENGTH = Symbol('bufferLength')\nconst BUFFERPUSH = Symbol('bufferPush')\nconst BUFFERSHIFT = Symbol('bufferShift')\nconst OBJECTMODE = Symbol('objectMode')\n// internal event when stream is destroyed\nconst DESTROYED = Symbol('destroyed')\n// internal event when stream has an error\nconst ERROR = Symbol('error')\nconst EMITDATA = Symbol('emitData')\nconst EMITEND = Symbol('emitEnd')\nconst EMITEND2 = Symbol('emitEnd2')\nconst ASYNC = Symbol('async')\nconst ABORT = Symbol('abort')\nconst ABORTED = Symbol('aborted')\nconst SIGNAL = Symbol('signal')\nconst DATALISTENERS = Symbol('dataListeners')\nconst DISCARDED = Symbol('discarded')\n\nconst defer = (fn: (...a: any[]) => any) => Promise.resolve().then(fn)\nconst nodefer = (fn: (...a: any[]) => any) => fn()\n\n// events that mean 'the stream is over'\n// these are treated specially, and re-emitted\n// if they are listened for after emitting.\ntype EndishEvent = 'end' | 'finish' | 'prefinish'\nconst isEndish = (ev: any): ev is EndishEvent =>\n  ev === 'end' || ev === 'finish' || ev === 'prefinish'\n\nconst isArrayBufferLike = (b: any): b is ArrayBufferLike =>\n  b instanceof ArrayBuffer ||\n  (!!b &&\n    typeof b === 'object' &&\n    b.constructor &&\n    b.constructor.name === 'ArrayBuffer' &&\n    b.byteLength >= 0)\n\nconst isArrayBufferView = (b: any): b is ArrayBufferView =>\n  !Buffer.isBuffer(b) && ArrayBuffer.isView(b)\n\n/**\n * Options that may be passed to stream.pipe()\n */\nexport interface PipeOptions {\n  /**\n   * end the destination stream when the source stream ends\n   */\n  end?: boolean\n  /**\n   * proxy errors from the source stream to the destination stream\n   */\n  proxyErrors?: boolean\n}\n\n/**\n * Internal class representing a pipe to a destination stream.\n *\n * @internal\n */\nclass Pipe<T extends unknown> {\n  src: Minipass<T>\n  dest: Minipass<any, T>\n  opts: PipeOptions\n  ondrain: () => any\n  constructor(\n    src: Minipass<T>,\n    dest: Minipass.Writable,\n    opts: PipeOptions\n  ) {\n    this.src = src\n    this.dest = dest as Minipass<any, T>\n    this.opts = opts\n    this.ondrain = () => src[RESUME]()\n    this.dest.on('drain', this.ondrain)\n  }\n  unpipe() {\n    this.dest.removeListener('drain', this.ondrain)\n  }\n  // only here for the prototype\n  /* c8 ignore start */\n  proxyErrors(_er: any) {}\n  /* c8 ignore stop */\n  end() {\n    this.unpipe()\n    if (this.opts.end) this.dest.end()\n  }\n}\n\n/**\n * Internal class representing a pipe to a destination stream where\n * errors are proxied.\n *\n * @internal\n */\nclass PipeProxyErrors<T> extends Pipe<T> {\n  unpipe() {\n    this.src.removeListener('error', this.proxyErrors)\n    super.unpipe()\n  }\n  constructor(\n    src: Minipass<T>,\n    dest: Minipass.Writable,\n    opts: PipeOptions\n  ) {\n    super(src, dest, opts)\n    this.proxyErrors = er => dest.emit('error', er)\n    src.on('error', this.proxyErrors)\n  }\n}\n\nexport namespace Minipass {\n  /**\n   * Encoding used to create a stream that outputs strings rather than\n   * Buffer objects.\n   */\n  export type Encoding = BufferEncoding | 'buffer' | null\n\n  /**\n   * Any stream that Minipass can pipe into\n   */\n  export type Writable =\n    | Minipass<any, any, any>\n    | NodeJS.WriteStream\n    | (NodeJS.WriteStream & { fd: number })\n    | (EventEmitter & {\n        end(): any\n        write(chunk: any, ...args: any[]): any\n      })\n\n  /**\n   * Any stream that can be read from\n   */\n  export type Readable =\n    | Minipass<any, any, any>\n    | NodeJS.ReadStream\n    | (NodeJS.ReadStream & { fd: number })\n    | (EventEmitter & {\n        pause(): any\n        resume(): any\n        pipe(...destArgs: any[]): any\n      })\n\n  /**\n   * Utility type that can be iterated sync or async\n   */\n  export type DualIterable<T> = Iterable<T> & AsyncIterable<T>\n\n  type EventArguments = Record<string | symbol, unknown[]>\n\n  /**\n   * The listing of events that a Minipass class can emit.\n   * Extend this when extending the Minipass class, and pass as\n   * the third template argument.  The key is the name of the event,\n   * and the value is the argument list.\n   *\n   * Any undeclared events will still be allowed, but the handler will get\n   * arguments as `unknown[]`.\n   */\n  export interface Events<RType extends any = Buffer>\n    extends EventArguments {\n    readable: []\n    data: [chunk: RType]\n    error: [er: unknown]\n    abort: [reason: unknown]\n    drain: []\n    resume: []\n    end: []\n    finish: []\n    prefinish: []\n    close: []\n    [DESTROYED]: [er?: unknown]\n    [ERROR]: [er: unknown]\n  }\n\n  /**\n   * String or buffer-like data that can be joined and sliced\n   */\n  export type ContiguousData =\n    | Buffer\n    | ArrayBufferLike\n    | ArrayBufferView\n    | string\n  export type BufferOrString = Buffer | string\n\n  /**\n   * Options passed to the Minipass constructor.\n   */\n  export type SharedOptions = {\n    /**\n     * Defer all data emission and other events until the end of the\n     * current tick, similar to Node core streams\n     */\n    async?: boolean\n    /**\n     * A signal which will abort the stream\n     */\n    signal?: AbortSignal\n    /**\n     * Output string encoding. Set to `null` or `'buffer'` (or omit) to\n     * emit Buffer objects rather than strings.\n     *\n     * Conflicts with `objectMode`\n     */\n    encoding?: BufferEncoding | null | 'buffer'\n    /**\n     * Output data exactly as it was written, supporting non-buffer/string\n     * data (such as arbitrary objects, falsey values, etc.)\n     *\n     * Conflicts with `encoding`\n     */\n    objectMode?: boolean\n  }\n\n  /**\n   * Options for a string encoded output\n   */\n  export type EncodingOptions = SharedOptions & {\n    encoding: BufferEncoding\n    objectMode?: false\n  }\n\n  /**\n   * Options for contiguous data buffer output\n   */\n  export type BufferOptions = SharedOptions & {\n    encoding?: null | 'buffer'\n    objectMode?: false\n  }\n\n  /**\n   * Options for objectMode arbitrary output\n   */\n  export type ObjectModeOptions = SharedOptions & {\n    objectMode: true\n    encoding?: null\n  }\n\n  /**\n   * Utility type to determine allowed options based on read type\n   */\n  export type Options<T> =\n    | ObjectModeOptions\n    | (T extends string\n        ? EncodingOptions\n        : T extends Buffer\n        ? BufferOptions\n        : SharedOptions)\n}\n\nconst isObjectModeOptions = (\n  o: Minipass.SharedOptions\n): o is Minipass.ObjectModeOptions => !!o.objectMode\n\nconst isEncodingOptions = (\n  o: Minipass.SharedOptions\n): o is Minipass.EncodingOptions =>\n  !o.objectMode && !!o.encoding && o.encoding !== 'buffer'\n\n/**\n * Main export, the Minipass class\n *\n * `RType` is the type of data emitted, defaults to Buffer\n *\n * `WType` is the type of data to be written, if RType is buffer or string,\n * then any {@link Minipass.ContiguousData} is allowed.\n *\n * `Events` is the set of event handler signatures that this object\n * will emit, see {@link Minipass.Events}\n */\nexport class Minipass<\n    RType extends unknown = Buffer,\n    WType extends unknown = RType extends Minipass.BufferOrString\n      ? Minipass.ContiguousData\n      : RType,\n    Events extends Minipass.Events<RType> = Minipass.Events<RType>\n  >\n  extends EventEmitter\n  implements Minipass.DualIterable<RType>\n{\n  [FLOWING]: boolean = false;\n  [PAUSED]: boolean = false;\n  [PIPES]: Pipe<RType>[] = [];\n  [BUFFER]: RType[] = [];\n  [OBJECTMODE]: boolean;\n  [ENCODING]: BufferEncoding | null;\n  [ASYNC]: boolean;\n  [DECODER]: SD | null;\n  [EOF]: boolean = false;\n  [EMITTED_END]: boolean = false;\n  [EMITTING_END]: boolean = false;\n  [CLOSED]: boolean = false;\n  [EMITTED_ERROR]: unknown = null;\n  [BUFFERLENGTH]: number = 0;\n  [DESTROYED]: boolean = false;\n  [SIGNAL]?: AbortSignal;\n  [ABORTED]: boolean = false;\n  [DATALISTENERS]: number = 0;\n  [DISCARDED]: boolean = false\n\n  /**\n   * true if the stream can be written\n   */\n  writable: boolean = true\n  /**\n   * true if the stream can be read\n   */\n  readable: boolean = true\n\n  /**\n   * If `RType` is Buffer, then options do not need to be provided.\n   * Otherwise, an options object must be provided to specify either\n   * {@link Minipass.SharedOptions.objectMode} or\n   * {@link Minipass.SharedOptions.encoding}, as appropriate.\n   */\n  constructor(\n    ...args:\n      | [Minipass.ObjectModeOptions]\n      | (RType extends Buffer\n          ? [] | [Minipass.Options<RType>]\n          : [Minipass.Options<RType>])\n  ) {\n    const options: Minipass.Options<RType> = (args[0] ||\n      {}) as Minipass.Options<RType>\n    super()\n    if (options.objectMode && typeof options.encoding === 'string') {\n      throw new TypeError(\n        'Encoding and objectMode may not be used together'\n      )\n    }\n    if (isObjectModeOptions(options)) {\n      this[OBJECTMODE] = true\n      this[ENCODING] = null\n    } else if (isEncodingOptions(options)) {\n      this[ENCODING] = options.encoding\n      this[OBJECTMODE] = false\n    } else {\n      this[OBJECTMODE] = false\n      this[ENCODING] = null\n    }\n    this[ASYNC] = !!options.async\n    this[DECODER] = this[ENCODING]\n      ? (new StringDecoder(this[ENCODING]) as SD)\n      : null\n\n    //@ts-ignore - private option for debugging and testing\n    if (options && options.debugExposeBuffer === true) {\n      Object.defineProperty(this, 'buffer', { get: () => this[BUFFER] })\n    }\n    //@ts-ignore - private option for debugging and testing\n    if (options && options.debugExposePipes === true) {\n      Object.defineProperty(this, 'pipes', { get: () => this[PIPES] })\n    }\n\n    const { signal } = options\n    if (signal) {\n      this[SIGNAL] = signal\n      if (signal.aborted) {\n        this[ABORT]()\n      } else {\n        signal.addEventListener('abort', () => this[ABORT]())\n      }\n    }\n  }\n\n  /**\n   * The amount of data stored in the buffer waiting to be read.\n   *\n   * For Buffer strings, this will be the total byte length.\n   * For string encoding streams, this will be the string character length,\n   * according to JavaScript's `string.length` logic.\n   * For objectMode streams, this is a count of the items waiting to be\n   * emitted.\n   */\n  get bufferLength() {\n    return this[BUFFERLENGTH]\n  }\n\n  /**\n   * The `BufferEncoding` currently in use, or `null`\n   */\n  get encoding() {\n    return this[ENCODING]\n  }\n\n  /**\n   * @deprecated - This is a read only property\n   */\n  set encoding(_enc) {\n    throw new Error('Encoding must be set at instantiation time')\n  }\n\n  /**\n   * @deprecated - Encoding may only be set at instantiation time\n   */\n  setEncoding(_enc: Minipass.Encoding) {\n    throw new Error('Encoding must be set at instantiation time')\n  }\n\n  /**\n   * True if this is an objectMode stream\n   */\n  get objectMode() {\n    return this[OBJECTMODE]\n  }\n\n  /**\n   * @deprecated - This is a read-only property\n   */\n  set objectMode(_om) {\n    throw new Error('objectMode must be set at instantiation time')\n  }\n\n  /**\n   * true if this is an async stream\n   */\n  get ['async'](): boolean {\n    return this[ASYNC]\n  }\n  /**\n   * Set to true to make this stream async.\n   *\n   * Once set, it cannot be unset, as this would potentially cause incorrect\n   * behavior.  Ie, a sync stream can be made async, but an async stream\n   * cannot be safely made sync.\n   */\n  set ['async'](a: boolean) {\n    this[ASYNC] = this[ASYNC] || !!a\n  }\n\n  // drop everything and get out of the flow completely\n  [ABORT]() {\n    this[ABORTED] = true\n    this.emit('abort', this[SIGNAL]?.reason)\n    this.destroy(this[SIGNAL]?.reason)\n  }\n\n  /**\n   * True if the stream has been aborted.\n   */\n  get aborted() {\n    return this[ABORTED]\n  }\n  /**\n   * No-op setter. Stream aborted status is set via the AbortSignal provided\n   * in the constructor options.\n   */\n  set aborted(_) {}\n\n  /**\n   * Write data into the stream\n   *\n   * If the chunk written is a string, and encoding is not specified, then\n   * `utf8` will be assumed. If the stream encoding matches the encoding of\n   * a written string, and the state of the string decoder allows it, then\n   * the string will be passed through to either the output or the internal\n   * buffer without any processing. Otherwise, it will be turned into a\n   * Buffer object for processing into the desired encoding.\n   *\n   * If provided, `cb` function is called immediately before return for\n   * sync streams, or on next tick for async streams, because for this\n   * base class, a chunk is considered \"processed\" once it is accepted\n   * and either emitted or buffered. That is, the callback does not indicate\n   * that the chunk has been eventually emitted, though of course child\n   * classes can override this function to do whatever processing is required\n   * and call `super.write(...)` only once processing is completed.\n   */\n  write(chunk: WType, cb?: () => void): boolean\n  write(\n    chunk: WType,\n    encoding?: Minipass.Encoding,\n    cb?: () => void\n  ): boolean\n  write(\n    chunk: WType,\n    encoding?: Minipass.Encoding | (() => void),\n    cb?: () => void\n  ): boolean {\n    if (this[ABORTED]) return false\n    if (this[EOF]) throw new Error('write after end')\n\n    if (this[DESTROYED]) {\n      this.emit(\n        'error',\n        Object.assign(\n          new Error('Cannot call write after a stream was destroyed'),\n          { code: 'ERR_STREAM_DESTROYED' }\n        )\n      )\n      return true\n    }\n\n    if (typeof encoding === 'function') {\n      cb = encoding\n      encoding = 'utf8'\n    }\n\n    if (!encoding) encoding = 'utf8'\n\n    const fn = this[ASYNC] ? defer : nodefer\n\n    // convert array buffers and typed array views into buffers\n    // at some point in the future, we may want to do the opposite!\n    // leave strings and buffers as-is\n    // anything is only allowed if in object mode, so throw\n    if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {\n      if (isArrayBufferView(chunk)) {\n        //@ts-ignore - sinful unsafe type changing\n        chunk = Buffer.from(\n          chunk.buffer,\n          chunk.byteOffset,\n          chunk.byteLength\n        )\n      } else if (isArrayBufferLike(chunk)) {\n        //@ts-ignore - sinful unsafe type changing\n        chunk = Buffer.from(chunk)\n      } else if (typeof chunk !== 'string') {\n        throw new Error(\n          'Non-contiguous data written to non-objectMode stream'\n        )\n      }\n    }\n\n    // handle object mode up front, since it's simpler\n    // this yields better performance, fewer checks later.\n    if (this[OBJECTMODE]) {\n      // maybe impossible?\n      /* c8 ignore start */\n      if (this[FLOWING] && this[BUFFERLENGTH] !== 0) this[FLUSH](true)\n      /* c8 ignore stop */\n\n      if (this[FLOWING]) this.emit('data', chunk as unknown as RType)\n      else this[BUFFERPUSH](chunk as unknown as RType)\n\n      if (this[BUFFERLENGTH] !== 0) this.emit('readable')\n\n      if (cb) fn(cb)\n\n      return this[FLOWING]\n    }\n\n    // at this point the chunk is a buffer or string\n    // don't buffer it up or send it to the decoder\n    if (!(chunk as Minipass.BufferOrString).length) {\n      if (this[BUFFERLENGTH] !== 0) this.emit('readable')\n      if (cb) fn(cb)\n      return this[FLOWING]\n    }\n\n    // fast-path writing strings of same encoding to a stream with\n    // an empty buffer, skipping the buffer/decoder dance\n    if (\n      typeof chunk === 'string' &&\n      // unless it is a string already ready for us to use\n      !(encoding === this[ENCODING] && !this[DECODER]?.lastNeed)\n    ) {\n      //@ts-ignore - sinful unsafe type change\n      chunk = Buffer.from(chunk, encoding)\n    }\n\n    if (Buffer.isBuffer(chunk) && this[ENCODING]) {\n      //@ts-ignore - sinful unsafe type change\n      chunk = this[DECODER].write(chunk)\n    }\n\n    // Note: flushing CAN potentially switch us into not-flowing mode\n    if (this[FLOWING] && this[BUFFERLENGTH] !== 0) this[FLUSH](true)\n\n    if (this[FLOWING]) this.emit('data', chunk as unknown as RType)\n    else this[BUFFERPUSH](chunk as unknown as RType)\n\n    if (this[BUFFERLENGTH] !== 0) this.emit('readable')\n\n    if (cb) fn(cb)\n\n    return this[FLOWING]\n  }\n\n  /**\n   * Low-level explicit read method.\n   *\n   * In objectMode, the argument is ignored, and one item is returned if\n   * available.\n   *\n   * `n` is the number of bytes (or in the case of encoding streams,\n   * characters) to consume. If `n` is not provided, then the entire buffer\n   * is returned, or `null` is returned if no data is available.\n   *\n   * If `n` is greater that the amount of data in the internal buffer,\n   * then `null` is returned.\n   */\n  read(n?: number | null): RType | null {\n    if (this[DESTROYED]) return null\n    this[DISCARDED] = false\n\n    if (\n      this[BUFFERLENGTH] === 0 ||\n      n === 0 ||\n      (n && n > this[BUFFERLENGTH])\n    ) {\n      this[MAYBE_EMIT_END]()\n      return null\n    }\n\n    if (this[OBJECTMODE]) n = null\n\n    if (this[BUFFER].length > 1 && !this[OBJECTMODE]) {\n      // not object mode, so if we have an encoding, then RType is string\n      // otherwise, must be Buffer\n      this[BUFFER] = [\n        (this[ENCODING]\n          ? this[BUFFER].join('')\n          : Buffer.concat(\n              this[BUFFER] as Buffer[],\n              this[BUFFERLENGTH]\n            )) as RType,\n      ]\n    }\n\n    const ret = this[READ](n || null, this[BUFFER][0] as RType)\n    this[MAYBE_EMIT_END]()\n    return ret\n  }\n\n  [READ](n: number | null, chunk: RType) {\n    if (this[OBJECTMODE]) this[BUFFERSHIFT]()\n    else {\n      const c = chunk as Minipass.BufferOrString\n      if (n === c.length || n === null) this[BUFFERSHIFT]()\n      else if (typeof c === 'string') {\n        this[BUFFER][0] = c.slice(n) as RType\n        chunk = c.slice(0, n) as RType\n        this[BUFFERLENGTH] -= n\n      } else {\n        this[BUFFER][0] = c.subarray(n) as RType\n        chunk = c.subarray(0, n) as RType\n        this[BUFFERLENGTH] -= n\n      }\n    }\n\n    this.emit('data', chunk)\n\n    if (!this[BUFFER].length && !this[EOF]) this.emit('drain')\n\n    return chunk\n  }\n\n  /**\n   * End the stream, optionally providing a final write.\n   *\n   * See {@link Minipass#write} for argument descriptions\n   */\n  end(cb?: () => void): this\n  end(chunk: WType, cb?: () => void): this\n  end(chunk: WType, encoding?: Minipass.Encoding, cb?: () => void): this\n  end(\n    chunk?: WType | (() => void),\n    encoding?: Minipass.Encoding | (() => void),\n    cb?: () => void\n  ): this {\n    if (typeof chunk === 'function') {\n      cb = chunk as () => void\n      chunk = undefined\n    }\n    if (typeof encoding === 'function') {\n      cb = encoding\n      encoding = 'utf8'\n    }\n    if (chunk !== undefined) this.write(chunk, encoding)\n    if (cb) this.once('end', cb)\n    this[EOF] = true\n    this.writable = false\n\n    // if we haven't written anything, then go ahead and emit,\n    // even if we're not reading.\n    // we'll re-emit if a new 'end' listener is added anyway.\n    // This makes MP more suitable to write-only use cases.\n    if (this[FLOWING] || !this[PAUSED]) this[MAYBE_EMIT_END]()\n    return this\n  }\n\n  // don't let the internal resume be overwritten\n  [RESUME]() {\n    if (this[DESTROYED]) return\n\n    if (!this[DATALISTENERS] && !this[PIPES].length) {\n      this[DISCARDED] = true\n    }\n    this[PAUSED] = false\n    this[FLOWING] = true\n    this.emit('resume')\n    if (this[BUFFER].length) this[FLUSH]()\n    else if (this[EOF]) this[MAYBE_EMIT_END]()\n    else this.emit('drain')\n  }\n\n  /**\n   * Resume the stream if it is currently in a paused state\n   *\n   * If called when there are no pipe destinations or `data` event listeners,\n   * this will place the stream in a \"discarded\" state, where all data will\n   * be thrown away. The discarded state is removed if a pipe destination or\n   * data handler is added, if pause() is called, or if any synchronous or\n   * asynchronous iteration is started.\n   */\n  resume() {\n    return this[RESUME]()\n  }\n\n  /**\n   * Pause the stream\n   */\n  pause() {\n    this[FLOWING] = false\n    this[PAUSED] = true\n    this[DISCARDED] = false\n  }\n\n  /**\n   * true if the stream has been forcibly destroyed\n   */\n  get destroyed() {\n    return this[DESTROYED]\n  }\n\n  /**\n   * true if the stream is currently in a flowing state, meaning that\n   * any writes will be immediately emitted.\n   */\n  get flowing() {\n    return this[FLOWING]\n  }\n\n  /**\n   * true if the stream is currently in a paused state\n   */\n  get paused() {\n    return this[PAUSED]\n  }\n\n  [BUFFERPUSH](chunk: RType) {\n    if (this[OBJECTMODE]) this[BUFFERLENGTH] += 1\n    else this[BUFFERLENGTH] += (chunk as Minipass.BufferOrString).length\n    this[BUFFER].push(chunk)\n  }\n\n  [BUFFERSHIFT](): RType {\n    if (this[OBJECTMODE]) this[BUFFERLENGTH] -= 1\n    else\n      this[BUFFERLENGTH] -= (\n        this[BUFFER][0] as Minipass.BufferOrString\n      ).length\n    return this[BUFFER].shift() as RType\n  }\n\n  [FLUSH](noDrain: boolean = false) {\n    do {} while (\n      this[FLUSHCHUNK](this[BUFFERSHIFT]()) &&\n      this[BUFFER].length\n    )\n\n    if (!noDrain && !this[BUFFER].length && !this[EOF]) this.emit('drain')\n  }\n\n  [FLUSHCHUNK](chunk: RType) {\n    this.emit('data', chunk)\n    return this[FLOWING]\n  }\n\n  /**\n   * Pipe all data emitted by this stream into the destination provided.\n   *\n   * Triggers the flow of data.\n   */\n  pipe<W extends Minipass.Writable>(dest: W, opts?: PipeOptions): W {\n    if (this[DESTROYED]) return dest\n    this[DISCARDED] = false\n\n    const ended = this[EMITTED_END]\n    opts = opts || {}\n    if (dest === proc.stdout || dest === proc.stderr) opts.end = false\n    else opts.end = opts.end !== false\n    opts.proxyErrors = !!opts.proxyErrors\n\n    // piping an ended stream ends immediately\n    if (ended) {\n      if (opts.end) dest.end()\n    } else {\n      // \"as\" here just ignores the WType, which pipes don't care about,\n      // since they're only consuming from us, and writing to the dest\n      this[PIPES].push(\n        !opts.proxyErrors\n          ? new Pipe<RType>(this as Minipass<RType>, dest, opts)\n          : new PipeProxyErrors<RType>(this as Minipass<RType>, dest, opts)\n      )\n      if (this[ASYNC]) defer(() => this[RESUME]())\n      else this[RESUME]()\n    }\n\n    return dest\n  }\n\n  /**\n   * Fully unhook a piped destination stream.\n   *\n   * If the destination stream was the only consumer of this stream (ie,\n   * there are no other piped destinations or `'data'` event listeners)\n   * then the flow of data will stop until there is another consumer or\n   * {@link Minipass#resume} is explicitly called.\n   */\n  unpipe<W extends Minipass.Writable>(dest: W) {\n    const p = this[PIPES].find(p => p.dest === dest)\n    if (p) {\n      if (this[PIPES].length === 1) {\n        if (this[FLOWING] && this[DATALISTENERS] === 0) {\n          this[FLOWING] = false\n        }\n        this[PIPES] = []\n      } else this[PIPES].splice(this[PIPES].indexOf(p), 1)\n      p.unpipe()\n    }\n  }\n\n  /**\n   * Alias for {@link Minipass#on}\n   */\n  addListener<Event extends keyof Events>(\n    ev: Event,\n    handler: (...args: Events[Event]) => any\n  ): this {\n    return this.on(ev, handler)\n  }\n\n  /**\n   * Mostly identical to `EventEmitter.on`, with the following\n   * behavior differences to prevent data loss and unnecessary hangs:\n   *\n   * - Adding a 'data' event handler will trigger the flow of data\n   *\n   * - Adding a 'readable' event handler when there is data waiting to be read\n   *   will cause 'readable' to be emitted immediately.\n   *\n   * - Adding an 'endish' event handler ('end', 'finish', etc.) which has\n   *   already passed will cause the event to be emitted immediately and all\n   *   handlers removed.\n   *\n   * - Adding an 'error' event handler after an error has been emitted will\n   *   cause the event to be re-emitted immediately with the error previously\n   *   raised.\n   */\n  on<Event extends keyof Events>(\n    ev: Event,\n    handler: (...args: Events[Event]) => any\n  ): this {\n    const ret = super.on(\n      ev as string | symbol,\n      handler as (...a: any[]) => any\n    )\n    if (ev === 'data') {\n      this[DISCARDED] = false\n      this[DATALISTENERS]++\n      if (!this[PIPES].length && !this[FLOWING]) {\n        this[RESUME]()\n      }\n    } else if (ev === 'readable' && this[BUFFERLENGTH] !== 0) {\n      super.emit('readable')\n    } else if (isEndish(ev) && this[EMITTED_END]) {\n      super.emit(ev)\n      this.removeAllListeners(ev)\n    } else if (ev === 'error' && this[EMITTED_ERROR]) {\n      const h = handler as (...a: Events['error']) => any\n      if (this[ASYNC]) defer(() => h.call(this, this[EMITTED_ERROR]))\n      else h.call(this, this[EMITTED_ERROR])\n    }\n    return ret\n  }\n\n  /**\n   * Alias for {@link Minipass#off}\n   */\n  removeListener<Event extends keyof Events>(\n    ev: Event,\n    handler: (...args: Events[Event]) => any\n  ) {\n    return this.off(ev, handler)\n  }\n\n  /**\n   * Mostly identical to `EventEmitter.off`\n   *\n   * If a 'data' event handler is removed, and it was the last consumer\n   * (ie, there are no pipe destinations or other 'data' event listeners),\n   * then the flow of data will stop until there is another consumer or\n   * {@link Minipass#resume} is explicitly called.\n   */\n  off<Event extends keyof Events>(\n    ev: Event,\n    handler: (...args: Events[Event]) => any\n  ) {\n    const ret = super.off(\n      ev as string | symbol,\n      handler as (...a: any[]) => any\n    )\n    // if we previously had listeners, and now we don't, and we don't\n    // have any pipes, then stop the flow, unless it's been explicitly\n    // put in a discarded flowing state via stream.resume().\n    if (ev === 'data') {\n      this[DATALISTENERS] = this.listeners('data').length\n      if (\n        this[DATALISTENERS] === 0 &&\n        !this[DISCARDED] &&\n        !this[PIPES].length\n      ) {\n        this[FLOWING] = false\n      }\n    }\n    return ret\n  }\n\n  /**\n   * Mostly identical to `EventEmitter.removeAllListeners`\n   *\n   * If all 'data' event handlers are removed, and they were the last consumer\n   * (ie, there are no pipe destinations), then the flow of data will stop\n   * until there is another consumer or {@link Minipass#resume} is explicitly\n   * called.\n   */\n  removeAllListeners<Event extends keyof Events>(ev?: Event) {\n    const ret = super.removeAllListeners(ev as string | symbol | undefined)\n    if (ev === 'data' || ev === undefined) {\n      this[DATALISTENERS] = 0\n      if (!this[DISCARDED] && !this[PIPES].length) {\n        this[FLOWING] = false\n      }\n    }\n    return ret\n  }\n\n  /**\n   * true if the 'end' event has been emitted\n   */\n  get emittedEnd() {\n    return this[EMITTED_END]\n  }\n\n  [MAYBE_EMIT_END]() {\n    if (\n      !this[EMITTING_END] &&\n      !this[EMITTED_END] &&\n      !this[DESTROYED] &&\n      this[BUFFER].length === 0 &&\n      this[EOF]\n    ) {\n      this[EMITTING_END] = true\n      this.emit('end')\n      this.emit('prefinish')\n      this.emit('finish')\n      if (this[CLOSED]) this.emit('close')\n      this[EMITTING_END] = false\n    }\n  }\n\n  /**\n   * Mostly identical to `EventEmitter.emit`, with the following\n   * behavior differences to prevent data loss and unnecessary hangs:\n   *\n   * If the stream has been destroyed, and the event is something other\n   * than 'close' or 'error', then `false` is returned and no handlers\n   * are called.\n   *\n   * If the event is 'end', and has already been emitted, then the event\n   * is ignored. If the stream is in a paused or non-flowing state, then\n   * the event will be deferred until data flow resumes. If the stream is\n   * async, then handlers will be called on the next tick rather than\n   * immediately.\n   *\n   * If the event is 'close', and 'end' has not yet been emitted, then\n   * the event will be deferred until after 'end' is emitted.\n   *\n   * If the event is 'error', and an AbortSignal was provided for the stream,\n   * and there are no listeners, then the event is ignored, matching the\n   * behavior of node core streams in the presense of an AbortSignal.\n   *\n   * If the event is 'finish' or 'prefinish', then all listeners will be\n   * removed after emitting the event, to prevent double-firing.\n   */\n  emit<Event extends keyof Events>(\n    ev: Event,\n    ...args: Events[Event]\n  ): boolean {\n    const data = args[0]\n    // error and close are only events allowed after calling destroy()\n    if (\n      ev !== 'error' &&\n      ev !== 'close' &&\n      ev !== DESTROYED &&\n      this[DESTROYED]\n    ) {\n      return false\n    } else if (ev === 'data') {\n      return !this[OBJECTMODE] && !data\n        ? false\n        : this[ASYNC]\n        ? (defer(() => this[EMITDATA](data as RType)), true)\n        : this[EMITDATA](data as RType)\n    } else if (ev === 'end') {\n      return this[EMITEND]()\n    } else if (ev === 'close') {\n      this[CLOSED] = true\n      // don't emit close before 'end' and 'finish'\n      if (!this[EMITTED_END] && !this[DESTROYED]) return false\n      const ret = super.emit('close')\n      this.removeAllListeners('close')\n      return ret\n    } else if (ev === 'error') {\n      this[EMITTED_ERROR] = data\n      super.emit(ERROR, data)\n      const ret =\n        !this[SIGNAL] || this.listeners('error').length\n          ? super.emit('error', data)\n          : false\n      this[MAYBE_EMIT_END]()\n      return ret\n    } else if (ev === 'resume') {\n      const ret = super.emit('resume')\n      this[MAYBE_EMIT_END]()\n      return ret\n    } else if (ev === 'finish' || ev === 'prefinish') {\n      const ret = super.emit(ev)\n      this.removeAllListeners(ev)\n      return ret\n    }\n\n    // Some other unknown event\n    const ret = super.emit(ev as string, ...args)\n    this[MAYBE_EMIT_END]()\n    return ret\n  }\n\n  [EMITDATA](data: RType) {\n    for (const p of this[PIPES]) {\n      if (p.dest.write(data as RType) === false) this.pause()\n    }\n    const ret = this[DISCARDED] ? false : super.emit('data', data)\n    this[MAYBE_EMIT_END]()\n    return ret\n  }\n\n  [EMITEND]() {\n    if (this[EMITTED_END]) return false\n\n    this[EMITTED_END] = true\n    this.readable = false\n    return this[ASYNC]\n      ? (defer(() => this[EMITEND2]()), true)\n      : this[EMITEND2]()\n  }\n\n  [EMITEND2]() {\n    if (this[DECODER]) {\n      const data = this[DECODER].end()\n      if (data) {\n        for (const p of this[PIPES]) {\n          p.dest.write(data as RType)\n        }\n        if (!this[DISCARDED]) super.emit('data', data)\n      }\n    }\n\n    for (const p of this[PIPES]) {\n      p.end()\n    }\n    const ret = super.emit('end')\n    this.removeAllListeners('end')\n    return ret\n  }\n\n  /**\n   * Return a Promise that resolves to an array of all emitted data once\n   * the stream ends.\n   */\n  async collect(): Promise<RType[] & { dataLength: number }> {\n    const buf: RType[] & { dataLength: number } = Object.assign([], {\n      dataLength: 0,\n    })\n    if (!this[OBJECTMODE]) buf.dataLength = 0\n    // set the promise first, in case an error is raised\n    // by triggering the flow here.\n    const p = this.promise()\n    this.on('data', c => {\n      buf.push(c)\n      if (!this[OBJECTMODE])\n        buf.dataLength += (c as Minipass.BufferOrString).length\n    })\n    await p\n    return buf\n  }\n\n  /**\n   * Return a Promise that resolves to the concatenation of all emitted data\n   * once the stream ends.\n   *\n   * Not allowed on objectMode streams.\n   */\n  async concat(): Promise<RType> {\n    if (this[OBJECTMODE]) {\n      throw new Error('cannot concat in objectMode')\n    }\n    const buf = await this.collect()\n    return (\n      this[ENCODING]\n        ? buf.join('')\n        : Buffer.concat(buf as Buffer[], buf.dataLength)\n    ) as RType\n  }\n\n  /**\n   * Return a void Promise that resolves once the stream ends.\n   */\n  async promise(): Promise<void> {\n    return new Promise<void>((resolve, reject) => {\n      this.on(DESTROYED, () => reject(new Error('stream destroyed')))\n      this.on('error', er => reject(er))\n      this.on('end', () => resolve())\n    })\n  }\n\n  /**\n   * Asynchronous `for await of` iteration.\n   *\n   * This will continue emitting all chunks until the stream terminates.\n   */\n  [Symbol.asyncIterator](): AsyncGenerator<RType, void, void> {\n    // set this up front, in case the consumer doesn't call next()\n    // right away.\n    this[DISCARDED] = false\n    let stopped = false\n    const stop = async (): Promise<IteratorReturnResult<void>> => {\n      this.pause()\n      stopped = true\n      return { value: undefined, done: true }\n    }\n    const next = (): Promise<IteratorResult<RType, void>> => {\n      if (stopped) return stop()\n      const res = this.read()\n      if (res !== null) return Promise.resolve({ done: false, value: res })\n\n      if (this[EOF]) return stop()\n\n      let resolve!: (res: IteratorResult<RType>) => void\n      let reject!: (er: unknown) => void\n      const onerr = (er: unknown) => {\n        this.off('data', ondata)\n        this.off('end', onend)\n        this.off(DESTROYED, ondestroy)\n        stop()\n        reject(er)\n      }\n      const ondata = (value: RType) => {\n        this.off('error', onerr)\n        this.off('end', onend)\n        this.off(DESTROYED, ondestroy)\n        this.pause()\n        resolve({ value, done: !!this[EOF] })\n      }\n      const onend = () => {\n        this.off('error', onerr)\n        this.off('data', ondata)\n        this.off(DESTROYED, ondestroy)\n        stop()\n        resolve({ done: true, value: undefined })\n      }\n      const ondestroy = () => onerr(new Error('stream destroyed'))\n      return new Promise<IteratorResult<RType>>((res, rej) => {\n        reject = rej\n        resolve = res\n        this.once(DESTROYED, ondestroy)\n        this.once('error', onerr)\n        this.once('end', onend)\n        this.once('data', ondata)\n      })\n    }\n\n    return {\n      next,\n      throw: stop,\n      return: stop,\n      [Symbol.asyncIterator]() {\n        return this\n      },\n    }\n  }\n\n  /**\n   * Synchronous `for of` iteration.\n   *\n   * The iteration will terminate when the internal buffer runs out, even\n   * if the stream has not yet terminated.\n   */\n  [Symbol.iterator](): Generator<RType, void, void> {\n    // set this up front, in case the consumer doesn't call next()\n    // right away.\n    this[DISCARDED] = false\n    let stopped = false\n    const stop = (): IteratorReturnResult<void> => {\n      this.pause()\n      this.off(ERROR, stop)\n      this.off(DESTROYED, stop)\n      this.off('end', stop)\n      stopped = true\n      return { done: true, value: undefined }\n    }\n\n    const next = (): IteratorResult<RType, void> => {\n      if (stopped) return stop()\n      const value = this.read()\n      return value === null ? stop() : { done: false, value }\n    }\n\n    this.once('end', stop)\n    this.once(ERROR, stop)\n    this.once(DESTROYED, stop)\n\n    return {\n      next,\n      throw: stop,\n      return: stop,\n      [Symbol.iterator]() {\n        return this\n      },\n    }\n  }\n\n  /**\n   * Destroy a stream, preventing it from being used for any further purpose.\n   *\n   * If the stream has a `close()` method, then it will be called on\n   * destruction.\n   *\n   * After destruction, any attempt to write data, read data, or emit most\n   * events will be ignored.\n   *\n   * If an error argument is provided, then it will be emitted in an\n   * 'error' event.\n   */\n  destroy(er?: unknown) {\n    if (this[DESTROYED]) {\n      if (er) this.emit('error', er)\n      else this.emit(DESTROYED)\n      return this\n    }\n\n    this[DESTROYED] = true\n    this[DISCARDED] = true\n\n    // throw away all buffered data, it's never coming out\n    this[BUFFER].length = 0\n    this[BUFFERLENGTH] = 0\n\n    const wc = this as Minipass<RType, WType, Events> & {\n      close?: () => void\n    }\n    if (typeof wc.close === 'function' && !this[CLOSED]) wc.close()\n\n    if (er) this.emit('error', er)\n    // if no error to emit, still reject pending promises\n    else this.emit(DESTROYED)\n\n    return this\n  }\n\n  /**\n   * Alias for {@link isStream}\n   *\n   * Former export location, maintained for backwards compatibility.\n   *\n   * @deprecated\n   */\n  static get isStream() {\n    return isStream\n  }\n}\n", "'use strict'\nconst proc = typeof process === 'object' && process ? process : {\n  stdout: null,\n  stderr: null,\n}\nconst EE = require('events')\nconst Stream = require('stream')\nconst SD = require('string_decoder').StringDecoder\n\nconst EOF = Symbol('EOF')\nconst MAYBE_EMIT_END = Symbol('maybeEmitEnd')\nconst EMITTED_END = Symbol('emittedEnd')\nconst EMITTING_END = Symbol('emittingEnd')\nconst EMITTED_ERROR = Symbol('emittedError')\nconst CLOSED = Symbol('closed')\nconst READ = Symbol('read')\nconst FLUSH = Symbol('flush')\nconst FLUSHCHUNK = Symbol('flushChunk')\nconst ENCODING = Symbol('encoding')\nconst DECODER = Symbol('decoder')\nconst FLOWING = Symbol('flowing')\nconst PAUSED = Symbol('paused')\nconst RESUME = Symbol('resume')\nconst BUFFERLENGTH = Symbol('bufferLength')\nconst BUFFERPUSH = Symbol('bufferPush')\nconst BUFFERSHIFT = Symbol('bufferShift')\nconst OBJECTMODE = Symbol('objectMode')\nconst DESTROYED = Symbol('destroyed')\nconst EMITDATA = Symbol('emitData')\nconst EMITEND = Symbol('emitEnd')\nconst EMITEND2 = Symbol('emitEnd2')\nconst ASYNC = Symbol('async')\n\nconst defer = fn => Promise.resolve().then(fn)\n\n// TODO remove when Node v8 support drops\nconst doIter = global._MP_NO_ITERATOR_SYMBOLS_  !== '1'\nconst ASYNCITERATOR = doIter && Symbol.asyncIterator\n  || Symbol('asyncIterator not implemented')\nconst ITERATOR = doIter && Symbol.iterator\n  || Symbol('iterator not implemented')\n\n// events that mean 'the stream is over'\n// these are treated specially, and re-emitted\n// if they are listened for after emitting.\nconst isEndish = ev =>\n  ev === 'end' ||\n  ev === 'finish' ||\n  ev === 'prefinish'\n\nconst isArrayBuffer = b => b instanceof ArrayBuffer ||\n  typeof b === 'object' &&\n  b.constructor &&\n  b.constructor.name === 'ArrayBuffer' &&\n  b.byteLength >= 0\n\nconst isArrayBufferView = b => !Buffer.isBuffer(b) && ArrayBuffer.isView(b)\n\nclass Pipe {\n  constructor (src, dest, opts) {\n    this.src = src\n    this.dest = dest\n    this.opts = opts\n    this.ondrain = () => src[RESUME]()\n    dest.on('drain', this.ondrain)\n  }\n  unpipe () {\n    this.dest.removeListener('drain', this.ondrain)\n  }\n  // istanbul ignore next - only here for the prototype\n  proxyErrors () {}\n  end () {\n    this.unpipe()\n    if (this.opts.end)\n      this.dest.end()\n  }\n}\n\nclass PipeProxyErrors extends Pipe {\n  unpipe () {\n    this.src.removeListener('error', this.proxyErrors)\n    super.unpipe()\n  }\n  constructor (src, dest, opts) {\n    super(src, dest, opts)\n    this.proxyErrors = er => dest.emit('error', er)\n    src.on('error', this.proxyErrors)\n  }\n}\n\nmodule.exports = class Minipass extends Stream {\n  constructor (options) {\n    super()\n    this[FLOWING] = false\n    // whether we're explicitly paused\n    this[PAUSED] = false\n    this.pipes = []\n    this.buffer = []\n    this[OBJECTMODE] = options && options.objectMode || false\n    if (this[OBJECTMODE])\n      this[ENCODING] = null\n    else\n      this[ENCODING] = options && options.encoding || null\n    if (this[ENCODING] === 'buffer')\n      this[ENCODING] = null\n    this[ASYNC] = options && !!options.async || false\n    this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null\n    this[EOF] = false\n    this[EMITTED_END] = false\n    this[EMITTING_END] = false\n    this[CLOSED] = false\n    this[EMITTED_ERROR] = null\n    this.writable = true\n    this.readable = true\n    this[BUFFERLENGTH] = 0\n    this[DESTROYED] = false\n  }\n\n  get bufferLength () { return this[BUFFERLENGTH] }\n\n  get encoding () { return this[ENCODING] }\n  set encoding (enc) {\n    if (this[OBJECTMODE])\n      throw new Error('cannot set encoding in objectMode')\n\n    if (this[ENCODING] && enc !== this[ENCODING] &&\n        (this[DECODER] && this[DECODER].lastNeed || this[BUFFERLENGTH]))\n      throw new Error('cannot change encoding')\n\n    if (this[ENCODING] !== enc) {\n      this[DECODER] = enc ? new SD(enc) : null\n      if (this.buffer.length)\n        this.buffer = this.buffer.map(chunk => this[DECODER].write(chunk))\n    }\n\n    this[ENCODING] = enc\n  }\n\n  setEncoding (enc) {\n    this.encoding = enc\n  }\n\n  get objectMode () { return this[OBJECTMODE] }\n  set objectMode (om) { this[OBJECTMODE] = this[OBJECTMODE] || !!om }\n\n  get ['async'] () { return this[ASYNC] }\n  set ['async'] (a) { this[ASYNC] = this[ASYNC] || !!a }\n\n  write (chunk, encoding, cb) {\n    if (this[EOF])\n      throw new Error('write after end')\n\n    if (this[DESTROYED]) {\n      this.emit('error', Object.assign(\n        new Error('Cannot call write after a stream was destroyed'),\n        { code: 'ERR_STREAM_DESTROYED' }\n      ))\n      return true\n    }\n\n    if (typeof encoding === 'function')\n      cb = encoding, encoding = 'utf8'\n\n    if (!encoding)\n      encoding = 'utf8'\n\n    const fn = this[ASYNC] ? defer : f => f()\n\n    // convert array buffers and typed array views into buffers\n    // at some point in the future, we may want to do the opposite!\n    // leave strings and buffers as-is\n    // anything else switches us into object mode\n    if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {\n      if (isArrayBufferView(chunk))\n        chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)\n      else if (isArrayBuffer(chunk))\n        chunk = Buffer.from(chunk)\n      else if (typeof chunk !== 'string')\n        // use the setter so we throw if we have encoding set\n        this.objectMode = true\n    }\n\n    // handle object mode up front, since it's simpler\n    // this yields better performance, fewer checks later.\n    if (this[OBJECTMODE]) {\n      /* istanbul ignore if - maybe impossible? */\n      if (this.flowing && this[BUFFERLENGTH] !== 0)\n        this[FLUSH](true)\n\n      if (this.flowing)\n        this.emit('data', chunk)\n      else\n        this[BUFFERPUSH](chunk)\n\n      if (this[BUFFERLENGTH] !== 0)\n        this.emit('readable')\n\n      if (cb)\n        fn(cb)\n\n      return this.flowing\n    }\n\n    // at this point the chunk is a buffer or string\n    // don't buffer it up or send it to the decoder\n    if (!chunk.length) {\n      if (this[BUFFERLENGTH] !== 0)\n        this.emit('readable')\n      if (cb)\n        fn(cb)\n      return this.flowing\n    }\n\n    // fast-path writing strings of same encoding to a stream with\n    // an empty buffer, skipping the buffer/decoder dance\n    if (typeof chunk === 'string' &&\n        // unless it is a string already ready for us to use\n        !(encoding === this[ENCODING] && !this[DECODER].lastNeed)) {\n      chunk = Buffer.from(chunk, encoding)\n    }\n\n    if (Buffer.isBuffer(chunk) && this[ENCODING])\n      chunk = this[DECODER].write(chunk)\n\n    // Note: flushing CAN potentially switch us into not-flowing mode\n    if (this.flowing && this[BUFFERLENGTH] !== 0)\n      this[FLUSH](true)\n\n    if (this.flowing)\n      this.emit('data', chunk)\n    else\n      this[BUFFERPUSH](chunk)\n\n    if (this[BUFFERLENGTH] !== 0)\n      this.emit('readable')\n\n    if (cb)\n      fn(cb)\n\n    return this.flowing\n  }\n\n  read (n) {\n    if (this[DESTROYED])\n      return null\n\n    if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH]) {\n      this[MAYBE_EMIT_END]()\n      return null\n    }\n\n    if (this[OBJECTMODE])\n      n = null\n\n    if (this.buffer.length > 1 && !this[OBJECTMODE]) {\n      if (this.encoding)\n        this.buffer = [this.buffer.join('')]\n      else\n        this.buffer = [Buffer.concat(this.buffer, this[BUFFERLENGTH])]\n    }\n\n    const ret = this[READ](n || null, this.buffer[0])\n    this[MAYBE_EMIT_END]()\n    return ret\n  }\n\n  [READ] (n, chunk) {\n    if (n === chunk.length || n === null)\n      this[BUFFERSHIFT]()\n    else {\n      this.buffer[0] = chunk.slice(n)\n      chunk = chunk.slice(0, n)\n      this[BUFFERLENGTH] -= n\n    }\n\n    this.emit('data', chunk)\n\n    if (!this.buffer.length && !this[EOF])\n      this.emit('drain')\n\n    return chunk\n  }\n\n  end (chunk, encoding, cb) {\n    if (typeof chunk === 'function')\n      cb = chunk, chunk = null\n    if (typeof encoding === 'function')\n      cb = encoding, encoding = 'utf8'\n    if (chunk)\n      this.write(chunk, encoding)\n    if (cb)\n      this.once('end', cb)\n    this[EOF] = true\n    this.writable = false\n\n    // if we haven't written anything, then go ahead and emit,\n    // even if we're not reading.\n    // we'll re-emit if a new 'end' listener is added anyway.\n    // This makes MP more suitable to write-only use cases.\n    if (this.flowing || !this[PAUSED])\n      this[MAYBE_EMIT_END]()\n    return this\n  }\n\n  // don't let the internal resume be overwritten\n  [RESUME] () {\n    if (this[DESTROYED])\n      return\n\n    this[PAUSED] = false\n    this[FLOWING] = true\n    this.emit('resume')\n    if (this.buffer.length)\n      this[FLUSH]()\n    else if (this[EOF])\n      this[MAYBE_EMIT_END]()\n    else\n      this.emit('drain')\n  }\n\n  resume () {\n    return this[RESUME]()\n  }\n\n  pause () {\n    this[FLOWING] = false\n    this[PAUSED] = true\n  }\n\n  get destroyed () {\n    return this[DESTROYED]\n  }\n\n  get flowing () {\n    return this[FLOWING]\n  }\n\n  get paused () {\n    return this[PAUSED]\n  }\n\n  [BUFFERPUSH] (chunk) {\n    if (this[OBJECTMODE])\n      this[BUFFERLENGTH] += 1\n    else\n      this[BUFFERLENGTH] += chunk.length\n    this.buffer.push(chunk)\n  }\n\n  [BUFFERSHIFT] () {\n    if (this.buffer.length) {\n      if (this[OBJECTMODE])\n        this[BUFFERLENGTH] -= 1\n      else\n        this[BUFFERLENGTH] -= this.buffer[0].length\n    }\n    return this.buffer.shift()\n  }\n\n  [FLUSH] (noDrain) {\n    do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]()))\n\n    if (!noDrain && !this.buffer.length && !this[EOF])\n      this.emit('drain')\n  }\n\n  [FLUSHCHUNK] (chunk) {\n    return chunk ? (this.emit('data', chunk), this.flowing) : false\n  }\n\n  pipe (dest, opts) {\n    if (this[DESTROYED])\n      return\n\n    const ended = this[EMITTED_END]\n    opts = opts || {}\n    if (dest === proc.stdout || dest === proc.stderr)\n      opts.end = false\n    else\n      opts.end = opts.end !== false\n    opts.proxyErrors = !!opts.proxyErrors\n\n    // piping an ended stream ends immediately\n    if (ended) {\n      if (opts.end)\n        dest.end()\n    } else {\n      this.pipes.push(!opts.proxyErrors ? new Pipe(this, dest, opts)\n        : new PipeProxyErrors(this, dest, opts))\n      if (this[ASYNC])\n        defer(() => this[RESUME]())\n      else\n        this[RESUME]()\n    }\n\n    return dest\n  }\n\n  unpipe (dest) {\n    const p = this.pipes.find(p => p.dest === dest)\n    if (p) {\n      this.pipes.splice(this.pipes.indexOf(p), 1)\n      p.unpipe()\n    }\n  }\n\n  addListener (ev, fn) {\n    return this.on(ev, fn)\n  }\n\n  on (ev, fn) {\n    const ret = super.on(ev, fn)\n    if (ev === 'data' && !this.pipes.length && !this.flowing)\n      this[RESUME]()\n    else if (ev === 'readable' && this[BUFFERLENGTH] !== 0)\n      super.emit('readable')\n    else if (isEndish(ev) && this[EMITTED_END]) {\n      super.emit(ev)\n      this.removeAllListeners(ev)\n    } else if (ev === 'error' && this[EMITTED_ERROR]) {\n      if (this[ASYNC])\n        defer(() => fn.call(this, this[EMITTED_ERROR]))\n      else\n        fn.call(this, this[EMITTED_ERROR])\n    }\n    return ret\n  }\n\n  get emittedEnd () {\n    return this[EMITTED_END]\n  }\n\n  [MAYBE_EMIT_END] () {\n    if (!this[EMITTING_END] &&\n        !this[EMITTED_END] &&\n        !this[DESTROYED] &&\n        this.buffer.length === 0 &&\n        this[EOF]) {\n      this[EMITTING_END] = true\n      this.emit('end')\n      this.emit('prefinish')\n      this.emit('finish')\n      if (this[CLOSED])\n        this.emit('close')\n      this[EMITTING_END] = false\n    }\n  }\n\n  emit (ev, data, ...extra) {\n    // error and close are only events allowed after calling destroy()\n    if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED])\n      return\n    else if (ev === 'data') {\n      return !data ? false\n        : this[ASYNC] ? defer(() => this[EMITDATA](data))\n        : this[EMITDATA](data)\n    } else if (ev === 'end') {\n      return this[EMITEND]()\n    } else if (ev === 'close') {\n      this[CLOSED] = true\n      // don't emit close before 'end' and 'finish'\n      if (!this[EMITTED_END] && !this[DESTROYED])\n        return\n      const ret = super.emit('close')\n      this.removeAllListeners('close')\n      return ret\n    } else if (ev === 'error') {\n      this[EMITTED_ERROR] = data\n      const ret = super.emit('error', data)\n      this[MAYBE_EMIT_END]()\n      return ret\n    } else if (ev === 'resume') {\n      const ret = super.emit('resume')\n      this[MAYBE_EMIT_END]()\n      return ret\n    } else if (ev === 'finish' || ev === 'prefinish') {\n      const ret = super.emit(ev)\n      this.removeAllListeners(ev)\n      return ret\n    }\n\n    // Some other unknown event\n    const ret = super.emit(ev, data, ...extra)\n    this[MAYBE_EMIT_END]()\n    return ret\n  }\n\n  [EMITDATA] (data) {\n    for (const p of this.pipes) {\n      if (p.dest.write(data) === false)\n        this.pause()\n    }\n    const ret = super.emit('data', data)\n    this[MAYBE_EMIT_END]()\n    return ret\n  }\n\n  [EMITEND] () {\n    if (this[EMITTED_END])\n      return\n\n    this[EMITTED_END] = true\n    this.readable = false\n    if (this[ASYNC])\n      defer(() => this[EMITEND2]())\n    else\n      this[EMITEND2]()\n  }\n\n  [EMITEND2] () {\n    if (this[DECODER]) {\n      const data = this[DECODER].end()\n      if (data) {\n        for (const p of this.pipes) {\n          p.dest.write(data)\n        }\n        super.emit('data', data)\n      }\n    }\n\n    for (const p of this.pipes) {\n      p.end()\n    }\n    const ret = super.emit('end')\n    this.removeAllListeners('end')\n    return ret\n  }\n\n  // const all = await stream.collect()\n  collect () {\n    const buf = []\n    if (!this[OBJECTMODE])\n      buf.dataLength = 0\n    // set the promise first, in case an error is raised\n    // by triggering the flow here.\n    const p = this.promise()\n    this.on('data', c => {\n      buf.push(c)\n      if (!this[OBJECTMODE])\n        buf.dataLength += c.length\n    })\n    return p.then(() => buf)\n  }\n\n  // const data = await stream.concat()\n  concat () {\n    return this[OBJECTMODE]\n      ? Promise.reject(new Error('cannot concat in objectMode'))\n      : this.collect().then(buf =>\n          this[OBJECTMODE]\n            ? Promise.reject(new Error('cannot concat in objectMode'))\n            : this[ENCODING] ? buf.join('') : Buffer.concat(buf, buf.dataLength))\n  }\n\n  // stream.promise().then(() => done, er => emitted error)\n  promise () {\n    return new Promise((resolve, reject) => {\n      this.on(DESTROYED, () => reject(new Error('stream destroyed')))\n      this.on('error', er => reject(er))\n      this.on('end', () => resolve())\n    })\n  }\n\n  // for await (let chunk of stream)\n  [ASYNCITERATOR] () {\n    const next = () => {\n      const res = this.read()\n      if (res !== null)\n        return Promise.resolve({ done: false, value: res })\n\n      if (this[EOF])\n        return Promise.resolve({ done: true })\n\n      let resolve = null\n      let reject = null\n      const onerr = er => {\n        this.removeListener('data', ondata)\n        this.removeListener('end', onend)\n        reject(er)\n      }\n      const ondata = value => {\n        this.removeListener('error', onerr)\n        this.removeListener('end', onend)\n        this.pause()\n        resolve({ value: value, done: !!this[EOF] })\n      }\n      const onend = () => {\n        this.removeListener('error', onerr)\n        this.removeListener('data', ondata)\n        resolve({ done: true })\n      }\n      const ondestroy = () => onerr(new Error('stream destroyed'))\n      return new Promise((res, rej) => {\n        reject = rej\n        resolve = res\n        this.once(DESTROYED, ondestroy)\n        this.once('error', onerr)\n        this.once('end', onend)\n        this.once('data', ondata)\n      })\n    }\n\n    return { next }\n  }\n\n  // for (let chunk of stream)\n  [ITERATOR] () {\n    const next = () => {\n      const value = this.read()\n      const done = value === null\n      return { value, done }\n    }\n    return { next }\n  }\n\n  destroy (er) {\n    if (this[DESTROYED]) {\n      if (er)\n        this.emit('error', er)\n      else\n        this.emit(DESTROYED)\n      return this\n    }\n\n    this[DESTROYED] = true\n\n    // throw away all buffered data, it's never coming out\n    this.buffer.length = 0\n    this[BUFFERLENGTH] = 0\n\n    if (typeof this.close === 'function' && !this[CLOSED])\n      this.close()\n\n    if (er)\n      this.emit('error', er)\n    else // if no error to emit, still reject pending promises\n      this.emit(DESTROYED)\n\n    return this\n  }\n\n  static isStream (s) {\n    return !!s && (s instanceof Minipass || s instanceof Stream ||\n      s instanceof EE && (\n        typeof s.pipe === 'function' || // readable\n        (typeof s.write === 'function' && typeof s.end === 'function') // writable\n      ))\n  }\n}\n", "const Minipass = require('minipass')\n\nclass SizeError extends Error {\n  constructor (found, expect) {\n    super(`Bad data size: expected ${expect} bytes, but got ${found}`)\n    this.expect = expect\n    this.found = found\n    this.code = 'EBADSIZE'\n\t  Error.captureStackTrace(this, this.constructor)\n  }\n  get name () {\n    return 'SizeError'\n  }\n}\n\nclass MinipassSized extends Minipass {\n  constructor (options = {}) {\n    super(options)\n\n    if (options.objectMode)\n      throw new TypeError(`${\n        this.constructor.name\n      } streams only work with string and buffer data`)\n\n    this.found = 0\n    this.expect = options.size\n    if (typeof this.expect !== 'number' ||\n        this.expect > Number.MAX_SAFE_INTEGER ||\n        isNaN(this.expect) ||\n        this.expect < 0 ||\n        !isFinite(this.expect) ||\n        this.expect !== Math.floor(this.expect))\n      throw new Error('invalid expected size: ' + this.expect)\n  }\n\n  write (chunk, encoding, cb) {\n    const buffer = Buffer.isBuffer(chunk) ? chunk\n      : typeof chunk === 'string' ?\n        Buffer.from(chunk, typeof encoding === 'string' ? encoding : 'utf8')\n      : chunk\n\n    if (!Buffer.isBuffer(buffer)) {\n      this.emit('error', new TypeError(`${\n        this.constructor.name\n      } streams only work with string and buffer data`))\n      return false\n    }\n\n    this.found += buffer.length\n    if (this.found > this.expect)\n      this.emit('error', new SizeError(this.found, this.expect))\n\n    return super.write(chunk, encoding, cb)\n  }\n\n  emit (ev, ...data) {\n    if (ev === 'end') {\n      if (this.found !== this.expect)\n        this.emit('error', new SizeError(this.found, this.expect))\n    }\n    return super.emit(ev, ...data)\n  }\n}\n\nMinipassSized.SizeError = SizeError\n\nmodule.exports = MinipassSized\n", "'use strict'\nconst { Minipass } = require('minipass')\nconst TYPE = Symbol('type')\nconst BUFFER = Symbol('buffer')\n\nclass Blob {\n  constructor (blobParts, options) {\n    this[TYPE] = ''\n\n    const buffers = []\n    let size = 0\n\n    if (blobParts) {\n      const a = blobParts\n      const length = Number(a.length)\n      for (let i = 0; i < length; i++) {\n        const element = a[i]\n        const buffer = element instanceof Buffer ? element\n          : ArrayBuffer.isView(element)\n            ? Buffer.from(element.buffer, element.byteOffset, element.byteLength)\n            : element instanceof ArrayBuffer ? Buffer.from(element)\n            : element instanceof Blob ? element[BUFFER]\n            : typeof element === 'string' ? Buffer.from(element)\n            : Buffer.from(String(element))\n        size += buffer.length\n        buffers.push(buffer)\n      }\n    }\n\n    this[BUFFER] = Buffer.concat(buffers, size)\n\n    const type = options && options.type !== undefined\n      && String(options.type).toLowerCase()\n    if (type && !/[^\\u0020-\\u007E]/.test(type)) {\n      this[TYPE] = type\n    }\n  }\n\n  get size () {\n    return this[BUFFER].length\n  }\n\n  get type () {\n    return this[TYPE]\n  }\n\n  text () {\n    return Promise.resolve(this[BUFFER].toString())\n  }\n\n  arrayBuffer () {\n    const buf = this[BUFFER]\n    const off = buf.byteOffset\n    const len = buf.byteLength\n    const ab = buf.buffer.slice(off, off + len)\n    return Promise.resolve(ab)\n  }\n\n  stream () {\n    return new Minipass().end(this[BUFFER])\n  }\n\n  slice (start, end, type) {\n    const size = this.size\n    const relativeStart = start === undefined ? 0\n      : start < 0 ? Math.max(size + start, 0)\n      : Math.min(start, size)\n    const relativeEnd = end === undefined ? size\n      : end < 0 ? Math.max(size + end, 0)\n      : Math.min(end, size)\n    const span = Math.max(relativeEnd - relativeStart, 0)\n\n    const buffer = this[BUFFER]\n    const slicedBuffer = buffer.slice(\n      relativeStart,\n      relativeStart + span\n    )\n    const blob = new Blob([], { type })\n    blob[BUFFER] = slicedBuffer\n    return blob\n  }\n\n  get [Symbol.toStringTag] () {\n    return 'Blob'\n  }\n\n  static get BUFFER () {\n    return BUFFER\n  }\n}\n\nObject.defineProperties(Blob.prototype, {\n  size: { enumerable: true },\n  type: { enumerable: true },\n})\n\nmodule.exports = Blob\n", "'use strict'\nclass FetchError extends Error {\n  constructor (message, type, systemError) {\n    super(message)\n    this.code = 'FETCH_ERROR'\n\n    // pick up code, expected, path, ...\n    if (systemError) {\n      Object.assign(this, systemError)\n    }\n\n    this.errno = this.code\n\n    // override anything the system error might've clobbered\n    this.type = this.code === 'EBADSIZE' && this.found > this.expect\n      ? 'max-size' : type\n    this.message = message\n    Error.captureStackTrace(this, this.constructor)\n  }\n\n  get name () {\n    return 'FetchError'\n  }\n\n  // don't allow name to be overwritten\n  set name (n) {}\n\n  get [Symbol.toStringTag] () {\n    return 'FetchError'\n  }\n}\nmodule.exports = FetchError\n", "'use strict'\nconst { Minipass } = require('minipass')\nconst MinipassSized = require('minipass-sized')\n\nconst Blob = require('./blob.js')\nconst { BUFFER } = Blob\nconst FetchError = require('./fetch-error.js')\n\n// optional dependency on 'encoding'\nlet convert\ntry {\n  convert = require('encoding').convert\n} catch (e) {\n  // defer error until textConverted is called\n}\n\nconst INTERNALS = Symbol('Body internals')\nconst CONSUME_BODY = Symbol('consumeBody')\n\nclass Body {\n  constructor (bodyArg, options = {}) {\n    const { size = 0, timeout = 0 } = options\n    const body = bodyArg === undefined || bodyArg === null ? null\n      : isURLSearchParams(bodyArg) ? Buffer.from(bodyArg.toString())\n      : isBlob(bodyArg) ? bodyArg\n      : Buffer.isBuffer(bodyArg) ? bodyArg\n      : Object.prototype.toString.call(bodyArg) === '[object ArrayBuffer]'\n        ? Buffer.from(bodyArg)\n        : ArrayBuffer.isView(bodyArg)\n          ? Buffer.from(bodyArg.buffer, bodyArg.byteOffset, bodyArg.byteLength)\n          : Minipass.isStream(bodyArg) ? bodyArg\n          : Buffer.from(String(bodyArg))\n\n    this[INTERNALS] = {\n      body,\n      disturbed: false,\n      error: null,\n    }\n\n    this.size = size\n    this.timeout = timeout\n\n    if (Minipass.isStream(body)) {\n      body.on('error', er => {\n        const error = er.name === 'AbortError' ? er\n          : new FetchError(`Invalid response while trying to fetch ${\n            this.url}: ${er.message}`, 'system', er)\n        this[INTERNALS].error = error\n      })\n    }\n  }\n\n  get body () {\n    return this[INTERNALS].body\n  }\n\n  get bodyUsed () {\n    return this[INTERNALS].disturbed\n  }\n\n  arrayBuffer () {\n    return this[CONSUME_BODY]().then(buf =>\n      buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength))\n  }\n\n  blob () {\n    const ct = this.headers && this.headers.get('content-type') || ''\n    return this[CONSUME_BODY]().then(buf => Object.assign(\n      new Blob([], { type: ct.toLowerCase() }),\n      { [BUFFER]: buf }\n    ))\n  }\n\n  async json () {\n    const buf = await this[CONSUME_BODY]()\n    try {\n      return JSON.parse(buf.toString())\n    } catch (er) {\n      throw new FetchError(\n        `invalid json response body at ${this.url} reason: ${er.message}`,\n        'invalid-json'\n      )\n    }\n  }\n\n  text () {\n    return this[CONSUME_BODY]().then(buf => buf.toString())\n  }\n\n  buffer () {\n    return this[CONSUME_BODY]()\n  }\n\n  textConverted () {\n    return this[CONSUME_BODY]().then(buf => convertBody(buf, this.headers))\n  }\n\n  [CONSUME_BODY] () {\n    if (this[INTERNALS].disturbed) {\n      return Promise.reject(new TypeError(`body used already for: ${\n        this.url}`))\n    }\n\n    this[INTERNALS].disturbed = true\n\n    if (this[INTERNALS].error) {\n      return Promise.reject(this[INTERNALS].error)\n    }\n\n    // body is null\n    if (this.body === null) {\n      return Promise.resolve(Buffer.alloc(0))\n    }\n\n    if (Buffer.isBuffer(this.body)) {\n      return Promise.resolve(this.body)\n    }\n\n    const upstream = isBlob(this.body) ? this.body.stream() : this.body\n\n    /* istanbul ignore if: should never happen */\n    if (!Minipass.isStream(upstream)) {\n      return Promise.resolve(Buffer.alloc(0))\n    }\n\n    const stream = this.size && upstream instanceof MinipassSized ? upstream\n      : !this.size && upstream instanceof Minipass &&\n        !(upstream instanceof MinipassSized) ? upstream\n      : this.size ? new MinipassSized({ size: this.size })\n      : new Minipass()\n\n    // allow timeout on slow response body, but only if the stream is still writable. this\n    // makes the timeout center on the socket stream from lib/index.js rather than the\n    // intermediary minipass stream we create to receive the data\n    const resTimeout = this.timeout && stream.writable ? setTimeout(() => {\n      stream.emit('error', new FetchError(\n        `Response timeout while trying to fetch ${\n          this.url} (over ${this.timeout}ms)`, 'body-timeout'))\n    }, this.timeout) : null\n\n    // do not keep the process open just for this timeout, even\n    // though we expect it'll get cleared eventually.\n    if (resTimeout && resTimeout.unref) {\n      resTimeout.unref()\n    }\n\n    // do the pipe in the promise, because the pipe() can send too much\n    // data through right away and upset the MP Sized object\n    return new Promise((resolve) => {\n      // if the stream is some other kind of stream, then pipe through a MP\n      // so we can collect it more easily.\n      if (stream !== upstream) {\n        upstream.on('error', er => stream.emit('error', er))\n        upstream.pipe(stream)\n      }\n      resolve()\n    }).then(() => stream.concat()).then(buf => {\n      clearTimeout(resTimeout)\n      return buf\n    }).catch(er => {\n      clearTimeout(resTimeout)\n      // request was aborted, reject with this Error\n      if (er.name === 'AbortError' || er.name === 'FetchError') {\n        throw er\n      } else if (er.name === 'RangeError') {\n        throw new FetchError(`Could not create Buffer from response body for ${\n          this.url}: ${er.message}`, 'system', er)\n      } else {\n        // other errors, such as incorrect content-encoding or content-length\n        throw new FetchError(`Invalid response body while trying to fetch ${\n          this.url}: ${er.message}`, 'system', er)\n      }\n    })\n  }\n\n  static clone (instance) {\n    if (instance.bodyUsed) {\n      throw new Error('cannot clone body after it is used')\n    }\n\n    const body = instance.body\n\n    // check that body is a stream and not form-data object\n    // NB: can't clone the form-data object without having it as a dependency\n    if (Minipass.isStream(body) && typeof body.getBoundary !== 'function') {\n      // create a dedicated tee stream so that we don't lose data\n      // potentially sitting in the body stream's buffer by writing it\n      // immediately to p1 and not having it for p2.\n      const tee = new Minipass()\n      const p1 = new Minipass()\n      const p2 = new Minipass()\n      tee.on('error', er => {\n        p1.emit('error', er)\n        p2.emit('error', er)\n      })\n      body.on('error', er => tee.emit('error', er))\n      tee.pipe(p1)\n      tee.pipe(p2)\n      body.pipe(tee)\n      // set instance body to one fork, return the other\n      instance[INTERNALS].body = p1\n      return p2\n    } else {\n      return instance.body\n    }\n  }\n\n  static extractContentType (body) {\n    return body === null || body === undefined ? null\n      : typeof body === 'string' ? 'text/plain;charset=UTF-8'\n      : isURLSearchParams(body)\n        ? 'application/x-www-form-urlencoded;charset=UTF-8'\n        : isBlob(body) ? body.type || null\n        : Buffer.isBuffer(body) ? null\n        : Object.prototype.toString.call(body) === '[object ArrayBuffer]' ? null\n        : ArrayBuffer.isView(body) ? null\n        : typeof body.getBoundary === 'function'\n          ? `multipart/form-data;boundary=${body.getBoundary()}`\n          : Minipass.isStream(body) ? null\n          : 'text/plain;charset=UTF-8'\n  }\n\n  static getTotalBytes (instance) {\n    const { body } = instance\n    return (body === null || body === undefined) ? 0\n      : isBlob(body) ? body.size\n      : Buffer.isBuffer(body) ? body.length\n      : body && typeof body.getLengthSync === 'function' && (\n        // detect form data input from form-data module\n        body._lengthRetrievers &&\n        /* istanbul ignore next */ body._lengthRetrievers.length === 0 || // 1.x\n        body.hasKnownLength && body.hasKnownLength()) // 2.x\n        ? body.getLengthSync()\n        : null\n  }\n\n  static writeToStream (dest, instance) {\n    const { body } = instance\n\n    if (body === null || body === undefined) {\n      dest.end()\n    } else if (Buffer.isBuffer(body) || typeof body === 'string') {\n      dest.end(body)\n    } else {\n      // body is stream or blob\n      const stream = isBlob(body) ? body.stream() : body\n      stream.on('error', er => dest.emit('error', er)).pipe(dest)\n    }\n\n    return dest\n  }\n}\n\nObject.defineProperties(Body.prototype, {\n  body: { enumerable: true },\n  bodyUsed: { enumerable: true },\n  arrayBuffer: { enumerable: true },\n  blob: { enumerable: true },\n  json: { enumerable: true },\n  text: { enumerable: true },\n})\n\nconst isURLSearchParams = obj =>\n  // Duck-typing as a necessary condition.\n  (typeof obj !== 'object' ||\n    typeof obj.append !== 'function' ||\n    typeof obj.delete !== 'function' ||\n    typeof obj.get !== 'function' ||\n    typeof obj.getAll !== 'function' ||\n    typeof obj.has !== 'function' ||\n    typeof obj.set !== 'function') ? false\n  // Brand-checking and more duck-typing as optional condition.\n  : obj.constructor.name === 'URLSearchParams' ||\n    Object.prototype.toString.call(obj) === '[object URLSearchParams]' ||\n    typeof obj.sort === 'function'\n\nconst isBlob = obj =>\n  typeof obj === 'object' &&\n  typeof obj.arrayBuffer === 'function' &&\n  typeof obj.type === 'string' &&\n  typeof obj.stream === 'function' &&\n  typeof obj.constructor === 'function' &&\n  typeof obj.constructor.name === 'string' &&\n  /^(Blob|File)$/.test(obj.constructor.name) &&\n  /^(Blob|File)$/.test(obj[Symbol.toStringTag])\n\nconst convertBody = (buffer, headers) => {\n  /* istanbul ignore if */\n  if (typeof convert !== 'function') {\n    throw new Error('The package `encoding` must be installed to use the textConverted() function')\n  }\n\n  const ct = headers && headers.get('content-type')\n  let charset = 'utf-8'\n  let res\n\n  // header\n  if (ct) {\n    res = /charset=([^;]*)/i.exec(ct)\n  }\n\n  // no charset in content type, peek at response body for at most 1024 bytes\n  const str = buffer.slice(0, 1024).toString()\n\n  // html5\n  if (!res && str) {\n    res = /<meta.+?charset=(['\"])(.+?)\\1/i.exec(str)\n  }\n\n  // html4\n  if (!res && str) {\n    res = /<meta[\\s]+?http-equiv=(['\"])content-type\\1[\\s]+?content=(['\"])(.+?)\\2/i.exec(str)\n\n    if (!res) {\n      res = /<meta[\\s]+?content=(['\"])(.+?)\\1[\\s]+?http-equiv=(['\"])content-type\\3/i.exec(str)\n      if (res) {\n        res.pop()\n      } // drop last quote\n    }\n\n    if (res) {\n      res = /charset=(.*)/i.exec(res.pop())\n    }\n  }\n\n  // xml\n  if (!res && str) {\n    res = /<\\?xml.+?encoding=(['\"])(.+?)\\1/i.exec(str)\n  }\n\n  // found charset\n  if (res) {\n    charset = res.pop()\n\n    // prevent decode issues when sites use incorrect encoding\n    // ref: https://hsivonen.fi/encoding-menu/\n    if (charset === 'gb2312' || charset === 'gbk') {\n      charset = 'gb18030'\n    }\n  }\n\n  // turn raw buffers into a single utf-8 buffer\n  return convert(\n    buffer,\n    'UTF-8',\n    charset\n  ).toString()\n}\n\nmodule.exports = Body\n", "'use strict'\nconst invalidTokenRegex = /[^^_`a-zA-Z\\-0-9!#$%&'*+.|~]/\nconst invalidHeaderCharRegex = /[^\\t\\x20-\\x7e\\x80-\\xff]/\n\nconst validateName = name => {\n  name = `${name}`\n  if (invalidTokenRegex.test(name) || name === '') {\n    throw new TypeError(`${name} is not a legal HTTP header name`)\n  }\n}\n\nconst validateValue = value => {\n  value = `${value}`\n  if (invalidHeaderCharRegex.test(value)) {\n    throw new TypeError(`${value} is not a legal HTTP header value`)\n  }\n}\n\nconst find = (map, name) => {\n  name = name.toLowerCase()\n  for (const key in map) {\n    if (key.toLowerCase() === name) {\n      return key\n    }\n  }\n  return undefined\n}\n\nconst MAP = Symbol('map')\nclass Headers {\n  constructor (init = undefined) {\n    this[MAP] = Object.create(null)\n    if (init instanceof Headers) {\n      const rawHeaders = init.raw()\n      const headerNames = Object.keys(rawHeaders)\n      for (const headerName of headerNames) {\n        for (const value of rawHeaders[headerName]) {\n          this.append(headerName, value)\n        }\n      }\n      return\n    }\n\n    // no-op\n    if (init === undefined || init === null) {\n      return\n    }\n\n    if (typeof init === 'object') {\n      const method = init[Symbol.iterator]\n      if (method !== null && method !== undefined) {\n        if (typeof method !== 'function') {\n          throw new TypeError('Header pairs must be iterable')\n        }\n\n        // sequence<sequence<ByteString>>\n        // Note: per spec we have to first exhaust the lists then process them\n        const pairs = []\n        for (const pair of init) {\n          if (typeof pair !== 'object' ||\n              typeof pair[Symbol.iterator] !== 'function') {\n            throw new TypeError('Each header pair must be iterable')\n          }\n          const arrPair = Array.from(pair)\n          if (arrPair.length !== 2) {\n            throw new TypeError('Each header pair must be a name/value tuple')\n          }\n          pairs.push(arrPair)\n        }\n\n        for (const pair of pairs) {\n          this.append(pair[0], pair[1])\n        }\n      } else {\n        // record<ByteString, ByteString>\n        for (const key of Object.keys(init)) {\n          this.append(key, init[key])\n        }\n      }\n    } else {\n      throw new TypeError('Provided initializer must be an object')\n    }\n  }\n\n  get (name) {\n    name = `${name}`\n    validateName(name)\n    const key = find(this[MAP], name)\n    if (key === undefined) {\n      return null\n    }\n\n    return this[MAP][key].join(', ')\n  }\n\n  forEach (callback, thisArg = undefined) {\n    let pairs = getHeaders(this)\n    for (let i = 0; i < pairs.length; i++) {\n      const [name, value] = pairs[i]\n      callback.call(thisArg, value, name, this)\n      // refresh in case the callback added more headers\n      pairs = getHeaders(this)\n    }\n  }\n\n  set (name, value) {\n    name = `${name}`\n    value = `${value}`\n    validateName(name)\n    validateValue(value)\n    const key = find(this[MAP], name)\n    this[MAP][key !== undefined ? key : name] = [value]\n  }\n\n  append (name, value) {\n    name = `${name}`\n    value = `${value}`\n    validateName(name)\n    validateValue(value)\n    const key = find(this[MAP], name)\n    if (key !== undefined) {\n      this[MAP][key].push(value)\n    } else {\n      this[MAP][name] = [value]\n    }\n  }\n\n  has (name) {\n    name = `${name}`\n    validateName(name)\n    return find(this[MAP], name) !== undefined\n  }\n\n  delete (name) {\n    name = `${name}`\n    validateName(name)\n    const key = find(this[MAP], name)\n    if (key !== undefined) {\n      delete this[MAP][key]\n    }\n  }\n\n  raw () {\n    return this[MAP]\n  }\n\n  keys () {\n    return new HeadersIterator(this, 'key')\n  }\n\n  values () {\n    return new HeadersIterator(this, 'value')\n  }\n\n  [Symbol.iterator] () {\n    return new HeadersIterator(this, 'key+value')\n  }\n\n  entries () {\n    return new HeadersIterator(this, 'key+value')\n  }\n\n  get [Symbol.toStringTag] () {\n    return 'Headers'\n  }\n\n  static exportNodeCompatibleHeaders (headers) {\n    const obj = Object.assign(Object.create(null), headers[MAP])\n\n    // http.request() only supports string as Host header. This hack makes\n    // specifying custom Host header possible.\n    const hostHeaderKey = find(headers[MAP], 'Host')\n    if (hostHeaderKey !== undefined) {\n      obj[hostHeaderKey] = obj[hostHeaderKey][0]\n    }\n\n    return obj\n  }\n\n  static createHeadersLenient (obj) {\n    const headers = new Headers()\n    for (const name of Object.keys(obj)) {\n      if (invalidTokenRegex.test(name)) {\n        continue\n      }\n\n      if (Array.isArray(obj[name])) {\n        for (const val of obj[name]) {\n          if (invalidHeaderCharRegex.test(val)) {\n            continue\n          }\n\n          if (headers[MAP][name] === undefined) {\n            headers[MAP][name] = [val]\n          } else {\n            headers[MAP][name].push(val)\n          }\n        }\n      } else if (!invalidHeaderCharRegex.test(obj[name])) {\n        headers[MAP][name] = [obj[name]]\n      }\n    }\n    return headers\n  }\n}\n\nObject.defineProperties(Headers.prototype, {\n  get: { enumerable: true },\n  forEach: { enumerable: true },\n  set: { enumerable: true },\n  append: { enumerable: true },\n  has: { enumerable: true },\n  delete: { enumerable: true },\n  keys: { enumerable: true },\n  values: { enumerable: true },\n  entries: { enumerable: true },\n})\n\nconst getHeaders = (headers, kind = 'key+value') =>\n  Object.keys(headers[MAP]).sort().map(\n    kind === 'key' ? k => k.toLowerCase()\n    : kind === 'value' ? k => headers[MAP][k].join(', ')\n    : k => [k.toLowerCase(), headers[MAP][k].join(', ')]\n  )\n\nconst INTERNAL = Symbol('internal')\n\nclass HeadersIterator {\n  constructor (target, kind) {\n    this[INTERNAL] = {\n      target,\n      kind,\n      index: 0,\n    }\n  }\n\n  get [Symbol.toStringTag] () {\n    return 'HeadersIterator'\n  }\n\n  next () {\n    /* istanbul ignore if: should be impossible */\n    if (!this || Object.getPrototypeOf(this) !== HeadersIterator.prototype) {\n      throw new TypeError('Value of `this` is not a HeadersIterator')\n    }\n\n    const { target, kind, index } = this[INTERNAL]\n    const values = getHeaders(target, kind)\n    const len = values.length\n    if (index >= len) {\n      return {\n        value: undefined,\n        done: true,\n      }\n    }\n\n    this[INTERNAL].index++\n\n    return { value: values[index], done: false }\n  }\n}\n\n// manually extend because 'extends' requires a ctor\nObject.setPrototypeOf(HeadersIterator.prototype,\n  Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]())))\n\nmodule.exports = Headers\n", "'use strict'\nconst http = require('http')\nconst { STATUS_CODES } = http\n\nconst Headers = require('./headers.js')\nconst Body = require('./body.js')\nconst { clone, extractContentType } = Body\n\nconst INTERNALS = Symbol('Response internals')\n\nclass Response extends Body {\n  constructor (body = null, opts = {}) {\n    super(body, opts)\n\n    const status = opts.status || 200\n    const headers = new Headers(opts.headers)\n\n    if (body !== null && body !== undefined && !headers.has('Content-Type')) {\n      const contentType = extractContentType(body)\n      if (contentType) {\n        headers.append('Content-Type', contentType)\n      }\n    }\n\n    this[INTERNALS] = {\n      url: opts.url,\n      status,\n      statusText: opts.statusText || STATUS_CODES[status],\n      headers,\n      counter: opts.counter,\n      trailer: Promise.resolve(opts.trailer || new Headers()),\n    }\n  }\n\n  get trailer () {\n    return this[INTERNALS].trailer\n  }\n\n  get url () {\n    return this[INTERNALS].url || ''\n  }\n\n  get status () {\n    return this[INTERNALS].status\n  }\n\n  get ok () {\n    return this[INTERNALS].status >= 200 && this[INTERNALS].status < 300\n  }\n\n  get redirected () {\n    return this[INTERNALS].counter > 0\n  }\n\n  get statusText () {\n    return this[INTERNALS].statusText\n  }\n\n  get headers () {\n    return this[INTERNALS].headers\n  }\n\n  clone () {\n    return new Response(clone(this), {\n      url: this.url,\n      status: this.status,\n      statusText: this.statusText,\n      headers: this.headers,\n      ok: this.ok,\n      redirected: this.redirected,\n      trailer: this.trailer,\n    })\n  }\n\n  get [Symbol.toStringTag] () {\n    return 'Response'\n  }\n}\n\nmodule.exports = Response\n\nObject.defineProperties(Response.prototype, {\n  url: { enumerable: true },\n  status: { enumerable: true },\n  ok: { enumerable: true },\n  redirected: { enumerable: true },\n  statusText: { enumerable: true },\n  headers: { enumerable: true },\n  clone: { enumerable: true },\n})\n", "{\n  \"name\": \"minipass-fetch\",\n  \"version\": \"3.0.5\",\n  \"description\": \"An implementation of window.fetch in Node.js using Minipass streams\",\n  \"license\": \"MIT\",\n  \"main\": \"lib/index.js\",\n  \"scripts\": {\n    \"test:tls-fixtures\": \"./test/fixtures/tls/setup.sh\",\n    \"test\": \"tap\",\n    \"snap\": \"tap\",\n    \"lint\": \"eslint \\\"**/*.{js,cjs,ts,mjs,jsx,tsx}\\\"\",\n    \"postlint\": \"template-oss-check\",\n    \"lintfix\": \"npm run lint -- --fix\",\n    \"posttest\": \"npm run lint\",\n    \"template-oss-apply\": \"template-oss-apply --force\"\n  },\n  \"tap\": {\n    \"coverage-map\": \"map.js\",\n    \"check-coverage\": true,\n    \"nyc-arg\": [\n      \"--exclude\",\n      \"tap-snapshots/**\"\n    ]\n  },\n  \"devDependencies\": {\n    \"@npmcli/eslint-config\": \"^4.0.0\",\n    \"@npmcli/template-oss\": \"4.22.0\",\n    \"@ungap/url-search-params\": \"^0.2.2\",\n    \"abort-controller\": \"^3.0.0\",\n    \"abortcontroller-polyfill\": \"~1.7.3\",\n    \"encoding\": \"^0.1.13\",\n    \"form-data\": \"^4.0.0\",\n    \"nock\": \"^13.2.4\",\n    \"parted\": \"^0.1.1\",\n    \"string-to-arraybuffer\": \"^1.0.2\",\n    \"tap\": \"^16.0.0\"\n  },\n  \"dependencies\": {\n    \"minipass\": \"^7.0.3\",\n    \"minipass-sized\": \"^1.0.3\",\n    \"minizlib\": \"^2.1.2\"\n  },\n  \"optionalDependencies\": {\n    \"encoding\": \"^0.1.13\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/npm/minipass-fetch.git\"\n  },\n  \"keywords\": [\n    \"fetch\",\n    \"minipass\",\n    \"node-fetch\",\n    \"window.fetch\"\n  ],\n  \"files\": [\n    \"bin/\",\n    \"lib/\"\n  ],\n  \"engines\": {\n    \"node\": \"^14.17.0 || ^16.13.0 || >=18.0.0\"\n  },\n  \"author\": \"GitHub Inc.\",\n  \"templateOSS\": {\n    \"//@npmcli/template-oss\": \"This file is partially managed by @npmcli/template-oss. Edits may be overwritten.\",\n    \"version\": \"4.22.0\",\n    \"publish\": \"true\"\n  }\n}\n", "'use strict'\nconst { URL } = require('url')\nconst { Minipass } = require('minipass')\nconst Headers = require('./headers.js')\nconst { exportNodeCompatibleHeaders } = Headers\nconst Body = require('./body.js')\nconst { clone, extractContentType, getTotalBytes } = Body\n\nconst version = require('../package.json').version\nconst defaultUserAgent =\n  `minipass-fetch/${version} (+https://github.com/isaacs/minipass-fetch)`\n\nconst INTERNALS = Symbol('Request internals')\n\nconst isRequest = input =>\n  typeof input === 'object' && typeof input[INTERNALS] === 'object'\n\nconst isAbortSignal = signal => {\n  const proto = (\n    signal\n    && typeof signal === 'object'\n    && Object.getPrototypeOf(signal)\n  )\n  return !!(proto && proto.constructor.name === 'AbortSignal')\n}\n\nclass Request extends Body {\n  constructor (input, init = {}) {\n    const parsedURL = isRequest(input) ? new URL(input.url)\n      : input && input.href ? new URL(input.href)\n      : new URL(`${input}`)\n\n    if (isRequest(input)) {\n      init = { ...input[INTERNALS], ...init }\n    } else if (!input || typeof input === 'string') {\n      input = {}\n    }\n\n    const method = (init.method || input.method || 'GET').toUpperCase()\n    const isGETHEAD = method === 'GET' || method === 'HEAD'\n\n    if ((init.body !== null && init.body !== undefined ||\n        isRequest(input) && input.body !== null) && isGETHEAD) {\n      throw new TypeError('Request with GET/HEAD method cannot have body')\n    }\n\n    const inputBody = init.body !== null && init.body !== undefined ? init.body\n      : isRequest(input) && input.body !== null ? clone(input)\n      : null\n\n    super(inputBody, {\n      timeout: init.timeout || input.timeout || 0,\n      size: init.size || input.size || 0,\n    })\n\n    const headers = new Headers(init.headers || input.headers || {})\n\n    if (inputBody !== null && inputBody !== undefined &&\n        !headers.has('Content-Type')) {\n      const contentType = extractContentType(inputBody)\n      if (contentType) {\n        headers.append('Content-Type', contentType)\n      }\n    }\n\n    const signal = 'signal' in init ? init.signal\n      : null\n\n    if (signal !== null && signal !== undefined && !isAbortSignal(signal)) {\n      throw new TypeError('Expected signal must be an instanceof AbortSignal')\n    }\n\n    // TLS specific options that are handled by node\n    const {\n      ca,\n      cert,\n      ciphers,\n      clientCertEngine,\n      crl,\n      dhparam,\n      ecdhCurve,\n      family,\n      honorCipherOrder,\n      key,\n      passphrase,\n      pfx,\n      rejectUnauthorized = process.env.NODE_TLS_REJECT_UNAUTHORIZED !== '0',\n      secureOptions,\n      secureProtocol,\n      servername,\n      sessionIdContext,\n    } = init\n\n    this[INTERNALS] = {\n      method,\n      redirect: init.redirect || input.redirect || 'follow',\n      headers,\n      parsedURL,\n      signal,\n      ca,\n      cert,\n      ciphers,\n      clientCertEngine,\n      crl,\n      dhparam,\n      ecdhCurve,\n      family,\n      honorCipherOrder,\n      key,\n      passphrase,\n      pfx,\n      rejectUnauthorized,\n      secureOptions,\n      secureProtocol,\n      servername,\n      sessionIdContext,\n    }\n\n    // node-fetch-only options\n    this.follow = init.follow !== undefined ? init.follow\n      : input.follow !== undefined ? input.follow\n      : 20\n    this.compress = init.compress !== undefined ? init.compress\n      : input.compress !== undefined ? input.compress\n      : true\n    this.counter = init.counter || input.counter || 0\n    this.agent = init.agent || input.agent\n  }\n\n  get method () {\n    return this[INTERNALS].method\n  }\n\n  get url () {\n    return this[INTERNALS].parsedURL.toString()\n  }\n\n  get headers () {\n    return this[INTERNALS].headers\n  }\n\n  get redirect () {\n    return this[INTERNALS].redirect\n  }\n\n  get signal () {\n    return this[INTERNALS].signal\n  }\n\n  clone () {\n    return new Request(this)\n  }\n\n  get [Symbol.toStringTag] () {\n    return 'Request'\n  }\n\n  static getNodeRequestOptions (request) {\n    const parsedURL = request[INTERNALS].parsedURL\n    const headers = new Headers(request[INTERNALS].headers)\n\n    // fetch step 1.3\n    if (!headers.has('Accept')) {\n      headers.set('Accept', '*/*')\n    }\n\n    // Basic fetch\n    if (!/^https?:$/.test(parsedURL.protocol)) {\n      throw new TypeError('Only HTTP(S) protocols are supported')\n    }\n\n    if (request.signal &&\n        Minipass.isStream(request.body) &&\n        typeof request.body.destroy !== 'function') {\n      throw new Error(\n        'Cancellation of streamed requests with AbortSignal is not supported')\n    }\n\n    // HTTP-network-or-cache fetch steps 2.4-2.7\n    const contentLengthValue =\n      (request.body === null || request.body === undefined) &&\n        /^(POST|PUT)$/i.test(request.method) ? '0'\n      : request.body !== null && request.body !== undefined\n        ? getTotalBytes(request)\n        : null\n\n    if (contentLengthValue) {\n      headers.set('Content-Length', contentLengthValue + '')\n    }\n\n    // HTTP-network-or-cache fetch step 2.11\n    if (!headers.has('User-Agent')) {\n      headers.set('User-Agent', defaultUserAgent)\n    }\n\n    // HTTP-network-or-cache fetch step 2.15\n    if (request.compress && !headers.has('Accept-Encoding')) {\n      headers.set('Accept-Encoding', 'gzip,deflate')\n    }\n\n    const agent = typeof request.agent === 'function'\n      ? request.agent(parsedURL)\n      : request.agent\n\n    if (!headers.has('Connection') && !agent) {\n      headers.set('Connection', 'close')\n    }\n\n    // TLS specific options that are handled by node\n    const {\n      ca,\n      cert,\n      ciphers,\n      clientCertEngine,\n      crl,\n      dhparam,\n      ecdhCurve,\n      family,\n      honorCipherOrder,\n      key,\n      passphrase,\n      pfx,\n      rejectUnauthorized,\n      secureOptions,\n      secureProtocol,\n      servername,\n      sessionIdContext,\n    } = request[INTERNALS]\n\n    // HTTP-network fetch step 4.2\n    // chunked encoding is handled by Node.js\n\n    // we cannot spread parsedURL directly, so we have to read each property one-by-one\n    // and map them to the equivalent https?.request() method options\n    const urlProps = {\n      auth: parsedURL.username || parsedURL.password\n        ? `${parsedURL.username}:${parsedURL.password}`\n        : '',\n      host: parsedURL.host,\n      hostname: parsedURL.hostname,\n      path: `${parsedURL.pathname}${parsedURL.search}`,\n      port: parsedURL.port,\n      protocol: parsedURL.protocol,\n    }\n\n    return {\n      ...urlProps,\n      method: request.method,\n      headers: exportNodeCompatibleHeaders(headers),\n      agent,\n      ca,\n      cert,\n      ciphers,\n      clientCertEngine,\n      crl,\n      dhparam,\n      ecdhCurve,\n      family,\n      honorCipherOrder,\n      key,\n      passphrase,\n      pfx,\n      rejectUnauthorized,\n      secureOptions,\n      secureProtocol,\n      servername,\n      sessionIdContext,\n      timeout: request.timeout,\n    }\n  }\n}\n\nmodule.exports = Request\n\nObject.defineProperties(Request.prototype, {\n  method: { enumerable: true },\n  url: { enumerable: true },\n  headers: { enumerable: true },\n  redirect: { enumerable: true },\n  clone: { enumerable: true },\n  signal: { enumerable: true },\n})\n", "'use strict'\nclass AbortError extends Error {\n  constructor (message) {\n    super(message)\n    this.code = 'FETCH_ABORTED'\n    this.type = 'aborted'\n    Error.captureStackTrace(this, this.constructor)\n  }\n\n  get name () {\n    return 'AbortError'\n  }\n\n  // don't allow name to be overridden, but don't throw either\n  set name (s) {}\n}\nmodule.exports = AbortError\n", "'use strict'\nconst { URL } = require('url')\nconst http = require('http')\nconst https = require('https')\nconst zlib = require('minizlib')\nconst { Minipass } = require('minipass')\n\nconst Body = require('./body.js')\nconst { writeToStream, getTotalBytes } = Body\nconst Response = require('./response.js')\nconst Headers = require('./headers.js')\nconst { createHeadersLenient } = Headers\nconst Request = require('./request.js')\nconst { getNodeRequestOptions } = Request\nconst FetchError = require('./fetch-error.js')\nconst AbortError = require('./abort-error.js')\n\n// XXX this should really be split up and unit-ized for easier testing\n// and better DRY implementation of data/http request aborting\nconst fetch = async (url, opts) => {\n  if (/^data:/.test(url)) {\n    const request = new Request(url, opts)\n    // delay 1 promise tick so that the consumer can abort right away\n    return Promise.resolve().then(() => new Promise((resolve, reject) => {\n      let type, data\n      try {\n        const { pathname, search } = new URL(url)\n        const split = pathname.split(',')\n        if (split.length < 2) {\n          throw new Error('invalid data: URI')\n        }\n        const mime = split.shift()\n        const base64 = /;base64$/.test(mime)\n        type = base64 ? mime.slice(0, -1 * ';base64'.length) : mime\n        const rawData = decodeURIComponent(split.join(',') + search)\n        data = base64 ? Buffer.from(rawData, 'base64') : Buffer.from(rawData)\n      } catch (er) {\n        return reject(new FetchError(`[${request.method}] ${\n          request.url} invalid URL, ${er.message}`, 'system', er))\n      }\n\n      const { signal } = request\n      if (signal && signal.aborted) {\n        return reject(new AbortError('The user aborted a request.'))\n      }\n\n      const headers = { 'Content-Length': data.length }\n      if (type) {\n        headers['Content-Type'] = type\n      }\n      return resolve(new Response(data, { headers }))\n    }))\n  }\n\n  return new Promise((resolve, reject) => {\n    // build request object\n    const request = new Request(url, opts)\n    let options\n    try {\n      options = getNodeRequestOptions(request)\n    } catch (er) {\n      return reject(er)\n    }\n\n    const send = (options.protocol === 'https:' ? https : http).request\n    const { signal } = request\n    let response = null\n    const abort = () => {\n      const error = new AbortError('The user aborted a request.')\n      reject(error)\n      if (Minipass.isStream(request.body) &&\n          typeof request.body.destroy === 'function') {\n        request.body.destroy(error)\n      }\n      if (response && response.body) {\n        response.body.emit('error', error)\n      }\n    }\n\n    if (signal && signal.aborted) {\n      return abort()\n    }\n\n    const abortAndFinalize = () => {\n      abort()\n      finalize()\n    }\n\n    const finalize = () => {\n      req.abort()\n      if (signal) {\n        signal.removeEventListener('abort', abortAndFinalize)\n      }\n      clearTimeout(reqTimeout)\n    }\n\n    // send request\n    const req = send(options)\n\n    if (signal) {\n      signal.addEventListener('abort', abortAndFinalize)\n    }\n\n    let reqTimeout = null\n    if (request.timeout) {\n      req.once('socket', () => {\n        reqTimeout = setTimeout(() => {\n          reject(new FetchError(`network timeout at: ${\n            request.url}`, 'request-timeout'))\n          finalize()\n        }, request.timeout)\n      })\n    }\n\n    req.on('error', er => {\n      // if a 'response' event is emitted before the 'error' event, then by the\n      // time this handler is run it's too late to reject the Promise for the\n      // response. instead, we forward the error event to the response stream\n      // so that the error will surface to the user when they try to consume\n      // the body. this is done as a side effect of aborting the request except\n      // for in windows, where we must forward the event manually, otherwise\n      // there is no longer a ref'd socket attached to the request and the\n      // stream never ends so the event loop runs out of work and the process\n      // exits without warning.\n      // coverage skipped here due to the difficulty in testing\n      // istanbul ignore next\n      if (req.res) {\n        req.res.emit('error', er)\n      }\n      reject(new FetchError(`request to ${request.url} failed, reason: ${\n        er.message}`, 'system', er))\n      finalize()\n    })\n\n    req.on('response', res => {\n      clearTimeout(reqTimeout)\n\n      const headers = createHeadersLenient(res.headers)\n\n      // HTTP fetch step 5\n      if (fetch.isRedirect(res.statusCode)) {\n        // HTTP fetch step 5.2\n        const location = headers.get('Location')\n\n        // HTTP fetch step 5.3\n        let locationURL = null\n        try {\n          locationURL = location === null ? null : new URL(location, request.url).toString()\n        } catch {\n          // error here can only be invalid URL in Location: header\n          // do not throw when options.redirect == manual\n          // let the user extract the errorneous redirect URL\n          if (request.redirect !== 'manual') {\n            /* eslint-disable-next-line max-len */\n            reject(new FetchError(`uri requested responds with an invalid redirect URL: ${location}`, 'invalid-redirect'))\n            finalize()\n            return\n          }\n        }\n\n        // HTTP fetch step 5.5\n        if (request.redirect === 'error') {\n          reject(new FetchError('uri requested responds with a redirect, ' +\n            `redirect mode is set to error: ${request.url}`, 'no-redirect'))\n          finalize()\n          return\n        } else if (request.redirect === 'manual') {\n          // node-fetch-specific step: make manual redirect a bit easier to\n          // use by setting the Location header value to the resolved URL.\n          if (locationURL !== null) {\n            // handle corrupted header\n            try {\n              headers.set('Location', locationURL)\n            } catch (err) {\n              /* istanbul ignore next: nodejs server prevent invalid\n                 response headers, we can't test this through normal\n                 request */\n              reject(err)\n            }\n          }\n        } else if (request.redirect === 'follow' && locationURL !== null) {\n          // HTTP-redirect fetch step 5\n          if (request.counter >= request.follow) {\n            reject(new FetchError(`maximum redirect reached at: ${\n              request.url}`, 'max-redirect'))\n            finalize()\n            return\n          }\n\n          // HTTP-redirect fetch step 9\n          if (res.statusCode !== 303 &&\n              request.body &&\n              getTotalBytes(request) === null) {\n            reject(new FetchError(\n              'Cannot follow redirect with body being a readable stream',\n              'unsupported-redirect'\n            ))\n            finalize()\n            return\n          }\n\n          // Update host due to redirection\n          request.headers.set('host', (new URL(locationURL)).host)\n\n          // HTTP-redirect fetch step 6 (counter increment)\n          // Create a new Request object.\n          const requestOpts = {\n            headers: new Headers(request.headers),\n            follow: request.follow,\n            counter: request.counter + 1,\n            agent: request.agent,\n            compress: request.compress,\n            method: request.method,\n            body: request.body,\n            signal: request.signal,\n            timeout: request.timeout,\n          }\n\n          // if the redirect is to a new hostname, strip the authorization and cookie headers\n          const parsedOriginal = new URL(request.url)\n          const parsedRedirect = new URL(locationURL)\n          if (parsedOriginal.hostname !== parsedRedirect.hostname) {\n            requestOpts.headers.delete('authorization')\n            requestOpts.headers.delete('cookie')\n          }\n\n          // HTTP-redirect fetch step 11\n          if (res.statusCode === 303 || (\n            (res.statusCode === 301 || res.statusCode === 302) &&\n              request.method === 'POST'\n          )) {\n            requestOpts.method = 'GET'\n            requestOpts.body = undefined\n            requestOpts.headers.delete('content-length')\n          }\n\n          // HTTP-redirect fetch step 15\n          resolve(fetch(new Request(locationURL, requestOpts)))\n          finalize()\n          return\n        }\n      } // end if(isRedirect)\n\n      // prepare response\n      res.once('end', () =>\n        signal && signal.removeEventListener('abort', abortAndFinalize))\n\n      const body = new Minipass()\n      // if an error occurs, either on the response stream itself, on one of the\n      // decoder streams, or a response length timeout from the Body class, we\n      // forward the error through to our internal body stream. If we see an\n      // error event on that, we call finalize to abort the request and ensure\n      // we don't leave a socket believing a request is in flight.\n      // this is difficult to test, so lacks specific coverage.\n      body.on('error', finalize)\n      // exceedingly rare that the stream would have an error,\n      // but just in case we proxy it to the stream in use.\n      res.on('error', /* istanbul ignore next */ er => body.emit('error', er))\n      res.on('data', (chunk) => body.write(chunk))\n      res.on('end', () => body.end())\n\n      const responseOptions = {\n        url: request.url,\n        status: res.statusCode,\n        statusText: res.statusMessage,\n        headers: headers,\n        size: request.size,\n        timeout: request.timeout,\n        counter: request.counter,\n        trailer: new Promise(resolveTrailer =>\n          res.on('end', () => resolveTrailer(createHeadersLenient(res.trailers)))),\n      }\n\n      // HTTP-network fetch step 12.1.1.3\n      const codings = headers.get('Content-Encoding')\n\n      // HTTP-network fetch step 12.1.1.4: handle content codings\n\n      // in following scenarios we ignore compression support\n      // 1. compression support is disabled\n      // 2. HEAD request\n      // 3. no Content-Encoding header\n      // 4. no content response (204)\n      // 5. content not modified response (304)\n      if (!request.compress ||\n          request.method === 'HEAD' ||\n          codings === null ||\n          res.statusCode === 204 ||\n          res.statusCode === 304) {\n        response = new Response(body, responseOptions)\n        resolve(response)\n        return\n      }\n\n      // Be less strict when decoding compressed responses, since sometimes\n      // servers send slightly invalid responses that are still accepted\n      // by common browsers.\n      // Always using Z_SYNC_FLUSH is what cURL does.\n      const zlibOptions = {\n        flush: zlib.constants.Z_SYNC_FLUSH,\n        finishFlush: zlib.constants.Z_SYNC_FLUSH,\n      }\n\n      // for gzip\n      if (codings === 'gzip' || codings === 'x-gzip') {\n        const unzip = new zlib.Gunzip(zlibOptions)\n        response = new Response(\n          // exceedingly rare that the stream would have an error,\n          // but just in case we proxy it to the stream in use.\n          body.on('error', /* istanbul ignore next */ er => unzip.emit('error', er)).pipe(unzip),\n          responseOptions\n        )\n        resolve(response)\n        return\n      }\n\n      // for deflate\n      if (codings === 'deflate' || codings === 'x-deflate') {\n        // handle the infamous raw deflate response from old servers\n        // a hack for old IIS and Apache servers\n        const raw = res.pipe(new Minipass())\n        raw.once('data', chunk => {\n          // see http://stackoverflow.com/questions/37519828\n          const decoder = (chunk[0] & 0x0F) === 0x08\n            ? new zlib.Inflate()\n            : new zlib.InflateRaw()\n          // exceedingly rare that the stream would have an error,\n          // but just in case we proxy it to the stream in use.\n          body.on('error', /* istanbul ignore next */ er => decoder.emit('error', er)).pipe(decoder)\n          response = new Response(decoder, responseOptions)\n          resolve(response)\n        })\n        return\n      }\n\n      // for br\n      if (codings === 'br') {\n        // ignoring coverage so tests don't have to fake support (or lack of) for brotli\n        // istanbul ignore next\n        try {\n          var decoder = new zlib.BrotliDecompress()\n        } catch (err) {\n          reject(err)\n          finalize()\n          return\n        }\n        // exceedingly rare that the stream would have an error,\n        // but just in case we proxy it to the stream in use.\n        body.on('error', /* istanbul ignore next */ er => decoder.emit('error', er)).pipe(decoder)\n        response = new Response(decoder, responseOptions)\n        resolve(response)\n        return\n      }\n\n      // otherwise, use response as-is\n      response = new Response(body, responseOptions)\n      resolve(response)\n    })\n\n    writeToStream(req, request)\n  })\n}\n\nmodule.exports = fetch\n\nfetch.isRedirect = code =>\n  code === 301 ||\n  code === 302 ||\n  code === 303 ||\n  code === 307 ||\n  code === 308\n\nfetch.Headers = Headers\nfetch.Request = Request\nfetch.Response = Response\nfetch.FetchError = FetchError\nfetch.AbortError = AbortError\n", "const dns = require('dns')\n\nconst conditionalHeaders = [\n  'if-modified-since',\n  'if-none-match',\n  'if-unmodified-since',\n  'if-match',\n  'if-range',\n]\n\nconst configureOptions = (opts) => {\n  const { strictSSL, ...options } = { ...opts }\n  options.method = options.method ? options.method.toUpperCase() : 'GET'\n  options.rejectUnauthorized = strictSSL !== false\n\n  if (!options.retry) {\n    options.retry = { retries: 0 }\n  } else if (typeof options.retry === 'string') {\n    const retries = parseInt(options.retry, 10)\n    if (isFinite(retries)) {\n      options.retry = { retries }\n    } else {\n      options.retry = { retries: 0 }\n    }\n  } else if (typeof options.retry === 'number') {\n    options.retry = { retries: options.retry }\n  } else {\n    options.retry = { retries: 0, ...options.retry }\n  }\n\n  options.dns = { ttl: 5 * 60 * 1000, lookup: dns.lookup, ...options.dns }\n\n  options.cache = options.cache || 'default'\n  if (options.cache === 'default') {\n    const hasConditionalHeader = Object.keys(options.headers || {}).some((name) => {\n      return conditionalHeaders.includes(name.toLowerCase())\n    })\n    if (hasConditionalHeader) {\n      options.cache = 'no-store'\n    }\n  }\n\n  options.cacheAdditionalHeaders = options.cacheAdditionalHeaders || []\n\n  // cacheManager is deprecated, but if it's set and\n  // cachePath is not we should copy it to the new field\n  if (options.cacheManager && !options.cachePath) {\n    options.cachePath = options.cacheManager\n  }\n\n  return options\n}\n\nmodule.exports = configureOptions\n", "'use strict';\n\n/**\n * @typedef {Object} HttpRequest\n * @property {Record<string, string>} headers - Request headers\n * @property {string} [method] - HTTP method\n * @property {string} [url] - Request URL\n */\n\n/**\n * @typedef {Object} HttpResponse\n * @property {Record<string, string>} headers - Response headers\n * @property {number} [status] - HTTP status code\n */\n\n/**\n * Set of default cacheable status codes per RFC 7231 section 6.1.\n * @type {Set<number>}\n */\nconst statusCodeCacheableByDefault = new Set([\n    200,\n    203,\n    204,\n    206,\n    300,\n    301,\n    308,\n    404,\n    405,\n    410,\n    414,\n    501,\n]);\n\n/**\n * Set of HTTP status codes that the cache implementation understands.\n * Note: This implementation does not understand partial responses (206).\n * @type {Set<number>}\n */\nconst understoodStatuses = new Set([\n    200,\n    203,\n    204,\n    300,\n    301,\n    302,\n    303,\n    307,\n    308,\n    404,\n    405,\n    410,\n    414,\n    501,\n]);\n\n/**\n * Set of HTTP error status codes.\n * @type {Set<number>}\n */\nconst errorStatusCodes = new Set([\n    500,\n    502,\n    503,\n    504,\n]);\n\n/**\n * Object representing hop-by-hop headers that should be removed.\n * @type {Record<string, boolean>}\n */\nconst hopByHopHeaders = {\n    date: true, // included, because we add Age update Date\n    connection: true,\n    'keep-alive': true,\n    'proxy-authenticate': true,\n    'proxy-authorization': true,\n    te: true,\n    trailer: true,\n    'transfer-encoding': true,\n    upgrade: true,\n};\n\n/**\n * Headers that are excluded from revalidation update.\n * @type {Record<string, boolean>}\n */\nconst excludedFromRevalidationUpdate = {\n    // Since the old body is reused, it doesn't make sense to change properties of the body\n    'content-length': true,\n    'content-encoding': true,\n    'transfer-encoding': true,\n    'content-range': true,\n};\n\n/**\n * Converts a string to a number or returns zero if the conversion fails.\n * @param {string} s - The string to convert.\n * @returns {number} The parsed number or 0.\n */\nfunction toNumberOrZero(s) {\n    const n = parseInt(s, 10);\n    return isFinite(n) ? n : 0;\n}\n\n/**\n * Determines if the given response is an error response.\n * Implements RFC 5861 behavior.\n * @param {HttpResponse|undefined} response - The HTTP response object.\n * @returns {boolean} true if the response is an error or undefined, false otherwise.\n */\nfunction isErrorResponse(response) {\n    // consider undefined response as faulty\n    if (!response) {\n        return true;\n    }\n    return errorStatusCodes.has(response.status);\n}\n\n/**\n * Parses a Cache-Control header string into an object.\n * @param {string} [header] - The Cache-Control header value.\n * @returns {Record<string, string|boolean>} An object representing Cache-Control directives.\n */\nfunction parseCacheControl(header) {\n    /** @type {Record<string, string|boolean>} */\n    const cc = {};\n    if (!header) return cc;\n\n    // TODO: When there is more than one value present for a given directive (e.g., two Expires header fields, multiple Cache-Control: max-age directives),\n    // the directive's value is considered invalid. Caches are encouraged to consider responses that have invalid freshness information to be stale\n    const parts = header.trim().split(/,/);\n    for (const part of parts) {\n        const [k, v] = part.split(/=/, 2);\n        cc[k.trim()] = v === undefined ? true : v.trim().replace(/^\"|\"$/g, '');\n    }\n\n    return cc;\n}\n\n/**\n * Formats a Cache-Control directives object into a header string.\n * @param {Record<string, string|boolean>} cc - The Cache-Control directives.\n * @returns {string|undefined} A formatted Cache-Control header string or undefined if empty.\n */\nfunction formatCacheControl(cc) {\n    let parts = [];\n    for (const k in cc) {\n        const v = cc[k];\n        parts.push(v === true ? k : k + '=' + v);\n    }\n    if (!parts.length) {\n        return undefined;\n    }\n    return parts.join(', ');\n}\n\nmodule.exports = class CachePolicy {\n    /**\n     * Creates a new CachePolicy instance.\n     * @param {HttpRequest} req - Incoming client request.\n     * @param {HttpResponse} res - Received server response.\n     * @param {Object} [options={}] - Configuration options.\n     * @param {boolean} [options.shared=true] - Is the cache shared (a public proxy)? `false` for personal browser caches.\n     * @param {number} [options.cacheHeuristic=0.1] - Fallback heuristic (age fraction) for cache duration.\n     * @param {number} [options.immutableMinTimeToLive=86400000] - Minimum TTL for immutable responses in milliseconds.\n     * @param {boolean} [options.ignoreCargoCult=false] - Detect nonsense cache headers, and override them.\n     * @param {any} [options._fromObject] - Internal parameter for deserialization. Do not use.\n     */\n    constructor(\n        req,\n        res,\n        {\n            shared,\n            cacheHeuristic,\n            immutableMinTimeToLive,\n            ignoreCargoCult,\n            _fromObject,\n        } = {}\n    ) {\n        if (_fromObject) {\n            this._fromObject(_fromObject);\n            return;\n        }\n\n        if (!res || !res.headers) {\n            throw Error('Response headers missing');\n        }\n        this._assertRequestHasHeaders(req);\n\n        /** @type {number} Timestamp when the response was received */\n        this._responseTime = this.now();\n        /** @type {boolean} Indicates if the cache is shared */\n        this._isShared = shared !== false;\n        /** @type {boolean} Indicates if legacy cargo cult directives should be ignored */\n        this._ignoreCargoCult = !!ignoreCargoCult;\n        /** @type {number} Heuristic cache fraction */\n        this._cacheHeuristic =\n            undefined !== cacheHeuristic ? cacheHeuristic : 0.1; // 10% matches IE\n        /** @type {number} Minimum TTL for immutable responses in ms */\n        this._immutableMinTtl =\n            undefined !== immutableMinTimeToLive\n                ? immutableMinTimeToLive\n                : 24 * 3600 * 1000;\n\n        /** @type {number} HTTP status code */\n        this._status = 'status' in res ? res.status : 200;\n        /** @type {Record<string, string>} Response headers */\n        this._resHeaders = res.headers;\n        /** @type {Record<string, string|boolean>} Parsed Cache-Control directives from response */\n        this._rescc = parseCacheControl(res.headers['cache-control']);\n        /** @type {string} HTTP method (e.g., GET, POST) */\n        this._method = 'method' in req ? req.method : 'GET';\n        /** @type {string} Request URL */\n        this._url = req.url;\n        /** @type {string} Host header from the request */\n        this._host = req.headers.host;\n        /** @type {boolean} Whether the request does not include an Authorization header */\n        this._noAuthorization = !req.headers.authorization;\n        /** @type {Record<string, string>|null} Request headers used for Vary matching */\n        this._reqHeaders = res.headers.vary ? req.headers : null; // Don't keep all request headers if they won't be used\n        /** @type {Record<string, string|boolean>} Parsed Cache-Control directives from request */\n        this._reqcc = parseCacheControl(req.headers['cache-control']);\n\n        // Assume that if someone uses legacy, non-standard uncecessary options they don't understand caching,\n        // so there's no point stricly adhering to the blindly copy&pasted directives.\n        if (\n            this._ignoreCargoCult &&\n            'pre-check' in this._rescc &&\n            'post-check' in this._rescc\n        ) {\n            delete this._rescc['pre-check'];\n            delete this._rescc['post-check'];\n            delete this._rescc['no-cache'];\n            delete this._rescc['no-store'];\n            delete this._rescc['must-revalidate'];\n            this._resHeaders = Object.assign({}, this._resHeaders, {\n                'cache-control': formatCacheControl(this._rescc),\n            });\n            delete this._resHeaders.expires;\n            delete this._resHeaders.pragma;\n        }\n\n        // When the Cache-Control header field is not present in a request, caches MUST consider the no-cache request pragma-directive\n        // as having the same effect as if \"Cache-Control: no-cache\" were present (see Section 5.2.1).\n        if (\n            res.headers['cache-control'] == null &&\n            /no-cache/.test(res.headers.pragma)\n        ) {\n            this._rescc['no-cache'] = true;\n        }\n    }\n\n    /**\n     * You can monkey-patch it for testing.\n     * @returns {number} Current time in milliseconds.\n     */\n    now() {\n        return Date.now();\n    }\n\n    /**\n     * Determines if the response is storable in a cache.\n     * @returns {boolean} `false` if can never be cached.\n     */\n    storable() {\n        // The \"no-store\" request directive indicates that a cache MUST NOT store any part of either this request or any response to it.\n        return !!(\n            !this._reqcc['no-store'] &&\n            // A cache MUST NOT store a response to any request, unless:\n            // The request method is understood by the cache and defined as being cacheable, and\n            ('GET' === this._method ||\n                'HEAD' === this._method ||\n                ('POST' === this._method && this._hasExplicitExpiration())) &&\n            // the response status code is understood by the cache, and\n            understoodStatuses.has(this._status) &&\n            // the \"no-store\" cache directive does not appear in request or response header fields, and\n            !this._rescc['no-store'] &&\n            // the \"private\" response directive does not appear in the response, if the cache is shared, and\n            (!this._isShared || !this._rescc.private) &&\n            // the Authorization header field does not appear in the request, if the cache is shared,\n            (!this._isShared ||\n                this._noAuthorization ||\n                this._allowsStoringAuthenticated()) &&\n            // the response either:\n            // contains an Expires header field, or\n            (this._resHeaders.expires ||\n                // contains a max-age response directive, or\n                // contains a s-maxage response directive and the cache is shared, or\n                // contains a public response directive.\n                this._rescc['max-age'] ||\n                (this._isShared && this._rescc['s-maxage']) ||\n                this._rescc.public ||\n                // has a status code that is defined as cacheable by default\n                statusCodeCacheableByDefault.has(this._status))\n        );\n    }\n\n    /**\n     * @returns {boolean} true if expiration is explicitly defined.\n     */\n    _hasExplicitExpiration() {\n        // 4.2.1 Calculating Freshness Lifetime\n        return !!(\n            (this._isShared && this._rescc['s-maxage']) ||\n            this._rescc['max-age'] ||\n            this._resHeaders.expires\n        );\n    }\n\n    /**\n     * @param {HttpRequest} req - a request\n     * @throws {Error} if the headers are missing.\n     */\n    _assertRequestHasHeaders(req) {\n        if (!req || !req.headers) {\n            throw Error('Request headers missing');\n        }\n    }\n\n    /**\n     * Checks if the request matches the cache and can be satisfied from the cache immediately,\n     * without having to make a request to the server.\n     *\n     * This doesn't support `stale-while-revalidate`. See `evaluateRequest()` for a more complete solution.\n     *\n     * @param {HttpRequest} req - The new incoming HTTP request.\n     * @returns {boolean} `true`` if the cached response used to construct this cache policy satisfies the request without revalidation.\n     */\n    satisfiesWithoutRevalidation(req) {\n        const result = this.evaluateRequest(req);\n        return !result.revalidation;\n    }\n\n    /**\n     * @param {{headers: Record<string, string>, synchronous: boolean}|undefined} revalidation - Revalidation information, if any.\n     * @returns {{response: {headers: Record<string, string>}, revalidation: {headers: Record<string, string>, synchronous: boolean}|undefined}} An object with a cached response headers and revalidation info.\n     */\n    _evaluateRequestHitResult(revalidation) {\n        return {\n            response: {\n                headers: this.responseHeaders(),\n            },\n            revalidation,\n        };\n    }\n\n    /**\n     * @param {HttpRequest} request - new incoming\n     * @param {boolean} synchronous - whether revalidation must be synchronous (not s-w-r).\n     * @returns {{headers: Record<string, string>, synchronous: boolean}} An object with revalidation headers and a synchronous flag.\n     */\n    _evaluateRequestRevalidation(request, synchronous) {\n        return {\n            synchronous,\n            headers: this.revalidationHeaders(request),\n        };\n    }\n\n    /**\n     * @param {HttpRequest} request - new incoming\n     * @returns {{response: undefined, revalidation: {headers: Record<string, string>, synchronous: boolean}}} An object indicating no cached response and revalidation details.\n     */\n    _evaluateRequestMissResult(request) {\n        return {\n            response: undefined,\n            revalidation: this._evaluateRequestRevalidation(request, true),\n        };\n    }\n\n    /**\n     * Checks if the given request matches this cache entry, and how the cache can be used to satisfy it. Returns an object with:\n     *\n     * ```\n     * {\n     *     // If defined, you must send a request to the server.\n     *     revalidation: {\n     *         headers: {}, // HTTP headers to use when sending the revalidation response\n     *         // If true, you MUST wait for a response from the server before using the cache\n     *         // If false, this is stale-while-revalidate. The cache is stale, but you can use it while you update it asynchronously.\n     *         synchronous: bool,\n     *     },\n     *     // If defined, you can use this cached response.\n     *     response: {\n     *         headers: {}, // Updated cached HTTP headers you must use when responding to the client\n     *     },\n     * }\n     * ```\n     * @param {HttpRequest} req - new incoming HTTP request\n     * @returns {{response: {headers: Record<string, string>}|undefined, revalidation: {headers: Record<string, string>, synchronous: boolean}|undefined}} An object containing keys:\n     *   - revalidation: { headers: Record<string, string>, synchronous: boolean } Set if you should send this to the origin server\n     *   - response: { headers: Record<string, string> } Set if you can respond to the client with these cached headers\n     */\n    evaluateRequest(req) {\n        this._assertRequestHasHeaders(req);\n\n        // In all circumstances, a cache MUST NOT ignore the must-revalidate directive\n        if (this._rescc['must-revalidate']) {\n            return this._evaluateRequestMissResult(req);\n        }\n\n        if (!this._requestMatches(req, false)) {\n            return this._evaluateRequestMissResult(req);\n        }\n\n        // When presented with a request, a cache MUST NOT reuse a stored response, unless:\n        // the presented request does not contain the no-cache pragma (Section 5.4), nor the no-cache cache directive,\n        // unless the stored response is successfully validated (Section 4.3), and\n        const requestCC = parseCacheControl(req.headers['cache-control']);\n\n        if (requestCC['no-cache'] || /no-cache/.test(req.headers.pragma)) {\n            return this._evaluateRequestMissResult(req);\n        }\n\n        if (requestCC['max-age'] && this.age() > toNumberOrZero(requestCC['max-age'])) {\n            return this._evaluateRequestMissResult(req);\n        }\n\n        if (requestCC['min-fresh'] && this.maxAge() - this.age() < toNumberOrZero(requestCC['min-fresh'])) {\n            return this._evaluateRequestMissResult(req);\n        }\n\n        // the stored response is either:\n        // fresh, or allowed to be served stale\n        if (this.stale()) {\n            // If a value is present, then the client is willing to accept a response that has\n            // exceeded its freshness lifetime by no more than the specified number of seconds\n            const allowsStaleWithoutRevalidation = 'max-stale' in requestCC &&\n                (true === requestCC['max-stale'] || requestCC['max-stale'] > this.age() - this.maxAge());\n\n            if (allowsStaleWithoutRevalidation) {\n                return this._evaluateRequestHitResult(undefined);\n            }\n\n            if (this.useStaleWhileRevalidate()) {\n                return this._evaluateRequestHitResult(this._evaluateRequestRevalidation(req, false));\n            }\n\n            return this._evaluateRequestMissResult(req);\n        }\n\n        return this._evaluateRequestHitResult(undefined);\n    }\n\n    /**\n     * @param {HttpRequest} req - check if this is for the same cache entry\n     * @param {boolean} allowHeadMethod - allow a HEAD method to match.\n     * @returns {boolean} `true` if the request matches.\n     */\n    _requestMatches(req, allowHeadMethod) {\n        // The presented effective request URI and that of the stored response match, and\n        return !!(\n            (!this._url || this._url === req.url) &&\n            this._host === req.headers.host &&\n            // the request method associated with the stored response allows it to be used for the presented request, and\n            (!req.method ||\n                this._method === req.method ||\n                (allowHeadMethod && 'HEAD' === req.method)) &&\n            // selecting header fields nominated by the stored response (if any) match those presented, and\n            this._varyMatches(req)\n        );\n    }\n\n    /**\n     * Determines whether storing authenticated responses is allowed.\n     * @returns {boolean} `true` if allowed.\n     */\n    _allowsStoringAuthenticated() {\n        // following Cache-Control response directives (Section 5.2.2) have such an effect: must-revalidate, public, and s-maxage.\n        return !!(\n            this._rescc['must-revalidate'] ||\n            this._rescc.public ||\n            this._rescc['s-maxage']\n        );\n    }\n\n    /**\n     * Checks whether the Vary header in the response matches the new request.\n     * @param {HttpRequest} req - incoming HTTP request\n     * @returns {boolean} `true` if the vary headers match.\n     */\n    _varyMatches(req) {\n        if (!this._resHeaders.vary) {\n            return true;\n        }\n\n        // A Vary header field-value of \"*\" always fails to match\n        if (this._resHeaders.vary === '*') {\n            return false;\n        }\n\n        const fields = this._resHeaders.vary\n            .trim()\n            .toLowerCase()\n            .split(/\\s*,\\s*/);\n        for (const name of fields) {\n            if (req.headers[name] !== this._reqHeaders[name]) return false;\n        }\n        return true;\n    }\n\n    /**\n     * Creates a copy of the given headers without any hop-by-hop headers.\n     * @param {Record<string, string>} inHeaders - old headers from the cached response\n     * @returns {Record<string, string>} A new headers object without hop-by-hop headers.\n     */\n    _copyWithoutHopByHopHeaders(inHeaders) {\n        /** @type {Record<string, string>} */\n        const headers = {};\n        for (const name in inHeaders) {\n            if (hopByHopHeaders[name]) continue;\n            headers[name] = inHeaders[name];\n        }\n        // 9.1.  Connection\n        if (inHeaders.connection) {\n            const tokens = inHeaders.connection.trim().split(/\\s*,\\s*/);\n            for (const name of tokens) {\n                delete headers[name];\n            }\n        }\n        if (headers.warning) {\n            const warnings = headers.warning.split(/,/).filter(warning => {\n                return !/^\\s*1[0-9][0-9]/.test(warning);\n            });\n            if (!warnings.length) {\n                delete headers.warning;\n            } else {\n                headers.warning = warnings.join(',').trim();\n            }\n        }\n        return headers;\n    }\n\n    /**\n     * Returns the response headers adjusted for serving the cached response.\n     * Removes hop-by-hop headers and updates the Age and Date headers.\n     * @returns {Record<string, string>} The adjusted response headers.\n     */\n    responseHeaders() {\n        const headers = this._copyWithoutHopByHopHeaders(this._resHeaders);\n        const age = this.age();\n\n        // A cache SHOULD generate 113 warning if it heuristically chose a freshness\n        // lifetime greater than 24 hours and the response's age is greater than 24 hours.\n        if (\n            age > 3600 * 24 &&\n            !this._hasExplicitExpiration() &&\n            this.maxAge() > 3600 * 24\n        ) {\n            headers.warning =\n                (headers.warning ? `${headers.warning}, ` : '') +\n                '113 - \"rfc7234 5.5.4\"';\n        }\n        headers.age = `${Math.round(age)}`;\n        headers.date = new Date(this.now()).toUTCString();\n        return headers;\n    }\n\n    /**\n     * Returns the Date header value from the response or the current time if invalid.\n     * @returns {number} Timestamp (in milliseconds) representing the Date header or response time.\n     */\n    date() {\n        const serverDate = Date.parse(this._resHeaders.date);\n        if (isFinite(serverDate)) {\n            return serverDate;\n        }\n        return this._responseTime;\n    }\n\n    /**\n     * Value of the Age header, in seconds, updated for the current time.\n     * May be fractional.\n     * @returns {number} The age in seconds.\n     */\n    age() {\n        let age = this._ageValue();\n\n        const residentTime = (this.now() - this._responseTime) / 1000;\n        return age + residentTime;\n    }\n\n    /**\n     * @returns {number} The Age header value as a number.\n     */\n    _ageValue() {\n        return toNumberOrZero(this._resHeaders.age);\n    }\n\n    /**\n     * Possibly outdated value of applicable max-age (or heuristic equivalent) in seconds.\n     * This counts since response's `Date`.\n     *\n     * For an up-to-date value, see `timeToLive()`.\n     *\n     * Returns the maximum age (freshness lifetime) of the response in seconds.\n     * @returns {number} The max-age value in seconds.\n     */\n    maxAge() {\n        if (!this.storable() || this._rescc['no-cache']) {\n            return 0;\n        }\n\n        // Shared responses with cookies are cacheable according to the RFC, but IMHO it'd be unwise to do so by default\n        // so this implementation requires explicit opt-in via public header\n        if (\n            this._isShared &&\n            (this._resHeaders['set-cookie'] &&\n                !this._rescc.public &&\n                !this._rescc.immutable)\n        ) {\n            return 0;\n        }\n\n        if (this._resHeaders.vary === '*') {\n            return 0;\n        }\n\n        if (this._isShared) {\n            if (this._rescc['proxy-revalidate']) {\n                return 0;\n            }\n            // if a response includes the s-maxage directive, a shared cache recipient MUST ignore the Expires field.\n            if (this._rescc['s-maxage']) {\n                return toNumberOrZero(this._rescc['s-maxage']);\n            }\n        }\n\n        // If a response includes a Cache-Control field with the max-age directive, a recipient MUST ignore the Expires field.\n        if (this._rescc['max-age']) {\n            return toNumberOrZero(this._rescc['max-age']);\n        }\n\n        const defaultMinTtl = this._rescc.immutable ? this._immutableMinTtl : 0;\n\n        const serverDate = this.date();\n        if (this._resHeaders.expires) {\n            const expires = Date.parse(this._resHeaders.expires);\n            // A cache recipient MUST interpret invalid date formats, especially the value \"0\", as representing a time in the past (i.e., \"already expired\").\n            if (Number.isNaN(expires) || expires < serverDate) {\n                return 0;\n            }\n            return Math.max(defaultMinTtl, (expires - serverDate) / 1000);\n        }\n\n        if (this._resHeaders['last-modified']) {\n            const lastModified = Date.parse(this._resHeaders['last-modified']);\n            if (isFinite(lastModified) && serverDate > lastModified) {\n                return Math.max(\n                    defaultMinTtl,\n                    ((serverDate - lastModified) / 1000) * this._cacheHeuristic\n                );\n            }\n        }\n\n        return defaultMinTtl;\n    }\n\n    /**\n     * Remaining time this cache entry may be useful for, in *milliseconds*.\n     * You can use this as an expiration time for your cache storage.\n     *\n     * Prefer this method over `maxAge()`, because it includes other factors like `age` and `stale-while-revalidate`.\n     * @returns {number} Time-to-live in milliseconds.\n     */\n    timeToLive() {\n        const age = this.maxAge() - this.age();\n        const staleIfErrorAge = age + toNumberOrZero(this._rescc['stale-if-error']);\n        const staleWhileRevalidateAge = age + toNumberOrZero(this._rescc['stale-while-revalidate']);\n        return Math.round(Math.max(0, age, staleIfErrorAge, staleWhileRevalidateAge) * 1000);\n    }\n\n    /**\n     * If true, this cache entry is past its expiration date.\n     * Note that stale cache may be useful sometimes, see `evaluateRequest()`.\n     * @returns {boolean} `false` doesn't mean it's fresh nor usable\n     */\n    stale() {\n        return this.maxAge() <= this.age();\n    }\n\n    /**\n     * @returns {boolean} `true` if `stale-if-error` condition allows use of a stale response.\n     */\n    _useStaleIfError() {\n        return this.maxAge() + toNumberOrZero(this._rescc['stale-if-error']) > this.age();\n    }\n\n    /** See `evaluateRequest()` for a more complete solution\n     * @returns {boolean} `true` if `stale-while-revalidate` is currently allowed.\n     */\n    useStaleWhileRevalidate() {\n        const swr = toNumberOrZero(this._rescc['stale-while-revalidate']);\n        return swr > 0 && this.maxAge() + swr > this.age();\n    }\n\n    /**\n     * Creates a `CachePolicy` instance from a serialized object.\n     * @param {Object} obj - The serialized object.\n     * @returns {CachePolicy} A new CachePolicy instance.\n     */\n    static fromObject(obj) {\n        return new this(undefined, undefined, { _fromObject: obj });\n    }\n\n    /**\n     * @param {any} obj - The serialized object.\n     * @throws {Error} If already initialized or if the object is invalid.\n     */\n    _fromObject(obj) {\n        if (this._responseTime) throw Error('Reinitialized');\n        if (!obj || obj.v !== 1) throw Error('Invalid serialization');\n\n        this._responseTime = obj.t;\n        this._isShared = obj.sh;\n        this._cacheHeuristic = obj.ch;\n        this._immutableMinTtl =\n            obj.imm !== undefined ? obj.imm : 24 * 3600 * 1000;\n        this._ignoreCargoCult = !!obj.icc;\n        this._status = obj.st;\n        this._resHeaders = obj.resh;\n        this._rescc = obj.rescc;\n        this._method = obj.m;\n        this._url = obj.u;\n        this._host = obj.h;\n        this._noAuthorization = obj.a;\n        this._reqHeaders = obj.reqh;\n        this._reqcc = obj.reqcc;\n    }\n\n    /**\n     * Serializes the `CachePolicy` instance into a JSON-serializable object.\n     * @returns {Object} The serialized object.\n     */\n    toObject() {\n        return {\n            v: 1,\n            t: this._responseTime,\n            sh: this._isShared,\n            ch: this._cacheHeuristic,\n            imm: this._immutableMinTtl,\n            icc: this._ignoreCargoCult,\n            st: this._status,\n            resh: this._resHeaders,\n            rescc: this._rescc,\n            m: this._method,\n            u: this._url,\n            h: this._host,\n            a: this._noAuthorization,\n            reqh: this._reqHeaders,\n            reqcc: this._reqcc,\n        };\n    }\n\n    /**\n     * Headers for sending to the origin server to revalidate stale response.\n     * Allows server to return 304 to allow reuse of the previous response.\n     *\n     * Hop by hop headers are always stripped.\n     * Revalidation headers may be added or removed, depending on request.\n     * @param {HttpRequest} incomingReq - The incoming HTTP request.\n     * @returns {Record<string, string>} The headers for the revalidation request.\n     */\n    revalidationHeaders(incomingReq) {\n        this._assertRequestHasHeaders(incomingReq);\n        const headers = this._copyWithoutHopByHopHeaders(incomingReq.headers);\n\n        // This implementation does not understand range requests\n        delete headers['if-range'];\n\n        if (!this._requestMatches(incomingReq, true) || !this.storable()) {\n            // revalidation allowed via HEAD\n            // not for the same resource, or wasn't allowed to be cached anyway\n            delete headers['if-none-match'];\n            delete headers['if-modified-since'];\n            return headers;\n        }\n\n        /* MUST send that entity-tag in any cache validation request (using If-Match or If-None-Match) if an entity-tag has been provided by the origin server. */\n        if (this._resHeaders.etag) {\n            headers['if-none-match'] = headers['if-none-match']\n                ? `${headers['if-none-match']}, ${this._resHeaders.etag}`\n                : this._resHeaders.etag;\n        }\n\n        // Clients MAY issue simple (non-subrange) GET requests with either weak validators or strong validators. Clients MUST NOT use weak validators in other forms of request.\n        const forbidsWeakValidators =\n            headers['accept-ranges'] ||\n            headers['if-match'] ||\n            headers['if-unmodified-since'] ||\n            (this._method && this._method != 'GET');\n\n        /* SHOULD send the Last-Modified value in non-subrange cache validation requests (using If-Modified-Since) if only a Last-Modified value has been provided by the origin server.\n        Note: This implementation does not understand partial responses (206) */\n        if (forbidsWeakValidators) {\n            delete headers['if-modified-since'];\n\n            if (headers['if-none-match']) {\n                const etags = headers['if-none-match']\n                    .split(/,/)\n                    .filter(etag => {\n                        return !/^\\s*W\\//.test(etag);\n                    });\n                if (!etags.length) {\n                    delete headers['if-none-match'];\n                } else {\n                    headers['if-none-match'] = etags.join(',').trim();\n                }\n            }\n        } else if (\n            this._resHeaders['last-modified'] &&\n            !headers['if-modified-since']\n        ) {\n            headers['if-modified-since'] = this._resHeaders['last-modified'];\n        }\n\n        return headers;\n    }\n\n    /**\n     * Creates new CachePolicy with information combined from the previews response,\n     * and the new revalidation response.\n     *\n     * Returns {policy, modified} where modified is a boolean indicating\n     * whether the response body has been modified, and old cached body can't be used.\n     *\n     * @param {HttpRequest} request - The latest HTTP request asking for the cached entry.\n     * @param {HttpResponse} response - The latest revalidation HTTP response from the origin server.\n     * @returns {{policy: CachePolicy, modified: boolean, matches: boolean}} The updated policy and modification status.\n     * @throws {Error} If the response headers are missing.\n     */\n    revalidatedPolicy(request, response) {\n        this._assertRequestHasHeaders(request);\n\n        if (this._useStaleIfError() && isErrorResponse(response)) {\n          return {\n              policy: this,\n              modified: false,\n              matches: true,\n          };\n        }\n\n        if (!response || !response.headers) {\n            throw Error('Response headers missing');\n        }\n\n        // These aren't going to be supported exactly, since one CachePolicy object\n        // doesn't know about all the other cached objects.\n        let matches = false;\n        if (response.status !== undefined && response.status != 304) {\n            matches = false;\n        } else if (\n            response.headers.etag &&\n            !/^\\s*W\\//.test(response.headers.etag)\n        ) {\n            // \"All of the stored responses with the same strong validator are selected.\n            // If none of the stored responses contain the same strong validator,\n            // then the cache MUST NOT use the new response to update any stored responses.\"\n            matches =\n                this._resHeaders.etag &&\n                this._resHeaders.etag.replace(/^\\s*W\\//, '') ===\n                    response.headers.etag;\n        } else if (this._resHeaders.etag && response.headers.etag) {\n            // \"If the new response contains a weak validator and that validator corresponds\n            // to one of the cache's stored responses,\n            // then the most recent of those matching stored responses is selected for update.\"\n            matches =\n                this._resHeaders.etag.replace(/^\\s*W\\//, '') ===\n                response.headers.etag.replace(/^\\s*W\\//, '');\n        } else if (this._resHeaders['last-modified']) {\n            matches =\n                this._resHeaders['last-modified'] ===\n                response.headers['last-modified'];\n        } else {\n            // If the new response does not include any form of validator (such as in the case where\n            // a client generates an If-Modified-Since request from a source other than the Last-Modified\n            // response header field), and there is only one stored response, and that stored response also\n            // lacks a validator, then that stored response is selected for update.\n            if (\n                !this._resHeaders.etag &&\n                !this._resHeaders['last-modified'] &&\n                !response.headers.etag &&\n                !response.headers['last-modified']\n            ) {\n                matches = true;\n            }\n        }\n\n        const optionsCopy = {\n            shared: this._isShared,\n            cacheHeuristic: this._cacheHeuristic,\n            immutableMinTimeToLive: this._immutableMinTtl,\n            ignoreCargoCult: this._ignoreCargoCult,\n        };\n\n        if (!matches) {\n            return {\n                policy: new this.constructor(request, response, optionsCopy),\n                // Client receiving 304 without body, even if it's invalid/mismatched has no option\n                // but to reuse a cached body. We don't have a good way to tell clients to do\n                // error recovery in such case.\n                modified: response.status != 304,\n                matches: false,\n            };\n        }\n\n        // use other header fields provided in the 304 (Not Modified) response to replace all instances\n        // of the corresponding header fields in the stored response.\n        const headers = {};\n        for (const k in this._resHeaders) {\n            headers[k] =\n                k in response.headers && !excludedFromRevalidationUpdate[k]\n                    ? response.headers[k]\n                    : this._resHeaders[k];\n        }\n\n        const newResponse = Object.assign({}, response, {\n            status: this._status,\n            method: this._method,\n            headers,\n        });\n        return {\n            policy: new this.constructor(request, newResponse, optionsCopy),\n            modified: false,\n            matches: true,\n        };\n    }\n};\n", "'use strict'\n\nconst crypto = require('crypto')\nconst { Minipass } = require('minipass')\n\nconst SPEC_ALGORITHMS = ['sha512', 'sha384', 'sha256']\nconst DEFAULT_ALGORITHMS = ['sha512']\n\n// TODO: this should really be a hardcoded list of algorithms we support,\n// rather than [a-z0-9].\nconst BASE64_REGEX = /^[a-z0-9+/]+(?:=?=?)$/i\nconst SRI_REGEX = /^([a-z0-9]+)-([^?]+)([?\\S*]*)$/\nconst STRICT_SRI_REGEX = /^([a-z0-9]+)-([A-Za-z0-9+/=]{44,88})(\\?[\\x21-\\x7E]*)?$/\nconst VCHAR_REGEX = /^[\\x21-\\x7E]+$/\n\nconst getOptString = options => options?.length ? `?${options.join('?')}` : ''\n\nclass IntegrityStream extends Minipass {\n  #emittedIntegrity\n  #emittedSize\n  #emittedVerified\n\n  constructor (opts) {\n    super()\n    this.size = 0\n    this.opts = opts\n\n    // may be overridden later, but set now for class consistency\n    this.#getOptions()\n\n    // options used for calculating stream.  can't be changed.\n    if (opts?.algorithms) {\n      this.algorithms = [...opts.algorithms]\n    } else {\n      this.algorithms = [...DEFAULT_ALGORITHMS]\n    }\n    if (this.algorithm !== null && !this.algorithms.includes(this.algorithm)) {\n      this.algorithms.push(this.algorithm)\n    }\n\n    this.hashes = this.algorithms.map(crypto.createHash)\n  }\n\n  #getOptions () {\n    // For verification\n    this.sri = this.opts?.integrity ? parse(this.opts?.integrity, this.opts) : null\n    this.expectedSize = this.opts?.size\n\n    if (!this.sri) {\n      this.algorithm = null\n    } else if (this.sri.isHash) {\n      this.goodSri = true\n      this.algorithm = this.sri.algorithm\n    } else {\n      this.goodSri = !this.sri.isEmpty()\n      this.algorithm = this.sri.pickAlgorithm(this.opts)\n    }\n\n    this.digests = this.goodSri ? this.sri[this.algorithm] : null\n    this.optString = getOptString(this.opts?.options)\n  }\n\n  on (ev, handler) {\n    if (ev === 'size' && this.#emittedSize) {\n      return handler(this.#emittedSize)\n    }\n\n    if (ev === 'integrity' && this.#emittedIntegrity) {\n      return handler(this.#emittedIntegrity)\n    }\n\n    if (ev === 'verified' && this.#emittedVerified) {\n      return handler(this.#emittedVerified)\n    }\n\n    return super.on(ev, handler)\n  }\n\n  emit (ev, data) {\n    if (ev === 'end') {\n      this.#onEnd()\n    }\n    return super.emit(ev, data)\n  }\n\n  write (data) {\n    this.size += data.length\n    this.hashes.forEach(h => h.update(data))\n    return super.write(data)\n  }\n\n  #onEnd () {\n    if (!this.goodSri) {\n      this.#getOptions()\n    }\n    const newSri = parse(this.hashes.map((h, i) => {\n      return `${this.algorithms[i]}-${h.digest('base64')}${this.optString}`\n    }).join(' '), this.opts)\n    // Integrity verification mode\n    const match = this.goodSri && newSri.match(this.sri, this.opts)\n    if (typeof this.expectedSize === 'number' && this.size !== this.expectedSize) {\n      /* eslint-disable-next-line max-len */\n      const err = new Error(`stream size mismatch when checking ${this.sri}.\\n  Wanted: ${this.expectedSize}\\n  Found: ${this.size}`)\n      err.code = 'EBADSIZE'\n      err.found = this.size\n      err.expected = this.expectedSize\n      err.sri = this.sri\n      this.emit('error', err)\n    } else if (this.sri && !match) {\n      /* eslint-disable-next-line max-len */\n      const err = new Error(`${this.sri} integrity checksum failed when using ${this.algorithm}: wanted ${this.digests} but got ${newSri}. (${this.size} bytes)`)\n      err.code = 'EINTEGRITY'\n      err.found = newSri\n      err.expected = this.digests\n      err.algorithm = this.algorithm\n      err.sri = this.sri\n      this.emit('error', err)\n    } else {\n      this.#emittedSize = this.size\n      this.emit('size', this.size)\n      this.#emittedIntegrity = newSri\n      this.emit('integrity', newSri)\n      if (match) {\n        this.#emittedVerified = match\n        this.emit('verified', match)\n      }\n    }\n  }\n}\n\nclass Hash {\n  get isHash () {\n    return true\n  }\n\n  constructor (hash, opts) {\n    const strict = opts?.strict\n    this.source = hash.trim()\n\n    // set default values so that we make V8 happy to\n    // always see a familiar object template.\n    this.digest = ''\n    this.algorithm = ''\n    this.options = []\n\n    // 3.1. Integrity metadata (called \"Hash\" by ssri)\n    // https://w3c.github.io/webappsec-subresource-integrity/#integrity-metadata-description\n    const match = this.source.match(\n      strict\n        ? STRICT_SRI_REGEX\n        : SRI_REGEX\n    )\n    if (!match) {\n      return\n    }\n    if (strict && !SPEC_ALGORITHMS.includes(match[1])) {\n      return\n    }\n    this.algorithm = match[1]\n    this.digest = match[2]\n\n    const rawOpts = match[3]\n    if (rawOpts) {\n      this.options = rawOpts.slice(1).split('?')\n    }\n  }\n\n  hexDigest () {\n    return this.digest && Buffer.from(this.digest, 'base64').toString('hex')\n  }\n\n  toJSON () {\n    return this.toString()\n  }\n\n  match (integrity, opts) {\n    const other = parse(integrity, opts)\n    if (!other) {\n      return false\n    }\n    if (other.isIntegrity) {\n      const algo = other.pickAlgorithm(opts, [this.algorithm])\n\n      if (!algo) {\n        return false\n      }\n\n      const foundHash = other[algo].find(hash => hash.digest === this.digest)\n\n      if (foundHash) {\n        return foundHash\n      }\n\n      return false\n    }\n    return other.digest === this.digest ? other : false\n  }\n\n  toString (opts) {\n    if (opts?.strict) {\n      // Strict mode enforces the standard as close to the foot of the\n      // letter as it can.\n      if (!(\n        // The spec has very restricted productions for algorithms.\n        // https://www.w3.org/TR/CSP2/#source-list-syntax\n        SPEC_ALGORITHMS.includes(this.algorithm) &&\n        // Usually, if someone insists on using a \"different\" base64, we\n        // leave it as-is, since there's multiple standards, and the\n        // specified is not a URL-safe variant.\n        // https://www.w3.org/TR/CSP2/#base64_value\n        this.digest.match(BASE64_REGEX) &&\n        // Option syntax is strictly visual chars.\n        // https://w3c.github.io/webappsec-subresource-integrity/#grammardef-option-expression\n        // https://tools.ietf.org/html/rfc5234#appendix-B.1\n        this.options.every(opt => opt.match(VCHAR_REGEX))\n      )) {\n        return ''\n      }\n    }\n    return `${this.algorithm}-${this.digest}${getOptString(this.options)}`\n  }\n}\n\nfunction integrityHashToString (toString, sep, opts, hashes) {\n  const toStringIsNotEmpty = toString !== ''\n\n  let shouldAddFirstSep = false\n  let complement = ''\n\n  const lastIndex = hashes.length - 1\n\n  for (let i = 0; i < lastIndex; i++) {\n    const hashString = Hash.prototype.toString.call(hashes[i], opts)\n\n    if (hashString) {\n      shouldAddFirstSep = true\n\n      complement += hashString\n      complement += sep\n    }\n  }\n\n  const finalHashString = Hash.prototype.toString.call(hashes[lastIndex], opts)\n\n  if (finalHashString) {\n    shouldAddFirstSep = true\n    complement += finalHashString\n  }\n\n  if (toStringIsNotEmpty && shouldAddFirstSep) {\n    return toString + sep + complement\n  }\n\n  return toString + complement\n}\n\nclass Integrity {\n  get isIntegrity () {\n    return true\n  }\n\n  toJSON () {\n    return this.toString()\n  }\n\n  isEmpty () {\n    return Object.keys(this).length === 0\n  }\n\n  toString (opts) {\n    let sep = opts?.sep || ' '\n    let toString = ''\n\n    if (opts?.strict) {\n      // Entries must be separated by whitespace, according to spec.\n      sep = sep.replace(/\\S+/g, ' ')\n\n      for (const hash of SPEC_ALGORITHMS) {\n        if (this[hash]) {\n          toString = integrityHashToString(toString, sep, opts, this[hash])\n        }\n      }\n    } else {\n      for (const hash of Object.keys(this)) {\n        toString = integrityHashToString(toString, sep, opts, this[hash])\n      }\n    }\n\n    return toString\n  }\n\n  concat (integrity, opts) {\n    const other = typeof integrity === 'string'\n      ? integrity\n      : stringify(integrity, opts)\n    return parse(`${this.toString(opts)} ${other}`, opts)\n  }\n\n  hexDigest () {\n    return parse(this, { single: true }).hexDigest()\n  }\n\n  // add additional hashes to an integrity value, but prevent\n  // *changing* an existing integrity hash.\n  merge (integrity, opts) {\n    const other = parse(integrity, opts)\n    for (const algo in other) {\n      if (this[algo]) {\n        if (!this[algo].find(hash =>\n          other[algo].find(otherhash =>\n            hash.digest === otherhash.digest))) {\n          throw new Error('hashes do not match, cannot update integrity')\n        }\n      } else {\n        this[algo] = other[algo]\n      }\n    }\n  }\n\n  match (integrity, opts) {\n    const other = parse(integrity, opts)\n    if (!other) {\n      return false\n    }\n    const algo = other.pickAlgorithm(opts, Object.keys(this))\n    return (\n      !!algo &&\n      this[algo] &&\n      other[algo] &&\n      this[algo].find(hash =>\n        other[algo].find(otherhash =>\n          hash.digest === otherhash.digest\n        )\n      )\n    ) || false\n  }\n\n  // Pick the highest priority algorithm present, optionally also limited to a\n  // set of hashes found in another integrity.  When limiting it may return\n  // nothing.\n  pickAlgorithm (opts, hashes) {\n    const pickAlgorithm = opts?.pickAlgorithm || getPrioritizedHash\n    const keys = Object.keys(this).filter(k => {\n      if (hashes?.length) {\n        return hashes.includes(k)\n      }\n      return true\n    })\n    if (keys.length) {\n      return keys.reduce((acc, algo) => pickAlgorithm(acc, algo) || acc)\n    }\n    // no intersection between this and hashes,\n    return null\n  }\n}\n\nmodule.exports.parse = parse\nfunction parse (sri, opts) {\n  if (!sri) {\n    return null\n  }\n  if (typeof sri === 'string') {\n    return _parse(sri, opts)\n  } else if (sri.algorithm && sri.digest) {\n    const fullSri = new Integrity()\n    fullSri[sri.algorithm] = [sri]\n    return _parse(stringify(fullSri, opts), opts)\n  } else {\n    return _parse(stringify(sri, opts), opts)\n  }\n}\n\nfunction _parse (integrity, opts) {\n  // 3.4.3. Parse metadata\n  // https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata\n  if (opts?.single) {\n    return new Hash(integrity, opts)\n  }\n  const hashes = integrity.trim().split(/\\s+/).reduce((acc, string) => {\n    const hash = new Hash(string, opts)\n    if (hash.algorithm && hash.digest) {\n      const algo = hash.algorithm\n      if (!acc[algo]) {\n        acc[algo] = []\n      }\n      acc[algo].push(hash)\n    }\n    return acc\n  }, new Integrity())\n  return hashes.isEmpty() ? null : hashes\n}\n\nmodule.exports.stringify = stringify\nfunction stringify (obj, opts) {\n  if (obj.algorithm && obj.digest) {\n    return Hash.prototype.toString.call(obj, opts)\n  } else if (typeof obj === 'string') {\n    return stringify(parse(obj, opts), opts)\n  } else {\n    return Integrity.prototype.toString.call(obj, opts)\n  }\n}\n\nmodule.exports.fromHex = fromHex\nfunction fromHex (hexDigest, algorithm, opts) {\n  const optString = getOptString(opts?.options)\n  return parse(\n    `${algorithm}-${\n      Buffer.from(hexDigest, 'hex').toString('base64')\n    }${optString}`, opts\n  )\n}\n\nmodule.exports.fromData = fromData\nfunction fromData (data, opts) {\n  const algorithms = opts?.algorithms || [...DEFAULT_ALGORITHMS]\n  const optString = getOptString(opts?.options)\n  return algorithms.reduce((acc, algo) => {\n    const digest = crypto.createHash(algo).update(data).digest('base64')\n    const hash = new Hash(\n      `${algo}-${digest}${optString}`,\n      opts\n    )\n    /* istanbul ignore else - it would be VERY strange if the string we\n     * just calculated with an algo did not have an algo or digest.\n     */\n    if (hash.algorithm && hash.digest) {\n      const hashAlgo = hash.algorithm\n      if (!acc[hashAlgo]) {\n        acc[hashAlgo] = []\n      }\n      acc[hashAlgo].push(hash)\n    }\n    return acc\n  }, new Integrity())\n}\n\nmodule.exports.fromStream = fromStream\nfunction fromStream (stream, opts) {\n  const istream = integrityStream(opts)\n  return new Promise((resolve, reject) => {\n    stream.pipe(istream)\n    stream.on('error', reject)\n    istream.on('error', reject)\n    let sri\n    istream.on('integrity', s => {\n      sri = s\n    })\n    istream.on('end', () => resolve(sri))\n    istream.resume()\n  })\n}\n\nmodule.exports.checkData = checkData\nfunction checkData (data, sri, opts) {\n  sri = parse(sri, opts)\n  if (!sri || !Object.keys(sri).length) {\n    if (opts?.error) {\n      throw Object.assign(\n        new Error('No valid integrity hashes to check against'), {\n          code: 'EINTEGRITY',\n        }\n      )\n    } else {\n      return false\n    }\n  }\n  const algorithm = sri.pickAlgorithm(opts)\n  const digest = crypto.createHash(algorithm).update(data).digest('base64')\n  const newSri = parse({ algorithm, digest })\n  const match = newSri.match(sri, opts)\n  opts = opts || {}\n  if (match || !(opts.error)) {\n    return match\n  } else if (typeof opts.size === 'number' && (data.length !== opts.size)) {\n    /* eslint-disable-next-line max-len */\n    const err = new Error(`data size mismatch when checking ${sri}.\\n  Wanted: ${opts.size}\\n  Found: ${data.length}`)\n    err.code = 'EBADSIZE'\n    err.found = data.length\n    err.expected = opts.size\n    err.sri = sri\n    throw err\n  } else {\n    /* eslint-disable-next-line max-len */\n    const err = new Error(`Integrity checksum failed when using ${algorithm}: Wanted ${sri}, but got ${newSri}. (${data.length} bytes)`)\n    err.code = 'EINTEGRITY'\n    err.found = newSri\n    err.expected = sri\n    err.algorithm = algorithm\n    err.sri = sri\n    throw err\n  }\n}\n\nmodule.exports.checkStream = checkStream\nfunction checkStream (stream, sri, opts) {\n  opts = opts || Object.create(null)\n  opts.integrity = sri\n  sri = parse(sri, opts)\n  if (!sri || !Object.keys(sri).length) {\n    return Promise.reject(Object.assign(\n      new Error('No valid integrity hashes to check against'), {\n        code: 'EINTEGRITY',\n      }\n    ))\n  }\n  const checker = integrityStream(opts)\n  return new Promise((resolve, reject) => {\n    stream.pipe(checker)\n    stream.on('error', reject)\n    checker.on('error', reject)\n    let verified\n    checker.on('verified', s => {\n      verified = s\n    })\n    checker.on('end', () => resolve(verified))\n    checker.resume()\n  })\n}\n\nmodule.exports.integrityStream = integrityStream\nfunction integrityStream (opts = Object.create(null)) {\n  return new IntegrityStream(opts)\n}\n\nmodule.exports.create = createIntegrity\nfunction createIntegrity (opts) {\n  const algorithms = opts?.algorithms || [...DEFAULT_ALGORITHMS]\n  const optString = getOptString(opts?.options)\n\n  const hashes = algorithms.map(crypto.createHash)\n\n  return {\n    update: function (chunk, enc) {\n      hashes.forEach(h => h.update(chunk, enc))\n      return this\n    },\n    digest: function () {\n      const integrity = algorithms.reduce((acc, algo) => {\n        const digest = hashes.shift().digest('base64')\n        const hash = new Hash(\n          `${algo}-${digest}${optString}`,\n          opts\n        )\n        /* istanbul ignore else - it would be VERY strange if the hash we\n         * just calculated with an algo did not have an algo or digest.\n         */\n        if (hash.algorithm && hash.digest) {\n          const hashAlgo = hash.algorithm\n          if (!acc[hashAlgo]) {\n            acc[hashAlgo] = []\n          }\n          acc[hashAlgo].push(hash)\n        }\n        return acc\n      }, new Integrity())\n\n      return integrity\n    },\n  }\n}\n\nconst NODE_HASHES = crypto.getHashes()\n\n// This is a Best Effort\u2122 at a reasonable priority for hash algos\nconst DEFAULT_PRIORITY = [\n  'md5', 'whirlpool', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512',\n  // TODO - it's unclear _which_ of these Node will actually use as its name\n  //        for the algorithm, so we guesswork it based on the OpenSSL names.\n  'sha3',\n  'sha3-256', 'sha3-384', 'sha3-512',\n  'sha3_256', 'sha3_384', 'sha3_512',\n].filter(algo => NODE_HASHES.includes(algo))\n\nfunction getPrioritizedHash (algo1, algo2) {\n  /* eslint-disable-next-line max-len */\n  return DEFAULT_PRIORITY.indexOf(algo1.toLowerCase()) >= DEFAULT_PRIORITY.indexOf(algo2.toLowerCase())\n    ? algo1\n    : algo2\n}\n", "const CacheSemantics = require('http-cache-semantics')\nconst Negotiator = require('negotiator')\nconst ssri = require('ssri')\n\n// options passed to http-cache-semantics constructor\nconst policyOptions = {\n  shared: false,\n  ignoreCargoCult: true,\n}\n\n// a fake empty response, used when only testing the\n// request for storability\nconst emptyResponse = { status: 200, headers: {} }\n\n// returns a plain object representation of the Request\nconst requestObject = (request) => {\n  const _obj = {\n    method: request.method,\n    url: request.url,\n    headers: {},\n    compress: request.compress,\n  }\n\n  request.headers.forEach((value, key) => {\n    _obj.headers[key] = value\n  })\n\n  return _obj\n}\n\n// returns a plain object representation of the Response\nconst responseObject = (response) => {\n  const _obj = {\n    status: response.status,\n    headers: {},\n  }\n\n  response.headers.forEach((value, key) => {\n    _obj.headers[key] = value\n  })\n\n  return _obj\n}\n\nclass CachePolicy {\n  constructor ({ entry, request, response, options }) {\n    this.entry = entry\n    this.request = requestObject(request)\n    this.response = responseObject(response)\n    this.options = options\n    this.policy = new CacheSemantics(this.request, this.response, policyOptions)\n\n    if (this.entry) {\n      // if we have an entry, copy the timestamp to the _responseTime\n      // this is necessary because the CacheSemantics constructor forces\n      // the value to Date.now() which means a policy created from a\n      // cache entry is likely to always identify itself as stale\n      this.policy._responseTime = this.entry.metadata.time\n    }\n  }\n\n  // static method to quickly determine if a request alone is storable\n  static storable (request, options) {\n    // no cachePath means no caching\n    if (!options.cachePath) {\n      return false\n    }\n\n    // user explicitly asked not to cache\n    if (options.cache === 'no-store') {\n      return false\n    }\n\n    // we only cache GET and HEAD requests\n    if (!['GET', 'HEAD'].includes(request.method)) {\n      return false\n    }\n\n    // otherwise, let http-cache-semantics make the decision\n    // based on the request's headers\n    const policy = new CacheSemantics(requestObject(request), emptyResponse, policyOptions)\n    return policy.storable()\n  }\n\n  // returns true if the policy satisfies the request\n  satisfies (request) {\n    const _req = requestObject(request)\n    if (this.request.headers.host !== _req.headers.host) {\n      return false\n    }\n\n    if (this.request.compress !== _req.compress) {\n      return false\n    }\n\n    const negotiatorA = new Negotiator(this.request)\n    const negotiatorB = new Negotiator(_req)\n\n    if (JSON.stringify(negotiatorA.mediaTypes()) !== JSON.stringify(negotiatorB.mediaTypes())) {\n      return false\n    }\n\n    if (JSON.stringify(negotiatorA.languages()) !== JSON.stringify(negotiatorB.languages())) {\n      return false\n    }\n\n    if (JSON.stringify(negotiatorA.encodings()) !== JSON.stringify(negotiatorB.encodings())) {\n      return false\n    }\n\n    if (this.options.integrity) {\n      return ssri.parse(this.options.integrity).match(this.entry.integrity)\n    }\n\n    return true\n  }\n\n  // returns true if the request and response allow caching\n  storable () {\n    return this.policy.storable()\n  }\n\n  // NOTE: this is a hack to avoid parsing the cache-control\n  // header ourselves, it returns true if the response's\n  // cache-control contains must-revalidate\n  get mustRevalidate () {\n    return !!this.policy._rescc['must-revalidate']\n  }\n\n  // returns true if the cached response requires revalidation\n  // for the given request\n  needsRevalidation (request) {\n    const _req = requestObject(request)\n    // force method to GET because we only cache GETs\n    // but can serve a HEAD from a cached GET\n    _req.method = 'GET'\n    return !this.policy.satisfiesWithoutRevalidation(_req)\n  }\n\n  responseHeaders () {\n    return this.policy.responseHeaders()\n  }\n\n  // returns a new object containing the appropriate headers\n  // to send a revalidation request\n  revalidationHeaders (request) {\n    const _req = requestObject(request)\n    return this.policy.revalidationHeaders(_req)\n  }\n\n  // returns true if the request/response was revalidated\n  // successfully. returns false if a new response was received\n  revalidated (request, response) {\n    const _req = requestObject(request)\n    const _res = responseObject(response)\n    const policy = this.policy.revalidatedPolicy(_req, _res)\n    return !policy.modified\n  }\n}\n\nmodule.exports = CachePolicy\n", "class NotCachedError extends Error {\n  constructor (url) {\n    /* eslint-disable-next-line max-len */\n    super(`request to ${url} failed: cache mode is 'only-if-cached' but no cached response is available.`)\n    this.code = 'ENOTCACHED'\n  }\n}\n\nmodule.exports = {\n  NotCachedError,\n}\n", "'use strict'\nconst proc =\n  typeof process === 'object' && process\n    ? process\n    : {\n        stdout: null,\n        stderr: null,\n      }\nconst EE = require('events')\nconst Stream = require('stream')\nconst stringdecoder = require('string_decoder')\nconst SD = stringdecoder.StringDecoder\n\nconst EOF = Symbol('EOF')\nconst MAYBE_EMIT_END = Symbol('maybeEmitEnd')\nconst EMITTED_END = Symbol('emittedEnd')\nconst EMITTING_END = Symbol('emittingEnd')\nconst EMITTED_ERROR = Symbol('emittedError')\nconst CLOSED = Symbol('closed')\nconst READ = Symbol('read')\nconst FLUSH = Symbol('flush')\nconst FLUSHCHUNK = Symbol('flushChunk')\nconst ENCODING = Symbol('encoding')\nconst DECODER = Symbol('decoder')\nconst FLOWING = Symbol('flowing')\nconst PAUSED = Symbol('paused')\nconst RESUME = Symbol('resume')\nconst BUFFER = Symbol('buffer')\nconst PIPES = Symbol('pipes')\nconst BUFFERLENGTH = Symbol('bufferLength')\nconst BUFFERPUSH = Symbol('bufferPush')\nconst BUFFERSHIFT = Symbol('bufferShift')\nconst OBJECTMODE = Symbol('objectMode')\n// internal event when stream is destroyed\nconst DESTROYED = Symbol('destroyed')\n// internal event when stream has an error\nconst ERROR = Symbol('error')\nconst EMITDATA = Symbol('emitData')\nconst EMITEND = Symbol('emitEnd')\nconst EMITEND2 = Symbol('emitEnd2')\nconst ASYNC = Symbol('async')\nconst ABORT = Symbol('abort')\nconst ABORTED = Symbol('aborted')\nconst SIGNAL = Symbol('signal')\n\nconst defer = fn => Promise.resolve().then(fn)\n\n// TODO remove when Node v8 support drops\nconst doIter = global._MP_NO_ITERATOR_SYMBOLS_ !== '1'\nconst ASYNCITERATOR =\n  (doIter && Symbol.asyncIterator) || Symbol('asyncIterator not implemented')\nconst ITERATOR =\n  (doIter && Symbol.iterator) || Symbol('iterator not implemented')\n\n// events that mean 'the stream is over'\n// these are treated specially, and re-emitted\n// if they are listened for after emitting.\nconst isEndish = ev => ev === 'end' || ev === 'finish' || ev === 'prefinish'\n\nconst isArrayBuffer = b =>\n  b instanceof ArrayBuffer ||\n  (typeof b === 'object' &&\n    b.constructor &&\n    b.constructor.name === 'ArrayBuffer' &&\n    b.byteLength >= 0)\n\nconst isArrayBufferView = b => !Buffer.isBuffer(b) && ArrayBuffer.isView(b)\n\nclass Pipe {\n  constructor(src, dest, opts) {\n    this.src = src\n    this.dest = dest\n    this.opts = opts\n    this.ondrain = () => src[RESUME]()\n    dest.on('drain', this.ondrain)\n  }\n  unpipe() {\n    this.dest.removeListener('drain', this.ondrain)\n  }\n  // istanbul ignore next - only here for the prototype\n  proxyErrors() {}\n  end() {\n    this.unpipe()\n    if (this.opts.end) this.dest.end()\n  }\n}\n\nclass PipeProxyErrors extends Pipe {\n  unpipe() {\n    this.src.removeListener('error', this.proxyErrors)\n    super.unpipe()\n  }\n  constructor(src, dest, opts) {\n    super(src, dest, opts)\n    this.proxyErrors = er => dest.emit('error', er)\n    src.on('error', this.proxyErrors)\n  }\n}\n\nclass Minipass extends Stream {\n  constructor(options) {\n    super()\n    this[FLOWING] = false\n    // whether we're explicitly paused\n    this[PAUSED] = false\n    this[PIPES] = []\n    this[BUFFER] = []\n    this[OBJECTMODE] = (options && options.objectMode) || false\n    if (this[OBJECTMODE]) this[ENCODING] = null\n    else this[ENCODING] = (options && options.encoding) || null\n    if (this[ENCODING] === 'buffer') this[ENCODING] = null\n    this[ASYNC] = (options && !!options.async) || false\n    this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null\n    this[EOF] = false\n    this[EMITTED_END] = false\n    this[EMITTING_END] = false\n    this[CLOSED] = false\n    this[EMITTED_ERROR] = null\n    this.writable = true\n    this.readable = true\n    this[BUFFERLENGTH] = 0\n    this[DESTROYED] = false\n    if (options && options.debugExposeBuffer === true) {\n      Object.defineProperty(this, 'buffer', { get: () => this[BUFFER] })\n    }\n    if (options && options.debugExposePipes === true) {\n      Object.defineProperty(this, 'pipes', { get: () => this[PIPES] })\n    }\n    this[SIGNAL] = options && options.signal\n    this[ABORTED] = false\n    if (this[SIGNAL]) {\n      this[SIGNAL].addEventListener('abort', () => this[ABORT]())\n      if (this[SIGNAL].aborted) {\n        this[ABORT]()\n      }\n    }\n  }\n\n  get bufferLength() {\n    return this[BUFFERLENGTH]\n  }\n\n  get encoding() {\n    return this[ENCODING]\n  }\n  set encoding(enc) {\n    if (this[OBJECTMODE]) throw new Error('cannot set encoding in objectMode')\n\n    if (\n      this[ENCODING] &&\n      enc !== this[ENCODING] &&\n      ((this[DECODER] && this[DECODER].lastNeed) || this[BUFFERLENGTH])\n    )\n      throw new Error('cannot change encoding')\n\n    if (this[ENCODING] !== enc) {\n      this[DECODER] = enc ? new SD(enc) : null\n      if (this[BUFFER].length)\n        this[BUFFER] = this[BUFFER].map(chunk => this[DECODER].write(chunk))\n    }\n\n    this[ENCODING] = enc\n  }\n\n  setEncoding(enc) {\n    this.encoding = enc\n  }\n\n  get objectMode() {\n    return this[OBJECTMODE]\n  }\n  set objectMode(om) {\n    this[OBJECTMODE] = this[OBJECTMODE] || !!om\n  }\n\n  get ['async']() {\n    return this[ASYNC]\n  }\n  set ['async'](a) {\n    this[ASYNC] = this[ASYNC] || !!a\n  }\n\n  // drop everything and get out of the flow completely\n  [ABORT]() {\n    this[ABORTED] = true\n    this.emit('abort', this[SIGNAL].reason)\n    this.destroy(this[SIGNAL].reason)\n  }\n\n  get aborted() {\n    return this[ABORTED]\n  }\n  set aborted(_) {}\n\n  write(chunk, encoding, cb) {\n    if (this[ABORTED]) return false\n    if (this[EOF]) throw new Error('write after end')\n\n    if (this[DESTROYED]) {\n      this.emit(\n        'error',\n        Object.assign(\n          new Error('Cannot call write after a stream was destroyed'),\n          { code: 'ERR_STREAM_DESTROYED' }\n        )\n      )\n      return true\n    }\n\n    if (typeof encoding === 'function') (cb = encoding), (encoding = 'utf8')\n\n    if (!encoding) encoding = 'utf8'\n\n    const fn = this[ASYNC] ? defer : f => f()\n\n    // convert array buffers and typed array views into buffers\n    // at some point in the future, we may want to do the opposite!\n    // leave strings and buffers as-is\n    // anything else switches us into object mode\n    if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {\n      if (isArrayBufferView(chunk))\n        chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)\n      else if (isArrayBuffer(chunk)) chunk = Buffer.from(chunk)\n      else if (typeof chunk !== 'string')\n        // use the setter so we throw if we have encoding set\n        this.objectMode = true\n    }\n\n    // handle object mode up front, since it's simpler\n    // this yields better performance, fewer checks later.\n    if (this[OBJECTMODE]) {\n      /* istanbul ignore if - maybe impossible? */\n      if (this.flowing && this[BUFFERLENGTH] !== 0) this[FLUSH](true)\n\n      if (this.flowing) this.emit('data', chunk)\n      else this[BUFFERPUSH](chunk)\n\n      if (this[BUFFERLENGTH] !== 0) this.emit('readable')\n\n      if (cb) fn(cb)\n\n      return this.flowing\n    }\n\n    // at this point the chunk is a buffer or string\n    // don't buffer it up or send it to the decoder\n    if (!chunk.length) {\n      if (this[BUFFERLENGTH] !== 0) this.emit('readable')\n      if (cb) fn(cb)\n      return this.flowing\n    }\n\n    // fast-path writing strings of same encoding to a stream with\n    // an empty buffer, skipping the buffer/decoder dance\n    if (\n      typeof chunk === 'string' &&\n      // unless it is a string already ready for us to use\n      !(encoding === this[ENCODING] && !this[DECODER].lastNeed)\n    ) {\n      chunk = Buffer.from(chunk, encoding)\n    }\n\n    if (Buffer.isBuffer(chunk) && this[ENCODING])\n      chunk = this[DECODER].write(chunk)\n\n    // Note: flushing CAN potentially switch us into not-flowing mode\n    if (this.flowing && this[BUFFERLENGTH] !== 0) this[FLUSH](true)\n\n    if (this.flowing) this.emit('data', chunk)\n    else this[BUFFERPUSH](chunk)\n\n    if (this[BUFFERLENGTH] !== 0) this.emit('readable')\n\n    if (cb) fn(cb)\n\n    return this.flowing\n  }\n\n  read(n) {\n    if (this[DESTROYED]) return null\n\n    if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH]) {\n      this[MAYBE_EMIT_END]()\n      return null\n    }\n\n    if (this[OBJECTMODE]) n = null\n\n    if (this[BUFFER].length > 1 && !this[OBJECTMODE]) {\n      if (this.encoding) this[BUFFER] = [this[BUFFER].join('')]\n      else this[BUFFER] = [Buffer.concat(this[BUFFER], this[BUFFERLENGTH])]\n    }\n\n    const ret = this[READ](n || null, this[BUFFER][0])\n    this[MAYBE_EMIT_END]()\n    return ret\n  }\n\n  [READ](n, chunk) {\n    if (n === chunk.length || n === null) this[BUFFERSHIFT]()\n    else {\n      this[BUFFER][0] = chunk.slice(n)\n      chunk = chunk.slice(0, n)\n      this[BUFFERLENGTH] -= n\n    }\n\n    this.emit('data', chunk)\n\n    if (!this[BUFFER].length && !this[EOF]) this.emit('drain')\n\n    return chunk\n  }\n\n  end(chunk, encoding, cb) {\n    if (typeof chunk === 'function') (cb = chunk), (chunk = null)\n    if (typeof encoding === 'function') (cb = encoding), (encoding = 'utf8')\n    if (chunk) this.write(chunk, encoding)\n    if (cb) this.once('end', cb)\n    this[EOF] = true\n    this.writable = false\n\n    // if we haven't written anything, then go ahead and emit,\n    // even if we're not reading.\n    // we'll re-emit if a new 'end' listener is added anyway.\n    // This makes MP more suitable to write-only use cases.\n    if (this.flowing || !this[PAUSED]) this[MAYBE_EMIT_END]()\n    return this\n  }\n\n  // don't let the internal resume be overwritten\n  [RESUME]() {\n    if (this[DESTROYED]) return\n\n    this[PAUSED] = false\n    this[FLOWING] = true\n    this.emit('resume')\n    if (this[BUFFER].length) this[FLUSH]()\n    else if (this[EOF]) this[MAYBE_EMIT_END]()\n    else this.emit('drain')\n  }\n\n  resume() {\n    return this[RESUME]()\n  }\n\n  pause() {\n    this[FLOWING] = false\n    this[PAUSED] = true\n  }\n\n  get destroyed() {\n    return this[DESTROYED]\n  }\n\n  get flowing() {\n    return this[FLOWING]\n  }\n\n  get paused() {\n    return this[PAUSED]\n  }\n\n  [BUFFERPUSH](chunk) {\n    if (this[OBJECTMODE]) this[BUFFERLENGTH] += 1\n    else this[BUFFERLENGTH] += chunk.length\n    this[BUFFER].push(chunk)\n  }\n\n  [BUFFERSHIFT]() {\n    if (this[OBJECTMODE]) this[BUFFERLENGTH] -= 1\n    else this[BUFFERLENGTH] -= this[BUFFER][0].length\n    return this[BUFFER].shift()\n  }\n\n  [FLUSH](noDrain) {\n    do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]()) && this[BUFFER].length)\n\n    if (!noDrain && !this[BUFFER].length && !this[EOF]) this.emit('drain')\n  }\n\n  [FLUSHCHUNK](chunk) {\n    this.emit('data', chunk)\n    return this.flowing\n  }\n\n  pipe(dest, opts) {\n    if (this[DESTROYED]) return\n\n    const ended = this[EMITTED_END]\n    opts = opts || {}\n    if (dest === proc.stdout || dest === proc.stderr) opts.end = false\n    else opts.end = opts.end !== false\n    opts.proxyErrors = !!opts.proxyErrors\n\n    // piping an ended stream ends immediately\n    if (ended) {\n      if (opts.end) dest.end()\n    } else {\n      this[PIPES].push(\n        !opts.proxyErrors\n          ? new Pipe(this, dest, opts)\n          : new PipeProxyErrors(this, dest, opts)\n      )\n      if (this[ASYNC]) defer(() => this[RESUME]())\n      else this[RESUME]()\n    }\n\n    return dest\n  }\n\n  unpipe(dest) {\n    const p = this[PIPES].find(p => p.dest === dest)\n    if (p) {\n      this[PIPES].splice(this[PIPES].indexOf(p), 1)\n      p.unpipe()\n    }\n  }\n\n  addListener(ev, fn) {\n    return this.on(ev, fn)\n  }\n\n  on(ev, fn) {\n    const ret = super.on(ev, fn)\n    if (ev === 'data' && !this[PIPES].length && !this.flowing) this[RESUME]()\n    else if (ev === 'readable' && this[BUFFERLENGTH] !== 0)\n      super.emit('readable')\n    else if (isEndish(ev) && this[EMITTED_END]) {\n      super.emit(ev)\n      this.removeAllListeners(ev)\n    } else if (ev === 'error' && this[EMITTED_ERROR]) {\n      if (this[ASYNC]) defer(() => fn.call(this, this[EMITTED_ERROR]))\n      else fn.call(this, this[EMITTED_ERROR])\n    }\n    return ret\n  }\n\n  get emittedEnd() {\n    return this[EMITTED_END]\n  }\n\n  [MAYBE_EMIT_END]() {\n    if (\n      !this[EMITTING_END] &&\n      !this[EMITTED_END] &&\n      !this[DESTROYED] &&\n      this[BUFFER].length === 0 &&\n      this[EOF]\n    ) {\n      this[EMITTING_END] = true\n      this.emit('end')\n      this.emit('prefinish')\n      this.emit('finish')\n      if (this[CLOSED]) this.emit('close')\n      this[EMITTING_END] = false\n    }\n  }\n\n  emit(ev, data, ...extra) {\n    // error and close are only events allowed after calling destroy()\n    if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED])\n      return\n    else if (ev === 'data') {\n      return !this[OBJECTMODE] && !data\n        ? false\n        : this[ASYNC]\n        ? defer(() => this[EMITDATA](data))\n        : this[EMITDATA](data)\n    } else if (ev === 'end') {\n      return this[EMITEND]()\n    } else if (ev === 'close') {\n      this[CLOSED] = true\n      // don't emit close before 'end' and 'finish'\n      if (!this[EMITTED_END] && !this[DESTROYED]) return\n      const ret = super.emit('close')\n      this.removeAllListeners('close')\n      return ret\n    } else if (ev === 'error') {\n      this[EMITTED_ERROR] = data\n      super.emit(ERROR, data)\n      const ret =\n        !this[SIGNAL] || this.listeners('error').length\n          ? super.emit('error', data)\n          : false\n      this[MAYBE_EMIT_END]()\n      return ret\n    } else if (ev === 'resume') {\n      const ret = super.emit('resume')\n      this[MAYBE_EMIT_END]()\n      return ret\n    } else if (ev === 'finish' || ev === 'prefinish') {\n      const ret = super.emit(ev)\n      this.removeAllListeners(ev)\n      return ret\n    }\n\n    // Some other unknown event\n    const ret = super.emit(ev, data, ...extra)\n    this[MAYBE_EMIT_END]()\n    return ret\n  }\n\n  [EMITDATA](data) {\n    for (const p of this[PIPES]) {\n      if (p.dest.write(data) === false) this.pause()\n    }\n    const ret = super.emit('data', data)\n    this[MAYBE_EMIT_END]()\n    return ret\n  }\n\n  [EMITEND]() {\n    if (this[EMITTED_END]) return\n\n    this[EMITTED_END] = true\n    this.readable = false\n    if (this[ASYNC]) defer(() => this[EMITEND2]())\n    else this[EMITEND2]()\n  }\n\n  [EMITEND2]() {\n    if (this[DECODER]) {\n      const data = this[DECODER].end()\n      if (data) {\n        for (const p of this[PIPES]) {\n          p.dest.write(data)\n        }\n        super.emit('data', data)\n      }\n    }\n\n    for (const p of this[PIPES]) {\n      p.end()\n    }\n    const ret = super.emit('end')\n    this.removeAllListeners('end')\n    return ret\n  }\n\n  // const all = await stream.collect()\n  collect() {\n    const buf = []\n    if (!this[OBJECTMODE]) buf.dataLength = 0\n    // set the promise first, in case an error is raised\n    // by triggering the flow here.\n    const p = this.promise()\n    this.on('data', c => {\n      buf.push(c)\n      if (!this[OBJECTMODE]) buf.dataLength += c.length\n    })\n    return p.then(() => buf)\n  }\n\n  // const data = await stream.concat()\n  concat() {\n    return this[OBJECTMODE]\n      ? Promise.reject(new Error('cannot concat in objectMode'))\n      : this.collect().then(buf =>\n          this[OBJECTMODE]\n            ? Promise.reject(new Error('cannot concat in objectMode'))\n            : this[ENCODING]\n            ? buf.join('')\n            : Buffer.concat(buf, buf.dataLength)\n        )\n  }\n\n  // stream.promise().then(() => done, er => emitted error)\n  promise() {\n    return new Promise((resolve, reject) => {\n      this.on(DESTROYED, () => reject(new Error('stream destroyed')))\n      this.on('error', er => reject(er))\n      this.on('end', () => resolve())\n    })\n  }\n\n  // for await (let chunk of stream)\n  [ASYNCITERATOR]() {\n    let stopped = false\n    const stop = () => {\n      this.pause()\n      stopped = true\n      return Promise.resolve({ done: true })\n    }\n    const next = () => {\n      if (stopped) return stop()\n      const res = this.read()\n      if (res !== null) return Promise.resolve({ done: false, value: res })\n\n      if (this[EOF]) return stop()\n\n      let resolve = null\n      let reject = null\n      const onerr = er => {\n        this.removeListener('data', ondata)\n        this.removeListener('end', onend)\n        this.removeListener(DESTROYED, ondestroy)\n        stop()\n        reject(er)\n      }\n      const ondata = value => {\n        this.removeListener('error', onerr)\n        this.removeListener('end', onend)\n        this.removeListener(DESTROYED, ondestroy)\n        this.pause()\n        resolve({ value: value, done: !!this[EOF] })\n      }\n      const onend = () => {\n        this.removeListener('error', onerr)\n        this.removeListener('data', ondata)\n        this.removeListener(DESTROYED, ondestroy)\n        stop()\n        resolve({ done: true })\n      }\n      const ondestroy = () => onerr(new Error('stream destroyed'))\n      return new Promise((res, rej) => {\n        reject = rej\n        resolve = res\n        this.once(DESTROYED, ondestroy)\n        this.once('error', onerr)\n        this.once('end', onend)\n        this.once('data', ondata)\n      })\n    }\n\n    return {\n      next,\n      throw: stop,\n      return: stop,\n      [ASYNCITERATOR]() {\n        return this\n      },\n    }\n  }\n\n  // for (let chunk of stream)\n  [ITERATOR]() {\n    let stopped = false\n    const stop = () => {\n      this.pause()\n      this.removeListener(ERROR, stop)\n      this.removeListener(DESTROYED, stop)\n      this.removeListener('end', stop)\n      stopped = true\n      return { done: true }\n    }\n\n    const next = () => {\n      if (stopped) return stop()\n      const value = this.read()\n      return value === null ? stop() : { value }\n    }\n    this.once('end', stop)\n    this.once(ERROR, stop)\n    this.once(DESTROYED, stop)\n\n    return {\n      next,\n      throw: stop,\n      return: stop,\n      [ITERATOR]() {\n        return this\n      },\n    }\n  }\n\n  destroy(er) {\n    if (this[DESTROYED]) {\n      if (er) this.emit('error', er)\n      else this.emit(DESTROYED)\n      return this\n    }\n\n    this[DESTROYED] = true\n\n    // throw away all buffered data, it's never coming out\n    this[BUFFER].length = 0\n    this[BUFFERLENGTH] = 0\n\n    if (typeof this.close === 'function' && !this[CLOSED]) this.close()\n\n    if (er) this.emit('error', er)\n    // if no error to emit, still reject pending promises\n    else this.emit(DESTROYED)\n\n    return this\n  }\n\n  static isStream(s) {\n    return (\n      !!s &&\n      (s instanceof Minipass ||\n        s instanceof Stream ||\n        (s instanceof EE &&\n          // readable\n          (typeof s.pipe === 'function' ||\n            // writable\n            (typeof s.write === 'function' && typeof s.end === 'function'))))\n    )\n  }\n}\n\nexports.Minipass = Minipass\n", "'use strict'\nconst proc = typeof process === 'object' && process ? process : {\n  stdout: null,\n  stderr: null,\n}\nconst EE = require('events')\nconst Stream = require('stream')\nconst SD = require('string_decoder').StringDecoder\n\nconst EOF = Symbol('EOF')\nconst MAYBE_EMIT_END = Symbol('maybeEmitEnd')\nconst EMITTED_END = Symbol('emittedEnd')\nconst EMITTING_END = Symbol('emittingEnd')\nconst EMITTED_ERROR = Symbol('emittedError')\nconst CLOSED = Symbol('closed')\nconst READ = Symbol('read')\nconst FLUSH = Symbol('flush')\nconst FLUSHCHUNK = Symbol('flushChunk')\nconst ENCODING = Symbol('encoding')\nconst DECODER = Symbol('decoder')\nconst FLOWING = Symbol('flowing')\nconst PAUSED = Symbol('paused')\nconst RESUME = Symbol('resume')\nconst BUFFERLENGTH = Symbol('bufferLength')\nconst BUFFERPUSH = Symbol('bufferPush')\nconst BUFFERSHIFT = Symbol('bufferShift')\nconst OBJECTMODE = Symbol('objectMode')\nconst DESTROYED = Symbol('destroyed')\nconst EMITDATA = Symbol('emitData')\nconst EMITEND = Symbol('emitEnd')\nconst EMITEND2 = Symbol('emitEnd2')\nconst ASYNC = Symbol('async')\n\nconst defer = fn => Promise.resolve().then(fn)\n\n// TODO remove when Node v8 support drops\nconst doIter = global._MP_NO_ITERATOR_SYMBOLS_  !== '1'\nconst ASYNCITERATOR = doIter && Symbol.asyncIterator\n  || Symbol('asyncIterator not implemented')\nconst ITERATOR = doIter && Symbol.iterator\n  || Symbol('iterator not implemented')\n\n// events that mean 'the stream is over'\n// these are treated specially, and re-emitted\n// if they are listened for after emitting.\nconst isEndish = ev =>\n  ev === 'end' ||\n  ev === 'finish' ||\n  ev === 'prefinish'\n\nconst isArrayBuffer = b => b instanceof ArrayBuffer ||\n  typeof b === 'object' &&\n  b.constructor &&\n  b.constructor.name === 'ArrayBuffer' &&\n  b.byteLength >= 0\n\nconst isArrayBufferView = b => !Buffer.isBuffer(b) && ArrayBuffer.isView(b)\n\nclass Pipe {\n  constructor (src, dest, opts) {\n    this.src = src\n    this.dest = dest\n    this.opts = opts\n    this.ondrain = () => src[RESUME]()\n    dest.on('drain', this.ondrain)\n  }\n  unpipe () {\n    this.dest.removeListener('drain', this.ondrain)\n  }\n  // istanbul ignore next - only here for the prototype\n  proxyErrors () {}\n  end () {\n    this.unpipe()\n    if (this.opts.end)\n      this.dest.end()\n  }\n}\n\nclass PipeProxyErrors extends Pipe {\n  unpipe () {\n    this.src.removeListener('error', this.proxyErrors)\n    super.unpipe()\n  }\n  constructor (src, dest, opts) {\n    super(src, dest, opts)\n    this.proxyErrors = er => dest.emit('error', er)\n    src.on('error', this.proxyErrors)\n  }\n}\n\nmodule.exports = class Minipass extends Stream {\n  constructor (options) {\n    super()\n    this[FLOWING] = false\n    // whether we're explicitly paused\n    this[PAUSED] = false\n    this.pipes = []\n    this.buffer = []\n    this[OBJECTMODE] = options && options.objectMode || false\n    if (this[OBJECTMODE])\n      this[ENCODING] = null\n    else\n      this[ENCODING] = options && options.encoding || null\n    if (this[ENCODING] === 'buffer')\n      this[ENCODING] = null\n    this[ASYNC] = options && !!options.async || false\n    this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null\n    this[EOF] = false\n    this[EMITTED_END] = false\n    this[EMITTING_END] = false\n    this[CLOSED] = false\n    this[EMITTED_ERROR] = null\n    this.writable = true\n    this.readable = true\n    this[BUFFERLENGTH] = 0\n    this[DESTROYED] = false\n  }\n\n  get bufferLength () { return this[BUFFERLENGTH] }\n\n  get encoding () { return this[ENCODING] }\n  set encoding (enc) {\n    if (this[OBJECTMODE])\n      throw new Error('cannot set encoding in objectMode')\n\n    if (this[ENCODING] && enc !== this[ENCODING] &&\n        (this[DECODER] && this[DECODER].lastNeed || this[BUFFERLENGTH]))\n      throw new Error('cannot change encoding')\n\n    if (this[ENCODING] !== enc) {\n      this[DECODER] = enc ? new SD(enc) : null\n      if (this.buffer.length)\n        this.buffer = this.buffer.map(chunk => this[DECODER].write(chunk))\n    }\n\n    this[ENCODING] = enc\n  }\n\n  setEncoding (enc) {\n    this.encoding = enc\n  }\n\n  get objectMode () { return this[OBJECTMODE] }\n  set objectMode (om) { this[OBJECTMODE] = this[OBJECTMODE] || !!om }\n\n  get ['async'] () { return this[ASYNC] }\n  set ['async'] (a) { this[ASYNC] = this[ASYNC] || !!a }\n\n  write (chunk, encoding, cb) {\n    if (this[EOF])\n      throw new Error('write after end')\n\n    if (this[DESTROYED]) {\n      this.emit('error', Object.assign(\n        new Error('Cannot call write after a stream was destroyed'),\n        { code: 'ERR_STREAM_DESTROYED' }\n      ))\n      return true\n    }\n\n    if (typeof encoding === 'function')\n      cb = encoding, encoding = 'utf8'\n\n    if (!encoding)\n      encoding = 'utf8'\n\n    const fn = this[ASYNC] ? defer : f => f()\n\n    // convert array buffers and typed array views into buffers\n    // at some point in the future, we may want to do the opposite!\n    // leave strings and buffers as-is\n    // anything else switches us into object mode\n    if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {\n      if (isArrayBufferView(chunk))\n        chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)\n      else if (isArrayBuffer(chunk))\n        chunk = Buffer.from(chunk)\n      else if (typeof chunk !== 'string')\n        // use the setter so we throw if we have encoding set\n        this.objectMode = true\n    }\n\n    // handle object mode up front, since it's simpler\n    // this yields better performance, fewer checks later.\n    if (this[OBJECTMODE]) {\n      /* istanbul ignore if - maybe impossible? */\n      if (this.flowing && this[BUFFERLENGTH] !== 0)\n        this[FLUSH](true)\n\n      if (this.flowing)\n        this.emit('data', chunk)\n      else\n        this[BUFFERPUSH](chunk)\n\n      if (this[BUFFERLENGTH] !== 0)\n        this.emit('readable')\n\n      if (cb)\n        fn(cb)\n\n      return this.flowing\n    }\n\n    // at this point the chunk is a buffer or string\n    // don't buffer it up or send it to the decoder\n    if (!chunk.length) {\n      if (this[BUFFERLENGTH] !== 0)\n        this.emit('readable')\n      if (cb)\n        fn(cb)\n      return this.flowing\n    }\n\n    // fast-path writing strings of same encoding to a stream with\n    // an empty buffer, skipping the buffer/decoder dance\n    if (typeof chunk === 'string' &&\n        // unless it is a string already ready for us to use\n        !(encoding === this[ENCODING] && !this[DECODER].lastNeed)) {\n      chunk = Buffer.from(chunk, encoding)\n    }\n\n    if (Buffer.isBuffer(chunk) && this[ENCODING])\n      chunk = this[DECODER].write(chunk)\n\n    // Note: flushing CAN potentially switch us into not-flowing mode\n    if (this.flowing && this[BUFFERLENGTH] !== 0)\n      this[FLUSH](true)\n\n    if (this.flowing)\n      this.emit('data', chunk)\n    else\n      this[BUFFERPUSH](chunk)\n\n    if (this[BUFFERLENGTH] !== 0)\n      this.emit('readable')\n\n    if (cb)\n      fn(cb)\n\n    return this.flowing\n  }\n\n  read (n) {\n    if (this[DESTROYED])\n      return null\n\n    if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH]) {\n      this[MAYBE_EMIT_END]()\n      return null\n    }\n\n    if (this[OBJECTMODE])\n      n = null\n\n    if (this.buffer.length > 1 && !this[OBJECTMODE]) {\n      if (this.encoding)\n        this.buffer = [this.buffer.join('')]\n      else\n        this.buffer = [Buffer.concat(this.buffer, this[BUFFERLENGTH])]\n    }\n\n    const ret = this[READ](n || null, this.buffer[0])\n    this[MAYBE_EMIT_END]()\n    return ret\n  }\n\n  [READ] (n, chunk) {\n    if (n === chunk.length || n === null)\n      this[BUFFERSHIFT]()\n    else {\n      this.buffer[0] = chunk.slice(n)\n      chunk = chunk.slice(0, n)\n      this[BUFFERLENGTH] -= n\n    }\n\n    this.emit('data', chunk)\n\n    if (!this.buffer.length && !this[EOF])\n      this.emit('drain')\n\n    return chunk\n  }\n\n  end (chunk, encoding, cb) {\n    if (typeof chunk === 'function')\n      cb = chunk, chunk = null\n    if (typeof encoding === 'function')\n      cb = encoding, encoding = 'utf8'\n    if (chunk)\n      this.write(chunk, encoding)\n    if (cb)\n      this.once('end', cb)\n    this[EOF] = true\n    this.writable = false\n\n    // if we haven't written anything, then go ahead and emit,\n    // even if we're not reading.\n    // we'll re-emit if a new 'end' listener is added anyway.\n    // This makes MP more suitable to write-only use cases.\n    if (this.flowing || !this[PAUSED])\n      this[MAYBE_EMIT_END]()\n    return this\n  }\n\n  // don't let the internal resume be overwritten\n  [RESUME] () {\n    if (this[DESTROYED])\n      return\n\n    this[PAUSED] = false\n    this[FLOWING] = true\n    this.emit('resume')\n    if (this.buffer.length)\n      this[FLUSH]()\n    else if (this[EOF])\n      this[MAYBE_EMIT_END]()\n    else\n      this.emit('drain')\n  }\n\n  resume () {\n    return this[RESUME]()\n  }\n\n  pause () {\n    this[FLOWING] = false\n    this[PAUSED] = true\n  }\n\n  get destroyed () {\n    return this[DESTROYED]\n  }\n\n  get flowing () {\n    return this[FLOWING]\n  }\n\n  get paused () {\n    return this[PAUSED]\n  }\n\n  [BUFFERPUSH] (chunk) {\n    if (this[OBJECTMODE])\n      this[BUFFERLENGTH] += 1\n    else\n      this[BUFFERLENGTH] += chunk.length\n    this.buffer.push(chunk)\n  }\n\n  [BUFFERSHIFT] () {\n    if (this.buffer.length) {\n      if (this[OBJECTMODE])\n        this[BUFFERLENGTH] -= 1\n      else\n        this[BUFFERLENGTH] -= this.buffer[0].length\n    }\n    return this.buffer.shift()\n  }\n\n  [FLUSH] (noDrain) {\n    do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]()))\n\n    if (!noDrain && !this.buffer.length && !this[EOF])\n      this.emit('drain')\n  }\n\n  [FLUSHCHUNK] (chunk) {\n    return chunk ? (this.emit('data', chunk), this.flowing) : false\n  }\n\n  pipe (dest, opts) {\n    if (this[DESTROYED])\n      return\n\n    const ended = this[EMITTED_END]\n    opts = opts || {}\n    if (dest === proc.stdout || dest === proc.stderr)\n      opts.end = false\n    else\n      opts.end = opts.end !== false\n    opts.proxyErrors = !!opts.proxyErrors\n\n    // piping an ended stream ends immediately\n    if (ended) {\n      if (opts.end)\n        dest.end()\n    } else {\n      this.pipes.push(!opts.proxyErrors ? new Pipe(this, dest, opts)\n        : new PipeProxyErrors(this, dest, opts))\n      if (this[ASYNC])\n        defer(() => this[RESUME]())\n      else\n        this[RESUME]()\n    }\n\n    return dest\n  }\n\n  unpipe (dest) {\n    const p = this.pipes.find(p => p.dest === dest)\n    if (p) {\n      this.pipes.splice(this.pipes.indexOf(p), 1)\n      p.unpipe()\n    }\n  }\n\n  addListener (ev, fn) {\n    return this.on(ev, fn)\n  }\n\n  on (ev, fn) {\n    const ret = super.on(ev, fn)\n    if (ev === 'data' && !this.pipes.length && !this.flowing)\n      this[RESUME]()\n    else if (ev === 'readable' && this[BUFFERLENGTH] !== 0)\n      super.emit('readable')\n    else if (isEndish(ev) && this[EMITTED_END]) {\n      super.emit(ev)\n      this.removeAllListeners(ev)\n    } else if (ev === 'error' && this[EMITTED_ERROR]) {\n      if (this[ASYNC])\n        defer(() => fn.call(this, this[EMITTED_ERROR]))\n      else\n        fn.call(this, this[EMITTED_ERROR])\n    }\n    return ret\n  }\n\n  get emittedEnd () {\n    return this[EMITTED_END]\n  }\n\n  [MAYBE_EMIT_END] () {\n    if (!this[EMITTING_END] &&\n        !this[EMITTED_END] &&\n        !this[DESTROYED] &&\n        this.buffer.length === 0 &&\n        this[EOF]) {\n      this[EMITTING_END] = true\n      this.emit('end')\n      this.emit('prefinish')\n      this.emit('finish')\n      if (this[CLOSED])\n        this.emit('close')\n      this[EMITTING_END] = false\n    }\n  }\n\n  emit (ev, data, ...extra) {\n    // error and close are only events allowed after calling destroy()\n    if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED])\n      return\n    else if (ev === 'data') {\n      return !data ? false\n        : this[ASYNC] ? defer(() => this[EMITDATA](data))\n        : this[EMITDATA](data)\n    } else if (ev === 'end') {\n      return this[EMITEND]()\n    } else if (ev === 'close') {\n      this[CLOSED] = true\n      // don't emit close before 'end' and 'finish'\n      if (!this[EMITTED_END] && !this[DESTROYED])\n        return\n      const ret = super.emit('close')\n      this.removeAllListeners('close')\n      return ret\n    } else if (ev === 'error') {\n      this[EMITTED_ERROR] = data\n      const ret = super.emit('error', data)\n      this[MAYBE_EMIT_END]()\n      return ret\n    } else if (ev === 'resume') {\n      const ret = super.emit('resume')\n      this[MAYBE_EMIT_END]()\n      return ret\n    } else if (ev === 'finish' || ev === 'prefinish') {\n      const ret = super.emit(ev)\n      this.removeAllListeners(ev)\n      return ret\n    }\n\n    // Some other unknown event\n    const ret = super.emit(ev, data, ...extra)\n    this[MAYBE_EMIT_END]()\n    return ret\n  }\n\n  [EMITDATA] (data) {\n    for (const p of this.pipes) {\n      if (p.dest.write(data) === false)\n        this.pause()\n    }\n    const ret = super.emit('data', data)\n    this[MAYBE_EMIT_END]()\n    return ret\n  }\n\n  [EMITEND] () {\n    if (this[EMITTED_END])\n      return\n\n    this[EMITTED_END] = true\n    this.readable = false\n    if (this[ASYNC])\n      defer(() => this[EMITEND2]())\n    else\n      this[EMITEND2]()\n  }\n\n  [EMITEND2] () {\n    if (this[DECODER]) {\n      const data = this[DECODER].end()\n      if (data) {\n        for (const p of this.pipes) {\n          p.dest.write(data)\n        }\n        super.emit('data', data)\n      }\n    }\n\n    for (const p of this.pipes) {\n      p.end()\n    }\n    const ret = super.emit('end')\n    this.removeAllListeners('end')\n    return ret\n  }\n\n  // const all = await stream.collect()\n  collect () {\n    const buf = []\n    if (!this[OBJECTMODE])\n      buf.dataLength = 0\n    // set the promise first, in case an error is raised\n    // by triggering the flow here.\n    const p = this.promise()\n    this.on('data', c => {\n      buf.push(c)\n      if (!this[OBJECTMODE])\n        buf.dataLength += c.length\n    })\n    return p.then(() => buf)\n  }\n\n  // const data = await stream.concat()\n  concat () {\n    return this[OBJECTMODE]\n      ? Promise.reject(new Error('cannot concat in objectMode'))\n      : this.collect().then(buf =>\n          this[OBJECTMODE]\n            ? Promise.reject(new Error('cannot concat in objectMode'))\n            : this[ENCODING] ? buf.join('') : Buffer.concat(buf, buf.dataLength))\n  }\n\n  // stream.promise().then(() => done, er => emitted error)\n  promise () {\n    return new Promise((resolve, reject) => {\n      this.on(DESTROYED, () => reject(new Error('stream destroyed')))\n      this.on('error', er => reject(er))\n      this.on('end', () => resolve())\n    })\n  }\n\n  // for await (let chunk of stream)\n  [ASYNCITERATOR] () {\n    const next = () => {\n      const res = this.read()\n      if (res !== null)\n        return Promise.resolve({ done: false, value: res })\n\n      if (this[EOF])\n        return Promise.resolve({ done: true })\n\n      let resolve = null\n      let reject = null\n      const onerr = er => {\n        this.removeListener('data', ondata)\n        this.removeListener('end', onend)\n        reject(er)\n      }\n      const ondata = value => {\n        this.removeListener('error', onerr)\n        this.removeListener('end', onend)\n        this.pause()\n        resolve({ value: value, done: !!this[EOF] })\n      }\n      const onend = () => {\n        this.removeListener('error', onerr)\n        this.removeListener('data', ondata)\n        resolve({ done: true })\n      }\n      const ondestroy = () => onerr(new Error('stream destroyed'))\n      return new Promise((res, rej) => {\n        reject = rej\n        resolve = res\n        this.once(DESTROYED, ondestroy)\n        this.once('error', onerr)\n        this.once('end', onend)\n        this.once('data', ondata)\n      })\n    }\n\n    return { next }\n  }\n\n  // for (let chunk of stream)\n  [ITERATOR] () {\n    const next = () => {\n      const value = this.read()\n      const done = value === null\n      return { value, done }\n    }\n    return { next }\n  }\n\n  destroy (er) {\n    if (this[DESTROYED]) {\n      if (er)\n        this.emit('error', er)\n      else\n        this.emit(DESTROYED)\n      return this\n    }\n\n    this[DESTROYED] = true\n\n    // throw away all buffered data, it's never coming out\n    this.buffer.length = 0\n    this[BUFFERLENGTH] = 0\n\n    if (typeof this.close === 'function' && !this[CLOSED])\n      this.close()\n\n    if (er)\n      this.emit('error', er)\n    else // if no error to emit, still reject pending promises\n      this.emit(DESTROYED)\n\n    return this\n  }\n\n  static isStream (s) {\n    return !!s && (s instanceof Minipass || s instanceof Stream ||\n      s instanceof EE && (\n        typeof s.pipe === 'function' || // readable\n        (typeof s.write === 'function' && typeof s.end === 'function') // writable\n      ))\n  }\n}\n", "const Minipass = require('minipass')\nconst _flush = Symbol('_flush')\nconst _flushed = Symbol('_flushed')\nconst _flushing = Symbol('_flushing')\nclass Flush extends Minipass {\n  constructor (opt = {}) {\n    if (typeof opt === 'function')\n      opt = { flush: opt }\n\n    super(opt)\n\n    // or extend this class and provide a 'flush' method in your subclass\n    if (typeof opt.flush !== 'function' && typeof this.flush !== 'function')\n      throw new TypeError('must provide flush function in options')\n\n    this[_flush] = opt.flush || this.flush\n  }\n\n  emit (ev, ...data) {\n    if ((ev !== 'end' && ev !== 'finish') || this[_flushed])\n      return super.emit(ev, ...data)\n\n    if (this[_flushing])\n      return\n\n    this[_flushing] = true\n\n    const afterFlush = er => {\n      this[_flushed] = true\n      er ? super.emit('error', er) : super.emit('end')\n    }\n\n    const ret = this[_flush](afterFlush)\n    if (ret && ret.then)\n      ret.then(() => afterFlush(), er => afterFlush(er))\n  }\n}\n\nmodule.exports = Flush\n", "'use strict'\nconst proc = typeof process === 'object' && process ? process : {\n  stdout: null,\n  stderr: null,\n}\nconst EE = require('events')\nconst Stream = require('stream')\nconst SD = require('string_decoder').StringDecoder\n\nconst EOF = Symbol('EOF')\nconst MAYBE_EMIT_END = Symbol('maybeEmitEnd')\nconst EMITTED_END = Symbol('emittedEnd')\nconst EMITTING_END = Symbol('emittingEnd')\nconst EMITTED_ERROR = Symbol('emittedError')\nconst CLOSED = Symbol('closed')\nconst READ = Symbol('read')\nconst FLUSH = Symbol('flush')\nconst FLUSHCHUNK = Symbol('flushChunk')\nconst ENCODING = Symbol('encoding')\nconst DECODER = Symbol('decoder')\nconst FLOWING = Symbol('flowing')\nconst PAUSED = Symbol('paused')\nconst RESUME = Symbol('resume')\nconst BUFFERLENGTH = Symbol('bufferLength')\nconst BUFFERPUSH = Symbol('bufferPush')\nconst BUFFERSHIFT = Symbol('bufferShift')\nconst OBJECTMODE = Symbol('objectMode')\nconst DESTROYED = Symbol('destroyed')\nconst EMITDATA = Symbol('emitData')\nconst EMITEND = Symbol('emitEnd')\nconst EMITEND2 = Symbol('emitEnd2')\nconst ASYNC = Symbol('async')\n\nconst defer = fn => Promise.resolve().then(fn)\n\n// TODO remove when Node v8 support drops\nconst doIter = global._MP_NO_ITERATOR_SYMBOLS_  !== '1'\nconst ASYNCITERATOR = doIter && Symbol.asyncIterator\n  || Symbol('asyncIterator not implemented')\nconst ITERATOR = doIter && Symbol.iterator\n  || Symbol('iterator not implemented')\n\n// events that mean 'the stream is over'\n// these are treated specially, and re-emitted\n// if they are listened for after emitting.\nconst isEndish = ev =>\n  ev === 'end' ||\n  ev === 'finish' ||\n  ev === 'prefinish'\n\nconst isArrayBuffer = b => b instanceof ArrayBuffer ||\n  typeof b === 'object' &&\n  b.constructor &&\n  b.constructor.name === 'ArrayBuffer' &&\n  b.byteLength >= 0\n\nconst isArrayBufferView = b => !Buffer.isBuffer(b) && ArrayBuffer.isView(b)\n\nclass Pipe {\n  constructor (src, dest, opts) {\n    this.src = src\n    this.dest = dest\n    this.opts = opts\n    this.ondrain = () => src[RESUME]()\n    dest.on('drain', this.ondrain)\n  }\n  unpipe () {\n    this.dest.removeListener('drain', this.ondrain)\n  }\n  // istanbul ignore next - only here for the prototype\n  proxyErrors () {}\n  end () {\n    this.unpipe()\n    if (this.opts.end)\n      this.dest.end()\n  }\n}\n\nclass PipeProxyErrors extends Pipe {\n  unpipe () {\n    this.src.removeListener('error', this.proxyErrors)\n    super.unpipe()\n  }\n  constructor (src, dest, opts) {\n    super(src, dest, opts)\n    this.proxyErrors = er => dest.emit('error', er)\n    src.on('error', this.proxyErrors)\n  }\n}\n\nmodule.exports = class Minipass extends Stream {\n  constructor (options) {\n    super()\n    this[FLOWING] = false\n    // whether we're explicitly paused\n    this[PAUSED] = false\n    this.pipes = []\n    this.buffer = []\n    this[OBJECTMODE] = options && options.objectMode || false\n    if (this[OBJECTMODE])\n      this[ENCODING] = null\n    else\n      this[ENCODING] = options && options.encoding || null\n    if (this[ENCODING] === 'buffer')\n      this[ENCODING] = null\n    this[ASYNC] = options && !!options.async || false\n    this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null\n    this[EOF] = false\n    this[EMITTED_END] = false\n    this[EMITTING_END] = false\n    this[CLOSED] = false\n    this[EMITTED_ERROR] = null\n    this.writable = true\n    this.readable = true\n    this[BUFFERLENGTH] = 0\n    this[DESTROYED] = false\n  }\n\n  get bufferLength () { return this[BUFFERLENGTH] }\n\n  get encoding () { return this[ENCODING] }\n  set encoding (enc) {\n    if (this[OBJECTMODE])\n      throw new Error('cannot set encoding in objectMode')\n\n    if (this[ENCODING] && enc !== this[ENCODING] &&\n        (this[DECODER] && this[DECODER].lastNeed || this[BUFFERLENGTH]))\n      throw new Error('cannot change encoding')\n\n    if (this[ENCODING] !== enc) {\n      this[DECODER] = enc ? new SD(enc) : null\n      if (this.buffer.length)\n        this.buffer = this.buffer.map(chunk => this[DECODER].write(chunk))\n    }\n\n    this[ENCODING] = enc\n  }\n\n  setEncoding (enc) {\n    this.encoding = enc\n  }\n\n  get objectMode () { return this[OBJECTMODE] }\n  set objectMode (om) { this[OBJECTMODE] = this[OBJECTMODE] || !!om }\n\n  get ['async'] () { return this[ASYNC] }\n  set ['async'] (a) { this[ASYNC] = this[ASYNC] || !!a }\n\n  write (chunk, encoding, cb) {\n    if (this[EOF])\n      throw new Error('write after end')\n\n    if (this[DESTROYED]) {\n      this.emit('error', Object.assign(\n        new Error('Cannot call write after a stream was destroyed'),\n        { code: 'ERR_STREAM_DESTROYED' }\n      ))\n      return true\n    }\n\n    if (typeof encoding === 'function')\n      cb = encoding, encoding = 'utf8'\n\n    if (!encoding)\n      encoding = 'utf8'\n\n    const fn = this[ASYNC] ? defer : f => f()\n\n    // convert array buffers and typed array views into buffers\n    // at some point in the future, we may want to do the opposite!\n    // leave strings and buffers as-is\n    // anything else switches us into object mode\n    if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {\n      if (isArrayBufferView(chunk))\n        chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)\n      else if (isArrayBuffer(chunk))\n        chunk = Buffer.from(chunk)\n      else if (typeof chunk !== 'string')\n        // use the setter so we throw if we have encoding set\n        this.objectMode = true\n    }\n\n    // handle object mode up front, since it's simpler\n    // this yields better performance, fewer checks later.\n    if (this[OBJECTMODE]) {\n      /* istanbul ignore if - maybe impossible? */\n      if (this.flowing && this[BUFFERLENGTH] !== 0)\n        this[FLUSH](true)\n\n      if (this.flowing)\n        this.emit('data', chunk)\n      else\n        this[BUFFERPUSH](chunk)\n\n      if (this[BUFFERLENGTH] !== 0)\n        this.emit('readable')\n\n      if (cb)\n        fn(cb)\n\n      return this.flowing\n    }\n\n    // at this point the chunk is a buffer or string\n    // don't buffer it up or send it to the decoder\n    if (!chunk.length) {\n      if (this[BUFFERLENGTH] !== 0)\n        this.emit('readable')\n      if (cb)\n        fn(cb)\n      return this.flowing\n    }\n\n    // fast-path writing strings of same encoding to a stream with\n    // an empty buffer, skipping the buffer/decoder dance\n    if (typeof chunk === 'string' &&\n        // unless it is a string already ready for us to use\n        !(encoding === this[ENCODING] && !this[DECODER].lastNeed)) {\n      chunk = Buffer.from(chunk, encoding)\n    }\n\n    if (Buffer.isBuffer(chunk) && this[ENCODING])\n      chunk = this[DECODER].write(chunk)\n\n    // Note: flushing CAN potentially switch us into not-flowing mode\n    if (this.flowing && this[BUFFERLENGTH] !== 0)\n      this[FLUSH](true)\n\n    if (this.flowing)\n      this.emit('data', chunk)\n    else\n      this[BUFFERPUSH](chunk)\n\n    if (this[BUFFERLENGTH] !== 0)\n      this.emit('readable')\n\n    if (cb)\n      fn(cb)\n\n    return this.flowing\n  }\n\n  read (n) {\n    if (this[DESTROYED])\n      return null\n\n    if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH]) {\n      this[MAYBE_EMIT_END]()\n      return null\n    }\n\n    if (this[OBJECTMODE])\n      n = null\n\n    if (this.buffer.length > 1 && !this[OBJECTMODE]) {\n      if (this.encoding)\n        this.buffer = [this.buffer.join('')]\n      else\n        this.buffer = [Buffer.concat(this.buffer, this[BUFFERLENGTH])]\n    }\n\n    const ret = this[READ](n || null, this.buffer[0])\n    this[MAYBE_EMIT_END]()\n    return ret\n  }\n\n  [READ] (n, chunk) {\n    if (n === chunk.length || n === null)\n      this[BUFFERSHIFT]()\n    else {\n      this.buffer[0] = chunk.slice(n)\n      chunk = chunk.slice(0, n)\n      this[BUFFERLENGTH] -= n\n    }\n\n    this.emit('data', chunk)\n\n    if (!this.buffer.length && !this[EOF])\n      this.emit('drain')\n\n    return chunk\n  }\n\n  end (chunk, encoding, cb) {\n    if (typeof chunk === 'function')\n      cb = chunk, chunk = null\n    if (typeof encoding === 'function')\n      cb = encoding, encoding = 'utf8'\n    if (chunk)\n      this.write(chunk, encoding)\n    if (cb)\n      this.once('end', cb)\n    this[EOF] = true\n    this.writable = false\n\n    // if we haven't written anything, then go ahead and emit,\n    // even if we're not reading.\n    // we'll re-emit if a new 'end' listener is added anyway.\n    // This makes MP more suitable to write-only use cases.\n    if (this.flowing || !this[PAUSED])\n      this[MAYBE_EMIT_END]()\n    return this\n  }\n\n  // don't let the internal resume be overwritten\n  [RESUME] () {\n    if (this[DESTROYED])\n      return\n\n    this[PAUSED] = false\n    this[FLOWING] = true\n    this.emit('resume')\n    if (this.buffer.length)\n      this[FLUSH]()\n    else if (this[EOF])\n      this[MAYBE_EMIT_END]()\n    else\n      this.emit('drain')\n  }\n\n  resume () {\n    return this[RESUME]()\n  }\n\n  pause () {\n    this[FLOWING] = false\n    this[PAUSED] = true\n  }\n\n  get destroyed () {\n    return this[DESTROYED]\n  }\n\n  get flowing () {\n    return this[FLOWING]\n  }\n\n  get paused () {\n    return this[PAUSED]\n  }\n\n  [BUFFERPUSH] (chunk) {\n    if (this[OBJECTMODE])\n      this[BUFFERLENGTH] += 1\n    else\n      this[BUFFERLENGTH] += chunk.length\n    this.buffer.push(chunk)\n  }\n\n  [BUFFERSHIFT] () {\n    if (this.buffer.length) {\n      if (this[OBJECTMODE])\n        this[BUFFERLENGTH] -= 1\n      else\n        this[BUFFERLENGTH] -= this.buffer[0].length\n    }\n    return this.buffer.shift()\n  }\n\n  [FLUSH] (noDrain) {\n    do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]()))\n\n    if (!noDrain && !this.buffer.length && !this[EOF])\n      this.emit('drain')\n  }\n\n  [FLUSHCHUNK] (chunk) {\n    return chunk ? (this.emit('data', chunk), this.flowing) : false\n  }\n\n  pipe (dest, opts) {\n    if (this[DESTROYED])\n      return\n\n    const ended = this[EMITTED_END]\n    opts = opts || {}\n    if (dest === proc.stdout || dest === proc.stderr)\n      opts.end = false\n    else\n      opts.end = opts.end !== false\n    opts.proxyErrors = !!opts.proxyErrors\n\n    // piping an ended stream ends immediately\n    if (ended) {\n      if (opts.end)\n        dest.end()\n    } else {\n      this.pipes.push(!opts.proxyErrors ? new Pipe(this, dest, opts)\n        : new PipeProxyErrors(this, dest, opts))\n      if (this[ASYNC])\n        defer(() => this[RESUME]())\n      else\n        this[RESUME]()\n    }\n\n    return dest\n  }\n\n  unpipe (dest) {\n    const p = this.pipes.find(p => p.dest === dest)\n    if (p) {\n      this.pipes.splice(this.pipes.indexOf(p), 1)\n      p.unpipe()\n    }\n  }\n\n  addListener (ev, fn) {\n    return this.on(ev, fn)\n  }\n\n  on (ev, fn) {\n    const ret = super.on(ev, fn)\n    if (ev === 'data' && !this.pipes.length && !this.flowing)\n      this[RESUME]()\n    else if (ev === 'readable' && this[BUFFERLENGTH] !== 0)\n      super.emit('readable')\n    else if (isEndish(ev) && this[EMITTED_END]) {\n      super.emit(ev)\n      this.removeAllListeners(ev)\n    } else if (ev === 'error' && this[EMITTED_ERROR]) {\n      if (this[ASYNC])\n        defer(() => fn.call(this, this[EMITTED_ERROR]))\n      else\n        fn.call(this, this[EMITTED_ERROR])\n    }\n    return ret\n  }\n\n  get emittedEnd () {\n    return this[EMITTED_END]\n  }\n\n  [MAYBE_EMIT_END] () {\n    if (!this[EMITTING_END] &&\n        !this[EMITTED_END] &&\n        !this[DESTROYED] &&\n        this.buffer.length === 0 &&\n        this[EOF]) {\n      this[EMITTING_END] = true\n      this.emit('end')\n      this.emit('prefinish')\n      this.emit('finish')\n      if (this[CLOSED])\n        this.emit('close')\n      this[EMITTING_END] = false\n    }\n  }\n\n  emit (ev, data, ...extra) {\n    // error and close are only events allowed after calling destroy()\n    if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED])\n      return\n    else if (ev === 'data') {\n      return !data ? false\n        : this[ASYNC] ? defer(() => this[EMITDATA](data))\n        : this[EMITDATA](data)\n    } else if (ev === 'end') {\n      return this[EMITEND]()\n    } else if (ev === 'close') {\n      this[CLOSED] = true\n      // don't emit close before 'end' and 'finish'\n      if (!this[EMITTED_END] && !this[DESTROYED])\n        return\n      const ret = super.emit('close')\n      this.removeAllListeners('close')\n      return ret\n    } else if (ev === 'error') {\n      this[EMITTED_ERROR] = data\n      const ret = super.emit('error', data)\n      this[MAYBE_EMIT_END]()\n      return ret\n    } else if (ev === 'resume') {\n      const ret = super.emit('resume')\n      this[MAYBE_EMIT_END]()\n      return ret\n    } else if (ev === 'finish' || ev === 'prefinish') {\n      const ret = super.emit(ev)\n      this.removeAllListeners(ev)\n      return ret\n    }\n\n    // Some other unknown event\n    const ret = super.emit(ev, data, ...extra)\n    this[MAYBE_EMIT_END]()\n    return ret\n  }\n\n  [EMITDATA] (data) {\n    for (const p of this.pipes) {\n      if (p.dest.write(data) === false)\n        this.pause()\n    }\n    const ret = super.emit('data', data)\n    this[MAYBE_EMIT_END]()\n    return ret\n  }\n\n  [EMITEND] () {\n    if (this[EMITTED_END])\n      return\n\n    this[EMITTED_END] = true\n    this.readable = false\n    if (this[ASYNC])\n      defer(() => this[EMITEND2]())\n    else\n      this[EMITEND2]()\n  }\n\n  [EMITEND2] () {\n    if (this[DECODER]) {\n      const data = this[DECODER].end()\n      if (data) {\n        for (const p of this.pipes) {\n          p.dest.write(data)\n        }\n        super.emit('data', data)\n      }\n    }\n\n    for (const p of this.pipes) {\n      p.end()\n    }\n    const ret = super.emit('end')\n    this.removeAllListeners('end')\n    return ret\n  }\n\n  // const all = await stream.collect()\n  collect () {\n    const buf = []\n    if (!this[OBJECTMODE])\n      buf.dataLength = 0\n    // set the promise first, in case an error is raised\n    // by triggering the flow here.\n    const p = this.promise()\n    this.on('data', c => {\n      buf.push(c)\n      if (!this[OBJECTMODE])\n        buf.dataLength += c.length\n    })\n    return p.then(() => buf)\n  }\n\n  // const data = await stream.concat()\n  concat () {\n    return this[OBJECTMODE]\n      ? Promise.reject(new Error('cannot concat in objectMode'))\n      : this.collect().then(buf =>\n          this[OBJECTMODE]\n            ? Promise.reject(new Error('cannot concat in objectMode'))\n            : this[ENCODING] ? buf.join('') : Buffer.concat(buf, buf.dataLength))\n  }\n\n  // stream.promise().then(() => done, er => emitted error)\n  promise () {\n    return new Promise((resolve, reject) => {\n      this.on(DESTROYED, () => reject(new Error('stream destroyed')))\n      this.on('error', er => reject(er))\n      this.on('end', () => resolve())\n    })\n  }\n\n  // for await (let chunk of stream)\n  [ASYNCITERATOR] () {\n    const next = () => {\n      const res = this.read()\n      if (res !== null)\n        return Promise.resolve({ done: false, value: res })\n\n      if (this[EOF])\n        return Promise.resolve({ done: true })\n\n      let resolve = null\n      let reject = null\n      const onerr = er => {\n        this.removeListener('data', ondata)\n        this.removeListener('end', onend)\n        reject(er)\n      }\n      const ondata = value => {\n        this.removeListener('error', onerr)\n        this.removeListener('end', onend)\n        this.pause()\n        resolve({ value: value, done: !!this[EOF] })\n      }\n      const onend = () => {\n        this.removeListener('error', onerr)\n        this.removeListener('data', ondata)\n        resolve({ done: true })\n      }\n      const ondestroy = () => onerr(new Error('stream destroyed'))\n      return new Promise((res, rej) => {\n        reject = rej\n        resolve = res\n        this.once(DESTROYED, ondestroy)\n        this.once('error', onerr)\n        this.once('end', onend)\n        this.once('data', ondata)\n      })\n    }\n\n    return { next }\n  }\n\n  // for (let chunk of stream)\n  [ITERATOR] () {\n    const next = () => {\n      const value = this.read()\n      const done = value === null\n      return { value, done }\n    }\n    return { next }\n  }\n\n  destroy (er) {\n    if (this[DESTROYED]) {\n      if (er)\n        this.emit('error', er)\n      else\n        this.emit(DESTROYED)\n      return this\n    }\n\n    this[DESTROYED] = true\n\n    // throw away all buffered data, it's never coming out\n    this.buffer.length = 0\n    this[BUFFERLENGTH] = 0\n\n    if (typeof this.close === 'function' && !this[CLOSED])\n      this.close()\n\n    if (er)\n      this.emit('error', er)\n    else // if no error to emit, still reject pending promises\n      this.emit(DESTROYED)\n\n    return this\n  }\n\n  static isStream (s) {\n    return !!s && (s instanceof Minipass || s instanceof Stream ||\n      s instanceof EE && (\n        typeof s.pipe === 'function' || // readable\n        (typeof s.write === 'function' && typeof s.end === 'function') // writable\n      ))\n  }\n}\n", "const Minipass = require('minipass')\nconst _data = Symbol('_data')\nconst _length = Symbol('_length')\nclass Collect extends Minipass {\n  constructor (options) {\n    super(options)\n    this[_data] = []\n    this[_length] = 0\n  }\n  write (chunk, encoding, cb) {\n    if (typeof encoding === 'function')\n      cb = encoding, encoding = 'utf8'\n\n    if (!encoding)\n      encoding = 'utf8'\n\n    const c = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk, encoding)\n    this[_data].push(c)\n    this[_length] += c.length\n    if (cb)\n      cb()\n    return true\n  }\n  end (chunk, encoding, cb) {\n    if (typeof chunk === 'function')\n      cb = chunk, chunk = null\n    if (typeof encoding === 'function')\n      cb = encoding, encoding = 'utf8'\n    if (chunk)\n      this.write(chunk, encoding)\n    const result = Buffer.concat(this[_data], this[_length])\n    super.write(result)\n    return super.end(cb)\n  }\n}\nmodule.exports = Collect\n\n// it would be possible to DRY this a bit by doing something like\n// this.collector = new Collect() and listening on its data event,\n// but it's not much code, and we may as well save the extra obj\nclass CollectPassThrough extends Minipass {\n  constructor (options) {\n    super(options)\n    this[_data] = []\n    this[_length] = 0\n  }\n  write (chunk, encoding, cb) {\n    if (typeof encoding === 'function')\n      cb = encoding, encoding = 'utf8'\n\n    if (!encoding)\n      encoding = 'utf8'\n\n    const c = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk, encoding)\n    this[_data].push(c)\n    this[_length] += c.length\n    return super.write(chunk, encoding, cb)\n  }\n  end (chunk, encoding, cb) {\n    if (typeof chunk === 'function')\n      cb = chunk, chunk = null\n    if (typeof encoding === 'function')\n      cb = encoding, encoding = 'utf8'\n    if (chunk)\n      this.write(chunk, encoding)\n    const result = Buffer.concat(this[_data], this[_length])\n    this.emit('collect', result)\n    return super.end(cb)\n  }\n}\nmodule.exports.PassThrough = CollectPassThrough\n", "const proc =\n  typeof process === 'object' && process\n    ? process\n    : {\n        stdout: null,\n        stderr: null,\n      }\nimport { EventEmitter } from 'node:events'\nimport Stream from 'node:stream'\nimport { StringDecoder } from 'node:string_decoder'\n\n/**\n * Same as StringDecoder, but exposing the `lastNeed` flag on the type\n */\ntype SD = StringDecoder & { lastNeed: boolean }\n\nexport type { SD, Pipe, PipeProxyErrors }\n\n/**\n * Return true if the argument is a Minipass stream, Node stream, or something\n * else that Minipass can interact with.\n */\nexport const isStream = (\n  s: any\n): s is Minipass.Readable | Minipass.Writable =>\n  !!s &&\n  typeof s === 'object' &&\n  (s instanceof Minipass ||\n    s instanceof Stream ||\n    isReadable(s) ||\n    isWritable(s))\n\n/**\n * Return true if the argument is a valid {@link Minipass.Readable}\n */\nexport const isReadable = (s: any): s is Minipass.Readable =>\n  !!s &&\n  typeof s === 'object' &&\n  s instanceof EventEmitter &&\n  typeof (s as Minipass.Readable).pipe === 'function' &&\n  // node core Writable streams have a pipe() method, but it throws\n  (s as Minipass.Readable).pipe !== Stream.Writable.prototype.pipe\n\n/**\n * Return true if the argument is a valid {@link Minipass.Writable}\n */\nexport const isWritable = (s: any): s is Minipass.Readable =>\n  !!s &&\n  typeof s === 'object' &&\n  s instanceof EventEmitter &&\n  typeof (s as Minipass.Writable).write === 'function' &&\n  typeof (s as Minipass.Writable).end === 'function'\n\nconst EOF = Symbol('EOF')\nconst MAYBE_EMIT_END = Symbol('maybeEmitEnd')\nconst EMITTED_END = Symbol('emittedEnd')\nconst EMITTING_END = Symbol('emittingEnd')\nconst EMITTED_ERROR = Symbol('emittedError')\nconst CLOSED = Symbol('closed')\nconst READ = Symbol('read')\nconst FLUSH = Symbol('flush')\nconst FLUSHCHUNK = Symbol('flushChunk')\nconst ENCODING = Symbol('encoding')\nconst DECODER = Symbol('decoder')\nconst FLOWING = Symbol('flowing')\nconst PAUSED = Symbol('paused')\nconst RESUME = Symbol('resume')\nconst BUFFER = Symbol('buffer')\nconst PIPES = Symbol('pipes')\nconst BUFFERLENGTH = Symbol('bufferLength')\nconst BUFFERPUSH = Symbol('bufferPush')\nconst BUFFERSHIFT = Symbol('bufferShift')\nconst OBJECTMODE = Symbol('objectMode')\n// internal event when stream is destroyed\nconst DESTROYED = Symbol('destroyed')\n// internal event when stream has an error\nconst ERROR = Symbol('error')\nconst EMITDATA = Symbol('emitData')\nconst EMITEND = Symbol('emitEnd')\nconst EMITEND2 = Symbol('emitEnd2')\nconst ASYNC = Symbol('async')\nconst ABORT = Symbol('abort')\nconst ABORTED = Symbol('aborted')\nconst SIGNAL = Symbol('signal')\nconst DATALISTENERS = Symbol('dataListeners')\nconst DISCARDED = Symbol('discarded')\n\nconst defer = (fn: (...a: any[]) => any) => Promise.resolve().then(fn)\nconst nodefer = (fn: (...a: any[]) => any) => fn()\n\n// events that mean 'the stream is over'\n// these are treated specially, and re-emitted\n// if they are listened for after emitting.\ntype EndishEvent = 'end' | 'finish' | 'prefinish'\nconst isEndish = (ev: any): ev is EndishEvent =>\n  ev === 'end' || ev === 'finish' || ev === 'prefinish'\n\nconst isArrayBufferLike = (b: any): b is ArrayBufferLike =>\n  b instanceof ArrayBuffer ||\n  (!!b &&\n    typeof b === 'object' &&\n    b.constructor &&\n    b.constructor.name === 'ArrayBuffer' &&\n    b.byteLength >= 0)\n\nconst isArrayBufferView = (b: any): b is ArrayBufferView =>\n  !Buffer.isBuffer(b) && ArrayBuffer.isView(b)\n\n/**\n * Options that may be passed to stream.pipe()\n */\nexport interface PipeOptions {\n  /**\n   * end the destination stream when the source stream ends\n   */\n  end?: boolean\n  /**\n   * proxy errors from the source stream to the destination stream\n   */\n  proxyErrors?: boolean\n}\n\n/**\n * Internal class representing a pipe to a destination stream.\n *\n * @internal\n */\nclass Pipe<T extends unknown> {\n  src: Minipass<T>\n  dest: Minipass<any, T>\n  opts: PipeOptions\n  ondrain: () => any\n  constructor(\n    src: Minipass<T>,\n    dest: Minipass.Writable,\n    opts: PipeOptions\n  ) {\n    this.src = src\n    this.dest = dest as Minipass<any, T>\n    this.opts = opts\n    this.ondrain = () => src[RESUME]()\n    this.dest.on('drain', this.ondrain)\n  }\n  unpipe() {\n    this.dest.removeListener('drain', this.ondrain)\n  }\n  // only here for the prototype\n  /* c8 ignore start */\n  proxyErrors(_er: any) {}\n  /* c8 ignore stop */\n  end() {\n    this.unpipe()\n    if (this.opts.end) this.dest.end()\n  }\n}\n\n/**\n * Internal class representing a pipe to a destination stream where\n * errors are proxied.\n *\n * @internal\n */\nclass PipeProxyErrors<T> extends Pipe<T> {\n  unpipe() {\n    this.src.removeListener('error', this.proxyErrors)\n    super.unpipe()\n  }\n  constructor(\n    src: Minipass<T>,\n    dest: Minipass.Writable,\n    opts: PipeOptions\n  ) {\n    super(src, dest, opts)\n    this.proxyErrors = er => dest.emit('error', er)\n    src.on('error', this.proxyErrors)\n  }\n}\n\nexport namespace Minipass {\n  /**\n   * Encoding used to create a stream that outputs strings rather than\n   * Buffer objects.\n   */\n  export type Encoding = BufferEncoding | 'buffer' | null\n\n  /**\n   * Any stream that Minipass can pipe into\n   */\n  export type Writable =\n    | Minipass<any, any, any>\n    | NodeJS.WriteStream\n    | (NodeJS.WriteStream & { fd: number })\n    | (EventEmitter & {\n        end(): any\n        write(chunk: any, ...args: any[]): any\n      })\n\n  /**\n   * Any stream that can be read from\n   */\n  export type Readable =\n    | Minipass<any, any, any>\n    | NodeJS.ReadStream\n    | (NodeJS.ReadStream & { fd: number })\n    | (EventEmitter & {\n        pause(): any\n        resume(): any\n        pipe(...destArgs: any[]): any\n      })\n\n  /**\n   * Utility type that can be iterated sync or async\n   */\n  export type DualIterable<T> = Iterable<T> & AsyncIterable<T>\n\n  type EventArguments = Record<string | symbol, unknown[]>\n\n  /**\n   * The listing of events that a Minipass class can emit.\n   * Extend this when extending the Minipass class, and pass as\n   * the third template argument.  The key is the name of the event,\n   * and the value is the argument list.\n   *\n   * Any undeclared events will still be allowed, but the handler will get\n   * arguments as `unknown[]`.\n   */\n  export interface Events<RType extends any = Buffer>\n    extends EventArguments {\n    readable: []\n    data: [chunk: RType]\n    error: [er: unknown]\n    abort: [reason: unknown]\n    drain: []\n    resume: []\n    end: []\n    finish: []\n    prefinish: []\n    close: []\n    [DESTROYED]: [er?: unknown]\n    [ERROR]: [er: unknown]\n  }\n\n  /**\n   * String or buffer-like data that can be joined and sliced\n   */\n  export type ContiguousData =\n    | Buffer\n    | ArrayBufferLike\n    | ArrayBufferView\n    | string\n  export type BufferOrString = Buffer | string\n\n  /**\n   * Options passed to the Minipass constructor.\n   */\n  export type SharedOptions = {\n    /**\n     * Defer all data emission and other events until the end of the\n     * current tick, similar to Node core streams\n     */\n    async?: boolean\n    /**\n     * A signal which will abort the stream\n     */\n    signal?: AbortSignal\n    /**\n     * Output string encoding. Set to `null` or `'buffer'` (or omit) to\n     * emit Buffer objects rather than strings.\n     *\n     * Conflicts with `objectMode`\n     */\n    encoding?: BufferEncoding | null | 'buffer'\n    /**\n     * Output data exactly as it was written, supporting non-buffer/string\n     * data (such as arbitrary objects, falsey values, etc.)\n     *\n     * Conflicts with `encoding`\n     */\n    objectMode?: boolean\n  }\n\n  /**\n   * Options for a string encoded output\n   */\n  export type EncodingOptions = SharedOptions & {\n    encoding: BufferEncoding\n    objectMode?: false\n  }\n\n  /**\n   * Options for contiguous data buffer output\n   */\n  export type BufferOptions = SharedOptions & {\n    encoding?: null | 'buffer'\n    objectMode?: false\n  }\n\n  /**\n   * Options for objectMode arbitrary output\n   */\n  export type ObjectModeOptions = SharedOptions & {\n    objectMode: true\n    encoding?: null\n  }\n\n  /**\n   * Utility type to determine allowed options based on read type\n   */\n  export type Options<T> =\n    | ObjectModeOptions\n    | (T extends string\n        ? EncodingOptions\n        : T extends Buffer\n        ? BufferOptions\n        : SharedOptions)\n}\n\nconst isObjectModeOptions = (\n  o: Minipass.SharedOptions\n): o is Minipass.ObjectModeOptions => !!o.objectMode\n\nconst isEncodingOptions = (\n  o: Minipass.SharedOptions\n): o is Minipass.EncodingOptions =>\n  !o.objectMode && !!o.encoding && o.encoding !== 'buffer'\n\n/**\n * Main export, the Minipass class\n *\n * `RType` is the type of data emitted, defaults to Buffer\n *\n * `WType` is the type of data to be written, if RType is buffer or string,\n * then any {@link Minipass.ContiguousData} is allowed.\n *\n * `Events` is the set of event handler signatures that this object\n * will emit, see {@link Minipass.Events}\n */\nexport class Minipass<\n    RType extends unknown = Buffer,\n    WType extends unknown = RType extends Minipass.BufferOrString\n      ? Minipass.ContiguousData\n      : RType,\n    Events extends Minipass.Events<RType> = Minipass.Events<RType>\n  >\n  extends EventEmitter\n  implements Minipass.DualIterable<RType>\n{\n  [FLOWING]: boolean = false;\n  [PAUSED]: boolean = false;\n  [PIPES]: Pipe<RType>[] = [];\n  [BUFFER]: RType[] = [];\n  [OBJECTMODE]: boolean;\n  [ENCODING]: BufferEncoding | null;\n  [ASYNC]: boolean;\n  [DECODER]: SD | null;\n  [EOF]: boolean = false;\n  [EMITTED_END]: boolean = false;\n  [EMITTING_END]: boolean = false;\n  [CLOSED]: boolean = false;\n  [EMITTED_ERROR]: unknown = null;\n  [BUFFERLENGTH]: number = 0;\n  [DESTROYED]: boolean = false;\n  [SIGNAL]?: AbortSignal;\n  [ABORTED]: boolean = false;\n  [DATALISTENERS]: number = 0;\n  [DISCARDED]: boolean = false\n\n  /**\n   * true if the stream can be written\n   */\n  writable: boolean = true\n  /**\n   * true if the stream can be read\n   */\n  readable: boolean = true\n\n  /**\n   * If `RType` is Buffer, then options do not need to be provided.\n   * Otherwise, an options object must be provided to specify either\n   * {@link Minipass.SharedOptions.objectMode} or\n   * {@link Minipass.SharedOptions.encoding}, as appropriate.\n   */\n  constructor(\n    ...args:\n      | [Minipass.ObjectModeOptions]\n      | (RType extends Buffer\n          ? [] | [Minipass.Options<RType>]\n          : [Minipass.Options<RType>])\n  ) {\n    const options: Minipass.Options<RType> = (args[0] ||\n      {}) as Minipass.Options<RType>\n    super()\n    if (options.objectMode && typeof options.encoding === 'string') {\n      throw new TypeError(\n        'Encoding and objectMode may not be used together'\n      )\n    }\n    if (isObjectModeOptions(options)) {\n      this[OBJECTMODE] = true\n      this[ENCODING] = null\n    } else if (isEncodingOptions(options)) {\n      this[ENCODING] = options.encoding\n      this[OBJECTMODE] = false\n    } else {\n      this[OBJECTMODE] = false\n      this[ENCODING] = null\n    }\n    this[ASYNC] = !!options.async\n    this[DECODER] = this[ENCODING]\n      ? (new StringDecoder(this[ENCODING]) as SD)\n      : null\n\n    //@ts-ignore - private option for debugging and testing\n    if (options && options.debugExposeBuffer === true) {\n      Object.defineProperty(this, 'buffer', { get: () => this[BUFFER] })\n    }\n    //@ts-ignore - private option for debugging and testing\n    if (options && options.debugExposePipes === true) {\n      Object.defineProperty(this, 'pipes', { get: () => this[PIPES] })\n    }\n\n    const { signal } = options\n    if (signal) {\n      this[SIGNAL] = signal\n      if (signal.aborted) {\n        this[ABORT]()\n      } else {\n        signal.addEventListener('abort', () => this[ABORT]())\n      }\n    }\n  }\n\n  /**\n   * The amount of data stored in the buffer waiting to be read.\n   *\n   * For Buffer strings, this will be the total byte length.\n   * For string encoding streams, this will be the string character length,\n   * according to JavaScript's `string.length` logic.\n   * For objectMode streams, this is a count of the items waiting to be\n   * emitted.\n   */\n  get bufferLength() {\n    return this[BUFFERLENGTH]\n  }\n\n  /**\n   * The `BufferEncoding` currently in use, or `null`\n   */\n  get encoding() {\n    return this[ENCODING]\n  }\n\n  /**\n   * @deprecated - This is a read only property\n   */\n  set encoding(_enc) {\n    throw new Error('Encoding must be set at instantiation time')\n  }\n\n  /**\n   * @deprecated - Encoding may only be set at instantiation time\n   */\n  setEncoding(_enc: Minipass.Encoding) {\n    throw new Error('Encoding must be set at instantiation time')\n  }\n\n  /**\n   * True if this is an objectMode stream\n   */\n  get objectMode() {\n    return this[OBJECTMODE]\n  }\n\n  /**\n   * @deprecated - This is a read-only property\n   */\n  set objectMode(_om) {\n    throw new Error('objectMode must be set at instantiation time')\n  }\n\n  /**\n   * true if this is an async stream\n   */\n  get ['async'](): boolean {\n    return this[ASYNC]\n  }\n  /**\n   * Set to true to make this stream async.\n   *\n   * Once set, it cannot be unset, as this would potentially cause incorrect\n   * behavior.  Ie, a sync stream can be made async, but an async stream\n   * cannot be safely made sync.\n   */\n  set ['async'](a: boolean) {\n    this[ASYNC] = this[ASYNC] || !!a\n  }\n\n  // drop everything and get out of the flow completely\n  [ABORT]() {\n    this[ABORTED] = true\n    this.emit('abort', this[SIGNAL]?.reason)\n    this.destroy(this[SIGNAL]?.reason)\n  }\n\n  /**\n   * True if the stream has been aborted.\n   */\n  get aborted() {\n    return this[ABORTED]\n  }\n  /**\n   * No-op setter. Stream aborted status is set via the AbortSignal provided\n   * in the constructor options.\n   */\n  set aborted(_) {}\n\n  /**\n   * Write data into the stream\n   *\n   * If the chunk written is a string, and encoding is not specified, then\n   * `utf8` will be assumed. If the stream encoding matches the encoding of\n   * a written string, and the state of the string decoder allows it, then\n   * the string will be passed through to either the output or the internal\n   * buffer without any processing. Otherwise, it will be turned into a\n   * Buffer object for processing into the desired encoding.\n   *\n   * If provided, `cb` function is called immediately before return for\n   * sync streams, or on next tick for async streams, because for this\n   * base class, a chunk is considered \"processed\" once it is accepted\n   * and either emitted or buffered. That is, the callback does not indicate\n   * that the chunk has been eventually emitted, though of course child\n   * classes can override this function to do whatever processing is required\n   * and call `super.write(...)` only once processing is completed.\n   */\n  write(chunk: WType, cb?: () => void): boolean\n  write(\n    chunk: WType,\n    encoding?: Minipass.Encoding,\n    cb?: () => void\n  ): boolean\n  write(\n    chunk: WType,\n    encoding?: Minipass.Encoding | (() => void),\n    cb?: () => void\n  ): boolean {\n    if (this[ABORTED]) return false\n    if (this[EOF]) throw new Error('write after end')\n\n    if (this[DESTROYED]) {\n      this.emit(\n        'error',\n        Object.assign(\n          new Error('Cannot call write after a stream was destroyed'),\n          { code: 'ERR_STREAM_DESTROYED' }\n        )\n      )\n      return true\n    }\n\n    if (typeof encoding === 'function') {\n      cb = encoding\n      encoding = 'utf8'\n    }\n\n    if (!encoding) encoding = 'utf8'\n\n    const fn = this[ASYNC] ? defer : nodefer\n\n    // convert array buffers and typed array views into buffers\n    // at some point in the future, we may want to do the opposite!\n    // leave strings and buffers as-is\n    // anything is only allowed if in object mode, so throw\n    if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {\n      if (isArrayBufferView(chunk)) {\n        //@ts-ignore - sinful unsafe type changing\n        chunk = Buffer.from(\n          chunk.buffer,\n          chunk.byteOffset,\n          chunk.byteLength\n        )\n      } else if (isArrayBufferLike(chunk)) {\n        //@ts-ignore - sinful unsafe type changing\n        chunk = Buffer.from(chunk)\n      } else if (typeof chunk !== 'string') {\n        throw new Error(\n          'Non-contiguous data written to non-objectMode stream'\n        )\n      }\n    }\n\n    // handle object mode up front, since it's simpler\n    // this yields better performance, fewer checks later.\n    if (this[OBJECTMODE]) {\n      // maybe impossible?\n      /* c8 ignore start */\n      if (this[FLOWING] && this[BUFFERLENGTH] !== 0) this[FLUSH](true)\n      /* c8 ignore stop */\n\n      if (this[FLOWING]) this.emit('data', chunk as unknown as RType)\n      else this[BUFFERPUSH](chunk as unknown as RType)\n\n      if (this[BUFFERLENGTH] !== 0) this.emit('readable')\n\n      if (cb) fn(cb)\n\n      return this[FLOWING]\n    }\n\n    // at this point the chunk is a buffer or string\n    // don't buffer it up or send it to the decoder\n    if (!(chunk as Minipass.BufferOrString).length) {\n      if (this[BUFFERLENGTH] !== 0) this.emit('readable')\n      if (cb) fn(cb)\n      return this[FLOWING]\n    }\n\n    // fast-path writing strings of same encoding to a stream with\n    // an empty buffer, skipping the buffer/decoder dance\n    if (\n      typeof chunk === 'string' &&\n      // unless it is a string already ready for us to use\n      !(encoding === this[ENCODING] && !this[DECODER]?.lastNeed)\n    ) {\n      //@ts-ignore - sinful unsafe type change\n      chunk = Buffer.from(chunk, encoding)\n    }\n\n    if (Buffer.isBuffer(chunk) && this[ENCODING]) {\n      //@ts-ignore - sinful unsafe type change\n      chunk = this[DECODER].write(chunk)\n    }\n\n    // Note: flushing CAN potentially switch us into not-flowing mode\n    if (this[FLOWING] && this[BUFFERLENGTH] !== 0) this[FLUSH](true)\n\n    if (this[FLOWING]) this.emit('data', chunk as unknown as RType)\n    else this[BUFFERPUSH](chunk as unknown as RType)\n\n    if (this[BUFFERLENGTH] !== 0) this.emit('readable')\n\n    if (cb) fn(cb)\n\n    return this[FLOWING]\n  }\n\n  /**\n   * Low-level explicit read method.\n   *\n   * In objectMode, the argument is ignored, and one item is returned if\n   * available.\n   *\n   * `n` is the number of bytes (or in the case of encoding streams,\n   * characters) to consume. If `n` is not provided, then the entire buffer\n   * is returned, or `null` is returned if no data is available.\n   *\n   * If `n` is greater that the amount of data in the internal buffer,\n   * then `null` is returned.\n   */\n  read(n?: number | null): RType | null {\n    if (this[DESTROYED]) return null\n    this[DISCARDED] = false\n\n    if (\n      this[BUFFERLENGTH] === 0 ||\n      n === 0 ||\n      (n && n > this[BUFFERLENGTH])\n    ) {\n      this[MAYBE_EMIT_END]()\n      return null\n    }\n\n    if (this[OBJECTMODE]) n = null\n\n    if (this[BUFFER].length > 1 && !this[OBJECTMODE]) {\n      // not object mode, so if we have an encoding, then RType is string\n      // otherwise, must be Buffer\n      this[BUFFER] = [\n        (this[ENCODING]\n          ? this[BUFFER].join('')\n          : Buffer.concat(\n              this[BUFFER] as Buffer[],\n              this[BUFFERLENGTH]\n            )) as RType,\n      ]\n    }\n\n    const ret = this[READ](n || null, this[BUFFER][0] as RType)\n    this[MAYBE_EMIT_END]()\n    return ret\n  }\n\n  [READ](n: number | null, chunk: RType) {\n    if (this[OBJECTMODE]) this[BUFFERSHIFT]()\n    else {\n      const c = chunk as Minipass.BufferOrString\n      if (n === c.length || n === null) this[BUFFERSHIFT]()\n      else if (typeof c === 'string') {\n        this[BUFFER][0] = c.slice(n) as RType\n        chunk = c.slice(0, n) as RType\n        this[BUFFERLENGTH] -= n\n      } else {\n        this[BUFFER][0] = c.subarray(n) as RType\n        chunk = c.subarray(0, n) as RType\n        this[BUFFERLENGTH] -= n\n      }\n    }\n\n    this.emit('data', chunk)\n\n    if (!this[BUFFER].length && !this[EOF]) this.emit('drain')\n\n    return chunk\n  }\n\n  /**\n   * End the stream, optionally providing a final write.\n   *\n   * See {@link Minipass#write} for argument descriptions\n   */\n  end(cb?: () => void): this\n  end(chunk: WType, cb?: () => void): this\n  end(chunk: WType, encoding?: Minipass.Encoding, cb?: () => void): this\n  end(\n    chunk?: WType | (() => void),\n    encoding?: Minipass.Encoding | (() => void),\n    cb?: () => void\n  ): this {\n    if (typeof chunk === 'function') {\n      cb = chunk as () => void\n      chunk = undefined\n    }\n    if (typeof encoding === 'function') {\n      cb = encoding\n      encoding = 'utf8'\n    }\n    if (chunk !== undefined) this.write(chunk, encoding)\n    if (cb) this.once('end', cb)\n    this[EOF] = true\n    this.writable = false\n\n    // if we haven't written anything, then go ahead and emit,\n    // even if we're not reading.\n    // we'll re-emit if a new 'end' listener is added anyway.\n    // This makes MP more suitable to write-only use cases.\n    if (this[FLOWING] || !this[PAUSED]) this[MAYBE_EMIT_END]()\n    return this\n  }\n\n  // don't let the internal resume be overwritten\n  [RESUME]() {\n    if (this[DESTROYED]) return\n\n    if (!this[DATALISTENERS] && !this[PIPES].length) {\n      this[DISCARDED] = true\n    }\n    this[PAUSED] = false\n    this[FLOWING] = true\n    this.emit('resume')\n    if (this[BUFFER].length) this[FLUSH]()\n    else if (this[EOF]) this[MAYBE_EMIT_END]()\n    else this.emit('drain')\n  }\n\n  /**\n   * Resume the stream if it is currently in a paused state\n   *\n   * If called when there are no pipe destinations or `data` event listeners,\n   * this will place the stream in a \"discarded\" state, where all data will\n   * be thrown away. The discarded state is removed if a pipe destination or\n   * data handler is added, if pause() is called, or if any synchronous or\n   * asynchronous iteration is started.\n   */\n  resume() {\n    return this[RESUME]()\n  }\n\n  /**\n   * Pause the stream\n   */\n  pause() {\n    this[FLOWING] = false\n    this[PAUSED] = true\n    this[DISCARDED] = false\n  }\n\n  /**\n   * true if the stream has been forcibly destroyed\n   */\n  get destroyed() {\n    return this[DESTROYED]\n  }\n\n  /**\n   * true if the stream is currently in a flowing state, meaning that\n   * any writes will be immediately emitted.\n   */\n  get flowing() {\n    return this[FLOWING]\n  }\n\n  /**\n   * true if the stream is currently in a paused state\n   */\n  get paused() {\n    return this[PAUSED]\n  }\n\n  [BUFFERPUSH](chunk: RType) {\n    if (this[OBJECTMODE]) this[BUFFERLENGTH] += 1\n    else this[BUFFERLENGTH] += (chunk as Minipass.BufferOrString).length\n    this[BUFFER].push(chunk)\n  }\n\n  [BUFFERSHIFT](): RType {\n    if (this[OBJECTMODE]) this[BUFFERLENGTH] -= 1\n    else\n      this[BUFFERLENGTH] -= (\n        this[BUFFER][0] as Minipass.BufferOrString\n      ).length\n    return this[BUFFER].shift() as RType\n  }\n\n  [FLUSH](noDrain: boolean = false) {\n    do {} while (\n      this[FLUSHCHUNK](this[BUFFERSHIFT]()) &&\n      this[BUFFER].length\n    )\n\n    if (!noDrain && !this[BUFFER].length && !this[EOF]) this.emit('drain')\n  }\n\n  [FLUSHCHUNK](chunk: RType) {\n    this.emit('data', chunk)\n    return this[FLOWING]\n  }\n\n  /**\n   * Pipe all data emitted by this stream into the destination provided.\n   *\n   * Triggers the flow of data.\n   */\n  pipe<W extends Minipass.Writable>(dest: W, opts?: PipeOptions): W {\n    if (this[DESTROYED]) return dest\n    this[DISCARDED] = false\n\n    const ended = this[EMITTED_END]\n    opts = opts || {}\n    if (dest === proc.stdout || dest === proc.stderr) opts.end = false\n    else opts.end = opts.end !== false\n    opts.proxyErrors = !!opts.proxyErrors\n\n    // piping an ended stream ends immediately\n    if (ended) {\n      if (opts.end) dest.end()\n    } else {\n      // \"as\" here just ignores the WType, which pipes don't care about,\n      // since they're only consuming from us, and writing to the dest\n      this[PIPES].push(\n        !opts.proxyErrors\n          ? new Pipe<RType>(this as Minipass<RType>, dest, opts)\n          : new PipeProxyErrors<RType>(this as Minipass<RType>, dest, opts)\n      )\n      if (this[ASYNC]) defer(() => this[RESUME]())\n      else this[RESUME]()\n    }\n\n    return dest\n  }\n\n  /**\n   * Fully unhook a piped destination stream.\n   *\n   * If the destination stream was the only consumer of this stream (ie,\n   * there are no other piped destinations or `'data'` event listeners)\n   * then the flow of data will stop until there is another consumer or\n   * {@link Minipass#resume} is explicitly called.\n   */\n  unpipe<W extends Minipass.Writable>(dest: W) {\n    const p = this[PIPES].find(p => p.dest === dest)\n    if (p) {\n      if (this[PIPES].length === 1) {\n        if (this[FLOWING] && this[DATALISTENERS] === 0) {\n          this[FLOWING] = false\n        }\n        this[PIPES] = []\n      } else this[PIPES].splice(this[PIPES].indexOf(p), 1)\n      p.unpipe()\n    }\n  }\n\n  /**\n   * Alias for {@link Minipass#on}\n   */\n  addListener<Event extends keyof Events>(\n    ev: Event,\n    handler: (...args: Events[Event]) => any\n  ): this {\n    return this.on(ev, handler)\n  }\n\n  /**\n   * Mostly identical to `EventEmitter.on`, with the following\n   * behavior differences to prevent data loss and unnecessary hangs:\n   *\n   * - Adding a 'data' event handler will trigger the flow of data\n   *\n   * - Adding a 'readable' event handler when there is data waiting to be read\n   *   will cause 'readable' to be emitted immediately.\n   *\n   * - Adding an 'endish' event handler ('end', 'finish', etc.) which has\n   *   already passed will cause the event to be emitted immediately and all\n   *   handlers removed.\n   *\n   * - Adding an 'error' event handler after an error has been emitted will\n   *   cause the event to be re-emitted immediately with the error previously\n   *   raised.\n   */\n  on<Event extends keyof Events>(\n    ev: Event,\n    handler: (...args: Events[Event]) => any\n  ): this {\n    const ret = super.on(\n      ev as string | symbol,\n      handler as (...a: any[]) => any\n    )\n    if (ev === 'data') {\n      this[DISCARDED] = false\n      this[DATALISTENERS]++\n      if (!this[PIPES].length && !this[FLOWING]) {\n        this[RESUME]()\n      }\n    } else if (ev === 'readable' && this[BUFFERLENGTH] !== 0) {\n      super.emit('readable')\n    } else if (isEndish(ev) && this[EMITTED_END]) {\n      super.emit(ev)\n      this.removeAllListeners(ev)\n    } else if (ev === 'error' && this[EMITTED_ERROR]) {\n      const h = handler as (...a: Events['error']) => any\n      if (this[ASYNC]) defer(() => h.call(this, this[EMITTED_ERROR]))\n      else h.call(this, this[EMITTED_ERROR])\n    }\n    return ret\n  }\n\n  /**\n   * Alias for {@link Minipass#off}\n   */\n  removeListener<Event extends keyof Events>(\n    ev: Event,\n    handler: (...args: Events[Event]) => any\n  ) {\n    return this.off(ev, handler)\n  }\n\n  /**\n   * Mostly identical to `EventEmitter.off`\n   *\n   * If a 'data' event handler is removed, and it was the last consumer\n   * (ie, there are no pipe destinations or other 'data' event listeners),\n   * then the flow of data will stop until there is another consumer or\n   * {@link Minipass#resume} is explicitly called.\n   */\n  off<Event extends keyof Events>(\n    ev: Event,\n    handler: (...args: Events[Event]) => any\n  ) {\n    const ret = super.off(\n      ev as string | symbol,\n      handler as (...a: any[]) => any\n    )\n    // if we previously had listeners, and now we don't, and we don't\n    // have any pipes, then stop the flow, unless it's been explicitly\n    // put in a discarded flowing state via stream.resume().\n    if (ev === 'data') {\n      this[DATALISTENERS] = this.listeners('data').length\n      if (\n        this[DATALISTENERS] === 0 &&\n        !this[DISCARDED] &&\n        !this[PIPES].length\n      ) {\n        this[FLOWING] = false\n      }\n    }\n    return ret\n  }\n\n  /**\n   * Mostly identical to `EventEmitter.removeAllListeners`\n   *\n   * If all 'data' event handlers are removed, and they were the last consumer\n   * (ie, there are no pipe destinations), then the flow of data will stop\n   * until there is another consumer or {@link Minipass#resume} is explicitly\n   * called.\n   */\n  removeAllListeners<Event extends keyof Events>(ev?: Event) {\n    const ret = super.removeAllListeners(ev as string | symbol | undefined)\n    if (ev === 'data' || ev === undefined) {\n      this[DATALISTENERS] = 0\n      if (!this[DISCARDED] && !this[PIPES].length) {\n        this[FLOWING] = false\n      }\n    }\n    return ret\n  }\n\n  /**\n   * true if the 'end' event has been emitted\n   */\n  get emittedEnd() {\n    return this[EMITTED_END]\n  }\n\n  [MAYBE_EMIT_END]() {\n    if (\n      !this[EMITTING_END] &&\n      !this[EMITTED_END] &&\n      !this[DESTROYED] &&\n      this[BUFFER].length === 0 &&\n      this[EOF]\n    ) {\n      this[EMITTING_END] = true\n      this.emit('end')\n      this.emit('prefinish')\n      this.emit('finish')\n      if (this[CLOSED]) this.emit('close')\n      this[EMITTING_END] = false\n    }\n  }\n\n  /**\n   * Mostly identical to `EventEmitter.emit`, with the following\n   * behavior differences to prevent data loss and unnecessary hangs:\n   *\n   * If the stream has been destroyed, and the event is something other\n   * than 'close' or 'error', then `false` is returned and no handlers\n   * are called.\n   *\n   * If the event is 'end', and has already been emitted, then the event\n   * is ignored. If the stream is in a paused or non-flowing state, then\n   * the event will be deferred until data flow resumes. If the stream is\n   * async, then handlers will be called on the next tick rather than\n   * immediately.\n   *\n   * If the event is 'close', and 'end' has not yet been emitted, then\n   * the event will be deferred until after 'end' is emitted.\n   *\n   * If the event is 'error', and an AbortSignal was provided for the stream,\n   * and there are no listeners, then the event is ignored, matching the\n   * behavior of node core streams in the presense of an AbortSignal.\n   *\n   * If the event is 'finish' or 'prefinish', then all listeners will be\n   * removed after emitting the event, to prevent double-firing.\n   */\n  emit<Event extends keyof Events>(\n    ev: Event,\n    ...args: Events[Event]\n  ): boolean {\n    const data = args[0]\n    // error and close are only events allowed after calling destroy()\n    if (\n      ev !== 'error' &&\n      ev !== 'close' &&\n      ev !== DESTROYED &&\n      this[DESTROYED]\n    ) {\n      return false\n    } else if (ev === 'data') {\n      return !this[OBJECTMODE] && !data\n        ? false\n        : this[ASYNC]\n        ? (defer(() => this[EMITDATA](data as RType)), true)\n        : this[EMITDATA](data as RType)\n    } else if (ev === 'end') {\n      return this[EMITEND]()\n    } else if (ev === 'close') {\n      this[CLOSED] = true\n      // don't emit close before 'end' and 'finish'\n      if (!this[EMITTED_END] && !this[DESTROYED]) return false\n      const ret = super.emit('close')\n      this.removeAllListeners('close')\n      return ret\n    } else if (ev === 'error') {\n      this[EMITTED_ERROR] = data\n      super.emit(ERROR, data)\n      const ret =\n        !this[SIGNAL] || this.listeners('error').length\n          ? super.emit('error', data)\n          : false\n      this[MAYBE_EMIT_END]()\n      return ret\n    } else if (ev === 'resume') {\n      const ret = super.emit('resume')\n      this[MAYBE_EMIT_END]()\n      return ret\n    } else if (ev === 'finish' || ev === 'prefinish') {\n      const ret = super.emit(ev)\n      this.removeAllListeners(ev)\n      return ret\n    }\n\n    // Some other unknown event\n    const ret = super.emit(ev as string, ...args)\n    this[MAYBE_EMIT_END]()\n    return ret\n  }\n\n  [EMITDATA](data: RType) {\n    for (const p of this[PIPES]) {\n      if (p.dest.write(data as RType) === false) this.pause()\n    }\n    const ret = this[DISCARDED] ? false : super.emit('data', data)\n    this[MAYBE_EMIT_END]()\n    return ret\n  }\n\n  [EMITEND]() {\n    if (this[EMITTED_END]) return false\n\n    this[EMITTED_END] = true\n    this.readable = false\n    return this[ASYNC]\n      ? (defer(() => this[EMITEND2]()), true)\n      : this[EMITEND2]()\n  }\n\n  [EMITEND2]() {\n    if (this[DECODER]) {\n      const data = this[DECODER].end()\n      if (data) {\n        for (const p of this[PIPES]) {\n          p.dest.write(data as RType)\n        }\n        if (!this[DISCARDED]) super.emit('data', data)\n      }\n    }\n\n    for (const p of this[PIPES]) {\n      p.end()\n    }\n    const ret = super.emit('end')\n    this.removeAllListeners('end')\n    return ret\n  }\n\n  /**\n   * Return a Promise that resolves to an array of all emitted data once\n   * the stream ends.\n   */\n  async collect(): Promise<RType[] & { dataLength: number }> {\n    const buf: RType[] & { dataLength: number } = Object.assign([], {\n      dataLength: 0,\n    })\n    if (!this[OBJECTMODE]) buf.dataLength = 0\n    // set the promise first, in case an error is raised\n    // by triggering the flow here.\n    const p = this.promise()\n    this.on('data', c => {\n      buf.push(c)\n      if (!this[OBJECTMODE])\n        buf.dataLength += (c as Minipass.BufferOrString).length\n    })\n    await p\n    return buf\n  }\n\n  /**\n   * Return a Promise that resolves to the concatenation of all emitted data\n   * once the stream ends.\n   *\n   * Not allowed on objectMode streams.\n   */\n  async concat(): Promise<RType> {\n    if (this[OBJECTMODE]) {\n      throw new Error('cannot concat in objectMode')\n    }\n    const buf = await this.collect()\n    return (\n      this[ENCODING]\n        ? buf.join('')\n        : Buffer.concat(buf as Buffer[], buf.dataLength)\n    ) as RType\n  }\n\n  /**\n   * Return a void Promise that resolves once the stream ends.\n   */\n  async promise(): Promise<void> {\n    return new Promise<void>((resolve, reject) => {\n      this.on(DESTROYED, () => reject(new Error('stream destroyed')))\n      this.on('error', er => reject(er))\n      this.on('end', () => resolve())\n    })\n  }\n\n  /**\n   * Asynchronous `for await of` iteration.\n   *\n   * This will continue emitting all chunks until the stream terminates.\n   */\n  [Symbol.asyncIterator](): AsyncGenerator<RType, void, void> {\n    // set this up front, in case the consumer doesn't call next()\n    // right away.\n    this[DISCARDED] = false\n    let stopped = false\n    const stop = async (): Promise<IteratorReturnResult<void>> => {\n      this.pause()\n      stopped = true\n      return { value: undefined, done: true }\n    }\n    const next = (): Promise<IteratorResult<RType, void>> => {\n      if (stopped) return stop()\n      const res = this.read()\n      if (res !== null) return Promise.resolve({ done: false, value: res })\n\n      if (this[EOF]) return stop()\n\n      let resolve!: (res: IteratorResult<RType>) => void\n      let reject!: (er: unknown) => void\n      const onerr = (er: unknown) => {\n        this.off('data', ondata)\n        this.off('end', onend)\n        this.off(DESTROYED, ondestroy)\n        stop()\n        reject(er)\n      }\n      const ondata = (value: RType) => {\n        this.off('error', onerr)\n        this.off('end', onend)\n        this.off(DESTROYED, ondestroy)\n        this.pause()\n        resolve({ value, done: !!this[EOF] })\n      }\n      const onend = () => {\n        this.off('error', onerr)\n        this.off('data', ondata)\n        this.off(DESTROYED, ondestroy)\n        stop()\n        resolve({ done: true, value: undefined })\n      }\n      const ondestroy = () => onerr(new Error('stream destroyed'))\n      return new Promise<IteratorResult<RType>>((res, rej) => {\n        reject = rej\n        resolve = res\n        this.once(DESTROYED, ondestroy)\n        this.once('error', onerr)\n        this.once('end', onend)\n        this.once('data', ondata)\n      })\n    }\n\n    return {\n      next,\n      throw: stop,\n      return: stop,\n      [Symbol.asyncIterator]() {\n        return this\n      },\n    }\n  }\n\n  /**\n   * Synchronous `for of` iteration.\n   *\n   * The iteration will terminate when the internal buffer runs out, even\n   * if the stream has not yet terminated.\n   */\n  [Symbol.iterator](): Generator<RType, void, void> {\n    // set this up front, in case the consumer doesn't call next()\n    // right away.\n    this[DISCARDED] = false\n    let stopped = false\n    const stop = (): IteratorReturnResult<void> => {\n      this.pause()\n      this.off(ERROR, stop)\n      this.off(DESTROYED, stop)\n      this.off('end', stop)\n      stopped = true\n      return { done: true, value: undefined }\n    }\n\n    const next = (): IteratorResult<RType, void> => {\n      if (stopped) return stop()\n      const value = this.read()\n      return value === null ? stop() : { done: false, value }\n    }\n\n    this.once('end', stop)\n    this.once(ERROR, stop)\n    this.once(DESTROYED, stop)\n\n    return {\n      next,\n      throw: stop,\n      return: stop,\n      [Symbol.iterator]() {\n        return this\n      },\n    }\n  }\n\n  /**\n   * Destroy a stream, preventing it from being used for any further purpose.\n   *\n   * If the stream has a `close()` method, then it will be called on\n   * destruction.\n   *\n   * After destruction, any attempt to write data, read data, or emit most\n   * events will be ignored.\n   *\n   * If an error argument is provided, then it will be emitted in an\n   * 'error' event.\n   */\n  destroy(er?: unknown) {\n    if (this[DESTROYED]) {\n      if (er) this.emit('error', er)\n      else this.emit(DESTROYED)\n      return this\n    }\n\n    this[DESTROYED] = true\n    this[DISCARDED] = true\n\n    // throw away all buffered data, it's never coming out\n    this[BUFFER].length = 0\n    this[BUFFERLENGTH] = 0\n\n    const wc = this as Minipass<RType, WType, Events> & {\n      close?: () => void\n    }\n    if (typeof wc.close === 'function' && !this[CLOSED]) wc.close()\n\n    if (er) this.emit('error', er)\n    // if no error to emit, still reject pending promises\n    else this.emit(DESTROYED)\n\n    return this\n  }\n\n  /**\n   * Alias for {@link isStream}\n   *\n   * Former export location, maintained for backwards compatibility.\n   *\n   * @deprecated\n   */\n  static get isStream() {\n    return isStream\n  }\n}\n", "'use strict'\nconst proc = typeof process === 'object' && process ? process : {\n  stdout: null,\n  stderr: null,\n}\nconst EE = require('events')\nconst Stream = require('stream')\nconst SD = require('string_decoder').StringDecoder\n\nconst EOF = Symbol('EOF')\nconst MAYBE_EMIT_END = Symbol('maybeEmitEnd')\nconst EMITTED_END = Symbol('emittedEnd')\nconst EMITTING_END = Symbol('emittingEnd')\nconst EMITTED_ERROR = Symbol('emittedError')\nconst CLOSED = Symbol('closed')\nconst READ = Symbol('read')\nconst FLUSH = Symbol('flush')\nconst FLUSHCHUNK = Symbol('flushChunk')\nconst ENCODING = Symbol('encoding')\nconst DECODER = Symbol('decoder')\nconst FLOWING = Symbol('flowing')\nconst PAUSED = Symbol('paused')\nconst RESUME = Symbol('resume')\nconst BUFFERLENGTH = Symbol('bufferLength')\nconst BUFFERPUSH = Symbol('bufferPush')\nconst BUFFERSHIFT = Symbol('bufferShift')\nconst OBJECTMODE = Symbol('objectMode')\nconst DESTROYED = Symbol('destroyed')\nconst EMITDATA = Symbol('emitData')\nconst EMITEND = Symbol('emitEnd')\nconst EMITEND2 = Symbol('emitEnd2')\nconst ASYNC = Symbol('async')\n\nconst defer = fn => Promise.resolve().then(fn)\n\n// TODO remove when Node v8 support drops\nconst doIter = global._MP_NO_ITERATOR_SYMBOLS_  !== '1'\nconst ASYNCITERATOR = doIter && Symbol.asyncIterator\n  || Symbol('asyncIterator not implemented')\nconst ITERATOR = doIter && Symbol.iterator\n  || Symbol('iterator not implemented')\n\n// events that mean 'the stream is over'\n// these are treated specially, and re-emitted\n// if they are listened for after emitting.\nconst isEndish = ev =>\n  ev === 'end' ||\n  ev === 'finish' ||\n  ev === 'prefinish'\n\nconst isArrayBuffer = b => b instanceof ArrayBuffer ||\n  typeof b === 'object' &&\n  b.constructor &&\n  b.constructor.name === 'ArrayBuffer' &&\n  b.byteLength >= 0\n\nconst isArrayBufferView = b => !Buffer.isBuffer(b) && ArrayBuffer.isView(b)\n\nclass Pipe {\n  constructor (src, dest, opts) {\n    this.src = src\n    this.dest = dest\n    this.opts = opts\n    this.ondrain = () => src[RESUME]()\n    dest.on('drain', this.ondrain)\n  }\n  unpipe () {\n    this.dest.removeListener('drain', this.ondrain)\n  }\n  // istanbul ignore next - only here for the prototype\n  proxyErrors () {}\n  end () {\n    this.unpipe()\n    if (this.opts.end)\n      this.dest.end()\n  }\n}\n\nclass PipeProxyErrors extends Pipe {\n  unpipe () {\n    this.src.removeListener('error', this.proxyErrors)\n    super.unpipe()\n  }\n  constructor (src, dest, opts) {\n    super(src, dest, opts)\n    this.proxyErrors = er => dest.emit('error', er)\n    src.on('error', this.proxyErrors)\n  }\n}\n\nmodule.exports = class Minipass extends Stream {\n  constructor (options) {\n    super()\n    this[FLOWING] = false\n    // whether we're explicitly paused\n    this[PAUSED] = false\n    this.pipes = []\n    this.buffer = []\n    this[OBJECTMODE] = options && options.objectMode || false\n    if (this[OBJECTMODE])\n      this[ENCODING] = null\n    else\n      this[ENCODING] = options && options.encoding || null\n    if (this[ENCODING] === 'buffer')\n      this[ENCODING] = null\n    this[ASYNC] = options && !!options.async || false\n    this[DECODER] = this[ENCODING] ? new SD(this[ENCODING]) : null\n    this[EOF] = false\n    this[EMITTED_END] = false\n    this[EMITTING_END] = false\n    this[CLOSED] = false\n    this[EMITTED_ERROR] = null\n    this.writable = true\n    this.readable = true\n    this[BUFFERLENGTH] = 0\n    this[DESTROYED] = false\n  }\n\n  get bufferLength () { return this[BUFFERLENGTH] }\n\n  get encoding () { return this[ENCODING] }\n  set encoding (enc) {\n    if (this[OBJECTMODE])\n      throw new Error('cannot set encoding in objectMode')\n\n    if (this[ENCODING] && enc !== this[ENCODING] &&\n        (this[DECODER] && this[DECODER].lastNeed || this[BUFFERLENGTH]))\n      throw new Error('cannot change encoding')\n\n    if (this[ENCODING] !== enc) {\n      this[DECODER] = enc ? new SD(enc) : null\n      if (this.buffer.length)\n        this.buffer = this.buffer.map(chunk => this[DECODER].write(chunk))\n    }\n\n    this[ENCODING] = enc\n  }\n\n  setEncoding (enc) {\n    this.encoding = enc\n  }\n\n  get objectMode () { return this[OBJECTMODE] }\n  set objectMode (om) { this[OBJECTMODE] = this[OBJECTMODE] || !!om }\n\n  get ['async'] () { return this[ASYNC] }\n  set ['async'] (a) { this[ASYNC] = this[ASYNC] || !!a }\n\n  write (chunk, encoding, cb) {\n    if (this[EOF])\n      throw new Error('write after end')\n\n    if (this[DESTROYED]) {\n      this.emit('error', Object.assign(\n        new Error('Cannot call write after a stream was destroyed'),\n        { code: 'ERR_STREAM_DESTROYED' }\n      ))\n      return true\n    }\n\n    if (typeof encoding === 'function')\n      cb = encoding, encoding = 'utf8'\n\n    if (!encoding)\n      encoding = 'utf8'\n\n    const fn = this[ASYNC] ? defer : f => f()\n\n    // convert array buffers and typed array views into buffers\n    // at some point in the future, we may want to do the opposite!\n    // leave strings and buffers as-is\n    // anything else switches us into object mode\n    if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {\n      if (isArrayBufferView(chunk))\n        chunk = Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength)\n      else if (isArrayBuffer(chunk))\n        chunk = Buffer.from(chunk)\n      else if (typeof chunk !== 'string')\n        // use the setter so we throw if we have encoding set\n        this.objectMode = true\n    }\n\n    // handle object mode up front, since it's simpler\n    // this yields better performance, fewer checks later.\n    if (this[OBJECTMODE]) {\n      /* istanbul ignore if - maybe impossible? */\n      if (this.flowing && this[BUFFERLENGTH] !== 0)\n        this[FLUSH](true)\n\n      if (this.flowing)\n        this.emit('data', chunk)\n      else\n        this[BUFFERPUSH](chunk)\n\n      if (this[BUFFERLENGTH] !== 0)\n        this.emit('readable')\n\n      if (cb)\n        fn(cb)\n\n      return this.flowing\n    }\n\n    // at this point the chunk is a buffer or string\n    // don't buffer it up or send it to the decoder\n    if (!chunk.length) {\n      if (this[BUFFERLENGTH] !== 0)\n        this.emit('readable')\n      if (cb)\n        fn(cb)\n      return this.flowing\n    }\n\n    // fast-path writing strings of same encoding to a stream with\n    // an empty buffer, skipping the buffer/decoder dance\n    if (typeof chunk === 'string' &&\n        // unless it is a string already ready for us to use\n        !(encoding === this[ENCODING] && !this[DECODER].lastNeed)) {\n      chunk = Buffer.from(chunk, encoding)\n    }\n\n    if (Buffer.isBuffer(chunk) && this[ENCODING])\n      chunk = this[DECODER].write(chunk)\n\n    // Note: flushing CAN potentially switch us into not-flowing mode\n    if (this.flowing && this[BUFFERLENGTH] !== 0)\n      this[FLUSH](true)\n\n    if (this.flowing)\n      this.emit('data', chunk)\n    else\n      this[BUFFERPUSH](chunk)\n\n    if (this[BUFFERLENGTH] !== 0)\n      this.emit('readable')\n\n    if (cb)\n      fn(cb)\n\n    return this.flowing\n  }\n\n  read (n) {\n    if (this[DESTROYED])\n      return null\n\n    if (this[BUFFERLENGTH] === 0 || n === 0 || n > this[BUFFERLENGTH]) {\n      this[MAYBE_EMIT_END]()\n      return null\n    }\n\n    if (this[OBJECTMODE])\n      n = null\n\n    if (this.buffer.length > 1 && !this[OBJECTMODE]) {\n      if (this.encoding)\n        this.buffer = [this.buffer.join('')]\n      else\n        this.buffer = [Buffer.concat(this.buffer, this[BUFFERLENGTH])]\n    }\n\n    const ret = this[READ](n || null, this.buffer[0])\n    this[MAYBE_EMIT_END]()\n    return ret\n  }\n\n  [READ] (n, chunk) {\n    if (n === chunk.length || n === null)\n      this[BUFFERSHIFT]()\n    else {\n      this.buffer[0] = chunk.slice(n)\n      chunk = chunk.slice(0, n)\n      this[BUFFERLENGTH] -= n\n    }\n\n    this.emit('data', chunk)\n\n    if (!this.buffer.length && !this[EOF])\n      this.emit('drain')\n\n    return chunk\n  }\n\n  end (chunk, encoding, cb) {\n    if (typeof chunk === 'function')\n      cb = chunk, chunk = null\n    if (typeof encoding === 'function')\n      cb = encoding, encoding = 'utf8'\n    if (chunk)\n      this.write(chunk, encoding)\n    if (cb)\n      this.once('end', cb)\n    this[EOF] = true\n    this.writable = false\n\n    // if we haven't written anything, then go ahead and emit,\n    // even if we're not reading.\n    // we'll re-emit if a new 'end' listener is added anyway.\n    // This makes MP more suitable to write-only use cases.\n    if (this.flowing || !this[PAUSED])\n      this[MAYBE_EMIT_END]()\n    return this\n  }\n\n  // don't let the internal resume be overwritten\n  [RESUME] () {\n    if (this[DESTROYED])\n      return\n\n    this[PAUSED] = false\n    this[FLOWING] = true\n    this.emit('resume')\n    if (this.buffer.length)\n      this[FLUSH]()\n    else if (this[EOF])\n      this[MAYBE_EMIT_END]()\n    else\n      this.emit('drain')\n  }\n\n  resume () {\n    return this[RESUME]()\n  }\n\n  pause () {\n    this[FLOWING] = false\n    this[PAUSED] = true\n  }\n\n  get destroyed () {\n    return this[DESTROYED]\n  }\n\n  get flowing () {\n    return this[FLOWING]\n  }\n\n  get paused () {\n    return this[PAUSED]\n  }\n\n  [BUFFERPUSH] (chunk) {\n    if (this[OBJECTMODE])\n      this[BUFFERLENGTH] += 1\n    else\n      this[BUFFERLENGTH] += chunk.length\n    this.buffer.push(chunk)\n  }\n\n  [BUFFERSHIFT] () {\n    if (this.buffer.length) {\n      if (this[OBJECTMODE])\n        this[BUFFERLENGTH] -= 1\n      else\n        this[BUFFERLENGTH] -= this.buffer[0].length\n    }\n    return this.buffer.shift()\n  }\n\n  [FLUSH] (noDrain) {\n    do {} while (this[FLUSHCHUNK](this[BUFFERSHIFT]()))\n\n    if (!noDrain && !this.buffer.length && !this[EOF])\n      this.emit('drain')\n  }\n\n  [FLUSHCHUNK] (chunk) {\n    return chunk ? (this.emit('data', chunk), this.flowing) : false\n  }\n\n  pipe (dest, opts) {\n    if (this[DESTROYED])\n      return\n\n    const ended = this[EMITTED_END]\n    opts = opts || {}\n    if (dest === proc.stdout || dest === proc.stderr)\n      opts.end = false\n    else\n      opts.end = opts.end !== false\n    opts.proxyErrors = !!opts.proxyErrors\n\n    // piping an ended stream ends immediately\n    if (ended) {\n      if (opts.end)\n        dest.end()\n    } else {\n      this.pipes.push(!opts.proxyErrors ? new Pipe(this, dest, opts)\n        : new PipeProxyErrors(this, dest, opts))\n      if (this[ASYNC])\n        defer(() => this[RESUME]())\n      else\n        this[RESUME]()\n    }\n\n    return dest\n  }\n\n  unpipe (dest) {\n    const p = this.pipes.find(p => p.dest === dest)\n    if (p) {\n      this.pipes.splice(this.pipes.indexOf(p), 1)\n      p.unpipe()\n    }\n  }\n\n  addListener (ev, fn) {\n    return this.on(ev, fn)\n  }\n\n  on (ev, fn) {\n    const ret = super.on(ev, fn)\n    if (ev === 'data' && !this.pipes.length && !this.flowing)\n      this[RESUME]()\n    else if (ev === 'readable' && this[BUFFERLENGTH] !== 0)\n      super.emit('readable')\n    else if (isEndish(ev) && this[EMITTED_END]) {\n      super.emit(ev)\n      this.removeAllListeners(ev)\n    } else if (ev === 'error' && this[EMITTED_ERROR]) {\n      if (this[ASYNC])\n        defer(() => fn.call(this, this[EMITTED_ERROR]))\n      else\n        fn.call(this, this[EMITTED_ERROR])\n    }\n    return ret\n  }\n\n  get emittedEnd () {\n    return this[EMITTED_END]\n  }\n\n  [MAYBE_EMIT_END] () {\n    if (!this[EMITTING_END] &&\n        !this[EMITTED_END] &&\n        !this[DESTROYED] &&\n        this.buffer.length === 0 &&\n        this[EOF]) {\n      this[EMITTING_END] = true\n      this.emit('end')\n      this.emit('prefinish')\n      this.emit('finish')\n      if (this[CLOSED])\n        this.emit('close')\n      this[EMITTING_END] = false\n    }\n  }\n\n  emit (ev, data, ...extra) {\n    // error and close are only events allowed after calling destroy()\n    if (ev !== 'error' && ev !== 'close' && ev !== DESTROYED && this[DESTROYED])\n      return\n    else if (ev === 'data') {\n      return !data ? false\n        : this[ASYNC] ? defer(() => this[EMITDATA](data))\n        : this[EMITDATA](data)\n    } else if (ev === 'end') {\n      return this[EMITEND]()\n    } else if (ev === 'close') {\n      this[CLOSED] = true\n      // don't emit close before 'end' and 'finish'\n      if (!this[EMITTED_END] && !this[DESTROYED])\n        return\n      const ret = super.emit('close')\n      this.removeAllListeners('close')\n      return ret\n    } else if (ev === 'error') {\n      this[EMITTED_ERROR] = data\n      const ret = super.emit('error', data)\n      this[MAYBE_EMIT_END]()\n      return ret\n    } else if (ev === 'resume') {\n      const ret = super.emit('resume')\n      this[MAYBE_EMIT_END]()\n      return ret\n    } else if (ev === 'finish' || ev === 'prefinish') {\n      const ret = super.emit(ev)\n      this.removeAllListeners(ev)\n      return ret\n    }\n\n    // Some other unknown event\n    const ret = super.emit(ev, data, ...extra)\n    this[MAYBE_EMIT_END]()\n    return ret\n  }\n\n  [EMITDATA] (data) {\n    for (const p of this.pipes) {\n      if (p.dest.write(data) === false)\n        this.pause()\n    }\n    const ret = super.emit('data', data)\n    this[MAYBE_EMIT_END]()\n    return ret\n  }\n\n  [EMITEND] () {\n    if (this[EMITTED_END])\n      return\n\n    this[EMITTED_END] = true\n    this.readable = false\n    if (this[ASYNC])\n      defer(() => this[EMITEND2]())\n    else\n      this[EMITEND2]()\n  }\n\n  [EMITEND2] () {\n    if (this[DECODER]) {\n      const data = this[DECODER].end()\n      if (data) {\n        for (const p of this.pipes) {\n          p.dest.write(data)\n        }\n        super.emit('data', data)\n      }\n    }\n\n    for (const p of this.pipes) {\n      p.end()\n    }\n    const ret = super.emit('end')\n    this.removeAllListeners('end')\n    return ret\n  }\n\n  // const all = await stream.collect()\n  collect () {\n    const buf = []\n    if (!this[OBJECTMODE])\n      buf.dataLength = 0\n    // set the promise first, in case an error is raised\n    // by triggering the flow here.\n    const p = this.promise()\n    this.on('data', c => {\n      buf.push(c)\n      if (!this[OBJECTMODE])\n        buf.dataLength += c.length\n    })\n    return p.then(() => buf)\n  }\n\n  // const data = await stream.concat()\n  concat () {\n    return this[OBJECTMODE]\n      ? Promise.reject(new Error('cannot concat in objectMode'))\n      : this.collect().then(buf =>\n          this[OBJECTMODE]\n            ? Promise.reject(new Error('cannot concat in objectMode'))\n            : this[ENCODING] ? buf.join('') : Buffer.concat(buf, buf.dataLength))\n  }\n\n  // stream.promise().then(() => done, er => emitted error)\n  promise () {\n    return new Promise((resolve, reject) => {\n      this.on(DESTROYED, () => reject(new Error('stream destroyed')))\n      this.on('error', er => reject(er))\n      this.on('end', () => resolve())\n    })\n  }\n\n  // for await (let chunk of stream)\n  [ASYNCITERATOR] () {\n    const next = () => {\n      const res = this.read()\n      if (res !== null)\n        return Promise.resolve({ done: false, value: res })\n\n      if (this[EOF])\n        return Promise.resolve({ done: true })\n\n      let resolve = null\n      let reject = null\n      const onerr = er => {\n        this.removeListener('data', ondata)\n        this.removeListener('end', onend)\n        reject(er)\n      }\n      const ondata = value => {\n        this.removeListener('error', onerr)\n        this.removeListener('end', onend)\n        this.pause()\n        resolve({ value: value, done: !!this[EOF] })\n      }\n      const onend = () => {\n        this.removeListener('error', onerr)\n        this.removeListener('data', ondata)\n        resolve({ done: true })\n      }\n      const ondestroy = () => onerr(new Error('stream destroyed'))\n      return new Promise((res, rej) => {\n        reject = rej\n        resolve = res\n        this.once(DESTROYED, ondestroy)\n        this.once('error', onerr)\n        this.once('end', onend)\n        this.once('data', ondata)\n      })\n    }\n\n    return { next }\n  }\n\n  // for (let chunk of stream)\n  [ITERATOR] () {\n    const next = () => {\n      const value = this.read()\n      const done = value === null\n      return { value, done }\n    }\n    return { next }\n  }\n\n  destroy (er) {\n    if (this[DESTROYED]) {\n      if (er)\n        this.emit('error', er)\n      else\n        this.emit(DESTROYED)\n      return this\n    }\n\n    this[DESTROYED] = true\n\n    // throw away all buffered data, it's never coming out\n    this.buffer.length = 0\n    this[BUFFERLENGTH] = 0\n\n    if (typeof this.close === 'function' && !this[CLOSED])\n      this.close()\n\n    if (er)\n      this.emit('error', er)\n    else // if no error to emit, still reject pending promises\n      this.emit(DESTROYED)\n\n    return this\n  }\n\n  static isStream (s) {\n    return !!s && (s instanceof Minipass || s instanceof Stream ||\n      s instanceof EE && (\n        typeof s.pipe === 'function' || // readable\n        (typeof s.write === 'function' && typeof s.end === 'function') // writable\n      ))\n  }\n}\n", "const Minipass = require('minipass')\nconst EE = require('events')\nconst isStream = s => s && s instanceof EE && (\n  typeof s.pipe === 'function' || // readable\n  (typeof s.write === 'function' && typeof s.end === 'function') // writable\n)\n\nconst _head = Symbol('_head')\nconst _tail = Symbol('_tail')\nconst _linkStreams = Symbol('_linkStreams')\nconst _setHead = Symbol('_setHead')\nconst _setTail = Symbol('_setTail')\nconst _onError = Symbol('_onError')\nconst _onData = Symbol('_onData')\nconst _onEnd = Symbol('_onEnd')\nconst _onDrain = Symbol('_onDrain')\nconst _streams = Symbol('_streams')\nclass Pipeline extends Minipass {\n  constructor (opts, ...streams) {\n    if (isStream(opts)) {\n      streams.unshift(opts)\n      opts = {}\n    }\n\n    super(opts)\n    this[_streams] = []\n    if (streams.length)\n      this.push(...streams)\n  }\n\n  [_linkStreams] (streams) {\n    // reduce takes (left,right), and we return right to make it the\n    // new left value.\n    return streams.reduce((src, dest) => {\n      src.on('error', er => dest.emit('error', er))\n      src.pipe(dest)\n      return dest\n    })\n  }\n\n  push (...streams) {\n    this[_streams].push(...streams)\n    if (this[_tail])\n      streams.unshift(this[_tail])\n\n    const linkRet = this[_linkStreams](streams)\n\n    this[_setTail](linkRet)\n    if (!this[_head])\n      this[_setHead](streams[0])\n  }\n\n  unshift (...streams) {\n    this[_streams].unshift(...streams)\n    if (this[_head])\n      streams.push(this[_head])\n\n    const linkRet = this[_linkStreams](streams)\n    this[_setHead](streams[0])\n    if (!this[_tail])\n      this[_setTail](linkRet)\n  }\n\n  destroy (er) {\n    // set fire to the whole thing.\n    this[_streams].forEach(s =>\n      typeof s.destroy === 'function' && s.destroy())\n    return super.destroy(er)\n  }\n\n  // readable interface -> tail\n  [_setTail] (stream) {\n    this[_tail] = stream\n    stream.on('error', er => this[_onError](stream, er))\n    stream.on('data', chunk => this[_onData](stream, chunk))\n    stream.on('end', () => this[_onEnd](stream))\n    stream.on('finish', () => this[_onEnd](stream))\n  }\n\n  // errors proxied down the pipeline\n  // they're considered part of the \"read\" interface\n  [_onError] (stream, er) {\n    if (stream === this[_tail])\n      this.emit('error', er)\n  }\n  [_onData] (stream, chunk) {\n    if (stream === this[_tail])\n      super.write(chunk)\n  }\n  [_onEnd] (stream) {\n    if (stream === this[_tail])\n      super.end()\n  }\n  pause () {\n    super.pause()\n    return this[_tail] && this[_tail].pause && this[_tail].pause()\n  }\n\n  // NB: Minipass calls its internal private [RESUME] method during\n  // pipe drains, to avoid hazards where stream.resume() is overridden.\n  // Thus, we need to listen to the resume *event*, not override the\n  // resume() method, and proxy *that* to the tail.\n  emit (ev, ...args) {\n    if (ev === 'resume' && this[_tail] && this[_tail].resume)\n      this[_tail].resume()\n    return super.emit(ev, ...args)\n  }\n\n  // writable interface -> head\n  [_setHead] (stream) {\n    this[_head] = stream\n    stream.on('drain', () => this[_onDrain](stream))\n  }\n  [_onDrain] (stream) {\n    if (stream === this[_head])\n      this.emit('drain')\n  }\n  write (chunk, enc, cb) {\n    return this[_head].write(chunk, enc, cb) &&\n      (this.flowing || this.buffer.length === 0)\n  }\n  end (chunk, enc, cb) {\n    this[_head].end(chunk, enc, cb)\n    return this\n  }\n}\n\nmodule.exports = Pipeline\n", "/**\n * @preserve\n * JS Implementation of incremental MurmurHash3 (r150) (as of May 10, 2013)\n *\n * @author <a href=\"mailto:jensyt@gmail.com\">Jens Taylor</a>\n * @see http://github.com/homebrewing/brauhaus-diff\n * @author <a href=\"mailto:gary.court@gmail.com\">Gary Court</a>\n * @see http://github.com/garycourt/murmurhash-js\n * @author <a href=\"mailto:aappleby@gmail.com\">Austin Appleby</a>\n * @see http://sites.google.com/site/murmurhash/\n */\n(function(){\n    var cache;\n\n    // Call this function without `new` to use the cached object (good for\n    // single-threaded environments), or with `new` to create a new object.\n    //\n    // @param {string} key A UTF-16 or ASCII string\n    // @param {number} seed An optional positive integer\n    // @return {object} A MurmurHash3 object for incremental hashing\n    function MurmurHash3(key, seed) {\n        var m = this instanceof MurmurHash3 ? this : cache;\n        m.reset(seed)\n        if (typeof key === 'string' && key.length > 0) {\n            m.hash(key);\n        }\n\n        if (m !== this) {\n            return m;\n        }\n    };\n\n    // Incrementally add a string to this hash\n    //\n    // @param {string} key A UTF-16 or ASCII string\n    // @return {object} this\n    MurmurHash3.prototype.hash = function(key) {\n        var h1, k1, i, top, len;\n\n        len = key.length;\n        this.len += len;\n\n        k1 = this.k1;\n        i = 0;\n        switch (this.rem) {\n            case 0: k1 ^= len > i ? (key.charCodeAt(i++) & 0xffff) : 0;\n            case 1: k1 ^= len > i ? (key.charCodeAt(i++) & 0xffff) << 8 : 0;\n            case 2: k1 ^= len > i ? (key.charCodeAt(i++) & 0xffff) << 16 : 0;\n            case 3:\n                k1 ^= len > i ? (key.charCodeAt(i) & 0xff) << 24 : 0;\n                k1 ^= len > i ? (key.charCodeAt(i++) & 0xff00) >> 8 : 0;\n        }\n\n        this.rem = (len + this.rem) & 3; // & 3 is same as % 4\n        len -= this.rem;\n        if (len > 0) {\n            h1 = this.h1;\n            while (1) {\n                k1 = (k1 * 0x2d51 + (k1 & 0xffff) * 0xcc9e0000) & 0xffffffff;\n                k1 = (k1 << 15) | (k1 >>> 17);\n                k1 = (k1 * 0x3593 + (k1 & 0xffff) * 0x1b870000) & 0xffffffff;\n\n                h1 ^= k1;\n                h1 = (h1 << 13) | (h1 >>> 19);\n                h1 = (h1 * 5 + 0xe6546b64) & 0xffffffff;\n\n                if (i >= len) {\n                    break;\n                }\n\n                k1 = ((key.charCodeAt(i++) & 0xffff)) ^\n                     ((key.charCodeAt(i++) & 0xffff) << 8) ^\n                     ((key.charCodeAt(i++) & 0xffff) << 16);\n                top = key.charCodeAt(i++);\n                k1 ^= ((top & 0xff) << 24) ^\n                      ((top & 0xff00) >> 8);\n            }\n\n            k1 = 0;\n            switch (this.rem) {\n                case 3: k1 ^= (key.charCodeAt(i + 2) & 0xffff) << 16;\n                case 2: k1 ^= (key.charCodeAt(i + 1) & 0xffff) << 8;\n                case 1: k1 ^= (key.charCodeAt(i) & 0xffff);\n            }\n\n            this.h1 = h1;\n        }\n\n        this.k1 = k1;\n        return this;\n    };\n\n    // Get the result of this hash\n    //\n    // @return {number} The 32-bit hash\n    MurmurHash3.prototype.result = function() {\n        var k1, h1;\n        \n        k1 = this.k1;\n        h1 = this.h1;\n\n        if (k1 > 0) {\n            k1 = (k1 * 0x2d51 + (k1 & 0xffff) * 0xcc9e0000) & 0xffffffff;\n            k1 = (k1 << 15) | (k1 >>> 17);\n            k1 = (k1 * 0x3593 + (k1 & 0xffff) * 0x1b870000) & 0xffffffff;\n            h1 ^= k1;\n        }\n\n        h1 ^= this.len;\n\n        h1 ^= h1 >>> 16;\n        h1 = (h1 * 0xca6b + (h1 & 0xffff) * 0x85eb0000) & 0xffffffff;\n        h1 ^= h1 >>> 13;\n        h1 = (h1 * 0xae35 + (h1 & 0xffff) * 0xc2b20000) & 0xffffffff;\n        h1 ^= h1 >>> 16;\n\n        return h1 >>> 0;\n    };\n\n    // Reset the hash object for reuse\n    //\n    // @param {number} seed An optional positive integer\n    MurmurHash3.prototype.reset = function(seed) {\n        this.h1 = typeof seed === 'number' ? seed : 0;\n        this.rem = this.k1 = this.len = 0;\n        return this;\n    };\n\n    // A cached object to use. This can be safely used if you're in a single-\n    // threaded environment, otherwise you need to create new hashes to use.\n    cache = new MurmurHash3();\n\n    if (typeof(module) != 'undefined') {\n        module.exports = MurmurHash3;\n    } else {\n        this.MurmurHash3 = MurmurHash3;\n    }\n}());\n", "'use strict'\nvar MurmurHash3 = require('imurmurhash')\n\nmodule.exports = function (uniq) {\n  if (uniq) {\n    var hash = new MurmurHash3(uniq)\n    return ('00000000' + hash.result().toString(16)).slice(-8)\n  } else {\n    return (Math.random().toString(16) + '0000000').slice(2, 10)\n  }\n}\n", "var path = require('path')\n\nvar uniqueSlug = require('unique-slug')\n\nmodule.exports = function (filepath, prefix, uniq) {\n  return path.join(filepath, (prefix ? prefix + '-' : '') + uniqueSlug(uniq))\n}\n", "{\n  \"name\": \"cacache\",\n  \"version\": \"17.1.4\",\n  \"cache-version\": {\n    \"content\": \"2\",\n    \"index\": \"5\"\n  },\n  \"description\": \"Fast, fault-tolerant, cross-platform, disk-based, data-agnostic, content-addressable cache.\",\n  \"main\": \"lib/index.js\",\n  \"files\": [\n    \"bin/\",\n    \"lib/\"\n  ],\n  \"scripts\": {\n    \"test\": \"tap\",\n    \"snap\": \"tap\",\n    \"coverage\": \"tap\",\n    \"test-docker\": \"docker run -it --rm --name pacotest -v \\\"$PWD\\\":/tmp -w /tmp node:latest npm test\",\n    \"lint\": \"eslint \\\"**/*.js\\\"\",\n    \"npmclilint\": \"npmcli-lint\",\n    \"lintfix\": \"npm run lint -- --fix\",\n    \"postsnap\": \"npm run lintfix --\",\n    \"postlint\": \"template-oss-check\",\n    \"posttest\": \"npm run lint\",\n    \"template-oss-apply\": \"template-oss-apply --force\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/npm/cacache.git\"\n  },\n  \"keywords\": [\n    \"cache\",\n    \"caching\",\n    \"content-addressable\",\n    \"sri\",\n    \"sri hash\",\n    \"subresource integrity\",\n    \"cache\",\n    \"storage\",\n    \"store\",\n    \"file store\",\n    \"filesystem\",\n    \"disk cache\",\n    \"disk storage\"\n  ],\n  \"license\": \"ISC\",\n  \"dependencies\": {\n    \"@npmcli/fs\": \"^3.1.0\",\n    \"fs-minipass\": \"^3.0.0\",\n    \"glob\": \"^10.2.2\",\n    \"lru-cache\": \"^7.7.1\",\n    \"minipass\": \"^7.0.3\",\n    \"minipass-collect\": \"^1.0.2\",\n    \"minipass-flush\": \"^1.0.5\",\n    \"minipass-pipeline\": \"^1.2.4\",\n    \"p-map\": \"^4.0.0\",\n    \"ssri\": \"^10.0.0\",\n    \"tar\": \"^6.1.11\",\n    \"unique-filename\": \"^3.0.0\"\n  },\n  \"devDependencies\": {\n    \"@npmcli/eslint-config\": \"^4.0.0\",\n    \"@npmcli/template-oss\": \"4.18.0\",\n    \"tap\": \"^16.0.0\"\n  },\n  \"engines\": {\n    \"node\": \"^14.17.0 || ^16.13.0 || >=18.0.0\"\n  },\n  \"templateOSS\": {\n    \"//@npmcli/template-oss\": \"This file is partially managed by @npmcli/template-oss. Edits may be overwritten.\",\n    \"windowsCI\": false,\n    \"version\": \"4.18.0\",\n    \"publish\": \"true\"\n  },\n  \"author\": \"GitHub Inc.\",\n  \"tap\": {\n    \"nyc-arg\": [\n      \"--exclude\",\n      \"tap-snapshots/**\"\n    ]\n  }\n}\n", "'use strict'\n\nmodule.exports = hashToSegments\n\nfunction hashToSegments (hash) {\n  return [hash.slice(0, 2), hash.slice(2, 4), hash.slice(4)]\n}\n", "'use strict'\n\nconst contentVer = require('../../package.json')['cache-version'].content\nconst hashToSegments = require('../util/hash-to-segments')\nconst path = require('path')\nconst ssri = require('ssri')\n\n// Current format of content file path:\n//\n// sha512-BaSE64Hex= ->\n// ~/.my-cache/content-v2/sha512/ba/da/55deadbeefc0ffee\n//\nmodule.exports = contentPath\n\nfunction contentPath (cache, integrity) {\n  const sri = ssri.parse(integrity, { single: true })\n  // contentPath is the *strongest* algo given\n  return path.join(\n    contentDir(cache),\n    sri.algorithm,\n    ...hashToSegments(sri.hexDigest())\n  )\n}\n\nmodule.exports.contentDir = contentDir\n\nfunction contentDir (cache) {\n  return path.join(cache, `content-v${contentVer}`)\n}\n", "// given an input that may or may not be an object, return an object that has\n// a copy of every defined property listed in 'copy'. if the input is not an\n// object, assign it to the property named by 'wrap'\nconst getOptions = (input, { copy, wrap }) => {\n  const result = {}\n\n  if (input && typeof input === 'object') {\n    for (const prop of copy) {\n      if (input[prop] !== undefined) {\n        result[prop] = input[prop]\n      }\n    }\n  } else {\n    result[wrap] = input\n  }\n\n  return result\n}\n\nmodule.exports = getOptions\n", "'use strict'\n\n// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n  'major',\n  'premajor',\n  'minor',\n  'preminor',\n  'patch',\n  'prepatch',\n  'prerelease',\n]\n\nmodule.exports = {\n  MAX_LENGTH,\n  MAX_SAFE_COMPONENT_LENGTH,\n  MAX_SAFE_BUILD_LENGTH,\n  MAX_SAFE_INTEGER,\n  RELEASE_TYPES,\n  SEMVER_SPEC_VERSION,\n  FLAG_INCLUDE_PRERELEASE: 0b001,\n  FLAG_LOOSE: 0b010,\n}\n", "'use strict'\n\nconst debug = (\n  typeof process === 'object' &&\n  process.env &&\n  process.env.NODE_DEBUG &&\n  /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n  : () => {}\n\nmodule.exports = debug\n", "'use strict'\n\nconst {\n  MAX_SAFE_COMPONENT_LENGTH,\n  MAX_SAFE_BUILD_LENGTH,\n  MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst safeSrc = exports.safeSrc = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n  ['\\\\s', 1],\n  ['\\\\d', MAX_LENGTH],\n  [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n  for (const [token, max] of safeRegexReplacements) {\n    value = value\n      .split(`${token}*`).join(`${token}{0,${max}}`)\n      .split(`${token}+`).join(`${token}{1,${max}}`)\n  }\n  return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n  const safe = makeSafeRegex(value)\n  const index = R++\n  debug(name, index, value)\n  t[name] = index\n  src[index] = value\n  safeSrc[index] = safe\n  re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n  safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n                   `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n                   `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n                        `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n                        `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n// Non-numberic identifiers include numberic identifiers but can be longer.\n// Therefore non-numberic identifiers must go first.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NONNUMERICIDENTIFIER]\n}|${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups.  The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n  src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n  src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n                   `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n                   `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n                   `(?:${src[t.PRERELEASE]})?${\n                     src[t.BUILD]}?` +\n                   `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n                        `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n                        `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n                        `(?:${src[t.PRERELEASELOOSE]})?${\n                          src[t.BUILD]}?` +\n                        `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n              '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n              `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n              `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n              `(?:${src[t.PRERELEASE]})?` +\n              `(?:${src[t.BUILD]})?` +\n              `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n                   `\\\\s+-\\\\s+` +\n                   `(${src[t.XRANGEPLAIN]})` +\n                   `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n                        `\\\\s+-\\\\s+` +\n                        `(${src[t.XRANGEPLAINLOOSE]})` +\n                        `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n", "'use strict'\n\n// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n  if (!options) {\n    return emptyOpts\n  }\n\n  if (typeof options !== 'object') {\n    return looseOption\n  }\n\n  return options\n}\nmodule.exports = parseOptions\n", "'use strict'\n\nconst numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n  if (typeof a === 'number' && typeof b === 'number') {\n    return a === b ? 0 : a < b ? -1 : 1\n  }\n\n  const anum = numeric.test(a)\n  const bnum = numeric.test(b)\n\n  if (anum && bnum) {\n    a = +a\n    b = +b\n  }\n\n  return a === b ? 0\n    : (anum && !bnum) ? -1\n    : (bnum && !anum) ? 1\n    : a < b ? -1\n    : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n  compareIdentifiers,\n  rcompareIdentifiers,\n}\n", "'use strict'\n\nconst debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n  constructor (version, options) {\n    options = parseOptions(options)\n\n    if (version instanceof SemVer) {\n      if (version.loose === !!options.loose &&\n        version.includePrerelease === !!options.includePrerelease) {\n        return version\n      } else {\n        version = version.version\n      }\n    } else if (typeof version !== 'string') {\n      throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n    }\n\n    if (version.length > MAX_LENGTH) {\n      throw new TypeError(\n        `version is longer than ${MAX_LENGTH} characters`\n      )\n    }\n\n    debug('SemVer', version, options)\n    this.options = options\n    this.loose = !!options.loose\n    // this isn't actually relevant for versions, but keep it so that we\n    // don't run into trouble passing this.options around.\n    this.includePrerelease = !!options.includePrerelease\n\n    const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n    if (!m) {\n      throw new TypeError(`Invalid Version: ${version}`)\n    }\n\n    this.raw = version\n\n    // these are actually numbers\n    this.major = +m[1]\n    this.minor = +m[2]\n    this.patch = +m[3]\n\n    if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n      throw new TypeError('Invalid major version')\n    }\n\n    if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n      throw new TypeError('Invalid minor version')\n    }\n\n    if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n      throw new TypeError('Invalid patch version')\n    }\n\n    // numberify any prerelease numeric ids\n    if (!m[4]) {\n      this.prerelease = []\n    } else {\n      this.prerelease = m[4].split('.').map((id) => {\n        if (/^[0-9]+$/.test(id)) {\n          const num = +id\n          if (num >= 0 && num < MAX_SAFE_INTEGER) {\n            return num\n          }\n        }\n        return id\n      })\n    }\n\n    this.build = m[5] ? m[5].split('.') : []\n    this.format()\n  }\n\n  format () {\n    this.version = `${this.major}.${this.minor}.${this.patch}`\n    if (this.prerelease.length) {\n      this.version += `-${this.prerelease.join('.')}`\n    }\n    return this.version\n  }\n\n  toString () {\n    return this.version\n  }\n\n  compare (other) {\n    debug('SemVer.compare', this.version, this.options, other)\n    if (!(other instanceof SemVer)) {\n      if (typeof other === 'string' && other === this.version) {\n        return 0\n      }\n      other = new SemVer(other, this.options)\n    }\n\n    if (other.version === this.version) {\n      return 0\n    }\n\n    return this.compareMain(other) || this.comparePre(other)\n  }\n\n  compareMain (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    if (this.major < other.major) {\n      return -1\n    }\n    if (this.major > other.major) {\n      return 1\n    }\n    if (this.minor < other.minor) {\n      return -1\n    }\n    if (this.minor > other.minor) {\n      return 1\n    }\n    if (this.patch < other.patch) {\n      return -1\n    }\n    if (this.patch > other.patch) {\n      return 1\n    }\n    return 0\n  }\n\n  comparePre (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    // NOT having a prerelease is > having one\n    if (this.prerelease.length && !other.prerelease.length) {\n      return -1\n    } else if (!this.prerelease.length && other.prerelease.length) {\n      return 1\n    } else if (!this.prerelease.length && !other.prerelease.length) {\n      return 0\n    }\n\n    let i = 0\n    do {\n      const a = this.prerelease[i]\n      const b = other.prerelease[i]\n      debug('prerelease compare', i, a, b)\n      if (a === undefined && b === undefined) {\n        return 0\n      } else if (b === undefined) {\n        return 1\n      } else if (a === undefined) {\n        return -1\n      } else if (a === b) {\n        continue\n      } else {\n        return compareIdentifiers(a, b)\n      }\n    } while (++i)\n  }\n\n  compareBuild (other) {\n    if (!(other instanceof SemVer)) {\n      other = new SemVer(other, this.options)\n    }\n\n    let i = 0\n    do {\n      const a = this.build[i]\n      const b = other.build[i]\n      debug('build compare', i, a, b)\n      if (a === undefined && b === undefined) {\n        return 0\n      } else if (b === undefined) {\n        return 1\n      } else if (a === undefined) {\n        return -1\n      } else if (a === b) {\n        continue\n      } else {\n        return compareIdentifiers(a, b)\n      }\n    } while (++i)\n  }\n\n  // preminor will bump the version up to the next minor release, and immediately\n  // down to pre-release. premajor and prepatch work the same way.\n  inc (release, identifier, identifierBase) {\n    if (release.startsWith('pre')) {\n      if (!identifier && identifierBase === false) {\n        throw new Error('invalid increment argument: identifier is empty')\n      }\n      // Avoid an invalid semver results\n      if (identifier) {\n        const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE])\n        if (!match || match[1] !== identifier) {\n          throw new Error(`invalid identifier: ${identifier}`)\n        }\n      }\n    }\n\n    switch (release) {\n      case 'premajor':\n        this.prerelease.length = 0\n        this.patch = 0\n        this.minor = 0\n        this.major++\n        this.inc('pre', identifier, identifierBase)\n        break\n      case 'preminor':\n        this.prerelease.length = 0\n        this.patch = 0\n        this.minor++\n        this.inc('pre', identifier, identifierBase)\n        break\n      case 'prepatch':\n        // If this is already a prerelease, it will bump to the next version\n        // drop any prereleases that might already exist, since they are not\n        // relevant at this point.\n        this.prerelease.length = 0\n        this.inc('patch', identifier, identifierBase)\n        this.inc('pre', identifier, identifierBase)\n        break\n      // If the input is a non-prerelease version, this acts the same as\n      // prepatch.\n      case 'prerelease':\n        if (this.prerelease.length === 0) {\n          this.inc('patch', identifier, identifierBase)\n        }\n        this.inc('pre', identifier, identifierBase)\n        break\n      case 'release':\n        if (this.prerelease.length === 0) {\n          throw new Error(`version ${this.raw} is not a prerelease`)\n        }\n        this.prerelease.length = 0\n        break\n\n      case 'major':\n        // If this is a pre-major version, bump up to the same major version.\n        // Otherwise increment major.\n        // 1.0.0-5 bumps to 1.0.0\n        // 1.1.0 bumps to 2.0.0\n        if (\n          this.minor !== 0 ||\n          this.patch !== 0 ||\n          this.prerelease.length === 0\n        ) {\n          this.major++\n        }\n        this.minor = 0\n        this.patch = 0\n        this.prerelease = []\n        break\n      case 'minor':\n        // If this is a pre-minor version, bump up to the same minor version.\n        // Otherwise increment minor.\n        // 1.2.0-5 bumps to 1.2.0\n        // 1.2.1 bumps to 1.3.0\n        if (this.patch !== 0 || this.prerelease.length === 0) {\n          this.minor++\n        }\n        this.patch = 0\n        this.prerelease = []\n        break\n      case 'patch':\n        // If this is not a pre-release version, it will increment the patch.\n        // If it is a pre-release it will bump up to the same patch version.\n        // 1.2.0-5 patches to 1.2.0\n        // 1.2.0 patches to 1.2.1\n        if (this.prerelease.length === 0) {\n          this.patch++\n        }\n        this.prerelease = []\n        break\n      // This probably shouldn't be used publicly.\n      // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n      case 'pre': {\n        const base = Number(identifierBase) ? 1 : 0\n\n        if (this.prerelease.length === 0) {\n          this.prerelease = [base]\n        } else {\n          let i = this.prerelease.length\n          while (--i >= 0) {\n            if (typeof this.prerelease[i] === 'number') {\n              this.prerelease[i]++\n              i = -2\n            }\n          }\n          if (i === -1) {\n            // didn't increment anything\n            if (identifier === this.prerelease.join('.') && identifierBase === false) {\n              throw new Error('invalid increment argument: identifier already exists')\n            }\n            this.prerelease.push(base)\n          }\n        }\n        if (identifier) {\n          // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n          // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n          let prerelease = [identifier, base]\n          if (identifierBase === false) {\n            prerelease = [identifier]\n          }\n          if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n            if (isNaN(this.prerelease[1])) {\n              this.prerelease = prerelease\n            }\n          } else {\n            this.prerelease = prerelease\n          }\n        }\n        break\n      }\n      default:\n        throw new Error(`invalid increment argument: ${release}`)\n    }\n    this.raw = this.format()\n    if (this.build.length) {\n      this.raw += `+${this.build.join('.')}`\n    }\n    return this\n  }\n}\n\nmodule.exports = SemVer\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n  if (version instanceof SemVer) {\n    return version\n  }\n  try {\n    return new SemVer(version, options)\n  } catch (er) {\n    if (!throwErrors) {\n      return null\n    }\n    throw er\n  }\n}\n\nmodule.exports = parse\n", "'use strict'\n\nconst parse = require('./parse')\nconst valid = (version, options) => {\n  const v = parse(version, options)\n  return v ? v.version : null\n}\nmodule.exports = valid\n", "'use strict'\n\nconst parse = require('./parse')\nconst clean = (version, options) => {\n  const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n  return s ? s.version : null\n}\nmodule.exports = clean\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n  if (typeof (options) === 'string') {\n    identifierBase = identifier\n    identifier = options\n    options = undefined\n  }\n\n  try {\n    return new SemVer(\n      version instanceof SemVer ? version.version : version,\n      options\n    ).inc(release, identifier, identifierBase).version\n  } catch (er) {\n    return null\n  }\n}\nmodule.exports = inc\n", "'use strict'\n\nconst parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n  const v1 = parse(version1, null, true)\n  const v2 = parse(version2, null, true)\n  const comparison = v1.compare(v2)\n\n  if (comparison === 0) {\n    return null\n  }\n\n  const v1Higher = comparison > 0\n  const highVersion = v1Higher ? v1 : v2\n  const lowVersion = v1Higher ? v2 : v1\n  const highHasPre = !!highVersion.prerelease.length\n  const lowHasPre = !!lowVersion.prerelease.length\n\n  if (lowHasPre && !highHasPre) {\n    // Going from prerelease -> no prerelease requires some special casing\n\n    // If the low version has only a major, then it will always be a major\n    // Some examples:\n    // 1.0.0-1 -> 1.0.0\n    // 1.0.0-1 -> 1.1.1\n    // 1.0.0-1 -> 2.0.0\n    if (!lowVersion.patch && !lowVersion.minor) {\n      return 'major'\n    }\n\n    // If the main part has no difference\n    if (lowVersion.compareMain(highVersion) === 0) {\n      if (lowVersion.minor && !lowVersion.patch) {\n        return 'minor'\n      }\n      return 'patch'\n    }\n  }\n\n  // add the `pre` prefix if we are going to a prerelease version\n  const prefix = highHasPre ? 'pre' : ''\n\n  if (v1.major !== v2.major) {\n    return prefix + 'major'\n  }\n\n  if (v1.minor !== v2.minor) {\n    return prefix + 'minor'\n  }\n\n  if (v1.patch !== v2.patch) {\n    return prefix + 'patch'\n  }\n\n  // high and low are preleases\n  return 'prerelease'\n}\n\nmodule.exports = diff\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n", "'use strict'\n\nconst parse = require('./parse')\nconst prerelease = (version, options) => {\n  const parsed = parse(version, options)\n  return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n  new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n", "'use strict'\n\nconst compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n", "'use strict'\n\nconst compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n  const versionA = new SemVer(a, loose)\n  const versionB = new SemVer(b, loose)\n  return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n", "'use strict'\n\nconst compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n", "'use strict'\n\nconst compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n", "'use strict'\n\nconst compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n", "'use strict'\n\nconst compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n", "'use strict'\n\nconst compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n", "'use strict'\n\nconst compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n", "'use strict'\n\nconst compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n", "'use strict'\n\nconst compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n", "'use strict'\n\nconst eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n  switch (op) {\n    case '===':\n      if (typeof a === 'object') {\n        a = a.version\n      }\n      if (typeof b === 'object') {\n        b = b.version\n      }\n      return a === b\n\n    case '!==':\n      if (typeof a === 'object') {\n        a = a.version\n      }\n      if (typeof b === 'object') {\n        b = b.version\n      }\n      return a !== b\n\n    case '':\n    case '=':\n    case '==':\n      return eq(a, b, loose)\n\n    case '!=':\n      return neq(a, b, loose)\n\n    case '>':\n      return gt(a, b, loose)\n\n    case '>=':\n      return gte(a, b, loose)\n\n    case '<':\n      return lt(a, b, loose)\n\n    case '<=':\n      return lte(a, b, loose)\n\n    default:\n      throw new TypeError(`Invalid operator: ${op}`)\n  }\n}\nmodule.exports = cmp\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n  if (version instanceof SemVer) {\n    return version\n  }\n\n  if (typeof version === 'number') {\n    version = String(version)\n  }\n\n  if (typeof version !== 'string') {\n    return null\n  }\n\n  options = options || {}\n\n  let match = null\n  if (!options.rtl) {\n    match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE])\n  } else {\n    // Find the right-most coercible string that does not share\n    // a terminus with a more left-ward coercible string.\n    // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n    // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4'\n    //\n    // Walk through the string checking with a /g regexp\n    // Manually set the index so as to pick up overlapping matches.\n    // Stop when we get a match that ends at the string end, since no\n    // coercible string can be more right-ward without the same terminus.\n    const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]\n    let next\n    while ((next = coerceRtlRegex.exec(version)) &&\n        (!match || match.index + match[0].length !== version.length)\n    ) {\n      if (!match ||\n            next.index + next[0].length !== match.index + match[0].length) {\n        match = next\n      }\n      coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length\n    }\n    // leave it in a clean state\n    coerceRtlRegex.lastIndex = -1\n  }\n\n  if (match === null) {\n    return null\n  }\n\n  const major = match[2]\n  const minor = match[3] || '0'\n  const patch = match[4] || '0'\n  const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''\n  const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''\n\n  return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options)\n}\nmodule.exports = coerce\n", "'use strict'\n\nclass LRUCache {\n  constructor () {\n    this.max = 1000\n    this.map = new Map()\n  }\n\n  get (key) {\n    const value = this.map.get(key)\n    if (value === undefined) {\n      return undefined\n    } else {\n      // Remove the key from the map and add it to the end\n      this.map.delete(key)\n      this.map.set(key, value)\n      return value\n    }\n  }\n\n  delete (key) {\n    return this.map.delete(key)\n  }\n\n  set (key, value) {\n    const deleted = this.delete(key)\n\n    if (!deleted && value !== undefined) {\n      // If cache is full, delete the least recently used item\n      if (this.map.size >= this.max) {\n        const firstKey = this.map.keys().next().value\n        this.delete(firstKey)\n      }\n\n      this.map.set(key, value)\n    }\n\n    return this\n  }\n}\n\nmodule.exports = LRUCache\n", "'use strict'\n\nconst SPACE_CHARACTERS = /\\s+/g\n\n// hoisted class for cyclic dependency\nclass Range {\n  constructor (range, options) {\n    options = parseOptions(options)\n\n    if (range instanceof Range) {\n      if (\n        range.loose === !!options.loose &&\n        range.includePrerelease === !!options.includePrerelease\n      ) {\n        return range\n      } else {\n        return new Range(range.raw, options)\n      }\n    }\n\n    if (range instanceof Comparator) {\n      // just put it in the set and return\n      this.raw = range.value\n      this.set = [[range]]\n      this.formatted = undefined\n      return this\n    }\n\n    this.options = options\n    this.loose = !!options.loose\n    this.includePrerelease = !!options.includePrerelease\n\n    // First reduce all whitespace as much as possible so we do not have to rely\n    // on potentially slow regexes like \\s*. This is then stored and used for\n    // future error messages as well.\n    this.raw = range.trim().replace(SPACE_CHARACTERS, ' ')\n\n    // First, split on ||\n    this.set = this.raw\n      .split('||')\n      // map the range to a 2d array of comparators\n      .map(r => this.parseRange(r.trim()))\n      // throw out any comparator lists that are empty\n      // this generally means that it was not a valid range, which is allowed\n      // in loose mode, but will still throw if the WHOLE range is invalid.\n      .filter(c => c.length)\n\n    if (!this.set.length) {\n      throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n    }\n\n    // if we have any that are not the null set, throw out null sets.\n    if (this.set.length > 1) {\n      // keep the first one, in case they're all null sets\n      const first = this.set[0]\n      this.set = this.set.filter(c => !isNullSet(c[0]))\n      if (this.set.length === 0) {\n        this.set = [first]\n      } else if (this.set.length > 1) {\n        // if we have any that are *, then the range is just *\n        for (const c of this.set) {\n          if (c.length === 1 && isAny(c[0])) {\n            this.set = [c]\n            break\n          }\n        }\n      }\n    }\n\n    this.formatted = undefined\n  }\n\n  get range () {\n    if (this.formatted === undefined) {\n      this.formatted = ''\n      for (let i = 0; i < this.set.length; i++) {\n        if (i > 0) {\n          this.formatted += '||'\n        }\n        const comps = this.set[i]\n        for (let k = 0; k < comps.length; k++) {\n          if (k > 0) {\n            this.formatted += ' '\n          }\n          this.formatted += comps[k].toString().trim()\n        }\n      }\n    }\n    return this.formatted\n  }\n\n  format () {\n    return this.range\n  }\n\n  toString () {\n    return this.range\n  }\n\n  parseRange (range) {\n    // memoize range parsing for performance.\n    // this is a very hot path, and fully deterministic.\n    const memoOpts =\n      (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n      (this.options.loose && FLAG_LOOSE)\n    const memoKey = memoOpts + ':' + range\n    const cached = cache.get(memoKey)\n    if (cached) {\n      return cached\n    }\n\n    const loose = this.options.loose\n    // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n    const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n    range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n    debug('hyphen replace', range)\n\n    // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n    range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n    debug('comparator trim', range)\n\n    // `~ 1.2.3` => `~1.2.3`\n    range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n    debug('tilde trim', range)\n\n    // `^ 1.2.3` => `^1.2.3`\n    range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n    debug('caret trim', range)\n\n    // At this point, the range is completely trimmed and\n    // ready to be split into comparators.\n\n    let rangeList = range\n      .split(' ')\n      .map(comp => parseComparator(comp, this.options))\n      .join(' ')\n      .split(/\\s+/)\n      // >=0.0.0 is equivalent to *\n      .map(comp => replaceGTE0(comp, this.options))\n\n    if (loose) {\n      // in loose mode, throw out any that are not valid comparators\n      rangeList = rangeList.filter(comp => {\n        debug('loose invalid filter', comp, this.options)\n        return !!comp.match(re[t.COMPARATORLOOSE])\n      })\n    }\n    debug('range list', rangeList)\n\n    // if any comparators are the null set, then replace with JUST null set\n    // if more than one comparator, remove any * comparators\n    // also, don't include the same comparator more than once\n    const rangeMap = new Map()\n    const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n    for (const comp of comparators) {\n      if (isNullSet(comp)) {\n        return [comp]\n      }\n      rangeMap.set(comp.value, comp)\n    }\n    if (rangeMap.size > 1 && rangeMap.has('')) {\n      rangeMap.delete('')\n    }\n\n    const result = [...rangeMap.values()]\n    cache.set(memoKey, result)\n    return result\n  }\n\n  intersects (range, options) {\n    if (!(range instanceof Range)) {\n      throw new TypeError('a Range is required')\n    }\n\n    return this.set.some((thisComparators) => {\n      return (\n        isSatisfiable(thisComparators, options) &&\n        range.set.some((rangeComparators) => {\n          return (\n            isSatisfiable(rangeComparators, options) &&\n            thisComparators.every((thisComparator) => {\n              return rangeComparators.every((rangeComparator) => {\n                return thisComparator.intersects(rangeComparator, options)\n              })\n            })\n          )\n        })\n      )\n    })\n  }\n\n  // if ANY of the sets match ALL of its comparators, then pass\n  test (version) {\n    if (!version) {\n      return false\n    }\n\n    if (typeof version === 'string') {\n      try {\n        version = new SemVer(version, this.options)\n      } catch (er) {\n        return false\n      }\n    }\n\n    for (let i = 0; i < this.set.length; i++) {\n      if (testSet(this.set[i], version, this.options)) {\n        return true\n      }\n    }\n    return false\n  }\n}\n\nmodule.exports = Range\n\nconst LRU = require('../internal/lrucache')\nconst cache = new LRU()\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n  safeRe: re,\n  t,\n  comparatorTrimReplace,\n  tildeTrimReplace,\n  caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n  let result = true\n  const remainingComparators = comparators.slice()\n  let testComparator = remainingComparators.pop()\n\n  while (result && remainingComparators.length) {\n    result = remainingComparators.every((otherComparator) => {\n      return testComparator.intersects(otherComparator, options)\n    })\n\n    testComparator = remainingComparators.pop()\n  }\n\n  return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n  comp = comp.replace(re[t.BUILD], '')\n  debug('comp', comp, options)\n  comp = replaceCarets(comp, options)\n  debug('caret', comp)\n  comp = replaceTildes(comp, options)\n  debug('tildes', comp)\n  comp = replaceXRanges(comp, options)\n  debug('xrange', comp)\n  comp = replaceStars(comp, options)\n  debug('stars', comp)\n  return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n  return comp\n    .trim()\n    .split(/\\s+/)\n    .map((c) => replaceTilde(c, options))\n    .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n  const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n  return comp.replace(r, (_, M, m, p, pr) => {\n    debug('tilde', comp, _, M, m, p, pr)\n    let ret\n\n    if (isX(M)) {\n      ret = ''\n    } else if (isX(m)) {\n      ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n    } else if (isX(p)) {\n      // ~1.2 == >=1.2.0 <1.3.0-0\n      ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n    } else if (pr) {\n      debug('replaceTilde pr', pr)\n      ret = `>=${M}.${m}.${p}-${pr\n      } <${M}.${+m + 1}.0-0`\n    } else {\n      // ~1.2.3 == >=1.2.3 <1.3.0-0\n      ret = `>=${M}.${m}.${p\n      } <${M}.${+m + 1}.0-0`\n    }\n\n    debug('tilde return', ret)\n    return ret\n  })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n  return comp\n    .trim()\n    .split(/\\s+/)\n    .map((c) => replaceCaret(c, options))\n    .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n  debug('caret', comp, options)\n  const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n  const z = options.includePrerelease ? '-0' : ''\n  return comp.replace(r, (_, M, m, p, pr) => {\n    debug('caret', comp, _, M, m, p, pr)\n    let ret\n\n    if (isX(M)) {\n      ret = ''\n    } else if (isX(m)) {\n      ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n    } else if (isX(p)) {\n      if (M === '0') {\n        ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n      } else {\n        ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n      }\n    } else if (pr) {\n      debug('replaceCaret pr', pr)\n      if (M === '0') {\n        if (m === '0') {\n          ret = `>=${M}.${m}.${p}-${pr\n          } <${M}.${m}.${+p + 1}-0`\n        } else {\n          ret = `>=${M}.${m}.${p}-${pr\n          } <${M}.${+m + 1}.0-0`\n        }\n      } else {\n        ret = `>=${M}.${m}.${p}-${pr\n        } <${+M + 1}.0.0-0`\n      }\n    } else {\n      debug('no pr')\n      if (M === '0') {\n        if (m === '0') {\n          ret = `>=${M}.${m}.${p\n          }${z} <${M}.${m}.${+p + 1}-0`\n        } else {\n          ret = `>=${M}.${m}.${p\n          }${z} <${M}.${+m + 1}.0-0`\n        }\n      } else {\n        ret = `>=${M}.${m}.${p\n        } <${+M + 1}.0.0-0`\n      }\n    }\n\n    debug('caret return', ret)\n    return ret\n  })\n}\n\nconst replaceXRanges = (comp, options) => {\n  debug('replaceXRanges', comp, options)\n  return comp\n    .split(/\\s+/)\n    .map((c) => replaceXRange(c, options))\n    .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n  comp = comp.trim()\n  const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n  return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n    debug('xRange', comp, ret, gtlt, M, m, p, pr)\n    const xM = isX(M)\n    const xm = xM || isX(m)\n    const xp = xm || isX(p)\n    const anyX = xp\n\n    if (gtlt === '=' && anyX) {\n      gtlt = ''\n    }\n\n    // if we're including prereleases in the match, then we need\n    // to fix this to -0, the lowest possible prerelease value\n    pr = options.includePrerelease ? '-0' : ''\n\n    if (xM) {\n      if (gtlt === '>' || gtlt === '<') {\n        // nothing is allowed\n        ret = '<0.0.0-0'\n      } else {\n        // nothing is forbidden\n        ret = '*'\n      }\n    } else if (gtlt && anyX) {\n      // we know patch is an x, because we have any x at all.\n      // replace X with 0\n      if (xm) {\n        m = 0\n      }\n      p = 0\n\n      if (gtlt === '>') {\n        // >1 => >=2.0.0\n        // >1.2 => >=1.3.0\n        gtlt = '>='\n        if (xm) {\n          M = +M + 1\n          m = 0\n          p = 0\n        } else {\n          m = +m + 1\n          p = 0\n        }\n      } else if (gtlt === '<=') {\n        // <=0.7.x is actually <0.8.0, since any 0.7.x should\n        // pass.  Similarly, <=7.x is actually <8.0.0, etc.\n        gtlt = '<'\n        if (xm) {\n          M = +M + 1\n        } else {\n          m = +m + 1\n        }\n      }\n\n      if (gtlt === '<') {\n        pr = '-0'\n      }\n\n      ret = `${gtlt + M}.${m}.${p}${pr}`\n    } else if (xm) {\n      ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n    } else if (xp) {\n      ret = `>=${M}.${m}.0${pr\n      } <${M}.${+m + 1}.0-0`\n    }\n\n    debug('xRange return', ret)\n\n    return ret\n  })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n  debug('replaceStars', comp, options)\n  // Looseness is ignored here.  star is always as loose as it gets!\n  return comp\n    .trim()\n    .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n  debug('replaceGTE0', comp, options)\n  return comp\n    .trim()\n    .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n// TODO build?\nconst hyphenReplace = incPr => ($0,\n  from, fM, fm, fp, fpr, fb,\n  to, tM, tm, tp, tpr) => {\n  if (isX(fM)) {\n    from = ''\n  } else if (isX(fm)) {\n    from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n  } else if (isX(fp)) {\n    from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n  } else if (fpr) {\n    from = `>=${from}`\n  } else {\n    from = `>=${from}${incPr ? '-0' : ''}`\n  }\n\n  if (isX(tM)) {\n    to = ''\n  } else if (isX(tm)) {\n    to = `<${+tM + 1}.0.0-0`\n  } else if (isX(tp)) {\n    to = `<${tM}.${+tm + 1}.0-0`\n  } else if (tpr) {\n    to = `<=${tM}.${tm}.${tp}-${tpr}`\n  } else if (incPr) {\n    to = `<${tM}.${tm}.${+tp + 1}-0`\n  } else {\n    to = `<=${to}`\n  }\n\n  return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n  for (let i = 0; i < set.length; i++) {\n    if (!set[i].test(version)) {\n      return false\n    }\n  }\n\n  if (version.prerelease.length && !options.includePrerelease) {\n    // Find the set of versions that are allowed to have prereleases\n    // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n    // That should allow `1.2.3-pr.2` to pass.\n    // However, `1.2.4-alpha.notready` should NOT be allowed,\n    // even though it's within the range set by the comparators.\n    for (let i = 0; i < set.length; i++) {\n      debug(set[i].semver)\n      if (set[i].semver === Comparator.ANY) {\n        continue\n      }\n\n      if (set[i].semver.prerelease.length > 0) {\n        const allowed = set[i].semver\n        if (allowed.major === version.major &&\n            allowed.minor === version.minor &&\n            allowed.patch === version.patch) {\n          return true\n        }\n      }\n    }\n\n    // Version has a -pre, but it's not one of the ones we like.\n    return false\n  }\n\n  return true\n}\n", "'use strict'\n\nconst ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n  static get ANY () {\n    return ANY\n  }\n\n  constructor (comp, options) {\n    options = parseOptions(options)\n\n    if (comp instanceof Comparator) {\n      if (comp.loose === !!options.loose) {\n        return comp\n      } else {\n        comp = comp.value\n      }\n    }\n\n    comp = comp.trim().split(/\\s+/).join(' ')\n    debug('comparator', comp, options)\n    this.options = options\n    this.loose = !!options.loose\n    this.parse(comp)\n\n    if (this.semver === ANY) {\n      this.value = ''\n    } else {\n      this.value = this.operator + this.semver.version\n    }\n\n    debug('comp', this)\n  }\n\n  parse (comp) {\n    const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n    const m = comp.match(r)\n\n    if (!m) {\n      throw new TypeError(`Invalid comparator: ${comp}`)\n    }\n\n    this.operator = m[1] !== undefined ? m[1] : ''\n    if (this.operator === '=') {\n      this.operator = ''\n    }\n\n    // if it literally is just '>' or '' then allow anything.\n    if (!m[2]) {\n      this.semver = ANY\n    } else {\n      this.semver = new SemVer(m[2], this.options.loose)\n    }\n  }\n\n  toString () {\n    return this.value\n  }\n\n  test (version) {\n    debug('Comparator.test', version, this.options.loose)\n\n    if (this.semver === ANY || version === ANY) {\n      return true\n    }\n\n    if (typeof version === 'string') {\n      try {\n        version = new SemVer(version, this.options)\n      } catch (er) {\n        return false\n      }\n    }\n\n    return cmp(version, this.operator, this.semver, this.options)\n  }\n\n  intersects (comp, options) {\n    if (!(comp instanceof Comparator)) {\n      throw new TypeError('a Comparator is required')\n    }\n\n    if (this.operator === '') {\n      if (this.value === '') {\n        return true\n      }\n      return new Range(comp.value, options).test(this.value)\n    } else if (comp.operator === '') {\n      if (comp.value === '') {\n        return true\n      }\n      return new Range(this.value, options).test(comp.semver)\n    }\n\n    options = parseOptions(options)\n\n    // Special cases where nothing can possibly be lower\n    if (options.includePrerelease &&\n      (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n      return false\n    }\n    if (!options.includePrerelease &&\n      (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n      return false\n    }\n\n    // Same direction increasing (> or >=)\n    if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n      return true\n    }\n    // Same direction decreasing (< or <=)\n    if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n      return true\n    }\n    // same SemVer and both sides are inclusive (<= or >=)\n    if (\n      (this.semver.version === comp.semver.version) &&\n      this.operator.includes('=') && comp.operator.includes('=')) {\n      return true\n    }\n    // opposite directions less than\n    if (cmp(this.semver, '<', comp.semver, options) &&\n      this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n      return true\n    }\n    // opposite directions greater than\n    if (cmp(this.semver, '>', comp.semver, options) &&\n      this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n      return true\n    }\n    return false\n  }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n", "'use strict'\n\nconst Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n  try {\n    range = new Range(range, options)\n  } catch (er) {\n    return false\n  }\n  return range.test(version)\n}\nmodule.exports = satisfies\n", "'use strict'\n\nconst Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n  new Range(range, options).set\n    .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n  let max = null\n  let maxSV = null\n  let rangeObj = null\n  try {\n    rangeObj = new Range(range, options)\n  } catch (er) {\n    return null\n  }\n  versions.forEach((v) => {\n    if (rangeObj.test(v)) {\n      // satisfies(v, range, options)\n      if (!max || maxSV.compare(v) === -1) {\n        // compare(max, v, true)\n        max = v\n        maxSV = new SemVer(max, options)\n      }\n    }\n  })\n  return max\n}\nmodule.exports = maxSatisfying\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n  let min = null\n  let minSV = null\n  let rangeObj = null\n  try {\n    rangeObj = new Range(range, options)\n  } catch (er) {\n    return null\n  }\n  versions.forEach((v) => {\n    if (rangeObj.test(v)) {\n      // satisfies(v, range, options)\n      if (!min || minSV.compare(v) === 1) {\n        // compare(min, v, true)\n        min = v\n        minSV = new SemVer(min, options)\n      }\n    }\n  })\n  return min\n}\nmodule.exports = minSatisfying\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n  range = new Range(range, loose)\n\n  let minver = new SemVer('0.0.0')\n  if (range.test(minver)) {\n    return minver\n  }\n\n  minver = new SemVer('0.0.0-0')\n  if (range.test(minver)) {\n    return minver\n  }\n\n  minver = null\n  for (let i = 0; i < range.set.length; ++i) {\n    const comparators = range.set[i]\n\n    let setMin = null\n    comparators.forEach((comparator) => {\n      // Clone to avoid manipulating the comparator's semver object.\n      const compver = new SemVer(comparator.semver.version)\n      switch (comparator.operator) {\n        case '>':\n          if (compver.prerelease.length === 0) {\n            compver.patch++\n          } else {\n            compver.prerelease.push(0)\n          }\n          compver.raw = compver.format()\n          /* fallthrough */\n        case '':\n        case '>=':\n          if (!setMin || gt(compver, setMin)) {\n            setMin = compver\n          }\n          break\n        case '<':\n        case '<=':\n          /* Ignore maximum versions */\n          break\n        /* istanbul ignore next */\n        default:\n          throw new Error(`Unexpected operation: ${comparator.operator}`)\n      }\n    })\n    if (setMin && (!minver || gt(minver, setMin))) {\n      minver = setMin\n    }\n  }\n\n  if (minver && range.test(minver)) {\n    return minver\n  }\n\n  return null\n}\nmodule.exports = minVersion\n", "'use strict'\n\nconst Range = require('../classes/range')\nconst validRange = (range, options) => {\n  try {\n    // Return '*' instead of '' so that truthiness works.\n    // This will throw if it's invalid anyway\n    return new Range(range, options).range || '*'\n  } catch (er) {\n    return null\n  }\n}\nmodule.exports = validRange\n", "'use strict'\n\nconst SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n  version = new SemVer(version, options)\n  range = new Range(range, options)\n\n  let gtfn, ltefn, ltfn, comp, ecomp\n  switch (hilo) {\n    case '>':\n      gtfn = gt\n      ltefn = lte\n      ltfn = lt\n      comp = '>'\n      ecomp = '>='\n      break\n    case '<':\n      gtfn = lt\n      ltefn = gte\n      ltfn = gt\n      comp = '<'\n      ecomp = '<='\n      break\n    default:\n      throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n  }\n\n  // If it satisfies the range it is not outside\n  if (satisfies(version, range, options)) {\n    return false\n  }\n\n  // From now on, variable terms are as if we're in \"gtr\" mode.\n  // but note that everything is flipped for the \"ltr\" function.\n\n  for (let i = 0; i < range.set.length; ++i) {\n    const comparators = range.set[i]\n\n    let high = null\n    let low = null\n\n    comparators.forEach((comparator) => {\n      if (comparator.semver === ANY) {\n        comparator = new Comparator('>=0.0.0')\n      }\n      high = high || comparator\n      low = low || comparator\n      if (gtfn(comparator.semver, high.semver, options)) {\n        high = comparator\n      } else if (ltfn(comparator.semver, low.semver, options)) {\n        low = comparator\n      }\n    })\n\n    // If the edge version comparator has a operator then our version\n    // isn't outside it\n    if (high.operator === comp || high.operator === ecomp) {\n      return false\n    }\n\n    // If the lowest version comparator has an operator and our version\n    // is less than it then it isn't higher than the range\n    if ((!low.operator || low.operator === comp) &&\n        ltefn(version, low.semver)) {\n      return false\n    } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n      return false\n    }\n  }\n  return true\n}\n\nmodule.exports = outside\n", "'use strict'\n\n// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n", "'use strict'\n\nconst outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n", "'use strict'\n\nconst Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n  r1 = new Range(r1, options)\n  r2 = new Range(r2, options)\n  return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n", "'use strict'\n\n// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n  const set = []\n  let first = null\n  let prev = null\n  const v = versions.sort((a, b) => compare(a, b, options))\n  for (const version of v) {\n    const included = satisfies(version, range, options)\n    if (included) {\n      prev = version\n      if (!first) {\n        first = version\n      }\n    } else {\n      if (prev) {\n        set.push([first, prev])\n      }\n      prev = null\n      first = null\n    }\n  }\n  if (first) {\n    set.push([first, null])\n  }\n\n  const ranges = []\n  for (const [min, max] of set) {\n    if (min === max) {\n      ranges.push(min)\n    } else if (!max && min === v[0]) {\n      ranges.push('*')\n    } else if (!max) {\n      ranges.push(`>=${min}`)\n    } else if (min === v[0]) {\n      ranges.push(`<=${max}`)\n    } else {\n      ranges.push(`${min} - ${max}`)\n    }\n  }\n  const simplified = ranges.join(' || ')\n  const original = typeof range.raw === 'string' ? range.raw : String(range)\n  return simplified.length < original.length ? simplified : range\n}\n", "'use strict'\n\nconst Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n//   some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n//   - If C is only the ANY comparator, return true\n//   - Else if in prerelease mode, return false\n//   - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n//   - if in prerelease mode, return true\n//   - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n//   - If GT, and EQ does not satisfy GT, return true (null set)\n//   - If LT, and EQ does not satisfy LT, return true (null set)\n//   - If EQ satisfies every C, return true\n//   - Else return false\n// - If GT\n//   - If GT.semver is lower than any > or >= comp in C, return false\n//   - If GT is >=, and GT.semver does not satisfy every C, return false\n//   - If GT.semver has a prerelease, and not in prerelease mode\n//     - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n//   - If LT.semver is greater than any < or <= comp in C, return false\n//   - If LT is <=, and LT.semver does not satisfy every C, return false\n//   - If GT.semver has a prerelease, and not in prerelease mode\n//     - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n  if (sub === dom) {\n    return true\n  }\n\n  sub = new Range(sub, options)\n  dom = new Range(dom, options)\n  let sawNonNull = false\n\n  OUTER: for (const simpleSub of sub.set) {\n    for (const simpleDom of dom.set) {\n      const isSub = simpleSubset(simpleSub, simpleDom, options)\n      sawNonNull = sawNonNull || isSub !== null\n      if (isSub) {\n        continue OUTER\n      }\n    }\n    // the null set is a subset of everything, but null simple ranges in\n    // a complex range should be ignored.  so if we saw a non-null range,\n    // then we know this isn't a subset, but if EVERY simple range was null,\n    // then it is a subset.\n    if (sawNonNull) {\n      return false\n    }\n  }\n  return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n  if (sub === dom) {\n    return true\n  }\n\n  if (sub.length === 1 && sub[0].semver === ANY) {\n    if (dom.length === 1 && dom[0].semver === ANY) {\n      return true\n    } else if (options.includePrerelease) {\n      sub = minimumVersionWithPreRelease\n    } else {\n      sub = minimumVersion\n    }\n  }\n\n  if (dom.length === 1 && dom[0].semver === ANY) {\n    if (options.includePrerelease) {\n      return true\n    } else {\n      dom = minimumVersion\n    }\n  }\n\n  const eqSet = new Set()\n  let gt, lt\n  for (const c of sub) {\n    if (c.operator === '>' || c.operator === '>=') {\n      gt = higherGT(gt, c, options)\n    } else if (c.operator === '<' || c.operator === '<=') {\n      lt = lowerLT(lt, c, options)\n    } else {\n      eqSet.add(c.semver)\n    }\n  }\n\n  if (eqSet.size > 1) {\n    return null\n  }\n\n  let gtltComp\n  if (gt && lt) {\n    gtltComp = compare(gt.semver, lt.semver, options)\n    if (gtltComp > 0) {\n      return null\n    } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n      return null\n    }\n  }\n\n  // will iterate one or zero times\n  for (const eq of eqSet) {\n    if (gt && !satisfies(eq, String(gt), options)) {\n      return null\n    }\n\n    if (lt && !satisfies(eq, String(lt), options)) {\n      return null\n    }\n\n    for (const c of dom) {\n      if (!satisfies(eq, String(c), options)) {\n        return false\n      }\n    }\n\n    return true\n  }\n\n  let higher, lower\n  let hasDomLT, hasDomGT\n  // if the subset has a prerelease, we need a comparator in the superset\n  // with the same tuple and a prerelease, or it's not a subset\n  let needDomLTPre = lt &&\n    !options.includePrerelease &&\n    lt.semver.prerelease.length ? lt.semver : false\n  let needDomGTPre = gt &&\n    !options.includePrerelease &&\n    gt.semver.prerelease.length ? gt.semver : false\n  // exception: <1.2.3-0 is the same as <1.2.3\n  if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n      lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n    needDomLTPre = false\n  }\n\n  for (const c of dom) {\n    hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n    hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n    if (gt) {\n      if (needDomGTPre) {\n        if (c.semver.prerelease && c.semver.prerelease.length &&\n            c.semver.major === needDomGTPre.major &&\n            c.semver.minor === needDomGTPre.minor &&\n            c.semver.patch === needDomGTPre.patch) {\n          needDomGTPre = false\n        }\n      }\n      if (c.operator === '>' || c.operator === '>=') {\n        higher = higherGT(gt, c, options)\n        if (higher === c && higher !== gt) {\n          return false\n        }\n      } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n        return false\n      }\n    }\n    if (lt) {\n      if (needDomLTPre) {\n        if (c.semver.prerelease && c.semver.prerelease.length &&\n            c.semver.major === needDomLTPre.major &&\n            c.semver.minor === needDomLTPre.minor &&\n            c.semver.patch === needDomLTPre.patch) {\n          needDomLTPre = false\n        }\n      }\n      if (c.operator === '<' || c.operator === '<=') {\n        lower = lowerLT(lt, c, options)\n        if (lower === c && lower !== lt) {\n          return false\n        }\n      } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n        return false\n      }\n    }\n    if (!c.operator && (lt || gt) && gtltComp !== 0) {\n      return false\n    }\n  }\n\n  // if there was a < or >, and nothing in the dom, then must be false\n  // UNLESS it was limited by another range in the other direction.\n  // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n  if (gt && hasDomLT && !lt && gtltComp !== 0) {\n    return false\n  }\n\n  if (lt && hasDomGT && !gt && gtltComp !== 0) {\n    return false\n  }\n\n  // we needed a prerelease range in a specific tuple, but didn't get one\n  // then this isn't a subset.  eg >=1.2.3-pre is not a subset of >=1.0.0,\n  // because it includes prereleases in the 1.2.3 tuple\n  if (needDomGTPre || needDomLTPre) {\n    return false\n  }\n\n  return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n  if (!a) {\n    return b\n  }\n  const comp = compare(a.semver, b.semver, options)\n  return comp > 0 ? a\n    : comp < 0 ? b\n    : b.operator === '>' && a.operator === '>=' ? b\n    : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n  if (!a) {\n    return b\n  }\n  const comp = compare(a.semver, b.semver, options)\n  return comp < 0 ? a\n    : comp > 0 ? b\n    : b.operator === '<' && a.operator === '<=' ? b\n    : a\n}\n\nmodule.exports = subset\n", "'use strict'\n\n// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n  parse,\n  valid,\n  clean,\n  inc,\n  diff,\n  major,\n  minor,\n  patch,\n  prerelease,\n  compare,\n  rcompare,\n  compareLoose,\n  compareBuild,\n  sort,\n  rsort,\n  gt,\n  lt,\n  eq,\n  neq,\n  gte,\n  lte,\n  cmp,\n  coerce,\n  Comparator,\n  Range,\n  satisfies,\n  toComparators,\n  maxSatisfying,\n  minSatisfying,\n  minVersion,\n  validRange,\n  outside,\n  gtr,\n  ltr,\n  intersects,\n  simplifyRange,\n  subset,\n  SemVer,\n  re: internalRe.re,\n  src: internalRe.src,\n  tokens: internalRe.t,\n  SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n  RELEASE_TYPES: constants.RELEASE_TYPES,\n  compareIdentifiers: identifiers.compareIdentifiers,\n  rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n", "const semver = require('semver')\n\nconst satisfies = (range) => {\n  return semver.satisfies(process.version, range, { includePrerelease: true })\n}\n\nmodule.exports = {\n  satisfies,\n}\n", "'use strict'\nconst { inspect } = require('util')\n\n// adapted from node's internal/errors\n// https://github.com/nodejs/node/blob/c8a04049/lib/internal/errors.js\n\n// close copy of node's internal SystemError class.\nclass SystemError {\n  constructor (code, prefix, context) {\n    // XXX context.code is undefined in all constructors used in cp/polyfill\n    // that may be a bug copied from node, maybe the constructor should use\n    // `code` not `errno`?  nodejs/node#41104\n    let message = `${prefix}: ${context.syscall} returned ` +\n                  `${context.code} (${context.message})`\n\n    if (context.path !== undefined) {\n      message += ` ${context.path}`\n    }\n    if (context.dest !== undefined) {\n      message += ` => ${context.dest}`\n    }\n\n    this.code = code\n    Object.defineProperties(this, {\n      name: {\n        value: 'SystemError',\n        enumerable: false,\n        writable: true,\n        configurable: true,\n      },\n      message: {\n        value: message,\n        enumerable: false,\n        writable: true,\n        configurable: true,\n      },\n      info: {\n        value: context,\n        enumerable: true,\n        configurable: true,\n        writable: false,\n      },\n      errno: {\n        get () {\n          return context.errno\n        },\n        set (value) {\n          context.errno = value\n        },\n        enumerable: true,\n        configurable: true,\n      },\n      syscall: {\n        get () {\n          return context.syscall\n        },\n        set (value) {\n          context.syscall = value\n        },\n        enumerable: true,\n        configurable: true,\n      },\n    })\n\n    if (context.path !== undefined) {\n      Object.defineProperty(this, 'path', {\n        get () {\n          return context.path\n        },\n        set (value) {\n          context.path = value\n        },\n        enumerable: true,\n        configurable: true,\n      })\n    }\n\n    if (context.dest !== undefined) {\n      Object.defineProperty(this, 'dest', {\n        get () {\n          return context.dest\n        },\n        set (value) {\n          context.dest = value\n        },\n        enumerable: true,\n        configurable: true,\n      })\n    }\n  }\n\n  toString () {\n    return `${this.name} [${this.code}]: ${this.message}`\n  }\n\n  [Symbol.for('nodejs.util.inspect.custom')] (_recurseTimes, ctx) {\n    return inspect(this, {\n      ...ctx,\n      getters: true,\n      customInspect: false,\n    })\n  }\n}\n\nfunction E (code, message) {\n  module.exports[code] = class NodeError extends SystemError {\n    constructor (ctx) {\n      super(code, message, ctx)\n    }\n  }\n}\n\nE('ERR_FS_CP_DIR_TO_NON_DIR', 'Cannot overwrite directory with non-directory')\nE('ERR_FS_CP_EEXIST', 'Target already exists')\nE('ERR_FS_CP_EINVAL', 'Invalid src or dest')\nE('ERR_FS_CP_FIFO_PIPE', 'Cannot copy a FIFO pipe')\nE('ERR_FS_CP_NON_DIR_TO_DIR', 'Cannot overwrite non-directory with directory')\nE('ERR_FS_CP_SOCKET', 'Cannot copy a socket file')\nE('ERR_FS_CP_SYMLINK_TO_SUBDIRECTORY', 'Cannot overwrite symlink in subdirectory of self')\nE('ERR_FS_CP_UNKNOWN', 'Cannot copy an unknown file type')\nE('ERR_FS_EISDIR', 'Path is a directory')\n\nmodule.exports.ERR_INVALID_ARG_TYPE = class ERR_INVALID_ARG_TYPE extends Error {\n  constructor (name, expected, actual) {\n    super()\n    this.code = 'ERR_INVALID_ARG_TYPE'\n    this.message = `The ${name} argument must be ${expected}. Received ${typeof actual}`\n  }\n}\n", "// this file is a modified version of the code in node 17.2.0\n// which is, in turn, a modified version of the fs-extra module on npm\n// node core changes:\n// - Use of the assert module has been replaced with core's error system.\n// - All code related to the glob dependency has been removed.\n// - Bring your own custom fs module is not currently supported.\n// - Some basic code cleanup.\n// changes here:\n// - remove all callback related code\n// - drop sync support\n// - change assertions back to non-internal methods (see options.js)\n// - throws ENOTDIR when rmdir gets an ENOENT for a path that exists in Windows\n'use strict'\n\nconst {\n  ERR_FS_CP_DIR_TO_NON_DIR,\n  ERR_FS_CP_EEXIST,\n  ERR_FS_CP_EINVAL,\n  ERR_FS_CP_FIFO_PIPE,\n  ERR_FS_CP_NON_DIR_TO_DIR,\n  ERR_FS_CP_SOCKET,\n  ERR_FS_CP_SYMLINK_TO_SUBDIRECTORY,\n  ERR_FS_CP_UNKNOWN,\n  ERR_FS_EISDIR,\n  ERR_INVALID_ARG_TYPE,\n} = require('./errors.js')\nconst {\n  constants: {\n    errno: {\n      EEXIST,\n      EISDIR,\n      EINVAL,\n      ENOTDIR,\n    },\n  },\n} = require('os')\nconst {\n  chmod,\n  copyFile,\n  lstat,\n  mkdir,\n  readdir,\n  readlink,\n  stat,\n  symlink,\n  unlink,\n  utimes,\n} = require('fs/promises')\nconst {\n  dirname,\n  isAbsolute,\n  join,\n  parse,\n  resolve,\n  sep,\n  toNamespacedPath,\n} = require('path')\nconst { fileURLToPath } = require('url')\n\nconst defaultOptions = {\n  dereference: false,\n  errorOnExist: false,\n  filter: undefined,\n  force: true,\n  preserveTimestamps: false,\n  recursive: false,\n}\n\nasync function cp (src, dest, opts) {\n  if (opts != null && typeof opts !== 'object') {\n    throw new ERR_INVALID_ARG_TYPE('options', ['Object'], opts)\n  }\n  return cpFn(\n    toNamespacedPath(getValidatedPath(src)),\n    toNamespacedPath(getValidatedPath(dest)),\n    { ...defaultOptions, ...opts })\n}\n\nfunction getValidatedPath (fileURLOrPath) {\n  const path = fileURLOrPath != null && fileURLOrPath.href\n      && fileURLOrPath.origin\n    ? fileURLToPath(fileURLOrPath)\n    : fileURLOrPath\n  return path\n}\n\nasync function cpFn (src, dest, opts) {\n  // Warn about using preserveTimestamps on 32-bit node\n  // istanbul ignore next\n  if (opts.preserveTimestamps && process.arch === 'ia32') {\n    const warning = 'Using the preserveTimestamps option in 32-bit ' +\n      'node is not recommended'\n    process.emitWarning(warning, 'TimestampPrecisionWarning')\n  }\n  const stats = await checkPaths(src, dest, opts)\n  const { srcStat, destStat } = stats\n  await checkParentPaths(src, srcStat, dest)\n  if (opts.filter) {\n    return handleFilter(checkParentDir, destStat, src, dest, opts)\n  }\n  return checkParentDir(destStat, src, dest, opts)\n}\n\nasync function checkPaths (src, dest, opts) {\n  const { 0: srcStat, 1: destStat } = await getStats(src, dest, opts)\n  if (destStat) {\n    if (areIdentical(srcStat, destStat)) {\n      throw new ERR_FS_CP_EINVAL({\n        message: 'src and dest cannot be the same',\n        path: dest,\n        syscall: 'cp',\n        errno: EINVAL,\n      })\n    }\n    if (srcStat.isDirectory() && !destStat.isDirectory()) {\n      throw new ERR_FS_CP_DIR_TO_NON_DIR({\n        message: `cannot overwrite directory ${src} ` +\n            `with non-directory ${dest}`,\n        path: dest,\n        syscall: 'cp',\n        errno: EISDIR,\n      })\n    }\n    if (!srcStat.isDirectory() && destStat.isDirectory()) {\n      throw new ERR_FS_CP_NON_DIR_TO_DIR({\n        message: `cannot overwrite non-directory ${src} ` +\n            `with directory ${dest}`,\n        path: dest,\n        syscall: 'cp',\n        errno: ENOTDIR,\n      })\n    }\n  }\n\n  if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {\n    throw new ERR_FS_CP_EINVAL({\n      message: `cannot copy ${src} to a subdirectory of self ${dest}`,\n      path: dest,\n      syscall: 'cp',\n      errno: EINVAL,\n    })\n  }\n  return { srcStat, destStat }\n}\n\nfunction areIdentical (srcStat, destStat) {\n  return destStat.ino && destStat.dev && destStat.ino === srcStat.ino &&\n    destStat.dev === srcStat.dev\n}\n\nfunction getStats (src, dest, opts) {\n  const statFunc = opts.dereference ?\n    (file) => stat(file, { bigint: true }) :\n    (file) => lstat(file, { bigint: true })\n  return Promise.all([\n    statFunc(src),\n    statFunc(dest).catch((err) => {\n      // istanbul ignore next: unsure how to cover.\n      if (err.code === 'ENOENT') {\n        return null\n      }\n      // istanbul ignore next: unsure how to cover.\n      throw err\n    }),\n  ])\n}\n\nasync function checkParentDir (destStat, src, dest, opts) {\n  const destParent = dirname(dest)\n  const dirExists = await pathExists(destParent)\n  if (dirExists) {\n    return getStatsForCopy(destStat, src, dest, opts)\n  }\n  await mkdir(destParent, { recursive: true })\n  return getStatsForCopy(destStat, src, dest, opts)\n}\n\nfunction pathExists (dest) {\n  return stat(dest).then(\n    () => true,\n    // istanbul ignore next: not sure when this would occur\n    (err) => (err.code === 'ENOENT' ? false : Promise.reject(err)))\n}\n\n// Recursively check if dest parent is a subdirectory of src.\n// It works for all file types including symlinks since it\n// checks the src and dest inodes. It starts from the deepest\n// parent and stops once it reaches the src parent or the root path.\nasync function checkParentPaths (src, srcStat, dest) {\n  const srcParent = resolve(dirname(src))\n  const destParent = resolve(dirname(dest))\n  if (destParent === srcParent || destParent === parse(destParent).root) {\n    return\n  }\n  let destStat\n  try {\n    destStat = await stat(destParent, { bigint: true })\n  } catch (err) {\n    // istanbul ignore else: not sure when this would occur\n    if (err.code === 'ENOENT') {\n      return\n    }\n    // istanbul ignore next: not sure when this would occur\n    throw err\n  }\n  if (areIdentical(srcStat, destStat)) {\n    throw new ERR_FS_CP_EINVAL({\n      message: `cannot copy ${src} to a subdirectory of self ${dest}`,\n      path: dest,\n      syscall: 'cp',\n      errno: EINVAL,\n    })\n  }\n  return checkParentPaths(src, srcStat, destParent)\n}\n\nconst normalizePathToArray = (path) =>\n  resolve(path).split(sep).filter(Boolean)\n\n// Return true if dest is a subdir of src, otherwise false.\n// It only checks the path strings.\nfunction isSrcSubdir (src, dest) {\n  const srcArr = normalizePathToArray(src)\n  const destArr = normalizePathToArray(dest)\n  return srcArr.every((cur, i) => destArr[i] === cur)\n}\n\nasync function handleFilter (onInclude, destStat, src, dest, opts, cb) {\n  const include = await opts.filter(src, dest)\n  if (include) {\n    return onInclude(destStat, src, dest, opts, cb)\n  }\n}\n\nfunction startCopy (destStat, src, dest, opts) {\n  if (opts.filter) {\n    return handleFilter(getStatsForCopy, destStat, src, dest, opts)\n  }\n  return getStatsForCopy(destStat, src, dest, opts)\n}\n\nasync function getStatsForCopy (destStat, src, dest, opts) {\n  const statFn = opts.dereference ? stat : lstat\n  const srcStat = await statFn(src)\n  // istanbul ignore else: can't portably test FIFO\n  if (srcStat.isDirectory() && opts.recursive) {\n    return onDir(srcStat, destStat, src, dest, opts)\n  } else if (srcStat.isDirectory()) {\n    throw new ERR_FS_EISDIR({\n      message: `${src} is a directory (not copied)`,\n      path: src,\n      syscall: 'cp',\n      errno: EINVAL,\n    })\n  } else if (srcStat.isFile() ||\n            srcStat.isCharacterDevice() ||\n            srcStat.isBlockDevice()) {\n    return onFile(srcStat, destStat, src, dest, opts)\n  } else if (srcStat.isSymbolicLink()) {\n    return onLink(destStat, src, dest)\n  } else if (srcStat.isSocket()) {\n    throw new ERR_FS_CP_SOCKET({\n      message: `cannot copy a socket file: ${dest}`,\n      path: dest,\n      syscall: 'cp',\n      errno: EINVAL,\n    })\n  } else if (srcStat.isFIFO()) {\n    throw new ERR_FS_CP_FIFO_PIPE({\n      message: `cannot copy a FIFO pipe: ${dest}`,\n      path: dest,\n      syscall: 'cp',\n      errno: EINVAL,\n    })\n  }\n  // istanbul ignore next: should be unreachable\n  throw new ERR_FS_CP_UNKNOWN({\n    message: `cannot copy an unknown file type: ${dest}`,\n    path: dest,\n    syscall: 'cp',\n    errno: EINVAL,\n  })\n}\n\nfunction onFile (srcStat, destStat, src, dest, opts) {\n  if (!destStat) {\n    return _copyFile(srcStat, src, dest, opts)\n  }\n  return mayCopyFile(srcStat, src, dest, opts)\n}\n\nasync function mayCopyFile (srcStat, src, dest, opts) {\n  if (opts.force) {\n    await unlink(dest)\n    return _copyFile(srcStat, src, dest, opts)\n  } else if (opts.errorOnExist) {\n    throw new ERR_FS_CP_EEXIST({\n      message: `${dest} already exists`,\n      path: dest,\n      syscall: 'cp',\n      errno: EEXIST,\n    })\n  }\n}\n\nasync function _copyFile (srcStat, src, dest, opts) {\n  await copyFile(src, dest)\n  if (opts.preserveTimestamps) {\n    return handleTimestampsAndMode(srcStat.mode, src, dest)\n  }\n  return setDestMode(dest, srcStat.mode)\n}\n\nasync function handleTimestampsAndMode (srcMode, src, dest) {\n  // Make sure the file is writable before setting the timestamp\n  // otherwise open fails with EPERM when invoked with 'r+'\n  // (through utimes call)\n  if (fileIsNotWritable(srcMode)) {\n    await makeFileWritable(dest, srcMode)\n    return setDestTimestampsAndMode(srcMode, src, dest)\n  }\n  return setDestTimestampsAndMode(srcMode, src, dest)\n}\n\nfunction fileIsNotWritable (srcMode) {\n  return (srcMode & 0o200) === 0\n}\n\nfunction makeFileWritable (dest, srcMode) {\n  return setDestMode(dest, srcMode | 0o200)\n}\n\nasync function setDestTimestampsAndMode (srcMode, src, dest) {\n  await setDestTimestamps(src, dest)\n  return setDestMode(dest, srcMode)\n}\n\nfunction setDestMode (dest, srcMode) {\n  return chmod(dest, srcMode)\n}\n\nasync function setDestTimestamps (src, dest) {\n  // The initial srcStat.atime cannot be trusted\n  // because it is modified by the read(2) system call\n  // (See https://nodejs.org/api/fs.html#fs_stat_time_values)\n  const updatedSrcStat = await stat(src)\n  return utimes(dest, updatedSrcStat.atime, updatedSrcStat.mtime)\n}\n\nfunction onDir (srcStat, destStat, src, dest, opts) {\n  if (!destStat) {\n    return mkDirAndCopy(srcStat.mode, src, dest, opts)\n  }\n  return copyDir(src, dest, opts)\n}\n\nasync function mkDirAndCopy (srcMode, src, dest, opts) {\n  await mkdir(dest)\n  await copyDir(src, dest, opts)\n  return setDestMode(dest, srcMode)\n}\n\nasync function copyDir (src, dest, opts) {\n  const dir = await readdir(src)\n  for (let i = 0; i < dir.length; i++) {\n    const item = dir[i]\n    const srcItem = join(src, item)\n    const destItem = join(dest, item)\n    const { destStat } = await checkPaths(srcItem, destItem, opts)\n    await startCopy(destStat, srcItem, destItem, opts)\n  }\n}\n\nasync function onLink (destStat, src, dest) {\n  let resolvedSrc = await readlink(src)\n  if (!isAbsolute(resolvedSrc)) {\n    resolvedSrc = resolve(dirname(src), resolvedSrc)\n  }\n  if (!destStat) {\n    return symlink(resolvedSrc, dest)\n  }\n  let resolvedDest\n  try {\n    resolvedDest = await readlink(dest)\n  } catch (err) {\n    // Dest exists and is a regular file or directory,\n    // Windows may throw UNKNOWN error. If dest already exists,\n    // fs throws error anyway, so no need to guard against it here.\n    // istanbul ignore next: can only test on windows\n    if (err.code === 'EINVAL' || err.code === 'UNKNOWN') {\n      return symlink(resolvedSrc, dest)\n    }\n    // istanbul ignore next: should not be possible\n    throw err\n  }\n  if (!isAbsolute(resolvedDest)) {\n    resolvedDest = resolve(dirname(dest), resolvedDest)\n  }\n  if (isSrcSubdir(resolvedSrc, resolvedDest)) {\n    throw new ERR_FS_CP_EINVAL({\n      message: `cannot copy ${resolvedSrc} to a subdirectory of self ` +\n            `${resolvedDest}`,\n      path: dest,\n      syscall: 'cp',\n      errno: EINVAL,\n    })\n  }\n  // Do not copy if src is a subdir of dest since unlinking\n  // dest in this case would result in removing src contents\n  // and therefore a broken symlink would be created.\n  const srcStat = await stat(src)\n  if (srcStat.isDirectory() && isSrcSubdir(resolvedDest, resolvedSrc)) {\n    throw new ERR_FS_CP_SYMLINK_TO_SUBDIRECTORY({\n      message: `cannot overwrite ${resolvedDest} with ${resolvedSrc}`,\n      path: dest,\n      syscall: 'cp',\n      errno: EINVAL,\n    })\n  }\n  return copyLink(resolvedSrc, dest)\n}\n\nasync function copyLink (resolvedSrc, dest) {\n  await unlink(dest)\n  return symlink(resolvedSrc, dest)\n}\n\nmodule.exports = cp\n", "const fs = require('fs/promises')\nconst getOptions = require('../common/get-options.js')\nconst node = require('../common/node.js')\nconst polyfill = require('./polyfill.js')\n\n// node 16.7.0 added fs.cp\nconst useNative = node.satisfies('>=16.7.0')\n\nconst cp = async (src, dest, opts) => {\n  const options = getOptions(opts, {\n    copy: ['dereference', 'errorOnExist', 'filter', 'force', 'preserveTimestamps', 'recursive'],\n  })\n\n  // the polyfill is tested separately from this module, no need to hack\n  // process.version to try to trigger it just for coverage\n  // istanbul ignore next\n  return useNative\n    ? fs.cp(src, dest, options)\n    : polyfill(src, dest, options)\n}\n\nmodule.exports = cp\n", "const { join, sep } = require('path')\n\nconst getOptions = require('./common/get-options.js')\nconst { mkdir, mkdtemp, rm } = require('fs/promises')\n\n// create a temp directory, ensure its permissions match its parent, then call\n// the supplied function passing it the path to the directory. clean up after\n// the function finishes, whether it throws or not\nconst withTempDir = async (root, fn, opts) => {\n  const options = getOptions(opts, {\n    copy: ['tmpPrefix'],\n  })\n  // create the directory\n  await mkdir(root, { recursive: true })\n\n  const target = await mkdtemp(join(`${root}${sep}`, options.tmpPrefix || ''))\n  let err\n  let result\n\n  try {\n    result = await fn(target)\n  } catch (_err) {\n    err = _err\n  }\n\n  try {\n    await rm(target, { force: true, recursive: true })\n  } catch {\n    // ignore errors\n  }\n\n  if (err) {\n    throw err\n  }\n\n  return result\n}\n\nmodule.exports = withTempDir\n", "const { readdir } = require('fs/promises')\nconst { join } = require('path')\n\nconst readdirScoped = async (dir) => {\n  const results = []\n\n  for (const item of await readdir(dir)) {\n    if (item.startsWith('@')) {\n      for (const scopedItem of await readdir(join(dir, item))) {\n        results.push(join(item, scopedItem))\n      }\n    } else {\n      results.push(item)\n    }\n  }\n\n  return results\n}\n\nmodule.exports = readdirScoped\n", "const { dirname, join, resolve, relative, isAbsolute } = require('path')\nconst fs = require('fs/promises')\n\nconst pathExists = async path => {\n  try {\n    await fs.access(path)\n    return true\n  } catch (er) {\n    return er.code !== 'ENOENT'\n  }\n}\n\nconst moveFile = async (source, destination, options = {}, root = true, symlinks = []) => {\n  if (!source || !destination) {\n    throw new TypeError('`source` and `destination` file required')\n  }\n\n  options = {\n    overwrite: true,\n    ...options,\n  }\n\n  if (!options.overwrite && await pathExists(destination)) {\n    throw new Error(`The destination file exists: ${destination}`)\n  }\n\n  await fs.mkdir(dirname(destination), { recursive: true })\n\n  try {\n    await fs.rename(source, destination)\n  } catch (error) {\n    if (error.code === 'EXDEV' || error.code === 'EPERM') {\n      const sourceStat = await fs.lstat(source)\n      if (sourceStat.isDirectory()) {\n        const files = await fs.readdir(source)\n        await Promise.all(files.map((file) =>\n          moveFile(join(source, file), join(destination, file), options, false, symlinks)\n        ))\n      } else if (sourceStat.isSymbolicLink()) {\n        symlinks.push({ source, destination })\n      } else {\n        await fs.copyFile(source, destination)\n      }\n    } else {\n      throw error\n    }\n  }\n\n  if (root) {\n    await Promise.all(symlinks.map(async ({ source: symSource, destination: symDestination }) => {\n      let target = await fs.readlink(symSource)\n      // junction symlinks in windows will be absolute paths, so we need to\n      // make sure they point to the symlink destination\n      if (isAbsolute(target)) {\n        target = resolve(symDestination, relative(symSource, target))\n      }\n      // try to determine what the actual file is so we can create the correct\n      // type of symlink in windows\n      let targetStat = 'file'\n      try {\n        targetStat = await fs.stat(resolve(dirname(symSource), target))\n        if (targetStat.isDirectory()) {\n          targetStat = 'junction'\n        }\n      } catch {\n        // targetStat remains 'file'\n      }\n      await fs.symlink(\n        target,\n        symDestination,\n        targetStat\n      )\n    }))\n    await fs.rm(source, { recursive: true, force: true })\n  }\n}\n\nmodule.exports = moveFile\n", "'use strict'\n\nconst cp = require('./cp/index.js')\nconst withTempDir = require('./with-temp-dir.js')\nconst readdirScoped = require('./readdir-scoped.js')\nconst moveFile = require('./move-file.js')\n\nmodule.exports = {\n  cp,\n  withTempDir,\n  readdirScoped,\n  moveFile,\n}\n", "'use strict'\n\nconst crypto = require('crypto')\nconst {\n  appendFile,\n  mkdir,\n  readFile,\n  readdir,\n  rm,\n  writeFile,\n} = require('fs/promises')\nconst { Minipass } = require('minipass')\nconst path = require('path')\nconst ssri = require('ssri')\nconst uniqueFilename = require('unique-filename')\n\nconst contentPath = require('./content/path')\nconst hashToSegments = require('./util/hash-to-segments')\nconst indexV = require('../package.json')['cache-version'].index\nconst { moveFile } = require('@npmcli/fs')\n\nmodule.exports.NotFoundError = class NotFoundError extends Error {\n  constructor (cache, key) {\n    super(`No cache entry for ${key} found in ${cache}`)\n    this.code = 'ENOENT'\n    this.cache = cache\n    this.key = key\n  }\n}\n\nmodule.exports.compact = compact\n\nasync function compact (cache, key, matchFn, opts = {}) {\n  const bucket = bucketPath(cache, key)\n  const entries = await bucketEntries(bucket)\n  const newEntries = []\n  // we loop backwards because the bottom-most result is the newest\n  // since we add new entries with appendFile\n  for (let i = entries.length - 1; i >= 0; --i) {\n    const entry = entries[i]\n    // a null integrity could mean either a delete was appended\n    // or the user has simply stored an index that does not map\n    // to any content. we determine if the user wants to keep the\n    // null integrity based on the validateEntry function passed in options.\n    // if the integrity is null and no validateEntry is provided, we break\n    // as we consider the null integrity to be a deletion of everything\n    // that came before it.\n    if (entry.integrity === null && !opts.validateEntry) {\n      break\n    }\n\n    // if this entry is valid, and it is either the first entry or\n    // the newEntries array doesn't already include an entry that\n    // matches this one based on the provided matchFn, then we add\n    // it to the beginning of our list\n    if ((!opts.validateEntry || opts.validateEntry(entry) === true) &&\n      (newEntries.length === 0 ||\n        !newEntries.find((oldEntry) => matchFn(oldEntry, entry)))) {\n      newEntries.unshift(entry)\n    }\n  }\n\n  const newIndex = '\\n' + newEntries.map((entry) => {\n    const stringified = JSON.stringify(entry)\n    const hash = hashEntry(stringified)\n    return `${hash}\\t${stringified}`\n  }).join('\\n')\n\n  const setup = async () => {\n    const target = uniqueFilename(path.join(cache, 'tmp'), opts.tmpPrefix)\n    await mkdir(path.dirname(target), { recursive: true })\n    return {\n      target,\n      moved: false,\n    }\n  }\n\n  const teardown = async (tmp) => {\n    if (!tmp.moved) {\n      return rm(tmp.target, { recursive: true, force: true })\n    }\n  }\n\n  const write = async (tmp) => {\n    await writeFile(tmp.target, newIndex, { flag: 'wx' })\n    await mkdir(path.dirname(bucket), { recursive: true })\n    // we use @npmcli/move-file directly here because we\n    // want to overwrite the existing file\n    await moveFile(tmp.target, bucket)\n    tmp.moved = true\n  }\n\n  // write the file atomically\n  const tmp = await setup()\n  try {\n    await write(tmp)\n  } finally {\n    await teardown(tmp)\n  }\n\n  // we reverse the list we generated such that the newest\n  // entries come first in order to make looping through them easier\n  // the true passed to formatEntry tells it to keep null\n  // integrity values, if they made it this far it's because\n  // validateEntry returned true, and as such we should return it\n  return newEntries.reverse().map((entry) => formatEntry(cache, entry, true))\n}\n\nmodule.exports.insert = insert\n\nasync function insert (cache, key, integrity, opts = {}) {\n  const { metadata, size, time } = opts\n  const bucket = bucketPath(cache, key)\n  const entry = {\n    key,\n    integrity: integrity && ssri.stringify(integrity),\n    time: time || Date.now(),\n    size,\n    metadata,\n  }\n  try {\n    await mkdir(path.dirname(bucket), { recursive: true })\n    const stringified = JSON.stringify(entry)\n    // NOTE - Cleverness ahoy!\n    //\n    // This works because it's tremendously unlikely for an entry to corrupt\n    // another while still preserving the string length of the JSON in\n    // question. So, we just slap the length in there and verify it on read.\n    //\n    // Thanks to @isaacs for the whiteboarding session that ended up with\n    // this.\n    await appendFile(bucket, `\\n${hashEntry(stringified)}\\t${stringified}`)\n  } catch (err) {\n    if (err.code === 'ENOENT') {\n      return undefined\n    }\n\n    throw err\n  }\n  return formatEntry(cache, entry)\n}\n\nmodule.exports.find = find\n\nasync function find (cache, key) {\n  const bucket = bucketPath(cache, key)\n  try {\n    const entries = await bucketEntries(bucket)\n    return entries.reduce((latest, next) => {\n      if (next && next.key === key) {\n        return formatEntry(cache, next)\n      } else {\n        return latest\n      }\n    }, null)\n  } catch (err) {\n    if (err.code === 'ENOENT') {\n      return null\n    } else {\n      throw err\n    }\n  }\n}\n\nmodule.exports.delete = del\n\nfunction del (cache, key, opts = {}) {\n  if (!opts.removeFully) {\n    return insert(cache, key, null, opts)\n  }\n\n  const bucket = bucketPath(cache, key)\n  return rm(bucket, { recursive: true, force: true })\n}\n\nmodule.exports.lsStream = lsStream\n\nfunction lsStream (cache) {\n  const indexDir = bucketDir(cache)\n  const stream = new Minipass({ objectMode: true })\n\n  // Set all this up to run on the stream and then just return the stream\n  Promise.resolve().then(async () => {\n    const buckets = await readdirOrEmpty(indexDir)\n    await Promise.all(buckets.map(async (bucket) => {\n      const bucketPath = path.join(indexDir, bucket)\n      const subbuckets = await readdirOrEmpty(bucketPath)\n      await Promise.all(subbuckets.map(async (subbucket) => {\n        const subbucketPath = path.join(bucketPath, subbucket)\n\n        // \"/cachename/<bucket 0xFF>/<bucket 0xFF>./*\"\n        const subbucketEntries = await readdirOrEmpty(subbucketPath)\n        await Promise.all(subbucketEntries.map(async (entry) => {\n          const entryPath = path.join(subbucketPath, entry)\n          try {\n            const entries = await bucketEntries(entryPath)\n            // using a Map here prevents duplicate keys from showing up\n            // twice, I guess?\n            const reduced = entries.reduce((acc, entry) => {\n              acc.set(entry.key, entry)\n              return acc\n            }, new Map())\n            // reduced is a map of key => entry\n            for (const entry of reduced.values()) {\n              const formatted = formatEntry(cache, entry)\n              if (formatted) {\n                stream.write(formatted)\n              }\n            }\n          } catch (err) {\n            if (err.code === 'ENOENT') {\n              return undefined\n            }\n            throw err\n          }\n        }))\n      }))\n    }))\n    stream.end()\n    return stream\n  }).catch(err => stream.emit('error', err))\n\n  return stream\n}\n\nmodule.exports.ls = ls\n\nasync function ls (cache) {\n  const entries = await lsStream(cache).collect()\n  return entries.reduce((acc, xs) => {\n    acc[xs.key] = xs\n    return acc\n  }, {})\n}\n\nmodule.exports.bucketEntries = bucketEntries\n\nasync function bucketEntries (bucket, filter) {\n  const data = await readFile(bucket, 'utf8')\n  return _bucketEntries(data, filter)\n}\n\nfunction _bucketEntries (data, filter) {\n  const entries = []\n  data.split('\\n').forEach((entry) => {\n    if (!entry) {\n      return\n    }\n\n    const pieces = entry.split('\\t')\n    if (!pieces[1] || hashEntry(pieces[1]) !== pieces[0]) {\n      // Hash is no good! Corruption or malice? Doesn't matter!\n      // EJECT EJECT\n      return\n    }\n    let obj\n    try {\n      obj = JSON.parse(pieces[1])\n    } catch (_) {\n      // eslint-ignore-next-line no-empty-block\n    }\n    // coverage disabled here, no need to test with an entry that parses to something falsey\n    // istanbul ignore else\n    if (obj) {\n      entries.push(obj)\n    }\n  })\n  return entries\n}\n\nmodule.exports.bucketDir = bucketDir\n\nfunction bucketDir (cache) {\n  return path.join(cache, `index-v${indexV}`)\n}\n\nmodule.exports.bucketPath = bucketPath\n\nfunction bucketPath (cache, key) {\n  const hashed = hashKey(key)\n  return path.join.apply(\n    path,\n    [bucketDir(cache)].concat(hashToSegments(hashed))\n  )\n}\n\nmodule.exports.hashKey = hashKey\n\nfunction hashKey (key) {\n  return hash(key, 'sha256')\n}\n\nmodule.exports.hashEntry = hashEntry\n\nfunction hashEntry (str) {\n  return hash(str, 'sha1')\n}\n\nfunction hash (str, digest) {\n  return crypto\n    .createHash(digest)\n    .update(str)\n    .digest('hex')\n}\n\nfunction formatEntry (cache, entry, keepAll) {\n  // Treat null digests as deletions. They'll shadow any previous entries.\n  if (!entry.integrity && !keepAll) {\n    return null\n  }\n\n  return {\n    key: entry.key,\n    integrity: entry.integrity,\n    path: entry.integrity ? contentPath(cache, entry.integrity) : undefined,\n    size: entry.size,\n    time: entry.time,\n    metadata: entry.metadata,\n  }\n}\n\nfunction readdirOrEmpty (dir) {\n  return readdir(dir).catch((err) => {\n    if (err.code === 'ENOENT' || err.code === 'ENOTDIR') {\n      return []\n    }\n\n    throw err\n  })\n}\n", "const perf =\n  typeof performance === 'object' &&\n  performance &&\n  typeof performance.now === 'function'\n    ? performance\n    : Date\n\nconst hasAbortController = typeof AbortController === 'function'\n\n// minimal backwards-compatibility polyfill\n// this doesn't have nearly all the checks and whatnot that\n// actual AbortController/Signal has, but it's enough for\n// our purposes, and if used properly, behaves the same.\nconst AC = hasAbortController\n  ? AbortController\n  : class AbortController {\n      constructor() {\n        this.signal = new AS()\n      }\n      abort(reason = new Error('This operation was aborted')) {\n        this.signal.reason = this.signal.reason || reason\n        this.signal.aborted = true\n        this.signal.dispatchEvent({\n          type: 'abort',\n          target: this.signal,\n        })\n      }\n    }\n\nconst hasAbortSignal = typeof AbortSignal === 'function'\n// Some polyfills put this on the AC class, not global\nconst hasACAbortSignal = typeof AC.AbortSignal === 'function'\nconst AS = hasAbortSignal\n  ? AbortSignal\n  : hasACAbortSignal\n  ? AC.AbortController\n  : class AbortSignal {\n      constructor() {\n        this.reason = undefined\n        this.aborted = false\n        this._listeners = []\n      }\n      dispatchEvent(e) {\n        if (e.type === 'abort') {\n          this.aborted = true\n          this.onabort(e)\n          this._listeners.forEach(f => f(e), this)\n        }\n      }\n      onabort() {}\n      addEventListener(ev, fn) {\n        if (ev === 'abort') {\n          this._listeners.push(fn)\n        }\n      }\n      removeEventListener(ev, fn) {\n        if (ev === 'abort') {\n          this._listeners = this._listeners.filter(f => f !== fn)\n        }\n      }\n    }\n\nconst warned = new Set()\nconst deprecatedOption = (opt, instead) => {\n  const code = `LRU_CACHE_OPTION_${opt}`\n  if (shouldWarn(code)) {\n    warn(code, `${opt} option`, `options.${instead}`, LRUCache)\n  }\n}\nconst deprecatedMethod = (method, instead) => {\n  const code = `LRU_CACHE_METHOD_${method}`\n  if (shouldWarn(code)) {\n    const { prototype } = LRUCache\n    const { get } = Object.getOwnPropertyDescriptor(prototype, method)\n    warn(code, `${method} method`, `cache.${instead}()`, get)\n  }\n}\nconst deprecatedProperty = (field, instead) => {\n  const code = `LRU_CACHE_PROPERTY_${field}`\n  if (shouldWarn(code)) {\n    const { prototype } = LRUCache\n    const { get } = Object.getOwnPropertyDescriptor(prototype, field)\n    warn(code, `${field} property`, `cache.${instead}`, get)\n  }\n}\n\nconst emitWarning = (...a) => {\n  typeof process === 'object' &&\n  process &&\n  typeof process.emitWarning === 'function'\n    ? process.emitWarning(...a)\n    : console.error(...a)\n}\n\nconst shouldWarn = code => !warned.has(code)\n\nconst warn = (code, what, instead, fn) => {\n  warned.add(code)\n  const msg = `The ${what} is deprecated. Please use ${instead} instead.`\n  emitWarning(msg, 'DeprecationWarning', code, fn)\n}\n\nconst isPosInt = n => n && n === Math.floor(n) && n > 0 && isFinite(n)\n\n/* istanbul ignore next - This is a little bit ridiculous, tbh.\n * The maximum array length is 2^32-1 or thereabouts on most JS impls.\n * And well before that point, you're caching the entire world, I mean,\n * that's ~32GB of just integers for the next/prev links, plus whatever\n * else to hold that many keys and values.  Just filling the memory with\n * zeroes at init time is brutal when you get that big.\n * But why not be complete?\n * Maybe in the future, these limits will have expanded. */\nconst getUintArray = max =>\n  !isPosInt(max)\n    ? null\n    : max <= Math.pow(2, 8)\n    ? Uint8Array\n    : max <= Math.pow(2, 16)\n    ? Uint16Array\n    : max <= Math.pow(2, 32)\n    ? Uint32Array\n    : max <= Number.MAX_SAFE_INTEGER\n    ? ZeroArray\n    : null\n\nclass ZeroArray extends Array {\n  constructor(size) {\n    super(size)\n    this.fill(0)\n  }\n}\n\nclass Stack {\n  constructor(max) {\n    if (max === 0) {\n      return []\n    }\n    const UintArray = getUintArray(max)\n    this.heap = new UintArray(max)\n    this.length = 0\n  }\n  push(n) {\n    this.heap[this.length++] = n\n  }\n  pop() {\n    return this.heap[--this.length]\n  }\n}\n\nclass LRUCache {\n  constructor(options = {}) {\n    const {\n      max = 0,\n      ttl,\n      ttlResolution = 1,\n      ttlAutopurge,\n      updateAgeOnGet,\n      updateAgeOnHas,\n      allowStale,\n      dispose,\n      disposeAfter,\n      noDisposeOnSet,\n      noUpdateTTL,\n      maxSize = 0,\n      maxEntrySize = 0,\n      sizeCalculation,\n      fetchMethod,\n      fetchContext,\n      noDeleteOnFetchRejection,\n      noDeleteOnStaleGet,\n      allowStaleOnFetchRejection,\n      allowStaleOnFetchAbort,\n      ignoreFetchAbort,\n    } = options\n\n    // deprecated options, don't trigger a warning for getting them if\n    // the thing being passed in is another LRUCache we're copying.\n    const { length, maxAge, stale } =\n      options instanceof LRUCache ? {} : options\n\n    if (max !== 0 && !isPosInt(max)) {\n      throw new TypeError('max option must be a nonnegative integer')\n    }\n\n    const UintArray = max ? getUintArray(max) : Array\n    if (!UintArray) {\n      throw new Error('invalid max value: ' + max)\n    }\n\n    this.max = max\n    this.maxSize = maxSize\n    this.maxEntrySize = maxEntrySize || this.maxSize\n    this.sizeCalculation = sizeCalculation || length\n    if (this.sizeCalculation) {\n      if (!this.maxSize && !this.maxEntrySize) {\n        throw new TypeError(\n          'cannot set sizeCalculation without setting maxSize or maxEntrySize'\n        )\n      }\n      if (typeof this.sizeCalculation !== 'function') {\n        throw new TypeError('sizeCalculation set to non-function')\n      }\n    }\n\n    this.fetchMethod = fetchMethod || null\n    if (this.fetchMethod && typeof this.fetchMethod !== 'function') {\n      throw new TypeError(\n        'fetchMethod must be a function if specified'\n      )\n    }\n\n    this.fetchContext = fetchContext\n    if (!this.fetchMethod && fetchContext !== undefined) {\n      throw new TypeError(\n        'cannot set fetchContext without fetchMethod'\n      )\n    }\n\n    this.keyMap = new Map()\n    this.keyList = new Array(max).fill(null)\n    this.valList = new Array(max).fill(null)\n    this.next = new UintArray(max)\n    this.prev = new UintArray(max)\n    this.head = 0\n    this.tail = 0\n    this.free = new Stack(max)\n    this.initialFill = 1\n    this.size = 0\n\n    if (typeof dispose === 'function') {\n      this.dispose = dispose\n    }\n    if (typeof disposeAfter === 'function') {\n      this.disposeAfter = disposeAfter\n      this.disposed = []\n    } else {\n      this.disposeAfter = null\n      this.disposed = null\n    }\n    this.noDisposeOnSet = !!noDisposeOnSet\n    this.noUpdateTTL = !!noUpdateTTL\n    this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection\n    this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection\n    this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort\n    this.ignoreFetchAbort = !!ignoreFetchAbort\n\n    // NB: maxEntrySize is set to maxSize if it's set\n    if (this.maxEntrySize !== 0) {\n      if (this.maxSize !== 0) {\n        if (!isPosInt(this.maxSize)) {\n          throw new TypeError(\n            'maxSize must be a positive integer if specified'\n          )\n        }\n      }\n      if (!isPosInt(this.maxEntrySize)) {\n        throw new TypeError(\n          'maxEntrySize must be a positive integer if specified'\n        )\n      }\n      this.initializeSizeTracking()\n    }\n\n    this.allowStale = !!allowStale || !!stale\n    this.noDeleteOnStaleGet = !!noDeleteOnStaleGet\n    this.updateAgeOnGet = !!updateAgeOnGet\n    this.updateAgeOnHas = !!updateAgeOnHas\n    this.ttlResolution =\n      isPosInt(ttlResolution) || ttlResolution === 0\n        ? ttlResolution\n        : 1\n    this.ttlAutopurge = !!ttlAutopurge\n    this.ttl = ttl || maxAge || 0\n    if (this.ttl) {\n      if (!isPosInt(this.ttl)) {\n        throw new TypeError(\n          'ttl must be a positive integer if specified'\n        )\n      }\n      this.initializeTTLTracking()\n    }\n\n    // do not allow completely unbounded caches\n    if (this.max === 0 && this.ttl === 0 && this.maxSize === 0) {\n      throw new TypeError(\n        'At least one of max, maxSize, or ttl is required'\n      )\n    }\n    if (!this.ttlAutopurge && !this.max && !this.maxSize) {\n      const code = 'LRU_CACHE_UNBOUNDED'\n      if (shouldWarn(code)) {\n        warned.add(code)\n        const msg =\n          'TTL caching without ttlAutopurge, max, or maxSize can ' +\n          'result in unbounded memory consumption.'\n        emitWarning(msg, 'UnboundedCacheWarning', code, LRUCache)\n      }\n    }\n\n    if (stale) {\n      deprecatedOption('stale', 'allowStale')\n    }\n    if (maxAge) {\n      deprecatedOption('maxAge', 'ttl')\n    }\n    if (length) {\n      deprecatedOption('length', 'sizeCalculation')\n    }\n  }\n\n  getRemainingTTL(key) {\n    return this.has(key, { updateAgeOnHas: false }) ? Infinity : 0\n  }\n\n  initializeTTLTracking() {\n    this.ttls = new ZeroArray(this.max)\n    this.starts = new ZeroArray(this.max)\n\n    this.setItemTTL = (index, ttl, start = perf.now()) => {\n      this.starts[index] = ttl !== 0 ? start : 0\n      this.ttls[index] = ttl\n      if (ttl !== 0 && this.ttlAutopurge) {\n        const t = setTimeout(() => {\n          if (this.isStale(index)) {\n            this.delete(this.keyList[index])\n          }\n        }, ttl + 1)\n        /* istanbul ignore else - unref() not supported on all platforms */\n        if (t.unref) {\n          t.unref()\n        }\n      }\n    }\n\n    this.updateItemAge = index => {\n      this.starts[index] = this.ttls[index] !== 0 ? perf.now() : 0\n    }\n\n    this.statusTTL = (status, index) => {\n      if (status) {\n        status.ttl = this.ttls[index]\n        status.start = this.starts[index]\n        status.now = cachedNow || getNow()\n        status.remainingTTL = status.now + status.ttl - status.start\n      }\n    }\n\n    // debounce calls to perf.now() to 1s so we're not hitting\n    // that costly call repeatedly.\n    let cachedNow = 0\n    const getNow = () => {\n      const n = perf.now()\n      if (this.ttlResolution > 0) {\n        cachedNow = n\n        const t = setTimeout(\n          () => (cachedNow = 0),\n          this.ttlResolution\n        )\n        /* istanbul ignore else - not available on all platforms */\n        if (t.unref) {\n          t.unref()\n        }\n      }\n      return n\n    }\n\n    this.getRemainingTTL = key => {\n      const index = this.keyMap.get(key)\n      if (index === undefined) {\n        return 0\n      }\n      return this.ttls[index] === 0 || this.starts[index] === 0\n        ? Infinity\n        : this.starts[index] +\n            this.ttls[index] -\n            (cachedNow || getNow())\n    }\n\n    this.isStale = index => {\n      return (\n        this.ttls[index] !== 0 &&\n        this.starts[index] !== 0 &&\n        (cachedNow || getNow()) - this.starts[index] >\n          this.ttls[index]\n      )\n    }\n  }\n  updateItemAge(_index) {}\n  statusTTL(_status, _index) {}\n  setItemTTL(_index, _ttl, _start) {}\n  isStale(_index) {\n    return false\n  }\n\n  initializeSizeTracking() {\n    this.calculatedSize = 0\n    this.sizes = new ZeroArray(this.max)\n    this.removeItemSize = index => {\n      this.calculatedSize -= this.sizes[index]\n      this.sizes[index] = 0\n    }\n    this.requireSize = (k, v, size, sizeCalculation) => {\n      // provisionally accept background fetches.\n      // actual value size will be checked when they return.\n      if (this.isBackgroundFetch(v)) {\n        return 0\n      }\n      if (!isPosInt(size)) {\n        if (sizeCalculation) {\n          if (typeof sizeCalculation !== 'function') {\n            throw new TypeError('sizeCalculation must be a function')\n          }\n          size = sizeCalculation(v, k)\n          if (!isPosInt(size)) {\n            throw new TypeError(\n              'sizeCalculation return invalid (expect positive integer)'\n            )\n          }\n        } else {\n          throw new TypeError(\n            'invalid size value (must be positive integer). ' +\n              'When maxSize or maxEntrySize is used, sizeCalculation or size ' +\n              'must be set.'\n          )\n        }\n      }\n      return size\n    }\n    this.addItemSize = (index, size, status) => {\n      this.sizes[index] = size\n      if (this.maxSize) {\n        const maxSize = this.maxSize - this.sizes[index]\n        while (this.calculatedSize > maxSize) {\n          this.evict(true)\n        }\n      }\n      this.calculatedSize += this.sizes[index]\n      if (status) {\n        status.entrySize = size\n        status.totalCalculatedSize = this.calculatedSize\n      }\n    }\n  }\n  removeItemSize(_index) {}\n  addItemSize(_index, _size) {}\n  requireSize(_k, _v, size, sizeCalculation) {\n    if (size || sizeCalculation) {\n      throw new TypeError(\n        'cannot set size without setting maxSize or maxEntrySize on cache'\n      )\n    }\n  }\n\n  *indexes({ allowStale = this.allowStale } = {}) {\n    if (this.size) {\n      for (let i = this.tail; true; ) {\n        if (!this.isValidIndex(i)) {\n          break\n        }\n        if (allowStale || !this.isStale(i)) {\n          yield i\n        }\n        if (i === this.head) {\n          break\n        } else {\n          i = this.prev[i]\n        }\n      }\n    }\n  }\n\n  *rindexes({ allowStale = this.allowStale } = {}) {\n    if (this.size) {\n      for (let i = this.head; true; ) {\n        if (!this.isValidIndex(i)) {\n          break\n        }\n        if (allowStale || !this.isStale(i)) {\n          yield i\n        }\n        if (i === this.tail) {\n          break\n        } else {\n          i = this.next[i]\n        }\n      }\n    }\n  }\n\n  isValidIndex(index) {\n    return (\n      index !== undefined &&\n      this.keyMap.get(this.keyList[index]) === index\n    )\n  }\n\n  *entries() {\n    for (const i of this.indexes()) {\n      if (\n        this.valList[i] !== undefined &&\n        this.keyList[i] !== undefined &&\n        !this.isBackgroundFetch(this.valList[i])\n      ) {\n        yield [this.keyList[i], this.valList[i]]\n      }\n    }\n  }\n  *rentries() {\n    for (const i of this.rindexes()) {\n      if (\n        this.valList[i] !== undefined &&\n        this.keyList[i] !== undefined &&\n        !this.isBackgroundFetch(this.valList[i])\n      ) {\n        yield [this.keyList[i], this.valList[i]]\n      }\n    }\n  }\n\n  *keys() {\n    for (const i of this.indexes()) {\n      if (\n        this.keyList[i] !== undefined &&\n        !this.isBackgroundFetch(this.valList[i])\n      ) {\n        yield this.keyList[i]\n      }\n    }\n  }\n  *rkeys() {\n    for (const i of this.rindexes()) {\n      if (\n        this.keyList[i] !== undefined &&\n        !this.isBackgroundFetch(this.valList[i])\n      ) {\n        yield this.keyList[i]\n      }\n    }\n  }\n\n  *values() {\n    for (const i of this.indexes()) {\n      if (\n        this.valList[i] !== undefined &&\n        !this.isBackgroundFetch(this.valList[i])\n      ) {\n        yield this.valList[i]\n      }\n    }\n  }\n  *rvalues() {\n    for (const i of this.rindexes()) {\n      if (\n        this.valList[i] !== undefined &&\n        !this.isBackgroundFetch(this.valList[i])\n      ) {\n        yield this.valList[i]\n      }\n    }\n  }\n\n  [Symbol.iterator]() {\n    return this.entries()\n  }\n\n  find(fn, getOptions) {\n    for (const i of this.indexes()) {\n      const v = this.valList[i]\n      const value = this.isBackgroundFetch(v)\n        ? v.__staleWhileFetching\n        : v\n      if (value === undefined) continue\n      if (fn(value, this.keyList[i], this)) {\n        return this.get(this.keyList[i], getOptions)\n      }\n    }\n  }\n\n  forEach(fn, thisp = this) {\n    for (const i of this.indexes()) {\n      const v = this.valList[i]\n      const value = this.isBackgroundFetch(v)\n        ? v.__staleWhileFetching\n        : v\n      if (value === undefined) continue\n      fn.call(thisp, value, this.keyList[i], this)\n    }\n  }\n\n  rforEach(fn, thisp = this) {\n    for (const i of this.rindexes()) {\n      const v = this.valList[i]\n      const value = this.isBackgroundFetch(v)\n        ? v.__staleWhileFetching\n        : v\n      if (value === undefined) continue\n      fn.call(thisp, value, this.keyList[i], this)\n    }\n  }\n\n  get prune() {\n    deprecatedMethod('prune', 'purgeStale')\n    return this.purgeStale\n  }\n\n  purgeStale() {\n    let deleted = false\n    for (const i of this.rindexes({ allowStale: true })) {\n      if (this.isStale(i)) {\n        this.delete(this.keyList[i])\n        deleted = true\n      }\n    }\n    return deleted\n  }\n\n  dump() {\n    const arr = []\n    for (const i of this.indexes({ allowStale: true })) {\n      const key = this.keyList[i]\n      const v = this.valList[i]\n      const value = this.isBackgroundFetch(v)\n        ? v.__staleWhileFetching\n        : v\n      if (value === undefined) continue\n      const entry = { value }\n      if (this.ttls) {\n        entry.ttl = this.ttls[i]\n        // always dump the start relative to a portable timestamp\n        // it's ok for this to be a bit slow, it's a rare operation.\n        const age = perf.now() - this.starts[i]\n        entry.start = Math.floor(Date.now() - age)\n      }\n      if (this.sizes) {\n        entry.size = this.sizes[i]\n      }\n      arr.unshift([key, entry])\n    }\n    return arr\n  }\n\n  load(arr) {\n    this.clear()\n    for (const [key, entry] of arr) {\n      if (entry.start) {\n        // entry.start is a portable timestamp, but we may be using\n        // node's performance.now(), so calculate the offset.\n        // it's ok for this to be a bit slow, it's a rare operation.\n        const age = Date.now() - entry.start\n        entry.start = perf.now() - age\n      }\n      this.set(key, entry.value, entry)\n    }\n  }\n\n  dispose(_v, _k, _reason) {}\n\n  set(\n    k,\n    v,\n    {\n      ttl = this.ttl,\n      start,\n      noDisposeOnSet = this.noDisposeOnSet,\n      size = 0,\n      sizeCalculation = this.sizeCalculation,\n      noUpdateTTL = this.noUpdateTTL,\n      status,\n    } = {}\n  ) {\n    size = this.requireSize(k, v, size, sizeCalculation)\n    // if the item doesn't fit, don't do anything\n    // NB: maxEntrySize set to maxSize by default\n    if (this.maxEntrySize && size > this.maxEntrySize) {\n      if (status) {\n        status.set = 'miss'\n        status.maxEntrySizeExceeded = true\n      }\n      // have to delete, in case a background fetch is there already.\n      // in non-async cases, this is a no-op\n      this.delete(k)\n      return this\n    }\n    let index = this.size === 0 ? undefined : this.keyMap.get(k)\n    if (index === undefined) {\n      // addition\n      index = this.newIndex()\n      this.keyList[index] = k\n      this.valList[index] = v\n      this.keyMap.set(k, index)\n      this.next[this.tail] = index\n      this.prev[index] = this.tail\n      this.tail = index\n      this.size++\n      this.addItemSize(index, size, status)\n      if (status) {\n        status.set = 'add'\n      }\n      noUpdateTTL = false\n    } else {\n      // update\n      this.moveToTail(index)\n      const oldVal = this.valList[index]\n      if (v !== oldVal) {\n        if (this.isBackgroundFetch(oldVal)) {\n          oldVal.__abortController.abort(new Error('replaced'))\n        } else {\n          if (!noDisposeOnSet) {\n            this.dispose(oldVal, k, 'set')\n            if (this.disposeAfter) {\n              this.disposed.push([oldVal, k, 'set'])\n            }\n          }\n        }\n        this.removeItemSize(index)\n        this.valList[index] = v\n        this.addItemSize(index, size, status)\n        if (status) {\n          status.set = 'replace'\n          const oldValue =\n            oldVal && this.isBackgroundFetch(oldVal)\n              ? oldVal.__staleWhileFetching\n              : oldVal\n          if (oldValue !== undefined) status.oldValue = oldValue\n        }\n      } else if (status) {\n        status.set = 'update'\n      }\n    }\n    if (ttl !== 0 && this.ttl === 0 && !this.ttls) {\n      this.initializeTTLTracking()\n    }\n    if (!noUpdateTTL) {\n      this.setItemTTL(index, ttl, start)\n    }\n    this.statusTTL(status, index)\n    if (this.disposeAfter) {\n      while (this.disposed.length) {\n        this.disposeAfter(...this.disposed.shift())\n      }\n    }\n    return this\n  }\n\n  newIndex() {\n    if (this.size === 0) {\n      return this.tail\n    }\n    if (this.size === this.max && this.max !== 0) {\n      return this.evict(false)\n    }\n    if (this.free.length !== 0) {\n      return this.free.pop()\n    }\n    // initial fill, just keep writing down the list\n    return this.initialFill++\n  }\n\n  pop() {\n    if (this.size) {\n      const val = this.valList[this.head]\n      this.evict(true)\n      return val\n    }\n  }\n\n  evict(free) {\n    const head = this.head\n    const k = this.keyList[head]\n    const v = this.valList[head]\n    if (this.isBackgroundFetch(v)) {\n      v.__abortController.abort(new Error('evicted'))\n    } else {\n      this.dispose(v, k, 'evict')\n      if (this.disposeAfter) {\n        this.disposed.push([v, k, 'evict'])\n      }\n    }\n    this.removeItemSize(head)\n    // if we aren't about to use the index, then null these out\n    if (free) {\n      this.keyList[head] = null\n      this.valList[head] = null\n      this.free.push(head)\n    }\n    this.head = this.next[head]\n    this.keyMap.delete(k)\n    this.size--\n    return head\n  }\n\n  has(k, { updateAgeOnHas = this.updateAgeOnHas, status } = {}) {\n    const index = this.keyMap.get(k)\n    if (index !== undefined) {\n      if (!this.isStale(index)) {\n        if (updateAgeOnHas) {\n          this.updateItemAge(index)\n        }\n        if (status) status.has = 'hit'\n        this.statusTTL(status, index)\n        return true\n      } else if (status) {\n        status.has = 'stale'\n        this.statusTTL(status, index)\n      }\n    } else if (status) {\n      status.has = 'miss'\n    }\n    return false\n  }\n\n  // like get(), but without any LRU updating or TTL expiration\n  peek(k, { allowStale = this.allowStale } = {}) {\n    const index = this.keyMap.get(k)\n    if (index !== undefined && (allowStale || !this.isStale(index))) {\n      const v = this.valList[index]\n      // either stale and allowed, or forcing a refresh of non-stale value\n      return this.isBackgroundFetch(v) ? v.__staleWhileFetching : v\n    }\n  }\n\n  backgroundFetch(k, index, options, context) {\n    const v = index === undefined ? undefined : this.valList[index]\n    if (this.isBackgroundFetch(v)) {\n      return v\n    }\n    const ac = new AC()\n    if (options.signal) {\n      options.signal.addEventListener('abort', () =>\n        ac.abort(options.signal.reason)\n      )\n    }\n    const fetchOpts = {\n      signal: ac.signal,\n      options,\n      context,\n    }\n    const cb = (v, updateCache = false) => {\n      const { aborted } = ac.signal\n      const ignoreAbort = options.ignoreFetchAbort && v !== undefined\n      if (options.status) {\n        if (aborted && !updateCache) {\n          options.status.fetchAborted = true\n          options.status.fetchError = ac.signal.reason\n          if (ignoreAbort) options.status.fetchAbortIgnored = true\n        } else {\n          options.status.fetchResolved = true\n        }\n      }\n      if (aborted && !ignoreAbort && !updateCache) {\n        return fetchFail(ac.signal.reason)\n      }\n      // either we didn't abort, and are still here, or we did, and ignored\n      if (this.valList[index] === p) {\n        if (v === undefined) {\n          if (p.__staleWhileFetching) {\n            this.valList[index] = p.__staleWhileFetching\n          } else {\n            this.delete(k)\n          }\n        } else {\n          if (options.status) options.status.fetchUpdated = true\n          this.set(k, v, fetchOpts.options)\n        }\n      }\n      return v\n    }\n    const eb = er => {\n      if (options.status) {\n        options.status.fetchRejected = true\n        options.status.fetchError = er\n      }\n      return fetchFail(er)\n    }\n    const fetchFail = er => {\n      const { aborted } = ac.signal\n      const allowStaleAborted =\n        aborted && options.allowStaleOnFetchAbort\n      const allowStale =\n        allowStaleAborted || options.allowStaleOnFetchRejection\n      const noDelete = allowStale || options.noDeleteOnFetchRejection\n      if (this.valList[index] === p) {\n        // if we allow stale on fetch rejections, then we need to ensure that\n        // the stale value is not removed from the cache when the fetch fails.\n        const del = !noDelete || p.__staleWhileFetching === undefined\n        if (del) {\n          this.delete(k)\n        } else if (!allowStaleAborted) {\n          // still replace the *promise* with the stale value,\n          // since we are done with the promise at this point.\n          // leave it untouched if we're still waiting for an\n          // aborted background fetch that hasn't yet returned.\n          this.valList[index] = p.__staleWhileFetching\n        }\n      }\n      if (allowStale) {\n        if (options.status && p.__staleWhileFetching !== undefined) {\n          options.status.returnedStale = true\n        }\n        return p.__staleWhileFetching\n      } else if (p.__returned === p) {\n        throw er\n      }\n    }\n    const pcall = (res, rej) => {\n      this.fetchMethod(k, v, fetchOpts).then(v => res(v), rej)\n      // ignored, we go until we finish, regardless.\n      // defer check until we are actually aborting,\n      // so fetchMethod can override.\n      ac.signal.addEventListener('abort', () => {\n        if (\n          !options.ignoreFetchAbort ||\n          options.allowStaleOnFetchAbort\n        ) {\n          res()\n          // when it eventually resolves, update the cache.\n          if (options.allowStaleOnFetchAbort) {\n            res = v => cb(v, true)\n          }\n        }\n      })\n    }\n    if (options.status) options.status.fetchDispatched = true\n    const p = new Promise(pcall).then(cb, eb)\n    p.__abortController = ac\n    p.__staleWhileFetching = v\n    p.__returned = null\n    if (index === undefined) {\n      // internal, don't expose status.\n      this.set(k, p, { ...fetchOpts.options, status: undefined })\n      index = this.keyMap.get(k)\n    } else {\n      this.valList[index] = p\n    }\n    return p\n  }\n\n  isBackgroundFetch(p) {\n    return (\n      p &&\n      typeof p === 'object' &&\n      typeof p.then === 'function' &&\n      Object.prototype.hasOwnProperty.call(\n        p,\n        '__staleWhileFetching'\n      ) &&\n      Object.prototype.hasOwnProperty.call(p, '__returned') &&\n      (p.__returned === p || p.__returned === null)\n    )\n  }\n\n  // this takes the union of get() and set() opts, because it does both\n  async fetch(\n    k,\n    {\n      // get options\n      allowStale = this.allowStale,\n      updateAgeOnGet = this.updateAgeOnGet,\n      noDeleteOnStaleGet = this.noDeleteOnStaleGet,\n      // set options\n      ttl = this.ttl,\n      noDisposeOnSet = this.noDisposeOnSet,\n      size = 0,\n      sizeCalculation = this.sizeCalculation,\n      noUpdateTTL = this.noUpdateTTL,\n      // fetch exclusive options\n      noDeleteOnFetchRejection = this.noDeleteOnFetchRejection,\n      allowStaleOnFetchRejection = this.allowStaleOnFetchRejection,\n      ignoreFetchAbort = this.ignoreFetchAbort,\n      allowStaleOnFetchAbort = this.allowStaleOnFetchAbort,\n      fetchContext = this.fetchContext,\n      forceRefresh = false,\n      status,\n      signal,\n    } = {}\n  ) {\n    if (!this.fetchMethod) {\n      if (status) status.fetch = 'get'\n      return this.get(k, {\n        allowStale,\n        updateAgeOnGet,\n        noDeleteOnStaleGet,\n        status,\n      })\n    }\n\n    const options = {\n      allowStale,\n      updateAgeOnGet,\n      noDeleteOnStaleGet,\n      ttl,\n      noDisposeOnSet,\n      size,\n      sizeCalculation,\n      noUpdateTTL,\n      noDeleteOnFetchRejection,\n      allowStaleOnFetchRejection,\n      allowStaleOnFetchAbort,\n      ignoreFetchAbort,\n      status,\n      signal,\n    }\n\n    let index = this.keyMap.get(k)\n    if (index === undefined) {\n      if (status) status.fetch = 'miss'\n      const p = this.backgroundFetch(k, index, options, fetchContext)\n      return (p.__returned = p)\n    } else {\n      // in cache, maybe already fetching\n      const v = this.valList[index]\n      if (this.isBackgroundFetch(v)) {\n        const stale =\n          allowStale && v.__staleWhileFetching !== undefined\n        if (status) {\n          status.fetch = 'inflight'\n          if (stale) status.returnedStale = true\n        }\n        return stale ? v.__staleWhileFetching : (v.__returned = v)\n      }\n\n      // if we force a refresh, that means do NOT serve the cached value,\n      // unless we are already in the process of refreshing the cache.\n      const isStale = this.isStale(index)\n      if (!forceRefresh && !isStale) {\n        if (status) status.fetch = 'hit'\n        this.moveToTail(index)\n        if (updateAgeOnGet) {\n          this.updateItemAge(index)\n        }\n        this.statusTTL(status, index)\n        return v\n      }\n\n      // ok, it is stale or a forced refresh, and not already fetching.\n      // refresh the cache.\n      const p = this.backgroundFetch(k, index, options, fetchContext)\n      const hasStale = p.__staleWhileFetching !== undefined\n      const staleVal = hasStale && allowStale\n      if (status) {\n        status.fetch = hasStale && isStale ? 'stale' : 'refresh'\n        if (staleVal && isStale) status.returnedStale = true\n      }\n      return staleVal ? p.__staleWhileFetching : (p.__returned = p)\n    }\n  }\n\n  get(\n    k,\n    {\n      allowStale = this.allowStale,\n      updateAgeOnGet = this.updateAgeOnGet,\n      noDeleteOnStaleGet = this.noDeleteOnStaleGet,\n      status,\n    } = {}\n  ) {\n    const index = this.keyMap.get(k)\n    if (index !== undefined) {\n      const value = this.valList[index]\n      const fetching = this.isBackgroundFetch(value)\n      this.statusTTL(status, index)\n      if (this.isStale(index)) {\n        if (status) status.get = 'stale'\n        // delete only if not an in-flight background fetch\n        if (!fetching) {\n          if (!noDeleteOnStaleGet) {\n            this.delete(k)\n          }\n          if (status) status.returnedStale = allowStale\n          return allowStale ? value : undefined\n        } else {\n          if (status) {\n            status.returnedStale =\n              allowStale && value.__staleWhileFetching !== undefined\n          }\n          return allowStale ? value.__staleWhileFetching : undefined\n        }\n      } else {\n        if (status) status.get = 'hit'\n        // if we're currently fetching it, we don't actually have it yet\n        // it's not stale, which means this isn't a staleWhileRefetching.\n        // If it's not stale, and fetching, AND has a __staleWhileFetching\n        // value, then that means the user fetched with {forceRefresh:true},\n        // so it's safe to return that value.\n        if (fetching) {\n          return value.__staleWhileFetching\n        }\n        this.moveToTail(index)\n        if (updateAgeOnGet) {\n          this.updateItemAge(index)\n        }\n        return value\n      }\n    } else if (status) {\n      status.get = 'miss'\n    }\n  }\n\n  connect(p, n) {\n    this.prev[n] = p\n    this.next[p] = n\n  }\n\n  moveToTail(index) {\n    // if tail already, nothing to do\n    // if head, move head to next[index]\n    // else\n    //   move next[prev[index]] to next[index] (head has no prev)\n    //   move prev[next[index]] to prev[index]\n    // prev[index] = tail\n    // next[tail] = index\n    // tail = index\n    if (index !== this.tail) {\n      if (index === this.head) {\n        this.head = this.next[index]\n      } else {\n        this.connect(this.prev[index], this.next[index])\n      }\n      this.connect(this.tail, index)\n      this.tail = index\n    }\n  }\n\n  get del() {\n    deprecatedMethod('del', 'delete')\n    return this.delete\n  }\n\n  delete(k) {\n    let deleted = false\n    if (this.size !== 0) {\n      const index = this.keyMap.get(k)\n      if (index !== undefined) {\n        deleted = true\n        if (this.size === 1) {\n          this.clear()\n        } else {\n          this.removeItemSize(index)\n          const v = this.valList[index]\n          if (this.isBackgroundFetch(v)) {\n            v.__abortController.abort(new Error('deleted'))\n          } else {\n            this.dispose(v, k, 'delete')\n            if (this.disposeAfter) {\n              this.disposed.push([v, k, 'delete'])\n            }\n          }\n          this.keyMap.delete(k)\n          this.keyList[index] = null\n          this.valList[index] = null\n          if (index === this.tail) {\n            this.tail = this.prev[index]\n          } else if (index === this.head) {\n            this.head = this.next[index]\n          } else {\n            this.next[this.prev[index]] = this.next[index]\n            this.prev[this.next[index]] = this.prev[index]\n          }\n          this.size--\n          this.free.push(index)\n        }\n      }\n    }\n    if (this.disposed) {\n      while (this.disposed.length) {\n        this.disposeAfter(...this.disposed.shift())\n      }\n    }\n    return deleted\n  }\n\n  clear() {\n    for (const index of this.rindexes({ allowStale: true })) {\n      const v = this.valList[index]\n      if (this.isBackgroundFetch(v)) {\n        v.__abortController.abort(new Error('deleted'))\n      } else {\n        const k = this.keyList[index]\n        this.dispose(v, k, 'delete')\n        if (this.disposeAfter) {\n          this.disposed.push([v, k, 'delete'])\n        }\n      }\n    }\n\n    this.keyMap.clear()\n    this.valList.fill(null)\n    this.keyList.fill(null)\n    if (this.ttls) {\n      this.ttls.fill(0)\n      this.starts.fill(0)\n    }\n    if (this.sizes) {\n      this.sizes.fill(0)\n    }\n    this.head = 0\n    this.tail = 0\n    this.initialFill = 1\n    this.free.length = 0\n    this.calculatedSize = 0\n    this.size = 0\n    if (this.disposed) {\n      while (this.disposed.length) {\n        this.disposeAfter(...this.disposed.shift())\n      }\n    }\n  }\n\n  get reset() {\n    deprecatedMethod('reset', 'clear')\n    return this.clear\n  }\n\n  get length() {\n    deprecatedProperty('length', 'size')\n    return this.size\n  }\n\n  static get AbortController() {\n    return AC\n  }\n  static get AbortSignal() {\n    return AS\n  }\n}\n\nmodule.exports = LRUCache\n", "'use strict'\n\nconst LRU = require('lru-cache')\n\nconst MEMOIZED = new LRU({\n  max: 500,\n  maxSize: 50 * 1024 * 1024, // 50MB\n  ttl: 3 * 60 * 1000, // 3 minutes\n  sizeCalculation: (entry, key) => key.startsWith('key:') ? entry.data.length : entry.length,\n})\n\nmodule.exports.clearMemoized = clearMemoized\n\nfunction clearMemoized () {\n  const old = {}\n  MEMOIZED.forEach((v, k) => {\n    old[k] = v\n  })\n  MEMOIZED.clear()\n  return old\n}\n\nmodule.exports.put = put\n\nfunction put (cache, entry, data, opts) {\n  pickMem(opts).set(`key:${cache}:${entry.key}`, { entry, data })\n  putDigest(cache, entry.integrity, data, opts)\n}\n\nmodule.exports.put.byDigest = putDigest\n\nfunction putDigest (cache, integrity, data, opts) {\n  pickMem(opts).set(`digest:${cache}:${integrity}`, data)\n}\n\nmodule.exports.get = get\n\nfunction get (cache, key, opts) {\n  return pickMem(opts).get(`key:${cache}:${key}`)\n}\n\nmodule.exports.get.byDigest = getDigest\n\nfunction getDigest (cache, integrity, opts) {\n  return pickMem(opts).get(`digest:${cache}:${integrity}`)\n}\n\nclass ObjProxy {\n  constructor (obj) {\n    this.obj = obj\n  }\n\n  get (key) {\n    return this.obj[key]\n  }\n\n  set (key, val) {\n    this.obj[key] = val\n  }\n}\n\nfunction pickMem (opts) {\n  if (!opts || !opts.memoize) {\n    return MEMOIZED\n  } else if (opts.memoize.get && opts.memoize.set) {\n    return opts.memoize\n  } else if (typeof opts.memoize === 'object') {\n    return new ObjProxy(opts.memoize)\n  } else {\n    return MEMOIZED\n  }\n}\n", "'use strict'\nconst { Minipass } = require('minipass')\nconst EE = require('events').EventEmitter\nconst fs = require('fs')\n\nconst writev = fs.writev\n\nconst _autoClose = Symbol('_autoClose')\nconst _close = Symbol('_close')\nconst _ended = Symbol('_ended')\nconst _fd = Symbol('_fd')\nconst _finished = Symbol('_finished')\nconst _flags = Symbol('_flags')\nconst _flush = Symbol('_flush')\nconst _handleChunk = Symbol('_handleChunk')\nconst _makeBuf = Symbol('_makeBuf')\nconst _mode = Symbol('_mode')\nconst _needDrain = Symbol('_needDrain')\nconst _onerror = Symbol('_onerror')\nconst _onopen = Symbol('_onopen')\nconst _onread = Symbol('_onread')\nconst _onwrite = Symbol('_onwrite')\nconst _open = Symbol('_open')\nconst _path = Symbol('_path')\nconst _pos = Symbol('_pos')\nconst _queue = Symbol('_queue')\nconst _read = Symbol('_read')\nconst _readSize = Symbol('_readSize')\nconst _reading = Symbol('_reading')\nconst _remain = Symbol('_remain')\nconst _size = Symbol('_size')\nconst _write = Symbol('_write')\nconst _writing = Symbol('_writing')\nconst _defaultFlag = Symbol('_defaultFlag')\nconst _errored = Symbol('_errored')\n\nclass ReadStream extends Minipass {\n  constructor (path, opt) {\n    opt = opt || {}\n    super(opt)\n\n    this.readable = true\n    this.writable = false\n\n    if (typeof path !== 'string') {\n      throw new TypeError('path must be a string')\n    }\n\n    this[_errored] = false\n    this[_fd] = typeof opt.fd === 'number' ? opt.fd : null\n    this[_path] = path\n    this[_readSize] = opt.readSize || 16 * 1024 * 1024\n    this[_reading] = false\n    this[_size] = typeof opt.size === 'number' ? opt.size : Infinity\n    this[_remain] = this[_size]\n    this[_autoClose] = typeof opt.autoClose === 'boolean' ?\n      opt.autoClose : true\n\n    if (typeof this[_fd] === 'number') {\n      this[_read]()\n    } else {\n      this[_open]()\n    }\n  }\n\n  get fd () {\n    return this[_fd]\n  }\n\n  get path () {\n    return this[_path]\n  }\n\n  write () {\n    throw new TypeError('this is a readable stream')\n  }\n\n  end () {\n    throw new TypeError('this is a readable stream')\n  }\n\n  [_open] () {\n    fs.open(this[_path], 'r', (er, fd) => this[_onopen](er, fd))\n  }\n\n  [_onopen] (er, fd) {\n    if (er) {\n      this[_onerror](er)\n    } else {\n      this[_fd] = fd\n      this.emit('open', fd)\n      this[_read]()\n    }\n  }\n\n  [_makeBuf] () {\n    return Buffer.allocUnsafe(Math.min(this[_readSize], this[_remain]))\n  }\n\n  [_read] () {\n    if (!this[_reading]) {\n      this[_reading] = true\n      const buf = this[_makeBuf]()\n      /* istanbul ignore if */\n      if (buf.length === 0) {\n        return process.nextTick(() => this[_onread](null, 0, buf))\n      }\n      fs.read(this[_fd], buf, 0, buf.length, null, (er, br, b) =>\n        this[_onread](er, br, b))\n    }\n  }\n\n  [_onread] (er, br, buf) {\n    this[_reading] = false\n    if (er) {\n      this[_onerror](er)\n    } else if (this[_handleChunk](br, buf)) {\n      this[_read]()\n    }\n  }\n\n  [_close] () {\n    if (this[_autoClose] && typeof this[_fd] === 'number') {\n      const fd = this[_fd]\n      this[_fd] = null\n      fs.close(fd, er => er ? this.emit('error', er) : this.emit('close'))\n    }\n  }\n\n  [_onerror] (er) {\n    this[_reading] = true\n    this[_close]()\n    this.emit('error', er)\n  }\n\n  [_handleChunk] (br, buf) {\n    let ret = false\n    // no effect if infinite\n    this[_remain] -= br\n    if (br > 0) {\n      ret = super.write(br < buf.length ? buf.slice(0, br) : buf)\n    }\n\n    if (br === 0 || this[_remain] <= 0) {\n      ret = false\n      this[_close]()\n      super.end()\n    }\n\n    return ret\n  }\n\n  emit (ev, data) {\n    switch (ev) {\n      case 'prefinish':\n      case 'finish':\n        break\n\n      case 'drain':\n        if (typeof this[_fd] === 'number') {\n          this[_read]()\n        }\n        break\n\n      case 'error':\n        if (this[_errored]) {\n          return\n        }\n        this[_errored] = true\n        return super.emit(ev, data)\n\n      default:\n        return super.emit(ev, data)\n    }\n  }\n}\n\nclass ReadStreamSync extends ReadStream {\n  [_open] () {\n    let threw = true\n    try {\n      this[_onopen](null, fs.openSync(this[_path], 'r'))\n      threw = false\n    } finally {\n      if (threw) {\n        this[_close]()\n      }\n    }\n  }\n\n  [_read] () {\n    let threw = true\n    try {\n      if (!this[_reading]) {\n        this[_reading] = true\n        do {\n          const buf = this[_makeBuf]()\n          /* istanbul ignore next */\n          const br = buf.length === 0 ? 0\n            : fs.readSync(this[_fd], buf, 0, buf.length, null)\n          if (!this[_handleChunk](br, buf)) {\n            break\n          }\n        } while (true)\n        this[_reading] = false\n      }\n      threw = false\n    } finally {\n      if (threw) {\n        this[_close]()\n      }\n    }\n  }\n\n  [_close] () {\n    if (this[_autoClose] && typeof this[_fd] === 'number') {\n      const fd = this[_fd]\n      this[_fd] = null\n      fs.closeSync(fd)\n      this.emit('close')\n    }\n  }\n}\n\nclass WriteStream extends EE {\n  constructor (path, opt) {\n    opt = opt || {}\n    super(opt)\n    this.readable = false\n    this.writable = true\n    this[_errored] = false\n    this[_writing] = false\n    this[_ended] = false\n    this[_needDrain] = false\n    this[_queue] = []\n    this[_path] = path\n    this[_fd] = typeof opt.fd === 'number' ? opt.fd : null\n    this[_mode] = opt.mode === undefined ? 0o666 : opt.mode\n    this[_pos] = typeof opt.start === 'number' ? opt.start : null\n    this[_autoClose] = typeof opt.autoClose === 'boolean' ?\n      opt.autoClose : true\n\n    // truncating makes no sense when writing into the middle\n    const defaultFlag = this[_pos] !== null ? 'r+' : 'w'\n    this[_defaultFlag] = opt.flags === undefined\n    this[_flags] = this[_defaultFlag] ? defaultFlag : opt.flags\n\n    if (this[_fd] === null) {\n      this[_open]()\n    }\n  }\n\n  emit (ev, data) {\n    if (ev === 'error') {\n      if (this[_errored]) {\n        return\n      }\n      this[_errored] = true\n    }\n    return super.emit(ev, data)\n  }\n\n  get fd () {\n    return this[_fd]\n  }\n\n  get path () {\n    return this[_path]\n  }\n\n  [_onerror] (er) {\n    this[_close]()\n    this[_writing] = true\n    this.emit('error', er)\n  }\n\n  [_open] () {\n    fs.open(this[_path], this[_flags], this[_mode],\n      (er, fd) => this[_onopen](er, fd))\n  }\n\n  [_onopen] (er, fd) {\n    if (this[_defaultFlag] &&\n        this[_flags] === 'r+' &&\n        er && er.code === 'ENOENT') {\n      this[_flags] = 'w'\n      this[_open]()\n    } else if (er) {\n      this[_onerror](er)\n    } else {\n      this[_fd] = fd\n      this.emit('open', fd)\n      if (!this[_writing]) {\n        this[_flush]()\n      }\n    }\n  }\n\n  end (buf, enc) {\n    if (buf) {\n      this.write(buf, enc)\n    }\n\n    this[_ended] = true\n\n    // synthetic after-write logic, where drain/finish live\n    if (!this[_writing] && !this[_queue].length &&\n        typeof this[_fd] === 'number') {\n      this[_onwrite](null, 0)\n    }\n    return this\n  }\n\n  write (buf, enc) {\n    if (typeof buf === 'string') {\n      buf = Buffer.from(buf, enc)\n    }\n\n    if (this[_ended]) {\n      this.emit('error', new Error('write() after end()'))\n      return false\n    }\n\n    if (this[_fd] === null || this[_writing] || this[_queue].length) {\n      this[_queue].push(buf)\n      this[_needDrain] = true\n      return false\n    }\n\n    this[_writing] = true\n    this[_write](buf)\n    return true\n  }\n\n  [_write] (buf) {\n    fs.write(this[_fd], buf, 0, buf.length, this[_pos], (er, bw) =>\n      this[_onwrite](er, bw))\n  }\n\n  [_onwrite] (er, bw) {\n    if (er) {\n      this[_onerror](er)\n    } else {\n      if (this[_pos] !== null) {\n        this[_pos] += bw\n      }\n      if (this[_queue].length) {\n        this[_flush]()\n      } else {\n        this[_writing] = false\n\n        if (this[_ended] && !this[_finished]) {\n          this[_finished] = true\n          this[_close]()\n          this.emit('finish')\n        } else if (this[_needDrain]) {\n          this[_needDrain] = false\n          this.emit('drain')\n        }\n      }\n    }\n  }\n\n  [_flush] () {\n    if (this[_queue].length === 0) {\n      if (this[_ended]) {\n        this[_onwrite](null, 0)\n      }\n    } else if (this[_queue].length === 1) {\n      this[_write](this[_queue].pop())\n    } else {\n      const iovec = this[_queue]\n      this[_queue] = []\n      writev(this[_fd], iovec, this[_pos],\n        (er, bw) => this[_onwrite](er, bw))\n    }\n  }\n\n  [_close] () {\n    if (this[_autoClose] && typeof this[_fd] === 'number') {\n      const fd = this[_fd]\n      this[_fd] = null\n      fs.close(fd, er => er ? this.emit('error', er) : this.emit('close'))\n    }\n  }\n}\n\nclass WriteStreamSync extends WriteStream {\n  [_open] () {\n    let fd\n    // only wrap in a try{} block if we know we'll retry, to avoid\n    // the rethrow obscuring the error's source frame in most cases.\n    if (this[_defaultFlag] && this[_flags] === 'r+') {\n      try {\n        fd = fs.openSync(this[_path], this[_flags], this[_mode])\n      } catch (er) {\n        if (er.code === 'ENOENT') {\n          this[_flags] = 'w'\n          return this[_open]()\n        } else {\n          throw er\n        }\n      }\n    } else {\n      fd = fs.openSync(this[_path], this[_flags], this[_mode])\n    }\n\n    this[_onopen](null, fd)\n  }\n\n  [_close] () {\n    if (this[_autoClose] && typeof this[_fd] === 'number') {\n      const fd = this[_fd]\n      this[_fd] = null\n      fs.closeSync(fd)\n      this.emit('close')\n    }\n  }\n\n  [_write] (buf) {\n    // throw the original, but try to close if it fails\n    let threw = true\n    try {\n      this[_onwrite](null,\n        fs.writeSync(this[_fd], buf, 0, buf.length, this[_pos]))\n      threw = false\n    } finally {\n      if (threw) {\n        try {\n          this[_close]()\n        } catch {\n          // ok error\n        }\n      }\n    }\n  }\n}\n\nexports.ReadStream = ReadStream\nexports.ReadStreamSync = ReadStreamSync\n\nexports.WriteStream = WriteStream\nexports.WriteStreamSync = WriteStreamSync\n", "'use strict'\n\nconst fs = require('fs/promises')\nconst fsm = require('fs-minipass')\nconst ssri = require('ssri')\nconst contentPath = require('./path')\nconst Pipeline = require('minipass-pipeline')\n\nmodule.exports = read\n\nconst MAX_SINGLE_READ_SIZE = 64 * 1024 * 1024\nasync function read (cache, integrity, opts = {}) {\n  const { size } = opts\n  const { stat, cpath, sri } = await withContentSri(cache, integrity, async (cpath, sri) => {\n    // get size\n    const stat = await fs.stat(cpath)\n    return { stat, cpath, sri }\n  })\n  if (typeof size === 'number' && stat.size !== size) {\n    throw sizeError(size, stat.size)\n  }\n\n  if (stat.size > MAX_SINGLE_READ_SIZE) {\n    return readPipeline(cpath, stat.size, sri, new Pipeline()).concat()\n  }\n\n  const data = await fs.readFile(cpath, { encoding: null })\n  if (!ssri.checkData(data, sri)) {\n    throw integrityError(sri, cpath)\n  }\n\n  return data\n}\n\nconst readPipeline = (cpath, size, sri, stream) => {\n  stream.push(\n    new fsm.ReadStream(cpath, {\n      size,\n      readSize: MAX_SINGLE_READ_SIZE,\n    }),\n    ssri.integrityStream({\n      integrity: sri,\n      size,\n    })\n  )\n  return stream\n}\n\nmodule.exports.stream = readStream\nmodule.exports.readStream = readStream\n\nfunction readStream (cache, integrity, opts = {}) {\n  const { size } = opts\n  const stream = new Pipeline()\n  // Set all this up to run on the stream and then just return the stream\n  Promise.resolve().then(async () => {\n    const { stat, cpath, sri } = await withContentSri(cache, integrity, async (cpath, sri) => {\n      // just stat to ensure it exists\n      const stat = await fs.stat(cpath)\n      return { stat, cpath, sri }\n    })\n    if (typeof size === 'number' && size !== stat.size) {\n      return stream.emit('error', sizeError(size, stat.size))\n    }\n\n    return readPipeline(cpath, stat.size, sri, stream)\n  }).catch(err => stream.emit('error', err))\n\n  return stream\n}\n\nmodule.exports.copy = copy\n\nfunction copy (cache, integrity, dest) {\n  return withContentSri(cache, integrity, (cpath, sri) => {\n    return fs.copyFile(cpath, dest)\n  })\n}\n\nmodule.exports.hasContent = hasContent\n\nasync function hasContent (cache, integrity) {\n  if (!integrity) {\n    return false\n  }\n\n  try {\n    return await withContentSri(cache, integrity, async (cpath, sri) => {\n      const stat = await fs.stat(cpath)\n      return { size: stat.size, sri, stat }\n    })\n  } catch (err) {\n    if (err.code === 'ENOENT') {\n      return false\n    }\n\n    if (err.code === 'EPERM') {\n      /* istanbul ignore else */\n      if (process.platform !== 'win32') {\n        throw err\n      } else {\n        return false\n      }\n    }\n  }\n}\n\nasync function withContentSri (cache, integrity, fn) {\n  const sri = ssri.parse(integrity)\n  // If `integrity` has multiple entries, pick the first digest\n  // with available local data.\n  const algo = sri.pickAlgorithm()\n  const digests = sri[algo]\n\n  if (digests.length <= 1) {\n    const cpath = contentPath(cache, digests[0])\n    return fn(cpath, digests[0])\n  } else {\n    // Can't use race here because a generic error can happen before\n    // a ENOENT error, and can happen before a valid result\n    const results = await Promise.all(digests.map(async (meta) => {\n      try {\n        return await withContentSri(cache, meta, fn)\n      } catch (err) {\n        if (err.code === 'ENOENT') {\n          return Object.assign(\n            new Error('No matching content found for ' + sri.toString()),\n            { code: 'ENOENT' }\n          )\n        }\n        return err\n      }\n    }))\n    // Return the first non error if it is found\n    const result = results.find((r) => !(r instanceof Error))\n    if (result) {\n      return result\n    }\n\n    // Throw the No matching content found error\n    const enoentError = results.find((r) => r.code === 'ENOENT')\n    if (enoentError) {\n      throw enoentError\n    }\n\n    // Throw generic error\n    throw results.find((r) => r instanceof Error)\n  }\n}\n\nfunction sizeError (expected, found) {\n  /* eslint-disable-next-line max-len */\n  const err = new Error(`Bad data size: expected inserted data to be ${expected} bytes, but got ${found} instead`)\n  err.expected = expected\n  err.found = found\n  err.code = 'EBADSIZE'\n  return err\n}\n\nfunction integrityError (sri, path) {\n  const err = new Error(`Integrity verification failed for ${sri} (${path})`)\n  err.code = 'EINTEGRITY'\n  err.sri = sri\n  err.path = path\n  return err\n}\n", "'use strict'\n\nconst Collect = require('minipass-collect')\nconst { Minipass } = require('minipass')\nconst Pipeline = require('minipass-pipeline')\n\nconst index = require('./entry-index')\nconst memo = require('./memoization')\nconst read = require('./content/read')\n\nasync function getData (cache, key, opts = {}) {\n  const { integrity, memoize, size } = opts\n  const memoized = memo.get(cache, key, opts)\n  if (memoized && memoize !== false) {\n    return {\n      metadata: memoized.entry.metadata,\n      data: memoized.data,\n      integrity: memoized.entry.integrity,\n      size: memoized.entry.size,\n    }\n  }\n\n  const entry = await index.find(cache, key, opts)\n  if (!entry) {\n    throw new index.NotFoundError(cache, key)\n  }\n  const data = await read(cache, entry.integrity, { integrity, size })\n  if (memoize) {\n    memo.put(cache, entry, data, opts)\n  }\n\n  return {\n    data,\n    metadata: entry.metadata,\n    size: entry.size,\n    integrity: entry.integrity,\n  }\n}\nmodule.exports = getData\n\nasync function getDataByDigest (cache, key, opts = {}) {\n  const { integrity, memoize, size } = opts\n  const memoized = memo.get.byDigest(cache, key, opts)\n  if (memoized && memoize !== false) {\n    return memoized\n  }\n\n  const res = await read(cache, key, { integrity, size })\n  if (memoize) {\n    memo.put.byDigest(cache, key, res, opts)\n  }\n  return res\n}\nmodule.exports.byDigest = getDataByDigest\n\nconst getMemoizedStream = (memoized) => {\n  const stream = new Minipass()\n  stream.on('newListener', function (ev, cb) {\n    ev === 'metadata' && cb(memoized.entry.metadata)\n    ev === 'integrity' && cb(memoized.entry.integrity)\n    ev === 'size' && cb(memoized.entry.size)\n  })\n  stream.end(memoized.data)\n  return stream\n}\n\nfunction getStream (cache, key, opts = {}) {\n  const { memoize, size } = opts\n  const memoized = memo.get(cache, key, opts)\n  if (memoized && memoize !== false) {\n    return getMemoizedStream(memoized)\n  }\n\n  const stream = new Pipeline()\n  // Set all this up to run on the stream and then just return the stream\n  Promise.resolve().then(async () => {\n    const entry = await index.find(cache, key)\n    if (!entry) {\n      throw new index.NotFoundError(cache, key)\n    }\n\n    stream.emit('metadata', entry.metadata)\n    stream.emit('integrity', entry.integrity)\n    stream.emit('size', entry.size)\n    stream.on('newListener', function (ev, cb) {\n      ev === 'metadata' && cb(entry.metadata)\n      ev === 'integrity' && cb(entry.integrity)\n      ev === 'size' && cb(entry.size)\n    })\n\n    const src = read.readStream(\n      cache,\n      entry.integrity,\n      { ...opts, size: typeof size !== 'number' ? entry.size : size }\n    )\n\n    if (memoize) {\n      const memoStream = new Collect.PassThrough()\n      memoStream.on('collect', data => memo.put(cache, entry, data, opts))\n      stream.unshift(memoStream)\n    }\n    stream.unshift(src)\n    return stream\n  }).catch((err) => stream.emit('error', err))\n\n  return stream\n}\n\nmodule.exports.stream = getStream\n\nfunction getStreamDigest (cache, integrity, opts = {}) {\n  const { memoize } = opts\n  const memoized = memo.get.byDigest(cache, integrity, opts)\n  if (memoized && memoize !== false) {\n    const stream = new Minipass()\n    stream.end(memoized)\n    return stream\n  } else {\n    const stream = read.readStream(cache, integrity, opts)\n    if (!memoize) {\n      return stream\n    }\n\n    const memoStream = new Collect.PassThrough()\n    memoStream.on('collect', data => memo.put.byDigest(\n      cache,\n      integrity,\n      data,\n      opts\n    ))\n    return new Pipeline(stream, memoStream)\n  }\n}\n\nmodule.exports.stream.byDigest = getStreamDigest\n\nfunction info (cache, key, opts = {}) {\n  const { memoize } = opts\n  const memoized = memo.get(cache, key, opts)\n  if (memoized && memoize !== false) {\n    return Promise.resolve(memoized.entry)\n  } else {\n    return index.find(cache, key)\n  }\n}\nmodule.exports.info = info\n\nasync function copy (cache, key, dest, opts = {}) {\n  const entry = await index.find(cache, key, opts)\n  if (!entry) {\n    throw new index.NotFoundError(cache, key)\n  }\n  await read.copy(cache, entry.integrity, dest, opts)\n  return {\n    metadata: entry.metadata,\n    size: entry.size,\n    integrity: entry.integrity,\n  }\n}\n\nmodule.exports.copy = copy\n\nasync function copyByDigest (cache, key, dest, opts = {}) {\n  await read.copy(cache, key, dest, opts)\n  return key\n}\n\nmodule.exports.copy.byDigest = copyByDigest\n\nmodule.exports.hasContent = read.hasContent\n", "'use strict'\n\nconst events = require('events')\n\nconst contentPath = require('./path')\nconst fs = require('fs/promises')\nconst { moveFile } = require('@npmcli/fs')\nconst { Minipass } = require('minipass')\nconst Pipeline = require('minipass-pipeline')\nconst Flush = require('minipass-flush')\nconst path = require('path')\nconst ssri = require('ssri')\nconst uniqueFilename = require('unique-filename')\nconst fsm = require('fs-minipass')\n\nmodule.exports = write\n\n// Cache of move operations in process so we don't duplicate\nconst moveOperations = new Map()\n\nasync function write (cache, data, opts = {}) {\n  const { algorithms, size, integrity } = opts\n\n  if (typeof size === 'number' && data.length !== size) {\n    throw sizeError(size, data.length)\n  }\n\n  const sri = ssri.fromData(data, algorithms ? { algorithms } : {})\n  if (integrity && !ssri.checkData(data, integrity, opts)) {\n    throw checksumError(integrity, sri)\n  }\n\n  for (const algo in sri) {\n    const tmp = await makeTmp(cache, opts)\n    const hash = sri[algo].toString()\n    try {\n      await fs.writeFile(tmp.target, data, { flag: 'wx' })\n      await moveToDestination(tmp, cache, hash, opts)\n    } finally {\n      if (!tmp.moved) {\n        await fs.rm(tmp.target, { recursive: true, force: true })\n      }\n    }\n  }\n  return { integrity: sri, size: data.length }\n}\n\nmodule.exports.stream = writeStream\n\n// writes proxied to the 'inputStream' that is passed to the Promise\n// 'end' is deferred until content is handled.\nclass CacacheWriteStream extends Flush {\n  constructor (cache, opts) {\n    super()\n    this.opts = opts\n    this.cache = cache\n    this.inputStream = new Minipass()\n    this.inputStream.on('error', er => this.emit('error', er))\n    this.inputStream.on('drain', () => this.emit('drain'))\n    this.handleContentP = null\n  }\n\n  write (chunk, encoding, cb) {\n    if (!this.handleContentP) {\n      this.handleContentP = handleContent(\n        this.inputStream,\n        this.cache,\n        this.opts\n      )\n    }\n    return this.inputStream.write(chunk, encoding, cb)\n  }\n\n  flush (cb) {\n    this.inputStream.end(() => {\n      if (!this.handleContentP) {\n        const e = new Error('Cache input stream was empty')\n        e.code = 'ENODATA'\n        // empty streams are probably emitting end right away.\n        // defer this one tick by rejecting a promise on it.\n        return Promise.reject(e).catch(cb)\n      }\n      // eslint-disable-next-line promise/catch-or-return\n      this.handleContentP.then(\n        (res) => {\n          res.integrity && this.emit('integrity', res.integrity)\n          // eslint-disable-next-line promise/always-return\n          res.size !== null && this.emit('size', res.size)\n          cb()\n        },\n        (er) => cb(er)\n      )\n    })\n  }\n}\n\nfunction writeStream (cache, opts = {}) {\n  return new CacacheWriteStream(cache, opts)\n}\n\nasync function handleContent (inputStream, cache, opts) {\n  const tmp = await makeTmp(cache, opts)\n  try {\n    const res = await pipeToTmp(inputStream, cache, tmp.target, opts)\n    await moveToDestination(\n      tmp,\n      cache,\n      res.integrity,\n      opts\n    )\n    return res\n  } finally {\n    if (!tmp.moved) {\n      await fs.rm(tmp.target, { recursive: true, force: true })\n    }\n  }\n}\n\nasync function pipeToTmp (inputStream, cache, tmpTarget, opts) {\n  const outStream = new fsm.WriteStream(tmpTarget, {\n    flags: 'wx',\n  })\n\n  if (opts.integrityEmitter) {\n    // we need to create these all simultaneously since they can fire in any order\n    const [integrity, size] = await Promise.all([\n      events.once(opts.integrityEmitter, 'integrity').then(res => res[0]),\n      events.once(opts.integrityEmitter, 'size').then(res => res[0]),\n      new Pipeline(inputStream, outStream).promise(),\n    ])\n    return { integrity, size }\n  }\n\n  let integrity\n  let size\n  const hashStream = ssri.integrityStream({\n    integrity: opts.integrity,\n    algorithms: opts.algorithms,\n    size: opts.size,\n  })\n  hashStream.on('integrity', i => {\n    integrity = i\n  })\n  hashStream.on('size', s => {\n    size = s\n  })\n\n  const pipeline = new Pipeline(inputStream, hashStream, outStream)\n  await pipeline.promise()\n  return { integrity, size }\n}\n\nasync function makeTmp (cache, opts) {\n  const tmpTarget = uniqueFilename(path.join(cache, 'tmp'), opts.tmpPrefix)\n  await fs.mkdir(path.dirname(tmpTarget), { recursive: true })\n  return {\n    target: tmpTarget,\n    moved: false,\n  }\n}\n\nasync function moveToDestination (tmp, cache, sri, opts) {\n  const destination = contentPath(cache, sri)\n  const destDir = path.dirname(destination)\n  if (moveOperations.has(destination)) {\n    return moveOperations.get(destination)\n  }\n  moveOperations.set(\n    destination,\n    fs.mkdir(destDir, { recursive: true })\n      .then(async () => {\n        await moveFile(tmp.target, destination, { overwrite: false })\n        tmp.moved = true\n        return tmp.moved\n      })\n      .catch(err => {\n        if (!err.message.startsWith('The destination file exists')) {\n          throw Object.assign(err, { code: 'EEXIST' })\n        }\n      }).finally(() => {\n        moveOperations.delete(destination)\n      })\n\n  )\n  return moveOperations.get(destination)\n}\n\nfunction sizeError (expected, found) {\n  /* eslint-disable-next-line max-len */\n  const err = new Error(`Bad data size: expected inserted data to be ${expected} bytes, but got ${found} instead`)\n  err.expected = expected\n  err.found = found\n  err.code = 'EBADSIZE'\n  return err\n}\n\nfunction checksumError (expected, found) {\n  const err = new Error(`Integrity check failed:\n  Wanted: ${expected}\n   Found: ${found}`)\n  err.code = 'EINTEGRITY'\n  err.expected = expected\n  err.found = found\n  return err\n}\n", "'use strict'\n\nconst index = require('./entry-index')\nconst memo = require('./memoization')\nconst write = require('./content/write')\nconst Flush = require('minipass-flush')\nconst { PassThrough } = require('minipass-collect')\nconst Pipeline = require('minipass-pipeline')\n\nconst putOpts = (opts) => ({\n  algorithms: ['sha512'],\n  ...opts,\n})\n\nmodule.exports = putData\n\nasync function putData (cache, key, data, opts = {}) {\n  const { memoize } = opts\n  opts = putOpts(opts)\n  const res = await write(cache, data, opts)\n  const entry = await index.insert(cache, key, res.integrity, { ...opts, size: res.size })\n  if (memoize) {\n    memo.put(cache, entry, data, opts)\n  }\n\n  return res.integrity\n}\n\nmodule.exports.stream = putStream\n\nfunction putStream (cache, key, opts = {}) {\n  const { memoize } = opts\n  opts = putOpts(opts)\n  let integrity\n  let size\n  let error\n\n  let memoData\n  const pipeline = new Pipeline()\n  // first item in the pipeline is the memoizer, because we need\n  // that to end first and get the collected data.\n  if (memoize) {\n    const memoizer = new PassThrough().on('collect', data => {\n      memoData = data\n    })\n    pipeline.push(memoizer)\n  }\n\n  // contentStream is a write-only, not a passthrough\n  // no data comes out of it.\n  const contentStream = write.stream(cache, opts)\n    .on('integrity', (int) => {\n      integrity = int\n    })\n    .on('size', (s) => {\n      size = s\n    })\n    .on('error', (err) => {\n      error = err\n    })\n\n  pipeline.push(contentStream)\n\n  // last but not least, we write the index and emit hash and size,\n  // and memoize if we're doing that\n  pipeline.push(new Flush({\n    async flush () {\n      if (!error) {\n        const entry = await index.insert(cache, key, integrity, { ...opts, size })\n        if (memoize && memoData) {\n          memo.put(cache, entry, memoData, opts)\n        }\n        pipeline.emit('integrity', integrity)\n        pipeline.emit('size', size)\n      }\n    },\n  }))\n\n  return pipeline\n}\n", "'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n  if (a instanceof RegExp) a = maybeMatch(a, str);\n  if (b instanceof RegExp) b = maybeMatch(b, str);\n\n  var r = range(a, b, str);\n\n  return r && {\n    start: r[0],\n    end: r[1],\n    pre: str.slice(0, r[0]),\n    body: str.slice(r[0] + a.length, r[1]),\n    post: str.slice(r[1] + b.length)\n  };\n}\n\nfunction maybeMatch(reg, str) {\n  var m = str.match(reg);\n  return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n  var begs, beg, left, right, result;\n  var ai = str.indexOf(a);\n  var bi = str.indexOf(b, ai + 1);\n  var i = ai;\n\n  if (ai >= 0 && bi > 0) {\n    if(a===b) {\n      return [ai, bi];\n    }\n    begs = [];\n    left = str.length;\n\n    while (i >= 0 && !result) {\n      if (i == ai) {\n        begs.push(i);\n        ai = str.indexOf(a, i + 1);\n      } else if (begs.length == 1) {\n        result = [ begs.pop(), bi ];\n      } else {\n        beg = begs.pop();\n        if (beg < left) {\n          left = beg;\n          right = bi;\n        }\n\n        bi = str.indexOf(b, i + 1);\n      }\n\n      i = ai < bi && ai >= 0 ? ai : bi;\n    }\n\n    if (begs.length) {\n      result = [ left, right ];\n    }\n  }\n\n  return result;\n}\n", "var balanced = require('balanced-match');\n\nmodule.exports = expandTop;\n\nvar escSlash = '\\0SLASH'+Math.random()+'\\0';\nvar escOpen = '\\0OPEN'+Math.random()+'\\0';\nvar escClose = '\\0CLOSE'+Math.random()+'\\0';\nvar escComma = '\\0COMMA'+Math.random()+'\\0';\nvar escPeriod = '\\0PERIOD'+Math.random()+'\\0';\n\nfunction numeric(str) {\n  return parseInt(str, 10) == str\n    ? parseInt(str, 10)\n    : str.charCodeAt(0);\n}\n\nfunction escapeBraces(str) {\n  return str.split('\\\\\\\\').join(escSlash)\n            .split('\\\\{').join(escOpen)\n            .split('\\\\}').join(escClose)\n            .split('\\\\,').join(escComma)\n            .split('\\\\.').join(escPeriod);\n}\n\nfunction unescapeBraces(str) {\n  return str.split(escSlash).join('\\\\')\n            .split(escOpen).join('{')\n            .split(escClose).join('}')\n            .split(escComma).join(',')\n            .split(escPeriod).join('.');\n}\n\n\n// Basically just str.split(\",\"), but handling cases\n// where we have nested braced sections, which should be\n// treated as individual members, like {a,{b,c},d}\nfunction parseCommaParts(str) {\n  if (!str)\n    return [''];\n\n  var parts = [];\n  var m = balanced('{', '}', str);\n\n  if (!m)\n    return str.split(',');\n\n  var pre = m.pre;\n  var body = m.body;\n  var post = m.post;\n  var p = pre.split(',');\n\n  p[p.length-1] += '{' + body + '}';\n  var postParts = parseCommaParts(post);\n  if (post.length) {\n    p[p.length-1] += postParts.shift();\n    p.push.apply(p, postParts);\n  }\n\n  parts.push.apply(parts, p);\n\n  return parts;\n}\n\nfunction expandTop(str) {\n  if (!str)\n    return [];\n\n  // I don't know why Bash 4.3 does this, but it does.\n  // Anything starting with {} will have the first two bytes preserved\n  // but *only* at the top level, so {},a}b will not expand to anything,\n  // but a{},b}c will be expanded to [a}c,abc].\n  // One could argue that this is a bug in Bash, but since the goal of\n  // this module is to match Bash's rules, we escape a leading {}\n  if (str.substr(0, 2) === '{}') {\n    str = '\\\\{\\\\}' + str.substr(2);\n  }\n\n  return expand(escapeBraces(str), true).map(unescapeBraces);\n}\n\nfunction embrace(str) {\n  return '{' + str + '}';\n}\nfunction isPadded(el) {\n  return /^-?0\\d/.test(el);\n}\n\nfunction lte(i, y) {\n  return i <= y;\n}\nfunction gte(i, y) {\n  return i >= y;\n}\n\nfunction expand(str, isTop) {\n  var expansions = [];\n\n  var m = balanced('{', '}', str);\n  if (!m) return [str];\n\n  // no need to expand pre, since it is guaranteed to be free of brace-sets\n  var pre = m.pre;\n  var post = m.post.length\n    ? expand(m.post, false)\n    : [''];\n\n  if (/\\$$/.test(m.pre)) {    \n    for (var k = 0; k < post.length; k++) {\n      var expansion = pre+ '{' + m.body + '}' + post[k];\n      expansions.push(expansion);\n    }\n  } else {\n    var isNumericSequence = /^-?\\d+\\.\\.-?\\d+(?:\\.\\.-?\\d+)?$/.test(m.body);\n    var isAlphaSequence = /^[a-zA-Z]\\.\\.[a-zA-Z](?:\\.\\.-?\\d+)?$/.test(m.body);\n    var isSequence = isNumericSequence || isAlphaSequence;\n    var isOptions = m.body.indexOf(',') >= 0;\n    if (!isSequence && !isOptions) {\n      // {a},b}\n      if (m.post.match(/,(?!,).*\\}/)) {\n        str = m.pre + '{' + m.body + escClose + m.post;\n        return expand(str);\n      }\n      return [str];\n    }\n\n    var n;\n    if (isSequence) {\n      n = m.body.split(/\\.\\./);\n    } else {\n      n = parseCommaParts(m.body);\n      if (n.length === 1) {\n        // x{{a,b}}y ==> x{a}y x{b}y\n        n = expand(n[0], false).map(embrace);\n        if (n.length === 1) {\n          return post.map(function(p) {\n            return m.pre + n[0] + p;\n          });\n        }\n      }\n    }\n\n    // at this point, n is the parts, and we know it's not a comma set\n    // with a single entry.\n    var N;\n\n    if (isSequence) {\n      var x = numeric(n[0]);\n      var y = numeric(n[1]);\n      var width = Math.max(n[0].length, n[1].length)\n      var incr = n.length == 3\n        ? Math.abs(numeric(n[2]))\n        : 1;\n      var test = lte;\n      var reverse = y < x;\n      if (reverse) {\n        incr *= -1;\n        test = gte;\n      }\n      var pad = n.some(isPadded);\n\n      N = [];\n\n      for (var i = x; test(i, y); i += incr) {\n        var c;\n        if (isAlphaSequence) {\n          c = String.fromCharCode(i);\n          if (c === '\\\\')\n            c = '';\n        } else {\n          c = String(i);\n          if (pad) {\n            var need = width - c.length;\n            if (need > 0) {\n              var z = new Array(need + 1).join('0');\n              if (i < 0)\n                c = '-' + z + c.slice(1);\n              else\n                c = z + c;\n            }\n          }\n        }\n        N.push(c);\n      }\n    } else {\n      N = [];\n\n      for (var j = 0; j < n.length; j++) {\n        N.push.apply(N, expand(n[j], false));\n      }\n    }\n\n    for (var j = 0; j < N.length; j++) {\n      for (var k = 0; k < post.length; k++) {\n        var expansion = pre + N[j] + post[k];\n        if (!isTop || isSequence || expansion)\n          expansions.push(expansion);\n      }\n    }\n  }\n\n  return expansions;\n}\n\n", "const MAX_PATTERN_LENGTH = 1024 * 64\nexport const assertValidPattern: (pattern: any) => void = (\n  pattern: any\n): asserts pattern is string => {\n  if (typeof pattern !== 'string') {\n    throw new TypeError('invalid pattern')\n  }\n\n  if (pattern.length > MAX_PATTERN_LENGTH) {\n    throw new TypeError('pattern is too long')\n  }\n}\n", "// translate the various posix character classes into unicode properties\n// this works across all unicode locales\n\n// { <posix class>: [<translation>, /u flag required, negated]\nconst posixClasses: { [k: string]: [e: string, u: boolean, n?: boolean] } = {\n  '[:alnum:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}', true],\n  '[:alpha:]': ['\\\\p{L}\\\\p{Nl}', true],\n  '[:ascii:]': ['\\\\x' + '00-\\\\x' + '7f', false],\n  '[:blank:]': ['\\\\p{Zs}\\\\t', true],\n  '[:cntrl:]': ['\\\\p{Cc}', true],\n  '[:digit:]': ['\\\\p{Nd}', true],\n  '[:graph:]': ['\\\\p{Z}\\\\p{C}', true, true],\n  '[:lower:]': ['\\\\p{Ll}', true],\n  '[:print:]': ['\\\\p{C}', true],\n  '[:punct:]': ['\\\\p{P}', true],\n  '[:space:]': ['\\\\p{Z}\\\\t\\\\r\\\\n\\\\v\\\\f', true],\n  '[:upper:]': ['\\\\p{Lu}', true],\n  '[:word:]': ['\\\\p{L}\\\\p{Nl}\\\\p{Nd}\\\\p{Pc}', true],\n  '[:xdigit:]': ['A-Fa-f0-9', false],\n}\n\n// only need to escape a few things inside of brace expressions\n// escapes: [ \\ ] -\nconst braceEscape = (s: string) => s.replace(/[[\\]\\\\-]/g, '\\\\$&')\n// escape all regexp magic characters\nconst regexpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// everything has already been escaped, we just have to join\nconst rangesToString = (ranges: string[]): string => ranges.join('')\n\nexport type ParseClassResult = [\n  src: string,\n  uFlag: boolean,\n  consumed: number,\n  hasMagic: boolean\n]\n\n// takes a glob string at a posix brace expression, and returns\n// an equivalent regular expression source, and boolean indicating\n// whether the /u flag needs to be applied, and the number of chars\n// consumed to parse the character class.\n// This also removes out of order ranges, and returns ($.) if the\n// entire class just no good.\nexport const parseClass = (\n  glob: string,\n  position: number\n): ParseClassResult => {\n  const pos = position\n  /* c8 ignore start */\n  if (glob.charAt(pos) !== '[') {\n    throw new Error('not in a brace expression')\n  }\n  /* c8 ignore stop */\n  const ranges: string[] = []\n  const negs: string[] = []\n\n  let i = pos + 1\n  let sawStart = false\n  let uflag = false\n  let escaping = false\n  let negate = false\n  let endPos = pos\n  let rangeStart = ''\n  WHILE: while (i < glob.length) {\n    const c = glob.charAt(i)\n    if ((c === '!' || c === '^') && i === pos + 1) {\n      negate = true\n      i++\n      continue\n    }\n\n    if (c === ']' && sawStart && !escaping) {\n      endPos = i + 1\n      break\n    }\n\n    sawStart = true\n    if (c === '\\\\') {\n      if (!escaping) {\n        escaping = true\n        i++\n        continue\n      }\n      // escaped \\ char, fall through and treat like normal char\n    }\n    if (c === '[' && !escaping) {\n      // either a posix class, a collation equivalent, or just a [\n      for (const [cls, [unip, u, neg]] of Object.entries(posixClasses)) {\n        if (glob.startsWith(cls, i)) {\n          // invalid, [a-[] is fine, but not [a-[:alpha]]\n          if (rangeStart) {\n            return ['$.', false, glob.length - pos, true]\n          }\n          i += cls.length\n          if (neg) negs.push(unip)\n          else ranges.push(unip)\n          uflag = uflag || u\n          continue WHILE\n        }\n      }\n    }\n\n    // now it's just a normal character, effectively\n    escaping = false\n    if (rangeStart) {\n      // throw this range away if it's not valid, but others\n      // can still match.\n      if (c > rangeStart) {\n        ranges.push(braceEscape(rangeStart) + '-' + braceEscape(c))\n      } else if (c === rangeStart) {\n        ranges.push(braceEscape(c))\n      }\n      rangeStart = ''\n      i++\n      continue\n    }\n\n    // now might be the start of a range.\n    // can be either c-d or c-] or c<more...>] or c] at this point\n    if (glob.startsWith('-]', i + 1)) {\n      ranges.push(braceEscape(c + '-'))\n      i += 2\n      continue\n    }\n    if (glob.startsWith('-', i + 1)) {\n      rangeStart = c\n      i += 2\n      continue\n    }\n\n    // not the start of a range, just a single character\n    ranges.push(braceEscape(c))\n    i++\n  }\n\n  if (endPos < i) {\n    // didn't see the end of the class, not a valid class,\n    // but might still be valid as a literal match.\n    return ['', false, 0, false]\n  }\n\n  // if we got no ranges and no negates, then we have a range that\n  // cannot possibly match anything, and that poisons the whole glob\n  if (!ranges.length && !negs.length) {\n    return ['$.', false, glob.length - pos, true]\n  }\n\n  // if we got one positive range, and it's a single character, then that's\n  // not actually a magic pattern, it's just that one literal character.\n  // we should not treat that as \"magic\", we should just return the literal\n  // character. [_] is a perfectly valid way to escape glob magic chars.\n  if (\n    negs.length === 0 &&\n    ranges.length === 1 &&\n    /^\\\\?.$/.test(ranges[0]) &&\n    !negate\n  ) {\n    const r = ranges[0].length === 2 ? ranges[0].slice(-1) : ranges[0]\n    return [regexpEscape(r), false, endPos - pos, false]\n  }\n\n  const sranges = '[' + (negate ? '^' : '') + rangesToString(ranges) + ']'\n  const snegs = '[' + (negate ? '' : '^') + rangesToString(negs) + ']'\n  const comb =\n    ranges.length && negs.length\n      ? '(' + sranges + '|' + snegs + ')'\n      : ranges.length\n      ? sranges\n      : snegs\n\n  return [comb, uflag, endPos - pos, true]\n}\n", "import { MinimatchOptions } from './index.js'\n/**\n * Un-escape a string that has been escaped with {@link escape}.\n *\n * If the {@link windowsPathsNoEscape} option is used, then square-brace\n * escapes are removed, but not backslash escapes.  For example, it will turn\n * the string `'[*]'` into `*`, but it will not turn `'\\\\*'` into `'*'`,\n * becuase `\\` is a path separator in `windowsPathsNoEscape` mode.\n *\n * When `windowsPathsNoEscape` is not set, then both brace escapes and\n * backslash escapes are removed.\n *\n * Slashes (and backslashes in `windowsPathsNoEscape` mode) cannot be escaped\n * or unescaped.\n */\nexport const unescape = (\n  s: string,\n  {\n    windowsPathsNoEscape = false,\n  }: Pick<MinimatchOptions, 'windowsPathsNoEscape'> = {}\n) => {\n  return windowsPathsNoEscape\n    ? s.replace(/\\[([^\\/\\\\])\\]/g, '$1')\n    : s.replace(/((?!\\\\).|^)\\[([^\\/\\\\])\\]/g, '$1$2').replace(/\\\\([^\\/])/g, '$1')\n}\n", "// parse a single path portion\n\nimport { parseClass } from './brace-expressions.js'\nimport { MinimatchOptions, MMRegExp } from './index.js'\nimport { unescape } from './unescape.js'\n\n// classes [] are handled by the parseClass method\n// for positive extglobs, we sub-parse the contents, and combine,\n// with the appropriate regexp close.\n// for negative extglobs, we sub-parse the contents, but then\n// have to include the rest of the pattern, then the parent, etc.,\n// as the thing that cannot be because RegExp negative lookaheads\n// are different from globs.\n//\n// So for example:\n// a@(i|w!(x|y)z|j)b => ^a(i|w((!?(x|y)zb).*)z|j)b$\n//   1   2 3   4 5 6      1   2    3   46      5 6\n//\n// Assembling the extglob requires not just the negated patterns themselves,\n// but also anything following the negative patterns up to the boundary\n// of the current pattern, plus anything following in the parent pattern.\n//\n//\n// So, first, we parse the string into an AST of extglobs, without turning\n// anything into regexps yet.\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y']}, 'z'], ['j']]}, 'b']\n//\n// Then, for all the negative extglobs, we append whatever comes after in\n// each parent as their tail\n//\n// ['a', {@ [['i'], ['w', {!['x', 'y'], 'z', 'b'}, 'z'], ['j']]}, 'b']\n//\n// Lastly, we turn each of these pieces into a regexp, and join\n//\n//                                 v----- .* because there's more following,\n//                                 v    v  otherwise, .+ because it must be\n//                                 v    v  *something* there.\n// ['^a', {@ ['i', 'w(?:(!?(?:x|y).*zb$).*)z', 'j' ]}, 'b$']\n//   copy what follows into here--^^^^^\n// ['^a', '(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)', 'b$']\n// ['^a(?:i|w(?:(?!(?:x|y).*zb$).*)z|j)b$']\n\nexport type ExtglobType = '!' | '?' | '+' | '*' | '@'\nconst types = new Set<ExtglobType>(['!', '?', '+', '*', '@'])\nconst isExtglobType = (c: string): c is ExtglobType =>\n  types.has(c as ExtglobType)\n\n// Patterns that get prepended to bind to the start of either the\n// entire string, or just a single path portion, to prevent dots\n// and/or traversal patterns, when needed.\n// Exts don't need the ^ or / bit, because the root binds that already.\nconst startNoTraversal = '(?!(?:^|/)\\\\.\\\\.?(?:$|/))'\nconst startNoDot = '(?!\\\\.)'\n\n// characters that indicate a start of pattern needs the \"no dots\" bit,\n// because a dot *might* be matched. ( is not in the list, because in\n// the case of a child extglob, it will handle the prevention itself.\nconst addPatternStart = new Set(['[', '.'])\n// cases where traversal is A-OK, no dot prevention needed\nconst justDots = new Set(['..', '.'])\nconst reSpecials = new Set('().*{}+?[]^$\\\\!')\nconst regExpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\n// any single thing other than /\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n// use + when we need to ensure that *something* matches, because the * is\n// the only thing in the path portion.\nconst starNoEmpty = qmark + '+?'\n\n// remove the \\ chars that we added if we end up doing a nonmagic compare\n// const deslash = (s: string) => s.replace(/\\\\(.)/g, '$1')\n\nexport class AST {\n  type: ExtglobType | null\n  readonly #root: AST\n\n  #hasMagic?: boolean\n  #uflag: boolean = false\n  #parts: (string | AST)[] = []\n  readonly #parent?: AST\n  readonly #parentIndex: number\n  #negs: AST[]\n  #filledNegs: boolean = false\n  #options: MinimatchOptions\n  #toString?: string\n  // set to true if it's an extglob with no children\n  // (which really means one child of '')\n  #emptyExt: boolean = false\n\n  constructor(\n    type: ExtglobType | null,\n    parent?: AST,\n    options: MinimatchOptions = {}\n  ) {\n    this.type = type\n    // extglobs are inherently magical\n    if (type) this.#hasMagic = true\n    this.#parent = parent\n    this.#root = this.#parent ? this.#parent.#root : this\n    this.#options = this.#root === this ? options : this.#root.#options\n    this.#negs = this.#root === this ? [] : this.#root.#negs\n    if (type === '!' && !this.#root.#filledNegs) this.#negs.push(this)\n    this.#parentIndex = this.#parent ? this.#parent.#parts.length : 0\n  }\n\n  get hasMagic(): boolean | undefined {\n    /* c8 ignore start */\n    if (this.#hasMagic !== undefined) return this.#hasMagic\n    /* c8 ignore stop */\n    for (const p of this.#parts) {\n      if (typeof p === 'string') continue\n      if (p.type || p.hasMagic) return (this.#hasMagic = true)\n    }\n    // note: will be undefined until we generate the regexp src and find out\n    return this.#hasMagic\n  }\n\n  // reconstructs the pattern\n  toString(): string {\n    if (this.#toString !== undefined) return this.#toString\n    if (!this.type) {\n      return (this.#toString = this.#parts.map(p => String(p)).join(''))\n    } else {\n      return (this.#toString =\n        this.type + '(' + this.#parts.map(p => String(p)).join('|') + ')')\n    }\n  }\n\n  #fillNegs() {\n    /* c8 ignore start */\n    if (this !== this.#root) throw new Error('should only call on root')\n    if (this.#filledNegs) return this\n    /* c8 ignore stop */\n\n    // call toString() once to fill this out\n    this.toString()\n    this.#filledNegs = true\n    let n: AST | undefined\n    while ((n = this.#negs.pop())) {\n      if (n.type !== '!') continue\n      // walk up the tree, appending everthing that comes AFTER parentIndex\n      let p: AST | undefined = n\n      let pp = p.#parent\n      while (pp) {\n        for (\n          let i = p.#parentIndex + 1;\n          !pp.type && i < pp.#parts.length;\n          i++\n        ) {\n          for (const part of n.#parts) {\n            /* c8 ignore start */\n            if (typeof part === 'string') {\n              throw new Error('string part in extglob AST??')\n            }\n            /* c8 ignore stop */\n            part.copyIn(pp.#parts[i])\n          }\n        }\n        p = pp\n        pp = p.#parent\n      }\n    }\n    return this\n  }\n\n  push(...parts: (string | AST)[]) {\n    for (const p of parts) {\n      if (p === '') continue\n      /* c8 ignore start */\n      if (typeof p !== 'string' && !(p instanceof AST && p.#parent === this)) {\n        throw new Error('invalid part: ' + p)\n      }\n      /* c8 ignore stop */\n      this.#parts.push(p)\n    }\n  }\n\n  toJSON() {\n    const ret: any[] =\n      this.type === null\n        ? this.#parts.slice().map(p => (typeof p === 'string' ? p : p.toJSON()))\n        : [this.type, ...this.#parts.map(p => (p as AST).toJSON())]\n    if (this.isStart() && !this.type) ret.unshift([])\n    if (\n      this.isEnd() &&\n      (this === this.#root ||\n        (this.#root.#filledNegs && this.#parent?.type === '!'))\n    ) {\n      ret.push({})\n    }\n    return ret\n  }\n\n  isStart(): boolean {\n    if (this.#root === this) return true\n    // if (this.type) return !!this.#parent?.isStart()\n    if (!this.#parent?.isStart()) return false\n    if (this.#parentIndex === 0) return true\n    // if everything AHEAD of this is a negation, then it's still the \"start\"\n    const p = this.#parent\n    for (let i = 0; i < this.#parentIndex; i++) {\n      const pp = p.#parts[i]\n      if (!(pp instanceof AST && pp.type === '!')) {\n        return false\n      }\n    }\n    return true\n  }\n\n  isEnd(): boolean {\n    if (this.#root === this) return true\n    if (this.#parent?.type === '!') return true\n    if (!this.#parent?.isEnd()) return false\n    if (!this.type) return this.#parent?.isEnd()\n    // if not root, it'll always have a parent\n    /* c8 ignore start */\n    const pl = this.#parent ? this.#parent.#parts.length : 0\n    /* c8 ignore stop */\n    return this.#parentIndex === pl - 1\n  }\n\n  copyIn(part: AST | string) {\n    if (typeof part === 'string') this.push(part)\n    else this.push(part.clone(this))\n  }\n\n  clone(parent: AST) {\n    const c = new AST(this.type, parent)\n    for (const p of this.#parts) {\n      c.copyIn(p)\n    }\n    return c\n  }\n\n  static #parseAST(\n    str: string,\n    ast: AST,\n    pos: number,\n    opt: MinimatchOptions\n  ): number {\n    let escaping = false\n    let inBrace = false\n    let braceStart = -1\n    let braceNeg = false\n    if (ast.type === null) {\n      // outside of a extglob, append until we find a start\n      let i = pos\n      let acc = ''\n      while (i < str.length) {\n        const c = str.charAt(i++)\n        // still accumulate escapes at this point, but we do ignore\n        // starts that are escaped\n        if (escaping || c === '\\\\') {\n          escaping = !escaping\n          acc += c\n          continue\n        }\n\n        if (inBrace) {\n          if (i === braceStart + 1) {\n            if (c === '^' || c === '!') {\n              braceNeg = true\n            }\n          } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n            inBrace = false\n          }\n          acc += c\n          continue\n        } else if (c === '[') {\n          inBrace = true\n          braceStart = i\n          braceNeg = false\n          acc += c\n          continue\n        }\n\n        if (!opt.noext && isExtglobType(c) && str.charAt(i) === '(') {\n          ast.push(acc)\n          acc = ''\n          const ext = new AST(c, ast)\n          i = AST.#parseAST(str, ext, i, opt)\n          ast.push(ext)\n          continue\n        }\n        acc += c\n      }\n      ast.push(acc)\n      return i\n    }\n\n    // some kind of extglob, pos is at the (\n    // find the next | or )\n    let i = pos + 1\n    let part = new AST(null, ast)\n    const parts: AST[] = []\n    let acc = ''\n    while (i < str.length) {\n      const c = str.charAt(i++)\n      // still accumulate escapes at this point, but we do ignore\n      // starts that are escaped\n      if (escaping || c === '\\\\') {\n        escaping = !escaping\n        acc += c\n        continue\n      }\n\n      if (inBrace) {\n        if (i === braceStart + 1) {\n          if (c === '^' || c === '!') {\n            braceNeg = true\n          }\n        } else if (c === ']' && !(i === braceStart + 2 && braceNeg)) {\n          inBrace = false\n        }\n        acc += c\n        continue\n      } else if (c === '[') {\n        inBrace = true\n        braceStart = i\n        braceNeg = false\n        acc += c\n        continue\n      }\n\n      if (isExtglobType(c) && str.charAt(i) === '(') {\n        part.push(acc)\n        acc = ''\n        const ext = new AST(c, part)\n        part.push(ext)\n        i = AST.#parseAST(str, ext, i, opt)\n        continue\n      }\n      if (c === '|') {\n        part.push(acc)\n        acc = ''\n        parts.push(part)\n        part = new AST(null, ast)\n        continue\n      }\n      if (c === ')') {\n        if (acc === '' && ast.#parts.length === 0) {\n          ast.#emptyExt = true\n        }\n        part.push(acc)\n        acc = ''\n        ast.push(...parts, part)\n        return i\n      }\n      acc += c\n    }\n\n    // unfinished extglob\n    // if we got here, it was a malformed extglob! not an extglob, but\n    // maybe something else in there.\n    ast.type = null\n    ast.#hasMagic = undefined\n    ast.#parts = [str.substring(pos - 1)]\n    return i\n  }\n\n  static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n    const ast = new AST(null, undefined, options)\n    AST.#parseAST(pattern, ast, 0, options)\n    return ast\n  }\n\n  // returns the regular expression if there's magic, or the unescaped\n  // string if not.\n  toMMPattern(): MMRegExp | string {\n    // should only be called on root\n    /* c8 ignore start */\n    if (this !== this.#root) return this.#root.toMMPattern()\n    /* c8 ignore stop */\n    const glob = this.toString()\n    const [re, body, hasMagic, uflag] = this.toRegExpSource()\n    // if we're in nocase mode, and not nocaseMagicOnly, then we do\n    // still need a regular expression if we have to case-insensitively\n    // match capital/lowercase characters.\n    const anyMagic =\n      hasMagic ||\n      this.#hasMagic ||\n      (this.#options.nocase &&\n        !this.#options.nocaseMagicOnly &&\n        glob.toUpperCase() !== glob.toLowerCase())\n    if (!anyMagic) {\n      return body\n    }\n\n    const flags = (this.#options.nocase ? 'i' : '') + (uflag ? 'u' : '')\n    return Object.assign(new RegExp(`^${re}$`, flags), {\n      _src: re,\n      _glob: glob,\n    })\n  }\n\n  get options() {\n    return this.#options\n  }\n\n  // returns the string match, the regexp source, whether there's magic\n  // in the regexp (so a regular expression is required) and whether or\n  // not the uflag is needed for the regular expression (for posix classes)\n  // TODO: instead of injecting the start/end at this point, just return\n  // the BODY of the regexp, along with the start/end portions suitable\n  // for binding the start/end in either a joined full-path makeRe context\n  // (where we bind to (^|/), or a standalone matchPart context (where\n  // we bind to ^, and not /).  Otherwise slashes get duped!\n  //\n  // In part-matching mode, the start is:\n  // - if not isStart: nothing\n  // - if traversal possible, but not allowed: ^(?!\\.\\.?$)\n  // - if dots allowed or not possible: ^\n  // - if dots possible and not allowed: ^(?!\\.)\n  // end is:\n  // - if not isEnd(): nothing\n  // - else: $\n  //\n  // In full-path matching mode, we put the slash at the START of the\n  // pattern, so start is:\n  // - if first pattern: same as part-matching mode\n  // - if not isStart(): nothing\n  // - if traversal possible, but not allowed: /(?!\\.\\.?(?:$|/))\n  // - if dots allowed or not possible: /\n  // - if dots possible and not allowed: /(?!\\.)\n  // end is:\n  // - if last pattern, same as part-matching mode\n  // - else nothing\n  //\n  // Always put the (?:$|/) on negated tails, though, because that has to be\n  // there to bind the end of the negated pattern portion, and it's easier to\n  // just stick it in now rather than try to inject it later in the middle of\n  // the pattern.\n  //\n  // We can just always return the same end, and leave it up to the caller\n  // to know whether it's going to be used joined or in parts.\n  // And, if the start is adjusted slightly, can do the same there:\n  // - if not isStart: nothing\n  // - if traversal possible, but not allowed: (?:/|^)(?!\\.\\.?$)\n  // - if dots allowed or not possible: (?:/|^)\n  // - if dots possible and not allowed: (?:/|^)(?!\\.)\n  //\n  // But it's better to have a simpler binding without a conditional, for\n  // performance, so probably better to return both start options.\n  //\n  // Then the caller just ignores the end if it's not the first pattern,\n  // and the start always gets applied.\n  //\n  // But that's always going to be $ if it's the ending pattern, or nothing,\n  // so the caller can just attach $ at the end of the pattern when building.\n  //\n  // So the todo is:\n  // - better detect what kind of start is needed\n  // - return both flavors of starting pattern\n  // - attach $ at the end of the pattern when creating the actual RegExp\n  //\n  // Ah, but wait, no, that all only applies to the root when the first pattern\n  // is not an extglob. If the first pattern IS an extglob, then we need all\n  // that dot prevention biz to live in the extglob portions, because eg\n  // +(*|.x*) can match .xy but not .yx.\n  //\n  // So, return the two flavors if it's #root and the first child is not an\n  // AST, otherwise leave it to the child AST to handle it, and there,\n  // use the (?:^|/) style of start binding.\n  //\n  // Even simplified further:\n  // - Since the start for a join is eg /(?!\\.) and the start for a part\n  // is ^(?!\\.), we can just prepend (?!\\.) to the pattern (either root\n  // or start or whatever) and prepend ^ or / at the Regexp construction.\n  toRegExpSource(\n    allowDot?: boolean\n  ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n    const dot = allowDot ?? !!this.#options.dot\n    if (this.#root === this) this.#fillNegs()\n    if (!this.type) {\n      const noEmpty = this.isStart() && this.isEnd()\n      const src = this.#parts\n        .map(p => {\n          const [re, _, hasMagic, uflag] =\n            typeof p === 'string'\n              ? AST.#parseGlob(p, this.#hasMagic, noEmpty)\n              : p.toRegExpSource(allowDot)\n          this.#hasMagic = this.#hasMagic || hasMagic\n          this.#uflag = this.#uflag || uflag\n          return re\n        })\n        .join('')\n\n      let start = ''\n      if (this.isStart()) {\n        if (typeof this.#parts[0] === 'string') {\n          // this is the string that will match the start of the pattern,\n          // so we need to protect against dots and such.\n\n          // '.' and '..' cannot match unless the pattern is that exactly,\n          // even if it starts with . or dot:true is set.\n          const dotTravAllowed =\n            this.#parts.length === 1 && justDots.has(this.#parts[0])\n          if (!dotTravAllowed) {\n            const aps = addPatternStart\n            // check if we have a possibility of matching . or ..,\n            // and prevent that.\n            const needNoTrav =\n              // dots are allowed, and the pattern starts with [ or .\n              (dot && aps.has(src.charAt(0))) ||\n              // the pattern starts with \\., and then [ or .\n              (src.startsWith('\\\\.') && aps.has(src.charAt(2))) ||\n              // the pattern starts with \\.\\., and then [ or .\n              (src.startsWith('\\\\.\\\\.') && aps.has(src.charAt(4)))\n            // no need to prevent dots if it can't match a dot, or if a\n            // sub-pattern will be preventing it anyway.\n            const needNoDot = !dot && !allowDot && aps.has(src.charAt(0))\n\n            start = needNoTrav ? startNoTraversal : needNoDot ? startNoDot : ''\n          }\n        }\n      }\n\n      // append the \"end of path portion\" pattern to negation tails\n      let end = ''\n      if (\n        this.isEnd() &&\n        this.#root.#filledNegs &&\n        this.#parent?.type === '!'\n      ) {\n        end = '(?:$|\\\\/)'\n      }\n      const final = start + src + end\n      return [\n        final,\n        unescape(src),\n        (this.#hasMagic = !!this.#hasMagic),\n        this.#uflag,\n      ]\n    }\n\n    // We need to calculate the body *twice* if it's a repeat pattern\n    // at the start, once in nodot mode, then again in dot mode, so a\n    // pattern like *(?) can match 'x.y'\n\n    const repeated = this.type === '*' || this.type === '+'\n    // some kind of extglob\n    const start = this.type === '!' ? '(?:(?!(?:' : '(?:'\n    let body = this.#partsToRegExp(dot)\n\n    if (this.isStart() && this.isEnd() && !body && this.type !== '!') {\n      // invalid extglob, has to at least be *something* present, if it's\n      // the entire path portion.\n      const s = this.toString()\n      this.#parts = [s]\n      this.type = null\n      this.#hasMagic = undefined\n      return [s, unescape(this.toString()), false, false]\n    }\n\n    // XXX abstract out this map method\n    let bodyDotAllowed =\n      !repeated || allowDot || dot || !startNoDot\n        ? ''\n        : this.#partsToRegExp(true)\n    if (bodyDotAllowed === body) {\n      bodyDotAllowed = ''\n    }\n    if (bodyDotAllowed) {\n      body = `(?:${body})(?:${bodyDotAllowed})*?`\n    }\n\n    // an empty !() is exactly equivalent to a starNoEmpty\n    let final = ''\n    if (this.type === '!' && this.#emptyExt) {\n      final = (this.isStart() && !dot ? startNoDot : '') + starNoEmpty\n    } else {\n      const close =\n        this.type === '!'\n          ? // !() must match something,but !(x) can match ''\n            '))' +\n            (this.isStart() && !dot && !allowDot ? startNoDot : '') +\n            star +\n            ')'\n          : this.type === '@'\n          ? ')'\n          : this.type === '?'\n          ? ')?'\n          : this.type === '+' && bodyDotAllowed\n          ? ')'\n          : this.type === '*' && bodyDotAllowed\n          ? `)?`\n          : `)${this.type}`\n      final = start + body + close\n    }\n    return [\n      final,\n      unescape(body),\n      (this.#hasMagic = !!this.#hasMagic),\n      this.#uflag,\n    ]\n  }\n\n  #partsToRegExp(dot: boolean) {\n    return this.#parts\n      .map(p => {\n        // extglob ASTs should only contain parent ASTs\n        /* c8 ignore start */\n        if (typeof p === 'string') {\n          throw new Error('string type in extglob ast??')\n        }\n        /* c8 ignore stop */\n        // can ignore hasMagic, because extglobs are already always magic\n        const [re, _, _hasMagic, uflag] = p.toRegExpSource(dot)\n        this.#uflag = this.#uflag || uflag\n        return re\n      })\n      .filter(p => !(this.isStart() && this.isEnd()) || !!p)\n      .join('|')\n  }\n\n  static #parseGlob(\n    glob: string,\n    hasMagic: boolean | undefined,\n    noEmpty: boolean = false\n  ): [re: string, body: string, hasMagic: boolean, uflag: boolean] {\n    let escaping = false\n    let re = ''\n    let uflag = false\n    for (let i = 0; i < glob.length; i++) {\n      const c = glob.charAt(i)\n      if (escaping) {\n        escaping = false\n        re += (reSpecials.has(c) ? '\\\\' : '') + c\n        continue\n      }\n      if (c === '\\\\') {\n        if (i === glob.length - 1) {\n          re += '\\\\\\\\'\n        } else {\n          escaping = true\n        }\n        continue\n      }\n      if (c === '[') {\n        const [src, needUflag, consumed, magic] = parseClass(glob, i)\n        if (consumed) {\n          re += src\n          uflag = uflag || needUflag\n          i += consumed - 1\n          hasMagic = hasMagic || magic\n          continue\n        }\n      }\n      if (c === '*') {\n        if (noEmpty && glob === '*') re += starNoEmpty\n        else re += star\n        hasMagic = true\n        continue\n      }\n      if (c === '?') {\n        re += qmark\n        hasMagic = true\n        continue\n      }\n      re += regExpEscape(c)\n    }\n    return [re, unescape(glob), !!hasMagic, uflag]\n  }\n}\n", "import { MinimatchOptions } from './index.js'\n/**\n * Escape all magic characters in a glob pattern.\n *\n * If the {@link windowsPathsNoEscape | GlobOptions.windowsPathsNoEscape}\n * option is used, then characters are escaped by wrapping in `[]`, because\n * a magic character wrapped in a character class can only be satisfied by\n * that exact character.  In this mode, `\\` is _not_ escaped, because it is\n * not interpreted as a magic character, but instead as a path separator.\n */\nexport const escape = (\n  s: string,\n  {\n    windowsPathsNoEscape = false,\n  }: Pick<MinimatchOptions, 'windowsPathsNoEscape'> = {}\n) => {\n  // don't need to escape +@! because we escape the parens\n  // that make those magic, and escaping ! as [!] isn't valid,\n  // because [!]] is a valid glob class meaning not ']'.\n  return windowsPathsNoEscape\n    ? s.replace(/[?*()[\\]]/g, '[$&]')\n    : s.replace(/[?*()[\\]\\\\]/g, '\\\\$&')\n}\n", "import expand from 'brace-expansion'\nimport { assertValidPattern } from './assert-valid-pattern.js'\nimport { AST, ExtglobType } from './ast.js'\nimport { escape } from './escape.js'\nimport { unescape } from './unescape.js'\n\ntype Platform =\n  | 'aix'\n  | 'android'\n  | 'darwin'\n  | 'freebsd'\n  | 'haiku'\n  | 'linux'\n  | 'openbsd'\n  | 'sunos'\n  | 'win32'\n  | 'cygwin'\n  | 'netbsd'\n\nexport interface MinimatchOptions {\n  nobrace?: boolean\n  nocomment?: boolean\n  nonegate?: boolean\n  debug?: boolean\n  noglobstar?: boolean\n  noext?: boolean\n  nonull?: boolean\n  windowsPathsNoEscape?: boolean\n  allowWindowsEscape?: boolean\n  partial?: boolean\n  dot?: boolean\n  nocase?: boolean\n  nocaseMagicOnly?: boolean\n  magicalBraces?: boolean\n  matchBase?: boolean\n  flipNegate?: boolean\n  preserveMultipleSlashes?: boolean\n  optimizationLevel?: number\n  platform?: Platform\n  windowsNoMagicRoot?: boolean\n}\n\nexport const minimatch = (\n  p: string,\n  pattern: string,\n  options: MinimatchOptions = {}\n) => {\n  assertValidPattern(pattern)\n\n  // shortcut: comments match nothing.\n  if (!options.nocomment && pattern.charAt(0) === '#') {\n    return false\n  }\n\n  return new Minimatch(pattern, options).match(p)\n}\n\n// Optimized checking for the most common glob patterns.\nconst starDotExtRE = /^\\*+([^+@!?\\*\\[\\(]*)$/\nconst starDotExtTest = (ext: string) => (f: string) =>\n  !f.startsWith('.') && f.endsWith(ext)\nconst starDotExtTestDot = (ext: string) => (f: string) => f.endsWith(ext)\nconst starDotExtTestNocase = (ext: string) => {\n  ext = ext.toLowerCase()\n  return (f: string) => !f.startsWith('.') && f.toLowerCase().endsWith(ext)\n}\nconst starDotExtTestNocaseDot = (ext: string) => {\n  ext = ext.toLowerCase()\n  return (f: string) => f.toLowerCase().endsWith(ext)\n}\nconst starDotStarRE = /^\\*+\\.\\*+$/\nconst starDotStarTest = (f: string) => !f.startsWith('.') && f.includes('.')\nconst starDotStarTestDot = (f: string) =>\n  f !== '.' && f !== '..' && f.includes('.')\nconst dotStarRE = /^\\.\\*+$/\nconst dotStarTest = (f: string) => f !== '.' && f !== '..' && f.startsWith('.')\nconst starRE = /^\\*+$/\nconst starTest = (f: string) => f.length !== 0 && !f.startsWith('.')\nconst starTestDot = (f: string) => f.length !== 0 && f !== '.' && f !== '..'\nconst qmarksRE = /^\\?+([^+@!?\\*\\[\\(]*)?$/\nconst qmarksTestNocase = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExt([$0])\n  if (!ext) return noext\n  ext = ext.toLowerCase()\n  return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestNocaseDot = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExtDot([$0])\n  if (!ext) return noext\n  ext = ext.toLowerCase()\n  return (f: string) => noext(f) && f.toLowerCase().endsWith(ext)\n}\nconst qmarksTestDot = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExtDot([$0])\n  return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTest = ([$0, ext = '']: RegExpMatchArray) => {\n  const noext = qmarksTestNoExt([$0])\n  return !ext ? noext : (f: string) => noext(f) && f.endsWith(ext)\n}\nconst qmarksTestNoExt = ([$0]: RegExpMatchArray) => {\n  const len = $0.length\n  return (f: string) => f.length === len && !f.startsWith('.')\n}\nconst qmarksTestNoExtDot = ([$0]: RegExpMatchArray) => {\n  const len = $0.length\n  return (f: string) => f.length === len && f !== '.' && f !== '..'\n}\n\n/* c8 ignore start */\nconst defaultPlatform: Platform = (\n  typeof process === 'object' && process\n    ? (typeof process.env === 'object' &&\n        process.env &&\n        process.env.__MINIMATCH_TESTING_PLATFORM__) ||\n      process.platform\n    : 'posix'\n) as Platform\ntype Sep = '\\\\' | '/'\nconst path: { [k: string]: { sep: Sep } } = {\n  win32: { sep: '\\\\' },\n  posix: { sep: '/' },\n}\n/* c8 ignore stop */\n\nexport const sep = defaultPlatform === 'win32' ? path.win32.sep : path.posix.sep\nminimatch.sep = sep\n\nexport const GLOBSTAR = Symbol('globstar **')\nminimatch.GLOBSTAR = GLOBSTAR\n\n// any single thing other than /\n// don't need to escape / when using new RegExp()\nconst qmark = '[^/]'\n\n// * => any number of characters\nconst star = qmark + '*?'\n\n// ** when dots are allowed.  Anything goes, except .. and .\n// not (^ or / followed by one or two dots followed by $ or /),\n// followed by anything, any number of times.\nconst twoStarDot = '(?:(?!(?:\\\\/|^)(?:\\\\.{1,2})($|\\\\/)).)*?'\n\n// not a ^ or / followed by a dot,\n// followed by anything, any number of times.\nconst twoStarNoDot = '(?:(?!(?:\\\\/|^)\\\\.).)*?'\n\nexport const filter =\n  (pattern: string, options: MinimatchOptions = {}) =>\n  (p: string) =>\n    minimatch(p, pattern, options)\nminimatch.filter = filter\n\nconst ext = (a: MinimatchOptions, b: MinimatchOptions = {}) =>\n  Object.assign({}, a, b)\n\nexport const defaults = (def: MinimatchOptions): typeof minimatch => {\n  if (!def || typeof def !== 'object' || !Object.keys(def).length) {\n    return minimatch\n  }\n\n  const orig = minimatch\n\n  const m = (p: string, pattern: string, options: MinimatchOptions = {}) =>\n    orig(p, pattern, ext(def, options))\n\n  return Object.assign(m, {\n    Minimatch: class Minimatch extends orig.Minimatch {\n      constructor(pattern: string, options: MinimatchOptions = {}) {\n        super(pattern, ext(def, options))\n      }\n      static defaults(options: MinimatchOptions) {\n        return orig.defaults(ext(def, options)).Minimatch\n      }\n    },\n\n    AST: class AST extends orig.AST {\n      /* c8 ignore start */\n      constructor(\n        type: ExtglobType | null,\n        parent?: AST,\n        options: MinimatchOptions = {}\n      ) {\n        super(type, parent, ext(def, options))\n      }\n      /* c8 ignore stop */\n\n      static fromGlob(pattern: string, options: MinimatchOptions = {}) {\n        return orig.AST.fromGlob(pattern, ext(def, options))\n      }\n    },\n\n    unescape: (\n      s: string,\n      options: Pick<MinimatchOptions, 'windowsPathsNoEscape'> = {}\n    ) => orig.unescape(s, ext(def, options)),\n\n    escape: (\n      s: string,\n      options: Pick<MinimatchOptions, 'windowsPathsNoEscape'> = {}\n    ) => orig.escape(s, ext(def, options)),\n\n    filter: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.filter(pattern, ext(def, options)),\n\n    defaults: (options: MinimatchOptions) => orig.defaults(ext(def, options)),\n\n    makeRe: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.makeRe(pattern, ext(def, options)),\n\n    braceExpand: (pattern: string, options: MinimatchOptions = {}) =>\n      orig.braceExpand(pattern, ext(def, options)),\n\n    match: (list: string[], pattern: string, options: MinimatchOptions = {}) =>\n      orig.match(list, pattern, ext(def, options)),\n\n    sep: orig.sep,\n    GLOBSTAR: GLOBSTAR as typeof GLOBSTAR,\n  })\n}\nminimatch.defaults = defaults\n\n// Brace expansion:\n// a{b,c}d -> abd acd\n// a{b,}c -> abc ac\n// a{0..3}d -> a0d a1d a2d a3d\n// a{b,c{d,e}f}g -> abg acdfg acefg\n// a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg\n//\n// Invalid sets are not expanded.\n// a{2..}b -> a{2..}b\n// a{b}c -> a{b}c\nexport const braceExpand = (\n  pattern: string,\n  options: MinimatchOptions = {}\n) => {\n  assertValidPattern(pattern)\n\n  // Thanks to Yeting Li <https://github.com/yetingli> for\n  // improving this regexp to avoid a ReDOS vulnerability.\n  if (options.nobrace || !/\\{(?:(?!\\{).)*\\}/.test(pattern)) {\n    // shortcut. no need to expand.\n    return [pattern]\n  }\n\n  return expand(pattern)\n}\nminimatch.braceExpand = braceExpand\n\n// parse a component of the expanded set.\n// At this point, no pattern may contain \"/\" in it\n// so we're going to return a 2d array, where each entry is the full\n// pattern, split on '/', and then turned into a regular expression.\n// A regexp is made at the end which joins each array with an\n// escaped /, and another full one which joins each regexp with |.\n//\n// Following the lead of Bash 4.1, note that \"**\" only has special meaning\n// when it is the *only* thing in a path portion.  Otherwise, any series\n// of * is equivalent to a single *.  Globstar behavior is enabled by\n// default, and can be disabled by setting options.noglobstar.\n\nexport const makeRe = (pattern: string, options: MinimatchOptions = {}) =>\n  new Minimatch(pattern, options).makeRe()\nminimatch.makeRe = makeRe\n\nexport const match = (\n  list: string[],\n  pattern: string,\n  options: MinimatchOptions = {}\n) => {\n  const mm = new Minimatch(pattern, options)\n  list = list.filter(f => mm.match(f))\n  if (mm.options.nonull && !list.length) {\n    list.push(pattern)\n  }\n  return list\n}\nminimatch.match = match\n\n// replace stuff like \\* with *\nconst globMagic = /[?*]|[+@!]\\(.*?\\)|\\[|\\]/\nconst regExpEscape = (s: string) =>\n  s.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&')\n\nexport type MMRegExp = RegExp & {\n  _src?: string\n  _glob?: string\n}\n\nexport type ParseReturnFiltered = string | MMRegExp | typeof GLOBSTAR\nexport type ParseReturn = ParseReturnFiltered | false\n\nexport class Minimatch {\n  options: MinimatchOptions\n  set: ParseReturnFiltered[][]\n  pattern: string\n\n  windowsPathsNoEscape: boolean\n  nonegate: boolean\n  negate: boolean\n  comment: boolean\n  empty: boolean\n  preserveMultipleSlashes: boolean\n  partial: boolean\n  globSet: string[]\n  globParts: string[][]\n  nocase: boolean\n\n  isWindows: boolean\n  platform: Platform\n  windowsNoMagicRoot: boolean\n\n  regexp: false | null | MMRegExp\n  constructor(pattern: string, options: MinimatchOptions = {}) {\n    assertValidPattern(pattern)\n\n    options = options || {}\n    this.options = options\n    this.pattern = pattern\n    this.platform = options.platform || defaultPlatform\n    this.isWindows = this.platform === 'win32'\n    this.windowsPathsNoEscape =\n      !!options.windowsPathsNoEscape || options.allowWindowsEscape === false\n    if (this.windowsPathsNoEscape) {\n      this.pattern = this.pattern.replace(/\\\\/g, '/')\n    }\n    this.preserveMultipleSlashes = !!options.preserveMultipleSlashes\n    this.regexp = null\n    this.negate = false\n    this.nonegate = !!options.nonegate\n    this.comment = false\n    this.empty = false\n    this.partial = !!options.partial\n    this.nocase = !!this.options.nocase\n    this.windowsNoMagicRoot =\n      options.windowsNoMagicRoot !== undefined\n        ? options.windowsNoMagicRoot\n        : !!(this.isWindows && this.nocase)\n\n    this.globSet = []\n    this.globParts = []\n    this.set = []\n\n    // make the set of regexps etc.\n    this.make()\n  }\n\n  hasMagic(): boolean {\n    if (this.options.magicalBraces && this.set.length > 1) {\n      return true\n    }\n    for (const pattern of this.set) {\n      for (const part of pattern) {\n        if (typeof part !== 'string') return true\n      }\n    }\n    return false\n  }\n\n  debug(..._: any[]) {}\n\n  make() {\n    const pattern = this.pattern\n    const options = this.options\n\n    // empty patterns and comments match nothing.\n    if (!options.nocomment && pattern.charAt(0) === '#') {\n      this.comment = true\n      return\n    }\n\n    if (!pattern) {\n      this.empty = true\n      return\n    }\n\n    // step 1: figure out negation, etc.\n    this.parseNegate()\n\n    // step 2: expand braces\n    this.globSet = [...new Set(this.braceExpand())]\n\n    if (options.debug) {\n      this.debug = (...args: any[]) => console.error(...args)\n    }\n\n    this.debug(this.pattern, this.globSet)\n\n    // step 3: now we have a set, so turn each one into a series of\n    // path-portion matching patterns.\n    // These will be regexps, except in the case of \"**\", which is\n    // set to the GLOBSTAR object for globstar behavior,\n    // and will not contain any / characters\n    //\n    // First, we preprocess to make the glob pattern sets a bit simpler\n    // and deduped.  There are some perf-killing patterns that can cause\n    // problems with a glob walk, but we can simplify them down a bit.\n    const rawGlobParts = this.globSet.map(s => this.slashSplit(s))\n    this.globParts = this.preprocess(rawGlobParts)\n    this.debug(this.pattern, this.globParts)\n\n    // glob --> regexps\n    let set = this.globParts.map((s, _, __) => {\n      if (this.isWindows && this.windowsNoMagicRoot) {\n        // check if it's a drive or unc path.\n        const isUNC =\n          s[0] === '' &&\n          s[1] === '' &&\n          (s[2] === '?' || !globMagic.test(s[2])) &&\n          !globMagic.test(s[3])\n        const isDrive = /^[a-z]:/i.test(s[0])\n        if (isUNC) {\n          return [...s.slice(0, 4), ...s.slice(4).map(ss => this.parse(ss))]\n        } else if (isDrive) {\n          return [s[0], ...s.slice(1).map(ss => this.parse(ss))]\n        }\n      }\n      return s.map(ss => this.parse(ss))\n    })\n\n    this.debug(this.pattern, set)\n\n    // filter out everything that didn't compile properly.\n    this.set = set.filter(\n      s => s.indexOf(false) === -1\n    ) as ParseReturnFiltered[][]\n\n    // do not treat the ? in UNC paths as magic\n    if (this.isWindows) {\n      for (let i = 0; i < this.set.length; i++) {\n        const p = this.set[i]\n        if (\n          p[0] === '' &&\n          p[1] === '' &&\n          this.globParts[i][2] === '?' &&\n          typeof p[3] === 'string' &&\n          /^[a-z]:$/i.test(p[3])\n        ) {\n          p[2] = '?'\n        }\n      }\n    }\n\n    this.debug(this.pattern, this.set)\n  }\n\n  // various transforms to equivalent pattern sets that are\n  // faster to process in a filesystem walk.  The goal is to\n  // eliminate what we can, and push all ** patterns as far\n  // to the right as possible, even if it increases the number\n  // of patterns that we have to process.\n  preprocess(globParts: string[][]) {\n    // if we're not in globstar mode, then turn all ** into *\n    if (this.options.noglobstar) {\n      for (let i = 0; i < globParts.length; i++) {\n        for (let j = 0; j < globParts[i].length; j++) {\n          if (globParts[i][j] === '**') {\n            globParts[i][j] = '*'\n          }\n        }\n      }\n    }\n\n    const { optimizationLevel = 1 } = this.options\n\n    if (optimizationLevel >= 2) {\n      // aggressive optimization for the purpose of fs walking\n      globParts = this.firstPhasePreProcess(globParts)\n      globParts = this.secondPhasePreProcess(globParts)\n    } else if (optimizationLevel >= 1) {\n      // just basic optimizations to remove some .. parts\n      globParts = this.levelOneOptimize(globParts)\n    } else {\n      // just collapse multiple ** portions into one\n      globParts = this.adjascentGlobstarOptimize(globParts)\n    }\n\n    return globParts\n  }\n\n  // just get rid of adjascent ** portions\n  adjascentGlobstarOptimize(globParts: string[][]) {\n    return globParts.map(parts => {\n      let gs: number = -1\n      while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n        let i = gs\n        while (parts[i + 1] === '**') {\n          i++\n        }\n        if (i !== gs) {\n          parts.splice(gs, i - gs)\n        }\n      }\n      return parts\n    })\n  }\n\n  // get rid of adjascent ** and resolve .. portions\n  levelOneOptimize(globParts: string[][]) {\n    return globParts.map(parts => {\n      parts = parts.reduce((set: string[], part) => {\n        const prev = set[set.length - 1]\n        if (part === '**' && prev === '**') {\n          return set\n        }\n        if (part === '..') {\n          if (prev && prev !== '..' && prev !== '.' && prev !== '**') {\n            set.pop()\n            return set\n          }\n        }\n        set.push(part)\n        return set\n      }, [])\n      return parts.length === 0 ? [''] : parts\n    })\n  }\n\n  levelTwoFileOptimize(parts: string | string[]) {\n    if (!Array.isArray(parts)) {\n      parts = this.slashSplit(parts)\n    }\n    let didSomething: boolean = false\n    do {\n      didSomething = false\n      // <pre>/<e>/<rest> -> <pre>/<rest>\n      if (!this.preserveMultipleSlashes) {\n        for (let i = 1; i < parts.length - 1; i++) {\n          const p = parts[i]\n          // don't squeeze out UNC patterns\n          if (i === 1 && p === '' && parts[0] === '') continue\n          if (p === '.' || p === '') {\n            didSomething = true\n            parts.splice(i, 1)\n            i--\n          }\n        }\n        if (\n          parts[0] === '.' &&\n          parts.length === 2 &&\n          (parts[1] === '.' || parts[1] === '')\n        ) {\n          didSomething = true\n          parts.pop()\n        }\n      }\n\n      // <pre>/<p>/../<rest> -> <pre>/<rest>\n      let dd: number = 0\n      while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n        const p = parts[dd - 1]\n        if (p && p !== '.' && p !== '..' && p !== '**') {\n          didSomething = true\n          parts.splice(dd - 1, 2)\n          dd -= 2\n        }\n      }\n    } while (didSomething)\n    return parts.length === 0 ? [''] : parts\n  }\n\n  // First phase: single-pattern processing\n  // <pre> is 1 or more portions\n  // <rest> is 1 or more portions\n  // <p> is any portion other than ., .., '', or **\n  // <e> is . or ''\n  //\n  // **/.. is *brutal* for filesystem walking performance, because\n  // it effectively resets the recursive walk each time it occurs,\n  // and ** cannot be reduced out by a .. pattern part like a regexp\n  // or most strings (other than .., ., and '') can be.\n  //\n  // <pre>/**/../<p>/<p>/<rest> -> {<pre>/../<p>/<p>/<rest>,<pre>/**/<p>/<p>/<rest>}\n  // <pre>/<e>/<rest> -> <pre>/<rest>\n  // <pre>/<p>/../<rest> -> <pre>/<rest>\n  // **/**/<rest> -> **/<rest>\n  //\n  // **/*/<rest> -> */**/<rest> <== not valid because ** doesn't follow\n  // this WOULD be allowed if ** did follow symlinks, or * didn't\n  firstPhasePreProcess(globParts: string[][]) {\n    let didSomething = false\n    do {\n      didSomething = false\n      // <pre>/**/../<p>/<p>/<rest> -> {<pre>/../<p>/<p>/<rest>,<pre>/**/<p>/<p>/<rest>}\n      for (let parts of globParts) {\n        let gs: number = -1\n        while (-1 !== (gs = parts.indexOf('**', gs + 1))) {\n          let gss: number = gs\n          while (parts[gss + 1] === '**') {\n            // <pre>/**/**/<rest> -> <pre>/**/<rest>\n            gss++\n          }\n          // eg, if gs is 2 and gss is 4, that means we have 3 **\n          // parts, and can remove 2 of them.\n          if (gss > gs) {\n            parts.splice(gs + 1, gss - gs)\n          }\n\n          let next = parts[gs + 1]\n          const p = parts[gs + 2]\n          const p2 = parts[gs + 3]\n          if (next !== '..') continue\n          if (\n            !p ||\n            p === '.' ||\n            p === '..' ||\n            !p2 ||\n            p2 === '.' ||\n            p2 === '..'\n          ) {\n            continue\n          }\n          didSomething = true\n          // edit parts in place, and push the new one\n          parts.splice(gs, 1)\n          const other = parts.slice(0)\n          other[gs] = '**'\n          globParts.push(other)\n          gs--\n        }\n\n        // <pre>/<e>/<rest> -> <pre>/<rest>\n        if (!this.preserveMultipleSlashes) {\n          for (let i = 1; i < parts.length - 1; i++) {\n            const p = parts[i]\n            // don't squeeze out UNC patterns\n            if (i === 1 && p === '' && parts[0] === '') continue\n            if (p === '.' || p === '') {\n              didSomething = true\n              parts.splice(i, 1)\n              i--\n            }\n          }\n          if (\n            parts[0] === '.' &&\n            parts.length === 2 &&\n            (parts[1] === '.' || parts[1] === '')\n          ) {\n            didSomething = true\n            parts.pop()\n          }\n        }\n\n        // <pre>/<p>/../<rest> -> <pre>/<rest>\n        let dd: number = 0\n        while (-1 !== (dd = parts.indexOf('..', dd + 1))) {\n          const p = parts[dd - 1]\n          if (p && p !== '.' && p !== '..' && p !== '**') {\n            didSomething = true\n            const needDot = dd === 1 && parts[dd + 1] === '**'\n            const splin = needDot ? ['.'] : []\n            parts.splice(dd - 1, 2, ...splin)\n            if (parts.length === 0) parts.push('')\n            dd -= 2\n          }\n        }\n      }\n    } while (didSomething)\n\n    return globParts\n  }\n\n  // second phase: multi-pattern dedupes\n  // {<pre>/*/<rest>,<pre>/<p>/<rest>} -> <pre>/*/<rest>\n  // {<pre>/<rest>,<pre>/<rest>} -> <pre>/<rest>\n  // {<pre>/**/<rest>,<pre>/<rest>} -> <pre>/**/<rest>\n  //\n  // {<pre>/**/<rest>,<pre>/**/<p>/<rest>} -> <pre>/**/<rest>\n  // ^-- not valid because ** doens't follow symlinks\n  secondPhasePreProcess(globParts: string[][]): string[][] {\n    for (let i = 0; i < globParts.length - 1; i++) {\n      for (let j = i + 1; j < globParts.length; j++) {\n        const matched = this.partsMatch(\n          globParts[i],\n          globParts[j],\n          !this.preserveMultipleSlashes\n        )\n        if (matched) {\n          globParts[i] = []\n          globParts[j] = matched\n          break\n        }\n      }\n    }\n    return globParts.filter(gs => gs.length)\n  }\n\n  partsMatch(\n    a: string[],\n    b: string[],\n    emptyGSMatch: boolean = false\n  ): false | string[] {\n    let ai = 0\n    let bi = 0\n    let result: string[] = []\n    let which: string = ''\n    while (ai < a.length && bi < b.length) {\n      if (a[ai] === b[bi]) {\n        result.push(which === 'b' ? b[bi] : a[ai])\n        ai++\n        bi++\n      } else if (emptyGSMatch && a[ai] === '**' && b[bi] === a[ai + 1]) {\n        result.push(a[ai])\n        ai++\n      } else if (emptyGSMatch && b[bi] === '**' && a[ai] === b[bi + 1]) {\n        result.push(b[bi])\n        bi++\n      } else if (\n        a[ai] === '*' &&\n        b[bi] &&\n        (this.options.dot || !b[bi].startsWith('.')) &&\n        b[bi] !== '**'\n      ) {\n        if (which === 'b') return false\n        which = 'a'\n        result.push(a[ai])\n        ai++\n        bi++\n      } else if (\n        b[bi] === '*' &&\n        a[ai] &&\n        (this.options.dot || !a[ai].startsWith('.')) &&\n        a[ai] !== '**'\n      ) {\n        if (which === 'a') return false\n        which = 'b'\n        result.push(b[bi])\n        ai++\n        bi++\n      } else {\n        return false\n      }\n    }\n    // if we fall out of the loop, it means they two are identical\n    // as long as their lengths match\n    return a.length === b.length && result\n  }\n\n  parseNegate() {\n    if (this.nonegate) return\n\n    const pattern = this.pattern\n    let negate = false\n    let negateOffset = 0\n\n    for (let i = 0; i < pattern.length && pattern.charAt(i) === '!'; i++) {\n      negate = !negate\n      negateOffset++\n    }\n\n    if (negateOffset) this.pattern = pattern.slice(negateOffset)\n    this.negate = negate\n  }\n\n  // set partial to true to test if, for example,\n  // \"/a/b\" matches the start of \"/*/b/*/d\"\n  // Partial means, if you run out of file before you run\n  // out of pattern, then that's fine, as long as all\n  // the parts match.\n  matchOne(file: string[], pattern: ParseReturn[], partial: boolean = false) {\n    const options = this.options\n\n    // UNC paths like //?/X:/... can match X:/... and vice versa\n    // Drive letters in absolute drive or unc paths are always compared\n    // case-insensitively.\n    if (this.isWindows) {\n      const fileDrive = typeof file[0] === 'string' && /^[a-z]:$/i.test(file[0])\n      const fileUNC =\n        !fileDrive &&\n        file[0] === '' &&\n        file[1] === '' &&\n        file[2] === '?' &&\n        /^[a-z]:$/i.test(file[3])\n\n      const patternDrive =\n        typeof pattern[0] === 'string' && /^[a-z]:$/i.test(pattern[0])\n      const patternUNC =\n        !patternDrive &&\n        pattern[0] === '' &&\n        pattern[1] === '' &&\n        pattern[2] === '?' &&\n        typeof pattern[3] === 'string' &&\n        /^[a-z]:$/i.test(pattern[3])\n\n      const fdi = fileUNC ? 3 : fileDrive ? 0 : undefined\n      const pdi = patternUNC ? 3 : patternDrive ? 0 : undefined\n      if (typeof fdi === 'number' && typeof pdi === 'number') {\n        const [fd, pd]: [string, string] = [file[fdi], pattern[pdi] as string]\n        if (fd.toLowerCase() === pd.toLowerCase()) {\n          pattern[pdi] = fd\n          if (pdi > fdi) {\n            pattern = pattern.slice(pdi)\n          } else if (fdi > pdi) {\n            file = file.slice(fdi)\n          }\n        }\n      }\n    }\n\n    // resolve and reduce . and .. portions in the file as well.\n    // dont' need to do the second phase, because it's only one string[]\n    const { optimizationLevel = 1 } = this.options\n    if (optimizationLevel >= 2) {\n      file = this.levelTwoFileOptimize(file)\n    }\n\n    this.debug('matchOne', this, { file, pattern })\n    this.debug('matchOne', file.length, pattern.length)\n\n    for (\n      var fi = 0, pi = 0, fl = file.length, pl = pattern.length;\n      fi < fl && pi < pl;\n      fi++, pi++\n    ) {\n      this.debug('matchOne loop')\n      var p = pattern[pi]\n      var f = file[fi]\n\n      this.debug(pattern, p, f)\n\n      // should be impossible.\n      // some invalid regexp stuff in the set.\n      /* c8 ignore start */\n      if (p === false) {\n        return false\n      }\n      /* c8 ignore stop */\n\n      if (p === GLOBSTAR) {\n        this.debug('GLOBSTAR', [pattern, p, f])\n\n        // \"**\"\n        // a/**/b/**/c would match the following:\n        // a/b/x/y/z/c\n        // a/x/y/z/b/c\n        // a/b/x/b/x/c\n        // a/b/c\n        // To do this, take the rest of the pattern after\n        // the **, and see if it would match the file remainder.\n        // If so, return success.\n        // If not, the ** \"swallows\" a segment, and try again.\n        // This is recursively awful.\n        //\n        // a/**/b/**/c matching a/b/x/y/z/c\n        // - a matches a\n        // - doublestar\n        //   - matchOne(b/x/y/z/c, b/**/c)\n        //     - b matches b\n        //     - doublestar\n        //       - matchOne(x/y/z/c, c) -> no\n        //       - matchOne(y/z/c, c) -> no\n        //       - matchOne(z/c, c) -> no\n        //       - matchOne(c, c) yes, hit\n        var fr = fi\n        var pr = pi + 1\n        if (pr === pl) {\n          this.debug('** at the end')\n          // a ** at the end will just swallow the rest.\n          // We have found a match.\n          // however, it will not swallow /.x, unless\n          // options.dot is set.\n          // . and .. are *never* matched by **, for explosively\n          // exponential reasons.\n          for (; fi < fl; fi++) {\n            if (\n              file[fi] === '.' ||\n              file[fi] === '..' ||\n              (!options.dot && file[fi].charAt(0) === '.')\n            )\n              return false\n          }\n          return true\n        }\n\n        // ok, let's see if we can swallow whatever we can.\n        while (fr < fl) {\n          var swallowee = file[fr]\n\n          this.debug('\\nglobstar while', file, fr, pattern, pr, swallowee)\n\n          // XXX remove this slice.  Just pass the start index.\n          if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {\n            this.debug('globstar found match!', fr, fl, swallowee)\n            // found a match.\n            return true\n          } else {\n            // can't swallow \".\" or \"..\" ever.\n            // can only swallow \".foo\" when explicitly asked.\n            if (\n              swallowee === '.' ||\n              swallowee === '..' ||\n              (!options.dot && swallowee.charAt(0) === '.')\n            ) {\n              this.debug('dot detected!', file, fr, pattern, pr)\n              break\n            }\n\n            // ** swallows a segment, and continue.\n            this.debug('globstar swallow a segment, and continue')\n            fr++\n          }\n        }\n\n        // no match was found.\n        // However, in partial mode, we can't say this is necessarily over.\n        /* c8 ignore start */\n        if (partial) {\n          // ran out of file\n          this.debug('\\n>>> no match, partial?', file, fr, pattern, pr)\n          if (fr === fl) {\n            return true\n          }\n        }\n        /* c8 ignore stop */\n        return false\n      }\n\n      // something other than **\n      // non-magic patterns just have to match exactly\n      // patterns with magic have been turned into regexps.\n      let hit: boolean\n      if (typeof p === 'string') {\n        hit = f === p\n        this.debug('string match', p, f, hit)\n      } else {\n        hit = p.test(f)\n        this.debug('pattern match', p, f, hit)\n      }\n\n      if (!hit) return false\n    }\n\n    // Note: ending in / means that we'll get a final \"\"\n    // at the end of the pattern.  This can only match a\n    // corresponding \"\" at the end of the file.\n    // If the file ends in /, then it can only match a\n    // a pattern that ends in /, unless the pattern just\n    // doesn't have any more for it. But, a/b/ should *not*\n    // match \"a/b/*\", even though \"\" matches against the\n    // [^/]*? pattern, except in partial mode, where it might\n    // simply not be reached yet.\n    // However, a/b/ should still satisfy a/*\n\n    // now either we fell off the end of the pattern, or we're done.\n    if (fi === fl && pi === pl) {\n      // ran out of pattern and filename at the same time.\n      // an exact hit!\n      return true\n    } else if (fi === fl) {\n      // ran out of file, but still had pattern left.\n      // this is ok if we're doing the match as part of\n      // a glob fs traversal.\n      return partial\n    } else if (pi === pl) {\n      // ran out of pattern, still have file left.\n      // this is only acceptable if we're on the very last\n      // empty segment of a file with a trailing slash.\n      // a/* should match a/b/\n      return fi === fl - 1 && file[fi] === ''\n\n      /* c8 ignore start */\n    } else {\n      // should be unreachable.\n      throw new Error('wtf?')\n    }\n    /* c8 ignore stop */\n  }\n\n  braceExpand() {\n    return braceExpand(this.pattern, this.options)\n  }\n\n  parse(pattern: string): ParseReturn {\n    assertValidPattern(pattern)\n\n    const options = this.options\n\n    // shortcuts\n    if (pattern === '**') return GLOBSTAR\n    if (pattern === '') return ''\n\n    // far and away, the most common glob pattern parts are\n    // *, *.*, and *.<ext>  Add a fast check method for those.\n    let m: RegExpMatchArray | null\n    let fastTest: null | ((f: string) => boolean) = null\n    if ((m = pattern.match(starRE))) {\n      fastTest = options.dot ? starTestDot : starTest\n    } else if ((m = pattern.match(starDotExtRE))) {\n      fastTest = (\n        options.nocase\n          ? options.dot\n            ? starDotExtTestNocaseDot\n            : starDotExtTestNocase\n          : options.dot\n          ? starDotExtTestDot\n          : starDotExtTest\n      )(m[1])\n    } else if ((m = pattern.match(qmarksRE))) {\n      fastTest = (\n        options.nocase\n          ? options.dot\n            ? qmarksTestNocaseDot\n            : qmarksTestNocase\n          : options.dot\n          ? qmarksTestDot\n          : qmarksTest\n      )(m)\n    } else if ((m = pattern.match(starDotStarRE))) {\n      fastTest = options.dot ? starDotStarTestDot : starDotStarTest\n    } else if ((m = pattern.match(dotStarRE))) {\n      fastTest = dotStarTest\n    }\n\n    const re = AST.fromGlob(pattern, this.options).toMMPattern()\n    if (fastTest && typeof re === 'object') {\n      // Avoids overriding in frozen environments\n      Reflect.defineProperty(re, 'test', { value: fastTest })\n    }\n    return re\n  }\n\n  makeRe() {\n    if (this.regexp || this.regexp === false) return this.regexp\n\n    // at this point, this.set is a 2d array of partial\n    // pattern strings, or \"**\".\n    //\n    // It's better to use .match().  This function shouldn't\n    // be used, really, but it's pretty convenient sometimes,\n    // when you just want to work with a regex.\n    const set = this.set\n\n    if (!set.length) {\n      this.regexp = false\n      return this.regexp\n    }\n    const options = this.options\n\n    const twoStar = options.noglobstar\n      ? star\n      : options.dot\n      ? twoStarDot\n      : twoStarNoDot\n    const flags = new Set(options.nocase ? ['i'] : [])\n\n    // regexpify non-globstar patterns\n    // if ** is only item, then we just do one twoStar\n    // if ** is first, and there are more, prepend (\\/|twoStar\\/)? to next\n    // if ** is last, append (\\/twoStar|) to previous\n    // if ** is in the middle, append (\\/|\\/twoStar\\/) to previous\n    // then filter out GLOBSTAR symbols\n    let re = set\n      .map(pattern => {\n        const pp: (string | typeof GLOBSTAR)[] = pattern.map(p => {\n          if (p instanceof RegExp) {\n            for (const f of p.flags.split('')) flags.add(f)\n          }\n          return typeof p === 'string'\n            ? regExpEscape(p)\n            : p === GLOBSTAR\n            ? GLOBSTAR\n            : p._src\n        }) as (string | typeof GLOBSTAR)[]\n        pp.forEach((p, i) => {\n          const next = pp[i + 1]\n          const prev = pp[i - 1]\n          if (p !== GLOBSTAR || prev === GLOBSTAR) {\n            return\n          }\n          if (prev === undefined) {\n            if (next !== undefined && next !== GLOBSTAR) {\n              pp[i + 1] = '(?:\\\\/|' + twoStar + '\\\\/)?' + next\n            } else {\n              pp[i] = twoStar\n            }\n          } else if (next === undefined) {\n            pp[i - 1] = prev + '(?:\\\\/|' + twoStar + ')?'\n          } else if (next !== GLOBSTAR) {\n            pp[i - 1] = prev + '(?:\\\\/|\\\\/' + twoStar + '\\\\/)' + next\n            pp[i + 1] = GLOBSTAR\n          }\n        })\n        return pp.filter(p => p !== GLOBSTAR).join('/')\n      })\n      .join('|')\n\n    // need to wrap in parens if we had more than one thing with |,\n    // otherwise only the first will be anchored to ^ and the last to $\n    const [open, close] = set.length > 1 ? ['(?:', ')'] : ['', '']\n    // must match entire pattern\n    // ending in a * or ** will make it less strict.\n    re = '^' + open + re + close + '$'\n\n    // can match anything, as long as it's not this.\n    if (this.negate) re = '^(?!' + re + ').+$'\n\n    try {\n      this.regexp = new RegExp(re, [...flags].join(''))\n      /* c8 ignore start */\n    } catch (ex) {\n      // should be impossible\n      this.regexp = false\n    }\n    /* c8 ignore stop */\n    return this.regexp\n  }\n\n  slashSplit(p: string) {\n    // if p starts with // on windows, we preserve that\n    // so that UNC paths aren't broken.  Otherwise, any number of\n    // / characters are coalesced into one, unless\n    // preserveMultipleSlashes is set to true.\n    if (this.preserveMultipleSlashes) {\n      return p.split('/')\n    } else if (this.isWindows && /^\\/\\/[^\\/]+/.test(p)) {\n      // add an extra '' for the one we lose\n      return ['', ...p.split(/\\/+/)]\n    } else {\n      return p.split(/\\/+/)\n    }\n  }\n\n  match(f: string, partial = this.partial) {\n    this.debug('match', f, this.pattern)\n    // short-circuit in the case of busted things.\n    // comments, etc.\n    if (this.comment) {\n      return false\n    }\n    if (this.empty) {\n      return f === ''\n    }\n\n    if (f === '/' && partial) {\n      return true\n    }\n\n    const options = this.options\n\n    // windows: need to use /, not \\\n    if (this.isWindows) {\n      f = f.split('\\\\').join('/')\n    }\n\n    // treat the test path as a set of pathparts.\n    const ff = this.slashSplit(f)\n    this.debug(this.pattern, 'split', ff)\n\n    // just ONE of the pattern sets in this.set needs to match\n    // in order for it to be valid.  If negating, then just one\n    // match means that we have failed.\n    // Either way, return on the first hit.\n\n    const set = this.set\n    this.debug(this.pattern, 'set', set)\n\n    // Find the basename of the path by looking for the last non-empty segment\n    let filename: string = ff[ff.length - 1]\n    if (!filename) {\n      for (let i = ff.length - 2; !filename && i >= 0; i--) {\n        filename = ff[i]\n      }\n    }\n\n    for (let i = 0; i < set.length; i++) {\n      const pattern = set[i]\n      let file = ff\n      if (options.matchBase && pattern.length === 1) {\n        file = [filename]\n      }\n      const hit = this.matchOne(file, pattern, partial)\n      if (hit) {\n        if (options.flipNegate) {\n          return true\n        }\n        return !this.negate\n      }\n    }\n\n    // didn't get any hits.  this is success if it's a negative\n    // pattern, failure otherwise.\n    if (options.flipNegate) {\n      return false\n    }\n    return this.negate\n  }\n\n  static defaults(def: MinimatchOptions) {\n    return minimatch.defaults(def).Minimatch\n  }\n}\n/* c8 ignore start */\nexport { AST } from './ast.js'\nexport { escape } from './escape.js'\nexport { unescape } from './unescape.js'\n/* c8 ignore stop */\nminimatch.AST = AST\nminimatch.Minimatch = Minimatch\nminimatch.escape = escape\nminimatch.unescape = unescape\n", "/**\n * @module LRUCache\n */\n\n// module-private names and types\ntype Perf = { now: () => number }\nconst perf: Perf =\n  typeof performance === 'object' &&\n  performance &&\n  typeof performance.now === 'function'\n    ? performance\n    : Date\n\nconst warned = new Set<string>()\n\n// either a function or a class\ntype ForC = ((...a: any[]) => any) | { new (...a: any[]): any }\n\n/* c8 ignore start */\nconst PROCESS = (\n  typeof process === 'object' && !!process ? process : {}\n) as { [k: string]: any }\n/* c8 ignore start */\n\nconst emitWarning = (\n  msg: string,\n  type: string,\n  code: string,\n  fn: ForC\n) => {\n  typeof PROCESS.emitWarning === 'function'\n    ? PROCESS.emitWarning(msg, type, code, fn)\n    : console.error(`[${code}] ${type}: ${msg}`)\n}\n\nlet AC = globalThis.AbortController\nlet AS = globalThis.AbortSignal\n\n/* c8 ignore start */\nif (typeof AC === 'undefined') {\n  //@ts-ignore\n  AS = class AbortSignal {\n    onabort?: (...a: any[]) => any\n    _onabort: ((...a: any[]) => any)[] = []\n    reason?: any\n    aborted: boolean = false\n    addEventListener(_: string, fn: (...a: any[]) => any) {\n      this._onabort.push(fn)\n    }\n  }\n  //@ts-ignore\n  AC = class AbortController {\n    constructor() {\n      warnACPolyfill()\n    }\n    signal = new AS()\n    abort(reason: any) {\n      if (this.signal.aborted) return\n      //@ts-ignore\n      this.signal.reason = reason\n      //@ts-ignore\n      this.signal.aborted = true\n      //@ts-ignore\n      for (const fn of this.signal._onabort) {\n        fn(reason)\n      }\n      this.signal.onabort?.(reason)\n    }\n  }\n  let printACPolyfillWarning =\n    PROCESS.env?.LRU_CACHE_IGNORE_AC_WARNING !== '1'\n  const warnACPolyfill = () => {\n    if (!printACPolyfillWarning) return\n    printACPolyfillWarning = false\n    emitWarning(\n      'AbortController is not defined. If using lru-cache in ' +\n        'node 14, load an AbortController polyfill from the ' +\n        '`node-abort-controller` package. A minimal polyfill is ' +\n        'provided for use by LRUCache.fetch(), but it should not be ' +\n        'relied upon in other contexts (eg, passing it to other APIs that ' +\n        'use AbortController/AbortSignal might have undesirable effects). ' +\n        'You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.',\n      'NO_ABORT_CONTROLLER',\n      'ENOTSUP',\n      warnACPolyfill\n    )\n  }\n}\n/* c8 ignore stop */\n\nconst shouldWarn = (code: string) => !warned.has(code)\n\nconst TYPE = Symbol('type')\nexport type PosInt = number & { [TYPE]: 'Positive Integer' }\nexport type Index = number & { [TYPE]: 'LRUCache Index' }\n\nconst isPosInt = (n: any): n is PosInt =>\n  n && n === Math.floor(n) && n > 0 && isFinite(n)\n\nexport type UintArray = Uint8Array | Uint16Array | Uint32Array\nexport type NumberArray = UintArray | number[]\n\n/* c8 ignore start */\n// This is a little bit ridiculous, tbh.\n// The maximum array length is 2^32-1 or thereabouts on most JS impls.\n// And well before that point, you're caching the entire world, I mean,\n// that's ~32GB of just integers for the next/prev links, plus whatever\n// else to hold that many keys and values.  Just filling the memory with\n// zeroes at init time is brutal when you get that big.\n// But why not be complete?\n// Maybe in the future, these limits will have expanded.\nconst getUintArray = (max: number) =>\n  !isPosInt(max)\n    ? null\n    : max <= Math.pow(2, 8)\n    ? Uint8Array\n    : max <= Math.pow(2, 16)\n    ? Uint16Array\n    : max <= Math.pow(2, 32)\n    ? Uint32Array\n    : max <= Number.MAX_SAFE_INTEGER\n    ? ZeroArray\n    : null\n/* c8 ignore stop */\n\nclass ZeroArray extends Array<number> {\n  constructor(size: number) {\n    super(size)\n    this.fill(0)\n  }\n}\nexport type { ZeroArray }\nexport type { Stack }\n\nexport type StackLike = Stack | Index[]\nclass Stack {\n  heap: NumberArray\n  length: number\n  // private constructor\n  static #constructing: boolean = false\n  static create(max: number): StackLike {\n    const HeapCls = getUintArray(max)\n    if (!HeapCls) return []\n    Stack.#constructing = true\n    const s = new Stack(max, HeapCls)\n    Stack.#constructing = false\n    return s\n  }\n  constructor(\n    max: number,\n    HeapCls: { new (n: number): NumberArray }\n  ) {\n    /* c8 ignore start */\n    if (!Stack.#constructing) {\n      throw new TypeError('instantiate Stack using Stack.create(n)')\n    }\n    /* c8 ignore stop */\n    this.heap = new HeapCls(max)\n    this.length = 0\n  }\n  push(n: Index) {\n    this.heap[this.length++] = n\n  }\n  pop(): Index {\n    return this.heap[--this.length] as Index\n  }\n}\n\n/**\n * Promise representing an in-progress {@link LRUCache#fetch} call\n */\nexport type BackgroundFetch<V> = Promise<V | undefined> & {\n  __returned: BackgroundFetch<V> | undefined\n  __abortController: AbortController\n  __staleWhileFetching: V | undefined\n}\n\nexport type DisposeTask<K, V> = [\n  value: V,\n  key: K,\n  reason: LRUCache.DisposeReason\n]\n\nexport namespace LRUCache {\n  /**\n   * An integer greater than 0, reflecting the calculated size of items\n   */\n  export type Size = number\n\n  /**\n   * Integer greater than 0, representing some number of milliseconds, or the\n   * time at which a TTL started counting from.\n   */\n  export type Milliseconds = number\n\n  /**\n   * An integer greater than 0, reflecting a number of items\n   */\n  export type Count = number\n\n  /**\n   * The reason why an item was removed from the cache, passed\n   * to the {@link Disposer} methods.\n   *\n   * - `evict`: The item was evicted because it is the least recently used,\n   *   and the cache is full.\n   * - `set`: A new value was set, overwriting the old value being disposed.\n   * - `delete`: The item was explicitly deleted, either by calling\n   *   {@link LRUCache#delete}, {@link LRUCache#clear}, or\n   *   {@link LRUCache#set} with an undefined value.\n   * - `expire`: The item was removed due to exceeding its TTL.\n   * - `fetch`: A {@link OptionsBase#fetchMethod} operation returned\n   *   `undefined` or was aborted, causing the item to be deleted.\n   */\n  export type DisposeReason =\n    | 'evict'\n    | 'set'\n    | 'delete'\n    | 'expire'\n    | 'fetch'\n  /**\n   * A method called upon item removal, passed as the\n   * {@link OptionsBase.dispose} and/or\n   * {@link OptionsBase.disposeAfter} options.\n   */\n  export type Disposer<K, V> = (\n    value: V,\n    key: K,\n    reason: DisposeReason\n  ) => void\n\n  /**\n   * A function that returns the effective calculated size\n   * of an entry in the cache.\n   */\n  export type SizeCalculator<K, V> = (value: V, key: K) => Size\n\n  /**\n   * Options provided to the\n   * {@link OptionsBase.fetchMethod} function.\n   */\n  export interface FetcherOptions<K, V, FC = unknown> {\n    signal: AbortSignal\n    options: FetcherFetchOptions<K, V, FC>\n    /**\n     * Object provided in the {@link FetchOptions.context} option to\n     * {@link LRUCache#fetch}\n     */\n    context: FC\n  }\n\n  /**\n   * Occasionally, it may be useful to track the internal behavior of the\n   * cache, particularly for logging, debugging, or for behavior within the\n   * `fetchMethod`. To do this, you can pass a `status` object to the\n   * {@link LRUCache#fetch}, {@link LRUCache#get}, {@link LRUCache#set},\n   * {@link LRUCache#memo}, and {@link LRUCache#has} methods.\n   *\n   * The `status` option should be a plain JavaScript object. The following\n   * fields will be set on it appropriately, depending on the situation.\n   */\n  export interface Status<V> {\n    /**\n     * The status of a set() operation.\n     *\n     * - add: the item was not found in the cache, and was added\n     * - update: the item was in the cache, with the same value provided\n     * - replace: the item was in the cache, and replaced\n     * - miss: the item was not added to the cache for some reason\n     */\n    set?: 'add' | 'update' | 'replace' | 'miss'\n\n    /**\n     * the ttl stored for the item, or undefined if ttls are not used.\n     */\n    ttl?: Milliseconds\n\n    /**\n     * the start time for the item, or undefined if ttls are not used.\n     */\n    start?: Milliseconds\n\n    /**\n     * The timestamp used for TTL calculation\n     */\n    now?: Milliseconds\n\n    /**\n     * the remaining ttl for the item, or undefined if ttls are not used.\n     */\n    remainingTTL?: Milliseconds\n\n    /**\n     * The calculated size for the item, if sizes are used.\n     */\n    entrySize?: Size\n\n    /**\n     * The total calculated size of the cache, if sizes are used.\n     */\n    totalCalculatedSize?: Size\n\n    /**\n     * A flag indicating that the item was not stored, due to exceeding the\n     * {@link OptionsBase.maxEntrySize}\n     */\n    maxEntrySizeExceeded?: true\n\n    /**\n     * The old value, specified in the case of `set:'update'` or\n     * `set:'replace'`\n     */\n    oldValue?: V\n\n    /**\n     * The results of a {@link LRUCache#has} operation\n     *\n     * - hit: the item was found in the cache\n     * - stale: the item was found in the cache, but is stale\n     * - miss: the item was not found in the cache\n     */\n    has?: 'hit' | 'stale' | 'miss'\n\n    /**\n     * The status of a {@link LRUCache#fetch} operation.\n     * Note that this can change as the underlying fetch() moves through\n     * various states.\n     *\n     * - inflight: there is another fetch() for this key which is in process\n     * - get: there is no {@link OptionsBase.fetchMethod}, so\n     *   {@link LRUCache#get} was called.\n     * - miss: the item is not in cache, and will be fetched.\n     * - hit: the item is in the cache, and was resolved immediately.\n     * - stale: the item is in the cache, but stale.\n     * - refresh: the item is in the cache, and not stale, but\n     *   {@link FetchOptions.forceRefresh} was specified.\n     */\n    fetch?: 'get' | 'inflight' | 'miss' | 'hit' | 'stale' | 'refresh'\n\n    /**\n     * The {@link OptionsBase.fetchMethod} was called\n     */\n    fetchDispatched?: true\n\n    /**\n     * The cached value was updated after a successful call to\n     * {@link OptionsBase.fetchMethod}\n     */\n    fetchUpdated?: true\n\n    /**\n     * The reason for a fetch() rejection.  Either the error raised by the\n     * {@link OptionsBase.fetchMethod}, or the reason for an\n     * AbortSignal.\n     */\n    fetchError?: Error\n\n    /**\n     * The fetch received an abort signal\n     */\n    fetchAborted?: true\n\n    /**\n     * The abort signal received was ignored, and the fetch was allowed to\n     * continue.\n     */\n    fetchAbortIgnored?: true\n\n    /**\n     * The fetchMethod promise resolved successfully\n     */\n    fetchResolved?: true\n\n    /**\n     * The fetchMethod promise was rejected\n     */\n    fetchRejected?: true\n\n    /**\n     * The status of a {@link LRUCache#get} operation.\n     *\n     * - fetching: The item is currently being fetched.  If a previous value\n     *   is present and allowed, that will be returned.\n     * - stale: The item is in the cache, and is stale.\n     * - hit: the item is in the cache\n     * - miss: the item is not in the cache\n     */\n    get?: 'stale' | 'hit' | 'miss'\n\n    /**\n     * A fetch or get operation returned a stale value.\n     */\n    returnedStale?: true\n  }\n\n  /**\n   * options which override the options set in the LRUCache constructor\n   * when calling {@link LRUCache#fetch}.\n   *\n   * This is the union of {@link GetOptions} and {@link SetOptions}, plus\n   * {@link OptionsBase.noDeleteOnFetchRejection},\n   * {@link OptionsBase.allowStaleOnFetchRejection},\n   * {@link FetchOptions.forceRefresh}, and\n   * {@link FetcherOptions.context}\n   *\n   * Any of these may be modified in the {@link OptionsBase.fetchMethod}\n   * function, but the {@link GetOptions} fields will of course have no\n   * effect, as the {@link LRUCache#get} call already happened by the time\n   * the fetchMethod is called.\n   */\n  export interface FetcherFetchOptions<K, V, FC = unknown>\n    extends Pick<\n      OptionsBase<K, V, FC>,\n      | 'allowStale'\n      | 'updateAgeOnGet'\n      | 'noDeleteOnStaleGet'\n      | 'sizeCalculation'\n      | 'ttl'\n      | 'noDisposeOnSet'\n      | 'noUpdateTTL'\n      | 'noDeleteOnFetchRejection'\n      | 'allowStaleOnFetchRejection'\n      | 'ignoreFetchAbort'\n      | 'allowStaleOnFetchAbort'\n    > {\n    status?: Status<V>\n    size?: Size\n  }\n\n  /**\n   * Options that may be passed to the {@link LRUCache#fetch} method.\n   */\n  export interface FetchOptions<K, V, FC>\n    extends FetcherFetchOptions<K, V, FC> {\n    /**\n     * Set to true to force a re-load of the existing data, even if it\n     * is not yet stale.\n     */\n    forceRefresh?: boolean\n    /**\n     * Context provided to the {@link OptionsBase.fetchMethod} as\n     * the {@link FetcherOptions.context} param.\n     *\n     * If the FC type is specified as unknown (the default),\n     * undefined or void, then this is optional.  Otherwise, it will\n     * be required.\n     */\n    context?: FC\n    signal?: AbortSignal\n    status?: Status<V>\n  }\n  /**\n   * Options provided to {@link LRUCache#fetch} when the FC type is something\n   * other than `unknown`, `undefined`, or `void`\n   */\n  export interface FetchOptionsWithContext<K, V, FC>\n    extends FetchOptions<K, V, FC> {\n    context: FC\n  }\n  /**\n   * Options provided to {@link LRUCache#fetch} when the FC type is\n   * `undefined` or `void`\n   */\n  export interface FetchOptionsNoContext<K, V>\n    extends FetchOptions<K, V, undefined> {\n    context?: undefined\n  }\n\n  export interface MemoOptions<K, V, FC = unknown>\n    extends Pick<\n      OptionsBase<K, V, FC>,\n      | 'allowStale'\n      | 'updateAgeOnGet'\n      | 'noDeleteOnStaleGet'\n      | 'sizeCalculation'\n      | 'ttl'\n      | 'noDisposeOnSet'\n      | 'noUpdateTTL'\n      | 'noDeleteOnFetchRejection'\n      | 'allowStaleOnFetchRejection'\n      | 'ignoreFetchAbort'\n      | 'allowStaleOnFetchAbort'\n    > {\n    /**\n     * Set to true to force a re-load of the existing data, even if it\n     * is not yet stale.\n     */\n    forceRefresh?: boolean\n    /**\n     * Context provided to the {@link OptionsBase.memoMethod} as\n     * the {@link MemoizerOptions.context} param.\n     *\n     * If the FC type is specified as unknown (the default),\n     * undefined or void, then this is optional.  Otherwise, it will\n     * be required.\n     */\n    context?: FC\n    status?: Status<V>\n  }\n  /**\n   * Options provided to {@link LRUCache#memo} when the FC type is something\n   * other than `unknown`, `undefined`, or `void`\n   */\n  export interface MemoOptionsWithContext<K, V, FC>\n    extends MemoOptions<K, V, FC> {\n    context: FC\n  }\n  /**\n   * Options provided to {@link LRUCache#memo} when the FC type is\n   * `undefined` or `void`\n   */\n  export interface MemoOptionsNoContext<K, V>\n    extends MemoOptions<K, V, undefined> {\n    context?: undefined\n  }\n\n  /**\n   * Options provided to the\n   * {@link OptionsBase.memoMethod} function.\n   */\n  export interface MemoizerOptions<K, V, FC = unknown> {\n    options: MemoizerMemoOptions<K, V, FC>\n    /**\n     * Object provided in the {@link MemoOptions.context} option to\n     * {@link LRUCache#memo}\n     */\n    context: FC\n  }\n\n  /**\n   * options which override the options set in the LRUCache constructor\n   * when calling {@link LRUCache#memo}.\n   *\n   * This is the union of {@link GetOptions} and {@link SetOptions}, plus\n   * {@link MemoOptions.forceRefresh}, and\n   * {@link MemoerOptions.context}\n   *\n   * Any of these may be modified in the {@link OptionsBase.memoMethod}\n   * function, but the {@link GetOptions} fields will of course have no\n   * effect, as the {@link LRUCache#get} call already happened by the time\n   * the memoMethod is called.\n   */\n  export interface MemoizerMemoOptions<K, V, FC = unknown>\n    extends Pick<\n      OptionsBase<K, V, FC>,\n      | 'allowStale'\n      | 'updateAgeOnGet'\n      | 'noDeleteOnStaleGet'\n      | 'sizeCalculation'\n      | 'ttl'\n      | 'noDisposeOnSet'\n      | 'noUpdateTTL'\n    > {\n    status?: Status<V>\n    size?: Size\n    start?: Milliseconds\n  }\n\n  /**\n   * Options that may be passed to the {@link LRUCache#has} method.\n   */\n  export interface HasOptions<K, V, FC>\n    extends Pick<OptionsBase<K, V, FC>, 'updateAgeOnHas'> {\n    status?: Status<V>\n  }\n\n  /**\n   * Options that may be passed to the {@link LRUCache#get} method.\n   */\n  export interface GetOptions<K, V, FC>\n    extends Pick<\n      OptionsBase<K, V, FC>,\n      'allowStale' | 'updateAgeOnGet' | 'noDeleteOnStaleGet'\n    > {\n    status?: Status<V>\n  }\n\n  /**\n   * Options that may be passed to the {@link LRUCache#peek} method.\n   */\n  export interface PeekOptions<K, V, FC>\n    extends Pick<OptionsBase<K, V, FC>, 'allowStale'> {}\n\n  /**\n   * Options that may be passed to the {@link LRUCache#set} method.\n   */\n  export interface SetOptions<K, V, FC>\n    extends Pick<\n      OptionsBase<K, V, FC>,\n      'sizeCalculation' | 'ttl' | 'noDisposeOnSet' | 'noUpdateTTL'\n    > {\n    /**\n     * If size tracking is enabled, then setting an explicit size\n     * in the {@link LRUCache#set} call will prevent calling the\n     * {@link OptionsBase.sizeCalculation} function.\n     */\n    size?: Size\n    /**\n     * If TTL tracking is enabled, then setting an explicit start\n     * time in the {@link LRUCache#set} call will override the\n     * default time from `performance.now()` or `Date.now()`.\n     *\n     * Note that it must be a valid value for whichever time-tracking\n     * method is in use.\n     */\n    start?: Milliseconds\n    status?: Status<V>\n  }\n\n  /**\n   * The type signature for the {@link OptionsBase.fetchMethod} option.\n   */\n  export type Fetcher<K, V, FC = unknown> = (\n    key: K,\n    staleValue: V | undefined,\n    options: FetcherOptions<K, V, FC>\n  ) => Promise<V | undefined | void> | V | undefined | void\n\n  /**\n   * the type signature for the {@link OptionsBase.memoMethod} option.\n   */\n  export type Memoizer<K, V, FC = unknown> = (\n    key: K,\n    staleValue: V | undefined,\n    options: MemoizerOptions<K, V, FC>\n  ) => V\n\n  /**\n   * Options which may be passed to the {@link LRUCache} constructor.\n   *\n   * Most of these may be overridden in the various options that use\n   * them.\n   *\n   * Despite all being technically optional, the constructor requires that\n   * a cache is at minimum limited by one or more of {@link OptionsBase.max},\n   * {@link OptionsBase.ttl}, or {@link OptionsBase.maxSize}.\n   *\n   * If {@link OptionsBase.ttl} is used alone, then it is strongly advised\n   * (and in fact required by the type definitions here) that the cache\n   * also set {@link OptionsBase.ttlAutopurge}, to prevent potentially\n   * unbounded storage.\n   *\n   * All options are also available on the {@link LRUCache} instance, making\n   * it safe to pass an LRUCache instance as the options argumemnt to\n   * make another empty cache of the same type.\n   *\n   * Some options are marked as read-only, because changing them after\n   * instantiation is not safe. Changing any of the other options will of\n   * course only have an effect on subsequent method calls.\n   */\n  export interface OptionsBase<K, V, FC> {\n    /**\n     * The maximum number of items to store in the cache before evicting\n     * old entries. This is read-only on the {@link LRUCache} instance,\n     * and may not be overridden.\n     *\n     * If set, then storage space will be pre-allocated at construction\n     * time, and the cache will perform significantly faster.\n     *\n     * Note that significantly fewer items may be stored, if\n     * {@link OptionsBase.maxSize} and/or {@link OptionsBase.ttl} are also\n     * set.\n     *\n     * **It is strongly recommended to set a `max` to prevent unbounded growth\n     * of the cache.**\n     */\n    max?: Count\n\n    /**\n     * Max time in milliseconds for items to live in cache before they are\n     * considered stale.  Note that stale items are NOT preemptively removed by\n     * default, and MAY live in the cache, contributing to its LRU max, long\n     * after they have expired, unless {@link OptionsBase.ttlAutopurge} is\n     * set.\n     *\n     * If set to `0` (the default value), then that means \"do not track\n     * TTL\", not \"expire immediately\".\n     *\n     * Also, as this cache is optimized for LRU/MRU operations, some of\n     * the staleness/TTL checks will reduce performance, as they will incur\n     * overhead by deleting items.\n     *\n     * This is not primarily a TTL cache, and does not make strong TTL\n     * guarantees. There is no pre-emptive pruning of expired items, but you\n     * _may_ set a TTL on the cache, and it will treat expired items as missing\n     * when they are fetched, and delete them.\n     *\n     * Optional, but must be a non-negative integer in ms if specified.\n     *\n     * This may be overridden by passing an options object to `cache.set()`.\n     *\n     * At least one of `max`, `maxSize`, or `TTL` is required. This must be a\n     * positive integer if set.\n     *\n     * Even if ttl tracking is enabled, **it is strongly recommended to set a\n     * `max` to prevent unbounded growth of the cache.**\n     *\n     * If ttl tracking is enabled, and `max` and `maxSize` are not set,\n     * and `ttlAutopurge` is not set, then a warning will be emitted\n     * cautioning about the potential for unbounded memory consumption.\n     * (The TypeScript definitions will also discourage this.)\n     */\n    ttl?: Milliseconds\n\n    /**\n     * Minimum amount of time in ms in which to check for staleness.\n     * Defaults to 1, which means that the current time is checked\n     * at most once per millisecond.\n     *\n     * Set to 0 to check the current time every time staleness is tested.\n     * (This reduces performance, and is theoretically unnecessary.)\n     *\n     * Setting this to a higher value will improve performance somewhat\n     * while using ttl tracking, albeit at the expense of keeping stale\n     * items around a bit longer than their TTLs would indicate.\n     *\n     * @default 1\n     */\n    ttlResolution?: Milliseconds\n\n    /**\n     * Preemptively remove stale items from the cache.\n     *\n     * Note that this may *significantly* degrade performance, especially if\n     * the cache is storing a large number of items. It is almost always best\n     * to just leave the stale items in the cache, and let them fall out as new\n     * items are added.\n     *\n     * Note that this means that {@link OptionsBase.allowStale} is a bit\n     * pointless, as stale items will be deleted almost as soon as they\n     * expire.\n     *\n     * Use with caution!\n     */\n    ttlAutopurge?: boolean\n\n    /**\n     * When using time-expiring entries with `ttl`, setting this to `true` will\n     * make each item's age reset to 0 whenever it is retrieved from cache with\n     * {@link LRUCache#get}, causing it to not expire. (It can still fall out\n     * of cache based on recency of use, of course.)\n     *\n     * Has no effect if {@link OptionsBase.ttl} is not set.\n     *\n     * This may be overridden by passing an options object to `cache.get()`.\n     */\n    updateAgeOnGet?: boolean\n\n    /**\n     * When using time-expiring entries with `ttl`, setting this to `true` will\n     * make each item's age reset to 0 whenever its presence in the cache is\n     * checked with {@link LRUCache#has}, causing it to not expire. (It can\n     * still fall out of cache based on recency of use, of course.)\n     *\n     * Has no effect if {@link OptionsBase.ttl} is not set.\n     */\n    updateAgeOnHas?: boolean\n\n    /**\n     * Allow {@link LRUCache#get} and {@link LRUCache#fetch} calls to return\n     * stale data, if available.\n     *\n     * By default, if you set `ttl`, stale items will only be deleted from the\n     * cache when you `get(key)`. That is, it's not preemptively pruning items,\n     * unless {@link OptionsBase.ttlAutopurge} is set.\n     *\n     * If you set `allowStale:true`, it'll return the stale value *as well as*\n     * deleting it. If you don't set this, then it'll return `undefined` when\n     * you try to get a stale entry.\n     *\n     * Note that when a stale entry is fetched, _even if it is returned due to\n     * `allowStale` being set_, it is removed from the cache immediately. You\n     * can suppress this behavior by setting\n     * {@link OptionsBase.noDeleteOnStaleGet}, either in the constructor, or in\n     * the options provided to {@link LRUCache#get}.\n     *\n     * This may be overridden by passing an options object to `cache.get()`.\n     * The `cache.has()` method will always return `false` for stale items.\n     *\n     * Only relevant if a ttl is set.\n     */\n    allowStale?: boolean\n\n    /**\n     * Function that is called on items when they are dropped from the\n     * cache, as `dispose(value, key, reason)`.\n     *\n     * This can be handy if you want to close file descriptors or do\n     * other cleanup tasks when items are no longer stored in the cache.\n     *\n     * **NOTE**: It is called _before_ the item has been fully removed\n     * from the cache, so if you want to put it right back in, you need\n     * to wait until the next tick. If you try to add it back in during\n     * the `dispose()` function call, it will break things in subtle and\n     * weird ways.\n     *\n     * Unlike several other options, this may _not_ be overridden by\n     * passing an option to `set()`, for performance reasons.\n     *\n     * The `reason` will be one of the following strings, corresponding\n     * to the reason for the item's deletion:\n     *\n     * - `evict` Item was evicted to make space for a new addition\n     * - `set` Item was overwritten by a new value\n     * - `expire` Item expired its TTL\n     * - `fetch` Item was deleted due to a failed or aborted fetch, or a\n     *   fetchMethod returning `undefined.\n     * - `delete` Item was removed by explicit `cache.delete(key)`,\n     *   `cache.clear()`, or `cache.set(key, undefined)`.\n     */\n    dispose?: Disposer<K, V>\n\n    /**\n     * The same as {@link OptionsBase.dispose}, but called *after* the entry\n     * is completely removed and the cache is once again in a clean state.\n     *\n     * It is safe to add an item right back into the cache at this point.\n     * However, note that it is *very* easy to inadvertently create infinite\n     * recursion this way.\n     */\n    disposeAfter?: Disposer<K, V>\n\n    /**\n     * Set to true to suppress calling the\n     * {@link OptionsBase.dispose} function if the entry key is\n     * still accessible within the cache.\n     *\n     * This may be overridden by passing an options object to\n     * {@link LRUCache#set}.\n     *\n     * Only relevant if `dispose` or `disposeAfter` are set.\n     */\n    noDisposeOnSet?: boolean\n\n    /**\n     * Boolean flag to tell the cache to not update the TTL when setting a new\n     * value for an existing key (ie, when updating a value rather than\n     * inserting a new value).  Note that the TTL value is _always_ set (if\n     * provided) when adding a new entry into the cache.\n     *\n     * Has no effect if a {@link OptionsBase.ttl} is not set.\n     *\n     * May be passed as an option to {@link LRUCache#set}.\n     */\n    noUpdateTTL?: boolean\n\n    /**\n     * Set to a positive integer to track the sizes of items added to the\n     * cache, and automatically evict items in order to stay below this size.\n     * Note that this may result in fewer than `max` items being stored.\n     *\n     * Attempting to add an item to the cache whose calculated size is greater\n     * that this amount will be a no-op. The item will not be cached, and no\n     * other items will be evicted.\n     *\n     * Optional, must be a positive integer if provided.\n     *\n     * Sets `maxEntrySize` to the same value, unless a different value is\n     * provided for `maxEntrySize`.\n     *\n     * At least one of `max`, `maxSize`, or `TTL` is required. This must be a\n     * positive integer if set.\n     *\n     * Even if size tracking is enabled, **it is strongly recommended to set a\n     * `max` to prevent unbounded growth of the cache.**\n     *\n     * Note also that size tracking can negatively impact performance,\n     * though for most cases, only minimally.\n     */\n    maxSize?: Size\n\n    /**\n     * The maximum allowed size for any single item in the cache.\n     *\n     * If a larger item is passed to {@link LRUCache#set} or returned by a\n     * {@link OptionsBase.fetchMethod} or {@link OptionsBase.memoMethod}, then\n     * it will not be stored in the cache.\n     *\n     * Attempting to add an item whose calculated size is greater than\n     * this amount will not cache the item or evict any old items, but\n     * WILL delete an existing value if one is already present.\n     *\n     * Optional, must be a positive integer if provided. Defaults to\n     * the value of `maxSize` if provided.\n     */\n    maxEntrySize?: Size\n\n    /**\n     * A function that returns a number indicating the item's size.\n     *\n     * Requires {@link OptionsBase.maxSize} to be set.\n     *\n     * If not provided, and {@link OptionsBase.maxSize} or\n     * {@link OptionsBase.maxEntrySize} are set, then all\n     * {@link LRUCache#set} calls **must** provide an explicit\n     * {@link SetOptions.size} or sizeCalculation param.\n     */\n    sizeCalculation?: SizeCalculator<K, V>\n\n    /**\n     * Method that provides the implementation for {@link LRUCache#fetch}\n     *\n     * ```ts\n     * fetchMethod(key, staleValue, { signal, options, context })\n     * ```\n     *\n     * If `fetchMethod` is not provided, then `cache.fetch(key)` is equivalent\n     * to `Promise.resolve(cache.get(key))`.\n     *\n     * If at any time, `signal.aborted` is set to `true`, or if the\n     * `signal.onabort` method is called, or if it emits an `'abort'` event\n     * which you can listen to with `addEventListener`, then that means that\n     * the fetch should be abandoned. This may be passed along to async\n     * functions aware of AbortController/AbortSignal behavior.\n     *\n     * The `fetchMethod` should **only** return `undefined` or a Promise\n     * resolving to `undefined` if the AbortController signaled an `abort`\n     * event. In all other cases, it should return or resolve to a value\n     * suitable for adding to the cache.\n     *\n     * The `options` object is a union of the options that may be provided to\n     * `set()` and `get()`. If they are modified, then that will result in\n     * modifying the settings to `cache.set()` when the value is resolved, and\n     * in the case of\n     * {@link OptionsBase.noDeleteOnFetchRejection} and\n     * {@link OptionsBase.allowStaleOnFetchRejection}, the handling of\n     * `fetchMethod` failures.\n     *\n     * For example, a DNS cache may update the TTL based on the value returned\n     * from a remote DNS server by changing `options.ttl` in the `fetchMethod`.\n     */\n    fetchMethod?: Fetcher<K, V, FC>\n\n    /**\n     * Method that provides the implementation for {@link LRUCache#memo}\n     */\n    memoMethod?: Memoizer<K, V, FC>\n\n    /**\n     * Set to true to suppress the deletion of stale data when a\n     * {@link OptionsBase.fetchMethod} returns a rejected promise.\n     */\n    noDeleteOnFetchRejection?: boolean\n\n    /**\n     * Do not delete stale items when they are retrieved with\n     * {@link LRUCache#get}.\n     *\n     * Note that the `get` return value will still be `undefined`\n     * unless {@link OptionsBase.allowStale} is true.\n     *\n     * When using time-expiring entries with `ttl`, by default stale\n     * items will be removed from the cache when the key is accessed\n     * with `cache.get()`.\n     *\n     * Setting this option will cause stale items to remain in the cache, until\n     * they are explicitly deleted with `cache.delete(key)`, or retrieved with\n     * `noDeleteOnStaleGet` set to `false`.\n     *\n     * This may be overridden by passing an options object to `cache.get()`.\n     *\n     * Only relevant if a ttl is used.\n     */\n    noDeleteOnStaleGet?: boolean\n\n    /**\n     * Set to true to allow returning stale data when a\n     * {@link OptionsBase.fetchMethod} throws an error or returns a rejected\n     * promise.\n     *\n     * This differs from using {@link OptionsBase.allowStale} in that stale\n     * data will ONLY be returned in the case that the {@link LRUCache#fetch}\n     * fails, not any other times.\n     *\n     * If a `fetchMethod` fails, and there is no stale value available, the\n     * `fetch()` will resolve to `undefined`. Ie, all `fetchMethod` errors are\n     * suppressed.\n     *\n     * Implies `noDeleteOnFetchRejection`.\n     *\n     * This may be set in calls to `fetch()`, or defaulted on the constructor,\n     * or overridden by modifying the options object in the `fetchMethod`.\n     */\n    allowStaleOnFetchRejection?: boolean\n\n    /**\n     * Set to true to return a stale value from the cache when the\n     * `AbortSignal` passed to the {@link OptionsBase.fetchMethod} dispatches\n     * an `'abort'` event, whether user-triggered, or due to internal cache\n     * behavior.\n     *\n     * Unless {@link OptionsBase.ignoreFetchAbort} is also set, the underlying\n     * {@link OptionsBase.fetchMethod} will still be considered canceled, and\n     * any value it returns will be ignored and not cached.\n     *\n     * Caveat: since fetches are aborted when a new value is explicitly\n     * set in the cache, this can lead to fetch returning a stale value,\n     * since that was the fallback value _at the moment the `fetch()` was\n     * initiated_, even though the new updated value is now present in\n     * the cache.\n     *\n     * For example:\n     *\n     * ```ts\n     * const cache = new LRUCache<string, any>({\n     *   ttl: 100,\n     *   fetchMethod: async (url, oldValue, { signal }) =>  {\n     *     const res = await fetch(url, { signal })\n     *     return await res.json()\n     *   }\n     * })\n     * cache.set('https://example.com/', { some: 'data' })\n     * // 100ms go by...\n     * const result = cache.fetch('https://example.com/')\n     * cache.set('https://example.com/', { other: 'thing' })\n     * console.log(await result) // { some: 'data' }\n     * console.log(cache.get('https://example.com/')) // { other: 'thing' }\n     * ```\n     */\n    allowStaleOnFetchAbort?: boolean\n\n    /**\n     * Set to true to ignore the `abort` event emitted by the `AbortSignal`\n     * object passed to {@link OptionsBase.fetchMethod}, and still cache the\n     * resulting resolution value, as long as it is not `undefined`.\n     *\n     * When used on its own, this means aborted {@link LRUCache#fetch} calls\n     * are not immediately resolved or rejected when they are aborted, and\n     * instead take the full time to await.\n     *\n     * When used with {@link OptionsBase.allowStaleOnFetchAbort}, aborted\n     * {@link LRUCache#fetch} calls will resolve immediately to their stale\n     * cached value or `undefined`, and will continue to process and eventually\n     * update the cache when they resolve, as long as the resulting value is\n     * not `undefined`, thus supporting a \"return stale on timeout while\n     * refreshing\" mechanism by passing `AbortSignal.timeout(n)` as the signal.\n     *\n     * For example:\n     *\n     * ```ts\n     * const c = new LRUCache({\n     *   ttl: 100,\n     *   ignoreFetchAbort: true,\n     *   allowStaleOnFetchAbort: true,\n     *   fetchMethod: async (key, oldValue, { signal }) => {\n     *     // note: do NOT pass the signal to fetch()!\n     *     // let's say this fetch can take a long time.\n     *     const res = await fetch(`https://slow-backend-server/${key}`)\n     *     return await res.json()\n     *   },\n     * })\n     *\n     * // this will return the stale value after 100ms, while still\n     * // updating in the background for next time.\n     * const val = await c.fetch('key', { signal: AbortSignal.timeout(100) })\n     * ```\n     *\n     * **Note**: regardless of this setting, an `abort` event _is still\n     * emitted on the `AbortSignal` object_, so may result in invalid results\n     * when passed to other underlying APIs that use AbortSignals.\n     *\n     * This may be overridden in the {@link OptionsBase.fetchMethod} or the\n     * call to {@link LRUCache#fetch}.\n     */\n    ignoreFetchAbort?: boolean\n  }\n\n  export interface OptionsMaxLimit<K, V, FC>\n    extends OptionsBase<K, V, FC> {\n    max: Count\n  }\n  export interface OptionsTTLLimit<K, V, FC>\n    extends OptionsBase<K, V, FC> {\n    ttl: Milliseconds\n    ttlAutopurge: boolean\n  }\n  export interface OptionsSizeLimit<K, V, FC>\n    extends OptionsBase<K, V, FC> {\n    maxSize: Size\n  }\n\n  /**\n   * The valid safe options for the {@link LRUCache} constructor\n   */\n  export type Options<K, V, FC> =\n    | OptionsMaxLimit<K, V, FC>\n    | OptionsSizeLimit<K, V, FC>\n    | OptionsTTLLimit<K, V, FC>\n\n  /**\n   * Entry objects used by {@link LRUCache#load} and {@link LRUCache#dump},\n   * and returned by {@link LRUCache#info}.\n   */\n  export interface Entry<V> {\n    value: V\n    ttl?: Milliseconds\n    size?: Size\n    start?: Milliseconds\n  }\n}\n\n/**\n * Default export, the thing you're using this module to get.\n *\n * The `K` and `V` types define the key and value types, respectively. The\n * optional `FC` type defines the type of the `context` object passed to\n * `cache.fetch()` and `cache.memo()`.\n *\n * Keys and values **must not** be `null` or `undefined`.\n *\n * All properties from the options object (with the exception of `max`,\n * `maxSize`, `fetchMethod`, `memoMethod`, `dispose` and `disposeAfter`) are\n * added as normal public members. (The listed options are read-only getters.)\n *\n * Changing any of these will alter the defaults for subsequent method calls.\n */\nexport class LRUCache<K extends {}, V extends {}, FC = unknown>\n  implements Map<K, V>\n{\n  // options that cannot be changed without disaster\n  readonly #max: LRUCache.Count\n  readonly #maxSize: LRUCache.Size\n  readonly #dispose?: LRUCache.Disposer<K, V>\n  readonly #disposeAfter?: LRUCache.Disposer<K, V>\n  readonly #fetchMethod?: LRUCache.Fetcher<K, V, FC>\n  readonly #memoMethod?: LRUCache.Memoizer<K, V, FC>\n\n  /**\n   * {@link LRUCache.OptionsBase.ttl}\n   */\n  ttl: LRUCache.Milliseconds\n\n  /**\n   * {@link LRUCache.OptionsBase.ttlResolution}\n   */\n  ttlResolution: LRUCache.Milliseconds\n  /**\n   * {@link LRUCache.OptionsBase.ttlAutopurge}\n   */\n  ttlAutopurge: boolean\n  /**\n   * {@link LRUCache.OptionsBase.updateAgeOnGet}\n   */\n  updateAgeOnGet: boolean\n  /**\n   * {@link LRUCache.OptionsBase.updateAgeOnHas}\n   */\n  updateAgeOnHas: boolean\n  /**\n   * {@link LRUCache.OptionsBase.allowStale}\n   */\n  allowStale: boolean\n\n  /**\n   * {@link LRUCache.OptionsBase.noDisposeOnSet}\n   */\n  noDisposeOnSet: boolean\n  /**\n   * {@link LRUCache.OptionsBase.noUpdateTTL}\n   */\n  noUpdateTTL: boolean\n  /**\n   * {@link LRUCache.OptionsBase.maxEntrySize}\n   */\n  maxEntrySize: LRUCache.Size\n  /**\n   * {@link LRUCache.OptionsBase.sizeCalculation}\n   */\n  sizeCalculation?: LRUCache.SizeCalculator<K, V>\n  /**\n   * {@link LRUCache.OptionsBase.noDeleteOnFetchRejection}\n   */\n  noDeleteOnFetchRejection: boolean\n  /**\n   * {@link LRUCache.OptionsBase.noDeleteOnStaleGet}\n   */\n  noDeleteOnStaleGet: boolean\n  /**\n   * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort}\n   */\n  allowStaleOnFetchAbort: boolean\n  /**\n   * {@link LRUCache.OptionsBase.allowStaleOnFetchRejection}\n   */\n  allowStaleOnFetchRejection: boolean\n  /**\n   * {@link LRUCache.OptionsBase.ignoreFetchAbort}\n   */\n  ignoreFetchAbort: boolean\n\n  // computed properties\n  #size: LRUCache.Count\n  #calculatedSize: LRUCache.Size\n  #keyMap: Map<K, Index>\n  #keyList: (K | undefined)[]\n  #valList: (V | BackgroundFetch<V> | undefined)[]\n  #next: NumberArray\n  #prev: NumberArray\n  #head: Index\n  #tail: Index\n  #free: StackLike\n  #disposed?: DisposeTask<K, V>[]\n  #sizes?: ZeroArray\n  #starts?: ZeroArray\n  #ttls?: ZeroArray\n\n  #hasDispose: boolean\n  #hasFetchMethod: boolean\n  #hasDisposeAfter: boolean\n\n  /**\n   * Do not call this method unless you need to inspect the\n   * inner workings of the cache.  If anything returned by this\n   * object is modified in any way, strange breakage may occur.\n   *\n   * These fields are private for a reason!\n   *\n   * @internal\n   */\n  static unsafeExposeInternals<\n    K extends {},\n    V extends {},\n    FC extends unknown = unknown\n  >(c: LRUCache<K, V, FC>) {\n    return {\n      // properties\n      starts: c.#starts,\n      ttls: c.#ttls,\n      sizes: c.#sizes,\n      keyMap: c.#keyMap as Map<K, number>,\n      keyList: c.#keyList,\n      valList: c.#valList,\n      next: c.#next,\n      prev: c.#prev,\n      get head() {\n        return c.#head\n      },\n      get tail() {\n        return c.#tail\n      },\n      free: c.#free,\n      // methods\n      isBackgroundFetch: (p: any) => c.#isBackgroundFetch(p),\n      backgroundFetch: (\n        k: K,\n        index: number | undefined,\n        options: LRUCache.FetchOptions<K, V, FC>,\n        context: any\n      ): BackgroundFetch<V> =>\n        c.#backgroundFetch(\n          k,\n          index as Index | undefined,\n          options,\n          context\n        ),\n      moveToTail: (index: number): void =>\n        c.#moveToTail(index as Index),\n      indexes: (options?: { allowStale: boolean }) =>\n        c.#indexes(options),\n      rindexes: (options?: { allowStale: boolean }) =>\n        c.#rindexes(options),\n      isStale: (index: number | undefined) =>\n        c.#isStale(index as Index),\n    }\n  }\n\n  // Protected read-only members\n\n  /**\n   * {@link LRUCache.OptionsBase.max} (read-only)\n   */\n  get max(): LRUCache.Count {\n    return this.#max\n  }\n  /**\n   * {@link LRUCache.OptionsBase.maxSize} (read-only)\n   */\n  get maxSize(): LRUCache.Count {\n    return this.#maxSize\n  }\n  /**\n   * The total computed size of items in the cache (read-only)\n   */\n  get calculatedSize(): LRUCache.Size {\n    return this.#calculatedSize\n  }\n  /**\n   * The number of items stored in the cache (read-only)\n   */\n  get size(): LRUCache.Count {\n    return this.#size\n  }\n  /**\n   * {@link LRUCache.OptionsBase.fetchMethod} (read-only)\n   */\n  get fetchMethod(): LRUCache.Fetcher<K, V, FC> | undefined {\n    return this.#fetchMethod\n  }\n  get memoMethod(): LRUCache.Memoizer<K, V, FC> | undefined {\n    return this.#memoMethod\n  }\n  /**\n   * {@link LRUCache.OptionsBase.dispose} (read-only)\n   */\n  get dispose() {\n    return this.#dispose\n  }\n  /**\n   * {@link LRUCache.OptionsBase.disposeAfter} (read-only)\n   */\n  get disposeAfter() {\n    return this.#disposeAfter\n  }\n\n  constructor(\n    options: LRUCache.Options<K, V, FC> | LRUCache<K, V, FC>\n  ) {\n    const {\n      max = 0,\n      ttl,\n      ttlResolution = 1,\n      ttlAutopurge,\n      updateAgeOnGet,\n      updateAgeOnHas,\n      allowStale,\n      dispose,\n      disposeAfter,\n      noDisposeOnSet,\n      noUpdateTTL,\n      maxSize = 0,\n      maxEntrySize = 0,\n      sizeCalculation,\n      fetchMethod,\n      memoMethod,\n      noDeleteOnFetchRejection,\n      noDeleteOnStaleGet,\n      allowStaleOnFetchRejection,\n      allowStaleOnFetchAbort,\n      ignoreFetchAbort,\n    } = options\n\n    if (max !== 0 && !isPosInt(max)) {\n      throw new TypeError('max option must be a nonnegative integer')\n    }\n\n    const UintArray = max ? getUintArray(max) : Array\n    if (!UintArray) {\n      throw new Error('invalid max value: ' + max)\n    }\n\n    this.#max = max\n    this.#maxSize = maxSize\n    this.maxEntrySize = maxEntrySize || this.#maxSize\n    this.sizeCalculation = sizeCalculation\n    if (this.sizeCalculation) {\n      if (!this.#maxSize && !this.maxEntrySize) {\n        throw new TypeError(\n          'cannot set sizeCalculation without setting maxSize or maxEntrySize'\n        )\n      }\n      if (typeof this.sizeCalculation !== 'function') {\n        throw new TypeError('sizeCalculation set to non-function')\n      }\n    }\n\n    if (\n      memoMethod !== undefined &&\n      typeof memoMethod !== 'function'\n    ) {\n      throw new TypeError('memoMethod must be a function if defined')\n    }\n    this.#memoMethod = memoMethod\n\n    if (\n      fetchMethod !== undefined &&\n      typeof fetchMethod !== 'function'\n    ) {\n      throw new TypeError(\n        'fetchMethod must be a function if specified'\n      )\n    }\n    this.#fetchMethod = fetchMethod\n    this.#hasFetchMethod = !!fetchMethod\n\n    this.#keyMap = new Map()\n    this.#keyList = new Array(max).fill(undefined)\n    this.#valList = new Array(max).fill(undefined)\n    this.#next = new UintArray(max)\n    this.#prev = new UintArray(max)\n    this.#head = 0 as Index\n    this.#tail = 0 as Index\n    this.#free = Stack.create(max)\n    this.#size = 0\n    this.#calculatedSize = 0\n\n    if (typeof dispose === 'function') {\n      this.#dispose = dispose\n    }\n    if (typeof disposeAfter === 'function') {\n      this.#disposeAfter = disposeAfter\n      this.#disposed = []\n    } else {\n      this.#disposeAfter = undefined\n      this.#disposed = undefined\n    }\n    this.#hasDispose = !!this.#dispose\n    this.#hasDisposeAfter = !!this.#disposeAfter\n\n    this.noDisposeOnSet = !!noDisposeOnSet\n    this.noUpdateTTL = !!noUpdateTTL\n    this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection\n    this.allowStaleOnFetchRejection = !!allowStaleOnFetchRejection\n    this.allowStaleOnFetchAbort = !!allowStaleOnFetchAbort\n    this.ignoreFetchAbort = !!ignoreFetchAbort\n\n    // NB: maxEntrySize is set to maxSize if it's set\n    if (this.maxEntrySize !== 0) {\n      if (this.#maxSize !== 0) {\n        if (!isPosInt(this.#maxSize)) {\n          throw new TypeError(\n            'maxSize must be a positive integer if specified'\n          )\n        }\n      }\n      if (!isPosInt(this.maxEntrySize)) {\n        throw new TypeError(\n          'maxEntrySize must be a positive integer if specified'\n        )\n      }\n      this.#initializeSizeTracking()\n    }\n\n    this.allowStale = !!allowStale\n    this.noDeleteOnStaleGet = !!noDeleteOnStaleGet\n    this.updateAgeOnGet = !!updateAgeOnGet\n    this.updateAgeOnHas = !!updateAgeOnHas\n    this.ttlResolution =\n      isPosInt(ttlResolution) || ttlResolution === 0\n        ? ttlResolution\n        : 1\n    this.ttlAutopurge = !!ttlAutopurge\n    this.ttl = ttl || 0\n    if (this.ttl) {\n      if (!isPosInt(this.ttl)) {\n        throw new TypeError(\n          'ttl must be a positive integer if specified'\n        )\n      }\n      this.#initializeTTLTracking()\n    }\n\n    // do not allow completely unbounded caches\n    if (this.#max === 0 && this.ttl === 0 && this.#maxSize === 0) {\n      throw new TypeError(\n        'At least one of max, maxSize, or ttl is required'\n      )\n    }\n    if (!this.ttlAutopurge && !this.#max && !this.#maxSize) {\n      const code = 'LRU_CACHE_UNBOUNDED'\n      if (shouldWarn(code)) {\n        warned.add(code)\n        const msg =\n          'TTL caching without ttlAutopurge, max, or maxSize can ' +\n          'result in unbounded memory consumption.'\n        emitWarning(msg, 'UnboundedCacheWarning', code, LRUCache)\n      }\n    }\n  }\n\n  /**\n   * Return the number of ms left in the item's TTL. If item is not in cache,\n   * returns `0`. Returns `Infinity` if item is in cache without a defined TTL.\n   */\n  getRemainingTTL(key: K) {\n    return this.#keyMap.has(key) ? Infinity : 0\n  }\n\n  #initializeTTLTracking() {\n    const ttls = new ZeroArray(this.#max)\n    const starts = new ZeroArray(this.#max)\n    this.#ttls = ttls\n    this.#starts = starts\n\n    this.#setItemTTL = (index, ttl, start = perf.now()) => {\n      starts[index] = ttl !== 0 ? start : 0\n      ttls[index] = ttl\n      if (ttl !== 0 && this.ttlAutopurge) {\n        const t = setTimeout(() => {\n          if (this.#isStale(index)) {\n            this.#delete(this.#keyList[index] as K, 'expire')\n          }\n        }, ttl + 1)\n        // unref() not supported on all platforms\n        /* c8 ignore start */\n        if (t.unref) {\n          t.unref()\n        }\n        /* c8 ignore stop */\n      }\n    }\n\n    this.#updateItemAge = index => {\n      starts[index] = ttls[index] !== 0 ? perf.now() : 0\n    }\n\n    this.#statusTTL = (status, index) => {\n      if (ttls[index]) {\n        const ttl = ttls[index]\n        const start = starts[index]\n        /* c8 ignore next */\n        if (!ttl || !start) return\n        status.ttl = ttl\n        status.start = start\n        status.now = cachedNow || getNow()\n        const age = status.now - start\n        status.remainingTTL = ttl - age\n      }\n    }\n\n    // debounce calls to perf.now() to 1s so we're not hitting\n    // that costly call repeatedly.\n    let cachedNow = 0\n    const getNow = () => {\n      const n = perf.now()\n      if (this.ttlResolution > 0) {\n        cachedNow = n\n        const t = setTimeout(\n          () => (cachedNow = 0),\n          this.ttlResolution\n        )\n        // not available on all platforms\n        /* c8 ignore start */\n        if (t.unref) {\n          t.unref()\n        }\n        /* c8 ignore stop */\n      }\n      return n\n    }\n\n    this.getRemainingTTL = key => {\n      const index = this.#keyMap.get(key)\n      if (index === undefined) {\n        return 0\n      }\n      const ttl = ttls[index]\n      const start = starts[index]\n      if (!ttl || !start) {\n        return Infinity\n      }\n      const age = (cachedNow || getNow()) - start\n      return ttl - age\n    }\n\n    this.#isStale = index => {\n      const s = starts[index]\n      const t = ttls[index]\n      return !!t && !!s && (cachedNow || getNow()) - s > t\n    }\n  }\n\n  // conditionally set private methods related to TTL\n  #updateItemAge: (index: Index) => void = () => {}\n  #statusTTL: (status: LRUCache.Status<V>, index: Index) => void =\n    () => {}\n  #setItemTTL: (\n    index: Index,\n    ttl: LRUCache.Milliseconds,\n    start?: LRUCache.Milliseconds\n    // ignore because we never call this if we're not already in TTL mode\n    /* c8 ignore start */\n  ) => void = () => {}\n  /* c8 ignore stop */\n\n  #isStale: (index: Index) => boolean = () => false\n\n  #initializeSizeTracking() {\n    const sizes = new ZeroArray(this.#max)\n    this.#calculatedSize = 0\n    this.#sizes = sizes\n    this.#removeItemSize = index => {\n      this.#calculatedSize -= sizes[index] as number\n      sizes[index] = 0\n    }\n    this.#requireSize = (k, v, size, sizeCalculation) => {\n      // provisionally accept background fetches.\n      // actual value size will be checked when they return.\n      if (this.#isBackgroundFetch(v)) {\n        return 0\n      }\n      if (!isPosInt(size)) {\n        if (sizeCalculation) {\n          if (typeof sizeCalculation !== 'function') {\n            throw new TypeError('sizeCalculation must be a function')\n          }\n          size = sizeCalculation(v, k)\n          if (!isPosInt(size)) {\n            throw new TypeError(\n              'sizeCalculation return invalid (expect positive integer)'\n            )\n          }\n        } else {\n          throw new TypeError(\n            'invalid size value (must be positive integer). ' +\n              'When maxSize or maxEntrySize is used, sizeCalculation ' +\n              'or size must be set.'\n          )\n        }\n      }\n      return size\n    }\n    this.#addItemSize = (\n      index: Index,\n      size: LRUCache.Size,\n      status?: LRUCache.Status<V>\n    ) => {\n      sizes[index] = size\n      if (this.#maxSize) {\n        const maxSize = this.#maxSize - (sizes[index] as number)\n        while (this.#calculatedSize > maxSize) {\n          this.#evict(true)\n        }\n      }\n      this.#calculatedSize += sizes[index] as number\n      if (status) {\n        status.entrySize = size\n        status.totalCalculatedSize = this.#calculatedSize\n      }\n    }\n  }\n\n  #removeItemSize: (index: Index) => void = _i => {}\n  #addItemSize: (\n    index: Index,\n    size: LRUCache.Size,\n    status?: LRUCache.Status<V>\n  ) => void = (_i, _s, _st) => {}\n  #requireSize: (\n    k: K,\n    v: V | BackgroundFetch<V>,\n    size?: LRUCache.Size,\n    sizeCalculation?: LRUCache.SizeCalculator<K, V>\n  ) => LRUCache.Size = (\n    _k: K,\n    _v: V | BackgroundFetch<V>,\n    size?: LRUCache.Size,\n    sizeCalculation?: LRUCache.SizeCalculator<K, V>\n  ) => {\n    if (size || sizeCalculation) {\n      throw new TypeError(\n        'cannot set size without setting maxSize or maxEntrySize on cache'\n      )\n    }\n    return 0\n  };\n\n  *#indexes({ allowStale = this.allowStale } = {}) {\n    if (this.#size) {\n      for (let i = this.#tail; true; ) {\n        if (!this.#isValidIndex(i)) {\n          break\n        }\n        if (allowStale || !this.#isStale(i)) {\n          yield i\n        }\n        if (i === this.#head) {\n          break\n        } else {\n          i = this.#prev[i] as Index\n        }\n      }\n    }\n  }\n\n  *#rindexes({ allowStale = this.allowStale } = {}) {\n    if (this.#size) {\n      for (let i = this.#head; true; ) {\n        if (!this.#isValidIndex(i)) {\n          break\n        }\n        if (allowStale || !this.#isStale(i)) {\n          yield i\n        }\n        if (i === this.#tail) {\n          break\n        } else {\n          i = this.#next[i] as Index\n        }\n      }\n    }\n  }\n\n  #isValidIndex(index: Index) {\n    return (\n      index !== undefined &&\n      this.#keyMap.get(this.#keyList[index] as K) === index\n    )\n  }\n\n  /**\n   * Return a generator yielding `[key, value]` pairs,\n   * in order from most recently used to least recently used.\n   */\n  *entries() {\n    for (const i of this.#indexes()) {\n      if (\n        this.#valList[i] !== undefined &&\n        this.#keyList[i] !== undefined &&\n        !this.#isBackgroundFetch(this.#valList[i])\n      ) {\n        yield [this.#keyList[i], this.#valList[i]] as [K, V]\n      }\n    }\n  }\n\n  /**\n   * Inverse order version of {@link LRUCache.entries}\n   *\n   * Return a generator yielding `[key, value]` pairs,\n   * in order from least recently used to most recently used.\n   */\n  *rentries() {\n    for (const i of this.#rindexes()) {\n      if (\n        this.#valList[i] !== undefined &&\n        this.#keyList[i] !== undefined &&\n        !this.#isBackgroundFetch(this.#valList[i])\n      ) {\n        yield [this.#keyList[i], this.#valList[i]]\n      }\n    }\n  }\n\n  /**\n   * Return a generator yielding the keys in the cache,\n   * in order from most recently used to least recently used.\n   */\n  *keys() {\n    for (const i of this.#indexes()) {\n      const k = this.#keyList[i]\n      if (\n        k !== undefined &&\n        !this.#isBackgroundFetch(this.#valList[i])\n      ) {\n        yield k\n      }\n    }\n  }\n\n  /**\n   * Inverse order version of {@link LRUCache.keys}\n   *\n   * Return a generator yielding the keys in the cache,\n   * in order from least recently used to most recently used.\n   */\n  *rkeys() {\n    for (const i of this.#rindexes()) {\n      const k = this.#keyList[i]\n      if (\n        k !== undefined &&\n        !this.#isBackgroundFetch(this.#valList[i])\n      ) {\n        yield k\n      }\n    }\n  }\n\n  /**\n   * Return a generator yielding the values in the cache,\n   * in order from most recently used to least recently used.\n   */\n  *values() {\n    for (const i of this.#indexes()) {\n      const v = this.#valList[i]\n      if (\n        v !== undefined &&\n        !this.#isBackgroundFetch(this.#valList[i])\n      ) {\n        yield this.#valList[i] as V\n      }\n    }\n  }\n\n  /**\n   * Inverse order version of {@link LRUCache.values}\n   *\n   * Return a generator yielding the values in the cache,\n   * in order from least recently used to most recently used.\n   */\n  *rvalues() {\n    for (const i of this.#rindexes()) {\n      const v = this.#valList[i]\n      if (\n        v !== undefined &&\n        !this.#isBackgroundFetch(this.#valList[i])\n      ) {\n        yield this.#valList[i]\n      }\n    }\n  }\n\n  /**\n   * Iterating over the cache itself yields the same results as\n   * {@link LRUCache.entries}\n   */\n  [Symbol.iterator]() {\n    return this.entries()\n  }\n\n  /**\n   * A String value that is used in the creation of the default string\n   * description of an object. Called by the built-in method\n   * `Object.prototype.toString`.\n   */\n  [Symbol.toStringTag] = 'LRUCache'\n\n  /**\n   * Find a value for which the supplied fn method returns a truthy value,\n   * similar to `Array.find()`. fn is called as `fn(value, key, cache)`.\n   */\n  find(\n    fn: (v: V, k: K, self: LRUCache<K, V, FC>) => boolean,\n    getOptions: LRUCache.GetOptions<K, V, FC> = {}\n  ) {\n    for (const i of this.#indexes()) {\n      const v = this.#valList[i]\n      const value = this.#isBackgroundFetch(v)\n        ? v.__staleWhileFetching\n        : v\n      if (value === undefined) continue\n      if (fn(value, this.#keyList[i] as K, this)) {\n        return this.get(this.#keyList[i] as K, getOptions)\n      }\n    }\n  }\n\n  /**\n   * Call the supplied function on each item in the cache, in order from most\n   * recently used to least recently used.\n   *\n   * `fn` is called as `fn(value, key, cache)`.\n   *\n   * If `thisp` is provided, function will be called in the `this`-context of\n   * the provided object, or the cache if no `thisp` object is provided.\n   *\n   * Does not update age or recenty of use, or iterate over stale values.\n   */\n  forEach(\n    fn: (v: V, k: K, self: LRUCache<K, V, FC>) => any,\n    thisp: any = this\n  ) {\n    for (const i of this.#indexes()) {\n      const v = this.#valList[i]\n      const value = this.#isBackgroundFetch(v)\n        ? v.__staleWhileFetching\n        : v\n      if (value === undefined) continue\n      fn.call(thisp, value, this.#keyList[i] as K, this)\n    }\n  }\n\n  /**\n   * The same as {@link LRUCache.forEach} but items are iterated over in\n   * reverse order.  (ie, less recently used items are iterated over first.)\n   */\n  rforEach(\n    fn: (v: V, k: K, self: LRUCache<K, V, FC>) => any,\n    thisp: any = this\n  ) {\n    for (const i of this.#rindexes()) {\n      const v = this.#valList[i]\n      const value = this.#isBackgroundFetch(v)\n        ? v.__staleWhileFetching\n        : v\n      if (value === undefined) continue\n      fn.call(thisp, value, this.#keyList[i] as K, this)\n    }\n  }\n\n  /**\n   * Delete any stale entries. Returns true if anything was removed,\n   * false otherwise.\n   */\n  purgeStale() {\n    let deleted = false\n    for (const i of this.#rindexes({ allowStale: true })) {\n      if (this.#isStale(i)) {\n        this.#delete(this.#keyList[i] as K, 'expire')\n        deleted = true\n      }\n    }\n    return deleted\n  }\n\n  /**\n   * Get the extended info about a given entry, to get its value, size, and\n   * TTL info simultaneously. Returns `undefined` if the key is not present.\n   *\n   * Unlike {@link LRUCache#dump}, which is designed to be portable and survive\n   * serialization, the `start` value is always the current timestamp, and the\n   * `ttl` is a calculated remaining time to live (negative if expired).\n   *\n   * Always returns stale values, if their info is found in the cache, so be\n   * sure to check for expirations (ie, a negative {@link LRUCache.Entry#ttl})\n   * if relevant.\n   */\n  info(key: K): LRUCache.Entry<V> | undefined {\n    const i = this.#keyMap.get(key)\n    if (i === undefined) return undefined\n    const v = this.#valList[i]\n    const value: V | undefined = this.#isBackgroundFetch(v)\n      ? v.__staleWhileFetching\n      : v\n    if (value === undefined) return undefined\n    const entry: LRUCache.Entry<V> = { value }\n    if (this.#ttls && this.#starts) {\n      const ttl = this.#ttls[i]\n      const start = this.#starts[i]\n      if (ttl && start) {\n        const remain = ttl - (perf.now() - start)\n        entry.ttl = remain\n        entry.start = Date.now()\n      }\n    }\n    if (this.#sizes) {\n      entry.size = this.#sizes[i]\n    }\n    return entry\n  }\n\n  /**\n   * Return an array of [key, {@link LRUCache.Entry}] tuples which can be\n   * passed to {@link LRLUCache#load}.\n   *\n   * The `start` fields are calculated relative to a portable `Date.now()`\n   * timestamp, even if `performance.now()` is available.\n   *\n   * Stale entries are always included in the `dump`, even if\n   * {@link LRUCache.OptionsBase.allowStale} is false.\n   *\n   * Note: this returns an actual array, not a generator, so it can be more\n   * easily passed around.\n   */\n  dump() {\n    const arr: [K, LRUCache.Entry<V>][] = []\n    for (const i of this.#indexes({ allowStale: true })) {\n      const key = this.#keyList[i]\n      const v = this.#valList[i]\n      const value: V | undefined = this.#isBackgroundFetch(v)\n        ? v.__staleWhileFetching\n        : v\n      if (value === undefined || key === undefined) continue\n      const entry: LRUCache.Entry<V> = { value }\n      if (this.#ttls && this.#starts) {\n        entry.ttl = this.#ttls[i]\n        // always dump the start relative to a portable timestamp\n        // it's ok for this to be a bit slow, it's a rare operation.\n        const age = perf.now() - (this.#starts[i] as number)\n        entry.start = Math.floor(Date.now() - age)\n      }\n      if (this.#sizes) {\n        entry.size = this.#sizes[i]\n      }\n      arr.unshift([key, entry])\n    }\n    return arr\n  }\n\n  /**\n   * Reset the cache and load in the items in entries in the order listed.\n   *\n   * The shape of the resulting cache may be different if the same options are\n   * not used in both caches.\n   *\n   * The `start` fields are assumed to be calculated relative to a portable\n   * `Date.now()` timestamp, even if `performance.now()` is available.\n   */\n  load(arr: [K, LRUCache.Entry<V>][]) {\n    this.clear()\n    for (const [key, entry] of arr) {\n      if (entry.start) {\n        // entry.start is a portable timestamp, but we may be using\n        // node's performance.now(), so calculate the offset, so that\n        // we get the intended remaining TTL, no matter how long it's\n        // been on ice.\n        //\n        // it's ok for this to be a bit slow, it's a rare operation.\n        const age = Date.now() - entry.start\n        entry.start = perf.now() - age\n      }\n      this.set(key, entry.value, entry)\n    }\n  }\n\n  /**\n   * Add a value to the cache.\n   *\n   * Note: if `undefined` is specified as a value, this is an alias for\n   * {@link LRUCache#delete}\n   *\n   * Fields on the {@link LRUCache.SetOptions} options param will override\n   * their corresponding values in the constructor options for the scope\n   * of this single `set()` operation.\n   *\n   * If `start` is provided, then that will set the effective start\n   * time for the TTL calculation. Note that this must be a previous\n   * value of `performance.now()` if supported, or a previous value of\n   * `Date.now()` if not.\n   *\n   * Options object may also include `size`, which will prevent\n   * calling the `sizeCalculation` function and just use the specified\n   * number if it is a positive integer, and `noDisposeOnSet` which\n   * will prevent calling a `dispose` function in the case of\n   * overwrites.\n   *\n   * If the `size` (or return value of `sizeCalculation`) for a given\n   * entry is greater than `maxEntrySize`, then the item will not be\n   * added to the cache.\n   *\n   * Will update the recency of the entry.\n   *\n   * If the value is `undefined`, then this is an alias for\n   * `cache.delete(key)`. `undefined` is never stored in the cache.\n   */\n  set(\n    k: K,\n    v: V | BackgroundFetch<V> | undefined,\n    setOptions: LRUCache.SetOptions<K, V, FC> = {}\n  ) {\n    if (v === undefined) {\n      this.delete(k)\n      return this\n    }\n    const {\n      ttl = this.ttl,\n      start,\n      noDisposeOnSet = this.noDisposeOnSet,\n      sizeCalculation = this.sizeCalculation,\n      status,\n    } = setOptions\n    let { noUpdateTTL = this.noUpdateTTL } = setOptions\n\n    const size = this.#requireSize(\n      k,\n      v,\n      setOptions.size || 0,\n      sizeCalculation\n    )\n    // if the item doesn't fit, don't do anything\n    // NB: maxEntrySize set to maxSize by default\n    if (this.maxEntrySize && size > this.maxEntrySize) {\n      if (status) {\n        status.set = 'miss'\n        status.maxEntrySizeExceeded = true\n      }\n      // have to delete, in case something is there already.\n      this.#delete(k, 'set')\n      return this\n    }\n    let index = this.#size === 0 ? undefined : this.#keyMap.get(k)\n    if (index === undefined) {\n      // addition\n      index = (\n        this.#size === 0\n          ? this.#tail\n          : this.#free.length !== 0\n          ? this.#free.pop()\n          : this.#size === this.#max\n          ? this.#evict(false)\n          : this.#size\n      ) as Index\n      this.#keyList[index] = k\n      this.#valList[index] = v\n      this.#keyMap.set(k, index)\n      this.#next[this.#tail] = index\n      this.#prev[index] = this.#tail\n      this.#tail = index\n      this.#size++\n      this.#addItemSize(index, size, status)\n      if (status) status.set = 'add'\n      noUpdateTTL = false\n    } else {\n      // update\n      this.#moveToTail(index)\n      const oldVal = this.#valList[index] as V | BackgroundFetch<V>\n      if (v !== oldVal) {\n        if (this.#hasFetchMethod && this.#isBackgroundFetch(oldVal)) {\n          oldVal.__abortController.abort(new Error('replaced'))\n          const { __staleWhileFetching: s } = oldVal\n          if (s !== undefined && !noDisposeOnSet) {\n            if (this.#hasDispose) {\n              this.#dispose?.(s as V, k, 'set')\n            }\n            if (this.#hasDisposeAfter) {\n              this.#disposed?.push([s as V, k, 'set'])\n            }\n          }\n        } else if (!noDisposeOnSet) {\n          if (this.#hasDispose) {\n            this.#dispose?.(oldVal as V, k, 'set')\n          }\n          if (this.#hasDisposeAfter) {\n            this.#disposed?.push([oldVal as V, k, 'set'])\n          }\n        }\n        this.#removeItemSize(index)\n        this.#addItemSize(index, size, status)\n        this.#valList[index] = v\n        if (status) {\n          status.set = 'replace'\n          const oldValue =\n            oldVal && this.#isBackgroundFetch(oldVal)\n              ? oldVal.__staleWhileFetching\n              : oldVal\n          if (oldValue !== undefined) status.oldValue = oldValue\n        }\n      } else if (status) {\n        status.set = 'update'\n      }\n    }\n    if (ttl !== 0 && !this.#ttls) {\n      this.#initializeTTLTracking()\n    }\n    if (this.#ttls) {\n      if (!noUpdateTTL) {\n        this.#setItemTTL(index, ttl, start)\n      }\n      if (status) this.#statusTTL(status, index)\n    }\n    if (!noDisposeOnSet && this.#hasDisposeAfter && this.#disposed) {\n      const dt = this.#disposed\n      let task: DisposeTask<K, V> | undefined\n      while ((task = dt?.shift())) {\n        this.#disposeAfter?.(...task)\n      }\n    }\n    return this\n  }\n\n  /**\n   * Evict the least recently used item, returning its value or\n   * `undefined` if cache is empty.\n   */\n  pop(): V | undefined {\n    try {\n      while (this.#size) {\n        const val = this.#valList[this.#head]\n        this.#evict(true)\n        if (this.#isBackgroundFetch(val)) {\n          if (val.__staleWhileFetching) {\n            return val.__staleWhileFetching\n          }\n        } else if (val !== undefined) {\n          return val\n        }\n      }\n    } finally {\n      if (this.#hasDisposeAfter && this.#disposed) {\n        const dt = this.#disposed\n        let task: DisposeTask<K, V> | undefined\n        while ((task = dt?.shift())) {\n          this.#disposeAfter?.(...task)\n        }\n      }\n    }\n  }\n\n  #evict(free: boolean) {\n    const head = this.#head\n    const k = this.#keyList[head] as K\n    const v = this.#valList[head] as V\n    if (this.#hasFetchMethod && this.#isBackgroundFetch(v)) {\n      v.__abortController.abort(new Error('evicted'))\n    } else if (this.#hasDispose || this.#hasDisposeAfter) {\n      if (this.#hasDispose) {\n        this.#dispose?.(v, k, 'evict')\n      }\n      if (this.#hasDisposeAfter) {\n        this.#disposed?.push([v, k, 'evict'])\n      }\n    }\n    this.#removeItemSize(head)\n    // if we aren't about to use the index, then null these out\n    if (free) {\n      this.#keyList[head] = undefined\n      this.#valList[head] = undefined\n      this.#free.push(head)\n    }\n    if (this.#size === 1) {\n      this.#head = this.#tail = 0 as Index\n      this.#free.length = 0\n    } else {\n      this.#head = this.#next[head] as Index\n    }\n    this.#keyMap.delete(k)\n    this.#size--\n    return head\n  }\n\n  /**\n   * Check if a key is in the cache, without updating the recency of use.\n   * Will return false if the item is stale, even though it is technically\n   * in the cache.\n   *\n   * Check if a key is in the cache, without updating the recency of\n   * use. Age is updated if {@link LRUCache.OptionsBase.updateAgeOnHas} is set\n   * to `true` in either the options or the constructor.\n   *\n   * Will return `false` if the item is stale, even though it is technically in\n   * the cache. The difference can be determined (if it matters) by using a\n   * `status` argument, and inspecting the `has` field.\n   *\n   * Will not update item age unless\n   * {@link LRUCache.OptionsBase.updateAgeOnHas} is set.\n   */\n  has(k: K, hasOptions: LRUCache.HasOptions<K, V, FC> = {}) {\n    const { updateAgeOnHas = this.updateAgeOnHas, status } =\n      hasOptions\n    const index = this.#keyMap.get(k)\n    if (index !== undefined) {\n      const v = this.#valList[index]\n      if (\n        this.#isBackgroundFetch(v) &&\n        v.__staleWhileFetching === undefined\n      ) {\n        return false\n      }\n      if (!this.#isStale(index)) {\n        if (updateAgeOnHas) {\n          this.#updateItemAge(index)\n        }\n        if (status) {\n          status.has = 'hit'\n          this.#statusTTL(status, index)\n        }\n        return true\n      } else if (status) {\n        status.has = 'stale'\n        this.#statusTTL(status, index)\n      }\n    } else if (status) {\n      status.has = 'miss'\n    }\n    return false\n  }\n\n  /**\n   * Like {@link LRUCache#get} but doesn't update recency or delete stale\n   * items.\n   *\n   * Returns `undefined` if the item is stale, unless\n   * {@link LRUCache.OptionsBase.allowStale} is set.\n   */\n  peek(k: K, peekOptions: LRUCache.PeekOptions<K, V, FC> = {}) {\n    const { allowStale = this.allowStale } = peekOptions\n    const index = this.#keyMap.get(k)\n    if (\n      index === undefined ||\n      (!allowStale && this.#isStale(index))\n    ) {\n      return\n    }\n    const v = this.#valList[index]\n    // either stale and allowed, or forcing a refresh of non-stale value\n    return this.#isBackgroundFetch(v) ? v.__staleWhileFetching : v\n  }\n\n  #backgroundFetch(\n    k: K,\n    index: Index | undefined,\n    options: LRUCache.FetchOptions<K, V, FC>,\n    context: any\n  ): BackgroundFetch<V> {\n    const v = index === undefined ? undefined : this.#valList[index]\n    if (this.#isBackgroundFetch(v)) {\n      return v\n    }\n\n    const ac = new AC()\n    const { signal } = options\n    // when/if our AC signals, then stop listening to theirs.\n    signal?.addEventListener('abort', () => ac.abort(signal.reason), {\n      signal: ac.signal,\n    })\n\n    const fetchOpts = {\n      signal: ac.signal,\n      options,\n      context,\n    }\n\n    const cb = (\n      v: V | undefined,\n      updateCache = false\n    ): V | undefined => {\n      const { aborted } = ac.signal\n      const ignoreAbort = options.ignoreFetchAbort && v !== undefined\n      if (options.status) {\n        if (aborted && !updateCache) {\n          options.status.fetchAborted = true\n          options.status.fetchError = ac.signal.reason\n          if (ignoreAbort) options.status.fetchAbortIgnored = true\n        } else {\n          options.status.fetchResolved = true\n        }\n      }\n      if (aborted && !ignoreAbort && !updateCache) {\n        return fetchFail(ac.signal.reason)\n      }\n      // either we didn't abort, and are still here, or we did, and ignored\n      const bf = p as BackgroundFetch<V>\n      if (this.#valList[index as Index] === p) {\n        if (v === undefined) {\n          if (bf.__staleWhileFetching) {\n            this.#valList[index as Index] = bf.__staleWhileFetching\n          } else {\n            this.#delete(k, 'fetch')\n          }\n        } else {\n          if (options.status) options.status.fetchUpdated = true\n          this.set(k, v, fetchOpts.options)\n        }\n      }\n      return v\n    }\n\n    const eb = (er: any) => {\n      if (options.status) {\n        options.status.fetchRejected = true\n        options.status.fetchError = er\n      }\n      return fetchFail(er)\n    }\n\n    const fetchFail = (er: any): V | undefined => {\n      const { aborted } = ac.signal\n      const allowStaleAborted =\n        aborted && options.allowStaleOnFetchAbort\n      const allowStale =\n        allowStaleAborted || options.allowStaleOnFetchRejection\n      const noDelete = allowStale || options.noDeleteOnFetchRejection\n      const bf = p as BackgroundFetch<V>\n      if (this.#valList[index as Index] === p) {\n        // if we allow stale on fetch rejections, then we need to ensure that\n        // the stale value is not removed from the cache when the fetch fails.\n        const del = !noDelete || bf.__staleWhileFetching === undefined\n        if (del) {\n          this.#delete(k, 'fetch')\n        } else if (!allowStaleAborted) {\n          // still replace the *promise* with the stale value,\n          // since we are done with the promise at this point.\n          // leave it untouched if we're still waiting for an\n          // aborted background fetch that hasn't yet returned.\n          this.#valList[index as Index] = bf.__staleWhileFetching\n        }\n      }\n      if (allowStale) {\n        if (options.status && bf.__staleWhileFetching !== undefined) {\n          options.status.returnedStale = true\n        }\n        return bf.__staleWhileFetching\n      } else if (bf.__returned === bf) {\n        throw er\n      }\n    }\n\n    const pcall = (\n      res: (v: V | undefined) => void,\n      rej: (e: any) => void\n    ) => {\n      const fmp = this.#fetchMethod?.(k, v, fetchOpts)\n      if (fmp && fmp instanceof Promise) {\n        fmp.then(v => res(v === undefined ? undefined : v), rej)\n      }\n      // ignored, we go until we finish, regardless.\n      // defer check until we are actually aborting,\n      // so fetchMethod can override.\n      ac.signal.addEventListener('abort', () => {\n        if (\n          !options.ignoreFetchAbort ||\n          options.allowStaleOnFetchAbort\n        ) {\n          res(undefined)\n          // when it eventually resolves, update the cache.\n          if (options.allowStaleOnFetchAbort) {\n            res = v => cb(v, true)\n          }\n        }\n      })\n    }\n\n    if (options.status) options.status.fetchDispatched = true\n    const p = new Promise(pcall).then(cb, eb)\n    const bf: BackgroundFetch<V> = Object.assign(p, {\n      __abortController: ac,\n      __staleWhileFetching: v,\n      __returned: undefined,\n    })\n\n    if (index === undefined) {\n      // internal, don't expose status.\n      this.set(k, bf, { ...fetchOpts.options, status: undefined })\n      index = this.#keyMap.get(k)\n    } else {\n      this.#valList[index] = bf\n    }\n    return bf\n  }\n\n  #isBackgroundFetch(p: any): p is BackgroundFetch<V> {\n    if (!this.#hasFetchMethod) return false\n    const b = p as BackgroundFetch<V>\n    return (\n      !!b &&\n      b instanceof Promise &&\n      b.hasOwnProperty('__staleWhileFetching') &&\n      b.__abortController instanceof AC\n    )\n  }\n\n  /**\n   * Make an asynchronous cached fetch using the\n   * {@link LRUCache.OptionsBase.fetchMethod} function.\n   *\n   * If the value is in the cache and not stale, then the returned\n   * Promise resolves to the value.\n   *\n   * If not in the cache, or beyond its TTL staleness, then\n   * `fetchMethod(key, staleValue, { options, signal, context })` is\n   * called, and the value returned will be added to the cache once\n   * resolved.\n   *\n   * If called with `allowStale`, and an asynchronous fetch is\n   * currently in progress to reload a stale value, then the former\n   * stale value will be returned.\n   *\n   * If called with `forceRefresh`, then the cached item will be\n   * re-fetched, even if it is not stale. However, if `allowStale` is also\n   * set, then the old value will still be returned. This is useful\n   * in cases where you want to force a reload of a cached value. If\n   * a background fetch is already in progress, then `forceRefresh`\n   * has no effect.\n   *\n   * If multiple fetches for the same key are issued, then they will all be\n   * coalesced into a single call to fetchMethod.\n   *\n   * Note that this means that handling options such as\n   * {@link LRUCache.OptionsBase.allowStaleOnFetchAbort},\n   * {@link LRUCache.FetchOptions.signal},\n   * and {@link LRUCache.OptionsBase.allowStaleOnFetchRejection} will be\n   * determined by the FIRST fetch() call for a given key.\n   *\n   * This is a known (fixable) shortcoming which will be addresed on when\n   * someone complains about it, as the fix would involve added complexity and\n   * may not be worth the costs for this edge case.\n   *\n   * If {@link LRUCache.OptionsBase.fetchMethod} is not specified, then this is\n   * effectively an alias for `Promise.resolve(cache.get(key))`.\n   *\n   * When the fetch method resolves to a value, if the fetch has not\n   * been aborted due to deletion, eviction, or being overwritten,\n   * then it is added to the cache using the options provided.\n   *\n   * If the key is evicted or deleted before the `fetchMethod`\n   * resolves, then the AbortSignal passed to the `fetchMethod` will\n   * receive an `abort` event, and the promise returned by `fetch()`\n   * will reject with the reason for the abort.\n   *\n   * If a `signal` is passed to the `fetch()` call, then aborting the\n   * signal will abort the fetch and cause the `fetch()` promise to\n   * reject with the reason provided.\n   *\n   * **Setting `context`**\n   *\n   * If an `FC` type is set to a type other than `unknown`, `void`, or\n   * `undefined` in the {@link LRUCache} constructor, then all\n   * calls to `cache.fetch()` _must_ provide a `context` option. If\n   * set to `undefined` or `void`, then calls to fetch _must not_\n   * provide a `context` option.\n   *\n   * The `context` param allows you to provide arbitrary data that\n   * might be relevant in the course of fetching the data. It is only\n   * relevant for the course of a single `fetch()` operation, and\n   * discarded afterwards.\n   *\n   * **Note: `fetch()` calls are inflight-unique**\n   *\n   * If you call `fetch()` multiple times with the same key value,\n   * then every call after the first will resolve on the same\n   * promise<sup>1</sup>,\n   * _even if they have different settings that would otherwise change\n   * the behavior of the fetch_, such as `noDeleteOnFetchRejection`\n   * or `ignoreFetchAbort`.\n   *\n   * In most cases, this is not a problem (in fact, only fetching\n   * something once is what you probably want, if you're caching in\n   * the first place). If you are changing the fetch() options\n   * dramatically between runs, there's a good chance that you might\n   * be trying to fit divergent semantics into a single object, and\n   * would be better off with multiple cache instances.\n   *\n   * **1**: Ie, they're not the \"same Promise\", but they resolve at\n   * the same time, because they're both waiting on the same\n   * underlying fetchMethod response.\n   */\n\n  fetch(\n    k: K,\n    fetchOptions: unknown extends FC\n      ? LRUCache.FetchOptions<K, V, FC>\n      : FC extends undefined | void\n      ? LRUCache.FetchOptionsNoContext<K, V>\n      : LRUCache.FetchOptionsWithContext<K, V, FC>\n  ): Promise<undefined | V>\n\n  // this overload not allowed if context is required\n  fetch(\n    k: unknown extends FC\n      ? K\n      : FC extends undefined | void\n      ? K\n      : never,\n    fetchOptions?: unknown extends FC\n      ? LRUCache.FetchOptions<K, V, FC>\n      : FC extends undefined | void\n      ? LRUCache.FetchOptionsNoContext<K, V>\n      : never\n  ): Promise<undefined | V>\n\n  async fetch(\n    k: K,\n    fetchOptions: LRUCache.FetchOptions<K, V, FC> = {}\n  ): Promise<undefined | V> {\n    const {\n      // get options\n      allowStale = this.allowStale,\n      updateAgeOnGet = this.updateAgeOnGet,\n      noDeleteOnStaleGet = this.noDeleteOnStaleGet,\n      // set options\n      ttl = this.ttl,\n      noDisposeOnSet = this.noDisposeOnSet,\n      size = 0,\n      sizeCalculation = this.sizeCalculation,\n      noUpdateTTL = this.noUpdateTTL,\n      // fetch exclusive options\n      noDeleteOnFetchRejection = this.noDeleteOnFetchRejection,\n      allowStaleOnFetchRejection = this.allowStaleOnFetchRejection,\n      ignoreFetchAbort = this.ignoreFetchAbort,\n      allowStaleOnFetchAbort = this.allowStaleOnFetchAbort,\n      context,\n      forceRefresh = false,\n      status,\n      signal,\n    } = fetchOptions\n\n    if (!this.#hasFetchMethod) {\n      if (status) status.fetch = 'get'\n      return this.get(k, {\n        allowStale,\n        updateAgeOnGet,\n        noDeleteOnStaleGet,\n        status,\n      })\n    }\n\n    const options = {\n      allowStale,\n      updateAgeOnGet,\n      noDeleteOnStaleGet,\n      ttl,\n      noDisposeOnSet,\n      size,\n      sizeCalculation,\n      noUpdateTTL,\n      noDeleteOnFetchRejection,\n      allowStaleOnFetchRejection,\n      allowStaleOnFetchAbort,\n      ignoreFetchAbort,\n      status,\n      signal,\n    }\n\n    let index = this.#keyMap.get(k)\n    if (index === undefined) {\n      if (status) status.fetch = 'miss'\n      const p = this.#backgroundFetch(k, index, options, context)\n      return (p.__returned = p)\n    } else {\n      // in cache, maybe already fetching\n      const v = this.#valList[index]\n      if (this.#isBackgroundFetch(v)) {\n        const stale =\n          allowStale && v.__staleWhileFetching !== undefined\n        if (status) {\n          status.fetch = 'inflight'\n          if (stale) status.returnedStale = true\n        }\n        return stale ? v.__staleWhileFetching : (v.__returned = v)\n      }\n\n      // if we force a refresh, that means do NOT serve the cached value,\n      // unless we are already in the process of refreshing the cache.\n      const isStale = this.#isStale(index)\n      if (!forceRefresh && !isStale) {\n        if (status) status.fetch = 'hit'\n        this.#moveToTail(index)\n        if (updateAgeOnGet) {\n          this.#updateItemAge(index)\n        }\n        if (status) this.#statusTTL(status, index)\n        return v\n      }\n\n      // ok, it is stale or a forced refresh, and not already fetching.\n      // refresh the cache.\n      const p = this.#backgroundFetch(k, index, options, context)\n      const hasStale = p.__staleWhileFetching !== undefined\n      const staleVal = hasStale && allowStale\n      if (status) {\n        status.fetch = isStale ? 'stale' : 'refresh'\n        if (staleVal && isStale) status.returnedStale = true\n      }\n      return staleVal ? p.__staleWhileFetching : (p.__returned = p)\n    }\n  }\n\n  /**\n   * In some cases, `cache.fetch()` may resolve to `undefined`, either because\n   * a {@link LRUCache.OptionsBase#fetchMethod} was not provided (turning\n   * `cache.fetch(k)` into just an async wrapper around `cache.get(k)`) or\n   * because `ignoreFetchAbort` was specified (either to the constructor or\n   * in the {@link LRUCache.FetchOptions}). Also, the\n   * {@link OptionsBase.fetchMethod} may return `undefined` or `void`, making\n   * the test even more complicated.\n   *\n   * Because inferring the cases where `undefined` might be returned are so\n   * cumbersome, but testing for `undefined` can also be annoying, this method\n   * can be used, which will reject if `this.fetch()` resolves to undefined.\n   */\n  forceFetch(\n    k: K,\n    fetchOptions: unknown extends FC\n      ? LRUCache.FetchOptions<K, V, FC>\n      : FC extends undefined | void\n      ? LRUCache.FetchOptionsNoContext<K, V>\n      : LRUCache.FetchOptionsWithContext<K, V, FC>\n  ): Promise<V>\n  // this overload not allowed if context is required\n  forceFetch(\n    k: unknown extends FC\n      ? K\n      : FC extends undefined | void\n      ? K\n      : never,\n    fetchOptions?: unknown extends FC\n      ? LRUCache.FetchOptions<K, V, FC>\n      : FC extends undefined | void\n      ? LRUCache.FetchOptionsNoContext<K, V>\n      : never\n  ): Promise<V>\n  async forceFetch(\n    k: K,\n    fetchOptions: LRUCache.FetchOptions<K, V, FC> = {}\n  ): Promise<V> {\n    const v = await this.fetch(\n      k,\n      fetchOptions as unknown extends FC\n        ? LRUCache.FetchOptions<K, V, FC>\n        : FC extends undefined | void\n        ? LRUCache.FetchOptionsNoContext<K, V>\n        : LRUCache.FetchOptionsWithContext<K, V, FC>\n    )\n    if (v === undefined) throw new Error('fetch() returned undefined')\n    return v\n  }\n\n  /**\n   * If the key is found in the cache, then this is equivalent to\n   * {@link LRUCache#get}. If not, in the cache, then calculate the value using\n   * the {@link LRUCache.OptionsBase.memoMethod}, and add it to the cache.\n   *\n   * If an `FC` type is set to a type other than `unknown`, `void`, or\n   * `undefined` in the LRUCache constructor, then all calls to `cache.memo()`\n   * _must_ provide a `context` option. If set to `undefined` or `void`, then\n   * calls to memo _must not_ provide a `context` option.\n   *\n   * The `context` param allows you to provide arbitrary data that might be\n   * relevant in the course of fetching the data. It is only relevant for the\n   * course of a single `memo()` operation, and discarded afterwards.\n   */\n  memo(\n    k: K,\n    memoOptions: unknown extends FC\n      ? LRUCache.MemoOptions<K, V, FC>\n      : FC extends undefined | void\n      ? LRUCache.MemoOptionsNoContext<K, V>\n      : LRUCache.MemoOptionsWithContext<K, V, FC>\n  ): V\n  // this overload not allowed if context is required\n  memo(\n    k: unknown extends FC\n      ? K\n      : FC extends undefined | void\n      ? K\n      : never,\n    memoOptions?: unknown extends FC\n      ? LRUCache.MemoOptions<K, V, FC>\n      : FC extends undefined | void\n      ? LRUCache.MemoOptionsNoContext<K, V>\n      : never\n  ): V\n  memo(k: K, memoOptions: LRUCache.MemoOptions<K, V, FC> = {}) {\n    const memoMethod = this.#memoMethod\n    if (!memoMethod) {\n      throw new Error('no memoMethod provided to constructor')\n    }\n    const { context, forceRefresh, ...options } = memoOptions\n    const v = this.get(k, options)\n    if (!forceRefresh && v !== undefined) return v\n    const vv = memoMethod(k, v, {\n      options,\n      context,\n    } as LRUCache.MemoizerOptions<K, V, FC>)\n    this.set(k, vv, options)\n    return vv\n  }\n\n  /**\n   * Return a value from the cache. Will update the recency of the cache\n   * entry found.\n   *\n   * If the key is not found, get() will return `undefined`.\n   */\n  get(k: K, getOptions: LRUCache.GetOptions<K, V, FC> = {}) {\n    const {\n      allowStale = this.allowStale,\n      updateAgeOnGet = this.updateAgeOnGet,\n      noDeleteOnStaleGet = this.noDeleteOnStaleGet,\n      status,\n    } = getOptions\n    const index = this.#keyMap.get(k)\n    if (index !== undefined) {\n      const value = this.#valList[index]\n      const fetching = this.#isBackgroundFetch(value)\n      if (status) this.#statusTTL(status, index)\n      if (this.#isStale(index)) {\n        if (status) status.get = 'stale'\n        // delete only if not an in-flight background fetch\n        if (!fetching) {\n          if (!noDeleteOnStaleGet) {\n            this.#delete(k, 'expire')\n          }\n          if (status && allowStale) status.returnedStale = true\n          return allowStale ? value : undefined\n        } else {\n          if (\n            status &&\n            allowStale &&\n            value.__staleWhileFetching !== undefined\n          ) {\n            status.returnedStale = true\n          }\n          return allowStale ? value.__staleWhileFetching : undefined\n        }\n      } else {\n        if (status) status.get = 'hit'\n        // if we're currently fetching it, we don't actually have it yet\n        // it's not stale, which means this isn't a staleWhileRefetching.\n        // If it's not stale, and fetching, AND has a __staleWhileFetching\n        // value, then that means the user fetched with {forceRefresh:true},\n        // so it's safe to return that value.\n        if (fetching) {\n          return value.__staleWhileFetching\n        }\n        this.#moveToTail(index)\n        if (updateAgeOnGet) {\n          this.#updateItemAge(index)\n        }\n        return value\n      }\n    } else if (status) {\n      status.get = 'miss'\n    }\n  }\n\n  #connect(p: Index, n: Index) {\n    this.#prev[n] = p\n    this.#next[p] = n\n  }\n\n  #moveToTail(index: Index): void {\n    // if tail already, nothing to do\n    // if head, move head to next[index]\n    // else\n    //   move next[prev[index]] to next[index] (head has no prev)\n    //   move prev[next[index]] to prev[index]\n    // prev[index] = tail\n    // next[tail] = index\n    // tail = index\n    if (index !== this.#tail) {\n      if (index === this.#head) {\n        this.#head = this.#next[index] as Index\n      } else {\n        this.#connect(\n          this.#prev[index] as Index,\n          this.#next[index] as Index\n        )\n      }\n      this.#connect(this.#tail, index)\n      this.#tail = index\n    }\n  }\n\n  /**\n   * Deletes a key out of the cache.\n   *\n   * Returns true if the key was deleted, false otherwise.\n   */\n  delete(k: K) {\n    return this.#delete(k, 'delete')\n  }\n\n  #delete(k: K, reason: LRUCache.DisposeReason) {\n    let deleted = false\n    if (this.#size !== 0) {\n      const index = this.#keyMap.get(k)\n      if (index !== undefined) {\n        deleted = true\n        if (this.#size === 1) {\n          this.#clear(reason)\n        } else {\n          this.#removeItemSize(index)\n          const v = this.#valList[index]\n          if (this.#isBackgroundFetch(v)) {\n            v.__abortController.abort(new Error('deleted'))\n          } else if (this.#hasDispose || this.#hasDisposeAfter) {\n            if (this.#hasDispose) {\n              this.#dispose?.(v as V, k, reason)\n            }\n            if (this.#hasDisposeAfter) {\n              this.#disposed?.push([v as V, k, reason])\n            }\n          }\n          this.#keyMap.delete(k)\n          this.#keyList[index] = undefined\n          this.#valList[index] = undefined\n          if (index === this.#tail) {\n            this.#tail = this.#prev[index] as Index\n          } else if (index === this.#head) {\n            this.#head = this.#next[index] as Index\n          } else {\n            const pi = this.#prev[index] as number\n            this.#next[pi] = this.#next[index] as number\n            const ni = this.#next[index] as number\n            this.#prev[ni] = this.#prev[index] as number\n          }\n          this.#size--\n          this.#free.push(index)\n        }\n      }\n    }\n    if (this.#hasDisposeAfter && this.#disposed?.length) {\n      const dt = this.#disposed\n      let task: DisposeTask<K, V> | undefined\n      while ((task = dt?.shift())) {\n        this.#disposeAfter?.(...task)\n      }\n    }\n    return deleted\n  }\n\n  /**\n   * Clear the cache entirely, throwing away all values.\n   */\n  clear() {\n    return this.#clear('delete')\n  }\n  #clear(reason: LRUCache.DisposeReason) {\n    for (const index of this.#rindexes({ allowStale: true })) {\n      const v = this.#valList[index]\n      if (this.#isBackgroundFetch(v)) {\n        v.__abortController.abort(new Error('deleted'))\n      } else {\n        const k = this.#keyList[index]\n        if (this.#hasDispose) {\n          this.#dispose?.(v as V, k as K, reason)\n        }\n        if (this.#hasDisposeAfter) {\n          this.#disposed?.push([v as V, k as K, reason])\n        }\n      }\n    }\n\n    this.#keyMap.clear()\n    this.#valList.fill(undefined)\n    this.#keyList.fill(undefined)\n    if (this.#ttls && this.#starts) {\n      this.#ttls.fill(0)\n      this.#starts.fill(0)\n    }\n    if (this.#sizes) {\n      this.#sizes.fill(0)\n    }\n    this.#head = 0 as Index\n    this.#tail = 0 as Index\n    this.#free.length = 0\n    this.#calculatedSize = 0\n    this.#size = 0\n    if (this.#hasDisposeAfter && this.#disposed) {\n      const dt = this.#disposed\n      let task: DisposeTask<K, V> | undefined\n      while ((task = dt?.shift())) {\n        this.#disposeAfter?.(...task)\n      }\n    }\n  }\n}\n", "import { LRUCache } from 'lru-cache'\nimport { posix, win32 } from 'node:path'\n\nimport { fileURLToPath } from 'node:url'\n\nimport {\n  lstatSync,\n  readdir as readdirCB,\n  readdirSync,\n  readlinkSync,\n  realpathSync as rps,\n} from 'fs'\nimport * as actualFS from 'node:fs'\n\nconst realpathSync = rps.native\n// TODO: test perf of fs/promises realpath vs realpathCB,\n// since the promises one uses realpath.native\n\nimport { lstat, readdir, readlink, realpath } from 'node:fs/promises'\n\nimport { Minipass } from 'minipass'\nimport type { Dirent, Stats } from 'node:fs'\n\n/**\n * An object that will be used to override the default `fs`\n * methods.  Any methods that are not overridden will use Node's\n * built-in implementations.\n *\n * - lstatSync\n * - readdir (callback `withFileTypes` Dirent variant, used for\n *   readdirCB and most walks)\n * - readdirSync\n * - readlinkSync\n * - realpathSync\n * - promises: Object containing the following async methods:\n *   - lstat\n *   - readdir (Dirent variant only)\n *   - readlink\n *   - realpath\n */\nexport interface FSOption {\n  lstatSync?: (path: string) => Stats\n  readdir?: (\n    path: string,\n    options: { withFileTypes: true },\n    cb: (er: NodeJS.ErrnoException | null, entries?: Dirent[]) => any,\n  ) => void\n  readdirSync?: (\n    path: string,\n    options: { withFileTypes: true },\n  ) => Dirent[]\n  readlinkSync?: (path: string) => string\n  realpathSync?: (path: string) => string\n  promises?: {\n    lstat?: (path: string) => Promise<Stats>\n    readdir?: (\n      path: string,\n      options: { withFileTypes: true },\n    ) => Promise<Dirent[]>\n    readlink?: (path: string) => Promise<string>\n    realpath?: (path: string) => Promise<string>\n    [k: string]: any\n  }\n  [k: string]: any\n}\n\ninterface FSValue {\n  lstatSync: (path: string) => Stats\n  readdir: (\n    path: string,\n    options: { withFileTypes: true },\n    cb: (er: NodeJS.ErrnoException | null, entries?: Dirent[]) => any,\n  ) => void\n  readdirSync: (path: string, options: { withFileTypes: true }) => Dirent[]\n  readlinkSync: (path: string) => string\n  realpathSync: (path: string) => string\n  promises: {\n    lstat: (path: string) => Promise<Stats>\n    readdir: (\n      path: string,\n      options: { withFileTypes: true },\n    ) => Promise<Dirent[]>\n    readlink: (path: string) => Promise<string>\n    realpath: (path: string) => Promise<string>\n    [k: string]: any\n  }\n  [k: string]: any\n}\n\nconst defaultFS: FSValue = {\n  lstatSync,\n  readdir: readdirCB,\n  readdirSync,\n  readlinkSync,\n  realpathSync,\n  promises: {\n    lstat,\n    readdir,\n    readlink,\n    realpath,\n  },\n}\n\n// if they just gave us require('fs') then use our default\nconst fsFromOption = (fsOption?: FSOption): FSValue =>\n  !fsOption || fsOption === defaultFS || fsOption === actualFS ?\n    defaultFS\n  : {\n      ...defaultFS,\n      ...fsOption,\n      promises: {\n        ...defaultFS.promises,\n        ...(fsOption.promises || {}),\n      },\n    }\n\n// turn something like //?/c:/ into c:\\\nconst uncDriveRegexp = /^\\\\\\\\\\?\\\\([a-z]:)\\\\?$/i\nconst uncToDrive = (rootPath: string): string =>\n  rootPath.replace(/\\//g, '\\\\').replace(uncDriveRegexp, '$1\\\\')\n\n// windows paths are separated by either / or \\\nconst eitherSep = /[\\\\\\/]/\n\nconst UNKNOWN = 0 // may not even exist, for all we know\nconst IFIFO = 0b0001\nconst IFCHR = 0b0010\nconst IFDIR = 0b0100\nconst IFBLK = 0b0110\nconst IFREG = 0b1000\nconst IFLNK = 0b1010\nconst IFSOCK = 0b1100\nconst IFMT = 0b1111\n\nexport type Type =\n  | 'Unknown'\n  | 'FIFO'\n  | 'CharacterDevice'\n  | 'Directory'\n  | 'BlockDevice'\n  | 'File'\n  | 'SymbolicLink'\n  | 'Socket'\n\n// mask to unset low 4 bits\nconst IFMT_UNKNOWN = ~IFMT\n\n// set after successfully calling readdir() and getting entries.\nconst READDIR_CALLED = 0b0000_0001_0000\n// set after a successful lstat()\nconst LSTAT_CALLED = 0b0000_0010_0000\n// set if an entry (or one of its parents) is definitely not a dir\nconst ENOTDIR = 0b0000_0100_0000\n// set if an entry (or one of its parents) does not exist\n// (can also be set on lstat errors like EACCES or ENAMETOOLONG)\nconst ENOENT = 0b0000_1000_0000\n// cannot have child entries -- also verify &IFMT is either IFDIR or IFLNK\n// set if we fail to readlink\nconst ENOREADLINK = 0b0001_0000_0000\n// set if we know realpath() will fail\nconst ENOREALPATH = 0b0010_0000_0000\n\nconst ENOCHILD = ENOTDIR | ENOENT | ENOREALPATH\nconst TYPEMASK = 0b0011_1111_1111\n\nconst entToType = (s: Dirent | Stats) =>\n  s.isFile() ? IFREG\n  : s.isDirectory() ? IFDIR\n  : s.isSymbolicLink() ? IFLNK\n  : s.isCharacterDevice() ? IFCHR\n  : s.isBlockDevice() ? IFBLK\n  : s.isSocket() ? IFSOCK\n  : s.isFIFO() ? IFIFO\n  : UNKNOWN\n\n// normalize unicode path names\nconst normalizeCache = new Map<string, string>()\nconst normalize = (s: string) => {\n  const c = normalizeCache.get(s)\n  if (c) return c\n  const n = s.normalize('NFKD')\n  normalizeCache.set(s, n)\n  return n\n}\n\nconst normalizeNocaseCache = new Map<string, string>()\nconst normalizeNocase = (s: string) => {\n  const c = normalizeNocaseCache.get(s)\n  if (c) return c\n  const n = normalize(s.toLowerCase())\n  normalizeNocaseCache.set(s, n)\n  return n\n}\n\n/**\n * Options that may be provided to the Path constructor\n */\nexport interface PathOpts {\n  fullpath?: string\n  relative?: string\n  relativePosix?: string\n  parent?: PathBase\n  /**\n   * See {@link FSOption}\n   */\n  fs?: FSOption\n}\n\n/**\n * An LRUCache for storing resolved path strings or Path objects.\n * @internal\n */\nexport class ResolveCache extends LRUCache<string, string> {\n  constructor() {\n    super({ max: 256 })\n  }\n}\n\n// In order to prevent blowing out the js heap by allocating hundreds of\n// thousands of Path entries when walking extremely large trees, the \"children\"\n// in this tree are represented by storing an array of Path entries in an\n// LRUCache, indexed by the parent.  At any time, Path.children() may return an\n// empty array, indicating that it doesn't know about any of its children, and\n// thus has to rebuild that cache.  This is fine, it just means that we don't\n// benefit as much from having the cached entries, but huge directory walks\n// don't blow out the stack, and smaller ones are still as fast as possible.\n//\n//It does impose some complexity when building up the readdir data, because we\n//need to pass a reference to the children array that we started with.\n\n/**\n * an LRUCache for storing child entries.\n * @internal\n */\nexport class ChildrenCache extends LRUCache<PathBase, Children> {\n  constructor(maxSize: number = 16 * 1024) {\n    super({\n      maxSize,\n      // parent + children\n      sizeCalculation: a => a.length + 1,\n    })\n  }\n}\n\n/**\n * Array of Path objects, plus a marker indicating the first provisional entry\n *\n * @internal\n */\nexport type Children = PathBase[] & { provisional: number }\n\nconst setAsCwd = Symbol('PathScurry setAsCwd')\n\n/**\n * Path objects are sort of like a super-powered\n * {@link https://nodejs.org/docs/latest/api/fs.html#class-fsdirent fs.Dirent}\n *\n * Each one represents a single filesystem entry on disk, which may or may not\n * exist. It includes methods for reading various types of information via\n * lstat, readlink, and readdir, and caches all information to the greatest\n * degree possible.\n *\n * Note that fs operations that would normally throw will instead return an\n * \"empty\" value. This is in order to prevent excessive overhead from error\n * stack traces.\n */\nexport abstract class PathBase implements Dirent {\n  /**\n   * the basename of this path\n   *\n   * **Important**: *always* test the path name against any test string\n   * usingthe {@link isNamed} method, and not by directly comparing this\n   * string. Otherwise, unicode path strings that the system sees as identical\n   * will not be properly treated as the same path, leading to incorrect\n   * behavior and possible security issues.\n   */\n  name: string\n  /**\n   * the Path entry corresponding to the path root.\n   *\n   * @internal\n   */\n  root: PathBase\n  /**\n   * All roots found within the current PathScurry family\n   *\n   * @internal\n   */\n  roots: { [k: string]: PathBase }\n  /**\n   * a reference to the parent path, or undefined in the case of root entries\n   *\n   * @internal\n   */\n  parent?: PathBase\n  /**\n   * boolean indicating whether paths are compared case-insensitively\n   * @internal\n   */\n  nocase: boolean\n\n  /**\n   * boolean indicating that this path is the current working directory\n   * of the PathScurry collection that contains it.\n   */\n  isCWD: boolean = false\n\n  /**\n   * the string or regexp used to split paths. On posix, it is `'/'`, and on\n   * windows it is a RegExp matching either `'/'` or `'\\\\'`\n   */\n  abstract splitSep: string | RegExp\n  /**\n   * The path separator string to use when joining paths\n   */\n  abstract sep: string\n\n  // potential default fs override\n  #fs: FSValue\n\n  // Stats fields\n  #dev?: number\n  get dev() {\n    return this.#dev\n  }\n  #mode?: number\n  get mode() {\n    return this.#mode\n  }\n  #nlink?: number\n  get nlink() {\n    return this.#nlink\n  }\n  #uid?: number\n  get uid() {\n    return this.#uid\n  }\n  #gid?: number\n  get gid() {\n    return this.#gid\n  }\n  #rdev?: number\n  get rdev() {\n    return this.#rdev\n  }\n  #blksize?: number\n  get blksize() {\n    return this.#blksize\n  }\n  #ino?: number\n  get ino() {\n    return this.#ino\n  }\n  #size?: number\n  get size() {\n    return this.#size\n  }\n  #blocks?: number\n  get blocks() {\n    return this.#blocks\n  }\n  #atimeMs?: number\n  get atimeMs() {\n    return this.#atimeMs\n  }\n  #mtimeMs?: number\n  get mtimeMs() {\n    return this.#mtimeMs\n  }\n  #ctimeMs?: number\n  get ctimeMs() {\n    return this.#ctimeMs\n  }\n  #birthtimeMs?: number\n  get birthtimeMs() {\n    return this.#birthtimeMs\n  }\n  #atime?: Date\n  get atime() {\n    return this.#atime\n  }\n  #mtime?: Date\n  get mtime() {\n    return this.#mtime\n  }\n  #ctime?: Date\n  get ctime() {\n    return this.#ctime\n  }\n  #birthtime?: Date\n  get birthtime() {\n    return this.#birthtime\n  }\n\n  #matchName: string\n  #depth?: number\n  #fullpath?: string\n  #fullpathPosix?: string\n  #relative?: string\n  #relativePosix?: string\n  #type: number\n  #children: ChildrenCache\n  #linkTarget?: PathBase\n  #realpath?: PathBase\n\n  /**\n   * This property is for compatibility with the Dirent class as of\n   * Node v20, where Dirent['parentPath'] refers to the path of the\n   * directory that was passed to readdir. For root entries, it's the path\n   * to the entry itself.\n   */\n  get parentPath(): string {\n    return (this.parent || this).fullpath()\n  }\n\n  /**\n   * Deprecated alias for Dirent['parentPath'] Somewhat counterintuitively,\n   * this property refers to the *parent* path, not the path object itself.\n   */\n  get path(): string {\n    return this.parentPath\n  }\n\n  /**\n   * Do not create new Path objects directly.  They should always be accessed\n   * via the PathScurry class or other methods on the Path class.\n   *\n   * @internal\n   */\n  constructor(\n    name: string,\n    type: number = UNKNOWN,\n    root: PathBase | undefined,\n    roots: { [k: string]: PathBase },\n    nocase: boolean,\n    children: ChildrenCache,\n    opts: PathOpts,\n  ) {\n    this.name = name\n    this.#matchName = nocase ? normalizeNocase(name) : normalize(name)\n    this.#type = type & TYPEMASK\n    this.nocase = nocase\n    this.roots = roots\n    this.root = root || this\n    this.#children = children\n    this.#fullpath = opts.fullpath\n    this.#relative = opts.relative\n    this.#relativePosix = opts.relativePosix\n    this.parent = opts.parent\n    if (this.parent) {\n      this.#fs = this.parent.#fs\n    } else {\n      this.#fs = fsFromOption(opts.fs)\n    }\n  }\n\n  /**\n   * Returns the depth of the Path object from its root.\n   *\n   * For example, a path at `/foo/bar` would have a depth of 2.\n   */\n  depth(): number {\n    if (this.#depth !== undefined) return this.#depth\n    if (!this.parent) return (this.#depth = 0)\n    return (this.#depth = this.parent.depth() + 1)\n  }\n\n  /**\n   * @internal\n   */\n  abstract getRootString(path: string): string\n  /**\n   * @internal\n   */\n  abstract getRoot(rootPath: string): PathBase\n  /**\n   * @internal\n   */\n  abstract newChild(name: string, type?: number, opts?: PathOpts): PathBase\n\n  /**\n   * @internal\n   */\n  childrenCache() {\n    return this.#children\n  }\n\n  /**\n   * Get the Path object referenced by the string path, resolved from this Path\n   */\n  resolve(path?: string): PathBase {\n    if (!path) {\n      return this\n    }\n    const rootPath = this.getRootString(path)\n    const dir = path.substring(rootPath.length)\n    const dirParts = dir.split(this.splitSep)\n    const result: PathBase =\n      rootPath ?\n        this.getRoot(rootPath).#resolveParts(dirParts)\n      : this.#resolveParts(dirParts)\n    return result\n  }\n\n  #resolveParts(dirParts: string[]) {\n    let p: PathBase = this\n    for (const part of dirParts) {\n      p = p.child(part)\n    }\n    return p\n  }\n\n  /**\n   * Returns the cached children Path objects, if still available.  If they\n   * have fallen out of the cache, then returns an empty array, and resets the\n   * READDIR_CALLED bit, so that future calls to readdir() will require an fs\n   * lookup.\n   *\n   * @internal\n   */\n  children(): Children {\n    const cached = this.#children.get(this)\n    if (cached) {\n      return cached\n    }\n    const children: Children = Object.assign([], { provisional: 0 })\n    this.#children.set(this, children)\n    this.#type &= ~READDIR_CALLED\n    return children\n  }\n\n  /**\n   * Resolves a path portion and returns or creates the child Path.\n   *\n   * Returns `this` if pathPart is `''` or `'.'`, or `parent` if pathPart is\n   * `'..'`.\n   *\n   * This should not be called directly.  If `pathPart` contains any path\n   * separators, it will lead to unsafe undefined behavior.\n   *\n   * Use `Path.resolve()` instead.\n   *\n   * @internal\n   */\n  child(pathPart: string, opts?: PathOpts): PathBase {\n    if (pathPart === '' || pathPart === '.') {\n      return this\n    }\n    if (pathPart === '..') {\n      return this.parent || this\n    }\n\n    // find the child\n    const children = this.children()\n    const name =\n      this.nocase ? normalizeNocase(pathPart) : normalize(pathPart)\n    for (const p of children) {\n      if (p.#matchName === name) {\n        return p\n      }\n    }\n\n    // didn't find it, create provisional child, since it might not\n    // actually exist.  If we know the parent isn't a dir, then\n    // in fact it CAN'T exist.\n    const s = this.parent ? this.sep : ''\n    const fullpath =\n      this.#fullpath ? this.#fullpath + s + pathPart : undefined\n    const pchild = this.newChild(pathPart, UNKNOWN, {\n      ...opts,\n      parent: this,\n      fullpath,\n    })\n\n    if (!this.canReaddir()) {\n      pchild.#type |= ENOENT\n    }\n\n    // don't have to update provisional, because if we have real children,\n    // then provisional is set to children.length, otherwise a lower number\n    children.push(pchild)\n    return pchild\n  }\n\n  /**\n   * The relative path from the cwd. If it does not share an ancestor with\n   * the cwd, then this ends up being equivalent to the fullpath()\n   */\n  relative(): string {\n    if (this.isCWD) return ''\n    if (this.#relative !== undefined) {\n      return this.#relative\n    }\n    const name = this.name\n    const p = this.parent\n    if (!p) {\n      return (this.#relative = this.name)\n    }\n    const pv = p.relative()\n    return pv + (!pv || !p.parent ? '' : this.sep) + name\n  }\n\n  /**\n   * The relative path from the cwd, using / as the path separator.\n   * If it does not share an ancestor with\n   * the cwd, then this ends up being equivalent to the fullpathPosix()\n   * On posix systems, this is identical to relative().\n   */\n  relativePosix(): string {\n    if (this.sep === '/') return this.relative()\n    if (this.isCWD) return ''\n    if (this.#relativePosix !== undefined) return this.#relativePosix\n    const name = this.name\n    const p = this.parent\n    if (!p) {\n      return (this.#relativePosix = this.fullpathPosix())\n    }\n    const pv = p.relativePosix()\n    return pv + (!pv || !p.parent ? '' : '/') + name\n  }\n\n  /**\n   * The fully resolved path string for this Path entry\n   */\n  fullpath(): string {\n    if (this.#fullpath !== undefined) {\n      return this.#fullpath\n    }\n    const name = this.name\n    const p = this.parent\n    if (!p) {\n      return (this.#fullpath = this.name)\n    }\n    const pv = p.fullpath()\n    const fp = pv + (!p.parent ? '' : this.sep) + name\n    return (this.#fullpath = fp)\n  }\n\n  /**\n   * On platforms other than windows, this is identical to fullpath.\n   *\n   * On windows, this is overridden to return the forward-slash form of the\n   * full UNC path.\n   */\n  fullpathPosix(): string {\n    if (this.#fullpathPosix !== undefined) return this.#fullpathPosix\n    if (this.sep === '/') return (this.#fullpathPosix = this.fullpath())\n    if (!this.parent) {\n      const p = this.fullpath().replace(/\\\\/g, '/')\n      if (/^[a-z]:\\//i.test(p)) {\n        return (this.#fullpathPosix = `//?/${p}`)\n      } else {\n        return (this.#fullpathPosix = p)\n      }\n    }\n    const p = this.parent\n    const pfpp = p.fullpathPosix()\n    const fpp = pfpp + (!pfpp || !p.parent ? '' : '/') + this.name\n    return (this.#fullpathPosix = fpp)\n  }\n\n  /**\n   * Is the Path of an unknown type?\n   *\n   * Note that we might know *something* about it if there has been a previous\n   * filesystem operation, for example that it does not exist, or is not a\n   * link, or whether it has child entries.\n   */\n  isUnknown(): boolean {\n    return (this.#type & IFMT) === UNKNOWN\n  }\n\n  isType(type: Type): boolean {\n    return this[`is${type}`]()\n  }\n\n  getType(): Type {\n    return (\n      this.isUnknown() ? 'Unknown'\n      : this.isDirectory() ? 'Directory'\n      : this.isFile() ? 'File'\n      : this.isSymbolicLink() ? 'SymbolicLink'\n      : this.isFIFO() ? 'FIFO'\n      : this.isCharacterDevice() ? 'CharacterDevice'\n      : this.isBlockDevice() ? 'BlockDevice'\n      : /* c8 ignore start */ this.isSocket() ? 'Socket'\n      : 'Unknown'\n    )\n    /* c8 ignore stop */\n  }\n\n  /**\n   * Is the Path a regular file?\n   */\n  isFile(): boolean {\n    return (this.#type & IFMT) === IFREG\n  }\n\n  /**\n   * Is the Path a directory?\n   */\n  isDirectory(): boolean {\n    return (this.#type & IFMT) === IFDIR\n  }\n\n  /**\n   * Is the path a character device?\n   */\n  isCharacterDevice(): boolean {\n    return (this.#type & IFMT) === IFCHR\n  }\n\n  /**\n   * Is the path a block device?\n   */\n  isBlockDevice(): boolean {\n    return (this.#type & IFMT) === IFBLK\n  }\n\n  /**\n   * Is the path a FIFO pipe?\n   */\n  isFIFO(): boolean {\n    return (this.#type & IFMT) === IFIFO\n  }\n\n  /**\n   * Is the path a socket?\n   */\n  isSocket(): boolean {\n    return (this.#type & IFMT) === IFSOCK\n  }\n\n  /**\n   * Is the path a symbolic link?\n   */\n  isSymbolicLink(): boolean {\n    return (this.#type & IFLNK) === IFLNK\n  }\n\n  /**\n   * Return the entry if it has been subject of a successful lstat, or\n   * undefined otherwise.\n   *\n   * Does not read the filesystem, so an undefined result *could* simply\n   * mean that we haven't called lstat on it.\n   */\n  lstatCached(): PathBase | undefined {\n    return this.#type & LSTAT_CALLED ? this : undefined\n  }\n\n  /**\n   * Return the cached link target if the entry has been the subject of a\n   * successful readlink, or undefined otherwise.\n   *\n   * Does not read the filesystem, so an undefined result *could* just mean we\n   * don't have any cached data. Only use it if you are very sure that a\n   * readlink() has been called at some point.\n   */\n  readlinkCached(): PathBase | undefined {\n    return this.#linkTarget\n  }\n\n  /**\n   * Returns the cached realpath target if the entry has been the subject\n   * of a successful realpath, or undefined otherwise.\n   *\n   * Does not read the filesystem, so an undefined result *could* just mean we\n   * don't have any cached data. Only use it if you are very sure that a\n   * realpath() has been called at some point.\n   */\n  realpathCached(): PathBase | undefined {\n    return this.#realpath\n  }\n\n  /**\n   * Returns the cached child Path entries array if the entry has been the\n   * subject of a successful readdir(), or [] otherwise.\n   *\n   * Does not read the filesystem, so an empty array *could* just mean we\n   * don't have any cached data. Only use it if you are very sure that a\n   * readdir() has been called recently enough to still be valid.\n   */\n  readdirCached(): PathBase[] {\n    const children = this.children()\n    return children.slice(0, children.provisional)\n  }\n\n  /**\n   * Return true if it's worth trying to readlink.  Ie, we don't (yet) have\n   * any indication that readlink will definitely fail.\n   *\n   * Returns false if the path is known to not be a symlink, if a previous\n   * readlink failed, or if the entry does not exist.\n   */\n  canReadlink(): boolean {\n    if (this.#linkTarget) return true\n    if (!this.parent) return false\n    // cases where it cannot possibly succeed\n    const ifmt = this.#type & IFMT\n    return !(\n      (ifmt !== UNKNOWN && ifmt !== IFLNK) ||\n      this.#type & ENOREADLINK ||\n      this.#type & ENOENT\n    )\n  }\n\n  /**\n   * Return true if readdir has previously been successfully called on this\n   * path, indicating that cachedReaddir() is likely valid.\n   */\n  calledReaddir(): boolean {\n    return !!(this.#type & READDIR_CALLED)\n  }\n\n  /**\n   * Returns true if the path is known to not exist. That is, a previous lstat\n   * or readdir failed to verify its existence when that would have been\n   * expected, or a parent entry was marked either enoent or enotdir.\n   */\n  isENOENT(): boolean {\n    return !!(this.#type & ENOENT)\n  }\n\n  /**\n   * Return true if the path is a match for the given path name.  This handles\n   * case sensitivity and unicode normalization.\n   *\n   * Note: even on case-sensitive systems, it is **not** safe to test the\n   * equality of the `.name` property to determine whether a given pathname\n   * matches, due to unicode normalization mismatches.\n   *\n   * Always use this method instead of testing the `path.name` property\n   * directly.\n   */\n  isNamed(n: string): boolean {\n    return !this.nocase ?\n        this.#matchName === normalize(n)\n      : this.#matchName === normalizeNocase(n)\n  }\n\n  /**\n   * Return the Path object corresponding to the target of a symbolic link.\n   *\n   * If the Path is not a symbolic link, or if the readlink call fails for any\n   * reason, `undefined` is returned.\n   *\n   * Result is cached, and thus may be outdated if the filesystem is mutated.\n   */\n  async readlink(): Promise<PathBase | undefined> {\n    const target = this.#linkTarget\n    if (target) {\n      return target\n    }\n    if (!this.canReadlink()) {\n      return undefined\n    }\n    /* c8 ignore start */\n    // already covered by the canReadlink test, here for ts grumples\n    if (!this.parent) {\n      return undefined\n    }\n    /* c8 ignore stop */\n    try {\n      const read = await this.#fs.promises.readlink(this.fullpath())\n      const linkTarget = (await this.parent.realpath())?.resolve(read)\n      if (linkTarget) {\n        return (this.#linkTarget = linkTarget)\n      }\n    } catch (er) {\n      this.#readlinkFail((er as NodeJS.ErrnoException).code)\n      return undefined\n    }\n  }\n\n  /**\n   * Synchronous {@link PathBase.readlink}\n   */\n  readlinkSync(): PathBase | undefined {\n    const target = this.#linkTarget\n    if (target) {\n      return target\n    }\n    if (!this.canReadlink()) {\n      return undefined\n    }\n    /* c8 ignore start */\n    // already covered by the canReadlink test, here for ts grumples\n    if (!this.parent) {\n      return undefined\n    }\n    /* c8 ignore stop */\n    try {\n      const read = this.#fs.readlinkSync(this.fullpath())\n      const linkTarget = this.parent.realpathSync()?.resolve(read)\n      if (linkTarget) {\n        return (this.#linkTarget = linkTarget)\n      }\n    } catch (er) {\n      this.#readlinkFail((er as NodeJS.ErrnoException).code)\n      return undefined\n    }\n  }\n\n  #readdirSuccess(children: Children) {\n    // succeeded, mark readdir called bit\n    this.#type |= READDIR_CALLED\n    // mark all remaining provisional children as ENOENT\n    for (let p = children.provisional; p < children.length; p++) {\n      const c = children[p]\n      if (c) c.#markENOENT()\n    }\n  }\n\n  #markENOENT() {\n    // mark as UNKNOWN and ENOENT\n    if (this.#type & ENOENT) return\n    this.#type = (this.#type | ENOENT) & IFMT_UNKNOWN\n    this.#markChildrenENOENT()\n  }\n\n  #markChildrenENOENT() {\n    // all children are provisional and do not exist\n    const children = this.children()\n    children.provisional = 0\n    for (const p of children) {\n      p.#markENOENT()\n    }\n  }\n\n  #markENOREALPATH() {\n    this.#type |= ENOREALPATH\n    this.#markENOTDIR()\n  }\n\n  // save the information when we know the entry is not a dir\n  #markENOTDIR() {\n    // entry is not a directory, so any children can't exist.\n    // this *should* be impossible, since any children created\n    // after it's been marked ENOTDIR should be marked ENOENT,\n    // so it won't even get to this point.\n    /* c8 ignore start */\n    if (this.#type & ENOTDIR) return\n    /* c8 ignore stop */\n    let t = this.#type\n    // this could happen if we stat a dir, then delete it,\n    // then try to read it or one of its children.\n    if ((t & IFMT) === IFDIR) t &= IFMT_UNKNOWN\n    this.#type = t | ENOTDIR\n    this.#markChildrenENOENT()\n  }\n\n  #readdirFail(code: string = '') {\n    // markENOTDIR and markENOENT also set provisional=0\n    if (code === 'ENOTDIR' || code === 'EPERM') {\n      this.#markENOTDIR()\n    } else if (code === 'ENOENT') {\n      this.#markENOENT()\n    } else {\n      this.children().provisional = 0\n    }\n  }\n\n  #lstatFail(code: string = '') {\n    // Windows just raises ENOENT in this case, disable for win CI\n    /* c8 ignore start */\n    if (code === 'ENOTDIR') {\n      // already know it has a parent by this point\n      const p = this.parent as PathBase\n      p.#markENOTDIR()\n    } else if (code === 'ENOENT') {\n      /* c8 ignore stop */\n      this.#markENOENT()\n    }\n  }\n\n  #readlinkFail(code: string = '') {\n    let ter = this.#type\n    ter |= ENOREADLINK\n    if (code === 'ENOENT') ter |= ENOENT\n    // windows gets a weird error when you try to readlink a file\n    if (code === 'EINVAL' || code === 'UNKNOWN') {\n      // exists, but not a symlink, we don't know WHAT it is, so remove\n      // all IFMT bits.\n      ter &= IFMT_UNKNOWN\n    }\n    this.#type = ter\n    // windows just gets ENOENT in this case.  We do cover the case,\n    // just disabled because it's impossible on Windows CI\n    /* c8 ignore start */\n    if (code === 'ENOTDIR' && this.parent) {\n      this.parent.#markENOTDIR()\n    }\n    /* c8 ignore stop */\n  }\n\n  #readdirAddChild(e: Dirent, c: Children) {\n    return (\n      this.#readdirMaybePromoteChild(e, c) ||\n      this.#readdirAddNewChild(e, c)\n    )\n  }\n\n  #readdirAddNewChild(e: Dirent, c: Children): PathBase {\n    // alloc new entry at head, so it's never provisional\n    const type = entToType(e)\n    const child = this.newChild(e.name, type, { parent: this })\n    const ifmt = child.#type & IFMT\n    if (ifmt !== IFDIR && ifmt !== IFLNK && ifmt !== UNKNOWN) {\n      child.#type |= ENOTDIR\n    }\n    c.unshift(child)\n    c.provisional++\n    return child\n  }\n\n  #readdirMaybePromoteChild(e: Dirent, c: Children): PathBase | undefined {\n    for (let p = c.provisional; p < c.length; p++) {\n      const pchild = c[p]\n      const name =\n        this.nocase ? normalizeNocase(e.name) : normalize(e.name)\n      if (name !== pchild!.#matchName) {\n        continue\n      }\n\n      return this.#readdirPromoteChild(e, pchild!, p, c)\n    }\n  }\n\n  #readdirPromoteChild(\n    e: Dirent,\n    p: PathBase,\n    index: number,\n    c: Children,\n  ): PathBase {\n    const v = p.name\n    // retain any other flags, but set ifmt from dirent\n    p.#type = (p.#type & IFMT_UNKNOWN) | entToType(e)\n    // case sensitivity fixing when we learn the true name.\n    if (v !== e.name) p.name = e.name\n\n    // just advance provisional index (potentially off the list),\n    // otherwise we have to splice/pop it out and re-insert at head\n    if (index !== c.provisional) {\n      if (index === c.length - 1) c.pop()\n      else c.splice(index, 1)\n      c.unshift(p)\n    }\n    c.provisional++\n    return p\n  }\n\n  /**\n   * Call lstat() on this Path, and update all known information that can be\n   * determined.\n   *\n   * Note that unlike `fs.lstat()`, the returned value does not contain some\n   * information, such as `mode`, `dev`, `nlink`, and `ino`.  If that\n   * information is required, you will need to call `fs.lstat` yourself.\n   *\n   * If the Path refers to a nonexistent file, or if the lstat call fails for\n   * any reason, `undefined` is returned.  Otherwise the updated Path object is\n   * returned.\n   *\n   * Results are cached, and thus may be out of date if the filesystem is\n   * mutated.\n   */\n  async lstat(): Promise<PathBase | undefined> {\n    if ((this.#type & ENOENT) === 0) {\n      try {\n        this.#applyStat(await this.#fs.promises.lstat(this.fullpath()))\n        return this\n      } catch (er) {\n        this.#lstatFail((er as NodeJS.ErrnoException).code)\n      }\n    }\n  }\n\n  /**\n   * synchronous {@link PathBase.lstat}\n   */\n  lstatSync(): PathBase | undefined {\n    if ((this.#type & ENOENT) === 0) {\n      try {\n        this.#applyStat(this.#fs.lstatSync(this.fullpath()))\n        return this\n      } catch (er) {\n        this.#lstatFail((er as NodeJS.ErrnoException).code)\n      }\n    }\n  }\n\n  #applyStat(st: Stats) {\n    const {\n      atime,\n      atimeMs,\n      birthtime,\n      birthtimeMs,\n      blksize,\n      blocks,\n      ctime,\n      ctimeMs,\n      dev,\n      gid,\n      ino,\n      mode,\n      mtime,\n      mtimeMs,\n      nlink,\n      rdev,\n      size,\n      uid,\n    } = st\n    this.#atime = atime\n    this.#atimeMs = atimeMs\n    this.#birthtime = birthtime\n    this.#birthtimeMs = birthtimeMs\n    this.#blksize = blksize\n    this.#blocks = blocks\n    this.#ctime = ctime\n    this.#ctimeMs = ctimeMs\n    this.#dev = dev\n    this.#gid = gid\n    this.#ino = ino\n    this.#mode = mode\n    this.#mtime = mtime\n    this.#mtimeMs = mtimeMs\n    this.#nlink = nlink\n    this.#rdev = rdev\n    this.#size = size\n    this.#uid = uid\n    const ifmt = entToType(st)\n    // retain any other flags, but set the ifmt\n    this.#type = (this.#type & IFMT_UNKNOWN) | ifmt | LSTAT_CALLED\n    if (ifmt !== UNKNOWN && ifmt !== IFDIR && ifmt !== IFLNK) {\n      this.#type |= ENOTDIR\n    }\n  }\n\n  #onReaddirCB: ((\n    er: NodeJS.ErrnoException | null,\n    entries: Path[],\n  ) => any)[] = []\n  #readdirCBInFlight: boolean = false\n  #callOnReaddirCB(children: Path[]) {\n    this.#readdirCBInFlight = false\n    const cbs = this.#onReaddirCB.slice()\n    this.#onReaddirCB.length = 0\n    cbs.forEach(cb => cb(null, children))\n  }\n\n  /**\n   * Standard node-style callback interface to get list of directory entries.\n   *\n   * If the Path cannot or does not contain any children, then an empty array\n   * is returned.\n   *\n   * Results are cached, and thus may be out of date if the filesystem is\n   * mutated.\n   *\n   * @param cb The callback called with (er, entries).  Note that the `er`\n   * param is somewhat extraneous, as all readdir() errors are handled and\n   * simply result in an empty set of entries being returned.\n   * @param allowZalgo Boolean indicating that immediately known results should\n   * *not* be deferred with `queueMicrotask`. Defaults to `false`. Release\n   * zalgo at your peril, the dark pony lord is devious and unforgiving.\n   */\n  readdirCB(\n    cb: (er: NodeJS.ErrnoException | null, entries: PathBase[]) => any,\n    allowZalgo: boolean = false,\n  ): void {\n    if (!this.canReaddir()) {\n      if (allowZalgo) cb(null, [])\n      else queueMicrotask(() => cb(null, []))\n      return\n    }\n\n    const children = this.children()\n    if (this.calledReaddir()) {\n      const c = children.slice(0, children.provisional)\n      if (allowZalgo) cb(null, c)\n      else queueMicrotask(() => cb(null, c))\n      return\n    }\n\n    // don't have to worry about zalgo at this point.\n    this.#onReaddirCB.push(cb)\n    if (this.#readdirCBInFlight) {\n      return\n    }\n    this.#readdirCBInFlight = true\n\n    // else read the directory, fill up children\n    // de-provisionalize any provisional children.\n    const fullpath = this.fullpath()\n    this.#fs.readdir(fullpath, { withFileTypes: true }, (er, entries) => {\n      if (er) {\n        this.#readdirFail((er as NodeJS.ErrnoException).code)\n        children.provisional = 0\n      } else {\n        // if we didn't get an error, we always get entries.\n        //@ts-ignore\n        for (const e of entries) {\n          this.#readdirAddChild(e, children)\n        }\n        this.#readdirSuccess(children)\n      }\n      this.#callOnReaddirCB(children.slice(0, children.provisional))\n      return\n    })\n  }\n\n  #asyncReaddirInFlight?: Promise<void>\n\n  /**\n   * Return an array of known child entries.\n   *\n   * If the Path cannot or does not contain any children, then an empty array\n   * is returned.\n   *\n   * Results are cached, and thus may be out of date if the filesystem is\n   * mutated.\n   */\n  async readdir(): Promise<PathBase[]> {\n    if (!this.canReaddir()) {\n      return []\n    }\n\n    const children = this.children()\n    if (this.calledReaddir()) {\n      return children.slice(0, children.provisional)\n    }\n\n    // else read the directory, fill up children\n    // de-provisionalize any provisional children.\n    const fullpath = this.fullpath()\n    if (this.#asyncReaddirInFlight) {\n      await this.#asyncReaddirInFlight\n    } else {\n      /* c8 ignore start */\n      let resolve: () => void = () => {}\n      /* c8 ignore stop */\n      this.#asyncReaddirInFlight = new Promise<void>(\n        res => (resolve = res),\n      )\n      try {\n        for (const e of await this.#fs.promises.readdir(fullpath, {\n          withFileTypes: true,\n        })) {\n          this.#readdirAddChild(e, children)\n        }\n        this.#readdirSuccess(children)\n      } catch (er) {\n        this.#readdirFail((er as NodeJS.ErrnoException).code)\n        children.provisional = 0\n      }\n      this.#asyncReaddirInFlight = undefined\n      resolve()\n    }\n    return children.slice(0, children.provisional)\n  }\n\n  /**\n   * synchronous {@link PathBase.readdir}\n   */\n  readdirSync(): PathBase[] {\n    if (!this.canReaddir()) {\n      return []\n    }\n\n    const children = this.children()\n    if (this.calledReaddir()) {\n      return children.slice(0, children.provisional)\n    }\n\n    // else read the directory, fill up children\n    // de-provisionalize any provisional children.\n    const fullpath = this.fullpath()\n    try {\n      for (const e of this.#fs.readdirSync(fullpath, {\n        withFileTypes: true,\n      })) {\n        this.#readdirAddChild(e, children)\n      }\n      this.#readdirSuccess(children)\n    } catch (er) {\n      this.#readdirFail((er as NodeJS.ErrnoException).code)\n      children.provisional = 0\n    }\n    return children.slice(0, children.provisional)\n  }\n\n  canReaddir() {\n    if (this.#type & ENOCHILD) return false\n    const ifmt = IFMT & this.#type\n    // we always set ENOTDIR when setting IFMT, so should be impossible\n    /* c8 ignore start */\n    if (!(ifmt === UNKNOWN || ifmt === IFDIR || ifmt === IFLNK)) {\n      return false\n    }\n    /* c8 ignore stop */\n    return true\n  }\n\n  shouldWalk(\n    dirs: Set<PathBase | undefined>,\n    walkFilter?: (e: PathBase) => boolean,\n  ): boolean {\n    return (\n      (this.#type & IFDIR) === IFDIR &&\n      !(this.#type & ENOCHILD) &&\n      !dirs.has(this) &&\n      (!walkFilter || walkFilter(this))\n    )\n  }\n\n  /**\n   * Return the Path object corresponding to path as resolved\n   * by realpath(3).\n   *\n   * If the realpath call fails for any reason, `undefined` is returned.\n   *\n   * Result is cached, and thus may be outdated if the filesystem is mutated.\n   * On success, returns a Path object.\n   */\n  async realpath(): Promise<PathBase | undefined> {\n    if (this.#realpath) return this.#realpath\n    if ((ENOREALPATH | ENOREADLINK | ENOENT) & this.#type) return undefined\n    try {\n      const rp = await this.#fs.promises.realpath(this.fullpath())\n      return (this.#realpath = this.resolve(rp))\n    } catch (_) {\n      this.#markENOREALPATH()\n    }\n  }\n\n  /**\n   * Synchronous {@link realpath}\n   */\n  realpathSync(): PathBase | undefined {\n    if (this.#realpath) return this.#realpath\n    if ((ENOREALPATH | ENOREADLINK | ENOENT) & this.#type) return undefined\n    try {\n      const rp = this.#fs.realpathSync(this.fullpath())\n      return (this.#realpath = this.resolve(rp))\n    } catch (_) {\n      this.#markENOREALPATH()\n    }\n  }\n\n  /**\n   * Internal method to mark this Path object as the scurry cwd,\n   * called by {@link PathScurry#chdir}\n   *\n   * @internal\n   */\n  [setAsCwd](oldCwd: PathBase): void {\n    if (oldCwd === this) return\n    oldCwd.isCWD = false\n    this.isCWD = true\n\n    const changed = new Set<PathBase>([])\n    let rp = []\n    let p: PathBase = this\n    while (p && p.parent) {\n      changed.add(p)\n      p.#relative = rp.join(this.sep)\n      p.#relativePosix = rp.join('/')\n      p = p.parent\n      rp.push('..')\n    }\n    // now un-memoize parents of old cwd\n    p = oldCwd\n    while (p && p.parent && !changed.has(p)) {\n      p.#relative = undefined\n      p.#relativePosix = undefined\n      p = p.parent\n    }\n  }\n}\n\n/**\n * Path class used on win32 systems\n *\n * Uses `'\\\\'` as the path separator for returned paths, either `'\\\\'` or `'/'`\n * as the path separator for parsing paths.\n */\nexport class PathWin32 extends PathBase {\n  /**\n   * Separator for generating path strings.\n   */\n  sep: '\\\\' = '\\\\'\n  /**\n   * Separator for parsing path strings.\n   */\n  splitSep: RegExp = eitherSep\n\n  /**\n   * Do not create new Path objects directly.  They should always be accessed\n   * via the PathScurry class or other methods on the Path class.\n   *\n   * @internal\n   */\n  constructor(\n    name: string,\n    type: number = UNKNOWN,\n    root: PathBase | undefined,\n    roots: { [k: string]: PathBase },\n    nocase: boolean,\n    children: ChildrenCache,\n    opts: PathOpts,\n  ) {\n    super(name, type, root, roots, nocase, children, opts)\n  }\n\n  /**\n   * @internal\n   */\n  newChild(name: string, type: number = UNKNOWN, opts: PathOpts = {}) {\n    return new PathWin32(\n      name,\n      type,\n      this.root,\n      this.roots,\n      this.nocase,\n      this.childrenCache(),\n      opts,\n    )\n  }\n\n  /**\n   * @internal\n   */\n  getRootString(path: string): string {\n    return win32.parse(path).root\n  }\n\n  /**\n   * @internal\n   */\n  getRoot(rootPath: string): PathBase {\n    rootPath = uncToDrive(rootPath.toUpperCase())\n    if (rootPath === this.root.name) {\n      return this.root\n    }\n    // ok, not that one, check if it matches another we know about\n    for (const [compare, root] of Object.entries(this.roots)) {\n      if (this.sameRoot(rootPath, compare)) {\n        return (this.roots[rootPath] = root)\n      }\n    }\n    // otherwise, have to create a new one.\n    return (this.roots[rootPath] = new PathScurryWin32(\n      rootPath,\n      this,\n    ).root)\n  }\n\n  /**\n   * @internal\n   */\n  sameRoot(rootPath: string, compare: string = this.root.name): boolean {\n    // windows can (rarely) have case-sensitive filesystem, but\n    // UNC and drive letters are always case-insensitive, and canonically\n    // represented uppercase.\n    rootPath = rootPath\n      .toUpperCase()\n      .replace(/\\//g, '\\\\')\n      .replace(uncDriveRegexp, '$1\\\\')\n    return rootPath === compare\n  }\n}\n\n/**\n * Path class used on all posix systems.\n *\n * Uses `'/'` as the path separator.\n */\nexport class PathPosix extends PathBase {\n  /**\n   * separator for parsing path strings\n   */\n  splitSep: '/' = '/'\n  /**\n   * separator for generating path strings\n   */\n  sep: '/' = '/'\n\n  /**\n   * Do not create new Path objects directly.  They should always be accessed\n   * via the PathScurry class or other methods on the Path class.\n   *\n   * @internal\n   */\n  constructor(\n    name: string,\n    type: number = UNKNOWN,\n    root: PathBase | undefined,\n    roots: { [k: string]: PathBase },\n    nocase: boolean,\n    children: ChildrenCache,\n    opts: PathOpts,\n  ) {\n    super(name, type, root, roots, nocase, children, opts)\n  }\n\n  /**\n   * @internal\n   */\n  getRootString(path: string): string {\n    return path.startsWith('/') ? '/' : ''\n  }\n\n  /**\n   * @internal\n   */\n  getRoot(_rootPath: string): PathBase {\n    return this.root\n  }\n\n  /**\n   * @internal\n   */\n  newChild(name: string, type: number = UNKNOWN, opts: PathOpts = {}) {\n    return new PathPosix(\n      name,\n      type,\n      this.root,\n      this.roots,\n      this.nocase,\n      this.childrenCache(),\n      opts,\n    )\n  }\n}\n\n/**\n * Options that may be provided to the PathScurry constructor\n */\nexport interface PathScurryOpts {\n  /**\n   * perform case-insensitive path matching. Default based on platform\n   * subclass.\n   */\n  nocase?: boolean\n  /**\n   * Number of Path entries to keep in the cache of Path child references.\n   *\n   * Setting this higher than 65536 will dramatically increase the data\n   * consumption and construction time overhead of each PathScurry.\n   *\n   * Setting this value to 256 or lower will significantly reduce the data\n   * consumption and construction time overhead, but may also reduce resolve()\n   * and readdir() performance on large filesystems.\n   *\n   * Default `16384`.\n   */\n  childrenCacheSize?: number\n  /**\n   * An object that overrides the built-in functions from the fs and\n   * fs/promises modules.\n   *\n   * See {@link FSOption}\n   */\n  fs?: FSOption\n}\n\n/**\n * The base class for all PathScurry classes, providing the interface for path\n * resolution and filesystem operations.\n *\n * Typically, you should *not* instantiate this class directly, but rather one\n * of the platform-specific classes, or the exported {@link PathScurry} which\n * defaults to the current platform.\n */\nexport abstract class PathScurryBase {\n  /**\n   * The root Path entry for the current working directory of this Scurry\n   */\n  root: PathBase\n  /**\n   * The string path for the root of this Scurry's current working directory\n   */\n  rootPath: string\n  /**\n   * A collection of all roots encountered, referenced by rootPath\n   */\n  roots: { [k: string]: PathBase }\n  /**\n   * The Path entry corresponding to this PathScurry's current working directory.\n   */\n  cwd: PathBase\n  #resolveCache: ResolveCache\n  #resolvePosixCache: ResolveCache\n  #children: ChildrenCache\n  /**\n   * Perform path comparisons case-insensitively.\n   *\n   * Defaults true on Darwin and Windows systems, false elsewhere.\n   */\n  nocase: boolean\n\n  /**\n   * The path separator used for parsing paths\n   *\n   * `'/'` on Posix systems, either `'/'` or `'\\\\'` on Windows\n   */\n  abstract sep: string | RegExp\n\n  #fs: FSValue\n\n  /**\n   * This class should not be instantiated directly.\n   *\n   * Use PathScurryWin32, PathScurryDarwin, PathScurryPosix, or PathScurry\n   *\n   * @internal\n   */\n  constructor(\n    cwd: URL | string = process.cwd(),\n    pathImpl: typeof win32 | typeof posix,\n    sep: string | RegExp,\n    {\n      nocase,\n      childrenCacheSize = 16 * 1024,\n      fs = defaultFS,\n    }: PathScurryOpts = {},\n  ) {\n    this.#fs = fsFromOption(fs)\n    if (cwd instanceof URL || cwd.startsWith('file://')) {\n      cwd = fileURLToPath(cwd)\n    }\n    // resolve and split root, and then add to the store.\n    // this is the only time we call path.resolve()\n    const cwdPath = pathImpl.resolve(cwd)\n    this.roots = Object.create(null)\n    this.rootPath = this.parseRootPath(cwdPath)\n    this.#resolveCache = new ResolveCache()\n    this.#resolvePosixCache = new ResolveCache()\n    this.#children = new ChildrenCache(childrenCacheSize)\n\n    const split = cwdPath.substring(this.rootPath.length).split(sep)\n    // resolve('/') leaves '', splits to [''], we don't want that.\n    if (split.length === 1 && !split[0]) {\n      split.pop()\n    }\n    /* c8 ignore start */\n    if (nocase === undefined) {\n      throw new TypeError(\n        'must provide nocase setting to PathScurryBase ctor',\n      )\n    }\n    /* c8 ignore stop */\n    this.nocase = nocase\n    this.root = this.newRoot(this.#fs)\n    this.roots[this.rootPath] = this.root\n    let prev: PathBase = this.root\n    let len = split.length - 1\n    const joinSep = pathImpl.sep\n    let abs = this.rootPath\n    let sawFirst = false\n    for (const part of split) {\n      const l = len--\n      prev = prev.child(part, {\n        relative: new Array(l).fill('..').join(joinSep),\n        relativePosix: new Array(l).fill('..').join('/'),\n        fullpath: (abs += (sawFirst ? '' : joinSep) + part),\n      })\n      sawFirst = true\n    }\n    this.cwd = prev\n  }\n\n  /**\n   * Get the depth of a provided path, string, or the cwd\n   */\n  depth(path: Path | string = this.cwd): number {\n    if (typeof path === 'string') {\n      path = this.cwd.resolve(path)\n    }\n    return path.depth()\n  }\n\n  /**\n   * Parse the root portion of a path string\n   *\n   * @internal\n   */\n  abstract parseRootPath(dir: string): string\n  /**\n   * create a new Path to use as root during construction.\n   *\n   * @internal\n   */\n  abstract newRoot(fs: FSValue): PathBase\n  /**\n   * Determine whether a given path string is absolute\n   */\n  abstract isAbsolute(p: string): boolean\n\n  /**\n   * Return the cache of child entries.  Exposed so subclasses can create\n   * child Path objects in a platform-specific way.\n   *\n   * @internal\n   */\n  childrenCache() {\n    return this.#children\n  }\n\n  /**\n   * Resolve one or more path strings to a resolved string\n   *\n   * Same interface as require('path').resolve.\n   *\n   * Much faster than path.resolve() when called multiple times for the same\n   * path, because the resolved Path objects are cached.  Much slower\n   * otherwise.\n   */\n  resolve(...paths: string[]): string {\n    // first figure out the minimum number of paths we have to test\n    // we always start at cwd, but any absolutes will bump the start\n    let r = ''\n    for (let i = paths.length - 1; i >= 0; i--) {\n      const p = paths[i]\n      if (!p || p === '.') continue\n      r = r ? `${p}/${r}` : p\n      if (this.isAbsolute(p)) {\n        break\n      }\n    }\n    const cached = this.#resolveCache.get(r)\n    if (cached !== undefined) {\n      return cached\n    }\n    const result = this.cwd.resolve(r).fullpath()\n    this.#resolveCache.set(r, result)\n    return result\n  }\n\n  /**\n   * Resolve one or more path strings to a resolved string, returning\n   * the posix path.  Identical to .resolve() on posix systems, but on\n   * windows will return a forward-slash separated UNC path.\n   *\n   * Same interface as require('path').resolve.\n   *\n   * Much faster than path.resolve() when called multiple times for the same\n   * path, because the resolved Path objects are cached.  Much slower\n   * otherwise.\n   */\n  resolvePosix(...paths: string[]): string {\n    // first figure out the minimum number of paths we have to test\n    // we always start at cwd, but any absolutes will bump the start\n    let r = ''\n    for (let i = paths.length - 1; i >= 0; i--) {\n      const p = paths[i]\n      if (!p || p === '.') continue\n      r = r ? `${p}/${r}` : p\n      if (this.isAbsolute(p)) {\n        break\n      }\n    }\n    const cached = this.#resolvePosixCache.get(r)\n    if (cached !== undefined) {\n      return cached\n    }\n    const result = this.cwd.resolve(r).fullpathPosix()\n    this.#resolvePosixCache.set(r, result)\n    return result\n  }\n\n  /**\n   * find the relative path from the cwd to the supplied path string or entry\n   */\n  relative(entry: PathBase | string = this.cwd): string {\n    if (typeof entry === 'string') {\n      entry = this.cwd.resolve(entry)\n    }\n    return entry.relative()\n  }\n\n  /**\n   * find the relative path from the cwd to the supplied path string or\n   * entry, using / as the path delimiter, even on Windows.\n   */\n  relativePosix(entry: PathBase | string = this.cwd): string {\n    if (typeof entry === 'string') {\n      entry = this.cwd.resolve(entry)\n    }\n    return entry.relativePosix()\n  }\n\n  /**\n   * Return the basename for the provided string or Path object\n   */\n  basename(entry: PathBase | string = this.cwd): string {\n    if (typeof entry === 'string') {\n      entry = this.cwd.resolve(entry)\n    }\n    return entry.name\n  }\n\n  /**\n   * Return the dirname for the provided string or Path object\n   */\n  dirname(entry: PathBase | string = this.cwd): string {\n    if (typeof entry === 'string') {\n      entry = this.cwd.resolve(entry)\n    }\n    return (entry.parent || entry).fullpath()\n  }\n\n  /**\n   * Return an array of known child entries.\n   *\n   * First argument may be either a string, or a Path object.\n   *\n   * If the Path cannot or does not contain any children, then an empty array\n   * is returned.\n   *\n   * Results are cached, and thus may be out of date if the filesystem is\n   * mutated.\n   *\n   * Unlike `fs.readdir()`, the `withFileTypes` option defaults to `true`. Set\n   * `{ withFileTypes: false }` to return strings.\n   */\n\n  readdir(): Promise<PathBase[]>\n  readdir(opts: { withFileTypes: true }): Promise<PathBase[]>\n  readdir(opts: { withFileTypes: false }): Promise<string[]>\n  readdir(opts: { withFileTypes: boolean }): Promise<PathBase[] | string[]>\n  readdir(entry: PathBase | string): Promise<PathBase[]>\n  readdir(\n    entry: PathBase | string,\n    opts: { withFileTypes: true },\n  ): Promise<PathBase[]>\n  readdir(\n    entry: PathBase | string,\n    opts: { withFileTypes: false },\n  ): Promise<string[]>\n  readdir(\n    entry: PathBase | string,\n    opts: { withFileTypes: boolean },\n  ): Promise<PathBase[] | string[]>\n  async readdir(\n    entry: PathBase | string | { withFileTypes: boolean } = this.cwd,\n    opts: { withFileTypes: boolean } = {\n      withFileTypes: true,\n    },\n  ): Promise<PathBase[] | string[]> {\n    if (typeof entry === 'string') {\n      entry = this.cwd.resolve(entry)\n    } else if (!(entry instanceof PathBase)) {\n      opts = entry\n      entry = this.cwd\n    }\n    const { withFileTypes } = opts\n    if (!entry.canReaddir()) {\n      return []\n    } else {\n      const p = await entry.readdir()\n      return withFileTypes ? p : p.map(e => e.name)\n    }\n  }\n\n  /**\n   * synchronous {@link PathScurryBase.readdir}\n   */\n  readdirSync(): PathBase[]\n  readdirSync(opts: { withFileTypes: true }): PathBase[]\n  readdirSync(opts: { withFileTypes: false }): string[]\n  readdirSync(opts: { withFileTypes: boolean }): PathBase[] | string[]\n  readdirSync(entry: PathBase | string): PathBase[]\n  readdirSync(\n    entry: PathBase | string,\n    opts: { withFileTypes: true },\n  ): PathBase[]\n  readdirSync(\n    entry: PathBase | string,\n    opts: { withFileTypes: false },\n  ): string[]\n  readdirSync(\n    entry: PathBase | string,\n    opts: { withFileTypes: boolean },\n  ): PathBase[] | string[]\n  readdirSync(\n    entry: PathBase | string | { withFileTypes: boolean } = this.cwd,\n    opts: { withFileTypes: boolean } = {\n      withFileTypes: true,\n    },\n  ): PathBase[] | string[] {\n    if (typeof entry === 'string') {\n      entry = this.cwd.resolve(entry)\n    } else if (!(entry instanceof PathBase)) {\n      opts = entry\n      entry = this.cwd\n    }\n    const { withFileTypes = true } = opts\n    if (!entry.canReaddir()) {\n      return []\n    } else if (withFileTypes) {\n      return entry.readdirSync()\n    } else {\n      return entry.readdirSync().map(e => e.name)\n    }\n  }\n\n  /**\n   * Call lstat() on the string or Path object, and update all known\n   * information that can be determined.\n   *\n   * Note that unlike `fs.lstat()`, the returned value does not contain some\n   * information, such as `mode`, `dev`, `nlink`, and `ino`.  If that\n   * information is required, you will need to call `fs.lstat` yourself.\n   *\n   * If the Path refers to a nonexistent file, or if the lstat call fails for\n   * any reason, `undefined` is returned.  Otherwise the updated Path object is\n   * returned.\n   *\n   * Results are cached, and thus may be out of date if the filesystem is\n   * mutated.\n   */\n  async lstat(\n    entry: string | PathBase = this.cwd,\n  ): Promise<PathBase | undefined> {\n    if (typeof entry === 'string') {\n      entry = this.cwd.resolve(entry)\n    }\n    return entry.lstat()\n  }\n\n  /**\n   * synchronous {@link PathScurryBase.lstat}\n   */\n  lstatSync(entry: string | PathBase = this.cwd): PathBase | undefined {\n    if (typeof entry === 'string') {\n      entry = this.cwd.resolve(entry)\n    }\n    return entry.lstatSync()\n  }\n\n  /**\n   * Return the Path object or string path corresponding to the target of a\n   * symbolic link.\n   *\n   * If the path is not a symbolic link, or if the readlink call fails for any\n   * reason, `undefined` is returned.\n   *\n   * Result is cached, and thus may be outdated if the filesystem is mutated.\n   *\n   * `{withFileTypes}` option defaults to `false`.\n   *\n   * On success, returns a Path object if `withFileTypes` option is true,\n   * otherwise a string.\n   */\n  readlink(): Promise<string | undefined>\n  readlink(opt: { withFileTypes: false }): Promise<string | undefined>\n  readlink(opt: { withFileTypes: true }): Promise<PathBase | undefined>\n  readlink(opt: {\n    withFileTypes: boolean\n  }): Promise<PathBase | string | undefined>\n  readlink(\n    entry: string | PathBase,\n    opt?: { withFileTypes: false },\n  ): Promise<string | undefined>\n  readlink(\n    entry: string | PathBase,\n    opt: { withFileTypes: true },\n  ): Promise<PathBase | undefined>\n  readlink(\n    entry: string | PathBase,\n    opt: { withFileTypes: boolean },\n  ): Promise<string | PathBase | undefined>\n  async readlink(\n    entry: string | PathBase | { withFileTypes: boolean } = this.cwd,\n    { withFileTypes }: { withFileTypes: boolean } = {\n      withFileTypes: false,\n    },\n  ): Promise<string | PathBase | undefined> {\n    if (typeof entry === 'string') {\n      entry = this.cwd.resolve(entry)\n    } else if (!(entry instanceof PathBase)) {\n      withFileTypes = entry.withFileTypes\n      entry = this.cwd\n    }\n    const e = await entry.readlink()\n    return withFileTypes ? e : e?.fullpath()\n  }\n\n  /**\n   * synchronous {@link PathScurryBase.readlink}\n   */\n  readlinkSync(): string | undefined\n  readlinkSync(opt: { withFileTypes: false }): string | undefined\n  readlinkSync(opt: { withFileTypes: true }): PathBase | undefined\n  readlinkSync(opt: {\n    withFileTypes: boolean\n  }): PathBase | string | undefined\n  readlinkSync(\n    entry: string | PathBase,\n    opt?: { withFileTypes: false },\n  ): string | undefined\n  readlinkSync(\n    entry: string | PathBase,\n    opt: { withFileTypes: true },\n  ): PathBase | undefined\n  readlinkSync(\n    entry: string | PathBase,\n    opt: { withFileTypes: boolean },\n  ): string | PathBase | undefined\n  readlinkSync(\n    entry: string | PathBase | { withFileTypes: boolean } = this.cwd,\n    { withFileTypes }: { withFileTypes: boolean } = {\n      withFileTypes: false,\n    },\n  ): string | PathBase | undefined {\n    if (typeof entry === 'string') {\n      entry = this.cwd.resolve(entry)\n    } else if (!(entry instanceof PathBase)) {\n      withFileTypes = entry.withFileTypes\n      entry = this.cwd\n    }\n    const e = entry.readlinkSync()\n    return withFileTypes ? e : e?.fullpath()\n  }\n\n  /**\n   * Return the Path object or string path corresponding to path as resolved\n   * by realpath(3).\n   *\n   * If the realpath call fails for any reason, `undefined` is returned.\n   *\n   * Result is cached, and thus may be outdated if the filesystem is mutated.\n   *\n   * `{withFileTypes}` option defaults to `false`.\n   *\n   * On success, returns a Path object if `withFileTypes` option is true,\n   * otherwise a string.\n   */\n  realpath(): Promise<string | undefined>\n  realpath(opt: { withFileTypes: false }): Promise<string | undefined>\n  realpath(opt: { withFileTypes: true }): Promise<PathBase | undefined>\n  realpath(opt: {\n    withFileTypes: boolean\n  }): Promise<PathBase | string | undefined>\n  realpath(\n    entry: string | PathBase,\n    opt?: { withFileTypes: false },\n  ): Promise<string | undefined>\n  realpath(\n    entry: string | PathBase,\n    opt: { withFileTypes: true },\n  ): Promise<PathBase | undefined>\n  realpath(\n    entry: string | PathBase,\n    opt: { withFileTypes: boolean },\n  ): Promise<string | PathBase | undefined>\n  async realpath(\n    entry: string | PathBase | { withFileTypes: boolean } = this.cwd,\n    { withFileTypes }: { withFileTypes: boolean } = {\n      withFileTypes: false,\n    },\n  ): Promise<string | PathBase | undefined> {\n    if (typeof entry === 'string') {\n      entry = this.cwd.resolve(entry)\n    } else if (!(entry instanceof PathBase)) {\n      withFileTypes = entry.withFileTypes\n      entry = this.cwd\n    }\n    const e = await entry.realpath()\n    return withFileTypes ? e : e?.fullpath()\n  }\n\n  realpathSync(): string | undefined\n  realpathSync(opt: { withFileTypes: false }): string | undefined\n  realpathSync(opt: { withFileTypes: true }): PathBase | undefined\n  realpathSync(opt: {\n    withFileTypes: boolean\n  }): PathBase | string | undefined\n  realpathSync(\n    entry: string | PathBase,\n    opt?: { withFileTypes: false },\n  ): string | undefined\n  realpathSync(\n    entry: string | PathBase,\n    opt: { withFileTypes: true },\n  ): PathBase | undefined\n  realpathSync(\n    entry: string | PathBase,\n    opt: { withFileTypes: boolean },\n  ): string | PathBase | undefined\n  realpathSync(\n    entry: string | PathBase | { withFileTypes: boolean } = this.cwd,\n    { withFileTypes }: { withFileTypes: boolean } = {\n      withFileTypes: false,\n    },\n  ): string | PathBase | undefined {\n    if (typeof entry === 'string') {\n      entry = this.cwd.resolve(entry)\n    } else if (!(entry instanceof PathBase)) {\n      withFileTypes = entry.withFileTypes\n      entry = this.cwd\n    }\n    const e = entry.realpathSync()\n    return withFileTypes ? e : e?.fullpath()\n  }\n\n  /**\n   * Asynchronously walk the directory tree, returning an array of\n   * all path strings or Path objects found.\n   *\n   * Note that this will be extremely memory-hungry on large filesystems.\n   * In such cases, it may be better to use the stream or async iterator\n   * walk implementation.\n   */\n  walk(): Promise<PathBase[]>\n  walk(\n    opts: WalkOptionsWithFileTypesTrue | WalkOptionsWithFileTypesUnset,\n  ): Promise<PathBase[]>\n  walk(opts: WalkOptionsWithFileTypesFalse): Promise<string[]>\n  walk(opts: WalkOptions): Promise<string[] | PathBase[]>\n  walk(entry: string | PathBase): Promise<PathBase[]>\n  walk(\n    entry: string | PathBase,\n    opts: WalkOptionsWithFileTypesTrue | WalkOptionsWithFileTypesUnset,\n  ): Promise<PathBase[]>\n  walk(\n    entry: string | PathBase,\n    opts: WalkOptionsWithFileTypesFalse,\n  ): Promise<string[]>\n  walk(\n    entry: string | PathBase,\n    opts: WalkOptions,\n  ): Promise<PathBase[] | string[]>\n  async walk(\n    entry: string | PathBase | WalkOptions = this.cwd,\n    opts: WalkOptions = {},\n  ): Promise<PathBase[] | string[]> {\n    if (typeof entry === 'string') {\n      entry = this.cwd.resolve(entry)\n    } else if (!(entry instanceof PathBase)) {\n      opts = entry\n      entry = this.cwd\n    }\n    const {\n      withFileTypes = true,\n      follow = false,\n      filter,\n      walkFilter,\n    } = opts\n    const results: (string | PathBase)[] = []\n    if (!filter || filter(entry)) {\n      results.push(withFileTypes ? entry : entry.fullpath())\n    }\n    const dirs = new Set<PathBase>()\n    const walk = (\n      dir: PathBase,\n      cb: (er?: NodeJS.ErrnoException) => void,\n    ) => {\n      dirs.add(dir)\n      dir.readdirCB((er, entries) => {\n        /* c8 ignore start */\n        if (er) {\n          return cb(er)\n        }\n        /* c8 ignore stop */\n        let len = entries.length\n        if (!len) return cb()\n        const next = () => {\n          if (--len === 0) {\n            cb()\n          }\n        }\n        for (const e of entries) {\n          if (!filter || filter(e)) {\n            results.push(withFileTypes ? e : e.fullpath())\n          }\n          if (follow && e.isSymbolicLink()) {\n            e.realpath()\n              .then(r => (r?.isUnknown() ? r.lstat() : r))\n              .then(r =>\n                r?.shouldWalk(dirs, walkFilter) ? walk(r, next) : next(),\n              )\n          } else {\n            if (e.shouldWalk(dirs, walkFilter)) {\n              walk(e, next)\n            } else {\n              next()\n            }\n          }\n        }\n      }, true) // zalgooooooo\n    }\n\n    const start = entry\n    return new Promise<PathBase[] | string[]>((res, rej) => {\n      walk(start, er => {\n        /* c8 ignore start */\n        if (er) return rej(er)\n        /* c8 ignore stop */\n        res(results as PathBase[] | string[])\n      })\n    })\n  }\n\n  /**\n   * Synchronously walk the directory tree, returning an array of\n   * all path strings or Path objects found.\n   *\n   * Note that this will be extremely memory-hungry on large filesystems.\n   * In such cases, it may be better to use the stream or async iterator\n   * walk implementation.\n   */\n  walkSync(): PathBase[]\n  walkSync(\n    opts: WalkOptionsWithFileTypesTrue | WalkOptionsWithFileTypesUnset,\n  ): PathBase[]\n  walkSync(opts: WalkOptionsWithFileTypesFalse): string[]\n  walkSync(opts: WalkOptions): string[] | PathBase[]\n  walkSync(entry: string | PathBase): PathBase[]\n  walkSync(\n    entry: string | PathBase,\n    opts: WalkOptionsWithFileTypesUnset | WalkOptionsWithFileTypesTrue,\n  ): PathBase[]\n  walkSync(\n    entry: string | PathBase,\n    opts: WalkOptionsWithFileTypesFalse,\n  ): string[]\n  walkSync(\n    entry: string | PathBase,\n    opts: WalkOptions,\n  ): PathBase[] | string[]\n  walkSync(\n    entry: string | PathBase | WalkOptions = this.cwd,\n    opts: WalkOptions = {},\n  ): PathBase[] | string[] {\n    if (typeof entry === 'string') {\n      entry = this.cwd.resolve(entry)\n    } else if (!(entry instanceof PathBase)) {\n      opts = entry\n      entry = this.cwd\n    }\n    const {\n      withFileTypes = true,\n      follow = false,\n      filter,\n      walkFilter,\n    } = opts\n    const results: (string | PathBase)[] = []\n    if (!filter || filter(entry)) {\n      results.push(withFileTypes ? entry : entry.fullpath())\n    }\n    const dirs = new Set<PathBase>([entry])\n    for (const dir of dirs) {\n      const entries = dir.readdirSync()\n      for (const e of entries) {\n        if (!filter || filter(e)) {\n          results.push(withFileTypes ? e : e.fullpath())\n        }\n        let r: PathBase | undefined = e\n        if (e.isSymbolicLink()) {\n          if (!(follow && (r = e.realpathSync()))) continue\n          if (r.isUnknown()) r.lstatSync()\n        }\n        if (r.shouldWalk(dirs, walkFilter)) {\n          dirs.add(r)\n        }\n      }\n    }\n    return results as string[] | PathBase[]\n  }\n\n  /**\n   * Support for `for await`\n   *\n   * Alias for {@link PathScurryBase.iterate}\n   *\n   * Note: As of Node 19, this is very slow, compared to other methods of\n   * walking.  Consider using {@link PathScurryBase.stream} if memory overhead\n   * and backpressure are concerns, or {@link PathScurryBase.walk} if not.\n   */\n  [Symbol.asyncIterator]() {\n    return this.iterate()\n  }\n\n  /**\n   * Async generator form of {@link PathScurryBase.walk}\n   *\n   * Note: As of Node 19, this is very slow, compared to other methods of\n   * walking, especially if most/all of the directory tree has been previously\n   * walked.  Consider using {@link PathScurryBase.stream} if memory overhead\n   * and backpressure are concerns, or {@link PathScurryBase.walk} if not.\n   */\n  iterate(): AsyncGenerator<PathBase, void, void>\n  iterate(\n    opts: WalkOptionsWithFileTypesTrue | WalkOptionsWithFileTypesUnset,\n  ): AsyncGenerator<PathBase, void, void>\n  iterate(\n    opts: WalkOptionsWithFileTypesFalse,\n  ): AsyncGenerator<string, void, void>\n  iterate(opts: WalkOptions): AsyncGenerator<string | PathBase, void, void>\n  iterate(entry: string | PathBase): AsyncGenerator<PathBase, void, void>\n  iterate(\n    entry: string | PathBase,\n    opts: WalkOptionsWithFileTypesTrue | WalkOptionsWithFileTypesUnset,\n  ): AsyncGenerator<PathBase, void, void>\n  iterate(\n    entry: string | PathBase,\n    opts: WalkOptionsWithFileTypesFalse,\n  ): AsyncGenerator<string, void, void>\n  iterate(\n    entry: string | PathBase,\n    opts: WalkOptions,\n  ): AsyncGenerator<PathBase | string, void, void>\n  iterate(\n    entry: string | PathBase | WalkOptions = this.cwd,\n    options: WalkOptions = {},\n  ): AsyncGenerator<PathBase | string, void, void> {\n    // iterating async over the stream is significantly more performant,\n    // especially in the warm-cache scenario, because it buffers up directory\n    // entries in the background instead of waiting for a yield for each one.\n    if (typeof entry === 'string') {\n      entry = this.cwd.resolve(entry)\n    } else if (!(entry instanceof PathBase)) {\n      options = entry\n      entry = this.cwd\n    }\n    return this.stream(entry, options)[Symbol.asyncIterator]()\n  }\n\n  /**\n   * Iterating over a PathScurry performs a synchronous walk.\n   *\n   * Alias for {@link PathScurryBase.iterateSync}\n   */\n  [Symbol.iterator]() {\n    return this.iterateSync()\n  }\n\n  iterateSync(): Generator<PathBase, void, void>\n  iterateSync(\n    opts: WalkOptionsWithFileTypesTrue | WalkOptionsWithFileTypesUnset,\n  ): Generator<PathBase, void, void>\n  iterateSync(\n    opts: WalkOptionsWithFileTypesFalse,\n  ): Generator<string, void, void>\n  iterateSync(opts: WalkOptions): Generator<string | PathBase, void, void>\n  iterateSync(entry: string | PathBase): Generator<PathBase, void, void>\n  iterateSync(\n    entry: string | PathBase,\n    opts: WalkOptionsWithFileTypesTrue | WalkOptionsWithFileTypesUnset,\n  ): Generator<PathBase, void, void>\n  iterateSync(\n    entry: string | PathBase,\n    opts: WalkOptionsWithFileTypesFalse,\n  ): Generator<string, void, void>\n  iterateSync(\n    entry: string | PathBase,\n    opts: WalkOptions,\n  ): Generator<PathBase | string, void, void>\n  *iterateSync(\n    entry: string | PathBase | WalkOptions = this.cwd,\n    opts: WalkOptions = {},\n  ): Generator<PathBase | string, void, void> {\n    if (typeof entry === 'string') {\n      entry = this.cwd.resolve(entry)\n    } else if (!(entry instanceof PathBase)) {\n      opts = entry\n      entry = this.cwd\n    }\n    const {\n      withFileTypes = true,\n      follow = false,\n      filter,\n      walkFilter,\n    } = opts\n    if (!filter || filter(entry)) {\n      yield withFileTypes ? entry : entry.fullpath()\n    }\n    const dirs = new Set<PathBase>([entry])\n    for (const dir of dirs) {\n      const entries = dir.readdirSync()\n      for (const e of entries) {\n        if (!filter || filter(e)) {\n          yield withFileTypes ? e : e.fullpath()\n        }\n        let r: PathBase | undefined = e\n        if (e.isSymbolicLink()) {\n          if (!(follow && (r = e.realpathSync()))) continue\n          if (r.isUnknown()) r.lstatSync()\n        }\n        if (r.shouldWalk(dirs, walkFilter)) {\n          dirs.add(r)\n        }\n      }\n    }\n  }\n\n  /**\n   * Stream form of {@link PathScurryBase.walk}\n   *\n   * Returns a Minipass stream that emits {@link PathBase} objects by default,\n   * or strings if `{ withFileTypes: false }` is set in the options.\n   */\n  stream(): Minipass<PathBase>\n  stream(\n    opts: WalkOptionsWithFileTypesTrue | WalkOptionsWithFileTypesUnset,\n  ): Minipass<PathBase>\n  stream(opts: WalkOptionsWithFileTypesFalse): Minipass<string>\n  stream(opts: WalkOptions): Minipass<string | PathBase>\n  stream(entry: string | PathBase): Minipass<PathBase>\n  stream(\n    entry: string | PathBase,\n    opts: WalkOptionsWithFileTypesUnset | WalkOptionsWithFileTypesTrue,\n  ): Minipass<PathBase>\n  stream(\n    entry: string | PathBase,\n    opts: WalkOptionsWithFileTypesFalse,\n  ): Minipass<string>\n  stream(\n    entry: string | PathBase,\n    opts: WalkOptions,\n  ): Minipass<string> | Minipass<PathBase>\n  stream(\n    entry: string | PathBase | WalkOptions = this.cwd,\n    opts: WalkOptions = {},\n  ): Minipass<string> | Minipass<PathBase> {\n    if (typeof entry === 'string') {\n      entry = this.cwd.resolve(entry)\n    } else if (!(entry instanceof PathBase)) {\n      opts = entry\n      entry = this.cwd\n    }\n    const {\n      withFileTypes = true,\n      follow = false,\n      filter,\n      walkFilter,\n    } = opts\n    const results = new Minipass<string | PathBase>({ objectMode: true })\n    if (!filter || filter(entry)) {\n      results.write(withFileTypes ? entry : entry.fullpath())\n    }\n    const dirs = new Set<PathBase>()\n    const queue: PathBase[] = [entry]\n    let processing = 0\n    const process = () => {\n      let paused = false\n      while (!paused) {\n        const dir = queue.shift()\n        if (!dir) {\n          if (processing === 0) results.end()\n          return\n        }\n\n        processing++\n        dirs.add(dir)\n\n        const onReaddir = (\n          er: null | NodeJS.ErrnoException,\n          entries: PathBase[],\n          didRealpaths: boolean = false,\n        ) => {\n          /* c8 ignore start */\n          if (er) return results.emit('error', er)\n          /* c8 ignore stop */\n          if (follow && !didRealpaths) {\n            const promises: Promise<PathBase | undefined>[] = []\n            for (const e of entries) {\n              if (e.isSymbolicLink()) {\n                promises.push(\n                  e\n                    .realpath()\n                    .then((r: PathBase | undefined) =>\n                      r?.isUnknown() ? r.lstat() : r,\n                    ),\n                )\n              }\n            }\n            if (promises.length) {\n              Promise.all(promises).then(() =>\n                onReaddir(null, entries, true),\n              )\n              return\n            }\n          }\n\n          for (const e of entries) {\n            if (e && (!filter || filter(e))) {\n              if (!results.write(withFileTypes ? e : e.fullpath())) {\n                paused = true\n              }\n            }\n          }\n\n          processing--\n          for (const e of entries) {\n            const r = e.realpathCached() || e\n            if (r.shouldWalk(dirs, walkFilter)) {\n              queue.push(r)\n            }\n          }\n          if (paused && !results.flowing) {\n            results.once('drain', process)\n          } else if (!sync) {\n            process()\n          }\n        }\n\n        // zalgo containment\n        let sync = true\n        dir.readdirCB(onReaddir, true)\n        sync = false\n      }\n    }\n    process()\n    return results as Minipass<string> | Minipass<PathBase>\n  }\n\n  /**\n   * Synchronous form of {@link PathScurryBase.stream}\n   *\n   * Returns a Minipass stream that emits {@link PathBase} objects by default,\n   * or strings if `{ withFileTypes: false }` is set in the options.\n   *\n   * Will complete the walk in a single tick if the stream is consumed fully.\n   * Otherwise, will pause as needed for stream backpressure.\n   */\n  streamSync(): Minipass<PathBase>\n  streamSync(\n    opts: WalkOptionsWithFileTypesTrue | WalkOptionsWithFileTypesUnset,\n  ): Minipass<PathBase>\n  streamSync(opts: WalkOptionsWithFileTypesFalse): Minipass<string>\n  streamSync(opts: WalkOptions): Minipass<string | PathBase>\n  streamSync(entry: string | PathBase): Minipass<PathBase>\n  streamSync(\n    entry: string | PathBase,\n    opts: WalkOptionsWithFileTypesUnset | WalkOptionsWithFileTypesTrue,\n  ): Minipass<PathBase>\n  streamSync(\n    entry: string | PathBase,\n    opts: WalkOptionsWithFileTypesFalse,\n  ): Minipass<string>\n  streamSync(\n    entry: string | PathBase,\n    opts: WalkOptions,\n  ): Minipass<string> | Minipass<PathBase>\n  streamSync(\n    entry: string | PathBase | WalkOptions = this.cwd,\n    opts: WalkOptions = {},\n  ): Minipass<string> | Minipass<PathBase> {\n    if (typeof entry === 'string') {\n      entry = this.cwd.resolve(entry)\n    } else if (!(entry instanceof PathBase)) {\n      opts = entry\n      entry = this.cwd\n    }\n    const {\n      withFileTypes = true,\n      follow = false,\n      filter,\n      walkFilter,\n    } = opts\n    const results = new Minipass<string | PathBase>({ objectMode: true })\n    const dirs = new Set<PathBase>()\n    if (!filter || filter(entry)) {\n      results.write(withFileTypes ? entry : entry.fullpath())\n    }\n    const queue: PathBase[] = [entry]\n    let processing = 0\n    const process = () => {\n      let paused = false\n      while (!paused) {\n        const dir = queue.shift()\n        if (!dir) {\n          if (processing === 0) results.end()\n          return\n        }\n        processing++\n        dirs.add(dir)\n\n        const entries = dir.readdirSync()\n        for (const e of entries) {\n          if (!filter || filter(e)) {\n            if (!results.write(withFileTypes ? e : e.fullpath())) {\n              paused = true\n            }\n          }\n        }\n        processing--\n        for (const e of entries) {\n          let r: PathBase | undefined = e\n          if (e.isSymbolicLink()) {\n            if (!(follow && (r = e.realpathSync()))) continue\n            if (r.isUnknown()) r.lstatSync()\n          }\n          if (r.shouldWalk(dirs, walkFilter)) {\n            queue.push(r)\n          }\n        }\n      }\n      if (paused && !results.flowing) results.once('drain', process)\n    }\n    process()\n    return results as Minipass<string> | Minipass<PathBase>\n  }\n\n  chdir(path: string | Path = this.cwd) {\n    const oldCwd = this.cwd\n    this.cwd = typeof path === 'string' ? this.cwd.resolve(path) : path\n    this.cwd[setAsCwd](oldCwd)\n  }\n}\n\n/**\n * Options provided to all walk methods.\n */\nexport interface WalkOptions {\n  /**\n   * Return results as {@link PathBase} objects rather than strings.\n   * When set to false, results are fully resolved paths, as returned by\n   * {@link PathBase.fullpath}.\n   * @default true\n   */\n  withFileTypes?: boolean\n\n  /**\n   *  Attempt to read directory entries from symbolic links. Otherwise, only\n   *  actual directories are traversed. Regardless of this setting, a given\n   *  target path will only ever be walked once, meaning that a symbolic link\n   *  to a previously traversed directory will never be followed.\n   *\n   *  Setting this imposes a slight performance penalty, because `readlink`\n   *  must be called on all symbolic links encountered, in order to avoid\n   *  infinite cycles.\n   * @default false\n   */\n  follow?: boolean\n\n  /**\n   * Only return entries where the provided function returns true.\n   *\n   * This will not prevent directories from being traversed, even if they do\n   * not pass the filter, though it will prevent directories themselves from\n   * being included in the result set.  See {@link walkFilter}\n   *\n   * Asynchronous functions are not supported here.\n   *\n   * By default, if no filter is provided, all entries and traversed\n   * directories are included.\n   */\n  filter?: (entry: PathBase) => boolean\n\n  /**\n   * Only traverse directories (and in the case of {@link follow} being set to\n   * true, symbolic links to directories) if the provided function returns\n   * true.\n   *\n   * This will not prevent directories from being included in the result set,\n   * even if they do not pass the supplied filter function.  See {@link filter}\n   * to do that.\n   *\n   * Asynchronous functions are not supported here.\n   */\n  walkFilter?: (entry: PathBase) => boolean\n}\n\nexport type WalkOptionsWithFileTypesUnset = WalkOptions & {\n  withFileTypes?: undefined\n}\nexport type WalkOptionsWithFileTypesTrue = WalkOptions & {\n  withFileTypes: true\n}\nexport type WalkOptionsWithFileTypesFalse = WalkOptions & {\n  withFileTypes: false\n}\n\n/**\n * Windows implementation of {@link PathScurryBase}\n *\n * Defaults to case insensitve, uses `'\\\\'` to generate path strings.  Uses\n * {@link PathWin32} for Path objects.\n */\nexport class PathScurryWin32 extends PathScurryBase {\n  /**\n   * separator for generating path strings\n   */\n  sep: '\\\\' = '\\\\'\n\n  constructor(\n    cwd: URL | string = process.cwd(),\n    opts: PathScurryOpts = {},\n  ) {\n    const { nocase = true } = opts\n    super(cwd, win32, '\\\\', { ...opts, nocase })\n    this.nocase = nocase\n    for (let p: PathBase | undefined = this.cwd; p; p = p.parent) {\n      p.nocase = this.nocase\n    }\n  }\n\n  /**\n   * @internal\n   */\n  parseRootPath(dir: string): string {\n    // if the path starts with a single separator, it's not a UNC, and we'll\n    // just get separator as the root, and driveFromUNC will return \\\n    // In that case, mount \\ on the root from the cwd.\n    return win32.parse(dir).root.toUpperCase()\n  }\n\n  /**\n   * @internal\n   */\n  newRoot(fs: FSValue) {\n    return new PathWin32(\n      this.rootPath,\n      IFDIR,\n      undefined,\n      this.roots,\n      this.nocase,\n      this.childrenCache(),\n      { fs },\n    )\n  }\n\n  /**\n   * Return true if the provided path string is an absolute path\n   */\n  isAbsolute(p: string): boolean {\n    return (\n      p.startsWith('/') || p.startsWith('\\\\') || /^[a-z]:(\\/|\\\\)/i.test(p)\n    )\n  }\n}\n\n/**\n * {@link PathScurryBase} implementation for all posix systems other than Darwin.\n *\n * Defaults to case-sensitive matching, uses `'/'` to generate path strings.\n *\n * Uses {@link PathPosix} for Path objects.\n */\nexport class PathScurryPosix extends PathScurryBase {\n  /**\n   * separator for generating path strings\n   */\n  sep: '/' = '/'\n  constructor(\n    cwd: URL | string = process.cwd(),\n    opts: PathScurryOpts = {},\n  ) {\n    const { nocase = false } = opts\n    super(cwd, posix, '/', { ...opts, nocase })\n    this.nocase = nocase\n  }\n\n  /**\n   * @internal\n   */\n  parseRootPath(_dir: string): string {\n    return '/'\n  }\n\n  /**\n   * @internal\n   */\n  newRoot(fs: FSValue) {\n    return new PathPosix(\n      this.rootPath,\n      IFDIR,\n      undefined,\n      this.roots,\n      this.nocase,\n      this.childrenCache(),\n      { fs },\n    )\n  }\n\n  /**\n   * Return true if the provided path string is an absolute path\n   */\n  isAbsolute(p: string): boolean {\n    return p.startsWith('/')\n  }\n}\n\n/**\n * {@link PathScurryBase} implementation for Darwin (macOS) systems.\n *\n * Defaults to case-insensitive matching, uses `'/'` for generating path\n * strings.\n *\n * Uses {@link PathPosix} for Path objects.\n */\nexport class PathScurryDarwin extends PathScurryPosix {\n  constructor(\n    cwd: URL | string = process.cwd(),\n    opts: PathScurryOpts = {},\n  ) {\n    const { nocase = true } = opts\n    super(cwd, { ...opts, nocase })\n  }\n}\n\n/**\n * Default {@link PathBase} implementation for the current platform.\n *\n * {@link PathWin32} on Windows systems, {@link PathPosix} on all others.\n */\nexport const Path = process.platform === 'win32' ? PathWin32 : PathPosix\nexport type Path = PathBase | InstanceType<typeof Path>\n\n/**\n * Default {@link PathScurryBase} implementation for the current platform.\n *\n * {@link PathScurryWin32} on Windows systems, {@link PathScurryDarwin} on\n * Darwin (macOS) systems, {@link PathScurryPosix} on all others.\n */\nexport const PathScurry:\n  | typeof PathScurryWin32\n  | typeof PathScurryDarwin\n  | typeof PathScurryPosix =\n  process.platform === 'win32' ? PathScurryWin32\n  : process.platform === 'darwin' ? PathScurryDarwin\n  : PathScurryPosix\nexport type PathScurry = PathScurryBase | InstanceType<typeof PathScurry>\n", "// this is just a very light wrapper around 2 arrays with an offset index\n\nimport { GLOBSTAR } from 'minimatch'\nexport type MMPattern = string | RegExp | typeof GLOBSTAR\n\n// an array of length >= 1\nexport type PatternList = [p: MMPattern, ...rest: MMPattern[]]\nexport type UNCPatternList = [\n  p0: '',\n  p1: '',\n  p2: string,\n  p3: string,\n  ...rest: MMPattern[],\n]\nexport type DrivePatternList = [p0: string, ...rest: MMPattern[]]\nexport type AbsolutePatternList = [p0: '', ...rest: MMPattern[]]\nexport type GlobList = [p: string, ...rest: string[]]\n\nconst isPatternList = (pl: MMPattern[]): pl is PatternList =>\n  pl.length >= 1\nconst isGlobList = (gl: string[]): gl is GlobList => gl.length >= 1\n\n/**\n * An immutable-ish view on an array of glob parts and their parsed\n * results\n */\nexport class Pattern {\n  readonly #patternList: PatternList\n  readonly #globList: GlobList\n  readonly #index: number\n  readonly length: number\n  readonly #platform: NodeJS.Platform\n  #rest?: Pattern | null\n  #globString?: string\n  #isDrive?: boolean\n  #isUNC?: boolean\n  #isAbsolute?: boolean\n  #followGlobstar: boolean = true\n\n  constructor(\n    patternList: MMPattern[],\n    globList: string[],\n    index: number,\n    platform: NodeJS.Platform,\n  ) {\n    if (!isPatternList(patternList)) {\n      throw new TypeError('empty pattern list')\n    }\n    if (!isGlobList(globList)) {\n      throw new TypeError('empty glob list')\n    }\n    if (globList.length !== patternList.length) {\n      throw new TypeError('mismatched pattern list and glob list lengths')\n    }\n    this.length = patternList.length\n    if (index < 0 || index >= this.length) {\n      throw new TypeError('index out of range')\n    }\n    this.#patternList = patternList\n    this.#globList = globList\n    this.#index = index\n    this.#platform = platform\n\n    // normalize root entries of absolute patterns on initial creation.\n    if (this.#index === 0) {\n      // c: => ['c:/']\n      // C:/ => ['C:/']\n      // C:/x => ['C:/', 'x']\n      // //host/share => ['//host/share/']\n      // //host/share/ => ['//host/share/']\n      // //host/share/x => ['//host/share/', 'x']\n      // /etc => ['/', 'etc']\n      // / => ['/']\n      if (this.isUNC()) {\n        // '' / '' / 'host' / 'share'\n        const [p0, p1, p2, p3, ...prest] = this.#patternList\n        const [g0, g1, g2, g3, ...grest] = this.#globList\n        if (prest[0] === '') {\n          // ends in /\n          prest.shift()\n          grest.shift()\n        }\n        const p = [p0, p1, p2, p3, ''].join('/')\n        const g = [g0, g1, g2, g3, ''].join('/')\n        this.#patternList = [p, ...prest]\n        this.#globList = [g, ...grest]\n        this.length = this.#patternList.length\n      } else if (this.isDrive() || this.isAbsolute()) {\n        const [p1, ...prest] = this.#patternList\n        const [g1, ...grest] = this.#globList\n        if (prest[0] === '') {\n          // ends in /\n          prest.shift()\n          grest.shift()\n        }\n        const p = (p1 as string) + '/'\n        const g = g1 + '/'\n        this.#patternList = [p, ...prest]\n        this.#globList = [g, ...grest]\n        this.length = this.#patternList.length\n      }\n    }\n  }\n\n  /**\n   * The first entry in the parsed list of patterns\n   */\n  pattern(): MMPattern {\n    return this.#patternList[this.#index] as MMPattern\n  }\n\n  /**\n   * true of if pattern() returns a string\n   */\n  isString(): boolean {\n    return typeof this.#patternList[this.#index] === 'string'\n  }\n  /**\n   * true of if pattern() returns GLOBSTAR\n   */\n  isGlobstar(): boolean {\n    return this.#patternList[this.#index] === GLOBSTAR\n  }\n  /**\n   * true if pattern() returns a regexp\n   */\n  isRegExp(): boolean {\n    return this.#patternList[this.#index] instanceof RegExp\n  }\n\n  /**\n   * The /-joined set of glob parts that make up this pattern\n   */\n  globString(): string {\n    return (this.#globString =\n      this.#globString ||\n      (this.#index === 0 ?\n        this.isAbsolute() ?\n          this.#globList[0] + this.#globList.slice(1).join('/')\n        : this.#globList.join('/')\n      : this.#globList.slice(this.#index).join('/')))\n  }\n\n  /**\n   * true if there are more pattern parts after this one\n   */\n  hasMore(): boolean {\n    return this.length > this.#index + 1\n  }\n\n  /**\n   * The rest of the pattern after this part, or null if this is the end\n   */\n  rest(): Pattern | null {\n    if (this.#rest !== undefined) return this.#rest\n    if (!this.hasMore()) return (this.#rest = null)\n    this.#rest = new Pattern(\n      this.#patternList,\n      this.#globList,\n      this.#index + 1,\n      this.#platform,\n    )\n    this.#rest.#isAbsolute = this.#isAbsolute\n    this.#rest.#isUNC = this.#isUNC\n    this.#rest.#isDrive = this.#isDrive\n    return this.#rest\n  }\n\n  /**\n   * true if the pattern represents a //unc/path/ on windows\n   */\n  isUNC(): boolean {\n    const pl = this.#patternList\n    return this.#isUNC !== undefined ?\n        this.#isUNC\n      : (this.#isUNC =\n          this.#platform === 'win32' &&\n          this.#index === 0 &&\n          pl[0] === '' &&\n          pl[1] === '' &&\n          typeof pl[2] === 'string' &&\n          !!pl[2] &&\n          typeof pl[3] === 'string' &&\n          !!pl[3])\n  }\n\n  // pattern like C:/...\n  // split = ['C:', ...]\n  // XXX: would be nice to handle patterns like `c:*` to test the cwd\n  // in c: for *, but I don't know of a way to even figure out what that\n  // cwd is without actually chdir'ing into it?\n  /**\n   * True if the pattern starts with a drive letter on Windows\n   */\n  isDrive(): boolean {\n    const pl = this.#patternList\n    return this.#isDrive !== undefined ?\n        this.#isDrive\n      : (this.#isDrive =\n          this.#platform === 'win32' &&\n          this.#index === 0 &&\n          this.length > 1 &&\n          typeof pl[0] === 'string' &&\n          /^[a-z]:$/i.test(pl[0]))\n  }\n\n  // pattern = '/' or '/...' or '/x/...'\n  // split = ['', ''] or ['', ...] or ['', 'x', ...]\n  // Drive and UNC both considered absolute on windows\n  /**\n   * True if the pattern is rooted on an absolute path\n   */\n  isAbsolute(): boolean {\n    const pl = this.#patternList\n    return this.#isAbsolute !== undefined ?\n        this.#isAbsolute\n      : (this.#isAbsolute =\n          (pl[0] === '' && pl.length > 1) ||\n          this.isDrive() ||\n          this.isUNC())\n  }\n\n  /**\n   * consume the root of the pattern, and return it\n   */\n  root(): string {\n    const p = this.#patternList[0]\n    return (\n        typeof p === 'string' && this.isAbsolute() && this.#index === 0\n      ) ?\n        p\n      : ''\n  }\n\n  /**\n   * Check to see if the current globstar pattern is allowed to follow\n   * a symbolic link.\n   */\n  checkFollowGlobstar(): boolean {\n    return !(\n      this.#index === 0 ||\n      !this.isGlobstar() ||\n      !this.#followGlobstar\n    )\n  }\n\n  /**\n   * Mark that the current globstar pattern is following a symbolic link\n   */\n  markFollowGlobstar(): boolean {\n    if (this.#index === 0 || !this.isGlobstar() || !this.#followGlobstar)\n      return false\n    this.#followGlobstar = false\n    return true\n  }\n}\n", "const proc =\n  typeof process === 'object' && process\n    ? process\n    : {\n        stdout: null,\n        stderr: null,\n      }\nimport { EventEmitter } from 'node:events'\nimport Stream from 'node:stream'\nimport { StringDecoder } from 'node:string_decoder'\n\n/**\n * Same as StringDecoder, but exposing the `lastNeed` flag on the type\n */\ntype SD = StringDecoder & { lastNeed: boolean }\n\nexport type { SD, Pipe, PipeProxyErrors }\n\n/**\n * Return true if the argument is a Minipass stream, Node stream, or something\n * else that Minipass can interact with.\n */\nexport const isStream = (\n  s: any\n): s is Minipass.Readable | Minipass.Writable =>\n  !!s &&\n  typeof s === 'object' &&\n  (s instanceof Minipass ||\n    s instanceof Stream ||\n    isReadable(s) ||\n    isWritable(s))\n\n/**\n * Return true if the argument is a valid {@link Minipass.Readable}\n */\nexport const isReadable = (s: any): s is Minipass.Readable =>\n  !!s &&\n  typeof s === 'object' &&\n  s instanceof EventEmitter &&\n  typeof (s as Minipass.Readable).pipe === 'function' &&\n  // node core Writable streams have a pipe() method, but it throws\n  (s as Minipass.Readable).pipe !== Stream.Writable.prototype.pipe\n\n/**\n * Return true if the argument is a valid {@link Minipass.Writable}\n */\nexport const isWritable = (s: any): s is Minipass.Readable =>\n  !!s &&\n  typeof s === 'object' &&\n  s instanceof EventEmitter &&\n  typeof (s as Minipass.Writable).write === 'function' &&\n  typeof (s as Minipass.Writable).end === 'function'\n\nconst EOF = Symbol('EOF')\nconst MAYBE_EMIT_END = Symbol('maybeEmitEnd')\nconst EMITTED_END = Symbol('emittedEnd')\nconst EMITTING_END = Symbol('emittingEnd')\nconst EMITTED_ERROR = Symbol('emittedError')\nconst CLOSED = Symbol('closed')\nconst READ = Symbol('read')\nconst FLUSH = Symbol('flush')\nconst FLUSHCHUNK = Symbol('flushChunk')\nconst ENCODING = Symbol('encoding')\nconst DECODER = Symbol('decoder')\nconst FLOWING = Symbol('flowing')\nconst PAUSED = Symbol('paused')\nconst RESUME = Symbol('resume')\nconst BUFFER = Symbol('buffer')\nconst PIPES = Symbol('pipes')\nconst BUFFERLENGTH = Symbol('bufferLength')\nconst BUFFERPUSH = Symbol('bufferPush')\nconst BUFFERSHIFT = Symbol('bufferShift')\nconst OBJECTMODE = Symbol('objectMode')\n// internal event when stream is destroyed\nconst DESTROYED = Symbol('destroyed')\n// internal event when stream has an error\nconst ERROR = Symbol('error')\nconst EMITDATA = Symbol('emitData')\nconst EMITEND = Symbol('emitEnd')\nconst EMITEND2 = Symbol('emitEnd2')\nconst ASYNC = Symbol('async')\nconst ABORT = Symbol('abort')\nconst ABORTED = Symbol('aborted')\nconst SIGNAL = Symbol('signal')\nconst DATALISTENERS = Symbol('dataListeners')\nconst DISCARDED = Symbol('discarded')\n\nconst defer = (fn: (...a: any[]) => any) => Promise.resolve().then(fn)\nconst nodefer = (fn: (...a: any[]) => any) => fn()\n\n// events that mean 'the stream is over'\n// these are treated specially, and re-emitted\n// if they are listened for after emitting.\ntype EndishEvent = 'end' | 'finish' | 'prefinish'\nconst isEndish = (ev: any): ev is EndishEvent =>\n  ev === 'end' || ev === 'finish' || ev === 'prefinish'\n\nconst isArrayBufferLike = (b: any): b is ArrayBufferLike =>\n  b instanceof ArrayBuffer ||\n  (!!b &&\n    typeof b === 'object' &&\n    b.constructor &&\n    b.constructor.name === 'ArrayBuffer' &&\n    b.byteLength >= 0)\n\nconst isArrayBufferView = (b: any): b is ArrayBufferView =>\n  !Buffer.isBuffer(b) && ArrayBuffer.isView(b)\n\n/**\n * Options that may be passed to stream.pipe()\n */\nexport interface PipeOptions {\n  /**\n   * end the destination stream when the source stream ends\n   */\n  end?: boolean\n  /**\n   * proxy errors from the source stream to the destination stream\n   */\n  proxyErrors?: boolean\n}\n\n/**\n * Internal class representing a pipe to a destination stream.\n *\n * @internal\n */\nclass Pipe<T extends unknown> {\n  src: Minipass<T>\n  dest: Minipass<any, T>\n  opts: PipeOptions\n  ondrain: () => any\n  constructor(\n    src: Minipass<T>,\n    dest: Minipass.Writable,\n    opts: PipeOptions\n  ) {\n    this.src = src\n    this.dest = dest as Minipass<any, T>\n    this.opts = opts\n    this.ondrain = () => src[RESUME]()\n    this.dest.on('drain', this.ondrain)\n  }\n  unpipe() {\n    this.dest.removeListener('drain', this.ondrain)\n  }\n  // only here for the prototype\n  /* c8 ignore start */\n  proxyErrors(_er: any) {}\n  /* c8 ignore stop */\n  end() {\n    this.unpipe()\n    if (this.opts.end) this.dest.end()\n  }\n}\n\n/**\n * Internal class representing a pipe to a destination stream where\n * errors are proxied.\n *\n * @internal\n */\nclass PipeProxyErrors<T> extends Pipe<T> {\n  unpipe() {\n    this.src.removeListener('error', this.proxyErrors)\n    super.unpipe()\n  }\n  constructor(\n    src: Minipass<T>,\n    dest: Minipass.Writable,\n    opts: PipeOptions\n  ) {\n    super(src, dest, opts)\n    this.proxyErrors = er => dest.emit('error', er)\n    src.on('error', this.proxyErrors)\n  }\n}\n\nexport namespace Minipass {\n  /**\n   * Encoding used to create a stream that outputs strings rather than\n   * Buffer objects.\n   */\n  export type Encoding = BufferEncoding | 'buffer' | null\n\n  /**\n   * Any stream that Minipass can pipe into\n   */\n  export type Writable =\n    | Minipass<any, any, any>\n    | NodeJS.WriteStream\n    | (NodeJS.WriteStream & { fd: number })\n    | (EventEmitter & {\n        end(): any\n        write(chunk: any, ...args: any[]): any\n      })\n\n  /**\n   * Any stream that can be read from\n   */\n  export type Readable =\n    | Minipass<any, any, any>\n    | NodeJS.ReadStream\n    | (NodeJS.ReadStream & { fd: number })\n    | (EventEmitter & {\n        pause(): any\n        resume(): any\n        pipe(...destArgs: any[]): any\n      })\n\n  /**\n   * Utility type that can be iterated sync or async\n   */\n  export type DualIterable<T> = Iterable<T> & AsyncIterable<T>\n\n  type EventArguments = Record<string | symbol, unknown[]>\n\n  /**\n   * The listing of events that a Minipass class can emit.\n   * Extend this when extending the Minipass class, and pass as\n   * the third template argument.  The key is the name of the event,\n   * and the value is the argument list.\n   *\n   * Any undeclared events will still be allowed, but the handler will get\n   * arguments as `unknown[]`.\n   */\n  export interface Events<RType extends any = Buffer>\n    extends EventArguments {\n    readable: []\n    data: [chunk: RType]\n    error: [er: unknown]\n    abort: [reason: unknown]\n    drain: []\n    resume: []\n    end: []\n    finish: []\n    prefinish: []\n    close: []\n    [DESTROYED]: [er?: unknown]\n    [ERROR]: [er: unknown]\n  }\n\n  /**\n   * String or buffer-like data that can be joined and sliced\n   */\n  export type ContiguousData =\n    | Buffer\n    | ArrayBufferLike\n    | ArrayBufferView\n    | string\n  export type BufferOrString = Buffer | string\n\n  /**\n   * Options passed to the Minipass constructor.\n   */\n  export type SharedOptions = {\n    /**\n     * Defer all data emission and other events until the end of the\n     * current tick, similar to Node core streams\n     */\n    async?: boolean\n    /**\n     * A signal which will abort the stream\n     */\n    signal?: AbortSignal\n    /**\n     * Output string encoding. Set to `null` or `'buffer'` (or omit) to\n     * emit Buffer objects rather than strings.\n     *\n     * Conflicts with `objectMode`\n     */\n    encoding?: BufferEncoding | null | 'buffer'\n    /**\n     * Output data exactly as it was written, supporting non-buffer/string\n     * data (such as arbitrary objects, falsey values, etc.)\n     *\n     * Conflicts with `encoding`\n     */\n    objectMode?: boolean\n  }\n\n  /**\n   * Options for a string encoded output\n   */\n  export type EncodingOptions = SharedOptions & {\n    encoding: BufferEncoding\n    objectMode?: false\n  }\n\n  /**\n   * Options for contiguous data buffer output\n   */\n  export type BufferOptions = SharedOptions & {\n    encoding?: null | 'buffer'\n    objectMode?: false\n  }\n\n  /**\n   * Options for objectMode arbitrary output\n   */\n  export type ObjectModeOptions = SharedOptions & {\n    objectMode: true\n    encoding?: null\n  }\n\n  /**\n   * Utility type to determine allowed options based on read type\n   */\n  export type Options<T> =\n    | ObjectModeOptions\n    | (T extends string\n        ? EncodingOptions\n        : T extends Buffer\n        ? BufferOptions\n        : SharedOptions)\n}\n\nconst isObjectModeOptions = (\n  o: Minipass.SharedOptions\n): o is Minipass.ObjectModeOptions => !!o.objectMode\n\nconst isEncodingOptions = (\n  o: Minipass.SharedOptions\n): o is Minipass.EncodingOptions =>\n  !o.objectMode && !!o.encoding && o.encoding !== 'buffer'\n\n/**\n * Main export, the Minipass class\n *\n * `RType` is the type of data emitted, defaults to Buffer\n *\n * `WType` is the type of data to be written, if RType is buffer or string,\n * then any {@link Minipass.ContiguousData} is allowed.\n *\n * `Events` is the set of event handler signatures that this object\n * will emit, see {@link Minipass.Events}\n */\nexport class Minipass<\n    RType extends unknown = Buffer,\n    WType extends unknown = RType extends Minipass.BufferOrString\n      ? Minipass.ContiguousData\n      : RType,\n    Events extends Minipass.Events<RType> = Minipass.Events<RType>\n  >\n  extends EventEmitter\n  implements Minipass.DualIterable<RType>\n{\n  [FLOWING]: boolean = false;\n  [PAUSED]: boolean = false;\n  [PIPES]: Pipe<RType>[] = [];\n  [BUFFER]: RType[] = [];\n  [OBJECTMODE]: boolean;\n  [ENCODING]: BufferEncoding | null;\n  [ASYNC]: boolean;\n  [DECODER]: SD | null;\n  [EOF]: boolean = false;\n  [EMITTED_END]: boolean = false;\n  [EMITTING_END]: boolean = false;\n  [CLOSED]: boolean = false;\n  [EMITTED_ERROR]: unknown = null;\n  [BUFFERLENGTH]: number = 0;\n  [DESTROYED]: boolean = false;\n  [SIGNAL]?: AbortSignal;\n  [ABORTED]: boolean = false;\n  [DATALISTENERS]: number = 0;\n  [DISCARDED]: boolean = false\n\n  /**\n   * true if the stream can be written\n   */\n  writable: boolean = true\n  /**\n   * true if the stream can be read\n   */\n  readable: boolean = true\n\n  /**\n   * If `RType` is Buffer, then options do not need to be provided.\n   * Otherwise, an options object must be provided to specify either\n   * {@link Minipass.SharedOptions.objectMode} or\n   * {@link Minipass.SharedOptions.encoding}, as appropriate.\n   */\n  constructor(\n    ...args:\n      | [Minipass.ObjectModeOptions]\n      | (RType extends Buffer\n          ? [] | [Minipass.Options<RType>]\n          : [Minipass.Options<RType>])\n  ) {\n    const options: Minipass.Options<RType> = (args[0] ||\n      {}) as Minipass.Options<RType>\n    super()\n    if (options.objectMode && typeof options.encoding === 'string') {\n      throw new TypeError(\n        'Encoding and objectMode may not be used together'\n      )\n    }\n    if (isObjectModeOptions(options)) {\n      this[OBJECTMODE] = true\n      this[ENCODING] = null\n    } else if (isEncodingOptions(options)) {\n      this[ENCODING] = options.encoding\n      this[OBJECTMODE] = false\n    } else {\n      this[OBJECTMODE] = false\n      this[ENCODING] = null\n    }\n    this[ASYNC] = !!options.async\n    this[DECODER] = this[ENCODING]\n      ? (new StringDecoder(this[ENCODING]) as SD)\n      : null\n\n    //@ts-ignore - private option for debugging and testing\n    if (options && options.debugExposeBuffer === true) {\n      Object.defineProperty(this, 'buffer', { get: () => this[BUFFER] })\n    }\n    //@ts-ignore - private option for debugging and testing\n    if (options && options.debugExposePipes === true) {\n      Object.defineProperty(this, 'pipes', { get: () => this[PIPES] })\n    }\n\n    const { signal } = options\n    if (signal) {\n      this[SIGNAL] = signal\n      if (signal.aborted) {\n        this[ABORT]()\n      } else {\n        signal.addEventListener('abort', () => this[ABORT]())\n      }\n    }\n  }\n\n  /**\n   * The amount of data stored in the buffer waiting to be read.\n   *\n   * For Buffer strings, this will be the total byte length.\n   * For string encoding streams, this will be the string character length,\n   * according to JavaScript's `string.length` logic.\n   * For objectMode streams, this is a count of the items waiting to be\n   * emitted.\n   */\n  get bufferLength() {\n    return this[BUFFERLENGTH]\n  }\n\n  /**\n   * The `BufferEncoding` currently in use, or `null`\n   */\n  get encoding() {\n    return this[ENCODING]\n  }\n\n  /**\n   * @deprecated - This is a read only property\n   */\n  set encoding(_enc) {\n    throw new Error('Encoding must be set at instantiation time')\n  }\n\n  /**\n   * @deprecated - Encoding may only be set at instantiation time\n   */\n  setEncoding(_enc: Minipass.Encoding) {\n    throw new Error('Encoding must be set at instantiation time')\n  }\n\n  /**\n   * True if this is an objectMode stream\n   */\n  get objectMode() {\n    return this[OBJECTMODE]\n  }\n\n  /**\n   * @deprecated - This is a read-only property\n   */\n  set objectMode(_om) {\n    throw new Error('objectMode must be set at instantiation time')\n  }\n\n  /**\n   * true if this is an async stream\n   */\n  get ['async'](): boolean {\n    return this[ASYNC]\n  }\n  /**\n   * Set to true to make this stream async.\n   *\n   * Once set, it cannot be unset, as this would potentially cause incorrect\n   * behavior.  Ie, a sync stream can be made async, but an async stream\n   * cannot be safely made sync.\n   */\n  set ['async'](a: boolean) {\n    this[ASYNC] = this[ASYNC] || !!a\n  }\n\n  // drop everything and get out of the flow completely\n  [ABORT]() {\n    this[ABORTED] = true\n    this.emit('abort', this[SIGNAL]?.reason)\n    this.destroy(this[SIGNAL]?.reason)\n  }\n\n  /**\n   * True if the stream has been aborted.\n   */\n  get aborted() {\n    return this[ABORTED]\n  }\n  /**\n   * No-op setter. Stream aborted status is set via the AbortSignal provided\n   * in the constructor options.\n   */\n  set aborted(_) {}\n\n  /**\n   * Write data into the stream\n   *\n   * If the chunk written is a string, and encoding is not specified, then\n   * `utf8` will be assumed. If the stream encoding matches the encoding of\n   * a written string, and the state of the string decoder allows it, then\n   * the string will be passed through to either the output or the internal\n   * buffer without any processing. Otherwise, it will be turned into a\n   * Buffer object for processing into the desired encoding.\n   *\n   * If provided, `cb` function is called immediately before return for\n   * sync streams, or on next tick for async streams, because for this\n   * base class, a chunk is considered \"processed\" once it is accepted\n   * and either emitted or buffered. That is, the callback does not indicate\n   * that the chunk has been eventually emitted, though of course child\n   * classes can override this function to do whatever processing is required\n   * and call `super.write(...)` only once processing is completed.\n   */\n  write(chunk: WType, cb?: () => void): boolean\n  write(\n    chunk: WType,\n    encoding?: Minipass.Encoding,\n    cb?: () => void\n  ): boolean\n  write(\n    chunk: WType,\n    encoding?: Minipass.Encoding | (() => void),\n    cb?: () => void\n  ): boolean {\n    if (this[ABORTED]) return false\n    if (this[EOF]) throw new Error('write after end')\n\n    if (this[DESTROYED]) {\n      this.emit(\n        'error',\n        Object.assign(\n          new Error('Cannot call write after a stream was destroyed'),\n          { code: 'ERR_STREAM_DESTROYED' }\n        )\n      )\n      return true\n    }\n\n    if (typeof encoding === 'function') {\n      cb = encoding\n      encoding = 'utf8'\n    }\n\n    if (!encoding) encoding = 'utf8'\n\n    const fn = this[ASYNC] ? defer : nodefer\n\n    // convert array buffers and typed array views into buffers\n    // at some point in the future, we may want to do the opposite!\n    // leave strings and buffers as-is\n    // anything is only allowed if in object mode, so throw\n    if (!this[OBJECTMODE] && !Buffer.isBuffer(chunk)) {\n      if (isArrayBufferView(chunk)) {\n        //@ts-ignore - sinful unsafe type changing\n        chunk = Buffer.from(\n          chunk.buffer,\n          chunk.byteOffset,\n          chunk.byteLength\n        )\n      } else if (isArrayBufferLike(chunk)) {\n        //@ts-ignore - sinful unsafe type changing\n        chunk = Buffer.from(chunk)\n      } else if (typeof chunk !== 'string') {\n        throw new Error(\n          'Non-contiguous data written to non-objectMode stream'\n        )\n      }\n    }\n\n    // handle object mode up front, since it's simpler\n    // this yields better performance, fewer checks later.\n    if (this[OBJECTMODE]) {\n      // maybe impossible?\n      /* c8 ignore start */\n      if (this[FLOWING] && this[BUFFERLENGTH] !== 0) this[FLUSH](true)\n      /* c8 ignore stop */\n\n      if (this[FLOWING]) this.emit('data', chunk as unknown as RType)\n      else this[BUFFERPUSH](chunk as unknown as RType)\n\n      if (this[BUFFERLENGTH] !== 0) this.emit('readable')\n\n      if (cb) fn(cb)\n\n      return this[FLOWING]\n    }\n\n    // at this point the chunk is a buffer or string\n    // don't buffer it up or send it to the decoder\n    if (!(chunk as Minipass.BufferOrString).length) {\n      if (this[BUFFERLENGTH] !== 0) this.emit('readable')\n      if (cb) fn(cb)\n      return this[FLOWING]\n    }\n\n    // fast-path writing strings of same encoding to a stream with\n    // an empty buffer, skipping the buffer/decoder dance\n    if (\n      typeof chunk === 'string' &&\n      // unless it is a string already ready for us to use\n      !(encoding === this[ENCODING] && !this[DECODER]?.lastNeed)\n    ) {\n      //@ts-ignore - sinful unsafe type change\n      chunk = Buffer.from(chunk, encoding)\n    }\n\n    if (Buffer.isBuffer(chunk) && this[ENCODING]) {\n      //@ts-ignore - sinful unsafe type change\n      chunk = this[DECODER].write(chunk)\n    }\n\n    // Note: flushing CAN potentially switch us into not-flowing mode\n    if (this[FLOWING] && this[BUFFERLENGTH] !== 0) this[FLUSH](true)\n\n    if (this[FLOWING]) this.emit('data', chunk as unknown as RType)\n    else this[BUFFERPUSH](chunk as unknown as RType)\n\n    if (this[BUFFERLENGTH] !== 0) this.emit('readable')\n\n    if (cb) fn(cb)\n\n    return this[FLOWING]\n  }\n\n  /**\n   * Low-level explicit read method.\n   *\n   * In objectMode, the argument is ignored, and one item is returned if\n   * available.\n   *\n   * `n` is the number of bytes (or in the case of encoding streams,\n   * characters) to consume. If `n` is not provided, then the entire buffer\n   * is returned, or `null` is returned if no data is available.\n   *\n   * If `n` is greater that the amount of data in the internal buffer,\n   * then `null` is returned.\n   */\n  read(n?: number | null): RType | null {\n    if (this[DESTROYED]) return null\n    this[DISCARDED] = false\n\n    if (\n      this[BUFFERLENGTH] === 0 ||\n      n === 0 ||\n      (n && n > this[BUFFERLENGTH])\n    ) {\n      this[MAYBE_EMIT_END]()\n      return null\n    }\n\n    if (this[OBJECTMODE]) n = null\n\n    if (this[BUFFER].length > 1 && !this[OBJECTMODE]) {\n      // not object mode, so if we have an encoding, then RType is string\n      // otherwise, must be Buffer\n      this[BUFFER] = [\n        (this[ENCODING]\n          ? this[BUFFER].join('')\n          : Buffer.concat(\n              this[BUFFER] as Buffer[],\n              this[BUFFERLENGTH]\n            )) as RType,\n      ]\n    }\n\n    const ret = this[READ](n || null, this[BUFFER][0] as RType)\n    this[MAYBE_EMIT_END]()\n    return ret\n  }\n\n  [READ](n: number | null, chunk: RType) {\n    if (this[OBJECTMODE]) this[BUFFERSHIFT]()\n    else {\n      const c = chunk as Minipass.BufferOrString\n      if (n === c.length || n === null) this[BUFFERSHIFT]()\n      else if (typeof c === 'string') {\n        this[BUFFER][0] = c.slice(n) as RType\n        chunk = c.slice(0, n) as RType\n        this[BUFFERLENGTH] -= n\n      } else {\n        this[BUFFER][0] = c.subarray(n) as RType\n        chunk = c.subarray(0, n) as RType\n        this[BUFFERLENGTH] -= n\n      }\n    }\n\n    this.emit('data', chunk)\n\n    if (!this[BUFFER].length && !this[EOF]) this.emit('drain')\n\n    return chunk\n  }\n\n  /**\n   * End the stream, optionally providing a final write.\n   *\n   * See {@link Minipass#write} for argument descriptions\n   */\n  end(cb?: () => void): this\n  end(chunk: WType, cb?: () => void): this\n  end(chunk: WType, encoding?: Minipass.Encoding, cb?: () => void): this\n  end(\n    chunk?: WType | (() => void),\n    encoding?: Minipass.Encoding | (() => void),\n    cb?: () => void\n  ): this {\n    if (typeof chunk === 'function') {\n      cb = chunk as () => void\n      chunk = undefined\n    }\n    if (typeof encoding === 'function') {\n      cb = encoding\n      encoding = 'utf8'\n    }\n    if (chunk !== undefined) this.write(chunk, encoding)\n    if (cb) this.once('end', cb)\n    this[EOF] = true\n    this.writable = false\n\n    // if we haven't written anything, then go ahead and emit,\n    // even if we're not reading.\n    // we'll re-emit if a new 'end' listener is added anyway.\n    // This makes MP more suitable to write-only use cases.\n    if (this[FLOWING] || !this[PAUSED]) this[MAYBE_EMIT_END]()\n    return this\n  }\n\n  // don't let the internal resume be overwritten\n  [RESUME]() {\n    if (this[DESTROYED]) return\n\n    if (!this[DATALISTENERS] && !this[PIPES].length) {\n      this[DISCARDED] = true\n    }\n    this[PAUSED] = false\n    this[FLOWING] = true\n    this.emit('resume')\n    if (this[BUFFER].length) this[FLUSH]()\n    else if (this[EOF]) this[MAYBE_EMIT_END]()\n    else this.emit('drain')\n  }\n\n  /**\n   * Resume the stream if it is currently in a paused state\n   *\n   * If called when there are no pipe destinations or `data` event listeners,\n   * this will place the stream in a \"discarded\" state, where all data will\n   * be thrown away. The discarded state is removed if a pipe destination or\n   * data handler is added, if pause() is called, or if any synchronous or\n   * asynchronous iteration is started.\n   */\n  resume() {\n    return this[RESUME]()\n  }\n\n  /**\n   * Pause the stream\n   */\n  pause() {\n    this[FLOWING] = false\n    this[PAUSED] = true\n    this[DISCARDED] = false\n  }\n\n  /**\n   * true if the stream has been forcibly destroyed\n   */\n  get destroyed() {\n    return this[DESTROYED]\n  }\n\n  /**\n   * true if the stream is currently in a flowing state, meaning that\n   * any writes will be immediately emitted.\n   */\n  get flowing() {\n    return this[FLOWING]\n  }\n\n  /**\n   * true if the stream is currently in a paused state\n   */\n  get paused() {\n    return this[PAUSED]\n  }\n\n  [BUFFERPUSH](chunk: RType) {\n    if (this[OBJECTMODE]) this[BUFFERLENGTH] += 1\n    else this[BUFFERLENGTH] += (chunk as Minipass.BufferOrString).length\n    this[BUFFER].push(chunk)\n  }\n\n  [BUFFERSHIFT](): RType {\n    if (this[OBJECTMODE]) this[BUFFERLENGTH] -= 1\n    else\n      this[BUFFERLENGTH] -= (\n        this[BUFFER][0] as Minipass.BufferOrString\n      ).length\n    return this[BUFFER].shift() as RType\n  }\n\n  [FLUSH](noDrain: boolean = false) {\n    do {} while (\n      this[FLUSHCHUNK](this[BUFFERSHIFT]()) &&\n      this[BUFFER].length\n    )\n\n    if (!noDrain && !this[BUFFER].length && !this[EOF]) this.emit('drain')\n  }\n\n  [FLUSHCHUNK](chunk: RType) {\n    this.emit('data', chunk)\n    return this[FLOWING]\n  }\n\n  /**\n   * Pipe all data emitted by this stream into the destination provided.\n   *\n   * Triggers the flow of data.\n   */\n  pipe<W extends Minipass.Writable>(dest: W, opts?: PipeOptions): W {\n    if (this[DESTROYED]) return dest\n    this[DISCARDED] = false\n\n    const ended = this[EMITTED_END]\n    opts = opts || {}\n    if (dest === proc.stdout || dest === proc.stderr) opts.end = false\n    else opts.end = opts.end !== false\n    opts.proxyErrors = !!opts.proxyErrors\n\n    // piping an ended stream ends immediately\n    if (ended) {\n      if (opts.end) dest.end()\n    } else {\n      // \"as\" here just ignores the WType, which pipes don't care about,\n      // since they're only consuming from us, and writing to the dest\n      this[PIPES].push(\n        !opts.proxyErrors\n          ? new Pipe<RType>(this as Minipass<RType>, dest, opts)\n          : new PipeProxyErrors<RType>(this as Minipass<RType>, dest, opts)\n      )\n      if (this[ASYNC]) defer(() => this[RESUME]())\n      else this[RESUME]()\n    }\n\n    return dest\n  }\n\n  /**\n   * Fully unhook a piped destination stream.\n   *\n   * If the destination stream was the only consumer of this stream (ie,\n   * there are no other piped destinations or `'data'` event listeners)\n   * then the flow of data will stop until there is another consumer or\n   * {@link Minipass#resume} is explicitly called.\n   */\n  unpipe<W extends Minipass.Writable>(dest: W) {\n    const p = this[PIPES].find(p => p.dest === dest)\n    if (p) {\n      if (this[PIPES].length === 1) {\n        if (this[FLOWING] && this[DATALISTENERS] === 0) {\n          this[FLOWING] = false\n        }\n        this[PIPES] = []\n      } else this[PIPES].splice(this[PIPES].indexOf(p), 1)\n      p.unpipe()\n    }\n  }\n\n  /**\n   * Alias for {@link Minipass#on}\n   */\n  addListener<Event extends keyof Events>(\n    ev: Event,\n    handler: (...args: Events[Event]) => any\n  ): this {\n    return this.on(ev, handler)\n  }\n\n  /**\n   * Mostly identical to `EventEmitter.on`, with the following\n   * behavior differences to prevent data loss and unnecessary hangs:\n   *\n   * - Adding a 'data' event handler will trigger the flow of data\n   *\n   * - Adding a 'readable' event handler when there is data waiting to be read\n   *   will cause 'readable' to be emitted immediately.\n   *\n   * - Adding an 'endish' event handler ('end', 'finish', etc.) which has\n   *   already passed will cause the event to be emitted immediately and all\n   *   handlers removed.\n   *\n   * - Adding an 'error' event handler after an error has been emitted will\n   *   cause the event to be re-emitted immediately with the error previously\n   *   raised.\n   */\n  on<Event extends keyof Events>(\n    ev: Event,\n    handler: (...args: Events[Event]) => any\n  ): this {\n    const ret = super.on(\n      ev as string | symbol,\n      handler as (...a: any[]) => any\n    )\n    if (ev === 'data') {\n      this[DISCARDED] = false\n      this[DATALISTENERS]++\n      if (!this[PIPES].length && !this[FLOWING]) {\n        this[RESUME]()\n      }\n    } else if (ev === 'readable' && this[BUFFERLENGTH] !== 0) {\n      super.emit('readable')\n    } else if (isEndish(ev) && this[EMITTED_END]) {\n      super.emit(ev)\n      this.removeAllListeners(ev)\n    } else if (ev === 'error' && this[EMITTED_ERROR]) {\n      const h = handler as (...a: Events['error']) => any\n      if (this[ASYNC]) defer(() => h.call(this, this[EMITTED_ERROR]))\n      else h.call(this, this[EMITTED_ERROR])\n    }\n    return ret\n  }\n\n  /**\n   * Alias for {@link Minipass#off}\n   */\n  removeListener<Event extends keyof Events>(\n    ev: Event,\n    handler: (...args: Events[Event]) => any\n  ) {\n    return this.off(ev, handler)\n  }\n\n  /**\n   * Mostly identical to `EventEmitter.off`\n   *\n   * If a 'data' event handler is removed, and it was the last consumer\n   * (ie, there are no pipe destinations or other 'data' event listeners),\n   * then the flow of data will stop until there is another consumer or\n   * {@link Minipass#resume} is explicitly called.\n   */\n  off<Event extends keyof Events>(\n    ev: Event,\n    handler: (...args: Events[Event]) => any\n  ) {\n    const ret = super.off(\n      ev as string | symbol,\n      handler as (...a: any[]) => any\n    )\n    // if we previously had listeners, and now we don't, and we don't\n    // have any pipes, then stop the flow, unless it's been explicitly\n    // put in a discarded flowing state via stream.resume().\n    if (ev === 'data') {\n      this[DATALISTENERS] = this.listeners('data').length\n      if (\n        this[DATALISTENERS] === 0 &&\n        !this[DISCARDED] &&\n        !this[PIPES].length\n      ) {\n        this[FLOWING] = false\n      }\n    }\n    return ret\n  }\n\n  /**\n   * Mostly identical to `EventEmitter.removeAllListeners`\n   *\n   * If all 'data' event handlers are removed, and they were the last consumer\n   * (ie, there are no pipe destinations), then the flow of data will stop\n   * until there is another consumer or {@link Minipass#resume} is explicitly\n   * called.\n   */\n  removeAllListeners<Event extends keyof Events>(ev?: Event) {\n    const ret = super.removeAllListeners(ev as string | symbol | undefined)\n    if (ev === 'data' || ev === undefined) {\n      this[DATALISTENERS] = 0\n      if (!this[DISCARDED] && !this[PIPES].length) {\n        this[FLOWING] = false\n      }\n    }\n    return ret\n  }\n\n  /**\n   * true if the 'end' event has been emitted\n   */\n  get emittedEnd() {\n    return this[EMITTED_END]\n  }\n\n  [MAYBE_EMIT_END]() {\n    if (\n      !this[EMITTING_END] &&\n      !this[EMITTED_END] &&\n      !this[DESTROYED] &&\n      this[BUFFER].length === 0 &&\n      this[EOF]\n    ) {\n      this[EMITTING_END] = true\n      this.emit('end')\n      this.emit('prefinish')\n      this.emit('finish')\n      if (this[CLOSED]) this.emit('close')\n      this[EMITTING_END] = false\n    }\n  }\n\n  /**\n   * Mostly identical to `EventEmitter.emit`, with the following\n   * behavior differences to prevent data loss and unnecessary hangs:\n   *\n   * If the stream has been destroyed, and the event is something other\n   * than 'close' or 'error', then `false` is returned and no handlers\n   * are called.\n   *\n   * If the event is 'end', and has already been emitted, then the event\n   * is ignored. If the stream is in a paused or non-flowing state, then\n   * the event will be deferred until data flow resumes. If the stream is\n   * async, then handlers will be called on the next tick rather than\n   * immediately.\n   *\n   * If the event is 'close', and 'end' has not yet been emitted, then\n   * the event will be deferred until after 'end' is emitted.\n   *\n   * If the event is 'error', and an AbortSignal was provided for the stream,\n   * and there are no listeners, then the event is ignored, matching the\n   * behavior of node core streams in the presense of an AbortSignal.\n   *\n   * If the event is 'finish' or 'prefinish', then all listeners will be\n   * removed after emitting the event, to prevent double-firing.\n   */\n  emit<Event extends keyof Events>(\n    ev: Event,\n    ...args: Events[Event]\n  ): boolean {\n    const data = args[0]\n    // error and close are only events allowed after calling destroy()\n    if (\n      ev !== 'error' &&\n      ev !== 'close' &&\n      ev !== DESTROYED &&\n      this[DESTROYED]\n    ) {\n      return false\n    } else if (ev === 'data') {\n      return !this[OBJECTMODE] && !data\n        ? false\n        : this[ASYNC]\n        ? (defer(() => this[EMITDATA](data as RType)), true)\n        : this[EMITDATA](data as RType)\n    } else if (ev === 'end') {\n      return this[EMITEND]()\n    } else if (ev === 'close') {\n      this[CLOSED] = true\n      // don't emit close before 'end' and 'finish'\n      if (!this[EMITTED_END] && !this[DESTROYED]) return false\n      const ret = super.emit('close')\n      this.removeAllListeners('close')\n      return ret\n    } else if (ev === 'error') {\n      this[EMITTED_ERROR] = data\n      super.emit(ERROR, data)\n      const ret =\n        !this[SIGNAL] || this.listeners('error').length\n          ? super.emit('error', data)\n          : false\n      this[MAYBE_EMIT_END]()\n      return ret\n    } else if (ev === 'resume') {\n      const ret = super.emit('resume')\n      this[MAYBE_EMIT_END]()\n      return ret\n    } else if (ev === 'finish' || ev === 'prefinish') {\n      const ret = super.emit(ev)\n      this.removeAllListeners(ev)\n      return ret\n    }\n\n    // Some other unknown event\n    const ret = super.emit(ev as string, ...args)\n    this[MAYBE_EMIT_END]()\n    return ret\n  }\n\n  [EMITDATA](data: RType) {\n    for (const p of this[PIPES]) {\n      if (p.dest.write(data as RType) === false) this.pause()\n    }\n    const ret = this[DISCARDED] ? false : super.emit('data', data)\n    this[MAYBE_EMIT_END]()\n    return ret\n  }\n\n  [EMITEND]() {\n    if (this[EMITTED_END]) return false\n\n    this[EMITTED_END] = true\n    this.readable = false\n    return this[ASYNC]\n      ? (defer(() => this[EMITEND2]()), true)\n      : this[EMITEND2]()\n  }\n\n  [EMITEND2]() {\n    if (this[DECODER]) {\n      const data = this[DECODER].end()\n      if (data) {\n        for (const p of this[PIPES]) {\n          p.dest.write(data as RType)\n        }\n        if (!this[DISCARDED]) super.emit('data', data)\n      }\n    }\n\n    for (const p of this[PIPES]) {\n      p.end()\n    }\n    const ret = super.emit('end')\n    this.removeAllListeners('end')\n    return ret\n  }\n\n  /**\n   * Return a Promise that resolves to an array of all emitted data once\n   * the stream ends.\n   */\n  async collect(): Promise<RType[] & { dataLength: number }> {\n    const buf: RType[] & { dataLength: number } = Object.assign([], {\n      dataLength: 0,\n    })\n    if (!this[OBJECTMODE]) buf.dataLength = 0\n    // set the promise first, in case an error is raised\n    // by triggering the flow here.\n    const p = this.promise()\n    this.on('data', c => {\n      buf.push(c)\n      if (!this[OBJECTMODE])\n        buf.dataLength += (c as Minipass.BufferOrString).length\n    })\n    await p\n    return buf\n  }\n\n  /**\n   * Return a Promise that resolves to the concatenation of all emitted data\n   * once the stream ends.\n   *\n   * Not allowed on objectMode streams.\n   */\n  async concat(): Promise<RType> {\n    if (this[OBJECTMODE]) {\n      throw new Error('cannot concat in objectMode')\n    }\n    const buf = await this.collect()\n    return (\n      this[ENCODING]\n        ? buf.join('')\n        : Buffer.concat(buf as Buffer[], buf.dataLength)\n    ) as RType\n  }\n\n  /**\n   * Return a void Promise that resolves once the stream ends.\n   */\n  async promise(): Promise<void> {\n    return new Promise<void>((resolve, reject) => {\n      this.on(DESTROYED, () => reject(new Error('stream destroyed')))\n      this.on('error', er => reject(er))\n      this.on('end', () => resolve())\n    })\n  }\n\n  /**\n   * Asynchronous `for await of` iteration.\n   *\n   * This will continue emitting all chunks until the stream terminates.\n   */\n  [Symbol.asyncIterator](): AsyncGenerator<RType, void, void> {\n    // set this up front, in case the consumer doesn't call next()\n    // right away.\n    this[DISCARDED] = false\n    let stopped = false\n    const stop = async (): Promise<IteratorReturnResult<void>> => {\n      this.pause()\n      stopped = true\n      return { value: undefined, done: true }\n    }\n    const next = (): Promise<IteratorResult<RType, void>> => {\n      if (stopped) return stop()\n      const res = this.read()\n      if (res !== null) return Promise.resolve({ done: false, value: res })\n\n      if (this[EOF]) return stop()\n\n      let resolve!: (res: IteratorResult<RType>) => void\n      let reject!: (er: unknown) => void\n      const onerr = (er: unknown) => {\n        this.off('data', ondata)\n        this.off('end', onend)\n        this.off(DESTROYED, ondestroy)\n        stop()\n        reject(er)\n      }\n      const ondata = (value: RType) => {\n        this.off('error', onerr)\n        this.off('end', onend)\n        this.off(DESTROYED, ondestroy)\n        this.pause()\n        resolve({ value, done: !!this[EOF] })\n      }\n      const onend = () => {\n        this.off('error', onerr)\n        this.off('data', ondata)\n        this.off(DESTROYED, ondestroy)\n        stop()\n        resolve({ done: true, value: undefined })\n      }\n      const ondestroy = () => onerr(new Error('stream destroyed'))\n      return new Promise<IteratorResult<RType>>((res, rej) => {\n        reject = rej\n        resolve = res\n        this.once(DESTROYED, ondestroy)\n        this.once('error', onerr)\n        this.once('end', onend)\n        this.once('data', ondata)\n      })\n    }\n\n    return {\n      next,\n      throw: stop,\n      return: stop,\n      [Symbol.asyncIterator]() {\n        return this\n      },\n    }\n  }\n\n  /**\n   * Synchronous `for of` iteration.\n   *\n   * The iteration will terminate when the internal buffer runs out, even\n   * if the stream has not yet terminated.\n   */\n  [Symbol.iterator](): Generator<RType, void, void> {\n    // set this up front, in case the consumer doesn't call next()\n    // right away.\n    this[DISCARDED] = false\n    let stopped = false\n    const stop = (): IteratorReturnResult<void> => {\n      this.pause()\n      this.off(ERROR, stop)\n      this.off(DESTROYED, stop)\n      this.off('end', stop)\n      stopped = true\n      return { done: true, value: undefined }\n    }\n\n    const next = (): IteratorResult<RType, void> => {\n      if (stopped) return stop()\n      const value = this.read()\n      return value === null ? stop() : { done: false, value }\n    }\n\n    this.once('end', stop)\n    this.once(ERROR, stop)\n    this.once(DESTROYED, stop)\n\n    return {\n      next,\n      throw: stop,\n      return: stop,\n      [Symbol.iterator]() {\n        return this\n      },\n    }\n  }\n\n  /**\n   * Destroy a stream, preventing it from being used for any further purpose.\n   *\n   * If the stream has a `close()` method, then it will be called on\n   * destruction.\n   *\n   * After destruction, any attempt to write data, read data, or emit most\n   * events will be ignored.\n   *\n   * If an error argument is provided, then it will be emitted in an\n   * 'error' event.\n   */\n  destroy(er?: unknown) {\n    if (this[DESTROYED]) {\n      if (er) this.emit('error', er)\n      else this.emit(DESTROYED)\n      return this\n    }\n\n    this[DESTROYED] = true\n    this[DISCARDED] = true\n\n    // throw away all buffered data, it's never coming out\n    this[BUFFER].length = 0\n    this[BUFFERLENGTH] = 0\n\n    const wc = this as Minipass<RType, WType, Events> & {\n      close?: () => void\n    }\n    if (typeof wc.close === 'function' && !this[CLOSED]) wc.close()\n\n    if (er) this.emit('error', er)\n    // if no error to emit, still reject pending promises\n    else this.emit(DESTROYED)\n\n    return this\n  }\n\n  /**\n   * Alias for {@link isStream}\n   *\n   * Former export location, maintained for backwards compatibility.\n   *\n   * @deprecated\n   */\n  static get isStream() {\n    return isStream\n  }\n}\n", "// give it a pattern, and it'll be able to tell you if\n// a given path should be ignored.\n// Ignoring a path ignores its children if the pattern ends in /**\n// Ignores are always parsed in dot:true mode\n\nimport { Minimatch, MinimatchOptions } from 'minimatch'\nimport { Path } from 'path-scurry'\nimport { Pattern } from './pattern.js'\nimport { GlobWalkerOpts } from './walker.js'\n\nexport interface IgnoreLike {\n  ignored?: (p: Path) => boolean\n  childrenIgnored?: (p: Path) => boolean\n  add?: (ignore: string) => void\n}\n\nconst defaultPlatform: NodeJS.Platform =\n  (\n    typeof process === 'object' &&\n    process &&\n    typeof process.platform === 'string'\n  ) ?\n    process.platform\n  : 'linux'\n\n/**\n * Class used to process ignored patterns\n */\nexport class Ignore implements IgnoreLike {\n  relative: Minimatch[]\n  relativeChildren: Minimatch[]\n  absolute: Minimatch[]\n  absoluteChildren: Minimatch[]\n  platform: NodeJS.Platform\n  mmopts: MinimatchOptions\n\n  constructor(\n    ignored: string[],\n    {\n      nobrace,\n      nocase,\n      noext,\n      noglobstar,\n      platform = defaultPlatform,\n    }: GlobWalkerOpts,\n  ) {\n    this.relative = []\n    this.absolute = []\n    this.relativeChildren = []\n    this.absoluteChildren = []\n    this.platform = platform\n    this.mmopts = {\n      dot: true,\n      nobrace,\n      nocase,\n      noext,\n      noglobstar,\n      optimizationLevel: 2,\n      platform,\n      nocomment: true,\n      nonegate: true,\n    }\n    for (const ign of ignored) this.add(ign)\n  }\n\n  add(ign: string) {\n    // this is a little weird, but it gives us a clean set of optimized\n    // minimatch matchers, without getting tripped up if one of them\n    // ends in /** inside a brace section, and it's only inefficient at\n    // the start of the walk, not along it.\n    // It'd be nice if the Pattern class just had a .test() method, but\n    // handling globstars is a bit of a pita, and that code already lives\n    // in minimatch anyway.\n    // Another way would be if maybe Minimatch could take its set/globParts\n    // as an option, and then we could at least just use Pattern to test\n    // for absolute-ness.\n    // Yet another way, Minimatch could take an array of glob strings, and\n    // a cwd option, and do the right thing.\n    const mm = new Minimatch(ign, this.mmopts)\n    for (let i = 0; i < mm.set.length; i++) {\n      const parsed = mm.set[i]\n      const globParts = mm.globParts[i]\n      /* c8 ignore start */\n      if (!parsed || !globParts) {\n        throw new Error('invalid pattern object')\n      }\n      // strip off leading ./ portions\n      // https://github.com/isaacs/node-glob/issues/570\n      while (parsed[0] === '.' && globParts[0] === '.') {\n        parsed.shift()\n        globParts.shift()\n      }\n      /* c8 ignore stop */\n      const p = new Pattern(parsed, globParts, 0, this.platform)\n      const m = new Minimatch(p.globString(), this.mmopts)\n      const children = globParts[globParts.length - 1] === '**'\n      const absolute = p.isAbsolute()\n      if (absolute) this.absolute.push(m)\n      else this.relative.push(m)\n      if (children) {\n        if (absolute) this.absoluteChildren.push(m)\n        else this.relativeChildren.push(m)\n      }\n    }\n  }\n\n  ignored(p: Path): boolean {\n    const fullpath = p.fullpath()\n    const fullpaths = `${fullpath}/`\n    const relative = p.relative() || '.'\n    const relatives = `${relative}/`\n    for (const m of this.relative) {\n      if (m.match(relative) || m.match(relatives)) return true\n    }\n    for (const m of this.absolute) {\n      if (m.match(fullpath) || m.match(fullpaths)) return true\n    }\n    return false\n  }\n\n  childrenIgnored(p: Path): boolean {\n    const fullpath = p.fullpath() + '/'\n    const relative = (p.relative() || '.') + '/'\n    for (const m of this.relativeChildren) {\n      if (m.match(relative)) return true\n    }\n    for (const m of this.absoluteChildren) {\n      if (m.match(fullpath)) return true\n    }\n    return false\n  }\n}\n", "// synchronous utility for filtering entries and calculating subwalks\n\nimport { GLOBSTAR, MMRegExp } from 'minimatch'\nimport { Path } from 'path-scurry'\nimport { MMPattern, Pattern } from './pattern.js'\nimport { GlobWalkerOpts } from './walker.js'\n\n/**\n * A cache of which patterns have been processed for a given Path\n */\nexport class HasWalkedCache {\n  store: Map<string, Set<string>>\n  constructor(store: Map<string, Set<string>> = new Map()) {\n    this.store = store\n  }\n  copy() {\n    return new HasWalkedCache(new Map(this.store))\n  }\n  hasWalked(target: Path, pattern: Pattern) {\n    return this.store.get(target.fullpath())?.has(pattern.globString())\n  }\n  storeWalked(target: Path, pattern: Pattern) {\n    const fullpath = target.fullpath()\n    const cached = this.store.get(fullpath)\n    if (cached) cached.add(pattern.globString())\n    else this.store.set(fullpath, new Set([pattern.globString()]))\n  }\n}\n\n/**\n * A record of which paths have been matched in a given walk step,\n * and whether they only are considered a match if they are a directory,\n * and whether their absolute or relative path should be returned.\n */\nexport class MatchRecord {\n  store: Map<Path, number> = new Map()\n  add(target: Path, absolute: boolean, ifDir: boolean) {\n    const n = (absolute ? 2 : 0) | (ifDir ? 1 : 0)\n    const current = this.store.get(target)\n    this.store.set(target, current === undefined ? n : n & current)\n  }\n  // match, absolute, ifdir\n  entries(): [Path, boolean, boolean][] {\n    return [...this.store.entries()].map(([path, n]) => [\n      path,\n      !!(n & 2),\n      !!(n & 1),\n    ])\n  }\n}\n\n/**\n * A collection of patterns that must be processed in a subsequent step\n * for a given path.\n */\nexport class SubWalks {\n  store: Map<Path, Pattern[]> = new Map()\n  add(target: Path, pattern: Pattern) {\n    if (!target.canReaddir()) {\n      return\n    }\n    const subs = this.store.get(target)\n    if (subs) {\n      if (!subs.find(p => p.globString() === pattern.globString())) {\n        subs.push(pattern)\n      }\n    } else this.store.set(target, [pattern])\n  }\n  get(target: Path): Pattern[] {\n    const subs = this.store.get(target)\n    /* c8 ignore start */\n    if (!subs) {\n      throw new Error('attempting to walk unknown path')\n    }\n    /* c8 ignore stop */\n    return subs\n  }\n  entries(): [Path, Pattern[]][] {\n    return this.keys().map(k => [k, this.store.get(k) as Pattern[]])\n  }\n  keys(): Path[] {\n    return [...this.store.keys()].filter(t => t.canReaddir())\n  }\n}\n\n/**\n * The class that processes patterns for a given path.\n *\n * Handles child entry filtering, and determining whether a path's\n * directory contents must be read.\n */\nexport class Processor {\n  hasWalkedCache: HasWalkedCache\n  matches = new MatchRecord()\n  subwalks = new SubWalks()\n  patterns?: Pattern[]\n  follow: boolean\n  dot: boolean\n  opts: GlobWalkerOpts\n\n  constructor(opts: GlobWalkerOpts, hasWalkedCache?: HasWalkedCache) {\n    this.opts = opts\n    this.follow = !!opts.follow\n    this.dot = !!opts.dot\n    this.hasWalkedCache =\n      hasWalkedCache ? hasWalkedCache.copy() : new HasWalkedCache()\n  }\n\n  processPatterns(target: Path, patterns: Pattern[]) {\n    this.patterns = patterns\n    const processingSet: [Path, Pattern][] = patterns.map(p => [target, p])\n\n    // map of paths to the magic-starting subwalks they need to walk\n    // first item in patterns is the filter\n\n    for (let [t, pattern] of processingSet) {\n      this.hasWalkedCache.storeWalked(t, pattern)\n\n      const root = pattern.root()\n      const absolute = pattern.isAbsolute() && this.opts.absolute !== false\n\n      // start absolute patterns at root\n      if (root) {\n        t = t.resolve(\n          root === '/' && this.opts.root !== undefined ?\n            this.opts.root\n          : root,\n        )\n        const rest = pattern.rest()\n        if (!rest) {\n          this.matches.add(t, true, false)\n          continue\n        } else {\n          pattern = rest\n        }\n      }\n\n      if (t.isENOENT()) continue\n\n      let p: MMPattern\n      let rest: Pattern | null\n      let changed = false\n      while (\n        typeof (p = pattern.pattern()) === 'string' &&\n        (rest = pattern.rest())\n      ) {\n        const c = t.resolve(p)\n        t = c\n        pattern = rest\n        changed = true\n      }\n      p = pattern.pattern()\n      rest = pattern.rest()\n      if (changed) {\n        if (this.hasWalkedCache.hasWalked(t, pattern)) continue\n        this.hasWalkedCache.storeWalked(t, pattern)\n      }\n\n      // now we have either a final string for a known entry,\n      // more strings for an unknown entry,\n      // or a pattern starting with magic, mounted on t.\n      if (typeof p === 'string') {\n        // must not be final entry, otherwise we would have\n        // concatenated it earlier.\n        const ifDir = p === '..' || p === '' || p === '.'\n        this.matches.add(t.resolve(p), absolute, ifDir)\n        continue\n      } else if (p === GLOBSTAR) {\n        // if no rest, match and subwalk pattern\n        // if rest, process rest and subwalk pattern\n        // if it's a symlink, but we didn't get here by way of a\n        // globstar match (meaning it's the first time THIS globstar\n        // has traversed a symlink), then we follow it. Otherwise, stop.\n        if (\n          !t.isSymbolicLink() ||\n          this.follow ||\n          pattern.checkFollowGlobstar()\n        ) {\n          this.subwalks.add(t, pattern)\n        }\n        const rp = rest?.pattern()\n        const rrest = rest?.rest()\n        if (!rest || ((rp === '' || rp === '.') && !rrest)) {\n          // only HAS to be a dir if it ends in **/ or **/.\n          // but ending in ** will match files as well.\n          this.matches.add(t, absolute, rp === '' || rp === '.')\n        } else {\n          if (rp === '..') {\n            // this would mean you're matching **/.. at the fs root,\n            // and no thanks, I'm not gonna test that specific case.\n            /* c8 ignore start */\n            const tp = t.parent || t\n            /* c8 ignore stop */\n            if (!rrest) this.matches.add(tp, absolute, true)\n            else if (!this.hasWalkedCache.hasWalked(tp, rrest)) {\n              this.subwalks.add(tp, rrest)\n            }\n          }\n        }\n      } else if (p instanceof RegExp) {\n        this.subwalks.add(t, pattern)\n      }\n    }\n\n    return this\n  }\n\n  subwalkTargets(): Path[] {\n    return this.subwalks.keys()\n  }\n\n  child() {\n    return new Processor(this.opts, this.hasWalkedCache)\n  }\n\n  // return a new Processor containing the subwalks for each\n  // child entry, and a set of matches, and\n  // a hasWalkedCache that's a copy of this one\n  // then we're going to call\n  filterEntries(parent: Path, entries: Path[]): Processor {\n    const patterns = this.subwalks.get(parent)\n    // put matches and entry walks into the results processor\n    const results = this.child()\n    for (const e of entries) {\n      for (const pattern of patterns) {\n        const absolute = pattern.isAbsolute()\n        const p = pattern.pattern()\n        const rest = pattern.rest()\n        if (p === GLOBSTAR) {\n          results.testGlobstar(e, pattern, rest, absolute)\n        } else if (p instanceof RegExp) {\n          results.testRegExp(e, p, rest, absolute)\n        } else {\n          results.testString(e, p, rest, absolute)\n        }\n      }\n    }\n    return results\n  }\n\n  testGlobstar(\n    e: Path,\n    pattern: Pattern,\n    rest: Pattern | null,\n    absolute: boolean,\n  ) {\n    if (this.dot || !e.name.startsWith('.')) {\n      if (!pattern.hasMore()) {\n        this.matches.add(e, absolute, false)\n      }\n      if (e.canReaddir()) {\n        // if we're in follow mode or it's not a symlink, just keep\n        // testing the same pattern. If there's more after the globstar,\n        // then this symlink consumes the globstar. If not, then we can\n        // follow at most ONE symlink along the way, so we mark it, which\n        // also checks to ensure that it wasn't already marked.\n        if (this.follow || !e.isSymbolicLink()) {\n          this.subwalks.add(e, pattern)\n        } else if (e.isSymbolicLink()) {\n          if (rest && pattern.checkFollowGlobstar()) {\n            this.subwalks.add(e, rest)\n          } else if (pattern.markFollowGlobstar()) {\n            this.subwalks.add(e, pattern)\n          }\n        }\n      }\n    }\n    // if the NEXT thing matches this entry, then also add\n    // the rest.\n    if (rest) {\n      const rp = rest.pattern()\n      if (\n        typeof rp === 'string' &&\n        // dots and empty were handled already\n        rp !== '..' &&\n        rp !== '' &&\n        rp !== '.'\n      ) {\n        this.testString(e, rp, rest.rest(), absolute)\n      } else if (rp === '..') {\n        /* c8 ignore start */\n        const ep = e.parent || e\n        /* c8 ignore stop */\n        this.subwalks.add(ep, rest)\n      } else if (rp instanceof RegExp) {\n        this.testRegExp(e, rp, rest.rest(), absolute)\n      }\n    }\n  }\n\n  testRegExp(\n    e: Path,\n    p: MMRegExp,\n    rest: Pattern | null,\n    absolute: boolean,\n  ) {\n    if (!p.test(e.name)) return\n    if (!rest) {\n      this.matches.add(e, absolute, false)\n    } else {\n      this.subwalks.add(e, rest)\n    }\n  }\n\n  testString(e: Path, p: string, rest: Pattern | null, absolute: boolean) {\n    // should never happen?\n    if (!e.isNamed(p)) return\n    if (!rest) {\n      this.matches.add(e, absolute, false)\n    } else {\n      this.subwalks.add(e, rest)\n    }\n  }\n}\n", "/**\n * Single-use utility classes to provide functionality to the {@link Glob}\n * methods.\n *\n * @module\n */\nimport { Minipass } from 'minipass'\nimport { Path } from 'path-scurry'\nimport { Ignore, IgnoreLike } from './ignore.js'\n\n// XXX can we somehow make it so that it NEVER processes a given path more than\n// once, enough that the match set tracking is no longer needed?  that'd speed\n// things up a lot.  Or maybe bring back nounique, and skip it in that case?\n\n// a single minimatch set entry with 1 or more parts\nimport { Pattern } from './pattern.js'\nimport { Processor } from './processor.js'\n\nexport interface GlobWalkerOpts {\n  absolute?: boolean\n  allowWindowsEscape?: boolean\n  cwd?: string | URL\n  dot?: boolean\n  dotRelative?: boolean\n  follow?: boolean\n  ignore?: string | string[] | IgnoreLike\n  mark?: boolean\n  matchBase?: boolean\n  // Note: maxDepth here means \"maximum actual Path.depth()\",\n  // not \"maximum depth beyond cwd\"\n  maxDepth?: number\n  nobrace?: boolean\n  nocase?: boolean\n  nodir?: boolean\n  noext?: boolean\n  noglobstar?: boolean\n  platform?: NodeJS.Platform\n  posix?: boolean\n  realpath?: boolean\n  root?: string\n  stat?: boolean\n  signal?: AbortSignal\n  windowsPathsNoEscape?: boolean\n  withFileTypes?: boolean\n  includeChildMatches?: boolean\n}\n\nexport type GWOFileTypesTrue = GlobWalkerOpts & {\n  withFileTypes: true\n}\nexport type GWOFileTypesFalse = GlobWalkerOpts & {\n  withFileTypes: false\n}\nexport type GWOFileTypesUnset = GlobWalkerOpts & {\n  withFileTypes?: undefined\n}\n\nexport type Result<O extends GlobWalkerOpts> =\n  O extends GWOFileTypesTrue ? Path\n  : O extends GWOFileTypesFalse ? string\n  : O extends GWOFileTypesUnset ? string\n  : Path | string\n\nexport type Matches<O extends GlobWalkerOpts> =\n  O extends GWOFileTypesTrue ? Set<Path>\n  : O extends GWOFileTypesFalse ? Set<string>\n  : O extends GWOFileTypesUnset ? Set<string>\n  : Set<Path | string>\n\nexport type MatchStream<O extends GlobWalkerOpts> = Minipass<\n  Result<O>,\n  Result<O>\n>\n\nconst makeIgnore = (\n  ignore: string | string[] | IgnoreLike,\n  opts: GlobWalkerOpts,\n): IgnoreLike =>\n  typeof ignore === 'string' ? new Ignore([ignore], opts)\n  : Array.isArray(ignore) ? new Ignore(ignore, opts)\n  : ignore\n\n/**\n * basic walking utilities that all the glob walker types use\n */\nexport abstract class GlobUtil<O extends GlobWalkerOpts = GlobWalkerOpts> {\n  path: Path\n  patterns: Pattern[]\n  opts: O\n  seen: Set<Path> = new Set<Path>()\n  paused: boolean = false\n  aborted: boolean = false\n  #onResume: (() => any)[] = []\n  #ignore?: IgnoreLike\n  #sep: '\\\\' | '/'\n  signal?: AbortSignal\n  maxDepth: number\n  includeChildMatches: boolean\n\n  constructor(patterns: Pattern[], path: Path, opts: O)\n  constructor(patterns: Pattern[], path: Path, opts: O) {\n    this.patterns = patterns\n    this.path = path\n    this.opts = opts\n    this.#sep = !opts.posix && opts.platform === 'win32' ? '\\\\' : '/'\n    this.includeChildMatches = opts.includeChildMatches !== false\n    if (opts.ignore || !this.includeChildMatches) {\n      this.#ignore = makeIgnore(opts.ignore ?? [], opts)\n      if (\n        !this.includeChildMatches &&\n        typeof this.#ignore.add !== 'function'\n      ) {\n        const m = 'cannot ignore child matches, ignore lacks add() method.'\n        throw new Error(m)\n      }\n    }\n    // ignore, always set with maxDepth, but it's optional on the\n    // GlobOptions type\n    /* c8 ignore start */\n    this.maxDepth = opts.maxDepth || Infinity\n    /* c8 ignore stop */\n    if (opts.signal) {\n      this.signal = opts.signal\n      this.signal.addEventListener('abort', () => {\n        this.#onResume.length = 0\n      })\n    }\n  }\n\n  #ignored(path: Path): boolean {\n    return this.seen.has(path) || !!this.#ignore?.ignored?.(path)\n  }\n  #childrenIgnored(path: Path): boolean {\n    return !!this.#ignore?.childrenIgnored?.(path)\n  }\n\n  // backpressure mechanism\n  pause() {\n    this.paused = true\n  }\n  resume() {\n    /* c8 ignore start */\n    if (this.signal?.aborted) return\n    /* c8 ignore stop */\n    this.paused = false\n    let fn: (() => any) | undefined = undefined\n    while (!this.paused && (fn = this.#onResume.shift())) {\n      fn()\n    }\n  }\n  onResume(fn: () => any) {\n    if (this.signal?.aborted) return\n    /* c8 ignore start */\n    if (!this.paused) {\n      fn()\n    } else {\n      /* c8 ignore stop */\n      this.#onResume.push(fn)\n    }\n  }\n\n  // do the requisite realpath/stat checking, and return the path\n  // to add or undefined to filter it out.\n  async matchCheck(e: Path, ifDir: boolean): Promise<Path | undefined> {\n    if (ifDir && this.opts.nodir) return undefined\n    let rpc: Path | undefined\n    if (this.opts.realpath) {\n      rpc = e.realpathCached() || (await e.realpath())\n      if (!rpc) return undefined\n      e = rpc\n    }\n    const needStat = e.isUnknown() || this.opts.stat\n    const s = needStat ? await e.lstat() : e\n    if (this.opts.follow && this.opts.nodir && s?.isSymbolicLink()) {\n      const target = await s.realpath()\n      /* c8 ignore start */\n      if (target && (target.isUnknown() || this.opts.stat)) {\n        await target.lstat()\n      }\n      /* c8 ignore stop */\n    }\n    return this.matchCheckTest(s, ifDir)\n  }\n\n  matchCheckTest(e: Path | undefined, ifDir: boolean): Path | undefined {\n    return (\n        e &&\n          (this.maxDepth === Infinity || e.depth() <= this.maxDepth) &&\n          (!ifDir || e.canReaddir()) &&\n          (!this.opts.nodir || !e.isDirectory()) &&\n          (!this.opts.nodir ||\n            !this.opts.follow ||\n            !e.isSymbolicLink() ||\n            !e.realpathCached()?.isDirectory()) &&\n          !this.#ignored(e)\n      ) ?\n        e\n      : undefined\n  }\n\n  matchCheckSync(e: Path, ifDir: boolean): Path | undefined {\n    if (ifDir && this.opts.nodir) return undefined\n    let rpc: Path | undefined\n    if (this.opts.realpath) {\n      rpc = e.realpathCached() || e.realpathSync()\n      if (!rpc) return undefined\n      e = rpc\n    }\n    const needStat = e.isUnknown() || this.opts.stat\n    const s = needStat ? e.lstatSync() : e\n    if (this.opts.follow && this.opts.nodir && s?.isSymbolicLink()) {\n      const target = s.realpathSync()\n      if (target && (target?.isUnknown() || this.opts.stat)) {\n        target.lstatSync()\n      }\n    }\n    return this.matchCheckTest(s, ifDir)\n  }\n\n  abstract matchEmit(p: Result<O>): void\n  abstract matchEmit(p: string | Path): void\n\n  matchFinish(e: Path, absolute: boolean) {\n    if (this.#ignored(e)) return\n    // we know we have an ignore if this is false, but TS doesn't\n    if (!this.includeChildMatches && this.#ignore?.add) {\n      const ign = `${e.relativePosix()}/**`\n      this.#ignore.add(ign)\n    }\n    const abs =\n      this.opts.absolute === undefined ? absolute : this.opts.absolute\n    this.seen.add(e)\n    const mark = this.opts.mark && e.isDirectory() ? this.#sep : ''\n    // ok, we have what we need!\n    if (this.opts.withFileTypes) {\n      this.matchEmit(e)\n    } else if (abs) {\n      const abs = this.opts.posix ? e.fullpathPosix() : e.fullpath()\n      this.matchEmit(abs + mark)\n    } else {\n      const rel = this.opts.posix ? e.relativePosix() : e.relative()\n      const pre =\n        this.opts.dotRelative && !rel.startsWith('..' + this.#sep) ?\n          '.' + this.#sep\n        : ''\n      this.matchEmit(!rel ? '.' + mark : pre + rel + mark)\n    }\n  }\n\n  async match(e: Path, absolute: boolean, ifDir: boolean): Promise<void> {\n    const p = await this.matchCheck(e, ifDir)\n    if (p) this.matchFinish(p, absolute)\n  }\n\n  matchSync(e: Path, absolute: boolean, ifDir: boolean): void {\n    const p = this.matchCheckSync(e, ifDir)\n    if (p) this.matchFinish(p, absolute)\n  }\n\n  walkCB(target: Path, patterns: Pattern[], cb: () => any) {\n    /* c8 ignore start */\n    if (this.signal?.aborted) cb()\n    /* c8 ignore stop */\n    this.walkCB2(target, patterns, new Processor(this.opts), cb)\n  }\n\n  walkCB2(\n    target: Path,\n    patterns: Pattern[],\n    processor: Processor,\n    cb: () => any,\n  ) {\n    if (this.#childrenIgnored(target)) return cb()\n    if (this.signal?.aborted) cb()\n    if (this.paused) {\n      this.onResume(() => this.walkCB2(target, patterns, processor, cb))\n      return\n    }\n    processor.processPatterns(target, patterns)\n\n    // done processing.  all of the above is sync, can be abstracted out.\n    // subwalks is a map of paths to the entry filters they need\n    // matches is a map of paths to [absolute, ifDir] tuples.\n    let tasks = 1\n    const next = () => {\n      if (--tasks === 0) cb()\n    }\n\n    for (const [m, absolute, ifDir] of processor.matches.entries()) {\n      if (this.#ignored(m)) continue\n      tasks++\n      this.match(m, absolute, ifDir).then(() => next())\n    }\n\n    for (const t of processor.subwalkTargets()) {\n      if (this.maxDepth !== Infinity && t.depth() >= this.maxDepth) {\n        continue\n      }\n      tasks++\n      const childrenCached = t.readdirCached()\n      if (t.calledReaddir())\n        this.walkCB3(t, childrenCached, processor, next)\n      else {\n        t.readdirCB(\n          (_, entries) => this.walkCB3(t, entries, processor, next),\n          true,\n        )\n      }\n    }\n\n    next()\n  }\n\n  walkCB3(\n    target: Path,\n    entries: Path[],\n    processor: Processor,\n    cb: () => any,\n  ) {\n    processor = processor.filterEntries(target, entries)\n\n    let tasks = 1\n    const next = () => {\n      if (--tasks === 0) cb()\n    }\n\n    for (const [m, absolute, ifDir] of processor.matches.entries()) {\n      if (this.#ignored(m)) continue\n      tasks++\n      this.match(m, absolute, ifDir).then(() => next())\n    }\n    for (const [target, patterns] of processor.subwalks.entries()) {\n      tasks++\n      this.walkCB2(target, patterns, processor.child(), next)\n    }\n\n    next()\n  }\n\n  walkCBSync(target: Path, patterns: Pattern[], cb: () => any) {\n    /* c8 ignore start */\n    if (this.signal?.aborted) cb()\n    /* c8 ignore stop */\n    this.walkCB2Sync(target, patterns, new Processor(this.opts), cb)\n  }\n\n  walkCB2Sync(\n    target: Path,\n    patterns: Pattern[],\n    processor: Processor,\n    cb: () => any,\n  ) {\n    if (this.#childrenIgnored(target)) return cb()\n    if (this.signal?.aborted) cb()\n    if (this.paused) {\n      this.onResume(() =>\n        this.walkCB2Sync(target, patterns, processor, cb),\n      )\n      return\n    }\n    processor.processPatterns(target, patterns)\n\n    // done processing.  all of the above is sync, can be abstracted out.\n    // subwalks is a map of paths to the entry filters they need\n    // matches is a map of paths to [absolute, ifDir] tuples.\n    let tasks = 1\n    const next = () => {\n      if (--tasks === 0) cb()\n    }\n\n    for (const [m, absolute, ifDir] of processor.matches.entries()) {\n      if (this.#ignored(m)) continue\n      this.matchSync(m, absolute, ifDir)\n    }\n\n    for (const t of processor.subwalkTargets()) {\n      if (this.maxDepth !== Infinity && t.depth() >= this.maxDepth) {\n        continue\n      }\n      tasks++\n      const children = t.readdirSync()\n      this.walkCB3Sync(t, children, processor, next)\n    }\n\n    next()\n  }\n\n  walkCB3Sync(\n    target: Path,\n    entries: Path[],\n    processor: Processor,\n    cb: () => any,\n  ) {\n    processor = processor.filterEntries(target, entries)\n\n    let tasks = 1\n    const next = () => {\n      if (--tasks === 0) cb()\n    }\n\n    for (const [m, absolute, ifDir] of processor.matches.entries()) {\n      if (this.#ignored(m)) continue\n      this.matchSync(m, absolute, ifDir)\n    }\n    for (const [target, patterns] of processor.subwalks.entries()) {\n      tasks++\n      this.walkCB2Sync(target, patterns, processor.child(), next)\n    }\n\n    next()\n  }\n}\n\nexport class GlobWalker<\n  O extends GlobWalkerOpts = GlobWalkerOpts,\n> extends GlobUtil<O> {\n  matches = new Set<Result<O>>()\n\n  constructor(patterns: Pattern[], path: Path, opts: O) {\n    super(patterns, path, opts)\n  }\n\n  matchEmit(e: Result<O>): void {\n    this.matches.add(e)\n  }\n\n  async walk(): Promise<Set<Result<O>>> {\n    if (this.signal?.aborted) throw this.signal.reason\n    if (this.path.isUnknown()) {\n      await this.path.lstat()\n    }\n    await new Promise((res, rej) => {\n      this.walkCB(this.path, this.patterns, () => {\n        if (this.signal?.aborted) {\n          rej(this.signal.reason)\n        } else {\n          res(this.matches)\n        }\n      })\n    })\n    return this.matches\n  }\n\n  walkSync(): Set<Result<O>> {\n    if (this.signal?.aborted) throw this.signal.reason\n    if (this.path.isUnknown()) {\n      this.path.lstatSync()\n    }\n    // nothing for the callback to do, because this never pauses\n    this.walkCBSync(this.path, this.patterns, () => {\n      if (this.signal?.aborted) throw this.signal.reason\n    })\n    return this.matches\n  }\n}\n\nexport class GlobStream<\n  O extends GlobWalkerOpts = GlobWalkerOpts,\n> extends GlobUtil<O> {\n  results: Minipass<Result<O>, Result<O>>\n\n  constructor(patterns: Pattern[], path: Path, opts: O) {\n    super(patterns, path, opts)\n    this.results = new Minipass<Result<O>, Result<O>>({\n      signal: this.signal,\n      objectMode: true,\n    })\n    this.results.on('drain', () => this.resume())\n    this.results.on('resume', () => this.resume())\n  }\n\n  matchEmit(e: Result<O>): void {\n    this.results.write(e)\n    if (!this.results.flowing) this.pause()\n  }\n\n  stream(): MatchStream<O> {\n    const target = this.path\n    if (target.isUnknown()) {\n      target.lstat().then(() => {\n        this.walkCB(target, this.patterns, () => this.results.end())\n      })\n    } else {\n      this.walkCB(target, this.patterns, () => this.results.end())\n    }\n    return this.results\n  }\n\n  streamSync(): MatchStream<O> {\n    if (this.path.isUnknown()) {\n      this.path.lstatSync()\n    }\n    this.walkCBSync(this.path, this.patterns, () => this.results.end())\n    return this.results\n  }\n}\n", "import { Minimatch, MinimatchOptions } from 'minimatch'\nimport { Minipass } from 'minipass'\nimport { fileURLToPath } from 'node:url'\nimport {\n  FSOption,\n  Path,\n  PathScurry,\n  PathScurryDarwin,\n  PathScurryPosix,\n  PathScurryWin32,\n} from 'path-scurry'\nimport { IgnoreLike } from './ignore.js'\nimport { Pattern } from './pattern.js'\nimport { GlobStream, GlobWalker } from './walker.js'\n\nexport type MatchSet = Minimatch['set']\nexport type GlobParts = Exclude<Minimatch['globParts'], undefined>\n\n// if no process global, just call it linux.\n// so we default to case-sensitive, / separators\nconst defaultPlatform: NodeJS.Platform =\n  (\n    typeof process === 'object' &&\n    process &&\n    typeof process.platform === 'string'\n  ) ?\n    process.platform\n  : 'linux'\n\n/**\n * A `GlobOptions` object may be provided to any of the exported methods, and\n * must be provided to the `Glob` constructor.\n *\n * All options are optional, boolean, and false by default, unless otherwise\n * noted.\n *\n * All resolved options are added to the Glob object as properties.\n *\n * If you are running many `glob` operations, you can pass a Glob object as the\n * `options` argument to a subsequent operation to share the previously loaded\n * cache.\n */\nexport interface GlobOptions {\n  /**\n   * Set to `true` to always receive absolute paths for\n   * matched files. Set to `false` to always return relative paths.\n   *\n   * When this option is not set, absolute paths are returned for patterns\n   * that are absolute, and otherwise paths are returned that are relative\n   * to the `cwd` setting.\n   *\n   * This does _not_ make an extra system call to get\n   * the realpath, it only does string path resolution.\n   *\n   * Conflicts with {@link withFileTypes}\n   */\n  absolute?: boolean\n\n  /**\n   * Set to false to enable {@link windowsPathsNoEscape}\n   *\n   * @deprecated\n   */\n  allowWindowsEscape?: boolean\n\n  /**\n   * The current working directory in which to search. Defaults to\n   * `process.cwd()`.\n   *\n   * May be eiher a string path or a `file://` URL object or string.\n   */\n  cwd?: string | URL\n\n  /**\n   * Include `.dot` files in normal matches and `globstar`\n   * matches. Note that an explicit dot in a portion of the pattern\n   * will always match dot files.\n   */\n  dot?: boolean\n\n  /**\n   * Prepend all relative path strings with `./` (or `.\\` on Windows).\n   *\n   * Without this option, returned relative paths are \"bare\", so instead of\n   * returning `'./foo/bar'`, they are returned as `'foo/bar'`.\n   *\n   * Relative patterns starting with `'../'` are not prepended with `./`, even\n   * if this option is set.\n   */\n  dotRelative?: boolean\n\n  /**\n   * Follow symlinked directories when expanding `**`\n   * patterns. This can result in a lot of duplicate references in\n   * the presence of cyclic links, and make performance quite bad.\n   *\n   * By default, a `**` in a pattern will follow 1 symbolic link if\n   * it is not the first item in the pattern, or none if it is the\n   * first item in the pattern, following the same behavior as Bash.\n   */\n  follow?: boolean\n\n  /**\n   * string or string[], or an object with `ignore` and `ignoreChildren`\n   * methods.\n   *\n   * If a string or string[] is provided, then this is treated as a glob\n   * pattern or array of glob patterns to exclude from matches. To ignore all\n   * children within a directory, as well as the entry itself, append `'/**'`\n   * to the ignore pattern.\n   *\n   * **Note** `ignore` patterns are _always_ in `dot:true` mode, regardless of\n   * any other settings.\n   *\n   * If an object is provided that has `ignored(path)` and/or\n   * `childrenIgnored(path)` methods, then these methods will be called to\n   * determine whether any Path is a match or if its children should be\n   * traversed, respectively.\n   */\n  ignore?: string | string[] | IgnoreLike\n\n  /**\n   * Treat brace expansion like `{a,b}` as a \"magic\" pattern. Has no\n   * effect if {@link nobrace} is set.\n   *\n   * Only has effect on the {@link hasMagic} function.\n   */\n  magicalBraces?: boolean\n\n  /**\n   * Add a `/` character to directory matches. Note that this requires\n   * additional stat calls in some cases.\n   */\n  mark?: boolean\n\n  /**\n   * Perform a basename-only match if the pattern does not contain any slash\n   * characters. That is, `*.js` would be treated as equivalent to\n   * `**\\/*.js`, matching all js files in all directories.\n   */\n  matchBase?: boolean\n\n  /**\n   * Limit the directory traversal to a given depth below the cwd.\n   * Note that this does NOT prevent traversal to sibling folders,\n   * root patterns, and so on. It only limits the maximum folder depth\n   * that the walk will descend, relative to the cwd.\n   */\n  maxDepth?: number\n\n  /**\n   * Do not expand `{a,b}` and `{1..3}` brace sets.\n   */\n  nobrace?: boolean\n\n  /**\n   * Perform a case-insensitive match. This defaults to `true` on macOS and\n   * Windows systems, and `false` on all others.\n   *\n   * **Note** `nocase` should only be explicitly set when it is\n   * known that the filesystem's case sensitivity differs from the\n   * platform default. If set `true` on case-sensitive file\n   * systems, or `false` on case-insensitive file systems, then the\n   * walk may return more or less results than expected.\n   */\n  nocase?: boolean\n\n  /**\n   * Do not match directories, only files. (Note: to match\n   * _only_ directories, put a `/` at the end of the pattern.)\n   */\n  nodir?: boolean\n\n  /**\n   * Do not match \"extglob\" patterns such as `+(a|b)`.\n   */\n  noext?: boolean\n\n  /**\n   * Do not match `**` against multiple filenames. (Ie, treat it as a normal\n   * `*` instead.)\n   *\n   * Conflicts with {@link matchBase}\n   */\n  noglobstar?: boolean\n\n  /**\n   * Defaults to value of `process.platform` if available, or `'linux'` if\n   * not. Setting `platform:'win32'` on non-Windows systems may cause strange\n   * behavior.\n   */\n  platform?: NodeJS.Platform\n\n  /**\n   * Set to true to call `fs.realpath` on all of the\n   * results. In the case of an entry that cannot be resolved, the\n   * entry is omitted. This incurs a slight performance penalty, of\n   * course, because of the added system calls.\n   */\n  realpath?: boolean\n\n  /**\n   *\n   * A string path resolved against the `cwd` option, which\n   * is used as the starting point for absolute patterns that start\n   * with `/`, (but not drive letters or UNC paths on Windows).\n   *\n   * Note that this _doesn't_ necessarily limit the walk to the\n   * `root` directory, and doesn't affect the cwd starting point for\n   * non-absolute patterns. A pattern containing `..` will still be\n   * able to traverse out of the root directory, if it is not an\n   * actual root directory on the filesystem, and any non-absolute\n   * patterns will be matched in the `cwd`. For example, the\n   * pattern `/../*` with `{root:'/some/path'}` will return all\n   * files in `/some`, not all files in `/some/path`. The pattern\n   * `*` with `{root:'/some/path'}` will return all the entries in\n   * the cwd, not the entries in `/some/path`.\n   *\n   * To start absolute and non-absolute patterns in the same\n   * path, you can use `{root:''}`. However, be aware that on\n   * Windows systems, a pattern like `x:/*` or `//host/share/*` will\n   * _always_ start in the `x:/` or `//host/share` directory,\n   * regardless of the `root` setting.\n   */\n  root?: string\n\n  /**\n   * A [PathScurry](http://npm.im/path-scurry) object used\n   * to traverse the file system. If the `nocase` option is set\n   * explicitly, then any provided `scurry` object must match this\n   * setting.\n   */\n  scurry?: PathScurry\n\n  /**\n   * Call `lstat()` on all entries, whether required or not to determine\n   * if it's a valid match. When used with {@link withFileTypes}, this means\n   * that matches will include data such as modified time, permissions, and\n   * so on.  Note that this will incur a performance cost due to the added\n   * system calls.\n   */\n  stat?: boolean\n\n  /**\n   * An AbortSignal which will cancel the Glob walk when\n   * triggered.\n   */\n  signal?: AbortSignal\n\n  /**\n   * Use `\\\\` as a path separator _only_, and\n   *  _never_ as an escape character. If set, all `\\\\` characters are\n   *  replaced with `/` in the pattern.\n   *\n   *  Note that this makes it **impossible** to match against paths\n   *  containing literal glob pattern characters, but allows matching\n   *  with patterns constructed using `path.join()` and\n   *  `path.resolve()` on Windows platforms, mimicking the (buggy!)\n   *  behavior of Glob v7 and before on Windows. Please use with\n   *  caution, and be mindful of [the caveat below about Windows\n   *  paths](#windows). (For legacy reasons, this is also set if\n   *  `allowWindowsEscape` is set to the exact value `false`.)\n   */\n  windowsPathsNoEscape?: boolean\n\n  /**\n   * Return [PathScurry](http://npm.im/path-scurry)\n   * `Path` objects instead of strings. These are similar to a\n   * NodeJS `Dirent` object, but with additional methods and\n   * properties.\n   *\n   * Conflicts with {@link absolute}\n   */\n  withFileTypes?: boolean\n\n  /**\n   * An fs implementation to override some or all of the defaults.  See\n   * http://npm.im/path-scurry for details about what can be overridden.\n   */\n  fs?: FSOption\n\n  /**\n   * Just passed along to Minimatch.  Note that this makes all pattern\n   * matching operations slower and *extremely* noisy.\n   */\n  debug?: boolean\n\n  /**\n   * Return `/` delimited paths, even on Windows.\n   *\n   * On posix systems, this has no effect.  But, on Windows, it means that\n   * paths will be `/` delimited, and absolute paths will be their full\n   * resolved UNC forms, eg instead of `'C:\\\\foo\\\\bar'`, it would return\n   * `'//?/C:/foo/bar'`\n   */\n  posix?: boolean\n\n  /**\n   * Do not match any children of any matches. For example, the pattern\n   * `**\\/foo` would match `a/foo`, but not `a/foo/b/foo` in this mode.\n   *\n   * This is especially useful for cases like \"find all `node_modules`\n   * folders, but not the ones in `node_modules`\".\n   *\n   * In order to support this, the `Ignore` implementation must support an\n   * `add(pattern: string)` method. If using the default `Ignore` class, then\n   * this is fine, but if this is set to `false`, and a custom `Ignore` is\n   * provided that does not have an `add()` method, then it will throw an\n   * error.\n   *\n   * **Caveat** It *only* ignores matches that would be a descendant of a\n   * previous match, and only if that descendant is matched *after* the\n   * ancestor is encountered. Since the file system walk happens in\n   * indeterminate order, it's possible that a match will already be added\n   * before its ancestor, if multiple or braced patterns are used.\n   *\n   * For example:\n   *\n   * ```ts\n   * const results = await glob([\n   *   // likely to match first, since it's just a stat\n   *   'a/b/c/d/e/f',\n   *\n   *   // this pattern is more complicated! It must to various readdir()\n   *   // calls and test the results against a regular expression, and that\n   *   // is certainly going to take a little bit longer.\n   *   //\n   *   // So, later on, it encounters a match at 'a/b/c/d/e', but it's too\n   *   // late to ignore a/b/c/d/e/f, because it's already been emitted.\n   *   'a/[bdf]/?/[a-z]/*',\n   * ], { includeChildMatches: false })\n   * ```\n   *\n   * It's best to only set this to `false` if you can be reasonably sure that\n   * no components of the pattern will potentially match one another's file\n   * system descendants, or if the occasional included child entry will not\n   * cause problems.\n   *\n   * @default true\n   */\n  includeChildMatches?: boolean\n}\n\nexport type GlobOptionsWithFileTypesTrue = GlobOptions & {\n  withFileTypes: true\n  // string options not relevant if returning Path objects.\n  absolute?: undefined\n  mark?: undefined\n  posix?: undefined\n}\n\nexport type GlobOptionsWithFileTypesFalse = GlobOptions & {\n  withFileTypes?: false\n}\n\nexport type GlobOptionsWithFileTypesUnset = GlobOptions & {\n  withFileTypes?: undefined\n}\n\nexport type Result<Opts> =\n  Opts extends GlobOptionsWithFileTypesTrue ? Path\n  : Opts extends GlobOptionsWithFileTypesFalse ? string\n  : Opts extends GlobOptionsWithFileTypesUnset ? string\n  : string | Path\nexport type Results<Opts> = Result<Opts>[]\n\nexport type FileTypes<Opts> =\n  Opts extends GlobOptionsWithFileTypesTrue ? true\n  : Opts extends GlobOptionsWithFileTypesFalse ? false\n  : Opts extends GlobOptionsWithFileTypesUnset ? false\n  : boolean\n\n/**\n * An object that can perform glob pattern traversals.\n */\nexport class Glob<Opts extends GlobOptions> implements GlobOptions {\n  absolute?: boolean\n  cwd: string\n  root?: string\n  dot: boolean\n  dotRelative: boolean\n  follow: boolean\n  ignore?: string | string[] | IgnoreLike\n  magicalBraces: boolean\n  mark?: boolean\n  matchBase: boolean\n  maxDepth: number\n  nobrace: boolean\n  nocase: boolean\n  nodir: boolean\n  noext: boolean\n  noglobstar: boolean\n  pattern: string[]\n  platform: NodeJS.Platform\n  realpath: boolean\n  scurry: PathScurry\n  stat: boolean\n  signal?: AbortSignal\n  windowsPathsNoEscape: boolean\n  withFileTypes: FileTypes<Opts>\n  includeChildMatches: boolean\n\n  /**\n   * The options provided to the constructor.\n   */\n  opts: Opts\n\n  /**\n   * An array of parsed immutable {@link Pattern} objects.\n   */\n  patterns: Pattern[]\n\n  /**\n   * All options are stored as properties on the `Glob` object.\n   *\n   * See {@link GlobOptions} for full options descriptions.\n   *\n   * Note that a previous `Glob` object can be passed as the\n   * `GlobOptions` to another `Glob` instantiation to re-use settings\n   * and caches with a new pattern.\n   *\n   * Traversal functions can be called multiple times to run the walk\n   * again.\n   */\n  constructor(pattern: string | string[], opts: Opts) {\n    /* c8 ignore start */\n    if (!opts) throw new TypeError('glob options required')\n    /* c8 ignore stop */\n    this.withFileTypes = !!opts.withFileTypes as FileTypes<Opts>\n    this.signal = opts.signal\n    this.follow = !!opts.follow\n    this.dot = !!opts.dot\n    this.dotRelative = !!opts.dotRelative\n    this.nodir = !!opts.nodir\n    this.mark = !!opts.mark\n    if (!opts.cwd) {\n      this.cwd = ''\n    } else if (opts.cwd instanceof URL || opts.cwd.startsWith('file://')) {\n      opts.cwd = fileURLToPath(opts.cwd)\n    }\n    this.cwd = opts.cwd || ''\n    this.root = opts.root\n    this.magicalBraces = !!opts.magicalBraces\n    this.nobrace = !!opts.nobrace\n    this.noext = !!opts.noext\n    this.realpath = !!opts.realpath\n    this.absolute = opts.absolute\n    this.includeChildMatches = opts.includeChildMatches !== false\n\n    this.noglobstar = !!opts.noglobstar\n    this.matchBase = !!opts.matchBase\n    this.maxDepth =\n      typeof opts.maxDepth === 'number' ? opts.maxDepth : Infinity\n    this.stat = !!opts.stat\n    this.ignore = opts.ignore\n\n    if (this.withFileTypes && this.absolute !== undefined) {\n      throw new Error('cannot set absolute and withFileTypes:true')\n    }\n\n    if (typeof pattern === 'string') {\n      pattern = [pattern]\n    }\n\n    this.windowsPathsNoEscape =\n      !!opts.windowsPathsNoEscape ||\n      (opts as { allowWindowsEscape?: boolean }).allowWindowsEscape ===\n        false\n\n    if (this.windowsPathsNoEscape) {\n      pattern = pattern.map(p => p.replace(/\\\\/g, '/'))\n    }\n\n    if (this.matchBase) {\n      if (opts.noglobstar) {\n        throw new TypeError('base matching requires globstar')\n      }\n      pattern = pattern.map(p => (p.includes('/') ? p : `./**/${p}`))\n    }\n\n    this.pattern = pattern\n\n    this.platform = opts.platform || defaultPlatform\n    this.opts = { ...opts, platform: this.platform }\n    if (opts.scurry) {\n      this.scurry = opts.scurry\n      if (\n        opts.nocase !== undefined &&\n        opts.nocase !== opts.scurry.nocase\n      ) {\n        throw new Error('nocase option contradicts provided scurry option')\n      }\n    } else {\n      const Scurry =\n        opts.platform === 'win32' ? PathScurryWin32\n        : opts.platform === 'darwin' ? PathScurryDarwin\n        : opts.platform ? PathScurryPosix\n        : PathScurry\n      this.scurry = new Scurry(this.cwd, {\n        nocase: opts.nocase,\n        fs: opts.fs,\n      })\n    }\n    this.nocase = this.scurry.nocase\n\n    // If you do nocase:true on a case-sensitive file system, then\n    // we need to use regexps instead of strings for non-magic\n    // path portions, because statting `aBc` won't return results\n    // for the file `AbC` for example.\n    const nocaseMagicOnly =\n      this.platform === 'darwin' || this.platform === 'win32'\n\n    const mmo: MinimatchOptions = {\n      // default nocase based on platform\n      ...opts,\n      dot: this.dot,\n      matchBase: this.matchBase,\n      nobrace: this.nobrace,\n      nocase: this.nocase,\n      nocaseMagicOnly,\n      nocomment: true,\n      noext: this.noext,\n      nonegate: true,\n      optimizationLevel: 2,\n      platform: this.platform,\n      windowsPathsNoEscape: this.windowsPathsNoEscape,\n      debug: !!this.opts.debug,\n    }\n\n    const mms = this.pattern.map(p => new Minimatch(p, mmo))\n    const [matchSet, globParts] = mms.reduce(\n      (set: [MatchSet, GlobParts], m) => {\n        set[0].push(...m.set)\n        set[1].push(...m.globParts)\n        return set\n      },\n      [[], []],\n    )\n    this.patterns = matchSet.map((set, i) => {\n      const g = globParts[i]\n      /* c8 ignore start */\n      if (!g) throw new Error('invalid pattern object')\n      /* c8 ignore stop */\n      return new Pattern(set, g, 0, this.platform)\n    })\n  }\n\n  /**\n   * Returns a Promise that resolves to the results array.\n   */\n  async walk(): Promise<Results<Opts>>\n  async walk(): Promise<(string | Path)[]> {\n    // Walkers always return array of Path objects, so we just have to\n    // coerce them into the right shape.  It will have already called\n    // realpath() if the option was set to do so, so we know that's cached.\n    // start out knowing the cwd, at least\n    return [\n      ...(await new GlobWalker(this.patterns, this.scurry.cwd, {\n        ...this.opts,\n        maxDepth:\n          this.maxDepth !== Infinity ?\n            this.maxDepth + this.scurry.cwd.depth()\n          : Infinity,\n        platform: this.platform,\n        nocase: this.nocase,\n        includeChildMatches: this.includeChildMatches,\n      }).walk()),\n    ]\n  }\n\n  /**\n   * synchronous {@link Glob.walk}\n   */\n  walkSync(): Results<Opts>\n  walkSync(): (string | Path)[] {\n    return [\n      ...new GlobWalker(this.patterns, this.scurry.cwd, {\n        ...this.opts,\n        maxDepth:\n          this.maxDepth !== Infinity ?\n            this.maxDepth + this.scurry.cwd.depth()\n          : Infinity,\n        platform: this.platform,\n        nocase: this.nocase,\n        includeChildMatches: this.includeChildMatches,\n      }).walkSync(),\n    ]\n  }\n\n  /**\n   * Stream results asynchronously.\n   */\n  stream(): Minipass<Result<Opts>, Result<Opts>>\n  stream(): Minipass<string | Path, string | Path> {\n    return new GlobStream(this.patterns, this.scurry.cwd, {\n      ...this.opts,\n      maxDepth:\n        this.maxDepth !== Infinity ?\n          this.maxDepth + this.scurry.cwd.depth()\n        : Infinity,\n      platform: this.platform,\n      nocase: this.nocase,\n      includeChildMatches: this.includeChildMatches,\n    }).stream()\n  }\n\n  /**\n   * Stream results synchronously.\n   */\n  streamSync(): Minipass<Result<Opts>, Result<Opts>>\n  streamSync(): Minipass<string | Path, string | Path> {\n    return new GlobStream(this.patterns, this.scurry.cwd, {\n      ...this.opts,\n      maxDepth:\n        this.maxDepth !== Infinity ?\n          this.maxDepth + this.scurry.cwd.depth()\n        : Infinity,\n      platform: this.platform,\n      nocase: this.nocase,\n      includeChildMatches: this.includeChildMatches,\n    }).streamSync()\n  }\n\n  /**\n   * Default sync iteration function. Returns a Generator that\n   * iterates over the results.\n   */\n  iterateSync(): Generator<Result<Opts>, void, void> {\n    return this.streamSync()[Symbol.iterator]()\n  }\n  [Symbol.iterator]() {\n    return this.iterateSync()\n  }\n\n  /**\n   * Default async iteration function. Returns an AsyncGenerator that\n   * iterates over the results.\n   */\n  iterate(): AsyncGenerator<Result<Opts>, void, void> {\n    return this.stream()[Symbol.asyncIterator]()\n  }\n  [Symbol.asyncIterator]() {\n    return this.iterate()\n  }\n}\n", "import { Minimatch } from 'minimatch'\nimport { GlobOptions } from './glob.js'\n\n/**\n * Return true if the patterns provided contain any magic glob characters,\n * given the options provided.\n *\n * Brace expansion is not considered \"magic\" unless the `magicalBraces` option\n * is set, as brace expansion just turns one string into an array of strings.\n * So a pattern like `'x{a,b}y'` would return `false`, because `'xay'` and\n * `'xby'` both do not contain any magic glob characters, and it's treated the\n * same as if you had called it on `['xay', 'xby']`. When `magicalBraces:true`\n * is in the options, brace expansion _is_ treated as a pattern having magic.\n */\nexport const hasMagic = (\n  pattern: string | string[],\n  options: GlobOptions = {},\n): boolean => {\n  if (!Array.isArray(pattern)) {\n    pattern = [pattern]\n  }\n  for (const p of pattern) {\n    if (new Minimatch(p, options).hasMagic()) return true\n  }\n  return false\n}\n", "import { escape, unescape } from 'minimatch'\nimport { Minipass } from 'minipass'\nimport { Path } from 'path-scurry'\nimport type {\n  GlobOptions,\n  GlobOptionsWithFileTypesFalse,\n  GlobOptionsWithFileTypesTrue,\n  GlobOptionsWithFileTypesUnset,\n} from './glob.js'\nimport { Glob } from './glob.js'\nimport { hasMagic } from './has-magic.js'\n\nexport { escape, unescape } from 'minimatch'\nexport type {\n  FSOption,\n  Path,\n  WalkOptions,\n  WalkOptionsWithFileTypesTrue,\n  WalkOptionsWithFileTypesUnset,\n} from 'path-scurry'\nexport { Glob } from './glob.js'\nexport type {\n  GlobOptions,\n  GlobOptionsWithFileTypesFalse,\n  GlobOptionsWithFileTypesTrue,\n  GlobOptionsWithFileTypesUnset,\n} from './glob.js'\nexport { hasMagic } from './has-magic.js'\nexport { Ignore } from './ignore.js'\nexport type { IgnoreLike } from './ignore.js'\nexport type { MatchStream } from './walker.js'\n\n/**\n * Syncronous form of {@link globStream}. Will read all the matches as fast as\n * you consume them, even all in a single tick if you consume them immediately,\n * but will still respond to backpressure if they're not consumed immediately.\n */\nexport function globStreamSync(\n  pattern: string | string[],\n  options: GlobOptionsWithFileTypesTrue,\n): Minipass<Path, Path>\nexport function globStreamSync(\n  pattern: string | string[],\n  options: GlobOptionsWithFileTypesFalse,\n): Minipass<string, string>\nexport function globStreamSync(\n  pattern: string | string[],\n  options: GlobOptionsWithFileTypesUnset,\n): Minipass<string, string>\nexport function globStreamSync(\n  pattern: string | string[],\n  options: GlobOptions,\n): Minipass<Path, Path> | Minipass<string, string>\nexport function globStreamSync(\n  pattern: string | string[],\n  options: GlobOptions = {},\n) {\n  return new Glob(pattern, options).streamSync()\n}\n\n/**\n * Return a stream that emits all the strings or `Path` objects and\n * then emits `end` when completed.\n */\nexport function globStream(\n  pattern: string | string[],\n  options: GlobOptionsWithFileTypesFalse,\n): Minipass<string, string>\nexport function globStream(\n  pattern: string | string[],\n  options: GlobOptionsWithFileTypesTrue,\n): Minipass<Path, Path>\nexport function globStream(\n  pattern: string | string[],\n  options?: GlobOptionsWithFileTypesUnset | undefined,\n): Minipass<string, string>\nexport function globStream(\n  pattern: string | string[],\n  options: GlobOptions,\n): Minipass<Path, Path> | Minipass<string, string>\nexport function globStream(\n  pattern: string | string[],\n  options: GlobOptions = {},\n) {\n  return new Glob(pattern, options).stream()\n}\n\n/**\n * Synchronous form of {@link glob}\n */\nexport function globSync(\n  pattern: string | string[],\n  options: GlobOptionsWithFileTypesFalse,\n): string[]\nexport function globSync(\n  pattern: string | string[],\n  options: GlobOptionsWithFileTypesTrue,\n): Path[]\nexport function globSync(\n  pattern: string | string[],\n  options?: GlobOptionsWithFileTypesUnset | undefined,\n): string[]\nexport function globSync(\n  pattern: string | string[],\n  options: GlobOptions,\n): Path[] | string[]\nexport function globSync(\n  pattern: string | string[],\n  options: GlobOptions = {},\n) {\n  return new Glob(pattern, options).walkSync()\n}\n\n/**\n * Perform an asynchronous glob search for the pattern(s) specified. Returns\n * [Path](https://isaacs.github.io/path-scurry/classes/PathBase) objects if the\n * {@link withFileTypes} option is set to `true`. See {@link GlobOptions} for\n * full option descriptions.\n */\nasync function glob_(\n  pattern: string | string[],\n  options?: GlobOptionsWithFileTypesUnset | undefined,\n): Promise<string[]>\nasync function glob_(\n  pattern: string | string[],\n  options: GlobOptionsWithFileTypesTrue,\n): Promise<Path[]>\nasync function glob_(\n  pattern: string | string[],\n  options: GlobOptionsWithFileTypesFalse,\n): Promise<string[]>\nasync function glob_(\n  pattern: string | string[],\n  options: GlobOptions,\n): Promise<Path[] | string[]>\nasync function glob_(\n  pattern: string | string[],\n  options: GlobOptions = {},\n) {\n  return new Glob(pattern, options).walk()\n}\n\n/**\n * Return a sync iterator for walking glob pattern matches.\n */\nexport function globIterateSync(\n  pattern: string | string[],\n  options?: GlobOptionsWithFileTypesUnset | undefined,\n): Generator<string, void, void>\nexport function globIterateSync(\n  pattern: string | string[],\n  options: GlobOptionsWithFileTypesTrue,\n): Generator<Path, void, void>\nexport function globIterateSync(\n  pattern: string | string[],\n  options: GlobOptionsWithFileTypesFalse,\n): Generator<string, void, void>\nexport function globIterateSync(\n  pattern: string | string[],\n  options: GlobOptions,\n): Generator<Path, void, void> | Generator<string, void, void>\nexport function globIterateSync(\n  pattern: string | string[],\n  options: GlobOptions = {},\n) {\n  return new Glob(pattern, options).iterateSync()\n}\n\n/**\n * Return an async iterator for walking glob pattern matches.\n */\nexport function globIterate(\n  pattern: string | string[],\n  options?: GlobOptionsWithFileTypesUnset | undefined,\n): AsyncGenerator<string, void, void>\nexport function globIterate(\n  pattern: string | string[],\n  options: GlobOptionsWithFileTypesTrue,\n): AsyncGenerator<Path, void, void>\nexport function globIterate(\n  pattern: string | string[],\n  options: GlobOptionsWithFileTypesFalse,\n): AsyncGenerator<string, void, void>\nexport function globIterate(\n  pattern: string | string[],\n  options: GlobOptions,\n): AsyncGenerator<Path, void, void> | AsyncGenerator<string, void, void>\nexport function globIterate(\n  pattern: string | string[],\n  options: GlobOptions = {},\n) {\n  return new Glob(pattern, options).iterate()\n}\n\n// aliases: glob.sync.stream() glob.stream.sync() glob.sync() etc\nexport const streamSync = globStreamSync\nexport const stream = Object.assign(globStream, { sync: globStreamSync })\nexport const iterateSync = globIterateSync\nexport const iterate = Object.assign(globIterate, {\n  sync: globIterateSync,\n})\nexport const sync = Object.assign(globSync, {\n  stream: globStreamSync,\n  iterate: globIterateSync,\n})\n\nexport const glob = Object.assign(glob_, {\n  glob: glob_,\n  globSync,\n  sync,\n  globStream,\n  stream,\n  globStreamSync,\n  streamSync,\n  globIterate,\n  iterate,\n  globIterateSync,\n  iterateSync,\n  Glob,\n  hasMagic,\n  escape,\n  unescape,\n})\nglob.glob = glob\n", "'use strict'\n\nconst { glob } = require('glob')\nconst path = require('path')\n\nconst globify = (pattern) => pattern.split(path.win32.sep).join(path.posix.sep)\nmodule.exports = (path, options) => glob(globify(path), options)\n", "'use strict'\n\nconst fs = require('fs/promises')\nconst contentPath = require('./path')\nconst { hasContent } = require('./read')\n\nmodule.exports = rm\n\nasync function rm (cache, integrity) {\n  const content = await hasContent(cache, integrity)\n  // ~pretty~ sure we can't end up with a content lacking sri, but be safe\n  if (content && content.sri) {\n    await fs.rm(contentPath(cache, content.sri), { recursive: true, force: true })\n    return true\n  } else {\n    return false\n  }\n}\n", "'use strict'\n\nconst { rm } = require('fs/promises')\nconst glob = require('./util/glob.js')\nconst index = require('./entry-index')\nconst memo = require('./memoization')\nconst path = require('path')\nconst rmContent = require('./content/rm')\n\nmodule.exports = entry\nmodule.exports.entry = entry\n\nfunction entry (cache, key, opts) {\n  memo.clearMemoized()\n  return index.delete(cache, key, opts)\n}\n\nmodule.exports.content = content\n\nfunction content (cache, integrity) {\n  memo.clearMemoized()\n  return rmContent(cache, integrity)\n}\n\nmodule.exports.all = all\n\nasync function all (cache) {\n  memo.clearMemoized()\n  const paths = await glob(path.join(cache, '*(content-*|index-*)'), { silent: true, nosort: true })\n  return Promise.all(paths.map((p) => rm(p, { recursive: true, force: true })))\n}\n", "'use strict';\n\nmodule.exports = (string, count = 1, options) => {\n\toptions = {\n\t\tindent: ' ',\n\t\tincludeEmptyLines: false,\n\t\t...options\n\t};\n\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError(\n\t\t\t`Expected \\`input\\` to be a \\`string\\`, got \\`${typeof string}\\``\n\t\t);\n\t}\n\n\tif (typeof count !== 'number') {\n\t\tthrow new TypeError(\n\t\t\t`Expected \\`count\\` to be a \\`number\\`, got \\`${typeof count}\\``\n\t\t);\n\t}\n\n\tif (typeof options.indent !== 'string') {\n\t\tthrow new TypeError(\n\t\t\t`Expected \\`options.indent\\` to be a \\`string\\`, got \\`${typeof options.indent}\\``\n\t\t);\n\t}\n\n\tif (count === 0) {\n\t\treturn string;\n\t}\n\n\tconst regex = options.includeEmptyLines ? /^/gm : /^(?!\\s*$)/gm;\n\n\treturn string.replace(regex, options.indent.repeat(count));\n};\n", "'use strict';\nconst os = require('os');\n\nconst extractPathRegex = /\\s+at.*(?:\\(|\\s)(.*)\\)?/;\nconst pathRegex = /^(?:(?:(?:node|(?:internal\\/[\\w/]*|.*node_modules\\/(?:babel-polyfill|pirates)\\/.*)?\\w+)\\.js:\\d+:\\d+)|native)/;\nconst homeDir = typeof os.homedir === 'undefined' ? '' : os.homedir();\n\nmodule.exports = (stack, options) => {\n\toptions = Object.assign({pretty: false}, options);\n\n\treturn stack.replace(/\\\\/g, '/')\n\t\t.split('\\n')\n\t\t.filter(line => {\n\t\t\tconst pathMatches = line.match(extractPathRegex);\n\t\t\tif (pathMatches === null || !pathMatches[1]) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst match = pathMatches[1];\n\n\t\t\t// Electron\n\t\t\tif (\n\t\t\t\tmatch.includes('.app/Contents/Resources/electron.asar') ||\n\t\t\t\tmatch.includes('.app/Contents/Resources/default_app.asar')\n\t\t\t) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\treturn !pathRegex.test(match);\n\t\t})\n\t\t.filter(line => line.trim() !== '')\n\t\t.map(line => {\n\t\t\tif (options.pretty) {\n\t\t\t\treturn line.replace(extractPathRegex, (m, p1) => m.replace(p1, p1.replace(homeDir, '~')));\n\t\t\t}\n\n\t\t\treturn line;\n\t\t})\n\t\t.join('\\n');\n};\n", "'use strict';\nconst indentString = require('indent-string');\nconst cleanStack = require('clean-stack');\n\nconst cleanInternalStack = stack => stack.replace(/\\s+at .*aggregate-error\\/index.js:\\d+:\\d+\\)?/g, '');\n\nclass AggregateError extends Error {\n\tconstructor(errors) {\n\t\tif (!Array.isArray(errors)) {\n\t\t\tthrow new TypeError(`Expected input to be an Array, got ${typeof errors}`);\n\t\t}\n\n\t\terrors = [...errors].map(error => {\n\t\t\tif (error instanceof Error) {\n\t\t\t\treturn error;\n\t\t\t}\n\n\t\t\tif (error !== null && typeof error === 'object') {\n\t\t\t\t// Handle plain error objects with message property and/or possibly other metadata\n\t\t\t\treturn Object.assign(new Error(error.message), error);\n\t\t\t}\n\n\t\t\treturn new Error(error);\n\t\t});\n\n\t\tlet message = errors\n\t\t\t.map(error => {\n\t\t\t\t// The `stack` property is not standardized, so we can't assume it exists\n\t\t\t\treturn typeof error.stack === 'string' ? cleanInternalStack(cleanStack(error.stack)) : String(error);\n\t\t\t})\n\t\t\t.join('\\n');\n\t\tmessage = '\\n' + indentString(message, 4);\n\t\tsuper(message);\n\n\t\tthis.name = 'AggregateError';\n\n\t\tObject.defineProperty(this, '_errors', {value: errors});\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tfor (const error of this._errors) {\n\t\t\tyield error;\n\t\t}\n\t}\n}\n\nmodule.exports = AggregateError;\n", "'use strict';\nconst AggregateError = require('aggregate-error');\n\nmodule.exports = async (\n\titerable,\n\tmapper,\n\t{\n\t\tconcurrency = Infinity,\n\t\tstopOnError = true\n\t} = {}\n) => {\n\treturn new Promise((resolve, reject) => {\n\t\tif (typeof mapper !== 'function') {\n\t\t\tthrow new TypeError('Mapper function is required');\n\t\t}\n\n\t\tif (!((Number.isSafeInteger(concurrency) || concurrency === Infinity) && concurrency >= 1)) {\n\t\t\tthrow new TypeError(`Expected \\`concurrency\\` to be an integer from 1 and up or \\`Infinity\\`, got \\`${concurrency}\\` (${typeof concurrency})`);\n\t\t}\n\n\t\tconst result = [];\n\t\tconst errors = [];\n\t\tconst iterator = iterable[Symbol.iterator]();\n\t\tlet isRejected = false;\n\t\tlet isIterableDone = false;\n\t\tlet resolvingCount = 0;\n\t\tlet currentIndex = 0;\n\n\t\tconst next = () => {\n\t\t\tif (isRejected) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst nextItem = iterator.next();\n\t\t\tconst index = currentIndex;\n\t\t\tcurrentIndex++;\n\n\t\t\tif (nextItem.done) {\n\t\t\t\tisIterableDone = true;\n\n\t\t\t\tif (resolvingCount === 0) {\n\t\t\t\t\tif (!stopOnError && errors.length !== 0) {\n\t\t\t\t\t\treject(new AggregateError(errors));\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresolve(result);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresolvingCount++;\n\n\t\t\t(async () => {\n\t\t\t\ttry {\n\t\t\t\t\tconst element = await nextItem.value;\n\t\t\t\t\tresult[index] = await mapper(element, index);\n\t\t\t\t\tresolvingCount--;\n\t\t\t\t\tnext();\n\t\t\t\t} catch (error) {\n\t\t\t\t\tif (stopOnError) {\n\t\t\t\t\t\tisRejected = true;\n\t\t\t\t\t\treject(error);\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrors.push(error);\n\t\t\t\t\t\tresolvingCount--;\n\t\t\t\t\t\tnext();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})();\n\t\t};\n\n\t\tfor (let i = 0; i < concurrency; i++) {\n\t\t\tnext();\n\n\t\t\tif (isIterableDone) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t});\n};\n", "'use strict'\n\nconst {\n  mkdir,\n  readFile,\n  rm,\n  stat,\n  truncate,\n  writeFile,\n} = require('fs/promises')\nconst pMap = require('p-map')\nconst contentPath = require('./content/path')\nconst fsm = require('fs-minipass')\nconst glob = require('./util/glob.js')\nconst index = require('./entry-index')\nconst path = require('path')\nconst ssri = require('ssri')\n\nconst hasOwnProperty = (obj, key) =>\n  Object.prototype.hasOwnProperty.call(obj, key)\n\nconst verifyOpts = (opts) => ({\n  concurrency: 20,\n  log: { silly () {} },\n  ...opts,\n})\n\nmodule.exports = verify\n\nasync function verify (cache, opts) {\n  opts = verifyOpts(opts)\n  opts.log.silly('verify', 'verifying cache at', cache)\n\n  const steps = [\n    markStartTime,\n    fixPerms,\n    garbageCollect,\n    rebuildIndex,\n    cleanTmp,\n    writeVerifile,\n    markEndTime,\n  ]\n\n  const stats = {}\n  for (const step of steps) {\n    const label = step.name\n    const start = new Date()\n    const s = await step(cache, opts)\n    if (s) {\n      Object.keys(s).forEach((k) => {\n        stats[k] = s[k]\n      })\n    }\n    const end = new Date()\n    if (!stats.runTime) {\n      stats.runTime = {}\n    }\n    stats.runTime[label] = end - start\n  }\n  stats.runTime.total = stats.endTime - stats.startTime\n  opts.log.silly(\n    'verify',\n    'verification finished for',\n    cache,\n    'in',\n    `${stats.runTime.total}ms`\n  )\n  return stats\n}\n\nasync function markStartTime (cache, opts) {\n  return { startTime: new Date() }\n}\n\nasync function markEndTime (cache, opts) {\n  return { endTime: new Date() }\n}\n\nasync function fixPerms (cache, opts) {\n  opts.log.silly('verify', 'fixing cache permissions')\n  await mkdir(cache, { recursive: true })\n  return null\n}\n\n// Implements a naive mark-and-sweep tracing garbage collector.\n//\n// The algorithm is basically as follows:\n// 1. Read (and filter) all index entries (\"pointers\")\n// 2. Mark each integrity value as \"live\"\n// 3. Read entire filesystem tree in `content-vX/` dir\n// 4. If content is live, verify its checksum and delete it if it fails\n// 5. If content is not marked as live, rm it.\n//\nasync function garbageCollect (cache, opts) {\n  opts.log.silly('verify', 'garbage collecting content')\n  const indexStream = index.lsStream(cache)\n  const liveContent = new Set()\n  indexStream.on('data', (entry) => {\n    if (opts.filter && !opts.filter(entry)) {\n      return\n    }\n\n    // integrity is stringified, re-parse it so we can get each hash\n    const integrity = ssri.parse(entry.integrity)\n    for (const algo in integrity) {\n      liveContent.add(integrity[algo].toString())\n    }\n  })\n  await new Promise((resolve, reject) => {\n    indexStream.on('end', resolve).on('error', reject)\n  })\n  const contentDir = contentPath.contentDir(cache)\n  const files = await glob(path.join(contentDir, '**'), {\n    follow: false,\n    nodir: true,\n    nosort: true,\n  })\n  const stats = {\n    verifiedContent: 0,\n    reclaimedCount: 0,\n    reclaimedSize: 0,\n    badContentCount: 0,\n    keptSize: 0,\n  }\n  await pMap(\n    files,\n    async (f) => {\n      const split = f.split(/[/\\\\]/)\n      const digest = split.slice(split.length - 3).join('')\n      const algo = split[split.length - 4]\n      const integrity = ssri.fromHex(digest, algo)\n      if (liveContent.has(integrity.toString())) {\n        const info = await verifyContent(f, integrity)\n        if (!info.valid) {\n          stats.reclaimedCount++\n          stats.badContentCount++\n          stats.reclaimedSize += info.size\n        } else {\n          stats.verifiedContent++\n          stats.keptSize += info.size\n        }\n      } else {\n        // No entries refer to this content. We can delete.\n        stats.reclaimedCount++\n        const s = await stat(f)\n        await rm(f, { recursive: true, force: true })\n        stats.reclaimedSize += s.size\n      }\n      return stats\n    },\n    { concurrency: opts.concurrency }\n  )\n  return stats\n}\n\nasync function verifyContent (filepath, sri) {\n  const contentInfo = {}\n  try {\n    const { size } = await stat(filepath)\n    contentInfo.size = size\n    contentInfo.valid = true\n    await ssri.checkStream(new fsm.ReadStream(filepath), sri)\n  } catch (err) {\n    if (err.code === 'ENOENT') {\n      return { size: 0, valid: false }\n    }\n    if (err.code !== 'EINTEGRITY') {\n      throw err\n    }\n\n    await rm(filepath, { recursive: true, force: true })\n    contentInfo.valid = false\n  }\n  return contentInfo\n}\n\nasync function rebuildIndex (cache, opts) {\n  opts.log.silly('verify', 'rebuilding index')\n  const entries = await index.ls(cache)\n  const stats = {\n    missingContent: 0,\n    rejectedEntries: 0,\n    totalEntries: 0,\n  }\n  const buckets = {}\n  for (const k in entries) {\n    /* istanbul ignore else */\n    if (hasOwnProperty(entries, k)) {\n      const hashed = index.hashKey(k)\n      const entry = entries[k]\n      const excluded = opts.filter && !opts.filter(entry)\n      excluded && stats.rejectedEntries++\n      if (buckets[hashed] && !excluded) {\n        buckets[hashed].push(entry)\n      } else if (buckets[hashed] && excluded) {\n        // skip\n      } else if (excluded) {\n        buckets[hashed] = []\n        buckets[hashed]._path = index.bucketPath(cache, k)\n      } else {\n        buckets[hashed] = [entry]\n        buckets[hashed]._path = index.bucketPath(cache, k)\n      }\n    }\n  }\n  await pMap(\n    Object.keys(buckets),\n    (key) => {\n      return rebuildBucket(cache, buckets[key], stats, opts)\n    },\n    { concurrency: opts.concurrency }\n  )\n  return stats\n}\n\nasync function rebuildBucket (cache, bucket, stats, opts) {\n  await truncate(bucket._path)\n  // This needs to be serialized because cacache explicitly\n  // lets very racy bucket conflicts clobber each other.\n  for (const entry of bucket) {\n    const content = contentPath(cache, entry.integrity)\n    try {\n      await stat(content)\n      await index.insert(cache, entry.key, entry.integrity, {\n        metadata: entry.metadata,\n        size: entry.size,\n        time: entry.time,\n      })\n      stats.totalEntries++\n    } catch (err) {\n      if (err.code === 'ENOENT') {\n        stats.rejectedEntries++\n        stats.missingContent++\n      } else {\n        throw err\n      }\n    }\n  }\n}\n\nfunction cleanTmp (cache, opts) {\n  opts.log.silly('verify', 'cleaning tmp directory')\n  return rm(path.join(cache, 'tmp'), { recursive: true, force: true })\n}\n\nasync function writeVerifile (cache, opts) {\n  const verifile = path.join(cache, '_lastverified')\n  opts.log.silly('verify', 'writing verifile to ' + verifile)\n  return writeFile(verifile, `${Date.now()}`)\n}\n\nmodule.exports.lastRun = lastRun\n\nasync function lastRun (cache) {\n  const data = await readFile(path.join(cache, '_lastverified'), { encoding: 'utf8' })\n  return new Date(+data)\n}\n", "'use strict'\n\nconst { withTempDir } = require('@npmcli/fs')\nconst fs = require('fs/promises')\nconst path = require('path')\n\nmodule.exports.mkdir = mktmpdir\n\nasync function mktmpdir (cache, opts = {}) {\n  const { tmpPrefix } = opts\n  const tmpDir = path.join(cache, 'tmp')\n  await fs.mkdir(tmpDir, { recursive: true, owner: 'inherit' })\n  // do not use path.join(), it drops the trailing / if tmpPrefix is unset\n  const target = `${tmpDir}${path.sep}${tmpPrefix || ''}`\n  return fs.mkdtemp(target, { owner: 'inherit' })\n}\n\nmodule.exports.withTmp = withTmp\n\nfunction withTmp (cache, opts, cb) {\n  if (!cb) {\n    cb = opts\n    opts = {}\n  }\n  return withTempDir(path.join(cache, 'tmp'), cb, opts)\n}\n", "'use strict'\n\nconst get = require('./get.js')\nconst put = require('./put.js')\nconst rm = require('./rm.js')\nconst verify = require('./verify.js')\nconst { clearMemoized } = require('./memoization.js')\nconst tmp = require('./util/tmp.js')\nconst index = require('./entry-index.js')\n\nmodule.exports.index = {}\nmodule.exports.index.compact = index.compact\nmodule.exports.index.insert = index.insert\n\nmodule.exports.ls = index.ls\nmodule.exports.ls.stream = index.lsStream\n\nmodule.exports.get = get\nmodule.exports.get.byDigest = get.byDigest\nmodule.exports.get.stream = get.stream\nmodule.exports.get.stream.byDigest = get.stream.byDigest\nmodule.exports.get.copy = get.copy\nmodule.exports.get.copy.byDigest = get.copy.byDigest\nmodule.exports.get.info = get.info\nmodule.exports.get.hasContent = get.hasContent\n\nmodule.exports.put = put\nmodule.exports.put.stream = put.stream\n\nmodule.exports.rm = rm.entry\nmodule.exports.rm.all = rm.all\nmodule.exports.rm.entry = module.exports.rm\nmodule.exports.rm.content = rm.content\n\nmodule.exports.clearMemoized = clearMemoized\n\nmodule.exports.tmp = {}\nmodule.exports.tmp.mkdir = tmp.mkdir\nmodule.exports.tmp.withTmp = tmp.withTmp\n\nmodule.exports.verify = verify\nmodule.exports.verify.lastRun = verify.lastRun\n", "'use strict'\n\nconst MinipassPipeline = require('minipass-pipeline')\n\nclass CachingMinipassPipeline extends MinipassPipeline {\n  #events = []\n  #data = new Map()\n\n  constructor (opts, ...streams) {\n    // CRITICAL: do NOT pass the streams to the call to super(), this will start\n    // the flow of data and potentially cause the events we need to catch to emit\n    // before we've finished our own setup. instead we call super() with no args,\n    // finish our setup, and then push the streams into ourselves to start the\n    // data flow\n    super()\n    this.#events = opts.events\n\n    /* istanbul ignore next - coverage disabled because this is pointless to test here */\n    if (streams.length) {\n      this.push(...streams)\n    }\n  }\n\n  on (event, handler) {\n    if (this.#events.includes(event) && this.#data.has(event)) {\n      return handler(...this.#data.get(event))\n    }\n\n    return super.on(event, handler)\n  }\n\n  emit (event, ...data) {\n    if (this.#events.includes(event)) {\n      this.#data.set(event, data)\n    }\n\n    return super.emit(event, ...data)\n  }\n}\n\nmodule.exports = CachingMinipassPipeline\n", "const { URL, format } = require('url')\n\n// options passed to url.format() when generating a key\nconst formatOptions = {\n  auth: false,\n  fragment: false,\n  search: true,\n  unicode: false,\n}\n\n// returns a string to be used as the cache key for the Request\nconst cacheKey = (request) => {\n  const parsed = new URL(request.url)\n  return `make-fetch-happen:request-cache:${format(parsed, formatOptions)}`\n}\n\nmodule.exports = cacheKey\n", "'use strict';\n\nfunction assign(obj, props) {\n    for (const key in props) {\n        Object.defineProperty(obj, key, {\n            value: props[key],\n            enumerable: true,\n            configurable: true,\n        });\n    }\n\n    return obj;\n}\n\nfunction createError(err, code, props) {\n    if (!err || typeof err === 'string') {\n        throw new TypeError('Please pass an Error to err-code');\n    }\n\n    if (!props) {\n        props = {};\n    }\n\n    if (typeof code === 'object') {\n        props = code;\n        code = undefined;\n    }\n\n    if (code != null) {\n        props.code = code;\n    }\n\n    try {\n        return assign(err, props);\n    } catch (_) {\n        props.message = err.message;\n        props.stack = err.stack;\n\n        const ErrClass = function () {};\n\n        ErrClass.prototype = Object.create(Object.getPrototypeOf(err));\n\n        return assign(new ErrClass(), props);\n    }\n}\n\nmodule.exports = createError;\n", "function RetryOperation(timeouts, options) {\n  // Compatibility for the old (timeouts, retryForever) signature\n  if (typeof options === 'boolean') {\n    options = { forever: options };\n  }\n\n  this._originalTimeouts = JSON.parse(JSON.stringify(timeouts));\n  this._timeouts = timeouts;\n  this._options = options || {};\n  this._maxRetryTime = options && options.maxRetryTime || Infinity;\n  this._fn = null;\n  this._errors = [];\n  this._attempts = 1;\n  this._operationTimeout = null;\n  this._operationTimeoutCb = null;\n  this._timeout = null;\n  this._operationStart = null;\n\n  if (this._options.forever) {\n    this._cachedTimeouts = this._timeouts.slice(0);\n  }\n}\nmodule.exports = RetryOperation;\n\nRetryOperation.prototype.reset = function() {\n  this._attempts = 1;\n  this._timeouts = this._originalTimeouts;\n}\n\nRetryOperation.prototype.stop = function() {\n  if (this._timeout) {\n    clearTimeout(this._timeout);\n  }\n\n  this._timeouts       = [];\n  this._cachedTimeouts = null;\n};\n\nRetryOperation.prototype.retry = function(err) {\n  if (this._timeout) {\n    clearTimeout(this._timeout);\n  }\n\n  if (!err) {\n    return false;\n  }\n  var currentTime = new Date().getTime();\n  if (err && currentTime - this._operationStart >= this._maxRetryTime) {\n    this._errors.unshift(new Error('RetryOperation timeout occurred'));\n    return false;\n  }\n\n  this._errors.push(err);\n\n  var timeout = this._timeouts.shift();\n  if (timeout === undefined) {\n    if (this._cachedTimeouts) {\n      // retry forever, only keep last error\n      this._errors.splice(this._errors.length - 1, this._errors.length);\n      this._timeouts = this._cachedTimeouts.slice(0);\n      timeout = this._timeouts.shift();\n    } else {\n      return false;\n    }\n  }\n\n  var self = this;\n  var timer = setTimeout(function() {\n    self._attempts++;\n\n    if (self._operationTimeoutCb) {\n      self._timeout = setTimeout(function() {\n        self._operationTimeoutCb(self._attempts);\n      }, self._operationTimeout);\n\n      if (self._options.unref) {\n          self._timeout.unref();\n      }\n    }\n\n    self._fn(self._attempts);\n  }, timeout);\n\n  if (this._options.unref) {\n      timer.unref();\n  }\n\n  return true;\n};\n\nRetryOperation.prototype.attempt = function(fn, timeoutOps) {\n  this._fn = fn;\n\n  if (timeoutOps) {\n    if (timeoutOps.timeout) {\n      this._operationTimeout = timeoutOps.timeout;\n    }\n    if (timeoutOps.cb) {\n      this._operationTimeoutCb = timeoutOps.cb;\n    }\n  }\n\n  var self = this;\n  if (this._operationTimeoutCb) {\n    this._timeout = setTimeout(function() {\n      self._operationTimeoutCb();\n    }, self._operationTimeout);\n  }\n\n  this._operationStart = new Date().getTime();\n\n  this._fn(this._attempts);\n};\n\nRetryOperation.prototype.try = function(fn) {\n  console.log('Using RetryOperation.try() is deprecated');\n  this.attempt(fn);\n};\n\nRetryOperation.prototype.start = function(fn) {\n  console.log('Using RetryOperation.start() is deprecated');\n  this.attempt(fn);\n};\n\nRetryOperation.prototype.start = RetryOperation.prototype.try;\n\nRetryOperation.prototype.errors = function() {\n  return this._errors;\n};\n\nRetryOperation.prototype.attempts = function() {\n  return this._attempts;\n};\n\nRetryOperation.prototype.mainError = function() {\n  if (this._errors.length === 0) {\n    return null;\n  }\n\n  var counts = {};\n  var mainError = null;\n  var mainErrorCount = 0;\n\n  for (var i = 0; i < this._errors.length; i++) {\n    var error = this._errors[i];\n    var message = error.message;\n    var count = (counts[message] || 0) + 1;\n\n    counts[message] = count;\n\n    if (count >= mainErrorCount) {\n      mainError = error;\n      mainErrorCount = count;\n    }\n  }\n\n  return mainError;\n};\n", "var RetryOperation = require('./retry_operation');\n\nexports.operation = function(options) {\n  var timeouts = exports.timeouts(options);\n  return new RetryOperation(timeouts, {\n      forever: options && options.forever,\n      unref: options && options.unref,\n      maxRetryTime: options && options.maxRetryTime\n  });\n};\n\nexports.timeouts = function(options) {\n  if (options instanceof Array) {\n    return [].concat(options);\n  }\n\n  var opts = {\n    retries: 10,\n    factor: 2,\n    minTimeout: 1 * 1000,\n    maxTimeout: Infinity,\n    randomize: false\n  };\n  for (var key in options) {\n    opts[key] = options[key];\n  }\n\n  if (opts.minTimeout > opts.maxTimeout) {\n    throw new Error('minTimeout is greater than maxTimeout');\n  }\n\n  var timeouts = [];\n  for (var i = 0; i < opts.retries; i++) {\n    timeouts.push(this.createTimeout(i, opts));\n  }\n\n  if (options && options.forever && !timeouts.length) {\n    timeouts.push(this.createTimeout(i, opts));\n  }\n\n  // sort the array numerically ascending\n  timeouts.sort(function(a,b) {\n    return a - b;\n  });\n\n  return timeouts;\n};\n\nexports.createTimeout = function(attempt, opts) {\n  var random = (opts.randomize)\n    ? (Math.random() + 1)\n    : 1;\n\n  var timeout = Math.round(random * opts.minTimeout * Math.pow(opts.factor, attempt));\n  timeout = Math.min(timeout, opts.maxTimeout);\n\n  return timeout;\n};\n\nexports.wrap = function(obj, options, methods) {\n  if (options instanceof Array) {\n    methods = options;\n    options = null;\n  }\n\n  if (!methods) {\n    methods = [];\n    for (var key in obj) {\n      if (typeof obj[key] === 'function') {\n        methods.push(key);\n      }\n    }\n  }\n\n  for (var i = 0; i < methods.length; i++) {\n    var method   = methods[i];\n    var original = obj[method];\n\n    obj[method] = function retryWrapper(original) {\n      var op       = exports.operation(options);\n      var args     = Array.prototype.slice.call(arguments, 1);\n      var callback = args.pop();\n\n      args.push(function(err) {\n        if (op.retry(err)) {\n          return;\n        }\n        if (err) {\n          arguments[0] = op.mainError();\n        }\n        callback.apply(this, arguments);\n      });\n\n      op.attempt(function() {\n        original.apply(obj, args);\n      });\n    }.bind(obj, original);\n    obj[method].options = options;\n  }\n};\n", "module.exports = require('./lib/retry');", "'use strict';\n\nvar errcode = require('err-code');\nvar retry = require('retry');\n\nvar hasOwn = Object.prototype.hasOwnProperty;\n\nfunction isRetryError(err) {\n    return err && err.code === 'EPROMISERETRY' && hasOwn.call(err, 'retried');\n}\n\nfunction promiseRetry(fn, options) {\n    var temp;\n    var operation;\n\n    if (typeof fn === 'object' && typeof options === 'function') {\n        // Swap options and fn when using alternate signature (options, fn)\n        temp = options;\n        options = fn;\n        fn = temp;\n    }\n\n    operation = retry.operation(options);\n\n    return new Promise(function (resolve, reject) {\n        operation.attempt(function (number) {\n            Promise.resolve()\n            .then(function () {\n                return fn(function (err) {\n                    if (isRetryError(err)) {\n                        err = err.retried;\n                    }\n\n                    throw errcode(new Error('Retrying'), 'EPROMISERETRY', { retried: err });\n                }, number);\n            })\n            .then(resolve, function (err) {\n                if (isRetryError(err)) {\n                    err = err.retried;\n\n                    if (operation.retry(err || new Error())) {\n                        return;\n                    }\n                }\n\n                reject(err);\n            });\n        });\n    });\n}\n\nmodule.exports = promiseRetry;\n", "'use strict'\n\nmodule.exports = !!(\n  (process.env.LAMBDA_TASK_ROOT && process.env.AWS_EXECUTION_ENV) ||\n  false\n)\n", "const LRUCache = require('lru-cache')\nconst dns = require('dns')\n\nconst defaultOptions = exports.defaultOptions = {\n  family: undefined,\n  hints: dns.ADDRCONFIG,\n  all: false,\n  verbatim: undefined,\n}\n\nconst lookupCache = exports.lookupCache = new LRUCache({ max: 50 })\n\n// this is a factory so that each request can have its own opts (i.e. ttl)\n// while still sharing the cache across all requests\nexports.getLookup = (dnsOptions) => {\n  return (hostname, options, callback) => {\n    if (typeof options === 'function') {\n      callback = options\n      options = null\n    } else if (typeof options === 'number') {\n      options = { family: options }\n    }\n\n    options = { ...defaultOptions, ...options }\n\n    const key = JSON.stringify({\n      hostname,\n      family: options.family,\n      hints: options.hints,\n      all: options.all,\n      verbatim: options.verbatim,\n    })\n\n    if (lookupCache.has(key)) {\n      const [address, family] = lookupCache.get(key)\n      process.nextTick(callback, null, address, family)\n      return\n    }\n\n    dnsOptions.lookup(hostname, options, (err, address, family) => {\n      if (err) {\n        return callback(err)\n      }\n\n      lookupCache.set(key, [address, family], { ttl: dnsOptions.ttl })\n      return callback(null, address, family)\n    })\n  }\n}\n", "/*!\n * humanize-ms - index.js\n * Copyright(c) 2014 dead_horse <dead_horse@qq.com>\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module dependencies.\n */\n\nvar util = require('util');\nvar ms = require('ms');\n\nmodule.exports = function (t) {\n  if (typeof t === 'number') return t;\n  var r = ms(t);\n  if (r === undefined) {\n    var err = new Error(util.format('humanize-ms(%j) result undefined', t));\n    console.warn(err.stack);\n  }\n  return r;\n};\n", "'use strict';\n\nmodule.exports = {\n  // agent\n  CURRENT_ID: Symbol('agentkeepalive#currentId'),\n  CREATE_ID: Symbol('agentkeepalive#createId'),\n  INIT_SOCKET: Symbol('agentkeepalive#initSocket'),\n  CREATE_HTTPS_CONNECTION: Symbol('agentkeepalive#createHttpsConnection'),\n  // socket\n  SOCKET_CREATED_TIME: Symbol('agentkeepalive#socketCreatedTime'),\n  SOCKET_NAME: Symbol('agentkeepalive#socketName'),\n  SOCKET_REQUEST_COUNT: Symbol('agentkeepalive#socketRequestCount'),\n  SOCKET_REQUEST_FINISHED_COUNT: Symbol('agentkeepalive#socketRequestFinishedCount'),\n};\n", "'use strict';\n\nconst OriginalAgent = require('http').Agent;\nconst ms = require('humanize-ms');\nconst debug = require('util').debuglog('agentkeepalive');\nconst {\n  INIT_SOCKET,\n  CURRENT_ID,\n  CREATE_ID,\n  SOCKET_CREATED_TIME,\n  SOCKET_NAME,\n  SOCKET_REQUEST_COUNT,\n  SOCKET_REQUEST_FINISHED_COUNT,\n} = require('./constants');\n\n// OriginalAgent come from\n// - https://github.com/nodejs/node/blob/v8.12.0/lib/_http_agent.js\n// - https://github.com/nodejs/node/blob/v10.12.0/lib/_http_agent.js\n\n// node <= 10\nlet defaultTimeoutListenerCount = 1;\nconst majorVersion = parseInt(process.version.split('.', 1)[0].substring(1));\nif (majorVersion >= 11 && majorVersion <= 12) {\n  defaultTimeoutListenerCount = 2;\n} else if (majorVersion >= 13) {\n  defaultTimeoutListenerCount = 3;\n}\n\nfunction deprecate(message) {\n  console.log('[agentkeepalive:deprecated] %s', message);\n}\n\nclass Agent extends OriginalAgent {\n  constructor(options) {\n    options = options || {};\n    options.keepAlive = options.keepAlive !== false;\n    // default is keep-alive and 4s free socket timeout\n    // see https://medium.com/ssense-tech/reduce-networking-errors-in-nodejs-23b4eb9f2d83\n    if (options.freeSocketTimeout === undefined) {\n      options.freeSocketTimeout = 4000;\n    }\n    // Legacy API: keepAliveTimeout should be rename to `freeSocketTimeout`\n    if (options.keepAliveTimeout) {\n      deprecate('options.keepAliveTimeout is deprecated, please use options.freeSocketTimeout instead');\n      options.freeSocketTimeout = options.keepAliveTimeout;\n      delete options.keepAliveTimeout;\n    }\n    // Legacy API: freeSocketKeepAliveTimeout should be rename to `freeSocketTimeout`\n    if (options.freeSocketKeepAliveTimeout) {\n      deprecate('options.freeSocketKeepAliveTimeout is deprecated, please use options.freeSocketTimeout instead');\n      options.freeSocketTimeout = options.freeSocketKeepAliveTimeout;\n      delete options.freeSocketKeepAliveTimeout;\n    }\n\n    // Sets the socket to timeout after timeout milliseconds of inactivity on the socket.\n    // By default is double free socket timeout.\n    if (options.timeout === undefined) {\n      // make sure socket default inactivity timeout >= 8s\n      options.timeout = Math.max(options.freeSocketTimeout * 2, 8000);\n    }\n\n    // support humanize format\n    options.timeout = ms(options.timeout);\n    options.freeSocketTimeout = ms(options.freeSocketTimeout);\n    options.socketActiveTTL = options.socketActiveTTL ? ms(options.socketActiveTTL) : 0;\n\n    super(options);\n\n    this[CURRENT_ID] = 0;\n\n    // create socket success counter\n    this.createSocketCount = 0;\n    this.createSocketCountLastCheck = 0;\n\n    this.createSocketErrorCount = 0;\n    this.createSocketErrorCountLastCheck = 0;\n\n    this.closeSocketCount = 0;\n    this.closeSocketCountLastCheck = 0;\n\n    // socket error event count\n    this.errorSocketCount = 0;\n    this.errorSocketCountLastCheck = 0;\n\n    // request finished counter\n    this.requestCount = 0;\n    this.requestCountLastCheck = 0;\n\n    // including free socket timeout counter\n    this.timeoutSocketCount = 0;\n    this.timeoutSocketCountLastCheck = 0;\n\n    this.on('free', socket => {\n      // https://github.com/nodejs/node/pull/32000\n      // Node.js native agent will check socket timeout eqs agent.options.timeout.\n      // Use the ttl or freeSocketTimeout to overwrite.\n      const timeout = this.calcSocketTimeout(socket);\n      if (timeout > 0 && socket.timeout !== timeout) {\n        socket.setTimeout(timeout);\n      }\n    });\n  }\n\n  get freeSocketKeepAliveTimeout() {\n    deprecate('agent.freeSocketKeepAliveTimeout is deprecated, please use agent.options.freeSocketTimeout instead');\n    return this.options.freeSocketTimeout;\n  }\n\n  get timeout() {\n    deprecate('agent.timeout is deprecated, please use agent.options.timeout instead');\n    return this.options.timeout;\n  }\n\n  get socketActiveTTL() {\n    deprecate('agent.socketActiveTTL is deprecated, please use agent.options.socketActiveTTL instead');\n    return this.options.socketActiveTTL;\n  }\n\n  calcSocketTimeout(socket) {\n    /**\n     * return <= 0: should free socket\n     * return > 0: should update socket timeout\n     * return undefined: not find custom timeout\n     */\n    let freeSocketTimeout = this.options.freeSocketTimeout;\n    const socketActiveTTL = this.options.socketActiveTTL;\n    if (socketActiveTTL) {\n      // check socketActiveTTL\n      const aliveTime = Date.now() - socket[SOCKET_CREATED_TIME];\n      const diff = socketActiveTTL - aliveTime;\n      if (diff <= 0) {\n        return diff;\n      }\n      if (freeSocketTimeout && diff < freeSocketTimeout) {\n        freeSocketTimeout = diff;\n      }\n    }\n    // set freeSocketTimeout\n    if (freeSocketTimeout) {\n      // set free keepalive timer\n      // try to use socket custom freeSocketTimeout first, support headers['keep-alive']\n      // https://github.com/node-modules/urllib/blob/b76053020923f4d99a1c93cf2e16e0c5ba10bacf/lib/urllib.js#L498\n      const customFreeSocketTimeout = socket.freeSocketTimeout || socket.freeSocketKeepAliveTimeout;\n      return customFreeSocketTimeout || freeSocketTimeout;\n    }\n  }\n\n  keepSocketAlive(socket) {\n    const result = super.keepSocketAlive(socket);\n    // should not keepAlive, do nothing\n    if (!result) return result;\n\n    const customTimeout = this.calcSocketTimeout(socket);\n    if (typeof customTimeout === 'undefined') {\n      return true;\n    }\n    if (customTimeout <= 0) {\n      debug('%s(requests: %s, finished: %s) free but need to destroy by TTL, request count %s, diff is %s',\n        socket[SOCKET_NAME], socket[SOCKET_REQUEST_COUNT], socket[SOCKET_REQUEST_FINISHED_COUNT], customTimeout);\n      return false;\n    }\n    if (socket.timeout !== customTimeout) {\n      socket.setTimeout(customTimeout);\n    }\n    return true;\n  }\n\n  // only call on addRequest\n  reuseSocket(...args) {\n    // reuseSocket(socket, req)\n    super.reuseSocket(...args);\n    const socket = args[0];\n    const req = args[1];\n    req.reusedSocket = true;\n    const agentTimeout = this.options.timeout;\n    if (getSocketTimeout(socket) !== agentTimeout) {\n      // reset timeout before use\n      socket.setTimeout(agentTimeout);\n      debug('%s reset timeout to %sms', socket[SOCKET_NAME], agentTimeout);\n    }\n    socket[SOCKET_REQUEST_COUNT]++;\n    debug('%s(requests: %s, finished: %s) reuse on addRequest, timeout %sms',\n      socket[SOCKET_NAME], socket[SOCKET_REQUEST_COUNT], socket[SOCKET_REQUEST_FINISHED_COUNT],\n      getSocketTimeout(socket));\n  }\n\n  [CREATE_ID]() {\n    const id = this[CURRENT_ID]++;\n    if (this[CURRENT_ID] === Number.MAX_SAFE_INTEGER) this[CURRENT_ID] = 0;\n    return id;\n  }\n\n  [INIT_SOCKET](socket, options) {\n    // bugfix here.\n    // https on node 8, 10 won't set agent.options.timeout by default\n    // TODO: need to fix on node itself\n    if (options.timeout) {\n      const timeout = getSocketTimeout(socket);\n      if (!timeout) {\n        socket.setTimeout(options.timeout);\n      }\n    }\n\n    if (this.options.keepAlive) {\n      // Disable Nagle's algorithm: http://blog.caustik.com/2012/04/08/scaling-node-js-to-100k-concurrent-connections/\n      // https://fengmk2.com/benchmark/nagle-algorithm-delayed-ack-mock.html\n      socket.setNoDelay(true);\n    }\n    this.createSocketCount++;\n    if (this.options.socketActiveTTL) {\n      socket[SOCKET_CREATED_TIME] = Date.now();\n    }\n    // don't show the hole '-----BEGIN CERTIFICATE----' key string\n    socket[SOCKET_NAME] = `sock[${this[CREATE_ID]()}#${options._agentKey}]`.split('-----BEGIN', 1)[0];\n    socket[SOCKET_REQUEST_COUNT] = 1;\n    socket[SOCKET_REQUEST_FINISHED_COUNT] = 0;\n    installListeners(this, socket, options);\n  }\n\n  createConnection(options, oncreate) {\n    let called = false;\n    const onNewCreate = (err, socket) => {\n      if (called) return;\n      called = true;\n\n      if (err) {\n        this.createSocketErrorCount++;\n        return oncreate(err);\n      }\n      this[INIT_SOCKET](socket, options);\n      oncreate(err, socket);\n    };\n\n    const newSocket = super.createConnection(options, onNewCreate);\n    if (newSocket) onNewCreate(null, newSocket);\n    return newSocket;\n  }\n\n  get statusChanged() {\n    const changed = this.createSocketCount !== this.createSocketCountLastCheck ||\n      this.createSocketErrorCount !== this.createSocketErrorCountLastCheck ||\n      this.closeSocketCount !== this.closeSocketCountLastCheck ||\n      this.errorSocketCount !== this.errorSocketCountLastCheck ||\n      this.timeoutSocketCount !== this.timeoutSocketCountLastCheck ||\n      this.requestCount !== this.requestCountLastCheck;\n    if (changed) {\n      this.createSocketCountLastCheck = this.createSocketCount;\n      this.createSocketErrorCountLastCheck = this.createSocketErrorCount;\n      this.closeSocketCountLastCheck = this.closeSocketCount;\n      this.errorSocketCountLastCheck = this.errorSocketCount;\n      this.timeoutSocketCountLastCheck = this.timeoutSocketCount;\n      this.requestCountLastCheck = this.requestCount;\n    }\n    return changed;\n  }\n\n  getCurrentStatus() {\n    return {\n      createSocketCount: this.createSocketCount,\n      createSocketErrorCount: this.createSocketErrorCount,\n      closeSocketCount: this.closeSocketCount,\n      errorSocketCount: this.errorSocketCount,\n      timeoutSocketCount: this.timeoutSocketCount,\n      requestCount: this.requestCount,\n      freeSockets: inspect(this.freeSockets),\n      sockets: inspect(this.sockets),\n      requests: inspect(this.requests),\n    };\n  }\n}\n\n// node 8 don't has timeout attribute on socket\n// https://github.com/nodejs/node/pull/21204/files#diff-e6ef024c3775d787c38487a6309e491dR408\nfunction getSocketTimeout(socket) {\n  return socket.timeout || socket._idleTimeout;\n}\n\nfunction installListeners(agent, socket, options) {\n  debug('%s create, timeout %sms', socket[SOCKET_NAME], getSocketTimeout(socket));\n\n  // listener socket events: close, timeout, error, free\n  function onFree() {\n    // create and socket.emit('free') logic\n    // https://github.com/nodejs/node/blob/master/lib/_http_agent.js#L311\n    // no req on the socket, it should be the new socket\n    if (!socket._httpMessage && socket[SOCKET_REQUEST_COUNT] === 1) return;\n\n    socket[SOCKET_REQUEST_FINISHED_COUNT]++;\n    agent.requestCount++;\n    debug('%s(requests: %s, finished: %s) free',\n      socket[SOCKET_NAME], socket[SOCKET_REQUEST_COUNT], socket[SOCKET_REQUEST_FINISHED_COUNT]);\n\n    // should reuse on pedding requests?\n    const name = agent.getName(options);\n    if (socket.writable && agent.requests[name] && agent.requests[name].length) {\n      // will be reuse on agent free listener\n      socket[SOCKET_REQUEST_COUNT]++;\n      debug('%s(requests: %s, finished: %s) will be reuse on agent free event',\n        socket[SOCKET_NAME], socket[SOCKET_REQUEST_COUNT], socket[SOCKET_REQUEST_FINISHED_COUNT]);\n    }\n  }\n  socket.on('free', onFree);\n\n  function onClose(isError) {\n    debug('%s(requests: %s, finished: %s) close, isError: %s',\n      socket[SOCKET_NAME], socket[SOCKET_REQUEST_COUNT], socket[SOCKET_REQUEST_FINISHED_COUNT], isError);\n    agent.closeSocketCount++;\n  }\n  socket.on('close', onClose);\n\n  // start socket timeout handler\n  function onTimeout() {\n    // onTimeout and emitRequestTimeout(_http_client.js)\n    // https://github.com/nodejs/node/blob/v12.x/lib/_http_client.js#L711\n    const listenerCount = socket.listeners('timeout').length;\n    // node <= 10, default listenerCount is 1, onTimeout\n    // 11 < node <= 12, default listenerCount is 2, onTimeout and emitRequestTimeout\n    // node >= 13, default listenerCount is 3, onTimeout,\n    //   onTimeout(https://github.com/nodejs/node/pull/32000/files#diff-5f7fb0850412c6be189faeddea6c5359R333)\n    //   and emitRequestTimeout\n    const timeout = getSocketTimeout(socket);\n    const req = socket._httpMessage;\n    const reqTimeoutListenerCount = req && req.listeners('timeout').length || 0;\n    debug('%s(requests: %s, finished: %s) timeout after %sms, listeners %s, defaultTimeoutListenerCount %s, hasHttpRequest %s, HttpRequest timeoutListenerCount %s',\n      socket[SOCKET_NAME], socket[SOCKET_REQUEST_COUNT], socket[SOCKET_REQUEST_FINISHED_COUNT],\n      timeout, listenerCount, defaultTimeoutListenerCount, !!req, reqTimeoutListenerCount);\n    if (debug.enabled) {\n      debug('timeout listeners: %s', socket.listeners('timeout').map(f => f.name).join(', '));\n    }\n    agent.timeoutSocketCount++;\n    const name = agent.getName(options);\n    if (agent.freeSockets[name] && agent.freeSockets[name].indexOf(socket) !== -1) {\n      // free socket timeout, destroy quietly\n      socket.destroy();\n      // Remove it from freeSockets list immediately to prevent new requests\n      // from being sent through this socket.\n      agent.removeSocket(socket, options);\n      debug('%s is free, destroy quietly', socket[SOCKET_NAME]);\n    } else {\n      // if there is no any request socket timeout handler,\n      // agent need to handle socket timeout itself.\n      //\n      // custom request socket timeout handle logic must follow these rules:\n      //  1. Destroy socket first\n      //  2. Must emit socket 'agentRemove' event tell agent remove socket\n      //     from freeSockets list immediately.\n      //     Otherise you may be get 'socket hang up' error when reuse\n      //     free socket and timeout happen in the same time.\n      if (reqTimeoutListenerCount === 0) {\n        const error = new Error('Socket timeout');\n        error.code = 'ERR_SOCKET_TIMEOUT';\n        error.timeout = timeout;\n        // must manually call socket.end() or socket.destroy() to end the connection.\n        // https://nodejs.org/dist/latest-v10.x/docs/api/net.html#net_socket_settimeout_timeout_callback\n        socket.destroy(error);\n        agent.removeSocket(socket, options);\n        debug('%s destroy with timeout error', socket[SOCKET_NAME]);\n      }\n    }\n  }\n  socket.on('timeout', onTimeout);\n\n  function onError(err) {\n    const listenerCount = socket.listeners('error').length;\n    debug('%s(requests: %s, finished: %s) error: %s, listenerCount: %s',\n      socket[SOCKET_NAME], socket[SOCKET_REQUEST_COUNT], socket[SOCKET_REQUEST_FINISHED_COUNT],\n      err, listenerCount);\n    agent.errorSocketCount++;\n    if (listenerCount === 1) {\n      // if socket don't contain error event handler, don't catch it, emit it again\n      debug('%s emit uncaught error event', socket[SOCKET_NAME]);\n      socket.removeListener('error', onError);\n      socket.emit('error', err);\n    }\n  }\n  socket.on('error', onError);\n\n  function onRemove() {\n    debug('%s(requests: %s, finished: %s) agentRemove',\n      socket[SOCKET_NAME],\n      socket[SOCKET_REQUEST_COUNT], socket[SOCKET_REQUEST_FINISHED_COUNT]);\n    // We need this function for cases like HTTP 'upgrade'\n    // (defined by WebSockets) where we need to remove a socket from the\n    // pool because it'll be locked up indefinitely\n    socket.removeListener('close', onClose);\n    socket.removeListener('error', onError);\n    socket.removeListener('free', onFree);\n    socket.removeListener('timeout', onTimeout);\n    socket.removeListener('agentRemove', onRemove);\n  }\n  socket.on('agentRemove', onRemove);\n}\n\nmodule.exports = Agent;\n\nfunction inspect(obj) {\n  const res = {};\n  for (const key in obj) {\n    res[key] = obj[key].length;\n  }\n  return res;\n}\n", "'use strict';\n\nconst OriginalHttpsAgent = require('https').Agent;\nconst HttpAgent = require('./agent');\nconst {\n  INIT_SOCKET,\n  CREATE_HTTPS_CONNECTION,\n} = require('./constants');\n\nclass HttpsAgent extends HttpAgent {\n  constructor(options) {\n    super(options);\n\n    this.defaultPort = 443;\n    this.protocol = 'https:';\n    this.maxCachedSessions = this.options.maxCachedSessions;\n    /* istanbul ignore next */\n    if (this.maxCachedSessions === undefined) {\n      this.maxCachedSessions = 100;\n    }\n\n    this._sessionCache = {\n      map: {},\n      list: [],\n    };\n  }\n\n  createConnection(options, oncreate) {\n    const socket = this[CREATE_HTTPS_CONNECTION](options, oncreate);\n    this[INIT_SOCKET](socket, options);\n    return socket;\n  }\n}\n\n// https://github.com/nodejs/node/blob/master/lib/https.js#L89\nHttpsAgent.prototype[CREATE_HTTPS_CONNECTION] = OriginalHttpsAgent.prototype.createConnection;\n\n[\n  'getName',\n  '_getSession',\n  '_cacheSession',\n  // https://github.com/nodejs/node/pull/4982\n  '_evictSession',\n].forEach(function(method) {\n  /* istanbul ignore next */\n  if (typeof OriginalHttpsAgent.prototype[method] === 'function') {\n    HttpsAgent.prototype[method] = OriginalHttpsAgent.prototype[method];\n  }\n});\n\nmodule.exports = HttpsAgent;\n", "'use strict';\n\nconst HttpAgent = require('./lib/agent');\nmodule.exports = HttpAgent;\nmodule.exports.HttpAgent = HttpAgent;\nmodule.exports.HttpsAgent = require('./lib/https_agent');\nmodule.exports.constants = require('./lib/constants');\n", null, "import {\n\tAgent,\n\tClientRequest,\n\tRequestOptions,\n\tAgentCallbackCallback,\n\tAgentCallbackPromise,\n\tAgentCallbackReturn\n} from './index';\n\ntype LegacyCallback = (\n\treq: ClientRequest,\n\topts: RequestOptions,\n\tfn: AgentCallbackCallback\n) => void;\n\nexport default function promisify(fn: LegacyCallback): AgentCallbackPromise {\n\treturn function(this: Agent, req: ClientRequest, opts: RequestOptions) {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tfn.call(\n\t\t\t\tthis,\n\t\t\t\treq,\n\t\t\t\topts,\n\t\t\t\t(err: Error | null | undefined, rtn?: AgentCallbackReturn) => {\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresolve(rtn);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t});\n\t};\n}\n", "import net from 'net';\nimport http from 'http';\nimport https from 'https';\nimport { Duplex } from 'stream';\nimport { EventEmitter } from 'events';\nimport createDebug from 'debug';\nimport promisify from './promisify';\n\nconst debug = createDebug('agent-base');\n\nfunction isAgent(v: any): v is createAgent.AgentLike {\n\treturn Boolean(v) && typeof v.addRequest === 'function';\n}\n\nfunction isSecureEndpoint(): boolean {\n\tconst { stack } = new Error();\n\tif (typeof stack !== 'string') return false;\n\treturn stack.split('\\n').some(l => l.indexOf('(https.js:') !== -1  || l.indexOf('node:https:') !== -1);\n}\n\nfunction createAgent(opts?: createAgent.AgentOptions): createAgent.Agent;\nfunction createAgent(\n\tcallback: createAgent.AgentCallback,\n\topts?: createAgent.AgentOptions\n): createAgent.Agent;\nfunction createAgent(\n\tcallback?: createAgent.AgentCallback | createAgent.AgentOptions,\n\topts?: createAgent.AgentOptions\n) {\n\treturn new createAgent.Agent(callback, opts);\n}\n\nnamespace createAgent {\n\texport interface ClientRequest extends http.ClientRequest {\n\t\t_last?: boolean;\n\t\t_hadError?: boolean;\n\t\tmethod: string;\n\t}\n\n\texport interface AgentRequestOptions {\n\t\thost?: string;\n\t\tpath?: string;\n\t\t// `port` on `http.RequestOptions` can be a string or undefined,\n\t\t// but `net.TcpNetConnectOpts` expects only a number\n\t\tport: number;\n\t}\n\n\texport interface HttpRequestOptions\n\t\textends AgentRequestOptions,\n\t\t\tOmit<http.RequestOptions, keyof AgentRequestOptions> {\n\t\tsecureEndpoint: false;\n\t}\n\n\texport interface HttpsRequestOptions\n\t\textends AgentRequestOptions,\n\t\t\tOmit<https.RequestOptions, keyof AgentRequestOptions> {\n\t\tsecureEndpoint: true;\n\t}\n\n\texport type RequestOptions = HttpRequestOptions | HttpsRequestOptions;\n\n\texport type AgentLike = Pick<createAgent.Agent, 'addRequest'> | http.Agent;\n\n\texport type AgentCallbackReturn = Duplex | AgentLike;\n\n\texport type AgentCallbackCallback = (\n\t\terr?: Error | null,\n\t\tsocket?: createAgent.AgentCallbackReturn\n\t) => void;\n\n\texport type AgentCallbackPromise = (\n\t\treq: createAgent.ClientRequest,\n\t\topts: createAgent.RequestOptions\n\t) =>\n\t\t| createAgent.AgentCallbackReturn\n\t\t| Promise<createAgent.AgentCallbackReturn>;\n\n\texport type AgentCallback = typeof Agent.prototype.callback;\n\n\texport type AgentOptions = {\n\t\ttimeout?: number;\n\t};\n\n\t/**\n\t * Base `http.Agent` implementation.\n\t * No pooling/keep-alive is implemented by default.\n\t *\n\t * @param {Function} callback\n\t * @api public\n\t */\n\texport class Agent extends EventEmitter {\n\t\tpublic timeout: number | null;\n\t\tpublic maxFreeSockets: number;\n\t\tpublic maxTotalSockets: number;\n\t\tpublic maxSockets: number;\n\t\tpublic sockets: {\n\t\t\t[key: string]: net.Socket[];\n\t\t};\n\t\tpublic freeSockets: {\n\t\t\t[key: string]: net.Socket[];\n\t\t};\n\t\tpublic requests: {\n\t\t\t[key: string]: http.IncomingMessage[];\n\t\t};\n\t\tpublic options: https.AgentOptions;\n\t\tprivate promisifiedCallback?: createAgent.AgentCallbackPromise;\n\t\tprivate explicitDefaultPort?: number;\n\t\tprivate explicitProtocol?: string;\n\n\t\tconstructor(\n\t\t\tcallback?: createAgent.AgentCallback | createAgent.AgentOptions,\n\t\t\t_opts?: createAgent.AgentOptions\n\t\t) {\n\t\t\tsuper();\n\n\t\t\tlet opts = _opts;\n\t\t\tif (typeof callback === 'function') {\n\t\t\t\tthis.callback = callback;\n\t\t\t} else if (callback) {\n\t\t\t\topts = callback;\n\t\t\t}\n\n\t\t\t// Timeout for the socket to be returned from the callback\n\t\t\tthis.timeout = null;\n\t\t\tif (opts && typeof opts.timeout === 'number') {\n\t\t\t\tthis.timeout = opts.timeout;\n\t\t\t}\n\n\t\t\t// These aren't actually used by `agent-base`, but are required\n\t\t\t// for the TypeScript definition files in `@types/node` :/\n\t\t\tthis.maxFreeSockets = 1;\n\t\t\tthis.maxSockets = 1;\n\t\t\tthis.maxTotalSockets = Infinity;\n\t\t\tthis.sockets = {};\n\t\t\tthis.freeSockets = {};\n\t\t\tthis.requests = {};\n\t\t\tthis.options = {};\n\t\t}\n\n\t\tget defaultPort(): number {\n\t\t\tif (typeof this.explicitDefaultPort === 'number') {\n\t\t\t\treturn this.explicitDefaultPort;\n\t\t\t}\n\t\t\treturn isSecureEndpoint() ? 443 : 80;\n\t\t}\n\n\t\tset defaultPort(v: number) {\n\t\t\tthis.explicitDefaultPort = v;\n\t\t}\n\n\t\tget protocol(): string {\n\t\t\tif (typeof this.explicitProtocol === 'string') {\n\t\t\t\treturn this.explicitProtocol;\n\t\t\t}\n\t\t\treturn isSecureEndpoint() ? 'https:' : 'http:';\n\t\t}\n\n\t\tset protocol(v: string) {\n\t\t\tthis.explicitProtocol = v;\n\t\t}\n\n\t\tcallback(\n\t\t\treq: createAgent.ClientRequest,\n\t\t\topts: createAgent.RequestOptions,\n\t\t\tfn: createAgent.AgentCallbackCallback\n\t\t): void;\n\t\tcallback(\n\t\t\treq: createAgent.ClientRequest,\n\t\t\topts: createAgent.RequestOptions\n\t\t):\n\t\t\t| createAgent.AgentCallbackReturn\n\t\t\t| Promise<createAgent.AgentCallbackReturn>;\n\t\tcallback(\n\t\t\treq: createAgent.ClientRequest,\n\t\t\topts: createAgent.AgentOptions,\n\t\t\tfn?: createAgent.AgentCallbackCallback\n\t\t):\n\t\t\t| createAgent.AgentCallbackReturn\n\t\t\t| Promise<createAgent.AgentCallbackReturn>\n\t\t\t| void {\n\t\t\tthrow new Error(\n\t\t\t\t'\"agent-base\" has no default implementation, you must subclass and override `callback()`'\n\t\t\t);\n\t\t}\n\n\t\t/**\n\t\t * Called by node-core's \"_http_client.js\" module when creating\n\t\t * a new HTTP request with this Agent instance.\n\t\t *\n\t\t * @api public\n\t\t */\n\t\taddRequest(req: ClientRequest, _opts: RequestOptions): void {\n\t\t\tconst opts: RequestOptions = { ..._opts };\n\n\t\t\tif (typeof opts.secureEndpoint !== 'boolean') {\n\t\t\t\topts.secureEndpoint = isSecureEndpoint();\n\t\t\t}\n\n\t\t\tif (opts.host == null) {\n\t\t\t\topts.host = 'localhost';\n\t\t\t}\n\n\t\t\tif (opts.port == null) {\n\t\t\t\topts.port = opts.secureEndpoint ? 443 : 80;\n\t\t\t}\n\n\t\t\tif (opts.protocol == null) {\n\t\t\t\topts.protocol = opts.secureEndpoint ? 'https:' : 'http:';\n\t\t\t}\n\n\t\t\tif (opts.host && opts.path) {\n\t\t\t\t// If both a `host` and `path` are specified then it's most\n\t\t\t\t// likely the result of a `url.parse()` call... we need to\n\t\t\t\t// remove the `path` portion so that `net.connect()` doesn't\n\t\t\t\t// attempt to open that as a unix socket file.\n\t\t\t\tdelete opts.path;\n\t\t\t}\n\n\t\t\tdelete opts.agent;\n\t\t\tdelete opts.hostname;\n\t\t\tdelete opts._defaultAgent;\n\t\t\tdelete opts.defaultPort;\n\t\t\tdelete opts.createConnection;\n\n\t\t\t// Hint to use \"Connection: close\"\n\t\t\t// XXX: non-documented `http` module API :(\n\t\t\treq._last = true;\n\t\t\treq.shouldKeepAlive = false;\n\n\t\t\tlet timedOut = false;\n\t\t\tlet timeoutId: ReturnType<typeof setTimeout> | null = null;\n\t\t\tconst timeoutMs = opts.timeout || this.timeout;\n\n\t\t\tconst onerror = (err: NodeJS.ErrnoException) => {\n\t\t\t\tif (req._hadError) return;\n\t\t\t\treq.emit('error', err);\n\t\t\t\t// For Safety. Some additional errors might fire later on\n\t\t\t\t// and we need to make sure we don't double-fire the error event.\n\t\t\t\treq._hadError = true;\n\t\t\t};\n\n\t\t\tconst ontimeout = () => {\n\t\t\t\ttimeoutId = null;\n\t\t\t\ttimedOut = true;\n\t\t\t\tconst err: NodeJS.ErrnoException = new Error(\n\t\t\t\t\t`A \"socket\" was not created for HTTP request before ${timeoutMs}ms`\n\t\t\t\t);\n\t\t\t\terr.code = 'ETIMEOUT';\n\t\t\t\tonerror(err);\n\t\t\t};\n\n\t\t\tconst callbackError = (err: NodeJS.ErrnoException) => {\n\t\t\t\tif (timedOut) return;\n\t\t\t\tif (timeoutId !== null) {\n\t\t\t\t\tclearTimeout(timeoutId);\n\t\t\t\t\ttimeoutId = null;\n\t\t\t\t}\n\t\t\t\tonerror(err);\n\t\t\t};\n\n\t\t\tconst onsocket = (socket: AgentCallbackReturn) => {\n\t\t\t\tif (timedOut) return;\n\t\t\t\tif (timeoutId != null) {\n\t\t\t\t\tclearTimeout(timeoutId);\n\t\t\t\t\ttimeoutId = null;\n\t\t\t\t}\n\n\t\t\t\tif (isAgent(socket)) {\n\t\t\t\t\t// `socket` is actually an `http.Agent` instance, so\n\t\t\t\t\t// relinquish responsibility for this `req` to the Agent\n\t\t\t\t\t// from here on\n\t\t\t\t\tdebug(\n\t\t\t\t\t\t'Callback returned another Agent instance %o',\n\t\t\t\t\t\tsocket.constructor.name\n\t\t\t\t\t);\n\t\t\t\t\t(socket as createAgent.Agent).addRequest(req, opts);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (socket) {\n\t\t\t\t\tsocket.once('free', () => {\n\t\t\t\t\t\tthis.freeSocket(socket as net.Socket, opts);\n\t\t\t\t\t});\n\t\t\t\t\treq.onSocket(socket as net.Socket);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst err = new Error(\n\t\t\t\t\t`no Duplex stream was returned to agent-base for \\`${req.method} ${req.path}\\``\n\t\t\t\t);\n\t\t\t\tonerror(err);\n\t\t\t};\n\n\t\t\tif (typeof this.callback !== 'function') {\n\t\t\t\tonerror(new Error('`callback` is not defined'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (!this.promisifiedCallback) {\n\t\t\t\tif (this.callback.length >= 3) {\n\t\t\t\t\tdebug('Converting legacy callback function to promise');\n\t\t\t\t\tthis.promisifiedCallback = promisify(this.callback);\n\t\t\t\t} else {\n\t\t\t\t\tthis.promisifiedCallback = this.callback;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (typeof timeoutMs === 'number' && timeoutMs > 0) {\n\t\t\t\ttimeoutId = setTimeout(ontimeout, timeoutMs);\n\t\t\t}\n\n\t\t\tif ('port' in opts && typeof opts.port !== 'number') {\n\t\t\t\topts.port = Number(opts.port);\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tdebug(\n\t\t\t\t\t'Resolving socket for %o request: %o',\n\t\t\t\t\topts.protocol,\n\t\t\t\t\t`${req.method} ${req.path}`\n\t\t\t\t);\n\t\t\t\tPromise.resolve(this.promisifiedCallback(req, opts)).then(\n\t\t\t\t\tonsocket,\n\t\t\t\t\tcallbackError\n\t\t\t\t);\n\t\t\t} catch (err) {\n\t\t\t\tPromise.reject(err).catch(callbackError);\n\t\t\t}\n\t\t}\n\n\t\tfreeSocket(socket: net.Socket, opts: AgentOptions) {\n\t\t\tdebug('Freeing socket %o %o', socket.constructor.name, opts);\n\t\t\tsocket.destroy();\n\t\t}\n\n\t\tdestroy() {\n\t\t\tdebug('Destroying agent %o', this.constructor.name);\n\t\t}\n\t}\n\n\t// So that `instanceof` works correctly\n\tcreateAgent.prototype = createAgent.Agent.prototype;\n}\n\nexport = createAgent;\n", null, null, null, null, null, null, null, null, null, "import { Address4 } from './ipv4';\nimport { Address6 } from './ipv6';\n\nexport interface ReverseFormOptions {\n  omitSuffix?: boolean;\n}\n\nexport function isInSubnet(this: Address4 | Address6, address: Address4 | Address6) {\n  if (this.subnetMask < address.subnetMask) {\n    return false;\n  }\n\n  if (this.mask(address.subnetMask) === address.mask()) {\n    return true;\n  }\n\n  return false;\n}\n\nexport function isCorrect(defaultBits: number) {\n  return function (this: Address4 | Address6) {\n    if (this.addressMinusSuffix !== this.correctForm()) {\n      return false;\n    }\n\n    if (this.subnetMask === defaultBits && !this.parsedSubnet) {\n      return true;\n    }\n\n    return this.parsedSubnet === String(this.subnetMask);\n  };\n}\n\nexport function numberToPaddedHex(number: number) {\n  return number.toString(16).padStart(2, '0');\n}\n\nexport function stringToPaddedHex(numberString: string) {\n  return numberToPaddedHex(parseInt(numberString, 10));\n}\n\n/**\n * @param binaryValue Binary representation of a value (e.g. `10`)\n * @param position Byte position, where 0 is the least significant bit\n */\nexport function testBit(binaryValue: string, position: number): boolean {\n  const { length } = binaryValue;\n\n  if (position > length) {\n    return false;\n  }\n\n  const positionInString = length - position;\n  return binaryValue.substring(positionInString, positionInString + 1) === '1';\n}\n", "export const BITS = 32;\nexport const GROUPS = 4;\n\nexport const RE_ADDRESS =\n  /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/g;\n\nexport const RE_SUBNET_STRING = /\\/\\d{1,2}$/;\n", "export class AddressError extends Error {\n  parseMessage?: string;\n\n  constructor(message: string, parseMessage?: string) {\n    super(message);\n\n    this.name = 'AddressError';\n\n    this.parseMessage = parseMessage;\n  }\n}\n", "/* eslint-disable no-param-reassign */\n\nimport * as common from './common';\nimport * as constants from './v4/constants';\nimport { AddressError } from './address-error';\n\n/**\n * Represents an IPv4 address\n * @class Address4\n * @param {string} address - An IPv4 address string\n */\nexport class Address4 {\n  address: string;\n  addressMinusSuffix?: string;\n  groups: number = constants.GROUPS;\n  parsedAddress: string[] = [];\n  parsedSubnet: string = '';\n  subnet: string = '/32';\n  subnetMask: number = 32;\n  v4: boolean = true;\n\n  constructor(address: string) {\n    this.address = address;\n\n    const subnet = constants.RE_SUBNET_STRING.exec(address);\n\n    if (subnet) {\n      this.parsedSubnet = subnet[0].replace('/', '');\n      this.subnetMask = parseInt(this.parsedSubnet, 10);\n      this.subnet = `/${this.subnetMask}`;\n\n      if (this.subnetMask < 0 || this.subnetMask > constants.BITS) {\n        throw new AddressError('Invalid subnet mask.');\n      }\n\n      address = address.replace(constants.RE_SUBNET_STRING, '');\n    }\n\n    this.addressMinusSuffix = address;\n\n    this.parsedAddress = this.parse(address);\n  }\n\n  static isValid(address: string): boolean {\n    try {\n      // eslint-disable-next-line no-new\n      new Address4(address);\n\n      return true;\n    } catch (e) {\n      return false;\n    }\n  }\n\n  /*\n   * Parses a v4 address\n   */\n  parse(address: string) {\n    const groups = address.split('.');\n\n    if (!address.match(constants.RE_ADDRESS)) {\n      throw new AddressError('Invalid IPv4 address.');\n    }\n\n    return groups;\n  }\n\n  /**\n   * Returns the correct form of an address\n   * @memberof Address4\n   * @instance\n   * @returns {String}\n   */\n  correctForm(): string {\n    return this.parsedAddress.map((part) => parseInt(part, 10)).join('.');\n  }\n\n  /**\n   * Returns true if the address is correct, false otherwise\n   * @memberof Address4\n   * @instance\n   * @returns {Boolean}\n   */\n  isCorrect = common.isCorrect(constants.BITS);\n\n  /**\n   * Converts a hex string to an IPv4 address object\n   * @memberof Address4\n   * @static\n   * @param {string} hex - a hex string to convert\n   * @returns {Address4}\n   */\n  static fromHex(hex: string): Address4 {\n    const padded = hex.replace(/:/g, '').padStart(8, '0');\n    const groups = [];\n    let i;\n\n    for (i = 0; i < 8; i += 2) {\n      const h = padded.slice(i, i + 2);\n\n      groups.push(parseInt(h, 16));\n    }\n\n    return new Address4(groups.join('.'));\n  }\n\n  /**\n   * Converts an integer into a IPv4 address object\n   * @memberof Address4\n   * @static\n   * @param {integer} integer - a number to convert\n   * @returns {Address4}\n   */\n  static fromInteger(integer: number): Address4 {\n    return Address4.fromHex(integer.toString(16));\n  }\n\n  /**\n   * Return an address from in-addr.arpa form\n   * @memberof Address4\n   * @static\n   * @param {string} arpaFormAddress - an 'in-addr.arpa' form ipv4 address\n   * @returns {Adress4}\n   * @example\n   * var address = Address4.fromArpa(42.2.0.192.in-addr.arpa.)\n   * address.correctForm(); // '192.0.2.42'\n   */\n  static fromArpa(arpaFormAddress: string): Address4 {\n    // remove ending \".in-addr.arpa.\" or just \".\"\n    const leader = arpaFormAddress.replace(/(\\.in-addr\\.arpa)?\\.$/, '');\n\n    const address = leader.split('.').reverse().join('.');\n\n    return new Address4(address);\n  }\n\n  /**\n   * Converts an IPv4 address object to a hex string\n   * @memberof Address4\n   * @instance\n   * @returns {String}\n   */\n  toHex(): string {\n    return this.parsedAddress.map((part) => common.stringToPaddedHex(part)).join(':');\n  }\n\n  /**\n   * Converts an IPv4 address object to an array of bytes\n   * @memberof Address4\n   * @instance\n   * @returns {Array}\n   */\n  toArray(): number[] {\n    return this.parsedAddress.map((part) => parseInt(part, 10));\n  }\n\n  /**\n   * Converts an IPv4 address object to an IPv6 address group\n   * @memberof Address4\n   * @instance\n   * @returns {String}\n   */\n  toGroup6(): string {\n    const output = [];\n    let i;\n\n    for (i = 0; i < constants.GROUPS; i += 2) {\n      output.push(\n        `${common.stringToPaddedHex(this.parsedAddress[i])}${common.stringToPaddedHex(\n          this.parsedAddress[i + 1],\n        )}`,\n      );\n    }\n\n    return output.join(':');\n  }\n\n  /**\n   * Returns the address as a `bigint`\n   * @memberof Address4\n   * @instance\n   * @returns {bigint}\n   */\n  bigInt(): bigint {\n    return BigInt(`0x${this.parsedAddress.map((n) => common.stringToPaddedHex(n)).join('')}`);\n  }\n\n  /**\n   * Helper function getting start address.\n   * @memberof Address4\n   * @instance\n   * @returns {bigint}\n   */\n  _startAddress(): bigint {\n    return BigInt(`0b${this.mask() + '0'.repeat(constants.BITS - this.subnetMask)}`);\n  }\n\n  /**\n   * The first address in the range given by this address' subnet.\n   * Often referred to as the Network Address.\n   * @memberof Address4\n   * @instance\n   * @returns {Address4}\n   */\n  startAddress(): Address4 {\n    return Address4.fromBigInt(this._startAddress());\n  }\n\n  /**\n   * The first host address in the range given by this address's subnet ie\n   * the first address after the Network Address\n   * @memberof Address4\n   * @instance\n   * @returns {Address4}\n   */\n  startAddressExclusive(): Address4 {\n    const adjust = BigInt('1');\n    return Address4.fromBigInt(this._startAddress() + adjust);\n  }\n\n  /**\n   * Helper function getting end address.\n   * @memberof Address4\n   * @instance\n   * @returns {bigint}\n   */\n  _endAddress(): bigint {\n    return BigInt(`0b${this.mask() + '1'.repeat(constants.BITS - this.subnetMask)}`);\n  }\n\n  /**\n   * The last address in the range given by this address' subnet\n   * Often referred to as the Broadcast\n   * @memberof Address4\n   * @instance\n   * @returns {Address4}\n   */\n  endAddress(): Address4 {\n    return Address4.fromBigInt(this._endAddress());\n  }\n\n  /**\n   * The last host address in the range given by this address's subnet ie\n   * the last address prior to the Broadcast Address\n   * @memberof Address4\n   * @instance\n   * @returns {Address4}\n   */\n  endAddressExclusive(): Address4 {\n    const adjust = BigInt('1');\n    return Address4.fromBigInt(this._endAddress() - adjust);\n  }\n\n  /**\n   * Converts a BigInt to a v4 address object\n   * @memberof Address4\n   * @static\n   * @param {bigint} bigInt - a BigInt to convert\n   * @returns {Address4}\n   */\n  static fromBigInt(bigInt: bigint): Address4 {\n    return Address4.fromHex(bigInt.toString(16));\n  }\n\n  /**\n   * Returns the first n bits of the address, defaulting to the\n   * subnet mask\n   * @memberof Address4\n   * @instance\n   * @returns {String}\n   */\n  mask(mask?: number): string {\n    if (mask === undefined) {\n      mask = this.subnetMask;\n    }\n\n    return this.getBitsBase2(0, mask);\n  }\n\n  /**\n   * Returns the bits in the given range as a base-2 string\n   * @memberof Address4\n   * @instance\n   * @returns {string}\n   */\n  getBitsBase2(start: number, end: number): string {\n    return this.binaryZeroPad().slice(start, end);\n  }\n\n  /**\n   * Return the reversed ip6.arpa form of the address\n   * @memberof Address4\n   * @param {Object} options\n   * @param {boolean} options.omitSuffix - omit the \"in-addr.arpa\" suffix\n   * @instance\n   * @returns {String}\n   */\n  reverseForm(options?: common.ReverseFormOptions): string {\n    if (!options) {\n      options = {};\n    }\n\n    const reversed = this.correctForm().split('.').reverse().join('.');\n\n    if (options.omitSuffix) {\n      return reversed;\n    }\n\n    return `${reversed}.in-addr.arpa.`;\n  }\n\n  /**\n   * Returns true if the given address is in the subnet of the current address\n   * @memberof Address4\n   * @instance\n   * @returns {boolean}\n   */\n  isInSubnet = common.isInSubnet;\n\n  /**\n   * Returns true if the given address is a multicast address\n   * @memberof Address4\n   * @instance\n   * @returns {boolean}\n   */\n  isMulticast(): boolean {\n    return this.isInSubnet(new Address4('224.0.0.0/4'));\n  }\n\n  /**\n   * Returns a zero-padded base-2 string representation of the address\n   * @memberof Address4\n   * @instance\n   * @returns {string}\n   */\n  binaryZeroPad(): string {\n    return this.bigInt().toString(2).padStart(constants.BITS, '0');\n  }\n\n  /**\n   * Groups an IPv4 address for inclusion at the end of an IPv6 address\n   * @returns {String}\n   */\n  groupForV6(): string {\n    const segments = this.parsedAddress;\n\n    return this.address.replace(\n      constants.RE_ADDRESS,\n      `<span class=\"hover-group group-v4 group-6\">${segments\n        .slice(0, 2)\n        .join('.')}</span>.<span class=\"hover-group group-v4 group-7\">${segments\n        .slice(2, 4)\n        .join('.')}</span>`,\n    );\n  }\n}\n", "export const BITS = 128;\nexport const GROUPS = 8;\n\n/**\n * Represents IPv6 address scopes\n * @memberof Address6\n * @static\n */\nexport const SCOPES: { [key: number]: string | undefined } = {\n  0: 'Reserved',\n  1: 'Interface local',\n  2: 'Link local',\n  4: 'Admin local',\n  5: 'Site local',\n  8: 'Organization local',\n  14: 'Global',\n  15: 'Reserved',\n} as const;\n\n/**\n * Represents IPv6 address types\n * @memberof Address6\n * @static\n */\nexport const TYPES: { [key: string]: string | undefined } = {\n  'ff01::1/128': 'Multicast (All nodes on this interface)',\n  'ff01::2/128': 'Multicast (All routers on this interface)',\n  'ff02::1/128': 'Multicast (All nodes on this link)',\n  'ff02::2/128': 'Multicast (All routers on this link)',\n  'ff05::2/128': 'Multicast (All routers in this site)',\n  'ff02::5/128': 'Multicast (OSPFv3 AllSPF routers)',\n  'ff02::6/128': 'Multicast (OSPFv3 AllDR routers)',\n  'ff02::9/128': 'Multicast (RIP routers)',\n  'ff02::a/128': 'Multicast (EIGRP routers)',\n  'ff02::d/128': 'Multicast (PIM routers)',\n  'ff02::16/128': 'Multicast (MLDv2 reports)',\n  'ff01::fb/128': 'Multicast (mDNSv6)',\n  'ff02::fb/128': 'Multicast (mDNSv6)',\n  'ff05::fb/128': 'Multicast (mDNSv6)',\n  'ff02::1:2/128': 'Multicast (All DHCP servers and relay agents on this link)',\n  'ff05::1:2/128': 'Multicast (All DHCP servers and relay agents in this site)',\n  'ff02::1:3/128': 'Multicast (All DHCP servers on this link)',\n  'ff05::1:3/128': 'Multicast (All DHCP servers in this site)',\n  '::/128': 'Unspecified',\n  '::1/128': 'Loopback',\n  'ff00::/8': 'Multicast',\n  'fe80::/10': 'Link-local unicast',\n} as const;\n\n/**\n * A regular expression that matches bad characters in an IPv6 address\n * @memberof Address6\n * @static\n */\nexport const RE_BAD_CHARACTERS = /([^0-9a-f:/%])/gi;\n\n/**\n * A regular expression that matches an incorrect IPv6 address\n * @memberof Address6\n * @static\n */\nexport const RE_BAD_ADDRESS = /([0-9a-f]{5,}|:{3,}|[^:]:$|^:[^:]|\\/$)/gi;\n\n/**\n * A regular expression that matches an IPv6 subnet\n * @memberof Address6\n * @static\n */\nexport const RE_SUBNET_STRING = /\\/\\d{1,3}(?=%|$)/;\n\n/**\n * A regular expression that matches an IPv6 zone\n * @memberof Address6\n * @static\n */\nexport const RE_ZONE_STRING = /%.*$/;\n\nexport const RE_URL = /^\\[{0,1}([0-9a-f:]+)\\]{0,1}/;\nexport const RE_URL_WITH_PORT = /\\[([0-9a-f:]+)\\]:([0-9]{1,5})/;\n", "/**\n * @returns {String} the string with all zeroes contained in a <span>\n */\nexport function spanAllZeroes(s: string): string {\n  return s.replace(/(0+)/g, '<span class=\"zero\">$1</span>');\n}\n\n/**\n * @returns {String} the string with each character contained in a <span>\n */\nexport function spanAll(s: string, offset: number = 0): string {\n  const letters = s.split('');\n\n  return letters\n    .map(\n      (n, i) => `<span class=\"digit value-${n} position-${i + offset}\">${spanAllZeroes(n)}</span>`,\n    )\n    .join('');\n}\n\nfunction spanLeadingZeroesSimple(group: string): string {\n  return group.replace(/^(0+)/, '<span class=\"zero\">$1</span>');\n}\n\n/**\n * @returns {String} the string with leading zeroes contained in a <span>\n */\nexport function spanLeadingZeroes(address: string): string {\n  const groups = address.split(':');\n\n  return groups.map((g) => spanLeadingZeroesSimple(g)).join(':');\n}\n\n/**\n * Groups an address\n * @returns {String} a grouped address\n */\nexport function simpleGroup(addressString: string, offset: number = 0): string[] {\n  const groups = addressString.split(':');\n\n  return groups.map((g, i) => {\n    if (/group-v4/.test(g)) {\n      return g;\n    }\n\n    return `<span class=\"hover-group group-${i + offset}\">${spanLeadingZeroesSimple(g)}</span>`;\n  });\n}\n", "import * as v6 from './constants';\n\nexport function groupPossibilities(possibilities: string[]): string {\n  return `(${possibilities.join('|')})`;\n}\n\nexport function padGroup(group: string): string {\n  if (group.length < 4) {\n    return `0{0,${4 - group.length}}${group}`;\n  }\n\n  return group;\n}\n\nexport const ADDRESS_BOUNDARY = '[^A-Fa-f0-9:]';\n\nexport function simpleRegularExpression(groups: string[]) {\n  const zeroIndexes: number[] = [];\n\n  groups.forEach((group, i) => {\n    const groupInteger = parseInt(group, 16);\n\n    if (groupInteger === 0) {\n      zeroIndexes.push(i);\n    }\n  });\n\n  // You can technically elide a single 0, this creates the regular expressions\n  // to match that eventuality\n  const possibilities = zeroIndexes.map((zeroIndex) =>\n    groups\n      .map((group, i) => {\n        if (i === zeroIndex) {\n          const elision = i === 0 || i === v6.GROUPS - 1 ? ':' : '';\n\n          return groupPossibilities([padGroup(group), elision]);\n        }\n\n        return padGroup(group);\n      })\n      .join(':'),\n  );\n\n  // The simplest case\n  possibilities.push(groups.map(padGroup).join(':'));\n\n  return groupPossibilities(possibilities);\n}\n\nexport function possibleElisions(\n  elidedGroups: number,\n  moreLeft?: boolean,\n  moreRight?: boolean,\n): string {\n  const left = moreLeft ? '' : ':';\n  const right = moreRight ? '' : ':';\n\n  const possibilities = [];\n\n  // 1. elision of everything (::)\n  if (!moreLeft && !moreRight) {\n    possibilities.push('::');\n  }\n\n  // 2. complete elision of the middle\n  if (moreLeft && moreRight) {\n    possibilities.push('');\n  }\n\n  if ((moreRight && !moreLeft) || (!moreRight && moreLeft)) {\n    // 3. complete elision of one side\n    possibilities.push(':');\n  }\n\n  // 4. elision from the left side\n  possibilities.push(`${left}(:0{1,4}){1,${elidedGroups - 1}}`);\n\n  // 5. elision from the right side\n  possibilities.push(`(0{1,4}:){1,${elidedGroups - 1}}${right}`);\n\n  // 6. no elision\n  possibilities.push(`(0{1,4}:){${elidedGroups - 1}}0{1,4}`);\n\n  // 7. elision (including sloppy elision) from the middle\n  for (let groups = 1; groups < elidedGroups - 1; groups++) {\n    for (let position = 1; position < elidedGroups - groups; position++) {\n      possibilities.push(\n        `(0{1,4}:){${position}}:(0{1,4}:){${elidedGroups - position - groups - 1}}0{1,4}`,\n      );\n    }\n  }\n\n  return groupPossibilities(possibilities);\n}\n", "/* eslint-disable prefer-destructuring */\n/* eslint-disable no-param-reassign */\n\nimport * as common from './common';\nimport * as constants4 from './v4/constants';\nimport * as constants6 from './v6/constants';\nimport * as helpers from './v6/helpers';\nimport { Address4 } from './ipv4';\nimport {\n  ADDRESS_BOUNDARY,\n  possibleElisions,\n  simpleRegularExpression,\n} from './v6/regular-expressions';\nimport { AddressError } from './address-error';\nimport { testBit } from './common';\n\nfunction assert(condition: any): asserts condition {\n  if (!condition) {\n    throw new Error('Assertion failed.');\n  }\n}\n\nfunction addCommas(number: string): string {\n  const r = /(\\d+)(\\d{3})/;\n\n  while (r.test(number)) {\n    number = number.replace(r, '$1,$2');\n  }\n\n  return number;\n}\n\nfunction spanLeadingZeroes4(n: string): string {\n  n = n.replace(/^(0{1,})([1-9]+)$/, '<span class=\"parse-error\">$1</span>$2');\n  n = n.replace(/^(0{1,})(0)$/, '<span class=\"parse-error\">$1</span>$2');\n\n  return n;\n}\n\n/*\n * A helper function to compact an array\n */\nfunction compact(address: string[], slice: number[]) {\n  const s1 = [];\n  const s2 = [];\n  let i;\n\n  for (i = 0; i < address.length; i++) {\n    if (i < slice[0]) {\n      s1.push(address[i]);\n    } else if (i > slice[1]) {\n      s2.push(address[i]);\n    }\n  }\n\n  return s1.concat(['compact']).concat(s2);\n}\n\nfunction paddedHex(octet: string): string {\n  return parseInt(octet, 16).toString(16).padStart(4, '0');\n}\n\nfunction unsignByte(b: number) {\n  // eslint-disable-next-line no-bitwise\n  return b & 0xff;\n}\n\ninterface SixToFourProperties {\n  prefix: string;\n  gateway: string;\n}\n\ninterface TeredoProperties {\n  prefix: string;\n  server4: string;\n  client4: string;\n  flags: string;\n  coneNat: boolean;\n  microsoft: {\n    reserved: boolean;\n    universalLocal: boolean;\n    groupIndividual: boolean;\n    nonce: string;\n  };\n  udpPort: string;\n}\n\n/**\n * Represents an IPv6 address\n * @class Address6\n * @param {string} address - An IPv6 address string\n * @param {number} [groups=8] - How many octets to parse\n * @example\n * var address = new Address6('2001::/32');\n */\nexport class Address6 {\n  address4?: Address4;\n  address: string;\n  addressMinusSuffix: string = '';\n  elidedGroups?: number;\n  elisionBegin?: number;\n  elisionEnd?: number;\n  groups: number;\n  parsedAddress4?: string;\n  parsedAddress: string[];\n  parsedSubnet: string = '';\n  subnet: string = '/128';\n  subnetMask: number = 128;\n  v4: boolean = false;\n  zone: string = '';\n\n  constructor(address: string, optionalGroups?: number) {\n    if (optionalGroups === undefined) {\n      this.groups = constants6.GROUPS;\n    } else {\n      this.groups = optionalGroups;\n    }\n\n    this.address = address;\n\n    const subnet = constants6.RE_SUBNET_STRING.exec(address);\n\n    if (subnet) {\n      this.parsedSubnet = subnet[0].replace('/', '');\n      this.subnetMask = parseInt(this.parsedSubnet, 10);\n      this.subnet = `/${this.subnetMask}`;\n\n      if (\n        Number.isNaN(this.subnetMask) ||\n        this.subnetMask < 0 ||\n        this.subnetMask > constants6.BITS\n      ) {\n        throw new AddressError('Invalid subnet mask.');\n      }\n\n      address = address.replace(constants6.RE_SUBNET_STRING, '');\n    } else if (/\\//.test(address)) {\n      throw new AddressError('Invalid subnet mask.');\n    }\n\n    const zone = constants6.RE_ZONE_STRING.exec(address);\n\n    if (zone) {\n      this.zone = zone[0];\n\n      address = address.replace(constants6.RE_ZONE_STRING, '');\n    }\n\n    this.addressMinusSuffix = address;\n\n    this.parsedAddress = this.parse(this.addressMinusSuffix);\n  }\n\n  static isValid(address: string): boolean {\n    try {\n      // eslint-disable-next-line no-new\n      new Address6(address);\n\n      return true;\n    } catch (e) {\n      return false;\n    }\n  }\n\n  /**\n   * Convert a BigInt to a v6 address object\n   * @memberof Address6\n   * @static\n   * @param {bigint} bigInt - a BigInt to convert\n   * @returns {Address6}\n   * @example\n   * var bigInt = BigInt('1000000000000');\n   * var address = Address6.fromBigInt(bigInt);\n   * address.correctForm(); // '::e8:d4a5:1000'\n   */\n  static fromBigInt(bigInt: bigint): Address6 {\n    const hex = bigInt.toString(16).padStart(32, '0');\n    const groups = [];\n    let i;\n\n    for (i = 0; i < constants6.GROUPS; i++) {\n      groups.push(hex.slice(i * 4, (i + 1) * 4));\n    }\n\n    return new Address6(groups.join(':'));\n  }\n\n  /**\n   * Convert a URL (with optional port number) to an address object\n   * @memberof Address6\n   * @static\n   * @param {string} url - a URL with optional port number\n   * @example\n   * var addressAndPort = Address6.fromURL('http://[ffff::]:8080/foo/');\n   * addressAndPort.address.correctForm(); // 'ffff::'\n   * addressAndPort.port; // 8080\n   */\n  static fromURL(url: string) {\n    let host: string;\n    let port: string | number | null = null;\n    let result: string[] | null;\n\n    // If we have brackets parse them and find a port\n    if (url.indexOf('[') !== -1 && url.indexOf(']:') !== -1) {\n      result = constants6.RE_URL_WITH_PORT.exec(url);\n\n      if (result === null) {\n        return {\n          error: 'failed to parse address with port',\n          address: null,\n          port: null,\n        };\n      }\n\n      host = result[1];\n      port = result[2];\n      // If there's a URL extract the address\n    } else if (url.indexOf('/') !== -1) {\n      // Remove the protocol prefix\n      url = url.replace(/^[a-z0-9]+:\\/\\//, '');\n\n      // Parse the address\n      result = constants6.RE_URL.exec(url);\n\n      if (result === null) {\n        return {\n          error: 'failed to parse address from URL',\n          address: null,\n          port: null,\n        };\n      }\n\n      host = result[1];\n      // Otherwise just assign the URL to the host and let the library parse it\n    } else {\n      host = url;\n    }\n\n    // If there's a port convert it to an integer\n    if (port) {\n      port = parseInt(port, 10);\n\n      // squelch out of range ports\n      if (port < 0 || port > 65536) {\n        port = null;\n      }\n    } else {\n      // Standardize `undefined` to `null`\n      port = null;\n    }\n\n    return {\n      address: new Address6(host),\n      port,\n    };\n  }\n\n  /**\n   * Create an IPv6-mapped address given an IPv4 address\n   * @memberof Address6\n   * @static\n   * @param {string} address - An IPv4 address string\n   * @returns {Address6}\n   * @example\n   * var address = Address6.fromAddress4('192.168.0.1');\n   * address.correctForm(); // '::ffff:c0a8:1'\n   * address.to4in6(); // '::ffff:192.168.0.1'\n   */\n  static fromAddress4(address: string): Address6 {\n    const address4 = new Address4(address);\n\n    const mask6 = constants6.BITS - (constants4.BITS - address4.subnetMask);\n\n    return new Address6(`::ffff:${address4.correctForm()}/${mask6}`);\n  }\n\n  /**\n   * Return an address from ip6.arpa form\n   * @memberof Address6\n   * @static\n   * @param {string} arpaFormAddress - an 'ip6.arpa' form address\n   * @returns {Adress6}\n   * @example\n   * var address = Address6.fromArpa(e.f.f.f.3.c.2.6.f.f.f.e.6.6.8.e.1.0.6.7.9.4.e.c.0.0.0.0.1.0.0.2.ip6.arpa.)\n   * address.correctForm(); // '2001:0:ce49:7601:e866:efff:62c3:fffe'\n   */\n  static fromArpa(arpaFormAddress: string): Address6 {\n    // remove ending \".ip6.arpa.\" or just \".\"\n    let address = arpaFormAddress.replace(/(\\.ip6\\.arpa)?\\.$/, '');\n    const semicolonAmount = 7;\n\n    // correct ip6.arpa form with ending removed will be 63 characters\n    if (address.length !== 63) {\n      throw new AddressError(\"Invalid 'ip6.arpa' form.\");\n    }\n\n    const parts = address.split('.').reverse();\n\n    for (let i = semicolonAmount; i > 0; i--) {\n      const insertIndex = i * 4;\n      parts.splice(insertIndex, 0, ':');\n    }\n\n    address = parts.join('');\n\n    return new Address6(address);\n  }\n\n  /**\n   * Return the Microsoft UNC transcription of the address\n   * @memberof Address6\n   * @instance\n   * @returns {String} the Microsoft UNC transcription of the address\n   */\n  microsoftTranscription(): string {\n    return `${this.correctForm().replace(/:/g, '-')}.ipv6-literal.net`;\n  }\n\n  /**\n   * Return the first n bits of the address, defaulting to the subnet mask\n   * @memberof Address6\n   * @instance\n   * @param {number} [mask=subnet] - the number of bits to mask\n   * @returns {String} the first n bits of the address as a string\n   */\n  mask(mask: number = this.subnetMask): string {\n    return this.getBitsBase2(0, mask);\n  }\n\n  /**\n   * Return the number of possible subnets of a given size in the address\n   * @memberof Address6\n   * @instance\n   * @param {number} [subnetSize=128] - the subnet size\n   * @returns {String}\n   */\n  // TODO: probably useful to have a numeric version of this too\n  possibleSubnets(subnetSize: number = 128): string {\n    const availableBits = constants6.BITS - this.subnetMask;\n    const subnetBits = Math.abs(subnetSize - constants6.BITS);\n    const subnetPowers = availableBits - subnetBits;\n\n    if (subnetPowers < 0) {\n      return '0';\n    }\n\n    return addCommas((BigInt('2') ** BigInt(subnetPowers)).toString(10));\n  }\n\n  /**\n   * Helper function getting start address.\n   * @memberof Address6\n   * @instance\n   * @returns {bigint}\n   */\n  _startAddress(): bigint {\n    return BigInt(`0b${this.mask() + '0'.repeat(constants6.BITS - this.subnetMask)}`);\n  }\n\n  /**\n   * The first address in the range given by this address' subnet\n   * Often referred to as the Network Address.\n   * @memberof Address6\n   * @instance\n   * @returns {Address6}\n   */\n  startAddress(): Address6 {\n    return Address6.fromBigInt(this._startAddress());\n  }\n\n  /**\n   * The first host address in the range given by this address's subnet ie\n   * the first address after the Network Address\n   * @memberof Address6\n   * @instance\n   * @returns {Address6}\n   */\n  startAddressExclusive(): Address6 {\n    const adjust = BigInt('1');\n    return Address6.fromBigInt(this._startAddress() + adjust);\n  }\n\n  /**\n   * Helper function getting end address.\n   * @memberof Address6\n   * @instance\n   * @returns {bigint}\n   */\n  _endAddress(): bigint {\n    return BigInt(`0b${this.mask() + '1'.repeat(constants6.BITS - this.subnetMask)}`);\n  }\n\n  /**\n   * The last address in the range given by this address' subnet\n   * Often referred to as the Broadcast\n   * @memberof Address6\n   * @instance\n   * @returns {Address6}\n   */\n  endAddress(): Address6 {\n    return Address6.fromBigInt(this._endAddress());\n  }\n\n  /**\n   * The last host address in the range given by this address's subnet ie\n   * the last address prior to the Broadcast Address\n   * @memberof Address6\n   * @instance\n   * @returns {Address6}\n   */\n  endAddressExclusive(): Address6 {\n    const adjust = BigInt('1');\n    return Address6.fromBigInt(this._endAddress() - adjust);\n  }\n\n  /**\n   * Return the scope of the address\n   * @memberof Address6\n   * @instance\n   * @returns {String}\n   */\n  getScope(): string {\n    let scope = constants6.SCOPES[parseInt(this.getBits(12, 16).toString(10), 10)];\n\n    if (this.getType() === 'Global unicast' && scope !== 'Link local') {\n      scope = 'Global';\n    }\n\n    return scope || 'Unknown';\n  }\n\n  /**\n   * Return the type of the address\n   * @memberof Address6\n   * @instance\n   * @returns {String}\n   */\n  getType(): string {\n    for (const subnet of Object.keys(constants6.TYPES)) {\n      if (this.isInSubnet(new Address6(subnet))) {\n        return constants6.TYPES[subnet] as string;\n      }\n    }\n\n    return 'Global unicast';\n  }\n\n  /**\n   * Return the bits in the given range as a BigInt\n   * @memberof Address6\n   * @instance\n   * @returns {bigint}\n   */\n  getBits(start: number, end: number): bigint {\n    return BigInt(`0b${this.getBitsBase2(start, end)}`);\n  }\n\n  /**\n   * Return the bits in the given range as a base-2 string\n   * @memberof Address6\n   * @instance\n   * @returns {String}\n   */\n  getBitsBase2(start: number, end: number): string {\n    return this.binaryZeroPad().slice(start, end);\n  }\n\n  /**\n   * Return the bits in the given range as a base-16 string\n   * @memberof Address6\n   * @instance\n   * @returns {String}\n   */\n  getBitsBase16(start: number, end: number): string {\n    const length = end - start;\n\n    if (length % 4 !== 0) {\n      throw new Error('Length of bits to retrieve must be divisible by four');\n    }\n\n    return this.getBits(start, end)\n      .toString(16)\n      .padStart(length / 4, '0');\n  }\n\n  /**\n   * Return the bits that are set past the subnet mask length\n   * @memberof Address6\n   * @instance\n   * @returns {String}\n   */\n  getBitsPastSubnet(): string {\n    return this.getBitsBase2(this.subnetMask, constants6.BITS);\n  }\n\n  /**\n   * Return the reversed ip6.arpa form of the address\n   * @memberof Address6\n   * @param {Object} options\n   * @param {boolean} options.omitSuffix - omit the \"ip6.arpa\" suffix\n   * @instance\n   * @returns {String}\n   */\n  reverseForm(options?: common.ReverseFormOptions): string {\n    if (!options) {\n      options = {};\n    }\n\n    const characters = Math.floor(this.subnetMask / 4);\n\n    const reversed = this.canonicalForm()\n      .replace(/:/g, '')\n      .split('')\n      .slice(0, characters)\n      .reverse()\n      .join('.');\n\n    if (characters > 0) {\n      if (options.omitSuffix) {\n        return reversed;\n      }\n\n      return `${reversed}.ip6.arpa.`;\n    }\n\n    if (options.omitSuffix) {\n      return '';\n    }\n\n    return 'ip6.arpa.';\n  }\n\n  /**\n   * Return the correct form of the address\n   * @memberof Address6\n   * @instance\n   * @returns {String}\n   */\n  correctForm(): string {\n    let i;\n    let groups = [];\n\n    let zeroCounter = 0;\n    const zeroes = [];\n\n    for (i = 0; i < this.parsedAddress.length; i++) {\n      const value = parseInt(this.parsedAddress[i], 16);\n\n      if (value === 0) {\n        zeroCounter++;\n      }\n\n      if (value !== 0 && zeroCounter > 0) {\n        if (zeroCounter > 1) {\n          zeroes.push([i - zeroCounter, i - 1]);\n        }\n\n        zeroCounter = 0;\n      }\n    }\n\n    // Do we end with a string of zeroes?\n    if (zeroCounter > 1) {\n      zeroes.push([this.parsedAddress.length - zeroCounter, this.parsedAddress.length - 1]);\n    }\n\n    const zeroLengths = zeroes.map((n) => n[1] - n[0] + 1);\n\n    if (zeroes.length > 0) {\n      const index = zeroLengths.indexOf(Math.max(...zeroLengths) as number);\n\n      groups = compact(this.parsedAddress, zeroes[index]);\n    } else {\n      groups = this.parsedAddress;\n    }\n\n    for (i = 0; i < groups.length; i++) {\n      if (groups[i] !== 'compact') {\n        groups[i] = parseInt(groups[i], 16).toString(16);\n      }\n    }\n\n    let correct = groups.join(':');\n\n    correct = correct.replace(/^compact$/, '::');\n    correct = correct.replace(/(^compact)|(compact$)/, ':');\n    correct = correct.replace(/compact/, '');\n\n    return correct;\n  }\n\n  /**\n   * Return a zero-padded base-2 string representation of the address\n   * @memberof Address6\n   * @instance\n   * @returns {String}\n   * @example\n   * var address = new Address6('2001:4860:4001:803::1011');\n   * address.binaryZeroPad();\n   * // '0010000000000001010010000110000001000000000000010000100000000011\n   * //  0000000000000000000000000000000000000000000000000001000000010001'\n   */\n  binaryZeroPad(): string {\n    return this.bigInt().toString(2).padStart(constants6.BITS, '0');\n  }\n\n  // TODO: Improve the semantics of this helper function\n  parse4in6(address: string): string {\n    const groups = address.split(':');\n    const lastGroup = groups.slice(-1)[0];\n\n    const address4 = lastGroup.match(constants4.RE_ADDRESS);\n\n    if (address4) {\n      this.parsedAddress4 = address4[0];\n      this.address4 = new Address4(this.parsedAddress4);\n\n      for (let i = 0; i < this.address4.groups; i++) {\n        if (/^0[0-9]+/.test(this.address4.parsedAddress[i])) {\n          throw new AddressError(\n            \"IPv4 addresses can't have leading zeroes.\",\n            address.replace(\n              constants4.RE_ADDRESS,\n              this.address4.parsedAddress.map(spanLeadingZeroes4).join('.'),\n            ),\n          );\n        }\n      }\n\n      this.v4 = true;\n\n      groups[groups.length - 1] = this.address4.toGroup6();\n\n      address = groups.join(':');\n    }\n\n    return address;\n  }\n\n  // TODO: Make private?\n  parse(address: string): string[] {\n    address = this.parse4in6(address);\n\n    const badCharacters = address.match(constants6.RE_BAD_CHARACTERS);\n\n    if (badCharacters) {\n      throw new AddressError(\n        `Bad character${\n          badCharacters.length > 1 ? 's' : ''\n        } detected in address: ${badCharacters.join('')}`,\n        address.replace(constants6.RE_BAD_CHARACTERS, '<span class=\"parse-error\">$1</span>'),\n      );\n    }\n\n    const badAddress = address.match(constants6.RE_BAD_ADDRESS);\n\n    if (badAddress) {\n      throw new AddressError(\n        `Address failed regex: ${badAddress.join('')}`,\n        address.replace(constants6.RE_BAD_ADDRESS, '<span class=\"parse-error\">$1</span>'),\n      );\n    }\n\n    let groups: string[] = [];\n\n    const halves = address.split('::');\n\n    if (halves.length === 2) {\n      let first = halves[0].split(':');\n      let last = halves[1].split(':');\n\n      if (first.length === 1 && first[0] === '') {\n        first = [];\n      }\n\n      if (last.length === 1 && last[0] === '') {\n        last = [];\n      }\n\n      const remaining = this.groups - (first.length + last.length);\n\n      if (!remaining) {\n        throw new AddressError('Error parsing groups');\n      }\n\n      this.elidedGroups = remaining;\n\n      this.elisionBegin = first.length;\n      this.elisionEnd = first.length + this.elidedGroups;\n\n      groups = groups.concat(first);\n\n      for (let i = 0; i < remaining; i++) {\n        groups.push('0');\n      }\n\n      groups = groups.concat(last);\n    } else if (halves.length === 1) {\n      groups = address.split(':');\n\n      this.elidedGroups = 0;\n    } else {\n      throw new AddressError('Too many :: groups found');\n    }\n\n    groups = groups.map((group: string) => parseInt(group, 16).toString(16));\n\n    if (groups.length !== this.groups) {\n      throw new AddressError('Incorrect number of groups found');\n    }\n\n    return groups;\n  }\n\n  /**\n   * Return the canonical form of the address\n   * @memberof Address6\n   * @instance\n   * @returns {String}\n   */\n  canonicalForm(): string {\n    return this.parsedAddress.map(paddedHex).join(':');\n  }\n\n  /**\n   * Return the decimal form of the address\n   * @memberof Address6\n   * @instance\n   * @returns {String}\n   */\n  decimal(): string {\n    return this.parsedAddress.map((n) => parseInt(n, 16).toString(10).padStart(5, '0')).join(':');\n  }\n\n  /**\n   * Return the address as a BigInt\n   * @memberof Address6\n   * @instance\n   * @returns {bigint}\n   */\n  bigInt(): bigint {\n    return BigInt(`0x${this.parsedAddress.map(paddedHex).join('')}`);\n  }\n\n  /**\n   * Return the last two groups of this address as an IPv4 address string\n   * @memberof Address6\n   * @instance\n   * @returns {Address4}\n   * @example\n   * var address = new Address6('2001:4860:4001::1825:bf11');\n   * address.to4().correctForm(); // '24.37.191.17'\n   */\n  to4(): Address4 {\n    const binary = this.binaryZeroPad().split('');\n\n    return Address4.fromHex(BigInt(`0b${binary.slice(96, 128).join('')}`).toString(16));\n  }\n\n  /**\n   * Return the v4-in-v6 form of the address\n   * @memberof Address6\n   * @instance\n   * @returns {String}\n   */\n  to4in6(): string {\n    const address4 = this.to4();\n    const address6 = new Address6(this.parsedAddress.slice(0, 6).join(':'), 6);\n\n    const correct = address6.correctForm();\n\n    let infix = '';\n\n    if (!/:$/.test(correct)) {\n      infix = ':';\n    }\n\n    return correct + infix + address4.address;\n  }\n\n  /**\n   * Return an object containing the Teredo properties of the address\n   * @memberof Address6\n   * @instance\n   * @returns {Object}\n   */\n  inspectTeredo(): TeredoProperties {\n    /*\n    - Bits 0 to 31 are set to the Teredo prefix (normally 2001:0000::/32).\n    - Bits 32 to 63 embed the primary IPv4 address of the Teredo server that\n      is used.\n    - Bits 64 to 79 can be used to define some flags. Currently only the\n      higher order bit is used; it is set to 1 if the Teredo client is\n      located behind a cone NAT, 0 otherwise. For Microsoft's Windows Vista\n      and Windows Server 2008 implementations, more bits are used. In those\n      implementations, the format for these 16 bits is \"CRAAAAUG AAAAAAAA\",\n      where \"C\" remains the \"Cone\" flag. The \"R\" bit is reserved for future\n      use. The \"U\" bit is for the Universal/Local flag (set to 0). The \"G\" bit\n      is Individual/Group flag (set to 0). The A bits are set to a 12-bit\n      randomly generated number chosen by the Teredo client to introduce\n      additional protection for the Teredo node against IPv6-based scanning\n      attacks.\n    - Bits 80 to 95 contains the obfuscated UDP port number. This is the\n      port number that is mapped by the NAT to the Teredo client with all\n      bits inverted.\n    - Bits 96 to 127 contains the obfuscated IPv4 address. This is the\n      public IPv4 address of the NAT with all bits inverted.\n    */\n    const prefix = this.getBitsBase16(0, 32);\n\n    const bitsForUdpPort: bigint = this.getBits(80, 96);\n    // eslint-disable-next-line no-bitwise\n    const udpPort = (bitsForUdpPort ^ BigInt('0xffff')).toString();\n\n    const server4 = Address4.fromHex(this.getBitsBase16(32, 64));\n\n    const bitsForClient4 = this.getBits(96, 128);\n    // eslint-disable-next-line no-bitwise\n    const client4 = Address4.fromHex((bitsForClient4 ^ BigInt('0xffffffff')).toString(16));\n\n    const flagsBase2 = this.getBitsBase2(64, 80);\n\n    const coneNat = testBit(flagsBase2, 15);\n    const reserved = testBit(flagsBase2, 14);\n    const groupIndividual = testBit(flagsBase2, 8);\n    const universalLocal = testBit(flagsBase2, 9);\n    const nonce = BigInt(`0b${flagsBase2.slice(2, 6) + flagsBase2.slice(8, 16)}`).toString(10);\n\n    return {\n      prefix: `${prefix.slice(0, 4)}:${prefix.slice(4, 8)}`,\n      server4: server4.address,\n      client4: client4.address,\n      flags: flagsBase2,\n      coneNat,\n      microsoft: {\n        reserved,\n        universalLocal,\n        groupIndividual,\n        nonce,\n      },\n      udpPort,\n    };\n  }\n\n  /**\n   * Return an object containing the 6to4 properties of the address\n   * @memberof Address6\n   * @instance\n   * @returns {Object}\n   */\n  inspect6to4(): SixToFourProperties {\n    /*\n    - Bits 0 to 15 are set to the 6to4 prefix (2002::/16).\n    - Bits 16 to 48 embed the IPv4 address of the 6to4 gateway that is used.\n    */\n\n    const prefix = this.getBitsBase16(0, 16);\n\n    const gateway = Address4.fromHex(this.getBitsBase16(16, 48));\n\n    return {\n      prefix: prefix.slice(0, 4),\n      gateway: gateway.address,\n    };\n  }\n\n  /**\n   * Return a v6 6to4 address from a v6 v4inv6 address\n   * @memberof Address6\n   * @instance\n   * @returns {Address6}\n   */\n  to6to4(): Address6 | null {\n    if (!this.is4()) {\n      return null;\n    }\n\n    const addr6to4 = [\n      '2002',\n      this.getBitsBase16(96, 112),\n      this.getBitsBase16(112, 128),\n      '',\n      '/16',\n    ].join(':');\n\n    return new Address6(addr6to4);\n  }\n\n  /**\n   * Return a byte array\n   * @memberof Address6\n   * @instance\n   * @returns {Array}\n   */\n  toByteArray(): number[] {\n    const valueWithoutPadding = this.bigInt().toString(16);\n    const leadingPad = '0'.repeat(valueWithoutPadding.length % 2);\n\n    const value = `${leadingPad}${valueWithoutPadding}`;\n\n    const bytes = [];\n    for (let i = 0, length = value.length; i < length; i += 2) {\n      bytes.push(parseInt(value.substring(i, i + 2), 16));\n    }\n\n    return bytes;\n  }\n\n  /**\n   * Return an unsigned byte array\n   * @memberof Address6\n   * @instance\n   * @returns {Array}\n   */\n  toUnsignedByteArray(): number[] {\n    return this.toByteArray().map(unsignByte);\n  }\n\n  /**\n   * Convert a byte array to an Address6 object\n   * @memberof Address6\n   * @static\n   * @returns {Address6}\n   */\n  static fromByteArray(bytes: Array<any>): Address6 {\n    return this.fromUnsignedByteArray(bytes.map(unsignByte));\n  }\n\n  /**\n   * Convert an unsigned byte array to an Address6 object\n   * @memberof Address6\n   * @static\n   * @returns {Address6}\n   */\n  static fromUnsignedByteArray(bytes: Array<any>): Address6 {\n    const BYTE_MAX = BigInt('256');\n    let result = BigInt('0');\n    let multiplier = BigInt('1');\n\n    for (let i = bytes.length - 1; i >= 0; i--) {\n      result += multiplier * BigInt(bytes[i].toString(10));\n\n      multiplier *= BYTE_MAX;\n    }\n\n    return Address6.fromBigInt(result);\n  }\n\n  // #region Attributes\n  /**\n   * Returns true if the given address is in the subnet of the current address\n   * @memberof Address6\n   * @instance\n   * @returns {boolean}\n   */\n  isInSubnet = common.isInSubnet;\n\n  /**\n   * Returns true if the address is correct, false otherwise\n   * @memberof Address6\n   * @instance\n   * @returns {boolean}\n   */\n  isCorrect = common.isCorrect(constants6.BITS);\n\n  /**\n   * Returns true if the address is in the canonical form, false otherwise\n   * @memberof Address6\n   * @instance\n   * @returns {boolean}\n   */\n  isCanonical(): boolean {\n    return this.addressMinusSuffix === this.canonicalForm();\n  }\n\n  /**\n   * Returns true if the address is a link local address, false otherwise\n   * @memberof Address6\n   * @instance\n   * @returns {boolean}\n   */\n  isLinkLocal(): boolean {\n    // Zeroes are required, i.e. we can't check isInSubnet with 'fe80::/10'\n    if (\n      this.getBitsBase2(0, 64) ===\n      '1111111010000000000000000000000000000000000000000000000000000000'\n    ) {\n      return true;\n    }\n\n    return false;\n  }\n\n  /**\n   * Returns true if the address is a multicast address, false otherwise\n   * @memberof Address6\n   * @instance\n   * @returns {boolean}\n   */\n  isMulticast(): boolean {\n    return this.getType() === 'Multicast';\n  }\n\n  /**\n   * Returns true if the address is a v4-in-v6 address, false otherwise\n   * @memberof Address6\n   * @instance\n   * @returns {boolean}\n   */\n  is4(): boolean {\n    return this.v4;\n  }\n\n  /**\n   * Returns true if the address is a Teredo address, false otherwise\n   * @memberof Address6\n   * @instance\n   * @returns {boolean}\n   */\n  isTeredo(): boolean {\n    return this.isInSubnet(new Address6('2001::/32'));\n  }\n\n  /**\n   * Returns true if the address is a 6to4 address, false otherwise\n   * @memberof Address6\n   * @instance\n   * @returns {boolean}\n   */\n  is6to4(): boolean {\n    return this.isInSubnet(new Address6('2002::/16'));\n  }\n\n  /**\n   * Returns true if the address is a loopback address, false otherwise\n   * @memberof Address6\n   * @instance\n   * @returns {boolean}\n   */\n  isLoopback(): boolean {\n    return this.getType() === 'Loopback';\n  }\n  // #endregion\n\n  // #region HTML\n  /**\n   * @returns {String} the address in link form with a default port of 80\n   */\n  href(optionalPort?: number | string): string {\n    if (optionalPort === undefined) {\n      optionalPort = '';\n    } else {\n      optionalPort = `:${optionalPort}`;\n    }\n\n    return `http://[${this.correctForm()}]${optionalPort}/`;\n  }\n\n  /**\n   * @returns {String} a link suitable for conveying the address via a URL hash\n   */\n  link(options?: { className?: string; prefix?: string; v4?: boolean }): string {\n    if (!options) {\n      options = {};\n    }\n\n    if (options.className === undefined) {\n      options.className = '';\n    }\n\n    if (options.prefix === undefined) {\n      options.prefix = '/#address=';\n    }\n\n    if (options.v4 === undefined) {\n      options.v4 = false;\n    }\n\n    let formFunction = this.correctForm;\n\n    if (options.v4) {\n      formFunction = this.to4in6;\n    }\n\n    const form = formFunction.call(this);\n\n    if (options.className) {\n      return `<a href=\"${options.prefix}${form}\" class=\"${options.className}\">${form}</a>`;\n    }\n\n    return `<a href=\"${options.prefix}${form}\">${form}</a>`;\n  }\n\n  /**\n   * Groups an address\n   * @returns {String}\n   */\n  group(): string {\n    if (this.elidedGroups === 0) {\n      // The simple case\n      return helpers.simpleGroup(this.address).join(':');\n    }\n\n    assert(typeof this.elidedGroups === 'number');\n    assert(typeof this.elisionBegin === 'number');\n\n    // The elided case\n    const output = [];\n\n    const [left, right] = this.address.split('::');\n\n    if (left.length) {\n      output.push(...helpers.simpleGroup(left));\n    } else {\n      output.push('');\n    }\n\n    const classes = ['hover-group'];\n\n    for (let i = this.elisionBegin; i < this.elisionBegin + this.elidedGroups; i++) {\n      classes.push(`group-${i}`);\n    }\n\n    output.push(`<span class=\"${classes.join(' ')}\"></span>`);\n\n    if (right.length) {\n      output.push(...helpers.simpleGroup(right, this.elisionEnd));\n    } else {\n      output.push('');\n    }\n\n    if (this.is4()) {\n      assert(this.address4 instanceof Address4);\n\n      output.pop();\n      output.push(this.address4.groupForV6());\n    }\n\n    return output.join(':');\n  }\n  // #endregion\n\n  // #region Regular expressions\n  /**\n   * Generate a regular expression string that can be used to find or validate\n   * all variations of this address\n   * @memberof Address6\n   * @instance\n   * @param {boolean} substringSearch\n   * @returns {string}\n   */\n  regularExpressionString(this: Address6, substringSearch: boolean = false): string {\n    let output: string[] = [];\n\n    // TODO: revisit why this is necessary\n    const address6 = new Address6(this.correctForm());\n\n    if (address6.elidedGroups === 0) {\n      // The simple case\n      output.push(simpleRegularExpression(address6.parsedAddress));\n    } else if (address6.elidedGroups === constants6.GROUPS) {\n      // A completely elided address\n      output.push(possibleElisions(constants6.GROUPS));\n    } else {\n      // A partially elided address\n      const halves = address6.address.split('::');\n\n      if (halves[0].length) {\n        output.push(simpleRegularExpression(halves[0].split(':')));\n      }\n\n      assert(typeof address6.elidedGroups === 'number');\n\n      output.push(\n        possibleElisions(address6.elidedGroups, halves[0].length !== 0, halves[1].length !== 0),\n      );\n\n      if (halves[1].length) {\n        output.push(simpleRegularExpression(halves[1].split(':')));\n      }\n\n      output = [output.join(':')];\n    }\n\n    if (!substringSearch) {\n      output = [\n        '(?=^|',\n        ADDRESS_BOUNDARY,\n        '|[^\\\\w\\\\:])(',\n        ...output,\n        ')(?=[^\\\\w\\\\:]|',\n        ADDRESS_BOUNDARY,\n        '|$)',\n      ];\n    }\n\n    return output.join('');\n  }\n\n  /**\n   * Generate a regular expression that can be used to find or validate all\n   * variations of this address.\n   * @memberof Address6\n   * @instance\n   * @param {boolean} substringSearch\n   * @returns {RegExp}\n   */\n  regularExpression(this: Address6, substringSearch: boolean = false): RegExp {\n    return new RegExp(this.regularExpressionString(substringSearch), 'i');\n  }\n  // #endregion\n}\n", "export { Address4 } from './ipv4';\nexport { Address6 } from './ipv6';\nexport { AddressError } from './address-error';\n\nimport * as helpers from './v6/helpers';\n\nexport const v6 = { helpers };\n", null, null, null, null, null, "'use strict'\nconst LRU = require('lru-cache')\nconst url = require('url')\nconst isLambda = require('is-lambda')\nconst dns = require('./dns.js')\n\nconst AGENT_CACHE = new LRU({ max: 50 })\nconst HttpAgent = require('agentkeepalive')\nconst HttpsAgent = HttpAgent.HttpsAgent\n\nmodule.exports = getAgent\n\nconst getAgentTimeout = timeout =>\n  typeof timeout !== 'number' || !timeout ? 0 : timeout + 1\n\nconst getMaxSockets = maxSockets => maxSockets || 15\n\nfunction getAgent (uri, opts) {\n  const parsedUri = new url.URL(typeof uri === 'string' ? uri : uri.url)\n  const isHttps = parsedUri.protocol === 'https:'\n  const pxuri = getProxyUri(parsedUri.href, opts)\n\n  // If opts.timeout is zero, set the agentTimeout to zero as well. A timeout\n  // of zero disables the timeout behavior (OS limits still apply). Else, if\n  // opts.timeout is a non-zero value, set it to timeout + 1, to ensure that\n  // the node-fetch-npm timeout will always fire first, giving us more\n  // consistent errors.\n  const agentTimeout = getAgentTimeout(opts.timeout)\n  const agentMaxSockets = getMaxSockets(opts.maxSockets)\n\n  const key = [\n    `https:${isHttps}`,\n    pxuri\n      ? `proxy:${pxuri.protocol}//${pxuri.host}:${pxuri.port}`\n      : '>no-proxy<',\n    `local-address:${opts.localAddress || '>no-local-address<'}`,\n    `strict-ssl:${isHttps ? opts.rejectUnauthorized : '>no-strict-ssl<'}`,\n    `ca:${(isHttps && opts.ca) || '>no-ca<'}`,\n    `cert:${(isHttps && opts.cert) || '>no-cert<'}`,\n    `key:${(isHttps && opts.key) || '>no-key<'}`,\n    `timeout:${agentTimeout}`,\n    `maxSockets:${agentMaxSockets}`,\n  ].join(':')\n\n  if (opts.agent != null) { // `agent: false` has special behavior!\n    return opts.agent\n  }\n\n  // keep alive in AWS lambda makes no sense\n  const lambdaAgent = !isLambda ? null\n    : isHttps ? require('https').globalAgent\n    : require('http').globalAgent\n\n  if (isLambda && !pxuri) {\n    return lambdaAgent\n  }\n\n  if (AGENT_CACHE.peek(key)) {\n    return AGENT_CACHE.get(key)\n  }\n\n  if (pxuri) {\n    const pxopts = isLambda ? {\n      ...opts,\n      agent: lambdaAgent,\n    } : opts\n    const proxy = getProxy(pxuri, pxopts, isHttps)\n    AGENT_CACHE.set(key, proxy)\n    return proxy\n  }\n\n  const agent = isHttps ? new HttpsAgent({\n    maxSockets: agentMaxSockets,\n    ca: opts.ca,\n    cert: opts.cert,\n    key: opts.key,\n    localAddress: opts.localAddress,\n    rejectUnauthorized: opts.rejectUnauthorized,\n    timeout: agentTimeout,\n    freeSocketTimeout: 15000,\n    lookup: dns.getLookup(opts.dns),\n  }) : new HttpAgent({\n    maxSockets: agentMaxSockets,\n    localAddress: opts.localAddress,\n    timeout: agentTimeout,\n    freeSocketTimeout: 15000,\n    lookup: dns.getLookup(opts.dns),\n  })\n  AGENT_CACHE.set(key, agent)\n  return agent\n}\n\nfunction checkNoProxy (uri, opts) {\n  const host = new url.URL(uri).hostname.split('.').reverse()\n  let noproxy = (opts.noProxy || getProcessEnv('no_proxy'))\n  if (typeof noproxy === 'string') {\n    noproxy = noproxy.split(',').map(n => n.trim())\n  }\n\n  return noproxy && noproxy.some(no => {\n    const noParts = no.split('.').filter(x => x).reverse()\n    if (!noParts.length) {\n      return false\n    }\n    for (let i = 0; i < noParts.length; i++) {\n      if (host[i] !== noParts[i]) {\n        return false\n      }\n    }\n    return true\n  })\n}\n\nmodule.exports.getProcessEnv = getProcessEnv\n\nfunction getProcessEnv (env) {\n  if (!env) {\n    return\n  }\n\n  let value\n\n  if (Array.isArray(env)) {\n    for (const e of env) {\n      value = process.env[e] ||\n        process.env[e.toUpperCase()] ||\n        process.env[e.toLowerCase()]\n      if (typeof value !== 'undefined') {\n        break\n      }\n    }\n  }\n\n  if (typeof env === 'string') {\n    value = process.env[env] ||\n      process.env[env.toUpperCase()] ||\n      process.env[env.toLowerCase()]\n  }\n\n  return value\n}\n\nmodule.exports.getProxyUri = getProxyUri\nfunction getProxyUri (uri, opts) {\n  const protocol = new url.URL(uri).protocol\n\n  const proxy = opts.proxy ||\n    (\n      protocol === 'https:' &&\n      getProcessEnv('https_proxy')\n    ) ||\n    (\n      protocol === 'http:' &&\n      getProcessEnv(['https_proxy', 'http_proxy', 'proxy'])\n    )\n  if (!proxy) {\n    return null\n  }\n\n  const parsedProxy = (typeof proxy === 'string') ? new url.URL(proxy) : proxy\n\n  return !checkNoProxy(uri, opts) && parsedProxy\n}\n\nconst getAuth = u =>\n  u.username && u.password ? decodeURIComponent(`${u.username}:${u.password}`)\n  : u.username ? decodeURIComponent(u.username)\n  : null\n\nconst getPath = u => u.pathname + u.search + u.hash\n\nconst HttpProxyAgent = require('http-proxy-agent')\nconst HttpsProxyAgent = require('https-proxy-agent')\nconst { SocksProxyAgent } = require('socks-proxy-agent')\nmodule.exports.getProxy = getProxy\nfunction getProxy (proxyUrl, opts, isHttps) {\n  // our current proxy agents do not support an overridden dns lookup method, so will not\n  // benefit from the dns cache\n  const popts = {\n    host: proxyUrl.hostname,\n    port: proxyUrl.port,\n    protocol: proxyUrl.protocol,\n    path: getPath(proxyUrl),\n    auth: getAuth(proxyUrl),\n    ca: opts.ca,\n    cert: opts.cert,\n    key: opts.key,\n    timeout: getAgentTimeout(opts.timeout),\n    localAddress: opts.localAddress,\n    maxSockets: getMaxSockets(opts.maxSockets),\n    rejectUnauthorized: opts.rejectUnauthorized,\n  }\n\n  if (proxyUrl.protocol === 'http:' || proxyUrl.protocol === 'https:') {\n    if (!isHttps) {\n      return new HttpProxyAgent(popts)\n    } else {\n      return new HttpsProxyAgent(popts)\n    }\n  } else if (proxyUrl.protocol.startsWith('socks')) {\n    // socks-proxy-agent uses hostname not host\n    popts.hostname = popts.host\n    delete popts.host\n    return new SocksProxyAgent(popts)\n  } else {\n    throw Object.assign(\n      new Error(`unsupported proxy protocol: '${proxyUrl.protocol}'`),\n      {\n        code: 'EUNSUPPORTEDPROXY',\n        url: proxyUrl.href,\n      }\n    )\n  }\n}\n", "{\n  \"name\": \"make-fetch-happen\",\n  \"version\": \"11.1.1\",\n  \"description\": \"Opinionated, caching, retrying fetch client\",\n  \"main\": \"lib/index.js\",\n  \"files\": [\n    \"bin/\",\n    \"lib/\"\n  ],\n  \"scripts\": {\n    \"test\": \"tap\",\n    \"posttest\": \"npm run lint\",\n    \"eslint\": \"eslint\",\n    \"lint\": \"eslint \\\"**/*.js\\\"\",\n    \"lintfix\": \"npm run lint -- --fix\",\n    \"postlint\": \"template-oss-check\",\n    \"snap\": \"tap\",\n    \"template-oss-apply\": \"template-oss-apply --force\"\n  },\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/npm/make-fetch-happen.git\"\n  },\n  \"keywords\": [\n    \"http\",\n    \"request\",\n    \"fetch\",\n    \"mean girls\",\n    \"caching\",\n    \"cache\",\n    \"subresource integrity\"\n  ],\n  \"author\": \"GitHub Inc.\",\n  \"license\": \"ISC\",\n  \"dependencies\": {\n    \"agentkeepalive\": \"^4.2.1\",\n    \"cacache\": \"^17.0.0\",\n    \"http-cache-semantics\": \"^4.1.1\",\n    \"http-proxy-agent\": \"^5.0.0\",\n    \"https-proxy-agent\": \"^5.0.0\",\n    \"is-lambda\": \"^1.0.1\",\n    \"lru-cache\": \"^7.7.1\",\n    \"minipass\": \"^5.0.0\",\n    \"minipass-fetch\": \"^3.0.0\",\n    \"minipass-flush\": \"^1.0.5\",\n    \"minipass-pipeline\": \"^1.2.4\",\n    \"negotiator\": \"^0.6.3\",\n    \"promise-retry\": \"^2.0.1\",\n    \"socks-proxy-agent\": \"^7.0.0\",\n    \"ssri\": \"^10.0.0\"\n  },\n  \"devDependencies\": {\n    \"@npmcli/eslint-config\": \"^4.0.0\",\n    \"@npmcli/template-oss\": \"4.14.1\",\n    \"nock\": \"^13.2.4\",\n    \"safe-buffer\": \"^5.2.1\",\n    \"standard-version\": \"^9.3.2\",\n    \"tap\": \"^16.0.0\"\n  },\n  \"engines\": {\n    \"node\": \"^14.17.0 || ^16.13.0 || >=18.0.0\"\n  },\n  \"tap\": {\n    \"color\": 1,\n    \"files\": \"test/*.js\",\n    \"check-coverage\": true,\n    \"timeout\": 60,\n    \"nyc-arg\": [\n      \"--exclude\",\n      \"tap-snapshots/**\"\n    ]\n  },\n  \"templateOSS\": {\n    \"//@npmcli/template-oss\": \"This file is partially managed by @npmcli/template-oss. Edits may be overwritten.\",\n    \"version\": \"4.14.1\",\n    \"publish\": \"true\"\n  }\n}\n", "const { Minipass } = require('minipass')\nconst fetch = require('minipass-fetch')\nconst promiseRetry = require('promise-retry')\nconst ssri = require('ssri')\n\nconst CachingMinipassPipeline = require('./pipeline.js')\nconst getAgent = require('./agent.js')\nconst pkg = require('../package.json')\n\nconst USER_AGENT = `${pkg.name}/${pkg.version} (+https://npm.im/${pkg.name})`\n\nconst RETRY_ERRORS = [\n  'ECONNRESET', // remote socket closed on us\n  'ECONNREFUSED', // remote host refused to open connection\n  'EADDRINUSE', // failed to bind to a local port (proxy?)\n  'ETIMEDOUT', // someone in the transaction is WAY TOO SLOW\n  'ERR_SOCKET_TIMEOUT', // same as above, but this one comes from agentkeepalive\n  // Known codes we do NOT retry on:\n  // ENOTFOUND (getaddrinfo failure. Either bad hostname, or offline)\n]\n\nconst RETRY_TYPES = [\n  'request-timeout',\n]\n\n// make a request directly to the remote source,\n// retrying certain classes of errors as well as\n// following redirects (through the cache if necessary)\n// and verifying response integrity\nconst remoteFetch = (request, options) => {\n  const agent = getAgent(request.url, options)\n  if (!request.headers.has('connection')) {\n    request.headers.set('connection', agent ? 'keep-alive' : 'close')\n  }\n\n  if (!request.headers.has('user-agent')) {\n    request.headers.set('user-agent', USER_AGENT)\n  }\n\n  // keep our own options since we're overriding the agent\n  // and the redirect mode\n  const _opts = {\n    ...options,\n    agent,\n    redirect: 'manual',\n  }\n\n  return promiseRetry(async (retryHandler, attemptNum) => {\n    const req = new fetch.Request(request, _opts)\n    try {\n      let res = await fetch(req, _opts)\n      if (_opts.integrity && res.status === 200) {\n        // we got a 200 response and the user has specified an expected\n        // integrity value, so wrap the response in an ssri stream to verify it\n        const integrityStream = ssri.integrityStream({\n          algorithms: _opts.algorithms,\n          integrity: _opts.integrity,\n          size: _opts.size,\n        })\n        const pipeline = new CachingMinipassPipeline({\n          events: ['integrity', 'size'],\n        }, res.body, integrityStream)\n        // we also propagate the integrity and size events out to the pipeline so we can use\n        // this new response body as an integrityEmitter for cacache\n        integrityStream.on('integrity', i => pipeline.emit('integrity', i))\n        integrityStream.on('size', s => pipeline.emit('size', s))\n        res = new fetch.Response(pipeline, res)\n        // set an explicit flag so we know if our response body will emit integrity and size\n        res.body.hasIntegrityEmitter = true\n      }\n\n      res.headers.set('x-fetch-attempts', attemptNum)\n\n      // do not retry POST requests, or requests with a streaming body\n      // do retry requests with a 408, 420, 429 or 500+ status in the response\n      const isStream = Minipass.isStream(req.body)\n      const isRetriable = req.method !== 'POST' &&\n          !isStream &&\n          ([408, 420, 429].includes(res.status) || res.status >= 500)\n\n      if (isRetriable) {\n        if (typeof options.onRetry === 'function') {\n          options.onRetry(res)\n        }\n\n        return retryHandler(res)\n      }\n\n      return res\n    } catch (err) {\n      const code = (err.code === 'EPROMISERETRY')\n        ? err.retried.code\n        : err.code\n\n      // err.retried will be the thing that was thrown from above\n      // if it's a response, we just got a bad status code and we\n      // can re-throw to allow the retry\n      const isRetryError = err.retried instanceof fetch.Response ||\n        (RETRY_ERRORS.includes(code) && RETRY_TYPES.includes(err.type))\n\n      if (req.method === 'POST' || isRetryError) {\n        throw err\n      }\n\n      if (typeof options.onRetry === 'function') {\n        options.onRetry(err)\n      }\n\n      return retryHandler(err)\n    }\n  }, options.retry).catch((err) => {\n    // don't reject for http errors, just return them\n    if (err.status >= 400 && err.type !== 'system') {\n      return err\n    }\n\n    throw err\n  })\n}\n\nmodule.exports = remoteFetch\n", "const { Request, Response } = require('minipass-fetch')\nconst { Minipass } = require('minipass')\nconst MinipassFlush = require('minipass-flush')\nconst cacache = require('cacache')\nconst url = require('url')\n\nconst CachingMinipassPipeline = require('../pipeline.js')\nconst CachePolicy = require('./policy.js')\nconst cacheKey = require('./key.js')\nconst remote = require('../remote.js')\n\nconst hasOwnProperty = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop)\n\n// allow list for request headers that will be written to the cache index\n// note: we will also store any request headers\n// that are named in a response's vary header\nconst KEEP_REQUEST_HEADERS = [\n  'accept-charset',\n  'accept-encoding',\n  'accept-language',\n  'accept',\n  'cache-control',\n]\n\n// allow list for response headers that will be written to the cache index\n// note: we must not store the real response's age header, or when we load\n// a cache policy based on the metadata it will think the cached response\n// is always stale\nconst KEEP_RESPONSE_HEADERS = [\n  'cache-control',\n  'content-encoding',\n  'content-language',\n  'content-type',\n  'date',\n  'etag',\n  'expires',\n  'last-modified',\n  'link',\n  'location',\n  'pragma',\n  'vary',\n]\n\n// return an object containing all metadata to be written to the index\nconst getMetadata = (request, response, options) => {\n  const metadata = {\n    time: Date.now(),\n    url: request.url,\n    reqHeaders: {},\n    resHeaders: {},\n\n    // options on which we must match the request and vary the response\n    options: {\n      compress: options.compress != null ? options.compress : request.compress,\n    },\n  }\n\n  // only save the status if it's not a 200 or 304\n  if (response.status !== 200 && response.status !== 304) {\n    metadata.status = response.status\n  }\n\n  for (const name of KEEP_REQUEST_HEADERS) {\n    if (request.headers.has(name)) {\n      metadata.reqHeaders[name] = request.headers.get(name)\n    }\n  }\n\n  // if the request's host header differs from the host in the url\n  // we need to keep it, otherwise it's just noise and we ignore it\n  const host = request.headers.get('host')\n  const parsedUrl = new url.URL(request.url)\n  if (host && parsedUrl.host !== host) {\n    metadata.reqHeaders.host = host\n  }\n\n  // if the response has a vary header, make sure\n  // we store the relevant request headers too\n  if (response.headers.has('vary')) {\n    const vary = response.headers.get('vary')\n    // a vary of \"*\" means every header causes a different response.\n    // in that scenario, we do not include any additional headers\n    // as the freshness check will always fail anyway and we don't\n    // want to bloat the cache indexes\n    if (vary !== '*') {\n      // copy any other request headers that will vary the response\n      const varyHeaders = vary.trim().toLowerCase().split(/\\s*,\\s*/)\n      for (const name of varyHeaders) {\n        if (request.headers.has(name)) {\n          metadata.reqHeaders[name] = request.headers.get(name)\n        }\n      }\n    }\n  }\n\n  for (const name of KEEP_RESPONSE_HEADERS) {\n    if (response.headers.has(name)) {\n      metadata.resHeaders[name] = response.headers.get(name)\n    }\n  }\n\n  for (const name of options.cacheAdditionalHeaders) {\n    if (response.headers.has(name)) {\n      metadata.resHeaders[name] = response.headers.get(name)\n    }\n  }\n\n  return metadata\n}\n\n// symbols used to hide objects that may be lazily evaluated in a getter\nconst _request = Symbol('request')\nconst _response = Symbol('response')\nconst _policy = Symbol('policy')\n\nclass CacheEntry {\n  constructor ({ entry, request, response, options }) {\n    if (entry) {\n      this.key = entry.key\n      this.entry = entry\n      // previous versions of this module didn't write an explicit timestamp in\n      // the metadata, so fall back to the entry's timestamp. we can't use the\n      // entry timestamp to determine staleness because cacache will update it\n      // when it verifies its data\n      this.entry.metadata.time = this.entry.metadata.time || this.entry.time\n    } else {\n      this.key = cacheKey(request)\n    }\n\n    this.options = options\n\n    // these properties are behind getters that lazily evaluate\n    this[_request] = request\n    this[_response] = response\n    this[_policy] = null\n  }\n\n  // returns a CacheEntry instance that satisfies the given request\n  // or undefined if no existing entry satisfies\n  static async find (request, options) {\n    try {\n      // compacts the index and returns an array of unique entries\n      var matches = await cacache.index.compact(options.cachePath, cacheKey(request), (A, B) => {\n        const entryA = new CacheEntry({ entry: A, options })\n        const entryB = new CacheEntry({ entry: B, options })\n        return entryA.policy.satisfies(entryB.request)\n      }, {\n        validateEntry: (entry) => {\n          // clean out entries with a buggy content-encoding value\n          if (entry.metadata &&\n              entry.metadata.resHeaders &&\n              entry.metadata.resHeaders['content-encoding'] === null) {\n            return false\n          }\n\n          // if an integrity is null, it needs to have a status specified\n          if (entry.integrity === null) {\n            return !!(entry.metadata && entry.metadata.status)\n          }\n\n          return true\n        },\n      })\n    } catch (err) {\n      // if the compact request fails, ignore the error and return\n      return\n    }\n\n    // a cache mode of 'reload' means to behave as though we have no cache\n    // on the way to the network. return undefined to allow cacheFetch to\n    // create a brand new request no matter what.\n    if (options.cache === 'reload') {\n      return\n    }\n\n    // find the specific entry that satisfies the request\n    let match\n    for (const entry of matches) {\n      const _entry = new CacheEntry({\n        entry,\n        options,\n      })\n\n      if (_entry.policy.satisfies(request)) {\n        match = _entry\n        break\n      }\n    }\n\n    return match\n  }\n\n  // if the user made a PUT/POST/PATCH then we invalidate our\n  // cache for the same url by deleting the index entirely\n  static async invalidate (request, options) {\n    const key = cacheKey(request)\n    try {\n      await cacache.rm.entry(options.cachePath, key, { removeFully: true })\n    } catch (err) {\n      // ignore errors\n    }\n  }\n\n  get request () {\n    if (!this[_request]) {\n      this[_request] = new Request(this.entry.metadata.url, {\n        method: 'GET',\n        headers: this.entry.metadata.reqHeaders,\n        ...this.entry.metadata.options,\n      })\n    }\n\n    return this[_request]\n  }\n\n  get response () {\n    if (!this[_response]) {\n      this[_response] = new Response(null, {\n        url: this.entry.metadata.url,\n        counter: this.options.counter,\n        status: this.entry.metadata.status || 200,\n        headers: {\n          ...this.entry.metadata.resHeaders,\n          'content-length': this.entry.size,\n        },\n      })\n    }\n\n    return this[_response]\n  }\n\n  get policy () {\n    if (!this[_policy]) {\n      this[_policy] = new CachePolicy({\n        entry: this.entry,\n        request: this.request,\n        response: this.response,\n        options: this.options,\n      })\n    }\n\n    return this[_policy]\n  }\n\n  // wraps the response in a pipeline that stores the data\n  // in the cache while the user consumes it\n  async store (status) {\n    // if we got a status other than 200, 301, or 308,\n    // or the CachePolicy forbid storage, append the\n    // cache status header and return it untouched\n    if (\n      this.request.method !== 'GET' ||\n      ![200, 301, 308].includes(this.response.status) ||\n      !this.policy.storable()\n    ) {\n      this.response.headers.set('x-local-cache-status', 'skip')\n      return this.response\n    }\n\n    const size = this.response.headers.get('content-length')\n    const cacheOpts = {\n      algorithms: this.options.algorithms,\n      metadata: getMetadata(this.request, this.response, this.options),\n      size,\n      integrity: this.options.integrity,\n      integrityEmitter: this.response.body.hasIntegrityEmitter && this.response.body,\n    }\n\n    let body = null\n    // we only set a body if the status is a 200, redirects are\n    // stored as metadata only\n    if (this.response.status === 200) {\n      let cacheWriteResolve, cacheWriteReject\n      const cacheWritePromise = new Promise((resolve, reject) => {\n        cacheWriteResolve = resolve\n        cacheWriteReject = reject\n      })\n\n      body = new CachingMinipassPipeline({ events: ['integrity', 'size'] }, new MinipassFlush({\n        flush () {\n          return cacheWritePromise\n        },\n      }))\n      // this is always true since if we aren't reusing the one from the remote fetch, we\n      // are using the one from cacache\n      body.hasIntegrityEmitter = true\n\n      const onResume = () => {\n        const tee = new Minipass()\n        const cacheStream = cacache.put.stream(this.options.cachePath, this.key, cacheOpts)\n        // re-emit the integrity and size events on our new response body so they can be reused\n        cacheStream.on('integrity', i => body.emit('integrity', i))\n        cacheStream.on('size', s => body.emit('size', s))\n        // stick a flag on here so downstream users will know if they can expect integrity events\n        tee.pipe(cacheStream)\n        // TODO if the cache write fails, log a warning but return the response anyway\n        // eslint-disable-next-line promise/catch-or-return\n        cacheStream.promise().then(cacheWriteResolve, cacheWriteReject)\n        body.unshift(tee)\n        body.unshift(this.response.body)\n      }\n\n      body.once('resume', onResume)\n      body.once('end', () => body.removeListener('resume', onResume))\n    } else {\n      await cacache.index.insert(this.options.cachePath, this.key, null, cacheOpts)\n    }\n\n    // note: we do not set the x-local-cache-hash header because we do not know\n    // the hash value until after the write to the cache completes, which doesn't\n    // happen until after the response has been sent and it's too late to write\n    // the header anyway\n    this.response.headers.set('x-local-cache', encodeURIComponent(this.options.cachePath))\n    this.response.headers.set('x-local-cache-key', encodeURIComponent(this.key))\n    this.response.headers.set('x-local-cache-mode', 'stream')\n    this.response.headers.set('x-local-cache-status', status)\n    this.response.headers.set('x-local-cache-time', new Date().toISOString())\n    const newResponse = new Response(body, {\n      url: this.response.url,\n      status: this.response.status,\n      headers: this.response.headers,\n      counter: this.options.counter,\n    })\n    return newResponse\n  }\n\n  // use the cached data to create a response and return it\n  async respond (method, options, status) {\n    let response\n    if (method === 'HEAD' || [301, 308].includes(this.response.status)) {\n      // if the request is a HEAD, or the response is a redirect,\n      // then the metadata in the entry already includes everything\n      // we need to build a response\n      response = this.response\n    } else {\n      // we're responding with a full cached response, so create a body\n      // that reads from cacache and attach it to a new Response\n      const body = new Minipass()\n      const headers = { ...this.policy.responseHeaders() }\n\n      const onResume = () => {\n        const cacheStream = cacache.get.stream.byDigest(\n          this.options.cachePath, this.entry.integrity, { memoize: this.options.memoize }\n        )\n        cacheStream.on('error', async (err) => {\n          cacheStream.pause()\n          if (err.code === 'EINTEGRITY') {\n            await cacache.rm.content(\n              this.options.cachePath, this.entry.integrity, { memoize: this.options.memoize }\n            )\n          }\n          if (err.code === 'ENOENT' || err.code === 'EINTEGRITY') {\n            await CacheEntry.invalidate(this.request, this.options)\n          }\n          body.emit('error', err)\n          cacheStream.resume()\n        })\n        // emit the integrity and size events based on our metadata so we're consistent\n        body.emit('integrity', this.entry.integrity)\n        body.emit('size', Number(headers['content-length']))\n        cacheStream.pipe(body)\n      }\n\n      body.once('resume', onResume)\n      body.once('end', () => body.removeListener('resume', onResume))\n      response = new Response(body, {\n        url: this.entry.metadata.url,\n        counter: options.counter,\n        status: 200,\n        headers,\n      })\n    }\n\n    response.headers.set('x-local-cache', encodeURIComponent(this.options.cachePath))\n    response.headers.set('x-local-cache-hash', encodeURIComponent(this.entry.integrity))\n    response.headers.set('x-local-cache-key', encodeURIComponent(this.key))\n    response.headers.set('x-local-cache-mode', 'stream')\n    response.headers.set('x-local-cache-status', status)\n    response.headers.set('x-local-cache-time', new Date(this.entry.metadata.time).toUTCString())\n    return response\n  }\n\n  // use the provided request along with this cache entry to\n  // revalidate the stored response. returns a response, either\n  // from the cache or from the update\n  async revalidate (request, options) {\n    const revalidateRequest = new Request(request, {\n      headers: this.policy.revalidationHeaders(request),\n    })\n\n    try {\n      // NOTE: be sure to remove the headers property from the\n      // user supplied options, since we have already defined\n      // them on the new request object. if they're still in the\n      // options then those will overwrite the ones from the policy\n      var response = await remote(revalidateRequest, {\n        ...options,\n        headers: undefined,\n      })\n    } catch (err) {\n      // if the network fetch fails, return the stale\n      // cached response unless it has a cache-control\n      // of 'must-revalidate'\n      if (!this.policy.mustRevalidate) {\n        return this.respond(request.method, options, 'stale')\n      }\n\n      throw err\n    }\n\n    if (this.policy.revalidated(revalidateRequest, response)) {\n      // we got a 304, write a new index to the cache and respond from cache\n      const metadata = getMetadata(request, response, options)\n      // 304 responses do not include headers that are specific to the response data\n      // since they do not include a body, so we copy values for headers that were\n      // in the old cache entry to the new one, if the new metadata does not already\n      // include that header\n      for (const name of KEEP_RESPONSE_HEADERS) {\n        if (\n          !hasOwnProperty(metadata.resHeaders, name) &&\n          hasOwnProperty(this.entry.metadata.resHeaders, name)\n        ) {\n          metadata.resHeaders[name] = this.entry.metadata.resHeaders[name]\n        }\n      }\n\n      for (const name of options.cacheAdditionalHeaders) {\n        const inMeta = hasOwnProperty(metadata.resHeaders, name)\n        const inEntry = hasOwnProperty(this.entry.metadata.resHeaders, name)\n        const inPolicy = hasOwnProperty(this.policy.response.headers, name)\n\n        // if the header is in the existing entry, but it is not in the metadata\n        // then we need to write it to the metadata as this will refresh the on-disk cache\n        if (!inMeta && inEntry) {\n          metadata.resHeaders[name] = this.entry.metadata.resHeaders[name]\n        }\n        // if the header is in the metadata, but not in the policy, then we need to set\n        // it in the policy so that it's included in the immediate response. future\n        // responses will load a new cache entry, so we don't need to change that\n        if (!inPolicy && inMeta) {\n          this.policy.response.headers[name] = metadata.resHeaders[name]\n        }\n      }\n\n      try {\n        await cacache.index.insert(options.cachePath, this.key, this.entry.integrity, {\n          size: this.entry.size,\n          metadata,\n        })\n      } catch (err) {\n        // if updating the cache index fails, we ignore it and\n        // respond anyway\n      }\n      return this.respond(request.method, options, 'revalidated')\n    }\n\n    // if we got a modified response, create a new entry based on it\n    const newEntry = new CacheEntry({\n      request,\n      response,\n      options,\n    })\n\n    // respond with the new entry while writing it to the cache\n    return newEntry.store('updated')\n  }\n}\n\nmodule.exports = CacheEntry\n", "const { NotCachedError } = require('./errors.js')\nconst CacheEntry = require('./entry.js')\nconst remote = require('../remote.js')\n\n// do whatever is necessary to get a Response and return it\nconst cacheFetch = async (request, options) => {\n  // try to find a cached entry that satisfies this request\n  const entry = await CacheEntry.find(request, options)\n  if (!entry) {\n    // no cached result, if the cache mode is 'only-if-cached' that's a failure\n    if (options.cache === 'only-if-cached') {\n      throw new NotCachedError(request.url)\n    }\n\n    // otherwise, we make a request, store it and return it\n    const response = await remote(request, options)\n    const newEntry = new CacheEntry({ request, response, options })\n    return newEntry.store('miss')\n  }\n\n  // we have a cached response that satisfies this request, however if the cache\n  // mode is 'no-cache' then we send the revalidation request no matter what\n  if (options.cache === 'no-cache') {\n    return entry.revalidate(request, options)\n  }\n\n  // if the cached entry is not stale, or if the cache mode is 'force-cache' or\n  // 'only-if-cached' we can respond with the cached entry. set the status\n  // based on the result of needsRevalidation and respond\n  const _needsRevalidation = entry.policy.needsRevalidation(request)\n  if (options.cache === 'force-cache' ||\n      options.cache === 'only-if-cached' ||\n      !_needsRevalidation) {\n    return entry.respond(request.method, options, _needsRevalidation ? 'stale' : 'hit')\n  }\n\n  // if we got here, the cache entry is stale so revalidate it\n  return entry.revalidate(request, options)\n}\n\ncacheFetch.invalidate = async (request, options) => {\n  if (!options.cachePath) {\n    return\n  }\n\n  return CacheEntry.invalidate(request, options)\n}\n\nmodule.exports = cacheFetch\n", "'use strict'\n\nconst { FetchError, Request, isRedirect } = require('minipass-fetch')\nconst url = require('url')\n\nconst CachePolicy = require('./cache/policy.js')\nconst cache = require('./cache/index.js')\nconst remote = require('./remote.js')\n\n// given a Request, a Response and user options\n// return true if the response is a redirect that\n// can be followed. we throw errors that will result\n// in the fetch being rejected if the redirect is\n// possible but invalid for some reason\nconst canFollowRedirect = (request, response, options) => {\n  if (!isRedirect(response.status)) {\n    return false\n  }\n\n  if (options.redirect === 'manual') {\n    return false\n  }\n\n  if (options.redirect === 'error') {\n    throw new FetchError(`redirect mode is set to error: ${request.url}`,\n      'no-redirect', { code: 'ENOREDIRECT' })\n  }\n\n  if (!response.headers.has('location')) {\n    throw new FetchError(`redirect location header missing for: ${request.url}`,\n      'no-location', { code: 'EINVALIDREDIRECT' })\n  }\n\n  if (request.counter >= request.follow) {\n    throw new FetchError(`maximum redirect reached at: ${request.url}`,\n      'max-redirect', { code: 'EMAXREDIRECT' })\n  }\n\n  return true\n}\n\n// given a Request, a Response, and the user's options return an object\n// with a new Request and a new options object that will be used for\n// following the redirect\nconst getRedirect = (request, response, options) => {\n  const _opts = { ...options }\n  const location = response.headers.get('location')\n  const redirectUrl = new url.URL(location, /^https?:/.test(location) ? undefined : request.url)\n  // Comment below is used under the following license:\n  /**\n   * @license\n   * Copyright (c) 2010-2012 Mikeal Rogers\n   * Licensed under the Apache License, Version 2.0 (the \"License\");\n   * you may not use this file except in compliance with the License.\n   * You may obtain a copy of the License at\n   * http://www.apache.org/licenses/LICENSE-2.0\n   * Unless required by applicable law or agreed to in writing,\n   * software distributed under the License is distributed on an \"AS\n   * IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either\n   * express or implied. See the License for the specific language\n   * governing permissions and limitations under the License.\n   */\n\n  // Remove authorization if changing hostnames (but not if just\n  // changing ports or protocols).  This matches the behavior of request:\n  // https://github.com/request/request/blob/b12a6245/lib/redirect.js#L134-L138\n  if (new url.URL(request.url).hostname !== redirectUrl.hostname) {\n    request.headers.delete('authorization')\n    request.headers.delete('cookie')\n  }\n\n  // for POST request with 301/302 response, or any request with 303 response,\n  // use GET when following redirect\n  if (\n    response.status === 303 ||\n    (request.method === 'POST' && [301, 302].includes(response.status))\n  ) {\n    _opts.method = 'GET'\n    _opts.body = null\n    request.headers.delete('content-length')\n  }\n\n  _opts.headers = {}\n  request.headers.forEach((value, key) => {\n    _opts.headers[key] = value\n  })\n\n  _opts.counter = ++request.counter\n  const redirectReq = new Request(url.format(redirectUrl), _opts)\n  return {\n    request: redirectReq,\n    options: _opts,\n  }\n}\n\nconst fetch = async (request, options) => {\n  const response = CachePolicy.storable(request, options)\n    ? await cache(request, options)\n    : await remote(request, options)\n\n  // if the request wasn't a GET or HEAD, and the response\n  // status is between 200 and 399 inclusive, invalidate the\n  // request url\n  if (!['GET', 'HEAD'].includes(request.method) &&\n      response.status >= 200 &&\n      response.status <= 399) {\n    await cache.invalidate(request, options)\n  }\n\n  if (!canFollowRedirect(request, response, options)) {\n    return response\n  }\n\n  const redirect = getRedirect(request, response, options)\n  return fetch(redirect.request, redirect.options)\n}\n\nmodule.exports = fetch\n", "const { FetchError, Headers, Request, Response } = require('minipass-fetch')\n\nconst configureOptions = require('./options.js')\nconst fetch = require('./fetch.js')\n\nconst makeFetchHappen = (url, opts) => {\n  const options = configureOptions(opts)\n\n  const request = new Request(url, options)\n  return fetch(request, options)\n}\n\nmakeFetchHappen.defaults = (defaultUrl, defaultOptions = {}, wrappedFetch = makeFetchHappen) => {\n  if (typeof defaultUrl === 'object') {\n    defaultOptions = defaultUrl\n    defaultUrl = null\n  }\n\n  const defaultedFetch = (url, options = {}) => {\n    const finalUrl = url || defaultUrl\n    const finalOptions = {\n      ...defaultOptions,\n      ...options,\n      headers: {\n        ...defaultOptions.headers,\n        ...options.headers,\n      },\n    }\n    return wrappedFetch(finalUrl, finalOptions)\n  }\n\n  defaultedFetch.defaults = (defaultUrl1, defaultOptions1 = {}) =>\n    makeFetchHappen.defaults(defaultUrl1, defaultOptions1, defaultedFetch)\n  return defaultedFetch\n}\n\nmodule.exports = makeFetchHappen\nmodule.exports.FetchError = FetchError\nmodule.exports.Headers = Headers\nmodule.exports.Request = Request\nmodule.exports.Response = Response\n", "import { isObject } from '../utilities/predicates';\nimport { GraphQLDataSource, GraphQLDataSourceProcessOptions, GraphQLDataSourceRequestKind } from './types';\nimport { createHash } from '@apollo/utils.createhash';\nimport { ResponsePath } from '@apollo/query-planner';\nimport { parseCacheControlHeader } from './parseCacheControlHeader';\nimport fetcher from 'make-fetch-happen';\nimport { Headers as NodeFetchHeaders, Request as NodeFetchRequest } from 'node-fetch';\nimport { Fetcher, FetcherRequestInit, FetcherResponse } from '@apollo/utils.fetcher';\nimport { GraphQLError, GraphQLErrorExtensions } from 'graphql';\nimport { GatewayCacheHint, GatewayCachePolicy, GatewayGraphQLRequest, GatewayGraphQLRequestContext, GatewayGraphQLResponse } from '@apollo/server-gateway-interface';\n\nexport class RemoteGraphQLDataSource<\n  TContext extends Record<string, any> = Record<string, any>,\n> implements GraphQLDataSource<TContext>\n{\n  fetcher: Fetcher;\n\n  constructor(\n    config?: Partial<RemoteGraphQLDataSource<TContext>> &\n      object &\n      ThisType<RemoteGraphQLDataSource<TContext>>,\n  ) {\n    this.fetcher = fetcher.defaults({\n      // Allow an arbitrary number of sockets per subgraph. This is the default\n      // behavior of Node's http.Agent as well as the npm package agentkeepalive\n      // which wraps it, but is not the default behavior of make-fetch-happen\n      // which wraps agentkeepalive (that package sets this to 15 by default).\n      maxSockets: Infinity,\n      // although this is the default, we want to take extra care and be very\n      // explicity to ensure that mutations cannot be retried. please leave this\n      // intact.\n      retry: false,\n    });\n    if (config) {\n      return Object.assign(this, config);\n    }\n  }\n\n  url!: string;\n\n  /**\n   * Whether the downstream request should be made with automated persisted\n   * query (APQ) behavior enabled.\n   *\n   * @remarks When enabled, the request to the downstream service will first be\n   * attempted using a SHA-256 hash of the operation rather than including the\n   * operation itself. If the downstream server supports APQ and has this\n   * operation registered in its APQ storage, it will be able to complete the\n   * request without the entirety of the operation document being transmitted.\n   *\n   * In the event that the downstream service is unaware of the operation, it\n   * will respond with an `PersistedQueryNotFound` error and it will be resent\n   * with the full operation body for fulfillment.\n   *\n   * Generally speaking, when the downstream server is processing similar\n   * operations repeatedly, APQ can offer substantial network savings in terms\n   * of bytes transmitted over the wire between gateways and downstream servers.\n   */\n  apq: boolean = false;\n\n  /**\n   * Should cache-control response headers from subgraphs affect the operation's\n   * cache policy? If it shouldn't, set this to false.\n   */\n  honorSubgraphCacheControlHeader: boolean = true;\n\n  async process(\n    options: GraphQLDataSourceProcessOptions<TContext>,\n  ): Promise<GatewayGraphQLResponse> {\n    const { request, context: originalContext } = options;\n    const pathInIncomingRequest =\n      options.kind === GraphQLDataSourceRequestKind.INCOMING_OPERATION\n        ? options.pathInIncomingRequest\n        : undefined;\n\n    // Deal with a bit of a hairy situation in typings: when doing health checks\n    // and schema checks we always pass in `{}` as the context even though it's\n    // not really guaranteed to be a `TContext`, and then we pass it to various\n    // methods on this object. The reason this \"works\" is that the DataSourceMap\n    // and Service types aren't generic-ized on TContext at all (so `{}` is in\n    // practice always legal there)... ie, the genericness of this class is\n    // questionable in the first place.\n    const context = originalContext as TContext;\n\n    // Respect incoming http headers (eg, apollo-federation-include-trace).\n    const headers = new NodeFetchHeaders();\n    if (request.http?.headers) {\n      for (const [name, value] of request.http.headers) {\n        headers.append(name, value);\n      }\n    }\n    headers.set('Content-Type', 'application/json');\n\n    request.http = {\n      method: 'POST',\n      url: this.url,\n      headers,\n    };\n\n    if (this.willSendRequest) {\n      await this.willSendRequest(options);\n    }\n\n    if (!request.query) {\n      throw new Error('Missing query');\n    }\n\n    const { query, ...requestWithoutQuery } = request;\n\n    // Special handling of cache-control headers in response. Requires\n    // Apollo Server 3, so we check to make sure the method we want is\n    // there.\n    const overallCachePolicy =\n      this.honorSubgraphCacheControlHeader &&\n      options.kind === GraphQLDataSourceRequestKind.INCOMING_OPERATION &&\n      options.incomingRequestContext.overallCachePolicy &&\n      'restrict' in options.incomingRequestContext.overallCachePolicy\n        ? options.incomingRequestContext.overallCachePolicy\n        : null;\n\n    if (this.apq) {\n      const apqHash = createHash('sha256').update(request.query).digest('hex');\n\n      // Take the original extensions and extend them with\n      // the necessary \"extensions\" for APQ handshaking.\n      requestWithoutQuery.extensions = {\n        ...request.extensions,\n        persistedQuery: {\n          version: 1,\n          sha256Hash: apqHash,\n        },\n      };\n\n      const apqOptimisticResponse = await this.sendRequest(\n        requestWithoutQuery,\n        context,\n      );\n\n      // If we didn't receive notice to retry with APQ, then let's\n      // assume this is the best result we'll get and return it!\n      if (\n        !apqOptimisticResponse.errors ||\n        !apqOptimisticResponse.errors.find(\n          (error) => error.message === 'PersistedQueryNotFound',\n        )\n      ) {\n        return this.respond({\n          response: apqOptimisticResponse,\n          request: requestWithoutQuery,\n          context,\n          overallCachePolicy,\n          pathInIncomingRequest\n        });\n      }\n    }\n\n    // If APQ was enabled, we'll run the same request again, but add in the\n    // previously omitted `query`.  If APQ was NOT enabled, this is the first\n    // request (non-APQ, all the way).\n    const requestWithQuery: GatewayGraphQLRequest = {\n      query,\n      ...requestWithoutQuery,\n    };\n    const response = await this.sendRequest(requestWithQuery, context);\n    return this.respond({\n      response,\n      request: requestWithQuery,\n      context,\n      overallCachePolicy,\n      pathInIncomingRequest\n    });\n  }\n\n  private async sendRequest(\n    request: GatewayGraphQLRequest,\n    context: TContext,\n  ): Promise<GatewayGraphQLResponse> {\n    // This would represent an internal programming error since this shouldn't\n    // be possible in the way that this method is invoked right now.\n    if (!request.http) {\n      throw new Error(\"Internal error: Only 'http' requests are supported.\");\n    }\n\n    // We don't want to serialize the `http` properties into the body that is\n    // being transmitted.  Instead, we want those to be used to indicate what\n    // we're accessing (e.g. url) and what we access it with (e.g. headers).\n    const { http, ...requestWithoutHttp } = request;\n    const stringifiedRequestWithoutHttp = JSON.stringify(requestWithoutHttp);\n    const requestInit: FetcherRequestInit = {\n      method: http.method,\n      headers: Object.fromEntries(http.headers),\n      body: stringifiedRequestWithoutHttp,\n    };\n    // Note that we don't actually send this Request object to the fetcher; it\n    // is merely sent to methods on this object that might be overridden by users.\n    // We are careful to only send data to the overridable fetcher function that uses\n    // plain JS objects --- some fetch implementations don't know how to handle\n    // Request or Headers objects created by other fetch implementations.\n    const fetchRequest = new NodeFetchRequest(http.url, requestInit);\n\n    let fetchResponse: FetcherResponse | undefined;\n\n    try {\n      // Use our local `fetcher` to allow for fetch injection\n      // Use the fetcher's `Request` implementation for compatibility\n      fetchResponse = await this.fetcher(http.url, requestInit);\n\n      if (!fetchResponse.ok) {\n        throw await this.errorFromResponse(fetchResponse);\n      }\n\n      const body = await this.parseBody(fetchResponse, fetchRequest, context);\n\n      if (!isObject(body)) {\n        throw new Error(`Expected JSON response body, but received: ${body}`);\n      }\n\n      return {\n        ...body,\n        http: fetchResponse,\n      };\n    } catch (error) {\n      this.didEncounterError(error, fetchRequest, fetchResponse, context, request);\n      throw error;\n    }\n  }\n\n  public willSendRequest?(\n    options: GraphQLDataSourceProcessOptions<TContext>,\n  ): void | Promise<void>;\n\n  private async respond({\n    response,\n    request,\n    context,\n    overallCachePolicy,\n    pathInIncomingRequest\n  }: {\n    response: GatewayGraphQLResponse;\n    request: GatewayGraphQLRequest;\n    context: TContext;\n    overallCachePolicy: GatewayCachePolicy | null;\n    pathInIncomingRequest?: ResponsePath\n  }): Promise<GatewayGraphQLResponse> {\n    const processedResponse =\n      typeof this.didReceiveResponse === 'function'\n        ? await this.didReceiveResponse({ response, request, context, pathInIncomingRequest })\n        : response;\n\n    if (overallCachePolicy) {\n      const parsed = parseCacheControlHeader(\n        response.http?.headers.get('cache-control'),\n      );\n\n      // If the subgraph does not specify a max-age, we assume its response (and\n      // thus the overall response) is uncacheable. (If you don't like this, you\n      // can tweak the `cache-control` header in your `didReceiveResponse`\n      // method.)\n      const hint: GatewayCacheHint = { maxAge: 0 };\n      const maxAge = parsed['max-age'];\n      if (typeof maxAge === 'string' && maxAge.match(/^[0-9]+$/)) {\n        hint.maxAge = +maxAge;\n      }\n      if (parsed['private'] === true) {\n        hint.scope = 'PRIVATE';\n      }\n      if (parsed['public'] === true) {\n        hint.scope = 'PUBLIC';\n      }\n      overallCachePolicy.restrict(hint);\n    }\n\n    return processedResponse;\n  }\n\n  public didReceiveResponse?(\n    requestContext: Required<\n      Pick<GatewayGraphQLRequestContext<TContext>, 'request' | 'response' | 'context'>\n    > & { pathInIncomingRequest?: ResponsePath }\n  ): GatewayGraphQLResponse | Promise<GatewayGraphQLResponse>;\n\n  public didEncounterError(\n    error: Error,\n    _fetchRequest: NodeFetchRequest,\n    _fetchResponse?: FetcherResponse,\n    _context?: TContext,\n    _request?: GatewayGraphQLRequest,\n  ) {\n    throw error;\n  }\n\n  public parseBody(\n    fetchResponse: FetcherResponse,\n    _fetchRequest?: NodeFetchRequest,\n    _context?: TContext,\n  ): Promise<object | string> {\n    const contentType = fetchResponse.headers.get('Content-Type');\n    if (\n      contentType &&\n      (contentType.startsWith('application/json') ||\n        contentType.startsWith('application/graphql-response+json'))\n    ) {\n      return fetchResponse.json();\n    } else {\n      return fetchResponse.text();\n    }\n  }\n\n  public async errorFromResponse(response: FetcherResponse) {\n    const body = await this.parseBody(response);\n\n    const extensions: GraphQLErrorExtensions = {\n      response: {\n        url: response.url,\n        status: response.status,\n        statusText: response.statusText,\n        body,\n      },\n    };\n\n    if (response.status === 401) {\n      extensions.code = 'UNAUTHENTICATED';\n    } else if (response.status === 403) {\n      extensions.code = 'FORBIDDEN';\n    }\n\n    return new GraphQLError(`${response.status}: ${response.statusText}`, {\n      extensions,\n    });\n  }\n}\n", "import { NamedSchemaElement, SubgraphASTNode } from \"@apollo/federation-internals\";\nimport { printLocation } from \"graphql\";\n\nexport enum HintLevel {\n  WARN = 60,\n  INFO = 40,\n  DEBUG = 20,\n}\n\nexport type HintCodeDefinition = {\n  code: string,\n  // Note that we keep the name separately, because while it can be obtained easily enough\n  // with `HintLevel[value]` on the JS/TS-side, the name would otherwise be lost when\n  // serializing the related objects to JSON for rover.\n  level: { value: HintLevel, name: string},\n  description: string,\n}\n\nfunction makeCodeDefinition({\n  code,\n  level,\n  description,\n}: {\n  code: string,\n  level: HintLevel,\n  description: string,\n}): HintCodeDefinition {\n  return ({\n    code,\n    level: { value: level, name: HintLevel[level]},\n    description,\n  });\n}\n\nconst INCONSISTENT_BUT_COMPATIBLE_FIELD_TYPE = makeCodeDefinition({\n  code: 'INCONSISTENT_BUT_COMPATIBLE_FIELD_TYPE',\n  level: HintLevel.INFO,\n  description: 'Indicates that a field does not have the exact same types in all subgraphs, but that the types are \"compatible\"'\n    + ' (2 types are compatible if one is a non-nullable version of the other, a list version, a subtype, or a'\n    + ' combination of the former).',\n});\n\nconst INCONSISTENT_BUT_COMPATIBLE_ARGUMENT_TYPE = makeCodeDefinition({\n  code: 'INCONSISTENT_BUT_COMPATIBLE_ARGUMENT_TYPE',\n  level: HintLevel.INFO,\n  description: 'Indicates that an argument type (of a field/input field/directive definition) does not have the exact same type'\n    + ' in all subgraphs, but that the types are \"compatible\" (two types are compatible if one is a non-nullable'\n    + ' version of the other, a list version, a subtype, or a combination of the former).',\n});\n\nconst INCONSISTENT_DEFAULT_VALUE_PRESENCE = makeCodeDefinition({\n  code: 'INCONSISTENT_DEFAULT_VALUE_PRESENCE',\n  level: HintLevel.WARN,\n  description: 'Indicates that an argument definition (of a field/input field/directive definition) has a default value in only'\n    + ' some of the subgraphs that define the argument.',\n});\n\nconst INCONSISTENT_ENTITY = makeCodeDefinition({\n  code: 'INCONSISTENT_ENTITY',\n  level: HintLevel.INFO,\n  description: 'Indicates that an object is declared as an entity (has a `@key`) in only some of the subgraphs in which the object is defined.',\n});\n\nconst INCONSISTENT_OBJECT_VALUE_TYPE_FIELD = makeCodeDefinition({\n  code: 'INCONSISTENT_OBJECT_VALUE_TYPE_FIELD',\n  level: HintLevel.DEBUG,\n  description: 'Indicates that a field of an object \"value type\" (has no `@key` in any subgraph) is not defined in all the subgraphs that declare the type.',\n});\n\nconst INCONSISTENT_INTERFACE_VALUE_TYPE_FIELD = makeCodeDefinition({\n  code: 'INCONSISTENT_INTERFACE_VALUE_TYPE_FIELD',\n  level: HintLevel.DEBUG,\n  description: 'Indicates that a field of an interface \"value type\" (has no `@key` in any subgraph) is not defined in all the subgraphs that declare the type.',\n});\n\nconst INCONSISTENT_INPUT_OBJECT_FIELD = makeCodeDefinition({\n  code: 'INCONSISTENT_INPUT_OBJECT_FIELD',\n  level: HintLevel.WARN,\n  description: 'Indicates that a field of an input object type definition is only defined in a subset of the subgraphs that declare the input object.',\n});\n\nconst INCONSISTENT_UNION_MEMBER = makeCodeDefinition({\n  code: 'INCONSISTENT_UNION_MEMBER',\n  level: HintLevel.DEBUG,\n  description: 'Indicates that a member of a union type definition is only defined in a subset of the subgraphs that declare the union.',\n});\n\nconst INCONSISTENT_ENUM_VALUE_FOR_INPUT_ENUM = makeCodeDefinition({\n  code: 'INCONSISTENT_ENUM_VALUE_FOR_INPUT_ENUM',\n  level: HintLevel.WARN,\n  description: 'Indicates that a value of an enum type definition (that is only used as an Input type) has not been merged into the supergraph because it is defined in only a subset of the subgraphs that declare the enum',\n});\n\nconst INCONSISTENT_ENUM_VALUE_FOR_OUTPUT_ENUM = makeCodeDefinition({\n  code: 'INCONSISTENT_ENUM_VALUE_FOR_OUTPUT_ENUM',\n  level: HintLevel.DEBUG,\n  description: 'Indicates that a value of an enum type definition (that is only used as an Output type, or is unused) has been merged in the supergraph but is defined in only a subset of the subgraphs that declare the enum',\n});\n\nconst INCONSISTENT_TYPE_SYSTEM_DIRECTIVE_REPEATABLE = makeCodeDefinition({\n  code: 'INCONSISTENT_TYPE_SYSTEM_DIRECTIVE_REPEATABLE',\n  level: HintLevel.DEBUG,\n  description: 'Indicates that a type system directive definition is marked repeatable in only a subset of the subgraphs that declare the directive (and will be repeatable in the supergraph).',\n});\n\nconst INCONSISTENT_TYPE_SYSTEM_DIRECTIVE_LOCATIONS = makeCodeDefinition({\n  code: 'INCONSISTENT_TYPE_SYSTEM_DIRECTIVE_LOCATIONS',\n  level: HintLevel.DEBUG,\n  description: 'Indicates that a type system directive definition is declared with inconsistent locations across subgraphs (and will use the union of all locations in the supergraph).',\n});\n\nconst INCONSISTENT_EXECUTABLE_DIRECTIVE_PRESENCE = makeCodeDefinition({\n  code: 'INCONSISTENT_EXECUTABLE_DIRECTIVE_PRESENCE',\n  level: HintLevel.WARN,\n  description: 'Indicates that an executable directive definition is declared in only some of the subgraphs.',\n});\n\nconst NO_EXECUTABLE_DIRECTIVE_LOCATIONS_INTERSECTION = makeCodeDefinition({\n  code: 'NO_EXECUTABLE_DIRECTIVE_INTERSECTION',\n  level: HintLevel.WARN,\n  description: 'Indicates that, for an executable directive definition, no location for it appears in all subgraphs.',\n});\n\nconst INCONSISTENT_EXECUTABLE_DIRECTIVE_REPEATABLE = makeCodeDefinition({\n  code: 'INCONSISTENT_EXECUTABLE_DIRECTIVE_REPEATABLE',\n  level: HintLevel.WARN,\n  description: 'Indicates that an executable directive definition is marked repeatable in only a subset of the subgraphs (and will not be repeatable in the supergraph).',\n});\n\nconst INCONSISTENT_EXECUTABLE_DIRECTIVE_LOCATIONS = makeCodeDefinition({\n  code: 'INCONSISTENT_EXECUTABLE_DIRECTIVE_LOCATIONS',\n  level: HintLevel.WARN,\n  description: 'Indicates that an executiable directive definition is declared with inconsistent locations across subgraphs (and will use the intersection of all locations in the supergraph).',\n});\n\nconst INCONSISTENT_DESCRIPTION = makeCodeDefinition({\n  code: 'INCONSISTENT_DESCRIPTION',\n  level: HintLevel.WARN,\n  description: 'Indicates that an element has a description in more than one subgraph, and the descriptions are not equal.',\n});\n\nconst INCONSISTENT_ARGUMENT_PRESENCE = makeCodeDefinition({\n  code: 'INCONSISTENT_ARGUMENT_PRESENCE',\n  level: HintLevel.WARN,\n  description: 'Indicates that an optional argument (of a field or directive definition) is not present in all subgraphs and will not be part of the supergraph.',\n});\n\nconst FROM_SUBGRAPH_DOES_NOT_EXIST = makeCodeDefinition({\n  code: 'FROM_SUBGRAPH_DOES_NOT_EXIST',\n  level: HintLevel.WARN,\n  description: 'Source subgraph specified by @override directive does not exist',\n});\n\nconst OVERRIDDEN_FIELD_CAN_BE_REMOVED = makeCodeDefinition({\n  code: 'OVERRIDDEN_FIELD_CAN_BE_REMOVED',\n  level: HintLevel.INFO,\n  description: 'Field has been overridden by another subgraph. Consider removing.',\n});\n\nconst OVERRIDE_DIRECTIVE_CAN_BE_REMOVED = makeCodeDefinition({\n  code: 'OVERRIDE_DIRECTIVE_CAN_BE_REMOVED',\n  level: HintLevel.INFO,\n  description: 'Field with @override directive no longer exists in source subgraph, the directive can be safely removed',\n});\n\nconst OVERRIDE_MIGRATION_IN_PROGRESS = makeCodeDefinition({\n  code: 'OVERRIDE_MIGRATION_IN_PROGRESS',\n  level: HintLevel.INFO,\n  description: 'Field is currently being migrated with progressive @override. Once the migration is complete, remove the field from the original subgraph.',\n});\n\nconst UNUSED_ENUM_TYPE = makeCodeDefinition({\n  code: 'UNUSED_ENUM_TYPE',\n  level: HintLevel.DEBUG,\n  description: 'Indicates that an enum type is defined in some subgraphs but is unused (no field/argument references it). All the values from subgraphs defining that enum will be included in the supergraph.',\n});\n\nconst INCONSISTENT_NON_REPEATABLE_DIRECTIVE_ARGUMENTS = makeCodeDefinition({\n  code: 'INCONSISTENT_NON_REPEATABLE_DIRECTIVE_ARGUMENTS',\n  level: HintLevel.WARN,\n  description: 'A non-repeatable directive is applied to a schema element in different subgraphs but with arguments that are different.',\n});\n\nconst MERGED_NON_REPEATABLE_DIRECTIVE_ARGUMENTS = makeCodeDefinition({\n  code: 'MERGED_NON_REPEATABLE_DIRECTIVE_ARGUMENTS',\n  level: HintLevel.INFO,\n  description: 'A non-repeatable directive has been applied to a schema element in different subgraphs with different arguments and the arguments values were merged using the directive configured strategies.',\n});\n\nconst DIRECTIVE_COMPOSITION_INFO = makeCodeDefinition({\n  code: 'DIRECTIVE_COMPOSITION_INFO',\n  level: HintLevel.INFO,\n  description: 'Indicates that an issue was detected when composing custom directives.',\n});\n\nconst DIRECTIVE_COMPOSITION_WARN = makeCodeDefinition({\n  code: 'DIRECTIVE_COMPOSITION_WARN',\n  level: HintLevel.WARN,\n  description: 'Indicates that an issue was detected when composing custom directives.',\n});\n\nconst INCONSISTENT_RUNTIME_TYPES_FOR_SHAREABLE_RETURN = makeCodeDefinition({\n  code: 'INCONSISTENT_RUNTIME_TYPES_FOR_SHAREABLE_RETURN',\n  level: HintLevel.WARN,\n  description: 'Indicates that a @shareable field returns different sets of runtime types in the different subgraphs in which it is defined.',\n});\n\nconst IMPLICITLY_UPGRADED_FEDERATION_VERSION = makeCodeDefinition({\n  code: 'IMPLICITLY_UPGRADED_FEDERATION_VERSION',\n  level: HintLevel.INFO,\n  description: 'Indicates that a directive requires a higher federation version than is explicitly linked.'\n    + ' In this case, the supergraph uses the federation version required by the directive.'\n});\n\nconst CONTEXTUAL_ARGUMENT_NOT_CONTEXTUAL_IN_ALL_SUBGRAPHS = makeCodeDefinition({\n  code: 'CONTEXTUAL_ARGUMENT_NOT_CONTEXTUAL_IN_ALL_SUBGRAPHS',\n  level: HintLevel.INFO,\n  description: 'Indicates that the argument will not be present in the supergraph because it is contextual in at least one subgraph.'\n});\n\nexport const HINTS = {\n  INCONSISTENT_BUT_COMPATIBLE_FIELD_TYPE,\n  INCONSISTENT_BUT_COMPATIBLE_ARGUMENT_TYPE,\n  INCONSISTENT_DEFAULT_VALUE_PRESENCE,\n  INCONSISTENT_ENTITY,\n  INCONSISTENT_OBJECT_VALUE_TYPE_FIELD,\n  INCONSISTENT_INTERFACE_VALUE_TYPE_FIELD,\n  INCONSISTENT_INPUT_OBJECT_FIELD,\n  INCONSISTENT_UNION_MEMBER,\n  INCONSISTENT_ENUM_VALUE_FOR_INPUT_ENUM,\n  INCONSISTENT_ENUM_VALUE_FOR_OUTPUT_ENUM,\n  INCONSISTENT_TYPE_SYSTEM_DIRECTIVE_REPEATABLE,\n  INCONSISTENT_TYPE_SYSTEM_DIRECTIVE_LOCATIONS,\n  INCONSISTENT_EXECUTABLE_DIRECTIVE_PRESENCE,\n  NO_EXECUTABLE_DIRECTIVE_LOCATIONS_INTERSECTION,\n  INCONSISTENT_EXECUTABLE_DIRECTIVE_REPEATABLE,\n  INCONSISTENT_EXECUTABLE_DIRECTIVE_LOCATIONS,\n  INCONSISTENT_DESCRIPTION,\n  INCONSISTENT_ARGUMENT_PRESENCE,\n  FROM_SUBGRAPH_DOES_NOT_EXIST,\n  OVERRIDDEN_FIELD_CAN_BE_REMOVED,\n  OVERRIDE_DIRECTIVE_CAN_BE_REMOVED,\n  OVERRIDE_MIGRATION_IN_PROGRESS,\n  UNUSED_ENUM_TYPE,\n  INCONSISTENT_NON_REPEATABLE_DIRECTIVE_ARGUMENTS,\n  MERGED_NON_REPEATABLE_DIRECTIVE_ARGUMENTS,\n  DIRECTIVE_COMPOSITION_INFO,\n  DIRECTIVE_COMPOSITION_WARN,\n  INCONSISTENT_RUNTIME_TYPES_FOR_SHAREABLE_RETURN,\n  IMPLICITLY_UPGRADED_FEDERATION_VERSION,\n  CONTEXTUAL_ARGUMENT_NOT_CONTEXTUAL_IN_ALL_SUBGRAPHS,\n}\n\nexport class CompositionHint {\n  public readonly nodes?: readonly SubgraphASTNode[];\n  public readonly coordinate?: string;\n\n  constructor(\n    readonly definition: HintCodeDefinition,\n    readonly message: string,\n    readonly element: NamedSchemaElement<any, any, any> | undefined,\n    nodes?: readonly SubgraphASTNode[] | SubgraphASTNode\n  ) {\n    this.nodes = nodes\n      ? (Array.isArray(nodes) ? (nodes.length === 0 ? undefined : nodes) : [nodes])\n      : undefined;\n    this.coordinate = element?.coordinate;\n  }\n\n  toString(): string {\n    return `[${this.definition.code}]: ${this.message}`\n  }\n}\n\n/**\n * Prints a composition hint to a string, alongside useful location information\n * about relevant positions in the subgraph sources.\n */\nexport function printHint(hint: CompositionHint): string {\n  let output = hint.toString();\n\n  if (hint.nodes) {\n    for (const node of hint.nodes) {\n      if (node.loc) {\n        output += '\\n\\n' + printLocation(node.loc);\n      }\n    }\n  }\n\n  return output;\n}\n", "import { addSubgraphToASTNode, assert, ErrorCodeDefinition, joinStrings, MultiMap, NamedSchemaElement, printSubgraphNames, SubgraphASTNode } from '@apollo/federation-internals';\nimport { ASTNode, GraphQLError } from 'graphql';\nimport { CompositionHint, HintCodeDefinition } from '../hints';\nimport { Sources } from './merge';\n\nexport class MismatchReporter {\n  pushError: (error: GraphQLError) => void;\n  pushHint: (hint: CompositionHint) => void;\n\n  constructor(readonly names: readonly string[], pushError: (error: GraphQLError) => void, pushHint: (hint: CompositionHint) => void) {\n    this.pushError = pushError;\n    this.pushHint = pushHint;\n  }\n\n  reportMismatchError<TMismatched extends { sourceAST?: ASTNode }>(\n    code: ErrorCodeDefinition,\n    message: string,\n    mismatchedElement:TMismatched,\n    subgraphElements: Sources<TMismatched>,\n    mismatchAccessor: (elt: TMismatched, isSupergraph: boolean) => string | undefined\n  ) {\n    this.reportMismatch(\n      mismatchedElement,\n      subgraphElements,\n      mismatchAccessor,\n      (elt, names) => `${elt} in ${names}`,\n      (elt, names) => `${elt} in ${names}`,\n      (distribution, nodes) => {\n        this.pushError(code.err(\n          message + joinStrings(distribution, ' and ', ' but '),\n          { nodes }\n        ));\n      },\n      elt => !elt\n    );\n  }\n\n  reportMismatchErrorWithoutSupergraph<TMismatched extends { sourceAST?: ASTNode }>(\n    code: ErrorCodeDefinition,\n    message: string,\n    subgraphElements: Sources<TMismatched>,\n    mismatchAccessor: (elt: TMismatched, isSupergraph: boolean) => string | undefined\n  ) {\n    this.reportMismatch(\n      undefined,\n      subgraphElements,\n      mismatchAccessor,\n      () => '',\n      (elt, names) => `${elt} in ${names}`,\n      (distribution, nodes) => {\n        this.pushError(code.err(\n          message + joinStrings(distribution, ' and ', ' but '),\n          { nodes }\n        ));\n      },\n      elt => !elt\n    );\n  }\n\n  reportMismatchErrorWithSpecifics<TMismatched extends { sourceAST?: ASTNode }>({\n    code,\n    message,\n    mismatchedElement,\n    subgraphElements,\n    mismatchAccessor,\n    supergraphElementPrinter,\n    otherElementsPrinter,\n    ignorePredicate,\n    includeMissingSources = false,\n    extraNodes,\n  }: {\n    code: ErrorCodeDefinition,\n    message: string,\n    mismatchedElement: TMismatched,\n    subgraphElements: Sources<TMismatched>,\n    mismatchAccessor: (elt: TMismatched | undefined, isSupergraph: boolean) => string | undefined,\n    supergraphElementPrinter: (elt: string, subgraphs: string | undefined) => string,\n    otherElementsPrinter: (elt: string, subgraphs: string) => string,\n    ignorePredicate?: (elt: TMismatched | undefined) => boolean,\n    includeMissingSources?: boolean,\n    extraNodes?: SubgraphASTNode[],\n  }) {\n    this.reportMismatch(\n      mismatchedElement,\n      subgraphElements,\n      mismatchAccessor,\n      supergraphElementPrinter,\n      otherElementsPrinter,\n      (distribution, nodes) => {\n        this.pushError(code.err(\n          message + distribution[0] + joinStrings(distribution.slice(1), ' and '),\n          { nodes: nodes.concat(extraNodes ?? []) }\n        ));\n      },\n      ignorePredicate,\n      includeMissingSources\n    );\n  }\n\n  reportMismatchHint<TMismatched extends { sourceAST?: ASTNode }>({\n    code,\n    message,\n    supergraphElement,\n    subgraphElements,\n    targetedElement,\n    elementToString,\n    supergraphElementPrinter,\n    otherElementsPrinter,\n    ignorePredicate,\n    includeMissingSources = false,\n    noEndOfMessageDot = false,\n  }: {\n    code: HintCodeDefinition,\n    message: string,\n    supergraphElement: TMismatched,\n    subgraphElements: Sources<TMismatched>,\n    targetedElement?: NamedSchemaElement<any, any, any>\n    elementToString: (elt: TMismatched, isSupergraph: boolean) => string | undefined,\n    supergraphElementPrinter: (elt: string, subgraphs: string | undefined) => string,\n    otherElementsPrinter: (elt: string, subgraphs: string) => string,\n    ignorePredicate?: (elt: TMismatched | undefined) => boolean,\n    includeMissingSources?: boolean,\n    noEndOfMessageDot?: boolean\n  }) {\n    this.reportMismatch(\n      supergraphElement,\n      subgraphElements,\n      elementToString,\n      supergraphElementPrinter,\n      otherElementsPrinter,\n      (distribution, astNodes) => {\n        this.pushHint(new CompositionHint(\n          code,\n          message + distribution[0] + joinStrings(distribution.slice(1), ' and ') + (noEndOfMessageDot ? '' : '.'),\n          targetedElement ?? ((supergraphElement instanceof NamedSchemaElement) ? supergraphElement as NamedSchemaElement<any, any, any> : undefined),\n          astNodes\n        ));\n      },\n      ignorePredicate,\n      includeMissingSources\n    );\n  }\n\n  // Not meant to be used directly: use `reportMismatchError` or `reportMismatchHint` instead.\n  private reportMismatch<TMismatched extends { sourceAST?: ASTNode }>(\n    supergraphElement:TMismatched | undefined,\n    subgraphElements: Sources<TMismatched>,\n    mismatchAccessor: (element: TMismatched, isSupergraph: boolean) => string | undefined,\n    supergraphElementPrinter: (elt: string, subgraphs: string | undefined) => string,\n    otherElementsPrinter: (elt: string, subgraphs: string) => string,\n    reporter: (distribution: string[], astNode: SubgraphASTNode[]) => void,\n    ignorePredicate?: (elt: TMismatched | undefined) => boolean,\n    includeMissingSources: boolean = false\n  ) {\n    const distributionMap = new MultiMap<string, string>();\n    const astNodes: SubgraphASTNode[] = [];\n    const processSubgraphElt = (name: string, subgraphElt: TMismatched) => {\n      if (ignorePredicate && ignorePredicate(subgraphElt)) {\n        return;\n      }\n      const elt = mismatchAccessor(subgraphElt, false);\n      distributionMap.add(elt ?? '', name);\n      if (subgraphElt.sourceAST) {\n        astNodes.push(addSubgraphToASTNode(subgraphElt.sourceAST, name));\n      }\n    }\n    if (includeMissingSources) {\n      for (const [i, name] of this.names.entries()) {\n        const subgraphElt = subgraphElements.get(i);\n        if (!subgraphElt) {\n          distributionMap.add('', name);\n          continue;\n        }\n        processSubgraphElt(name, subgraphElt);\n      }\n    } else {\n      for (const [i, subgraphElt] of subgraphElements.entries()) {\n        if (!subgraphElt) {\n          continue;\n        }\n        processSubgraphElt(this.names[i], subgraphElt);\n      }\n    }\n    const supergraphMismatch = (supergraphElement && mismatchAccessor(supergraphElement, true)) ?? '';\n    assert(distributionMap.size > 1, () => `Should not have been called for ${supergraphElement}`);\n    const distribution = [];\n    // We always add the \"supergraph\" first (proper formatting of hints rely on this in particular).\n    const subgraphsLikeSupergraph = distributionMap.get(supergraphMismatch);\n    distribution.push(supergraphElementPrinter(supergraphMismatch, subgraphsLikeSupergraph ? printSubgraphNames(subgraphsLikeSupergraph) : undefined));\n    for (const [v, names] of distributionMap.entries()) {\n      if (v === supergraphMismatch) {\n        continue;\n      }\n      distribution.push(otherElementsPrinter(v, printSubgraphNames(names)));\n    }\n    reporter(distribution, astNodes);\n  }\n}\n", "import {\n  assert,\n  CoreFeature,\n  DirectiveDefinition,\n  Subgraphs,\n  ERRORS,\n  SubgraphASTNode,\n  didYouMean,\n  suggestionList,\n  MultiMap,\n  Subgraph,\n  Directive,\n  isDefined,\n} from '@apollo/federation-internals';\nimport { GraphQLError } from 'graphql';\nimport { CompositionHint, HINTS } from './hints';\nimport { MismatchReporter } from './merging/reporter';\nimport { sourcesFromArray } from './merging';\n\n/**\n * Return true if the directive from the same core feature has a different name in the subgraph\n * @param subgraph - the subgraph to compare against\n * @param directiveName - the name of directive before renaming\n * @param expectedName - the name of the directive as we expect it to be used\n * @param identity - the identity of the core feature\n *\n * @returns true if the subgraph uses the directive, and it is named differently than expected\n */\nconst directiveHasDifferentNameInSubgraph = ({\n  subgraph,\n  origName,\n  expectedName,\n  identity,\n}: {\n  subgraph: Subgraph,\n  origName: string,\n  expectedName: string,\n  identity: string,\n}): boolean => {\n  const imp = subgraph.schema.coreFeatures?.getByIdentity(identity)?.imports?.find(imp => imp.name === `@${origName}`);\n  if (!imp) {\n    return false;\n  }\n  const importedName = imp.as ?? imp.name;\n  return importedName !== `@${expectedName}`;\n};\n\nconst allEqual = <T>(arr: T[]) => arr.every((val: T) => val === arr[0]);\n\ntype FeatureAndSubgraph = {\n  feature: CoreFeature,\n  subgraphName: string,\n  isComposed: boolean,\n};\n\n/**\n * We don't want to allow for composing any of our own features\n */\nconst DISALLOWED_IDENTITIES = [\n  'https://specs.apollo.dev/core',\n  'https://specs.apollo.dev/join',\n  'https://specs.apollo.dev/link',\n  'https://specs.apollo.dev/tag',\n  'https://specs.apollo.dev/inaccessible',\n  'https://specs.apollo.dev/federation',\n  'https://specs.apollo.dev/authenticated',\n  'https://specs.apollo.dev/requiresScopes',\n  'https://specs.apollo.dev/source',\n  'https://specs.apollo.dev/context',\n  'https://specs.apollo.dev/cost',\n];\n\nexport class ComposeDirectiveManager {\n  // map of subgraphs to directives being composed\n  mergeDirectiveMap: Map<string, Set<string>>;\n\n  // map of identities to the latest CoreFeature+Subgraph it can be found on\n  latestFeatureMap: Map<string, [CoreFeature,string]>;\n\n  // map of directive names to identity,origName\n  directiveIdentityMap: Map<string, [string,string]>;\n\n  mismatchReporter: MismatchReporter;\n\n  constructor(\n    readonly subgraphs: Subgraphs,\n    readonly pushError: (error: GraphQLError) => void,\n    readonly pushHint: (hint: CompositionHint) => void,\n  ) {\n    this.mergeDirectiveMap = new Map();\n    this.latestFeatureMap = new Map();\n    this.directiveIdentityMap = new Map();\n    this.mismatchReporter = new MismatchReporter(subgraphs.names(), pushError, pushHint);\n  }\n\n  /**\n   * Get from a coreIdentity to a SubgraphASTNode[]\n   */\n   private coreFeatureASTs(coreIdentity: string): SubgraphASTNode[] {\n    return this.subgraphs.values()\n      .flatMap(sg => {\n        const ast = sg.schema.coreFeatures?.getByIdentity(coreIdentity)?.directive.sourceAST;\n        return ast === undefined ? [] : [{ ...ast, subgraph: sg.name }];\n      });\n  }\n\n  /**\n   * If features are compatible (i.e. they have the same major version), return the latest\n   * Otherwise return undefined\n   */\n  private getLatestIfCompatible(coreIdentity: string, subgraphsUsed: string[]): FeatureAndSubgraph | undefined {\n    let raisedHint = false;\n    const pairs = this.subgraphs.values()\n      .map(sg => {\n        const feature = sg.schema.coreFeatures?.getByIdentity(coreIdentity);\n        if (!feature) {\n          return undefined;\n        }\n        return {\n          feature,\n          subgraphName: sg.name,\n          isComposed: subgraphsUsed.includes(sg.name),\n        };\n      })\n      .filter(isDefined);\n\n    // get the majorVersion iff they are consistent otherwise return undefined\n    const latest = pairs.reduce((acc: FeatureAndSubgraph | null | undefined, pair: FeatureAndSubgraph) => {\n      // if acc is null, that means that we are on our first element\n      // if acc is undefined, that means we have detected a version conflict\n      if (acc === null) {\n        return pair;\n      }\n      if (acc === undefined) {\n        return acc;\n      }\n      if (acc.feature.url.version.major !== pair.feature.url.version.major) {\n        // if one of the versions is not composed, it's a hint, otherwise an error\n        if (acc.isComposed && pair.isComposed) {\n          this.pushError(ERRORS.DIRECTIVE_COMPOSITION_ERROR.err(\n            `Core feature \"${coreIdentity}\" requested to be merged has major version mismatch across subgraphs`,\n            {\n              nodes: this.coreFeatureASTs(coreIdentity),\n            },\n          ));\n          return undefined;\n        }\n        if (!raisedHint) {\n          this.pushHint(new CompositionHint(\n            HINTS.DIRECTIVE_COMPOSITION_INFO,\n            `Non-composed core feature \"${coreIdentity}\" has major version mismatch across subgraphs`,\n            undefined,\n            this.coreFeatureASTs(coreIdentity),\n          ));\n          raisedHint = true;\n        }\n        return acc.isComposed ? acc : pair;\n      }\n\n      // we don't want to return anything as latest unless it is composed\n      if (acc.isComposed && !pair.isComposed) {\n        return acc;\n      } else if (!acc.isComposed && pair.isComposed) {\n        return pair;\n      }\n      return (acc.feature.url.version.minor > pair.feature.url.version.minor) ? acc : pair;\n    }, null);\n\n    if (!latest?.isComposed) {\n      return undefined;\n    }\n    return latest;\n  }\n\n  private forFederationDirective(sg: Subgraph, composeInstance: Directive, directive: DirectiveDefinition) {\n    const directivesComposedByDefault = [\n      sg.metadata().tagDirective(),\n      sg.metadata().inaccessibleDirective(),\n      sg.metadata().authenticatedDirective(),\n      sg.metadata().requiresScopesDirective(),\n      sg.metadata().policyDirective(),\n      sg.metadata().contextDirective(),\n    ].map(d => d.name);\n    if (directivesComposedByDefault.includes(directive.name)) {\n      this.pushHint(new CompositionHint(\n        HINTS.DIRECTIVE_COMPOSITION_INFO,\n        `Directive \"@${directive.name}\" should not be explicitly manually composed since it is a federation directive composed by default`,\n        directive,\n        composeInstance.sourceAST ? {\n          ...composeInstance.sourceAST,\n          subgraph: sg.name,\n        } : undefined,\n      ));\n    } else {\n      this.pushError(ERRORS.DIRECTIVE_COMPOSITION_ERROR.err(\n        `Composing federation directive \"${composeInstance.arguments().name}\" in subgraph \"${sg.name}\" is not supported`,\n        { nodes: composeInstance.sourceAST },\n      ));\n    }\n  }\n\n  /**\n   * In order to ensure that we properly hint or error when there is a major version incompatibility\n   * it's important that we collect all used core features, even if the directives within them will not be composed\n   * Returns a set of identities\n   */\n  private allCoreFeaturesUsedBySubgraphs(): Set<string> {\n    const identities = new Set<string>();\n    this.subgraphs.values().forEach(sg => {\n      if (sg.schema.coreFeatures) {\n        for (const feature of sg.schema.coreFeatures.allFeatures()) {\n          identities.add(feature.url.identity);\n        }\n      }\n    });\n    return identities;\n  }\n\n  validate(): { errors: GraphQLError[], hints: CompositionHint[] } {\n    const errors: GraphQLError[] = [];\n    const hints: CompositionHint[] = [];\n    const wontMergeFeatures = new Set<string>();\n    const wontMergeDirectiveNames = new Set<string>();\n\n    type MergeDirectiveItem = {\n      sgName: string,\n      feature: CoreFeature,\n      directiveName: string,\n      directiveNameAs: string,\n      composeDirective: Directive, // the directive instance causing the directive to be composed\n    };\n\n    const itemsBySubgraph = new MultiMap<string, MergeDirectiveItem>();\n    const itemsByDirectiveName = new MultiMap<string, MergeDirectiveItem>();\n    const itemsByOrigDirectiveName = new MultiMap<string, MergeDirectiveItem>();\n\n    // gather default-composed directive names from subgraphs\n    const tagNamesInSubgraphs = this.subgraphs.values().map(sg => sg.metadata().federationDirectiveNameInSchema('tag'));\n    const inaccessibleNamesInSubgraphs = this.subgraphs.values().map(sg => sg.metadata().federationDirectiveNameInSchema('inaccessible'));\n\n\n    // iterate over subgraphs to build up the MultiMap's\n    for (const sg of this.subgraphs) {\n      const composeDirectives = sg.metadata()\n        .composeDirective()\n        .applications();\n\n      for (const composeInstance of composeDirectives) {\n        if (composeInstance.arguments().name == null || composeInstance.arguments().name === '') {\n          this.pushError(ERRORS.DIRECTIVE_COMPOSITION_ERROR.err(\n              `Argument to @composeDirective in subgraph \"${sg.name}\" cannot be NULL or an empty String`,\n              { nodes: composeInstance.sourceAST },\n          ));\n          continue;\n        }\n\n        if (composeInstance.arguments().name[0] !== '@') {\n          this.pushError(ERRORS.DIRECTIVE_COMPOSITION_ERROR.err(\n            `Argument to @composeDirective \"${composeInstance.arguments().name}\" in subgraph \"${sg.name}\" must have a leading \"@\"`,\n            { nodes: composeInstance.sourceAST },\n          ));\n          continue;\n        }\n\n        const name = composeInstance.arguments().name.slice(1);\n        const directive = sg.schema.directive(name);\n        if (directive) {\n          const featureDetails = sg.schema.coreFeatures?.sourceFeature(directive);\n          if (featureDetails) {\n            const identity = featureDetails.feature.url.identity;\n\n            // make sure that core feature is not blacklisted\n            if (DISALLOWED_IDENTITIES.includes(identity)) {\n              this.forFederationDirective(sg, composeInstance, directive);\n            } else if (tagNamesInSubgraphs.includes(name)) {\n              const subgraphs: string[] = [];\n              this.subgraphs.names().forEach((sg, idx) => {\n                if (tagNamesInSubgraphs[idx] === name) {\n                  subgraphs.push(sg);\n                }\n              });\n              this.pushError(ERRORS.DIRECTIVE_COMPOSITION_ERROR.err(\n                `Directive \"@${name}\" in subgraph \"${sg.name}\" cannot be composed because it conflicts with automatically composed federation directive \"@tag\". Conflict exists in subgraph(s): (${subgraphs.join(',')})`,\n                { nodes: composeInstance.sourceAST },\n              ));\n            } else if (inaccessibleNamesInSubgraphs.includes(name)) {\n              const subgraphs: string[] = [];\n              this.subgraphs.names().forEach((sg, idx) => {\n                if (inaccessibleNamesInSubgraphs[idx] === name) {\n                  subgraphs.push(sg);\n                }\n              });\n              this.pushError(ERRORS.DIRECTIVE_COMPOSITION_ERROR.err(\n                `Directive \"@${name}\" in subgraph \"${sg.name}\" cannot be composed because it conflicts with automatically composed federation directive \"@inaccessible\". Conflict exists in subgraph(s): (${subgraphs.join(',')})`,\n                { nodes: composeInstance.sourceAST },\n              ));\n            } else {\n              const item = {\n                composeDirective: composeInstance,\n                sgName: sg.name,\n                feature: featureDetails.feature,\n                directiveName: featureDetails.nameInFeature,\n                directiveNameAs: name,\n              };\n\n              itemsBySubgraph.add(sg.name, item);\n              itemsByDirectiveName.add(name, item);\n              itemsByOrigDirectiveName.add(item.directiveName, item);\n            }\n          } else {\n            this.pushError(ERRORS.DIRECTIVE_COMPOSITION_ERROR.err(\n              `Directive \"@${name}\" in subgraph \"${sg.name}\" cannot be composed because it is not a member of a core feature`,\n              { nodes: composeInstance.sourceAST },\n            ));\n          }\n        } else {\n          const words = suggestionList(`@${name}`, sg.schema.directives().map(d => `@${d.name}`));\n          this.pushError(ERRORS.DIRECTIVE_COMPOSITION_ERROR.err(\n            `Could not find matching directive definition for argument to @composeDirective \"@${name}\" in subgraph \"${sg.name}\".${didYouMean(words)}`,\n            { nodes: composeInstance.sourceAST },\n          ));\n        }\n      }\n    }\n\n    // for each feature, determine if the versions are compatible\n    for (const identity of this.allCoreFeaturesUsedBySubgraphs()) {\n      // for the feature, find all subgraphs for which the feature has a directive composed\n      const subgraphsUsed = this.subgraphs.values()\n        .map(sg => {\n          const items = itemsBySubgraph.get(sg.name);\n          if (items && items.find(item => item.feature.url.identity === identity)) {\n            return sg.name;\n          }\n          return undefined;\n        })\n        .filter(isDefined);\n\n      const latest = this.getLatestIfCompatible(identity, subgraphsUsed);\n      if (latest) {\n        this.latestFeatureMap.set(identity, [latest.feature, latest.subgraphName]);\n      } else {\n        wontMergeFeatures.add(identity);\n      }\n    }\n\n    // ensure that the specified directive is the same in all subgraphs\n    for (const [name, items] of itemsByDirectiveName.entries()) {\n      if (!allEqual(items.map(item => item.directiveName))) {\n        wontMergeDirectiveNames.add(name);\n        this.pushError(ERRORS.DIRECTIVE_COMPOSITION_ERROR.err(\n          `Composed directive \"@${name}\" does not refer to the same directive in every subgraph`,\n          {\n            nodes: items.map(item => item.composeDirective.sourceAST).filter(isDefined),\n          }\n        ));\n      }\n      if (!allEqual(items.map(item => item.feature.url.identity))) {\n        wontMergeDirectiveNames.add(name);\n        this.pushError(ERRORS.DIRECTIVE_COMPOSITION_ERROR.err(\n          `Composed directive \"@${name}\" is not linked by the same core feature in every subgraph`,\n          {\n            nodes: items.map(item => item.composeDirective.sourceAST).filter(isDefined),\n          }\n        ));\n      }\n    }\n\n    // ensure that directive is exported with the same name in all subgraphs\n    // also check that subgraphs that don't export the directive don't have inconsistent naming.\n    for (const [name, items] of itemsByOrigDirectiveName.entries()) {\n      if (!allEqual(items.map(item => item.directiveNameAs))) {\n        for (const item of items) {\n          wontMergeDirectiveNames.add(item.directiveNameAs);\n        }\n\n        this.mismatchReporter.reportMismatchErrorWithoutSupergraph(\n          ERRORS.DIRECTIVE_COMPOSITION_ERROR,\n          'Composed directive is not named consistently in all subgraphs',\n          sourcesFromArray(this.subgraphs.values()\n            .map(sg => {\n              const item = items.find(item => sg.name === item.sgName);\n              return item ? {\n                item,\n                sg,\n              } : undefined;\n            })\n            .map((val) => {\n              if (!val) {\n                return undefined;\n              }\n              const sourceAST = val.sg.schema.coreFeatures?.getByIdentity('https://specs.apollo.dev/foo')?.directive.sourceAST;\n              return sourceAST ? {\n                sourceAST,\n                item: val.item,\n              } : undefined;\n            })),\n          (elt) => elt ? `\"@${elt.item.directiveNameAs}\"` : undefined\n        );\n      }\n      const nonExportedSubgraphs = this.subgraphs.values()\n        .filter(sg => !items.map(item => item.sgName).includes(sg.name));\n      const subgraphsWithDifferentNaming = nonExportedSubgraphs.filter(subgraph => directiveHasDifferentNameInSubgraph({\n        subgraph,\n        origName: items[0].directiveName,\n        expectedName: items[0].directiveNameAs,\n        identity: items[0].feature.url.identity,\n      }));\n      if (subgraphsWithDifferentNaming.length > 0) {\n        this.pushHint(new CompositionHint(\n          HINTS.DIRECTIVE_COMPOSITION_WARN,\n          `Composed directive \"@${name}\" is named differently in a subgraph that doesn't export it. Consistent naming will be required to export it.`,\n          undefined,\n          subgraphsWithDifferentNaming\n            .map((subgraph : Subgraph): SubgraphASTNode | undefined => {\n              const ast = subgraph.schema.coreFeatures?.getByIdentity(items[0].feature.url.identity)?.directive.sourceAST;\n              return ast ? {\n                ...ast,\n                subgraph: subgraph.name,\n              } : undefined;\n            })\n            .filter(isDefined),\n        ));\n      }\n    }\n\n    // now for anything that wasn't in the blacklist, add it to the map\n    for (const [subgraph, items] of itemsBySubgraph.entries()) {\n      const directivesForSubgraph = new Set<string>();\n      for (const item of items) {\n        if (!wontMergeFeatures.has(item.feature.url.identity) && !wontMergeDirectiveNames.has(item.directiveNameAs)) {\n          directivesForSubgraph.add(item.directiveNameAs);\n        }\n        this.directiveIdentityMap.set(item.directiveNameAs, [item.feature.url.identity, item.directiveName]);\n      }\n      this.mergeDirectiveMap.set(subgraph, directivesForSubgraph);\n    }\n\n    return {\n      errors,\n      hints,\n    };\n  }\n\n  shouldComposeDirective({ subgraphName, directiveName }: {\n    subgraphName: string,\n    directiveName: string,\n  }): boolean {\n    const sg = this.mergeDirectiveMap.get(subgraphName);\n    return !!sg && sg.has(directiveName);\n  }\n\n  directiveExistsInSupergraph(directiveName: string): boolean {\n    return !!this.directiveIdentityMap.get(directiveName);\n  }\n\n  getLatestDirectiveDefinition(directiveName: string): DirectiveDefinition | undefined {\n    const val = this.directiveIdentityMap.get(directiveName);\n    if (val) {\n      const [identity, origName] = val;\n      const entry = this.latestFeatureMap.get(identity);\n      assert(entry, 'core feature identity must exist in map');\n      const [feature, subgraphName] = entry;\n      const subgraph = this.subgraphs.get(subgraphName);\n      assert(subgraph, `subgraph \"${subgraphName}\" does not exist`);\n\n      // we need to convert from the name that is used in the schemas that export the directive\n      // to the name used in the schema that is the latest version, which may or may not export\n      // See test \"exported directive not imported everywhere. imported with different name\"\n      const nameInSchema = subgraph.schema.coreFeatures?.getByIdentity(identity)?.directiveNameInSchema(origName);\n      if (nameInSchema) {\n        const directive = subgraph.schema.directive(nameInSchema);\n        if (!directive) {\n          this.pushError(ERRORS.DIRECTIVE_COMPOSITION_ERROR.err(\n            `Core feature \"${identity}\" in subgraph \"${subgraphName}\" does not have a directive definition for \"@${directiveName}\"`,\n            {\n              nodes: feature.directive.sourceAST,\n            },\n          ));\n        }\n        return directive;\n      }\n    }\n    return undefined;\n  }\n\n  private directivesForFeature(identity: string): [string,string][] {\n    // TODO: This is inefficient\n    const directives: { [key: string]: string} = {};\n    for (const [name, val] of this.directiveIdentityMap) {\n      const [id, origName] = val;\n      if (id === identity) {\n        if (!(name in directives)) {\n          directives[name] = origName;\n        }\n      }\n    }\n    return Object.entries(directives);\n  }\n  /**\n   * Returns all core features, along with the directives referenced from that CoreFeature\n   */\n  allComposedCoreFeatures(): [CoreFeature, [string,string][]][] {\n    return Array.from(this.latestFeatureMap.values())\n      .map(value => value[0])\n      .filter(feature => !DISALLOWED_IDENTITIES.includes(feature.url.identity))\n      .map(feature => ([\n        feature,\n        this.directivesForFeature(feature.url.identity),\n      ]));\n  }\n}\n", "import { assert, coreFeatureDefinitionIfKnown, DirectiveCompositionSpecification, DirectiveDefinition, FeatureUrl, isDefined, mapValues, Subgraphs } from \"@apollo/federation-internals\";\n\nexport type CoreDirectiveInSubgraphs = {\n  url: FeatureUrl,\n  name: string,\n  definitionsPerSubgraph: Map<string, DirectiveDefinition>,\n  compositionSpec: DirectiveCompositionSpecification,\n}\n\nexport function collectCoreDirectivesToCompose(\n  subgraphs: Subgraphs,\n): CoreDirectiveInSubgraphs[] {\n  // Groups directives by their feature and major version (we use negative numbers for pre-1.0 version\n  // numbers on the minor, since all minors are incompatible).\n  const directivesPerFeatureAndVersion = new Map<string, Map<number, Omit<CoreDirectiveInSubgraphs, 'compositionSpec'>>>();\n\n  for (const subgraph of subgraphs) {\n    const features = subgraph.schema.coreFeatures;\n    assert(features, 'Subgraphs should be core schemas');\n    for (const directive of subgraph.schema.directives()) {\n      const source = features.sourceFeature(directive);\n      // We ignore directives that are not \"core\" ones, or the ones that are defined but unused (note that this\n      // happen to ignore execution directives as a by-product)\n      if (!source || directive.applications().size === 0) {\n        continue;\n      }\n\n      const url = source.feature.url;\n      const fqn = `${source.nameInFeature}-${url.identity}`\n      let forFeature = directivesPerFeatureAndVersion.get(fqn);\n      if (!forFeature) {\n        forFeature = new Map();\n        directivesPerFeatureAndVersion.set(fqn, forFeature);\n      }\n\n      const major = url.version.major > 0 ? url.version.major : -url.version.minor;\n      let forVersion = forFeature.get(major);\n      if (forVersion) {\n        // Update the url if we've found a more recent minor for that major\n        if (url.version.compareTo(forVersion.url.version) > 0) {\n          forVersion.url = url;\n        }\n      } else {\n        forVersion = {\n          url,\n          name: source.nameInFeature,\n          definitionsPerSubgraph: new Map(),\n        }\n        forFeature.set(major, forVersion);\n      }\n      forVersion.definitionsPerSubgraph.set(subgraph.name, directive);\n    }\n  }\n\n  return mapValues(directivesPerFeatureAndVersion)\n    .flatMap((perVersion) => mapValues(perVersion))\n    .map((d) => {\n      const featureDefinition = coreFeatureDefinitionIfKnown(d.url);\n      const compositionSpec = featureDefinition?.compositionSpecification(d.name);\n      if (!compositionSpec) {\n        return undefined;\n      }\n      return {\n        ...d,\n        compositionSpec,\n      };\n    })\n    .filter(isDefined);\n}\n", "import {\n  ArgumentDefinition,\n  assert,\n  arrayEquals,\n  DirectiveDefinition,\n  EnumType,\n  FieldDefinition,\n  InputObjectType,\n  InterfaceType,\n  NamedType,\n  newNamedType,\n  ObjectType,\n  Schema,\n  SchemaDefinition,\n  SchemaElement,\n  UnionType,\n  sameType,\n  isStrictSubtype,\n  ListType,\n  NonNullType,\n  Type,\n  NullableType,\n  NamedSchemaElementWithType,\n  valueEquals,\n  valueToString,\n  InputFieldDefinition,\n  allSchemaRootKinds,\n  Directive,\n  isFederationField,\n  SchemaRootKind,\n  CompositeType,\n  Subgraphs,\n  JOIN_VERSIONS,\n  NamedSchemaElement,\n  errorCauses,\n  isObjectType,\n  SubgraphASTNode,\n  addSubgraphToASTNode,\n  firstOf,\n  Extension,\n  isInterfaceType,\n  sourceASTs,\n  ERRORS,\n  FederationMetadata,\n  printSubgraphNames,\n  federationIdentity,\n  linkIdentity,\n  coreIdentity,\n  FEDERATION_OPERATION_TYPES,\n  LINK_VERSIONS,\n  federationMetadata,\n  errorCode,\n  withModifiedErrorNodes,\n  didYouMean,\n  suggestionList,\n  EnumValue,\n  baseType,\n  isEnumType,\n  isNonNullType,\n  isExecutableDirectiveLocation,\n  parseFieldSetArgument,\n  isCompositeType,\n  isDefined,\n  addSubgraphToError,\n  printHumanReadableList,\n  ArgumentMerger,\n  JoinSpecDefinition,\n  CoreSpecDefinition,\n  FeatureVersion,\n  FEDERATION_VERSIONS,\n  connectIdentity,\n  FeatureUrl,\n  isFederationDirectiveDefinedInSchema,\n  parseContext,\n  CoreFeature,\n  Subgraph,\n  StaticArgumentsTransform,\n  isNullableType,\n  isFieldDefinition,\n  Post20FederationDirectiveDefinition,\n  coreFeatureDefinitionIfKnown,\n  FeatureDefinition,\n  DirectiveCompositionSpecification,\n  CoreImport,\n  inaccessibleIdentity,\n  FeatureDefinitions,\n  CONNECT_VERSIONS,\n  AuthenticatedSpecDefinition,\n  RequiresScopesSpecDefinition,\n  PolicySpecDefinition,\n  ScalarType,\n  AUTHENTICATED_VERSIONS,\n  REQUIRES_SCOPES_VERSIONS,\n  POLICY_VERSIONS,\n  parseSelectionSet,\n  FieldSelection,\n  SelectionSet,\n  JoinFieldDirectiveArguments,\n  ContextSpecDefinition,\n  CONTEXT_VERSIONS,\n  FederationDirectiveName,\n  dnfConjunction,\n  convertEmptyToTrue,\n} from \"@apollo/federation-internals\";\nimport {ASTNode, DirectiveLocation, GraphQLError} from \"graphql\";\nimport {CompositionHint, HintCodeDefinition, HINTS,} from \"../hints\";\nimport {ComposeDirectiveManager} from '../composeDirectiveManager';\nimport {MismatchReporter} from './reporter';\nimport {inspect} from \"util\";\nimport {collectCoreDirectivesToCompose, CoreDirectiveInSubgraphs} from \"./coreDirectiveCollector\";\nimport {CompositionOptions} from \"../compose\";\n\n// A Sources<T> map represents the contributions from each subgraph of the given\n// element type T. The numeric keys correspond to the indexes of the subgraphs\n// in the original Subgraphs/names/subgraphsSchema arrays. When merging a\n// specific type or field, this Map will ideally contain far fewer entries than\n// the total number of subgraphs, though it will sometimes need to contain\n// explicitly undefined entries (hence T | undefined).\nexport type Sources<T> = Map<number, T | undefined>;\n\n// Like Array.prototype.map, but for Sources<T> maps.\nfunction mapSources<T, R>(\n  sources: Sources<T>,\n  mapper: (source: T | undefined, index: number) => R,\n): Sources<R> {\n  const result: Sources<R> = new Map;\n  sources.forEach((source, idx) => {\n    result.set(idx, mapper(source, idx));\n  });\n  return result;\n}\n\n// Removes all undefined sources from a given Sources<T> map. In other words,\n// this is not the same as Array.prototype.filter, which takes an arbitrary\n// boolean predicate.\nfunction filterSources<T>(sources: Sources<T>): Sources<T> {\n  const result: Sources<T> = new Map;\n  sources.forEach((source, idx) => {\n    if (typeof source !== 'undefined') {\n      result.set(idx, source);\n    }\n  });\n  return result;\n}\n\n// Like Array.prototype.some, but for Sources<T> maps.\nfunction someSources<T>(sources: Sources<T>, predicate: (source: T | undefined, index: number) => boolean | undefined): boolean {\n  for (const [idx, source] of sources.entries()) {\n    if (predicate(source, idx)) {\n      return true;\n    }\n  }\n  return false;\n}\n\n// Converts an array of T | undefined into a dense Sources<T> map.\nexport function sourcesFromArray<T>(array: (T | undefined)[]): Sources<T> {\n  const sources: Sources<T> = new Map;\n  array.forEach((source, idx) => {\n    sources.set(idx, source);\n  });\n  return sources;\n}\n\nexport type MergeResult = MergeSuccess | MergeFailure;\n\ntype FieldMergeContextProperties = {\n  usedOverridden: boolean,\n  unusedOverridden: boolean,\n  overrideWithUnknownTarget: boolean,\n  overrideLabel: string | undefined,\n}\n\n// for each source, specify additional properties that validate functions can set\nclass FieldMergeContext {\n  _props: Map<number, FieldMergeContextProperties>;\n\n  constructor(sources: Sources<FieldDefinition<any> | InputFieldDefinition>) {\n    this._props = new Map;\n    sources.forEach((_, i) => {\n      this._props.set(i, {\n        usedOverridden: false,\n        unusedOverridden: false,\n        overrideWithUnknownTarget: false,\n        overrideLabel: undefined,\n      });\n    });\n  }\n\n  isUsedOverridden(idx: number) {\n    return !!this._props.get(idx)?.usedOverridden;\n  }\n\n  isUnusedOverridden(idx: number) {\n    return !!this._props.get(idx)?.unusedOverridden;\n  }\n\n  hasOverrideWithUnknownTarget(idx: number) {\n    return !!this._props.get(idx)?.overrideWithUnknownTarget;\n  }\n\n  overrideLabel(idx: number) {\n    return this._props.get(idx)?.overrideLabel;\n  }\n\n  setUsedOverridden(idx: number) {\n    this._props.get(idx)!.usedOverridden = true;\n  }\n\n  setUnusedOverridden(idx: number) {\n    this._props.get(idx)!.unusedOverridden = true;\n  }\n\n  setOverrideWithUnknownTarget(idx: number) {\n    this._props.get(idx)!.overrideWithUnknownTarget = true;\n  }\n\n  setOverrideLabel(idx: number, label: string) {\n    this._props.get(idx)!.overrideLabel = label;\n  }\n\n  some(predicate: (props: FieldMergeContextProperties, index: number) => boolean) {\n    for (const [i, props] of this._props.entries()) {\n      if (predicate(props, i)) {\n        return true;\n      }\n    }\n    return false;\n  }\n}\n\nexport interface MergeSuccess {\n  supergraph: Schema;\n  hints: CompositionHint[];\n  errors?: undefined;\n}\n\nexport interface MergeFailure {\n  errors: GraphQLError[];\n  supergraph?: undefined;\n  hints?: undefined;\n}\n\nexport function isMergeSuccessful(mergeResult: MergeResult): mergeResult is MergeSuccess {\n  return !isMergeFailure(mergeResult);\n}\n\nexport function isMergeFailure(mergeResult: MergeResult): mergeResult is MergeFailure {\n  return !!mergeResult.errors;\n}\n\nexport function mergeSubgraphs(subgraphs: Subgraphs, options: CompositionOptions = {}): MergeResult {\n  assert(subgraphs.values().every((s) => s.isFed2Subgraph()), 'Merging should only be applied to federation 2 subgraphs');\n  return new Merger(subgraphs, options).merge();\n}\n\nfunction copyTypeReference(source: Type, dest: Schema): Type {\n  switch (source.kind) {\n    case 'ListType':\n      return new ListType(copyTypeReference(source.ofType, dest));\n    case 'NonNullType':\n      return new NonNullType(copyTypeReference(source.ofType, dest) as NullableType);\n    default:\n      const type = dest.type(source.name);\n      assert(type, () => `Cannot find type ${source} in destination schema (with types: ${dest.types().join(', ')})`);\n      return type;\n  }\n}\n\nconst NON_MERGED_CORE_FEATURES = [ federationIdentity, linkIdentity, coreIdentity, connectIdentity ];\n\nfunction isMergedType(type: NamedType): boolean {\n  if (type.isIntrospectionType() || FEDERATION_OPERATION_TYPES.map((s) => s.name).includes(type.name)) {\n    return false;\n  }\n\n  const coreFeatures = type.schema().coreFeatures;\n  const typeFeature = coreFeatures?.sourceFeature(type)?.feature.url.identity;\n  return !(typeFeature && NON_MERGED_CORE_FEATURES.includes(typeFeature));\n}\n\nfunction isMergedField(field: InputFieldDefinition | FieldDefinition<CompositeType>): boolean {\n  return field.kind !== 'FieldDefinition' || !isFederationField(field);\n}\n\nfunction isGraphQLBuiltInDirective(def: DirectiveDefinition): boolean {\n  // `def.isBuiltIn` is not entirely reliable here because if it will be `false`\n  // if the user has manually redefined the built-in directive (if they do,\n  // we validate the definition is \"compabitle\" with the built-in version, but\n  // otherwise return the use one). But when merging, we want to essentially\n  // ignore redefinitions, so we instead just check if the \"name\" is that of\n  // built-in directive.\n  return !!def.schema().builtInDirective(def.name);\n}\n\nfunction printTypes<T extends NamedType>(types: T[]): string {\n  return printHumanReadableList(\n    types.map((t) => `\"${t.coordinate}\"`),\n    {\n      prefix: 'type',\n      prefixPlural: 'types',\n    }\n  );\n}\n\n// Access the type set as a particular root in the provided `SchemaDefinition`, but ignoring \"query\" type\n// that only exists due to federation operations. In other words, if a subgraph don't have a query type,\n// but one was automatically added for _entities and _services, this method returns 'undefined'.\n// This mainly avoid us trying to set the supergraph root in the rare case where the supergraph has\n// no actual queries (knowing that subgraphs will _always_ have a queries since they have at least\n// the federation ones).\nfunction filteredRoot(def: SchemaDefinition, rootKind: SchemaRootKind): ObjectType | undefined {\n  const type = def.root(rootKind)?.type;\n  return type && hasMergedFields(type) ? type : undefined;\n}\n\nfunction hasMergedFields(type: ObjectType): boolean {\n  for (const field of type.fields()) {\n    if (isMergedField(field)) {\n      return true;\n    }\n  }\n  return false;\n}\n\nfunction indexOfMax(arr: number[]): number {\n  if (arr.length === 0) {\n    return -1;\n  }\n  let indexOfMax = 0;\n  for (let i = 1; i < arr.length; i++) {\n    if (arr[i] > arr[indexOfMax]) {\n      indexOfMax = i;\n    }\n  }\n  return indexOfMax;\n}\n\nfunction descriptionString(toIndent: string, indentation: string): string {\n  return indentation + '\"\"\"\\n' + indentation + toIndent.replace('\\n', '\\n' + indentation) + '\\n' + indentation + '\"\"\"';\n}\n\nfunction locationString(locations: DirectiveLocation[]): string {\n  if (locations.length === 0) {\n    return \"\";\n  }\n  return (locations.length === 1 ? 'location ' : 'locations ') + '\"' + locations.join(', ') + '\"';\n}\n\ntype EnumTypeUsagePosition = 'Input' | 'Output' | 'Both';\ntype EnumTypeUsage = {\n  position: EnumTypeUsagePosition,\n  examples: {\n    Input?: {coordinate: string, sourceAST?: SubgraphASTNode},\n    Output?: {coordinate: string, sourceAST?: SubgraphASTNode},\n  },\n}\n\ninterface OverrideArgs {\n  from: string;\n  label?: string;\n}\n\ninterface MergedDirectiveInfo {\n  definition: DirectiveDefinition;\n  argumentsMerger?: ArgumentMerger;\n  staticArgumentTransform?: StaticArgumentsTransform;\n}\n\nclass Merger {\n  readonly names: readonly string[];\n  readonly subgraphsSchema: readonly Schema[];\n  readonly errors: GraphQLError[] = [];\n  readonly hints: CompositionHint[] = [];\n  readonly merged: Schema = new Schema();\n  readonly subgraphNamesToJoinSpecName: Map<string, string>;\n  readonly mergedFederationDirectiveNames = new Set<string>();\n  readonly mergedFederationDirectiveInSupergraphByDirectiveName =\n    new Map<string, MergedDirectiveInfo>();\n  readonly enumUsages = new Map<string, EnumTypeUsage>();\n  private composeDirectiveManager: ComposeDirectiveManager;\n  private mismatchReporter: MismatchReporter;\n  private appliedDirectivesToMerge: {\n    names: Set<string>,\n    sources: Sources<SchemaElement<any, any>>,\n    dest: SchemaElement<any, any>,\n  }[];\n  private joinSpec: JoinSpecDefinition;\n  private linkSpec: CoreSpecDefinition;\n  private inaccessibleDirectiveInSupergraph?: DirectiveDefinition;\n  private latestFedVersionUsed: FeatureVersion;\n  private joinDirectiveFeatureDefinitionsByIdentity = new Map<string, FeatureDefinitions>();\n  private directivesUsingJoinDirective = new Set<string>();\n  private fieldsWithFromContext: Set<string>;\n  private fieldsWithOverride: Set<string>;\n  private fieldsWithRequires: Set<string>;\n  private accessControlDirectivesInSupergraph: { name: string, nameInSupergraph: string }[] = [];\n  private __accessControlAdditionalSources?: Map<string, Array<ObjectType | FieldDefinition<ObjectType>>>;\n\n  constructor(readonly subgraphs: Subgraphs, readonly options: CompositionOptions) {\n    this.latestFedVersionUsed = this.getLatestFederationVersionUsed();\n    this.joinSpec = JOIN_VERSIONS.getMinimumRequiredVersion(this.latestFedVersionUsed);\n    this.linkSpec = LINK_VERSIONS.getMinimumRequiredVersion(this.latestFedVersionUsed);\n    this.fieldsWithFromContext = this.getFieldsWithFromContextDirective();\n    this.fieldsWithOverride = this.getFieldsWithOverrideDirective();\n    this.fieldsWithRequires = this.getFieldsWithRequiresDirective();\n\n    this.names = subgraphs.names();\n    this.composeDirectiveManager = new ComposeDirectiveManager(\n      this.subgraphs,\n      (error: GraphQLError) => { this.errors.push(error) },\n      (hint: CompositionHint) => { this.hints.push(hint) },\n    );\n    this.mismatchReporter = new MismatchReporter(\n      this.names,\n      (error: GraphQLError) => { this.errors.push(error); },\n      (hint: CompositionHint) => { this.hints.push(hint); },\n    );\n\n    this.subgraphsSchema = subgraphs.values().map((subgraph) => {\n      return subgraph.schema;\n    });\n\n    this.subgraphNamesToJoinSpecName = this.prepareSupergraph();\n    this.appliedDirectivesToMerge = [];\n\n    // Represent any applications of directives imported from these spec URLs\n    // using @join__directive in the merged supergraph.\n    this.joinDirectiveFeatureDefinitionsByIdentity.set(CONNECT_VERSIONS.identity, CONNECT_VERSIONS);\n  }\n\n  private getLatestFederationVersionUsed(): FeatureVersion {\n    const versions = this.subgraphs.values()\n                        .map((s) => this.getLatestFederationVersionUsedInSubgraph(s))\n                        .filter(isDefined);\n\n    return FeatureVersion.max(versions) ?? FEDERATION_VERSIONS.latest().version;\n  }\n\n  private getLatestFederationVersionUsedInSubgraph(subgraph: Subgraph): FeatureVersion | undefined {\n    const linkedFederationVersion = subgraph.metadata()?.federationFeature()?.url.version;\n    if (!linkedFederationVersion) {\n      return undefined;\n    }\n\n    // Check if any of the directives imply a newer version of federation than is explicitly linked\n    const versionsFromFeatures: FeatureVersion[] = [];\n    for (const feature of subgraph.schema.coreFeatures?.allFeatures() ?? []) {\n      const version = feature.minimumFederationVersion();\n      if (version) {\n        versionsFromFeatures.push(version);\n      }\n    }\n    const impliedFederationVersion = FeatureVersion.max(versionsFromFeatures);\n    if (!impliedFederationVersion?.satisfies(linkedFederationVersion) || linkedFederationVersion.gte(impliedFederationVersion)) {\n      return linkedFederationVersion;\n    }\n\n    // If some of the directives are causing an implicit upgrade, put one in the hint\n    let featureCausingUpgrade: CoreFeature | undefined;\n    for (const feature of subgraph.schema.coreFeatures?.allFeatures() ?? []) {\n      if (feature.minimumFederationVersion() == impliedFederationVersion) {\n        featureCausingUpgrade = feature;\n        break;\n      }\n    }\n\n    if (featureCausingUpgrade) {\n      this.hints.push(new CompositionHint(\n        HINTS.IMPLICITLY_UPGRADED_FEDERATION_VERSION,\n        `Subgraph ${subgraph.name} has been implicitly upgraded from federation ${linkedFederationVersion} to ${impliedFederationVersion}`,\n        featureCausingUpgrade.directive.definition,\n        featureCausingUpgrade.directive.sourceAST ?\n          addSubgraphToASTNode(featureCausingUpgrade.directive.sourceAST, subgraph.name) :\n          undefined\n      ));\n    }\n\n    return impliedFederationVersion;\n  }\n\n\n  private prepareSupergraph(): Map<string, string> {\n    // TODO: we will soon need to look for name conflicts for @core and @join with potentially user-defined directives and\n    // pass a `as` to the methods below if necessary. However, as we currently don't propagate any subgraph directives to\n    // the supergraph outside of a few well-known ones, we don't bother yet.\n    this.linkSpec.addToSchema(this.merged);\n    const errors = this.linkSpec.applyFeatureToSchema(this.merged, this.joinSpec, undefined, this.joinSpec.defaultCorePurpose);\n    assert(errors.length === 0, \"We shouldn't have errors adding the join spec to the (still empty) supergraph schema\");\n\n    const directivesMergeInfo = collectCoreDirectivesToCompose(this.subgraphs);\n    this.validateAndMaybeAddSpecs(directivesMergeInfo);\n    return this.joinSpec.populateGraphEnum(this.merged, this.subgraphs);\n  }\n\n  private validateAndMaybeAddSpecs(directivesMergeInfo: CoreDirectiveInSubgraphs[]) {\n    const supergraphInfoByIdentity = new Map<\n      string,\n      {\n        specInSupergraph: FeatureDefinition;\n        directives: {\n          nameInFeature: string;\n          nameInSupergraph: string;\n          compositionSpec: DirectiveCompositionSpecification;\n        }[];\n      }\n    >;\n\n    for (const {url, name, definitionsPerSubgraph, compositionSpec} of directivesMergeInfo) {\n      // No composition specification means that it shouldn't be composed.\n      if (!compositionSpec) {\n        return;\n      }\n\n      let nameInSupergraph: string | undefined;\n      for (const subgraph of this.subgraphs) {\n        const directive = definitionsPerSubgraph.get(subgraph.name);\n        if (!directive) {\n          continue;\n        }\n\n        if (!nameInSupergraph) {\n          nameInSupergraph = directive.name;\n        } else if (nameInSupergraph !== directive.name) {\n          this.mismatchReporter.reportMismatchError(\n            ERRORS.LINK_IMPORT_NAME_MISMATCH,\n            `The \"@${name}\" directive (from ${url}) is imported with mismatched name between subgraphs: it is imported as `,\n            directive,\n            sourcesFromArray(this.subgraphs.values().map((s) => definitionsPerSubgraph.get(s.name))),\n            (def) => `\"@${def.name}\"`,\n          );\n          return;\n        }\n      }\n\n      // If we get here with `nameInSupergraph` unset, it means there is no usage for the directive at all and we\n      // don't bother adding the spec to the supergraph.\n      if (nameInSupergraph) {\n        const specInSupergraph = compositionSpec.supergraphSpecification(this.latestFedVersionUsed);\n        let supergraphInfo = supergraphInfoByIdentity.get(specInSupergraph.url.identity);\n        if (supergraphInfo) {\n          assert(\n            specInSupergraph.url.equals(supergraphInfo.specInSupergraph.url),\n            `Spec ${specInSupergraph.url} directives disagree on version for supergraph`,\n          );\n        } else {\n          supergraphInfo = {\n            specInSupergraph,\n            directives: [],\n          };\n          supergraphInfoByIdentity.set(specInSupergraph.url.identity, supergraphInfo);\n        }\n        supergraphInfo.directives.push({\n          nameInFeature: name,\n          nameInSupergraph,\n          compositionSpec,\n        });\n        if (compositionSpec.useJoinDirective) {\n          this.directivesUsingJoinDirective.add(nameInSupergraph);\n        }\n      }\n    }\n\n    for (const { specInSupergraph, directives } of supergraphInfoByIdentity.values()) {\n      const imports: CoreImport[] = [];\n      for (const { nameInFeature, nameInSupergraph, compositionSpec } of directives) {\n        // If this directive is using the @join__directive directive, we don't import it in the\n        // supergraph schemas.\n        if (compositionSpec.useJoinDirective) {\n          continue;\n        }\n\n        const defaultNameInSupergraph = CoreFeature.directiveNameInSchemaForCoreArguments(\n          specInSupergraph.url,\n          specInSupergraph.url.name,\n          [],\n          nameInFeature,\n        );\n        if (nameInSupergraph !== defaultNameInSupergraph) {\n          imports.push(nameInFeature === nameInSupergraph\n            ? { name: `@${nameInFeature}` }\n            : { name: `@${nameInFeature}`, as: `@${nameInSupergraph}` }\n          );\n        }\n      }\n      const errors = this.linkSpec.applyFeatureToSchema(\n        this.merged,\n        specInSupergraph,\n        undefined,\n        specInSupergraph.defaultCorePurpose,\n        imports,\n      );\n      assert(\n        errors.length === 0,\n        \"We shouldn't have errors adding the join spec to the (still empty) supergraph schema\"\n      );\n      const feature = this.merged.coreFeatures?.getByIdentity(specInSupergraph.url.identity);\n      assert(feature, 'Should have found the feature we just added');\n      for (const { nameInFeature, nameInSupergraph, compositionSpec } of directives) {\n        const argumentsMerger = compositionSpec.argumentsMerger?.call(null, this.merged, feature);\n        if (argumentsMerger instanceof GraphQLError) {\n          // That would mean we made a mistake in the declaration of a hard-coded directive,\n          // so we just throw right away so this can be caught and corrected.\n          throw argumentsMerger;\n        }\n        this.mergedFederationDirectiveNames.add(nameInSupergraph);\n        this.mergedFederationDirectiveInSupergraphByDirectiveName.set(nameInSupergraph, {\n          definition: this.merged.directive(nameInSupergraph)!,\n          argumentsMerger,\n          staticArgumentTransform: compositionSpec.staticArgumentTransform,\n        });\n        // If we encounter the @inaccessible directive, we need to record its\n        // definition so certain merge validations that care about @inaccessible\n        // can act accordingly.\n        if (\n          specInSupergraph.identity === inaccessibleIdentity\n            && nameInFeature === specInSupergraph.url.name\n        ) {\n          this.inaccessibleDirectiveInSupergraph = this.merged.directive(nameInSupergraph)!;\n        }\n\n        // If we encounter access control directives, we need to record its definition\n        // so we can correctly merge them for polymorphic types\n        if (specInSupergraph.identity === AuthenticatedSpecDefinition.identity && nameInFeature === specInSupergraph.url.name) {\n          const authenticatedDirective = this.merged.directive(nameInSupergraph);\n          if (authenticatedDirective) {\n            this.accessControlDirectivesInSupergraph.push({\n              name: FederationDirectiveName.AUTHENTICATED,\n              nameInSupergraph: authenticatedDirective.name,\n            });\n          }\n        }\n        if (specInSupergraph.identity === RequiresScopesSpecDefinition.identity && nameInFeature === specInSupergraph.url.name) {\n          const requiresScopesDirective = this.merged.directive(nameInSupergraph);\n          if (requiresScopesDirective) {\n            this.accessControlDirectivesInSupergraph.push({\n              name: FederationDirectiveName.REQUIRES_SCOPES,\n              nameInSupergraph: requiresScopesDirective.name,\n            });\n          }\n        }\n        if (specInSupergraph.identity === PolicySpecDefinition.identity && nameInFeature === specInSupergraph.url.name) {\n          const policyDirective = this.merged.directive(nameInSupergraph);\n          if (policyDirective) {\n            this.accessControlDirectivesInSupergraph.push({\n              name: FederationDirectiveName.POLICY,\n              nameInSupergraph: policyDirective.name,\n            });\n          }\n        }\n      }\n    }\n  }\n\n  private joinSpecName(subgraphIndex: number): string {\n    return this.subgraphNamesToJoinSpecName.get(this.names[subgraphIndex])!;\n  }\n\n  private metadata(idx: number): FederationMetadata {\n    return this.subgraphs.values()[idx].metadata();\n  }\n\n  private isMergedDirective(subgraphName: string, definition: DirectiveDefinition | Directive): boolean {\n    // If it's a directive application, then we skip it unless it's a graphQL built-in\n    // (even if the definition itself allows executable locations, this particular\n    // application is an type-system element and we don't want to merge it).\n    if (this.composeDirectiveManager.shouldComposeDirective({ subgraphName, directiveName: definition.name })) {\n      return true;\n    }\n    if (this.directivesUsingJoinDirective.has(definition.name)) {\n      // This directive will be added as `@join__directive` by the `addJoinDirectiveDirectives`\n      // method. So, we skip the normal merging logic.\n      return false;\n    }\n    if (definition instanceof Directive) {\n      // We have special code in `Merger.prepareSupergraph` to include the _definition_ of merged federation\n      // directives in the supergraph, so we don't have to merge those _definition_, but we *do* need to merge\n      // the applications.\n      // Note that this is a temporary solution: a more principled way to have directive propagated\n      // is coming and will remove the hard-coding.\n      return this.mergedFederationDirectiveNames.has(definition.name) || isGraphQLBuiltInDirective(definition.definition!);\n    } else if (isGraphQLBuiltInDirective(definition)) {\n      // We never \"merge\" graphQL built-in definitions, since they are built-in and\n      // don't need to be defined.\n      return false;\n    }\n    return definition.hasExecutableLocations();\n  }\n\n  merge(): MergeResult {\n\n    this.composeDirectiveManager.validate();\n    this.addCoreFeatures();\n    // We first create empty objects for all the types and directives definitions that will exists in the\n    // supergraph. This allow to be able to reference those from that point on.\n    this.addTypesShallow();\n    this.addDirectivesShallow();\n\n    const objectTypes: ObjectType[] = [];\n    const interfaceTypes: InterfaceType[] = [];\n    const unionTypes: UnionType[] = [];\n    const enumTypes: EnumType[] = [];\n    const scalarTypes: ScalarType[] = [];\n    const inputObjectTypes: InputObjectType[] = [];\n\n    this.merged.types().forEach(type => {\n      if (\n        this.linkSpec.isSpecType(type) ||\n        this.joinSpec.isSpecType(type)\n      ) {\n        return;\n      }\n\n      switch (type.kind) {\n        case 'UnionType':\n          unionTypes.push(type);\n          break;\n        case 'EnumType':\n          enumTypes.push(type);\n          break;\n        case 'ObjectType':\n          objectTypes.push(type);\n          break;\n        case 'InterfaceType':\n          interfaceTypes.push(type);\n          break;\n        case 'ScalarType':\n          scalarTypes.push(type);\n          break;\n        case 'InputObjectType':\n          inputObjectTypes.push(type);\n          break;\n      }\n    });\n\n    // Then, for object and interface types, we merge the 'implements' relationship, and we merge the unions.\n    // We do this first because being able to know if a type is a subtype of another one (which relies on those\n    // 2 things) is used when merging fields.\n    for (const objectType of objectTypes) {\n      this.mergeImplements(this.subgraphsTypes(objectType), objectType);\n    }\n    for (const interfaceType of interfaceTypes) {\n      this.mergeImplements(this.subgraphsTypes(interfaceType), interfaceType);\n    }\n    for (const unionType of unionTypes) {\n      this.mergeType(this.subgraphsTypes(unionType), unionType);\n    }\n\n    // We merge the roots first as it only depend on the type existing, not being fully merged, and when\n    // we merge types next, we actually rely on this having been called to detect \"root types\"\n    // (in order to skip the _entities and _service fields on that particular type, and to avoid\n    // calling root type a \"value type\" when hinting).\n    this.mergeSchemaDefinition(\n      sourcesFromArray(this.subgraphsSchema.map(s => s.schemaDefinition)),\n      this.merged.schemaDefinition,\n    );\n\n    // We've already merged unions above and we've going to merge enums last\n    for (const type of [...scalarTypes, ...inputObjectTypes, ...interfaceTypes, ...objectTypes]) {\n      this.mergeType(this.subgraphsTypes(type), type);\n    }\n\n    for (const definition of this.merged.directives()) {\n      // we should skip the supergraph specific directives, that is the @core and @join directives.\n      if (this.linkSpec.isSpecDirective(definition) || this.joinSpec.isSpecDirective(definition)) {\n        continue;\n      }\n      this.mergeDirectiveDefinition(\n        sourcesFromArray(this.subgraphsSchema.map(s => s.directive(definition.name))),\n        definition,\n      );\n    }\n\n    // We merge enum dead last because enums can be used as both input and output types and the merging behavior\n    // depends on their usage and it's easier to check said usage if everything else has been merge (at least\n    // anything that may use an enum type, so all fields and arguments).\n    for (const enumType of enumTypes) {\n      this.mergeType(this.subgraphsTypes(enumType), enumType);\n    }\n\n    if (!this.merged.schemaDefinition.rootType('query')) {\n      this.errors.push(ERRORS.NO_QUERIES.err(\"No queries found in any subgraph: a supergraph must have a query root type.\"));\n    }\n\n    this.mergeAllAppliedDirectives();\n\n    // When @interfaceObject is used in a subgraph, then that subgraph essentially provides fields both\n    // to the interface but also to all its implementations. But so far, we only merged the type definition\n    // itself, so we now need to potentially add the field to the implementations if missing.\n    // Note that we do this after everything else have been merged because this method will essentially\n    // copy things from interface in the merged schema into their implementation in that same schema so\n    // we want to make sure everything is ready.\n    this.addMissingInterfaceObjectFieldsToImplementations();\n\n    // If we already encountered errors, `this.merged` is probably incomplete. Let's not risk adding errors that\n    // are only an artifact of that incompleteness as it's confusing.\n    if (this.errors.length === 0) {\n      this.postMergeValidations();\n\n      if (this.errors.length === 0) {\n        try {\n          // TODO: Errors thrown by the `validate` below are likely to be confusing for users, because they\n          // refer to a document they don't know about (the merged-but-not-returned supergraph) and don't\n          // point back to the subgraphs in any way.\n          // Given the subgraphs are valid and given how merging works (it takes the union of what is in the\n          // subgraphs), there is only so much things that can be invalid in the supergraph at this point. We\n          // should make sure we add all such validation to `postMergeValidations` with good error messages (that points\n          // to subgraphs appropriately). and then simply _assert_ that `Schema.validate()` doesn't throw as a sanity\n          // check.\n          this.merged.validate();\n          // Lastly, we validate that the API schema of the supergraph can be successfully compute, which currently will surface issues around\n          // misuses of `@inaccessible` (there should be other errors in theory, but if there is, better find it now rather than later).\n          this.merged.toAPISchema();\n        } catch (e) {\n          const causes = errorCauses(e);\n          if (causes) {\n            this.errors.push(...this.updateInaccessibleErrorsWithLinkToSubgraphs(causes));\n          } else {\n            // Not a GraphQLError, so probably a programming error. Let's re-throw so it can be more easily tracked down.\n            throw e;\n          }\n        }\n      }\n    }\n\n    if (this.errors.length > 0) {\n      return { errors: this.errors };\n    } else {\n      return {\n        supergraph: this.merged,\n        hints: this.hints\n      }\n    }\n  }\n\n  // Amongst other thing, this will ensure all the definitions of a given name are of the same kind\n  // and report errors otherwise.\n  private addTypesShallow() {\n    const mismatchedTypes = new Set<string>();\n    const typesWithInterfaceObject = new Set<string>();\n    for (const subgraph of this.subgraphs) {\n      const metadata = subgraph.metadata();\n\n      // We include the built-ins in general (even if we skip some federation specific ones): if a subgraph built-in\n      // is not a supergraph built-in, we should add it as a normal type.\n      for (const type of subgraph.schema.allTypes()) {\n        if (!isMergedType(type)) {\n          continue;\n        }\n\n        let expectedKind = type.kind;\n        if (metadata.isInterfaceObjectType(type)) {\n          expectedKind = 'InterfaceType';\n          typesWithInterfaceObject.add(type.name);\n        }\n        const previous = this.merged.type(type.name);\n        if (!previous) {\n          this.merged.addType(newNamedType(expectedKind, type.name));\n        } else if (previous.kind !== expectedKind) {\n          mismatchedTypes.add(type.name);\n        }\n      }\n    }\n    mismatchedTypes.forEach(t => this.reportMismatchedTypeDefinitions(t));\n\n    // Most invalid use of @interfaceObject are reported as a mismatch above, but one exception is the\n    // case where a type is used only with @interfaceObject, but there is no corresponding interface\n    // definition in any subgraph.\n    for (const itfObjectType of typesWithInterfaceObject) {\n      if (mismatchedTypes.has(itfObjectType)) {\n        continue;\n      }\n\n      if (!this.subgraphsSchema.some((s) => s.type(itfObjectType)?.kind === 'InterfaceType')) {\n        const subgraphsWithType = this.subgraphs.values().filter((s) => s.schema.type(itfObjectType) !== undefined);\n        // Note that there is meaningful way in which the supergraph could work in this situation, expect maybe if\n        // the type is unused, because validation composition would complain it cannot find the `__typename` in path\n        // leading to that type. But the error here is a bit more \"direct\"/user friendly than what post-merging\n        // validation would return, so we make this a hard error, not just a warning.\n        this.errors.push(ERRORS.INTERFACE_OBJECT_USAGE_ERROR.err(\n          `Type \"${itfObjectType}\" is declared with @interfaceObject in all the subgraphs in which is is defined (it is defined in ${printSubgraphNames(subgraphsWithType.map((s) => s.name))} but should be defined as an interface in at least one subgraph)`,\n          { nodes: sourceASTs(...subgraphsWithType.map((s) => s.schema.type(itfObjectType))) },\n        ));\n      }\n    }\n  }\n\n  private addCoreFeatures() {\n    const features = this.composeDirectiveManager.allComposedCoreFeatures();\n    for (const [feature, directives] of features) {\n      const imports = directives.map(([asName, origName]) => {\n        if (asName === origName) {\n          return `@${asName}`;\n        } else {\n          return {\n            name: `@${origName}`,\n            as: `@${asName}`,\n          };\n        }\n      });\n      this.merged.schemaDefinition.applyDirective('link', {\n        url: feature.url.toString(),\n        import: imports,\n      });\n    }\n  }\n\n  private addDirectivesShallow() {\n    // Like for types, we initially add all the directives that are defined in any subgraph.\n    // However, in practice and for \"execution\" directives, we will only keep the the ones\n    // that are in _all_ subgraphs. But we're do the remove later, and while this is all a\n    // bit round-about, it's a tad simpler code-wise to do this way.\n    this.subgraphsSchema.forEach((subgraph, idx) => {\n      for (const directive of subgraph.allDirectives()) {\n        if (!this.isMergedDirective(this.names[idx], directive)) {\n          continue;\n        }\n        if (!this.merged.directive(directive.name)) {\n          this.merged.addDirectiveDefinition(new DirectiveDefinition(directive.name));\n        }\n      }\n    });\n  }\n\n  private reportMismatchedTypeDefinitions(mismatchedType: string) {\n    const supergraphType = this.merged.type(mismatchedType)!;\n    const typeKindToString = (t: NamedType) => {\n      const metadata = federationMetadata(t.schema());\n      if (metadata?.isInterfaceObjectType(t)) {\n        return 'Interface Object Type (Object Type with @interfaceObject)';\n      } else {\n        return t.kind.replace(\"Type\", \" Type\");\n      }\n    };\n    this.mismatchReporter.reportMismatchError(\n      ERRORS.TYPE_KIND_MISMATCH,\n      `Type \"${mismatchedType}\" has mismatched kind: it is defined as `,\n      supergraphType,\n      sourcesFromArray(this.subgraphsSchema.map(s => s.type(mismatchedType))),\n      typeKindToString\n    );\n  }\n\n  private subgraphsTypes<T extends NamedType>(supergraphType: T): Sources<T> {\n    return sourcesFromArray(this.subgraphs.values().map(subgraph => {\n      const type = subgraph.schema.type(supergraphType.name);\n      if (!type) {\n        return;\n      }\n\n      // At this point, we have already reported errors for type mismatches (and so composition\n      // will fail, we just try to gather more errors), so simply ignore versions of the type\n      // that don't have the \"proper\" kind.\n      const kind = subgraph.metadata().isInterfaceObjectType(type) ? 'InterfaceType' : type.kind;\n      if (kind !== supergraphType.kind) {\n        return;\n      }\n\n      return type as T;\n    }));\n  }\n\n  private mergeImplements<T extends ObjectType | InterfaceType>(sources: Sources<T>, dest: T) {\n    const implemented = new Set<string>();\n    const joinImplementsDirective = this.joinSpec.implementsDirective(this.merged)!;\n    for (const [idx, source] of sources.entries()) {\n      if (source) {\n        const name = this.joinSpecName(idx);\n        for (const itf of source.interfaces()) {\n          implemented.add(itf.name);\n          dest.applyDirective(joinImplementsDirective, { graph: name, interface: itf.name });\n        }\n      }\n    }\n    implemented.forEach(itf => dest.addImplementedInterface(itf));\n  }\n\n  private mergeDescription<T extends SchemaElement<any, any>>(sources: Sources<T>, dest: T) {\n    const descriptions: string[] = [];\n    const counts: number[] = [];\n    for (const source of sources.values()) {\n      if (!source || source.description === undefined) {\n        continue;\n      }\n\n      const idx = descriptions.indexOf(source.description);\n      if (idx < 0) {\n        descriptions.push(source.description);\n        // Very much a hack but simple enough: while we do merge 'empty-string' description if that's all we have (debatable behavior in the first place,\n        // but graphQL-js does print such description and fed 1 has historically merged them so ...), we really don't want to favor those if we\n        // have any non-empty description, even if we have more empty ones across subgraphs. So we use a super-negative base count if the description\n        // is empty so that our `indexOfMax` below never pick them if there is a choice.\n        counts.push(source.description === '' ? Number.MIN_SAFE_INTEGER : 1);\n      } else {\n        counts[idx]++;\n      }\n    }\n\n    if (descriptions.length > 0) {\n      // we don't want to raise a hint if a description is \"\"\n      const nonEmptyDescriptions = descriptions.filter(desc => desc !== '');\n      if (descriptions.length === 1) {\n        dest.description = descriptions[0];\n      } else if (nonEmptyDescriptions.length === 1) {\n        dest.description = nonEmptyDescriptions[0];\n      } else {\n        const idx = indexOfMax(counts);\n        dest.description = descriptions[idx];\n        // TODO: Currently showing full descriptions in the hint messages, which is probably fine in some cases. However\n        // this might get less helpful if the description appears to differ by a very small amount (a space, a single character typo)\n        // and even more so the bigger the description is, and we could improve the experience here. For instance, we could\n        // print the supergraph description but then show other descriptions as diffs from that (using, say, https://www.npmjs.com/package/diff).\n        // And we could even switch between diff/non-diff modes based on the levenshtein distances between the description we found.\n        // That said, we should decide if we want to bother here: maybe we can leave it to studio so handle a better experience (as\n        // it can more UX wise).\n        const name = dest instanceof NamedSchemaElement ? `Element \"${dest.coordinate}\"` : 'The schema definition';\n        this.mismatchReporter.reportMismatchHint({\n          code: HINTS.INCONSISTENT_DESCRIPTION,\n          message: `${name} has inconsistent descriptions across subgraphs. `,\n          supergraphElement: dest,\n          subgraphElements: sources,\n          elementToString: elt => elt.description,\n          supergraphElementPrinter: (desc, subgraphs) => `The supergraph will use description (from ${subgraphs}):\\n${descriptionString(desc, '  ')}`,\n          otherElementsPrinter: (desc: string, subgraphs) => `\\nIn ${subgraphs}, the description is:\\n${descriptionString(desc, '  ')}`,\n          ignorePredicate: elt => elt?.description === undefined,\n          noEndOfMessageDot: true,  // Skip the end-of-message '.' since it would look ugly in that specific case\n        });\n      }\n    }\n  }\n\n  // Note that we know when we call this method that all the types in sources and dest have the same kind.\n  // We could express this through a generic argument, but typescript is not smart enough to save us\n  // type-casting even if we do, and in fact, using a generic forces a case on `dest` for some reason.\n  // So we don't bother.\n  private mergeType(sources: Sources<NamedType>, dest: NamedType) {\n    this.checkForExtensionWithNoBase(sources, dest);\n    this.mergeDescription(sources, dest);\n    this.addJoinType(sources, dest);\n    this.recordTypeAppliedDirectivesToMerge(sources, dest);\n    this.addJoinDirectiveDirectives(sources, dest);\n    switch (dest.kind) {\n      case 'ScalarType':\n        // Since we don't handle applied directives yet, we have nothing specific to do for scalars.\n        break;\n      case 'ObjectType':\n        this.mergeObject(sources as Sources<ObjectType>, dest);\n        break;\n      case 'InterfaceType':\n        // Note that due to @interfaceObject, we can have some ObjectType in the sources, not just interfaces.\n        this.mergeInterface(sources as Sources<InterfaceType | ObjectType>, dest);\n        break;\n      case 'UnionType':\n        this.mergeUnion(sources as Sources<UnionType>, dest);\n        break;\n      case 'EnumType':\n        this.mergeEnum(sources as Sources<EnumType>, dest);\n        break;\n      case 'InputObjectType':\n        this.mergeInput(sources as Sources<InputObjectType>, dest);\n        break;\n    }\n  }\n\n  private checkForExtensionWithNoBase(sources: Sources<NamedType>, dest: NamedType) {\n    if (isObjectType(dest) && dest.isRootType()) {\n      return;\n    }\n\n    const defSubgraphs: string[] = [];\n    const extensionSubgraphs: string[] = [];\n    const extensionASTs: (ASTNode|undefined)[] = [];\n\n    for (const [i, source] of sources.entries()) {\n      if (!source) {\n        continue;\n      }\n      if (source.hasNonExtensionElements()) {\n        defSubgraphs.push(this.names[i]);\n      }\n      if (source.hasExtensionElements()) {\n        extensionSubgraphs.push(this.names[i]);\n        extensionASTs.push(firstOf<Extension<any>>(source.extensions().values())!.sourceAST);\n      }\n    }\n    if (extensionSubgraphs.length > 0 && defSubgraphs.length === 0) {\n      for (const [i, subgraph] of extensionSubgraphs.entries()) {\n        this.errors.push(ERRORS.EXTENSION_WITH_NO_BASE.err(\n          `[${subgraph}] Type \"${dest}\" is an extension type, but there is no type definition for \"${dest}\" in any subgraph.`,\n          { nodes: extensionASTs[i] },\n        ));\n      }\n    }\n  }\n\n  private addJoinType(sources: Sources<NamedType>, dest: NamedType) {\n    const joinTypeDirective = this.joinSpec.typeDirective(this.merged);\n    for (const [idx, source] of sources.entries()) {\n      if (!source) {\n        continue;\n      }\n\n      // There is either 1 join__type per-key, or if there is no key, just one for the type.\n      const sourceMetadata = this.subgraphs.values()[idx].metadata();\n      // Note that mechanically we don't need to substitute `undefined` for `false` below (`false` is the\n      // default value), but doing so 1) yield smaller supergraph (because the parameter isn't included)\n      // and 2) this avoid needless discrepancies compared to supergraphs generated before @interfaceObject was added.\n      const isInterfaceObject = sourceMetadata.isInterfaceObjectType(source) ? true : undefined;\n      const keys = source.appliedDirectivesOf(sourceMetadata.keyDirective());\n      const name = this.joinSpecName(idx);\n\n      if (!keys.length) {\n        dest.applyDirective(joinTypeDirective, { graph: name, isInterfaceObject });\n      } else {\n        for (const key of keys) {\n          const extension = key.ofExtension() || source.hasAppliedDirective(sourceMetadata.extendsDirective()) ? true : undefined;\n          const { resolvable } = key.arguments();\n          dest.applyDirective(joinTypeDirective, { graph: name, key: key.arguments().fields, extension, resolvable, isInterfaceObject });\n        }\n      }\n    }\n  }\n\n  private mergeObject(sources: Sources<ObjectType>, dest: ObjectType) {\n    const isEntity = this.hintOnInconsistentEntity(sources, dest);\n    const isValueType = !isEntity && !dest.isRootType();\n    const isSubscription = dest.isSubscriptionRootType();\n\n    const added = this.addFieldsShallow(sources, dest);\n    if (!added.size) {\n      // This can happen for a type that existing in the subgraphs but had only non-merged fields\n      // (currently, this can only be the 'Query' type, in the rare case where the federated schema\n      // exposes no queries) .\n      dest.remove();\n    } else {\n      added.forEach((subgraphFields, destField) => {\n        if (isValueType) {\n          this.hintOnInconsistentValueTypeField(sources, dest, destField);\n        }\n        const mergeContext = this.validateOverride(subgraphFields, destField);\n\n        if (isSubscription) {\n          this.validateSubscriptionField(subgraphFields);\n        }\n\n        this.mergeField({\n          sources: subgraphFields,\n          dest: destField,\n          mergeContext,\n        });\n        this.validateFieldSharing(subgraphFields, destField, mergeContext);\n      });\n    }\n  }\n\n  // Return whether the type is an entity in at least one subgraph.\n  private hintOnInconsistentEntity(sources: Sources<ObjectType>, dest: ObjectType): boolean {\n    const sourceAsEntity: ObjectType[] = [];\n    const sourceAsNonEntity: ObjectType[] = [];\n    for (const [idx, source] of sources.entries()) {\n      if (!source) {\n        continue;\n      }\n      const sourceMetadata = this.subgraphs.values()[idx].metadata();\n      const keyDirective = sourceMetadata.keyDirective();\n      if (source.hasAppliedDirective(keyDirective)) {\n        sourceAsEntity.push(source);\n      } else {\n        sourceAsNonEntity.push(source);\n      }\n    }\n    if (sourceAsEntity.length > 0 && sourceAsNonEntity.length > 0) {\n      this.mismatchReporter.reportMismatchHint({\n        code: HINTS.INCONSISTENT_ENTITY,\n        message: `Type \"${dest}\" is declared as an entity (has a @key applied) in some but not all defining subgraphs: `,\n        supergraphElement: dest,\n        subgraphElements: sources,\n        // All we use the string of the next line for is to categorize source with a @key of the others.\n        elementToString: type => sourceAsEntity.find(entity => entity === type) ? 'yes' : 'no',\n        // Note that the first callback is for element that are \"like the supergraph\". As the supergraph has no @key ...\n        supergraphElementPrinter: (_, subgraphs) => `it has no @key in ${subgraphs}`,\n        otherElementsPrinter: (_, subgraphs) => ` but has some @key in ${subgraphs}`,\n      });\n    }\n    return sourceAsEntity.length > 0;\n  }\n\n  // Assume it is called on a field of a value type\n  private hintOnInconsistentValueTypeField(\n    sources: Sources<ObjectType | InterfaceType>,\n    dest: ObjectType | InterfaceType,\n    field: FieldDefinition<any>,\n  ) {\n    let hintId: HintCodeDefinition;\n    let typeDescription: string;\n    switch (dest.kind) {\n      case 'ObjectType':\n        hintId = HINTS.INCONSISTENT_OBJECT_VALUE_TYPE_FIELD;\n        typeDescription = 'non-entity object'\n        break;\n      case 'InterfaceType':\n        hintId = HINTS.INCONSISTENT_INTERFACE_VALUE_TYPE_FIELD;\n        typeDescription = 'interface'\n        break;\n    }\n    for (const [index, source] of sources.entries()) {\n      // As soon as we find a subgraph that has the type but not the field, we hint.\n      if (source && !source.field(field.name) && !this.areAllFieldsExternal(index, source)) {\n        this.mismatchReporter.reportMismatchHint({\n          code: hintId,\n          message: `Field \"${field.coordinate}\" of ${typeDescription} type \"${dest}\" is defined in some but not all subgraphs that define \"${dest}\": `,\n          supergraphElement: dest,\n          subgraphElements: sources,\n          elementToString: type => type.field(field.name) ? 'yes' : 'no',\n          supergraphElementPrinter: (_, subgraphs) => `\"${field.coordinate}\" is defined in ${subgraphs}`,\n          otherElementsPrinter: (_, subgraphs) => ` but not in ${subgraphs}`,\n        });\n        break;\n      }\n    }\n  }\n\n  private addMissingInterfaceObjectFieldsToImplementations() {\n    // For each merged object types, we check if we're missing a field from one of the implemented interface.\n    // If we do, then we look if one of the subgraph provides that field as a (non-external) interface object\n    // type, and if that's the case, we add the field to the object.\n    for (const type of this.merged.objectTypes()) {\n      for (const implementedItf of type.interfaces()) {\n        for (const itfField of implementedItf.fields()) {\n          if (type.field(itfField.name)) {\n            continue;\n          }\n\n          // Note that we don't blindly add the field yet, that would be incorrect in many cases (and we\n          // have a specific validation that return a user-friendly error in such incorrect cases, see\n          // `postMergeValidations`). We must first check that there is some subgraph that implement\n          // that field as an \"interface object\", since in that case the field will genuinely be provided\n          // by that subgraph at runtime.\n          if (this.isFieldProvidedByAnInterfaceObject(itfField.name, implementedItf.name)) {\n            // Note it's possible that interface is abstracted away (as an interface object) in multiple\n            // subgraphs, so we don't bother with the field definition in those subgraphs, but rather\n            // just copy the merged definition from the interface.\n            const implemField = type.addField(itfField.name, itfField.type);\n            // Cases could probably be made for both either copying or not copying the description\n            // and applied directives from the interface field, but we copy both here as it feels\n            // more likely to be what user expects (assume they care either way). It's unlikely\n            // this will be an issue to anyone, but we can always make this behaviour tunable\n            // \"somehow\" later if the need arise. Feels highly overkill at this point though.\n            implemField.description = itfField.description;\n            this.copyNonJoinAppliedDirectives(itfField, implemField);\n            for (const itfArg of itfField.arguments()) {\n              const implemArg = implemField.addArgument(itfArg.name, itfArg.type, itfArg.defaultValue);\n              implemArg.description = itfArg.description;\n              this.copyNonJoinAppliedDirectives(itfArg, implemArg);\n            }\n\n            // We add a special @join__field for those added field with no `graph` target. This\n            // clarify to the later extraction process that this particular field doesn't come\n            // from any particular subgraph (it comes indirectly from an @interfaceObject type,\n            // but it's very much indirect so ...).\n            implemField.applyDirective(this.joinSpec.fieldDirective(this.merged), { graph: undefined });\n\n\n            // If we had to add a field here, it means that, for this particular implementation, the\n            // field is only provided through the @interfaceObject. But because the field wasn't\n            // merged, it also mean we haven't validated field sharing for that field, and we could\n            // have field sharing concerns if the field is provided by multiple @interfaceObject.\n            // So we validate field sharing now (it's convenient to wait until now as now that\n            // the field is part of the supergraph, we can just call `validateFieldSharing` with\n            // all sources `undefined` and it wil still find and check the `@interfaceObject`).\n            const sources: Sources<FieldDefinition<ObjectType>> = new Map;\n            for (let i = 0; i < this.names.length; ++i) {\n              // We don't usually want undefined sources in our Sources maps,\n              // but both validateFieldSharing and FieldMergeContext need the\n              // undefined sources to be registered in order to do their work.\n              sources.set(i, undefined);\n            }\n            this.validateFieldSharing(sources, implemField, new FieldMergeContext(sources));\n          }\n        }\n      }\n    }\n  }\n\n  /**\n   * This method is used to copy \"user provided\" applied directives from\n   * interface fields to an implementing object field when those fields are only\n   * provided by `@interfaceObject`s.\n   *\n   * However, we shouldn't copy the `join` spec directive as those are for the\n   * interface field but are invalid for the implementation field. Also, we\n   * do explicitly compute access control directives for the implementing field\n   * based on the access control directives for the `@interfaceObject` fields.\n   */\n  private copyNonJoinAppliedDirectives(source: SchemaElement<any, any>, dest: SchemaElement<any, any>) {\n    // Note this function may take in the implementing object field, but it also\n    // may take in arguments to that field.\n    if (dest instanceof FieldDefinition) {\n      for (const { name, nameInSupergraph } of this.accessControlDirectivesInSupergraph) {\n        let additionalSources = this.accessControlAdditionalSources().get(`${dest.coordinate}_${name}`);\n        if (!additionalSources) {\n          additionalSources = [];\n        }\n        // WARNING: In order to propagate access control directive requirements, we are hijacking existing merge\n        // directive logic by providing \"additional sources\" from their interfaces/implementations. This means\n        // that their corresponding subgraphIndex will be incorrect and shouldn't be used/relied on when merging\n        // access control directives.\n        if (additionalSources.length > 0) {\n          this.mergeAppliedDirective(\n            nameInSupergraph,\n            sourcesFromArray(additionalSources),\n            dest,\n          );\n        }\n      }\n    }\n\n    source.appliedDirectives.forEach((d) => {\n      if (this.joinSpec.isSpecDirective(d.definition!)) {\n        return;\n      }\n      if (this.accessControlDirectivesInSupergraph.some(\n        ({ nameInSupergraph }) => d.name === nameInSupergraph\n      )) {\n        return;\n      }\n      dest.applyDirective(d.name, {...d.arguments()});\n    });\n  }\n\n  private isFieldProvidedByAnInterfaceObject(fieldName: string, interfaceName: string): boolean {\n    return this.subgraphs.values().some((s) => {\n      const meta = s.metadata();\n      const type = s.schema.type(interfaceName);\n      const field = type && meta.isInterfaceObjectType(type) ? type.field(fieldName) : undefined;\n      return field && !meta.isFieldExternal(field);\n    });\n  }\n\n  private addFieldsShallow<T extends ObjectType | InterfaceType | InputObjectType>(\n    sources: Sources<T>,\n    dest: T,\n  ) {\n    type FieldDef = FieldDefinition<ObjectType | InterfaceType> | InputFieldDefinition;\n    const added = new Map<FieldDef, Sources<FieldDef>>();\n    const fieldsToAdd = new Map<number, Set<FieldDef | undefined>>();\n    function fieldSet(sourceIndex: number): Set<FieldDef | undefined> {\n      let set = fieldsToAdd.get(sourceIndex);\n      if (!set) fieldsToAdd.set(sourceIndex, set = new Set);\n      return set;\n    }\n\n    const extraSources: Sources<FieldDef> = new Map;\n\n    sources.forEach((source, sourceIndex) => {\n      const schema = this.subgraphsSchema[sourceIndex];\n      const fields = fieldSet(sourceIndex);\n\n      // If a source is undefined, it may still have an @interfaceObject object\n      // for one of the interfaces implemented by the object in question.\n      if (isObjectType(dest) || isInterfaceType(dest)) {\n        for (const itf of dest.interfaces()) {\n          const itfType = schema.type(itf.name);\n          const subgraph = this.subgraphs.get(this.names[sourceIndex]);\n          if (\n            itfType &&\n            isObjectType(itfType) &&\n            subgraph?.metadata().isInterfaceObjectType(itfType)\n          ) {\n            // This marks the subgraph as having a relevant @interfaceObject,\n            // even though we do not actively add the itfType.fields().\n            extraSources.set(sourceIndex, undefined);\n          }\n        }\n      }\n\n      if (source) {\n        for (const field of source.fields()) {\n          fields.add(field);\n        }\n      }\n\n      if (schema.type(dest.name)) {\n        // Our needsJoinField logic adds @join__field if any subgraphs define\n        // the parent type containing the field but not the field itself. In\n        // those cases, for each field we add, we need to add undefined entries\n        // for each subgraph that defines the parent object/interface/input\n        // type. We do this by populating extraSources with undefined entries\n        // here, then create each new Sources map from that starting set (see\n        // `new Map(extraSources)` below).\n        extraSources.set(sourceIndex, undefined);\n      }\n    });\n\n    fieldsToAdd.forEach((fieldSet, sourceIndex) => {\n      fieldSet.forEach(field => {\n        if (field && isMergedField(field)) {\n          const destField = dest.field(field.name) || dest.addField(field.name);\n          let sources = added.get(destField)!;\n          if (!sources) {\n            sources = new Map(extraSources);\n            added.set(destField, sources);\n          }\n          sources.set(sourceIndex, field);\n        }\n      });\n    });\n\n    // Although Map<FieldDef, Sources<FieldDef>> makes the work of this method\n    // easier, we return a more specific type that depends conditionally on T,\n    // so (for example) callers receive a Map<FieldDefinition<ObjectType>,\n    // Sources<FieldDefinition<ObjectType>> when T extends ObjectType, rather\n    // than the more generic Map<FieldDef, Source<FieldDef>>.\n    type FieldDefExact = T extends ObjectType | InterfaceType\n      ? FieldDefinition<T>\n      : T extends InputObjectType ? InputFieldDefinition : never;\n    return added as Map<FieldDefExact, Sources<FieldDefExact>>;\n  }\n\n  private isExternal(sourceIdx: number, field: FieldDefinition<any> | InputFieldDefinition) {\n    return this.metadata(sourceIdx).isFieldExternal(field);\n  }\n\n  private isFullyExternal(sourceIdx: number, field: FieldDefinition<any> | InputFieldDefinition) {\n    return this.metadata(sourceIdx).isFieldFullyExternal(field);\n  }\n\n  private areAllFieldsExternal(sourceIdx: number, type: ObjectType | InterfaceType): boolean {\n    return type.fields().every(f => this.isExternal(sourceIdx, f));\n  }\n\n  private validateAndFilterExternal(sources: Sources<FieldDefinition<any>>): Sources<FieldDefinition<any>> {\n    const filtered: Sources<FieldDefinition<any>> = new Map;\n    for (const [i, source] of sources.entries()) {\n      // If the source doesn't have the field or it is not external, we mirror the input\n      if (!source || !this.isExternal(i, source)) {\n        filtered.set(i, source);\n      } else {\n        // Otherwise, we filter out the source, but also \"validate\" it.\n        filtered.set(i, undefined);\n\n        // We don't allow \"merged\" directives on external fields because as far as merging goes, external fields don't really\n        // exists and allowing \"merged\" directives on them is dodgy. To take examples, having a `@deprecated` or `@tag` on\n        // an external feels unclear semantically: should it deprecate/tag the field? Essentially we're saying that \"no it\n        // shouldn't\" and so it's clearer to reject it.\n        // Note that if we change our mind on this semantic and wanted directives on external to propagate, then we'll also\n        // need to update the merging of fields since external fields are filtered out (by this very method).\n        for (const directive of source.appliedDirectives) {\n          if (this.isMergedDirective(source.name, directive)) {\n            // Contrarily to most of the errors during merging that \"merge\" errors for related elements, we're logging one\n            // error for every application here. But this is because there error is somewhat subgraph specific and is\n            // unlikely to span multiple subgraphs. In fact, we could almost have thrown this error during subgraph validation\n            // if this wasn't for the fact that it is only thrown for directives being merged and so is more logical to\n            // be thrown only when merging.\n            this.errors.push(ERRORS.MERGED_DIRECTIVE_APPLICATION_ON_EXTERNAL.err(\n              `[${this.names[i]}] Cannot apply merged directive ${directive} to external field \"${source.coordinate}\"`,\n              { nodes: directive.sourceAST },\n            ));\n          }\n        }\n      }\n    }\n    return filtered;\n  }\n\n  private hasExternal(sources: Sources<FieldDefinition<any>>): boolean {\n    for (const [i, source] of sources.entries()) {\n      if (source && this.isExternal(i, source)) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  private isShareable(sourceIdx: number, field: FieldDefinition<any>): boolean {\n    return this.metadata(sourceIdx).isFieldShareable(field);\n  }\n\n  private getOverrideDirective(sourceIdx: number, field: FieldDefinition<any>): Directive<any, OverrideArgs> | undefined {\n    // Check the directive on the field, then on the enclosing type.\n    const metadata = this.metadata(sourceIdx);\n    const overrideDirective = metadata.isFed2Schema() ? metadata.overrideDirective() : undefined;\n    const allFieldOverrides = overrideDirective ? field.appliedDirectivesOf(overrideDirective) : [];\n    return allFieldOverrides[0]; // if array is empty, will return undefined\n  }\n\n  private overrideConflictsWithOtherDirective({\n    idx,\n    field,\n    subgraphName,\n    fromIdx,\n    fromField,\n  }: {\n    idx: number;\n    field: FieldDefinition<any> | undefined;\n    subgraphName: string;\n    fromIdx: number;\n    fromField: FieldDefinition<any> | undefined;\n  }): { result: boolean, conflictingDirective?: DirectiveDefinition, subgraph?: string } {\n    const fromMetadata = this.metadata(fromIdx);\n    for (const directive of [fromMetadata.requiresDirective(), fromMetadata.providesDirective()]) {\n      if (fromField?.hasAppliedDirective(directive)) {\n         return {\n           result: true,\n           conflictingDirective: directive,\n           subgraph: this.names[fromIdx],\n         };\n       }\n    }\n    if (field && this.isExternal(idx, field)) {\n      return {\n        result: true,\n        conflictingDirective: fromMetadata.externalDirective(),\n        subgraph: subgraphName,\n      };\n    }\n    return { result: false };\n  }\n\n  /**\n   * Validates whether or not the use of the @override directive is correct.\n   * return value is a list of fields that has been filtered to ignore overridden fields\n   */\n  private validateOverride(sources: Sources<FieldDefinition<any>>, dest: FieldDefinition<any>): FieldMergeContext {\n    const result = new FieldMergeContext(sources);\n    if (!this.fieldsWithOverride.has(dest.coordinate)) {\n      return result;\n    }\n\n    // For any field, we can't have more than one @override directive\n    type MappedValue = {\n      idx: number,\n      name: string,\n      isInterfaceField?: boolean,\n      isInterfaceObject?: boolean,\n      interfaceObjectAbstractingFields?: FieldDefinition<any>[],\n      overrideDirective?: Directive<FieldDefinition<any>, OverrideArgs>,\n    };\n\n    type ReduceResultType = {\n      subgraphsWithOverride: string[],\n      subgraphMap: { [key: string]: MappedValue },\n    };\n\n    // convert sources to a map so we don't have to keep scanning through the array to find a source\n    const mapped = mapSources(sources, (source, idx) => {\n      if (!source) {\n        // While the subgraph may not have the field directly, it could have \"stand-in\" for that field\n        // through @interfaceObject, and it is those stand-ins that would be effectively overridden.\n        const interfaceObjectAbstractingFields = this.fieldsInSourceIfAbstractedByInterfaceObject(dest, idx);\n        if (interfaceObjectAbstractingFields.length > 0) {\n          return {\n            idx,\n            name: this.names[idx],\n            interfaceObjectAbstractingFields,\n          };\n        }\n\n        return undefined;\n      }\n\n      return {\n        idx,\n        name: this.names[idx],\n        isInterfaceField: isInterfaceType(source.parent),\n        isInterfaceObject: this.metadata(idx).isInterfaceObjectType(source.parent),\n        overrideDirective: this.getOverrideDirective(idx, source),\n      };\n    });\n\n    const { subgraphsWithOverride, subgraphMap } = Array.from(\n      mapped.values()\n    ).reduce((acc: ReduceResultType, elem) => {\n      if (elem !== undefined) {\n        acc.subgraphMap[elem.name] = elem;\n        if (elem.overrideDirective !== undefined) {\n          acc.subgraphsWithOverride.push(elem.name);\n        }\n      }\n      return acc;\n    }, { subgraphsWithOverride: [], subgraphMap: {} });\n\n    // for each subgraph that has an @override directive, check to see if any errors or hints should be surfaced\n    subgraphsWithOverride.forEach((subgraphName) => {\n      const { overrideDirective, idx, isInterfaceObject, isInterfaceField } = subgraphMap[subgraphName];\n      if (!overrideDirective) return;\n\n      const overridingSubgraphASTNode = overrideDirective.sourceAST ? addSubgraphToASTNode(overrideDirective.sourceAST, subgraphName) : undefined;\n      if (isInterfaceField) {\n        this.errors.push(ERRORS.OVERRIDE_ON_INTERFACE.err(\n          `@override cannot be used on field \"${dest.coordinate}\" on subgraph \"${subgraphName}\": @override is not supported on interface type fields.`,\n          { nodes: overridingSubgraphASTNode }\n        ));\n        return;\n      }\n\n      if (isInterfaceObject) {\n        this.errors.push(ERRORS.OVERRIDE_COLLISION_WITH_ANOTHER_DIRECTIVE.err(\n          `@override is not yet supported on fields of @interfaceObject types: cannot be used on field \"${dest.coordinate}\" on subgraph \"${subgraphName}\".`,\n          { nodes: overridingSubgraphASTNode }\n        ));\n        return;\n      }\n\n      const sourceSubgraphName = overrideDirective.arguments().from;\n      if (!this.names.includes(sourceSubgraphName)) {\n        result.setOverrideWithUnknownTarget(idx);\n        const suggestions = suggestionList(sourceSubgraphName, this.names);\n        const extraMsg = didYouMean(suggestions);\n        this.hints.push(new CompositionHint(\n          HINTS.FROM_SUBGRAPH_DOES_NOT_EXIST,\n          `Source subgraph \"${sourceSubgraphName}\" for field \"${dest.coordinate}\" on subgraph \"${subgraphName}\" does not exist.${extraMsg}`,\n          dest,\n          overridingSubgraphASTNode,\n        ));\n      } else if (sourceSubgraphName === subgraphName) {\n        this.errors.push(ERRORS.OVERRIDE_FROM_SELF_ERROR.err(\n          `Source and destination subgraphs \"${sourceSubgraphName}\" are the same for overridden field \"${dest.coordinate}\"`,\n          { nodes: overrideDirective.sourceAST },\n        ));\n      } else if (subgraphsWithOverride.includes(sourceSubgraphName)) {\n        this.errors.push(ERRORS.OVERRIDE_SOURCE_HAS_OVERRIDE.err(\n          `Field \"${dest.coordinate}\" on subgraph \"${subgraphName}\" is also marked with directive @override in subgraph \"${sourceSubgraphName}\". Only one @override directive is allowed per field.`,\n          { nodes: sourceASTs(overrideDirective, subgraphMap[sourceSubgraphName].overrideDirective) }\n        ));\n      } else if (subgraphMap[sourceSubgraphName] === undefined) {\n        this.hints.push(new CompositionHint(\n          HINTS.OVERRIDE_DIRECTIVE_CAN_BE_REMOVED,\n          `Field \"${dest.coordinate}\" on subgraph \"${subgraphName}\" no longer exists in the from subgraph. The @override directive can be removed.`,\n          dest,\n          overridingSubgraphASTNode,\n        ));\n      } else {\n        // For now, we don't supporting overriding a field that is not truly in the source subgraph, but is instead abstracted by\n        // one or more @interfaceObject.\n        const { interfaceObjectAbstractingFields } = subgraphMap[sourceSubgraphName];\n        if (interfaceObjectAbstractingFields) {\n          const abstractingTypes = printTypes(interfaceObjectAbstractingFields.map((f) => f.parent));\n          this.errors.push(ERRORS.OVERRIDE_COLLISION_WITH_ANOTHER_DIRECTIVE.err(\n            `Invalid @override on field \"${dest.coordinate}\" of subgraph \"${subgraphName}\": source subgraph \"${sourceSubgraphName}\" does not have field \"${dest.coordinate}\" but abstract it in ${abstractingTypes} and overriding abstracted fields is not supported.`,\n            { nodes: sourceASTs(overrideDirective, subgraphMap[sourceSubgraphName].overrideDirective) }\n          ));\n          return;\n        }\n\n        // check to make sure that there is no conflicting @provides, @requires, or @external directives\n        const fromIdx = this.names.indexOf(sourceSubgraphName);\n        const fromField = sources.get(fromIdx);\n        const { result: hasIncompatible, conflictingDirective, subgraph } = this.overrideConflictsWithOtherDirective({\n          idx,\n          field: sources.get(idx),\n          subgraphName,\n          fromIdx: this.names.indexOf(sourceSubgraphName),\n          fromField: sources.get(fromIdx),\n        });\n        if (hasIncompatible) {\n          assert(conflictingDirective !== undefined, 'conflictingDirective should not be undefined');\n          this.errors.push(ERRORS.OVERRIDE_COLLISION_WITH_ANOTHER_DIRECTIVE.err(\n            `@override cannot be used on field \"${fromField?.coordinate}\" on subgraph \"${subgraphName}\" since \"${fromField?.coordinate}\" on \"${subgraph}\" is marked with directive \"@${conflictingDirective.name}\"`,\n            { nodes: sourceASTs(overrideDirective, conflictingDirective) }\n          ));\n        } else {\n          // if we get here, then the @override directive is valid\n          // if the field being overridden is used, then we need to add an @external directive\n          assert(fromField, 'fromField should not be undefined');\n          const overriddenSubgraphASTNode = fromField.sourceAST ? addSubgraphToASTNode(fromField.sourceAST, sourceSubgraphName) : undefined;\n          const overrideLabel = overrideDirective.arguments().label;\n          const overriddenFieldIsReferenced = !!this.metadata(fromIdx).isFieldUsed(fromField);\n          if (this.isExternal(fromIdx, fromField)) {\n            // The from field is explicitly marked external by the user (which means it is \"used\" and cannot be completely\n            // removed) so the @override can be removed.\n            this.hints.push(new CompositionHint(\n              HINTS.OVERRIDE_DIRECTIVE_CAN_BE_REMOVED,\n              `Field \"${dest.coordinate}\" on subgraph \"${subgraphName}\" is not resolved anymore by the from subgraph (it is marked \"@external\" in \"${sourceSubgraphName}\"). The @override directive can be removed.`,\n              dest,\n              overridingSubgraphASTNode,\n            ));\n          } else if (overriddenFieldIsReferenced) {\n            result.setUsedOverridden(fromIdx);\n            if (!overrideLabel) {\n              this.hints.push(new CompositionHint(\n                HINTS.OVERRIDDEN_FIELD_CAN_BE_REMOVED,\n                  `Field \"${dest.coordinate}\" on subgraph \"${sourceSubgraphName}\" is overridden. It is still used in some federation directive(s) (@key, @requires, and/or @provides) and/or to satisfy interface constraint(s), but consider marking it @external explicitly or removing it along with its references.`,\n                  dest,\n                  overriddenSubgraphASTNode,\n                )\n              );\n            }\n          } else {\n            result.setUnusedOverridden(fromIdx);\n            if (!overrideLabel) {\n              this.hints.push(new CompositionHint(\n                HINTS.OVERRIDDEN_FIELD_CAN_BE_REMOVED,\n                `Field \"${dest.coordinate}\" on subgraph \"${sourceSubgraphName}\" is overridden. Consider removing it.`,\n                dest,\n                overriddenSubgraphASTNode,\n              ));\n            }\n          }\n\n          // capture an override label if it exists\n          if (overrideLabel) {\n            const labelRegex = /^[a-zA-Z][a-zA-Z0-9_\\-:./]*$/;\n            // Enforce that the label matches the following pattern: percent(x)\n            // where x is a float between 0 and 100 with no more than 8 decimal places\n            const percentRegex = /^percent\\((\\d{1,2}(\\.\\d{1,8})?|100)\\)$/;\n            if (labelRegex.test(overrideLabel)) {\n              result.setOverrideLabel(idx, overrideLabel);\n              result.setOverrideLabel(fromIdx, overrideLabel);\n            } else if (percentRegex.test(overrideLabel)) {\n              const parts = percentRegex.exec(overrideLabel);\n              if (parts) {\n                const percent = parseFloat(parts[1]);\n                if (percent >= 0 && percent <= 100) {\n                  result.setOverrideLabel(idx, overrideLabel);\n                  result.setOverrideLabel(fromIdx, overrideLabel);\n                }\n              }\n            }\n\n            if (!result.overrideLabel(idx)) {\n              this.errors.push(ERRORS.OVERRIDE_LABEL_INVALID.err(\n                `Invalid @override label \"${overrideLabel}\" on field \"${dest.coordinate}\" on subgraph \"${subgraphName}\": labels must start with a letter and after that may contain alphanumerics, underscores, minuses, colons, periods, or slashes. Alternatively, labels may be of the form \"percent(x)\" where x is a float between 0-100 inclusive.`,\n                { nodes: overridingSubgraphASTNode }\n              ));\n            }\n\n            const message = overriddenFieldIsReferenced\n              ? `Field \"${dest.coordinate}\" on subgraph \"${sourceSubgraphName}\" is currently being migrated via progressive @override. It is still used in some federation directive(s) (@key, @requires, and/or @provides) and/or to satisfy interface constraint(s). Once the migration is complete, consider marking it @external explicitly or removing it along with its references.`\n              : `Field \"${dest.coordinate}\" is currently being migrated with progressive @override. Once the migration is complete, remove the field from subgraph \"${sourceSubgraphName}\".`;\n\n            this.hints.push(new CompositionHint(\n              HINTS.OVERRIDE_MIGRATION_IN_PROGRESS,\n              message,\n              dest,\n              overriddenSubgraphASTNode,\n            ));\n          }\n        }\n      }\n    });\n\n    return result;\n  }\n\n  /**\n   * Given a supergraph field `f` for an object type `T` and a given subgraph (identified by its index) where\n   * `T` is not defined, check if that subgraph defines one or more of the interface of `T` as @interfaceObject,\n   * and if so return any instance of `f` on those @interfaceObject.\n   */\n  private fieldsInSourceIfAbstractedByInterfaceObject(destField: FieldDefinition<any>, sourceIdx: number): FieldDefinition<any>[] {\n    const parentInSupergraph = destField.parent;\n    const schema = this.subgraphsSchema[sourceIdx];\n    if (!isObjectType(parentInSupergraph) || schema.type(parentInSupergraph.name)) {\n      return [];\n    }\n\n    return parentInSupergraph.interfaces().map((itfType) => {\n      if (!itfType.field(destField.name)) {\n        return undefined;\n      }\n      const typeInSchema = schema.type(itfType.name);\n      // Note that since the type is an interface in the supergraph, we can assume that\n      // if it is an object type in the subgraph, then it is an @interfaceObject.\n      if (!typeInSchema || !isObjectType(typeInSchema)) {\n        return undefined;\n      }\n      return typeInSchema.field(destField.name);\n    }).filter(isDefined);\n  }\n\n  private mergeField({\n    sources,\n    dest,\n    mergeContext = new FieldMergeContext(sources),\n  }: {\n    sources: Sources<FieldDefinition<any>>,\n    dest: FieldDefinition<any>,\n    mergeContext: FieldMergeContext,\n  }) {\n    let everySourceIsExternal = true;\n    for (const [i, s] of sources.entries()) {\n      if (s === undefined) {\n        everySourceIsExternal = everySourceIsExternal &&\n          this.fieldsInSourceIfAbstractedByInterfaceObject(dest, i)\n            .every((f) => this.isExternal(i, f));\n      } else {\n        everySourceIsExternal = everySourceIsExternal && this.isExternal(i, s);\n      }\n      if (!everySourceIsExternal) {\n        break;\n      }\n    }\n\n    if (everySourceIsExternal) {\n      const nodes: ASTNode[] = [];\n      const definingSubgraphs: string[] = [];\n      sources.forEach((source, i) => {\n        if (source) {\n          definingSubgraphs.push(this.names[i]);\n          if (source.sourceAST) {\n            nodes.push(source.sourceAST);\n          }\n          return;\n        }\n\n        const itfObjectFields = this.fieldsInSourceIfAbstractedByInterfaceObject(dest, i);\n        if (itfObjectFields.length === 0) {\n          return;\n        }\n\n        definingSubgraphs.push(\n          `${this.names[i]} (through @interaceObject ${printTypes(itfObjectFields.map((f) => f.parent))})`\n        );\n      });\n\n      this.errors.push(ERRORS.EXTERNAL_MISSING_ON_BASE.err(\n        `Field \"${dest.coordinate}\" is marked @external on all the subgraphs in which it is listed (${printSubgraphNames(definingSubgraphs)}).`,\n        { nodes }\n      ));\n\n      return;\n    }\n\n    const withoutExternal = this.validateAndFilterExternal(sources);\n\n    // Note that we don't truly merge externals: we don't want, for instance, a field that is non-nullable everywhere to appear nullable in the\n    // supergraph just because someone fat-fingered the type in an external definition. But after merging the non-external definitions, we\n    // validate the external ones are consistent.\n    this.mergeDescription(withoutExternal, dest);\n    this.recordFieldAppliedDirectivesToMerge(withoutExternal, dest);\n    this.addArgumentsShallow(withoutExternal, dest);\n    for (const destArg of dest.arguments()) {\n      const subgraphArgs = mapSources(withoutExternal, f => f?.argument(destArg.name));\n      this.mergeArgument(subgraphArgs, destArg);\n    }\n    // Note that due to @interfaceObject, it's possible that `withoutExternal` is \"empty\" (has no\n    // non-undefined at all) but to still get here. That is, we can have:\n    // ```\n    //   # First subgraph\n    //   interface I {\n    //     id: ID!\n    //     x: Int\n    //   }\n    //\n    //   type T implements I @key(fields: \"id\") {\n    //     id: ID!\n    //     x: Int @external\n    //     y: Int @requires(fields: \"x\")\n    //   }\n    // ```\n    // and\n    // ```\n    //   # Second subgraph\n    //   type I @interfaceObject @key(fields: \"id\") {\n    //     id: ID!\n    //     x: Int\n    //   }\n    // ```\n    // In that case, it is valid to mark `T.x` external because it is provided by\n    // another subgraph, the second one, through the interfaceObject object on I.\n    // But because the first subgraph is the only one to have `T` and `x` is\n    // external there, `withoutExternal` will be false.\n    //\n    // Anyway, we still need to merge a type in the supergraph, so in that case\n    // we use merge the external declarations directly.\n    const allTypesEqual = this.mergeTypeReference(\n      someSources(withoutExternal, isDefined) ? withoutExternal : sources,\n      dest,\n    );\n\n    if (this.hasExternal(sources)) {\n      this.validateExternalFields(sources, dest, allTypesEqual);\n    }\n    this.addJoinField({ sources, dest, allTypesEqual, mergeContext });\n    this.addJoinDirectiveDirectives(sources, dest);\n  }\n\n  private validateFieldSharing(sources: Sources<FieldDefinition<ObjectType | InterfaceType>>, dest: FieldDefinition<ObjectType | InterfaceType>, mergeContext: FieldMergeContext) {\n    const shareableSources: { subgraph: string, idx: number}[] = [];\n    const nonShareableSources: { subgraph: string, idx: number}[] = [];\n    const allResolving: { subgraph: string, field: FieldDefinition<any> }[] = [];\n\n    const categorizeField = (idx: number, subgraph: string, field: FieldDefinition<any>) => {\n      if (!this.isFullyExternal(idx, field)) {\n        allResolving.push({ subgraph, field });\n        if (this.isShareable(idx, field)) {\n          shareableSources.push({subgraph, idx});\n        } else {\n          nonShareableSources.push({subgraph, idx});\n        }\n      }\n    };\n\n    for (const [i, source] of sources.entries()) {\n      const subgraph = '\"' + this.names[i] + '\"';\n      if (!source) {\n        const itfObjectFields = this.fieldsInSourceIfAbstractedByInterfaceObject(dest, i);\n        // In theory, a type can implement multiple interfaces and all of them could be a @interfaceObject in\n        // the source and provide the field. If so, we want to consider each as a different source of the\n        // field.\n        itfObjectFields.forEach((field) => categorizeField(i, subgraph + ` (through @interfaceObject field \"${field.coordinate}\")`, field));\n        continue;\n      }\n\n      if (mergeContext.isUsedOverridden(i) || mergeContext.isUnusedOverridden(i)) {\n        continue;\n      }\n\n      categorizeField(i, subgraph, source);\n    }\n\n    if (nonShareableSources.length > 0 && (shareableSources.length > 0 || nonShareableSources.length > 1)) {\n      const printSubgraphs = (l: {subgraph: string}[]) => printHumanReadableList(\n        l.map(({subgraph}) => subgraph),\n        // When @interfaceObject is involved, the strings we print can be somewhat long, so we increase the cutoff size somewhat.\n        { prefix: 'subgraph', prefixPlural: 'subgraphs', cutoff_output_length: 500 }\n      );\n      const resolvingSubgraphs = printSubgraphs(allResolving);\n      const nonShareables = shareableSources.length > 0 ? printSubgraphs(nonShareableSources) : 'all of them';\n\n      // An easy-to-make error that can lead here is the mispelling of the `from` argument of an @override. Because in that case, the\n      // @override will essentially be ignored (we'll have logged a warning, but the error we're about to log will overshadow it) and\n      // the 2 field insteances will violate the sharing rules. But because in that case the error is ultimately with @override, it\n      // can be hard for user to understand why they get a shareability error, so we detect this case and offer an additional hint\n      // at what the problem might be in the error message (note that even if we do find an @override with a unknown target, we\n      // cannot be 100% sure this is the issue, because this could also be targeting a subgraph that has just been removed, in which\n      // case the shareable error is legit; so keep the shareabilty error with a strong hint is hopefully good enough in practice).\n      // Note: if there is multiple non-shareable fields with \"target-less overrides\", we only hint about one of them, because that's\n      // easier and almost surely good enough to bring the attention of the user to potential typo in @override usage.\n      const subgraphWithTargetlessOverride = nonShareableSources.find(({idx}) => mergeContext.hasOverrideWithUnknownTarget(idx));\n      let extraHint = '';\n      if (subgraphWithTargetlessOverride !== undefined) {\n        extraHint = ` (please note that \"${dest.coordinate}\" has an @override directive in ${subgraphWithTargetlessOverride.subgraph} that targets an unknown subgraph so this could be due to misspelling the @override(from:) argument)`;\n      }\n      this.errors.push(ERRORS.INVALID_FIELD_SHARING.err(\n        `Non-shareable field \"${dest.coordinate}\" is resolved from multiple subgraphs: it is resolved from ${resolvingSubgraphs} and defined as non-shareable in ${nonShareables}${extraHint}`,\n        { nodes: sourceASTs(...allResolving.map(({field}) => field)) },\n      ));\n    }\n  }\n\n  private validateExternalFields(sources: Sources<FieldDefinition<any>>, dest: FieldDefinition<any>, allTypesEqual: boolean) {\n    let hasInvalidTypes = false;\n    const invalidArgsPresence = new Set<string>();\n    const invalidArgsTypes = new Set<string>();\n    const invalidArgsDefaults = new Set<string>();\n    for (const [i, source] of sources.entries()) {\n      if (!source || !this.isExternal(i, source)) {\n        continue;\n      }\n      // To be valid, an external field must use the same type as the merged field (or \"at least\" a subtype).\n      if (!(sameType(dest.type!, source.type!) || (!allTypesEqual && this.isStrictSubtype(dest.type!, source.type!)))) {\n        hasInvalidTypes = true;\n      }\n\n      // For arguments, it should at least have all the arguments of the merged, and their type needs to be supertypes (contravariance).\n      // We also require the default is that of the supergraph (maybe we could relax that, but we should decide how we want\n      // to deal with field with arguments in @key, @provides, @requires first as this could impact it).\n      for (const destArg of dest.arguments()) {\n        const name = destArg.name;\n        const arg = source.argument(name);\n        if (!arg) {\n          invalidArgsPresence.add(name);\n          continue;\n        }\n        if (!sameType(destArg.type!, arg.type!) && !this.isStrictSubtype(arg.type!, destArg.type!)) {\n          invalidArgsTypes.add(name);\n        }\n        if (!valueEquals(destArg.defaultValue, arg.defaultValue)) {\n          invalidArgsDefaults.add(name);\n        }\n      }\n    }\n\n    if (hasInvalidTypes) {\n      this.mismatchReporter.reportMismatchError(\n        ERRORS.EXTERNAL_TYPE_MISMATCH,\n        `Type of field \"${dest.coordinate}\" is incompatible across subgraphs (where marked @external): it has `,\n        dest,\n        sources,\n        field => `type \"${field.type}\"`\n      );\n    }\n    for (const arg of invalidArgsPresence) {\n      const destArg = dest.argument(arg)!;\n      this.mismatchReporter.reportMismatchErrorWithSpecifics({\n        code: ERRORS.EXTERNAL_ARGUMENT_MISSING,\n        message: `Field \"${dest.coordinate}\" is missing argument \"${destArg.coordinate}\" in some subgraphs where it is marked @external: `,\n        mismatchedElement: destArg,\n        subgraphElements: this.argumentSources(sources, destArg),\n        mismatchAccessor: arg => arg ? `argument \"${arg.coordinate}\"` : undefined,\n        supergraphElementPrinter: (elt, subgraphs) => `${elt} is declared in ${subgraphs}`,\n        otherElementsPrinter: (_, subgraphs) => ` but not in ${subgraphs} (where \"${dest.coordinate}\" is @external).`,\n        includeMissingSources: true,\n      });\n    }\n    for (const arg of invalidArgsTypes) {\n      const destArg = dest.argument(arg)!;\n      this.mismatchReporter.reportMismatchError(\n        ERRORS.EXTERNAL_ARGUMENT_TYPE_MISMATCH,\n        `Type of argument \"${destArg.coordinate}\" is incompatible across subgraphs (where \"${dest.coordinate}\" is marked @external): it has `,\n        destArg,\n        this.argumentSources(sources, destArg),\n        arg => `type \"${arg.type}\"`\n      );\n    }\n    for (const arg of invalidArgsDefaults) {\n      const destArg = dest.argument(arg)!;\n      this.mismatchReporter.reportMismatchError(\n        ERRORS.EXTERNAL_ARGUMENT_DEFAULT_MISMATCH,\n        `Argument \"${destArg.coordinate}\" has incompatible defaults across subgraphs (where \"${dest.coordinate}\" is marked @external): it has `,\n        destArg,\n        this.argumentSources(sources, destArg),\n        arg => arg.defaultValue !== undefined ? `default value ${valueToString(arg.defaultValue, arg.type)}` : 'no default value'\n      );\n    }\n  }\n\n  private argumentSources(sources: Sources<FieldDefinition<any>>, destArg: ArgumentDefinition<FieldDefinition<any>>) {\n    const argSources: Sources<ArgumentDefinition<FieldDefinition<any>>> = new Map;\n    for (const [i, source] of sources.entries()) {\n      argSources.set(i, source?.argument(destArg.name));\n    }\n    return argSources;\n  }\n\n  private needsJoinField<T extends FieldDefinition<ObjectType | InterfaceType> | InputFieldDefinition>({\n    sources,\n    parentName,\n    allTypesEqual,\n    mergeContext,\n  }: {\n    sources: Sources<T>,\n    parentName: string,\n    allTypesEqual: boolean,\n    mergeContext: FieldMergeContext,\n  }): boolean {\n    // If not all the types are equal, then we need to put a join__field to preserve the proper type information.\n    if (!allTypesEqual) {\n      return true;\n    }\n    if (mergeContext.some(({ usedOverridden, overrideLabel }) => usedOverridden || !!overrideLabel)) {\n      return true;\n    }\n\n    for (const source of sources.values()) {\n      const coordinate = source?.coordinate;\n      if (coordinate && this.fieldsWithFromContext.has(coordinate)) {\n        return true;\n      }\n    }\n\n    // We can avoid the join__field if:\n    //   1) the field exists in all sources having the field parent type,\n    //   2) none of the field instance has a @requires or @provides.\n    //   3) none of the field is @external.\n    for (const [idx, source] of sources.entries()) {\n      const overridden = mergeContext.isUnusedOverridden(idx);\n      if (source && !overridden) {\n        const sourceMeta = this.subgraphs.values()[idx].metadata();\n        if (this.isExternal(idx, source)\n          || source.hasAppliedDirective(sourceMeta.providesDirective())\n          || source.hasAppliedDirective(sourceMeta.requiresDirective())\n        ) {\n          return true;\n        }\n      } else {\n        // This subgraph does not have the field, so if it has the field type, we need a join__field.\n        if (this.subgraphsSchema[idx].type(parentName)) {\n          return true;\n        }\n      }\n    }\n\n    return false;\n  }\n\n  private addJoinField<T extends FieldDefinition<ObjectType | InterfaceType> | InputFieldDefinition>(\n    {\n      sources,\n      dest,\n      allTypesEqual,\n      mergeContext,\n    }: {\n      sources: Sources<T>,\n      dest: T,\n      allTypesEqual: boolean,\n      mergeContext: FieldMergeContext,\n    }) {\n    if (!this.needsJoinField({\n      sources,\n      parentName: dest.parent.name,\n      allTypesEqual,\n      mergeContext,\n    })) {\n      return;\n    }\n    const joinFieldDirective = this.joinSpec.fieldDirective(this.merged);\n    for (const [idx, source] of sources.entries()) {\n      const usedOverridden = mergeContext.isUsedOverridden(idx);\n      const unusedOverridden = mergeContext.isUnusedOverridden(idx);\n      const overrideLabel = mergeContext.overrideLabel(idx);\n      if (!source || (unusedOverridden && !overrideLabel)) {\n        continue;\n      }\n\n      const fromContextDirective = this.subgraphs.values()[idx].metadata().fromContextDirective();\n\n      const contextArguments = (source.kind === 'FieldDefinition' ? source.arguments() : [])\n        .map((arg): {\n          context: string,\n          name: string,\n          type: string,\n          selection: string,\n        } | undefined => {\n          if (!isFederationDirectiveDefinedInSchema(fromContextDirective)) {\n            return undefined;\n          }\n          const appliedDirectives = arg.appliedDirectivesOf(fromContextDirective);\n          if (appliedDirectives.length === 0) {\n            return undefined;\n          }\n          assert(appliedDirectives.length === 1, 'There should be at most one @fromContext directive applied to an argument');\n          const directive = appliedDirectives[0];\n          const { context, selection } = parseContext(directive.arguments().field);\n          // these are validated in the subgraph validation phase\n          assert(context, 'Context should be defined');\n          assert(selection, 'Selection should be defined');\n          return {\n            context: `${this.subgraphs.values()[idx].name}__${context}`,\n            name: arg.name,\n            type: arg.type!.toString(),\n            selection,\n          };\n        })\n        .filter(isDefined);\n\n      const external = this.isExternal(idx, source);\n      const sourceMeta = this.subgraphs.values()[idx].metadata();\n      const name = this.joinSpecName(idx);\n      dest.applyDirective(joinFieldDirective, {\n        graph: name,\n        requires: this.getFieldSet(source, sourceMeta.requiresDirective()),\n        provides: this.getFieldSet(source, sourceMeta.providesDirective()),\n        override: source.appliedDirectivesOf(sourceMeta.overrideDirective()).pop()?.arguments()?.from,\n        type: allTypesEqual ? undefined : source.type?.toString(),\n        external: external ? true : undefined,\n        usedOverridden: usedOverridden ? true : undefined,\n        overrideLabel: mergeContext.overrideLabel(idx),\n        contextArguments: contextArguments.length > 0 ? contextArguments : undefined,\n      });\n    }\n  }\n  private getFieldSet(element: SchemaElement<any, any>, directive: DirectiveDefinition<{fields: string}>): string | undefined {\n    const applications = element.appliedDirectivesOf(directive);\n    assert(applications.length <= 1, () => `Found more than one application of ${directive} on ${element}`);\n    return applications.length === 0 ? undefined : applications[0].arguments().fields;\n  }\n\n  // Returns `true` if the type references were all completely equal and `false` if some subtyping happened (or\n  // if types were incompatible since an error is logged in this case but the method does not throw).\n  private mergeTypeReference<TType extends Type, TElement extends NamedSchemaElementWithType<TType, any, any, any>>(\n    sources: Sources<TElement>,\n    dest: TElement,\n    isInputPosition: boolean = false\n  ): boolean {\n    let destType: TType | undefined;\n    let hasSubtypes = false;\n    let hasIncompatible = false;\n    for (const source of sources.values()) {\n      if (!source) {\n        continue;\n      }\n      // Note that subtyping checks below relies on\n      const sourceType = source.type!;\n      if (!destType || sameType(destType, sourceType)) {\n        destType = sourceType;\n      } else if (this.isStrictSubtype(destType, sourceType)) {\n        hasSubtypes = true;\n        if (isInputPosition) {\n          destType = sourceType;\n        }\n      } else if (this.isStrictSubtype(sourceType, destType)) {\n        hasSubtypes = true;\n        if (!isInputPosition) {\n          destType = sourceType;\n        }\n      } else {\n        hasIncompatible = true;\n      }\n    }\n\n    assert(destType, () => `We should have found at least one subgraph with a type for ${dest.coordinate}`);\n    // Note that destType is direct reference to one of the subgraph, so we need to copy it into our merged schema.\n    dest.type = copyTypeReference(destType, this.merged) as TType;\n\n    const isArgument = dest instanceof ArgumentDefinition;\n    const elementKind: string = isArgument ? 'argument' : 'field';\n\n    const base = baseType(dest.type);\n    // Collecting enum usage for the sake of merging enums later.\n    if (isEnumType(base)) {\n      const existing = this.enumUsages.get(base.name);\n      const thisPosition = isInputPosition ? 'Input' : 'Output';\n      const position = existing && existing.position !== thisPosition ? 'Both' : thisPosition;\n      const examples = existing?.examples ?? {};\n      if (!examples[thisPosition]) {\n        let idx = -1;\n        for (const [i, source] of sources.entries()) {\n          if (source) {\n            idx = i;\n            break;\n          }\n        }\n        if (idx >= 0) {\n          const example = sources.get(idx)!;\n          examples[thisPosition] = {\n            coordinate: example.coordinate,\n            sourceAST: example.sourceAST ? addSubgraphToASTNode(example.sourceAST, this.names[idx]) : undefined,\n          };\n        }\n      }\n      this.enumUsages.set(base.name, { position, examples });\n    }\n\n    if (hasIncompatible) {\n      this.mismatchReporter.reportMismatchError(\n        isArgument ? ERRORS.ARGUMENT_TYPE_MISMATCH : ERRORS.FIELD_TYPE_MISMATCH,\n        `Type of ${elementKind} \"${dest.coordinate}\" is incompatible across subgraphs: it has `,\n        dest,\n        sources,\n        field => `type \"${field.type}\"`\n      );\n      return false;\n    } else if (hasSubtypes) {\n      // Note that we use the type `toString` representation as a way to group which subgraphs have the exact same type.\n      // Doing so is actually equivalent of checking `sameType` (more precisely, it is equivalent if we ignore the kind\n      // of named types, but if 2 subgraphs differs in kind for the same type name (say one has \"X\" be a scalar and the\n      // other an interface) we know we've already registered an error and the hint her won't matter).\n      this.mismatchReporter.reportMismatchHint({\n        code: isArgument ? HINTS.INCONSISTENT_BUT_COMPATIBLE_ARGUMENT_TYPE : HINTS.INCONSISTENT_BUT_COMPATIBLE_FIELD_TYPE,\n        message: `Type of ${elementKind} \"${dest.coordinate}\" is inconsistent but compatible across subgraphs: `,\n        supergraphElement: dest,\n        subgraphElements: sources,\n        elementToString: field => field.type!.toString(),\n        supergraphElementPrinter: (elt, subgraphs) => `will use type \"${elt}\" (from ${subgraphs}) in supergraph but \"${dest.coordinate}\" has `,\n        otherElementsPrinter: (elt, subgraphs) => `${isInputPosition ? 'supertype' : 'subtype'} \"${elt}\" in ${subgraphs}`\n      });\n      return false;\n    }\n    return true;\n  }\n\n  private isStrictSubtype(type: Type, maybeSubType: Type): boolean {\n    // To be as generic as possible, when we check if a type is a direct subtype of another (which happens if either\n    // the subtype is one of the member of an union type, or the subtype explicitly implements an interface), we want\n    // to use the union/interface definitions from the merged schema. This is why we have merged interface implementation\n    // relationships and unions first.\n    return isStrictSubtype(\n      type,\n      maybeSubType,\n      this.options.allowedFieldTypeMergingSubtypingRules,\n      (union, maybeMember) => (this.merged.type(union.name)! as UnionType).hasTypeMember(maybeMember.name),\n      (maybeImplementer, itf) => (this.merged.type(maybeImplementer.name)! as (ObjectType | InterfaceType)).implementsInterface(itf)\n    );\n  }\n\n  private addArgumentsShallow<T extends FieldDefinition<any> | DirectiveDefinition>(sources: Sources<T>, dest: T) {\n    const argNames = new Set<string>();\n    for (const source of sources.values()) {\n      if (!source) {\n        continue;\n      }\n      source.arguments().forEach((arg) => argNames.add(arg.name));\n    }\n\n    for (const argName of argNames) {\n      // We add the argument unconditionally even if we're going to remove it in\n      // some path. Done because this helps reusing our \"reportMismatchHint\" method\n      // in those cases.\n      const arg = dest.addArgument(argName);\n\n      // helper function to determine if an argument is contextual in a given subgraph\n      const isContextualArg = (index: number, arg: ArgumentDefinition<DirectiveDefinition<any>> | ArgumentDefinition<FieldDefinition<any>>) => {\n        const fromContextDirective = this.metadata(index).fromContextDirective();\n        return fromContextDirective && isFederationDirectiveDefinedInSchema(fromContextDirective) && arg.appliedDirectivesOf(fromContextDirective).length >= 1;\n      }\n\n      const isContextualMap = new Map<number, boolean>();\n      let sawContextualArgs = false;\n      sources.forEach((s, idx) => {\n        const arg = s?.argument(argName);\n        const isContextual = arg && isContextualArg(idx, arg) || false;\n        isContextualMap.set(idx, isContextual);\n        if (isContextual) {\n          sawContextualArgs = true;\n        }\n      });\n\n      if (sawContextualArgs) {\n        // if the argument is contextual in some subgraph, then it should also be contextual in other subgraphs,\n        // unless it is nullable. Also, we need to remove it from the supergraph\n        isContextualMap.forEach((isContextual, idx) => {\n          const argument = sources.get(idx)?.argument(argName);\n          const argType = argument?.type;\n          if (!isContextual && argument && argType && isNonNullType(argType) && argument.defaultValue === undefined) {\n            this.errors.push(ERRORS.CONTEXTUAL_ARGUMENT_NOT_CONTEXTUAL_IN_ALL_SUBGRAPHS.err(\n              `Argument \"${arg.coordinate}\" is contextual in at least one subgraph but in \"${argument.coordinate}\" it does not have @fromContext, is not nullable and has no default value.`,\n              { nodes: sourceASTs(sources.get(idx)?.argument(argName)) },\n            ));\n          }\n\n          if (!isContextual && argument && argType && (isNullableType(argType) || argument.defaultValue !== undefined)) {\n            // in this case, we want to issue a hint that the argument will not be present in the supergraph schema\n            this.mismatchReporter.pushHint(new CompositionHint(\n              HINTS.CONTEXTUAL_ARGUMENT_NOT_CONTEXTUAL_IN_ALL_SUBGRAPHS,\n              `Contextual argument \"${argument.coordinate}\" will not be included in the supergraph since it is contextual in at least one subgraph`,\n              undefined,\n            ));\n          }\n        });\n\n        arg.remove();\n        continue;\n      }\n\n      // If all the sources that have the field have the argument, we do merge it\n      // and we're good, but otherwise ...\n      if (someSources(sources, (s) => s && !s.argument(argName))) {\n        // ... we don't merge the argument: some subgraphs wouldn't know what\n        // to make of it and that would be dodgy at best. If the argument is\n        // optional in all sources, then we can compose properly and just issue a\n        // hint. But if it is mandatory, then we have to fail composition, otherwise\n        // the query planner would have no choice but to generate invalidate queries.\n        const nonOptionalSources = filterSources(\n          mapSources(sources, (s, i) => s && s.argument(argName)?.isRequired() ? this.names[i] : undefined),\n        );\n        if (nonOptionalSources.size > 0) {\n          const nonOptionalSubgraphs = printSubgraphNames(Array.from(nonOptionalSources.values()).filter(isDefined));\n          const missingSources = printSubgraphNames(Array.from(\n            mapSources(sources, (s, i) => s && !s.argument(argName) ? this.names[i] : undefined).values()\n          ).filter(isDefined));\n          this.errors.push(ERRORS.REQUIRED_ARGUMENT_MISSING_IN_SOME_SUBGRAPH.err(\n            `Argument \"${arg.coordinate}\" is required in some subgraphs but does not appear in all subgraphs: it is required in ${nonOptionalSubgraphs} but does not appear in ${missingSources}`,\n            { nodes: sourceASTs(...mapSources(sources, (s) => s?.argument(argName)).values()) },\n          ));\n        } else {\n          this.mismatchReporter.reportMismatchHint({\n            code: HINTS.INCONSISTENT_ARGUMENT_PRESENCE,\n            message: `Optional argument \"${arg.coordinate}\" will not be included in the supergraph as it does not appear in all subgraphs: `,\n            supergraphElement: arg,\n            subgraphElements: mapSources(sources, (s) => s ? s.argument(argName) : undefined),\n            elementToString: _ => 'yes',\n            supergraphElementPrinter: (_, subgraphs) => `it is defined in ${subgraphs}`,\n            otherElementsPrinter: (_, subgraphs) => ` but not in ${subgraphs}`,\n            includeMissingSources: true\n          });\n        }\n        // Note that we remove the element after the hint/error because we access it in the hint message generation.\n        arg.remove();\n      }\n    }\n  }\n\n  private mergeArgument(sources: Sources<ArgumentDefinition<any>>, dest: ArgumentDefinition<any>) {\n    this.mergeDescription(sources, dest);\n    this.recordAppliedDirectivesToMerge(sources, dest);\n    this.mergeTypeReference(sources, dest, true);\n    this.mergeDefaultValue(sources, dest, 'Argument');\n  }\n\n  private mergeDefaultValue<T extends ArgumentDefinition<any> | InputFieldDefinition>(sources: Sources<T>, dest: T, kind: string) {\n    let destDefault;\n    let hasSeenSource = false;\n    let isInconsistent = false;\n    let isIncompatible = false;\n    for (const source of sources.values()) {\n      if (!source) {\n        continue;\n      }\n      // Because default values are always in input/contra-variant positions, we use an intersection strategy. Namely,\n      // the result only has a default if _all_ have a default (which has to be the same, but we error if we found\n      // 2 different defaults no matter what). Essentially, an argument/input field can only be made optional\n      // in the supergraph API if it is optional in all subgraphs, or we may query a subgraph that expects the\n      // value to be provided when it isn't. Note that an alternative could be to use an union strategy instead\n      // but have the router/gateway fill in the default for subgraphs that don't know it, but that imply parsing\n      // all the subgraphs fetches and we probably don't want that.\n      const sourceDefault = source.defaultValue;\n      if (destDefault === undefined) {\n        // Note that we set destDefault even if we have seen a source before and maybe thus be inconsistent.\n        // We won't use that value later if we're inconsistent, but keeping it allows us to always error out\n        // if we any 2 incompatible defaults.\n        destDefault = sourceDefault;\n        // destDefault may be undefined either because we haven't seen any source (having the argument)\n        // or because we've seen one but that source had no default. In the later case (`hasSeenSource`),\n        // if the new source _has_ a default, then we're inconsistent.\n        if (hasSeenSource && sourceDefault !== undefined) {\n          isInconsistent = true;\n        }\n      } else if (!valueEquals(destDefault, sourceDefault)) {\n        isInconsistent = true;\n        // It's only incompatible if neither is undefined\n        if (sourceDefault !== undefined) {\n          isIncompatible = true;\n        }\n      }\n      hasSeenSource = true;\n    }\n    // Note that we set the default if isIncompatible mostly to help the building of the error message. But\n    // as we'll error out, it doesn't really matter.\n    if (!isInconsistent || isIncompatible) {\n      dest.defaultValue = destDefault;\n    }\n\n    if (isIncompatible) {\n      this.mismatchReporter.reportMismatchError(\n        kind === 'Argument' ? ERRORS.ARGUMENT_DEFAULT_MISMATCH : ERRORS.INPUT_FIELD_DEFAULT_MISMATCH,\n        `${kind} \"${dest.coordinate}\" has incompatible default values across subgraphs: it has `,\n        dest,\n        sources,\n        arg => arg.defaultValue !== undefined ? `default value ${valueToString(arg.defaultValue, arg.type)}` : 'no default value'\n      );\n    } else if (isInconsistent) {\n      this.mismatchReporter.reportMismatchHint({\n        code: HINTS.INCONSISTENT_DEFAULT_VALUE_PRESENCE,\n        message: `${kind} \"${dest.coordinate}\" has a default value in only some subgraphs: `,\n        supergraphElement: dest,\n        subgraphElements: sources,\n        elementToString: arg => arg.defaultValue !== undefined ? valueToString(arg.defaultValue, arg.type) : undefined,\n        supergraphElementPrinter: (_, subgraphs) => `will not use a default in the supergraph (there is no default in ${subgraphs}) but `,\n        otherElementsPrinter: (elt, subgraphs) => `\"${dest.coordinate}\" has default value ${elt} in ${subgraphs}`\n      });\n    }\n  }\n\n  private mergeInterface(sources: Sources<InterfaceType | ObjectType>, dest: InterfaceType) {\n    const hasKey = this.validateInterfaceKeys(sources, dest);\n    this.validateInterfaceObjects(sources, dest);\n\n    const added = this.addFieldsShallow(sources, dest);\n    added.forEach((subgraphFields, destField) => {\n      if (!hasKey) {\n        this.hintOnInconsistentValueTypeField(sources, dest, destField);\n      }\n      const mergeContext = this.validateOverride(subgraphFields, destField);\n      this.mergeField({\n        sources: subgraphFields,\n        dest: destField,\n        mergeContext,\n      });\n    });\n  }\n\n  // Returns whether the interface has a key (even a non-resolvable one) in any subgraph.\n  private validateInterfaceKeys(sources: Sources<InterfaceType | ObjectType>, dest: InterfaceType): boolean {\n    // Remark: it might be ok to filter @inaccessible types in `supergraphImplementations`, but this requires\n    // some more thinking (and I'm not even sure it makes a practical difference given the rules for validity\n    // of @inaccessible) and it will be backward compatible to filter them later, while the reverse wouldn't\n    // technically be, so we stay on the safe side.\n    const supergraphImplementations = dest.possibleRuntimeTypes();\n\n    // Validate that if a source defines a (resolvable) @key on an interface, then that subgraph defines\n    // all the implementations of that interface in the supergraph.\n    let hasKey = false;\n    for (const [idx, source] of sources.entries()) {\n      if (!source || !isInterfaceType(source)) {\n        continue;\n      }\n      const sourceMetadata = this.subgraphs.values()[idx].metadata();\n      const keys = source.appliedDirectivesOf(sourceMetadata.keyDirective());\n      hasKey ||= keys.length > 0;\n      const resolvableKey = keys.find((k) => k.arguments().resolvable !== false);\n      if (!resolvableKey) {\n        continue;\n      }\n\n      const implementationsInSubgraph = source.possibleRuntimeTypes();\n      if (implementationsInSubgraph.length < supergraphImplementations.length) {\n        const missingImplementations = supergraphImplementations.filter((superImpl) => !implementationsInSubgraph.some((subgImpl) => superImpl.name === subgImpl.name));\n        this.errors.push(addSubgraphToError(\n          ERRORS.INTERFACE_KEY_MISSING_IMPLEMENTATION_TYPE.err(\n            `Interface type \"${source.coordinate}\" has a resolvable key (${resolvableKey}) in subgraph \"${this.names[idx]}\" but that subgraph is missing some of the supergraph implementation types of \"${dest.coordinate}\". `\n            + `Subgraph \"${this.names[idx]}\" should define ${printTypes(missingImplementations)} (and have ${missingImplementations.length > 1 ? 'them' : 'it'} implement \"${source.coordinate}\").`,\n            { nodes: resolvableKey.sourceAST},\n          ),\n          this.names[idx],\n        ));\n      }\n    }\n    return hasKey;\n  }\n\n  private validateInterfaceObjects(sources: Sources<InterfaceType | ObjectType>, dest: InterfaceType) {\n    const supergraphImplementations = dest.possibleRuntimeTypes();\n\n    // Validates that if a source defines the interface as an @interfaceObject, then it doesn't define any\n    // of the implementations. We can discuss if there is ways to lift that limitation later, but an\n    // @interfaceObject already \"provides\" fields for all the underlying impelmentations, so also defining\n    // one those implementation would require additional care for shareability and more. This also feel\n    // like this can get easily be done by mistake and gets rather confusing, so it's worth some additional\n    // consideration before allowing.\n    for (const [idx, source] of sources.entries()) {\n      if (!source || !this.metadata(idx).isInterfaceObjectType(source)) {\n        continue;\n      }\n\n      const subgraphName = this.names[idx];\n      const schema = source.schema();\n      const definedImplementations = supergraphImplementations.map((i) => schema.type(i.name)).filter(isDefined);\n      if (definedImplementations.length > 0) {\n        this.errors.push(addSubgraphToError(\n          ERRORS.INTERFACE_OBJECT_USAGE_ERROR.err(\n            `Interface type \"${dest.coordinate}\" is defined as an @interfaceObject in subgraph \"${subgraphName}\" so that subgraph should not define any of the implementation types of \"${dest.coordinate}\", but it defines ${printTypes(definedImplementations)}`,\n            { nodes: sourceASTs(source, ...definedImplementations) },\n          ),\n          subgraphName,\n        ));\n      }\n    }\n  }\n\n  private mergeUnion(sources: Sources<UnionType>, dest: UnionType) {\n    for (const source of sources.values()) {\n      if (!source) {\n        continue;\n      }\n      for (const type of source.types()) {\n        if (!dest.hasTypeMember(type.name)) {\n          dest.addType(type.name);\n        }\n      }\n    }\n    for (const type of dest.types()) {\n      this.addJoinUnionMember(sources, dest, type);\n      this.hintOnInconsistentUnionMember(sources, dest, type.name);\n    }\n  }\n\n  private addJoinUnionMember(sources: Sources<UnionType>, dest: UnionType, member: ObjectType) {\n    const joinUnionMemberDirective = this.joinSpec.unionMemberDirective(this.merged);\n    // We should always be merging with the latest join spec, so this should exists, but well, in prior versions where\n    // the directive didn't existed, we simply did had any replacement so ...\n    if (!joinUnionMemberDirective) {\n      return;\n    }\n\n    for (const [idx, source] of sources.entries()) {\n      if (!source?.hasTypeMember(member.name)) {\n        continue;\n      }\n\n      const name = this.joinSpecName(idx);\n      dest.applyDirective(joinUnionMemberDirective, {\n        graph: name,\n        member: member.name,\n      });\n    }\n  }\n\n  private hintOnInconsistentUnionMember(\n    sources: Sources<UnionType>,\n    dest: UnionType,\n    memberName: string\n  ) {\n    for (const source of sources.values()) {\n      // As soon as we find a subgraph that has the type but not the member, we hint.\n      if (source && !source.hasTypeMember(memberName)) {\n        this.mismatchReporter.reportMismatchHint({\n          code: HINTS.INCONSISTENT_UNION_MEMBER,\n          message: `Union type \"${dest}\" includes member type \"${memberName}\" in some but not all defining subgraphs: `,\n          supergraphElement: dest,\n          subgraphElements: sources,\n          elementToString: type => type.hasTypeMember(memberName) ? 'yes' : 'no',\n          supergraphElementPrinter: (_, subgraphs) => `\"${memberName}\" is defined in ${subgraphs}`,\n          otherElementsPrinter: (_, subgraphs) => ` but not in ${subgraphs}`,\n        });\n        return;\n      }\n    }\n  }\n\n  private mergeEnum(sources: Sources<EnumType>, dest: EnumType) {\n    let usage = this.enumUsages.get(dest.name);\n    if (!usage) {\n      // If the enum is unused, we have a choice to make. We could skip the enum entirely (after all, exposing an unreferenced type mostly \"pollutes\" the supergraph API), but\n      // some evidence shows that many a user have such unused enums in federation 1 and having those removed from their API might be surprising. We could merge it as\n      // an \"input-only\" or as a \"input/ouput\" type, but the hints/errors generated in both those cases would be confusing in that case, and while we could amend them\n      // for this case, it would complicate things and doesn't feel like it would feel very justified. So we merge it as an \"output\" type, which is the least contraining\n      // option. We do raise an hint though so users can notice this.\n      usage = { position: 'Output', examples: {}};\n      this.hints.push(new CompositionHint(\n        HINTS.UNUSED_ENUM_TYPE,\n        `Enum type \"${dest}\" is defined but unused. It will be included in the supergraph with all the values appearing in any subgraph (\"as if\" it was only used as an output type).`,\n        dest\n      ));\n    }\n\n    for (const source of sources.values()) {\n      if (!source) {\n        continue;\n      }\n      for (const value of source.values) {\n        // Note that we add all the values we see as a simple way to know which values there is to consider. But some of those value may\n        // be removed later in `mergeEnumValue`\n        if (!dest.value(value.name)) {\n          dest.addValue(value.name);\n        }\n      }\n    }\n\n    for (const value of dest.values) {\n      this.mergeEnumValue(sources, dest, value, usage);\n    }\n\n    // We could be left with an enum type with no values, and that's invalid in graphQL\n    if (dest.values.length === 0) {\n      this.errors.push(ERRORS.EMPTY_MERGED_ENUM_TYPE.err(\n        `None of the values of enum type \"${dest}\" are defined consistently in all the subgraphs defining that type. As only values common to all subgraphs are merged, this would result in an empty type.`,\n        { nodes: sourceASTs(...sources.values()) },\n      ));\n    }\n  }\n\n  private mergeEnumValue(\n    sources: Sources<EnumType>,\n    dest: EnumType,\n    value: EnumValue,\n    { position, examples }: EnumTypeUsage,\n  ) {\n    // We merge directives (and description while at it) on the value even though we might remove it later in that function,\n    // but we do so because:\n    // 1. this will catch any problems merging the description/directives (which feels like a good thing).\n    // 2. it easier to see if the value is marked @inaccessible.\n    const valueSources = mapSources(sources, s => s?.value(value.name));\n    this.mergeDescription(valueSources, value);\n    this.recordAppliedDirectivesToMerge(valueSources, value);\n    this.addJoinEnumValue(valueSources, value);\n\n    const isInaccessible = this.inaccessibleDirectiveInSupergraph\n      && value.hasAppliedDirective(this.inaccessibleDirectiveInSupergraph);\n    // The merging strategy depends on the enum type usage:\n    //  - if it is _only_ used in position of Input type, we merge it with an \"intersection\" strategy (like other input types/things).\n    //  - if it is _only_ used in position of Output type, we merge it with an \"union\" strategy (like other output types/things).\n    //  - otherwise, it's used as both input and output and we can only merge it if it has the same values in all subgraphs.\n    // So in particular, the value will be in the supergraph only if it is either an \"output only\" enum, or if the value is in all subgraphs.\n    // Note that (like for input object fields), manually marking the value as @inaccessible let's use skips any check and add the value\n    // regardless of inconsistencies.\n    if (\n      !isInaccessible &&\n      position !== 'Output' &&\n      someSources(sources, (source) => source && !source.value(value.name))\n    ) {\n      // We have a source (subgraph) that _has_ the enum type but not that particular enum value. If we've in the \"both input and output usages\",\n      // that's where we have to fail. But if we're in the \"only input\" case, we simply don't merge that particular value and hint about it.\n      if (position === 'Both') {\n        const inputExample = examples.Input!;\n        const outputExample = examples.Output!;\n        this.mismatchReporter.reportMismatchErrorWithSpecifics({\n          code: ERRORS.ENUM_VALUE_MISMATCH,\n          message: `Enum type \"${dest}\" is used as both input type (for example, as type of \"${inputExample.coordinate}\") and output type (for example, as type of \"${outputExample.coordinate}\"), but value \"${value}\" is not defined in all the subgraphs defining \"${dest}\": `,\n          mismatchedElement: dest,\n          subgraphElements: sources,\n          mismatchAccessor: (type) => type?.value(value.name) ? 'yes' : 'no',\n          supergraphElementPrinter: (_, subgraphs) => `\"${value}\" is defined in ${subgraphs}`,\n          otherElementsPrinter: (_, subgraphs) => ` but not in ${subgraphs}`,\n          extraNodes: sourceASTs(inputExample, outputExample),\n        });\n        // We leave the value in the merged output in that case because:\n        // 1. it's harmless to do so; we have an error so we won't return a supergraph.\n        // 2. it avoids generating an additional \"enum type is empty\" error in `mergeEnum` if all the values are inconsistent.\n      } else {\n        this.mismatchReporter.reportMismatchHint({\n          code: HINTS.INCONSISTENT_ENUM_VALUE_FOR_INPUT_ENUM,\n          message: `Value \"${value}\" of enum type \"${dest}\" will not be part of the supergraph as it is not defined in all the subgraphs defining \"${dest}\": `,\n          supergraphElement: dest,\n          subgraphElements: sources,\n          targetedElement: value,\n          elementToString: (type) => type.value(value.name) ? 'yes' : 'no',\n          supergraphElementPrinter: (_, subgraphs) => `\"${value}\" is defined in ${subgraphs}`,\n          otherElementsPrinter: (_, subgraphs) => ` but not in ${subgraphs}`,\n        });\n        // We remove the value after the generation of the hint/errors because `reportMismatchHint` will show the message for the subgraphs that are \"like\" the supergraph\n        // first, and the message flows better if we say which subgraph defines the value first, so we want the value to still be present for the generation of the\n        // message.\n        value.remove();\n      }\n    } else if (position === 'Output') {\n      this.hintOnInconsistentOutputEnumValue(sources, dest, value);\n    }\n  }\n\n  private addJoinEnumValue(sources: Sources<EnumValue>, dest: EnumValue) {\n    const joinEnumValueDirective = this.joinSpec.enumValueDirective(this.merged);\n    // We should always be merging with the latest join spec, so this should exists, but well, in prior versions where\n    // the directive didn't existed, we simply did had any replacement so ...\n    if (!joinEnumValueDirective) {\n      return;\n    }\n\n    for (const [idx, source] of sources.entries()) {\n      if (!source) {\n        continue;\n      }\n\n      const name = this.joinSpecName(idx);\n      dest.applyDirective(joinEnumValueDirective, {\n        graph: name,\n      });\n    }\n  }\n\n  private hintOnInconsistentOutputEnumValue(\n    sources: Sources<EnumType>,\n    dest: EnumType,\n    value: EnumValue,\n  ) {\n    const valueName: string = value.name\n    for (const source of sources.values()) {\n      // As soon as we find a subgraph that has the type but not the member, we hint.\n      if (source && !source.value(valueName)) {\n        this.mismatchReporter.reportMismatchHint({\n          code: HINTS.INCONSISTENT_ENUM_VALUE_FOR_OUTPUT_ENUM,\n          message: `Value \"${valueName}\" of enum type \"${dest}\" has been added to the supergraph but is only defined in a subset of the subgraphs defining \"${dest}\": `,\n          supergraphElement: dest,\n          subgraphElements: sources,\n          targetedElement: value,\n          elementToString: type => type.value(valueName) ? 'yes' : 'no',\n          supergraphElementPrinter: (_, subgraphs) => `\"${valueName}\" is defined in ${subgraphs}`,\n          otherElementsPrinter: (_, subgraphs) => ` but not in ${subgraphs}`,\n        });\n        return;\n      }\n    }\n  }\n\n  private mergeInput(inputSources: Sources<InputObjectType>, dest: InputObjectType) {\n    // Like for other inputs, we add all the fields found in any subgraphs initially as a simple mean to have a complete list of\n    // field to iterate over, but we will remove those that are not in all subgraphs.\n    const added = this.addFieldsShallow(inputSources, dest);\n    added.forEach((subgraphFields, destField) => {\n      // We merge the details of the field first, even if we may remove it afterwards because 1) this ensure we always checks type\n      // compatibility between definitions and 2) we actually want to see if the result is marked inaccessible or not and it makes\n      // that easier.\n      this.mergeInputField(subgraphFields, destField);\n      const isInaccessible = this.inaccessibleDirectiveInSupergraph\n        && destField.hasAppliedDirective(this.inaccessibleDirectiveInSupergraph);\n      // Note that if the field is manually marked @inaccessible, we can always accept it to be inconsistent between subgraphs since\n      // it won't be exposed in the API, and we don't hint about it because we're just doing what the user is explicitely asking.\n      if (!isInaccessible && someSources(subgraphFields, field => !field)) {\n        // One of the subgraph has the input type but not that field. If the field is optional, we remove it for the supergraph\n        // and issue a hint. But if it is required, we have to error out.\n        const nonOptionalSources = filterSources(\n          mapSources(subgraphFields, (field, i) => field?.isRequired() ? this.names[i] : undefined),\n        );\n        if (nonOptionalSources.size > 0) {\n          const nonOptionalSubgraphs = printSubgraphNames(Array.from(nonOptionalSources.values()).filter(isDefined));\n          const missingSources = printSubgraphNames(Array.from(\n            mapSources(subgraphFields, (field, i) => !field ? this.names[i] : undefined).values()\n          ).filter(isDefined));\n          this.errors.push(ERRORS.REQUIRED_INPUT_FIELD_MISSING_IN_SOME_SUBGRAPH.err(\n            `Input object field \"${destField.coordinate}\" is required in some subgraphs but does not appear in all subgraphs: it is required in ${nonOptionalSubgraphs} but does not appear in ${missingSources}`,\n            { nodes: sourceASTs(...subgraphFields.values()) },\n          ));\n        } else {\n          this.mismatchReporter.reportMismatchHint({\n            code: HINTS.INCONSISTENT_INPUT_OBJECT_FIELD,\n            message: `Input object field \"${destField.name}\" will not be added to \"${dest}\" in the supergraph as it does not appear in all subgraphs: `,\n            supergraphElement: destField,\n            subgraphElements: subgraphFields,\n            elementToString: _ => 'yes',\n            // Note that the first callback is for element that are \"like the supergraph\" and we've pass `destField` which we havne't yet removed.\n            supergraphElementPrinter: (_, subgraphs) => `it is defined in ${subgraphs}`,\n            otherElementsPrinter: (_, subgraphs) => ` but not in ${subgraphs}`,\n            includeMissingSources: true\n          });\n        }\n        // Note that we remove the element after the hint/error because we access the parent in the hint message.\n        destField.remove();\n      }\n    });\n\n    // We could be left with an input type with no fields, and that's invalid in graphQL\n    if (!dest.hasFields()) {\n      this.errors.push(ERRORS.EMPTY_MERGED_INPUT_TYPE.err(\n        `None of the fields of input object type \"${dest}\" are consistently defined in all the subgraphs defining that type. As only fields common to all subgraphs are merged, this would result in an empty type.`,\n        { nodes: sourceASTs(...inputSources.values()) },\n      ));\n    }\n  }\n\n  private mergeInputField(sources: Sources<InputFieldDefinition>, dest: InputFieldDefinition) {\n    this.mergeDescription(sources, dest);\n    this.recordAppliedDirectivesToMerge(sources, dest);\n    const allTypesEqual = this.mergeTypeReference(sources, dest, true);\n    const mergeContext = new FieldMergeContext(sources);\n    this.addJoinField({ sources, dest, allTypesEqual, mergeContext });\n    this.mergeDefaultValue(sources, dest, 'Input field');\n  }\n\n  private mergeDirectiveDefinition(sources: Sources<DirectiveDefinition>, dest: DirectiveDefinition) {\n    // We have 2 behavior depending on the kind of directives:\n    // 1) for the few handpicked type system directives that we merge, we always want to keep\n    //   them (it's ok if a subgraph decided to not include the definition because that particular\n    //   subgraph didn't use the directive on its own definitions). For those, we essentially take\n    //   a \"union\" strategy.\n    // 2) for other directives, the ones we keep for their 'execution' locations, we instead\n    //   use an \"intersection\" strategy: we only keep directives that are defined everywhere.\n    //   The reason is that those directives may be used anywhere in user queries (those made\n    //   against the supergraph API), and hence can end up in queries to any subgraph, and as\n    //   a consequence all subgraphs need to be able to handle any application of the directive.\n    //   Which we can only guarantee if all the subgraphs know the directive, and that the directive\n    //   definition is the intersection of all definitions (meaning that if there divergence in\n    //   locations, we only expose locations that are common everywhere).\n    if (this.composeDirectiveManager.directiveExistsInSupergraph(dest.name)) {\n      this.mergeCustomCoreDirective(dest);\n    } else if (someSources(sources, (s, idx) => s && this.isMergedDirective(this.names[idx], s))) {\n      this.mergeExecutableDirectiveDefinition(sources, dest);\n    }\n  }\n\n  // Note: as far as directive definition goes, we currently only merge directive having execution location, and only for\n  // thos locations. Any type system directive definition that propagates to the supergraph (graphQL built-ins and `@tag`)\n  // is currently handled in an hard-coded way. This will change very soon however so keeping this code around to be\n  // re-enabled by a future commit.\n  //private mergeTypeSystemDirectiveDefinition(sources: (DirectiveDefinition | undefined)[], dest: DirectiveDefinition) {\n  //  this.addArgumentsShallow(sources, dest);\n  //  for (const destArg of dest.arguments()) {\n  //    const subgraphArgs = sources.map(f => f?.argument(destArg.name));\n  //    this.mergeArgument(subgraphArgs, destArg);\n  //  }\n\n  //  let repeatable: boolean | undefined = undefined;\n  //  let inconsistentRepeatable = false;\n  //  let locations: DirectiveLocation[] | undefined = undefined;\n  //  let inconsistentLocations = false;\n  //  for (const source of sources) {\n  //    if (!source) {\n  //      continue;\n  //    }\n  //    if (repeatable === undefined) {\n  //      repeatable = source.repeatable;\n  //    } else if (repeatable !== source.repeatable) {\n  //      inconsistentRepeatable = true;\n  //    }\n\n  //    const sourceLocations = this.extractLocations(source);\n  //    if (!locations) {\n  //      locations = sourceLocations;\n  //    } else {\n  //      if (!arrayEquals(locations, sourceLocations)) {\n  //        inconsistentLocations = true;\n  //      }\n  //      // This create duplicates, but `addLocations` below eliminate them.\n  //      sourceLocations.forEach(loc => {\n  //        if (!locations!.includes(loc)) {\n  //          locations!.push(loc);\n  //        }\n  //      });\n  //    }\n  //  }\n  //  dest.repeatable = repeatable!;\n  //  dest.addLocations(...locations!);\n\n  //  if (inconsistentRepeatable) {\n  //    this.mismatchReporter.reportMismatchHint(\n  //      HINTS.INCONSISTENT_TYPE_SYSTEM_DIRECTIVE_REPEATABLE,\n  //      `Type system directive \"${dest}\" is marked repeatable in the supergraph but it is inconsistently marked repeatable in subgraphs: `,\n  //      dest,\n  //      sources,\n  //      directive => directive.repeatable ? 'yes' : 'no',\n  //      // Note that the first callback is for element that are \"like the supergraph\". And the supergraph will be repeatable on inconsistencies.\n  //      (_, subgraphs) => `it is repeatable in ${subgraphs}`,\n  //      (_, subgraphs) => ` but not in ${subgraphs}`,\n  //    );\n  //  }\n  //  if (inconsistentLocations) {\n  //    this.mismatchReporter.reportMismatchHint(\n  //      HINTS.INCONSISTENT_TYPE_SYSTEM_DIRECTIVE_LOCATIONS,\n  //      `Type system directive \"${dest}\" has inconsistent locations across subgraphs `,\n  //      dest,\n  //      sources,\n  //      directive => locationString(this.extractLocations(directive)),\n  //      // Note that the first callback is for element that are \"like the supergraph\".\n  //      (locs, subgraphs) => `and will use ${locs} (union of all subgraphs) in the supergraph, but has: ${subgraphs ? `${locs} in ${subgraphs} and ` : ''}`,\n  //      (locs, subgraphs) => `${locs} in ${subgraphs}`,\n  //    );\n  //  }\n  //}\n\n  private mergeCustomCoreDirective(dest: DirectiveDefinition) {\n    const def = this.composeDirectiveManager.getLatestDirectiveDefinition(dest.name);\n    if (def) {\n      dest.repeatable = def.repeatable;\n      dest.description = def.description;\n      dest.addLocations(...def.locations);\n      this.addArgumentsShallow(sourcesFromArray([def]), dest);\n      for (const arg of def.arguments()) {\n        const destArg = dest.argument(arg.name);\n        assert(destArg, 'argument must exist on destination directive');\n        this.mergeArgument(sourcesFromArray([arg]), destArg);\n      }\n    }\n  }\n\n  private mergeExecutableDirectiveDefinition(sources: Sources<DirectiveDefinition>, dest: DirectiveDefinition) {\n    let repeatable: boolean | undefined = undefined;\n    let inconsistentRepeatable = false;\n    let locations: DirectiveLocation[] | undefined = undefined;\n    let inconsistentLocations = false;\n    for (const source of sources.values()) {\n      if (!source) {\n        // An executable directive could appear in any place of a query and thus get to any subgraph, so we cannot keep an\n        // executable directive unless it is in all subgraphs. We use an 'intersection' strategy.\n        const usages = dest.remove();\n        assert(usages.length === 0, () => `Found usages of executable directive ${dest}: ${usages}`);\n        this.mismatchReporter.reportMismatchHint({\n          code: HINTS.INCONSISTENT_EXECUTABLE_DIRECTIVE_PRESENCE,\n          message: `Executable directive \"${dest}\" will not be part of the supergraph as it does not appear in all subgraphs: `,\n          supergraphElement: dest,\n          subgraphElements: sources,\n          elementToString: _ => 'yes',\n          supergraphElementPrinter: (_, subgraphs) => `it is defined in ${subgraphs}`,\n          otherElementsPrinter: (_, subgraphs) => ` but not in ${subgraphs}`,\n          includeMissingSources: true,\n        });\n        return;\n      }\n\n      if (repeatable === undefined) {\n        repeatable = source.repeatable;\n      } else if (repeatable !== source.repeatable) {\n        inconsistentRepeatable = true;\n        // Again, we use an intersection strategy: we can let users repeat the directive on a query only if\n        // all subgraphs know it as repeatable.\n        repeatable = false;\n      }\n\n      const sourceLocations = this.extractExecutableLocations(source);\n      if (!locations) {\n        locations = sourceLocations;\n      } else {\n        if (!arrayEquals(locations, sourceLocations)) {\n          inconsistentLocations = true;\n        }\n        // Still an intersection: we can only allow locations that all subgraphs understand.\n        locations = locations.filter(loc => sourceLocations.includes(loc));\n        if (locations.length === 0) {\n          const usages = dest.remove();\n          assert(usages.length === 0, () => `Found usages of executable directive ${dest}: ${usages}`);\n          this.mismatchReporter.reportMismatchHint({\n            code: HINTS.NO_EXECUTABLE_DIRECTIVE_LOCATIONS_INTERSECTION,\n            message: `Executable directive \"${dest}\" has no location that is common to all subgraphs: `,\n            supergraphElement: dest,\n            subgraphElements: sources,\n            elementToString: directive => locationString(this.extractExecutableLocations(directive)),\n            // Note that the first callback is for element that are \"like the supergraph\" and only the subgraph will have no locations (the\n            // source that do not have the directive are not included).\n            supergraphElementPrinter: () => `it will not appear in the supergraph as there no intersection between `,\n            otherElementsPrinter: (locs, subgraphs) => `${locs} in ${subgraphs}`,\n          });\n          return;\n        }\n      }\n    }\n    dest.repeatable = repeatable!;\n    dest.addLocations(...locations!);\n\n    this.mergeDescription(sources, dest);\n\n    if (inconsistentRepeatable) {\n      this.mismatchReporter.reportMismatchHint({\n        code: HINTS.INCONSISTENT_EXECUTABLE_DIRECTIVE_REPEATABLE,\n        message: `Executable directive \"${dest}\" will not be marked repeatable in the supergraph as it is inconsistently marked repeatable in subgraphs: `,\n        supergraphElement: dest,\n        subgraphElements: sources,\n        elementToString: directive => directive.repeatable ? 'yes' : 'no',\n        supergraphElementPrinter: (_, subgraphs) => `it is not repeatable in ${subgraphs}`,\n        otherElementsPrinter: (_, subgraphs) => ` but is repeatable in ${subgraphs}`,\n      });\n    }\n    if (inconsistentLocations) {\n      this.mismatchReporter.reportMismatchHint({\n        code: HINTS.INCONSISTENT_EXECUTABLE_DIRECTIVE_LOCATIONS,\n        message: `Executable directive \"${dest}\" has inconsistent locations across subgraphs `,\n        supergraphElement: dest,\n        subgraphElements: sources,\n        elementToString: directive => locationString(this.extractExecutableLocations(directive)),\n        supergraphElementPrinter: (locs, subgraphs) => `and will use ${locs} (intersection of all subgraphs) in the supergraph, but has: ${subgraphs ? `${locs} in ${subgraphs} and ` : ''}`,\n        otherElementsPrinter: (locs, subgraphs) => `${locs} in ${subgraphs}`,\n      });\n    }\n\n    // Doing args last, mostly so we don't bother adding if the directive doesn't make it in.\n    this.addArgumentsShallow(sources, dest);\n    for (const destArg of dest.arguments()) {\n      const subgraphArgs = mapSources(sources, f => f?.argument(destArg.name));\n      this.mergeArgument(subgraphArgs, destArg);\n    }\n  }\n\n  private extractExecutableLocations(source: DirectiveDefinition): DirectiveLocation[] {\n    // We sort the locations so that the return list of locations essentially act like a set.\n    return this.filterExecutableDirectiveLocations(source).concat().sort();\n  }\n\n  private filterExecutableDirectiveLocations(source: DirectiveDefinition): readonly DirectiveLocation[] {\n    return source.locations.filter(loc => isExecutableDirectiveLocation(loc));\n  }\n\n  // In general, we want to merge applied directives after merging elements, the one exception\n  // is @inaccessible, which is necessary to exist in the supergraph for EnumValues to properly\n  // determine whether the fact that a value is both input / output will matter\n  private recordAppliedDirectivesToMerge(sources: Sources<SchemaElement<any, any>>, dest: SchemaElement<any, any>) {\n    const inaccessibleName = this.inaccessibleDirectiveInSupergraph?.name;\n    const names = this.gatherAppliedDirectiveNames(sources);\n\n    if (inaccessibleName && names.has(inaccessibleName)) {\n      this.mergeAppliedDirective(inaccessibleName, sources, dest);\n      names.delete(inaccessibleName);\n    }\n    this.appliedDirectivesToMerge.push({\n      names,\n      sources,\n      dest,\n    });\n  }\n\n  private recordTypeAppliedDirectivesToMerge(sources: Sources<SchemaElement<any, any>>, dest: SchemaElement<any, any>) {\n    const inaccessibleName = this.inaccessibleDirectiveInSupergraph?.name;\n    const names = this.gatherAppliedDirectiveNames(sources);\n\n    if (inaccessibleName && names.has(inaccessibleName)) {\n      this.mergeAppliedDirective(inaccessibleName, sources, dest);\n      names.delete(inaccessibleName);\n    }\n\n    if (dest instanceof InterfaceType) {\n      // we need to propagate access control from implementing types upward to the interface\n      for (const { name, nameInSupergraph } of this.accessControlDirectivesInSupergraph) {\n        let additionalSources = this.accessControlAdditionalSources().get(`${dest.coordinate}_${name}`);\n        if (!additionalSources) {\n          additionalSources = [];\n        }\n        // WARNING: In order to propagate access control directive requirements, we are hijacking existing merge\n        // directive logic by providing \"additional sources\" from their interfaces/implementations. This means\n        // that their corresponding subgraphIndex will be incorrect and shouldn't be used/relied on when merging\n        // access control directives.\n        if (names.has(nameInSupergraph) || additionalSources.length > 0) {\n          // record access control directive IF it is applied on the interface (currently not allowed)\n          // OR there are some implementations with access control on them\n          this.appliedDirectivesToMerge.push({\n            names: new Set([nameInSupergraph]),\n            sources: sourcesFromArray([...sources.values(), ...additionalSources]),\n            dest,\n          });\n        }\n        names.delete(nameInSupergraph);\n      }\n    }\n\n    this.appliedDirectivesToMerge.push({\n      names,\n      sources,\n      dest,\n    });\n  }\n\n  private recordFieldAppliedDirectivesToMerge(sources: Sources<FieldDefinition<any>>, dest: FieldDefinition<any>) {\n    const inaccessibleName = this.inaccessibleDirectiveInSupergraph?.name;\n    const names = this.gatherAppliedDirectiveNames(sources);\n\n    if (inaccessibleName && names.has(inaccessibleName)) {\n      this.mergeAppliedDirective(inaccessibleName, sources, dest);\n      names.delete(inaccessibleName);\n    }\n\n    for (const { name, nameInSupergraph } of this.accessControlDirectivesInSupergraph) {\n      // WARNING: In order to propagate access control directive requirements, we are hijacking existing merge\n      // directive logic by providing \"additional sources\" from their interfaces/implementations. This means\n      // that their corresponding subgraphIndex will be incorrect and shouldn't be used/relied on when merging\n      // access control directives.\n\n      // we need to propagate auth on fields\n      // - upwards from object types to interfaces\n      // - downwards from interface object to object types\n      let additionalSources = this.accessControlAdditionalSources().get(`${dest.coordinate}_${name}`);\n      if (!additionalSources) {\n        additionalSources = [];\n      }\n      if (names.has(nameInSupergraph) || additionalSources.length > 0) {\n        // record if access control applied directly OR has some additional sources\n        this.appliedDirectivesToMerge.push({\n          names: new Set([nameInSupergraph]),\n          sources: sourcesFromArray([...sources.values(), ...additionalSources]),\n          dest,\n        });\n      }\n      names.delete(nameInSupergraph);\n    }\n\n    this.appliedDirectivesToMerge.push({\n      names,\n      sources,\n      dest,\n    });\n  }\n\n\n  /**\n   * We need to propagate access control directives between interfaces and object types.\n   *  - propagate downwards from interface object fields to the implementing object type fields\n   *  - propagate upwards from object types/fields to their implemented interfaces\n   *\n   * This method returns a map of schema coordinates (+ access control directive names) and corresponding additional\n   * sources that should be included when merging directives.\n   *\n   * Key format is `<schemaCoordinate>_<directiveName>`, e.g.\n   *  - interface `I` and `@authenticated` directive will have a corresponding `I_authenticated` key that maps\n   *  to the list of objects that specify `@authenticated` (upwards propagation)\n   *  - interface `I`, field `f` and `@requiresScopes` directive will have a corresponding `I.f_requiresScopes` key\n   *  that maps to list of implementing object fields that specify `@requiresScopes` requirements (upwards propagation)\n   *  - type `T`, field `f` and `@policy` directive will have a corresponding `T.f_policy` key that maps to a\n   *  corresponding list of interface objects fields that specify `@policy` requirements (downwards propagation)\n   */\n  private accessControlAdditionalSources(): Map<string, Array<ObjectType | FieldDefinition<ObjectType>>> {\n    if (this.__accessControlAdditionalSources === undefined) {\n      const sourceMap = new Map();\n      // we first populate interface -> implementations and implementation -> interface maps\n      // we'll use this info to know where to propagate the requirements\n      const intfToImplMap: Map<string, Set<string>> = new Map();\n      const implToIntfMap: Map<string, Set<string>> = new Map();\n      for (const intf of this.merged.interfaceTypes()) {\n        const implNames = new Set(intf.possibleRuntimeTypes().map((obj) => obj.name));\n        intfToImplMap.set(intf.name, implNames);\n        for (const impl of implNames) {\n          let interfaces = implToIntfMap.get(impl);\n          if (!interfaces) {\n            interfaces = new Set();\n          }\n          interfaces.add(intf.name);\n          implToIntfMap.set(impl, interfaces);\n        }\n      }\n\n      this.subgraphs.values().forEach((subgraph) => {\n        const metadata = subgraph.metadata();\n        const accessControlDirectives = [\n          {\n            name: FederationDirectiveName.AUTHENTICATED,\n            directive: metadata.authenticatedDirective(),\n          },\n          {\n            name: FederationDirectiveName.REQUIRES_SCOPES,\n            directive: metadata.requiresScopesDirective(),\n          },\n          {\n            name: FederationDirectiveName.POLICY,\n            directive: metadata.policyDirective(),\n          },\n        ];\n        for (const { name, directive } of accessControlDirectives) {\n          for (const application of directive.applications()) {\n            const candidate = application.parent;\n            if (candidate instanceof ObjectType) {\n              // we will be propagating access control from objects up to the interfaces\n              // - record ALL implementations that define access control and implement an interface\n              const implementedInterfaces = implToIntfMap.get(candidate.name);\n              if (implementedInterfaces) {\n                for (const intf of implementedInterfaces) {\n                  // save implementation as additional source for impl\n                  const key = `${intf}_${name}`;\n                  this.recordAdditionalSource(sourceMap, key, candidate);\n                }\n              }\n            }\n            if (candidate instanceof FieldDefinition && !metadata.isFieldExternal(candidate)) {\n              const parent = candidate.parent;\n              if (parent instanceof ObjectType) {\n                const objectName = parent.name;\n                if (metadata.isInterfaceObjectType(parent)) {\n                  // we need to propagate field access control downwards from interface object fields to object fields\n                  const implementations = intfToImplMap.get(objectName);\n                  if (implementations) {\n                    const otherInterfaces: Set<string> = new Set();\n                    for (const impl of implementations) {\n                      const key = `${impl}.${candidate.name}_${name}`;\n                      this.recordAdditionalSource(sourceMap, key, candidate);\n\n                      const implementedInterfaces = implToIntfMap.get(impl);\n                      if (implementedInterfaces) {\n                        for (const intf of implementedInterfaces) {\n                          if (objectName == intf) {\n                            // skip current @interfaceObject\n                            continue;\n                          }\n                          otherInterfaces.add(intf);\n                        }\n                      }\n                    }\n                    // we now need to propagate field access control upwards from @interfaceObject fields to any\n                    // other interfaces implemented by the given type\n                    for (const intf of otherInterfaces) {\n                      const key = `${intf}.${candidate.name}_${name}`;\n                      this.recordAdditionalSource(sourceMap, key, candidate);\n                    }\n                  }\n                } else {\n                  // we need to propagate field access control upwards from object fields to the interface fields\n                  const implementedInterfaces = implToIntfMap.get(objectName);\n                  if (implementedInterfaces) {\n                    for (const intf of implementedInterfaces) {\n                      const key = `${intf}.${candidate.name}_${name}`;\n                      this.recordAdditionalSource(sourceMap, key, candidate);\n                    }\n                  }\n                }\n              }\n            }\n          }\n        }\n      });\n      this.__accessControlAdditionalSources = sourceMap;\n    }\n    return this.__accessControlAdditionalSources;\n  }\n\n  private recordAdditionalSource(\n      sourceMap: Map<string, Array<ObjectType | FieldDefinition<ObjectType>>>,\n      key: string,\n      source: ObjectType | FieldDefinition<ObjectType>\n  ) {\n    let additionalSources = sourceMap.get(key);\n    if (!additionalSources) {\n      additionalSources = [];\n    }\n    additionalSources.push(source);\n    sourceMap.set(key, additionalSources);\n  }\n\n  // to be called after elements are merged\n  private mergeAllAppliedDirectives() {\n    for (const { names, sources, dest } of this.appliedDirectivesToMerge) {\n      // There is some cases where we had to call the method that records directives to merged\n      // on a `dest` that ended up being removed from the ouptut (typically because we needed\n      // to known if that `dest` was @inaccessible before deciding if it should be kept or\n      // not). So check that the `dest` is still there (still \"attached\") and skip it entirely\n      // otherwise.\n      if (!dest.isAttached()) {\n        continue;\n      }\n      for (const name of names) {\n        this.mergeAppliedDirective(name, sources, dest);\n      }\n    }\n    this.appliedDirectivesToMerge = [];\n  }\n\n  private gatherAppliedDirectiveNames(sources: Sources<SchemaElement<any, any>>): Set<string> {\n    const names = new Set<string>();\n    sources.forEach((source, idx) => {\n      if (source) {\n        for (const directive of source.appliedDirectives) {\n          if (this.isMergedDirective(this.names[idx], directive)) {\n            names.add(directive.name);\n          }\n        }\n      }\n    });\n    return names;\n  }\n\n  private mergeAppliedDirective(name: string, sources: Sources<SchemaElement<any, any>>, dest: SchemaElement<any, any>) {\n    // TODO: we currently \"only\" merge together applications that have the exact same arguments (with defaults expanded however),\n    // but when an argument is an input object type, we should (?) ignore those fields that will not be included in the supergraph\n    // due the intersection merging of input types, otherwise the merged value may be invalid for the supergraph.\n    let perSource: { directives: Directive[], subgraphIndex: number}[] = [];\n\n    // WARNING: Access control directives (@authenticated, @requiresScopes, and @policy) need to be propagated\n    // - upwards from object types and fields to interface types and fields\n    // - downwards from interface object fields to implementing object type fields\n    // When merging access control directives, we hijack the existing merge mechanism by providing additional\n    // implementations/interfaces/fields as additional sources. This means that subgraphIndex SHOULD NOT be used\n    // for merging access control directives.\n    sources.forEach((source, index) => {\n      if (source) {\n        const directives: Directive[] = source.appliedDirectivesOf(name);\n        if (directives.length > 0) {\n          perSource.push({ directives, subgraphIndex: index });\n        }\n      }\n    });\n\n    if (perSource.length === 0) {\n      return;\n    }\n\n    const directiveInSupergraph = this.mergedFederationDirectiveInSupergraphByDirectiveName.get(name);\n\n    if (dest.schema().directive(name)?.repeatable) {\n      // For repeatable directives, we simply include each application found but with exact duplicates removed\n      while (perSource.length > 0) {\n        const directive = perSource[0].directives[0];\n        const subgraphIndex = perSource[0].subgraphIndex;\n\n        const transformedArgs = directiveInSupergraph && directiveInSupergraph.staticArgumentTransform && directiveInSupergraph.staticArgumentTransform(this.subgraphs.values()[subgraphIndex], directive.arguments(false));\n        dest.applyDirective(directive.name, transformedArgs ?? directive.arguments(false));\n        // We remove every instances of this particular application. That is we remove any other applicaiton with\n        // the same arguments. Note that when doing so, we include default values. This allows \"merging\" 2 applications\n        // when one rely on the default value while another don't but explicitely uses that exact default value.\n        perSource = perSource\n          .map(ds => ({ directives: ds.directives.filter(d => !this.sameDirectiveApplication(directive, d)), subgraphIndex: ds.subgraphIndex }))\n          .filter(ds => ds.directives.length);\n      }\n    } else {\n      // When non-repeatable, we use a similar strategy than for descriptions: we count the occurence of each _different_ application (different arguments)\n      // and if there is more than one option (that is, if not all subgraph have the same application), we use in the supergraph whichever application appeared\n      // in the most subgraph and warn that we have had to ignore some other applications (of course, if the directive has no arguments, this is moot and\n      // we'll never warn, but this is handled by the general code below.\n      const differentApplications: Directive[] = [];\n      const counts: number[] = [];\n      for (const { directives: source } of perSource) {\n        assert(source.length === 1, () => `Non-repeatable directive shouldn't have multiple application ${source} in a subgraph`)\n        const application = source[0];\n        const idx = differentApplications.findIndex((existing) => this.sameDirectiveApplication(existing, application));\n        if (idx < 0) {\n          differentApplications.push(application);\n          counts.push(1);\n        } else {\n          counts[idx]++;\n        }\n      }\n\n      assert(differentApplications.length > 0, 'We exited early when there was no applications, so we should have found one');\n      if (differentApplications.length === 1) {\n        dest.applyDirective(name, differentApplications[0].arguments(false));\n      } else {\n        const info = this.mergedFederationDirectiveInSupergraphByDirectiveName.get(name);\n        if (info && info.argumentsMerger) {\n          const mergedArguments = Object.create(null);\n          const applicationsArguments = differentApplications.map((a) => a.arguments(true));\n          for (const argDef of info.definition.arguments()) {\n            const values = applicationsArguments.map((args) => args[argDef.name]);\n            mergedArguments[argDef.name] = info.argumentsMerger.merge(argDef.name, values);\n          }\n          dest.applyDirective(name, mergedArguments);\n          this.mismatchReporter.pushHint(new CompositionHint(\n            HINTS.MERGED_NON_REPEATABLE_DIRECTIVE_ARGUMENTS,\n            `Directive @${name} is applied to \"${(dest as any)['coordinate'] ?? dest}\" in multiple subgraphs with different arguments. Merging strategies used by arguments: ${info.argumentsMerger}`,\n            undefined,\n          ));\n        } else {\n          const idx = indexOfMax(counts);\n          // We apply the directive to the destination first, we allows `reportMismatchHint` to find which application is used in\n          // the supergraph.\n          dest.applyDirective(name, differentApplications[idx].arguments(false));\n          this.mismatchReporter.reportMismatchHint({\n            code: HINTS.INCONSISTENT_NON_REPEATABLE_DIRECTIVE_ARGUMENTS,\n            message: `Non-repeatable directive @${name} is applied to \"${(dest as any)['coordinate'] ?? dest}\" in multiple subgraphs but with incompatible arguments. `,\n            supergraphElement: dest,\n            subgraphElements: sources,\n            elementToString: (elt) => {\n              const args = elt.appliedDirectivesOf(name).pop()?.arguments();\n              return args === undefined\n                ? undefined\n                : Object.values(args).length === 0 ? 'no arguments' : (`arguments ${valueToString(args)}`);\n            },\n            supergraphElementPrinter: (application, subgraphs) => `The supergraph will use ${application} (from ${subgraphs}), but found `,\n            otherElementsPrinter: (application, subgraphs) => `${application} in ${subgraphs}`,\n          });\n        }\n      }\n    }\n  }\n\n  private sameDirectiveApplication(application1: Directive, application2: Directive): boolean {\n    // Note that when comparing arguments, we include default values. This means that we consider it the same thing (as far as\n    // merging application goes) to rely on a default value or to pass that very exact value explicitely. In theory we\n    // could make the difference between the two, but this feel more surprising/convenient.\n    // TODO: we use valueEquals on the whole argument object rather than on individual values. This\n    // work just fine given how valueEquals is defined today, but we might want to clean this nonetheless.\n    return application1.name === application2.name\n      && valueEquals(application1.arguments(true), application2.arguments(true));\n  }\n\n  private mergeSchemaDefinition(sources: Sources<SchemaDefinition>, dest: SchemaDefinition) {\n    this.mergeDescription(sources, dest);\n    this.recordAppliedDirectivesToMerge(sources, dest);\n    // Before merging, we actually rename all the root types to their default name\n    // in subgraphs (see federation.ts, `prepareSubgraphsForFederation`), so this\n    // method should never report an error in practice as there should never be\n    // a name discrepancy. That said, it's easy enough to double-check this, which\n    // might at least help debugging case where we forgot to call\n    // `prepareSubgraphsForFederation`.\n    for (const rootKind of allSchemaRootKinds) {\n      let rootType: string | undefined;\n      let isIncompatible = false;\n      for (const source of sources.values()) {\n        if (!source) continue;\n        const sourceType = filteredRoot(source, rootKind);\n        if (!sourceType) continue;\n        if (rootType) {\n          isIncompatible = isIncompatible || rootType !== sourceType.name;\n        } else {\n          rootType = sourceType.name;\n        }\n      }\n      if (!rootType) {\n        continue;\n      }\n      dest.setRoot(rootKind, rootType);\n\n      // Because we rename all root type in subgraphs to their default names, we shouldn't ever have incompatibilities here.\n      assert(!isIncompatible, () => `Should not have incompatible root type for ${rootKind}`);\n    }\n    this.addJoinDirectiveDirectives(sources, dest);\n  }\n\n  private shouldUseJoinDirectiveForURL(url: FeatureUrl | undefined): boolean {\n    return Boolean(url && this.joinDirectiveFeatureDefinitionsByIdentity.has(url.identity));\n  }\n\n  // This method gets called at various points during the merge to allow\n  // subgraph directive applications to be reflected (unapplied) in the\n  // supergraph, using the @join__directive(graphs,name,args) directive.\n  private addJoinDirectiveDirectives(\n    sources: Sources<SchemaElement<any, any>>,\n    dest: SchemaElement<any, any>,\n  ) {\n    const joinsByDirectiveName: {\n      [directiveName: string]: Array<{\n        graphs: string[];\n        args: Record<string, any>;\n      }>\n    } = Object.create(null);\n    const linksToPersist = new Set<FeatureDefinition>();\n\n    for (const [idx, source] of sources.entries()) {\n      if (!source) continue;\n      const graph = this.joinSpecName(idx);\n      const coreFeaturesInSource = source.schema().coreFeatures;\n\n      for (const directive of source.appliedDirectives) {\n        const sourceFeature = coreFeaturesInSource?.sourceFeature(directive);\n        let shouldIncludeAsJoinDirective = false;\n        // `directiveNameForJoinDirective`: The directive name to use in the extracted subgraph\n        // schema. For Connectors (see `shouldUseJoinDirectiveForURL`), this is an import name (the\n        // same name imported in the supergraph and the extracted subgraphs). For others, this is\n        // the fully qualified directive name in the subgraph schema (re-assigned below).\n        let directiveNameForJoinDirective = directive.name;\n\n        if (sourceFeature && sourceFeature.feature.url.identity == linkIdentity) {\n          const { url } = directive.arguments();\n          const parsedUrl = FeatureUrl.maybeParse(url);\n          if (typeof url === 'string' && parsedUrl) {\n            shouldIncludeAsJoinDirective =\n              this.shouldUseJoinDirectiveForURL(parsedUrl);\n\n            if (shouldIncludeAsJoinDirective) {\n              const featureDefinition = coreFeatureDefinitionIfKnown(parsedUrl);\n              if (featureDefinition) {\n                linksToPersist.add(featureDefinition);\n              }\n            }\n          }\n\n        } else {\n          // See if directives from this feature URL should use the @join__directive.\n          shouldIncludeAsJoinDirective = this.shouldUseJoinDirectiveForURL(\n            sourceFeature?.feature.url\n          );\n          // See if this directive is one of the directives that should use the @join__directive.\n          if (\n            !shouldIncludeAsJoinDirective\n            && this.directivesUsingJoinDirective.has(directive.name)\n          ) {\n            shouldIncludeAsJoinDirective = true;\n            if (sourceFeature) {\n              // Compute the fully qualified directive name in the subgraph schema without using\n              // `import`, so it can be referenced in the extracted subgraph schema via\n              // `@join__directive`.\n              directiveNameForJoinDirective = CoreFeature.directiveNameInSchemaForCoreArguments(\n                sourceFeature.feature.url,\n                sourceFeature.feature.url.name,\n                [],\n                sourceFeature.nameInFeature,\n              );\n            }\n          }\n        }\n\n        if (shouldIncludeAsJoinDirective) {\n          const existingJoins = (joinsByDirectiveName[directiveNameForJoinDirective] ??= []);\n          let found = false;\n          for (const existingJoin of existingJoins) {\n            if (valueEquals(existingJoin.args, directive.arguments())) {\n              existingJoin.graphs.push(graph);\n              found = true;\n              break;\n            }\n          }\n          if (!found) {\n            existingJoins.push({\n              graphs: [graph],\n              args: directive.arguments(),\n            });\n          }\n        }\n      }\n    }\n\n    const linkDirective = this.linkSpec.coreDirective(this.merged);\n\n    // When persisting features as @link directives in the supergraph, we have\n    // to pick a single version. For these features, we've decided to always\n    // pick the latest known version, regardless of what version is use in\n    // subgraphs. This means that a composition version change will change the\n    // output, even if the subgraphs don't change, requiring a newer version of\n    // the router. We made this decision because these features are pre-1.0 and\n    // change more frequently than federation features.\n    //\n    // (The original feature version is still recorded in a @join__directive\n    // so we're not losing any information.)\n    const latestOrHighestLinkByIdentity = [...linksToPersist].reduce((map, link) => {\n      let latest = this.joinDirectiveFeatureDefinitionsByIdentity.get(link.identity)?.latest();\n\n      const existing = map.get(link.identity) ?? link;\n      if (!latest || existing?.version.gt(latest.version)) {\n        latest = existing;\n      }\n\n      map.set(link.identity, latest);\n      return map;\n    }, new Map<string, FeatureDefinition>());\n\n    for (const [_, link] of latestOrHighestLinkByIdentity) {\n      dest.applyDirective(linkDirective, {\n        url: link.toString(),\n        for: link.defaultCorePurpose,\n        feature: undefined\n      });\n    }\n\n    const joinDirective = this.joinSpec.directiveDirective(this.merged);\n    Object.keys(joinsByDirectiveName).forEach(directiveName => {\n      joinsByDirectiveName[directiveName].forEach(join => {\n        dest.applyDirective(joinDirective, {\n          graphs: join.graphs,\n          name: directiveName,\n          args: join.args,\n        });\n      });\n    });\n  }\n\n  private filterSubgraphs(predicate: (schema: Schema) => boolean): string[] {\n    return this.subgraphsSchema.map((s, i) => predicate(s) ? this.names[i] : undefined).filter(n => n !== undefined) as string[];\n  }\n\n  private subgraphByName(name: string): Schema {\n    return this.subgraphsSchema[this.names.indexOf(name)];\n  }\n\n  // TODO: the code here largely duplicate code that is in `internals-js/src/validate.ts`, except that when it detect an error, it\n  // provides an error in terms of subgraph inputs (rather than what is merge). We could maybe try to save some of that duplication.\n  private postMergeValidations() {\n    for (const type of this.merged.types()) {\n      if (!isObjectType(type) && !isInterfaceType(type)) {\n        continue;\n      }\n      for (const itf of type.interfaces()) {\n        for (const itfField of itf.fields()) {\n          const field = type.field(itfField.name);\n          if (!field) {\n            // This means that the type was defined (or at least implemented the interface) only in subgraphs where the interface didn't have\n            // that field.\n            const subgraphsWithTheField = this.filterSubgraphs(s => s.typeOfKind<InterfaceType>(itf.name, 'InterfaceType')?.field(itfField.name) !== undefined);\n            const subgraphsWithTypeImplementingItf = this.filterSubgraphs(s => {\n              const typeInSubgraph = s.type(type.name);\n              return typeInSubgraph !== undefined && (typeInSubgraph as ObjectType | InterfaceType).implementsInterface(itf.name);\n            });\n            this.errors.push(ERRORS.INTERFACE_FIELD_NO_IMPLEM.err(\n              `Interface field \"${itfField.coordinate}\" is declared in ${printSubgraphNames(subgraphsWithTheField)} but type \"${type}\", `\n                + `which implements \"${itf}\" only in ${printSubgraphNames(subgraphsWithTypeImplementingItf)} does not have field \"${itfField.name}\".`,\n              {\n                nodes: sourceASTs(\n                  ...subgraphsWithTheField.map(s => this.subgraphByName(s).typeOfKind<InterfaceType>(itf.name, 'InterfaceType')?.field(itfField.name)),\n                  ...subgraphsWithTypeImplementingItf.map(s => this.subgraphByName(s).type(type.name))\n                )\n              }\n            ));\n            continue;\n          }\n\n          // TODO: should we validate more? Can we have some invalid implementation of a field post-merging?\n        }\n      }\n    }\n\n    // We need to redo some validation for @requires after merge. The reason is that each subgraph validates that its own\n    // @requires are valid, but \"requirements\" are requested from _other_ subgraphs (by definition of @requires really),\n    // and there is a few situations (see details below) where a validity within the originated subgraph does not entail\n    // validity for all subgraph that would have to provide those \"requirements\".\n    // Long story short, we need to re-validate every @requires against the supergraph to guarantee it will always work\n    // at runtime.\n    for (const subgraph of this.subgraphs) {\n      for (const requiresApplication of subgraph.metadata().requiresDirective().applications()) {\n        const originalField = requiresApplication.parent as FieldDefinition<CompositeType>;\n        assert(originalField.kind === 'FieldDefinition', () => `Expected ${inspect(originalField)} to be a field`);\n        const mergedType = this.merged.type(originalField.parent.name);\n        // The type should exists: there is a few types we don't merge, but those are from specific core features and they shouldn't have @provides.\n        // In fact, if we were to not merge a type with a @provides, this would essentially mean that @provides cannot work, so worth catching\n        // the issue early if this ever happen for some reason. And of course, the type should be composite since it is in at least the one\n        // subgraph we're checking.\n        assert(mergedType && isCompositeType(mergedType), () => `Merged type ${originalField.parent.name} should exist should have field ${originalField.name}`)\n        assert(isCompositeType(mergedType), `${mergedType} should be a composite type but got ${mergedType.kind}`);\n        try {\n          parseFieldSetArgument({\n            parentType: mergedType,\n            directive: requiresApplication,\n            decorateValidationErrors: false,\n          });\n        } catch (e) {\n          if (!(e instanceof GraphQLError)) {\n            throw e;\n          }\n\n          // Providing a useful error message to the user here is tricky in the general case because what we checked is that\n          // a given subgraph @provides definition is invalid \"on the supergraph\", but the user seeing the error will not have\n          // the supergraph, so we need to express the error in terms of the subgraphs.\n          // But in practice, there is only a handful of cases that can trigger an error here. Indeed, at this point we know that\n          //  - the @require application is valid in its original subgraph.\n          //  - there was not merging errors (we don't call this whole method otherwise).\n          // This eliminate the risk of the error being due to some invalid syntax, of some subsection on a non-composite or missing\n          // on on a composite one (merging would have error), or of some unknown field in the selection (output types are merged\n          // by union, so any field that was in the subgraph will be in the supergraph), or even any error due to the types of fields\n          // involved (because the merged type is always a (non-strict) supertype of its counterpart in any subgraph, and anything\n          // that could be queried in a subtype can be queried on a supertype).\n          // As such, the only errors that we can have here are due to field arguments: because they are merged by intersection,\n          // it _is_ possible that something that is valid in a subgraph is not valid in the supergraph. And the only 2 things that\n          // can make such invalidity are:\n          //  1. an argument may not be in the supergraph: it is in the subgraph, but not in all the subgraphs having the field,\n          //    and the `@provides` passes a concrete value to that argument.\n          //  2. the type of an argument in the supergraph is a strict subtype the type that argument has in `subgraph` (the one\n          //    with the `@provides`) _and_ the `@provides` selection relies on the type difference. Now, argument types are input\n          //    types and the only subtyping difference input types is related to nullability (neither interfaces nor union are\n          //    input types in particular), so the only case this can happen is if a field `x` has some argument `a` type `A` in\n          //    `subgraph` but type `!A` with no default in the supergraph, _and_ the `@provides` queries that field `x` _without_\n          //    value for `a` (valid when `a` has type `A` but not with `!A` and no default).\n          // So to ensure we provide good error messages, we brute-force detecting those 2 possible cases and have a special\n          // treatment for each.\n          // Note that this detection is based on pattern-matching the error message, which is somewhat fragile, but because we\n          // only have 2 cases, we can easily cover them with unit tests, which means there is no practical risk of a message\n          // change breaking this code and being released undetected. A cleaner implementation would probably require having\n          // error codes and classes for all the graphqQL validations, but doing so cleanly is a fair amount of effort and probably\n          // no justified \"just for this particular case\".\n          const requireAST = requiresApplication.sourceAST ? [ addSubgraphToASTNode(requiresApplication.sourceAST, subgraph.name)] : [];\n\n          const that = this;\n          const registerError = (\n            arg: string,\n            field: string,\n            isIncompatible: (f: FieldDefinition<any>) => boolean,\n            makeMsg: (incompatibleSubgraphs: string) => string,\n          ) => {\n            const incompatibleSubgraphs = that.subgraphs.values().map((otherSubgraph) => {\n              if (otherSubgraph.name === subgraph.name) {\n                return undefined;\n              }\n              const fieldInOther = otherSubgraph.schema.elementByCoordinate(field);\n              const fieldIsIncompatible = fieldInOther\n                && fieldInOther instanceof FieldDefinition\n                && isIncompatible(fieldInOther);\n              return fieldIsIncompatible\n                ? {\n                  name: otherSubgraph.name,\n                  node: fieldInOther.sourceAST ? addSubgraphToASTNode(fieldInOther.sourceAST, otherSubgraph.name) : undefined,\n                }\n                : undefined;\n            }).filter(isDefined);\n            assert(incompatibleSubgraphs.length > 0, () => `Got error on ${arg} of ${field} but no \"incompatible\" subgraphs (error: ${e})`);\n            const nodes = requireAST.concat(incompatibleSubgraphs.map((s) => s.node).filter(isDefined));\n            const error = ERRORS.REQUIRES_INVALID_FIELDS.err(\n              `On field \"${originalField.coordinate}\", for ${requiresApplication}: ${makeMsg(printSubgraphNames(incompatibleSubgraphs.map((s) => s.name)))}`,\n              { nodes }\n            );\n            that.errors.push(addSubgraphToError(error, subgraph.name));\n          }\n\n          const unknownArgument = e.message.match(/Unknown argument \\\"(?<arg>[^\"]*)\\\" found in value: \\\"(?<field>[^\"]*)\\\" has no argument.*/);\n          if (unknownArgument) {\n            const arg = unknownArgument.groups?.arg!;\n            const field = unknownArgument.groups?.field!;\n            registerError(\n              arg,\n              field,\n              (f) => !f.argument(arg),\n              (incompatibleSubgraphs) => `cannot provide a value for argument \"${arg}\" of field \"${field}\" as argument \"${arg}\" is not defined in ${incompatibleSubgraphs}`,\n            );\n            continue;\n          }\n\n          const missingMandatory = e.message.match(/Missing mandatory value for argument \\\"(?<arg>[^\"]*)\\\" of field \\\"(?<field>[^\"]*)\\\".*/);\n          if (missingMandatory) {\n            const arg = missingMandatory.groups?.arg!;\n            const field = missingMandatory.groups?.field!;\n            registerError(\n              arg,\n              field,\n              (f) => !!f.argument(arg)?.isRequired(),\n              (incompatibleSubgraphs) => `no value provided for argument \"${arg}\" of field \"${field}\" but a value is mandatory as \"${arg}\" is required in ${incompatibleSubgraphs}`,\n            );\n            continue;\n          }\n\n          assert(false, () => `Unexpected error throw by ${requiresApplication} when evaluated on supergraph: ${e.message}`);\n        }\n      }\n    }\n\n    // auth verification on the supergraph\n    // need to verify usage of @requires on fields that require authorization\n    if (this.accessControlDirectivesInSupergraph.length > 0) {\n      const authValidator = new AuthValidator(this.merged, this.joinSpec, this.subgraphNamesToJoinSpecName);\n      for (const coordinate of this.fieldsWithRequires) {\n        const errors = authValidator.validateRequiresFieldSet(coordinate);\n        this.errors.push(...errors);\n      }\n\n      for (const coordinate of this.fieldsWithFromContext) {\n        const errors = authValidator.validateFromContext(coordinate);\n        this.errors.push(...errors);\n      }\n    }\n  }\n\n  private updateInaccessibleErrorsWithLinkToSubgraphs(\n    errors: GraphQLError[]\n  ): GraphQLError[] {\n    // While we could just take the supergraph referencer coordinate and return\n    // any corresponding elements in the subgraphs, some of those subgraph\n    // referencers may not have been the cause of the erroneous reference; it\n    // often depends on the kind of reference (the logic of which is captured\n    // below).\n    function isRelevantSubgraphReferencer(\n      subgraphReferencer: NamedSchemaElement<any, any, any>,\n      err: GraphQLError,\n      supergraphElements: string[],\n      hasInaccessibleElements: boolean,\n    ): boolean {\n      switch (errorCode(err)) {\n        case ERRORS.REFERENCED_INACCESSIBLE.code: {\n          // We only care about subgraph fields/arguments/input fields whose\n          // base type matches that of the inaccessible element.\n          if (\n            !((subgraphReferencer instanceof FieldDefinition) ||\n            (subgraphReferencer instanceof ArgumentDefinition) ||\n            (subgraphReferencer instanceof InputFieldDefinition))\n          ) {\n            return false;\n          }\n          const subgraphType = subgraphReferencer.type;\n          const supergraphType = supergraphElements[0];\n\n          return !!subgraphType &&\n            baseType(subgraphType).name === supergraphType;\n        }\n        case ERRORS.DEFAULT_VALUE_USES_INACCESSIBLE.code: {\n          // Default values are merged via intersection, so no need to filter\n          // out any subgraph referencers here.\n          return true;\n        }\n        case ERRORS.REQUIRED_INACCESSIBLE.code: {\n          // An argument is required if it's non-nullable and has no default\n          // value. This means that a required supergraph argument could be\n          // the result of merging two non-required subgraph arguments (e.g.\n          // one is non-nullable with a default while the other is nullable\n          // without a default value). So we include nodes that are either\n          // non-nullable or have no default value.\n          if (\n            !((subgraphReferencer instanceof ArgumentDefinition) ||\n            (subgraphReferencer instanceof InputFieldDefinition))\n          ) {\n            return false;\n          }\n          const subgraphType = subgraphReferencer.type;\n          return (subgraphType && isNonNullType(subgraphType)) ||\n          subgraphReferencer.defaultValue === undefined;\n        }\n        case ERRORS.IMPLEMENTED_BY_INACCESSIBLE.code: {\n          // Any subgraph containing the implemented field/argument is relevant,\n          // so no need to filter out any subgraph elements here.\n          return true;\n        }\n        case ERRORS.DISALLOWED_INACCESSIBLE.code: {\n          // We only care about disallowed types/directives that contained at\n          // least one @inaccessible descendant, so we filter by that here.\n          return hasInaccessibleElements;\n        }\n        case ERRORS.ONLY_INACCESSIBLE_CHILDREN.code: {\n          // We only care about parent types that contained at least one\n          // @inaccessible descendant, so we filter by that here.\n          return hasInaccessibleElements;\n        }\n        default: {\n          return false;\n        }\n      }\n    }\n\n    return errors.map((err) => {\n      const elements = err.extensions['inaccessible_elements'];\n      if (!Array.isArray(elements)) return err;\n      const errorNodes = [];\n      const subgraphHasInaccessibleElements: boolean[] = [];\n      for (const coordinate of elements) {\n        if (typeof coordinate !== 'string') continue;\n        errorNodes.push(...sourceASTs(...this.subgraphsSchema.flatMap(\n          (subgraphSchema, subgraphIndex) => {\n            const subgraphElement =\n              subgraphSchema.elementByCoordinate(coordinate);\n            if (subgraphElement) {\n              const inaccessibleDirective =\n                federationMetadata(subgraphSchema)!.inaccessibleDirective();\n              if (subgraphElement.hasAppliedDirective(inaccessibleDirective)) {\n                subgraphHasInaccessibleElements[subgraphIndex] = true;\n                return [subgraphElement];\n              }\n          }\n          return [];\n        })));\n      }\n\n      const referencers = err.extensions['inaccessible_referencers'];\n      if (Array.isArray(referencers)) {\n        for (const coordinate of referencers) {\n          if (typeof coordinate !== 'string') continue;\n          errorNodes.push(...sourceASTs(...this.subgraphsSchema.flatMap(\n            (subgraphSchema, subgraphIndex) => {\n              const subgraphReferencer =\n                subgraphSchema.elementByCoordinate(coordinate);\n              if (\n                subgraphReferencer &&\n                isRelevantSubgraphReferencer(\n                  subgraphReferencer,\n                  err,\n                  elements,\n                  subgraphHasInaccessibleElements[subgraphIndex]\n                )\n              ) {\n                return [subgraphReferencer];\n              }\n            return [];\n          })));\n        }\n      }\n\n      return errorNodes.length > 0\n        ? withModifiedErrorNodes(err, errorNodes)\n        : err;\n    });\n  }\n\n  private validateSubscriptionField(sources: Sources<FieldDefinition<any>>) {\n    // no subgraph marks field as @shareable\n\n    const fieldsWithShareable: FieldDefinition<any>[] = [];\n    for (const [idx, source] of sources.entries()) {\n      if (source && source.hasAppliedDirective(this.metadata(idx).shareableDirective())) {\n        fieldsWithShareable.push(source);\n      }\n    }\n    if (fieldsWithShareable.length > 0) {\n      const nodes = sourceASTs(...fieldsWithShareable);\n      this.errors.push(ERRORS.INVALID_FIELD_SHARING.err(\n        `Fields on root level subscription object cannot be marked as shareable`,\n        { nodes},\n      ));\n    }\n  }\n\n  private getFieldsWithFromContextDirective(): Set<string> {\n    return this.getFieldsWithAppliedDirective(\n      (subgraph: Subgraph) => subgraph.metadata().fromContextDirective(),\n      (application: Directive<SchemaElement<any,any>>) => {\n        const field = application.parent.parent;\n        assert(isFieldDefinition(field), () => `Expected ${application.parent} to be a field`);\n        return field;\n      },\n    );\n  }\n\n  private getFieldsWithOverrideDirective(): Set<string> {\n    return this.getFieldsWithAppliedDirective(\n      (subgraph: Subgraph) => subgraph.metadata().overrideDirective(),\n      (application: Directive<SchemaElement<any,any>>) => {\n        const field = application.parent;\n        assert(isFieldDefinition(field), () => `Expected ${application.parent} to be a field`);\n        return field;\n      }\n    );\n  }\n\n  private getFieldsWithRequiresDirective(): Set<string> {\n    return this.getFieldsWithAppliedDirective(\n        (subgraph: Subgraph) => subgraph.metadata().requiresDirective(),\n        (application: Directive<SchemaElement<any,any>>) => {\n          const field = application.parent;\n          assert(isFieldDefinition(field), () => `Expected ${application.parent} to be a field`);\n          return field;\n        }\n    );\n  }\n\n  private getFieldsWithAppliedDirective(\n    getDirective: (subgraph: Subgraph) => Post20FederationDirectiveDefinition<any>,\n    getField: (application: Directive<SchemaElement<any, any>>) => FieldDefinition<any>,\n  ) {\n    const fields = new Set<string>();\n    for (const subgraph of this.subgraphs) {\n      const directive = getDirective(subgraph);\n      if (isFederationDirectiveDefinedInSchema(directive)) {\n        for (const application of directive.applications()) {\n          const field = getField(application);\n          const coordinate = field.coordinate;\n          if (!fields.has(coordinate)) {\n            fields.add(coordinate);\n          }\n        }\n      }\n    }\n    return fields;\n  }\n}\n\nexport class AuthValidator {\n  schema: Schema;\n  joinSpecNamesToSubgraphNames: Map<string, string>;\n  joinFieldDirective: DirectiveDefinition<JoinFieldDirectiveArguments>;\n  authenticatedDirective?: DirectiveDefinition;\n  requiresScopesDirective?: DirectiveDefinition<{ scopes: string[][] }>;\n  policyDirective?: DirectiveDefinition<{ policies: string[][] }>;\n  contexts: Map<string, string[]>;\n\n  constructor(schema: Schema, joinSpec: JoinSpecDefinition, subgraphNamesToJoinSpecName: Map<string, string>) {\n    this.schema = schema;\n    this.joinFieldDirective = joinSpec.fieldDirective(this.schema);\n    this.joinSpecNamesToSubgraphNames = new Map(Array.from(\n        subgraphNamesToJoinSpecName, entry => entry.reverse() as [string, string])\n    );\n\n    const authenticatedFeature = this.schema.coreFeatures?.getByIdentity(AuthenticatedSpecDefinition.identity);\n    const authenticatedSpec = authenticatedFeature && AUTHENTICATED_VERSIONS.find(authenticatedFeature.url.version);\n    this.authenticatedDirective = authenticatedSpec?.authenticatedDirective(this.schema);\n\n    const requiresScopesFeature = this.schema.coreFeatures?.getByIdentity(RequiresScopesSpecDefinition.identity);\n    const requiresScopesSpec = requiresScopesFeature && REQUIRES_SCOPES_VERSIONS.find(requiresScopesFeature.url.version);\n    this.requiresScopesDirective = requiresScopesSpec?.requiresScopesDirective(this.schema);\n\n    const policyFeature = this.schema.coreFeatures?.getByIdentity(PolicySpecDefinition.identity);\n    const policySpec = policyFeature && POLICY_VERSIONS.find(policyFeature.url.version);\n    this.policyDirective = policySpec?.policyDirective(this.schema);\n\n    const contextFeature = this.schema.coreFeatures?.getByIdentity(ContextSpecDefinition.identity);\n    const contextSpec = contextFeature && CONTEXT_VERSIONS.find(contextFeature.url.version);\n    const contextDirective = contextSpec?.contextDirective(this.schema);\n\n    const contextApplications = Array.from(contextDirective?.applications() ?? []);\n    this.contexts = new Map();\n    contextApplications.forEach((context) => {\n      const contextName = context.arguments().name;\n      const contextType = context.parent as CompositeType;\n      const types = this.contexts.get(contextName) ?? [];\n      types.push(contextType.name);\n      this.contexts.set(contextName, types);\n    });\n  }\n\n  validateRequiresFieldSet(coordinate: string): GraphQLError[] {\n    const fieldCoordinate = coordinate.split('.');\n    assert(fieldCoordinate && fieldCoordinate.length == 2,`Valid coordinate for field \"${coordinate}\" with @requires`);\n    const type = this.schema.type(fieldCoordinate[0]);\n    assert(type instanceof ObjectType || type instanceof InterfaceType, 'Type \"${fieldCoordinate[0]}\" exists in the schema');\n    const field = type.field(fieldCoordinate[1]);\n    assert(field instanceof FieldDefinition, `Field \"${coordinate}\" exists in the schema`);\n\n    const typeRequirements = this.authRequirementsOnElement(type);\n    const fieldRequirements = this.authRequirementsOnElement(field);\n    const authRequirementOnRequires = new AuthRequirements(coordinate, '@requires', typeRequirements, fieldRequirements);\n\n    const errors: GraphQLError[] = []\n    const joinDirectivesOnRequires = field.appliedDirectivesOf(this.joinFieldDirective);\n    for (const joinDirectiveOnRequires of joinDirectivesOnRequires) {\n      const requiresFieldSet = joinDirectiveOnRequires.arguments().requires;\n      if (requiresFieldSet) {\n        // only verify @requires selections if it is defined on @join__field\n        const requiresSelectionSet = parseSelectionSet({parentType: type, source: requiresFieldSet});\n        try {\n          this.verifyAuthRequirementsOnSelectionSet(authRequirementOnRequires, requiresSelectionSet);\n        } catch (e) {\n          if (!(e instanceof GraphQLError)) {\n            throw e;\n          }\n          // target subgraph info should always be provided but just in case\n          const enumSubgraphValue = joinDirectiveOnRequires.arguments().graph;\n          const subgraph = enumSubgraphValue ? this.joinSpecNamesToSubgraphNames.get(enumSubgraphValue) : undefined;\n          if (subgraph) {\n            errors.push(addSubgraphToError(e, subgraph));\n          } else {\n            errors.push(e);\n          }\n        }\n      }\n    }\n\n    return errors;\n  }\n\n  validateFromContext(coordinate: string): GraphQLError[] {\n    const fieldCoordinate = coordinate.split('.');\n    assert(fieldCoordinate && fieldCoordinate.length == 2,`Valid coordinate for field \"${coordinate}\" with @requires`);\n    const type = this.schema.type(fieldCoordinate[0]);\n    assert(type instanceof ObjectType || type instanceof InterfaceType, 'Type \"${fieldCoordinate[0]}\" exists in the schema');\n    const field = type.field(fieldCoordinate[1]);\n    assert(field instanceof FieldDefinition, `Field \"${coordinate}\" exists in the schema`);\n\n    const typeRequirements = this.authRequirementsOnElement(type);\n    const fieldRequirements = this.authRequirementsOnElement(field);\n    const authRequirementOnContext = new AuthRequirements(coordinate, '@fromContext', typeRequirements, fieldRequirements);\n\n    const errors: GraphQLError[] = []\n    const joinDirectivesOnFromContext = field.appliedDirectivesOf(this.joinFieldDirective);\n    for (const joinDirectiveOnFromContext of joinDirectivesOnFromContext) {\n      const contexts = joinDirectiveOnFromContext.arguments().contextArguments;\n      if (contexts) {\n        // only verify @fromContext selections if they are defined on @join__field directive\n        for (const context of contexts) {\n          const name = context.context;\n          const contextSelection = context.selection;\n\n          const targetTypeNames = this.contexts.get(name);\n          assert(targetTypeNames, 'Contexts exists');\n          for (const targetTypeName of targetTypeNames) {\n            // we need to verify against all possible contexts\n            const targetType = this.schema.type(targetTypeName) as CompositeType;\n            assert(targetType, 'Context references valid type in the schema');\n            try {\n              const requirementsOnContextType = this.authRequirementsOnElement(targetType);\n              if (!authRequirementOnContext.satisfies(requirementsOnContextType)) {\n                const msg = `Field \"${field.coordinate}\" does not specify necessary @authenticated, @requiresScopes `\n                    + `and/or @policy auth requirements to access the transitive data in context ${name} from @fromContext selection set.`;\n                throw ERRORS.MISSING_TRANSITIVE_AUTH_REQUIREMENTS.err(msg);\n              }\n\n              const contextSelectionSet = parseSelectionSet({parentType: targetType, source: contextSelection});\n              this.verifyAuthRequirementsOnSelectionSet(authRequirementOnContext, contextSelectionSet);\n            } catch (e) {\n              if (!(e instanceof GraphQLError)) {\n                throw e;\n              }\n              // target subgraph info should always be provided but just in case\n              const enumSubgraphValue = joinDirectiveOnFromContext.arguments().graph;\n              const subgraph = enumSubgraphValue ? this.joinSpecNamesToSubgraphNames.get(enumSubgraphValue) : undefined;\n              if (subgraph) {\n                errors.push(addSubgraphToError(e, subgraph));\n              } else {\n                errors.push(e);\n              }\n            }\n          }\n        }\n      }\n    }\n    return errors;\n  }\n\n  private authRequirementsOnElement(element: NamedType | FieldDefinition<any>): AuthRequirementsOnElement | undefined {\n    const requirements = new AuthRequirementsOnElement();\n    if (this.authenticatedDirective) {\n      const appliedDirective = element.appliedDirectivesOf(this.authenticatedDirective)?.[0];\n      if (appliedDirective) {\n        requirements.isAuthenticated = true;\n      }\n    }\n\n    if (this.requiresScopesDirective) {\n      const appliedDirective = element.appliedDirectivesOf(this.requiresScopesDirective)?.[0];\n      if (appliedDirective) {\n        const { scopes } = appliedDirective.arguments();\n        requirements.scopes = scopes;\n      }\n    }\n\n    if (this.policyDirective) {\n      const appliedDirective = element.appliedDirectivesOf(this.policyDirective)?.[0];\n      if (appliedDirective) {\n        const { policies } = appliedDirective.arguments();\n        requirements.policies = policies;\n      }\n    }\n\n    if (requirements.isAuthenticated || requirements.scopes || requirements.policies) {\n      return requirements;\n    } else {\n      return;\n    }\n  }\n\n  private verifyAuthRequirementsOnSelectionSet(authRequirements: AuthRequirements, selectionSet: SelectionSet) {\n    for (const selection of selectionSet.selections()) {\n      if (selection instanceof FieldSelection) {\n        this.verifyAuthOnFieldSelection(selection, authRequirements);\n        if (selection.selectionSet) {\n          this.verifyAuthRequirementsOnSelectionSet(authRequirements, selection.selectionSet);\n        }\n      } else {\n        const condition = selection.element.typeCondition;\n        if (condition) {\n          const requirementsOnCondition = this.authRequirementsOnElement(condition);\n          if (!authRequirements.satisfies(requirementsOnCondition)) {\n            const msg = `Field \"${authRequirements.fieldCoordinate}\" does not specify necessary @authenticated, @requiresScopes `\n                + `and/or @policy auth requirements to access the transitive data in inline fragment type condition \"${condition}\" from ${authRequirements.directive} selection set.`;\n            throw ERRORS.MISSING_TRANSITIVE_AUTH_REQUIREMENTS.err(msg);\n          }\n        }\n        this.verifyAuthRequirementsOnSelectionSet(authRequirements, selection.selectionSet);\n      }\n    }\n  }\n\n  private verifyAuthOnFieldSelection(selection: FieldSelection, authRequirements: AuthRequirements) {\n    const field = selection.element.definition;\n    const fieldAuthReqs = this.authRequirementsOnElement(field);\n    const returnType = baseType(field.type!);\n    const fieldReturnAuthReqs = this.authRequirementsOnElement(returnType);\n\n    if (!authRequirements.satisfies(fieldAuthReqs) || !authRequirements.satisfies(fieldReturnAuthReqs)) {\n      const msg = `Field \"${authRequirements.fieldCoordinate}\" does not specify necessary @authenticated, @requiresScopes `\n          + `and/or @policy auth requirements to access the transitive field \"${field.coordinate}\" data from ${authRequirements.directive} selection set.`;\n      throw ERRORS.MISSING_TRANSITIVE_AUTH_REQUIREMENTS.err(msg);\n    }\n  }\n}\n\nclass AuthRequirements {\n  fieldCoordinate: string;\n  directive: string;\n  requirements: AuthRequirementsOnElement\n\n  constructor(\n      coordinate: string,\n      directive: string,\n      typeRequirements: AuthRequirementsOnElement | undefined,\n      fieldRequirements: AuthRequirementsOnElement | undefined) {\n    this.fieldCoordinate = coordinate;\n    this.directive = directive;\n\n    // we need to combine auth requirements from type and field to get the final reqs\n    // e.g. if type access requires being @authenticated with scope S1 and field requires scope S2 then we need\n    //  to be @authenticated and have both S1 and S2 scopes to access this field\n    const requirements = new AuthRequirementsOnElement();\n    requirements.isAuthenticated = (typeRequirements?.isAuthenticated ?? false) || (fieldRequirements?.isAuthenticated ?? false);\n\n    const scopesToMerge = [];\n    if (typeRequirements?.scopes) {\n      scopesToMerge.push(typeRequirements.scopes);\n    }\n    if (fieldRequirements?.scopes) {\n      scopesToMerge.push(fieldRequirements.scopes);\n    }\n    if (scopesToMerge.length > 0) {\n      requirements.scopes = dnfConjunction(scopesToMerge);\n    }\n\n    const policiesToMerge = [];\n    if (typeRequirements?.policies) {\n      policiesToMerge.push(typeRequirements.policies);\n    }\n    if (fieldRequirements?.policies) {\n      policiesToMerge.push(fieldRequirements.policies);\n    }\n    if (policiesToMerge.length > 0) {\n      requirements.policies = dnfConjunction(policiesToMerge);\n    }\n\n    this.requirements = requirements;\n  }\n\n  satisfies(authOnElement: AuthRequirementsOnElement | undefined): boolean {\n    if (authOnElement) {\n      // auth requirements on element have to be an implication of type + field requirements\n      return this.requirements.satisfies(authOnElement);\n    }\n    return true;\n  }\n}\n\nclass AuthRequirementsOnElement {\n  isAuthenticated: boolean = false;\n  scopes?: string[][];\n  policies?: string[][];\n\n  satisfies(other: AuthRequirementsOnElement): boolean {\n    const authenticatedSatisfied = this.isAuthenticated || !other.isAuthenticated;\n    const scopesSatisfied = this.isImplication(this.scopes, other.scopes);\n    const policiesSatisfied = this.isImplication(this.policies, other.policies);\n    return authenticatedSatisfied && scopesSatisfied && policiesSatisfied;\n  }\n\n  // Whether the left DNF expression materially implies the right one. See:\n  // https://en.wikipedia.org/wiki/Material_conditional\n  private isImplication(first: string[][] | undefined, second: string[][] | undefined): boolean {\n    // No auth requirements are the same as auth requirements that are always\n    // true. We also run `convertEmptyToTrue()`; see its doc string to\n    // understand why this is necessary.\n    const firstNormalized = convertEmptyToTrue(first ?? [[]]);\n    const secondNormalized = convertEmptyToTrue(second ?? [[]]);\n\n    // outer elements follow OR rules so we need all conditions to match as we don't know which one will be provided at runtime\n    return firstNormalized.every((firstInner) => secondNormalized.some((secondInner) => {\n      // inner elements follow AND rules which means that\n      // ALL elements from secondInner has to be present in the firstInner\n      const firstSet = new Set(firstInner);\n      const secondSet = new Set(secondInner);\n      return firstSet.size >= secondSet.size && secondInner.every((elem) => firstSet.has(elem));\n    }));\n  }\n\n  toString(): string {\n    let result = `{ is_authenticated: ${this.isAuthenticated}`;\n    if (this.scopes) {\n      result += `, scopes: [${this.scopes.join(',')}]`;\n    }\n\n    if (this.policies) {\n      result += `, policies: [${this.policies.join(',')}]`;\n    }\n\n    result += ' }';\n    return result;\n  }\n}\n", "export * from './merge';\n", "import {\n  addSubgraphToASTNode,\n  assert,\n  CompositeType,\n  DirectiveDefinition,\n  ERRORS,\n  Field,\n  FieldDefinition,\n  FieldSelection,\n  FragmentElement,\n  InputType,\n  isAbstractType,\n  isCompositeType,\n  isDefined,\n  isInterfaceType,\n  isLeafType,\n  isNullableType,\n  isObjectType,\n  isUnionType,\n  joinStrings,\n  MultiMap,\n  newDebugLogger,\n  Operation,\n  operationToDocument,\n  printHumanReadableList,\n  printSubgraphNames,\n  Schema,\n  SchemaRootKind,\n  Selection,\n  selectionOfElement,\n  SelectionSet,\n  SubgraphASTNode,\n  selectionSetOf,\n  typenameFieldName,\n  validateSupergraph,\n  VariableDefinitions,\n  isOutputType,\n  JoinFieldDirectiveArguments,\n  ContextSpecDefinition,\n  CONTEXT_VERSIONS,\n  NamedSchemaElement,\n  NamedType,\n} from \"@apollo/federation-internals\";\nimport {\n  Edge,\n  federatedGraphRootTypeName,\n  QueryGraph,\n  subgraphEnteringTransition,\n  GraphPath,\n  RootPath,\n  advancePathWithTransition,\n  Transition,\n  QueryGraphState,\n  Unadvanceables,\n  Unadvanceable,\n  noConditionsResolution,\n  TransitionPathWithLazyIndirectPaths,\n  RootVertex,\n  simpleValidationConditionResolver,\n  ConditionResolver,\n  UnadvanceableClosures,\n  isUnadvanceableClosures,\n  Vertex,\n} from \"@apollo/query-graphs\";\nimport { CompositionHint, HINTS } from \"./hints\";\nimport { ASTNode, GraphQLError, print } from \"graphql\";\nimport { CompositionOptions } from './compose';\n\nconst debug = newDebugLogger('validation');\n\nexport class ValidationError extends Error {\n  constructor(\n    message: string,\n    readonly supergraphUnsatisfiablePath: RootPath<Transition>,\n    readonly subgraphsPaths: RootPath<Transition>[],\n    readonly witness: Operation\n  ) {\n    super(message);\n    this.name = 'ValidationError';\n  }\n}\n\nfunction satisfiabilityError(\n  unsatisfiablePath: RootPath<Transition>,\n  subgraphsPaths: RootPath<Transition>[],\n  subgraphsPathsUnadvanceables: Unadvanceables[]\n): GraphQLError {\n  const witness = buildWitnessOperation(unsatisfiablePath);\n  const operation = print(operationToDocument(witness));\n  const message = `The following supergraph API query:\\n${operation}\\n`\n    + 'cannot be satisfied by the subgraphs because:\\n'\n    + displayReasons(subgraphsPathsUnadvanceables);\n  const error = new ValidationError(message, unsatisfiablePath, subgraphsPaths, witness);\n  return ERRORS.SATISFIABILITY_ERROR.err(error.message, {\n    originalError: error,\n  });\n}\n\nfunction subgraphNodes(state: ValidationState, extractNode: (schema: Schema) => ASTNode | undefined): SubgraphASTNode[] {\n  return state.currentSubgraphs().map(({name, schema}) => {\n    const node = extractNode(schema);\n    return node ? addSubgraphToASTNode(node, name) : undefined;\n  }).filter(isDefined);\n}\n\nfunction shareableFieldNonIntersectingRuntimeTypesError(\n  invalidState: ValidationState,\n  field: FieldDefinition<CompositeType>,\n  runtimeTypesToSubgraphs: MultiMap<string, string>,\n): GraphQLError {\n  const witness = buildWitnessOperation(invalidState.supergraphPath);\n  const operation = print(operationToDocument(witness));\n  const typeStrings = [...runtimeTypesToSubgraphs].map(([ts, subgraphs]) => ` - in ${printSubgraphNames(subgraphs)}, ${ts}`);\n  const message = `For the following supergraph API query:\\n${operation}`\n    + `\\nShared field \"${field.coordinate}\" return type \"${field.type}\" has a non-intersecting set of possible runtime types across subgraphs. Runtime types in subgraphs are:`\n    + `\\n${typeStrings.join(';\\n')}.`\n    + `\\nThis is not allowed as shared fields must resolve the same way in all subgraphs, and that imply at least some common runtime types between the subgraphs.`;\n  const error = new ValidationError(message, invalidState.supergraphPath, invalidState.allSubgraphPathInfos().map((p) => p.path.path), witness);\n  return ERRORS.SHAREABLE_HAS_MISMATCHED_RUNTIME_TYPES.err(error.message, {\n    nodes: subgraphNodes(invalidState, (s) => (s.type(field.parent.name) as CompositeType | undefined)?.field(field.name)?.sourceAST),\n  });\n}\n\nfunction shareableFieldMismatchedRuntimeTypesHint(\n  state: ValidationState,\n  field: FieldDefinition<CompositeType>,\n  commonRuntimeTypes: string[],\n  runtimeTypesPerSubgraphs: MultiMap<string, string>,\n): CompositionHint {\n  const witness = buildWitnessOperation(state.supergraphPath);\n  const operation = print(operationToDocument(witness));\n  const allSubgraphs = state.currentSubgraphNames();\n  const printTypes = (ts: string[]) => printHumanReadableList(\n    ts.map((t) => '\"' + t + '\"'),\n    {\n      prefix: 'type',\n      prefixPlural: 'types'\n    }\n  );\n  const subgraphsWithTypeNotInIntersectionString = allSubgraphs.map((s) => {\n    const typesToNotImplement = runtimeTypesPerSubgraphs.get(s)!.filter((t) => !commonRuntimeTypes.includes(t));\n    if (typesToNotImplement.length === 0) {\n      return undefined;\n    }\n    return ` - subgraph \"${s}\" should never resolve \"${field.coordinate}\" to an object of ${printTypes(typesToNotImplement)}`;\n\n  }).filter(isDefined);\n  const message = `For the following supergraph API query:\\n${operation}`\n    + `\\nShared field \"${field.coordinate}\" return type \"${field.type}\" has different sets of possible runtime types across subgraphs.`\n    + `\\nSince a shared field must be resolved the same way in all subgraphs, make sure that ${printSubgraphNames(allSubgraphs)} only resolve \"${field.coordinate}\" to objects of ${printTypes(commonRuntimeTypes)}. In particular:`\n    + `\\n${subgraphsWithTypeNotInIntersectionString.join(';\\n')}.`\n    + `\\nOtherwise the @shareable contract will be broken.`;\n  return new CompositionHint(\n    HINTS.INCONSISTENT_RUNTIME_TYPES_FOR_SHAREABLE_RETURN,\n    message,\n    field,\n    subgraphNodes(state, (s) => (s.type(field.parent.name) as CompositeType | undefined)?.field(field.name)?.sourceAST),\n  );\n}\n\nfunction displayReasons(reasons: Unadvanceables[]): string {\n  const bySubgraph = new MultiMap<string, Unadvanceable>();\n  for (const reason of reasons) {\n    for (const unadvanceable of reason.reasons) {\n      bySubgraph.add(unadvanceable.sourceSubgraph, unadvanceable);\n    }\n  }\n  return [...bySubgraph.entries()].map(([subgraph, reasons]) => {\n    let msg = `- from subgraph \"${subgraph}\":`;\n    if (reasons.length === 1) {\n      msg += ' ' + reasons[0].details + '.';\n    } else {\n      // We put all the reasons into a set because it's possible multiple paths of the algorithm\n      // had the same \"dead end\". Typically, without this, there is cases where we end up with\n      // multiple \"cannot find field x\" messages (for the same \"x\").\n      const allDetails = new Set(reasons.map((r) => r.details));\n      for (const details of allDetails) {\n        msg += '\\n  - ' + details + '.';\n      }\n    }\n    return msg;\n  }).join('\\n');\n}\n\nfunction buildWitnessOperation(witness: RootPath<Transition>): Operation {\n  assert(witness.size > 0, \"unsatisfiablePath should contain at least one edge/transition\");\n  const root = witness.root;\n  const schema = witness.graph.sources.get(root.source)!;\n  return new Operation(\n    schema,\n    root.rootKind,\n    buildWitnessNextStep([...witness].map(e => e[0]), 0)!,\n    new VariableDefinitions(),\n  );\n}\n\nfunction buildWitnessNextStep(edges: Edge[], index: number): SelectionSet | undefined  {\n  if (index >= edges.length) {\n    // We're at the end of our counter-example, meaning that we're at a point of traversing the supergraph where we know\n    // there is no valid equivalent subgraph traversals.\n    // That said, we may well not be on a terminal vertex (the type may not be a leaf), meaning that returning 'undefined'\n    // may be invalid.\n    // In that case, we instead return an empty SelectionSet. This is, strictly speaking, equally invalid, but we use\n    // this as a convention to means \"there is supposed to be a selection but we don't have it\" and the code\n    // in `SelectionSet.toSelectionNode` handles this an prints an ellipsis (a '...').\n    //\n    // Note that, as an alternative, we _could_ generate a random valid witness: while the current type is not terminal\n    // we would randomly pick a valid choice (if it's an abstract type, we'd \"cast\" to any implementation; if it's an\n    // object, we'd pick the first field and recurse on its type). However, while this would make sure our \"witness\"\n    // is always a fully valid query, this is probably less user friendly in practice because you'd have to follow\n    // the query manually to figure out at which point the query stop being satisfied by subgraphs. Putting the\n    // ellipsis instead make it immediately clear after which part of the query there is an issue.\n    const lastType = edges[edges.length -1].tail.type;\n    // Note that vertex types are named type and output ones, so if it's not a leaf it is guaranteed to be selectable.\n    assert(isOutputType(lastType), 'Should not have input types as vertex types');\n    return isLeafType(lastType) ? undefined : new SelectionSet(lastType);\n  }\n\n  const edge = edges[index];\n  let selection: Selection;\n  const subSelection = buildWitnessNextStep(edges, index + 1);\n  switch (edge.transition.kind) {\n    case 'DownCast':\n      const type = edge.transition.castedType;\n      selection = selectionOfElement(\n        new FragmentElement(edge.transition.sourceType, type.name),\n        subSelection!\n      );\n      break;\n    case 'FieldCollection':\n      const field = edge.transition.definition;\n      selection = new FieldSelection(buildWitnessField(field), subSelection);\n      break\n    case 'SubgraphEnteringTransition':\n    case 'KeyResolution':\n    case 'RootTypeResolution':\n    case 'InterfaceObjectFakeDownCast':\n      // Witnesses are build from a path on the supergraph, so we shouldn't have any of those edges.\n      assert(false, `Invalid edge ${edge} found in supergraph path`);\n  }\n  // If we get here, the edge is either a downcast or a field, so the edge head must be selectable.\n  return selectionSetOf(edge.head.type as CompositeType, selection);\n}\n\nfunction buildWitnessField(definition: FieldDefinition<any>): Field {\n  if (definition.arguments().length === 0) {\n    return new Field(definition);\n  }\n\n  const args = Object.create(null);\n  for (const argDef of definition.arguments()) {\n    args[argDef.name] = generateWitnessValue(argDef.type!);\n  }\n  return new Field(definition, args);\n}\n\nfunction generateWitnessValue(type: InputType): any {\n  switch (type.kind) {\n    case 'ScalarType':\n      switch (type.name) {\n        case 'Int':\n          return 0;\n        case 'Float':\n          return 3.14;\n        case 'Boolean':\n          return true;\n        case 'String':\n          return 'A string value';\n        case 'ID':\n          // Users probably expect a particular format of ID at any particular place, but we have zero info on\n          // the context, so we just throw a string that hopefully make things clear.\n          return '<any id>';\n        default:\n          // It's a custom scalar, but we don't know anything about that scalar so providing some random string. This\n          // will technically probably not be a valid value for that scalar, but hopefully that won't be enough to\n          // throw users off.\n          return '<some value>';\n      }\n    case 'EnumType':\n      return type.values[0].name;\n    case 'InputObjectType':\n      const obj = Object.create(null);\n      for (const field of type.fields()) {\n        // We don't bother with non-mandatory fields.\n        if (field.defaultValue || isNullableType(field.type!)) {\n          continue;\n        }\n        obj[field.name] = generateWitnessValue(field.type!);\n      }\n      return obj;\n    case 'ListType':\n      return [];\n    case 'NonNullType':\n      // None of our generated witness values are null so...\n      return generateWitnessValue(type.ofType);\n    default:\n      assert(false, `Unhandled input type ${type}`);\n  }\n}\n\n/**\n * Validates that all the queries expressible on the API schema resulting of the composition of the provided subgraphs can be executed\n * on those subgraphs.\n *\n * @param supergraphSchema the schema of the supergraph that composing `subgraphs` generated. Note this *must* be the full supergraph, not\n *   just it's API schema (because it may be used to find the definition of elements that are marked `@inaccessible`). Note that this _not_\n *   the same schema that the one reference inside `supergraphAPI` in particular.\n * @param supergraphAPI the `QueryGraph` corresponding to the `supergraphSchema` API schema.\n * @param federatedQueryGraph the (federated) `QueryGraph` corresponding the subgraphs having been composed to obtain `supergraphSchema`.\n */\nexport function validateGraphComposition(\n  supergraphSchema: Schema,\n  subgraphNameToGraphEnumValue: Map<string, string>,\n  supergraphAPI: QueryGraph,\n  federatedQueryGraph: QueryGraph,\n  compositionOptions: CompositionOptions = {},\n): {\n  errors? : GraphQLError[],\n  hints? : CompositionHint[],\n} {\n  const { errors, hints } = new ValidationTraversal(\n    supergraphSchema,\n    subgraphNameToGraphEnumValue,\n    supergraphAPI,\n    federatedQueryGraph,\n    compositionOptions,\n  ).validate();\n  return errors.length > 0 ? { errors, hints } : { hints };\n}\n\nfunction initialSubgraphPaths(kind: SchemaRootKind, subgraphs: QueryGraph): RootPath<Transition>[] {\n  const root = subgraphs.root(kind);\n  assert(root, () => `The supergraph shouldn't have a ${kind} root if no subgraphs have one`);\n  assert(\n    root.type.name == federatedGraphRootTypeName(kind),\n    () => `Unexpected type ${root.type} for subgraphs root type (expected ${federatedGraphRootTypeName(kind)}`);\n  const initialState = GraphPath.fromGraphRoot<Transition>(subgraphs, kind)!;\n  return subgraphs.outEdges(root).map(e => initialState.add(subgraphEnteringTransition, e, noConditionsResolution));\n}\n\nfunction possibleRuntimeTypeNamesSorted(path: RootPath<Transition>): string[] {\n  const types = path.tailPossibleRuntimeTypes().map((o) => o.name);\n  types.sort((a, b) => a.localeCompare(b));\n  return types;\n}\n\nexport function extractValidationError(error: any): ValidationError | undefined {\n  if (!(error instanceof GraphQLError) || !(error.originalError instanceof ValidationError)) {\n    return undefined;\n  }\n  return error.originalError;\n}\n\nexport class ValidationContext {\n  private readonly joinTypeDirective: DirectiveDefinition;\n  private readonly joinFieldDirective: DirectiveDefinition<JoinFieldDirectiveArguments>;\n  private readonly typesToContexts: Map<string, Set<string>>\n\n  constructor(\n    readonly supergraphSchema: Schema,\n    readonly subgraphNameToGraphEnumValue: Map<string, string>,\n  ) {\n    const [_, joinSpec] = validateSupergraph(supergraphSchema);\n    this.joinTypeDirective = joinSpec.typeDirective(supergraphSchema);\n    this.joinFieldDirective = joinSpec.fieldDirective(supergraphSchema);\n\n    this.typesToContexts = new Map();\n    let contextDirective: DirectiveDefinition<{ name: string }> | undefined;\n    const contextFeature = supergraphSchema.coreFeatures?.getByIdentity(ContextSpecDefinition.identity);\n    if (contextFeature) {\n      const contextSpec = CONTEXT_VERSIONS.find(contextFeature.url.version);\n      assert(contextSpec, `Unexpected context spec version ${contextFeature.url.version}`);\n      contextDirective = contextSpec.contextDirective(supergraphSchema);\n    }\n\n    for (const application of contextDirective?.applications() ?? []) {\n      const { name: context } = application.arguments();\n      assert(\n        application.parent instanceof NamedSchemaElement,\n        \"Unexpectedly found unnamed element with @context\"\n      );\n      const type = supergraphSchema.type(application.parent.name);\n      assert(type, `Type ${application.parent.name} unexpectedly doesn't exist`);\n      const typeNames = [type.name];\n      if (isInterfaceType(type)) {\n        typeNames.push(...type.allImplementations().map((t) => t.name));\n      } else if (isUnionType(type)) {\n        typeNames.push(...type.types().map((t) => t.name));\n      }\n      for (const typeName of typeNames) {\n        if (this.typesToContexts.has(typeName)) {\n          this.typesToContexts.get(typeName)!.add(context);\n        } else {\n          this.typesToContexts.set(typeName, new Set([context]));\n        }\n      }\n    }\n  }\n\n  isShareable(field: FieldDefinition<CompositeType>): boolean {\n    const typeInSupergraph = this.supergraphSchema.type(field.parent.name);\n    assert(typeInSupergraph && isCompositeType(typeInSupergraph), () => `${field.parent.name} should exists in the supergraph and be a composite`);\n    if (!isObjectType(typeInSupergraph)) {\n      return false;\n    }\n\n    const fieldInSupergraph = typeInSupergraph.field(field.name);\n    assert(fieldInSupergraph, () => `${field.coordinate} should exists in the supergraph`);\n    const joinFieldApplications = fieldInSupergraph.appliedDirectivesOf(this.joinFieldDirective);\n    // A field is shareable if either:\n    // 1) there is not join__field, but multiple join__type\n    // 2) there is more than one join__field where the field is neither external nor overriden.\n    return joinFieldApplications.length === 0\n      ? typeInSupergraph.appliedDirectivesOf(this.joinTypeDirective).length > 1\n      : (joinFieldApplications.filter((application) => {\n        const args = application.arguments();\n        return !args.external && !args.usedOverridden;\n      }).length > 1);\n  }\n\n  matchingContexts(typeName: string): string[] {\n    return [...(this.typesToContexts.get(typeName) ?? [])];\n  }\n}\n\ntype SubgraphPathInfo = {\n  path: TransitionPathWithLazyIndirectPaths<RootVertex>,\n  // The key for this map is the context name in the supergraph schema.\n  contexts: Map<string, { subgraphName: string, typeName: string }>,\n}\n\nclass SubgraphPathInfos {\n  constructor(\n    readonly paths: SubgraphPathInfo[]\n  ) {}\n}\n\nclass TopLevelMutationFieldSubgraphPathInfos {\n  constructor(\n    readonly mutationField: FieldDefinition<CompositeType>,\n    readonly paths: Map<string, SubgraphPathInfo[]>,\n  ) {}\n}\n\nexport class ValidationState {\n  constructor(\n    // Path in the supergraph corresponding to the current state.\n    public readonly supergraphPath: RootPath<Transition>,\n    // All the possible paths we could be in the subgraph. When the supergraph\n    // path's top-level selection is a mutation field, the possible paths are\n    // instead partitioned by the name of the subgraph containing the mutation\n    // field.\n    public readonly subgraphPathInfos:\n      | SubgraphPathInfos\n      | TopLevelMutationFieldSubgraphPathInfos,\n    // When we encounter an `@override`n field with a label condition, we record\n    // its value (T/F) as we traverse the graph. This allows us to ignore paths\n    // that can never be taken by the query planner (i.e. a path where the\n    // condition is T in one case and F in another).\n    public selectedOverrideConditions: Map<string, boolean> = new Map(),\n  ) {\n  }\n\n  static initial({\n    supergraphAPI,\n    kind,\n    federatedQueryGraph,\n    conditionResolver,\n    overrideConditions,\n  }: {\n    supergraphAPI: QueryGraph,\n    kind: SchemaRootKind,\n    federatedQueryGraph: QueryGraph,\n    conditionResolver: ConditionResolver,\n    overrideConditions: Map<string, boolean>,\n  }) {\n    return new ValidationState(\n      GraphPath.fromGraphRoot(supergraphAPI, kind)!,\n      new SubgraphPathInfos(initialSubgraphPaths(kind, federatedQueryGraph).map((p) =>\n        TransitionPathWithLazyIndirectPaths.initial(\n          p,\n          conditionResolver,\n          overrideConditions,\n        ),\n      ).map((p) => ({\n        path: p,\n        contexts: new Map(),\n      }))),\n    );\n  }\n\n  // Returns whether the entire entire visit to this state can be skipped. If\n  // the state is partitioned, note that each individual partition must be\n  // skippable for the state to be skippable.\n  canSkipVisit(\n    subgraphNameToGraphEnumValue: Map<string, string>,\n    previousVisits: QueryGraphState<VertexVisit[]>,\n  ): boolean {\n    const vertex = this.supergraphPath.tail;\n    if (this.subgraphPathInfos instanceof SubgraphPathInfos) {\n      return this.canSkipVisitForSubgraphPaths(\n        vertex,\n        this.subgraphPathInfos.paths,\n        subgraphNameToGraphEnumValue,\n        previousVisits,\n      );\n    } else {\n      let canSkip = true;\n      for (const subgraphPathInfos of this.subgraphPathInfos.paths.values()) {\n        // Note that this method mutates the set of previous visits, so we\n        // purposely do not short-circuit return here.\n        if (!this.canSkipVisitForSubgraphPaths(\n          vertex,\n          subgraphPathInfos,\n          subgraphNameToGraphEnumValue,\n          previousVisits,\n        )) {\n          canSkip = false;\n        }\n      }\n      return canSkip;\n    }\n  }\n\n  canSkipVisitForSubgraphPaths(\n    supergraphPathTail: Vertex,\n    subgraphPathInfos: SubgraphPathInfo[],\n    subgraphNameToGraphEnumValue: Map<string, string>,\n    previousVisits: QueryGraphState<VertexVisit[]>,\n  ): boolean {\n    const currentVertexVisit: VertexVisit = {\n      subgraphContextKeys: this.currentSubgraphContextKeys(\n        subgraphNameToGraphEnumValue,\n        subgraphPathInfos,\n      ),\n      overrideConditions: this.selectedOverrideConditions\n    };\n    const previousVisitsForVertex = previousVisits.getVertexState(supergraphPathTail);\n    if (previousVisitsForVertex) {\n      for (const previousVisit of previousVisitsForVertex) {\n        if (isSupersetOrEqual(currentVertexVisit, previousVisit)) {\n          // This means that we've already seen the type we're currently on in the supergraph, and when saw it we could be in\n          // one of `previousSources`, and we validated that we could reach anything from there. We're now on the same\n          // type, and have strictly more options regarding subgraphs. So whatever comes next, we can handle in the exact\n          // same way we did previously, and there is thus no way to bother.\n          debug.groupEnd(`Has already validated this vertex.`);\n          return true;\n        }\n      }\n      // We're gonna have to validate, but we can save the new set of sources here to hopefully save work later.\n      previousVisitsForVertex.push(currentVertexVisit);\n    } else {\n      // We save the current sources but do validate.\n      previousVisits.setVertexState(supergraphPathTail, [currentVertexVisit]);\n    }\n    return false;\n  }\n\n  /**\n   * Validates that the current state can always be advanced for the provided supergraph edge, and returns the updated state if\n   * so.\n   *\n   * @param supergraphEdge - the edge to try to advance from the current state.\n   * @return an object with `error` set if the state _cannot_ be properly advanced (and if so, `state` and `hint` will be `undefined`).\n   *  If the state can be successfully advanced, then `state` contains the updated new state. This *can* be `undefined` to signal\n   *  that the state _can_ be successfully advanced (no error) but is guaranteed to yield no results (in other words, the edge corresponds\n   *  to a type condition for which there cannot be any runtime types), in which case not further validation is necessary \"from that branch\".\n   *  Additionally, when the state can be successfully advanced, an `hint` can be optionally returned.\n   */\n  validateTransition(\n    context: ValidationContext,\n    supergraphEdge: Edge,\n    matchingContexts: string[],\n    validationErrors: GraphQLError[],\n    satisfiabilityErrorsByMutationFieldAndSubgraph: Map<\n      string, Map<string, GraphQLError[]>\n    >,\n  ): {\n    state?: ValidationState,\n    hint?: CompositionHint,\n  } {\n    assert(!supergraphEdge.conditions, () => `Supergraph edges should not have conditions (${supergraphEdge})`);\n\n    const transition = supergraphEdge.transition;\n    const targetType = supergraphEdge.tail.type;\n\n    // If the edge has an override condition, we should capture it in the state so\n    // that we can ignore later edges that don't satisfy the condition.\n    const newOverrideConditions = new Map([...this.selectedOverrideConditions]);\n    if (supergraphEdge.overrideCondition) {\n      newOverrideConditions.set(\n        supergraphEdge.overrideCondition.label,\n        supergraphEdge.overrideCondition.condition\n      );\n    }\n    const newPath = this.supergraphPath.add(\n      transition,\n      supergraphEdge,\n      noConditionsResolution,\n    );\n\n    let updatedState: ValidationState;\n    if (this.subgraphPathInfos instanceof SubgraphPathInfos) {\n      const {\n        newSubgraphPathInfos,\n        error,\n      } = this.validateTransitionForSubgraphPaths(\n        this.subgraphPathInfos.paths,\n        newOverrideConditions,\n        transition,\n        targetType,\n        matchingContexts,\n        newPath,\n      );\n      if (error) {\n        validationErrors.push(error);\n        return {};\n      }\n      // As noted in `validateTransitionforSubgraphPaths()`, this being empty\n      // means that the edge is a type condition and that if we follow the path\n      // to this subgraph, we're guaranteed that handling that type condition\n      // gives us no matching results, and so we can handle whatever comes next\n      // really.\n      if (newSubgraphPathInfos.length === 0) {\n        return {};\n      }\n      const mutationField = ValidationState.fieldIfTopLevelMutation(\n        this.supergraphPath,\n        supergraphEdge,\n      );\n      if (mutationField) {\n        // If we just added a top-level mutation field, we partition the created\n        // state by the subgraph of the field.\n        const partitionedSubgraphPathInfos =\n          new Map<string, SubgraphPathInfo[]>();\n        for (const subgraphPathInfo of newSubgraphPathInfos) {\n          let subgraph = ValidationState.subgraphOfTopLevelMutation(\n            subgraphPathInfo\n          );\n          let subgraphPathInfos = partitionedSubgraphPathInfos.get(subgraph);\n          if (!subgraphPathInfos) {\n            subgraphPathInfos = [];\n            partitionedSubgraphPathInfos.set(subgraph, subgraphPathInfos);\n          }\n          subgraphPathInfos.push(subgraphPathInfo);\n        }\n        if (partitionedSubgraphPathInfos.size <= 1) {\n          // If there's not more than one subgraph, then the mutation field was\n          // never really shared, and we can continue with non-partitioned\n          // state.\n          updatedState = new ValidationState(\n            newPath,\n            new SubgraphPathInfos(\n              [...partitionedSubgraphPathInfos.values()].flat(),\n            ),\n            newOverrideConditions,\n          );\n        } else {\n          // Otherwise, we need the partitioning, and we set up the error stacks\n          // for each (field, subgraph) pair.\n          let errorsBySubgraph = satisfiabilityErrorsByMutationFieldAndSubgraph\n            .get(mutationField.coordinate);\n          if (!errorsBySubgraph) {\n            errorsBySubgraph = new Map();\n            satisfiabilityErrorsByMutationFieldAndSubgraph.set(\n              mutationField.coordinate,\n              errorsBySubgraph,\n            );\n          }\n          for (const subgraph of partitionedSubgraphPathInfos.keys()) {\n            if (!errorsBySubgraph.has(subgraph)) {\n              errorsBySubgraph.set(subgraph, []);\n            }\n          }\n          updatedState = new ValidationState(\n            newPath,\n            {\n              mutationField,\n              paths: partitionedSubgraphPathInfos,\n            },\n            newOverrideConditions,\n          );\n        }\n      } else {\n        updatedState = new ValidationState(\n          newPath,\n          new SubgraphPathInfos(newSubgraphPathInfos),\n          newOverrideConditions,\n        );\n      }\n    } else {\n      const partitionedSubgraphPathInfos =\n        new Map<string, SubgraphPathInfo[]>();\n      for (const [subgraph, subgraphPathInfos] of this.subgraphPathInfos.paths) {\n        // The setup we do above when we enter a mutation field ensures these\n        // map entries exist.\n        const errors = satisfiabilityErrorsByMutationFieldAndSubgraph\n          .get(this.subgraphPathInfos.mutationField.coordinate)!\n          .get(subgraph)!;\n        const {\n          newSubgraphPathInfos,\n          error,\n        } = this.validateTransitionForSubgraphPaths(\n          subgraphPathInfos,\n          newOverrideConditions,\n          transition,\n          targetType,\n          matchingContexts,\n          newPath,\n        );\n        if (error) {\n          errors.push(error);\n          continue;\n        }\n        // As noted in `validateTransitionforSubgraphPaths()`, this being empty\n        // means that the edge is a type condition and that if we follow the\n        // path to this subgraph, we're guaranteed that handling that type\n        // condition gives us no matching results, and so we can handle whatever\n        // comes next really.\n        if (newSubgraphPathInfos.length === 0) {\n          return {};\n        }\n        partitionedSubgraphPathInfos.set(subgraph, newSubgraphPathInfos);\n      }\n      if (partitionedSubgraphPathInfos.size === 0) {\n        return {};\n      }\n      updatedState = new ValidationState(\n        newPath,\n        {\n          mutationField: this.subgraphPathInfos.mutationField,\n          paths: partitionedSubgraphPathInfos,\n        },\n        newOverrideConditions,\n      );\n    }\n\n    // When handling a @shareable field, we also compare the set of runtime types for each subgraphs involved.\n    // If there is no common intersection between those sets, then we record an error: a @shareable field should resolve\n    // the same way in all the subgraphs in which it is resolved, and there is no way this can be true if each subgraph\n    // returns runtime objects that we know can never be the same.\n    //\n    // Additionally, if those sets of runtime types are not the same, we let it compose, but we log a warning. Indeed,\n    // having different runtime types is a red flag: it would be incorrect for a subgraph to resolve to an object of a\n    // type that the other subgraph cannot possible return, so having some subgraph having types that the other\n    // don't know feels like something is worth double checking on the user side. Of course, as long as there is\n    // some runtime types intersection and the field resolvers only return objects of that intersection, then this\n    // could be a valid implementation. And this case can in particular happen temporarily as subgraphs evolve (potentially\n    // independently), but it is well worth warning in general.\n\n    // Note that we ignore any path when the type is not an abstract type, because in practice this means an @interfaceObject\n    // and this should not be considered as an implementation type. Besides @interfaceObject always \"stand-in\" for every\n    // implementations so they never are a problem for this check and can be ignored.\n    let allSubgraphPathInfos = updatedState.allSubgraphPathInfos();\n    let hint: CompositionHint | undefined = undefined;\n    if (\n      allSubgraphPathInfos.length > 1\n      && transition.kind === 'FieldCollection'\n      && isAbstractType(newPath.tail.type)\n      && context.isShareable(transition.definition)\n    ) {\n      const filteredPaths = allSubgraphPathInfos.map((p) => p.path.path).filter((p) => isAbstractType(p.tail.type));\n      if (filteredPaths.length > 1) {\n        // We start our intersection by using all the supergraph types, both because it's a convenient \"max\" set to start our intersection,\n        // but also because that means we will ignore @inaccessible types in our checks (which is probably not very important because\n        // I believe the rules of @inacessible kind of exclude having some here, but if that ever change, it makes more sense this way).\n        const allRuntimeTypes = possibleRuntimeTypeNamesSorted(newPath);\n        let intersection = allRuntimeTypes;\n\n        const runtimeTypesToSubgraphs = new MultiMap<string, string>();\n        const runtimeTypesPerSubgraphs = new MultiMap<string, string>();\n        let hasAllEmpty = true;\n        for (const { path } of allSubgraphPathInfos) {\n          const subgraph = path.path.tail.source;\n          const typeNames = possibleRuntimeTypeNamesSorted(path.path);\n          \n          // if we see a type here that is not included in the list of all\n          // runtime types, it is safe to assume that it is an interface\n          // behaving like a runtime type (i.e. an @interfaceObject) and \n          // we should allow it to stand in for any runtime type          \n          if (typeNames.length === 1 && !allRuntimeTypes.includes(typeNames[0])) {\n            continue;\n          }\n          runtimeTypesPerSubgraphs.set(subgraph, typeNames);\n          // Note: we're formatting the elements in `runtimeTYpesToSubgraphs` because we're going to use it if we display an error. This doesn't\n          // impact our set equality though since the formatting is consistent betweeen elements and type names syntax is sufficiently restricted\n          // in graphQL to not create issues (no quote or weird character to escape in particular).\n          let typeNamesStr = 'no runtime type is defined';\n          if (typeNames.length > 0) {\n            typeNamesStr = (typeNames.length > 1 ? 'types ' : 'type ') + joinStrings(typeNames.map((n) => `\"${n}\"`));\n            hasAllEmpty = false;\n          }\n          runtimeTypesToSubgraphs.add(typeNamesStr, subgraph);\n          intersection = intersection.filter((t) => typeNames.includes(t));\n        }\n\n        // If `hasAllEmpty`, then it means that none of the subgraph defines any runtime types. Typically, all subgraphs defines a given interface,\n        // but none have implementations. In that case, the intersection will be empty but it's actually fine (which is why we special case). In\n        // fact, assuming valid graphQL subgraph servers (and it's not the place to sniff for non-compliant subgraph servers), the only value to\n        // which each subgraph can resolve is `null` and so that essentially guaranttes that all subgraph do resolve the same way.\n        if (!hasAllEmpty) {\n          if (intersection.length === 0) {\n            validationErrors.push(shareableFieldNonIntersectingRuntimeTypesError(updatedState, transition.definition, runtimeTypesToSubgraphs));\n            return {};\n          }\n\n          // As said, we accept it if there is an intersection, but if the runtime types are not all the same, we still emit a warning to make it clear that\n          // the fields should not resolve any of the types not in the intersection.\n          if (runtimeTypesToSubgraphs.size > 1) {\n            hint = shareableFieldMismatchedRuntimeTypesHint(updatedState, transition.definition, intersection, runtimeTypesPerSubgraphs);\n          }\n        }\n      }\n    }\n\n    return { state: updatedState, hint };\n  }\n\n  validateTransitionForSubgraphPaths(\n    subgraphPathInfos: SubgraphPathInfo[],\n    newOverrideConditions: Map<string, boolean>,\n    transition: Transition,\n    targetType: NamedType,\n    matchingContexts: string[],\n    newPath: RootPath<Transition>,\n  ): {\n    newSubgraphPathInfos: SubgraphPathInfo[],\n    error?: never,\n  } | {\n    newSubgraphPathInfos?: never,\n    error: GraphQLError,\n  } {\n    const newSubgraphPathInfos: SubgraphPathInfo[] = [];\n    const deadEnds: UnadvanceableClosures[] = [];\n    for (const { path, contexts } of subgraphPathInfos) {\n      const options = advancePathWithTransition(\n        path,\n        transition,\n        targetType,\n        newOverrideConditions,\n      );\n      if (isUnadvanceableClosures(options)) {\n        deadEnds.push(options);\n        continue;\n      }\n      if (options.length === 0) {\n        // This means that the edge is a type condition and that if we follow\n        // the path to this subgraph, we're guaranteed that handling that type\n        // condition give us no matching results, and so we can handle whatever\n        // comes next really.\n        return { newSubgraphPathInfos: [] };\n      }\n      let newContexts = contexts;\n      if (matchingContexts.length) {\n        const subgraphName = path.path.tail.source;\n        const typeName = path.path.tail.type.name;\n        newContexts = new Map([...contexts]);\n        for (const matchingContext in matchingContexts) {\n          newContexts.set(\n            matchingContext,\n            {\n              subgraphName,\n              typeName,\n            }\n          )\n        }\n      }\n\n      newSubgraphPathInfos.push(\n        ...options.map((p) => ({ path: p, contexts: newContexts }))\n      );\n    }\n\n    return newSubgraphPathInfos.length === 0\n      ? {\n          error: satisfiabilityError(\n            newPath,\n            subgraphPathInfos.map((p) => p.path.path),\n            deadEnds.map((d) => d.toUnadvanceables())\n          )\n        }\n      : { newSubgraphPathInfos };\n  }\n\n  private static fieldIfTopLevelMutation(\n    supergraphPath: RootPath<Transition>,\n    edge: Edge,\n  ): FieldDefinition<CompositeType> | null {\n    if (supergraphPath.size !== 0) {\n      return null;\n    }\n    if (edge.transition.kind !== 'FieldCollection') {\n      return null;\n    }\n    if (supergraphPath.root !== supergraphPath.graph.root('mutation')) {\n      return null;\n    }\n    return edge.transition.definition;\n  }\n\n  private static subgraphOfTopLevelMutation(\n    subgraphPathInfo: SubgraphPathInfo\n  ): string {\n    const lastEdge = subgraphPathInfo.path.path.lastEdge();\n    assert(lastEdge, \"Path unexpectedly missing edge\");\n    return lastEdge.head.source;\n  }\n\n  allSubgraphPathInfos(): SubgraphPathInfo[] {\n    return this.subgraphPathInfos instanceof SubgraphPathInfos\n      ? this.subgraphPathInfos.paths\n      : Array.from(this.subgraphPathInfos.paths.values()).flat();\n  }\n\n  allSubgraphPathsCount(): number {\n    if (this.subgraphPathInfos instanceof SubgraphPathInfos) {\n      return this.subgraphPathInfos.paths.length;\n    } else {\n      let count = 0;\n      for (const subgraphPathInfos of this.subgraphPathInfos.paths.values()) {\n        count += subgraphPathInfos.length;\n      }\n      return count;\n    }\n  }\n\n  currentSubgraphNames(): string[] {\n    const subgraphs: string[] = [];\n    for (const pathInfo of this.allSubgraphPathInfos()) {\n      const source = pathInfo.path.path.tail.source;\n      if (!subgraphs.includes(source)) {\n        subgraphs.push(source);\n      }\n    }\n    return subgraphs;\n  }\n\n  currentSubgraphContextKeys(\n    subgraphNameToGraphEnumValue: Map<string, string>,\n    subgraphPathInfos: SubgraphPathInfo[],\n  ): Set<string> {\n    const subgraphContextKeys: Set<string> = new Set();\n    for (const pathInfo of subgraphPathInfos) {\n      const tailSubgraphName = pathInfo.path.path.tail.source;\n      const tailSubgraphEnumValue = subgraphNameToGraphEnumValue.get(tailSubgraphName);\n      const tailTypeName = pathInfo.path.path.tail.type.name;\n      const entryKeys = [];\n      const contexts = Array.from(pathInfo.contexts.entries());\n      contexts.sort((a, b) => a[0].localeCompare(b[0]));\n      for (const [context, { subgraphName, typeName }] of contexts) {\n        const subgraphEnumValue = subgraphNameToGraphEnumValue.get(subgraphName);\n        entryKeys.push(`${context}=${subgraphEnumValue}.${typeName}`);\n      }\n      subgraphContextKeys.add(\n        `${tailSubgraphEnumValue}.${tailTypeName}[${entryKeys.join(',')}]`\n      );\n    }\n    return subgraphContextKeys;\n  }\n\n  currentSubgraphs(): { name: string, schema: Schema }[] {\n    const allSubgraphPathInfos = this.allSubgraphPathInfos();\n    if (allSubgraphPathInfos.length === 0) {\n      return [];\n    }\n    const sources = allSubgraphPathInfos[0].path.path.graph.sources;\n    return this.currentSubgraphNames().map((name) => ({ name, schema: sources.get(name)!}));\n  }\n\n  toString(): string {\n    if (this.subgraphPathInfos instanceof SubgraphPathInfos) {\n      return `${this.supergraphPath} <=> [${this.subgraphPathInfos.paths.map(\n        p => p.path.toString()\n      ).join(', ')}]`;\n    } else {\n      return `${this.supergraphPath} <=> {${\n        Array.from(this.subgraphPathInfos.paths.entries()).map(\n          ([s, p]) => `${s}: [${p.map(p => p.path.toString()).join(', ')}]`\n        ).join(', ')\n      }}`;\n    }\n  }\n}\n\n// `maybeSuperset` is a superset (or equal) if it contains all of `other`'s\n// subgraphs and all of `other`'s labels (with matching conditions).\nfunction isSupersetOrEqual(maybeSuperset: VertexVisit, other: VertexVisit): boolean {\n  const includesAllSubgraphs = [...other.subgraphContextKeys]\n    .every((s) => maybeSuperset.subgraphContextKeys.has(s));\n  const includesAllOverrideConditions = [...other.overrideConditions.entries()].every(([label, value]) =>\n    maybeSuperset.overrideConditions.get(label) === value\n  );\n\n  return includesAllSubgraphs && includesAllOverrideConditions;\n}\n\ninterface VertexVisit {\n  subgraphContextKeys: Set<string>;\n  overrideConditions: Map<string, boolean>;\n}\n\nclass ValidationTraversal {\n  private readonly conditionResolver: ConditionResolver;\n  // The stack contains all states that aren't terminal.\n  private readonly stack: ValidationState[] = [];\n\n  // For each vertex in the supergraph, records if we've already visited that vertex and in which subgraphs we were.\n  // For a vertex, we may have multiple \"sets of subgraphs\", hence the double-array.\n  private readonly previousVisits: QueryGraphState<VertexVisit[]>;\n\n  private readonly validationErrors: GraphQLError[] = [];\n  private readonly validationHints: CompositionHint[] = [];\n\n  // When we discover a shared top-level mutation field, we track satisfiability\n  // errors for each subgraph containing the field separately. This is because\n  // the query planner needs to avoid calling these fields more than once, which\n  // means there must be no satisfiability errors for (at least) one subgraph.\n  // The first Map key is the field coordinate, and the second Map key is the\n  // subgraph name.\n  private readonly satisfiabilityErrorsByMutationFieldAndSubgraph: Map<\n    string, Map<string, GraphQLError[]>\n  > = new Map();\n\n  private readonly context: ValidationContext;\n  private totalValidationSubgraphPaths = 0;\n  private maxValidationSubgraphPaths: number;\n\n  private static DEFAULT_MAX_VALIDATION_SUBGRAPH_PATHS = 1000000;\n\n  constructor(\n    supergraphSchema: Schema,\n    subgraphNameToGraphEnumValue: Map<string, string>,\n    supergraphAPI: QueryGraph,\n    federatedQueryGraph: QueryGraph,\n    compositionOptions: CompositionOptions,\n  ) {\n    this.maxValidationSubgraphPaths = compositionOptions.maxValidationSubgraphPaths\n      ?? ValidationTraversal.DEFAULT_MAX_VALIDATION_SUBGRAPH_PATHS;\n\n    this.conditionResolver = simpleValidationConditionResolver({\n      supergraph: supergraphSchema,\n      queryGraph: federatedQueryGraph,\n      withCaching: true,\n    });\n    supergraphAPI.rootKinds().forEach((kind) => this.pushStack(ValidationState.initial({\n      supergraphAPI,\n      kind,\n      federatedQueryGraph,\n      conditionResolver: this.conditionResolver,\n      overrideConditions: new Map(),\n    })));\n    this.previousVisits = new QueryGraphState();\n    this.context = new ValidationContext(\n      supergraphSchema,\n      subgraphNameToGraphEnumValue,\n    );\n  }\n\n  pushStack(state: ValidationState): { error?: GraphQLError } {\n    this.totalValidationSubgraphPaths += state.allSubgraphPathsCount();\n    this.stack.push(state);\n    if (this.totalValidationSubgraphPaths > this.maxValidationSubgraphPaths) {\n      return {\n        error: ERRORS.MAX_VALIDATION_SUBGRAPH_PATHS_EXCEEDED.err(\n          `Maximum number of validation subgraph paths exceeded: ${this.totalValidationSubgraphPaths}`\n        )\n      };\n    }\n    return {};\n  }\n\n  popStack() {\n    const state = this.stack.pop();\n    if (state) {\n      this.totalValidationSubgraphPaths -= state.allSubgraphPathsCount();\n    }\n    return state;\n  }\n\n  validate(): {\n    errors: GraphQLError[],\n    hints: CompositionHint[],\n  } {\n    while (this.stack.length > 0) {\n      const { error } = this.handleState(this.popStack()!);\n      if (error) {\n        return { errors: [error], hints: this.validationHints };\n      }\n    }\n    for (const [\n      fieldCoordinate,\n      errorsBySubgraph,\n    ] of this.satisfiabilityErrorsByMutationFieldAndSubgraph) {\n      // Check if some subgraph has no satisfiability errors. If so, then that\n      // subgraph can be used to satisfy all queries to the top-level mutation\n      // field, and we can ignore the errors in other subgraphs.\n      let someSubgraphHasNoErrors = false;\n      for (const errors of errorsBySubgraph.values()) {\n        if (errors.length === 0) {\n          someSubgraphHasNoErrors = true;\n          break;\n        }\n      }\n      if (someSubgraphHasNoErrors) {\n        continue;\n      }\n      // Otherwise, queries on the top-level mutation field can't be satisfied\n      // through only one call to that field.\n      let messageParts = [\n        `Supergraph API queries using the mutation field \"${fieldCoordinate}\"`\n          + ` at top-level must be satisfiable without needing to call that`\n          + ` field from multiple subgraphs, but every subgraph with that field`\n          + ` encounters satisfiability errors. Please fix these satisfiability`\n          + ` errors for (at least) one of the following subgraphs with the`\n          + ` mutation field:`\n      ];\n      for (const [subgraph, errors] of errorsBySubgraph) {\n        messageParts.push(\n          `- When calling \"${fieldCoordinate}\" at top-level from subgraph`\n            +` \"${subgraph}\":`\n        );\n        for (const error of errors) {\n          for (const line of error.message.split(\"\\n\")) {\n            if (line.length === 0) {\n              messageParts.push(line);\n            } else {\n              messageParts.push(\"  \" + line);\n            }\n          }\n        }\n      }\n      this.validationErrors.push(\n        ERRORS.SATISFIABILITY_ERROR.err(messageParts.join(\"\\n\"))\n      );\n    }\n    return { errors: this.validationErrors, hints: this.validationHints };\n  }\n\n  private handleState(state: ValidationState): { error?: GraphQLError } {\n    debug.group(() => `Validation: ${this.stack.length + 1} open states. Validating ${state}`);\n    if (state.canSkipVisit(\n      this.context.subgraphNameToGraphEnumValue,\n      this.previousVisits\n    )) {\n      return {};\n    }\n\n    // Note that if supergraphPath is terminal, this method is a no-op, which is expected/desired as\n    // it means we've successfully \"validate\" a path to its end.\n    for (const edge of state.supergraphPath.nextEdges()) {\n      if (edge.isEdgeForField(typenameFieldName)) {\n        // There is no point in validating __typename edges: we know we can always get those.\n        continue;\n      }\n\n      // `state.selectedOverrideConditions` indicates the labels (and their\n      // respective conditions) that we've selected so far in our traversal\n      // (i.e. \"foo\" -> true). There's no need to validate edges that share the\n      // same label with the opposite condition since they're unreachable during\n      // query planning.\n      if (\n        edge.overrideCondition\n        && state.selectedOverrideConditions.has(edge.overrideCondition.label)\n        && !edge.satisfiesOverrideConditions(state.selectedOverrideConditions)\n      ) {\n        debug.groupEnd(`Edge ${edge} doesn't satisfy label condition: ${edge.overrideCondition?.label}(${state.selectedOverrideConditions.get(edge.overrideCondition?.label ?? \"\")}), no need to validate further`);\n        continue;\n      }\n\n      const matchingContexts = edge.transition.kind === 'FieldCollection'\n        ? this.context.matchingContexts(edge.head.type.name)\n        : [];\n\n      debug.group(() => `Validating supergraph edge ${edge}`);\n      const { state: newState, hint } = state.validateTransition(\n        this.context,\n        edge,\n        matchingContexts,\n        this.validationErrors,\n        this.satisfiabilityErrorsByMutationFieldAndSubgraph,\n      );\n      if (!newState) {\n        debug.groupEnd(`Validation error!`);\n        continue;\n      }\n      if (hint) {\n        this.validationHints.push(hint);\n      }\n\n      // The check for `isTerminal` is not strictly necessary as if we add a terminal\n      // state to the stack this method, `handleState`, will do nothing later. But it's\n      // worth checking it now and save some memory/cycles.\n      if (newState && !newState.supergraphPath.isTerminal()) {\n        const { error } = this.pushStack(newState);\n        if (error) {\n          return { error };\n        }\n        debug.groupEnd(() => `Reached new state ${newState}`);\n      } else {\n        debug.groupEnd(`Reached terminal vertex/cycle`);\n      }\n    }\n    debug.groupEnd();\n    return {};\n  }\n}\n", "import {\n  printSchema,\n  Schema,\n  Subgraphs,\n  defaultPrintOptions,\n  shallowOrderPrintedDefinitions,\n  PrintOptions,\n  ServiceDefinition,\n  subgraphsFromServiceList,\n  upgradeSubgraphsIfNecessary,\n  SubtypingRule,\n  assert,\n  Supergraph,\n} from \"@apollo/federation-internals\";\nimport { GraphQLError } from \"graphql\";\nimport { buildFederatedQueryGraph, buildSupergraphAPIQueryGraph } from \"@apollo/query-graphs\";\nimport { MergeResult, mergeSubgraphs } from \"./merging\";\nimport { validateGraphComposition } from \"./validate\";\nimport { CompositionHint } from \"./hints\";\n\nexport type CompositionResult = CompositionFailure | CompositionSuccess;\n\nexport interface CompositionFailure {\n  errors: GraphQLError[];\n  schema?: undefined;\n  supergraphSdl?: undefined;\n  hints?: undefined;\n}\n\nexport interface CompositionSuccess {\n  schema: Schema;\n  supergraphSdl: string;\n  hints: CompositionHint[];\n  errors?: undefined;\n}\n\nexport interface CompositionOptions {\n  sdlPrintOptions?: PrintOptions;\n  allowedFieldTypeMergingSubtypingRules?: SubtypingRule[];\n  /// Flag to toggle if satisfiability should be performed during composition\n  runSatisfiability?: boolean;\n  /// Maximum allowable number of outstanding subgraph paths to validate\n  maxValidationSubgraphPaths?: number;\n}\n\nfunction validateCompositionOptions(options: CompositionOptions) {\n  // TODO: we currently cannot allow \"list upgrades\", meaning a subgraph returning `String` and another returning `[String]`. To support it, we would need the execution code to\n  // recognize situation and \"coerce\" results from the first subgraph (the one returning `String`) into singleton lists.\n  assert(!options?.allowedFieldTypeMergingSubtypingRules?.includes(\"list_upgrade\"), \"The `list_upgrade` field subtyping rule is currently not supported\");\n}\n\n/**\n * Used to compose a supergraph from subgraphs\n * `options.runSatisfiability` will default to `true`\n *\n * @param subgraphs Subgraphs\n * @param options CompositionOptions\n */\nexport function compose(subgraphs: Subgraphs, options: CompositionOptions = {}): CompositionResult {\n  const { runSatisfiability = true, sdlPrintOptions, maxValidationSubgraphPaths } = options;\n\n  validateCompositionOptions(options);\n\n  const mergeResult = validateSubgraphsAndMerge(subgraphs);\n  if (mergeResult.errors) {\n    return { errors: mergeResult.errors };\n  }\n\n  let satisfiabilityResult;\n  if (runSatisfiability) {\n    satisfiabilityResult = validateSatisfiability({\n      supergraphSchema: mergeResult.supergraph,\n    }, { maxValidationSubgraphPaths });\n    if (satisfiabilityResult.errors) {\n      return { errors: satisfiabilityResult.errors };\n    }\n  }\n\n  // printSchema calls validateOptions, which can throw\n  let supergraphSdl;\n  try {\n    supergraphSdl = printSchema(\n      mergeResult.supergraph,\n      sdlPrintOptions ?? shallowOrderPrintedDefinitions(defaultPrintOptions),\n    );\n  } catch (err) {\n    return { errors: [err] };\n  }\n\n  return {\n    schema: mergeResult.supergraph,\n    supergraphSdl,\n    hints: [...mergeResult.hints, ...(satisfiabilityResult?.hints ?? [])],\n  };\n}\n\n/**\n * Method to validate and compose services\n *\n * @param services List of Service definitions\n * @param options CompositionOptions\n * @returns CompositionResult\n */\nexport function composeServices(services: ServiceDefinition[], options: CompositionOptions = {}): CompositionResult  {\n  const subgraphs = subgraphsFromServiceList(services);\n  if (Array.isArray(subgraphs)) {\n    // Errors in subgraphs are not truly \"composition\" errors, but it's probably still the best place\n    // to surface them in this case. Not that `subgraphsFromServiceList` do ensure the errors will\n    // include the subgraph name in their message.\n    return { errors: subgraphs };\n  }\n\n  return compose(subgraphs, options);\n}\n\ntype SatisfiabilityArgs = {\n  supergraphSchema: Schema\n  supergraphSdl?: never\n} | { supergraphSdl: string, supergraphSchema?: never };\n\n/**\n * Run satisfiability check for a supergraph\n *\n * Can pass either the supergraph's Schema or SDL to validate\n * @param args: SatisfiabilityArgs\n * @returns { errors? : GraphQLError[], hints? : CompositionHint[] }\n */\nexport function validateSatisfiability({ supergraphSchema, supergraphSdl} : SatisfiabilityArgs, options: CompositionOptions = {}) : {\n  errors? : GraphQLError[],\n  hints? : CompositionHint[],\n} {\n  // We pass `null` for the `supportedFeatures` to disable the feature support validation. Validating feature support\n  // is useful when executing/handling a supergraph, but here we're just validating the supergraph we've just created,\n  // and there is no reason to error due to an unsupported feature.\n  const supergraph = supergraphSchema ? new Supergraph(supergraphSchema, null) : Supergraph.build(supergraphSdl, { supportedFeatures: null });\n  const supergraphQueryGraph = buildSupergraphAPIQueryGraph(supergraph);\n  const federatedQueryGraph = buildFederatedQueryGraph(supergraph, false);\n  return validateGraphComposition(supergraph.schema, supergraph.subgraphNameToGraphEnumValue(), supergraphQueryGraph, federatedQueryGraph, options);\n}\n\ntype ValidateSubgraphsAndMergeResult = MergeResult | { errors: GraphQLError[] };\n\n/**\n * Upgrade subgraphs if necessary, then validates subgraphs before attempting to merge\n *\n * @param subgraphs\n * @returns ValidateSubgraphsAndMergeResult\n */\nfunction validateSubgraphsAndMerge(subgraphs: Subgraphs) : ValidateSubgraphsAndMergeResult {\n  const upgradeResult = upgradeSubgraphsIfNecessary(subgraphs);\n  if (upgradeResult.errors) {\n    return { errors: upgradeResult.errors };\n  }\n\n  const toMerge = upgradeResult.subgraphs;\n  const validationErrors = toMerge.validate();\n  if (validationErrors) {\n    return { errors: validationErrors };\n  }\n\n  return mergeSubgraphs(toMerge);\n}\n", "export * from './compose';\nexport * from './merging';\nexport * from './validate';\n", "// TODO(trevor:removeServiceList) the whole file goes away\nimport type { Logger } from '@apollo/utils.logger';\nimport { composeServices } from '@apollo/composition';\nimport {\n  GetDataSourceFunction,\n  SupergraphSdlHookOptions,\n  SupergraphManager,\n} from '../../config';\nimport { ServiceDefinition } from '@apollo/federation-internals';\n\nexport interface LocalComposeOptions {\n  logger?: Logger;\n  localServiceList: ServiceDefinition[];\n}\n\nexport class LocalCompose implements SupergraphManager {\n  private config: LocalComposeOptions;\n  private getDataSource?: GetDataSourceFunction;\n\n  constructor(options: LocalComposeOptions) {\n    this.config = options;\n    this.issueDeprecationWarnings();\n  }\n\n  private issueDeprecationWarnings() {\n    this.config.logger?.warn(\n      'The `localServiceList` option is deprecated and will be removed in a future version of `@apollo/gateway`. Please migrate to the `LocalCompose` supergraph manager exported by `@apollo/gateway`.',\n    );\n  }\n\n  public async initialize({ getDataSource }: SupergraphSdlHookOptions) {\n    this.getDataSource = getDataSource;\n    let supergraphSdl: string | null = null;\n    try {\n      supergraphSdl = this.createSupergraphFromServiceList(\n        this.config.localServiceList,\n      );\n    } catch (e) {\n      this.logUpdateFailure(e);\n      throw e;\n    }\n    return {\n      supergraphSdl,\n    };\n  }\n\n  private createSupergraphFromServiceList(serviceList: ServiceDefinition[]) {\n    this.config.logger?.debug(\n      `Composing schema from service list: \\n${serviceList\n        .map(({ name, url }) => `  ${url || 'local'}: ${name}`)\n        .join('\\n')}`,\n    );\n\n    const compositionResult = composeServices(serviceList);\n    const errors = compositionResult.errors;\n    if (errors) {\n      throw Error(\n        \"A valid schema couldn't be composed. The following composition errors were found:\\n\" +\n          errors.map((e) => '\\t' + e.message).join('\\n'),\n      );\n    } else {\n      const { supergraphSdl } = compositionResult;\n      for (const service of serviceList) {\n        this.getDataSource?.(service);\n      }\n\n      this.config.logger?.debug('Schema loaded and ready for execution');\n\n      return supergraphSdl;\n    }\n  }\n\n  private logUpdateFailure(e: any) {\n    this.config.logger?.error(\n      'LocalCompose failed to update supergraph with the following error: ' +\n        (e.message ?? e),\n    );\n  }\n}\n", "export type Resolvable<T> = Promise<T> & {\n  resolve: (t: T) => void,\n  reject: (e: any) => void,\n}\nconst resolvablePromise = <T = void>(): Resolvable<T> => {\n  let resolve: (val: T) => void\n  let reject: (err: any) => void\n  const promise = new Promise<T>((_resolve, _reject) => {\n    resolve = _resolve\n    reject = _reject\n  }) as Resolvable<T>\n  promise.resolve = resolve!\n  promise.reject = reject!\n  return promise\n}\nexport default resolvablePromise\nmodule.exports = resolvablePromise\n", "/**\n * Similar in concept to `IntrospectAndCompose`, but this handles\n * the `experimental_updateComposition` and `experimental_updateSupergraphSdl`\n * configuration options of the gateway and will be removed in a future release\n * along with those options.\n */\nimport type { Logger } from '@apollo/utils.logger';\nimport resolvable from '@josephg/resolvable';\nimport {\n  SupergraphManager,\n  SupergraphSdlHookOptions,\n  DynamicGatewayConfig,\n  isSupergraphSdlUpdate,\n  isServiceDefinitionUpdate,\n  ServiceDefinitionUpdate,\n  GetDataSourceFunction,\n} from '../../config';\nimport {\n  Experimental_UpdateComposition,\n  SubgraphHealthCheckFunction,\n  SupergraphSdlUpdateFunction,\n} from '../..';\nimport { composeServices } from '@apollo/composition';\nimport { ServiceDefinition } from '@apollo/federation-internals';\n\nexport interface LegacyFetcherOptions {\n  pollIntervalInMs?: number;\n  logger?: Logger;\n  subgraphHealthCheck?: boolean;\n  updateServiceDefinitions: Experimental_UpdateComposition;\n  gatewayConfig: DynamicGatewayConfig;\n}\n\ntype State =\n  | { phase: 'initialized' }\n  | { phase: 'polling'; pollingPromise?: Promise<void> }\n  | { phase: 'stopped' };\n\nexport class LegacyFetcher implements SupergraphManager {\n  private config: LegacyFetcherOptions;\n  private update?: SupergraphSdlUpdateFunction;\n  private healthCheck?: SubgraphHealthCheckFunction;\n  private getDataSource?: GetDataSourceFunction;\n  private timerRef: NodeJS.Timeout | null = null;\n  private state: State;\n  private compositionId?: string;\n  private serviceDefinitions?: ServiceDefinition[];\n\n  constructor(options: LegacyFetcherOptions) {\n    this.config = options;\n    this.state = { phase: 'initialized' };\n    this.issueDeprecationWarnings();\n  }\n\n  private issueDeprecationWarnings() {\n    if ('experimental_updateSupergraphSdl' in this.config.gatewayConfig) {\n      this.config.logger?.warn(\n        'The `experimental_updateSupergraphSdl` option is deprecated and will be removed in a future version of `@apollo/gateway`. Please migrate to the function form of the `supergraphSdl` configuration option.',\n      );\n    }\n\n    if ('experimental_updateServiceDefinitions' in this.config.gatewayConfig) {\n      this.config.logger?.warn(\n        'The `experimental_updateServiceDefinitions` option is deprecated and will be removed in a future version of `@apollo/gateway`. Please migrate to the function form of the `supergraphSdl` configuration option.',\n      );\n    }\n  }\n\n  public async initialize({\n    update,\n    healthCheck,\n    getDataSource,\n  }: SupergraphSdlHookOptions) {\n    this.update = update;\n    this.getDataSource = getDataSource;\n\n    if (this.config.subgraphHealthCheck) {\n      this.healthCheck = healthCheck;\n    }\n\n    let initialSupergraphSdl: string | null = null;\n    try {\n      initialSupergraphSdl = await this.updateSupergraphSdl();\n    } catch (e) {\n      this.logUpdateFailure(e);\n      throw e;\n    }\n\n    // Start polling after we resolve the first supergraph\n    if (this.config.pollIntervalInMs) {\n      this.beginPolling();\n    }\n\n    return {\n      // on init, this supergraphSdl should never actually be `null`.\n      // `this.updateSupergraphSdl()` will only return null if the schema hasn't\n      // changed over the course of an _update_.\n      supergraphSdl: initialSupergraphSdl!,\n      cleanup: async () => {\n        if (this.state.phase === 'polling') {\n          await this.state.pollingPromise;\n        }\n        this.state = { phase: 'stopped' };\n        if (this.timerRef) {\n          clearTimeout(this.timerRef);\n          this.timerRef = null;\n        }\n      },\n    };\n  }\n\n  private async updateSupergraphSdl() {\n    const result = await this.config.updateServiceDefinitions(\n      this.config.gatewayConfig,\n    );\n\n    if (isSupergraphSdlUpdate(result)) {\n      // no change\n      if (this.compositionId === result.id) return null;\n\n      await this.healthCheck?.(result.supergraphSdl);\n      this.compositionId = result.id;\n      return result.supergraphSdl;\n    } else if (isServiceDefinitionUpdate(result)) {\n      const supergraphSdl = this.updateByComposition(result);\n      if (!supergraphSdl) return null;\n      await this.healthCheck?.(supergraphSdl);\n      return supergraphSdl;\n    } else {\n      throw new Error(\n        'Programming error: unexpected result type from `updateServiceDefinitions`',\n      );\n    }\n  }\n\n  private updateByComposition(result: ServiceDefinitionUpdate) {\n    if (\n      !result.serviceDefinitions ||\n      JSON.stringify(this.serviceDefinitions) ===\n        JSON.stringify(result.serviceDefinitions)\n    ) {\n      this.config.logger?.debug(\n        'No change in service definitions since last check.',\n      );\n      return null;\n    }\n\n    if (this.serviceDefinitions) {\n      this.config.logger?.info('New service definitions were found.');\n    }\n\n    this.serviceDefinitions = result.serviceDefinitions;\n\n    const supergraphSdl = this.createSupergraphFromServiceList(\n      result.serviceDefinitions,\n    );\n\n    if (!supergraphSdl) {\n      throw new Error(\n        \"A valid schema couldn't be composed. Falling back to previous schema.\",\n      );\n    } else {\n      return supergraphSdl;\n    }\n  }\n\n  private createSupergraphFromServiceList(serviceList: ServiceDefinition[]) {\n    this.config.logger?.debug(\n      `Composing schema from service list: \\n${serviceList\n        .map(({ name, url }) => `  ${url || 'local'}: ${name}`)\n        .join('\\n')}`,\n    );\n\n    const compositionResult = composeServices(serviceList);\n\n    if (compositionResult.errors) {\n      const { errors } = compositionResult;\n      throw Error(\n        \"A valid schema couldn't be composed. The following composition errors were found:\\n\" +\n          errors.map((e) => '\\t' + e.message).join('\\n'),\n      );\n    } else {\n      const { supergraphSdl } = compositionResult;\n      for (const service of serviceList) {\n        this.getDataSource?.(service);\n      }\n\n      this.config.logger?.debug('Schema loaded and ready for execution');\n\n      return supergraphSdl;\n    }\n  }\n\n  private beginPolling() {\n    this.state = { phase: 'polling' };\n    this.poll();\n  }\n\n  private poll() {\n    this.timerRef = setTimeout(async () => {\n      if (this.state.phase === 'polling') {\n        const pollingPromise = resolvable();\n\n        this.state.pollingPromise = pollingPromise;\n        try {\n          const maybeNewSupergraphSdl = await this.updateSupergraphSdl();\n          if (maybeNewSupergraphSdl) {\n            this.update?.(maybeNewSupergraphSdl);\n          }\n        } catch (e) {\n          this.logUpdateFailure(e);\n        }\n        pollingPromise.resolve();\n      }\n\n      this.poll();\n    }, this.config.pollIntervalInMs!);\n  }\n\n  private logUpdateFailure(e: any) {\n    this.config.logger?.error(\n      'LegacyFetcher failed to update supergraph with the following error: ' +\n        (e.message ?? e),\n    );\n  }\n}\n", "import { parse } from 'graphql';\nimport { Headers, type HeadersInit } from 'node-fetch';\nimport { ServiceDefinition } from '@apollo/federation-internals';\nimport { GraphQLDataSource, GraphQLDataSourceRequestKind } from '../../datasources/types';\nimport { SERVICE_DEFINITION_QUERY } from '../..';\nimport { ServiceDefinitionUpdate, ServiceEndpointDefinition } from '../../config';\nimport { GatewayGraphQLRequest } from '@apollo/server-gateway-interface';\n\nexport type Service = ServiceEndpointDefinition & {\n  dataSource: GraphQLDataSource;\n};\n\nexport async function loadServicesFromRemoteEndpoint({\n  serviceList,\n  getServiceIntrospectionHeaders,\n  serviceSdlCache,\n}: {\n  serviceList: Service[];\n  getServiceIntrospectionHeaders: (\n    service: ServiceEndpointDefinition,\n  ) => Promise<HeadersInit | undefined>;\n  serviceSdlCache: Map<string, string>;\n}): Promise<ServiceDefinitionUpdate> {\n  if (!serviceList || !serviceList.length) {\n    throw new Error(\n      'Tried to load services from remote endpoints but none provided',\n    );\n  }\n\n  let isNewSchema = false;\n  // for each service, fetch its introspection schema\n  const promiseOfServiceList = serviceList.map(async ({ name, url, dataSource }) => {\n    if (!url) {\n      throw new Error(\n        `Tried to load schema for '${name}' but no 'url' was specified.`);\n    }\n\n    const request: GatewayGraphQLRequest = {\n      query: SERVICE_DEFINITION_QUERY,\n      http: {\n        url,\n        method: 'POST',\n        headers: new Headers(await getServiceIntrospectionHeaders({ name, url })),\n      },\n    };\n\n    return dataSource\n      .process({\n        kind: GraphQLDataSourceRequestKind.LOADING_SCHEMA,\n        request,\n        context: {},\n      })\n      .then(({ data, errors }): ServiceDefinition => {\n        if (data && !errors) {\n          const typeDefs = data._service.sdl as string;\n          const previousDefinition = serviceSdlCache.get(name);\n          // this lets us know if any downstream service has changed\n          // and we need to recalculate the schema\n          if (previousDefinition !== typeDefs) {\n            isNewSchema = true;\n          }\n          serviceSdlCache.set(name, typeDefs);\n          return {\n            name,\n            url,\n            typeDefs: parse(typeDefs),\n          };\n        }\n\n        throw new Error(errors?.map((e) => e.message).join('\\n'));\n      })\n      .catch((err) => {\n        const errorMessage =\n          `Couldn't load service definitions for \"${name}\" at ${url}` +\n          (err && err.message ? ': ' + err.message || err : '');\n\n        throw new Error(errorMessage);\n      });\n  });\n\n  const serviceDefinitions = await Promise.all(promiseOfServiceList);\n  return { serviceDefinitions, isNewSchema }\n}\n", "import type { Logger } from '@apollo/utils.logger';\nimport type { HeadersInit } from 'node-fetch';\nimport resolvable from '@josephg/resolvable';\nimport {\n  ServiceEndpointDefinition,\n  SupergraphSdlUpdateFunction,\n  SubgraphHealthCheckFunction,\n} from '../..';\nimport {\n  loadServicesFromRemoteEndpoint,\n  Service,\n} from './loadServicesFromRemoteEndpoint';\nimport { SupergraphManager, SupergraphSdlHookOptions } from '../../config';\nimport { composeServices } from '@apollo/composition';\nimport { ServiceDefinition } from '@apollo/federation-internals';\n\nexport interface IntrospectAndComposeOptions {\n  subgraphs: ServiceEndpointDefinition[];\n  introspectionHeaders?:\n    | HeadersInit\n    | ((\n        service: ServiceEndpointDefinition,\n      ) => Promise<HeadersInit> | HeadersInit);\n  pollIntervalInMs?: number;\n  logger?: Logger;\n  subgraphHealthCheck?: boolean;\n}\n\ntype State =\n  | { phase: 'initialized' }\n  | { phase: 'polling'; pollingPromise?: Promise<void> }\n  | { phase: 'stopped' };\n\nexport class IntrospectAndCompose implements SupergraphManager {\n  private config: IntrospectAndComposeOptions;\n  private update?: SupergraphSdlUpdateFunction;\n  private healthCheck?: SubgraphHealthCheckFunction;\n  private subgraphs?: Service[];\n  private serviceSdlCache: Map<string, string> = new Map();\n  private timerRef: NodeJS.Timeout | null = null;\n  private state: State;\n\n  constructor(options: IntrospectAndComposeOptions) {\n    this.config = options;\n    this.state = { phase: 'initialized' };\n  }\n\n  public async initialize({ update, getDataSource, healthCheck }: SupergraphSdlHookOptions) {\n    this.update = update;\n\n    if (this.config.subgraphHealthCheck) {\n      this.healthCheck = healthCheck;\n    }\n\n    this.subgraphs = this.config.subgraphs.map((subgraph) => ({\n      ...subgraph,\n      dataSource: getDataSource(subgraph),\n    }));\n\n    let initialSupergraphSdl: string | null = null;\n    try {\n      initialSupergraphSdl = await this.updateSupergraphSdl();\n    } catch (e) {\n      this.logUpdateFailure(e);\n      throw e;\n    }\n\n    // Start polling after we resolve the first supergraph\n    if (this.config.pollIntervalInMs) {\n      this.beginPolling();\n    }\n\n    return {\n      // on init, this supergraphSdl should never actually be `null`.\n      // `this.updateSupergraphSdl()` will only return null if the schema hasn't\n      // changed over the course of an _update_.\n      supergraphSdl: initialSupergraphSdl!,\n      cleanup: async () => {\n        if (this.state.phase === 'polling') {\n          await this.state.pollingPromise;\n        }\n        this.state = { phase: 'stopped' };\n        if (this.timerRef) {\n          clearTimeout(this.timerRef);\n          this.timerRef = null;\n        }\n      },\n    };\n  }\n\n  private async updateSupergraphSdl() {\n    const result = await loadServicesFromRemoteEndpoint({\n      serviceList: this.subgraphs!,\n      getServiceIntrospectionHeaders: async (service) => {\n        return typeof this.config.introspectionHeaders === 'function'\n          ? await this.config.introspectionHeaders(service)\n          : this.config.introspectionHeaders;\n      },\n      serviceSdlCache: this.serviceSdlCache,\n    });\n\n    if (!result.isNewSchema) {\n      return null;\n    }\n\n    const supergraphSdl = this.createSupergraphFromSubgraphList(result.serviceDefinitions!);\n    // the healthCheck fn is only assigned if it's enabled in the config\n    await this.healthCheck?.(supergraphSdl);\n\n    return supergraphSdl;\n  }\n\n  private createSupergraphFromSubgraphList(subgraphs: ServiceDefinition[]) {\n    const compositionResult = composeServices(subgraphs);\n\n    if (compositionResult.errors) {\n      const { errors } = compositionResult;\n      throw Error(\n        \"A valid schema couldn't be composed. The following composition errors were found:\\n\" +\n          errors.map((e) => '\\t' + e.message).join('\\n'),\n      );\n    } else {\n      const { supergraphSdl } = compositionResult;\n      return supergraphSdl;\n    }\n  }\n\n  private beginPolling() {\n    this.state = { phase: 'polling' };\n    this.poll();\n  }\n\n  private poll() {\n    this.timerRef = setTimeout(async () => {\n      if (this.state.phase === 'polling') {\n        const pollingPromise = resolvable();\n\n        this.state.pollingPromise = pollingPromise;\n        try {\n          const maybeNewSupergraphSdl = await this.updateSupergraphSdl();\n          if (maybeNewSupergraphSdl) {\n            this.update?.(maybeNewSupergraphSdl);\n          }\n        } catch (e) {\n          this.logUpdateFailure(e);\n        }\n        pollingPromise.resolve();\n      }\n\n      this.poll();\n    }, this.config.pollIntervalInMs!);\n  }\n\n  private logUpdateFailure(e: any) {\n    this.config.logger?.error(\n      'IntrospectAndCompose failed to update supergraph with the following error: ' +\n        (e.message ?? e),\n    );\n  }\n}\n", "import loglevel from 'loglevel';\nimport type { Logger } from '@apollo/utils.logger';\n\nexport function getDefaultLogger(debug: boolean = false): Logger {\n  const logger = loglevel.getLogger('apollo-gateway');\n\n  const level = debug === true ? loglevel.levels.DEBUG : loglevel.levels.WARN;\n  logger.setLevel(level);\n\n  return logger;\n}\n", "import { GraphQLError } from 'graphql';\nimport retry from 'async-retry';\nimport { AbortController } from \"node-abort-controller\";\nimport { SupergraphSdlUpdate } from '../../config';\nimport { SupergraphSdlQuery } from '../../__generated__/graphqlTypes';\nimport type {\n  FetcherResponse,\n  Fetcher,\n  FetcherRequestInit,\n} from '@apollo/utils.fetcher';\nimport type { Logger } from '@apollo/utils.logger';\n\n// Magic /* GraphQL */ comment below is for codegen, do not remove\nexport const SUPERGRAPH_SDL_QUERY = /* GraphQL */`#graphql\n  query SupergraphSdl($apiKey: String!, $ref: String!, $ifAfterId: ID) {\n    routerConfig(ref: $ref, apiKey: $apiKey, ifAfterId: $ifAfterId) {\n      __typename\n      ... on RouterConfigResult {\n        id\n        supergraphSdl: supergraphSDL\n        minDelaySeconds\n      }\n      ... on FetchError {\n        code\n        message\n      }\n    }\n  }\n`;\n\n\ntype SupergraphSdlQueryResult =\n  | SupergraphSdlQuerySuccess\n  | SupergraphSdlQueryFailure;\n\ninterface SupergraphSdlQuerySuccess {\n  data: SupergraphSdlQuery;\n}\n\ninterface SupergraphSdlQueryFailure {\n  data?: SupergraphSdlQuery;\n  errors: GraphQLError[];\n}\n\nconst { name, version } = require('../../../package.json');\n\nconst fetchErrorMsg = \"An error occurred while fetching your schema from Apollo: \";\n\nexport class UplinkFetcherError extends Error {\n  constructor(message: string) {\n    super(message);\n    this.name = 'UplinkFetcherError';\n  }\n}\n\nexport async function loadSupergraphSdlFromUplinks({\n  graphRef,\n  apiKey,\n  endpoints,\n  fetcher,\n  compositionId,\n  maxRetries,\n  requestTimeoutMs,\n  roundRobinSeed,\n  logger,\n}: {\n  graphRef: string;\n  apiKey: string;\n  endpoints: string[];\n  fetcher: Fetcher;\n  compositionId: string | null;\n  maxRetries: number,\n  requestTimeoutMs: number,\n  roundRobinSeed: number,\n  logger: Logger,\n}) : Promise<SupergraphSdlUpdate | null> {\n  // This Promise resolves with either an updated supergraph or null if no change.\n  // This Promise can reject in the case that none of the retries are successful,\n  // in which case it will reject with the most frequently encountered error.\n  return retry(\n    () =>\n      loadSupergraphSdlFromStorage({\n        graphRef,\n        apiKey,\n        endpoint: endpoints[roundRobinSeed++ % endpoints.length],\n        fetcher,\n        requestTimeoutMs,\n        compositionId,\n        logger,\n      }),\n    {\n      retries: maxRetries,\n      maxTimeout: 60_000,\n      onRetry(e, attempt) {\n        logger.debug(`Unable to fetch supergraph SDL (attempt ${attempt}), waiting before retry: ${e}`);\n      },\n    },\n  );\n}\n\nexport async function loadSupergraphSdlFromStorage({\n  graphRef,\n  apiKey,\n  endpoint,\n  fetcher,\n  requestTimeoutMs,\n  compositionId,\n  logger,\n}: {\n  graphRef: string;\n  apiKey: string;\n  endpoint: string;\n  fetcher: Fetcher;\n  requestTimeoutMs: number;\n  compositionId: string | null;\n  logger: Logger;\n}) : Promise<SupergraphSdlUpdate | null> {\n  const requestBody = JSON.stringify({\n    query: SUPERGRAPH_SDL_QUERY,\n    variables: {\n      ref: graphRef,\n      apiKey,\n      ifAfterId: compositionId,\n    },\n  })\n\n  const controller = new AbortController();\n  const signal = setTimeout(() => {\n    logger.debug(`Aborting request due to timeout`);\n    controller.abort();\n  }, requestTimeoutMs);\n\n  const requestDetails: FetcherRequestInit = {\n    method: 'POST',\n    body: requestBody,\n    headers: {\n      'apollographql-client-name': name,\n      'apollographql-client-version': version,\n      'user-agent': `${name}/${version}`,\n      'content-type': 'application/json',\n    },\n    signal: controller.signal,\n  };\n\n  logger.debug(`\uD83D\uDD27 Fetching ${graphRef} supergraph schema from ${endpoint} ifAfterId ${compositionId}`);\n\n  let result: FetcherResponse;\n  try {\n    result = await fetcher(endpoint, requestDetails);\n  } catch (e) {\n    throw new UplinkFetcherError(fetchErrorMsg + (e.message ?? e));\n  } finally {\n    clearTimeout(signal);\n  }\n\n  let response: SupergraphSdlQueryResult;\n\n  if (result.ok || result.status === 400) {\n    try {\n      response = await result.json();\n    } catch (e) {\n      // Bad response\n      throw new UplinkFetcherError(fetchErrorMsg + result.status + ' ' + e.message ?? e);\n    }\n\n    if ('errors' in response) {\n      throw new UplinkFetcherError(\n        [fetchErrorMsg, ...response.errors.map((error) => error.message)].join(\n          '\\n',\n        ),\n      );\n    }\n  } else {\n    throw new UplinkFetcherError(fetchErrorMsg + result.status + ' ' + result.statusText);\n  }\n\n  const { routerConfig } = response.data;\n  if (routerConfig.__typename === 'RouterConfigResult') {\n    const {\n      id,\n      supergraphSdl,\n      minDelaySeconds,\n      // messages,\n    } = routerConfig;\n    return { id, supergraphSdl, minDelaySeconds };\n  } else if (routerConfig.__typename === 'FetchError') {\n    // FetchError case\n    const { code, message } = routerConfig;\n    throw new UplinkFetcherError(`${code}: ${message}`);\n  } else if (routerConfig.__typename === 'Unchanged') {\n    return null;\n  } else {\n    throw new UplinkFetcherError('Programming error: unhandled response failure');\n  }\n}\n", "import * as makeFetchHappen from 'make-fetch-happen';\nimport type { Logger } from '@apollo/utils.logger';\nimport type { Fetcher } from '@apollo/utils.fetcher';\nimport resolvable, { Resolvable } from '@josephg/resolvable';\nimport { SupergraphManager, SupergraphSdlHookOptions } from '../../config';\nimport {\n  SubgraphHealthCheckFunction,\n  SupergraphSdlUpdateFunction,\n} from '../..';\nimport { getDefaultLogger } from '../../logger';\nimport { loadSupergraphSdlFromUplinks } from './loadSupergraphSdlFromStorage';\n\nexport type FailureToFetchSupergraphSdlFunctionParams = {\n  error: Error;\n  graphRef: string;\n  logger: Logger;\n  fetchCount: number;\n};\n\nexport type FailureToFetchSupergraphSdlDuringInit = ({\n  error,\n  graphRef,\n  logger,\n  fetchCount,\n}: FailureToFetchSupergraphSdlFunctionParams) => Promise<string>;\n\nexport type FailureToFetchSupergraphSdlAfterInit = ({\n  error,\n  graphRef,\n  logger,\n  fetchCount,\n  mostRecentSuccessfulFetchAt,\n}:\n  | FailureToFetchSupergraphSdlFunctionParams & {\n      mostRecentSuccessfulFetchAt?: Date;\n    }) => Promise<string | null>;\n\ntype State =\n  | { phase: 'constructed' }\n  | { phase: 'initialized' }\n  | {\n      phase: 'polling';\n      pollingPromise?: Promise<void>;\n      nextFetchPromise?: Resolvable<void>;\n    }\n  | { phase: 'stopped' };\n\nexport class UplinkSupergraphManager implements SupergraphManager {\n  public static readonly DEFAULT_REQUEST_TIMEOUT_MS = 30_000;\n  public static readonly MIN_POLL_INTERVAL_MS = 10_000;\n\n  public static readonly DEFAULT_UPLINK_ENDPOINTS = [\n    'https://uplink.api.apollographql.com/',\n    'https://aws.uplink.api.apollographql.com/',\n  ];\n\n  public readonly uplinkEndpoints: string[] =\n    UplinkSupergraphManager.getUplinkEndpoints();\n  private apiKey: string;\n  private graphRef: string;\n  private fetcher: Fetcher = makeFetchHappen.defaults();\n  private maxRetries: number;\n  private requestTimeoutMs: number =\n    UplinkSupergraphManager.DEFAULT_REQUEST_TIMEOUT_MS;\n  private initialMaxRetries: number;\n  private pollIntervalMs: number = UplinkSupergraphManager.MIN_POLL_INTERVAL_MS;\n  private fallbackPollIntervalInMs?: number;\n  private logger: Logger;\n  private update?: SupergraphSdlUpdateFunction;\n  private shouldRunSubgraphHealthcheck: boolean = false;\n  private healthCheck?: SubgraphHealthCheckFunction;\n  private onFailureToFetchSupergraphSdlDuringInit?: FailureToFetchSupergraphSdlDuringInit;\n  private onFailureToFetchSupergraphSdlAfterInit?: FailureToFetchSupergraphSdlAfterInit;\n  private timerRef: NodeJS.Timeout | null = null;\n  private state: State;\n  private compositionId?: string;\n  private fetchCount: number = 0;\n  private mostRecentSuccessfulFetchAt?: Date;\n\n  constructor({\n    apiKey,\n    graphRef,\n    debug,\n    logger,\n    uplinkEndpoints,\n    fallbackPollIntervalInMs,\n    maxRetries,\n    initialMaxRetries,\n    fetcher,\n    shouldRunSubgraphHealthcheck,\n    onFailureToFetchSupergraphSdlDuringInit,\n    onFailureToFetchSupergraphSdlAfterInit,\n  }: {\n    apiKey: string;\n    graphRef: string;\n    debug?: boolean;\n    logger?: Logger;\n    uplinkEndpoints?: string[];\n    fallbackPollIntervalInMs?: number;\n    maxRetries?: number;\n    initialMaxRetries?: number;\n    fetcher?: Fetcher;\n    shouldRunSubgraphHealthcheck?: boolean;\n    onFailureToFetchSupergraphSdlDuringInit?: FailureToFetchSupergraphSdlDuringInit;\n    onFailureToFetchSupergraphSdlAfterInit?: FailureToFetchSupergraphSdlAfterInit;\n  }) {\n    this.apiKey = apiKey;\n    this.graphRef = graphRef;\n    this.logger = logger ?? getDefaultLogger(debug);\n\n    this.uplinkEndpoints = uplinkEndpoints ?? this.uplinkEndpoints;\n    // If the user didn't pass a `maxRetries`, default to trying each endpoint\n    // 3 times (minus 1 for the initial request) since we round-robin through\n    // each URL on failure\n    this.maxRetries = maxRetries ?? this.uplinkEndpoints.length * 3 - 1;\n    this.initialMaxRetries = initialMaxRetries ?? this.maxRetries;\n\n    this.pollIntervalMs = fallbackPollIntervalInMs ?? this.pollIntervalMs;\n    this.fallbackPollIntervalInMs = fallbackPollIntervalInMs;\n    if (this.pollIntervalMs < UplinkSupergraphManager.MIN_POLL_INTERVAL_MS) {\n      this.logger.warn(\n        'Polling Apollo services at a frequency of less than once per 10 seconds (10000) is disallowed. Instead, the minimum allowed pollInterval of 10000 will be used. Please reconfigure your `fallbackPollIntervalInMs` accordingly. If this is problematic for your team, please contact support.',\n      );\n      this.pollIntervalMs = UplinkSupergraphManager.MIN_POLL_INTERVAL_MS;\n    }\n\n    this.fetcher = fetcher ?? this.fetcher;\n\n    this.shouldRunSubgraphHealthcheck =\n      shouldRunSubgraphHealthcheck ?? this.shouldRunSubgraphHealthcheck;\n    this.onFailureToFetchSupergraphSdlDuringInit =\n      onFailureToFetchSupergraphSdlDuringInit;\n    this.onFailureToFetchSupergraphSdlAfterInit =\n      onFailureToFetchSupergraphSdlAfterInit;\n\n    if (!!process.env.APOLLO_OUT_OF_BAND_REPORTER_ENDPOINT) {\n      this.logger.warn('Out-of-band error reporting is no longer used by Apollo. You may remove the `APOLLO_OUT_OF_BAND_REPORTER_ENDPOINT` environment variable at your convenience.');\n    }\n    this.state = { phase: 'constructed' };\n  }\n\n  public async initialize({ update, healthCheck }: SupergraphSdlHookOptions) {\n    this.update = update;\n\n    if (this.shouldRunSubgraphHealthcheck) {\n      this.healthCheck = healthCheck;\n    }\n\n    let initialSupergraphSdl: string | null = null;\n    try {\n      initialSupergraphSdl = await this.updateSupergraphSdl(\n        this.initialMaxRetries,\n      );\n      if (!initialSupergraphSdl) {\n        throw new Error(\n          'Invalid supergraph schema supplied during initialization.',\n        );\n      }\n    } catch (e) {\n      this.logUpdateFailure(e);\n      throw e;\n    }\n\n    this.state = { phase: 'initialized' };\n\n    // Start polling after we resolve the first supergraph\n    this.beginPolling();\n\n    return {\n      supergraphSdl: initialSupergraphSdl,\n      cleanup: async () => {\n        if (this.state.phase === 'polling') {\n          await this.state.pollingPromise;\n        }\n        this.state = { phase: 'stopped' };\n        if (this.timerRef) {\n          clearTimeout(this.timerRef);\n          this.timerRef = null;\n        }\n      },\n    };\n  }\n\n  public async nextFetch(): Promise<void | null> {\n    if (this.state.phase !== 'polling') {\n      return;\n    }\n    return this.state.nextFetchPromise;\n  }\n\n  /**\n   * Configuration priority order:\n   * 1. APOLLO_SCHEMA_CONFIG_DELIVERY_ENDPOINT environment variable\n   * 2. default (GCP and AWS)\n   */\n  public static getUplinkEndpoints(): string[] {\n    const envEndpoints =\n      process.env.APOLLO_SCHEMA_CONFIG_DELIVERY_ENDPOINT?.split(',');\n    return envEndpoints ?? UplinkSupergraphManager.DEFAULT_UPLINK_ENDPOINTS;\n  }\n\n  private async updateSupergraphSdl(\n    maxRetries: number,\n  ): Promise<string | null> {\n    let supergraphSdl;\n\n    try {\n      const result = await loadSupergraphSdlFromUplinks({\n        graphRef: this.graphRef,\n        apiKey: this.apiKey,\n        endpoints: this.uplinkEndpoints,\n        fetcher: this.fetcher,\n        compositionId: this.compositionId ?? null,\n        maxRetries,\n        requestTimeoutMs: this.requestTimeoutMs,\n        roundRobinSeed: this.fetchCount++,\n        logger: this.logger,\n      });\n      this.mostRecentSuccessfulFetchAt = new Date();\n\n      this.logger.debug(\n        `Received Uplink response. Has updated SDL? ${!!result?.supergraphSdl}`,\n      );\n\n      if (!result) {\n        return null;\n      }\n\n      this.compositionId = result.id;\n\n      supergraphSdl = result.supergraphSdl;\n      if (result?.minDelaySeconds) {\n        this.pollIntervalMs = result.minDelaySeconds * 1000;\n\n        // We only want to take the max of the two _if_ a fallback interval is\n        // configured. If we take the max above unconditionally, then a gateway\n        // with an unconfigured fallback interval will only ever lengthen its\n        // poll interval rather than adapt to changes coming from Uplink.\n        if (this.fallbackPollIntervalInMs) {\n          this.pollIntervalMs = Math.max(\n            this.pollIntervalMs,\n            this.fallbackPollIntervalInMs,\n          );\n        }\n      }\n    } catch (e) {\n      this.logger.debug(\n        `Error fetching supergraphSdl from Uplink during phase '${this.state.phase}'`,\n      );\n\n      if (\n        this.state.phase === 'constructed' &&\n        this.onFailureToFetchSupergraphSdlDuringInit\n      ) {\n        supergraphSdl = await this.onFailureToFetchSupergraphSdlDuringInit({\n          error: e,\n          graphRef: this.graphRef,\n          logger: this.logger,\n          fetchCount: this.fetchCount,\n        });\n      } else if (\n        this.state.phase === 'polling' &&\n        this.onFailureToFetchSupergraphSdlAfterInit\n      ) {\n        supergraphSdl = await this.onFailureToFetchSupergraphSdlAfterInit({\n          error: e,\n          graphRef: this.graphRef,\n          logger: this.logger,\n          fetchCount: this.fetchCount,\n          mostRecentSuccessfulFetchAt: this.mostRecentSuccessfulFetchAt,\n        });\n\n        // This is really an error, but we'll let the caller decide what to do with it\n        if (!supergraphSdl) {\n          return null;\n        }\n      } else {\n        throw e;\n      }\n    }\n\n    // the healthCheck fn is only assigned if it's enabled in the config\n    await this.healthCheck?.(supergraphSdl);\n    return supergraphSdl;\n  }\n\n  private beginPolling() {\n    this.state = { phase: 'polling' };\n    this.poll();\n  }\n\n  private poll() {\n    if (this.state.phase !== 'polling') {\n      this.logger.debug(`Stopped polling Uplink [phase: ${this.state.phase}]`);\n      return;\n    }\n\n    this.state.nextFetchPromise = resolvable();\n\n    this.logger.debug(\n      `Will poll Uplink after ${this.pollIntervalMs}ms [phase: ${this.state.phase}]`,\n    );\n    this.timerRef = setTimeout(async () => {\n      if (this.state.phase === 'polling') {\n        const pollingPromise = resolvable();\n        this.state.pollingPromise = pollingPromise;\n        try {\n          const supergraphSdl = await this.updateSupergraphSdl(this.maxRetries);\n          if (supergraphSdl) {\n            this.update?.(supergraphSdl);\n          }\n        } catch (e) {\n          this.logUpdateFailure(e);\n        }\n        pollingPromise.resolve();\n        this.state.nextFetchPromise?.resolve();\n      }\n\n      this.poll();\n    }, this.pollIntervalMs);\n  }\n\n  private logUpdateFailure(e: any) {\n    this.logger.error(\n      'UplinkSupergraphManager failed to update supergraph with the following error: ' +\n        (e.message ?? e),\n    );\n  }\n}\n", "export { LocalCompose } from './LocalCompose';\nexport { LegacyFetcher } from './LegacyFetcher';\nexport { IntrospectAndCompose } from './IntrospectAndCompose';\nexport * from './UplinkSupergraphManager';\nexport { UplinkFetcherError } from './UplinkSupergraphManager/loadSupergraphSdlFromStorage';\n", "import { GraphQLError, GraphQLSchema } from 'graphql';\nimport type { HeadersInit } from 'node-fetch';\nimport { GatewayGraphQLRequestContext } from '@apollo/server-gateway-interface';\nimport type { Logger } from '@apollo/utils.logger';\nimport { GraphQLDataSource } from './datasources/types';\nimport { QueryPlan, QueryPlannerConfig } from '@apollo/query-planner';\nimport { OperationContext } from './operationContext';\nimport { ServiceMap } from './executeQueryPlan';\nimport { ServiceDefinition } from \"@apollo/federation-internals\";\nimport { Fetcher } from '@apollo/utils.fetcher';\nimport { UplinkSupergraphManager } from './supergraphManagers';\nimport { OpenTelemetryConfig } from './utilities/opentelemetry';\n\nexport type ServiceEndpointDefinition = Pick<ServiceDefinition, 'name' | 'url'>;\n\nexport type Experimental_DidResolveQueryPlanCallback = ({\n  queryPlan,\n  serviceMap,\n  operationContext,\n  requestContext,\n}: {\n  readonly queryPlan: QueryPlan;\n  readonly serviceMap: ServiceMap;\n  readonly operationContext: OperationContext;\n  readonly requestContext: GatewayGraphQLRequestContext;\n}) => void;\n\ninterface ImplementingServiceLocation {\n  name: string;\n  path: string;\n}\n\nexport interface CompositionMetadata {\n  formatVersion: number;\n  id: string;\n  implementingServiceLocations: ImplementingServiceLocation[];\n  schemaHash: string;\n}\n\nexport type Experimental_DidFailCompositionCallback = ({\n  errors,\n  serviceList,\n  compositionMetadata,\n}: {\n  readonly errors: GraphQLError[];\n  readonly serviceList: ServiceDefinition[];\n  readonly compositionMetadata?: CompositionMetadata;\n}) => void;\n\nexport interface ServiceDefinitionCompositionInfo {\n  serviceDefinitions: ServiceDefinition[];\n  schema: GraphQLSchema;\n  compositionMetadata?: CompositionMetadata;\n}\n\nexport interface SupergraphSdlCompositionInfo {\n  schema: GraphQLSchema;\n  compositionId: string;\n  supergraphSdl: string;\n}\n\nexport type CompositionInfo =\n  | ServiceDefinitionCompositionInfo\n  | SupergraphSdlCompositionInfo;\n\nexport type Experimental_DidUpdateSupergraphCallback = (\n  currentConfig: CompositionInfo,\n  previousConfig?: CompositionInfo,\n) => void;\n\nexport type CompositionUpdate = ServiceDefinitionUpdate | SupergraphSdlUpdate;\n\nexport interface ServiceDefinitionUpdate {\n  serviceDefinitions?: ServiceDefinition[];\n  compositionMetadata?: CompositionMetadata;\n  isNewSchema: boolean;\n}\n\nexport interface SupergraphSdlUpdate {\n  id: string;\n  supergraphSdl: string;\n  minDelaySeconds?: number;\n}\n\nexport function isSupergraphSdlUpdate(\n  update: CompositionUpdate,\n): update is SupergraphSdlUpdate {\n  return 'supergraphSdl' in update;\n}\n\nexport function isServiceDefinitionUpdate(\n  update: CompositionUpdate,\n): update is ServiceDefinitionUpdate {\n  return 'isNewSchema' in update;\n}\n\n/**\n * **Note:** It's possible for a schema to be the same (`isNewSchema: false`) when\n * `serviceDefinitions` have changed. For example, during type migration, the\n * composed schema may be identical but the `serviceDefinitions` would differ\n * since a type has moved from one service to another.\n */\nexport type Experimental_UpdateServiceDefinitions = (\n  config: DynamicGatewayConfig,\n) => Promise<ServiceDefinitionUpdate>;\n\nexport type Experimental_UpdateSupergraphSdl = (\n  config: DynamicGatewayConfig,\n) => Promise<SupergraphSdlUpdate>;\n\nexport type Experimental_UpdateComposition = (\n  config: DynamicGatewayConfig,\n) => Promise<CompositionUpdate>;\n\ninterface GatewayConfigBase {\n  debug?: boolean;\n  logger?: Logger;\n  // TODO: expose the query plan in a more flexible JSON format in the future\n  // and remove this config option in favor of `exposeQueryPlan`. Playground\n  // should cutover to use the new option when it's built.\n  __exposeQueryPlanExperimental?: boolean;\n  buildService?: (definition: ServiceEndpointDefinition) => GraphQLDataSource;\n\n  // experimental observability callbacks\n  experimental_didResolveQueryPlan?: Experimental_DidResolveQueryPlanCallback;\n  experimental_didUpdateSupergraph?: Experimental_DidUpdateSupergraphCallback;\n  experimental_approximateQueryPlanStoreMiB?: number;\n  experimental_autoFragmentization?: boolean;\n  fetcher?: Fetcher;\n  serviceHealthCheck?: boolean;\n\n  queryPlannerConfig?: QueryPlannerConfig;\n  telemetry?: OpenTelemetryConfig;\n\n  /**\n   * Whether to validate the supergraphs received from either the static configuration or the\n   * configured supergraph manager.\n   *\n   * When enables, this run validations to make sure the supergraph SDL is full valid graphQL\n   * and it equally validates the subgraphs extracted from that supergraph. Note that even when\n   * this is disabled, the supergraph SDL still needs to be valid graphQL syntax and essentially\n   * be a valid supergraph for the gateway to be able to use it, and so this option is not\n   * necessary to protected against corrupted/invalid supergraphs, but it may produce more legible\n   * errors when facing such invalid supergraph.\n   *\n   * By default, this depends on the value of `NODE_ENV`: for production, validation is disabled\n   * (as it is somewhat expensive and not that valuable as mentioned above), but it is enabled\n   * for development (mostly to provide better error messages when provided with an incorrect\n   * supergraph).\n   */\n  validateSupergraph?: boolean;\n}\n\n// TODO(trevor:removeServiceList)\nexport interface ServiceListGatewayConfig extends GatewayConfigBase {\n  /**\n   * @deprecated: use `supergraphSdl: new IntrospectAndCompose(...)` instead\n   */\n  serviceList: ServiceEndpointDefinition[];\n  /**\n   * @deprecated: use `supergraphSdl: new IntrospectAndCompose(...)` instead\n   */\n  introspectionHeaders?:\n    | HeadersInit\n    | ((\n        service: ServiceEndpointDefinition,\n      ) => Promise<HeadersInit> | HeadersInit);\n  pollIntervalInMs?: number;\n}\n\nexport interface ManagedGatewayConfig extends GatewayConfigBase {\n  /**\n   * This configuration option shouldn't be used unless by recommendation from\n   * Apollo staff.\n   *\n   * @deprecated: use `uplinkEndpoints` instead\n   */\n  schemaConfigDeliveryEndpoint?: string;\n  /**\n   * This defaults to:\n   * ['https://uplink.api.apollographql.com/', 'https://aws.uplink.api.apollographql.com/']\n   * The first URL points to GCP, the second to AWS. This option should most likely\n   * be left to default unless you have a specific reason to change it.\n   */\n  uplinkEndpoints?: string[];\n  uplinkMaxRetries?: number;\n  /**\n   * @deprecated use `fallbackPollIntervalInMs` instead\n   */\n  pollIntervalInMs?: number;\n  fallbackPollIntervalInMs?: number;\n}\n\n// TODO(trevor:removeServiceList): migrate users to `supergraphSdl` function option\ninterface ManuallyManagedServiceDefsGatewayConfig extends GatewayConfigBase {\n  /**\n   * @deprecated: use `supergraphSdl` instead (either as a `SupergraphSdlHook` or `SupergraphManager`)\n   */\n  experimental_updateServiceDefinitions: Experimental_UpdateServiceDefinitions;\n  pollIntervalInMs?: number;\n}\n\n// TODO(trevor:removeServiceList): migrate users to `supergraphSdl` function option\ninterface ExperimentalManuallyManagedSupergraphSdlGatewayConfig\n  extends GatewayConfigBase {\n  /**\n   * @deprecated: use `supergraphSdl` instead (either as a `SupergraphSdlHook` or `SupergraphManager`)\n   */\n  experimental_updateSupergraphSdl: Experimental_UpdateSupergraphSdl;\n  pollIntervalInMs?: number;\n}\n\nexport function isManuallyManagedSupergraphSdlGatewayConfig(\n  config: GatewayConfig,\n): config is ManuallyManagedSupergraphSdlGatewayConfig {\n  return isSupergraphSdlHookConfig(config) || isSupergraphManagerConfig(config);\n}\n\nexport type SupergraphSdlUpdateFunction = (\n  updatedSupergraphSdl: string,\n) => void;\n\nexport type SubgraphHealthCheckFunction = (\n  supergraphSdl: string,\n) => Promise<void>;\n\nexport type GetDataSourceFunction = ({\n  name,\n  url,\n}: ServiceEndpointDefinition) => GraphQLDataSource;\n\nexport interface SupergraphSdlHookOptions {\n  update: SupergraphSdlUpdateFunction;\n  healthCheck: SubgraphHealthCheckFunction;\n  getDataSource: GetDataSourceFunction;\n}\nexport interface SupergraphSdlHook {\n  (options: SupergraphSdlHookOptions): Promise<{\n    supergraphSdl: string;\n    cleanup?: () => Promise<void>;\n  }>;\n}\n\nexport interface SupergraphManager {\n  initialize: SupergraphSdlHook;\n}\n\ntype ManuallyManagedSupergraphSdlGatewayConfig =\n  | SupergraphSdlHookGatewayConfig\n  | SupergraphManagerGatewayConfig;\n\nexport interface SupergraphSdlHookGatewayConfig extends GatewayConfigBase {\n  supergraphSdl: SupergraphSdlHook;\n}\n\nexport interface SupergraphManagerGatewayConfig extends GatewayConfigBase {\n  supergraphSdl: SupergraphManager;\n}\n\ntype ManuallyManagedGatewayConfig =\n  | ManuallyManagedServiceDefsGatewayConfig\n  | ExperimentalManuallyManagedSupergraphSdlGatewayConfig\n  | ManuallyManagedSupergraphSdlGatewayConfig\n  // TODO(trevor:removeServiceList)\n  | ServiceListGatewayConfig;\n\n// TODO(trevor:removeServiceList)\ninterface LocalGatewayConfig extends GatewayConfigBase {\n  /**\n   * @deprecated: use `supergraphSdl: new LocalCompose(...)` instead\n   */\n  localServiceList: ServiceDefinition[];\n}\n\ninterface StaticSupergraphSdlGatewayConfig extends GatewayConfigBase {\n  supergraphSdl: string;\n}\n\nexport type StaticGatewayConfig =\n  | LocalGatewayConfig\n  | StaticSupergraphSdlGatewayConfig;\n\nexport type DynamicGatewayConfig =\n  | ManagedGatewayConfig\n  | ManuallyManagedGatewayConfig;\n\nexport type GatewayConfig = StaticGatewayConfig | DynamicGatewayConfig;\n\n// TODO(trevor:removeServiceList)\nexport function isLocalConfig(\n  config: GatewayConfig,\n): config is LocalGatewayConfig {\n  return 'localServiceList' in config;\n}\n\n// TODO(trevor:removeServiceList)\nexport function isServiceListConfig(\n  config: GatewayConfig,\n): config is ServiceListGatewayConfig {\n  return 'serviceList' in config;\n}\n\nexport function isStaticSupergraphSdlConfig(\n  config: GatewayConfig,\n): config is StaticSupergraphSdlGatewayConfig {\n  return 'supergraphSdl' in config && typeof config.supergraphSdl === 'string';\n}\n\nexport function isSupergraphSdlHookConfig(\n  config: GatewayConfig,\n): config is SupergraphSdlHookGatewayConfig {\n  return (\n    'supergraphSdl' in config && typeof config.supergraphSdl === 'function'\n  );\n}\n\nexport function isSupergraphManagerConfig(\n  config: GatewayConfig,\n): config is SupergraphManagerGatewayConfig {\n  return (\n    'supergraphSdl' in config &&\n    typeof config.supergraphSdl === 'object' &&\n    'initialize' in config.supergraphSdl\n  );\n}\n\n// A manually managed config means the user has provided a function which\n// handles providing service definitions to the gateway.\nexport function isManuallyManagedConfig(\n  config: GatewayConfig,\n): config is ManuallyManagedGatewayConfig {\n  return (\n    isManuallyManagedSupergraphSdlGatewayConfig(config) ||\n    'experimental_updateServiceDefinitions' in config ||\n    'experimental_updateSupergraphSdl' in config ||\n    // TODO(trevor:removeServiceList)\n    isServiceListConfig(config)\n  );\n}\n\n// Managed config strictly means managed by Studio\nexport function isManagedConfig(\n  config: GatewayConfig,\n): config is ManagedGatewayConfig {\n  return (\n    'schemaConfigDeliveryEndpoint' in config ||\n    'uplinkEndpoints' in config ||\n    'fallbackPollIntervalInMs' in config ||\n    (isSupergraphManagerConfig(config) && config.supergraphSdl instanceof UplinkSupergraphManager) ||\n    (!isLocalConfig(config) &&\n      !isStaticSupergraphSdlConfig(config) &&\n      !isManuallyManagedConfig(config))\n  );\n}\n\n// A static config is one which loads synchronously on start and never updates\nexport function isStaticConfig(\n  config: GatewayConfig,\n): config is StaticGatewayConfig {\n  return isLocalConfig(config) || isStaticSupergraphSdlConfig(config);\n}\n", "import { GraphQLSchema } from 'graphql';\nimport { ApolloGraphQLSchemaExtensions } from '../typings/graphql';\n\nconst { version } = require('../../package.json');\n\nexport function addExtensions(schema: GraphQLSchema): GraphQLSchema {\n  const schemaExtension: ApolloGraphQLSchemaExtensions = schema.extensions ?? {};\n  const apolloExtension = schemaExtension?.apollo ?? {};\n  const gatewayExtension = apolloExtension?.gateway ?? {};\n\n  schema.extensions = {\n    ...schema.extensions,\n    apollo: {\n      ...apolloExtension,\n      gateway: {\n        ...gatewayExtension,\n        version,\n      }\n    },\n  };\n\n  return schema;\n}\n", "import { GatewayGraphQLResponse } from '@apollo/server-gateway-interface';\nimport {\n  GraphQLSchema,\n  graphql,\n  graphqlSync,\n  DocumentNode,\n  parse,\n} from 'graphql';\nimport { GraphQLDataSource, GraphQLDataSourceProcessOptions } from './types';\n\nexport class LocalGraphQLDataSource<\n  TContext extends Record<string, any> = Record<string, any>,\n> implements GraphQLDataSource<TContext>\n{\n  constructor(public readonly schema: GraphQLSchema) {\n  }\n\n  async process({\n    request,\n    context,\n  }: GraphQLDataSourceProcessOptions<TContext>): Promise<GatewayGraphQLResponse> {\n    return graphql({\n      schema: this.schema,\n      source: request.query!,\n      variableValues: request.variables,\n      operationName: request.operationName,\n      contextValue: context,\n    });\n  }\n\n  public sdl(): DocumentNode {\n    const result = graphqlSync({\n      schema: this.schema,\n      source: `{ _service { sdl }}`,\n    });\n    if (result.errors) {\n      throw new Error(result.errors.map((error) => error.message).join('\\n\\n'));\n    }\n\n    const sdl = result.data && result.data._service && (result.data._service as any).sdl;\n    return parse(sdl);\n  }\n}\n", "export { LocalGraphQLDataSource } from './LocalGraphQLDataSource';\nexport { RemoteGraphQLDataSource } from './RemoteGraphQLDataSource';\nexport { GraphQLDataSource, GraphQLDataSourceProcessOptions } from './types';\n", "import { deprecate } from 'util';\nimport { createHash } from '@apollo/utils.createhash';\nimport type { Logger } from '@apollo/utils.logger';\nimport { QueryPlanCache } from '@apollo/query-planner'\nimport { InMemoryLRUCache } from '@apollo/utils.keyvaluecache';\nimport {\n  GraphQLSchema,\n  VariableDefinitionNode\n} from 'graphql';\nimport { buildOperationContext, OperationContext } from './operationContext';\nimport {\n  executeQueryPlan,\n  ServiceMap,\n} from './executeQueryPlan';\nimport {\n  GraphQLDataSource,\n  GraphQLDataSourceRequestKind,\n} from './datasources/types';\nimport { RemoteGraphQLDataSource } from './datasources/RemoteGraphQLDataSource';\nimport { getVariableValues } from 'graphql/execution/values';\nimport {\n  QueryPlanner,\n  QueryPlan,\n  prettyFormatQueryPlan,\n} from '@apollo/query-planner';\nimport {\n  ServiceEndpointDefinition,\n  Experimental_DidFailCompositionCallback,\n  Experimental_DidResolveQueryPlanCallback,\n  Experimental_DidUpdateSupergraphCallback,\n  Experimental_UpdateComposition,\n  CompositionInfo,\n  GatewayConfig,\n  isManuallyManagedConfig,\n  isLocalConfig,\n  isServiceListConfig,\n  isManagedConfig,\n  SupergraphSdlUpdate,\n  isManuallyManagedSupergraphSdlGatewayConfig,\n  isStaticSupergraphSdlConfig,\n  SupergraphManager,\n} from './config';\nimport { SpanStatusCode } from '@opentelemetry/api';\nimport {\n  OpenTelemetrySpanNames,\n  tracer,\n  requestContextSpanAttributes,\n  operationContextSpanAttributes,\n  recordExceptions,\n  OpenTelemetryAttributeNames\n} from './utilities/opentelemetry';\nimport { addExtensions } from './schema-helper/addExtensions';\nimport {\n  IntrospectAndCompose,\n  UplinkSupergraphManager,\n  LegacyFetcher,\n  LocalCompose,\n} from './supergraphManagers';\nimport {\n  assert,\n  operationFromDocument,\n  Schema,\n  ServiceDefinition,\n  Supergraph,\n} from '@apollo/federation-internals';\nimport { getDefaultLogger } from './logger';\nimport {GatewayInterface, GatewayUnsubscriber, GatewayGraphQLRequestContext, GatewayExecutionResult} from '@apollo/server-gateway-interface';\n\ntype DataSourceMap = {\n  [serviceName: string]: { url?: string; dataSource: GraphQLDataSource };\n};\n\n// Local state to track whether particular UX-improving warning messages have\n// already been emitted.  This is particularly useful to prevent recurring\n// warnings of the same type in, e.g. repeating timers, which don't provide\n// additional value when they are repeated over and over during the life-time\n// of a server.\ntype WarnedStates = {\n  remoteWithLocalConfig?: boolean;\n};\n\nexport const HEALTH_CHECK_QUERY =\n  'query __ApolloServiceHealthCheck__ { __typename }';\nexport const SERVICE_DEFINITION_QUERY =\n  'query __ApolloGetServiceDefinition__ { _service { sdl } }';\n\ntype GatewayState =\n  | { phase: 'initialized' }\n  | { phase: 'failed to load' }\n  | { phase: 'loaded' }\n  | { phase: 'stopping'; stoppingDonePromise: Promise<void> }\n  | { phase: 'stopped' }\n  | { phase: 'updating schema' };\n\n// We want to be compatible with `load()` as called by both AS2 and AS3, so we\n// define its argument types ourselves instead of relying on imports.\n\n// This is what AS3's ApolloConfig looks like; it's what we'll save internally.\ninterface ApolloConfigFromAS3 {\n  key?: string;\n  keyHash?: string;\n  graphRef?: string;\n}\n\n// This interface matches what we may receive from either version. We convert it\n// to ApolloConfigFromAS3.\ninterface ApolloConfigFromAS2Or3 {\n  key?: string;\n  keyHash?: string;\n  graphRef?: string;\n  graphId?: string;\n  graphVariant?: string;\n}\n\n// This interface was the only way this data was provided prior to AS 2.18; it\n// is being removed in AS 3, so we define our own version.\ninterface GraphQLServiceEngineConfig {\n  apiKeyHash: string;\n  graphId: string;\n  graphVariant?: string;\n}\n\nexport class ApolloGateway implements GatewayInterface {\n  public schema?: GraphQLSchema;\n  // Same as a `schema` but as a `Schema` to avoid reconverting when we need it.\n  // TODO(sylvain): if we add caching in `Schema.toGraphQLJSSchema`, we could maybe only keep `apiSchema`\n  // and make `schema` a getter (though `schema` does add some extension and this should\n  // be accounted for). Unsure if moving from a member to a getter could break anyone externally however\n  // (also unclear why we expose a mutable member public in the first place; don't everything break if the\n  // use manually assigns `schema`?).\n  private apiSchema?: Schema;\n  private serviceMap: DataSourceMap = Object.create(null);\n  private config: GatewayConfig;\n  private logger: Logger;\n  private queryPlanStore: QueryPlanCache;\n  private apolloConfig?: ApolloConfigFromAS3;\n  private onSchemaChangeListeners = new Set<(schema: GraphQLSchema) => void>();\n  private onSchemaLoadOrUpdateListeners = new Set<\n    (schemaContext: {\n      apiSchema: GraphQLSchema;\n      coreSupergraphSdl: string;\n    }) => void\n  >();\n  private warnedStates: WarnedStates = Object.create(null);\n  private queryPlanner?: QueryPlanner;\n  private supergraphSdl?: string;\n  private supergraphSchema?: GraphQLSchema;\n  private compositionId?: string;\n  private state: GatewayState;\n  private _supergraphManager?: SupergraphManager;\n\n  // Observe query plan, service info, and operation info prior to execution.\n  // The information made available here will give insight into the resulting\n  // query plan and the inputs that generated it.\n  private experimental_didResolveQueryPlan?: Experimental_DidResolveQueryPlanCallback;\n  // Used to communicate supergraph updates\n  private experimental_didUpdateSupergraph?: Experimental_DidUpdateSupergraphCallback;\n  // Used to disable the recursive selections limit in query planner. Setting\n  // this to `true` is not advised if gateway is being used to serve queries\n  // outside your control, as doing so will leave query planner susceptible to\n  // denial-of-service attacks.\n  private recursiveSelectionsLimitDisabled: boolean;\n  // Used to disable the non-local selections limit in query planner. Setting\n  // this to `true` is not advised if gateway is being used to serve queries\n  // outside your control, as doing so will leave query planner susceptible to\n  // denial-of-service attacks.\n  private nonLocalSelectionsLimitDisabled: boolean;\n  // how often service defs should be loaded/updated\n  private pollIntervalInMs?: number;\n  // Functions to call during gateway cleanup (when stop() is called)\n  private toDispose: (() => Promise<void>)[] = [];\n\n  constructor(config?: GatewayConfig) {\n    this.config = {\n      // TODO: expose the query plan in a more flexible JSON format in the future\n      // and remove this config option in favor of `exposeQueryPlan`. Playground\n      // should cutover to use the new option when it's built.\n      __exposeQueryPlanExperimental: process.env.NODE_ENV !== 'production',\n      ...config,\n    };\n\n    this.logger = this.config.logger ?? getDefaultLogger(this.config.debug);\n    this.queryPlanStore = this.initQueryPlanStore(\n      config?.experimental_approximateQueryPlanStoreMiB,\n    );\n\n    // set up experimental observability callbacks and config settings\n    this.experimental_didResolveQueryPlan =\n      config?.experimental_didResolveQueryPlan;\n    this.experimental_didUpdateSupergraph =\n      config?.experimental_didUpdateSupergraph;\n\n    // Check environment variables to see whether the query planner's recursive\n    // selections limit should be disabled. Setting this variable to `true` is\n    // not advised if gateway is being used to serve queries outside your\n    // control, as doing so will leave query planner susceptible to\n    // denial-of-service attacks.\n    this.recursiveSelectionsLimitDisabled =\n      process.env.APOLLO_DISABLE_SECURITY_RECURSIVE_SELECTIONS_CHECK === 'true';\n\n    // Check environment variables to see whether the query planner's non-local\n    // selections limit should be disabled. Setting this variable to `true` is\n    // not advised if gateway is being used to serve queries outside your\n    // control, as doing so will leave query planner susceptible to\n    // denial-of-service attacks.\n    this.nonLocalSelectionsLimitDisabled =\n      process.env.APOLLO_DISABLE_SECURITY_NON_LOCAL_SELECTIONS_CHECK === 'true';\n\n    if (isManagedConfig(this.config)) {\n      this.pollIntervalInMs =\n        this.config.fallbackPollIntervalInMs ?? this.config.pollIntervalInMs;\n    } else if (isServiceListConfig(this.config)) {\n      this.pollIntervalInMs = this.config?.pollIntervalInMs;\n    }\n\n    this.validateConfigAndEmitWarnings();\n\n    this.logger.debug('Gateway successfully initialized (but not yet loaded)');\n    this.state = { phase: 'initialized' };\n  }\n\n  public get supergraphManager(): SupergraphManager | undefined {\n    return this._supergraphManager;\n  }\n\n  private initQueryPlanStore(approximateQueryPlanStoreMiB?: number) {\n    if(this.config.queryPlannerConfig?.cache){\n      return this.config.queryPlannerConfig?.cache\n    }\n    // Create ~about~ a 30MiB InMemoryLRUCache (or 50MiB if the full operation ASTs are\n    // enabled in query plans as this requires plans to use more memory). This is\n    // less than precise since the technique to calculate the size of a DocumentNode is\n    // only using JSON.stringify on the DocumentNode (and thus doesn't account\n    // for unicode characters, etc.), but it should do a reasonable job at\n    // providing a caching document store for most operations.\n    const defaultSize = this.config.queryPlannerConfig?.exposeDocumentNodeInFetchNode ? 50 : 30;\n    return new InMemoryLRUCache<QueryPlan>({\n      maxSize: Math.pow(2, 20) * (approximateQueryPlanStoreMiB || defaultSize),\n      sizeCalculation: approximateObjectSize,\n    });\n  }\n\n  private validateConfigAndEmitWarnings() {\n    assert(!this.config.queryPlannerConfig?.typeConditionedFetching, \"Type conditions are not supported in the gateway\");\n\n    // Warn against using the pollInterval and a serviceList simultaneously\n    // TODO(trevor:removeServiceList)\n    if (this.pollIntervalInMs && isServiceListConfig(this.config)) {\n      this.logger.warn(\n        'Polling running services is dangerous and not recommended in production. ' +\n          'Polling should only be used against a registry. ' +\n          'If you are polling running services, use with caution.',\n      );\n    }\n\n    if (\n      isManuallyManagedConfig(this.config) &&\n      'experimental_updateSupergraphSdl' in this.config &&\n      'experimental_updateServiceDefinitions' in this.config\n    ) {\n      this.logger.warn(\n        'Gateway found two manual update configurations when only one should be ' +\n          'provided. Gateway will default to using the provided `experimental_updateSupergraphSdl` ' +\n          'function when both `experimental_updateSupergraphSdl` and experimental_updateServiceDefinitions` ' +\n          'are provided.',\n      );\n    }\n\n    if ('schemaConfigDeliveryEndpoint' in this.config) {\n      this.logger.warn(\n        'The `schemaConfigDeliveryEndpoint` option is deprecated and will be removed in a future version of `@apollo/gateway`. Please migrate to the equivalent (array form) `uplinkEndpoints` configuration option.',\n      );\n    }\n\n    if (isManagedConfig(this.config) && 'pollIntervalInMs' in this.config) {\n      this.logger.warn(\n        'The `pollIntervalInMs` option is deprecated and will be removed in a future version of `@apollo/gateway`. ' +\n        'Please migrate to the equivalent `fallbackPollIntervalInMs` configuration option. ' +\n        'The poll interval is now defined by Uplink, this option will only be used if it is greater than the value defined by Uplink or as a fallback.',\n      );\n    }\n  }\n\n  public async load(options?: {\n    apollo?: ApolloConfigFromAS2Or3;\n    engine?: GraphQLServiceEngineConfig;\n  }) {\n    this.logger.debug('Loading gateway...');\n\n    if (this.state.phase !== 'initialized') {\n      throw Error(\n        `ApolloGateway.load called in surprising state ${this.state.phase}`,\n      );\n    }\n    if (options?.apollo) {\n      const { key, keyHash, graphRef, graphId, graphVariant } = options.apollo;\n      this.apolloConfig = {\n        key,\n        keyHash,\n        graphRef:\n          graphRef ??\n          (graphId ? `${graphId}@${graphVariant ?? 'current'}` : undefined),\n      };\n    } else if (options?.engine) {\n      // Older version of apollo-server-core that isn't passing 'apollo' yet.\n      const { apiKeyHash, graphId, graphVariant } = options.engine;\n      this.apolloConfig = {\n        keyHash: apiKeyHash,\n        graphRef: graphId\n          ? `${graphId}@${graphVariant ?? 'current'}`\n          : undefined,\n      };\n    }\n\n    this.maybeWarnOnConflictingConfig();\n\n    // Handles initial assignment of `this.schema`, `this.queryPlanner`\n    if (isStaticSupergraphSdlConfig(this.config)) {\n      const supergraphSdl = this.config.supergraphSdl;\n      await this.initializeSupergraphManager({\n        initialize: async () => {\n          return {\n            supergraphSdl,\n          };\n        },\n      });\n    } else if (isLocalConfig(this.config)) {\n      // TODO(trevor:removeServiceList)\n      await this.initializeSupergraphManager(\n        new LocalCompose({\n          localServiceList: this.config.localServiceList,\n          logger: this.logger,\n        }),\n      );\n    } else if (isManuallyManagedSupergraphSdlGatewayConfig(this.config)) {\n      const supergraphManager =\n        typeof this.config.supergraphSdl === 'object'\n          ? this.config.supergraphSdl\n          : { initialize: this.config.supergraphSdl };\n      await this.initializeSupergraphManager(supergraphManager);\n    } else if (\n      'experimental_updateServiceDefinitions' in this.config ||\n      'experimental_updateSupergraphSdl' in this.config\n    ) {\n      const updateServiceDefinitions =\n        'experimental_updateServiceDefinitions' in this.config\n          ? this.config.experimental_updateServiceDefinitions\n          : this.config.experimental_updateSupergraphSdl;\n\n      await this.initializeSupergraphManager(\n        new LegacyFetcher({\n          logger: this.logger,\n          gatewayConfig: this.config,\n          updateServiceDefinitions,\n          pollIntervalInMs: this.pollIntervalInMs,\n          subgraphHealthCheck: this.config.serviceHealthCheck,\n        }),\n      );\n    } else if (isServiceListConfig(this.config)) {\n      // TODO(trevor:removeServiceList)\n      this.logger.warn(\n        'The `serviceList` option is deprecated and will be removed in a future version of `@apollo/gateway`. Please migrate to its replacement `IntrospectAndCompose`. More information on `IntrospectAndCompose` can be found in the documentation.',\n      );\n      await this.initializeSupergraphManager(\n        new IntrospectAndCompose({\n          subgraphs: this.config.serviceList,\n          pollIntervalInMs: this.pollIntervalInMs,\n          logger: this.logger,\n          subgraphHealthCheck: this.config.serviceHealthCheck,\n          introspectionHeaders: this.config.introspectionHeaders,\n        }),\n      );\n    } else {\n      // isManagedConfig(this.config)\n      const canUseManagedConfig =\n        this.apolloConfig?.graphRef && this.apolloConfig?.keyHash;\n      if (!canUseManagedConfig) {\n        throw new Error(\n          'When a manual configuration is not provided, gateway requires an Apollo ' +\n            'configuration. See https://www.apollographql.com/docs/apollo-server/federation/managed-federation/ ' +\n            'for more information. Manual configuration options include: ' +\n            '`serviceList`, `supergraphSdl`, and `experimental_updateServiceDefinitions`.',\n        );\n      }\n\n      const schemaDeliveryEndpoints: string[] | undefined = this.config\n        .schemaConfigDeliveryEndpoint\n        ? [this.config.schemaConfigDeliveryEndpoint]\n        : undefined;\n      await this.initializeSupergraphManager(\n        new UplinkSupergraphManager({\n          graphRef: this.apolloConfig!.graphRef!,\n          apiKey: this.apolloConfig!.key!,\n          shouldRunSubgraphHealthcheck: this.config.serviceHealthCheck,\n          uplinkEndpoints:\n            this.config.uplinkEndpoints ?? schemaDeliveryEndpoints,\n          maxRetries: this.config.uplinkMaxRetries,\n          fetcher: this.config.fetcher,\n          logger: this.logger,\n          fallbackPollIntervalInMs: this.pollIntervalInMs,\n        }),\n      );\n    }\n\n    const mode = isManagedConfig(this.config) ? 'managed' : 'unmanaged';\n    this.logger.info(\n      `Gateway successfully loaded schema.\\n\\t* Mode: ${mode}${\n        this.apolloConfig && this.apolloConfig.graphRef\n          ? `\\n\\t* Service: ${this.apolloConfig.graphRef}`\n          : ''\n      }`,\n    );\n\n    addExtensions(this.schema!);\n\n    return {\n      schema: this.schema!,\n      executor: this.executor,\n    };\n  }\n\n  private getIdForSupergraphSdl(supergraphSdl: string) {\n    return createHash('sha256').update(supergraphSdl).digest('hex');\n  }\n\n  private async initializeSupergraphManager<T extends SupergraphManager>(\n    supergraphManager: T,\n  ) {\n    try {\n      const result = await supergraphManager.initialize({\n        update: this.externalSupergraphUpdateCallback.bind(this),\n        healthCheck: this.externalSubgraphHealthCheckCallback.bind(this),\n        getDataSource: this.externalGetDataSourceCallback.bind(this),\n      });\n      if (result?.cleanup) {\n        if (typeof result.cleanup === 'function') {\n          this.toDispose.push(result.cleanup);\n        } else {\n          this.logger.error(\n            'Provided `supergraphSdl` function returned an invalid `cleanup` property (must be a function)',\n          );\n        }\n      }\n\n      this.externalSupergraphUpdateCallback(result.supergraphSdl);\n    } catch (e) {\n      this.state = { phase: 'failed to load' };\n      await this.performCleanupAndLogErrors();\n      throw e;\n    }\n\n    this._supergraphManager = supergraphManager;\n    this.state = { phase: 'loaded' };\n  }\n\n  /**\n   * @throws Error\n   * when called from a state other than `loaded` or `intialized`\n   *\n   * @throws Error\n   * when the provided supergraphSdl is invalid\n   */\n  private externalSupergraphUpdateCallback(supergraphSdl: string) {\n    switch (this.state.phase) {\n      case 'failed to load':\n        throw new Error(\n          \"Can't call `update` callback after gateway failed to load.\",\n        );\n      case 'updating schema':\n        throw new Error(\n          \"Can't call `update` callback while supergraph update is in progress.\",\n        );\n      case 'stopped':\n        throw new Error(\n          \"Can't call `update` callback after gateway has been stopped.\",\n        );\n      case 'stopping':\n        throw new Error(\n          \"Can't call `update` callback while gateway is stopping.\",\n        );\n      case 'loaded':\n      case 'initialized':\n        // typical case\n        break;\n      default:\n        throw new UnreachableCaseError(this.state);\n    }\n\n    this.state = { phase: 'updating schema' };\n    try {\n      this.updateWithSupergraphSdl({\n        supergraphSdl,\n        id: this.getIdForSupergraphSdl(supergraphSdl),\n      });\n    } finally {\n      // if update fails, we still want to go back to `loaded` state\n      this.state = { phase: 'loaded' };\n    }\n  }\n\n  /**\n   * @throws Error\n   * when any subgraph fails the health check\n   */\n  private async externalSubgraphHealthCheckCallback(supergraphSdl: string) {\n    const serviceList = this.serviceListFromSupergraphSdl(supergraphSdl);\n    // Here we need to construct new datasources based on the new schema info\n    // so we can check the health of the services we're _updating to_.\n    const serviceMap = serviceList.reduce((serviceMap, serviceDef) => {\n      serviceMap[serviceDef.name] = {\n        url: serviceDef.url,\n        dataSource: this.createDataSource(serviceDef),\n      };\n      return serviceMap;\n    }, Object.create(null) as DataSourceMap);\n\n    try {\n      await this.serviceHealthCheck(serviceMap);\n    } catch (e) {\n      throw new Error(\n        'The gateway subgraphs health check failed. Updating to the provided ' +\n          '`supergraphSdl` will likely result in future request failures to ' +\n          'subgraphs. The following error occurred during the health check:\\n' +\n          e.message,\n      );\n    }\n  }\n\n  private externalGetDataSourceCallback({\n    name,\n    url,\n  }: ServiceEndpointDefinition) {\n    return this.getOrCreateDataSource({ name, url });\n  }\n\n  private updateWithSupergraphSdl(result: SupergraphSdlUpdate) {\n    if (result.id === this.compositionId) {\n      this.logger.debug('No change in composition since last check.');\n      return;\n    }\n\n    // This may throw, so we'll calculate early (specifically before making any updates)\n    // In the case that it throws, the gateway will:\n    //   * on initial load, throw the error\n    //   * on update, log the error and don't update\n    const { supergraph, supergraphSdl } = this.createSchemaFromSupergraphSdl(\n      result.supergraphSdl,\n    );\n\n    const previousSchema = this.schema;\n    const previousSupergraphSdl = this.supergraphSdl;\n    const previousCompositionId = this.compositionId;\n\n    if (previousSchema) {\n      this.logger.info(`Updated Supergraph SDL was found [Composition ID ${this.compositionId} => ${result.id}]`);\n    }\n\n    this.compositionId = result.id;\n    this.supergraphSdl = supergraphSdl;\n    this.supergraphSchema = supergraph.schema.toGraphQLJSSchema();\n\n    if (!supergraphSdl) {\n      this.logger.error(\n        \"A valid schema couldn't be composed. Falling back to previous schema.\",\n      );\n    } else {\n      this.updateWithSchemaAndNotify(supergraph, supergraphSdl);\n\n      if (this.experimental_didUpdateSupergraph) {\n        this.experimental_didUpdateSupergraph(\n          {\n            compositionId: result.id,\n            supergraphSdl,\n            schema: this.schema!,\n          },\n          previousCompositionId && previousSupergraphSdl && previousSchema\n            ? {\n                compositionId: previousCompositionId,\n                supergraphSdl: previousSupergraphSdl,\n                schema: previousSchema,\n              }\n            : undefined,\n        );\n      }\n    }\n  }\n\n  // TODO: We should consolidate \"schema derived data\" state as we've done in Apollo Server to\n  //       ensure we do not forget to update some of that state, and to avoid scenarios where\n  //       concurrently executing code sees partially-updated state.\n  private updateWithSchemaAndNotify(\n    supergraph: Supergraph,\n    supergraphSdl: string,\n    // Once we remove the deprecated onSchemaChange() method, we can remove this.\n    legacyDontNotifyOnSchemaChangeListeners: boolean = false,\n  ): void {\n    this.queryPlanStore.clear();\n    this.apiSchema = supergraph.apiSchema();\n    this.schema = addExtensions(this.apiSchema.toGraphQLJSSchema());\n\n    this.queryPlanner = new QueryPlanner(supergraph, this.config.queryPlannerConfig);\n\n    // Notify onSchemaChange listeners of the updated schema\n    if (!legacyDontNotifyOnSchemaChangeListeners) {\n      this.onSchemaChangeListeners.forEach((listener) => {\n        try {\n          listener(this.schema!);\n        } catch (e) {\n          this.logger.error(\n            \"An error was thrown from an 'onSchemaChange' listener. \" +\n              'The schema will still update: ' +\n              ((e && e.message) || e),\n          );\n        }\n      });\n    }\n\n    // Notify onSchemaLoadOrUpdate listeners of the updated schema\n    this.onSchemaLoadOrUpdateListeners.forEach((listener) => {\n      try {\n        listener({\n          apiSchema: this.schema!,\n          coreSupergraphSdl: supergraphSdl,\n        });\n      } catch (e) {\n        this.logger.error(\n          \"An error was thrown from an 'onSchemaLoadOrUpdate' listener. \" +\n            'The schema will still update: ' +\n            ((e && e.message) || e),\n        );\n      }\n    });\n  }\n\n  /**\n   * This can be used without an argument in order to perform an ad-hoc health check\n   * of the downstream services like so:\n   *\n   * @example\n   * ```\n   * try {\n   *   await gateway.serviceHealthCheck();\n   * } catch(e) {\n   *   /* your error handling here *\\/\n   * }\n   * ```\n   * @throws\n   * @param serviceMap {DataSourceMap}\n   */\n  public serviceHealthCheck(serviceMap: DataSourceMap = this.serviceMap) {\n    return Promise.all(\n      Object.entries(serviceMap).map(([name, { dataSource }]) =>\n        dataSource\n          .process({\n            kind: GraphQLDataSourceRequestKind.HEALTH_CHECK,\n            request: { query: HEALTH_CHECK_QUERY },\n            context: {},\n          })\n          .then((response) => ({ name, response }))\n          .catch((e) => {\n            throw new Error(`[${name}]: ${e.message}`);\n          }),\n      ),\n    );\n  }\n\n  private serviceListFromSupergraphSdl(\n    supergraphSdl: string,\n  ): readonly Omit<ServiceDefinition, 'typeDefs'>[] {\n    return Supergraph.build(supergraphSdl).subgraphsMetadata();\n  }\n\n  private createSchemaFromSupergraphSdl(supergraphSdl: string) {\n    const validateSupergraph = this.config.validateSupergraph ?? process.env.NODE_ENV !== 'production';\n    const supergraph = Supergraph.build(supergraphSdl, { validateSupergraph });\n    this.createServices(supergraph.subgraphsMetadata());\n\n    return {\n      supergraph,\n      supergraphSdl,\n    };\n  }\n\n  /**\n   * @deprecated Please use `onSchemaLoadOrUpdate` instead.\n   */\n  public onSchemaChange(\n    callback: (schema: GraphQLSchema) => void,\n  ): GatewayUnsubscriber {\n    this.onSchemaChangeListeners.add(callback);\n\n    return () => {\n      this.onSchemaChangeListeners.delete(callback);\n    };\n  }\n\n  public onSchemaLoadOrUpdate(\n    callback: (schemaContext: {\n      apiSchema: GraphQLSchema;\n      coreSupergraphSdl: string;\n    }) => void,\n  ): GatewayUnsubscriber {\n    this.onSchemaLoadOrUpdateListeners.add(callback);\n\n    return () => {\n      this.onSchemaLoadOrUpdateListeners.delete(callback);\n    };\n  }\n\n  private getOrCreateDataSource(\n    serviceDef: ServiceEndpointDefinition,\n  ): GraphQLDataSource {\n    // If the DataSource has already been created, early return\n    if (\n      this.serviceMap[serviceDef.name] &&\n      serviceDef.url === this.serviceMap[serviceDef.name].url\n    ) {\n      return this.serviceMap[serviceDef.name].dataSource;\n    }\n\n    const dataSource = this.createDataSource(serviceDef);\n\n    // Cache the created DataSource\n    this.serviceMap[serviceDef.name] = { url: serviceDef.url, dataSource };\n\n    return dataSource;\n  }\n\n  private createDataSource(\n    serviceDef: ServiceEndpointDefinition,\n  ): GraphQLDataSource {\n    if (!serviceDef.url && !isLocalConfig(this.config)) {\n      this.logger.error(\n        `Service definition for service ${serviceDef.name} is missing a url`,\n      );\n    }\n\n    return this.config.buildService\n      ? this.config.buildService(serviceDef)\n      : new RemoteGraphQLDataSource({\n          url: serviceDef.url,\n        });\n  }\n\n  private createServices(services: readonly ServiceEndpointDefinition[]) {\n    for (const serviceDef of services) {\n      this.getOrCreateDataSource(serviceDef);\n    }\n  }\n\n  private maybeWarnOnConflictingConfig() {\n    const canUseManagedConfig =\n      this.apolloConfig?.graphRef && this.apolloConfig?.keyHash;\n\n    // This might be a bit confusing just by reading, but `!isManagedConfig` just\n    // means it's any of the other types of config. If it's any other config _and_\n    // we have a studio config available (`canUseManagedConfig`) then we have a\n    // conflict.\n    if (\n      !isManagedConfig(this.config) &&\n      canUseManagedConfig &&\n      !this.warnedStates.remoteWithLocalConfig\n    ) {\n      // Only display this warning once per start-up.\n      this.warnedStates.remoteWithLocalConfig = true;\n      // This error helps avoid common misconfiguration.\n      // We don't await this because a local configuration should assume\n      // remote is unavailable for one reason or another.\n      this.logger.warn(\n        'A local gateway configuration is overriding a managed federation ' +\n          'configuration.  To use the managed ' +\n          'configuration, do not specify a service list or supergraphSdl locally.',\n      );\n    }\n  }\n\n  // XXX Nothing guarantees that the only errors thrown or returned in\n  // result.errors are GraphQLErrors, even though other code (eg\n  // ApolloServerPluginUsageReporting) assumes that. In fact, errors talking to backends\n  // are unlikely to show up as GraphQLErrors. Do we need to use\n  // formatApolloErrors or something?\n  public executor = async (\n    requestContext: GatewayGraphQLRequestContext,\n  ): Promise<GatewayExecutionResult> => {\n    return tracer.startActiveSpan(\n      OpenTelemetrySpanNames.REQUEST,\n      { attributes: requestContextSpanAttributes(requestContext, this.config.telemetry) },\n      async (span) => {\n        try {\n          const { request, document, queryHash } = requestContext;\n          const queryPlanStoreKey = request.operationName ?\n            createHash('sha256').update(queryHash).update(request.operationName).digest('hex')\n            : queryHash;\n          const operationContext = buildOperationContext({\n            schema: this.schema!,\n            operationDocument: document,\n            operationName: request.operationName,\n          });\n\n          span.setAttributes(operationContextSpanAttributes(operationContext));\n\n          // No need to build a query plan if we know the request is invalid beforehand\n          // In the future, this should be controlled by the requestPipeline\n          const validationErrors = this.validateIncomingRequest(\n            requestContext,\n            operationContext,\n          );\n\n          if (validationErrors.length > 0) {\n            recordExceptions(span, validationErrors, this.config.telemetry);\n            span.setStatus({ code: SpanStatusCode.ERROR });\n            return { errors: validationErrors };\n          }\n          let queryPlan = await this.queryPlanStore.get(queryPlanStoreKey);\n\n          if (!queryPlan) {\n            queryPlan = tracer.startActiveSpan(\n              OpenTelemetrySpanNames.PLAN,\n              requestContext.operationName\n                ? {\n                    attributes: {\n                      [OpenTelemetryAttributeNames.GRAPHQL_OPERATION_NAME]:\n                        requestContext.operationName,\n                    },\n                  }\n                : {},\n              (span) => {\n                try {\n                  const operation = operationFromDocument(\n                    this.apiSchema!,\n                    document,\n                    { operationName: request.operationName },\n                  );\n                  // TODO(#631): Can we be sure the query planner has been initialized here?\n                  return this.queryPlanner!.buildQueryPlan(operation, {\n                    recursiveSelectionsLimitDisabled:\n                      this.recursiveSelectionsLimitDisabled,\n                    nonLocalSelectionsLimitDisabled:\n                      this.nonLocalSelectionsLimitDisabled,\n                  });\n                } catch (err) {\n                  recordExceptions(span, [err], this.config.telemetry);\n                  span.setStatus({ code: SpanStatusCode.ERROR });\n                  throw err;\n                } finally {\n                  span.end();\n                }\n              },\n            );\n\n            try {\n              await this.queryPlanStore.set(queryPlanStoreKey, queryPlan);\n            } catch (err) {\n              this.logger.warn(\n                'Could not store queryPlan' + ((err && err.message) || err),\n              );\n            }\n          }\n\n          const serviceMap: ServiceMap = Object.entries(this.serviceMap).reduce(\n            (serviceDataSources, [serviceName, { dataSource }]) => {\n              serviceDataSources[serviceName] = dataSource;\n              return serviceDataSources;\n            },\n            Object.create(null) as ServiceMap,\n          );\n\n          if (this.experimental_didResolveQueryPlan) {\n            this.experimental_didResolveQueryPlan({\n              queryPlan,\n              serviceMap,\n              requestContext,\n              operationContext,\n            });\n          }\n\n          const response = await executeQueryPlan(\n            queryPlan,\n            serviceMap,\n            requestContext,\n            operationContext,\n            this.supergraphSchema!,\n            this.apiSchema!,\n            this.config.telemetry\n          );\n\n          const shouldShowQueryPlan =\n            this.config.__exposeQueryPlanExperimental &&\n            request.http &&\n            request.http.headers &&\n            request.http.headers.get('Apollo-Query-Plan-Experimental');\n\n          // We only want to serialize the query plan if we're going to use it, which is\n          // in two cases:\n          // 1) non-empty query plan and config.debug === true\n          // 2) non-empty query plan and shouldShowQueryPlan === true\n          const serializedQueryPlan =\n            queryPlan.node && (this.config.debug || shouldShowQueryPlan)\n              ? // FIXME: I disabled printing the query plan because this lead to a\n                // circular dependency between the `@apollo/gateway` and\n                // `apollo-federation-integration-testsuite` packages.\n                // We should either solve that or switch Playground to\n                // the JSON serialization format.\n                prettyFormatQueryPlan(queryPlan)\n              : null;\n\n          if (this.config.debug && serializedQueryPlan) {\n            this.logger.debug(serializedQueryPlan);\n          }\n\n          if (shouldShowQueryPlan) {\n            const queryPlanFormat =\n              request.http &&\n              request.http.headers &&\n              request.http.headers.has('Apollo-Query-Plan-Experimental-Format')\n                ? request.http.headers.get('Apollo-Query-Plan-Experimental-Format')\n                : 'prettified'\n\n            // TODO: expose the query plan in a more flexible JSON format in the future\n            // and rename this to `queryPlan`. Playground should cutover to use the new\n            // option once we've built a way to print that representation.\n\n            // In the case that `serializedQueryPlan` is null (on introspection), we\n            // still want to respond to Playground with something truthy since it depends\n            // on this to decide that query plans are supported by this gateway.\n            response.extensions = {\n              __queryPlanExperimental:\n                queryPlanFormat === 'prettified'\n                  ? serializedQueryPlan || true\n                  : queryPlanFormat === 'internal'\n                      ? queryPlan\n                      : true\n            };\n          }\n          if (response.errors) {\n            recordExceptions(span, response.errors, this.config.telemetry);\n            span.setStatus({ code: SpanStatusCode.ERROR });\n          }\n          return response;\n        } catch (err) {\n          recordExceptions(span, [err], this.config.telemetry);\n          span.setStatus({ code: SpanStatusCode.ERROR });\n          throw err;\n        } finally {\n          span.end();\n        }\n      },\n    );\n  };\n\n  private validateIncomingRequest(\n    requestContext: GatewayGraphQLRequestContext,\n    operationContext: OperationContext,\n  ) {\n    return tracer.startActiveSpan(OpenTelemetrySpanNames.VALIDATE, (span) => {\n      try {\n        // casting out of `readonly`\n        const variableDefinitions = operationContext.operation\n          .variableDefinitions as VariableDefinitionNode[] | undefined;\n\n        if (!variableDefinitions) return [];\n\n        const { errors } = getVariableValues(\n          operationContext.schema,\n          variableDefinitions,\n          requestContext.request.variables || {},\n        );\n\n        if (errors) {\n          recordExceptions(span, errors, this.config.telemetry);\n          span.setStatus({ code: SpanStatusCode.ERROR });\n        }\n        return errors || [];\n      } catch (err) {\n        recordExceptions(span, [err], this.config.telemetry);\n        span.setStatus({ code: SpanStatusCode.ERROR });\n        throw err;\n      } finally {\n        span.end();\n      }\n    });\n  }\n\n  private async performCleanupAndLogErrors() {\n    if (this.toDispose.length === 0) return;\n\n    await Promise.all(\n      this.toDispose.map((p) =>\n        p().catch((e) => {\n          this.logger.error(\n            'Error occured while calling user provided `cleanup` function: ' +\n              (e.message ?? e),\n          );\n        }),\n      ),\n    );\n    this.toDispose = [];\n  }\n\n  // Stops all processes involved with the gateway. Can be called multiple times\n  // safely. Once it (async) returns, all gateway background activity will be finished.\n  public async stop() {\n    switch (this.state.phase) {\n      case 'initialized':\n      case 'failed to load':\n      case 'stopped':\n        // Calls to stop() are idempotent.\n        return;\n      case 'stopping':\n        await this.state.stoppingDonePromise;\n        // The cast here is because TS doesn't understand that this.state can\n        // change during the await\n        // (https://github.com/microsoft/TypeScript/issues/9998).\n        if ((this.state as GatewayState).phase !== 'stopped') {\n          throw Error(\n            `Expected to be stopped when done stopping, but instead ${this.state.phase}`,\n          );\n        }\n        return;\n      case 'loaded':\n        const stoppingDonePromise = this.performCleanupAndLogErrors();\n        this.state = {\n          phase: 'stopping',\n          stoppingDonePromise,\n        };\n        await stoppingDonePromise;\n        this.state = { phase: 'stopped' };\n        return;\n      case 'updating schema': {\n        throw Error(\n          \"`ApolloGateway.stop` shouldn't be called from inside a schema change listener\",\n        );\n      }\n      default:\n        throw new UnreachableCaseError(this.state);\n    }\n  }\n\n  public __testing() {\n    return {\n      state: this.state,\n      compositionId: this.compositionId,\n      supergraphSdl: this.supergraphSdl,\n      queryPlanner: this.queryPlanner,\n    };\n  }\n}\n\nApolloGateway.prototype.onSchemaChange = deprecate(\n  ApolloGateway.prototype.onSchemaChange,\n  `'ApolloGateway.prototype.onSchemaChange' is deprecated. Use 'ApolloGateway.prototype.onSchemaLoadOrUpdate' instead.`,\n);\n\nfunction approximateObjectSize<T>(obj: T): number {\n  return Buffer.byteLength(JSON.stringify(obj), 'utf8');\n}\n\n// Throw this in places that should be unreachable (because all other cases have\n// been handled, reducing the type of the argument to `never`). TypeScript will\n// complain if in fact there is a valid type for the argument.\nclass UnreachableCaseError extends Error {\n  constructor(val: never) {\n    super(`Unreachable case: ${val}`);\n  }\n}\n\nexport {\n  executeQueryPlan,\n  buildOperationContext,\n  ServiceMap,\n  Experimental_DidFailCompositionCallback,\n  Experimental_DidResolveQueryPlanCallback,\n  Experimental_DidUpdateSupergraphCallback,\n  Experimental_UpdateComposition,\n  GatewayConfig,\n  ServiceEndpointDefinition,\n  ServiceDefinition,\n  CompositionInfo,\n  IntrospectAndCompose,\n  LocalCompose,\n  UplinkSupergraphManager,\n};\n\nexport * from './datasources';\n\nexport {\n  SupergraphSdlUpdateFunction,\n  SubgraphHealthCheckFunction,\n  GetDataSourceFunction,\n  SupergraphSdlHook,\n  SupergraphManager,\n} from './config';\n\nexport {\n  UplinkFetcherError,\n  FailureToFetchSupergraphSdlAfterInit,\n  FailureToFetchSupergraphSdlDuringInit,\n  FailureToFetchSupergraphSdlFunctionParams,\n} from './supergraphManagers';\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=resolverMap.js.map", "import { GraphQLError } from \"graphql\";\n\nexport class GraphQLSchemaValidationError extends Error {\n  constructor(public errors: ReadonlyArray<GraphQLError>) {\n    super();\n\n    this.name = this.constructor.name;\n    Error.captureStackTrace(this, this.constructor);\n    this.message = errors.map(error => error.message).join(\"\\n\\n\");\n  }\n}\n", "import {\n  concatAST,\n  DocumentNode,\n  extendSchema,\n  GraphQLSchema,\n  isObjectType,\n  isTypeDefinitionNode,\n  isTypeExtensionNode,\n  Kind,\n  TypeDefinitionNode,\n  TypeExtensionNode,\n  DirectiveDefinitionNode,\n  SchemaDefinitionNode,\n  SchemaExtensionNode,\n  OperationTypeNode,\n  GraphQLObjectType,\n  GraphQLEnumType,\n  isAbstractType,\n  isScalarType,\n  isEnumType,\n  GraphQLEnumValueConfig,\n  ConstDirectiveNode,\n  ASTNode,\n  StringValueNode,\n} from 'graphql';\n\nimport { GraphQLResolverMap, GraphQLSchemaModule } from './resolverMap';\nimport {\n  PossibleTypeExtensionsRule,\n  KnownTypeNamesRule,\n  UniqueDirectivesPerLocationRule,\n } from 'graphql/validation';\n\nimport { validateSDL } from 'graphql/validation/validate';\nimport { SDLValidationRule } from \"graphql/validation/ValidationContext\";\n\nimport { specifiedSDLRules } from 'graphql/validation/specifiedRules';\nimport { GraphQLSchemaValidationError } from './error';\nimport {\n  ApolloGraphQLInterfaceTypeExtensions,\n  ApolloGraphQLObjectTypeExtensions,\n  ApolloGraphQLUnionTypeExtensions\n} from \"../schemaExtensions\";\n\nfunction isNotNullOrUndefined<T>(\n  value: T | null | undefined,\n): value is T {\n  return value !== null && typeof value !== 'undefined';\n}\n\nexport function isNode(maybeNode: any): maybeNode is ASTNode {\n  return maybeNode && typeof maybeNode.kind === \"string\";\n}\n\nexport function isDocumentNode(node: ASTNode): node is DocumentNode {\n  return isNode(node) && node.kind === Kind.DOCUMENT;\n}\n\nfunction mapValues<T, U = T>(\n  object: Record<string, T>,\n  callback: (value: T) => U\n): Record<string, U> {\n  const result: Record<string, U> = Object.create(null);\n\n  for (const [key, value] of Object.entries(object)) {\n    result[key] = callback(value);\n  }\n\n  return result;\n}\n\nconst skippedSDLRules: SDLValidationRule[] = [\n  KnownTypeNamesRule,\n  UniqueDirectivesPerLocationRule,\n  PossibleTypeExtensionsRule,\n];\n\nconst sdlRules = specifiedSDLRules.filter(\n  rule => !skippedSDLRules.includes(rule)\n);\n\nconst extKindToDefKind = {\n  [Kind.SCALAR_TYPE_EXTENSION]: Kind.SCALAR_TYPE_DEFINITION,\n  [Kind.OBJECT_TYPE_EXTENSION]: Kind.OBJECT_TYPE_DEFINITION,\n  [Kind.INTERFACE_TYPE_EXTENSION]: Kind.INTERFACE_TYPE_DEFINITION,\n  [Kind.UNION_TYPE_EXTENSION]: Kind.UNION_TYPE_DEFINITION,\n  [Kind.ENUM_TYPE_EXTENSION]: Kind.ENUM_TYPE_DEFINITION,\n  [Kind.INPUT_OBJECT_TYPE_EXTENSION]: Kind.INPUT_OBJECT_TYPE_DEFINITION\n};\n\nexport function modulesFromSDL(\n  modulesOrSDL: (GraphQLSchemaModule | DocumentNode)[] | DocumentNode\n): GraphQLSchemaModule[] {\n  if (Array.isArray(modulesOrSDL)) {\n    return modulesOrSDL.map(moduleOrSDL => {\n      if (isNode(moduleOrSDL) && isDocumentNode(moduleOrSDL)) {\n        return { typeDefs: moduleOrSDL };\n      } else {\n        return moduleOrSDL;\n      }\n    });\n  } else {\n    return [{ typeDefs: modulesOrSDL }];\n  }\n}\n\nexport function addResolversToSchema(\n  schema: GraphQLSchema,\n  resolvers: GraphQLResolverMap<any>\n) {\n  for (const [typeName, fieldConfigs] of Object.entries(resolvers)) {\n    const type = schema.getType(typeName);\n\n    if (isAbstractType(type)) {\n      const existingExtensions: ApolloGraphQLUnionTypeExtensions | ApolloGraphQLInterfaceTypeExtensions = type.extensions;\n      for (const [fieldName, fieldConfig] of Object.entries(fieldConfigs)) {\n        if (fieldName === '__resolveReference') {\n          type.extensions = {\n            ...existingExtensions,\n            apollo: {\n              ...existingExtensions.apollo,\n              subgraph: {\n                ...existingExtensions.apollo?.subgraph,\n                resolveReference: fieldConfig,\n              },\n            },\n          };\n        } else if (fieldName === '__resolveType') {\n          type.resolveType = fieldConfig;\n        }\n      }\n    }\n\n    if (isScalarType(type)) {\n      for (const fn in fieldConfigs) {\n        const fnValue = (fieldConfigs as any)[fn];\n        // When users provide a `GraphQLScalarType` for resolvers, they often\n        // omit several config options (effectively providing `undefined`), but\n        // they probably don't mean for this to unset values in the existing\n        // `GraphQLScalarType` (e.g., clearing the AST nodes or description).\n        // So we explicitly ignore `undefined` values here; if users do want to\n        // unset existing values, they can use `null` instead.\n        if (fnValue !== undefined) {\n          (type as any)[fn] = fnValue;\n        }\n      }\n    }\n\n    if (isEnumType(type)) {\n      const values = type.getValues();\n      const newValues: { [key: string]: GraphQLEnumValueConfig } = {};\n      values.forEach(value => {\n        let newValue = (fieldConfigs as any)[value.name];\n        if (newValue === undefined) {\n          newValue = value.name;\n        }\n\n        newValues[value.name] = {\n          value: newValue,\n          deprecationReason: value.deprecationReason,\n          description: value.description,\n          astNode: value.astNode,\n          extensions: undefined\n        };\n      });\n\n      // In place updating hack to get around pulling in the full\n      // schema walking and immutable updating machinery from graphql-tools\n      Object.assign(\n        type,\n        new GraphQLEnumType({\n          ...type.toConfig(),\n          values: newValues\n        })\n      );\n    }\n\n    if (!isObjectType(type)) continue;\n\n    const fieldMap = type.getFields();\n    const existingExtensions: ApolloGraphQLObjectTypeExtensions = type.extensions;\n    for (const [fieldName, fieldConfig] of Object.entries(fieldConfigs)) {\n      if (fieldName === '__resolveReference') {\n        type.extensions = {\n          ...existingExtensions,\n          apollo: {\n            ...existingExtensions.apollo,\n            subgraph: {\n              ...existingExtensions.apollo?.subgraph,\n              resolveReference: fieldConfig,\n            },\n          },\n        };\n        continue;\n      } else if (fieldName === '__isTypeOf') {\n        type.isTypeOf = fieldConfig;\n        continue;\n      }\n\n      const field = fieldMap[fieldName];\n      if (!field) continue;\n\n      if (typeof fieldConfig === \"function\") {\n        field.resolve = fieldConfig;\n      } else {\n        field.resolve = fieldConfig.resolve;\n        field.subscribe = fieldConfig.subscribe;\n      }\n    }\n  }\n}\n\nexport function buildSchemaFromSDL(\n  modulesOrSDL: (GraphQLSchemaModule | DocumentNode)[] | DocumentNode,\n  schemaToExtend?: GraphQLSchema\n): GraphQLSchema {\n  const modules = modulesFromSDL(modulesOrSDL);\n\n  const documentAST = concatAST(modules.map(module => module.typeDefs));\n\n  const errors = validateSDL(documentAST, schemaToExtend, sdlRules);\n  if (errors.length > 0) {\n    throw new GraphQLSchemaValidationError(errors);\n  }\n\n  const definitionsMap: {\n    [name: string]: TypeDefinitionNode[];\n  } = Object.create(null);\n\n  const extensionsMap: {\n    [name: string]: TypeExtensionNode[];\n  } = Object.create(null);\n\n  const directiveDefinitions: DirectiveDefinitionNode[] = [];\n\n  const schemaDefinitions: SchemaDefinitionNode[] = [];\n  const schemaExtensions: SchemaExtensionNode[] = [];\n  const schemaDirectives: ConstDirectiveNode[] = [];\n  let description: StringValueNode | undefined;\n\n  for (const definition of documentAST.definitions) {\n    if (isTypeDefinitionNode(definition)) {\n      const typeName = definition.name.value;\n\n      if (definitionsMap[typeName]) {\n        definitionsMap[typeName].push(definition);\n      } else {\n        definitionsMap[typeName] = [definition];\n      }\n    } else if (isTypeExtensionNode(definition)) {\n      const typeName = definition.name.value;\n\n      if (extensionsMap[typeName]) {\n        extensionsMap[typeName].push(definition);\n      } else {\n        extensionsMap[typeName] = [definition];\n      }\n    } else if (definition.kind === Kind.DIRECTIVE_DEFINITION) {\n      directiveDefinitions.push(definition);\n    } else if (definition.kind === Kind.SCHEMA_DEFINITION) {\n      schemaDefinitions.push(definition);\n      schemaDirectives.push(\n        ...(definition.directives ? definition.directives : [])\n      );\n      description = definition.description;\n    } else if (definition.kind === Kind.SCHEMA_EXTENSION) {\n      schemaExtensions.push(definition);\n      schemaDirectives.push(\n        ...(definition.directives ? definition.directives : [])\n      );\n    }\n  }\n\n  let schema = schemaToExtend\n    ? schemaToExtend\n    : new GraphQLSchema({\n        query: undefined\n      });\n\n  const missingTypeDefinitions: TypeDefinitionNode[] = [];\n\n  for (const [extendedTypeName, extensions] of Object.entries(extensionsMap)) {\n    if (!definitionsMap[extendedTypeName]) {\n      const extension = extensions[0];\n\n      const kind = extension.kind;\n      const definition = {\n        kind: extKindToDefKind[kind],\n        name: extension.name\n      } as TypeDefinitionNode;\n\n      missingTypeDefinitions.push(definition);\n    }\n  }\n\n  schema = extendSchema(\n    schema,\n    {\n      kind: Kind.DOCUMENT,\n      definitions: [\n        ...Object.values(definitionsMap).flat(),\n        ...missingTypeDefinitions,\n        ...directiveDefinitions\n      ]\n    },\n    {\n      assumeValidSDL: true\n    }\n  );\n\n  schema = extendSchema(\n    schema,\n    {\n      kind: Kind.DOCUMENT,\n      definitions: Object.values(extensionsMap).flat(),\n    },\n    {\n      assumeValidSDL: true\n    }\n  );\n\n  let operationTypeMap: { [operation in OperationTypeNode]?: string };\n\n  const operationTypes = [...schemaDefinitions, ...schemaExtensions]\n    .map(node => node.operationTypes)\n    .filter(isNotNullOrUndefined)\n    .flat();\n\n  if (operationTypes.length > 0) {\n    operationTypeMap = {};\n    for (const { operation, type } of operationTypes) {\n      operationTypeMap[operation] = type.name.value;\n    }\n  } else {\n    operationTypeMap = {\n      query: \"Query\",\n      mutation: \"Mutation\",\n      subscription: \"Subscription\"\n    };\n  }\n\n  schema = new GraphQLSchema({\n    ...schema.toConfig(),\n    ...mapValues(operationTypeMap, typeName =>\n      typeName\n        ? (schema.getType(typeName) as GraphQLObjectType<any, any>)\n        : undefined\n    ),\n    description: description?.value,\n    astNode: {\n      kind: Kind.SCHEMA_DEFINITION,\n      description,\n      directives: schemaDirectives,\n      operationTypes: [] // satisfies typescript, will be ignored\n    }\n  });\n\n  for (const module of modules) {\n    if (!module.resolvers) continue;\n    addResolversToSchema(schema, module.resolvers);\n  }\n\n  return schema;\n}\n", "import {\n  GraphQLSchema,\n  GraphQLNamedType,\n  isIntrospectionType,\n  isObjectType,\n  GraphQLObjectType,\n  GraphQLType,\n  isListType,\n  GraphQLList,\n  isNonNullType,\n  GraphQLNonNull,\n  GraphQLFieldConfigMap,\n  GraphQLFieldConfigArgumentMap,\n  isInterfaceType,\n  GraphQLInterfaceType,\n  isUnionType,\n  GraphQLUnionType,\n  isInputObjectType,\n  GraphQLInputObjectType,\n  GraphQLInputFieldConfigMap,\n  GraphQLDirective\n} from \"graphql\";\n\ntype TypeTransformer = (\n  type: GraphQLNamedType\n) => GraphQLNamedType | null | undefined;\n\nfunction mapValues<T, U = T>(\n  object: Record<string, T>,\n  callback: (value: T) => U\n): Record<string, U> {\n  const result: Record<string, U> = Object.create(null);\n\n  for (const [key, value] of Object.entries(object)) {\n    result[key] = callback(value);\n  }\n\n  return result;\n}\n\nexport function transformSchema(\n  schema: GraphQLSchema,\n  transformType: TypeTransformer\n): GraphQLSchema {\n  const typeMap: { [typeName: string]: GraphQLNamedType } = Object.create(null);\n\n  for (const oldType of Object.values(schema.getTypeMap())) {\n    if (isIntrospectionType(oldType)) continue;\n\n    const result = transformType(oldType);\n\n    // Returning `null` removes the type.\n    if (result === null) continue;\n\n    // Returning `undefined` keeps the old type.\n    const newType = result || oldType;\n    typeMap[newType.name] = recreateNamedType(newType);\n  }\n\n  const schemaConfig = schema.toConfig();\n\n  return new GraphQLSchema({\n    ...schemaConfig,\n    types: Object.values(typeMap),\n    query: replaceMaybeType(schemaConfig.query),\n    mutation: replaceMaybeType(schemaConfig.mutation),\n    subscription: replaceMaybeType(schemaConfig.subscription),\n    directives: replaceDirectives(schemaConfig.directives)\n  });\n\n  function recreateNamedType(type: GraphQLNamedType): GraphQLNamedType {\n    if (isObjectType(type)) {\n      const config = type.toConfig();\n\n      return new GraphQLObjectType({\n        ...config,\n        interfaces: () => config.interfaces.map(replaceNamedType),\n        fields: () => replaceFields(config.fields)\n      });\n    } else if (isInterfaceType(type)) {\n      const config = type.toConfig();\n\n      return new GraphQLInterfaceType({\n        ...config,\n        interfaces: () => config.interfaces.map(replaceNamedType),\n        fields: () => replaceFields(config.fields)\n      });\n    } else if (isUnionType(type)) {\n      const config = type.toConfig();\n\n      return new GraphQLUnionType({\n        ...config,\n        types: () => config.types.map(replaceNamedType)\n      });\n    } else if (isInputObjectType(type)) {\n      const config = type.toConfig();\n\n      return new GraphQLInputObjectType({\n        ...config,\n        fields: () => replaceInputFields(config.fields)\n      });\n    }\n\n    return type;\n  }\n\n  function replaceType<T extends GraphQLType>(\n    type: GraphQLList<T>\n  ): GraphQLList<T>;\n  function replaceType<T extends GraphQLType>(\n    type: GraphQLNonNull<T>\n  ): GraphQLNonNull<T>;\n  function replaceType<T extends GraphQLType>(type: T): T;\n  function replaceType(type: GraphQLType): GraphQLType {\n    if (isListType(type)) {\n      return new GraphQLList(replaceType(type.ofType));\n    } else if (isNonNullType(type)) {\n      return new GraphQLNonNull(replaceType(type.ofType));\n    }\n    return replaceNamedType(type);\n  }\n\n  function replaceNamedType<T extends GraphQLNamedType>(type: T): T {\n    const newType = typeMap[type.name] as T;\n    return newType ? newType : type;\n  }\n\n  function replaceMaybeType<T extends GraphQLNamedType>(\n    type: T | null | undefined\n  ): T | undefined {\n    return type ? replaceNamedType(type) : undefined;\n  }\n\n  function replaceFields<TSource, TContext>(\n    fieldsMap: GraphQLFieldConfigMap<TSource, TContext>\n  ): GraphQLFieldConfigMap<TSource, TContext> {\n    return mapValues(fieldsMap, field => ({\n      ...field,\n      type: replaceType(field.type),\n      args: field.args ? replaceArgs(field.args) : undefined\n    }));\n  }\n\n  function replaceInputFields(\n    fieldsMap: GraphQLInputFieldConfigMap\n  ): GraphQLInputFieldConfigMap {\n    return mapValues(fieldsMap, field => ({\n      ...field,\n      type: replaceType(field.type)\n    }));\n  }\n\n  function replaceArgs(args: GraphQLFieldConfigArgumentMap): GraphQLFieldConfigArgumentMap {\n    return mapValues(args, (arg) => ({\n      ...arg,\n      type: replaceType(arg.type),\n    }));\n  }\n\n  function replaceDirectives(directives: readonly GraphQLDirective[]): readonly GraphQLDirective[] {\n    return directives.map((directive) => {\n      const config = directive.toConfig();\n      return new GraphQLDirective({\n        ...config,\n        args: replaceArgs(config.args),\n      });\n    });\n  }\n}\n", "export * from './resolverMap';\nexport * from './buildSchemaFromSDL';\nexport * from './error';\nexport * from './transformSchema';\n\n", "// NOTE: Once Apollo Server 4 is released, move this package into the\n// apollo-server repo. We're placing it in the apollo-utils repo for now to\n// enable us to make non-alpha releases that can be used on the apollo-server\n// version-4 branch.\n\nimport type { GraphQLCompositeType, GraphQLResolveInfo } from 'graphql';\n\n/**\n * CacheScope represents whether cacheable data should be shared across sessions\n * (PUBLIC) or considered session-specific (PRIVATE).\n */\nexport type CacheScope = 'PUBLIC' | 'PRIVATE';\n\n/**\n * CacheHint represents a contribution to an overall cache policy. It can\n * specify a maxAge and/or a scope.\n */\nexport interface CacheHint {\n  maxAge?: number;\n  scope?: CacheScope;\n}\n\n/**\n * CachePolicy is a mutable CacheHint with helpful methods for updating its\n * fields.\n */\nexport interface CachePolicy extends CacheHint {\n  /**\n   * Mutate this CachePolicy by replacing each field defined in `hint`. This can\n   * make the policy more restrictive or less restrictive.\n   */\n  replace(hint: CacheHint): void;\n\n  /**\n   * Mutate this CachePolicy by restricting each field defined in `hint`. This\n   * can only make the policy more restrictive: a previously defined `maxAge`\n   * can only be reduced, and a previously Private scope cannot be made Public.\n   */\n  restrict(hint: CacheHint): void;\n\n  /**\n   * If this policy has a positive `maxAge`, then return a copy of itself as a\n   * `CacheHint` with both fields defined. Otherwise return null.\n   */\n  policyIfCacheable(): Required<CacheHint> | null;\n}\n\n/**\n * When using Apollo Server with the cache control plugin (on by default), an\n * object of this kind is available to resolvers on `info.cacheControl`.\n */\nexport interface ResolveInfoCacheControl {\n  cacheHint: CachePolicy;\n  // Shorthand for `cacheHint.replace(hint)`; also for compatibility with\n  // the Apollo Server 2.x API.\n  setCacheHint(hint: CacheHint): void;\n\n  cacheHintFromType(t: GraphQLCompositeType): CacheHint | undefined;\n}\n\n/** When using Apollo Server with the cache control plugin (on by default), the\n * `info` argument to resolvers can be considered to be of this type. (You can\n * use this type with the customResolveInfo option to the graphql-code-generator\n * typescript-resolvers plugin, for example.) */\nexport interface GraphQLResolveInfoWithCacheControl\n  extends Omit<GraphQLResolveInfo, 'cacheControl'> {\n  // Why the Omit above? If you happen to have AS2 `apollo-cache-control` or AS3\n  // `apollo-server-core` in your TypeScript build, then there's an ambient\n  // `declare module` floating around that monkey-patches GraphQLResolveInfo to\n  // have a cacheControl field. This led to lots of problems, which is why in\n  // AS4 we're moving towards the approach in this file where don't assume every\n  // GraphQLResolveInfo is a GraphQLResolveInfoWithCacheControl. The AS3 type is\n  // very slightly incompatible with the type in the file, since we changed\n  // CacheScope to be a union of strings rather than an enum. They have the same\n  // runtime representation so it's safe to ignore, but in order for the\n  // `extends` to not error out if you're building with the old ambient\n  // definition floating around too, we need the Omit.\n  cacheControl: ResolveInfoCacheControl;\n}\n\n/** Given an `info` resolver argument, returns the cacheControl field if it\n * exists and appears to be from Apollo Server 3 or newer; returns null\n * otherwise.*/\nexport function maybeCacheControlFromInfo(\n  info: GraphQLResolveInfo,\n): ResolveInfoCacheControl | null {\n  if ((info as any).cacheControl?.cacheHint?.restrict) {\n    return (info as any).cacheControl;\n  }\n  return null;\n}\n\n/** Given an `info` resolver argument, returns the cacheControl field if it\n * exists and appears to be from Apollo Server 3 or newer; throws\n * otherwise.*/\nexport function cacheControlFromInfo(\n  info: GraphQLResolveInfo,\n): ResolveInfoCacheControl {\n  if (!('cacheControl' in info)) {\n    throw new Error(\n      'The `info` argument does not appear to have a cacheControl field. ' +\n        \"Check that you are using Apollo Server 3 or newer and that you aren't using \" +\n        'ApolloServerPluginCacheControlDisabled.',\n    );\n  }\n  if (!(info as any).cacheControl?.cacheHint?.restrict) {\n    throw new Error(\n      'The `info` argument has a cacheControl field but it does not appear to be from Apollo' +\n        \"Server 3 or newer. Check that you are using Apollo Server 3 or newer and that you aren't using \" +\n        'ApolloServerPluginCacheControlDisabled.',\n    );\n  }\n  return (info as any).cacheControl;\n}\n", "import {\n  GraphQLFieldConfig,\n  GraphQLString,\n  GraphQLUnionType,\n  GraphQLObjectType,\n  GraphQLScalarType,\n  GraphQLNonNull,\n  GraphQLList,\n  GraphQLType,\n  GraphQLNamedType,\n  isNamedType,\n  isObjectType,\n  GraphQLResolveInfo,\n  isInterfaceType,\n  defaultTypeResolver,\n  GraphQLError,\n  GraphQLAbstractType,\n  GraphQLSchema,\n  GraphQLInterfaceType,\n} from 'graphql';\nimport { PromiseOrValue } from 'graphql/jsutils/PromiseOrValue';\nimport { maybeCacheControlFromInfo } from '@apollo/cache-control-types';\nimport { ApolloGraphQLInterfaceTypeExtensions, ApolloGraphQLObjectTypeExtensions, GraphQLReferenceResolver } from './schemaExtensions';\nimport { inspect } from 'util';\n\nexport type Maybe<T> = null | undefined | T;\n\nexport const EntityType = new GraphQLUnionType({\n  name: '_Entity',\n  types: [],\n});\n\nexport const ServiceType = new GraphQLObjectType({\n  name: '_Service',\n  fields: {\n    sdl: {\n      type: GraphQLString,\n      description:\n        'The sdl representing the federated service capabilities. Includes federation directives, removes federation types, and includes rest of full schema after schema directives have been applied',\n    },\n  },\n});\n\nexport const AnyType = new GraphQLScalarType({\n  name: '_Any',\n  serialize(value) {\n    return value;\n  },\n});\n\nexport const LinkImportType = new GraphQLScalarType({\n  name: 'link__Import',\n  specifiedByURL: null\n});\n\nfunction isPromise<T>(value: PromiseOrValue<T>): value is Promise<T> {\n  return typeof (value as {then?: unknown})?.then === 'function';\n}\n\nasync function maybeAddTypeNameToPossibleReturn<T extends { __typename?: string }>(\n  maybeObject: PromiseOrValue<null | T>,\n  typename: string,\n): Promise<null | T> {\n  const objectOrNull = await maybeObject;\n  if (\n    objectOrNull !== null\n    && typeof objectOrNull === 'object'\n  ) {\n    // If the object already has a __typename assigned, we're \"refining\" the\n    // type from an interface to an interfaceObject.\n    if ('__typename' in objectOrNull && objectOrNull.__typename !== typename) {\n      // XXX There's a really interesting nuance here in this condition. At a\n      // first glance, it looks like the code here and below could be simplified\n      // to just:\n      // ```\n      // objectOrNull.__typename = typename;\n      // return objectOrNull;\n      // ```\n      // But in this case, something internal to `graphql-js` depends on the\n      // identity of the object returned here. If we mutate in this case, we end\n      // up with errors from `graphql-js`. This might be worth investigating at\n      // some point, but for now creating a new object solves the problem and\n      // doesn't create any new ones.\n      return {\n        ...objectOrNull,\n        __typename: typename,\n      };\n    }\n\n    Object.defineProperty(objectOrNull, '__typename', {\n      value: typename,\n    });\n  }\n  return objectOrNull;\n}\n\n/**\n * Copied and adapted from GraphQL-js to provide more tailored error messages (but the equivalent method is also not exported\n * by `graphql-js`).\n *\n * For @key on interfaces, we need to check that we can resolve the runtime type of the object returned by the interface\n * `__resolveReference`. If we cannot, and we simply don't add any `__typename` to the result, the graphQL-js will end\n * erroring out, but the error will not be user friendly as it will say something along the lines of:\n * ```\n *   Abstract type \"_Entity\" must resolve to an Object type at runtime for field \"Query._entities\". Either the \"_Entity\" type\n *   should provide a \"resolveType\" function or each possible type should provide an \"isTypeOf\" function.\n * ```\n * But this is ultimately incorrect, as it is only interface type the user must use \"resolveType\", add a __typename, or rely\n * on \"isTypeOf\". And so we have to somewhat copy and adapt the logic slightly (mostly to provide a more user friendly method).\n */\nfunction ensureValidRuntimeType(\n  runtimeTypeName: unknown,\n  schema: GraphQLSchema,\n  returnType: GraphQLAbstractType,\n  result: unknown,\n): GraphQLObjectType {\n  if (runtimeTypeName == null) {\n    throw new GraphQLError(\n      `Abstract type \"${returnType.name}\" \\`__resolveReference\\` method must resolve to an Object type at runtime. Either the object returned by \"${returnType}.__resolveReference\" must include a valid \\`__typename\\` field, or the \"${returnType.name}\" type should provide a \"resolveType\" function or each possible type should provide an \"isTypeOf\" function.`,\n    );\n  }\n\n  if (typeof runtimeTypeName !== 'string') {\n    throw new GraphQLError(\n      `Abstract type \"${returnType.name}\" \\`__resolveReference\\` method must resolve to an Object type at runtime with ` +\n        `value ${inspect(result)}, received \"${inspect(runtimeTypeName)}\".`,\n    );\n  }\n\n  const runtimeType = schema.getType(runtimeTypeName);\n  if (runtimeType == null) {\n    throw new GraphQLError(\n      `Abstract type \"${returnType.name}\" \\`__resolveReference\\` method resolved to a type \"${runtimeTypeName}\" that does not exist inside the schema.`,\n    );\n  }\n\n  if (!isObjectType(runtimeType)) {\n    throw new GraphQLError(\n      `Abstract type \"${returnType.name}\" \\`__resolveReference\\` method resolved to a non-object type \"${runtimeTypeName}\".`,\n    );\n  }\n\n  if (!schema.isSubType(returnType, runtimeType)) {\n    throw new GraphQLError(\n      `Runtime Object type \"${runtimeType.name}\" \\`__resolveReference\\` method is not a possible type for \"${returnType.name}\".`,\n    );\n  }\n\n  return runtimeType;\n}\n\nasync function withResolvedType<T>({\n  type,\n  value,\n  context,\n  info,\n  callback,\n}: {\n  type: GraphQLInterfaceType,\n  value: any,\n  context: any,\n  info: GraphQLResolveInfo,\n  callback: (runtimeType: GraphQLObjectType) => PromiseOrValue<T>,\n}): Promise<T> {\n  const resolvedValue = await value;\n  if (resolvedValue === null) {\n    return resolvedValue;\n  }\n\n  const resolveTypeFn = type.resolveType ?? defaultTypeResolver;\n  const runtimeType = resolveTypeFn(resolvedValue, context, info, type);\n  if (isPromise(runtimeType)) {\n    return runtimeType.then((name) => (\n      callback(ensureValidRuntimeType(name, info.schema, type, resolvedValue))\n    ));\n  }\n\n  return callback(ensureValidRuntimeType(runtimeType, info.schema, type, resolvedValue));\n}\n\nfunction definedResolveReference(type: GraphQLObjectType | GraphQLInterfaceType): GraphQLReferenceResolver<any> | undefined {\n  const extensions: ApolloGraphQLObjectTypeExtensions | ApolloGraphQLInterfaceTypeExtensions = type.extensions;\n  return extensions.apollo?.subgraph?.resolveReference;\n}\n\nexport function entitiesResolver({\n  representations,\n  context,\n  info\n}: {\n  representations: any,\n  context: any,\n  info: GraphQLResolveInfo\n}) {\n  return representations.map((reference: { __typename: string } & object) => {\n    const { __typename } = reference;\n\n    const type = info.schema.getType(__typename);\n    if (!type || !(isObjectType(type) || isInterfaceType(type))) {\n      throw new Error(\n        `The _entities resolver tried to load an entity for type \"${__typename}\", but no object or interface type of that name was found in the schema`,\n      );\n    }\n\n    // If you're using `@apollo/subgraph` with Apollo Server v3+ (without\n    // disabling the cache control plugin) and the schema has a `@cacheControl`\n    // directive on the specific type selected by `__typename`, restrict the\n    // request's cache policy based on that directive. (This does not work with\n    // Apollo Server 2 or non-Apollo-Server GraphQL servers;\n    // maybeCacheControlFromInfo will return null in that case.)\n    const cacheControl = maybeCacheControlFromInfo(info);\n    if (cacheControl) {\n      const cacheHint = cacheControl.cacheHintFromType(type);\n\n      if (cacheHint) {\n        cacheControl.cacheHint.restrict(cacheHint);\n      }\n    }\n\n    const resolveReference = definedResolveReference(type);\n\n    // FIXME somehow get this to show up special in Studio traces?\n    const result = resolveReference ? resolveReference(reference, context, info) : reference;\n\n    if (isInterfaceType(type)) {\n      return withResolvedType({\n        type,\n        value: result,\n        context,\n        info,\n        callback: (runtimeType) => {\n          // If we had no interface-level __resolveReference, then we look for one on the runtime\n          // type itself, and call it if it exists. If that one also doesn't, we essentially end\n          // up using the same resolver than for object types, one that does nothing.\n          let finalResult = maybeAddTypeNameToPossibleReturn(result, runtimeType.name);\n          if (!resolveReference) {\n            const runtimeResolveReference = definedResolveReference(runtimeType);\n            if (runtimeResolveReference) {\n              // Note that we call the resolver on the reference with the \"proper\" __typename,\n              // and then add back the __typename again in case the resolver removed it (which\n              // ultimately is the behaviour we use with object type __resolveReference in\n              // general).\n              finalResult = isPromise(finalResult)\n                ? finalResult.then((r) => runtimeResolveReference(r, context, info))\n                : runtimeResolveReference(finalResult, context, info);\n              finalResult = maybeAddTypeNameToPossibleReturn(finalResult, runtimeType.name);\n            }\n          }\n          return finalResult;\n        },\n      });\n    }\n\n    return maybeAddTypeNameToPossibleReturn(result, __typename);\n  });\n}\n\n\nexport const entitiesField: GraphQLFieldConfig<any, any> = {\n  type: new GraphQLNonNull(new GraphQLList(EntityType)),\n  args: {\n    representations: {\n      type: new GraphQLNonNull(new GraphQLList(new GraphQLNonNull(AnyType))),\n    },\n  },\n  resolve(_source, { representations }, context, info) {\n    return entitiesResolver({ representations, context, info });\n  },\n};\n\nexport const serviceField: GraphQLFieldConfig<any, any> = {\n  type: new GraphQLNonNull(ServiceType),\n};\n\nexport const federationTypes: GraphQLNamedType[] = [\n  ServiceType,\n  AnyType,\n  EntityType,\n  LinkImportType,\n];\n\nexport function isFederationType(type: GraphQLType): boolean {\n  return (\n    isNamedType(type) && federationTypes.some(({ name }) => name === type.name)\n  );\n}\n", "import { deprecate } from 'util';\nimport {\n  DocumentNode,\n  GraphQLSchema,\n  concatAST,\n} from 'graphql';\nimport {\n  GraphQLSchemaModule,\n  GraphQLResolverMap,\n  addResolversToSchema,\n  modulesFromSDL,\n} from './schema-helper';\n\nimport { assert, buildSubgraph, FEDERATION_UNNAMED_SUBGRAPH_NAME, printSchema } from '@apollo/federation-internals';\nimport { entitiesResolver } from './types';\n\ntype LegacySchemaModule = {\n  typeDefs: DocumentNode | DocumentNode[];\n  resolvers?: GraphQLResolverMap<unknown>;\n};\n\nexport { GraphQLSchemaModule };\n\nexport function buildSubgraphSchema(\n  modulesOrSDL:\n    | (GraphQLSchemaModule | DocumentNode)[]\n    | DocumentNode\n    | LegacySchemaModule,\n): GraphQLSchema {\n  // ApolloServer supports passing an array of DocumentNode along with a single\n  // map of resolvers to build a schema. Long term we don't want to support this\n  // style anymore as we move towards a more structured approach to modules,\n  // however, it has tripped several teams up to not support this signature\n  // in buildSubgraphSchema. Especially as teams migrate from\n  // `new ApolloServer({ typeDefs: DocumentNode[], resolvers })` to\n  // `new ApolloServer({ schema: buildSubgraphSchema({ typeDefs: DocumentNode[], resolvers }) })`\n  //\n  // The last type in the union for `modulesOrSDL` supports this \"legacy\" input\n  // style in a simple manner (by just adding the resolvers to the first typeDefs entry)\n  //\n  let shapedModulesOrSDL: (GraphQLSchemaModule | DocumentNode)[] | DocumentNode;\n  if ('typeDefs' in modulesOrSDL) {\n    const { typeDefs, resolvers } = modulesOrSDL;\n    const augmentedTypeDefs = Array.isArray(typeDefs) ? typeDefs : [typeDefs];\n    shapedModulesOrSDL = augmentedTypeDefs.map((typeDefs, i) => {\n      const module: GraphQLSchemaModule = { typeDefs };\n      // add the resolvers to the first \"module\" in the array\n      if (i === 0 && resolvers) module.resolvers = resolvers;\n      return module;\n    });\n  } else {\n    shapedModulesOrSDL = modulesOrSDL;\n  }\n\n  const modules = modulesFromSDL(shapedModulesOrSDL);\n  const documentAST = concatAST(modules.map(module => module.typeDefs));\n\n  // Note: we disable root type renaming because we historically have only done it server side, not\n  // client side. It does create issues (https://github.com/apollographql/federation/issues/958) but...\n  const subgraph = buildSubgraph(FEDERATION_UNNAMED_SUBGRAPH_NAME, '', documentAST, false);\n\n  const sdl = printSchema(subgraph.schema);\n\n  const schema = subgraph.schema.toGraphQLJSSchema();\n\n  const queryRootName = subgraph.schema.schemaDefinition.rootType('query')?.name;\n  assert(queryRootName, 'A Query root type should have been added by `buildSubgraph`');\n\n  addResolversToSchema(schema, {\n     [queryRootName] : {\n      _service: () => ({ sdl }),\n    }\n  });\n\n  if (subgraph.metadata().entityType()) {\n    addResolversToSchema(schema, {\n     [queryRootName] : {\n        _entities: (_source, { representations }, context, info) => entitiesResolver({ representations, context, info }),\n      },\n      _Entity: {\n        __resolveType(parent: { __typename: string }) {\n          return parent.__typename;\n        },\n      }\n    });\n  }\n\n  for (const module of modules) {\n    if (!module.resolvers) continue;\n    addResolversToSchema(schema, module.resolvers);\n  }\n\n  return schema;\n}\n\n/**\n * @deprecated Use `buildSubgraphSchema` instead.\n */\nexport const buildFederatedSchema = deprecate(\n  buildSubgraphSchema,\n  `'buildFederatedSchema' is deprecated. Use 'buildSubgraphSchema' instead.`,\n);\n", "/**\n * Forked from graphql-js printSchema.ts file @ v16.0.0\n * This file has been modified to support printing subgraph\n * schema, including associated federation directives.\n */\nimport {\n  GraphQLSchema,\n  GraphQLNamedType,\n  print,\n  DefinitionNode,\n} from 'graphql';\nimport { buildSubgraph, FEDERATION_UNNAMED_SUBGRAPH_NAME, graphQLJSNamedTypeToAST, graphQLJSSchemaToAST, printSchema } from '@apollo/federation-internals';\n\nexport function printSubgraphSchema(schema: GraphQLSchema): string {\n  const ast = graphQLJSSchemaToAST(schema);\n  const subgraph = buildSubgraph(FEDERATION_UNNAMED_SUBGRAPH_NAME, '', ast, false);\n  return subgraph.toString();\n}\n\nexport function printIntrospectionSchema(schema: GraphQLSchema): string {\n  // Note(Sylvain): it's unclear to me what this method is meant for. It says that it prints an introspection\n  // schema, but even the historical version in fed1 was printing directive applications for federation\n  // directives, even though those wouldn't appear in an introspected schema.\n  // So really, if we wanted to print what introspecting the schema would get us, then I believe that\n  // simply calling the graphQL-js `printSchema` method on the input `schema` does just that and I'm\n  // not sure why we have this, and we should probably deprecate it.\n  //\n  // In the meantime, we more or less continue to do what fed1 used to do here, that is we print with\n  // directive applications and without skipping any directive definition (contrarily to\n  // `printSubgraphSchema`).\n  // Note in particular that we're not saying that the \"behaviour\" of this method is useless, there is\n  // definitively something to be said for having an easy to print a full `GraphQLSchema` with directive\n  // applications, which this does, but what we're saying is that the current name of the method doesn't\n  // carries clearly that notion.\n  const ast = graphQLJSSchemaToAST(schema);\n  const subgraph = buildSubgraph(FEDERATION_UNNAMED_SUBGRAPH_NAME, '', ast, false);\n  return printSchema(subgraph.schema);\n}\n\nexport function printType(type: GraphQLNamedType): string {\n  const { definition, extensions } = graphQLJSNamedTypeToAST(type);\n  const defAst: DefinitionNode[] = definition ? [definition] : [];\n  return defAst.concat(extensions).map((n) => print(n)).join('\\n\\n');\n}\n\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n */\nexport function printBlockString(\n  value: string,\n  preferMultipleLines: boolean = false,\n): string {\n  const isSingleLine = !value.includes('\\n');\n  const hasLeadingSpace = value[0] === ' ' || value[0] === '\\t';\n  const hasTrailingQuote = value[value.length - 1] === '\"';\n  const hasTrailingSlash = value[value.length - 1] === '\\\\';\n  const printAsMultipleLines =\n    !isSingleLine ||\n    hasTrailingQuote ||\n    hasTrailingSlash ||\n    preferMultipleLines;\n\n  let result = '';\n  // Format a multi-line block quote to account for leading space.\n  if (printAsMultipleLines && !(isSingleLine && hasLeadingSpace)) {\n    result += '\\n';\n  }\n  result += value;\n  if (printAsMultipleLines) {\n    result += '\\n';\n  }\n\n  return '\"\"\"' + result.replace(/\"\"\"/g, '\\\\\"\"\"') + '\"\"\"';\n}\n", "export { buildSubgraphSchema } from './buildSubgraphSchema';\nexport { printSubgraphSchema } from './printSubgraphSchema';\n", "\n/**\n * Module dependencies.\n */\n\nconst debug = require('debug')('koa-mount')\nconst compose = require('koa-compose')\nconst assert = require('assert')\n\n/**\n * Expose `mount()`.\n */\n\nmodule.exports = mount\n\n/**\n * Mount `app` with `prefix`, `app`\n * may be a Koa application or\n * middleware function.\n *\n * @param {String|Application|Function} prefix, app, or function\n * @param {Application|Function} [app or function]\n * @return {Function}\n * @api public\n */\n\nfunction mount (prefix, app) {\n  if (typeof prefix !== 'string') {\n    app = prefix\n    prefix = '/'\n  }\n\n  assert.equal(prefix[0], '/', 'mount path must begin with \"/\"')\n\n  // compose\n  let downstream = app  \n  if (Array.isArray(app)) {\n    downstream = compose(app)\n  } else if (app.middleware) {\n    downstream = compose(app.middleware)\n  }\n\n  // don't need to do mounting here\n  if (prefix === '/') return downstream\n\n  const trailingSlash = prefix.slice(-1) === '/'\n\n  const name = app.name || 'unnamed'\n  debug('mount %s %s', prefix, name)\n\n  return async function (ctx, upstream) {\n    const prev = ctx.path\n    const newPath = match(prev)\n    debug('mount %s %s -> %s', prefix, name, newPath)\n    if (!newPath) return await upstream()\n\n    ctx.mountPath = prefix\n    ctx.path = newPath\n    debug('enter %s -> %s', prev, ctx.path)\n\n    try {\n      await downstream(ctx, async () => {\n        ctx.path = prev\n        await upstream()\n        ctx.path = newPath\n      })\n    } finally {\n      debug('leave %s -> %s', prev, ctx.path)\n      ctx.path = prev\n    }\n  }\n\n  /**\n   * Check if `prefix` satisfies a `path`.\n   * Returns the new path.\n   *\n   * match('/images/', '/lkajsldkjf') => false\n   * match('/images', '/images') => /\n   * match('/images/', '/images') => false\n   * match('/images/', '/images/asdf') => /asdf\n   *\n   * @param {String} prefix\n   * @param {String} path\n   * @return {String|Boolean}\n   * @api private\n   */\n\n  function match (path) {\n    // does not match prefix at all\n    if (path.indexOf(prefix) !== 0) return false\n\n    const newPath = path.replace(prefix, '') || '/'\n    if (trailingSlash) return newPath\n\n    // `/mount` does not match `/mountlkjalskjdf`\n    if (newPath[0] !== '/') return false\n    return newPath\n  }\n}\n", "\"use strict\";\n// Copyright 2008 Google Inc.  All rights reserved.\n//\n// Redistribution and use in source and binary forms, with or without\n// modification, are permitted provided that the following conditions are\n// met:\n//\n// * Redistributions of source code must retain the above copyright\n// notice, this list of conditions and the following disclaimer.\n// * Redistributions in binary form must reproduce the above\n// copyright notice, this list of conditions and the following disclaimer\n// in the documentation and/or other materials provided with the\n// distribution.\n// * Neither the name of Google Inc. nor the names of its\n// contributors may be used to endorse or promote products derived from\n// this software without specific prior written permission.\n//\n// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\n// \"AS IS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\n// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR\n// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\n// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\n// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT\n// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\n// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY\n// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n//\n// Code generated by the Protocol Buffer compiler is owned by the owner\n// of the input file used when generating it.  This code is not\n// standalone and requires a support library to be linked with it.  This\n// support library is itself covered by the above license.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.varint64read = varint64read;\nexports.varint64write = varint64write;\nexports.int64FromString = int64FromString;\nexports.int64ToString = int64ToString;\nexports.uInt64ToString = uInt64ToString;\nexports.varint32write = varint32write;\nexports.varint32read = varint32read;\n/**\n * Read a 64 bit varint as two JS numbers.\n *\n * Returns tuple:\n * [0]: low bits\n * [1]: high bits\n *\n * Copyright 2008 Google Inc.  All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/buffer_decoder.js#L175\n */\nfunction varint64read() {\n    let lowBits = 0;\n    let highBits = 0;\n    for (let shift = 0; shift < 28; shift += 7) {\n        let b = this.buf[this.pos++];\n        lowBits |= (b & 0x7f) << shift;\n        if ((b & 0x80) == 0) {\n            this.assertBounds();\n            return [lowBits, highBits];\n        }\n    }\n    let middleByte = this.buf[this.pos++];\n    // last four bits of the first 32 bit number\n    lowBits |= (middleByte & 0x0f) << 28;\n    // 3 upper bits are part of the next 32 bit number\n    highBits = (middleByte & 0x70) >> 4;\n    if ((middleByte & 0x80) == 0) {\n        this.assertBounds();\n        return [lowBits, highBits];\n    }\n    for (let shift = 3; shift <= 31; shift += 7) {\n        let b = this.buf[this.pos++];\n        highBits |= (b & 0x7f) << shift;\n        if ((b & 0x80) == 0) {\n            this.assertBounds();\n            return [lowBits, highBits];\n        }\n    }\n    throw new Error(\"invalid varint\");\n}\n/**\n * Write a 64 bit varint, given as two JS numbers, to the given bytes array.\n *\n * Copyright 2008 Google Inc.  All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/writer.js#L344\n */\nfunction varint64write(lo, hi, bytes) {\n    for (let i = 0; i < 28; i = i + 7) {\n        const shift = lo >>> i;\n        const hasNext = !(shift >>> 7 == 0 && hi == 0);\n        const byte = (hasNext ? shift | 0x80 : shift) & 0xff;\n        bytes.push(byte);\n        if (!hasNext) {\n            return;\n        }\n    }\n    const splitBits = ((lo >>> 28) & 0x0f) | ((hi & 0x07) << 4);\n    const hasMoreBits = !(hi >> 3 == 0);\n    bytes.push((hasMoreBits ? splitBits | 0x80 : splitBits) & 0xff);\n    if (!hasMoreBits) {\n        return;\n    }\n    for (let i = 3; i < 31; i = i + 7) {\n        const shift = hi >>> i;\n        const hasNext = !(shift >>> 7 == 0);\n        const byte = (hasNext ? shift | 0x80 : shift) & 0xff;\n        bytes.push(byte);\n        if (!hasNext) {\n            return;\n        }\n    }\n    bytes.push((hi >>> 31) & 0x01);\n}\n// constants for binary math\nconst TWO_PWR_32_DBL = 0x100000000;\n/**\n * Parse decimal string of 64 bit integer value as two JS numbers.\n *\n * Copyright 2008 Google Inc.  All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf-javascript/blob/a428c58273abad07c66071d9753bc4d1289de426/experimental/runtime/int64.js#L10\n */\nfunction int64FromString(dec) {\n    // Check for minus sign.\n    const minus = dec[0] === \"-\";\n    if (minus) {\n        dec = dec.slice(1);\n    }\n    // Work 6 decimal digits at a time, acting like we're converting base 1e6\n    // digits to binary. This is safe to do with floating point math because\n    // Number.isSafeInteger(ALL_32_BITS * 1e6) == true.\n    const base = 1e6;\n    let lowBits = 0;\n    let highBits = 0;\n    function add1e6digit(begin, end) {\n        // Note: Number('') is 0.\n        const digit1e6 = Number(dec.slice(begin, end));\n        highBits *= base;\n        lowBits = lowBits * base + digit1e6;\n        // Carry bits from lowBits to\n        if (lowBits >= TWO_PWR_32_DBL) {\n            highBits = highBits + ((lowBits / TWO_PWR_32_DBL) | 0);\n            lowBits = lowBits % TWO_PWR_32_DBL;\n        }\n    }\n    add1e6digit(-24, -18);\n    add1e6digit(-18, -12);\n    add1e6digit(-12, -6);\n    add1e6digit(-6);\n    return minus ? negate(lowBits, highBits) : newBits(lowBits, highBits);\n}\n/**\n * Losslessly converts a 64-bit signed integer in 32:32 split representation\n * into a decimal string.\n *\n * Copyright 2008 Google Inc.  All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf-javascript/blob/a428c58273abad07c66071d9753bc4d1289de426/experimental/runtime/int64.js#L10\n */\nfunction int64ToString(lo, hi) {\n    let bits = newBits(lo, hi);\n    // If we're treating the input as a signed value and the high bit is set, do\n    // a manual two's complement conversion before the decimal conversion.\n    const negative = bits.hi & 0x80000000;\n    if (negative) {\n        bits = negate(bits.lo, bits.hi);\n    }\n    const result = uInt64ToString(bits.lo, bits.hi);\n    return negative ? \"-\" + result : result;\n}\n/**\n * Losslessly converts a 64-bit unsigned integer in 32:32 split representation\n * into a decimal string.\n *\n * Copyright 2008 Google Inc.  All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf-javascript/blob/a428c58273abad07c66071d9753bc4d1289de426/experimental/runtime/int64.js#L10\n */\nfunction uInt64ToString(lo, hi) {\n    ({ lo, hi } = toUnsigned(lo, hi));\n    // Skip the expensive conversion if the number is small enough to use the\n    // built-in conversions.\n    // Number.MAX_SAFE_INTEGER = 0x001FFFFF FFFFFFFF, thus any number with\n    // highBits <= 0x1FFFFF can be safely expressed with a double and retain\n    // integer precision.\n    // Proven by: Number.isSafeInteger(0x1FFFFF * 2**32 + 0xFFFFFFFF) == true.\n    if (hi <= 0x1fffff) {\n        return String(TWO_PWR_32_DBL * hi + lo);\n    }\n    // What this code is doing is essentially converting the input number from\n    // base-2 to base-1e7, which allows us to represent the 64-bit range with\n    // only 3 (very large) digits. Those digits are then trivial to convert to\n    // a base-10 string.\n    // The magic numbers used here are -\n    // 2^24 = 16777216 = (1,6777216) in base-1e7.\n    // 2^48 = 281474976710656 = (2,8147497,6710656) in base-1e7.\n    // Split 32:32 representation into 16:24:24 representation so our\n    // intermediate digits don't overflow.\n    const low = lo & 0xffffff;\n    const mid = ((lo >>> 24) | (hi << 8)) & 0xffffff;\n    const high = (hi >> 16) & 0xffff;\n    // Assemble our three base-1e7 digits, ignoring carries. The maximum\n    // value in a digit at this step is representable as a 48-bit integer, which\n    // can be stored in a 64-bit floating point number.\n    let digitA = low + mid * 6777216 + high * 6710656;\n    let digitB = mid + high * 8147497;\n    let digitC = high * 2;\n    // Apply carries from A to B and from B to C.\n    const base = 10000000;\n    if (digitA >= base) {\n        digitB += Math.floor(digitA / base);\n        digitA %= base;\n    }\n    if (digitB >= base) {\n        digitC += Math.floor(digitB / base);\n        digitB %= base;\n    }\n    // If digitC is 0, then we should have returned in the trivial code path\n    // at the top for non-safe integers. Given this, we can assume both digitB\n    // and digitA need leading zeros.\n    return (digitC.toString() +\n        decimalFrom1e7WithLeadingZeros(digitB) +\n        decimalFrom1e7WithLeadingZeros(digitA));\n}\nfunction toUnsigned(lo, hi) {\n    return { lo: lo >>> 0, hi: hi >>> 0 };\n}\nfunction newBits(lo, hi) {\n    return { lo: lo | 0, hi: hi | 0 };\n}\n/**\n * Returns two's compliment negation of input.\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators#Signed_32-bit_integers\n */\nfunction negate(lowBits, highBits) {\n    highBits = ~highBits;\n    if (lowBits) {\n        lowBits = ~lowBits + 1;\n    }\n    else {\n        // If lowBits is 0, then bitwise-not is 0xFFFFFFFF,\n        // adding 1 to that, results in 0x100000000, which leaves\n        // the low bits 0x0 and simply adds one to the high bits.\n        highBits += 1;\n    }\n    return newBits(lowBits, highBits);\n}\n/**\n * Returns decimal representation of digit1e7 with leading zeros.\n */\nconst decimalFrom1e7WithLeadingZeros = (digit1e7) => {\n    const partial = String(digit1e7);\n    return \"0000000\".slice(partial.length) + partial;\n};\n/**\n * Write a 32 bit varint, signed or unsigned. Same as `varint64write(0, value, bytes)`\n *\n * Copyright 2008 Google Inc.  All rights reserved.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/1b18833f4f2a2f681f4e4a25cdf3b0a43115ec26/js/binary/encoder.js#L144\n */\nfunction varint32write(value, bytes) {\n    if (value >= 0) {\n        // write value as varint 32\n        while (value > 0x7f) {\n            bytes.push((value & 0x7f) | 0x80);\n            value = value >>> 7;\n        }\n        bytes.push(value);\n    }\n    else {\n        for (let i = 0; i < 9; i++) {\n            bytes.push((value & 127) | 128);\n            value = value >> 7;\n        }\n        bytes.push(1);\n    }\n}\n/**\n * Read an unsigned 32 bit varint.\n *\n * See https://github.com/protocolbuffers/protobuf/blob/8a71927d74a4ce34efe2d8769fda198f52d20d12/js/experimental/runtime/kernel/buffer_decoder.js#L220\n */\nfunction varint32read() {\n    let b = this.buf[this.pos++];\n    let result = b & 0x7f;\n    if ((b & 0x80) == 0) {\n        this.assertBounds();\n        return result;\n    }\n    b = this.buf[this.pos++];\n    result |= (b & 0x7f) << 7;\n    if ((b & 0x80) == 0) {\n        this.assertBounds();\n        return result;\n    }\n    b = this.buf[this.pos++];\n    result |= (b & 0x7f) << 14;\n    if ((b & 0x80) == 0) {\n        this.assertBounds();\n        return result;\n    }\n    b = this.buf[this.pos++];\n    result |= (b & 0x7f) << 21;\n    if ((b & 0x80) == 0) {\n        this.assertBounds();\n        return result;\n    }\n    // Extract only last 4 bits\n    b = this.buf[this.pos++];\n    result |= (b & 0x0f) << 28;\n    for (let readBytes = 5; (b & 0x80) !== 0 && readBytes < 10; readBytes++)\n        b = this.buf[this.pos++];\n    if ((b & 0x80) != 0)\n        throw new Error(\"invalid varint\");\n    this.assertBounds();\n    // Result can have 32 bits, convert it to unsigned\n    return result >>> 0;\n}\n", "\"use strict\";\n// Copyright 2021-2025 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.protoInt64 = void 0;\nconst varint_js_1 = require(\"./wire/varint.js\");\n/**\n * Int64Support for the current environment.\n */\nexports.protoInt64 = makeInt64Support();\nfunction makeInt64Support() {\n    const dv = new DataView(new ArrayBuffer(8));\n    // note that Safari 14 implements BigInt, but not the DataView methods\n    const ok = typeof BigInt === \"function\" &&\n        typeof dv.getBigInt64 === \"function\" &&\n        typeof dv.getBigUint64 === \"function\" &&\n        typeof dv.setBigInt64 === \"function\" &&\n        typeof dv.setBigUint64 === \"function\" &&\n        (!!globalThis.Deno ||\n            typeof process != \"object\" ||\n            typeof process.env != \"object\" ||\n            process.env.BUF_BIGINT_DISABLE !== \"1\");\n    if (ok) {\n        const MIN = BigInt(\"-9223372036854775808\");\n        const MAX = BigInt(\"9223372036854775807\");\n        const UMIN = BigInt(\"0\");\n        const UMAX = BigInt(\"18446744073709551615\");\n        return {\n            zero: BigInt(0),\n            supported: true,\n            parse(value) {\n                const bi = typeof value == \"bigint\" ? value : BigInt(value);\n                if (bi > MAX || bi < MIN) {\n                    throw new Error(`invalid int64: ${value}`);\n                }\n                return bi;\n            },\n            uParse(value) {\n                const bi = typeof value == \"bigint\" ? value : BigInt(value);\n                if (bi > UMAX || bi < UMIN) {\n                    throw new Error(`invalid uint64: ${value}`);\n                }\n                return bi;\n            },\n            enc(value) {\n                dv.setBigInt64(0, this.parse(value), true);\n                return {\n                    lo: dv.getInt32(0, true),\n                    hi: dv.getInt32(4, true),\n                };\n            },\n            uEnc(value) {\n                dv.setBigInt64(0, this.uParse(value), true);\n                return {\n                    lo: dv.getInt32(0, true),\n                    hi: dv.getInt32(4, true),\n                };\n            },\n            dec(lo, hi) {\n                dv.setInt32(0, lo, true);\n                dv.setInt32(4, hi, true);\n                return dv.getBigInt64(0, true);\n            },\n            uDec(lo, hi) {\n                dv.setInt32(0, lo, true);\n                dv.setInt32(4, hi, true);\n                return dv.getBigUint64(0, true);\n            },\n        };\n    }\n    return {\n        zero: \"0\",\n        supported: false,\n        parse(value) {\n            if (typeof value != \"string\") {\n                value = value.toString();\n            }\n            assertInt64String(value);\n            return value;\n        },\n        uParse(value) {\n            if (typeof value != \"string\") {\n                value = value.toString();\n            }\n            assertUInt64String(value);\n            return value;\n        },\n        enc(value) {\n            if (typeof value != \"string\") {\n                value = value.toString();\n            }\n            assertInt64String(value);\n            return (0, varint_js_1.int64FromString)(value);\n        },\n        uEnc(value) {\n            if (typeof value != \"string\") {\n                value = value.toString();\n            }\n            assertUInt64String(value);\n            return (0, varint_js_1.int64FromString)(value);\n        },\n        dec(lo, hi) {\n            return (0, varint_js_1.int64ToString)(lo, hi);\n        },\n        uDec(lo, hi) {\n            return (0, varint_js_1.uInt64ToString)(lo, hi);\n        },\n    };\n}\nfunction assertInt64String(value) {\n    if (!/^-?[0-9]+$/.test(value)) {\n        throw new Error(\"invalid int64: \" + value);\n    }\n}\nfunction assertUInt64String(value) {\n    if (!/^[0-9]+$/.test(value)) {\n        throw new Error(\"invalid uint64: \" + value);\n    }\n}\n", "\"use strict\";\n// Copyright 2021-2025 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.configureTextEncoding = configureTextEncoding;\nexports.getTextEncoding = getTextEncoding;\nconst symbol = Symbol.for(\"@bufbuild/protobuf/text-encoding\");\n/**\n * Protobuf-ES requires the Text Encoding API to convert UTF-8 from and to\n * binary. This WHATWG API is widely available, but it is not part of the\n * ECMAScript standard. On runtimes where it is not available, use this\n * function to provide your own implementation.\n *\n * Note that the Text Encoding API does not provide a way to validate UTF-8.\n * Our implementation falls back to use encodeURIComponent().\n */\nfunction configureTextEncoding(textEncoding) {\n    globalThis[symbol] = textEncoding;\n}\nfunction getTextEncoding() {\n    if (globalThis[symbol] == undefined) {\n        const te = new globalThis.TextEncoder();\n        const td = new globalThis.TextDecoder();\n        globalThis[symbol] = {\n            encodeUtf8(text) {\n                return te.encode(text);\n            },\n            decodeUtf8(bytes) {\n                return td.decode(bytes);\n            },\n            checkUtf8(text) {\n                try {\n                    encodeURIComponent(text);\n                    return true;\n                }\n                catch (_) {\n                    return false;\n                }\n            },\n        };\n    }\n    return globalThis[symbol];\n}\n", "\"use strict\";\n// Copyright 2021-2025 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BinaryReader = exports.BinaryWriter = exports.INT32_MIN = exports.INT32_MAX = exports.UINT32_MAX = exports.FLOAT32_MIN = exports.FLOAT32_MAX = exports.WireType = void 0;\nconst varint_js_1 = require(\"./varint.js\");\nconst proto_int64_js_1 = require(\"../proto-int64.js\");\nconst text_encoding_js_1 = require(\"./text-encoding.js\");\n/**\n * Protobuf binary format wire types.\n *\n * A wire type provides just enough information to find the length of the\n * following value.\n *\n * See https://developers.google.com/protocol-buffers/docs/encoding#structure\n */\nvar WireType;\n(function (WireType) {\n    /**\n     * Used for int32, int64, uint32, uint64, sint32, sint64, bool, enum\n     */\n    WireType[WireType[\"Varint\"] = 0] = \"Varint\";\n    /**\n     * Used for fixed64, sfixed64, double.\n     * Always 8 bytes with little-endian byte order.\n     */\n    WireType[WireType[\"Bit64\"] = 1] = \"Bit64\";\n    /**\n     * Used for string, bytes, embedded messages, packed repeated fields\n     *\n     * Only repeated numeric types (types which use the varint, 32-bit,\n     * or 64-bit wire types) can be packed. In proto3, such fields are\n     * packed by default.\n     */\n    WireType[WireType[\"LengthDelimited\"] = 2] = \"LengthDelimited\";\n    /**\n     * Start of a tag-delimited aggregate, such as a proto2 group, or a message\n     * in editions with message_encoding = DELIMITED.\n     */\n    WireType[WireType[\"StartGroup\"] = 3] = \"StartGroup\";\n    /**\n     * End of a tag-delimited aggregate.\n     */\n    WireType[WireType[\"EndGroup\"] = 4] = \"EndGroup\";\n    /**\n     * Used for fixed32, sfixed32, float.\n     * Always 4 bytes with little-endian byte order.\n     */\n    WireType[WireType[\"Bit32\"] = 5] = \"Bit32\";\n})(WireType || (exports.WireType = WireType = {}));\n/**\n * Maximum value for a 32-bit floating point value (Protobuf FLOAT).\n */\nexports.FLOAT32_MAX = 3.4028234663852886e38;\n/**\n * Minimum value for a 32-bit floating point value (Protobuf FLOAT).\n */\nexports.FLOAT32_MIN = -3.4028234663852886e38;\n/**\n * Maximum value for an unsigned 32-bit integer (Protobuf UINT32, FIXED32).\n */\nexports.UINT32_MAX = 0xffffffff;\n/**\n * Maximum value for a signed 32-bit integer (Protobuf INT32, SFIXED32, SINT32).\n */\nexports.INT32_MAX = 0x7fffffff;\n/**\n * Minimum value for a signed 32-bit integer (Protobuf INT32, SFIXED32, SINT32).\n */\nexports.INT32_MIN = -0x80000000;\nclass BinaryWriter {\n    constructor(encodeUtf8 = (0, text_encoding_js_1.getTextEncoding)().encodeUtf8) {\n        this.encodeUtf8 = encodeUtf8;\n        /**\n         * Previous fork states.\n         */\n        this.stack = [];\n        this.chunks = [];\n        this.buf = [];\n    }\n    /**\n     * Return all bytes written and reset this writer.\n     */\n    finish() {\n        if (this.buf.length) {\n            this.chunks.push(new Uint8Array(this.buf)); // flush the buffer\n            this.buf = [];\n        }\n        let len = 0;\n        for (let i = 0; i < this.chunks.length; i++)\n            len += this.chunks[i].length;\n        let bytes = new Uint8Array(len);\n        let offset = 0;\n        for (let i = 0; i < this.chunks.length; i++) {\n            bytes.set(this.chunks[i], offset);\n            offset += this.chunks[i].length;\n        }\n        this.chunks = [];\n        return bytes;\n    }\n    /**\n     * Start a new fork for length-delimited data like a message\n     * or a packed repeated field.\n     *\n     * Must be joined later with `join()`.\n     */\n    fork() {\n        this.stack.push({ chunks: this.chunks, buf: this.buf });\n        this.chunks = [];\n        this.buf = [];\n        return this;\n    }\n    /**\n     * Join the last fork. Write its length and bytes, then\n     * return to the previous state.\n     */\n    join() {\n        // get chunk of fork\n        let chunk = this.finish();\n        // restore previous state\n        let prev = this.stack.pop();\n        if (!prev)\n            throw new Error(\"invalid state, fork stack empty\");\n        this.chunks = prev.chunks;\n        this.buf = prev.buf;\n        // write length of chunk as varint\n        this.uint32(chunk.byteLength);\n        return this.raw(chunk);\n    }\n    /**\n     * Writes a tag (field number and wire type).\n     *\n     * Equivalent to `uint32( (fieldNo << 3 | type) >>> 0 )`.\n     *\n     * Generated code should compute the tag ahead of time and call `uint32()`.\n     */\n    tag(fieldNo, type) {\n        return this.uint32(((fieldNo << 3) | type) >>> 0);\n    }\n    /**\n     * Write a chunk of raw bytes.\n     */\n    raw(chunk) {\n        if (this.buf.length) {\n            this.chunks.push(new Uint8Array(this.buf));\n            this.buf = [];\n        }\n        this.chunks.push(chunk);\n        return this;\n    }\n    /**\n     * Write a `uint32` value, an unsigned 32 bit varint.\n     */\n    uint32(value) {\n        assertUInt32(value);\n        // write value as varint 32, inlined for speed\n        while (value > 0x7f) {\n            this.buf.push((value & 0x7f) | 0x80);\n            value = value >>> 7;\n        }\n        this.buf.push(value);\n        return this;\n    }\n    /**\n     * Write a `int32` value, a signed 32 bit varint.\n     */\n    int32(value) {\n        assertInt32(value);\n        (0, varint_js_1.varint32write)(value, this.buf);\n        return this;\n    }\n    /**\n     * Write a `bool` value, a variant.\n     */\n    bool(value) {\n        this.buf.push(value ? 1 : 0);\n        return this;\n    }\n    /**\n     * Write a `bytes` value, length-delimited arbitrary data.\n     */\n    bytes(value) {\n        this.uint32(value.byteLength); // write length of chunk as varint\n        return this.raw(value);\n    }\n    /**\n     * Write a `string` value, length-delimited data converted to UTF-8 text.\n     */\n    string(value) {\n        let chunk = this.encodeUtf8(value);\n        this.uint32(chunk.byteLength); // write length of chunk as varint\n        return this.raw(chunk);\n    }\n    /**\n     * Write a `float` value, 32-bit floating point number.\n     */\n    float(value) {\n        assertFloat32(value);\n        let chunk = new Uint8Array(4);\n        new DataView(chunk.buffer).setFloat32(0, value, true);\n        return this.raw(chunk);\n    }\n    /**\n     * Write a `double` value, a 64-bit floating point number.\n     */\n    double(value) {\n        let chunk = new Uint8Array(8);\n        new DataView(chunk.buffer).setFloat64(0, value, true);\n        return this.raw(chunk);\n    }\n    /**\n     * Write a `fixed32` value, an unsigned, fixed-length 32-bit integer.\n     */\n    fixed32(value) {\n        assertUInt32(value);\n        let chunk = new Uint8Array(4);\n        new DataView(chunk.buffer).setUint32(0, value, true);\n        return this.raw(chunk);\n    }\n    /**\n     * Write a `sfixed32` value, a signed, fixed-length 32-bit integer.\n     */\n    sfixed32(value) {\n        assertInt32(value);\n        let chunk = new Uint8Array(4);\n        new DataView(chunk.buffer).setInt32(0, value, true);\n        return this.raw(chunk);\n    }\n    /**\n     * Write a `sint32` value, a signed, zigzag-encoded 32-bit varint.\n     */\n    sint32(value) {\n        assertInt32(value);\n        // zigzag encode\n        value = ((value << 1) ^ (value >> 31)) >>> 0;\n        (0, varint_js_1.varint32write)(value, this.buf);\n        return this;\n    }\n    /**\n     * Write a `fixed64` value, a signed, fixed-length 64-bit integer.\n     */\n    sfixed64(value) {\n        let chunk = new Uint8Array(8), view = new DataView(chunk.buffer), tc = proto_int64_js_1.protoInt64.enc(value);\n        view.setInt32(0, tc.lo, true);\n        view.setInt32(4, tc.hi, true);\n        return this.raw(chunk);\n    }\n    /**\n     * Write a `fixed64` value, an unsigned, fixed-length 64 bit integer.\n     */\n    fixed64(value) {\n        let chunk = new Uint8Array(8), view = new DataView(chunk.buffer), tc = proto_int64_js_1.protoInt64.uEnc(value);\n        view.setInt32(0, tc.lo, true);\n        view.setInt32(4, tc.hi, true);\n        return this.raw(chunk);\n    }\n    /**\n     * Write a `int64` value, a signed 64-bit varint.\n     */\n    int64(value) {\n        let tc = proto_int64_js_1.protoInt64.enc(value);\n        (0, varint_js_1.varint64write)(tc.lo, tc.hi, this.buf);\n        return this;\n    }\n    /**\n     * Write a `sint64` value, a signed, zig-zag-encoded 64-bit varint.\n     */\n    sint64(value) {\n        const tc = proto_int64_js_1.protoInt64.enc(value), \n        // zigzag encode\n        sign = tc.hi >> 31, lo = (tc.lo << 1) ^ sign, hi = ((tc.hi << 1) | (tc.lo >>> 31)) ^ sign;\n        (0, varint_js_1.varint64write)(lo, hi, this.buf);\n        return this;\n    }\n    /**\n     * Write a `uint64` value, an unsigned 64-bit varint.\n     */\n    uint64(value) {\n        const tc = proto_int64_js_1.protoInt64.uEnc(value);\n        (0, varint_js_1.varint64write)(tc.lo, tc.hi, this.buf);\n        return this;\n    }\n}\nexports.BinaryWriter = BinaryWriter;\nclass BinaryReader {\n    constructor(buf, decodeUtf8 = (0, text_encoding_js_1.getTextEncoding)().decodeUtf8) {\n        this.decodeUtf8 = decodeUtf8;\n        this.varint64 = varint_js_1.varint64read; // dirty cast for `this`\n        /**\n         * Read a `uint32` field, an unsigned 32 bit varint.\n         */\n        this.uint32 = varint_js_1.varint32read;\n        this.buf = buf;\n        this.len = buf.length;\n        this.pos = 0;\n        this.view = new DataView(buf.buffer, buf.byteOffset, buf.byteLength);\n    }\n    /**\n     * Reads a tag - field number and wire type.\n     */\n    tag() {\n        let tag = this.uint32(), fieldNo = tag >>> 3, wireType = tag & 7;\n        if (fieldNo <= 0 || wireType < 0 || wireType > 5)\n            throw new Error(\"illegal tag: field no \" + fieldNo + \" wire type \" + wireType);\n        return [fieldNo, wireType];\n    }\n    /**\n     * Skip one element and return the skipped data.\n     *\n     * When skipping StartGroup, provide the tags field number to check for\n     * matching field number in the EndGroup tag.\n     */\n    skip(wireType, fieldNo) {\n        let start = this.pos;\n        switch (wireType) {\n            case WireType.Varint:\n                while (this.buf[this.pos++] & 0x80) {\n                    // ignore\n                }\n                break;\n            // @ts-ignore TS7029: Fallthrough case in switch -- ignore instead of expect-error for compiler settings without noFallthroughCasesInSwitch: true\n            case WireType.Bit64:\n                this.pos += 4;\n            case WireType.Bit32:\n                this.pos += 4;\n                break;\n            case WireType.LengthDelimited:\n                let len = this.uint32();\n                this.pos += len;\n                break;\n            case WireType.StartGroup:\n                for (;;) {\n                    const [fn, wt] = this.tag();\n                    if (wt === WireType.EndGroup) {\n                        if (fieldNo !== undefined && fn !== fieldNo) {\n                            throw new Error(\"invalid end group tag\");\n                        }\n                        break;\n                    }\n                    this.skip(wt, fn);\n                }\n                break;\n            default:\n                throw new Error(\"cant skip wire type \" + wireType);\n        }\n        this.assertBounds();\n        return this.buf.subarray(start, this.pos);\n    }\n    /**\n     * Throws error if position in byte array is out of range.\n     */\n    assertBounds() {\n        if (this.pos > this.len)\n            throw new RangeError(\"premature EOF\");\n    }\n    /**\n     * Read a `int32` field, a signed 32 bit varint.\n     */\n    int32() {\n        return this.uint32() | 0;\n    }\n    /**\n     * Read a `sint32` field, a signed, zigzag-encoded 32-bit varint.\n     */\n    sint32() {\n        let zze = this.uint32();\n        // decode zigzag\n        return (zze >>> 1) ^ -(zze & 1);\n    }\n    /**\n     * Read a `int64` field, a signed 64-bit varint.\n     */\n    int64() {\n        return proto_int64_js_1.protoInt64.dec(...this.varint64());\n    }\n    /**\n     * Read a `uint64` field, an unsigned 64-bit varint.\n     */\n    uint64() {\n        return proto_int64_js_1.protoInt64.uDec(...this.varint64());\n    }\n    /**\n     * Read a `sint64` field, a signed, zig-zag-encoded 64-bit varint.\n     */\n    sint64() {\n        let [lo, hi] = this.varint64();\n        // decode zig zag\n        let s = -(lo & 1);\n        lo = ((lo >>> 1) | ((hi & 1) << 31)) ^ s;\n        hi = (hi >>> 1) ^ s;\n        return proto_int64_js_1.protoInt64.dec(lo, hi);\n    }\n    /**\n     * Read a `bool` field, a variant.\n     */\n    bool() {\n        let [lo, hi] = this.varint64();\n        return lo !== 0 || hi !== 0;\n    }\n    /**\n     * Read a `fixed32` field, an unsigned, fixed-length 32-bit integer.\n     */\n    fixed32() {\n        // biome-ignore lint/suspicious/noAssignInExpressions: no\n        return this.view.getUint32((this.pos += 4) - 4, true);\n    }\n    /**\n     * Read a `sfixed32` field, a signed, fixed-length 32-bit integer.\n     */\n    sfixed32() {\n        // biome-ignore lint/suspicious/noAssignInExpressions: no\n        return this.view.getInt32((this.pos += 4) - 4, true);\n    }\n    /**\n     * Read a `fixed64` field, an unsigned, fixed-length 64 bit integer.\n     */\n    fixed64() {\n        return proto_int64_js_1.protoInt64.uDec(this.sfixed32(), this.sfixed32());\n    }\n    /**\n     * Read a `fixed64` field, a signed, fixed-length 64-bit integer.\n     */\n    sfixed64() {\n        return proto_int64_js_1.protoInt64.dec(this.sfixed32(), this.sfixed32());\n    }\n    /**\n     * Read a `float` field, 32-bit floating point number.\n     */\n    float() {\n        // biome-ignore lint/suspicious/noAssignInExpressions: no\n        return this.view.getFloat32((this.pos += 4) - 4, true);\n    }\n    /**\n     * Read a `double` field, a 64-bit floating point number.\n     */\n    double() {\n        // biome-ignore lint/suspicious/noAssignInExpressions: no\n        return this.view.getFloat64((this.pos += 8) - 8, true);\n    }\n    /**\n     * Read a `bytes` field, length-delimited arbitrary data.\n     */\n    bytes() {\n        let len = this.uint32(), start = this.pos;\n        this.pos += len;\n        this.assertBounds();\n        return this.buf.subarray(start, start + len);\n    }\n    /**\n     * Read a `string` field, length-delimited data converted to UTF-8 text.\n     */\n    string() {\n        return this.decodeUtf8(this.bytes());\n    }\n}\nexports.BinaryReader = BinaryReader;\n/**\n * Assert a valid signed protobuf 32-bit integer as a number or string.\n */\nfunction assertInt32(arg) {\n    if (typeof arg == \"string\") {\n        arg = Number(arg);\n    }\n    else if (typeof arg != \"number\") {\n        throw new Error(\"invalid int32: \" + typeof arg);\n    }\n    if (!Number.isInteger(arg) ||\n        arg > exports.INT32_MAX ||\n        arg < exports.INT32_MIN)\n        throw new Error(\"invalid int32: \" + arg);\n}\n/**\n * Assert a valid unsigned protobuf 32-bit integer as a number or string.\n */\nfunction assertUInt32(arg) {\n    if (typeof arg == \"string\") {\n        arg = Number(arg);\n    }\n    else if (typeof arg != \"number\") {\n        throw new Error(\"invalid uint32: \" + typeof arg);\n    }\n    if (!Number.isInteger(arg) ||\n        arg > exports.UINT32_MAX ||\n        arg < 0)\n        throw new Error(\"invalid uint32: \" + arg);\n}\n/**\n * Assert a valid protobuf float value as a number or string.\n */\nfunction assertFloat32(arg) {\n    if (typeof arg == \"string\") {\n        const o = arg;\n        arg = Number(arg);\n        if (Number.isNaN(arg) && o !== \"NaN\") {\n            throw new Error(\"invalid float32: \" + o);\n        }\n    }\n    else if (typeof arg != \"number\") {\n        throw new Error(\"invalid float32: \" + typeof arg);\n    }\n    if (Number.isFinite(arg) &&\n        (arg > exports.FLOAT32_MAX || arg < exports.FLOAT32_MIN))\n        throw new Error(\"invalid float32: \" + arg);\n}\n", "\"use strict\";\n// Copyright 2021-2025 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.base64Decode = base64Decode;\nexports.base64Encode = base64Encode;\n/**\n * Decodes a base64 string to a byte array.\n *\n * - ignores white-space, including line breaks and tabs\n * - allows inner padding (can decode concatenated base64 strings)\n * - does not require padding\n * - understands base64url encoding:\n *   \"-\" instead of \"+\",\n *   \"_\" instead of \"/\",\n *   no padding\n */\nfunction base64Decode(base64Str) {\n    const table = getDecodeTable();\n    // estimate byte size, not accounting for inner padding and whitespace\n    let es = (base64Str.length * 3) / 4;\n    if (base64Str[base64Str.length - 2] == \"=\")\n        es -= 2;\n    else if (base64Str[base64Str.length - 1] == \"=\")\n        es -= 1;\n    let bytes = new Uint8Array(es), bytePos = 0, // position in byte array\n    groupPos = 0, // position in base64 group\n    b, // current byte\n    p = 0; // previous byte\n    for (let i = 0; i < base64Str.length; i++) {\n        b = table[base64Str.charCodeAt(i)];\n        if (b === undefined) {\n            switch (base64Str[i]) {\n                // @ts-ignore TS7029: Fallthrough case in switch -- ignore instead of expect-error for compiler settings without noFallthroughCasesInSwitch: true\n                case \"=\":\n                    groupPos = 0; // reset state when padding found\n                case \"\\n\":\n                case \"\\r\":\n                case \"\\t\":\n                case \" \":\n                    continue; // skip white-space, and padding\n                default:\n                    throw Error(\"invalid base64 string\");\n            }\n        }\n        switch (groupPos) {\n            case 0:\n                p = b;\n                groupPos = 1;\n                break;\n            case 1:\n                bytes[bytePos++] = (p << 2) | ((b & 48) >> 4);\n                p = b;\n                groupPos = 2;\n                break;\n            case 2:\n                bytes[bytePos++] = ((p & 15) << 4) | ((b & 60) >> 2);\n                p = b;\n                groupPos = 3;\n                break;\n            case 3:\n                bytes[bytePos++] = ((p & 3) << 6) | b;\n                groupPos = 0;\n                break;\n        }\n    }\n    if (groupPos == 1)\n        throw Error(\"invalid base64 string\");\n    return bytes.subarray(0, bytePos);\n}\n/**\n * Encode a byte array to a base64 string.\n *\n * By default, this function uses the standard base64 encoding with padding.\n *\n * To encode without padding, use encoding = \"std_raw\".\n *\n * To encode with the URL encoding, use encoding = \"url\", which replaces the\n * characters +/ by their URL-safe counterparts -_, and omits padding.\n */\nfunction base64Encode(bytes, encoding = \"std\") {\n    const table = getEncodeTable(encoding);\n    const pad = encoding == \"std\";\n    let base64 = \"\", groupPos = 0, // position in base64 group\n    b, // current byte\n    p = 0; // carry over from previous byte\n    for (let i = 0; i < bytes.length; i++) {\n        b = bytes[i];\n        switch (groupPos) {\n            case 0:\n                base64 += table[b >> 2];\n                p = (b & 3) << 4;\n                groupPos = 1;\n                break;\n            case 1:\n                base64 += table[p | (b >> 4)];\n                p = (b & 15) << 2;\n                groupPos = 2;\n                break;\n            case 2:\n                base64 += table[p | (b >> 6)];\n                base64 += table[b & 63];\n                groupPos = 0;\n                break;\n        }\n    }\n    // add output padding\n    if (groupPos) {\n        base64 += table[p];\n        if (pad) {\n            base64 += \"=\";\n            if (groupPos == 1)\n                base64 += \"=\";\n        }\n    }\n    return base64;\n}\n// lookup table from base64 character to byte\nlet encodeTableStd;\nlet encodeTableUrl;\n// lookup table from base64 character *code* to byte because lookup by number is fast\nlet decodeTable;\nfunction getEncodeTable(encoding) {\n    if (!encodeTableStd) {\n        encodeTableStd =\n            \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\".split(\"\");\n        encodeTableUrl = encodeTableStd.slice(0, -2).concat(\"-\", \"_\");\n    }\n    return encoding == \"url\"\n        ? // biome-ignore lint/style/noNonNullAssertion: TS fails to narrow down\n            encodeTableUrl\n        : encodeTableStd;\n}\nfunction getDecodeTable() {\n    if (!decodeTable) {\n        decodeTable = [];\n        const encodeTable = getEncodeTable(\"std\");\n        for (let i = 0; i < encodeTable.length; i++)\n            decodeTable[encodeTable[i].charCodeAt(0)] = i;\n        // support base64url variants\n        decodeTable[\"-\".charCodeAt(0)] = encodeTable.indexOf(\"+\");\n        decodeTable[\"_\".charCodeAt(0)] = encodeTable.indexOf(\"/\");\n    }\n    return decodeTable;\n}\n", "\"use strict\";\n// Copyright 2021-2025 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ScalarType = void 0;\n/**\n * Scalar value types. This is a subset of field types declared by protobuf\n * enum google.protobuf.FieldDescriptorProto.Type The types GROUP and MESSAGE\n * are omitted, but the numerical values are identical.\n */\nvar ScalarType;\n(function (ScalarType) {\n    // 0 is reserved for errors.\n    // Order is weird for historical reasons.\n    ScalarType[ScalarType[\"DOUBLE\"] = 1] = \"DOUBLE\";\n    ScalarType[ScalarType[\"FLOAT\"] = 2] = \"FLOAT\";\n    // Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if\n    // negative values are likely.\n    ScalarType[ScalarType[\"INT64\"] = 3] = \"INT64\";\n    ScalarType[ScalarType[\"UINT64\"] = 4] = \"UINT64\";\n    // Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if\n    // negative values are likely.\n    ScalarType[ScalarType[\"INT32\"] = 5] = \"INT32\";\n    ScalarType[ScalarType[\"FIXED64\"] = 6] = \"FIXED64\";\n    ScalarType[ScalarType[\"FIXED32\"] = 7] = \"FIXED32\";\n    ScalarType[ScalarType[\"BOOL\"] = 8] = \"BOOL\";\n    ScalarType[ScalarType[\"STRING\"] = 9] = \"STRING\";\n    // Tag-delimited aggregate.\n    // Group type is deprecated and not supported in proto3. However, Proto3\n    // implementations should still be able to parse the group wire format and\n    // treat group fields as unknown fields.\n    // TYPE_GROUP = 10,\n    // TYPE_MESSAGE = 11,  // Length-delimited aggregate.\n    // New in version 2.\n    ScalarType[ScalarType[\"BYTES\"] = 12] = \"BYTES\";\n    ScalarType[ScalarType[\"UINT32\"] = 13] = \"UINT32\";\n    // TYPE_ENUM = 14,\n    ScalarType[ScalarType[\"SFIXED32\"] = 15] = \"SFIXED32\";\n    ScalarType[ScalarType[\"SFIXED64\"] = 16] = \"SFIXED64\";\n    ScalarType[ScalarType[\"SINT32\"] = 17] = \"SINT32\";\n    ScalarType[ScalarType[\"SINT64\"] = 18] = \"SINT64\";\n})(ScalarType || (exports.ScalarType = ScalarType = {}));\n", "\"use strict\";\n// Copyright 2021-2025 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseTextFormatEnumValue = parseTextFormatEnumValue;\nexports.parseTextFormatScalarValue = parseTextFormatScalarValue;\nconst descriptors_js_1 = require(\"../descriptors.js\");\nconst proto_int64_js_1 = require(\"../proto-int64.js\");\n/**\n * Parse an enum value from the Protobuf text format.\n *\n * @private\n */\nfunction parseTextFormatEnumValue(descEnum, value) {\n    const enumValue = descEnum.values.find((v) => v.name === value);\n    if (!enumValue) {\n        throw new Error(`cannot parse ${descEnum} default value: ${value}`);\n    }\n    return enumValue.number;\n}\n/**\n * Parse a scalar value from the Protobuf text format.\n *\n * @private\n */\nfunction parseTextFormatScalarValue(type, value) {\n    switch (type) {\n        case descriptors_js_1.ScalarType.STRING:\n            return value;\n        case descriptors_js_1.ScalarType.BYTES: {\n            const u = unescapeBytesDefaultValue(value);\n            if (u === false) {\n                throw new Error(`cannot parse ${descriptors_js_1.ScalarType[type]} default value: ${value}`);\n            }\n            return u;\n        }\n        case descriptors_js_1.ScalarType.INT64:\n        case descriptors_js_1.ScalarType.SFIXED64:\n        case descriptors_js_1.ScalarType.SINT64:\n            return proto_int64_js_1.protoInt64.parse(value);\n        case descriptors_js_1.ScalarType.UINT64:\n        case descriptors_js_1.ScalarType.FIXED64:\n            return proto_int64_js_1.protoInt64.uParse(value);\n        case descriptors_js_1.ScalarType.DOUBLE:\n        case descriptors_js_1.ScalarType.FLOAT:\n            switch (value) {\n                case \"inf\":\n                    return Number.POSITIVE_INFINITY;\n                case \"-inf\":\n                    return Number.NEGATIVE_INFINITY;\n                case \"nan\":\n                    return Number.NaN;\n                default:\n                    return parseFloat(value);\n            }\n        case descriptors_js_1.ScalarType.BOOL:\n            return value === \"true\";\n        case descriptors_js_1.ScalarType.INT32:\n        case descriptors_js_1.ScalarType.UINT32:\n        case descriptors_js_1.ScalarType.SINT32:\n        case descriptors_js_1.ScalarType.FIXED32:\n        case descriptors_js_1.ScalarType.SFIXED32:\n            return parseInt(value, 10);\n    }\n}\n/**\n * Parses a text-encoded default value (proto2) of a BYTES field.\n */\nfunction unescapeBytesDefaultValue(str) {\n    const b = [];\n    const input = {\n        tail: str,\n        c: \"\",\n        next() {\n            if (this.tail.length == 0) {\n                return false;\n            }\n            this.c = this.tail[0];\n            this.tail = this.tail.substring(1);\n            return true;\n        },\n        take(n) {\n            if (this.tail.length >= n) {\n                const r = this.tail.substring(0, n);\n                this.tail = this.tail.substring(n);\n                return r;\n            }\n            return false;\n        },\n    };\n    while (input.next()) {\n        switch (input.c) {\n            case \"\\\\\":\n                if (input.next()) {\n                    switch (input.c) {\n                        case \"\\\\\":\n                            b.push(input.c.charCodeAt(0));\n                            break;\n                        case \"b\":\n                            b.push(0x08);\n                            break;\n                        case \"f\":\n                            b.push(0x0c);\n                            break;\n                        case \"n\":\n                            b.push(0x0a);\n                            break;\n                        case \"r\":\n                            b.push(0x0d);\n                            break;\n                        case \"t\":\n                            b.push(0x09);\n                            break;\n                        case \"v\":\n                            b.push(0x0b);\n                            break;\n                        case \"0\":\n                        case \"1\":\n                        case \"2\":\n                        case \"3\":\n                        case \"4\":\n                        case \"5\":\n                        case \"6\":\n                        case \"7\": {\n                            const s = input.c;\n                            const t = input.take(2);\n                            if (t === false) {\n                                return false;\n                            }\n                            const n = parseInt(s + t, 8);\n                            if (Number.isNaN(n)) {\n                                return false;\n                            }\n                            b.push(n);\n                            break;\n                        }\n                        case \"x\": {\n                            const s = input.c;\n                            const t = input.take(2);\n                            if (t === false) {\n                                return false;\n                            }\n                            const n = parseInt(s + t, 16);\n                            if (Number.isNaN(n)) {\n                                return false;\n                            }\n                            b.push(n);\n                            break;\n                        }\n                        case \"u\": {\n                            const s = input.c;\n                            const t = input.take(4);\n                            if (t === false) {\n                                return false;\n                            }\n                            const n = parseInt(s + t, 16);\n                            if (Number.isNaN(n)) {\n                                return false;\n                            }\n                            const chunk = new Uint8Array(4);\n                            const view = new DataView(chunk.buffer);\n                            view.setInt32(0, n, true);\n                            b.push(chunk[0], chunk[1], chunk[2], chunk[3]);\n                            break;\n                        }\n                        case \"U\": {\n                            const s = input.c;\n                            const t = input.take(8);\n                            if (t === false) {\n                                return false;\n                            }\n                            const tc = proto_int64_js_1.protoInt64.uEnc(s + t);\n                            const chunk = new Uint8Array(8);\n                            const view = new DataView(chunk.buffer);\n                            view.setInt32(0, tc.lo, true);\n                            view.setInt32(4, tc.hi, true);\n                            b.push(chunk[0], chunk[1], chunk[2], chunk[3], chunk[4], chunk[5], chunk[6], chunk[7]);\n                            break;\n                        }\n                    }\n                }\n                break;\n            default:\n                b.push(input.c.charCodeAt(0));\n        }\n    }\n    return new Uint8Array(b);\n}\n", "\"use strict\";\n// Copyright 2021-2025 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isMessage = isMessage;\n/**\n * Determine whether the given `arg` is a message.\n * If `desc` is set, determine whether `arg` is this specific message.\n */\nfunction isMessage(arg, schema) {\n    const isMessage = arg !== null &&\n        typeof arg == \"object\" &&\n        \"$typeName\" in arg &&\n        typeof arg.$typeName == \"string\";\n    if (!isMessage) {\n        return false;\n    }\n    if (schema === undefined) {\n        return true;\n    }\n    return schema.typeName === arg.$typeName;\n}\n", "\"use strict\";\n// Copyright 2021-2025 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FieldError = void 0;\nexports.isFieldError = isFieldError;\nconst errorNames = [\n    \"FieldValueInvalidError\",\n    \"FieldListRangeError\",\n    \"ForeignFieldError\",\n];\nclass FieldError extends Error {\n    constructor(fieldOrOneof, message, name = \"FieldValueInvalidError\") {\n        super(message);\n        this.name = name;\n        this.field = () => fieldOrOneof;\n    }\n}\nexports.FieldError = FieldError;\nfunction isFieldError(arg) {\n    return (arg instanceof Error &&\n        errorNames.includes(arg.name) &&\n        \"field\" in arg &&\n        typeof arg.field == \"function\");\n}\n", "\"use strict\";\n// Copyright 2021-2025 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.scalarEquals = scalarEquals;\nexports.scalarZeroValue = scalarZeroValue;\nexports.isScalarZeroValue = isScalarZeroValue;\nconst proto_int64_js_1 = require(\"../proto-int64.js\");\nconst descriptors_js_1 = require(\"../descriptors.js\");\n/**\n * Returns true if both scalar values are equal.\n */\nfunction scalarEquals(type, a, b) {\n    if (a === b) {\n        // This correctly matches equal values except BYTES and (possibly) 64-bit integers.\n        return true;\n    }\n    // Special case BYTES - we need to compare each byte individually\n    if (type == descriptors_js_1.ScalarType.BYTES) {\n        if (!(a instanceof Uint8Array) || !(b instanceof Uint8Array)) {\n            return false;\n        }\n        if (a.length !== b.length) {\n            return false;\n        }\n        for (let i = 0; i < a.length; i++) {\n            if (a[i] !== b[i]) {\n                return false;\n            }\n        }\n        return true;\n    }\n    // Special case 64-bit integers - we support number, string and bigint representation.\n    switch (type) {\n        case descriptors_js_1.ScalarType.UINT64:\n        case descriptors_js_1.ScalarType.FIXED64:\n        case descriptors_js_1.ScalarType.INT64:\n        case descriptors_js_1.ScalarType.SFIXED64:\n        case descriptors_js_1.ScalarType.SINT64:\n            // Loose comparison will match between 0n, 0 and \"0\".\n            return a == b;\n    }\n    // Anything that hasn't been caught by strict comparison or special cased\n    // BYTES and 64-bit integers is not equal.\n    return false;\n}\n/**\n * Returns the zero value for the given scalar type.\n */\nfunction scalarZeroValue(type, longAsString) {\n    switch (type) {\n        case descriptors_js_1.ScalarType.STRING:\n            return \"\";\n        case descriptors_js_1.ScalarType.BOOL:\n            return false;\n        case descriptors_js_1.ScalarType.DOUBLE:\n        case descriptors_js_1.ScalarType.FLOAT:\n            return 0.0;\n        case descriptors_js_1.ScalarType.INT64:\n        case descriptors_js_1.ScalarType.UINT64:\n        case descriptors_js_1.ScalarType.SFIXED64:\n        case descriptors_js_1.ScalarType.FIXED64:\n        case descriptors_js_1.ScalarType.SINT64:\n            return (longAsString ? \"0\" : proto_int64_js_1.protoInt64.zero);\n        case descriptors_js_1.ScalarType.BYTES:\n            return new Uint8Array(0);\n        default:\n            // Handles INT32, UINT32, SINT32, FIXED32, SFIXED32.\n            // We do not use individual cases to save a few bytes code size.\n            return 0;\n    }\n}\n/**\n * Returns true for a zero-value. For example, an integer has the zero-value `0`,\n * a boolean is `false`, a string is `\"\"`, and bytes is an empty Uint8Array.\n *\n * In proto3, zero-values are not written to the wire, unless the field is\n * optional or repeated.\n */\nfunction isScalarZeroValue(type, value) {\n    switch (type) {\n        case descriptors_js_1.ScalarType.BOOL:\n            return value === false;\n        case descriptors_js_1.ScalarType.STRING:\n            return value === \"\";\n        case descriptors_js_1.ScalarType.BYTES:\n            return value instanceof Uint8Array && !value.byteLength;\n        default:\n            return value == 0; // Loose comparison matches 0n, 0 and \"0\"\n    }\n}\n", "\"use strict\";\n// Copyright 2021-2025 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unsafeLocal = void 0;\nexports.unsafeOneofCase = unsafeOneofCase;\nexports.unsafeIsSet = unsafeIsSet;\nexports.unsafeIsSetExplicit = unsafeIsSetExplicit;\nexports.unsafeGet = unsafeGet;\nexports.unsafeSet = unsafeSet;\nexports.unsafeClear = unsafeClear;\nconst scalar_js_1 = require(\"./scalar.js\");\n// bootstrap-inject google.protobuf.FeatureSet.FieldPresence.IMPLICIT: const $name: FeatureSet_FieldPresence.$localName = $number;\nconst IMPLICIT = 2;\nexports.unsafeLocal = Symbol.for(\"reflect unsafe local\");\n/**\n * Return the selected field of a oneof group.\n *\n * @private\n */\nfunction unsafeOneofCase(\n// biome-ignore lint/suspicious/noExplicitAny: `any` is the best choice for dynamic access\ntarget, oneof) {\n    const c = target[oneof.localName].case;\n    if (c === undefined) {\n        return c;\n    }\n    return oneof.fields.find((f) => f.localName === c);\n}\n/**\n * Returns true if the field is set.\n *\n * @private\n */\nfunction unsafeIsSet(\n// biome-ignore lint/suspicious/noExplicitAny: `any` is the best choice for dynamic access\ntarget, field) {\n    const name = field.localName;\n    if (field.oneof) {\n        return target[field.oneof.localName].case === name;\n    }\n    if (field.presence != IMPLICIT) {\n        // Fields with explicit presence have properties on the prototype chain\n        // for default / zero values (except for proto3).\n        return (target[name] !== undefined &&\n            Object.prototype.hasOwnProperty.call(target, name));\n    }\n    switch (field.fieldKind) {\n        case \"list\":\n            return target[name].length > 0;\n        case \"map\":\n            return Object.keys(target[name]).length > 0;\n        case \"scalar\":\n            return !(0, scalar_js_1.isScalarZeroValue)(field.scalar, target[name]);\n        case \"enum\":\n            return target[name] !== field.enum.values[0].number;\n    }\n    throw new Error(\"message field with implicit presence\");\n}\n/**\n * Returns true if the field is set, but only for singular fields with explicit\n * presence (proto2).\n *\n * @private\n */\nfunction unsafeIsSetExplicit(target, localName) {\n    return (Object.prototype.hasOwnProperty.call(target, localName) &&\n        target[localName] !== undefined);\n}\n/**\n * Return a field value, respecting oneof groups.\n *\n * @private\n */\nfunction unsafeGet(target, field) {\n    if (field.oneof) {\n        const oneof = target[field.oneof.localName];\n        if (oneof.case === field.localName) {\n            return oneof.value;\n        }\n        return undefined;\n    }\n    return target[field.localName];\n}\n/**\n * Set a field value, respecting oneof groups.\n *\n * @private\n */\nfunction unsafeSet(target, field, value) {\n    if (field.oneof) {\n        target[field.oneof.localName] = {\n            case: field.localName,\n            value: value,\n        };\n    }\n    else {\n        target[field.localName] = value;\n    }\n}\n/**\n * Resets the field, so that unsafeIsSet() will return false.\n *\n * @private\n */\nfunction unsafeClear(\n// biome-ignore lint/suspicious/noExplicitAny: `any` is the best choice for dynamic access\ntarget, field) {\n    const name = field.localName;\n    if (field.oneof) {\n        const oneofLocalName = field.oneof.localName;\n        if (target[oneofLocalName].case === name) {\n            target[oneofLocalName] = { case: undefined };\n        }\n    }\n    else if (field.presence != IMPLICIT) {\n        // Fields with explicit presence have properties on the prototype chain\n        // for default / zero values (except for proto3). By deleting their own\n        // property, the field is reset.\n        delete target[name];\n    }\n    else {\n        switch (field.fieldKind) {\n            case \"map\":\n                target[name] = {};\n                break;\n            case \"list\":\n                target[name] = [];\n                break;\n            case \"enum\":\n                target[name] = field.enum.values[0].number;\n                break;\n            case \"scalar\":\n                target[name] = (0, scalar_js_1.scalarZeroValue)(field.scalar, field.longAsString);\n                break;\n        }\n    }\n}\n", "\"use strict\";\n// Copyright 2021-2025 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isObject = isObject;\nexports.isOneofADT = isOneofADT;\nexports.isReflectList = isReflectList;\nexports.isReflectMap = isReflectMap;\nexports.isReflectMessage = isReflectMessage;\nconst unsafe_js_1 = require(\"./unsafe.js\");\nfunction isObject(arg) {\n    return arg !== null && typeof arg == \"object\" && !Array.isArray(arg);\n}\nfunction isOneofADT(arg) {\n    return (arg !== null &&\n        typeof arg == \"object\" &&\n        \"case\" in arg &&\n        ((typeof arg.case == \"string\" && \"value\" in arg && arg.value != null) ||\n            (arg.case === undefined &&\n                (!(\"value\" in arg) || arg.value === undefined))));\n}\nfunction isReflectList(arg, field) {\n    var _a, _b, _c, _d;\n    if (isObject(arg) &&\n        unsafe_js_1.unsafeLocal in arg &&\n        \"add\" in arg &&\n        \"field\" in arg &&\n        typeof arg.field == \"function\") {\n        if (field !== undefined) {\n            const a = field;\n            const b = arg.field();\n            return (a.listKind == b.listKind &&\n                a.scalar === b.scalar &&\n                ((_a = a.message) === null || _a === void 0 ? void 0 : _a.typeName) === ((_b = b.message) === null || _b === void 0 ? void 0 : _b.typeName) &&\n                ((_c = a.enum) === null || _c === void 0 ? void 0 : _c.typeName) === ((_d = b.enum) === null || _d === void 0 ? void 0 : _d.typeName));\n        }\n        return true;\n    }\n    return false;\n}\nfunction isReflectMap(arg, field) {\n    var _a, _b, _c, _d;\n    if (isObject(arg) &&\n        unsafe_js_1.unsafeLocal in arg &&\n        \"has\" in arg &&\n        \"field\" in arg &&\n        typeof arg.field == \"function\") {\n        if (field !== undefined) {\n            const a = field, b = arg.field();\n            return (a.mapKey === b.mapKey &&\n                a.mapKind == b.mapKind &&\n                a.scalar === b.scalar &&\n                ((_a = a.message) === null || _a === void 0 ? void 0 : _a.typeName) === ((_b = b.message) === null || _b === void 0 ? void 0 : _b.typeName) &&\n                ((_c = a.enum) === null || _c === void 0 ? void 0 : _c.typeName) === ((_d = b.enum) === null || _d === void 0 ? void 0 : _d.typeName));\n        }\n        return true;\n    }\n    return false;\n}\nfunction isReflectMessage(arg, messageDesc) {\n    return (isObject(arg) &&\n        unsafe_js_1.unsafeLocal in arg &&\n        \"desc\" in arg &&\n        isObject(arg.desc) &&\n        arg.desc.kind === \"message\" &&\n        (messageDesc === undefined || arg.desc.typeName == messageDesc.typeName));\n}\n", "\"use strict\";\n// Copyright 2021-2025 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.checkField = checkField;\nexports.checkListItem = checkListItem;\nexports.checkMapEntry = checkMapEntry;\nexports.formatVal = formatVal;\nconst descriptors_js_1 = require(\"../descriptors.js\");\nconst is_message_js_1 = require(\"../is-message.js\");\nconst error_js_1 = require(\"./error.js\");\nconst guard_js_1 = require(\"./guard.js\");\nconst binary_encoding_js_1 = require(\"../wire/binary-encoding.js\");\nconst text_encoding_js_1 = require(\"../wire/text-encoding.js\");\nconst proto_int64_js_1 = require(\"../proto-int64.js\");\n/**\n * Check whether the given field value is valid for the reflect API.\n */\nfunction checkField(field, value) {\n    const check = field.fieldKind == \"list\"\n        ? (0, guard_js_1.isReflectList)(value, field)\n        : field.fieldKind == \"map\"\n            ? (0, guard_js_1.isReflectMap)(value, field)\n            : checkSingular(field, value);\n    if (check === true) {\n        return undefined;\n    }\n    let reason;\n    switch (field.fieldKind) {\n        case \"list\":\n            reason = `expected ${formatReflectList(field)}, got ${formatVal(value)}`;\n            break;\n        case \"map\":\n            reason = `expected ${formatReflectMap(field)}, got ${formatVal(value)}`;\n            break;\n        default: {\n            reason = reasonSingular(field, value, check);\n        }\n    }\n    return new error_js_1.FieldError(field, reason);\n}\n/**\n * Check whether the given list item is valid for the reflect API.\n */\nfunction checkListItem(field, index, value) {\n    const check = checkSingular(field, value);\n    if (check !== true) {\n        return new error_js_1.FieldError(field, `list item #${index + 1}: ${reasonSingular(field, value, check)}`);\n    }\n    return undefined;\n}\n/**\n * Check whether the given map key and value are valid for the reflect API.\n */\nfunction checkMapEntry(field, key, value) {\n    const checkKey = checkScalarValue(key, field.mapKey);\n    if (checkKey !== true) {\n        return new error_js_1.FieldError(field, `invalid map key: ${reasonSingular({ scalar: field.mapKey }, key, checkKey)}`);\n    }\n    const checkVal = checkSingular(field, value);\n    if (checkVal !== true) {\n        return new error_js_1.FieldError(field, `map entry ${formatVal(key)}: ${reasonSingular(field, value, checkVal)}`);\n    }\n    return undefined;\n}\nfunction checkSingular(field, value) {\n    if (field.scalar !== undefined) {\n        return checkScalarValue(value, field.scalar);\n    }\n    if (field.enum !== undefined) {\n        if (field.enum.open) {\n            return Number.isInteger(value);\n        }\n        return field.enum.values.some((v) => v.number === value);\n    }\n    return (0, guard_js_1.isReflectMessage)(value, field.message);\n}\nfunction checkScalarValue(value, scalar) {\n    switch (scalar) {\n        case descriptors_js_1.ScalarType.DOUBLE:\n            return typeof value == \"number\";\n        case descriptors_js_1.ScalarType.FLOAT:\n            if (typeof value != \"number\") {\n                return false;\n            }\n            if (Number.isNaN(value) || !Number.isFinite(value)) {\n                return true;\n            }\n            if (value > binary_encoding_js_1.FLOAT32_MAX || value < binary_encoding_js_1.FLOAT32_MIN) {\n                return `${value.toFixed()} out of range`;\n            }\n            return true;\n        case descriptors_js_1.ScalarType.INT32:\n        case descriptors_js_1.ScalarType.SFIXED32:\n        case descriptors_js_1.ScalarType.SINT32:\n            // signed\n            if (typeof value !== \"number\" || !Number.isInteger(value)) {\n                return false;\n            }\n            if (value > binary_encoding_js_1.INT32_MAX || value < binary_encoding_js_1.INT32_MIN) {\n                return `${value.toFixed()} out of range`;\n            }\n            return true;\n        case descriptors_js_1.ScalarType.FIXED32:\n        case descriptors_js_1.ScalarType.UINT32:\n            // unsigned\n            if (typeof value !== \"number\" || !Number.isInteger(value)) {\n                return false;\n            }\n            if (value > binary_encoding_js_1.UINT32_MAX || value < 0) {\n                return `${value.toFixed()} out of range`;\n            }\n            return true;\n        case descriptors_js_1.ScalarType.BOOL:\n            return typeof value == \"boolean\";\n        case descriptors_js_1.ScalarType.STRING:\n            if (typeof value != \"string\") {\n                return false;\n            }\n            return (0, text_encoding_js_1.getTextEncoding)().checkUtf8(value) || \"invalid UTF8\";\n        case descriptors_js_1.ScalarType.BYTES:\n            return value instanceof Uint8Array;\n        case descriptors_js_1.ScalarType.INT64:\n        case descriptors_js_1.ScalarType.SFIXED64:\n        case descriptors_js_1.ScalarType.SINT64:\n            // signed\n            if (typeof value == \"bigint\" ||\n                typeof value == \"number\" ||\n                (typeof value == \"string\" && value.length > 0)) {\n                try {\n                    proto_int64_js_1.protoInt64.parse(value);\n                    return true;\n                }\n                catch (_) {\n                    return `${value} out of range`;\n                }\n            }\n            return false;\n        case descriptors_js_1.ScalarType.FIXED64:\n        case descriptors_js_1.ScalarType.UINT64:\n            // unsigned\n            if (typeof value == \"bigint\" ||\n                typeof value == \"number\" ||\n                (typeof value == \"string\" && value.length > 0)) {\n                try {\n                    proto_int64_js_1.protoInt64.uParse(value);\n                    return true;\n                }\n                catch (_) {\n                    return `${value} out of range`;\n                }\n            }\n            return false;\n    }\n}\nfunction reasonSingular(field, val, details) {\n    details =\n        typeof details == \"string\" ? `: ${details}` : `, got ${formatVal(val)}`;\n    if (field.scalar !== undefined) {\n        return `expected ${scalarTypeDescription(field.scalar)}` + details;\n    }\n    if (field.enum !== undefined) {\n        return `expected ${field.enum.toString()}` + details;\n    }\n    return `expected ${formatReflectMessage(field.message)}` + details;\n}\nfunction formatVal(val) {\n    switch (typeof val) {\n        case \"object\":\n            if (val === null) {\n                return \"null\";\n            }\n            if (val instanceof Uint8Array) {\n                return `Uint8Array(${val.length})`;\n            }\n            if (Array.isArray(val)) {\n                return `Array(${val.length})`;\n            }\n            if ((0, guard_js_1.isReflectList)(val)) {\n                return formatReflectList(val.field());\n            }\n            if ((0, guard_js_1.isReflectMap)(val)) {\n                return formatReflectMap(val.field());\n            }\n            if ((0, guard_js_1.isReflectMessage)(val)) {\n                return formatReflectMessage(val.desc);\n            }\n            if ((0, is_message_js_1.isMessage)(val)) {\n                return `message ${val.$typeName}`;\n            }\n            return \"object\";\n        case \"string\":\n            return val.length > 30 ? \"string\" : `\"${val.split('\"').join('\\\\\"')}\"`;\n        case \"boolean\":\n            return String(val);\n        case \"number\":\n            return String(val);\n        case \"bigint\":\n            return String(val) + \"n\";\n        default:\n            // \"symbol\" | \"undefined\" | \"object\" | \"function\"\n            return typeof val;\n    }\n}\nfunction formatReflectMessage(desc) {\n    return `ReflectMessage (${desc.typeName})`;\n}\nfunction formatReflectList(field) {\n    switch (field.listKind) {\n        case \"message\":\n            return `ReflectList (${field.message.toString()})`;\n        case \"enum\":\n            return `ReflectList (${field.enum.toString()})`;\n        case \"scalar\":\n            return `ReflectList (${descriptors_js_1.ScalarType[field.scalar]})`;\n    }\n}\nfunction formatReflectMap(field) {\n    switch (field.mapKind) {\n        case \"message\":\n            return `ReflectMap (${descriptors_js_1.ScalarType[field.mapKey]}, ${field.message.toString()})`;\n        case \"enum\":\n            return `ReflectMap (${descriptors_js_1.ScalarType[field.mapKey]}, ${field.enum.toString()})`;\n        case \"scalar\":\n            return `ReflectMap (${descriptors_js_1.ScalarType[field.mapKey]}, ${descriptors_js_1.ScalarType[field.scalar]})`;\n    }\n}\nfunction scalarTypeDescription(scalar) {\n    switch (scalar) {\n        case descriptors_js_1.ScalarType.STRING:\n            return \"string\";\n        case descriptors_js_1.ScalarType.BOOL:\n            return \"boolean\";\n        case descriptors_js_1.ScalarType.INT64:\n        case descriptors_js_1.ScalarType.SINT64:\n        case descriptors_js_1.ScalarType.SFIXED64:\n            return \"bigint (int64)\";\n        case descriptors_js_1.ScalarType.UINT64:\n        case descriptors_js_1.ScalarType.FIXED64:\n            return \"bigint (uint64)\";\n        case descriptors_js_1.ScalarType.BYTES:\n            return \"Uint8Array\";\n        case descriptors_js_1.ScalarType.DOUBLE:\n            return \"number (float64)\";\n        case descriptors_js_1.ScalarType.FLOAT:\n            return \"number (float32)\";\n        case descriptors_js_1.ScalarType.FIXED32:\n        case descriptors_js_1.ScalarType.UINT32:\n            return \"number (uint32)\";\n        case descriptors_js_1.ScalarType.INT32:\n        case descriptors_js_1.ScalarType.SFIXED32:\n        case descriptors_js_1.ScalarType.SINT32:\n            return \"number (int32)\";\n    }\n}\n", "\"use strict\";\n// Copyright 2021-2025 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isWrapper = isWrapper;\nexports.isWrapperDesc = isWrapperDesc;\nfunction isWrapper(arg) {\n    return isWrapperTypeName(arg.$typeName);\n}\nfunction isWrapperDesc(messageDesc) {\n    const f = messageDesc.fields[0];\n    return (isWrapperTypeName(messageDesc.typeName) &&\n        f !== undefined &&\n        f.fieldKind == \"scalar\" &&\n        f.name == \"value\" &&\n        f.number == 1);\n}\nfunction isWrapperTypeName(name) {\n    return (name.startsWith(\"google.protobuf.\") &&\n        [\n            \"DoubleValue\",\n            \"FloatValue\",\n            \"Int64Value\",\n            \"UInt64Value\",\n            \"Int32Value\",\n            \"UInt32Value\",\n            \"BoolValue\",\n            \"StringValue\",\n            \"BytesValue\",\n        ].includes(name.substring(16)));\n}\n", "\"use strict\";\n// Copyright 2021-2025 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.create = create;\nconst is_message_js_1 = require(\"./is-message.js\");\nconst descriptors_js_1 = require(\"./descriptors.js\");\nconst scalar_js_1 = require(\"./reflect/scalar.js\");\nconst guard_js_1 = require(\"./reflect/guard.js\");\nconst unsafe_js_1 = require(\"./reflect/unsafe.js\");\nconst wrappers_js_1 = require(\"./wkt/wrappers.js\");\n// bootstrap-inject google.protobuf.Edition.EDITION_PROTO3: const $name: Edition.$localName = $number;\nconst EDITION_PROTO3 = 999;\n// bootstrap-inject google.protobuf.Edition.EDITION_PROTO2: const $name: Edition.$localName = $number;\nconst EDITION_PROTO2 = 998;\n// bootstrap-inject google.protobuf.FeatureSet.FieldPresence.IMPLICIT: const $name: FeatureSet_FieldPresence.$localName = $number;\nconst IMPLICIT = 2;\n/**\n * Create a new message instance.\n *\n * The second argument is an optional initializer object, where all fields are\n * optional.\n */\nfunction create(schema, init) {\n    if ((0, is_message_js_1.isMessage)(init, schema)) {\n        return init;\n    }\n    const message = createZeroMessage(schema);\n    if (init !== undefined) {\n        initMessage(schema, message, init);\n    }\n    return message;\n}\n/**\n * Sets field values from a MessageInitShape on a zero message.\n */\nfunction initMessage(messageDesc, message, init) {\n    for (const member of messageDesc.members) {\n        let value = init[member.localName];\n        if (value == null) {\n            // intentionally ignore undefined and null\n            continue;\n        }\n        let field;\n        if (member.kind == \"oneof\") {\n            const oneofField = (0, unsafe_js_1.unsafeOneofCase)(init, member);\n            if (!oneofField) {\n                continue;\n            }\n            field = oneofField;\n            value = (0, unsafe_js_1.unsafeGet)(init, oneofField);\n        }\n        else {\n            field = member;\n        }\n        switch (field.fieldKind) {\n            case \"message\":\n                value = toMessage(field, value);\n                break;\n            case \"scalar\":\n                value = initScalar(field, value);\n                break;\n            case \"list\":\n                value = initList(field, value);\n                break;\n            case \"map\":\n                value = initMap(field, value);\n                break;\n        }\n        (0, unsafe_js_1.unsafeSet)(message, field, value);\n    }\n    return message;\n}\nfunction initScalar(field, value) {\n    if (field.scalar == descriptors_js_1.ScalarType.BYTES) {\n        return toU8Arr(value);\n    }\n    return value;\n}\nfunction initMap(field, value) {\n    if ((0, guard_js_1.isObject)(value)) {\n        if (field.scalar == descriptors_js_1.ScalarType.BYTES) {\n            return convertObjectValues(value, toU8Arr);\n        }\n        if (field.mapKind == \"message\") {\n            return convertObjectValues(value, (val) => toMessage(field, val));\n        }\n    }\n    return value;\n}\nfunction initList(field, value) {\n    if (Array.isArray(value)) {\n        if (field.scalar == descriptors_js_1.ScalarType.BYTES) {\n            return value.map(toU8Arr);\n        }\n        if (field.listKind == \"message\") {\n            return value.map((item) => toMessage(field, item));\n        }\n    }\n    return value;\n}\nfunction toMessage(field, value) {\n    if (field.fieldKind == \"message\" &&\n        !field.oneof &&\n        (0, wrappers_js_1.isWrapperDesc)(field.message)) {\n        // Types from google/protobuf/wrappers.proto are unwrapped when used in\n        // a singular field that is not part of a oneof group.\n        return initScalar(field.message.fields[0], value);\n    }\n    if ((0, guard_js_1.isObject)(value)) {\n        if (field.message.typeName == \"google.protobuf.Struct\" &&\n            field.parent.typeName !== \"google.protobuf.Value\") {\n            // google.protobuf.Struct is represented with JsonObject when used in a\n            // field, except when used in google.protobuf.Value.\n            return value;\n        }\n        if (!(0, is_message_js_1.isMessage)(value, field.message)) {\n            return create(field.message, value);\n        }\n    }\n    return value;\n}\n// converts any ArrayLike<number> to Uint8Array if necessary.\nfunction toU8Arr(value) {\n    return Array.isArray(value) ? new Uint8Array(value) : value;\n}\nfunction convertObjectValues(obj, fn) {\n    const ret = {};\n    for (const entry of Object.entries(obj)) {\n        ret[entry[0]] = fn(entry[1]);\n    }\n    return ret;\n}\nconst tokenZeroMessageField = Symbol();\nconst messagePrototypes = new WeakMap();\n/**\n * Create a zero message.\n */\nfunction createZeroMessage(desc) {\n    let msg;\n    if (!needsPrototypeChain(desc)) {\n        msg = {\n            $typeName: desc.typeName,\n        };\n        for (const member of desc.members) {\n            if (member.kind == \"oneof\" || member.presence == IMPLICIT) {\n                msg[member.localName] = createZeroField(member);\n            }\n        }\n    }\n    else {\n        // Support default values and track presence via the prototype chain\n        const cached = messagePrototypes.get(desc);\n        let prototype;\n        let members;\n        if (cached) {\n            ({ prototype, members } = cached);\n        }\n        else {\n            prototype = {};\n            members = new Set();\n            for (const member of desc.members) {\n                if (member.kind == \"oneof\") {\n                    // we can only put immutable values on the prototype,\n                    // oneof ADTs are mutable\n                    continue;\n                }\n                if (member.fieldKind != \"scalar\" && member.fieldKind != \"enum\") {\n                    // only scalar and enum values are immutable, map, list, and message\n                    // are not\n                    continue;\n                }\n                if (member.presence == IMPLICIT) {\n                    // implicit presence tracks field presence by zero values - e.g. 0, false, \"\", are unset, 1, true, \"x\" are set.\n                    // message, map, list fields are mutable, and also have IMPLICIT presence.\n                    continue;\n                }\n                members.add(member);\n                prototype[member.localName] = createZeroField(member);\n            }\n            messagePrototypes.set(desc, { prototype, members });\n        }\n        msg = Object.create(prototype);\n        msg.$typeName = desc.typeName;\n        for (const member of desc.members) {\n            if (members.has(member)) {\n                continue;\n            }\n            if (member.kind == \"field\") {\n                if (member.fieldKind == \"message\") {\n                    continue;\n                }\n                if (member.fieldKind == \"scalar\" || member.fieldKind == \"enum\") {\n                    if (member.presence != IMPLICIT) {\n                        continue;\n                    }\n                }\n            }\n            msg[member.localName] = createZeroField(member);\n        }\n    }\n    return msg;\n}\n/**\n * Do we need the prototype chain to track field presence?\n */\nfunction needsPrototypeChain(desc) {\n    switch (desc.file.edition) {\n        case EDITION_PROTO3:\n            // proto3 always uses implicit presence, we never need the prototype chain.\n            return false;\n        case EDITION_PROTO2:\n            // proto2 never uses implicit presence, we always need the prototype chain.\n            return true;\n        default:\n            // If a message uses scalar or enum fields with explicit presence, we need\n            // the prototype chain to track presence. This rule does not apply to fields\n            // in a oneof group - they use a different mechanism to track presence.\n            return desc.fields.some((f) => f.presence != IMPLICIT && f.fieldKind != \"message\" && !f.oneof);\n    }\n}\n/**\n * Returns a zero value for oneof groups, and for every field kind except\n * messages. Scalar and enum fields can have default values.\n */\nfunction createZeroField(field) {\n    if (field.kind == \"oneof\") {\n        return { case: undefined };\n    }\n    if (field.fieldKind == \"list\") {\n        return [];\n    }\n    if (field.fieldKind == \"map\") {\n        return {}; // Object.create(null) would be desirable here, but is unsupported by react https://react.dev/reference/react/use-server#serializable-parameters-and-return-values\n    }\n    if (field.fieldKind == \"message\") {\n        return tokenZeroMessageField;\n    }\n    const defaultValue = field.getDefaultValue();\n    if (defaultValue !== undefined) {\n        return field.fieldKind == \"scalar\" && field.longAsString\n            ? defaultValue.toString()\n            : defaultValue;\n    }\n    return field.fieldKind == \"scalar\"\n        ? (0, scalar_js_1.scalarZeroValue)(field.scalar, field.longAsString)\n        : field.enum.values[0].number;\n}\n", "\"use strict\";\n// Copyright 2021-2025 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.reflect = reflect;\nexports.reflectList = reflectList;\nexports.reflectMap = reflectMap;\nconst descriptors_js_1 = require(\"../descriptors.js\");\nconst reflect_check_js_1 = require(\"./reflect-check.js\");\nconst error_js_1 = require(\"./error.js\");\nconst unsafe_js_1 = require(\"./unsafe.js\");\nconst create_js_1 = require(\"../create.js\");\nconst wrappers_js_1 = require(\"../wkt/wrappers.js\");\nconst scalar_js_1 = require(\"./scalar.js\");\nconst proto_int64_js_1 = require(\"../proto-int64.js\");\nconst guard_js_1 = require(\"./guard.js\");\n/**\n * Create a ReflectMessage.\n */\nfunction reflect(messageDesc, message, \n/**\n * By default, field values are validated when setting them. For example,\n * a value for an uint32 field must be a ECMAScript Number >= 0.\n *\n * When field values are trusted, performance can be improved by disabling\n * checks.\n */\ncheck = true) {\n    return new ReflectMessageImpl(messageDesc, message, check);\n}\nconst messageSortedFields = new WeakMap();\nclass ReflectMessageImpl {\n    get sortedFields() {\n        const cached = messageSortedFields.get(this.desc);\n        if (cached) {\n            return cached;\n        }\n        const sortedFields = this.desc.fields\n            .concat()\n            .sort((a, b) => a.number - b.number);\n        messageSortedFields.set(this.desc, sortedFields);\n        return sortedFields;\n    }\n    constructor(messageDesc, message, check = true) {\n        this.lists = new Map();\n        this.maps = new Map();\n        this.check = check;\n        this.desc = messageDesc;\n        this.message = this[unsafe_js_1.unsafeLocal] = message !== null && message !== void 0 ? message : (0, create_js_1.create)(messageDesc);\n        this.fields = messageDesc.fields;\n        this.oneofs = messageDesc.oneofs;\n        this.members = messageDesc.members;\n    }\n    findNumber(number) {\n        if (!this._fieldsByNumber) {\n            this._fieldsByNumber = new Map(this.desc.fields.map((f) => [f.number, f]));\n        }\n        return this._fieldsByNumber.get(number);\n    }\n    oneofCase(oneof) {\n        assertOwn(this.message, oneof);\n        return (0, unsafe_js_1.unsafeOneofCase)(this.message, oneof);\n    }\n    isSet(field) {\n        assertOwn(this.message, field);\n        return (0, unsafe_js_1.unsafeIsSet)(this.message, field);\n    }\n    clear(field) {\n        assertOwn(this.message, field);\n        (0, unsafe_js_1.unsafeClear)(this.message, field);\n    }\n    get(field) {\n        assertOwn(this.message, field);\n        const value = (0, unsafe_js_1.unsafeGet)(this.message, field);\n        switch (field.fieldKind) {\n            case \"list\":\n                // eslint-disable-next-line no-case-declarations\n                let list = this.lists.get(field);\n                if (!list || list[unsafe_js_1.unsafeLocal] !== value) {\n                    this.lists.set(field, \n                    // biome-ignore lint/suspicious/noAssignInExpressions: no\n                    (list = new ReflectListImpl(field, value, this.check)));\n                }\n                return list;\n            case \"map\":\n                let map = this.maps.get(field);\n                if (!map || map[unsafe_js_1.unsafeLocal] !== value) {\n                    this.maps.set(field, \n                    // biome-ignore lint/suspicious/noAssignInExpressions: no\n                    (map = new ReflectMapImpl(field, value, this.check)));\n                }\n                return map;\n            case \"message\":\n                return messageToReflect(field, value, this.check);\n            case \"scalar\":\n                return (value === undefined\n                    ? (0, scalar_js_1.scalarZeroValue)(field.scalar, false)\n                    : longToReflect(field, value));\n            case \"enum\":\n                return (value !== null && value !== void 0 ? value : field.enum.values[0].number);\n        }\n    }\n    set(field, value) {\n        assertOwn(this.message, field);\n        if (this.check) {\n            const err = (0, reflect_check_js_1.checkField)(field, value);\n            if (err) {\n                throw err;\n            }\n        }\n        let local;\n        if (field.fieldKind == \"message\") {\n            local = messageToLocal(field, value);\n        }\n        else if ((0, guard_js_1.isReflectMap)(value) || (0, guard_js_1.isReflectList)(value)) {\n            local = value[unsafe_js_1.unsafeLocal];\n        }\n        else {\n            local = longToLocal(field, value);\n        }\n        (0, unsafe_js_1.unsafeSet)(this.message, field, local);\n    }\n    getUnknown() {\n        return this.message.$unknown;\n    }\n    setUnknown(value) {\n        this.message.$unknown = value;\n    }\n}\nfunction assertOwn(owner, member) {\n    if (member.parent.typeName !== owner.$typeName) {\n        throw new error_js_1.FieldError(member, `cannot use ${member.toString()} with message ${owner.$typeName}`, \"ForeignFieldError\");\n    }\n}\n/**\n * Create a ReflectList.\n */\nfunction reflectList(field, unsafeInput, \n/**\n * By default, field values are validated when setting them. For example,\n * a value for an uint32 field must be a ECMAScript Number >= 0.\n *\n * When field values are trusted, performance can be improved by disabling\n * checks.\n */\ncheck = true) {\n    return new ReflectListImpl(field, unsafeInput !== null && unsafeInput !== void 0 ? unsafeInput : [], check);\n}\nclass ReflectListImpl {\n    field() {\n        return this._field;\n    }\n    get size() {\n        return this._arr.length;\n    }\n    constructor(field, unsafeInput, check) {\n        this._field = field;\n        this._arr = this[unsafe_js_1.unsafeLocal] = unsafeInput;\n        this.check = check;\n    }\n    get(index) {\n        const item = this._arr[index];\n        return item === undefined\n            ? undefined\n            : listItemToReflect(this._field, item, this.check);\n    }\n    set(index, item) {\n        if (index < 0 || index >= this._arr.length) {\n            throw new error_js_1.FieldError(this._field, `list item #${index + 1}: out of range`);\n        }\n        if (this.check) {\n            const err = (0, reflect_check_js_1.checkListItem)(this._field, index, item);\n            if (err) {\n                throw err;\n            }\n        }\n        this._arr[index] = listItemToLocal(this._field, item);\n    }\n    add(item) {\n        if (this.check) {\n            const err = (0, reflect_check_js_1.checkListItem)(this._field, this._arr.length, item);\n            if (err) {\n                throw err;\n            }\n        }\n        this._arr.push(listItemToLocal(this._field, item));\n        return undefined;\n    }\n    clear() {\n        this._arr.splice(0, this._arr.length);\n    }\n    [Symbol.iterator]() {\n        return this.values();\n    }\n    keys() {\n        return this._arr.keys();\n    }\n    *values() {\n        for (const item of this._arr) {\n            yield listItemToReflect(this._field, item, this.check);\n        }\n    }\n    *entries() {\n        for (let i = 0; i < this._arr.length; i++) {\n            yield [i, listItemToReflect(this._field, this._arr[i], this.check)];\n        }\n    }\n}\n/**\n * Create a ReflectMap.\n */\nfunction reflectMap(field, unsafeInput, \n/**\n * By default, field values are validated when setting them. For example,\n * a value for an uint32 field must be a ECMAScript Number >= 0.\n *\n * When field values are trusted, performance can be improved by disabling\n * checks.\n */\ncheck = true) {\n    return new ReflectMapImpl(field, unsafeInput, check);\n}\nclass ReflectMapImpl {\n    constructor(field, unsafeInput, check = true) {\n        this.obj = this[unsafe_js_1.unsafeLocal] = unsafeInput !== null && unsafeInput !== void 0 ? unsafeInput : {};\n        this.check = check;\n        this._field = field;\n    }\n    field() {\n        return this._field;\n    }\n    set(key, value) {\n        if (this.check) {\n            const err = (0, reflect_check_js_1.checkMapEntry)(this._field, key, value);\n            if (err) {\n                throw err;\n            }\n        }\n        this.obj[mapKeyToLocal(key)] = mapValueToLocal(this._field, value);\n        return this;\n    }\n    delete(key) {\n        const k = mapKeyToLocal(key);\n        const has = Object.prototype.hasOwnProperty.call(this.obj, k);\n        if (has) {\n            delete this.obj[k];\n        }\n        return has;\n    }\n    clear() {\n        for (const key of Object.keys(this.obj)) {\n            delete this.obj[key];\n        }\n    }\n    get(key) {\n        let val = this.obj[mapKeyToLocal(key)];\n        if (val !== undefined) {\n            val = mapValueToReflect(this._field, val, this.check);\n        }\n        return val;\n    }\n    has(key) {\n        return Object.prototype.hasOwnProperty.call(this.obj, mapKeyToLocal(key));\n    }\n    *keys() {\n        for (const objKey of Object.keys(this.obj)) {\n            yield mapKeyToReflect(objKey, this._field.mapKey);\n        }\n    }\n    *entries() {\n        for (const objEntry of Object.entries(this.obj)) {\n            yield [\n                mapKeyToReflect(objEntry[0], this._field.mapKey),\n                mapValueToReflect(this._field, objEntry[1], this.check),\n            ];\n        }\n    }\n    [Symbol.iterator]() {\n        return this.entries();\n    }\n    get size() {\n        return Object.keys(this.obj).length;\n    }\n    *values() {\n        for (const val of Object.values(this.obj)) {\n            yield mapValueToReflect(this._field, val, this.check);\n        }\n    }\n    forEach(callbackfn, thisArg) {\n        for (const mapEntry of this.entries()) {\n            callbackfn.call(thisArg, mapEntry[1], mapEntry[0], this);\n        }\n    }\n}\nfunction messageToLocal(field, value) {\n    if (!(0, guard_js_1.isReflectMessage)(value)) {\n        return value;\n    }\n    if ((0, wrappers_js_1.isWrapper)(value.message) &&\n        !field.oneof &&\n        field.fieldKind == \"message\") {\n        // Types from google/protobuf/wrappers.proto are unwrapped when used in\n        // a singular field that is not part of a oneof group.\n        return value.message.value;\n    }\n    if (value.desc.typeName == \"google.protobuf.Struct\" &&\n        field.parent.typeName != \"google.protobuf.Value\") {\n        // google.protobuf.Struct is represented with JsonObject when used in a\n        // field, except when used in google.protobuf.Value.\n        return wktStructToLocal(value.message);\n    }\n    return value.message;\n}\nfunction messageToReflect(field, value, check) {\n    if (value !== undefined) {\n        if ((0, wrappers_js_1.isWrapperDesc)(field.message) &&\n            !field.oneof &&\n            field.fieldKind == \"message\") {\n            // Types from google/protobuf/wrappers.proto are unwrapped when used in\n            // a singular field that is not part of a oneof group.\n            value = {\n                $typeName: field.message.typeName,\n                value: longToReflect(field.message.fields[0], value),\n            };\n        }\n        else if (field.message.typeName == \"google.protobuf.Struct\" &&\n            field.parent.typeName != \"google.protobuf.Value\" &&\n            (0, guard_js_1.isObject)(value)) {\n            // google.protobuf.Struct is represented with JsonObject when used in a\n            // field, except when used in google.protobuf.Value.\n            value = wktStructToReflect(value);\n        }\n    }\n    return new ReflectMessageImpl(field.message, value, check);\n}\nfunction listItemToLocal(field, value) {\n    if (field.listKind == \"message\") {\n        return messageToLocal(field, value);\n    }\n    return longToLocal(field, value);\n}\nfunction listItemToReflect(field, value, check) {\n    if (field.listKind == \"message\") {\n        return messageToReflect(field, value, check);\n    }\n    return longToReflect(field, value);\n}\nfunction mapValueToLocal(field, value) {\n    if (field.mapKind == \"message\") {\n        return messageToLocal(field, value);\n    }\n    return longToLocal(field, value);\n}\nfunction mapValueToReflect(field, value, check) {\n    if (field.mapKind == \"message\") {\n        return messageToReflect(field, value, check);\n    }\n    return value;\n}\nfunction mapKeyToLocal(key) {\n    return typeof key == \"string\" || typeof key == \"number\" ? key : String(key);\n}\n/**\n * Converts a map key (any scalar value except float, double, or bytes) from its\n * representation in a message (string or number, the only possible object key\n * types) to the closest possible type in ECMAScript.\n */\nfunction mapKeyToReflect(key, type) {\n    switch (type) {\n        case descriptors_js_1.ScalarType.STRING:\n            return key;\n        case descriptors_js_1.ScalarType.INT32:\n        case descriptors_js_1.ScalarType.FIXED32:\n        case descriptors_js_1.ScalarType.UINT32:\n        case descriptors_js_1.ScalarType.SFIXED32:\n        case descriptors_js_1.ScalarType.SINT32: {\n            const n = Number.parseInt(key);\n            if (Number.isFinite(n)) {\n                return n;\n            }\n            break;\n        }\n        case descriptors_js_1.ScalarType.BOOL:\n            switch (key) {\n                case \"true\":\n                    return true;\n                case \"false\":\n                    return false;\n            }\n            break;\n        case descriptors_js_1.ScalarType.UINT64:\n        case descriptors_js_1.ScalarType.FIXED64:\n            try {\n                return proto_int64_js_1.protoInt64.uParse(key);\n            }\n            catch (_a) {\n                //\n            }\n            break;\n        default:\n            // INT64, SFIXED64, SINT64\n            try {\n                return proto_int64_js_1.protoInt64.parse(key);\n            }\n            catch (_b) {\n                //\n            }\n            break;\n    }\n    return key;\n}\nfunction longToReflect(field, value) {\n    switch (field.scalar) {\n        case descriptors_js_1.ScalarType.INT64:\n        case descriptors_js_1.ScalarType.SFIXED64:\n        case descriptors_js_1.ScalarType.SINT64:\n            if (\"longAsString\" in field &&\n                field.longAsString &&\n                typeof value == \"string\") {\n                value = proto_int64_js_1.protoInt64.parse(value);\n            }\n            break;\n        case descriptors_js_1.ScalarType.FIXED64:\n        case descriptors_js_1.ScalarType.UINT64:\n            if (\"longAsString\" in field &&\n                field.longAsString &&\n                typeof value == \"string\") {\n                value = proto_int64_js_1.protoInt64.uParse(value);\n            }\n            break;\n    }\n    return value;\n}\nfunction longToLocal(field, value) {\n    switch (field.scalar) {\n        case descriptors_js_1.ScalarType.INT64:\n        case descriptors_js_1.ScalarType.SFIXED64:\n        case descriptors_js_1.ScalarType.SINT64:\n            if (\"longAsString\" in field && field.longAsString) {\n                value = String(value);\n            }\n            else if (typeof value == \"string\" || typeof value == \"number\") {\n                value = proto_int64_js_1.protoInt64.parse(value);\n            }\n            break;\n        case descriptors_js_1.ScalarType.FIXED64:\n        case descriptors_js_1.ScalarType.UINT64:\n            if (\"longAsString\" in field && field.longAsString) {\n                value = String(value);\n            }\n            else if (typeof value == \"string\" || typeof value == \"number\") {\n                value = proto_int64_js_1.protoInt64.uParse(value);\n            }\n            break;\n    }\n    return value;\n}\nfunction wktStructToReflect(json) {\n    const struct = {\n        $typeName: \"google.protobuf.Struct\",\n        fields: {},\n    };\n    if ((0, guard_js_1.isObject)(json)) {\n        for (const [k, v] of Object.entries(json)) {\n            struct.fields[k] = wktValueToReflect(v);\n        }\n    }\n    return struct;\n}\nfunction wktStructToLocal(val) {\n    const json = {};\n    for (const [k, v] of Object.entries(val.fields)) {\n        json[k] = wktValueToLocal(v);\n    }\n    return json;\n}\nfunction wktValueToLocal(val) {\n    switch (val.kind.case) {\n        case \"structValue\":\n            return wktStructToLocal(val.kind.value);\n        case \"listValue\":\n            return val.kind.value.values.map(wktValueToLocal);\n        case \"nullValue\":\n        case undefined:\n            return null;\n        default:\n            return val.kind.value;\n    }\n}\nfunction wktValueToReflect(json) {\n    const value = {\n        $typeName: \"google.protobuf.Value\",\n        kind: { case: undefined },\n    };\n    switch (typeof json) {\n        case \"number\":\n            value.kind = { case: \"numberValue\", value: json };\n            break;\n        case \"string\":\n            value.kind = { case: \"stringValue\", value: json };\n            break;\n        case \"boolean\":\n            value.kind = { case: \"boolValue\", value: json };\n            break;\n        case \"object\":\n            if (json === null) {\n                const nullValue = 0;\n                value.kind = { case: \"nullValue\", value: nullValue };\n            }\n            else if (Array.isArray(json)) {\n                const listValue = {\n                    $typeName: \"google.protobuf.ListValue\",\n                    values: [],\n                };\n                if (Array.isArray(json)) {\n                    for (const e of json) {\n                        listValue.values.push(wktValueToReflect(e));\n                    }\n                }\n                value.kind = {\n                    case: \"listValue\",\n                    value: listValue,\n                };\n            }\n            else {\n                value.kind = {\n                    case: \"structValue\",\n                    value: wktStructToReflect(json),\n                };\n            }\n            break;\n    }\n    return value;\n}\n", "\"use strict\";\n// Copyright 2021-2025 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toBinary = toBinary;\nexports.writeField = writeField;\nconst reflect_js_1 = require(\"./reflect/reflect.js\");\nconst binary_encoding_js_1 = require(\"./wire/binary-encoding.js\");\nconst descriptors_js_1 = require(\"./descriptors.js\");\n// bootstrap-inject google.protobuf.FeatureSet.FieldPresence.LEGACY_REQUIRED: const $name: FeatureSet_FieldPresence.$localName = $number;\nconst LEGACY_REQUIRED = 3;\n// Default options for serializing binary data.\nconst writeDefaults = {\n    writeUnknownFields: true,\n};\nfunction makeWriteOptions(options) {\n    return options ? Object.assign(Object.assign({}, writeDefaults), options) : writeDefaults;\n}\nfunction toBinary(schema, message, options) {\n    return writeFields(new binary_encoding_js_1.BinaryWriter(), makeWriteOptions(options), (0, reflect_js_1.reflect)(schema, message)).finish();\n}\nfunction writeFields(writer, opts, msg) {\n    var _a;\n    for (const f of msg.sortedFields) {\n        if (!msg.isSet(f)) {\n            if (f.presence == LEGACY_REQUIRED) {\n                throw new Error(`cannot encode ${f} to binary: required field not set`);\n            }\n            continue;\n        }\n        writeField(writer, opts, msg, f);\n    }\n    if (opts.writeUnknownFields) {\n        for (const { no, wireType, data } of (_a = msg.getUnknown()) !== null && _a !== void 0 ? _a : []) {\n            writer.tag(no, wireType).raw(data);\n        }\n    }\n    return writer;\n}\n/**\n * @private\n */\nfunction writeField(writer, opts, msg, field) {\n    var _a;\n    switch (field.fieldKind) {\n        case \"scalar\":\n        case \"enum\":\n            writeScalar(writer, msg.desc.typeName, field.name, (_a = field.scalar) !== null && _a !== void 0 ? _a : descriptors_js_1.ScalarType.INT32, field.number, msg.get(field));\n            break;\n        case \"list\":\n            writeListField(writer, opts, field, msg.get(field));\n            break;\n        case \"message\":\n            writeMessageField(writer, opts, field, msg.get(field));\n            break;\n        case \"map\":\n            for (const [key, val] of msg.get(field)) {\n                writeMapEntry(writer, opts, field, key, val);\n            }\n            break;\n    }\n}\nfunction writeScalar(writer, msgName, fieldName, scalarType, fieldNo, value) {\n    writeScalarValue(writer.tag(fieldNo, writeTypeOfScalar(scalarType)), msgName, fieldName, scalarType, value);\n}\nfunction writeMessageField(writer, opts, field, message) {\n    if (field.delimitedEncoding) {\n        writeFields(writer.tag(field.number, binary_encoding_js_1.WireType.StartGroup), opts, message).tag(field.number, binary_encoding_js_1.WireType.EndGroup);\n    }\n    else {\n        writeFields(writer.tag(field.number, binary_encoding_js_1.WireType.LengthDelimited).fork(), opts, message).join();\n    }\n}\nfunction writeListField(writer, opts, field, list) {\n    var _a;\n    if (field.listKind == \"message\") {\n        for (const item of list) {\n            writeMessageField(writer, opts, field, item);\n        }\n        return;\n    }\n    const scalarType = (_a = field.scalar) !== null && _a !== void 0 ? _a : descriptors_js_1.ScalarType.INT32;\n    if (field.packed) {\n        if (!list.size) {\n            return;\n        }\n        writer.tag(field.number, binary_encoding_js_1.WireType.LengthDelimited).fork();\n        for (const item of list) {\n            writeScalarValue(writer, field.parent.typeName, field.name, scalarType, item);\n        }\n        writer.join();\n        return;\n    }\n    for (const item of list) {\n        writeScalar(writer, field.parent.typeName, field.name, scalarType, field.number, item);\n    }\n}\nfunction writeMapEntry(writer, opts, field, key, value) {\n    var _a;\n    writer.tag(field.number, binary_encoding_js_1.WireType.LengthDelimited).fork();\n    // write key, expecting key field number = 1\n    writeScalar(writer, field.parent.typeName, field.name, field.mapKey, 1, key);\n    // write value, expecting value field number = 2\n    switch (field.mapKind) {\n        case \"scalar\":\n        case \"enum\":\n            writeScalar(writer, field.parent.typeName, field.name, (_a = field.scalar) !== null && _a !== void 0 ? _a : descriptors_js_1.ScalarType.INT32, 2, value);\n            break;\n        case \"message\":\n            writeFields(writer.tag(2, binary_encoding_js_1.WireType.LengthDelimited).fork(), opts, value).join();\n            break;\n    }\n    writer.join();\n}\nfunction writeScalarValue(writer, msgName, fieldName, type, value) {\n    try {\n        switch (type) {\n            case descriptors_js_1.ScalarType.STRING:\n                writer.string(value);\n                break;\n            case descriptors_js_1.ScalarType.BOOL:\n                writer.bool(value);\n                break;\n            case descriptors_js_1.ScalarType.DOUBLE:\n                writer.double(value);\n                break;\n            case descriptors_js_1.ScalarType.FLOAT:\n                writer.float(value);\n                break;\n            case descriptors_js_1.ScalarType.INT32:\n                writer.int32(value);\n                break;\n            case descriptors_js_1.ScalarType.INT64:\n                writer.int64(value);\n                break;\n            case descriptors_js_1.ScalarType.UINT64:\n                writer.uint64(value);\n                break;\n            case descriptors_js_1.ScalarType.FIXED64:\n                writer.fixed64(value);\n                break;\n            case descriptors_js_1.ScalarType.BYTES:\n                writer.bytes(value);\n                break;\n            case descriptors_js_1.ScalarType.FIXED32:\n                writer.fixed32(value);\n                break;\n            case descriptors_js_1.ScalarType.SFIXED32:\n                writer.sfixed32(value);\n                break;\n            case descriptors_js_1.ScalarType.SFIXED64:\n                writer.sfixed64(value);\n                break;\n            case descriptors_js_1.ScalarType.SINT64:\n                writer.sint64(value);\n                break;\n            case descriptors_js_1.ScalarType.UINT32:\n                writer.uint32(value);\n                break;\n            case descriptors_js_1.ScalarType.SINT32:\n                writer.sint32(value);\n                break;\n        }\n    }\n    catch (e) {\n        if (e instanceof Error) {\n            throw new Error(`cannot encode field ${msgName}.${fieldName} to binary: ${e.message}`);\n        }\n        throw e;\n    }\n}\nfunction writeTypeOfScalar(type) {\n    switch (type) {\n        case descriptors_js_1.ScalarType.BYTES:\n        case descriptors_js_1.ScalarType.STRING:\n            return binary_encoding_js_1.WireType.LengthDelimited;\n        case descriptors_js_1.ScalarType.DOUBLE:\n        case descriptors_js_1.ScalarType.FIXED64:\n        case descriptors_js_1.ScalarType.SFIXED64:\n            return binary_encoding_js_1.WireType.Bit64;\n        case descriptors_js_1.ScalarType.FIXED32:\n        case descriptors_js_1.ScalarType.SFIXED32:\n        case descriptors_js_1.ScalarType.FLOAT:\n            return binary_encoding_js_1.WireType.Bit32;\n        default:\n            return binary_encoding_js_1.WireType.Varint;\n    }\n}\n", "\"use strict\";\n// Copyright 2021-2025 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromBinary = fromBinary;\nexports.mergeFromBinary = mergeFromBinary;\nexports.readField = readField;\nconst descriptors_js_1 = require(\"./descriptors.js\");\nconst scalar_js_1 = require(\"./reflect/scalar.js\");\nconst reflect_js_1 = require(\"./reflect/reflect.js\");\nconst binary_encoding_js_1 = require(\"./wire/binary-encoding.js\");\nconst varint_js_1 = require(\"./wire/varint.js\");\n// Default options for parsing binary data.\nconst readDefaults = {\n    readUnknownFields: true,\n};\nfunction makeReadOptions(options) {\n    return options ? Object.assign(Object.assign({}, readDefaults), options) : readDefaults;\n}\n/**\n * Parse serialized binary data.\n */\nfunction fromBinary(schema, bytes, options) {\n    const msg = (0, reflect_js_1.reflect)(schema, undefined, false);\n    readMessage(msg, new binary_encoding_js_1.BinaryReader(bytes), makeReadOptions(options), false, bytes.byteLength);\n    return msg.message;\n}\n/**\n * Parse from binary data, merging fields.\n *\n * Repeated fields are appended. Map entries are added, overwriting\n * existing keys.\n *\n * If a message field is already present, it will be merged with the\n * new data.\n */\nfunction mergeFromBinary(schema, target, bytes, options) {\n    readMessage((0, reflect_js_1.reflect)(schema, target, false), new binary_encoding_js_1.BinaryReader(bytes), makeReadOptions(options), false, bytes.byteLength);\n    return target;\n}\n/**\n * If `delimited` is false, read the length given in `lengthOrDelimitedFieldNo`.\n *\n * If `delimited` is true, read until an EndGroup tag. `lengthOrDelimitedFieldNo`\n * is the expected field number.\n *\n * @private\n */\nfunction readMessage(message, reader, options, delimited, lengthOrDelimitedFieldNo) {\n    var _a;\n    const end = delimited ? reader.len : reader.pos + lengthOrDelimitedFieldNo;\n    let fieldNo;\n    let wireType;\n    const unknownFields = (_a = message.getUnknown()) !== null && _a !== void 0 ? _a : [];\n    while (reader.pos < end) {\n        [fieldNo, wireType] = reader.tag();\n        if (delimited && wireType == binary_encoding_js_1.WireType.EndGroup) {\n            break;\n        }\n        const field = message.findNumber(fieldNo);\n        if (!field) {\n            const data = reader.skip(wireType, fieldNo);\n            if (options.readUnknownFields) {\n                unknownFields.push({ no: fieldNo, wireType, data });\n            }\n            continue;\n        }\n        readField(message, reader, field, wireType, options);\n    }\n    if (delimited) {\n        if (wireType != binary_encoding_js_1.WireType.EndGroup || fieldNo !== lengthOrDelimitedFieldNo) {\n            throw new Error(\"invalid end group tag\");\n        }\n    }\n    if (unknownFields.length > 0) {\n        message.setUnknown(unknownFields);\n    }\n}\n/**\n * @private\n */\nfunction readField(message, reader, field, wireType, options) {\n    var _a;\n    switch (field.fieldKind) {\n        case \"scalar\":\n            message.set(field, readScalar(reader, field.scalar));\n            break;\n        case \"enum\":\n            const val = readScalar(reader, descriptors_js_1.ScalarType.INT32);\n            if (field.enum.open) {\n                message.set(field, val);\n            }\n            else {\n                const ok = field.enum.values.some((v) => v.number === val);\n                if (ok) {\n                    message.set(field, val);\n                }\n                else if (options.readUnknownFields) {\n                    const bytes = [];\n                    (0, varint_js_1.varint32write)(val, bytes);\n                    const unknownFields = (_a = message.getUnknown()) !== null && _a !== void 0 ? _a : [];\n                    unknownFields.push({\n                        no: field.number,\n                        wireType,\n                        data: new Uint8Array(bytes),\n                    });\n                    message.setUnknown(unknownFields);\n                }\n            }\n            break;\n        case \"message\":\n            message.set(field, readMessageField(reader, options, field, message.get(field)));\n            break;\n        case \"list\":\n            readListField(reader, wireType, message.get(field), options);\n            break;\n        case \"map\":\n            readMapEntry(reader, message.get(field), options);\n            break;\n    }\n}\n// Read a map field, expecting key field = 1, value field = 2\nfunction readMapEntry(reader, map, options) {\n    const field = map.field();\n    let key;\n    let val;\n    // Read the length of the map entry, which is a varint.\n    const len = reader.uint32();\n    // WARNING: Calculate end AFTER advancing reader.pos (above), so that\n    //          reader.pos is at the start of the map entry.\n    const end = reader.pos + len;\n    while (reader.pos < end) {\n        const [fieldNo] = reader.tag();\n        switch (fieldNo) {\n            case 1:\n                key = readScalar(reader, field.mapKey);\n                break;\n            case 2:\n                switch (field.mapKind) {\n                    case \"scalar\":\n                        val = readScalar(reader, field.scalar);\n                        break;\n                    case \"enum\":\n                        val = reader.int32();\n                        break;\n                    case \"message\":\n                        val = readMessageField(reader, options, field);\n                        break;\n                }\n                break;\n        }\n    }\n    if (key === undefined) {\n        key = (0, scalar_js_1.scalarZeroValue)(field.mapKey, false);\n    }\n    if (val === undefined) {\n        switch (field.mapKind) {\n            case \"scalar\":\n                val = (0, scalar_js_1.scalarZeroValue)(field.scalar, false);\n                break;\n            case \"enum\":\n                val = field.enum.values[0].number;\n                break;\n            case \"message\":\n                val = (0, reflect_js_1.reflect)(field.message, undefined, false);\n                break;\n        }\n    }\n    map.set(key, val);\n}\nfunction readListField(reader, wireType, list, options) {\n    var _a;\n    const field = list.field();\n    if (field.listKind === \"message\") {\n        list.add(readMessageField(reader, options, field));\n        return;\n    }\n    const scalarType = (_a = field.scalar) !== null && _a !== void 0 ? _a : descriptors_js_1.ScalarType.INT32;\n    const packed = wireType == binary_encoding_js_1.WireType.LengthDelimited &&\n        scalarType != descriptors_js_1.ScalarType.STRING &&\n        scalarType != descriptors_js_1.ScalarType.BYTES;\n    if (!packed) {\n        list.add(readScalar(reader, scalarType));\n        return;\n    }\n    const e = reader.uint32() + reader.pos;\n    while (reader.pos < e) {\n        list.add(readScalar(reader, scalarType));\n    }\n}\nfunction readMessageField(reader, options, field, mergeMessage) {\n    const delimited = field.delimitedEncoding;\n    const message = mergeMessage !== null && mergeMessage !== void 0 ? mergeMessage : (0, reflect_js_1.reflect)(field.message, undefined, false);\n    readMessage(message, reader, options, delimited, delimited ? field.number : reader.uint32());\n    return message;\n}\nfunction readScalar(reader, type) {\n    switch (type) {\n        case descriptors_js_1.ScalarType.STRING:\n            return reader.string();\n        case descriptors_js_1.ScalarType.BOOL:\n            return reader.bool();\n        case descriptors_js_1.ScalarType.DOUBLE:\n            return reader.double();\n        case descriptors_js_1.ScalarType.FLOAT:\n            return reader.float();\n        case descriptors_js_1.ScalarType.INT32:\n            return reader.int32();\n        case descriptors_js_1.ScalarType.INT64:\n            return reader.int64();\n        case descriptors_js_1.ScalarType.UINT64:\n            return reader.uint64();\n        case descriptors_js_1.ScalarType.FIXED64:\n            return reader.fixed64();\n        case descriptors_js_1.ScalarType.BYTES:\n            return reader.bytes();\n        case descriptors_js_1.ScalarType.FIXED32:\n            return reader.fixed32();\n        case descriptors_js_1.ScalarType.SFIXED32:\n            return reader.sfixed32();\n        case descriptors_js_1.ScalarType.SFIXED64:\n            return reader.sfixed64();\n        case descriptors_js_1.ScalarType.SINT64:\n            return reader.sint64();\n        case descriptors_js_1.ScalarType.UINT32:\n            return reader.uint32();\n        case descriptors_js_1.ScalarType.SINT32:\n            return reader.sint32();\n    }\n}\n", "\"use strict\";\n// Copyright 2021-2025 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nvar __asyncValues = (this && this.__asyncValues) || function (o) {\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n    var m = o[Symbol.asyncIterator], i;\n    return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\n    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\n    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\n};\nvar __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }\nvar __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {\n    if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n    var g = generator.apply(thisArg, _arguments || []), i, q = [];\n    return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\n    function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\n    function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\n    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\n    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\n    function fulfill(value) { resume(\"next\", value); }\n    function reject(value) { resume(\"throw\", value); }\n    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sizeDelimitedEncode = sizeDelimitedEncode;\nexports.sizeDelimitedDecodeStream = sizeDelimitedDecodeStream;\nexports.sizeDelimitedPeek = sizeDelimitedPeek;\nconst to_binary_js_1 = require(\"../to-binary.js\");\nconst binary_encoding_js_1 = require(\"./binary-encoding.js\");\nconst from_binary_js_1 = require(\"../from-binary.js\");\n/**\n * Serialize a message, prefixing it with its size.\n *\n * A size-delimited message is a varint size in bytes, followed by exactly\n * that many bytes of a message serialized with the binary format.\n *\n * This size-delimited format is compatible with other implementations.\n * For details, see https://github.com/protocolbuffers/protobuf/issues/10229\n */\nfunction sizeDelimitedEncode(messageDesc, message, options) {\n    const writer = new binary_encoding_js_1.BinaryWriter();\n    writer.bytes((0, to_binary_js_1.toBinary)(messageDesc, message, options));\n    return writer.finish();\n}\n/**\n * Parse a stream of size-delimited messages.\n *\n * A size-delimited message is a varint size in bytes, followed by exactly\n * that many bytes of a message serialized with the binary format.\n *\n * This size-delimited format is compatible with other implementations.\n * For details, see https://github.com/protocolbuffers/protobuf/issues/10229\n */\nfunction sizeDelimitedDecodeStream(messageDesc, iterable, options) {\n    return __asyncGenerator(this, arguments, function* sizeDelimitedDecodeStream_1() {\n        var _a, e_1, _b, _c;\n        // append chunk to buffer, returning updated buffer\n        function append(buffer, chunk) {\n            const n = new Uint8Array(buffer.byteLength + chunk.byteLength);\n            n.set(buffer);\n            n.set(chunk, buffer.length);\n            return n;\n        }\n        let buffer = new Uint8Array(0);\n        try {\n            for (var _d = true, iterable_1 = __asyncValues(iterable), iterable_1_1; iterable_1_1 = yield __await(iterable_1.next()), _a = iterable_1_1.done, !_a; _d = true) {\n                _c = iterable_1_1.value;\n                _d = false;\n                const chunk = _c;\n                buffer = append(buffer, chunk);\n                for (;;) {\n                    const size = sizeDelimitedPeek(buffer);\n                    if (size.eof) {\n                        // size is incomplete, buffer more data\n                        break;\n                    }\n                    if (size.offset + size.size > buffer.byteLength) {\n                        // message is incomplete, buffer more data\n                        break;\n                    }\n                    yield yield __await((0, from_binary_js_1.fromBinary)(messageDesc, buffer.subarray(size.offset, size.offset + size.size), options));\n                    buffer = buffer.subarray(size.offset + size.size);\n                }\n            }\n        }\n        catch (e_1_1) { e_1 = { error: e_1_1 }; }\n        finally {\n            try {\n                if (!_d && !_a && (_b = iterable_1.return)) yield __await(_b.call(iterable_1));\n            }\n            finally { if (e_1) throw e_1.error; }\n        }\n        if (buffer.byteLength > 0) {\n            throw new Error(\"incomplete data\");\n        }\n    });\n}\n/**\n * Decodes the size from the given size-delimited message, which may be\n * incomplete.\n *\n * Returns an object with the following properties:\n * - size: The size of the delimited message in bytes\n * - offset: The offset in the given byte array where the message starts\n * - eof: true\n *\n * If the size-delimited data does not include all bytes of the varint size,\n * the following object is returned:\n * - size: null\n * - offset: null\n * - eof: false\n *\n * This function can be used to implement parsing of size-delimited messages\n * from a stream.\n */\nfunction sizeDelimitedPeek(data) {\n    const sizeEof = { eof: true, size: null, offset: null };\n    for (let i = 0; i < 10; i++) {\n        if (i > data.byteLength) {\n            return sizeEof;\n        }\n        if ((data[i] & 0x80) == 0) {\n            const reader = new binary_encoding_js_1.BinaryReader(data);\n            let size;\n            try {\n                size = reader.uint32();\n            }\n            catch (e) {\n                if (e instanceof RangeError) {\n                    return sizeEof;\n                }\n                throw e;\n            }\n            return {\n                eof: false,\n                size,\n                offset: reader.pos,\n            };\n        }\n    }\n    throw new Error(\"invalid varint\");\n}\n", "\"use strict\";\n// Copyright 2021-2025 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// you may not use this file except in compliance with the License.\n// You may obtain a copy of the License at\n//\n//      http://www.apache.org/licenses/LICENSE-2.0\n//\n// Unless required by applicable law or agreed to in writing, software\n// distributed under the License is distributed on an \"AS IS\" BASIS,\n// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n// See the License for the specific language governing permissions and\n// limitations under the License.\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./binary-encoding.js\"), exports);\n__exportStar(require(\"./base64-encoding.js\"), exports);\n__exportStar(require(\"./text-encoding.js\"), exports);\n__exportStar(require(\"./text-format.js\"), exports);\n__exportStar(require(\"./size-delimited.js\"), exports);\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: google/protobuf/any.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\n\nexport const protobufPackage = \"google.protobuf\";\n\n/**\n * `Any` contains an arbitrary serialized protocol buffer message along with a\n * URL that describes the type of the serialized message.\n *\n * Protobuf library provides support to pack/unpack Any values in the form\n * of utility functions or additional generated methods of the Any type.\n *\n * Example 1: Pack and unpack a message in C++.\n *\n *     Foo foo = ...;\n *     Any any;\n *     any.PackFrom(foo);\n *     ...\n *     if (any.UnpackTo(&foo)) {\n *       ...\n *     }\n *\n * Example 2: Pack and unpack a message in Java.\n *\n *     Foo foo = ...;\n *     Any any = Any.pack(foo);\n *     ...\n *     if (any.is(Foo.class)) {\n *       foo = any.unpack(Foo.class);\n *     }\n *\n * The pack methods provided by protobuf library will by default use\n * 'type.googleapis.com/full.type.name' as the type URL and the unpack\n * methods only use the fully qualified type name after the last '/'\n * in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\n * name \"y.z\".\n *\n * JSON\n * ====\n * The JSON representation of an `Any` value uses the regular\n * representation of the deserialized, embedded message, with an\n * additional field `@type` which contains the type URL. Example:\n *\n *     package google.profile;\n *     message Person {\n *       string first_name = 1;\n *       string last_name = 2;\n *     }\n *\n *     {\n *       \"@type\": \"type.googleapis.com/google.profile.Person\",\n *       \"firstName\": <string>,\n *       \"lastName\": <string>\n *     }\n *\n * If the embedded message type is well-known and has a custom JSON\n * representation, that representation will be embedded adding a field\n * `value` which holds the custom JSON in addition to the `@type`\n * field. Example (for message [google.protobuf.Duration][]):\n *\n *     {\n *       \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n *       \"value\": \"1.212s\"\n *     }\n */\nexport interface Any {\n  /**\n   * A URL/resource name whose content describes the type of the\n   * serialized protocol buffer message.\n   *\n   * For URLs which use the schema `http`, `https`, or no schema, the\n   * following restrictions and interpretations apply:\n   *\n   * * If no schema is provided, `https` is assumed.\n   * * The last segment of the URL's path must represent the fully\n   *   qualified name of the type (as in `path/google.protobuf.Duration`).\n   *   The name should be in a canonical form (e.g., leading \".\" is\n   *   not accepted).\n   * * An HTTP GET on the URL must yield a [google.protobuf.Type][]\n   *   value in binary format, or produce an error.\n   * * Applications are allowed to cache lookup results based on the\n   *   URL, or have them precompiled into a binary to avoid any\n   *   lookup. Therefore, binary compatibility needs to be preserved\n   *   on changes to types. (Use versioned type names to manage\n   *   breaking changes.)\n   *\n   * Schemas other than `http`, `https` (or the empty schema) might be\n   * used with implementation specific semantics.\n   */\n  typeUrl?:\n    | string\n    | undefined;\n  /** Must be a valid serialized protocol buffer of the above specified type. */\n  value?: Buffer | undefined;\n}\n\nfunction createBaseAny(): Any {\n  return {};\n}\n\nexport const Any: MessageFns<Any> = {\n  encode(message: Any, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.typeUrl !== undefined && message.typeUrl !== \"\") {\n      writer.uint32(10).string(message.typeUrl);\n    }\n    if (message.value !== undefined && message.value.length !== 0) {\n      writer.uint32(18).bytes(message.value);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Any {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseAny();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.typeUrl = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.value = Buffer.from(reader.bytes());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Any {\n    return {\n      typeUrl: isSet(object.typeUrl) ? globalThis.String(object.typeUrl) : undefined,\n      value: isSet(object.value) ? Buffer.from(bytesFromBase64(object.value)) : undefined,\n    };\n  },\n\n  toJSON(message: Any): unknown {\n    const obj: any = {};\n    if (message.typeUrl !== undefined && message.typeUrl !== \"\") {\n      obj.typeUrl = message.typeUrl;\n    }\n    if (message.value !== undefined && message.value.length !== 0) {\n      obj.value = base64FromBytes(message.value);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Any>): Any {\n    return Any.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Any>): Any {\n    const message = createBaseAny();\n    message.typeUrl = object.typeUrl ?? undefined;\n    message.value = object.value ?? undefined;\n    return message;\n  },\n};\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"google/protobuf/any.proto\",\n    \"package\": \"google.protobuf\",\n    \"dependency\": [],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Any\",\n      \"field\": [{\n        \"name\": \"type_url\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"typeUrl\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"value\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 12,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"value\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [],\n    \"extension\": [],\n    \"options\": {\n      \"javaPackage\": \"com.google.protobuf\",\n      \"javaOuterClassname\": \"AnyProto\",\n      \"javaMultipleFiles\": true,\n      \"javaGenerateEqualsAndHash\": true,\n      \"javaStringCheckUtf8\": false,\n      \"optimizeFor\": 1,\n      \"goPackage\": \"github.com/golang/protobuf/ptypes/any\",\n      \"ccGenericServices\": false,\n      \"javaGenericServices\": false,\n      \"pyGenericServices\": false,\n      \"phpGenericServices\": false,\n      \"deprecated\": false,\n      \"ccEnableArenas\": true,\n      \"objcClassPrefix\": \"GPB\",\n      \"csharpNamespace\": \"Google.Protobuf.WellKnownTypes\",\n      \"swiftPrefix\": \"\",\n      \"phpClassPrefix\": \"\",\n      \"phpNamespace\": \"\",\n      \"phpMetadataNamespace\": \"\",\n      \"rubyPackage\": \"\",\n      \"uninterpretedOption\": [],\n    },\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [4, 0],\n        \"span\": [102, 0, 132, 1],\n        \"leadingComments\":\n          '* `Any` contains an arbitrary serialized protocol buffer message along with a\\n URL that describes the type of the serialized message.\\n\\n Protobuf library provides support to pack/unpack Any values in the form\\n of utility functions or additional generated methods of the Any type.\\n\\n Example 1: Pack and unpack a message in C++.\\n\\n     Foo foo = ...;\\n     Any any;\\n     any.PackFrom(foo);\\n     ...\\n     if (any.UnpackTo(&foo)) {\\n       ...\\n     }\\n\\n Example 2: Pack and unpack a message in Java.\\n\\n     Foo foo = ...;\\n     Any any = Any.pack(foo);\\n     ...\\n     if (any.is(Foo.class)) {\\n       foo = any.unpack(Foo.class);\\n     }\\n\\n The pack methods provided by protobuf library will by default use\\n \\'type.googleapis.com/full.type.name\\' as the type URL and the unpack\\n methods only use the fully qualified type name after the last \\'/\\'\\n in the type URL, for example \"foo.bar.com/x/y.z\" will yield type\\n name \"y.z\".\\n\\n\\n JSON\\n ====\\n The JSON representation of an `Any` value uses the regular\\n representation of the deserialized, embedded message, with an\\n additional field `@type` which contains the type URL. Example:\\n\\n     package google.profile;\\n     message Person {\\n       string first_name = 1;\\n       string last_name = 2;\\n     }\\n\\n     {\\n       \"@type\": \"type.googleapis.com/google.profile.Person\",\\n       \"firstName\": <string>,\\n       \"lastName\": <string>\\n     }\\n\\n If the embedded message type is well-known and has a custom JSON\\n representation, that representation will be embedded adding a field\\n `value` which holds the custom JSON in addition to the `@type`\\n field. Example (for message [google.protobuf.Duration][]):\\n\\n     {\\n       \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\\n       \"value\": \"1.212s\"\\n     }\\n',\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 0, 2, 0],\n        \"span\": [126, 2, 22],\n        \"leadingComments\":\n          '*\\n A URL/resource name whose content describes the type of the\\n serialized protocol buffer message.\\n\\n For URLs which use the schema `http`, `https`, or no schema, the\\n following restrictions and interpretations apply:\\n\\n * If no schema is provided, `https` is assumed.\\n * The last segment of the URL\\'s path must represent the fully\\n   qualified name of the type (as in `path/google.protobuf.Duration`).\\n   The name should be in a canonical form (e.g., leading \".\" is\\n   not accepted).\\n * An HTTP GET on the URL must yield a [google.protobuf.Type][]\\n   value in binary format, or produce an error.\\n * Applications are allowed to cache lookup results based on the\\n   URL, or have them precompiled into a binary to avoid any\\n   lookup. Therefore, binary compatibility needs to be preserved\\n   on changes to types. (Use versioned type names to manage\\n   breaking changes.)\\n\\n Schemas other than `http`, `https` (or the empty schema) might be\\n used with implementation specific semantics.\\n',\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 0, 2, 1],\n        \"span\": [131, 2, 18],\n        \"leadingComments\": \"*\\n Must be a valid serialized protocol buffer of the above specified type.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: { \".google.protobuf.Any\": Any },\n  dependencies: [],\n};\n\nfunction bytesFromBase64(b64: string): Uint8Array {\n  return Uint8Array.from(globalThis.Buffer.from(b64, \"base64\"));\n}\n\nfunction base64FromBytes(arr: Uint8Array): string {\n  return globalThis.Buffer.from(arr).toString(\"base64\");\n}\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: google/protobuf/timestamp.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\n\nexport const protobufPackage = \"google.protobuf\";\n\n/**\n * A Timestamp represents a point in time independent of any time zone or local\n * calendar, encoded as a count of seconds and fractions of seconds at\n * nanosecond resolution. The count is relative to an epoch at UTC midnight on\n * January 1, 1970, in the proleptic Gregorian calendar which extends the\n * Gregorian calendar backwards to year one.\n *\n * All minutes are 60 seconds long. Leap seconds are \"smeared\" so that no leap\n * second table is needed for interpretation, using a [24-hour linear\n * smear](https://developers.google.com/time/smear).\n *\n * The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By\n * restricting to that range, we ensure that we can convert to and from [RFC\n * 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.\n *\n * # Examples\n *\n * Example 1: Compute Timestamp from POSIX `time()`.\n *\n *     Timestamp timestamp;\n *     timestamp.set_seconds(time(NULL));\n *     timestamp.set_nanos(0);\n *\n * Example 2: Compute Timestamp from POSIX `gettimeofday()`.\n *\n *     struct timeval tv;\n *     gettimeofday(&tv, NULL);\n *\n *     Timestamp timestamp;\n *     timestamp.set_seconds(tv.tv_sec);\n *     timestamp.set_nanos(tv.tv_usec * 1000);\n *\n * Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.\n *\n *     FILETIME ft;\n *     GetSystemTimeAsFileTime(&ft);\n *     UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;\n *\n *     // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z\n *     // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.\n *     Timestamp timestamp;\n *     timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));\n *     timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));\n *\n * Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.\n *\n *     long millis = System.currentTimeMillis();\n *\n *     Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)\n *         .setNanos((int) ((millis % 1000) * 1000000)).build();\n *\n * Example 5: Compute Timestamp from Java `Instant.now()`.\n *\n *     Instant now = Instant.now();\n *\n *     Timestamp timestamp =\n *         Timestamp.newBuilder().setSeconds(now.getEpochSecond())\n *             .setNanos(now.getNano()).build();\n *\n * Example 6: Compute Timestamp from current time in Python.\n *\n *     timestamp = Timestamp()\n *     timestamp.GetCurrentTime()\n *\n * # JSON Mapping\n *\n * In JSON format, the Timestamp type is encoded as a string in the\n * [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the\n * format is \"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z\"\n * where {year} is always expressed using four digits while {month}, {day},\n * {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional\n * seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),\n * are optional. The \"Z\" suffix indicates the timezone (\"UTC\"); the timezone\n * is required. A proto3 JSON serializer should always use UTC (as indicated by\n * \"Z\") when printing the Timestamp type and a proto3 JSON parser should be\n * able to accept both UTC and other timezones (as indicated by an offset).\n *\n * For example, \"2017-01-15T01:30:15.01Z\" encodes 15.01 seconds past\n * 01:30 UTC on January 15, 2017.\n *\n * In JavaScript, one can convert a Date object to this format using the\n * standard\n * [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)\n * method. In Python, a standard `datetime.datetime` object can be converted\n * to this format using\n * [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with\n * the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use\n * the Joda Time's [`ISODateTimeFormat.dateTime()`](\n * http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime%2D%2D\n * ) to obtain a formatter capable of generating timestamps in this format.\n */\nexport interface Timestamp {\n  /**\n   * Represents seconds of UTC time since Unix epoch\n   * 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to\n   * 9999-12-31T23:59:59Z inclusive.\n   */\n  seconds?:\n    | number\n    | undefined;\n  /**\n   * Non-negative fractions of a second at nanosecond resolution. Negative\n   * second values with fractions must still have non-negative nanos values\n   * that count forward in time. Must be from 0 to 999,999,999\n   * inclusive.\n   */\n  nanos?: number | undefined;\n}\n\nfunction createBaseTimestamp(): Timestamp {\n  return {};\n}\n\nexport const Timestamp: MessageFns<Timestamp> = {\n  encode(message: Timestamp, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.seconds !== undefined && message.seconds !== 0) {\n      writer.uint32(8).int64(message.seconds);\n    }\n    if (message.nanos !== undefined && message.nanos !== 0) {\n      writer.uint32(16).int32(message.nanos);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Timestamp {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseTimestamp();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.seconds = longToNumber(reader.int64());\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.nanos = reader.int32();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Timestamp {\n    return {\n      seconds: isSet(object.seconds) ? globalThis.Number(object.seconds) : undefined,\n      nanos: isSet(object.nanos) ? globalThis.Number(object.nanos) : undefined,\n    };\n  },\n\n  toJSON(message: Timestamp): unknown {\n    const obj: any = {};\n    if (message.seconds !== undefined && message.seconds !== 0) {\n      obj.seconds = Math.round(message.seconds);\n    }\n    if (message.nanos !== undefined && message.nanos !== 0) {\n      obj.nanos = Math.round(message.nanos);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Timestamp>): Timestamp {\n    return Timestamp.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Timestamp>): Timestamp {\n    const message = createBaseTimestamp();\n    message.seconds = object.seconds ?? undefined;\n    message.nanos = object.nanos ?? undefined;\n    return message;\n  },\n};\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"google/protobuf/timestamp.proto\",\n    \"package\": \"google.protobuf\",\n    \"dependency\": [],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Timestamp\",\n      \"field\": [{\n        \"name\": \"seconds\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 3,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"seconds\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"nanos\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 5,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"nanos\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [],\n    \"extension\": [],\n    \"options\": {\n      \"javaPackage\": \"com.google.protobuf\",\n      \"javaOuterClassname\": \"TimestampProto\",\n      \"javaMultipleFiles\": true,\n      \"javaGenerateEqualsAndHash\": false,\n      \"javaStringCheckUtf8\": false,\n      \"optimizeFor\": 1,\n      \"goPackage\": \"google.golang.org/protobuf/types/known/timestamppb\",\n      \"ccGenericServices\": false,\n      \"javaGenericServices\": false,\n      \"pyGenericServices\": false,\n      \"phpGenericServices\": false,\n      \"deprecated\": false,\n      \"ccEnableArenas\": true,\n      \"objcClassPrefix\": \"GPB\",\n      \"csharpNamespace\": \"Google.Protobuf.WellKnownTypes\",\n      \"swiftPrefix\": \"\",\n      \"phpClassPrefix\": \"\",\n      \"phpNamespace\": \"\",\n      \"phpMetadataNamespace\": \"\",\n      \"rubyPackage\": \"\",\n      \"uninterpretedOption\": [],\n    },\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [4, 0],\n        \"span\": [135, 0, 146, 1],\n        \"leadingComments\":\n          ' A Timestamp represents a point in time independent of any time zone or local\\n calendar, encoded as a count of seconds and fractions of seconds at\\n nanosecond resolution. The count is relative to an epoch at UTC midnight on\\n January 1, 1970, in the proleptic Gregorian calendar which extends the\\n Gregorian calendar backwards to year one.\\n\\n All minutes are 60 seconds long. Leap seconds are \"smeared\" so that no leap\\n second table is needed for interpretation, using a [24-hour linear\\n smear](https://developers.google.com/time/smear).\\n\\n The range is from 0001-01-01T00:00:00Z to 9999-12-31T23:59:59.999999999Z. By\\n restricting to that range, we ensure that we can convert to and from [RFC\\n 3339](https://www.ietf.org/rfc/rfc3339.txt) date strings.\\n\\n # Examples\\n\\n Example 1: Compute Timestamp from POSIX `time()`.\\n\\n     Timestamp timestamp;\\n     timestamp.set_seconds(time(NULL));\\n     timestamp.set_nanos(0);\\n\\n Example 2: Compute Timestamp from POSIX `gettimeofday()`.\\n\\n     struct timeval tv;\\n     gettimeofday(&tv, NULL);\\n\\n     Timestamp timestamp;\\n     timestamp.set_seconds(tv.tv_sec);\\n     timestamp.set_nanos(tv.tv_usec * 1000);\\n\\n Example 3: Compute Timestamp from Win32 `GetSystemTimeAsFileTime()`.\\n\\n     FILETIME ft;\\n     GetSystemTimeAsFileTime(&ft);\\n     UINT64 ticks = (((UINT64)ft.dwHighDateTime) << 32) | ft.dwLowDateTime;\\n\\n     // A Windows tick is 100 nanoseconds. Windows epoch 1601-01-01T00:00:00Z\\n     // is 11644473600 seconds before Unix epoch 1970-01-01T00:00:00Z.\\n     Timestamp timestamp;\\n     timestamp.set_seconds((INT64) ((ticks / 10000000) - 11644473600LL));\\n     timestamp.set_nanos((INT32) ((ticks % 10000000) * 100));\\n\\n Example 4: Compute Timestamp from Java `System.currentTimeMillis()`.\\n\\n     long millis = System.currentTimeMillis();\\n\\n     Timestamp timestamp = Timestamp.newBuilder().setSeconds(millis / 1000)\\n         .setNanos((int) ((millis % 1000) * 1000000)).build();\\n\\n\\n Example 5: Compute Timestamp from Java `Instant.now()`.\\n\\n     Instant now = Instant.now();\\n\\n     Timestamp timestamp =\\n         Timestamp.newBuilder().setSeconds(now.getEpochSecond())\\n             .setNanos(now.getNano()).build();\\n\\n\\n Example 6: Compute Timestamp from current time in Python.\\n\\n     timestamp = Timestamp()\\n     timestamp.GetCurrentTime()\\n\\n # JSON Mapping\\n\\n In JSON format, the Timestamp type is encoded as a string in the\\n [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format. That is, the\\n format is \"{year}-{month}-{day}T{hour}:{min}:{sec}[.{frac_sec}]Z\"\\n where {year} is always expressed using four digits while {month}, {day},\\n {hour}, {min}, and {sec} are zero-padded to two digits each. The fractional\\n seconds, which can go up to 9 digits (i.e. up to 1 nanosecond resolution),\\n are optional. The \"Z\" suffix indicates the timezone (\"UTC\"); the timezone\\n is required. A proto3 JSON serializer should always use UTC (as indicated by\\n \"Z\") when printing the Timestamp type and a proto3 JSON parser should be\\n able to accept both UTC and other timezones (as indicated by an offset).\\n\\n For example, \"2017-01-15T01:30:15.01Z\" encodes 15.01 seconds past\\n 01:30 UTC on January 15, 2017.\\n\\n In JavaScript, one can convert a Date object to this format using the\\n standard\\n [toISOString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString)\\n method. In Python, a standard `datetime.datetime` object can be converted\\n to this format using\\n [`strftime`](https://docs.python.org/2/library/time.html#time.strftime) with\\n the time format spec \\'%Y-%m-%dT%H:%M:%S.%fZ\\'. Likewise, in Java, one can use\\n the Joda Time\\'s [`ISODateTimeFormat.dateTime()`](\\n http://www.joda.org/joda-time/apidocs/org/joda/time/format/ISODateTimeFormat.html#dateTime%2D%2D\\n ) to obtain a formatter capable of generating timestamps in this format.\\n\\n\\n',\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 0, 2, 0],\n        \"span\": [139, 2, 20],\n        \"leadingComments\":\n          \" Represents seconds of UTC time since Unix epoch\\n 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to\\n 9999-12-31T23:59:59Z inclusive.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 0, 2, 1],\n        \"span\": [145, 2, 18],\n        \"leadingComments\":\n          \" Non-negative fractions of a second at nanosecond resolution. Negative\\n second values with fractions must still have non-negative nanos values\\n that count forward in time. Must be from 0 to 999,999,999\\n inclusive.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: { \".google.protobuf.Timestamp\": Timestamp },\n  dependencies: [],\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction longToNumber(int64: { toString(): string }): number {\n  const num = globalThis.Number(int64.toString());\n  if (num > globalThis.Number.MAX_SAFE_INTEGER) {\n    throw new globalThis.Error(\"Value is larger than Number.MAX_SAFE_INTEGER\");\n  }\n  if (num < globalThis.Number.MIN_SAFE_INTEGER) {\n    throw new globalThis.Error(\"Value is smaller than Number.MIN_SAFE_INTEGER\");\n  }\n  return num;\n}\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/attribute.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\n\nexport const protobufPackage = \"io.restorecommerce.attribute\";\n\nexport interface Attribute {\n  id?: string | undefined;\n  value?: string | undefined;\n  attributes?: Attribute[] | undefined;\n}\n\nfunction createBaseAttribute(): Attribute {\n  return {};\n}\n\nexport const Attribute: MessageFns<Attribute> = {\n  encode(message: Attribute, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.value !== undefined) {\n      writer.uint32(18).string(message.value);\n    }\n    if (message.attributes !== undefined && message.attributes.length !== 0) {\n      for (const v of message.attributes) {\n        Attribute.encode(v!, writer.uint32(26).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Attribute {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseAttribute();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.value = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          if (message.attributes === undefined) {\n            message.attributes = [];\n          }\n          const el = Attribute.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.attributes!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Attribute {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      value: isSet(object.value) ? globalThis.String(object.value) : undefined,\n      attributes: globalThis.Array.isArray(object?.attributes)\n        ? object.attributes.map((e: any) => Attribute.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: Attribute): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.value !== undefined) {\n      obj.value = message.value;\n    }\n    if (message.attributes?.length) {\n      obj.attributes = message.attributes.map((e) => Attribute.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Attribute>): Attribute {\n    return Attribute.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Attribute>): Attribute {\n    const message = createBaseAttribute();\n    message.id = object.id ?? undefined;\n    message.value = object.value ?? undefined;\n    message.attributes = object.attributes?.map((e) => Attribute.fromPartial(e)) || undefined;\n    return message;\n  },\n};\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/attribute.proto\",\n    \"package\": \"io.restorecommerce.attribute\",\n    \"dependency\": [],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Attribute\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"value\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"value\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"attributes\",\n        \"number\": 3,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.attribute.Attribute\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"attributes\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }, { \"name\": \"_value\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": { \"location\": [] },\n    \"syntax\": \"proto3\",\n  },\n  references: { \".io.restorecommerce.attribute.Attribute\": Attribute },\n  dependencies: [],\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/auth.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { protoMetadata as protoMetadata2, Timestamp } from \"../../google/protobuf/timestamp\";\nimport { Attribute, protoMetadata as protoMetadata1 } from \"./attribute\";\n\nexport const protobufPackage = \"io.restorecommerce.auth\";\n\n/** Subject of creating User */\nexport interface Subject {\n  /** user id */\n  id?:\n    | string\n    | undefined;\n  /** target scope (ID of the target scoping entity) */\n  scope?:\n    | string\n    | undefined;\n  /** for unauthenticated context */\n  unauthenticated?: boolean | undefined;\n  token?: string | undefined;\n}\n\nexport interface Tokens {\n  /** token name */\n  name?:\n    | string\n    | undefined;\n  /** expiration date for token */\n  expiresIn?:\n    | Date\n    | undefined;\n  /** token */\n  token?:\n    | string\n    | undefined;\n  /** identifier for role_association */\n  scopes?:\n    | string[]\n    | undefined;\n  /** type of token eg: access_token, refresh_token */\n  type?: string | undefined;\n  interactive?: boolean | undefined;\n  lastLogin?: Date | undefined;\n  clientId?:\n    | string\n    | undefined;\n  /** ID of the impersonator */\n  impersonatedBy?: string | undefined;\n}\n\nexport interface HierarchicalScope {\n  /** root node */\n  id?:\n    | string\n    | undefined;\n  /** children nodes */\n  children?:\n    | HierarchicalScope[]\n    | undefined;\n  /** role identifier associated with root node scope */\n  role?: string | undefined;\n}\n\nexport interface RoleAssociation {\n  /** role ID */\n  role?:\n    | string\n    | undefined;\n  /** useful attributes for RBAC/ABAC like organizational scope */\n  attributes?:\n    | Attribute[]\n    | undefined;\n  /** identifier for role_association */\n  id?:\n    | string\n    | undefined;\n  /** timestamp when the role was created */\n  created?: Date | undefined;\n}\n\nexport interface HierarchicalScopesRequest {\n  token?: string | undefined;\n}\n\nexport interface HierarchicalScopesResponse {\n  subjectId?: string | undefined;\n  hierarchicalScopes?: HierarchicalScope[] | undefined;\n  token?: string | undefined;\n}\n\nfunction createBaseSubject(): Subject {\n  return {};\n}\n\nexport const Subject: MessageFns<Subject> = {\n  encode(message: Subject, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.scope !== undefined) {\n      writer.uint32(18).string(message.scope);\n    }\n    if (message.unauthenticated !== undefined) {\n      writer.uint32(24).bool(message.unauthenticated);\n    }\n    if (message.token !== undefined) {\n      writer.uint32(34).string(message.token);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Subject {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseSubject();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.scope = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.unauthenticated = reader.bool();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.token = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Subject {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      scope: isSet(object.scope) ? globalThis.String(object.scope) : undefined,\n      unauthenticated: isSet(object.unauthenticated) ? globalThis.Boolean(object.unauthenticated) : undefined,\n      token: isSet(object.token) ? globalThis.String(object.token) : undefined,\n    };\n  },\n\n  toJSON(message: Subject): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.scope !== undefined) {\n      obj.scope = message.scope;\n    }\n    if (message.unauthenticated !== undefined) {\n      obj.unauthenticated = message.unauthenticated;\n    }\n    if (message.token !== undefined) {\n      obj.token = message.token;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Subject>): Subject {\n    return Subject.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Subject>): Subject {\n    const message = createBaseSubject();\n    message.id = object.id ?? undefined;\n    message.scope = object.scope ?? undefined;\n    message.unauthenticated = object.unauthenticated ?? undefined;\n    message.token = object.token ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseTokens(): Tokens {\n  return {};\n}\n\nexport const Tokens: MessageFns<Tokens> = {\n  encode(message: Tokens, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.name !== undefined) {\n      writer.uint32(10).string(message.name);\n    }\n    if (message.expiresIn !== undefined) {\n      Timestamp.encode(toTimestamp(message.expiresIn), writer.uint32(18).fork()).join();\n    }\n    if (message.token !== undefined) {\n      writer.uint32(26).string(message.token);\n    }\n    if (message.scopes !== undefined && message.scopes.length !== 0) {\n      for (const v of message.scopes) {\n        writer.uint32(34).string(v!);\n      }\n    }\n    if (message.type !== undefined) {\n      writer.uint32(42).string(message.type);\n    }\n    if (message.interactive !== undefined) {\n      writer.uint32(48).bool(message.interactive);\n    }\n    if (message.lastLogin !== undefined) {\n      Timestamp.encode(toTimestamp(message.lastLogin), writer.uint32(58).fork()).join();\n    }\n    if (message.clientId !== undefined) {\n      writer.uint32(66).string(message.clientId);\n    }\n    if (message.impersonatedBy !== undefined) {\n      writer.uint32(74).string(message.impersonatedBy);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Tokens {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseTokens();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.expiresIn = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.token = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          if (message.scopes === undefined) {\n            message.scopes = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.scopes!.push(el);\n          }\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.type = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 48) {\n            break;\n          }\n\n          message.interactive = reader.bool();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.lastLogin = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.clientId = reader.string();\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.impersonatedBy = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Tokens {\n    return {\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      expiresIn: isSet(object.expiresIn) ? fromJsonTimestamp(object.expiresIn) : undefined,\n      token: isSet(object.token) ? globalThis.String(object.token) : undefined,\n      scopes: globalThis.Array.isArray(object?.scopes)\n        ? object.scopes.map((e: any) => globalThis.String(e))\n        : undefined,\n      type: isSet(object.type) ? globalThis.String(object.type) : undefined,\n      interactive: isSet(object.interactive) ? globalThis.Boolean(object.interactive) : undefined,\n      lastLogin: isSet(object.lastLogin) ? fromJsonTimestamp(object.lastLogin) : undefined,\n      clientId: isSet(object.clientId) ? globalThis.String(object.clientId) : undefined,\n      impersonatedBy: isSet(object.impersonatedBy) ? globalThis.String(object.impersonatedBy) : undefined,\n    };\n  },\n\n  toJSON(message: Tokens): unknown {\n    const obj: any = {};\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.expiresIn !== undefined) {\n      obj.expiresIn = message.expiresIn.toISOString();\n    }\n    if (message.token !== undefined) {\n      obj.token = message.token;\n    }\n    if (message.scopes?.length) {\n      obj.scopes = message.scopes;\n    }\n    if (message.type !== undefined) {\n      obj.type = message.type;\n    }\n    if (message.interactive !== undefined) {\n      obj.interactive = message.interactive;\n    }\n    if (message.lastLogin !== undefined) {\n      obj.lastLogin = message.lastLogin.toISOString();\n    }\n    if (message.clientId !== undefined) {\n      obj.clientId = message.clientId;\n    }\n    if (message.impersonatedBy !== undefined) {\n      obj.impersonatedBy = message.impersonatedBy;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Tokens>): Tokens {\n    return Tokens.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Tokens>): Tokens {\n    const message = createBaseTokens();\n    message.name = object.name ?? undefined;\n    message.expiresIn = object.expiresIn ?? undefined;\n    message.token = object.token ?? undefined;\n    message.scopes = object.scopes?.map((e) => e) || undefined;\n    message.type = object.type ?? undefined;\n    message.interactive = object.interactive ?? undefined;\n    message.lastLogin = object.lastLogin ?? undefined;\n    message.clientId = object.clientId ?? undefined;\n    message.impersonatedBy = object.impersonatedBy ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseHierarchicalScope(): HierarchicalScope {\n  return {};\n}\n\nexport const HierarchicalScope: MessageFns<HierarchicalScope> = {\n  encode(message: HierarchicalScope, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.children !== undefined && message.children.length !== 0) {\n      for (const v of message.children) {\n        HierarchicalScope.encode(v!, writer.uint32(18).fork()).join();\n      }\n    }\n    if (message.role !== undefined) {\n      writer.uint32(26).string(message.role);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): HierarchicalScope {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseHierarchicalScope();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          if (message.children === undefined) {\n            message.children = [];\n          }\n          const el = HierarchicalScope.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.children!.push(el);\n          }\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.role = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): HierarchicalScope {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      children: globalThis.Array.isArray(object?.children)\n        ? object.children.map((e: any) => HierarchicalScope.fromJSON(e))\n        : undefined,\n      role: isSet(object.role) ? globalThis.String(object.role) : undefined,\n    };\n  },\n\n  toJSON(message: HierarchicalScope): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.children?.length) {\n      obj.children = message.children.map((e) => HierarchicalScope.toJSON(e));\n    }\n    if (message.role !== undefined) {\n      obj.role = message.role;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<HierarchicalScope>): HierarchicalScope {\n    return HierarchicalScope.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<HierarchicalScope>): HierarchicalScope {\n    const message = createBaseHierarchicalScope();\n    message.id = object.id ?? undefined;\n    message.children = object.children?.map((e) => HierarchicalScope.fromPartial(e)) || undefined;\n    message.role = object.role ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseRoleAssociation(): RoleAssociation {\n  return {};\n}\n\nexport const RoleAssociation: MessageFns<RoleAssociation> = {\n  encode(message: RoleAssociation, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.role !== undefined) {\n      writer.uint32(10).string(message.role);\n    }\n    if (message.attributes !== undefined && message.attributes.length !== 0) {\n      for (const v of message.attributes) {\n        Attribute.encode(v!, writer.uint32(18).fork()).join();\n      }\n    }\n    if (message.id !== undefined) {\n      writer.uint32(26).string(message.id);\n    }\n    if (message.created !== undefined) {\n      Timestamp.encode(toTimestamp(message.created), writer.uint32(34).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): RoleAssociation {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseRoleAssociation();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.role = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          if (message.attributes === undefined) {\n            message.attributes = [];\n          }\n          const el = Attribute.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.attributes!.push(el);\n          }\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.created = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): RoleAssociation {\n    return {\n      role: isSet(object.role) ? globalThis.String(object.role) : undefined,\n      attributes: globalThis.Array.isArray(object?.attributes)\n        ? object.attributes.map((e: any) => Attribute.fromJSON(e))\n        : undefined,\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      created: isSet(object.created) ? fromJsonTimestamp(object.created) : undefined,\n    };\n  },\n\n  toJSON(message: RoleAssociation): unknown {\n    const obj: any = {};\n    if (message.role !== undefined) {\n      obj.role = message.role;\n    }\n    if (message.attributes?.length) {\n      obj.attributes = message.attributes.map((e) => Attribute.toJSON(e));\n    }\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.created !== undefined) {\n      obj.created = message.created.toISOString();\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<RoleAssociation>): RoleAssociation {\n    return RoleAssociation.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<RoleAssociation>): RoleAssociation {\n    const message = createBaseRoleAssociation();\n    message.role = object.role ?? undefined;\n    message.attributes = object.attributes?.map((e) => Attribute.fromPartial(e)) || undefined;\n    message.id = object.id ?? undefined;\n    message.created = object.created ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseHierarchicalScopesRequest(): HierarchicalScopesRequest {\n  return {};\n}\n\nexport const HierarchicalScopesRequest: MessageFns<HierarchicalScopesRequest> = {\n  encode(message: HierarchicalScopesRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.token !== undefined) {\n      writer.uint32(10).string(message.token);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): HierarchicalScopesRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseHierarchicalScopesRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.token = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): HierarchicalScopesRequest {\n    return { token: isSet(object.token) ? globalThis.String(object.token) : undefined };\n  },\n\n  toJSON(message: HierarchicalScopesRequest): unknown {\n    const obj: any = {};\n    if (message.token !== undefined) {\n      obj.token = message.token;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<HierarchicalScopesRequest>): HierarchicalScopesRequest {\n    return HierarchicalScopesRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<HierarchicalScopesRequest>): HierarchicalScopesRequest {\n    const message = createBaseHierarchicalScopesRequest();\n    message.token = object.token ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseHierarchicalScopesResponse(): HierarchicalScopesResponse {\n  return {};\n}\n\nexport const HierarchicalScopesResponse: MessageFns<HierarchicalScopesResponse> = {\n  encode(message: HierarchicalScopesResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.subjectId !== undefined) {\n      writer.uint32(10).string(message.subjectId);\n    }\n    if (message.hierarchicalScopes !== undefined && message.hierarchicalScopes.length !== 0) {\n      for (const v of message.hierarchicalScopes) {\n        HierarchicalScope.encode(v!, writer.uint32(18).fork()).join();\n      }\n    }\n    if (message.token !== undefined) {\n      writer.uint32(26).string(message.token);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): HierarchicalScopesResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseHierarchicalScopesResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.subjectId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          if (message.hierarchicalScopes === undefined) {\n            message.hierarchicalScopes = [];\n          }\n          const el = HierarchicalScope.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.hierarchicalScopes!.push(el);\n          }\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.token = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): HierarchicalScopesResponse {\n    return {\n      subjectId: isSet(object.subjectId) ? globalThis.String(object.subjectId) : undefined,\n      hierarchicalScopes: globalThis.Array.isArray(object?.hierarchicalScopes)\n        ? object.hierarchicalScopes.map((e: any) => HierarchicalScope.fromJSON(e))\n        : undefined,\n      token: isSet(object.token) ? globalThis.String(object.token) : undefined,\n    };\n  },\n\n  toJSON(message: HierarchicalScopesResponse): unknown {\n    const obj: any = {};\n    if (message.subjectId !== undefined) {\n      obj.subjectId = message.subjectId;\n    }\n    if (message.hierarchicalScopes?.length) {\n      obj.hierarchicalScopes = message.hierarchicalScopes.map((e) => HierarchicalScope.toJSON(e));\n    }\n    if (message.token !== undefined) {\n      obj.token = message.token;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<HierarchicalScopesResponse>): HierarchicalScopesResponse {\n    return HierarchicalScopesResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<HierarchicalScopesResponse>): HierarchicalScopesResponse {\n    const message = createBaseHierarchicalScopesResponse();\n    message.subjectId = object.subjectId ?? undefined;\n    message.hierarchicalScopes = object.hierarchicalScopes?.map((e) => HierarchicalScope.fromPartial(e)) || undefined;\n    message.token = object.token ?? undefined;\n    return message;\n  },\n};\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/auth.proto\",\n    \"package\": \"io.restorecommerce.auth\",\n    \"dependency\": [\"io/restorecommerce/attribute.proto\", \"google/protobuf/timestamp.proto\"],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Subject\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"scope\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"scope\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"unauthenticated\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"unauthenticated\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"token\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"token\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }, { \"name\": \"_scope\", \"options\": undefined }, {\n        \"name\": \"_unauthenticated\",\n        \"options\": undefined,\n      }, { \"name\": \"_token\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Tokens\",\n      \"field\": [{\n        \"name\": \"name\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"expires_in\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Timestamp\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"expiresIn\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"token\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"token\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"scopes\",\n        \"number\": 4,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"scopes\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"type\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"type\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"interactive\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"interactive\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"last_login\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Timestamp\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"lastLogin\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"client_id\",\n        \"number\": 8,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"clientId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"impersonated_by\",\n        \"number\": 9,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 7,\n        \"jsonName\": \"impersonatedBy\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_name\", \"options\": undefined },\n        { \"name\": \"_expires_in\", \"options\": undefined },\n        { \"name\": \"_token\", \"options\": undefined },\n        { \"name\": \"_type\", \"options\": undefined },\n        { \"name\": \"_interactive\", \"options\": undefined },\n        { \"name\": \"_last_login\", \"options\": undefined },\n        { \"name\": \"_client_id\", \"options\": undefined },\n        { \"name\": \"_impersonated_by\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"HierarchicalScope\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"children\",\n        \"number\": 2,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.HierarchicalScope\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"children\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"role\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"role\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }, { \"name\": \"_role\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"RoleAssociation\",\n      \"field\": [{\n        \"name\": \"role\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"role\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"attributes\",\n        \"number\": 2,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.attribute.Attribute\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"attributes\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"id\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"created\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Timestamp\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"created\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_role\", \"options\": undefined }, { \"name\": \"_id\", \"options\": undefined }, {\n        \"name\": \"_created\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"HierarchicalScopesRequest\",\n      \"field\": [{\n        \"name\": \"token\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"token\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_token\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"HierarchicalScopesResponse\",\n      \"field\": [{\n        \"name\": \"subject_id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"subjectId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"hierarchical_scopes\",\n        \"number\": 2,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.HierarchicalScope\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"hierarchicalScopes\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"token\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"token\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_subject_id\", \"options\": undefined }, { \"name\": \"_token\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [4, 0],\n        \"span\": [9, 0, 14, 1],\n        \"leadingComments\": \"*\\n Subject of creating User\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 0, 2, 0],\n        \"span\": [10, 2, 25],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" user id\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 0, 2, 1],\n        \"span\": [11, 2, 28],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" target scope (ID of the target scoping entity)\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 0, 2, 2],\n        \"span\": [12, 2, 36],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" for unauthenticated context\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 1, 2, 0],\n        \"span\": [17, 2, 27],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" token name\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 1, 2, 1],\n        \"span\": [18, 2, 52],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" expiration date for token\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 1, 2, 2],\n        \"span\": [19, 2, 28],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" token\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 1, 2, 3],\n        \"span\": [20, 2, 29],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" identifier for role_association\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 1, 2, 4],\n        \"span\": [21, 2, 27],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" type of token eg: access_token, refresh_token\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 1, 2, 8],\n        \"span\": [25, 2, 38],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" ID of the impersonator\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 2, 2, 0],\n        \"span\": [29, 2, 25],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" root node\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 2, 2, 1],\n        \"span\": [30, 2, 42],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" children nodes\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 2, 2, 2],\n        \"span\": [31, 2, 27],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" role identifier associated with root node scope\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 3, 2, 0],\n        \"span\": [35, 2, 27],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" role ID\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 3, 2, 1],\n        \"span\": [36, 2, 65],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" useful attributes for RBAC/ABAC like organizational scope\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 3, 2, 2],\n        \"span\": [37, 2, 25],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" identifier for role_association\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 3, 2, 3],\n        \"span\": [38, 2, 49],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" timestamp when the role was created\\n\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.auth.Subject\": Subject,\n    \".io.restorecommerce.auth.Tokens\": Tokens,\n    \".io.restorecommerce.auth.HierarchicalScope\": HierarchicalScope,\n    \".io.restorecommerce.auth.RoleAssociation\": RoleAssociation,\n    \".io.restorecommerce.auth.HierarchicalScopesRequest\": HierarchicalScopesRequest,\n    \".io.restorecommerce.auth.HierarchicalScopesResponse\": HierarchicalScopesResponse,\n  },\n  dependencies: [protoMetadata1, protoMetadata2],\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction toTimestamp(date: Date): Timestamp {\n  const seconds = Math.trunc(date.getTime() / 1_000);\n  const nanos = (date.getTime() % 1_000) * 1_000_000;\n  return { seconds, nanos };\n}\n\nfunction fromTimestamp(t: Timestamp): Date {\n  let millis = (t.seconds || 0) * 1_000;\n  millis += (t.nanos || 0) / 1_000_000;\n  return new globalThis.Date(millis);\n}\n\nfunction fromJsonTimestamp(o: any): Date {\n  if (o instanceof globalThis.Date) {\n    return o;\n  } else if (typeof o === \"string\") {\n    return new globalThis.Date(o);\n  } else {\n    return fromTimestamp(Timestamp.fromJSON(o));\n  }\n}\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/image.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\n\nexport const protobufPackage = \"io.restorecommerce.image\";\n\nexport interface Image {\n  id?: string | undefined;\n  caption?: string | undefined;\n  filename?: string | undefined;\n  contentType?: string | undefined;\n  url?: string | undefined;\n  base64?: string | undefined;\n  blob?: Buffer | undefined;\n  width?: number | undefined;\n  height?: number | undefined;\n  length?: number | undefined;\n  tags?: string[] | undefined;\n  index?: number | undefined;\n}\n\nexport interface ImageList {\n  items?: Image[] | undefined;\n  totalCount?: number | undefined;\n}\n\nexport interface Deleted {\n  id?: string | undefined;\n}\n\nfunction createBaseImage(): Image {\n  return {};\n}\n\nexport const Image: MessageFns<Image> = {\n  encode(message: Image, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.caption !== undefined) {\n      writer.uint32(18).string(message.caption);\n    }\n    if (message.filename !== undefined) {\n      writer.uint32(26).string(message.filename);\n    }\n    if (message.contentType !== undefined) {\n      writer.uint32(34).string(message.contentType);\n    }\n    if (message.url !== undefined) {\n      writer.uint32(42).string(message.url);\n    }\n    if (message.base64 !== undefined) {\n      writer.uint32(50).string(message.base64);\n    }\n    if (message.blob !== undefined) {\n      writer.uint32(58).bytes(message.blob);\n    }\n    if (message.width !== undefined) {\n      writer.uint32(65).double(message.width);\n    }\n    if (message.height !== undefined) {\n      writer.uint32(73).double(message.height);\n    }\n    if (message.length !== undefined) {\n      writer.uint32(81).double(message.length);\n    }\n    if (message.tags !== undefined && message.tags.length !== 0) {\n      for (const v of message.tags) {\n        writer.uint32(90).string(v!);\n      }\n    }\n    if (message.index !== undefined) {\n      writer.uint32(96).int64(message.index);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Image {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseImage();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.caption = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.filename = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.contentType = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.url = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.base64 = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.blob = Buffer.from(reader.bytes());\n          continue;\n        }\n        case 8: {\n          if (tag !== 65) {\n            break;\n          }\n\n          message.width = reader.double();\n          continue;\n        }\n        case 9: {\n          if (tag !== 73) {\n            break;\n          }\n\n          message.height = reader.double();\n          continue;\n        }\n        case 10: {\n          if (tag !== 81) {\n            break;\n          }\n\n          message.length = reader.double();\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          if (message.tags === undefined) {\n            message.tags = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.tags!.push(el);\n          }\n          continue;\n        }\n        case 12: {\n          if (tag !== 96) {\n            break;\n          }\n\n          message.index = longToNumber(reader.int64());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Image {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      caption: isSet(object.caption) ? globalThis.String(object.caption) : undefined,\n      filename: isSet(object.filename) ? globalThis.String(object.filename) : undefined,\n      contentType: isSet(object.contentType) ? globalThis.String(object.contentType) : undefined,\n      url: isSet(object.url) ? globalThis.String(object.url) : undefined,\n      base64: isSet(object.base64) ? globalThis.String(object.base64) : undefined,\n      blob: isSet(object.blob) ? Buffer.from(bytesFromBase64(object.blob)) : undefined,\n      width: isSet(object.width) ? globalThis.Number(object.width) : undefined,\n      height: isSet(object.height) ? globalThis.Number(object.height) : undefined,\n      length: isSet(object.length) ? globalThis.Number(object.length) : undefined,\n      tags: globalThis.Array.isArray(object?.tags) ? object.tags.map((e: any) => globalThis.String(e)) : undefined,\n      index: isSet(object.index) ? globalThis.Number(object.index) : undefined,\n    };\n  },\n\n  toJSON(message: Image): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.caption !== undefined) {\n      obj.caption = message.caption;\n    }\n    if (message.filename !== undefined) {\n      obj.filename = message.filename;\n    }\n    if (message.contentType !== undefined) {\n      obj.contentType = message.contentType;\n    }\n    if (message.url !== undefined) {\n      obj.url = message.url;\n    }\n    if (message.base64 !== undefined) {\n      obj.base64 = message.base64;\n    }\n    if (message.blob !== undefined) {\n      obj.blob = base64FromBytes(message.blob);\n    }\n    if (message.width !== undefined) {\n      obj.width = message.width;\n    }\n    if (message.height !== undefined) {\n      obj.height = message.height;\n    }\n    if (message.length !== undefined) {\n      obj.length = message.length;\n    }\n    if (message.tags?.length) {\n      obj.tags = message.tags;\n    }\n    if (message.index !== undefined) {\n      obj.index = Math.round(message.index);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Image>): Image {\n    return Image.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Image>): Image {\n    const message = createBaseImage();\n    message.id = object.id ?? undefined;\n    message.caption = object.caption ?? undefined;\n    message.filename = object.filename ?? undefined;\n    message.contentType = object.contentType ?? undefined;\n    message.url = object.url ?? undefined;\n    message.base64 = object.base64 ?? undefined;\n    message.blob = object.blob ?? undefined;\n    message.width = object.width ?? undefined;\n    message.height = object.height ?? undefined;\n    message.length = object.length ?? undefined;\n    message.tags = object.tags?.map((e) => e) || undefined;\n    message.index = object.index ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseImageList(): ImageList {\n  return {};\n}\n\nexport const ImageList: MessageFns<ImageList> = {\n  encode(message: ImageList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        Image.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ImageList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseImageList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = Image.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ImageList {\n    return {\n      items: globalThis.Array.isArray(object?.items) ? object.items.map((e: any) => Image.fromJSON(e)) : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n    };\n  },\n\n  toJSON(message: ImageList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => Image.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ImageList>): ImageList {\n    return ImageList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ImageList>): ImageList {\n    const message = createBaseImageList();\n    message.items = object.items?.map((e) => Image.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseDeleted(): Deleted {\n  return {};\n}\n\nexport const Deleted: MessageFns<Deleted> = {\n  encode(message: Deleted, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Deleted {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseDeleted();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Deleted {\n    return { id: isSet(object.id) ? globalThis.String(object.id) : undefined };\n  },\n\n  toJSON(message: Deleted): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Deleted>): Deleted {\n    return Deleted.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Deleted>): Deleted {\n    const message = createBaseDeleted();\n    message.id = object.id ?? undefined;\n    return message;\n  },\n};\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/image.proto\",\n    \"package\": \"io.restorecommerce.image\",\n    \"dependency\": [],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Image\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"caption\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"caption\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"filename\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"filename\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"content_type\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"contentType\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"url\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"url\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"base64\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"base64\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"blob\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 12,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"blob\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"width\",\n        \"number\": 8,\n        \"label\": 1,\n        \"type\": 1,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"width\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"height\",\n        \"number\": 9,\n        \"label\": 1,\n        \"type\": 1,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"height\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"length\",\n        \"number\": 10,\n        \"label\": 1,\n        \"type\": 1,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 7,\n        \"jsonName\": \"length\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"tags\",\n        \"number\": 11,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"tags\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"index\",\n        \"number\": 12,\n        \"label\": 1,\n        \"type\": 3,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 8,\n        \"jsonName\": \"index\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"type\", \"options\": undefined },\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_caption\", \"options\": undefined },\n        { \"name\": \"_filename\", \"options\": undefined },\n        { \"name\": \"_content_type\", \"options\": undefined },\n        { \"name\": \"_width\", \"options\": undefined },\n        { \"name\": \"_height\", \"options\": undefined },\n        { \"name\": \"_length\", \"options\": undefined },\n        { \"name\": \"_index\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ImageList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.image.Image\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Deleted\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": { \"location\": [] },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.image.Image\": Image,\n    \".io.restorecommerce.image.ImageList\": ImageList,\n    \".io.restorecommerce.image.Deleted\": Deleted,\n  },\n  dependencies: [],\n};\n\nfunction bytesFromBase64(b64: string): Uint8Array {\n  return Uint8Array.from(globalThis.Buffer.from(b64, \"base64\"));\n}\n\nfunction base64FromBytes(arr: Uint8Array): string {\n  return globalThis.Buffer.from(arr).toString(\"base64\");\n}\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction longToNumber(int64: { toString(): string }): number {\n  const num = globalThis.Number(int64.toString());\n  if (num > globalThis.Number.MAX_SAFE_INTEGER) {\n    throw new globalThis.Error(\"Value is larger than Number.MAX_SAFE_INTEGER\");\n  }\n  if (num < globalThis.Number.MIN_SAFE_INTEGER) {\n    throw new globalThis.Error(\"Value is smaller than Number.MIN_SAFE_INTEGER\");\n  }\n  return num;\n}\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/meta.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { protoMetadata as protoMetadata2, Timestamp } from \"../../google/protobuf/timestamp\";\nimport { Attribute, protoMetadata as protoMetadata1 } from \"./attribute\";\n\nexport const protobufPackage = \"io.restorecommerce.meta\";\n\nexport interface Meta {\n  /** timestamp */\n  created?:\n    | Date\n    | undefined;\n  /** timestamp */\n  modified?:\n    | Date\n    | undefined;\n  /** ID from last User who modified resource */\n  modifiedBy?: string | undefined;\n  owners?: Attribute[] | undefined;\n  acls?:\n    | Attribute[]\n    | undefined;\n  /** ID from User who created resource */\n  createdBy?: string | undefined;\n}\n\nfunction createBaseMeta(): Meta {\n  return {};\n}\n\nexport const Meta: MessageFns<Meta> = {\n  encode(message: Meta, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.created !== undefined) {\n      Timestamp.encode(toTimestamp(message.created), writer.uint32(10).fork()).join();\n    }\n    if (message.modified !== undefined) {\n      Timestamp.encode(toTimestamp(message.modified), writer.uint32(18).fork()).join();\n    }\n    if (message.modifiedBy !== undefined) {\n      writer.uint32(26).string(message.modifiedBy);\n    }\n    if (message.owners !== undefined && message.owners.length !== 0) {\n      for (const v of message.owners) {\n        Attribute.encode(v!, writer.uint32(34).fork()).join();\n      }\n    }\n    if (message.acls !== undefined && message.acls.length !== 0) {\n      for (const v of message.acls) {\n        Attribute.encode(v!, writer.uint32(42).fork()).join();\n      }\n    }\n    if (message.createdBy !== undefined) {\n      writer.uint32(50).string(message.createdBy);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Meta {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseMeta();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.created = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.modified = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.modifiedBy = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          if (message.owners === undefined) {\n            message.owners = [];\n          }\n          const el = Attribute.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.owners!.push(el);\n          }\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          if (message.acls === undefined) {\n            message.acls = [];\n          }\n          const el = Attribute.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.acls!.push(el);\n          }\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.createdBy = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Meta {\n    return {\n      created: isSet(object.created) ? fromJsonTimestamp(object.created) : undefined,\n      modified: isSet(object.modified) ? fromJsonTimestamp(object.modified) : undefined,\n      modifiedBy: isSet(object.modifiedBy) ? globalThis.String(object.modifiedBy) : undefined,\n      owners: globalThis.Array.isArray(object?.owners)\n        ? object.owners.map((e: any) => Attribute.fromJSON(e))\n        : undefined,\n      acls: globalThis.Array.isArray(object?.acls) ? object.acls.map((e: any) => Attribute.fromJSON(e)) : undefined,\n      createdBy: isSet(object.createdBy) ? globalThis.String(object.createdBy) : undefined,\n    };\n  },\n\n  toJSON(message: Meta): unknown {\n    const obj: any = {};\n    if (message.created !== undefined) {\n      obj.created = message.created.toISOString();\n    }\n    if (message.modified !== undefined) {\n      obj.modified = message.modified.toISOString();\n    }\n    if (message.modifiedBy !== undefined) {\n      obj.modifiedBy = message.modifiedBy;\n    }\n    if (message.owners?.length) {\n      obj.owners = message.owners.map((e) => Attribute.toJSON(e));\n    }\n    if (message.acls?.length) {\n      obj.acls = message.acls.map((e) => Attribute.toJSON(e));\n    }\n    if (message.createdBy !== undefined) {\n      obj.createdBy = message.createdBy;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Meta>): Meta {\n    return Meta.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Meta>): Meta {\n    const message = createBaseMeta();\n    message.created = object.created ?? undefined;\n    message.modified = object.modified ?? undefined;\n    message.modifiedBy = object.modifiedBy ?? undefined;\n    message.owners = object.owners?.map((e) => Attribute.fromPartial(e)) || undefined;\n    message.acls = object.acls?.map((e) => Attribute.fromPartial(e)) || undefined;\n    message.createdBy = object.createdBy ?? undefined;\n    return message;\n  },\n};\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/meta.proto\",\n    \"package\": \"io.restorecommerce.meta\",\n    \"dependency\": [\"io/restorecommerce/attribute.proto\", \"google/protobuf/timestamp.proto\"],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Meta\",\n      \"field\": [{\n        \"name\": \"created\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Timestamp\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"created\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"modified\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Timestamp\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"modified\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"modified_by\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"modifiedBy\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"owners\",\n        \"number\": 4,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.attribute.Attribute\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"owners\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"acls\",\n        \"number\": 5,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.attribute.Attribute\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"acls\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"created_by\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"createdBy\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_created\", \"options\": undefined }, { \"name\": \"_modified\", \"options\": undefined }, {\n        \"name\": \"_modified_by\",\n        \"options\": undefined,\n      }, { \"name\": \"_created_by\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [4, 0, 2, 0],\n        \"span\": [10, 4, 51],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" timestamp\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 0, 2, 1],\n        \"span\": [11, 4, 52],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" timestamp\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 0, 2, 2],\n        \"span\": [12, 4, 36],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" ID from last User who modified resource\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 0, 2, 5],\n        \"span\": [15, 4, 35],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" ID from User who created resource\\n\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: { \".io.restorecommerce.meta.Meta\": Meta },\n  dependencies: [protoMetadata1, protoMetadata2],\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction toTimestamp(date: Date): Timestamp {\n  const seconds = Math.trunc(date.getTime() / 1_000);\n  const nanos = (date.getTime() % 1_000) * 1_000_000;\n  return { seconds, nanos };\n}\n\nfunction fromTimestamp(t: Timestamp): Date {\n  let millis = (t.seconds || 0) * 1_000;\n  millis += (t.nanos || 0) / 1_000_000;\n  return new globalThis.Date(millis);\n}\n\nfunction fromJsonTimestamp(o: any): Date {\n  if (o instanceof globalThis.Date) {\n    return o;\n  } else if (typeof o === \"string\") {\n    return new globalThis.Date(o);\n  } else {\n    return fromTimestamp(Timestamp.fromJSON(o));\n  }\n}\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: google/protobuf/descriptor.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\n\nexport const protobufPackage = \"google.protobuf\";\n\n/**\n * The protocol compiler can output a FileDescriptorSet containing the .proto\n * files it parses.\n */\nexport interface FileDescriptorSet {\n  file?: FileDescriptorProto[] | undefined;\n}\n\n/** / Describes a complete .proto file. */\nexport interface FileDescriptorProto {\n  /** / file name, relative to root of source tree */\n  name?:\n    | string\n    | undefined;\n  /** / e.g. \"foo\", \"foo.bar\", etc. */\n  package?:\n    | string\n    | undefined;\n  /** / Names of files imported by this file. */\n  dependency?:\n    | string[]\n    | undefined;\n  /** / Indexes of the public imported files in the dependency list above. */\n  publicDependency?:\n    | number[]\n    | undefined;\n  /**\n   * / Indexes of the weak imported files in the dependency list.\n   * / For Google-internal migration only. Do not use.\n   */\n  weakDependency?:\n    | number[]\n    | undefined;\n  /** / All top-level definitions in this file. */\n  messageType?: DescriptorProto[] | undefined;\n  enumType?: EnumDescriptorProto[] | undefined;\n  service?: ServiceDescriptorProto[] | undefined;\n  extension?: FieldDescriptorProto[] | undefined;\n  options?:\n    | FileOptions\n    | undefined;\n  /**\n   * / This field contains optional information about the original source code.\n   * / You may safely remove this entire field without harming runtime\n   * / functionality of the descriptors -- the information is needed only by\n   * / development tools.\n   */\n  sourceCodeInfo?:\n    | SourceCodeInfo\n    | undefined;\n  /**\n   * / The syntax of the proto file.\n   * / The supported values are \"proto2\" and \"proto3\".\n   */\n  syntax?: string | undefined;\n}\n\n/** / Describes a message type. */\nexport interface DescriptorProto {\n  name?: string | undefined;\n  field?: FieldDescriptorProto[] | undefined;\n  extension?: FieldDescriptorProto[] | undefined;\n  nestedType?: DescriptorProto[] | undefined;\n  enumType?: EnumDescriptorProto[] | undefined;\n  extensionRange?: DescriptorProto_ExtensionRange[] | undefined;\n  oneofDecl?: OneofDescriptorProto[] | undefined;\n  options?: MessageOptions | undefined;\n  reservedRange?:\n    | DescriptorProto_ReservedRange[]\n    | undefined;\n  /**\n   * / Reserved field names, which may not be used by fields in the same message.\n   * / A given name may only be reserved once.\n   */\n  reservedName?: string[] | undefined;\n}\n\nexport interface DescriptorProto_ExtensionRange {\n  start?: number | undefined;\n  end?: number | undefined;\n}\n\n/**\n * / Range of reserved tag numbers. Reserved tag numbers may not be used by\n * / fields or extension ranges in the same message. Reserved ranges may\n * / not overlap.\n */\nexport interface DescriptorProto_ReservedRange {\n  /** / Inclusive. */\n  start?:\n    | number\n    | undefined;\n  /** / Exclusive. */\n  end?: number | undefined;\n}\n\n/** / Describes a field within a message. */\nexport interface FieldDescriptorProto {\n  name?: string | undefined;\n  number?: number | undefined;\n  label?:\n    | FieldDescriptorProto_Label\n    | undefined;\n  /**\n   * / If type_name is set, this need not be set.  If both this and type_name\n   * / are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.\n   */\n  type?:\n    | FieldDescriptorProto_Type\n    | undefined;\n  /**\n   * / For message and enum types, this is the name of the type.  If the name\n   * / starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping\n   * / rules are used to find the type (i.e. first the nested types within this\n   * / message are searched, then within the parent, on up to the root\n   * / namespace).\n   */\n  typeName?:\n    | string\n    | undefined;\n  /**\n   * / For extensions, this is the name of the type being extended.  It is\n   * / resolved in the same manner as type_name.\n   */\n  extendee?:\n    | string\n    | undefined;\n  /**\n   * / For numeric types, contains the original text representation of the value.\n   * / For booleans, \"true\" or \"false\".\n   * / For strings, contains the default text contents (not escaped in any way).\n   * / For bytes, contains the C escaped value.  All bytes >= 128 are escaped.\n   * / TODO(kenton):  Base-64 encode?\n   */\n  defaultValue?:\n    | string\n    | undefined;\n  /**\n   * / If set, gives the index of a oneof in the containing type's oneof_decl\n   * / list.  This field is a member of that oneof.\n   */\n  oneofIndex?:\n    | number\n    | undefined;\n  /**\n   * / JSON name of this field. The value is set by protocol compiler. If the\n   * / user has set a \"json_name\" option on this field, that option's value\n   * / will be used. Otherwise, it's deduced from the field's name by converting\n   * / it to camelCase.\n   */\n  jsonName?: string | undefined;\n  options?: FieldOptions | undefined;\n}\n\nexport enum FieldDescriptorProto_Type {\n  /**\n   * TYPE_DOUBLE - / 0 is reserved for errors.\n   * / Order is weird for historical reasons.\n   */\n  TYPE_DOUBLE = \"TYPE_DOUBLE\",\n  TYPE_FLOAT = \"TYPE_FLOAT\",\n  /**\n   * TYPE_INT64 - / Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if\n   * / negative values are likely.\n   */\n  TYPE_INT64 = \"TYPE_INT64\",\n  TYPE_UINT64 = \"TYPE_UINT64\",\n  /**\n   * TYPE_INT32 - / Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if\n   * / negative values are likely.\n   */\n  TYPE_INT32 = \"TYPE_INT32\",\n  TYPE_FIXED64 = \"TYPE_FIXED64\",\n  TYPE_FIXED32 = \"TYPE_FIXED32\",\n  TYPE_BOOL = \"TYPE_BOOL\",\n  TYPE_STRING = \"TYPE_STRING\",\n  /** TYPE_GROUP - / Tag-delimited aggregate. */\n  TYPE_GROUP = \"TYPE_GROUP\",\n  /** TYPE_MESSAGE - / Length-delimited aggregate. */\n  TYPE_MESSAGE = \"TYPE_MESSAGE\",\n  /** TYPE_BYTES - / New in version 2. */\n  TYPE_BYTES = \"TYPE_BYTES\",\n  TYPE_UINT32 = \"TYPE_UINT32\",\n  TYPE_ENUM = \"TYPE_ENUM\",\n  TYPE_SFIXED32 = \"TYPE_SFIXED32\",\n  TYPE_SFIXED64 = \"TYPE_SFIXED64\",\n  /** TYPE_SINT32 - / Uses ZigZag encoding. */\n  TYPE_SINT32 = \"TYPE_SINT32\",\n  /** TYPE_SINT64 - / Uses ZigZag encoding. */\n  TYPE_SINT64 = \"TYPE_SINT64\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function fieldDescriptorProto_TypeFromJSON(object: any): FieldDescriptorProto_Type {\n  switch (object) {\n    case 1:\n    case \"TYPE_DOUBLE\":\n      return FieldDescriptorProto_Type.TYPE_DOUBLE;\n    case 2:\n    case \"TYPE_FLOAT\":\n      return FieldDescriptorProto_Type.TYPE_FLOAT;\n    case 3:\n    case \"TYPE_INT64\":\n      return FieldDescriptorProto_Type.TYPE_INT64;\n    case 4:\n    case \"TYPE_UINT64\":\n      return FieldDescriptorProto_Type.TYPE_UINT64;\n    case 5:\n    case \"TYPE_INT32\":\n      return FieldDescriptorProto_Type.TYPE_INT32;\n    case 6:\n    case \"TYPE_FIXED64\":\n      return FieldDescriptorProto_Type.TYPE_FIXED64;\n    case 7:\n    case \"TYPE_FIXED32\":\n      return FieldDescriptorProto_Type.TYPE_FIXED32;\n    case 8:\n    case \"TYPE_BOOL\":\n      return FieldDescriptorProto_Type.TYPE_BOOL;\n    case 9:\n    case \"TYPE_STRING\":\n      return FieldDescriptorProto_Type.TYPE_STRING;\n    case 10:\n    case \"TYPE_GROUP\":\n      return FieldDescriptorProto_Type.TYPE_GROUP;\n    case 11:\n    case \"TYPE_MESSAGE\":\n      return FieldDescriptorProto_Type.TYPE_MESSAGE;\n    case 12:\n    case \"TYPE_BYTES\":\n      return FieldDescriptorProto_Type.TYPE_BYTES;\n    case 13:\n    case \"TYPE_UINT32\":\n      return FieldDescriptorProto_Type.TYPE_UINT32;\n    case 14:\n    case \"TYPE_ENUM\":\n      return FieldDescriptorProto_Type.TYPE_ENUM;\n    case 15:\n    case \"TYPE_SFIXED32\":\n      return FieldDescriptorProto_Type.TYPE_SFIXED32;\n    case 16:\n    case \"TYPE_SFIXED64\":\n      return FieldDescriptorProto_Type.TYPE_SFIXED64;\n    case 17:\n    case \"TYPE_SINT32\":\n      return FieldDescriptorProto_Type.TYPE_SINT32;\n    case 18:\n    case \"TYPE_SINT64\":\n      return FieldDescriptorProto_Type.TYPE_SINT64;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return FieldDescriptorProto_Type.UNRECOGNIZED;\n  }\n}\n\nexport function fieldDescriptorProto_TypeToJSON(object: FieldDescriptorProto_Type): string {\n  switch (object) {\n    case FieldDescriptorProto_Type.TYPE_DOUBLE:\n      return \"TYPE_DOUBLE\";\n    case FieldDescriptorProto_Type.TYPE_FLOAT:\n      return \"TYPE_FLOAT\";\n    case FieldDescriptorProto_Type.TYPE_INT64:\n      return \"TYPE_INT64\";\n    case FieldDescriptorProto_Type.TYPE_UINT64:\n      return \"TYPE_UINT64\";\n    case FieldDescriptorProto_Type.TYPE_INT32:\n      return \"TYPE_INT32\";\n    case FieldDescriptorProto_Type.TYPE_FIXED64:\n      return \"TYPE_FIXED64\";\n    case FieldDescriptorProto_Type.TYPE_FIXED32:\n      return \"TYPE_FIXED32\";\n    case FieldDescriptorProto_Type.TYPE_BOOL:\n      return \"TYPE_BOOL\";\n    case FieldDescriptorProto_Type.TYPE_STRING:\n      return \"TYPE_STRING\";\n    case FieldDescriptorProto_Type.TYPE_GROUP:\n      return \"TYPE_GROUP\";\n    case FieldDescriptorProto_Type.TYPE_MESSAGE:\n      return \"TYPE_MESSAGE\";\n    case FieldDescriptorProto_Type.TYPE_BYTES:\n      return \"TYPE_BYTES\";\n    case FieldDescriptorProto_Type.TYPE_UINT32:\n      return \"TYPE_UINT32\";\n    case FieldDescriptorProto_Type.TYPE_ENUM:\n      return \"TYPE_ENUM\";\n    case FieldDescriptorProto_Type.TYPE_SFIXED32:\n      return \"TYPE_SFIXED32\";\n    case FieldDescriptorProto_Type.TYPE_SFIXED64:\n      return \"TYPE_SFIXED64\";\n    case FieldDescriptorProto_Type.TYPE_SINT32:\n      return \"TYPE_SINT32\";\n    case FieldDescriptorProto_Type.TYPE_SINT64:\n      return \"TYPE_SINT64\";\n    case FieldDescriptorProto_Type.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function fieldDescriptorProto_TypeToNumber(object: FieldDescriptorProto_Type): number {\n  switch (object) {\n    case FieldDescriptorProto_Type.TYPE_DOUBLE:\n      return 1;\n    case FieldDescriptorProto_Type.TYPE_FLOAT:\n      return 2;\n    case FieldDescriptorProto_Type.TYPE_INT64:\n      return 3;\n    case FieldDescriptorProto_Type.TYPE_UINT64:\n      return 4;\n    case FieldDescriptorProto_Type.TYPE_INT32:\n      return 5;\n    case FieldDescriptorProto_Type.TYPE_FIXED64:\n      return 6;\n    case FieldDescriptorProto_Type.TYPE_FIXED32:\n      return 7;\n    case FieldDescriptorProto_Type.TYPE_BOOL:\n      return 8;\n    case FieldDescriptorProto_Type.TYPE_STRING:\n      return 9;\n    case FieldDescriptorProto_Type.TYPE_GROUP:\n      return 10;\n    case FieldDescriptorProto_Type.TYPE_MESSAGE:\n      return 11;\n    case FieldDescriptorProto_Type.TYPE_BYTES:\n      return 12;\n    case FieldDescriptorProto_Type.TYPE_UINT32:\n      return 13;\n    case FieldDescriptorProto_Type.TYPE_ENUM:\n      return 14;\n    case FieldDescriptorProto_Type.TYPE_SFIXED32:\n      return 15;\n    case FieldDescriptorProto_Type.TYPE_SFIXED64:\n      return 16;\n    case FieldDescriptorProto_Type.TYPE_SINT32:\n      return 17;\n    case FieldDescriptorProto_Type.TYPE_SINT64:\n      return 18;\n    case FieldDescriptorProto_Type.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\nexport enum FieldDescriptorProto_Label {\n  /** LABEL_OPTIONAL - / 0 is reserved for errors */\n  LABEL_OPTIONAL = \"LABEL_OPTIONAL\",\n  LABEL_REQUIRED = \"LABEL_REQUIRED\",\n  /** LABEL_REPEATED - / TODO(sanjay): Should we add LABEL_MAP? */\n  LABEL_REPEATED = \"LABEL_REPEATED\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function fieldDescriptorProto_LabelFromJSON(object: any): FieldDescriptorProto_Label {\n  switch (object) {\n    case 1:\n    case \"LABEL_OPTIONAL\":\n      return FieldDescriptorProto_Label.LABEL_OPTIONAL;\n    case 2:\n    case \"LABEL_REQUIRED\":\n      return FieldDescriptorProto_Label.LABEL_REQUIRED;\n    case 3:\n    case \"LABEL_REPEATED\":\n      return FieldDescriptorProto_Label.LABEL_REPEATED;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return FieldDescriptorProto_Label.UNRECOGNIZED;\n  }\n}\n\nexport function fieldDescriptorProto_LabelToJSON(object: FieldDescriptorProto_Label): string {\n  switch (object) {\n    case FieldDescriptorProto_Label.LABEL_OPTIONAL:\n      return \"LABEL_OPTIONAL\";\n    case FieldDescriptorProto_Label.LABEL_REQUIRED:\n      return \"LABEL_REQUIRED\";\n    case FieldDescriptorProto_Label.LABEL_REPEATED:\n      return \"LABEL_REPEATED\";\n    case FieldDescriptorProto_Label.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function fieldDescriptorProto_LabelToNumber(object: FieldDescriptorProto_Label): number {\n  switch (object) {\n    case FieldDescriptorProto_Label.LABEL_OPTIONAL:\n      return 1;\n    case FieldDescriptorProto_Label.LABEL_REQUIRED:\n      return 2;\n    case FieldDescriptorProto_Label.LABEL_REPEATED:\n      return 3;\n    case FieldDescriptorProto_Label.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\n/** / Describes a oneof. */\nexport interface OneofDescriptorProto {\n  name?: string | undefined;\n}\n\n/** / Describes an enum type. */\nexport interface EnumDescriptorProto {\n  name?: string | undefined;\n  value?: EnumValueDescriptorProto[] | undefined;\n  options?: EnumOptions | undefined;\n}\n\n/** / Describes a value within an enum. */\nexport interface EnumValueDescriptorProto {\n  name?: string | undefined;\n  number?: number | undefined;\n  options?: EnumValueOptions | undefined;\n}\n\n/** / Describes a service. */\nexport interface ServiceDescriptorProto {\n  name?: string | undefined;\n  method?: MethodDescriptorProto[] | undefined;\n  options?: ServiceOptions | undefined;\n}\n\n/** / Describes a method of a service. */\nexport interface MethodDescriptorProto {\n  name?:\n    | string\n    | undefined;\n  /**\n   * / Input and output type names.  These are resolved in the same way as\n   * / FieldDescriptorProto.type_name, but must refer to a message type.\n   */\n  inputType?: string | undefined;\n  outputType?: string | undefined;\n  options?:\n    | MethodOptions\n    | undefined;\n  /** / Identifies if client streams multiple client messages */\n  clientStreaming?:\n    | boolean\n    | undefined;\n  /** / Identifies if server streams multiple server messages */\n  serverStreaming?: boolean | undefined;\n}\n\nexport interface FileOptions {\n  /**\n   * / Sets the Java package where classes generated from this .proto will be\n   * / placed.  By default, the proto package is used, but this is often\n   * / inappropriate because proto packages do not normally start with backwards\n   * / domain names.\n   */\n  javaPackage?:\n    | string\n    | undefined;\n  /**\n   * / If set, all the classes from the .proto file are wrapped in a single\n   * / outer class with the given name.  This applies to both Proto1\n   * / (equivalent to the old \"--one_java_file\" option) and Proto2 (where\n   * / a .proto always translates to a single class, but you may want to\n   * / explicitly choose the class name).\n   */\n  javaOuterClassname?:\n    | string\n    | undefined;\n  /**\n   * / If set true, then the Java code generator will generate a separate .java\n   * / file for each top-level message, enum, and service defined in the .proto\n   * / file.  Thus, these types will *not* be nested inside the outer class\n   * / named by java_outer_classname.  However, the outer class will still be\n   * / generated to contain the file's getDescriptor() method as well as any\n   * / top-level extensions defined in the file.\n   */\n  javaMultipleFiles?:\n    | boolean\n    | undefined;\n  /**\n   * / If set true, then the Java code generator will generate equals() and\n   * / hashCode() methods for all messages defined in the .proto file.\n   * / This increases generated code size, potentially substantially for large\n   * / protos, which may harm a memory-constrained application.\n   * / - In the full runtime this is a speed optimization, as the\n   * / AbstractMessage base class includes reflection-based implementations of\n   * / these methods.\n   * / - In the lite runtime, setting this option changes the semantics of\n   * / equals() and hashCode() to more closely match those of the full runtime;\n   * / the generated methods compute their results based on field values rather\n   * / than object identity. (Implementations should not assume that hashcodes\n   * / will be consistent across runtimes or versions of the protocol compiler.)\n   */\n  javaGenerateEqualsAndHash?:\n    | boolean\n    | undefined;\n  /**\n   * / If set true, then the Java2 code generator will generate code that\n   * / throws an exception whenever an attempt is made to assign a non-UTF-8\n   * / byte sequence to a string field.\n   * / Message reflection will do the same.\n   * / However, an extension field still accepts non-UTF-8 byte sequences.\n   * / This option has no effect on when used with the lite runtime.\n   */\n  javaStringCheckUtf8?: boolean | undefined;\n  optimizeFor?:\n    | FileOptions_OptimizeMode\n    | undefined;\n  /**\n   * / Sets the Go package where structs generated from this .proto will be\n   * / placed. If omitted, the Go package will be derived from the following:\n   * /   - The basename of the package import path, if provided.\n   * /   - Otherwise, the package statement in the .proto file, if present.\n   * /   - Otherwise, the basename of the .proto file, without extension.\n   */\n  goPackage?:\n    | string\n    | undefined;\n  /**\n   * / Should generic services be generated in each language?  \"Generic\" services\n   * / are not specific to any particular RPC system.  They are generated by the\n   * / main code generators in each language (without additional plugins).\n   * / Generic services were the only kind of service generation supported by\n   * / early versions of google.protobuf.\n   *\n   * / Generic services are now considered deprecated in favor of using plugins\n   * / that generate code specific to your particular RPC system.  Therefore,\n   * / these default to false.  Old code which depends on generic services should\n   * / explicitly set them to true.\n   */\n  ccGenericServices?: boolean | undefined;\n  javaGenericServices?: boolean | undefined;\n  pyGenericServices?:\n    | boolean\n    | undefined;\n  /**\n   * / Is this file deprecated?\n   * / Depending on the target platform, this can emit Deprecated annotations\n   * / for everything in the file, or it will be completely ignored; in the very\n   * / least, this is a formalization for deprecating files.\n   */\n  deprecated?:\n    | boolean\n    | undefined;\n  /**\n   * / Enables the use of arenas for the proto messages in this file. This applies\n   * / only to generated classes for C++.\n   */\n  ccEnableArenas?:\n    | boolean\n    | undefined;\n  /**\n   * / Sets the objective c class prefix which is prepended to all objective c\n   * / generated classes from this .proto. There is no default.\n   */\n  objcClassPrefix?:\n    | string\n    | undefined;\n  /** / Namespace for generated classes; defaults to the package. */\n  csharpNamespace?:\n    | string\n    | undefined;\n  /** / The parser stores options it doesn't recognize here. See above. */\n  uninterpretedOption?: UninterpretedOption[] | undefined;\n}\n\n/** / Generated classes can be optimized for speed or code size. */\nexport enum FileOptions_OptimizeMode {\n  /** SPEED - / Generate complete code for parsing, serialization, */\n  SPEED = \"SPEED\",\n  /** CODE_SIZE - / etc. */\n  CODE_SIZE = \"CODE_SIZE\",\n  /** LITE_RUNTIME - / Generate code using MessageLite and the lite runtime. */\n  LITE_RUNTIME = \"LITE_RUNTIME\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function fileOptions_OptimizeModeFromJSON(object: any): FileOptions_OptimizeMode {\n  switch (object) {\n    case 1:\n    case \"SPEED\":\n      return FileOptions_OptimizeMode.SPEED;\n    case 2:\n    case \"CODE_SIZE\":\n      return FileOptions_OptimizeMode.CODE_SIZE;\n    case 3:\n    case \"LITE_RUNTIME\":\n      return FileOptions_OptimizeMode.LITE_RUNTIME;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return FileOptions_OptimizeMode.UNRECOGNIZED;\n  }\n}\n\nexport function fileOptions_OptimizeModeToJSON(object: FileOptions_OptimizeMode): string {\n  switch (object) {\n    case FileOptions_OptimizeMode.SPEED:\n      return \"SPEED\";\n    case FileOptions_OptimizeMode.CODE_SIZE:\n      return \"CODE_SIZE\";\n    case FileOptions_OptimizeMode.LITE_RUNTIME:\n      return \"LITE_RUNTIME\";\n    case FileOptions_OptimizeMode.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function fileOptions_OptimizeModeToNumber(object: FileOptions_OptimizeMode): number {\n  switch (object) {\n    case FileOptions_OptimizeMode.SPEED:\n      return 1;\n    case FileOptions_OptimizeMode.CODE_SIZE:\n      return 2;\n    case FileOptions_OptimizeMode.LITE_RUNTIME:\n      return 3;\n    case FileOptions_OptimizeMode.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\nexport interface MessageOptions {\n  /**\n   * / Set true to use the old proto1 MessageSet wire format for extensions.\n   * / This is provided for backwards-compatibility with the MessageSet wire\n   * / format.  You should not use this for any other reason:  It's less\n   * / efficient, has fewer features, and is more complicated.\n   *\n   * / The message must be defined exactly as follows:\n   * /   message Foo {\n   * /     option message_set_wire_format = true;\n   * /     extensions 4 to max;\n   * /   }\n   * / Note that the message cannot have any defined fields; MessageSets only\n   * / have extensions.\n   *\n   * / All extensions of your type must be singular messages; e.g. they cannot\n   * / be int32s, enums, or repeated messages.\n   *\n   * / Because this is an option, the above two restrictions are not enforced by\n   * / the protocol compiler.\n   */\n  messageSetWireFormat?:\n    | boolean\n    | undefined;\n  /**\n   * / Disables the generation of the standard \"descriptor()\" accessor, which can\n   * / conflict with a field of the same name.  This is meant to make migration\n   * / from proto1 easier; new code should avoid fields named \"descriptor\".\n   */\n  noStandardDescriptorAccessor?:\n    | boolean\n    | undefined;\n  /**\n   * / Is this message deprecated?\n   * / Depending on the target platform, this can emit Deprecated annotations\n   * / for the message, or it will be completely ignored; in the very least,\n   * / this is a formalization for deprecating messages.\n   */\n  deprecated?:\n    | boolean\n    | undefined;\n  /**\n   * / Whether the message is an automatically generated map entry type for the\n   * / maps field.\n   *\n   * / For maps fields:\n   * /     map<KeyType, ValueType> map_field = 1;\n   * / The parsed descriptor looks like:\n   * /     message MapFieldEntry {\n   * /         option map_entry = true;\n   * /         optional KeyType key = 1;\n   * /         optional ValueType value = 2;\n   * /     }\n   * /     repeated MapFieldEntry map_field = 1;\n   *\n   * / Implementations may choose not to generate the map_entry=true message, but\n   * / use a native map in the target language to hold the keys and values.\n   * / The reflection APIs in such implementions still need to work as\n   * / if the field is a repeated message field.\n   *\n   * / NOTE: Do not set the option in .proto files. Always use the maps syntax\n   * / instead. The option should only be implicitly set by the proto compiler\n   * / parser.\n   */\n  mapEntry?:\n    | boolean\n    | undefined;\n  /** / The parser stores options it doesn't recognize here. See above. */\n  uninterpretedOption?: UninterpretedOption[] | undefined;\n}\n\nexport interface FieldOptions {\n  /**\n   * / The ctype option instructs the C++ code generator to use a different\n   * / representation of the field than it normally would.  See the specific\n   * / options below.  This option is not yet implemented in the open source\n   * / release -- sorry, we'll try to include it in a future version!\n   */\n  ctype?:\n    | FieldOptions_CType\n    | undefined;\n  /**\n   * / The packed option can be enabled for repeated primitive fields to enable\n   * / a more efficient representation on the wire. Rather than repeatedly\n   * / writing the tag and type for each element, the entire array is encoded as\n   * / a single length-delimited blob. In proto3, only explicit setting it to\n   * / false will avoid using packed encoding.\n   */\n  packed?:\n    | boolean\n    | undefined;\n  /**\n   * / The jstype option determines the JavaScript type used for values of the\n   * / field.  The option is permitted only for 64 bit integral and fixed types\n   * / (int64, uint64, sint64, fixed64, sfixed64).  By default these types are\n   * / represented as JavaScript strings.  This avoids loss of precision that can\n   * / happen when a large value is converted to a floating point JavaScript\n   * / numbers.  Specifying JS_NUMBER for the jstype causes the generated\n   * / JavaScript code to use the JavaScript \"number\" type instead of strings.\n   * / This option is an enum to permit additional types to be added,\n   * / e.g. goog.math.Integer.\n   */\n  jstype?:\n    | FieldOptions_JSType\n    | undefined;\n  /**\n   * / Should this field be parsed lazily?  Lazy applies only to message-type\n   * / fields.  It means that when the outer message is initially parsed, the\n   * / inner message's contents will not be parsed but instead stored in encoded\n   * / form.  The inner message will actually be parsed when it is first accessed.\n   *\n   * / This is only a hint.  Implementations are free to choose whether to use\n   * / eager or lazy parsing regardless of the value of this option.  However,\n   * / setting this option true suggests that the protocol author believes that\n   * / using lazy parsing on this field is worth the additional bookkeeping\n   * / overhead typically needed to implement it.\n   *\n   * / This option does not affect the public interface of any generated code;\n   * / all method signatures remain the same.  Furthermore, thread-safety of the\n   * / interface is not affected by this option; const methods remain safe to\n   * / call from multiple threads concurrently, while non-const methods continue\n   * / to require exclusive access.\n   *\n   * / Note that implementations may choose not to check required fields within\n   * / a lazy sub-message.  That is, calling IsInitialized() on the outher message\n   * / may return true even if the inner message has missing required fields.\n   * / This is necessary because otherwise the inner message would have to be\n   * / parsed in order to perform the check, defeating the purpose of lazy\n   * / parsing.  An implementation which chooses not to check required fields\n   * / must be consistent about it.  That is, for any particular sub-message, the\n   * / implementation must either *always* check its required fields, or *never*\n   * / check its required fields, regardless of whether or not the message has\n   * / been parsed.\n   */\n  lazy?:\n    | boolean\n    | undefined;\n  /**\n   * / Is this field deprecated?\n   * / Depending on the target platform, this can emit Deprecated annotations\n   * / for accessors, or it will be completely ignored; in the very least, this\n   * / is a formalization for deprecating fields.\n   */\n  deprecated?:\n    | boolean\n    | undefined;\n  /** / For Google-internal migration only. Do not use. */\n  weak?:\n    | boolean\n    | undefined;\n  /** / The parser stores options it doesn't recognize here. See above. */\n  uninterpretedOption?: UninterpretedOption[] | undefined;\n}\n\nexport enum FieldOptions_CType {\n  /** STRING - / Default mode. */\n  STRING = \"STRING\",\n  CORD = \"CORD\",\n  STRING_PIECE = \"STRING_PIECE\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function fieldOptions_CTypeFromJSON(object: any): FieldOptions_CType {\n  switch (object) {\n    case 0:\n    case \"STRING\":\n      return FieldOptions_CType.STRING;\n    case 1:\n    case \"CORD\":\n      return FieldOptions_CType.CORD;\n    case 2:\n    case \"STRING_PIECE\":\n      return FieldOptions_CType.STRING_PIECE;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return FieldOptions_CType.UNRECOGNIZED;\n  }\n}\n\nexport function fieldOptions_CTypeToJSON(object: FieldOptions_CType): string {\n  switch (object) {\n    case FieldOptions_CType.STRING:\n      return \"STRING\";\n    case FieldOptions_CType.CORD:\n      return \"CORD\";\n    case FieldOptions_CType.STRING_PIECE:\n      return \"STRING_PIECE\";\n    case FieldOptions_CType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function fieldOptions_CTypeToNumber(object: FieldOptions_CType): number {\n  switch (object) {\n    case FieldOptions_CType.STRING:\n      return 0;\n    case FieldOptions_CType.CORD:\n      return 1;\n    case FieldOptions_CType.STRING_PIECE:\n      return 2;\n    case FieldOptions_CType.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\nexport enum FieldOptions_JSType {\n  /** JS_NORMAL - / Use the default type. */\n  JS_NORMAL = \"JS_NORMAL\",\n  /** JS_STRING - / Use JavaScript strings. */\n  JS_STRING = \"JS_STRING\",\n  /** JS_NUMBER - / Use JavaScript numbers. */\n  JS_NUMBER = \"JS_NUMBER\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function fieldOptions_JSTypeFromJSON(object: any): FieldOptions_JSType {\n  switch (object) {\n    case 0:\n    case \"JS_NORMAL\":\n      return FieldOptions_JSType.JS_NORMAL;\n    case 1:\n    case \"JS_STRING\":\n      return FieldOptions_JSType.JS_STRING;\n    case 2:\n    case \"JS_NUMBER\":\n      return FieldOptions_JSType.JS_NUMBER;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return FieldOptions_JSType.UNRECOGNIZED;\n  }\n}\n\nexport function fieldOptions_JSTypeToJSON(object: FieldOptions_JSType): string {\n  switch (object) {\n    case FieldOptions_JSType.JS_NORMAL:\n      return \"JS_NORMAL\";\n    case FieldOptions_JSType.JS_STRING:\n      return \"JS_STRING\";\n    case FieldOptions_JSType.JS_NUMBER:\n      return \"JS_NUMBER\";\n    case FieldOptions_JSType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function fieldOptions_JSTypeToNumber(object: FieldOptions_JSType): number {\n  switch (object) {\n    case FieldOptions_JSType.JS_NORMAL:\n      return 0;\n    case FieldOptions_JSType.JS_STRING:\n      return 1;\n    case FieldOptions_JSType.JS_NUMBER:\n      return 2;\n    case FieldOptions_JSType.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\nexport interface EnumOptions {\n  /**\n   * / Set this option to true to allow mapping different tag names to the same\n   * / value.\n   */\n  allowAlias?:\n    | boolean\n    | undefined;\n  /**\n   * / Is this enum deprecated?\n   * / Depending on the target platform, this can emit Deprecated annotations\n   * / for the enum, or it will be completely ignored; in the very least, this\n   * / is a formalization for deprecating enums.\n   */\n  deprecated?:\n    | boolean\n    | undefined;\n  /** / The parser stores options it doesn't recognize here. See above. */\n  uninterpretedOption?: UninterpretedOption[] | undefined;\n}\n\nexport interface EnumValueOptions {\n  /**\n   * / Is this enum value deprecated?\n   * / Depending on the target platform, this can emit Deprecated annotations\n   * / for the enum value, or it will be completely ignored; in the very least,\n   * / this is a formalization for deprecating enum values.\n   */\n  deprecated?:\n    | boolean\n    | undefined;\n  /** / The parser stores options it doesn't recognize here. See above. */\n  uninterpretedOption?: UninterpretedOption[] | undefined;\n}\n\nexport interface ServiceOptions {\n  /**\n   * / Is this service deprecated?\n   * / Depending on the target platform, this can emit Deprecated annotations\n   * / for the service, or it will be completely ignored; in the very least,\n   * / this is a formalization for deprecating services.\n   */\n  deprecated?:\n    | boolean\n    | undefined;\n  /** / The parser stores options it doesn't recognize here. See above. */\n  uninterpretedOption?: UninterpretedOption[] | undefined;\n}\n\nexport interface MethodOptions {\n  /**\n   * / Is this method deprecated?\n   * / Depending on the target platform, this can emit Deprecated annotations\n   * / for the method, or it will be completely ignored; in the very least,\n   * / this is a formalization for deprecating methods.\n   */\n  deprecated?:\n    | boolean\n    | undefined;\n  /** / The parser stores options it doesn't recognize here. See above. */\n  uninterpretedOption?: UninterpretedOption[] | undefined;\n}\n\n/**\n * / A message representing a option the parser does not recognize. This only\n * / appears in options protos created by the compiler::Parser class.\n * / DescriptorPool resolves these when building Descriptor objects. Therefore,\n * / options protos in descriptor objects (e.g. returned by Descriptor::options(),\n * / or produced by Descriptor::CopyTo()) will never have UninterpretedOptions\n * / in them.\n */\nexport interface UninterpretedOption {\n  name?:\n    | UninterpretedOption_NamePart[]\n    | undefined;\n  /**\n   * / The value of the uninterpreted option, in whatever type the tokenizer\n   * / identified it as during parsing. Exactly one of these should be set.\n   */\n  identifierValue?: string | undefined;\n  positiveIntValue?: number | undefined;\n  negativeIntValue?: number | undefined;\n  doubleValue?: number | undefined;\n  stringValue?: Buffer | undefined;\n  aggregateValue?: string | undefined;\n}\n\n/**\n * / The name of the uninterpreted option.  Each string represents a segment in\n * / a dot-separated name.  is_extension is true iff a segment represents an\n * / extension (denoted with parentheses in options specs in .proto files).\n * / E.g.,{ [\"foo\", false], [\"bar.baz\", true], [\"qux\", false] } represents\n * / \"foo.(bar.baz).qux\".\n */\nexport interface UninterpretedOption_NamePart {\n  namePart?: string | undefined;\n  isExtension?: boolean | undefined;\n}\n\n/**\n * / Encapsulates information about the original source file from which a\n * / FileDescriptorProto was generated.\n */\nexport interface SourceCodeInfo {\n  /**\n   * / A Location identifies a piece of source code in a .proto file which\n   * / corresponds to a particular definition.  This information is intended\n   * / to be useful to IDEs, code indexers, documentation generators, and similar\n   * / tools.\n   *\n   * / For example, say we have a file like:\n   * /   message Foo {\n   * /     optional string foo = 1;\n   * /   }\n   * / Let's look at just the field definition:\n   * /   optional string foo = 1;\n   * /   ^       ^^     ^^  ^  ^^^\n   * /   a       bc     de  f  ghi\n   * / We have the following locations:\n   * /   span   path               represents\n   * /   [a,i)  [ 4, 0, 2, 0 ]     The whole field definition.\n   * /   [a,b)  [ 4, 0, 2, 0, 4 ]  The label (optional).\n   * /   [c,d)  [ 4, 0, 2, 0, 5 ]  The type (string).\n   * /   [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).\n   * /   [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).\n   *\n   * / Notes:\n   * / - A location may refer to a repeated field itself (i.e. not to any\n   * /   particular index within it).  This is used whenever a set of elements are\n   * /   logically enclosed in a single code segment.  For example, an entire\n   * /   extend block (possibly containing multiple extension definitions) will\n   * /   have an outer location whose path refers to the \"extensions\" repeated\n   * /   field without an index.\n   * / - Multiple locations may have the same path.  This happens when a single\n   * /   logical declaration is spread out across multiple places.  The most\n   * /   obvious example is the \"extend\" block again -- there may be multiple\n   * /   extend blocks in the same scope, each of which will have the same path.\n   * / - A location's span is not always a subset of its parent's span.  For\n   * /   example, the \"extendee\" of an extension declaration appears at the\n   * /   beginning of the \"extend\" block and is shared by all extensions within\n   * /   the block.\n   * / - Just because a location's span is a subset of some other location's span\n   * /   does not mean that it is a descendent.  For example, a \"group\" defines\n   * /   both a type and a field in a single declaration.  Thus, the locations\n   * /   corresponding to the type and field and their components will overlap.\n   * / - Code which tries to interpret locations should probably be designed to\n   * /   ignore those that it doesn't understand, as more types of locations could\n   * /   be recorded in the future.\n   */\n  location?: SourceCodeInfo_Location[] | undefined;\n}\n\nexport interface SourceCodeInfo_Location {\n  /**\n   * / Identifies which part of the FileDescriptorProto was defined at this\n   * / location.\n   *\n   * / Each element is a field number or an index.  They form a path from\n   * / the root FileDescriptorProto to the place where the definition.  For\n   * / example, this path:\n   * /   [ 4, 3, 2, 7, 1 ]\n   * / refers to:\n   * /   file.message_type(3)  /// 4, 3\n   * /       .field(7)         /// 2, 7\n   * /       .name()           /// 1\n   * / This is because FileDescriptorProto.message_type has field number 4:\n   * /   repeated DescriptorProto message_type = 4;\n   * / and DescriptorProto.field has field number 2:\n   * /   repeated FieldDescriptorProto field = 2;\n   * / and FieldDescriptorProto.name has field number 1:\n   * /   optional string name = 1;\n   *\n   * / Thus, the above path gives the location of a field name.  If we removed\n   * / the last element:\n   * /   [ 4, 3, 2, 7 ]\n   * / this path refers to the whole field declaration (from the beginning\n   * / of the label to the terminating semicolon).\n   */\n  path?:\n    | number[]\n    | undefined;\n  /**\n   * / Always has exactly three or four elements: start line, start column,\n   * / end line (optional, otherwise assumed same as start line), end column.\n   * / These are packed into a single field for efficiency.  Note that line\n   * / and column numbers are zero-based -- typically you will want to add\n   * / 1 to each before displaying to a user.\n   */\n  span?:\n    | number[]\n    | undefined;\n  /**\n   * / If this SourceCodeInfo represents a complete declaration, these are any\n   * / comments appearing before and after the declaration which appear to be\n   * / attached to the declaration.\n   *\n   * / A series of line comments appearing on consecutive lines, with no other\n   * / tokens appearing on those lines, will be treated as a single comment.\n   *\n   * / leading_detached_comments will keep paragraphs of comments that appear\n   * / before (but not connected to) the current element. Each paragraph,\n   * / separated by empty lines, will be one comment element in the repeated\n   * / field.\n   *\n   * / Only the comment content is provided; comment markers (e.g. //) are\n   * / stripped out.  For block comments, leading whitespace and an asterisk\n   * / will be stripped from the beginning of each line other than the first.\n   * / Newlines are included in the output.\n   *\n   * / Examples:\n   *\n   * /   optional int32 foo = 1;  /// Comment attached to foo.\n   * /   /// Comment attached to bar.\n   * /   optional int32 bar = 2;\n   *\n   * /   optional string baz = 3;\n   * /   /// Comment attached to baz.\n   * /   /// Another line attached to baz.\n   *\n   * /   /// Comment attached to qux.\n   * /   //\n   * /   /// Another line attached to qux.\n   * /   optional double qux = 4;\n   *\n   * /   /// Detached comment for corge. This is not leading or trailing comments\n   * /   /// to qux or corge because there are blank lines separating it from\n   * /   /// both.\n   *\n   * /   /// Detached comment for corge paragraph 2.\n   *\n   * /   optional string corge = 5;\n   * /   /* Block comment attached\n   * /    * to corge.  Leading asterisks\n   * /    * will be removed. * /\n   * /   /* Block comment attached to\n   * /    * grault. * /\n   * /   optional int32 grault = 6;\n   *\n   * /   /// ignored detached comments.\n   */\n  leadingComments?: string | undefined;\n  trailingComments?: string | undefined;\n  leadingDetachedComments?: string[] | undefined;\n}\n\n/**\n * / Describes the relationship between generated code and its original source\n * / file. A GeneratedCodeInfo message is associated with only one generated\n * / source file, but may contain references to different source .proto files.\n */\nexport interface GeneratedCodeInfo {\n  /**\n   * / An Annotation connects some span of text in generated code to an element\n   * / of its generating .proto file.\n   */\n  annotation?: GeneratedCodeInfo_Annotation[] | undefined;\n}\n\nexport interface GeneratedCodeInfo_Annotation {\n  /**\n   * / Identifies the element in the original source .proto file. This field\n   * / is formatted the same as SourceCodeInfo.Location.path.\n   */\n  path?:\n    | number[]\n    | undefined;\n  /** / Identifies the filesystem path to the original source .proto. */\n  sourceFile?:\n    | string\n    | undefined;\n  /**\n   * / Identifies the starting offset in bytes in the generated code\n   * / that relates to the identified object.\n   */\n  begin?:\n    | number\n    | undefined;\n  /**\n   * / Identifies the ending offset in bytes in the generated code that\n   * / relates to the identified offset. The end offset should be one past\n   * / the last relevant byte (so the length of the text = end - begin).\n   */\n  end?: number | undefined;\n}\n\nfunction createBaseFileDescriptorSet(): FileDescriptorSet {\n  return {};\n}\n\nexport const FileDescriptorSet: MessageFns<FileDescriptorSet> = {\n  encode(message: FileDescriptorSet, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.file !== undefined && message.file.length !== 0) {\n      for (const v of message.file) {\n        FileDescriptorProto.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FileDescriptorSet {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFileDescriptorSet();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.file === undefined) {\n            message.file = [];\n          }\n          const el = FileDescriptorProto.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.file!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FileDescriptorSet {\n    return {\n      file: globalThis.Array.isArray(object?.file)\n        ? object.file.map((e: any) => FileDescriptorProto.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: FileDescriptorSet): unknown {\n    const obj: any = {};\n    if (message.file?.length) {\n      obj.file = message.file.map((e) => FileDescriptorProto.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FileDescriptorSet>): FileDescriptorSet {\n    return FileDescriptorSet.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FileDescriptorSet>): FileDescriptorSet {\n    const message = createBaseFileDescriptorSet();\n    message.file = object.file?.map((e) => FileDescriptorProto.fromPartial(e)) || undefined;\n    return message;\n  },\n};\n\nfunction createBaseFileDescriptorProto(): FileDescriptorProto {\n  return {};\n}\n\nexport const FileDescriptorProto: MessageFns<FileDescriptorProto> = {\n  encode(message: FileDescriptorProto, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.name !== undefined && message.name !== \"\") {\n      writer.uint32(10).string(message.name);\n    }\n    if (message.package !== undefined && message.package !== \"\") {\n      writer.uint32(18).string(message.package);\n    }\n    if (message.dependency !== undefined && message.dependency.length !== 0) {\n      for (const v of message.dependency) {\n        writer.uint32(26).string(v!);\n      }\n    }\n    if (message.publicDependency !== undefined && message.publicDependency.length !== 0) {\n      writer.uint32(82).fork();\n      for (const v of message.publicDependency) {\n        writer.int32(v);\n      }\n      writer.join();\n    }\n    if (message.weakDependency !== undefined && message.weakDependency.length !== 0) {\n      writer.uint32(90).fork();\n      for (const v of message.weakDependency) {\n        writer.int32(v);\n      }\n      writer.join();\n    }\n    if (message.messageType !== undefined && message.messageType.length !== 0) {\n      for (const v of message.messageType) {\n        DescriptorProto.encode(v!, writer.uint32(34).fork()).join();\n      }\n    }\n    if (message.enumType !== undefined && message.enumType.length !== 0) {\n      for (const v of message.enumType) {\n        EnumDescriptorProto.encode(v!, writer.uint32(42).fork()).join();\n      }\n    }\n    if (message.service !== undefined && message.service.length !== 0) {\n      for (const v of message.service) {\n        ServiceDescriptorProto.encode(v!, writer.uint32(50).fork()).join();\n      }\n    }\n    if (message.extension !== undefined && message.extension.length !== 0) {\n      for (const v of message.extension) {\n        FieldDescriptorProto.encode(v!, writer.uint32(58).fork()).join();\n      }\n    }\n    if (message.options !== undefined) {\n      FileOptions.encode(message.options, writer.uint32(66).fork()).join();\n    }\n    if (message.sourceCodeInfo !== undefined) {\n      SourceCodeInfo.encode(message.sourceCodeInfo, writer.uint32(74).fork()).join();\n    }\n    if (message.syntax !== undefined && message.syntax !== \"\") {\n      writer.uint32(98).string(message.syntax);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FileDescriptorProto {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFileDescriptorProto();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.package = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          if (message.dependency === undefined) {\n            message.dependency = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.dependency!.push(el);\n          }\n          continue;\n        }\n        case 10: {\n          if (tag === 80) {\n            if (message.publicDependency === undefined) {\n              message.publicDependency = [];\n            }\n            message.publicDependency!.push(reader.int32());\n\n            continue;\n          }\n\n          if (tag === 82) {\n            if (message.publicDependency === undefined) {\n              message.publicDependency = [];\n            }\n            const end2 = reader.uint32() + reader.pos;\n            while (reader.pos < end2) {\n              message.publicDependency!.push(reader.int32());\n            }\n\n            continue;\n          }\n\n          break;\n        }\n        case 11: {\n          if (tag === 88) {\n            if (message.weakDependency === undefined) {\n              message.weakDependency = [];\n            }\n            message.weakDependency!.push(reader.int32());\n\n            continue;\n          }\n\n          if (tag === 90) {\n            if (message.weakDependency === undefined) {\n              message.weakDependency = [];\n            }\n            const end2 = reader.uint32() + reader.pos;\n            while (reader.pos < end2) {\n              message.weakDependency!.push(reader.int32());\n            }\n\n            continue;\n          }\n\n          break;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          if (message.messageType === undefined) {\n            message.messageType = [];\n          }\n          const el = DescriptorProto.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.messageType!.push(el);\n          }\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          if (message.enumType === undefined) {\n            message.enumType = [];\n          }\n          const el = EnumDescriptorProto.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.enumType!.push(el);\n          }\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          if (message.service === undefined) {\n            message.service = [];\n          }\n          const el = ServiceDescriptorProto.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.service!.push(el);\n          }\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          if (message.extension === undefined) {\n            message.extension = [];\n          }\n          const el = FieldDescriptorProto.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.extension!.push(el);\n          }\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.options = FileOptions.decode(reader, reader.uint32());\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.sourceCodeInfo = SourceCodeInfo.decode(reader, reader.uint32());\n          continue;\n        }\n        case 12: {\n          if (tag !== 98) {\n            break;\n          }\n\n          message.syntax = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FileDescriptorProto {\n    return {\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      package: isSet(object.package) ? globalThis.String(object.package) : undefined,\n      dependency: globalThis.Array.isArray(object?.dependency)\n        ? object.dependency.map((e: any) => globalThis.String(e))\n        : undefined,\n      publicDependency: globalThis.Array.isArray(object?.publicDependency)\n        ? object.publicDependency.map((e: any) => globalThis.Number(e))\n        : undefined,\n      weakDependency: globalThis.Array.isArray(object?.weakDependency)\n        ? object.weakDependency.map((e: any) => globalThis.Number(e))\n        : undefined,\n      messageType: globalThis.Array.isArray(object?.messageType)\n        ? object.messageType.map((e: any) => DescriptorProto.fromJSON(e))\n        : undefined,\n      enumType: globalThis.Array.isArray(object?.enumType)\n        ? object.enumType.map((e: any) => EnumDescriptorProto.fromJSON(e))\n        : undefined,\n      service: globalThis.Array.isArray(object?.service)\n        ? object.service.map((e: any) => ServiceDescriptorProto.fromJSON(e))\n        : undefined,\n      extension: globalThis.Array.isArray(object?.extension)\n        ? object.extension.map((e: any) => FieldDescriptorProto.fromJSON(e))\n        : undefined,\n      options: isSet(object.options) ? FileOptions.fromJSON(object.options) : undefined,\n      sourceCodeInfo: isSet(object.sourceCodeInfo) ? SourceCodeInfo.fromJSON(object.sourceCodeInfo) : undefined,\n      syntax: isSet(object.syntax) ? globalThis.String(object.syntax) : undefined,\n    };\n  },\n\n  toJSON(message: FileDescriptorProto): unknown {\n    const obj: any = {};\n    if (message.name !== undefined && message.name !== \"\") {\n      obj.name = message.name;\n    }\n    if (message.package !== undefined && message.package !== \"\") {\n      obj.package = message.package;\n    }\n    if (message.dependency?.length) {\n      obj.dependency = message.dependency;\n    }\n    if (message.publicDependency?.length) {\n      obj.publicDependency = message.publicDependency.map((e) => Math.round(e));\n    }\n    if (message.weakDependency?.length) {\n      obj.weakDependency = message.weakDependency.map((e) => Math.round(e));\n    }\n    if (message.messageType?.length) {\n      obj.messageType = message.messageType.map((e) => DescriptorProto.toJSON(e));\n    }\n    if (message.enumType?.length) {\n      obj.enumType = message.enumType.map((e) => EnumDescriptorProto.toJSON(e));\n    }\n    if (message.service?.length) {\n      obj.service = message.service.map((e) => ServiceDescriptorProto.toJSON(e));\n    }\n    if (message.extension?.length) {\n      obj.extension = message.extension.map((e) => FieldDescriptorProto.toJSON(e));\n    }\n    if (message.options !== undefined) {\n      obj.options = FileOptions.toJSON(message.options);\n    }\n    if (message.sourceCodeInfo !== undefined) {\n      obj.sourceCodeInfo = SourceCodeInfo.toJSON(message.sourceCodeInfo);\n    }\n    if (message.syntax !== undefined && message.syntax !== \"\") {\n      obj.syntax = message.syntax;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FileDescriptorProto>): FileDescriptorProto {\n    return FileDescriptorProto.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FileDescriptorProto>): FileDescriptorProto {\n    const message = createBaseFileDescriptorProto();\n    message.name = object.name ?? undefined;\n    message.package = object.package ?? undefined;\n    message.dependency = object.dependency?.map((e) => e) || undefined;\n    message.publicDependency = object.publicDependency?.map((e) => e) || undefined;\n    message.weakDependency = object.weakDependency?.map((e) => e) || undefined;\n    message.messageType = object.messageType?.map((e) => DescriptorProto.fromPartial(e)) || undefined;\n    message.enumType = object.enumType?.map((e) => EnumDescriptorProto.fromPartial(e)) || undefined;\n    message.service = object.service?.map((e) => ServiceDescriptorProto.fromPartial(e)) || undefined;\n    message.extension = object.extension?.map((e) => FieldDescriptorProto.fromPartial(e)) || undefined;\n    message.options = (object.options !== undefined && object.options !== null)\n      ? FileOptions.fromPartial(object.options)\n      : undefined;\n    message.sourceCodeInfo = (object.sourceCodeInfo !== undefined && object.sourceCodeInfo !== null)\n      ? SourceCodeInfo.fromPartial(object.sourceCodeInfo)\n      : undefined;\n    message.syntax = object.syntax ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseDescriptorProto(): DescriptorProto {\n  return {};\n}\n\nexport const DescriptorProto: MessageFns<DescriptorProto> = {\n  encode(message: DescriptorProto, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.name !== undefined && message.name !== \"\") {\n      writer.uint32(10).string(message.name);\n    }\n    if (message.field !== undefined && message.field.length !== 0) {\n      for (const v of message.field) {\n        FieldDescriptorProto.encode(v!, writer.uint32(18).fork()).join();\n      }\n    }\n    if (message.extension !== undefined && message.extension.length !== 0) {\n      for (const v of message.extension) {\n        FieldDescriptorProto.encode(v!, writer.uint32(50).fork()).join();\n      }\n    }\n    if (message.nestedType !== undefined && message.nestedType.length !== 0) {\n      for (const v of message.nestedType) {\n        DescriptorProto.encode(v!, writer.uint32(26).fork()).join();\n      }\n    }\n    if (message.enumType !== undefined && message.enumType.length !== 0) {\n      for (const v of message.enumType) {\n        EnumDescriptorProto.encode(v!, writer.uint32(34).fork()).join();\n      }\n    }\n    if (message.extensionRange !== undefined && message.extensionRange.length !== 0) {\n      for (const v of message.extensionRange) {\n        DescriptorProto_ExtensionRange.encode(v!, writer.uint32(42).fork()).join();\n      }\n    }\n    if (message.oneofDecl !== undefined && message.oneofDecl.length !== 0) {\n      for (const v of message.oneofDecl) {\n        OneofDescriptorProto.encode(v!, writer.uint32(66).fork()).join();\n      }\n    }\n    if (message.options !== undefined) {\n      MessageOptions.encode(message.options, writer.uint32(58).fork()).join();\n    }\n    if (message.reservedRange !== undefined && message.reservedRange.length !== 0) {\n      for (const v of message.reservedRange) {\n        DescriptorProto_ReservedRange.encode(v!, writer.uint32(74).fork()).join();\n      }\n    }\n    if (message.reservedName !== undefined && message.reservedName.length !== 0) {\n      for (const v of message.reservedName) {\n        writer.uint32(82).string(v!);\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): DescriptorProto {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseDescriptorProto();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          if (message.field === undefined) {\n            message.field = [];\n          }\n          const el = FieldDescriptorProto.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.field!.push(el);\n          }\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          if (message.extension === undefined) {\n            message.extension = [];\n          }\n          const el = FieldDescriptorProto.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.extension!.push(el);\n          }\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          if (message.nestedType === undefined) {\n            message.nestedType = [];\n          }\n          const el = DescriptorProto.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.nestedType!.push(el);\n          }\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          if (message.enumType === undefined) {\n            message.enumType = [];\n          }\n          const el = EnumDescriptorProto.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.enumType!.push(el);\n          }\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          if (message.extensionRange === undefined) {\n            message.extensionRange = [];\n          }\n          const el = DescriptorProto_ExtensionRange.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.extensionRange!.push(el);\n          }\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          if (message.oneofDecl === undefined) {\n            message.oneofDecl = [];\n          }\n          const el = OneofDescriptorProto.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.oneofDecl!.push(el);\n          }\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.options = MessageOptions.decode(reader, reader.uint32());\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          if (message.reservedRange === undefined) {\n            message.reservedRange = [];\n          }\n          const el = DescriptorProto_ReservedRange.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.reservedRange!.push(el);\n          }\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          if (message.reservedName === undefined) {\n            message.reservedName = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.reservedName!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): DescriptorProto {\n    return {\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      field: globalThis.Array.isArray(object?.field)\n        ? object.field.map((e: any) => FieldDescriptorProto.fromJSON(e))\n        : undefined,\n      extension: globalThis.Array.isArray(object?.extension)\n        ? object.extension.map((e: any) => FieldDescriptorProto.fromJSON(e))\n        : undefined,\n      nestedType: globalThis.Array.isArray(object?.nestedType)\n        ? object.nestedType.map((e: any) => DescriptorProto.fromJSON(e))\n        : undefined,\n      enumType: globalThis.Array.isArray(object?.enumType)\n        ? object.enumType.map((e: any) => EnumDescriptorProto.fromJSON(e))\n        : undefined,\n      extensionRange: globalThis.Array.isArray(object?.extensionRange)\n        ? object.extensionRange.map((e: any) => DescriptorProto_ExtensionRange.fromJSON(e))\n        : undefined,\n      oneofDecl: globalThis.Array.isArray(object?.oneofDecl)\n        ? object.oneofDecl.map((e: any) => OneofDescriptorProto.fromJSON(e))\n        : undefined,\n      options: isSet(object.options) ? MessageOptions.fromJSON(object.options) : undefined,\n      reservedRange: globalThis.Array.isArray(object?.reservedRange)\n        ? object.reservedRange.map((e: any) => DescriptorProto_ReservedRange.fromJSON(e))\n        : undefined,\n      reservedName: globalThis.Array.isArray(object?.reservedName)\n        ? object.reservedName.map((e: any) => globalThis.String(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: DescriptorProto): unknown {\n    const obj: any = {};\n    if (message.name !== undefined && message.name !== \"\") {\n      obj.name = message.name;\n    }\n    if (message.field?.length) {\n      obj.field = message.field.map((e) => FieldDescriptorProto.toJSON(e));\n    }\n    if (message.extension?.length) {\n      obj.extension = message.extension.map((e) => FieldDescriptorProto.toJSON(e));\n    }\n    if (message.nestedType?.length) {\n      obj.nestedType = message.nestedType.map((e) => DescriptorProto.toJSON(e));\n    }\n    if (message.enumType?.length) {\n      obj.enumType = message.enumType.map((e) => EnumDescriptorProto.toJSON(e));\n    }\n    if (message.extensionRange?.length) {\n      obj.extensionRange = message.extensionRange.map((e) => DescriptorProto_ExtensionRange.toJSON(e));\n    }\n    if (message.oneofDecl?.length) {\n      obj.oneofDecl = message.oneofDecl.map((e) => OneofDescriptorProto.toJSON(e));\n    }\n    if (message.options !== undefined) {\n      obj.options = MessageOptions.toJSON(message.options);\n    }\n    if (message.reservedRange?.length) {\n      obj.reservedRange = message.reservedRange.map((e) => DescriptorProto_ReservedRange.toJSON(e));\n    }\n    if (message.reservedName?.length) {\n      obj.reservedName = message.reservedName;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<DescriptorProto>): DescriptorProto {\n    return DescriptorProto.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<DescriptorProto>): DescriptorProto {\n    const message = createBaseDescriptorProto();\n    message.name = object.name ?? undefined;\n    message.field = object.field?.map((e) => FieldDescriptorProto.fromPartial(e)) || undefined;\n    message.extension = object.extension?.map((e) => FieldDescriptorProto.fromPartial(e)) || undefined;\n    message.nestedType = object.nestedType?.map((e) => DescriptorProto.fromPartial(e)) || undefined;\n    message.enumType = object.enumType?.map((e) => EnumDescriptorProto.fromPartial(e)) || undefined;\n    message.extensionRange = object.extensionRange?.map((e) => DescriptorProto_ExtensionRange.fromPartial(e)) ||\n      undefined;\n    message.oneofDecl = object.oneofDecl?.map((e) => OneofDescriptorProto.fromPartial(e)) || undefined;\n    message.options = (object.options !== undefined && object.options !== null)\n      ? MessageOptions.fromPartial(object.options)\n      : undefined;\n    message.reservedRange = object.reservedRange?.map((e) => DescriptorProto_ReservedRange.fromPartial(e)) || undefined;\n    message.reservedName = object.reservedName?.map((e) => e) || undefined;\n    return message;\n  },\n};\n\nfunction createBaseDescriptorProto_ExtensionRange(): DescriptorProto_ExtensionRange {\n  return {};\n}\n\nexport const DescriptorProto_ExtensionRange: MessageFns<DescriptorProto_ExtensionRange> = {\n  encode(message: DescriptorProto_ExtensionRange, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.start !== undefined && message.start !== 0) {\n      writer.uint32(8).int32(message.start);\n    }\n    if (message.end !== undefined && message.end !== 0) {\n      writer.uint32(16).int32(message.end);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): DescriptorProto_ExtensionRange {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseDescriptorProto_ExtensionRange();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.start = reader.int32();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.end = reader.int32();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): DescriptorProto_ExtensionRange {\n    return {\n      start: isSet(object.start) ? globalThis.Number(object.start) : undefined,\n      end: isSet(object.end) ? globalThis.Number(object.end) : undefined,\n    };\n  },\n\n  toJSON(message: DescriptorProto_ExtensionRange): unknown {\n    const obj: any = {};\n    if (message.start !== undefined && message.start !== 0) {\n      obj.start = Math.round(message.start);\n    }\n    if (message.end !== undefined && message.end !== 0) {\n      obj.end = Math.round(message.end);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<DescriptorProto_ExtensionRange>): DescriptorProto_ExtensionRange {\n    return DescriptorProto_ExtensionRange.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<DescriptorProto_ExtensionRange>): DescriptorProto_ExtensionRange {\n    const message = createBaseDescriptorProto_ExtensionRange();\n    message.start = object.start ?? undefined;\n    message.end = object.end ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseDescriptorProto_ReservedRange(): DescriptorProto_ReservedRange {\n  return {};\n}\n\nexport const DescriptorProto_ReservedRange: MessageFns<DescriptorProto_ReservedRange> = {\n  encode(message: DescriptorProto_ReservedRange, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.start !== undefined && message.start !== 0) {\n      writer.uint32(8).int32(message.start);\n    }\n    if (message.end !== undefined && message.end !== 0) {\n      writer.uint32(16).int32(message.end);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): DescriptorProto_ReservedRange {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseDescriptorProto_ReservedRange();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.start = reader.int32();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.end = reader.int32();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): DescriptorProto_ReservedRange {\n    return {\n      start: isSet(object.start) ? globalThis.Number(object.start) : undefined,\n      end: isSet(object.end) ? globalThis.Number(object.end) : undefined,\n    };\n  },\n\n  toJSON(message: DescriptorProto_ReservedRange): unknown {\n    const obj: any = {};\n    if (message.start !== undefined && message.start !== 0) {\n      obj.start = Math.round(message.start);\n    }\n    if (message.end !== undefined && message.end !== 0) {\n      obj.end = Math.round(message.end);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<DescriptorProto_ReservedRange>): DescriptorProto_ReservedRange {\n    return DescriptorProto_ReservedRange.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<DescriptorProto_ReservedRange>): DescriptorProto_ReservedRange {\n    const message = createBaseDescriptorProto_ReservedRange();\n    message.start = object.start ?? undefined;\n    message.end = object.end ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseFieldDescriptorProto(): FieldDescriptorProto {\n  return {};\n}\n\nexport const FieldDescriptorProto: MessageFns<FieldDescriptorProto> = {\n  encode(message: FieldDescriptorProto, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.name !== undefined && message.name !== \"\") {\n      writer.uint32(10).string(message.name);\n    }\n    if (message.number !== undefined && message.number !== 0) {\n      writer.uint32(24).int32(message.number);\n    }\n    if (message.label !== undefined && message.label !== FieldDescriptorProto_Label.LABEL_OPTIONAL) {\n      writer.uint32(32).int32(fieldDescriptorProto_LabelToNumber(message.label));\n    }\n    if (message.type !== undefined && message.type !== FieldDescriptorProto_Type.TYPE_DOUBLE) {\n      writer.uint32(40).int32(fieldDescriptorProto_TypeToNumber(message.type));\n    }\n    if (message.typeName !== undefined && message.typeName !== \"\") {\n      writer.uint32(50).string(message.typeName);\n    }\n    if (message.extendee !== undefined && message.extendee !== \"\") {\n      writer.uint32(18).string(message.extendee);\n    }\n    if (message.defaultValue !== undefined && message.defaultValue !== \"\") {\n      writer.uint32(58).string(message.defaultValue);\n    }\n    if (message.oneofIndex !== undefined && message.oneofIndex !== 0) {\n      writer.uint32(72).int32(message.oneofIndex);\n    }\n    if (message.jsonName !== undefined && message.jsonName !== \"\") {\n      writer.uint32(82).string(message.jsonName);\n    }\n    if (message.options !== undefined) {\n      FieldOptions.encode(message.options, writer.uint32(66).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FieldDescriptorProto {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFieldDescriptorProto();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.number = reader.int32();\n          continue;\n        }\n        case 4: {\n          if (tag !== 32) {\n            break;\n          }\n\n          message.label = fieldDescriptorProto_LabelFromJSON(reader.int32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 40) {\n            break;\n          }\n\n          message.type = fieldDescriptorProto_TypeFromJSON(reader.int32());\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.typeName = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.extendee = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.defaultValue = reader.string();\n          continue;\n        }\n        case 9: {\n          if (tag !== 72) {\n            break;\n          }\n\n          message.oneofIndex = reader.int32();\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.jsonName = reader.string();\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.options = FieldOptions.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FieldDescriptorProto {\n    return {\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      number: isSet(object.number) ? globalThis.Number(object.number) : undefined,\n      label: isSet(object.label) ? fieldDescriptorProto_LabelFromJSON(object.label) : undefined,\n      type: isSet(object.type) ? fieldDescriptorProto_TypeFromJSON(object.type) : undefined,\n      typeName: isSet(object.typeName) ? globalThis.String(object.typeName) : undefined,\n      extendee: isSet(object.extendee) ? globalThis.String(object.extendee) : undefined,\n      defaultValue: isSet(object.defaultValue) ? globalThis.String(object.defaultValue) : undefined,\n      oneofIndex: isSet(object.oneofIndex) ? globalThis.Number(object.oneofIndex) : undefined,\n      jsonName: isSet(object.jsonName) ? globalThis.String(object.jsonName) : undefined,\n      options: isSet(object.options) ? FieldOptions.fromJSON(object.options) : undefined,\n    };\n  },\n\n  toJSON(message: FieldDescriptorProto): unknown {\n    const obj: any = {};\n    if (message.name !== undefined && message.name !== \"\") {\n      obj.name = message.name;\n    }\n    if (message.number !== undefined && message.number !== 0) {\n      obj.number = Math.round(message.number);\n    }\n    if (message.label !== undefined && message.label !== FieldDescriptorProto_Label.LABEL_OPTIONAL) {\n      obj.label = fieldDescriptorProto_LabelToJSON(message.label);\n    }\n    if (message.type !== undefined && message.type !== FieldDescriptorProto_Type.TYPE_DOUBLE) {\n      obj.type = fieldDescriptorProto_TypeToJSON(message.type);\n    }\n    if (message.typeName !== undefined && message.typeName !== \"\") {\n      obj.typeName = message.typeName;\n    }\n    if (message.extendee !== undefined && message.extendee !== \"\") {\n      obj.extendee = message.extendee;\n    }\n    if (message.defaultValue !== undefined && message.defaultValue !== \"\") {\n      obj.defaultValue = message.defaultValue;\n    }\n    if (message.oneofIndex !== undefined && message.oneofIndex !== 0) {\n      obj.oneofIndex = Math.round(message.oneofIndex);\n    }\n    if (message.jsonName !== undefined && message.jsonName !== \"\") {\n      obj.jsonName = message.jsonName;\n    }\n    if (message.options !== undefined) {\n      obj.options = FieldOptions.toJSON(message.options);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FieldDescriptorProto>): FieldDescriptorProto {\n    return FieldDescriptorProto.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FieldDescriptorProto>): FieldDescriptorProto {\n    const message = createBaseFieldDescriptorProto();\n    message.name = object.name ?? undefined;\n    message.number = object.number ?? undefined;\n    message.label = object.label ?? undefined;\n    message.type = object.type ?? undefined;\n    message.typeName = object.typeName ?? undefined;\n    message.extendee = object.extendee ?? undefined;\n    message.defaultValue = object.defaultValue ?? undefined;\n    message.oneofIndex = object.oneofIndex ?? undefined;\n    message.jsonName = object.jsonName ?? undefined;\n    message.options = (object.options !== undefined && object.options !== null)\n      ? FieldOptions.fromPartial(object.options)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseOneofDescriptorProto(): OneofDescriptorProto {\n  return {};\n}\n\nexport const OneofDescriptorProto: MessageFns<OneofDescriptorProto> = {\n  encode(message: OneofDescriptorProto, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.name !== undefined && message.name !== \"\") {\n      writer.uint32(10).string(message.name);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OneofDescriptorProto {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOneofDescriptorProto();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OneofDescriptorProto {\n    return { name: isSet(object.name) ? globalThis.String(object.name) : undefined };\n  },\n\n  toJSON(message: OneofDescriptorProto): unknown {\n    const obj: any = {};\n    if (message.name !== undefined && message.name !== \"\") {\n      obj.name = message.name;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OneofDescriptorProto>): OneofDescriptorProto {\n    return OneofDescriptorProto.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OneofDescriptorProto>): OneofDescriptorProto {\n    const message = createBaseOneofDescriptorProto();\n    message.name = object.name ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseEnumDescriptorProto(): EnumDescriptorProto {\n  return {};\n}\n\nexport const EnumDescriptorProto: MessageFns<EnumDescriptorProto> = {\n  encode(message: EnumDescriptorProto, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.name !== undefined && message.name !== \"\") {\n      writer.uint32(10).string(message.name);\n    }\n    if (message.value !== undefined && message.value.length !== 0) {\n      for (const v of message.value) {\n        EnumValueDescriptorProto.encode(v!, writer.uint32(18).fork()).join();\n      }\n    }\n    if (message.options !== undefined) {\n      EnumOptions.encode(message.options, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): EnumDescriptorProto {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseEnumDescriptorProto();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          if (message.value === undefined) {\n            message.value = [];\n          }\n          const el = EnumValueDescriptorProto.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.value!.push(el);\n          }\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.options = EnumOptions.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): EnumDescriptorProto {\n    return {\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      value: globalThis.Array.isArray(object?.value)\n        ? object.value.map((e: any) => EnumValueDescriptorProto.fromJSON(e))\n        : undefined,\n      options: isSet(object.options) ? EnumOptions.fromJSON(object.options) : undefined,\n    };\n  },\n\n  toJSON(message: EnumDescriptorProto): unknown {\n    const obj: any = {};\n    if (message.name !== undefined && message.name !== \"\") {\n      obj.name = message.name;\n    }\n    if (message.value?.length) {\n      obj.value = message.value.map((e) => EnumValueDescriptorProto.toJSON(e));\n    }\n    if (message.options !== undefined) {\n      obj.options = EnumOptions.toJSON(message.options);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<EnumDescriptorProto>): EnumDescriptorProto {\n    return EnumDescriptorProto.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<EnumDescriptorProto>): EnumDescriptorProto {\n    const message = createBaseEnumDescriptorProto();\n    message.name = object.name ?? undefined;\n    message.value = object.value?.map((e) => EnumValueDescriptorProto.fromPartial(e)) || undefined;\n    message.options = (object.options !== undefined && object.options !== null)\n      ? EnumOptions.fromPartial(object.options)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseEnumValueDescriptorProto(): EnumValueDescriptorProto {\n  return {};\n}\n\nexport const EnumValueDescriptorProto: MessageFns<EnumValueDescriptorProto> = {\n  encode(message: EnumValueDescriptorProto, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.name !== undefined && message.name !== \"\") {\n      writer.uint32(10).string(message.name);\n    }\n    if (message.number !== undefined && message.number !== 0) {\n      writer.uint32(16).int32(message.number);\n    }\n    if (message.options !== undefined) {\n      EnumValueOptions.encode(message.options, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): EnumValueDescriptorProto {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseEnumValueDescriptorProto();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.number = reader.int32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.options = EnumValueOptions.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): EnumValueDescriptorProto {\n    return {\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      number: isSet(object.number) ? globalThis.Number(object.number) : undefined,\n      options: isSet(object.options) ? EnumValueOptions.fromJSON(object.options) : undefined,\n    };\n  },\n\n  toJSON(message: EnumValueDescriptorProto): unknown {\n    const obj: any = {};\n    if (message.name !== undefined && message.name !== \"\") {\n      obj.name = message.name;\n    }\n    if (message.number !== undefined && message.number !== 0) {\n      obj.number = Math.round(message.number);\n    }\n    if (message.options !== undefined) {\n      obj.options = EnumValueOptions.toJSON(message.options);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<EnumValueDescriptorProto>): EnumValueDescriptorProto {\n    return EnumValueDescriptorProto.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<EnumValueDescriptorProto>): EnumValueDescriptorProto {\n    const message = createBaseEnumValueDescriptorProto();\n    message.name = object.name ?? undefined;\n    message.number = object.number ?? undefined;\n    message.options = (object.options !== undefined && object.options !== null)\n      ? EnumValueOptions.fromPartial(object.options)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseServiceDescriptorProto(): ServiceDescriptorProto {\n  return {};\n}\n\nexport const ServiceDescriptorProto: MessageFns<ServiceDescriptorProto> = {\n  encode(message: ServiceDescriptorProto, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.name !== undefined && message.name !== \"\") {\n      writer.uint32(10).string(message.name);\n    }\n    if (message.method !== undefined && message.method.length !== 0) {\n      for (const v of message.method) {\n        MethodDescriptorProto.encode(v!, writer.uint32(18).fork()).join();\n      }\n    }\n    if (message.options !== undefined) {\n      ServiceOptions.encode(message.options, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ServiceDescriptorProto {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseServiceDescriptorProto();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          if (message.method === undefined) {\n            message.method = [];\n          }\n          const el = MethodDescriptorProto.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.method!.push(el);\n          }\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.options = ServiceOptions.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ServiceDescriptorProto {\n    return {\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      method: globalThis.Array.isArray(object?.method)\n        ? object.method.map((e: any) => MethodDescriptorProto.fromJSON(e))\n        : undefined,\n      options: isSet(object.options) ? ServiceOptions.fromJSON(object.options) : undefined,\n    };\n  },\n\n  toJSON(message: ServiceDescriptorProto): unknown {\n    const obj: any = {};\n    if (message.name !== undefined && message.name !== \"\") {\n      obj.name = message.name;\n    }\n    if (message.method?.length) {\n      obj.method = message.method.map((e) => MethodDescriptorProto.toJSON(e));\n    }\n    if (message.options !== undefined) {\n      obj.options = ServiceOptions.toJSON(message.options);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ServiceDescriptorProto>): ServiceDescriptorProto {\n    return ServiceDescriptorProto.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ServiceDescriptorProto>): ServiceDescriptorProto {\n    const message = createBaseServiceDescriptorProto();\n    message.name = object.name ?? undefined;\n    message.method = object.method?.map((e) => MethodDescriptorProto.fromPartial(e)) || undefined;\n    message.options = (object.options !== undefined && object.options !== null)\n      ? ServiceOptions.fromPartial(object.options)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseMethodDescriptorProto(): MethodDescriptorProto {\n  return {};\n}\n\nexport const MethodDescriptorProto: MessageFns<MethodDescriptorProto> = {\n  encode(message: MethodDescriptorProto, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.name !== undefined && message.name !== \"\") {\n      writer.uint32(10).string(message.name);\n    }\n    if (message.inputType !== undefined && message.inputType !== \"\") {\n      writer.uint32(18).string(message.inputType);\n    }\n    if (message.outputType !== undefined && message.outputType !== \"\") {\n      writer.uint32(26).string(message.outputType);\n    }\n    if (message.options !== undefined) {\n      MethodOptions.encode(message.options, writer.uint32(34).fork()).join();\n    }\n    if (message.clientStreaming !== undefined && message.clientStreaming !== false) {\n      writer.uint32(40).bool(message.clientStreaming);\n    }\n    if (message.serverStreaming !== undefined && message.serverStreaming !== false) {\n      writer.uint32(48).bool(message.serverStreaming);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): MethodDescriptorProto {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseMethodDescriptorProto();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.inputType = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.outputType = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.options = MethodOptions.decode(reader, reader.uint32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 40) {\n            break;\n          }\n\n          message.clientStreaming = reader.bool();\n          continue;\n        }\n        case 6: {\n          if (tag !== 48) {\n            break;\n          }\n\n          message.serverStreaming = reader.bool();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): MethodDescriptorProto {\n    return {\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      inputType: isSet(object.inputType) ? globalThis.String(object.inputType) : undefined,\n      outputType: isSet(object.outputType) ? globalThis.String(object.outputType) : undefined,\n      options: isSet(object.options) ? MethodOptions.fromJSON(object.options) : undefined,\n      clientStreaming: isSet(object.clientStreaming) ? globalThis.Boolean(object.clientStreaming) : undefined,\n      serverStreaming: isSet(object.serverStreaming) ? globalThis.Boolean(object.serverStreaming) : undefined,\n    };\n  },\n\n  toJSON(message: MethodDescriptorProto): unknown {\n    const obj: any = {};\n    if (message.name !== undefined && message.name !== \"\") {\n      obj.name = message.name;\n    }\n    if (message.inputType !== undefined && message.inputType !== \"\") {\n      obj.inputType = message.inputType;\n    }\n    if (message.outputType !== undefined && message.outputType !== \"\") {\n      obj.outputType = message.outputType;\n    }\n    if (message.options !== undefined) {\n      obj.options = MethodOptions.toJSON(message.options);\n    }\n    if (message.clientStreaming !== undefined && message.clientStreaming !== false) {\n      obj.clientStreaming = message.clientStreaming;\n    }\n    if (message.serverStreaming !== undefined && message.serverStreaming !== false) {\n      obj.serverStreaming = message.serverStreaming;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<MethodDescriptorProto>): MethodDescriptorProto {\n    return MethodDescriptorProto.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<MethodDescriptorProto>): MethodDescriptorProto {\n    const message = createBaseMethodDescriptorProto();\n    message.name = object.name ?? undefined;\n    message.inputType = object.inputType ?? undefined;\n    message.outputType = object.outputType ?? undefined;\n    message.options = (object.options !== undefined && object.options !== null)\n      ? MethodOptions.fromPartial(object.options)\n      : undefined;\n    message.clientStreaming = object.clientStreaming ?? undefined;\n    message.serverStreaming = object.serverStreaming ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseFileOptions(): FileOptions {\n  return {};\n}\n\nexport const FileOptions: MessageFns<FileOptions> = {\n  encode(message: FileOptions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.javaPackage !== undefined && message.javaPackage !== \"\") {\n      writer.uint32(10).string(message.javaPackage);\n    }\n    if (message.javaOuterClassname !== undefined && message.javaOuterClassname !== \"\") {\n      writer.uint32(66).string(message.javaOuterClassname);\n    }\n    if (message.javaMultipleFiles !== undefined && message.javaMultipleFiles !== false) {\n      writer.uint32(80).bool(message.javaMultipleFiles);\n    }\n    if (message.javaGenerateEqualsAndHash !== undefined && message.javaGenerateEqualsAndHash !== false) {\n      writer.uint32(160).bool(message.javaGenerateEqualsAndHash);\n    }\n    if (message.javaStringCheckUtf8 !== undefined && message.javaStringCheckUtf8 !== false) {\n      writer.uint32(216).bool(message.javaStringCheckUtf8);\n    }\n    if (message.optimizeFor !== undefined && message.optimizeFor !== FileOptions_OptimizeMode.SPEED) {\n      writer.uint32(72).int32(fileOptions_OptimizeModeToNumber(message.optimizeFor));\n    }\n    if (message.goPackage !== undefined && message.goPackage !== \"\") {\n      writer.uint32(90).string(message.goPackage);\n    }\n    if (message.ccGenericServices !== undefined && message.ccGenericServices !== false) {\n      writer.uint32(128).bool(message.ccGenericServices);\n    }\n    if (message.javaGenericServices !== undefined && message.javaGenericServices !== false) {\n      writer.uint32(136).bool(message.javaGenericServices);\n    }\n    if (message.pyGenericServices !== undefined && message.pyGenericServices !== false) {\n      writer.uint32(144).bool(message.pyGenericServices);\n    }\n    if (message.deprecated !== undefined && message.deprecated !== false) {\n      writer.uint32(184).bool(message.deprecated);\n    }\n    if (message.ccEnableArenas !== undefined && message.ccEnableArenas !== false) {\n      writer.uint32(248).bool(message.ccEnableArenas);\n    }\n    if (message.objcClassPrefix !== undefined && message.objcClassPrefix !== \"\") {\n      writer.uint32(290).string(message.objcClassPrefix);\n    }\n    if (message.csharpNamespace !== undefined && message.csharpNamespace !== \"\") {\n      writer.uint32(298).string(message.csharpNamespace);\n    }\n    if (message.uninterpretedOption !== undefined && message.uninterpretedOption.length !== 0) {\n      for (const v of message.uninterpretedOption) {\n        UninterpretedOption.encode(v!, writer.uint32(7994).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FileOptions {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFileOptions();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.javaPackage = reader.string();\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.javaOuterClassname = reader.string();\n          continue;\n        }\n        case 10: {\n          if (tag !== 80) {\n            break;\n          }\n\n          message.javaMultipleFiles = reader.bool();\n          continue;\n        }\n        case 20: {\n          if (tag !== 160) {\n            break;\n          }\n\n          message.javaGenerateEqualsAndHash = reader.bool();\n          continue;\n        }\n        case 27: {\n          if (tag !== 216) {\n            break;\n          }\n\n          message.javaStringCheckUtf8 = reader.bool();\n          continue;\n        }\n        case 9: {\n          if (tag !== 72) {\n            break;\n          }\n\n          message.optimizeFor = fileOptions_OptimizeModeFromJSON(reader.int32());\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.goPackage = reader.string();\n          continue;\n        }\n        case 16: {\n          if (tag !== 128) {\n            break;\n          }\n\n          message.ccGenericServices = reader.bool();\n          continue;\n        }\n        case 17: {\n          if (tag !== 136) {\n            break;\n          }\n\n          message.javaGenericServices = reader.bool();\n          continue;\n        }\n        case 18: {\n          if (tag !== 144) {\n            break;\n          }\n\n          message.pyGenericServices = reader.bool();\n          continue;\n        }\n        case 23: {\n          if (tag !== 184) {\n            break;\n          }\n\n          message.deprecated = reader.bool();\n          continue;\n        }\n        case 31: {\n          if (tag !== 248) {\n            break;\n          }\n\n          message.ccEnableArenas = reader.bool();\n          continue;\n        }\n        case 36: {\n          if (tag !== 290) {\n            break;\n          }\n\n          message.objcClassPrefix = reader.string();\n          continue;\n        }\n        case 37: {\n          if (tag !== 298) {\n            break;\n          }\n\n          message.csharpNamespace = reader.string();\n          continue;\n        }\n        case 999: {\n          if (tag !== 7994) {\n            break;\n          }\n\n          if (message.uninterpretedOption === undefined) {\n            message.uninterpretedOption = [];\n          }\n          const el = UninterpretedOption.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.uninterpretedOption!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FileOptions {\n    return {\n      javaPackage: isSet(object.javaPackage) ? globalThis.String(object.javaPackage) : undefined,\n      javaOuterClassname: isSet(object.javaOuterClassname) ? globalThis.String(object.javaOuterClassname) : undefined,\n      javaMultipleFiles: isSet(object.javaMultipleFiles) ? globalThis.Boolean(object.javaMultipleFiles) : undefined,\n      javaGenerateEqualsAndHash: isSet(object.javaGenerateEqualsAndHash)\n        ? globalThis.Boolean(object.javaGenerateEqualsAndHash)\n        : undefined,\n      javaStringCheckUtf8: isSet(object.javaStringCheckUtf8)\n        ? globalThis.Boolean(object.javaStringCheckUtf8)\n        : undefined,\n      optimizeFor: isSet(object.optimizeFor) ? fileOptions_OptimizeModeFromJSON(object.optimizeFor) : undefined,\n      goPackage: isSet(object.goPackage) ? globalThis.String(object.goPackage) : undefined,\n      ccGenericServices: isSet(object.ccGenericServices) ? globalThis.Boolean(object.ccGenericServices) : undefined,\n      javaGenericServices: isSet(object.javaGenericServices)\n        ? globalThis.Boolean(object.javaGenericServices)\n        : undefined,\n      pyGenericServices: isSet(object.pyGenericServices) ? globalThis.Boolean(object.pyGenericServices) : undefined,\n      deprecated: isSet(object.deprecated) ? globalThis.Boolean(object.deprecated) : undefined,\n      ccEnableArenas: isSet(object.ccEnableArenas) ? globalThis.Boolean(object.ccEnableArenas) : undefined,\n      objcClassPrefix: isSet(object.objcClassPrefix) ? globalThis.String(object.objcClassPrefix) : undefined,\n      csharpNamespace: isSet(object.csharpNamespace) ? globalThis.String(object.csharpNamespace) : undefined,\n      uninterpretedOption: globalThis.Array.isArray(object?.uninterpretedOption)\n        ? object.uninterpretedOption.map((e: any) => UninterpretedOption.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: FileOptions): unknown {\n    const obj: any = {};\n    if (message.javaPackage !== undefined && message.javaPackage !== \"\") {\n      obj.javaPackage = message.javaPackage;\n    }\n    if (message.javaOuterClassname !== undefined && message.javaOuterClassname !== \"\") {\n      obj.javaOuterClassname = message.javaOuterClassname;\n    }\n    if (message.javaMultipleFiles !== undefined && message.javaMultipleFiles !== false) {\n      obj.javaMultipleFiles = message.javaMultipleFiles;\n    }\n    if (message.javaGenerateEqualsAndHash !== undefined && message.javaGenerateEqualsAndHash !== false) {\n      obj.javaGenerateEqualsAndHash = message.javaGenerateEqualsAndHash;\n    }\n    if (message.javaStringCheckUtf8 !== undefined && message.javaStringCheckUtf8 !== false) {\n      obj.javaStringCheckUtf8 = message.javaStringCheckUtf8;\n    }\n    if (message.optimizeFor !== undefined && message.optimizeFor !== FileOptions_OptimizeMode.SPEED) {\n      obj.optimizeFor = fileOptions_OptimizeModeToJSON(message.optimizeFor);\n    }\n    if (message.goPackage !== undefined && message.goPackage !== \"\") {\n      obj.goPackage = message.goPackage;\n    }\n    if (message.ccGenericServices !== undefined && message.ccGenericServices !== false) {\n      obj.ccGenericServices = message.ccGenericServices;\n    }\n    if (message.javaGenericServices !== undefined && message.javaGenericServices !== false) {\n      obj.javaGenericServices = message.javaGenericServices;\n    }\n    if (message.pyGenericServices !== undefined && message.pyGenericServices !== false) {\n      obj.pyGenericServices = message.pyGenericServices;\n    }\n    if (message.deprecated !== undefined && message.deprecated !== false) {\n      obj.deprecated = message.deprecated;\n    }\n    if (message.ccEnableArenas !== undefined && message.ccEnableArenas !== false) {\n      obj.ccEnableArenas = message.ccEnableArenas;\n    }\n    if (message.objcClassPrefix !== undefined && message.objcClassPrefix !== \"\") {\n      obj.objcClassPrefix = message.objcClassPrefix;\n    }\n    if (message.csharpNamespace !== undefined && message.csharpNamespace !== \"\") {\n      obj.csharpNamespace = message.csharpNamespace;\n    }\n    if (message.uninterpretedOption?.length) {\n      obj.uninterpretedOption = message.uninterpretedOption.map((e) => UninterpretedOption.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FileOptions>): FileOptions {\n    return FileOptions.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FileOptions>): FileOptions {\n    const message = createBaseFileOptions();\n    message.javaPackage = object.javaPackage ?? undefined;\n    message.javaOuterClassname = object.javaOuterClassname ?? undefined;\n    message.javaMultipleFiles = object.javaMultipleFiles ?? undefined;\n    message.javaGenerateEqualsAndHash = object.javaGenerateEqualsAndHash ?? undefined;\n    message.javaStringCheckUtf8 = object.javaStringCheckUtf8 ?? undefined;\n    message.optimizeFor = object.optimizeFor ?? undefined;\n    message.goPackage = object.goPackage ?? undefined;\n    message.ccGenericServices = object.ccGenericServices ?? undefined;\n    message.javaGenericServices = object.javaGenericServices ?? undefined;\n    message.pyGenericServices = object.pyGenericServices ?? undefined;\n    message.deprecated = object.deprecated ?? undefined;\n    message.ccEnableArenas = object.ccEnableArenas ?? undefined;\n    message.objcClassPrefix = object.objcClassPrefix ?? undefined;\n    message.csharpNamespace = object.csharpNamespace ?? undefined;\n    message.uninterpretedOption = object.uninterpretedOption?.map((e) => UninterpretedOption.fromPartial(e)) ||\n      undefined;\n    return message;\n  },\n};\n\nfunction createBaseMessageOptions(): MessageOptions {\n  return {};\n}\n\nexport const MessageOptions: MessageFns<MessageOptions> = {\n  encode(message: MessageOptions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.messageSetWireFormat !== undefined && message.messageSetWireFormat !== false) {\n      writer.uint32(8).bool(message.messageSetWireFormat);\n    }\n    if (message.noStandardDescriptorAccessor !== undefined && message.noStandardDescriptorAccessor !== false) {\n      writer.uint32(16).bool(message.noStandardDescriptorAccessor);\n    }\n    if (message.deprecated !== undefined && message.deprecated !== false) {\n      writer.uint32(24).bool(message.deprecated);\n    }\n    if (message.mapEntry !== undefined && message.mapEntry !== false) {\n      writer.uint32(56).bool(message.mapEntry);\n    }\n    if (message.uninterpretedOption !== undefined && message.uninterpretedOption.length !== 0) {\n      for (const v of message.uninterpretedOption) {\n        UninterpretedOption.encode(v!, writer.uint32(7994).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): MessageOptions {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseMessageOptions();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.messageSetWireFormat = reader.bool();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.noStandardDescriptorAccessor = reader.bool();\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.deprecated = reader.bool();\n          continue;\n        }\n        case 7: {\n          if (tag !== 56) {\n            break;\n          }\n\n          message.mapEntry = reader.bool();\n          continue;\n        }\n        case 999: {\n          if (tag !== 7994) {\n            break;\n          }\n\n          if (message.uninterpretedOption === undefined) {\n            message.uninterpretedOption = [];\n          }\n          const el = UninterpretedOption.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.uninterpretedOption!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): MessageOptions {\n    return {\n      messageSetWireFormat: isSet(object.messageSetWireFormat)\n        ? globalThis.Boolean(object.messageSetWireFormat)\n        : undefined,\n      noStandardDescriptorAccessor: isSet(object.noStandardDescriptorAccessor)\n        ? globalThis.Boolean(object.noStandardDescriptorAccessor)\n        : undefined,\n      deprecated: isSet(object.deprecated) ? globalThis.Boolean(object.deprecated) : undefined,\n      mapEntry: isSet(object.mapEntry) ? globalThis.Boolean(object.mapEntry) : undefined,\n      uninterpretedOption: globalThis.Array.isArray(object?.uninterpretedOption)\n        ? object.uninterpretedOption.map((e: any) => UninterpretedOption.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: MessageOptions): unknown {\n    const obj: any = {};\n    if (message.messageSetWireFormat !== undefined && message.messageSetWireFormat !== false) {\n      obj.messageSetWireFormat = message.messageSetWireFormat;\n    }\n    if (message.noStandardDescriptorAccessor !== undefined && message.noStandardDescriptorAccessor !== false) {\n      obj.noStandardDescriptorAccessor = message.noStandardDescriptorAccessor;\n    }\n    if (message.deprecated !== undefined && message.deprecated !== false) {\n      obj.deprecated = message.deprecated;\n    }\n    if (message.mapEntry !== undefined && message.mapEntry !== false) {\n      obj.mapEntry = message.mapEntry;\n    }\n    if (message.uninterpretedOption?.length) {\n      obj.uninterpretedOption = message.uninterpretedOption.map((e) => UninterpretedOption.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<MessageOptions>): MessageOptions {\n    return MessageOptions.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<MessageOptions>): MessageOptions {\n    const message = createBaseMessageOptions();\n    message.messageSetWireFormat = object.messageSetWireFormat ?? undefined;\n    message.noStandardDescriptorAccessor = object.noStandardDescriptorAccessor ?? undefined;\n    message.deprecated = object.deprecated ?? undefined;\n    message.mapEntry = object.mapEntry ?? undefined;\n    message.uninterpretedOption = object.uninterpretedOption?.map((e) => UninterpretedOption.fromPartial(e)) ||\n      undefined;\n    return message;\n  },\n};\n\nfunction createBaseFieldOptions(): FieldOptions {\n  return {};\n}\n\nexport const FieldOptions: MessageFns<FieldOptions> = {\n  encode(message: FieldOptions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.ctype !== undefined && message.ctype !== FieldOptions_CType.STRING) {\n      writer.uint32(8).int32(fieldOptions_CTypeToNumber(message.ctype));\n    }\n    if (message.packed !== undefined && message.packed !== false) {\n      writer.uint32(16).bool(message.packed);\n    }\n    if (message.jstype !== undefined && message.jstype !== FieldOptions_JSType.JS_NORMAL) {\n      writer.uint32(48).int32(fieldOptions_JSTypeToNumber(message.jstype));\n    }\n    if (message.lazy !== undefined && message.lazy !== false) {\n      writer.uint32(40).bool(message.lazy);\n    }\n    if (message.deprecated !== undefined && message.deprecated !== false) {\n      writer.uint32(24).bool(message.deprecated);\n    }\n    if (message.weak !== undefined && message.weak !== false) {\n      writer.uint32(80).bool(message.weak);\n    }\n    if (message.uninterpretedOption !== undefined && message.uninterpretedOption.length !== 0) {\n      for (const v of message.uninterpretedOption) {\n        UninterpretedOption.encode(v!, writer.uint32(7994).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FieldOptions {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFieldOptions();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.ctype = fieldOptions_CTypeFromJSON(reader.int32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.packed = reader.bool();\n          continue;\n        }\n        case 6: {\n          if (tag !== 48) {\n            break;\n          }\n\n          message.jstype = fieldOptions_JSTypeFromJSON(reader.int32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 40) {\n            break;\n          }\n\n          message.lazy = reader.bool();\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.deprecated = reader.bool();\n          continue;\n        }\n        case 10: {\n          if (tag !== 80) {\n            break;\n          }\n\n          message.weak = reader.bool();\n          continue;\n        }\n        case 999: {\n          if (tag !== 7994) {\n            break;\n          }\n\n          if (message.uninterpretedOption === undefined) {\n            message.uninterpretedOption = [];\n          }\n          const el = UninterpretedOption.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.uninterpretedOption!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FieldOptions {\n    return {\n      ctype: isSet(object.ctype) ? fieldOptions_CTypeFromJSON(object.ctype) : undefined,\n      packed: isSet(object.packed) ? globalThis.Boolean(object.packed) : undefined,\n      jstype: isSet(object.jstype) ? fieldOptions_JSTypeFromJSON(object.jstype) : undefined,\n      lazy: isSet(object.lazy) ? globalThis.Boolean(object.lazy) : undefined,\n      deprecated: isSet(object.deprecated) ? globalThis.Boolean(object.deprecated) : undefined,\n      weak: isSet(object.weak) ? globalThis.Boolean(object.weak) : undefined,\n      uninterpretedOption: globalThis.Array.isArray(object?.uninterpretedOption)\n        ? object.uninterpretedOption.map((e: any) => UninterpretedOption.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: FieldOptions): unknown {\n    const obj: any = {};\n    if (message.ctype !== undefined && message.ctype !== FieldOptions_CType.STRING) {\n      obj.ctype = fieldOptions_CTypeToJSON(message.ctype);\n    }\n    if (message.packed !== undefined && message.packed !== false) {\n      obj.packed = message.packed;\n    }\n    if (message.jstype !== undefined && message.jstype !== FieldOptions_JSType.JS_NORMAL) {\n      obj.jstype = fieldOptions_JSTypeToJSON(message.jstype);\n    }\n    if (message.lazy !== undefined && message.lazy !== false) {\n      obj.lazy = message.lazy;\n    }\n    if (message.deprecated !== undefined && message.deprecated !== false) {\n      obj.deprecated = message.deprecated;\n    }\n    if (message.weak !== undefined && message.weak !== false) {\n      obj.weak = message.weak;\n    }\n    if (message.uninterpretedOption?.length) {\n      obj.uninterpretedOption = message.uninterpretedOption.map((e) => UninterpretedOption.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FieldOptions>): FieldOptions {\n    return FieldOptions.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FieldOptions>): FieldOptions {\n    const message = createBaseFieldOptions();\n    message.ctype = object.ctype ?? undefined;\n    message.packed = object.packed ?? undefined;\n    message.jstype = object.jstype ?? undefined;\n    message.lazy = object.lazy ?? undefined;\n    message.deprecated = object.deprecated ?? undefined;\n    message.weak = object.weak ?? undefined;\n    message.uninterpretedOption = object.uninterpretedOption?.map((e) => UninterpretedOption.fromPartial(e)) ||\n      undefined;\n    return message;\n  },\n};\n\nfunction createBaseEnumOptions(): EnumOptions {\n  return {};\n}\n\nexport const EnumOptions: MessageFns<EnumOptions> = {\n  encode(message: EnumOptions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.allowAlias !== undefined && message.allowAlias !== false) {\n      writer.uint32(16).bool(message.allowAlias);\n    }\n    if (message.deprecated !== undefined && message.deprecated !== false) {\n      writer.uint32(24).bool(message.deprecated);\n    }\n    if (message.uninterpretedOption !== undefined && message.uninterpretedOption.length !== 0) {\n      for (const v of message.uninterpretedOption) {\n        UninterpretedOption.encode(v!, writer.uint32(7994).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): EnumOptions {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseEnumOptions();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.allowAlias = reader.bool();\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.deprecated = reader.bool();\n          continue;\n        }\n        case 999: {\n          if (tag !== 7994) {\n            break;\n          }\n\n          if (message.uninterpretedOption === undefined) {\n            message.uninterpretedOption = [];\n          }\n          const el = UninterpretedOption.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.uninterpretedOption!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): EnumOptions {\n    return {\n      allowAlias: isSet(object.allowAlias) ? globalThis.Boolean(object.allowAlias) : undefined,\n      deprecated: isSet(object.deprecated) ? globalThis.Boolean(object.deprecated) : undefined,\n      uninterpretedOption: globalThis.Array.isArray(object?.uninterpretedOption)\n        ? object.uninterpretedOption.map((e: any) => UninterpretedOption.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: EnumOptions): unknown {\n    const obj: any = {};\n    if (message.allowAlias !== undefined && message.allowAlias !== false) {\n      obj.allowAlias = message.allowAlias;\n    }\n    if (message.deprecated !== undefined && message.deprecated !== false) {\n      obj.deprecated = message.deprecated;\n    }\n    if (message.uninterpretedOption?.length) {\n      obj.uninterpretedOption = message.uninterpretedOption.map((e) => UninterpretedOption.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<EnumOptions>): EnumOptions {\n    return EnumOptions.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<EnumOptions>): EnumOptions {\n    const message = createBaseEnumOptions();\n    message.allowAlias = object.allowAlias ?? undefined;\n    message.deprecated = object.deprecated ?? undefined;\n    message.uninterpretedOption = object.uninterpretedOption?.map((e) => UninterpretedOption.fromPartial(e)) ||\n      undefined;\n    return message;\n  },\n};\n\nfunction createBaseEnumValueOptions(): EnumValueOptions {\n  return {};\n}\n\nexport const EnumValueOptions: MessageFns<EnumValueOptions> = {\n  encode(message: EnumValueOptions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.deprecated !== undefined && message.deprecated !== false) {\n      writer.uint32(8).bool(message.deprecated);\n    }\n    if (message.uninterpretedOption !== undefined && message.uninterpretedOption.length !== 0) {\n      for (const v of message.uninterpretedOption) {\n        UninterpretedOption.encode(v!, writer.uint32(7994).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): EnumValueOptions {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseEnumValueOptions();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.deprecated = reader.bool();\n          continue;\n        }\n        case 999: {\n          if (tag !== 7994) {\n            break;\n          }\n\n          if (message.uninterpretedOption === undefined) {\n            message.uninterpretedOption = [];\n          }\n          const el = UninterpretedOption.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.uninterpretedOption!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): EnumValueOptions {\n    return {\n      deprecated: isSet(object.deprecated) ? globalThis.Boolean(object.deprecated) : undefined,\n      uninterpretedOption: globalThis.Array.isArray(object?.uninterpretedOption)\n        ? object.uninterpretedOption.map((e: any) => UninterpretedOption.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: EnumValueOptions): unknown {\n    const obj: any = {};\n    if (message.deprecated !== undefined && message.deprecated !== false) {\n      obj.deprecated = message.deprecated;\n    }\n    if (message.uninterpretedOption?.length) {\n      obj.uninterpretedOption = message.uninterpretedOption.map((e) => UninterpretedOption.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<EnumValueOptions>): EnumValueOptions {\n    return EnumValueOptions.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<EnumValueOptions>): EnumValueOptions {\n    const message = createBaseEnumValueOptions();\n    message.deprecated = object.deprecated ?? undefined;\n    message.uninterpretedOption = object.uninterpretedOption?.map((e) => UninterpretedOption.fromPartial(e)) ||\n      undefined;\n    return message;\n  },\n};\n\nfunction createBaseServiceOptions(): ServiceOptions {\n  return {};\n}\n\nexport const ServiceOptions: MessageFns<ServiceOptions> = {\n  encode(message: ServiceOptions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.deprecated !== undefined && message.deprecated !== false) {\n      writer.uint32(264).bool(message.deprecated);\n    }\n    if (message.uninterpretedOption !== undefined && message.uninterpretedOption.length !== 0) {\n      for (const v of message.uninterpretedOption) {\n        UninterpretedOption.encode(v!, writer.uint32(7994).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ServiceOptions {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseServiceOptions();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 33: {\n          if (tag !== 264) {\n            break;\n          }\n\n          message.deprecated = reader.bool();\n          continue;\n        }\n        case 999: {\n          if (tag !== 7994) {\n            break;\n          }\n\n          if (message.uninterpretedOption === undefined) {\n            message.uninterpretedOption = [];\n          }\n          const el = UninterpretedOption.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.uninterpretedOption!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ServiceOptions {\n    return {\n      deprecated: isSet(object.deprecated) ? globalThis.Boolean(object.deprecated) : undefined,\n      uninterpretedOption: globalThis.Array.isArray(object?.uninterpretedOption)\n        ? object.uninterpretedOption.map((e: any) => UninterpretedOption.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: ServiceOptions): unknown {\n    const obj: any = {};\n    if (message.deprecated !== undefined && message.deprecated !== false) {\n      obj.deprecated = message.deprecated;\n    }\n    if (message.uninterpretedOption?.length) {\n      obj.uninterpretedOption = message.uninterpretedOption.map((e) => UninterpretedOption.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ServiceOptions>): ServiceOptions {\n    return ServiceOptions.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ServiceOptions>): ServiceOptions {\n    const message = createBaseServiceOptions();\n    message.deprecated = object.deprecated ?? undefined;\n    message.uninterpretedOption = object.uninterpretedOption?.map((e) => UninterpretedOption.fromPartial(e)) ||\n      undefined;\n    return message;\n  },\n};\n\nfunction createBaseMethodOptions(): MethodOptions {\n  return {};\n}\n\nexport const MethodOptions: MessageFns<MethodOptions> = {\n  encode(message: MethodOptions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.deprecated !== undefined && message.deprecated !== false) {\n      writer.uint32(264).bool(message.deprecated);\n    }\n    if (message.uninterpretedOption !== undefined && message.uninterpretedOption.length !== 0) {\n      for (const v of message.uninterpretedOption) {\n        UninterpretedOption.encode(v!, writer.uint32(7994).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): MethodOptions {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseMethodOptions();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 33: {\n          if (tag !== 264) {\n            break;\n          }\n\n          message.deprecated = reader.bool();\n          continue;\n        }\n        case 999: {\n          if (tag !== 7994) {\n            break;\n          }\n\n          if (message.uninterpretedOption === undefined) {\n            message.uninterpretedOption = [];\n          }\n          const el = UninterpretedOption.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.uninterpretedOption!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): MethodOptions {\n    return {\n      deprecated: isSet(object.deprecated) ? globalThis.Boolean(object.deprecated) : undefined,\n      uninterpretedOption: globalThis.Array.isArray(object?.uninterpretedOption)\n        ? object.uninterpretedOption.map((e: any) => UninterpretedOption.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: MethodOptions): unknown {\n    const obj: any = {};\n    if (message.deprecated !== undefined && message.deprecated !== false) {\n      obj.deprecated = message.deprecated;\n    }\n    if (message.uninterpretedOption?.length) {\n      obj.uninterpretedOption = message.uninterpretedOption.map((e) => UninterpretedOption.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<MethodOptions>): MethodOptions {\n    return MethodOptions.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<MethodOptions>): MethodOptions {\n    const message = createBaseMethodOptions();\n    message.deprecated = object.deprecated ?? undefined;\n    message.uninterpretedOption = object.uninterpretedOption?.map((e) => UninterpretedOption.fromPartial(e)) ||\n      undefined;\n    return message;\n  },\n};\n\nfunction createBaseUninterpretedOption(): UninterpretedOption {\n  return {};\n}\n\nexport const UninterpretedOption: MessageFns<UninterpretedOption> = {\n  encode(message: UninterpretedOption, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.name !== undefined && message.name.length !== 0) {\n      for (const v of message.name) {\n        UninterpretedOption_NamePart.encode(v!, writer.uint32(18).fork()).join();\n      }\n    }\n    if (message.identifierValue !== undefined && message.identifierValue !== \"\") {\n      writer.uint32(26).string(message.identifierValue);\n    }\n    if (message.positiveIntValue !== undefined && message.positiveIntValue !== 0) {\n      writer.uint32(32).uint64(message.positiveIntValue);\n    }\n    if (message.negativeIntValue !== undefined && message.negativeIntValue !== 0) {\n      writer.uint32(40).int64(message.negativeIntValue);\n    }\n    if (message.doubleValue !== undefined && message.doubleValue !== 0) {\n      writer.uint32(49).double(message.doubleValue);\n    }\n    if (message.stringValue !== undefined && message.stringValue.length !== 0) {\n      writer.uint32(58).bytes(message.stringValue);\n    }\n    if (message.aggregateValue !== undefined && message.aggregateValue !== \"\") {\n      writer.uint32(66).string(message.aggregateValue);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): UninterpretedOption {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseUninterpretedOption();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          if (message.name === undefined) {\n            message.name = [];\n          }\n          const el = UninterpretedOption_NamePart.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.name!.push(el);\n          }\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.identifierValue = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 32) {\n            break;\n          }\n\n          message.positiveIntValue = longToNumber(reader.uint64());\n          continue;\n        }\n        case 5: {\n          if (tag !== 40) {\n            break;\n          }\n\n          message.negativeIntValue = longToNumber(reader.int64());\n          continue;\n        }\n        case 6: {\n          if (tag !== 49) {\n            break;\n          }\n\n          message.doubleValue = reader.double();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.stringValue = Buffer.from(reader.bytes());\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.aggregateValue = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): UninterpretedOption {\n    return {\n      name: globalThis.Array.isArray(object?.name)\n        ? object.name.map((e: any) => UninterpretedOption_NamePart.fromJSON(e))\n        : undefined,\n      identifierValue: isSet(object.identifierValue) ? globalThis.String(object.identifierValue) : undefined,\n      positiveIntValue: isSet(object.positiveIntValue) ? globalThis.Number(object.positiveIntValue) : undefined,\n      negativeIntValue: isSet(object.negativeIntValue) ? globalThis.Number(object.negativeIntValue) : undefined,\n      doubleValue: isSet(object.doubleValue) ? globalThis.Number(object.doubleValue) : undefined,\n      stringValue: isSet(object.stringValue) ? Buffer.from(bytesFromBase64(object.stringValue)) : undefined,\n      aggregateValue: isSet(object.aggregateValue) ? globalThis.String(object.aggregateValue) : undefined,\n    };\n  },\n\n  toJSON(message: UninterpretedOption): unknown {\n    const obj: any = {};\n    if (message.name?.length) {\n      obj.name = message.name.map((e) => UninterpretedOption_NamePart.toJSON(e));\n    }\n    if (message.identifierValue !== undefined && message.identifierValue !== \"\") {\n      obj.identifierValue = message.identifierValue;\n    }\n    if (message.positiveIntValue !== undefined && message.positiveIntValue !== 0) {\n      obj.positiveIntValue = Math.round(message.positiveIntValue);\n    }\n    if (message.negativeIntValue !== undefined && message.negativeIntValue !== 0) {\n      obj.negativeIntValue = Math.round(message.negativeIntValue);\n    }\n    if (message.doubleValue !== undefined && message.doubleValue !== 0) {\n      obj.doubleValue = message.doubleValue;\n    }\n    if (message.stringValue !== undefined && message.stringValue.length !== 0) {\n      obj.stringValue = base64FromBytes(message.stringValue);\n    }\n    if (message.aggregateValue !== undefined && message.aggregateValue !== \"\") {\n      obj.aggregateValue = message.aggregateValue;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<UninterpretedOption>): UninterpretedOption {\n    return UninterpretedOption.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<UninterpretedOption>): UninterpretedOption {\n    const message = createBaseUninterpretedOption();\n    message.name = object.name?.map((e) => UninterpretedOption_NamePart.fromPartial(e)) || undefined;\n    message.identifierValue = object.identifierValue ?? undefined;\n    message.positiveIntValue = object.positiveIntValue ?? undefined;\n    message.negativeIntValue = object.negativeIntValue ?? undefined;\n    message.doubleValue = object.doubleValue ?? undefined;\n    message.stringValue = object.stringValue ?? undefined;\n    message.aggregateValue = object.aggregateValue ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseUninterpretedOption_NamePart(): UninterpretedOption_NamePart {\n  return {};\n}\n\nexport const UninterpretedOption_NamePart: MessageFns<UninterpretedOption_NamePart> = {\n  encode(message: UninterpretedOption_NamePart, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.namePart !== undefined && message.namePart !== \"\") {\n      writer.uint32(10).string(message.namePart);\n    }\n    if (message.isExtension !== undefined && message.isExtension !== false) {\n      writer.uint32(16).bool(message.isExtension);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): UninterpretedOption_NamePart {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseUninterpretedOption_NamePart();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.namePart = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.isExtension = reader.bool();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): UninterpretedOption_NamePart {\n    return {\n      namePart: isSet(object.namePart) ? globalThis.String(object.namePart) : undefined,\n      isExtension: isSet(object.isExtension) ? globalThis.Boolean(object.isExtension) : undefined,\n    };\n  },\n\n  toJSON(message: UninterpretedOption_NamePart): unknown {\n    const obj: any = {};\n    if (message.namePart !== undefined && message.namePart !== \"\") {\n      obj.namePart = message.namePart;\n    }\n    if (message.isExtension !== undefined && message.isExtension !== false) {\n      obj.isExtension = message.isExtension;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<UninterpretedOption_NamePart>): UninterpretedOption_NamePart {\n    return UninterpretedOption_NamePart.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<UninterpretedOption_NamePart>): UninterpretedOption_NamePart {\n    const message = createBaseUninterpretedOption_NamePart();\n    message.namePart = object.namePart ?? undefined;\n    message.isExtension = object.isExtension ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseSourceCodeInfo(): SourceCodeInfo {\n  return {};\n}\n\nexport const SourceCodeInfo: MessageFns<SourceCodeInfo> = {\n  encode(message: SourceCodeInfo, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.location !== undefined && message.location.length !== 0) {\n      for (const v of message.location) {\n        SourceCodeInfo_Location.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): SourceCodeInfo {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseSourceCodeInfo();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.location === undefined) {\n            message.location = [];\n          }\n          const el = SourceCodeInfo_Location.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.location!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): SourceCodeInfo {\n    return {\n      location: globalThis.Array.isArray(object?.location)\n        ? object.location.map((e: any) => SourceCodeInfo_Location.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: SourceCodeInfo): unknown {\n    const obj: any = {};\n    if (message.location?.length) {\n      obj.location = message.location.map((e) => SourceCodeInfo_Location.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<SourceCodeInfo>): SourceCodeInfo {\n    return SourceCodeInfo.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<SourceCodeInfo>): SourceCodeInfo {\n    const message = createBaseSourceCodeInfo();\n    message.location = object.location?.map((e) => SourceCodeInfo_Location.fromPartial(e)) || undefined;\n    return message;\n  },\n};\n\nfunction createBaseSourceCodeInfo_Location(): SourceCodeInfo_Location {\n  return {};\n}\n\nexport const SourceCodeInfo_Location: MessageFns<SourceCodeInfo_Location> = {\n  encode(message: SourceCodeInfo_Location, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.path !== undefined && message.path.length !== 0) {\n      writer.uint32(10).fork();\n      for (const v of message.path) {\n        writer.int32(v);\n      }\n      writer.join();\n    }\n    if (message.span !== undefined && message.span.length !== 0) {\n      writer.uint32(18).fork();\n      for (const v of message.span) {\n        writer.int32(v);\n      }\n      writer.join();\n    }\n    if (message.leadingComments !== undefined && message.leadingComments !== \"\") {\n      writer.uint32(26).string(message.leadingComments);\n    }\n    if (message.trailingComments !== undefined && message.trailingComments !== \"\") {\n      writer.uint32(34).string(message.trailingComments);\n    }\n    if (message.leadingDetachedComments !== undefined && message.leadingDetachedComments.length !== 0) {\n      for (const v of message.leadingDetachedComments) {\n        writer.uint32(50).string(v!);\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): SourceCodeInfo_Location {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseSourceCodeInfo_Location();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag === 8) {\n            if (message.path === undefined) {\n              message.path = [];\n            }\n            message.path!.push(reader.int32());\n\n            continue;\n          }\n\n          if (tag === 10) {\n            if (message.path === undefined) {\n              message.path = [];\n            }\n            const end2 = reader.uint32() + reader.pos;\n            while (reader.pos < end2) {\n              message.path!.push(reader.int32());\n            }\n\n            continue;\n          }\n\n          break;\n        }\n        case 2: {\n          if (tag === 16) {\n            if (message.span === undefined) {\n              message.span = [];\n            }\n            message.span!.push(reader.int32());\n\n            continue;\n          }\n\n          if (tag === 18) {\n            if (message.span === undefined) {\n              message.span = [];\n            }\n            const end2 = reader.uint32() + reader.pos;\n            while (reader.pos < end2) {\n              message.span!.push(reader.int32());\n            }\n\n            continue;\n          }\n\n          break;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.leadingComments = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.trailingComments = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          if (message.leadingDetachedComments === undefined) {\n            message.leadingDetachedComments = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.leadingDetachedComments!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): SourceCodeInfo_Location {\n    return {\n      path: globalThis.Array.isArray(object?.path) ? object.path.map((e: any) => globalThis.Number(e)) : undefined,\n      span: globalThis.Array.isArray(object?.span) ? object.span.map((e: any) => globalThis.Number(e)) : undefined,\n      leadingComments: isSet(object.leadingComments) ? globalThis.String(object.leadingComments) : undefined,\n      trailingComments: isSet(object.trailingComments) ? globalThis.String(object.trailingComments) : undefined,\n      leadingDetachedComments: globalThis.Array.isArray(object?.leadingDetachedComments)\n        ? object.leadingDetachedComments.map((e: any) => globalThis.String(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: SourceCodeInfo_Location): unknown {\n    const obj: any = {};\n    if (message.path?.length) {\n      obj.path = message.path.map((e) => Math.round(e));\n    }\n    if (message.span?.length) {\n      obj.span = message.span.map((e) => Math.round(e));\n    }\n    if (message.leadingComments !== undefined && message.leadingComments !== \"\") {\n      obj.leadingComments = message.leadingComments;\n    }\n    if (message.trailingComments !== undefined && message.trailingComments !== \"\") {\n      obj.trailingComments = message.trailingComments;\n    }\n    if (message.leadingDetachedComments?.length) {\n      obj.leadingDetachedComments = message.leadingDetachedComments;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<SourceCodeInfo_Location>): SourceCodeInfo_Location {\n    return SourceCodeInfo_Location.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<SourceCodeInfo_Location>): SourceCodeInfo_Location {\n    const message = createBaseSourceCodeInfo_Location();\n    message.path = object.path?.map((e) => e) || undefined;\n    message.span = object.span?.map((e) => e) || undefined;\n    message.leadingComments = object.leadingComments ?? undefined;\n    message.trailingComments = object.trailingComments ?? undefined;\n    message.leadingDetachedComments = object.leadingDetachedComments?.map((e) => e) || undefined;\n    return message;\n  },\n};\n\nfunction createBaseGeneratedCodeInfo(): GeneratedCodeInfo {\n  return {};\n}\n\nexport const GeneratedCodeInfo: MessageFns<GeneratedCodeInfo> = {\n  encode(message: GeneratedCodeInfo, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.annotation !== undefined && message.annotation.length !== 0) {\n      for (const v of message.annotation) {\n        GeneratedCodeInfo_Annotation.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GeneratedCodeInfo {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGeneratedCodeInfo();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.annotation === undefined) {\n            message.annotation = [];\n          }\n          const el = GeneratedCodeInfo_Annotation.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.annotation!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GeneratedCodeInfo {\n    return {\n      annotation: globalThis.Array.isArray(object?.annotation)\n        ? object.annotation.map((e: any) => GeneratedCodeInfo_Annotation.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: GeneratedCodeInfo): unknown {\n    const obj: any = {};\n    if (message.annotation?.length) {\n      obj.annotation = message.annotation.map((e) => GeneratedCodeInfo_Annotation.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GeneratedCodeInfo>): GeneratedCodeInfo {\n    return GeneratedCodeInfo.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GeneratedCodeInfo>): GeneratedCodeInfo {\n    const message = createBaseGeneratedCodeInfo();\n    message.annotation = object.annotation?.map((e) => GeneratedCodeInfo_Annotation.fromPartial(e)) || undefined;\n    return message;\n  },\n};\n\nfunction createBaseGeneratedCodeInfo_Annotation(): GeneratedCodeInfo_Annotation {\n  return {};\n}\n\nexport const GeneratedCodeInfo_Annotation: MessageFns<GeneratedCodeInfo_Annotation> = {\n  encode(message: GeneratedCodeInfo_Annotation, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.path !== undefined && message.path.length !== 0) {\n      writer.uint32(10).fork();\n      for (const v of message.path) {\n        writer.int32(v);\n      }\n      writer.join();\n    }\n    if (message.sourceFile !== undefined && message.sourceFile !== \"\") {\n      writer.uint32(18).string(message.sourceFile);\n    }\n    if (message.begin !== undefined && message.begin !== 0) {\n      writer.uint32(24).int32(message.begin);\n    }\n    if (message.end !== undefined && message.end !== 0) {\n      writer.uint32(32).int32(message.end);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GeneratedCodeInfo_Annotation {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGeneratedCodeInfo_Annotation();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag === 8) {\n            if (message.path === undefined) {\n              message.path = [];\n            }\n            message.path!.push(reader.int32());\n\n            continue;\n          }\n\n          if (tag === 10) {\n            if (message.path === undefined) {\n              message.path = [];\n            }\n            const end2 = reader.uint32() + reader.pos;\n            while (reader.pos < end2) {\n              message.path!.push(reader.int32());\n            }\n\n            continue;\n          }\n\n          break;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.sourceFile = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.begin = reader.int32();\n          continue;\n        }\n        case 4: {\n          if (tag !== 32) {\n            break;\n          }\n\n          message.end = reader.int32();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GeneratedCodeInfo_Annotation {\n    return {\n      path: globalThis.Array.isArray(object?.path) ? object.path.map((e: any) => globalThis.Number(e)) : undefined,\n      sourceFile: isSet(object.sourceFile) ? globalThis.String(object.sourceFile) : undefined,\n      begin: isSet(object.begin) ? globalThis.Number(object.begin) : undefined,\n      end: isSet(object.end) ? globalThis.Number(object.end) : undefined,\n    };\n  },\n\n  toJSON(message: GeneratedCodeInfo_Annotation): unknown {\n    const obj: any = {};\n    if (message.path?.length) {\n      obj.path = message.path.map((e) => Math.round(e));\n    }\n    if (message.sourceFile !== undefined && message.sourceFile !== \"\") {\n      obj.sourceFile = message.sourceFile;\n    }\n    if (message.begin !== undefined && message.begin !== 0) {\n      obj.begin = Math.round(message.begin);\n    }\n    if (message.end !== undefined && message.end !== 0) {\n      obj.end = Math.round(message.end);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GeneratedCodeInfo_Annotation>): GeneratedCodeInfo_Annotation {\n    return GeneratedCodeInfo_Annotation.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GeneratedCodeInfo_Annotation>): GeneratedCodeInfo_Annotation {\n    const message = createBaseGeneratedCodeInfo_Annotation();\n    message.path = object.path?.map((e) => e) || undefined;\n    message.sourceFile = object.sourceFile ?? undefined;\n    message.begin = object.begin ?? undefined;\n    message.end = object.end ?? undefined;\n    return message;\n  },\n};\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"google/protobuf/descriptor.proto\",\n    \"package\": \"google.protobuf\",\n    \"dependency\": [],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"FileDescriptorSet\",\n      \"field\": [{\n        \"name\": \"file\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.FileDescriptorProto\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"file\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"FileDescriptorProto\",\n      \"field\": [{\n        \"name\": \"name\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"package\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"package\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"dependency\",\n        \"number\": 3,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"dependency\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"public_dependency\",\n        \"number\": 10,\n        \"label\": 3,\n        \"type\": 5,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"publicDependency\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"weak_dependency\",\n        \"number\": 11,\n        \"label\": 3,\n        \"type\": 5,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"weakDependency\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"message_type\",\n        \"number\": 4,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.DescriptorProto\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"messageType\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"enum_type\",\n        \"number\": 5,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.EnumDescriptorProto\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"enumType\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"service\",\n        \"number\": 6,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.ServiceDescriptorProto\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"service\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"extension\",\n        \"number\": 7,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.FieldDescriptorProto\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"extension\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"options\",\n        \"number\": 8,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.FileOptions\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"options\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"source_code_info\",\n        \"number\": 9,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.SourceCodeInfo\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"sourceCodeInfo\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"syntax\",\n        \"number\": 12,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"syntax\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"DescriptorProto\",\n      \"field\": [{\n        \"name\": \"name\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"field\",\n        \"number\": 2,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.FieldDescriptorProto\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"field\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"extension\",\n        \"number\": 6,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.FieldDescriptorProto\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"extension\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"nested_type\",\n        \"number\": 3,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.DescriptorProto\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"nestedType\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"enum_type\",\n        \"number\": 4,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.EnumDescriptorProto\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"enumType\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"extension_range\",\n        \"number\": 5,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.DescriptorProto.ExtensionRange\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"extensionRange\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"oneof_decl\",\n        \"number\": 8,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.OneofDescriptorProto\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"oneofDecl\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"options\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.MessageOptions\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"options\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"reserved_range\",\n        \"number\": 9,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.DescriptorProto.ReservedRange\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"reservedRange\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"reserved_name\",\n        \"number\": 10,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"reservedName\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [{\n        \"name\": \"ExtensionRange\",\n        \"field\": [{\n          \"name\": \"start\",\n          \"number\": 1,\n          \"label\": 1,\n          \"type\": 5,\n          \"typeName\": \"\",\n          \"extendee\": \"\",\n          \"defaultValue\": \"\",\n          \"oneofIndex\": 0,\n          \"jsonName\": \"start\",\n          \"options\": undefined,\n          \"proto3Optional\": false,\n        }, {\n          \"name\": \"end\",\n          \"number\": 2,\n          \"label\": 1,\n          \"type\": 5,\n          \"typeName\": \"\",\n          \"extendee\": \"\",\n          \"defaultValue\": \"\",\n          \"oneofIndex\": 0,\n          \"jsonName\": \"end\",\n          \"options\": undefined,\n          \"proto3Optional\": false,\n        }],\n        \"extension\": [],\n        \"nestedType\": [],\n        \"enumType\": [],\n        \"extensionRange\": [],\n        \"oneofDecl\": [],\n        \"options\": undefined,\n        \"reservedRange\": [],\n        \"reservedName\": [],\n      }, {\n        \"name\": \"ReservedRange\",\n        \"field\": [{\n          \"name\": \"start\",\n          \"number\": 1,\n          \"label\": 1,\n          \"type\": 5,\n          \"typeName\": \"\",\n          \"extendee\": \"\",\n          \"defaultValue\": \"\",\n          \"oneofIndex\": 0,\n          \"jsonName\": \"start\",\n          \"options\": undefined,\n          \"proto3Optional\": false,\n        }, {\n          \"name\": \"end\",\n          \"number\": 2,\n          \"label\": 1,\n          \"type\": 5,\n          \"typeName\": \"\",\n          \"extendee\": \"\",\n          \"defaultValue\": \"\",\n          \"oneofIndex\": 0,\n          \"jsonName\": \"end\",\n          \"options\": undefined,\n          \"proto3Optional\": false,\n        }],\n        \"extension\": [],\n        \"nestedType\": [],\n        \"enumType\": [],\n        \"extensionRange\": [],\n        \"oneofDecl\": [],\n        \"options\": undefined,\n        \"reservedRange\": [],\n        \"reservedName\": [],\n      }],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"FieldDescriptorProto\",\n      \"field\": [{\n        \"name\": \"name\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"number\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 5,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"number\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"label\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".google.protobuf.FieldDescriptorProto.Label\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"label\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"type\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".google.protobuf.FieldDescriptorProto.Type\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"type\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"type_name\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"typeName\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"extendee\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"extendee\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"default_value\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"defaultValue\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"oneof_index\",\n        \"number\": 9,\n        \"label\": 1,\n        \"type\": 5,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"oneofIndex\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"json_name\",\n        \"number\": 10,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"jsonName\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"options\",\n        \"number\": 8,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.FieldOptions\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"options\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [{\n        \"name\": \"Type\",\n        \"value\": [\n          { \"name\": \"TYPE_DOUBLE\", \"number\": 1, \"options\": undefined },\n          { \"name\": \"TYPE_FLOAT\", \"number\": 2, \"options\": undefined },\n          { \"name\": \"TYPE_INT64\", \"number\": 3, \"options\": undefined },\n          { \"name\": \"TYPE_UINT64\", \"number\": 4, \"options\": undefined },\n          { \"name\": \"TYPE_INT32\", \"number\": 5, \"options\": undefined },\n          { \"name\": \"TYPE_FIXED64\", \"number\": 6, \"options\": undefined },\n          { \"name\": \"TYPE_FIXED32\", \"number\": 7, \"options\": undefined },\n          { \"name\": \"TYPE_BOOL\", \"number\": 8, \"options\": undefined },\n          { \"name\": \"TYPE_STRING\", \"number\": 9, \"options\": undefined },\n          { \"name\": \"TYPE_GROUP\", \"number\": 10, \"options\": undefined },\n          { \"name\": \"TYPE_MESSAGE\", \"number\": 11, \"options\": undefined },\n          { \"name\": \"TYPE_BYTES\", \"number\": 12, \"options\": undefined },\n          { \"name\": \"TYPE_UINT32\", \"number\": 13, \"options\": undefined },\n          { \"name\": \"TYPE_ENUM\", \"number\": 14, \"options\": undefined },\n          { \"name\": \"TYPE_SFIXED32\", \"number\": 15, \"options\": undefined },\n          { \"name\": \"TYPE_SFIXED64\", \"number\": 16, \"options\": undefined },\n          { \"name\": \"TYPE_SINT32\", \"number\": 17, \"options\": undefined },\n          { \"name\": \"TYPE_SINT64\", \"number\": 18, \"options\": undefined },\n        ],\n        \"options\": undefined,\n        \"reservedRange\": [],\n        \"reservedName\": [],\n      }, {\n        \"name\": \"Label\",\n        \"value\": [{ \"name\": \"LABEL_OPTIONAL\", \"number\": 1, \"options\": undefined }, {\n          \"name\": \"LABEL_REQUIRED\",\n          \"number\": 2,\n          \"options\": undefined,\n        }, { \"name\": \"LABEL_REPEATED\", \"number\": 3, \"options\": undefined }],\n        \"options\": undefined,\n        \"reservedRange\": [],\n        \"reservedName\": [],\n      }],\n      \"extensionRange\": [],\n      \"oneofDecl\": [],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"OneofDescriptorProto\",\n      \"field\": [{\n        \"name\": \"name\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"EnumDescriptorProto\",\n      \"field\": [{\n        \"name\": \"name\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"value\",\n        \"number\": 2,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.EnumValueDescriptorProto\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"value\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"options\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.EnumOptions\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"options\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"EnumValueDescriptorProto\",\n      \"field\": [{\n        \"name\": \"name\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"number\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 5,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"number\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"options\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.EnumValueOptions\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"options\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ServiceDescriptorProto\",\n      \"field\": [{\n        \"name\": \"name\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"method\",\n        \"number\": 2,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.MethodDescriptorProto\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"method\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"options\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.ServiceOptions\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"options\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"MethodDescriptorProto\",\n      \"field\": [{\n        \"name\": \"name\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"input_type\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"inputType\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"output_type\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"outputType\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"options\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.MethodOptions\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"options\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"client_streaming\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"false\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"clientStreaming\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"server_streaming\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"false\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"serverStreaming\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"FileOptions\",\n      \"field\": [{\n        \"name\": \"java_package\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"javaPackage\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"java_outer_classname\",\n        \"number\": 8,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"javaOuterClassname\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"java_multiple_files\",\n        \"number\": 10,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"false\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"javaMultipleFiles\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"java_generate_equals_and_hash\",\n        \"number\": 20,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"false\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"javaGenerateEqualsAndHash\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"java_string_check_utf8\",\n        \"number\": 27,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"false\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"javaStringCheckUtf8\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"optimize_for\",\n        \"number\": 9,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".google.protobuf.FileOptions.OptimizeMode\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"SPEED\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"optimizeFor\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"go_package\",\n        \"number\": 11,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"goPackage\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"cc_generic_services\",\n        \"number\": 16,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"false\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"ccGenericServices\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"java_generic_services\",\n        \"number\": 17,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"false\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"javaGenericServices\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"py_generic_services\",\n        \"number\": 18,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"false\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"pyGenericServices\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"deprecated\",\n        \"number\": 23,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"false\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"deprecated\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"cc_enable_arenas\",\n        \"number\": 31,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"false\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"ccEnableArenas\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"objc_class_prefix\",\n        \"number\": 36,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"objcClassPrefix\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"csharp_namespace\",\n        \"number\": 37,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"csharpNamespace\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"uninterpreted_option\",\n        \"number\": 999,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.UninterpretedOption\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"uninterpretedOption\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [{\n        \"name\": \"OptimizeMode\",\n        \"value\": [{ \"name\": \"SPEED\", \"number\": 1, \"options\": undefined }, {\n          \"name\": \"CODE_SIZE\",\n          \"number\": 2,\n          \"options\": undefined,\n        }, { \"name\": \"LITE_RUNTIME\", \"number\": 3, \"options\": undefined }],\n        \"options\": undefined,\n        \"reservedRange\": [],\n        \"reservedName\": [],\n      }],\n      \"extensionRange\": [{ \"start\": 1000, \"end\": 536870912, \"options\": undefined }],\n      \"oneofDecl\": [],\n      \"options\": undefined,\n      \"reservedRange\": [{ \"start\": 38, \"end\": 39 }],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"MessageOptions\",\n      \"field\": [{\n        \"name\": \"message_set_wire_format\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"false\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"messageSetWireFormat\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"no_standard_descriptor_accessor\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"false\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"noStandardDescriptorAccessor\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"deprecated\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"false\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"deprecated\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"map_entry\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"mapEntry\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"uninterpreted_option\",\n        \"number\": 999,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.UninterpretedOption\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"uninterpretedOption\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [{ \"start\": 1000, \"end\": 536870912, \"options\": undefined }],\n      \"oneofDecl\": [],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"FieldOptions\",\n      \"field\": [{\n        \"name\": \"ctype\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".google.protobuf.FieldOptions.CType\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"STRING\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"ctype\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"packed\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"packed\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"jstype\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".google.protobuf.FieldOptions.JSType\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"JS_NORMAL\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"jstype\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"lazy\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"false\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"lazy\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"deprecated\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"false\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"deprecated\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"weak\",\n        \"number\": 10,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"false\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"weak\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"uninterpreted_option\",\n        \"number\": 999,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.UninterpretedOption\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"uninterpretedOption\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [{\n        \"name\": \"CType\",\n        \"value\": [{ \"name\": \"STRING\", \"number\": 0, \"options\": undefined }, {\n          \"name\": \"CORD\",\n          \"number\": 1,\n          \"options\": undefined,\n        }, { \"name\": \"STRING_PIECE\", \"number\": 2, \"options\": undefined }],\n        \"options\": undefined,\n        \"reservedRange\": [],\n        \"reservedName\": [],\n      }, {\n        \"name\": \"JSType\",\n        \"value\": [{ \"name\": \"JS_NORMAL\", \"number\": 0, \"options\": undefined }, {\n          \"name\": \"JS_STRING\",\n          \"number\": 1,\n          \"options\": undefined,\n        }, { \"name\": \"JS_NUMBER\", \"number\": 2, \"options\": undefined }],\n        \"options\": undefined,\n        \"reservedRange\": [],\n        \"reservedName\": [],\n      }],\n      \"extensionRange\": [{ \"start\": 1000, \"end\": 536870912, \"options\": undefined }],\n      \"oneofDecl\": [],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"EnumOptions\",\n      \"field\": [{\n        \"name\": \"allow_alias\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"allowAlias\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"deprecated\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"false\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"deprecated\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"uninterpreted_option\",\n        \"number\": 999,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.UninterpretedOption\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"uninterpretedOption\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [{ \"start\": 1000, \"end\": 536870912, \"options\": undefined }],\n      \"oneofDecl\": [],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"EnumValueOptions\",\n      \"field\": [{\n        \"name\": \"deprecated\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"false\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"deprecated\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"uninterpreted_option\",\n        \"number\": 999,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.UninterpretedOption\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"uninterpretedOption\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [{ \"start\": 1000, \"end\": 536870912, \"options\": undefined }],\n      \"oneofDecl\": [],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ServiceOptions\",\n      \"field\": [{\n        \"name\": \"deprecated\",\n        \"number\": 33,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"false\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"deprecated\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"uninterpreted_option\",\n        \"number\": 999,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.UninterpretedOption\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"uninterpretedOption\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [{ \"start\": 1000, \"end\": 536870912, \"options\": undefined }],\n      \"oneofDecl\": [],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"MethodOptions\",\n      \"field\": [{\n        \"name\": \"deprecated\",\n        \"number\": 33,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"false\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"deprecated\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"uninterpreted_option\",\n        \"number\": 999,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.UninterpretedOption\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"uninterpretedOption\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [{ \"start\": 1000, \"end\": 536870912, \"options\": undefined }],\n      \"oneofDecl\": [],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"UninterpretedOption\",\n      \"field\": [{\n        \"name\": \"name\",\n        \"number\": 2,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.UninterpretedOption.NamePart\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"identifier_value\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"identifierValue\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"positive_int_value\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 4,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"positiveIntValue\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"negative_int_value\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 3,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"negativeIntValue\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"double_value\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 1,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"doubleValue\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"string_value\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 12,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"stringValue\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"aggregate_value\",\n        \"number\": 8,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"aggregateValue\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [{\n        \"name\": \"NamePart\",\n        \"field\": [{\n          \"name\": \"name_part\",\n          \"number\": 1,\n          \"label\": 2,\n          \"type\": 9,\n          \"typeName\": \"\",\n          \"extendee\": \"\",\n          \"defaultValue\": \"\",\n          \"oneofIndex\": 0,\n          \"jsonName\": \"namePart\",\n          \"options\": undefined,\n          \"proto3Optional\": false,\n        }, {\n          \"name\": \"is_extension\",\n          \"number\": 2,\n          \"label\": 2,\n          \"type\": 8,\n          \"typeName\": \"\",\n          \"extendee\": \"\",\n          \"defaultValue\": \"\",\n          \"oneofIndex\": 0,\n          \"jsonName\": \"isExtension\",\n          \"options\": undefined,\n          \"proto3Optional\": false,\n        }],\n        \"extension\": [],\n        \"nestedType\": [],\n        \"enumType\": [],\n        \"extensionRange\": [],\n        \"oneofDecl\": [],\n        \"options\": undefined,\n        \"reservedRange\": [],\n        \"reservedName\": [],\n      }],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"SourceCodeInfo\",\n      \"field\": [{\n        \"name\": \"location\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.SourceCodeInfo.Location\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"location\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [{\n        \"name\": \"Location\",\n        \"field\": [{\n          \"name\": \"path\",\n          \"number\": 1,\n          \"label\": 3,\n          \"type\": 5,\n          \"typeName\": \"\",\n          \"extendee\": \"\",\n          \"defaultValue\": \"\",\n          \"oneofIndex\": 0,\n          \"jsonName\": \"path\",\n          \"options\": {\n            \"ctype\": 0,\n            \"packed\": true,\n            \"jstype\": 0,\n            \"lazy\": false,\n            \"deprecated\": false,\n            \"weak\": false,\n            \"uninterpretedOption\": [],\n          },\n          \"proto3Optional\": false,\n        }, {\n          \"name\": \"span\",\n          \"number\": 2,\n          \"label\": 3,\n          \"type\": 5,\n          \"typeName\": \"\",\n          \"extendee\": \"\",\n          \"defaultValue\": \"\",\n          \"oneofIndex\": 0,\n          \"jsonName\": \"span\",\n          \"options\": {\n            \"ctype\": 0,\n            \"packed\": true,\n            \"jstype\": 0,\n            \"lazy\": false,\n            \"deprecated\": false,\n            \"weak\": false,\n            \"uninterpretedOption\": [],\n          },\n          \"proto3Optional\": false,\n        }, {\n          \"name\": \"leading_comments\",\n          \"number\": 3,\n          \"label\": 1,\n          \"type\": 9,\n          \"typeName\": \"\",\n          \"extendee\": \"\",\n          \"defaultValue\": \"\",\n          \"oneofIndex\": 0,\n          \"jsonName\": \"leadingComments\",\n          \"options\": undefined,\n          \"proto3Optional\": false,\n        }, {\n          \"name\": \"trailing_comments\",\n          \"number\": 4,\n          \"label\": 1,\n          \"type\": 9,\n          \"typeName\": \"\",\n          \"extendee\": \"\",\n          \"defaultValue\": \"\",\n          \"oneofIndex\": 0,\n          \"jsonName\": \"trailingComments\",\n          \"options\": undefined,\n          \"proto3Optional\": false,\n        }, {\n          \"name\": \"leading_detached_comments\",\n          \"number\": 6,\n          \"label\": 3,\n          \"type\": 9,\n          \"typeName\": \"\",\n          \"extendee\": \"\",\n          \"defaultValue\": \"\",\n          \"oneofIndex\": 0,\n          \"jsonName\": \"leadingDetachedComments\",\n          \"options\": undefined,\n          \"proto3Optional\": false,\n        }],\n        \"extension\": [],\n        \"nestedType\": [],\n        \"enumType\": [],\n        \"extensionRange\": [],\n        \"oneofDecl\": [],\n        \"options\": undefined,\n        \"reservedRange\": [],\n        \"reservedName\": [],\n      }],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"GeneratedCodeInfo\",\n      \"field\": [{\n        \"name\": \"annotation\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.GeneratedCodeInfo.Annotation\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"annotation\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [{\n        \"name\": \"Annotation\",\n        \"field\": [{\n          \"name\": \"path\",\n          \"number\": 1,\n          \"label\": 3,\n          \"type\": 5,\n          \"typeName\": \"\",\n          \"extendee\": \"\",\n          \"defaultValue\": \"\",\n          \"oneofIndex\": 0,\n          \"jsonName\": \"path\",\n          \"options\": {\n            \"ctype\": 0,\n            \"packed\": true,\n            \"jstype\": 0,\n            \"lazy\": false,\n            \"deprecated\": false,\n            \"weak\": false,\n            \"uninterpretedOption\": [],\n          },\n          \"proto3Optional\": false,\n        }, {\n          \"name\": \"source_file\",\n          \"number\": 2,\n          \"label\": 1,\n          \"type\": 9,\n          \"typeName\": \"\",\n          \"extendee\": \"\",\n          \"defaultValue\": \"\",\n          \"oneofIndex\": 0,\n          \"jsonName\": \"sourceFile\",\n          \"options\": undefined,\n          \"proto3Optional\": false,\n        }, {\n          \"name\": \"begin\",\n          \"number\": 3,\n          \"label\": 1,\n          \"type\": 5,\n          \"typeName\": \"\",\n          \"extendee\": \"\",\n          \"defaultValue\": \"\",\n          \"oneofIndex\": 0,\n          \"jsonName\": \"begin\",\n          \"options\": undefined,\n          \"proto3Optional\": false,\n        }, {\n          \"name\": \"end\",\n          \"number\": 4,\n          \"label\": 1,\n          \"type\": 5,\n          \"typeName\": \"\",\n          \"extendee\": \"\",\n          \"defaultValue\": \"\",\n          \"oneofIndex\": 0,\n          \"jsonName\": \"end\",\n          \"options\": undefined,\n          \"proto3Optional\": false,\n        }],\n        \"extension\": [],\n        \"nestedType\": [],\n        \"enumType\": [],\n        \"extensionRange\": [],\n        \"oneofDecl\": [],\n        \"options\": undefined,\n        \"reservedRange\": [],\n        \"reservedName\": [],\n      }],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [],\n    \"extension\": [],\n    \"options\": {\n      \"javaPackage\": \"com.google.protobuf\",\n      \"javaOuterClassname\": \"DescriptorProtos\",\n      \"javaMultipleFiles\": false,\n      \"javaGenerateEqualsAndHash\": false,\n      \"javaStringCheckUtf8\": false,\n      \"optimizeFor\": 1,\n      \"goPackage\": \"descriptor\",\n      \"ccGenericServices\": false,\n      \"javaGenericServices\": false,\n      \"pyGenericServices\": false,\n      \"phpGenericServices\": false,\n      \"deprecated\": false,\n      \"ccEnableArenas\": true,\n      \"objcClassPrefix\": \"GPB\",\n      \"csharpNamespace\": \"Google.Protobuf.Reflection\",\n      \"swiftPrefix\": \"\",\n      \"phpClassPrefix\": \"\",\n      \"phpNamespace\": \"\",\n      \"phpMetadataNamespace\": \"\",\n      \"rubyPackage\": \"\",\n      \"uninterpretedOption\": [],\n    },\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [8, 9],\n        \"span\": [51, 0, 28],\n        \"leadingComments\":\n          \"* descriptor.proto must be optimized for speed because reflection-based\\n algorithms don't work during bootstrapping.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 0],\n        \"span\": [56, 0, 58, 1],\n        \"leadingComments\":\n          \" The protocol compiler can output a FileDescriptorSet containing the .proto\\n files it parses.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 1],\n        \"span\": [61, 0, 90, 1],\n        \"leadingComments\": \"/ Describes a complete .proto file.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 1, 2, 0],\n        \"span\": [62, 2, 27],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \"/ file name, relative to root of source tree\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 1, 2, 1],\n        \"span\": [63, 2, 30],\n        \"leadingComments\": \"\",\n        \"trailingComments\": '/ e.g. \"foo\", \"foo.bar\", etc.\\n',\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 1, 2, 2],\n        \"span\": [66, 2, 33],\n        \"leadingComments\": \"/ Names of files imported by this file.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 1, 2, 3],\n        \"span\": [68, 2, 40],\n        \"leadingComments\": \"/ Indexes of the public imported files in the dependency list above.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 1, 2, 4],\n        \"span\": [71, 2, 38],\n        \"leadingComments\":\n          \"/ Indexes of the weak imported files in the dependency list.\\n/ For Google-internal migration only. Do not use.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 1, 2, 5],\n        \"span\": [74, 2, 44],\n        \"leadingComments\": \"/ All top-level definitions in this file.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 1, 2, 10],\n        \"span\": [85, 2, 47],\n        \"leadingComments\":\n          \"/ This field contains optional information about the original source code.\\n/ You may safely remove this entire field without harming runtime\\n/ functionality of the descriptors -- the information is needed only by\\n/ development tools.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 1, 2, 11],\n        \"span\": [89, 2, 30],\n        \"leadingComments\": '/ The syntax of the proto file.\\n/ The supported values are \"proto2\" and \"proto3\".\\n',\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 2],\n        \"span\": [93, 0, 123, 1],\n        \"leadingComments\": \"/ Describes a message type.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 2, 3, 1],\n        \"span\": [115, 2, 118, 3],\n        \"leadingComments\":\n          \"/ Range of reserved tag numbers. Reserved tag numbers may not be used by\\n/ fields or extension ranges in the same message. Reserved ranges may\\n/ not overlap.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 2, 3, 1, 2, 0],\n        \"span\": [116, 4, 29],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \"/ Inclusive.\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 2, 3, 1, 2, 1],\n        \"span\": [117, 4, 27],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \"/ Exclusive.\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 2, 2, 9],\n        \"span\": [122, 2, 37],\n        \"leadingComments\":\n          \"/ Reserved field names, which may not be used by fields in the same message.\\n/ A given name may only be reserved once.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 3],\n        \"span\": [126, 0, 201, 1],\n        \"leadingComments\": \"/ Describes a field within a message.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 3, 4, 0, 2, 0],\n        \"span\": [130, 4, 28],\n        \"leadingComments\": \"/ 0 is reserved for errors.\\n/ Order is weird for historical reasons.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 3, 4, 0, 2, 2],\n        \"span\": [134, 4, 28],\n        \"leadingComments\":\n          \"/ Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if\\n/ negative values are likely.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 3, 4, 0, 2, 4],\n        \"span\": [138, 4, 28],\n        \"leadingComments\":\n          \"/ Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if\\n/ negative values are likely.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 3, 4, 0, 2, 9],\n        \"span\": [143, 4, 29],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \"/ Tag-delimited aggregate.\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 3, 4, 0, 2, 10],\n        \"span\": [144, 4, 29],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \"/ Length-delimited aggregate.\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 3, 4, 0, 2, 11],\n        \"span\": [147, 4, 29],\n        \"leadingComments\": \"/ New in version 2.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 3, 4, 0, 2, 16],\n        \"span\": [152, 4, 29],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \"/ Uses ZigZag encoding.\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 3, 4, 0, 2, 17],\n        \"span\": [153, 4, 29],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \"/ Uses ZigZag encoding.\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 3, 4, 1, 2, 0],\n        \"span\": [158, 4, 28],\n        \"leadingComments\": \"/ 0 is reserved for errors\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 3, 4, 1, 2, 2],\n        \"span\": [160, 4, 28],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \"/ TODO(sanjay): Should we add LABEL_MAP?\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 3, 2, 3],\n        \"span\": [170, 2, 25],\n        \"leadingComments\":\n          \"/ If type_name is set, this need not be set.  If both this and type_name\\n/ are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 3, 2, 4],\n        \"span\": [177, 2, 32],\n        \"leadingComments\":\n          \"/ For message and enum types, this is the name of the type.  If the name\\n/ starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping\\n/ rules are used to find the type (i.e. first the nested types within this\\n/ message are searched, then within the parent, on up to the root\\n/ namespace).\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 3, 2, 5],\n        \"span\": [181, 2, 31],\n        \"leadingComments\":\n          \"/ For extensions, this is the name of the type being extended.  It is\\n/ resolved in the same manner as type_name.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 3, 2, 6],\n        \"span\": [188, 2, 36],\n        \"leadingComments\":\n          '/ For numeric types, contains the original text representation of the value.\\n/ For booleans, \"true\" or \"false\".\\n/ For strings, contains the default text contents (not escaped in any way).\\n/ For bytes, contains the C escaped value.  All bytes >= 128 are escaped.\\n/ TODO(kenton):  Base-64 encode?\\n',\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 3, 2, 7],\n        \"span\": [192, 2, 33],\n        \"leadingComments\":\n          \"/ If set, gives the index of a oneof in the containing type's oneof_decl\\n/ list.  This field is a member of that oneof.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 3, 2, 8],\n        \"span\": [198, 2, 33],\n        \"leadingComments\":\n          \"/ JSON name of this field. The value is set by protocol compiler. If the\\n/ user has set a \\\"json_name\\\" option on this field, that option's value\\n/ will be used. Otherwise, it's deduced from the field's name by converting\\n/ it to camelCase.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4],\n        \"span\": [204, 0, 206, 1],\n        \"leadingComments\": \"/ Describes a oneof.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 5],\n        \"span\": [209, 0, 215, 1],\n        \"leadingComments\": \"/ Describes an enum type.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 6],\n        \"span\": [218, 0, 223, 1],\n        \"leadingComments\": \"/ Describes a value within an enum.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 7],\n        \"span\": [226, 0, 231, 1],\n        \"leadingComments\": \"/ Describes a service.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 8],\n        \"span\": [234, 0, 248, 1],\n        \"leadingComments\": \"/ Describes a method of a service.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 8, 2, 1],\n        \"span\": [239, 2, 33],\n        \"leadingComments\":\n          \"/ Input and output type names.  These are resolved in the same way as\\n/ FieldDescriptorProto.type_name, but must refer to a message type.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 8, 2, 4],\n        \"span\": [245, 2, 53],\n        \"leadingComments\": \"/ Identifies if client streams multiple client messages\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 8, 2, 5],\n        \"span\": [247, 2, 53],\n        \"leadingComments\": \"/ Identifies if server streams multiple server messages\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 9, 2, 0],\n        \"span\": [290, 2, 35],\n        \"leadingComments\":\n          \"/ Sets the Java package where classes generated from this .proto will be\\n/ placed.  By default, the proto package is used, but this is often\\n/ inappropriate because proto packages do not normally start with backwards\\n/ domain names.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 9, 2, 1],\n        \"span\": [298, 2, 43],\n        \"leadingComments\":\n          '/ If set, all the classes from the .proto file are wrapped in a single\\n/ outer class with the given name.  This applies to both Proto1\\n/ (equivalent to the old \"--one_java_file\" option) and Proto2 (where\\n/ a .proto always translates to a single class, but you may want to\\n/ explicitly choose the class name).\\n',\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 9, 2, 2],\n        \"span\": [306, 2, 57],\n        \"leadingComments\":\n          \"/ If set true, then the Java code generator will generate a separate .java\\n/ file for each top-level message, enum, and service defined in the .proto\\n/ file.  Thus, these types will *not* be nested inside the outer class\\n/ named by java_outer_classname.  However, the outer class will still be\\n/ generated to contain the file's getDescriptor() method as well as any\\n/ top-level extensions defined in the file.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 9, 2, 3],\n        \"span\": [320, 2, 67],\n        \"leadingComments\":\n          \"/ If set true, then the Java code generator will generate equals() and\\n/ hashCode() methods for all messages defined in the .proto file.\\n/ This increases generated code size, potentially substantially for large\\n/ protos, which may harm a memory-constrained application.\\n/ - In the full runtime this is a speed optimization, as the\\n/ AbstractMessage base class includes reflection-based implementations of\\n/ these methods.\\n/ - In the lite runtime, setting this option changes the semantics of\\n/ equals() and hashCode() to more closely match those of the full runtime;\\n/ the generated methods compute their results based on field values rather\\n/ than object identity. (Implementations should not assume that hashcodes\\n/ will be consistent across runtimes or versions of the protocol compiler.)\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 9, 2, 4],\n        \"span\": [328, 2, 60],\n        \"leadingComments\":\n          \"/ If set true, then the Java2 code generator will generate code that\\n/ throws an exception whenever an attempt is made to assign a non-UTF-8\\n/ byte sequence to a string field.\\n/ Message reflection will do the same.\\n/ However, an extension field still accepts non-UTF-8 byte sequences.\\n/ This option has no effect on when used with the lite runtime.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 9, 4, 0],\n        \"span\": [332, 2, 337, 3],\n        \"leadingComments\": \"/ Generated classes can be optimized for speed or code size.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 9, 4, 0, 2, 0],\n        \"span\": [333, 4, 14],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \"/ Generate complete code for parsing, serialization,\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 9, 4, 0, 2, 1],\n        \"span\": [335, 4, 18],\n        \"leadingComments\": \"/ etc.\\n\",\n        \"trailingComments\": \"/ Use ReflectionOps to implement these methods.\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 9, 4, 0, 2, 2],\n        \"span\": [336, 4, 21],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \"/ Generate code using MessageLite and the lite runtime.\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 9, 2, 6],\n        \"span\": [345, 2, 34],\n        \"leadingComments\":\n          \"/ Sets the Go package where structs generated from this .proto will be\\n/ placed. If omitted, the Go package will be derived from the following:\\n/   - The basename of the package import path, if provided.\\n/   - Otherwise, the package statement in the .proto file, if present.\\n/   - Otherwise, the basename of the .proto file, without extension.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 9, 2, 7],\n        \"span\": [359, 2, 57],\n        \"leadingComments\":\n          '/ Should generic services be generated in each language?  \"Generic\" services\\n/ are not specific to any particular RPC system.  They are generated by the\\n/ main code generators in each language (without additional plugins).\\n/ Generic services were the only kind of service generation supported by\\n/ early versions of google.protobuf.\\n\\n/ Generic services are now considered deprecated in favor of using plugins\\n/ that generate code specific to your particular RPC system.  Therefore,\\n/ these default to false.  Old code which depends on generic services should\\n/ explicitly set them to true.\\n',\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 9, 2, 10],\n        \"span\": [367, 2, 48],\n        \"leadingComments\":\n          \"/ Is this file deprecated?\\n/ Depending on the target platform, this can emit Deprecated annotations\\n/ for everything in the file, or it will be completely ignored; in the very\\n/ least, this is a formalization for deprecating files.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 9, 2, 11],\n        \"span\": [371, 2, 54],\n        \"leadingComments\":\n          \"/ Enables the use of arenas for the proto messages in this file. This applies\\n/ only to generated classes for C++.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 9, 2, 12],\n        \"span\": [376, 2, 41],\n        \"leadingComments\":\n          \"/ Sets the objective c class prefix which is prepended to all objective c\\n/ generated classes from this .proto. There is no default.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 9, 2, 13],\n        \"span\": [379, 2, 40],\n        \"leadingComments\": \"/ Namespace for generated classes; defaults to the package.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 9, 2, 14],\n        \"span\": [382, 2, 58],\n        \"leadingComments\": \"/ The parser stores options it doesn't recognize here. See above.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 9, 5],\n        \"span\": [385, 2, 25],\n        \"leadingComments\": \"/ Clients can define custom options in extensions of this message. See above.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 10, 2, 0],\n        \"span\": [409, 2, 60],\n        \"leadingComments\":\n          \"/ Set true to use the old proto1 MessageSet wire format for extensions.\\n/ This is provided for backwards-compatibility with the MessageSet wire\\n/ format.  You should not use this for any other reason:  It's less\\n/ efficient, has fewer features, and is more complicated.\\n\\n/ The message must be defined exactly as follows:\\n/   message Foo {\\n/     option message_set_wire_format = true;\\n/     extensions 4 to max;\\n/   }\\n/ Note that the message cannot have any defined fields; MessageSets only\\n/ have extensions.\\n\\n/ All extensions of your type must be singular messages; e.g. they cannot\\n/ be int32s, enums, or repeated messages.\\n\\n/ Because this is an option, the above two restrictions are not enforced by\\n/ the protocol compiler.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 10, 2, 1],\n        \"span\": [414, 2, 68],\n        \"leadingComments\":\n          '/ Disables the generation of the standard \"descriptor()\" accessor, which can\\n/ conflict with a field of the same name.  This is meant to make migration\\n/ from proto1 easier; new code should avoid fields named \"descriptor\".\\n',\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 10, 2, 2],\n        \"span\": [420, 2, 47],\n        \"leadingComments\":\n          \"/ Is this message deprecated?\\n/ Depending on the target platform, this can emit Deprecated annotations\\n/ for the message, or it will be completely ignored; in the very least,\\n/ this is a formalization for deprecating messages.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 10, 2, 3],\n        \"span\": [443, 2, 30],\n        \"leadingComments\":\n          \"/ Whether the message is an automatically generated map entry type for the\\n/ maps field.\\n\\n/ For maps fields:\\n/     map<KeyType, ValueType> map_field = 1;\\n/ The parsed descriptor looks like:\\n/     message MapFieldEntry {\\n/         option map_entry = true;\\n/         optional KeyType key = 1;\\n/         optional ValueType value = 2;\\n/     }\\n/     repeated MapFieldEntry map_field = 1;\\n\\n/ Implementations may choose not to generate the map_entry=true message, but\\n/ use a native map in the target language to hold the keys and values.\\n/ The reflection APIs in such implementions still need to work as\\n/ if the field is a repeated message field.\\n\\n/ NOTE: Do not set the option in .proto files. Always use the maps syntax\\n/ instead. The option should only be implicitly set by the proto compiler\\n/ parser.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 10, 2, 4],\n        \"span\": [446, 2, 58],\n        \"leadingComments\": \"/ The parser stores options it doesn't recognize here. See above.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 10, 5],\n        \"span\": [449, 2, 25],\n        \"leadingComments\": \"/ Clients can define custom options in extensions of this message. See above.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 11, 2, 0],\n        \"span\": [457, 2, 46],\n        \"leadingComments\":\n          \"/ The ctype option instructs the C++ code generator to use a different\\n/ representation of the field than it normally would.  See the specific\\n/ options below.  This option is not yet implemented in the open source\\n/ release -- sorry, we'll try to include it in a future version!\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 11, 4, 0, 2, 0],\n        \"span\": [460, 4, 15],\n        \"leadingComments\": \"/ Default mode.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 11, 2, 1],\n        \"span\": [471, 2, 27],\n        \"leadingComments\":\n          \"/ The packed option can be enabled for repeated primitive fields to enable\\n/ a more efficient representation on the wire. Rather than repeatedly\\n/ writing the tag and type for each element, the entire array is encoded as\\n/ a single length-delimited blob. In proto3, only explicit setting it to\\n/ false will avoid using packed encoding.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 11, 2, 2],\n        \"span\": [483, 2, 51],\n        \"leadingComments\":\n          '/ The jstype option determines the JavaScript type used for values of the\\n/ field.  The option is permitted only for 64 bit integral and fixed types\\n/ (int64, uint64, sint64, fixed64, sfixed64).  By default these types are\\n/ represented as JavaScript strings.  This avoids loss of precision that can\\n/ happen when a large value is converted to a floating point JavaScript\\n/ numbers.  Specifying JS_NUMBER for the jstype causes the generated\\n/ JavaScript code to use the JavaScript \"number\" type instead of strings.\\n/ This option is an enum to permit additional types to be added,\\n/ e.g. goog.math.Integer.\\n',\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 11, 4, 1, 2, 0],\n        \"span\": [486, 4, 18],\n        \"leadingComments\": \"/ Use the default type.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 11, 4, 1, 2, 1],\n        \"span\": [489, 4, 18],\n        \"leadingComments\": \"/ Use JavaScript strings.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 11, 4, 1, 2, 2],\n        \"span\": [492, 4, 18],\n        \"leadingComments\": \"/ Use JavaScript numbers.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 11, 2, 3],\n        \"span\": [523, 2, 41],\n        \"leadingComments\":\n          \"/ Should this field be parsed lazily?  Lazy applies only to message-type\\n/ fields.  It means that when the outer message is initially parsed, the\\n/ inner message's contents will not be parsed but instead stored in encoded\\n/ form.  The inner message will actually be parsed when it is first accessed.\\n\\n/ This is only a hint.  Implementations are free to choose whether to use\\n/ eager or lazy parsing regardless of the value of this option.  However,\\n/ setting this option true suggests that the protocol author believes that\\n/ using lazy parsing on this field is worth the additional bookkeeping\\n/ overhead typically needed to implement it.\\n\\n/ This option does not affect the public interface of any generated code;\\n/ all method signatures remain the same.  Furthermore, thread-safety of the\\n/ interface is not affected by this option; const methods remain safe to\\n/ call from multiple threads concurrently, while non-const methods continue\\n/ to require exclusive access.\\n\\n\\n/ Note that implementations may choose not to check required fields within\\n/ a lazy sub-message.  That is, calling IsInitialized() on the outher message\\n/ may return true even if the inner message has missing required fields.\\n/ This is necessary because otherwise the inner message would have to be\\n/ parsed in order to perform the check, defeating the purpose of lazy\\n/ parsing.  An implementation which chooses not to check required fields\\n/ must be consistent about it.  That is, for any particular sub-message, the\\n/ implementation must either *always* check its required fields, or *never*\\n/ check its required fields, regardless of whether or not the message has\\n/ been parsed.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 11, 2, 4],\n        \"span\": [529, 2, 47],\n        \"leadingComments\":\n          \"/ Is this field deprecated?\\n/ Depending on the target platform, this can emit Deprecated annotations\\n/ for accessors, or it will be completely ignored; in the very least, this\\n/ is a formalization for deprecating fields.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 11, 2, 5],\n        \"span\": [532, 2, 42],\n        \"leadingComments\": \"/ For Google-internal migration only. Do not use.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 11, 2, 6],\n        \"span\": [536, 2, 58],\n        \"leadingComments\": \"/ The parser stores options it doesn't recognize here. See above.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 11, 5],\n        \"span\": [539, 2, 25],\n        \"leadingComments\": \"/ Clients can define custom options in extensions of this message. See above.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 12, 2, 0],\n        \"span\": [546, 2, 32],\n        \"leadingComments\": \"/ Set this option to true to allow mapping different tag names to the same\\n/ value.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 12, 2, 1],\n        \"span\": [552, 2, 47],\n        \"leadingComments\":\n          \"/ Is this enum deprecated?\\n/ Depending on the target platform, this can emit Deprecated annotations\\n/ for the enum, or it will be completely ignored; in the very least, this\\n/ is a formalization for deprecating enums.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 12, 2, 2],\n        \"span\": [555, 2, 58],\n        \"leadingComments\": \"/ The parser stores options it doesn't recognize here. See above.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 12, 5],\n        \"span\": [558, 2, 25],\n        \"leadingComments\": \"/ Clients can define custom options in extensions of this message. See above.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 13, 2, 0],\n        \"span\": [566, 2, 47],\n        \"leadingComments\":\n          \"/ Is this enum value deprecated?\\n/ Depending on the target platform, this can emit Deprecated annotations\\n/ for the enum value, or it will be completely ignored; in the very least,\\n/ this is a formalization for deprecating enum values.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 13, 2, 1],\n        \"span\": [569, 2, 58],\n        \"leadingComments\": \"/ The parser stores options it doesn't recognize here. See above.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 13, 5],\n        \"span\": [572, 2, 25],\n        \"leadingComments\": \"/ Clients can define custom options in extensions of this message. See above.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 14, 2, 0],\n        \"span\": [586, 2, 48],\n        \"leadingComments\":\n          \"/ Is this service deprecated?\\n/ Depending on the target platform, this can emit Deprecated annotations\\n/ for the service, or it will be completely ignored; in the very least,\\n/ this is a formalization for deprecating services.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [\n          \"/ Note:  Field numbers 1 through 32 are reserved for Google's internal RPC\\n/   framework.  We apologize for hoarding these numbers to ourselves, but\\n/   we were already using them long before we decided to release Protocol\\n/   Buffers.\\n\",\n        ],\n      }, {\n        \"path\": [4, 14, 2, 1],\n        \"span\": [589, 2, 58],\n        \"leadingComments\": \"/ The parser stores options it doesn't recognize here. See above.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 14, 5],\n        \"span\": [592, 2, 25],\n        \"leadingComments\": \"/ Clients can define custom options in extensions of this message. See above.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 15, 2, 0],\n        \"span\": [606, 2, 48],\n        \"leadingComments\":\n          \"/ Is this method deprecated?\\n/ Depending on the target platform, this can emit Deprecated annotations\\n/ for the method, or it will be completely ignored; in the very least,\\n/ this is a formalization for deprecating methods.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [\n          \"/ Note:  Field numbers 1 through 32 are reserved for Google's internal RPC\\n/   framework.  We apologize for hoarding these numbers to ourselves, but\\n/   we were already using them long before we decided to release Protocol\\n/   Buffers.\\n\",\n        ],\n      }, {\n        \"path\": [4, 15, 2, 1],\n        \"span\": [609, 2, 58],\n        \"leadingComments\": \"/ The parser stores options it doesn't recognize here. See above.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 15, 5],\n        \"span\": [612, 2, 25],\n        \"leadingComments\": \"/ Clients can define custom options in extensions of this message. See above.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 16],\n        \"span\": [622, 0, 642, 1],\n        \"leadingComments\":\n          \"/ A message representing a option the parser does not recognize. This only\\n/ appears in options protos created by the compiler::Parser class.\\n/ DescriptorPool resolves these when building Descriptor objects. Therefore,\\n/ options protos in descriptor objects (e.g. returned by Descriptor::options(),\\n/ or produced by Descriptor::CopyTo()) will never have UninterpretedOptions\\n/ in them.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 16, 3, 0],\n        \"span\": [628, 2, 631, 3],\n        \"leadingComments\":\n          '/ The name of the uninterpreted option.  Each string represents a segment in\\n/ a dot-separated name.  is_extension is true iff a segment represents an\\n/ extension (denoted with parentheses in options specs in .proto files).\\n/ E.g.,{ [\"foo\", false], [\"bar.baz\", true], [\"qux\", false] } represents\\n/ \"foo.(bar.baz).qux\".\\n',\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 16, 2, 1],\n        \"span\": [636, 2, 39],\n        \"leadingComments\":\n          \"/ The value of the uninterpreted option, in whatever type the tokenizer\\n/ identified it as during parsing. Exactly one of these should be set.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 17],\n        \"span\": [649, 0, 778, 1],\n        \"leadingComments\":\n          \"/ Encapsulates information about the original source file from which a\\n/ FileDescriptorProto was generated.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [\n          \"/ ===================================================================\\n/ Optional source code info\\n\",\n        ],\n      }, {\n        \"path\": [4, 17, 2, 0],\n        \"span\": [693, 2, 33],\n        \"leadingComments\":\n          '/ A Location identifies a piece of source code in a .proto file which\\n/ corresponds to a particular definition.  This information is intended\\n/ to be useful to IDEs, code indexers, documentation generators, and similar\\n/ tools.\\n\\n/ For example, say we have a file like:\\n/   message Foo {\\n/     optional string foo = 1;\\n/   }\\n/ Let\\'s look at just the field definition:\\n/   optional string foo = 1;\\n/   ^       ^^     ^^  ^  ^^^\\n/   a       bc     de  f  ghi\\n/ We have the following locations:\\n/   span   path               represents\\n/   [a,i)  [ 4, 0, 2, 0 ]     The whole field definition.\\n/   [a,b)  [ 4, 0, 2, 0, 4 ]  The label (optional).\\n/   [c,d)  [ 4, 0, 2, 0, 5 ]  The type (string).\\n/   [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).\\n/   [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).\\n\\n/ Notes:\\n/ - A location may refer to a repeated field itself (i.e. not to any\\n/   particular index within it).  This is used whenever a set of elements are\\n/   logically enclosed in a single code segment.  For example, an entire\\n/   extend block (possibly containing multiple extension definitions) will\\n/   have an outer location whose path refers to the \"extensions\" repeated\\n/   field without an index.\\n/ - Multiple locations may have the same path.  This happens when a single\\n/   logical declaration is spread out across multiple places.  The most\\n/   obvious example is the \"extend\" block again -- there may be multiple\\n/   extend blocks in the same scope, each of which will have the same path.\\n/ - A location\\'s span is not always a subset of its parent\\'s span.  For\\n/   example, the \"extendee\" of an extension declaration appears at the\\n/   beginning of the \"extend\" block and is shared by all extensions within\\n/   the block.\\n/ - Just because a location\\'s span is a subset of some other location\\'s span\\n/   does not mean that it is a descendent.  For example, a \"group\" defines\\n/   both a type and a field in a single declaration.  Thus, the locations\\n/   corresponding to the type and field and their components will overlap.\\n/ - Code which tries to interpret locations should probably be designed to\\n/   ignore those that it doesn\\'t understand, as more types of locations could\\n/   be recorded in the future.\\n',\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 17, 3, 0, 2, 0],\n        \"span\": [718, 4, 42],\n        \"leadingComments\":\n          \"/ Identifies which part of the FileDescriptorProto was defined at this\\n/ location.\\n\\n/ Each element is a field number or an index.  They form a path from\\n/ the root FileDescriptorProto to the place where the definition.  For\\n/ example, this path:\\n/   [ 4, 3, 2, 7, 1 ]\\n/ refers to:\\n/   file.message_type(3)  /// 4, 3\\n/       .field(7)         /// 2, 7\\n/       .name()           /// 1\\n/ This is because FileDescriptorProto.message_type has field number 4:\\n/   repeated DescriptorProto message_type = 4;\\n/ and DescriptorProto.field has field number 2:\\n/   repeated FieldDescriptorProto field = 2;\\n/ and FieldDescriptorProto.name has field number 1:\\n/   optional string name = 1;\\n\\n/ Thus, the above path gives the location of a field name.  If we removed\\n/ the last element:\\n/   [ 4, 3, 2, 7 ]\\n/ this path refers to the whole field declaration (from the beginning\\n/ of the label to the terminating semicolon).\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 17, 3, 0, 2, 1],\n        \"span\": [725, 4, 42],\n        \"leadingComments\":\n          \"/ Always has exactly three or four elements: start line, start column,\\n/ end line (optional, otherwise assumed same as start line), end column.\\n/ These are packed into a single field for efficiency.  Note that line\\n/ and column numbers are zero-based -- typically you will want to add\\n/ 1 to each before displaying to a user.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 17, 3, 0, 2, 2],\n        \"span\": [774, 4, 41],\n        \"leadingComments\":\n          \"/ If this SourceCodeInfo represents a complete declaration, these are any\\n/ comments appearing before and after the declaration which appear to be\\n/ attached to the declaration.\\n\\n/ A series of line comments appearing on consecutive lines, with no other\\n/ tokens appearing on those lines, will be treated as a single comment.\\n\\n/ leading_detached_comments will keep paragraphs of comments that appear\\n/ before (but not connected to) the current element. Each paragraph,\\n/ separated by empty lines, will be one comment element in the repeated\\n/ field.\\n\\n/ Only the comment content is provided; comment markers (e.g. //) are\\n/ stripped out.  For block comments, leading whitespace and an asterisk\\n/ will be stripped from the beginning of each line other than the first.\\n/ Newlines are included in the output.\\n\\n/ Examples:\\n\\n/   optional int32 foo = 1;  /// Comment attached to foo.\\n/   /// Comment attached to bar.\\n/   optional int32 bar = 2;\\n\\n/   optional string baz = 3;\\n/   /// Comment attached to baz.\\n/   /// Another line attached to baz.\\n\\n/   /// Comment attached to qux.\\n/   //\\n/   /// Another line attached to qux.\\n/   optional double qux = 4;\\n\\n/   /// Detached comment for corge. This is not leading or trailing comments\\n/   /// to qux or corge because there are blank lines separating it from\\n/   /// both.\\n\\n/   /// Detached comment for corge paragraph 2.\\n\\n/   optional string corge = 5;\\n/   /* Block comment attached\\n/    * to corge.  Leading asterisks\\n/    * will be removed. */\\n/   /* Block comment attached to\\n/    * grault. */\\n/   optional int32 grault = 6;\\n\\n/   /// ignored detached comments.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 18],\n        \"span\": [783, 0, 804, 1],\n        \"leadingComments\":\n          \"/ Describes the relationship between generated code and its original source\\n/ file. A GeneratedCodeInfo message is associated with only one generated\\n/ source file, but may contain references to different source .proto files.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 18, 2, 0],\n        \"span\": [786, 2, 37],\n        \"leadingComments\":\n          \"/ An Annotation connects some span of text in generated code to an element\\n/ of its generating .proto file.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 18, 3, 0, 2, 0],\n        \"span\": [790, 4, 42],\n        \"leadingComments\":\n          \"/ Identifies the element in the original source .proto file. This field\\n/ is formatted the same as SourceCodeInfo.Location.path.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 18, 3, 0, 2, 1],\n        \"span\": [793, 4, 36],\n        \"leadingComments\": \"/ Identifies the filesystem path to the original source .proto.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 18, 3, 0, 2, 2],\n        \"span\": [797, 4, 29],\n        \"leadingComments\":\n          \"/ Identifies the starting offset in bytes in the generated code\\n/ that relates to the identified object.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 18, 3, 0, 2, 3],\n        \"span\": [802, 4, 27],\n        \"leadingComments\":\n          \"/ Identifies the ending offset in bytes in the generated code that\\n/ relates to the identified offset. The end offset should be one past\\n/ the last relevant byte (so the length of the text = end - begin).\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"\",\n  },\n  references: {\n    \".google.protobuf.FileDescriptorSet\": FileDescriptorSet,\n    \".google.protobuf.FileDescriptorProto\": FileDescriptorProto,\n    \".google.protobuf.DescriptorProto\": DescriptorProto,\n    \".google.protobuf.DescriptorProto.ExtensionRange\": DescriptorProto_ExtensionRange,\n    \".google.protobuf.DescriptorProto.ReservedRange\": DescriptorProto_ReservedRange,\n    \".google.protobuf.FieldDescriptorProto\": FieldDescriptorProto,\n    \".google.protobuf.FieldDescriptorProto.Type\": FieldDescriptorProto_Type,\n    \".google.protobuf.FieldDescriptorProto.Label\": FieldDescriptorProto_Label,\n    \".google.protobuf.OneofDescriptorProto\": OneofDescriptorProto,\n    \".google.protobuf.EnumDescriptorProto\": EnumDescriptorProto,\n    \".google.protobuf.EnumValueDescriptorProto\": EnumValueDescriptorProto,\n    \".google.protobuf.ServiceDescriptorProto\": ServiceDescriptorProto,\n    \".google.protobuf.MethodDescriptorProto\": MethodDescriptorProto,\n    \".google.protobuf.FileOptions\": FileOptions,\n    \".google.protobuf.FileOptions.OptimizeMode\": FileOptions_OptimizeMode,\n    \".google.protobuf.MessageOptions\": MessageOptions,\n    \".google.protobuf.FieldOptions\": FieldOptions,\n    \".google.protobuf.FieldOptions.CType\": FieldOptions_CType,\n    \".google.protobuf.FieldOptions.JSType\": FieldOptions_JSType,\n    \".google.protobuf.EnumOptions\": EnumOptions,\n    \".google.protobuf.EnumValueOptions\": EnumValueOptions,\n    \".google.protobuf.ServiceOptions\": ServiceOptions,\n    \".google.protobuf.MethodOptions\": MethodOptions,\n    \".google.protobuf.UninterpretedOption\": UninterpretedOption,\n    \".google.protobuf.UninterpretedOption.NamePart\": UninterpretedOption_NamePart,\n    \".google.protobuf.SourceCodeInfo\": SourceCodeInfo,\n    \".google.protobuf.SourceCodeInfo.Location\": SourceCodeInfo_Location,\n    \".google.protobuf.GeneratedCodeInfo\": GeneratedCodeInfo,\n    \".google.protobuf.GeneratedCodeInfo.Annotation\": GeneratedCodeInfo_Annotation,\n  },\n  dependencies: [],\n};\n\nfunction bytesFromBase64(b64: string): Uint8Array {\n  return Uint8Array.from(globalThis.Buffer.from(b64, \"base64\"));\n}\n\nfunction base64FromBytes(arr: Uint8Array): string {\n  return globalThis.Buffer.from(arr).toString(\"base64\");\n}\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction longToNumber(int64: { toString(): string }): number {\n  const num = globalThis.Number(int64.toString());\n  if (num > globalThis.Number.MAX_SAFE_INTEGER) {\n    throw new globalThis.Error(\"Value is larger than Number.MAX_SAFE_INTEGER\");\n  }\n  if (num < globalThis.Number.MIN_SAFE_INTEGER) {\n    throw new globalThis.Error(\"Value is smaller than Number.MIN_SAFE_INTEGER\");\n  }\n  return num;\n}\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/options.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { protoMetadata as protoMetadata1 } from \"../../google/protobuf/descriptor\";\n\nexport const protobufPackage = \"io.restorecommerce.options\";\n\nexport interface Resolver {\n  targetType?: string | undefined;\n  targetService?: string | undefined;\n  targetSubService?: string | undefined;\n  targetMethod?: string | undefined;\n  fieldName?: string | undefined;\n  limit?: number | undefined;\n  latency?: number | undefined;\n}\n\nexport interface KafkaSubscription {\n  plural?: string | undefined;\n  topic?: string | undefined;\n  created?: string | undefined;\n  updated?: string | undefined;\n  deleted?: string | undefined;\n}\n\nfunction createBaseResolver(): Resolver {\n  return {};\n}\n\nexport const Resolver: MessageFns<Resolver> = {\n  encode(message: Resolver, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.targetType !== undefined && message.targetType !== \"\") {\n      writer.uint32(10).string(message.targetType);\n    }\n    if (message.targetService !== undefined && message.targetService !== \"\") {\n      writer.uint32(18).string(message.targetService);\n    }\n    if (message.targetSubService !== undefined && message.targetSubService !== \"\") {\n      writer.uint32(26).string(message.targetSubService);\n    }\n    if (message.targetMethod !== undefined && message.targetMethod !== \"\") {\n      writer.uint32(34).string(message.targetMethod);\n    }\n    if (message.fieldName !== undefined && message.fieldName !== \"\") {\n      writer.uint32(42).string(message.fieldName);\n    }\n    if (message.limit !== undefined) {\n      writer.uint32(48).uint32(message.limit);\n    }\n    if (message.latency !== undefined) {\n      writer.uint32(56).uint32(message.latency);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Resolver {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseResolver();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.targetType = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.targetService = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.targetSubService = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.targetMethod = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.fieldName = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 48) {\n            break;\n          }\n\n          message.limit = reader.uint32();\n          continue;\n        }\n        case 7: {\n          if (tag !== 56) {\n            break;\n          }\n\n          message.latency = reader.uint32();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Resolver {\n    return {\n      targetType: isSet(object.targetType) ? globalThis.String(object.targetType) : undefined,\n      targetService: isSet(object.targetService) ? globalThis.String(object.targetService) : undefined,\n      targetSubService: isSet(object.targetSubService) ? globalThis.String(object.targetSubService) : undefined,\n      targetMethod: isSet(object.targetMethod) ? globalThis.String(object.targetMethod) : undefined,\n      fieldName: isSet(object.fieldName) ? globalThis.String(object.fieldName) : undefined,\n      limit: isSet(object.limit) ? globalThis.Number(object.limit) : undefined,\n      latency: isSet(object.latency) ? globalThis.Number(object.latency) : undefined,\n    };\n  },\n\n  toJSON(message: Resolver): unknown {\n    const obj: any = {};\n    if (message.targetType !== undefined && message.targetType !== \"\") {\n      obj.targetType = message.targetType;\n    }\n    if (message.targetService !== undefined && message.targetService !== \"\") {\n      obj.targetService = message.targetService;\n    }\n    if (message.targetSubService !== undefined && message.targetSubService !== \"\") {\n      obj.targetSubService = message.targetSubService;\n    }\n    if (message.targetMethod !== undefined && message.targetMethod !== \"\") {\n      obj.targetMethod = message.targetMethod;\n    }\n    if (message.fieldName !== undefined && message.fieldName !== \"\") {\n      obj.fieldName = message.fieldName;\n    }\n    if (message.limit !== undefined) {\n      obj.limit = Math.round(message.limit);\n    }\n    if (message.latency !== undefined) {\n      obj.latency = Math.round(message.latency);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Resolver>): Resolver {\n    return Resolver.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Resolver>): Resolver {\n    const message = createBaseResolver();\n    message.targetType = object.targetType ?? undefined;\n    message.targetService = object.targetService ?? undefined;\n    message.targetSubService = object.targetSubService ?? undefined;\n    message.targetMethod = object.targetMethod ?? undefined;\n    message.fieldName = object.fieldName ?? undefined;\n    message.limit = object.limit ?? undefined;\n    message.latency = object.latency ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseKafkaSubscription(): KafkaSubscription {\n  return {};\n}\n\nexport const KafkaSubscription: MessageFns<KafkaSubscription> = {\n  encode(message: KafkaSubscription, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.plural !== undefined && message.plural !== \"\") {\n      writer.uint32(10).string(message.plural);\n    }\n    if (message.topic !== undefined && message.topic !== \"\") {\n      writer.uint32(18).string(message.topic);\n    }\n    if (message.created !== undefined && message.created !== \"\") {\n      writer.uint32(26).string(message.created);\n    }\n    if (message.updated !== undefined && message.updated !== \"\") {\n      writer.uint32(34).string(message.updated);\n    }\n    if (message.deleted !== undefined && message.deleted !== \"\") {\n      writer.uint32(42).string(message.deleted);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): KafkaSubscription {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseKafkaSubscription();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.plural = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.topic = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.created = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.updated = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.deleted = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): KafkaSubscription {\n    return {\n      plural: isSet(object.plural) ? globalThis.String(object.plural) : undefined,\n      topic: isSet(object.topic) ? globalThis.String(object.topic) : undefined,\n      created: isSet(object.created) ? globalThis.String(object.created) : undefined,\n      updated: isSet(object.updated) ? globalThis.String(object.updated) : undefined,\n      deleted: isSet(object.deleted) ? globalThis.String(object.deleted) : undefined,\n    };\n  },\n\n  toJSON(message: KafkaSubscription): unknown {\n    const obj: any = {};\n    if (message.plural !== undefined && message.plural !== \"\") {\n      obj.plural = message.plural;\n    }\n    if (message.topic !== undefined && message.topic !== \"\") {\n      obj.topic = message.topic;\n    }\n    if (message.created !== undefined && message.created !== \"\") {\n      obj.created = message.created;\n    }\n    if (message.updated !== undefined && message.updated !== \"\") {\n      obj.updated = message.updated;\n    }\n    if (message.deleted !== undefined && message.deleted !== \"\") {\n      obj.deleted = message.deleted;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<KafkaSubscription>): KafkaSubscription {\n    return KafkaSubscription.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<KafkaSubscription>): KafkaSubscription {\n    const message = createBaseKafkaSubscription();\n    message.plural = object.plural ?? undefined;\n    message.topic = object.topic ?? undefined;\n    message.created = object.created ?? undefined;\n    message.updated = object.updated ?? undefined;\n    message.deleted = object.deleted ?? undefined;\n    return message;\n  },\n};\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/options.proto\",\n    \"package\": \"io.restorecommerce.options\",\n    \"dependency\": [\"google/protobuf/descriptor.proto\"],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Resolver\",\n      \"field\": [{\n        \"name\": \"target_type\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"targetType\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"target_service\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"targetService\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"target_sub_service\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"targetSubService\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"target_method\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"targetMethod\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"field_name\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"fieldName\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"limit\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"limit\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"latency\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"latency\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_limit\", \"options\": undefined }, { \"name\": \"_latency\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"KafkaSubscription\",\n      \"field\": [{\n        \"name\": \"plural\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"plural\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"topic\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"topic\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"created\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"created\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"updated\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"updated\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"deleted\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"deleted\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [],\n    \"extension\": [{\n      \"name\": \"resolver\",\n      \"number\": 31000,\n      \"label\": 1,\n      \"type\": 11,\n      \"typeName\": \".io.restorecommerce.options.Resolver\",\n      \"extendee\": \".google.protobuf.FieldOptions\",\n      \"defaultValue\": \"\",\n      \"oneofIndex\": 0,\n      \"jsonName\": \"resolver\",\n      \"options\": undefined,\n      \"proto3Optional\": false,\n    }, {\n      \"name\": \"is_query\",\n      \"number\": 31001,\n      \"label\": 1,\n      \"type\": 8,\n      \"typeName\": \"\",\n      \"extendee\": \".google.protobuf.MethodOptions\",\n      \"defaultValue\": \"\",\n      \"oneofIndex\": 0,\n      \"jsonName\": \"isQuery\",\n      \"options\": undefined,\n      \"proto3Optional\": false,\n    }, {\n      \"name\": \"service_name\",\n      \"number\": 31002,\n      \"label\": 1,\n      \"type\": 9,\n      \"typeName\": \"\",\n      \"extendee\": \".google.protobuf.ServiceOptions\",\n      \"defaultValue\": \"\",\n      \"oneofIndex\": 0,\n      \"jsonName\": \"serviceName\",\n      \"options\": undefined,\n      \"proto3Optional\": false,\n    }, {\n      \"name\": \"kafka_subscriber\",\n      \"number\": 31003,\n      \"label\": 1,\n      \"type\": 11,\n      \"typeName\": \".io.restorecommerce.options.KafkaSubscription\",\n      \"extendee\": \".google.protobuf.MessageOptions\",\n      \"defaultValue\": \"\",\n      \"oneofIndex\": 0,\n      \"jsonName\": \"kafkaSubscriber\",\n      \"options\": undefined,\n      \"proto3Optional\": false,\n    }],\n    \"options\": undefined,\n    \"sourceCodeInfo\": { \"location\": [] },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.options.Resolver\": Resolver,\n    \".io.restorecommerce.options.KafkaSubscription\": KafkaSubscription,\n  },\n  dependencies: [protoMetadata1],\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/filter.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\n\nexport const protobufPackage = \"io.restorecommerce.filter\";\n\nexport interface Filter {\n  field?: string | undefined;\n  operation?: Filter_Operation | undefined;\n  value?: string | undefined;\n  type?: Filter_ValueType | undefined;\n  filters?: FilterOp[] | undefined;\n}\n\nexport enum Filter_Operation {\n  eq = \"eq\",\n  lt = \"lt\",\n  lte = \"lte\",\n  gt = \"gt\",\n  gte = \"gte\",\n  isEmpty = \"isEmpty\",\n  iLike = \"iLike\",\n  in = \"in\",\n  neq = \"neq\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function filter_OperationFromJSON(object: any): Filter_Operation {\n  switch (object) {\n    case 0:\n    case \"eq\":\n      return Filter_Operation.eq;\n    case 1:\n    case \"lt\":\n      return Filter_Operation.lt;\n    case 2:\n    case \"lte\":\n      return Filter_Operation.lte;\n    case 3:\n    case \"gt\":\n      return Filter_Operation.gt;\n    case 4:\n    case \"gte\":\n      return Filter_Operation.gte;\n    case 5:\n    case \"isEmpty\":\n      return Filter_Operation.isEmpty;\n    case 6:\n    case \"iLike\":\n      return Filter_Operation.iLike;\n    case 7:\n    case \"in\":\n      return Filter_Operation.in;\n    case 8:\n    case \"neq\":\n      return Filter_Operation.neq;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return Filter_Operation.UNRECOGNIZED;\n  }\n}\n\nexport function filter_OperationToJSON(object: Filter_Operation): string {\n  switch (object) {\n    case Filter_Operation.eq:\n      return \"eq\";\n    case Filter_Operation.lt:\n      return \"lt\";\n    case Filter_Operation.lte:\n      return \"lte\";\n    case Filter_Operation.gt:\n      return \"gt\";\n    case Filter_Operation.gte:\n      return \"gte\";\n    case Filter_Operation.isEmpty:\n      return \"isEmpty\";\n    case Filter_Operation.iLike:\n      return \"iLike\";\n    case Filter_Operation.in:\n      return \"in\";\n    case Filter_Operation.neq:\n      return \"neq\";\n    case Filter_Operation.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function filter_OperationToNumber(object: Filter_Operation): number {\n  switch (object) {\n    case Filter_Operation.eq:\n      return 0;\n    case Filter_Operation.lt:\n      return 1;\n    case Filter_Operation.lte:\n      return 2;\n    case Filter_Operation.gt:\n      return 3;\n    case Filter_Operation.gte:\n      return 4;\n    case Filter_Operation.isEmpty:\n      return 5;\n    case Filter_Operation.iLike:\n      return 6;\n    case Filter_Operation.in:\n      return 7;\n    case Filter_Operation.neq:\n      return 8;\n    case Filter_Operation.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\nexport enum Filter_ValueType {\n  /** STRING - default value type if not specified */\n  STRING = \"STRING\",\n  NUMBER = \"NUMBER\",\n  BOOLEAN = \"BOOLEAN\",\n  DATE = \"DATE\",\n  ARRAY = \"ARRAY\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function filter_ValueTypeFromJSON(object: any): Filter_ValueType {\n  switch (object) {\n    case 0:\n    case \"STRING\":\n      return Filter_ValueType.STRING;\n    case 1:\n    case \"NUMBER\":\n      return Filter_ValueType.NUMBER;\n    case 2:\n    case \"BOOLEAN\":\n      return Filter_ValueType.BOOLEAN;\n    case 3:\n    case \"DATE\":\n      return Filter_ValueType.DATE;\n    case 4:\n    case \"ARRAY\":\n      return Filter_ValueType.ARRAY;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return Filter_ValueType.UNRECOGNIZED;\n  }\n}\n\nexport function filter_ValueTypeToJSON(object: Filter_ValueType): string {\n  switch (object) {\n    case Filter_ValueType.STRING:\n      return \"STRING\";\n    case Filter_ValueType.NUMBER:\n      return \"NUMBER\";\n    case Filter_ValueType.BOOLEAN:\n      return \"BOOLEAN\";\n    case Filter_ValueType.DATE:\n      return \"DATE\";\n    case Filter_ValueType.ARRAY:\n      return \"ARRAY\";\n    case Filter_ValueType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function filter_ValueTypeToNumber(object: Filter_ValueType): number {\n  switch (object) {\n    case Filter_ValueType.STRING:\n      return 0;\n    case Filter_ValueType.NUMBER:\n      return 1;\n    case Filter_ValueType.BOOLEAN:\n      return 2;\n    case Filter_ValueType.DATE:\n      return 3;\n    case Filter_ValueType.ARRAY:\n      return 4;\n    case Filter_ValueType.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\nexport interface FilterOp {\n  filters?: Filter[] | undefined;\n  operator?: FilterOp_Operator | undefined;\n}\n\nexport enum FilterOp_Operator {\n  and = \"and\",\n  or = \"or\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function filterOp_OperatorFromJSON(object: any): FilterOp_Operator {\n  switch (object) {\n    case 0:\n    case \"and\":\n      return FilterOp_Operator.and;\n    case 1:\n    case \"or\":\n      return FilterOp_Operator.or;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return FilterOp_Operator.UNRECOGNIZED;\n  }\n}\n\nexport function filterOp_OperatorToJSON(object: FilterOp_Operator): string {\n  switch (object) {\n    case FilterOp_Operator.and:\n      return \"and\";\n    case FilterOp_Operator.or:\n      return \"or\";\n    case FilterOp_Operator.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function filterOp_OperatorToNumber(object: FilterOp_Operator): number {\n  switch (object) {\n    case FilterOp_Operator.and:\n      return 0;\n    case FilterOp_Operator.or:\n      return 1;\n    case FilterOp_Operator.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\nfunction createBaseFilter(): Filter {\n  return {};\n}\n\nexport const Filter: MessageFns<Filter> = {\n  encode(message: Filter, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.field !== undefined) {\n      writer.uint32(10).string(message.field);\n    }\n    if (message.operation !== undefined) {\n      writer.uint32(16).int32(filter_OperationToNumber(message.operation));\n    }\n    if (message.value !== undefined) {\n      writer.uint32(26).string(message.value);\n    }\n    if (message.type !== undefined) {\n      writer.uint32(32).int32(filter_ValueTypeToNumber(message.type));\n    }\n    if (message.filters !== undefined && message.filters.length !== 0) {\n      for (const v of message.filters) {\n        FilterOp.encode(v!, writer.uint32(50).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Filter {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFilter();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.field = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.operation = filter_OperationFromJSON(reader.int32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.value = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 32) {\n            break;\n          }\n\n          message.type = filter_ValueTypeFromJSON(reader.int32());\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          if (message.filters === undefined) {\n            message.filters = [];\n          }\n          const el = FilterOp.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.filters!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Filter {\n    return {\n      field: isSet(object.field) ? globalThis.String(object.field) : undefined,\n      operation: isSet(object.operation) ? filter_OperationFromJSON(object.operation) : undefined,\n      value: isSet(object.value) ? globalThis.String(object.value) : undefined,\n      type: isSet(object.type) ? filter_ValueTypeFromJSON(object.type) : undefined,\n      filters: globalThis.Array.isArray(object?.filters)\n        ? object.filters.map((e: any) => FilterOp.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: Filter): unknown {\n    const obj: any = {};\n    if (message.field !== undefined) {\n      obj.field = message.field;\n    }\n    if (message.operation !== undefined) {\n      obj.operation = filter_OperationToJSON(message.operation);\n    }\n    if (message.value !== undefined) {\n      obj.value = message.value;\n    }\n    if (message.type !== undefined) {\n      obj.type = filter_ValueTypeToJSON(message.type);\n    }\n    if (message.filters?.length) {\n      obj.filters = message.filters.map((e) => FilterOp.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Filter>): Filter {\n    return Filter.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Filter>): Filter {\n    const message = createBaseFilter();\n    message.field = object.field ?? undefined;\n    message.operation = object.operation ?? undefined;\n    message.value = object.value ?? undefined;\n    message.type = object.type ?? undefined;\n    message.filters = object.filters?.map((e) => FilterOp.fromPartial(e)) || undefined;\n    return message;\n  },\n};\n\nfunction createBaseFilterOp(): FilterOp {\n  return {};\n}\n\nexport const FilterOp: MessageFns<FilterOp> = {\n  encode(message: FilterOp, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.filters !== undefined && message.filters.length !== 0) {\n      for (const v of message.filters) {\n        Filter.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.operator !== undefined) {\n      writer.uint32(16).int32(filterOp_OperatorToNumber(message.operator));\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FilterOp {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFilterOp();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.filters === undefined) {\n            message.filters = [];\n          }\n          const el = Filter.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.filters!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.operator = filterOp_OperatorFromJSON(reader.int32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FilterOp {\n    return {\n      filters: globalThis.Array.isArray(object?.filters)\n        ? object.filters.map((e: any) => Filter.fromJSON(e))\n        : undefined,\n      operator: isSet(object.operator) ? filterOp_OperatorFromJSON(object.operator) : undefined,\n    };\n  },\n\n  toJSON(message: FilterOp): unknown {\n    const obj: any = {};\n    if (message.filters?.length) {\n      obj.filters = message.filters.map((e) => Filter.toJSON(e));\n    }\n    if (message.operator !== undefined) {\n      obj.operator = filterOp_OperatorToJSON(message.operator);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FilterOp>): FilterOp {\n    return FilterOp.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FilterOp>): FilterOp {\n    const message = createBaseFilterOp();\n    message.filters = object.filters?.map((e) => Filter.fromPartial(e)) || undefined;\n    message.operator = object.operator ?? undefined;\n    return message;\n  },\n};\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/filter.proto\",\n    \"package\": \"io.restorecommerce.filter\",\n    \"dependency\": [],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Filter\",\n      \"field\": [{\n        \"name\": \"field\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"field\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".io.restorecommerce.filter.Filter.Operation\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operation\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"value\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"value\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"type\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".io.restorecommerce.filter.Filter.ValueType\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"type\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"filters\",\n        \"number\": 6,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.filter.FilterOp\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"filters\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [{\n        \"name\": \"Operation\",\n        \"value\": [\n          { \"name\": \"eq\", \"number\": 0, \"options\": undefined },\n          { \"name\": \"lt\", \"number\": 1, \"options\": undefined },\n          { \"name\": \"lte\", \"number\": 2, \"options\": undefined },\n          { \"name\": \"gt\", \"number\": 3, \"options\": undefined },\n          { \"name\": \"gte\", \"number\": 4, \"options\": undefined },\n          { \"name\": \"isEmpty\", \"number\": 5, \"options\": undefined },\n          { \"name\": \"iLike\", \"number\": 6, \"options\": undefined },\n          { \"name\": \"in\", \"number\": 7, \"options\": undefined },\n          { \"name\": \"neq\", \"number\": 8, \"options\": undefined },\n        ],\n        \"options\": undefined,\n        \"reservedRange\": [],\n        \"reservedName\": [],\n      }, {\n        \"name\": \"ValueType\",\n        \"value\": [\n          { \"name\": \"STRING\", \"number\": 0, \"options\": undefined },\n          { \"name\": \"NUMBER\", \"number\": 1, \"options\": undefined },\n          { \"name\": \"BOOLEAN\", \"number\": 2, \"options\": undefined },\n          { \"name\": \"DATE\", \"number\": 3, \"options\": undefined },\n          { \"name\": \"ARRAY\", \"number\": 4, \"options\": undefined },\n        ],\n        \"options\": undefined,\n        \"reservedRange\": [],\n        \"reservedName\": [],\n      }],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_field\", \"options\": undefined }, { \"name\": \"_operation\", \"options\": undefined }, {\n        \"name\": \"_value\",\n        \"options\": undefined,\n      }, { \"name\": \"_type\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"FilterOp\",\n      \"field\": [{\n        \"name\": \"filters\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.filter.Filter\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"filters\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"operator\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".io.restorecommerce.filter.FilterOp.Operator\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"operator\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [{\n        \"name\": \"Operator\",\n        \"value\": [{ \"name\": \"and\", \"number\": 0, \"options\": undefined }, {\n          \"name\": \"or\",\n          \"number\": 1,\n          \"options\": undefined,\n        }],\n        \"options\": undefined,\n        \"reservedRange\": [],\n        \"reservedName\": [],\n      }],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_operator\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [4, 0, 4, 1, 2, 0],\n        \"span\": [20, 4, 15],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" default value type if not specified\\n\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.filter.Filter\": Filter,\n    \".io.restorecommerce.filter.Filter.Operation\": Filter_Operation,\n    \".io.restorecommerce.filter.Filter.ValueType\": Filter_ValueType,\n    \".io.restorecommerce.filter.FilterOp\": FilterOp,\n    \".io.restorecommerce.filter.FilterOp.Operator\": FilterOp_Operator,\n  },\n  dependencies: [],\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/status.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\n\nexport const protobufPackage = \"io.restorecommerce.status\";\n\nexport interface Status {\n  id?: string | undefined;\n  code?: number | undefined;\n  message?: string | undefined;\n}\n\nexport interface OperationStatusObj {\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface OperationStatus {\n  code?: number | undefined;\n  message?: string | undefined;\n}\n\nexport interface StatusListResponse {\n  status?: Status[] | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nfunction createBaseStatus(): Status {\n  return {};\n}\n\nexport const Status: MessageFns<Status> = {\n  encode(message: Status, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.code !== undefined) {\n      writer.uint32(16).uint32(message.code);\n    }\n    if (message.message !== undefined) {\n      writer.uint32(26).string(message.message);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Status {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseStatus();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.code = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.message = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Status {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      code: isSet(object.code) ? globalThis.Number(object.code) : undefined,\n      message: isSet(object.message) ? globalThis.String(object.message) : undefined,\n    };\n  },\n\n  toJSON(message: Status): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.code !== undefined) {\n      obj.code = Math.round(message.code);\n    }\n    if (message.message !== undefined) {\n      obj.message = message.message;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Status>): Status {\n    return Status.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Status>): Status {\n    const message = createBaseStatus();\n    message.id = object.id ?? undefined;\n    message.code = object.code ?? undefined;\n    message.message = object.message ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseOperationStatusObj(): OperationStatusObj {\n  return {};\n}\n\nexport const OperationStatusObj: MessageFns<OperationStatusObj> = {\n  encode(message: OperationStatusObj, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OperationStatusObj {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOperationStatusObj();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OperationStatusObj {\n    return {\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: OperationStatusObj): unknown {\n    const obj: any = {};\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OperationStatusObj>): OperationStatusObj {\n    return OperationStatusObj.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OperationStatusObj>): OperationStatusObj {\n    const message = createBaseOperationStatusObj();\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseOperationStatus(): OperationStatus {\n  return {};\n}\n\nexport const OperationStatus: MessageFns<OperationStatus> = {\n  encode(message: OperationStatus, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.code !== undefined) {\n      writer.uint32(8).uint32(message.code);\n    }\n    if (message.message !== undefined) {\n      writer.uint32(18).string(message.message);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OperationStatus {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOperationStatus();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.code = reader.uint32();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.message = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OperationStatus {\n    return {\n      code: isSet(object.code) ? globalThis.Number(object.code) : undefined,\n      message: isSet(object.message) ? globalThis.String(object.message) : undefined,\n    };\n  },\n\n  toJSON(message: OperationStatus): unknown {\n    const obj: any = {};\n    if (message.code !== undefined) {\n      obj.code = Math.round(message.code);\n    }\n    if (message.message !== undefined) {\n      obj.message = message.message;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OperationStatus>): OperationStatus {\n    return OperationStatus.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OperationStatus>): OperationStatus {\n    const message = createBaseOperationStatus();\n    message.code = object.code ?? undefined;\n    message.message = object.message ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseStatusListResponse(): StatusListResponse {\n  return {};\n}\n\nexport const StatusListResponse: MessageFns<StatusListResponse> = {\n  encode(message: StatusListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.status !== undefined && message.status.length !== 0) {\n      for (const v of message.status) {\n        Status.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): StatusListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseStatusListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.status === undefined) {\n            message.status = [];\n          }\n          const el = Status.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.status!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): StatusListResponse {\n    return {\n      status: globalThis.Array.isArray(object?.status) ? object.status.map((e: any) => Status.fromJSON(e)) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: StatusListResponse): unknown {\n    const obj: any = {};\n    if (message.status?.length) {\n      obj.status = message.status.map((e) => Status.toJSON(e));\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<StatusListResponse>): StatusListResponse {\n    return StatusListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<StatusListResponse>): StatusListResponse {\n    const message = createBaseStatusListResponse();\n    message.status = object.status?.map((e) => Status.fromPartial(e)) || undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/status.proto\",\n    \"package\": \"io.restorecommerce.status\",\n    \"dependency\": [],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Status\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"code\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"code\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"message\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"message\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }, { \"name\": \"_code\", \"options\": undefined }, {\n        \"name\": \"_message\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"OperationStatusObj\",\n      \"field\": [{\n        \"name\": \"operation_status\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_operation_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"OperationStatus\",\n      \"field\": [{\n        \"name\": \"code\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"code\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"message\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"message\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_code\", \"options\": undefined }, { \"name\": \"_message\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"StatusListResponse\",\n      \"field\": [{\n        \"name\": \"status\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_operation_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": { \"location\": [] },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.status.Status\": Status,\n    \".io.restorecommerce.status.OperationStatusObj\": OperationStatusObj,\n    \".io.restorecommerce.status.OperationStatus\": OperationStatus,\n    \".io.restorecommerce.status.StatusListResponse\": StatusListResponse,\n  },\n  dependencies: [],\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/resource_base.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { Any, protoMetadata as protoMetadata1 } from \"../../google/protobuf/any\";\nimport { protoMetadata as protoMetadata3, Subject } from \"./auth\";\nimport { FilterOp as FilterOp6, protoMetadata as protoMetadata5 } from \"./filter\";\nimport { Meta, protoMetadata as protoMetadata2 } from \"./meta\";\nimport { OperationStatus, protoMetadata as protoMetadata4, Status } from \"./status\";\n\nexport const protobufPackage = \"io.restorecommerce.resourcebase\";\n\nexport interface FieldFilter {\n  name?: string | undefined;\n  include?: boolean | undefined;\n}\n\nexport interface Sort {\n  field?: string | undefined;\n  order?: Sort_SortOrder | undefined;\n}\n\nexport enum Sort_SortOrder {\n  UNSORTED = \"UNSORTED\",\n  ASCENDING = \"ASCENDING\",\n  DESCENDING = \"DESCENDING\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function sort_SortOrderFromJSON(object: any): Sort_SortOrder {\n  switch (object) {\n    case 0:\n    case \"UNSORTED\":\n      return Sort_SortOrder.UNSORTED;\n    case 1:\n    case \"ASCENDING\":\n      return Sort_SortOrder.ASCENDING;\n    case 2:\n    case \"DESCENDING\":\n      return Sort_SortOrder.DESCENDING;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return Sort_SortOrder.UNRECOGNIZED;\n  }\n}\n\nexport function sort_SortOrderToJSON(object: Sort_SortOrder): string {\n  switch (object) {\n    case Sort_SortOrder.UNSORTED:\n      return \"UNSORTED\";\n    case Sort_SortOrder.ASCENDING:\n      return \"ASCENDING\";\n    case Sort_SortOrder.DESCENDING:\n      return \"DESCENDING\";\n    case Sort_SortOrder.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function sort_SortOrderToNumber(object: Sort_SortOrder): number {\n  switch (object) {\n    case Sort_SortOrder.UNSORTED:\n      return 0;\n    case Sort_SortOrder.ASCENDING:\n      return 1;\n    case Sort_SortOrder.DESCENDING:\n      return 2;\n    case Sort_SortOrder.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\nexport interface Filter {\n  field?: string | undefined;\n  operation?: Filter_Operation | undefined;\n  value?: string | undefined;\n  type?:\n    | Filter_ValueType\n    | undefined;\n  /** for nested filtering and to make optional its in separate filter.proto file */\n  filters?: FilterOp6[] | undefined;\n}\n\nexport enum Filter_Operation {\n  eq = \"eq\",\n  lt = \"lt\",\n  lte = \"lte\",\n  gt = \"gt\",\n  gte = \"gte\",\n  isEmpty = \"isEmpty\",\n  iLike = \"iLike\",\n  in = \"in\",\n  neq = \"neq\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function filter_OperationFromJSON(object: any): Filter_Operation {\n  switch (object) {\n    case 0:\n    case \"eq\":\n      return Filter_Operation.eq;\n    case 1:\n    case \"lt\":\n      return Filter_Operation.lt;\n    case 2:\n    case \"lte\":\n      return Filter_Operation.lte;\n    case 3:\n    case \"gt\":\n      return Filter_Operation.gt;\n    case 4:\n    case \"gte\":\n      return Filter_Operation.gte;\n    case 5:\n    case \"isEmpty\":\n      return Filter_Operation.isEmpty;\n    case 6:\n    case \"iLike\":\n      return Filter_Operation.iLike;\n    case 7:\n    case \"in\":\n      return Filter_Operation.in;\n    case 8:\n    case \"neq\":\n      return Filter_Operation.neq;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return Filter_Operation.UNRECOGNIZED;\n  }\n}\n\nexport function filter_OperationToJSON(object: Filter_Operation): string {\n  switch (object) {\n    case Filter_Operation.eq:\n      return \"eq\";\n    case Filter_Operation.lt:\n      return \"lt\";\n    case Filter_Operation.lte:\n      return \"lte\";\n    case Filter_Operation.gt:\n      return \"gt\";\n    case Filter_Operation.gte:\n      return \"gte\";\n    case Filter_Operation.isEmpty:\n      return \"isEmpty\";\n    case Filter_Operation.iLike:\n      return \"iLike\";\n    case Filter_Operation.in:\n      return \"in\";\n    case Filter_Operation.neq:\n      return \"neq\";\n    case Filter_Operation.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function filter_OperationToNumber(object: Filter_Operation): number {\n  switch (object) {\n    case Filter_Operation.eq:\n      return 0;\n    case Filter_Operation.lt:\n      return 1;\n    case Filter_Operation.lte:\n      return 2;\n    case Filter_Operation.gt:\n      return 3;\n    case Filter_Operation.gte:\n      return 4;\n    case Filter_Operation.isEmpty:\n      return 5;\n    case Filter_Operation.iLike:\n      return 6;\n    case Filter_Operation.in:\n      return 7;\n    case Filter_Operation.neq:\n      return 8;\n    case Filter_Operation.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\nexport enum Filter_ValueType {\n  /** STRING - default value type if not specified */\n  STRING = \"STRING\",\n  NUMBER = \"NUMBER\",\n  BOOLEAN = \"BOOLEAN\",\n  DATE = \"DATE\",\n  ARRAY = \"ARRAY\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function filter_ValueTypeFromJSON(object: any): Filter_ValueType {\n  switch (object) {\n    case 0:\n    case \"STRING\":\n      return Filter_ValueType.STRING;\n    case 1:\n    case \"NUMBER\":\n      return Filter_ValueType.NUMBER;\n    case 2:\n    case \"BOOLEAN\":\n      return Filter_ValueType.BOOLEAN;\n    case 3:\n    case \"DATE\":\n      return Filter_ValueType.DATE;\n    case 4:\n    case \"ARRAY\":\n      return Filter_ValueType.ARRAY;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return Filter_ValueType.UNRECOGNIZED;\n  }\n}\n\nexport function filter_ValueTypeToJSON(object: Filter_ValueType): string {\n  switch (object) {\n    case Filter_ValueType.STRING:\n      return \"STRING\";\n    case Filter_ValueType.NUMBER:\n      return \"NUMBER\";\n    case Filter_ValueType.BOOLEAN:\n      return \"BOOLEAN\";\n    case Filter_ValueType.DATE:\n      return \"DATE\";\n    case Filter_ValueType.ARRAY:\n      return \"ARRAY\";\n    case Filter_ValueType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function filter_ValueTypeToNumber(object: Filter_ValueType): number {\n  switch (object) {\n    case Filter_ValueType.STRING:\n      return 0;\n    case Filter_ValueType.NUMBER:\n      return 1;\n    case Filter_ValueType.BOOLEAN:\n      return 2;\n    case Filter_ValueType.DATE:\n      return 3;\n    case Filter_ValueType.ARRAY:\n      return 4;\n    case Filter_ValueType.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\nexport interface FilterOp {\n  filters?: Filter[] | undefined;\n  operator?: FilterOp_Operator | undefined;\n}\n\nexport enum FilterOp_Operator {\n  and = \"and\",\n  or = \"or\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function filterOp_OperatorFromJSON(object: any): FilterOp_Operator {\n  switch (object) {\n    case 0:\n    case \"and\":\n      return FilterOp_Operator.and;\n    case 1:\n    case \"or\":\n      return FilterOp_Operator.or;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return FilterOp_Operator.UNRECOGNIZED;\n  }\n}\n\nexport function filterOp_OperatorToJSON(object: FilterOp_Operator): string {\n  switch (object) {\n    case FilterOp_Operator.and:\n      return \"and\";\n    case FilterOp_Operator.or:\n      return \"or\";\n    case FilterOp_Operator.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function filterOp_OperatorToNumber(object: FilterOp_Operator): number {\n  switch (object) {\n    case FilterOp_Operator.and:\n      return 0;\n    case FilterOp_Operator.or:\n      return 1;\n    case FilterOp_Operator.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\nexport interface Search {\n  /** search string */\n  search?:\n    | string\n    | undefined;\n  /** list of fields to be searched on entity (if not specified all indexed fields will be searched) */\n  fields?:\n    | string[]\n    | undefined;\n  /** default search is case insensitive */\n  caseSensitive?: boolean | undefined;\n}\n\nexport interface ReadRequest {\n  offset?: number | undefined;\n  limit?: number | undefined;\n  sorts?:\n    | Sort[]\n    | undefined;\n  /** Filter based on fieldName|operation, value|list */\n  filters?:\n    | FilterOp[]\n    | undefined;\n  /** Fields selector */\n  fields?:\n    | FieldFilter[]\n    | undefined;\n  /**\n   * Check the query parameters of HTTP request.\n   * If query parameter `locales` is given,\n   * return all corresponding localized values.\n   * Otherwise, return always the localized value\n   * with highest priority.\n   * Can be empty, single locale or multiple locales.\n   */\n  localesLimiter?: string[] | undefined;\n  customQueries?: string[] | undefined;\n  customArguments?: Any | undefined;\n  subject?: Subject | undefined;\n  search?: Search | undefined;\n}\n\nexport interface DeleteRequest {\n  /** Request to purge the whole collection */\n  collection?:\n    | boolean\n    | undefined;\n  /** Delete specified documents */\n  ids?: string[] | undefined;\n  subject?:\n    | Subject\n    | undefined;\n  /** list of views to be dropped */\n  views?:\n    | string[]\n    | undefined;\n  /** list of analyzers to be deleted */\n  analyzers?: string[] | undefined;\n}\n\nexport interface DeleteResponse {\n  status?: Status[] | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\n/** / List of resources */\nexport interface ResourceList {\n  items?: Resource[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\n/** ResourceList response */\nexport interface ResourceListResponse {\n  items?: ResourceResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\n/** resource read response */\nexport interface ResourceResponse {\n  payload?: Resource | undefined;\n  status?: Status | undefined;\n}\n\n/** Example resource */\nexport interface Resource {\n  id?: string | undefined;\n  meta?: Meta | undefined;\n}\n\nexport interface Deleted {\n  id?: string | undefined;\n  collection?: string | undefined;\n}\n\nfunction createBaseFieldFilter(): FieldFilter {\n  return {};\n}\n\nexport const FieldFilter: MessageFns<FieldFilter> = {\n  encode(message: FieldFilter, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.name !== undefined) {\n      writer.uint32(10).string(message.name);\n    }\n    if (message.include !== undefined) {\n      writer.uint32(16).bool(message.include);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FieldFilter {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFieldFilter();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.include = reader.bool();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FieldFilter {\n    return {\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      include: isSet(object.include) ? globalThis.Boolean(object.include) : undefined,\n    };\n  },\n\n  toJSON(message: FieldFilter): unknown {\n    const obj: any = {};\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.include !== undefined) {\n      obj.include = message.include;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FieldFilter>): FieldFilter {\n    return FieldFilter.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FieldFilter>): FieldFilter {\n    const message = createBaseFieldFilter();\n    message.name = object.name ?? undefined;\n    message.include = object.include ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseSort(): Sort {\n  return {};\n}\n\nexport const Sort: MessageFns<Sort> = {\n  encode(message: Sort, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.field !== undefined) {\n      writer.uint32(10).string(message.field);\n    }\n    if (message.order !== undefined) {\n      writer.uint32(16).int32(sort_SortOrderToNumber(message.order));\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Sort {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseSort();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.field = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.order = sort_SortOrderFromJSON(reader.int32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Sort {\n    return {\n      field: isSet(object.field) ? globalThis.String(object.field) : undefined,\n      order: isSet(object.order) ? sort_SortOrderFromJSON(object.order) : undefined,\n    };\n  },\n\n  toJSON(message: Sort): unknown {\n    const obj: any = {};\n    if (message.field !== undefined) {\n      obj.field = message.field;\n    }\n    if (message.order !== undefined) {\n      obj.order = sort_SortOrderToJSON(message.order);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Sort>): Sort {\n    return Sort.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Sort>): Sort {\n    const message = createBaseSort();\n    message.field = object.field ?? undefined;\n    message.order = object.order ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseFilter(): Filter {\n  return {};\n}\n\nexport const Filter: MessageFns<Filter> = {\n  encode(message: Filter, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.field !== undefined) {\n      writer.uint32(10).string(message.field);\n    }\n    if (message.operation !== undefined) {\n      writer.uint32(16).int32(filter_OperationToNumber(message.operation));\n    }\n    if (message.value !== undefined) {\n      writer.uint32(26).string(message.value);\n    }\n    if (message.type !== undefined) {\n      writer.uint32(32).int32(filter_ValueTypeToNumber(message.type));\n    }\n    if (message.filters !== undefined && message.filters.length !== 0) {\n      for (const v of message.filters) {\n        FilterOp6.encode(v!, writer.uint32(42).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Filter {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFilter();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.field = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.operation = filter_OperationFromJSON(reader.int32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.value = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 32) {\n            break;\n          }\n\n          message.type = filter_ValueTypeFromJSON(reader.int32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          if (message.filters === undefined) {\n            message.filters = [];\n          }\n          const el = FilterOp6.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.filters!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Filter {\n    return {\n      field: isSet(object.field) ? globalThis.String(object.field) : undefined,\n      operation: isSet(object.operation) ? filter_OperationFromJSON(object.operation) : undefined,\n      value: isSet(object.value) ? globalThis.String(object.value) : undefined,\n      type: isSet(object.type) ? filter_ValueTypeFromJSON(object.type) : undefined,\n      filters: globalThis.Array.isArray(object?.filters)\n        ? object.filters.map((e: any) => FilterOp6.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: Filter): unknown {\n    const obj: any = {};\n    if (message.field !== undefined) {\n      obj.field = message.field;\n    }\n    if (message.operation !== undefined) {\n      obj.operation = filter_OperationToJSON(message.operation);\n    }\n    if (message.value !== undefined) {\n      obj.value = message.value;\n    }\n    if (message.type !== undefined) {\n      obj.type = filter_ValueTypeToJSON(message.type);\n    }\n    if (message.filters?.length) {\n      obj.filters = message.filters.map((e) => FilterOp6.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Filter>): Filter {\n    return Filter.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Filter>): Filter {\n    const message = createBaseFilter();\n    message.field = object.field ?? undefined;\n    message.operation = object.operation ?? undefined;\n    message.value = object.value ?? undefined;\n    message.type = object.type ?? undefined;\n    message.filters = object.filters?.map((e) => FilterOp6.fromPartial(e)) || undefined;\n    return message;\n  },\n};\n\nfunction createBaseFilterOp(): FilterOp {\n  return {};\n}\n\nexport const FilterOp: MessageFns<FilterOp> = {\n  encode(message: FilterOp, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.filters !== undefined && message.filters.length !== 0) {\n      for (const v of message.filters) {\n        Filter.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.operator !== undefined) {\n      writer.uint32(16).int32(filterOp_OperatorToNumber(message.operator));\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FilterOp {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFilterOp();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.filters === undefined) {\n            message.filters = [];\n          }\n          const el = Filter.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.filters!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.operator = filterOp_OperatorFromJSON(reader.int32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FilterOp {\n    return {\n      filters: globalThis.Array.isArray(object?.filters)\n        ? object.filters.map((e: any) => Filter.fromJSON(e))\n        : undefined,\n      operator: isSet(object.operator) ? filterOp_OperatorFromJSON(object.operator) : undefined,\n    };\n  },\n\n  toJSON(message: FilterOp): unknown {\n    const obj: any = {};\n    if (message.filters?.length) {\n      obj.filters = message.filters.map((e) => Filter.toJSON(e));\n    }\n    if (message.operator !== undefined) {\n      obj.operator = filterOp_OperatorToJSON(message.operator);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FilterOp>): FilterOp {\n    return FilterOp.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FilterOp>): FilterOp {\n    const message = createBaseFilterOp();\n    message.filters = object.filters?.map((e) => Filter.fromPartial(e)) || undefined;\n    message.operator = object.operator ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseSearch(): Search {\n  return {};\n}\n\nexport const Search: MessageFns<Search> = {\n  encode(message: Search, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.search !== undefined) {\n      writer.uint32(10).string(message.search);\n    }\n    if (message.fields !== undefined && message.fields.length !== 0) {\n      for (const v of message.fields) {\n        writer.uint32(18).string(v!);\n      }\n    }\n    if (message.caseSensitive !== undefined) {\n      writer.uint32(24).bool(message.caseSensitive);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Search {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseSearch();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.search = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          if (message.fields === undefined) {\n            message.fields = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.fields!.push(el);\n          }\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.caseSensitive = reader.bool();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Search {\n    return {\n      search: isSet(object.search) ? globalThis.String(object.search) : undefined,\n      fields: globalThis.Array.isArray(object?.fields)\n        ? object.fields.map((e: any) => globalThis.String(e))\n        : undefined,\n      caseSensitive: isSet(object.caseSensitive) ? globalThis.Boolean(object.caseSensitive) : undefined,\n    };\n  },\n\n  toJSON(message: Search): unknown {\n    const obj: any = {};\n    if (message.search !== undefined) {\n      obj.search = message.search;\n    }\n    if (message.fields?.length) {\n      obj.fields = message.fields;\n    }\n    if (message.caseSensitive !== undefined) {\n      obj.caseSensitive = message.caseSensitive;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Search>): Search {\n    return Search.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Search>): Search {\n    const message = createBaseSearch();\n    message.search = object.search ?? undefined;\n    message.fields = object.fields?.map((e) => e) || undefined;\n    message.caseSensitive = object.caseSensitive ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseReadRequest(): ReadRequest {\n  return {};\n}\n\nexport const ReadRequest: MessageFns<ReadRequest> = {\n  encode(message: ReadRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.offset !== undefined) {\n      writer.uint32(8).uint32(message.offset);\n    }\n    if (message.limit !== undefined) {\n      writer.uint32(16).uint32(message.limit);\n    }\n    if (message.sorts !== undefined && message.sorts.length !== 0) {\n      for (const v of message.sorts) {\n        Sort.encode(v!, writer.uint32(26).fork()).join();\n      }\n    }\n    if (message.filters !== undefined && message.filters.length !== 0) {\n      for (const v of message.filters) {\n        FilterOp.encode(v!, writer.uint32(34).fork()).join();\n      }\n    }\n    if (message.fields !== undefined && message.fields.length !== 0) {\n      for (const v of message.fields) {\n        FieldFilter.encode(v!, writer.uint32(42).fork()).join();\n      }\n    }\n    if (message.localesLimiter !== undefined && message.localesLimiter.length !== 0) {\n      for (const v of message.localesLimiter) {\n        writer.uint32(58).string(v!);\n      }\n    }\n    if (message.customQueries !== undefined && message.customQueries.length !== 0) {\n      for (const v of message.customQueries) {\n        writer.uint32(66).string(v!);\n      }\n    }\n    if (message.customArguments !== undefined) {\n      Any.encode(message.customArguments, writer.uint32(74).fork()).join();\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(82).fork()).join();\n    }\n    if (message.search !== undefined) {\n      Search.encode(message.search, writer.uint32(90).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ReadRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseReadRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.offset = reader.uint32();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.limit = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          if (message.sorts === undefined) {\n            message.sorts = [];\n          }\n          const el = Sort.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.sorts!.push(el);\n          }\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          if (message.filters === undefined) {\n            message.filters = [];\n          }\n          const el = FilterOp.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.filters!.push(el);\n          }\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          if (message.fields === undefined) {\n            message.fields = [];\n          }\n          const el = FieldFilter.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.fields!.push(el);\n          }\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          if (message.localesLimiter === undefined) {\n            message.localesLimiter = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.localesLimiter!.push(el);\n          }\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          if (message.customQueries === undefined) {\n            message.customQueries = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.customQueries!.push(el);\n          }\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.customArguments = Any.decode(reader, reader.uint32());\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.search = Search.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ReadRequest {\n    return {\n      offset: isSet(object.offset) ? globalThis.Number(object.offset) : undefined,\n      limit: isSet(object.limit) ? globalThis.Number(object.limit) : undefined,\n      sorts: globalThis.Array.isArray(object?.sorts) ? object.sorts.map((e: any) => Sort.fromJSON(e)) : undefined,\n      filters: globalThis.Array.isArray(object?.filters)\n        ? object.filters.map((e: any) => FilterOp.fromJSON(e))\n        : undefined,\n      fields: globalThis.Array.isArray(object?.fields)\n        ? object.fields.map((e: any) => FieldFilter.fromJSON(e))\n        : undefined,\n      localesLimiter: globalThis.Array.isArray(object?.localesLimiter)\n        ? object.localesLimiter.map((e: any) => globalThis.String(e))\n        : undefined,\n      customQueries: globalThis.Array.isArray(object?.customQueries)\n        ? object.customQueries.map((e: any) => globalThis.String(e))\n        : undefined,\n      customArguments: isSet(object.customArguments) ? Any.fromJSON(object.customArguments) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n      search: isSet(object.search) ? Search.fromJSON(object.search) : undefined,\n    };\n  },\n\n  toJSON(message: ReadRequest): unknown {\n    const obj: any = {};\n    if (message.offset !== undefined) {\n      obj.offset = Math.round(message.offset);\n    }\n    if (message.limit !== undefined) {\n      obj.limit = Math.round(message.limit);\n    }\n    if (message.sorts?.length) {\n      obj.sorts = message.sorts.map((e) => Sort.toJSON(e));\n    }\n    if (message.filters?.length) {\n      obj.filters = message.filters.map((e) => FilterOp.toJSON(e));\n    }\n    if (message.fields?.length) {\n      obj.fields = message.fields.map((e) => FieldFilter.toJSON(e));\n    }\n    if (message.localesLimiter?.length) {\n      obj.localesLimiter = message.localesLimiter;\n    }\n    if (message.customQueries?.length) {\n      obj.customQueries = message.customQueries;\n    }\n    if (message.customArguments !== undefined) {\n      obj.customArguments = Any.toJSON(message.customArguments);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    if (message.search !== undefined) {\n      obj.search = Search.toJSON(message.search);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ReadRequest>): ReadRequest {\n    return ReadRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ReadRequest>): ReadRequest {\n    const message = createBaseReadRequest();\n    message.offset = object.offset ?? undefined;\n    message.limit = object.limit ?? undefined;\n    message.sorts = object.sorts?.map((e) => Sort.fromPartial(e)) || undefined;\n    message.filters = object.filters?.map((e) => FilterOp.fromPartial(e)) || undefined;\n    message.fields = object.fields?.map((e) => FieldFilter.fromPartial(e)) || undefined;\n    message.localesLimiter = object.localesLimiter?.map((e) => e) || undefined;\n    message.customQueries = object.customQueries?.map((e) => e) || undefined;\n    message.customArguments = (object.customArguments !== undefined && object.customArguments !== null)\n      ? Any.fromPartial(object.customArguments)\n      : undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    message.search = (object.search !== undefined && object.search !== null)\n      ? Search.fromPartial(object.search)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseDeleteRequest(): DeleteRequest {\n  return {};\n}\n\nexport const DeleteRequest: MessageFns<DeleteRequest> = {\n  encode(message: DeleteRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.collection !== undefined) {\n      writer.uint32(8).bool(message.collection);\n    }\n    if (message.ids !== undefined && message.ids.length !== 0) {\n      for (const v of message.ids) {\n        writer.uint32(18).string(v!);\n      }\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    if (message.views !== undefined && message.views.length !== 0) {\n      for (const v of message.views) {\n        writer.uint32(34).string(v!);\n      }\n    }\n    if (message.analyzers !== undefined && message.analyzers.length !== 0) {\n      for (const v of message.analyzers) {\n        writer.uint32(42).string(v!);\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): DeleteRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseDeleteRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.collection = reader.bool();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          if (message.ids === undefined) {\n            message.ids = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.ids!.push(el);\n          }\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          if (message.views === undefined) {\n            message.views = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.views!.push(el);\n          }\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          if (message.analyzers === undefined) {\n            message.analyzers = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.analyzers!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): DeleteRequest {\n    return {\n      collection: isSet(object.collection) ? globalThis.Boolean(object.collection) : undefined,\n      ids: globalThis.Array.isArray(object?.ids) ? object.ids.map((e: any) => globalThis.String(e)) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n      views: globalThis.Array.isArray(object?.views) ? object.views.map((e: any) => globalThis.String(e)) : undefined,\n      analyzers: globalThis.Array.isArray(object?.analyzers)\n        ? object.analyzers.map((e: any) => globalThis.String(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: DeleteRequest): unknown {\n    const obj: any = {};\n    if (message.collection !== undefined) {\n      obj.collection = message.collection;\n    }\n    if (message.ids?.length) {\n      obj.ids = message.ids;\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    if (message.views?.length) {\n      obj.views = message.views;\n    }\n    if (message.analyzers?.length) {\n      obj.analyzers = message.analyzers;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<DeleteRequest>): DeleteRequest {\n    return DeleteRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<DeleteRequest>): DeleteRequest {\n    const message = createBaseDeleteRequest();\n    message.collection = object.collection ?? undefined;\n    message.ids = object.ids?.map((e) => e) || undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    message.views = object.views?.map((e) => e) || undefined;\n    message.analyzers = object.analyzers?.map((e) => e) || undefined;\n    return message;\n  },\n};\n\nfunction createBaseDeleteResponse(): DeleteResponse {\n  return {};\n}\n\nexport const DeleteResponse: MessageFns<DeleteResponse> = {\n  encode(message: DeleteResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.status !== undefined && message.status.length !== 0) {\n      for (const v of message.status) {\n        Status.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): DeleteResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseDeleteResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.status === undefined) {\n            message.status = [];\n          }\n          const el = Status.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.status!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): DeleteResponse {\n    return {\n      status: globalThis.Array.isArray(object?.status) ? object.status.map((e: any) => Status.fromJSON(e)) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: DeleteResponse): unknown {\n    const obj: any = {};\n    if (message.status?.length) {\n      obj.status = message.status.map((e) => Status.toJSON(e));\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<DeleteResponse>): DeleteResponse {\n    return DeleteResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<DeleteResponse>): DeleteResponse {\n    const message = createBaseDeleteResponse();\n    message.status = object.status?.map((e) => Status.fromPartial(e)) || undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseResourceList(): ResourceList {\n  return {};\n}\n\nexport const ResourceList: MessageFns<ResourceList> = {\n  encode(message: ResourceList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        Resource.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ResourceList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseResourceList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = Resource.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ResourceList {\n    return {\n      items: globalThis.Array.isArray(object?.items) ? object.items.map((e: any) => Resource.fromJSON(e)) : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: ResourceList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => Resource.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ResourceList>): ResourceList {\n    return ResourceList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ResourceList>): ResourceList {\n    const message = createBaseResourceList();\n    message.items = object.items?.map((e) => Resource.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseResourceListResponse(): ResourceListResponse {\n  return {};\n}\n\nexport const ResourceListResponse: MessageFns<ResourceListResponse> = {\n  encode(message: ResourceListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        ResourceResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ResourceListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseResourceListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = ResourceResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ResourceListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => ResourceResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: ResourceListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => ResourceResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ResourceListResponse>): ResourceListResponse {\n    return ResourceListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ResourceListResponse>): ResourceListResponse {\n    const message = createBaseResourceListResponse();\n    message.items = object.items?.map((e) => ResourceResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseResourceResponse(): ResourceResponse {\n  return {};\n}\n\nexport const ResourceResponse: MessageFns<ResourceResponse> = {\n  encode(message: ResourceResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      Resource.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ResourceResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseResourceResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = Resource.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ResourceResponse {\n    return {\n      payload: isSet(object.payload) ? Resource.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: ResourceResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = Resource.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ResourceResponse>): ResourceResponse {\n    return ResourceResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ResourceResponse>): ResourceResponse {\n    const message = createBaseResourceResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? Resource.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseResource(): Resource {\n  return {};\n}\n\nexport const Resource: MessageFns<Resource> = {\n  encode(message: Resource, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Resource {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseResource();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Resource {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n    };\n  },\n\n  toJSON(message: Resource): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Resource>): Resource {\n    return Resource.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Resource>): Resource {\n    const message = createBaseResource();\n    message.id = object.id ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    return message;\n  },\n};\n\nfunction createBaseDeleted(): Deleted {\n  return {};\n}\n\nexport const Deleted: MessageFns<Deleted> = {\n  encode(message: Deleted, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.collection !== undefined) {\n      writer.uint32(18).string(message.collection);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Deleted {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseDeleted();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.collection = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Deleted {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      collection: isSet(object.collection) ? globalThis.String(object.collection) : undefined,\n    };\n  },\n\n  toJSON(message: Deleted): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.collection !== undefined) {\n      obj.collection = message.collection;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Deleted>): Deleted {\n    return Deleted.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Deleted>): Deleted {\n    const message = createBaseDeleted();\n    message.id = object.id ?? undefined;\n    message.collection = object.collection ?? undefined;\n    return message;\n  },\n};\n\n/** Service provides the CRUD operations */\nexport type ServiceDefinition = typeof ServiceDefinition;\nexport const ServiceDefinition = {\n  name: \"Service\",\n  fullName: \"io.restorecommerce.resourcebase.Service\",\n  methods: {\n    read: {\n      name: \"Read\",\n      requestType: ReadRequest,\n      requestStream: false,\n      responseType: ResourceListResponse,\n      responseStream: false,\n      options: {},\n    },\n    create: {\n      name: \"Create\",\n      requestType: ResourceList,\n      requestStream: false,\n      responseType: ResourceListResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n    update: {\n      name: \"Update\",\n      requestType: ResourceList,\n      requestStream: false,\n      responseType: ResourceListResponse,\n      responseStream: false,\n      options: {},\n    },\n    upsert: {\n      name: \"Upsert\",\n      requestType: ResourceList,\n      requestStream: false,\n      responseType: ResourceListResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface ServiceImplementation<CallContextExt = {}> {\n  read(request: ReadRequest, context: CallContext & CallContextExt): Promise<DeepPartial<ResourceListResponse>>;\n  create(request: ResourceList, context: CallContext & CallContextExt): Promise<DeepPartial<ResourceListResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n  update(request: ResourceList, context: CallContext & CallContextExt): Promise<DeepPartial<ResourceListResponse>>;\n  upsert(request: ResourceList, context: CallContext & CallContextExt): Promise<DeepPartial<ResourceListResponse>>;\n}\n\nexport interface ServiceClient<CallOptionsExt = {}> {\n  read(request: DeepPartial<ReadRequest>, options?: CallOptions & CallOptionsExt): Promise<ResourceListResponse>;\n  create(request: DeepPartial<ResourceList>, options?: CallOptions & CallOptionsExt): Promise<ResourceListResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n  update(request: DeepPartial<ResourceList>, options?: CallOptions & CallOptionsExt): Promise<ResourceListResponse>;\n  upsert(request: DeepPartial<ResourceList>, options?: CallOptions & CallOptionsExt): Promise<ResourceListResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/resource_base.proto\",\n    \"package\": \"io.restorecommerce.resourcebase\",\n    \"dependency\": [\n      \"google/protobuf/any.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/filter.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"FieldFilter\",\n      \"field\": [{\n        \"name\": \"name\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"include\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"include\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_name\", \"options\": undefined }, { \"name\": \"_include\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Sort\",\n      \"field\": [{\n        \"name\": \"field\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"field\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"order\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".io.restorecommerce.resourcebase.Sort.SortOrder\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"order\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [{\n        \"name\": \"SortOrder\",\n        \"value\": [{ \"name\": \"UNSORTED\", \"number\": 0, \"options\": undefined }, {\n          \"name\": \"ASCENDING\",\n          \"number\": 1,\n          \"options\": undefined,\n        }, { \"name\": \"DESCENDING\", \"number\": 2, \"options\": undefined }],\n        \"options\": undefined,\n        \"reservedRange\": [],\n        \"reservedName\": [],\n      }],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_field\", \"options\": undefined }, { \"name\": \"_order\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Filter\",\n      \"field\": [{\n        \"name\": \"field\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"field\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".io.restorecommerce.resourcebase.Filter.Operation\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operation\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"value\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"value\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"type\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".io.restorecommerce.resourcebase.Filter.ValueType\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"type\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"filters\",\n        \"number\": 5,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.filter.FilterOp\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"filters\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [{\n        \"name\": \"Operation\",\n        \"value\": [\n          { \"name\": \"eq\", \"number\": 0, \"options\": undefined },\n          { \"name\": \"lt\", \"number\": 1, \"options\": undefined },\n          { \"name\": \"lte\", \"number\": 2, \"options\": undefined },\n          { \"name\": \"gt\", \"number\": 3, \"options\": undefined },\n          { \"name\": \"gte\", \"number\": 4, \"options\": undefined },\n          { \"name\": \"isEmpty\", \"number\": 5, \"options\": undefined },\n          { \"name\": \"iLike\", \"number\": 6, \"options\": undefined },\n          { \"name\": \"in\", \"number\": 7, \"options\": undefined },\n          { \"name\": \"neq\", \"number\": 8, \"options\": undefined },\n        ],\n        \"options\": undefined,\n        \"reservedRange\": [],\n        \"reservedName\": [],\n      }, {\n        \"name\": \"ValueType\",\n        \"value\": [\n          { \"name\": \"STRING\", \"number\": 0, \"options\": undefined },\n          { \"name\": \"NUMBER\", \"number\": 1, \"options\": undefined },\n          { \"name\": \"BOOLEAN\", \"number\": 2, \"options\": undefined },\n          { \"name\": \"DATE\", \"number\": 3, \"options\": undefined },\n          { \"name\": \"ARRAY\", \"number\": 4, \"options\": undefined },\n        ],\n        \"options\": undefined,\n        \"reservedRange\": [],\n        \"reservedName\": [],\n      }],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_field\", \"options\": undefined }, { \"name\": \"_operation\", \"options\": undefined }, {\n        \"name\": \"_value\",\n        \"options\": undefined,\n      }, { \"name\": \"_type\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"FilterOp\",\n      \"field\": [{\n        \"name\": \"filters\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.resourcebase.Filter\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"filters\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"operator\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".io.restorecommerce.resourcebase.FilterOp.Operator\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"operator\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [{\n        \"name\": \"Operator\",\n        \"value\": [{ \"name\": \"and\", \"number\": 0, \"options\": undefined }, {\n          \"name\": \"or\",\n          \"number\": 1,\n          \"options\": undefined,\n        }],\n        \"options\": undefined,\n        \"reservedRange\": [],\n        \"reservedName\": [],\n      }],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_operator\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Search\",\n      \"field\": [{\n        \"name\": \"search\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"search\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"fields\",\n        \"number\": 2,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"fields\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"case_sensitive\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"caseSensitive\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_search\", \"options\": undefined }, { \"name\": \"_case_sensitive\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ReadRequest\",\n      \"field\": [{\n        \"name\": \"offset\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"offset\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"limit\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"limit\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"sorts\",\n        \"number\": 3,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.resourcebase.Sort\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"sorts\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"filters\",\n        \"number\": 4,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.resourcebase.FilterOp\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"filters\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"fields\",\n        \"number\": 5,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.resourcebase.FieldFilter\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"fields\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"locales_limiter\",\n        \"number\": 7,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"localesLimiter\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"custom_queries\",\n        \"number\": 8,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"customQueries\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"custom_arguments\",\n        \"number\": 9,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Any\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"customArguments\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 10,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"search\",\n        \"number\": 11,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.resourcebase.Search\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"search\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_offset\", \"options\": undefined },\n        { \"name\": \"_limit\", \"options\": undefined },\n        { \"name\": \"_custom_arguments\", \"options\": undefined },\n        { \"name\": \"_subject\", \"options\": undefined },\n        { \"name\": \"_search\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"DeleteRequest\",\n      \"field\": [{\n        \"name\": \"collection\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"collection\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"ids\",\n        \"number\": 2,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"ids\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"views\",\n        \"number\": 4,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"views\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"analyzers\",\n        \"number\": 5,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"analyzers\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_collection\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"DeleteResponse\",\n      \"field\": [{\n        \"name\": \"status\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_operation_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ResourceList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.resourcebase.Resource\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ResourceListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.resourcebase.ResourceResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ResourceResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.resourcebase.Resource\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Resource\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }, { \"name\": \"_meta\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Deleted\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"collection\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"collection\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }, { \"name\": \"_collection\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [{\n      \"name\": \"Service\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ReadRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.ResourceListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ResourceList\",\n        \"outputType\": \".io.restorecommerce.resourcebase.ResourceListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ResourceList\",\n        \"outputType\": \".io.restorecommerce.resourcebase.ResourceListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ResourceList\",\n        \"outputType\": \".io.restorecommerce.resourcebase.ResourceListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [6, 0],\n        \"span\": [10, 0, 16, 1],\n        \"leadingComments\": \" Service provides the CRUD operations\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 2, 4, 1, 2, 0],\n        \"span\": [49, 4, 15],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" default value type if not specified\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 2, 2, 4],\n        \"span\": [56, 2, 58],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" for nested filtering and to make optional its in separate filter.proto file\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4, 2, 0],\n        \"span\": [69, 2, 29],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" search string\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4, 2, 1],\n        \"span\": [70, 2, 29],\n        \"leadingComments\": \"\",\n        \"trailingComments\":\n          \" list of fields to be searched on entity (if not specified all indexed fields will be searched)\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4, 2, 2],\n        \"span\": [71, 2, 35],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" default search is case insensitive\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 5, 2, 3],\n        \"span\": [80, 2, 32],\n        \"leadingComments\": \" Filter based on fieldName|operation, value|list\\n\",\n        \"trailingComments\": \" repeated filters\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 5, 2, 4],\n        \"span\": [83, 2, 34],\n        \"leadingComments\": \" Fields selector\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 5, 2, 5],\n        \"span\": [92, 2, 38],\n        \"leadingComments\":\n          \"* Check the query parameters of HTTP request.\\n If query parameter `locales` is given,\\n return all corresponding localized values.\\n Otherwise, return always the localized value\\n with highest priority.\\n Can be empty, single locale or multiple locales.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 6, 2, 0],\n        \"span\": [102, 2, 31],\n        \"leadingComments\": \" Request to purge the whole collection\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 6, 2, 1],\n        \"span\": [104, 2, 26],\n        \"leadingComments\": \" Delete specified documents\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 6, 2, 3],\n        \"span\": [106, 2, 28],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" list of views to be dropped\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 6, 2, 4],\n        \"span\": [107, 2, 32],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" list of analyzers to be deleted\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 8],\n        \"span\": [116, 0, 120, 1],\n        \"leadingComments\": \"/ List of resources\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 9],\n        \"span\": [123, 0, 127, 1],\n        \"leadingComments\": \" ResourceList response\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 10],\n        \"span\": [130, 0, 133, 1],\n        \"leadingComments\": \" resource read response\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 11],\n        \"span\": [136, 0, 139, 1],\n        \"leadingComments\": \" Example resource\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.resourcebase.FieldFilter\": FieldFilter,\n    \".io.restorecommerce.resourcebase.Sort\": Sort,\n    \".io.restorecommerce.resourcebase.Sort.SortOrder\": Sort_SortOrder,\n    \".io.restorecommerce.resourcebase.Filter\": Filter,\n    \".io.restorecommerce.resourcebase.Filter.Operation\": Filter_Operation,\n    \".io.restorecommerce.resourcebase.Filter.ValueType\": Filter_ValueType,\n    \".io.restorecommerce.resourcebase.FilterOp\": FilterOp,\n    \".io.restorecommerce.resourcebase.FilterOp.Operator\": FilterOp_Operator,\n    \".io.restorecommerce.resourcebase.Search\": Search,\n    \".io.restorecommerce.resourcebase.ReadRequest\": ReadRequest,\n    \".io.restorecommerce.resourcebase.DeleteRequest\": DeleteRequest,\n    \".io.restorecommerce.resourcebase.DeleteResponse\": DeleteResponse,\n    \".io.restorecommerce.resourcebase.ResourceList\": ResourceList,\n    \".io.restorecommerce.resourcebase.ResourceListResponse\": ResourceListResponse,\n    \".io.restorecommerce.resourcebase.ResourceResponse\": ResourceResponse,\n    \".io.restorecommerce.resourcebase.Resource\": Resource,\n    \".io.restorecommerce.resourcebase.Deleted\": Deleted,\n  },\n  dependencies: [protoMetadata1, protoMetadata2, protoMetadata3, protoMetadata4, protoMetadata5],\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/locale.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { protoMetadata as protoMetadata3, Subject } from \"./auth\";\nimport { Meta, protoMetadata as protoMetadata2 } from \"./meta\";\nimport { protoMetadata as protoMetadata5, Resolver } from \"./options\";\nimport { DeleteRequest, DeleteResponse, protoMetadata as protoMetadata1, ReadRequest } from \"./resource_base\";\nimport { OperationStatus, protoMetadata as protoMetadata4, Status } from \"./status\";\n\nexport const protobufPackage = \"io.restorecommerce.locale\";\n\nexport interface Deleted {\n  id?: string | undefined;\n}\n\nexport interface LocaleList {\n  items?: Locale[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface LocaleListResponse {\n  items?: LocaleResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface LocaleResponse {\n  payload?: Locale | undefined;\n  status?: Status | undefined;\n}\n\nexport interface Locale {\n  id?: string | undefined;\n  meta?:\n    | Meta\n    | undefined;\n  /** official symbole */\n  value?: string | undefined;\n  description?:\n    | string\n    | undefined;\n  /** display name */\n  name?:\n    | string\n    | undefined;\n  /** parent_id for allowed fallback e.g.: 'en-de' may allow fallback to 'en' */\n  parentId?: string | undefined;\n}\n\nfunction createBaseDeleted(): Deleted {\n  return {};\n}\n\nexport const Deleted: MessageFns<Deleted> = {\n  encode(message: Deleted, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Deleted {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseDeleted();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Deleted {\n    return { id: isSet(object.id) ? globalThis.String(object.id) : undefined };\n  },\n\n  toJSON(message: Deleted): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Deleted>): Deleted {\n    return Deleted.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Deleted>): Deleted {\n    const message = createBaseDeleted();\n    message.id = object.id ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseLocaleList(): LocaleList {\n  return {};\n}\n\nexport const LocaleList: MessageFns<LocaleList> = {\n  encode(message: LocaleList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        Locale.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): LocaleList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseLocaleList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = Locale.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): LocaleList {\n    return {\n      items: globalThis.Array.isArray(object?.items) ? object.items.map((e: any) => Locale.fromJSON(e)) : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: LocaleList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => Locale.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<LocaleList>): LocaleList {\n    return LocaleList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<LocaleList>): LocaleList {\n    const message = createBaseLocaleList();\n    message.items = object.items?.map((e) => Locale.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseLocaleListResponse(): LocaleListResponse {\n  return {};\n}\n\nexport const LocaleListResponse: MessageFns<LocaleListResponse> = {\n  encode(message: LocaleListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        LocaleResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): LocaleListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseLocaleListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = LocaleResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): LocaleListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => LocaleResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: LocaleListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => LocaleResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<LocaleListResponse>): LocaleListResponse {\n    return LocaleListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<LocaleListResponse>): LocaleListResponse {\n    const message = createBaseLocaleListResponse();\n    message.items = object.items?.map((e) => LocaleResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseLocaleResponse(): LocaleResponse {\n  return {};\n}\n\nexport const LocaleResponse: MessageFns<LocaleResponse> = {\n  encode(message: LocaleResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      Locale.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): LocaleResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseLocaleResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = Locale.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): LocaleResponse {\n    return {\n      payload: isSet(object.payload) ? Locale.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: LocaleResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = Locale.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<LocaleResponse>): LocaleResponse {\n    return LocaleResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<LocaleResponse>): LocaleResponse {\n    const message = createBaseLocaleResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? Locale.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseLocale(): Locale {\n  return {};\n}\n\nexport const Locale: MessageFns<Locale> = {\n  encode(message: Locale, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(18).fork()).join();\n    }\n    if (message.value !== undefined) {\n      writer.uint32(26).string(message.value);\n    }\n    if (message.description !== undefined) {\n      writer.uint32(34).string(message.description);\n    }\n    if (message.name !== undefined) {\n      writer.uint32(42).string(message.name);\n    }\n    if (message.parentId !== undefined) {\n      writer.uint32(50).string(message.parentId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Locale {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseLocale();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.value = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.parentId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Locale {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      value: isSet(object.value) ? globalThis.String(object.value) : undefined,\n      description: isSet(object.description) ? globalThis.String(object.description) : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      parentId: isSet(object.parentId) ? globalThis.String(object.parentId) : undefined,\n    };\n  },\n\n  toJSON(message: Locale): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.value !== undefined) {\n      obj.value = message.value;\n    }\n    if (message.description !== undefined) {\n      obj.description = message.description;\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.parentId !== undefined) {\n      obj.parentId = message.parentId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Locale>): Locale {\n    return Locale.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Locale>): Locale {\n    const message = createBaseLocale();\n    message.id = object.id ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.value = object.value ?? undefined;\n    message.description = object.description ?? undefined;\n    message.name = object.name ?? undefined;\n    message.parentId = object.parentId ?? undefined;\n    return message;\n  },\n};\n\n/** Microservice definition. */\nexport type LocaleServiceDefinition = typeof LocaleServiceDefinition;\nexport const LocaleServiceDefinition = {\n  name: \"LocaleService\",\n  fullName: \"io.restorecommerce.locale.LocaleService\",\n  methods: {\n    read: {\n      name: \"Read\",\n      requestType: ReadRequest,\n      requestStream: false,\n      responseType: LocaleListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    create: {\n      name: \"Create\",\n      requestType: LocaleList,\n      requestStream: false,\n      responseType: LocaleListResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n    update: {\n      name: \"Update\",\n      requestType: LocaleList,\n      requestStream: false,\n      responseType: LocaleListResponse,\n      responseStream: false,\n      options: {},\n    },\n    upsert: {\n      name: \"Upsert\",\n      requestType: LocaleList,\n      requestStream: false,\n      responseType: LocaleListResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface LocaleServiceImplementation<CallContextExt = {}> {\n  read(request: ReadRequest, context: CallContext & CallContextExt): Promise<DeepPartial<LocaleListResponse>>;\n  create(request: LocaleList, context: CallContext & CallContextExt): Promise<DeepPartial<LocaleListResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n  update(request: LocaleList, context: CallContext & CallContextExt): Promise<DeepPartial<LocaleListResponse>>;\n  upsert(request: LocaleList, context: CallContext & CallContextExt): Promise<DeepPartial<LocaleListResponse>>;\n}\n\nexport interface LocaleServiceClient<CallOptionsExt = {}> {\n  read(request: DeepPartial<ReadRequest>, options?: CallOptions & CallOptionsExt): Promise<LocaleListResponse>;\n  create(request: DeepPartial<LocaleList>, options?: CallOptions & CallOptionsExt): Promise<LocaleListResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n  update(request: DeepPartial<LocaleList>, options?: CallOptions & CallOptionsExt): Promise<LocaleListResponse>;\n  upsert(request: DeepPartial<LocaleList>, options?: CallOptions & CallOptionsExt): Promise<LocaleListResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/locale.proto\",\n    \"package\": \"io.restorecommerce.locale\",\n    \"dependency\": [\n      \"io/restorecommerce/resource_base.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/options.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Deleted\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"LocaleList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.locale.Locale\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"LocaleListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.locale.LocaleResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"LocaleResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.locale.Locale\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Locale\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"value\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"value\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"description\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"description\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"name\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"parent_id\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"parentId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_value\", \"options\": undefined },\n        { \"name\": \"_description\", \"options\": undefined },\n        { \"name\": \"_name\", \"options\": undefined },\n        { \"name\": \"_parent_id\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [{\n      \"name\": \"LocaleService\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ReadRequest\",\n        \"outputType\": \".io.restorecommerce.locale.LocaleListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.locale.LocaleList\",\n        \"outputType\": \".io.restorecommerce.locale.LocaleListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.locale.LocaleList\",\n        \"outputType\": \".io.restorecommerce.locale.LocaleListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.locale.LocaleList\",\n        \"outputType\": \".io.restorecommerce.locale.LocaleListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [6, 0],\n        \"span\": [13, 0, 21, 1],\n        \"leadingComments\": \"\\n Microservice definition.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4, 2, 2],\n        \"span\": [47, 2, 28],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" official symbole\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4, 2, 4],\n        \"span\": [49, 2, 27],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" display name\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4, 2, 5],\n        \"span\": [50, 2, 58, 4],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" parent_id for allowed fallback e.g.: 'en-de' may allow fallback to 'en' \\n\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.locale.Deleted\": Deleted,\n    \".io.restorecommerce.locale.LocaleList\": LocaleList,\n    \".io.restorecommerce.locale.LocaleListResponse\": LocaleListResponse,\n    \".io.restorecommerce.locale.LocaleResponse\": LocaleResponse,\n    \".io.restorecommerce.locale.Locale\": Locale,\n  },\n  dependencies: [protoMetadata1, protoMetadata2, protoMetadata3, protoMetadata4, protoMetadata5],\n  options: {\n    messages: {\n      \"Locale\": {\n        fields: {\n          \"parent_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CiEuaW8ucmVzdG9yZWNvbW1lcmNlLmxvY2FsZS5Mb2NhbGUSC21hc3Rlcl9kYXRhGgZsb2NhbGUiBFJlYWQqBnBhcmVudA==\",\n                \"base64\",\n              ),\n            ),\n          },\n        },\n      },\n    },\n    services: { \"LocaleService\": { methods: { \"Read\": { \"is_query\": true } } } },\n  },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/role.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { protoMetadata as protoMetadata3, Subject } from \"./auth\";\nimport { Meta, protoMetadata as protoMetadata2 } from \"./meta\";\nimport { protoMetadata as protoMetadata5 } from \"./options\";\nimport { DeleteRequest, DeleteResponse, protoMetadata as protoMetadata1, ReadRequest } from \"./resource_base\";\nimport { OperationStatus, protoMetadata as protoMetadata4, Status } from \"./status\";\n\nexport const protobufPackage = \"io.restorecommerce.role\";\n\nexport interface Role {\n  id?: string | undefined;\n  meta?:\n    | Meta\n    | undefined;\n  /** specifies the role of the user */\n  name?: string | undefined;\n  description?:\n    | string\n    | undefined;\n  /** role id who can assign this role */\n  assignableByRoles?: string[] | undefined;\n}\n\nexport interface RoleList {\n  items?: Role[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface RoleListResponse {\n  items?: RoleResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface RoleResponse {\n  payload?: Role | undefined;\n  status?: Status | undefined;\n}\n\nexport interface Deleted {\n  id?: string | undefined;\n}\n\nfunction createBaseRole(): Role {\n  return {};\n}\n\nexport const Role: MessageFns<Role> = {\n  encode(message: Role, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(18).fork()).join();\n    }\n    if (message.name !== undefined) {\n      writer.uint32(26).string(message.name);\n    }\n    if (message.description !== undefined) {\n      writer.uint32(34).string(message.description);\n    }\n    if (message.assignableByRoles !== undefined && message.assignableByRoles.length !== 0) {\n      for (const v of message.assignableByRoles) {\n        writer.uint32(42).string(v!);\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Role {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseRole();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          if (message.assignableByRoles === undefined) {\n            message.assignableByRoles = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.assignableByRoles!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Role {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      description: isSet(object.description) ? globalThis.String(object.description) : undefined,\n      assignableByRoles: globalThis.Array.isArray(object?.assignableByRoles)\n        ? object.assignableByRoles.map((e: any) => globalThis.String(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: Role): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.description !== undefined) {\n      obj.description = message.description;\n    }\n    if (message.assignableByRoles?.length) {\n      obj.assignableByRoles = message.assignableByRoles;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Role>): Role {\n    return Role.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Role>): Role {\n    const message = createBaseRole();\n    message.id = object.id ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.name = object.name ?? undefined;\n    message.description = object.description ?? undefined;\n    message.assignableByRoles = object.assignableByRoles?.map((e) => e) || undefined;\n    return message;\n  },\n};\n\nfunction createBaseRoleList(): RoleList {\n  return {};\n}\n\nexport const RoleList: MessageFns<RoleList> = {\n  encode(message: RoleList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        Role.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): RoleList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseRoleList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = Role.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): RoleList {\n    return {\n      items: globalThis.Array.isArray(object?.items) ? object.items.map((e: any) => Role.fromJSON(e)) : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: RoleList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => Role.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<RoleList>): RoleList {\n    return RoleList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<RoleList>): RoleList {\n    const message = createBaseRoleList();\n    message.items = object.items?.map((e) => Role.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseRoleListResponse(): RoleListResponse {\n  return {};\n}\n\nexport const RoleListResponse: MessageFns<RoleListResponse> = {\n  encode(message: RoleListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        RoleResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): RoleListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseRoleListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = RoleResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): RoleListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => RoleResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: RoleListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => RoleResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<RoleListResponse>): RoleListResponse {\n    return RoleListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<RoleListResponse>): RoleListResponse {\n    const message = createBaseRoleListResponse();\n    message.items = object.items?.map((e) => RoleResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseRoleResponse(): RoleResponse {\n  return {};\n}\n\nexport const RoleResponse: MessageFns<RoleResponse> = {\n  encode(message: RoleResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      Role.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): RoleResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseRoleResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = Role.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): RoleResponse {\n    return {\n      payload: isSet(object.payload) ? Role.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: RoleResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = Role.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<RoleResponse>): RoleResponse {\n    return RoleResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<RoleResponse>): RoleResponse {\n    const message = createBaseRoleResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? Role.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseDeleted(): Deleted {\n  return {};\n}\n\nexport const Deleted: MessageFns<Deleted> = {\n  encode(message: Deleted, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Deleted {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseDeleted();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Deleted {\n    return { id: isSet(object.id) ? globalThis.String(object.id) : undefined };\n  },\n\n  toJSON(message: Deleted): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Deleted>): Deleted {\n    return Deleted.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Deleted>): Deleted {\n    const message = createBaseDeleted();\n    message.id = object.id ?? undefined;\n    return message;\n  },\n};\n\nexport type RoleServiceDefinition = typeof RoleServiceDefinition;\nexport const RoleServiceDefinition = {\n  name: \"RoleService\",\n  fullName: \"io.restorecommerce.role.RoleService\",\n  methods: {\n    read: {\n      name: \"Read\",\n      requestType: ReadRequest,\n      requestStream: false,\n      responseType: RoleListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    create: {\n      name: \"Create\",\n      requestType: RoleList,\n      requestStream: false,\n      responseType: RoleListResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n    update: {\n      name: \"Update\",\n      requestType: RoleList,\n      requestStream: false,\n      responseType: RoleListResponse,\n      responseStream: false,\n      options: {},\n    },\n    upsert: {\n      name: \"Upsert\",\n      requestType: RoleList,\n      requestStream: false,\n      responseType: RoleListResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface RoleServiceImplementation<CallContextExt = {}> {\n  read(request: ReadRequest, context: CallContext & CallContextExt): Promise<DeepPartial<RoleListResponse>>;\n  create(request: RoleList, context: CallContext & CallContextExt): Promise<DeepPartial<RoleListResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n  update(request: RoleList, context: CallContext & CallContextExt): Promise<DeepPartial<RoleListResponse>>;\n  upsert(request: RoleList, context: CallContext & CallContextExt): Promise<DeepPartial<RoleListResponse>>;\n}\n\nexport interface RoleServiceClient<CallOptionsExt = {}> {\n  read(request: DeepPartial<ReadRequest>, options?: CallOptions & CallOptionsExt): Promise<RoleListResponse>;\n  create(request: DeepPartial<RoleList>, options?: CallOptions & CallOptionsExt): Promise<RoleListResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n  update(request: DeepPartial<RoleList>, options?: CallOptions & CallOptionsExt): Promise<RoleListResponse>;\n  upsert(request: DeepPartial<RoleList>, options?: CallOptions & CallOptionsExt): Promise<RoleListResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/role.proto\",\n    \"package\": \"io.restorecommerce.role\",\n    \"dependency\": [\n      \"io/restorecommerce/resource_base.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/options.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Role\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"name\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"description\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"description\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"assignable_by_roles\",\n        \"number\": 5,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"assignableByRoles\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }, { \"name\": \"_meta\", \"options\": undefined }, {\n        \"name\": \"_name\",\n        \"options\": undefined,\n      }, { \"name\": \"_description\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"RoleList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.role.Role\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"RoleListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.role.RoleResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"RoleResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.role.Role\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Deleted\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [{\n      \"name\": \"RoleService\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ReadRequest\",\n        \"outputType\": \".io.restorecommerce.role.RoleListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.role.RoleList\",\n        \"outputType\": \".io.restorecommerce.role.RoleListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.role.RoleList\",\n        \"outputType\": \".io.restorecommerce.role.RoleListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.role.RoleList\",\n        \"outputType\": \".io.restorecommerce.role.RoleListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [4, 0, 2, 2],\n        \"span\": [23, 2, 27],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" specifies the role of the user\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 0, 2, 4],\n        \"span\": [25, 2, 42],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" role id who can assign this role\\n\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.role.Role\": Role,\n    \".io.restorecommerce.role.RoleList\": RoleList,\n    \".io.restorecommerce.role.RoleListResponse\": RoleListResponse,\n    \".io.restorecommerce.role.RoleResponse\": RoleResponse,\n    \".io.restorecommerce.role.Deleted\": Deleted,\n  },\n  dependencies: [protoMetadata1, protoMetadata2, protoMetadata3, protoMetadata4, protoMetadata5],\n  options: { services: { \"RoleService\": { methods: { \"Read\": { \"is_query\": true } } } } },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/timezone.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { protoMetadata as protoMetadata3, Subject } from \"./auth\";\nimport { Meta, protoMetadata as protoMetadata2 } from \"./meta\";\nimport { protoMetadata as protoMetadata5 } from \"./options\";\nimport { DeleteRequest, DeleteResponse, protoMetadata as protoMetadata1, ReadRequest } from \"./resource_base\";\nimport { OperationStatus, protoMetadata as protoMetadata4, Status } from \"./status\";\n\nexport const protobufPackage = \"io.restorecommerce.timezone\";\n\nexport interface Deleted {\n  id?: string | undefined;\n}\n\nexport interface TimezoneList {\n  items?: Timezone[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface TimezoneListResponse {\n  items?: TimezoneResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface TimezoneResponse {\n  payload?: Timezone | undefined;\n  status?: Status | undefined;\n}\n\nexport interface TimezoneOffset {\n  hours?: number | undefined;\n  minutes?: number | undefined;\n}\n\nexport interface Timezone {\n  id?: string | undefined;\n  meta?:\n    | Meta\n    | undefined;\n  /** display name */\n  name?:\n    | string\n    | undefined;\n  /** official name */\n  value?: string | undefined;\n  abbreviationStd?: string | undefined;\n  abbreviationDst?: string | undefined;\n  offsetStd?: TimezoneOffset | undefined;\n  offsetDst?: TimezoneOffset | undefined;\n  description?: string | undefined;\n}\n\nfunction createBaseDeleted(): Deleted {\n  return {};\n}\n\nexport const Deleted: MessageFns<Deleted> = {\n  encode(message: Deleted, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Deleted {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseDeleted();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Deleted {\n    return { id: isSet(object.id) ? globalThis.String(object.id) : undefined };\n  },\n\n  toJSON(message: Deleted): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Deleted>): Deleted {\n    return Deleted.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Deleted>): Deleted {\n    const message = createBaseDeleted();\n    message.id = object.id ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseTimezoneList(): TimezoneList {\n  return {};\n}\n\nexport const TimezoneList: MessageFns<TimezoneList> = {\n  encode(message: TimezoneList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        Timezone.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): TimezoneList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseTimezoneList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = Timezone.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): TimezoneList {\n    return {\n      items: globalThis.Array.isArray(object?.items) ? object.items.map((e: any) => Timezone.fromJSON(e)) : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: TimezoneList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => Timezone.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<TimezoneList>): TimezoneList {\n    return TimezoneList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<TimezoneList>): TimezoneList {\n    const message = createBaseTimezoneList();\n    message.items = object.items?.map((e) => Timezone.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseTimezoneListResponse(): TimezoneListResponse {\n  return {};\n}\n\nexport const TimezoneListResponse: MessageFns<TimezoneListResponse> = {\n  encode(message: TimezoneListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        TimezoneResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): TimezoneListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseTimezoneListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = TimezoneResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): TimezoneListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => TimezoneResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: TimezoneListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => TimezoneResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<TimezoneListResponse>): TimezoneListResponse {\n    return TimezoneListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<TimezoneListResponse>): TimezoneListResponse {\n    const message = createBaseTimezoneListResponse();\n    message.items = object.items?.map((e) => TimezoneResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseTimezoneResponse(): TimezoneResponse {\n  return {};\n}\n\nexport const TimezoneResponse: MessageFns<TimezoneResponse> = {\n  encode(message: TimezoneResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      Timezone.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): TimezoneResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseTimezoneResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = Timezone.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): TimezoneResponse {\n    return {\n      payload: isSet(object.payload) ? Timezone.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: TimezoneResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = Timezone.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<TimezoneResponse>): TimezoneResponse {\n    return TimezoneResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<TimezoneResponse>): TimezoneResponse {\n    const message = createBaseTimezoneResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? Timezone.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseTimezoneOffset(): TimezoneOffset {\n  return {};\n}\n\nexport const TimezoneOffset: MessageFns<TimezoneOffset> = {\n  encode(message: TimezoneOffset, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.hours !== undefined) {\n      writer.uint32(8).int32(message.hours);\n    }\n    if (message.minutes !== undefined) {\n      writer.uint32(16).int32(message.minutes);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): TimezoneOffset {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseTimezoneOffset();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.hours = reader.int32();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.minutes = reader.int32();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): TimezoneOffset {\n    return {\n      hours: isSet(object.hours) ? globalThis.Number(object.hours) : undefined,\n      minutes: isSet(object.minutes) ? globalThis.Number(object.minutes) : undefined,\n    };\n  },\n\n  toJSON(message: TimezoneOffset): unknown {\n    const obj: any = {};\n    if (message.hours !== undefined) {\n      obj.hours = Math.round(message.hours);\n    }\n    if (message.minutes !== undefined) {\n      obj.minutes = Math.round(message.minutes);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<TimezoneOffset>): TimezoneOffset {\n    return TimezoneOffset.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<TimezoneOffset>): TimezoneOffset {\n    const message = createBaseTimezoneOffset();\n    message.hours = object.hours ?? undefined;\n    message.minutes = object.minutes ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseTimezone(): Timezone {\n  return {};\n}\n\nexport const Timezone: MessageFns<Timezone> = {\n  encode(message: Timezone, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(18).fork()).join();\n    }\n    if (message.name !== undefined) {\n      writer.uint32(26).string(message.name);\n    }\n    if (message.value !== undefined) {\n      writer.uint32(34).string(message.value);\n    }\n    if (message.abbreviationStd !== undefined) {\n      writer.uint32(42).string(message.abbreviationStd);\n    }\n    if (message.abbreviationDst !== undefined) {\n      writer.uint32(50).string(message.abbreviationDst);\n    }\n    if (message.offsetStd !== undefined) {\n      TimezoneOffset.encode(message.offsetStd, writer.uint32(58).fork()).join();\n    }\n    if (message.offsetDst !== undefined) {\n      TimezoneOffset.encode(message.offsetDst, writer.uint32(66).fork()).join();\n    }\n    if (message.description !== undefined) {\n      writer.uint32(74).string(message.description);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Timezone {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseTimezone();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.value = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.abbreviationStd = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.abbreviationDst = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.offsetStd = TimezoneOffset.decode(reader, reader.uint32());\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.offsetDst = TimezoneOffset.decode(reader, reader.uint32());\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Timezone {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      value: isSet(object.value) ? globalThis.String(object.value) : undefined,\n      abbreviationStd: isSet(object.abbreviationStd) ? globalThis.String(object.abbreviationStd) : undefined,\n      abbreviationDst: isSet(object.abbreviationDst) ? globalThis.String(object.abbreviationDst) : undefined,\n      offsetStd: isSet(object.offsetStd) ? TimezoneOffset.fromJSON(object.offsetStd) : undefined,\n      offsetDst: isSet(object.offsetDst) ? TimezoneOffset.fromJSON(object.offsetDst) : undefined,\n      description: isSet(object.description) ? globalThis.String(object.description) : undefined,\n    };\n  },\n\n  toJSON(message: Timezone): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.value !== undefined) {\n      obj.value = message.value;\n    }\n    if (message.abbreviationStd !== undefined) {\n      obj.abbreviationStd = message.abbreviationStd;\n    }\n    if (message.abbreviationDst !== undefined) {\n      obj.abbreviationDst = message.abbreviationDst;\n    }\n    if (message.offsetStd !== undefined) {\n      obj.offsetStd = TimezoneOffset.toJSON(message.offsetStd);\n    }\n    if (message.offsetDst !== undefined) {\n      obj.offsetDst = TimezoneOffset.toJSON(message.offsetDst);\n    }\n    if (message.description !== undefined) {\n      obj.description = message.description;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Timezone>): Timezone {\n    return Timezone.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Timezone>): Timezone {\n    const message = createBaseTimezone();\n    message.id = object.id ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.name = object.name ?? undefined;\n    message.value = object.value ?? undefined;\n    message.abbreviationStd = object.abbreviationStd ?? undefined;\n    message.abbreviationDst = object.abbreviationDst ?? undefined;\n    message.offsetStd = (object.offsetStd !== undefined && object.offsetStd !== null)\n      ? TimezoneOffset.fromPartial(object.offsetStd)\n      : undefined;\n    message.offsetDst = (object.offsetDst !== undefined && object.offsetDst !== null)\n      ? TimezoneOffset.fromPartial(object.offsetDst)\n      : undefined;\n    message.description = object.description ?? undefined;\n    return message;\n  },\n};\n\n/** Microservice definition. */\nexport type TimezoneServiceDefinition = typeof TimezoneServiceDefinition;\nexport const TimezoneServiceDefinition = {\n  name: \"TimezoneService\",\n  fullName: \"io.restorecommerce.timezone.TimezoneService\",\n  methods: {\n    read: {\n      name: \"Read\",\n      requestType: ReadRequest,\n      requestStream: false,\n      responseType: TimezoneListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    create: {\n      name: \"Create\",\n      requestType: TimezoneList,\n      requestStream: false,\n      responseType: TimezoneListResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n    update: {\n      name: \"Update\",\n      requestType: TimezoneList,\n      requestStream: false,\n      responseType: TimezoneListResponse,\n      responseStream: false,\n      options: {},\n    },\n    upsert: {\n      name: \"Upsert\",\n      requestType: TimezoneList,\n      requestStream: false,\n      responseType: TimezoneListResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface TimezoneServiceImplementation<CallContextExt = {}> {\n  read(request: ReadRequest, context: CallContext & CallContextExt): Promise<DeepPartial<TimezoneListResponse>>;\n  create(request: TimezoneList, context: CallContext & CallContextExt): Promise<DeepPartial<TimezoneListResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n  update(request: TimezoneList, context: CallContext & CallContextExt): Promise<DeepPartial<TimezoneListResponse>>;\n  upsert(request: TimezoneList, context: CallContext & CallContextExt): Promise<DeepPartial<TimezoneListResponse>>;\n}\n\nexport interface TimezoneServiceClient<CallOptionsExt = {}> {\n  read(request: DeepPartial<ReadRequest>, options?: CallOptions & CallOptionsExt): Promise<TimezoneListResponse>;\n  create(request: DeepPartial<TimezoneList>, options?: CallOptions & CallOptionsExt): Promise<TimezoneListResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n  update(request: DeepPartial<TimezoneList>, options?: CallOptions & CallOptionsExt): Promise<TimezoneListResponse>;\n  upsert(request: DeepPartial<TimezoneList>, options?: CallOptions & CallOptionsExt): Promise<TimezoneListResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/timezone.proto\",\n    \"package\": \"io.restorecommerce.timezone\",\n    \"dependency\": [\n      \"io/restorecommerce/resource_base.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/options.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Deleted\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"TimezoneList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.timezone.Timezone\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"TimezoneListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.timezone.TimezoneResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"TimezoneResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.timezone.Timezone\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"TimezoneOffset\",\n      \"field\": [{\n        \"name\": \"hours\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 5,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"hours\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"minutes\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 5,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"minutes\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_hours\", \"options\": undefined }, { \"name\": \"_minutes\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Timezone\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"name\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"value\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"value\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"abbreviation_std\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"abbreviationStd\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"abbreviation_dst\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"abbreviationDst\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"offset_std\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.timezone.TimezoneOffset\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"offsetStd\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"offset_dst\",\n        \"number\": 8,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.timezone.TimezoneOffset\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 7,\n        \"jsonName\": \"offsetDst\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"description\",\n        \"number\": 9,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 8,\n        \"jsonName\": \"description\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_name\", \"options\": undefined },\n        { \"name\": \"_value\", \"options\": undefined },\n        { \"name\": \"_abbreviation_std\", \"options\": undefined },\n        { \"name\": \"_abbreviation_dst\", \"options\": undefined },\n        { \"name\": \"_offset_std\", \"options\": undefined },\n        { \"name\": \"_offset_dst\", \"options\": undefined },\n        { \"name\": \"_description\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [{\n      \"name\": \"TimezoneService\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ReadRequest\",\n        \"outputType\": \".io.restorecommerce.timezone.TimezoneListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.timezone.TimezoneList\",\n        \"outputType\": \".io.restorecommerce.timezone.TimezoneListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.timezone.TimezoneList\",\n        \"outputType\": \".io.restorecommerce.timezone.TimezoneListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.timezone.TimezoneList\",\n        \"outputType\": \".io.restorecommerce.timezone.TimezoneListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [6, 0],\n        \"span\": [13, 0, 21, 1],\n        \"leadingComments\": \"\\n Microservice definition.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 5, 2, 2],\n        \"span\": [52, 2, 27],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" display name\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 5, 2, 3],\n        \"span\": [53, 2, 28],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" official name\\n\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.timezone.Deleted\": Deleted,\n    \".io.restorecommerce.timezone.TimezoneList\": TimezoneList,\n    \".io.restorecommerce.timezone.TimezoneListResponse\": TimezoneListResponse,\n    \".io.restorecommerce.timezone.TimezoneResponse\": TimezoneResponse,\n    \".io.restorecommerce.timezone.TimezoneOffset\": TimezoneOffset,\n    \".io.restorecommerce.timezone.Timezone\": Timezone,\n  },\n  dependencies: [protoMetadata1, protoMetadata2, protoMetadata3, protoMetadata4, protoMetadata5],\n  options: { services: { \"TimezoneService\": { methods: { \"Read\": { \"is_query\": true } } } } },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/user.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { Any, protoMetadata as protoMetadata7 } from \"../../google/protobuf/any\";\nimport { protoMetadata as protoMetadata10, Timestamp } from \"../../google/protobuf/timestamp\";\nimport { Attribute, protoMetadata as protoMetadata4 } from \"./attribute\";\nimport { protoMetadata as protoMetadata3, RoleAssociation, Subject, Tokens } from \"./auth\";\nimport { Image, protoMetadata as protoMetadata5 } from \"./image\";\nimport { protoMetadata as protoMetadata12 } from \"./locale\";\nimport { Meta, protoMetadata as protoMetadata2 } from \"./meta\";\nimport { KafkaSubscription, protoMetadata as protoMetadata9, Resolver } from \"./options\";\nimport { DeleteRequest, DeleteResponse, protoMetadata as protoMetadata1, ReadRequest } from \"./resource_base\";\nimport { protoMetadata as protoMetadata8, Role } from \"./role\";\nimport { OperationStatus, OperationStatusObj, protoMetadata as protoMetadata6, Status } from \"./status\";\nimport { protoMetadata as protoMetadata11 } from \"./timezone\";\n\nexport const protobufPackage = \"io.restorecommerce.user\";\n\nexport enum UserType {\n  ORG_USER = \"ORG_USER\",\n  INDIVIDUAL_USER = \"INDIVIDUAL_USER\",\n  GUEST = \"GUEST\",\n  TECHNICAL_USER = \"TECHNICAL_USER\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function userTypeFromJSON(object: any): UserType {\n  switch (object) {\n    case 0:\n    case \"ORG_USER\":\n      return UserType.ORG_USER;\n    case 1:\n    case \"INDIVIDUAL_USER\":\n      return UserType.INDIVIDUAL_USER;\n    case 2:\n    case \"GUEST\":\n      return UserType.GUEST;\n    case 3:\n    case \"TECHNICAL_USER\":\n      return UserType.TECHNICAL_USER;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return UserType.UNRECOGNIZED;\n  }\n}\n\nexport function userTypeToJSON(object: UserType): string {\n  switch (object) {\n    case UserType.ORG_USER:\n      return \"ORG_USER\";\n    case UserType.INDIVIDUAL_USER:\n      return \"INDIVIDUAL_USER\";\n    case UserType.GUEST:\n      return \"GUEST\";\n    case UserType.TECHNICAL_USER:\n      return \"TECHNICAL_USER\";\n    case UserType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function userTypeToNumber(object: UserType): number {\n  switch (object) {\n    case UserType.ORG_USER:\n      return 0;\n    case UserType.INDIVIDUAL_USER:\n      return 1;\n    case UserType.GUEST:\n      return 2;\n    case UserType.TECHNICAL_USER:\n      return 3;\n    case UserType.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\n/**\n * Request to verify password and retrieve the user's info.\n * Either name or email can be provided.\n */\nexport interface LoginRequest {\n  /** User name or email */\n  identifier?:\n    | string\n    | undefined;\n  /** Raw password */\n  password?: string | undefined;\n  token?: string | undefined;\n}\n\nexport interface ImpersonateRequest {\n  /** Username to impersonate */\n  identifier?:\n    | string\n    | undefined;\n  /** Impersonator's subject */\n  subject?:\n    | Subject\n    | undefined;\n  /** Token time to live in seconds */\n  tokenTtl?: number | undefined;\n}\n\nexport interface AccessTokenData {\n  accessToken?: string | undefined;\n  expiresIn?: Date | undefined;\n  tokenType?: string | undefined;\n  scope?: string | undefined;\n  tokenName?: string | undefined;\n}\n\nexport interface ImpersonateResponse {\n  status?: Status | undefined;\n  payload?: AccessTokenData | undefined;\n}\n\nexport interface EndImpersonationRequest {\n  subject?: Subject | undefined;\n}\n\nexport interface EndImpersonateResponse {\n  status?: Status | undefined;\n  payload?: AccessTokenData | undefined;\n}\n\nexport interface LoginResponse {\n  payload?: User | undefined;\n  status?: Status | undefined;\n  totpSessionToken?: string | undefined;\n}\n\nexport interface SetupTOTPRequest {\n  identifier?: string | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface SetupTOTPResponse {\n  totpSecret?: string | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface CompleteTOTPSetupRequest {\n  code?: string | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface ExchangeTOTPRequest {\n  code?: string | undefined;\n  subject?: Subject | undefined;\n  totpSessionToken?: string | undefined;\n}\n\nexport interface CreateBackupTOTPCodesRequest {\n  identifier?: string | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface CreateBackupTOTPCodesResponse {\n  backupCodes?: string[] | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface ResetTOTPRequest {\n  identifier?: string | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface MfaStatusRequest {\n  identifier?: string | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface MfaStatusResponse {\n  hasTotp?: boolean | undefined;\n  hasBackupCodes?: boolean | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface TenantRequest {\n  domain?: string | undefined;\n}\n\nexport interface TenantResponse {\n  token?: string | undefined;\n}\n\nexport interface OrgIDRequest {\n  orgIds?: string[] | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface DeleteUsersByOrgResponse {\n  userIds?: string[] | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface FindRequest {\n  /** User ID */\n  id?: string | undefined;\n  name?: string | undefined;\n  email?: string | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface FindByTokenRequest {\n  token?: string | undefined;\n}\n\nexport interface RegisterRequest {\n  id?: string | undefined;\n  guest?: boolean | undefined;\n  meta?: Meta | undefined;\n  name?: string | undefined;\n  firstName?: string | undefined;\n  lastName?: string | undefined;\n  email?: string | undefined;\n  password?: string | undefined;\n  timezoneId?: string | undefined;\n  localeId?:\n    | string\n    | undefined;\n  /** default hierarchical scope */\n  defaultScope?: string | undefined;\n  userType?: UserType | undefined;\n  captchaCode?:\n    | string\n    | undefined;\n  /** data */\n  data?: Any | undefined;\n}\n\nexport interface ActivateRequest {\n  /** user name or email */\n  identifier?: string | undefined;\n  activationCode?: string | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface ConfirmUserInvitationRequest {\n  /** user name or email */\n  identifier?: string | undefined;\n  password?: string | undefined;\n  activationCode?: string | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface SendInvitationEmailRequest {\n  /** user name or email */\n  identifier?: string | undefined;\n  invitedByUserIdentifier?: string | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface ChangePasswordRequest {\n  password?: string | undefined;\n  newPassword?: string | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface RequestPasswordChangeRequest {\n  /** user name or email */\n  identifier?: string | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface ConfirmPasswordChangeRequest {\n  /** user name or email */\n  identifier?: string | undefined;\n  activationCode?: string | undefined;\n  password?: string | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface ChangeEmailRequest {\n  /** user name or email */\n  identifier?: string | undefined;\n  newEmail?: string | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface ConfirmEmailChangeRequest {\n  /** user name or email */\n  identifier?: string | undefined;\n  activationCode?: string | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface UnregisterRequest {\n  /** User ID */\n  identifier?: string | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface SendActivationEmailRequest {\n  /** User name or email */\n  identifier?: string | undefined;\n  subject?: Subject | undefined;\n}\n\n/**\n * User deletion event.\n * Send when a user was deleted or unregistered.\n *\n * Events:\n * usersDeleted,\n * unregistered,\n */\nexport interface Deleted {\n  id?: string | undefined;\n}\n\n/**\n * User password changed event.\n *\n * Events:\n * passwordChanged,\n */\nexport interface PasswordChanged {\n  /** User ID */\n  id?: string | undefined;\n  passwordHash?: string | undefined;\n}\n\nexport interface PasswordChangeRequested {\n  /** User ID */\n  id?: string | undefined;\n}\n\n/** User email id changed event. */\nexport interface EmailChangeRequested {\n  id?: string | undefined;\n  activationCode?: string | undefined;\n  newEmail?: string | undefined;\n}\n\nexport interface EmailChangeConfirmed {\n  /** User ID */\n  id?: string | undefined;\n  email?: string | undefined;\n}\n\n/** A list of User. */\nexport interface UserList {\n  items?: User[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface UserListWithRoleResponse {\n  items?: UserRoleResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface UserRoleResponse {\n  payload?: UserRole | undefined;\n  status?: Status | undefined;\n}\n\nexport interface UserListResponse {\n  items?: UserResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface UserResponse {\n  payload?: User | undefined;\n  status?: Status | undefined;\n}\n\n/** User activation request. */\nexport interface Activate {\n  /** User ID */\n  id?: string | undefined;\n}\n\nexport interface FindByRoleRequest {\n  role?: string | undefined;\n  attributes?: Attribute[] | undefined;\n  subject?: Subject | undefined;\n}\n\n/** A User resource. */\nexport interface User {\n  /** User ID, unique, key */\n  id?: string | undefined;\n  meta?:\n    | Meta\n    | undefined;\n  /** The name of the user, can be used for login */\n  name?: string | undefined;\n  firstName?: string | undefined;\n  lastName?:\n    | string\n    | undefined;\n  /** Email address, can be used for login */\n  email?:\n    | string\n    | undefined;\n  /** New email address; set by `requestEmailChange` and overrides actual email upon `confirmEmailChange` */\n  newEmail?:\n    | string\n    | undefined;\n  /** If the user was activated via the activation process */\n  active?:\n    | boolean\n    | undefined;\n  /** Activation code used in the activation process */\n  activationCode?:\n    | string\n    | undefined;\n  /** Raw password, not stored */\n  password?:\n    | string\n    | undefined;\n  /** Encrypted password, stored */\n  passwordHash?:\n    | string\n    | undefined;\n  /** A user can have multiple roles and different attributes coupled with each role */\n  roleAssociations?:\n    | RoleAssociation[]\n    | undefined;\n  /** timezone_id specifications */\n  timezoneId?:\n    | string\n    | undefined;\n  /** locale specifications */\n  localeId?:\n    | string\n    | undefined;\n  /** default hierarchical scope */\n  defaultScope?:\n    | string\n    | undefined;\n  /** Is the user a guest. A guest is a automatically generated user which can later be turned in a non-guest user. */\n  guest?: boolean | undefined;\n  image?: Image | undefined;\n  userType?:\n    | UserType\n    | undefined;\n  /** true if user has been invited by another user */\n  invite?:\n    | boolean\n    | undefined;\n  /** User who is inviting */\n  invitedByUserName?:\n    | string\n    | undefined;\n  /** First name of user inviting */\n  invitedByUserFirstName?:\n    | string\n    | undefined;\n  /** Last name of user inviting */\n  invitedByUserLastName?: string | undefined;\n  tokens?:\n    | Tokens[]\n    | undefined;\n  /** When the user has last been used */\n  lastAccess?:\n    | Date\n    | undefined;\n  /** additional properties */\n  properties?:\n    | Attribute[]\n    | undefined;\n  /** additional data */\n  data?:\n    | Any\n    | undefined;\n  /** / TOTP Secret */\n  totpSecret?:\n    | string\n    | undefined;\n  /** / TOTP Secret before being confirmed */\n  totpSecretProcessing?:\n    | string\n    | undefined;\n  /** / TOTP Login session tokens */\n  totpSessionTokens?:\n    | string[]\n    | undefined;\n  /** List of historical password hashes */\n  passwordHashHistory?:\n    | string[]\n    | undefined;\n  /** List of TOTP recovery codes */\n  totpRecoveryCodes?: string[] | undefined;\n  invitedAt?: Date | undefined;\n}\n\n/** A User resource with role */\nexport interface UserRole {\n  /** User ID, unique, key */\n  id?: string | undefined;\n  meta?:\n    | Meta\n    | undefined;\n  /** The name of the user, can be used for login */\n  name?: string | undefined;\n  firstName?: string | undefined;\n  lastName?:\n    | string\n    | undefined;\n  /** Email address, can be used for login */\n  email?:\n    | string\n    | undefined;\n  /** New email address; set by `requestEmailChange` and overrides actual email upon `confirmEmailChange` */\n  newEmail?:\n    | string\n    | undefined;\n  /** If the user was activated via the activation process */\n  active?:\n    | boolean\n    | undefined;\n  /** Activation code used in the activation process */\n  activationCode?:\n    | string\n    | undefined;\n  /** Raw password, not stored */\n  password?:\n    | string\n    | undefined;\n  /** Encrypted password, stored */\n  passwordHash?:\n    | string\n    | undefined;\n  /** A user can have multiple roles and different attributes coupled with each role */\n  roleAssociations?:\n    | RoleAssociation[]\n    | undefined;\n  /** timezone_id specifications */\n  timezoneId?:\n    | string\n    | undefined;\n  /** locale specifications */\n  localeId?:\n    | string\n    | undefined;\n  /** default hierarchical scope */\n  defaultScope?:\n    | string\n    | undefined;\n  /** Is the user a guest. A guest is a automatically generated user which can later be turned in a non-guest user. */\n  guest?: boolean | undefined;\n  image?: Image | undefined;\n  userType?:\n    | UserType\n    | undefined;\n  /** true if user has been invited by another user */\n  invite?:\n    | boolean\n    | undefined;\n  /** User who is inviting */\n  invitedByUserName?:\n    | string\n    | undefined;\n  /** First name of user inviting */\n  invitedByUserFirstName?:\n    | string\n    | undefined;\n  /** Last name of user inviting */\n  invitedByUserLastName?: string | undefined;\n  tokens?:\n    | Tokens[]\n    | undefined;\n  /** When the user has last been used */\n  lastAccess?:\n    | Date\n    | undefined;\n  /** additional properties */\n  properties?:\n    | Attribute[]\n    | undefined;\n  /** additional data */\n  data?: Any | undefined;\n  roles?: Role[] | undefined;\n  invitedAt?: Date | undefined;\n}\n\nfunction createBaseLoginRequest(): LoginRequest {\n  return {};\n}\n\nexport const LoginRequest: MessageFns<LoginRequest> = {\n  encode(message: LoginRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.identifier !== undefined) {\n      writer.uint32(10).string(message.identifier);\n    }\n    if (message.password !== undefined) {\n      writer.uint32(18).string(message.password);\n    }\n    if (message.token !== undefined) {\n      writer.uint32(26).string(message.token);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): LoginRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseLoginRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.identifier = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.password = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.token = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): LoginRequest {\n    return {\n      identifier: isSet(object.identifier) ? globalThis.String(object.identifier) : undefined,\n      password: isSet(object.password) ? globalThis.String(object.password) : undefined,\n      token: isSet(object.token) ? globalThis.String(object.token) : undefined,\n    };\n  },\n\n  toJSON(message: LoginRequest): unknown {\n    const obj: any = {};\n    if (message.identifier !== undefined) {\n      obj.identifier = message.identifier;\n    }\n    if (message.password !== undefined) {\n      obj.password = message.password;\n    }\n    if (message.token !== undefined) {\n      obj.token = message.token;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<LoginRequest>): LoginRequest {\n    return LoginRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<LoginRequest>): LoginRequest {\n    const message = createBaseLoginRequest();\n    message.identifier = object.identifier ?? undefined;\n    message.password = object.password ?? undefined;\n    message.token = object.token ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseImpersonateRequest(): ImpersonateRequest {\n  return {};\n}\n\nexport const ImpersonateRequest: MessageFns<ImpersonateRequest> = {\n  encode(message: ImpersonateRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.identifier !== undefined) {\n      writer.uint32(10).string(message.identifier);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(18).fork()).join();\n    }\n    if (message.tokenTtl !== undefined) {\n      writer.uint32(24).uint32(message.tokenTtl);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ImpersonateRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseImpersonateRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.identifier = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.tokenTtl = reader.uint32();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ImpersonateRequest {\n    return {\n      identifier: isSet(object.identifier) ? globalThis.String(object.identifier) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n      tokenTtl: isSet(object.tokenTtl) ? globalThis.Number(object.tokenTtl) : undefined,\n    };\n  },\n\n  toJSON(message: ImpersonateRequest): unknown {\n    const obj: any = {};\n    if (message.identifier !== undefined) {\n      obj.identifier = message.identifier;\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    if (message.tokenTtl !== undefined) {\n      obj.tokenTtl = Math.round(message.tokenTtl);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ImpersonateRequest>): ImpersonateRequest {\n    return ImpersonateRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ImpersonateRequest>): ImpersonateRequest {\n    const message = createBaseImpersonateRequest();\n    message.identifier = object.identifier ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    message.tokenTtl = object.tokenTtl ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseAccessTokenData(): AccessTokenData {\n  return {};\n}\n\nexport const AccessTokenData: MessageFns<AccessTokenData> = {\n  encode(message: AccessTokenData, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.accessToken !== undefined) {\n      writer.uint32(10).string(message.accessToken);\n    }\n    if (message.expiresIn !== undefined) {\n      Timestamp.encode(toTimestamp(message.expiresIn), writer.uint32(18).fork()).join();\n    }\n    if (message.tokenType !== undefined) {\n      writer.uint32(26).string(message.tokenType);\n    }\n    if (message.scope !== undefined) {\n      writer.uint32(34).string(message.scope);\n    }\n    if (message.tokenName !== undefined) {\n      writer.uint32(42).string(message.tokenName);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): AccessTokenData {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseAccessTokenData();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.accessToken = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.expiresIn = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.tokenType = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.scope = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.tokenName = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): AccessTokenData {\n    return {\n      accessToken: isSet(object.accessToken) ? globalThis.String(object.accessToken) : undefined,\n      expiresIn: isSet(object.expiresIn) ? fromJsonTimestamp(object.expiresIn) : undefined,\n      tokenType: isSet(object.tokenType) ? globalThis.String(object.tokenType) : undefined,\n      scope: isSet(object.scope) ? globalThis.String(object.scope) : undefined,\n      tokenName: isSet(object.tokenName) ? globalThis.String(object.tokenName) : undefined,\n    };\n  },\n\n  toJSON(message: AccessTokenData): unknown {\n    const obj: any = {};\n    if (message.accessToken !== undefined) {\n      obj.accessToken = message.accessToken;\n    }\n    if (message.expiresIn !== undefined) {\n      obj.expiresIn = message.expiresIn.toISOString();\n    }\n    if (message.tokenType !== undefined) {\n      obj.tokenType = message.tokenType;\n    }\n    if (message.scope !== undefined) {\n      obj.scope = message.scope;\n    }\n    if (message.tokenName !== undefined) {\n      obj.tokenName = message.tokenName;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<AccessTokenData>): AccessTokenData {\n    return AccessTokenData.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<AccessTokenData>): AccessTokenData {\n    const message = createBaseAccessTokenData();\n    message.accessToken = object.accessToken ?? undefined;\n    message.expiresIn = object.expiresIn ?? undefined;\n    message.tokenType = object.tokenType ?? undefined;\n    message.scope = object.scope ?? undefined;\n    message.tokenName = object.tokenName ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseImpersonateResponse(): ImpersonateResponse {\n  return {};\n}\n\nexport const ImpersonateResponse: MessageFns<ImpersonateResponse> = {\n  encode(message: ImpersonateResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(10).fork()).join();\n    }\n    if (message.payload !== undefined) {\n      AccessTokenData.encode(message.payload, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ImpersonateResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseImpersonateResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.payload = AccessTokenData.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ImpersonateResponse {\n    return {\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n      payload: isSet(object.payload) ? AccessTokenData.fromJSON(object.payload) : undefined,\n    };\n  },\n\n  toJSON(message: ImpersonateResponse): unknown {\n    const obj: any = {};\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    if (message.payload !== undefined) {\n      obj.payload = AccessTokenData.toJSON(message.payload);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ImpersonateResponse>): ImpersonateResponse {\n    return ImpersonateResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ImpersonateResponse>): ImpersonateResponse {\n    const message = createBaseImpersonateResponse();\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? AccessTokenData.fromPartial(object.payload)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseEndImpersonationRequest(): EndImpersonationRequest {\n  return {};\n}\n\nexport const EndImpersonationRequest: MessageFns<EndImpersonationRequest> = {\n  encode(message: EndImpersonationRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): EndImpersonationRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseEndImpersonationRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): EndImpersonationRequest {\n    return { subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined };\n  },\n\n  toJSON(message: EndImpersonationRequest): unknown {\n    const obj: any = {};\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<EndImpersonationRequest>): EndImpersonationRequest {\n    return EndImpersonationRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<EndImpersonationRequest>): EndImpersonationRequest {\n    const message = createBaseEndImpersonationRequest();\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseEndImpersonateResponse(): EndImpersonateResponse {\n  return {};\n}\n\nexport const EndImpersonateResponse: MessageFns<EndImpersonateResponse> = {\n  encode(message: EndImpersonateResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(10).fork()).join();\n    }\n    if (message.payload !== undefined) {\n      AccessTokenData.encode(message.payload, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): EndImpersonateResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseEndImpersonateResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.payload = AccessTokenData.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): EndImpersonateResponse {\n    return {\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n      payload: isSet(object.payload) ? AccessTokenData.fromJSON(object.payload) : undefined,\n    };\n  },\n\n  toJSON(message: EndImpersonateResponse): unknown {\n    const obj: any = {};\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    if (message.payload !== undefined) {\n      obj.payload = AccessTokenData.toJSON(message.payload);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<EndImpersonateResponse>): EndImpersonateResponse {\n    return EndImpersonateResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<EndImpersonateResponse>): EndImpersonateResponse {\n    const message = createBaseEndImpersonateResponse();\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? AccessTokenData.fromPartial(object.payload)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseLoginResponse(): LoginResponse {\n  return {};\n}\n\nexport const LoginResponse: MessageFns<LoginResponse> = {\n  encode(message: LoginResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      User.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    if (message.totpSessionToken !== undefined) {\n      writer.uint32(26).string(message.totpSessionToken);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): LoginResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseLoginResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = User.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.totpSessionToken = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): LoginResponse {\n    return {\n      payload: isSet(object.payload) ? User.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n      totpSessionToken: isSet(object.totpSessionToken) ? globalThis.String(object.totpSessionToken) : undefined,\n    };\n  },\n\n  toJSON(message: LoginResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = User.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    if (message.totpSessionToken !== undefined) {\n      obj.totpSessionToken = message.totpSessionToken;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<LoginResponse>): LoginResponse {\n    return LoginResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<LoginResponse>): LoginResponse {\n    const message = createBaseLoginResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? User.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    message.totpSessionToken = object.totpSessionToken ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseSetupTOTPRequest(): SetupTOTPRequest {\n  return {};\n}\n\nexport const SetupTOTPRequest: MessageFns<SetupTOTPRequest> = {\n  encode(message: SetupTOTPRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.identifier !== undefined) {\n      writer.uint32(10).string(message.identifier);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): SetupTOTPRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseSetupTOTPRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.identifier = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): SetupTOTPRequest {\n    return {\n      identifier: isSet(object.identifier) ? globalThis.String(object.identifier) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: SetupTOTPRequest): unknown {\n    const obj: any = {};\n    if (message.identifier !== undefined) {\n      obj.identifier = message.identifier;\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<SetupTOTPRequest>): SetupTOTPRequest {\n    return SetupTOTPRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<SetupTOTPRequest>): SetupTOTPRequest {\n    const message = createBaseSetupTOTPRequest();\n    message.identifier = object.identifier ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseSetupTOTPResponse(): SetupTOTPResponse {\n  return {};\n}\n\nexport const SetupTOTPResponse: MessageFns<SetupTOTPResponse> = {\n  encode(message: SetupTOTPResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.totpSecret !== undefined) {\n      writer.uint32(10).string(message.totpSecret);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): SetupTOTPResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseSetupTOTPResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.totpSecret = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): SetupTOTPResponse {\n    return {\n      totpSecret: isSet(object.totpSecret) ? globalThis.String(object.totpSecret) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: SetupTOTPResponse): unknown {\n    const obj: any = {};\n    if (message.totpSecret !== undefined) {\n      obj.totpSecret = message.totpSecret;\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<SetupTOTPResponse>): SetupTOTPResponse {\n    return SetupTOTPResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<SetupTOTPResponse>): SetupTOTPResponse {\n    const message = createBaseSetupTOTPResponse();\n    message.totpSecret = object.totpSecret ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseCompleteTOTPSetupRequest(): CompleteTOTPSetupRequest {\n  return {};\n}\n\nexport const CompleteTOTPSetupRequest: MessageFns<CompleteTOTPSetupRequest> = {\n  encode(message: CompleteTOTPSetupRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.code !== undefined) {\n      writer.uint32(10).string(message.code);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CompleteTOTPSetupRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCompleteTOTPSetupRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.code = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CompleteTOTPSetupRequest {\n    return {\n      code: isSet(object.code) ? globalThis.String(object.code) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: CompleteTOTPSetupRequest): unknown {\n    const obj: any = {};\n    if (message.code !== undefined) {\n      obj.code = message.code;\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CompleteTOTPSetupRequest>): CompleteTOTPSetupRequest {\n    return CompleteTOTPSetupRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CompleteTOTPSetupRequest>): CompleteTOTPSetupRequest {\n    const message = createBaseCompleteTOTPSetupRequest();\n    message.code = object.code ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseExchangeTOTPRequest(): ExchangeTOTPRequest {\n  return {};\n}\n\nexport const ExchangeTOTPRequest: MessageFns<ExchangeTOTPRequest> = {\n  encode(message: ExchangeTOTPRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.code !== undefined) {\n      writer.uint32(10).string(message.code);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(18).fork()).join();\n    }\n    if (message.totpSessionToken !== undefined) {\n      writer.uint32(26).string(message.totpSessionToken);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ExchangeTOTPRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseExchangeTOTPRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.code = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.totpSessionToken = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ExchangeTOTPRequest {\n    return {\n      code: isSet(object.code) ? globalThis.String(object.code) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n      totpSessionToken: isSet(object.totpSessionToken) ? globalThis.String(object.totpSessionToken) : undefined,\n    };\n  },\n\n  toJSON(message: ExchangeTOTPRequest): unknown {\n    const obj: any = {};\n    if (message.code !== undefined) {\n      obj.code = message.code;\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    if (message.totpSessionToken !== undefined) {\n      obj.totpSessionToken = message.totpSessionToken;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ExchangeTOTPRequest>): ExchangeTOTPRequest {\n    return ExchangeTOTPRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ExchangeTOTPRequest>): ExchangeTOTPRequest {\n    const message = createBaseExchangeTOTPRequest();\n    message.code = object.code ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    message.totpSessionToken = object.totpSessionToken ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseCreateBackupTOTPCodesRequest(): CreateBackupTOTPCodesRequest {\n  return {};\n}\n\nexport const CreateBackupTOTPCodesRequest: MessageFns<CreateBackupTOTPCodesRequest> = {\n  encode(message: CreateBackupTOTPCodesRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.identifier !== undefined) {\n      writer.uint32(10).string(message.identifier);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CreateBackupTOTPCodesRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCreateBackupTOTPCodesRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.identifier = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CreateBackupTOTPCodesRequest {\n    return {\n      identifier: isSet(object.identifier) ? globalThis.String(object.identifier) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: CreateBackupTOTPCodesRequest): unknown {\n    const obj: any = {};\n    if (message.identifier !== undefined) {\n      obj.identifier = message.identifier;\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CreateBackupTOTPCodesRequest>): CreateBackupTOTPCodesRequest {\n    return CreateBackupTOTPCodesRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CreateBackupTOTPCodesRequest>): CreateBackupTOTPCodesRequest {\n    const message = createBaseCreateBackupTOTPCodesRequest();\n    message.identifier = object.identifier ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseCreateBackupTOTPCodesResponse(): CreateBackupTOTPCodesResponse {\n  return {};\n}\n\nexport const CreateBackupTOTPCodesResponse: MessageFns<CreateBackupTOTPCodesResponse> = {\n  encode(message: CreateBackupTOTPCodesResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.backupCodes !== undefined && message.backupCodes.length !== 0) {\n      for (const v of message.backupCodes) {\n        writer.uint32(10).string(v!);\n      }\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CreateBackupTOTPCodesResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCreateBackupTOTPCodesResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.backupCodes === undefined) {\n            message.backupCodes = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.backupCodes!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CreateBackupTOTPCodesResponse {\n    return {\n      backupCodes: globalThis.Array.isArray(object?.backupCodes)\n        ? object.backupCodes.map((e: any) => globalThis.String(e))\n        : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: CreateBackupTOTPCodesResponse): unknown {\n    const obj: any = {};\n    if (message.backupCodes?.length) {\n      obj.backupCodes = message.backupCodes;\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CreateBackupTOTPCodesResponse>): CreateBackupTOTPCodesResponse {\n    return CreateBackupTOTPCodesResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CreateBackupTOTPCodesResponse>): CreateBackupTOTPCodesResponse {\n    const message = createBaseCreateBackupTOTPCodesResponse();\n    message.backupCodes = object.backupCodes?.map((e) => e) || undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseResetTOTPRequest(): ResetTOTPRequest {\n  return {};\n}\n\nexport const ResetTOTPRequest: MessageFns<ResetTOTPRequest> = {\n  encode(message: ResetTOTPRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.identifier !== undefined) {\n      writer.uint32(10).string(message.identifier);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ResetTOTPRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseResetTOTPRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.identifier = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ResetTOTPRequest {\n    return {\n      identifier: isSet(object.identifier) ? globalThis.String(object.identifier) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: ResetTOTPRequest): unknown {\n    const obj: any = {};\n    if (message.identifier !== undefined) {\n      obj.identifier = message.identifier;\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ResetTOTPRequest>): ResetTOTPRequest {\n    return ResetTOTPRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ResetTOTPRequest>): ResetTOTPRequest {\n    const message = createBaseResetTOTPRequest();\n    message.identifier = object.identifier ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseMfaStatusRequest(): MfaStatusRequest {\n  return {};\n}\n\nexport const MfaStatusRequest: MessageFns<MfaStatusRequest> = {\n  encode(message: MfaStatusRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.identifier !== undefined) {\n      writer.uint32(10).string(message.identifier);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): MfaStatusRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseMfaStatusRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.identifier = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): MfaStatusRequest {\n    return {\n      identifier: isSet(object.identifier) ? globalThis.String(object.identifier) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: MfaStatusRequest): unknown {\n    const obj: any = {};\n    if (message.identifier !== undefined) {\n      obj.identifier = message.identifier;\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<MfaStatusRequest>): MfaStatusRequest {\n    return MfaStatusRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<MfaStatusRequest>): MfaStatusRequest {\n    const message = createBaseMfaStatusRequest();\n    message.identifier = object.identifier ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseMfaStatusResponse(): MfaStatusResponse {\n  return {};\n}\n\nexport const MfaStatusResponse: MessageFns<MfaStatusResponse> = {\n  encode(message: MfaStatusResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.hasTotp !== undefined) {\n      writer.uint32(8).bool(message.hasTotp);\n    }\n    if (message.hasBackupCodes !== undefined) {\n      writer.uint32(16).bool(message.hasBackupCodes);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): MfaStatusResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseMfaStatusResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.hasTotp = reader.bool();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.hasBackupCodes = reader.bool();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): MfaStatusResponse {\n    return {\n      hasTotp: isSet(object.hasTotp) ? globalThis.Boolean(object.hasTotp) : undefined,\n      hasBackupCodes: isSet(object.hasBackupCodes) ? globalThis.Boolean(object.hasBackupCodes) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: MfaStatusResponse): unknown {\n    const obj: any = {};\n    if (message.hasTotp !== undefined) {\n      obj.hasTotp = message.hasTotp;\n    }\n    if (message.hasBackupCodes !== undefined) {\n      obj.hasBackupCodes = message.hasBackupCodes;\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<MfaStatusResponse>): MfaStatusResponse {\n    return MfaStatusResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<MfaStatusResponse>): MfaStatusResponse {\n    const message = createBaseMfaStatusResponse();\n    message.hasTotp = object.hasTotp ?? undefined;\n    message.hasBackupCodes = object.hasBackupCodes ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseTenantRequest(): TenantRequest {\n  return {};\n}\n\nexport const TenantRequest: MessageFns<TenantRequest> = {\n  encode(message: TenantRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.domain !== undefined) {\n      writer.uint32(10).string(message.domain);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): TenantRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseTenantRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.domain = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): TenantRequest {\n    return { domain: isSet(object.domain) ? globalThis.String(object.domain) : undefined };\n  },\n\n  toJSON(message: TenantRequest): unknown {\n    const obj: any = {};\n    if (message.domain !== undefined) {\n      obj.domain = message.domain;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<TenantRequest>): TenantRequest {\n    return TenantRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<TenantRequest>): TenantRequest {\n    const message = createBaseTenantRequest();\n    message.domain = object.domain ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseTenantResponse(): TenantResponse {\n  return {};\n}\n\nexport const TenantResponse: MessageFns<TenantResponse> = {\n  encode(message: TenantResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.token !== undefined) {\n      writer.uint32(10).string(message.token);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): TenantResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseTenantResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.token = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): TenantResponse {\n    return { token: isSet(object.token) ? globalThis.String(object.token) : undefined };\n  },\n\n  toJSON(message: TenantResponse): unknown {\n    const obj: any = {};\n    if (message.token !== undefined) {\n      obj.token = message.token;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<TenantResponse>): TenantResponse {\n    return TenantResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<TenantResponse>): TenantResponse {\n    const message = createBaseTenantResponse();\n    message.token = object.token ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseOrgIDRequest(): OrgIDRequest {\n  return {};\n}\n\nexport const OrgIDRequest: MessageFns<OrgIDRequest> = {\n  encode(message: OrgIDRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.orgIds !== undefined && message.orgIds.length !== 0) {\n      for (const v of message.orgIds) {\n        writer.uint32(10).string(v!);\n      }\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OrgIDRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOrgIDRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.orgIds === undefined) {\n            message.orgIds = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.orgIds!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OrgIDRequest {\n    return {\n      orgIds: globalThis.Array.isArray(object?.orgIds)\n        ? object.orgIds.map((e: any) => globalThis.String(e))\n        : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: OrgIDRequest): unknown {\n    const obj: any = {};\n    if (message.orgIds?.length) {\n      obj.orgIds = message.orgIds;\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OrgIDRequest>): OrgIDRequest {\n    return OrgIDRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OrgIDRequest>): OrgIDRequest {\n    const message = createBaseOrgIDRequest();\n    message.orgIds = object.orgIds?.map((e) => e) || undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseDeleteUsersByOrgResponse(): DeleteUsersByOrgResponse {\n  return {};\n}\n\nexport const DeleteUsersByOrgResponse: MessageFns<DeleteUsersByOrgResponse> = {\n  encode(message: DeleteUsersByOrgResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.userIds !== undefined && message.userIds.length !== 0) {\n      for (const v of message.userIds) {\n        writer.uint32(10).string(v!);\n      }\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): DeleteUsersByOrgResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseDeleteUsersByOrgResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.userIds === undefined) {\n            message.userIds = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.userIds!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): DeleteUsersByOrgResponse {\n    return {\n      userIds: globalThis.Array.isArray(object?.userIds)\n        ? object.userIds.map((e: any) => globalThis.String(e))\n        : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: DeleteUsersByOrgResponse): unknown {\n    const obj: any = {};\n    if (message.userIds?.length) {\n      obj.userIds = message.userIds;\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<DeleteUsersByOrgResponse>): DeleteUsersByOrgResponse {\n    return DeleteUsersByOrgResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<DeleteUsersByOrgResponse>): DeleteUsersByOrgResponse {\n    const message = createBaseDeleteUsersByOrgResponse();\n    message.userIds = object.userIds?.map((e) => e) || undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseFindRequest(): FindRequest {\n  return {};\n}\n\nexport const FindRequest: MessageFns<FindRequest> = {\n  encode(message: FindRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.name !== undefined) {\n      writer.uint32(18).string(message.name);\n    }\n    if (message.email !== undefined) {\n      writer.uint32(26).string(message.email);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(34).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FindRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFindRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.email = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FindRequest {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      email: isSet(object.email) ? globalThis.String(object.email) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: FindRequest): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.email !== undefined) {\n      obj.email = message.email;\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FindRequest>): FindRequest {\n    return FindRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FindRequest>): FindRequest {\n    const message = createBaseFindRequest();\n    message.id = object.id ?? undefined;\n    message.name = object.name ?? undefined;\n    message.email = object.email ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseFindByTokenRequest(): FindByTokenRequest {\n  return {};\n}\n\nexport const FindByTokenRequest: MessageFns<FindByTokenRequest> = {\n  encode(message: FindByTokenRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.token !== undefined) {\n      writer.uint32(10).string(message.token);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FindByTokenRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFindByTokenRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.token = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FindByTokenRequest {\n    return { token: isSet(object.token) ? globalThis.String(object.token) : undefined };\n  },\n\n  toJSON(message: FindByTokenRequest): unknown {\n    const obj: any = {};\n    if (message.token !== undefined) {\n      obj.token = message.token;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FindByTokenRequest>): FindByTokenRequest {\n    return FindByTokenRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FindByTokenRequest>): FindByTokenRequest {\n    const message = createBaseFindByTokenRequest();\n    message.token = object.token ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseRegisterRequest(): RegisterRequest {\n  return {};\n}\n\nexport const RegisterRequest: MessageFns<RegisterRequest> = {\n  encode(message: RegisterRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.guest !== undefined) {\n      writer.uint32(16).bool(message.guest);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(26).fork()).join();\n    }\n    if (message.name !== undefined) {\n      writer.uint32(34).string(message.name);\n    }\n    if (message.firstName !== undefined) {\n      writer.uint32(42).string(message.firstName);\n    }\n    if (message.lastName !== undefined) {\n      writer.uint32(50).string(message.lastName);\n    }\n    if (message.email !== undefined) {\n      writer.uint32(58).string(message.email);\n    }\n    if (message.password !== undefined) {\n      writer.uint32(66).string(message.password);\n    }\n    if (message.timezoneId !== undefined) {\n      writer.uint32(74).string(message.timezoneId);\n    }\n    if (message.localeId !== undefined) {\n      writer.uint32(82).string(message.localeId);\n    }\n    if (message.defaultScope !== undefined) {\n      writer.uint32(90).string(message.defaultScope);\n    }\n    if (message.userType !== undefined) {\n      writer.uint32(96).int32(userTypeToNumber(message.userType));\n    }\n    if (message.captchaCode !== undefined) {\n      writer.uint32(106).string(message.captchaCode);\n    }\n    if (message.data !== undefined) {\n      Any.encode(message.data, writer.uint32(114).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): RegisterRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseRegisterRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.guest = reader.bool();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.firstName = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.lastName = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.email = reader.string();\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.password = reader.string();\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.timezoneId = reader.string();\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.localeId = reader.string();\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.defaultScope = reader.string();\n          continue;\n        }\n        case 12: {\n          if (tag !== 96) {\n            break;\n          }\n\n          message.userType = userTypeFromJSON(reader.int32());\n          continue;\n        }\n        case 13: {\n          if (tag !== 106) {\n            break;\n          }\n\n          message.captchaCode = reader.string();\n          continue;\n        }\n        case 14: {\n          if (tag !== 114) {\n            break;\n          }\n\n          message.data = Any.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): RegisterRequest {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      guest: isSet(object.guest) ? globalThis.Boolean(object.guest) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      firstName: isSet(object.firstName) ? globalThis.String(object.firstName) : undefined,\n      lastName: isSet(object.lastName) ? globalThis.String(object.lastName) : undefined,\n      email: isSet(object.email) ? globalThis.String(object.email) : undefined,\n      password: isSet(object.password) ? globalThis.String(object.password) : undefined,\n      timezoneId: isSet(object.timezoneId) ? globalThis.String(object.timezoneId) : undefined,\n      localeId: isSet(object.localeId) ? globalThis.String(object.localeId) : undefined,\n      defaultScope: isSet(object.defaultScope) ? globalThis.String(object.defaultScope) : undefined,\n      userType: isSet(object.userType) ? userTypeFromJSON(object.userType) : undefined,\n      captchaCode: isSet(object.captchaCode) ? globalThis.String(object.captchaCode) : undefined,\n      data: isSet(object.data) ? Any.fromJSON(object.data) : undefined,\n    };\n  },\n\n  toJSON(message: RegisterRequest): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.guest !== undefined) {\n      obj.guest = message.guest;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.firstName !== undefined) {\n      obj.firstName = message.firstName;\n    }\n    if (message.lastName !== undefined) {\n      obj.lastName = message.lastName;\n    }\n    if (message.email !== undefined) {\n      obj.email = message.email;\n    }\n    if (message.password !== undefined) {\n      obj.password = message.password;\n    }\n    if (message.timezoneId !== undefined) {\n      obj.timezoneId = message.timezoneId;\n    }\n    if (message.localeId !== undefined) {\n      obj.localeId = message.localeId;\n    }\n    if (message.defaultScope !== undefined) {\n      obj.defaultScope = message.defaultScope;\n    }\n    if (message.userType !== undefined) {\n      obj.userType = userTypeToJSON(message.userType);\n    }\n    if (message.captchaCode !== undefined) {\n      obj.captchaCode = message.captchaCode;\n    }\n    if (message.data !== undefined) {\n      obj.data = Any.toJSON(message.data);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<RegisterRequest>): RegisterRequest {\n    return RegisterRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<RegisterRequest>): RegisterRequest {\n    const message = createBaseRegisterRequest();\n    message.id = object.id ?? undefined;\n    message.guest = object.guest ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.name = object.name ?? undefined;\n    message.firstName = object.firstName ?? undefined;\n    message.lastName = object.lastName ?? undefined;\n    message.email = object.email ?? undefined;\n    message.password = object.password ?? undefined;\n    message.timezoneId = object.timezoneId ?? undefined;\n    message.localeId = object.localeId ?? undefined;\n    message.defaultScope = object.defaultScope ?? undefined;\n    message.userType = object.userType ?? undefined;\n    message.captchaCode = object.captchaCode ?? undefined;\n    message.data = (object.data !== undefined && object.data !== null) ? Any.fromPartial(object.data) : undefined;\n    return message;\n  },\n};\n\nfunction createBaseActivateRequest(): ActivateRequest {\n  return {};\n}\n\nexport const ActivateRequest: MessageFns<ActivateRequest> = {\n  encode(message: ActivateRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.identifier !== undefined) {\n      writer.uint32(10).string(message.identifier);\n    }\n    if (message.activationCode !== undefined) {\n      writer.uint32(18).string(message.activationCode);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ActivateRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseActivateRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.identifier = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.activationCode = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ActivateRequest {\n    return {\n      identifier: isSet(object.identifier) ? globalThis.String(object.identifier) : undefined,\n      activationCode: isSet(object.activationCode) ? globalThis.String(object.activationCode) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: ActivateRequest): unknown {\n    const obj: any = {};\n    if (message.identifier !== undefined) {\n      obj.identifier = message.identifier;\n    }\n    if (message.activationCode !== undefined) {\n      obj.activationCode = message.activationCode;\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ActivateRequest>): ActivateRequest {\n    return ActivateRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ActivateRequest>): ActivateRequest {\n    const message = createBaseActivateRequest();\n    message.identifier = object.identifier ?? undefined;\n    message.activationCode = object.activationCode ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseConfirmUserInvitationRequest(): ConfirmUserInvitationRequest {\n  return {};\n}\n\nexport const ConfirmUserInvitationRequest: MessageFns<ConfirmUserInvitationRequest> = {\n  encode(message: ConfirmUserInvitationRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.identifier !== undefined) {\n      writer.uint32(10).string(message.identifier);\n    }\n    if (message.password !== undefined) {\n      writer.uint32(18).string(message.password);\n    }\n    if (message.activationCode !== undefined) {\n      writer.uint32(26).string(message.activationCode);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(34).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ConfirmUserInvitationRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseConfirmUserInvitationRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.identifier = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.password = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.activationCode = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ConfirmUserInvitationRequest {\n    return {\n      identifier: isSet(object.identifier) ? globalThis.String(object.identifier) : undefined,\n      password: isSet(object.password) ? globalThis.String(object.password) : undefined,\n      activationCode: isSet(object.activationCode) ? globalThis.String(object.activationCode) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: ConfirmUserInvitationRequest): unknown {\n    const obj: any = {};\n    if (message.identifier !== undefined) {\n      obj.identifier = message.identifier;\n    }\n    if (message.password !== undefined) {\n      obj.password = message.password;\n    }\n    if (message.activationCode !== undefined) {\n      obj.activationCode = message.activationCode;\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ConfirmUserInvitationRequest>): ConfirmUserInvitationRequest {\n    return ConfirmUserInvitationRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ConfirmUserInvitationRequest>): ConfirmUserInvitationRequest {\n    const message = createBaseConfirmUserInvitationRequest();\n    message.identifier = object.identifier ?? undefined;\n    message.password = object.password ?? undefined;\n    message.activationCode = object.activationCode ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseSendInvitationEmailRequest(): SendInvitationEmailRequest {\n  return {};\n}\n\nexport const SendInvitationEmailRequest: MessageFns<SendInvitationEmailRequest> = {\n  encode(message: SendInvitationEmailRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.identifier !== undefined) {\n      writer.uint32(10).string(message.identifier);\n    }\n    if (message.invitedByUserIdentifier !== undefined) {\n      writer.uint32(18).string(message.invitedByUserIdentifier);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): SendInvitationEmailRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseSendInvitationEmailRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.identifier = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.invitedByUserIdentifier = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): SendInvitationEmailRequest {\n    return {\n      identifier: isSet(object.identifier) ? globalThis.String(object.identifier) : undefined,\n      invitedByUserIdentifier: isSet(object.invitedByUserIdentifier)\n        ? globalThis.String(object.invitedByUserIdentifier)\n        : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: SendInvitationEmailRequest): unknown {\n    const obj: any = {};\n    if (message.identifier !== undefined) {\n      obj.identifier = message.identifier;\n    }\n    if (message.invitedByUserIdentifier !== undefined) {\n      obj.invitedByUserIdentifier = message.invitedByUserIdentifier;\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<SendInvitationEmailRequest>): SendInvitationEmailRequest {\n    return SendInvitationEmailRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<SendInvitationEmailRequest>): SendInvitationEmailRequest {\n    const message = createBaseSendInvitationEmailRequest();\n    message.identifier = object.identifier ?? undefined;\n    message.invitedByUserIdentifier = object.invitedByUserIdentifier ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseChangePasswordRequest(): ChangePasswordRequest {\n  return {};\n}\n\nexport const ChangePasswordRequest: MessageFns<ChangePasswordRequest> = {\n  encode(message: ChangePasswordRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.password !== undefined) {\n      writer.uint32(18).string(message.password);\n    }\n    if (message.newPassword !== undefined) {\n      writer.uint32(26).string(message.newPassword);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(34).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ChangePasswordRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseChangePasswordRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.password = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.newPassword = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ChangePasswordRequest {\n    return {\n      password: isSet(object.password) ? globalThis.String(object.password) : undefined,\n      newPassword: isSet(object.newPassword) ? globalThis.String(object.newPassword) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: ChangePasswordRequest): unknown {\n    const obj: any = {};\n    if (message.password !== undefined) {\n      obj.password = message.password;\n    }\n    if (message.newPassword !== undefined) {\n      obj.newPassword = message.newPassword;\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ChangePasswordRequest>): ChangePasswordRequest {\n    return ChangePasswordRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ChangePasswordRequest>): ChangePasswordRequest {\n    const message = createBaseChangePasswordRequest();\n    message.password = object.password ?? undefined;\n    message.newPassword = object.newPassword ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseRequestPasswordChangeRequest(): RequestPasswordChangeRequest {\n  return {};\n}\n\nexport const RequestPasswordChangeRequest: MessageFns<RequestPasswordChangeRequest> = {\n  encode(message: RequestPasswordChangeRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.identifier !== undefined) {\n      writer.uint32(10).string(message.identifier);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): RequestPasswordChangeRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseRequestPasswordChangeRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.identifier = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): RequestPasswordChangeRequest {\n    return {\n      identifier: isSet(object.identifier) ? globalThis.String(object.identifier) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: RequestPasswordChangeRequest): unknown {\n    const obj: any = {};\n    if (message.identifier !== undefined) {\n      obj.identifier = message.identifier;\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<RequestPasswordChangeRequest>): RequestPasswordChangeRequest {\n    return RequestPasswordChangeRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<RequestPasswordChangeRequest>): RequestPasswordChangeRequest {\n    const message = createBaseRequestPasswordChangeRequest();\n    message.identifier = object.identifier ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseConfirmPasswordChangeRequest(): ConfirmPasswordChangeRequest {\n  return {};\n}\n\nexport const ConfirmPasswordChangeRequest: MessageFns<ConfirmPasswordChangeRequest> = {\n  encode(message: ConfirmPasswordChangeRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.identifier !== undefined) {\n      writer.uint32(10).string(message.identifier);\n    }\n    if (message.activationCode !== undefined) {\n      writer.uint32(18).string(message.activationCode);\n    }\n    if (message.password !== undefined) {\n      writer.uint32(26).string(message.password);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(34).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ConfirmPasswordChangeRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseConfirmPasswordChangeRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.identifier = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.activationCode = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.password = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ConfirmPasswordChangeRequest {\n    return {\n      identifier: isSet(object.identifier) ? globalThis.String(object.identifier) : undefined,\n      activationCode: isSet(object.activationCode) ? globalThis.String(object.activationCode) : undefined,\n      password: isSet(object.password) ? globalThis.String(object.password) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: ConfirmPasswordChangeRequest): unknown {\n    const obj: any = {};\n    if (message.identifier !== undefined) {\n      obj.identifier = message.identifier;\n    }\n    if (message.activationCode !== undefined) {\n      obj.activationCode = message.activationCode;\n    }\n    if (message.password !== undefined) {\n      obj.password = message.password;\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ConfirmPasswordChangeRequest>): ConfirmPasswordChangeRequest {\n    return ConfirmPasswordChangeRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ConfirmPasswordChangeRequest>): ConfirmPasswordChangeRequest {\n    const message = createBaseConfirmPasswordChangeRequest();\n    message.identifier = object.identifier ?? undefined;\n    message.activationCode = object.activationCode ?? undefined;\n    message.password = object.password ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseChangeEmailRequest(): ChangeEmailRequest {\n  return {};\n}\n\nexport const ChangeEmailRequest: MessageFns<ChangeEmailRequest> = {\n  encode(message: ChangeEmailRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.identifier !== undefined) {\n      writer.uint32(10).string(message.identifier);\n    }\n    if (message.newEmail !== undefined) {\n      writer.uint32(18).string(message.newEmail);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ChangeEmailRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseChangeEmailRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.identifier = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.newEmail = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ChangeEmailRequest {\n    return {\n      identifier: isSet(object.identifier) ? globalThis.String(object.identifier) : undefined,\n      newEmail: isSet(object.newEmail) ? globalThis.String(object.newEmail) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: ChangeEmailRequest): unknown {\n    const obj: any = {};\n    if (message.identifier !== undefined) {\n      obj.identifier = message.identifier;\n    }\n    if (message.newEmail !== undefined) {\n      obj.newEmail = message.newEmail;\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ChangeEmailRequest>): ChangeEmailRequest {\n    return ChangeEmailRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ChangeEmailRequest>): ChangeEmailRequest {\n    const message = createBaseChangeEmailRequest();\n    message.identifier = object.identifier ?? undefined;\n    message.newEmail = object.newEmail ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseConfirmEmailChangeRequest(): ConfirmEmailChangeRequest {\n  return {};\n}\n\nexport const ConfirmEmailChangeRequest: MessageFns<ConfirmEmailChangeRequest> = {\n  encode(message: ConfirmEmailChangeRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.identifier !== undefined) {\n      writer.uint32(10).string(message.identifier);\n    }\n    if (message.activationCode !== undefined) {\n      writer.uint32(18).string(message.activationCode);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ConfirmEmailChangeRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseConfirmEmailChangeRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.identifier = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.activationCode = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ConfirmEmailChangeRequest {\n    return {\n      identifier: isSet(object.identifier) ? globalThis.String(object.identifier) : undefined,\n      activationCode: isSet(object.activationCode) ? globalThis.String(object.activationCode) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: ConfirmEmailChangeRequest): unknown {\n    const obj: any = {};\n    if (message.identifier !== undefined) {\n      obj.identifier = message.identifier;\n    }\n    if (message.activationCode !== undefined) {\n      obj.activationCode = message.activationCode;\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ConfirmEmailChangeRequest>): ConfirmEmailChangeRequest {\n    return ConfirmEmailChangeRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ConfirmEmailChangeRequest>): ConfirmEmailChangeRequest {\n    const message = createBaseConfirmEmailChangeRequest();\n    message.identifier = object.identifier ?? undefined;\n    message.activationCode = object.activationCode ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseUnregisterRequest(): UnregisterRequest {\n  return {};\n}\n\nexport const UnregisterRequest: MessageFns<UnregisterRequest> = {\n  encode(message: UnregisterRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.identifier !== undefined) {\n      writer.uint32(10).string(message.identifier);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): UnregisterRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseUnregisterRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.identifier = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): UnregisterRequest {\n    return {\n      identifier: isSet(object.identifier) ? globalThis.String(object.identifier) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: UnregisterRequest): unknown {\n    const obj: any = {};\n    if (message.identifier !== undefined) {\n      obj.identifier = message.identifier;\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<UnregisterRequest>): UnregisterRequest {\n    return UnregisterRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<UnregisterRequest>): UnregisterRequest {\n    const message = createBaseUnregisterRequest();\n    message.identifier = object.identifier ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseSendActivationEmailRequest(): SendActivationEmailRequest {\n  return {};\n}\n\nexport const SendActivationEmailRequest: MessageFns<SendActivationEmailRequest> = {\n  encode(message: SendActivationEmailRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.identifier !== undefined) {\n      writer.uint32(10).string(message.identifier);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): SendActivationEmailRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseSendActivationEmailRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.identifier = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): SendActivationEmailRequest {\n    return {\n      identifier: isSet(object.identifier) ? globalThis.String(object.identifier) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: SendActivationEmailRequest): unknown {\n    const obj: any = {};\n    if (message.identifier !== undefined) {\n      obj.identifier = message.identifier;\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<SendActivationEmailRequest>): SendActivationEmailRequest {\n    return SendActivationEmailRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<SendActivationEmailRequest>): SendActivationEmailRequest {\n    const message = createBaseSendActivationEmailRequest();\n    message.identifier = object.identifier ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseDeleted(): Deleted {\n  return {};\n}\n\nexport const Deleted: MessageFns<Deleted> = {\n  encode(message: Deleted, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Deleted {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseDeleted();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Deleted {\n    return { id: isSet(object.id) ? globalThis.String(object.id) : undefined };\n  },\n\n  toJSON(message: Deleted): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Deleted>): Deleted {\n    return Deleted.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Deleted>): Deleted {\n    const message = createBaseDeleted();\n    message.id = object.id ?? undefined;\n    return message;\n  },\n};\n\nfunction createBasePasswordChanged(): PasswordChanged {\n  return {};\n}\n\nexport const PasswordChanged: MessageFns<PasswordChanged> = {\n  encode(message: PasswordChanged, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.passwordHash !== undefined) {\n      writer.uint32(18).string(message.passwordHash);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PasswordChanged {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePasswordChanged();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.passwordHash = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PasswordChanged {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      passwordHash: isSet(object.passwordHash) ? globalThis.String(object.passwordHash) : undefined,\n    };\n  },\n\n  toJSON(message: PasswordChanged): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.passwordHash !== undefined) {\n      obj.passwordHash = message.passwordHash;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PasswordChanged>): PasswordChanged {\n    return PasswordChanged.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PasswordChanged>): PasswordChanged {\n    const message = createBasePasswordChanged();\n    message.id = object.id ?? undefined;\n    message.passwordHash = object.passwordHash ?? undefined;\n    return message;\n  },\n};\n\nfunction createBasePasswordChangeRequested(): PasswordChangeRequested {\n  return {};\n}\n\nexport const PasswordChangeRequested: MessageFns<PasswordChangeRequested> = {\n  encode(message: PasswordChangeRequested, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PasswordChangeRequested {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePasswordChangeRequested();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PasswordChangeRequested {\n    return { id: isSet(object.id) ? globalThis.String(object.id) : undefined };\n  },\n\n  toJSON(message: PasswordChangeRequested): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PasswordChangeRequested>): PasswordChangeRequested {\n    return PasswordChangeRequested.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PasswordChangeRequested>): PasswordChangeRequested {\n    const message = createBasePasswordChangeRequested();\n    message.id = object.id ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseEmailChangeRequested(): EmailChangeRequested {\n  return {};\n}\n\nexport const EmailChangeRequested: MessageFns<EmailChangeRequested> = {\n  encode(message: EmailChangeRequested, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.activationCode !== undefined) {\n      writer.uint32(18).string(message.activationCode);\n    }\n    if (message.newEmail !== undefined) {\n      writer.uint32(26).string(message.newEmail);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): EmailChangeRequested {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseEmailChangeRequested();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.activationCode = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.newEmail = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): EmailChangeRequested {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      activationCode: isSet(object.activationCode) ? globalThis.String(object.activationCode) : undefined,\n      newEmail: isSet(object.newEmail) ? globalThis.String(object.newEmail) : undefined,\n    };\n  },\n\n  toJSON(message: EmailChangeRequested): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.activationCode !== undefined) {\n      obj.activationCode = message.activationCode;\n    }\n    if (message.newEmail !== undefined) {\n      obj.newEmail = message.newEmail;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<EmailChangeRequested>): EmailChangeRequested {\n    return EmailChangeRequested.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<EmailChangeRequested>): EmailChangeRequested {\n    const message = createBaseEmailChangeRequested();\n    message.id = object.id ?? undefined;\n    message.activationCode = object.activationCode ?? undefined;\n    message.newEmail = object.newEmail ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseEmailChangeConfirmed(): EmailChangeConfirmed {\n  return {};\n}\n\nexport const EmailChangeConfirmed: MessageFns<EmailChangeConfirmed> = {\n  encode(message: EmailChangeConfirmed, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.email !== undefined) {\n      writer.uint32(18).string(message.email);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): EmailChangeConfirmed {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseEmailChangeConfirmed();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.email = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): EmailChangeConfirmed {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      email: isSet(object.email) ? globalThis.String(object.email) : undefined,\n    };\n  },\n\n  toJSON(message: EmailChangeConfirmed): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.email !== undefined) {\n      obj.email = message.email;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<EmailChangeConfirmed>): EmailChangeConfirmed {\n    return EmailChangeConfirmed.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<EmailChangeConfirmed>): EmailChangeConfirmed {\n    const message = createBaseEmailChangeConfirmed();\n    message.id = object.id ?? undefined;\n    message.email = object.email ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseUserList(): UserList {\n  return {};\n}\n\nexport const UserList: MessageFns<UserList> = {\n  encode(message: UserList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        User.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): UserList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseUserList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = User.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): UserList {\n    return {\n      items: globalThis.Array.isArray(object?.items) ? object.items.map((e: any) => User.fromJSON(e)) : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: UserList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => User.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<UserList>): UserList {\n    return UserList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<UserList>): UserList {\n    const message = createBaseUserList();\n    message.items = object.items?.map((e) => User.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseUserListWithRoleResponse(): UserListWithRoleResponse {\n  return {};\n}\n\nexport const UserListWithRoleResponse: MessageFns<UserListWithRoleResponse> = {\n  encode(message: UserListWithRoleResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        UserRoleResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): UserListWithRoleResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseUserListWithRoleResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = UserRoleResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): UserListWithRoleResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => UserRoleResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: UserListWithRoleResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => UserRoleResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<UserListWithRoleResponse>): UserListWithRoleResponse {\n    return UserListWithRoleResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<UserListWithRoleResponse>): UserListWithRoleResponse {\n    const message = createBaseUserListWithRoleResponse();\n    message.items = object.items?.map((e) => UserRoleResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseUserRoleResponse(): UserRoleResponse {\n  return {};\n}\n\nexport const UserRoleResponse: MessageFns<UserRoleResponse> = {\n  encode(message: UserRoleResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      UserRole.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): UserRoleResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseUserRoleResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = UserRole.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): UserRoleResponse {\n    return {\n      payload: isSet(object.payload) ? UserRole.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: UserRoleResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = UserRole.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<UserRoleResponse>): UserRoleResponse {\n    return UserRoleResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<UserRoleResponse>): UserRoleResponse {\n    const message = createBaseUserRoleResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? UserRole.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseUserListResponse(): UserListResponse {\n  return {};\n}\n\nexport const UserListResponse: MessageFns<UserListResponse> = {\n  encode(message: UserListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        UserResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): UserListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseUserListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = UserResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): UserListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => UserResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: UserListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => UserResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<UserListResponse>): UserListResponse {\n    return UserListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<UserListResponse>): UserListResponse {\n    const message = createBaseUserListResponse();\n    message.items = object.items?.map((e) => UserResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseUserResponse(): UserResponse {\n  return {};\n}\n\nexport const UserResponse: MessageFns<UserResponse> = {\n  encode(message: UserResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      User.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): UserResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseUserResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = User.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): UserResponse {\n    return {\n      payload: isSet(object.payload) ? User.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: UserResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = User.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<UserResponse>): UserResponse {\n    return UserResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<UserResponse>): UserResponse {\n    const message = createBaseUserResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? User.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseActivate(): Activate {\n  return {};\n}\n\nexport const Activate: MessageFns<Activate> = {\n  encode(message: Activate, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Activate {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseActivate();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Activate {\n    return { id: isSet(object.id) ? globalThis.String(object.id) : undefined };\n  },\n\n  toJSON(message: Activate): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Activate>): Activate {\n    return Activate.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Activate>): Activate {\n    const message = createBaseActivate();\n    message.id = object.id ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseFindByRoleRequest(): FindByRoleRequest {\n  return {};\n}\n\nexport const FindByRoleRequest: MessageFns<FindByRoleRequest> = {\n  encode(message: FindByRoleRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.role !== undefined) {\n      writer.uint32(10).string(message.role);\n    }\n    if (message.attributes !== undefined && message.attributes.length !== 0) {\n      for (const v of message.attributes) {\n        Attribute.encode(v!, writer.uint32(18).fork()).join();\n      }\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FindByRoleRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFindByRoleRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.role = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          if (message.attributes === undefined) {\n            message.attributes = [];\n          }\n          const el = Attribute.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.attributes!.push(el);\n          }\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FindByRoleRequest {\n    return {\n      role: isSet(object.role) ? globalThis.String(object.role) : undefined,\n      attributes: globalThis.Array.isArray(object?.attributes)\n        ? object.attributes.map((e: any) => Attribute.fromJSON(e))\n        : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: FindByRoleRequest): unknown {\n    const obj: any = {};\n    if (message.role !== undefined) {\n      obj.role = message.role;\n    }\n    if (message.attributes?.length) {\n      obj.attributes = message.attributes.map((e) => Attribute.toJSON(e));\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FindByRoleRequest>): FindByRoleRequest {\n    return FindByRoleRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FindByRoleRequest>): FindByRoleRequest {\n    const message = createBaseFindByRoleRequest();\n    message.role = object.role ?? undefined;\n    message.attributes = object.attributes?.map((e) => Attribute.fromPartial(e)) || undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseUser(): User {\n  return {};\n}\n\nexport const User: MessageFns<User> = {\n  encode(message: User, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(18).fork()).join();\n    }\n    if (message.name !== undefined) {\n      writer.uint32(26).string(message.name);\n    }\n    if (message.firstName !== undefined) {\n      writer.uint32(34).string(message.firstName);\n    }\n    if (message.lastName !== undefined) {\n      writer.uint32(42).string(message.lastName);\n    }\n    if (message.email !== undefined) {\n      writer.uint32(50).string(message.email);\n    }\n    if (message.newEmail !== undefined) {\n      writer.uint32(58).string(message.newEmail);\n    }\n    if (message.active !== undefined) {\n      writer.uint32(64).bool(message.active);\n    }\n    if (message.activationCode !== undefined) {\n      writer.uint32(74).string(message.activationCode);\n    }\n    if (message.password !== undefined) {\n      writer.uint32(82).string(message.password);\n    }\n    if (message.passwordHash !== undefined) {\n      writer.uint32(90).string(message.passwordHash);\n    }\n    if (message.roleAssociations !== undefined && message.roleAssociations.length !== 0) {\n      for (const v of message.roleAssociations) {\n        RoleAssociation.encode(v!, writer.uint32(98).fork()).join();\n      }\n    }\n    if (message.timezoneId !== undefined) {\n      writer.uint32(106).string(message.timezoneId);\n    }\n    if (message.localeId !== undefined) {\n      writer.uint32(114).string(message.localeId);\n    }\n    if (message.defaultScope !== undefined) {\n      writer.uint32(122).string(message.defaultScope);\n    }\n    if (message.guest !== undefined) {\n      writer.uint32(128).bool(message.guest);\n    }\n    if (message.image !== undefined) {\n      Image.encode(message.image, writer.uint32(138).fork()).join();\n    }\n    if (message.userType !== undefined) {\n      writer.uint32(144).int32(userTypeToNumber(message.userType));\n    }\n    if (message.invite !== undefined) {\n      writer.uint32(152).bool(message.invite);\n    }\n    if (message.invitedByUserName !== undefined) {\n      writer.uint32(162).string(message.invitedByUserName);\n    }\n    if (message.invitedByUserFirstName !== undefined) {\n      writer.uint32(170).string(message.invitedByUserFirstName);\n    }\n    if (message.invitedByUserLastName !== undefined) {\n      writer.uint32(178).string(message.invitedByUserLastName);\n    }\n    if (message.tokens !== undefined && message.tokens.length !== 0) {\n      for (const v of message.tokens) {\n        Tokens.encode(v!, writer.uint32(186).fork()).join();\n      }\n    }\n    if (message.lastAccess !== undefined) {\n      Timestamp.encode(toTimestamp(message.lastAccess), writer.uint32(194).fork()).join();\n    }\n    if (message.properties !== undefined && message.properties.length !== 0) {\n      for (const v of message.properties) {\n        Attribute.encode(v!, writer.uint32(202).fork()).join();\n      }\n    }\n    if (message.data !== undefined) {\n      Any.encode(message.data, writer.uint32(210).fork()).join();\n    }\n    if (message.totpSecret !== undefined) {\n      writer.uint32(218).string(message.totpSecret);\n    }\n    if (message.totpSecretProcessing !== undefined) {\n      writer.uint32(226).string(message.totpSecretProcessing);\n    }\n    if (message.totpSessionTokens !== undefined && message.totpSessionTokens.length !== 0) {\n      for (const v of message.totpSessionTokens) {\n        writer.uint32(234).string(v!);\n      }\n    }\n    if (message.passwordHashHistory !== undefined && message.passwordHashHistory.length !== 0) {\n      for (const v of message.passwordHashHistory) {\n        writer.uint32(242).string(v!);\n      }\n    }\n    if (message.totpRecoveryCodes !== undefined && message.totpRecoveryCodes.length !== 0) {\n      for (const v of message.totpRecoveryCodes) {\n        writer.uint32(250).string(v!);\n      }\n    }\n    if (message.invitedAt !== undefined) {\n      Timestamp.encode(toTimestamp(message.invitedAt), writer.uint32(258).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): User {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseUser();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.firstName = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.lastName = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.email = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.newEmail = reader.string();\n          continue;\n        }\n        case 8: {\n          if (tag !== 64) {\n            break;\n          }\n\n          message.active = reader.bool();\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.activationCode = reader.string();\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.password = reader.string();\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.passwordHash = reader.string();\n          continue;\n        }\n        case 12: {\n          if (tag !== 98) {\n            break;\n          }\n\n          if (message.roleAssociations === undefined) {\n            message.roleAssociations = [];\n          }\n          const el = RoleAssociation.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.roleAssociations!.push(el);\n          }\n          continue;\n        }\n        case 13: {\n          if (tag !== 106) {\n            break;\n          }\n\n          message.timezoneId = reader.string();\n          continue;\n        }\n        case 14: {\n          if (tag !== 114) {\n            break;\n          }\n\n          message.localeId = reader.string();\n          continue;\n        }\n        case 15: {\n          if (tag !== 122) {\n            break;\n          }\n\n          message.defaultScope = reader.string();\n          continue;\n        }\n        case 16: {\n          if (tag !== 128) {\n            break;\n          }\n\n          message.guest = reader.bool();\n          continue;\n        }\n        case 17: {\n          if (tag !== 138) {\n            break;\n          }\n\n          message.image = Image.decode(reader, reader.uint32());\n          continue;\n        }\n        case 18: {\n          if (tag !== 144) {\n            break;\n          }\n\n          message.userType = userTypeFromJSON(reader.int32());\n          continue;\n        }\n        case 19: {\n          if (tag !== 152) {\n            break;\n          }\n\n          message.invite = reader.bool();\n          continue;\n        }\n        case 20: {\n          if (tag !== 162) {\n            break;\n          }\n\n          message.invitedByUserName = reader.string();\n          continue;\n        }\n        case 21: {\n          if (tag !== 170) {\n            break;\n          }\n\n          message.invitedByUserFirstName = reader.string();\n          continue;\n        }\n        case 22: {\n          if (tag !== 178) {\n            break;\n          }\n\n          message.invitedByUserLastName = reader.string();\n          continue;\n        }\n        case 23: {\n          if (tag !== 186) {\n            break;\n          }\n\n          if (message.tokens === undefined) {\n            message.tokens = [];\n          }\n          const el = Tokens.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.tokens!.push(el);\n          }\n          continue;\n        }\n        case 24: {\n          if (tag !== 194) {\n            break;\n          }\n\n          message.lastAccess = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 25: {\n          if (tag !== 202) {\n            break;\n          }\n\n          if (message.properties === undefined) {\n            message.properties = [];\n          }\n          const el = Attribute.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.properties!.push(el);\n          }\n          continue;\n        }\n        case 26: {\n          if (tag !== 210) {\n            break;\n          }\n\n          message.data = Any.decode(reader, reader.uint32());\n          continue;\n        }\n        case 27: {\n          if (tag !== 218) {\n            break;\n          }\n\n          message.totpSecret = reader.string();\n          continue;\n        }\n        case 28: {\n          if (tag !== 226) {\n            break;\n          }\n\n          message.totpSecretProcessing = reader.string();\n          continue;\n        }\n        case 29: {\n          if (tag !== 234) {\n            break;\n          }\n\n          if (message.totpSessionTokens === undefined) {\n            message.totpSessionTokens = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.totpSessionTokens!.push(el);\n          }\n          continue;\n        }\n        case 30: {\n          if (tag !== 242) {\n            break;\n          }\n\n          if (message.passwordHashHistory === undefined) {\n            message.passwordHashHistory = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.passwordHashHistory!.push(el);\n          }\n          continue;\n        }\n        case 31: {\n          if (tag !== 250) {\n            break;\n          }\n\n          if (message.totpRecoveryCodes === undefined) {\n            message.totpRecoveryCodes = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.totpRecoveryCodes!.push(el);\n          }\n          continue;\n        }\n        case 32: {\n          if (tag !== 258) {\n            break;\n          }\n\n          message.invitedAt = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): User {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      firstName: isSet(object.firstName) ? globalThis.String(object.firstName) : undefined,\n      lastName: isSet(object.lastName) ? globalThis.String(object.lastName) : undefined,\n      email: isSet(object.email) ? globalThis.String(object.email) : undefined,\n      newEmail: isSet(object.newEmail) ? globalThis.String(object.newEmail) : undefined,\n      active: isSet(object.active) ? globalThis.Boolean(object.active) : undefined,\n      activationCode: isSet(object.activationCode) ? globalThis.String(object.activationCode) : undefined,\n      password: isSet(object.password) ? globalThis.String(object.password) : undefined,\n      passwordHash: isSet(object.passwordHash) ? globalThis.String(object.passwordHash) : undefined,\n      roleAssociations: globalThis.Array.isArray(object?.roleAssociations)\n        ? object.roleAssociations.map((e: any) => RoleAssociation.fromJSON(e))\n        : undefined,\n      timezoneId: isSet(object.timezoneId) ? globalThis.String(object.timezoneId) : undefined,\n      localeId: isSet(object.localeId) ? globalThis.String(object.localeId) : undefined,\n      defaultScope: isSet(object.defaultScope) ? globalThis.String(object.defaultScope) : undefined,\n      guest: isSet(object.guest) ? globalThis.Boolean(object.guest) : undefined,\n      image: isSet(object.image) ? Image.fromJSON(object.image) : undefined,\n      userType: isSet(object.userType) ? userTypeFromJSON(object.userType) : undefined,\n      invite: isSet(object.invite) ? globalThis.Boolean(object.invite) : undefined,\n      invitedByUserName: isSet(object.invitedByUserName) ? globalThis.String(object.invitedByUserName) : undefined,\n      invitedByUserFirstName: isSet(object.invitedByUserFirstName)\n        ? globalThis.String(object.invitedByUserFirstName)\n        : undefined,\n      invitedByUserLastName: isSet(object.invitedByUserLastName)\n        ? globalThis.String(object.invitedByUserLastName)\n        : undefined,\n      tokens: globalThis.Array.isArray(object?.tokens) ? object.tokens.map((e: any) => Tokens.fromJSON(e)) : undefined,\n      lastAccess: isSet(object.lastAccess) ? fromJsonTimestamp(object.lastAccess) : undefined,\n      properties: globalThis.Array.isArray(object?.properties)\n        ? object.properties.map((e: any) => Attribute.fromJSON(e))\n        : undefined,\n      data: isSet(object.data) ? Any.fromJSON(object.data) : undefined,\n      totpSecret: isSet(object.totpSecret) ? globalThis.String(object.totpSecret) : undefined,\n      totpSecretProcessing: isSet(object.totpSecretProcessing)\n        ? globalThis.String(object.totpSecretProcessing)\n        : undefined,\n      totpSessionTokens: globalThis.Array.isArray(object?.totpSessionTokens)\n        ? object.totpSessionTokens.map((e: any) => globalThis.String(e))\n        : undefined,\n      passwordHashHistory: globalThis.Array.isArray(object?.passwordHashHistory)\n        ? object.passwordHashHistory.map((e: any) => globalThis.String(e))\n        : undefined,\n      totpRecoveryCodes: globalThis.Array.isArray(object?.totpRecoveryCodes)\n        ? object.totpRecoveryCodes.map((e: any) => globalThis.String(e))\n        : undefined,\n      invitedAt: isSet(object.invitedAt) ? fromJsonTimestamp(object.invitedAt) : undefined,\n    };\n  },\n\n  toJSON(message: User): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.firstName !== undefined) {\n      obj.firstName = message.firstName;\n    }\n    if (message.lastName !== undefined) {\n      obj.lastName = message.lastName;\n    }\n    if (message.email !== undefined) {\n      obj.email = message.email;\n    }\n    if (message.newEmail !== undefined) {\n      obj.newEmail = message.newEmail;\n    }\n    if (message.active !== undefined) {\n      obj.active = message.active;\n    }\n    if (message.activationCode !== undefined) {\n      obj.activationCode = message.activationCode;\n    }\n    if (message.password !== undefined) {\n      obj.password = message.password;\n    }\n    if (message.passwordHash !== undefined) {\n      obj.passwordHash = message.passwordHash;\n    }\n    if (message.roleAssociations?.length) {\n      obj.roleAssociations = message.roleAssociations.map((e) => RoleAssociation.toJSON(e));\n    }\n    if (message.timezoneId !== undefined) {\n      obj.timezoneId = message.timezoneId;\n    }\n    if (message.localeId !== undefined) {\n      obj.localeId = message.localeId;\n    }\n    if (message.defaultScope !== undefined) {\n      obj.defaultScope = message.defaultScope;\n    }\n    if (message.guest !== undefined) {\n      obj.guest = message.guest;\n    }\n    if (message.image !== undefined) {\n      obj.image = Image.toJSON(message.image);\n    }\n    if (message.userType !== undefined) {\n      obj.userType = userTypeToJSON(message.userType);\n    }\n    if (message.invite !== undefined) {\n      obj.invite = message.invite;\n    }\n    if (message.invitedByUserName !== undefined) {\n      obj.invitedByUserName = message.invitedByUserName;\n    }\n    if (message.invitedByUserFirstName !== undefined) {\n      obj.invitedByUserFirstName = message.invitedByUserFirstName;\n    }\n    if (message.invitedByUserLastName !== undefined) {\n      obj.invitedByUserLastName = message.invitedByUserLastName;\n    }\n    if (message.tokens?.length) {\n      obj.tokens = message.tokens.map((e) => Tokens.toJSON(e));\n    }\n    if (message.lastAccess !== undefined) {\n      obj.lastAccess = message.lastAccess.toISOString();\n    }\n    if (message.properties?.length) {\n      obj.properties = message.properties.map((e) => Attribute.toJSON(e));\n    }\n    if (message.data !== undefined) {\n      obj.data = Any.toJSON(message.data);\n    }\n    if (message.totpSecret !== undefined) {\n      obj.totpSecret = message.totpSecret;\n    }\n    if (message.totpSecretProcessing !== undefined) {\n      obj.totpSecretProcessing = message.totpSecretProcessing;\n    }\n    if (message.totpSessionTokens?.length) {\n      obj.totpSessionTokens = message.totpSessionTokens;\n    }\n    if (message.passwordHashHistory?.length) {\n      obj.passwordHashHistory = message.passwordHashHistory;\n    }\n    if (message.totpRecoveryCodes?.length) {\n      obj.totpRecoveryCodes = message.totpRecoveryCodes;\n    }\n    if (message.invitedAt !== undefined) {\n      obj.invitedAt = message.invitedAt.toISOString();\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<User>): User {\n    return User.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<User>): User {\n    const message = createBaseUser();\n    message.id = object.id ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.name = object.name ?? undefined;\n    message.firstName = object.firstName ?? undefined;\n    message.lastName = object.lastName ?? undefined;\n    message.email = object.email ?? undefined;\n    message.newEmail = object.newEmail ?? undefined;\n    message.active = object.active ?? undefined;\n    message.activationCode = object.activationCode ?? undefined;\n    message.password = object.password ?? undefined;\n    message.passwordHash = object.passwordHash ?? undefined;\n    message.roleAssociations = object.roleAssociations?.map((e) => RoleAssociation.fromPartial(e)) || undefined;\n    message.timezoneId = object.timezoneId ?? undefined;\n    message.localeId = object.localeId ?? undefined;\n    message.defaultScope = object.defaultScope ?? undefined;\n    message.guest = object.guest ?? undefined;\n    message.image = (object.image !== undefined && object.image !== null) ? Image.fromPartial(object.image) : undefined;\n    message.userType = object.userType ?? undefined;\n    message.invite = object.invite ?? undefined;\n    message.invitedByUserName = object.invitedByUserName ?? undefined;\n    message.invitedByUserFirstName = object.invitedByUserFirstName ?? undefined;\n    message.invitedByUserLastName = object.invitedByUserLastName ?? undefined;\n    message.tokens = object.tokens?.map((e) => Tokens.fromPartial(e)) || undefined;\n    message.lastAccess = object.lastAccess ?? undefined;\n    message.properties = object.properties?.map((e) => Attribute.fromPartial(e)) || undefined;\n    message.data = (object.data !== undefined && object.data !== null) ? Any.fromPartial(object.data) : undefined;\n    message.totpSecret = object.totpSecret ?? undefined;\n    message.totpSecretProcessing = object.totpSecretProcessing ?? undefined;\n    message.totpSessionTokens = object.totpSessionTokens?.map((e) => e) || undefined;\n    message.passwordHashHistory = object.passwordHashHistory?.map((e) => e) || undefined;\n    message.totpRecoveryCodes = object.totpRecoveryCodes?.map((e) => e) || undefined;\n    message.invitedAt = object.invitedAt ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseUserRole(): UserRole {\n  return {};\n}\n\nexport const UserRole: MessageFns<UserRole> = {\n  encode(message: UserRole, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(18).fork()).join();\n    }\n    if (message.name !== undefined) {\n      writer.uint32(26).string(message.name);\n    }\n    if (message.firstName !== undefined) {\n      writer.uint32(34).string(message.firstName);\n    }\n    if (message.lastName !== undefined) {\n      writer.uint32(42).string(message.lastName);\n    }\n    if (message.email !== undefined) {\n      writer.uint32(50).string(message.email);\n    }\n    if (message.newEmail !== undefined) {\n      writer.uint32(58).string(message.newEmail);\n    }\n    if (message.active !== undefined) {\n      writer.uint32(64).bool(message.active);\n    }\n    if (message.activationCode !== undefined) {\n      writer.uint32(74).string(message.activationCode);\n    }\n    if (message.password !== undefined) {\n      writer.uint32(82).string(message.password);\n    }\n    if (message.passwordHash !== undefined) {\n      writer.uint32(90).string(message.passwordHash);\n    }\n    if (message.roleAssociations !== undefined && message.roleAssociations.length !== 0) {\n      for (const v of message.roleAssociations) {\n        RoleAssociation.encode(v!, writer.uint32(98).fork()).join();\n      }\n    }\n    if (message.timezoneId !== undefined) {\n      writer.uint32(106).string(message.timezoneId);\n    }\n    if (message.localeId !== undefined) {\n      writer.uint32(114).string(message.localeId);\n    }\n    if (message.defaultScope !== undefined) {\n      writer.uint32(122).string(message.defaultScope);\n    }\n    if (message.guest !== undefined) {\n      writer.uint32(128).bool(message.guest);\n    }\n    if (message.image !== undefined) {\n      Image.encode(message.image, writer.uint32(138).fork()).join();\n    }\n    if (message.userType !== undefined) {\n      writer.uint32(144).int32(userTypeToNumber(message.userType));\n    }\n    if (message.invite !== undefined) {\n      writer.uint32(152).bool(message.invite);\n    }\n    if (message.invitedByUserName !== undefined) {\n      writer.uint32(162).string(message.invitedByUserName);\n    }\n    if (message.invitedByUserFirstName !== undefined) {\n      writer.uint32(170).string(message.invitedByUserFirstName);\n    }\n    if (message.invitedByUserLastName !== undefined) {\n      writer.uint32(178).string(message.invitedByUserLastName);\n    }\n    if (message.tokens !== undefined && message.tokens.length !== 0) {\n      for (const v of message.tokens) {\n        Tokens.encode(v!, writer.uint32(186).fork()).join();\n      }\n    }\n    if (message.lastAccess !== undefined) {\n      Timestamp.encode(toTimestamp(message.lastAccess), writer.uint32(194).fork()).join();\n    }\n    if (message.properties !== undefined && message.properties.length !== 0) {\n      for (const v of message.properties) {\n        Attribute.encode(v!, writer.uint32(202).fork()).join();\n      }\n    }\n    if (message.data !== undefined) {\n      Any.encode(message.data, writer.uint32(210).fork()).join();\n    }\n    if (message.roles !== undefined && message.roles.length !== 0) {\n      for (const v of message.roles) {\n        Role.encode(v!, writer.uint32(218).fork()).join();\n      }\n    }\n    if (message.invitedAt !== undefined) {\n      Timestamp.encode(toTimestamp(message.invitedAt), writer.uint32(226).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): UserRole {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseUserRole();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.firstName = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.lastName = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.email = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.newEmail = reader.string();\n          continue;\n        }\n        case 8: {\n          if (tag !== 64) {\n            break;\n          }\n\n          message.active = reader.bool();\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.activationCode = reader.string();\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.password = reader.string();\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.passwordHash = reader.string();\n          continue;\n        }\n        case 12: {\n          if (tag !== 98) {\n            break;\n          }\n\n          if (message.roleAssociations === undefined) {\n            message.roleAssociations = [];\n          }\n          const el = RoleAssociation.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.roleAssociations!.push(el);\n          }\n          continue;\n        }\n        case 13: {\n          if (tag !== 106) {\n            break;\n          }\n\n          message.timezoneId = reader.string();\n          continue;\n        }\n        case 14: {\n          if (tag !== 114) {\n            break;\n          }\n\n          message.localeId = reader.string();\n          continue;\n        }\n        case 15: {\n          if (tag !== 122) {\n            break;\n          }\n\n          message.defaultScope = reader.string();\n          continue;\n        }\n        case 16: {\n          if (tag !== 128) {\n            break;\n          }\n\n          message.guest = reader.bool();\n          continue;\n        }\n        case 17: {\n          if (tag !== 138) {\n            break;\n          }\n\n          message.image = Image.decode(reader, reader.uint32());\n          continue;\n        }\n        case 18: {\n          if (tag !== 144) {\n            break;\n          }\n\n          message.userType = userTypeFromJSON(reader.int32());\n          continue;\n        }\n        case 19: {\n          if (tag !== 152) {\n            break;\n          }\n\n          message.invite = reader.bool();\n          continue;\n        }\n        case 20: {\n          if (tag !== 162) {\n            break;\n          }\n\n          message.invitedByUserName = reader.string();\n          continue;\n        }\n        case 21: {\n          if (tag !== 170) {\n            break;\n          }\n\n          message.invitedByUserFirstName = reader.string();\n          continue;\n        }\n        case 22: {\n          if (tag !== 178) {\n            break;\n          }\n\n          message.invitedByUserLastName = reader.string();\n          continue;\n        }\n        case 23: {\n          if (tag !== 186) {\n            break;\n          }\n\n          if (message.tokens === undefined) {\n            message.tokens = [];\n          }\n          const el = Tokens.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.tokens!.push(el);\n          }\n          continue;\n        }\n        case 24: {\n          if (tag !== 194) {\n            break;\n          }\n\n          message.lastAccess = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 25: {\n          if (tag !== 202) {\n            break;\n          }\n\n          if (message.properties === undefined) {\n            message.properties = [];\n          }\n          const el = Attribute.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.properties!.push(el);\n          }\n          continue;\n        }\n        case 26: {\n          if (tag !== 210) {\n            break;\n          }\n\n          message.data = Any.decode(reader, reader.uint32());\n          continue;\n        }\n        case 27: {\n          if (tag !== 218) {\n            break;\n          }\n\n          if (message.roles === undefined) {\n            message.roles = [];\n          }\n          const el = Role.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.roles!.push(el);\n          }\n          continue;\n        }\n        case 28: {\n          if (tag !== 226) {\n            break;\n          }\n\n          message.invitedAt = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): UserRole {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      firstName: isSet(object.firstName) ? globalThis.String(object.firstName) : undefined,\n      lastName: isSet(object.lastName) ? globalThis.String(object.lastName) : undefined,\n      email: isSet(object.email) ? globalThis.String(object.email) : undefined,\n      newEmail: isSet(object.newEmail) ? globalThis.String(object.newEmail) : undefined,\n      active: isSet(object.active) ? globalThis.Boolean(object.active) : undefined,\n      activationCode: isSet(object.activationCode) ? globalThis.String(object.activationCode) : undefined,\n      password: isSet(object.password) ? globalThis.String(object.password) : undefined,\n      passwordHash: isSet(object.passwordHash) ? globalThis.String(object.passwordHash) : undefined,\n      roleAssociations: globalThis.Array.isArray(object?.roleAssociations)\n        ? object.roleAssociations.map((e: any) => RoleAssociation.fromJSON(e))\n        : undefined,\n      timezoneId: isSet(object.timezoneId) ? globalThis.String(object.timezoneId) : undefined,\n      localeId: isSet(object.localeId) ? globalThis.String(object.localeId) : undefined,\n      defaultScope: isSet(object.defaultScope) ? globalThis.String(object.defaultScope) : undefined,\n      guest: isSet(object.guest) ? globalThis.Boolean(object.guest) : undefined,\n      image: isSet(object.image) ? Image.fromJSON(object.image) : undefined,\n      userType: isSet(object.userType) ? userTypeFromJSON(object.userType) : undefined,\n      invite: isSet(object.invite) ? globalThis.Boolean(object.invite) : undefined,\n      invitedByUserName: isSet(object.invitedByUserName) ? globalThis.String(object.invitedByUserName) : undefined,\n      invitedByUserFirstName: isSet(object.invitedByUserFirstName)\n        ? globalThis.String(object.invitedByUserFirstName)\n        : undefined,\n      invitedByUserLastName: isSet(object.invitedByUserLastName)\n        ? globalThis.String(object.invitedByUserLastName)\n        : undefined,\n      tokens: globalThis.Array.isArray(object?.tokens) ? object.tokens.map((e: any) => Tokens.fromJSON(e)) : undefined,\n      lastAccess: isSet(object.lastAccess) ? fromJsonTimestamp(object.lastAccess) : undefined,\n      properties: globalThis.Array.isArray(object?.properties)\n        ? object.properties.map((e: any) => Attribute.fromJSON(e))\n        : undefined,\n      data: isSet(object.data) ? Any.fromJSON(object.data) : undefined,\n      roles: globalThis.Array.isArray(object?.roles) ? object.roles.map((e: any) => Role.fromJSON(e)) : undefined,\n      invitedAt: isSet(object.invitedAt) ? fromJsonTimestamp(object.invitedAt) : undefined,\n    };\n  },\n\n  toJSON(message: UserRole): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.firstName !== undefined) {\n      obj.firstName = message.firstName;\n    }\n    if (message.lastName !== undefined) {\n      obj.lastName = message.lastName;\n    }\n    if (message.email !== undefined) {\n      obj.email = message.email;\n    }\n    if (message.newEmail !== undefined) {\n      obj.newEmail = message.newEmail;\n    }\n    if (message.active !== undefined) {\n      obj.active = message.active;\n    }\n    if (message.activationCode !== undefined) {\n      obj.activationCode = message.activationCode;\n    }\n    if (message.password !== undefined) {\n      obj.password = message.password;\n    }\n    if (message.passwordHash !== undefined) {\n      obj.passwordHash = message.passwordHash;\n    }\n    if (message.roleAssociations?.length) {\n      obj.roleAssociations = message.roleAssociations.map((e) => RoleAssociation.toJSON(e));\n    }\n    if (message.timezoneId !== undefined) {\n      obj.timezoneId = message.timezoneId;\n    }\n    if (message.localeId !== undefined) {\n      obj.localeId = message.localeId;\n    }\n    if (message.defaultScope !== undefined) {\n      obj.defaultScope = message.defaultScope;\n    }\n    if (message.guest !== undefined) {\n      obj.guest = message.guest;\n    }\n    if (message.image !== undefined) {\n      obj.image = Image.toJSON(message.image);\n    }\n    if (message.userType !== undefined) {\n      obj.userType = userTypeToJSON(message.userType);\n    }\n    if (message.invite !== undefined) {\n      obj.invite = message.invite;\n    }\n    if (message.invitedByUserName !== undefined) {\n      obj.invitedByUserName = message.invitedByUserName;\n    }\n    if (message.invitedByUserFirstName !== undefined) {\n      obj.invitedByUserFirstName = message.invitedByUserFirstName;\n    }\n    if (message.invitedByUserLastName !== undefined) {\n      obj.invitedByUserLastName = message.invitedByUserLastName;\n    }\n    if (message.tokens?.length) {\n      obj.tokens = message.tokens.map((e) => Tokens.toJSON(e));\n    }\n    if (message.lastAccess !== undefined) {\n      obj.lastAccess = message.lastAccess.toISOString();\n    }\n    if (message.properties?.length) {\n      obj.properties = message.properties.map((e) => Attribute.toJSON(e));\n    }\n    if (message.data !== undefined) {\n      obj.data = Any.toJSON(message.data);\n    }\n    if (message.roles?.length) {\n      obj.roles = message.roles.map((e) => Role.toJSON(e));\n    }\n    if (message.invitedAt !== undefined) {\n      obj.invitedAt = message.invitedAt.toISOString();\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<UserRole>): UserRole {\n    return UserRole.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<UserRole>): UserRole {\n    const message = createBaseUserRole();\n    message.id = object.id ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.name = object.name ?? undefined;\n    message.firstName = object.firstName ?? undefined;\n    message.lastName = object.lastName ?? undefined;\n    message.email = object.email ?? undefined;\n    message.newEmail = object.newEmail ?? undefined;\n    message.active = object.active ?? undefined;\n    message.activationCode = object.activationCode ?? undefined;\n    message.password = object.password ?? undefined;\n    message.passwordHash = object.passwordHash ?? undefined;\n    message.roleAssociations = object.roleAssociations?.map((e) => RoleAssociation.fromPartial(e)) || undefined;\n    message.timezoneId = object.timezoneId ?? undefined;\n    message.localeId = object.localeId ?? undefined;\n    message.defaultScope = object.defaultScope ?? undefined;\n    message.guest = object.guest ?? undefined;\n    message.image = (object.image !== undefined && object.image !== null) ? Image.fromPartial(object.image) : undefined;\n    message.userType = object.userType ?? undefined;\n    message.invite = object.invite ?? undefined;\n    message.invitedByUserName = object.invitedByUserName ?? undefined;\n    message.invitedByUserFirstName = object.invitedByUserFirstName ?? undefined;\n    message.invitedByUserLastName = object.invitedByUserLastName ?? undefined;\n    message.tokens = object.tokens?.map((e) => Tokens.fromPartial(e)) || undefined;\n    message.lastAccess = object.lastAccess ?? undefined;\n    message.properties = object.properties?.map((e) => Attribute.fromPartial(e)) || undefined;\n    message.data = (object.data !== undefined && object.data !== null) ? Any.fromPartial(object.data) : undefined;\n    message.roles = object.roles?.map((e) => Role.fromPartial(e)) || undefined;\n    message.invitedAt = object.invitedAt ?? undefined;\n    return message;\n  },\n};\n\n/** The microservice for the user resource. */\nexport type UserServiceDefinition = typeof UserServiceDefinition;\nexport const UserServiceDefinition = {\n  name: \"UserService\",\n  fullName: \"io.restorecommerce.user.UserService\",\n  methods: {\n    read: {\n      name: \"Read\",\n      requestType: ReadRequest,\n      requestStream: false,\n      responseType: UserListWithRoleResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    create: {\n      name: \"Create\",\n      requestType: UserList,\n      requestStream: false,\n      responseType: UserListResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n    update: {\n      name: \"Update\",\n      requestType: UserList,\n      requestStream: false,\n      responseType: UserListResponse,\n      responseStream: false,\n      options: {},\n    },\n    upsert: {\n      name: \"Upsert\",\n      requestType: UserList,\n      requestStream: false,\n      responseType: UserListResponse,\n      responseStream: false,\n      options: {},\n    },\n    find: {\n      name: \"Find\",\n      requestType: FindRequest,\n      requestStream: false,\n      responseType: UserListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    register: {\n      name: \"Register\",\n      requestType: RegisterRequest,\n      requestStream: false,\n      responseType: UserResponse,\n      responseStream: false,\n      options: {},\n    },\n    activate: {\n      name: \"Activate\",\n      requestType: ActivateRequest,\n      requestStream: false,\n      responseType: OperationStatusObj,\n      responseStream: false,\n      options: {},\n    },\n    changePassword: {\n      name: \"ChangePassword\",\n      requestType: ChangePasswordRequest,\n      requestStream: false,\n      responseType: OperationStatusObj,\n      responseStream: false,\n      options: {},\n    },\n    requestPasswordChange: {\n      name: \"RequestPasswordChange\",\n      requestType: RequestPasswordChangeRequest,\n      requestStream: false,\n      responseType: OperationStatusObj,\n      responseStream: false,\n      options: {},\n    },\n    requestEmailChange: {\n      name: \"RequestEmailChange\",\n      requestType: ChangeEmailRequest,\n      requestStream: false,\n      responseType: OperationStatusObj,\n      responseStream: false,\n      options: {},\n    },\n    confirmPasswordChange: {\n      name: \"ConfirmPasswordChange\",\n      requestType: ConfirmPasswordChangeRequest,\n      requestStream: false,\n      responseType: OperationStatusObj,\n      responseStream: false,\n      options: {},\n    },\n    confirmEmailChange: {\n      name: \"ConfirmEmailChange\",\n      requestType: ConfirmEmailChangeRequest,\n      requestStream: false,\n      responseType: OperationStatusObj,\n      responseStream: false,\n      options: {},\n    },\n    unregister: {\n      name: \"Unregister\",\n      requestType: UnregisterRequest,\n      requestStream: false,\n      responseType: OperationStatusObj,\n      responseStream: false,\n      options: {},\n    },\n    login: {\n      name: \"Login\",\n      requestType: LoginRequest,\n      requestStream: false,\n      responseType: LoginResponse,\n      responseStream: false,\n      options: {},\n    },\n    findByRole: {\n      name: \"FindByRole\",\n      requestType: FindByRoleRequest,\n      requestStream: false,\n      responseType: UserListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    deleteUsersByOrg: {\n      name: \"DeleteUsersByOrg\",\n      requestType: OrgIDRequest,\n      requestStream: false,\n      responseType: DeleteUsersByOrgResponse,\n      responseStream: false,\n      options: {},\n    },\n    confirmUserInvitation: {\n      name: \"ConfirmUserInvitation\",\n      requestType: ConfirmUserInvitationRequest,\n      requestStream: false,\n      responseType: OperationStatusObj,\n      responseStream: false,\n      options: {},\n    },\n    sendInvitationEmail: {\n      name: \"SendInvitationEmail\",\n      requestType: SendInvitationEmailRequest,\n      requestStream: false,\n      responseType: OperationStatusObj,\n      responseStream: false,\n      options: {},\n    },\n    findByToken: {\n      name: \"FindByToken\",\n      requestType: FindByTokenRequest,\n      requestStream: false,\n      responseType: UserResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    sendActivationEmail: {\n      name: \"SendActivationEmail\",\n      requestType: SendActivationEmailRequest,\n      requestStream: false,\n      responseType: OperationStatusObj,\n      responseStream: false,\n      options: {},\n    },\n    setupTOTP: {\n      name: \"SetupTOTP\",\n      requestType: SetupTOTPRequest,\n      requestStream: false,\n      responseType: SetupTOTPResponse,\n      responseStream: false,\n      options: {},\n    },\n    completeTOTPSetup: {\n      name: \"CompleteTOTPSetup\",\n      requestType: CompleteTOTPSetupRequest,\n      requestStream: false,\n      responseType: OperationStatusObj,\n      responseStream: false,\n      options: {},\n    },\n    exchangeTOTP: {\n      name: \"ExchangeTOTP\",\n      requestType: ExchangeTOTPRequest,\n      requestStream: false,\n      responseType: UserResponse,\n      responseStream: false,\n      options: {},\n    },\n    createBackupTOTPCodes: {\n      name: \"CreateBackupTOTPCodes\",\n      requestType: CreateBackupTOTPCodesRequest,\n      requestStream: false,\n      responseType: CreateBackupTOTPCodesResponse,\n      responseStream: false,\n      options: {},\n    },\n    resetTOTP: {\n      name: \"ResetTOTP\",\n      requestType: ResetTOTPRequest,\n      requestStream: false,\n      responseType: OperationStatusObj,\n      responseStream: false,\n      options: {},\n    },\n    mfaStatus: {\n      name: \"MfaStatus\",\n      requestType: MfaStatusRequest,\n      requestStream: false,\n      responseType: MfaStatusResponse,\n      responseStream: false,\n      options: {},\n    },\n    getUnauthenticatedSubjectTokenForTenant: {\n      name: \"GetUnauthenticatedSubjectTokenForTenant\",\n      requestType: TenantRequest,\n      requestStream: false,\n      responseType: TenantResponse,\n      responseStream: false,\n      options: {},\n    },\n    impersonate: {\n      name: \"Impersonate\",\n      requestType: ImpersonateRequest,\n      requestStream: false,\n      responseType: ImpersonateResponse,\n      responseStream: false,\n      options: {},\n    },\n    endImpersonation: {\n      name: \"EndImpersonation\",\n      requestType: EndImpersonationRequest,\n      requestStream: false,\n      responseType: EndImpersonateResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface UserServiceImplementation<CallContextExt = {}> {\n  read(request: ReadRequest, context: CallContext & CallContextExt): Promise<DeepPartial<UserListWithRoleResponse>>;\n  create(request: UserList, context: CallContext & CallContextExt): Promise<DeepPartial<UserListResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n  update(request: UserList, context: CallContext & CallContextExt): Promise<DeepPartial<UserListResponse>>;\n  upsert(request: UserList, context: CallContext & CallContextExt): Promise<DeepPartial<UserListResponse>>;\n  find(request: FindRequest, context: CallContext & CallContextExt): Promise<DeepPartial<UserListResponse>>;\n  register(request: RegisterRequest, context: CallContext & CallContextExt): Promise<DeepPartial<UserResponse>>;\n  activate(request: ActivateRequest, context: CallContext & CallContextExt): Promise<DeepPartial<OperationStatusObj>>;\n  changePassword(\n    request: ChangePasswordRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<OperationStatusObj>>;\n  requestPasswordChange(\n    request: RequestPasswordChangeRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<OperationStatusObj>>;\n  requestEmailChange(\n    request: ChangeEmailRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<OperationStatusObj>>;\n  confirmPasswordChange(\n    request: ConfirmPasswordChangeRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<OperationStatusObj>>;\n  confirmEmailChange(\n    request: ConfirmEmailChangeRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<OperationStatusObj>>;\n  unregister(\n    request: UnregisterRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<OperationStatusObj>>;\n  login(request: LoginRequest, context: CallContext & CallContextExt): Promise<DeepPartial<LoginResponse>>;\n  findByRole(request: FindByRoleRequest, context: CallContext & CallContextExt): Promise<DeepPartial<UserListResponse>>;\n  deleteUsersByOrg(\n    request: OrgIDRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<DeleteUsersByOrgResponse>>;\n  confirmUserInvitation(\n    request: ConfirmUserInvitationRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<OperationStatusObj>>;\n  sendInvitationEmail(\n    request: SendInvitationEmailRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<OperationStatusObj>>;\n  findByToken(request: FindByTokenRequest, context: CallContext & CallContextExt): Promise<DeepPartial<UserResponse>>;\n  sendActivationEmail(\n    request: SendActivationEmailRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<OperationStatusObj>>;\n  setupTOTP(request: SetupTOTPRequest, context: CallContext & CallContextExt): Promise<DeepPartial<SetupTOTPResponse>>;\n  completeTOTPSetup(\n    request: CompleteTOTPSetupRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<OperationStatusObj>>;\n  exchangeTOTP(request: ExchangeTOTPRequest, context: CallContext & CallContextExt): Promise<DeepPartial<UserResponse>>;\n  createBackupTOTPCodes(\n    request: CreateBackupTOTPCodesRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<CreateBackupTOTPCodesResponse>>;\n  resetTOTP(request: ResetTOTPRequest, context: CallContext & CallContextExt): Promise<DeepPartial<OperationStatusObj>>;\n  mfaStatus(request: MfaStatusRequest, context: CallContext & CallContextExt): Promise<DeepPartial<MfaStatusResponse>>;\n  getUnauthenticatedSubjectTokenForTenant(\n    request: TenantRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<TenantResponse>>;\n  impersonate(\n    request: ImpersonateRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<ImpersonateResponse>>;\n  endImpersonation(\n    request: EndImpersonationRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<EndImpersonateResponse>>;\n}\n\nexport interface UserServiceClient<CallOptionsExt = {}> {\n  read(request: DeepPartial<ReadRequest>, options?: CallOptions & CallOptionsExt): Promise<UserListWithRoleResponse>;\n  create(request: DeepPartial<UserList>, options?: CallOptions & CallOptionsExt): Promise<UserListResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n  update(request: DeepPartial<UserList>, options?: CallOptions & CallOptionsExt): Promise<UserListResponse>;\n  upsert(request: DeepPartial<UserList>, options?: CallOptions & CallOptionsExt): Promise<UserListResponse>;\n  find(request: DeepPartial<FindRequest>, options?: CallOptions & CallOptionsExt): Promise<UserListResponse>;\n  register(request: DeepPartial<RegisterRequest>, options?: CallOptions & CallOptionsExt): Promise<UserResponse>;\n  activate(request: DeepPartial<ActivateRequest>, options?: CallOptions & CallOptionsExt): Promise<OperationStatusObj>;\n  changePassword(\n    request: DeepPartial<ChangePasswordRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<OperationStatusObj>;\n  requestPasswordChange(\n    request: DeepPartial<RequestPasswordChangeRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<OperationStatusObj>;\n  requestEmailChange(\n    request: DeepPartial<ChangeEmailRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<OperationStatusObj>;\n  confirmPasswordChange(\n    request: DeepPartial<ConfirmPasswordChangeRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<OperationStatusObj>;\n  confirmEmailChange(\n    request: DeepPartial<ConfirmEmailChangeRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<OperationStatusObj>;\n  unregister(\n    request: DeepPartial<UnregisterRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<OperationStatusObj>;\n  login(request: DeepPartial<LoginRequest>, options?: CallOptions & CallOptionsExt): Promise<LoginResponse>;\n  findByRole(\n    request: DeepPartial<FindByRoleRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<UserListResponse>;\n  deleteUsersByOrg(\n    request: DeepPartial<OrgIDRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<DeleteUsersByOrgResponse>;\n  confirmUserInvitation(\n    request: DeepPartial<ConfirmUserInvitationRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<OperationStatusObj>;\n  sendInvitationEmail(\n    request: DeepPartial<SendInvitationEmailRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<OperationStatusObj>;\n  findByToken(request: DeepPartial<FindByTokenRequest>, options?: CallOptions & CallOptionsExt): Promise<UserResponse>;\n  sendActivationEmail(\n    request: DeepPartial<SendActivationEmailRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<OperationStatusObj>;\n  setupTOTP(request: DeepPartial<SetupTOTPRequest>, options?: CallOptions & CallOptionsExt): Promise<SetupTOTPResponse>;\n  completeTOTPSetup(\n    request: DeepPartial<CompleteTOTPSetupRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<OperationStatusObj>;\n  exchangeTOTP(\n    request: DeepPartial<ExchangeTOTPRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<UserResponse>;\n  createBackupTOTPCodes(\n    request: DeepPartial<CreateBackupTOTPCodesRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<CreateBackupTOTPCodesResponse>;\n  resetTOTP(\n    request: DeepPartial<ResetTOTPRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<OperationStatusObj>;\n  mfaStatus(request: DeepPartial<MfaStatusRequest>, options?: CallOptions & CallOptionsExt): Promise<MfaStatusResponse>;\n  getUnauthenticatedSubjectTokenForTenant(\n    request: DeepPartial<TenantRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<TenantResponse>;\n  impersonate(\n    request: DeepPartial<ImpersonateRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<ImpersonateResponse>;\n  endImpersonation(\n    request: DeepPartial<EndImpersonationRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<EndImpersonateResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/user.proto\",\n    \"package\": \"io.restorecommerce.user\",\n    \"dependency\": [\n      \"io/restorecommerce/resource_base.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/attribute.proto\",\n      \"io/restorecommerce/image.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"google/protobuf/any.proto\",\n      \"io/restorecommerce/role.proto\",\n      \"io/restorecommerce/options.proto\",\n      \"google/protobuf/timestamp.proto\",\n      \"io/restorecommerce/timezone.proto\",\n      \"io/restorecommerce/locale.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"LoginRequest\",\n      \"field\": [{\n        \"name\": \"identifier\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"identifier\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"password\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"password\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"token\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"token\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_identifier\", \"options\": undefined }, { \"name\": \"_password\", \"options\": undefined }, {\n        \"name\": \"_token\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ImpersonateRequest\",\n      \"field\": [{\n        \"name\": \"identifier\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"identifier\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"token_ttl\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"tokenTtl\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_identifier\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }, {\n        \"name\": \"_token_ttl\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"AccessTokenData\",\n      \"field\": [{\n        \"name\": \"access_token\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"accessToken\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"expires_in\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Timestamp\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"expiresIn\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"token_type\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"tokenType\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"scope\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"scope\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"token_name\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"tokenName\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_access_token\", \"options\": undefined },\n        { \"name\": \"_expires_in\", \"options\": undefined },\n        { \"name\": \"_token_type\", \"options\": undefined },\n        { \"name\": \"_scope\", \"options\": undefined },\n        { \"name\": \"_token_name\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ImpersonateResponse\",\n      \"field\": [{\n        \"name\": \"status\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"payload\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.user.AccessTokenData\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_status\", \"options\": undefined }, { \"name\": \"_payload\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"EndImpersonationRequest\",\n      \"field\": [{\n        \"name\": \"subject\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"EndImpersonateResponse\",\n      \"field\": [{\n        \"name\": \"status\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"payload\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.user.AccessTokenData\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_status\", \"options\": undefined }, { \"name\": \"_payload\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"LoginResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.user.User\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"totp_session_token\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"totpSessionToken\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }, {\n        \"name\": \"_totp_session_token\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"SetupTOTPRequest\",\n      \"field\": [{\n        \"name\": \"identifier\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"identifier\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_identifier\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"SetupTOTPResponse\",\n      \"field\": [{\n        \"name\": \"totp_secret\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totpSecret\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_totp_secret\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"CompleteTOTPSetupRequest\",\n      \"field\": [{\n        \"name\": \"code\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"code\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_code\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ExchangeTOTPRequest\",\n      \"field\": [{\n        \"name\": \"code\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"code\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"totp_session_token\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"totpSessionToken\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_code\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }, {\n        \"name\": \"_totp_session_token\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"CreateBackupTOTPCodesRequest\",\n      \"field\": [{\n        \"name\": \"identifier\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"identifier\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_identifier\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"CreateBackupTOTPCodesResponse\",\n      \"field\": [{\n        \"name\": \"backup_codes\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"backupCodes\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_operation_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ResetTOTPRequest\",\n      \"field\": [{\n        \"name\": \"identifier\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"identifier\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_identifier\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"MfaStatusRequest\",\n      \"field\": [{\n        \"name\": \"identifier\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"identifier\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_identifier\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"MfaStatusResponse\",\n      \"field\": [{\n        \"name\": \"has_totp\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"hasTotp\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"has_backup_codes\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"hasBackupCodes\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_has_totp\", \"options\": undefined }, {\n        \"name\": \"_has_backup_codes\",\n        \"options\": undefined,\n      }, { \"name\": \"_operation_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"TenantRequest\",\n      \"field\": [{\n        \"name\": \"domain\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"domain\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_domain\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"TenantResponse\",\n      \"field\": [{\n        \"name\": \"token\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"token\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_token\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"OrgIDRequest\",\n      \"field\": [{\n        \"name\": \"org_ids\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"orgIds\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"DeleteUsersByOrgResponse\",\n      \"field\": [{\n        \"name\": \"user_ids\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"userIds\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_operation_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"FindRequest\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"name\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"email\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"email\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }, { \"name\": \"_name\", \"options\": undefined }, {\n        \"name\": \"_email\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"FindByTokenRequest\",\n      \"field\": [{\n        \"name\": \"token\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"token\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_token\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"RegisterRequest\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"guest\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"guest\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"name\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"first_name\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"firstName\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"last_name\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"lastName\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"email\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"email\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"password\",\n        \"number\": 8,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 7,\n        \"jsonName\": \"password\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"timezone_id\",\n        \"number\": 9,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 8,\n        \"jsonName\": \"timezoneId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"locale_id\",\n        \"number\": 10,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 9,\n        \"jsonName\": \"localeId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"default_scope\",\n        \"number\": 11,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 10,\n        \"jsonName\": \"defaultScope\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"user_type\",\n        \"number\": 12,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".io.restorecommerce.user.UserType\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 11,\n        \"jsonName\": \"userType\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"captcha_code\",\n        \"number\": 13,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 12,\n        \"jsonName\": \"captchaCode\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"data\",\n        \"number\": 14,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Any\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 13,\n        \"jsonName\": \"data\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_guest\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_name\", \"options\": undefined },\n        { \"name\": \"_first_name\", \"options\": undefined },\n        { \"name\": \"_last_name\", \"options\": undefined },\n        { \"name\": \"_email\", \"options\": undefined },\n        { \"name\": \"_password\", \"options\": undefined },\n        { \"name\": \"_timezone_id\", \"options\": undefined },\n        { \"name\": \"_locale_id\", \"options\": undefined },\n        { \"name\": \"_default_scope\", \"options\": undefined },\n        { \"name\": \"_user_type\", \"options\": undefined },\n        { \"name\": \"_captcha_code\", \"options\": undefined },\n        { \"name\": \"_data\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ActivateRequest\",\n      \"field\": [{\n        \"name\": \"identifier\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"identifier\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"activation_code\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"activationCode\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_identifier\", \"options\": undefined }, {\n        \"name\": \"_activation_code\",\n        \"options\": undefined,\n      }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ConfirmUserInvitationRequest\",\n      \"field\": [{\n        \"name\": \"identifier\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"identifier\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"password\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"password\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"activation_code\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"activationCode\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_identifier\", \"options\": undefined }, { \"name\": \"_password\", \"options\": undefined }, {\n        \"name\": \"_activation_code\",\n        \"options\": undefined,\n      }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"SendInvitationEmailRequest\",\n      \"field\": [{\n        \"name\": \"identifier\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"identifier\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"invited_by_user_identifier\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"invitedByUserIdentifier\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_identifier\", \"options\": undefined }, {\n        \"name\": \"_invited_by_user_identifier\",\n        \"options\": undefined,\n      }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ChangePasswordRequest\",\n      \"field\": [{\n        \"name\": \"password\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"password\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"new_password\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"newPassword\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_password\", \"options\": undefined }, { \"name\": \"_new_password\", \"options\": undefined }, {\n        \"name\": \"_subject\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"RequestPasswordChangeRequest\",\n      \"field\": [{\n        \"name\": \"identifier\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"identifier\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_identifier\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ConfirmPasswordChangeRequest\",\n      \"field\": [{\n        \"name\": \"identifier\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"identifier\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"activation_code\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"activationCode\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"password\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"password\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_identifier\", \"options\": undefined },\n        { \"name\": \"_activation_code\", \"options\": undefined },\n        { \"name\": \"_password\", \"options\": undefined },\n        { \"name\": \"_subject\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ChangeEmailRequest\",\n      \"field\": [{\n        \"name\": \"identifier\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"identifier\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"new_email\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"newEmail\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_identifier\", \"options\": undefined }, { \"name\": \"_new_email\", \"options\": undefined }, {\n        \"name\": \"_subject\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ConfirmEmailChangeRequest\",\n      \"field\": [{\n        \"name\": \"identifier\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"identifier\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"activation_code\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"activationCode\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_identifier\", \"options\": undefined }, {\n        \"name\": \"_activation_code\",\n        \"options\": undefined,\n      }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"UnregisterRequest\",\n      \"field\": [{\n        \"name\": \"identifier\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"identifier\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_identifier\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"SendActivationEmailRequest\",\n      \"field\": [{\n        \"name\": \"identifier\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"identifier\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_identifier\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Deleted\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"PasswordChanged\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"password_hash\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"passwordHash\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }, { \"name\": \"_password_hash\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"PasswordChangeRequested\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"EmailChangeRequested\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"activation_code\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"activationCode\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"new_email\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"newEmail\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }, { \"name\": \"_activation_code\", \"options\": undefined }, {\n        \"name\": \"_new_email\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"EmailChangeConfirmed\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"email\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"email\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }, { \"name\": \"_email\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"UserList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.user.User\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"UserListWithRoleResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.user.UserRoleResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"UserRoleResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.user.UserRole\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"UserListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.user.UserResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"UserResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.user.User\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Activate\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"FindByRoleRequest\",\n      \"field\": [{\n        \"name\": \"role\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"role\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"attributes\",\n        \"number\": 2,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.attribute.Attribute\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"attributes\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_role\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"User\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"name\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"first_name\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"firstName\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"last_name\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"lastName\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"email\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"email\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"new_email\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"newEmail\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"active\",\n        \"number\": 8,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 7,\n        \"jsonName\": \"active\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"activation_code\",\n        \"number\": 9,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 8,\n        \"jsonName\": \"activationCode\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"password\",\n        \"number\": 10,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 9,\n        \"jsonName\": \"password\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"password_hash\",\n        \"number\": 11,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 10,\n        \"jsonName\": \"passwordHash\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"role_associations\",\n        \"number\": 12,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.RoleAssociation\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"roleAssociations\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"timezone_id\",\n        \"number\": 13,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 11,\n        \"jsonName\": \"timezoneId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"locale_id\",\n        \"number\": 14,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 12,\n        \"jsonName\": \"localeId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"default_scope\",\n        \"number\": 15,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 13,\n        \"jsonName\": \"defaultScope\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"guest\",\n        \"number\": 16,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 14,\n        \"jsonName\": \"guest\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"image\",\n        \"number\": 17,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.image.Image\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 15,\n        \"jsonName\": \"image\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"user_type\",\n        \"number\": 18,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".io.restorecommerce.user.UserType\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 16,\n        \"jsonName\": \"userType\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"invite\",\n        \"number\": 19,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 17,\n        \"jsonName\": \"invite\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"invited_by_user_name\",\n        \"number\": 20,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 18,\n        \"jsonName\": \"invitedByUserName\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"invited_by_user_first_name\",\n        \"number\": 21,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 19,\n        \"jsonName\": \"invitedByUserFirstName\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"invited_by_user_last_name\",\n        \"number\": 22,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 20,\n        \"jsonName\": \"invitedByUserLastName\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"tokens\",\n        \"number\": 23,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Tokens\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"tokens\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"last_access\",\n        \"number\": 24,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Timestamp\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 21,\n        \"jsonName\": \"lastAccess\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"properties\",\n        \"number\": 25,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.attribute.Attribute\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"properties\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"data\",\n        \"number\": 26,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Any\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 22,\n        \"jsonName\": \"data\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"totp_secret\",\n        \"number\": 27,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 23,\n        \"jsonName\": \"totpSecret\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"totp_secret_processing\",\n        \"number\": 28,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 24,\n        \"jsonName\": \"totpSecretProcessing\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"totp_session_tokens\",\n        \"number\": 29,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totpSessionTokens\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"password_hash_history\",\n        \"number\": 30,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"passwordHashHistory\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"totp_recovery_codes\",\n        \"number\": 31,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totpRecoveryCodes\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"invited_at\",\n        \"number\": 32,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Timestamp\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 25,\n        \"jsonName\": \"invitedAt\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_name\", \"options\": undefined },\n        { \"name\": \"_first_name\", \"options\": undefined },\n        { \"name\": \"_last_name\", \"options\": undefined },\n        { \"name\": \"_email\", \"options\": undefined },\n        { \"name\": \"_new_email\", \"options\": undefined },\n        { \"name\": \"_active\", \"options\": undefined },\n        { \"name\": \"_activation_code\", \"options\": undefined },\n        { \"name\": \"_password\", \"options\": undefined },\n        { \"name\": \"_password_hash\", \"options\": undefined },\n        { \"name\": \"_timezone_id\", \"options\": undefined },\n        { \"name\": \"_locale_id\", \"options\": undefined },\n        { \"name\": \"_default_scope\", \"options\": undefined },\n        { \"name\": \"_guest\", \"options\": undefined },\n        { \"name\": \"_image\", \"options\": undefined },\n        { \"name\": \"_user_type\", \"options\": undefined },\n        { \"name\": \"_invite\", \"options\": undefined },\n        { \"name\": \"_invited_by_user_name\", \"options\": undefined },\n        { \"name\": \"_invited_by_user_first_name\", \"options\": undefined },\n        { \"name\": \"_invited_by_user_last_name\", \"options\": undefined },\n        { \"name\": \"_last_access\", \"options\": undefined },\n        { \"name\": \"_data\", \"options\": undefined },\n        { \"name\": \"_totp_secret\", \"options\": undefined },\n        { \"name\": \"_totp_secret_processing\", \"options\": undefined },\n        { \"name\": \"_invited_at\", \"options\": undefined },\n      ],\n      \"options\": {\n        \"messageSetWireFormat\": false,\n        \"noStandardDescriptorAccessor\": false,\n        \"deprecated\": false,\n        \"mapEntry\": false,\n        \"uninterpretedOption\": [],\n      },\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"UserRole\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"name\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"first_name\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"firstName\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"last_name\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"lastName\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"email\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"email\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"new_email\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"newEmail\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"active\",\n        \"number\": 8,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 7,\n        \"jsonName\": \"active\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"activation_code\",\n        \"number\": 9,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 8,\n        \"jsonName\": \"activationCode\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"password\",\n        \"number\": 10,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 9,\n        \"jsonName\": \"password\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"password_hash\",\n        \"number\": 11,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 10,\n        \"jsonName\": \"passwordHash\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"role_associations\",\n        \"number\": 12,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.RoleAssociation\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"roleAssociations\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"timezone_id\",\n        \"number\": 13,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 11,\n        \"jsonName\": \"timezoneId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"locale_id\",\n        \"number\": 14,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 12,\n        \"jsonName\": \"localeId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"default_scope\",\n        \"number\": 15,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 13,\n        \"jsonName\": \"defaultScope\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"guest\",\n        \"number\": 16,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 14,\n        \"jsonName\": \"guest\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"image\",\n        \"number\": 17,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.image.Image\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 15,\n        \"jsonName\": \"image\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"user_type\",\n        \"number\": 18,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".io.restorecommerce.user.UserType\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 16,\n        \"jsonName\": \"userType\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"invite\",\n        \"number\": 19,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 17,\n        \"jsonName\": \"invite\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"invited_by_user_name\",\n        \"number\": 20,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 18,\n        \"jsonName\": \"invitedByUserName\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"invited_by_user_first_name\",\n        \"number\": 21,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 19,\n        \"jsonName\": \"invitedByUserFirstName\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"invited_by_user_last_name\",\n        \"number\": 22,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 20,\n        \"jsonName\": \"invitedByUserLastName\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"tokens\",\n        \"number\": 23,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Tokens\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"tokens\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"last_access\",\n        \"number\": 24,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Timestamp\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 21,\n        \"jsonName\": \"lastAccess\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"properties\",\n        \"number\": 25,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.attribute.Attribute\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"properties\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"data\",\n        \"number\": 26,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Any\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 22,\n        \"jsonName\": \"data\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"roles\",\n        \"number\": 27,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.role.Role\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"roles\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"invited_at\",\n        \"number\": 28,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Timestamp\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 23,\n        \"jsonName\": \"invitedAt\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_name\", \"options\": undefined },\n        { \"name\": \"_first_name\", \"options\": undefined },\n        { \"name\": \"_last_name\", \"options\": undefined },\n        { \"name\": \"_email\", \"options\": undefined },\n        { \"name\": \"_new_email\", \"options\": undefined },\n        { \"name\": \"_active\", \"options\": undefined },\n        { \"name\": \"_activation_code\", \"options\": undefined },\n        { \"name\": \"_password\", \"options\": undefined },\n        { \"name\": \"_password_hash\", \"options\": undefined },\n        { \"name\": \"_timezone_id\", \"options\": undefined },\n        { \"name\": \"_locale_id\", \"options\": undefined },\n        { \"name\": \"_default_scope\", \"options\": undefined },\n        { \"name\": \"_guest\", \"options\": undefined },\n        { \"name\": \"_image\", \"options\": undefined },\n        { \"name\": \"_user_type\", \"options\": undefined },\n        { \"name\": \"_invite\", \"options\": undefined },\n        { \"name\": \"_invited_by_user_name\", \"options\": undefined },\n        { \"name\": \"_invited_by_user_first_name\", \"options\": undefined },\n        { \"name\": \"_invited_by_user_last_name\", \"options\": undefined },\n        { \"name\": \"_last_access\", \"options\": undefined },\n        { \"name\": \"_data\", \"options\": undefined },\n        { \"name\": \"_invited_at\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [{\n      \"name\": \"UserType\",\n      \"value\": [\n        { \"name\": \"ORG_USER\", \"number\": 0, \"options\": undefined },\n        { \"name\": \"INDIVIDUAL_USER\", \"number\": 1, \"options\": undefined },\n        { \"name\": \"GUEST\", \"number\": 2, \"options\": undefined },\n        { \"name\": \"TECHNICAL_USER\", \"number\": 3, \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"service\": [{\n      \"name\": \"UserService\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ReadRequest\",\n        \"outputType\": \".io.restorecommerce.user.UserListWithRoleResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.user.UserList\",\n        \"outputType\": \".io.restorecommerce.user.UserListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.user.UserList\",\n        \"outputType\": \".io.restorecommerce.user.UserListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.user.UserList\",\n        \"outputType\": \".io.restorecommerce.user.UserListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Find\",\n        \"inputType\": \".io.restorecommerce.user.FindRequest\",\n        \"outputType\": \".io.restorecommerce.user.UserListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Register\",\n        \"inputType\": \".io.restorecommerce.user.RegisterRequest\",\n        \"outputType\": \".io.restorecommerce.user.UserResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Activate\",\n        \"inputType\": \".io.restorecommerce.user.ActivateRequest\",\n        \"outputType\": \".io.restorecommerce.status.OperationStatusObj\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"ChangePassword\",\n        \"inputType\": \".io.restorecommerce.user.ChangePasswordRequest\",\n        \"outputType\": \".io.restorecommerce.status.OperationStatusObj\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"RequestPasswordChange\",\n        \"inputType\": \".io.restorecommerce.user.RequestPasswordChangeRequest\",\n        \"outputType\": \".io.restorecommerce.status.OperationStatusObj\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"RequestEmailChange\",\n        \"inputType\": \".io.restorecommerce.user.ChangeEmailRequest\",\n        \"outputType\": \".io.restorecommerce.status.OperationStatusObj\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"ConfirmPasswordChange\",\n        \"inputType\": \".io.restorecommerce.user.ConfirmPasswordChangeRequest\",\n        \"outputType\": \".io.restorecommerce.status.OperationStatusObj\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"ConfirmEmailChange\",\n        \"inputType\": \".io.restorecommerce.user.ConfirmEmailChangeRequest\",\n        \"outputType\": \".io.restorecommerce.status.OperationStatusObj\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Unregister\",\n        \"inputType\": \".io.restorecommerce.user.UnregisterRequest\",\n        \"outputType\": \".io.restorecommerce.status.OperationStatusObj\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Login\",\n        \"inputType\": \".io.restorecommerce.user.LoginRequest\",\n        \"outputType\": \".io.restorecommerce.user.LoginResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"FindByRole\",\n        \"inputType\": \".io.restorecommerce.user.FindByRoleRequest\",\n        \"outputType\": \".io.restorecommerce.user.UserListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"DeleteUsersByOrg\",\n        \"inputType\": \".io.restorecommerce.user.OrgIDRequest\",\n        \"outputType\": \".io.restorecommerce.user.DeleteUsersByOrgResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"ConfirmUserInvitation\",\n        \"inputType\": \".io.restorecommerce.user.ConfirmUserInvitationRequest\",\n        \"outputType\": \".io.restorecommerce.status.OperationStatusObj\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"SendInvitationEmail\",\n        \"inputType\": \".io.restorecommerce.user.SendInvitationEmailRequest\",\n        \"outputType\": \".io.restorecommerce.status.OperationStatusObj\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"FindByToken\",\n        \"inputType\": \".io.restorecommerce.user.FindByTokenRequest\",\n        \"outputType\": \".io.restorecommerce.user.UserResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"SendActivationEmail\",\n        \"inputType\": \".io.restorecommerce.user.SendActivationEmailRequest\",\n        \"outputType\": \".io.restorecommerce.status.OperationStatusObj\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"SetupTOTP\",\n        \"inputType\": \".io.restorecommerce.user.SetupTOTPRequest\",\n        \"outputType\": \".io.restorecommerce.user.SetupTOTPResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"CompleteTOTPSetup\",\n        \"inputType\": \".io.restorecommerce.user.CompleteTOTPSetupRequest\",\n        \"outputType\": \".io.restorecommerce.status.OperationStatusObj\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"ExchangeTOTP\",\n        \"inputType\": \".io.restorecommerce.user.ExchangeTOTPRequest\",\n        \"outputType\": \".io.restorecommerce.user.UserResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"CreateBackupTOTPCodes\",\n        \"inputType\": \".io.restorecommerce.user.CreateBackupTOTPCodesRequest\",\n        \"outputType\": \".io.restorecommerce.user.CreateBackupTOTPCodesResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"ResetTOTP\",\n        \"inputType\": \".io.restorecommerce.user.ResetTOTPRequest\",\n        \"outputType\": \".io.restorecommerce.status.OperationStatusObj\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"MfaStatus\",\n        \"inputType\": \".io.restorecommerce.user.MfaStatusRequest\",\n        \"outputType\": \".io.restorecommerce.user.MfaStatusResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"GetUnauthenticatedSubjectTokenForTenant\",\n        \"inputType\": \".io.restorecommerce.user.TenantRequest\",\n        \"outputType\": \".io.restorecommerce.user.TenantResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Impersonate\",\n        \"inputType\": \".io.restorecommerce.user.ImpersonateRequest\",\n        \"outputType\": \".io.restorecommerce.user.ImpersonateResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"EndImpersonation\",\n        \"inputType\": \".io.restorecommerce.user.EndImpersonationRequest\",\n        \"outputType\": \".io.restorecommerce.user.EndImpersonateResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [3, 10],\n        \"span\": [16, 0, 43],\n        \"leadingComments\": \" Used by resolvers\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0],\n        \"span\": [22, 0, 62, 1],\n        \"leadingComments\": \"*\\n The microservice for the user resource.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 0],\n        \"span\": [68, 0, 72, 1],\n        \"leadingComments\":\n          \"*\\n Request to verify password and retrieve the user's info.\\n Either name or email can be provided.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 0, 2, 0],\n        \"span\": [69, 2, 33],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" User name or email\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 0, 2, 1],\n        \"span\": [70, 2, 31],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Raw password\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 1, 2, 0],\n        \"span\": [75, 2, 33],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Username to impersonate\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 1, 2, 1],\n        \"span\": [76, 2, 55],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Impersonator's subject\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 1, 2, 2],\n        \"span\": [77, 2, 32],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Token time to live in seconds\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 20, 2, 0],\n        \"span\": [174, 2, 25],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" User ID\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 22, 2, 10],\n        \"span\": [203, 2, 37],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" default hierarchical scope\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 22, 2, 13],\n        \"span\": [206, 2, 41],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" data\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 23, 2, 0],\n        \"span\": [210, 2, 33],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" user name or email\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 24, 2, 0],\n        \"span\": [216, 2, 33],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" user name or email\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 25, 2, 0],\n        \"span\": [223, 2, 33],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" user name or email\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 27, 2, 0],\n        \"span\": [235, 2, 33],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" user name or email\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 28, 2, 0],\n        \"span\": [240, 2, 33],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" user name or email\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 29, 2, 0],\n        \"span\": [247, 2, 33],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" user name or email\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 30, 2, 0],\n        \"span\": [253, 2, 33],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" user name or email\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 31, 2, 0],\n        \"span\": [259, 2, 33],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" User ID\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 32, 2, 0],\n        \"span\": [264, 2, 33],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" User name or email\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 33],\n        \"span\": [276, 0, 278, 1],\n        \"leadingComments\":\n          \"*\\n User deletion event.\\n Send when a user was deleted or unregistered.\\n\\n Events:\\n usersDeleted,\\n unregistered,\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 34],\n        \"span\": [286, 0, 289, 1],\n        \"leadingComments\": \"*\\n User password changed event.\\n\\n Events:\\n passwordChanged,\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 34, 2, 0],\n        \"span\": [287, 2, 25],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" User ID\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 35, 2, 0],\n        \"span\": [292, 2, 25],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" User ID\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 36],\n        \"span\": [298, 0, 302, 1],\n        \"leadingComments\": \"*\\n User email id changed event.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 37, 2, 0],\n        \"span\": [305, 2, 25],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" User ID\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 38],\n        \"span\": [312, 0, 316, 1],\n        \"leadingComments\": \"*\\n A list of User.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 43],\n        \"span\": [343, 0, 345, 1],\n        \"leadingComments\": \"*\\n User activation request.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 43, 2, 0],\n        \"span\": [344, 2, 25],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" User ID\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 45],\n        \"span\": [356, 0, 413, 1],\n        \"leadingComments\": \"*\\n A User resource.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 45, 2, 0],\n        \"span\": [365, 2, 25],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" User ID, unique, key\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 45, 2, 2],\n        \"span\": [367, 2, 27],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" The name of the user, can be used for login\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 45, 2, 5],\n        \"span\": [370, 2, 28],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Email address, can be used for login\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 45, 2, 6],\n        \"span\": [371, 2, 32],\n        \"leadingComments\": \"\",\n        \"trailingComments\":\n          \" New email address; set by `requestEmailChange` and overrides actual email upon `confirmEmailChange`\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 45, 2, 7],\n        \"span\": [372, 2, 27],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" If the user was activated via the activation process\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 45, 2, 8],\n        \"span\": [373, 2, 38],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Activation code used in the activation process\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 45, 2, 9],\n        \"span\": [374, 2, 32],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Raw password, not stored\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 45, 2, 10],\n        \"span\": [375, 2, 37],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Encrypted password, stored\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 45, 2, 11],\n        \"span\": [376, 2, 74],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" A user can have multiple roles and different attributes coupled with each role\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 45, 2, 12],\n        \"span\": [377, 2, 385, 4],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" timezone_id specifications\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 45, 2, 13],\n        \"span\": [386, 2, 394, 4],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" locale specifications\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 45, 2, 14],\n        \"span\": [395, 2, 37],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" default hierarchical scope\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 45, 2, 15],\n        \"span\": [396, 2, 27],\n        \"leadingComments\": \"\",\n        \"trailingComments\":\n          \" Is the user a guest. A guest is a automatically generated user which can later be turned in a non-guest user.\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 45, 2, 18],\n        \"span\": [399, 2, 28],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" true if user has been invited by another user\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 45, 2, 19],\n        \"span\": [400, 2, 44],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" User who is inviting\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 45, 2, 20],\n        \"span\": [401, 2, 50],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" First name of user inviting\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 45, 2, 21],\n        \"span\": [402, 2, 49],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Last name of user inviting\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 45, 2, 23],\n        \"span\": [404, 2, 54],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" When the user has last been used\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 45, 2, 24],\n        \"span\": [405, 2, 66],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" additional properties\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 45, 2, 25],\n        \"span\": [406, 2, 41],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" additional data\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 45, 2, 26],\n        \"span\": [407, 2, 35],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \"/ TOTP Secret\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 45, 2, 27],\n        \"span\": [408, 2, 46],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \"/ TOTP Secret before being confirmed\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 45, 2, 28],\n        \"span\": [409, 2, 43],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \"/ TOTP Login session tokens\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 45, 2, 29],\n        \"span\": [410, 2, 45],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" List of historical password hashes\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 45, 2, 30],\n        \"span\": [411, 2, 43],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" List of TOTP recovery codes\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 46],\n        \"span\": [418, 0, 463, 1],\n        \"leadingComments\": \"*\\n A User resource with role\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 46, 2, 0],\n        \"span\": [419, 2, 25],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" User ID, unique, key\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 46, 2, 2],\n        \"span\": [421, 2, 27],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" The name of the user, can be used for login\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 46, 2, 5],\n        \"span\": [424, 2, 28],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Email address, can be used for login\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 46, 2, 6],\n        \"span\": [425, 2, 32],\n        \"leadingComments\": \"\",\n        \"trailingComments\":\n          \" New email address; set by `requestEmailChange` and overrides actual email upon `confirmEmailChange`\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 46, 2, 7],\n        \"span\": [426, 2, 27],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" If the user was activated via the activation process\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 46, 2, 8],\n        \"span\": [427, 2, 38],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Activation code used in the activation process\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 46, 2, 9],\n        \"span\": [428, 2, 32],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Raw password, not stored\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 46, 2, 10],\n        \"span\": [429, 2, 37],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Encrypted password, stored\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 46, 2, 11],\n        \"span\": [430, 2, 74],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" A user can have multiple roles and different attributes coupled with each role\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 46, 2, 12],\n        \"span\": [431, 2, 439, 4],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" timezone_id specifications\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 46, 2, 13],\n        \"span\": [440, 2, 448, 4],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" locale specifications\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 46, 2, 14],\n        \"span\": [449, 2, 37],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" default hierarchical scope\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 46, 2, 15],\n        \"span\": [450, 2, 27],\n        \"leadingComments\": \"\",\n        \"trailingComments\":\n          \" Is the user a guest. A guest is a automatically generated user which can later be turned in a non-guest user.\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 46, 2, 18],\n        \"span\": [453, 2, 28],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" true if user has been invited by another user\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 46, 2, 19],\n        \"span\": [454, 2, 44],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" User who is inviting\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 46, 2, 20],\n        \"span\": [455, 2, 50],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" First name of user inviting\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 46, 2, 21],\n        \"span\": [456, 2, 49],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Last name of user inviting\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 46, 2, 23],\n        \"span\": [458, 2, 54],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" When the user has last been used\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 46, 2, 24],\n        \"span\": [459, 2, 66],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" additional properties\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 46, 2, 25],\n        \"span\": [460, 2, 41],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" additional data\\n\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.user.UserType\": UserType,\n    \".io.restorecommerce.user.LoginRequest\": LoginRequest,\n    \".io.restorecommerce.user.ImpersonateRequest\": ImpersonateRequest,\n    \".io.restorecommerce.user.AccessTokenData\": AccessTokenData,\n    \".io.restorecommerce.user.ImpersonateResponse\": ImpersonateResponse,\n    \".io.restorecommerce.user.EndImpersonationRequest\": EndImpersonationRequest,\n    \".io.restorecommerce.user.EndImpersonateResponse\": EndImpersonateResponse,\n    \".io.restorecommerce.user.LoginResponse\": LoginResponse,\n    \".io.restorecommerce.user.SetupTOTPRequest\": SetupTOTPRequest,\n    \".io.restorecommerce.user.SetupTOTPResponse\": SetupTOTPResponse,\n    \".io.restorecommerce.user.CompleteTOTPSetupRequest\": CompleteTOTPSetupRequest,\n    \".io.restorecommerce.user.ExchangeTOTPRequest\": ExchangeTOTPRequest,\n    \".io.restorecommerce.user.CreateBackupTOTPCodesRequest\": CreateBackupTOTPCodesRequest,\n    \".io.restorecommerce.user.CreateBackupTOTPCodesResponse\": CreateBackupTOTPCodesResponse,\n    \".io.restorecommerce.user.ResetTOTPRequest\": ResetTOTPRequest,\n    \".io.restorecommerce.user.MfaStatusRequest\": MfaStatusRequest,\n    \".io.restorecommerce.user.MfaStatusResponse\": MfaStatusResponse,\n    \".io.restorecommerce.user.TenantRequest\": TenantRequest,\n    \".io.restorecommerce.user.TenantResponse\": TenantResponse,\n    \".io.restorecommerce.user.OrgIDRequest\": OrgIDRequest,\n    \".io.restorecommerce.user.DeleteUsersByOrgResponse\": DeleteUsersByOrgResponse,\n    \".io.restorecommerce.user.FindRequest\": FindRequest,\n    \".io.restorecommerce.user.FindByTokenRequest\": FindByTokenRequest,\n    \".io.restorecommerce.user.RegisterRequest\": RegisterRequest,\n    \".io.restorecommerce.user.ActivateRequest\": ActivateRequest,\n    \".io.restorecommerce.user.ConfirmUserInvitationRequest\": ConfirmUserInvitationRequest,\n    \".io.restorecommerce.user.SendInvitationEmailRequest\": SendInvitationEmailRequest,\n    \".io.restorecommerce.user.ChangePasswordRequest\": ChangePasswordRequest,\n    \".io.restorecommerce.user.RequestPasswordChangeRequest\": RequestPasswordChangeRequest,\n    \".io.restorecommerce.user.ConfirmPasswordChangeRequest\": ConfirmPasswordChangeRequest,\n    \".io.restorecommerce.user.ChangeEmailRequest\": ChangeEmailRequest,\n    \".io.restorecommerce.user.ConfirmEmailChangeRequest\": ConfirmEmailChangeRequest,\n    \".io.restorecommerce.user.UnregisterRequest\": UnregisterRequest,\n    \".io.restorecommerce.user.SendActivationEmailRequest\": SendActivationEmailRequest,\n    \".io.restorecommerce.user.Deleted\": Deleted,\n    \".io.restorecommerce.user.PasswordChanged\": PasswordChanged,\n    \".io.restorecommerce.user.PasswordChangeRequested\": PasswordChangeRequested,\n    \".io.restorecommerce.user.EmailChangeRequested\": EmailChangeRequested,\n    \".io.restorecommerce.user.EmailChangeConfirmed\": EmailChangeConfirmed,\n    \".io.restorecommerce.user.UserList\": UserList,\n    \".io.restorecommerce.user.UserListWithRoleResponse\": UserListWithRoleResponse,\n    \".io.restorecommerce.user.UserRoleResponse\": UserRoleResponse,\n    \".io.restorecommerce.user.UserListResponse\": UserListResponse,\n    \".io.restorecommerce.user.UserResponse\": UserResponse,\n    \".io.restorecommerce.user.Activate\": Activate,\n    \".io.restorecommerce.user.FindByRoleRequest\": FindByRoleRequest,\n    \".io.restorecommerce.user.User\": User,\n    \".io.restorecommerce.user.UserRole\": UserRole,\n  },\n  dependencies: [\n    protoMetadata1,\n    protoMetadata2,\n    protoMetadata3,\n    protoMetadata4,\n    protoMetadata5,\n    protoMetadata6,\n    protoMetadata7,\n    protoMetadata8,\n    protoMetadata9,\n    protoMetadata10,\n    protoMetadata11,\n    protoMetadata12,\n  ],\n  options: {\n    messages: {\n      \"User\": {\n        options: {\n          \"kafka_subscriber\": KafkaSubscription.decode(\n            Buffer.from(\n              \"CgV1c2VycxIhaW8ucmVzdG9yZWNvbW1lcmNlLnVzZXJzLnJlc291cmNlGgt1c2VyQ3JlYXRlZCILdXNlclVwZGF0ZWQqC3VzZXJEZWxldGVk\",\n              \"base64\",\n            ),\n          ),\n        },\n        fields: {\n          \"timezone_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CiUuaW8ucmVzdG9yZWNvbW1lcmNlLnRpbWV6b25lLlRpbWV6b25lEgttYXN0ZXJfZGF0YRoIdGltZXpvbmUiBFJlYWQqCHRpbWV6b25l\",\n                \"base64\",\n              ),\n            ),\n          },\n          \"locale_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CiEuaW8ucmVzdG9yZWNvbW1lcmNlLmxvY2FsZS5Mb2NhbGUSC21hc3Rlcl9kYXRhGgZsb2NhbGUiBFJlYWQqBmxvY2FsZQ==\",\n                \"base64\",\n              ),\n            ),\n          },\n        },\n      },\n      \"UserRole\": {\n        fields: {\n          \"timezone_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CiUuaW8ucmVzdG9yZWNvbW1lcmNlLnRpbWV6b25lLlRpbWV6b25lEgttYXN0ZXJfZGF0YRoIdGltZXpvbmUiBFJlYWQqCHRpbWV6b25l\",\n                \"base64\",\n              ),\n            ),\n          },\n          \"locale_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CiEuaW8ucmVzdG9yZWNvbW1lcmNlLmxvY2FsZS5Mb2NhbGUSC21hc3Rlcl9kYXRhGgZsb2NhbGUiBFJlYWQqBmxvY2FsZQ==\",\n                \"base64\",\n              ),\n            ),\n          },\n        },\n      },\n    },\n    services: {\n      \"UserService\": {\n        methods: {\n          \"Read\": { \"is_query\": true },\n          \"Find\": { \"is_query\": true },\n          \"FindByRole\": { \"is_query\": true },\n          \"FindByToken\": { \"is_query\": true },\n        },\n      },\n    },\n  },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction toTimestamp(date: Date): Timestamp {\n  const seconds = Math.trunc(date.getTime() / 1_000);\n  const nanos = (date.getTime() % 1_000) * 1_000_000;\n  return { seconds, nanos };\n}\n\nfunction fromTimestamp(t: Timestamp): Date {\n  let millis = (t.seconds || 0) * 1_000;\n  millis += (t.nanos || 0) / 1_000_000;\n  return new globalThis.Date(millis);\n}\n\nfunction fromJsonTimestamp(o: any): Date {\n  if (o instanceof globalThis.Date) {\n    return o;\n  } else if (typeof o === \"string\") {\n    return new globalThis.Date(o);\n  } else {\n    return fromTimestamp(Timestamp.fromJSON(o));\n  }\n}\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/authentication_log.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { protoMetadata as protoMetadata1, Timestamp } from \"../../google/protobuf/timestamp\";\nimport { protoMetadata as protoMetadata4, Subject } from \"./auth\";\nimport { Meta, protoMetadata as protoMetadata3 } from \"./meta\";\nimport { protoMetadata as protoMetadata6 } from \"./options\";\nimport { DeleteRequest, DeleteResponse, protoMetadata as protoMetadata2, ReadRequest } from \"./resource_base\";\nimport { OperationStatus, protoMetadata as protoMetadata5, Status } from \"./status\";\n\nexport const protobufPackage = \"io.restorecommerce.authentication_log\";\n\nexport interface AuthenticationLogList {\n  items?: AuthenticationLog[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface AuthenticationLogListResponse {\n  items?: AuthenticationLogResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface AuthenticationLogResponse {\n  payload?: AuthenticationLog | undefined;\n  status?: Status | undefined;\n}\n\n/** Authentication Log */\nexport interface AuthenticationLog {\n  /** log id */\n  id?: string | undefined;\n  ipv4Address?: string | undefined;\n  ipv6Address?: string | undefined;\n  operatingSystem?: string | undefined;\n  userAgent?:\n    | string\n    | undefined;\n  /** time stamp of login, logout or token update */\n  date?:\n    | Date\n    | undefined;\n  /** login, logout */\n  activity?:\n    | string\n    | undefined;\n  /** meta info */\n  meta?:\n    | Meta\n    | undefined;\n  /** subject id */\n  subjectId?:\n    | string\n    | undefined;\n  /** token name associated with io.restorecommerce.auth.Token.token_name */\n  tokenName?: string | undefined;\n}\n\nexport interface Deleted {\n  id?: string | undefined;\n}\n\nfunction createBaseAuthenticationLogList(): AuthenticationLogList {\n  return {};\n}\n\nexport const AuthenticationLogList: MessageFns<AuthenticationLogList> = {\n  encode(message: AuthenticationLogList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        AuthenticationLog.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): AuthenticationLogList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseAuthenticationLogList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = AuthenticationLog.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): AuthenticationLogList {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => AuthenticationLog.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: AuthenticationLogList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => AuthenticationLog.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<AuthenticationLogList>): AuthenticationLogList {\n    return AuthenticationLogList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<AuthenticationLogList>): AuthenticationLogList {\n    const message = createBaseAuthenticationLogList();\n    message.items = object.items?.map((e) => AuthenticationLog.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseAuthenticationLogListResponse(): AuthenticationLogListResponse {\n  return {};\n}\n\nexport const AuthenticationLogListResponse: MessageFns<AuthenticationLogListResponse> = {\n  encode(message: AuthenticationLogListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        AuthenticationLogResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): AuthenticationLogListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseAuthenticationLogListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = AuthenticationLogResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): AuthenticationLogListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => AuthenticationLogResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: AuthenticationLogListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => AuthenticationLogResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<AuthenticationLogListResponse>): AuthenticationLogListResponse {\n    return AuthenticationLogListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<AuthenticationLogListResponse>): AuthenticationLogListResponse {\n    const message = createBaseAuthenticationLogListResponse();\n    message.items = object.items?.map((e) => AuthenticationLogResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseAuthenticationLogResponse(): AuthenticationLogResponse {\n  return {};\n}\n\nexport const AuthenticationLogResponse: MessageFns<AuthenticationLogResponse> = {\n  encode(message: AuthenticationLogResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      AuthenticationLog.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): AuthenticationLogResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseAuthenticationLogResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = AuthenticationLog.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): AuthenticationLogResponse {\n    return {\n      payload: isSet(object.payload) ? AuthenticationLog.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: AuthenticationLogResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = AuthenticationLog.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<AuthenticationLogResponse>): AuthenticationLogResponse {\n    return AuthenticationLogResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<AuthenticationLogResponse>): AuthenticationLogResponse {\n    const message = createBaseAuthenticationLogResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? AuthenticationLog.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseAuthenticationLog(): AuthenticationLog {\n  return {};\n}\n\nexport const AuthenticationLog: MessageFns<AuthenticationLog> = {\n  encode(message: AuthenticationLog, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.ipv4Address !== undefined) {\n      writer.uint32(18).string(message.ipv4Address);\n    }\n    if (message.ipv6Address !== undefined) {\n      writer.uint32(26).string(message.ipv6Address);\n    }\n    if (message.operatingSystem !== undefined) {\n      writer.uint32(34).string(message.operatingSystem);\n    }\n    if (message.userAgent !== undefined) {\n      writer.uint32(42).string(message.userAgent);\n    }\n    if (message.date !== undefined) {\n      Timestamp.encode(toTimestamp(message.date), writer.uint32(50).fork()).join();\n    }\n    if (message.activity !== undefined) {\n      writer.uint32(58).string(message.activity);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(66).fork()).join();\n    }\n    if (message.subjectId !== undefined) {\n      writer.uint32(74).string(message.subjectId);\n    }\n    if (message.tokenName !== undefined) {\n      writer.uint32(82).string(message.tokenName);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): AuthenticationLog {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseAuthenticationLog();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.ipv4Address = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.ipv6Address = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.operatingSystem = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.userAgent = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.date = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.activity = reader.string();\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.subjectId = reader.string();\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.tokenName = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): AuthenticationLog {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      ipv4Address: isSet(object.ipv4Address) ? globalThis.String(object.ipv4Address) : undefined,\n      ipv6Address: isSet(object.ipv6Address) ? globalThis.String(object.ipv6Address) : undefined,\n      operatingSystem: isSet(object.operatingSystem) ? globalThis.String(object.operatingSystem) : undefined,\n      userAgent: isSet(object.userAgent) ? globalThis.String(object.userAgent) : undefined,\n      date: isSet(object.date) ? fromJsonTimestamp(object.date) : undefined,\n      activity: isSet(object.activity) ? globalThis.String(object.activity) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      subjectId: isSet(object.subjectId) ? globalThis.String(object.subjectId) : undefined,\n      tokenName: isSet(object.tokenName) ? globalThis.String(object.tokenName) : undefined,\n    };\n  },\n\n  toJSON(message: AuthenticationLog): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.ipv4Address !== undefined) {\n      obj.ipv4Address = message.ipv4Address;\n    }\n    if (message.ipv6Address !== undefined) {\n      obj.ipv6Address = message.ipv6Address;\n    }\n    if (message.operatingSystem !== undefined) {\n      obj.operatingSystem = message.operatingSystem;\n    }\n    if (message.userAgent !== undefined) {\n      obj.userAgent = message.userAgent;\n    }\n    if (message.date !== undefined) {\n      obj.date = message.date.toISOString();\n    }\n    if (message.activity !== undefined) {\n      obj.activity = message.activity;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.subjectId !== undefined) {\n      obj.subjectId = message.subjectId;\n    }\n    if (message.tokenName !== undefined) {\n      obj.tokenName = message.tokenName;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<AuthenticationLog>): AuthenticationLog {\n    return AuthenticationLog.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<AuthenticationLog>): AuthenticationLog {\n    const message = createBaseAuthenticationLog();\n    message.id = object.id ?? undefined;\n    message.ipv4Address = object.ipv4Address ?? undefined;\n    message.ipv6Address = object.ipv6Address ?? undefined;\n    message.operatingSystem = object.operatingSystem ?? undefined;\n    message.userAgent = object.userAgent ?? undefined;\n    message.date = object.date ?? undefined;\n    message.activity = object.activity ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.subjectId = object.subjectId ?? undefined;\n    message.tokenName = object.tokenName ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseDeleted(): Deleted {\n  return {};\n}\n\nexport const Deleted: MessageFns<Deleted> = {\n  encode(message: Deleted, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Deleted {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseDeleted();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Deleted {\n    return { id: isSet(object.id) ? globalThis.String(object.id) : undefined };\n  },\n\n  toJSON(message: Deleted): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Deleted>): Deleted {\n    return Deleted.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Deleted>): Deleted {\n    const message = createBaseDeleted();\n    message.id = object.id ?? undefined;\n    return message;\n  },\n};\n\n/** Microservice definition. */\nexport type AuthenticationLogServiceDefinition = typeof AuthenticationLogServiceDefinition;\nexport const AuthenticationLogServiceDefinition = {\n  name: \"AuthenticationLogService\",\n  fullName: \"io.restorecommerce.authentication_log.AuthenticationLogService\",\n  methods: {\n    read: {\n      name: \"Read\",\n      requestType: ReadRequest,\n      requestStream: false,\n      responseType: AuthenticationLogListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    create: {\n      name: \"Create\",\n      requestType: AuthenticationLogList,\n      requestStream: false,\n      responseType: AuthenticationLogListResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n    update: {\n      name: \"Update\",\n      requestType: AuthenticationLogList,\n      requestStream: false,\n      responseType: AuthenticationLogListResponse,\n      responseStream: false,\n      options: {},\n    },\n    upsert: {\n      name: \"Upsert\",\n      requestType: AuthenticationLogList,\n      requestStream: false,\n      responseType: AuthenticationLogListResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface AuthenticationLogServiceImplementation<CallContextExt = {}> {\n  read(\n    request: ReadRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<AuthenticationLogListResponse>>;\n  create(\n    request: AuthenticationLogList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<AuthenticationLogListResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n  update(\n    request: AuthenticationLogList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<AuthenticationLogListResponse>>;\n  upsert(\n    request: AuthenticationLogList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<AuthenticationLogListResponse>>;\n}\n\nexport interface AuthenticationLogServiceClient<CallOptionsExt = {}> {\n  read(\n    request: DeepPartial<ReadRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<AuthenticationLogListResponse>;\n  create(\n    request: DeepPartial<AuthenticationLogList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<AuthenticationLogListResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n  update(\n    request: DeepPartial<AuthenticationLogList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<AuthenticationLogListResponse>;\n  upsert(\n    request: DeepPartial<AuthenticationLogList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<AuthenticationLogListResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/authentication_log.proto\",\n    \"package\": \"io.restorecommerce.authentication_log\",\n    \"dependency\": [\n      \"google/protobuf/timestamp.proto\",\n      \"io/restorecommerce/resource_base.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/options.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"AuthenticationLogList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.authentication_log.AuthenticationLog\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"AuthenticationLogListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.authentication_log.AuthenticationLogResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"AuthenticationLogResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.authentication_log.AuthenticationLog\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"AuthenticationLog\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"ipv4_address\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"ipv4Address\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"ipv6_address\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"ipv6Address\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operating_system\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"operatingSystem\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"user_agent\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"userAgent\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"date\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Timestamp\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"date\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"activity\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"activity\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 8,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 7,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject_id\",\n        \"number\": 9,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 8,\n        \"jsonName\": \"subjectId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"token_name\",\n        \"number\": 10,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 9,\n        \"jsonName\": \"tokenName\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_ipv4_address\", \"options\": undefined },\n        { \"name\": \"_ipv6_address\", \"options\": undefined },\n        { \"name\": \"_operating_system\", \"options\": undefined },\n        { \"name\": \"_user_agent\", \"options\": undefined },\n        { \"name\": \"_date\", \"options\": undefined },\n        { \"name\": \"_activity\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_subject_id\", \"options\": undefined },\n        { \"name\": \"_token_name\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Deleted\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [{\n      \"name\": \"AuthenticationLogService\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ReadRequest\",\n        \"outputType\": \".io.restorecommerce.authentication_log.AuthenticationLogListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.authentication_log.AuthenticationLogList\",\n        \"outputType\": \".io.restorecommerce.authentication_log.AuthenticationLogListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.authentication_log.AuthenticationLogList\",\n        \"outputType\": \".io.restorecommerce.authentication_log.AuthenticationLogListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.authentication_log.AuthenticationLogList\",\n        \"outputType\": \".io.restorecommerce.authentication_log.AuthenticationLogListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [6, 0],\n        \"span\": [14, 0, 22, 1],\n        \"leadingComments\": \"\\n Microservice definition.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 3],\n        \"span\": [44, 0, 55, 1],\n        \"leadingComments\": \"*\\n Authentication Log\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 3, 2, 0],\n        \"span\": [45, 2, 25],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" log id\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 3, 2, 5],\n        \"span\": [50, 2, 46],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" time stamp of login, logout or token update\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 3, 2, 6],\n        \"span\": [51, 2, 31],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" login, logout\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 3, 2, 7],\n        \"span\": [52, 2, 49],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" meta info\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 3, 2, 8],\n        \"span\": [53, 2, 33],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" subject id\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 3, 2, 9],\n        \"span\": [54, 2, 34],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" token name associated with io.restorecommerce.auth.Token.token_name\\n\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.authentication_log.AuthenticationLogList\": AuthenticationLogList,\n    \".io.restorecommerce.authentication_log.AuthenticationLogListResponse\": AuthenticationLogListResponse,\n    \".io.restorecommerce.authentication_log.AuthenticationLogResponse\": AuthenticationLogResponse,\n    \".io.restorecommerce.authentication_log.AuthenticationLog\": AuthenticationLog,\n    \".io.restorecommerce.authentication_log.Deleted\": Deleted,\n  },\n  dependencies: [protoMetadata1, protoMetadata2, protoMetadata3, protoMetadata4, protoMetadata5, protoMetadata6],\n  options: { services: { \"AuthenticationLogService\": { methods: { \"Read\": { \"is_query\": true } } } } },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction toTimestamp(date: Date): Timestamp {\n  const seconds = Math.trunc(date.getTime() / 1_000);\n  const nanos = (date.getTime() % 1_000) * 1_000_000;\n  return { seconds, nanos };\n}\n\nfunction fromTimestamp(t: Timestamp): Date {\n  let millis = (t.seconds || 0) * 1_000;\n  millis += (t.nanos || 0) / 1_000_000;\n  return new globalThis.Date(millis);\n}\n\nfunction fromJsonTimestamp(o: any): Date {\n  if (o instanceof globalThis.Date) {\n    return o;\n  } else if (typeof o === \"string\") {\n    return new globalThis.Date(o);\n  } else {\n    return fromTimestamp(Timestamp.fromJSON(o));\n  }\n}\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/token.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { Any, protoMetadata as protoMetadata2 } from \"../../google/protobuf/any\";\nimport { protoMetadata as protoMetadata4, Timestamp } from \"../../google/protobuf/timestamp\";\nimport { protoMetadata as protoMetadata1, Subject } from \"./auth\";\nimport { protoMetadata as protoMetadata3 } from \"./options\";\n\nexport const protobufPackage = \"io.restorecommerce.token\";\n\nexport interface TokenData {\n  id?: string | undefined;\n  payload?: Any | undefined;\n  expiresIn?: Date | undefined;\n  type?: string | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface Identifier {\n  id?: string | undefined;\n  type?: string | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface GrantId {\n  grantId?: string | undefined;\n  subject?: Subject | undefined;\n}\n\nfunction createBaseTokenData(): TokenData {\n  return {};\n}\n\nexport const TokenData: MessageFns<TokenData> = {\n  encode(message: TokenData, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.payload !== undefined) {\n      Any.encode(message.payload, writer.uint32(18).fork()).join();\n    }\n    if (message.expiresIn !== undefined) {\n      Timestamp.encode(toTimestamp(message.expiresIn), writer.uint32(26).fork()).join();\n    }\n    if (message.type !== undefined) {\n      writer.uint32(34).string(message.type);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(42).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): TokenData {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseTokenData();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.payload = Any.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.expiresIn = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.type = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): TokenData {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      payload: isSet(object.payload) ? Any.fromJSON(object.payload) : undefined,\n      expiresIn: isSet(object.expiresIn) ? fromJsonTimestamp(object.expiresIn) : undefined,\n      type: isSet(object.type) ? globalThis.String(object.type) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: TokenData): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.payload !== undefined) {\n      obj.payload = Any.toJSON(message.payload);\n    }\n    if (message.expiresIn !== undefined) {\n      obj.expiresIn = message.expiresIn.toISOString();\n    }\n    if (message.type !== undefined) {\n      obj.type = message.type;\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<TokenData>): TokenData {\n    return TokenData.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<TokenData>): TokenData {\n    const message = createBaseTokenData();\n    message.id = object.id ?? undefined;\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? Any.fromPartial(object.payload)\n      : undefined;\n    message.expiresIn = object.expiresIn ?? undefined;\n    message.type = object.type ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseIdentifier(): Identifier {\n  return {};\n}\n\nexport const Identifier: MessageFns<Identifier> = {\n  encode(message: Identifier, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.type !== undefined) {\n      writer.uint32(18).string(message.type);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Identifier {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseIdentifier();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.type = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Identifier {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      type: isSet(object.type) ? globalThis.String(object.type) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: Identifier): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.type !== undefined) {\n      obj.type = message.type;\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Identifier>): Identifier {\n    return Identifier.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Identifier>): Identifier {\n    const message = createBaseIdentifier();\n    message.id = object.id ?? undefined;\n    message.type = object.type ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseGrantId(): GrantId {\n  return {};\n}\n\nexport const GrantId: MessageFns<GrantId> = {\n  encode(message: GrantId, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.grantId !== undefined) {\n      writer.uint32(10).string(message.grantId);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GrantId {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGrantId();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.grantId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GrantId {\n    return {\n      grantId: isSet(object.grantId) ? globalThis.String(object.grantId) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: GrantId): unknown {\n    const obj: any = {};\n    if (message.grantId !== undefined) {\n      obj.grantId = message.grantId;\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GrantId>): GrantId {\n    return GrantId.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GrantId>): GrantId {\n    const message = createBaseGrantId();\n    message.grantId = object.grantId ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\n/** Microservice definition. */\nexport type TokenServiceDefinition = typeof TokenServiceDefinition;\nexport const TokenServiceDefinition = {\n  name: \"TokenService\",\n  fullName: \"io.restorecommerce.token.TokenService\",\n  methods: {\n    /** creates or upserts ID_token to `Redis` and returns sucess or failure message */\n    upsert: {\n      name: \"upsert\",\n      requestType: TokenData,\n      requestStream: false,\n      responseType: Any,\n      responseStream: false,\n      options: {},\n    },\n    find: {\n      name: \"find\",\n      requestType: Identifier,\n      requestStream: false,\n      responseType: Any,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    /** removes the id_token from redis */\n    destroy: {\n      name: \"destroy\",\n      requestType: Identifier,\n      requestStream: false,\n      responseType: Any,\n      responseStream: false,\n      options: {},\n    },\n    /** Destroy/Drop/Remove a stored id_token by its grantId property reference. */\n    revokeByGrantId: {\n      name: \"revokeByGrantId\",\n      requestType: GrantId,\n      requestStream: false,\n      responseType: Any,\n      responseStream: false,\n      options: {},\n    },\n    /** Mark a stored id_token as consumed (not yet expired though!). Future finds for this id should be fulfilled with an object containing additional property named \"consumed\" with a truthy value (timestamp, date, boolean, etc). */\n    consume: {\n      name: \"consume\",\n      requestType: Identifier,\n      requestStream: false,\n      responseType: Any,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface TokenServiceImplementation<CallContextExt = {}> {\n  /** creates or upserts ID_token to `Redis` and returns sucess or failure message */\n  upsert(request: TokenData, context: CallContext & CallContextExt): Promise<DeepPartial<Any>>;\n  find(request: Identifier, context: CallContext & CallContextExt): Promise<DeepPartial<Any>>;\n  /** removes the id_token from redis */\n  destroy(request: Identifier, context: CallContext & CallContextExt): Promise<DeepPartial<Any>>;\n  /** Destroy/Drop/Remove a stored id_token by its grantId property reference. */\n  revokeByGrantId(request: GrantId, context: CallContext & CallContextExt): Promise<DeepPartial<Any>>;\n  /** Mark a stored id_token as consumed (not yet expired though!). Future finds for this id should be fulfilled with an object containing additional property named \"consumed\" with a truthy value (timestamp, date, boolean, etc). */\n  consume(request: Identifier, context: CallContext & CallContextExt): Promise<DeepPartial<Any>>;\n}\n\nexport interface TokenServiceClient<CallOptionsExt = {}> {\n  /** creates or upserts ID_token to `Redis` and returns sucess or failure message */\n  upsert(request: DeepPartial<TokenData>, options?: CallOptions & CallOptionsExt): Promise<Any>;\n  find(request: DeepPartial<Identifier>, options?: CallOptions & CallOptionsExt): Promise<Any>;\n  /** removes the id_token from redis */\n  destroy(request: DeepPartial<Identifier>, options?: CallOptions & CallOptionsExt): Promise<Any>;\n  /** Destroy/Drop/Remove a stored id_token by its grantId property reference. */\n  revokeByGrantId(request: DeepPartial<GrantId>, options?: CallOptions & CallOptionsExt): Promise<Any>;\n  /** Mark a stored id_token as consumed (not yet expired though!). Future finds for this id should be fulfilled with an object containing additional property named \"consumed\" with a truthy value (timestamp, date, boolean, etc). */\n  consume(request: DeepPartial<Identifier>, options?: CallOptions & CallOptionsExt): Promise<Any>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/token.proto\",\n    \"package\": \"io.restorecommerce.token\",\n    \"dependency\": [\n      \"io/restorecommerce/auth.proto\",\n      \"google/protobuf/any.proto\",\n      \"io/restorecommerce/options.proto\",\n      \"google/protobuf/timestamp.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"TokenData\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"payload\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Any\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"expires_in\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Timestamp\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"expiresIn\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"type\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"type\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_payload\", \"options\": undefined },\n        { \"name\": \"_expires_in\", \"options\": undefined },\n        { \"name\": \"_type\", \"options\": undefined },\n        { \"name\": \"_subject\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Identifier\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"type\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"type\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }, { \"name\": \"_type\", \"options\": undefined }, {\n        \"name\": \"_subject\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"GrantId\",\n      \"field\": [{\n        \"name\": \"grant_id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"grantId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_grant_id\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [{\n      \"name\": \"TokenService\",\n      \"method\": [{\n        \"name\": \"upsert\",\n        \"inputType\": \".io.restorecommerce.token.TokenData\",\n        \"outputType\": \".google.protobuf.Any\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"find\",\n        \"inputType\": \".io.restorecommerce.token.Identifier\",\n        \"outputType\": \".google.protobuf.Any\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"destroy\",\n        \"inputType\": \".io.restorecommerce.token.Identifier\",\n        \"outputType\": \".google.protobuf.Any\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"revokeByGrantId\",\n        \"inputType\": \".io.restorecommerce.token.GrantId\",\n        \"outputType\": \".google.protobuf.Any\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"consume\",\n        \"inputType\": \".io.restorecommerce.token.Identifier\",\n        \"outputType\": \".google.protobuf.Any\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [6, 0],\n        \"span\": [12, 0, 20, 1],\n        \"leadingComments\": \"\\n Microservice definition.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0, 2, 0],\n        \"span\": [13, 2, 55],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" creates or upserts ID_token to `Redis` and returns sucess or failure message\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0, 2, 2],\n        \"span\": [17, 2, 57],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" removes the id_token from redis\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0, 2, 3],\n        \"span\": [18, 2, 62],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Destroy/Drop/Remove a stored id_token by its grantId property reference.\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0, 2, 4],\n        \"span\": [19, 2, 57],\n        \"leadingComments\": \"\",\n        \"trailingComments\":\n          ' Mark a stored id_token as consumed (not yet expired though!). Future finds for this id should be fulfilled with an object containing additional property named \"consumed\" with a truthy value (timestamp, date, boolean, etc).\\n',\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.token.TokenData\": TokenData,\n    \".io.restorecommerce.token.Identifier\": Identifier,\n    \".io.restorecommerce.token.GrantId\": GrantId,\n  },\n  dependencies: [protoMetadata1, protoMetadata2, protoMetadata3, protoMetadata4],\n  options: { services: { \"TokenService\": { methods: { \"find\": { \"is_query\": true } } } } },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction toTimestamp(date: Date): Timestamp {\n  const seconds = Math.trunc(date.getTime() / 1_000);\n  const nanos = (date.getTime() % 1_000) * 1_000_000;\n  return { seconds, nanos };\n}\n\nfunction fromTimestamp(t: Timestamp): Date {\n  let millis = (t.seconds || 0) * 1_000;\n  millis += (t.nanos || 0) / 1_000_000;\n  return new globalThis.Date(millis);\n}\n\nfunction fromJsonTimestamp(o: any): Date {\n  if (o instanceof globalThis.Date) {\n    return o;\n  } else if (typeof o === \"string\") {\n    return new globalThis.Date(o);\n  } else {\n    return fromTimestamp(Timestamp.fromJSON(o));\n  }\n}\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: google/protobuf/empty.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\n\nexport const protobufPackage = \"google.protobuf\";\n\n/**\n * / A generic empty message that you can re-use to avoid defining duplicated\n * / empty messages in your APIs. A typical example is to use it as the request\n * / or the response type of an API method. For instance:\n * /\n * /     service Foo {\n * /       rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\n * /     }\n * /\n * / The JSON representation for `Empty` is empty JSON object `{}`.\n */\nexport interface Empty {\n}\n\nfunction createBaseEmpty(): Empty {\n  return {};\n}\n\nexport const Empty: MessageFns<Empty> = {\n  encode(_: Empty, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Empty {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseEmpty();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(_: any): Empty {\n    return {};\n  },\n\n  toJSON(_: Empty): unknown {\n    const obj: any = {};\n    return obj;\n  },\n\n  create(base?: DeepPartial<Empty>): Empty {\n    return Empty.fromPartial(base ?? {});\n  },\n  fromPartial(_: DeepPartial<Empty>): Empty {\n    const message = createBaseEmpty();\n    return message;\n  },\n};\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"google/protobuf/empty.proto\",\n    \"package\": \"google.protobuf\",\n    \"dependency\": [],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Empty\",\n      \"field\": [],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [],\n    \"extension\": [],\n    \"options\": {\n      \"javaPackage\": \"com.google.protobuf\",\n      \"javaOuterClassname\": \"EmptyProto\",\n      \"javaMultipleFiles\": true,\n      \"javaGenerateEqualsAndHash\": true,\n      \"javaStringCheckUtf8\": false,\n      \"optimizeFor\": 1,\n      \"goPackage\": \"github.com/golang/protobuf/ptypes/empty\",\n      \"ccGenericServices\": false,\n      \"javaGenericServices\": false,\n      \"pyGenericServices\": false,\n      \"phpGenericServices\": false,\n      \"deprecated\": false,\n      \"ccEnableArenas\": true,\n      \"objcClassPrefix\": \"GPB\",\n      \"csharpNamespace\": \"Google.Protobuf.WellKnownTypes\",\n      \"swiftPrefix\": \"\",\n      \"phpClassPrefix\": \"\",\n      \"phpNamespace\": \"\",\n      \"phpMetadataNamespace\": \"\",\n      \"rubyPackage\": \"\",\n      \"uninterpretedOption\": [],\n    },\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [4, 0],\n        \"span\": [52, 0, 16],\n        \"leadingComments\":\n          \"/ A generic empty message that you can re-use to avoid defining duplicated\\n/ empty messages in your APIs. A typical example is to use it as the request\\n/ or the response type of an API method. For instance:\\n/\\n/     service Foo {\\n/       rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty);\\n/     }\\n/\\n/ The JSON representation for `Empty` is empty JSON object `{}`.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: { \".google.protobuf.Empty\": Empty },\n  dependencies: [],\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/oauth.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { Empty, protoMetadata as protoMetadata5 } from \"../../google/protobuf/empty\";\nimport { protoMetadata as protoMetadata1, Subject, Tokens } from \"./auth\";\nimport { protoMetadata as protoMetadata4 } from \"./options\";\nimport { protoMetadata as protoMetadata3, Status } from \"./status\";\nimport { protoMetadata as protoMetadata2, UserResponse } from \"./user\";\n\nexport const protobufPackage = \"io.restorecommerce.oauth\";\n\nexport interface ServicesResponse {\n  services?: string[] | undefined;\n}\n\nexport interface GenerateLinksResponse {\n  links?: { [key: string]: string } | undefined;\n}\n\nexport interface GenerateLinksResponse_LinksEntry {\n  key: string;\n  value: string;\n}\n\nexport interface ExchangeCodeRequest {\n  service?: string | undefined;\n  code?: string | undefined;\n  state?: string | undefined;\n}\n\nexport interface ExchangeCodeResponse {\n  user?: UserResponse | undefined;\n  email?: string | undefined;\n  token?: Tokens | undefined;\n}\n\nexport interface GetTokenRequest {\n  subject?: Subject | undefined;\n  service?: string | undefined;\n}\n\nexport interface GetTokenResponse {\n  status?: Status | undefined;\n  token?: string | undefined;\n}\n\nfunction createBaseServicesResponse(): ServicesResponse {\n  return {};\n}\n\nexport const ServicesResponse: MessageFns<ServicesResponse> = {\n  encode(message: ServicesResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.services !== undefined && message.services.length !== 0) {\n      for (const v of message.services) {\n        writer.uint32(10).string(v!);\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ServicesResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseServicesResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.services === undefined) {\n            message.services = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.services!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ServicesResponse {\n    return {\n      services: globalThis.Array.isArray(object?.services)\n        ? object.services.map((e: any) => globalThis.String(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: ServicesResponse): unknown {\n    const obj: any = {};\n    if (message.services?.length) {\n      obj.services = message.services;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ServicesResponse>): ServicesResponse {\n    return ServicesResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ServicesResponse>): ServicesResponse {\n    const message = createBaseServicesResponse();\n    message.services = object.services?.map((e) => e) || undefined;\n    return message;\n  },\n};\n\nfunction createBaseGenerateLinksResponse(): GenerateLinksResponse {\n  return {};\n}\n\nexport const GenerateLinksResponse: MessageFns<GenerateLinksResponse> = {\n  encode(message: GenerateLinksResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    Object.entries(message.links || {}).forEach(([key, value]) => {\n      GenerateLinksResponse_LinksEntry.encode({ key: key as any, value }, writer.uint32(10).fork()).join();\n    });\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GenerateLinksResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGenerateLinksResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          const entry1 = GenerateLinksResponse_LinksEntry.decode(reader, reader.uint32());\n          if (entry1.value !== undefined) {\n            if (message.links === undefined) {\n              message.links = {};\n            }\n            message.links![entry1.key] = entry1.value;\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GenerateLinksResponse {\n    return {\n      links: isObject(object.links)\n        ? Object.entries(object.links).reduce<{ [key: string]: string }>((acc, [key, value]) => {\n          acc[key] = String(value);\n          return acc;\n        }, {})\n        : undefined,\n    };\n  },\n\n  toJSON(message: GenerateLinksResponse): unknown {\n    const obj: any = {};\n    if (message.links) {\n      const entries = Object.entries(message.links);\n      if (entries.length > 0) {\n        obj.links = {};\n        entries.forEach(([k, v]) => {\n          obj.links[k] = v;\n        });\n      }\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GenerateLinksResponse>): GenerateLinksResponse {\n    return GenerateLinksResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GenerateLinksResponse>): GenerateLinksResponse {\n    const message = createBaseGenerateLinksResponse();\n    message.links = (object.links === undefined || object.links === null)\n      ? undefined\n      : Object.entries(object.links ?? {}).reduce<{ [key: string]: string }>((acc, [key, value]) => {\n        if (value !== undefined) {\n          acc[key] = globalThis.String(value);\n        }\n        return acc;\n      }, {});\n    return message;\n  },\n};\n\nfunction createBaseGenerateLinksResponse_LinksEntry(): GenerateLinksResponse_LinksEntry {\n  return { key: \"\", value: \"\" };\n}\n\nexport const GenerateLinksResponse_LinksEntry: MessageFns<GenerateLinksResponse_LinksEntry> = {\n  encode(message: GenerateLinksResponse_LinksEntry, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.key !== \"\") {\n      writer.uint32(10).string(message.key);\n    }\n    if (message.value !== \"\") {\n      writer.uint32(18).string(message.value);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GenerateLinksResponse_LinksEntry {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGenerateLinksResponse_LinksEntry();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.key = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.value = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GenerateLinksResponse_LinksEntry {\n    return {\n      key: isSet(object.key) ? globalThis.String(object.key) : \"\",\n      value: isSet(object.value) ? globalThis.String(object.value) : \"\",\n    };\n  },\n\n  toJSON(message: GenerateLinksResponse_LinksEntry): unknown {\n    const obj: any = {};\n    if (message.key !== \"\") {\n      obj.key = message.key;\n    }\n    if (message.value !== \"\") {\n      obj.value = message.value;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GenerateLinksResponse_LinksEntry>): GenerateLinksResponse_LinksEntry {\n    return GenerateLinksResponse_LinksEntry.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GenerateLinksResponse_LinksEntry>): GenerateLinksResponse_LinksEntry {\n    const message = createBaseGenerateLinksResponse_LinksEntry();\n    message.key = object.key ?? \"\";\n    message.value = object.value ?? \"\";\n    return message;\n  },\n};\n\nfunction createBaseExchangeCodeRequest(): ExchangeCodeRequest {\n  return {};\n}\n\nexport const ExchangeCodeRequest: MessageFns<ExchangeCodeRequest> = {\n  encode(message: ExchangeCodeRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.service !== undefined) {\n      writer.uint32(10).string(message.service);\n    }\n    if (message.code !== undefined) {\n      writer.uint32(18).string(message.code);\n    }\n    if (message.state !== undefined) {\n      writer.uint32(26).string(message.state);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ExchangeCodeRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseExchangeCodeRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.service = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.code = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.state = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ExchangeCodeRequest {\n    return {\n      service: isSet(object.service) ? globalThis.String(object.service) : undefined,\n      code: isSet(object.code) ? globalThis.String(object.code) : undefined,\n      state: isSet(object.state) ? globalThis.String(object.state) : undefined,\n    };\n  },\n\n  toJSON(message: ExchangeCodeRequest): unknown {\n    const obj: any = {};\n    if (message.service !== undefined) {\n      obj.service = message.service;\n    }\n    if (message.code !== undefined) {\n      obj.code = message.code;\n    }\n    if (message.state !== undefined) {\n      obj.state = message.state;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ExchangeCodeRequest>): ExchangeCodeRequest {\n    return ExchangeCodeRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ExchangeCodeRequest>): ExchangeCodeRequest {\n    const message = createBaseExchangeCodeRequest();\n    message.service = object.service ?? undefined;\n    message.code = object.code ?? undefined;\n    message.state = object.state ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseExchangeCodeResponse(): ExchangeCodeResponse {\n  return {};\n}\n\nexport const ExchangeCodeResponse: MessageFns<ExchangeCodeResponse> = {\n  encode(message: ExchangeCodeResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.user !== undefined) {\n      UserResponse.encode(message.user, writer.uint32(10).fork()).join();\n    }\n    if (message.email !== undefined) {\n      writer.uint32(18).string(message.email);\n    }\n    if (message.token !== undefined) {\n      Tokens.encode(message.token, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ExchangeCodeResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseExchangeCodeResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.user = UserResponse.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.email = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.token = Tokens.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ExchangeCodeResponse {\n    return {\n      user: isSet(object.user) ? UserResponse.fromJSON(object.user) : undefined,\n      email: isSet(object.email) ? globalThis.String(object.email) : undefined,\n      token: isSet(object.token) ? Tokens.fromJSON(object.token) : undefined,\n    };\n  },\n\n  toJSON(message: ExchangeCodeResponse): unknown {\n    const obj: any = {};\n    if (message.user !== undefined) {\n      obj.user = UserResponse.toJSON(message.user);\n    }\n    if (message.email !== undefined) {\n      obj.email = message.email;\n    }\n    if (message.token !== undefined) {\n      obj.token = Tokens.toJSON(message.token);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ExchangeCodeResponse>): ExchangeCodeResponse {\n    return ExchangeCodeResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ExchangeCodeResponse>): ExchangeCodeResponse {\n    const message = createBaseExchangeCodeResponse();\n    message.user = (object.user !== undefined && object.user !== null)\n      ? UserResponse.fromPartial(object.user)\n      : undefined;\n    message.email = object.email ?? undefined;\n    message.token = (object.token !== undefined && object.token !== null)\n      ? Tokens.fromPartial(object.token)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseGetTokenRequest(): GetTokenRequest {\n  return {};\n}\n\nexport const GetTokenRequest: MessageFns<GetTokenRequest> = {\n  encode(message: GetTokenRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(10).fork()).join();\n    }\n    if (message.service !== undefined) {\n      writer.uint32(18).string(message.service);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetTokenRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetTokenRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.service = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetTokenRequest {\n    return {\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n      service: isSet(object.service) ? globalThis.String(object.service) : undefined,\n    };\n  },\n\n  toJSON(message: GetTokenRequest): unknown {\n    const obj: any = {};\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    if (message.service !== undefined) {\n      obj.service = message.service;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetTokenRequest>): GetTokenRequest {\n    return GetTokenRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetTokenRequest>): GetTokenRequest {\n    const message = createBaseGetTokenRequest();\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    message.service = object.service ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseGetTokenResponse(): GetTokenResponse {\n  return {};\n}\n\nexport const GetTokenResponse: MessageFns<GetTokenResponse> = {\n  encode(message: GetTokenResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(10).fork()).join();\n    }\n    if (message.token !== undefined) {\n      writer.uint32(18).string(message.token);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetTokenResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetTokenResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.token = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetTokenResponse {\n    return {\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n      token: isSet(object.token) ? globalThis.String(object.token) : undefined,\n    };\n  },\n\n  toJSON(message: GetTokenResponse): unknown {\n    const obj: any = {};\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    if (message.token !== undefined) {\n      obj.token = message.token;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetTokenResponse>): GetTokenResponse {\n    return GetTokenResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetTokenResponse>): GetTokenResponse {\n    const message = createBaseGetTokenResponse();\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    message.token = object.token ?? undefined;\n    return message;\n  },\n};\n\nexport type OAuthServiceDefinition = typeof OAuthServiceDefinition;\nexport const OAuthServiceDefinition = {\n  name: \"OAuthService\",\n  fullName: \"io.restorecommerce.oauth.OAuthService\",\n  methods: {\n    generateLinks: {\n      name: \"GenerateLinks\",\n      requestType: Empty,\n      requestStream: false,\n      responseType: GenerateLinksResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    getToken: {\n      name: \"GetToken\",\n      requestType: GetTokenRequest,\n      requestStream: false,\n      responseType: GetTokenResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    availableServices: {\n      name: \"AvailableServices\",\n      requestType: Empty,\n      requestStream: false,\n      responseType: ServicesResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    exchangeCode: {\n      name: \"ExchangeCode\",\n      requestType: ExchangeCodeRequest,\n      requestStream: false,\n      responseType: ExchangeCodeResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface OAuthServiceImplementation<CallContextExt = {}> {\n  generateLinks(request: Empty, context: CallContext & CallContextExt): Promise<DeepPartial<GenerateLinksResponse>>;\n  getToken(request: GetTokenRequest, context: CallContext & CallContextExt): Promise<DeepPartial<GetTokenResponse>>;\n  availableServices(request: Empty, context: CallContext & CallContextExt): Promise<DeepPartial<ServicesResponse>>;\n  exchangeCode(\n    request: ExchangeCodeRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<ExchangeCodeResponse>>;\n}\n\nexport interface OAuthServiceClient<CallOptionsExt = {}> {\n  generateLinks(request: DeepPartial<Empty>, options?: CallOptions & CallOptionsExt): Promise<GenerateLinksResponse>;\n  getToken(request: DeepPartial<GetTokenRequest>, options?: CallOptions & CallOptionsExt): Promise<GetTokenResponse>;\n  availableServices(request: DeepPartial<Empty>, options?: CallOptions & CallOptionsExt): Promise<ServicesResponse>;\n  exchangeCode(\n    request: DeepPartial<ExchangeCodeRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<ExchangeCodeResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/oauth.proto\",\n    \"package\": \"io.restorecommerce.oauth\",\n    \"dependency\": [\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/user.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/options.proto\",\n      \"google/protobuf/empty.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"ServicesResponse\",\n      \"field\": [{\n        \"name\": \"services\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"services\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"GenerateLinksResponse\",\n      \"field\": [{\n        \"name\": \"links\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.oauth.GenerateLinksResponse.LinksEntry\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"links\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [{\n        \"name\": \"LinksEntry\",\n        \"field\": [{\n          \"name\": \"key\",\n          \"number\": 1,\n          \"label\": 1,\n          \"type\": 9,\n          \"typeName\": \"\",\n          \"extendee\": \"\",\n          \"defaultValue\": \"\",\n          \"oneofIndex\": 0,\n          \"jsonName\": \"key\",\n          \"options\": undefined,\n          \"proto3Optional\": false,\n        }, {\n          \"name\": \"value\",\n          \"number\": 2,\n          \"label\": 1,\n          \"type\": 9,\n          \"typeName\": \"\",\n          \"extendee\": \"\",\n          \"defaultValue\": \"\",\n          \"oneofIndex\": 0,\n          \"jsonName\": \"value\",\n          \"options\": undefined,\n          \"proto3Optional\": false,\n        }],\n        \"extension\": [],\n        \"nestedType\": [],\n        \"enumType\": [],\n        \"extensionRange\": [],\n        \"oneofDecl\": [],\n        \"options\": {\n          \"messageSetWireFormat\": false,\n          \"noStandardDescriptorAccessor\": false,\n          \"deprecated\": false,\n          \"mapEntry\": true,\n          \"uninterpretedOption\": [],\n        },\n        \"reservedRange\": [],\n        \"reservedName\": [],\n      }],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ExchangeCodeRequest\",\n      \"field\": [{\n        \"name\": \"service\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"service\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"code\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"code\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"state\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"state\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_service\", \"options\": undefined }, { \"name\": \"_code\", \"options\": undefined }, {\n        \"name\": \"_state\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ExchangeCodeResponse\",\n      \"field\": [{\n        \"name\": \"user\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.user.UserResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"user\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"email\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"email\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"token\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Tokens\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"token\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_user\", \"options\": undefined }, { \"name\": \"_email\", \"options\": undefined }, {\n        \"name\": \"_token\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"GetTokenRequest\",\n      \"field\": [{\n        \"name\": \"subject\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"service\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"service\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_subject\", \"options\": undefined }, { \"name\": \"_service\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"GetTokenResponse\",\n      \"field\": [{\n        \"name\": \"status\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"token\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"token\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_status\", \"options\": undefined }, { \"name\": \"_token\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [{\n      \"name\": \"OAuthService\",\n      \"method\": [{\n        \"name\": \"GenerateLinks\",\n        \"inputType\": \".google.protobuf.Empty\",\n        \"outputType\": \".io.restorecommerce.oauth.GenerateLinksResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"GetToken\",\n        \"inputType\": \".io.restorecommerce.oauth.GetTokenRequest\",\n        \"outputType\": \".io.restorecommerce.oauth.GetTokenResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"AvailableServices\",\n        \"inputType\": \".google.protobuf.Empty\",\n        \"outputType\": \".io.restorecommerce.oauth.ServicesResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"ExchangeCode\",\n        \"inputType\": \".io.restorecommerce.oauth.ExchangeCodeRequest\",\n        \"outputType\": \".io.restorecommerce.oauth.ExchangeCodeResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": { \"location\": [] },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.oauth.ServicesResponse\": ServicesResponse,\n    \".io.restorecommerce.oauth.GenerateLinksResponse\": GenerateLinksResponse,\n    \".io.restorecommerce.oauth.GenerateLinksResponse.LinksEntry\": GenerateLinksResponse_LinksEntry,\n    \".io.restorecommerce.oauth.ExchangeCodeRequest\": ExchangeCodeRequest,\n    \".io.restorecommerce.oauth.ExchangeCodeResponse\": ExchangeCodeResponse,\n    \".io.restorecommerce.oauth.GetTokenRequest\": GetTokenRequest,\n    \".io.restorecommerce.oauth.GetTokenResponse\": GetTokenResponse,\n  },\n  dependencies: [protoMetadata1, protoMetadata2, protoMetadata3, protoMetadata4, protoMetadata5],\n  options: {\n    services: {\n      \"OAuthService\": {\n        methods: {\n          \"GenerateLinks\": { \"is_query\": true },\n          \"GetToken\": { \"is_query\": true },\n          \"AvailableServices\": { \"is_query\": true },\n        },\n      },\n    },\n  },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isObject(value: any): boolean {\n  return typeof value === \"object\" && value !== null;\n}\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "/**\n * @license\n * Lodash <https://lodash.com/>\n * Copyright OpenJS Foundation and other contributors <https://openjsf.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n  /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n  var undefined;\n\n  /** Used as the semantic version number. */\n  var VERSION = '4.17.23';\n\n  /** Used as the size to enable large array optimizations. */\n  var LARGE_ARRAY_SIZE = 200;\n\n  /** Error message constants. */\n  var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n      FUNC_ERROR_TEXT = 'Expected a function',\n      INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n  /** Used to stand-in for `undefined` hash values. */\n  var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n  /** Used as the maximum memoize cache size. */\n  var MAX_MEMOIZE_SIZE = 500;\n\n  /** Used as the internal argument placeholder. */\n  var PLACEHOLDER = '__lodash_placeholder__';\n\n  /** Used to compose bitmasks for cloning. */\n  var CLONE_DEEP_FLAG = 1,\n      CLONE_FLAT_FLAG = 2,\n      CLONE_SYMBOLS_FLAG = 4;\n\n  /** Used to compose bitmasks for value comparisons. */\n  var COMPARE_PARTIAL_FLAG = 1,\n      COMPARE_UNORDERED_FLAG = 2;\n\n  /** Used to compose bitmasks for function metadata. */\n  var WRAP_BIND_FLAG = 1,\n      WRAP_BIND_KEY_FLAG = 2,\n      WRAP_CURRY_BOUND_FLAG = 4,\n      WRAP_CURRY_FLAG = 8,\n      WRAP_CURRY_RIGHT_FLAG = 16,\n      WRAP_PARTIAL_FLAG = 32,\n      WRAP_PARTIAL_RIGHT_FLAG = 64,\n      WRAP_ARY_FLAG = 128,\n      WRAP_REARG_FLAG = 256,\n      WRAP_FLIP_FLAG = 512;\n\n  /** Used as default options for `_.truncate`. */\n  var DEFAULT_TRUNC_LENGTH = 30,\n      DEFAULT_TRUNC_OMISSION = '...';\n\n  /** Used to detect hot functions by number of calls within a span of milliseconds. */\n  var HOT_COUNT = 800,\n      HOT_SPAN = 16;\n\n  /** Used to indicate the type of lazy iteratees. */\n  var LAZY_FILTER_FLAG = 1,\n      LAZY_MAP_FLAG = 2,\n      LAZY_WHILE_FLAG = 3;\n\n  /** Used as references for various `Number` constants. */\n  var INFINITY = 1 / 0,\n      MAX_SAFE_INTEGER = 9007199254740991,\n      MAX_INTEGER = 1.7976931348623157e+308,\n      NAN = 0 / 0;\n\n  /** Used as references for the maximum length and index of an array. */\n  var MAX_ARRAY_LENGTH = 4294967295,\n      MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n      HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n  /** Used to associate wrap methods with their bit flags. */\n  var wrapFlags = [\n    ['ary', WRAP_ARY_FLAG],\n    ['bind', WRAP_BIND_FLAG],\n    ['bindKey', WRAP_BIND_KEY_FLAG],\n    ['curry', WRAP_CURRY_FLAG],\n    ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n    ['flip', WRAP_FLIP_FLAG],\n    ['partial', WRAP_PARTIAL_FLAG],\n    ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n    ['rearg', WRAP_REARG_FLAG]\n  ];\n\n  /** `Object#toString` result references. */\n  var argsTag = '[object Arguments]',\n      arrayTag = '[object Array]',\n      asyncTag = '[object AsyncFunction]',\n      boolTag = '[object Boolean]',\n      dateTag = '[object Date]',\n      domExcTag = '[object DOMException]',\n      errorTag = '[object Error]',\n      funcTag = '[object Function]',\n      genTag = '[object GeneratorFunction]',\n      mapTag = '[object Map]',\n      numberTag = '[object Number]',\n      nullTag = '[object Null]',\n      objectTag = '[object Object]',\n      promiseTag = '[object Promise]',\n      proxyTag = '[object Proxy]',\n      regexpTag = '[object RegExp]',\n      setTag = '[object Set]',\n      stringTag = '[object String]',\n      symbolTag = '[object Symbol]',\n      undefinedTag = '[object Undefined]',\n      weakMapTag = '[object WeakMap]',\n      weakSetTag = '[object WeakSet]';\n\n  var arrayBufferTag = '[object ArrayBuffer]',\n      dataViewTag = '[object DataView]',\n      float32Tag = '[object Float32Array]',\n      float64Tag = '[object Float64Array]',\n      int8Tag = '[object Int8Array]',\n      int16Tag = '[object Int16Array]',\n      int32Tag = '[object Int32Array]',\n      uint8Tag = '[object Uint8Array]',\n      uint8ClampedTag = '[object Uint8ClampedArray]',\n      uint16Tag = '[object Uint16Array]',\n      uint32Tag = '[object Uint32Array]';\n\n  /** Used to match empty string literals in compiled template source. */\n  var reEmptyStringLeading = /\\b__p \\+= '';/g,\n      reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n      reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n  /** Used to match HTML entities and HTML characters. */\n  var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n      reUnescapedHtml = /[&<>\"']/g,\n      reHasEscapedHtml = RegExp(reEscapedHtml.source),\n      reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n  /** Used to match template delimiters. */\n  var reEscape = /<%-([\\s\\S]+?)%>/g,\n      reEvaluate = /<%([\\s\\S]+?)%>/g,\n      reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n  /** Used to match property names within property paths. */\n  var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n      reIsPlainProp = /^\\w*$/,\n      rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n  /**\n   * Used to match `RegExp`\n   * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n   */\n  var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n      reHasRegExpChar = RegExp(reRegExpChar.source);\n\n  /** Used to match leading whitespace. */\n  var reTrimStart = /^\\s+/;\n\n  /** Used to match a single whitespace character. */\n  var reWhitespace = /\\s/;\n\n  /** Used to match wrap detail comments. */\n  var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n      reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n      reSplitDetails = /,? & /;\n\n  /** Used to match words composed of alphanumeric characters. */\n  var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n  /**\n   * Used to validate the `validate` option in `_.template` variable.\n   *\n   * Forbids characters which could potentially change the meaning of the function argument definition:\n   * - \"(),\" (modification of function parameters)\n   * - \"=\" (default value)\n   * - \"[]{}\" (destructuring of function parameters)\n   * - \"/\" (beginning of a comment)\n   * - whitespace\n   */\n  var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n  /** Used to match backslashes in property paths. */\n  var reEscapeChar = /\\\\(\\\\)?/g;\n\n  /**\n   * Used to match\n   * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n   */\n  var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n  /** Used to match `RegExp` flags from their coerced string values. */\n  var reFlags = /\\w*$/;\n\n  /** Used to detect bad signed hexadecimal string values. */\n  var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n  /** Used to detect binary string values. */\n  var reIsBinary = /^0b[01]+$/i;\n\n  /** Used to detect host constructors (Safari). */\n  var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n  /** Used to detect octal string values. */\n  var reIsOctal = /^0o[0-7]+$/i;\n\n  /** Used to detect unsigned integer values. */\n  var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n  /** Used to match Latin Unicode letters (excluding mathematical operators). */\n  var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n  /** Used to ensure capturing order of template delimiters. */\n  var reNoMatch = /($^)/;\n\n  /** Used to match unescaped characters in compiled string literals. */\n  var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n  /** Used to compose unicode character classes. */\n  var rsAstralRange = '\\\\ud800-\\\\udfff',\n      rsComboMarksRange = '\\\\u0300-\\\\u036f',\n      reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n      rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n      rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n      rsDingbatRange = '\\\\u2700-\\\\u27bf',\n      rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n      rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n      rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n      rsPunctuationRange = '\\\\u2000-\\\\u206f',\n      rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n      rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n      rsVarRange = '\\\\ufe0e\\\\ufe0f',\n      rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n  /** Used to compose unicode capture groups. */\n  var rsApos = \"['\\u2019]\",\n      rsAstral = '[' + rsAstralRange + ']',\n      rsBreak = '[' + rsBreakRange + ']',\n      rsCombo = '[' + rsComboRange + ']',\n      rsDigits = '\\\\d+',\n      rsDingbat = '[' + rsDingbatRange + ']',\n      rsLower = '[' + rsLowerRange + ']',\n      rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n      rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n      rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n      rsNonAstral = '[^' + rsAstralRange + ']',\n      rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n      rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n      rsUpper = '[' + rsUpperRange + ']',\n      rsZWJ = '\\\\u200d';\n\n  /** Used to compose unicode regexes. */\n  var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n      rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n      rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n      rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n      reOptMod = rsModifier + '?',\n      rsOptVar = '[' + rsVarRange + ']?',\n      rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n      rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n      rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n      rsSeq = rsOptVar + reOptMod + rsOptJoin,\n      rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n      rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n  /** Used to match apostrophes. */\n  var reApos = RegExp(rsApos, 'g');\n\n  /**\n   * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n   * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n   */\n  var reComboMark = RegExp(rsCombo, 'g');\n\n  /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n  var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n  /** Used to match complex or compound words. */\n  var reUnicodeWord = RegExp([\n    rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n    rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n    rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n    rsUpper + '+' + rsOptContrUpper,\n    rsOrdUpper,\n    rsOrdLower,\n    rsDigits,\n    rsEmoji\n  ].join('|'), 'g');\n\n  /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n  var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboRange + rsVarRange + ']');\n\n  /** Used to detect strings that need a more robust regexp to match words. */\n  var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n  /** Used to assign default `context` object properties. */\n  var contextProps = [\n    'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n    'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n    'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n    'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n    '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n  ];\n\n  /** Used to make template sourceURLs easier to identify. */\n  var templateCounter = -1;\n\n  /** Used to identify `toStringTag` values of typed arrays. */\n  var typedArrayTags = {};\n  typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n  typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n  typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n  typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n  typedArrayTags[uint32Tag] = true;\n  typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n  typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n  typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n  typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n  typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n  typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n  typedArrayTags[setTag] = typedArrayTags[stringTag] =\n  typedArrayTags[weakMapTag] = false;\n\n  /** Used to identify `toStringTag` values supported by `_.clone`. */\n  var cloneableTags = {};\n  cloneableTags[argsTag] = cloneableTags[arrayTag] =\n  cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n  cloneableTags[boolTag] = cloneableTags[dateTag] =\n  cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n  cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n  cloneableTags[int32Tag] = cloneableTags[mapTag] =\n  cloneableTags[numberTag] = cloneableTags[objectTag] =\n  cloneableTags[regexpTag] = cloneableTags[setTag] =\n  cloneableTags[stringTag] = cloneableTags[symbolTag] =\n  cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n  cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n  cloneableTags[errorTag] = cloneableTags[funcTag] =\n  cloneableTags[weakMapTag] = false;\n\n  /** Used to map Latin Unicode letters to basic Latin letters. */\n  var deburredLetters = {\n    // Latin-1 Supplement block.\n    '\\xc0': 'A',  '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n    '\\xe0': 'a',  '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n    '\\xc7': 'C',  '\\xe7': 'c',\n    '\\xd0': 'D',  '\\xf0': 'd',\n    '\\xc8': 'E',  '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n    '\\xe8': 'e',  '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n    '\\xcc': 'I',  '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n    '\\xec': 'i',  '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n    '\\xd1': 'N',  '\\xf1': 'n',\n    '\\xd2': 'O',  '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n    '\\xf2': 'o',  '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n    '\\xd9': 'U',  '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n    '\\xf9': 'u',  '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n    '\\xdd': 'Y',  '\\xfd': 'y', '\\xff': 'y',\n    '\\xc6': 'Ae', '\\xe6': 'ae',\n    '\\xde': 'Th', '\\xfe': 'th',\n    '\\xdf': 'ss',\n    // Latin Extended-A block.\n    '\\u0100': 'A',  '\\u0102': 'A', '\\u0104': 'A',\n    '\\u0101': 'a',  '\\u0103': 'a', '\\u0105': 'a',\n    '\\u0106': 'C',  '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n    '\\u0107': 'c',  '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n    '\\u010e': 'D',  '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n    '\\u0112': 'E',  '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n    '\\u0113': 'e',  '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n    '\\u011c': 'G',  '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n    '\\u011d': 'g',  '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n    '\\u0124': 'H',  '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n    '\\u0128': 'I',  '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n    '\\u0129': 'i',  '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n    '\\u0134': 'J',  '\\u0135': 'j',\n    '\\u0136': 'K',  '\\u0137': 'k', '\\u0138': 'k',\n    '\\u0139': 'L',  '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n    '\\u013a': 'l',  '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n    '\\u0143': 'N',  '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n    '\\u0144': 'n',  '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n    '\\u014c': 'O',  '\\u014e': 'O', '\\u0150': 'O',\n    '\\u014d': 'o',  '\\u014f': 'o', '\\u0151': 'o',\n    '\\u0154': 'R',  '\\u0156': 'R', '\\u0158': 'R',\n    '\\u0155': 'r',  '\\u0157': 'r', '\\u0159': 'r',\n    '\\u015a': 'S',  '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n    '\\u015b': 's',  '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n    '\\u0162': 'T',  '\\u0164': 'T', '\\u0166': 'T',\n    '\\u0163': 't',  '\\u0165': 't', '\\u0167': 't',\n    '\\u0168': 'U',  '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n    '\\u0169': 'u',  '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n    '\\u0174': 'W',  '\\u0175': 'w',\n    '\\u0176': 'Y',  '\\u0177': 'y', '\\u0178': 'Y',\n    '\\u0179': 'Z',  '\\u017b': 'Z', '\\u017d': 'Z',\n    '\\u017a': 'z',  '\\u017c': 'z', '\\u017e': 'z',\n    '\\u0132': 'IJ', '\\u0133': 'ij',\n    '\\u0152': 'Oe', '\\u0153': 'oe',\n    '\\u0149': \"'n\", '\\u017f': 's'\n  };\n\n  /** Used to map characters to HTML entities. */\n  var htmlEscapes = {\n    '&': '&amp;',\n    '<': '&lt;',\n    '>': '&gt;',\n    '\"': '&quot;',\n    \"'\": '&#39;'\n  };\n\n  /** Used to map HTML entities to characters. */\n  var htmlUnescapes = {\n    '&amp;': '&',\n    '&lt;': '<',\n    '&gt;': '>',\n    '&quot;': '\"',\n    '&#39;': \"'\"\n  };\n\n  /** Used to escape characters for inclusion in compiled string literals. */\n  var stringEscapes = {\n    '\\\\': '\\\\',\n    \"'\": \"'\",\n    '\\n': 'n',\n    '\\r': 'r',\n    '\\u2028': 'u2028',\n    '\\u2029': 'u2029'\n  };\n\n  /** Built-in method references without a dependency on `root`. */\n  var freeParseFloat = parseFloat,\n      freeParseInt = parseInt;\n\n  /** Detect free variable `global` from Node.js. */\n  var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n  /** Detect free variable `self`. */\n  var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n  /** Used as a reference to the global object. */\n  var root = freeGlobal || freeSelf || Function('return this')();\n\n  /** Detect free variable `exports`. */\n  var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n  /** Detect free variable `module`. */\n  var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n  /** Detect the popular CommonJS extension `module.exports`. */\n  var moduleExports = freeModule && freeModule.exports === freeExports;\n\n  /** Detect free variable `process` from Node.js. */\n  var freeProcess = moduleExports && freeGlobal.process;\n\n  /** Used to access faster Node.js helpers. */\n  var nodeUtil = (function() {\n    try {\n      // Use `util.types` for Node.js 10+.\n      var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n      if (types) {\n        return types;\n      }\n\n      // Legacy `process.binding('util')` for Node.js < 10.\n      return freeProcess && freeProcess.binding && freeProcess.binding('util');\n    } catch (e) {}\n  }());\n\n  /* Node.js helper references. */\n  var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n      nodeIsDate = nodeUtil && nodeUtil.isDate,\n      nodeIsMap = nodeUtil && nodeUtil.isMap,\n      nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n      nodeIsSet = nodeUtil && nodeUtil.isSet,\n      nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n  /*--------------------------------------------------------------------------*/\n\n  /**\n   * A faster alternative to `Function#apply`, this function invokes `func`\n   * with the `this` binding of `thisArg` and the arguments of `args`.\n   *\n   * @private\n   * @param {Function} func The function to invoke.\n   * @param {*} thisArg The `this` binding of `func`.\n   * @param {Array} args The arguments to invoke `func` with.\n   * @returns {*} Returns the result of `func`.\n   */\n  function apply(func, thisArg, args) {\n    switch (args.length) {\n      case 0: return func.call(thisArg);\n      case 1: return func.call(thisArg, args[0]);\n      case 2: return func.call(thisArg, args[0], args[1]);\n      case 3: return func.call(thisArg, args[0], args[1], args[2]);\n    }\n    return func.apply(thisArg, args);\n  }\n\n  /**\n   * A specialized version of `baseAggregator` for arrays.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} setter The function to set `accumulator` values.\n   * @param {Function} iteratee The iteratee to transform keys.\n   * @param {Object} accumulator The initial aggregated object.\n   * @returns {Function} Returns `accumulator`.\n   */\n  function arrayAggregator(array, setter, iteratee, accumulator) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      var value = array[index];\n      setter(accumulator, value, iteratee(value), array);\n    }\n    return accumulator;\n  }\n\n  /**\n   * A specialized version of `_.forEach` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns `array`.\n   */\n  function arrayEach(array, iteratee) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (iteratee(array[index], index, array) === false) {\n        break;\n      }\n    }\n    return array;\n  }\n\n  /**\n   * A specialized version of `_.forEachRight` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns `array`.\n   */\n  function arrayEachRight(array, iteratee) {\n    var length = array == null ? 0 : array.length;\n\n    while (length--) {\n      if (iteratee(array[length], length, array) === false) {\n        break;\n      }\n    }\n    return array;\n  }\n\n  /**\n   * A specialized version of `_.every` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} predicate The function invoked per iteration.\n   * @returns {boolean} Returns `true` if all elements pass the predicate check,\n   *  else `false`.\n   */\n  function arrayEvery(array, predicate) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (!predicate(array[index], index, array)) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  /**\n   * A specialized version of `_.filter` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} predicate The function invoked per iteration.\n   * @returns {Array} Returns the new filtered array.\n   */\n  function arrayFilter(array, predicate) {\n    var index = -1,\n        length = array == null ? 0 : array.length,\n        resIndex = 0,\n        result = [];\n\n    while (++index < length) {\n      var value = array[index];\n      if (predicate(value, index, array)) {\n        result[resIndex++] = value;\n      }\n    }\n    return result;\n  }\n\n  /**\n   * A specialized version of `_.includes` for arrays without support for\n   * specifying an index to search from.\n   *\n   * @private\n   * @param {Array} [array] The array to inspect.\n   * @param {*} target The value to search for.\n   * @returns {boolean} Returns `true` if `target` is found, else `false`.\n   */\n  function arrayIncludes(array, value) {\n    var length = array == null ? 0 : array.length;\n    return !!length && baseIndexOf(array, value, 0) > -1;\n  }\n\n  /**\n   * This function is like `arrayIncludes` except that it accepts a comparator.\n   *\n   * @private\n   * @param {Array} [array] The array to inspect.\n   * @param {*} target The value to search for.\n   * @param {Function} comparator The comparator invoked per element.\n   * @returns {boolean} Returns `true` if `target` is found, else `false`.\n   */\n  function arrayIncludesWith(array, value, comparator) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (comparator(value, array[index])) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * A specialized version of `_.map` for arrays without support for iteratee\n   * shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns the new mapped array.\n   */\n  function arrayMap(array, iteratee) {\n    var index = -1,\n        length = array == null ? 0 : array.length,\n        result = Array(length);\n\n    while (++index < length) {\n      result[index] = iteratee(array[index], index, array);\n    }\n    return result;\n  }\n\n  /**\n   * Appends the elements of `values` to `array`.\n   *\n   * @private\n   * @param {Array} array The array to modify.\n   * @param {Array} values The values to append.\n   * @returns {Array} Returns `array`.\n   */\n  function arrayPush(array, values) {\n    var index = -1,\n        length = values.length,\n        offset = array.length;\n\n    while (++index < length) {\n      array[offset + index] = values[index];\n    }\n    return array;\n  }\n\n  /**\n   * A specialized version of `_.reduce` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @param {*} [accumulator] The initial value.\n   * @param {boolean} [initAccum] Specify using the first element of `array` as\n   *  the initial value.\n   * @returns {*} Returns the accumulated value.\n   */\n  function arrayReduce(array, iteratee, accumulator, initAccum) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    if (initAccum && length) {\n      accumulator = array[++index];\n    }\n    while (++index < length) {\n      accumulator = iteratee(accumulator, array[index], index, array);\n    }\n    return accumulator;\n  }\n\n  /**\n   * A specialized version of `_.reduceRight` for arrays without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @param {*} [accumulator] The initial value.\n   * @param {boolean} [initAccum] Specify using the last element of `array` as\n   *  the initial value.\n   * @returns {*} Returns the accumulated value.\n   */\n  function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n    var length = array == null ? 0 : array.length;\n    if (initAccum && length) {\n      accumulator = array[--length];\n    }\n    while (length--) {\n      accumulator = iteratee(accumulator, array[length], length, array);\n    }\n    return accumulator;\n  }\n\n  /**\n   * A specialized version of `_.some` for arrays without support for iteratee\n   * shorthands.\n   *\n   * @private\n   * @param {Array} [array] The array to iterate over.\n   * @param {Function} predicate The function invoked per iteration.\n   * @returns {boolean} Returns `true` if any element passes the predicate check,\n   *  else `false`.\n   */\n  function arraySome(array, predicate) {\n    var index = -1,\n        length = array == null ? 0 : array.length;\n\n    while (++index < length) {\n      if (predicate(array[index], index, array)) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * Gets the size of an ASCII `string`.\n   *\n   * @private\n   * @param {string} string The string inspect.\n   * @returns {number} Returns the string size.\n   */\n  var asciiSize = baseProperty('length');\n\n  /**\n   * Converts an ASCII `string` to an array.\n   *\n   * @private\n   * @param {string} string The string to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function asciiToArray(string) {\n    return string.split('');\n  }\n\n  /**\n   * Splits an ASCII `string` into an array of its words.\n   *\n   * @private\n   * @param {string} The string to inspect.\n   * @returns {Array} Returns the words of `string`.\n   */\n  function asciiWords(string) {\n    return string.match(reAsciiWord) || [];\n  }\n\n  /**\n   * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n   * without support for iteratee shorthands, which iterates over `collection`\n   * using `eachFunc`.\n   *\n   * @private\n   * @param {Array|Object} collection The collection to inspect.\n   * @param {Function} predicate The function invoked per iteration.\n   * @param {Function} eachFunc The function to iterate over `collection`.\n   * @returns {*} Returns the found element or its key, else `undefined`.\n   */\n  function baseFindKey(collection, predicate, eachFunc) {\n    var result;\n    eachFunc(collection, function(value, key, collection) {\n      if (predicate(value, key, collection)) {\n        result = key;\n        return false;\n      }\n    });\n    return result;\n  }\n\n  /**\n   * The base implementation of `_.findIndex` and `_.findLastIndex` without\n   * support for iteratee shorthands.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {Function} predicate The function invoked per iteration.\n   * @param {number} fromIndex The index to search from.\n   * @param {boolean} [fromRight] Specify iterating from right to left.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function baseFindIndex(array, predicate, fromIndex, fromRight) {\n    var length = array.length,\n        index = fromIndex + (fromRight ? 1 : -1);\n\n    while ((fromRight ? index-- : ++index < length)) {\n      if (predicate(array[index], index, array)) {\n        return index;\n      }\n    }\n    return -1;\n  }\n\n  /**\n   * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function baseIndexOf(array, value, fromIndex) {\n    return value === value\n      ? strictIndexOf(array, value, fromIndex)\n      : baseFindIndex(array, baseIsNaN, fromIndex);\n  }\n\n  /**\n   * This function is like `baseIndexOf` except that it accepts a comparator.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @param {Function} comparator The comparator invoked per element.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function baseIndexOfWith(array, value, fromIndex, comparator) {\n    var index = fromIndex - 1,\n        length = array.length;\n\n    while (++index < length) {\n      if (comparator(array[index], value)) {\n        return index;\n      }\n    }\n    return -1;\n  }\n\n  /**\n   * The base implementation of `_.isNaN` without support for number objects.\n   *\n   * @private\n   * @param {*} value The value to check.\n   * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n   */\n  function baseIsNaN(value) {\n    return value !== value;\n  }\n\n  /**\n   * The base implementation of `_.mean` and `_.meanBy` without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} array The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {number} Returns the mean.\n   */\n  function baseMean(array, iteratee) {\n    var length = array == null ? 0 : array.length;\n    return length ? (baseSum(array, iteratee) / length) : NAN;\n  }\n\n  /**\n   * The base implementation of `_.property` without support for deep paths.\n   *\n   * @private\n   * @param {string} key The key of the property to get.\n   * @returns {Function} Returns the new accessor function.\n   */\n  function baseProperty(key) {\n    return function(object) {\n      return object == null ? undefined : object[key];\n    };\n  }\n\n  /**\n   * The base implementation of `_.propertyOf` without support for deep paths.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @returns {Function} Returns the new accessor function.\n   */\n  function basePropertyOf(object) {\n    return function(key) {\n      return object == null ? undefined : object[key];\n    };\n  }\n\n  /**\n   * The base implementation of `_.reduce` and `_.reduceRight`, without support\n   * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n   *\n   * @private\n   * @param {Array|Object} collection The collection to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @param {*} accumulator The initial value.\n   * @param {boolean} initAccum Specify using the first or last element of\n   *  `collection` as the initial value.\n   * @param {Function} eachFunc The function to iterate over `collection`.\n   * @returns {*} Returns the accumulated value.\n   */\n  function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n    eachFunc(collection, function(value, index, collection) {\n      accumulator = initAccum\n        ? (initAccum = false, value)\n        : iteratee(accumulator, value, index, collection);\n    });\n    return accumulator;\n  }\n\n  /**\n   * The base implementation of `_.sortBy` which uses `comparer` to define the\n   * sort order of `array` and replaces criteria objects with their corresponding\n   * values.\n   *\n   * @private\n   * @param {Array} array The array to sort.\n   * @param {Function} comparer The function to define sort order.\n   * @returns {Array} Returns `array`.\n   */\n  function baseSortBy(array, comparer) {\n    var length = array.length;\n\n    array.sort(comparer);\n    while (length--) {\n      array[length] = array[length].value;\n    }\n    return array;\n  }\n\n  /**\n   * The base implementation of `_.sum` and `_.sumBy` without support for\n   * iteratee shorthands.\n   *\n   * @private\n   * @param {Array} array The array to iterate over.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {number} Returns the sum.\n   */\n  function baseSum(array, iteratee) {\n    var result,\n        index = -1,\n        length = array.length;\n\n    while (++index < length) {\n      var current = iteratee(array[index]);\n      if (current !== undefined) {\n        result = result === undefined ? current : (result + current);\n      }\n    }\n    return result;\n  }\n\n  /**\n   * The base implementation of `_.times` without support for iteratee shorthands\n   * or max array length checks.\n   *\n   * @private\n   * @param {number} n The number of times to invoke `iteratee`.\n   * @param {Function} iteratee The function invoked per iteration.\n   * @returns {Array} Returns the array of results.\n   */\n  function baseTimes(n, iteratee) {\n    var index = -1,\n        result = Array(n);\n\n    while (++index < n) {\n      result[index] = iteratee(index);\n    }\n    return result;\n  }\n\n  /**\n   * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n   * of key-value pairs for `object` corresponding to the property names of `props`.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @param {Array} props The property names to get values for.\n   * @returns {Object} Returns the key-value pairs.\n   */\n  function baseToPairs(object, props) {\n    return arrayMap(props, function(key) {\n      return [key, object[key]];\n    });\n  }\n\n  /**\n   * The base implementation of `_.trim`.\n   *\n   * @private\n   * @param {string} string The string to trim.\n   * @returns {string} Returns the trimmed string.\n   */\n  function baseTrim(string) {\n    return string\n      ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n      : string;\n  }\n\n  /**\n   * The base implementation of `_.unary` without support for storing metadata.\n   *\n   * @private\n   * @param {Function} func The function to cap arguments for.\n   * @returns {Function} Returns the new capped function.\n   */\n  function baseUnary(func) {\n    return function(value) {\n      return func(value);\n    };\n  }\n\n  /**\n   * The base implementation of `_.values` and `_.valuesIn` which creates an\n   * array of `object` property values corresponding to the property names\n   * of `props`.\n   *\n   * @private\n   * @param {Object} object The object to query.\n   * @param {Array} props The property names to get values for.\n   * @returns {Object} Returns the array of property values.\n   */\n  function baseValues(object, props) {\n    return arrayMap(props, function(key) {\n      return object[key];\n    });\n  }\n\n  /**\n   * Checks if a `cache` value for `key` exists.\n   *\n   * @private\n   * @param {Object} cache The cache to query.\n   * @param {string} key The key of the entry to check.\n   * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n   */\n  function cacheHas(cache, key) {\n    return cache.has(key);\n  }\n\n  /**\n   * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n   * that is not found in the character symbols.\n   *\n   * @private\n   * @param {Array} strSymbols The string symbols to inspect.\n   * @param {Array} chrSymbols The character symbols to find.\n   * @returns {number} Returns the index of the first unmatched string symbol.\n   */\n  function charsStartIndex(strSymbols, chrSymbols) {\n    var index = -1,\n        length = strSymbols.length;\n\n    while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n    return index;\n  }\n\n  /**\n   * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n   * that is not found in the character symbols.\n   *\n   * @private\n   * @param {Array} strSymbols The string symbols to inspect.\n   * @param {Array} chrSymbols The character symbols to find.\n   * @returns {number} Returns the index of the last unmatched string symbol.\n   */\n  function charsEndIndex(strSymbols, chrSymbols) {\n    var index = strSymbols.length;\n\n    while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n    return index;\n  }\n\n  /**\n   * Gets the number of `placeholder` occurrences in `array`.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} placeholder The placeholder to search for.\n   * @returns {number} Returns the placeholder count.\n   */\n  function countHolders(array, placeholder) {\n    var length = array.length,\n        result = 0;\n\n    while (length--) {\n      if (array[length] === placeholder) {\n        ++result;\n      }\n    }\n    return result;\n  }\n\n  /**\n   * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n   * letters to basic Latin letters.\n   *\n   * @private\n   * @param {string} letter The matched letter to deburr.\n   * @returns {string} Returns the deburred letter.\n   */\n  var deburrLetter = basePropertyOf(deburredLetters);\n\n  /**\n   * Used by `_.escape` to convert characters to HTML entities.\n   *\n   * @private\n   * @param {string} chr The matched character to escape.\n   * @returns {string} Returns the escaped character.\n   */\n  var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n  /**\n   * Used by `_.template` to escape characters for inclusion in compiled string literals.\n   *\n   * @private\n   * @param {string} chr The matched character to escape.\n   * @returns {string} Returns the escaped character.\n   */\n  function escapeStringChar(chr) {\n    return '\\\\' + stringEscapes[chr];\n  }\n\n  /**\n   * Gets the value at `key` of `object`.\n   *\n   * @private\n   * @param {Object} [object] The object to query.\n   * @param {string} key The key of the property to get.\n   * @returns {*} Returns the property value.\n   */\n  function getValue(object, key) {\n    return object == null ? undefined : object[key];\n  }\n\n  /**\n   * Checks if `string` contains Unicode symbols.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n   */\n  function hasUnicode(string) {\n    return reHasUnicode.test(string);\n  }\n\n  /**\n   * Checks if `string` contains a word composed of Unicode symbols.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {boolean} Returns `true` if a word is found, else `false`.\n   */\n  function hasUnicodeWord(string) {\n    return reHasUnicodeWord.test(string);\n  }\n\n  /**\n   * Converts `iterator` to an array.\n   *\n   * @private\n   * @param {Object} iterator The iterator to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function iteratorToArray(iterator) {\n    var data,\n        result = [];\n\n    while (!(data = iterator.next()).done) {\n      result.push(data.value);\n    }\n    return result;\n  }\n\n  /**\n   * Converts `map` to its key-value pairs.\n   *\n   * @private\n   * @param {Object} map The map to convert.\n   * @returns {Array} Returns the key-value pairs.\n   */\n  function mapToArray(map) {\n    var index = -1,\n        result = Array(map.size);\n\n    map.forEach(function(value, key) {\n      result[++index] = [key, value];\n    });\n    return result;\n  }\n\n  /**\n   * Creates a unary function that invokes `func` with its argument transformed.\n   *\n   * @private\n   * @param {Function} func The function to wrap.\n   * @param {Function} transform The argument transform.\n   * @returns {Function} Returns the new function.\n   */\n  function overArg(func, transform) {\n    return function(arg) {\n      return func(transform(arg));\n    };\n  }\n\n  /**\n   * Replaces all `placeholder` elements in `array` with an internal placeholder\n   * and returns an array of their indexes.\n   *\n   * @private\n   * @param {Array} array The array to modify.\n   * @param {*} placeholder The placeholder to replace.\n   * @returns {Array} Returns the new array of placeholder indexes.\n   */\n  function replaceHolders(array, placeholder) {\n    var index = -1,\n        length = array.length,\n        resIndex = 0,\n        result = [];\n\n    while (++index < length) {\n      var value = array[index];\n      if (value === placeholder || value === PLACEHOLDER) {\n        array[index] = PLACEHOLDER;\n        result[resIndex++] = index;\n      }\n    }\n    return result;\n  }\n\n  /**\n   * Converts `set` to an array of its values.\n   *\n   * @private\n   * @param {Object} set The set to convert.\n   * @returns {Array} Returns the values.\n   */\n  function setToArray(set) {\n    var index = -1,\n        result = Array(set.size);\n\n    set.forEach(function(value) {\n      result[++index] = value;\n    });\n    return result;\n  }\n\n  /**\n   * Converts `set` to its value-value pairs.\n   *\n   * @private\n   * @param {Object} set The set to convert.\n   * @returns {Array} Returns the value-value pairs.\n   */\n  function setToPairs(set) {\n    var index = -1,\n        result = Array(set.size);\n\n    set.forEach(function(value) {\n      result[++index] = [value, value];\n    });\n    return result;\n  }\n\n  /**\n   * A specialized version of `_.indexOf` which performs strict equality\n   * comparisons of values, i.e. `===`.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function strictIndexOf(array, value, fromIndex) {\n    var index = fromIndex - 1,\n        length = array.length;\n\n    while (++index < length) {\n      if (array[index] === value) {\n        return index;\n      }\n    }\n    return -1;\n  }\n\n  /**\n   * A specialized version of `_.lastIndexOf` which performs strict equality\n   * comparisons of values, i.e. `===`.\n   *\n   * @private\n   * @param {Array} array The array to inspect.\n   * @param {*} value The value to search for.\n   * @param {number} fromIndex The index to search from.\n   * @returns {number} Returns the index of the matched value, else `-1`.\n   */\n  function strictLastIndexOf(array, value, fromIndex) {\n    var index = fromIndex + 1;\n    while (index--) {\n      if (array[index] === value) {\n        return index;\n      }\n    }\n    return index;\n  }\n\n  /**\n   * Gets the number of symbols in `string`.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {number} Returns the string size.\n   */\n  function stringSize(string) {\n    return hasUnicode(string)\n      ? unicodeSize(string)\n      : asciiSize(string);\n  }\n\n  /**\n   * Converts `string` to an array.\n   *\n   * @private\n   * @param {string} string The string to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function stringToArray(string) {\n    return hasUnicode(string)\n      ? unicodeToArray(string)\n      : asciiToArray(string);\n  }\n\n  /**\n   * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n   * character of `string`.\n   *\n   * @private\n   * @param {string} string The string to inspect.\n   * @returns {number} Returns the index of the last non-whitespace character.\n   */\n  function trimmedEndIndex(string) {\n    var index = string.length;\n\n    while (index-- && reWhitespace.test(string.charAt(index))) {}\n    return index;\n  }\n\n  /**\n   * Used by `_.unescape` to convert HTML entities to characters.\n   *\n   * @private\n   * @param {string} chr The matched character to unescape.\n   * @returns {string} Returns the unescaped character.\n   */\n  var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n  /**\n   * Gets the size of a Unicode `string`.\n   *\n   * @private\n   * @param {string} string The string inspect.\n   * @returns {number} Returns the string size.\n   */\n  function unicodeSize(string) {\n    var result = reUnicode.lastIndex = 0;\n    while (reUnicode.test(string)) {\n      ++result;\n    }\n    return result;\n  }\n\n  /**\n   * Converts a Unicode `string` to an array.\n   *\n   * @private\n   * @param {string} string The string to convert.\n   * @returns {Array} Returns the converted array.\n   */\n  function unicodeToArray(string) {\n    return string.match(reUnicode) || [];\n  }\n\n  /**\n   * Splits a Unicode `string` into an array of its words.\n   *\n   * @private\n   * @param {string} The string to inspect.\n   * @returns {Array} Returns the words of `string`.\n   */\n  function unicodeWords(string) {\n    return string.match(reUnicodeWord) || [];\n  }\n\n  /*--------------------------------------------------------------------------*/\n\n  /**\n   * Create a new pristine `lodash` function using the `context` object.\n   *\n   * @static\n   * @memberOf _\n   * @since 1.1.0\n   * @category Util\n   * @param {Object} [context=root] The context object.\n   * @returns {Function} Returns a new `lodash` function.\n   * @example\n   *\n   * _.mixin({ 'foo': _.constant('foo') });\n   *\n   * var lodash = _.runInContext();\n   * lodash.mixin({ 'bar': lodash.constant('bar') });\n   *\n   * _.isFunction(_.foo);\n   * // => true\n   * _.isFunction(_.bar);\n   * // => false\n   *\n   * lodash.isFunction(lodash.foo);\n   * // => false\n   * lodash.isFunction(lodash.bar);\n   * // => true\n   *\n   * // Create a suped-up `defer` in Node.js.\n   * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n   */\n  var runInContext = (function runInContext(context) {\n    context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n    /** Built-in constructor references. */\n    var Array = context.Array,\n        Date = context.Date,\n        Error = context.Error,\n        Function = context.Function,\n        Math = context.Math,\n        Object = context.Object,\n        RegExp = context.RegExp,\n        String = context.String,\n        TypeError = context.TypeError;\n\n    /** Used for built-in method references. */\n    var arrayProto = Array.prototype,\n        funcProto = Function.prototype,\n        objectProto = Object.prototype;\n\n    /** Used to detect overreaching core-js shims. */\n    var coreJsData = context['__core-js_shared__'];\n\n    /** Used to resolve the decompiled source of functions. */\n    var funcToString = funcProto.toString;\n\n    /** Used to check objects for own properties. */\n    var hasOwnProperty = objectProto.hasOwnProperty;\n\n    /** Used to generate unique IDs. */\n    var idCounter = 0;\n\n    /** Used to detect methods masquerading as native. */\n    var maskSrcKey = (function() {\n      var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n      return uid ? ('Symbol(src)_1.' + uid) : '';\n    }());\n\n    /**\n     * Used to resolve the\n     * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n     * of values.\n     */\n    var nativeObjectToString = objectProto.toString;\n\n    /** Used to infer the `Object` constructor. */\n    var objectCtorString = funcToString.call(Object);\n\n    /** Used to restore the original `_` reference in `_.noConflict`. */\n    var oldDash = root._;\n\n    /** Used to detect if a method is native. */\n    var reIsNative = RegExp('^' +\n      funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n      .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n    );\n\n    /** Built-in value references. */\n    var Buffer = moduleExports ? context.Buffer : undefined,\n        Symbol = context.Symbol,\n        Uint8Array = context.Uint8Array,\n        allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n        getPrototype = overArg(Object.getPrototypeOf, Object),\n        objectCreate = Object.create,\n        propertyIsEnumerable = objectProto.propertyIsEnumerable,\n        splice = arrayProto.splice,\n        spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n        symIterator = Symbol ? Symbol.iterator : undefined,\n        symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n    var defineProperty = (function() {\n      try {\n        var func = getNative(Object, 'defineProperty');\n        func({}, '', {});\n        return func;\n      } catch (e) {}\n    }());\n\n    /** Mocked built-ins. */\n    var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n        ctxNow = Date && Date.now !== root.Date.now && Date.now,\n        ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n    /* Built-in method references for those with the same name as other `lodash` methods. */\n    var nativeCeil = Math.ceil,\n        nativeFloor = Math.floor,\n        nativeGetSymbols = Object.getOwnPropertySymbols,\n        nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n        nativeIsFinite = context.isFinite,\n        nativeJoin = arrayProto.join,\n        nativeKeys = overArg(Object.keys, Object),\n        nativeMax = Math.max,\n        nativeMin = Math.min,\n        nativeNow = Date.now,\n        nativeParseInt = context.parseInt,\n        nativeRandom = Math.random,\n        nativeReverse = arrayProto.reverse;\n\n    /* Built-in method references that are verified to be native. */\n    var DataView = getNative(context, 'DataView'),\n        Map = getNative(context, 'Map'),\n        Promise = getNative(context, 'Promise'),\n        Set = getNative(context, 'Set'),\n        WeakMap = getNative(context, 'WeakMap'),\n        nativeCreate = getNative(Object, 'create');\n\n    /** Used to store function metadata. */\n    var metaMap = WeakMap && new WeakMap;\n\n    /** Used to lookup unminified function names. */\n    var realNames = {};\n\n    /** Used to detect maps, sets, and weakmaps. */\n    var dataViewCtorString = toSource(DataView),\n        mapCtorString = toSource(Map),\n        promiseCtorString = toSource(Promise),\n        setCtorString = toSource(Set),\n        weakMapCtorString = toSource(WeakMap);\n\n    /** Used to convert symbols to primitives and strings. */\n    var symbolProto = Symbol ? Symbol.prototype : undefined,\n        symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n        symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a `lodash` object which wraps `value` to enable implicit method\n     * chain sequences. Methods that operate on and return arrays, collections,\n     * and functions can be chained together. Methods that retrieve a single value\n     * or may return a primitive value will automatically end the chain sequence\n     * and return the unwrapped value. Otherwise, the value must be unwrapped\n     * with `_#value`.\n     *\n     * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n     * enabled using `_.chain`.\n     *\n     * The execution of chained methods is lazy, that is, it's deferred until\n     * `_#value` is implicitly or explicitly called.\n     *\n     * Lazy evaluation allows several methods to support shortcut fusion.\n     * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n     * the creation of intermediate arrays and can greatly reduce the number of\n     * iteratee executions. Sections of a chain sequence qualify for shortcut\n     * fusion if the section is applied to an array and iteratees accept only\n     * one argument. The heuristic for whether a section qualifies for shortcut\n     * fusion is subject to change.\n     *\n     * Chaining is supported in custom builds as long as the `_#value` method is\n     * directly or indirectly included in the build.\n     *\n     * In addition to lodash methods, wrappers have `Array` and `String` methods.\n     *\n     * The wrapper `Array` methods are:\n     * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n     *\n     * The wrapper `String` methods are:\n     * `replace` and `split`\n     *\n     * The wrapper methods that support shortcut fusion are:\n     * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n     * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n     * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n     *\n     * The chainable wrapper methods are:\n     * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n     * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n     * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n     * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n     * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n     * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n     * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n     * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n     * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n     * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n     * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n     * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n     * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n     * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n     * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n     * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n     * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n     * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n     * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n     * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n     * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n     * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n     * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n     * `zipObject`, `zipObjectDeep`, and `zipWith`\n     *\n     * The wrapper methods that are **not** chainable by default are:\n     * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n     * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n     * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n     * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n     * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n     * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n     * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n     * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n     * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n     * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n     * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n     * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n     * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n     * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n     * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n     * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n     * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n     * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n     * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n     * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n     * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n     * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n     * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n     * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n     * `upperFirst`, `value`, and `words`\n     *\n     * @name _\n     * @constructor\n     * @category Seq\n     * @param {*} value The value to wrap in a `lodash` instance.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var wrapped = _([1, 2, 3]);\n     *\n     * // Returns an unwrapped value.\n     * wrapped.reduce(_.add);\n     * // => 6\n     *\n     * // Returns a wrapped value.\n     * var squares = wrapped.map(square);\n     *\n     * _.isArray(squares);\n     * // => false\n     *\n     * _.isArray(squares.value());\n     * // => true\n     */\n    function lodash(value) {\n      if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n        if (value instanceof LodashWrapper) {\n          return value;\n        }\n        if (hasOwnProperty.call(value, '__wrapped__')) {\n          return wrapperClone(value);\n        }\n      }\n      return new LodashWrapper(value);\n    }\n\n    /**\n     * The base implementation of `_.create` without support for assigning\n     * properties to the created object.\n     *\n     * @private\n     * @param {Object} proto The object to inherit from.\n     * @returns {Object} Returns the new object.\n     */\n    var baseCreate = (function() {\n      function object() {}\n      return function(proto) {\n        if (!isObject(proto)) {\n          return {};\n        }\n        if (objectCreate) {\n          return objectCreate(proto);\n        }\n        object.prototype = proto;\n        var result = new object;\n        object.prototype = undefined;\n        return result;\n      };\n    }());\n\n    /**\n     * The function whose prototype chain sequence wrappers inherit from.\n     *\n     * @private\n     */\n    function baseLodash() {\n      // No operation performed.\n    }\n\n    /**\n     * The base constructor for creating `lodash` wrapper objects.\n     *\n     * @private\n     * @param {*} value The value to wrap.\n     * @param {boolean} [chainAll] Enable explicit method chain sequences.\n     */\n    function LodashWrapper(value, chainAll) {\n      this.__wrapped__ = value;\n      this.__actions__ = [];\n      this.__chain__ = !!chainAll;\n      this.__index__ = 0;\n      this.__values__ = undefined;\n    }\n\n    /**\n     * By default, the template delimiters used by lodash are like those in\n     * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n     * following template settings to use alternative delimiters.\n     *\n     * @static\n     * @memberOf _\n     * @type {Object}\n     */\n    lodash.templateSettings = {\n\n      /**\n       * Used to detect `data` property values to be HTML-escaped.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'escape': reEscape,\n\n      /**\n       * Used to detect code to be evaluated.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'evaluate': reEvaluate,\n\n      /**\n       * Used to detect `data` property values to inject.\n       *\n       * @memberOf _.templateSettings\n       * @type {RegExp}\n       */\n      'interpolate': reInterpolate,\n\n      /**\n       * Used to reference the data object in the template text.\n       *\n       * @memberOf _.templateSettings\n       * @type {string}\n       */\n      'variable': '',\n\n      /**\n       * Used to import variables into the compiled template.\n       *\n       * @memberOf _.templateSettings\n       * @type {Object}\n       */\n      'imports': {\n\n        /**\n         * A reference to the `lodash` function.\n         *\n         * @memberOf _.templateSettings.imports\n         * @type {Function}\n         */\n        '_': lodash\n      }\n    };\n\n    // Ensure wrappers are instances of `baseLodash`.\n    lodash.prototype = baseLodash.prototype;\n    lodash.prototype.constructor = lodash;\n\n    LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n    LodashWrapper.prototype.constructor = LodashWrapper;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n     *\n     * @private\n     * @constructor\n     * @param {*} value The value to wrap.\n     */\n    function LazyWrapper(value) {\n      this.__wrapped__ = value;\n      this.__actions__ = [];\n      this.__dir__ = 1;\n      this.__filtered__ = false;\n      this.__iteratees__ = [];\n      this.__takeCount__ = MAX_ARRAY_LENGTH;\n      this.__views__ = [];\n    }\n\n    /**\n     * Creates a clone of the lazy wrapper object.\n     *\n     * @private\n     * @name clone\n     * @memberOf LazyWrapper\n     * @returns {Object} Returns the cloned `LazyWrapper` object.\n     */\n    function lazyClone() {\n      var result = new LazyWrapper(this.__wrapped__);\n      result.__actions__ = copyArray(this.__actions__);\n      result.__dir__ = this.__dir__;\n      result.__filtered__ = this.__filtered__;\n      result.__iteratees__ = copyArray(this.__iteratees__);\n      result.__takeCount__ = this.__takeCount__;\n      result.__views__ = copyArray(this.__views__);\n      return result;\n    }\n\n    /**\n     * Reverses the direction of lazy iteration.\n     *\n     * @private\n     * @name reverse\n     * @memberOf LazyWrapper\n     * @returns {Object} Returns the new reversed `LazyWrapper` object.\n     */\n    function lazyReverse() {\n      if (this.__filtered__) {\n        var result = new LazyWrapper(this);\n        result.__dir__ = -1;\n        result.__filtered__ = true;\n      } else {\n        result = this.clone();\n        result.__dir__ *= -1;\n      }\n      return result;\n    }\n\n    /**\n     * Extracts the unwrapped value from its lazy wrapper.\n     *\n     * @private\n     * @name value\n     * @memberOf LazyWrapper\n     * @returns {*} Returns the unwrapped value.\n     */\n    function lazyValue() {\n      var array = this.__wrapped__.value(),\n          dir = this.__dir__,\n          isArr = isArray(array),\n          isRight = dir < 0,\n          arrLength = isArr ? array.length : 0,\n          view = getView(0, arrLength, this.__views__),\n          start = view.start,\n          end = view.end,\n          length = end - start,\n          index = isRight ? end : (start - 1),\n          iteratees = this.__iteratees__,\n          iterLength = iteratees.length,\n          resIndex = 0,\n          takeCount = nativeMin(length, this.__takeCount__);\n\n      if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n        return baseWrapperValue(array, this.__actions__);\n      }\n      var result = [];\n\n      outer:\n      while (length-- && resIndex < takeCount) {\n        index += dir;\n\n        var iterIndex = -1,\n            value = array[index];\n\n        while (++iterIndex < iterLength) {\n          var data = iteratees[iterIndex],\n              iteratee = data.iteratee,\n              type = data.type,\n              computed = iteratee(value);\n\n          if (type == LAZY_MAP_FLAG) {\n            value = computed;\n          } else if (!computed) {\n            if (type == LAZY_FILTER_FLAG) {\n              continue outer;\n            } else {\n              break outer;\n            }\n          }\n        }\n        result[resIndex++] = value;\n      }\n      return result;\n    }\n\n    // Ensure `LazyWrapper` is an instance of `baseLodash`.\n    LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n    LazyWrapper.prototype.constructor = LazyWrapper;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a hash object.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function Hash(entries) {\n      var index = -1,\n          length = entries == null ? 0 : entries.length;\n\n      this.clear();\n      while (++index < length) {\n        var entry = entries[index];\n        this.set(entry[0], entry[1]);\n      }\n    }\n\n    /**\n     * Removes all key-value entries from the hash.\n     *\n     * @private\n     * @name clear\n     * @memberOf Hash\n     */\n    function hashClear() {\n      this.__data__ = nativeCreate ? nativeCreate(null) : {};\n      this.size = 0;\n    }\n\n    /**\n     * Removes `key` and its value from the hash.\n     *\n     * @private\n     * @name delete\n     * @memberOf Hash\n     * @param {Object} hash The hash to modify.\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function hashDelete(key) {\n      var result = this.has(key) && delete this.__data__[key];\n      this.size -= result ? 1 : 0;\n      return result;\n    }\n\n    /**\n     * Gets the hash value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf Hash\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function hashGet(key) {\n      var data = this.__data__;\n      if (nativeCreate) {\n        var result = data[key];\n        return result === HASH_UNDEFINED ? undefined : result;\n      }\n      return hasOwnProperty.call(data, key) ? data[key] : undefined;\n    }\n\n    /**\n     * Checks if a hash value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf Hash\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function hashHas(key) {\n      var data = this.__data__;\n      return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n    }\n\n    /**\n     * Sets the hash `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf Hash\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the hash instance.\n     */\n    function hashSet(key, value) {\n      var data = this.__data__;\n      this.size += this.has(key) ? 0 : 1;\n      data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n      return this;\n    }\n\n    // Add methods to `Hash`.\n    Hash.prototype.clear = hashClear;\n    Hash.prototype['delete'] = hashDelete;\n    Hash.prototype.get = hashGet;\n    Hash.prototype.has = hashHas;\n    Hash.prototype.set = hashSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an list cache object.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function ListCache(entries) {\n      var index = -1,\n          length = entries == null ? 0 : entries.length;\n\n      this.clear();\n      while (++index < length) {\n        var entry = entries[index];\n        this.set(entry[0], entry[1]);\n      }\n    }\n\n    /**\n     * Removes all key-value entries from the list cache.\n     *\n     * @private\n     * @name clear\n     * @memberOf ListCache\n     */\n    function listCacheClear() {\n      this.__data__ = [];\n      this.size = 0;\n    }\n\n    /**\n     * Removes `key` and its value from the list cache.\n     *\n     * @private\n     * @name delete\n     * @memberOf ListCache\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function listCacheDelete(key) {\n      var data = this.__data__,\n          index = assocIndexOf(data, key);\n\n      if (index < 0) {\n        return false;\n      }\n      var lastIndex = data.length - 1;\n      if (index == lastIndex) {\n        data.pop();\n      } else {\n        splice.call(data, index, 1);\n      }\n      --this.size;\n      return true;\n    }\n\n    /**\n     * Gets the list cache value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf ListCache\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function listCacheGet(key) {\n      var data = this.__data__,\n          index = assocIndexOf(data, key);\n\n      return index < 0 ? undefined : data[index][1];\n    }\n\n    /**\n     * Checks if a list cache value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf ListCache\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function listCacheHas(key) {\n      return assocIndexOf(this.__data__, key) > -1;\n    }\n\n    /**\n     * Sets the list cache `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf ListCache\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the list cache instance.\n     */\n    function listCacheSet(key, value) {\n      var data = this.__data__,\n          index = assocIndexOf(data, key);\n\n      if (index < 0) {\n        ++this.size;\n        data.push([key, value]);\n      } else {\n        data[index][1] = value;\n      }\n      return this;\n    }\n\n    // Add methods to `ListCache`.\n    ListCache.prototype.clear = listCacheClear;\n    ListCache.prototype['delete'] = listCacheDelete;\n    ListCache.prototype.get = listCacheGet;\n    ListCache.prototype.has = listCacheHas;\n    ListCache.prototype.set = listCacheSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a map cache object to store key-value pairs.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function MapCache(entries) {\n      var index = -1,\n          length = entries == null ? 0 : entries.length;\n\n      this.clear();\n      while (++index < length) {\n        var entry = entries[index];\n        this.set(entry[0], entry[1]);\n      }\n    }\n\n    /**\n     * Removes all key-value entries from the map.\n     *\n     * @private\n     * @name clear\n     * @memberOf MapCache\n     */\n    function mapCacheClear() {\n      this.size = 0;\n      this.__data__ = {\n        'hash': new Hash,\n        'map': new (Map || ListCache),\n        'string': new Hash\n      };\n    }\n\n    /**\n     * Removes `key` and its value from the map.\n     *\n     * @private\n     * @name delete\n     * @memberOf MapCache\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function mapCacheDelete(key) {\n      var result = getMapData(this, key)['delete'](key);\n      this.size -= result ? 1 : 0;\n      return result;\n    }\n\n    /**\n     * Gets the map value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf MapCache\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function mapCacheGet(key) {\n      return getMapData(this, key).get(key);\n    }\n\n    /**\n     * Checks if a map value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf MapCache\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function mapCacheHas(key) {\n      return getMapData(this, key).has(key);\n    }\n\n    /**\n     * Sets the map `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf MapCache\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the map cache instance.\n     */\n    function mapCacheSet(key, value) {\n      var data = getMapData(this, key),\n          size = data.size;\n\n      data.set(key, value);\n      this.size += data.size == size ? 0 : 1;\n      return this;\n    }\n\n    // Add methods to `MapCache`.\n    MapCache.prototype.clear = mapCacheClear;\n    MapCache.prototype['delete'] = mapCacheDelete;\n    MapCache.prototype.get = mapCacheGet;\n    MapCache.prototype.has = mapCacheHas;\n    MapCache.prototype.set = mapCacheSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     *\n     * Creates an array cache object to store unique values.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [values] The values to cache.\n     */\n    function SetCache(values) {\n      var index = -1,\n          length = values == null ? 0 : values.length;\n\n      this.__data__ = new MapCache;\n      while (++index < length) {\n        this.add(values[index]);\n      }\n    }\n\n    /**\n     * Adds `value` to the array cache.\n     *\n     * @private\n     * @name add\n     * @memberOf SetCache\n     * @alias push\n     * @param {*} value The value to cache.\n     * @returns {Object} Returns the cache instance.\n     */\n    function setCacheAdd(value) {\n      this.__data__.set(value, HASH_UNDEFINED);\n      return this;\n    }\n\n    /**\n     * Checks if `value` is in the array cache.\n     *\n     * @private\n     * @name has\n     * @memberOf SetCache\n     * @param {*} value The value to search for.\n     * @returns {number} Returns `true` if `value` is found, else `false`.\n     */\n    function setCacheHas(value) {\n      return this.__data__.has(value);\n    }\n\n    // Add methods to `SetCache`.\n    SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n    SetCache.prototype.has = setCacheHas;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a stack cache object to store key-value pairs.\n     *\n     * @private\n     * @constructor\n     * @param {Array} [entries] The key-value pairs to cache.\n     */\n    function Stack(entries) {\n      var data = this.__data__ = new ListCache(entries);\n      this.size = data.size;\n    }\n\n    /**\n     * Removes all key-value entries from the stack.\n     *\n     * @private\n     * @name clear\n     * @memberOf Stack\n     */\n    function stackClear() {\n      this.__data__ = new ListCache;\n      this.size = 0;\n    }\n\n    /**\n     * Removes `key` and its value from the stack.\n     *\n     * @private\n     * @name delete\n     * @memberOf Stack\n     * @param {string} key The key of the value to remove.\n     * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n     */\n    function stackDelete(key) {\n      var data = this.__data__,\n          result = data['delete'](key);\n\n      this.size = data.size;\n      return result;\n    }\n\n    /**\n     * Gets the stack value for `key`.\n     *\n     * @private\n     * @name get\n     * @memberOf Stack\n     * @param {string} key The key of the value to get.\n     * @returns {*} Returns the entry value.\n     */\n    function stackGet(key) {\n      return this.__data__.get(key);\n    }\n\n    /**\n     * Checks if a stack value for `key` exists.\n     *\n     * @private\n     * @name has\n     * @memberOf Stack\n     * @param {string} key The key of the entry to check.\n     * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n     */\n    function stackHas(key) {\n      return this.__data__.has(key);\n    }\n\n    /**\n     * Sets the stack `key` to `value`.\n     *\n     * @private\n     * @name set\n     * @memberOf Stack\n     * @param {string} key The key of the value to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns the stack cache instance.\n     */\n    function stackSet(key, value) {\n      var data = this.__data__;\n      if (data instanceof ListCache) {\n        var pairs = data.__data__;\n        if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n          pairs.push([key, value]);\n          this.size = ++data.size;\n          return this;\n        }\n        data = this.__data__ = new MapCache(pairs);\n      }\n      data.set(key, value);\n      this.size = data.size;\n      return this;\n    }\n\n    // Add methods to `Stack`.\n    Stack.prototype.clear = stackClear;\n    Stack.prototype['delete'] = stackDelete;\n    Stack.prototype.get = stackGet;\n    Stack.prototype.has = stackHas;\n    Stack.prototype.set = stackSet;\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an array of the enumerable property names of the array-like `value`.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @param {boolean} inherited Specify returning inherited property names.\n     * @returns {Array} Returns the array of property names.\n     */\n    function arrayLikeKeys(value, inherited) {\n      var isArr = isArray(value),\n          isArg = !isArr && isArguments(value),\n          isBuff = !isArr && !isArg && isBuffer(value),\n          isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n          skipIndexes = isArr || isArg || isBuff || isType,\n          result = skipIndexes ? baseTimes(value.length, String) : [],\n          length = result.length;\n\n      for (var key in value) {\n        if ((inherited || hasOwnProperty.call(value, key)) &&\n            !(skipIndexes && (\n               // Safari 9 has enumerable `arguments.length` in strict mode.\n               key == 'length' ||\n               // Node.js 0.10 has enumerable non-index properties on buffers.\n               (isBuff && (key == 'offset' || key == 'parent')) ||\n               // PhantomJS 2 has enumerable non-index properties on typed arrays.\n               (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n               // Skip index properties.\n               isIndex(key, length)\n            ))) {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * A specialized version of `_.sample` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to sample.\n     * @returns {*} Returns the random element.\n     */\n    function arraySample(array) {\n      var length = array.length;\n      return length ? array[baseRandom(0, length - 1)] : undefined;\n    }\n\n    /**\n     * A specialized version of `_.sampleSize` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to sample.\n     * @param {number} n The number of elements to sample.\n     * @returns {Array} Returns the random elements.\n     */\n    function arraySampleSize(array, n) {\n      return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n    }\n\n    /**\n     * A specialized version of `_.shuffle` for arrays.\n     *\n     * @private\n     * @param {Array} array The array to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     */\n    function arrayShuffle(array) {\n      return shuffleSelf(copyArray(array));\n    }\n\n    /**\n     * This function is like `assignValue` except that it doesn't assign\n     * `undefined` values.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {string} key The key of the property to assign.\n     * @param {*} value The value to assign.\n     */\n    function assignMergeValue(object, key, value) {\n      if ((value !== undefined && !eq(object[key], value)) ||\n          (value === undefined && !(key in object))) {\n        baseAssignValue(object, key, value);\n      }\n    }\n\n    /**\n     * Assigns `value` to `key` of `object` if the existing value is not equivalent\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {string} key The key of the property to assign.\n     * @param {*} value The value to assign.\n     */\n    function assignValue(object, key, value) {\n      var objValue = object[key];\n      if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n          (value === undefined && !(key in object))) {\n        baseAssignValue(object, key, value);\n      }\n    }\n\n    /**\n     * Gets the index at which the `key` is found in `array` of key-value pairs.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {*} key The key to search for.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     */\n    function assocIndexOf(array, key) {\n      var length = array.length;\n      while (length--) {\n        if (eq(array[length][0], key)) {\n          return length;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * Aggregates elements of `collection` on `accumulator` with keys transformed\n     * by `iteratee` and values set by `setter`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} setter The function to set `accumulator` values.\n     * @param {Function} iteratee The iteratee to transform keys.\n     * @param {Object} accumulator The initial aggregated object.\n     * @returns {Function} Returns `accumulator`.\n     */\n    function baseAggregator(collection, setter, iteratee, accumulator) {\n      baseEach(collection, function(value, key, collection) {\n        setter(accumulator, value, iteratee(value), collection);\n      });\n      return accumulator;\n    }\n\n    /**\n     * The base implementation of `_.assign` without support for multiple sources\n     * or `customizer` functions.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @returns {Object} Returns `object`.\n     */\n    function baseAssign(object, source) {\n      return object && copyObject(source, keys(source), object);\n    }\n\n    /**\n     * The base implementation of `_.assignIn` without support for multiple sources\n     * or `customizer` functions.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @returns {Object} Returns `object`.\n     */\n    function baseAssignIn(object, source) {\n      return object && copyObject(source, keysIn(source), object);\n    }\n\n    /**\n     * The base implementation of `assignValue` and `assignMergeValue` without\n     * value checks.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {string} key The key of the property to assign.\n     * @param {*} value The value to assign.\n     */\n    function baseAssignValue(object, key, value) {\n      if (key == '__proto__' && defineProperty) {\n        defineProperty(object, key, {\n          'configurable': true,\n          'enumerable': true,\n          'value': value,\n          'writable': true\n        });\n      } else {\n        object[key] = value;\n      }\n    }\n\n    /**\n     * The base implementation of `_.at` without support for individual paths.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {string[]} paths The property paths to pick.\n     * @returns {Array} Returns the picked elements.\n     */\n    function baseAt(object, paths) {\n      var index = -1,\n          length = paths.length,\n          result = Array(length),\n          skip = object == null;\n\n      while (++index < length) {\n        result[index] = skip ? undefined : get(object, paths[index]);\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.clamp` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {number} number The number to clamp.\n     * @param {number} [lower] The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the clamped number.\n     */\n    function baseClamp(number, lower, upper) {\n      if (number === number) {\n        if (upper !== undefined) {\n          number = number <= upper ? number : upper;\n        }\n        if (lower !== undefined) {\n          number = number >= lower ? number : lower;\n        }\n      }\n      return number;\n    }\n\n    /**\n     * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n     * traversed objects.\n     *\n     * @private\n     * @param {*} value The value to clone.\n     * @param {boolean} bitmask The bitmask flags.\n     *  1 - Deep clone\n     *  2 - Flatten inherited properties\n     *  4 - Clone symbols\n     * @param {Function} [customizer] The function to customize cloning.\n     * @param {string} [key] The key of `value`.\n     * @param {Object} [object] The parent object of `value`.\n     * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n     * @returns {*} Returns the cloned value.\n     */\n    function baseClone(value, bitmask, customizer, key, object, stack) {\n      var result,\n          isDeep = bitmask & CLONE_DEEP_FLAG,\n          isFlat = bitmask & CLONE_FLAT_FLAG,\n          isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n      if (customizer) {\n        result = object ? customizer(value, key, object, stack) : customizer(value);\n      }\n      if (result !== undefined) {\n        return result;\n      }\n      if (!isObject(value)) {\n        return value;\n      }\n      var isArr = isArray(value);\n      if (isArr) {\n        result = initCloneArray(value);\n        if (!isDeep) {\n          return copyArray(value, result);\n        }\n      } else {\n        var tag = getTag(value),\n            isFunc = tag == funcTag || tag == genTag;\n\n        if (isBuffer(value)) {\n          return cloneBuffer(value, isDeep);\n        }\n        if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n          result = (isFlat || isFunc) ? {} : initCloneObject(value);\n          if (!isDeep) {\n            return isFlat\n              ? copySymbolsIn(value, baseAssignIn(result, value))\n              : copySymbols(value, baseAssign(result, value));\n          }\n        } else {\n          if (!cloneableTags[tag]) {\n            return object ? value : {};\n          }\n          result = initCloneByTag(value, tag, isDeep);\n        }\n      }\n      // Check for circular references and return its corresponding clone.\n      stack || (stack = new Stack);\n      var stacked = stack.get(value);\n      if (stacked) {\n        return stacked;\n      }\n      stack.set(value, result);\n\n      if (isSet(value)) {\n        value.forEach(function(subValue) {\n          result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n        });\n      } else if (isMap(value)) {\n        value.forEach(function(subValue, key) {\n          result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n        });\n      }\n\n      var keysFunc = isFull\n        ? (isFlat ? getAllKeysIn : getAllKeys)\n        : (isFlat ? keysIn : keys);\n\n      var props = isArr ? undefined : keysFunc(value);\n      arrayEach(props || value, function(subValue, key) {\n        if (props) {\n          key = subValue;\n          subValue = value[key];\n        }\n        // Recursively populate clone (susceptible to call stack limits).\n        assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.conforms` which doesn't clone `source`.\n     *\n     * @private\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {Function} Returns the new spec function.\n     */\n    function baseConforms(source) {\n      var props = keys(source);\n      return function(object) {\n        return baseConformsTo(object, source, props);\n      };\n    }\n\n    /**\n     * The base implementation of `_.conformsTo` which accepts `props` to check.\n     *\n     * @private\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n     */\n    function baseConformsTo(object, source, props) {\n      var length = props.length;\n      if (object == null) {\n        return !length;\n      }\n      object = Object(object);\n      while (length--) {\n        var key = props[length],\n            predicate = source[key],\n            value = object[key];\n\n        if ((value === undefined && !(key in object)) || !predicate(value)) {\n          return false;\n        }\n      }\n      return true;\n    }\n\n    /**\n     * The base implementation of `_.delay` and `_.defer` which accepts `args`\n     * to provide to `func`.\n     *\n     * @private\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @param {Array} args The arguments to provide to `func`.\n     * @returns {number|Object} Returns the timer id or timeout object.\n     */\n    function baseDelay(func, wait, args) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      return setTimeout(function() { func.apply(undefined, args); }, wait);\n    }\n\n    /**\n     * The base implementation of methods like `_.difference` without support\n     * for excluding multiple arrays or iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {Array} values The values to exclude.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     */\n    function baseDifference(array, values, iteratee, comparator) {\n      var index = -1,\n          includes = arrayIncludes,\n          isCommon = true,\n          length = array.length,\n          result = [],\n          valuesLength = values.length;\n\n      if (!length) {\n        return result;\n      }\n      if (iteratee) {\n        values = arrayMap(values, baseUnary(iteratee));\n      }\n      if (comparator) {\n        includes = arrayIncludesWith;\n        isCommon = false;\n      }\n      else if (values.length >= LARGE_ARRAY_SIZE) {\n        includes = cacheHas;\n        isCommon = false;\n        values = new SetCache(values);\n      }\n      outer:\n      while (++index < length) {\n        var value = array[index],\n            computed = iteratee == null ? value : iteratee(value);\n\n        value = (comparator || value !== 0) ? value : 0;\n        if (isCommon && computed === computed) {\n          var valuesIndex = valuesLength;\n          while (valuesIndex--) {\n            if (values[valuesIndex] === computed) {\n              continue outer;\n            }\n          }\n          result.push(value);\n        }\n        else if (!includes(values, computed, comparator)) {\n          result.push(value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.forEach` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     */\n    var baseEach = createBaseEach(baseForOwn);\n\n    /**\n     * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     */\n    var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n    /**\n     * The base implementation of `_.every` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} predicate The function invoked per iteration.\n     * @returns {boolean} Returns `true` if all elements pass the predicate check,\n     *  else `false`\n     */\n    function baseEvery(collection, predicate) {\n      var result = true;\n      baseEach(collection, function(value, index, collection) {\n        result = !!predicate(value, index, collection);\n        return result;\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of methods like `_.max` and `_.min` which accepts a\n     * `comparator` to determine the extremum value.\n     *\n     * @private\n     * @param {Array} array The array to iterate over.\n     * @param {Function} iteratee The iteratee invoked per iteration.\n     * @param {Function} comparator The comparator used to compare values.\n     * @returns {*} Returns the extremum value.\n     */\n    function baseExtremum(array, iteratee, comparator) {\n      var index = -1,\n          length = array.length;\n\n      while (++index < length) {\n        var value = array[index],\n            current = iteratee(value);\n\n        if (current != null && (computed === undefined\n              ? (current === current && !isSymbol(current))\n              : comparator(current, computed)\n            )) {\n          var computed = current,\n              result = value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.fill` without an iteratee call guard.\n     *\n     * @private\n     * @param {Array} array The array to fill.\n     * @param {*} value The value to fill `array` with.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns `array`.\n     */\n    function baseFill(array, value, start, end) {\n      var length = array.length;\n\n      start = toInteger(start);\n      if (start < 0) {\n        start = -start > length ? 0 : (length + start);\n      }\n      end = (end === undefined || end > length) ? length : toInteger(end);\n      if (end < 0) {\n        end += length;\n      }\n      end = start > end ? 0 : toLength(end);\n      while (start < end) {\n        array[start++] = value;\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.filter` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} predicate The function invoked per iteration.\n     * @returns {Array} Returns the new filtered array.\n     */\n    function baseFilter(collection, predicate) {\n      var result = [];\n      baseEach(collection, function(value, index, collection) {\n        if (predicate(value, index, collection)) {\n          result.push(value);\n        }\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.flatten` with support for restricting flattening.\n     *\n     * @private\n     * @param {Array} array The array to flatten.\n     * @param {number} depth The maximum recursion depth.\n     * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n     * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n     * @param {Array} [result=[]] The initial result value.\n     * @returns {Array} Returns the new flattened array.\n     */\n    function baseFlatten(array, depth, predicate, isStrict, result) {\n      var index = -1,\n          length = array.length;\n\n      predicate || (predicate = isFlattenable);\n      result || (result = []);\n\n      while (++index < length) {\n        var value = array[index];\n        if (depth > 0 && predicate(value)) {\n          if (depth > 1) {\n            // Recursively flatten arrays (susceptible to call stack limits).\n            baseFlatten(value, depth - 1, predicate, isStrict, result);\n          } else {\n            arrayPush(result, value);\n          }\n        } else if (!isStrict) {\n          result[result.length] = value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `baseForOwn` which iterates over `object`\n     * properties returned by `keysFunc` and invokes `iteratee` for each property.\n     * Iteratee functions may exit iteration early by explicitly returning `false`.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @param {Function} keysFunc The function to get the keys of `object`.\n     * @returns {Object} Returns `object`.\n     */\n    var baseFor = createBaseFor();\n\n    /**\n     * This function is like `baseFor` except that it iterates over properties\n     * in the opposite order.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @param {Function} keysFunc The function to get the keys of `object`.\n     * @returns {Object} Returns `object`.\n     */\n    var baseForRight = createBaseFor(true);\n\n    /**\n     * The base implementation of `_.forOwn` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     */\n    function baseForOwn(object, iteratee) {\n      return object && baseFor(object, iteratee, keys);\n    }\n\n    /**\n     * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     */\n    function baseForOwnRight(object, iteratee) {\n      return object && baseForRight(object, iteratee, keys);\n    }\n\n    /**\n     * The base implementation of `_.functions` which creates an array of\n     * `object` function property names filtered from `props`.\n     *\n     * @private\n     * @param {Object} object The object to inspect.\n     * @param {Array} props The property names to filter.\n     * @returns {Array} Returns the function names.\n     */\n    function baseFunctions(object, props) {\n      return arrayFilter(props, function(key) {\n        return isFunction(object[key]);\n      });\n    }\n\n    /**\n     * The base implementation of `_.get` without support for default values.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the property to get.\n     * @returns {*} Returns the resolved value.\n     */\n    function baseGet(object, path) {\n      path = castPath(path, object);\n\n      var index = 0,\n          length = path.length;\n\n      while (object != null && index < length) {\n        object = object[toKey(path[index++])];\n      }\n      return (index && index == length) ? object : undefined;\n    }\n\n    /**\n     * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n     * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n     * symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Function} keysFunc The function to get the keys of `object`.\n     * @param {Function} symbolsFunc The function to get the symbols of `object`.\n     * @returns {Array} Returns the array of property names and symbols.\n     */\n    function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n      var result = keysFunc(object);\n      return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n    }\n\n    /**\n     * The base implementation of `getTag` without fallbacks for buggy environments.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @returns {string} Returns the `toStringTag`.\n     */\n    function baseGetTag(value) {\n      if (value == null) {\n        return value === undefined ? undefinedTag : nullTag;\n      }\n      return (symToStringTag && symToStringTag in Object(value))\n        ? getRawTag(value)\n        : objectToString(value);\n    }\n\n    /**\n     * The base implementation of `_.gt` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is greater than `other`,\n     *  else `false`.\n     */\n    function baseGt(value, other) {\n      return value > other;\n    }\n\n    /**\n     * The base implementation of `_.has` without support for deep paths.\n     *\n     * @private\n     * @param {Object} [object] The object to query.\n     * @param {Array|string} key The key to check.\n     * @returns {boolean} Returns `true` if `key` exists, else `false`.\n     */\n    function baseHas(object, key) {\n      return object != null && hasOwnProperty.call(object, key);\n    }\n\n    /**\n     * The base implementation of `_.hasIn` without support for deep paths.\n     *\n     * @private\n     * @param {Object} [object] The object to query.\n     * @param {Array|string} key The key to check.\n     * @returns {boolean} Returns `true` if `key` exists, else `false`.\n     */\n    function baseHasIn(object, key) {\n      return object != null && key in Object(object);\n    }\n\n    /**\n     * The base implementation of `_.inRange` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {number} number The number to check.\n     * @param {number} start The start of the range.\n     * @param {number} end The end of the range.\n     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n     */\n    function baseInRange(number, start, end) {\n      return number >= nativeMin(start, end) && number < nativeMax(start, end);\n    }\n\n    /**\n     * The base implementation of methods like `_.intersection`, without support\n     * for iteratee shorthands, that accepts an array of arrays to inspect.\n     *\n     * @private\n     * @param {Array} arrays The arrays to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of shared values.\n     */\n    function baseIntersection(arrays, iteratee, comparator) {\n      var includes = comparator ? arrayIncludesWith : arrayIncludes,\n          length = arrays[0].length,\n          othLength = arrays.length,\n          othIndex = othLength,\n          caches = Array(othLength),\n          maxLength = Infinity,\n          result = [];\n\n      while (othIndex--) {\n        var array = arrays[othIndex];\n        if (othIndex && iteratee) {\n          array = arrayMap(array, baseUnary(iteratee));\n        }\n        maxLength = nativeMin(array.length, maxLength);\n        caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n          ? new SetCache(othIndex && array)\n          : undefined;\n      }\n      array = arrays[0];\n\n      var index = -1,\n          seen = caches[0];\n\n      outer:\n      while (++index < length && result.length < maxLength) {\n        var value = array[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        value = (comparator || value !== 0) ? value : 0;\n        if (!(seen\n              ? cacheHas(seen, computed)\n              : includes(result, computed, comparator)\n            )) {\n          othIndex = othLength;\n          while (--othIndex) {\n            var cache = caches[othIndex];\n            if (!(cache\n                  ? cacheHas(cache, computed)\n                  : includes(arrays[othIndex], computed, comparator))\n                ) {\n              continue outer;\n            }\n          }\n          if (seen) {\n            seen.push(computed);\n          }\n          result.push(value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.invert` and `_.invertBy` which inverts\n     * `object` with values transformed by `iteratee` and set by `setter`.\n     *\n     * @private\n     * @param {Object} object The object to iterate over.\n     * @param {Function} setter The function to set `accumulator` values.\n     * @param {Function} iteratee The iteratee to transform values.\n     * @param {Object} accumulator The initial inverted object.\n     * @returns {Function} Returns `accumulator`.\n     */\n    function baseInverter(object, setter, iteratee, accumulator) {\n      baseForOwn(object, function(value, key, object) {\n        setter(accumulator, iteratee(value), key, object);\n      });\n      return accumulator;\n    }\n\n    /**\n     * The base implementation of `_.invoke` without support for individual\n     * method arguments.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the method to invoke.\n     * @param {Array} args The arguments to invoke the method with.\n     * @returns {*} Returns the result of the invoked method.\n     */\n    function baseInvoke(object, path, args) {\n      path = castPath(path, object);\n      object = parent(object, path);\n      var func = object == null ? object : object[toKey(last(path))];\n      return func == null ? undefined : apply(func, object, args);\n    }\n\n    /**\n     * The base implementation of `_.isArguments`.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n     */\n    function baseIsArguments(value) {\n      return isObjectLike(value) && baseGetTag(value) == argsTag;\n    }\n\n    /**\n     * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n     */\n    function baseIsArrayBuffer(value) {\n      return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n    }\n\n    /**\n     * The base implementation of `_.isDate` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n     */\n    function baseIsDate(value) {\n      return isObjectLike(value) && baseGetTag(value) == dateTag;\n    }\n\n    /**\n     * The base implementation of `_.isEqual` which supports partial comparisons\n     * and tracks traversed objects.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @param {boolean} bitmask The bitmask flags.\n     *  1 - Unordered comparison\n     *  2 - Partial comparison\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     */\n    function baseIsEqual(value, other, bitmask, customizer, stack) {\n      if (value === other) {\n        return true;\n      }\n      if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n        return value !== value && other !== other;\n      }\n      return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n    }\n\n    /**\n     * A specialized version of `baseIsEqual` for arrays and objects which performs\n     * deep comparisons and tracks traversed objects enabling objects with circular\n     * references to be compared.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n     */\n    function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n      var objIsArr = isArray(object),\n          othIsArr = isArray(other),\n          objTag = objIsArr ? arrayTag : getTag(object),\n          othTag = othIsArr ? arrayTag : getTag(other);\n\n      objTag = objTag == argsTag ? objectTag : objTag;\n      othTag = othTag == argsTag ? objectTag : othTag;\n\n      var objIsObj = objTag == objectTag,\n          othIsObj = othTag == objectTag,\n          isSameTag = objTag == othTag;\n\n      if (isSameTag && isBuffer(object)) {\n        if (!isBuffer(other)) {\n          return false;\n        }\n        objIsArr = true;\n        objIsObj = false;\n      }\n      if (isSameTag && !objIsObj) {\n        stack || (stack = new Stack);\n        return (objIsArr || isTypedArray(object))\n          ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n          : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n      }\n      if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n        var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n            othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n        if (objIsWrapped || othIsWrapped) {\n          var objUnwrapped = objIsWrapped ? object.value() : object,\n              othUnwrapped = othIsWrapped ? other.value() : other;\n\n          stack || (stack = new Stack);\n          return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n        }\n      }\n      if (!isSameTag) {\n        return false;\n      }\n      stack || (stack = new Stack);\n      return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n    }\n\n    /**\n     * The base implementation of `_.isMap` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n     */\n    function baseIsMap(value) {\n      return isObjectLike(value) && getTag(value) == mapTag;\n    }\n\n    /**\n     * The base implementation of `_.isMatch` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property values to match.\n     * @param {Array} matchData The property names, values, and compare flags to match.\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n     */\n    function baseIsMatch(object, source, matchData, customizer) {\n      var index = matchData.length,\n          length = index,\n          noCustomizer = !customizer;\n\n      if (object == null) {\n        return !length;\n      }\n      object = Object(object);\n      while (index--) {\n        var data = matchData[index];\n        if ((noCustomizer && data[2])\n              ? data[1] !== object[data[0]]\n              : !(data[0] in object)\n            ) {\n          return false;\n        }\n      }\n      while (++index < length) {\n        data = matchData[index];\n        var key = data[0],\n            objValue = object[key],\n            srcValue = data[1];\n\n        if (noCustomizer && data[2]) {\n          if (objValue === undefined && !(key in object)) {\n            return false;\n          }\n        } else {\n          var stack = new Stack;\n          if (customizer) {\n            var result = customizer(objValue, srcValue, key, object, source, stack);\n          }\n          if (!(result === undefined\n                ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n                : result\n              )) {\n            return false;\n          }\n        }\n      }\n      return true;\n    }\n\n    /**\n     * The base implementation of `_.isNative` without bad shim checks.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a native function,\n     *  else `false`.\n     */\n    function baseIsNative(value) {\n      if (!isObject(value) || isMasked(value)) {\n        return false;\n      }\n      var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n      return pattern.test(toSource(value));\n    }\n\n    /**\n     * The base implementation of `_.isRegExp` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n     */\n    function baseIsRegExp(value) {\n      return isObjectLike(value) && baseGetTag(value) == regexpTag;\n    }\n\n    /**\n     * The base implementation of `_.isSet` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n     */\n    function baseIsSet(value) {\n      return isObjectLike(value) && getTag(value) == setTag;\n    }\n\n    /**\n     * The base implementation of `_.isTypedArray` without Node.js optimizations.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n     */\n    function baseIsTypedArray(value) {\n      return isObjectLike(value) &&\n        isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n    }\n\n    /**\n     * The base implementation of `_.iteratee`.\n     *\n     * @private\n     * @param {*} [value=_.identity] The value to convert to an iteratee.\n     * @returns {Function} Returns the iteratee.\n     */\n    function baseIteratee(value) {\n      // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n      // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n      if (typeof value == 'function') {\n        return value;\n      }\n      if (value == null) {\n        return identity;\n      }\n      if (typeof value == 'object') {\n        return isArray(value)\n          ? baseMatchesProperty(value[0], value[1])\n          : baseMatches(value);\n      }\n      return property(value);\n    }\n\n    /**\n     * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     */\n    function baseKeys(object) {\n      if (!isPrototype(object)) {\n        return nativeKeys(object);\n      }\n      var result = [];\n      for (var key in Object(object)) {\n        if (hasOwnProperty.call(object, key) && key != 'constructor') {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     */\n    function baseKeysIn(object) {\n      if (!isObject(object)) {\n        return nativeKeysIn(object);\n      }\n      var isProto = isPrototype(object),\n          result = [];\n\n      for (var key in object) {\n        if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.lt` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is less than `other`,\n     *  else `false`.\n     */\n    function baseLt(value, other) {\n      return value < other;\n    }\n\n    /**\n     * The base implementation of `_.map` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} iteratee The function invoked per iteration.\n     * @returns {Array} Returns the new mapped array.\n     */\n    function baseMap(collection, iteratee) {\n      var index = -1,\n          result = isArrayLike(collection) ? Array(collection.length) : [];\n\n      baseEach(collection, function(value, key, collection) {\n        result[++index] = iteratee(value, key, collection);\n      });\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.matches` which doesn't clone `source`.\n     *\n     * @private\n     * @param {Object} source The object of property values to match.\n     * @returns {Function} Returns the new spec function.\n     */\n    function baseMatches(source) {\n      var matchData = getMatchData(source);\n      if (matchData.length == 1 && matchData[0][2]) {\n        return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n      }\n      return function(object) {\n        return object === source || baseIsMatch(object, source, matchData);\n      };\n    }\n\n    /**\n     * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n     *\n     * @private\n     * @param {string} path The path of the property to get.\n     * @param {*} srcValue The value to match.\n     * @returns {Function} Returns the new spec function.\n     */\n    function baseMatchesProperty(path, srcValue) {\n      if (isKey(path) && isStrictComparable(srcValue)) {\n        return matchesStrictComparable(toKey(path), srcValue);\n      }\n      return function(object) {\n        var objValue = get(object, path);\n        return (objValue === undefined && objValue === srcValue)\n          ? hasIn(object, path)\n          : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n      };\n    }\n\n    /**\n     * The base implementation of `_.merge` without support for multiple sources.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @param {number} srcIndex The index of `source`.\n     * @param {Function} [customizer] The function to customize merged values.\n     * @param {Object} [stack] Tracks traversed source values and their merged\n     *  counterparts.\n     */\n    function baseMerge(object, source, srcIndex, customizer, stack) {\n      if (object === source) {\n        return;\n      }\n      baseFor(source, function(srcValue, key) {\n        stack || (stack = new Stack);\n        if (isObject(srcValue)) {\n          baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n        }\n        else {\n          var newValue = customizer\n            ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n            : undefined;\n\n          if (newValue === undefined) {\n            newValue = srcValue;\n          }\n          assignMergeValue(object, key, newValue);\n        }\n      }, keysIn);\n    }\n\n    /**\n     * A specialized version of `baseMerge` for arrays and objects which performs\n     * deep merges and tracks traversed objects enabling objects with circular\n     * references to be merged.\n     *\n     * @private\n     * @param {Object} object The destination object.\n     * @param {Object} source The source object.\n     * @param {string} key The key of the value to merge.\n     * @param {number} srcIndex The index of `source`.\n     * @param {Function} mergeFunc The function to merge values.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @param {Object} [stack] Tracks traversed source values and their merged\n     *  counterparts.\n     */\n    function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n      var objValue = safeGet(object, key),\n          srcValue = safeGet(source, key),\n          stacked = stack.get(srcValue);\n\n      if (stacked) {\n        assignMergeValue(object, key, stacked);\n        return;\n      }\n      var newValue = customizer\n        ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n        : undefined;\n\n      var isCommon = newValue === undefined;\n\n      if (isCommon) {\n        var isArr = isArray(srcValue),\n            isBuff = !isArr && isBuffer(srcValue),\n            isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n        newValue = srcValue;\n        if (isArr || isBuff || isTyped) {\n          if (isArray(objValue)) {\n            newValue = objValue;\n          }\n          else if (isArrayLikeObject(objValue)) {\n            newValue = copyArray(objValue);\n          }\n          else if (isBuff) {\n            isCommon = false;\n            newValue = cloneBuffer(srcValue, true);\n          }\n          else if (isTyped) {\n            isCommon = false;\n            newValue = cloneTypedArray(srcValue, true);\n          }\n          else {\n            newValue = [];\n          }\n        }\n        else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n          newValue = objValue;\n          if (isArguments(objValue)) {\n            newValue = toPlainObject(objValue);\n          }\n          else if (!isObject(objValue) || isFunction(objValue)) {\n            newValue = initCloneObject(srcValue);\n          }\n        }\n        else {\n          isCommon = false;\n        }\n      }\n      if (isCommon) {\n        // Recursively merge objects and arrays (susceptible to call stack limits).\n        stack.set(srcValue, newValue);\n        mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n        stack['delete'](srcValue);\n      }\n      assignMergeValue(object, key, newValue);\n    }\n\n    /**\n     * The base implementation of `_.nth` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {Array} array The array to query.\n     * @param {number} n The index of the element to return.\n     * @returns {*} Returns the nth element of `array`.\n     */\n    function baseNth(array, n) {\n      var length = array.length;\n      if (!length) {\n        return;\n      }\n      n += n < 0 ? length : 0;\n      return isIndex(n, length) ? array[n] : undefined;\n    }\n\n    /**\n     * The base implementation of `_.orderBy` without param guards.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n     * @param {string[]} orders The sort orders of `iteratees`.\n     * @returns {Array} Returns the new sorted array.\n     */\n    function baseOrderBy(collection, iteratees, orders) {\n      if (iteratees.length) {\n        iteratees = arrayMap(iteratees, function(iteratee) {\n          if (isArray(iteratee)) {\n            return function(value) {\n              return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n            };\n          }\n          return iteratee;\n        });\n      } else {\n        iteratees = [identity];\n      }\n\n      var index = -1;\n      iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n      var result = baseMap(collection, function(value, key, collection) {\n        var criteria = arrayMap(iteratees, function(iteratee) {\n          return iteratee(value);\n        });\n        return { 'criteria': criteria, 'index': ++index, 'value': value };\n      });\n\n      return baseSortBy(result, function(object, other) {\n        return compareMultiple(object, other, orders);\n      });\n    }\n\n    /**\n     * The base implementation of `_.pick` without support for individual\n     * property identifiers.\n     *\n     * @private\n     * @param {Object} object The source object.\n     * @param {string[]} paths The property paths to pick.\n     * @returns {Object} Returns the new object.\n     */\n    function basePick(object, paths) {\n      return basePickBy(object, paths, function(value, path) {\n        return hasIn(object, path);\n      });\n    }\n\n    /**\n     * The base implementation of  `_.pickBy` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Object} object The source object.\n     * @param {string[]} paths The property paths to pick.\n     * @param {Function} predicate The function invoked per property.\n     * @returns {Object} Returns the new object.\n     */\n    function basePickBy(object, paths, predicate) {\n      var index = -1,\n          length = paths.length,\n          result = {};\n\n      while (++index < length) {\n        var path = paths[index],\n            value = baseGet(object, path);\n\n        if (predicate(value, path)) {\n          baseSet(result, castPath(path, object), value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * A specialized version of `baseProperty` which supports deep paths.\n     *\n     * @private\n     * @param {Array|string} path The path of the property to get.\n     * @returns {Function} Returns the new accessor function.\n     */\n    function basePropertyDeep(path) {\n      return function(object) {\n        return baseGet(object, path);\n      };\n    }\n\n    /**\n     * The base implementation of `_.pullAllBy` without support for iteratee\n     * shorthands.\n     *\n     * @private\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns `array`.\n     */\n    function basePullAll(array, values, iteratee, comparator) {\n      var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n          index = -1,\n          length = values.length,\n          seen = array;\n\n      if (array === values) {\n        values = copyArray(values);\n      }\n      if (iteratee) {\n        seen = arrayMap(array, baseUnary(iteratee));\n      }\n      while (++index < length) {\n        var fromIndex = 0,\n            value = values[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n          if (seen !== array) {\n            splice.call(seen, fromIndex, 1);\n          }\n          splice.call(array, fromIndex, 1);\n        }\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.pullAt` without support for individual\n     * indexes or capturing the removed elements.\n     *\n     * @private\n     * @param {Array} array The array to modify.\n     * @param {number[]} indexes The indexes of elements to remove.\n     * @returns {Array} Returns `array`.\n     */\n    function basePullAt(array, indexes) {\n      var length = array ? indexes.length : 0,\n          lastIndex = length - 1;\n\n      while (length--) {\n        var index = indexes[length];\n        if (length == lastIndex || index !== previous) {\n          var previous = index;\n          if (isIndex(index)) {\n            splice.call(array, index, 1);\n          } else {\n            baseUnset(array, index);\n          }\n        }\n      }\n      return array;\n    }\n\n    /**\n     * The base implementation of `_.random` without support for returning\n     * floating-point numbers.\n     *\n     * @private\n     * @param {number} lower The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the random number.\n     */\n    function baseRandom(lower, upper) {\n      return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n    }\n\n    /**\n     * The base implementation of `_.range` and `_.rangeRight` which doesn't\n     * coerce arguments.\n     *\n     * @private\n     * @param {number} start The start of the range.\n     * @param {number} end The end of the range.\n     * @param {number} step The value to increment or decrement by.\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Array} Returns the range of numbers.\n     */\n    function baseRange(start, end, step, fromRight) {\n      var index = -1,\n          length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n          result = Array(length);\n\n      while (length--) {\n        result[fromRight ? length : ++index] = start;\n        start += step;\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.repeat` which doesn't coerce arguments.\n     *\n     * @private\n     * @param {string} string The string to repeat.\n     * @param {number} n The number of times to repeat the string.\n     * @returns {string} Returns the repeated string.\n     */\n    function baseRepeat(string, n) {\n      var result = '';\n      if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n        return result;\n      }\n      // Leverage the exponentiation by squaring algorithm for a faster repeat.\n      // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n      do {\n        if (n % 2) {\n          result += string;\n        }\n        n = nativeFloor(n / 2);\n        if (n) {\n          string += string;\n        }\n      } while (n);\n\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n     *\n     * @private\n     * @param {Function} func The function to apply a rest parameter to.\n     * @param {number} [start=func.length-1] The start position of the rest parameter.\n     * @returns {Function} Returns the new function.\n     */\n    function baseRest(func, start) {\n      return setToString(overRest(func, start, identity), func + '');\n    }\n\n    /**\n     * The base implementation of `_.sample`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to sample.\n     * @returns {*} Returns the random element.\n     */\n    function baseSample(collection) {\n      return arraySample(values(collection));\n    }\n\n    /**\n     * The base implementation of `_.sampleSize` without param guards.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to sample.\n     * @param {number} n The number of elements to sample.\n     * @returns {Array} Returns the random elements.\n     */\n    function baseSampleSize(collection, n) {\n      var array = values(collection);\n      return shuffleSelf(array, baseClamp(n, 0, array.length));\n    }\n\n    /**\n     * The base implementation of `_.set`.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {*} value The value to set.\n     * @param {Function} [customizer] The function to customize path creation.\n     * @returns {Object} Returns `object`.\n     */\n    function baseSet(object, path, value, customizer) {\n      if (!isObject(object)) {\n        return object;\n      }\n      path = castPath(path, object);\n\n      var index = -1,\n          length = path.length,\n          lastIndex = length - 1,\n          nested = object;\n\n      while (nested != null && ++index < length) {\n        var key = toKey(path[index]),\n            newValue = value;\n\n        if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n          return object;\n        }\n\n        if (index != lastIndex) {\n          var objValue = nested[key];\n          newValue = customizer ? customizer(objValue, key, nested) : undefined;\n          if (newValue === undefined) {\n            newValue = isObject(objValue)\n              ? objValue\n              : (isIndex(path[index + 1]) ? [] : {});\n          }\n        }\n        assignValue(nested, key, newValue);\n        nested = nested[key];\n      }\n      return object;\n    }\n\n    /**\n     * The base implementation of `setData` without support for hot loop shorting.\n     *\n     * @private\n     * @param {Function} func The function to associate metadata with.\n     * @param {*} data The metadata.\n     * @returns {Function} Returns `func`.\n     */\n    var baseSetData = !metaMap ? identity : function(func, data) {\n      metaMap.set(func, data);\n      return func;\n    };\n\n    /**\n     * The base implementation of `setToString` without support for hot loop shorting.\n     *\n     * @private\n     * @param {Function} func The function to modify.\n     * @param {Function} string The `toString` result.\n     * @returns {Function} Returns `func`.\n     */\n    var baseSetToString = !defineProperty ? identity : function(func, string) {\n      return defineProperty(func, 'toString', {\n        'configurable': true,\n        'enumerable': false,\n        'value': constant(string),\n        'writable': true\n      });\n    };\n\n    /**\n     * The base implementation of `_.shuffle`.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     */\n    function baseShuffle(collection) {\n      return shuffleSelf(values(collection));\n    }\n\n    /**\n     * The base implementation of `_.slice` without an iteratee call guard.\n     *\n     * @private\n     * @param {Array} array The array to slice.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns the slice of `array`.\n     */\n    function baseSlice(array, start, end) {\n      var index = -1,\n          length = array.length;\n\n      if (start < 0) {\n        start = -start > length ? 0 : (length + start);\n      }\n      end = end > length ? length : end;\n      if (end < 0) {\n        end += length;\n      }\n      length = start > end ? 0 : ((end - start) >>> 0);\n      start >>>= 0;\n\n      var result = Array(length);\n      while (++index < length) {\n        result[index] = array[index + start];\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.some` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} predicate The function invoked per iteration.\n     * @returns {boolean} Returns `true` if any element passes the predicate check,\n     *  else `false`.\n     */\n    function baseSome(collection, predicate) {\n      var result;\n\n      baseEach(collection, function(value, index, collection) {\n        result = predicate(value, index, collection);\n        return !result;\n      });\n      return !!result;\n    }\n\n    /**\n     * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n     * performs a binary search of `array` to determine the index at which `value`\n     * should be inserted into `array` in order to maintain its sort order.\n     *\n     * @private\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {boolean} [retHighest] Specify returning the highest qualified index.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     */\n    function baseSortedIndex(array, value, retHighest) {\n      var low = 0,\n          high = array == null ? low : array.length;\n\n      if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n        while (low < high) {\n          var mid = (low + high) >>> 1,\n              computed = array[mid];\n\n          if (computed !== null && !isSymbol(computed) &&\n              (retHighest ? (computed <= value) : (computed < value))) {\n            low = mid + 1;\n          } else {\n            high = mid;\n          }\n        }\n        return high;\n      }\n      return baseSortedIndexBy(array, value, identity, retHighest);\n    }\n\n    /**\n     * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n     * which invokes `iteratee` for `value` and each element of `array` to compute\n     * their sort ranking. The iteratee is invoked with one argument; (value).\n     *\n     * @private\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} iteratee The iteratee invoked per element.\n     * @param {boolean} [retHighest] Specify returning the highest qualified index.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     */\n    function baseSortedIndexBy(array, value, iteratee, retHighest) {\n      var low = 0,\n          high = array == null ? 0 : array.length;\n      if (high === 0) {\n        return 0;\n      }\n\n      value = iteratee(value);\n      var valIsNaN = value !== value,\n          valIsNull = value === null,\n          valIsSymbol = isSymbol(value),\n          valIsUndefined = value === undefined;\n\n      while (low < high) {\n        var mid = nativeFloor((low + high) / 2),\n            computed = iteratee(array[mid]),\n            othIsDefined = computed !== undefined,\n            othIsNull = computed === null,\n            othIsReflexive = computed === computed,\n            othIsSymbol = isSymbol(computed);\n\n        if (valIsNaN) {\n          var setLow = retHighest || othIsReflexive;\n        } else if (valIsUndefined) {\n          setLow = othIsReflexive && (retHighest || othIsDefined);\n        } else if (valIsNull) {\n          setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n        } else if (valIsSymbol) {\n          setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n        } else if (othIsNull || othIsSymbol) {\n          setLow = false;\n        } else {\n          setLow = retHighest ? (computed <= value) : (computed < value);\n        }\n        if (setLow) {\n          low = mid + 1;\n        } else {\n          high = mid;\n        }\n      }\n      return nativeMin(high, MAX_ARRAY_INDEX);\n    }\n\n    /**\n     * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n     * support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     */\n    function baseSortedUniq(array, iteratee) {\n      var index = -1,\n          length = array.length,\n          resIndex = 0,\n          result = [];\n\n      while (++index < length) {\n        var value = array[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        if (!index || !eq(computed, seen)) {\n          var seen = computed;\n          result[resIndex++] = value === 0 ? 0 : value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.toNumber` which doesn't ensure correct\n     * conversions of binary, hexadecimal, or octal string values.\n     *\n     * @private\n     * @param {*} value The value to process.\n     * @returns {number} Returns the number.\n     */\n    function baseToNumber(value) {\n      if (typeof value == 'number') {\n        return value;\n      }\n      if (isSymbol(value)) {\n        return NAN;\n      }\n      return +value;\n    }\n\n    /**\n     * The base implementation of `_.toString` which doesn't convert nullish\n     * values to empty strings.\n     *\n     * @private\n     * @param {*} value The value to process.\n     * @returns {string} Returns the string.\n     */\n    function baseToString(value) {\n      // Exit early for strings to avoid a performance hit in some environments.\n      if (typeof value == 'string') {\n        return value;\n      }\n      if (isArray(value)) {\n        // Recursively convert values (susceptible to call stack limits).\n        return arrayMap(value, baseToString) + '';\n      }\n      if (isSymbol(value)) {\n        return symbolToString ? symbolToString.call(value) : '';\n      }\n      var result = (value + '');\n      return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n    }\n\n    /**\n     * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     */\n    function baseUniq(array, iteratee, comparator) {\n      var index = -1,\n          includes = arrayIncludes,\n          length = array.length,\n          isCommon = true,\n          result = [],\n          seen = result;\n\n      if (comparator) {\n        isCommon = false;\n        includes = arrayIncludesWith;\n      }\n      else if (length >= LARGE_ARRAY_SIZE) {\n        var set = iteratee ? null : createSet(array);\n        if (set) {\n          return setToArray(set);\n        }\n        isCommon = false;\n        includes = cacheHas;\n        seen = new SetCache;\n      }\n      else {\n        seen = iteratee ? [] : result;\n      }\n      outer:\n      while (++index < length) {\n        var value = array[index],\n            computed = iteratee ? iteratee(value) : value;\n\n        value = (comparator || value !== 0) ? value : 0;\n        if (isCommon && computed === computed) {\n          var seenIndex = seen.length;\n          while (seenIndex--) {\n            if (seen[seenIndex] === computed) {\n              continue outer;\n            }\n          }\n          if (iteratee) {\n            seen.push(computed);\n          }\n          result.push(value);\n        }\n        else if (!includes(seen, computed, comparator)) {\n          if (seen !== result) {\n            seen.push(computed);\n          }\n          result.push(value);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * The base implementation of `_.unset`.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The property path to unset.\n     * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n     */\n    function baseUnset(object, path) {\n      path = castPath(path, object);\n\n      // Prevent prototype pollution, see: https://github.com/lodash/lodash/security/advisories/GHSA-xxjr-mmjv-4gpg\n      var index = -1,\n          length = path.length;\n\n      if (!length) {\n        return true;\n      }\n\n      var isRootPrimitive = object == null || (typeof object !== 'object' && typeof object !== 'function');\n\n      while (++index < length) {\n        var key = path[index];\n\n        // skip non-string keys (e.g., Symbols, numbers)\n        if (typeof key !== 'string') {\n          continue;\n        }\n\n        // Always block \"__proto__\" anywhere in the path if it's not expected\n        if (key === '__proto__' && !hasOwnProperty.call(object, '__proto__')) {\n          return false;\n        }\n\n        // Block \"constructor.prototype\" chains\n        if (key === 'constructor' &&\n            (index + 1) < length &&\n            typeof path[index + 1] === 'string' &&\n            path[index + 1] === 'prototype') {\n\n          // Allow ONLY when the path starts at a primitive root, e.g., _.unset(0, 'constructor.prototype.a')\n          if (isRootPrimitive && index === 0) {\n            continue;\n          }\n\n          return false;\n        }\n      }\n\n      var obj = parent(object, path);\n      return obj == null || delete obj[toKey(last(path))];\n    }\n\n    /**\n     * The base implementation of `_.update`.\n     *\n     * @private\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to update.\n     * @param {Function} updater The function to produce the updated value.\n     * @param {Function} [customizer] The function to customize path creation.\n     * @returns {Object} Returns `object`.\n     */\n    function baseUpdate(object, path, updater, customizer) {\n      return baseSet(object, path, updater(baseGet(object, path)), customizer);\n    }\n\n    /**\n     * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n     * without support for iteratee shorthands.\n     *\n     * @private\n     * @param {Array} array The array to query.\n     * @param {Function} predicate The function invoked per iteration.\n     * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Array} Returns the slice of `array`.\n     */\n    function baseWhile(array, predicate, isDrop, fromRight) {\n      var length = array.length,\n          index = fromRight ? length : -1;\n\n      while ((fromRight ? index-- : ++index < length) &&\n        predicate(array[index], index, array)) {}\n\n      return isDrop\n        ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n        : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n    }\n\n    /**\n     * The base implementation of `wrapperValue` which returns the result of\n     * performing a sequence of actions on the unwrapped `value`, where each\n     * successive action is supplied the return value of the previous.\n     *\n     * @private\n     * @param {*} value The unwrapped value.\n     * @param {Array} actions Actions to perform to resolve the unwrapped value.\n     * @returns {*} Returns the resolved value.\n     */\n    function baseWrapperValue(value, actions) {\n      var result = value;\n      if (result instanceof LazyWrapper) {\n        result = result.value();\n      }\n      return arrayReduce(actions, function(result, action) {\n        return action.func.apply(action.thisArg, arrayPush([result], action.args));\n      }, result);\n    }\n\n    /**\n     * The base implementation of methods like `_.xor`, without support for\n     * iteratee shorthands, that accepts an array of arrays to inspect.\n     *\n     * @private\n     * @param {Array} arrays The arrays to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of values.\n     */\n    function baseXor(arrays, iteratee, comparator) {\n      var length = arrays.length;\n      if (length < 2) {\n        return length ? baseUniq(arrays[0]) : [];\n      }\n      var index = -1,\n          result = Array(length);\n\n      while (++index < length) {\n        var array = arrays[index],\n            othIndex = -1;\n\n        while (++othIndex < length) {\n          if (othIndex != index) {\n            result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n          }\n        }\n      }\n      return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n    }\n\n    /**\n     * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n     *\n     * @private\n     * @param {Array} props The property identifiers.\n     * @param {Array} values The property values.\n     * @param {Function} assignFunc The function to assign values.\n     * @returns {Object} Returns the new object.\n     */\n    function baseZipObject(props, values, assignFunc) {\n      var index = -1,\n          length = props.length,\n          valsLength = values.length,\n          result = {};\n\n      while (++index < length) {\n        var value = index < valsLength ? values[index] : undefined;\n        assignFunc(result, props[index], value);\n      }\n      return result;\n    }\n\n    /**\n     * Casts `value` to an empty array if it's not an array like object.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @returns {Array|Object} Returns the cast array-like object.\n     */\n    function castArrayLikeObject(value) {\n      return isArrayLikeObject(value) ? value : [];\n    }\n\n    /**\n     * Casts `value` to `identity` if it's not a function.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @returns {Function} Returns cast function.\n     */\n    function castFunction(value) {\n      return typeof value == 'function' ? value : identity;\n    }\n\n    /**\n     * Casts `value` to a path array if it's not one.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @param {Object} [object] The object to query keys on.\n     * @returns {Array} Returns the cast property path array.\n     */\n    function castPath(value, object) {\n      if (isArray(value)) {\n        return value;\n      }\n      return isKey(value, object) ? [value] : stringToPath(toString(value));\n    }\n\n    /**\n     * A `baseRest` alias which can be replaced with `identity` by module\n     * replacement plugins.\n     *\n     * @private\n     * @type {Function}\n     * @param {Function} func The function to apply a rest parameter to.\n     * @returns {Function} Returns the new function.\n     */\n    var castRest = baseRest;\n\n    /**\n     * Casts `array` to a slice if it's needed.\n     *\n     * @private\n     * @param {Array} array The array to inspect.\n     * @param {number} start The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns the cast slice.\n     */\n    function castSlice(array, start, end) {\n      var length = array.length;\n      end = end === undefined ? length : end;\n      return (!start && end >= length) ? array : baseSlice(array, start, end);\n    }\n\n    /**\n     * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n     *\n     * @private\n     * @param {number|Object} id The timer id or timeout object of the timer to clear.\n     */\n    var clearTimeout = ctxClearTimeout || function(id) {\n      return root.clearTimeout(id);\n    };\n\n    /**\n     * Creates a clone of  `buffer`.\n     *\n     * @private\n     * @param {Buffer} buffer The buffer to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Buffer} Returns the cloned buffer.\n     */\n    function cloneBuffer(buffer, isDeep) {\n      if (isDeep) {\n        return buffer.slice();\n      }\n      var length = buffer.length,\n          result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n      buffer.copy(result);\n      return result;\n    }\n\n    /**\n     * Creates a clone of `arrayBuffer`.\n     *\n     * @private\n     * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n     * @returns {ArrayBuffer} Returns the cloned array buffer.\n     */\n    function cloneArrayBuffer(arrayBuffer) {\n      var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n      new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n      return result;\n    }\n\n    /**\n     * Creates a clone of `dataView`.\n     *\n     * @private\n     * @param {Object} dataView The data view to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Object} Returns the cloned data view.\n     */\n    function cloneDataView(dataView, isDeep) {\n      var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n      return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n    }\n\n    /**\n     * Creates a clone of `regexp`.\n     *\n     * @private\n     * @param {Object} regexp The regexp to clone.\n     * @returns {Object} Returns the cloned regexp.\n     */\n    function cloneRegExp(regexp) {\n      var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n      result.lastIndex = regexp.lastIndex;\n      return result;\n    }\n\n    /**\n     * Creates a clone of the `symbol` object.\n     *\n     * @private\n     * @param {Object} symbol The symbol object to clone.\n     * @returns {Object} Returns the cloned symbol object.\n     */\n    function cloneSymbol(symbol) {\n      return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n    }\n\n    /**\n     * Creates a clone of `typedArray`.\n     *\n     * @private\n     * @param {Object} typedArray The typed array to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Object} Returns the cloned typed array.\n     */\n    function cloneTypedArray(typedArray, isDeep) {\n      var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n      return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n    }\n\n    /**\n     * Compares values to sort them in ascending order.\n     *\n     * @private\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {number} Returns the sort order indicator for `value`.\n     */\n    function compareAscending(value, other) {\n      if (value !== other) {\n        var valIsDefined = value !== undefined,\n            valIsNull = value === null,\n            valIsReflexive = value === value,\n            valIsSymbol = isSymbol(value);\n\n        var othIsDefined = other !== undefined,\n            othIsNull = other === null,\n            othIsReflexive = other === other,\n            othIsSymbol = isSymbol(other);\n\n        if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n            (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n            (valIsNull && othIsDefined && othIsReflexive) ||\n            (!valIsDefined && othIsReflexive) ||\n            !valIsReflexive) {\n          return 1;\n        }\n        if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n            (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n            (othIsNull && valIsDefined && valIsReflexive) ||\n            (!othIsDefined && valIsReflexive) ||\n            !othIsReflexive) {\n          return -1;\n        }\n      }\n      return 0;\n    }\n\n    /**\n     * Used by `_.orderBy` to compare multiple properties of a value to another\n     * and stable sort them.\n     *\n     * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n     * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n     * of corresponding values.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {boolean[]|string[]} orders The order to sort by for each property.\n     * @returns {number} Returns the sort order indicator for `object`.\n     */\n    function compareMultiple(object, other, orders) {\n      var index = -1,\n          objCriteria = object.criteria,\n          othCriteria = other.criteria,\n          length = objCriteria.length,\n          ordersLength = orders.length;\n\n      while (++index < length) {\n        var result = compareAscending(objCriteria[index], othCriteria[index]);\n        if (result) {\n          if (index >= ordersLength) {\n            return result;\n          }\n          var order = orders[index];\n          return result * (order == 'desc' ? -1 : 1);\n        }\n      }\n      // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n      // that causes it, under certain circumstances, to provide the same value for\n      // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n      // for more details.\n      //\n      // This also ensures a stable sort in V8 and other engines.\n      // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n      return object.index - other.index;\n    }\n\n    /**\n     * Creates an array that is the composition of partially applied arguments,\n     * placeholders, and provided arguments into a single array of arguments.\n     *\n     * @private\n     * @param {Array} args The provided arguments.\n     * @param {Array} partials The arguments to prepend to those provided.\n     * @param {Array} holders The `partials` placeholder indexes.\n     * @params {boolean} [isCurried] Specify composing for a curried function.\n     * @returns {Array} Returns the new array of composed arguments.\n     */\n    function composeArgs(args, partials, holders, isCurried) {\n      var argsIndex = -1,\n          argsLength = args.length,\n          holdersLength = holders.length,\n          leftIndex = -1,\n          leftLength = partials.length,\n          rangeLength = nativeMax(argsLength - holdersLength, 0),\n          result = Array(leftLength + rangeLength),\n          isUncurried = !isCurried;\n\n      while (++leftIndex < leftLength) {\n        result[leftIndex] = partials[leftIndex];\n      }\n      while (++argsIndex < holdersLength) {\n        if (isUncurried || argsIndex < argsLength) {\n          result[holders[argsIndex]] = args[argsIndex];\n        }\n      }\n      while (rangeLength--) {\n        result[leftIndex++] = args[argsIndex++];\n      }\n      return result;\n    }\n\n    /**\n     * This function is like `composeArgs` except that the arguments composition\n     * is tailored for `_.partialRight`.\n     *\n     * @private\n     * @param {Array} args The provided arguments.\n     * @param {Array} partials The arguments to append to those provided.\n     * @param {Array} holders The `partials` placeholder indexes.\n     * @params {boolean} [isCurried] Specify composing for a curried function.\n     * @returns {Array} Returns the new array of composed arguments.\n     */\n    function composeArgsRight(args, partials, holders, isCurried) {\n      var argsIndex = -1,\n          argsLength = args.length,\n          holdersIndex = -1,\n          holdersLength = holders.length,\n          rightIndex = -1,\n          rightLength = partials.length,\n          rangeLength = nativeMax(argsLength - holdersLength, 0),\n          result = Array(rangeLength + rightLength),\n          isUncurried = !isCurried;\n\n      while (++argsIndex < rangeLength) {\n        result[argsIndex] = args[argsIndex];\n      }\n      var offset = argsIndex;\n      while (++rightIndex < rightLength) {\n        result[offset + rightIndex] = partials[rightIndex];\n      }\n      while (++holdersIndex < holdersLength) {\n        if (isUncurried || argsIndex < argsLength) {\n          result[offset + holders[holdersIndex]] = args[argsIndex++];\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Copies the values of `source` to `array`.\n     *\n     * @private\n     * @param {Array} source The array to copy values from.\n     * @param {Array} [array=[]] The array to copy values to.\n     * @returns {Array} Returns `array`.\n     */\n    function copyArray(source, array) {\n      var index = -1,\n          length = source.length;\n\n      array || (array = Array(length));\n      while (++index < length) {\n        array[index] = source[index];\n      }\n      return array;\n    }\n\n    /**\n     * Copies properties of `source` to `object`.\n     *\n     * @private\n     * @param {Object} source The object to copy properties from.\n     * @param {Array} props The property identifiers to copy.\n     * @param {Object} [object={}] The object to copy properties to.\n     * @param {Function} [customizer] The function to customize copied values.\n     * @returns {Object} Returns `object`.\n     */\n    function copyObject(source, props, object, customizer) {\n      var isNew = !object;\n      object || (object = {});\n\n      var index = -1,\n          length = props.length;\n\n      while (++index < length) {\n        var key = props[index];\n\n        var newValue = customizer\n          ? customizer(object[key], source[key], key, object, source)\n          : undefined;\n\n        if (newValue === undefined) {\n          newValue = source[key];\n        }\n        if (isNew) {\n          baseAssignValue(object, key, newValue);\n        } else {\n          assignValue(object, key, newValue);\n        }\n      }\n      return object;\n    }\n\n    /**\n     * Copies own symbols of `source` to `object`.\n     *\n     * @private\n     * @param {Object} source The object to copy symbols from.\n     * @param {Object} [object={}] The object to copy symbols to.\n     * @returns {Object} Returns `object`.\n     */\n    function copySymbols(source, object) {\n      return copyObject(source, getSymbols(source), object);\n    }\n\n    /**\n     * Copies own and inherited symbols of `source` to `object`.\n     *\n     * @private\n     * @param {Object} source The object to copy symbols from.\n     * @param {Object} [object={}] The object to copy symbols to.\n     * @returns {Object} Returns `object`.\n     */\n    function copySymbolsIn(source, object) {\n      return copyObject(source, getSymbolsIn(source), object);\n    }\n\n    /**\n     * Creates a function like `_.groupBy`.\n     *\n     * @private\n     * @param {Function} setter The function to set accumulator values.\n     * @param {Function} [initializer] The accumulator object initializer.\n     * @returns {Function} Returns the new aggregator function.\n     */\n    function createAggregator(setter, initializer) {\n      return function(collection, iteratee) {\n        var func = isArray(collection) ? arrayAggregator : baseAggregator,\n            accumulator = initializer ? initializer() : {};\n\n        return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n      };\n    }\n\n    /**\n     * Creates a function like `_.assign`.\n     *\n     * @private\n     * @param {Function} assigner The function to assign values.\n     * @returns {Function} Returns the new assigner function.\n     */\n    function createAssigner(assigner) {\n      return baseRest(function(object, sources) {\n        var index = -1,\n            length = sources.length,\n            customizer = length > 1 ? sources[length - 1] : undefined,\n            guard = length > 2 ? sources[2] : undefined;\n\n        customizer = (assigner.length > 3 && typeof customizer == 'function')\n          ? (length--, customizer)\n          : undefined;\n\n        if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n          customizer = length < 3 ? undefined : customizer;\n          length = 1;\n        }\n        object = Object(object);\n        while (++index < length) {\n          var source = sources[index];\n          if (source) {\n            assigner(object, source, index, customizer);\n          }\n        }\n        return object;\n      });\n    }\n\n    /**\n     * Creates a `baseEach` or `baseEachRight` function.\n     *\n     * @private\n     * @param {Function} eachFunc The function to iterate over a collection.\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new base function.\n     */\n    function createBaseEach(eachFunc, fromRight) {\n      return function(collection, iteratee) {\n        if (collection == null) {\n          return collection;\n        }\n        if (!isArrayLike(collection)) {\n          return eachFunc(collection, iteratee);\n        }\n        var length = collection.length,\n            index = fromRight ? length : -1,\n            iterable = Object(collection);\n\n        while ((fromRight ? index-- : ++index < length)) {\n          if (iteratee(iterable[index], index, iterable) === false) {\n            break;\n          }\n        }\n        return collection;\n      };\n    }\n\n    /**\n     * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n     *\n     * @private\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new base function.\n     */\n    function createBaseFor(fromRight) {\n      return function(object, iteratee, keysFunc) {\n        var index = -1,\n            iterable = Object(object),\n            props = keysFunc(object),\n            length = props.length;\n\n        while (length--) {\n          var key = props[fromRight ? length : ++index];\n          if (iteratee(iterable[key], key, iterable) === false) {\n            break;\n          }\n        }\n        return object;\n      };\n    }\n\n    /**\n     * Creates a function that wraps `func` to invoke it with the optional `this`\n     * binding of `thisArg`.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createBind(func, bitmask, thisArg) {\n      var isBind = bitmask & WRAP_BIND_FLAG,\n          Ctor = createCtor(func);\n\n      function wrapper() {\n        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n        return fn.apply(isBind ? thisArg : this, arguments);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a function like `_.lowerFirst`.\n     *\n     * @private\n     * @param {string} methodName The name of the `String` case method to use.\n     * @returns {Function} Returns the new case function.\n     */\n    function createCaseFirst(methodName) {\n      return function(string) {\n        string = toString(string);\n\n        var strSymbols = hasUnicode(string)\n          ? stringToArray(string)\n          : undefined;\n\n        var chr = strSymbols\n          ? strSymbols[0]\n          : string.charAt(0);\n\n        var trailing = strSymbols\n          ? castSlice(strSymbols, 1).join('')\n          : string.slice(1);\n\n        return chr[methodName]() + trailing;\n      };\n    }\n\n    /**\n     * Creates a function like `_.camelCase`.\n     *\n     * @private\n     * @param {Function} callback The function to combine each word.\n     * @returns {Function} Returns the new compounder function.\n     */\n    function createCompounder(callback) {\n      return function(string) {\n        return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n      };\n    }\n\n    /**\n     * Creates a function that produces an instance of `Ctor` regardless of\n     * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n     *\n     * @private\n     * @param {Function} Ctor The constructor to wrap.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createCtor(Ctor) {\n      return function() {\n        // Use a `switch` statement to work with class constructors. See\n        // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n        // for more details.\n        var args = arguments;\n        switch (args.length) {\n          case 0: return new Ctor;\n          case 1: return new Ctor(args[0]);\n          case 2: return new Ctor(args[0], args[1]);\n          case 3: return new Ctor(args[0], args[1], args[2]);\n          case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n          case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n          case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n          case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n        }\n        var thisBinding = baseCreate(Ctor.prototype),\n            result = Ctor.apply(thisBinding, args);\n\n        // Mimic the constructor's `return` behavior.\n        // See https://es5.github.io/#x13.2.2 for more details.\n        return isObject(result) ? result : thisBinding;\n      };\n    }\n\n    /**\n     * Creates a function that wraps `func` to enable currying.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {number} arity The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createCurry(func, bitmask, arity) {\n      var Ctor = createCtor(func);\n\n      function wrapper() {\n        var length = arguments.length,\n            args = Array(length),\n            index = length,\n            placeholder = getHolder(wrapper);\n\n        while (index--) {\n          args[index] = arguments[index];\n        }\n        var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n          ? []\n          : replaceHolders(args, placeholder);\n\n        length -= holders.length;\n        if (length < arity) {\n          return createRecurry(\n            func, bitmask, createHybrid, wrapper.placeholder, undefined,\n            args, holders, undefined, undefined, arity - length);\n        }\n        var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n        return apply(fn, this, args);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a `_.find` or `_.findLast` function.\n     *\n     * @private\n     * @param {Function} findIndexFunc The function to find the collection index.\n     * @returns {Function} Returns the new find function.\n     */\n    function createFind(findIndexFunc) {\n      return function(collection, predicate, fromIndex) {\n        var iterable = Object(collection);\n        if (!isArrayLike(collection)) {\n          var iteratee = getIteratee(predicate, 3);\n          collection = keys(collection);\n          predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n        }\n        var index = findIndexFunc(collection, predicate, fromIndex);\n        return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n      };\n    }\n\n    /**\n     * Creates a `_.flow` or `_.flowRight` function.\n     *\n     * @private\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new flow function.\n     */\n    function createFlow(fromRight) {\n      return flatRest(function(funcs) {\n        var length = funcs.length,\n            index = length,\n            prereq = LodashWrapper.prototype.thru;\n\n        if (fromRight) {\n          funcs.reverse();\n        }\n        while (index--) {\n          var func = funcs[index];\n          if (typeof func != 'function') {\n            throw new TypeError(FUNC_ERROR_TEXT);\n          }\n          if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n            var wrapper = new LodashWrapper([], true);\n          }\n        }\n        index = wrapper ? index : length;\n        while (++index < length) {\n          func = funcs[index];\n\n          var funcName = getFuncName(func),\n              data = funcName == 'wrapper' ? getData(func) : undefined;\n\n          if (data && isLaziable(data[0]) &&\n                data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n                !data[4].length && data[9] == 1\n              ) {\n            wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n          } else {\n            wrapper = (func.length == 1 && isLaziable(func))\n              ? wrapper[funcName]()\n              : wrapper.thru(func);\n          }\n        }\n        return function() {\n          var args = arguments,\n              value = args[0];\n\n          if (wrapper && args.length == 1 && isArray(value)) {\n            return wrapper.plant(value).value();\n          }\n          var index = 0,\n              result = length ? funcs[index].apply(this, args) : value;\n\n          while (++index < length) {\n            result = funcs[index].call(this, result);\n          }\n          return result;\n        };\n      });\n    }\n\n    /**\n     * Creates a function that wraps `func` to invoke it with optional `this`\n     * binding of `thisArg`, partial application, and currying.\n     *\n     * @private\n     * @param {Function|string} func The function or method name to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to prepend to those provided to\n     *  the new function.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [partialsRight] The arguments to append to those provided\n     *  to the new function.\n     * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n      var isAry = bitmask & WRAP_ARY_FLAG,\n          isBind = bitmask & WRAP_BIND_FLAG,\n          isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n          isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n          isFlip = bitmask & WRAP_FLIP_FLAG,\n          Ctor = isBindKey ? undefined : createCtor(func);\n\n      function wrapper() {\n        var length = arguments.length,\n            args = Array(length),\n            index = length;\n\n        while (index--) {\n          args[index] = arguments[index];\n        }\n        if (isCurried) {\n          var placeholder = getHolder(wrapper),\n              holdersCount = countHolders(args, placeholder);\n        }\n        if (partials) {\n          args = composeArgs(args, partials, holders, isCurried);\n        }\n        if (partialsRight) {\n          args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n        }\n        length -= holdersCount;\n        if (isCurried && length < arity) {\n          var newHolders = replaceHolders(args, placeholder);\n          return createRecurry(\n            func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n            args, newHolders, argPos, ary, arity - length\n          );\n        }\n        var thisBinding = isBind ? thisArg : this,\n            fn = isBindKey ? thisBinding[func] : func;\n\n        length = args.length;\n        if (argPos) {\n          args = reorder(args, argPos);\n        } else if (isFlip && length > 1) {\n          args.reverse();\n        }\n        if (isAry && ary < length) {\n          args.length = ary;\n        }\n        if (this && this !== root && this instanceof wrapper) {\n          fn = Ctor || createCtor(fn);\n        }\n        return fn.apply(thisBinding, args);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a function like `_.invertBy`.\n     *\n     * @private\n     * @param {Function} setter The function to set accumulator values.\n     * @param {Function} toIteratee The function to resolve iteratees.\n     * @returns {Function} Returns the new inverter function.\n     */\n    function createInverter(setter, toIteratee) {\n      return function(object, iteratee) {\n        return baseInverter(object, setter, toIteratee(iteratee), {});\n      };\n    }\n\n    /**\n     * Creates a function that performs a mathematical operation on two values.\n     *\n     * @private\n     * @param {Function} operator The function to perform the operation.\n     * @param {number} [defaultValue] The value used for `undefined` arguments.\n     * @returns {Function} Returns the new mathematical operation function.\n     */\n    function createMathOperation(operator, defaultValue) {\n      return function(value, other) {\n        var result;\n        if (value === undefined && other === undefined) {\n          return defaultValue;\n        }\n        if (value !== undefined) {\n          result = value;\n        }\n        if (other !== undefined) {\n          if (result === undefined) {\n            return other;\n          }\n          if (typeof value == 'string' || typeof other == 'string') {\n            value = baseToString(value);\n            other = baseToString(other);\n          } else {\n            value = baseToNumber(value);\n            other = baseToNumber(other);\n          }\n          result = operator(value, other);\n        }\n        return result;\n      };\n    }\n\n    /**\n     * Creates a function like `_.over`.\n     *\n     * @private\n     * @param {Function} arrayFunc The function to iterate over iteratees.\n     * @returns {Function} Returns the new over function.\n     */\n    function createOver(arrayFunc) {\n      return flatRest(function(iteratees) {\n        iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n        return baseRest(function(args) {\n          var thisArg = this;\n          return arrayFunc(iteratees, function(iteratee) {\n            return apply(iteratee, thisArg, args);\n          });\n        });\n      });\n    }\n\n    /**\n     * Creates the padding for `string` based on `length`. The `chars` string\n     * is truncated if the number of characters exceeds `length`.\n     *\n     * @private\n     * @param {number} length The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padding for `string`.\n     */\n    function createPadding(length, chars) {\n      chars = chars === undefined ? ' ' : baseToString(chars);\n\n      var charsLength = chars.length;\n      if (charsLength < 2) {\n        return charsLength ? baseRepeat(chars, length) : chars;\n      }\n      var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n      return hasUnicode(chars)\n        ? castSlice(stringToArray(result), 0, length).join('')\n        : result.slice(0, length);\n    }\n\n    /**\n     * Creates a function that wraps `func` to invoke it with the `this` binding\n     * of `thisArg` and `partials` prepended to the arguments it receives.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {*} thisArg The `this` binding of `func`.\n     * @param {Array} partials The arguments to prepend to those provided to\n     *  the new function.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createPartial(func, bitmask, thisArg, partials) {\n      var isBind = bitmask & WRAP_BIND_FLAG,\n          Ctor = createCtor(func);\n\n      function wrapper() {\n        var argsIndex = -1,\n            argsLength = arguments.length,\n            leftIndex = -1,\n            leftLength = partials.length,\n            args = Array(leftLength + argsLength),\n            fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n        while (++leftIndex < leftLength) {\n          args[leftIndex] = partials[leftIndex];\n        }\n        while (argsLength--) {\n          args[leftIndex++] = arguments[++argsIndex];\n        }\n        return apply(fn, isBind ? thisArg : this, args);\n      }\n      return wrapper;\n    }\n\n    /**\n     * Creates a `_.range` or `_.rangeRight` function.\n     *\n     * @private\n     * @param {boolean} [fromRight] Specify iterating from right to left.\n     * @returns {Function} Returns the new range function.\n     */\n    function createRange(fromRight) {\n      return function(start, end, step) {\n        if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n          end = step = undefined;\n        }\n        // Ensure the sign of `-0` is preserved.\n        start = toFinite(start);\n        if (end === undefined) {\n          end = start;\n          start = 0;\n        } else {\n          end = toFinite(end);\n        }\n        step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n        return baseRange(start, end, step, fromRight);\n      };\n    }\n\n    /**\n     * Creates a function that performs a relational operation on two values.\n     *\n     * @private\n     * @param {Function} operator The function to perform the operation.\n     * @returns {Function} Returns the new relational operation function.\n     */\n    function createRelationalOperation(operator) {\n      return function(value, other) {\n        if (!(typeof value == 'string' && typeof other == 'string')) {\n          value = toNumber(value);\n          other = toNumber(other);\n        }\n        return operator(value, other);\n      };\n    }\n\n    /**\n     * Creates a function that wraps `func` to continue currying.\n     *\n     * @private\n     * @param {Function} func The function to wrap.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @param {Function} wrapFunc The function to create the `func` wrapper.\n     * @param {*} placeholder The placeholder value.\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to prepend to those provided to\n     *  the new function.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n      var isCurry = bitmask & WRAP_CURRY_FLAG,\n          newHolders = isCurry ? holders : undefined,\n          newHoldersRight = isCurry ? undefined : holders,\n          newPartials = isCurry ? partials : undefined,\n          newPartialsRight = isCurry ? undefined : partials;\n\n      bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n      bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n      if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n        bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n      }\n      var newData = [\n        func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n        newHoldersRight, argPos, ary, arity\n      ];\n\n      var result = wrapFunc.apply(undefined, newData);\n      if (isLaziable(func)) {\n        setData(result, newData);\n      }\n      result.placeholder = placeholder;\n      return setWrapToString(result, func, bitmask);\n    }\n\n    /**\n     * Creates a function like `_.round`.\n     *\n     * @private\n     * @param {string} methodName The name of the `Math` method to use when rounding.\n     * @returns {Function} Returns the new round function.\n     */\n    function createRound(methodName) {\n      var func = Math[methodName];\n      return function(number, precision) {\n        number = toNumber(number);\n        precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n        if (precision && nativeIsFinite(number)) {\n          // Shift with exponential notation to avoid floating-point issues.\n          // See [MDN](https://mdn.io/round#Examples) for more details.\n          var pair = (toString(number) + 'e').split('e'),\n              value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n          pair = (toString(value) + 'e').split('e');\n          return +(pair[0] + 'e' + (+pair[1] - precision));\n        }\n        return func(number);\n      };\n    }\n\n    /**\n     * Creates a set object of `values`.\n     *\n     * @private\n     * @param {Array} values The values to add to the set.\n     * @returns {Object} Returns the new set.\n     */\n    var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n      return new Set(values);\n    };\n\n    /**\n     * Creates a `_.toPairs` or `_.toPairsIn` function.\n     *\n     * @private\n     * @param {Function} keysFunc The function to get the keys of a given object.\n     * @returns {Function} Returns the new pairs function.\n     */\n    function createToPairs(keysFunc) {\n      return function(object) {\n        var tag = getTag(object);\n        if (tag == mapTag) {\n          return mapToArray(object);\n        }\n        if (tag == setTag) {\n          return setToPairs(object);\n        }\n        return baseToPairs(object, keysFunc(object));\n      };\n    }\n\n    /**\n     * Creates a function that either curries or invokes `func` with optional\n     * `this` binding and partially applied arguments.\n     *\n     * @private\n     * @param {Function|string} func The function or method name to wrap.\n     * @param {number} bitmask The bitmask flags.\n     *    1 - `_.bind`\n     *    2 - `_.bindKey`\n     *    4 - `_.curry` or `_.curryRight` of a bound function\n     *    8 - `_.curry`\n     *   16 - `_.curryRight`\n     *   32 - `_.partial`\n     *   64 - `_.partialRight`\n     *  128 - `_.rearg`\n     *  256 - `_.ary`\n     *  512 - `_.flip`\n     * @param {*} [thisArg] The `this` binding of `func`.\n     * @param {Array} [partials] The arguments to be partially applied.\n     * @param {Array} [holders] The `partials` placeholder indexes.\n     * @param {Array} [argPos] The argument positions of the new function.\n     * @param {number} [ary] The arity cap of `func`.\n     * @param {number} [arity] The arity of `func`.\n     * @returns {Function} Returns the new wrapped function.\n     */\n    function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n      var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n      if (!isBindKey && typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      var length = partials ? partials.length : 0;\n      if (!length) {\n        bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n        partials = holders = undefined;\n      }\n      ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n      arity = arity === undefined ? arity : toInteger(arity);\n      length -= holders ? holders.length : 0;\n\n      if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n        var partialsRight = partials,\n            holdersRight = holders;\n\n        partials = holders = undefined;\n      }\n      var data = isBindKey ? undefined : getData(func);\n\n      var newData = [\n        func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n        argPos, ary, arity\n      ];\n\n      if (data) {\n        mergeData(newData, data);\n      }\n      func = newData[0];\n      bitmask = newData[1];\n      thisArg = newData[2];\n      partials = newData[3];\n      holders = newData[4];\n      arity = newData[9] = newData[9] === undefined\n        ? (isBindKey ? 0 : func.length)\n        : nativeMax(newData[9] - length, 0);\n\n      if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n        bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n      }\n      if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n        var result = createBind(func, bitmask, thisArg);\n      } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n        result = createCurry(func, bitmask, arity);\n      } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n        result = createPartial(func, bitmask, thisArg, partials);\n      } else {\n        result = createHybrid.apply(undefined, newData);\n      }\n      var setter = data ? baseSetData : setData;\n      return setWrapToString(setter(result, newData), func, bitmask);\n    }\n\n    /**\n     * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n     * of source objects to the destination object for all destination properties\n     * that resolve to `undefined`.\n     *\n     * @private\n     * @param {*} objValue The destination value.\n     * @param {*} srcValue The source value.\n     * @param {string} key The key of the property to assign.\n     * @param {Object} object The parent object of `objValue`.\n     * @returns {*} Returns the value to assign.\n     */\n    function customDefaultsAssignIn(objValue, srcValue, key, object) {\n      if (objValue === undefined ||\n          (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n        return srcValue;\n      }\n      return objValue;\n    }\n\n    /**\n     * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n     * objects into destination objects that are passed thru.\n     *\n     * @private\n     * @param {*} objValue The destination value.\n     * @param {*} srcValue The source value.\n     * @param {string} key The key of the property to merge.\n     * @param {Object} object The parent object of `objValue`.\n     * @param {Object} source The parent object of `srcValue`.\n     * @param {Object} [stack] Tracks traversed source values and their merged\n     *  counterparts.\n     * @returns {*} Returns the value to assign.\n     */\n    function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n      if (isObject(objValue) && isObject(srcValue)) {\n        // Recursively merge objects and arrays (susceptible to call stack limits).\n        stack.set(srcValue, objValue);\n        baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n        stack['delete'](srcValue);\n      }\n      return objValue;\n    }\n\n    /**\n     * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n     * objects.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @param {string} key The key of the property to inspect.\n     * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n     */\n    function customOmitClone(value) {\n      return isPlainObject(value) ? undefined : value;\n    }\n\n    /**\n     * A specialized version of `baseIsEqualDeep` for arrays with support for\n     * partial deep comparisons.\n     *\n     * @private\n     * @param {Array} array The array to compare.\n     * @param {Array} other The other array to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} stack Tracks traversed `array` and `other` objects.\n     * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n     */\n    function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n          arrLength = array.length,\n          othLength = other.length;\n\n      if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n        return false;\n      }\n      // Check that cyclic values are equal.\n      var arrStacked = stack.get(array);\n      var othStacked = stack.get(other);\n      if (arrStacked && othStacked) {\n        return arrStacked == other && othStacked == array;\n      }\n      var index = -1,\n          result = true,\n          seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n      stack.set(array, other);\n      stack.set(other, array);\n\n      // Ignore non-index properties.\n      while (++index < arrLength) {\n        var arrValue = array[index],\n            othValue = other[index];\n\n        if (customizer) {\n          var compared = isPartial\n            ? customizer(othValue, arrValue, index, other, array, stack)\n            : customizer(arrValue, othValue, index, array, other, stack);\n        }\n        if (compared !== undefined) {\n          if (compared) {\n            continue;\n          }\n          result = false;\n          break;\n        }\n        // Recursively compare arrays (susceptible to call stack limits).\n        if (seen) {\n          if (!arraySome(other, function(othValue, othIndex) {\n                if (!cacheHas(seen, othIndex) &&\n                    (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n                  return seen.push(othIndex);\n                }\n              })) {\n            result = false;\n            break;\n          }\n        } else if (!(\n              arrValue === othValue ||\n                equalFunc(arrValue, othValue, bitmask, customizer, stack)\n            )) {\n          result = false;\n          break;\n        }\n      }\n      stack['delete'](array);\n      stack['delete'](other);\n      return result;\n    }\n\n    /**\n     * A specialized version of `baseIsEqualDeep` for comparing objects of\n     * the same `toStringTag`.\n     *\n     * **Note:** This function only supports comparing values with tags of\n     * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {string} tag The `toStringTag` of the objects to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} stack Tracks traversed `object` and `other` objects.\n     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n     */\n    function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n      switch (tag) {\n        case dataViewTag:\n          if ((object.byteLength != other.byteLength) ||\n              (object.byteOffset != other.byteOffset)) {\n            return false;\n          }\n          object = object.buffer;\n          other = other.buffer;\n\n        case arrayBufferTag:\n          if ((object.byteLength != other.byteLength) ||\n              !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n            return false;\n          }\n          return true;\n\n        case boolTag:\n        case dateTag:\n        case numberTag:\n          // Coerce booleans to `1` or `0` and dates to milliseconds.\n          // Invalid dates are coerced to `NaN`.\n          return eq(+object, +other);\n\n        case errorTag:\n          return object.name == other.name && object.message == other.message;\n\n        case regexpTag:\n        case stringTag:\n          // Coerce regexes to strings and treat strings, primitives and objects,\n          // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n          // for more details.\n          return object == (other + '');\n\n        case mapTag:\n          var convert = mapToArray;\n\n        case setTag:\n          var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n          convert || (convert = setToArray);\n\n          if (object.size != other.size && !isPartial) {\n            return false;\n          }\n          // Assume cyclic values are equal.\n          var stacked = stack.get(object);\n          if (stacked) {\n            return stacked == other;\n          }\n          bitmask |= COMPARE_UNORDERED_FLAG;\n\n          // Recursively compare objects (susceptible to call stack limits).\n          stack.set(object, other);\n          var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n          stack['delete'](object);\n          return result;\n\n        case symbolTag:\n          if (symbolValueOf) {\n            return symbolValueOf.call(object) == symbolValueOf.call(other);\n          }\n      }\n      return false;\n    }\n\n    /**\n     * A specialized version of `baseIsEqualDeep` for objects with support for\n     * partial deep comparisons.\n     *\n     * @private\n     * @param {Object} object The object to compare.\n     * @param {Object} other The other object to compare.\n     * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n     * @param {Function} customizer The function to customize comparisons.\n     * @param {Function} equalFunc The function to determine equivalents of values.\n     * @param {Object} stack Tracks traversed `object` and `other` objects.\n     * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n     */\n    function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n      var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n          objProps = getAllKeys(object),\n          objLength = objProps.length,\n          othProps = getAllKeys(other),\n          othLength = othProps.length;\n\n      if (objLength != othLength && !isPartial) {\n        return false;\n      }\n      var index = objLength;\n      while (index--) {\n        var key = objProps[index];\n        if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n          return false;\n        }\n      }\n      // Check that cyclic values are equal.\n      var objStacked = stack.get(object);\n      var othStacked = stack.get(other);\n      if (objStacked && othStacked) {\n        return objStacked == other && othStacked == object;\n      }\n      var result = true;\n      stack.set(object, other);\n      stack.set(other, object);\n\n      var skipCtor = isPartial;\n      while (++index < objLength) {\n        key = objProps[index];\n        var objValue = object[key],\n            othValue = other[key];\n\n        if (customizer) {\n          var compared = isPartial\n            ? customizer(othValue, objValue, key, other, object, stack)\n            : customizer(objValue, othValue, key, object, other, stack);\n        }\n        // Recursively compare objects (susceptible to call stack limits).\n        if (!(compared === undefined\n              ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n              : compared\n            )) {\n          result = false;\n          break;\n        }\n        skipCtor || (skipCtor = key == 'constructor');\n      }\n      if (result && !skipCtor) {\n        var objCtor = object.constructor,\n            othCtor = other.constructor;\n\n        // Non `Object` object instances with different constructors are not equal.\n        if (objCtor != othCtor &&\n            ('constructor' in object && 'constructor' in other) &&\n            !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n              typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n          result = false;\n        }\n      }\n      stack['delete'](object);\n      stack['delete'](other);\n      return result;\n    }\n\n    /**\n     * A specialized version of `baseRest` which flattens the rest array.\n     *\n     * @private\n     * @param {Function} func The function to apply a rest parameter to.\n     * @returns {Function} Returns the new function.\n     */\n    function flatRest(func) {\n      return setToString(overRest(func, undefined, flatten), func + '');\n    }\n\n    /**\n     * Creates an array of own enumerable property names and symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names and symbols.\n     */\n    function getAllKeys(object) {\n      return baseGetAllKeys(object, keys, getSymbols);\n    }\n\n    /**\n     * Creates an array of own and inherited enumerable property names and\n     * symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names and symbols.\n     */\n    function getAllKeysIn(object) {\n      return baseGetAllKeys(object, keysIn, getSymbolsIn);\n    }\n\n    /**\n     * Gets metadata for `func`.\n     *\n     * @private\n     * @param {Function} func The function to query.\n     * @returns {*} Returns the metadata for `func`.\n     */\n    var getData = !metaMap ? noop : function(func) {\n      return metaMap.get(func);\n    };\n\n    /**\n     * Gets the name of `func`.\n     *\n     * @private\n     * @param {Function} func The function to query.\n     * @returns {string} Returns the function name.\n     */\n    function getFuncName(func) {\n      var result = (func.name + ''),\n          array = realNames[result],\n          length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n      while (length--) {\n        var data = array[length],\n            otherFunc = data.func;\n        if (otherFunc == null || otherFunc == func) {\n          return data.name;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Gets the argument placeholder value for `func`.\n     *\n     * @private\n     * @param {Function} func The function to inspect.\n     * @returns {*} Returns the placeholder value.\n     */\n    function getHolder(func) {\n      var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n      return object.placeholder;\n    }\n\n    /**\n     * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n     * this function returns the custom method, otherwise it returns `baseIteratee`.\n     * If arguments are provided, the chosen function is invoked with them and\n     * its result is returned.\n     *\n     * @private\n     * @param {*} [value] The value to convert to an iteratee.\n     * @param {number} [arity] The arity of the created iteratee.\n     * @returns {Function} Returns the chosen function or its result.\n     */\n    function getIteratee() {\n      var result = lodash.iteratee || iteratee;\n      result = result === iteratee ? baseIteratee : result;\n      return arguments.length ? result(arguments[0], arguments[1]) : result;\n    }\n\n    /**\n     * Gets the data for `map`.\n     *\n     * @private\n     * @param {Object} map The map to query.\n     * @param {string} key The reference key.\n     * @returns {*} Returns the map data.\n     */\n    function getMapData(map, key) {\n      var data = map.__data__;\n      return isKeyable(key)\n        ? data[typeof key == 'string' ? 'string' : 'hash']\n        : data.map;\n    }\n\n    /**\n     * Gets the property names, values, and compare flags of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the match data of `object`.\n     */\n    function getMatchData(object) {\n      var result = keys(object),\n          length = result.length;\n\n      while (length--) {\n        var key = result[length],\n            value = object[key];\n\n        result[length] = [key, value, isStrictComparable(value)];\n      }\n      return result;\n    }\n\n    /**\n     * Gets the native function at `key` of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {string} key The key of the method to get.\n     * @returns {*} Returns the function if it's native, else `undefined`.\n     */\n    function getNative(object, key) {\n      var value = getValue(object, key);\n      return baseIsNative(value) ? value : undefined;\n    }\n\n    /**\n     * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @returns {string} Returns the raw `toStringTag`.\n     */\n    function getRawTag(value) {\n      var isOwn = hasOwnProperty.call(value, symToStringTag),\n          tag = value[symToStringTag];\n\n      try {\n        value[symToStringTag] = undefined;\n        var unmasked = true;\n      } catch (e) {}\n\n      var result = nativeObjectToString.call(value);\n      if (unmasked) {\n        if (isOwn) {\n          value[symToStringTag] = tag;\n        } else {\n          delete value[symToStringTag];\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Creates an array of the own enumerable symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of symbols.\n     */\n    var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n      if (object == null) {\n        return [];\n      }\n      object = Object(object);\n      return arrayFilter(nativeGetSymbols(object), function(symbol) {\n        return propertyIsEnumerable.call(object, symbol);\n      });\n    };\n\n    /**\n     * Creates an array of the own and inherited enumerable symbols of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of symbols.\n     */\n    var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n      var result = [];\n      while (object) {\n        arrayPush(result, getSymbols(object));\n        object = getPrototype(object);\n      }\n      return result;\n    };\n\n    /**\n     * Gets the `toStringTag` of `value`.\n     *\n     * @private\n     * @param {*} value The value to query.\n     * @returns {string} Returns the `toStringTag`.\n     */\n    var getTag = baseGetTag;\n\n    // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n    if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n        (Map && getTag(new Map) != mapTag) ||\n        (Promise && getTag(Promise.resolve()) != promiseTag) ||\n        (Set && getTag(new Set) != setTag) ||\n        (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n      getTag = function(value) {\n        var result = baseGetTag(value),\n            Ctor = result == objectTag ? value.constructor : undefined,\n            ctorString = Ctor ? toSource(Ctor) : '';\n\n        if (ctorString) {\n          switch (ctorString) {\n            case dataViewCtorString: return dataViewTag;\n            case mapCtorString: return mapTag;\n            case promiseCtorString: return promiseTag;\n            case setCtorString: return setTag;\n            case weakMapCtorString: return weakMapTag;\n          }\n        }\n        return result;\n      };\n    }\n\n    /**\n     * Gets the view, applying any `transforms` to the `start` and `end` positions.\n     *\n     * @private\n     * @param {number} start The start of the view.\n     * @param {number} end The end of the view.\n     * @param {Array} transforms The transformations to apply to the view.\n     * @returns {Object} Returns an object containing the `start` and `end`\n     *  positions of the view.\n     */\n    function getView(start, end, transforms) {\n      var index = -1,\n          length = transforms.length;\n\n      while (++index < length) {\n        var data = transforms[index],\n            size = data.size;\n\n        switch (data.type) {\n          case 'drop':      start += size; break;\n          case 'dropRight': end -= size; break;\n          case 'take':      end = nativeMin(end, start + size); break;\n          case 'takeRight': start = nativeMax(start, end - size); break;\n        }\n      }\n      return { 'start': start, 'end': end };\n    }\n\n    /**\n     * Extracts wrapper details from the `source` body comment.\n     *\n     * @private\n     * @param {string} source The source to inspect.\n     * @returns {Array} Returns the wrapper details.\n     */\n    function getWrapDetails(source) {\n      var match = source.match(reWrapDetails);\n      return match ? match[1].split(reSplitDetails) : [];\n    }\n\n    /**\n     * Checks if `path` exists on `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path to check.\n     * @param {Function} hasFunc The function to check properties.\n     * @returns {boolean} Returns `true` if `path` exists, else `false`.\n     */\n    function hasPath(object, path, hasFunc) {\n      path = castPath(path, object);\n\n      var index = -1,\n          length = path.length,\n          result = false;\n\n      while (++index < length) {\n        var key = toKey(path[index]);\n        if (!(result = object != null && hasFunc(object, key))) {\n          break;\n        }\n        object = object[key];\n      }\n      if (result || ++index != length) {\n        return result;\n      }\n      length = object == null ? 0 : object.length;\n      return !!length && isLength(length) && isIndex(key, length) &&\n        (isArray(object) || isArguments(object));\n    }\n\n    /**\n     * Initializes an array clone.\n     *\n     * @private\n     * @param {Array} array The array to clone.\n     * @returns {Array} Returns the initialized clone.\n     */\n    function initCloneArray(array) {\n      var length = array.length,\n          result = new array.constructor(length);\n\n      // Add properties assigned by `RegExp#exec`.\n      if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n        result.index = array.index;\n        result.input = array.input;\n      }\n      return result;\n    }\n\n    /**\n     * Initializes an object clone.\n     *\n     * @private\n     * @param {Object} object The object to clone.\n     * @returns {Object} Returns the initialized clone.\n     */\n    function initCloneObject(object) {\n      return (typeof object.constructor == 'function' && !isPrototype(object))\n        ? baseCreate(getPrototype(object))\n        : {};\n    }\n\n    /**\n     * Initializes an object clone based on its `toStringTag`.\n     *\n     * **Note:** This function only supports cloning values with tags of\n     * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n     *\n     * @private\n     * @param {Object} object The object to clone.\n     * @param {string} tag The `toStringTag` of the object to clone.\n     * @param {boolean} [isDeep] Specify a deep clone.\n     * @returns {Object} Returns the initialized clone.\n     */\n    function initCloneByTag(object, tag, isDeep) {\n      var Ctor = object.constructor;\n      switch (tag) {\n        case arrayBufferTag:\n          return cloneArrayBuffer(object);\n\n        case boolTag:\n        case dateTag:\n          return new Ctor(+object);\n\n        case dataViewTag:\n          return cloneDataView(object, isDeep);\n\n        case float32Tag: case float64Tag:\n        case int8Tag: case int16Tag: case int32Tag:\n        case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n          return cloneTypedArray(object, isDeep);\n\n        case mapTag:\n          return new Ctor;\n\n        case numberTag:\n        case stringTag:\n          return new Ctor(object);\n\n        case regexpTag:\n          return cloneRegExp(object);\n\n        case setTag:\n          return new Ctor;\n\n        case symbolTag:\n          return cloneSymbol(object);\n      }\n    }\n\n    /**\n     * Inserts wrapper `details` in a comment at the top of the `source` body.\n     *\n     * @private\n     * @param {string} source The source to modify.\n     * @returns {Array} details The details to insert.\n     * @returns {string} Returns the modified source.\n     */\n    function insertWrapDetails(source, details) {\n      var length = details.length;\n      if (!length) {\n        return source;\n      }\n      var lastIndex = length - 1;\n      details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n      details = details.join(length > 2 ? ', ' : ' ');\n      return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n    }\n\n    /**\n     * Checks if `value` is a flattenable `arguments` object or array.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n     */\n    function isFlattenable(value) {\n      return isArray(value) || isArguments(value) ||\n        !!(spreadableSymbol && value && value[spreadableSymbol]);\n    }\n\n    /**\n     * Checks if `value` is a valid array-like index.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n     * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n     */\n    function isIndex(value, length) {\n      var type = typeof value;\n      length = length == null ? MAX_SAFE_INTEGER : length;\n\n      return !!length &&\n        (type == 'number' ||\n          (type != 'symbol' && reIsUint.test(value))) &&\n            (value > -1 && value % 1 == 0 && value < length);\n    }\n\n    /**\n     * Checks if the given arguments are from an iteratee call.\n     *\n     * @private\n     * @param {*} value The potential iteratee value argument.\n     * @param {*} index The potential iteratee index or key argument.\n     * @param {*} object The potential iteratee object argument.\n     * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n     *  else `false`.\n     */\n    function isIterateeCall(value, index, object) {\n      if (!isObject(object)) {\n        return false;\n      }\n      var type = typeof index;\n      if (type == 'number'\n            ? (isArrayLike(object) && isIndex(index, object.length))\n            : (type == 'string' && index in object)\n          ) {\n        return eq(object[index], value);\n      }\n      return false;\n    }\n\n    /**\n     * Checks if `value` is a property name and not a property path.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @param {Object} [object] The object to query keys on.\n     * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n     */\n    function isKey(value, object) {\n      if (isArray(value)) {\n        return false;\n      }\n      var type = typeof value;\n      if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n          value == null || isSymbol(value)) {\n        return true;\n      }\n      return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n        (object != null && value in Object(object));\n    }\n\n    /**\n     * Checks if `value` is suitable for use as unique object key.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n     */\n    function isKeyable(value) {\n      var type = typeof value;\n      return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n        ? (value !== '__proto__')\n        : (value === null);\n    }\n\n    /**\n     * Checks if `func` has a lazy counterpart.\n     *\n     * @private\n     * @param {Function} func The function to check.\n     * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n     *  else `false`.\n     */\n    function isLaziable(func) {\n      var funcName = getFuncName(func),\n          other = lodash[funcName];\n\n      if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n        return false;\n      }\n      if (func === other) {\n        return true;\n      }\n      var data = getData(other);\n      return !!data && func === data[0];\n    }\n\n    /**\n     * Checks if `func` has its source masked.\n     *\n     * @private\n     * @param {Function} func The function to check.\n     * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n     */\n    function isMasked(func) {\n      return !!maskSrcKey && (maskSrcKey in func);\n    }\n\n    /**\n     * Checks if `func` is capable of being masked.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n     */\n    var isMaskable = coreJsData ? isFunction : stubFalse;\n\n    /**\n     * Checks if `value` is likely a prototype object.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n     */\n    function isPrototype(value) {\n      var Ctor = value && value.constructor,\n          proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n      return value === proto;\n    }\n\n    /**\n     * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n     *\n     * @private\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` if suitable for strict\n     *  equality comparisons, else `false`.\n     */\n    function isStrictComparable(value) {\n      return value === value && !isObject(value);\n    }\n\n    /**\n     * A specialized version of `matchesProperty` for source values suitable\n     * for strict equality comparisons, i.e. `===`.\n     *\n     * @private\n     * @param {string} key The key of the property to get.\n     * @param {*} srcValue The value to match.\n     * @returns {Function} Returns the new spec function.\n     */\n    function matchesStrictComparable(key, srcValue) {\n      return function(object) {\n        if (object == null) {\n          return false;\n        }\n        return object[key] === srcValue &&\n          (srcValue !== undefined || (key in Object(object)));\n      };\n    }\n\n    /**\n     * A specialized version of `_.memoize` which clears the memoized function's\n     * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n     *\n     * @private\n     * @param {Function} func The function to have its output memoized.\n     * @returns {Function} Returns the new memoized function.\n     */\n    function memoizeCapped(func) {\n      var result = memoize(func, function(key) {\n        if (cache.size === MAX_MEMOIZE_SIZE) {\n          cache.clear();\n        }\n        return key;\n      });\n\n      var cache = result.cache;\n      return result;\n    }\n\n    /**\n     * Merges the function metadata of `source` into `data`.\n     *\n     * Merging metadata reduces the number of wrappers used to invoke a function.\n     * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n     * may be applied regardless of execution order. Methods like `_.ary` and\n     * `_.rearg` modify function arguments, making the order in which they are\n     * executed important, preventing the merging of metadata. However, we make\n     * an exception for a safe combined case where curried functions have `_.ary`\n     * and or `_.rearg` applied.\n     *\n     * @private\n     * @param {Array} data The destination metadata.\n     * @param {Array} source The source metadata.\n     * @returns {Array} Returns `data`.\n     */\n    function mergeData(data, source) {\n      var bitmask = data[1],\n          srcBitmask = source[1],\n          newBitmask = bitmask | srcBitmask,\n          isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n      var isCombo =\n        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n        ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n        ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n      // Exit early if metadata can't be merged.\n      if (!(isCommon || isCombo)) {\n        return data;\n      }\n      // Use source `thisArg` if available.\n      if (srcBitmask & WRAP_BIND_FLAG) {\n        data[2] = source[2];\n        // Set when currying a bound function.\n        newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n      }\n      // Compose partial arguments.\n      var value = source[3];\n      if (value) {\n        var partials = data[3];\n        data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n        data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n      }\n      // Compose partial right arguments.\n      value = source[5];\n      if (value) {\n        partials = data[5];\n        data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n        data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n      }\n      // Use source `argPos` if available.\n      value = source[7];\n      if (value) {\n        data[7] = value;\n      }\n      // Use source `ary` if it's smaller.\n      if (srcBitmask & WRAP_ARY_FLAG) {\n        data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n      }\n      // Use source `arity` if one is not provided.\n      if (data[9] == null) {\n        data[9] = source[9];\n      }\n      // Use source `func` and merge bitmasks.\n      data[0] = source[0];\n      data[1] = newBitmask;\n\n      return data;\n    }\n\n    /**\n     * This function is like\n     * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n     * except that it includes inherited enumerable properties.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     */\n    function nativeKeysIn(object) {\n      var result = [];\n      if (object != null) {\n        for (var key in Object(object)) {\n          result.push(key);\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Converts `value` to a string using `Object.prototype.toString`.\n     *\n     * @private\n     * @param {*} value The value to convert.\n     * @returns {string} Returns the converted string.\n     */\n    function objectToString(value) {\n      return nativeObjectToString.call(value);\n    }\n\n    /**\n     * A specialized version of `baseRest` which transforms the rest array.\n     *\n     * @private\n     * @param {Function} func The function to apply a rest parameter to.\n     * @param {number} [start=func.length-1] The start position of the rest parameter.\n     * @param {Function} transform The rest array transform.\n     * @returns {Function} Returns the new function.\n     */\n    function overRest(func, start, transform) {\n      start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n      return function() {\n        var args = arguments,\n            index = -1,\n            length = nativeMax(args.length - start, 0),\n            array = Array(length);\n\n        while (++index < length) {\n          array[index] = args[start + index];\n        }\n        index = -1;\n        var otherArgs = Array(start + 1);\n        while (++index < start) {\n          otherArgs[index] = args[index];\n        }\n        otherArgs[start] = transform(array);\n        return apply(func, this, otherArgs);\n      };\n    }\n\n    /**\n     * Gets the parent value at `path` of `object`.\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {Array} path The path to get the parent value of.\n     * @returns {*} Returns the parent value.\n     */\n    function parent(object, path) {\n      return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n    }\n\n    /**\n     * Reorder `array` according to the specified indexes where the element at\n     * the first index is assigned as the first element, the element at\n     * the second index is assigned as the second element, and so on.\n     *\n     * @private\n     * @param {Array} array The array to reorder.\n     * @param {Array} indexes The arranged array indexes.\n     * @returns {Array} Returns `array`.\n     */\n    function reorder(array, indexes) {\n      var arrLength = array.length,\n          length = nativeMin(indexes.length, arrLength),\n          oldArray = copyArray(array);\n\n      while (length--) {\n        var index = indexes[length];\n        array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n      }\n      return array;\n    }\n\n    /**\n     * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n     *\n     * @private\n     * @param {Object} object The object to query.\n     * @param {string} key The key of the property to get.\n     * @returns {*} Returns the property value.\n     */\n    function safeGet(object, key) {\n      if (key === 'constructor' && typeof object[key] === 'function') {\n        return;\n      }\n\n      if (key == '__proto__') {\n        return;\n      }\n\n      return object[key];\n    }\n\n    /**\n     * Sets metadata for `func`.\n     *\n     * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n     * period of time, it will trip its breaker and transition to an identity\n     * function to avoid garbage collection pauses in V8. See\n     * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n     * for more details.\n     *\n     * @private\n     * @param {Function} func The function to associate metadata with.\n     * @param {*} data The metadata.\n     * @returns {Function} Returns `func`.\n     */\n    var setData = shortOut(baseSetData);\n\n    /**\n     * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n     *\n     * @private\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @returns {number|Object} Returns the timer id or timeout object.\n     */\n    var setTimeout = ctxSetTimeout || function(func, wait) {\n      return root.setTimeout(func, wait);\n    };\n\n    /**\n     * Sets the `toString` method of `func` to return `string`.\n     *\n     * @private\n     * @param {Function} func The function to modify.\n     * @param {Function} string The `toString` result.\n     * @returns {Function} Returns `func`.\n     */\n    var setToString = shortOut(baseSetToString);\n\n    /**\n     * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n     * with wrapper details in a comment at the top of the source body.\n     *\n     * @private\n     * @param {Function} wrapper The function to modify.\n     * @param {Function} reference The reference function.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @returns {Function} Returns `wrapper`.\n     */\n    function setWrapToString(wrapper, reference, bitmask) {\n      var source = (reference + '');\n      return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n    }\n\n    /**\n     * Creates a function that'll short out and invoke `identity` instead\n     * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n     * milliseconds.\n     *\n     * @private\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new shortable function.\n     */\n    function shortOut(func) {\n      var count = 0,\n          lastCalled = 0;\n\n      return function() {\n        var stamp = nativeNow(),\n            remaining = HOT_SPAN - (stamp - lastCalled);\n\n        lastCalled = stamp;\n        if (remaining > 0) {\n          if (++count >= HOT_COUNT) {\n            return arguments[0];\n          }\n        } else {\n          count = 0;\n        }\n        return func.apply(undefined, arguments);\n      };\n    }\n\n    /**\n     * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n     *\n     * @private\n     * @param {Array} array The array to shuffle.\n     * @param {number} [size=array.length] The size of `array`.\n     * @returns {Array} Returns `array`.\n     */\n    function shuffleSelf(array, size) {\n      var index = -1,\n          length = array.length,\n          lastIndex = length - 1;\n\n      size = size === undefined ? length : size;\n      while (++index < size) {\n        var rand = baseRandom(index, lastIndex),\n            value = array[rand];\n\n        array[rand] = array[index];\n        array[index] = value;\n      }\n      array.length = size;\n      return array;\n    }\n\n    /**\n     * Converts `string` to a property path array.\n     *\n     * @private\n     * @param {string} string The string to convert.\n     * @returns {Array} Returns the property path array.\n     */\n    var stringToPath = memoizeCapped(function(string) {\n      var result = [];\n      if (string.charCodeAt(0) === 46 /* . */) {\n        result.push('');\n      }\n      string.replace(rePropName, function(match, number, quote, subString) {\n        result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n      });\n      return result;\n    });\n\n    /**\n     * Converts `value` to a string key if it's not a string or symbol.\n     *\n     * @private\n     * @param {*} value The value to inspect.\n     * @returns {string|symbol} Returns the key.\n     */\n    function toKey(value) {\n      if (typeof value == 'string' || isSymbol(value)) {\n        return value;\n      }\n      var result = (value + '');\n      return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n    }\n\n    /**\n     * Converts `func` to its source code.\n     *\n     * @private\n     * @param {Function} func The function to convert.\n     * @returns {string} Returns the source code.\n     */\n    function toSource(func) {\n      if (func != null) {\n        try {\n          return funcToString.call(func);\n        } catch (e) {}\n        try {\n          return (func + '');\n        } catch (e) {}\n      }\n      return '';\n    }\n\n    /**\n     * Updates wrapper `details` based on `bitmask` flags.\n     *\n     * @private\n     * @returns {Array} details The details to modify.\n     * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n     * @returns {Array} Returns `details`.\n     */\n    function updateWrapDetails(details, bitmask) {\n      arrayEach(wrapFlags, function(pair) {\n        var value = '_.' + pair[0];\n        if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n          details.push(value);\n        }\n      });\n      return details.sort();\n    }\n\n    /**\n     * Creates a clone of `wrapper`.\n     *\n     * @private\n     * @param {Object} wrapper The wrapper to clone.\n     * @returns {Object} Returns the cloned wrapper.\n     */\n    function wrapperClone(wrapper) {\n      if (wrapper instanceof LazyWrapper) {\n        return wrapper.clone();\n      }\n      var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n      result.__actions__ = copyArray(wrapper.__actions__);\n      result.__index__  = wrapper.__index__;\n      result.__values__ = wrapper.__values__;\n      return result;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an array of elements split into groups the length of `size`.\n     * If `array` can't be split evenly, the final chunk will be the remaining\n     * elements.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to process.\n     * @param {number} [size=1] The length of each chunk\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the new array of chunks.\n     * @example\n     *\n     * _.chunk(['a', 'b', 'c', 'd'], 2);\n     * // => [['a', 'b'], ['c', 'd']]\n     *\n     * _.chunk(['a', 'b', 'c', 'd'], 3);\n     * // => [['a', 'b', 'c'], ['d']]\n     */\n    function chunk(array, size, guard) {\n      if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n        size = 1;\n      } else {\n        size = nativeMax(toInteger(size), 0);\n      }\n      var length = array == null ? 0 : array.length;\n      if (!length || size < 1) {\n        return [];\n      }\n      var index = 0,\n          resIndex = 0,\n          result = Array(nativeCeil(length / size));\n\n      while (index < length) {\n        result[resIndex++] = baseSlice(array, index, (index += size));\n      }\n      return result;\n    }\n\n    /**\n     * Creates an array with all falsey values removed. The values `false`, `null`,\n     * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to compact.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.compact([0, 1, false, 2, '', 3]);\n     * // => [1, 2, 3]\n     */\n    function compact(array) {\n      var index = -1,\n          length = array == null ? 0 : array.length,\n          resIndex = 0,\n          result = [];\n\n      while (++index < length) {\n        var value = array[index];\n        if (value) {\n          result[resIndex++] = value;\n        }\n      }\n      return result;\n    }\n\n    /**\n     * Creates a new array concatenating `array` with any additional arrays\n     * and/or values.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to concatenate.\n     * @param {...*} [values] The values to concatenate.\n     * @returns {Array} Returns the new concatenated array.\n     * @example\n     *\n     * var array = [1];\n     * var other = _.concat(array, 2, [3], [[4]]);\n     *\n     * console.log(other);\n     * // => [1, 2, 3, [4]]\n     *\n     * console.log(array);\n     * // => [1]\n     */\n    function concat() {\n      var length = arguments.length;\n      if (!length) {\n        return [];\n      }\n      var args = Array(length - 1),\n          array = arguments[0],\n          index = length;\n\n      while (index--) {\n        args[index - 1] = arguments[index];\n      }\n      return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n    }\n\n    /**\n     * Creates an array of `array` values not included in the other given arrays\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons. The order and references of result values are\n     * determined by the first array.\n     *\n     * **Note:** Unlike `_.pullAll`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @returns {Array} Returns the new array of filtered values.\n     * @see _.without, _.xor\n     * @example\n     *\n     * _.difference([2, 1], [2, 3]);\n     * // => [1]\n     */\n    var difference = baseRest(function(array, values) {\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n        : [];\n    });\n\n    /**\n     * This method is like `_.difference` except that it accepts `iteratee` which\n     * is invoked for each element of `array` and `values` to generate the criterion\n     * by which they're compared. The order and references of result values are\n     * determined by the first array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n     * // => [{ 'x': 2 }]\n     */\n    var differenceBy = baseRest(function(array, values) {\n      var iteratee = last(values);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n        : [];\n    });\n\n    /**\n     * This method is like `_.difference` except that it accepts `comparator`\n     * which is invoked to compare elements of `array` to `values`. The order and\n     * references of result values are determined by the first array. The comparator\n     * is invoked with two arguments: (arrVal, othVal).\n     *\n     * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...Array} [values] The values to exclude.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     *\n     * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n     * // => [{ 'x': 2, 'y': 1 }]\n     */\n    var differenceWith = baseRest(function(array, values) {\n      var comparator = last(values);\n      if (isArrayLikeObject(comparator)) {\n        comparator = undefined;\n      }\n      return isArrayLikeObject(array)\n        ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n        : [];\n    });\n\n    /**\n     * Creates a slice of `array` with `n` elements dropped from the beginning.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.5.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to drop.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.drop([1, 2, 3]);\n     * // => [2, 3]\n     *\n     * _.drop([1, 2, 3], 2);\n     * // => [3]\n     *\n     * _.drop([1, 2, 3], 5);\n     * // => []\n     *\n     * _.drop([1, 2, 3], 0);\n     * // => [1, 2, 3]\n     */\n    function drop(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      return baseSlice(array, n < 0 ? 0 : n, length);\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements dropped from the end.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to drop.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.dropRight([1, 2, 3]);\n     * // => [1, 2]\n     *\n     * _.dropRight([1, 2, 3], 2);\n     * // => [1]\n     *\n     * _.dropRight([1, 2, 3], 5);\n     * // => []\n     *\n     * _.dropRight([1, 2, 3], 0);\n     * // => [1, 2, 3]\n     */\n    function dropRight(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      n = length - n;\n      return baseSlice(array, 0, n < 0 ? 0 : n);\n    }\n\n    /**\n     * Creates a slice of `array` excluding elements dropped from the end.\n     * Elements are dropped until `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.dropRightWhile(users, function(o) { return !o.active; });\n     * // => objects for ['barney']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.dropRightWhile(users, ['active', false]);\n     * // => objects for ['barney']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.dropRightWhile(users, 'active');\n     * // => objects for ['barney', 'fred', 'pebbles']\n     */\n    function dropRightWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), true, true)\n        : [];\n    }\n\n    /**\n     * Creates a slice of `array` excluding elements dropped from the beginning.\n     * Elements are dropped until `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.dropWhile(users, function(o) { return !o.active; });\n     * // => objects for ['pebbles']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.dropWhile(users, { 'user': 'barney', 'active': false });\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.dropWhile(users, ['active', false]);\n     * // => objects for ['pebbles']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.dropWhile(users, 'active');\n     * // => objects for ['barney', 'fred', 'pebbles']\n     */\n    function dropWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), true)\n        : [];\n    }\n\n    /**\n     * Fills elements of `array` with `value` from `start` up to, but not\n     * including, `end`.\n     *\n     * **Note:** This method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Array\n     * @param {Array} array The array to fill.\n     * @param {*} value The value to fill `array` with.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _.fill(array, 'a');\n     * console.log(array);\n     * // => ['a', 'a', 'a']\n     *\n     * _.fill(Array(3), 2);\n     * // => [2, 2, 2]\n     *\n     * _.fill([4, 6, 8, 10], '*', 1, 3);\n     * // => [4, '*', '*', 10]\n     */\n    function fill(array, value, start, end) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n        start = 0;\n        end = length;\n      }\n      return baseFill(array, value, start, end);\n    }\n\n    /**\n     * This method is like `_.find` except that it returns the index of the first\n     * element `predicate` returns truthy for instead of the element itself.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @returns {number} Returns the index of the found element, else `-1`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.findIndex(users, function(o) { return o.user == 'barney'; });\n     * // => 0\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findIndex(users, { 'user': 'fred', 'active': false });\n     * // => 1\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findIndex(users, ['active', false]);\n     * // => 0\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findIndex(users, 'active');\n     * // => 2\n     */\n    function findIndex(array, predicate, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = fromIndex == null ? 0 : toInteger(fromIndex);\n      if (index < 0) {\n        index = nativeMax(length + index, 0);\n      }\n      return baseFindIndex(array, getIteratee(predicate, 3), index);\n    }\n\n    /**\n     * This method is like `_.findIndex` except that it iterates over elements\n     * of `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=array.length-1] The index to search from.\n     * @returns {number} Returns the index of the found element, else `-1`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n     * // => 2\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n     * // => 0\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findLastIndex(users, ['active', false]);\n     * // => 2\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findLastIndex(users, 'active');\n     * // => 0\n     */\n    function findLastIndex(array, predicate, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = length - 1;\n      if (fromIndex !== undefined) {\n        index = toInteger(fromIndex);\n        index = fromIndex < 0\n          ? nativeMax(length + index, 0)\n          : nativeMin(index, length - 1);\n      }\n      return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n    }\n\n    /**\n     * Flattens `array` a single level deep.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to flatten.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * _.flatten([1, [2, [3, [4]], 5]]);\n     * // => [1, 2, [3, [4]], 5]\n     */\n    function flatten(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseFlatten(array, 1) : [];\n    }\n\n    /**\n     * Recursively flattens `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to flatten.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * _.flattenDeep([1, [2, [3, [4]], 5]]);\n     * // => [1, 2, 3, 4, 5]\n     */\n    function flattenDeep(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseFlatten(array, INFINITY) : [];\n    }\n\n    /**\n     * Recursively flatten `array` up to `depth` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.4.0\n     * @category Array\n     * @param {Array} array The array to flatten.\n     * @param {number} [depth=1] The maximum recursion depth.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * var array = [1, [2, [3, [4]], 5]];\n     *\n     * _.flattenDepth(array, 1);\n     * // => [1, 2, [3, [4]], 5]\n     *\n     * _.flattenDepth(array, 2);\n     * // => [1, 2, 3, [4], 5]\n     */\n    function flattenDepth(array, depth) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      depth = depth === undefined ? 1 : toInteger(depth);\n      return baseFlatten(array, depth);\n    }\n\n    /**\n     * The inverse of `_.toPairs`; this method returns an object composed\n     * from key-value `pairs`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} pairs The key-value pairs.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * _.fromPairs([['a', 1], ['b', 2]]);\n     * // => { 'a': 1, 'b': 2 }\n     */\n    function fromPairs(pairs) {\n      var index = -1,\n          length = pairs == null ? 0 : pairs.length,\n          result = {};\n\n      while (++index < length) {\n        var pair = pairs[index];\n        result[pair[0]] = pair[1];\n      }\n      return result;\n    }\n\n    /**\n     * Gets the first element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @alias first\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {*} Returns the first element of `array`.\n     * @example\n     *\n     * _.head([1, 2, 3]);\n     * // => 1\n     *\n     * _.head([]);\n     * // => undefined\n     */\n    function head(array) {\n      return (array && array.length) ? array[0] : undefined;\n    }\n\n    /**\n     * Gets the index at which the first occurrence of `value` is found in `array`\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons. If `fromIndex` is negative, it's used as the\n     * offset from the end of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.indexOf([1, 2, 1, 2], 2);\n     * // => 1\n     *\n     * // Search from the `fromIndex`.\n     * _.indexOf([1, 2, 1, 2], 2, 2);\n     * // => 3\n     */\n    function indexOf(array, value, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = fromIndex == null ? 0 : toInteger(fromIndex);\n      if (index < 0) {\n        index = nativeMax(length + index, 0);\n      }\n      return baseIndexOf(array, value, index);\n    }\n\n    /**\n     * Gets all but the last element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.initial([1, 2, 3]);\n     * // => [1, 2]\n     */\n    function initial(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseSlice(array, 0, -1) : [];\n    }\n\n    /**\n     * Creates an array of unique values that are included in all given arrays\n     * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons. The order and references of result values are\n     * determined by the first array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @returns {Array} Returns the new array of intersecting values.\n     * @example\n     *\n     * _.intersection([2, 1], [2, 3]);\n     * // => [2]\n     */\n    var intersection = baseRest(function(arrays) {\n      var mapped = arrayMap(arrays, castArrayLikeObject);\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped)\n        : [];\n    });\n\n    /**\n     * This method is like `_.intersection` except that it accepts `iteratee`\n     * which is invoked for each element of each `arrays` to generate the criterion\n     * by which they're compared. The order and references of result values are\n     * determined by the first array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of intersecting values.\n     * @example\n     *\n     * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [2.1]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }]\n     */\n    var intersectionBy = baseRest(function(arrays) {\n      var iteratee = last(arrays),\n          mapped = arrayMap(arrays, castArrayLikeObject);\n\n      if (iteratee === last(mapped)) {\n        iteratee = undefined;\n      } else {\n        mapped.pop();\n      }\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped, getIteratee(iteratee, 2))\n        : [];\n    });\n\n    /**\n     * This method is like `_.intersection` except that it accepts `comparator`\n     * which is invoked to compare elements of `arrays`. The order and references\n     * of result values are determined by the first array. The comparator is\n     * invoked with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of intersecting values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.intersectionWith(objects, others, _.isEqual);\n     * // => [{ 'x': 1, 'y': 2 }]\n     */\n    var intersectionWith = baseRest(function(arrays) {\n      var comparator = last(arrays),\n          mapped = arrayMap(arrays, castArrayLikeObject);\n\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      if (comparator) {\n        mapped.pop();\n      }\n      return (mapped.length && mapped[0] === arrays[0])\n        ? baseIntersection(mapped, undefined, comparator)\n        : [];\n    });\n\n    /**\n     * Converts all elements in `array` into a string separated by `separator`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to convert.\n     * @param {string} [separator=','] The element separator.\n     * @returns {string} Returns the joined string.\n     * @example\n     *\n     * _.join(['a', 'b', 'c'], '~');\n     * // => 'a~b~c'\n     */\n    function join(array, separator) {\n      return array == null ? '' : nativeJoin.call(array, separator);\n    }\n\n    /**\n     * Gets the last element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {*} Returns the last element of `array`.\n     * @example\n     *\n     * _.last([1, 2, 3]);\n     * // => 3\n     */\n    function last(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? array[length - 1] : undefined;\n    }\n\n    /**\n     * This method is like `_.indexOf` except that it iterates over elements of\n     * `array` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=array.length-1] The index to search from.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.lastIndexOf([1, 2, 1, 2], 2);\n     * // => 3\n     *\n     * // Search from the `fromIndex`.\n     * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n     * // => 1\n     */\n    function lastIndexOf(array, value, fromIndex) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return -1;\n      }\n      var index = length;\n      if (fromIndex !== undefined) {\n        index = toInteger(fromIndex);\n        index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n      }\n      return value === value\n        ? strictLastIndexOf(array, value, index)\n        : baseFindIndex(array, baseIsNaN, index, true);\n    }\n\n    /**\n     * Gets the element at index `n` of `array`. If `n` is negative, the nth\n     * element from the end is returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.11.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=0] The index of the element to return.\n     * @returns {*} Returns the nth element of `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'd'];\n     *\n     * _.nth(array, 1);\n     * // => 'b'\n     *\n     * _.nth(array, -2);\n     * // => 'c';\n     */\n    function nth(array, n) {\n      return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n    }\n\n    /**\n     * Removes all given values from `array` using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n     * to remove elements from an array by predicate.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {...*} [values] The values to remove.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n     *\n     * _.pull(array, 'a', 'c');\n     * console.log(array);\n     * // => ['b', 'b']\n     */\n    var pull = baseRest(pullAll);\n\n    /**\n     * This method is like `_.pull` except that it accepts an array of values to remove.\n     *\n     * **Note:** Unlike `_.difference`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n     *\n     * _.pullAll(array, ['a', 'c']);\n     * console.log(array);\n     * // => ['b', 'b']\n     */\n    function pullAll(array, values) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values)\n        : array;\n    }\n\n    /**\n     * This method is like `_.pullAll` except that it accepts `iteratee` which is\n     * invoked for each element of `array` and `values` to generate the criterion\n     * by which they're compared. The iteratee is invoked with one argument: (value).\n     *\n     * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n     *\n     * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n     * console.log(array);\n     * // => [{ 'x': 2 }]\n     */\n    function pullAllBy(array, values, iteratee) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values, getIteratee(iteratee, 2))\n        : array;\n    }\n\n    /**\n     * This method is like `_.pullAll` except that it accepts `comparator` which\n     * is invoked to compare elements of `array` to `values`. The comparator is\n     * invoked with two arguments: (arrVal, othVal).\n     *\n     * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Array} values The values to remove.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n     *\n     * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n     * console.log(array);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n     */\n    function pullAllWith(array, values, comparator) {\n      return (array && array.length && values && values.length)\n        ? basePullAll(array, values, undefined, comparator)\n        : array;\n    }\n\n    /**\n     * Removes elements from `array` corresponding to `indexes` and returns an\n     * array of removed elements.\n     *\n     * **Note:** Unlike `_.at`, this method mutates `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n     * @returns {Array} Returns the new array of removed elements.\n     * @example\n     *\n     * var array = ['a', 'b', 'c', 'd'];\n     * var pulled = _.pullAt(array, [1, 3]);\n     *\n     * console.log(array);\n     * // => ['a', 'c']\n     *\n     * console.log(pulled);\n     * // => ['b', 'd']\n     */\n    var pullAt = flatRest(function(array, indexes) {\n      var length = array == null ? 0 : array.length,\n          result = baseAt(array, indexes);\n\n      basePullAt(array, arrayMap(indexes, function(index) {\n        return isIndex(index, length) ? +index : index;\n      }).sort(compareAscending));\n\n      return result;\n    });\n\n    /**\n     * Removes all elements from `array` that `predicate` returns truthy for\n     * and returns an array of the removed elements. The predicate is invoked\n     * with three arguments: (value, index, array).\n     *\n     * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n     * to pull elements from an array by value.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new array of removed elements.\n     * @example\n     *\n     * var array = [1, 2, 3, 4];\n     * var evens = _.remove(array, function(n) {\n     *   return n % 2 == 0;\n     * });\n     *\n     * console.log(array);\n     * // => [1, 3]\n     *\n     * console.log(evens);\n     * // => [2, 4]\n     */\n    function remove(array, predicate) {\n      var result = [];\n      if (!(array && array.length)) {\n        return result;\n      }\n      var index = -1,\n          indexes = [],\n          length = array.length;\n\n      predicate = getIteratee(predicate, 3);\n      while (++index < length) {\n        var value = array[index];\n        if (predicate(value, index, array)) {\n          result.push(value);\n          indexes.push(index);\n        }\n      }\n      basePullAt(array, indexes);\n      return result;\n    }\n\n    /**\n     * Reverses `array` so that the first element becomes the last, the second\n     * element becomes the second to last, and so on.\n     *\n     * **Note:** This method mutates `array` and is based on\n     * [`Array#reverse`](https://mdn.io/Array/reverse).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to modify.\n     * @returns {Array} Returns `array`.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _.reverse(array);\n     * // => [3, 2, 1]\n     *\n     * console.log(array);\n     * // => [3, 2, 1]\n     */\n    function reverse(array) {\n      return array == null ? array : nativeReverse.call(array);\n    }\n\n    /**\n     * Creates a slice of `array` from `start` up to, but not including, `end`.\n     *\n     * **Note:** This method is used instead of\n     * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n     * returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to slice.\n     * @param {number} [start=0] The start position.\n     * @param {number} [end=array.length] The end position.\n     * @returns {Array} Returns the slice of `array`.\n     */\n    function slice(array, start, end) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n        start = 0;\n        end = length;\n      }\n      else {\n        start = start == null ? 0 : toInteger(start);\n        end = end === undefined ? length : toInteger(end);\n      }\n      return baseSlice(array, start, end);\n    }\n\n    /**\n     * Uses a binary search to determine the lowest index at which `value`\n     * should be inserted into `array` in order to maintain its sort order.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * _.sortedIndex([30, 50], 40);\n     * // => 1\n     */\n    function sortedIndex(array, value) {\n      return baseSortedIndex(array, value);\n    }\n\n    /**\n     * This method is like `_.sortedIndex` except that it accepts `iteratee`\n     * which is invoked for `value` and each element of `array` to compute their\n     * sort ranking. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * var objects = [{ 'x': 4 }, { 'x': 5 }];\n     *\n     * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n     * // => 0\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n     * // => 0\n     */\n    function sortedIndexBy(array, value, iteratee) {\n      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n    }\n\n    /**\n     * This method is like `_.indexOf` except that it performs a binary\n     * search on a sorted `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n     * // => 1\n     */\n    function sortedIndexOf(array, value) {\n      var length = array == null ? 0 : array.length;\n      if (length) {\n        var index = baseSortedIndex(array, value);\n        if (index < length && eq(array[index], value)) {\n          return index;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * This method is like `_.sortedIndex` except that it returns the highest\n     * index at which `value` should be inserted into `array` in order to\n     * maintain its sort order.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n     * // => 4\n     */\n    function sortedLastIndex(array, value) {\n      return baseSortedIndex(array, value, true);\n    }\n\n    /**\n     * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n     * which is invoked for `value` and each element of `array` to compute their\n     * sort ranking. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The sorted array to inspect.\n     * @param {*} value The value to evaluate.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the index at which `value` should be inserted\n     *  into `array`.\n     * @example\n     *\n     * var objects = [{ 'x': 4 }, { 'x': 5 }];\n     *\n     * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n     * // => 1\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n     * // => 1\n     */\n    function sortedLastIndexBy(array, value, iteratee) {\n      return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n    }\n\n    /**\n     * This method is like `_.lastIndexOf` except that it performs a binary\n     * search on a sorted `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {*} value The value to search for.\n     * @returns {number} Returns the index of the matched value, else `-1`.\n     * @example\n     *\n     * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n     * // => 3\n     */\n    function sortedLastIndexOf(array, value) {\n      var length = array == null ? 0 : array.length;\n      if (length) {\n        var index = baseSortedIndex(array, value, true) - 1;\n        if (eq(array[index], value)) {\n          return index;\n        }\n      }\n      return -1;\n    }\n\n    /**\n     * This method is like `_.uniq` except that it's designed and optimized\n     * for sorted arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.sortedUniq([1, 1, 2]);\n     * // => [1, 2]\n     */\n    function sortedUniq(array) {\n      return (array && array.length)\n        ? baseSortedUniq(array)\n        : [];\n    }\n\n    /**\n     * This method is like `_.uniqBy` except that it's designed and optimized\n     * for sorted arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee] The iteratee invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n     * // => [1.1, 2.3]\n     */\n    function sortedUniqBy(array, iteratee) {\n      return (array && array.length)\n        ? baseSortedUniq(array, getIteratee(iteratee, 2))\n        : [];\n    }\n\n    /**\n     * Gets all but the first element of `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.tail([1, 2, 3]);\n     * // => [2, 3]\n     */\n    function tail(array) {\n      var length = array == null ? 0 : array.length;\n      return length ? baseSlice(array, 1, length) : [];\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements taken from the beginning.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to take.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.take([1, 2, 3]);\n     * // => [1]\n     *\n     * _.take([1, 2, 3], 2);\n     * // => [1, 2]\n     *\n     * _.take([1, 2, 3], 5);\n     * // => [1, 2, 3]\n     *\n     * _.take([1, 2, 3], 0);\n     * // => []\n     */\n    function take(array, n, guard) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      return baseSlice(array, 0, n < 0 ? 0 : n);\n    }\n\n    /**\n     * Creates a slice of `array` with `n` elements taken from the end.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {number} [n=1] The number of elements to take.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * _.takeRight([1, 2, 3]);\n     * // => [3]\n     *\n     * _.takeRight([1, 2, 3], 2);\n     * // => [2, 3]\n     *\n     * _.takeRight([1, 2, 3], 5);\n     * // => [1, 2, 3]\n     *\n     * _.takeRight([1, 2, 3], 0);\n     * // => []\n     */\n    function takeRight(array, n, guard) {\n      var length = array == null ? 0 : array.length;\n      if (!length) {\n        return [];\n      }\n      n = (guard || n === undefined) ? 1 : toInteger(n);\n      n = length - n;\n      return baseSlice(array, n < 0 ? 0 : n, length);\n    }\n\n    /**\n     * Creates a slice of `array` with elements taken from the end. Elements are\n     * taken until `predicate` returns falsey. The predicate is invoked with\n     * three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': true },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': false }\n     * ];\n     *\n     * _.takeRightWhile(users, function(o) { return !o.active; });\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n     * // => objects for ['pebbles']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.takeRightWhile(users, ['active', false]);\n     * // => objects for ['fred', 'pebbles']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.takeRightWhile(users, 'active');\n     * // => []\n     */\n    function takeRightWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3), false, true)\n        : [];\n    }\n\n    /**\n     * Creates a slice of `array` with elements taken from the beginning. Elements\n     * are taken until `predicate` returns falsey. The predicate is invoked with\n     * three arguments: (value, index, array).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Array\n     * @param {Array} array The array to query.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the slice of `array`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'active': false },\n     *   { 'user': 'fred',    'active': false },\n     *   { 'user': 'pebbles', 'active': true }\n     * ];\n     *\n     * _.takeWhile(users, function(o) { return !o.active; });\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.takeWhile(users, { 'user': 'barney', 'active': false });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.takeWhile(users, ['active', false]);\n     * // => objects for ['barney', 'fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.takeWhile(users, 'active');\n     * // => []\n     */\n    function takeWhile(array, predicate) {\n      return (array && array.length)\n        ? baseWhile(array, getIteratee(predicate, 3))\n        : [];\n    }\n\n    /**\n     * Creates an array of unique values, in order, from all given arrays using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @returns {Array} Returns the new array of combined values.\n     * @example\n     *\n     * _.union([2], [1, 2]);\n     * // => [2, 1]\n     */\n    var union = baseRest(function(arrays) {\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n    });\n\n    /**\n     * This method is like `_.union` except that it accepts `iteratee` which is\n     * invoked for each element of each `arrays` to generate the criterion by\n     * which uniqueness is computed. Result values are chosen from the first\n     * array in which the value occurs. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of combined values.\n     * @example\n     *\n     * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n     * // => [2.1, 1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }, { 'x': 2 }]\n     */\n    var unionBy = baseRest(function(arrays) {\n      var iteratee = last(arrays);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n    });\n\n    /**\n     * This method is like `_.union` except that it accepts `comparator` which\n     * is invoked to compare elements of `arrays`. Result values are chosen from\n     * the first array in which the value occurs. The comparator is invoked\n     * with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of combined values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.unionWith(objects, others, _.isEqual);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n     */\n    var unionWith = baseRest(function(arrays) {\n      var comparator = last(arrays);\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n    });\n\n    /**\n     * Creates a duplicate-free version of an array, using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons, in which only the first occurrence of each element\n     * is kept. The order of result values is determined by the order they occur\n     * in the array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.uniq([2, 1, 2]);\n     * // => [2, 1]\n     */\n    function uniq(array) {\n      return (array && array.length) ? baseUniq(array) : [];\n    }\n\n    /**\n     * This method is like `_.uniq` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * uniqueness is computed. The order of result values is determined by the\n     * order they occur in the array. The iteratee is invoked with one argument:\n     * (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n     * // => [2.1, 1.2]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 1 }, { 'x': 2 }]\n     */\n    function uniqBy(array, iteratee) {\n      return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n    }\n\n    /**\n     * This method is like `_.uniq` except that it accepts `comparator` which\n     * is invoked to compare elements of `array`. The order of result values is\n     * determined by the order they occur in the array.The comparator is invoked\n     * with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new duplicate free array.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.uniqWith(objects, _.isEqual);\n     * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n     */\n    function uniqWith(array, comparator) {\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n    }\n\n    /**\n     * This method is like `_.zip` except that it accepts an array of grouped\n     * elements and creates an array regrouping the elements to their pre-zip\n     * configuration.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.2.0\n     * @category Array\n     * @param {Array} array The array of grouped elements to process.\n     * @returns {Array} Returns the new array of regrouped elements.\n     * @example\n     *\n     * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n     * // => [['a', 1, true], ['b', 2, false]]\n     *\n     * _.unzip(zipped);\n     * // => [['a', 'b'], [1, 2], [true, false]]\n     */\n    function unzip(array) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      var length = 0;\n      array = arrayFilter(array, function(group) {\n        if (isArrayLikeObject(group)) {\n          length = nativeMax(group.length, length);\n          return true;\n        }\n      });\n      return baseTimes(length, function(index) {\n        return arrayMap(array, baseProperty(index));\n      });\n    }\n\n    /**\n     * This method is like `_.unzip` except that it accepts `iteratee` to specify\n     * how regrouped values should be combined. The iteratee is invoked with the\n     * elements of each group: (...group).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Array\n     * @param {Array} array The array of grouped elements to process.\n     * @param {Function} [iteratee=_.identity] The function to combine\n     *  regrouped values.\n     * @returns {Array} Returns the new array of regrouped elements.\n     * @example\n     *\n     * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n     * // => [[1, 10, 100], [2, 20, 200]]\n     *\n     * _.unzipWith(zipped, _.add);\n     * // => [3, 30, 300]\n     */\n    function unzipWith(array, iteratee) {\n      if (!(array && array.length)) {\n        return [];\n      }\n      var result = unzip(array);\n      if (iteratee == null) {\n        return result;\n      }\n      return arrayMap(result, function(group) {\n        return apply(iteratee, undefined, group);\n      });\n    }\n\n    /**\n     * Creates an array excluding all given values using\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * for equality comparisons.\n     *\n     * **Note:** Unlike `_.pull`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {Array} array The array to inspect.\n     * @param {...*} [values] The values to exclude.\n     * @returns {Array} Returns the new array of filtered values.\n     * @see _.difference, _.xor\n     * @example\n     *\n     * _.without([2, 1, 2, 3], 1, 2);\n     * // => [3]\n     */\n    var without = baseRest(function(array, values) {\n      return isArrayLikeObject(array)\n        ? baseDifference(array, values)\n        : [];\n    });\n\n    /**\n     * Creates an array of unique values that is the\n     * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n     * of the given arrays. The order of result values is determined by the order\n     * they occur in the arrays.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @returns {Array} Returns the new array of filtered values.\n     * @see _.difference, _.without\n     * @example\n     *\n     * _.xor([2, 1], [2, 3]);\n     * // => [1, 3]\n     */\n    var xor = baseRest(function(arrays) {\n      return baseXor(arrayFilter(arrays, isArrayLikeObject));\n    });\n\n    /**\n     * This method is like `_.xor` except that it accepts `iteratee` which is\n     * invoked for each element of each `arrays` to generate the criterion by\n     * which by which they're compared. The order of result values is determined\n     * by the order they occur in the arrays. The iteratee is invoked with one\n     * argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n     * // => [1.2, 3.4]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n     * // => [{ 'x': 2 }]\n     */\n    var xorBy = baseRest(function(arrays) {\n      var iteratee = last(arrays);\n      if (isArrayLikeObject(iteratee)) {\n        iteratee = undefined;\n      }\n      return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n    });\n\n    /**\n     * This method is like `_.xor` except that it accepts `comparator` which is\n     * invoked to compare elements of `arrays`. The order of result values is\n     * determined by the order they occur in the arrays. The comparator is invoked\n     * with two arguments: (arrVal, othVal).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to inspect.\n     * @param {Function} [comparator] The comparator invoked per element.\n     * @returns {Array} Returns the new array of filtered values.\n     * @example\n     *\n     * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n     * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n     *\n     * _.xorWith(objects, others, _.isEqual);\n     * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n     */\n    var xorWith = baseRest(function(arrays) {\n      var comparator = last(arrays);\n      comparator = typeof comparator == 'function' ? comparator : undefined;\n      return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n    });\n\n    /**\n     * Creates an array of grouped elements, the first of which contains the\n     * first elements of the given arrays, the second of which contains the\n     * second elements of the given arrays, and so on.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to process.\n     * @returns {Array} Returns the new array of grouped elements.\n     * @example\n     *\n     * _.zip(['a', 'b'], [1, 2], [true, false]);\n     * // => [['a', 1, true], ['b', 2, false]]\n     */\n    var zip = baseRest(unzip);\n\n    /**\n     * This method is like `_.fromPairs` except that it accepts two arrays,\n     * one of property identifiers and one of corresponding values.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.4.0\n     * @category Array\n     * @param {Array} [props=[]] The property identifiers.\n     * @param {Array} [values=[]] The property values.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * _.zipObject(['a', 'b'], [1, 2]);\n     * // => { 'a': 1, 'b': 2 }\n     */\n    function zipObject(props, values) {\n      return baseZipObject(props || [], values || [], assignValue);\n    }\n\n    /**\n     * This method is like `_.zipObject` except that it supports property paths.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.1.0\n     * @category Array\n     * @param {Array} [props=[]] The property identifiers.\n     * @param {Array} [values=[]] The property values.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n     * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n     */\n    function zipObjectDeep(props, values) {\n      return baseZipObject(props || [], values || [], baseSet);\n    }\n\n    /**\n     * This method is like `_.zip` except that it accepts `iteratee` to specify\n     * how grouped values should be combined. The iteratee is invoked with the\n     * elements of each group: (...group).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Array\n     * @param {...Array} [arrays] The arrays to process.\n     * @param {Function} [iteratee=_.identity] The function to combine\n     *  grouped values.\n     * @returns {Array} Returns the new array of grouped elements.\n     * @example\n     *\n     * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n     *   return a + b + c;\n     * });\n     * // => [111, 222]\n     */\n    var zipWith = baseRest(function(arrays) {\n      var length = arrays.length,\n          iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n      iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n      return unzipWith(arrays, iteratee);\n    });\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n     * chain sequences enabled. The result of such sequences must be unwrapped\n     * with `_#value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.3.0\n     * @category Seq\n     * @param {*} value The value to wrap.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36 },\n     *   { 'user': 'fred',    'age': 40 },\n     *   { 'user': 'pebbles', 'age': 1 }\n     * ];\n     *\n     * var youngest = _\n     *   .chain(users)\n     *   .sortBy('age')\n     *   .map(function(o) {\n     *     return o.user + ' is ' + o.age;\n     *   })\n     *   .head()\n     *   .value();\n     * // => 'pebbles is 1'\n     */\n    function chain(value) {\n      var result = lodash(value);\n      result.__chain__ = true;\n      return result;\n    }\n\n    /**\n     * This method invokes `interceptor` and returns `value`. The interceptor\n     * is invoked with one argument; (value). The purpose of this method is to\n     * \"tap into\" a method chain sequence in order to modify intermediate results.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @param {*} value The value to provide to `interceptor`.\n     * @param {Function} interceptor The function to invoke.\n     * @returns {*} Returns `value`.\n     * @example\n     *\n     * _([1, 2, 3])\n     *  .tap(function(array) {\n     *    // Mutate input array.\n     *    array.pop();\n     *  })\n     *  .reverse()\n     *  .value();\n     * // => [2, 1]\n     */\n    function tap(value, interceptor) {\n      interceptor(value);\n      return value;\n    }\n\n    /**\n     * This method is like `_.tap` except that it returns the result of `interceptor`.\n     * The purpose of this method is to \"pass thru\" values replacing intermediate\n     * results in a method chain sequence.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Seq\n     * @param {*} value The value to provide to `interceptor`.\n     * @param {Function} interceptor The function to invoke.\n     * @returns {*} Returns the result of `interceptor`.\n     * @example\n     *\n     * _('  abc  ')\n     *  .chain()\n     *  .trim()\n     *  .thru(function(value) {\n     *    return [value];\n     *  })\n     *  .value();\n     * // => ['abc']\n     */\n    function thru(value, interceptor) {\n      return interceptor(value);\n    }\n\n    /**\n     * This method is the wrapper version of `_.at`.\n     *\n     * @name at\n     * @memberOf _\n     * @since 1.0.0\n     * @category Seq\n     * @param {...(string|string[])} [paths] The property paths to pick.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n     *\n     * _(object).at(['a[0].b.c', 'a[1]']).value();\n     * // => [3, 4]\n     */\n    var wrapperAt = flatRest(function(paths) {\n      var length = paths.length,\n          start = length ? paths[0] : 0,\n          value = this.__wrapped__,\n          interceptor = function(object) { return baseAt(object, paths); };\n\n      if (length > 1 || this.__actions__.length ||\n          !(value instanceof LazyWrapper) || !isIndex(start)) {\n        return this.thru(interceptor);\n      }\n      value = value.slice(start, +start + (length ? 1 : 0));\n      value.__actions__.push({\n        'func': thru,\n        'args': [interceptor],\n        'thisArg': undefined\n      });\n      return new LodashWrapper(value, this.__chain__).thru(function(array) {\n        if (length && !array.length) {\n          array.push(undefined);\n        }\n        return array;\n      });\n    });\n\n    /**\n     * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n     *\n     * @name chain\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36 },\n     *   { 'user': 'fred',   'age': 40 }\n     * ];\n     *\n     * // A sequence without explicit chaining.\n     * _(users).head();\n     * // => { 'user': 'barney', 'age': 36 }\n     *\n     * // A sequence with explicit chaining.\n     * _(users)\n     *   .chain()\n     *   .head()\n     *   .pick('user')\n     *   .value();\n     * // => { 'user': 'barney' }\n     */\n    function wrapperChain() {\n      return chain(this);\n    }\n\n    /**\n     * Executes the chain sequence and returns the wrapped result.\n     *\n     * @name commit\n     * @memberOf _\n     * @since 3.2.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var array = [1, 2];\n     * var wrapped = _(array).push(3);\n     *\n     * console.log(array);\n     * // => [1, 2]\n     *\n     * wrapped = wrapped.commit();\n     * console.log(array);\n     * // => [1, 2, 3]\n     *\n     * wrapped.last();\n     * // => 3\n     *\n     * console.log(array);\n     * // => [1, 2, 3]\n     */\n    function wrapperCommit() {\n      return new LodashWrapper(this.value(), this.__chain__);\n    }\n\n    /**\n     * Gets the next value on a wrapped object following the\n     * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n     *\n     * @name next\n     * @memberOf _\n     * @since 4.0.0\n     * @category Seq\n     * @returns {Object} Returns the next iterator value.\n     * @example\n     *\n     * var wrapped = _([1, 2]);\n     *\n     * wrapped.next();\n     * // => { 'done': false, 'value': 1 }\n     *\n     * wrapped.next();\n     * // => { 'done': false, 'value': 2 }\n     *\n     * wrapped.next();\n     * // => { 'done': true, 'value': undefined }\n     */\n    function wrapperNext() {\n      if (this.__values__ === undefined) {\n        this.__values__ = toArray(this.value());\n      }\n      var done = this.__index__ >= this.__values__.length,\n          value = done ? undefined : this.__values__[this.__index__++];\n\n      return { 'done': done, 'value': value };\n    }\n\n    /**\n     * Enables the wrapper to be iterable.\n     *\n     * @name Symbol.iterator\n     * @memberOf _\n     * @since 4.0.0\n     * @category Seq\n     * @returns {Object} Returns the wrapper object.\n     * @example\n     *\n     * var wrapped = _([1, 2]);\n     *\n     * wrapped[Symbol.iterator]() === wrapped;\n     * // => true\n     *\n     * Array.from(wrapped);\n     * // => [1, 2]\n     */\n    function wrapperToIterator() {\n      return this;\n    }\n\n    /**\n     * Creates a clone of the chain sequence planting `value` as the wrapped value.\n     *\n     * @name plant\n     * @memberOf _\n     * @since 3.2.0\n     * @category Seq\n     * @param {*} value The value to plant.\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var wrapped = _([1, 2]).map(square);\n     * var other = wrapped.plant([3, 4]);\n     *\n     * other.value();\n     * // => [9, 16]\n     *\n     * wrapped.value();\n     * // => [1, 4]\n     */\n    function wrapperPlant(value) {\n      var result,\n          parent = this;\n\n      while (parent instanceof baseLodash) {\n        var clone = wrapperClone(parent);\n        clone.__index__ = 0;\n        clone.__values__ = undefined;\n        if (result) {\n          previous.__wrapped__ = clone;\n        } else {\n          result = clone;\n        }\n        var previous = clone;\n        parent = parent.__wrapped__;\n      }\n      previous.__wrapped__ = value;\n      return result;\n    }\n\n    /**\n     * This method is the wrapper version of `_.reverse`.\n     *\n     * **Note:** This method mutates the wrapped array.\n     *\n     * @name reverse\n     * @memberOf _\n     * @since 0.1.0\n     * @category Seq\n     * @returns {Object} Returns the new `lodash` wrapper instance.\n     * @example\n     *\n     * var array = [1, 2, 3];\n     *\n     * _(array).reverse().value()\n     * // => [3, 2, 1]\n     *\n     * console.log(array);\n     * // => [3, 2, 1]\n     */\n    function wrapperReverse() {\n      var value = this.__wrapped__;\n      if (value instanceof LazyWrapper) {\n        var wrapped = value;\n        if (this.__actions__.length) {\n          wrapped = new LazyWrapper(this);\n        }\n        wrapped = wrapped.reverse();\n        wrapped.__actions__.push({\n          'func': thru,\n          'args': [reverse],\n          'thisArg': undefined\n        });\n        return new LodashWrapper(wrapped, this.__chain__);\n      }\n      return this.thru(reverse);\n    }\n\n    /**\n     * Executes the chain sequence to resolve the unwrapped value.\n     *\n     * @name value\n     * @memberOf _\n     * @since 0.1.0\n     * @alias toJSON, valueOf\n     * @category Seq\n     * @returns {*} Returns the resolved unwrapped value.\n     * @example\n     *\n     * _([1, 2, 3]).value();\n     * // => [1, 2, 3]\n     */\n    function wrapperValue() {\n      return baseWrapperValue(this.__wrapped__, this.__actions__);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The corresponding value of\n     * each key is the number of times the key was returned by `iteratee`. The\n     * iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.5.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * _.countBy([6.1, 4.2, 6.3], Math.floor);\n     * // => { '4': 1, '6': 2 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.countBy(['one', 'two', 'three'], 'length');\n     * // => { '3': 2, '5': 1 }\n     */\n    var countBy = createAggregator(function(result, value, key) {\n      if (hasOwnProperty.call(result, key)) {\n        ++result[key];\n      } else {\n        baseAssignValue(result, key, 1);\n      }\n    });\n\n    /**\n     * Checks if `predicate` returns truthy for **all** elements of `collection`.\n     * Iteration is stopped once `predicate` returns falsey. The predicate is\n     * invoked with three arguments: (value, index|key, collection).\n     *\n     * **Note:** This method returns `true` for\n     * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n     * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n     * elements of empty collections.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {boolean} Returns `true` if all elements pass the predicate check,\n     *  else `false`.\n     * @example\n     *\n     * _.every([true, 1, null, 'yes'], Boolean);\n     * // => false\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': false },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.every(users, { 'user': 'barney', 'active': false });\n     * // => false\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.every(users, ['active', false]);\n     * // => true\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.every(users, 'active');\n     * // => false\n     */\n    function every(collection, predicate, guard) {\n      var func = isArray(collection) ? arrayEvery : baseEvery;\n      if (guard && isIterateeCall(collection, predicate, guard)) {\n        predicate = undefined;\n      }\n      return func(collection, getIteratee(predicate, 3));\n    }\n\n    /**\n     * Iterates over elements of `collection`, returning an array of all elements\n     * `predicate` returns truthy for. The predicate is invoked with three\n     * arguments: (value, index|key, collection).\n     *\n     * **Note:** Unlike `_.remove`, this method returns a new array.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new filtered array.\n     * @see _.reject\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': true },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * _.filter(users, function(o) { return !o.active; });\n     * // => objects for ['fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.filter(users, { 'age': 36, 'active': true });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.filter(users, ['active', false]);\n     * // => objects for ['fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.filter(users, 'active');\n     * // => objects for ['barney']\n     *\n     * // Combining several predicates using `_.overEvery` or `_.overSome`.\n     * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n     * // => objects for ['fred', 'barney']\n     */\n    function filter(collection, predicate) {\n      var func = isArray(collection) ? arrayFilter : baseFilter;\n      return func(collection, getIteratee(predicate, 3));\n    }\n\n    /**\n     * Iterates over elements of `collection`, returning the first element\n     * `predicate` returns truthy for. The predicate is invoked with three\n     * arguments: (value, index|key, collection).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @returns {*} Returns the matched element, else `undefined`.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36, 'active': true },\n     *   { 'user': 'fred',    'age': 40, 'active': false },\n     *   { 'user': 'pebbles', 'age': 1,  'active': true }\n     * ];\n     *\n     * _.find(users, function(o) { return o.age < 40; });\n     * // => object for 'barney'\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.find(users, { 'age': 1, 'active': true });\n     * // => object for 'pebbles'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.find(users, ['active', false]);\n     * // => object for 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.find(users, 'active');\n     * // => object for 'barney'\n     */\n    var find = createFind(findIndex);\n\n    /**\n     * This method is like `_.find` except that it iterates over elements of\n     * `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param {number} [fromIndex=collection.length-1] The index to search from.\n     * @returns {*} Returns the matched element, else `undefined`.\n     * @example\n     *\n     * _.findLast([1, 2, 3, 4], function(n) {\n     *   return n % 2 == 1;\n     * });\n     * // => 3\n     */\n    var findLast = createFind(findLastIndex);\n\n    /**\n     * Creates a flattened array of values by running each element in `collection`\n     * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n     * with three arguments: (value, index|key, collection).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [n, n];\n     * }\n     *\n     * _.flatMap([1, 2], duplicate);\n     * // => [1, 1, 2, 2]\n     */\n    function flatMap(collection, iteratee) {\n      return baseFlatten(map(collection, iteratee), 1);\n    }\n\n    /**\n     * This method is like `_.flatMap` except that it recursively flattens the\n     * mapped results.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [[[n, n]]];\n     * }\n     *\n     * _.flatMapDeep([1, 2], duplicate);\n     * // => [1, 1, 2, 2]\n     */\n    function flatMapDeep(collection, iteratee) {\n      return baseFlatten(map(collection, iteratee), INFINITY);\n    }\n\n    /**\n     * This method is like `_.flatMap` except that it recursively flattens the\n     * mapped results up to `depth` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {number} [depth=1] The maximum recursion depth.\n     * @returns {Array} Returns the new flattened array.\n     * @example\n     *\n     * function duplicate(n) {\n     *   return [[[n, n]]];\n     * }\n     *\n     * _.flatMapDepth([1, 2], duplicate, 2);\n     * // => [[1, 1], [2, 2]]\n     */\n    function flatMapDepth(collection, iteratee, depth) {\n      depth = depth === undefined ? 1 : toInteger(depth);\n      return baseFlatten(map(collection, iteratee), depth);\n    }\n\n    /**\n     * Iterates over elements of `collection` and invokes `iteratee` for each element.\n     * The iteratee is invoked with three arguments: (value, index|key, collection).\n     * Iteratee functions may exit iteration early by explicitly returning `false`.\n     *\n     * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n     * property are iterated like arrays. To avoid this behavior use `_.forIn`\n     * or `_.forOwn` for object iteration.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @alias each\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     * @see _.forEachRight\n     * @example\n     *\n     * _.forEach([1, 2], function(value) {\n     *   console.log(value);\n     * });\n     * // => Logs `1` then `2`.\n     *\n     * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n     */\n    function forEach(collection, iteratee) {\n      var func = isArray(collection) ? arrayEach : baseEach;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.forEach` except that it iterates over elements of\n     * `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @alias eachRight\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array|Object} Returns `collection`.\n     * @see _.forEach\n     * @example\n     *\n     * _.forEachRight([1, 2], function(value) {\n     *   console.log(value);\n     * });\n     * // => Logs `2` then `1`.\n     */\n    function forEachRight(collection, iteratee) {\n      var func = isArray(collection) ? arrayEachRight : baseEachRight;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The order of grouped values\n     * is determined by the order they occur in `collection`. The corresponding\n     * value of each key is an array of elements responsible for generating the\n     * key. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n     * // => { '4': [4.2], '6': [6.1, 6.3] }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.groupBy(['one', 'two', 'three'], 'length');\n     * // => { '3': ['one', 'two'], '5': ['three'] }\n     */\n    var groupBy = createAggregator(function(result, value, key) {\n      if (hasOwnProperty.call(result, key)) {\n        result[key].push(value);\n      } else {\n        baseAssignValue(result, key, [value]);\n      }\n    });\n\n    /**\n     * Checks if `value` is in `collection`. If `collection` is a string, it's\n     * checked for a substring of `value`, otherwise\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * is used for equality comparisons. If `fromIndex` is negative, it's used as\n     * the offset from the end of `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object|string} collection The collection to inspect.\n     * @param {*} value The value to search for.\n     * @param {number} [fromIndex=0] The index to search from.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n     * @returns {boolean} Returns `true` if `value` is found, else `false`.\n     * @example\n     *\n     * _.includes([1, 2, 3], 1);\n     * // => true\n     *\n     * _.includes([1, 2, 3], 1, 2);\n     * // => false\n     *\n     * _.includes({ 'a': 1, 'b': 2 }, 1);\n     * // => true\n     *\n     * _.includes('abcd', 'bc');\n     * // => true\n     */\n    function includes(collection, value, fromIndex, guard) {\n      collection = isArrayLike(collection) ? collection : values(collection);\n      fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n      var length = collection.length;\n      if (fromIndex < 0) {\n        fromIndex = nativeMax(length + fromIndex, 0);\n      }\n      return isString(collection)\n        ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n        : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n    }\n\n    /**\n     * Invokes the method at `path` of each element in `collection`, returning\n     * an array of the results of each invoked method. Any additional arguments\n     * are provided to each invoked method. If `path` is a function, it's invoked\n     * for, and `this` bound to, each element in `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Array|Function|string} path The path of the method to invoke or\n     *  the function invoked per iteration.\n     * @param {...*} [args] The arguments to invoke each method with.\n     * @returns {Array} Returns the array of results.\n     * @example\n     *\n     * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n     * // => [[1, 5, 7], [1, 2, 3]]\n     *\n     * _.invokeMap([123, 456], String.prototype.split, '');\n     * // => [['1', '2', '3'], ['4', '5', '6']]\n     */\n    var invokeMap = baseRest(function(collection, path, args) {\n      var index = -1,\n          isFunc = typeof path == 'function',\n          result = isArrayLike(collection) ? Array(collection.length) : [];\n\n      baseEach(collection, function(value) {\n        result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n      });\n      return result;\n    });\n\n    /**\n     * Creates an object composed of keys generated from the results of running\n     * each element of `collection` thru `iteratee`. The corresponding value of\n     * each key is the last element responsible for generating the key. The\n     * iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n     * @returns {Object} Returns the composed aggregate object.\n     * @example\n     *\n     * var array = [\n     *   { 'dir': 'left', 'code': 97 },\n     *   { 'dir': 'right', 'code': 100 }\n     * ];\n     *\n     * _.keyBy(array, function(o) {\n     *   return String.fromCharCode(o.code);\n     * });\n     * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n     *\n     * _.keyBy(array, 'dir');\n     * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n     */\n    var keyBy = createAggregator(function(result, value, key) {\n      baseAssignValue(result, key, value);\n    });\n\n    /**\n     * Creates an array of values by running each element in `collection` thru\n     * `iteratee`. The iteratee is invoked with three arguments:\n     * (value, index|key, collection).\n     *\n     * Many lodash methods are guarded to work as iteratees for methods like\n     * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n     *\n     * The guarded methods are:\n     * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n     * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n     * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n     * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new mapped array.\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * _.map([4, 8], square);\n     * // => [16, 64]\n     *\n     * _.map({ 'a': 4, 'b': 8 }, square);\n     * // => [16, 64] (iteration order is not guaranteed)\n     *\n     * var users = [\n     *   { 'user': 'barney' },\n     *   { 'user': 'fred' }\n     * ];\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.map(users, 'user');\n     * // => ['barney', 'fred']\n     */\n    function map(collection, iteratee) {\n      var func = isArray(collection) ? arrayMap : baseMap;\n      return func(collection, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.sortBy` except that it allows specifying the sort\n     * orders of the iteratees to sort by. If `orders` is unspecified, all values\n     * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n     * descending or \"asc\" for ascending sort order of corresponding values.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n     *  The iteratees to sort by.\n     * @param {string[]} [orders] The sort orders of `iteratees`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n     * @returns {Array} Returns the new sorted array.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'fred',   'age': 48 },\n     *   { 'user': 'barney', 'age': 34 },\n     *   { 'user': 'fred',   'age': 40 },\n     *   { 'user': 'barney', 'age': 36 }\n     * ];\n     *\n     * // Sort by `user` in ascending order and by `age` in descending order.\n     * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n     * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n     */\n    function orderBy(collection, iteratees, orders, guard) {\n      if (collection == null) {\n        return [];\n      }\n      if (!isArray(iteratees)) {\n        iteratees = iteratees == null ? [] : [iteratees];\n      }\n      orders = guard ? undefined : orders;\n      if (!isArray(orders)) {\n        orders = orders == null ? [] : [orders];\n      }\n      return baseOrderBy(collection, iteratees, orders);\n    }\n\n    /**\n     * Creates an array of elements split into two groups, the first of which\n     * contains elements `predicate` returns truthy for, the second of which\n     * contains elements `predicate` returns falsey for. The predicate is\n     * invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the array of grouped elements.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney',  'age': 36, 'active': false },\n     *   { 'user': 'fred',    'age': 40, 'active': true },\n     *   { 'user': 'pebbles', 'age': 1,  'active': false }\n     * ];\n     *\n     * _.partition(users, function(o) { return o.active; });\n     * // => objects for [['fred'], ['barney', 'pebbles']]\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.partition(users, { 'age': 1, 'active': false });\n     * // => objects for [['pebbles'], ['barney', 'fred']]\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.partition(users, ['active', false]);\n     * // => objects for [['barney', 'pebbles'], ['fred']]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.partition(users, 'active');\n     * // => objects for [['fred'], ['barney', 'pebbles']]\n     */\n    var partition = createAggregator(function(result, value, key) {\n      result[key ? 0 : 1].push(value);\n    }, function() { return [[], []]; });\n\n    /**\n     * Reduces `collection` to a value which is the accumulated result of running\n     * each element in `collection` thru `iteratee`, where each successive\n     * invocation is supplied the return value of the previous. If `accumulator`\n     * is not given, the first element of `collection` is used as the initial\n     * value. The iteratee is invoked with four arguments:\n     * (accumulator, value, index|key, collection).\n     *\n     * Many lodash methods are guarded to work as iteratees for methods like\n     * `_.reduce`, `_.reduceRight`, and `_.transform`.\n     *\n     * The guarded methods are:\n     * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n     * and `sortBy`\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {*} [accumulator] The initial value.\n     * @returns {*} Returns the accumulated value.\n     * @see _.reduceRight\n     * @example\n     *\n     * _.reduce([1, 2], function(sum, n) {\n     *   return sum + n;\n     * }, 0);\n     * // => 3\n     *\n     * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n     *   (result[value] || (result[value] = [])).push(key);\n     *   return result;\n     * }, {});\n     * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n     */\n    function reduce(collection, iteratee, accumulator) {\n      var func = isArray(collection) ? arrayReduce : baseReduce,\n          initAccum = arguments.length < 3;\n\n      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n    }\n\n    /**\n     * This method is like `_.reduce` except that it iterates over elements of\n     * `collection` from right to left.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {*} [accumulator] The initial value.\n     * @returns {*} Returns the accumulated value.\n     * @see _.reduce\n     * @example\n     *\n     * var array = [[0, 1], [2, 3], [4, 5]];\n     *\n     * _.reduceRight(array, function(flattened, other) {\n     *   return flattened.concat(other);\n     * }, []);\n     * // => [4, 5, 2, 3, 0, 1]\n     */\n    function reduceRight(collection, iteratee, accumulator) {\n      var func = isArray(collection) ? arrayReduceRight : baseReduce,\n          initAccum = arguments.length < 3;\n\n      return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n    }\n\n    /**\n     * The opposite of `_.filter`; this method returns the elements of `collection`\n     * that `predicate` does **not** return truthy for.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the new filtered array.\n     * @see _.filter\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': false },\n     *   { 'user': 'fred',   'age': 40, 'active': true }\n     * ];\n     *\n     * _.reject(users, function(o) { return !o.active; });\n     * // => objects for ['fred']\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.reject(users, { 'age': 40, 'active': true });\n     * // => objects for ['barney']\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.reject(users, ['active', false]);\n     * // => objects for ['fred']\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.reject(users, 'active');\n     * // => objects for ['barney']\n     */\n    function reject(collection, predicate) {\n      var func = isArray(collection) ? arrayFilter : baseFilter;\n      return func(collection, negate(getIteratee(predicate, 3)));\n    }\n\n    /**\n     * Gets a random element from `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to sample.\n     * @returns {*} Returns the random element.\n     * @example\n     *\n     * _.sample([1, 2, 3, 4]);\n     * // => 2\n     */\n    function sample(collection) {\n      var func = isArray(collection) ? arraySample : baseSample;\n      return func(collection);\n    }\n\n    /**\n     * Gets `n` random elements at unique keys from `collection` up to the\n     * size of `collection`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to sample.\n     * @param {number} [n=1] The number of elements to sample.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the random elements.\n     * @example\n     *\n     * _.sampleSize([1, 2, 3], 2);\n     * // => [3, 1]\n     *\n     * _.sampleSize([1, 2, 3], 4);\n     * // => [2, 3, 1]\n     */\n    function sampleSize(collection, n, guard) {\n      if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n        n = 1;\n      } else {\n        n = toInteger(n);\n      }\n      var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n      return func(collection, n);\n    }\n\n    /**\n     * Creates an array of shuffled values, using a version of the\n     * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to shuffle.\n     * @returns {Array} Returns the new shuffled array.\n     * @example\n     *\n     * _.shuffle([1, 2, 3, 4]);\n     * // => [4, 1, 3, 2]\n     */\n    function shuffle(collection) {\n      var func = isArray(collection) ? arrayShuffle : baseShuffle;\n      return func(collection);\n    }\n\n    /**\n     * Gets the size of `collection` by returning its length for array-like\n     * values or the number of own enumerable string keyed properties for objects.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object|string} collection The collection to inspect.\n     * @returns {number} Returns the collection size.\n     * @example\n     *\n     * _.size([1, 2, 3]);\n     * // => 3\n     *\n     * _.size({ 'a': 1, 'b': 2 });\n     * // => 2\n     *\n     * _.size('pebbles');\n     * // => 7\n     */\n    function size(collection) {\n      if (collection == null) {\n        return 0;\n      }\n      if (isArrayLike(collection)) {\n        return isString(collection) ? stringSize(collection) : collection.length;\n      }\n      var tag = getTag(collection);\n      if (tag == mapTag || tag == setTag) {\n        return collection.size;\n      }\n      return baseKeys(collection).length;\n    }\n\n    /**\n     * Checks if `predicate` returns truthy for **any** element of `collection`.\n     * Iteration is stopped once `predicate` returns truthy. The predicate is\n     * invoked with three arguments: (value, index|key, collection).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {boolean} Returns `true` if any element passes the predicate check,\n     *  else `false`.\n     * @example\n     *\n     * _.some([null, 0, 'yes', false], Boolean);\n     * // => true\n     *\n     * var users = [\n     *   { 'user': 'barney', 'active': true },\n     *   { 'user': 'fred',   'active': false }\n     * ];\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.some(users, { 'user': 'barney', 'active': false });\n     * // => false\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.some(users, ['active', false]);\n     * // => true\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.some(users, 'active');\n     * // => true\n     */\n    function some(collection, predicate, guard) {\n      var func = isArray(collection) ? arraySome : baseSome;\n      if (guard && isIterateeCall(collection, predicate, guard)) {\n        predicate = undefined;\n      }\n      return func(collection, getIteratee(predicate, 3));\n    }\n\n    /**\n     * Creates an array of elements, sorted in ascending order by the results of\n     * running each element in a collection thru each iteratee. This method\n     * performs a stable sort, that is, it preserves the original sort order of\n     * equal elements. The iteratees are invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Collection\n     * @param {Array|Object} collection The collection to iterate over.\n     * @param {...(Function|Function[])} [iteratees=[_.identity]]\n     *  The iteratees to sort by.\n     * @returns {Array} Returns the new sorted array.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'fred',   'age': 48 },\n     *   { 'user': 'barney', 'age': 36 },\n     *   { 'user': 'fred',   'age': 30 },\n     *   { 'user': 'barney', 'age': 34 }\n     * ];\n     *\n     * _.sortBy(users, [function(o) { return o.user; }]);\n     * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n     *\n     * _.sortBy(users, ['user', 'age']);\n     * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n     */\n    var sortBy = baseRest(function(collection, iteratees) {\n      if (collection == null) {\n        return [];\n      }\n      var length = iteratees.length;\n      if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n        iteratees = [];\n      } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n        iteratees = [iteratees[0]];\n      }\n      return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n    });\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Gets the timestamp of the number of milliseconds that have elapsed since\n     * the Unix epoch (1 January 1970 00:00:00 UTC).\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Date\n     * @returns {number} Returns the timestamp.\n     * @example\n     *\n     * _.defer(function(stamp) {\n     *   console.log(_.now() - stamp);\n     * }, _.now());\n     * // => Logs the number of milliseconds it took for the deferred invocation.\n     */\n    var now = ctxNow || function() {\n      return root.Date.now();\n    };\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * The opposite of `_.before`; this method creates a function that invokes\n     * `func` once it's called `n` or more times.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {number} n The number of calls before `func` is invoked.\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * var saves = ['profile', 'settings'];\n     *\n     * var done = _.after(saves.length, function() {\n     *   console.log('done saving!');\n     * });\n     *\n     * _.forEach(saves, function(type) {\n     *   asyncSave({ 'type': type, 'complete': done });\n     * });\n     * // => Logs 'done saving!' after the two async saves have completed.\n     */\n    function after(n, func) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      n = toInteger(n);\n      return function() {\n        if (--n < 1) {\n          return func.apply(this, arguments);\n        }\n      };\n    }\n\n    /**\n     * Creates a function that invokes `func`, with up to `n` arguments,\n     * ignoring any additional arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to cap arguments for.\n     * @param {number} [n=func.length] The arity cap.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new capped function.\n     * @example\n     *\n     * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n     * // => [6, 8, 10]\n     */\n    function ary(func, n, guard) {\n      n = guard ? undefined : n;\n      n = (func && n == null) ? func.length : n;\n      return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n    }\n\n    /**\n     * Creates a function that invokes `func`, with the `this` binding and arguments\n     * of the created function, while it's called less than `n` times. Subsequent\n     * calls to the created function return the result of the last `func` invocation.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {number} n The number of calls at which `func` is no longer invoked.\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * jQuery(element).on('click', _.before(5, addContactToList));\n     * // => Allows adding up to 4 contacts to the list.\n     */\n    function before(n, func) {\n      var result;\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      n = toInteger(n);\n      return function() {\n        if (--n > 0) {\n          result = func.apply(this, arguments);\n        }\n        if (n <= 1) {\n          func = undefined;\n        }\n        return result;\n      };\n    }\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of `thisArg`\n     * and `partials` prepended to the arguments it receives.\n     *\n     * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n     * may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n     * property of bound functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to bind.\n     * @param {*} thisArg The `this` binding of `func`.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new bound function.\n     * @example\n     *\n     * function greet(greeting, punctuation) {\n     *   return greeting + ' ' + this.user + punctuation;\n     * }\n     *\n     * var object = { 'user': 'fred' };\n     *\n     * var bound = _.bind(greet, object, 'hi');\n     * bound('!');\n     * // => 'hi fred!'\n     *\n     * // Bound with placeholders.\n     * var bound = _.bind(greet, object, _, '!');\n     * bound('hi');\n     * // => 'hi fred!'\n     */\n    var bind = baseRest(function(func, thisArg, partials) {\n      var bitmask = WRAP_BIND_FLAG;\n      if (partials.length) {\n        var holders = replaceHolders(partials, getHolder(bind));\n        bitmask |= WRAP_PARTIAL_FLAG;\n      }\n      return createWrap(func, bitmask, thisArg, partials, holders);\n    });\n\n    /**\n     * Creates a function that invokes the method at `object[key]` with `partials`\n     * prepended to the arguments it receives.\n     *\n     * This method differs from `_.bind` by allowing bound functions to reference\n     * methods that may be redefined or don't yet exist. See\n     * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n     * for more details.\n     *\n     * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.10.0\n     * @category Function\n     * @param {Object} object The object to invoke the method on.\n     * @param {string} key The key of the method.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new bound function.\n     * @example\n     *\n     * var object = {\n     *   'user': 'fred',\n     *   'greet': function(greeting, punctuation) {\n     *     return greeting + ' ' + this.user + punctuation;\n     *   }\n     * };\n     *\n     * var bound = _.bindKey(object, 'greet', 'hi');\n     * bound('!');\n     * // => 'hi fred!'\n     *\n     * object.greet = function(greeting, punctuation) {\n     *   return greeting + 'ya ' + this.user + punctuation;\n     * };\n     *\n     * bound('!');\n     * // => 'hiya fred!'\n     *\n     * // Bound with placeholders.\n     * var bound = _.bindKey(object, 'greet', _, '!');\n     * bound('hi');\n     * // => 'hiya fred!'\n     */\n    var bindKey = baseRest(function(object, key, partials) {\n      var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n      if (partials.length) {\n        var holders = replaceHolders(partials, getHolder(bindKey));\n        bitmask |= WRAP_PARTIAL_FLAG;\n      }\n      return createWrap(key, bitmask, object, partials, holders);\n    });\n\n    /**\n     * Creates a function that accepts arguments of `func` and either invokes\n     * `func` returning its result, if at least `arity` number of arguments have\n     * been provided, or returns a function that accepts the remaining `func`\n     * arguments, and so on. The arity of `func` may be specified if `func.length`\n     * is not sufficient.\n     *\n     * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n     * may be used as a placeholder for provided arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of curried functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Function\n     * @param {Function} func The function to curry.\n     * @param {number} [arity=func.length] The arity of `func`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new curried function.\n     * @example\n     *\n     * var abc = function(a, b, c) {\n     *   return [a, b, c];\n     * };\n     *\n     * var curried = _.curry(abc);\n     *\n     * curried(1)(2)(3);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2)(3);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2, 3);\n     * // => [1, 2, 3]\n     *\n     * // Curried with placeholders.\n     * curried(1)(_, 3)(2);\n     * // => [1, 2, 3]\n     */\n    function curry(func, arity, guard) {\n      arity = guard ? undefined : arity;\n      var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n      result.placeholder = curry.placeholder;\n      return result;\n    }\n\n    /**\n     * This method is like `_.curry` except that arguments are applied to `func`\n     * in the manner of `_.partialRight` instead of `_.partial`.\n     *\n     * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for provided arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of curried functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to curry.\n     * @param {number} [arity=func.length] The arity of `func`.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the new curried function.\n     * @example\n     *\n     * var abc = function(a, b, c) {\n     *   return [a, b, c];\n     * };\n     *\n     * var curried = _.curryRight(abc);\n     *\n     * curried(3)(2)(1);\n     * // => [1, 2, 3]\n     *\n     * curried(2, 3)(1);\n     * // => [1, 2, 3]\n     *\n     * curried(1, 2, 3);\n     * // => [1, 2, 3]\n     *\n     * // Curried with placeholders.\n     * curried(3)(1, _)(2);\n     * // => [1, 2, 3]\n     */\n    function curryRight(func, arity, guard) {\n      arity = guard ? undefined : arity;\n      var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n      result.placeholder = curryRight.placeholder;\n      return result;\n    }\n\n    /**\n     * Creates a debounced function that delays invoking `func` until after `wait`\n     * milliseconds have elapsed since the last time the debounced function was\n     * invoked. The debounced function comes with a `cancel` method to cancel\n     * delayed `func` invocations and a `flush` method to immediately invoke them.\n     * Provide `options` to indicate whether `func` should be invoked on the\n     * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n     * with the last arguments provided to the debounced function. Subsequent\n     * calls to the debounced function return the result of the last `func`\n     * invocation.\n     *\n     * **Note:** If `leading` and `trailing` options are `true`, `func` is\n     * invoked on the trailing edge of the timeout only if the debounced function\n     * is invoked more than once during the `wait` timeout.\n     *\n     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n     * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n     *\n     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n     * for details over the differences between `_.debounce` and `_.throttle`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to debounce.\n     * @param {number} [wait=0] The number of milliseconds to delay.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.leading=false]\n     *  Specify invoking on the leading edge of the timeout.\n     * @param {number} [options.maxWait]\n     *  The maximum time `func` is allowed to be delayed before it's invoked.\n     * @param {boolean} [options.trailing=true]\n     *  Specify invoking on the trailing edge of the timeout.\n     * @returns {Function} Returns the new debounced function.\n     * @example\n     *\n     * // Avoid costly calculations while the window size is in flux.\n     * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n     *\n     * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n     * jQuery(element).on('click', _.debounce(sendMail, 300, {\n     *   'leading': true,\n     *   'trailing': false\n     * }));\n     *\n     * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n     * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n     * var source = new EventSource('/stream');\n     * jQuery(source).on('message', debounced);\n     *\n     * // Cancel the trailing debounced invocation.\n     * jQuery(window).on('popstate', debounced.cancel);\n     */\n    function debounce(func, wait, options) {\n      var lastArgs,\n          lastThis,\n          maxWait,\n          result,\n          timerId,\n          lastCallTime,\n          lastInvokeTime = 0,\n          leading = false,\n          maxing = false,\n          trailing = true;\n\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      wait = toNumber(wait) || 0;\n      if (isObject(options)) {\n        leading = !!options.leading;\n        maxing = 'maxWait' in options;\n        maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n        trailing = 'trailing' in options ? !!options.trailing : trailing;\n      }\n\n      function invokeFunc(time) {\n        var args = lastArgs,\n            thisArg = lastThis;\n\n        lastArgs = lastThis = undefined;\n        lastInvokeTime = time;\n        result = func.apply(thisArg, args);\n        return result;\n      }\n\n      function leadingEdge(time) {\n        // Reset any `maxWait` timer.\n        lastInvokeTime = time;\n        // Start the timer for the trailing edge.\n        timerId = setTimeout(timerExpired, wait);\n        // Invoke the leading edge.\n        return leading ? invokeFunc(time) : result;\n      }\n\n      function remainingWait(time) {\n        var timeSinceLastCall = time - lastCallTime,\n            timeSinceLastInvoke = time - lastInvokeTime,\n            timeWaiting = wait - timeSinceLastCall;\n\n        return maxing\n          ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n          : timeWaiting;\n      }\n\n      function shouldInvoke(time) {\n        var timeSinceLastCall = time - lastCallTime,\n            timeSinceLastInvoke = time - lastInvokeTime;\n\n        // Either this is the first call, activity has stopped and we're at the\n        // trailing edge, the system time has gone backwards and we're treating\n        // it as the trailing edge, or we've hit the `maxWait` limit.\n        return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n          (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n      }\n\n      function timerExpired() {\n        var time = now();\n        if (shouldInvoke(time)) {\n          return trailingEdge(time);\n        }\n        // Restart the timer.\n        timerId = setTimeout(timerExpired, remainingWait(time));\n      }\n\n      function trailingEdge(time) {\n        timerId = undefined;\n\n        // Only invoke if we have `lastArgs` which means `func` has been\n        // debounced at least once.\n        if (trailing && lastArgs) {\n          return invokeFunc(time);\n        }\n        lastArgs = lastThis = undefined;\n        return result;\n      }\n\n      function cancel() {\n        if (timerId !== undefined) {\n          clearTimeout(timerId);\n        }\n        lastInvokeTime = 0;\n        lastArgs = lastCallTime = lastThis = timerId = undefined;\n      }\n\n      function flush() {\n        return timerId === undefined ? result : trailingEdge(now());\n      }\n\n      function debounced() {\n        var time = now(),\n            isInvoking = shouldInvoke(time);\n\n        lastArgs = arguments;\n        lastThis = this;\n        lastCallTime = time;\n\n        if (isInvoking) {\n          if (timerId === undefined) {\n            return leadingEdge(lastCallTime);\n          }\n          if (maxing) {\n            // Handle invocations in a tight loop.\n            clearTimeout(timerId);\n            timerId = setTimeout(timerExpired, wait);\n            return invokeFunc(lastCallTime);\n          }\n        }\n        if (timerId === undefined) {\n          timerId = setTimeout(timerExpired, wait);\n        }\n        return result;\n      }\n      debounced.cancel = cancel;\n      debounced.flush = flush;\n      return debounced;\n    }\n\n    /**\n     * Defers invoking the `func` until the current call stack has cleared. Any\n     * additional arguments are provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to defer.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {number} Returns the timer id.\n     * @example\n     *\n     * _.defer(function(text) {\n     *   console.log(text);\n     * }, 'deferred');\n     * // => Logs 'deferred' after one millisecond.\n     */\n    var defer = baseRest(function(func, args) {\n      return baseDelay(func, 1, args);\n    });\n\n    /**\n     * Invokes `func` after `wait` milliseconds. Any additional arguments are\n     * provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to delay.\n     * @param {number} wait The number of milliseconds to delay invocation.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {number} Returns the timer id.\n     * @example\n     *\n     * _.delay(function(text) {\n     *   console.log(text);\n     * }, 1000, 'later');\n     * // => Logs 'later' after one second.\n     */\n    var delay = baseRest(function(func, wait, args) {\n      return baseDelay(func, toNumber(wait) || 0, args);\n    });\n\n    /**\n     * Creates a function that invokes `func` with arguments reversed.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\n     * @param {Function} func The function to flip arguments for.\n     * @returns {Function} Returns the new flipped function.\n     * @example\n     *\n     * var flipped = _.flip(function() {\n     *   return _.toArray(arguments);\n     * });\n     *\n     * flipped('a', 'b', 'c', 'd');\n     * // => ['d', 'c', 'b', 'a']\n     */\n    function flip(func) {\n      return createWrap(func, WRAP_FLIP_FLAG);\n    }\n\n    /**\n     * Creates a function that memoizes the result of `func`. If `resolver` is\n     * provided, it determines the cache key for storing the result based on the\n     * arguments provided to the memoized function. By default, the first argument\n     * provided to the memoized function is used as the map cache key. The `func`\n     * is invoked with the `this` binding of the memoized function.\n     *\n     * **Note:** The cache is exposed as the `cache` property on the memoized\n     * function. Its creation may be customized by replacing the `_.memoize.Cache`\n     * constructor with one whose instances implement the\n     * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n     * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to have its output memoized.\n     * @param {Function} [resolver] The function to resolve the cache key.\n     * @returns {Function} Returns the new memoized function.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2 };\n     * var other = { 'c': 3, 'd': 4 };\n     *\n     * var values = _.memoize(_.values);\n     * values(object);\n     * // => [1, 2]\n     *\n     * values(other);\n     * // => [3, 4]\n     *\n     * object.a = 2;\n     * values(object);\n     * // => [1, 2]\n     *\n     * // Modify the result cache.\n     * values.cache.set(object, ['a', 'b']);\n     * values(object);\n     * // => ['a', 'b']\n     *\n     * // Replace `_.memoize.Cache`.\n     * _.memoize.Cache = WeakMap;\n     */\n    function memoize(func, resolver) {\n      if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      var memoized = function() {\n        var args = arguments,\n            key = resolver ? resolver.apply(this, args) : args[0],\n            cache = memoized.cache;\n\n        if (cache.has(key)) {\n          return cache.get(key);\n        }\n        var result = func.apply(this, args);\n        memoized.cache = cache.set(key, result) || cache;\n        return result;\n      };\n      memoized.cache = new (memoize.Cache || MapCache);\n      return memoized;\n    }\n\n    // Expose `MapCache`.\n    memoize.Cache = MapCache;\n\n    /**\n     * Creates a function that negates the result of the predicate `func`. The\n     * `func` predicate is invoked with the `this` binding and arguments of the\n     * created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} predicate The predicate to negate.\n     * @returns {Function} Returns the new negated function.\n     * @example\n     *\n     * function isEven(n) {\n     *   return n % 2 == 0;\n     * }\n     *\n     * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n     * // => [1, 3, 5]\n     */\n    function negate(predicate) {\n      if (typeof predicate != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      return function() {\n        var args = arguments;\n        switch (args.length) {\n          case 0: return !predicate.call(this);\n          case 1: return !predicate.call(this, args[0]);\n          case 2: return !predicate.call(this, args[0], args[1]);\n          case 3: return !predicate.call(this, args[0], args[1], args[2]);\n        }\n        return !predicate.apply(this, args);\n      };\n    }\n\n    /**\n     * Creates a function that is restricted to invoking `func` once. Repeat calls\n     * to the function return the value of the first invocation. The `func` is\n     * invoked with the `this` binding and arguments of the created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to restrict.\n     * @returns {Function} Returns the new restricted function.\n     * @example\n     *\n     * var initialize = _.once(createApplication);\n     * initialize();\n     * initialize();\n     * // => `createApplication` is invoked once\n     */\n    function once(func) {\n      return before(2, func);\n    }\n\n    /**\n     * Creates a function that invokes `func` with its arguments transformed.\n     *\n     * @static\n     * @since 4.0.0\n     * @memberOf _\n     * @category Function\n     * @param {Function} func The function to wrap.\n     * @param {...(Function|Function[])} [transforms=[_.identity]]\n     *  The argument transforms.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * function doubled(n) {\n     *   return n * 2;\n     * }\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var func = _.overArgs(function(x, y) {\n     *   return [x, y];\n     * }, [square, doubled]);\n     *\n     * func(9, 3);\n     * // => [81, 6]\n     *\n     * func(10, 5);\n     * // => [100, 10]\n     */\n    var overArgs = castRest(function(func, transforms) {\n      transforms = (transforms.length == 1 && isArray(transforms[0]))\n        ? arrayMap(transforms[0], baseUnary(getIteratee()))\n        : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n      var funcsLength = transforms.length;\n      return baseRest(function(args) {\n        var index = -1,\n            length = nativeMin(args.length, funcsLength);\n\n        while (++index < length) {\n          args[index] = transforms[index].call(this, args[index]);\n        }\n        return apply(func, this, args);\n      });\n    });\n\n    /**\n     * Creates a function that invokes `func` with `partials` prepended to the\n     * arguments it receives. This method is like `_.bind` except it does **not**\n     * alter the `this` binding.\n     *\n     * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of partially\n     * applied functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.2.0\n     * @category Function\n     * @param {Function} func The function to partially apply arguments to.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new partially applied function.\n     * @example\n     *\n     * function greet(greeting, name) {\n     *   return greeting + ' ' + name;\n     * }\n     *\n     * var sayHelloTo = _.partial(greet, 'hello');\n     * sayHelloTo('fred');\n     * // => 'hello fred'\n     *\n     * // Partially applied with placeholders.\n     * var greetFred = _.partial(greet, _, 'fred');\n     * greetFred('hi');\n     * // => 'hi fred'\n     */\n    var partial = baseRest(function(func, partials) {\n      var holders = replaceHolders(partials, getHolder(partial));\n      return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n    });\n\n    /**\n     * This method is like `_.partial` except that partially applied arguments\n     * are appended to the arguments it receives.\n     *\n     * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n     * builds, may be used as a placeholder for partially applied arguments.\n     *\n     * **Note:** This method doesn't set the \"length\" property of partially\n     * applied functions.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Function\n     * @param {Function} func The function to partially apply arguments to.\n     * @param {...*} [partials] The arguments to be partially applied.\n     * @returns {Function} Returns the new partially applied function.\n     * @example\n     *\n     * function greet(greeting, name) {\n     *   return greeting + ' ' + name;\n     * }\n     *\n     * var greetFred = _.partialRight(greet, 'fred');\n     * greetFred('hi');\n     * // => 'hi fred'\n     *\n     * // Partially applied with placeholders.\n     * var sayHelloTo = _.partialRight(greet, 'hello', _);\n     * sayHelloTo('fred');\n     * // => 'hello fred'\n     */\n    var partialRight = baseRest(function(func, partials) {\n      var holders = replaceHolders(partials, getHolder(partialRight));\n      return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n    });\n\n    /**\n     * Creates a function that invokes `func` with arguments arranged according\n     * to the specified `indexes` where the argument value at the first index is\n     * provided as the first argument, the argument value at the second index is\n     * provided as the second argument, and so on.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Function\n     * @param {Function} func The function to rearrange arguments for.\n     * @param {...(number|number[])} indexes The arranged argument indexes.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var rearged = _.rearg(function(a, b, c) {\n     *   return [a, b, c];\n     * }, [2, 0, 1]);\n     *\n     * rearged('b', 'c', 'a')\n     * // => ['a', 'b', 'c']\n     */\n    var rearg = flatRest(function(func, indexes) {\n      return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n    });\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of the\n     * created function and arguments from `start` and beyond provided as\n     * an array.\n     *\n     * **Note:** This method is based on the\n     * [rest parameter](https://mdn.io/rest_parameters).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\n     * @param {Function} func The function to apply a rest parameter to.\n     * @param {number} [start=func.length-1] The start position of the rest parameter.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var say = _.rest(function(what, names) {\n     *   return what + ' ' + _.initial(names).join(', ') +\n     *     (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n     * });\n     *\n     * say('hello', 'fred', 'barney', 'pebbles');\n     * // => 'hello fred, barney, & pebbles'\n     */\n    function rest(func, start) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      start = start === undefined ? start : toInteger(start);\n      return baseRest(func, start);\n    }\n\n    /**\n     * Creates a function that invokes `func` with the `this` binding of the\n     * create function and an array of arguments much like\n     * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n     *\n     * **Note:** This method is based on the\n     * [spread operator](https://mdn.io/spread_operator).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Function\n     * @param {Function} func The function to spread arguments over.\n     * @param {number} [start=0] The start position of the spread.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var say = _.spread(function(who, what) {\n     *   return who + ' says ' + what;\n     * });\n     *\n     * say(['fred', 'hello']);\n     * // => 'fred says hello'\n     *\n     * var numbers = Promise.all([\n     *   Promise.resolve(40),\n     *   Promise.resolve(36)\n     * ]);\n     *\n     * numbers.then(_.spread(function(x, y) {\n     *   return x + y;\n     * }));\n     * // => a Promise of 76\n     */\n    function spread(func, start) {\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      start = start == null ? 0 : nativeMax(toInteger(start), 0);\n      return baseRest(function(args) {\n        var array = args[start],\n            otherArgs = castSlice(args, 0, start);\n\n        if (array) {\n          arrayPush(otherArgs, array);\n        }\n        return apply(func, this, otherArgs);\n      });\n    }\n\n    /**\n     * Creates a throttled function that only invokes `func` at most once per\n     * every `wait` milliseconds. The throttled function comes with a `cancel`\n     * method to cancel delayed `func` invocations and a `flush` method to\n     * immediately invoke them. Provide `options` to indicate whether `func`\n     * should be invoked on the leading and/or trailing edge of the `wait`\n     * timeout. The `func` is invoked with the last arguments provided to the\n     * throttled function. Subsequent calls to the throttled function return the\n     * result of the last `func` invocation.\n     *\n     * **Note:** If `leading` and `trailing` options are `true`, `func` is\n     * invoked on the trailing edge of the timeout only if the throttled function\n     * is invoked more than once during the `wait` timeout.\n     *\n     * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n     * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n     *\n     * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n     * for details over the differences between `_.throttle` and `_.debounce`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {Function} func The function to throttle.\n     * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.leading=true]\n     *  Specify invoking on the leading edge of the timeout.\n     * @param {boolean} [options.trailing=true]\n     *  Specify invoking on the trailing edge of the timeout.\n     * @returns {Function} Returns the new throttled function.\n     * @example\n     *\n     * // Avoid excessively updating the position while scrolling.\n     * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n     *\n     * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n     * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n     * jQuery(element).on('click', throttled);\n     *\n     * // Cancel the trailing throttled invocation.\n     * jQuery(window).on('popstate', throttled.cancel);\n     */\n    function throttle(func, wait, options) {\n      var leading = true,\n          trailing = true;\n\n      if (typeof func != 'function') {\n        throw new TypeError(FUNC_ERROR_TEXT);\n      }\n      if (isObject(options)) {\n        leading = 'leading' in options ? !!options.leading : leading;\n        trailing = 'trailing' in options ? !!options.trailing : trailing;\n      }\n      return debounce(func, wait, {\n        'leading': leading,\n        'maxWait': wait,\n        'trailing': trailing\n      });\n    }\n\n    /**\n     * Creates a function that accepts up to one argument, ignoring any\n     * additional arguments.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Function\n     * @param {Function} func The function to cap arguments for.\n     * @returns {Function} Returns the new capped function.\n     * @example\n     *\n     * _.map(['6', '8', '10'], _.unary(parseInt));\n     * // => [6, 8, 10]\n     */\n    function unary(func) {\n      return ary(func, 1);\n    }\n\n    /**\n     * Creates a function that provides `value` to `wrapper` as its first\n     * argument. Any additional arguments provided to the function are appended\n     * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n     * binding of the created function.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Function\n     * @param {*} value The value to wrap.\n     * @param {Function} [wrapper=identity] The wrapper function.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var p = _.wrap(_.escape, function(func, text) {\n     *   return '<p>' + func(text) + '</p>';\n     * });\n     *\n     * p('fred, barney, & pebbles');\n     * // => '<p>fred, barney, &amp; pebbles</p>'\n     */\n    function wrap(value, wrapper) {\n      return partial(castFunction(wrapper), value);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Casts `value` as an array if it's not one.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.4.0\n     * @category Lang\n     * @param {*} value The value to inspect.\n     * @returns {Array} Returns the cast array.\n     * @example\n     *\n     * _.castArray(1);\n     * // => [1]\n     *\n     * _.castArray({ 'a': 1 });\n     * // => [{ 'a': 1 }]\n     *\n     * _.castArray('abc');\n     * // => ['abc']\n     *\n     * _.castArray(null);\n     * // => [null]\n     *\n     * _.castArray(undefined);\n     * // => [undefined]\n     *\n     * _.castArray();\n     * // => []\n     *\n     * var array = [1, 2, 3];\n     * console.log(_.castArray(array) === array);\n     * // => true\n     */\n    function castArray() {\n      if (!arguments.length) {\n        return [];\n      }\n      var value = arguments[0];\n      return isArray(value) ? value : [value];\n    }\n\n    /**\n     * Creates a shallow clone of `value`.\n     *\n     * **Note:** This method is loosely based on the\n     * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n     * and supports cloning arrays, array buffers, booleans, date objects, maps,\n     * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n     * arrays. The own enumerable properties of `arguments` objects are cloned\n     * as plain objects. An empty object is returned for uncloneable values such\n     * as error objects, functions, DOM nodes, and WeakMaps.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to clone.\n     * @returns {*} Returns the cloned value.\n     * @see _.cloneDeep\n     * @example\n     *\n     * var objects = [{ 'a': 1 }, { 'b': 2 }];\n     *\n     * var shallow = _.clone(objects);\n     * console.log(shallow[0] === objects[0]);\n     * // => true\n     */\n    function clone(value) {\n      return baseClone(value, CLONE_SYMBOLS_FLAG);\n    }\n\n    /**\n     * This method is like `_.clone` except that it accepts `customizer` which\n     * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n     * cloning is handled by the method instead. The `customizer` is invoked with\n     * up to four arguments; (value [, index|key, object, stack]).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to clone.\n     * @param {Function} [customizer] The function to customize cloning.\n     * @returns {*} Returns the cloned value.\n     * @see _.cloneDeepWith\n     * @example\n     *\n     * function customizer(value) {\n     *   if (_.isElement(value)) {\n     *     return value.cloneNode(false);\n     *   }\n     * }\n     *\n     * var el = _.cloneWith(document.body, customizer);\n     *\n     * console.log(el === document.body);\n     * // => false\n     * console.log(el.nodeName);\n     * // => 'BODY'\n     * console.log(el.childNodes.length);\n     * // => 0\n     */\n    function cloneWith(value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n    }\n\n    /**\n     * This method is like `_.clone` except that it recursively clones `value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Lang\n     * @param {*} value The value to recursively clone.\n     * @returns {*} Returns the deep cloned value.\n     * @see _.clone\n     * @example\n     *\n     * var objects = [{ 'a': 1 }, { 'b': 2 }];\n     *\n     * var deep = _.cloneDeep(objects);\n     * console.log(deep[0] === objects[0]);\n     * // => false\n     */\n    function cloneDeep(value) {\n      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n    }\n\n    /**\n     * This method is like `_.cloneWith` except that it recursively clones `value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to recursively clone.\n     * @param {Function} [customizer] The function to customize cloning.\n     * @returns {*} Returns the deep cloned value.\n     * @see _.cloneWith\n     * @example\n     *\n     * function customizer(value) {\n     *   if (_.isElement(value)) {\n     *     return value.cloneNode(true);\n     *   }\n     * }\n     *\n     * var el = _.cloneDeepWith(document.body, customizer);\n     *\n     * console.log(el === document.body);\n     * // => false\n     * console.log(el.nodeName);\n     * // => 'BODY'\n     * console.log(el.childNodes.length);\n     * // => 20\n     */\n    function cloneDeepWith(value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n    }\n\n    /**\n     * Checks if `object` conforms to `source` by invoking the predicate\n     * properties of `source` with the corresponding property values of `object`.\n     *\n     * **Note:** This method is equivalent to `_.conforms` when `source` is\n     * partially applied.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.14.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2 };\n     *\n     * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n     * // => true\n     *\n     * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n     * // => false\n     */\n    function conformsTo(object, source) {\n      return source == null || baseConformsTo(object, source, keys(source));\n    }\n\n    /**\n     * Performs a\n     * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n     * comparison between two values to determine if they are equivalent.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1 };\n     * var other = { 'a': 1 };\n     *\n     * _.eq(object, object);\n     * // => true\n     *\n     * _.eq(object, other);\n     * // => false\n     *\n     * _.eq('a', 'a');\n     * // => true\n     *\n     * _.eq('a', Object('a'));\n     * // => false\n     *\n     * _.eq(NaN, NaN);\n     * // => true\n     */\n    function eq(value, other) {\n      return value === other || (value !== value && other !== other);\n    }\n\n    /**\n     * Checks if `value` is greater than `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is greater than `other`,\n     *  else `false`.\n     * @see _.lt\n     * @example\n     *\n     * _.gt(3, 1);\n     * // => true\n     *\n     * _.gt(3, 3);\n     * // => false\n     *\n     * _.gt(1, 3);\n     * // => false\n     */\n    var gt = createRelationalOperation(baseGt);\n\n    /**\n     * Checks if `value` is greater than or equal to `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is greater than or equal to\n     *  `other`, else `false`.\n     * @see _.lte\n     * @example\n     *\n     * _.gte(3, 1);\n     * // => true\n     *\n     * _.gte(3, 3);\n     * // => true\n     *\n     * _.gte(1, 3);\n     * // => false\n     */\n    var gte = createRelationalOperation(function(value, other) {\n      return value >= other;\n    });\n\n    /**\n     * Checks if `value` is likely an `arguments` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n     *  else `false`.\n     * @example\n     *\n     * _.isArguments(function() { return arguments; }());\n     * // => true\n     *\n     * _.isArguments([1, 2, 3]);\n     * // => false\n     */\n    var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n      return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n        !propertyIsEnumerable.call(value, 'callee');\n    };\n\n    /**\n     * Checks if `value` is classified as an `Array` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n     * @example\n     *\n     * _.isArray([1, 2, 3]);\n     * // => true\n     *\n     * _.isArray(document.body.children);\n     * // => false\n     *\n     * _.isArray('abc');\n     * // => false\n     *\n     * _.isArray(_.noop);\n     * // => false\n     */\n    var isArray = Array.isArray;\n\n    /**\n     * Checks if `value` is classified as an `ArrayBuffer` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n     * @example\n     *\n     * _.isArrayBuffer(new ArrayBuffer(2));\n     * // => true\n     *\n     * _.isArrayBuffer(new Array(2));\n     * // => false\n     */\n    var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n    /**\n     * Checks if `value` is array-like. A value is considered array-like if it's\n     * not a function and has a `value.length` that's an integer greater than or\n     * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n     * @example\n     *\n     * _.isArrayLike([1, 2, 3]);\n     * // => true\n     *\n     * _.isArrayLike(document.body.children);\n     * // => true\n     *\n     * _.isArrayLike('abc');\n     * // => true\n     *\n     * _.isArrayLike(_.noop);\n     * // => false\n     */\n    function isArrayLike(value) {\n      return value != null && isLength(value.length) && !isFunction(value);\n    }\n\n    /**\n     * This method is like `_.isArrayLike` except that it also checks if `value`\n     * is an object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an array-like object,\n     *  else `false`.\n     * @example\n     *\n     * _.isArrayLikeObject([1, 2, 3]);\n     * // => true\n     *\n     * _.isArrayLikeObject(document.body.children);\n     * // => true\n     *\n     * _.isArrayLikeObject('abc');\n     * // => false\n     *\n     * _.isArrayLikeObject(_.noop);\n     * // => false\n     */\n    function isArrayLikeObject(value) {\n      return isObjectLike(value) && isArrayLike(value);\n    }\n\n    /**\n     * Checks if `value` is classified as a boolean primitive or object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n     * @example\n     *\n     * _.isBoolean(false);\n     * // => true\n     *\n     * _.isBoolean(null);\n     * // => false\n     */\n    function isBoolean(value) {\n      return value === true || value === false ||\n        (isObjectLike(value) && baseGetTag(value) == boolTag);\n    }\n\n    /**\n     * Checks if `value` is a buffer.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n     * @example\n     *\n     * _.isBuffer(new Buffer(2));\n     * // => true\n     *\n     * _.isBuffer(new Uint8Array(2));\n     * // => false\n     */\n    var isBuffer = nativeIsBuffer || stubFalse;\n\n    /**\n     * Checks if `value` is classified as a `Date` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n     * @example\n     *\n     * _.isDate(new Date);\n     * // => true\n     *\n     * _.isDate('Mon April 23 2012');\n     * // => false\n     */\n    var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n    /**\n     * Checks if `value` is likely a DOM element.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n     * @example\n     *\n     * _.isElement(document.body);\n     * // => true\n     *\n     * _.isElement('<body>');\n     * // => false\n     */\n    function isElement(value) {\n      return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n    }\n\n    /**\n     * Checks if `value` is an empty object, collection, map, or set.\n     *\n     * Objects are considered empty if they have no own enumerable string keyed\n     * properties.\n     *\n     * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n     * jQuery-like collections are considered empty if they have a `length` of `0`.\n     * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n     * @example\n     *\n     * _.isEmpty(null);\n     * // => true\n     *\n     * _.isEmpty(true);\n     * // => true\n     *\n     * _.isEmpty(1);\n     * // => true\n     *\n     * _.isEmpty([1, 2, 3]);\n     * // => false\n     *\n     * _.isEmpty({ 'a': 1 });\n     * // => false\n     */\n    function isEmpty(value) {\n      if (value == null) {\n        return true;\n      }\n      if (isArrayLike(value) &&\n          (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n            isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n        return !value.length;\n      }\n      var tag = getTag(value);\n      if (tag == mapTag || tag == setTag) {\n        return !value.size;\n      }\n      if (isPrototype(value)) {\n        return !baseKeys(value).length;\n      }\n      for (var key in value) {\n        if (hasOwnProperty.call(value, key)) {\n          return false;\n        }\n      }\n      return true;\n    }\n\n    /**\n     * Performs a deep comparison between two values to determine if they are\n     * equivalent.\n     *\n     * **Note:** This method supports comparing arrays, array buffers, booleans,\n     * date objects, error objects, maps, numbers, `Object` objects, regexes,\n     * sets, strings, symbols, and typed arrays. `Object` objects are compared\n     * by their own, not inherited, enumerable properties. Functions and DOM\n     * nodes are compared by strict equality, i.e. `===`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1 };\n     * var other = { 'a': 1 };\n     *\n     * _.isEqual(object, other);\n     * // => true\n     *\n     * object === other;\n     * // => false\n     */\n    function isEqual(value, other) {\n      return baseIsEqual(value, other);\n    }\n\n    /**\n     * This method is like `_.isEqual` except that it accepts `customizer` which\n     * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n     * are handled by the method instead. The `customizer` is invoked with up to\n     * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n     * @example\n     *\n     * function isGreeting(value) {\n     *   return /^h(?:i|ello)$/.test(value);\n     * }\n     *\n     * function customizer(objValue, othValue) {\n     *   if (isGreeting(objValue) && isGreeting(othValue)) {\n     *     return true;\n     *   }\n     * }\n     *\n     * var array = ['hello', 'goodbye'];\n     * var other = ['hi', 'goodbye'];\n     *\n     * _.isEqualWith(array, other, customizer);\n     * // => true\n     */\n    function isEqualWith(value, other, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      var result = customizer ? customizer(value, other) : undefined;\n      return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n    }\n\n    /**\n     * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n     * `SyntaxError`, `TypeError`, or `URIError` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n     * @example\n     *\n     * _.isError(new Error);\n     * // => true\n     *\n     * _.isError(Error);\n     * // => false\n     */\n    function isError(value) {\n      if (!isObjectLike(value)) {\n        return false;\n      }\n      var tag = baseGetTag(value);\n      return tag == errorTag || tag == domExcTag ||\n        (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n    }\n\n    /**\n     * Checks if `value` is a finite primitive number.\n     *\n     * **Note:** This method is based on\n     * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n     * @example\n     *\n     * _.isFinite(3);\n     * // => true\n     *\n     * _.isFinite(Number.MIN_VALUE);\n     * // => true\n     *\n     * _.isFinite(Infinity);\n     * // => false\n     *\n     * _.isFinite('3');\n     * // => false\n     */\n    function isFinite(value) {\n      return typeof value == 'number' && nativeIsFinite(value);\n    }\n\n    /**\n     * Checks if `value` is classified as a `Function` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n     * @example\n     *\n     * _.isFunction(_);\n     * // => true\n     *\n     * _.isFunction(/abc/);\n     * // => false\n     */\n    function isFunction(value) {\n      if (!isObject(value)) {\n        return false;\n      }\n      // The use of `Object#toString` avoids issues with the `typeof` operator\n      // in Safari 9 which returns 'object' for typed arrays and other constructors.\n      var tag = baseGetTag(value);\n      return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n    }\n\n    /**\n     * Checks if `value` is an integer.\n     *\n     * **Note:** This method is based on\n     * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n     * @example\n     *\n     * _.isInteger(3);\n     * // => true\n     *\n     * _.isInteger(Number.MIN_VALUE);\n     * // => false\n     *\n     * _.isInteger(Infinity);\n     * // => false\n     *\n     * _.isInteger('3');\n     * // => false\n     */\n    function isInteger(value) {\n      return typeof value == 'number' && value == toInteger(value);\n    }\n\n    /**\n     * Checks if `value` is a valid array-like length.\n     *\n     * **Note:** This method is loosely based on\n     * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n     * @example\n     *\n     * _.isLength(3);\n     * // => true\n     *\n     * _.isLength(Number.MIN_VALUE);\n     * // => false\n     *\n     * _.isLength(Infinity);\n     * // => false\n     *\n     * _.isLength('3');\n     * // => false\n     */\n    function isLength(value) {\n      return typeof value == 'number' &&\n        value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n    }\n\n    /**\n     * Checks if `value` is the\n     * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n     * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n     * @example\n     *\n     * _.isObject({});\n     * // => true\n     *\n     * _.isObject([1, 2, 3]);\n     * // => true\n     *\n     * _.isObject(_.noop);\n     * // => true\n     *\n     * _.isObject(null);\n     * // => false\n     */\n    function isObject(value) {\n      var type = typeof value;\n      return value != null && (type == 'object' || type == 'function');\n    }\n\n    /**\n     * Checks if `value` is object-like. A value is object-like if it's not `null`\n     * and has a `typeof` result of \"object\".\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n     * @example\n     *\n     * _.isObjectLike({});\n     * // => true\n     *\n     * _.isObjectLike([1, 2, 3]);\n     * // => true\n     *\n     * _.isObjectLike(_.noop);\n     * // => false\n     *\n     * _.isObjectLike(null);\n     * // => false\n     */\n    function isObjectLike(value) {\n      return value != null && typeof value == 'object';\n    }\n\n    /**\n     * Checks if `value` is classified as a `Map` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n     * @example\n     *\n     * _.isMap(new Map);\n     * // => true\n     *\n     * _.isMap(new WeakMap);\n     * // => false\n     */\n    var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n    /**\n     * Performs a partial deep comparison between `object` and `source` to\n     * determine if `object` contains equivalent property values.\n     *\n     * **Note:** This method is equivalent to `_.matches` when `source` is\n     * partially applied.\n     *\n     * Partial comparisons will match empty array and empty object `source`\n     * values against any array or object value, respectively. See `_.isEqual`\n     * for a list of supported value comparisons.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property values to match.\n     * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2 };\n     *\n     * _.isMatch(object, { 'b': 2 });\n     * // => true\n     *\n     * _.isMatch(object, { 'b': 1 });\n     * // => false\n     */\n    function isMatch(object, source) {\n      return object === source || baseIsMatch(object, source, getMatchData(source));\n    }\n\n    /**\n     * This method is like `_.isMatch` except that it accepts `customizer` which\n     * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n     * are handled by the method instead. The `customizer` is invoked with five\n     * arguments: (objValue, srcValue, index|key, object, source).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {Object} object The object to inspect.\n     * @param {Object} source The object of property values to match.\n     * @param {Function} [customizer] The function to customize comparisons.\n     * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n     * @example\n     *\n     * function isGreeting(value) {\n     *   return /^h(?:i|ello)$/.test(value);\n     * }\n     *\n     * function customizer(objValue, srcValue) {\n     *   if (isGreeting(objValue) && isGreeting(srcValue)) {\n     *     return true;\n     *   }\n     * }\n     *\n     * var object = { 'greeting': 'hello' };\n     * var source = { 'greeting': 'hi' };\n     *\n     * _.isMatchWith(object, source, customizer);\n     * // => true\n     */\n    function isMatchWith(object, source, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return baseIsMatch(object, source, getMatchData(source), customizer);\n    }\n\n    /**\n     * Checks if `value` is `NaN`.\n     *\n     * **Note:** This method is based on\n     * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n     * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n     * `undefined` and other non-number values.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n     * @example\n     *\n     * _.isNaN(NaN);\n     * // => true\n     *\n     * _.isNaN(new Number(NaN));\n     * // => true\n     *\n     * isNaN(undefined);\n     * // => true\n     *\n     * _.isNaN(undefined);\n     * // => false\n     */\n    function isNaN(value) {\n      // An `NaN` primitive is the only value that is not equal to itself.\n      // Perform the `toStringTag` check first to avoid errors with some\n      // ActiveX objects in IE.\n      return isNumber(value) && value != +value;\n    }\n\n    /**\n     * Checks if `value` is a pristine native function.\n     *\n     * **Note:** This method can't reliably detect native functions in the presence\n     * of the core-js package because core-js circumvents this kind of detection.\n     * Despite multiple requests, the core-js maintainer has made it clear: any\n     * attempt to fix the detection will be obstructed. As a result, we're left\n     * with little choice but to throw an error. Unfortunately, this also affects\n     * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n     * which rely on core-js.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a native function,\n     *  else `false`.\n     * @example\n     *\n     * _.isNative(Array.prototype.push);\n     * // => true\n     *\n     * _.isNative(_);\n     * // => false\n     */\n    function isNative(value) {\n      if (isMaskable(value)) {\n        throw new Error(CORE_ERROR_TEXT);\n      }\n      return baseIsNative(value);\n    }\n\n    /**\n     * Checks if `value` is `null`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n     * @example\n     *\n     * _.isNull(null);\n     * // => true\n     *\n     * _.isNull(void 0);\n     * // => false\n     */\n    function isNull(value) {\n      return value === null;\n    }\n\n    /**\n     * Checks if `value` is `null` or `undefined`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n     * @example\n     *\n     * _.isNil(null);\n     * // => true\n     *\n     * _.isNil(void 0);\n     * // => true\n     *\n     * _.isNil(NaN);\n     * // => false\n     */\n    function isNil(value) {\n      return value == null;\n    }\n\n    /**\n     * Checks if `value` is classified as a `Number` primitive or object.\n     *\n     * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n     * classified as numbers, use the `_.isFinite` method.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n     * @example\n     *\n     * _.isNumber(3);\n     * // => true\n     *\n     * _.isNumber(Number.MIN_VALUE);\n     * // => true\n     *\n     * _.isNumber(Infinity);\n     * // => true\n     *\n     * _.isNumber('3');\n     * // => false\n     */\n    function isNumber(value) {\n      return typeof value == 'number' ||\n        (isObjectLike(value) && baseGetTag(value) == numberTag);\n    }\n\n    /**\n     * Checks if `value` is a plain object, that is, an object created by the\n     * `Object` constructor or one with a `[[Prototype]]` of `null`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.8.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     * }\n     *\n     * _.isPlainObject(new Foo);\n     * // => false\n     *\n     * _.isPlainObject([1, 2, 3]);\n     * // => false\n     *\n     * _.isPlainObject({ 'x': 0, 'y': 0 });\n     * // => true\n     *\n     * _.isPlainObject(Object.create(null));\n     * // => true\n     */\n    function isPlainObject(value) {\n      if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n        return false;\n      }\n      var proto = getPrototype(value);\n      if (proto === null) {\n        return true;\n      }\n      var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n      return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n        funcToString.call(Ctor) == objectCtorString;\n    }\n\n    /**\n     * Checks if `value` is classified as a `RegExp` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.1.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n     * @example\n     *\n     * _.isRegExp(/abc/);\n     * // => true\n     *\n     * _.isRegExp('/abc/');\n     * // => false\n     */\n    var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n    /**\n     * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n     * double precision number which isn't the result of a rounded unsafe integer.\n     *\n     * **Note:** This method is based on\n     * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n     * @example\n     *\n     * _.isSafeInteger(3);\n     * // => true\n     *\n     * _.isSafeInteger(Number.MIN_VALUE);\n     * // => false\n     *\n     * _.isSafeInteger(Infinity);\n     * // => false\n     *\n     * _.isSafeInteger('3');\n     * // => false\n     */\n    function isSafeInteger(value) {\n      return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n    }\n\n    /**\n     * Checks if `value` is classified as a `Set` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n     * @example\n     *\n     * _.isSet(new Set);\n     * // => true\n     *\n     * _.isSet(new WeakSet);\n     * // => false\n     */\n    var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n    /**\n     * Checks if `value` is classified as a `String` primitive or object.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n     * @example\n     *\n     * _.isString('abc');\n     * // => true\n     *\n     * _.isString(1);\n     * // => false\n     */\n    function isString(value) {\n      return typeof value == 'string' ||\n        (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n    }\n\n    /**\n     * Checks if `value` is classified as a `Symbol` primitive or object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n     * @example\n     *\n     * _.isSymbol(Symbol.iterator);\n     * // => true\n     *\n     * _.isSymbol('abc');\n     * // => false\n     */\n    function isSymbol(value) {\n      return typeof value == 'symbol' ||\n        (isObjectLike(value) && baseGetTag(value) == symbolTag);\n    }\n\n    /**\n     * Checks if `value` is classified as a typed array.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n     * @example\n     *\n     * _.isTypedArray(new Uint8Array);\n     * // => true\n     *\n     * _.isTypedArray([]);\n     * // => false\n     */\n    var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n    /**\n     * Checks if `value` is `undefined`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n     * @example\n     *\n     * _.isUndefined(void 0);\n     * // => true\n     *\n     * _.isUndefined(null);\n     * // => false\n     */\n    function isUndefined(value) {\n      return value === undefined;\n    }\n\n    /**\n     * Checks if `value` is classified as a `WeakMap` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n     * @example\n     *\n     * _.isWeakMap(new WeakMap);\n     * // => true\n     *\n     * _.isWeakMap(new Map);\n     * // => false\n     */\n    function isWeakMap(value) {\n      return isObjectLike(value) && getTag(value) == weakMapTag;\n    }\n\n    /**\n     * Checks if `value` is classified as a `WeakSet` object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.3.0\n     * @category Lang\n     * @param {*} value The value to check.\n     * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n     * @example\n     *\n     * _.isWeakSet(new WeakSet);\n     * // => true\n     *\n     * _.isWeakSet(new Set);\n     * // => false\n     */\n    function isWeakSet(value) {\n      return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n    }\n\n    /**\n     * Checks if `value` is less than `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is less than `other`,\n     *  else `false`.\n     * @see _.gt\n     * @example\n     *\n     * _.lt(1, 3);\n     * // => true\n     *\n     * _.lt(3, 3);\n     * // => false\n     *\n     * _.lt(3, 1);\n     * // => false\n     */\n    var lt = createRelationalOperation(baseLt);\n\n    /**\n     * Checks if `value` is less than or equal to `other`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.9.0\n     * @category Lang\n     * @param {*} value The value to compare.\n     * @param {*} other The other value to compare.\n     * @returns {boolean} Returns `true` if `value` is less than or equal to\n     *  `other`, else `false`.\n     * @see _.gte\n     * @example\n     *\n     * _.lte(1, 3);\n     * // => true\n     *\n     * _.lte(3, 3);\n     * // => true\n     *\n     * _.lte(3, 1);\n     * // => false\n     */\n    var lte = createRelationalOperation(function(value, other) {\n      return value <= other;\n    });\n\n    /**\n     * Converts `value` to an array.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {Array} Returns the converted array.\n     * @example\n     *\n     * _.toArray({ 'a': 1, 'b': 2 });\n     * // => [1, 2]\n     *\n     * _.toArray('abc');\n     * // => ['a', 'b', 'c']\n     *\n     * _.toArray(1);\n     * // => []\n     *\n     * _.toArray(null);\n     * // => []\n     */\n    function toArray(value) {\n      if (!value) {\n        return [];\n      }\n      if (isArrayLike(value)) {\n        return isString(value) ? stringToArray(value) : copyArray(value);\n      }\n      if (symIterator && value[symIterator]) {\n        return iteratorToArray(value[symIterator]());\n      }\n      var tag = getTag(value),\n          func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n      return func(value);\n    }\n\n    /**\n     * Converts `value` to a finite number.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.12.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted number.\n     * @example\n     *\n     * _.toFinite(3.2);\n     * // => 3.2\n     *\n     * _.toFinite(Number.MIN_VALUE);\n     * // => 5e-324\n     *\n     * _.toFinite(Infinity);\n     * // => 1.7976931348623157e+308\n     *\n     * _.toFinite('3.2');\n     * // => 3.2\n     */\n    function toFinite(value) {\n      if (!value) {\n        return value === 0 ? value : 0;\n      }\n      value = toNumber(value);\n      if (value === INFINITY || value === -INFINITY) {\n        var sign = (value < 0 ? -1 : 1);\n        return sign * MAX_INTEGER;\n      }\n      return value === value ? value : 0;\n    }\n\n    /**\n     * Converts `value` to an integer.\n     *\n     * **Note:** This method is loosely based on\n     * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.toInteger(3.2);\n     * // => 3\n     *\n     * _.toInteger(Number.MIN_VALUE);\n     * // => 0\n     *\n     * _.toInteger(Infinity);\n     * // => 1.7976931348623157e+308\n     *\n     * _.toInteger('3.2');\n     * // => 3\n     */\n    function toInteger(value) {\n      var result = toFinite(value),\n          remainder = result % 1;\n\n      return result === result ? (remainder ? result - remainder : result) : 0;\n    }\n\n    /**\n     * Converts `value` to an integer suitable for use as the length of an\n     * array-like object.\n     *\n     * **Note:** This method is based on\n     * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.toLength(3.2);\n     * // => 3\n     *\n     * _.toLength(Number.MIN_VALUE);\n     * // => 0\n     *\n     * _.toLength(Infinity);\n     * // => 4294967295\n     *\n     * _.toLength('3.2');\n     * // => 3\n     */\n    function toLength(value) {\n      return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n    }\n\n    /**\n     * Converts `value` to a number.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to process.\n     * @returns {number} Returns the number.\n     * @example\n     *\n     * _.toNumber(3.2);\n     * // => 3.2\n     *\n     * _.toNumber(Number.MIN_VALUE);\n     * // => 5e-324\n     *\n     * _.toNumber(Infinity);\n     * // => Infinity\n     *\n     * _.toNumber('3.2');\n     * // => 3.2\n     */\n    function toNumber(value) {\n      if (typeof value == 'number') {\n        return value;\n      }\n      if (isSymbol(value)) {\n        return NAN;\n      }\n      if (isObject(value)) {\n        var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n        value = isObject(other) ? (other + '') : other;\n      }\n      if (typeof value != 'string') {\n        return value === 0 ? value : +value;\n      }\n      value = baseTrim(value);\n      var isBinary = reIsBinary.test(value);\n      return (isBinary || reIsOctal.test(value))\n        ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n        : (reIsBadHex.test(value) ? NAN : +value);\n    }\n\n    /**\n     * Converts `value` to a plain object flattening inherited enumerable string\n     * keyed properties of `value` to own properties of the plain object.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {Object} Returns the converted plain object.\n     * @example\n     *\n     * function Foo() {\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.assign({ 'a': 1 }, new Foo);\n     * // => { 'a': 1, 'b': 2 }\n     *\n     * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n     * // => { 'a': 1, 'b': 2, 'c': 3 }\n     */\n    function toPlainObject(value) {\n      return copyObject(value, keysIn(value));\n    }\n\n    /**\n     * Converts `value` to a safe integer. A safe integer can be compared and\n     * represented correctly.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.toSafeInteger(3.2);\n     * // => 3\n     *\n     * _.toSafeInteger(Number.MIN_VALUE);\n     * // => 0\n     *\n     * _.toSafeInteger(Infinity);\n     * // => 9007199254740991\n     *\n     * _.toSafeInteger('3.2');\n     * // => 3\n     */\n    function toSafeInteger(value) {\n      return value\n        ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n        : (value === 0 ? value : 0);\n    }\n\n    /**\n     * Converts `value` to a string. An empty string is returned for `null`\n     * and `undefined` values. The sign of `-0` is preserved.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Lang\n     * @param {*} value The value to convert.\n     * @returns {string} Returns the converted string.\n     * @example\n     *\n     * _.toString(null);\n     * // => ''\n     *\n     * _.toString(-0);\n     * // => '-0'\n     *\n     * _.toString([1, 2, 3]);\n     * // => '1,2,3'\n     */\n    function toString(value) {\n      return value == null ? '' : baseToString(value);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Assigns own enumerable string keyed properties of source objects to the\n     * destination object. Source objects are applied from left to right.\n     * Subsequent sources overwrite property assignments of previous sources.\n     *\n     * **Note:** This method mutates `object` and is loosely based on\n     * [`Object.assign`](https://mdn.io/Object/assign).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.10.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.assignIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     * }\n     *\n     * function Bar() {\n     *   this.c = 3;\n     * }\n     *\n     * Foo.prototype.b = 2;\n     * Bar.prototype.d = 4;\n     *\n     * _.assign({ 'a': 0 }, new Foo, new Bar);\n     * // => { 'a': 1, 'c': 3 }\n     */\n    var assign = createAssigner(function(object, source) {\n      if (isPrototype(source) || isArrayLike(source)) {\n        copyObject(source, keys(source), object);\n        return;\n      }\n      for (var key in source) {\n        if (hasOwnProperty.call(source, key)) {\n          assignValue(object, key, source[key]);\n        }\n      }\n    });\n\n    /**\n     * This method is like `_.assign` except that it iterates over own and\n     * inherited source properties.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias extend\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.assign\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     * }\n     *\n     * function Bar() {\n     *   this.c = 3;\n     * }\n     *\n     * Foo.prototype.b = 2;\n     * Bar.prototype.d = 4;\n     *\n     * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n     * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n     */\n    var assignIn = createAssigner(function(object, source) {\n      copyObject(source, keysIn(source), object);\n    });\n\n    /**\n     * This method is like `_.assignIn` except that it accepts `customizer`\n     * which is invoked to produce the assigned values. If `customizer` returns\n     * `undefined`, assignment is handled by the method instead. The `customizer`\n     * is invoked with five arguments: (objValue, srcValue, key, object, source).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias extendWith\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} sources The source objects.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @see _.assignWith\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   return _.isUndefined(objValue) ? srcValue : objValue;\n     * }\n     *\n     * var defaults = _.partialRight(_.assignInWith, customizer);\n     *\n     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n      copyObject(source, keysIn(source), object, customizer);\n    });\n\n    /**\n     * This method is like `_.assign` except that it accepts `customizer`\n     * which is invoked to produce the assigned values. If `customizer` returns\n     * `undefined`, assignment is handled by the method instead. The `customizer`\n     * is invoked with five arguments: (objValue, srcValue, key, object, source).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} sources The source objects.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @see _.assignInWith\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   return _.isUndefined(objValue) ? srcValue : objValue;\n     * }\n     *\n     * var defaults = _.partialRight(_.assignWith, customizer);\n     *\n     * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n      copyObject(source, keys(source), object, customizer);\n    });\n\n    /**\n     * Creates an array of values corresponding to `paths` of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.0.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {...(string|string[])} [paths] The property paths to pick.\n     * @returns {Array} Returns the picked values.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n     *\n     * _.at(object, ['a[0].b.c', 'a[1]']);\n     * // => [3, 4]\n     */\n    var at = flatRest(baseAt);\n\n    /**\n     * Creates an object that inherits from the `prototype` object. If a\n     * `properties` object is given, its own enumerable string keyed properties\n     * are assigned to the created object.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.3.0\n     * @category Object\n     * @param {Object} prototype The object to inherit from.\n     * @param {Object} [properties] The properties to assign to the object.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * function Shape() {\n     *   this.x = 0;\n     *   this.y = 0;\n     * }\n     *\n     * function Circle() {\n     *   Shape.call(this);\n     * }\n     *\n     * Circle.prototype = _.create(Shape.prototype, {\n     *   'constructor': Circle\n     * });\n     *\n     * var circle = new Circle;\n     * circle instanceof Circle;\n     * // => true\n     *\n     * circle instanceof Shape;\n     * // => true\n     */\n    function create(prototype, properties) {\n      var result = baseCreate(prototype);\n      return properties == null ? result : baseAssign(result, properties);\n    }\n\n    /**\n     * Assigns own and inherited enumerable string keyed properties of source\n     * objects to the destination object for all destination properties that\n     * resolve to `undefined`. Source objects are applied from left to right.\n     * Once a property is set, additional values of the same property are ignored.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.defaultsDeep\n     * @example\n     *\n     * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n     * // => { 'a': 1, 'b': 2 }\n     */\n    var defaults = baseRest(function(object, sources) {\n      object = Object(object);\n\n      var index = -1;\n      var length = sources.length;\n      var guard = length > 2 ? sources[2] : undefined;\n\n      if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n        length = 1;\n      }\n\n      while (++index < length) {\n        var source = sources[index];\n        var props = keysIn(source);\n        var propsIndex = -1;\n        var propsLength = props.length;\n\n        while (++propsIndex < propsLength) {\n          var key = props[propsIndex];\n          var value = object[key];\n\n          if (value === undefined ||\n              (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n            object[key] = source[key];\n          }\n        }\n      }\n\n      return object;\n    });\n\n    /**\n     * This method is like `_.defaults` except that it recursively assigns\n     * default properties.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @see _.defaults\n     * @example\n     *\n     * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n     * // => { 'a': { 'b': 2, 'c': 3 } }\n     */\n    var defaultsDeep = baseRest(function(args) {\n      args.push(undefined, customDefaultsMerge);\n      return apply(mergeWith, undefined, args);\n    });\n\n    /**\n     * This method is like `_.find` except that it returns the key of the first\n     * element `predicate` returns truthy for instead of the element itself.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.1.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {string|undefined} Returns the key of the matched element,\n     *  else `undefined`.\n     * @example\n     *\n     * var users = {\n     *   'barney':  { 'age': 36, 'active': true },\n     *   'fred':    { 'age': 40, 'active': false },\n     *   'pebbles': { 'age': 1,  'active': true }\n     * };\n     *\n     * _.findKey(users, function(o) { return o.age < 40; });\n     * // => 'barney' (iteration order is not guaranteed)\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findKey(users, { 'age': 1, 'active': true });\n     * // => 'pebbles'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findKey(users, ['active', false]);\n     * // => 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findKey(users, 'active');\n     * // => 'barney'\n     */\n    function findKey(object, predicate) {\n      return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n    }\n\n    /**\n     * This method is like `_.findKey` except that it iterates over elements of\n     * a collection in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @param {Function} [predicate=_.identity] The function invoked per iteration.\n     * @returns {string|undefined} Returns the key of the matched element,\n     *  else `undefined`.\n     * @example\n     *\n     * var users = {\n     *   'barney':  { 'age': 36, 'active': true },\n     *   'fred':    { 'age': 40, 'active': false },\n     *   'pebbles': { 'age': 1,  'active': true }\n     * };\n     *\n     * _.findLastKey(users, function(o) { return o.age < 40; });\n     * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.findLastKey(users, { 'age': 36, 'active': true });\n     * // => 'barney'\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.findLastKey(users, ['active', false]);\n     * // => 'fred'\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.findLastKey(users, 'active');\n     * // => 'pebbles'\n     */\n    function findLastKey(object, predicate) {\n      return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n    }\n\n    /**\n     * Iterates over own and inherited enumerable string keyed properties of an\n     * object and invokes `iteratee` for each property. The iteratee is invoked\n     * with three arguments: (value, key, object). Iteratee functions may exit\n     * iteration early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.3.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forInRight\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forIn(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n     */\n    function forIn(object, iteratee) {\n      return object == null\n        ? object\n        : baseFor(object, getIteratee(iteratee, 3), keysIn);\n    }\n\n    /**\n     * This method is like `_.forIn` except that it iterates over properties of\n     * `object` in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forInRight(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n     */\n    function forInRight(object, iteratee) {\n      return object == null\n        ? object\n        : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n    }\n\n    /**\n     * Iterates over own enumerable string keyed properties of an object and\n     * invokes `iteratee` for each property. The iteratee is invoked with three\n     * arguments: (value, key, object). Iteratee functions may exit iteration\n     * early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.3.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forOwnRight\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forOwn(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n     */\n    function forOwn(object, iteratee) {\n      return object && baseForOwn(object, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * This method is like `_.forOwn` except that it iterates over properties of\n     * `object` in the opposite order.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.0.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns `object`.\n     * @see _.forOwn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.forOwnRight(new Foo, function(value, key) {\n     *   console.log(key);\n     * });\n     * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n     */\n    function forOwnRight(object, iteratee) {\n      return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n    }\n\n    /**\n     * Creates an array of function property names from own enumerable properties\n     * of `object`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @returns {Array} Returns the function names.\n     * @see _.functionsIn\n     * @example\n     *\n     * function Foo() {\n     *   this.a = _.constant('a');\n     *   this.b = _.constant('b');\n     * }\n     *\n     * Foo.prototype.c = _.constant('c');\n     *\n     * _.functions(new Foo);\n     * // => ['a', 'b']\n     */\n    function functions(object) {\n      return object == null ? [] : baseFunctions(object, keys(object));\n    }\n\n    /**\n     * Creates an array of function property names from own and inherited\n     * enumerable properties of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to inspect.\n     * @returns {Array} Returns the function names.\n     * @see _.functions\n     * @example\n     *\n     * function Foo() {\n     *   this.a = _.constant('a');\n     *   this.b = _.constant('b');\n     * }\n     *\n     * Foo.prototype.c = _.constant('c');\n     *\n     * _.functionsIn(new Foo);\n     * // => ['a', 'b', 'c']\n     */\n    function functionsIn(object) {\n      return object == null ? [] : baseFunctions(object, keysIn(object));\n    }\n\n    /**\n     * Gets the value at `path` of `object`. If the resolved value is\n     * `undefined`, the `defaultValue` is returned in its place.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the property to get.\n     * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n     * @returns {*} Returns the resolved value.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n     *\n     * _.get(object, 'a[0].b.c');\n     * // => 3\n     *\n     * _.get(object, ['a', '0', 'b', 'c']);\n     * // => 3\n     *\n     * _.get(object, 'a.b.c', 'default');\n     * // => 'default'\n     */\n    function get(object, path, defaultValue) {\n      var result = object == null ? undefined : baseGet(object, path);\n      return result === undefined ? defaultValue : result;\n    }\n\n    /**\n     * Checks if `path` is a direct property of `object`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path to check.\n     * @returns {boolean} Returns `true` if `path` exists, else `false`.\n     * @example\n     *\n     * var object = { 'a': { 'b': 2 } };\n     * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n     *\n     * _.has(object, 'a');\n     * // => true\n     *\n     * _.has(object, 'a.b');\n     * // => true\n     *\n     * _.has(object, ['a', 'b']);\n     * // => true\n     *\n     * _.has(other, 'a');\n     * // => false\n     */\n    function has(object, path) {\n      return object != null && hasPath(object, path, baseHas);\n    }\n\n    /**\n     * Checks if `path` is a direct or inherited property of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path to check.\n     * @returns {boolean} Returns `true` if `path` exists, else `false`.\n     * @example\n     *\n     * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n     *\n     * _.hasIn(object, 'a');\n     * // => true\n     *\n     * _.hasIn(object, 'a.b');\n     * // => true\n     *\n     * _.hasIn(object, ['a', 'b']);\n     * // => true\n     *\n     * _.hasIn(object, 'b');\n     * // => false\n     */\n    function hasIn(object, path) {\n      return object != null && hasPath(object, path, baseHasIn);\n    }\n\n    /**\n     * Creates an object composed of the inverted keys and values of `object`.\n     * If `object` contains duplicate values, subsequent values overwrite\n     * property assignments of previous values.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.7.0\n     * @category Object\n     * @param {Object} object The object to invert.\n     * @returns {Object} Returns the new inverted object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2, 'c': 1 };\n     *\n     * _.invert(object);\n     * // => { '1': 'c', '2': 'b' }\n     */\n    var invert = createInverter(function(result, value, key) {\n      if (value != null &&\n          typeof value.toString != 'function') {\n        value = nativeObjectToString.call(value);\n      }\n\n      result[value] = key;\n    }, constant(identity));\n\n    /**\n     * This method is like `_.invert` except that the inverted object is generated\n     * from the results of running each element of `object` thru `iteratee`. The\n     * corresponding inverted value of each inverted key is an array of keys\n     * responsible for generating the inverted value. The iteratee is invoked\n     * with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.1.0\n     * @category Object\n     * @param {Object} object The object to invert.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {Object} Returns the new inverted object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': 2, 'c': 1 };\n     *\n     * _.invertBy(object);\n     * // => { '1': ['a', 'c'], '2': ['b'] }\n     *\n     * _.invertBy(object, function(value) {\n     *   return 'group' + value;\n     * });\n     * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n     */\n    var invertBy = createInverter(function(result, value, key) {\n      if (value != null &&\n          typeof value.toString != 'function') {\n        value = nativeObjectToString.call(value);\n      }\n\n      if (hasOwnProperty.call(result, value)) {\n        result[value].push(key);\n      } else {\n        result[value] = [key];\n      }\n    }, getIteratee);\n\n    /**\n     * Invokes the method at `path` of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the method to invoke.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {*} Returns the result of the invoked method.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n     *\n     * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n     * // => [2, 3]\n     */\n    var invoke = baseRest(baseInvoke);\n\n    /**\n     * Creates an array of the own enumerable property names of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects. See the\n     * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n     * for more details.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.keys(new Foo);\n     * // => ['a', 'b'] (iteration order is not guaranteed)\n     *\n     * _.keys('hi');\n     * // => ['0', '1']\n     */\n    function keys(object) {\n      return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n    }\n\n    /**\n     * Creates an array of the own and inherited enumerable property names of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property names.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.keysIn(new Foo);\n     * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n     */\n    function keysIn(object) {\n      return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n    }\n\n    /**\n     * The opposite of `_.mapValues`; this method creates an object with the\n     * same values as `object` and keys generated by running each own enumerable\n     * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n     * with three arguments: (value, key, object).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.8.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns the new mapped object.\n     * @see _.mapValues\n     * @example\n     *\n     * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n     *   return key + value;\n     * });\n     * // => { 'a1': 1, 'b2': 2 }\n     */\n    function mapKeys(object, iteratee) {\n      var result = {};\n      iteratee = getIteratee(iteratee, 3);\n\n      baseForOwn(object, function(value, key, object) {\n        baseAssignValue(result, iteratee(value, key, object), value);\n      });\n      return result;\n    }\n\n    /**\n     * Creates an object with the same keys as `object` and values generated\n     * by running each own enumerable string keyed property of `object` thru\n     * `iteratee`. The iteratee is invoked with three arguments:\n     * (value, key, object).\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Object} Returns the new mapped object.\n     * @see _.mapKeys\n     * @example\n     *\n     * var users = {\n     *   'fred':    { 'user': 'fred',    'age': 40 },\n     *   'pebbles': { 'user': 'pebbles', 'age': 1 }\n     * };\n     *\n     * _.mapValues(users, function(o) { return o.age; });\n     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.mapValues(users, 'age');\n     * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n     */\n    function mapValues(object, iteratee) {\n      var result = {};\n      iteratee = getIteratee(iteratee, 3);\n\n      baseForOwn(object, function(value, key, object) {\n        baseAssignValue(result, key, iteratee(value, key, object));\n      });\n      return result;\n    }\n\n    /**\n     * This method is like `_.assign` except that it recursively merges own and\n     * inherited enumerable string keyed properties of source objects into the\n     * destination object. Source properties that resolve to `undefined` are\n     * skipped if a destination value exists. Array and plain object properties\n     * are merged recursively. Other objects and value types are overridden by\n     * assignment. Source objects are applied from left to right. Subsequent\n     * sources overwrite property assignments of previous sources.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.5.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} [sources] The source objects.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = {\n     *   'a': [{ 'b': 2 }, { 'd': 4 }]\n     * };\n     *\n     * var other = {\n     *   'a': [{ 'c': 3 }, { 'e': 5 }]\n     * };\n     *\n     * _.merge(object, other);\n     * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n     */\n    var merge = createAssigner(function(object, source, srcIndex) {\n      baseMerge(object, source, srcIndex);\n    });\n\n    /**\n     * This method is like `_.merge` except that it accepts `customizer` which\n     * is invoked to produce the merged values of the destination and source\n     * properties. If `customizer` returns `undefined`, merging is handled by the\n     * method instead. The `customizer` is invoked with six arguments:\n     * (objValue, srcValue, key, object, source, stack).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The destination object.\n     * @param {...Object} sources The source objects.\n     * @param {Function} customizer The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * function customizer(objValue, srcValue) {\n     *   if (_.isArray(objValue)) {\n     *     return objValue.concat(srcValue);\n     *   }\n     * }\n     *\n     * var object = { 'a': [1], 'b': [2] };\n     * var other = { 'a': [3], 'b': [4] };\n     *\n     * _.mergeWith(object, other, customizer);\n     * // => { 'a': [1, 3], 'b': [2, 4] }\n     */\n    var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n      baseMerge(object, source, srcIndex, customizer);\n    });\n\n    /**\n     * The opposite of `_.pick`; this method creates an object composed of the\n     * own and inherited enumerable property paths of `object` that are not omitted.\n     *\n     * **Note:** This method is considerably slower than `_.pick`.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {...(string|string[])} [paths] The property paths to omit.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.omit(object, ['a', 'c']);\n     * // => { 'b': '2' }\n     */\n    var omit = flatRest(function(object, paths) {\n      var result = {};\n      if (object == null) {\n        return result;\n      }\n      var isDeep = false;\n      paths = arrayMap(paths, function(path) {\n        path = castPath(path, object);\n        isDeep || (isDeep = path.length > 1);\n        return path;\n      });\n      copyObject(object, getAllKeysIn(object), result);\n      if (isDeep) {\n        result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n      }\n      var length = paths.length;\n      while (length--) {\n        baseUnset(result, paths[length]);\n      }\n      return result;\n    });\n\n    /**\n     * The opposite of `_.pickBy`; this method creates an object composed of\n     * the own and inherited enumerable string keyed properties of `object` that\n     * `predicate` doesn't return truthy for. The predicate is invoked with two\n     * arguments: (value, key).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {Function} [predicate=_.identity] The function invoked per property.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.omitBy(object, _.isNumber);\n     * // => { 'b': '2' }\n     */\n    function omitBy(object, predicate) {\n      return pickBy(object, negate(getIteratee(predicate)));\n    }\n\n    /**\n     * Creates an object composed of the picked `object` properties.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {...(string|string[])} [paths] The property paths to pick.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.pick(object, ['a', 'c']);\n     * // => { 'a': 1, 'c': 3 }\n     */\n    var pick = flatRest(function(object, paths) {\n      return object == null ? {} : basePick(object, paths);\n    });\n\n    /**\n     * Creates an object composed of the `object` properties `predicate` returns\n     * truthy for. The predicate is invoked with two arguments: (value, key).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The source object.\n     * @param {Function} [predicate=_.identity] The function invoked per property.\n     * @returns {Object} Returns the new object.\n     * @example\n     *\n     * var object = { 'a': 1, 'b': '2', 'c': 3 };\n     *\n     * _.pickBy(object, _.isNumber);\n     * // => { 'a': 1, 'c': 3 }\n     */\n    function pickBy(object, predicate) {\n      if (object == null) {\n        return {};\n      }\n      var props = arrayMap(getAllKeysIn(object), function(prop) {\n        return [prop];\n      });\n      predicate = getIteratee(predicate);\n      return basePickBy(object, props, function(value, path) {\n        return predicate(value, path[0]);\n      });\n    }\n\n    /**\n     * This method is like `_.get` except that if the resolved value is a\n     * function it's invoked with the `this` binding of its parent object and\n     * its result is returned.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @param {Array|string} path The path of the property to resolve.\n     * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n     * @returns {*} Returns the resolved value.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n     *\n     * _.result(object, 'a[0].b.c1');\n     * // => 3\n     *\n     * _.result(object, 'a[0].b.c2');\n     * // => 4\n     *\n     * _.result(object, 'a[0].b.c3', 'default');\n     * // => 'default'\n     *\n     * _.result(object, 'a[0].b.c3', _.constant('default'));\n     * // => 'default'\n     */\n    function result(object, path, defaultValue) {\n      path = castPath(path, object);\n\n      var index = -1,\n          length = path.length;\n\n      // Ensure the loop is entered when path is empty.\n      if (!length) {\n        length = 1;\n        object = undefined;\n      }\n      while (++index < length) {\n        var value = object == null ? undefined : object[toKey(path[index])];\n        if (value === undefined) {\n          index = length;\n          value = defaultValue;\n        }\n        object = isFunction(value) ? value.call(object) : value;\n      }\n      return object;\n    }\n\n    /**\n     * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n     * it's created. Arrays are created for missing index properties while objects\n     * are created for all other missing properties. Use `_.setWith` to customize\n     * `path` creation.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {*} value The value to set.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n     *\n     * _.set(object, 'a[0].b.c', 4);\n     * console.log(object.a[0].b.c);\n     * // => 4\n     *\n     * _.set(object, ['x', '0', 'y', 'z'], 5);\n     * console.log(object.x[0].y.z);\n     * // => 5\n     */\n    function set(object, path, value) {\n      return object == null ? object : baseSet(object, path, value);\n    }\n\n    /**\n     * This method is like `_.set` except that it accepts `customizer` which is\n     * invoked to produce the objects of `path`.  If `customizer` returns `undefined`\n     * path creation is handled by the method instead. The `customizer` is invoked\n     * with three arguments: (nsValue, key, nsObject).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {*} value The value to set.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = {};\n     *\n     * _.setWith(object, '[0][1]', 'a', Object);\n     * // => { '0': { '1': 'a' } }\n     */\n    function setWith(object, path, value, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return object == null ? object : baseSet(object, path, value, customizer);\n    }\n\n    /**\n     * Creates an array of own enumerable string keyed-value pairs for `object`\n     * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n     * entries are returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias entries\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the key-value pairs.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.toPairs(new Foo);\n     * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n     */\n    var toPairs = createToPairs(keys);\n\n    /**\n     * Creates an array of own and inherited enumerable string keyed-value pairs\n     * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n     * or set, its entries are returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @alias entriesIn\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the key-value pairs.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.toPairsIn(new Foo);\n     * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n     */\n    var toPairsIn = createToPairs(keysIn);\n\n    /**\n     * An alternative to `_.reduce`; this method transforms `object` to a new\n     * `accumulator` object which is the result of running each of its own\n     * enumerable string keyed properties thru `iteratee`, with each invocation\n     * potentially mutating the `accumulator` object. If `accumulator` is not\n     * provided, a new object with the same `[[Prototype]]` will be used. The\n     * iteratee is invoked with four arguments: (accumulator, value, key, object).\n     * Iteratee functions may exit iteration early by explicitly returning `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.3.0\n     * @category Object\n     * @param {Object} object The object to iterate over.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @param {*} [accumulator] The custom accumulator value.\n     * @returns {*} Returns the accumulated value.\n     * @example\n     *\n     * _.transform([2, 3, 4], function(result, n) {\n     *   result.push(n *= n);\n     *   return n % 2 == 0;\n     * }, []);\n     * // => [4, 9]\n     *\n     * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n     *   (result[value] || (result[value] = [])).push(key);\n     * }, {});\n     * // => { '1': ['a', 'c'], '2': ['b'] }\n     */\n    function transform(object, iteratee, accumulator) {\n      var isArr = isArray(object),\n          isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n      iteratee = getIteratee(iteratee, 4);\n      if (accumulator == null) {\n        var Ctor = object && object.constructor;\n        if (isArrLike) {\n          accumulator = isArr ? new Ctor : [];\n        }\n        else if (isObject(object)) {\n          accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n        }\n        else {\n          accumulator = {};\n        }\n      }\n      (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n        return iteratee(accumulator, value, index, object);\n      });\n      return accumulator;\n    }\n\n    /**\n     * Removes the property at `path` of `object`.\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to unset.\n     * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n     * _.unset(object, 'a[0].b.c');\n     * // => true\n     *\n     * console.log(object);\n     * // => { 'a': [{ 'b': {} }] };\n     *\n     * _.unset(object, ['a', '0', 'b', 'c']);\n     * // => true\n     *\n     * console.log(object);\n     * // => { 'a': [{ 'b': {} }] };\n     */\n    function unset(object, path) {\n      return object == null ? true : baseUnset(object, path);\n    }\n\n    /**\n     * This method is like `_.set` except that accepts `updater` to produce the\n     * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n     * is invoked with one argument: (value).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {Function} updater The function to produce the updated value.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n     *\n     * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n     * console.log(object.a[0].b.c);\n     * // => 9\n     *\n     * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n     * console.log(object.x[0].y.z);\n     * // => 0\n     */\n    function update(object, path, updater) {\n      return object == null ? object : baseUpdate(object, path, castFunction(updater));\n    }\n\n    /**\n     * This method is like `_.update` except that it accepts `customizer` which is\n     * invoked to produce the objects of `path`.  If `customizer` returns `undefined`\n     * path creation is handled by the method instead. The `customizer` is invoked\n     * with three arguments: (nsValue, key, nsObject).\n     *\n     * **Note:** This method mutates `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.6.0\n     * @category Object\n     * @param {Object} object The object to modify.\n     * @param {Array|string} path The path of the property to set.\n     * @param {Function} updater The function to produce the updated value.\n     * @param {Function} [customizer] The function to customize assigned values.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var object = {};\n     *\n     * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n     * // => { '0': { '1': 'a' } }\n     */\n    function updateWith(object, path, updater, customizer) {\n      customizer = typeof customizer == 'function' ? customizer : undefined;\n      return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n    }\n\n    /**\n     * Creates an array of the own enumerable string keyed property values of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property values.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.values(new Foo);\n     * // => [1, 2] (iteration order is not guaranteed)\n     *\n     * _.values('hi');\n     * // => ['h', 'i']\n     */\n    function values(object) {\n      return object == null ? [] : baseValues(object, keys(object));\n    }\n\n    /**\n     * Creates an array of the own and inherited enumerable string keyed property\n     * values of `object`.\n     *\n     * **Note:** Non-object values are coerced to objects.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Object\n     * @param {Object} object The object to query.\n     * @returns {Array} Returns the array of property values.\n     * @example\n     *\n     * function Foo() {\n     *   this.a = 1;\n     *   this.b = 2;\n     * }\n     *\n     * Foo.prototype.c = 3;\n     *\n     * _.valuesIn(new Foo);\n     * // => [1, 2, 3] (iteration order is not guaranteed)\n     */\n    function valuesIn(object) {\n      return object == null ? [] : baseValues(object, keysIn(object));\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Clamps `number` within the inclusive `lower` and `upper` bounds.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Number\n     * @param {number} number The number to clamp.\n     * @param {number} [lower] The lower bound.\n     * @param {number} upper The upper bound.\n     * @returns {number} Returns the clamped number.\n     * @example\n     *\n     * _.clamp(-10, -5, 5);\n     * // => -5\n     *\n     * _.clamp(10, -5, 5);\n     * // => 5\n     */\n    function clamp(number, lower, upper) {\n      if (upper === undefined) {\n        upper = lower;\n        lower = undefined;\n      }\n      if (upper !== undefined) {\n        upper = toNumber(upper);\n        upper = upper === upper ? upper : 0;\n      }\n      if (lower !== undefined) {\n        lower = toNumber(lower);\n        lower = lower === lower ? lower : 0;\n      }\n      return baseClamp(toNumber(number), lower, upper);\n    }\n\n    /**\n     * Checks if `n` is between `start` and up to, but not including, `end`. If\n     * `end` is not specified, it's set to `start` with `start` then set to `0`.\n     * If `start` is greater than `end` the params are swapped to support\n     * negative ranges.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.3.0\n     * @category Number\n     * @param {number} number The number to check.\n     * @param {number} [start=0] The start of the range.\n     * @param {number} end The end of the range.\n     * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n     * @see _.range, _.rangeRight\n     * @example\n     *\n     * _.inRange(3, 2, 4);\n     * // => true\n     *\n     * _.inRange(4, 8);\n     * // => true\n     *\n     * _.inRange(4, 2);\n     * // => false\n     *\n     * _.inRange(2, 2);\n     * // => false\n     *\n     * _.inRange(1.2, 2);\n     * // => true\n     *\n     * _.inRange(5.2, 4);\n     * // => false\n     *\n     * _.inRange(-3, -2, -6);\n     * // => true\n     */\n    function inRange(number, start, end) {\n      start = toFinite(start);\n      if (end === undefined) {\n        end = start;\n        start = 0;\n      } else {\n        end = toFinite(end);\n      }\n      number = toNumber(number);\n      return baseInRange(number, start, end);\n    }\n\n    /**\n     * Produces a random number between the inclusive `lower` and `upper` bounds.\n     * If only one argument is provided a number between `0` and the given number\n     * is returned. If `floating` is `true`, or either `lower` or `upper` are\n     * floats, a floating-point number is returned instead of an integer.\n     *\n     * **Note:** JavaScript follows the IEEE-754 standard for resolving\n     * floating-point values which can produce unexpected results.\n     *\n     * @static\n     * @memberOf _\n     * @since 0.7.0\n     * @category Number\n     * @param {number} [lower=0] The lower bound.\n     * @param {number} [upper=1] The upper bound.\n     * @param {boolean} [floating] Specify returning a floating-point number.\n     * @returns {number} Returns the random number.\n     * @example\n     *\n     * _.random(0, 5);\n     * // => an integer between 0 and 5\n     *\n     * _.random(5);\n     * // => also an integer between 0 and 5\n     *\n     * _.random(5, true);\n     * // => a floating-point number between 0 and 5\n     *\n     * _.random(1.2, 5.2);\n     * // => a floating-point number between 1.2 and 5.2\n     */\n    function random(lower, upper, floating) {\n      if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n        upper = floating = undefined;\n      }\n      if (floating === undefined) {\n        if (typeof upper == 'boolean') {\n          floating = upper;\n          upper = undefined;\n        }\n        else if (typeof lower == 'boolean') {\n          floating = lower;\n          lower = undefined;\n        }\n      }\n      if (lower === undefined && upper === undefined) {\n        lower = 0;\n        upper = 1;\n      }\n      else {\n        lower = toFinite(lower);\n        if (upper === undefined) {\n          upper = lower;\n          lower = 0;\n        } else {\n          upper = toFinite(upper);\n        }\n      }\n      if (lower > upper) {\n        var temp = lower;\n        lower = upper;\n        upper = temp;\n      }\n      if (floating || lower % 1 || upper % 1) {\n        var rand = nativeRandom();\n        return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n      }\n      return baseRandom(lower, upper);\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the camel cased string.\n     * @example\n     *\n     * _.camelCase('Foo Bar');\n     * // => 'fooBar'\n     *\n     * _.camelCase('--foo-bar--');\n     * // => 'fooBar'\n     *\n     * _.camelCase('__FOO_BAR__');\n     * // => 'fooBar'\n     */\n    var camelCase = createCompounder(function(result, word, index) {\n      word = word.toLowerCase();\n      return result + (index ? capitalize(word) : word);\n    });\n\n    /**\n     * Converts the first character of `string` to upper case and the remaining\n     * to lower case.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to capitalize.\n     * @returns {string} Returns the capitalized string.\n     * @example\n     *\n     * _.capitalize('FRED');\n     * // => 'Fred'\n     */\n    function capitalize(string) {\n      return upperFirst(toString(string).toLowerCase());\n    }\n\n    /**\n     * Deburrs `string` by converting\n     * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n     * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n     * letters to basic Latin letters and removing\n     * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to deburr.\n     * @returns {string} Returns the deburred string.\n     * @example\n     *\n     * _.deburr('d\u00E9j\u00E0 vu');\n     * // => 'deja vu'\n     */\n    function deburr(string) {\n      string = toString(string);\n      return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n    }\n\n    /**\n     * Checks if `string` ends with the given target string.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {string} [target] The string to search for.\n     * @param {number} [position=string.length] The position to search up to.\n     * @returns {boolean} Returns `true` if `string` ends with `target`,\n     *  else `false`.\n     * @example\n     *\n     * _.endsWith('abc', 'c');\n     * // => true\n     *\n     * _.endsWith('abc', 'b');\n     * // => false\n     *\n     * _.endsWith('abc', 'b', 2);\n     * // => true\n     */\n    function endsWith(string, target, position) {\n      string = toString(string);\n      target = baseToString(target);\n\n      var length = string.length;\n      position = position === undefined\n        ? length\n        : baseClamp(toInteger(position), 0, length);\n\n      var end = position;\n      position -= target.length;\n      return position >= 0 && string.slice(position, end) == target;\n    }\n\n    /**\n     * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n     * corresponding HTML entities.\n     *\n     * **Note:** No other characters are escaped. To escape additional\n     * characters use a third-party library like [_he_](https://mths.be/he).\n     *\n     * Though the \">\" character is escaped for symmetry, characters like\n     * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n     * unless they're part of a tag or unquoted attribute value. See\n     * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n     * (under \"semi-related fun fact\") for more details.\n     *\n     * When working with HTML you should always\n     * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n     * XSS vectors.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category String\n     * @param {string} [string=''] The string to escape.\n     * @returns {string} Returns the escaped string.\n     * @example\n     *\n     * _.escape('fred, barney, & pebbles');\n     * // => 'fred, barney, &amp; pebbles'\n     */\n    function escape(string) {\n      string = toString(string);\n      return (string && reHasUnescapedHtml.test(string))\n        ? string.replace(reUnescapedHtml, escapeHtmlChar)\n        : string;\n    }\n\n    /**\n     * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n     * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to escape.\n     * @returns {string} Returns the escaped string.\n     * @example\n     *\n     * _.escapeRegExp('[lodash](https://lodash.com/)');\n     * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n     */\n    function escapeRegExp(string) {\n      string = toString(string);\n      return (string && reHasRegExpChar.test(string))\n        ? string.replace(reRegExpChar, '\\\\$&')\n        : string;\n    }\n\n    /**\n     * Converts `string` to\n     * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the kebab cased string.\n     * @example\n     *\n     * _.kebabCase('Foo Bar');\n     * // => 'foo-bar'\n     *\n     * _.kebabCase('fooBar');\n     * // => 'foo-bar'\n     *\n     * _.kebabCase('__FOO_BAR__');\n     * // => 'foo-bar'\n     */\n    var kebabCase = createCompounder(function(result, word, index) {\n      return result + (index ? '-' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Converts `string`, as space separated words, to lower case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the lower cased string.\n     * @example\n     *\n     * _.lowerCase('--Foo-Bar--');\n     * // => 'foo bar'\n     *\n     * _.lowerCase('fooBar');\n     * // => 'foo bar'\n     *\n     * _.lowerCase('__FOO_BAR__');\n     * // => 'foo bar'\n     */\n    var lowerCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Converts the first character of `string` to lower case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the converted string.\n     * @example\n     *\n     * _.lowerFirst('Fred');\n     * // => 'fred'\n     *\n     * _.lowerFirst('FRED');\n     * // => 'fRED'\n     */\n    var lowerFirst = createCaseFirst('toLowerCase');\n\n    /**\n     * Pads `string` on the left and right sides if it's shorter than `length`.\n     * Padding characters are truncated if they can't be evenly divided by `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.pad('abc', 8);\n     * // => '  abc   '\n     *\n     * _.pad('abc', 8, '_-');\n     * // => '_-abc_-_'\n     *\n     * _.pad('abc', 3);\n     * // => 'abc'\n     */\n    function pad(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      if (!length || strLength >= length) {\n        return string;\n      }\n      var mid = (length - strLength) / 2;\n      return (\n        createPadding(nativeFloor(mid), chars) +\n        string +\n        createPadding(nativeCeil(mid), chars)\n      );\n    }\n\n    /**\n     * Pads `string` on the right side if it's shorter than `length`. Padding\n     * characters are truncated if they exceed `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.padEnd('abc', 6);\n     * // => 'abc   '\n     *\n     * _.padEnd('abc', 6, '_-');\n     * // => 'abc_-_'\n     *\n     * _.padEnd('abc', 3);\n     * // => 'abc'\n     */\n    function padEnd(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      return (length && strLength < length)\n        ? (string + createPadding(length - strLength, chars))\n        : string;\n    }\n\n    /**\n     * Pads `string` on the left side if it's shorter than `length`. Padding\n     * characters are truncated if they exceed `length`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to pad.\n     * @param {number} [length=0] The padding length.\n     * @param {string} [chars=' '] The string used as padding.\n     * @returns {string} Returns the padded string.\n     * @example\n     *\n     * _.padStart('abc', 6);\n     * // => '   abc'\n     *\n     * _.padStart('abc', 6, '_-');\n     * // => '_-_abc'\n     *\n     * _.padStart('abc', 3);\n     * // => 'abc'\n     */\n    function padStart(string, length, chars) {\n      string = toString(string);\n      length = toInteger(length);\n\n      var strLength = length ? stringSize(string) : 0;\n      return (length && strLength < length)\n        ? (createPadding(length - strLength, chars) + string)\n        : string;\n    }\n\n    /**\n     * Converts `string` to an integer of the specified radix. If `radix` is\n     * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n     * hexadecimal, in which case a `radix` of `16` is used.\n     *\n     * **Note:** This method aligns with the\n     * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n     *\n     * @static\n     * @memberOf _\n     * @since 1.1.0\n     * @category String\n     * @param {string} string The string to convert.\n     * @param {number} [radix=10] The radix to interpret `value` by.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {number} Returns the converted integer.\n     * @example\n     *\n     * _.parseInt('08');\n     * // => 8\n     *\n     * _.map(['6', '08', '10'], _.parseInt);\n     * // => [6, 8, 10]\n     */\n    function parseInt(string, radix, guard) {\n      if (guard || radix == null) {\n        radix = 0;\n      } else if (radix) {\n        radix = +radix;\n      }\n      return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n    }\n\n    /**\n     * Repeats the given string `n` times.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to repeat.\n     * @param {number} [n=1] The number of times to repeat the string.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the repeated string.\n     * @example\n     *\n     * _.repeat('*', 3);\n     * // => '***'\n     *\n     * _.repeat('abc', 2);\n     * // => 'abcabc'\n     *\n     * _.repeat('abc', 0);\n     * // => ''\n     */\n    function repeat(string, n, guard) {\n      if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n        n = 1;\n      } else {\n        n = toInteger(n);\n      }\n      return baseRepeat(toString(string), n);\n    }\n\n    /**\n     * Replaces matches for `pattern` in `string` with `replacement`.\n     *\n     * **Note:** This method is based on\n     * [`String#replace`](https://mdn.io/String/replace).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to modify.\n     * @param {RegExp|string} pattern The pattern to replace.\n     * @param {Function|string} replacement The match replacement.\n     * @returns {string} Returns the modified string.\n     * @example\n     *\n     * _.replace('Hi Fred', 'Fred', 'Barney');\n     * // => 'Hi Barney'\n     */\n    function replace() {\n      var args = arguments,\n          string = toString(args[0]);\n\n      return args.length < 3 ? string : string.replace(args[1], args[2]);\n    }\n\n    /**\n     * Converts `string` to\n     * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the snake cased string.\n     * @example\n     *\n     * _.snakeCase('Foo Bar');\n     * // => 'foo_bar'\n     *\n     * _.snakeCase('fooBar');\n     * // => 'foo_bar'\n     *\n     * _.snakeCase('--FOO-BAR--');\n     * // => 'foo_bar'\n     */\n    var snakeCase = createCompounder(function(result, word, index) {\n      return result + (index ? '_' : '') + word.toLowerCase();\n    });\n\n    /**\n     * Splits `string` by `separator`.\n     *\n     * **Note:** This method is based on\n     * [`String#split`](https://mdn.io/String/split).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to split.\n     * @param {RegExp|string} separator The separator pattern to split by.\n     * @param {number} [limit] The length to truncate results to.\n     * @returns {Array} Returns the string segments.\n     * @example\n     *\n     * _.split('a-b-c', '-', 2);\n     * // => ['a', 'b']\n     */\n    function split(string, separator, limit) {\n      if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n        separator = limit = undefined;\n      }\n      limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n      if (!limit) {\n        return [];\n      }\n      string = toString(string);\n      if (string && (\n            typeof separator == 'string' ||\n            (separator != null && !isRegExp(separator))\n          )) {\n        separator = baseToString(separator);\n        if (!separator && hasUnicode(string)) {\n          return castSlice(stringToArray(string), 0, limit);\n        }\n      }\n      return string.split(separator, limit);\n    }\n\n    /**\n     * Converts `string` to\n     * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n     *\n     * @static\n     * @memberOf _\n     * @since 3.1.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the start cased string.\n     * @example\n     *\n     * _.startCase('--foo-bar--');\n     * // => 'Foo Bar'\n     *\n     * _.startCase('fooBar');\n     * // => 'Foo Bar'\n     *\n     * _.startCase('__FOO_BAR__');\n     * // => 'FOO BAR'\n     */\n    var startCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + upperFirst(word);\n    });\n\n    /**\n     * Checks if `string` starts with the given target string.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {string} [target] The string to search for.\n     * @param {number} [position=0] The position to search from.\n     * @returns {boolean} Returns `true` if `string` starts with `target`,\n     *  else `false`.\n     * @example\n     *\n     * _.startsWith('abc', 'a');\n     * // => true\n     *\n     * _.startsWith('abc', 'b');\n     * // => false\n     *\n     * _.startsWith('abc', 'b', 1);\n     * // => true\n     */\n    function startsWith(string, target, position) {\n      string = toString(string);\n      position = position == null\n        ? 0\n        : baseClamp(toInteger(position), 0, string.length);\n\n      target = baseToString(target);\n      return string.slice(position, position + target.length) == target;\n    }\n\n    /**\n     * Creates a compiled template function that can interpolate data properties\n     * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n     * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n     * properties may be accessed as free variables in the template. If a setting\n     * object is given, it takes precedence over `_.templateSettings` values.\n     *\n     * **Note:** In the development build `_.template` utilizes\n     * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n     * for easier debugging.\n     *\n     * For more information on precompiling templates see\n     * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n     *\n     * For more information on Chrome extension sandboxes see\n     * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category String\n     * @param {string} [string=''] The template string.\n     * @param {Object} [options={}] The options object.\n     * @param {RegExp} [options.escape=_.templateSettings.escape]\n     *  The HTML \"escape\" delimiter.\n     * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n     *  The \"evaluate\" delimiter.\n     * @param {Object} [options.imports=_.templateSettings.imports]\n     *  An object to import into the template as free variables.\n     * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n     *  The \"interpolate\" delimiter.\n     * @param {string} [options.sourceURL='lodash.templateSources[n]']\n     *  The sourceURL of the compiled template.\n     * @param {string} [options.variable='obj']\n     *  The data object variable name.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Function} Returns the compiled template function.\n     * @example\n     *\n     * // Use the \"interpolate\" delimiter to create a compiled template.\n     * var compiled = _.template('hello <%= user %>!');\n     * compiled({ 'user': 'fred' });\n     * // => 'hello fred!'\n     *\n     * // Use the HTML \"escape\" delimiter to escape data property values.\n     * var compiled = _.template('<b><%- value %></b>');\n     * compiled({ 'value': '<script>' });\n     * // => '<b>&lt;script&gt;</b>'\n     *\n     * // Use the \"evaluate\" delimiter to execute JavaScript and generate HTML.\n     * var compiled = _.template('<% _.forEach(users, function(user) { %><li><%- user %></li><% }); %>');\n     * compiled({ 'users': ['fred', 'barney'] });\n     * // => '<li>fred</li><li>barney</li>'\n     *\n     * // Use the internal `print` function in \"evaluate\" delimiters.\n     * var compiled = _.template('<% print(\"hello \" + user); %>!');\n     * compiled({ 'user': 'barney' });\n     * // => 'hello barney!'\n     *\n     * // Use the ES template literal delimiter as an \"interpolate\" delimiter.\n     * // Disable support by replacing the \"interpolate\" delimiter.\n     * var compiled = _.template('hello ${ user }!');\n     * compiled({ 'user': 'pebbles' });\n     * // => 'hello pebbles!'\n     *\n     * // Use backslashes to treat delimiters as plain text.\n     * var compiled = _.template('<%= \"\\\\<%- value %\\\\>\" %>');\n     * compiled({ 'value': 'ignored' });\n     * // => '<%- value %>'\n     *\n     * // Use the `imports` option to import `jQuery` as `jq`.\n     * var text = '<% jq.each(users, function(user) { %><li><%- user %></li><% }); %>';\n     * var compiled = _.template(text, { 'imports': { 'jq': jQuery } });\n     * compiled({ 'users': ['fred', 'barney'] });\n     * // => '<li>fred</li><li>barney</li>'\n     *\n     * // Use the `sourceURL` option to specify a custom sourceURL for the template.\n     * var compiled = _.template('hello <%= user %>!', { 'sourceURL': '/basic/greeting.jst' });\n     * compiled(data);\n     * // => Find the source of \"greeting.jst\" under the Sources tab or Resources panel of the web inspector.\n     *\n     * // Use the `variable` option to ensure a with-statement isn't used in the compiled template.\n     * var compiled = _.template('hi <%= data.user %>!', { 'variable': 'data' });\n     * compiled.source;\n     * // => function(data) {\n     * //   var __t, __p = '';\n     * //   __p += 'hi ' + ((__t = ( data.user )) == null ? '' : __t) + '!';\n     * //   return __p;\n     * // }\n     *\n     * // Use custom template delimiters.\n     * _.templateSettings.interpolate = /{{([\\s\\S]+?)}}/g;\n     * var compiled = _.template('hello {{ user }}!');\n     * compiled({ 'user': 'mustache' });\n     * // => 'hello mustache!'\n     *\n     * // Use the `source` property to inline compiled templates for meaningful\n     * // line numbers in error messages and stack traces.\n     * fs.writeFileSync(path.join(process.cwd(), 'jst.js'), '\\\n     *   var JST = {\\\n     *     \"main\": ' + _.template(mainText).source + '\\\n     *   };\\\n     * ');\n     */\n    function template(string, options, guard) {\n      // Based on John Resig's `tmpl` implementation\n      // (http://ejohn.org/blog/javascript-micro-templating/)\n      // and Laura Doktorova's doT.js (https://github.com/olado/doT).\n      var settings = lodash.templateSettings;\n\n      if (guard && isIterateeCall(string, options, guard)) {\n        options = undefined;\n      }\n      string = toString(string);\n      options = assignInWith({}, options, settings, customDefaultsAssignIn);\n\n      var imports = assignInWith({}, options.imports, settings.imports, customDefaultsAssignIn),\n          importsKeys = keys(imports),\n          importsValues = baseValues(imports, importsKeys);\n\n      var isEscaping,\n          isEvaluating,\n          index = 0,\n          interpolate = options.interpolate || reNoMatch,\n          source = \"__p += '\";\n\n      // Compile the regexp to match each delimiter.\n      var reDelimiters = RegExp(\n        (options.escape || reNoMatch).source + '|' +\n        interpolate.source + '|' +\n        (interpolate === reInterpolate ? reEsTemplate : reNoMatch).source + '|' +\n        (options.evaluate || reNoMatch).source + '|$'\n      , 'g');\n\n      // Use a sourceURL for easier debugging.\n      // The sourceURL gets injected into the source that's eval-ed, so be careful\n      // to normalize all kinds of whitespace, so e.g. newlines (and unicode versions of it) can't sneak in\n      // and escape the comment, thus injecting code that gets evaled.\n      var sourceURL = '//# sourceURL=' +\n        (hasOwnProperty.call(options, 'sourceURL')\n          ? (options.sourceURL + '').replace(/\\s/g, ' ')\n          : ('lodash.templateSources[' + (++templateCounter) + ']')\n        ) + '\\n';\n\n      string.replace(reDelimiters, function(match, escapeValue, interpolateValue, esTemplateValue, evaluateValue, offset) {\n        interpolateValue || (interpolateValue = esTemplateValue);\n\n        // Escape characters that can't be included in string literals.\n        source += string.slice(index, offset).replace(reUnescapedString, escapeStringChar);\n\n        // Replace delimiters with snippets.\n        if (escapeValue) {\n          isEscaping = true;\n          source += \"' +\\n__e(\" + escapeValue + \") +\\n'\";\n        }\n        if (evaluateValue) {\n          isEvaluating = true;\n          source += \"';\\n\" + evaluateValue + \";\\n__p += '\";\n        }\n        if (interpolateValue) {\n          source += \"' +\\n((__t = (\" + interpolateValue + \")) == null ? '' : __t) +\\n'\";\n        }\n        index = offset + match.length;\n\n        // The JS engine embedded in Adobe products needs `match` returned in\n        // order to produce the correct `offset` value.\n        return match;\n      });\n\n      source += \"';\\n\";\n\n      // If `variable` is not specified wrap a with-statement around the generated\n      // code to add the data object to the top of the scope chain.\n      var variable = hasOwnProperty.call(options, 'variable') && options.variable;\n      if (!variable) {\n        source = 'with (obj) {\\n' + source + '\\n}\\n';\n      }\n      // Throw an error if a forbidden character was found in `variable`, to prevent\n      // potential command injection attacks.\n      else if (reForbiddenIdentifierChars.test(variable)) {\n        throw new Error(INVALID_TEMPL_VAR_ERROR_TEXT);\n      }\n\n      // Cleanup code by stripping empty strings.\n      source = (isEvaluating ? source.replace(reEmptyStringLeading, '') : source)\n        .replace(reEmptyStringMiddle, '$1')\n        .replace(reEmptyStringTrailing, '$1;');\n\n      // Frame code as the function body.\n      source = 'function(' + (variable || 'obj') + ') {\\n' +\n        (variable\n          ? ''\n          : 'obj || (obj = {});\\n'\n        ) +\n        \"var __t, __p = ''\" +\n        (isEscaping\n           ? ', __e = _.escape'\n           : ''\n        ) +\n        (isEvaluating\n          ? ', __j = Array.prototype.join;\\n' +\n            \"function print() { __p += __j.call(arguments, '') }\\n\"\n          : ';\\n'\n        ) +\n        source +\n        'return __p\\n}';\n\n      var result = attempt(function() {\n        return Function(importsKeys, sourceURL + 'return ' + source)\n          .apply(undefined, importsValues);\n      });\n\n      // Provide the compiled function's source by its `toString` method or\n      // the `source` property as a convenience for inlining compiled templates.\n      result.source = source;\n      if (isError(result)) {\n        throw result;\n      }\n      return result;\n    }\n\n    /**\n     * Converts `string`, as a whole, to lower case just like\n     * [String#toLowerCase](https://mdn.io/toLowerCase).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the lower cased string.\n     * @example\n     *\n     * _.toLower('--Foo-Bar--');\n     * // => '--foo-bar--'\n     *\n     * _.toLower('fooBar');\n     * // => 'foobar'\n     *\n     * _.toLower('__FOO_BAR__');\n     * // => '__foo_bar__'\n     */\n    function toLower(value) {\n      return toString(value).toLowerCase();\n    }\n\n    /**\n     * Converts `string`, as a whole, to upper case just like\n     * [String#toUpperCase](https://mdn.io/toUpperCase).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the upper cased string.\n     * @example\n     *\n     * _.toUpper('--foo-bar--');\n     * // => '--FOO-BAR--'\n     *\n     * _.toUpper('fooBar');\n     * // => 'FOOBAR'\n     *\n     * _.toUpper('__foo_bar__');\n     * // => '__FOO_BAR__'\n     */\n    function toUpper(value) {\n      return toString(value).toUpperCase();\n    }\n\n    /**\n     * Removes leading and trailing whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trim('  abc  ');\n     * // => 'abc'\n     *\n     * _.trim('-_-abc-_-', '_-');\n     * // => 'abc'\n     *\n     * _.map(['  foo  ', '  bar  '], _.trim);\n     * // => ['foo', 'bar']\n     */\n    function trim(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return baseTrim(string);\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          chrSymbols = stringToArray(chars),\n          start = charsStartIndex(strSymbols, chrSymbols),\n          end = charsEndIndex(strSymbols, chrSymbols) + 1;\n\n      return castSlice(strSymbols, start, end).join('');\n    }\n\n    /**\n     * Removes trailing whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trimEnd('  abc  ');\n     * // => '  abc'\n     *\n     * _.trimEnd('-_-abc-_-', '_-');\n     * // => '-_-abc'\n     */\n    function trimEnd(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return string.slice(0, trimmedEndIndex(string) + 1);\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          end = charsEndIndex(strSymbols, stringToArray(chars)) + 1;\n\n      return castSlice(strSymbols, 0, end).join('');\n    }\n\n    /**\n     * Removes leading whitespace or specified characters from `string`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to trim.\n     * @param {string} [chars=whitespace] The characters to trim.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {string} Returns the trimmed string.\n     * @example\n     *\n     * _.trimStart('  abc  ');\n     * // => 'abc  '\n     *\n     * _.trimStart('-_-abc-_-', '_-');\n     * // => 'abc-_-'\n     */\n    function trimStart(string, chars, guard) {\n      string = toString(string);\n      if (string && (guard || chars === undefined)) {\n        return string.replace(reTrimStart, '');\n      }\n      if (!string || !(chars = baseToString(chars))) {\n        return string;\n      }\n      var strSymbols = stringToArray(string),\n          start = charsStartIndex(strSymbols, stringToArray(chars));\n\n      return castSlice(strSymbols, start).join('');\n    }\n\n    /**\n     * Truncates `string` if it's longer than the given maximum string length.\n     * The last characters of the truncated string are replaced with the omission\n     * string which defaults to \"...\".\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to truncate.\n     * @param {Object} [options={}] The options object.\n     * @param {number} [options.length=30] The maximum string length.\n     * @param {string} [options.omission='...'] The string to indicate text is omitted.\n     * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n     * @returns {string} Returns the truncated string.\n     * @example\n     *\n     * _.truncate('hi-diddly-ho there, neighborino');\n     * // => 'hi-diddly-ho there, neighbo...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'length': 24,\n     *   'separator': ' '\n     * });\n     * // => 'hi-diddly-ho there,...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'length': 24,\n     *   'separator': /,? +/\n     * });\n     * // => 'hi-diddly-ho there...'\n     *\n     * _.truncate('hi-diddly-ho there, neighborino', {\n     *   'omission': ' [...]'\n     * });\n     * // => 'hi-diddly-ho there, neig [...]'\n     */\n    function truncate(string, options) {\n      var length = DEFAULT_TRUNC_LENGTH,\n          omission = DEFAULT_TRUNC_OMISSION;\n\n      if (isObject(options)) {\n        var separator = 'separator' in options ? options.separator : separator;\n        length = 'length' in options ? toInteger(options.length) : length;\n        omission = 'omission' in options ? baseToString(options.omission) : omission;\n      }\n      string = toString(string);\n\n      var strLength = string.length;\n      if (hasUnicode(string)) {\n        var strSymbols = stringToArray(string);\n        strLength = strSymbols.length;\n      }\n      if (length >= strLength) {\n        return string;\n      }\n      var end = length - stringSize(omission);\n      if (end < 1) {\n        return omission;\n      }\n      var result = strSymbols\n        ? castSlice(strSymbols, 0, end).join('')\n        : string.slice(0, end);\n\n      if (separator === undefined) {\n        return result + omission;\n      }\n      if (strSymbols) {\n        end += (result.length - end);\n      }\n      if (isRegExp(separator)) {\n        if (string.slice(end).search(separator)) {\n          var match,\n              substring = result;\n\n          if (!separator.global) {\n            separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n          }\n          separator.lastIndex = 0;\n          while ((match = separator.exec(substring))) {\n            var newEnd = match.index;\n          }\n          result = result.slice(0, newEnd === undefined ? end : newEnd);\n        }\n      } else if (string.indexOf(baseToString(separator), end) != end) {\n        var index = result.lastIndexOf(separator);\n        if (index > -1) {\n          result = result.slice(0, index);\n        }\n      }\n      return result + omission;\n    }\n\n    /**\n     * The inverse of `_.escape`; this method converts the HTML entities\n     * `&amp;`, `&lt;`, `&gt;`, `&quot;`, and `&#39;` in `string` to\n     * their corresponding characters.\n     *\n     * **Note:** No other HTML entities are unescaped. To unescape additional\n     * HTML entities use a third-party library like [_he_](https://mths.be/he).\n     *\n     * @static\n     * @memberOf _\n     * @since 0.6.0\n     * @category String\n     * @param {string} [string=''] The string to unescape.\n     * @returns {string} Returns the unescaped string.\n     * @example\n     *\n     * _.unescape('fred, barney, &amp; pebbles');\n     * // => 'fred, barney, & pebbles'\n     */\n    function unescape(string) {\n      string = toString(string);\n      return (string && reHasEscapedHtml.test(string))\n        ? string.replace(reEscapedHtml, unescapeHtmlChar)\n        : string;\n    }\n\n    /**\n     * Converts `string`, as space separated words, to upper case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the upper cased string.\n     * @example\n     *\n     * _.upperCase('--foo-bar');\n     * // => 'FOO BAR'\n     *\n     * _.upperCase('fooBar');\n     * // => 'FOO BAR'\n     *\n     * _.upperCase('__foo_bar__');\n     * // => 'FOO BAR'\n     */\n    var upperCase = createCompounder(function(result, word, index) {\n      return result + (index ? ' ' : '') + word.toUpperCase();\n    });\n\n    /**\n     * Converts the first character of `string` to upper case.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category String\n     * @param {string} [string=''] The string to convert.\n     * @returns {string} Returns the converted string.\n     * @example\n     *\n     * _.upperFirst('fred');\n     * // => 'Fred'\n     *\n     * _.upperFirst('FRED');\n     * // => 'FRED'\n     */\n    var upperFirst = createCaseFirst('toUpperCase');\n\n    /**\n     * Splits `string` into an array of its words.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category String\n     * @param {string} [string=''] The string to inspect.\n     * @param {RegExp|string} [pattern] The pattern to match words.\n     * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n     * @returns {Array} Returns the words of `string`.\n     * @example\n     *\n     * _.words('fred, barney, & pebbles');\n     * // => ['fred', 'barney', 'pebbles']\n     *\n     * _.words('fred, barney, & pebbles', /[^, ]+/g);\n     * // => ['fred', 'barney', '&', 'pebbles']\n     */\n    function words(string, pattern, guard) {\n      string = toString(string);\n      pattern = guard ? undefined : pattern;\n\n      if (pattern === undefined) {\n        return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n      }\n      return string.match(pattern) || [];\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Attempts to invoke `func`, returning either the result or the caught error\n     * object. Any additional arguments are provided to `func` when it's invoked.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Function} func The function to attempt.\n     * @param {...*} [args] The arguments to invoke `func` with.\n     * @returns {*} Returns the `func` result or error object.\n     * @example\n     *\n     * // Avoid throwing errors for invalid selectors.\n     * var elements = _.attempt(function(selector) {\n     *   return document.querySelectorAll(selector);\n     * }, '>_>');\n     *\n     * if (_.isError(elements)) {\n     *   elements = [];\n     * }\n     */\n    var attempt = baseRest(function(func, args) {\n      try {\n        return apply(func, undefined, args);\n      } catch (e) {\n        return isError(e) ? e : new Error(e);\n      }\n    });\n\n    /**\n     * Binds methods of an object to the object itself, overwriting the existing\n     * method.\n     *\n     * **Note:** This method doesn't set the \"length\" property of bound functions.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {Object} object The object to bind and assign the bound methods to.\n     * @param {...(string|string[])} methodNames The object method names to bind.\n     * @returns {Object} Returns `object`.\n     * @example\n     *\n     * var view = {\n     *   'label': 'docs',\n     *   'click': function() {\n     *     console.log('clicked ' + this.label);\n     *   }\n     * };\n     *\n     * _.bindAll(view, ['click']);\n     * jQuery(element).on('click', view.click);\n     * // => Logs 'clicked docs' when clicked.\n     */\n    var bindAll = flatRest(function(object, methodNames) {\n      arrayEach(methodNames, function(key) {\n        key = toKey(key);\n        baseAssignValue(object, key, bind(object[key], object));\n      });\n      return object;\n    });\n\n    /**\n     * Creates a function that iterates over `pairs` and invokes the corresponding\n     * function of the first predicate to return truthy. The predicate-function\n     * pairs are invoked with the `this` binding and arguments of the created\n     * function.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {Array} pairs The predicate-function pairs.\n     * @returns {Function} Returns the new composite function.\n     * @example\n     *\n     * var func = _.cond([\n     *   [_.matches({ 'a': 1 }),           _.constant('matches A')],\n     *   [_.conforms({ 'b': _.isNumber }), _.constant('matches B')],\n     *   [_.stubTrue,                      _.constant('no match')]\n     * ]);\n     *\n     * func({ 'a': 1, 'b': 2 });\n     * // => 'matches A'\n     *\n     * func({ 'a': 0, 'b': 1 });\n     * // => 'matches B'\n     *\n     * func({ 'a': '1', 'b': '2' });\n     * // => 'no match'\n     */\n    function cond(pairs) {\n      var length = pairs == null ? 0 : pairs.length,\n          toIteratee = getIteratee();\n\n      pairs = !length ? [] : arrayMap(pairs, function(pair) {\n        if (typeof pair[1] != 'function') {\n          throw new TypeError(FUNC_ERROR_TEXT);\n        }\n        return [toIteratee(pair[0]), pair[1]];\n      });\n\n      return baseRest(function(args) {\n        var index = -1;\n        while (++index < length) {\n          var pair = pairs[index];\n          if (apply(pair[0], this, args)) {\n            return apply(pair[1], this, args);\n          }\n        }\n      });\n    }\n\n    /**\n     * Creates a function that invokes the predicate properties of `source` with\n     * the corresponding property values of a given object, returning `true` if\n     * all predicates return truthy, else `false`.\n     *\n     * **Note:** The created function is equivalent to `_.conformsTo` with\n     * `source` partially applied.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {Object} source The object of property predicates to conform to.\n     * @returns {Function} Returns the new spec function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': 2, 'b': 1 },\n     *   { 'a': 1, 'b': 2 }\n     * ];\n     *\n     * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));\n     * // => [{ 'a': 1, 'b': 2 }]\n     */\n    function conforms(source) {\n      return baseConforms(baseClone(source, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that returns `value`.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Util\n     * @param {*} value The value to return from the new function.\n     * @returns {Function} Returns the new constant function.\n     * @example\n     *\n     * var objects = _.times(2, _.constant({ 'a': 1 }));\n     *\n     * console.log(objects);\n     * // => [{ 'a': 1 }, { 'a': 1 }]\n     *\n     * console.log(objects[0] === objects[1]);\n     * // => true\n     */\n    function constant(value) {\n      return function() {\n        return value;\n      };\n    }\n\n    /**\n     * Checks `value` to determine whether a default value should be returned in\n     * its place. The `defaultValue` is returned if `value` is `NaN`, `null`,\n     * or `undefined`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.14.0\n     * @category Util\n     * @param {*} value The value to check.\n     * @param {*} defaultValue The default value.\n     * @returns {*} Returns the resolved value.\n     * @example\n     *\n     * _.defaultTo(1, 10);\n     * // => 1\n     *\n     * _.defaultTo(undefined, 10);\n     * // => 10\n     */\n    function defaultTo(value, defaultValue) {\n      return (value == null || value !== value) ? defaultValue : value;\n    }\n\n    /**\n     * Creates a function that returns the result of invoking the given functions\n     * with the `this` binding of the created function, where each successive\n     * invocation is supplied the return value of the previous.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [funcs] The functions to invoke.\n     * @returns {Function} Returns the new composite function.\n     * @see _.flowRight\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var addSquare = _.flow([_.add, square]);\n     * addSquare(1, 2);\n     * // => 9\n     */\n    var flow = createFlow();\n\n    /**\n     * This method is like `_.flow` except that it creates a function that\n     * invokes the given functions from right to left.\n     *\n     * @static\n     * @since 3.0.0\n     * @memberOf _\n     * @category Util\n     * @param {...(Function|Function[])} [funcs] The functions to invoke.\n     * @returns {Function} Returns the new composite function.\n     * @see _.flow\n     * @example\n     *\n     * function square(n) {\n     *   return n * n;\n     * }\n     *\n     * var addSquare = _.flowRight([square, _.add]);\n     * addSquare(1, 2);\n     * // => 9\n     */\n    var flowRight = createFlow(true);\n\n    /**\n     * This method returns the first argument it receives.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {*} value Any value.\n     * @returns {*} Returns `value`.\n     * @example\n     *\n     * var object = { 'a': 1 };\n     *\n     * console.log(_.identity(object) === object);\n     * // => true\n     */\n    function identity(value) {\n      return value;\n    }\n\n    /**\n     * Creates a function that invokes `func` with the arguments of the created\n     * function. If `func` is a property name, the created function returns the\n     * property value for a given element. If `func` is an array or object, the\n     * created function returns `true` for elements that contain the equivalent\n     * source properties, otherwise it returns `false`.\n     *\n     * @static\n     * @since 4.0.0\n     * @memberOf _\n     * @category Util\n     * @param {*} [func=_.identity] The value to convert to a callback.\n     * @returns {Function} Returns the callback.\n     * @example\n     *\n     * var users = [\n     *   { 'user': 'barney', 'age': 36, 'active': true },\n     *   { 'user': 'fred',   'age': 40, 'active': false }\n     * ];\n     *\n     * // The `_.matches` iteratee shorthand.\n     * _.filter(users, _.iteratee({ 'user': 'barney', 'active': true }));\n     * // => [{ 'user': 'barney', 'age': 36, 'active': true }]\n     *\n     * // The `_.matchesProperty` iteratee shorthand.\n     * _.filter(users, _.iteratee(['user', 'fred']));\n     * // => [{ 'user': 'fred', 'age': 40 }]\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.map(users, _.iteratee('user'));\n     * // => ['barney', 'fred']\n     *\n     * // Create custom iteratee shorthands.\n     * _.iteratee = _.wrap(_.iteratee, function(iteratee, func) {\n     *   return !_.isRegExp(func) ? iteratee(func) : function(string) {\n     *     return func.test(string);\n     *   };\n     * });\n     *\n     * _.filter(['abc', 'def'], /ef/);\n     * // => ['def']\n     */\n    function iteratee(func) {\n      return baseIteratee(typeof func == 'function' ? func : baseClone(func, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that performs a partial deep comparison between a given\n     * object and `source`, returning `true` if the given object has equivalent\n     * property values, else `false`.\n     *\n     * **Note:** The created function is equivalent to `_.isMatch` with `source`\n     * partially applied.\n     *\n     * Partial comparisons will match empty array and empty object `source`\n     * values against any array or object value, respectively. See `_.isEqual`\n     * for a list of supported value comparisons.\n     *\n     * **Note:** Multiple values can be checked by combining several matchers\n     * using `_.overSome`\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Object} source The object of property values to match.\n     * @returns {Function} Returns the new spec function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': 1, 'b': 2, 'c': 3 },\n     *   { 'a': 4, 'b': 5, 'c': 6 }\n     * ];\n     *\n     * _.filter(objects, _.matches({ 'a': 4, 'c': 6 }));\n     * // => [{ 'a': 4, 'b': 5, 'c': 6 }]\n     *\n     * // Checking for several possible values\n     * _.filter(objects, _.overSome([_.matches({ 'a': 1 }), _.matches({ 'a': 4 })]));\n     * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n     */\n    function matches(source) {\n      return baseMatches(baseClone(source, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that performs a partial deep comparison between the\n     * value at `path` of a given object to `srcValue`, returning `true` if the\n     * object value is equivalent, else `false`.\n     *\n     * **Note:** Partial comparisons will match empty array and empty object\n     * `srcValue` values against any array or object value, respectively. See\n     * `_.isEqual` for a list of supported value comparisons.\n     *\n     * **Note:** Multiple values can be checked by combining several matchers\n     * using `_.overSome`\n     *\n     * @static\n     * @memberOf _\n     * @since 3.2.0\n     * @category Util\n     * @param {Array|string} path The path of the property to get.\n     * @param {*} srcValue The value to match.\n     * @returns {Function} Returns the new spec function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': 1, 'b': 2, 'c': 3 },\n     *   { 'a': 4, 'b': 5, 'c': 6 }\n     * ];\n     *\n     * _.find(objects, _.matchesProperty('a', 4));\n     * // => { 'a': 4, 'b': 5, 'c': 6 }\n     *\n     * // Checking for several possible values\n     * _.filter(objects, _.overSome([_.matchesProperty('a', 1), _.matchesProperty('a', 4)]));\n     * // => [{ 'a': 1, 'b': 2, 'c': 3 }, { 'a': 4, 'b': 5, 'c': 6 }]\n     */\n    function matchesProperty(path, srcValue) {\n      return baseMatchesProperty(path, baseClone(srcValue, CLONE_DEEP_FLAG));\n    }\n\n    /**\n     * Creates a function that invokes the method at `path` of a given object.\n     * Any additional arguments are provided to the invoked method.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Util\n     * @param {Array|string} path The path of the method to invoke.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {Function} Returns the new invoker function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': { 'b': _.constant(2) } },\n     *   { 'a': { 'b': _.constant(1) } }\n     * ];\n     *\n     * _.map(objects, _.method('a.b'));\n     * // => [2, 1]\n     *\n     * _.map(objects, _.method(['a', 'b']));\n     * // => [2, 1]\n     */\n    var method = baseRest(function(path, args) {\n      return function(object) {\n        return baseInvoke(object, path, args);\n      };\n    });\n\n    /**\n     * The opposite of `_.method`; this method creates a function that invokes\n     * the method at a given path of `object`. Any additional arguments are\n     * provided to the invoked method.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.7.0\n     * @category Util\n     * @param {Object} object The object to query.\n     * @param {...*} [args] The arguments to invoke the method with.\n     * @returns {Function} Returns the new invoker function.\n     * @example\n     *\n     * var array = _.times(3, _.constant),\n     *     object = { 'a': array, 'b': array, 'c': array };\n     *\n     * _.map(['a[2]', 'c[0]'], _.methodOf(object));\n     * // => [2, 0]\n     *\n     * _.map([['a', '2'], ['c', '0']], _.methodOf(object));\n     * // => [2, 0]\n     */\n    var methodOf = baseRest(function(object, args) {\n      return function(path) {\n        return baseInvoke(object, path, args);\n      };\n    });\n\n    /**\n     * Adds all own enumerable string keyed function properties of a source\n     * object to the destination object. If `object` is a function, then methods\n     * are added to its prototype as well.\n     *\n     * **Note:** Use `_.runInContext` to create a pristine `lodash` function to\n     * avoid conflicts caused by modifying the original.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {Function|Object} [object=lodash] The destination object.\n     * @param {Object} source The object of functions to add.\n     * @param {Object} [options={}] The options object.\n     * @param {boolean} [options.chain=true] Specify whether mixins are chainable.\n     * @returns {Function|Object} Returns `object`.\n     * @example\n     *\n     * function vowels(string) {\n     *   return _.filter(string, function(v) {\n     *     return /[aeiou]/i.test(v);\n     *   });\n     * }\n     *\n     * _.mixin({ 'vowels': vowels });\n     * _.vowels('fred');\n     * // => ['e']\n     *\n     * _('fred').vowels().value();\n     * // => ['e']\n     *\n     * _.mixin({ 'vowels': vowels }, { 'chain': false });\n     * _('fred').vowels();\n     * // => ['e']\n     */\n    function mixin(object, source, options) {\n      var props = keys(source),\n          methodNames = baseFunctions(source, props);\n\n      if (options == null &&\n          !(isObject(source) && (methodNames.length || !props.length))) {\n        options = source;\n        source = object;\n        object = this;\n        methodNames = baseFunctions(source, keys(source));\n      }\n      var chain = !(isObject(options) && 'chain' in options) || !!options.chain,\n          isFunc = isFunction(object);\n\n      arrayEach(methodNames, function(methodName) {\n        var func = source[methodName];\n        object[methodName] = func;\n        if (isFunc) {\n          object.prototype[methodName] = function() {\n            var chainAll = this.__chain__;\n            if (chain || chainAll) {\n              var result = object(this.__wrapped__),\n                  actions = result.__actions__ = copyArray(this.__actions__);\n\n              actions.push({ 'func': func, 'args': arguments, 'thisArg': object });\n              result.__chain__ = chainAll;\n              return result;\n            }\n            return func.apply(object, arrayPush([this.value()], arguments));\n          };\n        }\n      });\n\n      return object;\n    }\n\n    /**\n     * Reverts the `_` variable to its previous value and returns a reference to\n     * the `lodash` function.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @returns {Function} Returns the `lodash` function.\n     * @example\n     *\n     * var lodash = _.noConflict();\n     */\n    function noConflict() {\n      if (root._ === this) {\n        root._ = oldDash;\n      }\n      return this;\n    }\n\n    /**\n     * This method returns `undefined`.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.3.0\n     * @category Util\n     * @example\n     *\n     * _.times(2, _.noop);\n     * // => [undefined, undefined]\n     */\n    function noop() {\n      // No operation performed.\n    }\n\n    /**\n     * Creates a function that gets the argument at index `n`. If `n` is negative,\n     * the nth argument from the end is returned.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {number} [n=0] The index of the argument to return.\n     * @returns {Function} Returns the new pass-thru function.\n     * @example\n     *\n     * var func = _.nthArg(1);\n     * func('a', 'b', 'c', 'd');\n     * // => 'b'\n     *\n     * var func = _.nthArg(-2);\n     * func('a', 'b', 'c', 'd');\n     * // => 'c'\n     */\n    function nthArg(n) {\n      n = toInteger(n);\n      return baseRest(function(args) {\n        return baseNth(args, n);\n      });\n    }\n\n    /**\n     * Creates a function that invokes `iteratees` with the arguments it receives\n     * and returns their results.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [iteratees=[_.identity]]\n     *  The iteratees to invoke.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.over([Math.max, Math.min]);\n     *\n     * func(1, 2, 3, 4);\n     * // => [4, 1]\n     */\n    var over = createOver(arrayMap);\n\n    /**\n     * Creates a function that checks if **all** of the `predicates` return\n     * truthy when invoked with the arguments it receives.\n     *\n     * Following shorthands are possible for providing predicates.\n     * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n     * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [predicates=[_.identity]]\n     *  The predicates to check.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.overEvery([Boolean, isFinite]);\n     *\n     * func('1');\n     * // => true\n     *\n     * func(null);\n     * // => false\n     *\n     * func(NaN);\n     * // => false\n     */\n    var overEvery = createOver(arrayEvery);\n\n    /**\n     * Creates a function that checks if **any** of the `predicates` return\n     * truthy when invoked with the arguments it receives.\n     *\n     * Following shorthands are possible for providing predicates.\n     * Pass an `Object` and it will be used as an parameter for `_.matches` to create the predicate.\n     * Pass an `Array` of parameters for `_.matchesProperty` and the predicate will be created using them.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {...(Function|Function[])} [predicates=[_.identity]]\n     *  The predicates to check.\n     * @returns {Function} Returns the new function.\n     * @example\n     *\n     * var func = _.overSome([Boolean, isFinite]);\n     *\n     * func('1');\n     * // => true\n     *\n     * func(null);\n     * // => true\n     *\n     * func(NaN);\n     * // => false\n     *\n     * var matchesFunc = _.overSome([{ 'a': 1 }, { 'a': 2 }])\n     * var matchesPropertyFunc = _.overSome([['a', 1], ['a', 2]])\n     */\n    var overSome = createOver(arraySome);\n\n    /**\n     * Creates a function that returns the value at `path` of a given object.\n     *\n     * @static\n     * @memberOf _\n     * @since 2.4.0\n     * @category Util\n     * @param {Array|string} path The path of the property to get.\n     * @returns {Function} Returns the new accessor function.\n     * @example\n     *\n     * var objects = [\n     *   { 'a': { 'b': 2 } },\n     *   { 'a': { 'b': 1 } }\n     * ];\n     *\n     * _.map(objects, _.property('a.b'));\n     * // => [2, 1]\n     *\n     * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n     * // => [1, 2]\n     */\n    function property(path) {\n      return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n    }\n\n    /**\n     * The opposite of `_.property`; this method creates a function that returns\n     * the value at a given path of `object`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.0.0\n     * @category Util\n     * @param {Object} object The object to query.\n     * @returns {Function} Returns the new accessor function.\n     * @example\n     *\n     * var array = [0, 1, 2],\n     *     object = { 'a': array, 'b': array, 'c': array };\n     *\n     * _.map(['a[2]', 'c[0]'], _.propertyOf(object));\n     * // => [2, 0]\n     *\n     * _.map([['a', '2'], ['c', '0']], _.propertyOf(object));\n     * // => [2, 0]\n     */\n    function propertyOf(object) {\n      return function(path) {\n        return object == null ? undefined : baseGet(object, path);\n      };\n    }\n\n    /**\n     * Creates an array of numbers (positive and/or negative) progressing from\n     * `start` up to, but not including, `end`. A step of `-1` is used if a negative\n     * `start` is specified without an `end` or `step`. If `end` is not specified,\n     * it's set to `start` with `start` then set to `0`.\n     *\n     * **Note:** JavaScript follows the IEEE-754 standard for resolving\n     * floating-point values which can produce unexpected results.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {number} [start=0] The start of the range.\n     * @param {number} end The end of the range.\n     * @param {number} [step=1] The value to increment or decrement by.\n     * @returns {Array} Returns the range of numbers.\n     * @see _.inRange, _.rangeRight\n     * @example\n     *\n     * _.range(4);\n     * // => [0, 1, 2, 3]\n     *\n     * _.range(-4);\n     * // => [0, -1, -2, -3]\n     *\n     * _.range(1, 5);\n     * // => [1, 2, 3, 4]\n     *\n     * _.range(0, 20, 5);\n     * // => [0, 5, 10, 15]\n     *\n     * _.range(0, -4, -1);\n     * // => [0, -1, -2, -3]\n     *\n     * _.range(1, 4, 0);\n     * // => [1, 1, 1]\n     *\n     * _.range(0);\n     * // => []\n     */\n    var range = createRange();\n\n    /**\n     * This method is like `_.range` except that it populates values in\n     * descending order.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {number} [start=0] The start of the range.\n     * @param {number} end The end of the range.\n     * @param {number} [step=1] The value to increment or decrement by.\n     * @returns {Array} Returns the range of numbers.\n     * @see _.inRange, _.range\n     * @example\n     *\n     * _.rangeRight(4);\n     * // => [3, 2, 1, 0]\n     *\n     * _.rangeRight(-4);\n     * // => [-3, -2, -1, 0]\n     *\n     * _.rangeRight(1, 5);\n     * // => [4, 3, 2, 1]\n     *\n     * _.rangeRight(0, 20, 5);\n     * // => [15, 10, 5, 0]\n     *\n     * _.rangeRight(0, -4, -1);\n     * // => [-3, -2, -1, 0]\n     *\n     * _.rangeRight(1, 4, 0);\n     * // => [1, 1, 1]\n     *\n     * _.rangeRight(0);\n     * // => []\n     */\n    var rangeRight = createRange(true);\n\n    /**\n     * This method returns a new empty array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {Array} Returns the new empty array.\n     * @example\n     *\n     * var arrays = _.times(2, _.stubArray);\n     *\n     * console.log(arrays);\n     * // => [[], []]\n     *\n     * console.log(arrays[0] === arrays[1]);\n     * // => false\n     */\n    function stubArray() {\n      return [];\n    }\n\n    /**\n     * This method returns `false`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {boolean} Returns `false`.\n     * @example\n     *\n     * _.times(2, _.stubFalse);\n     * // => [false, false]\n     */\n    function stubFalse() {\n      return false;\n    }\n\n    /**\n     * This method returns a new empty object.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {Object} Returns the new empty object.\n     * @example\n     *\n     * var objects = _.times(2, _.stubObject);\n     *\n     * console.log(objects);\n     * // => [{}, {}]\n     *\n     * console.log(objects[0] === objects[1]);\n     * // => false\n     */\n    function stubObject() {\n      return {};\n    }\n\n    /**\n     * This method returns an empty string.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {string} Returns the empty string.\n     * @example\n     *\n     * _.times(2, _.stubString);\n     * // => ['', '']\n     */\n    function stubString() {\n      return '';\n    }\n\n    /**\n     * This method returns `true`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.13.0\n     * @category Util\n     * @returns {boolean} Returns `true`.\n     * @example\n     *\n     * _.times(2, _.stubTrue);\n     * // => [true, true]\n     */\n    function stubTrue() {\n      return true;\n    }\n\n    /**\n     * Invokes the iteratee `n` times, returning an array of the results of\n     * each invocation. The iteratee is invoked with one argument; (index).\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {number} n The number of times to invoke `iteratee`.\n     * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n     * @returns {Array} Returns the array of results.\n     * @example\n     *\n     * _.times(3, String);\n     * // => ['0', '1', '2']\n     *\n     *  _.times(4, _.constant(0));\n     * // => [0, 0, 0, 0]\n     */\n    function times(n, iteratee) {\n      n = toInteger(n);\n      if (n < 1 || n > MAX_SAFE_INTEGER) {\n        return [];\n      }\n      var index = MAX_ARRAY_LENGTH,\n          length = nativeMin(n, MAX_ARRAY_LENGTH);\n\n      iteratee = getIteratee(iteratee);\n      n -= MAX_ARRAY_LENGTH;\n\n      var result = baseTimes(length, iteratee);\n      while (++index < n) {\n        iteratee(index);\n      }\n      return result;\n    }\n\n    /**\n     * Converts `value` to a property path array.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Util\n     * @param {*} value The value to convert.\n     * @returns {Array} Returns the new property path array.\n     * @example\n     *\n     * _.toPath('a.b.c');\n     * // => ['a', 'b', 'c']\n     *\n     * _.toPath('a[0].b.c');\n     * // => ['a', '0', 'b', 'c']\n     */\n    function toPath(value) {\n      if (isArray(value)) {\n        return arrayMap(value, toKey);\n      }\n      return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n    }\n\n    /**\n     * Generates a unique ID. If `prefix` is given, the ID is appended to it.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Util\n     * @param {string} [prefix=''] The value to prefix the ID with.\n     * @returns {string} Returns the unique ID.\n     * @example\n     *\n     * _.uniqueId('contact_');\n     * // => 'contact_104'\n     *\n     * _.uniqueId();\n     * // => '105'\n     */\n    function uniqueId(prefix) {\n      var id = ++idCounter;\n      return toString(prefix) + id;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * Adds two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.4.0\n     * @category Math\n     * @param {number} augend The first number in an addition.\n     * @param {number} addend The second number in an addition.\n     * @returns {number} Returns the total.\n     * @example\n     *\n     * _.add(6, 4);\n     * // => 10\n     */\n    var add = createMathOperation(function(augend, addend) {\n      return augend + addend;\n    }, 0);\n\n    /**\n     * Computes `number` rounded up to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round up.\n     * @param {number} [precision=0] The precision to round up to.\n     * @returns {number} Returns the rounded up number.\n     * @example\n     *\n     * _.ceil(4.006);\n     * // => 5\n     *\n     * _.ceil(6.004, 2);\n     * // => 6.01\n     *\n     * _.ceil(6040, -2);\n     * // => 6100\n     */\n    var ceil = createRound('ceil');\n\n    /**\n     * Divide two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {number} dividend The first number in a division.\n     * @param {number} divisor The second number in a division.\n     * @returns {number} Returns the quotient.\n     * @example\n     *\n     * _.divide(6, 4);\n     * // => 1.5\n     */\n    var divide = createMathOperation(function(dividend, divisor) {\n      return dividend / divisor;\n    }, 1);\n\n    /**\n     * Computes `number` rounded down to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round down.\n     * @param {number} [precision=0] The precision to round down to.\n     * @returns {number} Returns the rounded down number.\n     * @example\n     *\n     * _.floor(4.006);\n     * // => 4\n     *\n     * _.floor(0.046, 2);\n     * // => 0.04\n     *\n     * _.floor(4060, -2);\n     * // => 4000\n     */\n    var floor = createRound('floor');\n\n    /**\n     * Computes the maximum value of `array`. If `array` is empty or falsey,\n     * `undefined` is returned.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {*} Returns the maximum value.\n     * @example\n     *\n     * _.max([4, 2, 8, 6]);\n     * // => 8\n     *\n     * _.max([]);\n     * // => undefined\n     */\n    function max(array) {\n      return (array && array.length)\n        ? baseExtremum(array, identity, baseGt)\n        : undefined;\n    }\n\n    /**\n     * This method is like `_.max` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * the value is ranked. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {*} Returns the maximum value.\n     * @example\n     *\n     * var objects = [{ 'n': 1 }, { 'n': 2 }];\n     *\n     * _.maxBy(objects, function(o) { return o.n; });\n     * // => { 'n': 2 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.maxBy(objects, 'n');\n     * // => { 'n': 2 }\n     */\n    function maxBy(array, iteratee) {\n      return (array && array.length)\n        ? baseExtremum(array, getIteratee(iteratee, 2), baseGt)\n        : undefined;\n    }\n\n    /**\n     * Computes the mean of the values in `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {number} Returns the mean.\n     * @example\n     *\n     * _.mean([4, 2, 8, 6]);\n     * // => 5\n     */\n    function mean(array) {\n      return baseMean(array, identity);\n    }\n\n    /**\n     * This method is like `_.mean` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the value to be averaged.\n     * The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the mean.\n     * @example\n     *\n     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n     *\n     * _.meanBy(objects, function(o) { return o.n; });\n     * // => 5\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.meanBy(objects, 'n');\n     * // => 5\n     */\n    function meanBy(array, iteratee) {\n      return baseMean(array, getIteratee(iteratee, 2));\n    }\n\n    /**\n     * Computes the minimum value of `array`. If `array` is empty or falsey,\n     * `undefined` is returned.\n     *\n     * @static\n     * @since 0.1.0\n     * @memberOf _\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {*} Returns the minimum value.\n     * @example\n     *\n     * _.min([4, 2, 8, 6]);\n     * // => 2\n     *\n     * _.min([]);\n     * // => undefined\n     */\n    function min(array) {\n      return (array && array.length)\n        ? baseExtremum(array, identity, baseLt)\n        : undefined;\n    }\n\n    /**\n     * This method is like `_.min` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the criterion by which\n     * the value is ranked. The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {*} Returns the minimum value.\n     * @example\n     *\n     * var objects = [{ 'n': 1 }, { 'n': 2 }];\n     *\n     * _.minBy(objects, function(o) { return o.n; });\n     * // => { 'n': 1 }\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.minBy(objects, 'n');\n     * // => { 'n': 1 }\n     */\n    function minBy(array, iteratee) {\n      return (array && array.length)\n        ? baseExtremum(array, getIteratee(iteratee, 2), baseLt)\n        : undefined;\n    }\n\n    /**\n     * Multiply two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.7.0\n     * @category Math\n     * @param {number} multiplier The first number in a multiplication.\n     * @param {number} multiplicand The second number in a multiplication.\n     * @returns {number} Returns the product.\n     * @example\n     *\n     * _.multiply(6, 4);\n     * // => 24\n     */\n    var multiply = createMathOperation(function(multiplier, multiplicand) {\n      return multiplier * multiplicand;\n    }, 1);\n\n    /**\n     * Computes `number` rounded to `precision`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.10.0\n     * @category Math\n     * @param {number} number The number to round.\n     * @param {number} [precision=0] The precision to round to.\n     * @returns {number} Returns the rounded number.\n     * @example\n     *\n     * _.round(4.006);\n     * // => 4\n     *\n     * _.round(4.006, 2);\n     * // => 4.01\n     *\n     * _.round(4060, -2);\n     * // => 4100\n     */\n    var round = createRound('round');\n\n    /**\n     * Subtract two numbers.\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {number} minuend The first number in a subtraction.\n     * @param {number} subtrahend The second number in a subtraction.\n     * @returns {number} Returns the difference.\n     * @example\n     *\n     * _.subtract(6, 4);\n     * // => 2\n     */\n    var subtract = createMathOperation(function(minuend, subtrahend) {\n      return minuend - subtrahend;\n    }, 0);\n\n    /**\n     * Computes the sum of the values in `array`.\n     *\n     * @static\n     * @memberOf _\n     * @since 3.4.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @returns {number} Returns the sum.\n     * @example\n     *\n     * _.sum([4, 2, 8, 6]);\n     * // => 20\n     */\n    function sum(array) {\n      return (array && array.length)\n        ? baseSum(array, identity)\n        : 0;\n    }\n\n    /**\n     * This method is like `_.sum` except that it accepts `iteratee` which is\n     * invoked for each element in `array` to generate the value to be summed.\n     * The iteratee is invoked with one argument: (value).\n     *\n     * @static\n     * @memberOf _\n     * @since 4.0.0\n     * @category Math\n     * @param {Array} array The array to iterate over.\n     * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n     * @returns {number} Returns the sum.\n     * @example\n     *\n     * var objects = [{ 'n': 4 }, { 'n': 2 }, { 'n': 8 }, { 'n': 6 }];\n     *\n     * _.sumBy(objects, function(o) { return o.n; });\n     * // => 20\n     *\n     * // The `_.property` iteratee shorthand.\n     * _.sumBy(objects, 'n');\n     * // => 20\n     */\n    function sumBy(array, iteratee) {\n      return (array && array.length)\n        ? baseSum(array, getIteratee(iteratee, 2))\n        : 0;\n    }\n\n    /*------------------------------------------------------------------------*/\n\n    // Add methods that return wrapped values in chain sequences.\n    lodash.after = after;\n    lodash.ary = ary;\n    lodash.assign = assign;\n    lodash.assignIn = assignIn;\n    lodash.assignInWith = assignInWith;\n    lodash.assignWith = assignWith;\n    lodash.at = at;\n    lodash.before = before;\n    lodash.bind = bind;\n    lodash.bindAll = bindAll;\n    lodash.bindKey = bindKey;\n    lodash.castArray = castArray;\n    lodash.chain = chain;\n    lodash.chunk = chunk;\n    lodash.compact = compact;\n    lodash.concat = concat;\n    lodash.cond = cond;\n    lodash.conforms = conforms;\n    lodash.constant = constant;\n    lodash.countBy = countBy;\n    lodash.create = create;\n    lodash.curry = curry;\n    lodash.curryRight = curryRight;\n    lodash.debounce = debounce;\n    lodash.defaults = defaults;\n    lodash.defaultsDeep = defaultsDeep;\n    lodash.defer = defer;\n    lodash.delay = delay;\n    lodash.difference = difference;\n    lodash.differenceBy = differenceBy;\n    lodash.differenceWith = differenceWith;\n    lodash.drop = drop;\n    lodash.dropRight = dropRight;\n    lodash.dropRightWhile = dropRightWhile;\n    lodash.dropWhile = dropWhile;\n    lodash.fill = fill;\n    lodash.filter = filter;\n    lodash.flatMap = flatMap;\n    lodash.flatMapDeep = flatMapDeep;\n    lodash.flatMapDepth = flatMapDepth;\n    lodash.flatten = flatten;\n    lodash.flattenDeep = flattenDeep;\n    lodash.flattenDepth = flattenDepth;\n    lodash.flip = flip;\n    lodash.flow = flow;\n    lodash.flowRight = flowRight;\n    lodash.fromPairs = fromPairs;\n    lodash.functions = functions;\n    lodash.functionsIn = functionsIn;\n    lodash.groupBy = groupBy;\n    lodash.initial = initial;\n    lodash.intersection = intersection;\n    lodash.intersectionBy = intersectionBy;\n    lodash.intersectionWith = intersectionWith;\n    lodash.invert = invert;\n    lodash.invertBy = invertBy;\n    lodash.invokeMap = invokeMap;\n    lodash.iteratee = iteratee;\n    lodash.keyBy = keyBy;\n    lodash.keys = keys;\n    lodash.keysIn = keysIn;\n    lodash.map = map;\n    lodash.mapKeys = mapKeys;\n    lodash.mapValues = mapValues;\n    lodash.matches = matches;\n    lodash.matchesProperty = matchesProperty;\n    lodash.memoize = memoize;\n    lodash.merge = merge;\n    lodash.mergeWith = mergeWith;\n    lodash.method = method;\n    lodash.methodOf = methodOf;\n    lodash.mixin = mixin;\n    lodash.negate = negate;\n    lodash.nthArg = nthArg;\n    lodash.omit = omit;\n    lodash.omitBy = omitBy;\n    lodash.once = once;\n    lodash.orderBy = orderBy;\n    lodash.over = over;\n    lodash.overArgs = overArgs;\n    lodash.overEvery = overEvery;\n    lodash.overSome = overSome;\n    lodash.partial = partial;\n    lodash.partialRight = partialRight;\n    lodash.partition = partition;\n    lodash.pick = pick;\n    lodash.pickBy = pickBy;\n    lodash.property = property;\n    lodash.propertyOf = propertyOf;\n    lodash.pull = pull;\n    lodash.pullAll = pullAll;\n    lodash.pullAllBy = pullAllBy;\n    lodash.pullAllWith = pullAllWith;\n    lodash.pullAt = pullAt;\n    lodash.range = range;\n    lodash.rangeRight = rangeRight;\n    lodash.rearg = rearg;\n    lodash.reject = reject;\n    lodash.remove = remove;\n    lodash.rest = rest;\n    lodash.reverse = reverse;\n    lodash.sampleSize = sampleSize;\n    lodash.set = set;\n    lodash.setWith = setWith;\n    lodash.shuffle = shuffle;\n    lodash.slice = slice;\n    lodash.sortBy = sortBy;\n    lodash.sortedUniq = sortedUniq;\n    lodash.sortedUniqBy = sortedUniqBy;\n    lodash.split = split;\n    lodash.spread = spread;\n    lodash.tail = tail;\n    lodash.take = take;\n    lodash.takeRight = takeRight;\n    lodash.takeRightWhile = takeRightWhile;\n    lodash.takeWhile = takeWhile;\n    lodash.tap = tap;\n    lodash.throttle = throttle;\n    lodash.thru = thru;\n    lodash.toArray = toArray;\n    lodash.toPairs = toPairs;\n    lodash.toPairsIn = toPairsIn;\n    lodash.toPath = toPath;\n    lodash.toPlainObject = toPlainObject;\n    lodash.transform = transform;\n    lodash.unary = unary;\n    lodash.union = union;\n    lodash.unionBy = unionBy;\n    lodash.unionWith = unionWith;\n    lodash.uniq = uniq;\n    lodash.uniqBy = uniqBy;\n    lodash.uniqWith = uniqWith;\n    lodash.unset = unset;\n    lodash.unzip = unzip;\n    lodash.unzipWith = unzipWith;\n    lodash.update = update;\n    lodash.updateWith = updateWith;\n    lodash.values = values;\n    lodash.valuesIn = valuesIn;\n    lodash.without = without;\n    lodash.words = words;\n    lodash.wrap = wrap;\n    lodash.xor = xor;\n    lodash.xorBy = xorBy;\n    lodash.xorWith = xorWith;\n    lodash.zip = zip;\n    lodash.zipObject = zipObject;\n    lodash.zipObjectDeep = zipObjectDeep;\n    lodash.zipWith = zipWith;\n\n    // Add aliases.\n    lodash.entries = toPairs;\n    lodash.entriesIn = toPairsIn;\n    lodash.extend = assignIn;\n    lodash.extendWith = assignInWith;\n\n    // Add methods to `lodash.prototype`.\n    mixin(lodash, lodash);\n\n    /*------------------------------------------------------------------------*/\n\n    // Add methods that return unwrapped values in chain sequences.\n    lodash.add = add;\n    lodash.attempt = attempt;\n    lodash.camelCase = camelCase;\n    lodash.capitalize = capitalize;\n    lodash.ceil = ceil;\n    lodash.clamp = clamp;\n    lodash.clone = clone;\n    lodash.cloneDeep = cloneDeep;\n    lodash.cloneDeepWith = cloneDeepWith;\n    lodash.cloneWith = cloneWith;\n    lodash.conformsTo = conformsTo;\n    lodash.deburr = deburr;\n    lodash.defaultTo = defaultTo;\n    lodash.divide = divide;\n    lodash.endsWith = endsWith;\n    lodash.eq = eq;\n    lodash.escape = escape;\n    lodash.escapeRegExp = escapeRegExp;\n    lodash.every = every;\n    lodash.find = find;\n    lodash.findIndex = findIndex;\n    lodash.findKey = findKey;\n    lodash.findLast = findLast;\n    lodash.findLastIndex = findLastIndex;\n    lodash.findLastKey = findLastKey;\n    lodash.floor = floor;\n    lodash.forEach = forEach;\n    lodash.forEachRight = forEachRight;\n    lodash.forIn = forIn;\n    lodash.forInRight = forInRight;\n    lodash.forOwn = forOwn;\n    lodash.forOwnRight = forOwnRight;\n    lodash.get = get;\n    lodash.gt = gt;\n    lodash.gte = gte;\n    lodash.has = has;\n    lodash.hasIn = hasIn;\n    lodash.head = head;\n    lodash.identity = identity;\n    lodash.includes = includes;\n    lodash.indexOf = indexOf;\n    lodash.inRange = inRange;\n    lodash.invoke = invoke;\n    lodash.isArguments = isArguments;\n    lodash.isArray = isArray;\n    lodash.isArrayBuffer = isArrayBuffer;\n    lodash.isArrayLike = isArrayLike;\n    lodash.isArrayLikeObject = isArrayLikeObject;\n    lodash.isBoolean = isBoolean;\n    lodash.isBuffer = isBuffer;\n    lodash.isDate = isDate;\n    lodash.isElement = isElement;\n    lodash.isEmpty = isEmpty;\n    lodash.isEqual = isEqual;\n    lodash.isEqualWith = isEqualWith;\n    lodash.isError = isError;\n    lodash.isFinite = isFinite;\n    lodash.isFunction = isFunction;\n    lodash.isInteger = isInteger;\n    lodash.isLength = isLength;\n    lodash.isMap = isMap;\n    lodash.isMatch = isMatch;\n    lodash.isMatchWith = isMatchWith;\n    lodash.isNaN = isNaN;\n    lodash.isNative = isNative;\n    lodash.isNil = isNil;\n    lodash.isNull = isNull;\n    lodash.isNumber = isNumber;\n    lodash.isObject = isObject;\n    lodash.isObjectLike = isObjectLike;\n    lodash.isPlainObject = isPlainObject;\n    lodash.isRegExp = isRegExp;\n    lodash.isSafeInteger = isSafeInteger;\n    lodash.isSet = isSet;\n    lodash.isString = isString;\n    lodash.isSymbol = isSymbol;\n    lodash.isTypedArray = isTypedArray;\n    lodash.isUndefined = isUndefined;\n    lodash.isWeakMap = isWeakMap;\n    lodash.isWeakSet = isWeakSet;\n    lodash.join = join;\n    lodash.kebabCase = kebabCase;\n    lodash.last = last;\n    lodash.lastIndexOf = lastIndexOf;\n    lodash.lowerCase = lowerCase;\n    lodash.lowerFirst = lowerFirst;\n    lodash.lt = lt;\n    lodash.lte = lte;\n    lodash.max = max;\n    lodash.maxBy = maxBy;\n    lodash.mean = mean;\n    lodash.meanBy = meanBy;\n    lodash.min = min;\n    lodash.minBy = minBy;\n    lodash.stubArray = stubArray;\n    lodash.stubFalse = stubFalse;\n    lodash.stubObject = stubObject;\n    lodash.stubString = stubString;\n    lodash.stubTrue = stubTrue;\n    lodash.multiply = multiply;\n    lodash.nth = nth;\n    lodash.noConflict = noConflict;\n    lodash.noop = noop;\n    lodash.now = now;\n    lodash.pad = pad;\n    lodash.padEnd = padEnd;\n    lodash.padStart = padStart;\n    lodash.parseInt = parseInt;\n    lodash.random = random;\n    lodash.reduce = reduce;\n    lodash.reduceRight = reduceRight;\n    lodash.repeat = repeat;\n    lodash.replace = replace;\n    lodash.result = result;\n    lodash.round = round;\n    lodash.runInContext = runInContext;\n    lodash.sample = sample;\n    lodash.size = size;\n    lodash.snakeCase = snakeCase;\n    lodash.some = some;\n    lodash.sortedIndex = sortedIndex;\n    lodash.sortedIndexBy = sortedIndexBy;\n    lodash.sortedIndexOf = sortedIndexOf;\n    lodash.sortedLastIndex = sortedLastIndex;\n    lodash.sortedLastIndexBy = sortedLastIndexBy;\n    lodash.sortedLastIndexOf = sortedLastIndexOf;\n    lodash.startCase = startCase;\n    lodash.startsWith = startsWith;\n    lodash.subtract = subtract;\n    lodash.sum = sum;\n    lodash.sumBy = sumBy;\n    lodash.template = template;\n    lodash.times = times;\n    lodash.toFinite = toFinite;\n    lodash.toInteger = toInteger;\n    lodash.toLength = toLength;\n    lodash.toLower = toLower;\n    lodash.toNumber = toNumber;\n    lodash.toSafeInteger = toSafeInteger;\n    lodash.toString = toString;\n    lodash.toUpper = toUpper;\n    lodash.trim = trim;\n    lodash.trimEnd = trimEnd;\n    lodash.trimStart = trimStart;\n    lodash.truncate = truncate;\n    lodash.unescape = unescape;\n    lodash.uniqueId = uniqueId;\n    lodash.upperCase = upperCase;\n    lodash.upperFirst = upperFirst;\n\n    // Add aliases.\n    lodash.each = forEach;\n    lodash.eachRight = forEachRight;\n    lodash.first = head;\n\n    mixin(lodash, (function() {\n      var source = {};\n      baseForOwn(lodash, function(func, methodName) {\n        if (!hasOwnProperty.call(lodash.prototype, methodName)) {\n          source[methodName] = func;\n        }\n      });\n      return source;\n    }()), { 'chain': false });\n\n    /*------------------------------------------------------------------------*/\n\n    /**\n     * The semantic version number.\n     *\n     * @static\n     * @memberOf _\n     * @type {string}\n     */\n    lodash.VERSION = VERSION;\n\n    // Assign default placeholders.\n    arrayEach(['bind', 'bindKey', 'curry', 'curryRight', 'partial', 'partialRight'], function(methodName) {\n      lodash[methodName].placeholder = lodash;\n    });\n\n    // Add `LazyWrapper` methods for `_.drop` and `_.take` variants.\n    arrayEach(['drop', 'take'], function(methodName, index) {\n      LazyWrapper.prototype[methodName] = function(n) {\n        n = n === undefined ? 1 : nativeMax(toInteger(n), 0);\n\n        var result = (this.__filtered__ && !index)\n          ? new LazyWrapper(this)\n          : this.clone();\n\n        if (result.__filtered__) {\n          result.__takeCount__ = nativeMin(n, result.__takeCount__);\n        } else {\n          result.__views__.push({\n            'size': nativeMin(n, MAX_ARRAY_LENGTH),\n            'type': methodName + (result.__dir__ < 0 ? 'Right' : '')\n          });\n        }\n        return result;\n      };\n\n      LazyWrapper.prototype[methodName + 'Right'] = function(n) {\n        return this.reverse()[methodName](n).reverse();\n      };\n    });\n\n    // Add `LazyWrapper` methods that accept an `iteratee` value.\n    arrayEach(['filter', 'map', 'takeWhile'], function(methodName, index) {\n      var type = index + 1,\n          isFilter = type == LAZY_FILTER_FLAG || type == LAZY_WHILE_FLAG;\n\n      LazyWrapper.prototype[methodName] = function(iteratee) {\n        var result = this.clone();\n        result.__iteratees__.push({\n          'iteratee': getIteratee(iteratee, 3),\n          'type': type\n        });\n        result.__filtered__ = result.__filtered__ || isFilter;\n        return result;\n      };\n    });\n\n    // Add `LazyWrapper` methods for `_.head` and `_.last`.\n    arrayEach(['head', 'last'], function(methodName, index) {\n      var takeName = 'take' + (index ? 'Right' : '');\n\n      LazyWrapper.prototype[methodName] = function() {\n        return this[takeName](1).value()[0];\n      };\n    });\n\n    // Add `LazyWrapper` methods for `_.initial` and `_.tail`.\n    arrayEach(['initial', 'tail'], function(methodName, index) {\n      var dropName = 'drop' + (index ? '' : 'Right');\n\n      LazyWrapper.prototype[methodName] = function() {\n        return this.__filtered__ ? new LazyWrapper(this) : this[dropName](1);\n      };\n    });\n\n    LazyWrapper.prototype.compact = function() {\n      return this.filter(identity);\n    };\n\n    LazyWrapper.prototype.find = function(predicate) {\n      return this.filter(predicate).head();\n    };\n\n    LazyWrapper.prototype.findLast = function(predicate) {\n      return this.reverse().find(predicate);\n    };\n\n    LazyWrapper.prototype.invokeMap = baseRest(function(path, args) {\n      if (typeof path == 'function') {\n        return new LazyWrapper(this);\n      }\n      return this.map(function(value) {\n        return baseInvoke(value, path, args);\n      });\n    });\n\n    LazyWrapper.prototype.reject = function(predicate) {\n      return this.filter(negate(getIteratee(predicate)));\n    };\n\n    LazyWrapper.prototype.slice = function(start, end) {\n      start = toInteger(start);\n\n      var result = this;\n      if (result.__filtered__ && (start > 0 || end < 0)) {\n        return new LazyWrapper(result);\n      }\n      if (start < 0) {\n        result = result.takeRight(-start);\n      } else if (start) {\n        result = result.drop(start);\n      }\n      if (end !== undefined) {\n        end = toInteger(end);\n        result = end < 0 ? result.dropRight(-end) : result.take(end - start);\n      }\n      return result;\n    };\n\n    LazyWrapper.prototype.takeRightWhile = function(predicate) {\n      return this.reverse().takeWhile(predicate).reverse();\n    };\n\n    LazyWrapper.prototype.toArray = function() {\n      return this.take(MAX_ARRAY_LENGTH);\n    };\n\n    // Add `LazyWrapper` methods to `lodash.prototype`.\n    baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n      var checkIteratee = /^(?:filter|find|map|reject)|While$/.test(methodName),\n          isTaker = /^(?:head|last)$/.test(methodName),\n          lodashFunc = lodash[isTaker ? ('take' + (methodName == 'last' ? 'Right' : '')) : methodName],\n          retUnwrapped = isTaker || /^find/.test(methodName);\n\n      if (!lodashFunc) {\n        return;\n      }\n      lodash.prototype[methodName] = function() {\n        var value = this.__wrapped__,\n            args = isTaker ? [1] : arguments,\n            isLazy = value instanceof LazyWrapper,\n            iteratee = args[0],\n            useLazy = isLazy || isArray(value);\n\n        var interceptor = function(value) {\n          var result = lodashFunc.apply(lodash, arrayPush([value], args));\n          return (isTaker && chainAll) ? result[0] : result;\n        };\n\n        if (useLazy && checkIteratee && typeof iteratee == 'function' && iteratee.length != 1) {\n          // Avoid lazy use if the iteratee has a \"length\" value other than `1`.\n          isLazy = useLazy = false;\n        }\n        var chainAll = this.__chain__,\n            isHybrid = !!this.__actions__.length,\n            isUnwrapped = retUnwrapped && !chainAll,\n            onlyLazy = isLazy && !isHybrid;\n\n        if (!retUnwrapped && useLazy) {\n          value = onlyLazy ? value : new LazyWrapper(this);\n          var result = func.apply(value, args);\n          result.__actions__.push({ 'func': thru, 'args': [interceptor], 'thisArg': undefined });\n          return new LodashWrapper(result, chainAll);\n        }\n        if (isUnwrapped && onlyLazy) {\n          return func.apply(this, args);\n        }\n        result = this.thru(interceptor);\n        return isUnwrapped ? (isTaker ? result.value()[0] : result.value()) : result;\n      };\n    });\n\n    // Add `Array` methods to `lodash.prototype`.\n    arrayEach(['pop', 'push', 'shift', 'sort', 'splice', 'unshift'], function(methodName) {\n      var func = arrayProto[methodName],\n          chainName = /^(?:push|sort|unshift)$/.test(methodName) ? 'tap' : 'thru',\n          retUnwrapped = /^(?:pop|shift)$/.test(methodName);\n\n      lodash.prototype[methodName] = function() {\n        var args = arguments;\n        if (retUnwrapped && !this.__chain__) {\n          var value = this.value();\n          return func.apply(isArray(value) ? value : [], args);\n        }\n        return this[chainName](function(value) {\n          return func.apply(isArray(value) ? value : [], args);\n        });\n      };\n    });\n\n    // Map minified method names to their real names.\n    baseForOwn(LazyWrapper.prototype, function(func, methodName) {\n      var lodashFunc = lodash[methodName];\n      if (lodashFunc) {\n        var key = lodashFunc.name + '';\n        if (!hasOwnProperty.call(realNames, key)) {\n          realNames[key] = [];\n        }\n        realNames[key].push({ 'name': methodName, 'func': lodashFunc });\n      }\n    });\n\n    realNames[createHybrid(undefined, WRAP_BIND_KEY_FLAG).name] = [{\n      'name': 'wrapper',\n      'func': undefined\n    }];\n\n    // Add methods to `LazyWrapper`.\n    LazyWrapper.prototype.clone = lazyClone;\n    LazyWrapper.prototype.reverse = lazyReverse;\n    LazyWrapper.prototype.value = lazyValue;\n\n    // Add chain sequence methods to the `lodash` wrapper.\n    lodash.prototype.at = wrapperAt;\n    lodash.prototype.chain = wrapperChain;\n    lodash.prototype.commit = wrapperCommit;\n    lodash.prototype.next = wrapperNext;\n    lodash.prototype.plant = wrapperPlant;\n    lodash.prototype.reverse = wrapperReverse;\n    lodash.prototype.toJSON = lodash.prototype.valueOf = lodash.prototype.value = wrapperValue;\n\n    // Add lazy aliases.\n    lodash.prototype.first = lodash.prototype.head;\n\n    if (symIterator) {\n      lodash.prototype[symIterator] = wrapperToIterator;\n    }\n    return lodash;\n  });\n\n  /*--------------------------------------------------------------------------*/\n\n  // Export lodash.\n  var _ = runInContext();\n\n  // Some AMD build optimizers, like r.js, check for condition patterns like:\n  if (typeof define == 'function' && typeof define.amd == 'object' && define.amd) {\n    // Expose Lodash on the global object to prevent errors when Lodash is\n    // loaded by a script tag in the presence of an AMD loader.\n    // See http://requirejs.org/docs/errors.html#mismatch for more details.\n    // Use `_.noConflict` to remove Lodash from the global object.\n    root._ = _;\n\n    // Define as an anonymous module so, through path mapping, it can be\n    // referenced as the \"underscore\" module.\n    define(function() {\n      return _;\n    });\n  }\n  // Check for `exports` after `define` in case a build optimizer adds it.\n  else if (freeModule) {\n    // Export for Node.js.\n    (freeModule.exports = _)._ = _;\n    // Export for CommonJS support.\n    freeExports._ = _;\n  }\n  else {\n    // Export to the global object.\n    root._ = _;\n  }\n}.call(this));\n", "\"use strict\";\n// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.0.3\n//   protoc               v3.21.12\n// source: google/protobuf/descriptor.proto\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GeneratedCodeInfo_Annotation = exports.GeneratedCodeInfo = exports.SourceCodeInfo_Location = exports.SourceCodeInfo = exports.UninterpretedOption_NamePart = exports.UninterpretedOption = exports.MethodOptions = exports.ServiceOptions = exports.EnumValueOptions = exports.EnumOptions = exports.OneofOptions = exports.FieldOptions = exports.MessageOptions = exports.FileOptions = exports.MethodDescriptorProto = exports.ServiceDescriptorProto = exports.EnumValueDescriptorProto = exports.EnumDescriptorProto_EnumReservedRange = exports.EnumDescriptorProto = exports.OneofDescriptorProto = exports.FieldDescriptorProto = exports.ExtensionRangeOptions = exports.DescriptorProto_ReservedRange = exports.DescriptorProto_ExtensionRange = exports.DescriptorProto = exports.FileDescriptorProto = exports.FileDescriptorSet = exports.methodOptions_IdempotencyLevelToJSON = exports.methodOptions_IdempotencyLevelFromJSON = exports.MethodOptions_IdempotencyLevel = exports.fieldOptions_JSTypeToJSON = exports.fieldOptions_JSTypeFromJSON = exports.FieldOptions_JSType = exports.fieldOptions_CTypeToJSON = exports.fieldOptions_CTypeFromJSON = exports.FieldOptions_CType = exports.fileOptions_OptimizeModeToJSON = exports.fileOptions_OptimizeModeFromJSON = exports.FileOptions_OptimizeMode = exports.fieldDescriptorProto_LabelToJSON = exports.fieldDescriptorProto_LabelFromJSON = exports.FieldDescriptorProto_Label = exports.fieldDescriptorProto_TypeToJSON = exports.fieldDescriptorProto_TypeFromJSON = exports.FieldDescriptorProto_Type = void 0;\n/* eslint-disable */\nconst wire_1 = require(\"@bufbuild/protobuf/wire\");\nvar FieldDescriptorProto_Type;\n(function (FieldDescriptorProto_Type) {\n    /**\n     * TYPE_DOUBLE - 0 is reserved for errors.\n     * Order is weird for historical reasons.\n     */\n    FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"TYPE_DOUBLE\"] = 1] = \"TYPE_DOUBLE\";\n    FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"TYPE_FLOAT\"] = 2] = \"TYPE_FLOAT\";\n    /**\n     * TYPE_INT64 - Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT64 if\n     * negative values are likely.\n     */\n    FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"TYPE_INT64\"] = 3] = \"TYPE_INT64\";\n    FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"TYPE_UINT64\"] = 4] = \"TYPE_UINT64\";\n    /**\n     * TYPE_INT32 - Not ZigZag encoded.  Negative numbers take 10 bytes.  Use TYPE_SINT32 if\n     * negative values are likely.\n     */\n    FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"TYPE_INT32\"] = 5] = \"TYPE_INT32\";\n    FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"TYPE_FIXED64\"] = 6] = \"TYPE_FIXED64\";\n    FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"TYPE_FIXED32\"] = 7] = \"TYPE_FIXED32\";\n    FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"TYPE_BOOL\"] = 8] = \"TYPE_BOOL\";\n    FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"TYPE_STRING\"] = 9] = \"TYPE_STRING\";\n    /**\n     * TYPE_GROUP - Tag-delimited aggregate.\n     * Group type is deprecated and not supported in proto3. However, Proto3\n     * implementations should still be able to parse the group wire format and\n     * treat group fields as unknown fields.\n     */\n    FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"TYPE_GROUP\"] = 10] = \"TYPE_GROUP\";\n    /** TYPE_MESSAGE - Length-delimited aggregate. */\n    FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"TYPE_MESSAGE\"] = 11] = \"TYPE_MESSAGE\";\n    /** TYPE_BYTES - New in version 2. */\n    FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"TYPE_BYTES\"] = 12] = \"TYPE_BYTES\";\n    FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"TYPE_UINT32\"] = 13] = \"TYPE_UINT32\";\n    FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"TYPE_ENUM\"] = 14] = \"TYPE_ENUM\";\n    FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"TYPE_SFIXED32\"] = 15] = \"TYPE_SFIXED32\";\n    FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"TYPE_SFIXED64\"] = 16] = \"TYPE_SFIXED64\";\n    /** TYPE_SINT32 - Uses ZigZag encoding. */\n    FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"TYPE_SINT32\"] = 17] = \"TYPE_SINT32\";\n    /** TYPE_SINT64 - Uses ZigZag encoding. */\n    FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"TYPE_SINT64\"] = 18] = \"TYPE_SINT64\";\n    FieldDescriptorProto_Type[FieldDescriptorProto_Type[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(FieldDescriptorProto_Type || (exports.FieldDescriptorProto_Type = FieldDescriptorProto_Type = {}));\nfunction fieldDescriptorProto_TypeFromJSON(object) {\n    switch (object) {\n        case 1:\n        case \"TYPE_DOUBLE\":\n            return FieldDescriptorProto_Type.TYPE_DOUBLE;\n        case 2:\n        case \"TYPE_FLOAT\":\n            return FieldDescriptorProto_Type.TYPE_FLOAT;\n        case 3:\n        case \"TYPE_INT64\":\n            return FieldDescriptorProto_Type.TYPE_INT64;\n        case 4:\n        case \"TYPE_UINT64\":\n            return FieldDescriptorProto_Type.TYPE_UINT64;\n        case 5:\n        case \"TYPE_INT32\":\n            return FieldDescriptorProto_Type.TYPE_INT32;\n        case 6:\n        case \"TYPE_FIXED64\":\n            return FieldDescriptorProto_Type.TYPE_FIXED64;\n        case 7:\n        case \"TYPE_FIXED32\":\n            return FieldDescriptorProto_Type.TYPE_FIXED32;\n        case 8:\n        case \"TYPE_BOOL\":\n            return FieldDescriptorProto_Type.TYPE_BOOL;\n        case 9:\n        case \"TYPE_STRING\":\n            return FieldDescriptorProto_Type.TYPE_STRING;\n        case 10:\n        case \"TYPE_GROUP\":\n            return FieldDescriptorProto_Type.TYPE_GROUP;\n        case 11:\n        case \"TYPE_MESSAGE\":\n            return FieldDescriptorProto_Type.TYPE_MESSAGE;\n        case 12:\n        case \"TYPE_BYTES\":\n            return FieldDescriptorProto_Type.TYPE_BYTES;\n        case 13:\n        case \"TYPE_UINT32\":\n            return FieldDescriptorProto_Type.TYPE_UINT32;\n        case 14:\n        case \"TYPE_ENUM\":\n            return FieldDescriptorProto_Type.TYPE_ENUM;\n        case 15:\n        case \"TYPE_SFIXED32\":\n            return FieldDescriptorProto_Type.TYPE_SFIXED32;\n        case 16:\n        case \"TYPE_SFIXED64\":\n            return FieldDescriptorProto_Type.TYPE_SFIXED64;\n        case 17:\n        case \"TYPE_SINT32\":\n            return FieldDescriptorProto_Type.TYPE_SINT32;\n        case 18:\n        case \"TYPE_SINT64\":\n            return FieldDescriptorProto_Type.TYPE_SINT64;\n        case -1:\n        case \"UNRECOGNIZED\":\n        default:\n            return FieldDescriptorProto_Type.UNRECOGNIZED;\n    }\n}\nexports.fieldDescriptorProto_TypeFromJSON = fieldDescriptorProto_TypeFromJSON;\nfunction fieldDescriptorProto_TypeToJSON(object) {\n    switch (object) {\n        case FieldDescriptorProto_Type.TYPE_DOUBLE:\n            return \"TYPE_DOUBLE\";\n        case FieldDescriptorProto_Type.TYPE_FLOAT:\n            return \"TYPE_FLOAT\";\n        case FieldDescriptorProto_Type.TYPE_INT64:\n            return \"TYPE_INT64\";\n        case FieldDescriptorProto_Type.TYPE_UINT64:\n            return \"TYPE_UINT64\";\n        case FieldDescriptorProto_Type.TYPE_INT32:\n            return \"TYPE_INT32\";\n        case FieldDescriptorProto_Type.TYPE_FIXED64:\n            return \"TYPE_FIXED64\";\n        case FieldDescriptorProto_Type.TYPE_FIXED32:\n            return \"TYPE_FIXED32\";\n        case FieldDescriptorProto_Type.TYPE_BOOL:\n            return \"TYPE_BOOL\";\n        case FieldDescriptorProto_Type.TYPE_STRING:\n            return \"TYPE_STRING\";\n        case FieldDescriptorProto_Type.TYPE_GROUP:\n            return \"TYPE_GROUP\";\n        case FieldDescriptorProto_Type.TYPE_MESSAGE:\n            return \"TYPE_MESSAGE\";\n        case FieldDescriptorProto_Type.TYPE_BYTES:\n            return \"TYPE_BYTES\";\n        case FieldDescriptorProto_Type.TYPE_UINT32:\n            return \"TYPE_UINT32\";\n        case FieldDescriptorProto_Type.TYPE_ENUM:\n            return \"TYPE_ENUM\";\n        case FieldDescriptorProto_Type.TYPE_SFIXED32:\n            return \"TYPE_SFIXED32\";\n        case FieldDescriptorProto_Type.TYPE_SFIXED64:\n            return \"TYPE_SFIXED64\";\n        case FieldDescriptorProto_Type.TYPE_SINT32:\n            return \"TYPE_SINT32\";\n        case FieldDescriptorProto_Type.TYPE_SINT64:\n            return \"TYPE_SINT64\";\n        case FieldDescriptorProto_Type.UNRECOGNIZED:\n        default:\n            return \"UNRECOGNIZED\";\n    }\n}\nexports.fieldDescriptorProto_TypeToJSON = fieldDescriptorProto_TypeToJSON;\nvar FieldDescriptorProto_Label;\n(function (FieldDescriptorProto_Label) {\n    /** LABEL_OPTIONAL - 0 is reserved for errors */\n    FieldDescriptorProto_Label[FieldDescriptorProto_Label[\"LABEL_OPTIONAL\"] = 1] = \"LABEL_OPTIONAL\";\n    FieldDescriptorProto_Label[FieldDescriptorProto_Label[\"LABEL_REQUIRED\"] = 2] = \"LABEL_REQUIRED\";\n    FieldDescriptorProto_Label[FieldDescriptorProto_Label[\"LABEL_REPEATED\"] = 3] = \"LABEL_REPEATED\";\n    FieldDescriptorProto_Label[FieldDescriptorProto_Label[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(FieldDescriptorProto_Label || (exports.FieldDescriptorProto_Label = FieldDescriptorProto_Label = {}));\nfunction fieldDescriptorProto_LabelFromJSON(object) {\n    switch (object) {\n        case 1:\n        case \"LABEL_OPTIONAL\":\n            return FieldDescriptorProto_Label.LABEL_OPTIONAL;\n        case 2:\n        case \"LABEL_REQUIRED\":\n            return FieldDescriptorProto_Label.LABEL_REQUIRED;\n        case 3:\n        case \"LABEL_REPEATED\":\n            return FieldDescriptorProto_Label.LABEL_REPEATED;\n        case -1:\n        case \"UNRECOGNIZED\":\n        default:\n            return FieldDescriptorProto_Label.UNRECOGNIZED;\n    }\n}\nexports.fieldDescriptorProto_LabelFromJSON = fieldDescriptorProto_LabelFromJSON;\nfunction fieldDescriptorProto_LabelToJSON(object) {\n    switch (object) {\n        case FieldDescriptorProto_Label.LABEL_OPTIONAL:\n            return \"LABEL_OPTIONAL\";\n        case FieldDescriptorProto_Label.LABEL_REQUIRED:\n            return \"LABEL_REQUIRED\";\n        case FieldDescriptorProto_Label.LABEL_REPEATED:\n            return \"LABEL_REPEATED\";\n        case FieldDescriptorProto_Label.UNRECOGNIZED:\n        default:\n            return \"UNRECOGNIZED\";\n    }\n}\nexports.fieldDescriptorProto_LabelToJSON = fieldDescriptorProto_LabelToJSON;\n/** Generated classes can be optimized for speed or code size. */\nvar FileOptions_OptimizeMode;\n(function (FileOptions_OptimizeMode) {\n    /** SPEED - Generate complete code for parsing, serialization, */\n    FileOptions_OptimizeMode[FileOptions_OptimizeMode[\"SPEED\"] = 1] = \"SPEED\";\n    /** CODE_SIZE - etc. */\n    FileOptions_OptimizeMode[FileOptions_OptimizeMode[\"CODE_SIZE\"] = 2] = \"CODE_SIZE\";\n    /** LITE_RUNTIME - Generate code using MessageLite and the lite runtime. */\n    FileOptions_OptimizeMode[FileOptions_OptimizeMode[\"LITE_RUNTIME\"] = 3] = \"LITE_RUNTIME\";\n    FileOptions_OptimizeMode[FileOptions_OptimizeMode[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(FileOptions_OptimizeMode || (exports.FileOptions_OptimizeMode = FileOptions_OptimizeMode = {}));\nfunction fileOptions_OptimizeModeFromJSON(object) {\n    switch (object) {\n        case 1:\n        case \"SPEED\":\n            return FileOptions_OptimizeMode.SPEED;\n        case 2:\n        case \"CODE_SIZE\":\n            return FileOptions_OptimizeMode.CODE_SIZE;\n        case 3:\n        case \"LITE_RUNTIME\":\n            return FileOptions_OptimizeMode.LITE_RUNTIME;\n        case -1:\n        case \"UNRECOGNIZED\":\n        default:\n            return FileOptions_OptimizeMode.UNRECOGNIZED;\n    }\n}\nexports.fileOptions_OptimizeModeFromJSON = fileOptions_OptimizeModeFromJSON;\nfunction fileOptions_OptimizeModeToJSON(object) {\n    switch (object) {\n        case FileOptions_OptimizeMode.SPEED:\n            return \"SPEED\";\n        case FileOptions_OptimizeMode.CODE_SIZE:\n            return \"CODE_SIZE\";\n        case FileOptions_OptimizeMode.LITE_RUNTIME:\n            return \"LITE_RUNTIME\";\n        case FileOptions_OptimizeMode.UNRECOGNIZED:\n        default:\n            return \"UNRECOGNIZED\";\n    }\n}\nexports.fileOptions_OptimizeModeToJSON = fileOptions_OptimizeModeToJSON;\nvar FieldOptions_CType;\n(function (FieldOptions_CType) {\n    /** STRING - Default mode. */\n    FieldOptions_CType[FieldOptions_CType[\"STRING\"] = 0] = \"STRING\";\n    FieldOptions_CType[FieldOptions_CType[\"CORD\"] = 1] = \"CORD\";\n    FieldOptions_CType[FieldOptions_CType[\"STRING_PIECE\"] = 2] = \"STRING_PIECE\";\n    FieldOptions_CType[FieldOptions_CType[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(FieldOptions_CType || (exports.FieldOptions_CType = FieldOptions_CType = {}));\nfunction fieldOptions_CTypeFromJSON(object) {\n    switch (object) {\n        case 0:\n        case \"STRING\":\n            return FieldOptions_CType.STRING;\n        case 1:\n        case \"CORD\":\n            return FieldOptions_CType.CORD;\n        case 2:\n        case \"STRING_PIECE\":\n            return FieldOptions_CType.STRING_PIECE;\n        case -1:\n        case \"UNRECOGNIZED\":\n        default:\n            return FieldOptions_CType.UNRECOGNIZED;\n    }\n}\nexports.fieldOptions_CTypeFromJSON = fieldOptions_CTypeFromJSON;\nfunction fieldOptions_CTypeToJSON(object) {\n    switch (object) {\n        case FieldOptions_CType.STRING:\n            return \"STRING\";\n        case FieldOptions_CType.CORD:\n            return \"CORD\";\n        case FieldOptions_CType.STRING_PIECE:\n            return \"STRING_PIECE\";\n        case FieldOptions_CType.UNRECOGNIZED:\n        default:\n            return \"UNRECOGNIZED\";\n    }\n}\nexports.fieldOptions_CTypeToJSON = fieldOptions_CTypeToJSON;\nvar FieldOptions_JSType;\n(function (FieldOptions_JSType) {\n    /** JS_NORMAL - Use the default type. */\n    FieldOptions_JSType[FieldOptions_JSType[\"JS_NORMAL\"] = 0] = \"JS_NORMAL\";\n    /** JS_STRING - Use JavaScript strings. */\n    FieldOptions_JSType[FieldOptions_JSType[\"JS_STRING\"] = 1] = \"JS_STRING\";\n    /** JS_NUMBER - Use JavaScript numbers. */\n    FieldOptions_JSType[FieldOptions_JSType[\"JS_NUMBER\"] = 2] = \"JS_NUMBER\";\n    FieldOptions_JSType[FieldOptions_JSType[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(FieldOptions_JSType || (exports.FieldOptions_JSType = FieldOptions_JSType = {}));\nfunction fieldOptions_JSTypeFromJSON(object) {\n    switch (object) {\n        case 0:\n        case \"JS_NORMAL\":\n            return FieldOptions_JSType.JS_NORMAL;\n        case 1:\n        case \"JS_STRING\":\n            return FieldOptions_JSType.JS_STRING;\n        case 2:\n        case \"JS_NUMBER\":\n            return FieldOptions_JSType.JS_NUMBER;\n        case -1:\n        case \"UNRECOGNIZED\":\n        default:\n            return FieldOptions_JSType.UNRECOGNIZED;\n    }\n}\nexports.fieldOptions_JSTypeFromJSON = fieldOptions_JSTypeFromJSON;\nfunction fieldOptions_JSTypeToJSON(object) {\n    switch (object) {\n        case FieldOptions_JSType.JS_NORMAL:\n            return \"JS_NORMAL\";\n        case FieldOptions_JSType.JS_STRING:\n            return \"JS_STRING\";\n        case FieldOptions_JSType.JS_NUMBER:\n            return \"JS_NUMBER\";\n        case FieldOptions_JSType.UNRECOGNIZED:\n        default:\n            return \"UNRECOGNIZED\";\n    }\n}\nexports.fieldOptions_JSTypeToJSON = fieldOptions_JSTypeToJSON;\n/**\n * Is this method side-effect-free (or safe in HTTP parlance), or idempotent,\n * or neither? HTTP based RPC implementation may choose GET verb for safe\n * methods, and PUT verb for idempotent methods instead of the default POST.\n */\nvar MethodOptions_IdempotencyLevel;\n(function (MethodOptions_IdempotencyLevel) {\n    MethodOptions_IdempotencyLevel[MethodOptions_IdempotencyLevel[\"IDEMPOTENCY_UNKNOWN\"] = 0] = \"IDEMPOTENCY_UNKNOWN\";\n    /** NO_SIDE_EFFECTS - implies idempotent */\n    MethodOptions_IdempotencyLevel[MethodOptions_IdempotencyLevel[\"NO_SIDE_EFFECTS\"] = 1] = \"NO_SIDE_EFFECTS\";\n    /** IDEMPOTENT - idempotent, but may have side effects */\n    MethodOptions_IdempotencyLevel[MethodOptions_IdempotencyLevel[\"IDEMPOTENT\"] = 2] = \"IDEMPOTENT\";\n    MethodOptions_IdempotencyLevel[MethodOptions_IdempotencyLevel[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(MethodOptions_IdempotencyLevel || (exports.MethodOptions_IdempotencyLevel = MethodOptions_IdempotencyLevel = {}));\nfunction methodOptions_IdempotencyLevelFromJSON(object) {\n    switch (object) {\n        case 0:\n        case \"IDEMPOTENCY_UNKNOWN\":\n            return MethodOptions_IdempotencyLevel.IDEMPOTENCY_UNKNOWN;\n        case 1:\n        case \"NO_SIDE_EFFECTS\":\n            return MethodOptions_IdempotencyLevel.NO_SIDE_EFFECTS;\n        case 2:\n        case \"IDEMPOTENT\":\n            return MethodOptions_IdempotencyLevel.IDEMPOTENT;\n        case -1:\n        case \"UNRECOGNIZED\":\n        default:\n            return MethodOptions_IdempotencyLevel.UNRECOGNIZED;\n    }\n}\nexports.methodOptions_IdempotencyLevelFromJSON = methodOptions_IdempotencyLevelFromJSON;\nfunction methodOptions_IdempotencyLevelToJSON(object) {\n    switch (object) {\n        case MethodOptions_IdempotencyLevel.IDEMPOTENCY_UNKNOWN:\n            return \"IDEMPOTENCY_UNKNOWN\";\n        case MethodOptions_IdempotencyLevel.NO_SIDE_EFFECTS:\n            return \"NO_SIDE_EFFECTS\";\n        case MethodOptions_IdempotencyLevel.IDEMPOTENT:\n            return \"IDEMPOTENT\";\n        case MethodOptions_IdempotencyLevel.UNRECOGNIZED:\n        default:\n            return \"UNRECOGNIZED\";\n    }\n}\nexports.methodOptions_IdempotencyLevelToJSON = methodOptions_IdempotencyLevelToJSON;\nfunction createBaseFileDescriptorSet() {\n    return { file: [] };\n}\nexports.FileDescriptorSet = {\n    encode(message, writer = new wire_1.BinaryWriter()) {\n        for (const v of message.file) {\n            exports.FileDescriptorProto.encode(v, writer.uint32(10).fork()).join();\n        }\n        if (message._unknownFields !== undefined) {\n            for (const [key, values] of Object.entries(message._unknownFields)) {\n                const tag = parseInt(key, 10);\n                for (const value of values) {\n                    writer.uint32(tag).raw(value);\n                }\n            }\n        }\n        return writer;\n    },\n    decode(input, length) {\n        const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);\n        let end = length === undefined ? reader.len : reader.pos + length;\n        const message = Object.create(createBaseFileDescriptorSet());\n        while (reader.pos < end) {\n            const tag = reader.uint32();\n            switch (tag >>> 3) {\n                case 1:\n                    if (tag !== 10) {\n                        break;\n                    }\n                    message.file.push(exports.FileDescriptorProto.decode(reader, reader.uint32()));\n                    continue;\n            }\n            if ((tag & 7) === 4 || tag === 0) {\n                break;\n            }\n            const buf = reader.skip(tag & 7);\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            const list = message._unknownFields[tag];\n            if (list === undefined) {\n                message._unknownFields[tag] = [buf];\n            }\n            else {\n                list.push(buf);\n            }\n        }\n        return message;\n    },\n    fromJSON(object) {\n        return {\n            file: globalThis.Array.isArray(object?.file) ? object.file.map((e) => exports.FileDescriptorProto.fromJSON(e)) : [],\n        };\n    },\n    toJSON(message) {\n        const obj = {};\n        if (message.file?.length) {\n            obj.file = message.file.map((e) => exports.FileDescriptorProto.toJSON(e));\n        }\n        return obj;\n    },\n    create(base) {\n        return exports.FileDescriptorSet.fromPartial(base ?? {});\n    },\n    fromPartial(object) {\n        const message = Object.create(createBaseFileDescriptorSet());\n        message.file = object.file?.map((e) => exports.FileDescriptorProto.fromPartial(e)) || [];\n        return message;\n    },\n};\nfunction createBaseFileDescriptorProto() {\n    return {\n        name: \"\",\n        package: \"\",\n        dependency: [],\n        publicDependency: [],\n        weakDependency: [],\n        messageType: [],\n        enumType: [],\n        service: [],\n        extension: [],\n        options: undefined,\n        sourceCodeInfo: undefined,\n        syntax: \"\",\n    };\n}\nexports.FileDescriptorProto = {\n    encode(message, writer = new wire_1.BinaryWriter()) {\n        if (message.name !== \"\") {\n            writer.uint32(10).string(message.name);\n        }\n        if (message.package !== \"\") {\n            writer.uint32(18).string(message.package);\n        }\n        for (const v of message.dependency) {\n            writer.uint32(26).string(v);\n        }\n        writer.uint32(82).fork();\n        for (const v of message.publicDependency) {\n            writer.int32(v);\n        }\n        writer.join();\n        writer.uint32(90).fork();\n        for (const v of message.weakDependency) {\n            writer.int32(v);\n        }\n        writer.join();\n        for (const v of message.messageType) {\n            exports.DescriptorProto.encode(v, writer.uint32(34).fork()).join();\n        }\n        for (const v of message.enumType) {\n            exports.EnumDescriptorProto.encode(v, writer.uint32(42).fork()).join();\n        }\n        for (const v of message.service) {\n            exports.ServiceDescriptorProto.encode(v, writer.uint32(50).fork()).join();\n        }\n        for (const v of message.extension) {\n            exports.FieldDescriptorProto.encode(v, writer.uint32(58).fork()).join();\n        }\n        if (message.options !== undefined) {\n            exports.FileOptions.encode(message.options, writer.uint32(66).fork()).join();\n        }\n        if (message.sourceCodeInfo !== undefined) {\n            exports.SourceCodeInfo.encode(message.sourceCodeInfo, writer.uint32(74).fork()).join();\n        }\n        if (message.syntax !== \"\") {\n            writer.uint32(98).string(message.syntax);\n        }\n        if (message._unknownFields !== undefined) {\n            for (const [key, values] of Object.entries(message._unknownFields)) {\n                const tag = parseInt(key, 10);\n                for (const value of values) {\n                    writer.uint32(tag).raw(value);\n                }\n            }\n        }\n        return writer;\n    },\n    decode(input, length) {\n        const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);\n        let end = length === undefined ? reader.len : reader.pos + length;\n        const message = Object.create(createBaseFileDescriptorProto());\n        while (reader.pos < end) {\n            const tag = reader.uint32();\n            switch (tag >>> 3) {\n                case 1:\n                    if (tag !== 10) {\n                        break;\n                    }\n                    message.name = reader.string();\n                    continue;\n                case 2:\n                    if (tag !== 18) {\n                        break;\n                    }\n                    message.package = reader.string();\n                    continue;\n                case 3:\n                    if (tag !== 26) {\n                        break;\n                    }\n                    message.dependency.push(reader.string());\n                    continue;\n                case 10:\n                    if (tag === 80) {\n                        message.publicDependency.push(reader.int32());\n                        continue;\n                    }\n                    if (tag === 82) {\n                        const end2 = reader.uint32() + reader.pos;\n                        while (reader.pos < end2) {\n                            message.publicDependency.push(reader.int32());\n                        }\n                        continue;\n                    }\n                    break;\n                case 11:\n                    if (tag === 88) {\n                        message.weakDependency.push(reader.int32());\n                        continue;\n                    }\n                    if (tag === 90) {\n                        const end2 = reader.uint32() + reader.pos;\n                        while (reader.pos < end2) {\n                            message.weakDependency.push(reader.int32());\n                        }\n                        continue;\n                    }\n                    break;\n                case 4:\n                    if (tag !== 34) {\n                        break;\n                    }\n                    message.messageType.push(exports.DescriptorProto.decode(reader, reader.uint32()));\n                    continue;\n                case 5:\n                    if (tag !== 42) {\n                        break;\n                    }\n                    message.enumType.push(exports.EnumDescriptorProto.decode(reader, reader.uint32()));\n                    continue;\n                case 6:\n                    if (tag !== 50) {\n                        break;\n                    }\n                    message.service.push(exports.ServiceDescriptorProto.decode(reader, reader.uint32()));\n                    continue;\n                case 7:\n                    if (tag !== 58) {\n                        break;\n                    }\n                    message.extension.push(exports.FieldDescriptorProto.decode(reader, reader.uint32()));\n                    continue;\n                case 8:\n                    if (tag !== 66) {\n                        break;\n                    }\n                    message.options = exports.FileOptions.decode(reader, reader.uint32());\n                    continue;\n                case 9:\n                    if (tag !== 74) {\n                        break;\n                    }\n                    message.sourceCodeInfo = exports.SourceCodeInfo.decode(reader, reader.uint32());\n                    continue;\n                case 12:\n                    if (tag !== 98) {\n                        break;\n                    }\n                    message.syntax = reader.string();\n                    continue;\n            }\n            if ((tag & 7) === 4 || tag === 0) {\n                break;\n            }\n            const buf = reader.skip(tag & 7);\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            const list = message._unknownFields[tag];\n            if (list === undefined) {\n                message._unknownFields[tag] = [buf];\n            }\n            else {\n                list.push(buf);\n            }\n        }\n        return message;\n    },\n    fromJSON(object) {\n        return {\n            name: isSet(object.name) ? globalThis.String(object.name) : \"\",\n            package: isSet(object.package) ? globalThis.String(object.package) : \"\",\n            dependency: globalThis.Array.isArray(object?.dependency)\n                ? object.dependency.map((e) => globalThis.String(e))\n                : [],\n            publicDependency: globalThis.Array.isArray(object?.publicDependency)\n                ? object.publicDependency.map((e) => globalThis.Number(e))\n                : [],\n            weakDependency: globalThis.Array.isArray(object?.weakDependency)\n                ? object.weakDependency.map((e) => globalThis.Number(e))\n                : [],\n            messageType: globalThis.Array.isArray(object?.messageType)\n                ? object.messageType.map((e) => exports.DescriptorProto.fromJSON(e))\n                : [],\n            enumType: globalThis.Array.isArray(object?.enumType)\n                ? object.enumType.map((e) => exports.EnumDescriptorProto.fromJSON(e))\n                : [],\n            service: globalThis.Array.isArray(object?.service)\n                ? object.service.map((e) => exports.ServiceDescriptorProto.fromJSON(e))\n                : [],\n            extension: globalThis.Array.isArray(object?.extension)\n                ? object.extension.map((e) => exports.FieldDescriptorProto.fromJSON(e))\n                : [],\n            options: isSet(object.options) ? exports.FileOptions.fromJSON(object.options) : undefined,\n            sourceCodeInfo: isSet(object.sourceCodeInfo) ? exports.SourceCodeInfo.fromJSON(object.sourceCodeInfo) : undefined,\n            syntax: isSet(object.syntax) ? globalThis.String(object.syntax) : \"\",\n        };\n    },\n    toJSON(message) {\n        const obj = {};\n        if (message.name !== \"\") {\n            obj.name = message.name;\n        }\n        if (message.package !== \"\") {\n            obj.package = message.package;\n        }\n        if (message.dependency?.length) {\n            obj.dependency = message.dependency;\n        }\n        if (message.publicDependency?.length) {\n            obj.publicDependency = message.publicDependency.map((e) => Math.round(e));\n        }\n        if (message.weakDependency?.length) {\n            obj.weakDependency = message.weakDependency.map((e) => Math.round(e));\n        }\n        if (message.messageType?.length) {\n            obj.messageType = message.messageType.map((e) => exports.DescriptorProto.toJSON(e));\n        }\n        if (message.enumType?.length) {\n            obj.enumType = message.enumType.map((e) => exports.EnumDescriptorProto.toJSON(e));\n        }\n        if (message.service?.length) {\n            obj.service = message.service.map((e) => exports.ServiceDescriptorProto.toJSON(e));\n        }\n        if (message.extension?.length) {\n            obj.extension = message.extension.map((e) => exports.FieldDescriptorProto.toJSON(e));\n        }\n        if (message.options !== undefined) {\n            obj.options = exports.FileOptions.toJSON(message.options);\n        }\n        if (message.sourceCodeInfo !== undefined) {\n            obj.sourceCodeInfo = exports.SourceCodeInfo.toJSON(message.sourceCodeInfo);\n        }\n        if (message.syntax !== \"\") {\n            obj.syntax = message.syntax;\n        }\n        return obj;\n    },\n    create(base) {\n        return exports.FileDescriptorProto.fromPartial(base ?? {});\n    },\n    fromPartial(object) {\n        const message = Object.create(createBaseFileDescriptorProto());\n        message.name = object.name ?? \"\";\n        message.package = object.package ?? \"\";\n        message.dependency = object.dependency?.map((e) => e) || [];\n        message.publicDependency = object.publicDependency?.map((e) => e) || [];\n        message.weakDependency = object.weakDependency?.map((e) => e) || [];\n        message.messageType = object.messageType?.map((e) => exports.DescriptorProto.fromPartial(e)) || [];\n        message.enumType = object.enumType?.map((e) => exports.EnumDescriptorProto.fromPartial(e)) || [];\n        message.service = object.service?.map((e) => exports.ServiceDescriptorProto.fromPartial(e)) || [];\n        message.extension = object.extension?.map((e) => exports.FieldDescriptorProto.fromPartial(e)) || [];\n        message.options = (object.options !== undefined && object.options !== null)\n            ? exports.FileOptions.fromPartial(object.options)\n            : undefined;\n        message.sourceCodeInfo = (object.sourceCodeInfo !== undefined && object.sourceCodeInfo !== null)\n            ? exports.SourceCodeInfo.fromPartial(object.sourceCodeInfo)\n            : undefined;\n        message.syntax = object.syntax ?? \"\";\n        return message;\n    },\n};\nfunction createBaseDescriptorProto() {\n    return {\n        name: \"\",\n        field: [],\n        extension: [],\n        nestedType: [],\n        enumType: [],\n        extensionRange: [],\n        oneofDecl: [],\n        options: undefined,\n        reservedRange: [],\n        reservedName: [],\n    };\n}\nexports.DescriptorProto = {\n    encode(message, writer = new wire_1.BinaryWriter()) {\n        if (message.name !== \"\") {\n            writer.uint32(10).string(message.name);\n        }\n        for (const v of message.field) {\n            exports.FieldDescriptorProto.encode(v, writer.uint32(18).fork()).join();\n        }\n        for (const v of message.extension) {\n            exports.FieldDescriptorProto.encode(v, writer.uint32(50).fork()).join();\n        }\n        for (const v of message.nestedType) {\n            exports.DescriptorProto.encode(v, writer.uint32(26).fork()).join();\n        }\n        for (const v of message.enumType) {\n            exports.EnumDescriptorProto.encode(v, writer.uint32(34).fork()).join();\n        }\n        for (const v of message.extensionRange) {\n            exports.DescriptorProto_ExtensionRange.encode(v, writer.uint32(42).fork()).join();\n        }\n        for (const v of message.oneofDecl) {\n            exports.OneofDescriptorProto.encode(v, writer.uint32(66).fork()).join();\n        }\n        if (message.options !== undefined) {\n            exports.MessageOptions.encode(message.options, writer.uint32(58).fork()).join();\n        }\n        for (const v of message.reservedRange) {\n            exports.DescriptorProto_ReservedRange.encode(v, writer.uint32(74).fork()).join();\n        }\n        for (const v of message.reservedName) {\n            writer.uint32(82).string(v);\n        }\n        if (message._unknownFields !== undefined) {\n            for (const [key, values] of Object.entries(message._unknownFields)) {\n                const tag = parseInt(key, 10);\n                for (const value of values) {\n                    writer.uint32(tag).raw(value);\n                }\n            }\n        }\n        return writer;\n    },\n    decode(input, length) {\n        const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);\n        let end = length === undefined ? reader.len : reader.pos + length;\n        const message = Object.create(createBaseDescriptorProto());\n        while (reader.pos < end) {\n            const tag = reader.uint32();\n            switch (tag >>> 3) {\n                case 1:\n                    if (tag !== 10) {\n                        break;\n                    }\n                    message.name = reader.string();\n                    continue;\n                case 2:\n                    if (tag !== 18) {\n                        break;\n                    }\n                    message.field.push(exports.FieldDescriptorProto.decode(reader, reader.uint32()));\n                    continue;\n                case 6:\n                    if (tag !== 50) {\n                        break;\n                    }\n                    message.extension.push(exports.FieldDescriptorProto.decode(reader, reader.uint32()));\n                    continue;\n                case 3:\n                    if (tag !== 26) {\n                        break;\n                    }\n                    message.nestedType.push(exports.DescriptorProto.decode(reader, reader.uint32()));\n                    continue;\n                case 4:\n                    if (tag !== 34) {\n                        break;\n                    }\n                    message.enumType.push(exports.EnumDescriptorProto.decode(reader, reader.uint32()));\n                    continue;\n                case 5:\n                    if (tag !== 42) {\n                        break;\n                    }\n                    message.extensionRange.push(exports.DescriptorProto_ExtensionRange.decode(reader, reader.uint32()));\n                    continue;\n                case 8:\n                    if (tag !== 66) {\n                        break;\n                    }\n                    message.oneofDecl.push(exports.OneofDescriptorProto.decode(reader, reader.uint32()));\n                    continue;\n                case 7:\n                    if (tag !== 58) {\n                        break;\n                    }\n                    message.options = exports.MessageOptions.decode(reader, reader.uint32());\n                    continue;\n                case 9:\n                    if (tag !== 74) {\n                        break;\n                    }\n                    message.reservedRange.push(exports.DescriptorProto_ReservedRange.decode(reader, reader.uint32()));\n                    continue;\n                case 10:\n                    if (tag !== 82) {\n                        break;\n                    }\n                    message.reservedName.push(reader.string());\n                    continue;\n            }\n            if ((tag & 7) === 4 || tag === 0) {\n                break;\n            }\n            const buf = reader.skip(tag & 7);\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            const list = message._unknownFields[tag];\n            if (list === undefined) {\n                message._unknownFields[tag] = [buf];\n            }\n            else {\n                list.push(buf);\n            }\n        }\n        return message;\n    },\n    fromJSON(object) {\n        return {\n            name: isSet(object.name) ? globalThis.String(object.name) : \"\",\n            field: globalThis.Array.isArray(object?.field)\n                ? object.field.map((e) => exports.FieldDescriptorProto.fromJSON(e))\n                : [],\n            extension: globalThis.Array.isArray(object?.extension)\n                ? object.extension.map((e) => exports.FieldDescriptorProto.fromJSON(e))\n                : [],\n            nestedType: globalThis.Array.isArray(object?.nestedType)\n                ? object.nestedType.map((e) => exports.DescriptorProto.fromJSON(e))\n                : [],\n            enumType: globalThis.Array.isArray(object?.enumType)\n                ? object.enumType.map((e) => exports.EnumDescriptorProto.fromJSON(e))\n                : [],\n            extensionRange: globalThis.Array.isArray(object?.extensionRange)\n                ? object.extensionRange.map((e) => exports.DescriptorProto_ExtensionRange.fromJSON(e))\n                : [],\n            oneofDecl: globalThis.Array.isArray(object?.oneofDecl)\n                ? object.oneofDecl.map((e) => exports.OneofDescriptorProto.fromJSON(e))\n                : [],\n            options: isSet(object.options) ? exports.MessageOptions.fromJSON(object.options) : undefined,\n            reservedRange: globalThis.Array.isArray(object?.reservedRange)\n                ? object.reservedRange.map((e) => exports.DescriptorProto_ReservedRange.fromJSON(e))\n                : [],\n            reservedName: globalThis.Array.isArray(object?.reservedName)\n                ? object.reservedName.map((e) => globalThis.String(e))\n                : [],\n        };\n    },\n    toJSON(message) {\n        const obj = {};\n        if (message.name !== \"\") {\n            obj.name = message.name;\n        }\n        if (message.field?.length) {\n            obj.field = message.field.map((e) => exports.FieldDescriptorProto.toJSON(e));\n        }\n        if (message.extension?.length) {\n            obj.extension = message.extension.map((e) => exports.FieldDescriptorProto.toJSON(e));\n        }\n        if (message.nestedType?.length) {\n            obj.nestedType = message.nestedType.map((e) => exports.DescriptorProto.toJSON(e));\n        }\n        if (message.enumType?.length) {\n            obj.enumType = message.enumType.map((e) => exports.EnumDescriptorProto.toJSON(e));\n        }\n        if (message.extensionRange?.length) {\n            obj.extensionRange = message.extensionRange.map((e) => exports.DescriptorProto_ExtensionRange.toJSON(e));\n        }\n        if (message.oneofDecl?.length) {\n            obj.oneofDecl = message.oneofDecl.map((e) => exports.OneofDescriptorProto.toJSON(e));\n        }\n        if (message.options !== undefined) {\n            obj.options = exports.MessageOptions.toJSON(message.options);\n        }\n        if (message.reservedRange?.length) {\n            obj.reservedRange = message.reservedRange.map((e) => exports.DescriptorProto_ReservedRange.toJSON(e));\n        }\n        if (message.reservedName?.length) {\n            obj.reservedName = message.reservedName;\n        }\n        return obj;\n    },\n    create(base) {\n        return exports.DescriptorProto.fromPartial(base ?? {});\n    },\n    fromPartial(object) {\n        const message = Object.create(createBaseDescriptorProto());\n        message.name = object.name ?? \"\";\n        message.field = object.field?.map((e) => exports.FieldDescriptorProto.fromPartial(e)) || [];\n        message.extension = object.extension?.map((e) => exports.FieldDescriptorProto.fromPartial(e)) || [];\n        message.nestedType = object.nestedType?.map((e) => exports.DescriptorProto.fromPartial(e)) || [];\n        message.enumType = object.enumType?.map((e) => exports.EnumDescriptorProto.fromPartial(e)) || [];\n        message.extensionRange = object.extensionRange?.map((e) => exports.DescriptorProto_ExtensionRange.fromPartial(e)) || [];\n        message.oneofDecl = object.oneofDecl?.map((e) => exports.OneofDescriptorProto.fromPartial(e)) || [];\n        message.options = (object.options !== undefined && object.options !== null)\n            ? exports.MessageOptions.fromPartial(object.options)\n            : undefined;\n        message.reservedRange = object.reservedRange?.map((e) => exports.DescriptorProto_ReservedRange.fromPartial(e)) || [];\n        message.reservedName = object.reservedName?.map((e) => e) || [];\n        return message;\n    },\n};\nfunction createBaseDescriptorProto_ExtensionRange() {\n    return { start: 0, end: 0, options: undefined };\n}\nexports.DescriptorProto_ExtensionRange = {\n    encode(message, writer = new wire_1.BinaryWriter()) {\n        if (message.start !== 0) {\n            writer.uint32(8).int32(message.start);\n        }\n        if (message.end !== 0) {\n            writer.uint32(16).int32(message.end);\n        }\n        if (message.options !== undefined) {\n            exports.ExtensionRangeOptions.encode(message.options, writer.uint32(26).fork()).join();\n        }\n        if (message._unknownFields !== undefined) {\n            for (const [key, values] of Object.entries(message._unknownFields)) {\n                const tag = parseInt(key, 10);\n                for (const value of values) {\n                    writer.uint32(tag).raw(value);\n                }\n            }\n        }\n        return writer;\n    },\n    decode(input, length) {\n        const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);\n        let end = length === undefined ? reader.len : reader.pos + length;\n        const message = Object.create(createBaseDescriptorProto_ExtensionRange());\n        while (reader.pos < end) {\n            const tag = reader.uint32();\n            switch (tag >>> 3) {\n                case 1:\n                    if (tag !== 8) {\n                        break;\n                    }\n                    message.start = reader.int32();\n                    continue;\n                case 2:\n                    if (tag !== 16) {\n                        break;\n                    }\n                    message.end = reader.int32();\n                    continue;\n                case 3:\n                    if (tag !== 26) {\n                        break;\n                    }\n                    message.options = exports.ExtensionRangeOptions.decode(reader, reader.uint32());\n                    continue;\n            }\n            if ((tag & 7) === 4 || tag === 0) {\n                break;\n            }\n            const buf = reader.skip(tag & 7);\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            const list = message._unknownFields[tag];\n            if (list === undefined) {\n                message._unknownFields[tag] = [buf];\n            }\n            else {\n                list.push(buf);\n            }\n        }\n        return message;\n    },\n    fromJSON(object) {\n        return {\n            start: isSet(object.start) ? globalThis.Number(object.start) : 0,\n            end: isSet(object.end) ? globalThis.Number(object.end) : 0,\n            options: isSet(object.options) ? exports.ExtensionRangeOptions.fromJSON(object.options) : undefined,\n        };\n    },\n    toJSON(message) {\n        const obj = {};\n        if (message.start !== 0) {\n            obj.start = Math.round(message.start);\n        }\n        if (message.end !== 0) {\n            obj.end = Math.round(message.end);\n        }\n        if (message.options !== undefined) {\n            obj.options = exports.ExtensionRangeOptions.toJSON(message.options);\n        }\n        return obj;\n    },\n    create(base) {\n        return exports.DescriptorProto_ExtensionRange.fromPartial(base ?? {});\n    },\n    fromPartial(object) {\n        const message = Object.create(createBaseDescriptorProto_ExtensionRange());\n        message.start = object.start ?? 0;\n        message.end = object.end ?? 0;\n        message.options = (object.options !== undefined && object.options !== null)\n            ? exports.ExtensionRangeOptions.fromPartial(object.options)\n            : undefined;\n        return message;\n    },\n};\nfunction createBaseDescriptorProto_ReservedRange() {\n    return { start: 0, end: 0 };\n}\nexports.DescriptorProto_ReservedRange = {\n    encode(message, writer = new wire_1.BinaryWriter()) {\n        if (message.start !== 0) {\n            writer.uint32(8).int32(message.start);\n        }\n        if (message.end !== 0) {\n            writer.uint32(16).int32(message.end);\n        }\n        if (message._unknownFields !== undefined) {\n            for (const [key, values] of Object.entries(message._unknownFields)) {\n                const tag = parseInt(key, 10);\n                for (const value of values) {\n                    writer.uint32(tag).raw(value);\n                }\n            }\n        }\n        return writer;\n    },\n    decode(input, length) {\n        const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);\n        let end = length === undefined ? reader.len : reader.pos + length;\n        const message = Object.create(createBaseDescriptorProto_ReservedRange());\n        while (reader.pos < end) {\n            const tag = reader.uint32();\n            switch (tag >>> 3) {\n                case 1:\n                    if (tag !== 8) {\n                        break;\n                    }\n                    message.start = reader.int32();\n                    continue;\n                case 2:\n                    if (tag !== 16) {\n                        break;\n                    }\n                    message.end = reader.int32();\n                    continue;\n            }\n            if ((tag & 7) === 4 || tag === 0) {\n                break;\n            }\n            const buf = reader.skip(tag & 7);\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            const list = message._unknownFields[tag];\n            if (list === undefined) {\n                message._unknownFields[tag] = [buf];\n            }\n            else {\n                list.push(buf);\n            }\n        }\n        return message;\n    },\n    fromJSON(object) {\n        return {\n            start: isSet(object.start) ? globalThis.Number(object.start) : 0,\n            end: isSet(object.end) ? globalThis.Number(object.end) : 0,\n        };\n    },\n    toJSON(message) {\n        const obj = {};\n        if (message.start !== 0) {\n            obj.start = Math.round(message.start);\n        }\n        if (message.end !== 0) {\n            obj.end = Math.round(message.end);\n        }\n        return obj;\n    },\n    create(base) {\n        return exports.DescriptorProto_ReservedRange.fromPartial(base ?? {});\n    },\n    fromPartial(object) {\n        const message = Object.create(createBaseDescriptorProto_ReservedRange());\n        message.start = object.start ?? 0;\n        message.end = object.end ?? 0;\n        return message;\n    },\n};\nfunction createBaseExtensionRangeOptions() {\n    return { uninterpretedOption: [] };\n}\nexports.ExtensionRangeOptions = {\n    encode(message, writer = new wire_1.BinaryWriter()) {\n        for (const v of message.uninterpretedOption) {\n            exports.UninterpretedOption.encode(v, writer.uint32(7994).fork()).join();\n        }\n        if (message._unknownFields !== undefined) {\n            for (const [key, values] of Object.entries(message._unknownFields)) {\n                const tag = parseInt(key, 10);\n                for (const value of values) {\n                    writer.uint32(tag).raw(value);\n                }\n            }\n        }\n        return writer;\n    },\n    setExtension(message, extension, value) {\n        const encoded = extension.encode(value);\n        if (message._unknownFields !== undefined) {\n            delete message._unknownFields[extension.tag];\n            if (extension.singularTag !== undefined) {\n                delete message._unknownFields[extension.singularTag];\n            }\n        }\n        if (encoded.length !== 0) {\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            message._unknownFields[extension.tag] = encoded;\n        }\n    },\n    decode(input, length) {\n        const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);\n        let end = length === undefined ? reader.len : reader.pos + length;\n        const message = Object.create(createBaseExtensionRangeOptions());\n        while (reader.pos < end) {\n            const tag = reader.uint32();\n            switch (tag >>> 3) {\n                case 999:\n                    if (tag !== 7994) {\n                        break;\n                    }\n                    message.uninterpretedOption.push(exports.UninterpretedOption.decode(reader, reader.uint32()));\n                    continue;\n            }\n            if ((tag & 7) === 4 || tag === 0) {\n                break;\n            }\n            const buf = reader.skip(tag & 7);\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            const list = message._unknownFields[tag];\n            if (list === undefined) {\n                message._unknownFields[tag] = [buf];\n            }\n            else {\n                list.push(buf);\n            }\n        }\n        return message;\n    },\n    getExtension(message, extension) {\n        let results = undefined;\n        if (message._unknownFields === undefined) {\n            return undefined;\n        }\n        let list = message._unknownFields[extension.tag];\n        if (list !== undefined) {\n            results = extension.decode(extension.tag, list);\n        }\n        if (extension.singularTag === undefined) {\n            return results;\n        }\n        list = message._unknownFields[extension.singularTag];\n        if (list !== undefined) {\n            const results2 = extension.decode(extension.singularTag, list);\n            if (results !== undefined && results.length !== 0) {\n                results = results.concat(results2);\n            }\n            else {\n                results = results2;\n            }\n        }\n        return results;\n    },\n    fromJSON(object) {\n        return {\n            uninterpretedOption: globalThis.Array.isArray(object?.uninterpretedOption)\n                ? object.uninterpretedOption.map((e) => exports.UninterpretedOption.fromJSON(e))\n                : [],\n        };\n    },\n    toJSON(message) {\n        const obj = {};\n        if (message.uninterpretedOption?.length) {\n            obj.uninterpretedOption = message.uninterpretedOption.map((e) => exports.UninterpretedOption.toJSON(e));\n        }\n        return obj;\n    },\n    create(base) {\n        return exports.ExtensionRangeOptions.fromPartial(base ?? {});\n    },\n    fromPartial(object) {\n        const message = Object.create(createBaseExtensionRangeOptions());\n        message.uninterpretedOption = object.uninterpretedOption?.map((e) => exports.UninterpretedOption.fromPartial(e)) || [];\n        return message;\n    },\n};\nfunction createBaseFieldDescriptorProto() {\n    return {\n        name: \"\",\n        number: 0,\n        label: 1,\n        type: 1,\n        typeName: \"\",\n        extendee: \"\",\n        defaultValue: \"\",\n        oneofIndex: 0,\n        jsonName: \"\",\n        options: undefined,\n        proto3Optional: false,\n    };\n}\nexports.FieldDescriptorProto = {\n    encode(message, writer = new wire_1.BinaryWriter()) {\n        if (message.name !== \"\") {\n            writer.uint32(10).string(message.name);\n        }\n        if (message.number !== 0) {\n            writer.uint32(24).int32(message.number);\n        }\n        if (message.label !== 1) {\n            writer.uint32(32).int32(message.label);\n        }\n        if (message.type !== 1) {\n            writer.uint32(40).int32(message.type);\n        }\n        if (message.typeName !== \"\") {\n            writer.uint32(50).string(message.typeName);\n        }\n        if (message.extendee !== \"\") {\n            writer.uint32(18).string(message.extendee);\n        }\n        if (message.defaultValue !== \"\") {\n            writer.uint32(58).string(message.defaultValue);\n        }\n        if (message.oneofIndex !== 0) {\n            writer.uint32(72).int32(message.oneofIndex);\n        }\n        if (message.jsonName !== \"\") {\n            writer.uint32(82).string(message.jsonName);\n        }\n        if (message.options !== undefined) {\n            exports.FieldOptions.encode(message.options, writer.uint32(66).fork()).join();\n        }\n        if (message.proto3Optional !== false) {\n            writer.uint32(136).bool(message.proto3Optional);\n        }\n        if (message._unknownFields !== undefined) {\n            for (const [key, values] of Object.entries(message._unknownFields)) {\n                const tag = parseInt(key, 10);\n                for (const value of values) {\n                    writer.uint32(tag).raw(value);\n                }\n            }\n        }\n        return writer;\n    },\n    decode(input, length) {\n        const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);\n        let end = length === undefined ? reader.len : reader.pos + length;\n        const message = Object.create(createBaseFieldDescriptorProto());\n        while (reader.pos < end) {\n            const tag = reader.uint32();\n            switch (tag >>> 3) {\n                case 1:\n                    if (tag !== 10) {\n                        break;\n                    }\n                    message.name = reader.string();\n                    continue;\n                case 3:\n                    if (tag !== 24) {\n                        break;\n                    }\n                    message.number = reader.int32();\n                    continue;\n                case 4:\n                    if (tag !== 32) {\n                        break;\n                    }\n                    message.label = reader.int32();\n                    continue;\n                case 5:\n                    if (tag !== 40) {\n                        break;\n                    }\n                    message.type = reader.int32();\n                    continue;\n                case 6:\n                    if (tag !== 50) {\n                        break;\n                    }\n                    message.typeName = reader.string();\n                    continue;\n                case 2:\n                    if (tag !== 18) {\n                        break;\n                    }\n                    message.extendee = reader.string();\n                    continue;\n                case 7:\n                    if (tag !== 58) {\n                        break;\n                    }\n                    message.defaultValue = reader.string();\n                    continue;\n                case 9:\n                    if (tag !== 72) {\n                        break;\n                    }\n                    message.oneofIndex = reader.int32();\n                    continue;\n                case 10:\n                    if (tag !== 82) {\n                        break;\n                    }\n                    message.jsonName = reader.string();\n                    continue;\n                case 8:\n                    if (tag !== 66) {\n                        break;\n                    }\n                    message.options = exports.FieldOptions.decode(reader, reader.uint32());\n                    continue;\n                case 17:\n                    if (tag !== 136) {\n                        break;\n                    }\n                    message.proto3Optional = reader.bool();\n                    continue;\n            }\n            if ((tag & 7) === 4 || tag === 0) {\n                break;\n            }\n            const buf = reader.skip(tag & 7);\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            const list = message._unknownFields[tag];\n            if (list === undefined) {\n                message._unknownFields[tag] = [buf];\n            }\n            else {\n                list.push(buf);\n            }\n        }\n        return message;\n    },\n    fromJSON(object) {\n        return {\n            name: isSet(object.name) ? globalThis.String(object.name) : \"\",\n            number: isSet(object.number) ? globalThis.Number(object.number) : 0,\n            label: isSet(object.label) ? fieldDescriptorProto_LabelFromJSON(object.label) : 1,\n            type: isSet(object.type) ? fieldDescriptorProto_TypeFromJSON(object.type) : 1,\n            typeName: isSet(object.typeName) ? globalThis.String(object.typeName) : \"\",\n            extendee: isSet(object.extendee) ? globalThis.String(object.extendee) : \"\",\n            defaultValue: isSet(object.defaultValue) ? globalThis.String(object.defaultValue) : \"\",\n            oneofIndex: isSet(object.oneofIndex) ? globalThis.Number(object.oneofIndex) : 0,\n            jsonName: isSet(object.jsonName) ? globalThis.String(object.jsonName) : \"\",\n            options: isSet(object.options) ? exports.FieldOptions.fromJSON(object.options) : undefined,\n            proto3Optional: isSet(object.proto3Optional) ? globalThis.Boolean(object.proto3Optional) : false,\n        };\n    },\n    toJSON(message) {\n        const obj = {};\n        if (message.name !== \"\") {\n            obj.name = message.name;\n        }\n        if (message.number !== 0) {\n            obj.number = Math.round(message.number);\n        }\n        if (message.label !== 1) {\n            obj.label = fieldDescriptorProto_LabelToJSON(message.label);\n        }\n        if (message.type !== 1) {\n            obj.type = fieldDescriptorProto_TypeToJSON(message.type);\n        }\n        if (message.typeName !== \"\") {\n            obj.typeName = message.typeName;\n        }\n        if (message.extendee !== \"\") {\n            obj.extendee = message.extendee;\n        }\n        if (message.defaultValue !== \"\") {\n            obj.defaultValue = message.defaultValue;\n        }\n        if (message.oneofIndex !== 0) {\n            obj.oneofIndex = Math.round(message.oneofIndex);\n        }\n        if (message.jsonName !== \"\") {\n            obj.jsonName = message.jsonName;\n        }\n        if (message.options !== undefined) {\n            obj.options = exports.FieldOptions.toJSON(message.options);\n        }\n        if (message.proto3Optional !== false) {\n            obj.proto3Optional = message.proto3Optional;\n        }\n        return obj;\n    },\n    create(base) {\n        return exports.FieldDescriptorProto.fromPartial(base ?? {});\n    },\n    fromPartial(object) {\n        const message = Object.create(createBaseFieldDescriptorProto());\n        message.name = object.name ?? \"\";\n        message.number = object.number ?? 0;\n        message.label = object.label ?? 1;\n        message.type = object.type ?? 1;\n        message.typeName = object.typeName ?? \"\";\n        message.extendee = object.extendee ?? \"\";\n        message.defaultValue = object.defaultValue ?? \"\";\n        message.oneofIndex = object.oneofIndex ?? 0;\n        message.jsonName = object.jsonName ?? \"\";\n        message.options = (object.options !== undefined && object.options !== null)\n            ? exports.FieldOptions.fromPartial(object.options)\n            : undefined;\n        message.proto3Optional = object.proto3Optional ?? false;\n        return message;\n    },\n};\nfunction createBaseOneofDescriptorProto() {\n    return { name: \"\", options: undefined };\n}\nexports.OneofDescriptorProto = {\n    encode(message, writer = new wire_1.BinaryWriter()) {\n        if (message.name !== \"\") {\n            writer.uint32(10).string(message.name);\n        }\n        if (message.options !== undefined) {\n            exports.OneofOptions.encode(message.options, writer.uint32(18).fork()).join();\n        }\n        if (message._unknownFields !== undefined) {\n            for (const [key, values] of Object.entries(message._unknownFields)) {\n                const tag = parseInt(key, 10);\n                for (const value of values) {\n                    writer.uint32(tag).raw(value);\n                }\n            }\n        }\n        return writer;\n    },\n    decode(input, length) {\n        const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);\n        let end = length === undefined ? reader.len : reader.pos + length;\n        const message = Object.create(createBaseOneofDescriptorProto());\n        while (reader.pos < end) {\n            const tag = reader.uint32();\n            switch (tag >>> 3) {\n                case 1:\n                    if (tag !== 10) {\n                        break;\n                    }\n                    message.name = reader.string();\n                    continue;\n                case 2:\n                    if (tag !== 18) {\n                        break;\n                    }\n                    message.options = exports.OneofOptions.decode(reader, reader.uint32());\n                    continue;\n            }\n            if ((tag & 7) === 4 || tag === 0) {\n                break;\n            }\n            const buf = reader.skip(tag & 7);\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            const list = message._unknownFields[tag];\n            if (list === undefined) {\n                message._unknownFields[tag] = [buf];\n            }\n            else {\n                list.push(buf);\n            }\n        }\n        return message;\n    },\n    fromJSON(object) {\n        return {\n            name: isSet(object.name) ? globalThis.String(object.name) : \"\",\n            options: isSet(object.options) ? exports.OneofOptions.fromJSON(object.options) : undefined,\n        };\n    },\n    toJSON(message) {\n        const obj = {};\n        if (message.name !== \"\") {\n            obj.name = message.name;\n        }\n        if (message.options !== undefined) {\n            obj.options = exports.OneofOptions.toJSON(message.options);\n        }\n        return obj;\n    },\n    create(base) {\n        return exports.OneofDescriptorProto.fromPartial(base ?? {});\n    },\n    fromPartial(object) {\n        const message = Object.create(createBaseOneofDescriptorProto());\n        message.name = object.name ?? \"\";\n        message.options = (object.options !== undefined && object.options !== null)\n            ? exports.OneofOptions.fromPartial(object.options)\n            : undefined;\n        return message;\n    },\n};\nfunction createBaseEnumDescriptorProto() {\n    return { name: \"\", value: [], options: undefined, reservedRange: [], reservedName: [] };\n}\nexports.EnumDescriptorProto = {\n    encode(message, writer = new wire_1.BinaryWriter()) {\n        if (message.name !== \"\") {\n            writer.uint32(10).string(message.name);\n        }\n        for (const v of message.value) {\n            exports.EnumValueDescriptorProto.encode(v, writer.uint32(18).fork()).join();\n        }\n        if (message.options !== undefined) {\n            exports.EnumOptions.encode(message.options, writer.uint32(26).fork()).join();\n        }\n        for (const v of message.reservedRange) {\n            exports.EnumDescriptorProto_EnumReservedRange.encode(v, writer.uint32(34).fork()).join();\n        }\n        for (const v of message.reservedName) {\n            writer.uint32(42).string(v);\n        }\n        if (message._unknownFields !== undefined) {\n            for (const [key, values] of Object.entries(message._unknownFields)) {\n                const tag = parseInt(key, 10);\n                for (const value of values) {\n                    writer.uint32(tag).raw(value);\n                }\n            }\n        }\n        return writer;\n    },\n    decode(input, length) {\n        const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);\n        let end = length === undefined ? reader.len : reader.pos + length;\n        const message = Object.create(createBaseEnumDescriptorProto());\n        while (reader.pos < end) {\n            const tag = reader.uint32();\n            switch (tag >>> 3) {\n                case 1:\n                    if (tag !== 10) {\n                        break;\n                    }\n                    message.name = reader.string();\n                    continue;\n                case 2:\n                    if (tag !== 18) {\n                        break;\n                    }\n                    message.value.push(exports.EnumValueDescriptorProto.decode(reader, reader.uint32()));\n                    continue;\n                case 3:\n                    if (tag !== 26) {\n                        break;\n                    }\n                    message.options = exports.EnumOptions.decode(reader, reader.uint32());\n                    continue;\n                case 4:\n                    if (tag !== 34) {\n                        break;\n                    }\n                    message.reservedRange.push(exports.EnumDescriptorProto_EnumReservedRange.decode(reader, reader.uint32()));\n                    continue;\n                case 5:\n                    if (tag !== 42) {\n                        break;\n                    }\n                    message.reservedName.push(reader.string());\n                    continue;\n            }\n            if ((tag & 7) === 4 || tag === 0) {\n                break;\n            }\n            const buf = reader.skip(tag & 7);\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            const list = message._unknownFields[tag];\n            if (list === undefined) {\n                message._unknownFields[tag] = [buf];\n            }\n            else {\n                list.push(buf);\n            }\n        }\n        return message;\n    },\n    fromJSON(object) {\n        return {\n            name: isSet(object.name) ? globalThis.String(object.name) : \"\",\n            value: globalThis.Array.isArray(object?.value)\n                ? object.value.map((e) => exports.EnumValueDescriptorProto.fromJSON(e))\n                : [],\n            options: isSet(object.options) ? exports.EnumOptions.fromJSON(object.options) : undefined,\n            reservedRange: globalThis.Array.isArray(object?.reservedRange)\n                ? object.reservedRange.map((e) => exports.EnumDescriptorProto_EnumReservedRange.fromJSON(e))\n                : [],\n            reservedName: globalThis.Array.isArray(object?.reservedName)\n                ? object.reservedName.map((e) => globalThis.String(e))\n                : [],\n        };\n    },\n    toJSON(message) {\n        const obj = {};\n        if (message.name !== \"\") {\n            obj.name = message.name;\n        }\n        if (message.value?.length) {\n            obj.value = message.value.map((e) => exports.EnumValueDescriptorProto.toJSON(e));\n        }\n        if (message.options !== undefined) {\n            obj.options = exports.EnumOptions.toJSON(message.options);\n        }\n        if (message.reservedRange?.length) {\n            obj.reservedRange = message.reservedRange.map((e) => exports.EnumDescriptorProto_EnumReservedRange.toJSON(e));\n        }\n        if (message.reservedName?.length) {\n            obj.reservedName = message.reservedName;\n        }\n        return obj;\n    },\n    create(base) {\n        return exports.EnumDescriptorProto.fromPartial(base ?? {});\n    },\n    fromPartial(object) {\n        const message = Object.create(createBaseEnumDescriptorProto());\n        message.name = object.name ?? \"\";\n        message.value = object.value?.map((e) => exports.EnumValueDescriptorProto.fromPartial(e)) || [];\n        message.options = (object.options !== undefined && object.options !== null)\n            ? exports.EnumOptions.fromPartial(object.options)\n            : undefined;\n        message.reservedRange = object.reservedRange?.map((e) => exports.EnumDescriptorProto_EnumReservedRange.fromPartial(e)) ||\n            [];\n        message.reservedName = object.reservedName?.map((e) => e) || [];\n        return message;\n    },\n};\nfunction createBaseEnumDescriptorProto_EnumReservedRange() {\n    return { start: 0, end: 0 };\n}\nexports.EnumDescriptorProto_EnumReservedRange = {\n    encode(message, writer = new wire_1.BinaryWriter()) {\n        if (message.start !== 0) {\n            writer.uint32(8).int32(message.start);\n        }\n        if (message.end !== 0) {\n            writer.uint32(16).int32(message.end);\n        }\n        if (message._unknownFields !== undefined) {\n            for (const [key, values] of Object.entries(message._unknownFields)) {\n                const tag = parseInt(key, 10);\n                for (const value of values) {\n                    writer.uint32(tag).raw(value);\n                }\n            }\n        }\n        return writer;\n    },\n    decode(input, length) {\n        const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);\n        let end = length === undefined ? reader.len : reader.pos + length;\n        const message = Object.create(createBaseEnumDescriptorProto_EnumReservedRange());\n        while (reader.pos < end) {\n            const tag = reader.uint32();\n            switch (tag >>> 3) {\n                case 1:\n                    if (tag !== 8) {\n                        break;\n                    }\n                    message.start = reader.int32();\n                    continue;\n                case 2:\n                    if (tag !== 16) {\n                        break;\n                    }\n                    message.end = reader.int32();\n                    continue;\n            }\n            if ((tag & 7) === 4 || tag === 0) {\n                break;\n            }\n            const buf = reader.skip(tag & 7);\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            const list = message._unknownFields[tag];\n            if (list === undefined) {\n                message._unknownFields[tag] = [buf];\n            }\n            else {\n                list.push(buf);\n            }\n        }\n        return message;\n    },\n    fromJSON(object) {\n        return {\n            start: isSet(object.start) ? globalThis.Number(object.start) : 0,\n            end: isSet(object.end) ? globalThis.Number(object.end) : 0,\n        };\n    },\n    toJSON(message) {\n        const obj = {};\n        if (message.start !== 0) {\n            obj.start = Math.round(message.start);\n        }\n        if (message.end !== 0) {\n            obj.end = Math.round(message.end);\n        }\n        return obj;\n    },\n    create(base) {\n        return exports.EnumDescriptorProto_EnumReservedRange.fromPartial(base ?? {});\n    },\n    fromPartial(object) {\n        const message = Object.create(createBaseEnumDescriptorProto_EnumReservedRange());\n        message.start = object.start ?? 0;\n        message.end = object.end ?? 0;\n        return message;\n    },\n};\nfunction createBaseEnumValueDescriptorProto() {\n    return { name: \"\", number: 0, options: undefined };\n}\nexports.EnumValueDescriptorProto = {\n    encode(message, writer = new wire_1.BinaryWriter()) {\n        if (message.name !== \"\") {\n            writer.uint32(10).string(message.name);\n        }\n        if (message.number !== 0) {\n            writer.uint32(16).int32(message.number);\n        }\n        if (message.options !== undefined) {\n            exports.EnumValueOptions.encode(message.options, writer.uint32(26).fork()).join();\n        }\n        if (message._unknownFields !== undefined) {\n            for (const [key, values] of Object.entries(message._unknownFields)) {\n                const tag = parseInt(key, 10);\n                for (const value of values) {\n                    writer.uint32(tag).raw(value);\n                }\n            }\n        }\n        return writer;\n    },\n    decode(input, length) {\n        const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);\n        let end = length === undefined ? reader.len : reader.pos + length;\n        const message = Object.create(createBaseEnumValueDescriptorProto());\n        while (reader.pos < end) {\n            const tag = reader.uint32();\n            switch (tag >>> 3) {\n                case 1:\n                    if (tag !== 10) {\n                        break;\n                    }\n                    message.name = reader.string();\n                    continue;\n                case 2:\n                    if (tag !== 16) {\n                        break;\n                    }\n                    message.number = reader.int32();\n                    continue;\n                case 3:\n                    if (tag !== 26) {\n                        break;\n                    }\n                    message.options = exports.EnumValueOptions.decode(reader, reader.uint32());\n                    continue;\n            }\n            if ((tag & 7) === 4 || tag === 0) {\n                break;\n            }\n            const buf = reader.skip(tag & 7);\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            const list = message._unknownFields[tag];\n            if (list === undefined) {\n                message._unknownFields[tag] = [buf];\n            }\n            else {\n                list.push(buf);\n            }\n        }\n        return message;\n    },\n    fromJSON(object) {\n        return {\n            name: isSet(object.name) ? globalThis.String(object.name) : \"\",\n            number: isSet(object.number) ? globalThis.Number(object.number) : 0,\n            options: isSet(object.options) ? exports.EnumValueOptions.fromJSON(object.options) : undefined,\n        };\n    },\n    toJSON(message) {\n        const obj = {};\n        if (message.name !== \"\") {\n            obj.name = message.name;\n        }\n        if (message.number !== 0) {\n            obj.number = Math.round(message.number);\n        }\n        if (message.options !== undefined) {\n            obj.options = exports.EnumValueOptions.toJSON(message.options);\n        }\n        return obj;\n    },\n    create(base) {\n        return exports.EnumValueDescriptorProto.fromPartial(base ?? {});\n    },\n    fromPartial(object) {\n        const message = Object.create(createBaseEnumValueDescriptorProto());\n        message.name = object.name ?? \"\";\n        message.number = object.number ?? 0;\n        message.options = (object.options !== undefined && object.options !== null)\n            ? exports.EnumValueOptions.fromPartial(object.options)\n            : undefined;\n        return message;\n    },\n};\nfunction createBaseServiceDescriptorProto() {\n    return { name: \"\", method: [], options: undefined };\n}\nexports.ServiceDescriptorProto = {\n    encode(message, writer = new wire_1.BinaryWriter()) {\n        if (message.name !== \"\") {\n            writer.uint32(10).string(message.name);\n        }\n        for (const v of message.method) {\n            exports.MethodDescriptorProto.encode(v, writer.uint32(18).fork()).join();\n        }\n        if (message.options !== undefined) {\n            exports.ServiceOptions.encode(message.options, writer.uint32(26).fork()).join();\n        }\n        if (message._unknownFields !== undefined) {\n            for (const [key, values] of Object.entries(message._unknownFields)) {\n                const tag = parseInt(key, 10);\n                for (const value of values) {\n                    writer.uint32(tag).raw(value);\n                }\n            }\n        }\n        return writer;\n    },\n    decode(input, length) {\n        const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);\n        let end = length === undefined ? reader.len : reader.pos + length;\n        const message = Object.create(createBaseServiceDescriptorProto());\n        while (reader.pos < end) {\n            const tag = reader.uint32();\n            switch (tag >>> 3) {\n                case 1:\n                    if (tag !== 10) {\n                        break;\n                    }\n                    message.name = reader.string();\n                    continue;\n                case 2:\n                    if (tag !== 18) {\n                        break;\n                    }\n                    message.method.push(exports.MethodDescriptorProto.decode(reader, reader.uint32()));\n                    continue;\n                case 3:\n                    if (tag !== 26) {\n                        break;\n                    }\n                    message.options = exports.ServiceOptions.decode(reader, reader.uint32());\n                    continue;\n            }\n            if ((tag & 7) === 4 || tag === 0) {\n                break;\n            }\n            const buf = reader.skip(tag & 7);\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            const list = message._unknownFields[tag];\n            if (list === undefined) {\n                message._unknownFields[tag] = [buf];\n            }\n            else {\n                list.push(buf);\n            }\n        }\n        return message;\n    },\n    fromJSON(object) {\n        return {\n            name: isSet(object.name) ? globalThis.String(object.name) : \"\",\n            method: globalThis.Array.isArray(object?.method)\n                ? object.method.map((e) => exports.MethodDescriptorProto.fromJSON(e))\n                : [],\n            options: isSet(object.options) ? exports.ServiceOptions.fromJSON(object.options) : undefined,\n        };\n    },\n    toJSON(message) {\n        const obj = {};\n        if (message.name !== \"\") {\n            obj.name = message.name;\n        }\n        if (message.method?.length) {\n            obj.method = message.method.map((e) => exports.MethodDescriptorProto.toJSON(e));\n        }\n        if (message.options !== undefined) {\n            obj.options = exports.ServiceOptions.toJSON(message.options);\n        }\n        return obj;\n    },\n    create(base) {\n        return exports.ServiceDescriptorProto.fromPartial(base ?? {});\n    },\n    fromPartial(object) {\n        const message = Object.create(createBaseServiceDescriptorProto());\n        message.name = object.name ?? \"\";\n        message.method = object.method?.map((e) => exports.MethodDescriptorProto.fromPartial(e)) || [];\n        message.options = (object.options !== undefined && object.options !== null)\n            ? exports.ServiceOptions.fromPartial(object.options)\n            : undefined;\n        return message;\n    },\n};\nfunction createBaseMethodDescriptorProto() {\n    return {\n        name: \"\",\n        inputType: \"\",\n        outputType: \"\",\n        options: undefined,\n        clientStreaming: false,\n        serverStreaming: false,\n    };\n}\nexports.MethodDescriptorProto = {\n    encode(message, writer = new wire_1.BinaryWriter()) {\n        if (message.name !== \"\") {\n            writer.uint32(10).string(message.name);\n        }\n        if (message.inputType !== \"\") {\n            writer.uint32(18).string(message.inputType);\n        }\n        if (message.outputType !== \"\") {\n            writer.uint32(26).string(message.outputType);\n        }\n        if (message.options !== undefined) {\n            exports.MethodOptions.encode(message.options, writer.uint32(34).fork()).join();\n        }\n        if (message.clientStreaming !== false) {\n            writer.uint32(40).bool(message.clientStreaming);\n        }\n        if (message.serverStreaming !== false) {\n            writer.uint32(48).bool(message.serverStreaming);\n        }\n        if (message._unknownFields !== undefined) {\n            for (const [key, values] of Object.entries(message._unknownFields)) {\n                const tag = parseInt(key, 10);\n                for (const value of values) {\n                    writer.uint32(tag).raw(value);\n                }\n            }\n        }\n        return writer;\n    },\n    decode(input, length) {\n        const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);\n        let end = length === undefined ? reader.len : reader.pos + length;\n        const message = Object.create(createBaseMethodDescriptorProto());\n        while (reader.pos < end) {\n            const tag = reader.uint32();\n            switch (tag >>> 3) {\n                case 1:\n                    if (tag !== 10) {\n                        break;\n                    }\n                    message.name = reader.string();\n                    continue;\n                case 2:\n                    if (tag !== 18) {\n                        break;\n                    }\n                    message.inputType = reader.string();\n                    continue;\n                case 3:\n                    if (tag !== 26) {\n                        break;\n                    }\n                    message.outputType = reader.string();\n                    continue;\n                case 4:\n                    if (tag !== 34) {\n                        break;\n                    }\n                    message.options = exports.MethodOptions.decode(reader, reader.uint32());\n                    continue;\n                case 5:\n                    if (tag !== 40) {\n                        break;\n                    }\n                    message.clientStreaming = reader.bool();\n                    continue;\n                case 6:\n                    if (tag !== 48) {\n                        break;\n                    }\n                    message.serverStreaming = reader.bool();\n                    continue;\n            }\n            if ((tag & 7) === 4 || tag === 0) {\n                break;\n            }\n            const buf = reader.skip(tag & 7);\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            const list = message._unknownFields[tag];\n            if (list === undefined) {\n                message._unknownFields[tag] = [buf];\n            }\n            else {\n                list.push(buf);\n            }\n        }\n        return message;\n    },\n    fromJSON(object) {\n        return {\n            name: isSet(object.name) ? globalThis.String(object.name) : \"\",\n            inputType: isSet(object.inputType) ? globalThis.String(object.inputType) : \"\",\n            outputType: isSet(object.outputType) ? globalThis.String(object.outputType) : \"\",\n            options: isSet(object.options) ? exports.MethodOptions.fromJSON(object.options) : undefined,\n            clientStreaming: isSet(object.clientStreaming) ? globalThis.Boolean(object.clientStreaming) : false,\n            serverStreaming: isSet(object.serverStreaming) ? globalThis.Boolean(object.serverStreaming) : false,\n        };\n    },\n    toJSON(message) {\n        const obj = {};\n        if (message.name !== \"\") {\n            obj.name = message.name;\n        }\n        if (message.inputType !== \"\") {\n            obj.inputType = message.inputType;\n        }\n        if (message.outputType !== \"\") {\n            obj.outputType = message.outputType;\n        }\n        if (message.options !== undefined) {\n            obj.options = exports.MethodOptions.toJSON(message.options);\n        }\n        if (message.clientStreaming !== false) {\n            obj.clientStreaming = message.clientStreaming;\n        }\n        if (message.serverStreaming !== false) {\n            obj.serverStreaming = message.serverStreaming;\n        }\n        return obj;\n    },\n    create(base) {\n        return exports.MethodDescriptorProto.fromPartial(base ?? {});\n    },\n    fromPartial(object) {\n        const message = Object.create(createBaseMethodDescriptorProto());\n        message.name = object.name ?? \"\";\n        message.inputType = object.inputType ?? \"\";\n        message.outputType = object.outputType ?? \"\";\n        message.options = (object.options !== undefined && object.options !== null)\n            ? exports.MethodOptions.fromPartial(object.options)\n            : undefined;\n        message.clientStreaming = object.clientStreaming ?? false;\n        message.serverStreaming = object.serverStreaming ?? false;\n        return message;\n    },\n};\nfunction createBaseFileOptions() {\n    return {\n        javaPackage: \"\",\n        javaOuterClassname: \"\",\n        javaMultipleFiles: false,\n        javaGenerateEqualsAndHash: false,\n        javaStringCheckUtf8: false,\n        optimizeFor: 1,\n        goPackage: \"\",\n        ccGenericServices: false,\n        javaGenericServices: false,\n        pyGenericServices: false,\n        phpGenericServices: false,\n        deprecated: false,\n        ccEnableArenas: true,\n        objcClassPrefix: \"\",\n        csharpNamespace: \"\",\n        swiftPrefix: \"\",\n        phpClassPrefix: \"\",\n        phpNamespace: \"\",\n        phpMetadataNamespace: \"\",\n        rubyPackage: \"\",\n        uninterpretedOption: [],\n    };\n}\nexports.FileOptions = {\n    encode(message, writer = new wire_1.BinaryWriter()) {\n        if (message.javaPackage !== \"\") {\n            writer.uint32(10).string(message.javaPackage);\n        }\n        if (message.javaOuterClassname !== \"\") {\n            writer.uint32(66).string(message.javaOuterClassname);\n        }\n        if (message.javaMultipleFiles !== false) {\n            writer.uint32(80).bool(message.javaMultipleFiles);\n        }\n        if (message.javaGenerateEqualsAndHash !== false) {\n            writer.uint32(160).bool(message.javaGenerateEqualsAndHash);\n        }\n        if (message.javaStringCheckUtf8 !== false) {\n            writer.uint32(216).bool(message.javaStringCheckUtf8);\n        }\n        if (message.optimizeFor !== 1) {\n            writer.uint32(72).int32(message.optimizeFor);\n        }\n        if (message.goPackage !== \"\") {\n            writer.uint32(90).string(message.goPackage);\n        }\n        if (message.ccGenericServices !== false) {\n            writer.uint32(128).bool(message.ccGenericServices);\n        }\n        if (message.javaGenericServices !== false) {\n            writer.uint32(136).bool(message.javaGenericServices);\n        }\n        if (message.pyGenericServices !== false) {\n            writer.uint32(144).bool(message.pyGenericServices);\n        }\n        if (message.phpGenericServices !== false) {\n            writer.uint32(336).bool(message.phpGenericServices);\n        }\n        if (message.deprecated !== false) {\n            writer.uint32(184).bool(message.deprecated);\n        }\n        if (message.ccEnableArenas !== true) {\n            writer.uint32(248).bool(message.ccEnableArenas);\n        }\n        if (message.objcClassPrefix !== \"\") {\n            writer.uint32(290).string(message.objcClassPrefix);\n        }\n        if (message.csharpNamespace !== \"\") {\n            writer.uint32(298).string(message.csharpNamespace);\n        }\n        if (message.swiftPrefix !== \"\") {\n            writer.uint32(314).string(message.swiftPrefix);\n        }\n        if (message.phpClassPrefix !== \"\") {\n            writer.uint32(322).string(message.phpClassPrefix);\n        }\n        if (message.phpNamespace !== \"\") {\n            writer.uint32(330).string(message.phpNamespace);\n        }\n        if (message.phpMetadataNamespace !== \"\") {\n            writer.uint32(354).string(message.phpMetadataNamespace);\n        }\n        if (message.rubyPackage !== \"\") {\n            writer.uint32(362).string(message.rubyPackage);\n        }\n        for (const v of message.uninterpretedOption) {\n            exports.UninterpretedOption.encode(v, writer.uint32(7994).fork()).join();\n        }\n        if (message._unknownFields !== undefined) {\n            for (const [key, values] of Object.entries(message._unknownFields)) {\n                const tag = parseInt(key, 10);\n                for (const value of values) {\n                    writer.uint32(tag).raw(value);\n                }\n            }\n        }\n        return writer;\n    },\n    setExtension(message, extension, value) {\n        const encoded = extension.encode(value);\n        if (message._unknownFields !== undefined) {\n            delete message._unknownFields[extension.tag];\n            if (extension.singularTag !== undefined) {\n                delete message._unknownFields[extension.singularTag];\n            }\n        }\n        if (encoded.length !== 0) {\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            message._unknownFields[extension.tag] = encoded;\n        }\n    },\n    decode(input, length) {\n        const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);\n        let end = length === undefined ? reader.len : reader.pos + length;\n        const message = Object.create(createBaseFileOptions());\n        while (reader.pos < end) {\n            const tag = reader.uint32();\n            switch (tag >>> 3) {\n                case 1:\n                    if (tag !== 10) {\n                        break;\n                    }\n                    message.javaPackage = reader.string();\n                    continue;\n                case 8:\n                    if (tag !== 66) {\n                        break;\n                    }\n                    message.javaOuterClassname = reader.string();\n                    continue;\n                case 10:\n                    if (tag !== 80) {\n                        break;\n                    }\n                    message.javaMultipleFiles = reader.bool();\n                    continue;\n                case 20:\n                    if (tag !== 160) {\n                        break;\n                    }\n                    message.javaGenerateEqualsAndHash = reader.bool();\n                    continue;\n                case 27:\n                    if (tag !== 216) {\n                        break;\n                    }\n                    message.javaStringCheckUtf8 = reader.bool();\n                    continue;\n                case 9:\n                    if (tag !== 72) {\n                        break;\n                    }\n                    message.optimizeFor = reader.int32();\n                    continue;\n                case 11:\n                    if (tag !== 90) {\n                        break;\n                    }\n                    message.goPackage = reader.string();\n                    continue;\n                case 16:\n                    if (tag !== 128) {\n                        break;\n                    }\n                    message.ccGenericServices = reader.bool();\n                    continue;\n                case 17:\n                    if (tag !== 136) {\n                        break;\n                    }\n                    message.javaGenericServices = reader.bool();\n                    continue;\n                case 18:\n                    if (tag !== 144) {\n                        break;\n                    }\n                    message.pyGenericServices = reader.bool();\n                    continue;\n                case 42:\n                    if (tag !== 336) {\n                        break;\n                    }\n                    message.phpGenericServices = reader.bool();\n                    continue;\n                case 23:\n                    if (tag !== 184) {\n                        break;\n                    }\n                    message.deprecated = reader.bool();\n                    continue;\n                case 31:\n                    if (tag !== 248) {\n                        break;\n                    }\n                    message.ccEnableArenas = reader.bool();\n                    continue;\n                case 36:\n                    if (tag !== 290) {\n                        break;\n                    }\n                    message.objcClassPrefix = reader.string();\n                    continue;\n                case 37:\n                    if (tag !== 298) {\n                        break;\n                    }\n                    message.csharpNamespace = reader.string();\n                    continue;\n                case 39:\n                    if (tag !== 314) {\n                        break;\n                    }\n                    message.swiftPrefix = reader.string();\n                    continue;\n                case 40:\n                    if (tag !== 322) {\n                        break;\n                    }\n                    message.phpClassPrefix = reader.string();\n                    continue;\n                case 41:\n                    if (tag !== 330) {\n                        break;\n                    }\n                    message.phpNamespace = reader.string();\n                    continue;\n                case 44:\n                    if (tag !== 354) {\n                        break;\n                    }\n                    message.phpMetadataNamespace = reader.string();\n                    continue;\n                case 45:\n                    if (tag !== 362) {\n                        break;\n                    }\n                    message.rubyPackage = reader.string();\n                    continue;\n                case 999:\n                    if (tag !== 7994) {\n                        break;\n                    }\n                    message.uninterpretedOption.push(exports.UninterpretedOption.decode(reader, reader.uint32()));\n                    continue;\n            }\n            if ((tag & 7) === 4 || tag === 0) {\n                break;\n            }\n            const buf = reader.skip(tag & 7);\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            const list = message._unknownFields[tag];\n            if (list === undefined) {\n                message._unknownFields[tag] = [buf];\n            }\n            else {\n                list.push(buf);\n            }\n        }\n        return message;\n    },\n    getExtension(message, extension) {\n        let results = undefined;\n        if (message._unknownFields === undefined) {\n            return undefined;\n        }\n        let list = message._unknownFields[extension.tag];\n        if (list !== undefined) {\n            results = extension.decode(extension.tag, list);\n        }\n        if (extension.singularTag === undefined) {\n            return results;\n        }\n        list = message._unknownFields[extension.singularTag];\n        if (list !== undefined) {\n            const results2 = extension.decode(extension.singularTag, list);\n            if (results !== undefined && results.length !== 0) {\n                results = results.concat(results2);\n            }\n            else {\n                results = results2;\n            }\n        }\n        return results;\n    },\n    fromJSON(object) {\n        return {\n            javaPackage: isSet(object.javaPackage) ? globalThis.String(object.javaPackage) : \"\",\n            javaOuterClassname: isSet(object.javaOuterClassname) ? globalThis.String(object.javaOuterClassname) : \"\",\n            javaMultipleFiles: isSet(object.javaMultipleFiles) ? globalThis.Boolean(object.javaMultipleFiles) : false,\n            javaGenerateEqualsAndHash: isSet(object.javaGenerateEqualsAndHash)\n                ? globalThis.Boolean(object.javaGenerateEqualsAndHash)\n                : false,\n            javaStringCheckUtf8: isSet(object.javaStringCheckUtf8) ? globalThis.Boolean(object.javaStringCheckUtf8) : false,\n            optimizeFor: isSet(object.optimizeFor) ? fileOptions_OptimizeModeFromJSON(object.optimizeFor) : 1,\n            goPackage: isSet(object.goPackage) ? globalThis.String(object.goPackage) : \"\",\n            ccGenericServices: isSet(object.ccGenericServices) ? globalThis.Boolean(object.ccGenericServices) : false,\n            javaGenericServices: isSet(object.javaGenericServices) ? globalThis.Boolean(object.javaGenericServices) : false,\n            pyGenericServices: isSet(object.pyGenericServices) ? globalThis.Boolean(object.pyGenericServices) : false,\n            phpGenericServices: isSet(object.phpGenericServices) ? globalThis.Boolean(object.phpGenericServices) : false,\n            deprecated: isSet(object.deprecated) ? globalThis.Boolean(object.deprecated) : false,\n            ccEnableArenas: isSet(object.ccEnableArenas) ? globalThis.Boolean(object.ccEnableArenas) : true,\n            objcClassPrefix: isSet(object.objcClassPrefix) ? globalThis.String(object.objcClassPrefix) : \"\",\n            csharpNamespace: isSet(object.csharpNamespace) ? globalThis.String(object.csharpNamespace) : \"\",\n            swiftPrefix: isSet(object.swiftPrefix) ? globalThis.String(object.swiftPrefix) : \"\",\n            phpClassPrefix: isSet(object.phpClassPrefix) ? globalThis.String(object.phpClassPrefix) : \"\",\n            phpNamespace: isSet(object.phpNamespace) ? globalThis.String(object.phpNamespace) : \"\",\n            phpMetadataNamespace: isSet(object.phpMetadataNamespace) ? globalThis.String(object.phpMetadataNamespace) : \"\",\n            rubyPackage: isSet(object.rubyPackage) ? globalThis.String(object.rubyPackage) : \"\",\n            uninterpretedOption: globalThis.Array.isArray(object?.uninterpretedOption)\n                ? object.uninterpretedOption.map((e) => exports.UninterpretedOption.fromJSON(e))\n                : [],\n        };\n    },\n    toJSON(message) {\n        const obj = {};\n        if (message.javaPackage !== \"\") {\n            obj.javaPackage = message.javaPackage;\n        }\n        if (message.javaOuterClassname !== \"\") {\n            obj.javaOuterClassname = message.javaOuterClassname;\n        }\n        if (message.javaMultipleFiles !== false) {\n            obj.javaMultipleFiles = message.javaMultipleFiles;\n        }\n        if (message.javaGenerateEqualsAndHash !== false) {\n            obj.javaGenerateEqualsAndHash = message.javaGenerateEqualsAndHash;\n        }\n        if (message.javaStringCheckUtf8 !== false) {\n            obj.javaStringCheckUtf8 = message.javaStringCheckUtf8;\n        }\n        if (message.optimizeFor !== 1) {\n            obj.optimizeFor = fileOptions_OptimizeModeToJSON(message.optimizeFor);\n        }\n        if (message.goPackage !== \"\") {\n            obj.goPackage = message.goPackage;\n        }\n        if (message.ccGenericServices !== false) {\n            obj.ccGenericServices = message.ccGenericServices;\n        }\n        if (message.javaGenericServices !== false) {\n            obj.javaGenericServices = message.javaGenericServices;\n        }\n        if (message.pyGenericServices !== false) {\n            obj.pyGenericServices = message.pyGenericServices;\n        }\n        if (message.phpGenericServices !== false) {\n            obj.phpGenericServices = message.phpGenericServices;\n        }\n        if (message.deprecated !== false) {\n            obj.deprecated = message.deprecated;\n        }\n        if (message.ccEnableArenas !== true) {\n            obj.ccEnableArenas = message.ccEnableArenas;\n        }\n        if (message.objcClassPrefix !== \"\") {\n            obj.objcClassPrefix = message.objcClassPrefix;\n        }\n        if (message.csharpNamespace !== \"\") {\n            obj.csharpNamespace = message.csharpNamespace;\n        }\n        if (message.swiftPrefix !== \"\") {\n            obj.swiftPrefix = message.swiftPrefix;\n        }\n        if (message.phpClassPrefix !== \"\") {\n            obj.phpClassPrefix = message.phpClassPrefix;\n        }\n        if (message.phpNamespace !== \"\") {\n            obj.phpNamespace = message.phpNamespace;\n        }\n        if (message.phpMetadataNamespace !== \"\") {\n            obj.phpMetadataNamespace = message.phpMetadataNamespace;\n        }\n        if (message.rubyPackage !== \"\") {\n            obj.rubyPackage = message.rubyPackage;\n        }\n        if (message.uninterpretedOption?.length) {\n            obj.uninterpretedOption = message.uninterpretedOption.map((e) => exports.UninterpretedOption.toJSON(e));\n        }\n        return obj;\n    },\n    create(base) {\n        return exports.FileOptions.fromPartial(base ?? {});\n    },\n    fromPartial(object) {\n        const message = Object.create(createBaseFileOptions());\n        message.javaPackage = object.javaPackage ?? \"\";\n        message.javaOuterClassname = object.javaOuterClassname ?? \"\";\n        message.javaMultipleFiles = object.javaMultipleFiles ?? false;\n        message.javaGenerateEqualsAndHash = object.javaGenerateEqualsAndHash ?? false;\n        message.javaStringCheckUtf8 = object.javaStringCheckUtf8 ?? false;\n        message.optimizeFor = object.optimizeFor ?? 1;\n        message.goPackage = object.goPackage ?? \"\";\n        message.ccGenericServices = object.ccGenericServices ?? false;\n        message.javaGenericServices = object.javaGenericServices ?? false;\n        message.pyGenericServices = object.pyGenericServices ?? false;\n        message.phpGenericServices = object.phpGenericServices ?? false;\n        message.deprecated = object.deprecated ?? false;\n        message.ccEnableArenas = object.ccEnableArenas ?? true;\n        message.objcClassPrefix = object.objcClassPrefix ?? \"\";\n        message.csharpNamespace = object.csharpNamespace ?? \"\";\n        message.swiftPrefix = object.swiftPrefix ?? \"\";\n        message.phpClassPrefix = object.phpClassPrefix ?? \"\";\n        message.phpNamespace = object.phpNamespace ?? \"\";\n        message.phpMetadataNamespace = object.phpMetadataNamespace ?? \"\";\n        message.rubyPackage = object.rubyPackage ?? \"\";\n        message.uninterpretedOption = object.uninterpretedOption?.map((e) => exports.UninterpretedOption.fromPartial(e)) || [];\n        return message;\n    },\n};\nfunction createBaseMessageOptions() {\n    return {\n        messageSetWireFormat: false,\n        noStandardDescriptorAccessor: false,\n        deprecated: false,\n        mapEntry: false,\n        uninterpretedOption: [],\n    };\n}\nexports.MessageOptions = {\n    encode(message, writer = new wire_1.BinaryWriter()) {\n        if (message.messageSetWireFormat !== false) {\n            writer.uint32(8).bool(message.messageSetWireFormat);\n        }\n        if (message.noStandardDescriptorAccessor !== false) {\n            writer.uint32(16).bool(message.noStandardDescriptorAccessor);\n        }\n        if (message.deprecated !== false) {\n            writer.uint32(24).bool(message.deprecated);\n        }\n        if (message.mapEntry !== false) {\n            writer.uint32(56).bool(message.mapEntry);\n        }\n        for (const v of message.uninterpretedOption) {\n            exports.UninterpretedOption.encode(v, writer.uint32(7994).fork()).join();\n        }\n        if (message._unknownFields !== undefined) {\n            for (const [key, values] of Object.entries(message._unknownFields)) {\n                const tag = parseInt(key, 10);\n                for (const value of values) {\n                    writer.uint32(tag).raw(value);\n                }\n            }\n        }\n        return writer;\n    },\n    setExtension(message, extension, value) {\n        const encoded = extension.encode(value);\n        if (message._unknownFields !== undefined) {\n            delete message._unknownFields[extension.tag];\n            if (extension.singularTag !== undefined) {\n                delete message._unknownFields[extension.singularTag];\n            }\n        }\n        if (encoded.length !== 0) {\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            message._unknownFields[extension.tag] = encoded;\n        }\n    },\n    decode(input, length) {\n        const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);\n        let end = length === undefined ? reader.len : reader.pos + length;\n        const message = Object.create(createBaseMessageOptions());\n        while (reader.pos < end) {\n            const tag = reader.uint32();\n            switch (tag >>> 3) {\n                case 1:\n                    if (tag !== 8) {\n                        break;\n                    }\n                    message.messageSetWireFormat = reader.bool();\n                    continue;\n                case 2:\n                    if (tag !== 16) {\n                        break;\n                    }\n                    message.noStandardDescriptorAccessor = reader.bool();\n                    continue;\n                case 3:\n                    if (tag !== 24) {\n                        break;\n                    }\n                    message.deprecated = reader.bool();\n                    continue;\n                case 7:\n                    if (tag !== 56) {\n                        break;\n                    }\n                    message.mapEntry = reader.bool();\n                    continue;\n                case 999:\n                    if (tag !== 7994) {\n                        break;\n                    }\n                    message.uninterpretedOption.push(exports.UninterpretedOption.decode(reader, reader.uint32()));\n                    continue;\n            }\n            if ((tag & 7) === 4 || tag === 0) {\n                break;\n            }\n            const buf = reader.skip(tag & 7);\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            const list = message._unknownFields[tag];\n            if (list === undefined) {\n                message._unknownFields[tag] = [buf];\n            }\n            else {\n                list.push(buf);\n            }\n        }\n        return message;\n    },\n    getExtension(message, extension) {\n        let results = undefined;\n        if (message._unknownFields === undefined) {\n            return undefined;\n        }\n        let list = message._unknownFields[extension.tag];\n        if (list !== undefined) {\n            results = extension.decode(extension.tag, list);\n        }\n        if (extension.singularTag === undefined) {\n            return results;\n        }\n        list = message._unknownFields[extension.singularTag];\n        if (list !== undefined) {\n            const results2 = extension.decode(extension.singularTag, list);\n            if (results !== undefined && results.length !== 0) {\n                results = results.concat(results2);\n            }\n            else {\n                results = results2;\n            }\n        }\n        return results;\n    },\n    fromJSON(object) {\n        return {\n            messageSetWireFormat: isSet(object.messageSetWireFormat)\n                ? globalThis.Boolean(object.messageSetWireFormat)\n                : false,\n            noStandardDescriptorAccessor: isSet(object.noStandardDescriptorAccessor)\n                ? globalThis.Boolean(object.noStandardDescriptorAccessor)\n                : false,\n            deprecated: isSet(object.deprecated) ? globalThis.Boolean(object.deprecated) : false,\n            mapEntry: isSet(object.mapEntry) ? globalThis.Boolean(object.mapEntry) : false,\n            uninterpretedOption: globalThis.Array.isArray(object?.uninterpretedOption)\n                ? object.uninterpretedOption.map((e) => exports.UninterpretedOption.fromJSON(e))\n                : [],\n        };\n    },\n    toJSON(message) {\n        const obj = {};\n        if (message.messageSetWireFormat !== false) {\n            obj.messageSetWireFormat = message.messageSetWireFormat;\n        }\n        if (message.noStandardDescriptorAccessor !== false) {\n            obj.noStandardDescriptorAccessor = message.noStandardDescriptorAccessor;\n        }\n        if (message.deprecated !== false) {\n            obj.deprecated = message.deprecated;\n        }\n        if (message.mapEntry !== false) {\n            obj.mapEntry = message.mapEntry;\n        }\n        if (message.uninterpretedOption?.length) {\n            obj.uninterpretedOption = message.uninterpretedOption.map((e) => exports.UninterpretedOption.toJSON(e));\n        }\n        return obj;\n    },\n    create(base) {\n        return exports.MessageOptions.fromPartial(base ?? {});\n    },\n    fromPartial(object) {\n        const message = Object.create(createBaseMessageOptions());\n        message.messageSetWireFormat = object.messageSetWireFormat ?? false;\n        message.noStandardDescriptorAccessor = object.noStandardDescriptorAccessor ?? false;\n        message.deprecated = object.deprecated ?? false;\n        message.mapEntry = object.mapEntry ?? false;\n        message.uninterpretedOption = object.uninterpretedOption?.map((e) => exports.UninterpretedOption.fromPartial(e)) || [];\n        return message;\n    },\n};\nfunction createBaseFieldOptions() {\n    return { ctype: 0, packed: false, jstype: 0, lazy: false, deprecated: false, weak: false, uninterpretedOption: [] };\n}\nexports.FieldOptions = {\n    encode(message, writer = new wire_1.BinaryWriter()) {\n        if (message.ctype !== 0) {\n            writer.uint32(8).int32(message.ctype);\n        }\n        if (message.packed !== false) {\n            writer.uint32(16).bool(message.packed);\n        }\n        if (message.jstype !== 0) {\n            writer.uint32(48).int32(message.jstype);\n        }\n        if (message.lazy !== false) {\n            writer.uint32(40).bool(message.lazy);\n        }\n        if (message.deprecated !== false) {\n            writer.uint32(24).bool(message.deprecated);\n        }\n        if (message.weak !== false) {\n            writer.uint32(80).bool(message.weak);\n        }\n        for (const v of message.uninterpretedOption) {\n            exports.UninterpretedOption.encode(v, writer.uint32(7994).fork()).join();\n        }\n        if (message._unknownFields !== undefined) {\n            for (const [key, values] of Object.entries(message._unknownFields)) {\n                const tag = parseInt(key, 10);\n                for (const value of values) {\n                    writer.uint32(tag).raw(value);\n                }\n            }\n        }\n        return writer;\n    },\n    setExtension(message, extension, value) {\n        const encoded = extension.encode(value);\n        if (message._unknownFields !== undefined) {\n            delete message._unknownFields[extension.tag];\n            if (extension.singularTag !== undefined) {\n                delete message._unknownFields[extension.singularTag];\n            }\n        }\n        if (encoded.length !== 0) {\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            message._unknownFields[extension.tag] = encoded;\n        }\n    },\n    decode(input, length) {\n        const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);\n        let end = length === undefined ? reader.len : reader.pos + length;\n        const message = Object.create(createBaseFieldOptions());\n        while (reader.pos < end) {\n            const tag = reader.uint32();\n            switch (tag >>> 3) {\n                case 1:\n                    if (tag !== 8) {\n                        break;\n                    }\n                    message.ctype = reader.int32();\n                    continue;\n                case 2:\n                    if (tag !== 16) {\n                        break;\n                    }\n                    message.packed = reader.bool();\n                    continue;\n                case 6:\n                    if (tag !== 48) {\n                        break;\n                    }\n                    message.jstype = reader.int32();\n                    continue;\n                case 5:\n                    if (tag !== 40) {\n                        break;\n                    }\n                    message.lazy = reader.bool();\n                    continue;\n                case 3:\n                    if (tag !== 24) {\n                        break;\n                    }\n                    message.deprecated = reader.bool();\n                    continue;\n                case 10:\n                    if (tag !== 80) {\n                        break;\n                    }\n                    message.weak = reader.bool();\n                    continue;\n                case 999:\n                    if (tag !== 7994) {\n                        break;\n                    }\n                    message.uninterpretedOption.push(exports.UninterpretedOption.decode(reader, reader.uint32()));\n                    continue;\n            }\n            if ((tag & 7) === 4 || tag === 0) {\n                break;\n            }\n            const buf = reader.skip(tag & 7);\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            const list = message._unknownFields[tag];\n            if (list === undefined) {\n                message._unknownFields[tag] = [buf];\n            }\n            else {\n                list.push(buf);\n            }\n        }\n        return message;\n    },\n    getExtension(message, extension) {\n        let results = undefined;\n        if (message._unknownFields === undefined) {\n            return undefined;\n        }\n        let list = message._unknownFields[extension.tag];\n        if (list !== undefined) {\n            results = extension.decode(extension.tag, list);\n        }\n        if (extension.singularTag === undefined) {\n            return results;\n        }\n        list = message._unknownFields[extension.singularTag];\n        if (list !== undefined) {\n            const results2 = extension.decode(extension.singularTag, list);\n            if (results !== undefined && results.length !== 0) {\n                results = results.concat(results2);\n            }\n            else {\n                results = results2;\n            }\n        }\n        return results;\n    },\n    fromJSON(object) {\n        return {\n            ctype: isSet(object.ctype) ? fieldOptions_CTypeFromJSON(object.ctype) : 0,\n            packed: isSet(object.packed) ? globalThis.Boolean(object.packed) : false,\n            jstype: isSet(object.jstype) ? fieldOptions_JSTypeFromJSON(object.jstype) : 0,\n            lazy: isSet(object.lazy) ? globalThis.Boolean(object.lazy) : false,\n            deprecated: isSet(object.deprecated) ? globalThis.Boolean(object.deprecated) : false,\n            weak: isSet(object.weak) ? globalThis.Boolean(object.weak) : false,\n            uninterpretedOption: globalThis.Array.isArray(object?.uninterpretedOption)\n                ? object.uninterpretedOption.map((e) => exports.UninterpretedOption.fromJSON(e))\n                : [],\n        };\n    },\n    toJSON(message) {\n        const obj = {};\n        if (message.ctype !== 0) {\n            obj.ctype = fieldOptions_CTypeToJSON(message.ctype);\n        }\n        if (message.packed !== false) {\n            obj.packed = message.packed;\n        }\n        if (message.jstype !== 0) {\n            obj.jstype = fieldOptions_JSTypeToJSON(message.jstype);\n        }\n        if (message.lazy !== false) {\n            obj.lazy = message.lazy;\n        }\n        if (message.deprecated !== false) {\n            obj.deprecated = message.deprecated;\n        }\n        if (message.weak !== false) {\n            obj.weak = message.weak;\n        }\n        if (message.uninterpretedOption?.length) {\n            obj.uninterpretedOption = message.uninterpretedOption.map((e) => exports.UninterpretedOption.toJSON(e));\n        }\n        return obj;\n    },\n    create(base) {\n        return exports.FieldOptions.fromPartial(base ?? {});\n    },\n    fromPartial(object) {\n        const message = Object.create(createBaseFieldOptions());\n        message.ctype = object.ctype ?? 0;\n        message.packed = object.packed ?? false;\n        message.jstype = object.jstype ?? 0;\n        message.lazy = object.lazy ?? false;\n        message.deprecated = object.deprecated ?? false;\n        message.weak = object.weak ?? false;\n        message.uninterpretedOption = object.uninterpretedOption?.map((e) => exports.UninterpretedOption.fromPartial(e)) || [];\n        return message;\n    },\n};\nfunction createBaseOneofOptions() {\n    return { uninterpretedOption: [] };\n}\nexports.OneofOptions = {\n    encode(message, writer = new wire_1.BinaryWriter()) {\n        for (const v of message.uninterpretedOption) {\n            exports.UninterpretedOption.encode(v, writer.uint32(7994).fork()).join();\n        }\n        if (message._unknownFields !== undefined) {\n            for (const [key, values] of Object.entries(message._unknownFields)) {\n                const tag = parseInt(key, 10);\n                for (const value of values) {\n                    writer.uint32(tag).raw(value);\n                }\n            }\n        }\n        return writer;\n    },\n    setExtension(message, extension, value) {\n        const encoded = extension.encode(value);\n        if (message._unknownFields !== undefined) {\n            delete message._unknownFields[extension.tag];\n            if (extension.singularTag !== undefined) {\n                delete message._unknownFields[extension.singularTag];\n            }\n        }\n        if (encoded.length !== 0) {\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            message._unknownFields[extension.tag] = encoded;\n        }\n    },\n    decode(input, length) {\n        const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);\n        let end = length === undefined ? reader.len : reader.pos + length;\n        const message = Object.create(createBaseOneofOptions());\n        while (reader.pos < end) {\n            const tag = reader.uint32();\n            switch (tag >>> 3) {\n                case 999:\n                    if (tag !== 7994) {\n                        break;\n                    }\n                    message.uninterpretedOption.push(exports.UninterpretedOption.decode(reader, reader.uint32()));\n                    continue;\n            }\n            if ((tag & 7) === 4 || tag === 0) {\n                break;\n            }\n            const buf = reader.skip(tag & 7);\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            const list = message._unknownFields[tag];\n            if (list === undefined) {\n                message._unknownFields[tag] = [buf];\n            }\n            else {\n                list.push(buf);\n            }\n        }\n        return message;\n    },\n    getExtension(message, extension) {\n        let results = undefined;\n        if (message._unknownFields === undefined) {\n            return undefined;\n        }\n        let list = message._unknownFields[extension.tag];\n        if (list !== undefined) {\n            results = extension.decode(extension.tag, list);\n        }\n        if (extension.singularTag === undefined) {\n            return results;\n        }\n        list = message._unknownFields[extension.singularTag];\n        if (list !== undefined) {\n            const results2 = extension.decode(extension.singularTag, list);\n            if (results !== undefined && results.length !== 0) {\n                results = results.concat(results2);\n            }\n            else {\n                results = results2;\n            }\n        }\n        return results;\n    },\n    fromJSON(object) {\n        return {\n            uninterpretedOption: globalThis.Array.isArray(object?.uninterpretedOption)\n                ? object.uninterpretedOption.map((e) => exports.UninterpretedOption.fromJSON(e))\n                : [],\n        };\n    },\n    toJSON(message) {\n        const obj = {};\n        if (message.uninterpretedOption?.length) {\n            obj.uninterpretedOption = message.uninterpretedOption.map((e) => exports.UninterpretedOption.toJSON(e));\n        }\n        return obj;\n    },\n    create(base) {\n        return exports.OneofOptions.fromPartial(base ?? {});\n    },\n    fromPartial(object) {\n        const message = Object.create(createBaseOneofOptions());\n        message.uninterpretedOption = object.uninterpretedOption?.map((e) => exports.UninterpretedOption.fromPartial(e)) || [];\n        return message;\n    },\n};\nfunction createBaseEnumOptions() {\n    return { allowAlias: false, deprecated: false, uninterpretedOption: [] };\n}\nexports.EnumOptions = {\n    encode(message, writer = new wire_1.BinaryWriter()) {\n        if (message.allowAlias !== false) {\n            writer.uint32(16).bool(message.allowAlias);\n        }\n        if (message.deprecated !== false) {\n            writer.uint32(24).bool(message.deprecated);\n        }\n        for (const v of message.uninterpretedOption) {\n            exports.UninterpretedOption.encode(v, writer.uint32(7994).fork()).join();\n        }\n        if (message._unknownFields !== undefined) {\n            for (const [key, values] of Object.entries(message._unknownFields)) {\n                const tag = parseInt(key, 10);\n                for (const value of values) {\n                    writer.uint32(tag).raw(value);\n                }\n            }\n        }\n        return writer;\n    },\n    setExtension(message, extension, value) {\n        const encoded = extension.encode(value);\n        if (message._unknownFields !== undefined) {\n            delete message._unknownFields[extension.tag];\n            if (extension.singularTag !== undefined) {\n                delete message._unknownFields[extension.singularTag];\n            }\n        }\n        if (encoded.length !== 0) {\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            message._unknownFields[extension.tag] = encoded;\n        }\n    },\n    decode(input, length) {\n        const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);\n        let end = length === undefined ? reader.len : reader.pos + length;\n        const message = Object.create(createBaseEnumOptions());\n        while (reader.pos < end) {\n            const tag = reader.uint32();\n            switch (tag >>> 3) {\n                case 2:\n                    if (tag !== 16) {\n                        break;\n                    }\n                    message.allowAlias = reader.bool();\n                    continue;\n                case 3:\n                    if (tag !== 24) {\n                        break;\n                    }\n                    message.deprecated = reader.bool();\n                    continue;\n                case 999:\n                    if (tag !== 7994) {\n                        break;\n                    }\n                    message.uninterpretedOption.push(exports.UninterpretedOption.decode(reader, reader.uint32()));\n                    continue;\n            }\n            if ((tag & 7) === 4 || tag === 0) {\n                break;\n            }\n            const buf = reader.skip(tag & 7);\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            const list = message._unknownFields[tag];\n            if (list === undefined) {\n                message._unknownFields[tag] = [buf];\n            }\n            else {\n                list.push(buf);\n            }\n        }\n        return message;\n    },\n    getExtension(message, extension) {\n        let results = undefined;\n        if (message._unknownFields === undefined) {\n            return undefined;\n        }\n        let list = message._unknownFields[extension.tag];\n        if (list !== undefined) {\n            results = extension.decode(extension.tag, list);\n        }\n        if (extension.singularTag === undefined) {\n            return results;\n        }\n        list = message._unknownFields[extension.singularTag];\n        if (list !== undefined) {\n            const results2 = extension.decode(extension.singularTag, list);\n            if (results !== undefined && results.length !== 0) {\n                results = results.concat(results2);\n            }\n            else {\n                results = results2;\n            }\n        }\n        return results;\n    },\n    fromJSON(object) {\n        return {\n            allowAlias: isSet(object.allowAlias) ? globalThis.Boolean(object.allowAlias) : false,\n            deprecated: isSet(object.deprecated) ? globalThis.Boolean(object.deprecated) : false,\n            uninterpretedOption: globalThis.Array.isArray(object?.uninterpretedOption)\n                ? object.uninterpretedOption.map((e) => exports.UninterpretedOption.fromJSON(e))\n                : [],\n        };\n    },\n    toJSON(message) {\n        const obj = {};\n        if (message.allowAlias !== false) {\n            obj.allowAlias = message.allowAlias;\n        }\n        if (message.deprecated !== false) {\n            obj.deprecated = message.deprecated;\n        }\n        if (message.uninterpretedOption?.length) {\n            obj.uninterpretedOption = message.uninterpretedOption.map((e) => exports.UninterpretedOption.toJSON(e));\n        }\n        return obj;\n    },\n    create(base) {\n        return exports.EnumOptions.fromPartial(base ?? {});\n    },\n    fromPartial(object) {\n        const message = Object.create(createBaseEnumOptions());\n        message.allowAlias = object.allowAlias ?? false;\n        message.deprecated = object.deprecated ?? false;\n        message.uninterpretedOption = object.uninterpretedOption?.map((e) => exports.UninterpretedOption.fromPartial(e)) || [];\n        return message;\n    },\n};\nfunction createBaseEnumValueOptions() {\n    return { deprecated: false, uninterpretedOption: [] };\n}\nexports.EnumValueOptions = {\n    encode(message, writer = new wire_1.BinaryWriter()) {\n        if (message.deprecated !== false) {\n            writer.uint32(8).bool(message.deprecated);\n        }\n        for (const v of message.uninterpretedOption) {\n            exports.UninterpretedOption.encode(v, writer.uint32(7994).fork()).join();\n        }\n        if (message._unknownFields !== undefined) {\n            for (const [key, values] of Object.entries(message._unknownFields)) {\n                const tag = parseInt(key, 10);\n                for (const value of values) {\n                    writer.uint32(tag).raw(value);\n                }\n            }\n        }\n        return writer;\n    },\n    setExtension(message, extension, value) {\n        const encoded = extension.encode(value);\n        if (message._unknownFields !== undefined) {\n            delete message._unknownFields[extension.tag];\n            if (extension.singularTag !== undefined) {\n                delete message._unknownFields[extension.singularTag];\n            }\n        }\n        if (encoded.length !== 0) {\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            message._unknownFields[extension.tag] = encoded;\n        }\n    },\n    decode(input, length) {\n        const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);\n        let end = length === undefined ? reader.len : reader.pos + length;\n        const message = Object.create(createBaseEnumValueOptions());\n        while (reader.pos < end) {\n            const tag = reader.uint32();\n            switch (tag >>> 3) {\n                case 1:\n                    if (tag !== 8) {\n                        break;\n                    }\n                    message.deprecated = reader.bool();\n                    continue;\n                case 999:\n                    if (tag !== 7994) {\n                        break;\n                    }\n                    message.uninterpretedOption.push(exports.UninterpretedOption.decode(reader, reader.uint32()));\n                    continue;\n            }\n            if ((tag & 7) === 4 || tag === 0) {\n                break;\n            }\n            const buf = reader.skip(tag & 7);\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            const list = message._unknownFields[tag];\n            if (list === undefined) {\n                message._unknownFields[tag] = [buf];\n            }\n            else {\n                list.push(buf);\n            }\n        }\n        return message;\n    },\n    getExtension(message, extension) {\n        let results = undefined;\n        if (message._unknownFields === undefined) {\n            return undefined;\n        }\n        let list = message._unknownFields[extension.tag];\n        if (list !== undefined) {\n            results = extension.decode(extension.tag, list);\n        }\n        if (extension.singularTag === undefined) {\n            return results;\n        }\n        list = message._unknownFields[extension.singularTag];\n        if (list !== undefined) {\n            const results2 = extension.decode(extension.singularTag, list);\n            if (results !== undefined && results.length !== 0) {\n                results = results.concat(results2);\n            }\n            else {\n                results = results2;\n            }\n        }\n        return results;\n    },\n    fromJSON(object) {\n        return {\n            deprecated: isSet(object.deprecated) ? globalThis.Boolean(object.deprecated) : false,\n            uninterpretedOption: globalThis.Array.isArray(object?.uninterpretedOption)\n                ? object.uninterpretedOption.map((e) => exports.UninterpretedOption.fromJSON(e))\n                : [],\n        };\n    },\n    toJSON(message) {\n        const obj = {};\n        if (message.deprecated !== false) {\n            obj.deprecated = message.deprecated;\n        }\n        if (message.uninterpretedOption?.length) {\n            obj.uninterpretedOption = message.uninterpretedOption.map((e) => exports.UninterpretedOption.toJSON(e));\n        }\n        return obj;\n    },\n    create(base) {\n        return exports.EnumValueOptions.fromPartial(base ?? {});\n    },\n    fromPartial(object) {\n        const message = Object.create(createBaseEnumValueOptions());\n        message.deprecated = object.deprecated ?? false;\n        message.uninterpretedOption = object.uninterpretedOption?.map((e) => exports.UninterpretedOption.fromPartial(e)) || [];\n        return message;\n    },\n};\nfunction createBaseServiceOptions() {\n    return { deprecated: false, uninterpretedOption: [] };\n}\nexports.ServiceOptions = {\n    encode(message, writer = new wire_1.BinaryWriter()) {\n        if (message.deprecated !== false) {\n            writer.uint32(264).bool(message.deprecated);\n        }\n        for (const v of message.uninterpretedOption) {\n            exports.UninterpretedOption.encode(v, writer.uint32(7994).fork()).join();\n        }\n        if (message._unknownFields !== undefined) {\n            for (const [key, values] of Object.entries(message._unknownFields)) {\n                const tag = parseInt(key, 10);\n                for (const value of values) {\n                    writer.uint32(tag).raw(value);\n                }\n            }\n        }\n        return writer;\n    },\n    setExtension(message, extension, value) {\n        const encoded = extension.encode(value);\n        if (message._unknownFields !== undefined) {\n            delete message._unknownFields[extension.tag];\n            if (extension.singularTag !== undefined) {\n                delete message._unknownFields[extension.singularTag];\n            }\n        }\n        if (encoded.length !== 0) {\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            message._unknownFields[extension.tag] = encoded;\n        }\n    },\n    decode(input, length) {\n        const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);\n        let end = length === undefined ? reader.len : reader.pos + length;\n        const message = Object.create(createBaseServiceOptions());\n        while (reader.pos < end) {\n            const tag = reader.uint32();\n            switch (tag >>> 3) {\n                case 33:\n                    if (tag !== 264) {\n                        break;\n                    }\n                    message.deprecated = reader.bool();\n                    continue;\n                case 999:\n                    if (tag !== 7994) {\n                        break;\n                    }\n                    message.uninterpretedOption.push(exports.UninterpretedOption.decode(reader, reader.uint32()));\n                    continue;\n            }\n            if ((tag & 7) === 4 || tag === 0) {\n                break;\n            }\n            const buf = reader.skip(tag & 7);\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            const list = message._unknownFields[tag];\n            if (list === undefined) {\n                message._unknownFields[tag] = [buf];\n            }\n            else {\n                list.push(buf);\n            }\n        }\n        return message;\n    },\n    getExtension(message, extension) {\n        let results = undefined;\n        if (message._unknownFields === undefined) {\n            return undefined;\n        }\n        let list = message._unknownFields[extension.tag];\n        if (list !== undefined) {\n            results = extension.decode(extension.tag, list);\n        }\n        if (extension.singularTag === undefined) {\n            return results;\n        }\n        list = message._unknownFields[extension.singularTag];\n        if (list !== undefined) {\n            const results2 = extension.decode(extension.singularTag, list);\n            if (results !== undefined && results.length !== 0) {\n                results = results.concat(results2);\n            }\n            else {\n                results = results2;\n            }\n        }\n        return results;\n    },\n    fromJSON(object) {\n        return {\n            deprecated: isSet(object.deprecated) ? globalThis.Boolean(object.deprecated) : false,\n            uninterpretedOption: globalThis.Array.isArray(object?.uninterpretedOption)\n                ? object.uninterpretedOption.map((e) => exports.UninterpretedOption.fromJSON(e))\n                : [],\n        };\n    },\n    toJSON(message) {\n        const obj = {};\n        if (message.deprecated !== false) {\n            obj.deprecated = message.deprecated;\n        }\n        if (message.uninterpretedOption?.length) {\n            obj.uninterpretedOption = message.uninterpretedOption.map((e) => exports.UninterpretedOption.toJSON(e));\n        }\n        return obj;\n    },\n    create(base) {\n        return exports.ServiceOptions.fromPartial(base ?? {});\n    },\n    fromPartial(object) {\n        const message = Object.create(createBaseServiceOptions());\n        message.deprecated = object.deprecated ?? false;\n        message.uninterpretedOption = object.uninterpretedOption?.map((e) => exports.UninterpretedOption.fromPartial(e)) || [];\n        return message;\n    },\n};\nfunction createBaseMethodOptions() {\n    return { deprecated: false, idempotencyLevel: 0, uninterpretedOption: [] };\n}\nexports.MethodOptions = {\n    encode(message, writer = new wire_1.BinaryWriter()) {\n        if (message.deprecated !== false) {\n            writer.uint32(264).bool(message.deprecated);\n        }\n        if (message.idempotencyLevel !== 0) {\n            writer.uint32(272).int32(message.idempotencyLevel);\n        }\n        for (const v of message.uninterpretedOption) {\n            exports.UninterpretedOption.encode(v, writer.uint32(7994).fork()).join();\n        }\n        if (message._unknownFields !== undefined) {\n            for (const [key, values] of Object.entries(message._unknownFields)) {\n                const tag = parseInt(key, 10);\n                for (const value of values) {\n                    writer.uint32(tag).raw(value);\n                }\n            }\n        }\n        return writer;\n    },\n    setExtension(message, extension, value) {\n        const encoded = extension.encode(value);\n        if (message._unknownFields !== undefined) {\n            delete message._unknownFields[extension.tag];\n            if (extension.singularTag !== undefined) {\n                delete message._unknownFields[extension.singularTag];\n            }\n        }\n        if (encoded.length !== 0) {\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            message._unknownFields[extension.tag] = encoded;\n        }\n    },\n    decode(input, length) {\n        const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);\n        let end = length === undefined ? reader.len : reader.pos + length;\n        const message = Object.create(createBaseMethodOptions());\n        while (reader.pos < end) {\n            const tag = reader.uint32();\n            switch (tag >>> 3) {\n                case 33:\n                    if (tag !== 264) {\n                        break;\n                    }\n                    message.deprecated = reader.bool();\n                    continue;\n                case 34:\n                    if (tag !== 272) {\n                        break;\n                    }\n                    message.idempotencyLevel = reader.int32();\n                    continue;\n                case 999:\n                    if (tag !== 7994) {\n                        break;\n                    }\n                    message.uninterpretedOption.push(exports.UninterpretedOption.decode(reader, reader.uint32()));\n                    continue;\n            }\n            if ((tag & 7) === 4 || tag === 0) {\n                break;\n            }\n            const buf = reader.skip(tag & 7);\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            const list = message._unknownFields[tag];\n            if (list === undefined) {\n                message._unknownFields[tag] = [buf];\n            }\n            else {\n                list.push(buf);\n            }\n        }\n        return message;\n    },\n    getExtension(message, extension) {\n        let results = undefined;\n        if (message._unknownFields === undefined) {\n            return undefined;\n        }\n        let list = message._unknownFields[extension.tag];\n        if (list !== undefined) {\n            results = extension.decode(extension.tag, list);\n        }\n        if (extension.singularTag === undefined) {\n            return results;\n        }\n        list = message._unknownFields[extension.singularTag];\n        if (list !== undefined) {\n            const results2 = extension.decode(extension.singularTag, list);\n            if (results !== undefined && results.length !== 0) {\n                results = results.concat(results2);\n            }\n            else {\n                results = results2;\n            }\n        }\n        return results;\n    },\n    fromJSON(object) {\n        return {\n            deprecated: isSet(object.deprecated) ? globalThis.Boolean(object.deprecated) : false,\n            idempotencyLevel: isSet(object.idempotencyLevel)\n                ? methodOptions_IdempotencyLevelFromJSON(object.idempotencyLevel)\n                : 0,\n            uninterpretedOption: globalThis.Array.isArray(object?.uninterpretedOption)\n                ? object.uninterpretedOption.map((e) => exports.UninterpretedOption.fromJSON(e))\n                : [],\n        };\n    },\n    toJSON(message) {\n        const obj = {};\n        if (message.deprecated !== false) {\n            obj.deprecated = message.deprecated;\n        }\n        if (message.idempotencyLevel !== 0) {\n            obj.idempotencyLevel = methodOptions_IdempotencyLevelToJSON(message.idempotencyLevel);\n        }\n        if (message.uninterpretedOption?.length) {\n            obj.uninterpretedOption = message.uninterpretedOption.map((e) => exports.UninterpretedOption.toJSON(e));\n        }\n        return obj;\n    },\n    create(base) {\n        return exports.MethodOptions.fromPartial(base ?? {});\n    },\n    fromPartial(object) {\n        const message = Object.create(createBaseMethodOptions());\n        message.deprecated = object.deprecated ?? false;\n        message.idempotencyLevel = object.idempotencyLevel ?? 0;\n        message.uninterpretedOption = object.uninterpretedOption?.map((e) => exports.UninterpretedOption.fromPartial(e)) || [];\n        return message;\n    },\n};\nfunction createBaseUninterpretedOption() {\n    return {\n        name: [],\n        identifierValue: \"\",\n        positiveIntValue: 0,\n        negativeIntValue: 0,\n        doubleValue: 0,\n        stringValue: new Uint8Array(0),\n        aggregateValue: \"\",\n    };\n}\nexports.UninterpretedOption = {\n    encode(message, writer = new wire_1.BinaryWriter()) {\n        for (const v of message.name) {\n            exports.UninterpretedOption_NamePart.encode(v, writer.uint32(18).fork()).join();\n        }\n        if (message.identifierValue !== \"\") {\n            writer.uint32(26).string(message.identifierValue);\n        }\n        if (message.positiveIntValue !== 0) {\n            writer.uint32(32).uint64(message.positiveIntValue);\n        }\n        if (message.negativeIntValue !== 0) {\n            writer.uint32(40).int64(message.negativeIntValue);\n        }\n        if (message.doubleValue !== 0) {\n            writer.uint32(49).double(message.doubleValue);\n        }\n        if (message.stringValue.length !== 0) {\n            writer.uint32(58).bytes(message.stringValue);\n        }\n        if (message.aggregateValue !== \"\") {\n            writer.uint32(66).string(message.aggregateValue);\n        }\n        if (message._unknownFields !== undefined) {\n            for (const [key, values] of Object.entries(message._unknownFields)) {\n                const tag = parseInt(key, 10);\n                for (const value of values) {\n                    writer.uint32(tag).raw(value);\n                }\n            }\n        }\n        return writer;\n    },\n    decode(input, length) {\n        const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);\n        let end = length === undefined ? reader.len : reader.pos + length;\n        const message = Object.create(createBaseUninterpretedOption());\n        while (reader.pos < end) {\n            const tag = reader.uint32();\n            switch (tag >>> 3) {\n                case 2:\n                    if (tag !== 18) {\n                        break;\n                    }\n                    message.name.push(exports.UninterpretedOption_NamePart.decode(reader, reader.uint32()));\n                    continue;\n                case 3:\n                    if (tag !== 26) {\n                        break;\n                    }\n                    message.identifierValue = reader.string();\n                    continue;\n                case 4:\n                    if (tag !== 32) {\n                        break;\n                    }\n                    message.positiveIntValue = longToNumber(reader.uint64());\n                    continue;\n                case 5:\n                    if (tag !== 40) {\n                        break;\n                    }\n                    message.negativeIntValue = longToNumber(reader.int64());\n                    continue;\n                case 6:\n                    if (tag !== 49) {\n                        break;\n                    }\n                    message.doubleValue = reader.double();\n                    continue;\n                case 7:\n                    if (tag !== 58) {\n                        break;\n                    }\n                    message.stringValue = reader.bytes();\n                    continue;\n                case 8:\n                    if (tag !== 66) {\n                        break;\n                    }\n                    message.aggregateValue = reader.string();\n                    continue;\n            }\n            if ((tag & 7) === 4 || tag === 0) {\n                break;\n            }\n            const buf = reader.skip(tag & 7);\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            const list = message._unknownFields[tag];\n            if (list === undefined) {\n                message._unknownFields[tag] = [buf];\n            }\n            else {\n                list.push(buf);\n            }\n        }\n        return message;\n    },\n    fromJSON(object) {\n        return {\n            name: globalThis.Array.isArray(object?.name)\n                ? object.name.map((e) => exports.UninterpretedOption_NamePart.fromJSON(e))\n                : [],\n            identifierValue: isSet(object.identifierValue) ? globalThis.String(object.identifierValue) : \"\",\n            positiveIntValue: isSet(object.positiveIntValue) ? globalThis.Number(object.positiveIntValue) : 0,\n            negativeIntValue: isSet(object.negativeIntValue) ? globalThis.Number(object.negativeIntValue) : 0,\n            doubleValue: isSet(object.doubleValue) ? globalThis.Number(object.doubleValue) : 0,\n            stringValue: isSet(object.stringValue) ? bytesFromBase64(object.stringValue) : new Uint8Array(0),\n            aggregateValue: isSet(object.aggregateValue) ? globalThis.String(object.aggregateValue) : \"\",\n        };\n    },\n    toJSON(message) {\n        const obj = {};\n        if (message.name?.length) {\n            obj.name = message.name.map((e) => exports.UninterpretedOption_NamePart.toJSON(e));\n        }\n        if (message.identifierValue !== \"\") {\n            obj.identifierValue = message.identifierValue;\n        }\n        if (message.positiveIntValue !== 0) {\n            obj.positiveIntValue = Math.round(message.positiveIntValue);\n        }\n        if (message.negativeIntValue !== 0) {\n            obj.negativeIntValue = Math.round(message.negativeIntValue);\n        }\n        if (message.doubleValue !== 0) {\n            obj.doubleValue = message.doubleValue;\n        }\n        if (message.stringValue.length !== 0) {\n            obj.stringValue = base64FromBytes(message.stringValue);\n        }\n        if (message.aggregateValue !== \"\") {\n            obj.aggregateValue = message.aggregateValue;\n        }\n        return obj;\n    },\n    create(base) {\n        return exports.UninterpretedOption.fromPartial(base ?? {});\n    },\n    fromPartial(object) {\n        const message = Object.create(createBaseUninterpretedOption());\n        message.name = object.name?.map((e) => exports.UninterpretedOption_NamePart.fromPartial(e)) || [];\n        message.identifierValue = object.identifierValue ?? \"\";\n        message.positiveIntValue = object.positiveIntValue ?? 0;\n        message.negativeIntValue = object.negativeIntValue ?? 0;\n        message.doubleValue = object.doubleValue ?? 0;\n        message.stringValue = object.stringValue ?? new Uint8Array(0);\n        message.aggregateValue = object.aggregateValue ?? \"\";\n        return message;\n    },\n};\nfunction createBaseUninterpretedOption_NamePart() {\n    return { namePart: \"\", isExtension: false };\n}\nexports.UninterpretedOption_NamePart = {\n    encode(message, writer = new wire_1.BinaryWriter()) {\n        if (message.namePart !== \"\") {\n            writer.uint32(10).string(message.namePart);\n        }\n        if (message.isExtension !== false) {\n            writer.uint32(16).bool(message.isExtension);\n        }\n        if (message._unknownFields !== undefined) {\n            for (const [key, values] of Object.entries(message._unknownFields)) {\n                const tag = parseInt(key, 10);\n                for (const value of values) {\n                    writer.uint32(tag).raw(value);\n                }\n            }\n        }\n        return writer;\n    },\n    decode(input, length) {\n        const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);\n        let end = length === undefined ? reader.len : reader.pos + length;\n        const message = Object.create(createBaseUninterpretedOption_NamePart());\n        while (reader.pos < end) {\n            const tag = reader.uint32();\n            switch (tag >>> 3) {\n                case 1:\n                    if (tag !== 10) {\n                        break;\n                    }\n                    message.namePart = reader.string();\n                    continue;\n                case 2:\n                    if (tag !== 16) {\n                        break;\n                    }\n                    message.isExtension = reader.bool();\n                    continue;\n            }\n            if ((tag & 7) === 4 || tag === 0) {\n                break;\n            }\n            const buf = reader.skip(tag & 7);\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            const list = message._unknownFields[tag];\n            if (list === undefined) {\n                message._unknownFields[tag] = [buf];\n            }\n            else {\n                list.push(buf);\n            }\n        }\n        return message;\n    },\n    fromJSON(object) {\n        return {\n            namePart: isSet(object.namePart) ? globalThis.String(object.namePart) : \"\",\n            isExtension: isSet(object.isExtension) ? globalThis.Boolean(object.isExtension) : false,\n        };\n    },\n    toJSON(message) {\n        const obj = {};\n        if (message.namePart !== \"\") {\n            obj.namePart = message.namePart;\n        }\n        if (message.isExtension !== false) {\n            obj.isExtension = message.isExtension;\n        }\n        return obj;\n    },\n    create(base) {\n        return exports.UninterpretedOption_NamePart.fromPartial(base ?? {});\n    },\n    fromPartial(object) {\n        const message = Object.create(createBaseUninterpretedOption_NamePart());\n        message.namePart = object.namePart ?? \"\";\n        message.isExtension = object.isExtension ?? false;\n        return message;\n    },\n};\nfunction createBaseSourceCodeInfo() {\n    return { location: [] };\n}\nexports.SourceCodeInfo = {\n    encode(message, writer = new wire_1.BinaryWriter()) {\n        for (const v of message.location) {\n            exports.SourceCodeInfo_Location.encode(v, writer.uint32(10).fork()).join();\n        }\n        if (message._unknownFields !== undefined) {\n            for (const [key, values] of Object.entries(message._unknownFields)) {\n                const tag = parseInt(key, 10);\n                for (const value of values) {\n                    writer.uint32(tag).raw(value);\n                }\n            }\n        }\n        return writer;\n    },\n    decode(input, length) {\n        const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);\n        let end = length === undefined ? reader.len : reader.pos + length;\n        const message = Object.create(createBaseSourceCodeInfo());\n        while (reader.pos < end) {\n            const tag = reader.uint32();\n            switch (tag >>> 3) {\n                case 1:\n                    if (tag !== 10) {\n                        break;\n                    }\n                    message.location.push(exports.SourceCodeInfo_Location.decode(reader, reader.uint32()));\n                    continue;\n            }\n            if ((tag & 7) === 4 || tag === 0) {\n                break;\n            }\n            const buf = reader.skip(tag & 7);\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            const list = message._unknownFields[tag];\n            if (list === undefined) {\n                message._unknownFields[tag] = [buf];\n            }\n            else {\n                list.push(buf);\n            }\n        }\n        return message;\n    },\n    fromJSON(object) {\n        return {\n            location: globalThis.Array.isArray(object?.location)\n                ? object.location.map((e) => exports.SourceCodeInfo_Location.fromJSON(e))\n                : [],\n        };\n    },\n    toJSON(message) {\n        const obj = {};\n        if (message.location?.length) {\n            obj.location = message.location.map((e) => exports.SourceCodeInfo_Location.toJSON(e));\n        }\n        return obj;\n    },\n    create(base) {\n        return exports.SourceCodeInfo.fromPartial(base ?? {});\n    },\n    fromPartial(object) {\n        const message = Object.create(createBaseSourceCodeInfo());\n        message.location = object.location?.map((e) => exports.SourceCodeInfo_Location.fromPartial(e)) || [];\n        return message;\n    },\n};\nfunction createBaseSourceCodeInfo_Location() {\n    return { path: [], span: [], leadingComments: \"\", trailingComments: \"\", leadingDetachedComments: [] };\n}\nexports.SourceCodeInfo_Location = {\n    encode(message, writer = new wire_1.BinaryWriter()) {\n        writer.uint32(10).fork();\n        for (const v of message.path) {\n            writer.int32(v);\n        }\n        writer.join();\n        writer.uint32(18).fork();\n        for (const v of message.span) {\n            writer.int32(v);\n        }\n        writer.join();\n        if (message.leadingComments !== \"\") {\n            writer.uint32(26).string(message.leadingComments);\n        }\n        if (message.trailingComments !== \"\") {\n            writer.uint32(34).string(message.trailingComments);\n        }\n        for (const v of message.leadingDetachedComments) {\n            writer.uint32(50).string(v);\n        }\n        if (message._unknownFields !== undefined) {\n            for (const [key, values] of Object.entries(message._unknownFields)) {\n                const tag = parseInt(key, 10);\n                for (const value of values) {\n                    writer.uint32(tag).raw(value);\n                }\n            }\n        }\n        return writer;\n    },\n    decode(input, length) {\n        const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);\n        let end = length === undefined ? reader.len : reader.pos + length;\n        const message = Object.create(createBaseSourceCodeInfo_Location());\n        while (reader.pos < end) {\n            const tag = reader.uint32();\n            switch (tag >>> 3) {\n                case 1:\n                    if (tag === 8) {\n                        message.path.push(reader.int32());\n                        continue;\n                    }\n                    if (tag === 10) {\n                        const end2 = reader.uint32() + reader.pos;\n                        while (reader.pos < end2) {\n                            message.path.push(reader.int32());\n                        }\n                        continue;\n                    }\n                    break;\n                case 2:\n                    if (tag === 16) {\n                        message.span.push(reader.int32());\n                        continue;\n                    }\n                    if (tag === 18) {\n                        const end2 = reader.uint32() + reader.pos;\n                        while (reader.pos < end2) {\n                            message.span.push(reader.int32());\n                        }\n                        continue;\n                    }\n                    break;\n                case 3:\n                    if (tag !== 26) {\n                        break;\n                    }\n                    message.leadingComments = reader.string();\n                    continue;\n                case 4:\n                    if (tag !== 34) {\n                        break;\n                    }\n                    message.trailingComments = reader.string();\n                    continue;\n                case 6:\n                    if (tag !== 50) {\n                        break;\n                    }\n                    message.leadingDetachedComments.push(reader.string());\n                    continue;\n            }\n            if ((tag & 7) === 4 || tag === 0) {\n                break;\n            }\n            const buf = reader.skip(tag & 7);\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            const list = message._unknownFields[tag];\n            if (list === undefined) {\n                message._unknownFields[tag] = [buf];\n            }\n            else {\n                list.push(buf);\n            }\n        }\n        return message;\n    },\n    fromJSON(object) {\n        return {\n            path: globalThis.Array.isArray(object?.path) ? object.path.map((e) => globalThis.Number(e)) : [],\n            span: globalThis.Array.isArray(object?.span) ? object.span.map((e) => globalThis.Number(e)) : [],\n            leadingComments: isSet(object.leadingComments) ? globalThis.String(object.leadingComments) : \"\",\n            trailingComments: isSet(object.trailingComments) ? globalThis.String(object.trailingComments) : \"\",\n            leadingDetachedComments: globalThis.Array.isArray(object?.leadingDetachedComments)\n                ? object.leadingDetachedComments.map((e) => globalThis.String(e))\n                : [],\n        };\n    },\n    toJSON(message) {\n        const obj = {};\n        if (message.path?.length) {\n            obj.path = message.path.map((e) => Math.round(e));\n        }\n        if (message.span?.length) {\n            obj.span = message.span.map((e) => Math.round(e));\n        }\n        if (message.leadingComments !== \"\") {\n            obj.leadingComments = message.leadingComments;\n        }\n        if (message.trailingComments !== \"\") {\n            obj.trailingComments = message.trailingComments;\n        }\n        if (message.leadingDetachedComments?.length) {\n            obj.leadingDetachedComments = message.leadingDetachedComments;\n        }\n        return obj;\n    },\n    create(base) {\n        return exports.SourceCodeInfo_Location.fromPartial(base ?? {});\n    },\n    fromPartial(object) {\n        const message = Object.create(createBaseSourceCodeInfo_Location());\n        message.path = object.path?.map((e) => e) || [];\n        message.span = object.span?.map((e) => e) || [];\n        message.leadingComments = object.leadingComments ?? \"\";\n        message.trailingComments = object.trailingComments ?? \"\";\n        message.leadingDetachedComments = object.leadingDetachedComments?.map((e) => e) || [];\n        return message;\n    },\n};\nfunction createBaseGeneratedCodeInfo() {\n    return { annotation: [] };\n}\nexports.GeneratedCodeInfo = {\n    encode(message, writer = new wire_1.BinaryWriter()) {\n        for (const v of message.annotation) {\n            exports.GeneratedCodeInfo_Annotation.encode(v, writer.uint32(10).fork()).join();\n        }\n        if (message._unknownFields !== undefined) {\n            for (const [key, values] of Object.entries(message._unknownFields)) {\n                const tag = parseInt(key, 10);\n                for (const value of values) {\n                    writer.uint32(tag).raw(value);\n                }\n            }\n        }\n        return writer;\n    },\n    decode(input, length) {\n        const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);\n        let end = length === undefined ? reader.len : reader.pos + length;\n        const message = Object.create(createBaseGeneratedCodeInfo());\n        while (reader.pos < end) {\n            const tag = reader.uint32();\n            switch (tag >>> 3) {\n                case 1:\n                    if (tag !== 10) {\n                        break;\n                    }\n                    message.annotation.push(exports.GeneratedCodeInfo_Annotation.decode(reader, reader.uint32()));\n                    continue;\n            }\n            if ((tag & 7) === 4 || tag === 0) {\n                break;\n            }\n            const buf = reader.skip(tag & 7);\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            const list = message._unknownFields[tag];\n            if (list === undefined) {\n                message._unknownFields[tag] = [buf];\n            }\n            else {\n                list.push(buf);\n            }\n        }\n        return message;\n    },\n    fromJSON(object) {\n        return {\n            annotation: globalThis.Array.isArray(object?.annotation)\n                ? object.annotation.map((e) => exports.GeneratedCodeInfo_Annotation.fromJSON(e))\n                : [],\n        };\n    },\n    toJSON(message) {\n        const obj = {};\n        if (message.annotation?.length) {\n            obj.annotation = message.annotation.map((e) => exports.GeneratedCodeInfo_Annotation.toJSON(e));\n        }\n        return obj;\n    },\n    create(base) {\n        return exports.GeneratedCodeInfo.fromPartial(base ?? {});\n    },\n    fromPartial(object) {\n        const message = Object.create(createBaseGeneratedCodeInfo());\n        message.annotation = object.annotation?.map((e) => exports.GeneratedCodeInfo_Annotation.fromPartial(e)) || [];\n        return message;\n    },\n};\nfunction createBaseGeneratedCodeInfo_Annotation() {\n    return { path: [], sourceFile: \"\", begin: 0, end: 0 };\n}\nexports.GeneratedCodeInfo_Annotation = {\n    encode(message, writer = new wire_1.BinaryWriter()) {\n        writer.uint32(10).fork();\n        for (const v of message.path) {\n            writer.int32(v);\n        }\n        writer.join();\n        if (message.sourceFile !== \"\") {\n            writer.uint32(18).string(message.sourceFile);\n        }\n        if (message.begin !== 0) {\n            writer.uint32(24).int32(message.begin);\n        }\n        if (message.end !== 0) {\n            writer.uint32(32).int32(message.end);\n        }\n        if (message._unknownFields !== undefined) {\n            for (const [key, values] of Object.entries(message._unknownFields)) {\n                const tag = parseInt(key, 10);\n                for (const value of values) {\n                    writer.uint32(tag).raw(value);\n                }\n            }\n        }\n        return writer;\n    },\n    decode(input, length) {\n        const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);\n        let end = length === undefined ? reader.len : reader.pos + length;\n        const message = Object.create(createBaseGeneratedCodeInfo_Annotation());\n        while (reader.pos < end) {\n            const tag = reader.uint32();\n            switch (tag >>> 3) {\n                case 1:\n                    if (tag === 8) {\n                        message.path.push(reader.int32());\n                        continue;\n                    }\n                    if (tag === 10) {\n                        const end2 = reader.uint32() + reader.pos;\n                        while (reader.pos < end2) {\n                            message.path.push(reader.int32());\n                        }\n                        continue;\n                    }\n                    break;\n                case 2:\n                    if (tag !== 18) {\n                        break;\n                    }\n                    message.sourceFile = reader.string();\n                    continue;\n                case 3:\n                    if (tag !== 24) {\n                        break;\n                    }\n                    message.begin = reader.int32();\n                    continue;\n                case 4:\n                    if (tag !== 32) {\n                        break;\n                    }\n                    message.end = reader.int32();\n                    continue;\n            }\n            if ((tag & 7) === 4 || tag === 0) {\n                break;\n            }\n            const buf = reader.skip(tag & 7);\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            const list = message._unknownFields[tag];\n            if (list === undefined) {\n                message._unknownFields[tag] = [buf];\n            }\n            else {\n                list.push(buf);\n            }\n        }\n        return message;\n    },\n    fromJSON(object) {\n        return {\n            path: globalThis.Array.isArray(object?.path) ? object.path.map((e) => globalThis.Number(e)) : [],\n            sourceFile: isSet(object.sourceFile) ? globalThis.String(object.sourceFile) : \"\",\n            begin: isSet(object.begin) ? globalThis.Number(object.begin) : 0,\n            end: isSet(object.end) ? globalThis.Number(object.end) : 0,\n        };\n    },\n    toJSON(message) {\n        const obj = {};\n        if (message.path?.length) {\n            obj.path = message.path.map((e) => Math.round(e));\n        }\n        if (message.sourceFile !== \"\") {\n            obj.sourceFile = message.sourceFile;\n        }\n        if (message.begin !== 0) {\n            obj.begin = Math.round(message.begin);\n        }\n        if (message.end !== 0) {\n            obj.end = Math.round(message.end);\n        }\n        return obj;\n    },\n    create(base) {\n        return exports.GeneratedCodeInfo_Annotation.fromPartial(base ?? {});\n    },\n    fromPartial(object) {\n        const message = Object.create(createBaseGeneratedCodeInfo_Annotation());\n        message.path = object.path?.map((e) => e) || [];\n        message.sourceFile = object.sourceFile ?? \"\";\n        message.begin = object.begin ?? 0;\n        message.end = object.end ?? 0;\n        return message;\n    },\n};\nfunction bytesFromBase64(b64) {\n    if (globalThis.Buffer) {\n        return Uint8Array.from(globalThis.Buffer.from(b64, \"base64\"));\n    }\n    else {\n        const bin = globalThis.atob(b64);\n        const arr = new Uint8Array(bin.length);\n        for (let i = 0; i < bin.length; ++i) {\n            arr[i] = bin.charCodeAt(i);\n        }\n        return arr;\n    }\n}\nfunction base64FromBytes(arr) {\n    if (globalThis.Buffer) {\n        return globalThis.Buffer.from(arr).toString(\"base64\");\n    }\n    else {\n        const bin = [];\n        arr.forEach((byte) => {\n            bin.push(globalThis.String.fromCharCode(byte));\n        });\n        return globalThis.btoa(bin.join(\"\"));\n    }\n}\nfunction longToNumber(int64) {\n    const num = globalThis.Number(int64.toString());\n    if (num > globalThis.Number.MAX_SAFE_INTEGER) {\n        throw new globalThis.Error(\"Value is larger than Number.MAX_SAFE_INTEGER\");\n    }\n    if (num < globalThis.Number.MIN_SAFE_INTEGER) {\n        throw new globalThis.Error(\"Value is smaller than Number.MIN_SAFE_INTEGER\");\n    }\n    return num;\n}\nfunction isSet(value) {\n    return value !== null && value !== undefined;\n}\n", "\"use strict\";\n// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.0.3\n//   protoc               v3.21.12\n// source: google/protobuf/compiler/plugin.proto\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.CodeGeneratorResponse_File = exports.CodeGeneratorResponse = exports.CodeGeneratorRequest = exports.Version = exports.codeGeneratorResponse_FeatureToJSON = exports.codeGeneratorResponse_FeatureFromJSON = exports.CodeGeneratorResponse_Feature = void 0;\n/* eslint-disable */\nconst wire_1 = require(\"@bufbuild/protobuf/wire\");\nconst descriptor_1 = require(\"../descriptor\");\n/** Sync with code_generator.h. */\nvar CodeGeneratorResponse_Feature;\n(function (CodeGeneratorResponse_Feature) {\n    CodeGeneratorResponse_Feature[CodeGeneratorResponse_Feature[\"FEATURE_NONE\"] = 0] = \"FEATURE_NONE\";\n    CodeGeneratorResponse_Feature[CodeGeneratorResponse_Feature[\"FEATURE_PROTO3_OPTIONAL\"] = 1] = \"FEATURE_PROTO3_OPTIONAL\";\n    CodeGeneratorResponse_Feature[CodeGeneratorResponse_Feature[\"UNRECOGNIZED\"] = -1] = \"UNRECOGNIZED\";\n})(CodeGeneratorResponse_Feature || (exports.CodeGeneratorResponse_Feature = CodeGeneratorResponse_Feature = {}));\nfunction codeGeneratorResponse_FeatureFromJSON(object) {\n    switch (object) {\n        case 0:\n        case \"FEATURE_NONE\":\n            return CodeGeneratorResponse_Feature.FEATURE_NONE;\n        case 1:\n        case \"FEATURE_PROTO3_OPTIONAL\":\n            return CodeGeneratorResponse_Feature.FEATURE_PROTO3_OPTIONAL;\n        case -1:\n        case \"UNRECOGNIZED\":\n        default:\n            return CodeGeneratorResponse_Feature.UNRECOGNIZED;\n    }\n}\nexports.codeGeneratorResponse_FeatureFromJSON = codeGeneratorResponse_FeatureFromJSON;\nfunction codeGeneratorResponse_FeatureToJSON(object) {\n    switch (object) {\n        case CodeGeneratorResponse_Feature.FEATURE_NONE:\n            return \"FEATURE_NONE\";\n        case CodeGeneratorResponse_Feature.FEATURE_PROTO3_OPTIONAL:\n            return \"FEATURE_PROTO3_OPTIONAL\";\n        case CodeGeneratorResponse_Feature.UNRECOGNIZED:\n        default:\n            return \"UNRECOGNIZED\";\n    }\n}\nexports.codeGeneratorResponse_FeatureToJSON = codeGeneratorResponse_FeatureToJSON;\nfunction createBaseVersion() {\n    return { major: 0, minor: 0, patch: 0, suffix: \"\" };\n}\nexports.Version = {\n    encode(message, writer = new wire_1.BinaryWriter()) {\n        if (message.major !== 0) {\n            writer.uint32(8).int32(message.major);\n        }\n        if (message.minor !== 0) {\n            writer.uint32(16).int32(message.minor);\n        }\n        if (message.patch !== 0) {\n            writer.uint32(24).int32(message.patch);\n        }\n        if (message.suffix !== \"\") {\n            writer.uint32(34).string(message.suffix);\n        }\n        if (message._unknownFields !== undefined) {\n            for (const [key, values] of Object.entries(message._unknownFields)) {\n                const tag = parseInt(key, 10);\n                for (const value of values) {\n                    writer.uint32(tag).raw(value);\n                }\n            }\n        }\n        return writer;\n    },\n    decode(input, length) {\n        const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);\n        let end = length === undefined ? reader.len : reader.pos + length;\n        const message = Object.create(createBaseVersion());\n        while (reader.pos < end) {\n            const tag = reader.uint32();\n            switch (tag >>> 3) {\n                case 1:\n                    if (tag !== 8) {\n                        break;\n                    }\n                    message.major = reader.int32();\n                    continue;\n                case 2:\n                    if (tag !== 16) {\n                        break;\n                    }\n                    message.minor = reader.int32();\n                    continue;\n                case 3:\n                    if (tag !== 24) {\n                        break;\n                    }\n                    message.patch = reader.int32();\n                    continue;\n                case 4:\n                    if (tag !== 34) {\n                        break;\n                    }\n                    message.suffix = reader.string();\n                    continue;\n            }\n            if ((tag & 7) === 4 || tag === 0) {\n                break;\n            }\n            const buf = reader.skip(tag & 7);\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            const list = message._unknownFields[tag];\n            if (list === undefined) {\n                message._unknownFields[tag] = [buf];\n            }\n            else {\n                list.push(buf);\n            }\n        }\n        return message;\n    },\n    fromJSON(object) {\n        return {\n            major: isSet(object.major) ? globalThis.Number(object.major) : 0,\n            minor: isSet(object.minor) ? globalThis.Number(object.minor) : 0,\n            patch: isSet(object.patch) ? globalThis.Number(object.patch) : 0,\n            suffix: isSet(object.suffix) ? globalThis.String(object.suffix) : \"\",\n        };\n    },\n    toJSON(message) {\n        const obj = {};\n        if (message.major !== 0) {\n            obj.major = Math.round(message.major);\n        }\n        if (message.minor !== 0) {\n            obj.minor = Math.round(message.minor);\n        }\n        if (message.patch !== 0) {\n            obj.patch = Math.round(message.patch);\n        }\n        if (message.suffix !== \"\") {\n            obj.suffix = message.suffix;\n        }\n        return obj;\n    },\n    create(base) {\n        return exports.Version.fromPartial(base ?? {});\n    },\n    fromPartial(object) {\n        const message = Object.create(createBaseVersion());\n        message.major = object.major ?? 0;\n        message.minor = object.minor ?? 0;\n        message.patch = object.patch ?? 0;\n        message.suffix = object.suffix ?? \"\";\n        return message;\n    },\n};\nfunction createBaseCodeGeneratorRequest() {\n    return { fileToGenerate: [], parameter: \"\", protoFile: [], compilerVersion: undefined };\n}\nexports.CodeGeneratorRequest = {\n    encode(message, writer = new wire_1.BinaryWriter()) {\n        for (const v of message.fileToGenerate) {\n            writer.uint32(10).string(v);\n        }\n        if (message.parameter !== \"\") {\n            writer.uint32(18).string(message.parameter);\n        }\n        for (const v of message.protoFile) {\n            descriptor_1.FileDescriptorProto.encode(v, writer.uint32(122).fork()).join();\n        }\n        if (message.compilerVersion !== undefined) {\n            exports.Version.encode(message.compilerVersion, writer.uint32(26).fork()).join();\n        }\n        if (message._unknownFields !== undefined) {\n            for (const [key, values] of Object.entries(message._unknownFields)) {\n                const tag = parseInt(key, 10);\n                for (const value of values) {\n                    writer.uint32(tag).raw(value);\n                }\n            }\n        }\n        return writer;\n    },\n    decode(input, length) {\n        const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);\n        let end = length === undefined ? reader.len : reader.pos + length;\n        const message = Object.create(createBaseCodeGeneratorRequest());\n        while (reader.pos < end) {\n            const tag = reader.uint32();\n            switch (tag >>> 3) {\n                case 1:\n                    if (tag !== 10) {\n                        break;\n                    }\n                    message.fileToGenerate.push(reader.string());\n                    continue;\n                case 2:\n                    if (tag !== 18) {\n                        break;\n                    }\n                    message.parameter = reader.string();\n                    continue;\n                case 15:\n                    if (tag !== 122) {\n                        break;\n                    }\n                    message.protoFile.push(descriptor_1.FileDescriptorProto.decode(reader, reader.uint32()));\n                    continue;\n                case 3:\n                    if (tag !== 26) {\n                        break;\n                    }\n                    message.compilerVersion = exports.Version.decode(reader, reader.uint32());\n                    continue;\n            }\n            if ((tag & 7) === 4 || tag === 0) {\n                break;\n            }\n            const buf = reader.skip(tag & 7);\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            const list = message._unknownFields[tag];\n            if (list === undefined) {\n                message._unknownFields[tag] = [buf];\n            }\n            else {\n                list.push(buf);\n            }\n        }\n        return message;\n    },\n    fromJSON(object) {\n        return {\n            fileToGenerate: globalThis.Array.isArray(object?.fileToGenerate)\n                ? object.fileToGenerate.map((e) => globalThis.String(e))\n                : [],\n            parameter: isSet(object.parameter) ? globalThis.String(object.parameter) : \"\",\n            protoFile: globalThis.Array.isArray(object?.protoFile)\n                ? object.protoFile.map((e) => descriptor_1.FileDescriptorProto.fromJSON(e))\n                : [],\n            compilerVersion: isSet(object.compilerVersion) ? exports.Version.fromJSON(object.compilerVersion) : undefined,\n        };\n    },\n    toJSON(message) {\n        const obj = {};\n        if (message.fileToGenerate?.length) {\n            obj.fileToGenerate = message.fileToGenerate;\n        }\n        if (message.parameter !== \"\") {\n            obj.parameter = message.parameter;\n        }\n        if (message.protoFile?.length) {\n            obj.protoFile = message.protoFile.map((e) => descriptor_1.FileDescriptorProto.toJSON(e));\n        }\n        if (message.compilerVersion !== undefined) {\n            obj.compilerVersion = exports.Version.toJSON(message.compilerVersion);\n        }\n        return obj;\n    },\n    create(base) {\n        return exports.CodeGeneratorRequest.fromPartial(base ?? {});\n    },\n    fromPartial(object) {\n        const message = Object.create(createBaseCodeGeneratorRequest());\n        message.fileToGenerate = object.fileToGenerate?.map((e) => e) || [];\n        message.parameter = object.parameter ?? \"\";\n        message.protoFile = object.protoFile?.map((e) => descriptor_1.FileDescriptorProto.fromPartial(e)) || [];\n        message.compilerVersion = (object.compilerVersion !== undefined && object.compilerVersion !== null)\n            ? exports.Version.fromPartial(object.compilerVersion)\n            : undefined;\n        return message;\n    },\n};\nfunction createBaseCodeGeneratorResponse() {\n    return { error: \"\", supportedFeatures: 0, file: [] };\n}\nexports.CodeGeneratorResponse = {\n    encode(message, writer = new wire_1.BinaryWriter()) {\n        if (message.error !== \"\") {\n            writer.uint32(10).string(message.error);\n        }\n        if (message.supportedFeatures !== 0) {\n            writer.uint32(16).uint64(message.supportedFeatures);\n        }\n        for (const v of message.file) {\n            exports.CodeGeneratorResponse_File.encode(v, writer.uint32(122).fork()).join();\n        }\n        if (message._unknownFields !== undefined) {\n            for (const [key, values] of Object.entries(message._unknownFields)) {\n                const tag = parseInt(key, 10);\n                for (const value of values) {\n                    writer.uint32(tag).raw(value);\n                }\n            }\n        }\n        return writer;\n    },\n    decode(input, length) {\n        const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);\n        let end = length === undefined ? reader.len : reader.pos + length;\n        const message = Object.create(createBaseCodeGeneratorResponse());\n        while (reader.pos < end) {\n            const tag = reader.uint32();\n            switch (tag >>> 3) {\n                case 1:\n                    if (tag !== 10) {\n                        break;\n                    }\n                    message.error = reader.string();\n                    continue;\n                case 2:\n                    if (tag !== 16) {\n                        break;\n                    }\n                    message.supportedFeatures = longToNumber(reader.uint64());\n                    continue;\n                case 15:\n                    if (tag !== 122) {\n                        break;\n                    }\n                    message.file.push(exports.CodeGeneratorResponse_File.decode(reader, reader.uint32()));\n                    continue;\n            }\n            if ((tag & 7) === 4 || tag === 0) {\n                break;\n            }\n            const buf = reader.skip(tag & 7);\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            const list = message._unknownFields[tag];\n            if (list === undefined) {\n                message._unknownFields[tag] = [buf];\n            }\n            else {\n                list.push(buf);\n            }\n        }\n        return message;\n    },\n    fromJSON(object) {\n        return {\n            error: isSet(object.error) ? globalThis.String(object.error) : \"\",\n            supportedFeatures: isSet(object.supportedFeatures) ? globalThis.Number(object.supportedFeatures) : 0,\n            file: globalThis.Array.isArray(object?.file)\n                ? object.file.map((e) => exports.CodeGeneratorResponse_File.fromJSON(e))\n                : [],\n        };\n    },\n    toJSON(message) {\n        const obj = {};\n        if (message.error !== \"\") {\n            obj.error = message.error;\n        }\n        if (message.supportedFeatures !== 0) {\n            obj.supportedFeatures = Math.round(message.supportedFeatures);\n        }\n        if (message.file?.length) {\n            obj.file = message.file.map((e) => exports.CodeGeneratorResponse_File.toJSON(e));\n        }\n        return obj;\n    },\n    create(base) {\n        return exports.CodeGeneratorResponse.fromPartial(base ?? {});\n    },\n    fromPartial(object) {\n        const message = Object.create(createBaseCodeGeneratorResponse());\n        message.error = object.error ?? \"\";\n        message.supportedFeatures = object.supportedFeatures ?? 0;\n        message.file = object.file?.map((e) => exports.CodeGeneratorResponse_File.fromPartial(e)) || [];\n        return message;\n    },\n};\nfunction createBaseCodeGeneratorResponse_File() {\n    return { name: \"\", insertionPoint: \"\", content: \"\", generatedCodeInfo: undefined };\n}\nexports.CodeGeneratorResponse_File = {\n    encode(message, writer = new wire_1.BinaryWriter()) {\n        if (message.name !== \"\") {\n            writer.uint32(10).string(message.name);\n        }\n        if (message.insertionPoint !== \"\") {\n            writer.uint32(18).string(message.insertionPoint);\n        }\n        if (message.content !== \"\") {\n            writer.uint32(122).string(message.content);\n        }\n        if (message.generatedCodeInfo !== undefined) {\n            descriptor_1.GeneratedCodeInfo.encode(message.generatedCodeInfo, writer.uint32(130).fork()).join();\n        }\n        if (message._unknownFields !== undefined) {\n            for (const [key, values] of Object.entries(message._unknownFields)) {\n                const tag = parseInt(key, 10);\n                for (const value of values) {\n                    writer.uint32(tag).raw(value);\n                }\n            }\n        }\n        return writer;\n    },\n    decode(input, length) {\n        const reader = input instanceof wire_1.BinaryReader ? input : new wire_1.BinaryReader(input);\n        let end = length === undefined ? reader.len : reader.pos + length;\n        const message = Object.create(createBaseCodeGeneratorResponse_File());\n        while (reader.pos < end) {\n            const tag = reader.uint32();\n            switch (tag >>> 3) {\n                case 1:\n                    if (tag !== 10) {\n                        break;\n                    }\n                    message.name = reader.string();\n                    continue;\n                case 2:\n                    if (tag !== 18) {\n                        break;\n                    }\n                    message.insertionPoint = reader.string();\n                    continue;\n                case 15:\n                    if (tag !== 122) {\n                        break;\n                    }\n                    message.content = reader.string();\n                    continue;\n                case 16:\n                    if (tag !== 130) {\n                        break;\n                    }\n                    message.generatedCodeInfo = descriptor_1.GeneratedCodeInfo.decode(reader, reader.uint32());\n                    continue;\n            }\n            if ((tag & 7) === 4 || tag === 0) {\n                break;\n            }\n            const buf = reader.skip(tag & 7);\n            if (message._unknownFields === undefined) {\n                message._unknownFields = {};\n            }\n            const list = message._unknownFields[tag];\n            if (list === undefined) {\n                message._unknownFields[tag] = [buf];\n            }\n            else {\n                list.push(buf);\n            }\n        }\n        return message;\n    },\n    fromJSON(object) {\n        return {\n            name: isSet(object.name) ? globalThis.String(object.name) : \"\",\n            insertionPoint: isSet(object.insertionPoint) ? globalThis.String(object.insertionPoint) : \"\",\n            content: isSet(object.content) ? globalThis.String(object.content) : \"\",\n            generatedCodeInfo: isSet(object.generatedCodeInfo)\n                ? descriptor_1.GeneratedCodeInfo.fromJSON(object.generatedCodeInfo)\n                : undefined,\n        };\n    },\n    toJSON(message) {\n        const obj = {};\n        if (message.name !== \"\") {\n            obj.name = message.name;\n        }\n        if (message.insertionPoint !== \"\") {\n            obj.insertionPoint = message.insertionPoint;\n        }\n        if (message.content !== \"\") {\n            obj.content = message.content;\n        }\n        if (message.generatedCodeInfo !== undefined) {\n            obj.generatedCodeInfo = descriptor_1.GeneratedCodeInfo.toJSON(message.generatedCodeInfo);\n        }\n        return obj;\n    },\n    create(base) {\n        return exports.CodeGeneratorResponse_File.fromPartial(base ?? {});\n    },\n    fromPartial(object) {\n        const message = Object.create(createBaseCodeGeneratorResponse_File());\n        message.name = object.name ?? \"\";\n        message.insertionPoint = object.insertionPoint ?? \"\";\n        message.content = object.content ?? \"\";\n        message.generatedCodeInfo = (object.generatedCodeInfo !== undefined && object.generatedCodeInfo !== null)\n            ? descriptor_1.GeneratedCodeInfo.fromPartial(object.generatedCodeInfo)\n            : undefined;\n        return message;\n    },\n};\nfunction longToNumber(int64) {\n    const num = globalThis.Number(int64.toString());\n    if (num > globalThis.Number.MAX_SAFE_INTEGER) {\n        throw new globalThis.Error(\"Value is larger than Number.MAX_SAFE_INTEGER\");\n    }\n    if (num < globalThis.Number.MIN_SAFE_INTEGER) {\n        throw new globalThis.Error(\"Value is smaller than Number.MIN_SAFE_INTEGER\");\n    }\n    return num;\n}\nfunction isSet(value) {\n    return value !== null && value !== undefined;\n}\n", "\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n    for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./google/protobuf/descriptor\"), exports);\n__exportStar(require(\"./google/protobuf/compiler/plugin\"), exports);\n", "/**\n * Metadata is information about a particular RPC call (such as authentication\n * details) in the form of a list of key-value pairs, where the keys are strings\n * and the values are strings or binary data.\n */\nexport type Metadata = {\n  /**\n   * Sets the value of a metadata with a given key.\n   *\n   * The value must be binary if and only if the key ends with '-bin'.\n   *\n   * Multiple string metadata values are always joined to a single string with\n   * a comma. It is not recommended to use multiple binary metadata values\n   * either, because some gRPC implementations may not support it.\n   */\n  set<Key extends string>(\n    key: Key,\n    value: MetadataValue<Key> | Array<MetadataValue<Key>>,\n  ): Metadata;\n  /**\n   * Appends the value to an array of metadata with a given key.\n   *\n   * The value must be binary if and only if the key ends with '-bin'.\n   *\n   * Multiple string metadata values are always joined to a single string with\n   * a comma. It is not recommended to use multiple binary metadata values\n   * either, because some gRPC implementations may not support it.\n   */\n  append<Key extends string>(key: Key, value: MetadataValue<Key>): Metadata;\n  /**\n   * Clears all values of a metadata with a given key.\n   */\n  delete(key: string): void;\n  /**\n   * Returns the value of a metadata with a given key.\n   *\n   * If there are multiple binary values, the first one is returned.\n   *\n   * Multiple string metadata values are always joined to a single string with\n   * a comma. It is not recommended to use multiple binary metadata values\n   * either, because some gRPC implementations may not support it.\n   */\n  get<Key extends string>(key: Key): MetadataValue<Key> | undefined;\n  /**\n   * Returns an array of all the values of a metadata with a given key.\n   *\n   * Multiple string metadata values are always joined to a single string with\n   * a comma. It is not recommended to use multiple binary metadata values\n   * either, because some gRPC implementations may not support it.\n   */\n  getAll<Key extends string>(key: Key): Array<MetadataValue<Key>>;\n  /**\n   * Checks whether there is at least one value of a metadata with a given key.\n   */\n  has(key: string): boolean;\n  [Symbol.iterator](): IterableIterator<[string, Array<string | Uint8Array>]>;\n};\n\nexport type MetadataValue<Key extends string> = string extends Key\n  ? string | Uint8Array\n  : Lowercase<Key> extends `${string}-bin`\n  ? Uint8Array\n  : string;\n\nexport type MetadataInit =\n  | Metadata\n  | Iterable<[string, string | Uint8Array | Array<string | Uint8Array>]>\n  | Record<string, string | Uint8Array | Array<string | Uint8Array>>;\n\nexport type MetadataConstructor = {\n  new (init?: MetadataInit): Metadata;\n  (init?: MetadataInit): Metadata;\n};\n\nexport const Metadata = function Metadata(init?: MetadataInit): Metadata {\n  const data = new Map<string, Array<string | Uint8Array>>();\n\n  const metadata = {\n    set(key: string, value: string | Uint8Array | Array<string | Uint8Array>) {\n      key = normalizeKey(key);\n\n      if (Array.isArray(value)) {\n        if (value.length === 0) {\n          data.delete(key);\n        } else {\n          for (const item of value) {\n            validate(key, item);\n          }\n\n          data.set(key, key.endsWith('-bin') ? value : [value.join(', ')]);\n        }\n      } else {\n        validate(key, value);\n\n        data.set(key, [value]);\n      }\n\n      return metadata;\n    },\n\n    append(key: string, value: string | Uint8Array) {\n      key = normalizeKey(key);\n\n      validate(key, value);\n\n      let values = data.get(key);\n\n      if (values == null) {\n        values = [];\n        data.set(key, values);\n      }\n\n      values.push(value);\n\n      if (!key.endsWith('-bin')) {\n        data.set(key, [values.join(', ')]);\n      }\n\n      return metadata;\n    },\n\n    delete(key: string) {\n      key = normalizeKey(key);\n\n      data.delete(key);\n    },\n\n    get<Key extends string>(key: string): MetadataValue<Key> | undefined {\n      key = normalizeKey(key);\n\n      return data.get(key)?.[0] as MetadataValue<Key> | undefined;\n    },\n\n    getAll<Key extends string>(key: string): Array<MetadataValue<Key>> {\n      key = normalizeKey(key);\n\n      return (data.get(key) ?? []) as Array<MetadataValue<Key>>;\n    },\n\n    has(key: string) {\n      key = normalizeKey(key);\n\n      return data.has(key);\n    },\n\n    [Symbol.iterator]() {\n      return data[Symbol.iterator]();\n    },\n  };\n\n  if (init != null) {\n    const entries = isIterable(init) ? init : Object.entries(init);\n\n    for (const [key, value] of entries) {\n      metadata.set(key, value);\n    }\n  }\n\n  return metadata;\n} as MetadataConstructor;\n\nfunction normalizeKey(key: string): string {\n  return key.toLowerCase();\n}\n\nfunction validate(key: string, value: string | Uint8Array): void {\n  if (!/^[0-9a-z_.-]+$/.test(key)) {\n    throw new Error(`Metadata key '${key}' contains illegal characters`);\n  }\n\n  if (key.endsWith('-bin')) {\n    if (!(value instanceof Uint8Array)) {\n      throw new Error(\n        `Metadata key '${key}' ends with '-bin', thus it must have binary value`,\n      );\n    }\n  } else {\n    if (typeof value !== 'string') {\n      throw new Error(\n        `Metadata key '${key}' doesn't end with '-bin', thus it must have string value`,\n      );\n    }\n\n    if (!/^[ -~]*$/.test(value)) {\n      throw new Error(\n        `Metadata value '${value}' of key '${key}' contains illegal characters`,\n      );\n    }\n  }\n}\n\nfunction isIterable(value: object): value is Iterable<unknown> {\n  return Symbol.iterator in value;\n}\n", "/**\n * gRPC status code.\n *\n * See https://grpc.github.io/grpc/core/md_doc_statuscodes.html.\n */\nexport enum Status {\n  /**\n   * Not an error; returned on success.\n   */\n  OK = 0,\n  /**\n   * The operation was cancelled, typically by the caller.\n   */\n  CANCELLED = 1,\n  /**\n   * Unknown error.\n   *\n   * For example, this error may be returned when a `Status` value received from\n   * another address space belongs to an error space that is not known in this\n   * address space.\n   *\n   * Also errors raised by APIs that do not return enough error information may\n   * be converted to this error.\n   */\n  UNKNOWN = 2,\n  /**\n   * The client specified an invalid argument.\n   *\n   * Note that this differs from `FAILED_PRECONDITION`. `INVALID_ARGUMENT`\n   * indicates arguments that are problematic regardless of the state of the\n   * system (e.g., a malformed file name).\n   */\n  INVALID_ARGUMENT = 3,\n  /**\n   * The deadline expired before the operation could complete.\n   *\n   * For operations that change the state of the system, this error may be\n   * returned even if the operation has completed successfully.\n   *\n   * For example, a successful response from a server could have been delayed\n   * long enough for the deadline to expire.\n   */\n  DEADLINE_EXCEEDED = 4,\n  /**\n   * Some requested entity (e.g., file or directory) was not found.\n   *\n   * Note to server developers: if a request is denied for an entire class of\n   * users, such as gradual feature rollout or undocumented allowlist,\n   * `NOT_FOUND` may be used. If a request is denied for some users within a\n   * class of users, such as user-based access control, `PERMISSION_DENIED` must\n   * be used.\n   */\n  NOT_FOUND = 5,\n  /**\n   * The entity that a client attempted to create (e.g., file or directory)\n   * already exists.\n   */\n  ALREADY_EXISTS = 6,\n  /**\n   * The caller does not have permission to execute the specified operation.\n   *\n   * `PERMISSION_DENIED` must not be used for rejections caused by exhausting\n   * some resource (use `RESOURCE_EXHAUSTED` instead for those errors).\n   * `PERMISSION_DENIED` must not be used if the caller can not be identified\n   * (use `UNAUTHENTICATED` instead for those errors).\n   *\n   * This error code does not imply the request is valid or the requested entity\n   * exists or satisfies other pre-conditions.\n   */\n  PERMISSION_DENIED = 7,\n  /**\n   * Some resource has been exhausted, perhaps a per-user quota, or perhaps the\n   * entire file system is out of space.\n   */\n  RESOURCE_EXHAUSTED = 8,\n  /**\n   * The operation was rejected because the system is not in a state required\n   * for the operation's execution.\n   *\n   * For example, the directory to be deleted is non-empty, an rmdir operation\n   * is applied to a non-directory, etc.\n   *\n   * Service implementors can use the following guidelines to decide between\n   * `FAILED_PRECONDITION`, `ABORTED`, and `UNAVAILABLE`:\n   *\n   *   (a) Use `UNAVAILABLE` if the client can retry just the failing call.\n   *   (b) Use `ABORTED` if the client should retry at a higher level (e.g.,\n   *       when a client-specified test-and-set fails, indicating the client\n   *       should restart a read-modify-write sequence).\n   *   (c) Use `FAILED_PRECONDITION` if the client should not retry until the\n   *       system state has been explicitly fixed. E.g., if an \"rmdir\" fails\n   *       because the directory is non-empty, `FAILED_PRECONDITION` should be\n   *       returned since the client should not retry unless the files are\n   *       deleted from the directory.\n   */\n  FAILED_PRECONDITION = 9,\n  /**\n   * The operation was aborted, typically due to a concurrency issue such as a\n   * sequencer check failure or transaction abort.\n   *\n   * See the guidelines above for deciding between `FAILED_PRECONDITION`,\n   * `ABORTED`, and `UNAVAILABLE`.\n   */\n  ABORTED = 10,\n  /**\n   * The operation was attempted past the valid range.\n   *\n   * E.g., seeking or reading past end-of-file.\n   *\n   * Unlike `INVALID_ARGUMENT`, this error indicates a problem that may be fixed\n   * if the system state changes. For example, a 32-bit file system will\n   * generate `INVALID_ARGUMENT` if asked to read at an offset that is not in\n   * the range [0,2^32-1], but it will generate `OUT_OF_RANGE` if asked to read\n   * from an offset past the current file size.\n   *\n   * There is a fair bit of overlap between `FAILED_PRECONDITION` and\n   * `OUT_OF_RANGE`. We recommend using `OUT_OF_RANGE` (the more specific error)\n   * when it applies so that callers who are iterating through a space can\n   * easily look for an `OUT_OF_RANGE` error to detect when they are done.\n   */\n  OUT_OF_RANGE = 11,\n  /**\n   * The operation is not implemented or is not supported/enabled in this\n   * service.\n   */\n  UNIMPLEMENTED = 12,\n  /**\n   * Internal errors.\n   *\n   * This means that some invariants expected by the underlying system have been\n   * broken. This error code is reserved for serious errors.\n   */\n  INTERNAL = 13,\n  /**\n   * The service is currently unavailable.\n   *\n   * This is most likely a transient condition, which can be corrected by\n   * retrying with a backoff.\n   *\n   * Note that it is not always safe to retry non-idempotent operations.\n   */\n  UNAVAILABLE = 14,\n  /**\n   * Unrecoverable data loss or corruption.\n   */\n  DATA_LOSS = 15,\n  /**\n   * The request does not have valid authentication credentials for the\n   * operation.\n   */\n  UNAUTHENTICATED = 16,\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=MethodDescriptor.js.map", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=CallOptions.js.map", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=ClientMiddleware.js.map", "import {CallOptions} from './CallOptions';\nimport {ClientMiddleware, ClientMiddlewareCall} from './ClientMiddleware';\n\nexport function composeClientMiddleware<Ext1, Ext2, RequiredCallOptionsExt>(\n  middleware1: ClientMiddleware<Ext1, RequiredCallOptionsExt>,\n  middleware2: ClientMiddleware<Ext2, RequiredCallOptionsExt & Ext1>,\n): ClientMiddleware<Ext1 & Ext2, RequiredCallOptionsExt> {\n  return <Request, Response>(\n    call: ClientMiddlewareCall<\n      Request,\n      Response,\n      Ext1 & Ext2 & RequiredCallOptionsExt\n    >,\n    options: CallOptions & Partial<Ext1 & Ext2 & RequiredCallOptionsExt>,\n  ) => {\n    return middleware2<Request, Response>(\n      {\n        ...call,\n        next: (request, options2) => {\n          return middleware1<Request, Response>(\n            {...call, request} as any,\n            options2,\n          ) as any;\n        },\n      },\n      options,\n    );\n  };\n}\n", "\"use strict\";\nexports.__esModule = undefined;\nexports.__esModule = true;\n\n// Misc helpers\n\nvar objectSetPrototypeOfIsDefined = typeof Object.setPrototypeOf === \"function\";\nvar objectGetPrototypeOfIsDefined = typeof Object.getPrototypeOf === \"function\";\nvar objectDefinePropertyIsDefined = typeof Object.defineProperty === \"function\";\nvar objectCreateIsDefined = typeof Object.create === \"function\";\nvar objectHasOwnPropertyIsDefined =\n  typeof Object.prototype.hasOwnProperty === \"function\";\n\nvar setPrototypeOf = function setPrototypeOf(target, prototype) {\n  if (objectSetPrototypeOfIsDefined) {\n    Object.setPrototypeOf(target, prototype);\n  } else {\n    target.__proto__ = prototype;\n  }\n};\nexports.setPrototypeOf = setPrototypeOf;\n\nvar getPrototypeOf = function getPrototypeOf(target) {\n  if (objectGetPrototypeOfIsDefined) {\n    return Object.getPrototypeOf(target);\n  } else {\n    return target.__proto__ || target.prototype;\n  }\n};\nexports.getPrototypeOf = getPrototypeOf;\n\n// Object.defineProperty exists in IE8, but the implementation is buggy, so we\n// need to test if the call fails, and, if so, set a flag to use the shim, as if\n// the function were not defined. When this error is caught the first time, the\n// function is called again recursively, after the flag is set, so the desired\n// effect is achieved anyway.\nvar ie8ObjectDefinePropertyBug = false;\nvar defineProperty = function defineProperty(target, name, propertyDescriptor) {\n  if (objectDefinePropertyIsDefined && !ie8ObjectDefinePropertyBug) {\n    try {\n      Object.defineProperty(target, name, propertyDescriptor);\n    } catch (e) {\n      ie8ObjectDefinePropertyBug = true;\n      defineProperty(target, name, propertyDescriptor);\n    }\n  } else {\n    target[name] = propertyDescriptor.value;\n  }\n};\nexports.defineProperty = defineProperty;\n\nvar hasOwnProperty = function hasOwnProperty(target, name) {\n  if (objectHasOwnPropertyIsDefined) {\n    return target.hasOwnProperty(target, name);\n  } else {\n    return target[name] === undefined;\n  }\n};\nexports.hasOwnProperty = hasOwnProperty;\n\nvar objectCreate = function objectCreate(prototype, propertyDescriptors) {\n  if (objectCreateIsDefined) {\n    return Object.create(prototype, propertyDescriptors);\n  } else {\n    var F = function F() {};\n    F.prototype = prototype;\n    var result = new F();\n    if (typeof propertyDescriptors === \"undefined\") {\n      return result;\n    }\n    if (typeof propertyDescriptors === \"null\") {\n      throw new Error(\"PropertyDescriptors must not be null.\");\n    }\n    if (typeof propertyDescriptors === \"object\") {\n      for (var key in propertyDescriptors) {\n        if (hasOwnProperty(propertyDescriptors, key)) {\n          result[key] = propertyDescriptors[key].value;\n        }\n      }\n    }\n\n    return result;\n  }\n};\nexports.objectCreate = objectCreate;\n", "\"use strict\";\nexports.__esModule = undefined;\nexports.__esModule = true;\n\nvar helpers = require(\"./helpers\");\nvar setPrototypeOf = helpers.setPrototypeOf;\nvar getPrototypeOf = helpers.getPrototypeOf;\nvar defineProperty = helpers.defineProperty;\nvar objectCreate = helpers.objectCreate;\n\n// Small test for IE6-8, which checks if the environment prints errors \"nicely\"\n// If not, a toString() method to be added to the error objects with formatting\n// like in more modern browsers\nvar uglyErrorPrinting = new Error().toString() === \"[object Error]\";\n\n// For compatibility\nvar extendableErrorName = \"\";\n\nfunction ExtendableError(message) {\n  // Get the constructor\n  var originalConstructor = this.constructor;\n  // Get the constructor name from the non-standard name property. If undefined\n  // (on old IEs), it uses the string representation of the function to extract\n  // the name. This should work in all cases, except for directly instantiated\n  // ExtendableError objects, for which the name of the ExtendableError class /\n  // function is used\n  var constructorName =\n    originalConstructor.name ||\n    (function () {\n      var constructorNameMatch = originalConstructor\n        .toString()\n        .match(/^function\\s*([^\\s(]+)/);\n      return constructorNameMatch === null\n        ? extendableErrorName\n          ? extendableErrorName\n          : \"Error\"\n        : constructorNameMatch[1];\n    })();\n  // If the constructor name is \"Error\", ...\n  var constructorNameIsError = constructorName === \"Error\";\n  // change it to the name of the ExtendableError class / function\n  var name = constructorNameIsError ? extendableErrorName : constructorName;\n\n  // Obtain a new Error instance. This also sets the message property already.\n  var instance = Error.apply(this, arguments);\n\n  // Set the prototype of this to the prototype of instance\n  setPrototypeOf(instance, getPrototypeOf(this));\n\n  // On old IEs, the instance will not extend our subclasses this way. The fix is to use this from the function call instead.\n  if (\n    !(instance instanceof originalConstructor) ||\n    !(instance instanceof ExtendableError)\n  ) {\n    var instance = this;\n    Error.apply(this, arguments);\n    defineProperty(instance, \"message\", {\n      configurable: true,\n      enumerable: false,\n      value: message,\n      writable: true,\n    });\n  }\n\n  // define the name property\n  defineProperty(instance, \"name\", {\n    configurable: true,\n    enumerable: false,\n    value: name,\n    writable: true,\n  });\n\n  // Use Error.captureStackTrace on V8 to capture the proper stack trace excluding any of our error classes\n  if (Error.captureStackTrace) {\n    // prettier-ignore\n    Error.captureStackTrace(\n      instance,\n      constructorNameIsError ? ExtendableError : originalConstructor\n    );\n  }\n  // instance.stack can still be undefined, in which case the best solution is to create a new Error object and get it from there\n  if (instance.stack === undefined) {\n    var err = new Error(message);\n    err.name = instance.name;\n    instance.stack = err.stack;\n  }\n\n  // If the environment does not have a proper string representation (IE), provide an alternative toString()\n  if (uglyErrorPrinting) {\n    defineProperty(instance, \"toString\", {\n      configurable: true,\n      enumerable: false,\n      value: function toString() {\n        return (\n          (this.name || \"Error\") +\n          (typeof this.message === \"undefined\" ? \"\" : \": \" + this.message)\n        );\n      },\n      writable: true,\n    });\n  }\n\n  // We're done!\n  return instance;\n}\n\n// Get the name of the ExtendableError function or use the string literal\nextendableErrorName = ExtendableError.name || \"ExtendableError\";\n\n// Set the prototype of ExtendableError to an Error object\nExtendableError.prototype = objectCreate(Error.prototype, {\n  constructor: {\n    value: Error,\n    enumerable: false,\n    writable: true,\n    configurable: true,\n  },\n});\n\n// Export\nexports.ExtendableError = ExtendableError;\nexports[\"default\"] = exports.ExtendableError;\n", "import {ExtendableError} from 'ts-error';\nimport {Status} from '../Status';\n\n/**\n * Represents gRPC errors returned from client calls.\n */\nexport class ClientError extends ExtendableError {\n  /**\n   * Path of the client call.\n   *\n   * Has format `/package.Service/Method`.\n   */\n  path: string;\n  /**\n   * Status code reported by the server.\n   */\n  code: Status;\n  /**\n   * Status message reported by the server.\n   */\n  details: string;\n\n  constructor(path: string, code: Status, details: string) {\n    super(`${path} ${Status[code]}: ${details}`);\n\n    this.path = path;\n    this.code = code;\n    this.details = details;\n\n    this.name = 'ClientError';\n    Object.defineProperty(this, '@@nice-grpc', {\n      value: true,\n    });\n    Object.defineProperty(this, '@@nice-grpc:ClientError', {\n      value: true,\n    });\n  }\n\n  static [Symbol.hasInstance](instance: any) {\n    // allow instances of ClientError from different versions of nice-grpc\n    // to work with `instanceof ClientError`\n\n    if (this !== ClientError) {\n      return this.prototype.isPrototypeOf(instance);\n    }\n\n    return (\n      typeof instance === 'object' &&\n      instance !== null &&\n      (instance.constructor === ClientError ||\n        instance['@@nice-grpc:ClientError'] === true ||\n        (instance.name === 'ClientError' && instance['@@nice-grpc'] === true))\n    );\n  }\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=CallContext.js.map", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=ServerMiddleware.js.map", "import {CallContext} from './CallContext';\nimport {ServerMiddleware, ServerMiddlewareCall} from './ServerMiddleware';\n\nexport function composeServerMiddleware<Ext1, Ext2, RequiredCallContextExt>(\n  middleware1: ServerMiddleware<Ext1, RequiredCallContextExt>,\n  middleware2: ServerMiddleware<Ext2, RequiredCallContextExt & Ext1>,\n): ServerMiddleware<Ext1 & Ext2, RequiredCallContextExt> {\n  return <Request, Response>(\n    call: ServerMiddlewareCall<\n      Request,\n      Response,\n      Ext1 & Ext2 & RequiredCallContextExt\n    >,\n    context: CallContext & RequiredCallContextExt,\n  ) => {\n    return middleware1<Request, Response>(\n      {\n        ...call,\n        next: (request, context1) => {\n          return middleware2<Request, Response>(\n            {...call, request} as any,\n            context1,\n          ) as any;\n        },\n      },\n      context,\n    );\n  };\n}\n", "import {ExtendableError} from 'ts-error';\nimport {Status} from '../Status';\n\n/**\n * Service implementations may throw this error to report gRPC errors to\n * clients.\n */\nexport class ServerError extends ExtendableError {\n  /**\n   * Status code to report to the client.\n   */\n  code: Status;\n  /**\n   * Status message to report to the client.\n   */\n  details: string;\n\n  constructor(code: Status, details: string) {\n    super(`${Status[code]}: ${details}`);\n\n    this.code = code;\n    this.details = details;\n\n    this.name = 'ServerError';\n    Object.defineProperty(this, '@@nice-grpc', {\n      value: true,\n    });\n    Object.defineProperty(this, '@@nice-grpc:ServerError', {\n      value: true,\n    });\n  }\n\n  static [Symbol.hasInstance](instance: any) {\n    // allow instances of ServerError from different versions of nice-grpc\n    // to work with `instanceof ServerError`\n\n    if (this !== ServerError) {\n      return this.prototype.isPrototypeOf(instance);\n    }\n\n    return (\n      typeof instance === 'object' &&\n      instance !== null &&\n      (instance.constructor === ServerError ||\n        instance['@@nice-grpc:ServerError'] === true ||\n        (instance.name === 'ServerError' && instance['@@nice-grpc'] === true))\n    );\n  }\n}\n", "export * from './Metadata';\nexport * from './Status';\nexport * from './MethodDescriptor';\n\nexport * from './client/CallOptions';\nexport * from './client/ClientMiddleware';\nexport * from './client/composeClientMiddleware';\nexport * from './client/ClientError';\n\nexport * from './server/CallContext';\nexport * from './server/ServerMiddleware';\nexport * from './server/composeServerMiddleware';\nexport * from './server/ServerError';\n", "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nexport enum Status {\n  OK = 0,\n  CANCELLED,\n  UNKNOWN,\n  INVALID_ARGUMENT,\n  DEADLINE_EXCEEDED,\n  NOT_FOUND,\n  ALREADY_EXISTS,\n  PERMISSION_DENIED,\n  RESOURCE_EXHAUSTED,\n  FAILED_PRECONDITION,\n  ABORTED,\n  OUT_OF_RANGE,\n  UNIMPLEMENTED,\n  INTERNAL,\n  UNAVAILABLE,\n  DATA_LOSS,\n  UNAUTHENTICATED,\n}\n\nexport enum LogVerbosity {\n  DEBUG = 0,\n  INFO,\n  ERROR,\n  NONE,\n}\n\n/**\n * NOTE: This enum is not currently used in any implemented API in this\n * library. It is included only for type parity with the other implementation.\n */\nexport enum Propagate {\n  DEADLINE = 1,\n  CENSUS_STATS_CONTEXT = 2,\n  CENSUS_TRACING_CONTEXT = 4,\n  CANCELLATION = 8,\n  // https://github.com/grpc/grpc/blob/master/include/grpc/impl/codegen/propagation_bits.h#L43\n  DEFAULTS = 0xffff |\n    Propagate.DEADLINE |\n    Propagate.CENSUS_STATS_CONTEXT |\n    Propagate.CENSUS_TRACING_CONTEXT |\n    Propagate.CANCELLATION,\n}\n\n// -1 means unlimited\nexport const DEFAULT_MAX_SEND_MESSAGE_LENGTH = -1;\n\n// 4 MB default\nexport const DEFAULT_MAX_RECEIVE_MESSAGE_LENGTH = 4 * 1024 * 1024;\n", "{\n  \"name\": \"@grpc/grpc-js\",\n  \"version\": \"1.14.3\",\n  \"description\": \"gRPC Library for Node - pure JS implementation\",\n  \"homepage\": \"https://grpc.io/\",\n  \"repository\": \"https://github.com/grpc/grpc-node/tree/master/packages/grpc-js\",\n  \"main\": \"build/src/index.js\",\n  \"engines\": {\n    \"node\": \">=12.10.0\"\n  },\n  \"keywords\": [],\n  \"author\": {\n    \"name\": \"Google Inc.\"\n  },\n  \"types\": \"build/src/index.d.ts\",\n  \"license\": \"Apache-2.0\",\n  \"devDependencies\": {\n    \"@grpc/proto-loader\": \"file:../proto-loader\",\n    \"@types/gulp\": \"^4.0.17\",\n    \"@types/gulp-mocha\": \"0.0.37\",\n    \"@types/lodash\": \"^4.14.202\",\n    \"@types/mocha\": \"^10.0.6\",\n    \"@types/ncp\": \"^2.0.8\",\n    \"@types/node\": \">=20.11.20\",\n    \"@types/pify\": \"^5.0.4\",\n    \"@types/semver\": \"^7.5.8\",\n    \"@typescript-eslint/eslint-plugin\": \"^7.1.0\",\n    \"@typescript-eslint/parser\": \"^7.1.0\",\n    \"@typescript-eslint/typescript-estree\": \"^7.1.0\",\n    \"clang-format\": \"^1.8.0\",\n    \"eslint\": \"^8.42.0\",\n    \"eslint-config-prettier\": \"^8.8.0\",\n    \"eslint-plugin-node\": \"^11.1.0\",\n    \"eslint-plugin-prettier\": \"^4.2.1\",\n    \"execa\": \"^2.0.3\",\n    \"gulp\": \"^4.0.2\",\n    \"gulp-mocha\": \"^6.0.0\",\n    \"lodash\": \"^4.17.21\",\n    \"madge\": \"^5.0.1\",\n    \"mocha-jenkins-reporter\": \"^0.4.1\",\n    \"ncp\": \"^2.0.0\",\n    \"pify\": \"^4.0.1\",\n    \"prettier\": \"^2.8.8\",\n    \"rimraf\": \"^3.0.2\",\n    \"semver\": \"^7.6.0\",\n    \"ts-node\": \"^10.9.2\",\n    \"typescript\": \"^5.3.3\"\n  },\n  \"contributors\": [\n    {\n      \"name\": \"Google Inc.\"\n    }\n  ],\n  \"scripts\": {\n    \"build\": \"npm run compile\",\n    \"clean\": \"rimraf ./build\",\n    \"compile\": \"tsc -p .\",\n    \"format\": \"clang-format -i -style=\\\"{Language: JavaScript, BasedOnStyle: Google, ColumnLimit: 80}\\\" src/*.ts test/*.ts\",\n    \"lint\": \"eslint src/*.ts test/*.ts\",\n    \"prepare\": \"npm run copy-protos && npm run generate-types && npm run generate-test-types && npm run compile\",\n    \"test\": \"gulp test\",\n    \"check\": \"npm run lint\",\n    \"fix\": \"eslint --fix src/*.ts test/*.ts\",\n    \"pretest\": \"npm run generate-types && npm run generate-test-types && npm run compile\",\n    \"posttest\": \"npm run check && madge -c ./build/src\",\n    \"generate-types\": \"proto-loader-gen-types --keepCase --longs String --enums String --defaults --oneofs --includeComments --includeDirs proto/ --include-dirs proto/ proto/xds/ proto/protoc-gen-validate/ -O src/generated/ --grpcLib ../index channelz.proto xds/service/orca/v3/orca.proto\",\n    \"generate-test-types\": \"proto-loader-gen-types --keepCase --longs String --enums String --defaults --oneofs --includeComments --include-dirs test/fixtures/ -O test/generated/ --grpcLib ../../src/index test_service.proto echo_service.proto\",\n    \"copy-protos\": \"node ./copy-protos\"\n  },\n  \"dependencies\": {\n    \"@grpc/proto-loader\": \"^0.8.0\",\n    \"@js-sdsl/ordered-map\": \"^4.4.2\"\n  },\n  \"files\": [\n    \"src/**/*.ts\",\n    \"build/src/**/*.{js,d.ts,js.map}\",\n    \"proto/**/*.proto\",\n    \"proto/**/LICENSE\",\n    \"LICENSE\",\n    \"deps/envoy-api/envoy/api/v2/**/*.proto\",\n    \"deps/envoy-api/envoy/config/**/*.proto\",\n    \"deps/envoy-api/envoy/service/**/*.proto\",\n    \"deps/envoy-api/envoy/type/**/*.proto\",\n    \"deps/udpa/udpa/**/*.proto\",\n    \"deps/googleapis/google/api/*.proto\",\n    \"deps/googleapis/google/rpc/*.proto\",\n    \"deps/protoc-gen-validate/validate/**/*.proto\"\n  ]\n}\n", "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { LogVerbosity } from './constants';\nimport { pid } from 'process';\n\nconst clientVersion = require('../../package.json').version;\n\nconst DEFAULT_LOGGER: Partial<Console> = {\n  error: (message?: any, ...optionalParams: any[]) => {\n    console.error('E ' + message, ...optionalParams);\n  },\n  info: (message?: any, ...optionalParams: any[]) => {\n    console.error('I ' + message, ...optionalParams);\n  },\n  debug: (message?: any, ...optionalParams: any[]) => {\n    console.error('D ' + message, ...optionalParams);\n  },\n};\n\nlet _logger: Partial<Console> = DEFAULT_LOGGER;\nlet _logVerbosity: LogVerbosity = LogVerbosity.ERROR;\n\nconst verbosityString =\n  process.env.GRPC_NODE_VERBOSITY ?? process.env.GRPC_VERBOSITY ?? '';\n\nswitch (verbosityString.toUpperCase()) {\n  case 'DEBUG':\n    _logVerbosity = LogVerbosity.DEBUG;\n    break;\n  case 'INFO':\n    _logVerbosity = LogVerbosity.INFO;\n    break;\n  case 'ERROR':\n    _logVerbosity = LogVerbosity.ERROR;\n    break;\n  case 'NONE':\n    _logVerbosity = LogVerbosity.NONE;\n    break;\n  default:\n  // Ignore any other values\n}\n\nexport const getLogger = (): Partial<Console> => {\n  return _logger;\n};\n\nexport const setLogger = (logger: Partial<Console>): void => {\n  _logger = logger;\n};\n\nexport const setLoggerVerbosity = (verbosity: LogVerbosity): void => {\n  _logVerbosity = verbosity;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const log = (severity: LogVerbosity, ...args: any[]): void => {\n  let logFunction: typeof DEFAULT_LOGGER.error;\n  if (severity >= _logVerbosity) {\n    switch (severity) {\n      case LogVerbosity.DEBUG:\n        logFunction = _logger.debug;\n        break;\n      case LogVerbosity.INFO:\n        logFunction = _logger.info;\n        break;\n      case LogVerbosity.ERROR:\n        logFunction = _logger.error;\n        break;\n    }\n    /* Fall back to _logger.error when other methods are not available for\n     * compatiblity with older behavior that always logged to _logger.error */\n    if (!logFunction) {\n      logFunction = _logger.error;\n    }\n    if (logFunction) {\n      logFunction.bind(_logger)(...args);\n    }\n  }\n};\n\nconst tracersString =\n  process.env.GRPC_NODE_TRACE ?? process.env.GRPC_TRACE ?? '';\nconst enabledTracers = new Set<string>();\nconst disabledTracers = new Set<string>();\nfor (const tracerName of tracersString.split(',')) {\n  if (tracerName.startsWith('-')) {\n    disabledTracers.add(tracerName.substring(1));\n  } else {\n    enabledTracers.add(tracerName);\n  }\n}\nconst allEnabled = enabledTracers.has('all');\n\nexport function trace(\n  severity: LogVerbosity,\n  tracer: string,\n  text: string\n): void {\n  if (isTracerEnabled(tracer)) {\n    log(\n      severity,\n      new Date().toISOString() +\n        ' | v' +\n        clientVersion +\n        ' ' +\n        pid +\n        ' | ' +\n        tracer +\n        ' | ' +\n        text\n    );\n  }\n}\n\nexport function isTracerEnabled(tracer: string): boolean {\n  return (\n    !disabledTracers.has(tracer) && (allEnabled || enabledTracers.has(tracer))\n  );\n}\n", "/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nexport function getErrorMessage(error: unknown): string {\n  if (error instanceof Error) {\n    return error.message;\n  } else {\n    return String(error);\n  }\n}\n\nexport function getErrorCode(error: unknown): number | null {\n  if (\n    typeof error === 'object' &&\n    error !== null &&\n    'code' in error &&\n    typeof (error as Record<string, unknown>).code === 'number'\n  ) {\n    return (error as Record<string, number>).code;\n  } else {\n    return null;\n  }\n}\n", "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport * as http2 from 'http2';\nimport { log } from './logging';\nimport { LogVerbosity } from './constants';\nimport { getErrorMessage } from './error';\nconst LEGAL_KEY_REGEX = /^[:0-9a-z_.-]+$/;\nconst LEGAL_NON_BINARY_VALUE_REGEX = /^[ -~]*$/;\n\nexport type MetadataValue = string | Buffer;\nexport type MetadataObject = Map<string, MetadataValue[]>;\n\nfunction isLegalKey(key: string): boolean {\n  return LEGAL_KEY_REGEX.test(key);\n}\n\nfunction isLegalNonBinaryValue(value: string): boolean {\n  return LEGAL_NON_BINARY_VALUE_REGEX.test(value);\n}\n\nfunction isBinaryKey(key: string): boolean {\n  return key.endsWith('-bin');\n}\n\nfunction isCustomMetadata(key: string): boolean {\n  return !key.startsWith('grpc-');\n}\n\nfunction normalizeKey(key: string): string {\n  return key.toLowerCase();\n}\n\nfunction validate(key: string, value?: MetadataValue): void {\n  if (!isLegalKey(key)) {\n    throw new Error('Metadata key \"' + key + '\" contains illegal characters');\n  }\n\n  if (value !== null && value !== undefined) {\n    if (isBinaryKey(key)) {\n      if (!Buffer.isBuffer(value)) {\n        throw new Error(\"keys that end with '-bin' must have Buffer values\");\n      }\n    } else {\n      if (Buffer.isBuffer(value)) {\n        throw new Error(\n          \"keys that don't end with '-bin' must have String values\"\n        );\n      }\n      if (!isLegalNonBinaryValue(value)) {\n        throw new Error(\n          'Metadata string value \"' + value + '\" contains illegal characters'\n        );\n      }\n    }\n  }\n}\n\nexport interface MetadataOptions {\n  /* Signal that the request is idempotent. Defaults to false */\n  idempotentRequest?: boolean;\n  /* Signal that the call should not return UNAVAILABLE before it has\n   * started. Defaults to false. */\n  waitForReady?: boolean;\n  /* Signal that the call is cacheable. GRPC is free to use GET verb.\n   * Defaults to false */\n  cacheableRequest?: boolean;\n  /* Signal that the initial metadata should be corked. Defaults to false. */\n  corked?: boolean;\n}\n\n/**\n * A class for storing metadata. Keys are normalized to lowercase ASCII.\n */\nexport class Metadata {\n  protected internalRepr: MetadataObject = new Map<string, MetadataValue[]>();\n  private options: MetadataOptions;\n  private opaqueData: Map<string, unknown> = new Map();\n\n  constructor(options: MetadataOptions = {}) {\n    this.options = options;\n  }\n\n  /**\n   * Sets the given value for the given key by replacing any other values\n   * associated with that key. Normalizes the key.\n   * @param key The key to whose value should be set.\n   * @param value The value to set. Must be a buffer if and only\n   *   if the normalized key ends with '-bin'.\n   */\n  set(key: string, value: MetadataValue): void {\n    key = normalizeKey(key);\n    validate(key, value);\n    this.internalRepr.set(key, [value]);\n  }\n\n  /**\n   * Adds the given value for the given key by appending to a list of previous\n   * values associated with that key. Normalizes the key.\n   * @param key The key for which a new value should be appended.\n   * @param value The value to add. Must be a buffer if and only\n   *   if the normalized key ends with '-bin'.\n   */\n  add(key: string, value: MetadataValue): void {\n    key = normalizeKey(key);\n    validate(key, value);\n\n    const existingValue: MetadataValue[] | undefined =\n      this.internalRepr.get(key);\n\n    if (existingValue === undefined) {\n      this.internalRepr.set(key, [value]);\n    } else {\n      existingValue.push(value);\n    }\n  }\n\n  /**\n   * Removes the given key and any associated values. Normalizes the key.\n   * @param key The key whose values should be removed.\n   */\n  remove(key: string): void {\n    key = normalizeKey(key);\n    // validate(key);\n    this.internalRepr.delete(key);\n  }\n\n  /**\n   * Gets a list of all values associated with the key. Normalizes the key.\n   * @param key The key whose value should be retrieved.\n   * @return A list of values associated with the given key.\n   */\n  get(key: string): MetadataValue[] {\n    key = normalizeKey(key);\n    // validate(key);\n    return this.internalRepr.get(key) || [];\n  }\n\n  /**\n   * Gets a plain object mapping each key to the first value associated with it.\n   * This reflects the most common way that people will want to see metadata.\n   * @return A key/value mapping of the metadata.\n   */\n  getMap(): { [key: string]: MetadataValue } {\n    const result: { [key: string]: MetadataValue } = {};\n\n    for (const [key, values] of this.internalRepr) {\n      if (values.length > 0) {\n        const v = values[0];\n        result[key] = Buffer.isBuffer(v) ? Buffer.from(v) : v;\n      }\n    }\n    return result;\n  }\n\n  /**\n   * Clones the metadata object.\n   * @return The newly cloned object.\n   */\n  clone(): Metadata {\n    const newMetadata = new Metadata(this.options);\n    const newInternalRepr = newMetadata.internalRepr;\n\n    for (const [key, value] of this.internalRepr) {\n      const clonedValue: MetadataValue[] = value.map(v => {\n        if (Buffer.isBuffer(v)) {\n          return Buffer.from(v);\n        } else {\n          return v;\n        }\n      });\n\n      newInternalRepr.set(key, clonedValue);\n    }\n\n    return newMetadata;\n  }\n\n  /**\n   * Merges all key-value pairs from a given Metadata object into this one.\n   * If both this object and the given object have values in the same key,\n   * values from the other Metadata object will be appended to this object's\n   * values.\n   * @param other A Metadata object.\n   */\n  merge(other: Metadata): void {\n    for (const [key, values] of other.internalRepr) {\n      const mergedValue: MetadataValue[] = (\n        this.internalRepr.get(key) || []\n      ).concat(values);\n\n      this.internalRepr.set(key, mergedValue);\n    }\n  }\n\n  setOptions(options: MetadataOptions) {\n    this.options = options;\n  }\n\n  getOptions(): MetadataOptions {\n    return this.options;\n  }\n\n  /**\n   * Creates an OutgoingHttpHeaders object that can be used with the http2 API.\n   */\n  toHttp2Headers(): http2.OutgoingHttpHeaders {\n    // NOTE: Node <8.9 formats http2 headers incorrectly.\n    const result: http2.OutgoingHttpHeaders = {};\n\n    for (const [key, values] of this.internalRepr) {\n      if (key.startsWith(':')) {\n        continue;\n      }\n      // We assume that the user's interaction with this object is limited to\n      // through its public API (i.e. keys and values are already validated).\n      result[key] = values.map(bufToString);\n    }\n\n    return result;\n  }\n\n  /**\n   * This modifies the behavior of JSON.stringify to show an object\n   * representation of the metadata map.\n   */\n  toJSON() {\n    const result: { [key: string]: MetadataValue[] } = {};\n    for (const [key, values] of this.internalRepr) {\n      result[key] = values;\n    }\n    return result;\n  }\n\n  /**\n   * Attach additional data of any type to the metadata object, which will not\n   * be included when sending headers. The data can later be retrieved with\n   * `getOpaque`. Keys with the prefix `grpc` are reserved for use by this\n   * library.\n   * @param key\n   * @param value\n   */\n  setOpaque(key: string, value: unknown) {\n    this.opaqueData.set(key, value);\n  }\n\n  /**\n   * Retrieve data previously added with `setOpaque`.\n   * @param key\n   * @returns\n   */\n  getOpaque(key: string) {\n    return this.opaqueData.get(key);\n  }\n\n  /**\n   * Returns a new Metadata object based fields in a given IncomingHttpHeaders\n   * object.\n   * @param headers An IncomingHttpHeaders object.\n   */\n  static fromHttp2Headers(headers: http2.IncomingHttpHeaders): Metadata {\n    const result = new Metadata();\n    for (const key of Object.keys(headers)) {\n      // Reserved headers (beginning with `:`) are not valid keys.\n      if (key.charAt(0) === ':') {\n        continue;\n      }\n\n      const values = headers[key];\n\n      try {\n        if (isBinaryKey(key)) {\n          if (Array.isArray(values)) {\n            values.forEach(value => {\n              result.add(key, Buffer.from(value, 'base64'));\n            });\n          } else if (values !== undefined) {\n            if (isCustomMetadata(key)) {\n              values.split(',').forEach(v => {\n                result.add(key, Buffer.from(v.trim(), 'base64'));\n              });\n            } else {\n              result.add(key, Buffer.from(values, 'base64'));\n            }\n          }\n        } else {\n          if (Array.isArray(values)) {\n            values.forEach(value => {\n              result.add(key, value);\n            });\n          } else if (values !== undefined) {\n            result.add(key, values);\n          }\n        }\n      } catch (error) {\n        const message = `Failed to add metadata entry ${key}: ${values}. ${getErrorMessage(\n          error\n        )}. For more information see https://github.com/grpc/grpc-node/issues/1173`;\n        log(LogVerbosity.ERROR, message);\n      }\n    }\n\n    return result;\n  }\n}\n\nconst bufToString = (val: string | Buffer): string => {\n  return Buffer.isBuffer(val) ? val.toString('base64') : val;\n};\n", "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { Metadata } from './metadata';\n\nexport interface CallMetadataOptions {\n  method_name: string;\n  service_url: string;\n}\n\nexport type CallMetadataGenerator = (\n  options: CallMetadataOptions,\n  cb: (err: Error | null, metadata?: Metadata) => void\n) => void;\n\n// google-auth-library pre-v2.0.0 does not have getRequestHeaders\n// but has getRequestMetadata, which is deprecated in v2.0.0\nexport interface OldOAuth2Client {\n  getRequestMetadata: (\n    url: string,\n    callback: (\n      err: Error | null,\n      headers?: {\n        [index: string]: string;\n      }\n    ) => void\n  ) => void;\n}\n\nexport interface CurrentOAuth2Client {\n  getRequestHeaders: (url?: string) => Promise<{ [index: string]: string }>;\n}\n\nexport type OAuth2Client = OldOAuth2Client | CurrentOAuth2Client;\n\nfunction isCurrentOauth2Client(\n  client: OAuth2Client\n): client is CurrentOAuth2Client {\n  return (\n    'getRequestHeaders' in client &&\n    typeof client.getRequestHeaders === 'function'\n  );\n}\n\n/**\n * A class that represents a generic method of adding authentication-related\n * metadata on a per-request basis.\n */\nexport abstract class CallCredentials {\n  /**\n   * Asynchronously generates a new Metadata object.\n   * @param options Options used in generating the Metadata object.\n   */\n  abstract generateMetadata(options: CallMetadataOptions): Promise<Metadata>;\n  /**\n   * Creates a new CallCredentials object from properties of both this and\n   * another CallCredentials object. This object's metadata generator will be\n   * called first.\n   * @param callCredentials The other CallCredentials object.\n   */\n  abstract compose(callCredentials: CallCredentials): CallCredentials;\n\n  /**\n   * Check whether two call credentials objects are equal. Separate\n   * SingleCallCredentials with identical metadata generator functions are\n   * equal.\n   * @param other The other CallCredentials object to compare with.\n   */\n  abstract _equals(other: CallCredentials): boolean;\n\n  /**\n   * Creates a new CallCredentials object from a given function that generates\n   * Metadata objects.\n   * @param metadataGenerator A function that accepts a set of options, and\n   * generates a Metadata object based on these options, which is passed back\n   * to the caller via a supplied (err, metadata) callback.\n   */\n  static createFromMetadataGenerator(\n    metadataGenerator: CallMetadataGenerator\n  ): CallCredentials {\n    return new SingleCallCredentials(metadataGenerator);\n  }\n\n  /**\n   * Create a gRPC credential from a Google credential object.\n   * @param googleCredentials The authentication client to use.\n   * @return The resulting CallCredentials object.\n   */\n  static createFromGoogleCredential(\n    googleCredentials: OAuth2Client\n  ): CallCredentials {\n    return CallCredentials.createFromMetadataGenerator((options, callback) => {\n      let getHeaders: Promise<{ [index: string]: string }>;\n      if (isCurrentOauth2Client(googleCredentials)) {\n        getHeaders = googleCredentials.getRequestHeaders(options.service_url);\n      } else {\n        getHeaders = new Promise((resolve, reject) => {\n          googleCredentials.getRequestMetadata(\n            options.service_url,\n            (err, headers) => {\n              if (err) {\n                reject(err);\n                return;\n              }\n              if (!headers) {\n                reject(new Error('Headers not set by metadata plugin'));\n                return;\n              }\n              resolve(headers);\n            }\n          );\n        });\n      }\n      getHeaders.then(\n        headers => {\n          const metadata = new Metadata();\n          for (const key of Object.keys(headers)) {\n            metadata.add(key, headers[key]);\n          }\n          callback(null, metadata);\n        },\n        err => {\n          callback(err);\n        }\n      );\n    });\n  }\n\n  static createEmpty(): CallCredentials {\n    return new EmptyCallCredentials();\n  }\n}\n\nclass ComposedCallCredentials extends CallCredentials {\n  constructor(private creds: CallCredentials[]) {\n    super();\n  }\n\n  async generateMetadata(options: CallMetadataOptions): Promise<Metadata> {\n    const base: Metadata = new Metadata();\n    const generated: Metadata[] = await Promise.all(\n      this.creds.map(cred => cred.generateMetadata(options))\n    );\n    for (const gen of generated) {\n      base.merge(gen);\n    }\n    return base;\n  }\n\n  compose(other: CallCredentials): CallCredentials {\n    return new ComposedCallCredentials(this.creds.concat([other]));\n  }\n\n  _equals(other: CallCredentials): boolean {\n    if (this === other) {\n      return true;\n    }\n    if (other instanceof ComposedCallCredentials) {\n      return this.creds.every((value, index) =>\n        value._equals(other.creds[index])\n      );\n    } else {\n      return false;\n    }\n  }\n}\n\nclass SingleCallCredentials extends CallCredentials {\n  constructor(private metadataGenerator: CallMetadataGenerator) {\n    super();\n  }\n\n  generateMetadata(options: CallMetadataOptions): Promise<Metadata> {\n    return new Promise<Metadata>((resolve, reject) => {\n      this.metadataGenerator(options, (err, metadata) => {\n        if (metadata !== undefined) {\n          resolve(metadata);\n        } else {\n          reject(err);\n        }\n      });\n    });\n  }\n\n  compose(other: CallCredentials): CallCredentials {\n    return new ComposedCallCredentials([this, other]);\n  }\n\n  _equals(other: CallCredentials): boolean {\n    if (this === other) {\n      return true;\n    }\n    if (other instanceof SingleCallCredentials) {\n      return this.metadataGenerator === other.metadataGenerator;\n    } else {\n      return false;\n    }\n  }\n}\n\nclass EmptyCallCredentials extends CallCredentials {\n  generateMetadata(options: CallMetadataOptions): Promise<Metadata> {\n    return Promise.resolve(new Metadata());\n  }\n\n  compose(other: CallCredentials): CallCredentials {\n    return other;\n  }\n\n  _equals(other: CallCredentials): boolean {\n    return other instanceof EmptyCallCredentials;\n  }\n}\n", "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport * as fs from 'fs';\n\nexport const CIPHER_SUITES: string | undefined =\n  process.env.GRPC_SSL_CIPHER_SUITES;\n\nconst DEFAULT_ROOTS_FILE_PATH = process.env.GRPC_DEFAULT_SSL_ROOTS_FILE_PATH;\n\nlet defaultRootsData: Buffer | null = null;\n\nexport function getDefaultRootsData(): Buffer | null {\n  if (DEFAULT_ROOTS_FILE_PATH) {\n    if (defaultRootsData === null) {\n      defaultRootsData = fs.readFileSync(DEFAULT_ROOTS_FILE_PATH);\n    }\n    return defaultRootsData;\n  }\n  return null;\n}\n", "/*\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nexport interface GrpcUri {\n  scheme?: string;\n  authority?: string;\n  path: string;\n}\n\n/*\n * The groups correspond to URI parts as follows:\n * 1. scheme\n * 2. authority\n * 3. path\n */\nconst URI_REGEX = /^(?:([A-Za-z0-9+.-]+):)?(?:\\/\\/([^/]*)\\/)?(.+)$/;\n\nexport function parseUri(uriString: string): GrpcUri | null {\n  const parsedUri = URI_REGEX.exec(uriString);\n  if (parsedUri === null) {\n    return null;\n  }\n  return {\n    scheme: parsedUri[1],\n    authority: parsedUri[2],\n    path: parsedUri[3],\n  };\n}\n\nexport interface HostPort {\n  host: string;\n  port?: number;\n}\n\nconst NUMBER_REGEX = /^\\d+$/;\n\nexport function splitHostPort(path: string): HostPort | null {\n  if (path.startsWith('[')) {\n    const hostEnd = path.indexOf(']');\n    if (hostEnd === -1) {\n      return null;\n    }\n    const host = path.substring(1, hostEnd);\n    /* Only an IPv6 address should be in bracketed notation, and an IPv6\n     * address should have at least one colon */\n    if (host.indexOf(':') === -1) {\n      return null;\n    }\n    if (path.length > hostEnd + 1) {\n      if (path[hostEnd + 1] === ':') {\n        const portString = path.substring(hostEnd + 2);\n        if (NUMBER_REGEX.test(portString)) {\n          return {\n            host: host,\n            port: +portString,\n          };\n        } else {\n          return null;\n        }\n      } else {\n        return null;\n      }\n    } else {\n      return {\n        host,\n      };\n    }\n  } else {\n    const splitPath = path.split(':');\n    /* Exactly one colon means that this is host:port. Zero colons means that\n     * there is no port. And multiple colons means that this is a bare IPv6\n     * address with no port */\n    if (splitPath.length === 2) {\n      if (NUMBER_REGEX.test(splitPath[1])) {\n        return {\n          host: splitPath[0],\n          port: +splitPath[1],\n        };\n      } else {\n        return null;\n      }\n    } else {\n      return {\n        host: path,\n      };\n    }\n  }\n}\n\nexport function combineHostPort(hostPort: HostPort): string {\n  if (hostPort.port === undefined) {\n    return hostPort.host;\n  } else {\n    // Only an IPv6 host should include a colon\n    if (hostPort.host.includes(':')) {\n      return `[${hostPort.host}]:${hostPort.port}`;\n    } else {\n      return `${hostPort.host}:${hostPort.port}`;\n    }\n  }\n}\n\nexport function uriToString(uri: GrpcUri): string {\n  let result = '';\n  if (uri.scheme !== undefined) {\n    result += uri.scheme + ':';\n  }\n  if (uri.authority !== undefined) {\n    result += '//' + uri.authority + '/';\n  }\n  result += uri.path;\n  return result;\n}\n", "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { MethodConfig, ServiceConfig } from './service-config';\nimport { StatusOr } from './call-interface';\nimport { Endpoint } from './subchannel-address';\nimport { GrpcUri, uriToString } from './uri-parser';\nimport { ChannelOptions } from './channel-options';\nimport { Metadata } from './metadata';\nimport { Status } from './constants';\nimport { Filter, FilterFactory } from './filter';\n\nexport const CHANNEL_ARGS_CONFIG_SELECTOR_KEY = 'grpc.internal.config_selector';\n\nexport interface CallConfig {\n  methodConfig: MethodConfig;\n  onCommitted?: () => void;\n  pickInformation: { [key: string]: string };\n  status: Status;\n  dynamicFilterFactories: FilterFactory<Filter>[];\n}\n\n/**\n * Selects a configuration for a method given the name and metadata. Defined in\n * https://github.com/grpc/proposal/blob/master/A31-xds-timeout-support-and-config-selector.md#new-functionality-in-grpc\n */\nexport interface ConfigSelector {\n  invoke(methodName: string, metadata: Metadata, channelId: number): CallConfig;\n  unref(): void;\n}\n\nexport interface ResolverListener {\n  /**\n   * Called whenever the resolver has new name resolution results or an error to\n   * report.\n   * @param endpointList The list of endpoints, or an error if resolution failed\n   * @param attributes Arbitrary key/value pairs to pass along to load balancing\n   *     policies\n   * @param serviceConfig The service service config for the endpoint list, or an\n   *     error if the retrieved service config is invalid, or null if there is no\n   *     service config\n   * @param resolutionNote Provides additional context to RPC failure status\n   *     messages generated by the load balancing policy.\n   * @returns Whether or not the load balancing policy accepted the result.\n   */\n  (\n    endpointList: StatusOr<Endpoint[]>,\n    attributes: { [key: string]: unknown },\n    serviceConfig: StatusOr<ServiceConfig> | null,\n    resolutionNote: string\n  ): boolean;\n}\n/**\n * A resolver class that handles one or more of the name syntax schemes defined\n * in the [gRPC Name Resolution document](https://github.com/grpc/grpc/blob/master/doc/naming.md)\n */\nexport interface Resolver {\n  /**\n   * Indicates that the caller wants new name resolution data. Calling this\n   * function may eventually result in calling one of the `ResolverListener`\n   * functions, but that is not guaranteed. Those functions will never be\n   * called synchronously with the constructor or updateResolution.\n   */\n  updateResolution(): void;\n\n  /**\n   * Discard all resources owned by the resolver. A later call to\n   * `updateResolution` should reinitialize those resources.  No\n   * `ResolverListener` callbacks should be called after `destroy` is called\n   * until `updateResolution` is called again.\n   */\n  destroy(): void;\n}\n\nexport interface ResolverConstructor {\n  new (\n    target: GrpcUri,\n    listener: ResolverListener,\n    channelOptions: ChannelOptions\n  ): Resolver;\n  /**\n   * Get the default authority for a target. This loosely corresponds to that\n   * target's hostname. Throws an error if this resolver class cannot parse the\n   * `target`.\n   * @param target\n   */\n  getDefaultAuthority(target: GrpcUri): string;\n}\n\nconst registeredResolvers: { [scheme: string]: ResolverConstructor } = {};\nlet defaultScheme: string | null = null;\n\n/**\n * Register a resolver class to handle target names prefixed with the `prefix`\n * string. This prefix should correspond to a URI scheme name listed in the\n * [gRPC Name Resolution document](https://github.com/grpc/grpc/blob/master/doc/naming.md)\n * @param prefix\n * @param resolverClass\n */\nexport function registerResolver(\n  scheme: string,\n  resolverClass: ResolverConstructor\n) {\n  registeredResolvers[scheme] = resolverClass;\n}\n\n/**\n * Register a default resolver to handle target names that do not start with\n * any registered prefix.\n * @param resolverClass\n */\nexport function registerDefaultScheme(scheme: string) {\n  defaultScheme = scheme;\n}\n\n/**\n * Create a name resolver for the specified target, if possible. Throws an\n * error if no such name resolver can be created.\n * @param target\n * @param listener\n */\nexport function createResolver(\n  target: GrpcUri,\n  listener: ResolverListener,\n  options: ChannelOptions\n): Resolver {\n  if (target.scheme !== undefined && target.scheme in registeredResolvers) {\n    return new registeredResolvers[target.scheme](target, listener, options);\n  } else {\n    throw new Error(\n      `No resolver could be created for target ${uriToString(target)}`\n    );\n  }\n}\n\n/**\n * Get the default authority for the specified target, if possible. Throws an\n * error if no registered name resolver can parse that target string.\n * @param target\n */\nexport function getDefaultAuthority(target: GrpcUri): string {\n  if (target.scheme !== undefined && target.scheme in registeredResolvers) {\n    return registeredResolvers[target.scheme].getDefaultAuthority(target);\n  } else {\n    throw new Error(`Invalid target ${uriToString(target)}`);\n  }\n}\n\nexport function mapUriDefaultScheme(target: GrpcUri): GrpcUri | null {\n  if (target.scheme === undefined || !(target.scheme in registeredResolvers)) {\n    if (defaultScheme !== null) {\n      return {\n        scheme: defaultScheme,\n        authority: undefined,\n        path: uriToString(target),\n      };\n    } else {\n      return null;\n    }\n  }\n  return target;\n}\n", "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport {\n  ConnectionOptions,\n  createSecureContext,\n  PeerCertificate,\n  SecureContext,\n  checkServerIdentity,\n  connect as tlsConnect\n} from 'tls';\n\nimport { CallCredentials } from './call-credentials';\nimport { CIPHER_SUITES, getDefaultRootsData } from './tls-helpers';\nimport { CaCertificateUpdate, CaCertificateUpdateListener, CertificateProvider, IdentityCertificateUpdate, IdentityCertificateUpdateListener } from './certificate-provider';\nimport { Socket } from 'net';\nimport { ChannelOptions } from './channel-options';\nimport { GrpcUri, parseUri, splitHostPort } from './uri-parser';\nimport { getDefaultAuthority } from './resolver';\nimport { log } from './logging';\nimport { LogVerbosity } from './constants';\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction verifyIsBufferOrNull(obj: any, friendlyName: string): void {\n  if (obj && !(obj instanceof Buffer)) {\n    throw new TypeError(`${friendlyName}, if provided, must be a Buffer.`);\n  }\n}\n\n/**\n * A callback that will receive the expected hostname and presented peer\n * certificate as parameters. The callback should return an error to\n * indicate that the presented certificate is considered invalid and\n * otherwise returned undefined.\n */\nexport type CheckServerIdentityCallback = (\n  hostname: string,\n  cert: PeerCertificate\n) => Error | undefined;\n\n/**\n * Additional peer verification options that can be set when creating\n * SSL credentials.\n */\nexport interface VerifyOptions {\n  /**\n   * If set, this callback will be invoked after the usual hostname verification\n   * has been performed on the peer certificate.\n   */\n  checkServerIdentity?: CheckServerIdentityCallback;\n  rejectUnauthorized?: boolean;\n}\n\nexport interface SecureConnectResult {\n  socket: Socket;\n  secure: boolean;\n}\n\nexport interface SecureConnector {\n  connect(socket: Socket): Promise<SecureConnectResult>;\n  waitForReady(): Promise<void>;\n  getCallCredentials(): CallCredentials;\n  destroy(): void;\n}\n\n/**\n * A class that contains credentials for communicating over a channel, as well\n * as a set of per-call credentials, which are applied to every method call made\n * over a channel initialized with an instance of this class.\n */\nexport abstract class ChannelCredentials {\n  /**\n   * Returns a copy of this object with the included set of per-call credentials\n   * expanded to include callCredentials.\n   * @param callCredentials A CallCredentials object to associate with this\n   * instance.\n   */\n  compose(callCredentials: CallCredentials): ChannelCredentials {\n    return new ComposedChannelCredentialsImpl(this, callCredentials);\n  }\n\n  /**\n   * Indicates whether this credentials object creates a secure channel.\n   */\n  abstract _isSecure(): boolean;\n\n  /**\n   * Check whether two channel credentials objects are equal. Two secure\n   * credentials are equal if they were constructed with the same parameters.\n   * @param other The other ChannelCredentials Object\n   */\n  abstract _equals(other: ChannelCredentials): boolean;\n\n  abstract _createSecureConnector(channelTarget: GrpcUri, options: ChannelOptions, callCredentials?: CallCredentials): SecureConnector;\n\n  /**\n   * Return a new ChannelCredentials instance with a given set of credentials.\n   * The resulting instance can be used to construct a Channel that communicates\n   * over TLS.\n   * @param rootCerts The root certificate data.\n   * @param privateKey The client certificate private key, if available.\n   * @param certChain The client certificate key chain, if available.\n   * @param verifyOptions Additional options to modify certificate verification\n   */\n  static createSsl(\n    rootCerts?: Buffer | null,\n    privateKey?: Buffer | null,\n    certChain?: Buffer | null,\n    verifyOptions?: VerifyOptions\n  ): ChannelCredentials {\n    verifyIsBufferOrNull(rootCerts, 'Root certificate');\n    verifyIsBufferOrNull(privateKey, 'Private key');\n    verifyIsBufferOrNull(certChain, 'Certificate chain');\n    if (privateKey && !certChain) {\n      throw new Error(\n        'Private key must be given with accompanying certificate chain'\n      );\n    }\n    if (!privateKey && certChain) {\n      throw new Error(\n        'Certificate chain must be given with accompanying private key'\n      );\n    }\n    const secureContext = createSecureContext({\n      ca: rootCerts ?? getDefaultRootsData() ?? undefined,\n      key: privateKey ?? undefined,\n      cert: certChain ?? undefined,\n      ciphers: CIPHER_SUITES,\n    });\n    return new SecureChannelCredentialsImpl(secureContext, verifyOptions ?? {});\n  }\n\n  /**\n   * Return a new ChannelCredentials instance with credentials created using\n   * the provided secureContext. The resulting instances can be used to\n   * construct a Channel that communicates over TLS. gRPC will not override\n   * anything in the provided secureContext, so the environment variables\n   * GRPC_SSL_CIPHER_SUITES and GRPC_DEFAULT_SSL_ROOTS_FILE_PATH will\n   * not be applied.\n   * @param secureContext The return value of tls.createSecureContext()\n   * @param verifyOptions Additional options to modify certificate verification\n   */\n  static createFromSecureContext(\n    secureContext: SecureContext,\n    verifyOptions?: VerifyOptions\n  ): ChannelCredentials {\n    return new SecureChannelCredentialsImpl(secureContext, verifyOptions ?? {});\n  }\n\n  /**\n   * Return a new ChannelCredentials instance with no credentials.\n   */\n  static createInsecure(): ChannelCredentials {\n    return new InsecureChannelCredentialsImpl();\n  }\n}\n\nclass InsecureChannelCredentialsImpl extends ChannelCredentials {\n  constructor() {\n    super();\n  }\n\n  override compose(callCredentials: CallCredentials): never {\n    throw new Error('Cannot compose insecure credentials');\n  }\n  _isSecure(): boolean {\n    return false;\n  }\n  _equals(other: ChannelCredentials): boolean {\n    return other instanceof InsecureChannelCredentialsImpl;\n  }\n  _createSecureConnector(channelTarget: GrpcUri, options: ChannelOptions, callCredentials?: CallCredentials): SecureConnector {\n    return {\n      connect(socket) {\n        return Promise.resolve({\n          socket,\n          secure: false\n        });\n      },\n      waitForReady: () => {\n        return Promise.resolve();\n      },\n      getCallCredentials: () => {\n        return callCredentials ?? CallCredentials.createEmpty();\n      },\n      destroy() {}\n    }\n  }\n}\n\nfunction getConnectionOptions(secureContext: SecureContext, verifyOptions: VerifyOptions, channelTarget: GrpcUri, options: ChannelOptions): ConnectionOptions {\n  const connectionOptions: ConnectionOptions = {\n    secureContext: secureContext\n  };\n  let realTarget: GrpcUri = channelTarget;\n  if ('grpc.http_connect_target' in options) {\n    const parsedTarget = parseUri(options['grpc.http_connect_target']!);\n    if (parsedTarget) {\n      realTarget = parsedTarget;\n    }\n  }\n  const targetPath = getDefaultAuthority(realTarget);\n  const hostPort = splitHostPort(targetPath);\n  const remoteHost = hostPort?.host ?? targetPath;\n  connectionOptions.host = remoteHost;\n\n  if (verifyOptions.checkServerIdentity) {\n    connectionOptions.checkServerIdentity = verifyOptions.checkServerIdentity;\n  }\n  if (verifyOptions.rejectUnauthorized !== undefined) {\n    connectionOptions.rejectUnauthorized = verifyOptions.rejectUnauthorized;\n  }\n  connectionOptions.ALPNProtocols = ['h2'];\n  if (options['grpc.ssl_target_name_override']) {\n    const sslTargetNameOverride = options['grpc.ssl_target_name_override']!;\n    const originalCheckServerIdentity =\n      connectionOptions.checkServerIdentity ?? checkServerIdentity;\n    connectionOptions.checkServerIdentity = (\n      host: string,\n      cert: PeerCertificate\n    ): Error | undefined => {\n      return originalCheckServerIdentity(sslTargetNameOverride, cert);\n    };\n    connectionOptions.servername = sslTargetNameOverride;\n  } else {\n    connectionOptions.servername = remoteHost;\n  }\n  if (options['grpc-node.tls_enable_trace']) {\n    connectionOptions.enableTrace = true;\n  }\n  return connectionOptions;\n}\n\nclass SecureConnectorImpl implements SecureConnector {\n  constructor(private connectionOptions: ConnectionOptions, private callCredentials: CallCredentials) {\n  }\n  connect(socket: Socket): Promise<SecureConnectResult> {\n    const tlsConnectOptions: ConnectionOptions = {\n      socket: socket,\n      ...this.connectionOptions\n    };\n    return new Promise<SecureConnectResult>((resolve, reject) => {\n      const tlsSocket = tlsConnect(tlsConnectOptions, () => {\n        if ((this.connectionOptions.rejectUnauthorized ?? true) && !tlsSocket.authorized) {\n          reject(tlsSocket.authorizationError);\n          return;\n        }\n        resolve({\n          socket: tlsSocket,\n          secure: true\n        })\n      });\n      tlsSocket.on('error', (error: Error) => {\n        reject(error);\n      });\n    });\n  }\n  waitForReady(): Promise<void> {\n    return Promise.resolve();\n  }\n  getCallCredentials(): CallCredentials {\n    return this.callCredentials;\n  }\n  destroy() {}\n}\n\nclass SecureChannelCredentialsImpl extends ChannelCredentials {\n  constructor(\n    private secureContext: SecureContext,\n    private verifyOptions: VerifyOptions\n  ) {\n    super();\n  }\n\n  _isSecure(): boolean {\n    return true;\n  }\n  _equals(other: ChannelCredentials): boolean {\n    if (this === other) {\n      return true;\n    }\n    if (other instanceof SecureChannelCredentialsImpl) {\n      return (\n        this.secureContext === other.secureContext &&\n        this.verifyOptions.checkServerIdentity ===\n          other.verifyOptions.checkServerIdentity\n      );\n    } else {\n      return false;\n    }\n  }\n  _createSecureConnector(channelTarget: GrpcUri, options: ChannelOptions, callCredentials?: CallCredentials): SecureConnector {\n    const connectionOptions = getConnectionOptions(this.secureContext, this.verifyOptions, channelTarget, options);\n    return new SecureConnectorImpl(connectionOptions, callCredentials ?? CallCredentials.createEmpty());\n  }\n}\n\nclass CertificateProviderChannelCredentialsImpl extends ChannelCredentials {\n  private refcount: number = 0;\n  /**\n   * `undefined` means that the certificates have not yet been loaded. `null`\n   * means that an attempt to load them has completed, and has failed.\n   */\n  private latestCaUpdate: CaCertificateUpdate | null | undefined = undefined;\n  /**\n   * `undefined` means that the certificates have not yet been loaded. `null`\n   * means that an attempt to load them has completed, and has failed.\n   */\n  private latestIdentityUpdate: IdentityCertificateUpdate | null | undefined = undefined;\n  private caCertificateUpdateListener: CaCertificateUpdateListener = this.handleCaCertificateUpdate.bind(this);\n  private identityCertificateUpdateListener: IdentityCertificateUpdateListener = this.handleIdentityCertitificateUpdate.bind(this);\n  private secureContextWatchers: ((context: SecureContext | null) => void)[] = [];\n  private static SecureConnectorImpl = class implements SecureConnector {\n    constructor(private parent: CertificateProviderChannelCredentialsImpl, private channelTarget: GrpcUri, private options: ChannelOptions, private callCredentials: CallCredentials) {}\n\n    connect(socket: Socket): Promise<SecureConnectResult> {\n      return new Promise((resolve, reject) => {\n        const secureContext = this.parent.getLatestSecureContext();\n        if (!secureContext) {\n          reject(new Error('Failed to load credentials'));\n          return;\n        }\n        if (socket.closed) {\n          reject(new Error('Socket closed while loading credentials'));\n        }\n        const connnectionOptions = getConnectionOptions(secureContext, this.parent.verifyOptions, this.channelTarget, this.options);\n        const tlsConnectOptions: ConnectionOptions = {\n          socket: socket,\n          ...connnectionOptions\n        }\n        const closeCallback = () => {\n          reject(new Error('Socket closed'));\n        };\n        const errorCallback = (error: Error) => {\n          reject(error);\n        }\n        const tlsSocket = tlsConnect(tlsConnectOptions, () => {\n          tlsSocket.removeListener('close', closeCallback);\n          tlsSocket.removeListener('error', errorCallback);\n          if ((this.parent.verifyOptions.rejectUnauthorized ?? true) && !tlsSocket.authorized) {\n            reject(tlsSocket.authorizationError);\n            return;\n          }\n          resolve({\n            socket: tlsSocket,\n            secure: true\n          });\n        });\n        tlsSocket.once('close', closeCallback);\n        tlsSocket.once('error', errorCallback);\n      });\n    }\n\n    async waitForReady(): Promise<void> {\n      await this.parent.getSecureContext();\n    }\n\n    getCallCredentials(): CallCredentials {\n      return this.callCredentials;\n    }\n\n    destroy() {\n      this.parent.unref();\n    }\n  }\n  constructor(\n    private caCertificateProvider: CertificateProvider,\n    private identityCertificateProvider: CertificateProvider | null,\n    private verifyOptions: VerifyOptions\n  ) {\n    super();\n  }\n  _isSecure(): boolean {\n    return true;\n  }\n  _equals(other: ChannelCredentials): boolean {\n    if (this === other) {\n      return true;\n    }\n    if (other instanceof CertificateProviderChannelCredentialsImpl) {\n      return this.caCertificateProvider === other.caCertificateProvider &&\n        this.identityCertificateProvider === other.identityCertificateProvider &&\n        this.verifyOptions?.checkServerIdentity === other.verifyOptions?.checkServerIdentity;\n    } else {\n      return false;\n    }\n  }\n  private ref(): void {\n    if (this.refcount === 0) {\n      this.caCertificateProvider.addCaCertificateListener(this.caCertificateUpdateListener);\n      this.identityCertificateProvider?.addIdentityCertificateListener(this.identityCertificateUpdateListener);\n    }\n    this.refcount += 1;\n  }\n  private unref(): void {\n    this.refcount -= 1;\n    if (this.refcount === 0) {\n      this.caCertificateProvider.removeCaCertificateListener(this.caCertificateUpdateListener);\n      this.identityCertificateProvider?.removeIdentityCertificateListener(this.identityCertificateUpdateListener);\n    }\n  }\n  _createSecureConnector(channelTarget: GrpcUri, options: ChannelOptions, callCredentials?: CallCredentials): SecureConnector {\n    this.ref();\n    return new CertificateProviderChannelCredentialsImpl.SecureConnectorImpl(this, channelTarget, options, callCredentials ?? CallCredentials.createEmpty());\n  }\n\n  private maybeUpdateWatchers() {\n    if (this.hasReceivedUpdates()) {\n      for (const watcher of this.secureContextWatchers) {\n        watcher(this.getLatestSecureContext());\n      }\n      this.secureContextWatchers = [];\n    }\n  }\n\n  private handleCaCertificateUpdate(update: CaCertificateUpdate | null) {\n    this.latestCaUpdate = update;\n    this.maybeUpdateWatchers();\n  }\n\n  private handleIdentityCertitificateUpdate(update: IdentityCertificateUpdate | null) {\n    this.latestIdentityUpdate = update;\n    this.maybeUpdateWatchers();\n  }\n\n  private hasReceivedUpdates(): boolean {\n    if (this.latestCaUpdate === undefined) {\n      return false;\n    }\n    if (this.identityCertificateProvider && this.latestIdentityUpdate === undefined) {\n      return false;\n    }\n    return true;\n  }\n\n  private getSecureContext(): Promise<SecureContext | null> {\n    if (this.hasReceivedUpdates()) {\n      return Promise.resolve(this.getLatestSecureContext());\n    } else {\n      return new Promise(resolve => {\n        this.secureContextWatchers.push(resolve);\n      });\n    }\n  }\n\n  private getLatestSecureContext(): SecureContext | null {\n    if (!this.latestCaUpdate) {\n      return null;\n    }\n    if (this.identityCertificateProvider !== null && !this.latestIdentityUpdate) {\n      return null;\n    }\n    try {\n      return createSecureContext({\n        ca: this.latestCaUpdate.caCertificate,\n        key: this.latestIdentityUpdate?.privateKey,\n        cert: this.latestIdentityUpdate?.certificate,\n        ciphers: CIPHER_SUITES\n      });\n    } catch (e) {\n      log(LogVerbosity.ERROR, 'Failed to createSecureContext with error ' + (e as Error).message);\n      return null;\n    }\n  }\n}\n\nexport function createCertificateProviderChannelCredentials(caCertificateProvider: CertificateProvider, identityCertificateProvider: CertificateProvider | null, verifyOptions?: VerifyOptions) {\n  return new CertificateProviderChannelCredentialsImpl(caCertificateProvider, identityCertificateProvider, verifyOptions ?? {});\n}\n\nclass ComposedChannelCredentialsImpl extends ChannelCredentials {\n  constructor(\n    private channelCredentials: ChannelCredentials,\n    private callCredentials: CallCredentials\n  ) {\n    super();\n    if (!channelCredentials._isSecure()) {\n      throw new Error('Cannot compose insecure credentials');\n    }\n  }\n  compose(callCredentials: CallCredentials) {\n    const combinedCallCredentials =\n      this.callCredentials.compose(callCredentials);\n    return new ComposedChannelCredentialsImpl(\n      this.channelCredentials,\n      combinedCallCredentials\n    );\n  }\n  _isSecure(): boolean {\n    return true;\n  }\n  _equals(other: ChannelCredentials): boolean {\n    if (this === other) {\n      return true;\n    }\n    if (other instanceof ComposedChannelCredentialsImpl) {\n      return (\n        this.channelCredentials._equals(other.channelCredentials) &&\n        this.callCredentials._equals(other.callCredentials)\n      );\n    } else {\n      return false;\n    }\n  }\n  _createSecureConnector(channelTarget: GrpcUri, options: ChannelOptions, callCredentials?: CallCredentials): SecureConnector {\n    const combinedCallCredentials = this.callCredentials.compose(callCredentials ?? CallCredentials.createEmpty());\n    return this.channelCredentials._createSecureConnector(channelTarget, options, combinedCallCredentials);\n  }\n}\n", "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { ChannelOptions } from './channel-options';\nimport { Endpoint, SubchannelAddress } from './subchannel-address';\nimport { ConnectivityState } from './connectivity-state';\nimport { Picker } from './picker';\nimport type { ChannelRef, SubchannelRef } from './channelz';\nimport { SubchannelInterface } from './subchannel-interface';\nimport { LoadBalancingConfig } from './service-config';\nimport { log } from './logging';\nimport { LogVerbosity } from './constants';\nimport { StatusOr } from './call-interface';\n\n/**\n * A collection of functions associated with a channel that a load balancer\n * can call as necessary.\n */\nexport interface ChannelControlHelper {\n  /**\n   * Returns a subchannel connected to the specified address.\n   * @param subchannelAddress The address to connect to\n   * @param subchannelArgs Channel arguments to use to construct the subchannel\n   */\n  createSubchannel(\n    subchannelAddress: SubchannelAddress,\n    subchannelArgs: ChannelOptions\n  ): SubchannelInterface;\n  /**\n   * Passes a new subchannel picker up to the channel. This is called if either\n   * the connectivity state changes or if a different picker is needed for any\n   * other reason.\n   * @param connectivityState New connectivity state\n   * @param picker New picker\n   */\n  updateState(\n    connectivityState: ConnectivityState,\n    picker: Picker,\n    errorMessage: string | null\n  ): void;\n  /**\n   * Request new data from the resolver.\n   */\n  requestReresolution(): void;\n  addChannelzChild(child: ChannelRef | SubchannelRef): void;\n  removeChannelzChild(child: ChannelRef | SubchannelRef): void;\n}\n\n/**\n * Create a child ChannelControlHelper that overrides some methods of the\n * parent while letting others pass through to the parent unmodified. This\n * allows other code to create these children without needing to know about\n * all of the methods to be passed through.\n * @param parent\n * @param overrides\n */\nexport function createChildChannelControlHelper(\n  parent: ChannelControlHelper,\n  overrides: Partial<ChannelControlHelper>\n): ChannelControlHelper {\n  return {\n    createSubchannel:\n      overrides.createSubchannel?.bind(overrides) ??\n      parent.createSubchannel.bind(parent),\n    updateState:\n      overrides.updateState?.bind(overrides) ?? parent.updateState.bind(parent),\n    requestReresolution:\n      overrides.requestReresolution?.bind(overrides) ??\n      parent.requestReresolution.bind(parent),\n    addChannelzChild:\n      overrides.addChannelzChild?.bind(overrides) ??\n      parent.addChannelzChild.bind(parent),\n    removeChannelzChild:\n      overrides.removeChannelzChild?.bind(overrides) ??\n      parent.removeChannelzChild.bind(parent),\n  };\n}\n\n/**\n * Tracks one or more connected subchannels and determines which subchannel\n * each request should use.\n */\nexport interface LoadBalancer {\n  /**\n   * Gives the load balancer a new list of addresses to start connecting to.\n   * The load balancer will start establishing connections with the new list,\n   * but will continue using any existing connections until the new connections\n   * are established\n   * @param endpointList The new list of addresses to connect to\n   * @param lbConfig The load balancing config object from the service config,\n   *     if one was provided\n   * @param channelOptions Channel options from the channel, plus resolver\n   *     attributes\n   * @param resolutionNote A not from the resolver to include in errors\n   */\n  updateAddressList(\n    endpointList: StatusOr<Endpoint[]>,\n    lbConfig: TypedLoadBalancingConfig,\n    channelOptions: ChannelOptions,\n    resolutionNote: string\n  ): boolean;\n  /**\n   * If the load balancer is currently in the IDLE state, start connecting.\n   */\n  exitIdle(): void;\n  /**\n   * If the load balancer is currently in the CONNECTING or TRANSIENT_FAILURE\n   * state, reset the current connection backoff timeout to its base value and\n   * transition to CONNECTING if in TRANSIENT_FAILURE.\n   */\n  resetBackoff(): void;\n  /**\n   * The load balancer unrefs all of its subchannels and stops calling methods\n   * of its channel control helper.\n   */\n  destroy(): void;\n  /**\n   * Get the type name for this load balancer type. Must be constant across an\n   * entire load balancer implementation class and must match the name that the\n   * balancer implementation class was registered with.\n   */\n  getTypeName(): string;\n}\n\nexport interface LoadBalancerConstructor {\n  new (\n    channelControlHelper: ChannelControlHelper\n  ): LoadBalancer;\n}\n\nexport interface TypedLoadBalancingConfig {\n  getLoadBalancerName(): string;\n  toJsonObject(): object;\n}\n\nexport interface TypedLoadBalancingConfigConstructor {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  new (...args: any): TypedLoadBalancingConfig;\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  createFromJson(obj: any): TypedLoadBalancingConfig;\n}\n\nconst registeredLoadBalancerTypes: {\n  [name: string]: {\n    LoadBalancer: LoadBalancerConstructor;\n    LoadBalancingConfig: TypedLoadBalancingConfigConstructor;\n  };\n} = {};\n\nlet defaultLoadBalancerType: string | null = null;\n\nexport function registerLoadBalancerType(\n  typeName: string,\n  loadBalancerType: LoadBalancerConstructor,\n  loadBalancingConfigType: TypedLoadBalancingConfigConstructor\n) {\n  registeredLoadBalancerTypes[typeName] = {\n    LoadBalancer: loadBalancerType,\n    LoadBalancingConfig: loadBalancingConfigType,\n  };\n}\n\nexport function registerDefaultLoadBalancerType(typeName: string) {\n  defaultLoadBalancerType = typeName;\n}\n\nexport function createLoadBalancer(\n  config: TypedLoadBalancingConfig,\n  channelControlHelper: ChannelControlHelper\n): LoadBalancer | null {\n  const typeName = config.getLoadBalancerName();\n  if (typeName in registeredLoadBalancerTypes) {\n    return new registeredLoadBalancerTypes[typeName].LoadBalancer(\n      channelControlHelper\n    );\n  } else {\n    return null;\n  }\n}\n\nexport function isLoadBalancerNameRegistered(typeName: string): boolean {\n  return typeName in registeredLoadBalancerTypes;\n}\n\nexport function parseLoadBalancingConfig(\n  rawConfig: LoadBalancingConfig\n): TypedLoadBalancingConfig {\n  const keys = Object.keys(rawConfig);\n  if (keys.length !== 1) {\n    throw new Error(\n      'Provided load balancing config has multiple conflicting entries'\n    );\n  }\n  const typeName = keys[0];\n  if (typeName in registeredLoadBalancerTypes) {\n    try {\n      return registeredLoadBalancerTypes[\n        typeName\n      ].LoadBalancingConfig.createFromJson(rawConfig[typeName]);\n    } catch (e) {\n      throw new Error(`${typeName}: ${(e as Error).message}`);\n    }\n  } else {\n    throw new Error(`Unrecognized load balancing config name ${typeName}`);\n  }\n}\n\nexport function getDefaultConfig() {\n  if (!defaultLoadBalancerType) {\n    throw new Error('No default load balancer type registered');\n  }\n  return new registeredLoadBalancerTypes[\n    defaultLoadBalancerType\n  ]!.LoadBalancingConfig();\n}\n\nexport function selectLbConfigFromList(\n  configs: LoadBalancingConfig[],\n  fallbackTodefault = false\n): TypedLoadBalancingConfig | null {\n  for (const config of configs) {\n    try {\n      return parseLoadBalancingConfig(config);\n    } catch (e) {\n      log(\n        LogVerbosity.DEBUG,\n        'Config parsing failed with error',\n        (e as Error).message\n      );\n      continue;\n    }\n  }\n  if (fallbackTodefault) {\n    if (defaultLoadBalancerType) {\n      return new registeredLoadBalancerTypes[\n        defaultLoadBalancerType\n      ]!.LoadBalancingConfig();\n    } else {\n      return null;\n    }\n  } else {\n    return null;\n  }\n}\n", "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\n/* This file implements gRFC A2 and the service config spec:\n * https://github.com/grpc/proposal/blob/master/A2-service-configs-in-dns.md\n * https://github.com/grpc/grpc/blob/master/doc/service_config.md. Each\n * function here takes an object with unknown structure and returns its\n * specific object type if the input has the right structure, and throws an\n * error otherwise. */\n\n/* The any type is purposely used here. All functions validate their input at\n * runtime */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport * as os from 'os';\nimport { Status } from './constants';\nimport { Duration } from './duration';\n\nexport interface MethodConfigName {\n  service?: string;\n  method?: string;\n}\n\nexport interface RetryPolicy {\n  maxAttempts: number;\n  initialBackoff: string;\n  maxBackoff: string;\n  backoffMultiplier: number;\n  retryableStatusCodes: (Status | string)[];\n}\n\nexport interface HedgingPolicy {\n  maxAttempts: number;\n  hedgingDelay?: string;\n  nonFatalStatusCodes?: (Status | string)[];\n}\n\nexport interface MethodConfig {\n  name: MethodConfigName[];\n  waitForReady?: boolean;\n  timeout?: Duration;\n  maxRequestBytes?: number;\n  maxResponseBytes?: number;\n  retryPolicy?: RetryPolicy;\n  hedgingPolicy?: HedgingPolicy;\n}\n\nexport interface RetryThrottling {\n  maxTokens: number;\n  tokenRatio: number;\n}\n\nexport interface LoadBalancingConfig {\n  [key: string]: object;\n}\n\nexport interface ServiceConfig {\n  loadBalancingPolicy?: string;\n  loadBalancingConfig: LoadBalancingConfig[];\n  methodConfig: MethodConfig[];\n  retryThrottling?: RetryThrottling;\n}\n\nexport interface ServiceConfigCanaryConfig {\n  clientLanguage?: string[];\n  percentage?: number;\n  clientHostname?: string[];\n  serviceConfig: ServiceConfig;\n}\n\n/**\n * Recognizes a number with up to 9 digits after the decimal point, followed by\n * an \"s\", representing a number of seconds.\n */\nconst DURATION_REGEX = /^\\d+(\\.\\d{1,9})?s$/;\n\n/**\n * Client language name used for determining whether this client matches a\n * `ServiceConfigCanaryConfig`'s `clientLanguage` list.\n */\nconst CLIENT_LANGUAGE_STRING = 'node';\n\nfunction validateName(obj: any): MethodConfigName {\n  // In this context, and unset field and '' are considered the same\n  if ('service' in obj && obj.service !== '') {\n    if (typeof obj.service !== 'string') {\n      throw new Error(\n        `Invalid method config name: invalid service: expected type string, got ${typeof obj.service}`\n      );\n    }\n    if ('method' in obj && obj.method !== '') {\n      if (typeof obj.method !== 'string') {\n        throw new Error(\n          `Invalid method config name: invalid method: expected type string, got ${typeof obj.service}`\n        );\n      }\n      return {\n        service: obj.service,\n        method: obj.method,\n      };\n    } else {\n      return {\n        service: obj.service,\n      };\n    }\n  } else {\n    if ('method' in obj && obj.method !== undefined) {\n      throw new Error(\n        `Invalid method config name: method set with empty or unset service`\n      );\n    }\n    return {};\n  }\n}\n\nfunction validateRetryPolicy(obj: any): RetryPolicy {\n  if (\n    !('maxAttempts' in obj) ||\n    !Number.isInteger(obj.maxAttempts) ||\n    obj.maxAttempts < 2\n  ) {\n    throw new Error(\n      'Invalid method config retry policy: maxAttempts must be an integer at least 2'\n    );\n  }\n  if (\n    !('initialBackoff' in obj) ||\n    typeof obj.initialBackoff !== 'string' ||\n    !DURATION_REGEX.test(obj.initialBackoff)\n  ) {\n    throw new Error(\n      'Invalid method config retry policy: initialBackoff must be a string consisting of a positive integer or decimal followed by s'\n    );\n  }\n  if (\n    !('maxBackoff' in obj) ||\n    typeof obj.maxBackoff !== 'string' ||\n    !DURATION_REGEX.test(obj.maxBackoff)\n  ) {\n    throw new Error(\n      'Invalid method config retry policy: maxBackoff must be a string consisting of a positive integer or decimal followed by s'\n    );\n  }\n  if (\n    !('backoffMultiplier' in obj) ||\n    typeof obj.backoffMultiplier !== 'number' ||\n    obj.backoffMultiplier <= 0\n  ) {\n    throw new Error(\n      'Invalid method config retry policy: backoffMultiplier must be a number greater than 0'\n    );\n  }\n  if (\n    !('retryableStatusCodes' in obj && Array.isArray(obj.retryableStatusCodes))\n  ) {\n    throw new Error(\n      'Invalid method config retry policy: retryableStatusCodes is required'\n    );\n  }\n  if (obj.retryableStatusCodes.length === 0) {\n    throw new Error(\n      'Invalid method config retry policy: retryableStatusCodes must be non-empty'\n    );\n  }\n  for (const value of obj.retryableStatusCodes) {\n    if (typeof value === 'number') {\n      if (!Object.values(Status).includes(value)) {\n        throw new Error(\n          'Invalid method config retry policy: retryableStatusCodes value not in status code range'\n        );\n      }\n    } else if (typeof value === 'string') {\n      if (!Object.values(Status).includes(value.toUpperCase())) {\n        throw new Error(\n          'Invalid method config retry policy: retryableStatusCodes value not a status code name'\n        );\n      }\n    } else {\n      throw new Error(\n        'Invalid method config retry policy: retryableStatusCodes value must be a string or number'\n      );\n    }\n  }\n  return {\n    maxAttempts: obj.maxAttempts,\n    initialBackoff: obj.initialBackoff,\n    maxBackoff: obj.maxBackoff,\n    backoffMultiplier: obj.backoffMultiplier,\n    retryableStatusCodes: obj.retryableStatusCodes,\n  };\n}\n\nfunction validateHedgingPolicy(obj: any): HedgingPolicy {\n  if (\n    !('maxAttempts' in obj) ||\n    !Number.isInteger(obj.maxAttempts) ||\n    obj.maxAttempts < 2\n  ) {\n    throw new Error(\n      'Invalid method config hedging policy: maxAttempts must be an integer at least 2'\n    );\n  }\n  if (\n    'hedgingDelay' in obj &&\n    (typeof obj.hedgingDelay !== 'string' ||\n      !DURATION_REGEX.test(obj.hedgingDelay))\n  ) {\n    throw new Error(\n      'Invalid method config hedging policy: hedgingDelay must be a string consisting of a positive integer followed by s'\n    );\n  }\n  if ('nonFatalStatusCodes' in obj && Array.isArray(obj.nonFatalStatusCodes)) {\n    for (const value of obj.nonFatalStatusCodes) {\n      if (typeof value === 'number') {\n        if (!Object.values(Status).includes(value)) {\n          throw new Error(\n            'Invalid method config hedging policy: nonFatalStatusCodes value not in status code range'\n          );\n        }\n      } else if (typeof value === 'string') {\n        if (!Object.values(Status).includes(value.toUpperCase())) {\n          throw new Error(\n            'Invalid method config hedging policy: nonFatalStatusCodes value not a status code name'\n          );\n        }\n      } else {\n        throw new Error(\n          'Invalid method config hedging policy: nonFatalStatusCodes value must be a string or number'\n        );\n      }\n    }\n  }\n  const result: HedgingPolicy = {\n    maxAttempts: obj.maxAttempts,\n  };\n  if (obj.hedgingDelay) {\n    result.hedgingDelay = obj.hedgingDelay;\n  }\n  if (obj.nonFatalStatusCodes) {\n    result.nonFatalStatusCodes = obj.nonFatalStatusCodes;\n  }\n  return result;\n}\n\nfunction validateMethodConfig(obj: any): MethodConfig {\n  const result: MethodConfig = {\n    name: [],\n  };\n  if (!('name' in obj) || !Array.isArray(obj.name)) {\n    throw new Error('Invalid method config: invalid name array');\n  }\n  for (const name of obj.name) {\n    result.name.push(validateName(name));\n  }\n  if ('waitForReady' in obj) {\n    if (typeof obj.waitForReady !== 'boolean') {\n      throw new Error('Invalid method config: invalid waitForReady');\n    }\n    result.waitForReady = obj.waitForReady;\n  }\n  if ('timeout' in obj) {\n    if (typeof obj.timeout === 'object') {\n      if (\n        !('seconds' in obj.timeout) ||\n        !(typeof obj.timeout.seconds === 'number')\n      ) {\n        throw new Error('Invalid method config: invalid timeout.seconds');\n      }\n      if (\n        !('nanos' in obj.timeout) ||\n        !(typeof obj.timeout.nanos === 'number')\n      ) {\n        throw new Error('Invalid method config: invalid timeout.nanos');\n      }\n      result.timeout = obj.timeout;\n    } else if (\n      typeof obj.timeout === 'string' &&\n      DURATION_REGEX.test(obj.timeout)\n    ) {\n      const timeoutParts = obj.timeout\n        .substring(0, obj.timeout.length - 1)\n        .split('.');\n      result.timeout = {\n        seconds: timeoutParts[0] | 0,\n        nanos: (timeoutParts[1] ?? 0) | 0,\n      };\n    } else {\n      throw new Error('Invalid method config: invalid timeout');\n    }\n  }\n  if ('maxRequestBytes' in obj) {\n    if (typeof obj.maxRequestBytes !== 'number') {\n      throw new Error('Invalid method config: invalid maxRequestBytes');\n    }\n    result.maxRequestBytes = obj.maxRequestBytes;\n  }\n  if ('maxResponseBytes' in obj) {\n    if (typeof obj.maxResponseBytes !== 'number') {\n      throw new Error('Invalid method config: invalid maxRequestBytes');\n    }\n    result.maxResponseBytes = obj.maxResponseBytes;\n  }\n  if ('retryPolicy' in obj) {\n    if ('hedgingPolicy' in obj) {\n      throw new Error(\n        'Invalid method config: retryPolicy and hedgingPolicy cannot both be specified'\n      );\n    } else {\n      result.retryPolicy = validateRetryPolicy(obj.retryPolicy);\n    }\n  } else if ('hedgingPolicy' in obj) {\n    result.hedgingPolicy = validateHedgingPolicy(obj.hedgingPolicy);\n  }\n  return result;\n}\n\nexport function validateRetryThrottling(obj: any): RetryThrottling {\n  if (\n    !('maxTokens' in obj) ||\n    typeof obj.maxTokens !== 'number' ||\n    obj.maxTokens <= 0 ||\n    obj.maxTokens > 1000\n  ) {\n    throw new Error(\n      'Invalid retryThrottling: maxTokens must be a number in (0, 1000]'\n    );\n  }\n  if (\n    !('tokenRatio' in obj) ||\n    typeof obj.tokenRatio !== 'number' ||\n    obj.tokenRatio <= 0\n  ) {\n    throw new Error(\n      'Invalid retryThrottling: tokenRatio must be a number greater than 0'\n    );\n  }\n  return {\n    maxTokens: +(obj.maxTokens as number).toFixed(3),\n    tokenRatio: +(obj.tokenRatio as number).toFixed(3),\n  };\n}\n\nfunction validateLoadBalancingConfig(obj: any): LoadBalancingConfig {\n  if (!(typeof obj === 'object' && obj !== null)) {\n    throw new Error(\n      `Invalid loadBalancingConfig: unexpected type ${typeof obj}`\n    );\n  }\n  const keys = Object.keys(obj);\n  if (keys.length > 1) {\n    throw new Error(\n      `Invalid loadBalancingConfig: unexpected multiple keys ${keys}`\n    );\n  }\n  if (keys.length === 0) {\n    throw new Error(\n      'Invalid loadBalancingConfig: load balancing policy name required'\n    );\n  }\n  return {\n    [keys[0]]: obj[keys[0]],\n  };\n}\n\nexport function validateServiceConfig(obj: any): ServiceConfig {\n  const result: ServiceConfig = {\n    loadBalancingConfig: [],\n    methodConfig: [],\n  };\n  if ('loadBalancingPolicy' in obj) {\n    if (typeof obj.loadBalancingPolicy === 'string') {\n      result.loadBalancingPolicy = obj.loadBalancingPolicy;\n    } else {\n      throw new Error('Invalid service config: invalid loadBalancingPolicy');\n    }\n  }\n  if ('loadBalancingConfig' in obj) {\n    if (Array.isArray(obj.loadBalancingConfig)) {\n      for (const config of obj.loadBalancingConfig) {\n        result.loadBalancingConfig.push(validateLoadBalancingConfig(config));\n      }\n    } else {\n      throw new Error('Invalid service config: invalid loadBalancingConfig');\n    }\n  }\n  if ('methodConfig' in obj) {\n    if (Array.isArray(obj.methodConfig)) {\n      for (const methodConfig of obj.methodConfig) {\n        result.methodConfig.push(validateMethodConfig(methodConfig));\n      }\n    }\n  }\n  if ('retryThrottling' in obj) {\n    result.retryThrottling = validateRetryThrottling(obj.retryThrottling);\n  }\n  // Validate method name uniqueness\n  const seenMethodNames: MethodConfigName[] = [];\n  for (const methodConfig of result.methodConfig) {\n    for (const name of methodConfig.name) {\n      for (const seenName of seenMethodNames) {\n        if (\n          name.service === seenName.service &&\n          name.method === seenName.method\n        ) {\n          throw new Error(\n            `Invalid service config: duplicate name ${name.service}/${name.method}`\n          );\n        }\n      }\n      seenMethodNames.push(name);\n    }\n  }\n  return result;\n}\n\nfunction validateCanaryConfig(obj: any): ServiceConfigCanaryConfig {\n  if (!('serviceConfig' in obj)) {\n    throw new Error('Invalid service config choice: missing service config');\n  }\n  const result: ServiceConfigCanaryConfig = {\n    serviceConfig: validateServiceConfig(obj.serviceConfig),\n  };\n  if ('clientLanguage' in obj) {\n    if (Array.isArray(obj.clientLanguage)) {\n      result.clientLanguage = [];\n      for (const lang of obj.clientLanguage) {\n        if (typeof lang === 'string') {\n          result.clientLanguage.push(lang);\n        } else {\n          throw new Error(\n            'Invalid service config choice: invalid clientLanguage'\n          );\n        }\n      }\n    } else {\n      throw new Error('Invalid service config choice: invalid clientLanguage');\n    }\n  }\n  if ('clientHostname' in obj) {\n    if (Array.isArray(obj.clientHostname)) {\n      result.clientHostname = [];\n      for (const lang of obj.clientHostname) {\n        if (typeof lang === 'string') {\n          result.clientHostname.push(lang);\n        } else {\n          throw new Error(\n            'Invalid service config choice: invalid clientHostname'\n          );\n        }\n      }\n    } else {\n      throw new Error('Invalid service config choice: invalid clientHostname');\n    }\n  }\n  if ('percentage' in obj) {\n    if (\n      typeof obj.percentage === 'number' &&\n      0 <= obj.percentage &&\n      obj.percentage <= 100\n    ) {\n      result.percentage = obj.percentage;\n    } else {\n      throw new Error('Invalid service config choice: invalid percentage');\n    }\n  }\n  // Validate that no unexpected fields are present\n  const allowedFields = [\n    'clientLanguage',\n    'percentage',\n    'clientHostname',\n    'serviceConfig',\n  ];\n  for (const field in obj) {\n    if (!allowedFields.includes(field)) {\n      throw new Error(\n        `Invalid service config choice: unexpected field ${field}`\n      );\n    }\n  }\n  return result;\n}\n\nfunction validateAndSelectCanaryConfig(\n  obj: any,\n  percentage: number\n): ServiceConfig {\n  if (!Array.isArray(obj)) {\n    throw new Error('Invalid service config list');\n  }\n  for (const config of obj) {\n    const validatedConfig = validateCanaryConfig(config);\n    /* For each field, we check if it is present, then only discard the\n     * config if the field value does not match the current client */\n    if (\n      typeof validatedConfig.percentage === 'number' &&\n      percentage > validatedConfig.percentage\n    ) {\n      continue;\n    }\n    if (Array.isArray(validatedConfig.clientHostname)) {\n      let hostnameMatched = false;\n      for (const hostname of validatedConfig.clientHostname) {\n        if (hostname === os.hostname()) {\n          hostnameMatched = true;\n        }\n      }\n      if (!hostnameMatched) {\n        continue;\n      }\n    }\n    if (Array.isArray(validatedConfig.clientLanguage)) {\n      let languageMatched = false;\n      for (const language of validatedConfig.clientLanguage) {\n        if (language === CLIENT_LANGUAGE_STRING) {\n          languageMatched = true;\n        }\n      }\n      if (!languageMatched) {\n        continue;\n      }\n    }\n    return validatedConfig.serviceConfig;\n  }\n  throw new Error('No matching service config found');\n}\n\n/**\n * Find the \"grpc_config\" record among the TXT records, parse its value as JSON, validate its contents,\n * and select a service config with selection fields that all match this client. Most of these steps\n * can fail with an error; the caller must handle any errors thrown this way.\n * @param txtRecord The TXT record array that is output from a successful call to dns.resolveTxt\n * @param percentage A number chosen from the range [0, 100) that is used to select which config to use\n * @return The service configuration to use, given the percentage value, or null if the service config\n *     data has a valid format but none of the options match the current client.\n */\nexport function extractAndSelectServiceConfig(\n  txtRecord: string[][],\n  percentage: number\n): ServiceConfig | null {\n  for (const record of txtRecord) {\n    if (record.length > 0 && record[0].startsWith('grpc_config=')) {\n      /* Treat the list of strings in this record as a single string and remove\n       * \"grpc_config=\" from the beginning. The rest should be a JSON string */\n      const recordString = record.join('').substring('grpc_config='.length);\n      const recordJson: any = JSON.parse(recordString);\n      return validateAndSelectCanaryConfig(recordJson, percentage);\n    }\n  }\n  return null;\n}\n", "/*\n * Copyright 2021 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nexport enum ConnectivityState {\n  IDLE,\n  CONNECTING,\n  READY,\n  TRANSIENT_FAILURE,\n  SHUTDOWN,\n}\n", "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { StatusObject } from './call-interface';\nimport { Metadata } from './metadata';\nimport { Status } from './constants';\nimport { LoadBalancer } from './load-balancer';\nimport { SubchannelInterface } from './subchannel-interface';\n\nexport enum PickResultType {\n  COMPLETE,\n  QUEUE,\n  TRANSIENT_FAILURE,\n  DROP,\n}\n\nexport type OnCallEnded = (statusCode: Status, details: string, metadata: Metadata) => void;\n\nexport interface PickResult {\n  pickResultType: PickResultType;\n  /**\n   * The subchannel to use as the transport for the call. Only meaningful if\n   * `pickResultType` is COMPLETE. If null, indicates that the call should be\n   * dropped.\n   */\n  subchannel: SubchannelInterface | null;\n  /**\n   * The status object to end the call with. Populated if and only if\n   * `pickResultType` is TRANSIENT_FAILURE.\n   */\n  status: StatusObject | null;\n  onCallStarted: (() => void) | null;\n  onCallEnded: OnCallEnded | null;\n}\n\nexport interface CompletePickResult extends PickResult {\n  pickResultType: PickResultType.COMPLETE;\n  subchannel: SubchannelInterface | null;\n  status: null;\n  onCallStarted: (() => void) | null;\n  onCallEnded: OnCallEnded | null;\n}\n\nexport interface QueuePickResult extends PickResult {\n  pickResultType: PickResultType.QUEUE;\n  subchannel: null;\n  status: null;\n  onCallStarted: null;\n  onCallEnded: null;\n}\n\nexport interface TransientFailurePickResult extends PickResult {\n  pickResultType: PickResultType.TRANSIENT_FAILURE;\n  subchannel: null;\n  status: StatusObject;\n  onCallStarted: null;\n  onCallEnded: null;\n}\n\nexport interface DropCallPickResult extends PickResult {\n  pickResultType: PickResultType.DROP;\n  subchannel: null;\n  status: StatusObject;\n  onCallStarted: null;\n  onCallEnded: null;\n}\n\nexport interface PickArgs {\n  metadata: Metadata;\n  extraPickInfo: { [key: string]: string };\n}\n\n/**\n * A proxy object representing the momentary state of a load balancer. Picks\n * subchannels or returns other information based on that state. Should be\n * replaced every time the load balancer changes state.\n */\nexport interface Picker {\n  pick(pickArgs: PickArgs): PickResult;\n}\n\n/**\n * A standard picker representing a load balancer in the TRANSIENT_FAILURE\n * state. Always responds to every pick request with an UNAVAILABLE status.\n */\nexport class UnavailablePicker implements Picker {\n  private status: StatusObject;\n  constructor(status?: Partial<StatusObject>) {\n    this.status = {\n      code: Status.UNAVAILABLE,\n      details: 'No connection established',\n      metadata: new Metadata(),\n      ...status,\n    };\n  }\n  pick(pickArgs: PickArgs): TransientFailurePickResult {\n    return {\n      pickResultType: PickResultType.TRANSIENT_FAILURE,\n      subchannel: null,\n      status: this.status,\n      onCallStarted: null,\n      onCallEnded: null,\n    };\n  }\n}\n\n/**\n * A standard picker representing a load balancer in the IDLE or CONNECTING\n * state. Always responds to every pick request with a QUEUE pick result\n * indicating that the pick should be tried again with the next `Picker`. Also\n * reports back to the load balancer that a connection should be established\n * once any pick is attempted.\n * If the childPicker is provided, delegate to it instead of returning the\n * hardcoded QUEUE pick result, but still calls exitIdle.\n */\nexport class QueuePicker {\n  private calledExitIdle = false;\n  // Constructed with a load balancer. Calls exitIdle on it the first time pick is called\n  constructor(\n    private loadBalancer: LoadBalancer,\n    private childPicker?: Picker\n  ) {}\n\n  pick(pickArgs: PickArgs): PickResult {\n    if (!this.calledExitIdle) {\n      process.nextTick(() => {\n        this.loadBalancer.exitIdle();\n      });\n      this.calledExitIdle = true;\n    }\n    if (this.childPicker) {\n      return this.childPicker.pick(pickArgs);\n    } else {\n      return {\n        pickResultType: PickResultType.QUEUE,\n        subchannel: null,\n        status: null,\n        onCallStarted: null,\n        onCallEnded: null,\n      };\n    }\n  }\n}\n", "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { LogVerbosity } from './constants';\nimport * as logging from './logging';\n\nconst TRACER_NAME = 'backoff';\n\nconst INITIAL_BACKOFF_MS = 1000;\nconst BACKOFF_MULTIPLIER = 1.6;\nconst MAX_BACKOFF_MS = 120000;\nconst BACKOFF_JITTER = 0.2;\n\n/**\n * Get a number uniformly at random in the range [min, max)\n * @param min\n * @param max\n */\nfunction uniformRandom(min: number, max: number) {\n  return Math.random() * (max - min) + min;\n}\n\nexport interface BackoffOptions {\n  initialDelay?: number;\n  multiplier?: number;\n  jitter?: number;\n  maxDelay?: number;\n}\n\nexport class BackoffTimeout {\n  /**\n   * The delay time at the start, and after each reset.\n   */\n  private readonly initialDelay: number = INITIAL_BACKOFF_MS;\n  /**\n   * The exponential backoff multiplier.\n   */\n  private readonly multiplier: number = BACKOFF_MULTIPLIER;\n  /**\n   * The maximum delay time\n   */\n  private readonly maxDelay: number = MAX_BACKOFF_MS;\n  /**\n   * The maximum fraction by which the delay time can randomly vary after\n   * applying the multiplier.\n   */\n  private readonly jitter: number = BACKOFF_JITTER;\n  /**\n   * The delay time for the next time the timer runs.\n   */\n  private nextDelay: number;\n  /**\n   * The handle of the underlying timer. If running is false, this value refers\n   * to an object representing a timer that has ended, but it can still be\n   * interacted with without error.\n   */\n  private timerId: NodeJS.Timeout;\n  /**\n   * Indicates whether the timer is currently running.\n   */\n  private running = false;\n  /**\n   * Indicates whether the timer should keep the Node process running if no\n   * other async operation is doing so.\n   */\n  private hasRef = true;\n  /**\n   * The time that the currently running timer was started. Only valid if\n   * running is true.\n   */\n  private startTime: Date = new Date();\n  /**\n   * The approximate time that the currently running timer will end. Only valid\n   * if running is true.\n   */\n  private endTime: Date = new Date();\n\n  private id: number;\n\n  private static nextId = 0;\n\n  constructor(private callback: () => void, options?: BackoffOptions) {\n    this.id = BackoffTimeout.getNextId();\n    if (options) {\n      if (options.initialDelay) {\n        this.initialDelay = options.initialDelay;\n      }\n      if (options.multiplier) {\n        this.multiplier = options.multiplier;\n      }\n      if (options.jitter) {\n        this.jitter = options.jitter;\n      }\n      if (options.maxDelay) {\n        this.maxDelay = options.maxDelay;\n      }\n    }\n    this.trace('constructed initialDelay=' + this.initialDelay + ' multiplier=' + this.multiplier + ' jitter=' + this.jitter + ' maxDelay=' + this.maxDelay);\n    this.nextDelay = this.initialDelay;\n    this.timerId = setTimeout(() => {}, 0);\n    clearTimeout(this.timerId);\n  }\n\n  private static getNextId() {\n    return this.nextId++;\n  }\n\n  private trace(text: string) {\n    logging.trace(LogVerbosity.DEBUG, TRACER_NAME, '{' + this.id + '} ' + text);\n  }\n\n  private runTimer(delay: number) {\n    this.trace('runTimer(delay=' + delay + ')');\n    this.endTime = this.startTime;\n    this.endTime.setMilliseconds(\n      this.endTime.getMilliseconds() + delay\n    );\n    clearTimeout(this.timerId);\n    this.timerId = setTimeout(() => {\n      this.trace('timer fired');\n      this.running = false;\n      this.callback();\n    }, delay);\n    if (!this.hasRef) {\n      this.timerId.unref?.();\n    }\n  }\n\n  /**\n   * Call the callback after the current amount of delay time\n   */\n  runOnce() {\n    this.trace('runOnce()');\n    this.running = true;\n    this.startTime = new Date();\n    this.runTimer(this.nextDelay);\n    const nextBackoff = Math.min(\n      this.nextDelay * this.multiplier,\n      this.maxDelay\n    );\n    const jitterMagnitude = nextBackoff * this.jitter;\n    this.nextDelay =\n      nextBackoff + uniformRandom(-jitterMagnitude, jitterMagnitude);\n  }\n\n  /**\n   * Stop the timer. The callback will not be called until `runOnce` is called\n   * again.\n   */\n  stop() {\n    this.trace('stop()');\n    clearTimeout(this.timerId);\n    this.running = false;\n  }\n\n  /**\n   * Reset the delay time to its initial value. If the timer is still running,\n   * retroactively apply that reset to the current timer.\n   */\n  reset() {\n    this.trace('reset() running=' + this.running);\n    this.nextDelay = this.initialDelay;\n    if (this.running) {\n      const now = new Date();\n      const newEndTime = this.startTime;\n      newEndTime.setMilliseconds(newEndTime.getMilliseconds() + this.nextDelay);\n      clearTimeout(this.timerId);\n      if (now < newEndTime) {\n        this.runTimer(newEndTime.getTime() - now.getTime());\n      } else {\n        this.running = false;\n      }\n    }\n  }\n\n  /**\n   * Check whether the timer is currently running.\n   */\n  isRunning() {\n    return this.running;\n  }\n\n  /**\n   * Set that while the timer is running, it should keep the Node process\n   * running.\n   */\n  ref() {\n    this.hasRef = true;\n    this.timerId.ref?.();\n  }\n\n  /**\n   * Set that while the timer is running, it should not keep the Node process\n   * running.\n   */\n  unref() {\n    this.hasRef = false;\n    this.timerId.unref?.();\n  }\n\n  /**\n   * Get the approximate timestamp of when the timer will fire. Only valid if\n   * this.isRunning() is true.\n   */\n  getEndTime() {\n    return this.endTime;\n  }\n}\n", "/*\n * Copyright 2020 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport {\n  LoadBalancer,\n  ChannelControlHelper,\n  TypedLoadBalancingConfig,\n  createLoadBalancer,\n} from './load-balancer';\nimport { Endpoint, SubchannelAddress } from './subchannel-address';\nimport { ChannelOptions } from './channel-options';\nimport { ConnectivityState } from './connectivity-state';\nimport { Picker } from './picker';\nimport type { ChannelRef, SubchannelRef } from './channelz';\nimport { SubchannelInterface } from './subchannel-interface';\nimport { StatusOr } from './call-interface';\n\nconst TYPE_NAME = 'child_load_balancer_helper';\n\nexport class ChildLoadBalancerHandler {\n  private currentChild: LoadBalancer | null = null;\n  private pendingChild: LoadBalancer | null = null;\n  private latestConfig: TypedLoadBalancingConfig | null = null;\n\n  private ChildPolicyHelper = class {\n    private child: LoadBalancer | null = null;\n    constructor(private parent: ChildLoadBalancerHandler) {}\n    createSubchannel(\n      subchannelAddress: SubchannelAddress,\n      subchannelArgs: ChannelOptions\n    ): SubchannelInterface {\n      return this.parent.channelControlHelper.createSubchannel(\n        subchannelAddress,\n        subchannelArgs\n      );\n    }\n    updateState(connectivityState: ConnectivityState, picker: Picker, errorMessage: string | null): void {\n      if (this.calledByPendingChild()) {\n        if (connectivityState === ConnectivityState.CONNECTING) {\n          return;\n        }\n        this.parent.currentChild?.destroy();\n        this.parent.currentChild = this.parent.pendingChild;\n        this.parent.pendingChild = null;\n      } else if (!this.calledByCurrentChild()) {\n        return;\n      }\n      this.parent.channelControlHelper.updateState(connectivityState, picker, errorMessage);\n    }\n    requestReresolution(): void {\n      const latestChild = this.parent.pendingChild ?? this.parent.currentChild;\n      if (this.child === latestChild) {\n        this.parent.channelControlHelper.requestReresolution();\n      }\n    }\n    setChild(newChild: LoadBalancer) {\n      this.child = newChild;\n    }\n    addChannelzChild(child: ChannelRef | SubchannelRef) {\n      this.parent.channelControlHelper.addChannelzChild(child);\n    }\n    removeChannelzChild(child: ChannelRef | SubchannelRef) {\n      this.parent.channelControlHelper.removeChannelzChild(child);\n    }\n\n    private calledByPendingChild(): boolean {\n      return this.child === this.parent.pendingChild;\n    }\n    private calledByCurrentChild(): boolean {\n      return this.child === this.parent.currentChild;\n    }\n  };\n\n  constructor(\n    private readonly channelControlHelper: ChannelControlHelper\n  ) {}\n\n  protected configUpdateRequiresNewPolicyInstance(\n    oldConfig: TypedLoadBalancingConfig,\n    newConfig: TypedLoadBalancingConfig\n  ): boolean {\n    return oldConfig.getLoadBalancerName() !== newConfig.getLoadBalancerName();\n  }\n\n  /**\n   * Prerequisites: lbConfig !== null and lbConfig.name is registered\n   * @param endpointList\n   * @param lbConfig\n   * @param attributes\n   */\n  updateAddressList(\n    endpointList: StatusOr<Endpoint[]>,\n    lbConfig: TypedLoadBalancingConfig,\n    options: ChannelOptions,\n    resolutionNote: string\n  ): boolean {\n    let childToUpdate: LoadBalancer;\n    if (\n      this.currentChild === null ||\n      this.latestConfig === null ||\n      this.configUpdateRequiresNewPolicyInstance(this.latestConfig, lbConfig)\n    ) {\n      const newHelper = new this.ChildPolicyHelper(this);\n      const newChild = createLoadBalancer(lbConfig, newHelper)!;\n      newHelper.setChild(newChild);\n      if (this.currentChild === null) {\n        this.currentChild = newChild;\n        childToUpdate = this.currentChild;\n      } else {\n        if (this.pendingChild) {\n          this.pendingChild.destroy();\n        }\n        this.pendingChild = newChild;\n        childToUpdate = this.pendingChild;\n      }\n    } else {\n      if (this.pendingChild === null) {\n        childToUpdate = this.currentChild;\n      } else {\n        childToUpdate = this.pendingChild;\n      }\n    }\n    this.latestConfig = lbConfig;\n    return childToUpdate.updateAddressList(endpointList, lbConfig, options, resolutionNote);\n  }\n  exitIdle(): void {\n    if (this.currentChild) {\n      this.currentChild.exitIdle();\n      if (this.pendingChild) {\n        this.pendingChild.exitIdle();\n      }\n    }\n  }\n  resetBackoff(): void {\n    if (this.currentChild) {\n      this.currentChild.resetBackoff();\n      if (this.pendingChild) {\n        this.pendingChild.resetBackoff();\n      }\n    }\n  }\n  destroy(): void {\n    /* Note: state updates are only propagated from the child balancer if that\n     * object is equal to this.currentChild or this.pendingChild. Since this\n     * function sets both of those to null, no further state updates will\n     * occur after this function returns. */\n    if (this.currentChild) {\n      this.currentChild.destroy();\n      this.currentChild = null;\n    }\n    if (this.pendingChild) {\n      this.pendingChild.destroy();\n      this.pendingChild = null;\n    }\n  }\n  getTypeName(): string {\n    return TYPE_NAME;\n  }\n}\n", "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport {\n  ChannelControlHelper,\n  LoadBalancer,\n  TypedLoadBalancingConfig,\n  selectLbConfigFromList,\n} from './load-balancer';\nimport {\n  MethodConfig,\n  ServiceConfig,\n  validateServiceConfig,\n} from './service-config';\nimport { ConnectivityState } from './connectivity-state';\nimport { CHANNEL_ARGS_CONFIG_SELECTOR_KEY, ConfigSelector, createResolver, Resolver } from './resolver';\nimport { Picker, UnavailablePicker, QueuePicker } from './picker';\nimport { BackoffOptions, BackoffTimeout } from './backoff-timeout';\nimport { Status } from './constants';\nimport { StatusObject, StatusOr } from './call-interface';\nimport { Metadata } from './metadata';\nimport * as logging from './logging';\nimport { LogVerbosity } from './constants';\nimport { Endpoint } from './subchannel-address';\nimport { GrpcUri, uriToString } from './uri-parser';\nimport { ChildLoadBalancerHandler } from './load-balancer-child-handler';\nimport { ChannelOptions } from './channel-options';\n\nconst TRACER_NAME = 'resolving_load_balancer';\n\nfunction trace(text: string): void {\n  logging.trace(LogVerbosity.DEBUG, TRACER_NAME, text);\n}\n\ntype NameMatchLevel = 'EMPTY' | 'SERVICE' | 'SERVICE_AND_METHOD';\n\n/**\n * Name match levels in order from most to least specific. This is the order in\n * which searches will be performed.\n */\nconst NAME_MATCH_LEVEL_ORDER: NameMatchLevel[] = [\n  'SERVICE_AND_METHOD',\n  'SERVICE',\n  'EMPTY',\n];\n\nfunction hasMatchingName(\n  service: string,\n  method: string,\n  methodConfig: MethodConfig,\n  matchLevel: NameMatchLevel\n): boolean {\n  for (const name of methodConfig.name) {\n    switch (matchLevel) {\n      case 'EMPTY':\n        if (!name.service && !name.method) {\n          return true;\n        }\n        break;\n      case 'SERVICE':\n        if (name.service === service && !name.method) {\n          return true;\n        }\n        break;\n      case 'SERVICE_AND_METHOD':\n        if (name.service === service && name.method === method) {\n          return true;\n        }\n    }\n  }\n  return false;\n}\n\nfunction findMatchingConfig(\n  service: string,\n  method: string,\n  methodConfigs: MethodConfig[],\n  matchLevel: NameMatchLevel\n): MethodConfig | null {\n  for (const config of methodConfigs) {\n    if (hasMatchingName(service, method, config, matchLevel)) {\n      return config;\n    }\n  }\n  return null;\n}\n\nfunction getDefaultConfigSelector(\n  serviceConfig: ServiceConfig | null\n): ConfigSelector {\n  return {\n      invoke(\n      methodName: string,\n      metadata: Metadata\n    ) {\n      const splitName = methodName.split('/').filter(x => x.length > 0);\n      const service = splitName[0] ?? '';\n      const method = splitName[1] ?? '';\n      if (serviceConfig && serviceConfig.methodConfig) {\n        /* Check for the following in order, and return the first method\n        * config that matches:\n        * 1. A name that exactly matches the service and method\n        * 2. A name with no method set that matches the service\n        * 3. An empty name\n        */\n        for (const matchLevel of NAME_MATCH_LEVEL_ORDER) {\n          const matchingConfig = findMatchingConfig(\n            service,\n            method,\n            serviceConfig.methodConfig,\n            matchLevel\n          );\n          if (matchingConfig) {\n            return {\n              methodConfig: matchingConfig,\n              pickInformation: {},\n              status: Status.OK,\n              dynamicFilterFactories: [],\n            };\n          }\n        }\n      }\n      return {\n        methodConfig: { name: [] },\n        pickInformation: {},\n        status: Status.OK,\n        dynamicFilterFactories: [],\n      };\n    },\n    unref() {}\n  };\n}\n\nexport interface ResolutionCallback {\n  (serviceConfig: ServiceConfig, configSelector: ConfigSelector): void;\n}\n\nexport interface ResolutionFailureCallback {\n  (status: StatusObject): void;\n}\n\nexport class ResolvingLoadBalancer implements LoadBalancer {\n  /**\n   * The resolver class constructed for the target address.\n   */\n  private readonly innerResolver: Resolver;\n\n  private readonly childLoadBalancer: ChildLoadBalancerHandler;\n  private latestChildState: ConnectivityState = ConnectivityState.IDLE;\n  private latestChildPicker: Picker = new QueuePicker(this);\n  private latestChildErrorMessage: string | null = null;\n  /**\n   * This resolving load balancer's current connectivity state.\n   */\n  private currentState: ConnectivityState = ConnectivityState.IDLE;\n  private readonly defaultServiceConfig: ServiceConfig;\n  /**\n   * The service config object from the last successful resolution, if\n   * available. A value of null indicates that we have not yet received a valid\n   * service config from the resolver.\n   */\n  private previousServiceConfig: ServiceConfig | null = null;\n\n  /**\n   * The backoff timer for handling name resolution failures.\n   */\n  private readonly backoffTimeout: BackoffTimeout;\n\n  /**\n   * Indicates whether we should attempt to resolve again after the backoff\n   * timer runs out.\n   */\n  private continueResolving = false;\n\n  /**\n   * Wrapper class that behaves like a `LoadBalancer` and also handles name\n   * resolution internally.\n   * @param target The address of the backend to connect to.\n   * @param channelControlHelper `ChannelControlHelper` instance provided by\n   *     this load balancer's owner.\n   * @param defaultServiceConfig The default service configuration to be used\n   *     if none is provided by the name resolver. A `null` value indicates\n   *     that the default behavior should be the default unconfigured behavior.\n   *     In practice, that means using the \"pick first\" load balancer\n   *     implmentation\n   */\n  constructor(\n    private readonly target: GrpcUri,\n    private readonly channelControlHelper: ChannelControlHelper,\n    private readonly channelOptions: ChannelOptions,\n    private readonly onSuccessfulResolution: ResolutionCallback,\n    private readonly onFailedResolution: ResolutionFailureCallback\n  ) {\n    if (channelOptions['grpc.service_config']) {\n      this.defaultServiceConfig = validateServiceConfig(\n        JSON.parse(channelOptions['grpc.service_config']!)\n      );\n    } else {\n      this.defaultServiceConfig = {\n        loadBalancingConfig: [],\n        methodConfig: [],\n      };\n    }\n\n    this.updateState(ConnectivityState.IDLE, new QueuePicker(this), null);\n    this.childLoadBalancer = new ChildLoadBalancerHandler(\n      {\n        createSubchannel:\n          channelControlHelper.createSubchannel.bind(channelControlHelper),\n        requestReresolution: () => {\n          /* If the backoffTimeout is running, we're still backing off from\n           * making resolve requests, so we shouldn't make another one here.\n           * In that case, the backoff timer callback will call\n           * updateResolution */\n          if (this.backoffTimeout.isRunning()) {\n            trace(\n              'requestReresolution delayed by backoff timer until ' +\n                this.backoffTimeout.getEndTime().toISOString()\n            );\n            this.continueResolving = true;\n          } else {\n            this.updateResolution();\n          }\n        },\n        updateState: (newState: ConnectivityState, picker: Picker, errorMessage: string | null) => {\n          this.latestChildState = newState;\n          this.latestChildPicker = picker;\n          this.latestChildErrorMessage = errorMessage;\n          this.updateState(newState, picker, errorMessage);\n        },\n        addChannelzChild:\n          channelControlHelper.addChannelzChild.bind(channelControlHelper),\n        removeChannelzChild:\n          channelControlHelper.removeChannelzChild.bind(channelControlHelper),\n      }\n    );\n    this.innerResolver = createResolver(\n      target,\n      this.handleResolverResult.bind(this),\n      channelOptions\n    );\n    const backoffOptions: BackoffOptions = {\n      initialDelay: channelOptions['grpc.initial_reconnect_backoff_ms'],\n      maxDelay: channelOptions['grpc.max_reconnect_backoff_ms'],\n    };\n    this.backoffTimeout = new BackoffTimeout(() => {\n      if (this.continueResolving) {\n        this.updateResolution();\n        this.continueResolving = false;\n      } else {\n        this.updateState(this.latestChildState, this.latestChildPicker, this.latestChildErrorMessage);\n      }\n    }, backoffOptions);\n    this.backoffTimeout.unref();\n  }\n\n  private handleResolverResult(\n    endpointList: StatusOr<Endpoint[]>,\n    attributes: { [key: string]: unknown },\n    serviceConfig: StatusOr<ServiceConfig> | null,\n    resolutionNote: string\n  ): boolean {\n    this.backoffTimeout.stop();\n    this.backoffTimeout.reset();\n    let resultAccepted = true;\n    let workingServiceConfig: ServiceConfig | null = null;\n    if (serviceConfig === null) {\n      workingServiceConfig = this.defaultServiceConfig;\n    } else if (serviceConfig.ok) {\n      workingServiceConfig = serviceConfig.value;\n    } else {\n      if (this.previousServiceConfig !== null) {\n        workingServiceConfig = this.previousServiceConfig;\n      } else {\n        resultAccepted = false;\n        this.handleResolutionFailure(serviceConfig.error);\n      }\n    }\n\n    if (workingServiceConfig !== null) {\n      const workingConfigList =\n        workingServiceConfig?.loadBalancingConfig ?? [];\n      const loadBalancingConfig = selectLbConfigFromList(\n        workingConfigList,\n        true\n      );\n      if (loadBalancingConfig === null) {\n        resultAccepted = false;\n        this.handleResolutionFailure({\n          code: Status.UNAVAILABLE,\n          details:\n            'All load balancer options in service config are not compatible',\n          metadata: new Metadata(),\n        });\n      } else {\n        resultAccepted = this.childLoadBalancer.updateAddressList(\n          endpointList,\n          loadBalancingConfig,\n          {...this.channelOptions, ...attributes},\n          resolutionNote\n        );\n      }\n    }\n    if (resultAccepted) {\n      this.onSuccessfulResolution(\n        workingServiceConfig!,\n        attributes[CHANNEL_ARGS_CONFIG_SELECTOR_KEY] as ConfigSelector ?? getDefaultConfigSelector(workingServiceConfig!)\n      );\n    }\n    return resultAccepted;\n  }\n\n  private updateResolution() {\n    this.innerResolver.updateResolution();\n    if (this.currentState === ConnectivityState.IDLE) {\n      /* this.latestChildPicker is initialized as new QueuePicker(this), which\n       * is an appropriate value here if the child LB policy is unset.\n       * Otherwise, we want to delegate to the child here, in case that\n       * triggers something. */\n      this.updateState(ConnectivityState.CONNECTING, this.latestChildPicker, this.latestChildErrorMessage);\n    }\n    this.backoffTimeout.runOnce();\n  }\n\n  private updateState(connectivityState: ConnectivityState, picker: Picker, errorMessage: string | null) {\n    trace(\n      uriToString(this.target) +\n        ' ' +\n        ConnectivityState[this.currentState] +\n        ' -> ' +\n        ConnectivityState[connectivityState]\n    );\n    // Ensure that this.exitIdle() is called by the picker\n    if (connectivityState === ConnectivityState.IDLE) {\n      picker = new QueuePicker(this, picker);\n    }\n    this.currentState = connectivityState;\n    this.channelControlHelper.updateState(connectivityState, picker, errorMessage);\n  }\n\n  private handleResolutionFailure(error: StatusObject) {\n    if (this.latestChildState === ConnectivityState.IDLE) {\n      this.updateState(\n        ConnectivityState.TRANSIENT_FAILURE,\n        new UnavailablePicker(error),\n        error.details\n      );\n      this.onFailedResolution(error);\n    }\n  }\n\n  exitIdle() {\n    if (\n      this.currentState === ConnectivityState.IDLE ||\n      this.currentState === ConnectivityState.TRANSIENT_FAILURE\n    ) {\n      if (this.backoffTimeout.isRunning()) {\n        this.continueResolving = true;\n      } else {\n        this.updateResolution();\n      }\n    }\n    this.childLoadBalancer.exitIdle();\n  }\n\n  updateAddressList(\n    endpointList: StatusOr<Endpoint[]>,\n    lbConfig: TypedLoadBalancingConfig | null\n  ): never {\n    throw new Error('updateAddressList not supported on ResolvingLoadBalancer');\n  }\n\n  resetBackoff() {\n    this.backoffTimeout.reset();\n    this.childLoadBalancer.resetBackoff();\n  }\n\n  destroy() {\n    this.childLoadBalancer.destroy();\n    this.innerResolver.destroy();\n    this.backoffTimeout.reset();\n    this.backoffTimeout.stop();\n    this.latestChildState = ConnectivityState.IDLE;\n    this.latestChildPicker = new QueuePicker(this);\n    this.currentState = ConnectivityState.IDLE;\n    this.previousServiceConfig = null;\n    this.continueResolving = false;\n  }\n\n  getTypeName() {\n    return 'resolving_load_balancer';\n  }\n}\n", "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { CompressionAlgorithms } from './compression-algorithms';\n\n/**\n * An interface that contains options used when initializing a Channel instance.\n */\nexport interface ChannelOptions {\n  'grpc.ssl_target_name_override'?: string;\n  'grpc.primary_user_agent'?: string;\n  'grpc.secondary_user_agent'?: string;\n  'grpc.default_authority'?: string;\n  'grpc.keepalive_time_ms'?: number;\n  'grpc.keepalive_timeout_ms'?: number;\n  'grpc.keepalive_permit_without_calls'?: number;\n  'grpc.service_config'?: string;\n  'grpc.max_concurrent_streams'?: number;\n  'grpc.initial_reconnect_backoff_ms'?: number;\n  'grpc.max_reconnect_backoff_ms'?: number;\n  'grpc.use_local_subchannel_pool'?: number;\n  'grpc.max_send_message_length'?: number;\n  'grpc.max_receive_message_length'?: number;\n  'grpc.enable_http_proxy'?: number;\n  /* http_connect_target and http_connect_creds are used for passing data\n   * around internally, and should not be documented as public-facing options\n   */\n  'grpc.http_connect_target'?: string;\n  'grpc.http_connect_creds'?: string;\n  'grpc.default_compression_algorithm'?: CompressionAlgorithms;\n  'grpc.enable_channelz'?: number;\n  'grpc.dns_min_time_between_resolutions_ms'?: number;\n  'grpc.enable_retries'?: number;\n  'grpc.per_rpc_retry_buffer_size'?: number;\n  /* This option is pattered like a core option, but the core does not have\n   * this option. It is closely related to the option\n   * grpc.per_rpc_retry_buffer_size, which is in the core. The core will likely\n   * implement this functionality using the ResourceQuota mechanism, so there\n   * will probably not be any collision or other inconsistency. */\n  'grpc.retry_buffer_size'?: number;\n  'grpc.max_connection_age_ms'?: number;\n  'grpc.max_connection_age_grace_ms'?: number;\n  'grpc.max_connection_idle_ms'?: number;\n  'grpc-node.max_session_memory'?: number;\n  'grpc.service_config_disable_resolution'?: number;\n  'grpc.client_idle_timeout_ms'?: number;\n  /**\n   * Set the enableTrace option in TLS clients and servers\n   */\n  'grpc-node.tls_enable_trace'?: number;\n  'grpc.lb.ring_hash.ring_size_cap'?: number;\n  'grpc-node.retry_max_attempts_limit'?: number;\n  'grpc-node.flow_control_window'?: number;\n  'grpc.server_call_metric_recording'?: number;\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  [key: string]: any;\n}\n\n/**\n * This is for checking provided options at runtime. This is an object for\n * easier membership checking.\n */\nexport const recognizedOptions = {\n  'grpc.ssl_target_name_override': true,\n  'grpc.primary_user_agent': true,\n  'grpc.secondary_user_agent': true,\n  'grpc.default_authority': true,\n  'grpc.keepalive_time_ms': true,\n  'grpc.keepalive_timeout_ms': true,\n  'grpc.keepalive_permit_without_calls': true,\n  'grpc.service_config': true,\n  'grpc.max_concurrent_streams': true,\n  'grpc.initial_reconnect_backoff_ms': true,\n  'grpc.max_reconnect_backoff_ms': true,\n  'grpc.use_local_subchannel_pool': true,\n  'grpc.max_send_message_length': true,\n  'grpc.max_receive_message_length': true,\n  'grpc.enable_http_proxy': true,\n  'grpc.enable_channelz': true,\n  'grpc.dns_min_time_between_resolutions_ms': true,\n  'grpc.enable_retries': true,\n  'grpc.per_rpc_retry_buffer_size': true,\n  'grpc.retry_buffer_size': true,\n  'grpc.max_connection_age_ms': true,\n  'grpc.max_connection_age_grace_ms': true,\n  'grpc-node.max_session_memory': true,\n  'grpc.service_config_disable_resolution': true,\n  'grpc.client_idle_timeout_ms': true,\n  'grpc-node.tls_enable_trace': true,\n  'grpc.lb.ring_hash.ring_size_cap': true,\n  'grpc-node.retry_max_attempts_limit': true,\n  'grpc-node.flow_control_window': true,\n  'grpc.server_call_metric_recording': true\n};\n\nexport function channelOptionsEqual(\n  options1: ChannelOptions,\n  options2: ChannelOptions\n) {\n  const keys1 = Object.keys(options1).sort();\n  const keys2 = Object.keys(options2).sort();\n  if (keys1.length !== keys2.length) {\n    return false;\n  }\n  for (let i = 0; i < keys1.length; i += 1) {\n    if (keys1[i] !== keys2[i]) {\n      return false;\n    }\n    if (options1[keys1[i]] !== options2[keys2[i]]) {\n      return false;\n    }\n  }\n  return true;\n}\n", "/*\n * Copyright 2021 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { isIP, isIPv6 } from 'net';\n\nexport interface TcpSubchannelAddress {\n  port: number;\n  host: string;\n}\n\nexport interface IpcSubchannelAddress {\n  path: string;\n}\n/**\n * This represents a single backend address to connect to. This interface is a\n * subset of net.SocketConnectOpts, i.e. the options described at\n * https://nodejs.org/api/net.html#net_socket_connect_options_connectlistener.\n * Those are in turn a subset of the options that can be passed to http2.connect.\n */\n\nexport type SubchannelAddress = TcpSubchannelAddress | IpcSubchannelAddress;\n\nexport function isTcpSubchannelAddress(\n  address: SubchannelAddress\n): address is TcpSubchannelAddress {\n  return 'port' in address;\n}\n\nexport function subchannelAddressEqual(\n  address1?: SubchannelAddress,\n  address2?: SubchannelAddress\n): boolean {\n  if (!address1 && !address2) {\n    return true;\n  }\n  if (!address1 || !address2) {\n    return false;\n  }\n  if (isTcpSubchannelAddress(address1)) {\n    return (\n      isTcpSubchannelAddress(address2) &&\n      address1.host === address2.host &&\n      address1.port === address2.port\n    );\n  } else {\n    return !isTcpSubchannelAddress(address2) && address1.path === address2.path;\n  }\n}\n\nexport function subchannelAddressToString(address: SubchannelAddress): string {\n  if (isTcpSubchannelAddress(address)) {\n    if (isIPv6(address.host)) {\n      return '[' + address.host + ']:' + address.port;\n    } else {\n      return address.host + ':' + address.port;\n    }\n  } else {\n    return address.path;\n  }\n}\n\nconst DEFAULT_PORT = 443;\n\nexport function stringToSubchannelAddress(\n  addressString: string,\n  port?: number\n): SubchannelAddress {\n  if (isIP(addressString)) {\n    return {\n      host: addressString,\n      port: port ?? DEFAULT_PORT,\n    };\n  } else {\n    return {\n      path: addressString,\n    };\n  }\n}\n\nexport interface Endpoint {\n  addresses: SubchannelAddress[];\n}\n\nexport function endpointEqual(endpoint1: Endpoint, endpoint2: Endpoint) {\n  if (endpoint1.addresses.length !== endpoint2.addresses.length) {\n    return false;\n  }\n  for (let i = 0; i < endpoint1.addresses.length; i++) {\n    if (\n      !subchannelAddressEqual(endpoint1.addresses[i], endpoint2.addresses[i])\n    ) {\n      return false;\n    }\n  }\n  return true;\n}\n\nexport function endpointToString(endpoint: Endpoint): string {\n  return (\n    '[' + endpoint.addresses.map(subchannelAddressToString).join(', ') + ']'\n  );\n}\n\nexport function endpointHasAddress(\n  endpoint: Endpoint,\n  expectedAddress: SubchannelAddress\n): boolean {\n  for (const address of endpoint.addresses) {\n    if (subchannelAddressEqual(address, expectedAddress)) {\n      return true;\n    }\n  }\n  return false;\n}\n\ninterface EndpointMapEntry<ValueType> {\n  key: Endpoint;\n  value: ValueType;\n}\n\nfunction endpointEqualUnordered(\n  endpoint1: Endpoint,\n  endpoint2: Endpoint\n): boolean {\n  if (endpoint1.addresses.length !== endpoint2.addresses.length) {\n    return false;\n  }\n  for (const address1 of endpoint1.addresses) {\n    let matchFound = false;\n    for (const address2 of endpoint2.addresses) {\n      if (subchannelAddressEqual(address1, address2)) {\n        matchFound = true;\n        break;\n      }\n    }\n    if (!matchFound) {\n      return false;\n    }\n  }\n  return true;\n}\n\nexport class EndpointMap<ValueType> {\n  private map: Set<EndpointMapEntry<ValueType>> = new Set();\n\n  get size() {\n    return this.map.size;\n  }\n\n  getForSubchannelAddress(address: SubchannelAddress): ValueType | undefined {\n    for (const entry of this.map) {\n      if (endpointHasAddress(entry.key, address)) {\n        return entry.value;\n      }\n    }\n    return undefined;\n  }\n\n  /**\n   * Delete any entries in this map with keys that are not in endpoints\n   * @param endpoints\n   */\n  deleteMissing(endpoints: Endpoint[]): ValueType[] {\n    const removedValues: ValueType[] = [];\n    for (const entry of this.map) {\n      let foundEntry = false;\n      for (const endpoint of endpoints) {\n        if (endpointEqualUnordered(endpoint, entry.key)) {\n          foundEntry = true;\n        }\n      }\n      if (!foundEntry) {\n        removedValues.push(entry.value);\n        this.map.delete(entry);\n      }\n    }\n    return removedValues;\n  }\n\n  get(endpoint: Endpoint): ValueType | undefined {\n    for (const entry of this.map) {\n      if (endpointEqualUnordered(endpoint, entry.key)) {\n        return entry.value;\n      }\n    }\n    return undefined;\n  }\n\n  set(endpoint: Endpoint, mapEntry: ValueType) {\n    for (const entry of this.map) {\n      if (endpointEqualUnordered(endpoint, entry.key)) {\n        entry.value = mapEntry;\n        return;\n      }\n    }\n    this.map.add({ key: endpoint, value: mapEntry });\n  }\n\n  delete(endpoint: Endpoint) {\n    for (const entry of this.map) {\n      if (endpointEqualUnordered(endpoint, entry.key)) {\n        this.map.delete(entry);\n        return;\n      }\n    }\n  }\n\n  has(endpoint: Endpoint): boolean {\n    for (const entry of this.map) {\n      if (endpointEqualUnordered(endpoint, entry.key)) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  clear() {\n    this.map.clear();\n  }\n\n  *keys(): IterableIterator<Endpoint> {\n    for (const entry of this.map) {\n      yield entry.key;\n    }\n  }\n\n  *values(): IterableIterator<ValueType> {\n    for (const entry of this.map) {\n      yield entry.value;\n    }\n  }\n\n  *entries(): IterableIterator<[Endpoint, ValueType]> {\n    for (const entry of this.map) {\n      yield [entry.key, entry.value];\n    }\n  }\n}\n", "'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nclass TreeNode {\n  constructor(key, value, color = 1 /* TreeNodeColor.RED */) {\n    this._left = undefined;\n    this._right = undefined;\n    this._parent = undefined;\n    this._key = key;\n    this._value = value;\n    this._color = color;\n  }\n  /**\n   * @description Get the pre node.\n   * @returns TreeNode about the pre node.\n   */\n  _pre() {\n    let preNode = this;\n    const isRootOrHeader = preNode._parent._parent === preNode;\n    if (isRootOrHeader && preNode._color === 1 /* TreeNodeColor.RED */) {\n      preNode = preNode._right;\n    } else if (preNode._left) {\n      preNode = preNode._left;\n      while (preNode._right) {\n        preNode = preNode._right;\n      }\n    } else {\n      // Must be root and left is null\n      if (isRootOrHeader) {\n        return preNode._parent;\n      }\n      let pre = preNode._parent;\n      while (pre._left === preNode) {\n        preNode = pre;\n        pre = preNode._parent;\n      }\n      preNode = pre;\n    }\n    return preNode;\n  }\n  /**\n   * @description Get the next node.\n   * @returns TreeNode about the next node.\n   */\n  _next() {\n    let nextNode = this;\n    if (nextNode._right) {\n      nextNode = nextNode._right;\n      while (nextNode._left) {\n        nextNode = nextNode._left;\n      }\n      return nextNode;\n    } else {\n      let pre = nextNode._parent;\n      while (pre._right === nextNode) {\n        nextNode = pre;\n        pre = nextNode._parent;\n      }\n      if (nextNode._right !== pre) {\n        return pre;\n      } else return nextNode;\n    }\n  }\n  /**\n   * @description Rotate left.\n   * @returns TreeNode about moved to original position after rotation.\n   */\n  _rotateLeft() {\n    const PP = this._parent;\n    const V = this._right;\n    const R = V._left;\n    if (PP._parent === this) PP._parent = V;else if (PP._left === this) PP._left = V;else PP._right = V;\n    V._parent = PP;\n    V._left = this;\n    this._parent = V;\n    this._right = R;\n    if (R) R._parent = this;\n    return V;\n  }\n  /**\n   * @description Rotate right.\n   * @returns TreeNode about moved to original position after rotation.\n   */\n  _rotateRight() {\n    const PP = this._parent;\n    const F = this._left;\n    const K = F._right;\n    if (PP._parent === this) PP._parent = F;else if (PP._left === this) PP._left = F;else PP._right = F;\n    F._parent = PP;\n    F._right = this;\n    this._parent = F;\n    this._left = K;\n    if (K) K._parent = this;\n    return F;\n  }\n}\nclass TreeNodeEnableIndex extends TreeNode {\n  constructor() {\n    super(...arguments);\n    this._subTreeSize = 1;\n  }\n  /**\n   * @description Rotate left and do recount.\n   * @returns TreeNode about moved to original position after rotation.\n   */\n  _rotateLeft() {\n    const parent = super._rotateLeft();\n    this._recount();\n    parent._recount();\n    return parent;\n  }\n  /**\n   * @description Rotate right and do recount.\n   * @returns TreeNode about moved to original position after rotation.\n   */\n  _rotateRight() {\n    const parent = super._rotateRight();\n    this._recount();\n    parent._recount();\n    return parent;\n  }\n  _recount() {\n    this._subTreeSize = 1;\n    if (this._left) {\n      this._subTreeSize += this._left._subTreeSize;\n    }\n    if (this._right) {\n      this._subTreeSize += this._right._subTreeSize;\n    }\n  }\n}\n\nclass ContainerIterator {\n  /**\n   * @internal\n   */\n  constructor(iteratorType = 0 /* IteratorType.NORMAL */) {\n    this.iteratorType = iteratorType;\n  }\n  /**\n   * @param iter - The other iterator you want to compare.\n   * @returns Whether this equals to obj.\n   * @example\n   * container.find(1).equals(container.end());\n   */\n  equals(iter) {\n    return this._node === iter._node;\n  }\n}\nclass Base {\n  constructor() {\n    /**\n     * @description Container's size.\n     * @internal\n     */\n    this._length = 0;\n  }\n  /**\n   * @returns The size of the container.\n   * @example\n   * const container = new Vector([1, 2]);\n   * console.log(container.length); // 2\n   */\n  get length() {\n    return this._length;\n  }\n  /**\n   * @returns The size of the container.\n   * @example\n   * const container = new Vector([1, 2]);\n   * console.log(container.size()); // 2\n   */\n  size() {\n    return this._length;\n  }\n  /**\n   * @returns Whether the container is empty.\n   * @example\n   * container.clear();\n   * console.log(container.empty());  // true\n   */\n  empty() {\n    return this._length === 0;\n  }\n}\nclass Container extends Base {}\n\n/**\n * @description Throw an iterator access error.\n * @internal\n */\nfunction throwIteratorAccessError() {\n  throw new RangeError('Iterator access denied!');\n}\n\nclass TreeContainer extends Container {\n  /**\n   * @internal\n   */\n  constructor(cmp = function (x, y) {\n    if (x < y) return -1;\n    if (x > y) return 1;\n    return 0;\n  }, enableIndex = false) {\n    super();\n    /**\n     * @internal\n     */\n    this._root = undefined;\n    this._cmp = cmp;\n    this.enableIndex = enableIndex;\n    this._TreeNodeClass = enableIndex ? TreeNodeEnableIndex : TreeNode;\n    this._header = new this._TreeNodeClass();\n  }\n  /**\n   * @internal\n   */\n  _lowerBound(curNode, key) {\n    let resNode = this._header;\n    while (curNode) {\n      const cmpResult = this._cmp(curNode._key, key);\n      if (cmpResult < 0) {\n        curNode = curNode._right;\n      } else if (cmpResult > 0) {\n        resNode = curNode;\n        curNode = curNode._left;\n      } else return curNode;\n    }\n    return resNode;\n  }\n  /**\n   * @internal\n   */\n  _upperBound(curNode, key) {\n    let resNode = this._header;\n    while (curNode) {\n      const cmpResult = this._cmp(curNode._key, key);\n      if (cmpResult <= 0) {\n        curNode = curNode._right;\n      } else {\n        resNode = curNode;\n        curNode = curNode._left;\n      }\n    }\n    return resNode;\n  }\n  /**\n   * @internal\n   */\n  _reverseLowerBound(curNode, key) {\n    let resNode = this._header;\n    while (curNode) {\n      const cmpResult = this._cmp(curNode._key, key);\n      if (cmpResult < 0) {\n        resNode = curNode;\n        curNode = curNode._right;\n      } else if (cmpResult > 0) {\n        curNode = curNode._left;\n      } else return curNode;\n    }\n    return resNode;\n  }\n  /**\n   * @internal\n   */\n  _reverseUpperBound(curNode, key) {\n    let resNode = this._header;\n    while (curNode) {\n      const cmpResult = this._cmp(curNode._key, key);\n      if (cmpResult < 0) {\n        resNode = curNode;\n        curNode = curNode._right;\n      } else {\n        curNode = curNode._left;\n      }\n    }\n    return resNode;\n  }\n  /**\n   * @internal\n   */\n  _eraseNodeSelfBalance(curNode) {\n    while (true) {\n      const parentNode = curNode._parent;\n      if (parentNode === this._header) return;\n      if (curNode._color === 1 /* TreeNodeColor.RED */) {\n        curNode._color = 0 /* TreeNodeColor.BLACK */;\n        return;\n      }\n      if (curNode === parentNode._left) {\n        const brother = parentNode._right;\n        if (brother._color === 1 /* TreeNodeColor.RED */) {\n          brother._color = 0 /* TreeNodeColor.BLACK */;\n          parentNode._color = 1 /* TreeNodeColor.RED */;\n          if (parentNode === this._root) {\n            this._root = parentNode._rotateLeft();\n          } else parentNode._rotateLeft();\n        } else {\n          if (brother._right && brother._right._color === 1 /* TreeNodeColor.RED */) {\n            brother._color = parentNode._color;\n            parentNode._color = 0 /* TreeNodeColor.BLACK */;\n            brother._right._color = 0 /* TreeNodeColor.BLACK */;\n            if (parentNode === this._root) {\n              this._root = parentNode._rotateLeft();\n            } else parentNode._rotateLeft();\n            return;\n          } else if (brother._left && brother._left._color === 1 /* TreeNodeColor.RED */) {\n            brother._color = 1 /* TreeNodeColor.RED */;\n            brother._left._color = 0 /* TreeNodeColor.BLACK */;\n            brother._rotateRight();\n          } else {\n            brother._color = 1 /* TreeNodeColor.RED */;\n            curNode = parentNode;\n          }\n        }\n      } else {\n        const brother = parentNode._left;\n        if (brother._color === 1 /* TreeNodeColor.RED */) {\n          brother._color = 0 /* TreeNodeColor.BLACK */;\n          parentNode._color = 1 /* TreeNodeColor.RED */;\n          if (parentNode === this._root) {\n            this._root = parentNode._rotateRight();\n          } else parentNode._rotateRight();\n        } else {\n          if (brother._left && brother._left._color === 1 /* TreeNodeColor.RED */) {\n            brother._color = parentNode._color;\n            parentNode._color = 0 /* TreeNodeColor.BLACK */;\n            brother._left._color = 0 /* TreeNodeColor.BLACK */;\n            if (parentNode === this._root) {\n              this._root = parentNode._rotateRight();\n            } else parentNode._rotateRight();\n            return;\n          } else if (brother._right && brother._right._color === 1 /* TreeNodeColor.RED */) {\n            brother._color = 1 /* TreeNodeColor.RED */;\n            brother._right._color = 0 /* TreeNodeColor.BLACK */;\n            brother._rotateLeft();\n          } else {\n            brother._color = 1 /* TreeNodeColor.RED */;\n            curNode = parentNode;\n          }\n        }\n      }\n    }\n  }\n  /**\n   * @internal\n   */\n  _eraseNode(curNode) {\n    if (this._length === 1) {\n      this.clear();\n      return;\n    }\n    let swapNode = curNode;\n    while (swapNode._left || swapNode._right) {\n      if (swapNode._right) {\n        swapNode = swapNode._right;\n        while (swapNode._left) swapNode = swapNode._left;\n      } else {\n        swapNode = swapNode._left;\n      }\n      const key = curNode._key;\n      curNode._key = swapNode._key;\n      swapNode._key = key;\n      const value = curNode._value;\n      curNode._value = swapNode._value;\n      swapNode._value = value;\n      curNode = swapNode;\n    }\n    if (this._header._left === swapNode) {\n      this._header._left = swapNode._parent;\n    } else if (this._header._right === swapNode) {\n      this._header._right = swapNode._parent;\n    }\n    this._eraseNodeSelfBalance(swapNode);\n    let _parent = swapNode._parent;\n    if (swapNode === _parent._left) {\n      _parent._left = undefined;\n    } else _parent._right = undefined;\n    this._length -= 1;\n    this._root._color = 0 /* TreeNodeColor.BLACK */;\n    if (this.enableIndex) {\n      while (_parent !== this._header) {\n        _parent._subTreeSize -= 1;\n        _parent = _parent._parent;\n      }\n    }\n  }\n  /**\n   * @internal\n   */\n  _inOrderTraversal(param) {\n    const pos = typeof param === 'number' ? param : undefined;\n    const callback = typeof param === 'function' ? param : undefined;\n    const nodeList = typeof param === 'undefined' ? [] : undefined;\n    let index = 0;\n    let curNode = this._root;\n    const stack = [];\n    while (stack.length || curNode) {\n      if (curNode) {\n        stack.push(curNode);\n        curNode = curNode._left;\n      } else {\n        curNode = stack.pop();\n        if (index === pos) return curNode;\n        nodeList && nodeList.push(curNode);\n        callback && callback(curNode, index, this);\n        index += 1;\n        curNode = curNode._right;\n      }\n    }\n    return nodeList;\n  }\n  /**\n   * @internal\n   */\n  _insertNodeSelfBalance(curNode) {\n    while (true) {\n      const parentNode = curNode._parent;\n      if (parentNode._color === 0 /* TreeNodeColor.BLACK */) return;\n      const grandParent = parentNode._parent;\n      if (parentNode === grandParent._left) {\n        const uncle = grandParent._right;\n        if (uncle && uncle._color === 1 /* TreeNodeColor.RED */) {\n          uncle._color = parentNode._color = 0 /* TreeNodeColor.BLACK */;\n          if (grandParent === this._root) return;\n          grandParent._color = 1 /* TreeNodeColor.RED */;\n          curNode = grandParent;\n          continue;\n        } else if (curNode === parentNode._right) {\n          curNode._color = 0 /* TreeNodeColor.BLACK */;\n          if (curNode._left) {\n            curNode._left._parent = parentNode;\n          }\n          if (curNode._right) {\n            curNode._right._parent = grandParent;\n          }\n          parentNode._right = curNode._left;\n          grandParent._left = curNode._right;\n          curNode._left = parentNode;\n          curNode._right = grandParent;\n          if (grandParent === this._root) {\n            this._root = curNode;\n            this._header._parent = curNode;\n          } else {\n            const GP = grandParent._parent;\n            if (GP._left === grandParent) {\n              GP._left = curNode;\n            } else GP._right = curNode;\n          }\n          curNode._parent = grandParent._parent;\n          parentNode._parent = curNode;\n          grandParent._parent = curNode;\n          grandParent._color = 1 /* TreeNodeColor.RED */;\n        } else {\n          parentNode._color = 0 /* TreeNodeColor.BLACK */;\n          if (grandParent === this._root) {\n            this._root = grandParent._rotateRight();\n          } else grandParent._rotateRight();\n          grandParent._color = 1 /* TreeNodeColor.RED */;\n          return;\n        }\n      } else {\n        const uncle = grandParent._left;\n        if (uncle && uncle._color === 1 /* TreeNodeColor.RED */) {\n          uncle._color = parentNode._color = 0 /* TreeNodeColor.BLACK */;\n          if (grandParent === this._root) return;\n          grandParent._color = 1 /* TreeNodeColor.RED */;\n          curNode = grandParent;\n          continue;\n        } else if (curNode === parentNode._left) {\n          curNode._color = 0 /* TreeNodeColor.BLACK */;\n          if (curNode._left) {\n            curNode._left._parent = grandParent;\n          }\n          if (curNode._right) {\n            curNode._right._parent = parentNode;\n          }\n          grandParent._right = curNode._left;\n          parentNode._left = curNode._right;\n          curNode._left = grandParent;\n          curNode._right = parentNode;\n          if (grandParent === this._root) {\n            this._root = curNode;\n            this._header._parent = curNode;\n          } else {\n            const GP = grandParent._parent;\n            if (GP._left === grandParent) {\n              GP._left = curNode;\n            } else GP._right = curNode;\n          }\n          curNode._parent = grandParent._parent;\n          parentNode._parent = curNode;\n          grandParent._parent = curNode;\n          grandParent._color = 1 /* TreeNodeColor.RED */;\n        } else {\n          parentNode._color = 0 /* TreeNodeColor.BLACK */;\n          if (grandParent === this._root) {\n            this._root = grandParent._rotateLeft();\n          } else grandParent._rotateLeft();\n          grandParent._color = 1 /* TreeNodeColor.RED */;\n          return;\n        }\n      }\n      if (this.enableIndex) {\n        parentNode._recount();\n        grandParent._recount();\n        curNode._recount();\n      }\n      return;\n    }\n  }\n  /**\n   * @internal\n   */\n  _set(key, value, hint) {\n    if (this._root === undefined) {\n      this._length += 1;\n      this._root = new this._TreeNodeClass(key, value, 0 /* TreeNodeColor.BLACK */);\n      this._root._parent = this._header;\n      this._header._parent = this._header._left = this._header._right = this._root;\n      return this._length;\n    }\n    let curNode;\n    const minNode = this._header._left;\n    const compareToMin = this._cmp(minNode._key, key);\n    if (compareToMin === 0) {\n      minNode._value = value;\n      return this._length;\n    } else if (compareToMin > 0) {\n      minNode._left = new this._TreeNodeClass(key, value);\n      minNode._left._parent = minNode;\n      curNode = minNode._left;\n      this._header._left = curNode;\n    } else {\n      const maxNode = this._header._right;\n      const compareToMax = this._cmp(maxNode._key, key);\n      if (compareToMax === 0) {\n        maxNode._value = value;\n        return this._length;\n      } else if (compareToMax < 0) {\n        maxNode._right = new this._TreeNodeClass(key, value);\n        maxNode._right._parent = maxNode;\n        curNode = maxNode._right;\n        this._header._right = curNode;\n      } else {\n        if (hint !== undefined) {\n          const iterNode = hint._node;\n          if (iterNode !== this._header) {\n            const iterCmpRes = this._cmp(iterNode._key, key);\n            if (iterCmpRes === 0) {\n              iterNode._value = value;\n              return this._length;\n            } else /* istanbul ignore else */if (iterCmpRes > 0) {\n                const preNode = iterNode._pre();\n                const preCmpRes = this._cmp(preNode._key, key);\n                if (preCmpRes === 0) {\n                  preNode._value = value;\n                  return this._length;\n                } else if (preCmpRes < 0) {\n                  curNode = new this._TreeNodeClass(key, value);\n                  if (preNode._right === undefined) {\n                    preNode._right = curNode;\n                    curNode._parent = preNode;\n                  } else {\n                    iterNode._left = curNode;\n                    curNode._parent = iterNode;\n                  }\n                }\n              }\n          }\n        }\n        if (curNode === undefined) {\n          curNode = this._root;\n          while (true) {\n            const cmpResult = this._cmp(curNode._key, key);\n            if (cmpResult > 0) {\n              if (curNode._left === undefined) {\n                curNode._left = new this._TreeNodeClass(key, value);\n                curNode._left._parent = curNode;\n                curNode = curNode._left;\n                break;\n              }\n              curNode = curNode._left;\n            } else if (cmpResult < 0) {\n              if (curNode._right === undefined) {\n                curNode._right = new this._TreeNodeClass(key, value);\n                curNode._right._parent = curNode;\n                curNode = curNode._right;\n                break;\n              }\n              curNode = curNode._right;\n            } else {\n              curNode._value = value;\n              return this._length;\n            }\n          }\n        }\n      }\n    }\n    if (this.enableIndex) {\n      let parent = curNode._parent;\n      while (parent !== this._header) {\n        parent._subTreeSize += 1;\n        parent = parent._parent;\n      }\n    }\n    this._insertNodeSelfBalance(curNode);\n    this._length += 1;\n    return this._length;\n  }\n  /**\n   * @internal\n   */\n  _getTreeNodeByKey(curNode, key) {\n    while (curNode) {\n      const cmpResult = this._cmp(curNode._key, key);\n      if (cmpResult < 0) {\n        curNode = curNode._right;\n      } else if (cmpResult > 0) {\n        curNode = curNode._left;\n      } else return curNode;\n    }\n    return curNode || this._header;\n  }\n  clear() {\n    this._length = 0;\n    this._root = undefined;\n    this._header._parent = undefined;\n    this._header._left = this._header._right = undefined;\n  }\n  /**\n   * @description Update node's key by iterator.\n   * @param iter - The iterator you want to change.\n   * @param key - The key you want to update.\n   * @returns Whether the modification is successful.\n   * @example\n   * const st = new orderedSet([1, 2, 5]);\n   * const iter = st.find(2);\n   * st.updateKeyByIterator(iter, 3); // then st will become [1, 3, 5]\n   */\n  updateKeyByIterator(iter, key) {\n    const node = iter._node;\n    if (node === this._header) {\n      throwIteratorAccessError();\n    }\n    if (this._length === 1) {\n      node._key = key;\n      return true;\n    }\n    const nextKey = node._next()._key;\n    if (node === this._header._left) {\n      if (this._cmp(nextKey, key) > 0) {\n        node._key = key;\n        return true;\n      }\n      return false;\n    }\n    const preKey = node._pre()._key;\n    if (node === this._header._right) {\n      if (this._cmp(preKey, key) < 0) {\n        node._key = key;\n        return true;\n      }\n      return false;\n    }\n    if (this._cmp(preKey, key) >= 0 || this._cmp(nextKey, key) <= 0) return false;\n    node._key = key;\n    return true;\n  }\n  eraseElementByPos(pos) {\n    if (pos < 0 || pos > this._length - 1) {\n      throw new RangeError();\n    }\n    const node = this._inOrderTraversal(pos);\n    this._eraseNode(node);\n    return this._length;\n  }\n  /**\n   * @description Remove the element of the specified key.\n   * @param key - The key you want to remove.\n   * @returns Whether erase successfully.\n   */\n  eraseElementByKey(key) {\n    if (this._length === 0) return false;\n    const curNode = this._getTreeNodeByKey(this._root, key);\n    if (curNode === this._header) return false;\n    this._eraseNode(curNode);\n    return true;\n  }\n  eraseElementByIterator(iter) {\n    const node = iter._node;\n    if (node === this._header) {\n      throwIteratorAccessError();\n    }\n    const hasNoRight = node._right === undefined;\n    const isNormal = iter.iteratorType === 0 /* IteratorType.NORMAL */;\n    // For the normal iterator, the `next` node will be swapped to `this` node when has right.\n    if (isNormal) {\n      // So we should move it to next when it's right is null.\n      if (hasNoRight) iter.next();\n    } else {\n      // For the reverse iterator, only when it doesn't have right and has left the `next` node will be swapped.\n      // So when it has right, or it is a leaf node we should move it to `next`.\n      if (!hasNoRight || node._left === undefined) iter.next();\n    }\n    this._eraseNode(node);\n    return iter;\n  }\n  /**\n   * @description Get the height of the tree.\n   * @returns Number about the height of the RB-tree.\n   */\n  getHeight() {\n    if (this._length === 0) return 0;\n    function traversal(curNode) {\n      if (!curNode) return 0;\n      return Math.max(traversal(curNode._left), traversal(curNode._right)) + 1;\n    }\n    return traversal(this._root);\n  }\n}\n\nclass TreeIterator extends ContainerIterator {\n  /**\n   * @internal\n   */\n  constructor(node, header, iteratorType) {\n    super(iteratorType);\n    this._node = node;\n    this._header = header;\n    if (this.iteratorType === 0 /* IteratorType.NORMAL */) {\n      this.pre = function () {\n        if (this._node === this._header._left) {\n          throwIteratorAccessError();\n        }\n        this._node = this._node._pre();\n        return this;\n      };\n      this.next = function () {\n        if (this._node === this._header) {\n          throwIteratorAccessError();\n        }\n        this._node = this._node._next();\n        return this;\n      };\n    } else {\n      this.pre = function () {\n        if (this._node === this._header._right) {\n          throwIteratorAccessError();\n        }\n        this._node = this._node._next();\n        return this;\n      };\n      this.next = function () {\n        if (this._node === this._header) {\n          throwIteratorAccessError();\n        }\n        this._node = this._node._pre();\n        return this;\n      };\n    }\n  }\n  /**\n   * @description Get the sequential index of the iterator in the tree container.<br/>\n   *              <strong>Note:</strong>\n   *              This function only takes effect when the specified tree container `enableIndex = true`.\n   * @returns The index subscript of the node in the tree.\n   * @example\n   * const st = new OrderedSet([1, 2, 3], true);\n   * console.log(st.begin().next().index);  // 1\n   */\n  get index() {\n    let _node = this._node;\n    const root = this._header._parent;\n    if (_node === this._header) {\n      if (root) {\n        return root._subTreeSize - 1;\n      }\n      return 0;\n    }\n    let index = 0;\n    if (_node._left) {\n      index += _node._left._subTreeSize;\n    }\n    while (_node !== root) {\n      const _parent = _node._parent;\n      if (_node === _parent._right) {\n        index += 1;\n        if (_parent._left) {\n          index += _parent._left._subTreeSize;\n        }\n      }\n      _node = _parent;\n    }\n    return index;\n  }\n  isAccessible() {\n    return this._node !== this._header;\n  }\n}\n\nclass OrderedMapIterator extends TreeIterator {\n  constructor(node, header, container, iteratorType) {\n    super(node, header, iteratorType);\n    this.container = container;\n  }\n  get pointer() {\n    if (this._node === this._header) {\n      throwIteratorAccessError();\n    }\n    const self = this;\n    return new Proxy([], {\n      get(target, prop) {\n        if (prop === '0') return self._node._key;else if (prop === '1') return self._node._value;\n        target[0] = self._node._key;\n        target[1] = self._node._value;\n        return target[prop];\n      },\n      set(_, prop, newValue) {\n        if (prop !== '1') {\n          throw new TypeError('prop must be 1');\n        }\n        self._node._value = newValue;\n        return true;\n      }\n    });\n  }\n  copy() {\n    return new OrderedMapIterator(this._node, this._header, this.container, this.iteratorType);\n  }\n}\nclass OrderedMap extends TreeContainer {\n  /**\n   * @param container - The initialization container.\n   * @param cmp - The compare function.\n   * @param enableIndex - Whether to enable iterator indexing function.\n   * @example\n   * new OrderedMap();\n   * new OrderedMap([[0, 1], [2, 1]]);\n   * new OrderedMap([[0, 1], [2, 1]], (x, y) => x - y);\n   * new OrderedMap([[0, 1], [2, 1]], (x, y) => x - y, true);\n   */\n  constructor(container = [], cmp, enableIndex) {\n    super(cmp, enableIndex);\n    const self = this;\n    container.forEach(function (el) {\n      self.setElement(el[0], el[1]);\n    });\n  }\n  begin() {\n    return new OrderedMapIterator(this._header._left || this._header, this._header, this);\n  }\n  end() {\n    return new OrderedMapIterator(this._header, this._header, this);\n  }\n  rBegin() {\n    return new OrderedMapIterator(this._header._right || this._header, this._header, this, 1 /* IteratorType.REVERSE */);\n  }\n\n  rEnd() {\n    return new OrderedMapIterator(this._header, this._header, this, 1 /* IteratorType.REVERSE */);\n  }\n\n  front() {\n    if (this._length === 0) return;\n    const minNode = this._header._left;\n    return [minNode._key, minNode._value];\n  }\n  back() {\n    if (this._length === 0) return;\n    const maxNode = this._header._right;\n    return [maxNode._key, maxNode._value];\n  }\n  lowerBound(key) {\n    const resNode = this._lowerBound(this._root, key);\n    return new OrderedMapIterator(resNode, this._header, this);\n  }\n  upperBound(key) {\n    const resNode = this._upperBound(this._root, key);\n    return new OrderedMapIterator(resNode, this._header, this);\n  }\n  reverseLowerBound(key) {\n    const resNode = this._reverseLowerBound(this._root, key);\n    return new OrderedMapIterator(resNode, this._header, this);\n  }\n  reverseUpperBound(key) {\n    const resNode = this._reverseUpperBound(this._root, key);\n    return new OrderedMapIterator(resNode, this._header, this);\n  }\n  forEach(callback) {\n    this._inOrderTraversal(function (node, index, map) {\n      callback([node._key, node._value], index, map);\n    });\n  }\n  /**\n   * @description Insert a key-value pair or set value by the given key.\n   * @param key - The key want to insert.\n   * @param value - The value want to set.\n   * @param hint - You can give an iterator hint to improve insertion efficiency.\n   * @return The size of container after setting.\n   * @example\n   * const mp = new OrderedMap([[2, 0], [4, 0], [5, 0]]);\n   * const iter = mp.begin();\n   * mp.setElement(1, 0);\n   * mp.setElement(3, 0, iter);  // give a hint will be faster.\n   */\n  setElement(key, value, hint) {\n    return this._set(key, value, hint);\n  }\n  getElementByPos(pos) {\n    if (pos < 0 || pos > this._length - 1) {\n      throw new RangeError();\n    }\n    const node = this._inOrderTraversal(pos);\n    return [node._key, node._value];\n  }\n  find(key) {\n    const curNode = this._getTreeNodeByKey(this._root, key);\n    return new OrderedMapIterator(curNode, this._header, this);\n  }\n  /**\n   * @description Get the value of the element of the specified key.\n   * @param key - The specified key you want to get.\n   * @example\n   * const val = container.getElementByKey(1);\n   */\n  getElementByKey(key) {\n    const curNode = this._getTreeNodeByKey(this._root, key);\n    return curNode._value;\n  }\n  union(other) {\n    const self = this;\n    other.forEach(function (el) {\n      self.setElement(el[0], el[1]);\n    });\n    return this._length;\n  }\n  *[Symbol.iterator]() {\n    const length = this._length;\n    const nodeList = this._inOrderTraversal();\n    for (let i = 0; i < length; ++i) {\n      const node = nodeList[i];\n      yield [node._key, node._value];\n    }\n  }\n}\n\nexports.OrderedMap = OrderedMap;\n//# sourceMappingURL=index.js.map\n", "export const enum TreeNodeColor {\n  RED = 1,\n  BLACK = 0\n}\n\nexport class TreeNode<K, V> {\n  _color: TreeNodeColor;\n  _key: K | undefined;\n  _value: V | undefined;\n  _left: TreeNode<K, V> | undefined = undefined;\n  _right: TreeNode<K, V> | undefined = undefined;\n  _parent: TreeNode<K, V> | undefined = undefined;\n  constructor(\n    key?: K,\n    value?: V,\n    color: TreeNodeColor = TreeNodeColor.RED\n  ) {\n    this._key = key;\n    this._value = value;\n    this._color = color;\n  }\n  /**\n   * @description Get the pre node.\n   * @returns TreeNode about the pre node.\n   */\n  _pre() {\n    let preNode: TreeNode<K, V> = this;\n    const isRootOrHeader = preNode._parent!._parent === preNode;\n    if (isRootOrHeader && preNode._color === TreeNodeColor.RED) {\n      preNode = preNode._right!;\n    } else if (preNode._left) {\n      preNode = preNode._left;\n      while (preNode._right) {\n        preNode = preNode._right;\n      }\n    } else {\n      // Must be root and left is null\n      if (isRootOrHeader) {\n        return preNode._parent!;\n      }\n      let pre = preNode._parent!;\n      while (pre._left === preNode) {\n        preNode = pre;\n        pre = preNode._parent!;\n      }\n      preNode = pre;\n    }\n    return preNode;\n  }\n  /**\n   * @description Get the next node.\n   * @returns TreeNode about the next node.\n   */\n  _next() {\n    let nextNode: TreeNode<K, V> = this;\n    if (nextNode._right) {\n      nextNode = nextNode._right;\n      while (nextNode._left) {\n        nextNode = nextNode._left;\n      }\n      return nextNode;\n    } else {\n      let pre = nextNode._parent!;\n      while (pre._right === nextNode) {\n        nextNode = pre;\n        pre = nextNode._parent!;\n      }\n      if (nextNode._right !== pre) {\n        return pre;\n      } else return nextNode;\n    }\n  }\n  /**\n   * @description Rotate left.\n   * @returns TreeNode about moved to original position after rotation.\n   */\n  _rotateLeft() {\n    const PP = this._parent!;\n    const V = this._right!;\n    const R = V._left;\n\n    if (PP._parent === this) PP._parent = V;\n    else if (PP._left === this) PP._left = V;\n    else PP._right = V;\n\n    V._parent = PP;\n    V._left = this;\n\n    this._parent = V;\n    this._right = R;\n\n    if (R) R._parent = this;\n\n    return V;\n  }\n  /**\n   * @description Rotate right.\n   * @returns TreeNode about moved to original position after rotation.\n   */\n  _rotateRight() {\n    const PP = this._parent!;\n    const F = this._left!;\n    const K = F._right;\n\n    if (PP._parent === this) PP._parent = F;\n    else if (PP._left === this) PP._left = F;\n    else PP._right = F;\n\n    F._parent = PP;\n    F._right = this;\n\n    this._parent = F;\n    this._left = K;\n\n    if (K) K._parent = this;\n\n    return F;\n  }\n}\n\nexport class TreeNodeEnableIndex<K, V> extends TreeNode<K, V> {\n  _subTreeSize = 1;\n  /**\n   * @description Rotate left and do recount.\n   * @returns TreeNode about moved to original position after rotation.\n   */\n  _rotateLeft() {\n    const parent = super._rotateLeft() as TreeNodeEnableIndex<K, V>;\n    this._recount();\n    parent._recount();\n    return parent;\n  }\n  /**\n   * @description Rotate right and do recount.\n   * @returns TreeNode about moved to original position after rotation.\n   */\n  _rotateRight() {\n    const parent = super._rotateRight() as TreeNodeEnableIndex<K, V>;\n    this._recount();\n    parent._recount();\n    return parent;\n  }\n  _recount() {\n    this._subTreeSize = 1;\n    if (this._left) {\n      this._subTreeSize += (this._left as TreeNodeEnableIndex<K, V>)._subTreeSize;\n    }\n    if (this._right) {\n      this._subTreeSize += (this._right as TreeNodeEnableIndex<K, V>)._subTreeSize;\n    }\n  }\n}\n", "/**\n * @description The iterator type including `NORMAL` and `REVERSE`.\n */\nexport const enum IteratorType {\n  NORMAL = 0,\n  REVERSE = 1\n}\n\nexport abstract class ContainerIterator<T> {\n  /**\n   * @description The container pointed to by the iterator.\n   */\n  abstract readonly container: Container<T>;\n  /**\n   * @internal\n   */\n  abstract _node: unknown;\n  /**\n   * @description Iterator's type.\n   * @example\n   * console.log(container.end().iteratorType === IteratorType.NORMAL);  // true\n   */\n  readonly iteratorType: IteratorType;\n  /**\n   * @internal\n   */\n  protected constructor(iteratorType = IteratorType.NORMAL) {\n    this.iteratorType = iteratorType;\n  }\n  /**\n   * @param iter - The other iterator you want to compare.\n   * @returns Whether this equals to obj.\n   * @example\n   * container.find(1).equals(container.end());\n   */\n  equals(iter: ContainerIterator<T>) {\n    return this._node === iter._node;\n  }\n  /**\n   * @description Pointers to element.\n   * @returns The value of the pointer's element.\n   * @example\n   * const val = container.begin().pointer;\n   */\n  abstract get pointer(): T;\n  /**\n   * @description Set pointer's value (some containers are unavailable).\n   * @param newValue - The new value you want to set.\n   * @example\n   * (<LinkList<number>>container).begin().pointer = 1;\n   */\n  abstract set pointer(newValue: T);\n  /**\n   * @description Move `this` iterator to pre.\n   * @returns The iterator's self.\n   * @example\n   * const iter = container.find(1);  // container = [0, 1]\n   * const pre = iter.pre();\n   * console.log(pre === iter);  // true\n   * console.log(pre.equals(iter));  // true\n   * console.log(pre.pointer, iter.pointer); // 0, 0\n   */\n  abstract pre(): this;\n  /**\n   * @description Move `this` iterator to next.\n   * @returns The iterator's self.\n   * @example\n   * const iter = container.find(1);  // container = [1, 2]\n   * const next = iter.next();\n   * console.log(next === iter);  // true\n   * console.log(next.equals(iter));  // true\n   * console.log(next.pointer, iter.pointer); // 2, 2\n   */\n  abstract next(): this;\n  /**\n   * @description Get a copy of itself.\n   * @returns The copy of self.\n   * @example\n   * const iter = container.find(1);  // container = [1, 2]\n   * const next = iter.copy().next();\n   * console.log(next === iter);  // false\n   * console.log(next.equals(iter));  // false\n   * console.log(next.pointer, iter.pointer); // 2, 1\n   */\n  abstract copy(): ContainerIterator<T>;\n  abstract isAccessible(): boolean;\n}\n\nexport abstract class Base {\n  /**\n   * @description Container's size.\n   * @internal\n   */\n  protected _length = 0;\n  /**\n   * @returns The size of the container.\n   * @example\n   * const container = new Vector([1, 2]);\n   * console.log(container.length); // 2\n   */\n  get length() {\n    return this._length;\n  }\n  /**\n   * @returns The size of the container.\n   * @example\n   * const container = new Vector([1, 2]);\n   * console.log(container.size()); // 2\n   */\n  size() {\n    return this._length;\n  }\n  /**\n   * @returns Whether the container is empty.\n   * @example\n   * container.clear();\n   * console.log(container.empty());  // true\n   */\n  empty() {\n    return this._length === 0;\n  }\n  /**\n   * @description Clear the container.\n   * @example\n   * container.clear();\n   * console.log(container.empty());  // true\n   */\n  abstract clear(): void;\n}\n\nexport abstract class Container<T> extends Base {\n  /**\n   * @returns Iterator pointing to the beginning element.\n   * @example\n   * const begin = container.begin();\n   * const end = container.end();\n   * for (const it = begin; !it.equals(end); it.next()) {\n   *   doSomething(it.pointer);\n   * }\n   */\n  abstract begin(): ContainerIterator<T>;\n  /**\n   * @returns Iterator pointing to the super end like c++.\n   * @example\n   * const begin = container.begin();\n   * const end = container.end();\n   * for (const it = begin; !it.equals(end); it.next()) {\n   *   doSomething(it.pointer);\n   * }\n   */\n  abstract end(): ContainerIterator<T>;\n  /**\n   * @returns Iterator pointing to the end element.\n   * @example\n   * const rBegin = container.rBegin();\n   * const rEnd = container.rEnd();\n   * for (const it = rBegin; !it.equals(rEnd); it.next()) {\n   *   doSomething(it.pointer);\n   * }\n   */\n  abstract rBegin(): ContainerIterator<T>;\n  /**\n   * @returns Iterator pointing to the super begin like c++.\n   * @example\n   * const rBegin = container.rBegin();\n   * const rEnd = container.rEnd();\n   * for (const it = rBegin; !it.equals(rEnd); it.next()) {\n   *   doSomething(it.pointer);\n   * }\n   */\n  abstract rEnd(): ContainerIterator<T>;\n  /**\n   * @returns The first element of the container.\n   */\n  abstract front(): T | undefined;\n  /**\n   * @returns The last element of the container.\n   */\n  abstract back(): T | undefined;\n  /**\n   * @param element - The element you want to find.\n   * @returns An iterator pointing to the element if found, or super end if not found.\n   * @example\n   * container.find(1).equals(container.end());\n   */\n  abstract find(element: T): ContainerIterator<T>;\n  /**\n   * @description Iterate over all elements in the container.\n   * @param callback - Callback function like Array.forEach.\n   * @example\n   * container.forEach((element, index) => console.log(element, index));\n   */\n  abstract forEach(callback: (element: T, index: number, container: Container<T>) => void): void;\n  /**\n   * @description Gets the value of the element at the specified position.\n   * @example\n   * const val = container.getElementByPos(-1); // throw a RangeError\n   */\n  abstract getElementByPos(pos: number): T;\n  /**\n   * @description Removes the element at the specified position.\n   * @param pos - The element's position you want to remove.\n   * @returns The container length after erasing.\n   * @example\n   * container.eraseElementByPos(-1); // throw a RangeError\n   */\n  abstract eraseElementByPos(pos: number): number;\n  /**\n   * @description Removes element by iterator and move `iter` to next.\n   * @param iter - The iterator you want to erase.\n   * @returns The next iterator.\n   * @example\n   * container.eraseElementByIterator(container.begin());\n   * container.eraseElementByIterator(container.end()); // throw a RangeError\n   */\n  abstract eraseElementByIterator(\n    iter: ContainerIterator<T>\n  ): ContainerIterator<T>;\n  /**\n   * @description Using for `for...of` syntax like Array.\n   * @example\n   * for (const element of container) {\n   *   console.log(element);\n   * }\n   */\n  abstract [Symbol.iterator](): Generator<T, void>;\n}\n\n/**\n * @description The initial data type passed in when initializing the container.\n */\nexport type initContainer<T> = {\n  size?: number | (() => number);\n  length?: number;\n  forEach: (callback: (el: T) => void) => void;\n}\n", "/**\n * @description Throw an iterator access error.\n * @internal\n */\nexport function throwIteratorAccessError() {\n  throw new RangeError('Iterator access denied!');\n}\n", "import type TreeIterator from './TreeIterator';\nimport { TreeNode, TreeNodeColor, TreeNodeEnableIndex } from './TreeNode';\nimport { Container, IteratorType } from '@/container/ContainerBase';\nimport $checkWithinAccessParams from '@/utils/checkParams.macro';\nimport { throwIteratorAccessError } from '@/utils/throwError';\n\nabstract class TreeContainer<K, V> extends Container<K | [K, V]> {\n  enableIndex: boolean;\n  /**\n   * @internal\n   */\n  protected _header: TreeNode<K, V>;\n  /**\n   * @internal\n   */\n  protected _root: TreeNode<K, V> | undefined = undefined;\n  /**\n   * @internal\n   */\n  protected readonly _cmp: (x: K, y: K) => number;\n  /**\n   * @internal\n   */\n  protected readonly _TreeNodeClass: typeof TreeNode | typeof TreeNodeEnableIndex;\n  /**\n   * @internal\n   */\n  protected constructor(\n    cmp: (x: K, y: K) => number =\n    function (x: K, y: K) {\n      if (x < y) return -1;\n      if (x > y) return 1;\n      return 0;\n    },\n    enableIndex = false\n  ) {\n    super();\n    this._cmp = cmp;\n    this.enableIndex = enableIndex;\n    this._TreeNodeClass = enableIndex ? TreeNodeEnableIndex : TreeNode;\n    this._header = new this._TreeNodeClass();\n  }\n  /**\n   * @internal\n   */\n  protected _lowerBound(curNode: TreeNode<K, V> | undefined, key: K) {\n    let resNode = this._header;\n    while (curNode) {\n      const cmpResult = this._cmp(curNode._key!, key);\n      if (cmpResult < 0) {\n        curNode = curNode._right;\n      } else if (cmpResult > 0) {\n        resNode = curNode;\n        curNode = curNode._left;\n      } else return curNode;\n    }\n    return resNode;\n  }\n  /**\n   * @internal\n   */\n  protected _upperBound(curNode: TreeNode<K, V> | undefined, key: K) {\n    let resNode = this._header;\n    while (curNode) {\n      const cmpResult = this._cmp(curNode._key!, key);\n      if (cmpResult <= 0) {\n        curNode = curNode._right;\n      } else {\n        resNode = curNode;\n        curNode = curNode._left;\n      }\n    }\n    return resNode;\n  }\n  /**\n   * @internal\n   */\n  protected _reverseLowerBound(curNode: TreeNode<K, V> | undefined, key: K) {\n    let resNode = this._header;\n    while (curNode) {\n      const cmpResult = this._cmp(curNode._key!, key);\n      if (cmpResult < 0) {\n        resNode = curNode;\n        curNode = curNode._right;\n      } else if (cmpResult > 0) {\n        curNode = curNode._left;\n      } else return curNode;\n    }\n    return resNode;\n  }\n  /**\n   * @internal\n   */\n  protected _reverseUpperBound(curNode: TreeNode<K, V> | undefined, key: K) {\n    let resNode = this._header;\n    while (curNode) {\n      const cmpResult = this._cmp(curNode._key!, key);\n      if (cmpResult < 0) {\n        resNode = curNode;\n        curNode = curNode._right;\n      } else {\n        curNode = curNode._left;\n      }\n    }\n    return resNode;\n  }\n  /**\n   * @internal\n   */\n  protected _eraseNodeSelfBalance(curNode: TreeNode<K, V>) {\n    while (true) {\n      const parentNode = curNode._parent!;\n      if (parentNode === this._header) return;\n      if (curNode._color === TreeNodeColor.RED) {\n        curNode._color = TreeNodeColor.BLACK;\n        return;\n      }\n      if (curNode === parentNode._left) {\n        const brother = parentNode._right!;\n        if (brother._color === TreeNodeColor.RED) {\n          brother._color = TreeNodeColor.BLACK;\n          parentNode._color = TreeNodeColor.RED;\n          if (parentNode === this._root) {\n            this._root = parentNode._rotateLeft();\n          } else parentNode._rotateLeft();\n        } else {\n          if (brother._right && brother._right._color === TreeNodeColor.RED) {\n            brother._color = parentNode._color;\n            parentNode._color = TreeNodeColor.BLACK;\n            brother._right._color = TreeNodeColor.BLACK;\n            if (parentNode === this._root) {\n              this._root = parentNode._rotateLeft();\n            } else parentNode._rotateLeft();\n            return;\n          } else if (brother._left && brother._left._color === TreeNodeColor.RED) {\n            brother._color = TreeNodeColor.RED;\n            brother._left._color = TreeNodeColor.BLACK;\n            brother._rotateRight();\n          } else {\n            brother._color = TreeNodeColor.RED;\n            curNode = parentNode;\n          }\n        }\n      } else {\n        const brother = parentNode._left!;\n        if (brother._color === TreeNodeColor.RED) {\n          brother._color = TreeNodeColor.BLACK;\n          parentNode._color = TreeNodeColor.RED;\n          if (parentNode === this._root) {\n            this._root = parentNode._rotateRight();\n          } else parentNode._rotateRight();\n        } else {\n          if (brother._left && brother._left._color === TreeNodeColor.RED) {\n            brother._color = parentNode._color;\n            parentNode._color = TreeNodeColor.BLACK;\n            brother._left._color = TreeNodeColor.BLACK;\n            if (parentNode === this._root) {\n              this._root = parentNode._rotateRight();\n            } else parentNode._rotateRight();\n            return;\n          } else if (brother._right && brother._right._color === TreeNodeColor.RED) {\n            brother._color = TreeNodeColor.RED;\n            brother._right._color = TreeNodeColor.BLACK;\n            brother._rotateLeft();\n          } else {\n            brother._color = TreeNodeColor.RED;\n            curNode = parentNode;\n          }\n        }\n      }\n    }\n  }\n  /**\n   * @internal\n   */\n  protected _eraseNode(curNode: TreeNode<K, V>) {\n    if (this._length === 1) {\n      this.clear();\n      return;\n    }\n    let swapNode = curNode;\n    while (swapNode._left || swapNode._right) {\n      if (swapNode._right) {\n        swapNode = swapNode._right;\n        while (swapNode._left) swapNode = swapNode._left;\n      } else {\n        swapNode = swapNode._left!;\n      }\n      const key = curNode._key;\n      curNode._key = swapNode._key;\n      swapNode._key = key;\n      const value = curNode._value;\n      curNode._value = swapNode._value;\n      swapNode._value = value;\n      curNode = swapNode;\n    }\n    if (this._header._left === swapNode) {\n      this._header._left = swapNode._parent;\n    } else if (this._header._right === swapNode) {\n      this._header._right = swapNode._parent;\n    }\n    this._eraseNodeSelfBalance(swapNode);\n    let _parent = swapNode._parent as TreeNodeEnableIndex<K, V>;\n    if (swapNode === _parent._left) {\n      _parent._left = undefined;\n    } else _parent._right = undefined;\n    this._length -= 1;\n    this._root!._color = TreeNodeColor.BLACK;\n    if (this.enableIndex) {\n      while (_parent !== this._header) {\n        _parent._subTreeSize -= 1;\n        _parent = _parent._parent as TreeNodeEnableIndex<K, V>;\n      }\n    }\n  }\n  protected _inOrderTraversal(): TreeNode<K, V>[];\n  protected _inOrderTraversal(pos: number): TreeNode<K, V>;\n  protected _inOrderTraversal(\n    callback: (node: TreeNode<K, V>, index: number, map: this) => void\n  ): TreeNode<K, V>;\n  /**\n   * @internal\n   */\n  protected _inOrderTraversal(\n    param?: number | ((node: TreeNode<K, V>, index: number, map: this) => void)\n  ) {\n    const pos = typeof param === 'number' ? param : undefined;\n    const callback = typeof param === 'function' ? param : undefined;\n    const nodeList = typeof param === 'undefined' ? <TreeNode<K, V>[]>[] : undefined;\n    let index = 0;\n    let curNode = this._root;\n    const stack: TreeNode<K, V>[] = [];\n    while (stack.length || curNode) {\n      if (curNode) {\n        stack.push(curNode);\n        curNode = curNode._left;\n      } else {\n        curNode = stack.pop()!;\n        if (index === pos) return curNode;\n        nodeList && nodeList.push(curNode);\n        callback && callback(curNode, index, this);\n        index += 1;\n        curNode = curNode._right;\n      }\n    }\n    return nodeList;\n  }\n  /**\n   * @internal\n   */\n  protected _insertNodeSelfBalance(curNode: TreeNode<K, V>) {\n    while (true) {\n      const parentNode = curNode._parent!;\n      if (parentNode._color === TreeNodeColor.BLACK) return;\n      const grandParent = parentNode._parent!;\n      if (parentNode === grandParent._left) {\n        const uncle = grandParent._right;\n        if (uncle && uncle._color === TreeNodeColor.RED) {\n          uncle._color = parentNode._color = TreeNodeColor.BLACK;\n          if (grandParent === this._root) return;\n          grandParent._color = TreeNodeColor.RED;\n          curNode = grandParent;\n          continue;\n        } else if (curNode === parentNode._right) {\n          curNode._color = TreeNodeColor.BLACK;\n          if (curNode._left) {\n            curNode._left._parent = parentNode;\n          }\n          if (curNode._right) {\n            curNode._right._parent = grandParent;\n          }\n          parentNode._right = curNode._left;\n          grandParent._left = curNode._right;\n          curNode._left = parentNode;\n          curNode._right = grandParent;\n          if (grandParent === this._root) {\n            this._root = curNode;\n            this._header._parent = curNode;\n          } else {\n            const GP = grandParent._parent!;\n            if (GP._left === grandParent) {\n              GP._left = curNode;\n            } else GP._right = curNode;\n          }\n          curNode._parent = grandParent._parent;\n          parentNode._parent = curNode;\n          grandParent._parent = curNode;\n          grandParent._color = TreeNodeColor.RED;\n        } else {\n          parentNode._color = TreeNodeColor.BLACK;\n          if (grandParent === this._root) {\n            this._root = grandParent._rotateRight();\n          } else grandParent._rotateRight();\n          grandParent._color = TreeNodeColor.RED;\n          return;\n        }\n      } else {\n        const uncle = grandParent._left;\n        if (uncle && uncle._color === TreeNodeColor.RED) {\n          uncle._color = parentNode._color = TreeNodeColor.BLACK;\n          if (grandParent === this._root) return;\n          grandParent._color = TreeNodeColor.RED;\n          curNode = grandParent;\n          continue;\n        } else if (curNode === parentNode._left) {\n          curNode._color = TreeNodeColor.BLACK;\n          if (curNode._left) {\n            curNode._left._parent = grandParent;\n          }\n          if (curNode._right) {\n            curNode._right._parent = parentNode;\n          }\n          grandParent._right = curNode._left;\n          parentNode._left = curNode._right;\n          curNode._left = grandParent;\n          curNode._right = parentNode;\n          if (grandParent === this._root) {\n            this._root = curNode;\n            this._header._parent = curNode;\n          } else {\n            const GP = grandParent._parent!;\n            if (GP._left === grandParent) {\n              GP._left = curNode;\n            } else GP._right = curNode;\n          }\n          curNode._parent = grandParent._parent;\n          parentNode._parent = curNode;\n          grandParent._parent = curNode;\n          grandParent._color = TreeNodeColor.RED;\n        } else {\n          parentNode._color = TreeNodeColor.BLACK;\n          if (grandParent === this._root) {\n            this._root = grandParent._rotateLeft();\n          } else grandParent._rotateLeft();\n          grandParent._color = TreeNodeColor.RED;\n          return;\n        }\n      }\n      if (this.enableIndex) {\n        (<TreeNodeEnableIndex<K, V>>parentNode)._recount();\n        (<TreeNodeEnableIndex<K, V>>grandParent)._recount();\n        (<TreeNodeEnableIndex<K, V>>curNode)._recount();\n      }\n      return;\n    }\n  }\n  /**\n   * @internal\n   */\n  protected _set(key: K, value?: V, hint?: TreeIterator<K, V>) {\n    if (this._root === undefined) {\n      this._length += 1;\n      this._root = new this._TreeNodeClass(key, value, TreeNodeColor.BLACK);\n      this._root._parent = this._header;\n      this._header._parent = this._header._left = this._header._right = this._root;\n      return this._length;\n    }\n    let curNode;\n    const minNode = this._header._left!;\n    const compareToMin = this._cmp(minNode._key!, key);\n    if (compareToMin === 0) {\n      minNode._value = value;\n      return this._length;\n    } else if (compareToMin > 0) {\n      minNode._left = new this._TreeNodeClass(key, value);\n      minNode._left._parent = minNode;\n      curNode = minNode._left;\n      this._header._left = curNode;\n    } else {\n      const maxNode = this._header._right!;\n      const compareToMax = this._cmp(maxNode._key!, key);\n      if (compareToMax === 0) {\n        maxNode._value = value;\n        return this._length;\n      } else if (compareToMax < 0) {\n        maxNode._right = new this._TreeNodeClass(key, value);\n        maxNode._right._parent = maxNode;\n        curNode = maxNode._right;\n        this._header._right = curNode;\n      } else {\n        if (hint !== undefined) {\n          const iterNode = hint._node;\n          if (iterNode !== this._header) {\n            const iterCmpRes = this._cmp(iterNode._key!, key);\n            if (iterCmpRes === 0) {\n              iterNode._value = value;\n              return this._length;\n            } else /* istanbul ignore else */ if (iterCmpRes > 0) {\n              const preNode = iterNode._pre();\n              const preCmpRes = this._cmp(preNode._key!, key);\n              if (preCmpRes === 0) {\n                preNode._value = value;\n                return this._length;\n              } else if (preCmpRes < 0) {\n                curNode = new this._TreeNodeClass(key, value);\n                if (preNode._right === undefined) {\n                  preNode._right = curNode;\n                  curNode._parent = preNode;\n                } else {\n                  iterNode._left = curNode;\n                  curNode._parent = iterNode;\n                }\n              }\n            }\n          }\n        }\n        if (curNode === undefined) {\n          curNode = this._root;\n          while (true) {\n            const cmpResult = this._cmp(curNode._key!, key);\n            if (cmpResult > 0) {\n              if (curNode._left === undefined) {\n                curNode._left = new this._TreeNodeClass(key, value);\n                curNode._left._parent = curNode;\n                curNode = curNode._left;\n                break;\n              }\n              curNode = curNode._left;\n            } else if (cmpResult < 0) {\n              if (curNode._right === undefined) {\n                curNode._right = new this._TreeNodeClass(key, value);\n                curNode._right._parent = curNode;\n                curNode = curNode._right;\n                break;\n              }\n              curNode = curNode._right;\n            } else {\n              curNode._value = value;\n              return this._length;\n            }\n          }\n        }\n      }\n    }\n    if (this.enableIndex) {\n      let parent = curNode._parent as TreeNodeEnableIndex<K, V>;\n      while (parent !== this._header) {\n        parent._subTreeSize += 1;\n        parent = parent._parent as TreeNodeEnableIndex<K, V>;\n      }\n    }\n    this._insertNodeSelfBalance(curNode);\n    this._length += 1;\n    return this._length;\n  }\n  /**\n   * @internal\n   */\n  protected _getTreeNodeByKey(curNode: TreeNode<K, V> | undefined, key: K) {\n    while (curNode) {\n      const cmpResult = this._cmp(curNode._key!, key);\n      if (cmpResult < 0) {\n        curNode = curNode._right;\n      } else if (cmpResult > 0) {\n        curNode = curNode._left;\n      } else return curNode;\n    }\n    return curNode || this._header;\n  }\n  clear() {\n    this._length = 0;\n    this._root = undefined;\n    this._header._parent = undefined;\n    this._header._left = this._header._right = undefined;\n  }\n  /**\n   * @description Update node's key by iterator.\n   * @param iter - The iterator you want to change.\n   * @param key - The key you want to update.\n   * @returns Whether the modification is successful.\n   * @example\n   * const st = new orderedSet([1, 2, 5]);\n   * const iter = st.find(2);\n   * st.updateKeyByIterator(iter, 3); // then st will become [1, 3, 5]\n   */\n  updateKeyByIterator(iter: TreeIterator<K, V>, key: K): boolean {\n    const node = iter._node;\n    if (node === this._header) {\n      throwIteratorAccessError();\n    }\n    if (this._length === 1) {\n      node._key = key;\n      return true;\n    }\n    const nextKey = node._next()._key!;\n    if (node === this._header._left) {\n      if (this._cmp(nextKey, key) > 0) {\n        node._key = key;\n        return true;\n      }\n      return false;\n    }\n    const preKey = node._pre()._key!;\n    if (node === this._header._right) {\n      if (this._cmp(preKey, key) < 0) {\n        node._key = key;\n        return true;\n      }\n      return false;\n    }\n    if (\n      this._cmp(preKey, key) >= 0 ||\n      this._cmp(nextKey, key) <= 0\n    ) return false;\n    node._key = key;\n    return true;\n  }\n  eraseElementByPos(pos: number) {\n    $checkWithinAccessParams!(pos, 0, this._length - 1);\n    const node = this._inOrderTraversal(pos);\n    this._eraseNode(node);\n    return this._length;\n  }\n  /**\n   * @description Remove the element of the specified key.\n   * @param key - The key you want to remove.\n   * @returns Whether erase successfully.\n   */\n  eraseElementByKey(key: K) {\n    if (this._length === 0) return false;\n    const curNode = this._getTreeNodeByKey(this._root, key);\n    if (curNode === this._header) return false;\n    this._eraseNode(curNode);\n    return true;\n  }\n  eraseElementByIterator(iter: TreeIterator<K, V>) {\n    const node = iter._node;\n    if (node === this._header) {\n      throwIteratorAccessError();\n    }\n    const hasNoRight = node._right === undefined;\n    const isNormal = iter.iteratorType === IteratorType.NORMAL;\n    // For the normal iterator, the `next` node will be swapped to `this` node when has right.\n    if (isNormal) {\n      // So we should move it to next when it's right is null.\n      if (hasNoRight) iter.next();\n    } else {\n      // For the reverse iterator, only when it doesn't have right and has left the `next` node will be swapped.\n      // So when it has right, or it is a leaf node we should move it to `next`.\n      if (!hasNoRight || node._left === undefined) iter.next();\n    }\n    this._eraseNode(node);\n    return iter;\n  }\n  /**\n   * @description Get the height of the tree.\n   * @returns Number about the height of the RB-tree.\n   */\n  getHeight() {\n    if (this._length === 0) return 0;\n    function traversal(curNode: TreeNode<K, V> | undefined): number {\n      if (!curNode) return 0;\n      return Math.max(traversal(curNode._left), traversal(curNode._right)) + 1;\n    }\n    return traversal(this._root);\n  }\n  /**\n   * @param key - The given key you want to compare.\n   * @returns An iterator to the first element less than the given key.\n   */\n  abstract reverseUpperBound(key: K): TreeIterator<K, V>;\n  /**\n   * @description Union the other tree to self.\n   * @param other - The other tree container you want to merge.\n   * @returns The size of the tree after union.\n   */\n  abstract union(other: TreeContainer<K, V>): number;\n  /**\n   * @param key - The given key you want to compare.\n   * @returns An iterator to the first element not greater than the given key.\n   */\n  abstract reverseLowerBound(key: K): TreeIterator<K, V>;\n  /**\n   * @param key - The given key you want to compare.\n   * @returns An iterator to the first element not less than the given key.\n   */\n  abstract lowerBound(key: K): TreeIterator<K, V>;\n  /**\n   * @param key - The given key you want to compare.\n   * @returns An iterator to the first element greater than the given key.\n   */\n  abstract upperBound(key: K): TreeIterator<K, V>;\n}\n\nexport default TreeContainer;\n", "import { TreeNode } from './TreeNode';\nimport type { TreeNodeEnableIndex } from './TreeNode';\nimport { ContainerIterator, IteratorType } from '@/container/ContainerBase';\nimport TreeContainer from '@/container/TreeContainer/Base/index';\nimport { throwIteratorAccessError } from '@/utils/throwError';\n\nabstract class TreeIterator<K, V> extends ContainerIterator<K | [K, V]> {\n  abstract readonly container: TreeContainer<K, V>;\n  /**\n   * @internal\n   */\n  _node: TreeNode<K, V>;\n  /**\n   * @internal\n   */\n  protected _header: TreeNode<K, V>;\n  /**\n   * @internal\n   */\n  protected constructor(\n    node: TreeNode<K, V>,\n    header: TreeNode<K, V>,\n    iteratorType?: IteratorType\n  ) {\n    super(iteratorType);\n    this._node = node;\n    this._header = header;\n    if (this.iteratorType === IteratorType.NORMAL) {\n      this.pre = function () {\n        if (this._node === this._header._left) {\n          throwIteratorAccessError();\n        }\n        this._node = this._node._pre();\n        return this;\n      };\n\n      this.next = function () {\n        if (this._node === this._header) {\n          throwIteratorAccessError();\n        }\n        this._node = this._node._next();\n        return this;\n      };\n    } else {\n      this.pre = function () {\n        if (this._node === this._header._right) {\n          throwIteratorAccessError();\n        }\n        this._node = this._node._next();\n        return this;\n      };\n\n      this.next = function () {\n        if (this._node === this._header) {\n          throwIteratorAccessError();\n        }\n        this._node = this._node._pre();\n        return this;\n      };\n    }\n  }\n  /**\n   * @description Get the sequential index of the iterator in the tree container.<br/>\n   *              <strong>Note:</strong>\n   *              This function only takes effect when the specified tree container `enableIndex = true`.\n   * @returns The index subscript of the node in the tree.\n   * @example\n   * const st = new OrderedSet([1, 2, 3], true);\n   * console.log(st.begin().next().index);  // 1\n   */\n  get index() {\n    let _node = this._node as TreeNodeEnableIndex<K, V>;\n    const root = this._header._parent as TreeNodeEnableIndex<K, V>;\n    if (_node === this._header) {\n      if (root) {\n        return root._subTreeSize - 1;\n      }\n      return 0;\n    }\n    let index = 0;\n    if (_node._left) {\n      index += (_node._left as TreeNodeEnableIndex<K, V>)._subTreeSize;\n    }\n    while (_node !== root) {\n      const _parent = _node._parent as TreeNodeEnableIndex<K, V>;\n      if (_node === _parent._right) {\n        index += 1;\n        if (_parent._left) {\n          index += (_parent._left as TreeNodeEnableIndex<K, V>)._subTreeSize;\n        }\n      }\n      _node = _parent;\n    }\n    return index;\n  }\n  isAccessible() {\n    return this._node !== this._header;\n  }\n  // @ts-ignore\n  pre(): this;\n  // @ts-ignore\n  next(): this;\n}\n\nexport default TreeIterator;\n", "import TreeContainer from './Base';\nimport TreeIterator from './Base/TreeIterator';\nimport { TreeNode } from './Base/TreeNode';\nimport { initContainer, IteratorType } from '@/container/ContainerBase';\nimport $checkWithinAccessParams from '@/utils/checkParams.macro';\nimport { throwIteratorAccessError } from '@/utils/throwError';\n\nclass OrderedMapIterator<K, V> extends TreeIterator<K, V> {\n  container: OrderedMap<K, V>;\n  constructor(\n    node: TreeNode<K, V>,\n    header: TreeNode<K, V>,\n    container: OrderedMap<K, V>,\n    iteratorType?: IteratorType\n  ) {\n    super(node, header, iteratorType);\n    this.container = container;\n  }\n  get pointer() {\n    if (this._node === this._header) {\n      throwIteratorAccessError();\n    }\n    const self = this;\n    return new Proxy(<[K, V]><unknown>[], {\n      get(target, prop: '0' | '1') {\n        if (prop === '0') return self._node._key!;\n        else if (prop === '1') return self._node._value!;\n        target[0] = self._node._key!;\n        target[1] = self._node._value!;\n        return target[prop];\n      },\n      set(_, prop: '1', newValue: V) {\n        if (prop !== '1') {\n          throw new TypeError('prop must be 1');\n        }\n        self._node._value = newValue;\n        return true;\n      }\n    });\n  }\n  copy() {\n    return new OrderedMapIterator<K, V>(\n      this._node,\n      this._header,\n      this.container,\n      this.iteratorType\n    );\n  }\n  // @ts-ignore\n  equals(iter: OrderedMapIterator<K, V>): boolean;\n}\n\nexport type { OrderedMapIterator };\n\nclass OrderedMap<K, V> extends TreeContainer<K, V> {\n  /**\n   * @param container - The initialization container.\n   * @param cmp - The compare function.\n   * @param enableIndex - Whether to enable iterator indexing function.\n   * @example\n   * new OrderedMap();\n   * new OrderedMap([[0, 1], [2, 1]]);\n   * new OrderedMap([[0, 1], [2, 1]], (x, y) => x - y);\n   * new OrderedMap([[0, 1], [2, 1]], (x, y) => x - y, true);\n   */\n  constructor(\n    container: initContainer<[K, V]> = [],\n    cmp?: (x: K, y: K) => number,\n    enableIndex?: boolean\n  ) {\n    super(cmp, enableIndex);\n    const self = this;\n    container.forEach(function (el) {\n      self.setElement(el[0], el[1]);\n    });\n  }\n  begin() {\n    return new OrderedMapIterator<K, V>(this._header._left || this._header, this._header, this);\n  }\n  end() {\n    return new OrderedMapIterator<K, V>(this._header, this._header, this);\n  }\n  rBegin() {\n    return new OrderedMapIterator<K, V>(\n      this._header._right || this._header,\n      this._header,\n      this,\n      IteratorType.REVERSE\n    );\n  }\n  rEnd() {\n    return new OrderedMapIterator<K, V>(this._header, this._header, this, IteratorType.REVERSE);\n  }\n  front() {\n    if (this._length === 0) return;\n    const minNode = this._header._left!;\n    return <[K, V]>[minNode._key, minNode._value];\n  }\n  back() {\n    if (this._length === 0) return;\n    const maxNode = this._header._right!;\n    return <[K, V]>[maxNode._key, maxNode._value];\n  }\n  lowerBound(key: K) {\n    const resNode = this._lowerBound(this._root, key);\n    return new OrderedMapIterator<K, V>(resNode, this._header, this);\n  }\n  upperBound(key: K) {\n    const resNode = this._upperBound(this._root, key);\n    return new OrderedMapIterator<K, V>(resNode, this._header, this);\n  }\n  reverseLowerBound(key: K) {\n    const resNode = this._reverseLowerBound(this._root, key);\n    return new OrderedMapIterator<K, V>(resNode, this._header, this);\n  }\n  reverseUpperBound(key: K) {\n    const resNode = this._reverseUpperBound(this._root, key);\n    return new OrderedMapIterator<K, V>(resNode, this._header, this);\n  }\n  forEach(callback: (element: [K, V], index: number, map: OrderedMap<K, V>) => void) {\n    this._inOrderTraversal(function (node, index, map) {\n      callback(<[K, V]>[node._key, node._value], index, map);\n    });\n  }\n  /**\n   * @description Insert a key-value pair or set value by the given key.\n   * @param key - The key want to insert.\n   * @param value - The value want to set.\n   * @param hint - You can give an iterator hint to improve insertion efficiency.\n   * @return The size of container after setting.\n   * @example\n   * const mp = new OrderedMap([[2, 0], [4, 0], [5, 0]]);\n   * const iter = mp.begin();\n   * mp.setElement(1, 0);\n   * mp.setElement(3, 0, iter);  // give a hint will be faster.\n   */\n  setElement(key: K, value: V, hint?: OrderedMapIterator<K, V>) {\n    return this._set(key, value, hint);\n  }\n  getElementByPos(pos: number) {\n    $checkWithinAccessParams!(pos, 0, this._length - 1);\n    const node = this._inOrderTraversal(pos);\n    return <[K, V]>[node._key, node._value];\n  }\n  find(key: K) {\n    const curNode = this._getTreeNodeByKey(this._root, key);\n    return new OrderedMapIterator<K, V>(curNode, this._header, this);\n  }\n  /**\n   * @description Get the value of the element of the specified key.\n   * @param key - The specified key you want to get.\n   * @example\n   * const val = container.getElementByKey(1);\n   */\n  getElementByKey(key: K) {\n    const curNode = this._getTreeNodeByKey(this._root, key);\n    return curNode._value;\n  }\n  union(other: OrderedMap<K, V>) {\n    const self = this;\n    other.forEach(function (el) {\n      self.setElement(el[0], el[1]);\n    });\n    return this._length;\n  }\n  * [Symbol.iterator]() {\n    const length = this._length;\n    const nodeList = this._inOrderTraversal();\n    for (let i = 0; i < length; ++i) {\n      const node = nodeList[i];\n      yield <[K, V]>[node._key, node._value];\n    }\n  }\n  // @ts-ignore\n  eraseElementByIterator(iter: OrderedMapIterator<K, V>): OrderedMapIterator<K, V>;\n}\n\nexport default OrderedMap;\n", "/*\n * Copyright 2021 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { ServiceDefinition } from './make-client';\nimport { Server, UntypedServiceImplementation } from './server';\n\ninterface GetServiceDefinition {\n  (): ServiceDefinition;\n}\n\ninterface GetHandlers {\n  (): UntypedServiceImplementation;\n}\n\nconst registeredAdminServices: {\n  getServiceDefinition: GetServiceDefinition;\n  getHandlers: GetHandlers;\n}[] = [];\n\nexport function registerAdminService(\n  getServiceDefinition: GetServiceDefinition,\n  getHandlers: GetHandlers\n) {\n  registeredAdminServices.push({ getServiceDefinition, getHandlers });\n}\n\nexport function addAdminServicesToServer(server: Server): void {\n  for (const { getServiceDefinition, getHandlers } of registeredAdminServices) {\n    server.addService(getServiceDefinition(), getHandlers());\n  }\n}\n", "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { EventEmitter } from 'events';\nimport { Duplex, Readable, Writable } from 'stream';\n\nimport { StatusObject, MessageContext } from './call-interface';\nimport { Status } from './constants';\nimport { EmitterAugmentation1 } from './events';\nimport { Metadata } from './metadata';\nimport { ObjectReadable, ObjectWritable, WriteCallback } from './object-stream';\nimport { InterceptingCallInterface } from './client-interceptors';\nimport { AuthContext } from './auth-context';\n\n/**\n * A type extending the built-in Error object with additional fields.\n */\nexport type ServiceError = StatusObject & Error;\n\n/**\n * A base type for all user-facing values returned by client-side method calls.\n */\nexport type SurfaceCall = {\n  call?: InterceptingCallInterface;\n  cancel(): void;\n  getPeer(): string;\n  getAuthContext(): AuthContext | null;\n} & EmitterAugmentation1<'metadata', Metadata> &\n  EmitterAugmentation1<'status', StatusObject> &\n  EventEmitter;\n\n/**\n * A type representing the return value of a unary method call.\n */\nexport type ClientUnaryCall = SurfaceCall;\n\n/**\n * A type representing the return value of a server stream method call.\n */\nexport type ClientReadableStream<ResponseType> = {\n  deserialize: (chunk: Buffer) => ResponseType;\n} & SurfaceCall &\n  ObjectReadable<ResponseType>;\n\n/**\n * A type representing the return value of a client stream method call.\n */\nexport type ClientWritableStream<RequestType> = {\n  serialize: (value: RequestType) => Buffer;\n} & SurfaceCall &\n  ObjectWritable<RequestType>;\n\n/**\n * A type representing the return value of a bidirectional stream method call.\n */\nexport type ClientDuplexStream<RequestType, ResponseType> =\n  ClientWritableStream<RequestType> & ClientReadableStream<ResponseType>;\n\n/**\n * Construct a ServiceError from a StatusObject. This function exists primarily\n * as an attempt to make the error stack trace clearly communicate that the\n * error is not necessarily a problem in gRPC itself.\n * @param status\n */\nexport function callErrorFromStatus(\n  status: StatusObject,\n  callerStack: string\n): ServiceError {\n  const message = `${status.code} ${Status[status.code]}: ${status.details}`;\n  const error = new Error(message);\n  const stack = `${error.stack}\\nfor call at\\n${callerStack}`;\n  return Object.assign(new Error(message), status, { stack });\n}\n\nexport class ClientUnaryCallImpl\n  extends EventEmitter\n  implements ClientUnaryCall\n{\n  public call?: InterceptingCallInterface;\n  constructor() {\n    super();\n  }\n\n  cancel(): void {\n    this.call?.cancelWithStatus(Status.CANCELLED, 'Cancelled on client');\n  }\n\n  getPeer(): string {\n    return this.call?.getPeer() ?? 'unknown';\n  }\n\n  getAuthContext(): AuthContext | null {\n    return this.call?.getAuthContext() ?? null;\n  }\n}\n\nexport class ClientReadableStreamImpl<ResponseType>\n  extends Readable\n  implements ClientReadableStream<ResponseType>\n{\n  public call?: InterceptingCallInterface;\n  constructor(readonly deserialize: (chunk: Buffer) => ResponseType) {\n    super({ objectMode: true });\n  }\n\n  cancel(): void {\n    this.call?.cancelWithStatus(Status.CANCELLED, 'Cancelled on client');\n  }\n\n  getPeer(): string {\n    return this.call?.getPeer() ?? 'unknown';\n  }\n\n  getAuthContext(): AuthContext | null {\n    return this.call?.getAuthContext() ?? null;\n  }\n\n  _read(_size: number): void {\n    this.call?.startRead();\n  }\n}\n\nexport class ClientWritableStreamImpl<RequestType>\n  extends Writable\n  implements ClientWritableStream<RequestType>\n{\n  public call?: InterceptingCallInterface;\n  constructor(readonly serialize: (value: RequestType) => Buffer) {\n    super({ objectMode: true });\n  }\n\n  cancel(): void {\n    this.call?.cancelWithStatus(Status.CANCELLED, 'Cancelled on client');\n  }\n\n  getPeer(): string {\n    return this.call?.getPeer() ?? 'unknown';\n  }\n\n  getAuthContext(): AuthContext | null {\n    return this.call?.getAuthContext() ?? null;\n  }\n\n  _write(chunk: RequestType, encoding: string, cb: WriteCallback) {\n    const context: MessageContext = {\n      callback: cb,\n    };\n    const flags = Number(encoding);\n    if (!Number.isNaN(flags)) {\n      context.flags = flags;\n    }\n    this.call?.sendMessageWithContext(context, chunk);\n  }\n\n  _final(cb: Function) {\n    this.call?.halfClose();\n    cb();\n  }\n}\n\nexport class ClientDuplexStreamImpl<RequestType, ResponseType>\n  extends Duplex\n  implements ClientDuplexStream<RequestType, ResponseType>\n{\n  public call?: InterceptingCallInterface;\n  constructor(\n    readonly serialize: (value: RequestType) => Buffer,\n    readonly deserialize: (chunk: Buffer) => ResponseType\n  ) {\n    super({ objectMode: true });\n  }\n\n  cancel(): void {\n    this.call?.cancelWithStatus(Status.CANCELLED, 'Cancelled on client');\n  }\n\n  getPeer(): string {\n    return this.call?.getPeer() ?? 'unknown';\n  }\n\n  getAuthContext(): AuthContext | null {\n    return this.call?.getAuthContext() ?? null;\n  }\n\n  _read(_size: number): void {\n    this.call?.startRead();\n  }\n\n  _write(chunk: RequestType, encoding: string, cb: WriteCallback) {\n    const context: MessageContext = {\n      callback: cb,\n    };\n    const flags = Number(encoding);\n    if (!Number.isNaN(flags)) {\n      context.flags = flags;\n    }\n    this.call?.sendMessageWithContext(context, chunk);\n  }\n\n  _final(cb: Function) {\n    this.call?.halfClose();\n    cb();\n  }\n}\n", "/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { AuthContext } from './auth-context';\nimport { CallCredentials } from './call-credentials';\nimport { Status } from './constants';\nimport { Deadline } from './deadline';\nimport { Metadata } from './metadata';\nimport { ServerSurfaceCall } from './server-call';\n\nexport interface CallStreamOptions {\n  deadline: Deadline;\n  flags: number;\n  host: string;\n  parentCall: ServerSurfaceCall | null;\n}\n\nexport type PartialCallStreamOptions = Partial<CallStreamOptions>;\n\nexport interface StatusObject {\n  code: Status;\n  details: string;\n  metadata: Metadata;\n}\n\nexport type PartialStatusObject = Pick<StatusObject, 'code' | 'details'> & {\n  metadata?: Metadata | null | undefined;\n};\n\nexport interface StatusOrOk<T> {\n  ok: true;\n  value: T;\n}\n\nexport interface StatusOrError {\n  ok: false;\n  error: StatusObject;\n}\n\nexport type StatusOr<T> = StatusOrOk<T> | StatusOrError;\n\nexport function statusOrFromValue<T>(value: T): StatusOr<T> {\n  return {\n    ok: true,\n    value: value\n  };\n}\n\nexport function statusOrFromError<T>(error: PartialStatusObject): StatusOr<T> {\n  return {\n    ok: false,\n    error: {\n      ...error,\n      metadata: error.metadata ?? new Metadata()\n    }\n  };\n}\n\nexport const enum WriteFlags {\n  BufferHint = 1,\n  NoCompress = 2,\n  WriteThrough = 4,\n}\n\nexport interface WriteObject {\n  message: Buffer;\n  flags?: number;\n}\n\nexport interface MetadataListener {\n  (metadata: Metadata, next: (metadata: Metadata) => void): void;\n}\n\nexport interface MessageListener {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  (message: any, next: (message: any) => void): void;\n}\n\nexport interface StatusListener {\n  (status: StatusObject, next: (status: StatusObject) => void): void;\n}\n\nexport interface FullListener {\n  onReceiveMetadata: MetadataListener;\n  onReceiveMessage: MessageListener;\n  onReceiveStatus: StatusListener;\n}\n\nexport type Listener = Partial<FullListener>;\n\n/**\n * An object with methods for handling the responses to a call.\n */\nexport interface InterceptingListener {\n  onReceiveMetadata(metadata: Metadata): void;\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  onReceiveMessage(message: any): void;\n  onReceiveStatus(status: StatusObject): void;\n}\n\nexport function isInterceptingListener(\n  listener: Listener | InterceptingListener\n): listener is InterceptingListener {\n  return (\n    listener.onReceiveMetadata !== undefined &&\n    listener.onReceiveMetadata.length === 1\n  );\n}\n\nexport class InterceptingListenerImpl implements InterceptingListener {\n  private processingMetadata = false;\n  private hasPendingMessage = false;\n  private pendingMessage: any;\n  private processingMessage = false;\n  private pendingStatus: StatusObject | null = null;\n  constructor(\n    private listener: FullListener,\n    private nextListener: InterceptingListener\n  ) {}\n\n  private processPendingMessage() {\n    if (this.hasPendingMessage) {\n      this.nextListener.onReceiveMessage(this.pendingMessage);\n      this.pendingMessage = null;\n      this.hasPendingMessage = false;\n    }\n  }\n\n  private processPendingStatus() {\n    if (this.pendingStatus) {\n      this.nextListener.onReceiveStatus(this.pendingStatus);\n    }\n  }\n\n  onReceiveMetadata(metadata: Metadata): void {\n    this.processingMetadata = true;\n    this.listener.onReceiveMetadata(metadata, metadata => {\n      this.processingMetadata = false;\n      this.nextListener.onReceiveMetadata(metadata);\n      this.processPendingMessage();\n      this.processPendingStatus();\n    });\n  }\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  onReceiveMessage(message: any): void {\n    /* If this listener processes messages asynchronously, the last message may\n     * be reordered with respect to the status */\n    this.processingMessage = true;\n    this.listener.onReceiveMessage(message, msg => {\n      this.processingMessage = false;\n      if (this.processingMetadata) {\n        this.pendingMessage = msg;\n        this.hasPendingMessage = true;\n      } else {\n        this.nextListener.onReceiveMessage(msg);\n        this.processPendingStatus();\n      }\n    });\n  }\n  onReceiveStatus(status: StatusObject): void {\n    this.listener.onReceiveStatus(status, processedStatus => {\n      if (this.processingMetadata || this.processingMessage) {\n        this.pendingStatus = processedStatus;\n      } else {\n        this.nextListener.onReceiveStatus(processedStatus);\n      }\n    });\n  }\n}\n\nexport interface WriteCallback {\n  (error?: Error | null): void;\n}\n\nexport interface MessageContext {\n  callback?: WriteCallback;\n  flags?: number;\n}\n\nexport interface Call {\n  cancelWithStatus(status: Status, details: string): void;\n  getPeer(): string;\n  start(metadata: Metadata, listener: InterceptingListener): void;\n  sendMessageWithContext(context: MessageContext, message: Buffer): void;\n  startRead(): void;\n  halfClose(): void;\n  getCallNumber(): number;\n  setCredentials(credentials: CallCredentials): void;\n  getAuthContext(): AuthContext | null;\n}\n\nexport interface DeadlineInfoProvider {\n  getDeadlineInfo(): string[];\n}\n", "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { Metadata } from './metadata';\nimport {\n  StatusObject,\n  Listener,\n  MetadataListener,\n  MessageListener,\n  StatusListener,\n  FullListener,\n  InterceptingListener,\n  InterceptingListenerImpl,\n  isInterceptingListener,\n  MessageContext,\n  Call,\n} from './call-interface';\nimport { Status } from './constants';\nimport { Channel } from './channel';\nimport { CallOptions } from './client';\nimport { ClientMethodDefinition } from './make-client';\nimport { getErrorMessage } from './error';\nimport { AuthContext } from './auth-context';\n\n/**\n * Error class associated with passing both interceptors and interceptor\n * providers to a client constructor or as call options.\n */\nexport class InterceptorConfigurationError extends Error {\n  constructor(message: string) {\n    super(message);\n    this.name = 'InterceptorConfigurationError';\n    Error.captureStackTrace(this, InterceptorConfigurationError);\n  }\n}\n\nexport interface MetadataRequester {\n  (\n    metadata: Metadata,\n    listener: InterceptingListener,\n    next: (\n      metadata: Metadata,\n      listener: InterceptingListener | Listener\n    ) => void\n  ): void;\n}\n\nexport interface MessageRequester {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  (message: any, next: (message: any) => void): void;\n}\n\nexport interface CloseRequester {\n  (next: () => void): void;\n}\n\nexport interface CancelRequester {\n  (next: () => void): void;\n}\n\n/**\n * An object with methods for intercepting and modifying outgoing call operations.\n */\nexport interface FullRequester {\n  start: MetadataRequester;\n  sendMessage: MessageRequester;\n  halfClose: CloseRequester;\n  cancel: CancelRequester;\n}\n\nexport type Requester = Partial<FullRequester>;\n\nexport class ListenerBuilder {\n  private metadata: MetadataListener | undefined = undefined;\n  private message: MessageListener | undefined = undefined;\n  private status: StatusListener | undefined = undefined;\n\n  withOnReceiveMetadata(onReceiveMetadata: MetadataListener): this {\n    this.metadata = onReceiveMetadata;\n    return this;\n  }\n\n  withOnReceiveMessage(onReceiveMessage: MessageListener): this {\n    this.message = onReceiveMessage;\n    return this;\n  }\n\n  withOnReceiveStatus(onReceiveStatus: StatusListener): this {\n    this.status = onReceiveStatus;\n    return this;\n  }\n\n  build(): Listener {\n    return {\n      onReceiveMetadata: this.metadata,\n      onReceiveMessage: this.message,\n      onReceiveStatus: this.status,\n    };\n  }\n}\n\nexport class RequesterBuilder {\n  private start: MetadataRequester | undefined = undefined;\n  private message: MessageRequester | undefined = undefined;\n  private halfClose: CloseRequester | undefined = undefined;\n  private cancel: CancelRequester | undefined = undefined;\n\n  withStart(start: MetadataRequester): this {\n    this.start = start;\n    return this;\n  }\n\n  withSendMessage(sendMessage: MessageRequester): this {\n    this.message = sendMessage;\n    return this;\n  }\n\n  withHalfClose(halfClose: CloseRequester): this {\n    this.halfClose = halfClose;\n    return this;\n  }\n\n  withCancel(cancel: CancelRequester): this {\n    this.cancel = cancel;\n    return this;\n  }\n\n  build(): Requester {\n    return {\n      start: this.start,\n      sendMessage: this.message,\n      halfClose: this.halfClose,\n      cancel: this.cancel,\n    };\n  }\n}\n\n/**\n * A Listener with a default pass-through implementation of each method. Used\n * for filling out Listeners with some methods omitted.\n */\nconst defaultListener: FullListener = {\n  onReceiveMetadata: (metadata, next) => {\n    next(metadata);\n  },\n  onReceiveMessage: (message, next) => {\n    next(message);\n  },\n  onReceiveStatus: (status, next) => {\n    next(status);\n  },\n};\n\n/**\n * A Requester with a default pass-through implementation of each method. Used\n * for filling out Requesters with some methods omitted.\n */\nconst defaultRequester: FullRequester = {\n  start: (metadata, listener, next) => {\n    next(metadata, listener);\n  },\n  sendMessage: (message, next) => {\n    next(message);\n  },\n  halfClose: next => {\n    next();\n  },\n  cancel: next => {\n    next();\n  },\n};\n\nexport interface InterceptorOptions extends CallOptions {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  method_definition: ClientMethodDefinition<any, any>;\n}\n\nexport interface InterceptingCallInterface {\n  cancelWithStatus(status: Status, details: string): void;\n  getPeer(): string;\n  start(metadata: Metadata, listener?: Partial<InterceptingListener>): void;\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  sendMessageWithContext(context: MessageContext, message: any): void;\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  sendMessage(message: any): void;\n  startRead(): void;\n  halfClose(): void;\n  getAuthContext(): AuthContext | null;\n}\n\nexport class InterceptingCall implements InterceptingCallInterface {\n  /**\n   * The requester that this InterceptingCall uses to modify outgoing operations\n   */\n  private requester: FullRequester;\n  /**\n   * Indicates that metadata has been passed to the requester's start\n   * method but it has not been passed to the corresponding next callback\n   */\n  private processingMetadata = false;\n  /**\n   * Message context for a pending message that is waiting for\n   */\n  private pendingMessageContext: MessageContext | null = null;\n  private pendingMessage: any;\n  /**\n   * Indicates that a message has been passed to the requester's sendMessage\n   * method but it has not been passed to the corresponding next callback\n   */\n  private processingMessage = false;\n  /**\n   * Indicates that a status was received but could not be propagated because\n   * a message was still being processed.\n   */\n  private pendingHalfClose = false;\n  constructor(\n    private nextCall: InterceptingCallInterface,\n    requester?: Requester\n  ) {\n    if (requester) {\n      this.requester = {\n        start: requester.start ?? defaultRequester.start,\n        sendMessage: requester.sendMessage ?? defaultRequester.sendMessage,\n        halfClose: requester.halfClose ?? defaultRequester.halfClose,\n        cancel: requester.cancel ?? defaultRequester.cancel,\n      };\n    } else {\n      this.requester = defaultRequester;\n    }\n  }\n\n  cancelWithStatus(status: Status, details: string) {\n    this.requester.cancel(() => {\n      this.nextCall.cancelWithStatus(status, details);\n    });\n  }\n\n  getPeer() {\n    return this.nextCall.getPeer();\n  }\n\n  private processPendingMessage() {\n    if (this.pendingMessageContext) {\n      this.nextCall.sendMessageWithContext(\n        this.pendingMessageContext,\n        this.pendingMessage\n      );\n      this.pendingMessageContext = null;\n      this.pendingMessage = null;\n    }\n  }\n\n  private processPendingHalfClose() {\n    if (this.pendingHalfClose) {\n      this.nextCall.halfClose();\n    }\n  }\n\n  start(\n    metadata: Metadata,\n    interceptingListener?: Partial<InterceptingListener>\n  ): void {\n    const fullInterceptingListener: InterceptingListener = {\n      onReceiveMetadata:\n        interceptingListener?.onReceiveMetadata?.bind(interceptingListener) ??\n        (metadata => {}),\n      onReceiveMessage:\n        interceptingListener?.onReceiveMessage?.bind(interceptingListener) ??\n        (message => {}),\n      onReceiveStatus:\n        interceptingListener?.onReceiveStatus?.bind(interceptingListener) ??\n        (status => {}),\n    };\n    this.processingMetadata = true;\n    this.requester.start(metadata, fullInterceptingListener, (md, listener) => {\n      this.processingMetadata = false;\n      let finalInterceptingListener: InterceptingListener;\n      if (isInterceptingListener(listener)) {\n        finalInterceptingListener = listener;\n      } else {\n        const fullListener: FullListener = {\n          onReceiveMetadata:\n            listener.onReceiveMetadata ?? defaultListener.onReceiveMetadata,\n          onReceiveMessage:\n            listener.onReceiveMessage ?? defaultListener.onReceiveMessage,\n          onReceiveStatus:\n            listener.onReceiveStatus ?? defaultListener.onReceiveStatus,\n        };\n        finalInterceptingListener = new InterceptingListenerImpl(\n          fullListener,\n          fullInterceptingListener\n        );\n      }\n      this.nextCall.start(md, finalInterceptingListener);\n      this.processPendingMessage();\n      this.processPendingHalfClose();\n    });\n  }\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  sendMessageWithContext(context: MessageContext, message: any): void {\n    this.processingMessage = true;\n    this.requester.sendMessage(message, finalMessage => {\n      this.processingMessage = false;\n      if (this.processingMetadata) {\n        this.pendingMessageContext = context;\n        this.pendingMessage = message;\n      } else {\n        this.nextCall.sendMessageWithContext(context, finalMessage);\n        this.processPendingHalfClose();\n      }\n    });\n  }\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  sendMessage(message: any): void {\n    this.sendMessageWithContext({}, message);\n  }\n  startRead(): void {\n    this.nextCall.startRead();\n  }\n  halfClose(): void {\n    this.requester.halfClose(() => {\n      if (this.processingMetadata || this.processingMessage) {\n        this.pendingHalfClose = true;\n      } else {\n        this.nextCall.halfClose();\n      }\n    });\n  }\n  getAuthContext(): AuthContext | null {\n    return this.nextCall.getAuthContext();\n  }\n}\n\nfunction getCall(channel: Channel, path: string, options: CallOptions): Call {\n  const deadline = options.deadline ?? Infinity;\n  const host = options.host;\n  const parent = options.parent ?? null;\n  const propagateFlags = options.propagate_flags;\n  const credentials = options.credentials;\n  const call = channel.createCall(path, deadline, host, parent, propagateFlags);\n  if (credentials) {\n    call.setCredentials(credentials);\n  }\n  return call;\n}\n\n/**\n * InterceptingCall implementation that directly owns the underlying Call\n * object and handles serialization and deseraizliation.\n */\nclass BaseInterceptingCall implements InterceptingCallInterface {\n  constructor(\n    protected call: Call,\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    protected methodDefinition: ClientMethodDefinition<any, any>\n  ) {}\n  cancelWithStatus(status: Status, details: string): void {\n    this.call.cancelWithStatus(status, details);\n  }\n  getPeer(): string {\n    return this.call.getPeer();\n  }\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  sendMessageWithContext(context: MessageContext, message: any): void {\n    let serialized: Buffer;\n    try {\n      serialized = this.methodDefinition.requestSerialize(message);\n    } catch (e) {\n      this.call.cancelWithStatus(\n        Status.INTERNAL,\n        `Request message serialization failure: ${getErrorMessage(e)}`\n      );\n      return;\n    }\n    this.call.sendMessageWithContext(context, serialized);\n  }\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  sendMessage(message: any) {\n    this.sendMessageWithContext({}, message);\n  }\n  start(\n    metadata: Metadata,\n    interceptingListener?: Partial<InterceptingListener>\n  ): void {\n    let readError: StatusObject | null = null;\n    this.call.start(metadata, {\n      onReceiveMetadata: metadata => {\n        interceptingListener?.onReceiveMetadata?.(metadata);\n      },\n      onReceiveMessage: message => {\n        // eslint-disable-next-line @typescript-eslint/no-explicit-any\n        let deserialized: any;\n        try {\n          deserialized = this.methodDefinition.responseDeserialize(message);\n        } catch (e) {\n          readError = {\n            code: Status.INTERNAL,\n            details: `Response message parsing error: ${getErrorMessage(e)}`,\n            metadata: new Metadata(),\n          };\n          this.call.cancelWithStatus(readError.code, readError.details);\n          return;\n        }\n        interceptingListener?.onReceiveMessage?.(deserialized);\n      },\n      onReceiveStatus: status => {\n        if (readError) {\n          interceptingListener?.onReceiveStatus?.(readError);\n        } else {\n          interceptingListener?.onReceiveStatus?.(status);\n        }\n      },\n    });\n  }\n  startRead() {\n    this.call.startRead();\n  }\n  halfClose(): void {\n    this.call.halfClose();\n  }\n  getAuthContext(): AuthContext | null {\n    return this.call.getAuthContext();\n  }\n}\n\n/**\n * BaseInterceptingCall with special-cased behavior for methods with unary\n * responses.\n */\nclass BaseUnaryInterceptingCall\n  extends BaseInterceptingCall\n  implements InterceptingCallInterface\n{\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  constructor(call: Call, methodDefinition: ClientMethodDefinition<any, any>) {\n    super(call, methodDefinition);\n  }\n  start(metadata: Metadata, listener?: Partial<InterceptingListener>): void {\n    let receivedMessage = false;\n    const wrapperListener: InterceptingListener = {\n      onReceiveMetadata:\n        listener?.onReceiveMetadata?.bind(listener) ?? (metadata => {}),\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      onReceiveMessage: (message: any) => {\n        receivedMessage = true;\n        listener?.onReceiveMessage?.(message);\n      },\n      onReceiveStatus: (status: StatusObject) => {\n        if (!receivedMessage) {\n          listener?.onReceiveMessage?.(null);\n        }\n        listener?.onReceiveStatus?.(status);\n      },\n    };\n    super.start(metadata, wrapperListener);\n    this.call.startRead();\n  }\n}\n\n/**\n * BaseInterceptingCall with special-cased behavior for methods with streaming\n * responses.\n */\nclass BaseStreamingInterceptingCall\n  extends BaseInterceptingCall\n  implements InterceptingCallInterface {}\n\nfunction getBottomInterceptingCall(\n  channel: Channel,\n  options: InterceptorOptions,\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  methodDefinition: ClientMethodDefinition<any, any>\n) {\n  const call = getCall(channel, methodDefinition.path, options);\n  if (methodDefinition.responseStream) {\n    return new BaseStreamingInterceptingCall(call, methodDefinition);\n  } else {\n    return new BaseUnaryInterceptingCall(call, methodDefinition);\n  }\n}\n\nexport interface NextCall {\n  (options: InterceptorOptions): InterceptingCallInterface;\n}\n\nexport interface Interceptor {\n  (options: InterceptorOptions, nextCall: NextCall): InterceptingCall;\n}\n\nexport interface InterceptorProvider {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  (methodDefinition: ClientMethodDefinition<any, any>): Interceptor;\n}\n\nexport interface InterceptorArguments {\n  clientInterceptors: Interceptor[];\n  clientInterceptorProviders: InterceptorProvider[];\n  callInterceptors: Interceptor[];\n  callInterceptorProviders: InterceptorProvider[];\n}\n\nexport function getInterceptingCall(\n  interceptorArgs: InterceptorArguments,\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  methodDefinition: ClientMethodDefinition<any, any>,\n  options: CallOptions,\n  channel: Channel\n): InterceptingCallInterface {\n  if (\n    interceptorArgs.clientInterceptors.length > 0 &&\n    interceptorArgs.clientInterceptorProviders.length > 0\n  ) {\n    throw new InterceptorConfigurationError(\n      'Both interceptors and interceptor_providers were passed as options ' +\n        'to the client constructor. Only one of these is allowed.'\n    );\n  }\n  if (\n    interceptorArgs.callInterceptors.length > 0 &&\n    interceptorArgs.callInterceptorProviders.length > 0\n  ) {\n    throw new InterceptorConfigurationError(\n      'Both interceptors and interceptor_providers were passed as call ' +\n        'options. Only one of these is allowed.'\n    );\n  }\n  let interceptors: Interceptor[] = [];\n  // Interceptors passed to the call override interceptors passed to the client constructor\n  if (\n    interceptorArgs.callInterceptors.length > 0 ||\n    interceptorArgs.callInterceptorProviders.length > 0\n  ) {\n    interceptors = ([] as Interceptor[])\n      .concat(\n        interceptorArgs.callInterceptors,\n        interceptorArgs.callInterceptorProviders.map(provider =>\n          provider(methodDefinition)\n        )\n      )\n      .filter(interceptor => interceptor);\n    // Filter out falsy values when providers return nothing\n  } else {\n    interceptors = ([] as Interceptor[])\n      .concat(\n        interceptorArgs.clientInterceptors,\n        interceptorArgs.clientInterceptorProviders.map(provider =>\n          provider(methodDefinition)\n        )\n      )\n      .filter(interceptor => interceptor);\n    // Filter out falsy values when providers return nothing\n  }\n  const interceptorOptions = Object.assign({}, options, {\n    method_definition: methodDefinition,\n  });\n  /* For each interceptor in the list, the nextCall function passed to it is\n   * based on the next interceptor in the list, using a nextCall function\n   * constructed with the following interceptor in the list, and so on. The\n   * initialValue, which is effectively at the end of the list, is a nextCall\n   * function that invokes getBottomInterceptingCall, the result of which\n   * handles (de)serialization and also gets the underlying call from the\n   * channel. */\n  const getCall: NextCall = interceptors.reduceRight<NextCall>(\n    (nextCall: NextCall, nextInterceptor: Interceptor) => {\n      return currentOptions => nextInterceptor(currentOptions, nextCall);\n    },\n    (finalOptions: InterceptorOptions) =>\n      getBottomInterceptingCall(channel, finalOptions, methodDefinition)\n  );\n  return getCall(interceptorOptions);\n}\n", "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport {\n  ClientDuplexStream,\n  ClientDuplexStreamImpl,\n  ClientReadableStream,\n  ClientReadableStreamImpl,\n  ClientUnaryCall,\n  ClientUnaryCallImpl,\n  ClientWritableStream,\n  ClientWritableStreamImpl,\n  ServiceError,\n  callErrorFromStatus,\n  SurfaceCall,\n} from './call';\nimport { CallCredentials } from './call-credentials';\nimport { StatusObject } from './call-interface';\nimport { Channel, ChannelImplementation } from './channel';\nimport { ConnectivityState } from './connectivity-state';\nimport { ChannelCredentials } from './channel-credentials';\nimport { ChannelOptions } from './channel-options';\nimport { Status } from './constants';\nimport { Metadata } from './metadata';\nimport { ClientMethodDefinition } from './make-client';\nimport {\n  getInterceptingCall,\n  Interceptor,\n  InterceptorProvider,\n  InterceptorArguments,\n  InterceptingCallInterface,\n} from './client-interceptors';\nimport {\n  ServerUnaryCall,\n  ServerReadableStream,\n  ServerWritableStream,\n  ServerDuplexStream,\n} from './server-call';\nimport { Deadline } from './deadline';\n\nconst CHANNEL_SYMBOL = Symbol();\nconst INTERCEPTOR_SYMBOL = Symbol();\nconst INTERCEPTOR_PROVIDER_SYMBOL = Symbol();\nconst CALL_INVOCATION_TRANSFORMER_SYMBOL = Symbol();\n\nfunction isFunction<ResponseType>(\n  arg: Metadata | CallOptions | UnaryCallback<ResponseType> | undefined\n): arg is UnaryCallback<ResponseType> {\n  return typeof arg === 'function';\n}\n\nexport interface UnaryCallback<ResponseType> {\n  (err: ServiceError | null, value?: ResponseType): void;\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport interface CallOptions {\n  deadline?: Deadline;\n  host?: string;\n  parent?:\n    | ServerUnaryCall<any, any>\n    | ServerReadableStream<any, any>\n    | ServerWritableStream<any, any>\n    | ServerDuplexStream<any, any>;\n  propagate_flags?: number;\n  credentials?: CallCredentials;\n  interceptors?: Interceptor[];\n  interceptor_providers?: InterceptorProvider[];\n}\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nexport interface CallProperties<RequestType, ResponseType> {\n  argument?: RequestType;\n  metadata: Metadata;\n  call: SurfaceCall;\n  channel: Channel;\n  methodDefinition: ClientMethodDefinition<RequestType, ResponseType>;\n  callOptions: CallOptions;\n  callback?: UnaryCallback<ResponseType>;\n}\n\nexport interface CallInvocationTransformer {\n  (callProperties: CallProperties<any, any>): CallProperties<any, any>; // eslint-disable-line @typescript-eslint/no-explicit-any\n}\n\nexport type ClientOptions = Partial<ChannelOptions> & {\n  channelOverride?: Channel;\n  channelFactoryOverride?: (\n    address: string,\n    credentials: ChannelCredentials,\n    options: ClientOptions\n  ) => Channel;\n  interceptors?: Interceptor[];\n  interceptor_providers?: InterceptorProvider[];\n  callInvocationTransformer?: CallInvocationTransformer;\n};\n\nfunction getErrorStackString(error: Error): string {\n  return error.stack?.split('\\n').slice(1).join('\\n') || 'no stack trace available';\n}\n\n/**\n * A generic gRPC client. Primarily useful as a base class for all generated\n * clients.\n */\nexport class Client {\n  private readonly [CHANNEL_SYMBOL]: Channel;\n  private readonly [INTERCEPTOR_SYMBOL]: Interceptor[];\n  private readonly [INTERCEPTOR_PROVIDER_SYMBOL]: InterceptorProvider[];\n  private readonly [CALL_INVOCATION_TRANSFORMER_SYMBOL]?: CallInvocationTransformer;\n  constructor(\n    address: string,\n    credentials: ChannelCredentials,\n    options: ClientOptions = {}\n  ) {\n    options = Object.assign({}, options);\n    this[INTERCEPTOR_SYMBOL] = options.interceptors ?? [];\n    delete options.interceptors;\n    this[INTERCEPTOR_PROVIDER_SYMBOL] = options.interceptor_providers ?? [];\n    delete options.interceptor_providers;\n    if (\n      this[INTERCEPTOR_SYMBOL].length > 0 &&\n      this[INTERCEPTOR_PROVIDER_SYMBOL].length > 0\n    ) {\n      throw new Error(\n        'Both interceptors and interceptor_providers were passed as options ' +\n          'to the client constructor. Only one of these is allowed.'\n      );\n    }\n    this[CALL_INVOCATION_TRANSFORMER_SYMBOL] =\n      options.callInvocationTransformer;\n    delete options.callInvocationTransformer;\n    if (options.channelOverride) {\n      this[CHANNEL_SYMBOL] = options.channelOverride;\n    } else if (options.channelFactoryOverride) {\n      const channelFactoryOverride = options.channelFactoryOverride;\n      delete options.channelFactoryOverride;\n      this[CHANNEL_SYMBOL] = channelFactoryOverride(\n        address,\n        credentials,\n        options\n      );\n    } else {\n      this[CHANNEL_SYMBOL] = new ChannelImplementation(\n        address,\n        credentials,\n        options\n      );\n    }\n  }\n\n  close(): void {\n    this[CHANNEL_SYMBOL].close();\n  }\n\n  getChannel(): Channel {\n    return this[CHANNEL_SYMBOL];\n  }\n\n  waitForReady(deadline: Deadline, callback: (error?: Error) => void): void {\n    const checkState = (err?: Error) => {\n      if (err) {\n        callback(new Error('Failed to connect before the deadline'));\n        return;\n      }\n      let newState;\n      try {\n        newState = this[CHANNEL_SYMBOL].getConnectivityState(true);\n      } catch (e) {\n        callback(new Error('The channel has been closed'));\n        return;\n      }\n      if (newState === ConnectivityState.READY) {\n        callback();\n      } else {\n        try {\n          this[CHANNEL_SYMBOL].watchConnectivityState(\n            newState,\n            deadline,\n            checkState\n          );\n        } catch (e) {\n          callback(new Error('The channel has been closed'));\n        }\n      }\n    };\n    setImmediate(checkState);\n  }\n\n  private checkOptionalUnaryResponseArguments<ResponseType>(\n    arg1: Metadata | CallOptions | UnaryCallback<ResponseType>,\n    arg2?: CallOptions | UnaryCallback<ResponseType>,\n    arg3?: UnaryCallback<ResponseType>\n  ): {\n    metadata: Metadata;\n    options: CallOptions;\n    callback: UnaryCallback<ResponseType>;\n  } {\n    if (isFunction(arg1)) {\n      return { metadata: new Metadata(), options: {}, callback: arg1 };\n    } else if (isFunction(arg2)) {\n      if (arg1 instanceof Metadata) {\n        return { metadata: arg1, options: {}, callback: arg2 };\n      } else {\n        return { metadata: new Metadata(), options: arg1, callback: arg2 };\n      }\n    } else {\n      if (\n        !(\n          arg1 instanceof Metadata &&\n          arg2 instanceof Object &&\n          isFunction(arg3)\n        )\n      ) {\n        throw new Error('Incorrect arguments passed');\n      }\n      return { metadata: arg1, options: arg2, callback: arg3 };\n    }\n  }\n\n  makeUnaryRequest<RequestType, ResponseType>(\n    method: string,\n    serialize: (value: RequestType) => Buffer,\n    deserialize: (value: Buffer) => ResponseType,\n    argument: RequestType,\n    metadata: Metadata,\n    options: CallOptions,\n    callback: UnaryCallback<ResponseType>\n  ): ClientUnaryCall;\n  makeUnaryRequest<RequestType, ResponseType>(\n    method: string,\n    serialize: (value: RequestType) => Buffer,\n    deserialize: (value: Buffer) => ResponseType,\n    argument: RequestType,\n    metadata: Metadata,\n    callback: UnaryCallback<ResponseType>\n  ): ClientUnaryCall;\n  makeUnaryRequest<RequestType, ResponseType>(\n    method: string,\n    serialize: (value: RequestType) => Buffer,\n    deserialize: (value: Buffer) => ResponseType,\n    argument: RequestType,\n    options: CallOptions,\n    callback: UnaryCallback<ResponseType>\n  ): ClientUnaryCall;\n  makeUnaryRequest<RequestType, ResponseType>(\n    method: string,\n    serialize: (value: RequestType) => Buffer,\n    deserialize: (value: Buffer) => ResponseType,\n    argument: RequestType,\n    callback: UnaryCallback<ResponseType>\n  ): ClientUnaryCall;\n  makeUnaryRequest<RequestType, ResponseType>(\n    method: string,\n    serialize: (value: RequestType) => Buffer,\n    deserialize: (value: Buffer) => ResponseType,\n    argument: RequestType,\n    metadata: Metadata | CallOptions | UnaryCallback<ResponseType>,\n    options?: CallOptions | UnaryCallback<ResponseType>,\n    callback?: UnaryCallback<ResponseType>\n  ): ClientUnaryCall {\n    const checkedArguments =\n      this.checkOptionalUnaryResponseArguments<ResponseType>(\n        metadata,\n        options,\n        callback\n      );\n    const methodDefinition: ClientMethodDefinition<RequestType, ResponseType> =\n      {\n        path: method,\n        requestStream: false,\n        responseStream: false,\n        requestSerialize: serialize,\n        responseDeserialize: deserialize,\n      };\n    let callProperties: CallProperties<RequestType, ResponseType> = {\n      argument: argument,\n      metadata: checkedArguments.metadata,\n      call: new ClientUnaryCallImpl(),\n      channel: this[CHANNEL_SYMBOL],\n      methodDefinition: methodDefinition,\n      callOptions: checkedArguments.options,\n      callback: checkedArguments.callback,\n    };\n    if (this[CALL_INVOCATION_TRANSFORMER_SYMBOL]) {\n      callProperties = this[CALL_INVOCATION_TRANSFORMER_SYMBOL]!(\n        callProperties\n      ) as CallProperties<RequestType, ResponseType>;\n    }\n    const emitter: ClientUnaryCall = callProperties.call;\n    const interceptorArgs: InterceptorArguments = {\n      clientInterceptors: this[INTERCEPTOR_SYMBOL],\n      clientInterceptorProviders: this[INTERCEPTOR_PROVIDER_SYMBOL],\n      callInterceptors: callProperties.callOptions.interceptors ?? [],\n      callInterceptorProviders:\n        callProperties.callOptions.interceptor_providers ?? [],\n    };\n    const call: InterceptingCallInterface = getInterceptingCall(\n      interceptorArgs,\n      callProperties.methodDefinition,\n      callProperties.callOptions,\n      callProperties.channel\n    );\n    /* This needs to happen before the emitter is used. Unfortunately we can't\n     * enforce this with the type system. We need to construct this emitter\n     * before calling the CallInvocationTransformer, and we need to create the\n     * call after that. */\n    emitter.call = call;\n    let responseMessage: ResponseType | null = null;\n    let receivedStatus = false;\n    let callerStackError: Error | null = new Error();\n    call.start(callProperties.metadata, {\n      onReceiveMetadata: metadata => {\n        emitter.emit('metadata', metadata);\n      },\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      onReceiveMessage(message: any) {\n        if (responseMessage !== null) {\n          call.cancelWithStatus(Status.UNIMPLEMENTED, 'Too many responses received');\n        }\n        responseMessage = message;\n      },\n      onReceiveStatus(status: StatusObject) {\n        if (receivedStatus) {\n          return;\n        }\n        receivedStatus = true;\n        if (status.code === Status.OK) {\n          if (responseMessage === null) {\n            const callerStack = getErrorStackString(callerStackError!);\n            callProperties.callback!(\n              callErrorFromStatus(\n                {\n                  code: Status.UNIMPLEMENTED,\n                  details: 'No message received',\n                  metadata: status.metadata,\n                },\n                callerStack\n              )\n            );\n          } else {\n            callProperties.callback!(null, responseMessage);\n          }\n        } else {\n          const callerStack = getErrorStackString(callerStackError!);\n          callProperties.callback!(callErrorFromStatus(status, callerStack));\n        }\n        /* Avoid retaining the callerStackError object in the call context of\n         * the status event handler. */\n        callerStackError = null;\n        emitter.emit('status', status);\n      },\n    });\n    call.sendMessage(argument);\n    call.halfClose();\n    return emitter;\n  }\n\n  makeClientStreamRequest<RequestType, ResponseType>(\n    method: string,\n    serialize: (value: RequestType) => Buffer,\n    deserialize: (value: Buffer) => ResponseType,\n    metadata: Metadata,\n    options: CallOptions,\n    callback: UnaryCallback<ResponseType>\n  ): ClientWritableStream<RequestType>;\n  makeClientStreamRequest<RequestType, ResponseType>(\n    method: string,\n    serialize: (value: RequestType) => Buffer,\n    deserialize: (value: Buffer) => ResponseType,\n    metadata: Metadata,\n    callback: UnaryCallback<ResponseType>\n  ): ClientWritableStream<RequestType>;\n  makeClientStreamRequest<RequestType, ResponseType>(\n    method: string,\n    serialize: (value: RequestType) => Buffer,\n    deserialize: (value: Buffer) => ResponseType,\n    options: CallOptions,\n    callback: UnaryCallback<ResponseType>\n  ): ClientWritableStream<RequestType>;\n  makeClientStreamRequest<RequestType, ResponseType>(\n    method: string,\n    serialize: (value: RequestType) => Buffer,\n    deserialize: (value: Buffer) => ResponseType,\n    callback: UnaryCallback<ResponseType>\n  ): ClientWritableStream<RequestType>;\n  makeClientStreamRequest<RequestType, ResponseType>(\n    method: string,\n    serialize: (value: RequestType) => Buffer,\n    deserialize: (value: Buffer) => ResponseType,\n    metadata: Metadata | CallOptions | UnaryCallback<ResponseType>,\n    options?: CallOptions | UnaryCallback<ResponseType>,\n    callback?: UnaryCallback<ResponseType>\n  ): ClientWritableStream<RequestType> {\n    const checkedArguments =\n      this.checkOptionalUnaryResponseArguments<ResponseType>(\n        metadata,\n        options,\n        callback\n      );\n    const methodDefinition: ClientMethodDefinition<RequestType, ResponseType> =\n      {\n        path: method,\n        requestStream: true,\n        responseStream: false,\n        requestSerialize: serialize,\n        responseDeserialize: deserialize,\n      };\n    let callProperties: CallProperties<RequestType, ResponseType> = {\n      metadata: checkedArguments.metadata,\n      call: new ClientWritableStreamImpl<RequestType>(serialize),\n      channel: this[CHANNEL_SYMBOL],\n      methodDefinition: methodDefinition,\n      callOptions: checkedArguments.options,\n      callback: checkedArguments.callback,\n    };\n    if (this[CALL_INVOCATION_TRANSFORMER_SYMBOL]) {\n      callProperties = this[CALL_INVOCATION_TRANSFORMER_SYMBOL]!(\n        callProperties\n      ) as CallProperties<RequestType, ResponseType>;\n    }\n    const emitter: ClientWritableStream<RequestType> =\n      callProperties.call as ClientWritableStream<RequestType>;\n    const interceptorArgs: InterceptorArguments = {\n      clientInterceptors: this[INTERCEPTOR_SYMBOL],\n      clientInterceptorProviders: this[INTERCEPTOR_PROVIDER_SYMBOL],\n      callInterceptors: callProperties.callOptions.interceptors ?? [],\n      callInterceptorProviders:\n        callProperties.callOptions.interceptor_providers ?? [],\n    };\n    const call: InterceptingCallInterface = getInterceptingCall(\n      interceptorArgs,\n      callProperties.methodDefinition,\n      callProperties.callOptions,\n      callProperties.channel\n    );\n    /* This needs to happen before the emitter is used. Unfortunately we can't\n     * enforce this with the type system. We need to construct this emitter\n     * before calling the CallInvocationTransformer, and we need to create the\n     * call after that. */\n    emitter.call = call;\n    let responseMessage: ResponseType | null = null;\n    let receivedStatus = false;\n    let callerStackError: Error | null = new Error();\n    call.start(callProperties.metadata, {\n      onReceiveMetadata: metadata => {\n        emitter.emit('metadata', metadata);\n      },\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      onReceiveMessage(message: any) {\n        if (responseMessage !== null) {\n          call.cancelWithStatus(Status.UNIMPLEMENTED, 'Too many responses received');\n        }\n        responseMessage = message;\n        call.startRead();\n      },\n      onReceiveStatus(status: StatusObject) {\n        if (receivedStatus) {\n          return;\n        }\n        receivedStatus = true;\n        if (status.code === Status.OK) {\n          if (responseMessage === null) {\n            const callerStack = getErrorStackString(callerStackError!);\n            callProperties.callback!(\n              callErrorFromStatus(\n                {\n                  code: Status.UNIMPLEMENTED,\n                  details: 'No message received',\n                  metadata: status.metadata,\n                },\n                callerStack\n              )\n            );\n          } else {\n            callProperties.callback!(null, responseMessage);\n          }\n        } else {\n          const callerStack = getErrorStackString(callerStackError!);\n          callProperties.callback!(callErrorFromStatus(status, callerStack));\n        }\n        /* Avoid retaining the callerStackError object in the call context of\n         * the status event handler. */\n        callerStackError = null;\n        emitter.emit('status', status);\n      },\n    });\n    return emitter;\n  }\n\n  private checkMetadataAndOptions(\n    arg1?: Metadata | CallOptions,\n    arg2?: CallOptions\n  ): { metadata: Metadata; options: CallOptions } {\n    let metadata: Metadata;\n    let options: CallOptions;\n    if (arg1 instanceof Metadata) {\n      metadata = arg1;\n      if (arg2) {\n        options = arg2;\n      } else {\n        options = {};\n      }\n    } else {\n      if (arg1) {\n        options = arg1;\n      } else {\n        options = {};\n      }\n      metadata = new Metadata();\n    }\n    return { metadata, options };\n  }\n\n  makeServerStreamRequest<RequestType, ResponseType>(\n    method: string,\n    serialize: (value: RequestType) => Buffer,\n    deserialize: (value: Buffer) => ResponseType,\n    argument: RequestType,\n    metadata: Metadata,\n    options?: CallOptions\n  ): ClientReadableStream<ResponseType>;\n  makeServerStreamRequest<RequestType, ResponseType>(\n    method: string,\n    serialize: (value: RequestType) => Buffer,\n    deserialize: (value: Buffer) => ResponseType,\n    argument: RequestType,\n    options?: CallOptions\n  ): ClientReadableStream<ResponseType>;\n  makeServerStreamRequest<RequestType, ResponseType>(\n    method: string,\n    serialize: (value: RequestType) => Buffer,\n    deserialize: (value: Buffer) => ResponseType,\n    argument: RequestType,\n    metadata?: Metadata | CallOptions,\n    options?: CallOptions\n  ): ClientReadableStream<ResponseType> {\n    const checkedArguments = this.checkMetadataAndOptions(metadata, options);\n    const methodDefinition: ClientMethodDefinition<RequestType, ResponseType> =\n      {\n        path: method,\n        requestStream: false,\n        responseStream: true,\n        requestSerialize: serialize,\n        responseDeserialize: deserialize,\n      };\n    let callProperties: CallProperties<RequestType, ResponseType> = {\n      argument: argument,\n      metadata: checkedArguments.metadata,\n      call: new ClientReadableStreamImpl<ResponseType>(deserialize),\n      channel: this[CHANNEL_SYMBOL],\n      methodDefinition: methodDefinition,\n      callOptions: checkedArguments.options,\n    };\n    if (this[CALL_INVOCATION_TRANSFORMER_SYMBOL]) {\n      callProperties = this[CALL_INVOCATION_TRANSFORMER_SYMBOL]!(\n        callProperties\n      ) as CallProperties<RequestType, ResponseType>;\n    }\n    const stream: ClientReadableStream<ResponseType> =\n      callProperties.call as ClientReadableStream<ResponseType>;\n    const interceptorArgs: InterceptorArguments = {\n      clientInterceptors: this[INTERCEPTOR_SYMBOL],\n      clientInterceptorProviders: this[INTERCEPTOR_PROVIDER_SYMBOL],\n      callInterceptors: callProperties.callOptions.interceptors ?? [],\n      callInterceptorProviders:\n        callProperties.callOptions.interceptor_providers ?? [],\n    };\n    const call: InterceptingCallInterface = getInterceptingCall(\n      interceptorArgs,\n      callProperties.methodDefinition,\n      callProperties.callOptions,\n      callProperties.channel\n    );\n    /* This needs to happen before the emitter is used. Unfortunately we can't\n     * enforce this with the type system. We need to construct this emitter\n     * before calling the CallInvocationTransformer, and we need to create the\n     * call after that. */\n    stream.call = call;\n    let receivedStatus = false;\n    let callerStackError: Error | null = new Error();\n    call.start(callProperties.metadata, {\n      onReceiveMetadata(metadata: Metadata) {\n        stream.emit('metadata', metadata);\n      },\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      onReceiveMessage(message: any) {\n        stream.push(message);\n      },\n      onReceiveStatus(status: StatusObject) {\n        if (receivedStatus) {\n          return;\n        }\n        receivedStatus = true;\n        stream.push(null);\n        if (status.code !== Status.OK) {\n          const callerStack = getErrorStackString(callerStackError!);\n          stream.emit('error', callErrorFromStatus(status, callerStack));\n        }\n        /* Avoid retaining the callerStackError object in the call context of\n         * the status event handler. */\n        callerStackError = null;\n        stream.emit('status', status);\n      },\n    });\n    call.sendMessage(argument);\n    call.halfClose();\n    return stream;\n  }\n\n  makeBidiStreamRequest<RequestType, ResponseType>(\n    method: string,\n    serialize: (value: RequestType) => Buffer,\n    deserialize: (value: Buffer) => ResponseType,\n    metadata: Metadata,\n    options?: CallOptions\n  ): ClientDuplexStream<RequestType, ResponseType>;\n  makeBidiStreamRequest<RequestType, ResponseType>(\n    method: string,\n    serialize: (value: RequestType) => Buffer,\n    deserialize: (value: Buffer) => ResponseType,\n    options?: CallOptions\n  ): ClientDuplexStream<RequestType, ResponseType>;\n  makeBidiStreamRequest<RequestType, ResponseType>(\n    method: string,\n    serialize: (value: RequestType) => Buffer,\n    deserialize: (value: Buffer) => ResponseType,\n    metadata?: Metadata | CallOptions,\n    options?: CallOptions\n  ): ClientDuplexStream<RequestType, ResponseType> {\n    const checkedArguments = this.checkMetadataAndOptions(metadata, options);\n    const methodDefinition: ClientMethodDefinition<RequestType, ResponseType> =\n      {\n        path: method,\n        requestStream: true,\n        responseStream: true,\n        requestSerialize: serialize,\n        responseDeserialize: deserialize,\n      };\n    let callProperties: CallProperties<RequestType, ResponseType> = {\n      metadata: checkedArguments.metadata,\n      call: new ClientDuplexStreamImpl<RequestType, ResponseType>(\n        serialize,\n        deserialize\n      ),\n      channel: this[CHANNEL_SYMBOL],\n      methodDefinition: methodDefinition,\n      callOptions: checkedArguments.options,\n    };\n    if (this[CALL_INVOCATION_TRANSFORMER_SYMBOL]) {\n      callProperties = this[CALL_INVOCATION_TRANSFORMER_SYMBOL]!(\n        callProperties\n      ) as CallProperties<RequestType, ResponseType>;\n    }\n    const stream: ClientDuplexStream<RequestType, ResponseType> =\n      callProperties.call as ClientDuplexStream<RequestType, ResponseType>;\n    const interceptorArgs: InterceptorArguments = {\n      clientInterceptors: this[INTERCEPTOR_SYMBOL],\n      clientInterceptorProviders: this[INTERCEPTOR_PROVIDER_SYMBOL],\n      callInterceptors: callProperties.callOptions.interceptors ?? [],\n      callInterceptorProviders:\n        callProperties.callOptions.interceptor_providers ?? [],\n    };\n    const call: InterceptingCallInterface = getInterceptingCall(\n      interceptorArgs,\n      callProperties.methodDefinition,\n      callProperties.callOptions,\n      callProperties.channel\n    );\n    /* This needs to happen before the emitter is used. Unfortunately we can't\n     * enforce this with the type system. We need to construct this emitter\n     * before calling the CallInvocationTransformer, and we need to create the\n     * call after that. */\n    stream.call = call;\n    let receivedStatus = false;\n    let callerStackError: Error | null = new Error();\n    call.start(callProperties.metadata, {\n      onReceiveMetadata(metadata: Metadata) {\n        stream.emit('metadata', metadata);\n      },\n      onReceiveMessage(message: Buffer) {\n        stream.push(message);\n      },\n      onReceiveStatus(status: StatusObject) {\n        if (receivedStatus) {\n          return;\n        }\n        receivedStatus = true;\n        stream.push(null);\n        if (status.code !== Status.OK) {\n          const callerStack = getErrorStackString(callerStackError!);\n          stream.emit('error', callErrorFromStatus(status, callerStack));\n        }\n        /* Avoid retaining the callerStackError object in the call context of\n         * the status event handler. */\n        callerStackError = null;\n        stream.emit('status', status);\n      },\n    });\n    return stream;\n  }\n}\n", "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { ChannelCredentials } from './channel-credentials';\nimport { ChannelOptions } from './channel-options';\nimport { Client } from './client';\nimport { UntypedServiceImplementation } from './server';\n\nexport interface Serialize<T> {\n  (value: T): Buffer;\n}\n\nexport interface Deserialize<T> {\n  (bytes: Buffer): T;\n}\n\nexport interface ClientMethodDefinition<RequestType, ResponseType> {\n  path: string;\n  requestStream: boolean;\n  responseStream: boolean;\n  requestSerialize: Serialize<RequestType>;\n  responseDeserialize: Deserialize<ResponseType>;\n  originalName?: string;\n}\n\nexport interface ServerMethodDefinition<RequestType, ResponseType> {\n  path: string;\n  requestStream: boolean;\n  responseStream: boolean;\n  responseSerialize: Serialize<ResponseType>;\n  requestDeserialize: Deserialize<RequestType>;\n  originalName?: string;\n}\n\nexport interface MethodDefinition<RequestType, ResponseType>\n  extends ClientMethodDefinition<RequestType, ResponseType>,\n    ServerMethodDefinition<RequestType, ResponseType> {}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport type ServiceDefinition<\n  ImplementationType = UntypedServiceImplementation\n> = {\n  readonly [index in keyof ImplementationType]: MethodDefinition<any, any>;\n};\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\nexport interface ProtobufTypeDefinition {\n  format: string;\n  type: object;\n  fileDescriptorProtos: Buffer[];\n}\n\nexport interface PackageDefinition {\n  [index: string]: ServiceDefinition | ProtobufTypeDefinition;\n}\n\n/**\n * Map with short names for each of the requester maker functions. Used in\n * makeClientConstructor\n * @private\n */\nconst requesterFuncs = {\n  unary: Client.prototype.makeUnaryRequest,\n  server_stream: Client.prototype.makeServerStreamRequest,\n  client_stream: Client.prototype.makeClientStreamRequest,\n  bidi: Client.prototype.makeBidiStreamRequest,\n};\n\nexport interface ServiceClient extends Client {\n  [methodName: string]: Function;\n}\n\nexport interface ServiceClientConstructor {\n  new (\n    address: string,\n    credentials: ChannelCredentials,\n    options?: Partial<ChannelOptions>\n  ): ServiceClient;\n  service: ServiceDefinition;\n  serviceName: string;\n}\n\n/**\n * Returns true, if given key is included in the blacklisted\n * keys.\n * @param key key for check, string.\n */\nfunction isPrototypePolluted(key: string): boolean {\n  return ['__proto__', 'prototype', 'constructor'].includes(key);\n}\n\n/**\n * Creates a constructor for a client with the given methods, as specified in\n * the methods argument. The resulting class will have an instance method for\n * each method in the service, which is a partial application of one of the\n * [Client]{@link grpc.Client} request methods, depending on `requestSerialize`\n * and `responseSerialize`, with the `method`, `serialize`, and `deserialize`\n * arguments predefined.\n * @param methods An object mapping method names to\n *     method attributes\n * @param serviceName The fully qualified name of the service\n * @param classOptions An options object.\n * @return New client constructor, which is a subclass of\n *     {@link grpc.Client}, and has the same arguments as that constructor.\n */\nexport function makeClientConstructor(\n  methods: ServiceDefinition,\n  serviceName: string,\n  classOptions?: {}\n): ServiceClientConstructor {\n  if (!classOptions) {\n    classOptions = {};\n  }\n\n  class ServiceClientImpl extends Client implements ServiceClient {\n    static service: ServiceDefinition;\n    static serviceName: string;\n    [methodName: string]: Function;\n  }\n\n  Object.keys(methods).forEach(name => {\n    if (isPrototypePolluted(name)) {\n      return;\n    }\n    const attrs = methods[name];\n    let methodType: keyof typeof requesterFuncs;\n    // TODO(murgatroid99): Verify that we don't need this anymore\n    if (typeof name === 'string' && name.charAt(0) === '$') {\n      throw new Error('Method names cannot start with $');\n    }\n    if (attrs.requestStream) {\n      if (attrs.responseStream) {\n        methodType = 'bidi';\n      } else {\n        methodType = 'client_stream';\n      }\n    } else {\n      if (attrs.responseStream) {\n        methodType = 'server_stream';\n      } else {\n        methodType = 'unary';\n      }\n    }\n    const serialize = attrs.requestSerialize;\n    const deserialize = attrs.responseDeserialize;\n    const methodFunc = partial(\n      requesterFuncs[methodType],\n      attrs.path,\n      serialize,\n      deserialize\n    );\n    ServiceClientImpl.prototype[name] = methodFunc;\n    // Associate all provided attributes with the method\n    Object.assign(ServiceClientImpl.prototype[name], attrs);\n    if (attrs.originalName && !isPrototypePolluted(attrs.originalName)) {\n      ServiceClientImpl.prototype[attrs.originalName] =\n        ServiceClientImpl.prototype[name];\n    }\n  });\n\n  ServiceClientImpl.service = methods;\n  ServiceClientImpl.serviceName = serviceName;\n\n  return ServiceClientImpl;\n}\n\nfunction partial(\n  fn: Function,\n  path: string,\n  serialize: Function,\n  deserialize: Function\n): Function {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  return function (this: any, ...args: any[]) {\n    return fn.call(this, path, serialize, deserialize, ...args);\n  };\n}\n\nexport interface GrpcObject {\n  [index: string]:\n    | GrpcObject\n    | ServiceClientConstructor\n    | ProtobufTypeDefinition;\n}\n\nfunction isProtobufTypeDefinition(\n  obj: ServiceDefinition | ProtobufTypeDefinition\n): obj is ProtobufTypeDefinition {\n  return 'format' in obj;\n}\n\n/**\n * Load a gRPC package definition as a gRPC object hierarchy.\n * @param packageDef The package definition object.\n * @return The resulting gRPC object.\n */\nexport function loadPackageDefinition(\n  packageDef: PackageDefinition\n): GrpcObject {\n  const result: GrpcObject = {};\n  for (const serviceFqn in packageDef) {\n    if (Object.prototype.hasOwnProperty.call(packageDef, serviceFqn)) {\n      const service = packageDef[serviceFqn];\n      const nameComponents = serviceFqn.split('.');\n      if (nameComponents.some((comp: string) => isPrototypePolluted(comp))) {\n        continue;\n      }\n      const serviceName = nameComponents[nameComponents.length - 1];\n      let current = result;\n      for (const packageName of nameComponents.slice(0, -1)) {\n        if (!current[packageName]) {\n          current[packageName] = {};\n        }\n        current = current[packageName] as GrpcObject;\n      }\n      if (isProtobufTypeDefinition(service)) {\n        current[serviceName] = service;\n      } else {\n        current[serviceName] = makeClientConstructor(service, serviceName, {});\n      }\n    }\n  }\n  return result;\n}\n", "/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n    rsComboMarksRange = '\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe23',\n    rsComboSymbolsRange = '\\\\u20d0-\\\\u20f0',\n    rsDingbatRange = '\\\\u2700-\\\\u27bf',\n    rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n    rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n    rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n    rsPunctuationRange = '\\\\u2000-\\\\u206f',\n    rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n    rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n    rsVarRange = '\\\\ufe0e\\\\ufe0f',\n    rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n    rsAstral = '[' + rsAstralRange + ']',\n    rsBreak = '[' + rsBreakRange + ']',\n    rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']',\n    rsDigits = '\\\\d+',\n    rsDingbat = '[' + rsDingbatRange + ']',\n    rsLower = '[' + rsLowerRange + ']',\n    rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n    rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n    rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n    rsNonAstral = '[^' + rsAstralRange + ']',\n    rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n    rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n    rsUpper = '[' + rsUpperRange + ']',\n    rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsLowerMisc = '(?:' + rsLower + '|' + rsMisc + ')',\n    rsUpperMisc = '(?:' + rsUpper + '|' + rsMisc + ')',\n    rsOptLowerContr = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n    rsOptUpperContr = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n    reOptMod = rsModifier + '?',\n    rsOptVar = '[' + rsVarRange + ']?',\n    rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n    rsSeq = rsOptVar + reOptMod + rsOptJoin,\n    rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n    rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n  rsUpper + '?' + rsLower + '+' + rsOptLowerContr + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n  rsUpperMisc + '+' + rsOptUpperContr + '(?=' + [rsBreak, rsUpper + rsLowerMisc, '$'].join('|') + ')',\n  rsUpper + '?' + rsLowerMisc + '+' + rsOptLowerContr,\n  rsUpper + '+' + rsOptUpperContr,\n  rsDigits,\n  rsEmoji\n].join('|'), 'g');\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange  + rsComboMarksRange + rsComboSymbolsRange + rsVarRange + ']');\n\n/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n  // Latin-1 Supplement block.\n  '\\xc0': 'A',  '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n  '\\xe0': 'a',  '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n  '\\xc7': 'C',  '\\xe7': 'c',\n  '\\xd0': 'D',  '\\xf0': 'd',\n  '\\xc8': 'E',  '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n  '\\xe8': 'e',  '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n  '\\xcc': 'I',  '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n  '\\xec': 'i',  '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n  '\\xd1': 'N',  '\\xf1': 'n',\n  '\\xd2': 'O',  '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n  '\\xf2': 'o',  '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n  '\\xd9': 'U',  '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n  '\\xf9': 'u',  '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n  '\\xdd': 'Y',  '\\xfd': 'y', '\\xff': 'y',\n  '\\xc6': 'Ae', '\\xe6': 'ae',\n  '\\xde': 'Th', '\\xfe': 'th',\n  '\\xdf': 'ss',\n  // Latin Extended-A block.\n  '\\u0100': 'A',  '\\u0102': 'A', '\\u0104': 'A',\n  '\\u0101': 'a',  '\\u0103': 'a', '\\u0105': 'a',\n  '\\u0106': 'C',  '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n  '\\u0107': 'c',  '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n  '\\u010e': 'D',  '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n  '\\u0112': 'E',  '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n  '\\u0113': 'e',  '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n  '\\u011c': 'G',  '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n  '\\u011d': 'g',  '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n  '\\u0124': 'H',  '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n  '\\u0128': 'I',  '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n  '\\u0129': 'i',  '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n  '\\u0134': 'J',  '\\u0135': 'j',\n  '\\u0136': 'K',  '\\u0137': 'k', '\\u0138': 'k',\n  '\\u0139': 'L',  '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n  '\\u013a': 'l',  '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n  '\\u0143': 'N',  '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n  '\\u0144': 'n',  '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n  '\\u014c': 'O',  '\\u014e': 'O', '\\u0150': 'O',\n  '\\u014d': 'o',  '\\u014f': 'o', '\\u0151': 'o',\n  '\\u0154': 'R',  '\\u0156': 'R', '\\u0158': 'R',\n  '\\u0155': 'r',  '\\u0157': 'r', '\\u0159': 'r',\n  '\\u015a': 'S',  '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n  '\\u015b': 's',  '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n  '\\u0162': 'T',  '\\u0164': 'T', '\\u0166': 'T',\n  '\\u0163': 't',  '\\u0165': 't', '\\u0167': 't',\n  '\\u0168': 'U',  '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n  '\\u0169': 'u',  '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n  '\\u0174': 'W',  '\\u0175': 'w',\n  '\\u0176': 'Y',  '\\u0177': 'y', '\\u0178': 'Y',\n  '\\u0179': 'Z',  '\\u017b': 'Z', '\\u017d': 'Z',\n  '\\u017a': 'z',  '\\u017c': 'z', '\\u017e': 'z',\n  '\\u0132': 'IJ', '\\u0133': 'ij',\n  '\\u0152': 'Oe', '\\u0153': 'oe',\n  '\\u0149': \"'n\", '\\u017f': 'ss'\n};\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n *  the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n  var index = -1,\n      length = array ? array.length : 0;\n\n  if (initAccum && length) {\n    accumulator = array[++index];\n  }\n  while (++index < length) {\n    accumulator = iteratee(accumulator, array[index], index, array);\n  }\n  return accumulator;\n}\n\n/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n  return string.split('');\n}\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n  return string.match(reAsciiWord) || [];\n}\n\n/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n  return function(key) {\n    return object == null ? undefined : object[key];\n  };\n}\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n  return reHasUnicode.test(string);\n}\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n  return reHasUnicodeWord.test(string);\n}\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n  return hasUnicode(string)\n    ? unicodeToArray(string)\n    : asciiToArray(string);\n}\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n  return string.match(reUnicode) || [];\n}\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n  return string.match(reUnicodeWord) || [];\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n    symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n  var index = -1,\n      length = array.length;\n\n  if (start < 0) {\n    start = -start > length ? 0 : (length + start);\n  }\n  end = end > length ? length : end;\n  if (end < 0) {\n    end += length;\n  }\n  length = start > end ? 0 : ((end - start) >>> 0);\n  start >>>= 0;\n\n  var result = Array(length);\n  while (++index < length) {\n    result[index] = array[index + start];\n  }\n  return result;\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n  // Exit early for strings to avoid a performance hit in some environments.\n  if (typeof value == 'string') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return symbolToString ? symbolToString.call(value) : '';\n  }\n  var result = (value + '');\n  return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n  var length = array.length;\n  end = end === undefined ? length : end;\n  return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n  return function(string) {\n    string = toString(string);\n\n    var strSymbols = hasUnicode(string)\n      ? stringToArray(string)\n      : undefined;\n\n    var chr = strSymbols\n      ? strSymbols[0]\n      : string.charAt(0);\n\n    var trailing = strSymbols\n      ? castSlice(strSymbols, 1).join('')\n      : string.slice(1);\n\n    return chr[methodName]() + trailing;\n  };\n}\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n  return function(string) {\n    return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n  };\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n  return value == null ? '' : baseToString(value);\n}\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n  word = word.toLowerCase();\n  return result + (index ? capitalize(word) : word);\n});\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n  return upperFirst(toString(string).toLowerCase());\n}\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('d\u00E9j\u00E0 vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n  string = toString(string);\n  return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n  string = toString(string);\n  pattern = guard ? undefined : pattern;\n\n  if (pattern === undefined) {\n    return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n  }\n  return string.match(pattern) || [];\n}\n\nmodule.exports = camelCase;\n", "\"use strict\";\nmodule.exports = LongBits;\n\nvar util = require(\"../util/minimal\");\n\n/**\n * Constructs new long bits.\n * @classdesc Helper class for working with the low and high bits of a 64 bit value.\n * @memberof util\n * @constructor\n * @param {number} lo Low 32 bits, unsigned\n * @param {number} hi High 32 bits, unsigned\n */\nfunction LongBits(lo, hi) {\n\n    // note that the casts below are theoretically unnecessary as of today, but older statically\n    // generated converter code might still call the ctor with signed 32bits. kept for compat.\n\n    /**\n     * Low bits.\n     * @type {number}\n     */\n    this.lo = lo >>> 0;\n\n    /**\n     * High bits.\n     * @type {number}\n     */\n    this.hi = hi >>> 0;\n}\n\n/**\n * Zero bits.\n * @memberof util.LongBits\n * @type {util.LongBits}\n */\nvar zero = LongBits.zero = new LongBits(0, 0);\n\nzero.toNumber = function() { return 0; };\nzero.zzEncode = zero.zzDecode = function() { return this; };\nzero.length = function() { return 1; };\n\n/**\n * Zero hash.\n * @memberof util.LongBits\n * @type {string}\n */\nvar zeroHash = LongBits.zeroHash = \"\\0\\0\\0\\0\\0\\0\\0\\0\";\n\n/**\n * Constructs new long bits from the specified number.\n * @param {number} value Value\n * @returns {util.LongBits} Instance\n */\nLongBits.fromNumber = function fromNumber(value) {\n    if (value === 0)\n        return zero;\n    var sign = value < 0;\n    if (sign)\n        value = -value;\n    var lo = value >>> 0,\n        hi = (value - lo) / 4294967296 >>> 0;\n    if (sign) {\n        hi = ~hi >>> 0;\n        lo = ~lo >>> 0;\n        if (++lo > 4294967295) {\n            lo = 0;\n            if (++hi > 4294967295)\n                hi = 0;\n        }\n    }\n    return new LongBits(lo, hi);\n};\n\n/**\n * Constructs new long bits from a number, long or string.\n * @param {Long|number|string} value Value\n * @returns {util.LongBits} Instance\n */\nLongBits.from = function from(value) {\n    if (typeof value === \"number\")\n        return LongBits.fromNumber(value);\n    if (util.isString(value)) {\n        /* istanbul ignore else */\n        if (util.Long)\n            value = util.Long.fromString(value);\n        else\n            return LongBits.fromNumber(parseInt(value, 10));\n    }\n    return value.low || value.high ? new LongBits(value.low >>> 0, value.high >>> 0) : zero;\n};\n\n/**\n * Converts this long bits to a possibly unsafe JavaScript number.\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {number} Possibly unsafe number\n */\nLongBits.prototype.toNumber = function toNumber(unsigned) {\n    if (!unsigned && this.hi >>> 31) {\n        var lo = ~this.lo + 1 >>> 0,\n            hi = ~this.hi     >>> 0;\n        if (!lo)\n            hi = hi + 1 >>> 0;\n        return -(lo + hi * 4294967296);\n    }\n    return this.lo + this.hi * 4294967296;\n};\n\n/**\n * Converts this long bits to a long.\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {Long} Long\n */\nLongBits.prototype.toLong = function toLong(unsigned) {\n    return util.Long\n        ? new util.Long(this.lo | 0, this.hi | 0, Boolean(unsigned))\n        /* istanbul ignore next */\n        : { low: this.lo | 0, high: this.hi | 0, unsigned: Boolean(unsigned) };\n};\n\nvar charCodeAt = String.prototype.charCodeAt;\n\n/**\n * Constructs new long bits from the specified 8 characters long hash.\n * @param {string} hash Hash\n * @returns {util.LongBits} Bits\n */\nLongBits.fromHash = function fromHash(hash) {\n    if (hash === zeroHash)\n        return zero;\n    return new LongBits(\n        ( charCodeAt.call(hash, 0)\n        | charCodeAt.call(hash, 1) << 8\n        | charCodeAt.call(hash, 2) << 16\n        | charCodeAt.call(hash, 3) << 24) >>> 0\n    ,\n        ( charCodeAt.call(hash, 4)\n        | charCodeAt.call(hash, 5) << 8\n        | charCodeAt.call(hash, 6) << 16\n        | charCodeAt.call(hash, 7) << 24) >>> 0\n    );\n};\n\n/**\n * Converts this long bits to a 8 characters long hash.\n * @returns {string} Hash\n */\nLongBits.prototype.toHash = function toHash() {\n    return String.fromCharCode(\n        this.lo        & 255,\n        this.lo >>> 8  & 255,\n        this.lo >>> 16 & 255,\n        this.lo >>> 24      ,\n        this.hi        & 255,\n        this.hi >>> 8  & 255,\n        this.hi >>> 16 & 255,\n        this.hi >>> 24\n    );\n};\n\n/**\n * Zig-zag encodes this long bits.\n * @returns {util.LongBits} `this`\n */\nLongBits.prototype.zzEncode = function zzEncode() {\n    var mask =   this.hi >> 31;\n    this.hi  = ((this.hi << 1 | this.lo >>> 31) ^ mask) >>> 0;\n    this.lo  = ( this.lo << 1                   ^ mask) >>> 0;\n    return this;\n};\n\n/**\n * Zig-zag decodes this long bits.\n * @returns {util.LongBits} `this`\n */\nLongBits.prototype.zzDecode = function zzDecode() {\n    var mask = -(this.lo & 1);\n    this.lo  = ((this.lo >>> 1 | this.hi << 31) ^ mask) >>> 0;\n    this.hi  = ( this.hi >>> 1                  ^ mask) >>> 0;\n    return this;\n};\n\n/**\n * Calculates the length of this longbits when encoded as a varint.\n * @returns {number} Length\n */\nLongBits.prototype.length = function length() {\n    var part0 =  this.lo,\n        part1 = (this.lo >>> 28 | this.hi << 4) >>> 0,\n        part2 =  this.hi >>> 24;\n    return part2 === 0\n         ? part1 === 0\n           ? part0 < 16384\n             ? part0 < 128 ? 1 : 2\n             : part0 < 2097152 ? 3 : 4\n           : part1 < 16384\n             ? part1 < 128 ? 5 : 6\n             : part1 < 2097152 ? 7 : 8\n         : part2 < 128 ? 9 : 10;\n};\n", "\"use strict\";\nvar util = exports;\n\n// used to return a Promise where callback is omitted\nutil.asPromise = require(\"@protobufjs/aspromise\");\n\n// converts to / from base64 encoded strings\nutil.base64 = require(\"@protobufjs/base64\");\n\n// base class of rpc.Service\nutil.EventEmitter = require(\"@protobufjs/eventemitter\");\n\n// float handling accross browsers\nutil.float = require(\"@protobufjs/float\");\n\n// requires modules optionally and hides the call from bundlers\nutil.inquire = require(\"@protobufjs/inquire\");\n\n// converts to / from utf8 encoded strings\nutil.utf8 = require(\"@protobufjs/utf8\");\n\n// provides a node-like buffer pool in the browser\nutil.pool = require(\"@protobufjs/pool\");\n\n// utility to work with the low and high bits of a 64 bit value\nutil.LongBits = require(\"./longbits\");\n\n/**\n * Whether running within node or not.\n * @memberof util\n * @type {boolean}\n */\nutil.isNode = Boolean(typeof global !== \"undefined\"\n                   && global\n                   && global.process\n                   && global.process.versions\n                   && global.process.versions.node);\n\n/**\n * Global object reference.\n * @memberof util\n * @type {Object}\n */\nutil.global = util.isNode && global\n           || typeof window !== \"undefined\" && window\n           || typeof self   !== \"undefined\" && self\n           || this; // eslint-disable-line no-invalid-this\n\n/**\n * An immuable empty array.\n * @memberof util\n * @type {Array.<*>}\n * @const\n */\nutil.emptyArray = Object.freeze ? Object.freeze([]) : /* istanbul ignore next */ []; // used on prototypes\n\n/**\n * An immutable empty object.\n * @type {Object}\n * @const\n */\nutil.emptyObject = Object.freeze ? Object.freeze({}) : /* istanbul ignore next */ {}; // used on prototypes\n\n/**\n * Tests if the specified value is an integer.\n * @function\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is an integer\n */\nutil.isInteger = Number.isInteger || /* istanbul ignore next */ function isInteger(value) {\n    return typeof value === \"number\" && isFinite(value) && Math.floor(value) === value;\n};\n\n/**\n * Tests if the specified value is a string.\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is a string\n */\nutil.isString = function isString(value) {\n    return typeof value === \"string\" || value instanceof String;\n};\n\n/**\n * Tests if the specified value is a non-null object.\n * @param {*} value Value to test\n * @returns {boolean} `true` if the value is a non-null object\n */\nutil.isObject = function isObject(value) {\n    return value && typeof value === \"object\";\n};\n\n/**\n * Checks if a property on a message is considered to be present.\n * This is an alias of {@link util.isSet}.\n * @function\n * @param {Object} obj Plain object or message instance\n * @param {string} prop Property name\n * @returns {boolean} `true` if considered to be present, otherwise `false`\n */\nutil.isset =\n\n/**\n * Checks if a property on a message is considered to be present.\n * @param {Object} obj Plain object or message instance\n * @param {string} prop Property name\n * @returns {boolean} `true` if considered to be present, otherwise `false`\n */\nutil.isSet = function isSet(obj, prop) {\n    var value = obj[prop];\n    if (value != null && obj.hasOwnProperty(prop)) // eslint-disable-line eqeqeq, no-prototype-builtins\n        return typeof value !== \"object\" || (Array.isArray(value) ? value.length : Object.keys(value).length) > 0;\n    return false;\n};\n\n/**\n * Any compatible Buffer instance.\n * This is a minimal stand-alone definition of a Buffer instance. The actual type is that exported by node's typings.\n * @interface Buffer\n * @extends Uint8Array\n */\n\n/**\n * Node's Buffer class if available.\n * @type {Constructor<Buffer>}\n */\nutil.Buffer = (function() {\n    try {\n        var Buffer = util.inquire(\"buffer\").Buffer;\n        // refuse to use non-node buffers if not explicitly assigned (perf reasons):\n        return Buffer.prototype.utf8Write ? Buffer : /* istanbul ignore next */ null;\n    } catch (e) {\n        /* istanbul ignore next */\n        return null;\n    }\n})();\n\n// Internal alias of or polyfull for Buffer.from.\nutil._Buffer_from = null;\n\n// Internal alias of or polyfill for Buffer.allocUnsafe.\nutil._Buffer_allocUnsafe = null;\n\n/**\n * Creates a new buffer of whatever type supported by the environment.\n * @param {number|number[]} [sizeOrArray=0] Buffer size or number array\n * @returns {Uint8Array|Buffer} Buffer\n */\nutil.newBuffer = function newBuffer(sizeOrArray) {\n    /* istanbul ignore next */\n    return typeof sizeOrArray === \"number\"\n        ? util.Buffer\n            ? util._Buffer_allocUnsafe(sizeOrArray)\n            : new util.Array(sizeOrArray)\n        : util.Buffer\n            ? util._Buffer_from(sizeOrArray)\n            : typeof Uint8Array === \"undefined\"\n                ? sizeOrArray\n                : new Uint8Array(sizeOrArray);\n};\n\n/**\n * Array implementation used in the browser. `Uint8Array` if supported, otherwise `Array`.\n * @type {Constructor<Uint8Array>}\n */\nutil.Array = typeof Uint8Array !== \"undefined\" ? Uint8Array /* istanbul ignore next */ : Array;\n\n/**\n * Any compatible Long instance.\n * This is a minimal stand-alone definition of a Long instance. The actual type is that exported by long.js.\n * @interface Long\n * @property {number} low Low bits\n * @property {number} high High bits\n * @property {boolean} unsigned Whether unsigned or not\n */\n\n/**\n * Long.js's Long class if available.\n * @type {Constructor<Long>}\n */\nutil.Long = /* istanbul ignore next */ util.global.dcodeIO && /* istanbul ignore next */ util.global.dcodeIO.Long\n         || /* istanbul ignore next */ util.global.Long\n         || util.inquire(\"long\");\n\n/**\n * Regular expression used to verify 2 bit (`bool`) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key2Re = /^true|false|0|1$/;\n\n/**\n * Regular expression used to verify 32 bit (`int32` etc.) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key32Re = /^-?(?:0|[1-9][0-9]*)$/;\n\n/**\n * Regular expression used to verify 64 bit (`int64` etc.) map keys.\n * @type {RegExp}\n * @const\n */\nutil.key64Re = /^(?:[\\\\x00-\\\\xff]{8}|-?(?:0|[1-9][0-9]*))$/;\n\n/**\n * Converts a number or long to an 8 characters long hash string.\n * @param {Long|number} value Value to convert\n * @returns {string} Hash\n */\nutil.longToHash = function longToHash(value) {\n    return value\n        ? util.LongBits.from(value).toHash()\n        : util.LongBits.zeroHash;\n};\n\n/**\n * Converts an 8 characters long hash string to a long or number.\n * @param {string} hash Hash\n * @param {boolean} [unsigned=false] Whether unsigned or not\n * @returns {Long|number} Original value\n */\nutil.longFromHash = function longFromHash(hash, unsigned) {\n    var bits = util.LongBits.fromHash(hash);\n    if (util.Long)\n        return util.Long.fromBits(bits.lo, bits.hi, unsigned);\n    return bits.toNumber(Boolean(unsigned));\n};\n\n/**\n * Merges the properties of the source object into the destination object.\n * @memberof util\n * @param {Object.<string,*>} dst Destination object\n * @param {Object.<string,*>} src Source object\n * @param {boolean} [ifNotSet=false] Merges only if the key is not already set\n * @returns {Object.<string,*>} Destination object\n */\nfunction merge(dst, src, ifNotSet) { // used by converters\n    for (var keys = Object.keys(src), i = 0; i < keys.length; ++i)\n        if (dst[keys[i]] === undefined || !ifNotSet)\n            dst[keys[i]] = src[keys[i]];\n    return dst;\n}\n\nutil.merge = merge;\n\n/**\n * Converts the first character of a string to lower case.\n * @param {string} str String to convert\n * @returns {string} Converted string\n */\nutil.lcFirst = function lcFirst(str) {\n    return str.charAt(0).toLowerCase() + str.substring(1);\n};\n\n/**\n * Creates a custom error constructor.\n * @memberof util\n * @param {string} name Error name\n * @returns {Constructor<Error>} Custom error constructor\n */\nfunction newError(name) {\n\n    function CustomError(message, properties) {\n\n        if (!(this instanceof CustomError))\n            return new CustomError(message, properties);\n\n        // Error.call(this, message);\n        // ^ just returns a new error instance because the ctor can be called as a function\n\n        Object.defineProperty(this, \"message\", { get: function() { return message; } });\n\n        /* istanbul ignore next */\n        if (Error.captureStackTrace) // node\n            Error.captureStackTrace(this, CustomError);\n        else\n            Object.defineProperty(this, \"stack\", { value: new Error().stack || \"\" });\n\n        if (properties)\n            merge(this, properties);\n    }\n\n    CustomError.prototype = Object.create(Error.prototype, {\n        constructor: {\n            value: CustomError,\n            writable: true,\n            enumerable: false,\n            configurable: true,\n        },\n        name: {\n            get: function get() { return name; },\n            set: undefined,\n            enumerable: false,\n            // configurable: false would accurately preserve the behavior of\n            // the original, but I'm guessing that was not intentional.\n            // For an actual error subclass, this property would\n            // be configurable.\n            configurable: true,\n        },\n        toString: {\n            value: function value() { return this.name + \": \" + this.message; },\n            writable: true,\n            enumerable: false,\n            configurable: true,\n        },\n    });\n\n    return CustomError;\n}\n\nutil.newError = newError;\n\n/**\n * Constructs a new protocol error.\n * @classdesc Error subclass indicating a protocol specifc error.\n * @memberof util\n * @extends Error\n * @template T extends Message<T>\n * @constructor\n * @param {string} message Error message\n * @param {Object.<string,*>} [properties] Additional properties\n * @example\n * try {\n *     MyMessage.decode(someBuffer); // throws if required fields are missing\n * } catch (e) {\n *     if (e instanceof ProtocolError && e.instance)\n *         console.log(\"decoded so far: \" + JSON.stringify(e.instance));\n * }\n */\nutil.ProtocolError = newError(\"ProtocolError\");\n\n/**\n * So far decoded message instance.\n * @name util.ProtocolError#instance\n * @type {Message<T>}\n */\n\n/**\n * A OneOf getter as returned by {@link util.oneOfGetter}.\n * @typedef OneOfGetter\n * @type {function}\n * @returns {string|undefined} Set field name, if any\n */\n\n/**\n * Builds a getter for a oneof's present field name.\n * @param {string[]} fieldNames Field names\n * @returns {OneOfGetter} Unbound getter\n */\nutil.oneOfGetter = function getOneOf(fieldNames) {\n    var fieldMap = {};\n    for (var i = 0; i < fieldNames.length; ++i)\n        fieldMap[fieldNames[i]] = 1;\n\n    /**\n     * @returns {string|undefined} Set field name, if any\n     * @this Object\n     * @ignore\n     */\n    return function() { // eslint-disable-line consistent-return\n        for (var keys = Object.keys(this), i = keys.length - 1; i > -1; --i)\n            if (fieldMap[keys[i]] === 1 && this[keys[i]] !== undefined && this[keys[i]] !== null)\n                return keys[i];\n    };\n};\n\n/**\n * A OneOf setter as returned by {@link util.oneOfSetter}.\n * @typedef OneOfSetter\n * @type {function}\n * @param {string|undefined} value Field name\n * @returns {undefined}\n */\n\n/**\n * Builds a setter for a oneof's present field name.\n * @param {string[]} fieldNames Field names\n * @returns {OneOfSetter} Unbound setter\n */\nutil.oneOfSetter = function setOneOf(fieldNames) {\n\n    /**\n     * @param {string} name Field name\n     * @returns {undefined}\n     * @this Object\n     * @ignore\n     */\n    return function(name) {\n        for (var i = 0; i < fieldNames.length; ++i)\n            if (fieldNames[i] !== name)\n                delete this[fieldNames[i]];\n    };\n};\n\n/**\n * Default conversion options used for {@link Message#toJSON} implementations.\n *\n * These options are close to proto3's JSON mapping with the exception that internal types like Any are handled just like messages. More precisely:\n *\n * - Longs become strings\n * - Enums become string keys\n * - Bytes become base64 encoded strings\n * - (Sub-)Messages become plain objects\n * - Maps become plain objects with all string keys\n * - Repeated fields become arrays\n * - NaN and Infinity for float and double fields become strings\n *\n * @type {IConversionOptions}\n * @see https://developers.google.com/protocol-buffers/docs/proto3?hl=en#json\n */\nutil.toJSONOptions = {\n    longs: String,\n    enums: String,\n    bytes: String,\n    json: true\n};\n\n// Sets up buffer utility according to the environment (called in index-minimal)\nutil._configure = function() {\n    var Buffer = util.Buffer;\n    /* istanbul ignore if */\n    if (!Buffer) {\n        util._Buffer_from = util._Buffer_allocUnsafe = null;\n        return;\n    }\n    // because node 4.x buffers are incompatible & immutable\n    // see: https://github.com/dcodeIO/protobuf.js/pull/665\n    util._Buffer_from = Buffer.from !== Uint8Array.from && Buffer.from ||\n        /* istanbul ignore next */\n        function Buffer_from(value, encoding) {\n            return new Buffer(value, encoding);\n        };\n    util._Buffer_allocUnsafe = Buffer.allocUnsafe ||\n        /* istanbul ignore next */\n        function Buffer_allocUnsafe(size) {\n            return new Buffer(size);\n        };\n};\n", "\"use strict\";\nmodule.exports = Writer;\n\nvar util      = require(\"./util/minimal\");\n\nvar BufferWriter; // cyclic\n\nvar LongBits  = util.LongBits,\n    base64    = util.base64,\n    utf8      = util.utf8;\n\n/**\n * Constructs a new writer operation instance.\n * @classdesc Scheduled writer operation.\n * @constructor\n * @param {function(*, Uint8Array, number)} fn Function to call\n * @param {number} len Value byte length\n * @param {*} val Value to write\n * @ignore\n */\nfunction Op(fn, len, val) {\n\n    /**\n     * Function to call.\n     * @type {function(Uint8Array, number, *)}\n     */\n    this.fn = fn;\n\n    /**\n     * Value byte length.\n     * @type {number}\n     */\n    this.len = len;\n\n    /**\n     * Next operation.\n     * @type {Writer.Op|undefined}\n     */\n    this.next = undefined;\n\n    /**\n     * Value to write.\n     * @type {*}\n     */\n    this.val = val; // type varies\n}\n\n/* istanbul ignore next */\nfunction noop() {} // eslint-disable-line no-empty-function\n\n/**\n * Constructs a new writer state instance.\n * @classdesc Copied writer state.\n * @memberof Writer\n * @constructor\n * @param {Writer} writer Writer to copy state from\n * @ignore\n */\nfunction State(writer) {\n\n    /**\n     * Current head.\n     * @type {Writer.Op}\n     */\n    this.head = writer.head;\n\n    /**\n     * Current tail.\n     * @type {Writer.Op}\n     */\n    this.tail = writer.tail;\n\n    /**\n     * Current buffer length.\n     * @type {number}\n     */\n    this.len = writer.len;\n\n    /**\n     * Next state.\n     * @type {State|null}\n     */\n    this.next = writer.states;\n}\n\n/**\n * Constructs a new writer instance.\n * @classdesc Wire format writer using `Uint8Array` if available, otherwise `Array`.\n * @constructor\n */\nfunction Writer() {\n\n    /**\n     * Current length.\n     * @type {number}\n     */\n    this.len = 0;\n\n    /**\n     * Operations head.\n     * @type {Object}\n     */\n    this.head = new Op(noop, 0, 0);\n\n    /**\n     * Operations tail\n     * @type {Object}\n     */\n    this.tail = this.head;\n\n    /**\n     * Linked forked states.\n     * @type {Object|null}\n     */\n    this.states = null;\n\n    // When a value is written, the writer calculates its byte length and puts it into a linked\n    // list of operations to perform when finish() is called. This both allows us to allocate\n    // buffers of the exact required size and reduces the amount of work we have to do compared\n    // to first calculating over objects and then encoding over objects. In our case, the encoding\n    // part is just a linked list walk calling operations with already prepared values.\n}\n\nvar create = function create() {\n    return util.Buffer\n        ? function create_buffer_setup() {\n            return (Writer.create = function create_buffer() {\n                return new BufferWriter();\n            })();\n        }\n        /* istanbul ignore next */\n        : function create_array() {\n            return new Writer();\n        };\n};\n\n/**\n * Creates a new writer.\n * @function\n * @returns {BufferWriter|Writer} A {@link BufferWriter} when Buffers are supported, otherwise a {@link Writer}\n */\nWriter.create = create();\n\n/**\n * Allocates a buffer of the specified size.\n * @param {number} size Buffer size\n * @returns {Uint8Array} Buffer\n */\nWriter.alloc = function alloc(size) {\n    return new util.Array(size);\n};\n\n// Use Uint8Array buffer pool in the browser, just like node does with buffers\n/* istanbul ignore else */\nif (util.Array !== Array)\n    Writer.alloc = util.pool(Writer.alloc, util.Array.prototype.subarray);\n\n/**\n * Pushes a new operation to the queue.\n * @param {function(Uint8Array, number, *)} fn Function to call\n * @param {number} len Value byte length\n * @param {number} val Value to write\n * @returns {Writer} `this`\n * @private\n */\nWriter.prototype._push = function push(fn, len, val) {\n    this.tail = this.tail.next = new Op(fn, len, val);\n    this.len += len;\n    return this;\n};\n\nfunction writeByte(val, buf, pos) {\n    buf[pos] = val & 255;\n}\n\nfunction writeVarint32(val, buf, pos) {\n    while (val > 127) {\n        buf[pos++] = val & 127 | 128;\n        val >>>= 7;\n    }\n    buf[pos] = val;\n}\n\n/**\n * Constructs a new varint writer operation instance.\n * @classdesc Scheduled varint writer operation.\n * @extends Op\n * @constructor\n * @param {number} len Value byte length\n * @param {number} val Value to write\n * @ignore\n */\nfunction VarintOp(len, val) {\n    this.len = len;\n    this.next = undefined;\n    this.val = val;\n}\n\nVarintOp.prototype = Object.create(Op.prototype);\nVarintOp.prototype.fn = writeVarint32;\n\n/**\n * Writes an unsigned 32 bit value as a varint.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.uint32 = function write_uint32(value) {\n    // here, the call to this.push has been inlined and a varint specific Op subclass is used.\n    // uint32 is by far the most frequently used operation and benefits significantly from this.\n    this.len += (this.tail = this.tail.next = new VarintOp(\n        (value = value >>> 0)\n                < 128       ? 1\n        : value < 16384     ? 2\n        : value < 2097152   ? 3\n        : value < 268435456 ? 4\n        :                     5,\n    value)).len;\n    return this;\n};\n\n/**\n * Writes a signed 32 bit value as a varint.\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.int32 = function write_int32(value) {\n    return value < 0\n        ? this._push(writeVarint64, 10, LongBits.fromNumber(value)) // 10 bytes per spec\n        : this.uint32(value);\n};\n\n/**\n * Writes a 32 bit value as a varint, zig-zag encoded.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.sint32 = function write_sint32(value) {\n    return this.uint32((value << 1 ^ value >> 31) >>> 0);\n};\n\nfunction writeVarint64(val, buf, pos) {\n    while (val.hi) {\n        buf[pos++] = val.lo & 127 | 128;\n        val.lo = (val.lo >>> 7 | val.hi << 25) >>> 0;\n        val.hi >>>= 7;\n    }\n    while (val.lo > 127) {\n        buf[pos++] = val.lo & 127 | 128;\n        val.lo = val.lo >>> 7;\n    }\n    buf[pos++] = val.lo;\n}\n\n/**\n * Writes an unsigned 64 bit value as a varint.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.uint64 = function write_uint64(value) {\n    var bits = LongBits.from(value);\n    return this._push(writeVarint64, bits.length(), bits);\n};\n\n/**\n * Writes a signed 64 bit value as a varint.\n * @function\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.int64 = Writer.prototype.uint64;\n\n/**\n * Writes a signed 64 bit value as a varint, zig-zag encoded.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.sint64 = function write_sint64(value) {\n    var bits = LongBits.from(value).zzEncode();\n    return this._push(writeVarint64, bits.length(), bits);\n};\n\n/**\n * Writes a boolish value as a varint.\n * @param {boolean} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.bool = function write_bool(value) {\n    return this._push(writeByte, 1, value ? 1 : 0);\n};\n\nfunction writeFixed32(val, buf, pos) {\n    buf[pos    ] =  val         & 255;\n    buf[pos + 1] =  val >>> 8   & 255;\n    buf[pos + 2] =  val >>> 16  & 255;\n    buf[pos + 3] =  val >>> 24;\n}\n\n/**\n * Writes an unsigned 32 bit value as fixed 32 bits.\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.fixed32 = function write_fixed32(value) {\n    return this._push(writeFixed32, 4, value >>> 0);\n};\n\n/**\n * Writes a signed 32 bit value as fixed 32 bits.\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.sfixed32 = Writer.prototype.fixed32;\n\n/**\n * Writes an unsigned 64 bit value as fixed 64 bits.\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.fixed64 = function write_fixed64(value) {\n    var bits = LongBits.from(value);\n    return this._push(writeFixed32, 4, bits.lo)._push(writeFixed32, 4, bits.hi);\n};\n\n/**\n * Writes a signed 64 bit value as fixed 64 bits.\n * @function\n * @param {Long|number|string} value Value to write\n * @returns {Writer} `this`\n * @throws {TypeError} If `value` is a string and no long library is present.\n */\nWriter.prototype.sfixed64 = Writer.prototype.fixed64;\n\n/**\n * Writes a float (32 bit).\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.float = function write_float(value) {\n    return this._push(util.float.writeFloatLE, 4, value);\n};\n\n/**\n * Writes a double (64 bit float).\n * @function\n * @param {number} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.double = function write_double(value) {\n    return this._push(util.float.writeDoubleLE, 8, value);\n};\n\nvar writeBytes = util.Array.prototype.set\n    ? function writeBytes_set(val, buf, pos) {\n        buf.set(val, pos); // also works for plain array values\n    }\n    /* istanbul ignore next */\n    : function writeBytes_for(val, buf, pos) {\n        for (var i = 0; i < val.length; ++i)\n            buf[pos + i] = val[i];\n    };\n\n/**\n * Writes a sequence of bytes.\n * @param {Uint8Array|string} value Buffer or base64 encoded string to write\n * @returns {Writer} `this`\n */\nWriter.prototype.bytes = function write_bytes(value) {\n    var len = value.length >>> 0;\n    if (!len)\n        return this._push(writeByte, 1, 0);\n    if (util.isString(value)) {\n        var buf = Writer.alloc(len = base64.length(value));\n        base64.decode(value, buf, 0);\n        value = buf;\n    }\n    return this.uint32(len)._push(writeBytes, len, value);\n};\n\n/**\n * Writes a string.\n * @param {string} value Value to write\n * @returns {Writer} `this`\n */\nWriter.prototype.string = function write_string(value) {\n    var len = utf8.length(value);\n    return len\n        ? this.uint32(len)._push(utf8.write, len, value)\n        : this._push(writeByte, 1, 0);\n};\n\n/**\n * Forks this writer's state by pushing it to a stack.\n * Calling {@link Writer#reset|reset} or {@link Writer#ldelim|ldelim} resets the writer to the previous state.\n * @returns {Writer} `this`\n */\nWriter.prototype.fork = function fork() {\n    this.states = new State(this);\n    this.head = this.tail = new Op(noop, 0, 0);\n    this.len = 0;\n    return this;\n};\n\n/**\n * Resets this instance to the last state.\n * @returns {Writer} `this`\n */\nWriter.prototype.reset = function reset() {\n    if (this.states) {\n        this.head   = this.states.head;\n        this.tail   = this.states.tail;\n        this.len    = this.states.len;\n        this.states = this.states.next;\n    } else {\n        this.head = this.tail = new Op(noop, 0, 0);\n        this.len  = 0;\n    }\n    return this;\n};\n\n/**\n * Resets to the last state and appends the fork state's current write length as a varint followed by its operations.\n * @returns {Writer} `this`\n */\nWriter.prototype.ldelim = function ldelim() {\n    var head = this.head,\n        tail = this.tail,\n        len  = this.len;\n    this.reset().uint32(len);\n    if (len) {\n        this.tail.next = head.next; // skip noop\n        this.tail = tail;\n        this.len += len;\n    }\n    return this;\n};\n\n/**\n * Finishes the write operation.\n * @returns {Uint8Array} Finished buffer\n */\nWriter.prototype.finish = function finish() {\n    var head = this.head.next, // skip noop\n        buf  = this.constructor.alloc(this.len),\n        pos  = 0;\n    while (head) {\n        head.fn(head.val, buf, pos);\n        pos += head.len;\n        head = head.next;\n    }\n    // this.head = this.tail = null;\n    return buf;\n};\n\nWriter._configure = function(BufferWriter_) {\n    BufferWriter = BufferWriter_;\n    Writer.create = create();\n    BufferWriter._configure();\n};\n", "\"use strict\";\nmodule.exports = BufferWriter;\n\n// extends Writer\nvar Writer = require(\"./writer\");\n(BufferWriter.prototype = Object.create(Writer.prototype)).constructor = BufferWriter;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new buffer writer instance.\n * @classdesc Wire format writer using node buffers.\n * @extends Writer\n * @constructor\n */\nfunction BufferWriter() {\n    Writer.call(this);\n}\n\nBufferWriter._configure = function () {\n    /**\n     * Allocates a buffer of the specified size.\n     * @function\n     * @param {number} size Buffer size\n     * @returns {Buffer} Buffer\n     */\n    BufferWriter.alloc = util._Buffer_allocUnsafe;\n\n    BufferWriter.writeBytesBuffer = util.Buffer && util.Buffer.prototype instanceof Uint8Array && util.Buffer.prototype.set.name === \"set\"\n        ? function writeBytesBuffer_set(val, buf, pos) {\n          buf.set(val, pos); // faster than copy (requires node >= 4 where Buffers extend Uint8Array and set is properly inherited)\n          // also works for plain array values\n        }\n        /* istanbul ignore next */\n        : function writeBytesBuffer_copy(val, buf, pos) {\n          if (val.copy) // Buffer values\n            val.copy(buf, pos, 0, val.length);\n          else for (var i = 0; i < val.length;) // plain array values\n            buf[pos++] = val[i++];\n        };\n};\n\n\n/**\n * @override\n */\nBufferWriter.prototype.bytes = function write_bytes_buffer(value) {\n    if (util.isString(value))\n        value = util._Buffer_from(value, \"base64\");\n    var len = value.length >>> 0;\n    this.uint32(len);\n    if (len)\n        this._push(BufferWriter.writeBytesBuffer, len, value);\n    return this;\n};\n\nfunction writeStringBuffer(val, buf, pos) {\n    if (val.length < 40) // plain js is faster for short strings (probably due to redundant assertions)\n        util.utf8.write(val, buf, pos);\n    else if (buf.utf8Write)\n        buf.utf8Write(val, pos);\n    else\n        buf.write(val, pos);\n}\n\n/**\n * @override\n */\nBufferWriter.prototype.string = function write_string_buffer(value) {\n    var len = util.Buffer.byteLength(value);\n    this.uint32(len);\n    if (len)\n        this._push(writeStringBuffer, len, value);\n    return this;\n};\n\n\n/**\n * Finishes the write operation.\n * @name BufferWriter#finish\n * @function\n * @returns {Buffer} Finished buffer\n */\n\nBufferWriter._configure();\n", "\"use strict\";\nmodule.exports = Reader;\n\nvar util      = require(\"./util/minimal\");\n\nvar BufferReader; // cyclic\n\nvar LongBits  = util.LongBits,\n    utf8      = util.utf8;\n\n/* istanbul ignore next */\nfunction indexOutOfRange(reader, writeLength) {\n    return RangeError(\"index out of range: \" + reader.pos + \" + \" + (writeLength || 1) + \" > \" + reader.len);\n}\n\n/**\n * Constructs a new reader instance using the specified buffer.\n * @classdesc Wire format reader using `Uint8Array` if available, otherwise `Array`.\n * @constructor\n * @param {Uint8Array} buffer Buffer to read from\n */\nfunction Reader(buffer) {\n\n    /**\n     * Read buffer.\n     * @type {Uint8Array}\n     */\n    this.buf = buffer;\n\n    /**\n     * Read buffer position.\n     * @type {number}\n     */\n    this.pos = 0;\n\n    /**\n     * Read buffer length.\n     * @type {number}\n     */\n    this.len = buffer.length;\n}\n\nvar create_array = typeof Uint8Array !== \"undefined\"\n    ? function create_typed_array(buffer) {\n        if (buffer instanceof Uint8Array || Array.isArray(buffer))\n            return new Reader(buffer);\n        throw Error(\"illegal buffer\");\n    }\n    /* istanbul ignore next */\n    : function create_array(buffer) {\n        if (Array.isArray(buffer))\n            return new Reader(buffer);\n        throw Error(\"illegal buffer\");\n    };\n\nvar create = function create() {\n    return util.Buffer\n        ? function create_buffer_setup(buffer) {\n            return (Reader.create = function create_buffer(buffer) {\n                return util.Buffer.isBuffer(buffer)\n                    ? new BufferReader(buffer)\n                    /* istanbul ignore next */\n                    : create_array(buffer);\n            })(buffer);\n        }\n        /* istanbul ignore next */\n        : create_array;\n};\n\n/**\n * Creates a new reader using the specified buffer.\n * @function\n * @param {Uint8Array|Buffer} buffer Buffer to read from\n * @returns {Reader|BufferReader} A {@link BufferReader} if `buffer` is a Buffer, otherwise a {@link Reader}\n * @throws {Error} If `buffer` is not a valid buffer\n */\nReader.create = create();\n\nReader.prototype._slice = util.Array.prototype.subarray || /* istanbul ignore next */ util.Array.prototype.slice;\n\n/**\n * Reads a varint as an unsigned 32 bit value.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.uint32 = (function read_uint32_setup() {\n    var value = 4294967295; // optimizer type-hint, tends to deopt otherwise (?!)\n    return function read_uint32() {\n        value = (         this.buf[this.pos] & 127       ) >>> 0; if (this.buf[this.pos++] < 128) return value;\n        value = (value | (this.buf[this.pos] & 127) <<  7) >>> 0; if (this.buf[this.pos++] < 128) return value;\n        value = (value | (this.buf[this.pos] & 127) << 14) >>> 0; if (this.buf[this.pos++] < 128) return value;\n        value = (value | (this.buf[this.pos] & 127) << 21) >>> 0; if (this.buf[this.pos++] < 128) return value;\n        value = (value | (this.buf[this.pos] &  15) << 28) >>> 0; if (this.buf[this.pos++] < 128) return value;\n\n        /* istanbul ignore if */\n        if ((this.pos += 5) > this.len) {\n            this.pos = this.len;\n            throw indexOutOfRange(this, 10);\n        }\n        return value;\n    };\n})();\n\n/**\n * Reads a varint as a signed 32 bit value.\n * @returns {number} Value read\n */\nReader.prototype.int32 = function read_int32() {\n    return this.uint32() | 0;\n};\n\n/**\n * Reads a zig-zag encoded varint as a signed 32 bit value.\n * @returns {number} Value read\n */\nReader.prototype.sint32 = function read_sint32() {\n    var value = this.uint32();\n    return value >>> 1 ^ -(value & 1) | 0;\n};\n\n/* eslint-disable no-invalid-this */\n\nfunction readLongVarint() {\n    // tends to deopt with local vars for octet etc.\n    var bits = new LongBits(0, 0);\n    var i = 0;\n    if (this.len - this.pos > 4) { // fast route (lo)\n        for (; i < 4; ++i) {\n            // 1st..4th\n            bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n            if (this.buf[this.pos++] < 128)\n                return bits;\n        }\n        // 5th\n        bits.lo = (bits.lo | (this.buf[this.pos] & 127) << 28) >>> 0;\n        bits.hi = (bits.hi | (this.buf[this.pos] & 127) >>  4) >>> 0;\n        if (this.buf[this.pos++] < 128)\n            return bits;\n        i = 0;\n    } else {\n        for (; i < 3; ++i) {\n            /* istanbul ignore if */\n            if (this.pos >= this.len)\n                throw indexOutOfRange(this);\n            // 1st..3th\n            bits.lo = (bits.lo | (this.buf[this.pos] & 127) << i * 7) >>> 0;\n            if (this.buf[this.pos++] < 128)\n                return bits;\n        }\n        // 4th\n        bits.lo = (bits.lo | (this.buf[this.pos++] & 127) << i * 7) >>> 0;\n        return bits;\n    }\n    if (this.len - this.pos > 4) { // fast route (hi)\n        for (; i < 5; ++i) {\n            // 6th..10th\n            bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n            if (this.buf[this.pos++] < 128)\n                return bits;\n        }\n    } else {\n        for (; i < 5; ++i) {\n            /* istanbul ignore if */\n            if (this.pos >= this.len)\n                throw indexOutOfRange(this);\n            // 6th..10th\n            bits.hi = (bits.hi | (this.buf[this.pos] & 127) << i * 7 + 3) >>> 0;\n            if (this.buf[this.pos++] < 128)\n                return bits;\n        }\n    }\n    /* istanbul ignore next */\n    throw Error(\"invalid varint encoding\");\n}\n\n/* eslint-enable no-invalid-this */\n\n/**\n * Reads a varint as a signed 64 bit value.\n * @name Reader#int64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a varint as an unsigned 64 bit value.\n * @name Reader#uint64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a zig-zag encoded varint as a signed 64 bit value.\n * @name Reader#sint64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a varint as a boolean.\n * @returns {boolean} Value read\n */\nReader.prototype.bool = function read_bool() {\n    return this.uint32() !== 0;\n};\n\nfunction readFixed32_end(buf, end) { // note that this uses `end`, not `pos`\n    return (buf[end - 4]\n          | buf[end - 3] << 8\n          | buf[end - 2] << 16\n          | buf[end - 1] << 24) >>> 0;\n}\n\n/**\n * Reads fixed 32 bits as an unsigned 32 bit integer.\n * @returns {number} Value read\n */\nReader.prototype.fixed32 = function read_fixed32() {\n\n    /* istanbul ignore if */\n    if (this.pos + 4 > this.len)\n        throw indexOutOfRange(this, 4);\n\n    return readFixed32_end(this.buf, this.pos += 4);\n};\n\n/**\n * Reads fixed 32 bits as a signed 32 bit integer.\n * @returns {number} Value read\n */\nReader.prototype.sfixed32 = function read_sfixed32() {\n\n    /* istanbul ignore if */\n    if (this.pos + 4 > this.len)\n        throw indexOutOfRange(this, 4);\n\n    return readFixed32_end(this.buf, this.pos += 4) | 0;\n};\n\n/* eslint-disable no-invalid-this */\n\nfunction readFixed64(/* this: Reader */) {\n\n    /* istanbul ignore if */\n    if (this.pos + 8 > this.len)\n        throw indexOutOfRange(this, 8);\n\n    return new LongBits(readFixed32_end(this.buf, this.pos += 4), readFixed32_end(this.buf, this.pos += 4));\n}\n\n/* eslint-enable no-invalid-this */\n\n/**\n * Reads fixed 64 bits.\n * @name Reader#fixed64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads zig-zag encoded fixed 64 bits.\n * @name Reader#sfixed64\n * @function\n * @returns {Long} Value read\n */\n\n/**\n * Reads a float (32 bit) as a number.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.float = function read_float() {\n\n    /* istanbul ignore if */\n    if (this.pos + 4 > this.len)\n        throw indexOutOfRange(this, 4);\n\n    var value = util.float.readFloatLE(this.buf, this.pos);\n    this.pos += 4;\n    return value;\n};\n\n/**\n * Reads a double (64 bit float) as a number.\n * @function\n * @returns {number} Value read\n */\nReader.prototype.double = function read_double() {\n\n    /* istanbul ignore if */\n    if (this.pos + 8 > this.len)\n        throw indexOutOfRange(this, 4);\n\n    var value = util.float.readDoubleLE(this.buf, this.pos);\n    this.pos += 8;\n    return value;\n};\n\n/**\n * Reads a sequence of bytes preceeded by its length as a varint.\n * @returns {Uint8Array} Value read\n */\nReader.prototype.bytes = function read_bytes() {\n    var length = this.uint32(),\n        start  = this.pos,\n        end    = this.pos + length;\n\n    /* istanbul ignore if */\n    if (end > this.len)\n        throw indexOutOfRange(this, length);\n\n    this.pos += length;\n    if (Array.isArray(this.buf)) // plain array\n        return this.buf.slice(start, end);\n\n    if (start === end) { // fix for IE 10/Win8 and others' subarray returning array of size 1\n        var nativeBuffer = util.Buffer;\n        return nativeBuffer\n            ? nativeBuffer.alloc(0)\n            : new this.buf.constructor(0);\n    }\n    return this._slice.call(this.buf, start, end);\n};\n\n/**\n * Reads a string preceeded by its byte length as a varint.\n * @returns {string} Value read\n */\nReader.prototype.string = function read_string() {\n    var bytes = this.bytes();\n    return utf8.read(bytes, 0, bytes.length);\n};\n\n/**\n * Skips the specified number of bytes if specified, otherwise skips a varint.\n * @param {number} [length] Length if known, otherwise a varint is assumed\n * @returns {Reader} `this`\n */\nReader.prototype.skip = function skip(length) {\n    if (typeof length === \"number\") {\n        /* istanbul ignore if */\n        if (this.pos + length > this.len)\n            throw indexOutOfRange(this, length);\n        this.pos += length;\n    } else {\n        do {\n            /* istanbul ignore if */\n            if (this.pos >= this.len)\n                throw indexOutOfRange(this);\n        } while (this.buf[this.pos++] & 128);\n    }\n    return this;\n};\n\n/**\n * Skips the next element of the specified wire type.\n * @param {number} wireType Wire type received\n * @returns {Reader} `this`\n */\nReader.prototype.skipType = function(wireType) {\n    switch (wireType) {\n        case 0:\n            this.skip();\n            break;\n        case 1:\n            this.skip(8);\n            break;\n        case 2:\n            this.skip(this.uint32());\n            break;\n        case 3:\n            while ((wireType = this.uint32() & 7) !== 4) {\n                this.skipType(wireType);\n            }\n            break;\n        case 5:\n            this.skip(4);\n            break;\n\n        /* istanbul ignore next */\n        default:\n            throw Error(\"invalid wire type \" + wireType + \" at offset \" + this.pos);\n    }\n    return this;\n};\n\nReader._configure = function(BufferReader_) {\n    BufferReader = BufferReader_;\n    Reader.create = create();\n    BufferReader._configure();\n\n    var fn = util.Long ? \"toLong\" : /* istanbul ignore next */ \"toNumber\";\n    util.merge(Reader.prototype, {\n\n        int64: function read_int64() {\n            return readLongVarint.call(this)[fn](false);\n        },\n\n        uint64: function read_uint64() {\n            return readLongVarint.call(this)[fn](true);\n        },\n\n        sint64: function read_sint64() {\n            return readLongVarint.call(this).zzDecode()[fn](false);\n        },\n\n        fixed64: function read_fixed64() {\n            return readFixed64.call(this)[fn](true);\n        },\n\n        sfixed64: function read_sfixed64() {\n            return readFixed64.call(this)[fn](false);\n        }\n\n    });\n};\n", "\"use strict\";\nmodule.exports = BufferReader;\n\n// extends Reader\nvar Reader = require(\"./reader\");\n(BufferReader.prototype = Object.create(Reader.prototype)).constructor = BufferReader;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new buffer reader instance.\n * @classdesc Wire format reader using node buffers.\n * @extends Reader\n * @constructor\n * @param {Buffer} buffer Buffer to read from\n */\nfunction BufferReader(buffer) {\n    Reader.call(this, buffer);\n\n    /**\n     * Read buffer.\n     * @name BufferReader#buf\n     * @type {Buffer}\n     */\n}\n\nBufferReader._configure = function () {\n    /* istanbul ignore else */\n    if (util.Buffer)\n        BufferReader.prototype._slice = util.Buffer.prototype.slice;\n};\n\n\n/**\n * @override\n */\nBufferReader.prototype.string = function read_string_buffer() {\n    var len = this.uint32(); // modifies pos\n    return this.buf.utf8Slice\n        ? this.buf.utf8Slice(this.pos, this.pos = Math.min(this.pos + len, this.len))\n        : this.buf.toString(\"utf-8\", this.pos, this.pos = Math.min(this.pos + len, this.len));\n};\n\n/**\n * Reads a sequence of bytes preceeded by its length as a varint.\n * @name BufferReader#bytes\n * @function\n * @returns {Buffer} Value read\n */\n\nBufferReader._configure();\n", "\"use strict\";\nmodule.exports = Service;\n\nvar util = require(\"../util/minimal\");\n\n// Extends EventEmitter\n(Service.prototype = Object.create(util.EventEmitter.prototype)).constructor = Service;\n\n/**\n * A service method callback as used by {@link rpc.ServiceMethod|ServiceMethod}.\n *\n * Differs from {@link RPCImplCallback} in that it is an actual callback of a service method which may not return `response = null`.\n * @typedef rpc.ServiceMethodCallback\n * @template TRes extends Message<TRes>\n * @type {function}\n * @param {Error|null} error Error, if any\n * @param {TRes} [response] Response message\n * @returns {undefined}\n */\n\n/**\n * A service method part of a {@link rpc.Service} as created by {@link Service.create}.\n * @typedef rpc.ServiceMethod\n * @template TReq extends Message<TReq>\n * @template TRes extends Message<TRes>\n * @type {function}\n * @param {TReq|Properties<TReq>} request Request message or plain object\n * @param {rpc.ServiceMethodCallback<TRes>} [callback] Node-style callback called with the error, if any, and the response message\n * @returns {Promise<Message<TRes>>} Promise if `callback` has been omitted, otherwise `undefined`\n */\n\n/**\n * Constructs a new RPC service instance.\n * @classdesc An RPC service as returned by {@link Service#create}.\n * @exports rpc.Service\n * @extends util.EventEmitter\n * @constructor\n * @param {RPCImpl} rpcImpl RPC implementation\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\n */\nfunction Service(rpcImpl, requestDelimited, responseDelimited) {\n\n    if (typeof rpcImpl !== \"function\")\n        throw TypeError(\"rpcImpl must be a function\");\n\n    util.EventEmitter.call(this);\n\n    /**\n     * RPC implementation. Becomes `null` once the service is ended.\n     * @type {RPCImpl|null}\n     */\n    this.rpcImpl = rpcImpl;\n\n    /**\n     * Whether requests are length-delimited.\n     * @type {boolean}\n     */\n    this.requestDelimited = Boolean(requestDelimited);\n\n    /**\n     * Whether responses are length-delimited.\n     * @type {boolean}\n     */\n    this.responseDelimited = Boolean(responseDelimited);\n}\n\n/**\n * Calls a service method through {@link rpc.Service#rpcImpl|rpcImpl}.\n * @param {Method|rpc.ServiceMethod<TReq,TRes>} method Reflected or static method\n * @param {Constructor<TReq>} requestCtor Request constructor\n * @param {Constructor<TRes>} responseCtor Response constructor\n * @param {TReq|Properties<TReq>} request Request message or plain object\n * @param {rpc.ServiceMethodCallback<TRes>} callback Service callback\n * @returns {undefined}\n * @template TReq extends Message<TReq>\n * @template TRes extends Message<TRes>\n */\nService.prototype.rpcCall = function rpcCall(method, requestCtor, responseCtor, request, callback) {\n\n    if (!request)\n        throw TypeError(\"request must be specified\");\n\n    var self = this;\n    if (!callback)\n        return util.asPromise(rpcCall, self, method, requestCtor, responseCtor, request);\n\n    if (!self.rpcImpl) {\n        setTimeout(function() { callback(Error(\"already ended\")); }, 0);\n        return undefined;\n    }\n\n    try {\n        return self.rpcImpl(\n            method,\n            requestCtor[self.requestDelimited ? \"encodeDelimited\" : \"encode\"](request).finish(),\n            function rpcCallback(err, response) {\n\n                if (err) {\n                    self.emit(\"error\", err, method);\n                    return callback(err);\n                }\n\n                if (response === null) {\n                    self.end(/* endedByRPC */ true);\n                    return undefined;\n                }\n\n                if (!(response instanceof responseCtor)) {\n                    try {\n                        response = responseCtor[self.responseDelimited ? \"decodeDelimited\" : \"decode\"](response);\n                    } catch (err) {\n                        self.emit(\"error\", err, method);\n                        return callback(err);\n                    }\n                }\n\n                self.emit(\"data\", response, method);\n                return callback(null, response);\n            }\n        );\n    } catch (err) {\n        self.emit(\"error\", err, method);\n        setTimeout(function() { callback(err); }, 0);\n        return undefined;\n    }\n};\n\n/**\n * Ends this service and emits the `end` event.\n * @param {boolean} [endedByRPC=false] Whether the service has been ended by the RPC implementation.\n * @returns {rpc.Service} `this`\n */\nService.prototype.end = function end(endedByRPC) {\n    if (this.rpcImpl) {\n        if (!endedByRPC) // signal end to rpcImpl\n            this.rpcImpl(null, null, null);\n        this.rpcImpl = null;\n        this.emit(\"end\").off();\n    }\n    return this;\n};\n", "\"use strict\";\n\n/**\n * Streaming RPC helpers.\n * @namespace\n */\nvar rpc = exports;\n\n/**\n * RPC implementation passed to {@link Service#create} performing a service request on network level, i.e. by utilizing http requests or websockets.\n * @typedef RPCImpl\n * @type {function}\n * @param {Method|rpc.ServiceMethod<Message<{}>,Message<{}>>} method Reflected or static method being called\n * @param {Uint8Array} requestData Request data\n * @param {RPCImplCallback} callback Callback function\n * @returns {undefined}\n * @example\n * function rpcImpl(method, requestData, callback) {\n *     if (protobuf.util.lcFirst(method.name) !== \"myMethod\") // compatible with static code\n *         throw Error(\"no such method\");\n *     asynchronouslyObtainAResponse(requestData, function(err, responseData) {\n *         callback(err, responseData);\n *     });\n * }\n */\n\n/**\n * Node-style callback as used by {@link RPCImpl}.\n * @typedef RPCImplCallback\n * @type {function}\n * @param {Error|null} error Error, if any, otherwise `null`\n * @param {Uint8Array|null} [response] Response data or `null` to signal end of stream, if there hasn't been an error\n * @returns {undefined}\n */\n\nrpc.Service = require(\"./rpc/service\");\n", "\"use strict\";\nmodule.exports = {};\n\n/**\n * Named roots.\n * This is where pbjs stores generated structures (the option `-r, --root` specifies a name).\n * Can also be used manually to make roots available across modules.\n * @name roots\n * @type {Object.<string,Root>}\n * @example\n * // pbjs -r myroot -o compiled.js ...\n *\n * // in another module:\n * require(\"./compiled.js\");\n *\n * // in any subsequent module:\n * var root = protobuf.roots[\"myroot\"];\n */\n", "\"use strict\";\nvar protobuf = exports;\n\n/**\n * Build type, one of `\"full\"`, `\"light\"` or `\"minimal\"`.\n * @name build\n * @type {string}\n * @const\n */\nprotobuf.build = \"minimal\";\n\n// Serialization\nprotobuf.Writer       = require(\"./writer\");\nprotobuf.BufferWriter = require(\"./writer_buffer\");\nprotobuf.Reader       = require(\"./reader\");\nprotobuf.BufferReader = require(\"./reader_buffer\");\n\n// Utility\nprotobuf.util         = require(\"./util/minimal\");\nprotobuf.rpc          = require(\"./rpc\");\nprotobuf.roots        = require(\"./roots\");\nprotobuf.configure    = configure;\n\n/* istanbul ignore next */\n/**\n * Reconfigures the library according to the environment.\n * @returns {undefined}\n */\nfunction configure() {\n    protobuf.util._configure();\n    protobuf.Writer._configure(protobuf.BufferWriter);\n    protobuf.Reader._configure(protobuf.BufferReader);\n}\n\n// Set up buffer utility according to the environment\nconfigure();\n", "\"use strict\";\r\nmodule.exports = codegen;\r\n\r\n/**\r\n * Begins generating a function.\r\n * @memberof util\r\n * @param {string[]} functionParams Function parameter names\r\n * @param {string} [functionName] Function name if not anonymous\r\n * @returns {Codegen} Appender that appends code to the function's body\r\n */\r\nfunction codegen(functionParams, functionName) {\r\n\r\n    /* istanbul ignore if */\r\n    if (typeof functionParams === \"string\") {\r\n        functionName = functionParams;\r\n        functionParams = undefined;\r\n    }\r\n\r\n    var body = [];\r\n\r\n    /**\r\n     * Appends code to the function's body or finishes generation.\r\n     * @typedef Codegen\r\n     * @type {function}\r\n     * @param {string|Object.<string,*>} [formatStringOrScope] Format string or, to finish the function, an object of additional scope variables, if any\r\n     * @param {...*} [formatParams] Format parameters\r\n     * @returns {Codegen|Function} Itself or the generated function if finished\r\n     * @throws {Error} If format parameter counts do not match\r\n     */\r\n\r\n    function Codegen(formatStringOrScope) {\r\n        // note that explicit array handling below makes this ~50% faster\r\n\r\n        // finish the function\r\n        if (typeof formatStringOrScope !== \"string\") {\r\n            var source = toString();\r\n            if (codegen.verbose)\r\n                console.log(\"codegen: \" + source); // eslint-disable-line no-console\r\n            source = \"return \" + source;\r\n            if (formatStringOrScope) {\r\n                var scopeKeys   = Object.keys(formatStringOrScope),\r\n                    scopeParams = new Array(scopeKeys.length + 1),\r\n                    scopeValues = new Array(scopeKeys.length),\r\n                    scopeOffset = 0;\r\n                while (scopeOffset < scopeKeys.length) {\r\n                    scopeParams[scopeOffset] = scopeKeys[scopeOffset];\r\n                    scopeValues[scopeOffset] = formatStringOrScope[scopeKeys[scopeOffset++]];\r\n                }\r\n                scopeParams[scopeOffset] = source;\r\n                return Function.apply(null, scopeParams).apply(null, scopeValues); // eslint-disable-line no-new-func\r\n            }\r\n            return Function(source)(); // eslint-disable-line no-new-func\r\n        }\r\n\r\n        // otherwise append to body\r\n        var formatParams = new Array(arguments.length - 1),\r\n            formatOffset = 0;\r\n        while (formatOffset < formatParams.length)\r\n            formatParams[formatOffset] = arguments[++formatOffset];\r\n        formatOffset = 0;\r\n        formatStringOrScope = formatStringOrScope.replace(/%([%dfijs])/g, function replace($0, $1) {\r\n            var value = formatParams[formatOffset++];\r\n            switch ($1) {\r\n                case \"d\": case \"f\": return String(Number(value));\r\n                case \"i\": return String(Math.floor(value));\r\n                case \"j\": return JSON.stringify(value);\r\n                case \"s\": return String(value);\r\n            }\r\n            return \"%\";\r\n        });\r\n        if (formatOffset !== formatParams.length)\r\n            throw Error(\"parameter count mismatch\");\r\n        body.push(formatStringOrScope);\r\n        return Codegen;\r\n    }\r\n\r\n    function toString(functionNameOverride) {\r\n        return \"function \" + (functionNameOverride || functionName || \"\") + \"(\" + (functionParams && functionParams.join(\",\") || \"\") + \"){\\n  \" + body.join(\"\\n  \") + \"\\n}\";\r\n    }\r\n\r\n    Codegen.toString = toString;\r\n    return Codegen;\r\n}\r\n\r\n/**\r\n * Begins generating a function.\r\n * @memberof util\r\n * @function codegen\r\n * @param {string} [functionName] Function name if not anonymous\r\n * @returns {Codegen} Appender that appends code to the function's body\r\n * @variation 2\r\n */\r\n\r\n/**\r\n * When set to `true`, codegen will log generated code to console. Useful for debugging.\r\n * @name util.codegen.verbose\r\n * @type {boolean}\r\n */\r\ncodegen.verbose = false;\r\n", "\"use strict\";\r\nmodule.exports = fetch;\r\n\r\nvar asPromise = require(\"@protobufjs/aspromise\"),\r\n    inquire   = require(\"@protobufjs/inquire\");\r\n\r\nvar fs = inquire(\"fs\");\r\n\r\n/**\r\n * Node-style callback as used by {@link util.fetch}.\r\n * @typedef FetchCallback\r\n * @type {function}\r\n * @param {?Error} error Error, if any, otherwise `null`\r\n * @param {string} [contents] File contents, if there hasn't been an error\r\n * @returns {undefined}\r\n */\r\n\r\n/**\r\n * Options as used by {@link util.fetch}.\r\n * @typedef FetchOptions\r\n * @type {Object}\r\n * @property {boolean} [binary=false] Whether expecting a binary response\r\n * @property {boolean} [xhr=false] If `true`, forces the use of XMLHttpRequest\r\n */\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @memberof util\r\n * @param {string} filename File path or url\r\n * @param {FetchOptions} options Fetch options\r\n * @param {FetchCallback} callback Callback function\r\n * @returns {undefined}\r\n */\r\nfunction fetch(filename, options, callback) {\r\n    if (typeof options === \"function\") {\r\n        callback = options;\r\n        options = {};\r\n    } else if (!options)\r\n        options = {};\r\n\r\n    if (!callback)\r\n        return asPromise(fetch, this, filename, options); // eslint-disable-line no-invalid-this\r\n\r\n    // if a node-like filesystem is present, try it first but fall back to XHR if nothing is found.\r\n    if (!options.xhr && fs && fs.readFile)\r\n        return fs.readFile(filename, function fetchReadFileCallback(err, contents) {\r\n            return err && typeof XMLHttpRequest !== \"undefined\"\r\n                ? fetch.xhr(filename, options, callback)\r\n                : err\r\n                ? callback(err)\r\n                : callback(null, options.binary ? contents : contents.toString(\"utf8\"));\r\n        });\r\n\r\n    // use the XHR version otherwise.\r\n    return fetch.xhr(filename, options, callback);\r\n}\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @name util.fetch\r\n * @function\r\n * @param {string} path File path or url\r\n * @param {FetchCallback} callback Callback function\r\n * @returns {undefined}\r\n * @variation 2\r\n */\r\n\r\n/**\r\n * Fetches the contents of a file.\r\n * @name util.fetch\r\n * @function\r\n * @param {string} path File path or url\r\n * @param {FetchOptions} [options] Fetch options\r\n * @returns {Promise<string|Uint8Array>} Promise\r\n * @variation 3\r\n */\r\n\r\n/**/\r\nfetch.xhr = function fetch_xhr(filename, options, callback) {\r\n    var xhr = new XMLHttpRequest();\r\n    xhr.onreadystatechange /* works everywhere */ = function fetchOnReadyStateChange() {\r\n\r\n        if (xhr.readyState !== 4)\r\n            return undefined;\r\n\r\n        // local cors security errors return status 0 / empty string, too. afaik this cannot be\r\n        // reliably distinguished from an actually empty file for security reasons. feel free\r\n        // to send a pull request if you are aware of a solution.\r\n        if (xhr.status !== 0 && xhr.status !== 200)\r\n            return callback(Error(\"status \" + xhr.status));\r\n\r\n        // if binary data is expected, make sure that some sort of array is returned, even if\r\n        // ArrayBuffers are not supported. the binary string fallback, however, is unsafe.\r\n        if (options.binary) {\r\n            var buffer = xhr.response;\r\n            if (!buffer) {\r\n                buffer = [];\r\n                for (var i = 0; i < xhr.responseText.length; ++i)\r\n                    buffer.push(xhr.responseText.charCodeAt(i) & 255);\r\n            }\r\n            return callback(null, typeof Uint8Array !== \"undefined\" ? new Uint8Array(buffer) : buffer);\r\n        }\r\n        return callback(null, xhr.responseText);\r\n    };\r\n\r\n    if (options.binary) {\r\n        // ref: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Sending_and_Receiving_Binary_Data#Receiving_binary_data_in_older_browsers\r\n        if (\"overrideMimeType\" in xhr)\r\n            xhr.overrideMimeType(\"text/plain; charset=x-user-defined\");\r\n        xhr.responseType = \"arraybuffer\";\r\n    }\r\n\r\n    xhr.open(\"GET\", filename);\r\n    xhr.send();\r\n};\r\n", "\"use strict\";\r\n\r\n/**\r\n * A minimal path module to resolve Unix, Windows and URL paths alike.\r\n * @memberof util\r\n * @namespace\r\n */\r\nvar path = exports;\r\n\r\nvar isAbsolute =\r\n/**\r\n * Tests if the specified path is absolute.\r\n * @param {string} path Path to test\r\n * @returns {boolean} `true` if path is absolute\r\n */\r\npath.isAbsolute = function isAbsolute(path) {\r\n    return /^(?:\\/|\\w+:)/.test(path);\r\n};\r\n\r\nvar normalize =\r\n/**\r\n * Normalizes the specified path.\r\n * @param {string} path Path to normalize\r\n * @returns {string} Normalized path\r\n */\r\npath.normalize = function normalize(path) {\r\n    path = path.replace(/\\\\/g, \"/\")\r\n               .replace(/\\/{2,}/g, \"/\");\r\n    var parts    = path.split(\"/\"),\r\n        absolute = isAbsolute(path),\r\n        prefix   = \"\";\r\n    if (absolute)\r\n        prefix = parts.shift() + \"/\";\r\n    for (var i = 0; i < parts.length;) {\r\n        if (parts[i] === \"..\") {\r\n            if (i > 0 && parts[i - 1] !== \"..\")\r\n                parts.splice(--i, 2);\r\n            else if (absolute)\r\n                parts.splice(i, 1);\r\n            else\r\n                ++i;\r\n        } else if (parts[i] === \".\")\r\n            parts.splice(i, 1);\r\n        else\r\n            ++i;\r\n    }\r\n    return prefix + parts.join(\"/\");\r\n};\r\n\r\n/**\r\n * Resolves the specified include path against the specified origin path.\r\n * @param {string} originPath Path to the origin file\r\n * @param {string} includePath Include path relative to origin path\r\n * @param {boolean} [alreadyNormalized=false] `true` if both paths are already known to be normalized\r\n * @returns {string} Path to the include file\r\n */\r\npath.resolve = function resolve(originPath, includePath, alreadyNormalized) {\r\n    if (!alreadyNormalized)\r\n        includePath = normalize(includePath);\r\n    if (isAbsolute(includePath))\r\n        return includePath;\r\n    if (!alreadyNormalized)\r\n        originPath = normalize(originPath);\r\n    return (originPath = originPath.replace(/(?:\\/|^)[^/]+$/, \"\")).length ? normalize(originPath + \"/\" + includePath) : includePath;\r\n};\r\n", "\"use strict\";\nmodule.exports = Namespace;\n\n// extends ReflectionObject\nvar ReflectionObject = require(\"./object\");\n((Namespace.prototype = Object.create(ReflectionObject.prototype)).constructor = Namespace).className = \"Namespace\";\n\nvar Field    = require(\"./field\"),\n    util     = require(\"./util\"),\n    OneOf    = require(\"./oneof\");\n\nvar Type,    // cyclic\n    Service,\n    Enum;\n\n/**\n * Constructs a new namespace instance.\n * @name Namespace\n * @classdesc Reflected namespace.\n * @extends NamespaceBase\n * @constructor\n * @param {string} name Namespace name\n * @param {Object.<string,*>} [options] Declared options\n */\n\n/**\n * Constructs a namespace from JSON.\n * @memberof Namespace\n * @function\n * @param {string} name Namespace name\n * @param {Object.<string,*>} json JSON object\n * @returns {Namespace} Created namespace\n * @throws {TypeError} If arguments are invalid\n */\nNamespace.fromJSON = function fromJSON(name, json) {\n    return new Namespace(name, json.options).addJSON(json.nested);\n};\n\n/**\n * Converts an array of reflection objects to JSON.\n * @memberof Namespace\n * @param {ReflectionObject[]} array Object array\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {Object.<string,*>|undefined} JSON object or `undefined` when array is empty\n */\nfunction arrayToJSON(array, toJSONOptions) {\n    if (!(array && array.length))\n        return undefined;\n    var obj = {};\n    for (var i = 0; i < array.length; ++i)\n        obj[array[i].name] = array[i].toJSON(toJSONOptions);\n    return obj;\n}\n\nNamespace.arrayToJSON = arrayToJSON;\n\n/**\n * Tests if the specified id is reserved.\n * @param {Array.<number[]|string>|undefined} reserved Array of reserved ranges and names\n * @param {number} id Id to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nNamespace.isReservedId = function isReservedId(reserved, id) {\n    if (reserved)\n        for (var i = 0; i < reserved.length; ++i)\n            if (typeof reserved[i] !== \"string\" && reserved[i][0] <= id && reserved[i][1] > id)\n                return true;\n    return false;\n};\n\n/**\n * Tests if the specified name is reserved.\n * @param {Array.<number[]|string>|undefined} reserved Array of reserved ranges and names\n * @param {string} name Name to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nNamespace.isReservedName = function isReservedName(reserved, name) {\n    if (reserved)\n        for (var i = 0; i < reserved.length; ++i)\n            if (reserved[i] === name)\n                return true;\n    return false;\n};\n\n/**\n * Not an actual constructor. Use {@link Namespace} instead.\n * @classdesc Base class of all reflection objects containing nested objects. This is not an actual class but here for the sake of having consistent type definitions.\n * @exports NamespaceBase\n * @extends ReflectionObject\n * @abstract\n * @constructor\n * @param {string} name Namespace name\n * @param {Object.<string,*>} [options] Declared options\n * @see {@link Namespace}\n */\nfunction Namespace(name, options) {\n    ReflectionObject.call(this, name, options);\n\n    /**\n     * Nested objects by name.\n     * @type {Object.<string,ReflectionObject>|undefined}\n     */\n    this.nested = undefined; // toJSON\n\n    /**\n     * Cached nested objects as an array.\n     * @type {ReflectionObject[]|null}\n     * @private\n     */\n    this._nestedArray = null;\n\n    /**\n     * Cache lookup calls for any objects contains anywhere under this namespace.\n     * This drastically speeds up resolve for large cross-linked protos where the same\n     * types are looked up repeatedly.\n     * @type {Object.<string,ReflectionObject|null>}\n     * @private\n     */\n    this._lookupCache = {};\n\n    /**\n     * Whether or not objects contained in this namespace need feature resolution.\n     * @type {boolean}\n     * @protected\n     */\n    this._needsRecursiveFeatureResolution = true;\n\n    /**\n     * Whether or not objects contained in this namespace need a resolve.\n     * @type {boolean}\n     * @protected\n     */\n    this._needsRecursiveResolve = true;\n}\n\nfunction clearCache(namespace) {\n    namespace._nestedArray = null;\n    namespace._lookupCache = {};\n\n    // Also clear parent caches, since they include nested lookups.\n    var parent = namespace;\n    while(parent = parent.parent) {\n        parent._lookupCache = {};\n    }\n    return namespace;\n}\n\n/**\n * Nested objects of this namespace as an array for iteration.\n * @name NamespaceBase#nestedArray\n * @type {ReflectionObject[]}\n * @readonly\n */\nObject.defineProperty(Namespace.prototype, \"nestedArray\", {\n    get: function() {\n        return this._nestedArray || (this._nestedArray = util.toArray(this.nested));\n    }\n});\n\n/**\n * Namespace descriptor.\n * @interface INamespace\n * @property {Object.<string,*>} [options] Namespace options\n * @property {Object.<string,AnyNestedObject>} [nested] Nested object descriptors\n */\n\n/**\n * Any extension field descriptor.\n * @typedef AnyExtensionField\n * @type {IExtensionField|IExtensionMapField}\n */\n\n/**\n * Any nested object descriptor.\n * @typedef AnyNestedObject\n * @type {IEnum|IType|IService|AnyExtensionField|INamespace|IOneOf}\n */\n\n/**\n * Converts this namespace to a namespace descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {INamespace} Namespace descriptor\n */\nNamespace.prototype.toJSON = function toJSON(toJSONOptions) {\n    return util.toObject([\n        \"options\" , this.options,\n        \"nested\"  , arrayToJSON(this.nestedArray, toJSONOptions)\n    ]);\n};\n\n/**\n * Adds nested objects to this namespace from nested object descriptors.\n * @param {Object.<string,AnyNestedObject>} nestedJson Any nested object descriptors\n * @returns {Namespace} `this`\n */\nNamespace.prototype.addJSON = function addJSON(nestedJson) {\n    var ns = this;\n    /* istanbul ignore else */\n    if (nestedJson) {\n        for (var names = Object.keys(nestedJson), i = 0, nested; i < names.length; ++i) {\n            nested = nestedJson[names[i]];\n            ns.add( // most to least likely\n                ( nested.fields !== undefined\n                ? Type.fromJSON\n                : nested.values !== undefined\n                ? Enum.fromJSON\n                : nested.methods !== undefined\n                ? Service.fromJSON\n                : nested.id !== undefined\n                ? Field.fromJSON\n                : Namespace.fromJSON )(names[i], nested)\n            );\n        }\n    }\n    return this;\n};\n\n/**\n * Gets the nested object of the specified name.\n * @param {string} name Nested object name\n * @returns {ReflectionObject|null} The reflection object or `null` if it doesn't exist\n */\nNamespace.prototype.get = function get(name) {\n    return this.nested && this.nested[name]\n        || null;\n};\n\n/**\n * Gets the values of the nested {@link Enum|enum} of the specified name.\n * This methods differs from {@link Namespace#get|get} in that it returns an enum's values directly and throws instead of returning `null`.\n * @param {string} name Nested enum name\n * @returns {Object.<string,number>} Enum values\n * @throws {Error} If there is no such enum\n */\nNamespace.prototype.getEnum = function getEnum(name) {\n    if (this.nested && this.nested[name] instanceof Enum)\n        return this.nested[name].values;\n    throw Error(\"no such enum: \" + name);\n};\n\n/**\n * Adds a nested object to this namespace.\n * @param {ReflectionObject} object Nested object to add\n * @returns {Namespace} `this`\n * @throws {TypeError} If arguments are invalid\n * @throws {Error} If there is already a nested object with this name\n */\nNamespace.prototype.add = function add(object) {\n\n    if (!(object instanceof Field && object.extend !== undefined || object instanceof Type  || object instanceof OneOf || object instanceof Enum || object instanceof Service || object instanceof Namespace))\n        throw TypeError(\"object must be a valid nested object\");\n\n    if (!this.nested)\n        this.nested = {};\n    else {\n        var prev = this.get(object.name);\n        if (prev) {\n            if (prev instanceof Namespace && object instanceof Namespace && !(prev instanceof Type || prev instanceof Service)) {\n                // replace plain namespace but keep existing nested elements and options\n                var nested = prev.nestedArray;\n                for (var i = 0; i < nested.length; ++i)\n                    object.add(nested[i]);\n                this.remove(prev);\n                if (!this.nested)\n                    this.nested = {};\n                object.setOptions(prev.options, true);\n\n            } else\n                throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\n        }\n    }\n    this.nested[object.name] = object;\n\n    if (!(this instanceof Type || this instanceof Service || this instanceof Enum || this instanceof Field)) {\n        // This is a package or a root namespace.\n        if (!object._edition) {\n            // Make sure that some edition is set if it hasn't already been specified.\n            object._edition = object._defaultEdition;\n        }\n    }\n\n    this._needsRecursiveFeatureResolution = true;\n    this._needsRecursiveResolve = true;\n\n    // Also clear parent caches, since they need to recurse down.\n    var parent = this;\n    while(parent = parent.parent) {\n        parent._needsRecursiveFeatureResolution = true;\n        parent._needsRecursiveResolve = true;\n    }\n\n    object.onAdd(this);\n    return clearCache(this);\n};\n\n/**\n * Removes a nested object from this namespace.\n * @param {ReflectionObject} object Nested object to remove\n * @returns {Namespace} `this`\n * @throws {TypeError} If arguments are invalid\n * @throws {Error} If `object` is not a member of this namespace\n */\nNamespace.prototype.remove = function remove(object) {\n\n    if (!(object instanceof ReflectionObject))\n        throw TypeError(\"object must be a ReflectionObject\");\n    if (object.parent !== this)\n        throw Error(object + \" is not a member of \" + this);\n\n    delete this.nested[object.name];\n    if (!Object.keys(this.nested).length)\n        this.nested = undefined;\n\n    object.onRemove(this);\n    return clearCache(this);\n};\n\n/**\n * Defines additial namespaces within this one if not yet existing.\n * @param {string|string[]} path Path to create\n * @param {*} [json] Nested types to create from JSON\n * @returns {Namespace} Pointer to the last namespace created or `this` if path is empty\n */\nNamespace.prototype.define = function define(path, json) {\n\n    if (util.isString(path))\n        path = path.split(\".\");\n    else if (!Array.isArray(path))\n        throw TypeError(\"illegal path\");\n    if (path && path.length && path[0] === \"\")\n        throw Error(\"path must be relative\");\n\n    var ptr = this;\n    while (path.length > 0) {\n        var part = path.shift();\n        if (ptr.nested && ptr.nested[part]) {\n            ptr = ptr.nested[part];\n            if (!(ptr instanceof Namespace))\n                throw Error(\"path conflicts with non-namespace objects\");\n        } else\n            ptr.add(ptr = new Namespace(part));\n    }\n    if (json)\n        ptr.addJSON(json);\n    return ptr;\n};\n\n/**\n * Resolves this namespace's and all its nested objects' type references. Useful to validate a reflection tree, but comes at a cost.\n * @returns {Namespace} `this`\n */\nNamespace.prototype.resolveAll = function resolveAll() {\n    if (!this._needsRecursiveResolve) return this;\n\n    this._resolveFeaturesRecursive(this._edition);\n\n    var nested = this.nestedArray, i = 0;\n    this.resolve();\n    while (i < nested.length)\n        if (nested[i] instanceof Namespace)\n            nested[i++].resolveAll();\n        else\n            nested[i++].resolve();\n    this._needsRecursiveResolve = false;\n    return this;\n};\n\n/**\n * @override\n */\nNamespace.prototype._resolveFeaturesRecursive = function _resolveFeaturesRecursive(edition) {\n    if (!this._needsRecursiveFeatureResolution) return this;\n    this._needsRecursiveFeatureResolution = false;\n\n    edition = this._edition || edition;\n\n    ReflectionObject.prototype._resolveFeaturesRecursive.call(this, edition);\n    this.nestedArray.forEach(nested => {\n        nested._resolveFeaturesRecursive(edition);\n    });\n    return this;\n};\n\n/**\n * Recursively looks up the reflection object matching the specified path in the scope of this namespace.\n * @param {string|string[]} path Path to look up\n * @param {*|Array.<*>} filterTypes Filter types, any combination of the constructors of `protobuf.Type`, `protobuf.Enum`, `protobuf.Service` etc.\n * @param {boolean} [parentAlreadyChecked=false] If known, whether the parent has already been checked\n * @returns {ReflectionObject|null} Looked up object or `null` if none could be found\n */\nNamespace.prototype.lookup = function lookup(path, filterTypes, parentAlreadyChecked) {\n    /* istanbul ignore next */\n    if (typeof filterTypes === \"boolean\") {\n        parentAlreadyChecked = filterTypes;\n        filterTypes = undefined;\n    } else if (filterTypes && !Array.isArray(filterTypes))\n        filterTypes = [ filterTypes ];\n\n    if (util.isString(path) && path.length) {\n        if (path === \".\")\n            return this.root;\n        path = path.split(\".\");\n    } else if (!path.length)\n        return this;\n\n    var flatPath = path.join(\".\");\n\n    // Start at root if path is absolute\n    if (path[0] === \"\")\n        return this.root.lookup(path.slice(1), filterTypes);\n\n    // Early bailout for objects with matching absolute paths\n    var found = this.root._fullyQualifiedObjects && this.root._fullyQualifiedObjects[\".\" + flatPath];\n    if (found && (!filterTypes || filterTypes.indexOf(found.constructor) > -1)) {\n        return found;\n    }\n\n    // Do a regular lookup at this namespace and below\n    found = this._lookupImpl(path, flatPath);\n    if (found && (!filterTypes || filterTypes.indexOf(found.constructor) > -1)) {\n        return found;\n    }\n\n    if (parentAlreadyChecked)\n        return null;\n\n    // If there hasn't been a match, walk up the tree and look more broadly\n    var current = this;\n    while (current.parent) {\n        found = current.parent._lookupImpl(path, flatPath);\n        if (found && (!filterTypes || filterTypes.indexOf(found.constructor) > -1)) {\n            return found;\n        }\n        current = current.parent;\n    }\n    return null;\n};\n\n/**\n * Internal helper for lookup that handles searching just at this namespace and below along with caching.\n * @param {string[]} path Path to look up\n * @param {string} flatPath Flattened version of the path to use as a cache key\n * @returns {ReflectionObject|null} Looked up object or `null` if none could be found\n * @private\n */\nNamespace.prototype._lookupImpl = function lookup(path, flatPath) {\n    if(Object.prototype.hasOwnProperty.call(this._lookupCache, flatPath)) {\n        return this._lookupCache[flatPath];\n    }\n\n    // Test if the first part matches any nested object, and if so, traverse if path contains more\n    var found = this.get(path[0]);\n    var exact = null;\n    if (found) {\n        if (path.length === 1) {\n            exact = found;\n        } else if (found instanceof Namespace) {\n            path = path.slice(1);\n            exact = found._lookupImpl(path, path.join(\".\"));\n        }\n\n    // Otherwise try each nested namespace\n    } else {\n        for (var i = 0; i < this.nestedArray.length; ++i)\n            if (this._nestedArray[i] instanceof Namespace && (found = this._nestedArray[i]._lookupImpl(path, flatPath)))\n                exact = found;\n    }\n\n    // Set this even when null, so that when we walk up the tree we can quickly bail on repeated checks back down.\n    this._lookupCache[flatPath] = exact;\n    return exact;\n};\n\n/**\n * Looks up the reflection object at the specified path, relative to this namespace.\n * @name NamespaceBase#lookup\n * @function\n * @param {string|string[]} path Path to look up\n * @param {boolean} [parentAlreadyChecked=false] Whether the parent has already been checked\n * @returns {ReflectionObject|null} Looked up object or `null` if none could be found\n * @variation 2\n */\n// lookup(path: string, [parentAlreadyChecked: boolean])\n\n/**\n * Looks up the {@link Type|type} at the specified path, relative to this namespace.\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\n * @param {string|string[]} path Path to look up\n * @returns {Type} Looked up type\n * @throws {Error} If `path` does not point to a type\n */\nNamespace.prototype.lookupType = function lookupType(path) {\n    var found = this.lookup(path, [ Type ]);\n    if (!found)\n        throw Error(\"no such type: \" + path);\n    return found;\n};\n\n/**\n * Looks up the values of the {@link Enum|enum} at the specified path, relative to this namespace.\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\n * @param {string|string[]} path Path to look up\n * @returns {Enum} Looked up enum\n * @throws {Error} If `path` does not point to an enum\n */\nNamespace.prototype.lookupEnum = function lookupEnum(path) {\n    var found = this.lookup(path, [ Enum ]);\n    if (!found)\n        throw Error(\"no such Enum '\" + path + \"' in \" + this);\n    return found;\n};\n\n/**\n * Looks up the {@link Type|type} or {@link Enum|enum} at the specified path, relative to this namespace.\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\n * @param {string|string[]} path Path to look up\n * @returns {Type} Looked up type or enum\n * @throws {Error} If `path` does not point to a type or enum\n */\nNamespace.prototype.lookupTypeOrEnum = function lookupTypeOrEnum(path) {\n    var found = this.lookup(path, [ Type, Enum ]);\n    if (!found)\n        throw Error(\"no such Type or Enum '\" + path + \"' in \" + this);\n    return found;\n};\n\n/**\n * Looks up the {@link Service|service} at the specified path, relative to this namespace.\n * Besides its signature, this methods differs from {@link Namespace#lookup|lookup} in that it throws instead of returning `null`.\n * @param {string|string[]} path Path to look up\n * @returns {Service} Looked up service\n * @throws {Error} If `path` does not point to a service\n */\nNamespace.prototype.lookupService = function lookupService(path) {\n    var found = this.lookup(path, [ Service ]);\n    if (!found)\n        throw Error(\"no such Service '\" + path + \"' in \" + this);\n    return found;\n};\n\n// Sets up cyclic dependencies (called in index-light)\nNamespace._configure = function(Type_, Service_, Enum_) {\n    Type    = Type_;\n    Service = Service_;\n    Enum    = Enum_;\n};\n", "\"use strict\";\nmodule.exports = MapField;\n\n// extends Field\nvar Field = require(\"./field\");\n((MapField.prototype = Object.create(Field.prototype)).constructor = MapField).className = \"MapField\";\n\nvar types   = require(\"./types\"),\n    util    = require(\"./util\");\n\n/**\n * Constructs a new map field instance.\n * @classdesc Reflected map field.\n * @extends FieldBase\n * @constructor\n * @param {string} name Unique name within its namespace\n * @param {number} id Unique id within its namespace\n * @param {string} keyType Key type\n * @param {string} type Value type\n * @param {Object.<string,*>} [options] Declared options\n * @param {string} [comment] Comment associated with this field\n */\nfunction MapField(name, id, keyType, type, options, comment) {\n    Field.call(this, name, id, type, undefined, undefined, options, comment);\n\n    /* istanbul ignore if */\n    if (!util.isString(keyType))\n        throw TypeError(\"keyType must be a string\");\n\n    /**\n     * Key type.\n     * @type {string}\n     */\n    this.keyType = keyType; // toJSON, marker\n\n    /**\n     * Resolved key type if not a basic type.\n     * @type {ReflectionObject|null}\n     */\n    this.resolvedKeyType = null;\n\n    // Overrides Field#map\n    this.map = true;\n}\n\n/**\n * Map field descriptor.\n * @interface IMapField\n * @extends {IField}\n * @property {string} keyType Key type\n */\n\n/**\n * Extension map field descriptor.\n * @interface IExtensionMapField\n * @extends IMapField\n * @property {string} extend Extended type\n */\n\n/**\n * Constructs a map field from a map field descriptor.\n * @param {string} name Field name\n * @param {IMapField} json Map field descriptor\n * @returns {MapField} Created map field\n * @throws {TypeError} If arguments are invalid\n */\nMapField.fromJSON = function fromJSON(name, json) {\n    return new MapField(name, json.id, json.keyType, json.type, json.options, json.comment);\n};\n\n/**\n * Converts this map field to a map field descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IMapField} Map field descriptor\n */\nMapField.prototype.toJSON = function toJSON(toJSONOptions) {\n    var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n    return util.toObject([\n        \"keyType\" , this.keyType,\n        \"type\"    , this.type,\n        \"id\"      , this.id,\n        \"extend\"  , this.extend,\n        \"options\" , this.options,\n        \"comment\" , keepComments ? this.comment : undefined\n    ]);\n};\n\n/**\n * @override\n */\nMapField.prototype.resolve = function resolve() {\n    if (this.resolved)\n        return this;\n\n    // Besides a value type, map fields have a key type that may be \"any scalar type except for floating point types and bytes\"\n    if (types.mapKey[this.keyType] === undefined)\n        throw Error(\"invalid key type: \" + this.keyType);\n\n    return Field.prototype.resolve.call(this);\n};\n\n/**\n * Map field decorator (TypeScript).\n * @name MapField.d\n * @function\n * @param {number} fieldId Field id\n * @param {\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"bool\"|\"string\"} fieldKeyType Field key type\n * @param {\"double\"|\"float\"|\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"bool\"|\"string\"|\"bytes\"|Object|Constructor<{}>} fieldValueType Field value type\n * @returns {FieldDecorator} Decorator function\n * @template T extends { [key: string]: number | Long | string | boolean | Uint8Array | Buffer | number[] | Message<{}> }\n */\nMapField.d = function decorateMapField(fieldId, fieldKeyType, fieldValueType) {\n\n    // submessage value: decorate the submessage and use its name as the type\n    if (typeof fieldValueType === \"function\")\n        fieldValueType = util.decorateType(fieldValueType).name;\n\n    // enum reference value: create a reflected copy of the enum and keep reuseing it\n    else if (fieldValueType && typeof fieldValueType === \"object\")\n        fieldValueType = util.decorateEnum(fieldValueType).name;\n\n    return function mapFieldDecorator(prototype, fieldName) {\n        util.decorateType(prototype.constructor)\n            .add(new MapField(fieldName, fieldId, fieldKeyType, fieldValueType));\n    };\n};\n", "\"use strict\";\nmodule.exports = Method;\n\n// extends ReflectionObject\nvar ReflectionObject = require(\"./object\");\n((Method.prototype = Object.create(ReflectionObject.prototype)).constructor = Method).className = \"Method\";\n\nvar util = require(\"./util\");\n\n/**\n * Constructs a new service method instance.\n * @classdesc Reflected service method.\n * @extends ReflectionObject\n * @constructor\n * @param {string} name Method name\n * @param {string|undefined} type Method type, usually `\"rpc\"`\n * @param {string} requestType Request message type\n * @param {string} responseType Response message type\n * @param {boolean|Object.<string,*>} [requestStream] Whether the request is streamed\n * @param {boolean|Object.<string,*>} [responseStream] Whether the response is streamed\n * @param {Object.<string,*>} [options] Declared options\n * @param {string} [comment] The comment for this method\n * @param {Object.<string,*>} [parsedOptions] Declared options, properly parsed into an object\n */\nfunction Method(name, type, requestType, responseType, requestStream, responseStream, options, comment, parsedOptions) {\n\n    /* istanbul ignore next */\n    if (util.isObject(requestStream)) {\n        options = requestStream;\n        requestStream = responseStream = undefined;\n    } else if (util.isObject(responseStream)) {\n        options = responseStream;\n        responseStream = undefined;\n    }\n\n    /* istanbul ignore if */\n    if (!(type === undefined || util.isString(type)))\n        throw TypeError(\"type must be a string\");\n\n    /* istanbul ignore if */\n    if (!util.isString(requestType))\n        throw TypeError(\"requestType must be a string\");\n\n    /* istanbul ignore if */\n    if (!util.isString(responseType))\n        throw TypeError(\"responseType must be a string\");\n\n    ReflectionObject.call(this, name, options);\n\n    /**\n     * Method type.\n     * @type {string}\n     */\n    this.type = type || \"rpc\"; // toJSON\n\n    /**\n     * Request type.\n     * @type {string}\n     */\n    this.requestType = requestType; // toJSON, marker\n\n    /**\n     * Whether requests are streamed or not.\n     * @type {boolean|undefined}\n     */\n    this.requestStream = requestStream ? true : undefined; // toJSON\n\n    /**\n     * Response type.\n     * @type {string}\n     */\n    this.responseType = responseType; // toJSON\n\n    /**\n     * Whether responses are streamed or not.\n     * @type {boolean|undefined}\n     */\n    this.responseStream = responseStream ? true : undefined; // toJSON\n\n    /**\n     * Resolved request type.\n     * @type {Type|null}\n     */\n    this.resolvedRequestType = null;\n\n    /**\n     * Resolved response type.\n     * @type {Type|null}\n     */\n    this.resolvedResponseType = null;\n\n    /**\n     * Comment for this method\n     * @type {string|null}\n     */\n    this.comment = comment;\n\n    /**\n     * Options properly parsed into an object\n     */\n    this.parsedOptions = parsedOptions;\n}\n\n/**\n * Method descriptor.\n * @interface IMethod\n * @property {string} [type=\"rpc\"] Method type\n * @property {string} requestType Request type\n * @property {string} responseType Response type\n * @property {boolean} [requestStream=false] Whether requests are streamed\n * @property {boolean} [responseStream=false] Whether responses are streamed\n * @property {Object.<string,*>} [options] Method options\n * @property {string} comment Method comments\n * @property {Object.<string,*>} [parsedOptions] Method options properly parsed into an object\n */\n\n/**\n * Constructs a method from a method descriptor.\n * @param {string} name Method name\n * @param {IMethod} json Method descriptor\n * @returns {Method} Created method\n * @throws {TypeError} If arguments are invalid\n */\nMethod.fromJSON = function fromJSON(name, json) {\n    return new Method(name, json.type, json.requestType, json.responseType, json.requestStream, json.responseStream, json.options, json.comment, json.parsedOptions);\n};\n\n/**\n * Converts this method to a method descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IMethod} Method descriptor\n */\nMethod.prototype.toJSON = function toJSON(toJSONOptions) {\n    var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n    return util.toObject([\n        \"type\"           , this.type !== \"rpc\" && /* istanbul ignore next */ this.type || undefined,\n        \"requestType\"    , this.requestType,\n        \"requestStream\"  , this.requestStream,\n        \"responseType\"   , this.responseType,\n        \"responseStream\" , this.responseStream,\n        \"options\"        , this.options,\n        \"comment\"        , keepComments ? this.comment : undefined,\n        \"parsedOptions\"  , this.parsedOptions,\n    ]);\n};\n\n/**\n * @override\n */\nMethod.prototype.resolve = function resolve() {\n\n    /* istanbul ignore if */\n    if (this.resolved)\n        return this;\n\n    this.resolvedRequestType = this.parent.lookupType(this.requestType);\n    this.resolvedResponseType = this.parent.lookupType(this.responseType);\n\n    return ReflectionObject.prototype.resolve.call(this);\n};\n", "\"use strict\";\nmodule.exports = Service;\n\n// extends Namespace\nvar Namespace = require(\"./namespace\");\n((Service.prototype = Object.create(Namespace.prototype)).constructor = Service).className = \"Service\";\n\nvar Method = require(\"./method\"),\n    util   = require(\"./util\"),\n    rpc    = require(\"./rpc\");\n\n/**\n * Constructs a new service instance.\n * @classdesc Reflected service.\n * @extends NamespaceBase\n * @constructor\n * @param {string} name Service name\n * @param {Object.<string,*>} [options] Service options\n * @throws {TypeError} If arguments are invalid\n */\nfunction Service(name, options) {\n    Namespace.call(this, name, options);\n\n    /**\n     * Service methods.\n     * @type {Object.<string,Method>}\n     */\n    this.methods = {}; // toJSON, marker\n\n    /**\n     * Cached methods as an array.\n     * @type {Method[]|null}\n     * @private\n     */\n    this._methodsArray = null;\n}\n\n/**\n * Service descriptor.\n * @interface IService\n * @extends INamespace\n * @property {Object.<string,IMethod>} methods Method descriptors\n */\n\n/**\n * Constructs a service from a service descriptor.\n * @param {string} name Service name\n * @param {IService} json Service descriptor\n * @returns {Service} Created service\n * @throws {TypeError} If arguments are invalid\n */\nService.fromJSON = function fromJSON(name, json) {\n    var service = new Service(name, json.options);\n    /* istanbul ignore else */\n    if (json.methods)\n        for (var names = Object.keys(json.methods), i = 0; i < names.length; ++i)\n            service.add(Method.fromJSON(names[i], json.methods[names[i]]));\n    if (json.nested)\n        service.addJSON(json.nested);\n    if (json.edition)\n        service._edition = json.edition;\n    service.comment = json.comment;\n    service._defaultEdition = \"proto3\";  // For backwards-compatibility.\n    return service;\n};\n\n/**\n * Converts this service to a service descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IService} Service descriptor\n */\nService.prototype.toJSON = function toJSON(toJSONOptions) {\n    var inherited = Namespace.prototype.toJSON.call(this, toJSONOptions);\n    var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n    return util.toObject([\n        \"edition\" , this._editionToJSON(),\n        \"options\" , inherited && inherited.options || undefined,\n        \"methods\" , Namespace.arrayToJSON(this.methodsArray, toJSONOptions) || /* istanbul ignore next */ {},\n        \"nested\"  , inherited && inherited.nested || undefined,\n        \"comment\" , keepComments ? this.comment : undefined\n    ]);\n};\n\n/**\n * Methods of this service as an array for iteration.\n * @name Service#methodsArray\n * @type {Method[]}\n * @readonly\n */\nObject.defineProperty(Service.prototype, \"methodsArray\", {\n    get: function() {\n        return this._methodsArray || (this._methodsArray = util.toArray(this.methods));\n    }\n});\n\nfunction clearCache(service) {\n    service._methodsArray = null;\n    return service;\n}\n\n/**\n * @override\n */\nService.prototype.get = function get(name) {\n    return this.methods[name]\n        || Namespace.prototype.get.call(this, name);\n};\n\n/**\n * @override\n */\nService.prototype.resolveAll = function resolveAll() {\n    if (!this._needsRecursiveResolve) return this;\n\n    Namespace.prototype.resolve.call(this);\n    var methods = this.methodsArray;\n    for (var i = 0; i < methods.length; ++i)\n        methods[i].resolve();\n    return this;\n};\n\n/**\n * @override\n */\nService.prototype._resolveFeaturesRecursive = function _resolveFeaturesRecursive(edition) {\n    if (!this._needsRecursiveFeatureResolution) return this;\n\n    edition = this._edition || edition;\n\n    Namespace.prototype._resolveFeaturesRecursive.call(this, edition);\n    this.methodsArray.forEach(method => {\n        method._resolveFeaturesRecursive(edition);\n    });\n    return this;\n};\n\n/**\n * @override\n */\nService.prototype.add = function add(object) {\n\n    /* istanbul ignore if */\n    if (this.get(object.name))\n        throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\n\n    if (object instanceof Method) {\n        this.methods[object.name] = object;\n        object.parent = this;\n        return clearCache(this);\n    }\n    return Namespace.prototype.add.call(this, object);\n};\n\n/**\n * @override\n */\nService.prototype.remove = function remove(object) {\n    if (object instanceof Method) {\n\n        /* istanbul ignore if */\n        if (this.methods[object.name] !== object)\n            throw Error(object + \" is not a member of \" + this);\n\n        delete this.methods[object.name];\n        object.parent = null;\n        return clearCache(this);\n    }\n    return Namespace.prototype.remove.call(this, object);\n};\n\n/**\n * Creates a runtime service using the specified rpc implementation.\n * @param {RPCImpl} rpcImpl RPC implementation\n * @param {boolean} [requestDelimited=false] Whether requests are length-delimited\n * @param {boolean} [responseDelimited=false] Whether responses are length-delimited\n * @returns {rpc.Service} RPC service. Useful where requests and/or responses are streamed.\n */\nService.prototype.create = function create(rpcImpl, requestDelimited, responseDelimited) {\n    var rpcService = new rpc.Service(rpcImpl, requestDelimited, responseDelimited);\n    for (var i = 0, method; i < /* initializes */ this.methodsArray.length; ++i) {\n        var methodName = util.lcFirst((method = this._methodsArray[i]).resolve().name).replace(/[^$\\w_]/g, \"\");\n        rpcService[methodName] = util.codegen([\"r\",\"c\"], util.isReserved(methodName) ? methodName + \"_\" : methodName)(\"return this.rpcCall(m,q,s,r,c)\")({\n            m: method,\n            q: method.resolvedRequestType.ctor,\n            s: method.resolvedResponseType.ctor\n        });\n    }\n    return rpcService;\n};\n", "\"use strict\";\nmodule.exports = Message;\n\nvar util = require(\"./util/minimal\");\n\n/**\n * Constructs a new message instance.\n * @classdesc Abstract runtime message.\n * @constructor\n * @param {Properties<T>} [properties] Properties to set\n * @template T extends object = object\n */\nfunction Message(properties) {\n    // not used internally\n    if (properties)\n        for (var keys = Object.keys(properties), i = 0; i < keys.length; ++i)\n            this[keys[i]] = properties[keys[i]];\n}\n\n/**\n * Reference to the reflected type.\n * @name Message.$type\n * @type {Type}\n * @readonly\n */\n\n/**\n * Reference to the reflected type.\n * @name Message#$type\n * @type {Type}\n * @readonly\n */\n\n/*eslint-disable valid-jsdoc*/\n\n/**\n * Creates a new message of this type using the specified properties.\n * @param {Object.<string,*>} [properties] Properties to set\n * @returns {Message<T>} Message instance\n * @template T extends Message<T>\n * @this Constructor<T>\n */\nMessage.create = function create(properties) {\n    return this.$type.create(properties);\n};\n\n/**\n * Encodes a message of this type.\n * @param {T|Object.<string,*>} message Message to encode\n * @param {Writer} [writer] Writer to use\n * @returns {Writer} Writer\n * @template T extends Message<T>\n * @this Constructor<T>\n */\nMessage.encode = function encode(message, writer) {\n    return this.$type.encode(message, writer);\n};\n\n/**\n * Encodes a message of this type preceeded by its length as a varint.\n * @param {T|Object.<string,*>} message Message to encode\n * @param {Writer} [writer] Writer to use\n * @returns {Writer} Writer\n * @template T extends Message<T>\n * @this Constructor<T>\n */\nMessage.encodeDelimited = function encodeDelimited(message, writer) {\n    return this.$type.encodeDelimited(message, writer);\n};\n\n/**\n * Decodes a message of this type.\n * @name Message.decode\n * @function\n * @param {Reader|Uint8Array} reader Reader or buffer to decode\n * @returns {T} Decoded message\n * @template T extends Message<T>\n * @this Constructor<T>\n */\nMessage.decode = function decode(reader) {\n    return this.$type.decode(reader);\n};\n\n/**\n * Decodes a message of this type preceeded by its length as a varint.\n * @name Message.decodeDelimited\n * @function\n * @param {Reader|Uint8Array} reader Reader or buffer to decode\n * @returns {T} Decoded message\n * @template T extends Message<T>\n * @this Constructor<T>\n */\nMessage.decodeDelimited = function decodeDelimited(reader) {\n    return this.$type.decodeDelimited(reader);\n};\n\n/**\n * Verifies a message of this type.\n * @name Message.verify\n * @function\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {string|null} `null` if valid, otherwise the reason why it is not\n */\nMessage.verify = function verify(message) {\n    return this.$type.verify(message);\n};\n\n/**\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\n * @param {Object.<string,*>} object Plain object\n * @returns {T} Message instance\n * @template T extends Message<T>\n * @this Constructor<T>\n */\nMessage.fromObject = function fromObject(object) {\n    return this.$type.fromObject(object);\n};\n\n/**\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\n * @param {T} message Message instance\n * @param {IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n * @template T extends Message<T>\n * @this Constructor<T>\n */\nMessage.toObject = function toObject(message, options) {\n    return this.$type.toObject(message, options);\n};\n\n/**\n * Converts this message to JSON.\n * @returns {Object.<string,*>} JSON object\n */\nMessage.prototype.toJSON = function toJSON() {\n    return this.$type.toObject(this, util.toJSONOptions);\n};\n\n/*eslint-enable valid-jsdoc*/", "\"use strict\";\nmodule.exports = decoder;\n\nvar Enum    = require(\"./enum\"),\n    types   = require(\"./types\"),\n    util    = require(\"./util\");\n\nfunction missing(field) {\n    return \"missing required '\" + field.name + \"'\";\n}\n\n/**\n * Generates a decoder specific to the specified message type.\n * @param {Type} mtype Message type\n * @returns {Codegen} Codegen instance\n */\nfunction decoder(mtype) {\n    /* eslint-disable no-unexpected-multiline */\n    var gen = util.codegen([\"r\", \"l\", \"e\"], mtype.name + \"$decode\")\n    (\"if(!(r instanceof Reader))\")\n        (\"r=Reader.create(r)\")\n    (\"var c=l===undefined?r.len:r.pos+l,m=new this.ctor\" + (mtype.fieldsArray.filter(function(field) { return field.map; }).length ? \",k,value\" : \"\"))\n    (\"while(r.pos<c){\")\n        (\"var t=r.uint32()\")\n        (\"if(t===e)\")\n            (\"break\")\n        (\"switch(t>>>3){\");\n\n    var i = 0;\n    for (; i < /* initializes */ mtype.fieldsArray.length; ++i) {\n        var field = mtype._fieldsArray[i].resolve(),\n            type  = field.resolvedType instanceof Enum ? \"int32\" : field.type,\n            ref   = \"m\" + util.safeProp(field.name); gen\n            (\"case %i: {\", field.id);\n\n        // Map fields\n        if (field.map) { gen\n                (\"if(%s===util.emptyObject)\", ref)\n                    (\"%s={}\", ref)\n                (\"var c2 = r.uint32()+r.pos\");\n\n            if (types.defaults[field.keyType] !== undefined) gen\n                (\"k=%j\", types.defaults[field.keyType]);\n            else gen\n                (\"k=null\");\n\n            if (types.defaults[type] !== undefined) gen\n                (\"value=%j\", types.defaults[type]);\n            else gen\n                (\"value=null\");\n\n            gen\n                (\"while(r.pos<c2){\")\n                    (\"var tag2=r.uint32()\")\n                    (\"switch(tag2>>>3){\")\n                        (\"case 1: k=r.%s(); break\", field.keyType)\n                        (\"case 2:\");\n\n            if (types.basic[type] === undefined) gen\n                            (\"value=types[%i].decode(r,r.uint32())\", i); // can't be groups\n            else gen\n                            (\"value=r.%s()\", type);\n\n            gen\n                            (\"break\")\n                        (\"default:\")\n                            (\"r.skipType(tag2&7)\")\n                            (\"break\")\n                    (\"}\")\n                (\"}\");\n\n            if (types.long[field.keyType] !== undefined) gen\n                (\"%s[typeof k===\\\"object\\\"?util.longToHash(k):k]=value\", ref);\n            else gen\n                (\"%s[k]=value\", ref);\n\n        // Repeated fields\n        } else if (field.repeated) { gen\n\n                (\"if(!(%s&&%s.length))\", ref, ref)\n                    (\"%s=[]\", ref);\n\n            // Packable (always check for forward and backward compatiblity)\n            if (types.packed[type] !== undefined) gen\n                (\"if((t&7)===2){\")\n                    (\"var c2=r.uint32()+r.pos\")\n                    (\"while(r.pos<c2)\")\n                        (\"%s.push(r.%s())\", ref, type)\n                (\"}else\");\n\n            // Non-packed\n            if (types.basic[type] === undefined) gen(field.delimited\n                    ? \"%s.push(types[%i].decode(r,undefined,((t&~7)|4)))\"\n                    : \"%s.push(types[%i].decode(r,r.uint32()))\", ref, i);\n            else gen\n                    (\"%s.push(r.%s())\", ref, type);\n\n        // Non-repeated\n        } else if (types.basic[type] === undefined) gen(field.delimited\n                ? \"%s=types[%i].decode(r,undefined,((t&~7)|4))\"\n                : \"%s=types[%i].decode(r,r.uint32())\", ref, i);\n        else gen\n                (\"%s=r.%s()\", ref, type);\n        gen\n                (\"break\")\n            (\"}\");\n        // Unknown fields\n    } gen\n            (\"default:\")\n                (\"r.skipType(t&7)\")\n                (\"break\")\n\n        (\"}\")\n    (\"}\");\n\n    // Field presence\n    for (i = 0; i < mtype._fieldsArray.length; ++i) {\n        var rfield = mtype._fieldsArray[i];\n        if (rfield.required) gen\n    (\"if(!m.hasOwnProperty(%j))\", rfield.name)\n        (\"throw util.ProtocolError(%j,{instance:m})\", missing(rfield));\n    }\n\n    return gen\n    (\"return m\");\n    /* eslint-enable no-unexpected-multiline */\n}\n", "\"use strict\";\nmodule.exports = verifier;\n\nvar Enum      = require(\"./enum\"),\n    util      = require(\"./util\");\n\nfunction invalid(field, expected) {\n    return field.name + \": \" + expected + (field.repeated && expected !== \"array\" ? \"[]\" : field.map && expected !== \"object\" ? \"{k:\"+field.keyType+\"}\" : \"\") + \" expected\";\n}\n\n/**\n * Generates a partial value verifier.\n * @param {Codegen} gen Codegen instance\n * @param {Field} field Reflected field\n * @param {number} fieldIndex Field index\n * @param {string} ref Variable reference\n * @returns {Codegen} Codegen instance\n * @ignore\n */\nfunction genVerifyValue(gen, field, fieldIndex, ref) {\n    /* eslint-disable no-unexpected-multiline */\n    if (field.resolvedType) {\n        if (field.resolvedType instanceof Enum) { gen\n            (\"switch(%s){\", ref)\n                (\"default:\")\n                    (\"return%j\", invalid(field, \"enum value\"));\n            for (var keys = Object.keys(field.resolvedType.values), j = 0; j < keys.length; ++j) gen\n                (\"case %i:\", field.resolvedType.values[keys[j]]);\n            gen\n                    (\"break\")\n            (\"}\");\n        } else {\n            gen\n            (\"{\")\n                (\"var e=types[%i].verify(%s);\", fieldIndex, ref)\n                (\"if(e)\")\n                    (\"return%j+e\", field.name + \".\")\n            (\"}\");\n        }\n    } else {\n        switch (field.type) {\n            case \"int32\":\n            case \"uint32\":\n            case \"sint32\":\n            case \"fixed32\":\n            case \"sfixed32\": gen\n                (\"if(!util.isInteger(%s))\", ref)\n                    (\"return%j\", invalid(field, \"integer\"));\n                break;\n            case \"int64\":\n            case \"uint64\":\n            case \"sint64\":\n            case \"fixed64\":\n            case \"sfixed64\": gen\n                (\"if(!util.isInteger(%s)&&!(%s&&util.isInteger(%s.low)&&util.isInteger(%s.high)))\", ref, ref, ref, ref)\n                    (\"return%j\", invalid(field, \"integer|Long\"));\n                break;\n            case \"float\":\n            case \"double\": gen\n                (\"if(typeof %s!==\\\"number\\\")\", ref)\n                    (\"return%j\", invalid(field, \"number\"));\n                break;\n            case \"bool\": gen\n                (\"if(typeof %s!==\\\"boolean\\\")\", ref)\n                    (\"return%j\", invalid(field, \"boolean\"));\n                break;\n            case \"string\": gen\n                (\"if(!util.isString(%s))\", ref)\n                    (\"return%j\", invalid(field, \"string\"));\n                break;\n            case \"bytes\": gen\n                (\"if(!(%s&&typeof %s.length===\\\"number\\\"||util.isString(%s)))\", ref, ref, ref)\n                    (\"return%j\", invalid(field, \"buffer\"));\n                break;\n        }\n    }\n    return gen;\n    /* eslint-enable no-unexpected-multiline */\n}\n\n/**\n * Generates a partial key verifier.\n * @param {Codegen} gen Codegen instance\n * @param {Field} field Reflected field\n * @param {string} ref Variable reference\n * @returns {Codegen} Codegen instance\n * @ignore\n */\nfunction genVerifyKey(gen, field, ref) {\n    /* eslint-disable no-unexpected-multiline */\n    switch (field.keyType) {\n        case \"int32\":\n        case \"uint32\":\n        case \"sint32\":\n        case \"fixed32\":\n        case \"sfixed32\": gen\n            (\"if(!util.key32Re.test(%s))\", ref)\n                (\"return%j\", invalid(field, \"integer key\"));\n            break;\n        case \"int64\":\n        case \"uint64\":\n        case \"sint64\":\n        case \"fixed64\":\n        case \"sfixed64\": gen\n            (\"if(!util.key64Re.test(%s))\", ref) // see comment above: x is ok, d is not\n                (\"return%j\", invalid(field, \"integer|Long key\"));\n            break;\n        case \"bool\": gen\n            (\"if(!util.key2Re.test(%s))\", ref)\n                (\"return%j\", invalid(field, \"boolean key\"));\n            break;\n    }\n    return gen;\n    /* eslint-enable no-unexpected-multiline */\n}\n\n/**\n * Generates a verifier specific to the specified message type.\n * @param {Type} mtype Message type\n * @returns {Codegen} Codegen instance\n */\nfunction verifier(mtype) {\n    /* eslint-disable no-unexpected-multiline */\n\n    var gen = util.codegen([\"m\"], mtype.name + \"$verify\")\n    (\"if(typeof m!==\\\"object\\\"||m===null)\")\n        (\"return%j\", \"object expected\");\n    var oneofs = mtype.oneofsArray,\n        seenFirstField = {};\n    if (oneofs.length) gen\n    (\"var p={}\");\n\n    for (var i = 0; i < /* initializes */ mtype.fieldsArray.length; ++i) {\n        var field = mtype._fieldsArray[i].resolve(),\n            ref   = \"m\" + util.safeProp(field.name);\n\n        if (field.optional) gen\n        (\"if(%s!=null&&m.hasOwnProperty(%j)){\", ref, field.name); // !== undefined && !== null\n\n        // map fields\n        if (field.map) { gen\n            (\"if(!util.isObject(%s))\", ref)\n                (\"return%j\", invalid(field, \"object\"))\n            (\"var k=Object.keys(%s)\", ref)\n            (\"for(var i=0;i<k.length;++i){\");\n                genVerifyKey(gen, field, \"k[i]\");\n                genVerifyValue(gen, field, i, ref + \"[k[i]]\")\n            (\"}\");\n\n        // repeated fields\n        } else if (field.repeated) { gen\n            (\"if(!Array.isArray(%s))\", ref)\n                (\"return%j\", invalid(field, \"array\"))\n            (\"for(var i=0;i<%s.length;++i){\", ref);\n                genVerifyValue(gen, field, i, ref + \"[i]\")\n            (\"}\");\n\n        // required or present fields\n        } else {\n            if (field.partOf) {\n                var oneofProp = util.safeProp(field.partOf.name);\n                if (seenFirstField[field.partOf.name] === 1) gen\n            (\"if(p%s===1)\", oneofProp)\n                (\"return%j\", field.partOf.name + \": multiple values\");\n                seenFirstField[field.partOf.name] = 1;\n                gen\n            (\"p%s=1\", oneofProp);\n            }\n            genVerifyValue(gen, field, i, ref);\n        }\n        if (field.optional) gen\n        (\"}\");\n    }\n    return gen\n    (\"return null\");\n    /* eslint-enable no-unexpected-multiline */\n}", "\"use strict\";\n/**\n * Runtime message from/to plain object converters.\n * @namespace\n */\nvar converter = exports;\n\nvar Enum = require(\"./enum\"),\n    util = require(\"./util\");\n\n/**\n * Generates a partial value fromObject conveter.\n * @param {Codegen} gen Codegen instance\n * @param {Field} field Reflected field\n * @param {number} fieldIndex Field index\n * @param {string} prop Property reference\n * @returns {Codegen} Codegen instance\n * @ignore\n */\nfunction genValuePartial_fromObject(gen, field, fieldIndex, prop) {\n    var defaultAlreadyEmitted = false;\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\n    if (field.resolvedType) {\n        if (field.resolvedType instanceof Enum) { gen\n            (\"switch(d%s){\", prop);\n            for (var values = field.resolvedType.values, keys = Object.keys(values), i = 0; i < keys.length; ++i) {\n                // enum unknown values passthrough\n                if (values[keys[i]] === field.typeDefault && !defaultAlreadyEmitted) { gen\n                    (\"default:\")\n                        (\"if(typeof(d%s)===\\\"number\\\"){m%s=d%s;break}\", prop, prop, prop);\n                    if (!field.repeated) gen // fallback to default value only for\n                                             // arrays, to avoid leaving holes.\n                        (\"break\");           // for non-repeated fields, just ignore\n                    defaultAlreadyEmitted = true;\n                }\n                gen\n                (\"case%j:\", keys[i])\n                (\"case %i:\", values[keys[i]])\n                    (\"m%s=%j\", prop, values[keys[i]])\n                    (\"break\");\n            } gen\n            (\"}\");\n        } else gen\n            (\"if(typeof d%s!==\\\"object\\\")\", prop)\n                (\"throw TypeError(%j)\", field.fullName + \": object expected\")\n            (\"m%s=types[%i].fromObject(d%s)\", prop, fieldIndex, prop);\n    } else {\n        var isUnsigned = false;\n        switch (field.type) {\n            case \"double\":\n            case \"float\": gen\n                (\"m%s=Number(d%s)\", prop, prop); // also catches \"NaN\", \"Infinity\"\n                break;\n            case \"uint32\":\n            case \"fixed32\": gen\n                (\"m%s=d%s>>>0\", prop, prop);\n                break;\n            case \"int32\":\n            case \"sint32\":\n            case \"sfixed32\": gen\n                (\"m%s=d%s|0\", prop, prop);\n                break;\n            case \"uint64\":\n                isUnsigned = true;\n                // eslint-disable-next-line no-fallthrough\n            case \"int64\":\n            case \"sint64\":\n            case \"fixed64\":\n            case \"sfixed64\": gen\n                (\"if(util.Long)\")\n                    (\"(m%s=util.Long.fromValue(d%s)).unsigned=%j\", prop, prop, isUnsigned)\n                (\"else if(typeof d%s===\\\"string\\\")\", prop)\n                    (\"m%s=parseInt(d%s,10)\", prop, prop)\n                (\"else if(typeof d%s===\\\"number\\\")\", prop)\n                    (\"m%s=d%s\", prop, prop)\n                (\"else if(typeof d%s===\\\"object\\\")\", prop)\n                    (\"m%s=new util.LongBits(d%s.low>>>0,d%s.high>>>0).toNumber(%s)\", prop, prop, prop, isUnsigned ? \"true\" : \"\");\n                break;\n            case \"bytes\": gen\n                (\"if(typeof d%s===\\\"string\\\")\", prop)\n                    (\"util.base64.decode(d%s,m%s=util.newBuffer(util.base64.length(d%s)),0)\", prop, prop, prop)\n                (\"else if(d%s.length >= 0)\", prop)\n                    (\"m%s=d%s\", prop, prop);\n                break;\n            case \"string\": gen\n                (\"m%s=String(d%s)\", prop, prop);\n                break;\n            case \"bool\": gen\n                (\"m%s=Boolean(d%s)\", prop, prop);\n                break;\n            /* default: gen\n                (\"m%s=d%s\", prop, prop);\n                break; */\n        }\n    }\n    return gen;\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\n}\n\n/**\n * Generates a plain object to runtime message converter specific to the specified message type.\n * @param {Type} mtype Message type\n * @returns {Codegen} Codegen instance\n */\nconverter.fromObject = function fromObject(mtype) {\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\n    var fields = mtype.fieldsArray;\n    var gen = util.codegen([\"d\"], mtype.name + \"$fromObject\")\n    (\"if(d instanceof this.ctor)\")\n        (\"return d\");\n    if (!fields.length) return gen\n    (\"return new this.ctor\");\n    gen\n    (\"var m=new this.ctor\");\n    for (var i = 0; i < fields.length; ++i) {\n        var field  = fields[i].resolve(),\n            prop   = util.safeProp(field.name);\n\n        // Map fields\n        if (field.map) { gen\n    (\"if(d%s){\", prop)\n        (\"if(typeof d%s!==\\\"object\\\")\", prop)\n            (\"throw TypeError(%j)\", field.fullName + \": object expected\")\n        (\"m%s={}\", prop)\n        (\"for(var ks=Object.keys(d%s),i=0;i<ks.length;++i){\", prop);\n            genValuePartial_fromObject(gen, field, /* not sorted */ i, prop + \"[ks[i]]\")\n        (\"}\")\n    (\"}\");\n\n        // Repeated fields\n        } else if (field.repeated) { gen\n    (\"if(d%s){\", prop)\n        (\"if(!Array.isArray(d%s))\", prop)\n            (\"throw TypeError(%j)\", field.fullName + \": array expected\")\n        (\"m%s=[]\", prop)\n        (\"for(var i=0;i<d%s.length;++i){\", prop);\n            genValuePartial_fromObject(gen, field, /* not sorted */ i, prop + \"[i]\")\n        (\"}\")\n    (\"}\");\n\n        // Non-repeated fields\n        } else {\n            if (!(field.resolvedType instanceof Enum)) gen // no need to test for null/undefined if an enum (uses switch)\n    (\"if(d%s!=null){\", prop); // !== undefined && !== null\n        genValuePartial_fromObject(gen, field, /* not sorted */ i, prop);\n            if (!(field.resolvedType instanceof Enum)) gen\n    (\"}\");\n        }\n    } return gen\n    (\"return m\");\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\n};\n\n/**\n * Generates a partial value toObject converter.\n * @param {Codegen} gen Codegen instance\n * @param {Field} field Reflected field\n * @param {number} fieldIndex Field index\n * @param {string} prop Property reference\n * @returns {Codegen} Codegen instance\n * @ignore\n */\nfunction genValuePartial_toObject(gen, field, fieldIndex, prop) {\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\n    if (field.resolvedType) {\n        if (field.resolvedType instanceof Enum) gen\n            (\"d%s=o.enums===String?(types[%i].values[m%s]===undefined?m%s:types[%i].values[m%s]):m%s\", prop, fieldIndex, prop, prop, fieldIndex, prop, prop);\n        else gen\n            (\"d%s=types[%i].toObject(m%s,o)\", prop, fieldIndex, prop);\n    } else {\n        var isUnsigned = false;\n        switch (field.type) {\n            case \"double\":\n            case \"float\": gen\n            (\"d%s=o.json&&!isFinite(m%s)?String(m%s):m%s\", prop, prop, prop, prop);\n                break;\n            case \"uint64\":\n                isUnsigned = true;\n                // eslint-disable-next-line no-fallthrough\n            case \"int64\":\n            case \"sint64\":\n            case \"fixed64\":\n            case \"sfixed64\": gen\n            (\"if(typeof m%s===\\\"number\\\")\", prop)\n                (\"d%s=o.longs===String?String(m%s):m%s\", prop, prop, prop)\n            (\"else\") // Long-like\n                (\"d%s=o.longs===String?util.Long.prototype.toString.call(m%s):o.longs===Number?new util.LongBits(m%s.low>>>0,m%s.high>>>0).toNumber(%s):m%s\", prop, prop, prop, prop, isUnsigned ? \"true\": \"\", prop);\n                break;\n            case \"bytes\": gen\n            (\"d%s=o.bytes===String?util.base64.encode(m%s,0,m%s.length):o.bytes===Array?Array.prototype.slice.call(m%s):m%s\", prop, prop, prop, prop, prop);\n                break;\n            default: gen\n            (\"d%s=m%s\", prop, prop);\n                break;\n        }\n    }\n    return gen;\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\n}\n\n/**\n * Generates a runtime message to plain object converter specific to the specified message type.\n * @param {Type} mtype Message type\n * @returns {Codegen} Codegen instance\n */\nconverter.toObject = function toObject(mtype) {\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\n    var fields = mtype.fieldsArray.slice().sort(util.compareFieldsById);\n    if (!fields.length)\n        return util.codegen()(\"return {}\");\n    var gen = util.codegen([\"m\", \"o\"], mtype.name + \"$toObject\")\n    (\"if(!o)\")\n        (\"o={}\")\n    (\"var d={}\");\n\n    var repeatedFields = [],\n        mapFields = [],\n        normalFields = [],\n        i = 0;\n    for (; i < fields.length; ++i)\n        if (!fields[i].partOf)\n            ( fields[i].resolve().repeated ? repeatedFields\n            : fields[i].map ? mapFields\n            : normalFields).push(fields[i]);\n\n    if (repeatedFields.length) { gen\n    (\"if(o.arrays||o.defaults){\");\n        for (i = 0; i < repeatedFields.length; ++i) gen\n        (\"d%s=[]\", util.safeProp(repeatedFields[i].name));\n        gen\n    (\"}\");\n    }\n\n    if (mapFields.length) { gen\n    (\"if(o.objects||o.defaults){\");\n        for (i = 0; i < mapFields.length; ++i) gen\n        (\"d%s={}\", util.safeProp(mapFields[i].name));\n        gen\n    (\"}\");\n    }\n\n    if (normalFields.length) { gen\n    (\"if(o.defaults){\");\n        for (i = 0; i < normalFields.length; ++i) {\n            var field = normalFields[i],\n                prop  = util.safeProp(field.name);\n            if (field.resolvedType instanceof Enum) gen\n        (\"d%s=o.enums===String?%j:%j\", prop, field.resolvedType.valuesById[field.typeDefault], field.typeDefault);\n            else if (field.long) gen\n        (\"if(util.Long){\")\n            (\"var n=new util.Long(%i,%i,%j)\", field.typeDefault.low, field.typeDefault.high, field.typeDefault.unsigned)\n            (\"d%s=o.longs===String?n.toString():o.longs===Number?n.toNumber():n\", prop)\n        (\"}else\")\n            (\"d%s=o.longs===String?%j:%i\", prop, field.typeDefault.toString(), field.typeDefault.toNumber());\n            else if (field.bytes) {\n                var arrayDefault = \"[\" + Array.prototype.slice.call(field.typeDefault).join(\",\") + \"]\";\n                gen\n        (\"if(o.bytes===String)d%s=%j\", prop, String.fromCharCode.apply(String, field.typeDefault))\n        (\"else{\")\n            (\"d%s=%s\", prop, arrayDefault)\n            (\"if(o.bytes!==Array)d%s=util.newBuffer(d%s)\", prop, prop)\n        (\"}\");\n            } else gen\n        (\"d%s=%j\", prop, field.typeDefault); // also messages (=null)\n        } gen\n    (\"}\");\n    }\n    var hasKs2 = false;\n    for (i = 0; i < fields.length; ++i) {\n        var field = fields[i],\n            index = mtype._fieldsArray.indexOf(field),\n            prop  = util.safeProp(field.name);\n        if (field.map) {\n            if (!hasKs2) { hasKs2 = true; gen\n    (\"var ks2\");\n            } gen\n    (\"if(m%s&&(ks2=Object.keys(m%s)).length){\", prop, prop)\n        (\"d%s={}\", prop)\n        (\"for(var j=0;j<ks2.length;++j){\");\n            genValuePartial_toObject(gen, field, /* sorted */ index, prop + \"[ks2[j]]\")\n        (\"}\");\n        } else if (field.repeated) { gen\n    (\"if(m%s&&m%s.length){\", prop, prop)\n        (\"d%s=[]\", prop)\n        (\"for(var j=0;j<m%s.length;++j){\", prop);\n            genValuePartial_toObject(gen, field, /* sorted */ index, prop + \"[j]\")\n        (\"}\");\n        } else { gen\n    (\"if(m%s!=null&&m.hasOwnProperty(%j)){\", prop, field.name); // !== undefined && !== null\n        genValuePartial_toObject(gen, field, /* sorted */ index, prop);\n        if (field.partOf) gen\n        (\"if(o.oneofs)\")\n            (\"d%s=%j\", util.safeProp(field.partOf.name), field.name);\n        }\n        gen\n    (\"}\");\n    }\n    return gen\n    (\"return d\");\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\n};\n", "\"use strict\";\n\n/**\n * Wrappers for common types.\n * @type {Object.<string,IWrapper>}\n * @const\n */\nvar wrappers = exports;\n\nvar Message = require(\"./message\");\n\n/**\n * From object converter part of an {@link IWrapper}.\n * @typedef WrapperFromObjectConverter\n * @type {function}\n * @param {Object.<string,*>} object Plain object\n * @returns {Message<{}>} Message instance\n * @this Type\n */\n\n/**\n * To object converter part of an {@link IWrapper}.\n * @typedef WrapperToObjectConverter\n * @type {function}\n * @param {Message<{}>} message Message instance\n * @param {IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n * @this Type\n */\n\n/**\n * Common type wrapper part of {@link wrappers}.\n * @interface IWrapper\n * @property {WrapperFromObjectConverter} [fromObject] From object converter\n * @property {WrapperToObjectConverter} [toObject] To object converter\n */\n\n// Custom wrapper for Any\nwrappers[\".google.protobuf.Any\"] = {\n\n    fromObject: function(object) {\n\n        // unwrap value type if mapped\n        if (object && object[\"@type\"]) {\n             // Only use fully qualified type name after the last '/'\n            var name = object[\"@type\"].substring(object[\"@type\"].lastIndexOf(\"/\") + 1);\n            var type = this.lookup(name);\n            /* istanbul ignore else */\n            if (type) {\n                // type_url does not accept leading \".\"\n                var type_url = object[\"@type\"].charAt(0) === \".\" ?\n                    object[\"@type\"].slice(1) : object[\"@type\"];\n                // type_url prefix is optional, but path seperator is required\n                if (type_url.indexOf(\"/\") === -1) {\n                    type_url = \"/\" + type_url;\n                }\n                return this.create({\n                    type_url: type_url,\n                    value: type.encode(type.fromObject(object)).finish()\n                });\n            }\n        }\n\n        return this.fromObject(object);\n    },\n\n    toObject: function(message, options) {\n\n        // Default prefix\n        var googleApi = \"type.googleapis.com/\";\n        var prefix = \"\";\n        var name = \"\";\n\n        // decode value if requested and unmapped\n        if (options && options.json && message.type_url && message.value) {\n            // Only use fully qualified type name after the last '/'\n            name = message.type_url.substring(message.type_url.lastIndexOf(\"/\") + 1);\n            // Separate the prefix used\n            prefix = message.type_url.substring(0, message.type_url.lastIndexOf(\"/\") + 1);\n            var type = this.lookup(name);\n            /* istanbul ignore else */\n            if (type)\n                message = type.decode(message.value);\n        }\n\n        // wrap value if unmapped\n        if (!(message instanceof this.ctor) && message instanceof Message) {\n            var object = message.$type.toObject(message, options);\n            var messageName = message.$type.fullName[0] === \".\" ?\n                message.$type.fullName.slice(1) : message.$type.fullName;\n            // Default to type.googleapis.com prefix if no prefix is used\n            if (prefix === \"\") {\n                prefix = googleApi;\n            }\n            name = prefix + messageName;\n            object[\"@type\"] = name;\n            return object;\n        }\n\n        return this.toObject(message, options);\n    }\n};\n", "\"use strict\";\nmodule.exports = Type;\n\n// extends Namespace\nvar Namespace = require(\"./namespace\");\n((Type.prototype = Object.create(Namespace.prototype)).constructor = Type).className = \"Type\";\n\nvar Enum      = require(\"./enum\"),\n    OneOf     = require(\"./oneof\"),\n    Field     = require(\"./field\"),\n    MapField  = require(\"./mapfield\"),\n    Service   = require(\"./service\"),\n    Message   = require(\"./message\"),\n    Reader    = require(\"./reader\"),\n    Writer    = require(\"./writer\"),\n    util      = require(\"./util\"),\n    encoder   = require(\"./encoder\"),\n    decoder   = require(\"./decoder\"),\n    verifier  = require(\"./verifier\"),\n    converter = require(\"./converter\"),\n    wrappers  = require(\"./wrappers\");\n\n/**\n * Constructs a new reflected message type instance.\n * @classdesc Reflected message type.\n * @extends NamespaceBase\n * @constructor\n * @param {string} name Message name\n * @param {Object.<string,*>} [options] Declared options\n */\nfunction Type(name, options) {\n    Namespace.call(this, name, options);\n\n    /**\n     * Message fields.\n     * @type {Object.<string,Field>}\n     */\n    this.fields = {};  // toJSON, marker\n\n    /**\n     * Oneofs declared within this namespace, if any.\n     * @type {Object.<string,OneOf>}\n     */\n    this.oneofs = undefined; // toJSON\n\n    /**\n     * Extension ranges, if any.\n     * @type {number[][]}\n     */\n    this.extensions = undefined; // toJSON\n\n    /**\n     * Reserved ranges, if any.\n     * @type {Array.<number[]|string>}\n     */\n    this.reserved = undefined; // toJSON\n\n    /*?\n     * Whether this type is a legacy group.\n     * @type {boolean|undefined}\n     */\n    this.group = undefined; // toJSON\n\n    /**\n     * Cached fields by id.\n     * @type {Object.<number,Field>|null}\n     * @private\n     */\n    this._fieldsById = null;\n\n    /**\n     * Cached fields as an array.\n     * @type {Field[]|null}\n     * @private\n     */\n    this._fieldsArray = null;\n\n    /**\n     * Cached oneofs as an array.\n     * @type {OneOf[]|null}\n     * @private\n     */\n    this._oneofsArray = null;\n\n    /**\n     * Cached constructor.\n     * @type {Constructor<{}>}\n     * @private\n     */\n    this._ctor = null;\n}\n\nObject.defineProperties(Type.prototype, {\n\n    /**\n     * Message fields by id.\n     * @name Type#fieldsById\n     * @type {Object.<number,Field>}\n     * @readonly\n     */\n    fieldsById: {\n        get: function() {\n\n            /* istanbul ignore if */\n            if (this._fieldsById)\n                return this._fieldsById;\n\n            this._fieldsById = {};\n            for (var names = Object.keys(this.fields), i = 0; i < names.length; ++i) {\n                var field = this.fields[names[i]],\n                    id = field.id;\n\n                /* istanbul ignore if */\n                if (this._fieldsById[id])\n                    throw Error(\"duplicate id \" + id + \" in \" + this);\n\n                this._fieldsById[id] = field;\n            }\n            return this._fieldsById;\n        }\n    },\n\n    /**\n     * Fields of this message as an array for iteration.\n     * @name Type#fieldsArray\n     * @type {Field[]}\n     * @readonly\n     */\n    fieldsArray: {\n        get: function() {\n            return this._fieldsArray || (this._fieldsArray = util.toArray(this.fields));\n        }\n    },\n\n    /**\n     * Oneofs of this message as an array for iteration.\n     * @name Type#oneofsArray\n     * @type {OneOf[]}\n     * @readonly\n     */\n    oneofsArray: {\n        get: function() {\n            return this._oneofsArray || (this._oneofsArray = util.toArray(this.oneofs));\n        }\n    },\n\n    /**\n     * The registered constructor, if any registered, otherwise a generic constructor.\n     * Assigning a function replaces the internal constructor. If the function does not extend {@link Message} yet, its prototype will be setup accordingly and static methods will be populated. If it already extends {@link Message}, it will just replace the internal constructor.\n     * @name Type#ctor\n     * @type {Constructor<{}>}\n     */\n    ctor: {\n        get: function() {\n            return this._ctor || (this.ctor = Type.generateConstructor(this)());\n        },\n        set: function(ctor) {\n\n            // Ensure proper prototype\n            var prototype = ctor.prototype;\n            if (!(prototype instanceof Message)) {\n                (ctor.prototype = new Message()).constructor = ctor;\n                util.merge(ctor.prototype, prototype);\n            }\n\n            // Classes and messages reference their reflected type\n            ctor.$type = ctor.prototype.$type = this;\n\n            // Mix in static methods\n            util.merge(ctor, Message, true);\n\n            this._ctor = ctor;\n\n            // Messages have non-enumerable default values on their prototype\n            var i = 0;\n            for (; i < /* initializes */ this.fieldsArray.length; ++i)\n                this._fieldsArray[i].resolve(); // ensures a proper value\n\n            // Messages have non-enumerable getters and setters for each virtual oneof field\n            var ctorProperties = {};\n            for (i = 0; i < /* initializes */ this.oneofsArray.length; ++i)\n                ctorProperties[this._oneofsArray[i].resolve().name] = {\n                    get: util.oneOfGetter(this._oneofsArray[i].oneof),\n                    set: util.oneOfSetter(this._oneofsArray[i].oneof)\n                };\n            if (i)\n                Object.defineProperties(ctor.prototype, ctorProperties);\n        }\n    }\n});\n\n/**\n * Generates a constructor function for the specified type.\n * @param {Type} mtype Message type\n * @returns {Codegen} Codegen instance\n */\nType.generateConstructor = function generateConstructor(mtype) {\n    /* eslint-disable no-unexpected-multiline */\n    var gen = util.codegen([\"p\"], mtype.name);\n    // explicitly initialize mutable object/array fields so that these aren't just inherited from the prototype\n    for (var i = 0, field; i < mtype.fieldsArray.length; ++i)\n        if ((field = mtype._fieldsArray[i]).map) gen\n            (\"this%s={}\", util.safeProp(field.name));\n        else if (field.repeated) gen\n            (\"this%s=[]\", util.safeProp(field.name));\n    return gen\n    (\"if(p)for(var ks=Object.keys(p),i=0;i<ks.length;++i)if(p[ks[i]]!=null)\") // omit undefined or null\n        (\"this[ks[i]]=p[ks[i]]\");\n    /* eslint-enable no-unexpected-multiline */\n};\n\nfunction clearCache(type) {\n    type._fieldsById = type._fieldsArray = type._oneofsArray = null;\n    delete type.encode;\n    delete type.decode;\n    delete type.verify;\n    return type;\n}\n\n/**\n * Message type descriptor.\n * @interface IType\n * @extends INamespace\n * @property {Object.<string,IOneOf>} [oneofs] Oneof descriptors\n * @property {Object.<string,IField>} fields Field descriptors\n * @property {number[][]} [extensions] Extension ranges\n * @property {Array.<number[]|string>} [reserved] Reserved ranges\n * @property {boolean} [group=false] Whether a legacy group or not\n */\n\n/**\n * Creates a message type from a message type descriptor.\n * @param {string} name Message name\n * @param {IType} json Message type descriptor\n * @returns {Type} Created message type\n */\nType.fromJSON = function fromJSON(name, json) {\n    var type = new Type(name, json.options);\n    type.extensions = json.extensions;\n    type.reserved = json.reserved;\n    var names = Object.keys(json.fields),\n        i = 0;\n    for (; i < names.length; ++i)\n        type.add(\n            ( typeof json.fields[names[i]].keyType !== \"undefined\"\n            ? MapField.fromJSON\n            : Field.fromJSON )(names[i], json.fields[names[i]])\n        );\n    if (json.oneofs)\n        for (names = Object.keys(json.oneofs), i = 0; i < names.length; ++i)\n            type.add(OneOf.fromJSON(names[i], json.oneofs[names[i]]));\n    if (json.nested)\n        for (names = Object.keys(json.nested), i = 0; i < names.length; ++i) {\n            var nested = json.nested[names[i]];\n            type.add( // most to least likely\n                ( nested.id !== undefined\n                ? Field.fromJSON\n                : nested.fields !== undefined\n                ? Type.fromJSON\n                : nested.values !== undefined\n                ? Enum.fromJSON\n                : nested.methods !== undefined\n                ? Service.fromJSON\n                : Namespace.fromJSON )(names[i], nested)\n            );\n        }\n    if (json.extensions && json.extensions.length)\n        type.extensions = json.extensions;\n    if (json.reserved && json.reserved.length)\n        type.reserved = json.reserved;\n    if (json.group)\n        type.group = true;\n    if (json.comment)\n        type.comment = json.comment;\n    if (json.edition)\n        type._edition = json.edition;\n    type._defaultEdition = \"proto3\";  // For backwards-compatibility.\n    return type;\n};\n\n/**\n * Converts this message type to a message type descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IType} Message type descriptor\n */\nType.prototype.toJSON = function toJSON(toJSONOptions) {\n    var inherited = Namespace.prototype.toJSON.call(this, toJSONOptions);\n    var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n    return util.toObject([\n        \"edition\"    , this._editionToJSON(),\n        \"options\"    , inherited && inherited.options || undefined,\n        \"oneofs\"     , Namespace.arrayToJSON(this.oneofsArray, toJSONOptions),\n        \"fields\"     , Namespace.arrayToJSON(this.fieldsArray.filter(function(obj) { return !obj.declaringField; }), toJSONOptions) || {},\n        \"extensions\" , this.extensions && this.extensions.length ? this.extensions : undefined,\n        \"reserved\"   , this.reserved && this.reserved.length ? this.reserved : undefined,\n        \"group\"      , this.group || undefined,\n        \"nested\"     , inherited && inherited.nested || undefined,\n        \"comment\"    , keepComments ? this.comment : undefined\n    ]);\n};\n\n/**\n * @override\n */\nType.prototype.resolveAll = function resolveAll() {\n    if (!this._needsRecursiveResolve) return this;\n\n    Namespace.prototype.resolveAll.call(this);\n    var oneofs = this.oneofsArray; i = 0;\n    while (i < oneofs.length)\n        oneofs[i++].resolve();\n    var fields = this.fieldsArray, i = 0;\n    while (i < fields.length)\n        fields[i++].resolve();\n    return this;\n};\n\n/**\n * @override\n */\nType.prototype._resolveFeaturesRecursive = function _resolveFeaturesRecursive(edition) {\n    if (!this._needsRecursiveFeatureResolution) return this;\n\n    edition = this._edition || edition;\n\n    Namespace.prototype._resolveFeaturesRecursive.call(this, edition);\n    this.oneofsArray.forEach(oneof => {\n        oneof._resolveFeatures(edition);\n    });\n    this.fieldsArray.forEach(field => {\n        field._resolveFeatures(edition);\n    });\n    return this;\n};\n\n/**\n * @override\n */\nType.prototype.get = function get(name) {\n    return this.fields[name]\n        || this.oneofs && this.oneofs[name]\n        || this.nested && this.nested[name]\n        || null;\n};\n\n/**\n * Adds a nested object to this type.\n * @param {ReflectionObject} object Nested object to add\n * @returns {Type} `this`\n * @throws {TypeError} If arguments are invalid\n * @throws {Error} If there is already a nested object with this name or, if a field, when there is already a field with this id\n */\nType.prototype.add = function add(object) {\n\n    if (this.get(object.name))\n        throw Error(\"duplicate name '\" + object.name + \"' in \" + this);\n\n    if (object instanceof Field && object.extend === undefined) {\n        // NOTE: Extension fields aren't actual fields on the declaring type, but nested objects.\n        // The root object takes care of adding distinct sister-fields to the respective extended\n        // type instead.\n\n        // avoids calling the getter if not absolutely necessary because it's called quite frequently\n        if (this._fieldsById ? /* istanbul ignore next */ this._fieldsById[object.id] : this.fieldsById[object.id])\n            throw Error(\"duplicate id \" + object.id + \" in \" + this);\n        if (this.isReservedId(object.id))\n            throw Error(\"id \" + object.id + \" is reserved in \" + this);\n        if (this.isReservedName(object.name))\n            throw Error(\"name '\" + object.name + \"' is reserved in \" + this);\n\n        if (object.parent)\n            object.parent.remove(object);\n        this.fields[object.name] = object;\n        object.message = this;\n        object.onAdd(this);\n        return clearCache(this);\n    }\n    if (object instanceof OneOf) {\n        if (!this.oneofs)\n            this.oneofs = {};\n        this.oneofs[object.name] = object;\n        object.onAdd(this);\n        return clearCache(this);\n    }\n    return Namespace.prototype.add.call(this, object);\n};\n\n/**\n * Removes a nested object from this type.\n * @param {ReflectionObject} object Nested object to remove\n * @returns {Type} `this`\n * @throws {TypeError} If arguments are invalid\n * @throws {Error} If `object` is not a member of this type\n */\nType.prototype.remove = function remove(object) {\n    if (object instanceof Field && object.extend === undefined) {\n        // See Type#add for the reason why extension fields are excluded here.\n\n        /* istanbul ignore if */\n        if (!this.fields || this.fields[object.name] !== object)\n            throw Error(object + \" is not a member of \" + this);\n\n        delete this.fields[object.name];\n        object.parent = null;\n        object.onRemove(this);\n        return clearCache(this);\n    }\n    if (object instanceof OneOf) {\n\n        /* istanbul ignore if */\n        if (!this.oneofs || this.oneofs[object.name] !== object)\n            throw Error(object + \" is not a member of \" + this);\n\n        delete this.oneofs[object.name];\n        object.parent = null;\n        object.onRemove(this);\n        return clearCache(this);\n    }\n    return Namespace.prototype.remove.call(this, object);\n};\n\n/**\n * Tests if the specified id is reserved.\n * @param {number} id Id to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nType.prototype.isReservedId = function isReservedId(id) {\n    return Namespace.isReservedId(this.reserved, id);\n};\n\n/**\n * Tests if the specified name is reserved.\n * @param {string} name Name to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nType.prototype.isReservedName = function isReservedName(name) {\n    return Namespace.isReservedName(this.reserved, name);\n};\n\n/**\n * Creates a new message of this type using the specified properties.\n * @param {Object.<string,*>} [properties] Properties to set\n * @returns {Message<{}>} Message instance\n */\nType.prototype.create = function create(properties) {\n    return new this.ctor(properties);\n};\n\n/**\n * Sets up {@link Type#encode|encode}, {@link Type#decode|decode} and {@link Type#verify|verify}.\n * @returns {Type} `this`\n */\nType.prototype.setup = function setup() {\n    // Sets up everything at once so that the prototype chain does not have to be re-evaluated\n    // multiple times (V8, soft-deopt prototype-check).\n\n    var fullName = this.fullName,\n        types    = [];\n    for (var i = 0; i < /* initializes */ this.fieldsArray.length; ++i)\n        types.push(this._fieldsArray[i].resolve().resolvedType);\n\n    // Replace setup methods with type-specific generated functions\n    this.encode = encoder(this)({\n        Writer : Writer,\n        types  : types,\n        util   : util\n    });\n    this.decode = decoder(this)({\n        Reader : Reader,\n        types  : types,\n        util   : util\n    });\n    this.verify = verifier(this)({\n        types : types,\n        util  : util\n    });\n    this.fromObject = converter.fromObject(this)({\n        types : types,\n        util  : util\n    });\n    this.toObject = converter.toObject(this)({\n        types : types,\n        util  : util\n    });\n\n    // Inject custom wrappers for common types\n    var wrapper = wrappers[fullName];\n    if (wrapper) {\n        var originalThis = Object.create(this);\n        // if (wrapper.fromObject) {\n            originalThis.fromObject = this.fromObject;\n            this.fromObject = wrapper.fromObject.bind(originalThis);\n        // }\n        // if (wrapper.toObject) {\n            originalThis.toObject = this.toObject;\n            this.toObject = wrapper.toObject.bind(originalThis);\n        // }\n    }\n\n    return this;\n};\n\n/**\n * Encodes a message of this type. Does not implicitly {@link Type#verify|verify} messages.\n * @param {Message<{}>|Object.<string,*>} message Message instance or plain object\n * @param {Writer} [writer] Writer to encode to\n * @returns {Writer} writer\n */\nType.prototype.encode = function encode_setup(message, writer) {\n    return this.setup().encode(message, writer); // overrides this method\n};\n\n/**\n * Encodes a message of this type preceeded by its byte length as a varint. Does not implicitly {@link Type#verify|verify} messages.\n * @param {Message<{}>|Object.<string,*>} message Message instance or plain object\n * @param {Writer} [writer] Writer to encode to\n * @returns {Writer} writer\n */\nType.prototype.encodeDelimited = function encodeDelimited(message, writer) {\n    return this.encode(message, writer && writer.len ? writer.fork() : writer).ldelim();\n};\n\n/**\n * Decodes a message of this type.\n * @param {Reader|Uint8Array} reader Reader or buffer to decode from\n * @param {number} [length] Length of the message, if known beforehand\n * @returns {Message<{}>} Decoded message\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {util.ProtocolError<{}>} If required fields are missing\n */\nType.prototype.decode = function decode_setup(reader, length) {\n    return this.setup().decode(reader, length); // overrides this method\n};\n\n/**\n * Decodes a message of this type preceeded by its byte length as a varint.\n * @param {Reader|Uint8Array} reader Reader or buffer to decode from\n * @returns {Message<{}>} Decoded message\n * @throws {Error} If the payload is not a reader or valid buffer\n * @throws {util.ProtocolError} If required fields are missing\n */\nType.prototype.decodeDelimited = function decodeDelimited(reader) {\n    if (!(reader instanceof Reader))\n        reader = Reader.create(reader);\n    return this.decode(reader, reader.uint32());\n};\n\n/**\n * Verifies that field values are valid and that required fields are present.\n * @param {Object.<string,*>} message Plain object to verify\n * @returns {null|string} `null` if valid, otherwise the reason why it is not\n */\nType.prototype.verify = function verify_setup(message) {\n    return this.setup().verify(message); // overrides this method\n};\n\n/**\n * Creates a new message of this type from a plain object. Also converts values to their respective internal types.\n * @param {Object.<string,*>} object Plain object to convert\n * @returns {Message<{}>} Message instance\n */\nType.prototype.fromObject = function fromObject(object) {\n    return this.setup().fromObject(object);\n};\n\n/**\n * Conversion options as used by {@link Type#toObject} and {@link Message.toObject}.\n * @interface IConversionOptions\n * @property {Function} [longs] Long conversion type.\n * Valid values are `String` and `Number` (the global types).\n * Defaults to copy the present value, which is a possibly unsafe number without and a {@link Long} with a long library.\n * @property {Function} [enums] Enum value conversion type.\n * Only valid value is `String` (the global type).\n * Defaults to copy the present value, which is the numeric id.\n * @property {Function} [bytes] Bytes value conversion type.\n * Valid values are `Array` and (a base64 encoded) `String` (the global types).\n * Defaults to copy the present value, which usually is a Buffer under node and an Uint8Array in the browser.\n * @property {boolean} [defaults=false] Also sets default values on the resulting object\n * @property {boolean} [arrays=false] Sets empty arrays for missing repeated fields even if `defaults=false`\n * @property {boolean} [objects=false] Sets empty objects for missing map fields even if `defaults=false`\n * @property {boolean} [oneofs=false] Includes virtual oneof properties set to the present field's name, if any\n * @property {boolean} [json=false] Performs additional JSON compatibility conversions, i.e. NaN and Infinity to strings\n */\n\n/**\n * Creates a plain object from a message of this type. Also converts values to other types if specified.\n * @param {Message<{}>} message Message instance\n * @param {IConversionOptions} [options] Conversion options\n * @returns {Object.<string,*>} Plain object\n */\nType.prototype.toObject = function toObject(message, options) {\n    return this.setup().toObject(message, options);\n};\n\n/**\n * Decorator function as returned by {@link Type.d} (TypeScript).\n * @typedef TypeDecorator\n * @type {function}\n * @param {Constructor<T>} target Target constructor\n * @returns {undefined}\n * @template T extends Message<T>\n */\n\n/**\n * Type decorator (TypeScript).\n * @param {string} [typeName] Type name, defaults to the constructor's name\n * @returns {TypeDecorator<T>} Decorator function\n * @template T extends Message<T>\n */\nType.d = function decorateType(typeName) {\n    return function typeDecorator(target) {\n        util.decorateType(target, typeName);\n    };\n};\n", "\"use strict\";\nmodule.exports = Root;\n\n// extends Namespace\nvar Namespace = require(\"./namespace\");\n((Root.prototype = Object.create(Namespace.prototype)).constructor = Root).className = \"Root\";\n\nvar Field   = require(\"./field\"),\n    Enum    = require(\"./enum\"),\n    OneOf   = require(\"./oneof\"),\n    util    = require(\"./util\");\n\nvar Type,   // cyclic\n    parse,  // might be excluded\n    common; // \"\n\n/**\n * Constructs a new root namespace instance.\n * @classdesc Root namespace wrapping all types, enums, services, sub-namespaces etc. that belong together.\n * @extends NamespaceBase\n * @constructor\n * @param {Object.<string,*>} [options] Top level options\n */\nfunction Root(options) {\n    Namespace.call(this, \"\", options);\n\n    /**\n     * Deferred extension fields.\n     * @type {Field[]}\n     */\n    this.deferred = [];\n\n    /**\n     * Resolved file names of loaded files.\n     * @type {string[]}\n     */\n    this.files = [];\n\n    /**\n     * Edition, defaults to proto2 if unspecified.\n     * @type {string}\n     * @private\n     */\n    this._edition = \"proto2\";\n\n    /**\n     * Global lookup cache of fully qualified names.\n     * @type {Object.<string,ReflectionObject>}\n     * @private\n     */\n    this._fullyQualifiedObjects = {};\n}\n\n/**\n * Loads a namespace descriptor into a root namespace.\n * @param {INamespace} json Namespace descriptor\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted\n * @returns {Root} Root namespace\n */\nRoot.fromJSON = function fromJSON(json, root) {\n    if (!root)\n        root = new Root();\n    if (json.options)\n        root.setOptions(json.options);\n    return root.addJSON(json.nested).resolveAll();\n};\n\n/**\n * Resolves the path of an imported file, relative to the importing origin.\n * This method exists so you can override it with your own logic in case your imports are scattered over multiple directories.\n * @function\n * @param {string} origin The file name of the importing file\n * @param {string} target The file name being imported\n * @returns {string|null} Resolved path to `target` or `null` to skip the file\n */\nRoot.prototype.resolvePath = util.path.resolve;\n\n/**\n * Fetch content from file path or url\n * This method exists so you can override it with your own logic.\n * @function\n * @param {string} path File path or url\n * @param {FetchCallback} callback Callback function\n * @returns {undefined}\n */\nRoot.prototype.fetch = util.fetch;\n\n// A symbol-like function to safely signal synchronous loading\n/* istanbul ignore next */\nfunction SYNC() {} // eslint-disable-line no-empty-function\n\n/**\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.\n * @param {string|string[]} filename Names of one or multiple files to load\n * @param {IParseOptions} options Parse options\n * @param {LoadCallback} callback Callback function\n * @returns {undefined}\n */\nRoot.prototype.load = function load(filename, options, callback) {\n    if (typeof options === \"function\") {\n        callback = options;\n        options = undefined;\n    }\n    var self = this;\n    if (!callback) {\n        return util.asPromise(load, self, filename, options);\n    }\n\n    var sync = callback === SYNC; // undocumented\n\n    // Finishes loading by calling the callback (exactly once)\n    function finish(err, root) {\n        /* istanbul ignore if */\n        if (!callback) {\n            return;\n        }\n        if (sync) {\n            throw err;\n        }\n        if (root) {\n            root.resolveAll();\n        }\n        var cb = callback;\n        callback = null;\n        cb(err, root);\n    }\n\n    // Bundled definition existence checking\n    function getBundledFileName(filename) {\n        var idx = filename.lastIndexOf(\"google/protobuf/\");\n        if (idx > -1) {\n            var altname = filename.substring(idx);\n            if (altname in common) return altname;\n        }\n        return null;\n    }\n\n    // Processes a single file\n    function process(filename, source) {\n        try {\n            if (util.isString(source) && source.charAt(0) === \"{\")\n                source = JSON.parse(source);\n            if (!util.isString(source))\n                self.setOptions(source.options).addJSON(source.nested);\n            else {\n                parse.filename = filename;\n                var parsed = parse(source, self, options),\n                    resolved,\n                    i = 0;\n                if (parsed.imports)\n                    for (; i < parsed.imports.length; ++i)\n                        if (resolved = getBundledFileName(parsed.imports[i]) || self.resolvePath(filename, parsed.imports[i]))\n                            fetch(resolved);\n                if (parsed.weakImports)\n                    for (i = 0; i < parsed.weakImports.length; ++i)\n                        if (resolved = getBundledFileName(parsed.weakImports[i]) || self.resolvePath(filename, parsed.weakImports[i]))\n                            fetch(resolved, true);\n            }\n        } catch (err) {\n            finish(err);\n        }\n        if (!sync && !queued) {\n            finish(null, self); // only once anyway\n        }\n    }\n\n    // Fetches a single file\n    function fetch(filename, weak) {\n        filename = getBundledFileName(filename) || filename;\n\n        // Skip if already loaded / attempted\n        if (self.files.indexOf(filename) > -1) {\n            return;\n        }\n        self.files.push(filename);\n\n        // Shortcut bundled definitions\n        if (filename in common) {\n            if (sync) {\n                process(filename, common[filename]);\n            } else {\n                ++queued;\n                setTimeout(function() {\n                    --queued;\n                    process(filename, common[filename]);\n                });\n            }\n            return;\n        }\n\n        // Otherwise fetch from disk or network\n        if (sync) {\n            var source;\n            try {\n                source = util.fs.readFileSync(filename).toString(\"utf8\");\n            } catch (err) {\n                if (!weak)\n                    finish(err);\n                return;\n            }\n            process(filename, source);\n        } else {\n            ++queued;\n            self.fetch(filename, function(err, source) {\n                --queued;\n                /* istanbul ignore if */\n                if (!callback) {\n                    return; // terminated meanwhile\n                }\n                if (err) {\n                    /* istanbul ignore else */\n                    if (!weak)\n                        finish(err);\n                    else if (!queued) // can't be covered reliably\n                        finish(null, self);\n                    return;\n                }\n                process(filename, source);\n            });\n        }\n    }\n    var queued = 0;\n\n    // Assembling the root namespace doesn't require working type\n    // references anymore, so we can load everything in parallel\n    if (util.isString(filename)) {\n        filename = [ filename ];\n    }\n    for (var i = 0, resolved; i < filename.length; ++i)\n        if (resolved = self.resolvePath(\"\", filename[i]))\n            fetch(resolved);\n    if (sync) {\n        self.resolveAll();\n        return self;\n    }\n    if (!queued) {\n        finish(null, self);\n    }\n\n    return self;\n};\n// function load(filename:string, options:IParseOptions, callback:LoadCallback):undefined\n\n/**\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and calls the callback.\n * @function Root#load\n * @param {string|string[]} filename Names of one or multiple files to load\n * @param {LoadCallback} callback Callback function\n * @returns {undefined}\n * @variation 2\n */\n// function load(filename:string, callback:LoadCallback):undefined\n\n/**\n * Loads one or multiple .proto or preprocessed .json files into this root namespace and returns a promise.\n * @function Root#load\n * @param {string|string[]} filename Names of one or multiple files to load\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\n * @returns {Promise<Root>} Promise\n * @variation 3\n */\n// function load(filename:string, [options:IParseOptions]):Promise<Root>\n\n/**\n * Synchronously loads one or multiple .proto or preprocessed .json files into this root namespace (node only).\n * @function Root#loadSync\n * @param {string|string[]} filename Names of one or multiple files to load\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\n * @returns {Root} Root namespace\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\n */\nRoot.prototype.loadSync = function loadSync(filename, options) {\n    if (!util.isNode)\n        throw Error(\"not supported\");\n    return this.load(filename, options, SYNC);\n};\n\n/**\n * @override\n */\nRoot.prototype.resolveAll = function resolveAll() {\n    if (!this._needsRecursiveResolve) return this;\n\n    if (this.deferred.length)\n        throw Error(\"unresolvable extensions: \" + this.deferred.map(function(field) {\n            return \"'extend \" + field.extend + \"' in \" + field.parent.fullName;\n        }).join(\", \"));\n    return Namespace.prototype.resolveAll.call(this);\n};\n\n// only uppercased (and thus conflict-free) children are exposed, see below\nvar exposeRe = /^[A-Z]/;\n\n/**\n * Handles a deferred declaring extension field by creating a sister field to represent it within its extended type.\n * @param {Root} root Root instance\n * @param {Field} field Declaring extension field witin the declaring type\n * @returns {boolean} `true` if successfully added to the extended type, `false` otherwise\n * @inner\n * @ignore\n */\nfunction tryHandleExtension(root, field) {\n    var extendedType = field.parent.lookup(field.extend);\n    if (extendedType) {\n        var sisterField = new Field(field.fullName, field.id, field.type, field.rule, undefined, field.options);\n        //do not allow to extend same field twice to prevent the error\n        if (extendedType.get(sisterField.name)) {\n            return true;\n        }\n        sisterField.declaringField = field;\n        field.extensionField = sisterField;\n        extendedType.add(sisterField);\n        return true;\n    }\n    return false;\n}\n\n/**\n * Called when any object is added to this root or its sub-namespaces.\n * @param {ReflectionObject} object Object added\n * @returns {undefined}\n * @private\n */\nRoot.prototype._handleAdd = function _handleAdd(object) {\n    if (object instanceof Field) {\n\n        if (/* an extension field (implies not part of a oneof) */ object.extend !== undefined && /* not already handled */ !object.extensionField)\n            if (!tryHandleExtension(this, object))\n                this.deferred.push(object);\n\n    } else if (object instanceof Enum) {\n\n        if (exposeRe.test(object.name))\n            object.parent[object.name] = object.values; // expose enum values as property of its parent\n\n    } else if (!(object instanceof OneOf)) /* everything else is a namespace */ {\n\n        if (object instanceof Type) // Try to handle any deferred extensions\n            for (var i = 0; i < this.deferred.length;)\n                if (tryHandleExtension(this, this.deferred[i]))\n                    this.deferred.splice(i, 1);\n                else\n                    ++i;\n        for (var j = 0; j < /* initializes */ object.nestedArray.length; ++j) // recurse into the namespace\n            this._handleAdd(object._nestedArray[j]);\n        if (exposeRe.test(object.name))\n            object.parent[object.name] = object; // expose namespace as property of its parent\n    }\n\n    if (object instanceof Type || object instanceof Enum || object instanceof Field) {\n        // Only store types and enums for quick lookup during resolve.\n        this._fullyQualifiedObjects[object.fullName] = object;\n    }\n\n    // The above also adds uppercased (and thus conflict-free) nested types, services and enums as\n    // properties of namespaces just like static code does. This allows using a .d.ts generated for\n    // a static module with reflection-based solutions where the condition is met.\n};\n\n/**\n * Called when any object is removed from this root or its sub-namespaces.\n * @param {ReflectionObject} object Object removed\n * @returns {undefined}\n * @private\n */\nRoot.prototype._handleRemove = function _handleRemove(object) {\n    if (object instanceof Field) {\n\n        if (/* an extension field */ object.extend !== undefined) {\n            if (/* already handled */ object.extensionField) { // remove its sister field\n                object.extensionField.parent.remove(object.extensionField);\n                object.extensionField = null;\n            } else { // cancel the extension\n                var index = this.deferred.indexOf(object);\n                /* istanbul ignore else */\n                if (index > -1)\n                    this.deferred.splice(index, 1);\n            }\n        }\n\n    } else if (object instanceof Enum) {\n\n        if (exposeRe.test(object.name))\n            delete object.parent[object.name]; // unexpose enum values\n\n    } else if (object instanceof Namespace) {\n\n        for (var i = 0; i < /* initializes */ object.nestedArray.length; ++i) // recurse into the namespace\n            this._handleRemove(object._nestedArray[i]);\n\n        if (exposeRe.test(object.name))\n            delete object.parent[object.name]; // unexpose namespaces\n\n    }\n\n    delete this._fullyQualifiedObjects[object.fullName];\n};\n\n// Sets up cyclic dependencies (called in index-light)\nRoot._configure = function(Type_, parse_, common_) {\n    Type   = Type_;\n    parse  = parse_;\n    common = common_;\n};\n", "\"use strict\";\n\n/**\n * Various utility functions.\n * @namespace\n */\nvar util = module.exports = require(\"./util/minimal\");\n\nvar roots = require(\"./roots\");\n\nvar Type, // cyclic\n    Enum;\n\nutil.codegen = require(\"@protobufjs/codegen\");\nutil.fetch   = require(\"@protobufjs/fetch\");\nutil.path    = require(\"@protobufjs/path\");\n\n/**\n * Node's fs module if available.\n * @type {Object.<string,*>}\n */\nutil.fs = util.inquire(\"fs\");\n\n/**\n * Converts an object's values to an array.\n * @param {Object.<string,*>} object Object to convert\n * @returns {Array.<*>} Converted array\n */\nutil.toArray = function toArray(object) {\n    if (object) {\n        var keys  = Object.keys(object),\n            array = new Array(keys.length),\n            index = 0;\n        while (index < keys.length)\n            array[index] = object[keys[index++]];\n        return array;\n    }\n    return [];\n};\n\n/**\n * Converts an array of keys immediately followed by their respective value to an object, omitting undefined values.\n * @param {Array.<*>} array Array to convert\n * @returns {Object.<string,*>} Converted object\n */\nutil.toObject = function toObject(array) {\n    var object = {},\n        index  = 0;\n    while (index < array.length) {\n        var key = array[index++],\n            val = array[index++];\n        if (val !== undefined)\n            object[key] = val;\n    }\n    return object;\n};\n\nvar safePropBackslashRe = /\\\\/g,\n    safePropQuoteRe     = /\"/g;\n\n/**\n * Tests whether the specified name is a reserved word in JS.\n * @param {string} name Name to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nutil.isReserved = function isReserved(name) {\n    return /^(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$/.test(name);\n};\n\n/**\n * Returns a safe property accessor for the specified property name.\n * @param {string} prop Property name\n * @returns {string} Safe accessor\n */\nutil.safeProp = function safeProp(prop) {\n    if (!/^[$\\w_]+$/.test(prop) || util.isReserved(prop))\n        return \"[\\\"\" + prop.replace(safePropBackslashRe, \"\\\\\\\\\").replace(safePropQuoteRe, \"\\\\\\\"\") + \"\\\"]\";\n    return \".\" + prop;\n};\n\n/**\n * Converts the first character of a string to upper case.\n * @param {string} str String to convert\n * @returns {string} Converted string\n */\nutil.ucFirst = function ucFirst(str) {\n    return str.charAt(0).toUpperCase() + str.substring(1);\n};\n\nvar camelCaseRe = /_([a-z])/g;\n\n/**\n * Converts a string to camel case.\n * @param {string} str String to convert\n * @returns {string} Converted string\n */\nutil.camelCase = function camelCase(str) {\n    return str.substring(0, 1)\n         + str.substring(1)\n               .replace(camelCaseRe, function($0, $1) { return $1.toUpperCase(); });\n};\n\n/**\n * Compares reflected fields by id.\n * @param {Field} a First field\n * @param {Field} b Second field\n * @returns {number} Comparison value\n */\nutil.compareFieldsById = function compareFieldsById(a, b) {\n    return a.id - b.id;\n};\n\n/**\n * Decorator helper for types (TypeScript).\n * @param {Constructor<T>} ctor Constructor function\n * @param {string} [typeName] Type name, defaults to the constructor's name\n * @returns {Type} Reflected type\n * @template T extends Message<T>\n * @property {Root} root Decorators root\n */\nutil.decorateType = function decorateType(ctor, typeName) {\n\n    /* istanbul ignore if */\n    if (ctor.$type) {\n        if (typeName && ctor.$type.name !== typeName) {\n            util.decorateRoot.remove(ctor.$type);\n            ctor.$type.name = typeName;\n            util.decorateRoot.add(ctor.$type);\n        }\n        return ctor.$type;\n    }\n\n    /* istanbul ignore next */\n    if (!Type)\n        Type = require(\"./type\");\n\n    var type = new Type(typeName || ctor.name);\n    util.decorateRoot.add(type);\n    type.ctor = ctor; // sets up .encode, .decode etc.\n    Object.defineProperty(ctor, \"$type\", { value: type, enumerable: false });\n    Object.defineProperty(ctor.prototype, \"$type\", { value: type, enumerable: false });\n    return type;\n};\n\nvar decorateEnumIndex = 0;\n\n/**\n * Decorator helper for enums (TypeScript).\n * @param {Object} object Enum object\n * @returns {Enum} Reflected enum\n */\nutil.decorateEnum = function decorateEnum(object) {\n\n    /* istanbul ignore if */\n    if (object.$type)\n        return object.$type;\n\n    /* istanbul ignore next */\n    if (!Enum)\n        Enum = require(\"./enum\");\n\n    var enm = new Enum(\"Enum\" + decorateEnumIndex++, object);\n    util.decorateRoot.add(enm);\n    Object.defineProperty(object, \"$type\", { value: enm, enumerable: false });\n    return enm;\n};\n\n\n/**\n * Sets the value of a property by property path. If a value already exists, it is turned to an array\n * @param {Object.<string,*>} dst Destination object\n * @param {string} path dot '.' delimited path of the property to set\n * @param {Object} value the value to set\n * @param {boolean|undefined} [ifNotSet] Sets the option only if it isn't currently set\n * @returns {Object.<string,*>} Destination object\n */\nutil.setProperty = function setProperty(dst, path, value, ifNotSet) {\n    function setProp(dst, path, value) {\n        var part = path.shift();\n        if (part === \"__proto__\" || part === \"prototype\") {\n          return dst;\n        }\n        if (path.length > 0) {\n            dst[part] = setProp(dst[part] || {}, path, value);\n        } else {\n            var prevValue = dst[part];\n            if (prevValue && ifNotSet)\n                return dst;\n            if (prevValue)\n                value = [].concat(prevValue).concat(value);\n            dst[part] = value;\n        }\n        return dst;\n    }\n\n    if (typeof dst !== \"object\")\n        throw TypeError(\"dst must be an object\");\n    if (!path)\n        throw TypeError(\"path must be specified\");\n\n    path = path.split(\".\");\n    return setProp(dst, path, value);\n};\n\n/**\n * Decorator root (TypeScript).\n * @name util.decorateRoot\n * @type {Root}\n * @readonly\n */\nObject.defineProperty(util, \"decorateRoot\", {\n    get: function() {\n        return roots[\"decorated\"] || (roots[\"decorated\"] = new (require(\"./root\"))());\n    }\n});\n", "\"use strict\";\n\n/**\n * Common type constants.\n * @namespace\n */\nvar types = exports;\n\nvar util = require(\"./util\");\n\nvar s = [\n    \"double\",   // 0\n    \"float\",    // 1\n    \"int32\",    // 2\n    \"uint32\",   // 3\n    \"sint32\",   // 4\n    \"fixed32\",  // 5\n    \"sfixed32\", // 6\n    \"int64\",    // 7\n    \"uint64\",   // 8\n    \"sint64\",   // 9\n    \"fixed64\",  // 10\n    \"sfixed64\", // 11\n    \"bool\",     // 12\n    \"string\",   // 13\n    \"bytes\"     // 14\n];\n\nfunction bake(values, offset) {\n    var i = 0, o = {};\n    offset |= 0;\n    while (i < values.length) o[s[i + offset]] = values[i++];\n    return o;\n}\n\n/**\n * Basic type wire types.\n * @type {Object.<string,number>}\n * @const\n * @property {number} double=1 Fixed64 wire type\n * @property {number} float=5 Fixed32 wire type\n * @property {number} int32=0 Varint wire type\n * @property {number} uint32=0 Varint wire type\n * @property {number} sint32=0 Varint wire type\n * @property {number} fixed32=5 Fixed32 wire type\n * @property {number} sfixed32=5 Fixed32 wire type\n * @property {number} int64=0 Varint wire type\n * @property {number} uint64=0 Varint wire type\n * @property {number} sint64=0 Varint wire type\n * @property {number} fixed64=1 Fixed64 wire type\n * @property {number} sfixed64=1 Fixed64 wire type\n * @property {number} bool=0 Varint wire type\n * @property {number} string=2 Ldelim wire type\n * @property {number} bytes=2 Ldelim wire type\n */\ntypes.basic = bake([\n    /* double   */ 1,\n    /* float    */ 5,\n    /* int32    */ 0,\n    /* uint32   */ 0,\n    /* sint32   */ 0,\n    /* fixed32  */ 5,\n    /* sfixed32 */ 5,\n    /* int64    */ 0,\n    /* uint64   */ 0,\n    /* sint64   */ 0,\n    /* fixed64  */ 1,\n    /* sfixed64 */ 1,\n    /* bool     */ 0,\n    /* string   */ 2,\n    /* bytes    */ 2\n]);\n\n/**\n * Basic type defaults.\n * @type {Object.<string,*>}\n * @const\n * @property {number} double=0 Double default\n * @property {number} float=0 Float default\n * @property {number} int32=0 Int32 default\n * @property {number} uint32=0 Uint32 default\n * @property {number} sint32=0 Sint32 default\n * @property {number} fixed32=0 Fixed32 default\n * @property {number} sfixed32=0 Sfixed32 default\n * @property {number} int64=0 Int64 default\n * @property {number} uint64=0 Uint64 default\n * @property {number} sint64=0 Sint32 default\n * @property {number} fixed64=0 Fixed64 default\n * @property {number} sfixed64=0 Sfixed64 default\n * @property {boolean} bool=false Bool default\n * @property {string} string=\"\" String default\n * @property {Array.<number>} bytes=Array(0) Bytes default\n * @property {null} message=null Message default\n */\ntypes.defaults = bake([\n    /* double   */ 0,\n    /* float    */ 0,\n    /* int32    */ 0,\n    /* uint32   */ 0,\n    /* sint32   */ 0,\n    /* fixed32  */ 0,\n    /* sfixed32 */ 0,\n    /* int64    */ 0,\n    /* uint64   */ 0,\n    /* sint64   */ 0,\n    /* fixed64  */ 0,\n    /* sfixed64 */ 0,\n    /* bool     */ false,\n    /* string   */ \"\",\n    /* bytes    */ util.emptyArray,\n    /* message  */ null\n]);\n\n/**\n * Basic long type wire types.\n * @type {Object.<string,number>}\n * @const\n * @property {number} int64=0 Varint wire type\n * @property {number} uint64=0 Varint wire type\n * @property {number} sint64=0 Varint wire type\n * @property {number} fixed64=1 Fixed64 wire type\n * @property {number} sfixed64=1 Fixed64 wire type\n */\ntypes.long = bake([\n    /* int64    */ 0,\n    /* uint64   */ 0,\n    /* sint64   */ 0,\n    /* fixed64  */ 1,\n    /* sfixed64 */ 1\n], 7);\n\n/**\n * Allowed types for map keys with their associated wire type.\n * @type {Object.<string,number>}\n * @const\n * @property {number} int32=0 Varint wire type\n * @property {number} uint32=0 Varint wire type\n * @property {number} sint32=0 Varint wire type\n * @property {number} fixed32=5 Fixed32 wire type\n * @property {number} sfixed32=5 Fixed32 wire type\n * @property {number} int64=0 Varint wire type\n * @property {number} uint64=0 Varint wire type\n * @property {number} sint64=0 Varint wire type\n * @property {number} fixed64=1 Fixed64 wire type\n * @property {number} sfixed64=1 Fixed64 wire type\n * @property {number} bool=0 Varint wire type\n * @property {number} string=2 Ldelim wire type\n */\ntypes.mapKey = bake([\n    /* int32    */ 0,\n    /* uint32   */ 0,\n    /* sint32   */ 0,\n    /* fixed32  */ 5,\n    /* sfixed32 */ 5,\n    /* int64    */ 0,\n    /* uint64   */ 0,\n    /* sint64   */ 0,\n    /* fixed64  */ 1,\n    /* sfixed64 */ 1,\n    /* bool     */ 0,\n    /* string   */ 2\n], 2);\n\n/**\n * Allowed types for packed repeated fields with their associated wire type.\n * @type {Object.<string,number>}\n * @const\n * @property {number} double=1 Fixed64 wire type\n * @property {number} float=5 Fixed32 wire type\n * @property {number} int32=0 Varint wire type\n * @property {number} uint32=0 Varint wire type\n * @property {number} sint32=0 Varint wire type\n * @property {number} fixed32=5 Fixed32 wire type\n * @property {number} sfixed32=5 Fixed32 wire type\n * @property {number} int64=0 Varint wire type\n * @property {number} uint64=0 Varint wire type\n * @property {number} sint64=0 Varint wire type\n * @property {number} fixed64=1 Fixed64 wire type\n * @property {number} sfixed64=1 Fixed64 wire type\n * @property {number} bool=0 Varint wire type\n */\ntypes.packed = bake([\n    /* double   */ 1,\n    /* float    */ 5,\n    /* int32    */ 0,\n    /* uint32   */ 0,\n    /* sint32   */ 0,\n    /* fixed32  */ 5,\n    /* sfixed32 */ 5,\n    /* int64    */ 0,\n    /* uint64   */ 0,\n    /* sint64   */ 0,\n    /* fixed64  */ 1,\n    /* sfixed64 */ 1,\n    /* bool     */ 0\n]);\n", "\"use strict\";\nmodule.exports = Field;\n\n// extends ReflectionObject\nvar ReflectionObject = require(\"./object\");\n((Field.prototype = Object.create(ReflectionObject.prototype)).constructor = Field).className = \"Field\";\n\nvar Enum  = require(\"./enum\"),\n    types = require(\"./types\"),\n    util  = require(\"./util\");\n\nvar Type; // cyclic\n\nvar ruleRe = /^required|optional|repeated$/;\n\n/**\n * Constructs a new message field instance. Note that {@link MapField|map fields} have their own class.\n * @name Field\n * @classdesc Reflected message field.\n * @extends FieldBase\n * @constructor\n * @param {string} name Unique name within its namespace\n * @param {number} id Unique id within its namespace\n * @param {string} type Value type\n * @param {string|Object.<string,*>} [rule=\"optional\"] Field rule\n * @param {string|Object.<string,*>} [extend] Extended type if different from parent\n * @param {Object.<string,*>} [options] Declared options\n */\n\n/**\n * Constructs a field from a field descriptor.\n * @param {string} name Field name\n * @param {IField} json Field descriptor\n * @returns {Field} Created field\n * @throws {TypeError} If arguments are invalid\n */\nField.fromJSON = function fromJSON(name, json) {\n    var field = new Field(name, json.id, json.type, json.rule, json.extend, json.options, json.comment);\n    if (json.edition)\n        field._edition = json.edition;\n    field._defaultEdition = \"proto3\";  // For backwards-compatibility.\n    return field;\n};\n\n/**\n * Not an actual constructor. Use {@link Field} instead.\n * @classdesc Base class of all reflected message fields. This is not an actual class but here for the sake of having consistent type definitions.\n * @exports FieldBase\n * @extends ReflectionObject\n * @constructor\n * @param {string} name Unique name within its namespace\n * @param {number} id Unique id within its namespace\n * @param {string} type Value type\n * @param {string|Object.<string,*>} [rule=\"optional\"] Field rule\n * @param {string|Object.<string,*>} [extend] Extended type if different from parent\n * @param {Object.<string,*>} [options] Declared options\n * @param {string} [comment] Comment associated with this field\n */\nfunction Field(name, id, type, rule, extend, options, comment) {\n\n    if (util.isObject(rule)) {\n        comment = extend;\n        options = rule;\n        rule = extend = undefined;\n    } else if (util.isObject(extend)) {\n        comment = options;\n        options = extend;\n        extend = undefined;\n    }\n\n    ReflectionObject.call(this, name, options);\n\n    if (!util.isInteger(id) || id < 0)\n        throw TypeError(\"id must be a non-negative integer\");\n\n    if (!util.isString(type))\n        throw TypeError(\"type must be a string\");\n\n    if (rule !== undefined && !ruleRe.test(rule = rule.toString().toLowerCase()))\n        throw TypeError(\"rule must be a string rule\");\n\n    if (extend !== undefined && !util.isString(extend))\n        throw TypeError(\"extend must be a string\");\n\n    /**\n     * Field rule, if any.\n     * @type {string|undefined}\n     */\n    if (rule === \"proto3_optional\") {\n        rule = \"optional\";\n    }\n    this.rule = rule && rule !== \"optional\" ? rule : undefined; // toJSON\n\n    /**\n     * Field type.\n     * @type {string}\n     */\n    this.type = type; // toJSON\n\n    /**\n     * Unique field id.\n     * @type {number}\n     */\n    this.id = id; // toJSON, marker\n\n    /**\n     * Extended type if different from parent.\n     * @type {string|undefined}\n     */\n    this.extend = extend || undefined; // toJSON\n\n    /**\n     * Whether this field is repeated.\n     * @type {boolean}\n     */\n    this.repeated = rule === \"repeated\";\n\n    /**\n     * Whether this field is a map or not.\n     * @type {boolean}\n     */\n    this.map = false;\n\n    /**\n     * Message this field belongs to.\n     * @type {Type|null}\n     */\n    this.message = null;\n\n    /**\n     * OneOf this field belongs to, if any,\n     * @type {OneOf|null}\n     */\n    this.partOf = null;\n\n    /**\n     * The field type's default value.\n     * @type {*}\n     */\n    this.typeDefault = null;\n\n    /**\n     * The field's default value on prototypes.\n     * @type {*}\n     */\n    this.defaultValue = null;\n\n    /**\n     * Whether this field's value should be treated as a long.\n     * @type {boolean}\n     */\n    this.long = util.Long ? types.long[type] !== undefined : /* istanbul ignore next */ false;\n\n    /**\n     * Whether this field's value is a buffer.\n     * @type {boolean}\n     */\n    this.bytes = type === \"bytes\";\n\n    /**\n     * Resolved type if not a basic type.\n     * @type {Type|Enum|null}\n     */\n    this.resolvedType = null;\n\n    /**\n     * Sister-field within the extended type if a declaring extension field.\n     * @type {Field|null}\n     */\n    this.extensionField = null;\n\n    /**\n     * Sister-field within the declaring namespace if an extended field.\n     * @type {Field|null}\n     */\n    this.declaringField = null;\n\n    /**\n     * Comment for this field.\n     * @type {string|null}\n     */\n    this.comment = comment;\n}\n\n/**\n * Determines whether this field is required.\n * @name Field#required\n * @type {boolean}\n * @readonly\n */\nObject.defineProperty(Field.prototype, \"required\", {\n    get: function() {\n        return this._features.field_presence === \"LEGACY_REQUIRED\";\n    }\n});\n\n/**\n * Determines whether this field is not required.\n * @name Field#optional\n * @type {boolean}\n * @readonly\n */\nObject.defineProperty(Field.prototype, \"optional\", {\n    get: function() {\n        return !this.required;\n    }\n});\n\n/**\n * Determines whether this field uses tag-delimited encoding.  In proto2 this\n * corresponded to group syntax.\n * @name Field#delimited\n * @type {boolean}\n * @readonly\n */\nObject.defineProperty(Field.prototype, \"delimited\", {\n    get: function() {\n        return this.resolvedType instanceof Type &&\n            this._features.message_encoding === \"DELIMITED\";\n    }\n});\n\n/**\n * Determines whether this field is packed. Only relevant when repeated.\n * @name Field#packed\n * @type {boolean}\n * @readonly\n */\nObject.defineProperty(Field.prototype, \"packed\", {\n    get: function() {\n        return this._features.repeated_field_encoding === \"PACKED\";\n    }\n});\n\n/**\n * Determines whether this field tracks presence.\n * @name Field#hasPresence\n * @type {boolean}\n * @readonly\n */\nObject.defineProperty(Field.prototype, \"hasPresence\", {\n    get: function() {\n        if (this.repeated || this.map) {\n            return false;\n        }\n        return this.partOf || // oneofs\n            this.declaringField || this.extensionField || // extensions\n            this._features.field_presence !== \"IMPLICIT\";\n    }\n});\n\n/**\n * @override\n */\nField.prototype.setOption = function setOption(name, value, ifNotSet) {\n    return ReflectionObject.prototype.setOption.call(this, name, value, ifNotSet);\n};\n\n/**\n * Field descriptor.\n * @interface IField\n * @property {string} [rule=\"optional\"] Field rule\n * @property {string} type Field type\n * @property {number} id Field id\n * @property {Object.<string,*>} [options] Field options\n */\n\n/**\n * Extension field descriptor.\n * @interface IExtensionField\n * @extends IField\n * @property {string} extend Extended type\n */\n\n/**\n * Converts this field to a field descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IField} Field descriptor\n */\nField.prototype.toJSON = function toJSON(toJSONOptions) {\n    var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n    return util.toObject([\n        \"edition\" , this._editionToJSON(),\n        \"rule\"    , this.rule !== \"optional\" && this.rule || undefined,\n        \"type\"    , this.type,\n        \"id\"      , this.id,\n        \"extend\"  , this.extend,\n        \"options\" , this.options,\n        \"comment\" , keepComments ? this.comment : undefined\n    ]);\n};\n\n/**\n * Resolves this field's type references.\n * @returns {Field} `this`\n * @throws {Error} If any reference cannot be resolved\n */\nField.prototype.resolve = function resolve() {\n\n    if (this.resolved)\n        return this;\n\n    if ((this.typeDefault = types.defaults[this.type]) === undefined) { // if not a basic type, resolve it\n        this.resolvedType = (this.declaringField ? this.declaringField.parent : this.parent).lookupTypeOrEnum(this.type);\n        if (this.resolvedType instanceof Type)\n            this.typeDefault = null;\n        else // instanceof Enum\n            this.typeDefault = this.resolvedType.values[Object.keys(this.resolvedType.values)[0]]; // first defined\n    } else if (this.options && this.options.proto3_optional) {\n        // proto3 scalar value marked optional; should default to null\n        this.typeDefault = null;\n    }\n\n    // use explicitly set default value if present\n    if (this.options && this.options[\"default\"] != null) {\n        this.typeDefault = this.options[\"default\"];\n        if (this.resolvedType instanceof Enum && typeof this.typeDefault === \"string\")\n            this.typeDefault = this.resolvedType.values[this.typeDefault];\n    }\n\n    // remove unnecessary options\n    if (this.options) {\n        if (this.options.packed !== undefined && this.resolvedType && !(this.resolvedType instanceof Enum))\n            delete this.options.packed;\n        if (!Object.keys(this.options).length)\n            this.options = undefined;\n    }\n\n    // convert to internal data type if necesssary\n    if (this.long) {\n        this.typeDefault = util.Long.fromNumber(this.typeDefault, this.type.charAt(0) === \"u\");\n\n        /* istanbul ignore else */\n        if (Object.freeze)\n            Object.freeze(this.typeDefault); // long instances are meant to be immutable anyway (i.e. use small int cache that even requires it)\n\n    } else if (this.bytes && typeof this.typeDefault === \"string\") {\n        var buf;\n        if (util.base64.test(this.typeDefault))\n            util.base64.decode(this.typeDefault, buf = util.newBuffer(util.base64.length(this.typeDefault)), 0);\n        else\n            util.utf8.write(this.typeDefault, buf = util.newBuffer(util.utf8.length(this.typeDefault)), 0);\n        this.typeDefault = buf;\n    }\n\n    // take special care of maps and repeated fields\n    if (this.map)\n        this.defaultValue = util.emptyObject;\n    else if (this.repeated)\n        this.defaultValue = util.emptyArray;\n    else\n        this.defaultValue = this.typeDefault;\n\n    // ensure proper value on prototype\n    if (this.parent instanceof Type)\n        this.parent.ctor.prototype[this.name] = this.defaultValue;\n\n    return ReflectionObject.prototype.resolve.call(this);\n};\n\n/**\n * Infers field features from legacy syntax that may have been specified differently.\n * in older editions.\n * @param {string|undefined} edition The edition this proto is on, or undefined if pre-editions\n * @returns {object} The feature values to override\n */\nField.prototype._inferLegacyProtoFeatures = function _inferLegacyProtoFeatures(edition) {\n    if (edition !== \"proto2\" && edition !== \"proto3\") {\n        return {};\n    }\n\n    var features = {};\n\n    if (this.rule === \"required\") {\n        features.field_presence = \"LEGACY_REQUIRED\";\n    }\n    if (this.parent && types.defaults[this.type] === undefined) {\n        // We can't use resolvedType because types may not have been resolved yet.  However,\n        // legacy groups are always in the same scope as the field so we don't have to do a\n        // full scan of the tree.\n        var type = this.parent.get(this.type.split(\".\").pop());\n        if (type && type instanceof Type && type.group) {\n            features.message_encoding = \"DELIMITED\";\n        }\n    }\n    if (this.getOption(\"packed\") === true) {\n        features.repeated_field_encoding = \"PACKED\";\n    } else if (this.getOption(\"packed\") === false) {\n        features.repeated_field_encoding = \"EXPANDED\";\n    }\n    return features;\n};\n\n/**\n * @override\n */\nField.prototype._resolveFeatures = function _resolveFeatures(edition) {\n    return ReflectionObject.prototype._resolveFeatures.call(this, this._edition || edition);\n};\n\n/**\n * Decorator function as returned by {@link Field.d} and {@link MapField.d} (TypeScript).\n * @typedef FieldDecorator\n * @type {function}\n * @param {Object} prototype Target prototype\n * @param {string} fieldName Field name\n * @returns {undefined}\n */\n\n/**\n * Field decorator (TypeScript).\n * @name Field.d\n * @function\n * @param {number} fieldId Field id\n * @param {\"double\"|\"float\"|\"int32\"|\"uint32\"|\"sint32\"|\"fixed32\"|\"sfixed32\"|\"int64\"|\"uint64\"|\"sint64\"|\"fixed64\"|\"sfixed64\"|\"string\"|\"bool\"|\"bytes\"|Object} fieldType Field type\n * @param {\"optional\"|\"required\"|\"repeated\"} [fieldRule=\"optional\"] Field rule\n * @param {T} [defaultValue] Default value\n * @returns {FieldDecorator} Decorator function\n * @template T extends number | number[] | Long | Long[] | string | string[] | boolean | boolean[] | Uint8Array | Uint8Array[] | Buffer | Buffer[]\n */\nField.d = function decorateField(fieldId, fieldType, fieldRule, defaultValue) {\n\n    // submessage: decorate the submessage and use its name as the type\n    if (typeof fieldType === \"function\")\n        fieldType = util.decorateType(fieldType).name;\n\n    // enum reference: create a reflected copy of the enum and keep reuseing it\n    else if (fieldType && typeof fieldType === \"object\")\n        fieldType = util.decorateEnum(fieldType).name;\n\n    return function fieldDecorator(prototype, fieldName) {\n        util.decorateType(prototype.constructor)\n            .add(new Field(fieldName, fieldId, fieldType, fieldRule, { \"default\": defaultValue }));\n    };\n};\n\n/**\n * Field decorator (TypeScript).\n * @name Field.d\n * @function\n * @param {number} fieldId Field id\n * @param {Constructor<T>|string} fieldType Field type\n * @param {\"optional\"|\"required\"|\"repeated\"} [fieldRule=\"optional\"] Field rule\n * @returns {FieldDecorator} Decorator function\n * @template T extends Message<T>\n * @variation 2\n */\n// like Field.d but without a default value\n\n// Sets up cyclic dependencies (called in index-light)\nField._configure = function configure(Type_) {\n    Type = Type_;\n};\n", "\"use strict\";\nmodule.exports = OneOf;\n\n// extends ReflectionObject\nvar ReflectionObject = require(\"./object\");\n((OneOf.prototype = Object.create(ReflectionObject.prototype)).constructor = OneOf).className = \"OneOf\";\n\nvar Field = require(\"./field\"),\n    util  = require(\"./util\");\n\n/**\n * Constructs a new oneof instance.\n * @classdesc Reflected oneof.\n * @extends ReflectionObject\n * @constructor\n * @param {string} name Oneof name\n * @param {string[]|Object.<string,*>} [fieldNames] Field names\n * @param {Object.<string,*>} [options] Declared options\n * @param {string} [comment] Comment associated with this field\n */\nfunction OneOf(name, fieldNames, options, comment) {\n    if (!Array.isArray(fieldNames)) {\n        options = fieldNames;\n        fieldNames = undefined;\n    }\n    ReflectionObject.call(this, name, options);\n\n    /* istanbul ignore if */\n    if (!(fieldNames === undefined || Array.isArray(fieldNames)))\n        throw TypeError(\"fieldNames must be an Array\");\n\n    /**\n     * Field names that belong to this oneof.\n     * @type {string[]}\n     */\n    this.oneof = fieldNames || []; // toJSON, marker\n\n    /**\n     * Fields that belong to this oneof as an array for iteration.\n     * @type {Field[]}\n     * @readonly\n     */\n    this.fieldsArray = []; // declared readonly for conformance, possibly not yet added to parent\n\n    /**\n     * Comment for this field.\n     * @type {string|null}\n     */\n    this.comment = comment;\n}\n\n/**\n * Oneof descriptor.\n * @interface IOneOf\n * @property {Array.<string>} oneof Oneof field names\n * @property {Object.<string,*>} [options] Oneof options\n */\n\n/**\n * Constructs a oneof from a oneof descriptor.\n * @param {string} name Oneof name\n * @param {IOneOf} json Oneof descriptor\n * @returns {OneOf} Created oneof\n * @throws {TypeError} If arguments are invalid\n */\nOneOf.fromJSON = function fromJSON(name, json) {\n    return new OneOf(name, json.oneof, json.options, json.comment);\n};\n\n/**\n * Converts this oneof to a oneof descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IOneOf} Oneof descriptor\n */\nOneOf.prototype.toJSON = function toJSON(toJSONOptions) {\n    var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n    return util.toObject([\n        \"options\" , this.options,\n        \"oneof\"   , this.oneof,\n        \"comment\" , keepComments ? this.comment : undefined\n    ]);\n};\n\n/**\n * Adds the fields of the specified oneof to the parent if not already done so.\n * @param {OneOf} oneof The oneof\n * @returns {undefined}\n * @inner\n * @ignore\n */\nfunction addFieldsToParent(oneof) {\n    if (oneof.parent)\n        for (var i = 0; i < oneof.fieldsArray.length; ++i)\n            if (!oneof.fieldsArray[i].parent)\n                oneof.parent.add(oneof.fieldsArray[i]);\n}\n\n/**\n * Adds a field to this oneof and removes it from its current parent, if any.\n * @param {Field} field Field to add\n * @returns {OneOf} `this`\n */\nOneOf.prototype.add = function add(field) {\n\n    /* istanbul ignore if */\n    if (!(field instanceof Field))\n        throw TypeError(\"field must be a Field\");\n\n    if (field.parent && field.parent !== this.parent)\n        field.parent.remove(field);\n    this.oneof.push(field.name);\n    this.fieldsArray.push(field);\n    field.partOf = this; // field.parent remains null\n    addFieldsToParent(this);\n    return this;\n};\n\n/**\n * Removes a field from this oneof and puts it back to the oneof's parent.\n * @param {Field} field Field to remove\n * @returns {OneOf} `this`\n */\nOneOf.prototype.remove = function remove(field) {\n\n    /* istanbul ignore if */\n    if (!(field instanceof Field))\n        throw TypeError(\"field must be a Field\");\n\n    var index = this.fieldsArray.indexOf(field);\n\n    /* istanbul ignore if */\n    if (index < 0)\n        throw Error(field + \" is not a member of \" + this);\n\n    this.fieldsArray.splice(index, 1);\n    index = this.oneof.indexOf(field.name);\n\n    /* istanbul ignore else */\n    if (index > -1) // theoretical\n        this.oneof.splice(index, 1);\n\n    field.partOf = null;\n    return this;\n};\n\n/**\n * @override\n */\nOneOf.prototype.onAdd = function onAdd(parent) {\n    ReflectionObject.prototype.onAdd.call(this, parent);\n    var self = this;\n    // Collect present fields\n    for (var i = 0; i < this.oneof.length; ++i) {\n        var field = parent.get(this.oneof[i]);\n        if (field && !field.partOf) {\n            field.partOf = self;\n            self.fieldsArray.push(field);\n        }\n    }\n    // Add not yet present fields\n    addFieldsToParent(this);\n};\n\n/**\n * @override\n */\nOneOf.prototype.onRemove = function onRemove(parent) {\n    for (var i = 0, field; i < this.fieldsArray.length; ++i)\n        if ((field = this.fieldsArray[i]).parent)\n            field.parent.remove(field);\n    ReflectionObject.prototype.onRemove.call(this, parent);\n};\n\n/**\n * Determines whether this field corresponds to a synthetic oneof created for\n * a proto3 optional field.  No behavioral logic should depend on this, but it\n * can be relevant for reflection.\n * @name OneOf#isProto3Optional\n * @type {boolean}\n * @readonly\n */\nObject.defineProperty(OneOf.prototype, \"isProto3Optional\", {\n    get: function() {\n        if (this.fieldsArray == null || this.fieldsArray.length !== 1) {\n            return false;\n        }\n\n        var field = this.fieldsArray[0];\n        return field.options != null && field.options[\"proto3_optional\"] === true;\n    }\n});\n\n/**\n * Decorator function as returned by {@link OneOf.d} (TypeScript).\n * @typedef OneOfDecorator\n * @type {function}\n * @param {Object} prototype Target prototype\n * @param {string} oneofName OneOf name\n * @returns {undefined}\n */\n\n/**\n * OneOf decorator (TypeScript).\n * @function\n * @param {...string} fieldNames Field names\n * @returns {OneOfDecorator} Decorator function\n * @template T extends string\n */\nOneOf.d = function decorateOneOf() {\n    var fieldNames = new Array(arguments.length),\n        index = 0;\n    while (index < arguments.length)\n        fieldNames[index] = arguments[index++];\n    return function oneOfDecorator(prototype, oneofName) {\n        util.decorateType(prototype.constructor)\n            .add(new OneOf(oneofName, fieldNames));\n        Object.defineProperty(prototype, oneofName, {\n            get: util.oneOfGetter(fieldNames),\n            set: util.oneOfSetter(fieldNames)\n        });\n    };\n};\n", "\"use strict\";\nmodule.exports = ReflectionObject;\n\nReflectionObject.className = \"ReflectionObject\";\n\nconst OneOf = require(\"./oneof\");\nvar util = require(\"./util\");\n\nvar Root; // cyclic\n\n/* eslint-disable no-warning-comments */\n// TODO: Replace with embedded proto.\nvar editions2023Defaults = {enum_type: \"OPEN\", field_presence: \"EXPLICIT\", json_format: \"ALLOW\", message_encoding: \"LENGTH_PREFIXED\", repeated_field_encoding: \"PACKED\", utf8_validation: \"VERIFY\"};\nvar proto2Defaults = {enum_type: \"CLOSED\", field_presence: \"EXPLICIT\", json_format: \"LEGACY_BEST_EFFORT\", message_encoding: \"LENGTH_PREFIXED\", repeated_field_encoding: \"EXPANDED\", utf8_validation: \"NONE\"};\nvar proto3Defaults = {enum_type: \"OPEN\", field_presence: \"IMPLICIT\", json_format: \"ALLOW\", message_encoding: \"LENGTH_PREFIXED\", repeated_field_encoding: \"PACKED\", utf8_validation: \"VERIFY\"};\n\n/**\n * Constructs a new reflection object instance.\n * @classdesc Base class of all reflection objects.\n * @constructor\n * @param {string} name Object name\n * @param {Object.<string,*>} [options] Declared options\n * @abstract\n */\nfunction ReflectionObject(name, options) {\n\n    if (!util.isString(name))\n        throw TypeError(\"name must be a string\");\n\n    if (options && !util.isObject(options))\n        throw TypeError(\"options must be an object\");\n\n    /**\n     * Options.\n     * @type {Object.<string,*>|undefined}\n     */\n    this.options = options; // toJSON\n\n    /**\n     * Parsed Options.\n     * @type {Array.<Object.<string,*>>|undefined}\n     */\n    this.parsedOptions = null;\n\n    /**\n     * Unique name within its namespace.\n     * @type {string}\n     */\n    this.name = name;\n\n    /**\n     * The edition specified for this object.  Only relevant for top-level objects.\n     * @type {string}\n     * @private\n     */\n    this._edition = null;\n\n    /**\n     * The default edition to use for this object if none is specified.  For legacy reasons,\n     * this is proto2 except in the JSON parsing case where it was proto3.\n     * @type {string}\n     * @private\n     */\n    this._defaultEdition = \"proto2\";\n\n    /**\n     * Resolved Features.\n     * @type {object}\n     * @private\n     */\n    this._features = {};\n\n    /**\n     * Whether or not features have been resolved.\n     * @type {boolean}\n     * @private\n     */\n    this._featuresResolved = false;\n\n    /**\n     * Parent namespace.\n     * @type {Namespace|null}\n     */\n    this.parent = null;\n\n    /**\n     * Whether already resolved or not.\n     * @type {boolean}\n     */\n    this.resolved = false;\n\n    /**\n     * Comment text, if any.\n     * @type {string|null}\n     */\n    this.comment = null;\n\n    /**\n     * Defining file name.\n     * @type {string|null}\n     */\n    this.filename = null;\n}\n\nObject.defineProperties(ReflectionObject.prototype, {\n\n    /**\n     * Reference to the root namespace.\n     * @name ReflectionObject#root\n     * @type {Root}\n     * @readonly\n     */\n    root: {\n        get: function() {\n            var ptr = this;\n            while (ptr.parent !== null)\n                ptr = ptr.parent;\n            return ptr;\n        }\n    },\n\n    /**\n     * Full name including leading dot.\n     * @name ReflectionObject#fullName\n     * @type {string}\n     * @readonly\n     */\n    fullName: {\n        get: function() {\n            var path = [ this.name ],\n                ptr = this.parent;\n            while (ptr) {\n                path.unshift(ptr.name);\n                ptr = ptr.parent;\n            }\n            return path.join(\".\");\n        }\n    }\n});\n\n/**\n * Converts this reflection object to its descriptor representation.\n * @returns {Object.<string,*>} Descriptor\n * @abstract\n */\nReflectionObject.prototype.toJSON = /* istanbul ignore next */ function toJSON() {\n    throw Error(); // not implemented, shouldn't happen\n};\n\n/**\n * Called when this object is added to a parent.\n * @param {ReflectionObject} parent Parent added to\n * @returns {undefined}\n */\nReflectionObject.prototype.onAdd = function onAdd(parent) {\n    if (this.parent && this.parent !== parent)\n        this.parent.remove(this);\n    this.parent = parent;\n    this.resolved = false;\n    var root = parent.root;\n    if (root instanceof Root)\n        root._handleAdd(this);\n};\n\n/**\n * Called when this object is removed from a parent.\n * @param {ReflectionObject} parent Parent removed from\n * @returns {undefined}\n */\nReflectionObject.prototype.onRemove = function onRemove(parent) {\n    var root = parent.root;\n    if (root instanceof Root)\n        root._handleRemove(this);\n    this.parent = null;\n    this.resolved = false;\n};\n\n/**\n * Resolves this objects type references.\n * @returns {ReflectionObject} `this`\n */\nReflectionObject.prototype.resolve = function resolve() {\n    if (this.resolved)\n        return this;\n    if (this.root instanceof Root)\n        this.resolved = true; // only if part of a root\n    return this;\n};\n\n/**\n * Resolves this objects editions features.\n * @param {string} edition The edition we're currently resolving for.\n * @returns {ReflectionObject} `this`\n */\nReflectionObject.prototype._resolveFeaturesRecursive = function _resolveFeaturesRecursive(edition) {\n    return this._resolveFeatures(this._edition || edition);\n};\n\n/**\n * Resolves child features from parent features\n * @param {string} edition The edition we're currently resolving for.\n * @returns {undefined}\n */\nReflectionObject.prototype._resolveFeatures = function _resolveFeatures(edition) {\n    if (this._featuresResolved) {\n        return;\n    }\n\n    var defaults = {};\n\n    /* istanbul ignore if */\n    if (!edition) {\n        throw new Error(\"Unknown edition for \" + this.fullName);\n    }\n\n    var protoFeatures = Object.assign(this.options ? Object.assign({},  this.options.features) : {},\n        this._inferLegacyProtoFeatures(edition));\n\n    if (this._edition) {\n        // For a namespace marked with a specific edition, reset defaults.\n        /* istanbul ignore else */\n        if (edition === \"proto2\") {\n            defaults = Object.assign({}, proto2Defaults);\n        } else if (edition === \"proto3\") {\n            defaults = Object.assign({}, proto3Defaults);\n        } else if (edition === \"2023\") {\n            defaults = Object.assign({}, editions2023Defaults);\n        } else {\n            throw new Error(\"Unknown edition: \" + edition);\n        }\n        this._features = Object.assign(defaults, protoFeatures || {});\n        this._featuresResolved = true;\n        return;\n    }\n\n    // fields in Oneofs aren't actually children of them, so we have to\n    // special-case it\n    /* istanbul ignore else */\n    if (this.partOf instanceof OneOf) {\n        var lexicalParentFeaturesCopy = Object.assign({}, this.partOf._features);\n        this._features = Object.assign(lexicalParentFeaturesCopy, protoFeatures || {});\n    } else if (this.declaringField) {\n        // Skip feature resolution of sister fields.\n    } else if (this.parent) {\n        var parentFeaturesCopy = Object.assign({}, this.parent._features);\n        this._features = Object.assign(parentFeaturesCopy, protoFeatures || {});\n    } else {\n        throw new Error(\"Unable to find a parent for \" + this.fullName);\n    }\n    if (this.extensionField) {\n        // Sister fields should have the same features as their extensions.\n        this.extensionField._features = this._features;\n    }\n    this._featuresResolved = true;\n};\n\n/**\n * Infers features from legacy syntax that may have been specified differently.\n * in older editions.\n * @param {string|undefined} edition The edition this proto is on, or undefined if pre-editions\n * @returns {object} The feature values to override\n */\nReflectionObject.prototype._inferLegacyProtoFeatures = function _inferLegacyProtoFeatures(/*edition*/) {\n    return {};\n};\n\n/**\n * Gets an option value.\n * @param {string} name Option name\n * @returns {*} Option value or `undefined` if not set\n */\nReflectionObject.prototype.getOption = function getOption(name) {\n    if (this.options)\n        return this.options[name];\n    return undefined;\n};\n\n/**\n * Sets an option.\n * @param {string} name Option name\n * @param {*} value Option value\n * @param {boolean|undefined} [ifNotSet] Sets the option only if it isn't currently set\n * @returns {ReflectionObject} `this`\n */\nReflectionObject.prototype.setOption = function setOption(name, value, ifNotSet) {\n    if (!this.options)\n        this.options = {};\n    if (/^features\\./.test(name)) {\n        util.setProperty(this.options, name, value, ifNotSet);\n    } else if (!ifNotSet || this.options[name] === undefined) {\n        if (this.getOption(name) !== value) this.resolved = false;\n        this.options[name] = value;\n    }\n\n    return this;\n};\n\n/**\n * Sets a parsed option.\n * @param {string} name parsed Option name\n * @param {*} value Option value\n * @param {string} propName dot '.' delimited full path of property within the option to set. if undefined\\empty, will add a new option with that value\n * @returns {ReflectionObject} `this`\n */\nReflectionObject.prototype.setParsedOption = function setParsedOption(name, value, propName) {\n    if (!this.parsedOptions) {\n        this.parsedOptions = [];\n    }\n    var parsedOptions = this.parsedOptions;\n    if (propName) {\n        // If setting a sub property of an option then try to merge it\n        // with an existing option\n        var opt = parsedOptions.find(function (opt) {\n            return Object.prototype.hasOwnProperty.call(opt, name);\n        });\n        if (opt) {\n            // If we found an existing option - just merge the property value\n            // (If it's a feature, will just write over)\n            var newValue = opt[name];\n            util.setProperty(newValue, propName, value);\n        } else {\n            // otherwise, create a new option, set its property and add it to the list\n            opt = {};\n            opt[name] = util.setProperty({}, propName, value);\n            parsedOptions.push(opt);\n        }\n    } else {\n        // Always create a new option when setting the value of the option itself\n        var newOpt = {};\n        newOpt[name] = value;\n        parsedOptions.push(newOpt);\n    }\n\n    return this;\n};\n\n/**\n * Sets multiple options.\n * @param {Object.<string,*>} options Options to set\n * @param {boolean} [ifNotSet] Sets an option only if it isn't currently set\n * @returns {ReflectionObject} `this`\n */\nReflectionObject.prototype.setOptions = function setOptions(options, ifNotSet) {\n    if (options)\n        for (var keys = Object.keys(options), i = 0; i < keys.length; ++i)\n            this.setOption(keys[i], options[keys[i]], ifNotSet);\n    return this;\n};\n\n/**\n * Converts this instance to its string representation.\n * @returns {string} Class name[, space, full name]\n */\nReflectionObject.prototype.toString = function toString() {\n    var className = this.constructor.className,\n        fullName  = this.fullName;\n    if (fullName.length)\n        return className + \" \" + fullName;\n    return className;\n};\n\n/**\n * Converts the edition this object is pinned to for JSON format.\n * @returns {string|undefined} The edition string for JSON representation\n */\nReflectionObject.prototype._editionToJSON = function _editionToJSON() {\n    if (!this._edition || this._edition === \"proto3\") {\n        // Avoid emitting proto3 since we need to default to it for backwards\n        // compatibility anyway.\n        return undefined;\n    }\n    return this._edition;\n};\n\n// Sets up cyclic dependencies (called in index-light)\nReflectionObject._configure = function(Root_) {\n    Root = Root_;\n};\n", "\"use strict\";\nmodule.exports = Enum;\n\n// extends ReflectionObject\nvar ReflectionObject = require(\"./object\");\n((Enum.prototype = Object.create(ReflectionObject.prototype)).constructor = Enum).className = \"Enum\";\n\nvar Namespace = require(\"./namespace\"),\n    util = require(\"./util\");\n\n/**\n * Constructs a new enum instance.\n * @classdesc Reflected enum.\n * @extends ReflectionObject\n * @constructor\n * @param {string} name Unique name within its namespace\n * @param {Object.<string,number>} [values] Enum values as an object, by name\n * @param {Object.<string,*>} [options] Declared options\n * @param {string} [comment] The comment for this enum\n * @param {Object.<string,string>} [comments] The value comments for this enum\n * @param {Object.<string,Object<string,*>>|undefined} [valuesOptions] The value options for this enum\n */\nfunction Enum(name, values, options, comment, comments, valuesOptions) {\n    ReflectionObject.call(this, name, options);\n\n    if (values && typeof values !== \"object\")\n        throw TypeError(\"values must be an object\");\n\n    /**\n     * Enum values by id.\n     * @type {Object.<number,string>}\n     */\n    this.valuesById = {};\n\n    /**\n     * Enum values by name.\n     * @type {Object.<string,number>}\n     */\n    this.values = Object.create(this.valuesById); // toJSON, marker\n\n    /**\n     * Enum comment text.\n     * @type {string|null}\n     */\n    this.comment = comment;\n\n    /**\n     * Value comment texts, if any.\n     * @type {Object.<string,string>}\n     */\n    this.comments = comments || {};\n\n    /**\n     * Values options, if any\n     * @type {Object<string, Object<string, *>>|undefined}\n     */\n    this.valuesOptions = valuesOptions;\n\n    /**\n     * Resolved values features, if any\n     * @type {Object<string, Object<string, *>>|undefined}\n     */\n    this._valuesFeatures = {};\n\n    /**\n     * Reserved ranges, if any.\n     * @type {Array.<number[]|string>}\n     */\n    this.reserved = undefined; // toJSON\n\n    // Note that values inherit valuesById on their prototype which makes them a TypeScript-\n    // compatible enum. This is used by pbts to write actual enum definitions that work for\n    // static and reflection code alike instead of emitting generic object definitions.\n\n    if (values)\n        for (var keys = Object.keys(values), i = 0; i < keys.length; ++i)\n            if (typeof values[keys[i]] === \"number\") // use forward entries only\n                this.valuesById[ this.values[keys[i]] = values[keys[i]] ] = keys[i];\n}\n\n/**\n * @override\n */\nEnum.prototype._resolveFeatures = function _resolveFeatures(edition) {\n    edition = this._edition || edition;\n    ReflectionObject.prototype._resolveFeatures.call(this, edition);\n\n    Object.keys(this.values).forEach(key => {\n        var parentFeaturesCopy = Object.assign({}, this._features);\n        this._valuesFeatures[key] = Object.assign(parentFeaturesCopy, this.valuesOptions && this.valuesOptions[key] && this.valuesOptions[key].features);\n    });\n\n    return this;\n};\n\n/**\n * Enum descriptor.\n * @interface IEnum\n * @property {Object.<string,number>} values Enum values\n * @property {Object.<string,*>} [options] Enum options\n */\n\n/**\n * Constructs an enum from an enum descriptor.\n * @param {string} name Enum name\n * @param {IEnum} json Enum descriptor\n * @returns {Enum} Created enum\n * @throws {TypeError} If arguments are invalid\n */\nEnum.fromJSON = function fromJSON(name, json) {\n    var enm = new Enum(name, json.values, json.options, json.comment, json.comments);\n    enm.reserved = json.reserved;\n    if (json.edition)\n        enm._edition = json.edition;\n    enm._defaultEdition = \"proto3\";  // For backwards-compatibility.\n    return enm;\n};\n\n/**\n * Converts this enum to an enum descriptor.\n * @param {IToJSONOptions} [toJSONOptions] JSON conversion options\n * @returns {IEnum} Enum descriptor\n */\nEnum.prototype.toJSON = function toJSON(toJSONOptions) {\n    var keepComments = toJSONOptions ? Boolean(toJSONOptions.keepComments) : false;\n    return util.toObject([\n        \"edition\"       , this._editionToJSON(),\n        \"options\"       , this.options,\n        \"valuesOptions\" , this.valuesOptions,\n        \"values\"        , this.values,\n        \"reserved\"      , this.reserved && this.reserved.length ? this.reserved : undefined,\n        \"comment\"       , keepComments ? this.comment : undefined,\n        \"comments\"      , keepComments ? this.comments : undefined\n    ]);\n};\n\n/**\n * Adds a value to this enum.\n * @param {string} name Value name\n * @param {number} id Value id\n * @param {string} [comment] Comment, if any\n * @param {Object.<string, *>|undefined} [options] Options, if any\n * @returns {Enum} `this`\n * @throws {TypeError} If arguments are invalid\n * @throws {Error} If there is already a value with this name or id\n */\nEnum.prototype.add = function add(name, id, comment, options) {\n    // utilized by the parser but not by .fromJSON\n\n    if (!util.isString(name))\n        throw TypeError(\"name must be a string\");\n\n    if (!util.isInteger(id))\n        throw TypeError(\"id must be an integer\");\n\n    if (this.values[name] !== undefined)\n        throw Error(\"duplicate name '\" + name + \"' in \" + this);\n\n    if (this.isReservedId(id))\n        throw Error(\"id \" + id + \" is reserved in \" + this);\n\n    if (this.isReservedName(name))\n        throw Error(\"name '\" + name + \"' is reserved in \" + this);\n\n    if (this.valuesById[id] !== undefined) {\n        if (!(this.options && this.options.allow_alias))\n            throw Error(\"duplicate id \" + id + \" in \" + this);\n        this.values[name] = id;\n    } else\n        this.valuesById[this.values[name] = id] = name;\n\n    if (options) {\n        if (this.valuesOptions === undefined)\n            this.valuesOptions = {};\n        this.valuesOptions[name] = options || null;\n    }\n\n    this.comments[name] = comment || null;\n    return this;\n};\n\n/**\n * Removes a value from this enum\n * @param {string} name Value name\n * @returns {Enum} `this`\n * @throws {TypeError} If arguments are invalid\n * @throws {Error} If `name` is not a name of this enum\n */\nEnum.prototype.remove = function remove(name) {\n\n    if (!util.isString(name))\n        throw TypeError(\"name must be a string\");\n\n    var val = this.values[name];\n    if (val == null)\n        throw Error(\"name '\" + name + \"' does not exist in \" + this);\n\n    delete this.valuesById[val];\n    delete this.values[name];\n    delete this.comments[name];\n    if (this.valuesOptions)\n        delete this.valuesOptions[name];\n\n    return this;\n};\n\n/**\n * Tests if the specified id is reserved.\n * @param {number} id Id to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nEnum.prototype.isReservedId = function isReservedId(id) {\n    return Namespace.isReservedId(this.reserved, id);\n};\n\n/**\n * Tests if the specified name is reserved.\n * @param {string} name Name to test\n * @returns {boolean} `true` if reserved, otherwise `false`\n */\nEnum.prototype.isReservedName = function isReservedName(name) {\n    return Namespace.isReservedName(this.reserved, name);\n};\n", "\"use strict\";\nmodule.exports = encoder;\n\nvar Enum     = require(\"./enum\"),\n    types    = require(\"./types\"),\n    util     = require(\"./util\");\n\n/**\n * Generates a partial message type encoder.\n * @param {Codegen} gen Codegen instance\n * @param {Field} field Reflected field\n * @param {number} fieldIndex Field index\n * @param {string} ref Variable reference\n * @returns {Codegen} Codegen instance\n * @ignore\n */\nfunction genTypePartial(gen, field, fieldIndex, ref) {\n    return field.delimited\n        ? gen(\"types[%i].encode(%s,w.uint32(%i)).uint32(%i)\", fieldIndex, ref, (field.id << 3 | 3) >>> 0, (field.id << 3 | 4) >>> 0)\n        : gen(\"types[%i].encode(%s,w.uint32(%i).fork()).ldelim()\", fieldIndex, ref, (field.id << 3 | 2) >>> 0);\n}\n\n/**\n * Generates an encoder specific to the specified message type.\n * @param {Type} mtype Message type\n * @returns {Codegen} Codegen instance\n */\nfunction encoder(mtype) {\n    /* eslint-disable no-unexpected-multiline, block-scoped-var, no-redeclare */\n    var gen = util.codegen([\"m\", \"w\"], mtype.name + \"$encode\")\n    (\"if(!w)\")\n        (\"w=Writer.create()\");\n\n    var i, ref;\n\n    // \"when a message is serialized its known fields should be written sequentially by field number\"\n    var fields = /* initializes */ mtype.fieldsArray.slice().sort(util.compareFieldsById);\n\n    for (var i = 0; i < fields.length; ++i) {\n        var field    = fields[i].resolve(),\n            index    = mtype._fieldsArray.indexOf(field),\n            type     = field.resolvedType instanceof Enum ? \"int32\" : field.type,\n            wireType = types.basic[type];\n            ref      = \"m\" + util.safeProp(field.name);\n\n        // Map fields\n        if (field.map) {\n            gen\n    (\"if(%s!=null&&Object.hasOwnProperty.call(m,%j)){\", ref, field.name) // !== undefined && !== null\n        (\"for(var ks=Object.keys(%s),i=0;i<ks.length;++i){\", ref)\n            (\"w.uint32(%i).fork().uint32(%i).%s(ks[i])\", (field.id << 3 | 2) >>> 0, 8 | types.mapKey[field.keyType], field.keyType);\n            if (wireType === undefined) gen\n            (\"types[%i].encode(%s[ks[i]],w.uint32(18).fork()).ldelim().ldelim()\", index, ref); // can't be groups\n            else gen\n            (\".uint32(%i).%s(%s[ks[i]]).ldelim()\", 16 | wireType, type, ref);\n            gen\n        (\"}\")\n    (\"}\");\n\n            // Repeated fields\n        } else if (field.repeated) { gen\n    (\"if(%s!=null&&%s.length){\", ref, ref); // !== undefined && !== null\n\n            // Packed repeated\n            if (field.packed && types.packed[type] !== undefined) { gen\n\n        (\"w.uint32(%i).fork()\", (field.id << 3 | 2) >>> 0)\n        (\"for(var i=0;i<%s.length;++i)\", ref)\n            (\"w.%s(%s[i])\", type, ref)\n        (\"w.ldelim()\");\n\n            // Non-packed\n            } else { gen\n\n        (\"for(var i=0;i<%s.length;++i)\", ref);\n                if (wireType === undefined)\n            genTypePartial(gen, field, index, ref + \"[i]\");\n                else gen\n            (\"w.uint32(%i).%s(%s[i])\", (field.id << 3 | wireType) >>> 0, type, ref);\n\n            } gen\n    (\"}\");\n\n        // Non-repeated\n        } else {\n            if (field.optional) gen\n    (\"if(%s!=null&&Object.hasOwnProperty.call(m,%j))\", ref, field.name); // !== undefined && !== null\n\n            if (wireType === undefined)\n        genTypePartial(gen, field, index, ref);\n            else gen\n        (\"w.uint32(%i).%s(%s)\", (field.id << 3 | wireType) >>> 0, type, ref);\n\n        }\n    }\n\n    return gen\n    (\"return w\");\n    /* eslint-enable no-unexpected-multiline, block-scoped-var, no-redeclare */\n}\n", "\"use strict\";\nvar protobuf = module.exports = require(\"./index-minimal\");\n\nprotobuf.build = \"light\";\n\n/**\n * A node-style callback as used by {@link load} and {@link Root#load}.\n * @typedef LoadCallback\n * @type {function}\n * @param {Error|null} error Error, if any, otherwise `null`\n * @param {Root} [root] Root, if there hasn't been an error\n * @returns {undefined}\n */\n\n/**\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\n * @param {string|string[]} filename One or multiple files to load\n * @param {Root} root Root namespace, defaults to create a new one if omitted.\n * @param {LoadCallback} callback Callback function\n * @returns {undefined}\n * @see {@link Root#load}\n */\nfunction load(filename, root, callback) {\n    if (typeof root === \"function\") {\n        callback = root;\n        root = new protobuf.Root();\n    } else if (!root)\n        root = new protobuf.Root();\n    return root.load(filename, callback);\n}\n\n/**\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and calls the callback.\n * @name load\n * @function\n * @param {string|string[]} filename One or multiple files to load\n * @param {LoadCallback} callback Callback function\n * @returns {undefined}\n * @see {@link Root#load}\n * @variation 2\n */\n// function load(filename:string, callback:LoadCallback):undefined\n\n/**\n * Loads one or multiple .proto or preprocessed .json files into a common root namespace and returns a promise.\n * @name load\n * @function\n * @param {string|string[]} filename One or multiple files to load\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\n * @returns {Promise<Root>} Promise\n * @see {@link Root#load}\n * @variation 3\n */\n// function load(filename:string, [root:Root]):Promise<Root>\n\nprotobuf.load = load;\n\n/**\n * Synchronously loads one or multiple .proto or preprocessed .json files into a common root namespace (node only).\n * @param {string|string[]} filename One or multiple files to load\n * @param {Root} [root] Root namespace, defaults to create a new one if omitted.\n * @returns {Root} Root namespace\n * @throws {Error} If synchronous fetching is not supported (i.e. in browsers) or if a file's syntax is invalid\n * @see {@link Root#loadSync}\n */\nfunction loadSync(filename, root) {\n    if (!root)\n        root = new protobuf.Root();\n    return root.loadSync(filename);\n}\n\nprotobuf.loadSync = loadSync;\n\n// Serialization\nprotobuf.encoder          = require(\"./encoder\");\nprotobuf.decoder          = require(\"./decoder\");\nprotobuf.verifier         = require(\"./verifier\");\nprotobuf.converter        = require(\"./converter\");\n\n// Reflection\nprotobuf.ReflectionObject = require(\"./object\");\nprotobuf.Namespace        = require(\"./namespace\");\nprotobuf.Root             = require(\"./root\");\nprotobuf.Enum             = require(\"./enum\");\nprotobuf.Type             = require(\"./type\");\nprotobuf.Field            = require(\"./field\");\nprotobuf.OneOf            = require(\"./oneof\");\nprotobuf.MapField         = require(\"./mapfield\");\nprotobuf.Service          = require(\"./service\");\nprotobuf.Method           = require(\"./method\");\n\n// Runtime\nprotobuf.Message          = require(\"./message\");\nprotobuf.wrappers         = require(\"./wrappers\");\n\n// Utility\nprotobuf.types            = require(\"./types\");\nprotobuf.util             = require(\"./util\");\n\n// Set up possibly cyclic reflection dependencies\nprotobuf.ReflectionObject._configure(protobuf.Root);\nprotobuf.Namespace._configure(protobuf.Type, protobuf.Service, protobuf.Enum);\nprotobuf.Root._configure(protobuf.Type);\nprotobuf.Field._configure(protobuf.Type);\n", "\"use strict\";\nmodule.exports = tokenize;\n\nvar delimRe        = /[\\s{}=;:[\\],'\"()<>]/g,\n    stringDoubleRe = /(?:\"([^\"\\\\]*(?:\\\\.[^\"\\\\]*)*)\")/g,\n    stringSingleRe = /(?:'([^'\\\\]*(?:\\\\.[^'\\\\]*)*)')/g;\n\nvar setCommentRe = /^ *[*/]+ */,\n    setCommentAltRe = /^\\s*\\*?\\/*/,\n    setCommentSplitRe = /\\n/g,\n    whitespaceRe = /\\s/,\n    unescapeRe = /\\\\(.?)/g;\n\nvar unescapeMap = {\n    \"0\": \"\\0\",\n    \"r\": \"\\r\",\n    \"n\": \"\\n\",\n    \"t\": \"\\t\"\n};\n\n/**\n * Unescapes a string.\n * @param {string} str String to unescape\n * @returns {string} Unescaped string\n * @property {Object.<string,string>} map Special characters map\n * @memberof tokenize\n */\nfunction unescape(str) {\n    return str.replace(unescapeRe, function($0, $1) {\n        switch ($1) {\n            case \"\\\\\":\n            case \"\":\n                return $1;\n            default:\n                return unescapeMap[$1] || \"\";\n        }\n    });\n}\n\ntokenize.unescape = unescape;\n\n/**\n * Gets the next token and advances.\n * @typedef TokenizerHandleNext\n * @type {function}\n * @returns {string|null} Next token or `null` on eof\n */\n\n/**\n * Peeks for the next token.\n * @typedef TokenizerHandlePeek\n * @type {function}\n * @returns {string|null} Next token or `null` on eof\n */\n\n/**\n * Pushes a token back to the stack.\n * @typedef TokenizerHandlePush\n * @type {function}\n * @param {string} token Token\n * @returns {undefined}\n */\n\n/**\n * Skips the next token.\n * @typedef TokenizerHandleSkip\n * @type {function}\n * @param {string} expected Expected token\n * @param {boolean} [optional=false] If optional\n * @returns {boolean} Whether the token matched\n * @throws {Error} If the token didn't match and is not optional\n */\n\n/**\n * Gets the comment on the previous line or, alternatively, the line comment on the specified line.\n * @typedef TokenizerHandleCmnt\n * @type {function}\n * @param {number} [line] Line number\n * @returns {string|null} Comment text or `null` if none\n */\n\n/**\n * Handle object returned from {@link tokenize}.\n * @interface ITokenizerHandle\n * @property {TokenizerHandleNext} next Gets the next token and advances (`null` on eof)\n * @property {TokenizerHandlePeek} peek Peeks for the next token (`null` on eof)\n * @property {TokenizerHandlePush} push Pushes a token back to the stack\n * @property {TokenizerHandleSkip} skip Skips a token, returns its presence and advances or, if non-optional and not present, throws\n * @property {TokenizerHandleCmnt} cmnt Gets the comment on the previous line or the line comment on the specified line, if any\n * @property {number} line Current line number\n */\n\n/**\n * Tokenizes the given .proto source and returns an object with useful utility functions.\n * @param {string} source Source contents\n * @param {boolean} alternateCommentMode Whether we should activate alternate comment parsing mode.\n * @returns {ITokenizerHandle} Tokenizer handle\n */\nfunction tokenize(source, alternateCommentMode) {\n    /* eslint-disable callback-return */\n    source = source.toString();\n\n    var offset = 0,\n        length = source.length,\n        line = 1,\n        lastCommentLine = 0,\n        comments = {};\n\n    var stack = [];\n\n    var stringDelim = null;\n\n    /* istanbul ignore next */\n    /**\n     * Creates an error for illegal syntax.\n     * @param {string} subject Subject\n     * @returns {Error} Error created\n     * @inner\n     */\n    function illegal(subject) {\n        return Error(\"illegal \" + subject + \" (line \" + line + \")\");\n    }\n\n    /**\n     * Reads a string till its end.\n     * @returns {string} String read\n     * @inner\n     */\n    function readString() {\n        var re = stringDelim === \"'\" ? stringSingleRe : stringDoubleRe;\n        re.lastIndex = offset - 1;\n        var match = re.exec(source);\n        if (!match)\n            throw illegal(\"string\");\n        offset = re.lastIndex;\n        push(stringDelim);\n        stringDelim = null;\n        return unescape(match[1]);\n    }\n\n    /**\n     * Gets the character at `pos` within the source.\n     * @param {number} pos Position\n     * @returns {string} Character\n     * @inner\n     */\n    function charAt(pos) {\n        return source.charAt(pos);\n    }\n\n    /**\n     * Sets the current comment text.\n     * @param {number} start Start offset\n     * @param {number} end End offset\n     * @param {boolean} isLeading set if a leading comment\n     * @returns {undefined}\n     * @inner\n     */\n    function setComment(start, end, isLeading) {\n        var comment = {\n            type: source.charAt(start++),\n            lineEmpty: false,\n            leading: isLeading,\n        };\n        var lookback;\n        if (alternateCommentMode) {\n            lookback = 2;  // alternate comment parsing: \"//\" or \"/*\"\n        } else {\n            lookback = 3;  // \"///\" or \"/**\"\n        }\n        var commentOffset = start - lookback,\n            c;\n        do {\n            if (--commentOffset < 0 ||\n                    (c = source.charAt(commentOffset)) === \"\\n\") {\n                comment.lineEmpty = true;\n                break;\n            }\n        } while (c === \" \" || c === \"\\t\");\n        var lines = source\n            .substring(start, end)\n            .split(setCommentSplitRe);\n        for (var i = 0; i < lines.length; ++i)\n            lines[i] = lines[i]\n                .replace(alternateCommentMode ? setCommentAltRe : setCommentRe, \"\")\n                .trim();\n        comment.text = lines\n            .join(\"\\n\")\n            .trim();\n\n        comments[line] = comment;\n        lastCommentLine = line;\n    }\n\n    function isDoubleSlashCommentLine(startOffset) {\n        var endOffset = findEndOfLine(startOffset);\n\n        // see if remaining line matches comment pattern\n        var lineText = source.substring(startOffset, endOffset);\n        var isComment = /^\\s*\\/\\//.test(lineText);\n        return isComment;\n    }\n\n    function findEndOfLine(cursor) {\n        // find end of cursor's line\n        var endOffset = cursor;\n        while (endOffset < length && charAt(endOffset) !== \"\\n\") {\n            endOffset++;\n        }\n        return endOffset;\n    }\n\n    /**\n     * Obtains the next token.\n     * @returns {string|null} Next token or `null` on eof\n     * @inner\n     */\n    function next() {\n        if (stack.length > 0)\n            return stack.shift();\n        if (stringDelim)\n            return readString();\n        var repeat,\n            prev,\n            curr,\n            start,\n            isDoc,\n            isLeadingComment = offset === 0;\n        do {\n            if (offset === length)\n                return null;\n            repeat = false;\n            while (whitespaceRe.test(curr = charAt(offset))) {\n                if (curr === \"\\n\") {\n                    isLeadingComment = true;\n                    ++line;\n                }\n                if (++offset === length)\n                    return null;\n            }\n\n            if (charAt(offset) === \"/\") {\n                if (++offset === length) {\n                    throw illegal(\"comment\");\n                }\n                if (charAt(offset) === \"/\") { // Line\n                    if (!alternateCommentMode) {\n                        // check for triple-slash comment\n                        isDoc = charAt(start = offset + 1) === \"/\";\n\n                        while (charAt(++offset) !== \"\\n\") {\n                            if (offset === length) {\n                                return null;\n                            }\n                        }\n                        ++offset;\n                        if (isDoc) {\n                            setComment(start, offset - 1, isLeadingComment);\n                            // Trailing comment cannot not be multi-line,\n                            // so leading comment state should be reset to handle potential next comments\n                            isLeadingComment = true;\n                        }\n                        ++line;\n                        repeat = true;\n                    } else {\n                        // check for double-slash comments, consolidating consecutive lines\n                        start = offset;\n                        isDoc = false;\n                        if (isDoubleSlashCommentLine(offset - 1)) {\n                            isDoc = true;\n                            do {\n                                offset = findEndOfLine(offset);\n                                if (offset === length) {\n                                    break;\n                                }\n                                offset++;\n                                if (!isLeadingComment) {\n                                    // Trailing comment cannot not be multi-line\n                                    break;\n                                }\n                            } while (isDoubleSlashCommentLine(offset));\n                        } else {\n                            offset = Math.min(length, findEndOfLine(offset) + 1);\n                        }\n                        if (isDoc) {\n                            setComment(start, offset, isLeadingComment);\n                            isLeadingComment = true;\n                        }\n                        line++;\n                        repeat = true;\n                    }\n                } else if ((curr = charAt(offset)) === \"*\") { /* Block */\n                    // check for /** (regular comment mode) or /* (alternate comment mode)\n                    start = offset + 1;\n                    isDoc = alternateCommentMode || charAt(start) === \"*\";\n                    do {\n                        if (curr === \"\\n\") {\n                            ++line;\n                        }\n                        if (++offset === length) {\n                            throw illegal(\"comment\");\n                        }\n                        prev = curr;\n                        curr = charAt(offset);\n                    } while (prev !== \"*\" || curr !== \"/\");\n                    ++offset;\n                    if (isDoc) {\n                        setComment(start, offset - 2, isLeadingComment);\n                        isLeadingComment = true;\n                    }\n                    repeat = true;\n                } else {\n                    return \"/\";\n                }\n            }\n        } while (repeat);\n\n        // offset !== length if we got here\n\n        var end = offset;\n        delimRe.lastIndex = 0;\n        var delim = delimRe.test(charAt(end++));\n        if (!delim)\n            while (end < length && !delimRe.test(charAt(end)))\n                ++end;\n        var token = source.substring(offset, offset = end);\n        if (token === \"\\\"\" || token === \"'\")\n            stringDelim = token;\n        return token;\n    }\n\n    /**\n     * Pushes a token back to the stack.\n     * @param {string} token Token\n     * @returns {undefined}\n     * @inner\n     */\n    function push(token) {\n        stack.push(token);\n    }\n\n    /**\n     * Peeks for the next token.\n     * @returns {string|null} Token or `null` on eof\n     * @inner\n     */\n    function peek() {\n        if (!stack.length) {\n            var token = next();\n            if (token === null)\n                return null;\n            push(token);\n        }\n        return stack[0];\n    }\n\n    /**\n     * Skips a token.\n     * @param {string} expected Expected token\n     * @param {boolean} [optional=false] Whether the token is optional\n     * @returns {boolean} `true` when skipped, `false` if not\n     * @throws {Error} When a required token is not present\n     * @inner\n     */\n    function skip(expected, optional) {\n        var actual = peek(),\n            equals = actual === expected;\n        if (equals) {\n            next();\n            return true;\n        }\n        if (!optional)\n            throw illegal(\"token '\" + actual + \"', '\" + expected + \"' expected\");\n        return false;\n    }\n\n    /**\n     * Gets a comment.\n     * @param {number} [trailingLine] Line number if looking for a trailing comment\n     * @returns {string|null} Comment text\n     * @inner\n     */\n    function cmnt(trailingLine) {\n        var ret = null;\n        var comment;\n        if (trailingLine === undefined) {\n            comment = comments[line - 1];\n            delete comments[line - 1];\n            if (comment && (alternateCommentMode || comment.type === \"*\" || comment.lineEmpty)) {\n                ret = comment.leading ? comment.text : null;\n            }\n        } else {\n            /* istanbul ignore else */\n            if (lastCommentLine < trailingLine) {\n                peek();\n            }\n            comment = comments[trailingLine];\n            delete comments[trailingLine];\n            if (comment && !comment.lineEmpty && (alternateCommentMode || comment.type === \"/\")) {\n                ret = comment.leading ? null : comment.text;\n            }\n        }\n        return ret;\n    }\n\n    return Object.defineProperty({\n        next: next,\n        peek: peek,\n        push: push,\n        skip: skip,\n        cmnt: cmnt\n    }, \"line\", {\n        get: function() { return line; }\n    });\n    /* eslint-enable callback-return */\n}\n", "\"use strict\";\nmodule.exports = parse;\n\nparse.filename = null;\nparse.defaults = { keepCase: false };\n\nvar tokenize  = require(\"./tokenize\"),\n    Root      = require(\"./root\"),\n    Type      = require(\"./type\"),\n    Field     = require(\"./field\"),\n    MapField  = require(\"./mapfield\"),\n    OneOf     = require(\"./oneof\"),\n    Enum      = require(\"./enum\"),\n    Service   = require(\"./service\"),\n    Method    = require(\"./method\"),\n    ReflectionObject = require(\"./object\"),\n    types     = require(\"./types\"),\n    util      = require(\"./util\");\n\nvar base10Re    = /^[1-9][0-9]*$/,\n    base10NegRe = /^-?[1-9][0-9]*$/,\n    base16Re    = /^0[x][0-9a-fA-F]+$/,\n    base16NegRe = /^-?0[x][0-9a-fA-F]+$/,\n    base8Re     = /^0[0-7]+$/,\n    base8NegRe  = /^-?0[0-7]+$/,\n    numberRe    = /^(?![eE])[0-9]*(?:\\.[0-9]*)?(?:[eE][+-]?[0-9]+)?$/,\n    nameRe      = /^[a-zA-Z_][a-zA-Z_0-9]*$/,\n    typeRefRe   = /^(?:\\.?[a-zA-Z_][a-zA-Z_0-9]*)(?:\\.[a-zA-Z_][a-zA-Z_0-9]*)*$/;\n\n/**\n * Result object returned from {@link parse}.\n * @interface IParserResult\n * @property {string|undefined} package Package name, if declared\n * @property {string[]|undefined} imports Imports, if any\n * @property {string[]|undefined} weakImports Weak imports, if any\n * @property {Root} root Populated root instance\n */\n\n/**\n * Options modifying the behavior of {@link parse}.\n * @interface IParseOptions\n * @property {boolean} [keepCase=false] Keeps field casing instead of converting to camel case\n * @property {boolean} [alternateCommentMode=false] Recognize double-slash comments in addition to doc-block comments.\n * @property {boolean} [preferTrailingComment=false] Use trailing comment when both leading comment and trailing comment exist.\n */\n\n/**\n * Options modifying the behavior of JSON serialization.\n * @interface IToJSONOptions\n * @property {boolean} [keepComments=false] Serializes comments.\n */\n\n/**\n * Parses the given .proto source and returns an object with the parsed contents.\n * @param {string} source Source contents\n * @param {Root} root Root to populate\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\n * @returns {IParserResult} Parser result\n * @property {string} filename=null Currently processing file name for error reporting, if known\n * @property {IParseOptions} defaults Default {@link IParseOptions}\n */\nfunction parse(source, root, options) {\n    /* eslint-disable callback-return */\n    if (!(root instanceof Root)) {\n        options = root;\n        root = new Root();\n    }\n    if (!options)\n        options = parse.defaults;\n\n    var preferTrailingComment = options.preferTrailingComment || false;\n    var tn = tokenize(source, options.alternateCommentMode || false),\n        next = tn.next,\n        push = tn.push,\n        peek = tn.peek,\n        skip = tn.skip,\n        cmnt = tn.cmnt;\n\n    var head = true,\n        pkg,\n        imports,\n        weakImports,\n        edition = \"proto2\";\n\n    var ptr = root;\n\n    var topLevelObjects = [];\n    var topLevelOptions = {};\n\n    var applyCase = options.keepCase ? function(name) { return name; } : util.camelCase;\n\n    function resolveFileFeatures() {\n        topLevelObjects.forEach(obj => {\n            obj._edition = edition;\n            Object.keys(topLevelOptions).forEach(opt => {\n                if (obj.getOption(opt) !== undefined) return;\n                obj.setOption(opt, topLevelOptions[opt], true);\n            });\n        });\n    }\n\n    /* istanbul ignore next */\n    function illegal(token, name, insideTryCatch) {\n        var filename = parse.filename;\n        if (!insideTryCatch)\n            parse.filename = null;\n        return Error(\"illegal \" + (name || \"token\") + \" '\" + token + \"' (\" + (filename ? filename + \", \" : \"\") + \"line \" + tn.line + \")\");\n    }\n\n    function readString() {\n        var values = [],\n            token;\n        do {\n            /* istanbul ignore if */\n            if ((token = next()) !== \"\\\"\" && token !== \"'\")\n                throw illegal(token);\n\n            values.push(next());\n            skip(token);\n            token = peek();\n        } while (token === \"\\\"\" || token === \"'\");\n        return values.join(\"\");\n    }\n\n    function readValue(acceptTypeRef) {\n        var token = next();\n        switch (token) {\n            case \"'\":\n            case \"\\\"\":\n                push(token);\n                return readString();\n            case \"true\": case \"TRUE\":\n                return true;\n            case \"false\": case \"FALSE\":\n                return false;\n        }\n        try {\n            return parseNumber(token, /* insideTryCatch */ true);\n        } catch (e) {\n            /* istanbul ignore else */\n            if (acceptTypeRef && typeRefRe.test(token))\n                return token;\n\n            /* istanbul ignore next */\n            throw illegal(token, \"value\");\n        }\n    }\n\n    function readRanges(target, acceptStrings) {\n        var token, start;\n        do {\n            if (acceptStrings && ((token = peek()) === \"\\\"\" || token === \"'\")) {\n                var str = readString();\n                target.push(str);\n                if (edition >= 2023) {\n                    throw illegal(str, \"id\");\n                }\n            } else {\n                try {\n                    target.push([ start = parseId(next()), skip(\"to\", true) ? parseId(next()) : start ]);\n                } catch (err) {\n                    if (acceptStrings && typeRefRe.test(token) && edition >= 2023) {\n                        target.push(token);\n                    } else {\n                        throw err;\n                    }\n                }\n            }\n        } while (skip(\",\", true));\n        var dummy = {options: undefined};\n        dummy.setOption = function(name, value) {\n          if (this.options === undefined) this.options = {};\n          this.options[name] = value;\n        };\n        ifBlock(\n            dummy,\n            function parseRange_block(token) {\n              /* istanbul ignore else */\n              if (token === \"option\") {\n                parseOption(dummy, token);  // skip\n                skip(\";\");\n              } else\n                throw illegal(token);\n            },\n            function parseRange_line() {\n              parseInlineOptions(dummy);  // skip\n            });\n    }\n\n    function parseNumber(token, insideTryCatch) {\n        var sign = 1;\n        if (token.charAt(0) === \"-\") {\n            sign = -1;\n            token = token.substring(1);\n        }\n        switch (token) {\n            case \"inf\": case \"INF\": case \"Inf\":\n                return sign * Infinity;\n            case \"nan\": case \"NAN\": case \"Nan\": case \"NaN\":\n                return NaN;\n            case \"0\":\n                return 0;\n        }\n        if (base10Re.test(token))\n            return sign * parseInt(token, 10);\n        if (base16Re.test(token))\n            return sign * parseInt(token, 16);\n        if (base8Re.test(token))\n            return sign * parseInt(token, 8);\n\n        /* istanbul ignore else */\n        if (numberRe.test(token))\n            return sign * parseFloat(token);\n\n        /* istanbul ignore next */\n        throw illegal(token, \"number\", insideTryCatch);\n    }\n\n    function parseId(token, acceptNegative) {\n        switch (token) {\n            case \"max\": case \"MAX\": case \"Max\":\n                return 536870911;\n            case \"0\":\n                return 0;\n        }\n\n        /* istanbul ignore if */\n        if (!acceptNegative && token.charAt(0) === \"-\")\n            throw illegal(token, \"id\");\n\n        if (base10NegRe.test(token))\n            return parseInt(token, 10);\n        if (base16NegRe.test(token))\n            return parseInt(token, 16);\n\n        /* istanbul ignore else */\n        if (base8NegRe.test(token))\n            return parseInt(token, 8);\n\n        /* istanbul ignore next */\n        throw illegal(token, \"id\");\n    }\n\n    function parsePackage() {\n        /* istanbul ignore if */\n        if (pkg !== undefined)\n            throw illegal(\"package\");\n\n        pkg = next();\n\n        /* istanbul ignore if */\n        if (!typeRefRe.test(pkg))\n            throw illegal(pkg, \"name\");\n\n        ptr = ptr.define(pkg);\n\n        skip(\";\");\n    }\n\n    function parseImport() {\n        var token = peek();\n        var whichImports;\n        switch (token) {\n            case \"weak\":\n                whichImports = weakImports || (weakImports = []);\n                next();\n                break;\n            case \"public\":\n                next();\n                // eslint-disable-next-line no-fallthrough\n            default:\n                whichImports = imports || (imports = []);\n                break;\n        }\n        token = readString();\n        skip(\";\");\n        whichImports.push(token);\n    }\n\n    function parseSyntax() {\n        skip(\"=\");\n        edition = readString();\n\n        /* istanbul ignore if */\n        if (edition < 2023)\n            throw illegal(edition, \"syntax\");\n\n        skip(\";\");\n    }\n\n    function parseEdition() {\n        skip(\"=\");\n        edition = readString();\n        const supportedEditions = [\"2023\"];\n\n        /* istanbul ignore if */\n        if (!supportedEditions.includes(edition))\n            throw illegal(edition, \"edition\");\n\n        skip(\";\");\n    }\n\n\n    function parseCommon(parent, token) {\n        switch (token) {\n\n            case \"option\":\n                parseOption(parent, token);\n                skip(\";\");\n                return true;\n\n            case \"message\":\n                parseType(parent, token);\n                return true;\n\n            case \"enum\":\n                parseEnum(parent, token);\n                return true;\n\n            case \"service\":\n                parseService(parent, token);\n                return true;\n\n            case \"extend\":\n                parseExtension(parent, token);\n                return true;\n        }\n        return false;\n    }\n\n    function ifBlock(obj, fnIf, fnElse) {\n        var trailingLine = tn.line;\n        if (obj) {\n            if(typeof obj.comment !== \"string\") {\n              obj.comment = cmnt(); // try block-type comment\n            }\n            obj.filename = parse.filename;\n        }\n        if (skip(\"{\", true)) {\n            var token;\n            while ((token = next()) !== \"}\")\n                fnIf(token);\n            skip(\";\", true);\n        } else {\n            if (fnElse)\n                fnElse();\n            skip(\";\");\n            if (obj && (typeof obj.comment !== \"string\" || preferTrailingComment))\n                obj.comment = cmnt(trailingLine) || obj.comment; // try line-type comment\n        }\n    }\n\n    function parseType(parent, token) {\n\n        /* istanbul ignore if */\n        if (!nameRe.test(token = next()))\n            throw illegal(token, \"type name\");\n\n        var type = new Type(token);\n        ifBlock(type, function parseType_block(token) {\n            if (parseCommon(type, token))\n                return;\n\n            switch (token) {\n\n                case \"map\":\n                    parseMapField(type, token);\n                    break;\n\n                case \"required\":\n                    if (edition !== \"proto2\")\n                        throw illegal(token);\n                /* eslint-disable no-fallthrough */\n                case \"repeated\":\n                    parseField(type, token);\n                    break;\n\n                case \"optional\":\n                    /* istanbul ignore if */\n                    if (edition === \"proto3\") {\n                        parseField(type, \"proto3_optional\");\n                    } else if (edition !== \"proto2\") {\n                        throw illegal(token);\n                    } else {\n                        parseField(type, \"optional\");\n                    }\n                    break;\n\n                case \"oneof\":\n                    parseOneOf(type, token);\n                    break;\n\n                case \"extensions\":\n                    readRanges(type.extensions || (type.extensions = []));\n                    break;\n\n                case \"reserved\":\n                    readRanges(type.reserved || (type.reserved = []), true);\n                    break;\n\n                default:\n                    /* istanbul ignore if */\n                    if (edition === \"proto2\" || !typeRefRe.test(token)) {\n                        throw illegal(token);\n                    }\n\n                    push(token);\n                    parseField(type, \"optional\");\n                    break;\n            }\n        });\n        parent.add(type);\n        if (parent === ptr) {\n            topLevelObjects.push(type);\n        }\n    }\n\n    function parseField(parent, rule, extend) {\n        var type = next();\n        if (type === \"group\") {\n            parseGroup(parent, rule);\n            return;\n        }\n        // Type names can consume multiple tokens, in multiple variants:\n        //    package.subpackage   field       tokens: \"package.subpackage\" [TYPE NAME ENDS HERE] \"field\"\n        //    package . subpackage field       tokens: \"package\" \".\" \"subpackage\" [TYPE NAME ENDS HERE] \"field\"\n        //    package.  subpackage field       tokens: \"package.\" \"subpackage\" [TYPE NAME ENDS HERE] \"field\"\n        //    package  .subpackage field       tokens: \"package\" \".subpackage\" [TYPE NAME ENDS HERE] \"field\"\n        // Keep reading tokens until we get a type name with no period at the end,\n        // and the next token does not start with a period.\n        while (type.endsWith(\".\") || peek().startsWith(\".\")) {\n            type += next();\n        }\n\n        /* istanbul ignore if */\n        if (!typeRefRe.test(type))\n            throw illegal(type, \"type\");\n\n        var name = next();\n\n        /* istanbul ignore if */\n\n        if (!nameRe.test(name))\n            throw illegal(name, \"name\");\n\n        name = applyCase(name);\n        skip(\"=\");\n\n        var field = new Field(name, parseId(next()), type, rule, extend);\n\n        ifBlock(field, function parseField_block(token) {\n\n            /* istanbul ignore else */\n            if (token === \"option\") {\n                parseOption(field, token);\n                skip(\";\");\n            } else\n                throw illegal(token);\n\n        }, function parseField_line() {\n            parseInlineOptions(field);\n        });\n\n        if (rule === \"proto3_optional\") {\n            // for proto3 optional fields, we create a single-member Oneof to mimic \"optional\" behavior\n            var oneof = new OneOf(\"_\" + name);\n            field.setOption(\"proto3_optional\", true);\n            oneof.add(field);\n            parent.add(oneof);\n        } else {\n            parent.add(field);\n        }\n        if (parent === ptr) {\n            topLevelObjects.push(field);\n        }\n    }\n\n    function parseGroup(parent, rule) {\n        if (edition >= 2023) {\n            throw illegal(\"group\");\n        }\n        var name = next();\n\n        /* istanbul ignore if */\n        if (!nameRe.test(name))\n            throw illegal(name, \"name\");\n\n        var fieldName = util.lcFirst(name);\n        if (name === fieldName)\n            name = util.ucFirst(name);\n        skip(\"=\");\n        var id = parseId(next());\n        var type = new Type(name);\n        type.group = true;\n        var field = new Field(fieldName, id, name, rule);\n        field.filename = parse.filename;\n        ifBlock(type, function parseGroup_block(token) {\n            switch (token) {\n\n                case \"option\":\n                    parseOption(type, token);\n                    skip(\";\");\n                    break;\n                case \"required\":\n                case \"repeated\":\n                    parseField(type, token);\n                    break;\n\n                case \"optional\":\n                    /* istanbul ignore if */\n                    if (edition === \"proto3\") {\n                        parseField(type, \"proto3_optional\");\n                    } else {\n                        parseField(type, \"optional\");\n                    }\n                    break;\n\n                case \"message\":\n                    parseType(type, token);\n                    break;\n\n                case \"enum\":\n                    parseEnum(type, token);\n                    break;\n\n                case \"reserved\":\n                    readRanges(type.reserved || (type.reserved = []), true);\n                    break;\n\n                /* istanbul ignore next */\n                default:\n                    throw illegal(token); // there are no groups with proto3 semantics\n            }\n        });\n        parent.add(type)\n              .add(field);\n    }\n\n    function parseMapField(parent) {\n        skip(\"<\");\n        var keyType = next();\n\n        /* istanbul ignore if */\n        if (types.mapKey[keyType] === undefined)\n            throw illegal(keyType, \"type\");\n\n        skip(\",\");\n        var valueType = next();\n\n        /* istanbul ignore if */\n        if (!typeRefRe.test(valueType))\n            throw illegal(valueType, \"type\");\n\n        skip(\">\");\n        var name = next();\n\n        /* istanbul ignore if */\n        if (!nameRe.test(name))\n            throw illegal(name, \"name\");\n\n        skip(\"=\");\n        var field = new MapField(applyCase(name), parseId(next()), keyType, valueType);\n        ifBlock(field, function parseMapField_block(token) {\n\n            /* istanbul ignore else */\n            if (token === \"option\") {\n                parseOption(field, token);\n                skip(\";\");\n            } else\n                throw illegal(token);\n\n        }, function parseMapField_line() {\n            parseInlineOptions(field);\n        });\n        parent.add(field);\n    }\n\n    function parseOneOf(parent, token) {\n\n        /* istanbul ignore if */\n        if (!nameRe.test(token = next()))\n            throw illegal(token, \"name\");\n\n        var oneof = new OneOf(applyCase(token));\n        ifBlock(oneof, function parseOneOf_block(token) {\n            if (token === \"option\") {\n                parseOption(oneof, token);\n                skip(\";\");\n            } else {\n                push(token);\n                parseField(oneof, \"optional\");\n            }\n        });\n        parent.add(oneof);\n    }\n\n    function parseEnum(parent, token) {\n\n        /* istanbul ignore if */\n        if (!nameRe.test(token = next()))\n            throw illegal(token, \"name\");\n\n        var enm = new Enum(token);\n        ifBlock(enm, function parseEnum_block(token) {\n          switch(token) {\n            case \"option\":\n              parseOption(enm, token);\n              skip(\";\");\n              break;\n\n            case \"reserved\":\n              readRanges(enm.reserved || (enm.reserved = []), true);\n              if(enm.reserved === undefined) enm.reserved = [];\n              break;\n\n            default:\n              parseEnumValue(enm, token);\n          }\n        });\n        parent.add(enm);\n        if (parent === ptr) {\n            topLevelObjects.push(enm);\n        }\n    }\n\n    function parseEnumValue(parent, token) {\n\n        /* istanbul ignore if */\n        if (!nameRe.test(token))\n            throw illegal(token, \"name\");\n\n        skip(\"=\");\n        var value = parseId(next(), true),\n            dummy = {\n                options: undefined\n            };\n        dummy.getOption = function(name) {\n            return this.options[name];\n        };\n        dummy.setOption = function(name, value) {\n            ReflectionObject.prototype.setOption.call(dummy, name, value);\n        };\n        dummy.setParsedOption = function() {\n            return undefined;\n        };\n        ifBlock(dummy, function parseEnumValue_block(token) {\n\n            /* istanbul ignore else */\n            if (token === \"option\") {\n                parseOption(dummy, token); // skip\n                skip(\";\");\n            } else\n                throw illegal(token);\n\n        }, function parseEnumValue_line() {\n            parseInlineOptions(dummy); // skip\n        });\n        parent.add(token, value, dummy.comment, dummy.parsedOptions || dummy.options);\n    }\n\n    function parseOption(parent, token) {\n            var option;\n            var propName;\n            var isOption = true;\n            if (token === \"option\") {\n                token = next();\n            }\n\n            while (token !== \"=\") {\n                if (token === \"(\") {\n                    var parensValue = next();\n                    skip(\")\");\n                    token = \"(\" + parensValue + \")\";\n                }\n                if (isOption) {\n                    isOption = false;\n                    if (token.includes(\".\") && !token.includes(\"(\")) {\n                        var tokens = token.split(\".\");\n                        option = tokens[0] + \".\";\n                        token = tokens[1];\n                        continue;\n                    }\n                    option = token;\n                } else {\n                    propName = propName ? propName += token : token;\n                }\n                token = next();\n            }\n            var name = propName ? option.concat(propName) : option;\n            var optionValue = parseOptionValue(parent, name);\n            propName = propName && propName[0] === \".\" ? propName.slice(1) : propName;\n            option = option && option[option.length - 1] === \".\" ? option.slice(0, -1) : option;\n            setParsedOption(parent, option, optionValue, propName);\n    }\n\n    function parseOptionValue(parent, name) {\n        // { a: \"foo\" b { c: \"bar\" } }\n        if (skip(\"{\", true)) {\n            var objectResult = {};\n\n            while (!skip(\"}\", true)) {\n                /* istanbul ignore if */\n                if (!nameRe.test(token = next())) {\n                    throw illegal(token, \"name\");\n                }\n                if (token === null) {\n                  throw illegal(token, \"end of input\");\n                }\n\n                var value;\n                var propName = token;\n\n                skip(\":\", true);\n\n                if (peek() === \"{\") {\n                    // option (my_option) = {\n                    //     repeated_value: [ \"foo\", \"bar\" ]\n                    // };\n                    value = parseOptionValue(parent, name + \".\" + token);\n                } else if (peek() === \"[\") {\n                    value = [];\n                    var lastValue;\n                    if (skip(\"[\", true)) {\n                        do {\n                            lastValue = readValue(true);\n                            value.push(lastValue);\n                        } while (skip(\",\", true));\n                        skip(\"]\");\n                        if (typeof lastValue !== \"undefined\") {\n                            setOption(parent, name + \".\" + token, lastValue);\n                        }\n                    }\n                } else {\n                    value = readValue(true);\n                    setOption(parent, name + \".\" + token, value);\n                }\n\n                var prevValue = objectResult[propName];\n\n                if (prevValue)\n                    value = [].concat(prevValue).concat(value);\n\n                objectResult[propName] = value;\n\n                // Semicolons and commas can be optional\n                skip(\",\", true);\n                skip(\";\", true);\n            }\n\n            return objectResult;\n        }\n\n        var simpleValue = readValue(true);\n        setOption(parent, name, simpleValue);\n        return simpleValue;\n        // Does not enforce a delimiter to be universal\n    }\n\n    function setOption(parent, name, value) {\n        if (ptr === parent && /^features\\./.test(name)) {\n            topLevelOptions[name] = value;\n            return;\n        }\n        if (parent.setOption)\n            parent.setOption(name, value);\n    }\n\n    function setParsedOption(parent, name, value, propName) {\n        if (parent.setParsedOption)\n            parent.setParsedOption(name, value, propName);\n    }\n\n    function parseInlineOptions(parent) {\n        if (skip(\"[\", true)) {\n            do {\n                parseOption(parent, \"option\");\n            } while (skip(\",\", true));\n            skip(\"]\");\n        }\n        return parent;\n    }\n\n    function parseService(parent, token) {\n\n        /* istanbul ignore if */\n        if (!nameRe.test(token = next()))\n            throw illegal(token, \"service name\");\n\n        var service = new Service(token);\n        ifBlock(service, function parseService_block(token) {\n            if (parseCommon(service, token)) {\n                return;\n            }\n\n            /* istanbul ignore else */\n            if (token === \"rpc\")\n                parseMethod(service, token);\n            else\n                throw illegal(token);\n        });\n        parent.add(service);\n        if (parent === ptr) {\n            topLevelObjects.push(service);\n        }\n    }\n\n    function parseMethod(parent, token) {\n        // Get the comment of the preceding line now (if one exists) in case the\n        // method is defined across multiple lines.\n        var commentText = cmnt();\n\n        var type = token;\n\n        /* istanbul ignore if */\n        if (!nameRe.test(token = next()))\n            throw illegal(token, \"name\");\n\n        var name = token,\n            requestType, requestStream,\n            responseType, responseStream;\n\n        skip(\"(\");\n        if (skip(\"stream\", true))\n            requestStream = true;\n\n        /* istanbul ignore if */\n        if (!typeRefRe.test(token = next()))\n            throw illegal(token);\n\n        requestType = token;\n        skip(\")\"); skip(\"returns\"); skip(\"(\");\n        if (skip(\"stream\", true))\n            responseStream = true;\n\n        /* istanbul ignore if */\n        if (!typeRefRe.test(token = next()))\n            throw illegal(token);\n\n        responseType = token;\n        skip(\")\");\n\n        var method = new Method(name, type, requestType, responseType, requestStream, responseStream);\n        method.comment = commentText;\n        ifBlock(method, function parseMethod_block(token) {\n\n            /* istanbul ignore else */\n            if (token === \"option\") {\n                parseOption(method, token);\n                skip(\";\");\n            } else\n                throw illegal(token);\n\n        });\n        parent.add(method);\n    }\n\n    function parseExtension(parent, token) {\n\n        /* istanbul ignore if */\n        if (!typeRefRe.test(token = next()))\n            throw illegal(token, \"reference\");\n\n        var reference = token;\n        ifBlock(null, function parseExtension_block(token) {\n            switch (token) {\n\n                case \"required\":\n                case \"repeated\":\n                    parseField(parent, token, reference);\n                    break;\n\n                case \"optional\":\n                    /* istanbul ignore if */\n                    if (edition === \"proto3\") {\n                        parseField(parent, \"proto3_optional\", reference);\n                    } else {\n                        parseField(parent, \"optional\", reference);\n                    }\n                    break;\n\n                default:\n                    /* istanbul ignore if */\n                    if (edition === \"proto2\" || !typeRefRe.test(token))\n                        throw illegal(token);\n                    push(token);\n                    parseField(parent, \"optional\", reference);\n                    break;\n            }\n        });\n    }\n\n    var token;\n    while ((token = next()) !== null) {\n        switch (token) {\n\n            case \"package\":\n\n                /* istanbul ignore if */\n                if (!head)\n                    throw illegal(token);\n\n                parsePackage();\n                break;\n\n            case \"import\":\n\n                /* istanbul ignore if */\n                if (!head)\n                    throw illegal(token);\n\n                parseImport();\n                break;\n\n            case \"syntax\":\n\n                /* istanbul ignore if */\n                if (!head)\n                    throw illegal(token);\n\n                parseSyntax();\n                break;\n\n            case \"edition\":\n                /* istanbul ignore if */\n                if (!head)\n                    throw illegal(token);\n                parseEdition();\n                break;\n\n            case \"option\":\n                parseOption(ptr, token);\n                skip(\";\", true);\n                break;\n\n            default:\n\n                /* istanbul ignore else */\n                if (parseCommon(ptr, token)) {\n                    head = false;\n                    continue;\n                }\n\n                /* istanbul ignore next */\n                throw illegal(token);\n        }\n    }\n\n    resolveFileFeatures();\n\n    parse.filename = null;\n    return {\n        \"package\"     : pkg,\n        \"imports\"     : imports,\n         weakImports  : weakImports,\n         root         : root\n    };\n}\n\n/**\n * Parses the given .proto source and returns an object with the parsed contents.\n * @name parse\n * @function\n * @param {string} source Source contents\n * @param {IParseOptions} [options] Parse options. Defaults to {@link parse.defaults} when omitted.\n * @returns {IParserResult} Parser result\n * @property {string} filename=null Currently processing file name for error reporting, if known\n * @property {IParseOptions} defaults Default {@link IParseOptions}\n * @variation 2\n */\n", "\"use strict\";\nmodule.exports = common;\n\nvar commonRe = /\\/|\\./;\n\n/**\n * Provides common type definitions.\n * Can also be used to provide additional google types or your own custom types.\n * @param {string} name Short name as in `google/protobuf/[name].proto` or full file name\n * @param {Object.<string,*>} json JSON definition within `google.protobuf` if a short name, otherwise the file's root definition\n * @returns {undefined}\n * @property {INamespace} google/protobuf/any.proto Any\n * @property {INamespace} google/protobuf/duration.proto Duration\n * @property {INamespace} google/protobuf/empty.proto Empty\n * @property {INamespace} google/protobuf/field_mask.proto FieldMask\n * @property {INamespace} google/protobuf/struct.proto Struct, Value, NullValue and ListValue\n * @property {INamespace} google/protobuf/timestamp.proto Timestamp\n * @property {INamespace} google/protobuf/wrappers.proto Wrappers\n * @example\n * // manually provides descriptor.proto (assumes google/protobuf/ namespace and .proto extension)\n * protobuf.common(\"descriptor\", descriptorJson);\n *\n * // manually provides a custom definition (uses my.foo namespace)\n * protobuf.common(\"my/foo/bar.proto\", myFooBarJson);\n */\nfunction common(name, json) {\n    if (!commonRe.test(name)) {\n        name = \"google/protobuf/\" + name + \".proto\";\n        json = { nested: { google: { nested: { protobuf: { nested: json } } } } };\n    }\n    common[name] = json;\n}\n\n// Not provided because of limited use (feel free to discuss or to provide yourself):\n//\n// google/protobuf/descriptor.proto\n// google/protobuf/source_context.proto\n// google/protobuf/type.proto\n//\n// Stripped and pre-parsed versions of these non-bundled files are instead available as part of\n// the repository or package within the google/protobuf directory.\n\ncommon(\"any\", {\n\n    /**\n     * Properties of a google.protobuf.Any message.\n     * @interface IAny\n     * @type {Object}\n     * @property {string} [typeUrl]\n     * @property {Uint8Array} [bytes]\n     * @memberof common\n     */\n    Any: {\n        fields: {\n            type_url: {\n                type: \"string\",\n                id: 1\n            },\n            value: {\n                type: \"bytes\",\n                id: 2\n            }\n        }\n    }\n});\n\nvar timeType;\n\ncommon(\"duration\", {\n\n    /**\n     * Properties of a google.protobuf.Duration message.\n     * @interface IDuration\n     * @type {Object}\n     * @property {number|Long} [seconds]\n     * @property {number} [nanos]\n     * @memberof common\n     */\n    Duration: timeType = {\n        fields: {\n            seconds: {\n                type: \"int64\",\n                id: 1\n            },\n            nanos: {\n                type: \"int32\",\n                id: 2\n            }\n        }\n    }\n});\n\ncommon(\"timestamp\", {\n\n    /**\n     * Properties of a google.protobuf.Timestamp message.\n     * @interface ITimestamp\n     * @type {Object}\n     * @property {number|Long} [seconds]\n     * @property {number} [nanos]\n     * @memberof common\n     */\n    Timestamp: timeType\n});\n\ncommon(\"empty\", {\n\n    /**\n     * Properties of a google.protobuf.Empty message.\n     * @interface IEmpty\n     * @memberof common\n     */\n    Empty: {\n        fields: {}\n    }\n});\n\ncommon(\"struct\", {\n\n    /**\n     * Properties of a google.protobuf.Struct message.\n     * @interface IStruct\n     * @type {Object}\n     * @property {Object.<string,IValue>} [fields]\n     * @memberof common\n     */\n    Struct: {\n        fields: {\n            fields: {\n                keyType: \"string\",\n                type: \"Value\",\n                id: 1\n            }\n        }\n    },\n\n    /**\n     * Properties of a google.protobuf.Value message.\n     * @interface IValue\n     * @type {Object}\n     * @property {string} [kind]\n     * @property {0} [nullValue]\n     * @property {number} [numberValue]\n     * @property {string} [stringValue]\n     * @property {boolean} [boolValue]\n     * @property {IStruct} [structValue]\n     * @property {IListValue} [listValue]\n     * @memberof common\n     */\n    Value: {\n        oneofs: {\n            kind: {\n                oneof: [\n                    \"nullValue\",\n                    \"numberValue\",\n                    \"stringValue\",\n                    \"boolValue\",\n                    \"structValue\",\n                    \"listValue\"\n                ]\n            }\n        },\n        fields: {\n            nullValue: {\n                type: \"NullValue\",\n                id: 1\n            },\n            numberValue: {\n                type: \"double\",\n                id: 2\n            },\n            stringValue: {\n                type: \"string\",\n                id: 3\n            },\n            boolValue: {\n                type: \"bool\",\n                id: 4\n            },\n            structValue: {\n                type: \"Struct\",\n                id: 5\n            },\n            listValue: {\n                type: \"ListValue\",\n                id: 6\n            }\n        }\n    },\n\n    NullValue: {\n        values: {\n            NULL_VALUE: 0\n        }\n    },\n\n    /**\n     * Properties of a google.protobuf.ListValue message.\n     * @interface IListValue\n     * @type {Object}\n     * @property {Array.<IValue>} [values]\n     * @memberof common\n     */\n    ListValue: {\n        fields: {\n            values: {\n                rule: \"repeated\",\n                type: \"Value\",\n                id: 1\n            }\n        }\n    }\n});\n\ncommon(\"wrappers\", {\n\n    /**\n     * Properties of a google.protobuf.DoubleValue message.\n     * @interface IDoubleValue\n     * @type {Object}\n     * @property {number} [value]\n     * @memberof common\n     */\n    DoubleValue: {\n        fields: {\n            value: {\n                type: \"double\",\n                id: 1\n            }\n        }\n    },\n\n    /**\n     * Properties of a google.protobuf.FloatValue message.\n     * @interface IFloatValue\n     * @type {Object}\n     * @property {number} [value]\n     * @memberof common\n     */\n    FloatValue: {\n        fields: {\n            value: {\n                type: \"float\",\n                id: 1\n            }\n        }\n    },\n\n    /**\n     * Properties of a google.protobuf.Int64Value message.\n     * @interface IInt64Value\n     * @type {Object}\n     * @property {number|Long} [value]\n     * @memberof common\n     */\n    Int64Value: {\n        fields: {\n            value: {\n                type: \"int64\",\n                id: 1\n            }\n        }\n    },\n\n    /**\n     * Properties of a google.protobuf.UInt64Value message.\n     * @interface IUInt64Value\n     * @type {Object}\n     * @property {number|Long} [value]\n     * @memberof common\n     */\n    UInt64Value: {\n        fields: {\n            value: {\n                type: \"uint64\",\n                id: 1\n            }\n        }\n    },\n\n    /**\n     * Properties of a google.protobuf.Int32Value message.\n     * @interface IInt32Value\n     * @type {Object}\n     * @property {number} [value]\n     * @memberof common\n     */\n    Int32Value: {\n        fields: {\n            value: {\n                type: \"int32\",\n                id: 1\n            }\n        }\n    },\n\n    /**\n     * Properties of a google.protobuf.UInt32Value message.\n     * @interface IUInt32Value\n     * @type {Object}\n     * @property {number} [value]\n     * @memberof common\n     */\n    UInt32Value: {\n        fields: {\n            value: {\n                type: \"uint32\",\n                id: 1\n            }\n        }\n    },\n\n    /**\n     * Properties of a google.protobuf.BoolValue message.\n     * @interface IBoolValue\n     * @type {Object}\n     * @property {boolean} [value]\n     * @memberof common\n     */\n    BoolValue: {\n        fields: {\n            value: {\n                type: \"bool\",\n                id: 1\n            }\n        }\n    },\n\n    /**\n     * Properties of a google.protobuf.StringValue message.\n     * @interface IStringValue\n     * @type {Object}\n     * @property {string} [value]\n     * @memberof common\n     */\n    StringValue: {\n        fields: {\n            value: {\n                type: \"string\",\n                id: 1\n            }\n        }\n    },\n\n    /**\n     * Properties of a google.protobuf.BytesValue message.\n     * @interface IBytesValue\n     * @type {Object}\n     * @property {Uint8Array} [value]\n     * @memberof common\n     */\n    BytesValue: {\n        fields: {\n            value: {\n                type: \"bytes\",\n                id: 1\n            }\n        }\n    }\n});\n\ncommon(\"field_mask\", {\n\n    /**\n     * Properties of a google.protobuf.FieldMask message.\n     * @interface IDoubleValue\n     * @type {Object}\n     * @property {number} [value]\n     * @memberof common\n     */\n    FieldMask: {\n        fields: {\n            paths: {\n                rule: \"repeated\",\n                type: \"string\",\n                id: 1\n            }\n        }\n    }\n});\n\n/**\n * Gets the root definition of the specified common proto file.\n *\n * Bundled definitions are:\n * - google/protobuf/any.proto\n * - google/protobuf/duration.proto\n * - google/protobuf/empty.proto\n * - google/protobuf/field_mask.proto\n * - google/protobuf/struct.proto\n * - google/protobuf/timestamp.proto\n * - google/protobuf/wrappers.proto\n *\n * @param {string} file Proto file name\n * @returns {INamespace|null} Root definition or `null` if not defined\n */\ncommon.get = function get(file) {\n    return common[file] || null;\n};\n", "\"use strict\";\nvar protobuf = module.exports = require(\"./index-light\");\n\nprotobuf.build = \"full\";\n\n// Parser\nprotobuf.tokenize         = require(\"./tokenize\");\nprotobuf.parse            = require(\"./parse\");\nprotobuf.common           = require(\"./common\");\n\n// Configure parser\nprotobuf.Root._configure(protobuf.Type, protobuf.parse, protobuf.common);\n", "// full library entry point.\n\n\"use strict\";\nmodule.exports = require(\"./src/index\");\n", "{\n  \"nested\": {\n    \"google\": {\n      \"nested\": {\n        \"protobuf\": {\n          \"options\": {\n            \"go_package\": \"google.golang.org/protobuf/types/descriptorpb\",\n            \"java_package\": \"com.google.protobuf\",\n            \"java_outer_classname\": \"DescriptorProtos\",\n            \"csharp_namespace\": \"Google.Protobuf.Reflection\",\n            \"objc_class_prefix\": \"GPB\",\n            \"cc_enable_arenas\": true,\n            \"optimize_for\": \"SPEED\"\n          },\n          \"nested\": {\n            \"FileDescriptorSet\": {\n              \"edition\": \"proto2\",\n              \"fields\": {\n                \"file\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"FileDescriptorProto\",\n                  \"id\": 1\n                }\n              },\n              \"extensions\": [\n                [\n                  536000000,\n                  536000000\n                ]\n              ]\n            },\n            \"Edition\": {\n              \"edition\": \"proto2\",\n              \"values\": {\n                \"EDITION_UNKNOWN\": 0,\n                \"EDITION_LEGACY\": 900,\n                \"EDITION_PROTO2\": 998,\n                \"EDITION_PROTO3\": 999,\n                \"EDITION_2023\": 1000,\n                \"EDITION_2024\": 1001,\n                \"EDITION_1_TEST_ONLY\": 1,\n                \"EDITION_2_TEST_ONLY\": 2,\n                \"EDITION_99997_TEST_ONLY\": 99997,\n                \"EDITION_99998_TEST_ONLY\": 99998,\n                \"EDITION_99999_TEST_ONLY\": 99999,\n                \"EDITION_MAX\": 2147483647\n              }\n            },\n            \"FileDescriptorProto\": {\n              \"edition\": \"proto2\",\n              \"fields\": {\n                \"name\": {\n                  \"type\": \"string\",\n                  \"id\": 1\n                },\n                \"package\": {\n                  \"type\": \"string\",\n                  \"id\": 2\n                },\n                \"dependency\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"string\",\n                  \"id\": 3\n                },\n                \"publicDependency\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"int32\",\n                  \"id\": 10\n                },\n                \"weakDependency\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"int32\",\n                  \"id\": 11\n                },\n                \"optionDependency\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"string\",\n                  \"id\": 15\n                },\n                \"messageType\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"DescriptorProto\",\n                  \"id\": 4\n                },\n                \"enumType\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"EnumDescriptorProto\",\n                  \"id\": 5\n                },\n                \"service\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"ServiceDescriptorProto\",\n                  \"id\": 6\n                },\n                \"extension\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"FieldDescriptorProto\",\n                  \"id\": 7\n                },\n                \"options\": {\n                  \"type\": \"FileOptions\",\n                  \"id\": 8\n                },\n                \"sourceCodeInfo\": {\n                  \"type\": \"SourceCodeInfo\",\n                  \"id\": 9\n                },\n                \"syntax\": {\n                  \"type\": \"string\",\n                  \"id\": 12\n                },\n                \"edition\": {\n                  \"type\": \"Edition\",\n                  \"id\": 14\n                }\n              }\n            },\n            \"DescriptorProto\": {\n              \"edition\": \"proto2\",\n              \"fields\": {\n                \"name\": {\n                  \"type\": \"string\",\n                  \"id\": 1\n                },\n                \"field\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"FieldDescriptorProto\",\n                  \"id\": 2\n                },\n                \"extension\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"FieldDescriptorProto\",\n                  \"id\": 6\n                },\n                \"nestedType\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"DescriptorProto\",\n                  \"id\": 3\n                },\n                \"enumType\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"EnumDescriptorProto\",\n                  \"id\": 4\n                },\n                \"extensionRange\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"ExtensionRange\",\n                  \"id\": 5\n                },\n                \"oneofDecl\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"OneofDescriptorProto\",\n                  \"id\": 8\n                },\n                \"options\": {\n                  \"type\": \"MessageOptions\",\n                  \"id\": 7\n                },\n                \"reservedRange\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"ReservedRange\",\n                  \"id\": 9\n                },\n                \"reservedName\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"string\",\n                  \"id\": 10\n                },\n                \"visibility\": {\n                  \"type\": \"SymbolVisibility\",\n                  \"id\": 11\n                }\n              },\n              \"nested\": {\n                \"ExtensionRange\": {\n                  \"fields\": {\n                    \"start\": {\n                      \"type\": \"int32\",\n                      \"id\": 1\n                    },\n                    \"end\": {\n                      \"type\": \"int32\",\n                      \"id\": 2\n                    },\n                    \"options\": {\n                      \"type\": \"ExtensionRangeOptions\",\n                      \"id\": 3\n                    }\n                  }\n                },\n                \"ReservedRange\": {\n                  \"fields\": {\n                    \"start\": {\n                      \"type\": \"int32\",\n                      \"id\": 1\n                    },\n                    \"end\": {\n                      \"type\": \"int32\",\n                      \"id\": 2\n                    }\n                  }\n                }\n              }\n            },\n            \"ExtensionRangeOptions\": {\n              \"edition\": \"proto2\",\n              \"fields\": {\n                \"uninterpretedOption\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"UninterpretedOption\",\n                  \"id\": 999\n                },\n                \"declaration\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"Declaration\",\n                  \"id\": 2,\n                  \"options\": {\n                    \"retention\": \"RETENTION_SOURCE\"\n                  }\n                },\n                \"features\": {\n                  \"type\": \"FeatureSet\",\n                  \"id\": 50\n                },\n                \"verification\": {\n                  \"type\": \"VerificationState\",\n                  \"id\": 3,\n                  \"options\": {\n                    \"default\": \"UNVERIFIED\",\n                    \"retention\": \"RETENTION_SOURCE\"\n                  }\n                }\n              },\n              \"extensions\": [\n                [\n                  1000,\n                  536870911\n                ]\n              ],\n              \"nested\": {\n                \"Declaration\": {\n                  \"fields\": {\n                    \"number\": {\n                      \"type\": \"int32\",\n                      \"id\": 1\n                    },\n                    \"fullName\": {\n                      \"type\": \"string\",\n                      \"id\": 2\n                    },\n                    \"type\": {\n                      \"type\": \"string\",\n                      \"id\": 3\n                    },\n                    \"reserved\": {\n                      \"type\": \"bool\",\n                      \"id\": 5\n                    },\n                    \"repeated\": {\n                      \"type\": \"bool\",\n                      \"id\": 6\n                    }\n                  },\n                  \"reserved\": [\n                    [\n                      4,\n                      4\n                    ]\n                  ]\n                },\n                \"VerificationState\": {\n                  \"values\": {\n                    \"DECLARATION\": 0,\n                    \"UNVERIFIED\": 1\n                  }\n                }\n              }\n            },\n            \"FieldDescriptorProto\": {\n              \"edition\": \"proto2\",\n              \"fields\": {\n                \"name\": {\n                  \"type\": \"string\",\n                  \"id\": 1\n                },\n                \"number\": {\n                  \"type\": \"int32\",\n                  \"id\": 3\n                },\n                \"label\": {\n                  \"type\": \"Label\",\n                  \"id\": 4\n                },\n                \"type\": {\n                  \"type\": \"Type\",\n                  \"id\": 5\n                },\n                \"typeName\": {\n                  \"type\": \"string\",\n                  \"id\": 6\n                },\n                \"extendee\": {\n                  \"type\": \"string\",\n                  \"id\": 2\n                },\n                \"defaultValue\": {\n                  \"type\": \"string\",\n                  \"id\": 7\n                },\n                \"oneofIndex\": {\n                  \"type\": \"int32\",\n                  \"id\": 9\n                },\n                \"jsonName\": {\n                  \"type\": \"string\",\n                  \"id\": 10\n                },\n                \"options\": {\n                  \"type\": \"FieldOptions\",\n                  \"id\": 8\n                },\n                \"proto3Optional\": {\n                  \"type\": \"bool\",\n                  \"id\": 17\n                }\n              },\n              \"nested\": {\n                \"Type\": {\n                  \"values\": {\n                    \"TYPE_DOUBLE\": 1,\n                    \"TYPE_FLOAT\": 2,\n                    \"TYPE_INT64\": 3,\n                    \"TYPE_UINT64\": 4,\n                    \"TYPE_INT32\": 5,\n                    \"TYPE_FIXED64\": 6,\n                    \"TYPE_FIXED32\": 7,\n                    \"TYPE_BOOL\": 8,\n                    \"TYPE_STRING\": 9,\n                    \"TYPE_GROUP\": 10,\n                    \"TYPE_MESSAGE\": 11,\n                    \"TYPE_BYTES\": 12,\n                    \"TYPE_UINT32\": 13,\n                    \"TYPE_ENUM\": 14,\n                    \"TYPE_SFIXED32\": 15,\n                    \"TYPE_SFIXED64\": 16,\n                    \"TYPE_SINT32\": 17,\n                    \"TYPE_SINT64\": 18\n                  }\n                },\n                \"Label\": {\n                  \"values\": {\n                    \"LABEL_OPTIONAL\": 1,\n                    \"LABEL_REPEATED\": 3,\n                    \"LABEL_REQUIRED\": 2\n                  }\n                }\n              }\n            },\n            \"OneofDescriptorProto\": {\n              \"edition\": \"proto2\",\n              \"fields\": {\n                \"name\": {\n                  \"type\": \"string\",\n                  \"id\": 1\n                },\n                \"options\": {\n                  \"type\": \"OneofOptions\",\n                  \"id\": 2\n                }\n              }\n            },\n            \"EnumDescriptorProto\": {\n              \"edition\": \"proto2\",\n              \"fields\": {\n                \"name\": {\n                  \"type\": \"string\",\n                  \"id\": 1\n                },\n                \"value\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"EnumValueDescriptorProto\",\n                  \"id\": 2\n                },\n                \"options\": {\n                  \"type\": \"EnumOptions\",\n                  \"id\": 3\n                },\n                \"reservedRange\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"EnumReservedRange\",\n                  \"id\": 4\n                },\n                \"reservedName\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"string\",\n                  \"id\": 5\n                },\n                \"visibility\": {\n                  \"type\": \"SymbolVisibility\",\n                  \"id\": 6\n                }\n              },\n              \"nested\": {\n                \"EnumReservedRange\": {\n                  \"fields\": {\n                    \"start\": {\n                      \"type\": \"int32\",\n                      \"id\": 1\n                    },\n                    \"end\": {\n                      \"type\": \"int32\",\n                      \"id\": 2\n                    }\n                  }\n                }\n              }\n            },\n            \"EnumValueDescriptorProto\": {\n              \"edition\": \"proto2\",\n              \"fields\": {\n                \"name\": {\n                  \"type\": \"string\",\n                  \"id\": 1\n                },\n                \"number\": {\n                  \"type\": \"int32\",\n                  \"id\": 2\n                },\n                \"options\": {\n                  \"type\": \"EnumValueOptions\",\n                  \"id\": 3\n                }\n              }\n            },\n            \"ServiceDescriptorProto\": {\n              \"edition\": \"proto2\",\n              \"fields\": {\n                \"name\": {\n                  \"type\": \"string\",\n                  \"id\": 1\n                },\n                \"method\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"MethodDescriptorProto\",\n                  \"id\": 2\n                },\n                \"options\": {\n                  \"type\": \"ServiceOptions\",\n                  \"id\": 3\n                }\n              }\n            },\n            \"MethodDescriptorProto\": {\n              \"edition\": \"proto2\",\n              \"fields\": {\n                \"name\": {\n                  \"type\": \"string\",\n                  \"id\": 1\n                },\n                \"inputType\": {\n                  \"type\": \"string\",\n                  \"id\": 2\n                },\n                \"outputType\": {\n                  \"type\": \"string\",\n                  \"id\": 3\n                },\n                \"options\": {\n                  \"type\": \"MethodOptions\",\n                  \"id\": 4\n                },\n                \"clientStreaming\": {\n                  \"type\": \"bool\",\n                  \"id\": 5\n                },\n                \"serverStreaming\": {\n                  \"type\": \"bool\",\n                  \"id\": 6\n                }\n              }\n            },\n            \"FileOptions\": {\n              \"edition\": \"proto2\",\n              \"fields\": {\n                \"javaPackage\": {\n                  \"type\": \"string\",\n                  \"id\": 1\n                },\n                \"javaOuterClassname\": {\n                  \"type\": \"string\",\n                  \"id\": 8\n                },\n                \"javaMultipleFiles\": {\n                  \"type\": \"bool\",\n                  \"id\": 10\n                },\n                \"javaGenerateEqualsAndHash\": {\n                  \"type\": \"bool\",\n                  \"id\": 20,\n                  \"options\": {\n                    \"deprecated\": true\n                  }\n                },\n                \"javaStringCheckUtf8\": {\n                  \"type\": \"bool\",\n                  \"id\": 27\n                },\n                \"optimizeFor\": {\n                  \"type\": \"OptimizeMode\",\n                  \"id\": 9,\n                  \"options\": {\n                    \"default\": \"SPEED\"\n                  }\n                },\n                \"goPackage\": {\n                  \"type\": \"string\",\n                  \"id\": 11\n                },\n                \"ccGenericServices\": {\n                  \"type\": \"bool\",\n                  \"id\": 16\n                },\n                \"javaGenericServices\": {\n                  \"type\": \"bool\",\n                  \"id\": 17\n                },\n                \"pyGenericServices\": {\n                  \"type\": \"bool\",\n                  \"id\": 18\n                },\n                \"deprecated\": {\n                  \"type\": \"bool\",\n                  \"id\": 23\n                },\n                \"ccEnableArenas\": {\n                  \"type\": \"bool\",\n                  \"id\": 31,\n                  \"options\": {\n                    \"default\": true\n                  }\n                },\n                \"objcClassPrefix\": {\n                  \"type\": \"string\",\n                  \"id\": 36\n                },\n                \"csharpNamespace\": {\n                  \"type\": \"string\",\n                  \"id\": 37\n                },\n                \"swiftPrefix\": {\n                  \"type\": \"string\",\n                  \"id\": 39\n                },\n                \"phpClassPrefix\": {\n                  \"type\": \"string\",\n                  \"id\": 40\n                },\n                \"phpNamespace\": {\n                  \"type\": \"string\",\n                  \"id\": 41\n                },\n                \"phpMetadataNamespace\": {\n                  \"type\": \"string\",\n                  \"id\": 44\n                },\n                \"rubyPackage\": {\n                  \"type\": \"string\",\n                  \"id\": 45\n                },\n                \"features\": {\n                  \"type\": \"FeatureSet\",\n                  \"id\": 50\n                },\n                \"uninterpretedOption\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"UninterpretedOption\",\n                  \"id\": 999\n                }\n              },\n              \"extensions\": [\n                [\n                  1000,\n                  536870911\n                ]\n              ],\n              \"reserved\": [\n                [\n                  42,\n                  42\n                ],\n                [\n                  38,\n                  38\n                ],\n                \"php_generic_services\"\n              ],\n              \"nested\": {\n                \"OptimizeMode\": {\n                  \"values\": {\n                    \"SPEED\": 1,\n                    \"CODE_SIZE\": 2,\n                    \"LITE_RUNTIME\": 3\n                  }\n                }\n              }\n            },\n            \"MessageOptions\": {\n              \"edition\": \"proto2\",\n              \"fields\": {\n                \"messageSetWireFormat\": {\n                  \"type\": \"bool\",\n                  \"id\": 1\n                },\n                \"noStandardDescriptorAccessor\": {\n                  \"type\": \"bool\",\n                  \"id\": 2\n                },\n                \"deprecated\": {\n                  \"type\": \"bool\",\n                  \"id\": 3\n                },\n                \"mapEntry\": {\n                  \"type\": \"bool\",\n                  \"id\": 7\n                },\n                \"deprecatedLegacyJsonFieldConflicts\": {\n                  \"type\": \"bool\",\n                  \"id\": 11,\n                  \"options\": {\n                    \"deprecated\": true\n                  }\n                },\n                \"features\": {\n                  \"type\": \"FeatureSet\",\n                  \"id\": 12\n                },\n                \"uninterpretedOption\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"UninterpretedOption\",\n                  \"id\": 999\n                }\n              },\n              \"extensions\": [\n                [\n                  1000,\n                  536870911\n                ]\n              ],\n              \"reserved\": [\n                [\n                  4,\n                  4\n                ],\n                [\n                  5,\n                  5\n                ],\n                [\n                  6,\n                  6\n                ],\n                [\n                  8,\n                  8\n                ],\n                [\n                  9,\n                  9\n                ]\n              ]\n            },\n            \"FieldOptions\": {\n              \"edition\": \"proto2\",\n              \"fields\": {\n                \"ctype\": {\n                  \"type\": \"CType\",\n                  \"id\": 1,\n                  \"options\": {\n                    \"default\": \"STRING\"\n                  }\n                },\n                \"packed\": {\n                  \"type\": \"bool\",\n                  \"id\": 2\n                },\n                \"jstype\": {\n                  \"type\": \"JSType\",\n                  \"id\": 6,\n                  \"options\": {\n                    \"default\": \"JS_NORMAL\"\n                  }\n                },\n                \"lazy\": {\n                  \"type\": \"bool\",\n                  \"id\": 5\n                },\n                \"unverifiedLazy\": {\n                  \"type\": \"bool\",\n                  \"id\": 15\n                },\n                \"deprecated\": {\n                  \"type\": \"bool\",\n                  \"id\": 3\n                },\n                \"weak\": {\n                  \"type\": \"bool\",\n                  \"id\": 10,\n                  \"options\": {\n                    \"deprecated\": true\n                  }\n                },\n                \"debugRedact\": {\n                  \"type\": \"bool\",\n                  \"id\": 16\n                },\n                \"retention\": {\n                  \"type\": \"OptionRetention\",\n                  \"id\": 17\n                },\n                \"targets\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"OptionTargetType\",\n                  \"id\": 19\n                },\n                \"editionDefaults\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"EditionDefault\",\n                  \"id\": 20\n                },\n                \"features\": {\n                  \"type\": \"FeatureSet\",\n                  \"id\": 21\n                },\n                \"featureSupport\": {\n                  \"type\": \"FeatureSupport\",\n                  \"id\": 22\n                },\n                \"uninterpretedOption\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"UninterpretedOption\",\n                  \"id\": 999\n                }\n              },\n              \"extensions\": [\n                [\n                  1000,\n                  536870911\n                ]\n              ],\n              \"reserved\": [\n                [\n                  4,\n                  4\n                ],\n                [\n                  18,\n                  18\n                ]\n              ],\n              \"nested\": {\n                \"CType\": {\n                  \"values\": {\n                    \"STRING\": 0,\n                    \"CORD\": 1,\n                    \"STRING_PIECE\": 2\n                  }\n                },\n                \"JSType\": {\n                  \"values\": {\n                    \"JS_NORMAL\": 0,\n                    \"JS_STRING\": 1,\n                    \"JS_NUMBER\": 2\n                  }\n                },\n                \"OptionRetention\": {\n                  \"values\": {\n                    \"RETENTION_UNKNOWN\": 0,\n                    \"RETENTION_RUNTIME\": 1,\n                    \"RETENTION_SOURCE\": 2\n                  }\n                },\n                \"OptionTargetType\": {\n                  \"values\": {\n                    \"TARGET_TYPE_UNKNOWN\": 0,\n                    \"TARGET_TYPE_FILE\": 1,\n                    \"TARGET_TYPE_EXTENSION_RANGE\": 2,\n                    \"TARGET_TYPE_MESSAGE\": 3,\n                    \"TARGET_TYPE_FIELD\": 4,\n                    \"TARGET_TYPE_ONEOF\": 5,\n                    \"TARGET_TYPE_ENUM\": 6,\n                    \"TARGET_TYPE_ENUM_ENTRY\": 7,\n                    \"TARGET_TYPE_SERVICE\": 8,\n                    \"TARGET_TYPE_METHOD\": 9\n                  }\n                },\n                \"EditionDefault\": {\n                  \"fields\": {\n                    \"edition\": {\n                      \"type\": \"Edition\",\n                      \"id\": 3\n                    },\n                    \"value\": {\n                      \"type\": \"string\",\n                      \"id\": 2\n                    }\n                  }\n                },\n                \"FeatureSupport\": {\n                  \"fields\": {\n                    \"editionIntroduced\": {\n                      \"type\": \"Edition\",\n                      \"id\": 1\n                    },\n                    \"editionDeprecated\": {\n                      \"type\": \"Edition\",\n                      \"id\": 2\n                    },\n                    \"deprecationWarning\": {\n                      \"type\": \"string\",\n                      \"id\": 3\n                    },\n                    \"editionRemoved\": {\n                      \"type\": \"Edition\",\n                      \"id\": 4\n                    }\n                  }\n                }\n              }\n            },\n            \"OneofOptions\": {\n              \"edition\": \"proto2\",\n              \"fields\": {\n                \"features\": {\n                  \"type\": \"FeatureSet\",\n                  \"id\": 1\n                },\n                \"uninterpretedOption\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"UninterpretedOption\",\n                  \"id\": 999\n                }\n              },\n              \"extensions\": [\n                [\n                  1000,\n                  536870911\n                ]\n              ]\n            },\n            \"EnumOptions\": {\n              \"edition\": \"proto2\",\n              \"fields\": {\n                \"allowAlias\": {\n                  \"type\": \"bool\",\n                  \"id\": 2\n                },\n                \"deprecated\": {\n                  \"type\": \"bool\",\n                  \"id\": 3\n                },\n                \"deprecatedLegacyJsonFieldConflicts\": {\n                  \"type\": \"bool\",\n                  \"id\": 6,\n                  \"options\": {\n                    \"deprecated\": true\n                  }\n                },\n                \"features\": {\n                  \"type\": \"FeatureSet\",\n                  \"id\": 7\n                },\n                \"uninterpretedOption\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"UninterpretedOption\",\n                  \"id\": 999\n                }\n              },\n              \"extensions\": [\n                [\n                  1000,\n                  536870911\n                ]\n              ],\n              \"reserved\": [\n                [\n                  5,\n                  5\n                ]\n              ]\n            },\n            \"EnumValueOptions\": {\n              \"edition\": \"proto2\",\n              \"fields\": {\n                \"deprecated\": {\n                  \"type\": \"bool\",\n                  \"id\": 1\n                },\n                \"features\": {\n                  \"type\": \"FeatureSet\",\n                  \"id\": 2\n                },\n                \"debugRedact\": {\n                  \"type\": \"bool\",\n                  \"id\": 3\n                },\n                \"featureSupport\": {\n                  \"type\": \"FieldOptions.FeatureSupport\",\n                  \"id\": 4\n                },\n                \"uninterpretedOption\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"UninterpretedOption\",\n                  \"id\": 999\n                }\n              },\n              \"extensions\": [\n                [\n                  1000,\n                  536870911\n                ]\n              ]\n            },\n            \"ServiceOptions\": {\n              \"edition\": \"proto2\",\n              \"fields\": {\n                \"features\": {\n                  \"type\": \"FeatureSet\",\n                  \"id\": 34\n                },\n                \"deprecated\": {\n                  \"type\": \"bool\",\n                  \"id\": 33\n                },\n                \"uninterpretedOption\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"UninterpretedOption\",\n                  \"id\": 999\n                }\n              },\n              \"extensions\": [\n                [\n                  1000,\n                  536870911\n                ]\n              ]\n            },\n            \"MethodOptions\": {\n              \"edition\": \"proto2\",\n              \"fields\": {\n                \"deprecated\": {\n                  \"type\": \"bool\",\n                  \"id\": 33\n                },\n                \"idempotencyLevel\": {\n                  \"type\": \"IdempotencyLevel\",\n                  \"id\": 34,\n                  \"options\": {\n                    \"default\": \"IDEMPOTENCY_UNKNOWN\"\n                  }\n                },\n                \"features\": {\n                  \"type\": \"FeatureSet\",\n                  \"id\": 35\n                },\n                \"uninterpretedOption\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"UninterpretedOption\",\n                  \"id\": 999\n                }\n              },\n              \"extensions\": [\n                [\n                  1000,\n                  536870911\n                ]\n              ],\n              \"nested\": {\n                \"IdempotencyLevel\": {\n                  \"values\": {\n                    \"IDEMPOTENCY_UNKNOWN\": 0,\n                    \"NO_SIDE_EFFECTS\": 1,\n                    \"IDEMPOTENT\": 2\n                  }\n                }\n              }\n            },\n            \"UninterpretedOption\": {\n              \"edition\": \"proto2\",\n              \"fields\": {\n                \"name\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"NamePart\",\n                  \"id\": 2\n                },\n                \"identifierValue\": {\n                  \"type\": \"string\",\n                  \"id\": 3\n                },\n                \"positiveIntValue\": {\n                  \"type\": \"uint64\",\n                  \"id\": 4\n                },\n                \"negativeIntValue\": {\n                  \"type\": \"int64\",\n                  \"id\": 5\n                },\n                \"doubleValue\": {\n                  \"type\": \"double\",\n                  \"id\": 6\n                },\n                \"stringValue\": {\n                  \"type\": \"bytes\",\n                  \"id\": 7\n                },\n                \"aggregateValue\": {\n                  \"type\": \"string\",\n                  \"id\": 8\n                }\n              },\n              \"nested\": {\n                \"NamePart\": {\n                  \"fields\": {\n                    \"namePart\": {\n                      \"rule\": \"required\",\n                      \"type\": \"string\",\n                      \"id\": 1\n                    },\n                    \"isExtension\": {\n                      \"rule\": \"required\",\n                      \"type\": \"bool\",\n                      \"id\": 2\n                    }\n                  }\n                }\n              }\n            },\n            \"FeatureSet\": {\n              \"edition\": \"proto2\",\n              \"fields\": {\n                \"fieldPresence\": {\n                  \"type\": \"FieldPresence\",\n                  \"id\": 1,\n                  \"options\": {\n                    \"retention\": \"RETENTION_RUNTIME\",\n                    \"targets\": \"TARGET_TYPE_FILE\",\n                    \"feature_support.edition_introduced\": \"EDITION_2023\",\n                    \"edition_defaults.edition\": \"EDITION_2023\",\n                    \"edition_defaults.value\": \"EXPLICIT\"\n                  }\n                },\n                \"enumType\": {\n                  \"type\": \"EnumType\",\n                  \"id\": 2,\n                  \"options\": {\n                    \"retention\": \"RETENTION_RUNTIME\",\n                    \"targets\": \"TARGET_TYPE_FILE\",\n                    \"feature_support.edition_introduced\": \"EDITION_2023\",\n                    \"edition_defaults.edition\": \"EDITION_PROTO3\",\n                    \"edition_defaults.value\": \"OPEN\"\n                  }\n                },\n                \"repeatedFieldEncoding\": {\n                  \"type\": \"RepeatedFieldEncoding\",\n                  \"id\": 3,\n                  \"options\": {\n                    \"retention\": \"RETENTION_RUNTIME\",\n                    \"targets\": \"TARGET_TYPE_FILE\",\n                    \"feature_support.edition_introduced\": \"EDITION_2023\",\n                    \"edition_defaults.edition\": \"EDITION_PROTO3\",\n                    \"edition_defaults.value\": \"PACKED\"\n                  }\n                },\n                \"utf8Validation\": {\n                  \"type\": \"Utf8Validation\",\n                  \"id\": 4,\n                  \"options\": {\n                    \"retention\": \"RETENTION_RUNTIME\",\n                    \"targets\": \"TARGET_TYPE_FILE\",\n                    \"feature_support.edition_introduced\": \"EDITION_2023\",\n                    \"edition_defaults.edition\": \"EDITION_PROTO3\",\n                    \"edition_defaults.value\": \"VERIFY\"\n                  }\n                },\n                \"messageEncoding\": {\n                  \"type\": \"MessageEncoding\",\n                  \"id\": 5,\n                  \"options\": {\n                    \"retention\": \"RETENTION_RUNTIME\",\n                    \"targets\": \"TARGET_TYPE_FILE\",\n                    \"feature_support.edition_introduced\": \"EDITION_2023\",\n                    \"edition_defaults.edition\": \"EDITION_LEGACY\",\n                    \"edition_defaults.value\": \"LENGTH_PREFIXED\"\n                  }\n                },\n                \"jsonFormat\": {\n                  \"type\": \"JsonFormat\",\n                  \"id\": 6,\n                  \"options\": {\n                    \"retention\": \"RETENTION_RUNTIME\",\n                    \"targets\": \"TARGET_TYPE_FILE\",\n                    \"feature_support.edition_introduced\": \"EDITION_2023\",\n                    \"edition_defaults.edition\": \"EDITION_PROTO3\",\n                    \"edition_defaults.value\": \"ALLOW\"\n                  }\n                },\n                \"enforceNamingStyle\": {\n                  \"type\": \"EnforceNamingStyle\",\n                  \"id\": 7,\n                  \"options\": {\n                    \"retention\": \"RETENTION_SOURCE\",\n                    \"targets\": \"TARGET_TYPE_METHOD\",\n                    \"feature_support.edition_introduced\": \"EDITION_2024\",\n                    \"edition_defaults.edition\": \"EDITION_2024\",\n                    \"edition_defaults.value\": \"STYLE2024\"\n                  }\n                },\n                \"defaultSymbolVisibility\": {\n                  \"type\": \"VisibilityFeature.DefaultSymbolVisibility\",\n                  \"id\": 8,\n                  \"options\": {\n                    \"retention\": \"RETENTION_SOURCE\",\n                    \"targets\": \"TARGET_TYPE_FILE\",\n                    \"feature_support.edition_introduced\": \"EDITION_2024\",\n                    \"edition_defaults.edition\": \"EDITION_2024\",\n                    \"edition_defaults.value\": \"EXPORT_TOP_LEVEL\"\n                  }\n                }\n              },\n              \"extensions\": [\n                [\n                  1000,\n                  9994\n                ],\n                [\n                  9995,\n                  9999\n                ],\n                [\n                  10000,\n                  10000\n                ]\n              ],\n              \"reserved\": [\n                [\n                  999,\n                  999\n                ]\n              ],\n              \"nested\": {\n                \"FieldPresence\": {\n                  \"values\": {\n                    \"FIELD_PRESENCE_UNKNOWN\": 0,\n                    \"EXPLICIT\": 1,\n                    \"IMPLICIT\": 2,\n                    \"LEGACY_REQUIRED\": 3\n                  }\n                },\n                \"EnumType\": {\n                  \"values\": {\n                    \"ENUM_TYPE_UNKNOWN\": 0,\n                    \"OPEN\": 1,\n                    \"CLOSED\": 2\n                  }\n                },\n                \"RepeatedFieldEncoding\": {\n                  \"values\": {\n                    \"REPEATED_FIELD_ENCODING_UNKNOWN\": 0,\n                    \"PACKED\": 1,\n                    \"EXPANDED\": 2\n                  }\n                },\n                \"Utf8Validation\": {\n                  \"values\": {\n                    \"UTF8_VALIDATION_UNKNOWN\": 0,\n                    \"VERIFY\": 2,\n                    \"NONE\": 3\n                  }\n                },\n                \"MessageEncoding\": {\n                  \"values\": {\n                    \"MESSAGE_ENCODING_UNKNOWN\": 0,\n                    \"LENGTH_PREFIXED\": 1,\n                    \"DELIMITED\": 2\n                  }\n                },\n                \"JsonFormat\": {\n                  \"values\": {\n                    \"JSON_FORMAT_UNKNOWN\": 0,\n                    \"ALLOW\": 1,\n                    \"LEGACY_BEST_EFFORT\": 2\n                  }\n                },\n                \"EnforceNamingStyle\": {\n                  \"values\": {\n                    \"ENFORCE_NAMING_STYLE_UNKNOWN\": 0,\n                    \"STYLE2024\": 1,\n                    \"STYLE_LEGACY\": 2\n                  }\n                },\n                \"VisibilityFeature\": {\n                  \"fields\": {},\n                  \"reserved\": [\n                    [\n                      1,\n                      536870911\n                    ]\n                  ],\n                  \"nested\": {\n                    \"DefaultSymbolVisibility\": {\n                      \"values\": {\n                        \"DEFAULT_SYMBOL_VISIBILITY_UNKNOWN\": 0,\n                        \"EXPORT_ALL\": 1,\n                        \"EXPORT_TOP_LEVEL\": 2,\n                        \"LOCAL_ALL\": 3,\n                        \"STRICT\": 4\n                      }\n                    }\n                  }\n                }\n              }\n            },\n            \"FeatureSetDefaults\": {\n              \"edition\": \"proto2\",\n              \"fields\": {\n                \"defaults\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"FeatureSetEditionDefault\",\n                  \"id\": 1\n                },\n                \"minimumEdition\": {\n                  \"type\": \"Edition\",\n                  \"id\": 4\n                },\n                \"maximumEdition\": {\n                  \"type\": \"Edition\",\n                  \"id\": 5\n                }\n              },\n              \"nested\": {\n                \"FeatureSetEditionDefault\": {\n                  \"fields\": {\n                    \"edition\": {\n                      \"type\": \"Edition\",\n                      \"id\": 3\n                    },\n                    \"overridableFeatures\": {\n                      \"type\": \"FeatureSet\",\n                      \"id\": 4\n                    },\n                    \"fixedFeatures\": {\n                      \"type\": \"FeatureSet\",\n                      \"id\": 5\n                    }\n                  },\n                  \"reserved\": [\n                    [\n                      1,\n                      1\n                    ],\n                    [\n                      2,\n                      2\n                    ],\n                    \"features\"\n                  ]\n                }\n              }\n            },\n            \"SourceCodeInfo\": {\n              \"edition\": \"proto2\",\n              \"fields\": {\n                \"location\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"Location\",\n                  \"id\": 1\n                }\n              },\n              \"extensions\": [\n                [\n                  536000000,\n                  536000000\n                ]\n              ],\n              \"nested\": {\n                \"Location\": {\n                  \"fields\": {\n                    \"path\": {\n                      \"rule\": \"repeated\",\n                      \"type\": \"int32\",\n                      \"id\": 1,\n                      \"options\": {\n                        \"packed\": true\n                      }\n                    },\n                    \"span\": {\n                      \"rule\": \"repeated\",\n                      \"type\": \"int32\",\n                      \"id\": 2,\n                      \"options\": {\n                        \"packed\": true\n                      }\n                    },\n                    \"leadingComments\": {\n                      \"type\": \"string\",\n                      \"id\": 3\n                    },\n                    \"trailingComments\": {\n                      \"type\": \"string\",\n                      \"id\": 4\n                    },\n                    \"leadingDetachedComments\": {\n                      \"rule\": \"repeated\",\n                      \"type\": \"string\",\n                      \"id\": 6\n                    }\n                  }\n                }\n              }\n            },\n            \"GeneratedCodeInfo\": {\n              \"edition\": \"proto2\",\n              \"fields\": {\n                \"annotation\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"Annotation\",\n                  \"id\": 1\n                }\n              },\n              \"nested\": {\n                \"Annotation\": {\n                  \"fields\": {\n                    \"path\": {\n                      \"rule\": \"repeated\",\n                      \"type\": \"int32\",\n                      \"id\": 1,\n                      \"options\": {\n                        \"packed\": true\n                      }\n                    },\n                    \"sourceFile\": {\n                      \"type\": \"string\",\n                      \"id\": 2\n                    },\n                    \"begin\": {\n                      \"type\": \"int32\",\n                      \"id\": 3\n                    },\n                    \"end\": {\n                      \"type\": \"int32\",\n                      \"id\": 4\n                    },\n                    \"semantic\": {\n                      \"type\": \"Semantic\",\n                      \"id\": 5\n                    }\n                  },\n                  \"nested\": {\n                    \"Semantic\": {\n                      \"values\": {\n                        \"NONE\": 0,\n                        \"SET\": 1,\n                        \"ALIAS\": 2\n                      }\n                    }\n                  }\n                }\n              }\n            },\n            \"SymbolVisibility\": {\n              \"edition\": \"proto2\",\n              \"values\": {\n                \"VISIBILITY_UNSET\": 0,\n                \"VISIBILITY_LOCAL\": 1,\n                \"VISIBILITY_EXPORT\": 2\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n}", "\"use strict\";\nvar $protobuf = require(\"../..\");\nmodule.exports = exports = $protobuf.descriptor = $protobuf.Root.fromJSON(require(\"../../google/protobuf/descriptor.json\")).lookup(\".google.protobuf\");\n\nvar Namespace = $protobuf.Namespace,\n    Root      = $protobuf.Root,\n    Enum      = $protobuf.Enum,\n    Type      = $protobuf.Type,\n    Field     = $protobuf.Field,\n    MapField  = $protobuf.MapField,\n    OneOf     = $protobuf.OneOf,\n    Service   = $protobuf.Service,\n    Method    = $protobuf.Method;\n\n// --- Root ---\n\n/**\n * Properties of a FileDescriptorSet message.\n * @interface IFileDescriptorSet\n * @property {IFileDescriptorProto[]} file Files\n */\n\n/**\n * Properties of a FileDescriptorProto message.\n * @interface IFileDescriptorProto\n * @property {string} [name] File name\n * @property {string} [package] Package\n * @property {*} [dependency] Not supported\n * @property {*} [publicDependency] Not supported\n * @property {*} [weakDependency] Not supported\n * @property {IDescriptorProto[]} [messageType] Nested message types\n * @property {IEnumDescriptorProto[]} [enumType] Nested enums\n * @property {IServiceDescriptorProto[]} [service] Nested services\n * @property {IFieldDescriptorProto[]} [extension] Nested extension fields\n * @property {IFileOptions} [options] Options\n * @property {*} [sourceCodeInfo] Not supported\n * @property {string} [syntax=\"proto2\"] Syntax\n * @property {IEdition} [edition] Edition\n */\n\n/**\n * Values of the Edition enum.\n * @typedef IEdition\n * @type {number}\n * @property {number} EDITION_UNKNOWN=0\n * @property {number} EDITION_LEGACY=900\n * @property {number} EDITION_PROTO2=998\n * @property {number} EDITION_PROTO3=999\n * @property {number} EDITION_2023=1000\n * @property {number} EDITION_2024=1001\n * @property {number} EDITION_1_TEST_ONLY=1\n * @property {number} EDITION_2_TEST_ONLY=2\n * @property {number} EDITION_99997_TEST_ONLY=99997\n * @property {number} EDITION_99998_TEST_ONLY=99998\n * @property {number} EDITION_99998_TEST_ONLY=99999\n * @property {number} EDITION_MAX=2147483647\n */\n\n/**\n * Properties of a FileOptions message.\n * @interface IFileOptions\n * @property {string} [javaPackage]\n * @property {string} [javaOuterClassname]\n * @property {boolean} [javaMultipleFiles]\n * @property {boolean} [javaGenerateEqualsAndHash]\n * @property {boolean} [javaStringCheckUtf8]\n * @property {IFileOptionsOptimizeMode} [optimizeFor=1]\n * @property {string} [goPackage]\n * @property {boolean} [ccGenericServices]\n * @property {boolean} [javaGenericServices]\n * @property {boolean} [pyGenericServices]\n * @property {boolean} [deprecated]\n * @property {boolean} [ccEnableArenas]\n * @property {string} [objcClassPrefix]\n * @property {string} [csharpNamespace]\n */\n\n/**\n * Values of he FileOptions.OptimizeMode enum.\n * @typedef IFileOptionsOptimizeMode\n * @type {number}\n * @property {number} SPEED=1\n * @property {number} CODE_SIZE=2\n * @property {number} LITE_RUNTIME=3\n */\n\n/**\n * Creates a root from a descriptor set.\n * @param {IFileDescriptorSet|Reader|Uint8Array} descriptor Descriptor\n * @returns {Root} Root instance\n */\nRoot.fromDescriptor = function fromDescriptor(descriptor) {\n\n    // Decode the descriptor message if specified as a buffer:\n    if (typeof descriptor.length === \"number\")\n        descriptor = exports.FileDescriptorSet.decode(descriptor);\n\n    var root = new Root();\n\n    if (descriptor.file) {\n        var fileDescriptor,\n            filePackage;\n        for (var j = 0, i; j < descriptor.file.length; ++j) {\n            filePackage = root;\n            if ((fileDescriptor = descriptor.file[j])[\"package\"] && fileDescriptor[\"package\"].length)\n                filePackage = root.define(fileDescriptor[\"package\"]);\n            var edition = editionFromDescriptor(fileDescriptor);\n            if (fileDescriptor.name && fileDescriptor.name.length)\n                root.files.push(filePackage.filename = fileDescriptor.name);\n            if (fileDescriptor.messageType)\n                for (i = 0; i < fileDescriptor.messageType.length; ++i)\n                    filePackage.add(Type.fromDescriptor(fileDescriptor.messageType[i], edition));\n            if (fileDescriptor.enumType)\n                for (i = 0; i < fileDescriptor.enumType.length; ++i)\n                    filePackage.add(Enum.fromDescriptor(fileDescriptor.enumType[i], edition));\n            if (fileDescriptor.extension)\n                for (i = 0; i < fileDescriptor.extension.length; ++i)\n                    filePackage.add(Field.fromDescriptor(fileDescriptor.extension[i], edition));\n            if (fileDescriptor.service)\n                for (i = 0; i < fileDescriptor.service.length; ++i)\n                    filePackage.add(Service.fromDescriptor(fileDescriptor.service[i], edition));\n            var opts = fromDescriptorOptions(fileDescriptor.options, exports.FileOptions);\n            if (opts) {\n                var ks = Object.keys(opts);\n                for (i = 0; i < ks.length; ++i)\n                    filePackage.setOption(ks[i], opts[ks[i]]);\n            }\n        }\n    }\n\n    return root.resolveAll();\n};\n\n/**\n * Converts a root to a descriptor set.\n * @returns {Message<IFileDescriptorSet>} Descriptor\n * @param {string} [edition=\"proto2\"] The syntax or edition to use\n */\nRoot.prototype.toDescriptor = function toDescriptor(edition) {\n    var set = exports.FileDescriptorSet.create();\n    Root_toDescriptorRecursive(this, set.file, edition);\n    return set;\n};\n\n// Traverses a namespace and assembles the descriptor set\nfunction Root_toDescriptorRecursive(ns, files, edition) {\n\n    // Create a new file\n    var file = exports.FileDescriptorProto.create({ name: ns.filename || (ns.fullName.substring(1).replace(/\\./g, \"_\") || \"root\") + \".proto\" });\n    editionToDescriptor(edition, file);\n    if (!(ns instanceof Root))\n        file[\"package\"] = ns.fullName.substring(1);\n\n    // Add nested types\n    for (var i = 0, nested; i < ns.nestedArray.length; ++i)\n        if ((nested = ns._nestedArray[i]) instanceof Type)\n            file.messageType.push(nested.toDescriptor(edition));\n        else if (nested instanceof Enum)\n            file.enumType.push(nested.toDescriptor());\n        else if (nested instanceof Field)\n            file.extension.push(nested.toDescriptor(edition));\n        else if (nested instanceof Service)\n            file.service.push(nested.toDescriptor());\n        else if (nested instanceof /* plain */ Namespace)\n            Root_toDescriptorRecursive(nested, files, edition); // requires new file\n\n    // Keep package-level options\n    file.options = toDescriptorOptions(ns.options, exports.FileOptions);\n\n    // And keep the file only if there is at least one nested object\n    if (file.messageType.length + file.enumType.length + file.extension.length + file.service.length)\n        files.push(file);\n}\n\n// --- Type ---\n\n/**\n * Properties of a DescriptorProto message.\n * @interface IDescriptorProto\n * @property {string} [name] Message type name\n * @property {IFieldDescriptorProto[]} [field] Fields\n * @property {IFieldDescriptorProto[]} [extension] Extension fields\n * @property {IDescriptorProto[]} [nestedType] Nested message types\n * @property {IEnumDescriptorProto[]} [enumType] Nested enums\n * @property {IDescriptorProtoExtensionRange[]} [extensionRange] Extension ranges\n * @property {IOneofDescriptorProto[]} [oneofDecl] Oneofs\n * @property {IMessageOptions} [options] Not supported\n * @property {IDescriptorProtoReservedRange[]} [reservedRange] Reserved ranges\n * @property {string[]} [reservedName] Reserved names\n */\n\n/**\n * Properties of a MessageOptions message.\n * @interface IMessageOptions\n * @property {boolean} [mapEntry=false] Whether this message is a map entry\n */\n\n/**\n * Properties of an ExtensionRange message.\n * @interface IDescriptorProtoExtensionRange\n * @property {number} [start] Start field id\n * @property {number} [end] End field id\n */\n\n/**\n * Properties of a ReservedRange message.\n * @interface IDescriptorProtoReservedRange\n * @property {number} [start] Start field id\n * @property {number} [end] End field id\n */\n\nvar unnamedMessageIndex = 0;\n\n/**\n * Creates a type from a descriptor.\n *\n * Warning: this is not safe to use with editions protos, since it discards relevant file context.\n *\n * @param {IDescriptorProto|Reader|Uint8Array} descriptor Descriptor\n * @param {string} [edition=\"proto2\"] The syntax or edition to use\n * @param {boolean} [nested=false] Whether or not this is a nested object\n * @returns {Type} Type instance\n */\nType.fromDescriptor = function fromDescriptor(descriptor, edition, nested) {\n    // Decode the descriptor message if specified as a buffer:\n    if (typeof descriptor.length === \"number\")\n        descriptor = exports.DescriptorProto.decode(descriptor);\n\n    // Create the message type\n    var type = new Type(descriptor.name.length ? descriptor.name : \"Type\" + unnamedMessageIndex++, fromDescriptorOptions(descriptor.options, exports.MessageOptions)),\n        i;\n\n    if (!nested)\n        type._edition = edition;\n\n    /* Oneofs */ if (descriptor.oneofDecl)\n        for (i = 0; i < descriptor.oneofDecl.length; ++i)\n            type.add(OneOf.fromDescriptor(descriptor.oneofDecl[i]));\n    /* Fields */ if (descriptor.field)\n        for (i = 0; i < descriptor.field.length; ++i) {\n            var field = Field.fromDescriptor(descriptor.field[i], edition, true);\n            type.add(field);\n            if (descriptor.field[i].hasOwnProperty(\"oneofIndex\")) // eslint-disable-line no-prototype-builtins\n                type.oneofsArray[descriptor.field[i].oneofIndex].add(field);\n        }\n    /* Extension fields */ if (descriptor.extension)\n        for (i = 0; i < descriptor.extension.length; ++i)\n            type.add(Field.fromDescriptor(descriptor.extension[i], edition, true));\n    /* Nested types */ if (descriptor.nestedType)\n        for (i = 0; i < descriptor.nestedType.length; ++i) {\n            type.add(Type.fromDescriptor(descriptor.nestedType[i], edition, true));\n            if (descriptor.nestedType[i].options && descriptor.nestedType[i].options.mapEntry)\n                type.setOption(\"map_entry\", true);\n        }\n    /* Nested enums */ if (descriptor.enumType)\n        for (i = 0; i < descriptor.enumType.length; ++i)\n            type.add(Enum.fromDescriptor(descriptor.enumType[i], edition, true));\n    /* Extension ranges */ if (descriptor.extensionRange && descriptor.extensionRange.length) {\n        type.extensions = [];\n        for (i = 0; i < descriptor.extensionRange.length; ++i)\n            type.extensions.push([ descriptor.extensionRange[i].start, descriptor.extensionRange[i].end ]);\n    }\n    /* Reserved... */ if (descriptor.reservedRange && descriptor.reservedRange.length || descriptor.reservedName && descriptor.reservedName.length) {\n        type.reserved = [];\n        /* Ranges */ if (descriptor.reservedRange)\n            for (i = 0; i < descriptor.reservedRange.length; ++i)\n                type.reserved.push([ descriptor.reservedRange[i].start, descriptor.reservedRange[i].end ]);\n        /* Names */ if (descriptor.reservedName)\n            for (i = 0; i < descriptor.reservedName.length; ++i)\n                type.reserved.push(descriptor.reservedName[i]);\n    }\n\n    return type;\n};\n\n/**\n * Converts a type to a descriptor.\n * @returns {Message<IDescriptorProto>} Descriptor\n * @param {string} [edition=\"proto2\"] The syntax or edition to use\n */\nType.prototype.toDescriptor = function toDescriptor(edition) {\n    var descriptor = exports.DescriptorProto.create({ name: this.name }),\n        i;\n\n    /* Fields */ for (i = 0; i < this.fieldsArray.length; ++i) {\n        var fieldDescriptor;\n        descriptor.field.push(fieldDescriptor = this._fieldsArray[i].toDescriptor(edition));\n        if (this._fieldsArray[i] instanceof MapField) { // map fields are repeated FieldNameEntry\n            var keyType = toDescriptorType(this._fieldsArray[i].keyType, this._fieldsArray[i].resolvedKeyType, false),\n                valueType = toDescriptorType(this._fieldsArray[i].type, this._fieldsArray[i].resolvedType, false),\n                valueTypeName = valueType === /* type */ 11 || valueType === /* enum */ 14\n                    ? this._fieldsArray[i].resolvedType && shortname(this.parent, this._fieldsArray[i].resolvedType) || this._fieldsArray[i].type\n                    : undefined;\n            descriptor.nestedType.push(exports.DescriptorProto.create({\n                name: fieldDescriptor.typeName,\n                field: [\n                    exports.FieldDescriptorProto.create({ name: \"key\", number: 1, label: 1, type: keyType }), // can't reference a type or enum\n                    exports.FieldDescriptorProto.create({ name: \"value\", number: 2, label: 1, type: valueType, typeName: valueTypeName })\n                ],\n                options: exports.MessageOptions.create({ mapEntry: true })\n            }));\n        }\n    }\n    /* Oneofs */ for (i = 0; i < this.oneofsArray.length; ++i)\n        descriptor.oneofDecl.push(this._oneofsArray[i].toDescriptor());\n    /* Nested... */ for (i = 0; i < this.nestedArray.length; ++i) {\n        /* Extension fields */ if (this._nestedArray[i] instanceof Field)\n            descriptor.field.push(this._nestedArray[i].toDescriptor(edition));\n        /* Types */ else if (this._nestedArray[i] instanceof Type)\n            descriptor.nestedType.push(this._nestedArray[i].toDescriptor(edition));\n        /* Enums */ else if (this._nestedArray[i] instanceof Enum)\n            descriptor.enumType.push(this._nestedArray[i].toDescriptor());\n        // plain nested namespaces become packages instead in Root#toDescriptor\n    }\n    /* Extension ranges */ if (this.extensions)\n        for (i = 0; i < this.extensions.length; ++i)\n            descriptor.extensionRange.push(exports.DescriptorProto.ExtensionRange.create({ start: this.extensions[i][0], end: this.extensions[i][1] }));\n    /* Reserved... */ if (this.reserved)\n        for (i = 0; i < this.reserved.length; ++i)\n            /* Names */ if (typeof this.reserved[i] === \"string\")\n                descriptor.reservedName.push(this.reserved[i]);\n            /* Ranges */ else\n                descriptor.reservedRange.push(exports.DescriptorProto.ReservedRange.create({ start: this.reserved[i][0], end: this.reserved[i][1] }));\n\n    descriptor.options = toDescriptorOptions(this.options, exports.MessageOptions);\n\n    return descriptor;\n};\n\n// --- Field ---\n\n/**\n * Properties of a FieldDescriptorProto message.\n * @interface IFieldDescriptorProto\n * @property {string} [name] Field name\n * @property {number} [number] Field id\n * @property {IFieldDescriptorProtoLabel} [label] Field rule\n * @property {IFieldDescriptorProtoType} [type] Field basic type\n * @property {string} [typeName] Field type name\n * @property {string} [extendee] Extended type name\n * @property {string} [defaultValue] Literal default value\n * @property {number} [oneofIndex] Oneof index if part of a oneof\n * @property {*} [jsonName] Not supported\n * @property {IFieldOptions} [options] Field options\n */\n\n/**\n * Values of the FieldDescriptorProto.Label enum.\n * @typedef IFieldDescriptorProtoLabel\n * @type {number}\n * @property {number} LABEL_OPTIONAL=1\n * @property {number} LABEL_REQUIRED=2\n * @property {number} LABEL_REPEATED=3\n */\n\n/**\n * Values of the FieldDescriptorProto.Type enum.\n * @typedef IFieldDescriptorProtoType\n * @type {number}\n * @property {number} TYPE_DOUBLE=1\n * @property {number} TYPE_FLOAT=2\n * @property {number} TYPE_INT64=3\n * @property {number} TYPE_UINT64=4\n * @property {number} TYPE_INT32=5\n * @property {number} TYPE_FIXED64=6\n * @property {number} TYPE_FIXED32=7\n * @property {number} TYPE_BOOL=8\n * @property {number} TYPE_STRING=9\n * @property {number} TYPE_GROUP=10\n * @property {number} TYPE_MESSAGE=11\n * @property {number} TYPE_BYTES=12\n * @property {number} TYPE_UINT32=13\n * @property {number} TYPE_ENUM=14\n * @property {number} TYPE_SFIXED32=15\n * @property {number} TYPE_SFIXED64=16\n * @property {number} TYPE_SINT32=17\n * @property {number} TYPE_SINT64=18\n */\n\n/**\n * Properties of a FieldOptions message.\n * @interface IFieldOptions\n * @property {boolean} [packed] Whether packed or not (defaults to `false` for proto2 and `true` for proto3)\n * @property {IFieldOptionsJSType} [jstype] JavaScript value type (not used by protobuf.js)\n */\n\n/**\n * Values of the FieldOptions.JSType enum.\n * @typedef IFieldOptionsJSType\n * @type {number}\n * @property {number} JS_NORMAL=0\n * @property {number} JS_STRING=1\n * @property {number} JS_NUMBER=2\n */\n\n// copied here from parse.js\nvar numberRe = /^(?![eE])[0-9]*(?:\\.[0-9]*)?(?:[eE][+-]?[0-9]+)?$/;\n\n/**\n * Creates a field from a descriptor.\n *\n * Warning: this is not safe to use with editions protos, since it discards relevant file context.\n *\n * @param {IFieldDescriptorProto|Reader|Uint8Array} descriptor Descriptor\n * @param {string} [edition=\"proto2\"] The syntax or edition to use\n * @param {boolean} [nested=false] Whether or not this is a top-level object\n * @returns {Field} Field instance\n */\nField.fromDescriptor = function fromDescriptor(descriptor, edition, nested) {\n\n    // Decode the descriptor message if specified as a buffer:\n    if (typeof descriptor.length === \"number\")\n        descriptor = exports.DescriptorProto.decode(descriptor);\n\n    if (typeof descriptor.number !== \"number\")\n        throw Error(\"missing field id\");\n\n    // Rewire field type\n    var fieldType;\n    if (descriptor.typeName && descriptor.typeName.length)\n        fieldType = descriptor.typeName;\n    else\n        fieldType = fromDescriptorType(descriptor.type);\n\n    // Rewire field rule\n    var fieldRule;\n    switch (descriptor.label) {\n        // 0 is reserved for errors\n        case 1: fieldRule = undefined; break;\n        case 2: fieldRule = \"required\"; break;\n        case 3: fieldRule = \"repeated\"; break;\n        default: throw Error(\"illegal label: \" + descriptor.label);\n    }\n\n\tvar extendee = descriptor.extendee;\n\tif (descriptor.extendee !== undefined) {\n\t\textendee = extendee.length ? extendee : undefined;\n\t}\n    var field = new Field(\n        descriptor.name.length ? descriptor.name : \"field\" + descriptor.number,\n        descriptor.number,\n        fieldType,\n        fieldRule,\n        extendee\n    );\n\n    if (!nested)\n        field._edition = edition;\n\n    field.options = fromDescriptorOptions(descriptor.options, exports.FieldOptions);\n    if (descriptor.proto3_optional)\n        field.options.proto3_optional = true;\n\n    if (descriptor.defaultValue && descriptor.defaultValue.length) {\n        var defaultValue = descriptor.defaultValue;\n        switch (defaultValue) {\n            case \"true\": case \"TRUE\":\n                defaultValue = true;\n                break;\n            case \"false\": case \"FALSE\":\n                defaultValue = false;\n                break;\n            default:\n                var match = numberRe.exec(defaultValue);\n                if (match)\n                    defaultValue = parseInt(defaultValue); // eslint-disable-line radix\n                break;\n        }\n        field.setOption(\"default\", defaultValue);\n    }\n\n    if (packableDescriptorType(descriptor.type)) {\n        if (edition === \"proto3\") { // defaults to packed=true (internal preset is packed=true)\n            if (descriptor.options && !descriptor.options.packed)\n                field.setOption(\"packed\", false);\n        } else if ((!edition || edition === \"proto2\") && descriptor.options && descriptor.options.packed) // defaults to packed=false\n            field.setOption(\"packed\", true);\n    }\n\n    return field;\n};\n\n/**\n * Converts a field to a descriptor.\n * @returns {Message<IFieldDescriptorProto>} Descriptor\n * @param {string} [edition=\"proto2\"] The syntax or edition to use\n */\nField.prototype.toDescriptor = function toDescriptor(edition) {\n    var descriptor = exports.FieldDescriptorProto.create({ name: this.name, number: this.id });\n\n    if (this.map) {\n\n        descriptor.type = 11; // message\n        descriptor.typeName = $protobuf.util.ucFirst(this.name); // fieldName -> FieldNameEntry (built in Type#toDescriptor)\n        descriptor.label = 3; // repeated\n\n    } else {\n\n        // Rewire field type\n        switch (descriptor.type = toDescriptorType(this.type, this.resolve().resolvedType, this.delimited)) {\n            case 10: // group\n            case 11: // type\n            case 14: // enum\n                descriptor.typeName = this.resolvedType ? shortname(this.parent, this.resolvedType) : this.type;\n                break;\n        }\n\n        // Rewire field rule\n        if (this.rule === \"repeated\") {\n            descriptor.label = 3;\n        } else if (this.required && edition === \"proto2\") {\n            descriptor.label = 2;\n        } else {\n            descriptor.label = 1;\n        }\n    }\n\n    // Handle extension field\n    descriptor.extendee = this.extensionField ? this.extensionField.parent.fullName : this.extend;\n\n    // Handle part of oneof\n    if (this.partOf)\n        if ((descriptor.oneofIndex = this.parent.oneofsArray.indexOf(this.partOf)) < 0)\n            throw Error(\"missing oneof\");\n\n    if (this.options) {\n        descriptor.options = toDescriptorOptions(this.options, exports.FieldOptions);\n        if (this.options[\"default\"] != null)\n            descriptor.defaultValue = String(this.options[\"default\"]);\n        if (this.options.proto3_optional)\n            descriptor.proto3_optional = true;\n    }\n\n    if (edition === \"proto3\") { // defaults to packed=true\n        if (!this.packed)\n            (descriptor.options || (descriptor.options = exports.FieldOptions.create())).packed = false;\n    } else if ((!edition || edition === \"proto2\") && this.packed) // defaults to packed=false\n        (descriptor.options || (descriptor.options = exports.FieldOptions.create())).packed = true;\n\n    return descriptor;\n};\n\n// --- Enum ---\n\n/**\n * Properties of an EnumDescriptorProto message.\n * @interface IEnumDescriptorProto\n * @property {string} [name] Enum name\n * @property {IEnumValueDescriptorProto[]} [value] Enum values\n * @property {IEnumOptions} [options] Enum options\n */\n\n/**\n * Properties of an EnumValueDescriptorProto message.\n * @interface IEnumValueDescriptorProto\n * @property {string} [name] Name\n * @property {number} [number] Value\n * @property {*} [options] Not supported\n */\n\n/**\n * Properties of an EnumOptions message.\n * @interface IEnumOptions\n * @property {boolean} [allowAlias] Whether aliases are allowed\n * @property {boolean} [deprecated]\n */\n\nvar unnamedEnumIndex = 0;\n\n/**\n * Creates an enum from a descriptor.\n *\n * Warning: this is not safe to use with editions protos, since it discards relevant file context.\n *\n * @param {IEnumDescriptorProto|Reader|Uint8Array} descriptor Descriptor\n * @param {string} [edition=\"proto2\"] The syntax or edition to use\n * @param {boolean} [nested=false] Whether or not this is a top-level object\n * @returns {Enum} Enum instance\n */\nEnum.fromDescriptor = function fromDescriptor(descriptor, edition, nested) {\n\n    // Decode the descriptor message if specified as a buffer:\n    if (typeof descriptor.length === \"number\")\n        descriptor = exports.EnumDescriptorProto.decode(descriptor);\n\n    // Construct values object\n    var values = {};\n    if (descriptor.value)\n        for (var i = 0; i < descriptor.value.length; ++i) {\n            var name  = descriptor.value[i].name,\n                value = descriptor.value[i].number || 0;\n            values[name && name.length ? name : \"NAME\" + value] = value;\n        }\n\n    var enm = new Enum(\n        descriptor.name && descriptor.name.length ? descriptor.name : \"Enum\" + unnamedEnumIndex++,\n        values,\n        fromDescriptorOptions(descriptor.options, exports.EnumOptions)\n    );\n\n    if (!nested)\n        enm._edition = edition;\n\n    return enm;\n};\n\n/**\n * Converts an enum to a descriptor.\n * @returns {Message<IEnumDescriptorProto>} Descriptor\n */\nEnum.prototype.toDescriptor = function toDescriptor() {\n\n    // Values\n    var values = [];\n    for (var i = 0, ks = Object.keys(this.values); i < ks.length; ++i)\n        values.push(exports.EnumValueDescriptorProto.create({ name: ks[i], number: this.values[ks[i]] }));\n\n    return exports.EnumDescriptorProto.create({\n        name: this.name,\n        value: values,\n        options: toDescriptorOptions(this.options, exports.EnumOptions)\n    });\n};\n\n// --- OneOf ---\n\n/**\n * Properties of a OneofDescriptorProto message.\n * @interface IOneofDescriptorProto\n * @property {string} [name] Oneof name\n * @property {*} [options] Not supported\n */\n\nvar unnamedOneofIndex = 0;\n\n/**\n * Creates a oneof from a descriptor.\n *\n * Warning: this is not safe to use with editions protos, since it discards relevant file context.\n *\n * @param {IOneofDescriptorProto|Reader|Uint8Array} descriptor Descriptor\n * @returns {OneOf} OneOf instance\n */\nOneOf.fromDescriptor = function fromDescriptor(descriptor) {\n\n    // Decode the descriptor message if specified as a buffer:\n    if (typeof descriptor.length === \"number\")\n        descriptor = exports.OneofDescriptorProto.decode(descriptor);\n\n    return new OneOf(\n        // unnamedOneOfIndex is global, not per type, because we have no ref to a type here\n        descriptor.name && descriptor.name.length ? descriptor.name : \"oneof\" + unnamedOneofIndex++\n        // fromDescriptorOptions(descriptor.options, exports.OneofOptions) - only uninterpreted_option\n    );\n};\n\n/**\n * Converts a oneof to a descriptor.\n * @returns {Message<IOneofDescriptorProto>} Descriptor\n */\nOneOf.prototype.toDescriptor = function toDescriptor() {\n    return exports.OneofDescriptorProto.create({\n        name: this.name\n        // options: toDescriptorOptions(this.options, exports.OneofOptions) - only uninterpreted_option\n    });\n};\n\n// --- Service ---\n\n/**\n * Properties of a ServiceDescriptorProto message.\n * @interface IServiceDescriptorProto\n * @property {string} [name] Service name\n * @property {IMethodDescriptorProto[]} [method] Methods\n * @property {IServiceOptions} [options] Options\n */\n\n/**\n * Properties of a ServiceOptions message.\n * @interface IServiceOptions\n * @property {boolean} [deprecated]\n */\n\nvar unnamedServiceIndex = 0;\n\n/**\n * Creates a service from a descriptor.\n *\n * Warning: this is not safe to use with editions protos, since it discards relevant file context.\n *\n * @param {IServiceDescriptorProto|Reader|Uint8Array} descriptor Descriptor\n * @param {string} [edition=\"proto2\"] The syntax or edition to use\n * @param {boolean} [nested=false] Whether or not this is a top-level object\n * @returns {Service} Service instance\n */\nService.fromDescriptor = function fromDescriptor(descriptor, edition, nested) {\n\n    // Decode the descriptor message if specified as a buffer:\n    if (typeof descriptor.length === \"number\")\n        descriptor = exports.ServiceDescriptorProto.decode(descriptor);\n\n    var service = new Service(descriptor.name && descriptor.name.length ? descriptor.name : \"Service\" + unnamedServiceIndex++, fromDescriptorOptions(descriptor.options, exports.ServiceOptions));\n    if (!nested)\n        service._edition = edition;\n    if (descriptor.method)\n        for (var i = 0; i < descriptor.method.length; ++i)\n            service.add(Method.fromDescriptor(descriptor.method[i]));\n\n    return service;\n};\n\n/**\n * Converts a service to a descriptor.\n * @returns {Message<IServiceDescriptorProto>} Descriptor\n */\nService.prototype.toDescriptor = function toDescriptor() {\n\n    // Methods\n    var methods = [];\n    for (var i = 0; i < this.methodsArray.length; ++i)\n        methods.push(this._methodsArray[i].toDescriptor());\n\n    return exports.ServiceDescriptorProto.create({\n        name: this.name,\n        method: methods,\n        options: toDescriptorOptions(this.options, exports.ServiceOptions)\n    });\n};\n\n// --- Method ---\n\n/**\n * Properties of a MethodDescriptorProto message.\n * @interface IMethodDescriptorProto\n * @property {string} [name] Method name\n * @property {string} [inputType] Request type name\n * @property {string} [outputType] Response type name\n * @property {IMethodOptions} [options] Not supported\n * @property {boolean} [clientStreaming=false] Whether requests are streamed\n * @property {boolean} [serverStreaming=false] Whether responses are streamed\n */\n\n/**\n * Properties of a MethodOptions message.\n *\n * Warning: this is not safe to use with editions protos, since it discards relevant file context.\n *\n * @interface IMethodOptions\n * @property {boolean} [deprecated]\n */\n\nvar unnamedMethodIndex = 0;\n\n/**\n * Creates a method from a descriptor.\n * @param {IMethodDescriptorProto|Reader|Uint8Array} descriptor Descriptor\n * @returns {Method} Reflected method instance\n */\nMethod.fromDescriptor = function fromDescriptor(descriptor) {\n\n    // Decode the descriptor message if specified as a buffer:\n    if (typeof descriptor.length === \"number\")\n        descriptor = exports.MethodDescriptorProto.decode(descriptor);\n\n    return new Method(\n        // unnamedMethodIndex is global, not per service, because we have no ref to a service here\n        descriptor.name && descriptor.name.length ? descriptor.name : \"Method\" + unnamedMethodIndex++,\n        \"rpc\",\n        descriptor.inputType,\n        descriptor.outputType,\n        Boolean(descriptor.clientStreaming),\n        Boolean(descriptor.serverStreaming),\n        fromDescriptorOptions(descriptor.options, exports.MethodOptions)\n    );\n};\n\n/**\n * Converts a method to a descriptor.\n * @returns {Message<IMethodDescriptorProto>} Descriptor\n */\nMethod.prototype.toDescriptor = function toDescriptor() {\n    return exports.MethodDescriptorProto.create({\n        name: this.name,\n        inputType: this.resolvedRequestType ? this.resolvedRequestType.fullName : this.requestType,\n        outputType: this.resolvedResponseType ? this.resolvedResponseType.fullName : this.responseType,\n        clientStreaming: this.requestStream,\n        serverStreaming: this.responseStream,\n        options: toDescriptorOptions(this.options, exports.MethodOptions)\n    });\n};\n\n// --- utility ---\n\n// Converts a descriptor type to a protobuf.js basic type\nfunction fromDescriptorType(type) {\n    switch (type) {\n        // 0 is reserved for errors\n        case 1: return \"double\";\n        case 2: return \"float\";\n        case 3: return \"int64\";\n        case 4: return \"uint64\";\n        case 5: return \"int32\";\n        case 6: return \"fixed64\";\n        case 7: return \"fixed32\";\n        case 8: return \"bool\";\n        case 9: return \"string\";\n        case 12: return \"bytes\";\n        case 13: return \"uint32\";\n        case 15: return \"sfixed32\";\n        case 16: return \"sfixed64\";\n        case 17: return \"sint32\";\n        case 18: return \"sint64\";\n    }\n    throw Error(\"illegal type: \" + type);\n}\n\n// Tests if a descriptor type is packable\nfunction packableDescriptorType(type) {\n    switch (type) {\n        case 1: // double\n        case 2: // float\n        case 3: // int64\n        case 4: // uint64\n        case 5: // int32\n        case 6: // fixed64\n        case 7: // fixed32\n        case 8: // bool\n        case 13: // uint32\n        case 14: // enum (!)\n        case 15: // sfixed32\n        case 16: // sfixed64\n        case 17: // sint32\n        case 18: // sint64\n            return true;\n    }\n    return false;\n}\n\n// Converts a protobuf.js basic type to a descriptor type\nfunction toDescriptorType(type, resolvedType, delimited) {\n    switch (type) {\n        // 0 is reserved for errors\n        case \"double\": return 1;\n        case \"float\": return 2;\n        case \"int64\": return 3;\n        case \"uint64\": return 4;\n        case \"int32\": return 5;\n        case \"fixed64\": return 6;\n        case \"fixed32\": return 7;\n        case \"bool\": return 8;\n        case \"string\": return 9;\n        case \"bytes\": return 12;\n        case \"uint32\": return 13;\n        case \"sfixed32\": return 15;\n        case \"sfixed64\": return 16;\n        case \"sint32\": return 17;\n        case \"sint64\": return 18;\n    }\n    if (resolvedType instanceof Enum)\n        return 14;\n    if (resolvedType instanceof Type)\n        return delimited ? 10 : 11;\n    throw Error(\"illegal type: \" + type);\n}\n\nfunction fromDescriptorOptionsRecursive(obj, type) {\n    var val = {};\n    for (var i = 0, field, key; i < type.fieldsArray.length; ++i) {\n        if ((key = (field = type._fieldsArray[i]).name) === \"uninterpretedOption\") continue;\n        if (!Object.prototype.hasOwnProperty.call(obj, key)) continue;\n\n        var newKey = underScore(key);\n        if (field.resolvedType instanceof Type) {\n            val[newKey] = fromDescriptorOptionsRecursive(obj[key], field.resolvedType);\n        } else if(field.resolvedType instanceof Enum) {\n            val[newKey] = field.resolvedType.valuesById[obj[key]];\n        } else {\n            val[newKey] = obj[key];\n        }\n    }\n    return val;\n}\n\n// Converts descriptor options to an options object\nfunction fromDescriptorOptions(options, type) {\n    if (!options)\n        return undefined;\n    return fromDescriptorOptionsRecursive(type.toObject(options), type);\n}\n\nfunction toDescriptorOptionsRecursive(obj, type) {\n    var val = {};\n    var keys = Object.keys(obj);\n    for (var i = 0; i < keys.length; ++i) {\n        var key = keys[i];\n        var newKey = $protobuf.util.camelCase(key);\n        if (!Object.prototype.hasOwnProperty.call(type.fields, newKey)) continue;\n        var field = type.fields[newKey];\n        if (field.resolvedType instanceof Type) {\n            val[newKey] = toDescriptorOptionsRecursive(obj[key], field.resolvedType);\n        } else {\n            val[newKey] = obj[key];\n        }\n        if (field.repeated && !Array.isArray(val[newKey])) {\n            val[newKey] = [val[newKey]];\n        }\n    }\n    return val;\n}\n\n// Converts an options object to descriptor options\nfunction toDescriptorOptions(options, type) {\n    if (!options)\n        return undefined;\n    return type.fromObject(toDescriptorOptionsRecursive(options, type));\n}\n\n// Calculates the shortest relative path from `from` to `to`.\nfunction shortname(from, to) {\n    var fromPath = from.fullName.split(\".\"),\n        toPath = to.fullName.split(\".\"),\n        i = 0,\n        j = 0,\n        k = toPath.length - 1;\n    if (!(from instanceof Root) && to instanceof Namespace)\n        while (i < fromPath.length && j < k && fromPath[i] === toPath[j]) {\n            var other = to.lookup(fromPath[i++], true);\n            if (other !== null && other !== to)\n                break;\n            ++j;\n        }\n    else\n        for (; i < fromPath.length && j < k && fromPath[i] === toPath[j]; ++i, ++j);\n    return toPath.slice(j).join(\".\");\n}\n\n// copied here from cli/targets/proto.js\nfunction underScore(str) {\n    return str.substring(0,1)\n         + str.substring(1)\n               .replace(/([A-Z])(?=[a-z]|$)/g, function($0, $1) { return \"_\" + $1.toLowerCase(); });\n}\n\nfunction editionFromDescriptor(fileDescriptor) {\n    if (fileDescriptor.syntax === \"editions\") {\n        switch(fileDescriptor.edition) {\n            case exports.Edition.EDITION_2023:\n                return \"2023\";\n            default:\n                throw new Error(\"Unsupported edition \" + fileDescriptor.edition);\n        }\n    }\n    if (fileDescriptor.syntax === \"proto3\") {\n        return \"proto3\";\n    }\n    return \"proto2\";\n}\n\nfunction editionToDescriptor(edition, fileDescriptor) {\n    if (!edition) return;\n    if (edition === \"proto2\" || edition === \"proto3\") {\n        fileDescriptor.syntax = edition;\n    } else {\n        fileDescriptor.syntax = \"editions\";\n        switch(edition) {\n            case \"2023\":\n                fileDescriptor.edition = exports.Edition.EDITION_2023;\n                break;\n            default:\n                throw new Error(\"Unsupported edition \" + edition);\n        }\n    }\n}\n\n// --- exports ---\n\n/**\n * Reflected file descriptor set.\n * @name FileDescriptorSet\n * @type {Type}\n * @const\n * @tstype $protobuf.Type\n */\n\n/**\n * Reflected file descriptor proto.\n * @name FileDescriptorProto\n * @type {Type}\n * @const\n * @tstype $protobuf.Type\n */\n\n/**\n * Reflected descriptor proto.\n * @name DescriptorProto\n * @type {Type}\n * @property {Type} ExtensionRange\n * @property {Type} ReservedRange\n * @const\n * @tstype $protobuf.Type & {\n *     ExtensionRange: $protobuf.Type,\n *     ReservedRange: $protobuf.Type\n * }\n */\n\n/**\n * Reflected field descriptor proto.\n * @name FieldDescriptorProto\n * @type {Type}\n * @property {Enum} Label\n * @property {Enum} Type\n * @const\n * @tstype $protobuf.Type & {\n *     Label: $protobuf.Enum,\n *     Type: $protobuf.Enum\n * }\n */\n\n/**\n * Reflected oneof descriptor proto.\n * @name OneofDescriptorProto\n * @type {Type}\n * @const\n * @tstype $protobuf.Type\n */\n\n/**\n * Reflected enum descriptor proto.\n * @name EnumDescriptorProto\n * @type {Type}\n * @const\n * @tstype $protobuf.Type\n */\n\n/**\n * Reflected service descriptor proto.\n * @name ServiceDescriptorProto\n * @type {Type}\n * @const\n * @tstype $protobuf.Type\n */\n\n/**\n * Reflected enum value descriptor proto.\n * @name EnumValueDescriptorProto\n * @type {Type}\n * @const\n * @tstype $protobuf.Type\n */\n\n/**\n * Reflected method descriptor proto.\n * @name MethodDescriptorProto\n * @type {Type}\n * @const\n * @tstype $protobuf.Type\n */\n\n/**\n * Reflected file options.\n * @name FileOptions\n * @type {Type}\n * @property {Enum} OptimizeMode\n * @const\n * @tstype $protobuf.Type & {\n *     OptimizeMode: $protobuf.Enum\n * }\n */\n\n/**\n * Reflected message options.\n * @name MessageOptions\n * @type {Type}\n * @const\n * @tstype $protobuf.Type\n */\n\n/**\n * Reflected field options.\n * @name FieldOptions\n * @type {Type}\n * @property {Enum} CType\n * @property {Enum} JSType\n * @const\n * @tstype $protobuf.Type & {\n *     CType: $protobuf.Enum,\n *     JSType: $protobuf.Enum\n * }\n */\n\n/**\n * Reflected oneof options.\n * @name OneofOptions\n * @type {Type}\n * @const\n * @tstype $protobuf.Type\n */\n\n/**\n * Reflected enum options.\n * @name EnumOptions\n * @type {Type}\n * @const\n * @tstype $protobuf.Type\n */\n\n/**\n * Reflected enum value options.\n * @name EnumValueOptions\n * @type {Type}\n * @const\n * @tstype $protobuf.Type\n */\n\n/**\n * Reflected service options.\n * @name ServiceOptions\n * @type {Type}\n * @const\n * @tstype $protobuf.Type\n */\n\n/**\n * Reflected method options.\n * @name MethodOptions\n * @type {Type}\n * @const\n * @tstype $protobuf.Type\n */\n\n/**\n * Reflected uninterpretet option.\n * @name UninterpretedOption\n * @type {Type}\n * @property {Type} NamePart\n * @const\n * @tstype $protobuf.Type & {\n *     NamePart: $protobuf.Type\n * }\n */\n\n/**\n * Reflected source code info.\n * @name SourceCodeInfo\n * @type {Type}\n * @property {Type} Location\n * @const\n * @tstype $protobuf.Type & {\n *     Location: $protobuf.Type\n * }\n */\n\n/**\n * Reflected generated code info.\n * @name GeneratedCodeInfo\n * @type {Type}\n * @property {Type} Annotation\n * @const\n * @tstype $protobuf.Type & {\n *     Annotation: $protobuf.Type\n * }\n */\n", "{\n  \"nested\": {\n    \"google\": {\n      \"nested\": {\n        \"protobuf\": {\n          \"nested\": {\n            \"Api\": {\n              \"fields\": {\n                \"name\": {\n                  \"type\": \"string\",\n                  \"id\": 1\n                },\n                \"methods\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"Method\",\n                  \"id\": 2\n                },\n                \"options\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"Option\",\n                  \"id\": 3\n                },\n                \"version\": {\n                  \"type\": \"string\",\n                  \"id\": 4\n                },\n                \"sourceContext\": {\n                  \"type\": \"SourceContext\",\n                  \"id\": 5\n                },\n                \"mixins\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"Mixin\",\n                  \"id\": 6\n                },\n                \"syntax\": {\n                  \"type\": \"Syntax\",\n                  \"id\": 7\n                }\n              }\n            },\n            \"Method\": {\n              \"fields\": {\n                \"name\": {\n                  \"type\": \"string\",\n                  \"id\": 1\n                },\n                \"requestTypeUrl\": {\n                  \"type\": \"string\",\n                  \"id\": 2\n                },\n                \"requestStreaming\": {\n                  \"type\": \"bool\",\n                  \"id\": 3\n                },\n                \"responseTypeUrl\": {\n                  \"type\": \"string\",\n                  \"id\": 4\n                },\n                \"responseStreaming\": {\n                  \"type\": \"bool\",\n                  \"id\": 5\n                },\n                \"options\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"Option\",\n                  \"id\": 6\n                },\n                \"syntax\": {\n                  \"type\": \"Syntax\",\n                  \"id\": 7\n                }\n              }\n            },\n            \"Mixin\": {\n              \"fields\": {\n                \"name\": {\n                  \"type\": \"string\",\n                  \"id\": 1\n                },\n                \"root\": {\n                  \"type\": \"string\",\n                  \"id\": 2\n                }\n              }\n            },\n            \"SourceContext\": {\n              \"fields\": {\n                \"fileName\": {\n                  \"type\": \"string\",\n                  \"id\": 1\n                }\n              }\n            },\n            \"Option\": {\n              \"fields\": {\n                \"name\": {\n                  \"type\": \"string\",\n                  \"id\": 1\n                },\n                \"value\": {\n                  \"type\": \"Any\",\n                  \"id\": 2\n                }\n              }\n            },\n            \"Syntax\": {\n              \"values\": {\n                \"SYNTAX_PROTO2\": 0,\n                \"SYNTAX_PROTO3\": 1\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n}", "{\n  \"nested\": {\n    \"google\": {\n      \"nested\": {\n        \"protobuf\": {\n          \"nested\": {\n            \"SourceContext\": {\n              \"fields\": {\n                \"fileName\": {\n                  \"type\": \"string\",\n                  \"id\": 1\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n}", "{\n  \"nested\": {\n    \"google\": {\n      \"nested\": {\n        \"protobuf\": {\n          \"nested\": {\n            \"Type\": {\n              \"fields\": {\n                \"name\": {\n                  \"type\": \"string\",\n                  \"id\": 1\n                },\n                \"fields\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"Field\",\n                  \"id\": 2\n                },\n                \"oneofs\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"string\",\n                  \"id\": 3\n                },\n                \"options\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"Option\",\n                  \"id\": 4\n                },\n                \"sourceContext\": {\n                  \"type\": \"SourceContext\",\n                  \"id\": 5\n                },\n                \"syntax\": {\n                  \"type\": \"Syntax\",\n                  \"id\": 6\n                }\n              }\n            },\n            \"Field\": {\n              \"fields\": {\n                \"kind\": {\n                  \"type\": \"Kind\",\n                  \"id\": 1\n                },\n                \"cardinality\": {\n                  \"type\": \"Cardinality\",\n                  \"id\": 2\n                },\n                \"number\": {\n                  \"type\": \"int32\",\n                  \"id\": 3\n                },\n                \"name\": {\n                  \"type\": \"string\",\n                  \"id\": 4\n                },\n                \"typeUrl\": {\n                  \"type\": \"string\",\n                  \"id\": 6\n                },\n                \"oneofIndex\": {\n                  \"type\": \"int32\",\n                  \"id\": 7\n                },\n                \"packed\": {\n                  \"type\": \"bool\",\n                  \"id\": 8\n                },\n                \"options\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"Option\",\n                  \"id\": 9\n                },\n                \"jsonName\": {\n                  \"type\": \"string\",\n                  \"id\": 10\n                },\n                \"defaultValue\": {\n                  \"type\": \"string\",\n                  \"id\": 11\n                }\n              },\n              \"nested\": {\n                \"Kind\": {\n                  \"values\": {\n                    \"TYPE_UNKNOWN\": 0,\n                    \"TYPE_DOUBLE\": 1,\n                    \"TYPE_FLOAT\": 2,\n                    \"TYPE_INT64\": 3,\n                    \"TYPE_UINT64\": 4,\n                    \"TYPE_INT32\": 5,\n                    \"TYPE_FIXED64\": 6,\n                    \"TYPE_FIXED32\": 7,\n                    \"TYPE_BOOL\": 8,\n                    \"TYPE_STRING\": 9,\n                    \"TYPE_GROUP\": 10,\n                    \"TYPE_MESSAGE\": 11,\n                    \"TYPE_BYTES\": 12,\n                    \"TYPE_UINT32\": 13,\n                    \"TYPE_ENUM\": 14,\n                    \"TYPE_SFIXED32\": 15,\n                    \"TYPE_SFIXED64\": 16,\n                    \"TYPE_SINT32\": 17,\n                    \"TYPE_SINT64\": 18\n                  }\n                },\n                \"Cardinality\": {\n                  \"values\": {\n                    \"CARDINALITY_UNKNOWN\": 0,\n                    \"CARDINALITY_OPTIONAL\": 1,\n                    \"CARDINALITY_REQUIRED\": 2,\n                    \"CARDINALITY_REPEATED\": 3\n                  }\n                }\n              }\n            },\n            \"Enum\": {\n              \"fields\": {\n                \"name\": {\n                  \"type\": \"string\",\n                  \"id\": 1\n                },\n                \"enumvalue\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"EnumValue\",\n                  \"id\": 2\n                },\n                \"options\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"Option\",\n                  \"id\": 3\n                },\n                \"sourceContext\": {\n                  \"type\": \"SourceContext\",\n                  \"id\": 4\n                },\n                \"syntax\": {\n                  \"type\": \"Syntax\",\n                  \"id\": 5\n                }\n              }\n            },\n            \"EnumValue\": {\n              \"fields\": {\n                \"name\": {\n                  \"type\": \"string\",\n                  \"id\": 1\n                },\n                \"number\": {\n                  \"type\": \"int32\",\n                  \"id\": 2\n                },\n                \"options\": {\n                  \"rule\": \"repeated\",\n                  \"type\": \"Option\",\n                  \"id\": 3\n                }\n              }\n            },\n            \"Option\": {\n              \"fields\": {\n                \"name\": {\n                  \"type\": \"string\",\n                  \"id\": 1\n                },\n                \"value\": {\n                  \"type\": \"Any\",\n                  \"id\": 2\n                }\n              }\n            },\n            \"Syntax\": {\n              \"values\": {\n                \"SYNTAX_PROTO2\": 0,\n                \"SYNTAX_PROTO3\": 1\n              }\n            },\n            \"Any\": {\n              \"fields\": {\n                \"type_url\": {\n                  \"type\": \"string\",\n                  \"id\": 1\n                },\n                \"value\": {\n                  \"type\": \"bytes\",\n                  \"id\": 2\n                }\n              }\n            },\n            \"SourceContext\": {\n              \"fields\": {\n                \"fileName\": {\n                  \"type\": \"string\",\n                  \"id\": 1\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n  }\n}", null, "// GENERATED FILE. DO NOT EDIT.\n(function (global, factory) {\n  function preferDefault(exports) {\n    return exports.default || exports;\n  }\n  if (typeof define === \"function\" && define.amd) {\n    define([], function () {\n      var exports = {};\n      factory(exports);\n      return preferDefault(exports);\n    });\n  } else if (typeof exports === \"object\") {\n    factory(exports);\n    if (typeof module === \"object\") module.exports = preferDefault(exports);\n  } else {\n    (function () {\n      var exports = {};\n      factory(exports);\n      global.Long = preferDefault(exports);\n    })();\n  }\n})(\n  typeof globalThis !== \"undefined\"\n    ? globalThis\n    : typeof self !== \"undefined\"\n      ? self\n      : this,\n  function (_exports) {\n    \"use strict\";\n\n    Object.defineProperty(_exports, \"__esModule\", {\n      value: true,\n    });\n    _exports.default = void 0;\n    /**\n     * @license\n     * Copyright 2009 The Closure Library Authors\n     * Copyright 2020 Daniel Wirtz / The long.js Authors.\n     *\n     * Licensed under the Apache License, Version 2.0 (the \"License\");\n     * you may not use this file except in compliance with the License.\n     * You may obtain a copy of the License at\n     *\n     *     http://www.apache.org/licenses/LICENSE-2.0\n     *\n     * Unless required by applicable law or agreed to in writing, software\n     * distributed under the License is distributed on an \"AS IS\" BASIS,\n     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n     * See the License for the specific language governing permissions and\n     * limitations under the License.\n     *\n     * SPDX-License-Identifier: Apache-2.0\n     */\n\n    // WebAssembly optimizations to do native i64 multiplication and divide\n    var wasm = null;\n    try {\n      wasm = new WebAssembly.Instance(\n        new WebAssembly.Module(\n          new Uint8Array([\n            // \\0asm\n            0, 97, 115, 109,\n            // version 1\n            1, 0, 0, 0,\n            // section \"type\"\n            1, 13, 2,\n            // 0, () => i32\n            96, 0, 1, 127,\n            // 1, (i32, i32, i32, i32) => i32\n            96, 4, 127, 127, 127, 127, 1, 127,\n            // section \"function\"\n            3, 7, 6,\n            // 0, type 0\n            0,\n            // 1, type 1\n            1,\n            // 2, type 1\n            1,\n            // 3, type 1\n            1,\n            // 4, type 1\n            1,\n            // 5, type 1\n            1,\n            // section \"global\"\n            6, 6, 1,\n            // 0, \"high\", mutable i32\n            127, 1, 65, 0, 11,\n            // section \"export\"\n            7, 50, 6,\n            // 0, \"mul\"\n            3, 109, 117, 108, 0, 1,\n            // 1, \"div_s\"\n            5, 100, 105, 118, 95, 115, 0, 2,\n            // 2, \"div_u\"\n            5, 100, 105, 118, 95, 117, 0, 3,\n            // 3, \"rem_s\"\n            5, 114, 101, 109, 95, 115, 0, 4,\n            // 4, \"rem_u\"\n            5, 114, 101, 109, 95, 117, 0, 5,\n            // 5, \"get_high\"\n            8, 103, 101, 116, 95, 104, 105, 103, 104, 0, 0,\n            // section \"code\"\n            10, 191, 1, 6,\n            // 0, \"get_high\"\n            4, 0, 35, 0, 11,\n            // 1, \"mul\"\n            36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173,\n            32, 3, 173, 66, 32, 134, 132, 126, 34, 4, 66, 32, 135, 167, 36, 0,\n            32, 4, 167, 11,\n            // 2, \"div_s\"\n            36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173,\n            32, 3, 173, 66, 32, 134, 132, 127, 34, 4, 66, 32, 135, 167, 36, 0,\n            32, 4, 167, 11,\n            // 3, \"div_u\"\n            36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173,\n            32, 3, 173, 66, 32, 134, 132, 128, 34, 4, 66, 32, 135, 167, 36, 0,\n            32, 4, 167, 11,\n            // 4, \"rem_s\"\n            36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173,\n            32, 3, 173, 66, 32, 134, 132, 129, 34, 4, 66, 32, 135, 167, 36, 0,\n            32, 4, 167, 11,\n            // 5, \"rem_u\"\n            36, 1, 1, 126, 32, 0, 173, 32, 1, 173, 66, 32, 134, 132, 32, 2, 173,\n            32, 3, 173, 66, 32, 134, 132, 130, 34, 4, 66, 32, 135, 167, 36, 0,\n            32, 4, 167, 11,\n          ]),\n        ),\n        {},\n      ).exports;\n    } catch {\n      // no wasm support :(\n    }\n\n    /**\n     * Constructs a 64 bit two's-complement integer, given its low and high 32 bit values as *signed* integers.\n     *  See the from* functions below for more convenient ways of constructing Longs.\n     * @exports Long\n     * @class A Long class for representing a 64 bit two's-complement integer value.\n     * @param {number} low The low (signed) 32 bits of the long\n     * @param {number} high The high (signed) 32 bits of the long\n     * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n     * @constructor\n     */\n    function Long(low, high, unsigned) {\n      /**\n       * The low 32 bits as a signed value.\n       * @type {number}\n       */\n      this.low = low | 0;\n\n      /**\n       * The high 32 bits as a signed value.\n       * @type {number}\n       */\n      this.high = high | 0;\n\n      /**\n       * Whether unsigned or not.\n       * @type {boolean}\n       */\n      this.unsigned = !!unsigned;\n    }\n\n    // The internal representation of a long is the two given signed, 32-bit values.\n    // We use 32-bit pieces because these are the size of integers on which\n    // Javascript performs bit-operations.  For operations like addition and\n    // multiplication, we split each number into 16 bit pieces, which can easily be\n    // multiplied within Javascript's floating-point representation without overflow\n    // or change in sign.\n    //\n    // In the algorithms below, we frequently reduce the negative case to the\n    // positive case by negating the input(s) and then post-processing the result.\n    // Note that we must ALWAYS check specially whether those values are MIN_VALUE\n    // (-2^63) because -MIN_VALUE == MIN_VALUE (since 2^63 cannot be represented as\n    // a positive number, it overflows back into a negative).  Not handling this\n    // case would often result in infinite recursion.\n    //\n    // Common constant values ZERO, ONE, NEG_ONE, etc. are defined below the from*\n    // methods on which they depend.\n\n    /**\n     * An indicator used to reliably determine if an object is a Long or not.\n     * @type {boolean}\n     * @const\n     * @private\n     */\n    Long.prototype.__isLong__;\n    Object.defineProperty(Long.prototype, \"__isLong__\", {\n      value: true,\n    });\n\n    /**\n     * @function\n     * @param {*} obj Object\n     * @returns {boolean}\n     * @inner\n     */\n    function isLong(obj) {\n      return (obj && obj[\"__isLong__\"]) === true;\n    }\n\n    /**\n     * @function\n     * @param {*} value number\n     * @returns {number}\n     * @inner\n     */\n    function ctz32(value) {\n      var c = Math.clz32(value & -value);\n      return value ? 31 - c : c;\n    }\n\n    /**\n     * Tests if the specified object is a Long.\n     * @function\n     * @param {*} obj Object\n     * @returns {boolean}\n     */\n    Long.isLong = isLong;\n\n    /**\n     * A cache of the Long representations of small integer values.\n     * @type {!Object}\n     * @inner\n     */\n    var INT_CACHE = {};\n\n    /**\n     * A cache of the Long representations of small unsigned integer values.\n     * @type {!Object}\n     * @inner\n     */\n    var UINT_CACHE = {};\n\n    /**\n     * @param {number} value\n     * @param {boolean=} unsigned\n     * @returns {!Long}\n     * @inner\n     */\n    function fromInt(value, unsigned) {\n      var obj, cachedObj, cache;\n      if (unsigned) {\n        value >>>= 0;\n        if ((cache = 0 <= value && value < 256)) {\n          cachedObj = UINT_CACHE[value];\n          if (cachedObj) return cachedObj;\n        }\n        obj = fromBits(value, 0, true);\n        if (cache) UINT_CACHE[value] = obj;\n        return obj;\n      } else {\n        value |= 0;\n        if ((cache = -128 <= value && value < 128)) {\n          cachedObj = INT_CACHE[value];\n          if (cachedObj) return cachedObj;\n        }\n        obj = fromBits(value, value < 0 ? -1 : 0, false);\n        if (cache) INT_CACHE[value] = obj;\n        return obj;\n      }\n    }\n\n    /**\n     * Returns a Long representing the given 32 bit integer value.\n     * @function\n     * @param {number} value The 32 bit integer in question\n     * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n     * @returns {!Long} The corresponding Long value\n     */\n    Long.fromInt = fromInt;\n\n    /**\n     * @param {number} value\n     * @param {boolean=} unsigned\n     * @returns {!Long}\n     * @inner\n     */\n    function fromNumber(value, unsigned) {\n      if (isNaN(value)) return unsigned ? UZERO : ZERO;\n      if (unsigned) {\n        if (value < 0) return UZERO;\n        if (value >= TWO_PWR_64_DBL) return MAX_UNSIGNED_VALUE;\n      } else {\n        if (value <= -TWO_PWR_63_DBL) return MIN_VALUE;\n        if (value + 1 >= TWO_PWR_63_DBL) return MAX_VALUE;\n      }\n      if (value < 0) return fromNumber(-value, unsigned).neg();\n      return fromBits(\n        value % TWO_PWR_32_DBL | 0,\n        (value / TWO_PWR_32_DBL) | 0,\n        unsigned,\n      );\n    }\n\n    /**\n     * Returns a Long representing the given value, provided that it is a finite number. Otherwise, zero is returned.\n     * @function\n     * @param {number} value The number in question\n     * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n     * @returns {!Long} The corresponding Long value\n     */\n    Long.fromNumber = fromNumber;\n\n    /**\n     * @param {number} lowBits\n     * @param {number} highBits\n     * @param {boolean=} unsigned\n     * @returns {!Long}\n     * @inner\n     */\n    function fromBits(lowBits, highBits, unsigned) {\n      return new Long(lowBits, highBits, unsigned);\n    }\n\n    /**\n     * Returns a Long representing the 64 bit integer that comes by concatenating the given low and high bits. Each is\n     *  assumed to use 32 bits.\n     * @function\n     * @param {number} lowBits The low 32 bits\n     * @param {number} highBits The high 32 bits\n     * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n     * @returns {!Long} The corresponding Long value\n     */\n    Long.fromBits = fromBits;\n\n    /**\n     * @function\n     * @param {number} base\n     * @param {number} exponent\n     * @returns {number}\n     * @inner\n     */\n    var pow_dbl = Math.pow; // Used 4 times (4*8 to 15+4)\n\n    /**\n     * @param {string} str\n     * @param {(boolean|number)=} unsigned\n     * @param {number=} radix\n     * @returns {!Long}\n     * @inner\n     */\n    function fromString(str, unsigned, radix) {\n      if (str.length === 0) throw Error(\"empty string\");\n      if (typeof unsigned === \"number\") {\n        // For goog.math.long compatibility\n        radix = unsigned;\n        unsigned = false;\n      } else {\n        unsigned = !!unsigned;\n      }\n      if (\n        str === \"NaN\" ||\n        str === \"Infinity\" ||\n        str === \"+Infinity\" ||\n        str === \"-Infinity\"\n      )\n        return unsigned ? UZERO : ZERO;\n      radix = radix || 10;\n      if (radix < 2 || 36 < radix) throw RangeError(\"radix\");\n      var p;\n      if ((p = str.indexOf(\"-\")) > 0) throw Error(\"interior hyphen\");\n      else if (p === 0) {\n        return fromString(str.substring(1), unsigned, radix).neg();\n      }\n\n      // Do several (8) digits each time through the loop, so as to\n      // minimize the calls to the very expensive emulated div.\n      var radixToPower = fromNumber(pow_dbl(radix, 8));\n      var result = ZERO;\n      for (var i = 0; i < str.length; i += 8) {\n        var size = Math.min(8, str.length - i),\n          value = parseInt(str.substring(i, i + size), radix);\n        if (size < 8) {\n          var power = fromNumber(pow_dbl(radix, size));\n          result = result.mul(power).add(fromNumber(value));\n        } else {\n          result = result.mul(radixToPower);\n          result = result.add(fromNumber(value));\n        }\n      }\n      result.unsigned = unsigned;\n      return result;\n    }\n\n    /**\n     * Returns a Long representation of the given string, written using the specified radix.\n     * @function\n     * @param {string} str The textual representation of the Long\n     * @param {(boolean|number)=} unsigned Whether unsigned or not, defaults to signed\n     * @param {number=} radix The radix in which the text is written (2-36), defaults to 10\n     * @returns {!Long} The corresponding Long value\n     */\n    Long.fromString = fromString;\n\n    /**\n     * @function\n     * @param {!Long|number|string|!{low: number, high: number, unsigned: boolean}} val\n     * @param {boolean=} unsigned\n     * @returns {!Long}\n     * @inner\n     */\n    function fromValue(val, unsigned) {\n      if (typeof val === \"number\") return fromNumber(val, unsigned);\n      if (typeof val === \"string\") return fromString(val, unsigned);\n      // Throws for non-objects, converts non-instanceof Long:\n      return fromBits(\n        val.low,\n        val.high,\n        typeof unsigned === \"boolean\" ? unsigned : val.unsigned,\n      );\n    }\n\n    /**\n     * Converts the specified value to a Long using the appropriate from* function for its type.\n     * @function\n     * @param {!Long|number|bigint|string|!{low: number, high: number, unsigned: boolean}} val Value\n     * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n     * @returns {!Long}\n     */\n    Long.fromValue = fromValue;\n\n    // NOTE: the compiler should inline these constant values below and then remove these variables, so there should be\n    // no runtime penalty for these.\n\n    /**\n     * @type {number}\n     * @const\n     * @inner\n     */\n    var TWO_PWR_16_DBL = 1 << 16;\n\n    /**\n     * @type {number}\n     * @const\n     * @inner\n     */\n    var TWO_PWR_24_DBL = 1 << 24;\n\n    /**\n     * @type {number}\n     * @const\n     * @inner\n     */\n    var TWO_PWR_32_DBL = TWO_PWR_16_DBL * TWO_PWR_16_DBL;\n\n    /**\n     * @type {number}\n     * @const\n     * @inner\n     */\n    var TWO_PWR_64_DBL = TWO_PWR_32_DBL * TWO_PWR_32_DBL;\n\n    /**\n     * @type {number}\n     * @const\n     * @inner\n     */\n    var TWO_PWR_63_DBL = TWO_PWR_64_DBL / 2;\n\n    /**\n     * @type {!Long}\n     * @const\n     * @inner\n     */\n    var TWO_PWR_24 = fromInt(TWO_PWR_24_DBL);\n\n    /**\n     * @type {!Long}\n     * @inner\n     */\n    var ZERO = fromInt(0);\n\n    /**\n     * Signed zero.\n     * @type {!Long}\n     */\n    Long.ZERO = ZERO;\n\n    /**\n     * @type {!Long}\n     * @inner\n     */\n    var UZERO = fromInt(0, true);\n\n    /**\n     * Unsigned zero.\n     * @type {!Long}\n     */\n    Long.UZERO = UZERO;\n\n    /**\n     * @type {!Long}\n     * @inner\n     */\n    var ONE = fromInt(1);\n\n    /**\n     * Signed one.\n     * @type {!Long}\n     */\n    Long.ONE = ONE;\n\n    /**\n     * @type {!Long}\n     * @inner\n     */\n    var UONE = fromInt(1, true);\n\n    /**\n     * Unsigned one.\n     * @type {!Long}\n     */\n    Long.UONE = UONE;\n\n    /**\n     * @type {!Long}\n     * @inner\n     */\n    var NEG_ONE = fromInt(-1);\n\n    /**\n     * Signed negative one.\n     * @type {!Long}\n     */\n    Long.NEG_ONE = NEG_ONE;\n\n    /**\n     * @type {!Long}\n     * @inner\n     */\n    var MAX_VALUE = fromBits(0xffffffff | 0, 0x7fffffff | 0, false);\n\n    /**\n     * Maximum signed value.\n     * @type {!Long}\n     */\n    Long.MAX_VALUE = MAX_VALUE;\n\n    /**\n     * @type {!Long}\n     * @inner\n     */\n    var MAX_UNSIGNED_VALUE = fromBits(0xffffffff | 0, 0xffffffff | 0, true);\n\n    /**\n     * Maximum unsigned value.\n     * @type {!Long}\n     */\n    Long.MAX_UNSIGNED_VALUE = MAX_UNSIGNED_VALUE;\n\n    /**\n     * @type {!Long}\n     * @inner\n     */\n    var MIN_VALUE = fromBits(0, 0x80000000 | 0, false);\n\n    /**\n     * Minimum signed value.\n     * @type {!Long}\n     */\n    Long.MIN_VALUE = MIN_VALUE;\n\n    /**\n     * @alias Long.prototype\n     * @inner\n     */\n    var LongPrototype = Long.prototype;\n\n    /**\n     * Converts the Long to a 32 bit integer, assuming it is a 32 bit integer.\n     * @this {!Long}\n     * @returns {number}\n     */\n    LongPrototype.toInt = function toInt() {\n      return this.unsigned ? this.low >>> 0 : this.low;\n    };\n\n    /**\n     * Converts the Long to a the nearest floating-point representation of this value (double, 53 bit mantissa).\n     * @this {!Long}\n     * @returns {number}\n     */\n    LongPrototype.toNumber = function toNumber() {\n      if (this.unsigned)\n        return (this.high >>> 0) * TWO_PWR_32_DBL + (this.low >>> 0);\n      return this.high * TWO_PWR_32_DBL + (this.low >>> 0);\n    };\n\n    /**\n     * Converts the Long to a string written in the specified radix.\n     * @this {!Long}\n     * @param {number=} radix Radix (2-36), defaults to 10\n     * @returns {string}\n     * @override\n     * @throws {RangeError} If `radix` is out of range\n     */\n    LongPrototype.toString = function toString(radix) {\n      radix = radix || 10;\n      if (radix < 2 || 36 < radix) throw RangeError(\"radix\");\n      if (this.isZero()) return \"0\";\n      if (this.isNegative()) {\n        // Unsigned Longs are never negative\n        if (this.eq(MIN_VALUE)) {\n          // We need to change the Long value before it can be negated, so we remove\n          // the bottom-most digit in this base and then recurse to do the rest.\n          var radixLong = fromNumber(radix),\n            div = this.div(radixLong),\n            rem1 = div.mul(radixLong).sub(this);\n          return div.toString(radix) + rem1.toInt().toString(radix);\n        } else return \"-\" + this.neg().toString(radix);\n      }\n\n      // Do several (6) digits each time through the loop, so as to\n      // minimize the calls to the very expensive emulated div.\n      var radixToPower = fromNumber(pow_dbl(radix, 6), this.unsigned),\n        rem = this;\n      var result = \"\";\n      while (true) {\n        var remDiv = rem.div(radixToPower),\n          intval = rem.sub(remDiv.mul(radixToPower)).toInt() >>> 0,\n          digits = intval.toString(radix);\n        rem = remDiv;\n        if (rem.isZero()) return digits + result;\n        else {\n          while (digits.length < 6) digits = \"0\" + digits;\n          result = \"\" + digits + result;\n        }\n      }\n    };\n\n    /**\n     * Gets the high 32 bits as a signed integer.\n     * @this {!Long}\n     * @returns {number} Signed high bits\n     */\n    LongPrototype.getHighBits = function getHighBits() {\n      return this.high;\n    };\n\n    /**\n     * Gets the high 32 bits as an unsigned integer.\n     * @this {!Long}\n     * @returns {number} Unsigned high bits\n     */\n    LongPrototype.getHighBitsUnsigned = function getHighBitsUnsigned() {\n      return this.high >>> 0;\n    };\n\n    /**\n     * Gets the low 32 bits as a signed integer.\n     * @this {!Long}\n     * @returns {number} Signed low bits\n     */\n    LongPrototype.getLowBits = function getLowBits() {\n      return this.low;\n    };\n\n    /**\n     * Gets the low 32 bits as an unsigned integer.\n     * @this {!Long}\n     * @returns {number} Unsigned low bits\n     */\n    LongPrototype.getLowBitsUnsigned = function getLowBitsUnsigned() {\n      return this.low >>> 0;\n    };\n\n    /**\n     * Gets the number of bits needed to represent the absolute value of this Long.\n     * @this {!Long}\n     * @returns {number}\n     */\n    LongPrototype.getNumBitsAbs = function getNumBitsAbs() {\n      if (this.isNegative())\n        // Unsigned Longs are never negative\n        return this.eq(MIN_VALUE) ? 64 : this.neg().getNumBitsAbs();\n      var val = this.high != 0 ? this.high : this.low;\n      for (var bit = 31; bit > 0; bit--) if ((val & (1 << bit)) != 0) break;\n      return this.high != 0 ? bit + 33 : bit + 1;\n    };\n\n    /**\n     * Tests if this Long can be safely represented as a JavaScript number.\n     * @this {!Long}\n     * @returns {boolean}\n     */\n    LongPrototype.isSafeInteger = function isSafeInteger() {\n      // 2^53-1 is the maximum safe value\n      var top11Bits = this.high >> 21;\n      // [0, 2^53-1]\n      if (!top11Bits) return true;\n      // > 2^53-1\n      if (this.unsigned) return false;\n      // [-2^53, -1] except -2^53\n      return top11Bits === -1 && !(this.low === 0 && this.high === -0x200000);\n    };\n\n    /**\n     * Tests if this Long's value equals zero.\n     * @this {!Long}\n     * @returns {boolean}\n     */\n    LongPrototype.isZero = function isZero() {\n      return this.high === 0 && this.low === 0;\n    };\n\n    /**\n     * Tests if this Long's value equals zero. This is an alias of {@link Long#isZero}.\n     * @returns {boolean}\n     */\n    LongPrototype.eqz = LongPrototype.isZero;\n\n    /**\n     * Tests if this Long's value is negative.\n     * @this {!Long}\n     * @returns {boolean}\n     */\n    LongPrototype.isNegative = function isNegative() {\n      return !this.unsigned && this.high < 0;\n    };\n\n    /**\n     * Tests if this Long's value is positive or zero.\n     * @this {!Long}\n     * @returns {boolean}\n     */\n    LongPrototype.isPositive = function isPositive() {\n      return this.unsigned || this.high >= 0;\n    };\n\n    /**\n     * Tests if this Long's value is odd.\n     * @this {!Long}\n     * @returns {boolean}\n     */\n    LongPrototype.isOdd = function isOdd() {\n      return (this.low & 1) === 1;\n    };\n\n    /**\n     * Tests if this Long's value is even.\n     * @this {!Long}\n     * @returns {boolean}\n     */\n    LongPrototype.isEven = function isEven() {\n      return (this.low & 1) === 0;\n    };\n\n    /**\n     * Tests if this Long's value equals the specified's.\n     * @this {!Long}\n     * @param {!Long|number|bigint|string} other Other value\n     * @returns {boolean}\n     */\n    LongPrototype.equals = function equals(other) {\n      if (!isLong(other)) other = fromValue(other);\n      if (\n        this.unsigned !== other.unsigned &&\n        this.high >>> 31 === 1 &&\n        other.high >>> 31 === 1\n      )\n        return false;\n      return this.high === other.high && this.low === other.low;\n    };\n\n    /**\n     * Tests if this Long's value equals the specified's. This is an alias of {@link Long#equals}.\n     * @function\n     * @param {!Long|number|bigint|string} other Other value\n     * @returns {boolean}\n     */\n    LongPrototype.eq = LongPrototype.equals;\n\n    /**\n     * Tests if this Long's value differs from the specified's.\n     * @this {!Long}\n     * @param {!Long|number|bigint|string} other Other value\n     * @returns {boolean}\n     */\n    LongPrototype.notEquals = function notEquals(other) {\n      return !this.eq(/* validates */ other);\n    };\n\n    /**\n     * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\n     * @function\n     * @param {!Long|number|bigint|string} other Other value\n     * @returns {boolean}\n     */\n    LongPrototype.neq = LongPrototype.notEquals;\n\n    /**\n     * Tests if this Long's value differs from the specified's. This is an alias of {@link Long#notEquals}.\n     * @function\n     * @param {!Long|number|bigint|string} other Other value\n     * @returns {boolean}\n     */\n    LongPrototype.ne = LongPrototype.notEquals;\n\n    /**\n     * Tests if this Long's value is less than the specified's.\n     * @this {!Long}\n     * @param {!Long|number|bigint|string} other Other value\n     * @returns {boolean}\n     */\n    LongPrototype.lessThan = function lessThan(other) {\n      return this.comp(/* validates */ other) < 0;\n    };\n\n    /**\n     * Tests if this Long's value is less than the specified's. This is an alias of {@link Long#lessThan}.\n     * @function\n     * @param {!Long|number|bigint|string} other Other value\n     * @returns {boolean}\n     */\n    LongPrototype.lt = LongPrototype.lessThan;\n\n    /**\n     * Tests if this Long's value is less than or equal the specified's.\n     * @this {!Long}\n     * @param {!Long|number|bigint|string} other Other value\n     * @returns {boolean}\n     */\n    LongPrototype.lessThanOrEqual = function lessThanOrEqual(other) {\n      return this.comp(/* validates */ other) <= 0;\n    };\n\n    /**\n     * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\n     * @function\n     * @param {!Long|number|bigint|string} other Other value\n     * @returns {boolean}\n     */\n    LongPrototype.lte = LongPrototype.lessThanOrEqual;\n\n    /**\n     * Tests if this Long's value is less than or equal the specified's. This is an alias of {@link Long#lessThanOrEqual}.\n     * @function\n     * @param {!Long|number|bigint|string} other Other value\n     * @returns {boolean}\n     */\n    LongPrototype.le = LongPrototype.lessThanOrEqual;\n\n    /**\n     * Tests if this Long's value is greater than the specified's.\n     * @this {!Long}\n     * @param {!Long|number|bigint|string} other Other value\n     * @returns {boolean}\n     */\n    LongPrototype.greaterThan = function greaterThan(other) {\n      return this.comp(/* validates */ other) > 0;\n    };\n\n    /**\n     * Tests if this Long's value is greater than the specified's. This is an alias of {@link Long#greaterThan}.\n     * @function\n     * @param {!Long|number|bigint|string} other Other value\n     * @returns {boolean}\n     */\n    LongPrototype.gt = LongPrototype.greaterThan;\n\n    /**\n     * Tests if this Long's value is greater than or equal the specified's.\n     * @this {!Long}\n     * @param {!Long|number|bigint|string} other Other value\n     * @returns {boolean}\n     */\n    LongPrototype.greaterThanOrEqual = function greaterThanOrEqual(other) {\n      return this.comp(/* validates */ other) >= 0;\n    };\n\n    /**\n     * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\n     * @function\n     * @param {!Long|number|bigint|string} other Other value\n     * @returns {boolean}\n     */\n    LongPrototype.gte = LongPrototype.greaterThanOrEqual;\n\n    /**\n     * Tests if this Long's value is greater than or equal the specified's. This is an alias of {@link Long#greaterThanOrEqual}.\n     * @function\n     * @param {!Long|number|bigint|string} other Other value\n     * @returns {boolean}\n     */\n    LongPrototype.ge = LongPrototype.greaterThanOrEqual;\n\n    /**\n     * Compares this Long's value with the specified's.\n     * @this {!Long}\n     * @param {!Long|number|bigint|string} other Other value\n     * @returns {number} 0 if they are the same, 1 if the this is greater and -1\n     *  if the given one is greater\n     */\n    LongPrototype.compare = function compare(other) {\n      if (!isLong(other)) other = fromValue(other);\n      if (this.eq(other)) return 0;\n      var thisNeg = this.isNegative(),\n        otherNeg = other.isNegative();\n      if (thisNeg && !otherNeg) return -1;\n      if (!thisNeg && otherNeg) return 1;\n      // At this point the sign bits are the same\n      if (!this.unsigned) return this.sub(other).isNegative() ? -1 : 1;\n      // Both are positive if at least one is unsigned\n      return other.high >>> 0 > this.high >>> 0 ||\n        (other.high === this.high && other.low >>> 0 > this.low >>> 0)\n        ? -1\n        : 1;\n    };\n\n    /**\n     * Compares this Long's value with the specified's. This is an alias of {@link Long#compare}.\n     * @function\n     * @param {!Long|number|bigint|string} other Other value\n     * @returns {number} 0 if they are the same, 1 if the this is greater and -1\n     *  if the given one is greater\n     */\n    LongPrototype.comp = LongPrototype.compare;\n\n    /**\n     * Negates this Long's value.\n     * @this {!Long}\n     * @returns {!Long} Negated Long\n     */\n    LongPrototype.negate = function negate() {\n      if (!this.unsigned && this.eq(MIN_VALUE)) return MIN_VALUE;\n      return this.not().add(ONE);\n    };\n\n    /**\n     * Negates this Long's value. This is an alias of {@link Long#negate}.\n     * @function\n     * @returns {!Long} Negated Long\n     */\n    LongPrototype.neg = LongPrototype.negate;\n\n    /**\n     * Returns the sum of this and the specified Long.\n     * @this {!Long}\n     * @param {!Long|number|bigint|string} addend Addend\n     * @returns {!Long} Sum\n     */\n    LongPrototype.add = function add(addend) {\n      if (!isLong(addend)) addend = fromValue(addend);\n\n      // Divide each number into 4 chunks of 16 bits, and then sum the chunks.\n\n      var a48 = this.high >>> 16;\n      var a32 = this.high & 0xffff;\n      var a16 = this.low >>> 16;\n      var a00 = this.low & 0xffff;\n      var b48 = addend.high >>> 16;\n      var b32 = addend.high & 0xffff;\n      var b16 = addend.low >>> 16;\n      var b00 = addend.low & 0xffff;\n      var c48 = 0,\n        c32 = 0,\n        c16 = 0,\n        c00 = 0;\n      c00 += a00 + b00;\n      c16 += c00 >>> 16;\n      c00 &= 0xffff;\n      c16 += a16 + b16;\n      c32 += c16 >>> 16;\n      c16 &= 0xffff;\n      c32 += a32 + b32;\n      c48 += c32 >>> 16;\n      c32 &= 0xffff;\n      c48 += a48 + b48;\n      c48 &= 0xffff;\n      return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\n    };\n\n    /**\n     * Returns the difference of this and the specified Long.\n     * @this {!Long}\n     * @param {!Long|number|bigint|string} subtrahend Subtrahend\n     * @returns {!Long} Difference\n     */\n    LongPrototype.subtract = function subtract(subtrahend) {\n      if (!isLong(subtrahend)) subtrahend = fromValue(subtrahend);\n      return this.add(subtrahend.neg());\n    };\n\n    /**\n     * Returns the difference of this and the specified Long. This is an alias of {@link Long#subtract}.\n     * @function\n     * @param {!Long|number|bigint|string} subtrahend Subtrahend\n     * @returns {!Long} Difference\n     */\n    LongPrototype.sub = LongPrototype.subtract;\n\n    /**\n     * Returns the product of this and the specified Long.\n     * @this {!Long}\n     * @param {!Long|number|bigint|string} multiplier Multiplier\n     * @returns {!Long} Product\n     */\n    LongPrototype.multiply = function multiply(multiplier) {\n      if (this.isZero()) return this;\n      if (!isLong(multiplier)) multiplier = fromValue(multiplier);\n\n      // use wasm support if present\n      if (wasm) {\n        var low = wasm[\"mul\"](\n          this.low,\n          this.high,\n          multiplier.low,\n          multiplier.high,\n        );\n        return fromBits(low, wasm[\"get_high\"](), this.unsigned);\n      }\n      if (multiplier.isZero()) return this.unsigned ? UZERO : ZERO;\n      if (this.eq(MIN_VALUE)) return multiplier.isOdd() ? MIN_VALUE : ZERO;\n      if (multiplier.eq(MIN_VALUE)) return this.isOdd() ? MIN_VALUE : ZERO;\n      if (this.isNegative()) {\n        if (multiplier.isNegative()) return this.neg().mul(multiplier.neg());\n        else return this.neg().mul(multiplier).neg();\n      } else if (multiplier.isNegative())\n        return this.mul(multiplier.neg()).neg();\n\n      // If both longs are small, use float multiplication\n      if (this.lt(TWO_PWR_24) && multiplier.lt(TWO_PWR_24))\n        return fromNumber(\n          this.toNumber() * multiplier.toNumber(),\n          this.unsigned,\n        );\n\n      // Divide each long into 4 chunks of 16 bits, and then add up 4x4 products.\n      // We can skip products that would overflow.\n\n      var a48 = this.high >>> 16;\n      var a32 = this.high & 0xffff;\n      var a16 = this.low >>> 16;\n      var a00 = this.low & 0xffff;\n      var b48 = multiplier.high >>> 16;\n      var b32 = multiplier.high & 0xffff;\n      var b16 = multiplier.low >>> 16;\n      var b00 = multiplier.low & 0xffff;\n      var c48 = 0,\n        c32 = 0,\n        c16 = 0,\n        c00 = 0;\n      c00 += a00 * b00;\n      c16 += c00 >>> 16;\n      c00 &= 0xffff;\n      c16 += a16 * b00;\n      c32 += c16 >>> 16;\n      c16 &= 0xffff;\n      c16 += a00 * b16;\n      c32 += c16 >>> 16;\n      c16 &= 0xffff;\n      c32 += a32 * b00;\n      c48 += c32 >>> 16;\n      c32 &= 0xffff;\n      c32 += a16 * b16;\n      c48 += c32 >>> 16;\n      c32 &= 0xffff;\n      c32 += a00 * b32;\n      c48 += c32 >>> 16;\n      c32 &= 0xffff;\n      c48 += a48 * b00 + a32 * b16 + a16 * b32 + a00 * b48;\n      c48 &= 0xffff;\n      return fromBits((c16 << 16) | c00, (c48 << 16) | c32, this.unsigned);\n    };\n\n    /**\n     * Returns the product of this and the specified Long. This is an alias of {@link Long#multiply}.\n     * @function\n     * @param {!Long|number|bigint|string} multiplier Multiplier\n     * @returns {!Long} Product\n     */\n    LongPrototype.mul = LongPrototype.multiply;\n\n    /**\n     * Returns this Long divided by the specified. The result is signed if this Long is signed or\n     *  unsigned if this Long is unsigned.\n     * @this {!Long}\n     * @param {!Long|number|bigint|string} divisor Divisor\n     * @returns {!Long} Quotient\n     */\n    LongPrototype.divide = function divide(divisor) {\n      if (!isLong(divisor)) divisor = fromValue(divisor);\n      if (divisor.isZero()) throw Error(\"division by zero\");\n\n      // use wasm support if present\n      if (wasm) {\n        // guard against signed division overflow: the largest\n        // negative number / -1 would be 1 larger than the largest\n        // positive number, due to two's complement.\n        if (\n          !this.unsigned &&\n          this.high === -0x80000000 &&\n          divisor.low === -1 &&\n          divisor.high === -1\n        ) {\n          // be consistent with non-wasm code path\n          return this;\n        }\n        var low = (this.unsigned ? wasm[\"div_u\"] : wasm[\"div_s\"])(\n          this.low,\n          this.high,\n          divisor.low,\n          divisor.high,\n        );\n        return fromBits(low, wasm[\"get_high\"](), this.unsigned);\n      }\n      if (this.isZero()) return this.unsigned ? UZERO : ZERO;\n      var approx, rem, res;\n      if (!this.unsigned) {\n        // This section is only relevant for signed longs and is derived from the\n        // closure library as a whole.\n        if (this.eq(MIN_VALUE)) {\n          if (divisor.eq(ONE) || divisor.eq(NEG_ONE))\n            return MIN_VALUE; // recall that -MIN_VALUE == MIN_VALUE\n          else if (divisor.eq(MIN_VALUE)) return ONE;\n          else {\n            // At this point, we have |other| >= 2, so |this/other| < |MIN_VALUE|.\n            var halfThis = this.shr(1);\n            approx = halfThis.div(divisor).shl(1);\n            if (approx.eq(ZERO)) {\n              return divisor.isNegative() ? ONE : NEG_ONE;\n            } else {\n              rem = this.sub(divisor.mul(approx));\n              res = approx.add(rem.div(divisor));\n              return res;\n            }\n          }\n        } else if (divisor.eq(MIN_VALUE)) return this.unsigned ? UZERO : ZERO;\n        if (this.isNegative()) {\n          if (divisor.isNegative()) return this.neg().div(divisor.neg());\n          return this.neg().div(divisor).neg();\n        } else if (divisor.isNegative()) return this.div(divisor.neg()).neg();\n        res = ZERO;\n      } else {\n        // The algorithm below has not been made for unsigned longs. It's therefore\n        // required to take special care of the MSB prior to running it.\n        if (!divisor.unsigned) divisor = divisor.toUnsigned();\n        if (divisor.gt(this)) return UZERO;\n        if (divisor.gt(this.shru(1)))\n          // 15 >>> 1 = 7 ; with divisor = 8 ; true\n          return UONE;\n        res = UZERO;\n      }\n\n      // Repeat the following until the remainder is less than other:  find a\n      // floating-point that approximates remainder / other *from below*, add this\n      // into the result, and subtract it from the remainder.  It is critical that\n      // the approximate value is less than or equal to the real value so that the\n      // remainder never becomes negative.\n      rem = this;\n      while (rem.gte(divisor)) {\n        // Approximate the result of division. This may be a little greater or\n        // smaller than the actual value.\n        approx = Math.max(1, Math.floor(rem.toNumber() / divisor.toNumber()));\n\n        // We will tweak the approximate result by changing it in the 48-th digit or\n        // the smallest non-fractional digit, whichever is larger.\n        var log2 = Math.ceil(Math.log(approx) / Math.LN2),\n          delta = log2 <= 48 ? 1 : pow_dbl(2, log2 - 48),\n          // Decrease the approximation until it is smaller than the remainder.  Note\n          // that if it is too large, the product overflows and is negative.\n          approxRes = fromNumber(approx),\n          approxRem = approxRes.mul(divisor);\n        while (approxRem.isNegative() || approxRem.gt(rem)) {\n          approx -= delta;\n          approxRes = fromNumber(approx, this.unsigned);\n          approxRem = approxRes.mul(divisor);\n        }\n\n        // We know the answer can't be zero... and actually, zero would cause\n        // infinite recursion since we would make no progress.\n        if (approxRes.isZero()) approxRes = ONE;\n        res = res.add(approxRes);\n        rem = rem.sub(approxRem);\n      }\n      return res;\n    };\n\n    /**\n     * Returns this Long divided by the specified. This is an alias of {@link Long#divide}.\n     * @function\n     * @param {!Long|number|bigint|string} divisor Divisor\n     * @returns {!Long} Quotient\n     */\n    LongPrototype.div = LongPrototype.divide;\n\n    /**\n     * Returns this Long modulo the specified.\n     * @this {!Long}\n     * @param {!Long|number|bigint|string} divisor Divisor\n     * @returns {!Long} Remainder\n     */\n    LongPrototype.modulo = function modulo(divisor) {\n      if (!isLong(divisor)) divisor = fromValue(divisor);\n\n      // use wasm support if present\n      if (wasm) {\n        var low = (this.unsigned ? wasm[\"rem_u\"] : wasm[\"rem_s\"])(\n          this.low,\n          this.high,\n          divisor.low,\n          divisor.high,\n        );\n        return fromBits(low, wasm[\"get_high\"](), this.unsigned);\n      }\n      return this.sub(this.div(divisor).mul(divisor));\n    };\n\n    /**\n     * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\n     * @function\n     * @param {!Long|number|bigint|string} divisor Divisor\n     * @returns {!Long} Remainder\n     */\n    LongPrototype.mod = LongPrototype.modulo;\n\n    /**\n     * Returns this Long modulo the specified. This is an alias of {@link Long#modulo}.\n     * @function\n     * @param {!Long|number|bigint|string} divisor Divisor\n     * @returns {!Long} Remainder\n     */\n    LongPrototype.rem = LongPrototype.modulo;\n\n    /**\n     * Returns the bitwise NOT of this Long.\n     * @this {!Long}\n     * @returns {!Long}\n     */\n    LongPrototype.not = function not() {\n      return fromBits(~this.low, ~this.high, this.unsigned);\n    };\n\n    /**\n     * Returns count leading zeros of this Long.\n     * @this {!Long}\n     * @returns {!number}\n     */\n    LongPrototype.countLeadingZeros = function countLeadingZeros() {\n      return this.high ? Math.clz32(this.high) : Math.clz32(this.low) + 32;\n    };\n\n    /**\n     * Returns count leading zeros. This is an alias of {@link Long#countLeadingZeros}.\n     * @function\n     * @param {!Long}\n     * @returns {!number}\n     */\n    LongPrototype.clz = LongPrototype.countLeadingZeros;\n\n    /**\n     * Returns count trailing zeros of this Long.\n     * @this {!Long}\n     * @returns {!number}\n     */\n    LongPrototype.countTrailingZeros = function countTrailingZeros() {\n      return this.low ? ctz32(this.low) : ctz32(this.high) + 32;\n    };\n\n    /**\n     * Returns count trailing zeros. This is an alias of {@link Long#countTrailingZeros}.\n     * @function\n     * @param {!Long}\n     * @returns {!number}\n     */\n    LongPrototype.ctz = LongPrototype.countTrailingZeros;\n\n    /**\n     * Returns the bitwise AND of this Long and the specified.\n     * @this {!Long}\n     * @param {!Long|number|bigint|string} other Other Long\n     * @returns {!Long}\n     */\n    LongPrototype.and = function and(other) {\n      if (!isLong(other)) other = fromValue(other);\n      return fromBits(\n        this.low & other.low,\n        this.high & other.high,\n        this.unsigned,\n      );\n    };\n\n    /**\n     * Returns the bitwise OR of this Long and the specified.\n     * @this {!Long}\n     * @param {!Long|number|bigint|string} other Other Long\n     * @returns {!Long}\n     */\n    LongPrototype.or = function or(other) {\n      if (!isLong(other)) other = fromValue(other);\n      return fromBits(\n        this.low | other.low,\n        this.high | other.high,\n        this.unsigned,\n      );\n    };\n\n    /**\n     * Returns the bitwise XOR of this Long and the given one.\n     * @this {!Long}\n     * @param {!Long|number|bigint|string} other Other Long\n     * @returns {!Long}\n     */\n    LongPrototype.xor = function xor(other) {\n      if (!isLong(other)) other = fromValue(other);\n      return fromBits(\n        this.low ^ other.low,\n        this.high ^ other.high,\n        this.unsigned,\n      );\n    };\n\n    /**\n     * Returns this Long with bits shifted to the left by the given amount.\n     * @this {!Long}\n     * @param {number|!Long} numBits Number of bits\n     * @returns {!Long} Shifted Long\n     */\n    LongPrototype.shiftLeft = function shiftLeft(numBits) {\n      if (isLong(numBits)) numBits = numBits.toInt();\n      if ((numBits &= 63) === 0) return this;\n      else if (numBits < 32)\n        return fromBits(\n          this.low << numBits,\n          (this.high << numBits) | (this.low >>> (32 - numBits)),\n          this.unsigned,\n        );\n      else return fromBits(0, this.low << (numBits - 32), this.unsigned);\n    };\n\n    /**\n     * Returns this Long with bits shifted to the left by the given amount. This is an alias of {@link Long#shiftLeft}.\n     * @function\n     * @param {number|!Long} numBits Number of bits\n     * @returns {!Long} Shifted Long\n     */\n    LongPrototype.shl = LongPrototype.shiftLeft;\n\n    /**\n     * Returns this Long with bits arithmetically shifted to the right by the given amount.\n     * @this {!Long}\n     * @param {number|!Long} numBits Number of bits\n     * @returns {!Long} Shifted Long\n     */\n    LongPrototype.shiftRight = function shiftRight(numBits) {\n      if (isLong(numBits)) numBits = numBits.toInt();\n      if ((numBits &= 63) === 0) return this;\n      else if (numBits < 32)\n        return fromBits(\n          (this.low >>> numBits) | (this.high << (32 - numBits)),\n          this.high >> numBits,\n          this.unsigned,\n        );\n      else\n        return fromBits(\n          this.high >> (numBits - 32),\n          this.high >= 0 ? 0 : -1,\n          this.unsigned,\n        );\n    };\n\n    /**\n     * Returns this Long with bits arithmetically shifted to the right by the given amount. This is an alias of {@link Long#shiftRight}.\n     * @function\n     * @param {number|!Long} numBits Number of bits\n     * @returns {!Long} Shifted Long\n     */\n    LongPrototype.shr = LongPrototype.shiftRight;\n\n    /**\n     * Returns this Long with bits logically shifted to the right by the given amount.\n     * @this {!Long}\n     * @param {number|!Long} numBits Number of bits\n     * @returns {!Long} Shifted Long\n     */\n    LongPrototype.shiftRightUnsigned = function shiftRightUnsigned(numBits) {\n      if (isLong(numBits)) numBits = numBits.toInt();\n      if ((numBits &= 63) === 0) return this;\n      if (numBits < 32)\n        return fromBits(\n          (this.low >>> numBits) | (this.high << (32 - numBits)),\n          this.high >>> numBits,\n          this.unsigned,\n        );\n      if (numBits === 32) return fromBits(this.high, 0, this.unsigned);\n      return fromBits(this.high >>> (numBits - 32), 0, this.unsigned);\n    };\n\n    /**\n     * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\n     * @function\n     * @param {number|!Long} numBits Number of bits\n     * @returns {!Long} Shifted Long\n     */\n    LongPrototype.shru = LongPrototype.shiftRightUnsigned;\n\n    /**\n     * Returns this Long with bits logically shifted to the right by the given amount. This is an alias of {@link Long#shiftRightUnsigned}.\n     * @function\n     * @param {number|!Long} numBits Number of bits\n     * @returns {!Long} Shifted Long\n     */\n    LongPrototype.shr_u = LongPrototype.shiftRightUnsigned;\n\n    /**\n     * Returns this Long with bits rotated to the left by the given amount.\n     * @this {!Long}\n     * @param {number|!Long} numBits Number of bits\n     * @returns {!Long} Rotated Long\n     */\n    LongPrototype.rotateLeft = function rotateLeft(numBits) {\n      var b;\n      if (isLong(numBits)) numBits = numBits.toInt();\n      if ((numBits &= 63) === 0) return this;\n      if (numBits === 32) return fromBits(this.high, this.low, this.unsigned);\n      if (numBits < 32) {\n        b = 32 - numBits;\n        return fromBits(\n          (this.low << numBits) | (this.high >>> b),\n          (this.high << numBits) | (this.low >>> b),\n          this.unsigned,\n        );\n      }\n      numBits -= 32;\n      b = 32 - numBits;\n      return fromBits(\n        (this.high << numBits) | (this.low >>> b),\n        (this.low << numBits) | (this.high >>> b),\n        this.unsigned,\n      );\n    };\n    /**\n     * Returns this Long with bits rotated to the left by the given amount. This is an alias of {@link Long#rotateLeft}.\n     * @function\n     * @param {number|!Long} numBits Number of bits\n     * @returns {!Long} Rotated Long\n     */\n    LongPrototype.rotl = LongPrototype.rotateLeft;\n\n    /**\n     * Returns this Long with bits rotated to the right by the given amount.\n     * @this {!Long}\n     * @param {number|!Long} numBits Number of bits\n     * @returns {!Long} Rotated Long\n     */\n    LongPrototype.rotateRight = function rotateRight(numBits) {\n      var b;\n      if (isLong(numBits)) numBits = numBits.toInt();\n      if ((numBits &= 63) === 0) return this;\n      if (numBits === 32) return fromBits(this.high, this.low, this.unsigned);\n      if (numBits < 32) {\n        b = 32 - numBits;\n        return fromBits(\n          (this.high << b) | (this.low >>> numBits),\n          (this.low << b) | (this.high >>> numBits),\n          this.unsigned,\n        );\n      }\n      numBits -= 32;\n      b = 32 - numBits;\n      return fromBits(\n        (this.low << b) | (this.high >>> numBits),\n        (this.high << b) | (this.low >>> numBits),\n        this.unsigned,\n      );\n    };\n    /**\n     * Returns this Long with bits rotated to the right by the given amount. This is an alias of {@link Long#rotateRight}.\n     * @function\n     * @param {number|!Long} numBits Number of bits\n     * @returns {!Long} Rotated Long\n     */\n    LongPrototype.rotr = LongPrototype.rotateRight;\n\n    /**\n     * Converts this Long to signed.\n     * @this {!Long}\n     * @returns {!Long} Signed long\n     */\n    LongPrototype.toSigned = function toSigned() {\n      if (!this.unsigned) return this;\n      return fromBits(this.low, this.high, false);\n    };\n\n    /**\n     * Converts this Long to unsigned.\n     * @this {!Long}\n     * @returns {!Long} Unsigned long\n     */\n    LongPrototype.toUnsigned = function toUnsigned() {\n      if (this.unsigned) return this;\n      return fromBits(this.low, this.high, true);\n    };\n\n    /**\n     * Converts this Long to its byte representation.\n     * @param {boolean=} le Whether little or big endian, defaults to big endian\n     * @this {!Long}\n     * @returns {!Array.<number>} Byte representation\n     */\n    LongPrototype.toBytes = function toBytes(le) {\n      return le ? this.toBytesLE() : this.toBytesBE();\n    };\n\n    /**\n     * Converts this Long to its little endian byte representation.\n     * @this {!Long}\n     * @returns {!Array.<number>} Little endian byte representation\n     */\n    LongPrototype.toBytesLE = function toBytesLE() {\n      var hi = this.high,\n        lo = this.low;\n      return [\n        lo & 0xff,\n        (lo >>> 8) & 0xff,\n        (lo >>> 16) & 0xff,\n        lo >>> 24,\n        hi & 0xff,\n        (hi >>> 8) & 0xff,\n        (hi >>> 16) & 0xff,\n        hi >>> 24,\n      ];\n    };\n\n    /**\n     * Converts this Long to its big endian byte representation.\n     * @this {!Long}\n     * @returns {!Array.<number>} Big endian byte representation\n     */\n    LongPrototype.toBytesBE = function toBytesBE() {\n      var hi = this.high,\n        lo = this.low;\n      return [\n        hi >>> 24,\n        (hi >>> 16) & 0xff,\n        (hi >>> 8) & 0xff,\n        hi & 0xff,\n        lo >>> 24,\n        (lo >>> 16) & 0xff,\n        (lo >>> 8) & 0xff,\n        lo & 0xff,\n      ];\n    };\n\n    /**\n     * Creates a Long from its byte representation.\n     * @param {!Array.<number>} bytes Byte representation\n     * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n     * @param {boolean=} le Whether little or big endian, defaults to big endian\n     * @returns {Long} The corresponding Long value\n     */\n    Long.fromBytes = function fromBytes(bytes, unsigned, le) {\n      return le\n        ? Long.fromBytesLE(bytes, unsigned)\n        : Long.fromBytesBE(bytes, unsigned);\n    };\n\n    /**\n     * Creates a Long from its little endian byte representation.\n     * @param {!Array.<number>} bytes Little endian byte representation\n     * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n     * @returns {Long} The corresponding Long value\n     */\n    Long.fromBytesLE = function fromBytesLE(bytes, unsigned) {\n      return new Long(\n        bytes[0] | (bytes[1] << 8) | (bytes[2] << 16) | (bytes[3] << 24),\n        bytes[4] | (bytes[5] << 8) | (bytes[6] << 16) | (bytes[7] << 24),\n        unsigned,\n      );\n    };\n\n    /**\n     * Creates a Long from its big endian byte representation.\n     * @param {!Array.<number>} bytes Big endian byte representation\n     * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n     * @returns {Long} The corresponding Long value\n     */\n    Long.fromBytesBE = function fromBytesBE(bytes, unsigned) {\n      return new Long(\n        (bytes[4] << 24) | (bytes[5] << 16) | (bytes[6] << 8) | bytes[7],\n        (bytes[0] << 24) | (bytes[1] << 16) | (bytes[2] << 8) | bytes[3],\n        unsigned,\n      );\n    };\n\n    // Support conversion to/from BigInt where available\n    if (typeof BigInt === \"function\") {\n      /**\n       * Returns a Long representing the given big integer.\n       * @function\n       * @param {number} value The big integer value\n       * @param {boolean=} unsigned Whether unsigned or not, defaults to signed\n       * @returns {!Long} The corresponding Long value\n       */\n      Long.fromBigInt = function fromBigInt(value, unsigned) {\n        var lowBits = Number(BigInt.asIntN(32, value));\n        var highBits = Number(BigInt.asIntN(32, value >> BigInt(32)));\n        return fromBits(lowBits, highBits, unsigned);\n      };\n\n      // Override\n      Long.fromValue = function fromValueWithBigInt(value, unsigned) {\n        if (typeof value === \"bigint\") return Long.fromBigInt(value, unsigned);\n        return fromValue(value, unsigned);\n      };\n\n      /**\n       * Converts the Long to its big integer representation.\n       * @this {!Long}\n       * @returns {bigint}\n       */\n      LongPrototype.toBigInt = function toBigInt() {\n        var lowBigInt = BigInt(this.low >>> 0);\n        var highBigInt = BigInt(this.unsigned ? this.high >>> 0 : this.high);\n        return (highBigInt << BigInt(32)) | lowBigInt;\n      };\n    }\n    var _default = (_exports.default = Long);\n  },\n);\n", null, "/*\n * Copyright 2021 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { isIPv4, isIPv6 } from 'net';\nimport { OrderedMap, type OrderedMapIterator } from '@js-sdsl/ordered-map';\nimport { ConnectivityState } from './connectivity-state';\nimport { Status } from './constants';\nimport { Timestamp } from './generated/google/protobuf/Timestamp';\nimport { Channel as ChannelMessage } from './generated/grpc/channelz/v1/Channel';\nimport { ChannelConnectivityState__Output } from './generated/grpc/channelz/v1/ChannelConnectivityState';\nimport { ChannelRef as ChannelRefMessage } from './generated/grpc/channelz/v1/ChannelRef';\nimport { ChannelTrace } from './generated/grpc/channelz/v1/ChannelTrace';\nimport { GetChannelRequest__Output } from './generated/grpc/channelz/v1/GetChannelRequest';\nimport { GetChannelResponse } from './generated/grpc/channelz/v1/GetChannelResponse';\nimport { sendUnaryData, ServerUnaryCall } from './server-call';\nimport { ServerRef as ServerRefMessage } from './generated/grpc/channelz/v1/ServerRef';\nimport { SocketRef as SocketRefMessage } from './generated/grpc/channelz/v1/SocketRef';\nimport {\n  isTcpSubchannelAddress,\n  SubchannelAddress,\n} from './subchannel-address';\nimport { SubchannelRef as SubchannelRefMessage } from './generated/grpc/channelz/v1/SubchannelRef';\nimport { GetServerRequest__Output } from './generated/grpc/channelz/v1/GetServerRequest';\nimport { GetServerResponse } from './generated/grpc/channelz/v1/GetServerResponse';\nimport { Server as ServerMessage } from './generated/grpc/channelz/v1/Server';\nimport { GetServersRequest__Output } from './generated/grpc/channelz/v1/GetServersRequest';\nimport { GetServersResponse } from './generated/grpc/channelz/v1/GetServersResponse';\nimport { GetTopChannelsRequest__Output } from './generated/grpc/channelz/v1/GetTopChannelsRequest';\nimport { GetTopChannelsResponse } from './generated/grpc/channelz/v1/GetTopChannelsResponse';\nimport { GetSubchannelRequest__Output } from './generated/grpc/channelz/v1/GetSubchannelRequest';\nimport { GetSubchannelResponse } from './generated/grpc/channelz/v1/GetSubchannelResponse';\nimport { Subchannel as SubchannelMessage } from './generated/grpc/channelz/v1/Subchannel';\nimport { GetSocketRequest__Output } from './generated/grpc/channelz/v1/GetSocketRequest';\nimport { GetSocketResponse } from './generated/grpc/channelz/v1/GetSocketResponse';\nimport { Socket as SocketMessage } from './generated/grpc/channelz/v1/Socket';\nimport { Address } from './generated/grpc/channelz/v1/Address';\nimport { Security } from './generated/grpc/channelz/v1/Security';\nimport { GetServerSocketsRequest__Output } from './generated/grpc/channelz/v1/GetServerSocketsRequest';\nimport { GetServerSocketsResponse } from './generated/grpc/channelz/v1/GetServerSocketsResponse';\nimport {\n  ChannelzDefinition,\n  ChannelzHandlers,\n} from './generated/grpc/channelz/v1/Channelz';\nimport { ProtoGrpcType as ChannelzProtoGrpcType } from './generated/channelz';\nimport type { loadSync } from '@grpc/proto-loader';\nimport { registerAdminService } from './admin';\nimport { loadPackageDefinition } from './make-client';\n\nexport type TraceSeverity =\n  | 'CT_UNKNOWN'\n  | 'CT_INFO'\n  | 'CT_WARNING'\n  | 'CT_ERROR';\n\ninterface Ref {\n  kind: EntityTypes;\n  id: number;\n  name: string;\n}\n\nexport interface ChannelRef extends Ref {\n  kind: EntityTypes.channel;\n}\n\nexport interface SubchannelRef extends Ref {\n  kind: EntityTypes.subchannel;\n}\n\nexport interface ServerRef extends Ref {\n  kind: EntityTypes.server;\n}\n\nexport interface SocketRef extends Ref {\n  kind: EntityTypes.socket;\n}\n\nfunction channelRefToMessage(ref: ChannelRef): ChannelRefMessage {\n  return {\n    channel_id: ref.id,\n    name: ref.name,\n  };\n}\n\nfunction subchannelRefToMessage(ref: SubchannelRef): SubchannelRefMessage {\n  return {\n    subchannel_id: ref.id,\n    name: ref.name,\n  };\n}\n\nfunction serverRefToMessage(ref: ServerRef): ServerRefMessage {\n  return {\n    server_id: ref.id,\n  };\n}\n\nfunction socketRefToMessage(ref: SocketRef): SocketRefMessage {\n  return {\n    socket_id: ref.id,\n    name: ref.name,\n  };\n}\n\ninterface TraceEvent {\n  description: string;\n  severity: TraceSeverity;\n  timestamp: Date;\n  childChannel?: ChannelRef;\n  childSubchannel?: SubchannelRef;\n}\n\n/**\n * The loose upper bound on the number of events that should be retained in a\n * trace. This may be exceeded by up to a factor of 2. Arbitrarily chosen as a\n * number that should be large enough to contain the recent relevant\n * information, but small enough to not use excessive memory.\n */\nconst TARGET_RETAINED_TRACES = 32;\n\n/**\n * Default number of sockets/servers/channels/subchannels to return\n */\nconst DEFAULT_MAX_RESULTS = 100;\n\nexport class ChannelzTraceStub {\n  readonly events: TraceEvent[] = [];\n  readonly creationTimestamp: Date = new Date();\n  readonly eventsLogged = 0;\n\n  addTrace(): void {}\n  getTraceMessage(): ChannelTrace {\n    return {\n      creation_timestamp: dateToProtoTimestamp(this.creationTimestamp),\n      num_events_logged: this.eventsLogged,\n      events: [],\n    };\n  }\n}\n\nexport class ChannelzTrace {\n  events: TraceEvent[] = [];\n  creationTimestamp: Date;\n  eventsLogged = 0;\n\n  constructor() {\n    this.creationTimestamp = new Date();\n  }\n\n  addTrace(\n    severity: TraceSeverity,\n    description: string,\n    child?: ChannelRef | SubchannelRef\n  ) {\n    const timestamp = new Date();\n    this.events.push({\n      description: description,\n      severity: severity,\n      timestamp: timestamp,\n      childChannel: child?.kind === 'channel' ? child : undefined,\n      childSubchannel: child?.kind === 'subchannel' ? child : undefined,\n    });\n    // Whenever the trace array gets too large, discard the first half\n    if (this.events.length >= TARGET_RETAINED_TRACES * 2) {\n      this.events = this.events.slice(TARGET_RETAINED_TRACES);\n    }\n    this.eventsLogged += 1;\n  }\n\n  getTraceMessage(): ChannelTrace {\n    return {\n      creation_timestamp: dateToProtoTimestamp(this.creationTimestamp),\n      num_events_logged: this.eventsLogged,\n      events: this.events.map(event => {\n        return {\n          description: event.description,\n          severity: event.severity,\n          timestamp: dateToProtoTimestamp(event.timestamp),\n          channel_ref: event.childChannel\n            ? channelRefToMessage(event.childChannel)\n            : null,\n          subchannel_ref: event.childSubchannel\n            ? subchannelRefToMessage(event.childSubchannel)\n            : null,\n        };\n      }),\n    };\n  }\n}\n\ntype RefOrderedMap = OrderedMap<\n  number,\n  { ref: { id: number; kind: EntityTypes; name: string }; count: number }\n>;\n\nexport class ChannelzChildrenTracker {\n  private channelChildren: RefOrderedMap = new OrderedMap();\n  private subchannelChildren: RefOrderedMap = new OrderedMap();\n  private socketChildren: RefOrderedMap = new OrderedMap();\n  private trackerMap = {\n    [EntityTypes.channel]: this.channelChildren,\n    [EntityTypes.subchannel]: this.subchannelChildren,\n    [EntityTypes.socket]: this.socketChildren,\n  } as const;\n\n  refChild(child: ChannelRef | SubchannelRef | SocketRef) {\n    const tracker = this.trackerMap[child.kind];\n    const trackedChild = tracker.find(child.id);\n\n    if (trackedChild.equals(tracker.end())) {\n      tracker.setElement(\n        child.id,\n        {\n          ref: child,\n          count: 1,\n        },\n        trackedChild\n      );\n    } else {\n      trackedChild.pointer[1].count += 1;\n    }\n  }\n\n  unrefChild(child: ChannelRef | SubchannelRef | SocketRef) {\n    const tracker = this.trackerMap[child.kind];\n    const trackedChild = tracker.getElementByKey(child.id);\n    if (trackedChild !== undefined) {\n      trackedChild.count -= 1;\n      if (trackedChild.count === 0) {\n        tracker.eraseElementByKey(child.id);\n      }\n    }\n  }\n\n  getChildLists(): ChannelzChildren {\n    return {\n      channels: this.channelChildren as ChannelzChildren['channels'],\n      subchannels: this.subchannelChildren as ChannelzChildren['subchannels'],\n      sockets: this.socketChildren as ChannelzChildren['sockets'],\n    };\n  }\n}\n\nexport class ChannelzChildrenTrackerStub extends ChannelzChildrenTracker {\n  override refChild(): void {}\n  override unrefChild(): void {}\n}\n\nexport class ChannelzCallTracker {\n  callsStarted = 0;\n  callsSucceeded = 0;\n  callsFailed = 0;\n  lastCallStartedTimestamp: Date | null = null;\n\n  addCallStarted() {\n    this.callsStarted += 1;\n    this.lastCallStartedTimestamp = new Date();\n  }\n  addCallSucceeded() {\n    this.callsSucceeded += 1;\n  }\n  addCallFailed() {\n    this.callsFailed += 1;\n  }\n}\n\nexport class ChannelzCallTrackerStub extends ChannelzCallTracker {\n  override addCallStarted() {}\n  override addCallSucceeded() {}\n  override addCallFailed() {}\n}\n\nexport interface ChannelzChildren {\n  channels: OrderedMap<number, { ref: ChannelRef; count: number }>;\n  subchannels: OrderedMap<number, { ref: SubchannelRef; count: number }>;\n  sockets: OrderedMap<number, { ref: SocketRef; count: number }>;\n}\n\nexport interface ChannelInfo {\n  target: string;\n  state: ConnectivityState;\n  trace: ChannelzTrace | ChannelzTraceStub;\n  callTracker: ChannelzCallTracker | ChannelzCallTrackerStub;\n  children: ChannelzChildren;\n}\n\nexport type SubchannelInfo = ChannelInfo;\n\nexport interface ServerInfo {\n  trace: ChannelzTrace;\n  callTracker: ChannelzCallTracker;\n  listenerChildren: ChannelzChildren;\n  sessionChildren: ChannelzChildren;\n}\n\nexport interface TlsInfo {\n  cipherSuiteStandardName: string | null;\n  cipherSuiteOtherName: string | null;\n  localCertificate: Buffer | null;\n  remoteCertificate: Buffer | null;\n}\n\nexport interface SocketInfo {\n  localAddress: SubchannelAddress | null;\n  remoteAddress: SubchannelAddress | null;\n  security: TlsInfo | null;\n  remoteName: string | null;\n  streamsStarted: number;\n  streamsSucceeded: number;\n  streamsFailed: number;\n  messagesSent: number;\n  messagesReceived: number;\n  keepAlivesSent: number;\n  lastLocalStreamCreatedTimestamp: Date | null;\n  lastRemoteStreamCreatedTimestamp: Date | null;\n  lastMessageSentTimestamp: Date | null;\n  lastMessageReceivedTimestamp: Date | null;\n  localFlowControlWindow: number | null;\n  remoteFlowControlWindow: number | null;\n}\n\ninterface ChannelEntry {\n  ref: ChannelRef;\n  getInfo(): ChannelInfo;\n}\n\ninterface SubchannelEntry {\n  ref: SubchannelRef;\n  getInfo(): SubchannelInfo;\n}\n\ninterface ServerEntry {\n  ref: ServerRef;\n  getInfo(): ServerInfo;\n}\n\ninterface SocketEntry {\n  ref: SocketRef;\n  getInfo(): SocketInfo;\n}\n\nexport const enum EntityTypes {\n  channel = 'channel',\n  subchannel = 'subchannel',\n  server = 'server',\n  socket = 'socket',\n}\n\ntype EntryOrderedMap = OrderedMap<number, { ref: Ref; getInfo: () => any }>;\n\nconst entityMaps = {\n  [EntityTypes.channel]: new OrderedMap<number, ChannelEntry>(),\n  [EntityTypes.subchannel]: new OrderedMap<number, SubchannelEntry>(),\n  [EntityTypes.server]: new OrderedMap<number, ServerEntry>(),\n  [EntityTypes.socket]: new OrderedMap<number, SocketEntry>(),\n} as const;\n\nexport type RefByType<T extends EntityTypes> = T extends EntityTypes.channel\n  ? ChannelRef\n  : T extends EntityTypes.server\n  ? ServerRef\n  : T extends EntityTypes.socket\n  ? SocketRef\n  : T extends EntityTypes.subchannel\n  ? SubchannelRef\n  : never;\n\nexport type EntryByType<T extends EntityTypes> = T extends EntityTypes.channel\n  ? ChannelEntry\n  : T extends EntityTypes.server\n  ? ServerEntry\n  : T extends EntityTypes.socket\n  ? SocketEntry\n  : T extends EntityTypes.subchannel\n  ? SubchannelEntry\n  : never;\n\nexport type InfoByType<T extends EntityTypes> = T extends EntityTypes.channel\n  ? ChannelInfo\n  : T extends EntityTypes.subchannel\n  ? SubchannelInfo\n  : T extends EntityTypes.server\n  ? ServerInfo\n  : T extends EntityTypes.socket\n  ? SocketInfo\n  : never;\n\nconst generateRegisterFn = <R extends EntityTypes>(kind: R) => {\n  let nextId = 1;\n  function getNextId(): number {\n    return nextId++;\n  }\n\n  const entityMap: EntryOrderedMap = entityMaps[kind];\n\n  return (\n    name: string,\n    getInfo: () => InfoByType<R>,\n    channelzEnabled: boolean\n  ): RefByType<R> => {\n    const id = getNextId();\n    const ref = { id, name, kind } as RefByType<R>;\n    if (channelzEnabled) {\n      entityMap.setElement(id, { ref, getInfo });\n    }\n    return ref;\n  };\n};\n\nexport const registerChannelzChannel = generateRegisterFn(EntityTypes.channel);\nexport const registerChannelzSubchannel = generateRegisterFn(\n  EntityTypes.subchannel\n);\nexport const registerChannelzServer = generateRegisterFn(EntityTypes.server);\nexport const registerChannelzSocket = generateRegisterFn(EntityTypes.socket);\n\nexport function unregisterChannelzRef(\n  ref: ChannelRef | SubchannelRef | ServerRef | SocketRef\n) {\n  entityMaps[ref.kind].eraseElementByKey(ref.id);\n}\n\n/**\n * Parse a single section of an IPv6 address as two bytes\n * @param addressSection A hexadecimal string of length up to 4\n * @returns The pair of bytes representing this address section\n */\nfunction parseIPv6Section(addressSection: string): [number, number] {\n  const numberValue = Number.parseInt(addressSection, 16);\n  return [(numberValue / 256) | 0, numberValue % 256];\n}\n\n/**\n * Parse a chunk of an IPv6 address string to some number of bytes\n * @param addressChunk Some number of segments of up to 4 hexadecimal\n *   characters each, joined by colons.\n * @returns The list of bytes representing this address chunk\n */\nfunction parseIPv6Chunk(addressChunk: string): number[] {\n  if (addressChunk === '') {\n    return [];\n  }\n  const bytePairs = addressChunk\n    .split(':')\n    .map(section => parseIPv6Section(section));\n  const result: number[] = [];\n  return result.concat(...bytePairs);\n}\n\nfunction isIPv6MappedIPv4(ipAddress: string) {\n  return isIPv6(ipAddress) && ipAddress.toLowerCase().startsWith('::ffff:') && isIPv4(ipAddress.substring(7));\n}\n\n/**\n * Prerequisite: isIPv4(ipAddress)\n * @param ipAddress\n * @returns\n */\nfunction ipv4AddressStringToBuffer(ipAddress: string): Buffer {\n  return Buffer.from(\n    Uint8Array.from(\n      ipAddress.split('.').map(segment => Number.parseInt(segment))\n    )\n  );\n}\n\n/**\n * Converts an IPv4 or IPv6 address from string representation to binary\n * representation\n * @param ipAddress an IP address in standard IPv4 or IPv6 text format\n * @returns\n */\nfunction ipAddressStringToBuffer(ipAddress: string): Buffer | null {\n  if (isIPv4(ipAddress)) {\n    return ipv4AddressStringToBuffer(ipAddress);\n  } else if (isIPv6MappedIPv4(ipAddress)) {\n    return ipv4AddressStringToBuffer(ipAddress.substring(7));\n  } else if (isIPv6(ipAddress)) {\n    let leftSection: string;\n    let rightSection: string;\n    const doubleColonIndex = ipAddress.indexOf('::');\n    if (doubleColonIndex === -1) {\n      leftSection = ipAddress;\n      rightSection = '';\n    } else {\n      leftSection = ipAddress.substring(0, doubleColonIndex);\n      rightSection = ipAddress.substring(doubleColonIndex + 2);\n    }\n    const leftBuffer = Buffer.from(parseIPv6Chunk(leftSection));\n    const rightBuffer = Buffer.from(parseIPv6Chunk(rightSection));\n    const middleBuffer = Buffer.alloc(\n      16 - leftBuffer.length - rightBuffer.length,\n      0\n    );\n    return Buffer.concat([leftBuffer, middleBuffer, rightBuffer]);\n  } else {\n    return null;\n  }\n}\n\nfunction connectivityStateToMessage(\n  state: ConnectivityState\n): ChannelConnectivityState__Output {\n  switch (state) {\n    case ConnectivityState.CONNECTING:\n      return {\n        state: 'CONNECTING',\n      };\n    case ConnectivityState.IDLE:\n      return {\n        state: 'IDLE',\n      };\n    case ConnectivityState.READY:\n      return {\n        state: 'READY',\n      };\n    case ConnectivityState.SHUTDOWN:\n      return {\n        state: 'SHUTDOWN',\n      };\n    case ConnectivityState.TRANSIENT_FAILURE:\n      return {\n        state: 'TRANSIENT_FAILURE',\n      };\n    default:\n      return {\n        state: 'UNKNOWN',\n      };\n  }\n}\n\nfunction dateToProtoTimestamp(date?: Date | null): Timestamp | null {\n  if (!date) {\n    return null;\n  }\n  const millisSinceEpoch = date.getTime();\n  return {\n    seconds: (millisSinceEpoch / 1000) | 0,\n    nanos: (millisSinceEpoch % 1000) * 1_000_000,\n  };\n}\n\nfunction getChannelMessage(channelEntry: ChannelEntry): ChannelMessage {\n  const resolvedInfo = channelEntry.getInfo();\n  const channelRef: ChannelRefMessage[] = [];\n  const subchannelRef: SubchannelRefMessage[] = [];\n\n  resolvedInfo.children.channels.forEach(el => {\n    channelRef.push(channelRefToMessage(el[1].ref));\n  });\n\n  resolvedInfo.children.subchannels.forEach(el => {\n    subchannelRef.push(subchannelRefToMessage(el[1].ref));\n  });\n\n  return {\n    ref: channelRefToMessage(channelEntry.ref),\n    data: {\n      target: resolvedInfo.target,\n      state: connectivityStateToMessage(resolvedInfo.state),\n      calls_started: resolvedInfo.callTracker.callsStarted,\n      calls_succeeded: resolvedInfo.callTracker.callsSucceeded,\n      calls_failed: resolvedInfo.callTracker.callsFailed,\n      last_call_started_timestamp: dateToProtoTimestamp(\n        resolvedInfo.callTracker.lastCallStartedTimestamp\n      ),\n      trace: resolvedInfo.trace.getTraceMessage(),\n    },\n    channel_ref: channelRef,\n    subchannel_ref: subchannelRef,\n  };\n}\n\nfunction GetChannel(\n  call: ServerUnaryCall<GetChannelRequest__Output, GetChannelResponse>,\n  callback: sendUnaryData<GetChannelResponse>\n): void {\n  const channelId = parseInt(call.request.channel_id, 10);\n  const channelEntry =\n    entityMaps[EntityTypes.channel].getElementByKey(channelId);\n  if (channelEntry === undefined) {\n    callback({\n      code: Status.NOT_FOUND,\n      details: 'No channel data found for id ' + channelId,\n    });\n    return;\n  }\n  callback(null, { channel: getChannelMessage(channelEntry) });\n}\n\nfunction GetTopChannels(\n  call: ServerUnaryCall<GetTopChannelsRequest__Output, GetTopChannelsResponse>,\n  callback: sendUnaryData<GetTopChannelsResponse>\n): void {\n  const maxResults =\n    parseInt(call.request.max_results, 10) || DEFAULT_MAX_RESULTS;\n  const resultList: ChannelMessage[] = [];\n  const startId = parseInt(call.request.start_channel_id, 10);\n  const channelEntries = entityMaps[EntityTypes.channel];\n\n  let i: OrderedMapIterator<number, ChannelEntry>;\n  for (\n    i = channelEntries.lowerBound(startId);\n    !i.equals(channelEntries.end()) && resultList.length < maxResults;\n    i = i.next()\n  ) {\n    resultList.push(getChannelMessage(i.pointer[1]));\n  }\n\n  callback(null, {\n    channel: resultList,\n    end: i.equals(channelEntries.end()),\n  });\n}\n\nfunction getServerMessage(serverEntry: ServerEntry): ServerMessage {\n  const resolvedInfo = serverEntry.getInfo();\n  const listenSocket: SocketRefMessage[] = [];\n\n  resolvedInfo.listenerChildren.sockets.forEach(el => {\n    listenSocket.push(socketRefToMessage(el[1].ref));\n  });\n\n  return {\n    ref: serverRefToMessage(serverEntry.ref),\n    data: {\n      calls_started: resolvedInfo.callTracker.callsStarted,\n      calls_succeeded: resolvedInfo.callTracker.callsSucceeded,\n      calls_failed: resolvedInfo.callTracker.callsFailed,\n      last_call_started_timestamp: dateToProtoTimestamp(\n        resolvedInfo.callTracker.lastCallStartedTimestamp\n      ),\n      trace: resolvedInfo.trace.getTraceMessage(),\n    },\n    listen_socket: listenSocket,\n  };\n}\n\nfunction GetServer(\n  call: ServerUnaryCall<GetServerRequest__Output, GetServerResponse>,\n  callback: sendUnaryData<GetServerResponse>\n): void {\n  const serverId = parseInt(call.request.server_id, 10);\n  const serverEntries = entityMaps[EntityTypes.server];\n  const serverEntry = serverEntries.getElementByKey(serverId);\n  if (serverEntry === undefined) {\n    callback({\n      code: Status.NOT_FOUND,\n      details: 'No server data found for id ' + serverId,\n    });\n    return;\n  }\n  callback(null, { server: getServerMessage(serverEntry) });\n}\n\nfunction GetServers(\n  call: ServerUnaryCall<GetServersRequest__Output, GetServersResponse>,\n  callback: sendUnaryData<GetServersResponse>\n): void {\n  const maxResults =\n    parseInt(call.request.max_results, 10) || DEFAULT_MAX_RESULTS;\n  const startId = parseInt(call.request.start_server_id, 10);\n  const serverEntries = entityMaps[EntityTypes.server];\n  const resultList: ServerMessage[] = [];\n\n  let i: OrderedMapIterator<number, ServerEntry>;\n  for (\n    i = serverEntries.lowerBound(startId);\n    !i.equals(serverEntries.end()) && resultList.length < maxResults;\n    i = i.next()\n  ) {\n    resultList.push(getServerMessage(i.pointer[1]));\n  }\n\n  callback(null, {\n    server: resultList,\n    end: i.equals(serverEntries.end()),\n  });\n}\n\nfunction GetSubchannel(\n  call: ServerUnaryCall<GetSubchannelRequest__Output, GetSubchannelResponse>,\n  callback: sendUnaryData<GetSubchannelResponse>\n): void {\n  const subchannelId = parseInt(call.request.subchannel_id, 10);\n  const subchannelEntry =\n    entityMaps[EntityTypes.subchannel].getElementByKey(subchannelId);\n  if (subchannelEntry === undefined) {\n    callback({\n      code: Status.NOT_FOUND,\n      details: 'No subchannel data found for id ' + subchannelId,\n    });\n    return;\n  }\n  const resolvedInfo = subchannelEntry.getInfo();\n  const listenSocket: SocketRefMessage[] = [];\n\n  resolvedInfo.children.sockets.forEach(el => {\n    listenSocket.push(socketRefToMessage(el[1].ref));\n  });\n\n  const subchannelMessage: SubchannelMessage = {\n    ref: subchannelRefToMessage(subchannelEntry.ref),\n    data: {\n      target: resolvedInfo.target,\n      state: connectivityStateToMessage(resolvedInfo.state),\n      calls_started: resolvedInfo.callTracker.callsStarted,\n      calls_succeeded: resolvedInfo.callTracker.callsSucceeded,\n      calls_failed: resolvedInfo.callTracker.callsFailed,\n      last_call_started_timestamp: dateToProtoTimestamp(\n        resolvedInfo.callTracker.lastCallStartedTimestamp\n      ),\n      trace: resolvedInfo.trace.getTraceMessage(),\n    },\n    socket_ref: listenSocket,\n  };\n  callback(null, { subchannel: subchannelMessage });\n}\n\nfunction subchannelAddressToAddressMessage(\n  subchannelAddress: SubchannelAddress\n): Address {\n  if (isTcpSubchannelAddress(subchannelAddress)) {\n    return {\n      address: 'tcpip_address',\n      tcpip_address: {\n        ip_address:\n          ipAddressStringToBuffer(subchannelAddress.host) ?? undefined,\n        port: subchannelAddress.port,\n      },\n    };\n  } else {\n    return {\n      address: 'uds_address',\n      uds_address: {\n        filename: subchannelAddress.path,\n      },\n    };\n  }\n}\n\nfunction GetSocket(\n  call: ServerUnaryCall<GetSocketRequest__Output, GetSocketResponse>,\n  callback: sendUnaryData<GetSocketResponse>\n): void {\n  const socketId = parseInt(call.request.socket_id, 10);\n  const socketEntry = entityMaps[EntityTypes.socket].getElementByKey(socketId);\n  if (socketEntry === undefined) {\n    callback({\n      code: Status.NOT_FOUND,\n      details: 'No socket data found for id ' + socketId,\n    });\n    return;\n  }\n  const resolvedInfo = socketEntry.getInfo();\n  const securityMessage: Security | null = resolvedInfo.security\n    ? {\n        model: 'tls',\n        tls: {\n          cipher_suite: resolvedInfo.security.cipherSuiteStandardName\n            ? 'standard_name'\n            : 'other_name',\n          standard_name:\n            resolvedInfo.security.cipherSuiteStandardName ?? undefined,\n          other_name: resolvedInfo.security.cipherSuiteOtherName ?? undefined,\n          local_certificate:\n            resolvedInfo.security.localCertificate ?? undefined,\n          remote_certificate:\n            resolvedInfo.security.remoteCertificate ?? undefined,\n        },\n      }\n    : null;\n  const socketMessage: SocketMessage = {\n    ref: socketRefToMessage(socketEntry.ref),\n    local: resolvedInfo.localAddress\n      ? subchannelAddressToAddressMessage(resolvedInfo.localAddress)\n      : null,\n    remote: resolvedInfo.remoteAddress\n      ? subchannelAddressToAddressMessage(resolvedInfo.remoteAddress)\n      : null,\n    remote_name: resolvedInfo.remoteName ?? undefined,\n    security: securityMessage,\n    data: {\n      keep_alives_sent: resolvedInfo.keepAlivesSent,\n      streams_started: resolvedInfo.streamsStarted,\n      streams_succeeded: resolvedInfo.streamsSucceeded,\n      streams_failed: resolvedInfo.streamsFailed,\n      last_local_stream_created_timestamp: dateToProtoTimestamp(\n        resolvedInfo.lastLocalStreamCreatedTimestamp\n      ),\n      last_remote_stream_created_timestamp: dateToProtoTimestamp(\n        resolvedInfo.lastRemoteStreamCreatedTimestamp\n      ),\n      messages_received: resolvedInfo.messagesReceived,\n      messages_sent: resolvedInfo.messagesSent,\n      last_message_received_timestamp: dateToProtoTimestamp(\n        resolvedInfo.lastMessageReceivedTimestamp\n      ),\n      last_message_sent_timestamp: dateToProtoTimestamp(\n        resolvedInfo.lastMessageSentTimestamp\n      ),\n      local_flow_control_window: resolvedInfo.localFlowControlWindow\n        ? { value: resolvedInfo.localFlowControlWindow }\n        : null,\n      remote_flow_control_window: resolvedInfo.remoteFlowControlWindow\n        ? { value: resolvedInfo.remoteFlowControlWindow }\n        : null,\n    },\n  };\n  callback(null, { socket: socketMessage });\n}\n\nfunction GetServerSockets(\n  call: ServerUnaryCall<\n    GetServerSocketsRequest__Output,\n    GetServerSocketsResponse\n  >,\n  callback: sendUnaryData<GetServerSocketsResponse>\n): void {\n  const serverId = parseInt(call.request.server_id, 10);\n  const serverEntry = entityMaps[EntityTypes.server].getElementByKey(serverId);\n\n  if (serverEntry === undefined) {\n    callback({\n      code: Status.NOT_FOUND,\n      details: 'No server data found for id ' + serverId,\n    });\n    return;\n  }\n\n  const startId = parseInt(call.request.start_socket_id, 10);\n  const maxResults =\n    parseInt(call.request.max_results, 10) || DEFAULT_MAX_RESULTS;\n  const resolvedInfo = serverEntry.getInfo();\n  // If we wanted to include listener sockets in the result, this line would\n  // instead say\n  // const allSockets = resolvedInfo.listenerChildren.sockets.concat(resolvedInfo.sessionChildren.sockets).sort((ref1, ref2) => ref1.id - ref2.id);\n  const allSockets = resolvedInfo.sessionChildren.sockets;\n  const resultList: SocketRefMessage[] = [];\n\n  let i: OrderedMapIterator<number, { ref: SocketRef }>;\n  for (\n    i = allSockets.lowerBound(startId);\n    !i.equals(allSockets.end()) && resultList.length < maxResults;\n    i = i.next()\n  ) {\n    resultList.push(socketRefToMessage(i.pointer[1].ref));\n  }\n\n  callback(null, {\n    socket_ref: resultList,\n    end: i.equals(allSockets.end()),\n  });\n}\n\nexport function getChannelzHandlers(): ChannelzHandlers {\n  return {\n    GetChannel,\n    GetTopChannels,\n    GetServer,\n    GetServers,\n    GetSubchannel,\n    GetSocket,\n    GetServerSockets,\n  };\n}\n\nlet loadedChannelzDefinition: ChannelzDefinition | null = null;\n\nexport function getChannelzServiceDefinition(): ChannelzDefinition {\n  if (loadedChannelzDefinition) {\n    return loadedChannelzDefinition;\n  }\n  /* The purpose of this complexity is to avoid loading @grpc/proto-loader at\n   * runtime for users who will not use/enable channelz. */\n  const loaderLoadSync = require('@grpc/proto-loader')\n    .loadSync as typeof loadSync;\n  const loadedProto = loaderLoadSync('channelz.proto', {\n    keepCase: true,\n    longs: String,\n    enums: String,\n    defaults: true,\n    oneofs: true,\n    includeDirs: [`${__dirname}/../../proto`],\n  });\n  const channelzGrpcObject = loadPackageDefinition(\n    loadedProto\n  ) as unknown as ChannelzProtoGrpcType;\n  loadedChannelzDefinition =\n    channelzGrpcObject.grpc.channelz.v1.Channelz.service;\n  return loadedChannelzDefinition;\n}\n\nexport function setup() {\n  registerAdminService(getChannelzServiceDefinition, getChannelzHandlers);\n}\n", "/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nlet nextCallNumber = 0;\n\nexport function getNextCallNumber() {\n  return nextCallNumber++;\n}\n", "/*\n * Copyright 2021 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nexport enum CompressionAlgorithms {\n  identity = 0,\n  deflate = 1,\n  gzip = 2,\n}\n", "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { StatusObject, WriteObject } from './call-interface';\nimport { Metadata } from './metadata';\n\n/**\n * Filter classes represent related per-call logic and state that is primarily\n * used to modify incoming and outgoing data. All async filters can be\n * rejected. The rejection error must be a StatusObject, and a rejection will\n * cause the call to end with that status.\n */\nexport interface Filter {\n  sendMetadata(metadata: Promise<Metadata>): Promise<Metadata>;\n\n  receiveMetadata(metadata: Metadata): Metadata;\n\n  sendMessage(message: Promise<WriteObject>): Promise<WriteObject>;\n\n  receiveMessage(message: Promise<Buffer>): Promise<Buffer>;\n\n  receiveTrailers(status: StatusObject): StatusObject;\n}\n\nexport abstract class BaseFilter implements Filter {\n  async sendMetadata(metadata: Promise<Metadata>): Promise<Metadata> {\n    return metadata;\n  }\n\n  receiveMetadata(metadata: Metadata): Metadata {\n    return metadata;\n  }\n\n  async sendMessage(message: Promise<WriteObject>): Promise<WriteObject> {\n    return message;\n  }\n\n  async receiveMessage(message: Promise<Buffer>): Promise<Buffer> {\n    return message;\n  }\n\n  receiveTrailers(status: StatusObject): StatusObject {\n    return status;\n  }\n}\n\nexport interface FilterFactory<T extends Filter> {\n  createFilter(): T;\n}\n", "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport * as zlib from 'zlib';\n\nimport { WriteObject, WriteFlags } from './call-interface';\nimport { Channel } from './channel';\nimport { ChannelOptions } from './channel-options';\nimport { CompressionAlgorithms } from './compression-algorithms';\nimport { DEFAULT_MAX_RECEIVE_MESSAGE_LENGTH, DEFAULT_MAX_SEND_MESSAGE_LENGTH, LogVerbosity, Status } from './constants';\nimport { BaseFilter, Filter, FilterFactory } from './filter';\nimport * as logging from './logging';\nimport { Metadata, MetadataValue } from './metadata';\n\nconst isCompressionAlgorithmKey = (\n  key: number\n): key is CompressionAlgorithms => {\n  return (\n    typeof key === 'number' && typeof CompressionAlgorithms[key] === 'string'\n  );\n};\n\ntype CompressionAlgorithm = keyof typeof CompressionAlgorithms;\n\ntype SharedCompressionFilterConfig = {\n  serverSupportedEncodingHeader?: string;\n};\n\nabstract class CompressionHandler {\n  protected abstract compressMessage(message: Buffer): Promise<Buffer>;\n  protected abstract decompressMessage(data: Buffer): Promise<Buffer>;\n  /**\n   * @param message Raw uncompressed message bytes\n   * @param compress Indicates whether the message should be compressed\n   * @return Framed message, compressed if applicable\n   */\n  async writeMessage(message: Buffer, compress: boolean): Promise<Buffer> {\n    let messageBuffer = message;\n    if (compress) {\n      messageBuffer = await this.compressMessage(messageBuffer);\n    }\n    const output = Buffer.allocUnsafe(messageBuffer.length + 5);\n    output.writeUInt8(compress ? 1 : 0, 0);\n    output.writeUInt32BE(messageBuffer.length, 1);\n    messageBuffer.copy(output, 5);\n    return output;\n  }\n  /**\n   * @param data Framed message, possibly compressed\n   * @return Uncompressed message\n   */\n  async readMessage(data: Buffer): Promise<Buffer> {\n    const compressed = data.readUInt8(0) === 1;\n    let messageBuffer: Buffer<ArrayBufferLike> = data.slice(5);\n    if (compressed) {\n      messageBuffer = await this.decompressMessage(messageBuffer);\n    }\n    return messageBuffer;\n  }\n}\n\nclass IdentityHandler extends CompressionHandler {\n  async compressMessage(message: Buffer) {\n    return message;\n  }\n\n  async writeMessage(message: Buffer, compress: boolean): Promise<Buffer> {\n    const output = Buffer.allocUnsafe(message.length + 5);\n    /* With \"identity\" compression, messages should always be marked as\n     * uncompressed */\n    output.writeUInt8(0, 0);\n    output.writeUInt32BE(message.length, 1);\n    message.copy(output, 5);\n    return output;\n  }\n\n  decompressMessage(message: Buffer): Promise<Buffer> {\n    return Promise.reject<Buffer>(\n      new Error(\n        'Received compressed message but \"grpc-encoding\" header was identity'\n      )\n    );\n  }\n}\n\nclass DeflateHandler extends CompressionHandler {\n  constructor(private maxRecvMessageLength: number) {\n    super();\n  }\n\n  compressMessage(message: Buffer) {\n    return new Promise<Buffer>((resolve, reject) => {\n      zlib.deflate(message, (err, output) => {\n        if (err) {\n          reject(err);\n        } else {\n          resolve(output);\n        }\n      });\n    });\n  }\n\n  decompressMessage(message: Buffer) {\n    return new Promise<Buffer>((resolve, reject) => {\n      let totalLength = 0;\n      const messageParts: Buffer[] = [];\n      const decompresser = zlib.createInflate();\n      decompresser.on('data', (chunk: Buffer) => {\n        messageParts.push(chunk);\n        totalLength += chunk.byteLength;\n        if (this.maxRecvMessageLength !== -1 && totalLength > this.maxRecvMessageLength) {\n          decompresser.destroy();\n          reject({\n            code: Status.RESOURCE_EXHAUSTED,\n            details: `Received message that decompresses to a size larger than ${this.maxRecvMessageLength}`\n          });\n        }\n      });\n      decompresser.on('end', () => {\n        resolve(Buffer.concat(messageParts));\n      });\n      decompresser.write(message);\n      decompresser.end();\n    });\n  }\n}\n\nclass GzipHandler extends CompressionHandler {\n  constructor(private maxRecvMessageLength: number) {\n    super();\n  }\n\n  compressMessage(message: Buffer) {\n    return new Promise<Buffer>((resolve, reject) => {\n      zlib.gzip(message, (err, output) => {\n        if (err) {\n          reject(err);\n        } else {\n          resolve(output);\n        }\n      });\n    });\n  }\n\n  decompressMessage(message: Buffer) {\n    return new Promise<Buffer>((resolve, reject) => {\n      let totalLength = 0;\n      const messageParts: Buffer[] = [];\n      const decompresser = zlib.createGunzip();\n      decompresser.on('data', (chunk: Buffer) => {\n        messageParts.push(chunk);\n        totalLength += chunk.byteLength;\n        if (this.maxRecvMessageLength !== -1 && totalLength > this.maxRecvMessageLength) {\n          decompresser.destroy();\n          reject({\n            code: Status.RESOURCE_EXHAUSTED,\n            details: `Received message that decompresses to a size larger than ${this.maxRecvMessageLength}`\n          });\n        }\n      });\n      decompresser.on('end', () => {\n        resolve(Buffer.concat(messageParts));\n      });\n      decompresser.write(message);\n      decompresser.end();\n    });\n  }\n}\n\nclass UnknownHandler extends CompressionHandler {\n  constructor(private readonly compressionName: string) {\n    super();\n  }\n  compressMessage(message: Buffer): Promise<Buffer> {\n    return Promise.reject<Buffer>(\n      new Error(\n        `Received message compressed with unsupported compression method ${this.compressionName}`\n      )\n    );\n  }\n\n  decompressMessage(message: Buffer): Promise<Buffer> {\n    // This should be unreachable\n    return Promise.reject<Buffer>(\n      new Error(`Compression method not supported: ${this.compressionName}`)\n    );\n  }\n}\n\nfunction getCompressionHandler(compressionName: string, maxReceiveMessageSize: number): CompressionHandler {\n  switch (compressionName) {\n    case 'identity':\n      return new IdentityHandler();\n    case 'deflate':\n      return new DeflateHandler(maxReceiveMessageSize);\n    case 'gzip':\n      return new GzipHandler(maxReceiveMessageSize);\n    default:\n      return new UnknownHandler(compressionName);\n  }\n}\n\nexport class CompressionFilter extends BaseFilter implements Filter {\n  private sendCompression: CompressionHandler = new IdentityHandler();\n  private receiveCompression: CompressionHandler = new IdentityHandler();\n  private currentCompressionAlgorithm: CompressionAlgorithm = 'identity';\n  private maxReceiveMessageLength: number;\n  private maxSendMessageLength: number;\n\n  constructor(\n    channelOptions: ChannelOptions,\n    private sharedFilterConfig: SharedCompressionFilterConfig\n  ) {\n    super();\n\n    const compressionAlgorithmKey =\n      channelOptions['grpc.default_compression_algorithm'];\n    this.maxReceiveMessageLength = channelOptions['grpc.max_receive_message_length'] ?? DEFAULT_MAX_RECEIVE_MESSAGE_LENGTH;\n    this.maxSendMessageLength = channelOptions['grpc.max_send_message_length'] ?? DEFAULT_MAX_SEND_MESSAGE_LENGTH;\n    if (compressionAlgorithmKey !== undefined) {\n      if (isCompressionAlgorithmKey(compressionAlgorithmKey)) {\n        const clientSelectedEncoding = CompressionAlgorithms[\n          compressionAlgorithmKey\n        ] as CompressionAlgorithm;\n        const serverSupportedEncodings =\n          sharedFilterConfig.serverSupportedEncodingHeader?.split(',');\n        /**\n         * There are two possible situations here:\n         * 1) We don't have any info yet from the server about what compression it supports\n         *    In that case we should just use what the client tells us to use\n         * 2) We've previously received a response from the server including a grpc-accept-encoding header\n         *    In that case we only want to use the encoding chosen by the client if the server supports it\n         */\n        if (\n          !serverSupportedEncodings ||\n          serverSupportedEncodings.includes(clientSelectedEncoding)\n        ) {\n          this.currentCompressionAlgorithm = clientSelectedEncoding;\n          this.sendCompression = getCompressionHandler(\n            this.currentCompressionAlgorithm,\n            -1\n          );\n        }\n      } else {\n        logging.log(\n          LogVerbosity.ERROR,\n          `Invalid value provided for grpc.default_compression_algorithm option: ${compressionAlgorithmKey}`\n        );\n      }\n    }\n  }\n\n  async sendMetadata(metadata: Promise<Metadata>): Promise<Metadata> {\n    const headers: Metadata = await metadata;\n    headers.set('grpc-accept-encoding', 'identity,deflate,gzip');\n    headers.set('accept-encoding', 'identity');\n\n    // No need to send the header if it's \"identity\" -  behavior is identical; save the bandwidth\n    if (this.currentCompressionAlgorithm === 'identity') {\n      headers.remove('grpc-encoding');\n    } else {\n      headers.set('grpc-encoding', this.currentCompressionAlgorithm);\n    }\n\n    return headers;\n  }\n\n  receiveMetadata(metadata: Metadata): Metadata {\n    const receiveEncoding: MetadataValue[] = metadata.get('grpc-encoding');\n    if (receiveEncoding.length > 0) {\n      const encoding: MetadataValue = receiveEncoding[0];\n      if (typeof encoding === 'string') {\n        this.receiveCompression = getCompressionHandler(encoding, this.maxReceiveMessageLength);\n      }\n    }\n    metadata.remove('grpc-encoding');\n\n    /* Check to see if the compression we're using to send messages is supported by the server\n     * If not, reset the sendCompression filter and have it use the default IdentityHandler */\n    const serverSupportedEncodingsHeader = metadata.get(\n      'grpc-accept-encoding'\n    )[0] as string | undefined;\n    if (serverSupportedEncodingsHeader) {\n      this.sharedFilterConfig.serverSupportedEncodingHeader =\n        serverSupportedEncodingsHeader;\n      const serverSupportedEncodings =\n        serverSupportedEncodingsHeader.split(',');\n\n      if (\n        !serverSupportedEncodings.includes(this.currentCompressionAlgorithm)\n      ) {\n        this.sendCompression = new IdentityHandler();\n        this.currentCompressionAlgorithm = 'identity';\n      }\n    }\n    metadata.remove('grpc-accept-encoding');\n    return metadata;\n  }\n\n  async sendMessage(message: Promise<WriteObject>): Promise<WriteObject> {\n    /* This filter is special. The input message is the bare message bytes,\n     * and the output is a framed and possibly compressed message. For this\n     * reason, this filter should be at the bottom of the filter stack */\n    const resolvedMessage: WriteObject = await message;\n    if (this.maxSendMessageLength !== -1 && resolvedMessage.message.length > this.maxSendMessageLength) {\n      throw {\n        code: Status.RESOURCE_EXHAUSTED,\n        details: `Attempted to send message with a size larger than ${this.maxSendMessageLength}`\n      };\n    }\n    let compress: boolean;\n    if (this.sendCompression instanceof IdentityHandler) {\n      compress = false;\n    } else {\n      compress = ((resolvedMessage.flags ?? 0) & WriteFlags.NoCompress) === 0;\n    }\n\n    return {\n      message: await this.sendCompression.writeMessage(\n        resolvedMessage.message,\n        compress\n      ),\n      flags: resolvedMessage.flags,\n    };\n  }\n\n  async receiveMessage(message: Promise<Buffer>) {\n    /* This filter is also special. The input message is framed and possibly\n     * compressed, and the output message is deframed and uncompressed. So\n     * this is another reason that this filter should be at the bottom of the\n     * filter stack. */\n    return this.receiveCompression.readMessage(await message);\n  }\n}\n\nexport class CompressionFilterFactory\n  implements FilterFactory<CompressionFilter>\n{\n  private sharedFilterConfig: SharedCompressionFilterConfig = {};\n  constructor(channel: Channel, private readonly options: ChannelOptions) {}\n  createFilter(): CompressionFilter {\n    return new CompressionFilter(this.options, this.sharedFilterConfig);\n  }\n}\n", "/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { Status } from './constants';\n\nconst INAPPROPRIATE_CONTROL_PLANE_CODES: Status[] = [\n  Status.OK,\n  Status.INVALID_ARGUMENT,\n  Status.NOT_FOUND,\n  Status.ALREADY_EXISTS,\n  Status.FAILED_PRECONDITION,\n  Status.ABORTED,\n  Status.OUT_OF_RANGE,\n  Status.DATA_LOSS,\n];\n\nexport function restrictControlPlaneStatusCode(\n  code: Status,\n  details: string\n): { code: Status; details: string } {\n  if (INAPPROPRIATE_CONTROL_PLANE_CODES.includes(code)) {\n    return {\n      code: Status.INTERNAL,\n      details: `Invalid status from control plane: ${code} ${Status[code]} ${details}`,\n    };\n  } else {\n    return { code, details };\n  }\n}\n", "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nexport type Deadline = Date | number;\n\nexport function minDeadline(...deadlineList: Deadline[]): Deadline {\n  let minValue = Infinity;\n  for (const deadline of deadlineList) {\n    const deadlineMsecs =\n      deadline instanceof Date ? deadline.getTime() : deadline;\n    if (deadlineMsecs < minValue) {\n      minValue = deadlineMsecs;\n    }\n  }\n  return minValue;\n}\n\nconst units: Array<[string, number]> = [\n  ['m', 1],\n  ['S', 1000],\n  ['M', 60 * 1000],\n  ['H', 60 * 60 * 1000],\n];\n\nexport function getDeadlineTimeoutString(deadline: Deadline) {\n  const now = new Date().getTime();\n  if (deadline instanceof Date) {\n    deadline = deadline.getTime();\n  }\n  const timeoutMs = Math.max(deadline - now, 0);\n  for (const [unit, factor] of units) {\n    const amount = timeoutMs / factor;\n    if (amount < 1e8) {\n      return String(Math.ceil(amount)) + unit;\n    }\n  }\n  throw new Error('Deadline is too far in the future');\n}\n\n/**\n * See https://nodejs.org/api/timers.html#settimeoutcallback-delay-args\n * In particular, \"When delay is larger than 2147483647 or less than 1, the\n * delay will be set to 1. Non-integer delays are truncated to an integer.\"\n * This number of milliseconds is almost 25 days.\n */\nconst MAX_TIMEOUT_TIME = 2147483647;\n\n/**\n * Get the timeout value that should be passed to setTimeout now for the timer\n * to end at the deadline. For any deadline before now, the timer should end\n * immediately, represented by a value of 0. For any deadline more than\n * MAX_TIMEOUT_TIME milliseconds in the future, a timer cannot be set that will\n * end at that time, so it is treated as infinitely far in the future.\n * @param deadline\n * @returns\n */\nexport function getRelativeTimeout(deadline: Deadline) {\n  const deadlineMs = deadline instanceof Date ? deadline.getTime() : deadline;\n  const now = new Date().getTime();\n  const timeout = deadlineMs - now;\n  if (timeout < 0) {\n    return 0;\n  } else if (timeout > MAX_TIMEOUT_TIME) {\n    return Infinity;\n  } else {\n    return timeout;\n  }\n}\n\nexport function deadlineToString(deadline: Deadline): string {\n  if (deadline instanceof Date) {\n    return deadline.toISOString();\n  } else {\n    const dateDeadline = new Date(deadline);\n    if (Number.isNaN(dateDeadline.getTime())) {\n      return '' + deadline;\n    } else {\n      return dateDeadline.toISOString();\n    }\n  }\n}\n\n/**\n * Calculate the difference between two dates as a number of seconds and format\n * it as a string.\n * @param startDate\n * @param endDate\n * @returns\n */\nexport function formatDateDifference(startDate: Date, endDate: Date): string {\n  return ((endDate.getTime() - startDate.getTime()) / 1000).toFixed(3) + 's';\n}\n", "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { StatusObject, WriteObject } from './call-interface';\nimport { Filter, FilterFactory } from './filter';\nimport { Metadata } from './metadata';\n\nexport class FilterStack implements Filter {\n  constructor(private readonly filters: Filter[]) {}\n\n  sendMetadata(metadata: Promise<Metadata>): Promise<Metadata> {\n    let result: Promise<Metadata> = metadata;\n\n    for (let i = 0; i < this.filters.length; i++) {\n      result = this.filters[i].sendMetadata(result);\n    }\n\n    return result;\n  }\n\n  receiveMetadata(metadata: Metadata) {\n    let result: Metadata = metadata;\n\n    for (let i = this.filters.length - 1; i >= 0; i--) {\n      result = this.filters[i].receiveMetadata(result);\n    }\n\n    return result;\n  }\n\n  sendMessage(message: Promise<WriteObject>): Promise<WriteObject> {\n    let result: Promise<WriteObject> = message;\n\n    for (let i = 0; i < this.filters.length; i++) {\n      result = this.filters[i].sendMessage(result);\n    }\n\n    return result;\n  }\n\n  receiveMessage(message: Promise<Buffer>): Promise<Buffer> {\n    let result: Promise<Buffer> = message;\n\n    for (let i = this.filters.length - 1; i >= 0; i--) {\n      result = this.filters[i].receiveMessage(result);\n    }\n\n    return result;\n  }\n\n  receiveTrailers(status: StatusObject): StatusObject {\n    let result: StatusObject = status;\n\n    for (let i = this.filters.length - 1; i >= 0; i--) {\n      result = this.filters[i].receiveTrailers(result);\n    }\n\n    return result;\n  }\n\n  push(filters: Filter[]) {\n    this.filters.unshift(...filters);\n  }\n\n  getFilters(): Filter[] {\n    return this.filters;\n  }\n}\n\nexport class FilterStackFactory implements FilterFactory<FilterStack> {\n  constructor(private readonly factories: Array<FilterFactory<Filter>>) {}\n\n  push(filterFactories: FilterFactory<Filter>[]) {\n    this.factories.unshift(...filterFactories);\n  }\n\n  clone(): FilterStackFactory {\n    return new FilterStackFactory([...this.factories]);\n  }\n\n  createFilter(): FilterStack {\n    return new FilterStack(\n      this.factories.map(factory => factory.createFilter())\n    );\n  }\n}\n", "/*\n * Copyright 2025 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { AuthContext } from \"./auth-context\";\nimport { CallCredentials } from \"./call-credentials\";\nimport { Call, CallStreamOptions, InterceptingListener, MessageContext, StatusObject } from \"./call-interface\";\nimport { getNextCallNumber } from \"./call-number\";\nimport { Channel } from \"./channel\";\nimport { ChannelOptions } from \"./channel-options\";\nimport { ChannelRef, ChannelzCallTracker, ChannelzChildrenTracker, ChannelzTrace, registerChannelzChannel, unregisterChannelzRef } from \"./channelz\";\nimport { CompressionFilterFactory } from \"./compression-filter\";\nimport { ConnectivityState } from \"./connectivity-state\";\nimport { Propagate, Status } from \"./constants\";\nimport { restrictControlPlaneStatusCode } from \"./control-plane-status\";\nimport { Deadline, getRelativeTimeout } from \"./deadline\";\nimport { FilterStack, FilterStackFactory } from \"./filter-stack\";\nimport { Metadata } from \"./metadata\";\nimport { getDefaultAuthority } from \"./resolver\";\nimport { Subchannel } from \"./subchannel\";\nimport { SubchannelCall } from \"./subchannel-call\";\nimport { GrpcUri, splitHostPort, uriToString } from \"./uri-parser\";\n\nclass SubchannelCallWrapper implements Call {\n  private childCall: SubchannelCall | null = null;\n  private pendingMessage: { context: MessageContext; message: Buffer } | null =\n    null;\n  private readPending = false;\n  private halfClosePending = false;\n  private pendingStatus: StatusObject | null = null;\n  private serviceUrl: string;\n  private filterStack: FilterStack;\n  private readFilterPending = false;\n  private writeFilterPending = false;\n  constructor(private subchannel: Subchannel, private method: string, filterStackFactory: FilterStackFactory, private options: CallStreamOptions, private callNumber: number) {\n    const splitPath: string[] = this.method.split('/');\n    let serviceName = '';\n    /* The standard path format is \"/{serviceName}/{methodName}\", so if we split\n      * by '/', the first item should be empty and the second should be the\n      * service name */\n    if (splitPath.length >= 2) {\n      serviceName = splitPath[1];\n    }\n    const hostname = splitHostPort(this.options.host)?.host ?? 'localhost';\n    /* Currently, call credentials are only allowed on HTTPS connections, so we\n      * can assume that the scheme is \"https\" */\n    this.serviceUrl = `https://${hostname}/${serviceName}`;\n    const timeout = getRelativeTimeout(options.deadline);\n    if (timeout !== Infinity) {\n      if (timeout <= 0) {\n        this.cancelWithStatus(Status.DEADLINE_EXCEEDED, 'Deadline exceeded');\n      } else {\n        setTimeout(() => {\n          this.cancelWithStatus(Status.DEADLINE_EXCEEDED, 'Deadline exceeded');\n        }, timeout);\n      }\n    }\n    this.filterStack = filterStackFactory.createFilter();\n  }\n\n  cancelWithStatus(status: Status, details: string): void {\n    if (this.childCall) {\n      this.childCall.cancelWithStatus(status, details);\n    } else {\n      this.pendingStatus = {\n        code: status,\n        details: details,\n        metadata: new Metadata()\n      };\n    }\n\n  }\n  getPeer(): string {\n    return this.childCall?.getPeer() ?? this.subchannel.getAddress();\n  }\n  async start(metadata: Metadata, listener: InterceptingListener): Promise<void> {\n    if (this.pendingStatus) {\n      listener.onReceiveStatus(this.pendingStatus);\n      return;\n    }\n    if (this.subchannel.getConnectivityState() !== ConnectivityState.READY) {\n      listener.onReceiveStatus({\n        code: Status.UNAVAILABLE,\n        details: 'Subchannel not ready',\n        metadata: new Metadata()\n      });\n      return;\n    }\n    const filteredMetadata = await this.filterStack.sendMetadata(Promise.resolve(metadata));\n    let credsMetadata: Metadata;\n    try {\n      credsMetadata = await this.subchannel.getCallCredentials()\n        .generateMetadata({method_name: this.method, service_url: this.serviceUrl});\n    } catch (e) {\n      const error = e as (Error & { code: number });\n      const { code, details } = restrictControlPlaneStatusCode(\n        typeof error.code === 'number' ? error.code : Status.UNKNOWN,\n        `Getting metadata from plugin failed with error: ${error.message}`\n      );\n      listener.onReceiveStatus(\n        {\n          code: code,\n          details: details,\n          metadata: new Metadata(),\n        }\n      );\n      return;\n    }\n    credsMetadata.merge(filteredMetadata);\n    const childListener: InterceptingListener = {\n      onReceiveMetadata: async metadata => {\n        listener.onReceiveMetadata(await this.filterStack.receiveMetadata(metadata));\n      },\n      onReceiveMessage: async message => {\n        this.readFilterPending = true;\n        const filteredMessage = await this.filterStack.receiveMessage(message);\n        this.readFilterPending = false;\n        listener.onReceiveMessage(filteredMessage);\n        if (this.pendingStatus) {\n          listener.onReceiveStatus(this.pendingStatus);\n        }\n      },\n      onReceiveStatus: async status => {\n        const filteredStatus = await this.filterStack.receiveTrailers(status);\n        if (this.readFilterPending) {\n          this.pendingStatus = filteredStatus;\n        } else {\n          listener.onReceiveStatus(filteredStatus);\n        }\n      }\n    }\n    this.childCall = this.subchannel.createCall(credsMetadata, this.options.host, this.method, childListener);\n    if (this.readPending) {\n      this.childCall.startRead();\n    }\n    if (this.pendingMessage) {\n      this.childCall.sendMessageWithContext(this.pendingMessage.context, this.pendingMessage.message);\n    }\n    if (this.halfClosePending && !this.writeFilterPending) {\n      this.childCall.halfClose();\n    }\n  }\n  async sendMessageWithContext(context: MessageContext, message: Buffer): Promise<void> {\n    this.writeFilterPending = true;\n    const filteredMessage = await this.filterStack.sendMessage(Promise.resolve({message: message, flags: context.flags}));\n    this.writeFilterPending = false;\n    if (this.childCall) {\n      this.childCall.sendMessageWithContext(context, filteredMessage.message);\n      if (this.halfClosePending) {\n        this.childCall.halfClose();\n      }\n    } else {\n      this.pendingMessage = { context, message: filteredMessage.message };\n    }\n  }\n  startRead(): void {\n    if (this.childCall) {\n      this.childCall.startRead();\n    } else {\n      this.readPending = true;\n    }\n  }\n  halfClose(): void {\n    if (this.childCall && !this.writeFilterPending) {\n      this.childCall.halfClose();\n    } else {\n      this.halfClosePending = true;\n    }\n  }\n  getCallNumber(): number {\n    return this.callNumber;\n  }\n  setCredentials(credentials: CallCredentials): void {\n    throw new Error(\"Method not implemented.\");\n  }\n  getAuthContext(): AuthContext | null {\n    if (this.childCall) {\n      return this.childCall.getAuthContext();\n    } else {\n      return null;\n    }\n  }\n}\n\nexport class SingleSubchannelChannel implements Channel {\n  private channelzRef: ChannelRef;\n  private channelzEnabled = false;\n  private channelzTrace = new ChannelzTrace();\n  private callTracker = new ChannelzCallTracker();\n  private childrenTracker = new ChannelzChildrenTracker();\n  private filterStackFactory: FilterStackFactory;\n  constructor(private subchannel: Subchannel, private target: GrpcUri, options: ChannelOptions) {\n    this.channelzEnabled = options['grpc.enable_channelz'] !== 0;\n    this.channelzRef = registerChannelzChannel(uriToString(target),  () => ({\n      target: `${uriToString(target)} (${subchannel.getAddress()})`,\n      state: this.subchannel.getConnectivityState(),\n      trace: this.channelzTrace,\n      callTracker: this.callTracker,\n      children: this.childrenTracker.getChildLists()\n    }), this.channelzEnabled);\n    if (this.channelzEnabled) {\n      this.childrenTracker.refChild(subchannel.getChannelzRef());\n    }\n    this.filterStackFactory = new FilterStackFactory([new CompressionFilterFactory(this, options)]);\n  }\n\n  close(): void {\n    if (this.channelzEnabled) {\n      this.childrenTracker.unrefChild(this.subchannel.getChannelzRef());\n    }\n    unregisterChannelzRef(this.channelzRef);\n  }\n\n  getTarget(): string {\n    return uriToString(this.target);\n  }\n  getConnectivityState(tryToConnect: boolean): ConnectivityState {\n    throw new Error(\"Method not implemented.\");\n  }\n  watchConnectivityState(currentState: ConnectivityState, deadline: Date | number, callback: (error?: Error) => void): void {\n    throw new Error(\"Method not implemented.\");\n  }\n  getChannelzRef(): ChannelRef {\n    return this.channelzRef;\n  }\n  createCall(method: string, deadline: Deadline): Call {\n    const callOptions: CallStreamOptions = {\n      deadline: deadline,\n      host: getDefaultAuthority(this.target),\n      flags: Propagate.DEFAULTS,\n      parentCall: null\n    };\n    return new SubchannelCallWrapper(this.subchannel, method, this.filterStackFactory, callOptions, getNextCallNumber());\n  }\n}\n", "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { ChannelCredentials, SecureConnector } from './channel-credentials';\nimport { Metadata } from './metadata';\nimport { ChannelOptions } from './channel-options';\nimport { ConnectivityState } from './connectivity-state';\nimport { BackoffTimeout, BackoffOptions } from './backoff-timeout';\nimport * as logging from './logging';\nimport { LogVerbosity, Status } from './constants';\nimport { GrpcUri, uriToString } from './uri-parser';\nimport {\n  SubchannelAddress,\n  subchannelAddressToString,\n} from './subchannel-address';\nimport {\n  SubchannelRef,\n  ChannelzTrace,\n  ChannelzChildrenTracker,\n  ChannelzChildrenTrackerStub,\n  SubchannelInfo,\n  registerChannelzSubchannel,\n  ChannelzCallTracker,\n  ChannelzCallTrackerStub,\n  unregisterChannelzRef,\n  ChannelzTraceStub,\n} from './channelz';\nimport {\n  ConnectivityStateListener,\n  DataWatcher,\n  SubchannelInterface,\n} from './subchannel-interface';\nimport { SubchannelCallInterceptingListener } from './subchannel-call';\nimport { SubchannelCall } from './subchannel-call';\nimport { CallEventTracker, SubchannelConnector, Transport } from './transport';\nimport { CallCredentials } from './call-credentials';\nimport { SingleSubchannelChannel } from './single-subchannel-channel';\nimport { Channel } from './channel';\n\nconst TRACER_NAME = 'subchannel';\n\n/* setInterval and setTimeout only accept signed 32 bit integers. JS doesn't\n * have a constant for the max signed 32 bit integer, so this is a simple way\n * to calculate it */\nconst KEEPALIVE_MAX_TIME_MS = ~(1 << 31);\n\nexport interface DataProducer {\n  addDataWatcher(dataWatcher: DataWatcher): void;\n  removeDataWatcher(dataWatcher: DataWatcher): void;\n}\n\nexport class Subchannel implements SubchannelInterface {\n  /**\n   * The subchannel's current connectivity state. Invariant: `session` === `null`\n   * if and only if `connectivityState` is IDLE or TRANSIENT_FAILURE.\n   */\n  private connectivityState: ConnectivityState = ConnectivityState.IDLE;\n  /**\n   * The underlying http2 session used to make requests.\n   */\n  private transport: Transport | null = null;\n  /**\n   * Indicates that the subchannel should transition from TRANSIENT_FAILURE to\n   * CONNECTING instead of IDLE when the backoff timeout ends.\n   */\n  private continueConnecting = false;\n  /**\n   * A list of listener functions that will be called whenever the connectivity\n   * state changes. Will be modified by `addConnectivityStateListener` and\n   * `removeConnectivityStateListener`\n   */\n  private stateListeners: Set<ConnectivityStateListener> = new Set();\n\n  private backoffTimeout: BackoffTimeout;\n\n  private keepaliveTime: number;\n  /**\n   * Tracks channels and subchannel pools with references to this subchannel\n   */\n  private refcount = 0;\n\n  /**\n   * A string representation of the subchannel address, for logging/tracing\n   */\n  private subchannelAddressString: string;\n\n  // Channelz info\n  private readonly channelzEnabled: boolean = true;\n  private channelzRef: SubchannelRef;\n\n  private channelzTrace: ChannelzTrace | ChannelzTraceStub;\n  private callTracker: ChannelzCallTracker | ChannelzCallTrackerStub;\n  private childrenTracker:\n    | ChannelzChildrenTracker\n    | ChannelzChildrenTrackerStub;\n\n  // Channelz socket info\n  private streamTracker: ChannelzCallTracker | ChannelzCallTrackerStub;\n\n  private secureConnector: SecureConnector;\n\n  private dataProducers: Map<string, DataProducer> = new Map();\n\n  private subchannelChannel: Channel | null = null;\n\n  /**\n   * A class representing a connection to a single backend.\n   * @param channelTarget The target string for the channel as a whole\n   * @param subchannelAddress The address for the backend that this subchannel\n   *     will connect to\n   * @param options The channel options, plus any specific subchannel options\n   *     for this subchannel\n   * @param credentials The channel credentials used to establish this\n   *     connection\n   */\n  constructor(\n    private channelTarget: GrpcUri,\n    private subchannelAddress: SubchannelAddress,\n    private options: ChannelOptions,\n    credentials: ChannelCredentials,\n    private connector: SubchannelConnector\n  ) {\n    const backoffOptions: BackoffOptions = {\n      initialDelay: options['grpc.initial_reconnect_backoff_ms'],\n      maxDelay: options['grpc.max_reconnect_backoff_ms'],\n    };\n    this.backoffTimeout = new BackoffTimeout(() => {\n      this.handleBackoffTimer();\n    }, backoffOptions);\n    this.backoffTimeout.unref();\n    this.subchannelAddressString = subchannelAddressToString(subchannelAddress);\n\n    this.keepaliveTime = options['grpc.keepalive_time_ms'] ?? -1;\n\n    if (options['grpc.enable_channelz'] === 0) {\n      this.channelzEnabled = false;\n      this.channelzTrace = new ChannelzTraceStub();\n      this.callTracker = new ChannelzCallTrackerStub();\n      this.childrenTracker = new ChannelzChildrenTrackerStub();\n      this.streamTracker = new ChannelzCallTrackerStub();\n    } else {\n      this.channelzTrace = new ChannelzTrace();\n      this.callTracker = new ChannelzCallTracker();\n      this.childrenTracker = new ChannelzChildrenTracker();\n      this.streamTracker = new ChannelzCallTracker();\n    }\n\n    this.channelzRef = registerChannelzSubchannel(\n      this.subchannelAddressString,\n      () => this.getChannelzInfo(),\n      this.channelzEnabled\n    );\n\n    this.channelzTrace.addTrace('CT_INFO', 'Subchannel created');\n    this.trace(\n      'Subchannel constructed with options ' +\n        JSON.stringify(options, undefined, 2)\n    );\n    this.secureConnector = credentials._createSecureConnector(channelTarget, options);\n  }\n\n  private getChannelzInfo(): SubchannelInfo {\n    return {\n      state: this.connectivityState,\n      trace: this.channelzTrace,\n      callTracker: this.callTracker,\n      children: this.childrenTracker.getChildLists(),\n      target: this.subchannelAddressString,\n    };\n  }\n\n  private trace(text: string): void {\n    logging.trace(\n      LogVerbosity.DEBUG,\n      TRACER_NAME,\n      '(' +\n        this.channelzRef.id +\n        ') ' +\n        this.subchannelAddressString +\n        ' ' +\n        text\n    );\n  }\n\n  private refTrace(text: string): void {\n    logging.trace(\n      LogVerbosity.DEBUG,\n      'subchannel_refcount',\n      '(' +\n        this.channelzRef.id +\n        ') ' +\n        this.subchannelAddressString +\n        ' ' +\n        text\n    );\n  }\n\n  private handleBackoffTimer() {\n    if (this.continueConnecting) {\n      this.transitionToState(\n        [ConnectivityState.TRANSIENT_FAILURE],\n        ConnectivityState.CONNECTING\n      );\n    } else {\n      this.transitionToState(\n        [ConnectivityState.TRANSIENT_FAILURE],\n        ConnectivityState.IDLE\n      );\n    }\n  }\n\n  /**\n   * Start a backoff timer with the current nextBackoff timeout\n   */\n  private startBackoff() {\n    this.backoffTimeout.runOnce();\n  }\n\n  private stopBackoff() {\n    this.backoffTimeout.stop();\n    this.backoffTimeout.reset();\n  }\n\n  private startConnectingInternal() {\n    let options = this.options;\n    if (options['grpc.keepalive_time_ms']) {\n      const adjustedKeepaliveTime = Math.min(\n        this.keepaliveTime,\n        KEEPALIVE_MAX_TIME_MS\n      );\n      options = { ...options, 'grpc.keepalive_time_ms': adjustedKeepaliveTime };\n    }\n    this.connector\n      .connect(this.subchannelAddress, this.secureConnector, options)\n      .then(\n        transport => {\n          if (\n            this.transitionToState(\n              [ConnectivityState.CONNECTING],\n              ConnectivityState.READY\n            )\n          ) {\n            this.transport = transport;\n            if (this.channelzEnabled) {\n              this.childrenTracker.refChild(transport.getChannelzRef());\n            }\n            transport.addDisconnectListener(tooManyPings => {\n              this.transitionToState(\n                [ConnectivityState.READY],\n                ConnectivityState.IDLE\n              );\n              if (tooManyPings && this.keepaliveTime > 0) {\n                this.keepaliveTime *= 2;\n                logging.log(\n                  LogVerbosity.ERROR,\n                  `Connection to ${uriToString(this.channelTarget)} at ${\n                    this.subchannelAddressString\n                  } rejected by server because of excess pings. Increasing ping interval to ${\n                    this.keepaliveTime\n                  } ms`\n                );\n              }\n            });\n          } else {\n            /* If we can't transition from CONNECTING to READY here, we will\n             * not be using this transport, so release its resources. */\n            transport.shutdown();\n          }\n        },\n        error => {\n          this.transitionToState(\n            [ConnectivityState.CONNECTING],\n            ConnectivityState.TRANSIENT_FAILURE,\n            `${error}`\n          );\n        }\n      );\n  }\n\n  /**\n   * Initiate a state transition from any element of oldStates to the new\n   * state. If the current connectivityState is not in oldStates, do nothing.\n   * @param oldStates The set of states to transition from\n   * @param newState The state to transition to\n   * @returns True if the state changed, false otherwise\n   */\n  private transitionToState(\n    oldStates: ConnectivityState[],\n    newState: ConnectivityState,\n    errorMessage?: string\n  ): boolean {\n    if (oldStates.indexOf(this.connectivityState) === -1) {\n      return false;\n    }\n    if (errorMessage) {\n      this.trace(\n        ConnectivityState[this.connectivityState] +\n          ' -> ' +\n          ConnectivityState[newState] +\n          ' with error \"' + errorMessage + '\"'\n      );\n\n    } else {\n      this.trace(\n        ConnectivityState[this.connectivityState] +\n          ' -> ' +\n          ConnectivityState[newState]\n      );\n    }\n    if (this.channelzEnabled) {\n      this.channelzTrace.addTrace(\n        'CT_INFO',\n        'Connectivity state change to ' + ConnectivityState[newState]\n      );\n    }\n    const previousState = this.connectivityState;\n    this.connectivityState = newState;\n    switch (newState) {\n      case ConnectivityState.READY:\n        this.stopBackoff();\n        break;\n      case ConnectivityState.CONNECTING:\n        this.startBackoff();\n        this.startConnectingInternal();\n        this.continueConnecting = false;\n        break;\n      case ConnectivityState.TRANSIENT_FAILURE:\n        if (this.channelzEnabled && this.transport) {\n          this.childrenTracker.unrefChild(this.transport.getChannelzRef());\n        }\n        this.transport?.shutdown();\n        this.transport = null;\n        /* If the backoff timer has already ended by the time we get to the\n         * TRANSIENT_FAILURE state, we want to immediately transition out of\n         * TRANSIENT_FAILURE as though the backoff timer is ending right now */\n        if (!this.backoffTimeout.isRunning()) {\n          process.nextTick(() => {\n            this.handleBackoffTimer();\n          });\n        }\n        break;\n      case ConnectivityState.IDLE:\n        if (this.channelzEnabled && this.transport) {\n          this.childrenTracker.unrefChild(this.transport.getChannelzRef());\n        }\n        this.transport?.shutdown();\n        this.transport = null;\n        break;\n      default:\n        throw new Error(`Invalid state: unknown ConnectivityState ${newState}`);\n    }\n    for (const listener of this.stateListeners) {\n      listener(this, previousState, newState, this.keepaliveTime, errorMessage);\n    }\n    return true;\n  }\n\n  ref() {\n    this.refTrace('refcount ' + this.refcount + ' -> ' + (this.refcount + 1));\n    this.refcount += 1;\n  }\n\n  unref() {\n    this.refTrace('refcount ' + this.refcount + ' -> ' + (this.refcount - 1));\n    this.refcount -= 1;\n    if (this.refcount === 0) {\n      this.channelzTrace.addTrace('CT_INFO', 'Shutting down');\n      unregisterChannelzRef(this.channelzRef);\n      this.secureConnector.destroy();\n      process.nextTick(() => {\n        this.transitionToState(\n          [ConnectivityState.CONNECTING, ConnectivityState.READY],\n          ConnectivityState.IDLE\n        );\n      });\n    }\n  }\n\n  unrefIfOneRef(): boolean {\n    if (this.refcount === 1) {\n      this.unref();\n      return true;\n    }\n    return false;\n  }\n\n  createCall(\n    metadata: Metadata,\n    host: string,\n    method: string,\n    listener: SubchannelCallInterceptingListener\n  ): SubchannelCall {\n    if (!this.transport) {\n      throw new Error('Cannot create call, subchannel not READY');\n    }\n    let statsTracker: Partial<CallEventTracker>;\n    if (this.channelzEnabled) {\n      this.callTracker.addCallStarted();\n      this.streamTracker.addCallStarted();\n      statsTracker = {\n        onCallEnd: status => {\n          if (status.code === Status.OK) {\n            this.callTracker.addCallSucceeded();\n          } else {\n            this.callTracker.addCallFailed();\n          }\n        },\n      };\n    } else {\n      statsTracker = {};\n    }\n    return this.transport.createCall(\n      metadata,\n      host,\n      method,\n      listener,\n      statsTracker\n    );\n  }\n\n  /**\n   * If the subchannel is currently IDLE, start connecting and switch to the\n   * CONNECTING state. If the subchannel is current in TRANSIENT_FAILURE,\n   * the next time it would transition to IDLE, start connecting again instead.\n   * Otherwise, do nothing.\n   */\n  startConnecting() {\n    process.nextTick(() => {\n      /* First, try to transition from IDLE to connecting. If that doesn't happen\n       * because the state is not currently IDLE, check if it is\n       * TRANSIENT_FAILURE, and if so indicate that it should go back to\n       * connecting after the backoff timer ends. Otherwise do nothing */\n      if (\n        !this.transitionToState(\n          [ConnectivityState.IDLE],\n          ConnectivityState.CONNECTING\n        )\n      ) {\n        if (this.connectivityState === ConnectivityState.TRANSIENT_FAILURE) {\n          this.continueConnecting = true;\n        }\n      }\n    });\n  }\n\n  /**\n   * Get the subchannel's current connectivity state.\n   */\n  getConnectivityState() {\n    return this.connectivityState;\n  }\n\n  /**\n   * Add a listener function to be called whenever the subchannel's\n   * connectivity state changes.\n   * @param listener\n   */\n  addConnectivityStateListener(listener: ConnectivityStateListener) {\n    this.stateListeners.add(listener);\n  }\n\n  /**\n   * Remove a listener previously added with `addConnectivityStateListener`\n   * @param listener A reference to a function previously passed to\n   *     `addConnectivityStateListener`\n   */\n  removeConnectivityStateListener(listener: ConnectivityStateListener) {\n    this.stateListeners.delete(listener);\n  }\n\n  /**\n   * Reset the backoff timeout, and immediately start connecting if in backoff.\n   */\n  resetBackoff() {\n    process.nextTick(() => {\n      this.backoffTimeout.reset();\n      this.transitionToState(\n        [ConnectivityState.TRANSIENT_FAILURE],\n        ConnectivityState.CONNECTING\n      );\n    });\n  }\n\n  getAddress(): string {\n    return this.subchannelAddressString;\n  }\n\n  getChannelzRef(): SubchannelRef {\n    return this.channelzRef;\n  }\n\n  isHealthy(): boolean {\n    return true;\n  }\n\n  addHealthStateWatcher(listener: (healthy: boolean) => void): void {\n    // Do nothing with the listener\n  }\n\n  removeHealthStateWatcher(listener: (healthy: boolean) => void): void {\n    // Do nothing with the listener\n  }\n\n  getRealSubchannel(): this {\n    return this;\n  }\n\n  realSubchannelEquals(other: SubchannelInterface): boolean {\n    return other.getRealSubchannel() === this;\n  }\n\n  throttleKeepalive(newKeepaliveTime: number) {\n    if (newKeepaliveTime > this.keepaliveTime) {\n      this.keepaliveTime = newKeepaliveTime;\n    }\n  }\n  getCallCredentials(): CallCredentials {\n    return this.secureConnector.getCallCredentials();\n  }\n\n  getChannel(): Channel {\n    if (!this.subchannelChannel) {\n      this.subchannelChannel = new SingleSubchannelChannel(this, this.channelTarget, this.options);\n    }\n    return this.subchannelChannel;\n  }\n\n  addDataWatcher(dataWatcher: DataWatcher): void {\n    throw new Error('Not implemented');\n  }\n\n  getOrCreateDataProducer(name: string, createDataProducer: (subchannel: Subchannel) => DataProducer): DataProducer {\n    const existingProducer = this.dataProducers.get(name);\n    if (existingProducer){\n      return existingProducer;\n    }\n    const newProducer = createDataProducer(this);\n    this.dataProducers.set(name, newProducer);\n    return newProducer;\n  }\n\n  removeDataProducer(name: string) {\n    this.dataProducers.delete(name);\n  }\n}\n", "/*\n * Copyright 2024 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nexport const GRPC_NODE_USE_ALTERNATIVE_RESOLVER =\n  (process.env.GRPC_NODE_USE_ALTERNATIVE_RESOLVER ?? 'false') === 'true';\n", "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n  Resolver,\n  ResolverListener,\n  registerResolver,\n  registerDefaultScheme,\n} from './resolver';\nimport { promises as dns } from 'dns';\nimport { extractAndSelectServiceConfig, ServiceConfig } from './service-config';\nimport { Status } from './constants';\nimport { StatusObject, StatusOr, statusOrFromError, statusOrFromValue } from './call-interface';\nimport { Metadata } from './metadata';\nimport * as logging from './logging';\nimport { LogVerbosity } from './constants';\nimport { Endpoint, TcpSubchannelAddress } from './subchannel-address';\nimport { GrpcUri, uriToString, splitHostPort } from './uri-parser';\nimport { isIPv6, isIPv4 } from 'net';\nimport { ChannelOptions } from './channel-options';\nimport { BackoffOptions, BackoffTimeout } from './backoff-timeout';\nimport { GRPC_NODE_USE_ALTERNATIVE_RESOLVER } from './environment';\n\nconst TRACER_NAME = 'dns_resolver';\n\nfunction trace(text: string): void {\n  logging.trace(LogVerbosity.DEBUG, TRACER_NAME, text);\n}\n\n/**\n * The default TCP port to connect to if not explicitly specified in the target.\n */\nexport const DEFAULT_PORT = 443;\n\nconst DEFAULT_MIN_TIME_BETWEEN_RESOLUTIONS_MS = 30_000;\n\n/**\n * Resolver implementation that handles DNS names and IP addresses.\n */\nclass DnsResolver implements Resolver {\n  private readonly ipResult: Endpoint[] | null;\n  private readonly dnsHostname: string | null;\n  private readonly port: number | null;\n  /**\n   * Minimum time between resolutions, measured as the time between starting\n   * successive resolution requests. Only applies to successful resolutions.\n   * Failures are handled by the backoff timer.\n   */\n  private readonly minTimeBetweenResolutionsMs: number;\n  private pendingLookupPromise: Promise<TcpSubchannelAddress[]> | null = null;\n  private pendingTxtPromise: Promise<string[][]> | null = null;\n  private latestLookupResult: StatusOr<Endpoint[]> | null = null;\n  private latestServiceConfigResult: StatusOr<ServiceConfig> | null = null;\n  private percentage: number;\n  private defaultResolutionError: StatusObject;\n  private backoff: BackoffTimeout;\n  private continueResolving = false;\n  private nextResolutionTimer: NodeJS.Timeout;\n  private isNextResolutionTimerRunning = false;\n  private isServiceConfigEnabled = true;\n  private returnedIpResult = false;\n  private alternativeResolver = new dns.Resolver();\n\n  constructor(\n    private target: GrpcUri,\n    private listener: ResolverListener,\n    channelOptions: ChannelOptions\n  ) {\n    trace('Resolver constructed for target ' + uriToString(target));\n    if (target.authority) {\n      this.alternativeResolver.setServers([target.authority]);\n    }\n    const hostPort = splitHostPort(target.path);\n    if (hostPort === null) {\n      this.ipResult = null;\n      this.dnsHostname = null;\n      this.port = null;\n    } else {\n      if (isIPv4(hostPort.host) || isIPv6(hostPort.host)) {\n        this.ipResult = [\n          {\n            addresses: [\n              {\n                host: hostPort.host,\n                port: hostPort.port ?? DEFAULT_PORT,\n              },\n            ],\n          },\n        ];\n        this.dnsHostname = null;\n        this.port = null;\n      } else {\n        this.ipResult = null;\n        this.dnsHostname = hostPort.host;\n        this.port = hostPort.port ?? DEFAULT_PORT;\n      }\n    }\n    this.percentage = Math.random() * 100;\n\n    if (channelOptions['grpc.service_config_disable_resolution'] === 1) {\n      this.isServiceConfigEnabled = false;\n    }\n\n    this.defaultResolutionError = {\n      code: Status.UNAVAILABLE,\n      details: `Name resolution failed for target ${uriToString(this.target)}`,\n      metadata: new Metadata(),\n    };\n\n    const backoffOptions: BackoffOptions = {\n      initialDelay: channelOptions['grpc.initial_reconnect_backoff_ms'],\n      maxDelay: channelOptions['grpc.max_reconnect_backoff_ms'],\n    };\n\n    this.backoff = new BackoffTimeout(() => {\n      if (this.continueResolving) {\n        this.startResolutionWithBackoff();\n      }\n    }, backoffOptions);\n    this.backoff.unref();\n\n    this.minTimeBetweenResolutionsMs =\n      channelOptions['grpc.dns_min_time_between_resolutions_ms'] ??\n      DEFAULT_MIN_TIME_BETWEEN_RESOLUTIONS_MS;\n    this.nextResolutionTimer = setTimeout(() => {}, 0);\n    clearTimeout(this.nextResolutionTimer);\n  }\n\n  /**\n   * If the target is an IP address, just provide that address as a result.\n   * Otherwise, initiate A, AAAA, and TXT lookups\n   */\n  private startResolution() {\n    if (this.ipResult !== null) {\n      if (!this.returnedIpResult) {\n        trace('Returning IP address for target ' + uriToString(this.target));\n        setImmediate(() => {\n          this.listener(\n            statusOrFromValue(this.ipResult!),\n            {},\n            null,\n            ''\n          )\n        });\n        this.returnedIpResult = true;\n      }\n      this.backoff.stop();\n      this.backoff.reset();\n      this.stopNextResolutionTimer();\n      return;\n    }\n    if (this.dnsHostname === null) {\n      trace('Failed to parse DNS address ' + uriToString(this.target));\n      setImmediate(() => {\n        this.listener(\n          statusOrFromError({\n            code: Status.UNAVAILABLE,\n            details: `Failed to parse DNS address ${uriToString(this.target)}`\n          }),\n          {},\n          null,\n          ''\n        );\n      });\n      this.stopNextResolutionTimer();\n    } else {\n      if (this.pendingLookupPromise !== null) {\n        return;\n      }\n      trace('Looking up DNS hostname ' + this.dnsHostname);\n      /* We clear out latestLookupResult here to ensure that it contains the\n       * latest result since the last time we started resolving. That way, the\n       * TXT resolution handler can use it, but only if it finishes second. We\n       * don't clear out any previous service config results because it's\n       * better to use a service config that's slightly out of date than to\n       * revert to an effectively blank one. */\n      this.latestLookupResult = null;\n      const hostname: string = this.dnsHostname;\n      this.pendingLookupPromise = this.lookup(hostname);\n      this.pendingLookupPromise.then(\n        addressList => {\n          if (this.pendingLookupPromise === null) {\n            return;\n          }\n          this.pendingLookupPromise = null;\n          this.latestLookupResult = statusOrFromValue(addressList.map(address => ({\n            addresses: [address],\n          })));\n          const allAddressesString: string =\n            '[' +\n            addressList.map(addr => addr.host + ':' + addr.port).join(',') +\n            ']';\n          trace(\n            'Resolved addresses for target ' +\n              uriToString(this.target) +\n              ': ' +\n              allAddressesString\n          );\n          /* If the TXT lookup has not yet finished, both of the last two\n           * arguments will be null, which is the equivalent of getting an\n           * empty TXT response. When the TXT lookup does finish, its handler\n           * can update the service config by using the same address list */\n          const healthStatus = this.listener(\n            this.latestLookupResult,\n            {},\n            this.latestServiceConfigResult,\n            ''\n          );\n          this.handleHealthStatus(healthStatus);\n        },\n        err => {\n          if (this.pendingLookupPromise === null) {\n            return;\n          }\n          trace(\n            'Resolution error for target ' +\n              uriToString(this.target) +\n              ': ' +\n              (err as Error).message\n          );\n          this.pendingLookupPromise = null;\n          this.stopNextResolutionTimer();\n          this.listener(\n            statusOrFromError(this.defaultResolutionError),\n            {},\n            this.latestServiceConfigResult,\n            ''\n          )\n        }\n      );\n      /* If there already is a still-pending TXT resolution, we can just use\n       * that result when it comes in */\n      if (this.isServiceConfigEnabled && this.pendingTxtPromise === null) {\n        /* We handle the TXT query promise differently than the others because\n         * the name resolution attempt as a whole is a success even if the TXT\n         * lookup fails */\n        this.pendingTxtPromise = this.resolveTxt(hostname);\n        this.pendingTxtPromise.then(\n          txtRecord => {\n            if (this.pendingTxtPromise === null) {\n              return;\n            }\n            this.pendingTxtPromise = null;\n            let serviceConfig: ServiceConfig | null;\n            try {\n              serviceConfig = extractAndSelectServiceConfig(\n                txtRecord,\n                this.percentage\n              );\n              if (serviceConfig) {\n                this.latestServiceConfigResult = statusOrFromValue(serviceConfig);\n              } else {\n                this.latestServiceConfigResult = null;\n              }\n            } catch (err) {\n              this.latestServiceConfigResult = statusOrFromError({\n                code: Status.UNAVAILABLE,\n                details: `Parsing service config failed with error ${\n                  (err as Error).message\n                }`\n              });\n            }\n            if (this.latestLookupResult !== null) {\n              /* We rely here on the assumption that calling this function with\n               * identical parameters will be essentialy idempotent, and calling\n               * it with the same address list and a different service config\n               * should result in a fast and seamless switchover. */\n              this.listener(\n                this.latestLookupResult,\n                {},\n                this.latestServiceConfigResult,\n                ''\n              );\n            }\n          },\n          err => {\n            /* If TXT lookup fails we should do nothing, which means that we\n             * continue to use the result of the most recent successful lookup,\n             * or the default null config object if there has never been a\n             * successful lookup. We do not set the latestServiceConfigError\n             * here because that is specifically used for response validation\n             * errors. We still need to handle this error so that it does not\n             * bubble up as an unhandled promise rejection. */\n          }\n        );\n      }\n    }\n  }\n\n  /**\n   * The ResolverListener returns a boolean indicating whether the LB policy\n   * accepted the resolution result. A false result on an otherwise successful\n   * resolution should be treated as a resolution failure.\n   * @param healthStatus\n   */\n  private handleHealthStatus(healthStatus: boolean) {\n    if (healthStatus) {\n      this.backoff.stop();\n      this.backoff.reset();\n    } else {\n      this.continueResolving = true;\n    }\n  }\n\n  private async lookup(hostname: string): Promise<TcpSubchannelAddress[]> {\n    if (GRPC_NODE_USE_ALTERNATIVE_RESOLVER) {\n      trace('Using alternative DNS resolver.');\n\n      const records = await Promise.allSettled([\n        this.alternativeResolver.resolve4(hostname),\n        this.alternativeResolver.resolve6(hostname),\n      ]);\n\n      if (records.every(result => result.status === 'rejected')) {\n        throw new Error((records[0] as PromiseRejectedResult).reason);\n      }\n\n      return records\n        .reduce<string[]>((acc, result) => {\n          return result.status === 'fulfilled'\n            ? [...acc, ...result.value]\n            : acc;\n        }, [])\n        .map(addr => ({\n          host: addr,\n          port: +this.port!,\n        }));\n    }\n\n    /* We lookup both address families here and then split them up later\n     * because when looking up a single family, dns.lookup outputs an error\n     * if the name exists but there are no records for that family, and that\n     * error is indistinguishable from other kinds of errors */\n    const addressList = await dns.lookup(hostname, { all: true });\n    return addressList.map(addr => ({ host: addr.address, port: +this.port! }));\n  }\n\n  private async resolveTxt(hostname: string): Promise<string[][]> {\n    if (GRPC_NODE_USE_ALTERNATIVE_RESOLVER) {\n      trace('Using alternative DNS resolver.');\n      return this.alternativeResolver.resolveTxt(hostname);\n    }\n\n    return dns.resolveTxt(hostname);\n  }\n\n  private startNextResolutionTimer() {\n    clearTimeout(this.nextResolutionTimer);\n    this.nextResolutionTimer = setTimeout(() => {\n      this.stopNextResolutionTimer();\n      if (this.continueResolving) {\n        this.startResolutionWithBackoff();\n      }\n    }, this.minTimeBetweenResolutionsMs);\n    this.nextResolutionTimer.unref?.();\n    this.isNextResolutionTimerRunning = true;\n  }\n\n  private stopNextResolutionTimer() {\n    clearTimeout(this.nextResolutionTimer);\n    this.isNextResolutionTimerRunning = false;\n  }\n\n  private startResolutionWithBackoff() {\n    if (this.pendingLookupPromise === null) {\n      this.continueResolving = false;\n      this.backoff.runOnce();\n      this.startNextResolutionTimer();\n      this.startResolution();\n    }\n  }\n\n  updateResolution() {\n    /* If there is a pending lookup, just let it finish. Otherwise, if the\n     * nextResolutionTimer or backoff timer is running, set the\n     * continueResolving flag to resolve when whichever of those timers\n     * fires. Otherwise, start resolving immediately. */\n    if (this.pendingLookupPromise === null) {\n      if (this.isNextResolutionTimerRunning || this.backoff.isRunning()) {\n        if (this.isNextResolutionTimerRunning) {\n          trace(\n            'resolution update delayed by \"min time between resolutions\" rate limit'\n          );\n        } else {\n          trace(\n            'resolution update delayed by backoff timer until ' +\n              this.backoff.getEndTime().toISOString()\n          );\n        }\n        this.continueResolving = true;\n      } else {\n        this.startResolutionWithBackoff();\n      }\n    }\n  }\n\n  /**\n   * Reset the resolver to the same state it had when it was created. In-flight\n   * DNS requests cannot be cancelled, but they are discarded and their results\n   * will be ignored.\n   */\n  destroy() {\n    this.continueResolving = false;\n    this.backoff.reset();\n    this.backoff.stop();\n    this.stopNextResolutionTimer();\n    this.pendingLookupPromise = null;\n    this.pendingTxtPromise = null;\n    this.latestLookupResult = null;\n    this.latestServiceConfigResult = null;\n    this.returnedIpResult = false;\n  }\n\n  /**\n   * Get the default authority for the given target. For IP targets, that is\n   * the IP address. For DNS targets, it is the hostname.\n   * @param target\n   */\n  static getDefaultAuthority(target: GrpcUri): string {\n    return target.path;\n  }\n}\n\n/**\n * Set up the DNS resolver class by registering it as the handler for the\n * \"dns:\" prefix and as the default resolver.\n */\nexport function setup(): void {\n  registerResolver('dns', DnsResolver);\n  registerDefaultScheme('dns');\n}\n\nexport interface DnsUrl {\n  host: string;\n  port?: string;\n}\n", "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { log } from './logging';\nimport { LogVerbosity } from './constants';\nimport { isIPv4, Socket } from 'net';\nimport * as http from 'http';\nimport * as logging from './logging';\nimport {\n  SubchannelAddress,\n  isTcpSubchannelAddress,\n  subchannelAddressToString,\n} from './subchannel-address';\nimport { ChannelOptions } from './channel-options';\nimport { GrpcUri, parseUri, splitHostPort, uriToString } from './uri-parser';\nimport { URL } from 'url';\nimport { DEFAULT_PORT } from './resolver-dns';\n\nconst TRACER_NAME = 'proxy';\n\nfunction trace(text: string): void {\n  logging.trace(LogVerbosity.DEBUG, TRACER_NAME, text);\n}\n\ninterface ProxyInfo {\n  address?: string;\n  creds?: string;\n}\n\nfunction getProxyInfo(): ProxyInfo {\n  let proxyEnv = '';\n  let envVar = '';\n  /* Prefer using 'grpc_proxy'. Fallback on 'http_proxy' if it is not set.\n   * Also prefer using 'https_proxy' with fallback on 'http_proxy'. The\n   * fallback behavior can be removed if there's a demand for it.\n   */\n  if (process.env.grpc_proxy) {\n    envVar = 'grpc_proxy';\n    proxyEnv = process.env.grpc_proxy;\n  } else if (process.env.https_proxy) {\n    envVar = 'https_proxy';\n    proxyEnv = process.env.https_proxy;\n  } else if (process.env.http_proxy) {\n    envVar = 'http_proxy';\n    proxyEnv = process.env.http_proxy;\n  } else {\n    return {};\n  }\n  let proxyUrl: URL;\n  try {\n    proxyUrl = new URL(proxyEnv);\n  } catch (e) {\n    log(LogVerbosity.ERROR, `cannot parse value of \"${envVar}\" env var`);\n    return {};\n  }\n  if (proxyUrl.protocol !== 'http:') {\n    log(\n      LogVerbosity.ERROR,\n      `\"${proxyUrl.protocol}\" scheme not supported in proxy URI`\n    );\n    return {};\n  }\n  let userCred: string | null = null;\n  if (proxyUrl.username) {\n    if (proxyUrl.password) {\n      log(LogVerbosity.INFO, 'userinfo found in proxy URI');\n      userCred = decodeURIComponent(`${proxyUrl.username}:${proxyUrl.password}`);\n    } else {\n      userCred = proxyUrl.username;\n    }\n  }\n  const hostname = proxyUrl.hostname;\n  let port = proxyUrl.port;\n  /* The proxy URL uses the scheme \"http:\", which has a default port number of\n   * 80. We need to set that explicitly here if it is omitted because otherwise\n   * it will use gRPC's default port 443. */\n  if (port === '') {\n    port = '80';\n  }\n  const result: ProxyInfo = {\n    address: `${hostname}:${port}`,\n  };\n  if (userCred) {\n    result.creds = userCred;\n  }\n  trace(\n    'Proxy server ' + result.address + ' set by environment variable ' + envVar\n  );\n  return result;\n}\n\nfunction getNoProxyHostList(): string[] {\n  /* Prefer using 'no_grpc_proxy'. Fallback on 'no_proxy' if it is not set. */\n  let noProxyStr: string | undefined = process.env.no_grpc_proxy;\n  let envVar = 'no_grpc_proxy';\n  if (!noProxyStr) {\n    noProxyStr = process.env.no_proxy;\n    envVar = 'no_proxy';\n  }\n  if (noProxyStr) {\n    trace('No proxy server list set by environment variable ' + envVar);\n    return noProxyStr.split(',');\n  } else {\n    return [];\n  }\n}\n\ninterface CIDRNotation {\n  ip: number;\n  prefixLength: number;\n}\n\n/*\n * The groups correspond to CIDR parts as follows:\n * 1. ip\n * 2. prefixLength\n */\n\nexport function parseCIDR(cidrString: string): CIDRNotation | null {\n  const splitRange = cidrString.split('/');  \n  if (splitRange.length !== 2) {  \n    return null;  \n  }  \n  const prefixLength = parseInt(splitRange[1], 10);  \n  if (!isIPv4(splitRange[0]) || Number.isNaN(prefixLength) || prefixLength < 0 || prefixLength > 32) {  \n    return null;  \n  }  \n  return {  \n    ip: ipToInt(splitRange[0]),  \n    prefixLength: prefixLength  \n  };\n}\n\nfunction ipToInt(ip: string) {\n  return ip.split(\".\").reduce((acc, octet) => (acc << 8) + parseInt(octet, 10), 0);\n}\n\nfunction isIpInCIDR(cidr: CIDRNotation, serverHost: string) {\n  const ip = cidr.ip;\n  const mask = -1 << (32 - cidr.prefixLength);\n  const hostIP = ipToInt(serverHost);\n\n  return (hostIP & mask) === (ip & mask);\n}\n\nfunction hostMatchesNoProxyList(serverHost: string): boolean {\n  for (const host of getNoProxyHostList()) {\n    const parsedCIDR = parseCIDR(host);\n    // host is a CIDR and serverHost is an IP address\n    if (isIPv4(serverHost) && parsedCIDR && isIpInCIDR(parsedCIDR, serverHost)) {\n      return true;\n    } else if (serverHost.endsWith(host)) {\n      // host is a single IP or a domain name suffix\n      return true;\n    }\n  }\n  return false;\n}\n\nexport interface ProxyMapResult {\n  target: GrpcUri;\n  extraOptions: ChannelOptions;\n}\n\nexport function mapProxyName(\n  target: GrpcUri,\n  options: ChannelOptions\n): ProxyMapResult {\n  const noProxyResult: ProxyMapResult = {\n    target: target,\n    extraOptions: {},\n  };\n  if ((options['grpc.enable_http_proxy'] ?? 1) === 0) {\n    return noProxyResult;\n  }\n  if (target.scheme === 'unix') {\n    return noProxyResult;\n  }\n  const proxyInfo = getProxyInfo();\n  if (!proxyInfo.address) {\n    return noProxyResult;\n  }\n  const hostPort = splitHostPort(target.path);\n  if (!hostPort) {\n    return noProxyResult;\n  }\n  const serverHost = hostPort.host;\n  if (hostMatchesNoProxyList(serverHost)) {\n    trace('Not using proxy for target in no_proxy list: ' + uriToString(target));\n    return noProxyResult;\n  }\n  const extraOptions: ChannelOptions = {\n    'grpc.http_connect_target': uriToString(target),\n  };\n  if (proxyInfo.creds) {\n    extraOptions['grpc.http_connect_creds'] = proxyInfo.creds;\n  }\n  return {\n    target: {\n      scheme: 'dns',\n      path: proxyInfo.address,\n    },\n    extraOptions: extraOptions,\n  };\n}\n\nexport function getProxiedConnection(\n  address: SubchannelAddress,\n  channelOptions: ChannelOptions\n): Promise<Socket | null> {\n  if (!('grpc.http_connect_target' in channelOptions)) {\n    return Promise.resolve(null);\n  }\n  const realTarget = channelOptions['grpc.http_connect_target'] as string;\n  const parsedTarget = parseUri(realTarget);\n  if (parsedTarget === null) {\n    return Promise.resolve(null);\n  }\n  const splitHostPost = splitHostPort(parsedTarget.path);\n  if (splitHostPost === null) {\n    return Promise.resolve(null);\n  }\n  const hostPort = `${splitHostPost.host}:${\n    splitHostPost.port ?? DEFAULT_PORT\n  }`;\n  const options: http.RequestOptions = {\n    method: 'CONNECT',\n    path: hostPort,\n  };\n  const headers: http.OutgoingHttpHeaders = {\n    Host: hostPort,\n  };\n  // Connect to the subchannel address as a proxy\n  if (isTcpSubchannelAddress(address)) {\n    options.host = address.host;\n    options.port = address.port;\n  } else {\n    options.socketPath = address.path;\n  }\n  if ('grpc.http_connect_creds' in channelOptions) {\n    headers['Proxy-Authorization'] =\n      'Basic ' +\n      Buffer.from(channelOptions['grpc.http_connect_creds'] as string).toString(\n        'base64'\n      );\n  }\n  options.headers = headers;\n  const proxyAddressString = subchannelAddressToString(address);\n  trace('Using proxy ' + proxyAddressString + ' to connect to ' + options.path);\n  return new Promise<Socket | null>((resolve, reject) => {\n    const request = http.request(options);\n    request.once('connect', (res, socket, head) => {\n      request.removeAllListeners();\n      socket.removeAllListeners();\n      if (res.statusCode === 200) {\n        trace(\n          'Successfully connected to ' +\n            options.path +\n            ' through proxy ' +\n            proxyAddressString\n        );\n        // The HTTP client may have already read a few bytes of the proxied\n        // connection. If that's the case, put them back into the socket.\n        // See https://github.com/grpc/grpc-node/issues/2744.\n        if (head.length > 0) {\n          socket.unshift(head);\n        }\n        trace(\n          'Successfully established a plaintext connection to ' +\n            options.path +\n            ' through proxy ' +\n            proxyAddressString\n        );\n        resolve(socket);\n      } else {\n        log(\n          LogVerbosity.ERROR,\n          'Failed to connect to ' +\n            options.path +\n            ' through proxy ' +\n            proxyAddressString +\n            ' with status ' +\n            res.statusCode\n        );\n        reject();\n      }\n    });\n    request.once('error', err => {\n      request.removeAllListeners();\n      log(\n        LogVerbosity.ERROR,\n        'Failed to connect to proxy ' +\n          proxyAddressString +\n          ' with error ' +\n          err.message\n      );\n      reject();\n    });\n    request.end();\n  });\n}\n", "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nenum ReadState {\n  NO_DATA,\n  READING_SIZE,\n  READING_MESSAGE,\n}\n\nexport class StreamDecoder {\n  private readState: ReadState = ReadState.NO_DATA;\n  private readCompressFlag: Buffer = Buffer.alloc(1);\n  private readPartialSize: Buffer = Buffer.alloc(4);\n  private readSizeRemaining = 4;\n  private readMessageSize = 0;\n  private readPartialMessage: Buffer[] = [];\n  private readMessageRemaining = 0;\n\n  constructor(private maxReadMessageLength: number) {}\n\n  write(data: Buffer): Buffer[] {\n    let readHead = 0;\n    let toRead: number;\n    const result: Buffer[] = [];\n\n    while (readHead < data.length) {\n      switch (this.readState) {\n        case ReadState.NO_DATA:\n          this.readCompressFlag = data.slice(readHead, readHead + 1);\n          readHead += 1;\n          this.readState = ReadState.READING_SIZE;\n          this.readPartialSize.fill(0);\n          this.readSizeRemaining = 4;\n          this.readMessageSize = 0;\n          this.readMessageRemaining = 0;\n          this.readPartialMessage = [];\n          break;\n        case ReadState.READING_SIZE:\n          toRead = Math.min(data.length - readHead, this.readSizeRemaining);\n          data.copy(\n            this.readPartialSize,\n            4 - this.readSizeRemaining,\n            readHead,\n            readHead + toRead\n          );\n          this.readSizeRemaining -= toRead;\n          readHead += toRead;\n          // readSizeRemaining >=0 here\n          if (this.readSizeRemaining === 0) {\n            this.readMessageSize = this.readPartialSize.readUInt32BE(0);\n            if (this.maxReadMessageLength !== -1 && this.readMessageSize > this.maxReadMessageLength) {\n              throw new Error(`Received message larger than max (${this.readMessageSize} vs ${this.maxReadMessageLength})`);\n            }\n            this.readMessageRemaining = this.readMessageSize;\n            if (this.readMessageRemaining > 0) {\n              this.readState = ReadState.READING_MESSAGE;\n            } else {\n              const message = Buffer.concat(\n                [this.readCompressFlag, this.readPartialSize],\n                5\n              );\n\n              this.readState = ReadState.NO_DATA;\n              result.push(message);\n            }\n          }\n          break;\n        case ReadState.READING_MESSAGE:\n          toRead = Math.min(data.length - readHead, this.readMessageRemaining);\n          this.readPartialMessage.push(data.slice(readHead, readHead + toRead));\n          this.readMessageRemaining -= toRead;\n          readHead += toRead;\n          // readMessageRemaining >=0 here\n          if (this.readMessageRemaining === 0) {\n            // At this point, we have read a full message\n            const framedMessageBuffers = [\n              this.readCompressFlag,\n              this.readPartialSize,\n            ].concat(this.readPartialMessage);\n            const framedMessage = Buffer.concat(\n              framedMessageBuffers,\n              this.readMessageSize + 5\n            );\n\n            this.readState = ReadState.NO_DATA;\n            result.push(framedMessage);\n          }\n          break;\n        default:\n          throw new Error('Unexpected read state');\n      }\n    }\n\n    return result;\n  }\n}\n", "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport * as http2 from 'http2';\nimport * as os from 'os';\n\nimport { DEFAULT_MAX_RECEIVE_MESSAGE_LENGTH, Status } from './constants';\nimport { Metadata } from './metadata';\nimport { StreamDecoder } from './stream-decoder';\nimport * as logging from './logging';\nimport { LogVerbosity } from './constants';\nimport {\n  InterceptingListener,\n  MessageContext,\n  StatusObject,\n  WriteCallback,\n} from './call-interface';\nimport { CallEventTracker, Transport } from './transport';\nimport { AuthContext } from './auth-context';\n\nconst TRACER_NAME = 'subchannel_call';\n\n/**\n * https://nodejs.org/api/errors.html#errors_class_systemerror\n */\ninterface SystemError extends Error {\n  address?: string;\n  code: string;\n  dest?: string;\n  errno: number;\n  info?: object;\n  message: string;\n  path?: string;\n  port?: number;\n  syscall: string;\n}\n\n/**\n * Should do approximately the same thing as util.getSystemErrorName but the\n * TypeScript types don't have that function for some reason so I just made my\n * own.\n * @param errno\n */\nfunction getSystemErrorName(errno: number): string {\n  for (const [name, num] of Object.entries(os.constants.errno)) {\n    if (num === errno) {\n      return name;\n    }\n  }\n  return 'Unknown system error ' + errno;\n}\n\nexport interface SubchannelCall {\n  cancelWithStatus(status: Status, details: string): void;\n  getPeer(): string;\n  sendMessageWithContext(context: MessageContext, message: Buffer): void;\n  startRead(): void;\n  halfClose(): void;\n  getCallNumber(): number;\n  getDeadlineInfo(): string[];\n  getAuthContext(): AuthContext;\n}\n\nexport interface StatusObjectWithRstCode extends StatusObject {\n  rstCode?: number;\n}\n\nexport interface SubchannelCallInterceptingListener\n  extends InterceptingListener {\n  onReceiveStatus(status: StatusObjectWithRstCode): void;\n}\n\nfunction mapHttpStatusCode(code: number): StatusObject {\n  const details = `Received HTTP status code ${code}`;\n  let mappedStatusCode: number;\n  switch (code) {\n    // TODO(murgatroid99): handle 100 and 101\n    case 400:\n      mappedStatusCode = Status.INTERNAL;\n      break;\n    case 401:\n      mappedStatusCode = Status.UNAUTHENTICATED;\n      break;\n    case 403:\n      mappedStatusCode = Status.PERMISSION_DENIED;\n      break;\n    case 404:\n      mappedStatusCode = Status.UNIMPLEMENTED;\n      break;\n    case 429:\n    case 502:\n    case 503:\n    case 504:\n      mappedStatusCode = Status.UNAVAILABLE;\n      break;\n    default:\n      mappedStatusCode = Status.UNKNOWN;\n  }\n  return {\n    code: mappedStatusCode,\n    details: details,\n    metadata: new Metadata()\n  };\n}\n\nexport class Http2SubchannelCall implements SubchannelCall {\n  private decoder: StreamDecoder;\n\n  private isReadFilterPending = false;\n  private isPushPending = false;\n  private canPush = false;\n  /**\n   * Indicates that an 'end' event has come from the http2 stream, so there\n   * will be no more data events.\n   */\n  private readsClosed = false;\n\n  private statusOutput = false;\n\n  private unpushedReadMessages: Buffer[] = [];\n\n  private httpStatusCode: number | undefined;\n\n  // This is populated (non-null) if and only if the call has ended\n  private finalStatus: StatusObject | null = null;\n\n  private internalError: SystemError | null = null;\n\n  private serverEndedCall = false;\n\n  private connectionDropped = false;\n\n  constructor(\n    private readonly http2Stream: http2.ClientHttp2Stream,\n    private readonly callEventTracker: CallEventTracker,\n    private readonly listener: SubchannelCallInterceptingListener,\n    private readonly transport: Transport,\n    private readonly callId: number\n  ) {\n    const maxReceiveMessageLength = transport.getOptions()['grpc.max_receive_message_length'] ?? DEFAULT_MAX_RECEIVE_MESSAGE_LENGTH;\n    this.decoder = new StreamDecoder(maxReceiveMessageLength);\n    http2Stream.on('response', (headers, flags) => {\n      let headersString = '';\n      for (const header of Object.keys(headers)) {\n        headersString += '\\t\\t' + header + ': ' + headers[header] + '\\n';\n      }\n      this.trace('Received server headers:\\n' + headersString);\n      this.httpStatusCode = headers[':status'];\n\n      if (flags & http2.constants.NGHTTP2_FLAG_END_STREAM) {\n        this.handleTrailers(headers);\n      } else {\n        let metadata: Metadata;\n        try {\n          metadata = Metadata.fromHttp2Headers(headers);\n        } catch (error) {\n          this.endCall({\n            code: Status.UNKNOWN,\n            details: (error as Error).message,\n            metadata: new Metadata(),\n          });\n          return;\n        }\n        this.listener.onReceiveMetadata(metadata);\n      }\n    });\n    http2Stream.on('trailers', (headers: http2.IncomingHttpHeaders) => {\n      this.handleTrailers(headers);\n    });\n    http2Stream.on('data', (data: Buffer) => {\n      /* If the status has already been output, allow the http2 stream to\n       * drain without processing the data. */\n      if (this.statusOutput) {\n        return;\n      }\n      this.trace('receive HTTP/2 data frame of length ' + data.length);\n      let messages: Buffer[];\n      try {\n        messages = this.decoder.write(data);\n      } catch (e) {\n        /* Some servers send HTML error pages along with HTTP status codes.\n         * When the client attempts to parse this as a length-delimited\n         * message, the parsed message size is greater than the default limit,\n         * resulting in a message decoding error. In that situation, the HTTP\n         * error code information is more useful to the user than the\n         * RESOURCE_EXHAUSTED error is, so we report that instead. Normally,\n         * we delay processing the HTTP status until after the stream ends, to\n         * prioritize reporting the gRPC status from trailers if it is present,\n         * but when there is a message parsing error we end the stream early\n         * before processing trailers. */\n        if (this.httpStatusCode !== undefined && this.httpStatusCode !== 200) {\n          const mappedStatus = mapHttpStatusCode(this.httpStatusCode);\n          this.cancelWithStatus(mappedStatus.code, mappedStatus.details);\n        } else {\n          this.cancelWithStatus(Status.RESOURCE_EXHAUSTED, (e as Error).message);\n        }\n        return;\n      }\n\n      for (const message of messages) {\n        this.trace('parsed message of length ' + message.length);\n        this.callEventTracker!.addMessageReceived();\n        this.tryPush(message);\n      }\n    });\n    http2Stream.on('end', () => {\n      this.readsClosed = true;\n      this.maybeOutputStatus();\n    });\n    http2Stream.on('close', () => {\n      this.serverEndedCall = true;\n      /* Use process.next tick to ensure that this code happens after any\n       * \"error\" event that may be emitted at about the same time, so that\n       * we can bubble up the error message from that event. */\n      process.nextTick(() => {\n        this.trace('HTTP/2 stream closed with code ' + http2Stream.rstCode);\n        /* If we have a final status with an OK status code, that means that\n         * we have received all of the messages and we have processed the\n         * trailers and the call completed successfully, so it doesn't matter\n         * how the stream ends after that */\n        if (this.finalStatus?.code === Status.OK) {\n          return;\n        }\n        let code: Status;\n        let details = '';\n        switch (http2Stream.rstCode) {\n          case http2.constants.NGHTTP2_NO_ERROR:\n            /* If we get a NO_ERROR code and we already have a status, the\n             * stream completed properly and we just haven't fully processed\n             * it yet */\n            if (this.finalStatus !== null) {\n              return;\n            }\n            if (this.httpStatusCode && this.httpStatusCode !== 200) {\n              const mappedStatus = mapHttpStatusCode(this.httpStatusCode);\n              code = mappedStatus.code;\n              details = mappedStatus.details;\n            } else {\n              code = Status.INTERNAL;\n              details = `Received RST_STREAM with code ${http2Stream.rstCode} (Call ended without gRPC status)`;\n            }\n            break;\n          case http2.constants.NGHTTP2_REFUSED_STREAM:\n            code = Status.UNAVAILABLE;\n            details = 'Stream refused by server';\n            break;\n          case http2.constants.NGHTTP2_CANCEL:\n            /* Bug reports indicate that Node synthesizes a NGHTTP2_CANCEL\n             * code from connection drops. We want to prioritize reporting\n             * an unavailable status when that happens. */\n            if (this.connectionDropped) {\n              code = Status.UNAVAILABLE;\n              details = 'Connection dropped';\n            } else {\n              code = Status.CANCELLED;\n              details = 'Call cancelled';\n            }\n            break;\n          case http2.constants.NGHTTP2_ENHANCE_YOUR_CALM:\n            code = Status.RESOURCE_EXHAUSTED;\n            details = 'Bandwidth exhausted or memory limit exceeded';\n            break;\n          case http2.constants.NGHTTP2_INADEQUATE_SECURITY:\n            code = Status.PERMISSION_DENIED;\n            details = 'Protocol not secure enough';\n            break;\n          case http2.constants.NGHTTP2_INTERNAL_ERROR:\n            code = Status.INTERNAL;\n            if (this.internalError === null) {\n              /* This error code was previously handled in the default case, and\n               * there are several instances of it online, so I wanted to\n               * preserve the original error message so that people find existing\n               * information in searches, but also include the more recognizable\n               * \"Internal server error\" message. */\n              details = `Received RST_STREAM with code ${http2Stream.rstCode} (Internal server error)`;\n            } else {\n              if (\n                this.internalError.code === 'ECONNRESET' ||\n                this.internalError.code === 'ETIMEDOUT'\n              ) {\n                code = Status.UNAVAILABLE;\n                details = this.internalError.message;\n              } else {\n                /* The \"Received RST_STREAM with code ...\" error is preserved\n                 * here for continuity with errors reported online, but the\n                 * error message at the end will probably be more relevant in\n                 * most cases. */\n                details = `Received RST_STREAM with code ${http2Stream.rstCode} triggered by internal client error: ${this.internalError.message}`;\n              }\n            }\n            break;\n          default:\n            code = Status.INTERNAL;\n            details = `Received RST_STREAM with code ${http2Stream.rstCode}`;\n        }\n        // This is a no-op if trailers were received at all.\n        // This is OK, because status codes emitted here correspond to more\n        // catastrophic issues that prevent us from receiving trailers in the\n        // first place.\n        this.endCall({\n          code,\n          details,\n          metadata: new Metadata(),\n          rstCode: http2Stream.rstCode,\n        });\n      });\n    });\n    http2Stream.on('error', (err: SystemError) => {\n      /* We need an error handler here to stop \"Uncaught Error\" exceptions\n       * from bubbling up. However, errors here should all correspond to\n       * \"close\" events, where we will handle the error more granularly */\n      /* Specifically looking for stream errors that were *not* constructed\n       * from a RST_STREAM response here:\n       * https://github.com/nodejs/node/blob/8b8620d580314050175983402dfddf2674e8e22a/lib/internal/http2/core.js#L2267\n       */\n      if (err.code !== 'ERR_HTTP2_STREAM_ERROR') {\n        this.trace(\n          'Node error event: message=' +\n            err.message +\n            ' code=' +\n            err.code +\n            ' errno=' +\n            getSystemErrorName(err.errno) +\n            ' syscall=' +\n            err.syscall\n        );\n        this.internalError = err;\n      }\n      this.callEventTracker.onStreamEnd(false);\n    });\n  }\n  getDeadlineInfo(): string[] {\n    return [`remote_addr=${this.getPeer()}`];\n  }\n\n  public onDisconnect() {\n    this.connectionDropped = true;\n    /* Give the call an event loop cycle to finish naturally before reporting\n     * the disconnection as an error. */\n    setImmediate(() => {\n      this.endCall({\n        code: Status.UNAVAILABLE,\n        details: 'Connection dropped',\n        metadata: new Metadata(),\n      });\n    });\n  }\n\n  private outputStatus() {\n    /* Precondition: this.finalStatus !== null */\n    if (!this.statusOutput) {\n      this.statusOutput = true;\n      this.trace(\n        'ended with status: code=' +\n          this.finalStatus!.code +\n          ' details=\"' +\n          this.finalStatus!.details +\n          '\"'\n      );\n      this.callEventTracker.onCallEnd(this.finalStatus!);\n      /* We delay the actual action of bubbling up the status to insulate the\n       * cleanup code in this class from any errors that may be thrown in the\n       * upper layers as a result of bubbling up the status. In particular,\n       * if the status is not OK, the \"error\" event may be emitted\n       * synchronously at the top level, which will result in a thrown error if\n       * the user does not handle that event. */\n      process.nextTick(() => {\n        this.listener.onReceiveStatus(this.finalStatus!);\n      });\n      /* Leave the http2 stream in flowing state to drain incoming messages, to\n       * ensure that the stream closure completes. The call stream already does\n       * not push more messages after the status is output, so the messages go\n       * nowhere either way. */\n      this.http2Stream.resume();\n    }\n  }\n\n  private trace(text: string): void {\n    logging.trace(\n      LogVerbosity.DEBUG,\n      TRACER_NAME,\n      '[' + this.callId + '] ' + text\n    );\n  }\n\n  /**\n   * On first call, emits a 'status' event with the given StatusObject.\n   * Subsequent calls are no-ops.\n   * @param status The status of the call.\n   */\n  private endCall(status: StatusObjectWithRstCode): void {\n    /* If the status is OK and a new status comes in (e.g. from a\n     * deserialization failure), that new status takes priority */\n    if (this.finalStatus === null || this.finalStatus.code === Status.OK) {\n      this.finalStatus = status;\n      this.maybeOutputStatus();\n    }\n    this.destroyHttp2Stream();\n  }\n\n  private maybeOutputStatus() {\n    if (this.finalStatus !== null) {\n      /* The combination check of readsClosed and that the two message buffer\n       * arrays are empty checks that there all incoming data has been fully\n       * processed */\n      if (\n        this.finalStatus.code !== Status.OK ||\n        (this.readsClosed &&\n          this.unpushedReadMessages.length === 0 &&\n          !this.isReadFilterPending &&\n          !this.isPushPending)\n      ) {\n        this.outputStatus();\n      }\n    }\n  }\n\n  private push(message: Buffer): void {\n    this.trace(\n      'pushing to reader message of length ' +\n        (message instanceof Buffer ? message.length : null)\n    );\n    this.canPush = false;\n    this.isPushPending = true;\n    process.nextTick(() => {\n      this.isPushPending = false;\n      /* If we have already output the status any later messages should be\n       * ignored, and can cause out-of-order operation errors higher up in the\n       * stack. Checking as late as possible here to avoid any race conditions.\n       */\n      if (this.statusOutput) {\n        return;\n      }\n      this.listener.onReceiveMessage(message);\n      this.maybeOutputStatus();\n    });\n  }\n\n  private tryPush(messageBytes: Buffer): void {\n    if (this.canPush) {\n      this.http2Stream!.pause();\n      this.push(messageBytes);\n    } else {\n      this.trace(\n        'unpushedReadMessages.push message of length ' + messageBytes.length\n      );\n      this.unpushedReadMessages.push(messageBytes);\n    }\n  }\n\n  private handleTrailers(headers: http2.IncomingHttpHeaders) {\n    this.serverEndedCall = true;\n    this.callEventTracker.onStreamEnd(true);\n    let headersString = '';\n    for (const header of Object.keys(headers)) {\n      headersString += '\\t\\t' + header + ': ' + headers[header] + '\\n';\n    }\n    this.trace('Received server trailers:\\n' + headersString);\n    let metadata: Metadata;\n    try {\n      metadata = Metadata.fromHttp2Headers(headers);\n    } catch (e) {\n      metadata = new Metadata();\n    }\n    const metadataMap = metadata.getMap();\n    let status: StatusObject;\n    if (typeof metadataMap['grpc-status'] === 'string') {\n      const receivedStatus: Status = Number(metadataMap['grpc-status']);\n      this.trace('received status code ' + receivedStatus + ' from server');\n      metadata.remove('grpc-status');\n      let details = '';\n      if (typeof metadataMap['grpc-message'] === 'string') {\n        try {\n          details = decodeURI(metadataMap['grpc-message']);\n        } catch (e) {\n          details = metadataMap['grpc-message'];\n        }\n        metadata.remove('grpc-message');\n        this.trace(\n          'received status details string \"' + details + '\" from server'\n        );\n      }\n      status = {\n        code: receivedStatus,\n        details: details,\n        metadata: metadata\n      };\n    } else if (this.httpStatusCode) {\n      status = mapHttpStatusCode(this.httpStatusCode);\n      status.metadata = metadata;\n    } else {\n      status = {\n        code: Status.UNKNOWN,\n        details: 'No status information received',\n        metadata: metadata\n      };\n    }\n    // This is a no-op if the call was already ended when handling headers.\n    this.endCall(status);\n  }\n\n  private destroyHttp2Stream() {\n    // The http2 stream could already have been destroyed if cancelWithStatus\n    // is called in response to an internal http2 error.\n    if (this.http2Stream.destroyed) {\n      return;\n    }\n    /* If the server ended the call, sending an RST_STREAM is redundant, so we\n     * just half close on the client side instead to finish closing the stream.\n     */\n    if (this.serverEndedCall) {\n      this.http2Stream.end();\n    } else {\n      /* If the call has ended with an OK status, communicate that when closing\n       * the stream, partly to avoid a situation in which we detect an error\n       * RST_STREAM as a result after we have the status */\n      let code: number;\n      if (this.finalStatus?.code === Status.OK) {\n        code = http2.constants.NGHTTP2_NO_ERROR;\n      } else {\n        code = http2.constants.NGHTTP2_CANCEL;\n      }\n      this.trace('close http2 stream with code ' + code);\n      this.http2Stream.close(code);\n    }\n  }\n\n  cancelWithStatus(status: Status, details: string): void {\n    this.trace(\n      'cancelWithStatus code: ' + status + ' details: \"' + details + '\"'\n    );\n    this.endCall({ code: status, details, metadata: new Metadata() });\n  }\n\n  getStatus(): StatusObject | null {\n    return this.finalStatus;\n  }\n\n  getPeer(): string {\n    return this.transport.getPeerName();\n  }\n\n  getCallNumber(): number {\n    return this.callId;\n  }\n\n  getAuthContext(): AuthContext {\n    return this.transport.getAuthContext();\n  }\n\n  startRead() {\n    /* If the stream has ended with an error, we should not emit any more\n     * messages and we should communicate that the stream has ended */\n    if (this.finalStatus !== null && this.finalStatus.code !== Status.OK) {\n      this.readsClosed = true;\n      this.maybeOutputStatus();\n      return;\n    }\n    this.canPush = true;\n    if (this.unpushedReadMessages.length > 0) {\n      const nextMessage: Buffer = this.unpushedReadMessages.shift()!;\n      this.push(nextMessage);\n      return;\n    }\n    /* Only resume reading from the http2Stream if we don't have any pending\n     * messages to emit */\n    this.http2Stream.resume();\n  }\n\n  sendMessageWithContext(context: MessageContext, message: Buffer) {\n    this.trace('write() called with message of length ' + message.length);\n    const cb: WriteCallback = (error?: Error | null) => {\n      /* nextTick here ensures that no stream action can be taken in the call\n       * stack of the write callback, in order to hopefully work around\n       * https://github.com/nodejs/node/issues/49147 */\n      process.nextTick(() => {\n        let code: Status = Status.UNAVAILABLE;\n        if (\n          (error as NodeJS.ErrnoException)?.code ===\n          'ERR_STREAM_WRITE_AFTER_END'\n        ) {\n          code = Status.INTERNAL;\n        }\n        if (error) {\n          this.cancelWithStatus(code, `Write error: ${error.message}`);\n        }\n        context.callback?.();\n      });\n    };\n    this.trace('sending data chunk of length ' + message.length);\n    this.callEventTracker.addMessageSent();\n    try {\n      this.http2Stream!.write(message, cb);\n    } catch (error) {\n      this.endCall({\n        code: Status.UNAVAILABLE,\n        details: `Write failed with error ${(error as Error).message}`,\n        metadata: new Metadata(),\n      });\n    }\n  }\n\n  halfClose() {\n    this.trace('end() called');\n    this.trace('calling end() on HTTP/2 stream');\n    this.http2Stream.end();\n  }\n}\n", "/*\n * Copyright 2023 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport * as http2 from 'http2';\nimport {\n  CipherNameAndProtocol,\n  TLSSocket,\n} from 'tls';\nimport { PartialStatusObject } from './call-interface';\nimport { SecureConnector, SecureConnectResult } from './channel-credentials';\nimport { ChannelOptions } from './channel-options';\nimport {\n  ChannelzCallTracker,\n  ChannelzCallTrackerStub,\n  registerChannelzSocket,\n  SocketInfo,\n  SocketRef,\n  TlsInfo,\n  unregisterChannelzRef,\n} from './channelz';\nimport { LogVerbosity } from './constants';\nimport { getProxiedConnection } from './http_proxy';\nimport * as logging from './logging';\nimport { getDefaultAuthority } from './resolver';\nimport {\n  stringToSubchannelAddress,\n  SubchannelAddress,\n  subchannelAddressToString,\n} from './subchannel-address';\nimport { GrpcUri, parseUri, uriToString } from './uri-parser';\nimport * as net from 'net';\nimport {\n  Http2SubchannelCall,\n  SubchannelCall,\n  SubchannelCallInterceptingListener,\n} from './subchannel-call';\nimport { Metadata } from './metadata';\nimport { getNextCallNumber } from './call-number';\nimport { Socket } from 'net';\nimport { AuthContext } from './auth-context';\n\nconst TRACER_NAME = 'transport';\nconst FLOW_CONTROL_TRACER_NAME = 'transport_flowctrl';\n\nconst clientVersion = require('../../package.json').version;\n\nconst {\n  HTTP2_HEADER_AUTHORITY,\n  HTTP2_HEADER_CONTENT_TYPE,\n  HTTP2_HEADER_METHOD,\n  HTTP2_HEADER_PATH,\n  HTTP2_HEADER_TE,\n  HTTP2_HEADER_USER_AGENT,\n} = http2.constants;\n\nconst KEEPALIVE_TIMEOUT_MS = 20000;\n\nexport interface CallEventTracker {\n  addMessageSent(): void;\n  addMessageReceived(): void;\n  onCallEnd(status: PartialStatusObject): void;\n  onStreamEnd(success: boolean): void;\n}\n\nexport interface TransportDisconnectListener {\n  (tooManyPings: boolean): void;\n}\n\nexport interface Transport {\n  getChannelzRef(): SocketRef;\n  getPeerName(): string;\n  getOptions(): ChannelOptions;\n  getAuthContext(): AuthContext;\n  createCall(\n    metadata: Metadata,\n    host: string,\n    method: string,\n    listener: SubchannelCallInterceptingListener,\n    subchannelCallStatsTracker: Partial<CallEventTracker>\n  ): SubchannelCall;\n  addDisconnectListener(listener: TransportDisconnectListener): void;\n  shutdown(): void;\n}\n\nconst tooManyPingsData: Buffer = Buffer.from('too_many_pings', 'ascii');\n\nclass Http2Transport implements Transport {\n  /**\n   * The amount of time in between sending pings\n   */\n  private readonly keepaliveTimeMs: number;\n  /**\n   * The amount of time to wait for an acknowledgement after sending a ping\n   */\n  private readonly keepaliveTimeoutMs: number;\n  /**\n   * Indicates whether keepalive pings should be sent without any active calls\n   */\n  private readonly keepaliveWithoutCalls: boolean;\n  /**\n   * Timer reference indicating when to send the next ping or when the most recent ping will be considered lost.\n   */\n  private keepaliveTimer: NodeJS.Timeout | null = null;\n  /**\n   * Indicates that the keepalive timer ran out while there were no active\n   * calls, and a ping should be sent the next time a call starts.\n   */\n  private pendingSendKeepalivePing = false;\n\n  private userAgent: string;\n\n  private activeCalls: Set<Http2SubchannelCall> = new Set();\n\n  private subchannelAddressString: string;\n\n  private disconnectListeners: TransportDisconnectListener[] = [];\n\n  private disconnectHandled = false;\n\n  private authContext: AuthContext;\n\n  // Channelz info\n  private channelzRef: SocketRef;\n  private readonly channelzEnabled: boolean = true;\n  private streamTracker: ChannelzCallTracker | ChannelzCallTrackerStub;\n  private keepalivesSent = 0;\n  private messagesSent = 0;\n  private messagesReceived = 0;\n  private lastMessageSentTimestamp: Date | null = null;\n  private lastMessageReceivedTimestamp: Date | null = null;\n\n  constructor(\n    private session: http2.ClientHttp2Session,\n    subchannelAddress: SubchannelAddress,\n    private options: ChannelOptions,\n    /**\n     * Name of the remote server, if it is not the same as the subchannel\n     * address, i.e. if connecting through an HTTP CONNECT proxy.\n     */\n    private remoteName: string | null\n  ) {\n    /* Populate subchannelAddressString and channelzRef before doing anything\n     * else, because they are used in the trace methods. */\n    this.subchannelAddressString = subchannelAddressToString(subchannelAddress);\n\n    if (options['grpc.enable_channelz'] === 0) {\n      this.channelzEnabled = false;\n      this.streamTracker = new ChannelzCallTrackerStub();\n    } else {\n      this.streamTracker = new ChannelzCallTracker();\n    }\n\n    this.channelzRef = registerChannelzSocket(\n      this.subchannelAddressString,\n      () => this.getChannelzInfo(),\n      this.channelzEnabled\n    );\n\n    // Build user-agent string.\n    this.userAgent = [\n      options['grpc.primary_user_agent'],\n      `grpc-node-js/${clientVersion}`,\n      options['grpc.secondary_user_agent'],\n    ]\n      .filter(e => e)\n      .join(' '); // remove falsey values first\n\n    if ('grpc.keepalive_time_ms' in options) {\n      this.keepaliveTimeMs = options['grpc.keepalive_time_ms']!;\n    } else {\n      this.keepaliveTimeMs = -1;\n    }\n    if ('grpc.keepalive_timeout_ms' in options) {\n      this.keepaliveTimeoutMs = options['grpc.keepalive_timeout_ms']!;\n    } else {\n      this.keepaliveTimeoutMs = KEEPALIVE_TIMEOUT_MS;\n    }\n    if ('grpc.keepalive_permit_without_calls' in options) {\n      this.keepaliveWithoutCalls =\n        options['grpc.keepalive_permit_without_calls'] === 1;\n    } else {\n      this.keepaliveWithoutCalls = false;\n    }\n\n    session.once('close', () => {\n      this.trace('session closed');\n      this.handleDisconnect();\n    });\n\n    session.once(\n      'goaway',\n      (errorCode: number, lastStreamID: number, opaqueData?: Buffer) => {\n        let tooManyPings = false;\n        /* See the last paragraph of\n         * https://github.com/grpc/proposal/blob/master/A8-client-side-keepalive.md#basic-keepalive */\n        if (\n          errorCode === http2.constants.NGHTTP2_ENHANCE_YOUR_CALM &&\n          opaqueData &&\n          opaqueData.equals(tooManyPingsData)\n        ) {\n          tooManyPings = true;\n        }\n        this.trace(\n          'connection closed by GOAWAY with code ' +\n            errorCode +\n            ' and data ' +\n            opaqueData?.toString()\n        );\n        this.reportDisconnectToOwner(tooManyPings);\n      }\n    );\n\n    session.once('error', error => {\n      this.trace('connection closed with error ' + (error as Error).message);\n      this.handleDisconnect();\n    });\n\n    session.socket.once('close', (hadError) => {\n      this.trace('connection closed. hadError=' + hadError);\n      this.handleDisconnect();\n    });\n\n    if (logging.isTracerEnabled(TRACER_NAME)) {\n      session.on('remoteSettings', (settings: http2.Settings) => {\n        this.trace(\n          'new settings received' +\n            (this.session !== session ? ' on the old connection' : '') +\n            ': ' +\n            JSON.stringify(settings)\n        );\n      });\n      session.on('localSettings', (settings: http2.Settings) => {\n        this.trace(\n          'local settings acknowledged by remote' +\n            (this.session !== session ? ' on the old connection' : '') +\n            ': ' +\n            JSON.stringify(settings)\n        );\n      });\n    }\n\n    /* Start the keepalive timer last, because this can trigger trace logs,\n     * which should only happen after everything else is set up. */\n    if (this.keepaliveWithoutCalls) {\n      this.maybeStartKeepalivePingTimer();\n    }\n\n    if (session.socket instanceof TLSSocket) {\n      this.authContext = {\n        transportSecurityType: 'ssl',\n        sslPeerCertificate: session.socket.getPeerCertificate()\n      };\n    } else {\n      this.authContext = {};\n    }\n  }\n\n  private getChannelzInfo(): SocketInfo {\n    const sessionSocket = this.session.socket;\n    const remoteAddress = sessionSocket.remoteAddress\n      ? stringToSubchannelAddress(\n          sessionSocket.remoteAddress,\n          sessionSocket.remotePort\n        )\n      : null;\n    const localAddress = sessionSocket.localAddress\n      ? stringToSubchannelAddress(\n          sessionSocket.localAddress,\n          sessionSocket.localPort\n        )\n      : null;\n    let tlsInfo: TlsInfo | null;\n    if (this.session.encrypted) {\n      const tlsSocket: TLSSocket = sessionSocket as TLSSocket;\n      const cipherInfo: CipherNameAndProtocol & { standardName?: string } =\n        tlsSocket.getCipher();\n      const certificate = tlsSocket.getCertificate();\n      const peerCertificate = tlsSocket.getPeerCertificate();\n      tlsInfo = {\n        cipherSuiteStandardName: cipherInfo.standardName ?? null,\n        cipherSuiteOtherName: cipherInfo.standardName ? null : cipherInfo.name,\n        localCertificate:\n          certificate && 'raw' in certificate ? certificate.raw : null,\n        remoteCertificate:\n          peerCertificate && 'raw' in peerCertificate\n            ? peerCertificate.raw\n            : null,\n      };\n    } else {\n      tlsInfo = null;\n    }\n    const socketInfo: SocketInfo = {\n      remoteAddress: remoteAddress,\n      localAddress: localAddress,\n      security: tlsInfo,\n      remoteName: this.remoteName,\n      streamsStarted: this.streamTracker.callsStarted,\n      streamsSucceeded: this.streamTracker.callsSucceeded,\n      streamsFailed: this.streamTracker.callsFailed,\n      messagesSent: this.messagesSent,\n      messagesReceived: this.messagesReceived,\n      keepAlivesSent: this.keepalivesSent,\n      lastLocalStreamCreatedTimestamp:\n        this.streamTracker.lastCallStartedTimestamp,\n      lastRemoteStreamCreatedTimestamp: null,\n      lastMessageSentTimestamp: this.lastMessageSentTimestamp,\n      lastMessageReceivedTimestamp: this.lastMessageReceivedTimestamp,\n      localFlowControlWindow: this.session.state.localWindowSize ?? null,\n      remoteFlowControlWindow: this.session.state.remoteWindowSize ?? null,\n    };\n    return socketInfo;\n  }\n\n  private trace(text: string): void {\n    logging.trace(\n      LogVerbosity.DEBUG,\n      TRACER_NAME,\n      '(' +\n        this.channelzRef.id +\n        ') ' +\n        this.subchannelAddressString +\n        ' ' +\n        text\n    );\n  }\n\n  private keepaliveTrace(text: string): void {\n    logging.trace(\n      LogVerbosity.DEBUG,\n      'keepalive',\n      '(' +\n        this.channelzRef.id +\n        ') ' +\n        this.subchannelAddressString +\n        ' ' +\n        text\n    );\n  }\n\n  private flowControlTrace(text: string): void {\n    logging.trace(\n      LogVerbosity.DEBUG,\n      FLOW_CONTROL_TRACER_NAME,\n      '(' +\n        this.channelzRef.id +\n        ') ' +\n        this.subchannelAddressString +\n        ' ' +\n        text\n    );\n  }\n\n  private internalsTrace(text: string): void {\n    logging.trace(\n      LogVerbosity.DEBUG,\n      'transport_internals',\n      '(' +\n        this.channelzRef.id +\n        ') ' +\n        this.subchannelAddressString +\n        ' ' +\n        text\n    );\n  }\n\n  /**\n   * Indicate to the owner of this object that this transport should no longer\n   * be used. That happens if the connection drops, or if the server sends a\n   * GOAWAY.\n   * @param tooManyPings If true, this was triggered by a GOAWAY with data\n   * indicating that the session was closed becaues the client sent too many\n   * pings.\n   * @returns\n   */\n  private reportDisconnectToOwner(tooManyPings: boolean) {\n    if (this.disconnectHandled) {\n      return;\n    }\n    this.disconnectHandled = true;\n    this.disconnectListeners.forEach(listener => listener(tooManyPings));\n  }\n\n  /**\n   * Handle connection drops, but not GOAWAYs.\n   */\n  private handleDisconnect() {\n    this.clearKeepaliveTimeout();\n    this.reportDisconnectToOwner(false);\n    for (const call of this.activeCalls) {\n      call.onDisconnect();\n    }\n    // Wait an event loop cycle before destroying the connection\n    setImmediate(() => {\n      this.session.destroy();\n    });\n  }\n\n  addDisconnectListener(listener: TransportDisconnectListener): void {\n    this.disconnectListeners.push(listener);\n  }\n\n  private canSendPing() {\n    return (\n      !this.session.destroyed &&\n      this.keepaliveTimeMs > 0 &&\n      (this.keepaliveWithoutCalls || this.activeCalls.size > 0)\n    );\n  }\n\n  private maybeSendPing() {\n    if (!this.canSendPing()) {\n      this.pendingSendKeepalivePing = true;\n      return;\n    }\n    if (this.keepaliveTimer) {\n      console.error('keepaliveTimeout is not null');\n      return;\n    }\n    if (this.channelzEnabled) {\n      this.keepalivesSent += 1;\n    }\n    this.keepaliveTrace(\n      'Sending ping with timeout ' + this.keepaliveTimeoutMs + 'ms'\n    );\n    this.keepaliveTimer = setTimeout(() => {\n      this.keepaliveTimer = null;\n      this.keepaliveTrace('Ping timeout passed without response');\n      this.handleDisconnect();\n    }, this.keepaliveTimeoutMs);\n    this.keepaliveTimer.unref?.();\n    let pingSendError = '';\n    try {\n      const pingSentSuccessfully = this.session.ping(\n        (err: Error | null, duration: number, payload: Buffer) => {\n          this.clearKeepaliveTimeout();\n          if (err) {\n            this.keepaliveTrace('Ping failed with error ' + err.message);\n            this.handleDisconnect();\n          } else {\n            this.keepaliveTrace('Received ping response');\n            this.maybeStartKeepalivePingTimer();\n          }\n        }\n      );\n      if (!pingSentSuccessfully) {\n        pingSendError = 'Ping returned false';\n      }\n    } catch (e) {\n      // grpc/grpc-node#2139\n      pingSendError = (e instanceof Error ? e.message : '') || 'Unknown error';\n    }\n    if (pingSendError) {\n      this.keepaliveTrace('Ping send failed: ' + pingSendError);\n      this.handleDisconnect();\n    }\n  }\n\n  /**\n   * Starts the keepalive ping timer if appropriate. If the timer already ran\n   * out while there were no active requests, instead send a ping immediately.\n   * If the ping timer is already running or a ping is currently in flight,\n   * instead do nothing and wait for them to resolve.\n   */\n  private maybeStartKeepalivePingTimer() {\n    if (!this.canSendPing()) {\n      return;\n    }\n    if (this.pendingSendKeepalivePing) {\n      this.pendingSendKeepalivePing = false;\n      this.maybeSendPing();\n    } else if (!this.keepaliveTimer) {\n      this.keepaliveTrace(\n        'Starting keepalive timer for ' + this.keepaliveTimeMs + 'ms'\n      );\n      this.keepaliveTimer = setTimeout(() => {\n        this.keepaliveTimer = null;\n        this.maybeSendPing();\n      }, this.keepaliveTimeMs);\n      this.keepaliveTimer.unref?.();\n    }\n    /* Otherwise, there is already either a keepalive timer or a ping pending,\n     * wait for those to resolve. */\n  }\n\n  /**\n   * Clears whichever keepalive timeout is currently active, if any.\n   */\n  private clearKeepaliveTimeout() {\n    if (this.keepaliveTimer) {\n      clearTimeout(this.keepaliveTimer);\n      this.keepaliveTimer = null;\n    }\n  }\n\n  private removeActiveCall(call: Http2SubchannelCall) {\n    this.activeCalls.delete(call);\n    if (this.activeCalls.size === 0) {\n      this.session.unref();\n    }\n  }\n\n  private addActiveCall(call: Http2SubchannelCall) {\n    this.activeCalls.add(call);\n    if (this.activeCalls.size === 1) {\n      this.session.ref();\n      if (!this.keepaliveWithoutCalls) {\n        this.maybeStartKeepalivePingTimer();\n      }\n    }\n  }\n\n  createCall(\n    metadata: Metadata,\n    host: string,\n    method: string,\n    listener: SubchannelCallInterceptingListener,\n    subchannelCallStatsTracker: Partial<CallEventTracker>\n  ): Http2SubchannelCall {\n    const headers = metadata.toHttp2Headers();\n    headers[HTTP2_HEADER_AUTHORITY] = host;\n    headers[HTTP2_HEADER_USER_AGENT] = this.userAgent;\n    headers[HTTP2_HEADER_CONTENT_TYPE] = 'application/grpc';\n    headers[HTTP2_HEADER_METHOD] = 'POST';\n    headers[HTTP2_HEADER_PATH] = method;\n    headers[HTTP2_HEADER_TE] = 'trailers';\n    let http2Stream: http2.ClientHttp2Stream;\n    /* In theory, if an error is thrown by session.request because session has\n     * become unusable (e.g. because it has received a goaway), this subchannel\n     * should soon see the corresponding close or goaway event anyway and leave\n     * READY. But we have seen reports that this does not happen\n     * (https://github.com/googleapis/nodejs-firestore/issues/1023#issuecomment-653204096)\n     * so for defense in depth, we just discard the session when we see an\n     * error here.\n     */\n    try {\n      http2Stream = this.session.request(headers);\n    } catch (e) {\n      this.handleDisconnect();\n      throw e;\n    }\n    this.flowControlTrace(\n      'local window size: ' +\n        this.session.state.localWindowSize +\n        ' remote window size: ' +\n        this.session.state.remoteWindowSize\n    );\n    this.internalsTrace(\n      'session.closed=' +\n        this.session.closed +\n        ' session.destroyed=' +\n        this.session.destroyed +\n        ' session.socket.destroyed=' +\n        this.session.socket.destroyed\n    );\n    let eventTracker: CallEventTracker;\n    // eslint-disable-next-line prefer-const\n    let call: Http2SubchannelCall;\n    if (this.channelzEnabled) {\n      this.streamTracker.addCallStarted();\n      eventTracker = {\n        addMessageSent: () => {\n          this.messagesSent += 1;\n          this.lastMessageSentTimestamp = new Date();\n          subchannelCallStatsTracker.addMessageSent?.();\n        },\n        addMessageReceived: () => {\n          this.messagesReceived += 1;\n          this.lastMessageReceivedTimestamp = new Date();\n          subchannelCallStatsTracker.addMessageReceived?.();\n        },\n        onCallEnd: status => {\n          subchannelCallStatsTracker.onCallEnd?.(status);\n          this.removeActiveCall(call);\n        },\n        onStreamEnd: success => {\n          if (success) {\n            this.streamTracker.addCallSucceeded();\n          } else {\n            this.streamTracker.addCallFailed();\n          }\n          subchannelCallStatsTracker.onStreamEnd?.(success);\n        },\n      };\n    } else {\n      eventTracker = {\n        addMessageSent: () => {\n          subchannelCallStatsTracker.addMessageSent?.();\n        },\n        addMessageReceived: () => {\n          subchannelCallStatsTracker.addMessageReceived?.();\n        },\n        onCallEnd: status => {\n          subchannelCallStatsTracker.onCallEnd?.(status);\n          this.removeActiveCall(call);\n        },\n        onStreamEnd: success => {\n          subchannelCallStatsTracker.onStreamEnd?.(success);\n        },\n      };\n    }\n    call = new Http2SubchannelCall(\n      http2Stream,\n      eventTracker,\n      listener,\n      this,\n      getNextCallNumber()\n    );\n    this.addActiveCall(call);\n    return call;\n  }\n\n  getChannelzRef(): SocketRef {\n    return this.channelzRef;\n  }\n\n  getPeerName() {\n    return this.subchannelAddressString;\n  }\n\n  getOptions() {\n    return this.options;\n  }\n\n  getAuthContext(): AuthContext {\n    return this.authContext;\n  }\n\n  shutdown() {\n    this.session.close();\n    unregisterChannelzRef(this.channelzRef);\n  }\n}\n\nexport interface SubchannelConnector {\n  connect(\n    address: SubchannelAddress,\n    secureConnector: SecureConnector,\n    options: ChannelOptions\n  ): Promise<Transport>;\n  shutdown(): void;\n}\n\nexport class Http2SubchannelConnector implements SubchannelConnector {\n  private session: http2.ClientHttp2Session | null = null;\n  private isShutdown = false;\n  constructor(private channelTarget: GrpcUri) {}\n\n  private trace(text: string) {\n    logging.trace(\n      LogVerbosity.DEBUG,\n      TRACER_NAME,\n      uriToString(this.channelTarget) + ' ' + text\n    );\n  }\n\n  private createSession(\n    secureConnectResult: SecureConnectResult,\n    address: SubchannelAddress,\n    options: ChannelOptions\n  ): Promise<Http2Transport> {\n    if (this.isShutdown) {\n      return Promise.reject();\n    }\n\n    if (secureConnectResult.socket.closed) {\n      return Promise.reject('Connection closed before starting HTTP/2 handshake');\n    }\n\n    return new Promise<Http2Transport>((resolve, reject) => {\n      let remoteName: string | null = null;\n      let realTarget: GrpcUri = this.channelTarget;\n      if ('grpc.http_connect_target' in options) {\n        const parsedTarget = parseUri(options['grpc.http_connect_target']!);\n        if (parsedTarget) {\n          realTarget = parsedTarget;\n          remoteName = uriToString(parsedTarget);\n        }\n      }\n      const scheme = secureConnectResult.secure ? 'https' : 'http';\n      const targetPath = getDefaultAuthority(realTarget);\n      const closeHandler = () => {\n        this.session?.destroy();\n        this.session = null;\n        // Leave time for error event to happen before rejecting\n        setImmediate(() => {\n          if (!reportedError) {\n            reportedError = true;\n            reject(`${errorMessage.trim()} (${new Date().toISOString()})`);\n          }\n        });\n      };\n      const errorHandler = (error: Error) => {\n        this.session?.destroy();\n        errorMessage = (error as Error).message;\n        this.trace('connection failed with error ' + errorMessage);\n        if (!reportedError) {\n          reportedError = true;\n          reject(`${errorMessage} (${new Date().toISOString()})`);\n        }\n      };\n      const sessionOptions: http2.ClientSessionOptions = {\n        createConnection: (authority, option) => {\n          return secureConnectResult.socket;\n        },\n        settings: {\n          initialWindowSize:\n            options['grpc-node.flow_control_window'] ??\n            http2.getDefaultSettings?.()?.initialWindowSize ?? 65535,\n        },\n        maxSendHeaderBlockLength: Number.MAX_SAFE_INTEGER,\n        /* By default, set a very large max session memory limit, to effectively\n         * disable enforcement of the limit. Some testing indicates that Node's\n         * behavior degrades badly when this limit is reached, so we solve that\n         * by disabling the check entirely. */\n        maxSessionMemory: options['grpc-node.max_session_memory'] ?? Number.MAX_SAFE_INTEGER\n      };\n      const session = http2.connect(`${scheme}://${targetPath}`, sessionOptions);\n      // Prepare window size configuration for remoteSettings handler\n      const defaultWin = http2.getDefaultSettings?.()?.initialWindowSize ?? 65535; // 65 535 B\n      const connWin = options[\n        'grpc-node.flow_control_window'\n      ] as number | undefined;\n\n      this.session = session;\n      let errorMessage = 'Failed to connect';\n      let reportedError = false;\n      session.unref();\n      session.once('remoteSettings', () => {\n        // Send WINDOW_UPDATE now to avoid 65 KB start-window stall.\n        if (connWin && connWin > defaultWin) {\n          try {\n            // Node \u2265 14.18\n            (session as any).setLocalWindowSize(connWin);\n          } catch {\n            // Older Node: bump by the delta\n            const delta = connWin - (session.state.localWindowSize ?? defaultWin);\n            if (delta > 0) (session as any).incrementWindowSize(delta);\n          }\n        }\n\n        session.removeAllListeners();\n        secureConnectResult.socket.removeListener('close', closeHandler);\n        secureConnectResult.socket.removeListener('error', errorHandler);\n        resolve(new Http2Transport(session, address, options, remoteName));\n        this.session = null;\n      });\n      session.once('close', closeHandler);\n      session.once('error', errorHandler);\n      secureConnectResult.socket.once('close', closeHandler);\n      secureConnectResult.socket.once('error', errorHandler);\n    });\n  }\n\n  private tcpConnect(address: SubchannelAddress, options: ChannelOptions): Promise<Socket> {\n    return getProxiedConnection(address, options).then(proxiedSocket => {\n      if (proxiedSocket) {\n        return proxiedSocket;\n      } else {\n        return new Promise<Socket>((resolve, reject) => {\n          const closeCallback = () => {\n            reject(new Error('Socket closed'));\n          };\n          const errorCallback = (error: Error) => {\n            reject(error);\n          }\n          const socket = net.connect(address, () => {\n            socket.removeListener('close', closeCallback);\n            socket.removeListener('error', errorCallback);\n            resolve(socket);\n          });\n          socket.once('close', closeCallback);\n          socket.once('error', errorCallback);\n        });\n      }\n    });\n  }\n\n  async connect(\n    address: SubchannelAddress,\n    secureConnector: SecureConnector,\n    options: ChannelOptions\n  ): Promise<Http2Transport> {\n    if (this.isShutdown) {\n      return Promise.reject();\n    }\n    let tcpConnection: net.Socket | null = null;\n    let secureConnectResult: SecureConnectResult | null  = null;\n    const addressString = subchannelAddressToString(address);\n    try {\n      this.trace(addressString + ' Waiting for secureConnector to be ready');\n      await secureConnector.waitForReady();\n      this.trace(addressString + ' secureConnector is ready');\n      tcpConnection = await this.tcpConnect(address, options);\n      tcpConnection.setNoDelay();\n      this.trace(addressString + ' Established TCP connection');\n      secureConnectResult = await secureConnector.connect(tcpConnection);\n      this.trace(addressString + ' Established secure connection');\n      return this.createSession(secureConnectResult, address, options);\n    } catch (e) {\n      tcpConnection?.destroy();\n      secureConnectResult?.socket.destroy();\n      throw e;\n    }\n  }\n\n  shutdown(): void {\n    this.isShutdown = true;\n    this.session?.close();\n    this.session = null;\n  }\n}\n", "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { ChannelOptions, channelOptionsEqual } from './channel-options';\nimport { Subchannel } from './subchannel';\nimport {\n  SubchannelAddress,\n  subchannelAddressEqual,\n} from './subchannel-address';\nimport { ChannelCredentials } from './channel-credentials';\nimport { GrpcUri, uriToString } from './uri-parser';\nimport { Http2SubchannelConnector } from './transport';\n\n// 10 seconds in milliseconds. This value is arbitrary.\n/**\n * The amount of time in between checks for dropping subchannels that have no\n * other references\n */\nconst REF_CHECK_INTERVAL = 10_000;\n\nexport class SubchannelPool {\n  private pool: {\n    [channelTarget: string]: Array<{\n      subchannelAddress: SubchannelAddress;\n      channelArguments: ChannelOptions;\n      channelCredentials: ChannelCredentials;\n      subchannel: Subchannel;\n    }>;\n  } = Object.create(null);\n\n  /**\n   * A timer of a task performing a periodic subchannel cleanup.\n   */\n  private cleanupTimer: NodeJS.Timeout | null = null;\n\n  /**\n   * A pool of subchannels use for making connections. Subchannels with the\n   * exact same parameters will be reused.\n   */\n  constructor() {}\n\n  /**\n   * Unrefs all unused subchannels and cancels the cleanup task if all\n   * subchannels have been unrefed.\n   */\n  unrefUnusedSubchannels(): void {\n    let allSubchannelsUnrefed = true;\n\n    /* These objects are created with Object.create(null), so they do not\n     * have a prototype, which means that for (... in ...) loops over them\n     * do not need to be filtered */\n    // eslint-disable-disable-next-line:forin\n    for (const channelTarget in this.pool) {\n      const subchannelObjArray = this.pool[channelTarget];\n\n      const refedSubchannels = subchannelObjArray.filter(\n        value => !value.subchannel.unrefIfOneRef()\n      );\n\n      if (refedSubchannels.length > 0) {\n        allSubchannelsUnrefed = false;\n      }\n\n      /* For each subchannel in the pool, try to unref it if it has\n       * exactly one ref (which is the ref from the pool itself). If that\n       * does happen, remove the subchannel from the pool */\n      this.pool[channelTarget] = refedSubchannels;\n    }\n    /* Currently we do not delete keys with empty values. If that results\n     * in significant memory usage we should change it. */\n\n    // Cancel the cleanup task if all subchannels have been unrefed.\n    if (allSubchannelsUnrefed && this.cleanupTimer !== null) {\n      clearInterval(this.cleanupTimer);\n      this.cleanupTimer = null;\n    }\n  }\n\n  /**\n   * Ensures that the cleanup task is spawned.\n   */\n  ensureCleanupTask(): void {\n    if (this.cleanupTimer === null) {\n      this.cleanupTimer = setInterval(() => {\n        this.unrefUnusedSubchannels();\n      }, REF_CHECK_INTERVAL);\n\n      // Unref because this timer should not keep the event loop running.\n      // Call unref only if it exists to address electron/electron#21162\n      this.cleanupTimer.unref?.();\n    }\n  }\n\n  /**\n   * Get a subchannel if one already exists with exactly matching parameters.\n   * Otherwise, create and save a subchannel with those parameters.\n   * @param channelTarget\n   * @param subchannelTarget\n   * @param channelArguments\n   * @param channelCredentials\n   */\n  getOrCreateSubchannel(\n    channelTargetUri: GrpcUri,\n    subchannelTarget: SubchannelAddress,\n    channelArguments: ChannelOptions,\n    channelCredentials: ChannelCredentials\n  ): Subchannel {\n    this.ensureCleanupTask();\n    const channelTarget = uriToString(channelTargetUri);\n    if (channelTarget in this.pool) {\n      const subchannelObjArray = this.pool[channelTarget];\n      for (const subchannelObj of subchannelObjArray) {\n        if (\n          subchannelAddressEqual(\n            subchannelTarget,\n            subchannelObj.subchannelAddress\n          ) &&\n          channelOptionsEqual(\n            channelArguments,\n            subchannelObj.channelArguments\n          ) &&\n          channelCredentials._equals(subchannelObj.channelCredentials)\n        ) {\n          return subchannelObj.subchannel;\n        }\n      }\n    }\n    // If we get here, no matching subchannel was found\n    const subchannel = new Subchannel(\n      channelTargetUri,\n      subchannelTarget,\n      channelArguments,\n      channelCredentials,\n      new Http2SubchannelConnector(channelTargetUri)\n    );\n    if (!(channelTarget in this.pool)) {\n      this.pool[channelTarget] = [];\n    }\n    this.pool[channelTarget].push({\n      subchannelAddress: subchannelTarget,\n      channelArguments,\n      channelCredentials,\n      subchannel,\n    });\n    subchannel.ref();\n    return subchannel;\n  }\n}\n\nconst globalSubchannelPool = new SubchannelPool();\n\n/**\n * Get either the global subchannel pool, or a new subchannel pool.\n * @param global\n */\nexport function getSubchannelPool(global: boolean): SubchannelPool {\n  if (global) {\n    return globalSubchannelPool;\n  } else {\n    return new SubchannelPool();\n  }\n}\n", "/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { CallCredentials } from './call-credentials';\nimport {\n  Call,\n  DeadlineInfoProvider,\n  InterceptingListener,\n  MessageContext,\n  StatusObject,\n} from './call-interface';\nimport { SubchannelCall } from './subchannel-call';\nimport { ConnectivityState } from './connectivity-state';\nimport { LogVerbosity, Status } from './constants';\nimport { Deadline, formatDateDifference, getDeadlineTimeoutString } from './deadline';\nimport { InternalChannel } from './internal-channel';\nimport { Metadata } from './metadata';\nimport { OnCallEnded, PickResultType } from './picker';\nimport { CallConfig } from './resolver';\nimport { splitHostPort } from './uri-parser';\nimport * as logging from './logging';\nimport { restrictControlPlaneStatusCode } from './control-plane-status';\nimport * as http2 from 'http2';\nimport { AuthContext } from './auth-context';\n\nconst TRACER_NAME = 'load_balancing_call';\n\nexport type RpcProgress = 'NOT_STARTED' | 'DROP' | 'REFUSED' | 'PROCESSED';\n\nexport interface StatusObjectWithProgress extends StatusObject {\n  progress: RpcProgress;\n}\n\nexport interface LoadBalancingCallInterceptingListener\n  extends InterceptingListener {\n  onReceiveStatus(status: StatusObjectWithProgress): void;\n}\n\nexport class LoadBalancingCall implements Call, DeadlineInfoProvider {\n  private child: SubchannelCall | null = null;\n  private readPending = false;\n  private pendingMessage: { context: MessageContext; message: Buffer } | null =\n    null;\n  private pendingHalfClose = false;\n  private ended = false;\n  private serviceUrl: string;\n  private metadata: Metadata | null = null;\n  private listener: InterceptingListener | null = null;\n  private onCallEnded: OnCallEnded | null = null;\n  private startTime: Date;\n  private childStartTime: Date | null = null;\n  constructor(\n    private readonly channel: InternalChannel,\n    private readonly callConfig: CallConfig,\n    private readonly methodName: string,\n    private readonly host: string,\n    private readonly credentials: CallCredentials,\n    private readonly deadline: Deadline,\n    private readonly callNumber: number\n  ) {\n    const splitPath: string[] = this.methodName.split('/');\n    let serviceName = '';\n    /* The standard path format is \"/{serviceName}/{methodName}\", so if we split\n     * by '/', the first item should be empty and the second should be the\n     * service name */\n    if (splitPath.length >= 2) {\n      serviceName = splitPath[1];\n    }\n    const hostname = splitHostPort(this.host)?.host ?? 'localhost';\n    /* Currently, call credentials are only allowed on HTTPS connections, so we\n     * can assume that the scheme is \"https\" */\n    this.serviceUrl = `https://${hostname}/${serviceName}`;\n    this.startTime = new Date();\n  }\n  getDeadlineInfo(): string[] {\n    const deadlineInfo: string[] = [];\n    if (this.childStartTime) {\n      if (this.childStartTime > this.startTime) {\n        if (this.metadata?.getOptions().waitForReady) {\n          deadlineInfo.push('wait_for_ready');\n        }\n        deadlineInfo.push(`LB pick: ${formatDateDifference(this.startTime, this.childStartTime)}`);\n      }\n      deadlineInfo.push(...this.child!.getDeadlineInfo());\n      return deadlineInfo;\n    } else {\n      if (this.metadata?.getOptions().waitForReady) {\n        deadlineInfo.push('wait_for_ready');\n      }\n      deadlineInfo.push('Waiting for LB pick');\n    }\n    return deadlineInfo;\n  }\n\n  private trace(text: string): void {\n    logging.trace(\n      LogVerbosity.DEBUG,\n      TRACER_NAME,\n      '[' + this.callNumber + '] ' + text\n    );\n  }\n\n  private outputStatus(status: StatusObject, progress: RpcProgress) {\n    if (!this.ended) {\n      this.ended = true;\n      this.trace(\n        'ended with status: code=' +\n          status.code +\n          ' details=\"' +\n          status.details +\n          '\" start time=' +\n          this.startTime.toISOString()\n      );\n      const finalStatus = { ...status, progress };\n      this.listener?.onReceiveStatus(finalStatus);\n      this.onCallEnded?.(finalStatus.code, finalStatus.details, finalStatus.metadata);\n    }\n  }\n\n  doPick() {\n    if (this.ended) {\n      return;\n    }\n    if (!this.metadata) {\n      throw new Error('doPick called before start');\n    }\n    this.trace('Pick called');\n    const finalMetadata = this.metadata.clone();\n    const pickResult = this.channel.doPick(\n      finalMetadata,\n      this.callConfig.pickInformation\n    );\n    const subchannelString = pickResult.subchannel\n      ? '(' +\n        pickResult.subchannel.getChannelzRef().id +\n        ') ' +\n        pickResult.subchannel.getAddress()\n      : '' + pickResult.subchannel;\n    this.trace(\n      'Pick result: ' +\n        PickResultType[pickResult.pickResultType] +\n        ' subchannel: ' +\n        subchannelString +\n        ' status: ' +\n        pickResult.status?.code +\n        ' ' +\n        pickResult.status?.details\n    );\n    switch (pickResult.pickResultType) {\n      case PickResultType.COMPLETE:\n        const combinedCallCredentials = this.credentials.compose(pickResult.subchannel!.getCallCredentials());\n        combinedCallCredentials\n          .generateMetadata({ method_name: this.methodName, service_url: this.serviceUrl })\n          .then(\n            credsMetadata => {\n              /* If this call was cancelled (e.g. by the deadline) before\n               * metadata generation finished, we shouldn't do anything with\n               * it. */\n              if (this.ended) {\n                this.trace(\n                  'Credentials metadata generation finished after call ended'\n                );\n                return;\n              }\n              finalMetadata.merge(credsMetadata);\n              if (finalMetadata.get('authorization').length > 1) {\n                this.outputStatus(\n                  {\n                    code: Status.INTERNAL,\n                    details:\n                      '\"authorization\" metadata cannot have multiple values',\n                    metadata: new Metadata(),\n                  },\n                  'PROCESSED'\n                );\n              }\n              if (\n                pickResult.subchannel!.getConnectivityState() !==\n                ConnectivityState.READY\n              ) {\n                this.trace(\n                  'Picked subchannel ' +\n                    subchannelString +\n                    ' has state ' +\n                    ConnectivityState[\n                      pickResult.subchannel!.getConnectivityState()\n                    ] +\n                    ' after getting credentials metadata. Retrying pick'\n                );\n                this.doPick();\n                return;\n              }\n\n              if (this.deadline !== Infinity) {\n                finalMetadata.set(\n                  'grpc-timeout',\n                  getDeadlineTimeoutString(this.deadline)\n                );\n              }\n              try {\n                this.child = pickResult\n                  .subchannel!.getRealSubchannel()\n                  .createCall(finalMetadata, this.host, this.methodName, {\n                    onReceiveMetadata: metadata => {\n                      this.trace('Received metadata');\n                      this.listener!.onReceiveMetadata(metadata);\n                    },\n                    onReceiveMessage: message => {\n                      this.trace('Received message');\n                      this.listener!.onReceiveMessage(message);\n                    },\n                    onReceiveStatus: status => {\n                      this.trace('Received status');\n                      if (\n                        status.rstCode ===\n                        http2.constants.NGHTTP2_REFUSED_STREAM\n                      ) {\n                        this.outputStatus(status, 'REFUSED');\n                      } else {\n                        this.outputStatus(status, 'PROCESSED');\n                      }\n                    },\n                  });\n                this.childStartTime = new Date();\n              } catch (error) {\n                this.trace(\n                  'Failed to start call on picked subchannel ' +\n                    subchannelString +\n                    ' with error ' +\n                    (error as Error).message\n                );\n                this.outputStatus(\n                  {\n                    code: Status.INTERNAL,\n                    details:\n                      'Failed to start HTTP/2 stream with error ' +\n                      (error as Error).message,\n                    metadata: new Metadata(),\n                  },\n                  'NOT_STARTED'\n                );\n                return;\n              }\n              pickResult.onCallStarted?.();\n              this.onCallEnded = pickResult.onCallEnded;\n              this.trace(\n                'Created child call [' + this.child.getCallNumber() + ']'\n              );\n              if (this.readPending) {\n                this.child.startRead();\n              }\n              if (this.pendingMessage) {\n                this.child.sendMessageWithContext(\n                  this.pendingMessage.context,\n                  this.pendingMessage.message\n                );\n              }\n              if (this.pendingHalfClose) {\n                this.child.halfClose();\n              }\n            },\n            (error: Error & { code: number }) => {\n              // We assume the error code isn't 0 (Status.OK)\n              const { code, details } = restrictControlPlaneStatusCode(\n                typeof error.code === 'number' ? error.code : Status.UNKNOWN,\n                `Getting metadata from plugin failed with error: ${error.message}`\n              );\n              this.outputStatus(\n                {\n                  code: code,\n                  details: details,\n                  metadata: new Metadata(),\n                },\n                'PROCESSED'\n              );\n            }\n          );\n        break;\n      case PickResultType.DROP:\n        const { code, details } = restrictControlPlaneStatusCode(\n          pickResult.status!.code,\n          pickResult.status!.details\n        );\n        setImmediate(() => {\n          this.outputStatus(\n            { code, details, metadata: pickResult.status!.metadata },\n            'DROP'\n          );\n        });\n        break;\n      case PickResultType.TRANSIENT_FAILURE:\n        if (this.metadata.getOptions().waitForReady) {\n          this.channel.queueCallForPick(this);\n        } else {\n          const { code, details } = restrictControlPlaneStatusCode(\n            pickResult.status!.code,\n            pickResult.status!.details\n          );\n          setImmediate(() => {\n            this.outputStatus(\n              { code, details, metadata: pickResult.status!.metadata },\n              'PROCESSED'\n            );\n          });\n        }\n        break;\n      case PickResultType.QUEUE:\n        this.channel.queueCallForPick(this);\n    }\n  }\n\n  cancelWithStatus(status: Status, details: string): void {\n    this.trace(\n      'cancelWithStatus code: ' + status + ' details: \"' + details + '\"'\n    );\n    this.child?.cancelWithStatus(status, details);\n    this.outputStatus(\n      { code: status, details: details, metadata: new Metadata() },\n      'PROCESSED'\n    );\n  }\n  getPeer(): string {\n    return this.child?.getPeer() ?? this.channel.getTarget();\n  }\n  start(\n    metadata: Metadata,\n    listener: LoadBalancingCallInterceptingListener\n  ): void {\n    this.trace('start called');\n    this.listener = listener;\n    this.metadata = metadata;\n    this.doPick();\n  }\n  sendMessageWithContext(context: MessageContext, message: Buffer): void {\n    this.trace('write() called with message of length ' + message.length);\n    if (this.child) {\n      this.child.sendMessageWithContext(context, message);\n    } else {\n      this.pendingMessage = { context, message };\n    }\n  }\n  startRead(): void {\n    this.trace('startRead called');\n    if (this.child) {\n      this.child.startRead();\n    } else {\n      this.readPending = true;\n    }\n  }\n  halfClose(): void {\n    this.trace('halfClose called');\n    if (this.child) {\n      this.child.halfClose();\n    } else {\n      this.pendingHalfClose = true;\n    }\n  }\n  setCredentials(credentials: CallCredentials): void {\n    throw new Error('Method not implemented.');\n  }\n\n  getCallNumber(): number {\n    return this.callNumber;\n  }\n\n  getAuthContext(): AuthContext | null {\n    if (this.child) {\n      return this.child.getAuthContext();\n    } else {\n      return null;\n    }\n  }\n}\n", "/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { CallCredentials } from './call-credentials';\nimport {\n  Call,\n  CallStreamOptions,\n  DeadlineInfoProvider,\n  InterceptingListener,\n  MessageContext,\n  StatusObject,\n} from './call-interface';\nimport { LogVerbosity, Propagate, Status } from './constants';\nimport {\n  Deadline,\n  deadlineToString,\n  formatDateDifference,\n  getRelativeTimeout,\n  minDeadline,\n} from './deadline';\nimport { FilterStack, FilterStackFactory } from './filter-stack';\nimport { InternalChannel } from './internal-channel';\nimport { Metadata } from './metadata';\nimport * as logging from './logging';\nimport { restrictControlPlaneStatusCode } from './control-plane-status';\nimport { AuthContext } from './auth-context';\n\nconst TRACER_NAME = 'resolving_call';\n\nexport class ResolvingCall implements Call {\n  private child: (Call & DeadlineInfoProvider) | null = null;\n  private readPending = false;\n  private pendingMessage: { context: MessageContext; message: Buffer } | null =\n    null;\n  private pendingHalfClose = false;\n  private ended = false;\n  private readFilterPending = false;\n  private writeFilterPending = false;\n  private pendingChildStatus: StatusObject | null = null;\n  private metadata: Metadata | null = null;\n  private listener: InterceptingListener | null = null;\n  private deadline: Deadline;\n  private host: string;\n  private statusWatchers: ((status: StatusObject) => void)[] = [];\n  private deadlineTimer: NodeJS.Timeout = setTimeout(() => {}, 0);\n  private filterStack: FilterStack | null = null;\n\n  private deadlineStartTime: Date | null = null;\n  private configReceivedTime: Date | null = null;\n  private childStartTime: Date | null = null;\n\n  /**\n   * Credentials configured for this specific call. Does not include\n   * call credentials associated with the channel credentials used to create\n   * the channel.\n   */\n  private credentials: CallCredentials = CallCredentials.createEmpty();\n\n  constructor(\n    private readonly channel: InternalChannel,\n    private readonly method: string,\n    options: CallStreamOptions,\n    private readonly filterStackFactory: FilterStackFactory,\n    private callNumber: number\n  ) {\n    this.deadline = options.deadline;\n    this.host = options.host;\n    if (options.parentCall) {\n      if (options.flags & Propagate.CANCELLATION) {\n        options.parentCall.on('cancelled', () => {\n          this.cancelWithStatus(Status.CANCELLED, 'Cancelled by parent call');\n        });\n      }\n      if (options.flags & Propagate.DEADLINE) {\n        this.trace(\n          'Propagating deadline from parent: ' +\n            options.parentCall.getDeadline()\n        );\n        this.deadline = minDeadline(\n          this.deadline,\n          options.parentCall.getDeadline()\n        );\n      }\n    }\n    this.trace('Created');\n    this.runDeadlineTimer();\n  }\n\n  private trace(text: string): void {\n    logging.trace(\n      LogVerbosity.DEBUG,\n      TRACER_NAME,\n      '[' + this.callNumber + '] ' + text\n    );\n  }\n\n  private runDeadlineTimer() {\n    clearTimeout(this.deadlineTimer);\n    this.deadlineStartTime = new Date();\n    this.trace('Deadline: ' + deadlineToString(this.deadline));\n    const timeout = getRelativeTimeout(this.deadline);\n    if (timeout !== Infinity) {\n      this.trace('Deadline will be reached in ' + timeout + 'ms');\n      const handleDeadline = () => {\n        if (!this.deadlineStartTime) {\n          this.cancelWithStatus(Status.DEADLINE_EXCEEDED, 'Deadline exceeded');\n          return;\n        }\n        const deadlineInfo: string[] = [];\n        const deadlineEndTime = new Date();\n        deadlineInfo.push(`Deadline exceeded after ${formatDateDifference(this.deadlineStartTime, deadlineEndTime)}`);\n        if (this.configReceivedTime) {\n          if (this.configReceivedTime > this.deadlineStartTime) {\n            deadlineInfo.push(`name resolution: ${formatDateDifference(this.deadlineStartTime, this.configReceivedTime)}`);\n          }\n          if (this.childStartTime) {\n            if (this.childStartTime > this.configReceivedTime) {\n              deadlineInfo.push(`metadata filters: ${formatDateDifference(this.configReceivedTime, this.childStartTime)}`);\n            }\n          } else {\n            deadlineInfo.push('waiting for metadata filters');\n          }\n        } else {\n          deadlineInfo.push('waiting for name resolution');\n        }\n        if (this.child) {\n          deadlineInfo.push(...this.child.getDeadlineInfo());\n        }\n        this.cancelWithStatus(Status.DEADLINE_EXCEEDED, deadlineInfo.join(','));\n      };\n      if (timeout <= 0) {\n        process.nextTick(handleDeadline);\n      } else {\n        this.deadlineTimer = setTimeout(handleDeadline, timeout);\n      }\n    }\n  }\n\n  private outputStatus(status: StatusObject) {\n    if (!this.ended) {\n      this.ended = true;\n      if (!this.filterStack) {\n        this.filterStack = this.filterStackFactory.createFilter();\n      }\n      clearTimeout(this.deadlineTimer);\n      const filteredStatus = this.filterStack.receiveTrailers(status);\n      this.trace(\n        'ended with status: code=' +\n          filteredStatus.code +\n          ' details=\"' +\n          filteredStatus.details +\n          '\"'\n      );\n      this.statusWatchers.forEach(watcher => watcher(filteredStatus));\n      process.nextTick(() => {\n        this.listener?.onReceiveStatus(filteredStatus);\n      });\n    }\n  }\n\n  private sendMessageOnChild(context: MessageContext, message: Buffer): void {\n    if (!this.child) {\n      throw new Error('sendMessageonChild called with child not populated');\n    }\n    const child = this.child;\n    this.writeFilterPending = true;\n    this.filterStack!.sendMessage(\n      Promise.resolve({ message: message, flags: context.flags })\n    ).then(\n      filteredMessage => {\n        this.writeFilterPending = false;\n        child.sendMessageWithContext(context, filteredMessage.message);\n        if (this.pendingHalfClose) {\n          child.halfClose();\n        }\n      },\n      (status: StatusObject) => {\n        this.cancelWithStatus(status.code, status.details);\n      }\n    );\n  }\n\n  getConfig(): void {\n    if (this.ended) {\n      return;\n    }\n    if (!this.metadata || !this.listener) {\n      throw new Error('getConfig called before start');\n    }\n    const configResult = this.channel.getConfig(this.method, this.metadata);\n    if (configResult.type === 'NONE') {\n      this.channel.queueCallForConfig(this);\n      return;\n    } else if (configResult.type === 'ERROR') {\n      if (this.metadata.getOptions().waitForReady) {\n        this.channel.queueCallForConfig(this);\n      } else {\n        this.outputStatus(configResult.error);\n      }\n      return;\n    }\n    // configResult.type === 'SUCCESS'\n    this.configReceivedTime = new Date();\n    const config = configResult.config;\n    if (config.status !== Status.OK) {\n      const { code, details } = restrictControlPlaneStatusCode(\n        config.status,\n        'Failed to route call to method ' + this.method\n      );\n      this.outputStatus({\n        code: code,\n        details: details,\n        metadata: new Metadata(),\n      });\n      return;\n    }\n\n    if (config.methodConfig.timeout) {\n      const configDeadline = new Date();\n      configDeadline.setSeconds(\n        configDeadline.getSeconds() + config.methodConfig.timeout.seconds\n      );\n      configDeadline.setMilliseconds(\n        configDeadline.getMilliseconds() +\n          config.methodConfig.timeout.nanos / 1_000_000\n      );\n      this.deadline = minDeadline(this.deadline, configDeadline);\n      this.runDeadlineTimer();\n    }\n\n    this.filterStackFactory.push(config.dynamicFilterFactories);\n    this.filterStack = this.filterStackFactory.createFilter();\n    this.filterStack.sendMetadata(Promise.resolve(this.metadata)).then(\n      filteredMetadata => {\n        this.child = this.channel.createRetryingCall(\n          config,\n          this.method,\n          this.host,\n          this.credentials,\n          this.deadline\n        );\n        this.trace('Created child [' + this.child.getCallNumber() + ']');\n        this.childStartTime = new Date();\n        this.child.start(filteredMetadata, {\n          onReceiveMetadata: metadata => {\n            this.trace('Received metadata');\n            this.listener!.onReceiveMetadata(\n              this.filterStack!.receiveMetadata(metadata)\n            );\n          },\n          onReceiveMessage: message => {\n            this.trace('Received message');\n            this.readFilterPending = true;\n            this.filterStack!.receiveMessage(message).then(\n              filteredMesssage => {\n                this.trace('Finished filtering received message');\n                this.readFilterPending = false;\n                this.listener!.onReceiveMessage(filteredMesssage);\n                if (this.pendingChildStatus) {\n                  this.outputStatus(this.pendingChildStatus);\n                }\n              },\n              (status: StatusObject) => {\n                this.cancelWithStatus(status.code, status.details);\n              }\n            );\n          },\n          onReceiveStatus: status => {\n            this.trace('Received status');\n            if (this.readFilterPending) {\n              this.pendingChildStatus = status;\n            } else {\n              this.outputStatus(status);\n            }\n          },\n        });\n        if (this.readPending) {\n          this.child.startRead();\n        }\n        if (this.pendingMessage) {\n          this.sendMessageOnChild(\n            this.pendingMessage.context,\n            this.pendingMessage.message\n          );\n        } else if (this.pendingHalfClose) {\n          this.child.halfClose();\n        }\n      },\n      (status: StatusObject) => {\n        this.outputStatus(status);\n      }\n    );\n  }\n\n  reportResolverError(status: StatusObject) {\n    if (this.metadata?.getOptions().waitForReady) {\n      this.channel.queueCallForConfig(this);\n    } else {\n      this.outputStatus(status);\n    }\n  }\n  cancelWithStatus(status: Status, details: string): void {\n    this.trace(\n      'cancelWithStatus code: ' + status + ' details: \"' + details + '\"'\n    );\n    this.child?.cancelWithStatus(status, details);\n    this.outputStatus({\n      code: status,\n      details: details,\n      metadata: new Metadata(),\n    });\n  }\n  getPeer(): string {\n    return this.child?.getPeer() ?? this.channel.getTarget();\n  }\n  start(metadata: Metadata, listener: InterceptingListener): void {\n    this.trace('start called');\n    this.metadata = metadata.clone();\n    this.listener = listener;\n    this.getConfig();\n  }\n  sendMessageWithContext(context: MessageContext, message: Buffer): void {\n    this.trace('write() called with message of length ' + message.length);\n    if (this.child) {\n      this.sendMessageOnChild(context, message);\n    } else {\n      this.pendingMessage = { context, message };\n    }\n  }\n  startRead(): void {\n    this.trace('startRead called');\n    if (this.child) {\n      this.child.startRead();\n    } else {\n      this.readPending = true;\n    }\n  }\n  halfClose(): void {\n    this.trace('halfClose called');\n    if (this.child && !this.writeFilterPending) {\n      this.child.halfClose();\n    } else {\n      this.pendingHalfClose = true;\n    }\n  }\n  setCredentials(credentials: CallCredentials): void {\n    this.credentials = credentials;\n  }\n\n  addStatusWatcher(watcher: (status: StatusObject) => void) {\n    this.statusWatchers.push(watcher);\n  }\n\n  getCallNumber(): number {\n    return this.callNumber;\n  }\n\n  getAuthContext(): AuthContext | null {\n    if (this.child) {\n      return this.child.getAuthContext();\n    } else {\n      return null;\n    }\n  }\n}\n", "/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { CallCredentials } from './call-credentials';\nimport { LogVerbosity, Status } from './constants';\nimport { Deadline, formatDateDifference } from './deadline';\nimport { Metadata } from './metadata';\nimport { CallConfig } from './resolver';\nimport * as logging from './logging';\nimport {\n  Call,\n  DeadlineInfoProvider,\n  InterceptingListener,\n  MessageContext,\n  StatusObject,\n  WriteCallback,\n  WriteObject,\n} from './call-interface';\nimport {\n  LoadBalancingCall,\n  StatusObjectWithProgress,\n} from './load-balancing-call';\nimport { InternalChannel } from './internal-channel';\nimport { AuthContext } from './auth-context';\n\nconst TRACER_NAME = 'retrying_call';\n\nexport class RetryThrottler {\n  private tokens: number;\n  constructor(\n    private readonly maxTokens: number,\n    private readonly tokenRatio: number,\n    previousRetryThrottler?: RetryThrottler\n  ) {\n    if (previousRetryThrottler) {\n      /* When carrying over tokens from a previous config, rescale them to the\n       * new max value */\n      this.tokens =\n        previousRetryThrottler.tokens *\n        (maxTokens / previousRetryThrottler.maxTokens);\n    } else {\n      this.tokens = maxTokens;\n    }\n  }\n\n  addCallSucceeded() {\n    this.tokens = Math.min(this.tokens + this.tokenRatio, this.maxTokens);\n  }\n\n  addCallFailed() {\n    this.tokens = Math.max(this.tokens - 1, 0);\n  }\n\n  canRetryCall() {\n    return this.tokens > (this.maxTokens / 2);\n  }\n}\n\nexport class MessageBufferTracker {\n  private totalAllocated = 0;\n  private allocatedPerCall: Map<number, number> = new Map<number, number>();\n\n  constructor(private totalLimit: number, private limitPerCall: number) {}\n\n  allocate(size: number, callId: number): boolean {\n    const currentPerCall = this.allocatedPerCall.get(callId) ?? 0;\n    if (\n      this.limitPerCall - currentPerCall < size ||\n      this.totalLimit - this.totalAllocated < size\n    ) {\n      return false;\n    }\n    this.allocatedPerCall.set(callId, currentPerCall + size);\n    this.totalAllocated += size;\n    return true;\n  }\n\n  free(size: number, callId: number) {\n    if (this.totalAllocated < size) {\n      throw new Error(\n        `Invalid buffer allocation state: call ${callId} freed ${size} > total allocated ${this.totalAllocated}`\n      );\n    }\n    this.totalAllocated -= size;\n    const currentPerCall = this.allocatedPerCall.get(callId) ?? 0;\n    if (currentPerCall < size) {\n      throw new Error(\n        `Invalid buffer allocation state: call ${callId} freed ${size} > allocated for call ${currentPerCall}`\n      );\n    }\n    this.allocatedPerCall.set(callId, currentPerCall - size);\n  }\n\n  freeAll(callId: number) {\n    const currentPerCall = this.allocatedPerCall.get(callId) ?? 0;\n    if (this.totalAllocated < currentPerCall) {\n      throw new Error(\n        `Invalid buffer allocation state: call ${callId} allocated ${currentPerCall} > total allocated ${this.totalAllocated}`\n      );\n    }\n    this.totalAllocated -= currentPerCall;\n    this.allocatedPerCall.delete(callId);\n  }\n}\n\ntype UnderlyingCallState = 'ACTIVE' | 'COMPLETED';\n\ninterface UnderlyingCall {\n  state: UnderlyingCallState;\n  call: LoadBalancingCall;\n  nextMessageToSend: number;\n  startTime: Date;\n}\n\n/**\n * A retrying call can be in one of these states:\n * RETRY: Retries are configured and new attempts may be sent\n * HEDGING: Hedging is configured and new attempts may be sent\n * TRANSPARENT_ONLY: Neither retries nor hedging are configured, and\n * transparent retry attempts may still be sent\n * COMMITTED: One attempt is committed, and no new attempts will be\n * sent\n * NO_RETRY: Retries are disabled. Exists to track the transition to COMMITTED\n */\ntype RetryingCallState =\n  | 'RETRY'\n  | 'HEDGING'\n  | 'TRANSPARENT_ONLY'\n  | 'COMMITTED'\n  | 'NO_RETRY';\n\n/**\n * The different types of objects that can be stored in the write buffer, with\n * the following meanings:\n * MESSAGE: This is a message to be sent.\n * HALF_CLOSE: When this entry is reached, the calls should send a half-close.\n * FREED: This slot previously contained a message that has been sent on all\n * child calls and is no longer needed.\n */\ntype WriteBufferEntryType = 'MESSAGE' | 'HALF_CLOSE' | 'FREED';\n\n/**\n * Entry in the buffer of messages to send to the remote end.\n */\ninterface WriteBufferEntry {\n  entryType: WriteBufferEntryType;\n  /**\n   * Message to send.\n   * Only populated if entryType is MESSAGE.\n   */\n  message?: WriteObject;\n  /**\n   * Callback to call after sending the message.\n   * Only populated if entryType is MESSAGE and the call is in the COMMITTED\n   * state.\n   */\n  callback?: WriteCallback;\n  /**\n   * Indicates whether the message is allocated in the buffer tracker. Ignored\n   * if entryType is not MESSAGE. Should be the return value of\n   * bufferTracker.allocate.\n   */\n  allocated: boolean;\n}\n\nconst PREVIONS_RPC_ATTEMPTS_METADATA_KEY = 'grpc-previous-rpc-attempts';\n\nconst DEFAULT_MAX_ATTEMPTS_LIMIT = 5;\n\nexport class RetryingCall implements Call, DeadlineInfoProvider {\n  private state: RetryingCallState;\n  private listener: InterceptingListener | null = null;\n  private initialMetadata: Metadata | null = null;\n  private underlyingCalls: UnderlyingCall[] = [];\n  private writeBuffer: WriteBufferEntry[] = [];\n  /**\n   * The offset of message indices in the writeBuffer. For example, if\n   * writeBufferOffset is 10, message 10 is in writeBuffer[0] and message 15\n   * is in writeBuffer[5].\n   */\n  private writeBufferOffset = 0;\n  /**\n   * Tracks whether a read has been started, so that we know whether to start\n   * reads on new child calls. This only matters for the first read, because\n   * once a message comes in the child call becomes committed and there will\n   * be no new child calls.\n   */\n  private readStarted = false;\n  private transparentRetryUsed = false;\n  /**\n   * Number of attempts so far\n   */\n  private attempts = 0;\n  private hedgingTimer: NodeJS.Timeout | null = null;\n  private committedCallIndex: number | null = null;\n  private initialRetryBackoffSec = 0;\n  private nextRetryBackoffSec = 0;\n  private startTime: Date;\n  private maxAttempts: number;\n  constructor(\n    private readonly channel: InternalChannel,\n    private readonly callConfig: CallConfig,\n    private readonly methodName: string,\n    private readonly host: string,\n    private readonly credentials: CallCredentials,\n    private readonly deadline: Deadline,\n    private readonly callNumber: number,\n    private readonly bufferTracker: MessageBufferTracker,\n    private readonly retryThrottler?: RetryThrottler\n  ) {\n    const maxAttemptsLimit =\n      channel.getOptions()['grpc-node.retry_max_attempts_limit'] ??\n      DEFAULT_MAX_ATTEMPTS_LIMIT;\n    if (channel.getOptions()['grpc.enable_retries'] === 0) {\n      this.state = 'NO_RETRY';\n      this.maxAttempts = 1;\n    } else if (callConfig.methodConfig.retryPolicy) {\n      this.state = 'RETRY';\n      const retryPolicy = callConfig.methodConfig.retryPolicy;\n      this.nextRetryBackoffSec = this.initialRetryBackoffSec = Number(\n        retryPolicy.initialBackoff.substring(\n          0,\n          retryPolicy.initialBackoff.length - 1\n        )\n      );\n      this.maxAttempts = Math.min(retryPolicy.maxAttempts, maxAttemptsLimit);\n    } else if (callConfig.methodConfig.hedgingPolicy) {\n      this.state = 'HEDGING';\n      this.maxAttempts = Math.min(\n        callConfig.methodConfig.hedgingPolicy.maxAttempts,\n        maxAttemptsLimit\n      );\n    } else {\n      this.state = 'TRANSPARENT_ONLY';\n      this.maxAttempts = 1;\n    }\n    this.startTime = new Date();\n  }\n  getDeadlineInfo(): string[] {\n    if (this.underlyingCalls.length === 0) {\n      return [];\n    }\n    const deadlineInfo: string[] = [];\n    const latestCall = this.underlyingCalls[this.underlyingCalls.length - 1];\n    if (this.underlyingCalls.length > 1) {\n      deadlineInfo.push(\n        `previous attempts: ${this.underlyingCalls.length - 1}`\n      );\n    }\n    if (latestCall.startTime > this.startTime) {\n      deadlineInfo.push(\n        `time to current attempt start: ${formatDateDifference(\n          this.startTime,\n          latestCall.startTime\n        )}`\n      );\n    }\n    deadlineInfo.push(...latestCall.call.getDeadlineInfo());\n    return deadlineInfo;\n  }\n  getCallNumber(): number {\n    return this.callNumber;\n  }\n\n  private trace(text: string): void {\n    logging.trace(\n      LogVerbosity.DEBUG,\n      TRACER_NAME,\n      '[' + this.callNumber + '] ' + text\n    );\n  }\n\n  private reportStatus(statusObject: StatusObject) {\n    this.trace(\n      'ended with status: code=' +\n        statusObject.code +\n        ' details=\"' +\n        statusObject.details +\n        '\" start time=' +\n        this.startTime.toISOString()\n    );\n    this.bufferTracker.freeAll(this.callNumber);\n    this.writeBufferOffset = this.writeBufferOffset + this.writeBuffer.length;\n    this.writeBuffer = [];\n    process.nextTick(() => {\n      // Explicitly construct status object to remove progress field\n      this.listener?.onReceiveStatus({\n        code: statusObject.code,\n        details: statusObject.details,\n        metadata: statusObject.metadata,\n      });\n    });\n  }\n\n  cancelWithStatus(status: Status, details: string): void {\n    this.trace(\n      'cancelWithStatus code: ' + status + ' details: \"' + details + '\"'\n    );\n    this.reportStatus({ code: status, details, metadata: new Metadata() });\n    for (const { call } of this.underlyingCalls) {\n      call.cancelWithStatus(status, details);\n    }\n  }\n  getPeer(): string {\n    if (this.committedCallIndex !== null) {\n      return this.underlyingCalls[this.committedCallIndex].call.getPeer();\n    } else {\n      return 'unknown';\n    }\n  }\n\n  private getBufferEntry(messageIndex: number): WriteBufferEntry {\n    return (\n      this.writeBuffer[messageIndex - this.writeBufferOffset] ?? {\n        entryType: 'FREED',\n        allocated: false,\n      }\n    );\n  }\n\n  private getNextBufferIndex() {\n    return this.writeBufferOffset + this.writeBuffer.length;\n  }\n\n  private clearSentMessages() {\n    if (this.state !== 'COMMITTED') {\n      return;\n    }\n    let earliestNeededMessageIndex: number;\n    if (this.underlyingCalls[this.committedCallIndex!].state === 'COMPLETED') {\n      /* If the committed call is completed, clear all messages, even if some\n       * have not been sent. */\n      earliestNeededMessageIndex = this.getNextBufferIndex();\n    } else {\n      earliestNeededMessageIndex =\n        this.underlyingCalls[this.committedCallIndex!].nextMessageToSend;\n    }\n    for (\n      let messageIndex = this.writeBufferOffset;\n      messageIndex < earliestNeededMessageIndex;\n      messageIndex++\n    ) {\n      const bufferEntry = this.getBufferEntry(messageIndex);\n      if (bufferEntry.allocated) {\n        this.bufferTracker.free(\n          bufferEntry.message!.message.length,\n          this.callNumber\n        );\n      }\n    }\n    this.writeBuffer = this.writeBuffer.slice(\n      earliestNeededMessageIndex - this.writeBufferOffset\n    );\n    this.writeBufferOffset = earliestNeededMessageIndex;\n  }\n\n  private commitCall(index: number) {\n    if (this.state === 'COMMITTED') {\n      return;\n    }\n    this.trace(\n      'Committing call [' +\n        this.underlyingCalls[index].call.getCallNumber() +\n        '] at index ' +\n        index\n    );\n    this.state = 'COMMITTED';\n    this.callConfig.onCommitted?.();\n    this.committedCallIndex = index;\n    for (let i = 0; i < this.underlyingCalls.length; i++) {\n      if (i === index) {\n        continue;\n      }\n      if (this.underlyingCalls[i].state === 'COMPLETED') {\n        continue;\n      }\n      this.underlyingCalls[i].state = 'COMPLETED';\n      this.underlyingCalls[i].call.cancelWithStatus(\n        Status.CANCELLED,\n        'Discarded in favor of other hedged attempt'\n      );\n    }\n    this.clearSentMessages();\n  }\n\n  private commitCallWithMostMessages() {\n    if (this.state === 'COMMITTED') {\n      return;\n    }\n    let mostMessages = -1;\n    let callWithMostMessages = -1;\n    for (const [index, childCall] of this.underlyingCalls.entries()) {\n      if (\n        childCall.state === 'ACTIVE' &&\n        childCall.nextMessageToSend > mostMessages\n      ) {\n        mostMessages = childCall.nextMessageToSend;\n        callWithMostMessages = index;\n      }\n    }\n    if (callWithMostMessages === -1) {\n      /* There are no active calls, disable retries to force the next call that\n       * is started to be committed. */\n      this.state = 'TRANSPARENT_ONLY';\n    } else {\n      this.commitCall(callWithMostMessages);\n    }\n  }\n\n  private isStatusCodeInList(list: (Status | string)[], code: Status) {\n    return list.some(\n      value =>\n        value === code ||\n        value.toString().toLowerCase() === Status[code]?.toLowerCase()\n    );\n  }\n\n  private getNextRetryJitter() {\n    /* Jitter of +-20% is applied: https://github.com/grpc/proposal/blob/master/A6-client-retries.md#exponential-backoff */\n    return Math.random() * (1.2 - 0.8) + 0.8;\n  }\n\n  private getNextRetryBackoffMs() {\n    const retryPolicy = this.callConfig?.methodConfig.retryPolicy;\n    if (!retryPolicy) {\n      return 0;\n    }\n    const jitter = this.getNextRetryJitter();\n    const nextBackoffMs = jitter * this.nextRetryBackoffSec * 1000;\n    const maxBackoffSec = Number(\n      retryPolicy.maxBackoff.substring(0, retryPolicy.maxBackoff.length - 1)\n    );\n    this.nextRetryBackoffSec = Math.min(\n      this.nextRetryBackoffSec * retryPolicy.backoffMultiplier,\n      maxBackoffSec\n    );\n    return nextBackoffMs;\n  }\n\n  private maybeRetryCall(\n    pushback: number | null,\n    callback: (retried: boolean) => void\n  ) {\n    if (this.state !== 'RETRY') {\n      callback(false);\n      return;\n    }\n    if (this.attempts >= this.maxAttempts) {\n      callback(false);\n      return;\n    }\n    let retryDelayMs: number;\n    if (pushback === null) {\n      retryDelayMs = this.getNextRetryBackoffMs();\n    } else if (pushback < 0) {\n      this.state = 'TRANSPARENT_ONLY';\n      callback(false);\n      return;\n    } else {\n      retryDelayMs = pushback;\n      this.nextRetryBackoffSec = this.initialRetryBackoffSec;\n    }\n    setTimeout(() => {\n      if (this.state !== 'RETRY') {\n        callback(false);\n        return;\n      }\n      if (this.retryThrottler?.canRetryCall() ?? true) {\n        callback(true);\n        this.attempts += 1;\n        this.startNewAttempt();\n      } else {\n        this.trace('Retry attempt denied by throttling policy');\n        callback(false);\n      }\n    }, retryDelayMs);\n  }\n\n  private countActiveCalls(): number {\n    let count = 0;\n    for (const call of this.underlyingCalls) {\n      if (call?.state === 'ACTIVE') {\n        count += 1;\n      }\n    }\n    return count;\n  }\n\n  private handleProcessedStatus(\n    status: StatusObject,\n    callIndex: number,\n    pushback: number | null\n  ) {\n    switch (this.state) {\n      case 'COMMITTED':\n      case 'NO_RETRY':\n      case 'TRANSPARENT_ONLY':\n        this.commitCall(callIndex);\n        this.reportStatus(status);\n        break;\n      case 'HEDGING':\n        if (\n          this.isStatusCodeInList(\n            this.callConfig!.methodConfig.hedgingPolicy!.nonFatalStatusCodes ??\n              [],\n            status.code\n          )\n        ) {\n          this.retryThrottler?.addCallFailed();\n          let delayMs: number;\n          if (pushback === null) {\n            delayMs = 0;\n          } else if (pushback < 0) {\n            this.state = 'TRANSPARENT_ONLY';\n            this.commitCall(callIndex);\n            this.reportStatus(status);\n            return;\n          } else {\n            delayMs = pushback;\n          }\n          setTimeout(() => {\n            this.maybeStartHedgingAttempt();\n            // If after trying to start a call there are no active calls, this was the last one\n            if (this.countActiveCalls() === 0) {\n              this.commitCall(callIndex);\n              this.reportStatus(status);\n            }\n          }, delayMs);\n        } else {\n          this.commitCall(callIndex);\n          this.reportStatus(status);\n        }\n        break;\n      case 'RETRY':\n        if (\n          this.isStatusCodeInList(\n            this.callConfig!.methodConfig.retryPolicy!.retryableStatusCodes,\n            status.code\n          )\n        ) {\n          this.retryThrottler?.addCallFailed();\n          this.maybeRetryCall(pushback, retried => {\n            if (!retried) {\n              this.commitCall(callIndex);\n              this.reportStatus(status);\n            }\n          });\n        } else {\n          this.commitCall(callIndex);\n          this.reportStatus(status);\n        }\n        break;\n    }\n  }\n\n  private getPushback(metadata: Metadata): number | null {\n    const mdValue = metadata.get('grpc-retry-pushback-ms');\n    if (mdValue.length === 0) {\n      return null;\n    }\n    try {\n      return parseInt(mdValue[0] as string);\n    } catch (e) {\n      return -1;\n    }\n  }\n\n  private handleChildStatus(\n    status: StatusObjectWithProgress,\n    callIndex: number\n  ) {\n    if (this.underlyingCalls[callIndex].state === 'COMPLETED') {\n      return;\n    }\n    this.trace(\n      'state=' +\n        this.state +\n        ' handling status with progress ' +\n        status.progress +\n        ' from child [' +\n        this.underlyingCalls[callIndex].call.getCallNumber() +\n        '] in state ' +\n        this.underlyingCalls[callIndex].state\n    );\n    this.underlyingCalls[callIndex].state = 'COMPLETED';\n    if (status.code === Status.OK) {\n      this.retryThrottler?.addCallSucceeded();\n      this.commitCall(callIndex);\n      this.reportStatus(status);\n      return;\n    }\n    if (this.state === 'NO_RETRY') {\n      this.commitCall(callIndex);\n      this.reportStatus(status);\n      return;\n    }\n    if (this.state === 'COMMITTED') {\n      this.reportStatus(status);\n      return;\n    }\n    const pushback = this.getPushback(status.metadata);\n    switch (status.progress) {\n      case 'NOT_STARTED':\n        // RPC never leaves the client, always safe to retry\n        this.startNewAttempt();\n        break;\n      case 'REFUSED':\n        // RPC reaches the server library, but not the server application logic\n        if (this.transparentRetryUsed) {\n          this.handleProcessedStatus(status, callIndex, pushback);\n        } else {\n          this.transparentRetryUsed = true;\n          this.startNewAttempt();\n        }\n        break;\n      case 'DROP':\n        this.commitCall(callIndex);\n        this.reportStatus(status);\n        break;\n      case 'PROCESSED':\n        this.handleProcessedStatus(status, callIndex, pushback);\n        break;\n    }\n  }\n\n  private maybeStartHedgingAttempt() {\n    if (this.state !== 'HEDGING') {\n      return;\n    }\n    if (!this.callConfig.methodConfig.hedgingPolicy) {\n      return;\n    }\n    if (this.attempts >= this.maxAttempts) {\n      return;\n    }\n    this.attempts += 1;\n    this.startNewAttempt();\n    this.maybeStartHedgingTimer();\n  }\n\n  private maybeStartHedgingTimer() {\n    if (this.hedgingTimer) {\n      clearTimeout(this.hedgingTimer);\n    }\n    if (this.state !== 'HEDGING') {\n      return;\n    }\n    if (!this.callConfig.methodConfig.hedgingPolicy) {\n      return;\n    }\n    const hedgingPolicy = this.callConfig.methodConfig.hedgingPolicy;\n    if (this.attempts >= this.maxAttempts) {\n      return;\n    }\n    const hedgingDelayString = hedgingPolicy.hedgingDelay ?? '0s';\n    const hedgingDelaySec = Number(\n      hedgingDelayString.substring(0, hedgingDelayString.length - 1)\n    );\n    this.hedgingTimer = setTimeout(() => {\n      this.maybeStartHedgingAttempt();\n    }, hedgingDelaySec * 1000);\n    this.hedgingTimer.unref?.();\n  }\n\n  private startNewAttempt() {\n    const child = this.channel.createLoadBalancingCall(\n      this.callConfig,\n      this.methodName,\n      this.host,\n      this.credentials,\n      this.deadline\n    );\n    this.trace(\n      'Created child call [' +\n        child.getCallNumber() +\n        '] for attempt ' +\n        this.attempts\n    );\n    const index = this.underlyingCalls.length;\n    this.underlyingCalls.push({\n      state: 'ACTIVE',\n      call: child,\n      nextMessageToSend: 0,\n      startTime: new Date(),\n    });\n    const previousAttempts = this.attempts - 1;\n    const initialMetadata = this.initialMetadata!.clone();\n    if (previousAttempts > 0) {\n      initialMetadata.set(\n        PREVIONS_RPC_ATTEMPTS_METADATA_KEY,\n        `${previousAttempts}`\n      );\n    }\n    let receivedMetadata = false;\n    child.start(initialMetadata, {\n      onReceiveMetadata: metadata => {\n        this.trace(\n          'Received metadata from child [' + child.getCallNumber() + ']'\n        );\n        this.commitCall(index);\n        receivedMetadata = true;\n        if (previousAttempts > 0) {\n          metadata.set(\n            PREVIONS_RPC_ATTEMPTS_METADATA_KEY,\n            `${previousAttempts}`\n          );\n        }\n        if (this.underlyingCalls[index].state === 'ACTIVE') {\n          this.listener!.onReceiveMetadata(metadata);\n        }\n      },\n      onReceiveMessage: message => {\n        this.trace(\n          'Received message from child [' + child.getCallNumber() + ']'\n        );\n        this.commitCall(index);\n        if (this.underlyingCalls[index].state === 'ACTIVE') {\n          this.listener!.onReceiveMessage(message);\n        }\n      },\n      onReceiveStatus: status => {\n        this.trace(\n          'Received status from child [' + child.getCallNumber() + ']'\n        );\n        if (!receivedMetadata && previousAttempts > 0) {\n          status.metadata.set(\n            PREVIONS_RPC_ATTEMPTS_METADATA_KEY,\n            `${previousAttempts}`\n          );\n        }\n        this.handleChildStatus(status, index);\n      },\n    });\n    this.sendNextChildMessage(index);\n    if (this.readStarted) {\n      child.startRead();\n    }\n  }\n\n  start(metadata: Metadata, listener: InterceptingListener): void {\n    this.trace('start called');\n    this.listener = listener;\n    this.initialMetadata = metadata;\n    this.attempts += 1;\n    this.startNewAttempt();\n    this.maybeStartHedgingTimer();\n  }\n\n  private handleChildWriteCompleted(childIndex: number, messageIndex: number) {\n    this.getBufferEntry(messageIndex).callback?.();\n    this.clearSentMessages();\n    const childCall = this.underlyingCalls[childIndex];\n    childCall.nextMessageToSend += 1;\n    this.sendNextChildMessage(childIndex);\n  }\n\n  private sendNextChildMessage(childIndex: number) {\n    const childCall = this.underlyingCalls[childIndex];\n    if (childCall.state === 'COMPLETED') {\n      return;\n    }\n    const messageIndex = childCall.nextMessageToSend;\n    if (this.getBufferEntry(messageIndex)) {\n      const bufferEntry = this.getBufferEntry(messageIndex);\n      switch (bufferEntry.entryType) {\n        case 'MESSAGE':\n          childCall.call.sendMessageWithContext(\n            {\n              callback: error => {\n                // Ignore error\n                this.handleChildWriteCompleted(childIndex, messageIndex);\n              },\n            },\n            bufferEntry.message!.message\n          );\n          // Optimization: if the next entry is HALF_CLOSE, send it immediately\n          // without waiting for the message callback. This is safe because the message\n          // has already been passed to the underlying transport.\n          const nextEntry = this.getBufferEntry(messageIndex + 1);\n          if (nextEntry.entryType === 'HALF_CLOSE') {\n            this.trace(\n              'Sending halfClose immediately after message to child [' +\n                childCall.call.getCallNumber() +\n                '] - optimizing for unary/final message'\n            );\n            childCall.nextMessageToSend += 1;\n            childCall.call.halfClose();\n          }\n          break;\n        case 'HALF_CLOSE':\n          childCall.nextMessageToSend += 1;\n          childCall.call.halfClose();\n          break;\n        case 'FREED':\n          // Should not be possible\n          break;\n      }\n    }\n  }\n\n  sendMessageWithContext(context: MessageContext, message: Buffer): void {\n    this.trace('write() called with message of length ' + message.length);\n    const writeObj: WriteObject = {\n      message,\n      flags: context.flags,\n    };\n    const messageIndex = this.getNextBufferIndex();\n    const bufferEntry: WriteBufferEntry = {\n      entryType: 'MESSAGE',\n      message: writeObj,\n      allocated: this.bufferTracker.allocate(message.length, this.callNumber),\n    };\n    this.writeBuffer.push(bufferEntry);\n    if (bufferEntry.allocated) {\n      // Run this in next tick to avoid suspending the current execution context\n      // otherwise it might cause half closing the call before sending message\n      process.nextTick(() => {\n        context.callback?.();\n      });\n      for (const [callIndex, call] of this.underlyingCalls.entries()) {\n        if (\n          call.state === 'ACTIVE' &&\n          call.nextMessageToSend === messageIndex\n        ) {\n          call.call.sendMessageWithContext(\n            {\n              callback: error => {\n                // Ignore error\n                this.handleChildWriteCompleted(callIndex, messageIndex);\n              },\n            },\n            message\n          );\n        }\n      }\n    } else {\n      this.commitCallWithMostMessages();\n      // commitCallWithMostMessages can fail if we are between ping attempts\n      if (this.committedCallIndex === null) {\n        return;\n      }\n      const call = this.underlyingCalls[this.committedCallIndex];\n      bufferEntry.callback = context.callback;\n      if (call.state === 'ACTIVE' && call.nextMessageToSend === messageIndex) {\n        call.call.sendMessageWithContext(\n          {\n            callback: error => {\n              // Ignore error\n              this.handleChildWriteCompleted(this.committedCallIndex!, messageIndex);\n            },\n          },\n          message\n        );\n      }\n    }\n  }\n  startRead(): void {\n    this.trace('startRead called');\n    this.readStarted = true;\n    for (const underlyingCall of this.underlyingCalls) {\n      if (underlyingCall?.state === 'ACTIVE') {\n        underlyingCall.call.startRead();\n      }\n    }\n  }\n  halfClose(): void {\n    this.trace('halfClose called');\n    const halfCloseIndex = this.getNextBufferIndex();\n    this.writeBuffer.push({\n      entryType: 'HALF_CLOSE',\n      allocated: false,\n    });\n    for (const call of this.underlyingCalls) {\n      if (call?.state === 'ACTIVE') {\n        // Send halfClose to call when either:\n        // - nextMessageToSend === halfCloseIndex - 1: last message sent, callback pending (optimization)\n        // - nextMessageToSend === halfCloseIndex: all messages sent and acknowledged\n        if (call.nextMessageToSend === halfCloseIndex \n          || call.nextMessageToSend === halfCloseIndex - 1) {\n          this.trace(\n            'Sending halfClose immediately to child [' +\n              call.call.getCallNumber() +\n              '] - all messages already sent'\n          );\n          call.nextMessageToSend += 1;\n          call.call.halfClose();\n        }\n        // Otherwise, halfClose will be sent by sendNextChildMessage when message callbacks complete\n      }\n    }\n  }\n  setCredentials(newCredentials: CallCredentials): void {\n    throw new Error('Method not implemented.');\n  }\n  getMethod(): string {\n    return this.methodName;\n  }\n  getHost(): string {\n    return this.host;\n  }\n  getAuthContext(): AuthContext | null {\n    if (this.committedCallIndex !== null) {\n      return this.underlyingCalls[\n        this.committedCallIndex\n      ].call.getAuthContext();\n    } else {\n      return null;\n    }\n  }\n}", "/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { CallCredentials } from './call-credentials';\nimport { Channel } from './channel';\nimport type { SubchannelRef } from './channelz';\nimport { ConnectivityState } from './connectivity-state';\nimport { Subchannel } from './subchannel';\n\nexport type ConnectivityStateListener = (\n  subchannel: SubchannelInterface,\n  previousState: ConnectivityState,\n  newState: ConnectivityState,\n  keepaliveTime: number,\n  errorMessage?: string\n) => void;\n\nexport type HealthListener = (healthy: boolean) => void;\n\nexport interface DataWatcher {\n  setSubchannel(subchannel: Subchannel): void;\n  destroy(): void;\n}\n\n/**\n * This is an interface for load balancing policies to use to interact with\n * subchannels. This allows load balancing policies to wrap and unwrap\n * subchannels.\n *\n * Any load balancing policy that wraps subchannels must unwrap the subchannel\n * in the picker, so that other load balancing policies consistently have\n * access to their own wrapper objects.\n */\nexport interface SubchannelInterface {\n  getConnectivityState(): ConnectivityState;\n  addConnectivityStateListener(listener: ConnectivityStateListener): void;\n  removeConnectivityStateListener(listener: ConnectivityStateListener): void;\n  startConnecting(): void;\n  getAddress(): string;\n  throttleKeepalive(newKeepaliveTime: number): void;\n  ref(): void;\n  unref(): void;\n  getChannelzRef(): SubchannelRef;\n  isHealthy(): boolean;\n  addHealthStateWatcher(listener: HealthListener): void;\n  removeHealthStateWatcher(listener: HealthListener): void;\n  addDataWatcher(dataWatcher: DataWatcher): void;\n  /**\n   * If this is a wrapper, return the wrapped subchannel, otherwise return this\n   */\n  getRealSubchannel(): Subchannel;\n  /**\n   * Returns true if this and other both proxy the same underlying subchannel.\n   * Can be used instead of directly accessing getRealSubchannel to allow mocks\n   * to avoid implementing getRealSubchannel\n   */\n  realSubchannelEquals(other: SubchannelInterface): boolean;\n  /**\n   * Get the call credentials associated with the channel credentials for this\n   * subchannel.\n   */\n  getCallCredentials(): CallCredentials;\n  /**\n   * Get a channel that can be used to make requests with just this\n   */\n  getChannel(): Channel;\n}\n\nexport abstract class BaseSubchannelWrapper implements SubchannelInterface {\n  private healthy = true;\n  private healthListeners: Set<HealthListener> = new Set();\n  private refcount = 0;\n  private dataWatchers: Set<DataWatcher> = new Set();\n  constructor(protected child: SubchannelInterface) {\n    child.addHealthStateWatcher(childHealthy => {\n      /* A change to the child health state only affects this wrapper's overall\n       * health state if this wrapper is reporting healthy. */\n      if (this.healthy) {\n        this.updateHealthListeners();\n      }\n    });\n  }\n\n  private updateHealthListeners(): void {\n    for (const listener of this.healthListeners) {\n      listener(this.isHealthy());\n    }\n  }\n\n  getConnectivityState(): ConnectivityState {\n    return this.child.getConnectivityState();\n  }\n  addConnectivityStateListener(listener: ConnectivityStateListener): void {\n    this.child.addConnectivityStateListener(listener);\n  }\n  removeConnectivityStateListener(listener: ConnectivityStateListener): void {\n    this.child.removeConnectivityStateListener(listener);\n  }\n  startConnecting(): void {\n    this.child.startConnecting();\n  }\n  getAddress(): string {\n    return this.child.getAddress();\n  }\n  throttleKeepalive(newKeepaliveTime: number): void {\n    this.child.throttleKeepalive(newKeepaliveTime);\n  }\n  ref(): void {\n    this.child.ref();\n    this.refcount += 1;\n  }\n  unref(): void {\n    this.child.unref();\n    this.refcount -= 1;\n    if (this.refcount === 0) {\n      this.destroy();\n    }\n  }\n  protected destroy() {\n    for (const watcher of this.dataWatchers) {\n      watcher.destroy();\n    }\n  }\n  getChannelzRef(): SubchannelRef {\n    return this.child.getChannelzRef();\n  }\n  isHealthy(): boolean {\n    return this.healthy && this.child.isHealthy();\n  }\n  addHealthStateWatcher(listener: HealthListener): void {\n    this.healthListeners.add(listener);\n  }\n  removeHealthStateWatcher(listener: HealthListener): void {\n    this.healthListeners.delete(listener);\n  }\n  addDataWatcher(dataWatcher: DataWatcher): void {\n    dataWatcher.setSubchannel(this.getRealSubchannel());\n    this.dataWatchers.add(dataWatcher);\n  }\n  protected setHealthy(healthy: boolean): void {\n    if (healthy !== this.healthy) {\n      this.healthy = healthy;\n      /* A change to this wrapper's health state only affects the overall\n       * reported health state if the child is healthy. */\n      if (this.child.isHealthy()) {\n        this.updateHealthListeners();\n      }\n    }\n  }\n  getRealSubchannel(): Subchannel {\n    return this.child.getRealSubchannel();\n  }\n  realSubchannelEquals(other: SubchannelInterface): boolean {\n    return this.getRealSubchannel() === other.getRealSubchannel();\n  }\n  getCallCredentials(): CallCredentials {\n    return this.child.getCallCredentials();\n  }\n  getChannel(): Channel {\n      return this.child.getChannel();\n  }\n}\n", "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { ChannelCredentials } from './channel-credentials';\nimport { ChannelOptions } from './channel-options';\nimport { ResolvingLoadBalancer } from './resolving-load-balancer';\nimport { SubchannelPool, getSubchannelPool } from './subchannel-pool';\nimport { ChannelControlHelper } from './load-balancer';\nimport { UnavailablePicker, Picker, QueuePicker, PickArgs, PickResult, PickResultType } from './picker';\nimport { Metadata } from './metadata';\nimport { Status, LogVerbosity, Propagate } from './constants';\nimport { FilterStackFactory } from './filter-stack';\nimport { CompressionFilterFactory } from './compression-filter';\nimport {\n  CallConfig,\n  ConfigSelector,\n  getDefaultAuthority,\n  mapUriDefaultScheme,\n} from './resolver';\nimport { trace, isTracerEnabled } from './logging';\nimport { SubchannelAddress } from './subchannel-address';\nimport { mapProxyName } from './http_proxy';\nimport { GrpcUri, parseUri, uriToString } from './uri-parser';\nimport { ServerSurfaceCall } from './server-call';\n\nimport { ConnectivityState } from './connectivity-state';\nimport {\n  ChannelInfo,\n  ChannelRef,\n  ChannelzCallTracker,\n  ChannelzChildrenTracker,\n  ChannelzTrace,\n  registerChannelzChannel,\n  SubchannelRef,\n  unregisterChannelzRef,\n} from './channelz';\nimport { LoadBalancingCall } from './load-balancing-call';\nimport { CallCredentials } from './call-credentials';\nimport { Call, CallStreamOptions, StatusObject } from './call-interface';\nimport { Deadline, deadlineToString } from './deadline';\nimport { ResolvingCall } from './resolving-call';\nimport { getNextCallNumber } from './call-number';\nimport { restrictControlPlaneStatusCode } from './control-plane-status';\nimport {\n  MessageBufferTracker,\n  RetryingCall,\n  RetryThrottler,\n} from './retrying-call';\nimport {\n  BaseSubchannelWrapper,\n  ConnectivityStateListener,\n  SubchannelInterface,\n} from './subchannel-interface';\n\n/**\n * See https://nodejs.org/api/timers.html#timers_setinterval_callback_delay_args\n */\nconst MAX_TIMEOUT_TIME = 2147483647;\n\nconst MIN_IDLE_TIMEOUT_MS = 1000;\n\n// 30 minutes\nconst DEFAULT_IDLE_TIMEOUT_MS = 30 * 60 * 1000;\n\ninterface ConnectivityStateWatcher {\n  currentState: ConnectivityState;\n  timer: NodeJS.Timeout | null;\n  callback: (error?: Error) => void;\n}\n\ninterface NoneConfigResult {\n  type: 'NONE';\n}\n\ninterface SuccessConfigResult {\n  type: 'SUCCESS';\n  config: CallConfig;\n}\n\ninterface ErrorConfigResult {\n  type: 'ERROR';\n  error: StatusObject;\n}\n\ntype GetConfigResult =\n  | NoneConfigResult\n  | SuccessConfigResult\n  | ErrorConfigResult;\n\nconst RETRY_THROTTLER_MAP: Map<string, RetryThrottler> = new Map();\n\nconst DEFAULT_RETRY_BUFFER_SIZE_BYTES = 1 << 24; // 16 MB\nconst DEFAULT_PER_RPC_RETRY_BUFFER_SIZE_BYTES = 1 << 20; // 1 MB\n\nclass ChannelSubchannelWrapper\n  extends BaseSubchannelWrapper\n  implements SubchannelInterface\n{\n  private refCount = 0;\n  private subchannelStateListener: ConnectivityStateListener;\n  constructor(\n    childSubchannel: SubchannelInterface,\n    private channel: InternalChannel\n  ) {\n    super(childSubchannel);\n    this.subchannelStateListener = (\n      subchannel,\n      previousState,\n      newState,\n      keepaliveTime\n    ) => {\n      channel.throttleKeepalive(keepaliveTime);\n    };\n  }\n\n  ref(): void {\n    if (this.refCount === 0) {\n      this.child.addConnectivityStateListener(this.subchannelStateListener);\n      this.channel.addWrappedSubchannel(this);\n    }\n    this.child.ref();\n    this.refCount += 1;\n  }\n\n  unref(): void {\n    this.child.unref();\n    this.refCount -= 1;\n    if (this.refCount <= 0) {\n      this.child.removeConnectivityStateListener(this.subchannelStateListener);\n      this.channel.removeWrappedSubchannel(this);\n    }\n  }\n}\n\nclass ShutdownPicker implements Picker {\n  pick(pickArgs: PickArgs): PickResult {\n    return {\n      pickResultType: PickResultType.DROP,\n      status: {\n        code: Status.UNAVAILABLE,\n        details: 'Channel closed before call started',\n        metadata: new Metadata()\n      },\n      subchannel: null,\n      onCallStarted: null,\n      onCallEnded: null\n    }\n  }\n}\n\nexport const SUBCHANNEL_ARGS_EXCLUDE_KEY_PREFIX = 'grpc.internal.no_subchannel';\nclass ChannelzInfoTracker {\n  readonly trace = new ChannelzTrace();\n  readonly callTracker = new ChannelzCallTracker();\n  readonly childrenTracker = new ChannelzChildrenTracker();\n  state: ConnectivityState = ConnectivityState.IDLE;\n  constructor(private target: string) {}\n\n  getChannelzInfoCallback(): () => ChannelInfo {\n    return () => {\n      return {\n        target: this.target,\n        state: this.state,\n        trace: this.trace,\n        callTracker: this.callTracker,\n        children: this.childrenTracker.getChildLists()\n      };\n    };\n  }\n}\n\nexport class InternalChannel {\n  private readonly resolvingLoadBalancer: ResolvingLoadBalancer;\n  private readonly subchannelPool: SubchannelPool;\n  private connectivityState: ConnectivityState = ConnectivityState.IDLE;\n  private currentPicker: Picker = new UnavailablePicker();\n  /**\n   * Calls queued up to get a call config. Should only be populated before the\n   * first time the resolver returns a result, which includes the ConfigSelector.\n   */\n  private configSelectionQueue: ResolvingCall[] = [];\n  private pickQueue: LoadBalancingCall[] = [];\n  private connectivityStateWatchers: ConnectivityStateWatcher[] = [];\n  private readonly defaultAuthority: string;\n  private readonly filterStackFactory: FilterStackFactory;\n  private readonly target: GrpcUri;\n  /**\n   * This timer does not do anything on its own. Its purpose is to hold the\n   * event loop open while there are any pending calls for the channel that\n   * have not yet been assigned to specific subchannels. In other words,\n   * the invariant is that callRefTimer is reffed if and only if pickQueue\n   * is non-empty. In addition, the timer is null while the state is IDLE or\n   * SHUTDOWN and there are no pending calls.\n   */\n  private callRefTimer: NodeJS.Timeout | null = null;\n  private configSelector: ConfigSelector | null = null;\n  /**\n   * This is the error from the name resolver if it failed most recently. It\n   * is only used to end calls that start while there is no config selector\n   * and the name resolver is in backoff, so it should be nulled if\n   * configSelector becomes set or the channel state becomes anything other\n   * than TRANSIENT_FAILURE.\n   */\n  private currentResolutionError: StatusObject | null = null;\n  private readonly retryBufferTracker: MessageBufferTracker;\n  private keepaliveTime: number;\n  private readonly wrappedSubchannels: Set<ChannelSubchannelWrapper> =\n    new Set();\n\n  private callCount = 0;\n  private idleTimer: NodeJS.Timeout | null = null;\n  private readonly idleTimeoutMs: number;\n  private lastActivityTimestamp: Date;\n\n  // Channelz info\n  private readonly channelzEnabled: boolean = true;\n  private readonly channelzRef: ChannelRef;\n  private readonly channelzInfoTracker: ChannelzInfoTracker;\n\n  /**\n   * Randomly generated ID to be passed to the config selector, for use by\n   * ring_hash in xDS. An integer distributed approximately uniformly between\n   * 0 and MAX_SAFE_INTEGER.\n   */\n  private readonly randomChannelId = Math.floor(\n    Math.random() * Number.MAX_SAFE_INTEGER\n  );\n\n  constructor(\n    target: string,\n    private readonly credentials: ChannelCredentials,\n    private readonly options: ChannelOptions\n  ) {\n    if (typeof target !== 'string') {\n      throw new TypeError('Channel target must be a string');\n    }\n    if (!(credentials instanceof ChannelCredentials)) {\n      throw new TypeError(\n        'Channel credentials must be a ChannelCredentials object'\n      );\n    }\n    if (options) {\n      if (typeof options !== 'object') {\n        throw new TypeError('Channel options must be an object');\n      }\n    }\n    this.channelzInfoTracker = new ChannelzInfoTracker(target);\n    const originalTargetUri = parseUri(target);\n    if (originalTargetUri === null) {\n      throw new Error(`Could not parse target name \"${target}\"`);\n    }\n    /* This ensures that the target has a scheme that is registered with the\n     * resolver */\n    const defaultSchemeMapResult = mapUriDefaultScheme(originalTargetUri);\n    if (defaultSchemeMapResult === null) {\n      throw new Error(\n        `Could not find a default scheme for target name \"${target}\"`\n      );\n    }\n\n    if (this.options['grpc.enable_channelz'] === 0) {\n      this.channelzEnabled = false;\n    }\n\n    this.channelzRef = registerChannelzChannel(\n      target,\n      this.channelzInfoTracker.getChannelzInfoCallback(),\n      this.channelzEnabled\n    );\n    if (this.channelzEnabled) {\n      this.channelzInfoTracker.trace.addTrace('CT_INFO', 'Channel created');\n    }\n\n    if (this.options['grpc.default_authority']) {\n      this.defaultAuthority = this.options['grpc.default_authority'] as string;\n    } else {\n      this.defaultAuthority = getDefaultAuthority(defaultSchemeMapResult);\n    }\n    const proxyMapResult = mapProxyName(defaultSchemeMapResult, options);\n    this.target = proxyMapResult.target;\n    this.options = Object.assign({}, this.options, proxyMapResult.extraOptions);\n\n    /* The global boolean parameter to getSubchannelPool has the inverse meaning to what\n     * the grpc.use_local_subchannel_pool channel option means. */\n    this.subchannelPool = getSubchannelPool(\n      (this.options['grpc.use_local_subchannel_pool'] ?? 0) === 0\n    );\n    this.retryBufferTracker = new MessageBufferTracker(\n      this.options['grpc.retry_buffer_size'] ?? DEFAULT_RETRY_BUFFER_SIZE_BYTES,\n      this.options['grpc.per_rpc_retry_buffer_size'] ??\n        DEFAULT_PER_RPC_RETRY_BUFFER_SIZE_BYTES\n    );\n    this.keepaliveTime = this.options['grpc.keepalive_time_ms'] ?? -1;\n    this.idleTimeoutMs = Math.max(\n      this.options['grpc.client_idle_timeout_ms'] ?? DEFAULT_IDLE_TIMEOUT_MS,\n      MIN_IDLE_TIMEOUT_MS\n    );\n    const channelControlHelper: ChannelControlHelper = {\n      createSubchannel: (\n        subchannelAddress: SubchannelAddress,\n        subchannelArgs: ChannelOptions\n      ) => {\n        const finalSubchannelArgs: ChannelOptions = {};\n        for (const [key, value] of Object.entries(subchannelArgs)) {\n          if (!key.startsWith(SUBCHANNEL_ARGS_EXCLUDE_KEY_PREFIX)) {\n            finalSubchannelArgs[key] = value;\n          }\n        }\n        const subchannel = this.subchannelPool.getOrCreateSubchannel(\n          this.target,\n          subchannelAddress,\n          finalSubchannelArgs,\n          this.credentials\n        );\n        subchannel.throttleKeepalive(this.keepaliveTime);\n        if (this.channelzEnabled) {\n          this.channelzInfoTracker.trace.addTrace(\n            'CT_INFO',\n            'Created subchannel or used existing subchannel',\n            subchannel.getChannelzRef()\n          );\n        }\n        const wrappedSubchannel = new ChannelSubchannelWrapper(\n          subchannel,\n          this\n        );\n        return wrappedSubchannel;\n      },\n      updateState: (connectivityState: ConnectivityState, picker: Picker) => {\n        this.currentPicker = picker;\n        const queueCopy = this.pickQueue.slice();\n        this.pickQueue = [];\n        if (queueCopy.length > 0) {\n          this.callRefTimerUnref();\n        }\n        for (const call of queueCopy) {\n          call.doPick();\n        }\n        this.updateState(connectivityState);\n      },\n      requestReresolution: () => {\n        // This should never be called.\n        throw new Error(\n          'Resolving load balancer should never call requestReresolution'\n        );\n      },\n      addChannelzChild: (child: ChannelRef | SubchannelRef) => {\n        if (this.channelzEnabled) {\n          this.channelzInfoTracker.childrenTracker.refChild(child);\n        }\n      },\n      removeChannelzChild: (child: ChannelRef | SubchannelRef) => {\n        if (this.channelzEnabled) {\n          this.channelzInfoTracker.childrenTracker.unrefChild(child);\n        }\n      },\n    };\n    this.resolvingLoadBalancer = new ResolvingLoadBalancer(\n      this.target,\n      channelControlHelper,\n      this.options,\n      (serviceConfig, configSelector) => {\n        if (serviceConfig.retryThrottling) {\n          RETRY_THROTTLER_MAP.set(\n            this.getTarget(),\n            new RetryThrottler(\n              serviceConfig.retryThrottling.maxTokens,\n              serviceConfig.retryThrottling.tokenRatio,\n              RETRY_THROTTLER_MAP.get(this.getTarget())\n            )\n          );\n        } else {\n          RETRY_THROTTLER_MAP.delete(this.getTarget());\n        }\n        if (this.channelzEnabled) {\n          this.channelzInfoTracker.trace.addTrace(\n            'CT_INFO',\n            'Address resolution succeeded'\n          );\n        }\n        this.configSelector?.unref();\n        this.configSelector = configSelector;\n        this.currentResolutionError = null;\n        /* We process the queue asynchronously to ensure that the corresponding\n         * load balancer update has completed. */\n        process.nextTick(() => {\n          const localQueue = this.configSelectionQueue;\n          this.configSelectionQueue = [];\n          if (localQueue.length > 0) {\n            this.callRefTimerUnref();\n          }\n          for (const call of localQueue) {\n            call.getConfig();\n          }\n        });\n      },\n      status => {\n        if (this.channelzEnabled) {\n          this.channelzInfoTracker.trace.addTrace(\n            'CT_WARNING',\n            'Address resolution failed with code ' +\n              status.code +\n              ' and details \"' +\n              status.details +\n              '\"'\n          );\n        }\n        if (this.configSelectionQueue.length > 0) {\n          this.trace(\n            'Name resolution failed with calls queued for config selection'\n          );\n        }\n        if (this.configSelector === null) {\n          this.currentResolutionError = {\n            ...restrictControlPlaneStatusCode(status.code, status.details),\n            metadata: status.metadata,\n          };\n        }\n        const localQueue = this.configSelectionQueue;\n        this.configSelectionQueue = [];\n        if (localQueue.length > 0) {\n          this.callRefTimerUnref();\n        }\n        for (const call of localQueue) {\n          call.reportResolverError(status);\n        }\n      }\n    );\n    this.filterStackFactory = new FilterStackFactory([\n      new CompressionFilterFactory(this, this.options),\n    ]);\n    this.trace(\n      'Channel constructed with options ' +\n        JSON.stringify(options, undefined, 2)\n    );\n    const error = new Error();\n    if (isTracerEnabled('channel_stacktrace')){\n      trace(\n        LogVerbosity.DEBUG,\n        'channel_stacktrace',\n        '(' +\n          this.channelzRef.id +\n          ') ' +\n          'Channel constructed \\n' +\n          error.stack?.substring(error.stack.indexOf('\\n') + 1)\n      );\n    }\n    this.lastActivityTimestamp = new Date();\n  }\n\n  private trace(text: string, verbosityOverride?: LogVerbosity) {\n    trace(\n      verbosityOverride ?? LogVerbosity.DEBUG,\n      'channel',\n      '(' + this.channelzRef.id + ') ' + uriToString(this.target) + ' ' + text\n    );\n  }\n\n  private callRefTimerRef() {\n    if (!this.callRefTimer) {\n      this.callRefTimer = setInterval(() => {}, MAX_TIMEOUT_TIME)\n    }\n    // If the hasRef function does not exist, always run the code\n    if (!this.callRefTimer.hasRef?.()) {\n      this.trace(\n        'callRefTimer.ref | configSelectionQueue.length=' +\n          this.configSelectionQueue.length +\n          ' pickQueue.length=' +\n          this.pickQueue.length\n      );\n      this.callRefTimer.ref?.();\n    }\n  }\n\n  private callRefTimerUnref() {\n    // If the timer or the hasRef function does not exist, always run the code\n    if (!this.callRefTimer?.hasRef || this.callRefTimer.hasRef()) {\n      this.trace(\n        'callRefTimer.unref | configSelectionQueue.length=' +\n          this.configSelectionQueue.length +\n          ' pickQueue.length=' +\n          this.pickQueue.length\n      );\n      this.callRefTimer?.unref?.();\n    }\n  }\n\n  private removeConnectivityStateWatcher(\n    watcherObject: ConnectivityStateWatcher\n  ) {\n    const watcherIndex = this.connectivityStateWatchers.findIndex(\n      value => value === watcherObject\n    );\n    if (watcherIndex >= 0) {\n      this.connectivityStateWatchers.splice(watcherIndex, 1);\n    }\n  }\n\n  private updateState(newState: ConnectivityState): void {\n    trace(\n      LogVerbosity.DEBUG,\n      'connectivity_state',\n      '(' +\n        this.channelzRef.id +\n        ') ' +\n        uriToString(this.target) +\n        ' ' +\n        ConnectivityState[this.connectivityState] +\n        ' -> ' +\n        ConnectivityState[newState]\n    );\n    if (this.channelzEnabled) {\n      this.channelzInfoTracker.trace.addTrace(\n        'CT_INFO',\n        'Connectivity state change to ' + ConnectivityState[newState]\n      );\n    }\n    this.connectivityState = newState;\n    this.channelzInfoTracker.state = newState;\n    const watchersCopy = this.connectivityStateWatchers.slice();\n    for (const watcherObject of watchersCopy) {\n      if (newState !== watcherObject.currentState) {\n        if (watcherObject.timer) {\n          clearTimeout(watcherObject.timer);\n        }\n        this.removeConnectivityStateWatcher(watcherObject);\n        watcherObject.callback();\n      }\n    }\n    if (newState !== ConnectivityState.TRANSIENT_FAILURE) {\n      this.currentResolutionError = null;\n    }\n  }\n\n  throttleKeepalive(newKeepaliveTime: number) {\n    if (newKeepaliveTime > this.keepaliveTime) {\n      this.keepaliveTime = newKeepaliveTime;\n      for (const wrappedSubchannel of this.wrappedSubchannels) {\n        wrappedSubchannel.throttleKeepalive(newKeepaliveTime);\n      }\n    }\n  }\n\n  addWrappedSubchannel(wrappedSubchannel: ChannelSubchannelWrapper) {\n    this.wrappedSubchannels.add(wrappedSubchannel);\n  }\n\n  removeWrappedSubchannel(wrappedSubchannel: ChannelSubchannelWrapper) {\n    this.wrappedSubchannels.delete(wrappedSubchannel);\n  }\n\n  doPick(metadata: Metadata, extraPickInfo: { [key: string]: string }) {\n    return this.currentPicker.pick({\n      metadata: metadata,\n      extraPickInfo: extraPickInfo,\n    });\n  }\n\n  queueCallForPick(call: LoadBalancingCall) {\n    this.pickQueue.push(call);\n    this.callRefTimerRef();\n  }\n\n  getConfig(method: string, metadata: Metadata): GetConfigResult {\n    if (this.connectivityState !== ConnectivityState.SHUTDOWN) {\n      this.resolvingLoadBalancer.exitIdle();\n    }\n    if (this.configSelector) {\n      return {\n        type: 'SUCCESS',\n        config: this.configSelector.invoke(method, metadata, this.randomChannelId),\n      };\n    } else {\n      if (this.currentResolutionError) {\n        return {\n          type: 'ERROR',\n          error: this.currentResolutionError,\n        };\n      } else {\n        return {\n          type: 'NONE',\n        };\n      }\n    }\n  }\n\n  queueCallForConfig(call: ResolvingCall) {\n    this.configSelectionQueue.push(call);\n    this.callRefTimerRef();\n  }\n\n  private enterIdle() {\n    this.resolvingLoadBalancer.destroy();\n    this.updateState(ConnectivityState.IDLE);\n    this.currentPicker = new QueuePicker(this.resolvingLoadBalancer);\n    if (this.idleTimer) {\n      clearTimeout(this.idleTimer);\n      this.idleTimer = null;\n    }\n    if (this.callRefTimer) {\n      clearInterval(this.callRefTimer);\n      this.callRefTimer = null;\n    }\n  }\n\n  private startIdleTimeout(timeoutMs: number) {\n    this.idleTimer = setTimeout(() => {\n      if (this.callCount > 0) {\n        /* If there is currently a call, the channel will not go idle for a\n         * period of at least idleTimeoutMs, so check again after that time.\n         */\n        this.startIdleTimeout(this.idleTimeoutMs);\n        return;\n      }\n      const now = new Date();\n      const timeSinceLastActivity =\n        now.valueOf() - this.lastActivityTimestamp.valueOf();\n      if (timeSinceLastActivity >= this.idleTimeoutMs) {\n        this.trace(\n          'Idle timer triggered after ' +\n            this.idleTimeoutMs +\n            'ms of inactivity'\n        );\n        this.enterIdle();\n      } else {\n        /* Whenever the timer fires with the latest activity being too recent,\n         * set the timer again for the time when the time since the last\n         * activity is equal to the timeout. This should result in the timer\n         * firing no more than once every idleTimeoutMs/2 on average. */\n        this.startIdleTimeout(this.idleTimeoutMs - timeSinceLastActivity);\n      }\n    }, timeoutMs);\n    this.idleTimer.unref?.();\n  }\n\n  private maybeStartIdleTimer() {\n    if (\n      this.connectivityState !== ConnectivityState.SHUTDOWN &&\n      !this.idleTimer\n    ) {\n      this.startIdleTimeout(this.idleTimeoutMs);\n    }\n  }\n\n  private onCallStart() {\n    if (this.channelzEnabled) {\n      this.channelzInfoTracker.callTracker.addCallStarted();\n    }\n    this.callCount += 1;\n  }\n\n  private onCallEnd(status: StatusObject) {\n    if (this.channelzEnabled) {\n      if (status.code === Status.OK) {\n        this.channelzInfoTracker.callTracker.addCallSucceeded();\n      } else {\n        this.channelzInfoTracker.callTracker.addCallFailed();\n      }\n    }\n    this.callCount -= 1;\n    this.lastActivityTimestamp = new Date();\n    this.maybeStartIdleTimer();\n  }\n\n  createLoadBalancingCall(\n    callConfig: CallConfig,\n    method: string,\n    host: string,\n    credentials: CallCredentials,\n    deadline: Deadline\n  ): LoadBalancingCall {\n    const callNumber = getNextCallNumber();\n    this.trace(\n      'createLoadBalancingCall [' + callNumber + '] method=\"' + method + '\"'\n    );\n    return new LoadBalancingCall(\n      this,\n      callConfig,\n      method,\n      host,\n      credentials,\n      deadline,\n      callNumber\n    );\n  }\n\n  createRetryingCall(\n    callConfig: CallConfig,\n    method: string,\n    host: string,\n    credentials: CallCredentials,\n    deadline: Deadline\n  ): RetryingCall {\n    const callNumber = getNextCallNumber();\n    this.trace(\n      'createRetryingCall [' + callNumber + '] method=\"' + method + '\"'\n    );\n    return new RetryingCall(\n      this,\n      callConfig,\n      method,\n      host,\n      credentials,\n      deadline,\n      callNumber,\n      this.retryBufferTracker,\n      RETRY_THROTTLER_MAP.get(this.getTarget())\n    );\n  }\n\n  createResolvingCall(\n    method: string,\n    deadline: Deadline,\n    host: string | null | undefined,\n    parentCall: ServerSurfaceCall | null,\n    propagateFlags: number | null | undefined\n  ): ResolvingCall {\n    const callNumber = getNextCallNumber();\n    this.trace(\n      'createResolvingCall [' +\n        callNumber +\n        '] method=\"' +\n        method +\n        '\", deadline=' +\n        deadlineToString(deadline)\n    );\n    const finalOptions: CallStreamOptions = {\n      deadline: deadline,\n      flags: propagateFlags ?? Propagate.DEFAULTS,\n      host: host ?? this.defaultAuthority,\n      parentCall: parentCall,\n    };\n\n    const call = new ResolvingCall(\n      this,\n      method,\n      finalOptions,\n      this.filterStackFactory.clone(),\n      callNumber\n    );\n\n    this.onCallStart();\n    call.addStatusWatcher(status => {\n      this.onCallEnd(status);\n    });\n    return call;\n  }\n\n  close() {\n    this.resolvingLoadBalancer.destroy();\n    this.updateState(ConnectivityState.SHUTDOWN);\n    this.currentPicker = new ShutdownPicker();\n    for (const call of this.configSelectionQueue) {\n      call.cancelWithStatus(Status.UNAVAILABLE, 'Channel closed before call started');\n    }\n    this.configSelectionQueue = [];\n    for (const call of this.pickQueue) {\n      call.cancelWithStatus(Status.UNAVAILABLE, 'Channel closed before call started');\n    }\n    this.pickQueue = [];\n    if (this.callRefTimer) {\n      clearInterval(this.callRefTimer);\n    }\n    if (this.idleTimer) {\n      clearTimeout(this.idleTimer);\n    }\n    if (this.channelzEnabled) {\n      unregisterChannelzRef(this.channelzRef);\n    }\n\n    this.subchannelPool.unrefUnusedSubchannels();\n    this.configSelector?.unref();\n    this.configSelector = null;\n  }\n\n  getTarget() {\n    return uriToString(this.target);\n  }\n\n  getConnectivityState(tryToConnect: boolean) {\n    const connectivityState = this.connectivityState;\n    if (tryToConnect) {\n      this.resolvingLoadBalancer.exitIdle();\n      this.lastActivityTimestamp = new Date();\n      this.maybeStartIdleTimer();\n    }\n    return connectivityState;\n  }\n\n  watchConnectivityState(\n    currentState: ConnectivityState,\n    deadline: Date | number,\n    callback: (error?: Error) => void\n  ): void {\n    if (this.connectivityState === ConnectivityState.SHUTDOWN) {\n      throw new Error('Channel has been shut down');\n    }\n    let timer = null;\n    if (deadline !== Infinity) {\n      const deadlineDate: Date =\n        deadline instanceof Date ? deadline : new Date(deadline);\n      const now = new Date();\n      if (deadline === -Infinity || deadlineDate <= now) {\n        process.nextTick(\n          callback,\n          new Error('Deadline passed without connectivity state change')\n        );\n        return;\n      }\n      timer = setTimeout(() => {\n        this.removeConnectivityStateWatcher(watcherObject);\n        callback(\n          new Error('Deadline passed without connectivity state change')\n        );\n      }, deadlineDate.getTime() - now.getTime());\n    }\n    const watcherObject = {\n      currentState,\n      callback,\n      timer,\n    };\n    this.connectivityStateWatchers.push(watcherObject);\n  }\n\n  /**\n   * Get the channelz reference object for this channel. The returned value is\n   * garbage if channelz is disabled for this channel.\n   * @returns\n   */\n  getChannelzRef() {\n    return this.channelzRef;\n  }\n\n  createCall(\n    method: string,\n    deadline: Deadline,\n    host: string | null | undefined,\n    parentCall: ServerSurfaceCall | null,\n    propagateFlags: number | null | undefined\n  ): Call {\n    if (typeof method !== 'string') {\n      throw new TypeError('Channel#createCall: method must be a string');\n    }\n    if (!(typeof deadline === 'number' || deadline instanceof Date)) {\n      throw new TypeError(\n        'Channel#createCall: deadline must be a number or Date'\n      );\n    }\n    if (this.connectivityState === ConnectivityState.SHUTDOWN) {\n      throw new Error('Channel has been shut down');\n    }\n    return this.createResolvingCall(\n      method,\n      deadline,\n      host,\n      parentCall,\n      propagateFlags\n    );\n  }\n\n  getOptions() {\n    return this.options;\n  }\n}\n", "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { ChannelCredentials } from './channel-credentials';\nimport { ChannelOptions } from './channel-options';\nimport { ServerSurfaceCall } from './server-call';\n\nimport { ConnectivityState } from './connectivity-state';\nimport type { ChannelRef } from './channelz';\nimport { Call } from './call-interface';\nimport { InternalChannel } from './internal-channel';\nimport { Deadline } from './deadline';\n\n/**\n * An interface that represents a communication channel to a server specified\n * by a given address.\n */\nexport interface Channel {\n  /**\n   * Close the channel. This has the same functionality as the existing\n   * grpc.Client.prototype.close\n   */\n  close(): void;\n  /**\n   * Return the target that this channel connects to\n   */\n  getTarget(): string;\n  /**\n   * Get the channel's current connectivity state. This method is here mainly\n   * because it is in the existing internal Channel class, and there isn't\n   * another good place to put it.\n   * @param tryToConnect If true, the channel will start connecting if it is\n   *     idle. Otherwise, idle channels will only start connecting when a\n   *     call starts.\n   */\n  getConnectivityState(tryToConnect: boolean): ConnectivityState;\n  /**\n   * Watch for connectivity state changes. This is also here mainly because\n   * it is in the existing external Channel class.\n   * @param currentState The state to watch for transitions from. This should\n   *     always be populated by calling getConnectivityState immediately\n   *     before.\n   * @param deadline A deadline for waiting for a state change\n   * @param callback Called with no error when a state change, or with an\n   *     error if the deadline passes without a state change.\n   */\n  watchConnectivityState(\n    currentState: ConnectivityState,\n    deadline: Date | number,\n    callback: (error?: Error) => void\n  ): void;\n  /**\n   * Get the channelz reference object for this channel. A request to the\n   * channelz service for the id in this object will provide information\n   * about this channel.\n   */\n  getChannelzRef(): ChannelRef;\n  /**\n   * Create a call object. Call is an opaque type that is used by the Client\n   * class. This function is called by the gRPC library when starting a\n   * request. Implementers should return an instance of Call that is returned\n   * from calling createCall on an instance of the provided Channel class.\n   * @param method The full method string to request.\n   * @param deadline The call deadline\n   * @param host A host string override for making the request\n   * @param parentCall A server call to propagate some information from\n   * @param propagateFlags A bitwise combination of elements of grpc.propagate\n   *     that indicates what information to propagate from parentCall.\n   */\n  createCall(\n    method: string,\n    deadline: Deadline,\n    host: string | null | undefined,\n    parentCall: ServerSurfaceCall | null,\n    propagateFlags: number | null | undefined\n  ): Call;\n}\n\nexport class ChannelImplementation implements Channel {\n  private internalChannel: InternalChannel;\n\n  constructor(\n    target: string,\n    credentials: ChannelCredentials,\n    options: ChannelOptions\n  ) {\n    if (typeof target !== 'string') {\n      throw new TypeError('Channel target must be a string');\n    }\n    if (!(credentials instanceof ChannelCredentials)) {\n      throw new TypeError(\n        'Channel credentials must be a ChannelCredentials object'\n      );\n    }\n    if (options) {\n      if (typeof options !== 'object') {\n        throw new TypeError('Channel options must be an object');\n      }\n    }\n\n    this.internalChannel = new InternalChannel(target, credentials, options);\n  }\n\n  close() {\n    this.internalChannel.close();\n  }\n\n  getTarget() {\n    return this.internalChannel.getTarget();\n  }\n\n  getConnectivityState(tryToConnect: boolean) {\n    return this.internalChannel.getConnectivityState(tryToConnect);\n  }\n\n  watchConnectivityState(\n    currentState: ConnectivityState,\n    deadline: Date | number,\n    callback: (error?: Error) => void\n  ): void {\n    this.internalChannel.watchConnectivityState(\n      currentState,\n      deadline,\n      callback\n    );\n  }\n\n  /**\n   * Get the channelz reference object for this channel. The returned value is\n   * garbage if channelz is disabled for this channel.\n   * @returns\n   */\n  getChannelzRef() {\n    return this.internalChannel.getChannelzRef();\n  }\n\n  createCall(\n    method: string,\n    deadline: Deadline,\n    host: string | null | undefined,\n    parentCall: ServerSurfaceCall | null,\n    propagateFlags: number | null | undefined\n  ): Call {\n    if (typeof method !== 'string') {\n      throw new TypeError('Channel#createCall: method must be a string');\n    }\n    if (!(typeof deadline === 'number' || deadline instanceof Date)) {\n      throw new TypeError(\n        'Channel#createCall: deadline must be a number or Date'\n      );\n    }\n    return this.internalChannel.createCall(\n      method,\n      deadline,\n      host,\n      parentCall,\n      propagateFlags\n    );\n  }\n}\n", "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { EventEmitter } from 'events';\nimport { Duplex, Readable, Writable } from 'stream';\n\nimport { Status } from './constants';\nimport type { Deserialize, Serialize } from './make-client';\nimport { Metadata } from './metadata';\nimport type { ObjectReadable, ObjectWritable } from './object-stream';\nimport type { StatusObject, PartialStatusObject } from './call-interface';\nimport type { Deadline } from './deadline';\nimport type { ServerInterceptingCallInterface } from './server-interceptors';\nimport { AuthContext } from './auth-context';\nimport { PerRequestMetricRecorder } from './orca';\n\nexport type ServerStatusResponse = Partial<StatusObject>;\n\nexport type ServerErrorResponse = ServerStatusResponse & Error;\n\nexport type ServerSurfaceCall = {\n  cancelled: boolean;\n  readonly metadata: Metadata;\n  getPeer(): string;\n  sendMetadata(responseMetadata: Metadata): void;\n  getDeadline(): Deadline;\n  getPath(): string;\n  getHost(): string;\n  getAuthContext(): AuthContext;\n  getMetricsRecorder(): PerRequestMetricRecorder;\n} & EventEmitter;\n\nexport type ServerUnaryCall<RequestType, ResponseType> = ServerSurfaceCall & {\n  request: RequestType;\n};\nexport type ServerReadableStream<RequestType, ResponseType> =\n  ServerSurfaceCall & ObjectReadable<RequestType>;\nexport type ServerWritableStream<RequestType, ResponseType> =\n  ServerSurfaceCall &\n    ObjectWritable<ResponseType> & {\n      request: RequestType;\n      end: (metadata?: Metadata) => void;\n    };\nexport type ServerDuplexStream<RequestType, ResponseType> = ServerSurfaceCall &\n  ObjectReadable<RequestType> &\n  ObjectWritable<ResponseType> & { end: (metadata?: Metadata) => void };\n\nexport function serverErrorToStatus(\n  error: ServerErrorResponse | ServerStatusResponse,\n  overrideTrailers?: Metadata | undefined\n): PartialStatusObject {\n  const status: PartialStatusObject = {\n    code: Status.UNKNOWN,\n    details: 'message' in error ? error.message : 'Unknown Error',\n    metadata: overrideTrailers ?? error.metadata ?? null,\n  };\n\n  if (\n    'code' in error &&\n    typeof error.code === 'number' &&\n    Number.isInteger(error.code)\n  ) {\n    status.code = error.code;\n\n    if ('details' in error && typeof error.details === 'string') {\n      status.details = error.details!;\n    }\n  }\n  return status;\n}\n\nexport class ServerUnaryCallImpl<RequestType, ResponseType>\n  extends EventEmitter\n  implements ServerUnaryCall<RequestType, ResponseType>\n{\n  cancelled: boolean;\n\n  constructor(\n    private path: string,\n    private call: ServerInterceptingCallInterface,\n    public metadata: Metadata,\n    public request: RequestType\n  ) {\n    super();\n    this.cancelled = false;\n  }\n\n  getPeer(): string {\n    return this.call.getPeer();\n  }\n\n  sendMetadata(responseMetadata: Metadata): void {\n    this.call.sendMetadata(responseMetadata);\n  }\n\n  getDeadline(): Deadline {\n    return this.call.getDeadline();\n  }\n\n  getPath(): string {\n    return this.path;\n  }\n\n  getHost(): string {\n    return this.call.getHost();\n  }\n\n  getAuthContext(): AuthContext {\n    return this.call.getAuthContext();\n  }\n\n  getMetricsRecorder(): PerRequestMetricRecorder {\n    return this.call.getMetricsRecorder();\n  }\n}\n\nexport class ServerReadableStreamImpl<RequestType, ResponseType>\n  extends Readable\n  implements ServerReadableStream<RequestType, ResponseType>\n{\n  cancelled: boolean;\n\n  constructor(\n    private path: string,\n    private call: ServerInterceptingCallInterface,\n    public metadata: Metadata\n  ) {\n    super({ objectMode: true });\n    this.cancelled = false;\n  }\n\n  _read(size: number) {\n    this.call.startRead();\n  }\n\n  getPeer(): string {\n    return this.call.getPeer();\n  }\n\n  sendMetadata(responseMetadata: Metadata): void {\n    this.call.sendMetadata(responseMetadata);\n  }\n\n  getDeadline(): Deadline {\n    return this.call.getDeadline();\n  }\n\n  getPath(): string {\n    return this.path;\n  }\n\n  getHost(): string {\n    return this.call.getHost();\n  }\n\n  getAuthContext(): AuthContext {\n    return this.call.getAuthContext();\n  }\n\n  getMetricsRecorder(): PerRequestMetricRecorder {\n    return this.call.getMetricsRecorder();\n  }\n}\n\nexport class ServerWritableStreamImpl<RequestType, ResponseType>\n  extends Writable\n  implements ServerWritableStream<RequestType, ResponseType>\n{\n  cancelled: boolean;\n  private trailingMetadata: Metadata;\n  private pendingStatus: PartialStatusObject = {\n    code: Status.OK,\n    details: 'OK',\n  };\n\n  constructor(\n    private path: string,\n    private call: ServerInterceptingCallInterface,\n    public metadata: Metadata,\n    public request: RequestType\n  ) {\n    super({ objectMode: true });\n    this.cancelled = false;\n    this.trailingMetadata = new Metadata();\n\n    this.on('error', err => {\n      this.pendingStatus = serverErrorToStatus(err);\n      this.end();\n    });\n  }\n\n  getPeer(): string {\n    return this.call.getPeer();\n  }\n\n  sendMetadata(responseMetadata: Metadata): void {\n    this.call.sendMetadata(responseMetadata);\n  }\n\n  getDeadline(): Deadline {\n    return this.call.getDeadline();\n  }\n\n  getPath(): string {\n    return this.path;\n  }\n\n  getHost(): string {\n    return this.call.getHost();\n  }\n\n  getAuthContext(): AuthContext {\n    return this.call.getAuthContext();\n  }\n\n  getMetricsRecorder(): PerRequestMetricRecorder {\n    return this.call.getMetricsRecorder();\n  }\n\n  _write(\n    chunk: ResponseType,\n    encoding: string,\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    callback: (...args: any[]) => void\n  ) {\n    this.call.sendMessage(chunk, callback);\n  }\n\n  _final(callback: Function): void {\n    callback(null);\n    this.call.sendStatus({\n      ...this.pendingStatus,\n      metadata: this.pendingStatus.metadata ?? this.trailingMetadata,\n    });\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  end(metadata?: any) {\n    if (metadata) {\n      this.trailingMetadata = metadata;\n    }\n\n    return super.end();\n  }\n}\n\nexport class ServerDuplexStreamImpl<RequestType, ResponseType>\n  extends Duplex\n  implements ServerDuplexStream<RequestType, ResponseType>\n{\n  cancelled: boolean;\n  private trailingMetadata: Metadata;\n  private pendingStatus: PartialStatusObject = {\n    code: Status.OK,\n    details: 'OK',\n  };\n\n  constructor(\n    private path: string,\n    private call: ServerInterceptingCallInterface,\n    public metadata: Metadata\n  ) {\n    super({ objectMode: true });\n    this.cancelled = false;\n    this.trailingMetadata = new Metadata();\n\n    this.on('error', err => {\n      this.pendingStatus = serverErrorToStatus(err);\n      this.end();\n    });\n  }\n\n  getPeer(): string {\n    return this.call.getPeer();\n  }\n\n  sendMetadata(responseMetadata: Metadata): void {\n    this.call.sendMetadata(responseMetadata);\n  }\n\n  getDeadline(): Deadline {\n    return this.call.getDeadline();\n  }\n\n  getPath(): string {\n    return this.path;\n  }\n\n  getHost(): string {\n    return this.call.getHost();\n  }\n\n  getAuthContext(): AuthContext {\n    return this.call.getAuthContext();\n  }\n\n  getMetricsRecorder(): PerRequestMetricRecorder {\n    return this.call.getMetricsRecorder();\n  }\n\n  _read(size: number) {\n    this.call.startRead();\n  }\n\n  _write(\n    chunk: ResponseType,\n    encoding: string,\n    // eslint-disable-next-line @typescript-eslint/no-explicit-any\n    callback: (...args: any[]) => void\n  ) {\n    this.call.sendMessage(chunk, callback);\n  }\n\n  _final(callback: Function): void {\n    callback(null);\n    this.call.sendStatus({\n      ...this.pendingStatus,\n      metadata: this.pendingStatus.metadata ?? this.trailingMetadata,\n    });\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  end(metadata?: any) {\n    if (metadata) {\n      this.trailingMetadata = metadata;\n    }\n\n    return super.end();\n  }\n}\n\n// Unary response callback signature.\nexport type sendUnaryData<ResponseType> = (\n  error: ServerErrorResponse | ServerStatusResponse | null,\n  value?: ResponseType | null,\n  trailer?: Metadata,\n  flags?: number\n) => void;\n\n// User provided handler for unary calls.\nexport type handleUnaryCall<RequestType, ResponseType> = (\n  call: ServerUnaryCall<RequestType, ResponseType>,\n  callback: sendUnaryData<ResponseType>\n) => void;\n\n// User provided handler for client streaming calls.\nexport type handleClientStreamingCall<RequestType, ResponseType> = (\n  call: ServerReadableStream<RequestType, ResponseType>,\n  callback: sendUnaryData<ResponseType>\n) => void;\n\n// User provided handler for server streaming calls.\nexport type handleServerStreamingCall<RequestType, ResponseType> = (\n  call: ServerWritableStream<RequestType, ResponseType>\n) => void;\n\n// User provided handler for bidirectional streaming calls.\nexport type handleBidiStreamingCall<RequestType, ResponseType> = (\n  call: ServerDuplexStream<RequestType, ResponseType>\n) => void;\n\nexport type HandleCall<RequestType, ResponseType> =\n  | handleUnaryCall<RequestType, ResponseType>\n  | handleClientStreamingCall<RequestType, ResponseType>\n  | handleServerStreamingCall<RequestType, ResponseType>\n  | handleBidiStreamingCall<RequestType, ResponseType>;\n\nexport interface UnaryHandler<RequestType, ResponseType> {\n  func: handleUnaryCall<RequestType, ResponseType>;\n  serialize: Serialize<ResponseType>;\n  deserialize: Deserialize<RequestType>;\n  type: 'unary';\n  path: string;\n}\n\nexport interface ClientStreamingHandler<RequestType, ResponseType> {\n  func: handleClientStreamingCall<RequestType, ResponseType>;\n  serialize: Serialize<ResponseType>;\n  deserialize: Deserialize<RequestType>;\n  type: 'clientStream';\n  path: string;\n}\n\nexport interface ServerStreamingHandler<RequestType, ResponseType> {\n  func: handleServerStreamingCall<RequestType, ResponseType>;\n  serialize: Serialize<ResponseType>;\n  deserialize: Deserialize<RequestType>;\n  type: 'serverStream';\n  path: string;\n}\n\nexport interface BidiStreamingHandler<RequestType, ResponseType> {\n  func: handleBidiStreamingCall<RequestType, ResponseType>;\n  serialize: Serialize<ResponseType>;\n  deserialize: Deserialize<RequestType>;\n  type: 'bidi';\n  path: string;\n}\n\nexport type Handler<RequestType, ResponseType> =\n  | UnaryHandler<RequestType, ResponseType>\n  | ClientStreamingHandler<RequestType, ResponseType>\n  | ServerStreamingHandler<RequestType, ResponseType>\n  | BidiStreamingHandler<RequestType, ResponseType>;\n\nexport type HandlerType = 'bidi' | 'clientStream' | 'serverStream' | 'unary';\n", "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { SecureServerOptions } from 'http2';\nimport { CIPHER_SUITES, getDefaultRootsData } from './tls-helpers';\nimport { SecureContextOptions } from 'tls';\nimport { ServerInterceptor } from '.';\nimport { CaCertificateUpdate, CaCertificateUpdateListener, CertificateProvider, IdentityCertificateUpdate, IdentityCertificateUpdateListener } from './certificate-provider';\n\nexport interface KeyCertPair {\n  private_key: Buffer;\n  cert_chain: Buffer;\n}\n\nexport interface SecureContextWatcher {\n  (context: SecureContextOptions | null): void;\n}\n\nexport abstract class ServerCredentials {\n  private watchers: Set<SecureContextWatcher> = new Set();\n  private latestContextOptions: SecureContextOptions | null = null;\n  constructor(private serverConstructorOptions: SecureServerOptions | null, contextOptions?: SecureContextOptions) {\n    this.latestContextOptions = contextOptions ?? null;\n  }\n\n  _addWatcher(watcher: SecureContextWatcher) {\n    this.watchers.add(watcher);\n  }\n  _removeWatcher(watcher: SecureContextWatcher) {\n    this.watchers.delete(watcher);\n  }\n  protected getWatcherCount() {\n    return this.watchers.size;\n  }\n  protected updateSecureContextOptions(options: SecureContextOptions | null) {\n    this.latestContextOptions = options;\n    for (const watcher of this.watchers) {\n      watcher(this.latestContextOptions);\n    }\n  }\n  _isSecure(): boolean {\n    return this.serverConstructorOptions !== null;\n  }\n  _getSecureContextOptions(): SecureContextOptions | null {\n    return this.latestContextOptions;\n  }\n  _getConstructorOptions(): SecureServerOptions | null {\n    return this.serverConstructorOptions;\n  }\n  _getInterceptors(): ServerInterceptor[] {\n    return [];\n  }\n  abstract _equals(other: ServerCredentials): boolean;\n\n  static createInsecure(): ServerCredentials {\n    return new InsecureServerCredentials();\n  }\n\n  static createSsl(\n    rootCerts: Buffer | null,\n    keyCertPairs: KeyCertPair[],\n    checkClientCertificate = false\n  ): ServerCredentials {\n    if (rootCerts !== null && !Buffer.isBuffer(rootCerts)) {\n      throw new TypeError('rootCerts must be null or a Buffer');\n    }\n\n    if (!Array.isArray(keyCertPairs)) {\n      throw new TypeError('keyCertPairs must be an array');\n    }\n\n    if (typeof checkClientCertificate !== 'boolean') {\n      throw new TypeError('checkClientCertificate must be a boolean');\n    }\n\n    const cert: Buffer[] = [];\n    const key: Buffer[] = [];\n\n    for (let i = 0; i < keyCertPairs.length; i++) {\n      const pair = keyCertPairs[i];\n\n      if (pair === null || typeof pair !== 'object') {\n        throw new TypeError(`keyCertPair[${i}] must be an object`);\n      }\n\n      if (!Buffer.isBuffer(pair.private_key)) {\n        throw new TypeError(`keyCertPair[${i}].private_key must be a Buffer`);\n      }\n\n      if (!Buffer.isBuffer(pair.cert_chain)) {\n        throw new TypeError(`keyCertPair[${i}].cert_chain must be a Buffer`);\n      }\n\n      cert.push(pair.cert_chain);\n      key.push(pair.private_key);\n    }\n\n    return new SecureServerCredentials({\n      requestCert: checkClientCertificate,\n      ciphers: CIPHER_SUITES,\n    }, {\n      ca: rootCerts ?? getDefaultRootsData() ?? undefined,\n      cert,\n      key,\n    });\n  }\n}\n\nclass InsecureServerCredentials extends ServerCredentials {\n  constructor() {\n    super(null);\n  }\n\n  _getSettings(): null {\n    return null;\n  }\n\n  _equals(other: ServerCredentials): boolean {\n    return other instanceof InsecureServerCredentials;\n  }\n}\n\nclass SecureServerCredentials extends ServerCredentials {\n  private options: SecureServerOptions;\n\n  constructor(constructorOptions: SecureServerOptions, contextOptions: SecureContextOptions) {\n    super(constructorOptions, contextOptions);\n    this.options = {...constructorOptions, ...contextOptions};\n  }\n\n  /**\n   * Checks equality by checking the options that are actually set by\n   * createSsl.\n   * @param other\n   * @returns\n   */\n  _equals(other: ServerCredentials): boolean {\n    if (this === other) {\n      return true;\n    }\n    if (!(other instanceof SecureServerCredentials)) {\n      return false;\n    }\n    // options.ca equality check\n    if (Buffer.isBuffer(this.options.ca) && Buffer.isBuffer(other.options.ca)) {\n      if (!this.options.ca.equals(other.options.ca)) {\n        return false;\n      }\n    } else {\n      if (this.options.ca !== other.options.ca) {\n        return false;\n      }\n    }\n    // options.cert equality check\n    if (Array.isArray(this.options.cert) && Array.isArray(other.options.cert)) {\n      if (this.options.cert.length !== other.options.cert.length) {\n        return false;\n      }\n      for (let i = 0; i < this.options.cert.length; i++) {\n        const thisCert = this.options.cert[i];\n        const otherCert = other.options.cert[i];\n        if (Buffer.isBuffer(thisCert) && Buffer.isBuffer(otherCert)) {\n          if (!thisCert.equals(otherCert)) {\n            return false;\n          }\n        } else {\n          if (thisCert !== otherCert) {\n            return false;\n          }\n        }\n      }\n    } else {\n      if (this.options.cert !== other.options.cert) {\n        return false;\n      }\n    }\n    // options.key equality check\n    if (Array.isArray(this.options.key) && Array.isArray(other.options.key)) {\n      if (this.options.key.length !== other.options.key.length) {\n        return false;\n      }\n      for (let i = 0; i < this.options.key.length; i++) {\n        const thisKey = this.options.key[i];\n        const otherKey = other.options.key[i];\n        if (Buffer.isBuffer(thisKey) && Buffer.isBuffer(otherKey)) {\n          if (!thisKey.equals(otherKey)) {\n            return false;\n          }\n        } else {\n          if (thisKey !== otherKey) {\n            return false;\n          }\n        }\n      }\n    } else {\n      if (this.options.key !== other.options.key) {\n        return false;\n      }\n    }\n    // options.requestCert equality check\n    if (this.options.requestCert !== other.options.requestCert) {\n      return false;\n    }\n    /* ciphers is derived from a value that is constant for the process, so no\n     * equality check is needed. */\n    return true;\n  }\n}\n\nclass CertificateProviderServerCredentials extends ServerCredentials {\n  private latestCaUpdate: CaCertificateUpdate | null = null;\n  private latestIdentityUpdate: IdentityCertificateUpdate | null = null;\n  private caCertificateUpdateListener: CaCertificateUpdateListener = this.handleCaCertificateUpdate.bind(this);\n  private identityCertificateUpdateListener: IdentityCertificateUpdateListener = this.handleIdentityCertitificateUpdate.bind(this);\n  constructor(\n    private identityCertificateProvider: CertificateProvider,\n    private caCertificateProvider: CertificateProvider | null,\n    private requireClientCertificate: boolean\n  ) {\n    super({\n      requestCert: caCertificateProvider !== null,\n      rejectUnauthorized: requireClientCertificate,\n      ciphers: CIPHER_SUITES\n    });\n  }\n  _addWatcher(watcher: SecureContextWatcher): void {\n    if (this.getWatcherCount() === 0) {\n      this.caCertificateProvider?.addCaCertificateListener(this.caCertificateUpdateListener);\n      this.identityCertificateProvider.addIdentityCertificateListener(this.identityCertificateUpdateListener);\n    }\n    super._addWatcher(watcher);\n  }\n  _removeWatcher(watcher: SecureContextWatcher): void {\n    super._removeWatcher(watcher);\n    if (this.getWatcherCount() === 0) {\n      this.caCertificateProvider?.removeCaCertificateListener(this.caCertificateUpdateListener);\n      this.identityCertificateProvider.removeIdentityCertificateListener(this.identityCertificateUpdateListener);\n    }\n  }\n  _equals(other: ServerCredentials): boolean {\n    if (this === other) {\n      return true;\n    }\n    if (!(other instanceof CertificateProviderServerCredentials)) {\n      return false;\n    }\n    return (\n      this.caCertificateProvider === other.caCertificateProvider &&\n      this.identityCertificateProvider === other.identityCertificateProvider &&\n      this.requireClientCertificate === other.requireClientCertificate\n    )\n  }\n\n  private calculateSecureContextOptions(): SecureContextOptions | null {\n    if (this.latestIdentityUpdate === null) {\n      return null;\n    }\n    if (this.caCertificateProvider !== null && this.latestCaUpdate === null) {\n      return null;\n    }\n    return {\n      ca: this.latestCaUpdate?.caCertificate,\n      cert: [this.latestIdentityUpdate.certificate],\n      key: [this.latestIdentityUpdate.privateKey],\n    };\n  }\n\n  private finalizeUpdate() {\n    const secureContextOptions = this.calculateSecureContextOptions();\n    this.updateSecureContextOptions(secureContextOptions);\n  }\n\n  private handleCaCertificateUpdate(update: CaCertificateUpdate | null) {\n    this.latestCaUpdate = update;\n    this.finalizeUpdate();\n  }\n\n  private handleIdentityCertitificateUpdate(update: IdentityCertificateUpdate | null) {\n    this.latestIdentityUpdate = update;\n    this.finalizeUpdate();\n  }\n}\n\nexport function createCertificateProviderServerCredentials(\n  caCertificateProvider: CertificateProvider,\n  identityCertificateProvider: CertificateProvider | null,\n  requireClientCertificate: boolean\n) {\n  return new CertificateProviderServerCredentials(\n    caCertificateProvider,\n    identityCertificateProvider,\n    requireClientCertificate);\n}\n\nclass InterceptorServerCredentials extends ServerCredentials {\n  constructor(private readonly childCredentials: ServerCredentials, private readonly interceptors: ServerInterceptor[]) {\n    super({});\n  }\n  _isSecure(): boolean {\n    return this.childCredentials._isSecure();\n  }\n  _equals(other: ServerCredentials): boolean {\n    if (!(other instanceof InterceptorServerCredentials)) {\n      return false;\n    }\n    if (!(this.childCredentials._equals(other.childCredentials))) {\n      return false;\n    }\n    if (this.interceptors.length !== other.interceptors.length) {\n      return false;\n    }\n    for (let i = 0; i < this.interceptors.length; i++) {\n      if (this.interceptors[i] !== other.interceptors[i]) {\n        return false;\n      }\n    }\n    return true;\n  }\n  override _getInterceptors(): ServerInterceptor[] {\n    return this.interceptors;\n  }\n  override _addWatcher(watcher: SecureContextWatcher): void {\n    this.childCredentials._addWatcher(watcher);\n  }\n  override _removeWatcher(watcher: SecureContextWatcher): void {\n    this.childCredentials._removeWatcher(watcher);\n  }\n  override _getConstructorOptions(): SecureServerOptions | null {\n    return this.childCredentials._getConstructorOptions();\n  }\n  override _getSecureContextOptions(): SecureContextOptions | null {\n    return this.childCredentials._getSecureContextOptions();\n  }\n}\n\nexport function createServerCredentialsWithInterceptors(credentials: ServerCredentials, interceptors: ServerInterceptor[]): ServerCredentials {\n  return new InterceptorServerCredentials(credentials, interceptors);\n}\n", "/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nexport interface Duration {\n  seconds: number;\n  nanos: number;\n}\n\nexport interface DurationMessage {\n  seconds: string;\n  nanos: number;\n}\n\nexport function durationMessageToDuration(message: DurationMessage): Duration {\n  return {\n    seconds: Number.parseInt(message.seconds),\n    nanos: message.nanos\n  };\n}\n\nexport function msToDuration(millis: number): Duration {\n  return {\n    seconds: (millis / 1000) | 0,\n    nanos: ((millis % 1000) * 1_000_000) | 0,\n  };\n}\n\nexport function durationToMs(duration: Duration): number {\n  return (duration.seconds * 1000 + duration.nanos / 1_000_000) | 0;\n}\n\nexport function isDuration(value: any): value is Duration {\n  return typeof value.seconds === 'number' && typeof value.nanos === 'number';\n}\n\nexport function isDurationMessage(value: any): value is DurationMessage {\n  return typeof value.seconds === 'string' && typeof value.nanos === 'number';\n}\n\nconst durationRegex = /^(\\d+)(?:\\.(\\d+))?s$/;\nexport function parseDuration(value: string): Duration | null {\n  const match = value.match(durationRegex);\n  if (!match) {\n    return null;\n  }\n  return {\n    seconds: Number.parseInt(match[1], 10),\n    nanos: match[2] ? Number.parseInt(match[2].padEnd(9, '0'), 10) : 0\n  };\n}\n\nexport function durationToString(duration: Duration): string {\n  if (duration.nanos === 0) {\n    return `${duration.seconds}s`;\n  }\n  let scaleFactor: number;\n  if (duration.nanos % 1_000_000 === 0) {\n    scaleFactor = 1_000_000;\n  } else if (duration.nanos % 1_000 === 0) {\n    scaleFactor = 1_000;\n  } else {\n    scaleFactor = 1;\n  }\n  return `${duration.seconds}.${duration.nanos/scaleFactor}s`;\n}\n", "/*\n * Copyright 2025 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { OrcaLoadReport, OrcaLoadReport__Output } from \"./generated/xds/data/orca/v3/OrcaLoadReport\";\n\nimport type { loadSync } from '@grpc/proto-loader';\nimport { ProtoGrpcType as OrcaProtoGrpcType } from \"./generated/orca\";\nimport { loadPackageDefinition } from \"./make-client\";\nimport { OpenRcaServiceClient, OpenRcaServiceHandlers } from \"./generated/xds/service/orca/v3/OpenRcaService\";\nimport { durationMessageToDuration, durationToMs, msToDuration } from \"./duration\";\nimport { Server } from \"./server\";\nimport { ChannelCredentials } from \"./channel-credentials\";\nimport { Channel } from \"./channel\";\nimport { OnCallEnded } from \"./picker\";\nimport { DataProducer, Subchannel } from \"./subchannel\";\nimport { BaseSubchannelWrapper, DataWatcher, SubchannelInterface } from \"./subchannel-interface\";\nimport { ClientReadableStream, ServiceError } from \"./call\";\nimport { Status } from \"./constants\";\nimport { BackoffTimeout } from \"./backoff-timeout\";\nimport { ConnectivityState } from \"./connectivity-state\";\n\nconst loadedOrcaProto: OrcaProtoGrpcType | null = null;\nfunction loadOrcaProto(): OrcaProtoGrpcType {\n  if (loadedOrcaProto) {\n    return loadedOrcaProto;\n  }\n  /* The purpose of this complexity is to avoid loading @grpc/proto-loader at\n   * runtime for users who will not use/enable ORCA. */\n  const loaderLoadSync = require('@grpc/proto-loader')\n    .loadSync as typeof loadSync;\n  const loadedProto = loaderLoadSync('xds/service/orca/v3/orca.proto', {\n    keepCase: true,\n    longs: String,\n    enums: String,\n    defaults: true,\n    oneofs: true,\n    includeDirs: [\n      `${__dirname}/../../proto/xds`,\n      `${__dirname}/../../proto/protoc-gen-validate`\n    ],\n  });\n  return loadPackageDefinition(loadedProto) as unknown as OrcaProtoGrpcType;\n}\n\n/**\n * ORCA metrics recorder for a single request\n */\nexport class PerRequestMetricRecorder {\n  private message: OrcaLoadReport = {};\n\n  /**\n   * Records a request cost metric measurement for the call.\n   * @param name\n   * @param value\n   */\n  recordRequestCostMetric(name: string, value: number) {\n    if (!this.message.request_cost) {\n      this.message.request_cost = {};\n    }\n    this.message.request_cost[name] = value;\n  }\n\n  /**\n   * Records a request cost metric measurement for the call.\n   * @param name\n   * @param value\n   */\n  recordUtilizationMetric(name: string, value: number) {\n    if (!this.message.utilization) {\n      this.message.utilization = {};\n    }\n    this.message.utilization[name] = value;\n  }\n\n  /**\n   * Records an opaque named metric measurement for the call.\n   * @param name\n   * @param value\n   */\n  recordNamedMetric(name: string, value: number) {\n    if (!this.message.named_metrics) {\n      this.message.named_metrics = {};\n    }\n    this.message.named_metrics[name] = value;\n  }\n\n  /**\n   * Records the CPU utilization metric measurement for the call.\n   * @param value\n   */\n  recordCPUUtilizationMetric(value: number) {\n    this.message.cpu_utilization = value;\n  }\n\n  /**\n   * Records the memory utilization metric measurement for the call.\n   * @param value\n   */\n  recordMemoryUtilizationMetric(value: number) {\n    this.message.mem_utilization = value;\n  }\n\n  /**\n   * Records the memory utilization metric measurement for the call.\n   * @param value\n   */\n  recordApplicationUtilizationMetric(value: number) {\n    this.message.application_utilization = value;\n  }\n\n  /**\n   * Records the queries per second measurement.\n   * @param value\n   */\n  recordQpsMetric(value: number) {\n    this.message.rps_fractional = value;\n  }\n\n  /**\n   * Records the errors per second measurement.\n   * @param value\n   */\n  recordEpsMetric(value: number) {\n    this.message.eps = value;\n  }\n\n  serialize(): Buffer {\n    const orcaProto = loadOrcaProto();\n    return orcaProto.xds.data.orca.v3.OrcaLoadReport.serialize(this.message);\n  }\n}\n\nconst DEFAULT_REPORT_INTERVAL_MS = 30_000;\n\nexport class ServerMetricRecorder {\n  private message: OrcaLoadReport = {};\n\n  private serviceImplementation: OpenRcaServiceHandlers = {\n    StreamCoreMetrics: call => {\n      const reportInterval = call.request.report_interval ?\n        durationToMs(durationMessageToDuration(call.request.report_interval)) :\n        DEFAULT_REPORT_INTERVAL_MS;\n      const reportTimer = setInterval(() => {\n        call.write(this.message);\n      }, reportInterval);\n      call.on('cancelled', () => {\n        clearInterval(reportTimer);\n      })\n    }\n  }\n\n  putUtilizationMetric(name: string, value: number) {\n    if (!this.message.utilization) {\n      this.message.utilization = {};\n    }\n    this.message.utilization[name] = value;\n  }\n\n  setAllUtilizationMetrics(metrics: {[name: string]: number}) {\n    this.message.utilization = {...metrics};\n  }\n\n  deleteUtilizationMetric(name: string) {\n    delete this.message.utilization?.[name];\n  }\n\n  setCpuUtilizationMetric(value: number) {\n    this.message.cpu_utilization = value;\n  }\n\n  deleteCpuUtilizationMetric() {\n    delete this.message.cpu_utilization;\n  }\n\n  setApplicationUtilizationMetric(value: number) {\n    this.message.application_utilization = value;\n  }\n\n  deleteApplicationUtilizationMetric() {\n    delete this.message.application_utilization;\n  }\n\n  setQpsMetric(value: number) {\n    this.message.rps_fractional = value;\n  }\n\n  deleteQpsMetric() {\n    delete this.message.rps_fractional;\n  }\n\n  setEpsMetric(value: number) {\n    this.message.eps = value;\n  }\n\n  deleteEpsMetric() {\n    delete this.message.eps;\n  }\n\n  addToServer(server: Server) {\n    const serviceDefinition = loadOrcaProto().xds.service.orca.v3.OpenRcaService.service;\n    server.addService(serviceDefinition, this.serviceImplementation);\n  }\n}\n\nexport function createOrcaClient(channel: Channel): OpenRcaServiceClient {\n  const ClientClass = loadOrcaProto().xds.service.orca.v3.OpenRcaService;\n  return new ClientClass('unused', ChannelCredentials.createInsecure(), {channelOverride: channel});\n}\n\nexport type MetricsListener = (loadReport: OrcaLoadReport__Output) => void;\n\nexport const GRPC_METRICS_HEADER = 'endpoint-load-metrics-bin';\nconst PARSED_LOAD_REPORT_KEY = 'grpc_orca_load_report';\n\n/**\n * Create an onCallEnded callback for use in a picker.\n * @param listener The listener to handle metrics, whenever they are provided.\n * @param previousOnCallEnded The previous onCallEnded callback to propagate\n * to, if applicable.\n * @returns\n */\nexport function createMetricsReader(listener: MetricsListener, previousOnCallEnded: OnCallEnded | null): OnCallEnded {\n  return (code, details, metadata) => {\n    let parsedLoadReport = metadata.getOpaque(PARSED_LOAD_REPORT_KEY) as (OrcaLoadReport__Output | undefined);\n    if (parsedLoadReport) {\n      listener(parsedLoadReport);\n    } else {\n      const serializedLoadReport = metadata.get(GRPC_METRICS_HEADER);\n      if (serializedLoadReport.length > 0) {\n        const orcaProto = loadOrcaProto();\n        parsedLoadReport = orcaProto.xds.data.orca.v3.OrcaLoadReport.deserialize(serializedLoadReport[0] as Buffer);\n        listener(parsedLoadReport);\n        metadata.setOpaque(PARSED_LOAD_REPORT_KEY, parsedLoadReport);\n      }\n    }\n    if (previousOnCallEnded) {\n      previousOnCallEnded(code, details, metadata);\n    }\n  }\n}\n\nconst DATA_PRODUCER_KEY = 'orca_oob_metrics';\n\nclass OobMetricsDataWatcher implements DataWatcher {\n  private dataProducer: DataProducer | null = null;\n  constructor(private metricsListener: MetricsListener, private intervalMs: number) {}\n  setSubchannel(subchannel: Subchannel): void {\n    const producer = subchannel.getOrCreateDataProducer(DATA_PRODUCER_KEY, createOobMetricsDataProducer);\n    this.dataProducer = producer;\n    producer.addDataWatcher(this);\n  }\n  destroy(): void {\n    this.dataProducer?.removeDataWatcher(this);\n  }\n  getInterval(): number {\n    return this.intervalMs;\n  }\n  onMetricsUpdate(metrics: OrcaLoadReport__Output) {\n    this.metricsListener(metrics);\n  }\n}\n\nclass OobMetricsDataProducer implements DataProducer {\n  private dataWatchers: Set<OobMetricsDataWatcher> = new Set();\n  private orcaSupported = true;\n  private client: OpenRcaServiceClient;\n  private metricsCall: ClientReadableStream<OrcaLoadReport__Output> | null = null;\n  private currentInterval = Infinity;\n  private backoffTimer = new BackoffTimeout(() => this.updateMetricsSubscription());\n  private subchannelStateListener = () => this.updateMetricsSubscription();\n  constructor(private subchannel: Subchannel) {\n    const channel = subchannel.getChannel();\n    this.client = createOrcaClient(channel);\n    subchannel.addConnectivityStateListener(this.subchannelStateListener);\n  }\n  addDataWatcher(dataWatcher: OobMetricsDataWatcher): void {\n    this.dataWatchers.add(dataWatcher);\n    this.updateMetricsSubscription();\n  }\n  removeDataWatcher(dataWatcher: OobMetricsDataWatcher): void {\n    this.dataWatchers.delete(dataWatcher);\n    if (this.dataWatchers.size === 0) {\n      this.subchannel.removeDataProducer(DATA_PRODUCER_KEY);\n      this.metricsCall?.cancel();\n      this.metricsCall = null;\n      this.client.close();\n      this.subchannel.removeConnectivityStateListener(this.subchannelStateListener);\n    } else {\n      this.updateMetricsSubscription();\n    }\n  }\n  private updateMetricsSubscription() {\n    if (this.dataWatchers.size === 0 || !this.orcaSupported || this.subchannel.getConnectivityState() !== ConnectivityState.READY) {\n      return;\n    }\n    const newInterval = Math.min(...Array.from(this.dataWatchers).map(watcher => watcher.getInterval()));\n    if (!this.metricsCall || newInterval !== this.currentInterval) {\n      this.metricsCall?.cancel();\n      this.currentInterval = newInterval;\n      const metricsCall = this.client.streamCoreMetrics({report_interval: msToDuration(newInterval)});\n      this.metricsCall = metricsCall;\n      metricsCall.on('data', (report: OrcaLoadReport__Output) => {\n        this.dataWatchers.forEach(watcher => {\n          watcher.onMetricsUpdate(report);\n        });\n      });\n      metricsCall.on('error', (error: ServiceError) => {\n        this.metricsCall = null;\n        if (error.code === Status.UNIMPLEMENTED) {\n          this.orcaSupported = false;\n          return;\n        }\n        if (error.code === Status.CANCELLED) {\n          return;\n        }\n        this.backoffTimer.runOnce();\n      });\n    }\n  }\n}\n\nexport class OrcaOobMetricsSubchannelWrapper extends BaseSubchannelWrapper {\n  constructor(child: SubchannelInterface, metricsListener: MetricsListener, intervalMs: number) {\n    super(child);\n    this.addDataWatcher(new OobMetricsDataWatcher(metricsListener, intervalMs));\n  }\n\n  getWrappedSubchannel(): SubchannelInterface {\n    return this.child;\n  }\n}\n\nfunction createOobMetricsDataProducer(subchannel: Subchannel) {\n  return new OobMetricsDataProducer(subchannel);\n}\n", "/*\n * Copyright 2024 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { PartialStatusObject } from './call-interface';\nimport { ServerMethodDefinition } from './make-client';\nimport { Metadata } from './metadata';\nimport { ChannelOptions } from './channel-options';\nimport { Handler, ServerErrorResponse } from './server-call';\nimport { Deadline } from './deadline';\nimport {\n  DEFAULT_MAX_RECEIVE_MESSAGE_LENGTH,\n  DEFAULT_MAX_SEND_MESSAGE_LENGTH,\n  LogVerbosity,\n  Status,\n} from './constants';\nimport * as http2 from 'http2';\nimport { getErrorMessage } from './error';\nimport * as zlib from 'zlib';\nimport { StreamDecoder } from './stream-decoder';\nimport { CallEventTracker } from './transport';\nimport * as logging from './logging';\nimport { AuthContext } from './auth-context';\nimport { TLSSocket } from 'tls';\nimport { GRPC_METRICS_HEADER, PerRequestMetricRecorder } from './orca';\n\nconst TRACER_NAME = 'server_call';\n\nfunction trace(text: string) {\n  logging.trace(LogVerbosity.DEBUG, TRACER_NAME, text);\n}\n\nexport interface ServerMetadataListener {\n  (metadata: Metadata, next: (metadata: Metadata) => void): void;\n}\n\nexport interface ServerMessageListener {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  (message: any, next: (message: any) => void): void;\n}\n\nexport interface ServerHalfCloseListener {\n  (next: () => void): void;\n}\n\nexport interface ServerCancelListener {\n  (): void;\n}\n\nexport interface FullServerListener {\n  onReceiveMetadata: ServerMetadataListener;\n  onReceiveMessage: ServerMessageListener;\n  onReceiveHalfClose: ServerHalfCloseListener;\n  onCancel: ServerCancelListener;\n}\n\nexport type ServerListener = Partial<FullServerListener>;\n\nexport class ServerListenerBuilder {\n  private metadata: ServerMetadataListener | undefined = undefined;\n  private message: ServerMessageListener | undefined = undefined;\n  private halfClose: ServerHalfCloseListener | undefined = undefined;\n  private cancel: ServerCancelListener | undefined = undefined;\n\n  withOnReceiveMetadata(onReceiveMetadata: ServerMetadataListener): this {\n    this.metadata = onReceiveMetadata;\n    return this;\n  }\n\n  withOnReceiveMessage(onReceiveMessage: ServerMessageListener): this {\n    this.message = onReceiveMessage;\n    return this;\n  }\n\n  withOnReceiveHalfClose(onReceiveHalfClose: ServerHalfCloseListener): this {\n    this.halfClose = onReceiveHalfClose;\n    return this;\n  }\n\n  withOnCancel(onCancel: ServerCancelListener): this {\n    this.cancel = onCancel;\n    return this;\n  }\n\n  build(): ServerListener {\n    return {\n      onReceiveMetadata: this.metadata,\n      onReceiveMessage: this.message,\n      onReceiveHalfClose: this.halfClose,\n      onCancel: this.cancel,\n    };\n  }\n}\n\nexport interface InterceptingServerListener {\n  onReceiveMetadata(metadata: Metadata): void;\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  onReceiveMessage(message: any): void;\n  onReceiveHalfClose(): void;\n  onCancel(): void;\n}\n\nexport function isInterceptingServerListener(\n  listener: ServerListener | InterceptingServerListener\n): listener is InterceptingServerListener {\n  return (\n    listener.onReceiveMetadata !== undefined &&\n    listener.onReceiveMetadata.length === 1\n  );\n}\n\nclass InterceptingServerListenerImpl implements InterceptingServerListener {\n  /**\n   * Once the call is cancelled, ignore all other events.\n   */\n  private cancelled = false;\n  private processingMetadata = false;\n  private hasPendingMessage = false;\n  private pendingMessage: any = null;\n  private processingMessage = false;\n  private hasPendingHalfClose = false;\n\n  constructor(\n    private listener: FullServerListener,\n    private nextListener: InterceptingServerListener\n  ) {}\n\n  private processPendingMessage() {\n    if (this.hasPendingMessage) {\n      this.nextListener.onReceiveMessage(this.pendingMessage);\n      this.pendingMessage = null;\n      this.hasPendingMessage = false;\n    }\n  }\n\n  private processPendingHalfClose() {\n    if (this.hasPendingHalfClose) {\n      this.nextListener.onReceiveHalfClose();\n      this.hasPendingHalfClose = false;\n    }\n  }\n\n  onReceiveMetadata(metadata: Metadata): void {\n    if (this.cancelled) {\n      return;\n    }\n    this.processingMetadata = true;\n    this.listener.onReceiveMetadata(metadata, interceptedMetadata => {\n      this.processingMetadata = false;\n      if (this.cancelled) {\n        return;\n      }\n      this.nextListener.onReceiveMetadata(interceptedMetadata);\n      this.processPendingMessage();\n      this.processPendingHalfClose();\n    });\n  }\n  onReceiveMessage(message: any): void {\n    if (this.cancelled) {\n      return;\n    }\n    this.processingMessage = true;\n    this.listener.onReceiveMessage(message, msg => {\n      this.processingMessage = false;\n      if (this.cancelled) {\n        return;\n      }\n      if (this.processingMetadata) {\n        this.pendingMessage = msg;\n        this.hasPendingMessage = true;\n      } else {\n        this.nextListener.onReceiveMessage(msg);\n        this.processPendingHalfClose();\n      }\n    });\n  }\n  onReceiveHalfClose(): void {\n    if (this.cancelled) {\n      return;\n    }\n    this.listener.onReceiveHalfClose(() => {\n      if (this.cancelled) {\n        return;\n      }\n      if (this.processingMetadata || this.processingMessage) {\n        this.hasPendingHalfClose = true;\n      } else {\n        this.nextListener.onReceiveHalfClose();\n      }\n    });\n  }\n  onCancel(): void {\n    this.cancelled = true;\n    this.listener.onCancel();\n    this.nextListener.onCancel();\n  }\n}\n\nexport interface StartResponder {\n  (next: (listener?: ServerListener) => void): void;\n}\n\nexport interface MetadataResponder {\n  (metadata: Metadata, next: (metadata: Metadata) => void): void;\n}\n\nexport interface MessageResponder {\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  (message: any, next: (message: any) => void): void;\n}\n\nexport interface StatusResponder {\n  (\n    status: PartialStatusObject,\n    next: (status: PartialStatusObject) => void\n  ): void;\n}\n\nexport interface FullResponder {\n  start: StartResponder;\n  sendMetadata: MetadataResponder;\n  sendMessage: MessageResponder;\n  sendStatus: StatusResponder;\n}\n\nexport type Responder = Partial<FullResponder>;\n\nexport class ResponderBuilder {\n  private start: StartResponder | undefined = undefined;\n  private metadata: MetadataResponder | undefined = undefined;\n  private message: MessageResponder | undefined = undefined;\n  private status: StatusResponder | undefined = undefined;\n\n  withStart(start: StartResponder): this {\n    this.start = start;\n    return this;\n  }\n\n  withSendMetadata(sendMetadata: MetadataResponder): this {\n    this.metadata = sendMetadata;\n    return this;\n  }\n\n  withSendMessage(sendMessage: MessageResponder): this {\n    this.message = sendMessage;\n    return this;\n  }\n\n  withSendStatus(sendStatus: StatusResponder): this {\n    this.status = sendStatus;\n    return this;\n  }\n\n  build(): Responder {\n    return {\n      start: this.start,\n      sendMetadata: this.metadata,\n      sendMessage: this.message,\n      sendStatus: this.status,\n    };\n  }\n}\n\nconst defaultServerListener: FullServerListener = {\n  onReceiveMetadata: (metadata, next) => {\n    next(metadata);\n  },\n  onReceiveMessage: (message, next) => {\n    next(message);\n  },\n  onReceiveHalfClose: next => {\n    next();\n  },\n  onCancel: () => {},\n};\n\nconst defaultResponder: FullResponder = {\n  start: next => {\n    next();\n  },\n  sendMetadata: (metadata, next) => {\n    next(metadata);\n  },\n  sendMessage: (message, next) => {\n    next(message);\n  },\n  sendStatus: (status, next) => {\n    next(status);\n  },\n};\n\nexport interface ConnectionInfo {\n  localAddress?: string | undefined;\n  localPort?: number | undefined;\n  remoteAddress?: string | undefined;\n  remotePort?: number | undefined;\n}\n\nexport interface ServerInterceptingCallInterface {\n  /**\n   * Register the listener to handle inbound events.\n   */\n  start(listener: InterceptingServerListener): void;\n  /**\n   * Send response metadata.\n   */\n  sendMetadata(metadata: Metadata): void;\n  /**\n   * Send a response message.\n   */\n  sendMessage(message: any, callback: () => void): void;\n  /**\n   * End the call by sending this status.\n   */\n  sendStatus(status: PartialStatusObject): void;\n  /**\n   * Start a single read, eventually triggering either listener.onReceiveMessage or listener.onReceiveHalfClose.\n   */\n  startRead(): void;\n  /**\n   * Return the peer address of the client making the request, if known, or \"unknown\" otherwise\n   */\n  getPeer(): string;\n  /**\n   * Return the call deadline set by the client. The value is Infinity if there is no deadline.\n   */\n  getDeadline(): Deadline;\n  /**\n   * Return the host requested by the client in the \":authority\" header.\n   */\n  getHost(): string;\n  /**\n   * Return the auth context of the connection the call is associated with.\n   */\n  getAuthContext(): AuthContext;\n  /**\n   * Return information about the connection used to make the call.\n   */\n  getConnectionInfo(): ConnectionInfo;\n  /**\n   * Get the metrics recorder for this call. Metrics will not be sent unless\n   * the server was constructed with the `grpc.server_call_metric_recording`\n   * option.\n   */\n  getMetricsRecorder(): PerRequestMetricRecorder;\n}\n\nexport class ServerInterceptingCall implements ServerInterceptingCallInterface {\n  private responder: FullResponder;\n  private processingMetadata = false;\n  private sentMetadata = false;\n  private processingMessage = false;\n  private pendingMessage: any = null;\n  private pendingMessageCallback: (() => void) | null = null;\n  private pendingStatus: PartialStatusObject | null = null;\n  constructor(\n    private nextCall: ServerInterceptingCallInterface,\n    responder?: Responder\n  ) {\n    this.responder = {\n      start: responder?.start ?? defaultResponder.start,\n      sendMetadata: responder?.sendMetadata ?? defaultResponder.sendMetadata,\n      sendMessage: responder?.sendMessage ?? defaultResponder.sendMessage,\n      sendStatus: responder?.sendStatus ?? defaultResponder.sendStatus,\n    };\n  }\n\n  private processPendingMessage() {\n    if (this.pendingMessageCallback) {\n      this.nextCall.sendMessage(\n        this.pendingMessage,\n        this.pendingMessageCallback\n      );\n      this.pendingMessage = null;\n      this.pendingMessageCallback = null;\n    }\n  }\n\n  private processPendingStatus() {\n    if (this.pendingStatus) {\n      this.nextCall.sendStatus(this.pendingStatus);\n      this.pendingStatus = null;\n    }\n  }\n\n  start(listener: InterceptingServerListener): void {\n    this.responder.start(interceptedListener => {\n      const fullInterceptedListener: FullServerListener = {\n        onReceiveMetadata:\n          interceptedListener?.onReceiveMetadata ??\n          defaultServerListener.onReceiveMetadata,\n        onReceiveMessage:\n          interceptedListener?.onReceiveMessage ??\n          defaultServerListener.onReceiveMessage,\n        onReceiveHalfClose:\n          interceptedListener?.onReceiveHalfClose ??\n          defaultServerListener.onReceiveHalfClose,\n        onCancel:\n          interceptedListener?.onCancel ?? defaultServerListener.onCancel,\n      };\n      const finalInterceptingListener = new InterceptingServerListenerImpl(\n        fullInterceptedListener,\n        listener\n      );\n      this.nextCall.start(finalInterceptingListener);\n    });\n  }\n  sendMetadata(metadata: Metadata): void {\n    this.processingMetadata = true;\n    this.sentMetadata = true;\n    this.responder.sendMetadata(metadata, interceptedMetadata => {\n      this.processingMetadata = false;\n      this.nextCall.sendMetadata(interceptedMetadata);\n      this.processPendingMessage();\n      this.processPendingStatus();\n    });\n  }\n  sendMessage(message: any, callback: () => void): void {\n    this.processingMessage = true;\n    if (!this.sentMetadata) {\n      this.sendMetadata(new Metadata());\n    }\n    this.responder.sendMessage(message, interceptedMessage => {\n      this.processingMessage = false;\n      if (this.processingMetadata) {\n        this.pendingMessage = interceptedMessage;\n        this.pendingMessageCallback = callback;\n      } else {\n        this.nextCall.sendMessage(interceptedMessage, callback);\n      }\n    });\n  }\n  sendStatus(status: PartialStatusObject): void {\n    this.responder.sendStatus(status, interceptedStatus => {\n      if (this.processingMetadata || this.processingMessage) {\n        this.pendingStatus = interceptedStatus;\n      } else {\n        this.nextCall.sendStatus(interceptedStatus);\n      }\n    });\n  }\n  startRead(): void {\n    this.nextCall.startRead();\n  }\n  getPeer(): string {\n    return this.nextCall.getPeer();\n  }\n  getDeadline(): Deadline {\n    return this.nextCall.getDeadline();\n  }\n  getHost(): string {\n    return this.nextCall.getHost();\n  }\n  getAuthContext(): AuthContext {\n    return this.nextCall.getAuthContext();\n  }\n  getConnectionInfo(): ConnectionInfo {\n    return this.nextCall.getConnectionInfo();\n  }\n  getMetricsRecorder(): PerRequestMetricRecorder {\n    return this.nextCall.getMetricsRecorder();\n  }\n}\n\nexport interface ServerInterceptor {\n  (\n    methodDescriptor: ServerMethodDefinition<any, any>,\n    call: ServerInterceptingCallInterface\n  ): ServerInterceptingCall;\n}\n\ninterface DeadlineUnitIndexSignature {\n  [name: string]: number;\n}\n\nconst GRPC_ACCEPT_ENCODING_HEADER = 'grpc-accept-encoding';\nconst GRPC_ENCODING_HEADER = 'grpc-encoding';\nconst GRPC_MESSAGE_HEADER = 'grpc-message';\nconst GRPC_STATUS_HEADER = 'grpc-status';\nconst GRPC_TIMEOUT_HEADER = 'grpc-timeout';\nconst DEADLINE_REGEX = /(\\d{1,8})\\s*([HMSmun])/;\nconst deadlineUnitsToMs: DeadlineUnitIndexSignature = {\n  H: 3600000,\n  M: 60000,\n  S: 1000,\n  m: 1,\n  u: 0.001,\n  n: 0.000001,\n};\n\nconst defaultCompressionHeaders = {\n  // TODO(cjihrig): Remove these encoding headers from the default response\n  // once compression is integrated.\n  [GRPC_ACCEPT_ENCODING_HEADER]: 'identity,deflate,gzip',\n  [GRPC_ENCODING_HEADER]: 'identity',\n};\nconst defaultResponseHeaders = {\n  [http2.constants.HTTP2_HEADER_STATUS]: http2.constants.HTTP_STATUS_OK,\n  [http2.constants.HTTP2_HEADER_CONTENT_TYPE]: 'application/grpc+proto',\n};\nconst defaultResponseOptions = {\n  waitForTrailers: true,\n} as http2.ServerStreamResponseOptions;\n\ntype ReadQueueEntryType = 'COMPRESSED' | 'READABLE' | 'HALF_CLOSE';\n\ninterface ReadQueueEntry {\n  type: ReadQueueEntryType;\n  compressedMessage: Buffer | null;\n  parsedMessage: any;\n}\n\nexport class BaseServerInterceptingCall\n  implements ServerInterceptingCallInterface\n{\n  private listener: InterceptingServerListener | null = null;\n  private metadata: Metadata;\n  private deadlineTimer: NodeJS.Timeout | null = null;\n  private deadline: Deadline = Infinity;\n  private maxSendMessageSize: number = DEFAULT_MAX_SEND_MESSAGE_LENGTH;\n  private maxReceiveMessageSize: number = DEFAULT_MAX_RECEIVE_MESSAGE_LENGTH;\n  private cancelled = false;\n  private metadataSent = false;\n  private wantTrailers = false;\n  private cancelNotified = false;\n  private incomingEncoding = 'identity';\n  private decoder: StreamDecoder;\n  private readQueue: ReadQueueEntry[] = [];\n  private isReadPending = false;\n  private receivedHalfClose = false;\n  private streamEnded = false;\n  private host: string;\n  private connectionInfo: ConnectionInfo;\n  private metricsRecorder = new PerRequestMetricRecorder();\n  private shouldSendMetrics: boolean;\n\n  constructor(\n    private readonly stream: http2.ServerHttp2Stream,\n    headers: http2.IncomingHttpHeaders,\n    private readonly callEventTracker: CallEventTracker | null,\n    private readonly handler: Handler<any, any>,\n    options: ChannelOptions\n  ) {\n    this.stream.once('error', (err: ServerErrorResponse) => {\n      /* We need an error handler to avoid uncaught error event exceptions, but\n       * there is nothing we can reasonably do here. Any error event should\n       * have a corresponding close event, which handles emitting the cancelled\n       * event. And the stream is now in a bad state, so we can't reasonably\n       * expect to be able to send an error over it. */\n    });\n\n    this.stream.once('close', () => {\n      trace(\n        'Request to method ' +\n          this.handler?.path +\n          ' stream closed with rstCode ' +\n          this.stream.rstCode\n      );\n\n      if (this.callEventTracker && !this.streamEnded) {\n        this.streamEnded = true;\n        this.callEventTracker.onStreamEnd(false);\n        this.callEventTracker.onCallEnd({\n          code: Status.CANCELLED,\n          details: 'Stream closed before sending status',\n          metadata: null,\n        });\n      }\n\n      this.notifyOnCancel();\n    });\n\n    this.stream.on('data', (data: Buffer) => {\n      this.handleDataFrame(data);\n    });\n    this.stream.pause();\n\n    this.stream.on('end', () => {\n      this.handleEndEvent();\n    });\n\n    if ('grpc.max_send_message_length' in options) {\n      this.maxSendMessageSize = options['grpc.max_send_message_length']!;\n    }\n    if ('grpc.max_receive_message_length' in options) {\n      this.maxReceiveMessageSize = options['grpc.max_receive_message_length']!;\n    }\n\n    this.host = headers[':authority'] ?? headers.host!;\n    this.decoder = new StreamDecoder(this.maxReceiveMessageSize);\n\n    const metadata = Metadata.fromHttp2Headers(headers);\n\n    if (logging.isTracerEnabled(TRACER_NAME)) {\n      trace(\n        'Request to ' +\n          this.handler.path +\n          ' received headers ' +\n          JSON.stringify(metadata.toJSON())\n      );\n    }\n\n    const timeoutHeader = metadata.get(GRPC_TIMEOUT_HEADER);\n\n    if (timeoutHeader.length > 0) {\n      this.handleTimeoutHeader(timeoutHeader[0] as string);\n    }\n\n    const encodingHeader = metadata.get(GRPC_ENCODING_HEADER);\n\n    if (encodingHeader.length > 0) {\n      this.incomingEncoding = encodingHeader[0] as string;\n    }\n\n    // Remove several headers that should not be propagated to the application\n    metadata.remove(GRPC_TIMEOUT_HEADER);\n    metadata.remove(GRPC_ENCODING_HEADER);\n    metadata.remove(GRPC_ACCEPT_ENCODING_HEADER);\n    metadata.remove(http2.constants.HTTP2_HEADER_ACCEPT_ENCODING);\n    metadata.remove(http2.constants.HTTP2_HEADER_TE);\n    metadata.remove(http2.constants.HTTP2_HEADER_CONTENT_TYPE);\n    this.metadata = metadata;\n\n    const socket = stream.session?.socket;\n    this.connectionInfo = {\n      localAddress: socket?.localAddress,\n      localPort: socket?.localPort,\n      remoteAddress: socket?.remoteAddress,\n      remotePort: socket?.remotePort\n    };\n    this.shouldSendMetrics = !!options['grpc.server_call_metric_recording'];\n  }\n\n  private handleTimeoutHeader(timeoutHeader: string) {\n    const match = timeoutHeader.toString().match(DEADLINE_REGEX);\n\n    if (match === null) {\n      const status: PartialStatusObject = {\n        code: Status.INTERNAL,\n        details: `Invalid ${GRPC_TIMEOUT_HEADER} value \"${timeoutHeader}\"`,\n        metadata: null,\n      };\n      // Wait for the constructor to complete before sending the error.\n      process.nextTick(() => {\n        this.sendStatus(status);\n      });\n      return;\n    }\n\n    const timeout = (+match[1] * deadlineUnitsToMs[match[2]]) | 0;\n\n    const now = new Date();\n    this.deadline = now.setMilliseconds(now.getMilliseconds() + timeout);\n    this.deadlineTimer = setTimeout(() => {\n      const status: PartialStatusObject = {\n        code: Status.DEADLINE_EXCEEDED,\n        details: 'Deadline exceeded',\n        metadata: null,\n      };\n      this.sendStatus(status);\n    }, timeout);\n  }\n\n  private checkCancelled(): boolean {\n    /* In some cases the stream can become destroyed before the close event\n     * fires. That creates a race condition that this check works around */\n    if (!this.cancelled && (this.stream.destroyed || this.stream.closed)) {\n      this.notifyOnCancel();\n      this.cancelled = true;\n    }\n    return this.cancelled;\n  }\n  private notifyOnCancel() {\n    if (this.cancelNotified) {\n      return;\n    }\n    this.cancelNotified = true;\n    this.cancelled = true;\n    process.nextTick(() => {\n      this.listener?.onCancel();\n    });\n    if (this.deadlineTimer) {\n      clearTimeout(this.deadlineTimer);\n    }\n    // Flush incoming data frames\n    this.stream.resume();\n  }\n\n  /**\n   * A server handler can start sending messages without explicitly sending\n   * metadata. In that case, we need to send headers before sending any\n   * messages. This function does that if necessary.\n   */\n  private maybeSendMetadata() {\n    if (!this.metadataSent) {\n      this.sendMetadata(new Metadata());\n    }\n  }\n\n  /**\n   * Serialize a message to a length-delimited byte string.\n   * @param value\n   * @returns\n   */\n  private serializeMessage(value: any) {\n    const messageBuffer = this.handler.serialize(value);\n    const byteLength = messageBuffer.byteLength;\n    const output = Buffer.allocUnsafe(byteLength + 5);\n    /* Note: response compression is currently not supported, so this\n     * compressed bit is always 0. */\n    output.writeUInt8(0, 0);\n    output.writeUInt32BE(byteLength, 1);\n    messageBuffer.copy(output, 5);\n    return output;\n  }\n\n  private decompressMessage(\n    message: Buffer,\n    encoding: string\n  ): Buffer | Promise<Buffer> {\n    const messageContents = message.subarray(5);\n    if (encoding === 'identity') {\n      return messageContents;\n    } else if (encoding === 'deflate' || encoding === 'gzip') {\n      let decompresser: zlib.Gunzip | zlib.Deflate;\n      if (encoding === 'deflate') {\n        decompresser = zlib.createInflate();\n      } else {\n        decompresser = zlib.createGunzip();\n      }\n      return new Promise((resolve, reject) => {\n        let totalLength = 0\n        const messageParts: Buffer[] = [];\n        decompresser.on('data', (chunk: Buffer) => {\n          messageParts.push(chunk);\n          totalLength += chunk.byteLength;\n          if (this.maxReceiveMessageSize !== -1 && totalLength > this.maxReceiveMessageSize) {\n            decompresser.destroy();\n            reject({\n              code: Status.RESOURCE_EXHAUSTED,\n              details: `Received message that decompresses to a size larger than ${this.maxReceiveMessageSize}`\n            });\n          }\n        });\n        decompresser.on('end', () => {\n          resolve(Buffer.concat(messageParts));\n        });\n        decompresser.write(messageContents);\n        decompresser.end();\n      });\n    } else {\n      return Promise.reject({\n        code: Status.UNIMPLEMENTED,\n        details: `Received message compressed with unsupported encoding \"${encoding}\"`,\n      });\n    }\n  }\n\n  private async decompressAndMaybePush(queueEntry: ReadQueueEntry) {\n    if (queueEntry.type !== 'COMPRESSED') {\n      throw new Error(`Invalid queue entry type: ${queueEntry.type}`);\n    }\n\n    const compressed = queueEntry.compressedMessage!.readUInt8(0) === 1;\n    const compressedMessageEncoding = compressed\n      ? this.incomingEncoding\n      : 'identity';\n    let decompressedMessage: Buffer;\n    try {\n      decompressedMessage = await this.decompressMessage(\n        queueEntry.compressedMessage!,\n        compressedMessageEncoding\n      );\n    } catch (err) {\n      this.sendStatus(err as PartialStatusObject);\n      return;\n    }\n    try {\n      queueEntry.parsedMessage = this.handler.deserialize(decompressedMessage);\n    } catch (err) {\n      this.sendStatus({\n        code: Status.INTERNAL,\n        details: `Error deserializing request: ${(err as Error).message}`,\n      });\n      return;\n    }\n    queueEntry.type = 'READABLE';\n    this.maybePushNextMessage();\n  }\n\n  private maybePushNextMessage() {\n    if (\n      this.listener &&\n      this.isReadPending &&\n      this.readQueue.length > 0 &&\n      this.readQueue[0].type !== 'COMPRESSED'\n    ) {\n      this.isReadPending = false;\n      const nextQueueEntry = this.readQueue.shift()!;\n      if (nextQueueEntry.type === 'READABLE') {\n        this.listener.onReceiveMessage(nextQueueEntry.parsedMessage);\n      } else {\n        // nextQueueEntry.type === 'HALF_CLOSE'\n        this.listener.onReceiveHalfClose();\n      }\n    }\n  }\n\n  private handleDataFrame(data: Buffer) {\n    if (this.checkCancelled()) {\n      return;\n    }\n    trace(\n      'Request to ' +\n        this.handler.path +\n        ' received data frame of size ' +\n        data.length\n    );\n    let rawMessages: Buffer[];\n    try {\n      rawMessages = this.decoder.write(data);\n    } catch (e) {\n      this.sendStatus({ code: Status.RESOURCE_EXHAUSTED, details: (e as Error).message });\n      return;\n    }\n\n    for (const messageBytes of rawMessages) {\n      this.stream.pause();\n      const queueEntry: ReadQueueEntry = {\n        type: 'COMPRESSED',\n        compressedMessage: messageBytes,\n        parsedMessage: null,\n      };\n      this.readQueue.push(queueEntry);\n      this.decompressAndMaybePush(queueEntry);\n      this.callEventTracker?.addMessageReceived();\n    }\n  }\n  private handleEndEvent() {\n    this.readQueue.push({\n      type: 'HALF_CLOSE',\n      compressedMessage: null,\n      parsedMessage: null,\n    });\n    this.receivedHalfClose = true;\n    this.maybePushNextMessage();\n  }\n  start(listener: InterceptingServerListener): void {\n    trace('Request to ' + this.handler.path + ' start called');\n    if (this.checkCancelled()) {\n      return;\n    }\n    this.listener = listener;\n    listener.onReceiveMetadata(this.metadata);\n  }\n  sendMetadata(metadata: Metadata): void {\n    if (this.checkCancelled()) {\n      return;\n    }\n\n    if (this.metadataSent) {\n      return;\n    }\n\n    this.metadataSent = true;\n    const custom = metadata ? metadata.toHttp2Headers() : null;\n    const headers = {\n      ...defaultResponseHeaders,\n      ...defaultCompressionHeaders,\n      ...custom,\n    };\n    this.stream.respond(headers, defaultResponseOptions);\n  }\n  sendMessage(message: any, callback: () => void): void {\n    if (this.checkCancelled()) {\n      return;\n    }\n    let response: Buffer;\n    try {\n      response = this.serializeMessage(message);\n    } catch (e) {\n      this.sendStatus({\n        code: Status.INTERNAL,\n        details: `Error serializing response: ${getErrorMessage(e)}`,\n        metadata: null,\n      });\n      return;\n    }\n\n    if (\n      this.maxSendMessageSize !== -1 &&\n      response.length - 5 > this.maxSendMessageSize\n    ) {\n      this.sendStatus({\n        code: Status.RESOURCE_EXHAUSTED,\n        details: `Sent message larger than max (${response.length} vs. ${this.maxSendMessageSize})`,\n        metadata: null,\n      });\n      return;\n    }\n    this.maybeSendMetadata();\n    trace(\n      'Request to ' +\n        this.handler.path +\n        ' sent data frame of size ' +\n        response.length\n    );\n    this.stream.write(response, error => {\n      if (error) {\n        this.sendStatus({\n          code: Status.INTERNAL,\n          details: `Error writing message: ${getErrorMessage(error)}`,\n          metadata: null,\n        });\n        return;\n      }\n      this.callEventTracker?.addMessageSent();\n      callback();\n    });\n  }\n  sendStatus(status: PartialStatusObject): void {\n    if (this.checkCancelled()) {\n      return;\n    }\n\n    trace(\n      'Request to method ' +\n        this.handler?.path +\n        ' ended with status code: ' +\n        Status[status.code] +\n        ' details: ' +\n        status.details\n    );\n\n    const statusMetadata = status.metadata?.clone() ?? new Metadata();\n    if (this.shouldSendMetrics) {\n      statusMetadata.set(GRPC_METRICS_HEADER, this.metricsRecorder.serialize());\n    }\n\n    if (this.metadataSent) {\n      if (!this.wantTrailers) {\n        this.wantTrailers = true;\n        this.stream.once('wantTrailers', () => {\n          if (this.callEventTracker && !this.streamEnded) {\n            this.streamEnded = true;\n            this.callEventTracker.onStreamEnd(true);\n            this.callEventTracker.onCallEnd(status);\n          }\n          const trailersToSend: http2.OutgoingHttpHeaders = {\n            [GRPC_STATUS_HEADER]: status.code,\n            [GRPC_MESSAGE_HEADER]: encodeURI(status.details),\n            ...statusMetadata.toHttp2Headers(),\n          };\n\n          this.stream.sendTrailers(trailersToSend);\n          this.notifyOnCancel();\n        });\n        this.stream.end();\n      } else {\n        this.notifyOnCancel();\n      }\n    } else {\n      if (this.callEventTracker && !this.streamEnded) {\n        this.streamEnded = true;\n        this.callEventTracker.onStreamEnd(true);\n        this.callEventTracker.onCallEnd(status);\n      }\n      // Trailers-only response\n      const trailersToSend: http2.OutgoingHttpHeaders = {\n        [GRPC_STATUS_HEADER]: status.code,\n        [GRPC_MESSAGE_HEADER]: encodeURI(status.details),\n        ...defaultResponseHeaders,\n        ...statusMetadata.toHttp2Headers(),\n      };\n      this.stream.respond(trailersToSend, { endStream: true });\n      this.notifyOnCancel();\n    }\n  }\n  startRead(): void {\n    trace('Request to ' + this.handler.path + ' startRead called');\n    if (this.checkCancelled()) {\n      return;\n    }\n    this.isReadPending = true;\n    if (this.readQueue.length === 0) {\n      if (!this.receivedHalfClose) {\n        this.stream.resume();\n      }\n    } else {\n      this.maybePushNextMessage();\n    }\n  }\n  getPeer(): string {\n    const socket = this.stream.session?.socket;\n    if (socket?.remoteAddress) {\n      if (socket.remotePort) {\n        return `${socket.remoteAddress}:${socket.remotePort}`;\n      } else {\n        return socket.remoteAddress;\n      }\n    } else {\n      return 'unknown';\n    }\n  }\n  getDeadline(): Deadline {\n    return this.deadline;\n  }\n  getHost(): string {\n    return this.host;\n  }\n  getAuthContext(): AuthContext {\n    if (this.stream.session?.socket instanceof TLSSocket) {\n      const peerCertificate = this.stream.session.socket.getPeerCertificate();\n      return {\n        transportSecurityType: 'ssl',\n        sslPeerCertificate: peerCertificate.raw ? peerCertificate : undefined\n      }\n    } else {\n      return {};\n    }\n  }\n  getConnectionInfo(): ConnectionInfo {\n    return this.connectionInfo;\n  }\n  getMetricsRecorder(): PerRequestMetricRecorder {\n    return this.metricsRecorder;\n  }\n}\n\nexport function getServerInterceptingCall(\n  interceptors: ServerInterceptor[],\n  stream: http2.ServerHttp2Stream,\n  headers: http2.IncomingHttpHeaders,\n  callEventTracker: CallEventTracker | null,\n  handler: Handler<any, any>,\n  options: ChannelOptions\n) {\n  const methodDefinition: ServerMethodDefinition<any, any> = {\n    path: handler.path,\n    requestStream: handler.type === 'clientStream' || handler.type === 'bidi',\n    responseStream: handler.type === 'serverStream' || handler.type === 'bidi',\n    requestDeserialize: handler.deserialize,\n    responseSerialize: handler.serialize,\n  };\n  const baseCall = new BaseServerInterceptingCall(\n    stream,\n    headers,\n    callEventTracker,\n    handler,\n    options\n  );\n  return interceptors.reduce(\n    (call: ServerInterceptingCallInterface, interceptor: ServerInterceptor) => {\n      return interceptor(methodDefinition, call);\n    },\n    baseCall\n  );\n}\n", "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport * as http2 from 'http2';\nimport * as util from 'util';\n\nimport { ServiceError } from './call';\nimport { Status, LogVerbosity } from './constants';\nimport { Deserialize, Serialize, ServiceDefinition } from './make-client';\nimport { Metadata } from './metadata';\nimport {\n  BidiStreamingHandler,\n  ClientStreamingHandler,\n  HandleCall,\n  Handler,\n  HandlerType,\n  sendUnaryData,\n  ServerDuplexStream,\n  ServerDuplexStreamImpl,\n  ServerReadableStream,\n  ServerStreamingHandler,\n  ServerUnaryCall,\n  ServerWritableStream,\n  ServerWritableStreamImpl,\n  UnaryHandler,\n  ServerErrorResponse,\n  ServerStatusResponse,\n  serverErrorToStatus,\n} from './server-call';\nimport { SecureContextWatcher, ServerCredentials } from './server-credentials';\nimport { ChannelOptions } from './channel-options';\nimport {\n  createResolver,\n  ResolverListener,\n  mapUriDefaultScheme,\n} from './resolver';\nimport * as logging from './logging';\nimport {\n  SubchannelAddress,\n  isTcpSubchannelAddress,\n  subchannelAddressToString,\n  stringToSubchannelAddress,\n} from './subchannel-address';\nimport {\n  GrpcUri,\n  combineHostPort,\n  parseUri,\n  splitHostPort,\n  uriToString,\n} from './uri-parser';\nimport {\n  ChannelzCallTracker,\n  ChannelzCallTrackerStub,\n  ChannelzChildrenTracker,\n  ChannelzChildrenTrackerStub,\n  ChannelzTrace,\n  ChannelzTraceStub,\n  registerChannelzServer,\n  registerChannelzSocket,\n  ServerInfo,\n  ServerRef,\n  SocketInfo,\n  SocketRef,\n  TlsInfo,\n  unregisterChannelzRef,\n} from './channelz';\nimport { CipherNameAndProtocol, TLSSocket } from 'tls';\nimport {\n  ServerInterceptingCallInterface,\n  ServerInterceptor,\n  getServerInterceptingCall,\n} from './server-interceptors';\nimport { PartialStatusObject } from './call-interface';\nimport { CallEventTracker } from './transport';\nimport { Socket } from 'net';\nimport { Duplex } from 'stream';\n\nconst UNLIMITED_CONNECTION_AGE_MS = ~(1 << 31);\nconst KEEPALIVE_MAX_TIME_MS = ~(1 << 31);\nconst KEEPALIVE_TIMEOUT_MS = 20000;\nconst MAX_CONNECTION_IDLE_MS = ~(1 << 31);\n\nconst { HTTP2_HEADER_PATH } = http2.constants;\n\nconst TRACER_NAME = 'server';\nconst kMaxAge = Buffer.from('max_age');\n\nfunction serverCallTrace(text: string) {\n  logging.trace(LogVerbosity.DEBUG, 'server_call', text);\n}\n\ntype AnyHttp2Server = http2.Http2Server | http2.Http2SecureServer;\n\ninterface BindResult {\n  port: number;\n  count: number;\n  errors: string[];\n}\n\ninterface SingleAddressBindResult {\n  port: number;\n  error?: string;\n}\n\nfunction noop(): void {}\n\n/**\n * Decorator to wrap a class method with util.deprecate\n * @param message The message to output if the deprecated method is called\n * @returns\n */\nfunction deprecate(message: string) {\n  return function <This, Args extends any[], Return>(\n    target: (this: This, ...args: Args) => Return,\n    context: ClassMethodDecoratorContext<\n      This,\n      (this: This, ...args: Args) => Return\n    >\n  ) {\n    return util.deprecate(target, message);\n  };\n}\n\nfunction getUnimplementedStatusResponse(\n  methodName: string\n): PartialStatusObject {\n  return {\n    code: Status.UNIMPLEMENTED,\n    details: `The server does not implement the method ${methodName}`,\n  };\n}\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\ntype UntypedUnaryHandler = UnaryHandler<any, any>;\ntype UntypedClientStreamingHandler = ClientStreamingHandler<any, any>;\ntype UntypedServerStreamingHandler = ServerStreamingHandler<any, any>;\ntype UntypedBidiStreamingHandler = BidiStreamingHandler<any, any>;\nexport type UntypedHandleCall = HandleCall<any, any>;\ntype UntypedHandler = Handler<any, any>;\nexport interface UntypedServiceImplementation {\n  [name: string]: UntypedHandleCall;\n}\n\nfunction getDefaultHandler(handlerType: HandlerType, methodName: string) {\n  const unimplementedStatusResponse =\n    getUnimplementedStatusResponse(methodName);\n  switch (handlerType) {\n    case 'unary':\n      return (\n        call: ServerUnaryCall<any, any>,\n        callback: sendUnaryData<any>\n      ) => {\n        callback(unimplementedStatusResponse as ServiceError, null);\n      };\n    case 'clientStream':\n      return (\n        call: ServerReadableStream<any, any>,\n        callback: sendUnaryData<any>\n      ) => {\n        callback(unimplementedStatusResponse as ServiceError, null);\n      };\n    case 'serverStream':\n      return (call: ServerWritableStream<any, any>) => {\n        call.emit('error', unimplementedStatusResponse);\n      };\n    case 'bidi':\n      return (call: ServerDuplexStream<any, any>) => {\n        call.emit('error', unimplementedStatusResponse);\n      };\n    default:\n      throw new Error(`Invalid handlerType ${handlerType}`);\n  }\n}\n\ninterface ChannelzSessionInfo {\n  ref: SocketRef;\n  streamTracker: ChannelzCallTracker | ChannelzCallTrackerStub;\n  messagesSent: number;\n  messagesReceived: number;\n  keepAlivesSent: number;\n  lastMessageSentTimestamp: Date | null;\n  lastMessageReceivedTimestamp: Date | null;\n}\n\n/**\n * Information related to a single invocation of bindAsync. This should be\n * tracked in a map keyed by target string, normalized with a pass through\n * parseUri -> mapUriDefaultScheme -> uriToString. If the target has a port\n * number and the port number is 0, the target string is modified with the\n * concrete bound port.\n */\ninterface BoundPort {\n  /**\n   * The key used to refer to this object in the boundPorts map.\n   */\n  mapKey: string;\n  /**\n   * The target string, passed through parseUri -> mapUriDefaultScheme. Used\n   * to determine the final key when the port number is 0.\n   */\n  originalUri: GrpcUri;\n  /**\n   * If there is a pending bindAsync operation, this is a promise that resolves\n   * with the port number when that operation succeeds. If there is no such\n   * operation pending, this is null.\n   */\n  completionPromise: Promise<number> | null;\n  /**\n   * The port number that was actually bound. Populated only after\n   * completionPromise resolves.\n   */\n  portNumber: number;\n  /**\n   * Set by unbind if called while pending is true.\n   */\n  cancelled: boolean;\n  /**\n   * The credentials object passed to the original bindAsync call.\n   */\n  credentials: ServerCredentials;\n  /**\n   * The set of servers associated with this listening port. A target string\n   * that expands to multiple addresses will result in multiple listening\n   * servers.\n   */\n  listeningServers: Set<AnyHttp2Server>;\n}\n\n/**\n * Should be in a map keyed by AnyHttp2Server.\n */\ninterface Http2ServerInfo {\n  channelzRef: SocketRef;\n  sessions: Set<http2.ServerHttp2Session>;\n  ownsChannelzRef: boolean;\n}\n\ninterface SessionIdleTimeoutTracker {\n  activeStreams: number;\n  lastIdle: number;\n  timeout: NodeJS.Timeout;\n  onClose: (session: http2.ServerHttp2Session) => void | null;\n}\n\nexport interface ServerOptions extends ChannelOptions {\n  interceptors?: ServerInterceptor[];\n}\n\nexport interface ConnectionInjector {\n  injectConnection(connection: Duplex): void;\n  drain(graceTimeMs: number): void;\n  destroy(): void;\n}\n\nexport class Server {\n  private boundPorts: Map<string, BoundPort> = new Map();\n  private http2Servers: Map<AnyHttp2Server, Http2ServerInfo> = new Map();\n  private sessionIdleTimeouts = new Map<\n    http2.ServerHttp2Session,\n    SessionIdleTimeoutTracker\n  >();\n\n  private handlers: Map<string, UntypedHandler> = new Map<\n    string,\n    UntypedHandler\n  >();\n  private sessions = new Map<http2.ServerHttp2Session, ChannelzSessionInfo>();\n  /**\n   * This field only exists to ensure that the start method throws an error if\n   * it is called twice, as it did previously.\n   */\n  private started = false;\n  private shutdown = false;\n  private options: ServerOptions;\n  private serverAddressString = 'null';\n\n  // Channelz Info\n  private readonly channelzEnabled: boolean = true;\n  private channelzRef: ServerRef;\n  private channelzTrace: ChannelzTrace | ChannelzTraceStub;\n  private callTracker: ChannelzCallTracker | ChannelzCallTrackerStub;\n  private listenerChildrenTracker:\n    | ChannelzChildrenTracker\n    | ChannelzChildrenTrackerStub;\n  private sessionChildrenTracker:\n    | ChannelzChildrenTracker\n    | ChannelzChildrenTrackerStub;\n\n  private readonly maxConnectionAgeMs: number;\n  private readonly maxConnectionAgeGraceMs: number;\n\n  private readonly keepaliveTimeMs: number;\n  private readonly keepaliveTimeoutMs: number;\n\n  private readonly sessionIdleTimeout: number;\n\n  private readonly interceptors: ServerInterceptor[];\n\n  /**\n   * Options that will be used to construct all Http2Server instances for this\n   * Server.\n   */\n  private commonServerOptions: http2.ServerOptions;\n\n  constructor(options?: ServerOptions) {\n    this.options = options ?? {};\n    if (this.options['grpc.enable_channelz'] === 0) {\n      this.channelzEnabled = false;\n      this.channelzTrace = new ChannelzTraceStub();\n      this.callTracker = new ChannelzCallTrackerStub();\n      this.listenerChildrenTracker = new ChannelzChildrenTrackerStub();\n      this.sessionChildrenTracker = new ChannelzChildrenTrackerStub();\n    } else {\n      this.channelzTrace = new ChannelzTrace();\n      this.callTracker = new ChannelzCallTracker();\n      this.listenerChildrenTracker = new ChannelzChildrenTracker();\n      this.sessionChildrenTracker = new ChannelzChildrenTracker();\n    }\n\n    this.channelzRef = registerChannelzServer(\n      'server',\n      () => this.getChannelzInfo(),\n      this.channelzEnabled\n    );\n\n    this.channelzTrace.addTrace('CT_INFO', 'Server created');\n    this.maxConnectionAgeMs =\n      this.options['grpc.max_connection_age_ms'] ?? UNLIMITED_CONNECTION_AGE_MS;\n    this.maxConnectionAgeGraceMs =\n      this.options['grpc.max_connection_age_grace_ms'] ??\n      UNLIMITED_CONNECTION_AGE_MS;\n    this.keepaliveTimeMs =\n      this.options['grpc.keepalive_time_ms'] ?? KEEPALIVE_MAX_TIME_MS;\n    this.keepaliveTimeoutMs =\n      this.options['grpc.keepalive_timeout_ms'] ?? KEEPALIVE_TIMEOUT_MS;\n    this.sessionIdleTimeout =\n      this.options['grpc.max_connection_idle_ms'] ?? MAX_CONNECTION_IDLE_MS;\n\n    this.commonServerOptions = {\n      maxSendHeaderBlockLength: Number.MAX_SAFE_INTEGER,\n    };\n    if ('grpc-node.max_session_memory' in this.options) {\n      this.commonServerOptions.maxSessionMemory =\n        this.options['grpc-node.max_session_memory'];\n    } else {\n      /* By default, set a very large max session memory limit, to effectively\n       * disable enforcement of the limit. Some testing indicates that Node's\n       * behavior degrades badly when this limit is reached, so we solve that\n       * by disabling the check entirely. */\n      this.commonServerOptions.maxSessionMemory = Number.MAX_SAFE_INTEGER;\n    }\n    if ('grpc.max_concurrent_streams' in this.options) {\n      this.commonServerOptions.settings = {\n        maxConcurrentStreams: this.options['grpc.max_concurrent_streams'],\n      };\n    }\n    this.interceptors = this.options.interceptors ?? [];\n    this.trace('Server constructed');\n  }\n\n  private getChannelzInfo(): ServerInfo {\n    return {\n      trace: this.channelzTrace,\n      callTracker: this.callTracker,\n      listenerChildren: this.listenerChildrenTracker.getChildLists(),\n      sessionChildren: this.sessionChildrenTracker.getChildLists(),\n    };\n  }\n\n  private getChannelzSessionInfo(\n    session: http2.ServerHttp2Session\n  ): SocketInfo {\n    const sessionInfo = this.sessions.get(session)!;\n    const sessionSocket = session.socket;\n    const remoteAddress = sessionSocket.remoteAddress\n      ? stringToSubchannelAddress(\n          sessionSocket.remoteAddress,\n          sessionSocket.remotePort\n        )\n      : null;\n    const localAddress = sessionSocket.localAddress\n      ? stringToSubchannelAddress(\n          sessionSocket.localAddress!,\n          sessionSocket.localPort\n        )\n      : null;\n    let tlsInfo: TlsInfo | null;\n    if (session.encrypted) {\n      const tlsSocket: TLSSocket = sessionSocket as TLSSocket;\n      const cipherInfo: CipherNameAndProtocol & { standardName?: string } =\n        tlsSocket.getCipher();\n      const certificate = tlsSocket.getCertificate();\n      const peerCertificate = tlsSocket.getPeerCertificate();\n      tlsInfo = {\n        cipherSuiteStandardName: cipherInfo.standardName ?? null,\n        cipherSuiteOtherName: cipherInfo.standardName ? null : cipherInfo.name,\n        localCertificate:\n          certificate && 'raw' in certificate ? certificate.raw : null,\n        remoteCertificate:\n          peerCertificate && 'raw' in peerCertificate\n            ? peerCertificate.raw\n            : null,\n      };\n    } else {\n      tlsInfo = null;\n    }\n    const socketInfo: SocketInfo = {\n      remoteAddress: remoteAddress,\n      localAddress: localAddress,\n      security: tlsInfo,\n      remoteName: null,\n      streamsStarted: sessionInfo.streamTracker.callsStarted,\n      streamsSucceeded: sessionInfo.streamTracker.callsSucceeded,\n      streamsFailed: sessionInfo.streamTracker.callsFailed,\n      messagesSent: sessionInfo.messagesSent,\n      messagesReceived: sessionInfo.messagesReceived,\n      keepAlivesSent: sessionInfo.keepAlivesSent,\n      lastLocalStreamCreatedTimestamp: null,\n      lastRemoteStreamCreatedTimestamp:\n        sessionInfo.streamTracker.lastCallStartedTimestamp,\n      lastMessageSentTimestamp: sessionInfo.lastMessageSentTimestamp,\n      lastMessageReceivedTimestamp: sessionInfo.lastMessageReceivedTimestamp,\n      localFlowControlWindow: session.state.localWindowSize ?? null,\n      remoteFlowControlWindow: session.state.remoteWindowSize ?? null,\n    };\n    return socketInfo;\n  }\n\n  private trace(text: string): void {\n    logging.trace(\n      LogVerbosity.DEBUG,\n      TRACER_NAME,\n      '(' + this.channelzRef.id + ') ' + text\n    );\n  }\n\n  private keepaliveTrace(text: string): void {\n    logging.trace(\n      LogVerbosity.DEBUG,\n      'keepalive',\n      '(' + this.channelzRef.id + ') ' + text\n    );\n  }\n\n  addProtoService(): never {\n    throw new Error('Not implemented. Use addService() instead');\n  }\n\n  addService(\n    service: ServiceDefinition,\n    implementation: UntypedServiceImplementation\n  ): void {\n    if (\n      service === null ||\n      typeof service !== 'object' ||\n      implementation === null ||\n      typeof implementation !== 'object'\n    ) {\n      throw new Error('addService() requires two objects as arguments');\n    }\n\n    const serviceKeys = Object.keys(service);\n\n    if (serviceKeys.length === 0) {\n      throw new Error('Cannot add an empty service to a server');\n    }\n\n    serviceKeys.forEach(name => {\n      const attrs = service[name];\n      let methodType: HandlerType;\n\n      if (attrs.requestStream) {\n        if (attrs.responseStream) {\n          methodType = 'bidi';\n        } else {\n          methodType = 'clientStream';\n        }\n      } else {\n        if (attrs.responseStream) {\n          methodType = 'serverStream';\n        } else {\n          methodType = 'unary';\n        }\n      }\n\n      let implFn = implementation[name];\n      let impl;\n\n      if (implFn === undefined && typeof attrs.originalName === 'string') {\n        implFn = implementation[attrs.originalName];\n      }\n\n      if (implFn !== undefined) {\n        impl = implFn.bind(implementation);\n      } else {\n        impl = getDefaultHandler(methodType, name);\n      }\n\n      const success = this.register(\n        attrs.path,\n        impl as UntypedHandleCall,\n        attrs.responseSerialize,\n        attrs.requestDeserialize,\n        methodType\n      );\n\n      if (success === false) {\n        throw new Error(`Method handler for ${attrs.path} already provided.`);\n      }\n    });\n  }\n\n  removeService(service: ServiceDefinition): void {\n    if (service === null || typeof service !== 'object') {\n      throw new Error('removeService() requires object as argument');\n    }\n\n    const serviceKeys = Object.keys(service);\n    serviceKeys.forEach(name => {\n      const attrs = service[name];\n      this.unregister(attrs.path);\n    });\n  }\n\n  bind(port: string, creds: ServerCredentials): never {\n    throw new Error('Not implemented. Use bindAsync() instead');\n  }\n\n  /**\n   * This API is experimental, so API stability is not guaranteed across minor versions.\n   * @param boundAddress\n   * @returns\n   */\n  protected experimentalRegisterListenerToChannelz(boundAddress: SubchannelAddress) {\n    return registerChannelzSocket(\n      subchannelAddressToString(boundAddress),\n      () => {\n        return {\n          localAddress: boundAddress,\n          remoteAddress: null,\n          security: null,\n          remoteName: null,\n          streamsStarted: 0,\n          streamsSucceeded: 0,\n          streamsFailed: 0,\n          messagesSent: 0,\n          messagesReceived: 0,\n          keepAlivesSent: 0,\n          lastLocalStreamCreatedTimestamp: null,\n          lastRemoteStreamCreatedTimestamp: null,\n          lastMessageSentTimestamp: null,\n          lastMessageReceivedTimestamp: null,\n          localFlowControlWindow: null,\n          remoteFlowControlWindow: null,\n        };\n      },\n      this.channelzEnabled\n    );\n  }\n\n  protected experimentalUnregisterListenerFromChannelz(channelzRef: SocketRef) {\n    unregisterChannelzRef(channelzRef);\n  }\n\n  private createHttp2Server(credentials: ServerCredentials) {\n    let http2Server: http2.Http2Server | http2.Http2SecureServer;\n    if (credentials._isSecure()) {\n      const constructorOptions = credentials._getConstructorOptions();\n      const contextOptions = credentials._getSecureContextOptions();\n      const secureServerOptions: http2.SecureServerOptions = {\n        ...this.commonServerOptions,\n        ...constructorOptions,\n        ...contextOptions,\n        enableTrace: this.options['grpc-node.tls_enable_trace'] === 1\n      };\n      let areCredentialsValid = contextOptions !== null;\n      this.trace('Initial credentials valid: ' + areCredentialsValid);\n      http2Server = http2.createSecureServer(secureServerOptions);\n      http2Server.prependListener('connection', (socket: Socket) => {\n        if (!areCredentialsValid) {\n          this.trace('Dropped connection from ' + JSON.stringify(socket.address()) + ' due to unloaded credentials');\n          socket.destroy();\n        }\n      });\n      http2Server.on('secureConnection', (socket: TLSSocket) => {\n        /* These errors need to be handled by the user of Http2SecureServer,\n         * according to https://github.com/nodejs/node/issues/35824 */\n        socket.on('error', (e: Error) => {\n          this.trace(\n            'An incoming TLS connection closed with error: ' + e.message\n          );\n        });\n      });\n      const credsWatcher: SecureContextWatcher = options => {\n        if (options) {\n          const secureServer = http2Server as http2.Http2SecureServer;\n          try {\n            secureServer.setSecureContext(options);\n          } catch (e) {\n            logging.log(LogVerbosity.ERROR, 'Failed to set secure context with error ' + (e as Error).message);\n            options = null;\n          }\n        }\n        areCredentialsValid = options !== null;\n        this.trace('Post-update credentials valid: ' + areCredentialsValid);\n      }\n      credentials._addWatcher(credsWatcher);\n      http2Server.on('close', () => {\n        credentials._removeWatcher(credsWatcher);\n      });\n    } else {\n      http2Server = http2.createServer(this.commonServerOptions);\n    }\n\n    http2Server.setTimeout(0, noop);\n    this._setupHandlers(http2Server, credentials._getInterceptors());\n    return http2Server;\n  }\n\n  private bindOneAddress(\n    address: SubchannelAddress,\n    boundPortObject: BoundPort\n  ): Promise<SingleAddressBindResult> {\n    this.trace('Attempting to bind ' + subchannelAddressToString(address));\n    const http2Server = this.createHttp2Server(boundPortObject.credentials);\n    return new Promise<SingleAddressBindResult>((resolve, reject) => {\n      const onError = (err: Error) => {\n        this.trace(\n          'Failed to bind ' +\n            subchannelAddressToString(address) +\n            ' with error ' +\n            err.message\n        );\n        resolve({\n          port: 'port' in address ? address.port : 1,\n          error: err.message,\n        });\n      };\n\n      http2Server.once('error', onError);\n\n      http2Server.listen(address, () => {\n        const boundAddress = http2Server.address()!;\n        let boundSubchannelAddress: SubchannelAddress;\n        if (typeof boundAddress === 'string') {\n          boundSubchannelAddress = {\n            path: boundAddress,\n          };\n        } else {\n          boundSubchannelAddress = {\n            host: boundAddress.address,\n            port: boundAddress.port,\n          };\n        }\n\n        const channelzRef = this.experimentalRegisterListenerToChannelz(\n          boundSubchannelAddress\n        );\n        this.listenerChildrenTracker.refChild(channelzRef);\n\n        this.http2Servers.set(http2Server, {\n          channelzRef: channelzRef,\n          sessions: new Set(),\n          ownsChannelzRef: true\n        });\n        boundPortObject.listeningServers.add(http2Server);\n        this.trace(\n          'Successfully bound ' +\n            subchannelAddressToString(boundSubchannelAddress)\n        );\n        resolve({\n          port:\n            'port' in boundSubchannelAddress ? boundSubchannelAddress.port : 1,\n        });\n        http2Server.removeListener('error', onError);\n      });\n    });\n  }\n\n  private async bindManyPorts(\n    addressList: SubchannelAddress[],\n    boundPortObject: BoundPort\n  ): Promise<BindResult> {\n    if (addressList.length === 0) {\n      return {\n        count: 0,\n        port: 0,\n        errors: [],\n      };\n    }\n    if (isTcpSubchannelAddress(addressList[0]) && addressList[0].port === 0) {\n      /* If binding to port 0, first try to bind the first address, then bind\n       * the rest of the address list to the specific port that it binds. */\n      const firstAddressResult = await this.bindOneAddress(\n        addressList[0],\n        boundPortObject\n      );\n      if (firstAddressResult.error) {\n        /* If the first address fails to bind, try the same operation starting\n         * from the second item in the list. */\n        const restAddressResult = await this.bindManyPorts(\n          addressList.slice(1),\n          boundPortObject\n        );\n        return {\n          ...restAddressResult,\n          errors: [firstAddressResult.error, ...restAddressResult.errors],\n        };\n      } else {\n        const restAddresses = addressList\n          .slice(1)\n          .map(address =>\n            isTcpSubchannelAddress(address)\n              ? { host: address.host, port: firstAddressResult.port }\n              : address\n          );\n        const restAddressResult = await Promise.all(\n          restAddresses.map(address =>\n            this.bindOneAddress(address, boundPortObject)\n          )\n        );\n        const allResults = [firstAddressResult, ...restAddressResult];\n        return {\n          count: allResults.filter(result => result.error === undefined).length,\n          port: firstAddressResult.port,\n          errors: allResults\n            .filter(result => result.error)\n            .map(result => result.error!),\n        };\n      }\n    } else {\n      const allResults = await Promise.all(\n        addressList.map(address =>\n          this.bindOneAddress(address, boundPortObject)\n        )\n      );\n      return {\n        count: allResults.filter(result => result.error === undefined).length,\n        port: allResults[0].port,\n        errors: allResults\n          .filter(result => result.error)\n          .map(result => result.error!),\n      };\n    }\n  }\n\n  private async bindAddressList(\n    addressList: SubchannelAddress[],\n    boundPortObject: BoundPort\n  ): Promise<number> {\n    const bindResult = await this.bindManyPorts(addressList, boundPortObject);\n    if (bindResult.count > 0) {\n      if (bindResult.count < addressList.length) {\n        logging.log(\n          LogVerbosity.INFO,\n          `WARNING Only ${bindResult.count} addresses added out of total ${addressList.length} resolved`\n        );\n      }\n      return bindResult.port;\n    } else {\n      const errorString = `No address added out of total ${addressList.length} resolved`;\n      logging.log(LogVerbosity.ERROR, errorString);\n      throw new Error(\n        `${errorString} errors: [${bindResult.errors.join(',')}]`\n      );\n    }\n  }\n\n  private resolvePort(port: GrpcUri): Promise<SubchannelAddress[]> {\n    return new Promise<SubchannelAddress[]>((resolve, reject) => {\n      let seenResolution = false;\n      const resolverListener: ResolverListener = (\n        endpointList,\n        attributes,\n        serviceConfig,\n        resolutionNote\n      ) => {\n        if (seenResolution) {\n          return true;\n        }\n        seenResolution = true;\n        if (!endpointList.ok) {\n          reject(new Error(endpointList.error.details));\n          return true;\n        }\n        const addressList = ([] as SubchannelAddress[]).concat(\n          ...endpointList.value.map(endpoint => endpoint.addresses)\n        );\n        if (addressList.length === 0) {\n          reject(new Error(`No addresses resolved for port ${port}`));\n          return true;\n        }\n        resolve(addressList);\n        return true;\n      }\n      const resolver = createResolver(port, resolverListener, this.options);\n      resolver.updateResolution();\n    });\n  }\n\n  private async bindPort(\n    port: GrpcUri,\n    boundPortObject: BoundPort\n  ): Promise<number> {\n    const addressList = await this.resolvePort(port);\n    if (boundPortObject.cancelled) {\n      this.completeUnbind(boundPortObject);\n      throw new Error('bindAsync operation cancelled by unbind call');\n    }\n    const portNumber = await this.bindAddressList(addressList, boundPortObject);\n    if (boundPortObject.cancelled) {\n      this.completeUnbind(boundPortObject);\n      throw new Error('bindAsync operation cancelled by unbind call');\n    }\n    return portNumber;\n  }\n\n  private normalizePort(port: string): GrpcUri {\n    const initialPortUri = parseUri(port);\n    if (initialPortUri === null) {\n      throw new Error(`Could not parse port \"${port}\"`);\n    }\n    const portUri = mapUriDefaultScheme(initialPortUri);\n    if (portUri === null) {\n      throw new Error(`Could not get a default scheme for port \"${port}\"`);\n    }\n    return portUri;\n  }\n\n  bindAsync(\n    port: string,\n    creds: ServerCredentials,\n    callback: (error: Error | null, port: number) => void\n  ): void {\n    if (this.shutdown) {\n      throw new Error('bindAsync called after shutdown');\n    }\n    if (typeof port !== 'string') {\n      throw new TypeError('port must be a string');\n    }\n\n    if (creds === null || !(creds instanceof ServerCredentials)) {\n      throw new TypeError('creds must be a ServerCredentials object');\n    }\n\n    if (typeof callback !== 'function') {\n      throw new TypeError('callback must be a function');\n    }\n\n    this.trace('bindAsync port=' + port);\n\n    const portUri = this.normalizePort(port);\n\n    const deferredCallback = (error: Error | null, port: number) => {\n      process.nextTick(() => callback(error, port));\n    };\n\n    /* First, if this port is already bound or that bind operation is in\n     * progress, use that result. */\n    let boundPortObject = this.boundPorts.get(uriToString(portUri));\n    if (boundPortObject) {\n      if (!creds._equals(boundPortObject.credentials)) {\n        deferredCallback(\n          new Error(`${port} already bound with incompatible credentials`),\n          0\n        );\n        return;\n      }\n      /* If that operation has previously been cancelled by an unbind call,\n       * uncancel it. */\n      boundPortObject.cancelled = false;\n      if (boundPortObject.completionPromise) {\n        boundPortObject.completionPromise.then(\n          portNum => callback(null, portNum),\n          error => callback(error as Error, 0)\n        );\n      } else {\n        deferredCallback(null, boundPortObject.portNumber);\n      }\n      return;\n    }\n    boundPortObject = {\n      mapKey: uriToString(portUri),\n      originalUri: portUri,\n      completionPromise: null,\n      cancelled: false,\n      portNumber: 0,\n      credentials: creds,\n      listeningServers: new Set(),\n    };\n    const splitPort = splitHostPort(portUri.path);\n    const completionPromise = this.bindPort(portUri, boundPortObject);\n    boundPortObject.completionPromise = completionPromise;\n    /* If the port number is 0, defer populating the map entry until after the\n     * bind operation completes and we have a specific port number. Otherwise,\n     * populate it immediately. */\n    if (splitPort?.port === 0) {\n      completionPromise.then(\n        portNum => {\n          const finalUri: GrpcUri = {\n            scheme: portUri.scheme,\n            authority: portUri.authority,\n            path: combineHostPort({ host: splitPort.host, port: portNum }),\n          };\n          boundPortObject!.mapKey = uriToString(finalUri);\n          boundPortObject!.completionPromise = null;\n          boundPortObject!.portNumber = portNum;\n          this.boundPorts.set(boundPortObject!.mapKey, boundPortObject!);\n          callback(null, portNum);\n        },\n        error => {\n          callback(error, 0);\n        }\n      );\n    } else {\n      this.boundPorts.set(boundPortObject.mapKey, boundPortObject);\n      completionPromise.then(\n        portNum => {\n          boundPortObject!.completionPromise = null;\n          boundPortObject!.portNumber = portNum;\n          callback(null, portNum);\n        },\n        error => {\n          callback(error, 0);\n        }\n      );\n    }\n  }\n\n  private registerInjectorToChannelz() {\n    return registerChannelzSocket(\n      'injector',\n      () => {\n        return {\n          localAddress: null,\n          remoteAddress: null,\n          security: null,\n          remoteName: null,\n          streamsStarted: 0,\n          streamsSucceeded: 0,\n          streamsFailed: 0,\n          messagesSent: 0,\n          messagesReceived: 0,\n          keepAlivesSent: 0,\n          lastLocalStreamCreatedTimestamp: null,\n          lastRemoteStreamCreatedTimestamp: null,\n          lastMessageSentTimestamp: null,\n          lastMessageReceivedTimestamp: null,\n          localFlowControlWindow: null,\n          remoteFlowControlWindow: null,\n        };\n      },\n      this.channelzEnabled\n    );\n  }\n\n  /**\n   * This API is experimental, so API stability is not guaranteed across minor versions.\n   * @param credentials\n   * @param channelzRef\n   * @returns\n   */\n  protected experimentalCreateConnectionInjectorWithChannelzRef(credentials: ServerCredentials, channelzRef: SocketRef, ownsChannelzRef=false) {\n    if (credentials === null || !(credentials instanceof ServerCredentials)) {\n      throw new TypeError('creds must be a ServerCredentials object');\n    }\n    if (this.channelzEnabled) {\n      this.listenerChildrenTracker.refChild(channelzRef);\n    }\n    const server = this.createHttp2Server(credentials);\n    const sessionsSet: Set<http2.ServerHttp2Session> = new Set();\n    this.http2Servers.set(server, {\n      channelzRef: channelzRef,\n      sessions: sessionsSet,\n      ownsChannelzRef\n    });\n    return {\n      injectConnection: (connection: Duplex) => {\n        server.emit('connection', connection);\n      },\n      drain: (graceTimeMs: number) => {\n        for (const session of sessionsSet) {\n          this.closeSession(session);\n        }\n        setTimeout(() => {\n          for (const session of sessionsSet) {\n            session.destroy(http2.constants.NGHTTP2_CANCEL as any);\n          }\n        }, graceTimeMs).unref?.();\n      },\n      destroy: () => {\n        this.closeServer(server)\n        for (const session of sessionsSet) {\n          this.closeSession(session);\n        }\n      }\n    };\n  }\n\n  createConnectionInjector(credentials: ServerCredentials): ConnectionInjector {\n    if (credentials === null || !(credentials instanceof ServerCredentials)) {\n      throw new TypeError('creds must be a ServerCredentials object');\n    }\n    const channelzRef = this.registerInjectorToChannelz();\n    return this.experimentalCreateConnectionInjectorWithChannelzRef(credentials, channelzRef, true);\n  }\n\n  private closeServer(server: AnyHttp2Server, callback?: () => void) {\n    this.trace(\n      'Closing server with address ' + JSON.stringify(server.address())\n    );\n    const serverInfo = this.http2Servers.get(server);\n    server.close(() => {\n      if (serverInfo && serverInfo.ownsChannelzRef) {\n        this.listenerChildrenTracker.unrefChild(serverInfo.channelzRef);\n        unregisterChannelzRef(serverInfo.channelzRef);\n      }\n      this.http2Servers.delete(server);\n      callback?.();\n    });\n  }\n\n  private closeSession(\n    session: http2.ServerHttp2Session,\n    callback?: () => void\n  ) {\n    this.trace('Closing session initiated by ' + session.socket?.remoteAddress);\n    const sessionInfo = this.sessions.get(session);\n    const closeCallback = () => {\n      if (sessionInfo) {\n        this.sessionChildrenTracker.unrefChild(sessionInfo.ref);\n        unregisterChannelzRef(sessionInfo.ref);\n      }\n      callback?.();\n    };\n    if (session.closed) {\n      queueMicrotask(closeCallback);\n    } else {\n      session.close(closeCallback);\n    }\n  }\n\n  private completeUnbind(boundPortObject: BoundPort) {\n    for (const server of boundPortObject.listeningServers) {\n      const serverInfo = this.http2Servers.get(server);\n      this.closeServer(server, () => {\n        boundPortObject.listeningServers.delete(server);\n      });\n      if (serverInfo) {\n        for (const session of serverInfo.sessions) {\n          this.closeSession(session);\n        }\n      }\n    }\n    this.boundPorts.delete(boundPortObject.mapKey);\n  }\n\n  /**\n   * Unbind a previously bound port, or cancel an in-progress bindAsync\n   * operation. If port 0 was bound, only the actual bound port can be\n   * unbound. For example, if bindAsync was called with \"localhost:0\" and the\n   * bound port result was 54321, it can be unbound as \"localhost:54321\".\n   * @param port\n   */\n  unbind(port: string): void {\n    this.trace('unbind port=' + port);\n    const portUri = this.normalizePort(port);\n    const splitPort = splitHostPort(portUri.path);\n    if (splitPort?.port === 0) {\n      throw new Error('Cannot unbind port 0');\n    }\n    const boundPortObject = this.boundPorts.get(uriToString(portUri));\n    if (boundPortObject) {\n      this.trace(\n        'unbinding ' +\n          boundPortObject.mapKey +\n          ' originally bound as ' +\n          uriToString(boundPortObject.originalUri)\n      );\n      /* If the bind operation is pending, the cancelled flag will trigger\n       * the unbind operation later. */\n      if (boundPortObject.completionPromise) {\n        boundPortObject.cancelled = true;\n      } else {\n        this.completeUnbind(boundPortObject);\n      }\n    }\n  }\n\n  /**\n   * Gracefully close all connections associated with a previously bound port.\n   * After the grace time, forcefully close all remaining open connections.\n   *\n   * If port 0 was bound, only the actual bound port can be\n   * drained. For example, if bindAsync was called with \"localhost:0\" and the\n   * bound port result was 54321, it can be drained as \"localhost:54321\".\n   * @param port\n   * @param graceTimeMs\n   * @returns\n   */\n  drain(port: string, graceTimeMs: number): void {\n    this.trace('drain port=' + port + ' graceTimeMs=' + graceTimeMs);\n    const portUri = this.normalizePort(port);\n    const splitPort = splitHostPort(portUri.path);\n    if (splitPort?.port === 0) {\n      throw new Error('Cannot drain port 0');\n    }\n    const boundPortObject = this.boundPorts.get(uriToString(portUri));\n    if (!boundPortObject) {\n      return;\n    }\n    const allSessions: Set<http2.Http2Session> = new Set();\n    for (const http2Server of boundPortObject.listeningServers) {\n      const serverEntry = this.http2Servers.get(http2Server);\n      if (serverEntry) {\n        for (const session of serverEntry.sessions) {\n          allSessions.add(session);\n          this.closeSession(session, () => {\n            allSessions.delete(session);\n          });\n        }\n      }\n    }\n    /* After the grace time ends, send another goaway to all remaining sessions\n     * with the CANCEL code. */\n    setTimeout(() => {\n      for (const session of allSessions) {\n        session.destroy(http2.constants.NGHTTP2_CANCEL as any);\n      }\n    }, graceTimeMs).unref?.();\n  }\n\n  forceShutdown(): void {\n    for (const boundPortObject of this.boundPorts.values()) {\n      boundPortObject.cancelled = true;\n    }\n    this.boundPorts.clear();\n    // Close the server if it is still running.\n    for (const server of this.http2Servers.keys()) {\n      this.closeServer(server);\n    }\n\n    // Always destroy any available sessions. It's possible that one or more\n    // tryShutdown() calls are in progress. Don't wait on them to finish.\n    this.sessions.forEach((channelzInfo, session) => {\n      this.closeSession(session);\n      // Cast NGHTTP2_CANCEL to any because TypeScript doesn't seem to\n      // recognize destroy(code) as a valid signature.\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any\n      session.destroy(http2.constants.NGHTTP2_CANCEL as any);\n    });\n    this.sessions.clear();\n    unregisterChannelzRef(this.channelzRef);\n\n    this.shutdown = true;\n  }\n\n  register<RequestType, ResponseType>(\n    name: string,\n    handler: HandleCall<RequestType, ResponseType>,\n    serialize: Serialize<ResponseType>,\n    deserialize: Deserialize<RequestType>,\n    type: string\n  ): boolean {\n    if (this.handlers.has(name)) {\n      return false;\n    }\n\n    this.handlers.set(name, {\n      func: handler,\n      serialize,\n      deserialize,\n      type,\n      path: name,\n    } as UntypedHandler);\n    return true;\n  }\n\n  unregister(name: string): boolean {\n    return this.handlers.delete(name);\n  }\n\n  /**\n   * @deprecated No longer needed as of version 1.10.x\n   */\n  @deprecate(\n    'Calling start() is no longer necessary. It can be safely omitted.'\n  )\n  start(): void {\n    if (\n      this.http2Servers.size === 0 ||\n      [...this.http2Servers.keys()].every(server => !server.listening)\n    ) {\n      throw new Error('server must be bound in order to start');\n    }\n\n    if (this.started === true) {\n      throw new Error('server is already started');\n    }\n    this.started = true;\n  }\n\n  tryShutdown(callback: (error?: Error) => void): void {\n    const wrappedCallback = (error?: Error) => {\n      unregisterChannelzRef(this.channelzRef);\n      callback(error);\n    };\n    let pendingChecks = 0;\n\n    function maybeCallback(): void {\n      pendingChecks--;\n\n      if (pendingChecks === 0) {\n        wrappedCallback();\n      }\n    }\n    this.shutdown = true;\n\n    for (const [serverKey, server] of this.http2Servers.entries()) {\n      pendingChecks++;\n      const serverString = server.channelzRef.name;\n      this.trace('Waiting for server ' + serverString + ' to close');\n      this.closeServer(serverKey, () => {\n        this.trace('Server ' + serverString + ' finished closing');\n        maybeCallback();\n      });\n\n      for (const session of server.sessions.keys()) {\n        pendingChecks++;\n        const sessionString = session.socket?.remoteAddress;\n        this.trace('Waiting for session ' + sessionString + ' to close');\n        this.closeSession(session, () => {\n          this.trace('Session ' + sessionString + ' finished closing');\n          maybeCallback();\n        });\n      }\n    }\n\n    if (pendingChecks === 0) {\n      wrappedCallback();\n    }\n  }\n\n  addHttp2Port(): never {\n    throw new Error('Not yet implemented');\n  }\n\n  /**\n   * Get the channelz reference object for this server. The returned value is\n   * garbage if channelz is disabled for this server.\n   * @returns\n   */\n  getChannelzRef() {\n    return this.channelzRef;\n  }\n\n  private _verifyContentType(\n    stream: http2.ServerHttp2Stream,\n    headers: http2.IncomingHttpHeaders\n  ): boolean {\n    const contentType = headers[http2.constants.HTTP2_HEADER_CONTENT_TYPE];\n\n    if (\n      typeof contentType !== 'string' ||\n      !contentType.startsWith('application/grpc')\n    ) {\n      stream.respond(\n        {\n          [http2.constants.HTTP2_HEADER_STATUS]:\n            http2.constants.HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE,\n        },\n        { endStream: true }\n      );\n      return false;\n    }\n\n    return true;\n  }\n\n  private _retrieveHandler(path: string): Handler<any, any> | null {\n    serverCallTrace(\n      'Received call to method ' +\n        path +\n        ' at address ' +\n        this.serverAddressString\n    );\n\n    const handler = this.handlers.get(path);\n\n    if (handler === undefined) {\n      serverCallTrace(\n        'No handler registered for method ' +\n          path +\n          '. Sending UNIMPLEMENTED status.'\n      );\n      return null;\n    }\n\n    return handler;\n  }\n\n  private _respondWithError(\n    err: PartialStatusObject,\n    stream: http2.ServerHttp2Stream,\n    channelzSessionInfo: ChannelzSessionInfo | null = null\n  ) {\n    const trailersToSend = {\n      'grpc-status': err.code ?? Status.INTERNAL,\n      'grpc-message': err.details,\n      [http2.constants.HTTP2_HEADER_STATUS]: http2.constants.HTTP_STATUS_OK,\n      [http2.constants.HTTP2_HEADER_CONTENT_TYPE]: 'application/grpc+proto',\n      ...err.metadata?.toHttp2Headers(),\n    };\n    stream.respond(trailersToSend, { endStream: true });\n\n    this.callTracker.addCallFailed();\n    channelzSessionInfo?.streamTracker.addCallFailed();\n  }\n\n  private _channelzHandler(\n    extraInterceptors: ServerInterceptor[],\n    stream: http2.ServerHttp2Stream,\n    headers: http2.IncomingHttpHeaders\n  ) {\n    // for handling idle timeout\n    this.onStreamOpened(stream);\n\n    const channelzSessionInfo = this.sessions.get(\n      stream.session as http2.ServerHttp2Session\n    );\n\n    this.callTracker.addCallStarted();\n    channelzSessionInfo?.streamTracker.addCallStarted();\n\n    if (!this._verifyContentType(stream, headers)) {\n      this.callTracker.addCallFailed();\n      channelzSessionInfo?.streamTracker.addCallFailed();\n      return;\n    }\n\n    const path = headers[HTTP2_HEADER_PATH] as string;\n\n    const handler = this._retrieveHandler(path);\n    if (!handler) {\n      this._respondWithError(\n        getUnimplementedStatusResponse(path),\n        stream,\n        channelzSessionInfo\n      );\n      return;\n    }\n\n    const callEventTracker: CallEventTracker = {\n      addMessageSent: () => {\n        if (channelzSessionInfo) {\n          channelzSessionInfo.messagesSent += 1;\n          channelzSessionInfo.lastMessageSentTimestamp = new Date();\n        }\n      },\n      addMessageReceived: () => {\n        if (channelzSessionInfo) {\n          channelzSessionInfo.messagesReceived += 1;\n          channelzSessionInfo.lastMessageReceivedTimestamp = new Date();\n        }\n      },\n      onCallEnd: status => {\n        if (status.code === Status.OK) {\n          this.callTracker.addCallSucceeded();\n        } else {\n          this.callTracker.addCallFailed();\n        }\n      },\n      onStreamEnd: success => {\n        if (channelzSessionInfo) {\n          if (success) {\n            channelzSessionInfo.streamTracker.addCallSucceeded();\n          } else {\n            channelzSessionInfo.streamTracker.addCallFailed();\n          }\n        }\n      },\n    };\n\n    const call = getServerInterceptingCall(\n      [...extraInterceptors, ...this.interceptors],\n      stream,\n      headers,\n      callEventTracker,\n      handler,\n      this.options\n    );\n\n    if (!this._runHandlerForCall(call, handler)) {\n      this.callTracker.addCallFailed();\n      channelzSessionInfo?.streamTracker.addCallFailed();\n\n      call.sendStatus({\n        code: Status.INTERNAL,\n        details: `Unknown handler type: ${handler.type}`,\n      });\n    }\n  }\n\n  private _streamHandler(\n    extraInterceptors: ServerInterceptor[],\n    stream: http2.ServerHttp2Stream,\n    headers: http2.IncomingHttpHeaders\n  ) {\n    // for handling idle timeout\n    this.onStreamOpened(stream);\n\n    if (this._verifyContentType(stream, headers) !== true) {\n      return;\n    }\n\n    const path = headers[HTTP2_HEADER_PATH] as string;\n\n    const handler = this._retrieveHandler(path);\n    if (!handler) {\n      this._respondWithError(\n        getUnimplementedStatusResponse(path),\n        stream,\n        null\n      );\n      return;\n    }\n\n    const call = getServerInterceptingCall(\n      [...extraInterceptors, ...this.interceptors],\n      stream,\n      headers,\n      null,\n      handler,\n      this.options\n    );\n\n    if (!this._runHandlerForCall(call, handler)) {\n      call.sendStatus({\n        code: Status.INTERNAL,\n        details: `Unknown handler type: ${handler.type}`,\n      });\n    }\n  }\n\n  private _runHandlerForCall(\n    call: ServerInterceptingCallInterface,\n    handler:\n      | UntypedUnaryHandler\n      | UntypedClientStreamingHandler\n      | UntypedServerStreamingHandler\n      | UntypedBidiStreamingHandler\n  ): boolean {\n    const { type } = handler;\n    if (type === 'unary') {\n      handleUnary(call, handler);\n    } else if (type === 'clientStream') {\n      handleClientStreaming(call, handler);\n    } else if (type === 'serverStream') {\n      handleServerStreaming(call, handler);\n    } else if (type === 'bidi') {\n      handleBidiStreaming(call, handler);\n    } else {\n      return false;\n    }\n\n    return true;\n  }\n\n  private _setupHandlers(\n    http2Server: http2.Http2Server | http2.Http2SecureServer,\n    extraInterceptors: ServerInterceptor[]\n  ): void {\n    if (http2Server === null) {\n      return;\n    }\n\n    const serverAddress = http2Server.address();\n    let serverAddressString = 'null';\n    if (serverAddress) {\n      if (typeof serverAddress === 'string') {\n        serverAddressString = serverAddress;\n      } else {\n        serverAddressString = serverAddress.address + ':' + serverAddress.port;\n      }\n    }\n    this.serverAddressString = serverAddressString;\n\n    const handler = this.channelzEnabled\n      ? this._channelzHandler\n      : this._streamHandler;\n\n    const sessionHandler = this.channelzEnabled\n      ? this._channelzSessionHandler(http2Server)\n      : this._sessionHandler(http2Server);\n\n    http2Server.on('stream', handler.bind(this, extraInterceptors));\n    http2Server.on('session', sessionHandler);\n  }\n\n  private _sessionHandler(\n    http2Server: http2.Http2Server | http2.Http2SecureServer\n  ) {\n    return (session: http2.ServerHttp2Session) => {\n      this.http2Servers.get(http2Server)?.sessions.add(session);\n\n      let connectionAgeTimer: NodeJS.Timeout | null = null;\n      let connectionAgeGraceTimer: NodeJS.Timeout | null = null;\n      let keepaliveTimer: NodeJS.Timeout | null = null;\n      let sessionClosedByServer = false;\n\n      const idleTimeoutObj = this.enableIdleTimeout(session);\n\n      if (this.maxConnectionAgeMs !== UNLIMITED_CONNECTION_AGE_MS) {\n        // Apply a random jitter within a +/-10% range\n        const jitterMagnitude = this.maxConnectionAgeMs / 10;\n        const jitter = Math.random() * jitterMagnitude * 2 - jitterMagnitude;\n\n        connectionAgeTimer = setTimeout(() => {\n          sessionClosedByServer = true;\n\n          this.trace(\n            'Connection dropped by max connection age: ' +\n              session.socket?.remoteAddress\n          );\n\n          try {\n            session.goaway(\n              http2.constants.NGHTTP2_NO_ERROR,\n              ~(1 << 31),\n              kMaxAge\n            );\n          } catch (e) {\n            // The goaway can't be sent because the session is already closed\n            session.destroy();\n            return;\n          }\n          session.close();\n\n          /* Allow a grace period after sending the GOAWAY before forcibly\n           * closing the connection. */\n          if (this.maxConnectionAgeGraceMs !== UNLIMITED_CONNECTION_AGE_MS) {\n            connectionAgeGraceTimer = setTimeout(() => {\n              session.destroy();\n            }, this.maxConnectionAgeGraceMs);\n            connectionAgeGraceTimer.unref?.();\n          }\n        }, this.maxConnectionAgeMs + jitter);\n        connectionAgeTimer.unref?.();\n      }\n\n      const clearKeepaliveTimeout = () => {\n        if (keepaliveTimer) {\n          clearTimeout(keepaliveTimer);\n          keepaliveTimer = null;\n        }\n      };\n\n      const canSendPing = () => {\n        return (\n          !session.destroyed &&\n          this.keepaliveTimeMs < KEEPALIVE_MAX_TIME_MS &&\n          this.keepaliveTimeMs > 0\n        );\n      };\n\n      /* eslint-disable-next-line prefer-const */\n      let sendPing: () => void; // hoisted for use in maybeStartKeepalivePingTimer\n\n      const maybeStartKeepalivePingTimer = () => {\n        if (!canSendPing()) {\n          return;\n        }\n        this.keepaliveTrace(\n          'Starting keepalive timer for ' + this.keepaliveTimeMs + 'ms'\n        );\n        keepaliveTimer = setTimeout(() => {\n          clearKeepaliveTimeout();\n          sendPing();\n        }, this.keepaliveTimeMs);\n        keepaliveTimer.unref?.();\n      };\n\n      sendPing = () => {\n        if (!canSendPing()) {\n          return;\n        }\n        this.keepaliveTrace(\n          'Sending ping with timeout ' + this.keepaliveTimeoutMs + 'ms'\n        );\n        let pingSendError = '';\n        try {\n          const pingSentSuccessfully = session.ping(\n            (err: Error | null, duration: number, payload: Buffer) => {\n              clearKeepaliveTimeout();\n              if (err) {\n                this.keepaliveTrace('Ping failed with error: ' + err.message);\n                sessionClosedByServer = true;\n                session.destroy();\n              } else {\n                this.keepaliveTrace('Received ping response');\n                maybeStartKeepalivePingTimer();\n              }\n            }\n          );\n          if (!pingSentSuccessfully) {\n            pingSendError = 'Ping returned false';\n          }\n        } catch (e) {\n          // grpc/grpc-node#2139\n          pingSendError =\n            (e instanceof Error ? e.message : '') || 'Unknown error';\n        }\n\n        if (pingSendError) {\n          this.keepaliveTrace('Ping send failed: ' + pingSendError);\n          this.trace(\n            'Connection dropped due to ping send error: ' + pingSendError\n          );\n          sessionClosedByServer = true;\n          session.destroy();\n          return;\n        }\n\n        keepaliveTimer = setTimeout(() => {\n          clearKeepaliveTimeout();\n          this.keepaliveTrace('Ping timeout passed without response');\n          this.trace('Connection dropped by keepalive timeout');\n          sessionClosedByServer = true;\n          session.destroy();\n        }, this.keepaliveTimeoutMs);\n        keepaliveTimer.unref?.();\n      };\n\n      maybeStartKeepalivePingTimer();\n\n      session.on('close', () => {\n        if (!sessionClosedByServer) {\n          this.trace(\n            `Connection dropped by client ${session.socket?.remoteAddress}`\n          );\n        }\n\n        if (connectionAgeTimer) {\n          clearTimeout(connectionAgeTimer);\n        }\n\n        if (connectionAgeGraceTimer) {\n          clearTimeout(connectionAgeGraceTimer);\n        }\n\n        clearKeepaliveTimeout();\n\n        if (idleTimeoutObj !== null) {\n          clearTimeout(idleTimeoutObj.timeout);\n          this.sessionIdleTimeouts.delete(session);\n        }\n\n        this.http2Servers.get(http2Server)?.sessions.delete(session);\n      });\n    };\n  }\n\n  private _channelzSessionHandler(\n    http2Server: http2.Http2Server | http2.Http2SecureServer\n  ) {\n    return (session: http2.ServerHttp2Session) => {\n      const channelzRef = registerChannelzSocket(\n        session.socket?.remoteAddress ?? 'unknown',\n        this.getChannelzSessionInfo.bind(this, session),\n        this.channelzEnabled\n      );\n\n      const channelzSessionInfo: ChannelzSessionInfo = {\n        ref: channelzRef,\n        streamTracker: new ChannelzCallTracker(),\n        messagesSent: 0,\n        messagesReceived: 0,\n        keepAlivesSent: 0,\n        lastMessageSentTimestamp: null,\n        lastMessageReceivedTimestamp: null,\n      };\n\n      this.http2Servers.get(http2Server)?.sessions.add(session);\n      this.sessions.set(session, channelzSessionInfo);\n      const clientAddress = `${session.socket.remoteAddress}:${session.socket.remotePort}`;\n\n      this.channelzTrace.addTrace(\n        'CT_INFO',\n        'Connection established by client ' + clientAddress\n      );\n      this.trace('Connection established by client ' + clientAddress);\n      this.sessionChildrenTracker.refChild(channelzRef);\n\n      let connectionAgeTimer: NodeJS.Timeout | null = null;\n      let connectionAgeGraceTimer: NodeJS.Timeout | null = null;\n      let keepaliveTimeout: NodeJS.Timeout | null = null;\n      let sessionClosedByServer = false;\n\n      const idleTimeoutObj = this.enableIdleTimeout(session);\n\n      if (this.maxConnectionAgeMs !== UNLIMITED_CONNECTION_AGE_MS) {\n        // Apply a random jitter within a +/-10% range\n        const jitterMagnitude = this.maxConnectionAgeMs / 10;\n        const jitter = Math.random() * jitterMagnitude * 2 - jitterMagnitude;\n\n        connectionAgeTimer = setTimeout(() => {\n          sessionClosedByServer = true;\n          this.channelzTrace.addTrace(\n            'CT_INFO',\n            'Connection dropped by max connection age from ' + clientAddress\n          );\n\n          try {\n            session.goaway(\n              http2.constants.NGHTTP2_NO_ERROR,\n              ~(1 << 31),\n              kMaxAge\n            );\n          } catch (e) {\n            // The goaway can't be sent because the session is already closed\n            session.destroy();\n            return;\n          }\n          session.close();\n\n          /* Allow a grace period after sending the GOAWAY before forcibly\n           * closing the connection. */\n          if (this.maxConnectionAgeGraceMs !== UNLIMITED_CONNECTION_AGE_MS) {\n            connectionAgeGraceTimer = setTimeout(() => {\n              session.destroy();\n            }, this.maxConnectionAgeGraceMs);\n            connectionAgeGraceTimer.unref?.();\n          }\n        }, this.maxConnectionAgeMs + jitter);\n        connectionAgeTimer.unref?.();\n      }\n\n      const clearKeepaliveTimeout = () => {\n        if (keepaliveTimeout) {\n          clearTimeout(keepaliveTimeout);\n          keepaliveTimeout = null;\n        }\n      };\n\n      const canSendPing = () => {\n        return (\n          !session.destroyed &&\n          this.keepaliveTimeMs < KEEPALIVE_MAX_TIME_MS &&\n          this.keepaliveTimeMs > 0\n        );\n      };\n\n      /* eslint-disable-next-line prefer-const */\n      let sendPing: () => void; // hoisted for use in maybeStartKeepalivePingTimer\n\n      const maybeStartKeepalivePingTimer = () => {\n        if (!canSendPing()) {\n          return;\n        }\n        this.keepaliveTrace(\n          'Starting keepalive timer for ' + this.keepaliveTimeMs + 'ms'\n        );\n        keepaliveTimeout = setTimeout(() => {\n          clearKeepaliveTimeout();\n          sendPing();\n        }, this.keepaliveTimeMs);\n        keepaliveTimeout.unref?.();\n      };\n\n      sendPing = () => {\n        if (!canSendPing()) {\n          return;\n        }\n        this.keepaliveTrace(\n          'Sending ping with timeout ' + this.keepaliveTimeoutMs + 'ms'\n        );\n        let pingSendError = '';\n        try {\n          const pingSentSuccessfully = session.ping(\n            (err: Error | null, duration: number, payload: Buffer) => {\n              clearKeepaliveTimeout();\n              if (err) {\n                this.keepaliveTrace('Ping failed with error: ' + err.message);\n                this.channelzTrace.addTrace(\n                  'CT_INFO',\n                  'Connection dropped due to error of a ping frame ' +\n                    err.message +\n                    ' return in ' +\n                    duration\n                );\n                sessionClosedByServer = true;\n                session.destroy();\n              } else {\n                this.keepaliveTrace('Received ping response');\n                maybeStartKeepalivePingTimer();\n              }\n            }\n          );\n          if (!pingSentSuccessfully) {\n            pingSendError = 'Ping returned false';\n          }\n        } catch (e) {\n          // grpc/grpc-node#2139\n          pingSendError =\n            (e instanceof Error ? e.message : '') || 'Unknown error';\n        }\n\n        if (pingSendError) {\n          this.keepaliveTrace('Ping send failed: ' + pingSendError);\n          this.channelzTrace.addTrace(\n            'CT_INFO',\n            'Connection dropped due to ping send error: ' + pingSendError\n          );\n          sessionClosedByServer = true;\n          session.destroy();\n          return;\n        }\n\n        channelzSessionInfo.keepAlivesSent += 1;\n\n        keepaliveTimeout = setTimeout(() => {\n          clearKeepaliveTimeout();\n          this.keepaliveTrace('Ping timeout passed without response');\n          this.channelzTrace.addTrace(\n            'CT_INFO',\n            'Connection dropped by keepalive timeout from ' + clientAddress\n          );\n          sessionClosedByServer = true;\n          session.destroy();\n        }, this.keepaliveTimeoutMs);\n        keepaliveTimeout.unref?.();\n      };\n\n      maybeStartKeepalivePingTimer();\n\n      session.on('close', () => {\n        if (!sessionClosedByServer) {\n          this.channelzTrace.addTrace(\n            'CT_INFO',\n            'Connection dropped by client ' + clientAddress\n          );\n        }\n\n        this.sessionChildrenTracker.unrefChild(channelzRef);\n        unregisterChannelzRef(channelzRef);\n\n        if (connectionAgeTimer) {\n          clearTimeout(connectionAgeTimer);\n        }\n\n        if (connectionAgeGraceTimer) {\n          clearTimeout(connectionAgeGraceTimer);\n        }\n\n        clearKeepaliveTimeout();\n\n        if (idleTimeoutObj !== null) {\n          clearTimeout(idleTimeoutObj.timeout);\n          this.sessionIdleTimeouts.delete(session);\n        }\n\n        this.http2Servers.get(http2Server)?.sessions.delete(session);\n        this.sessions.delete(session);\n      });\n    };\n  }\n\n  private enableIdleTimeout(\n    session: http2.ServerHttp2Session\n  ): SessionIdleTimeoutTracker | null {\n    if (this.sessionIdleTimeout >= MAX_CONNECTION_IDLE_MS) {\n      return null;\n    }\n\n    const idleTimeoutObj: SessionIdleTimeoutTracker = {\n      activeStreams: 0,\n      lastIdle: Date.now(),\n      onClose: this.onStreamClose.bind(this, session),\n      timeout: setTimeout(\n        this.onIdleTimeout,\n        this.sessionIdleTimeout,\n        this,\n        session\n      ),\n    };\n    idleTimeoutObj.timeout.unref?.();\n    this.sessionIdleTimeouts.set(session, idleTimeoutObj);\n\n    const { socket } = session;\n    this.trace(\n      'Enable idle timeout for ' +\n        socket.remoteAddress +\n        ':' +\n        socket.remotePort\n    );\n\n    return idleTimeoutObj;\n  }\n\n  private onIdleTimeout(\n    this: undefined,\n    ctx: Server,\n    session: http2.ServerHttp2Session\n  ) {\n    const { socket } = session;\n    const sessionInfo = ctx.sessionIdleTimeouts.get(session);\n\n    // if it is called while we have activeStreams - timer will not be rescheduled\n    // until last active stream is closed, then it will call .refresh() on the timer\n    // important part is to not clearTimeout(timer) or it becomes unusable\n    // for future refreshes\n    if (\n      sessionInfo !== undefined &&\n      sessionInfo.activeStreams === 0\n    ) {\n      if (Date.now() - sessionInfo.lastIdle >= ctx.sessionIdleTimeout) {\n        ctx.trace(\n          'Session idle timeout triggered for ' +\n            socket?.remoteAddress +\n            ':' +\n            socket?.remotePort +\n            ' last idle at ' +\n            sessionInfo.lastIdle\n        );\n\n        ctx.closeSession(session);\n      } else {\n        sessionInfo.timeout.refresh();\n      }\n    }\n  }\n\n  private onStreamOpened(stream: http2.ServerHttp2Stream) {\n    const session = stream.session as http2.ServerHttp2Session;\n\n    const idleTimeoutObj = this.sessionIdleTimeouts.get(session);\n    if (idleTimeoutObj) {\n      idleTimeoutObj.activeStreams += 1;\n      stream.once('close', idleTimeoutObj.onClose);\n    }\n  }\n\n  private onStreamClose(session: http2.ServerHttp2Session) {\n    const idleTimeoutObj = this.sessionIdleTimeouts.get(session);\n\n    if (idleTimeoutObj) {\n      idleTimeoutObj.activeStreams -= 1;\n      if (idleTimeoutObj.activeStreams === 0) {\n        idleTimeoutObj.lastIdle = Date.now();\n        idleTimeoutObj.timeout.refresh();\n\n        this.trace(\n          'Session onStreamClose' +\n            session.socket?.remoteAddress +\n            ':' +\n            session.socket?.remotePort +\n            ' at ' +\n            idleTimeoutObj.lastIdle\n        );\n      }\n    }\n  }\n}\n\nasync function handleUnary<RequestType, ResponseType>(\n  call: ServerInterceptingCallInterface,\n  handler: UnaryHandler<RequestType, ResponseType>\n): Promise<void> {\n  let stream: ServerUnaryCall<RequestType, ResponseType>;\n\n  function respond(\n    err: ServerErrorResponse | ServerStatusResponse | null,\n    value?: ResponseType | null,\n    trailer?: Metadata,\n    flags?: number\n  ) {\n    if (err) {\n      call.sendStatus(serverErrorToStatus(err, trailer));\n      return;\n    }\n    call.sendMessage(value, () => {\n      call.sendStatus({\n        code: Status.OK,\n        details: 'OK',\n        metadata: trailer ?? null,\n      });\n    });\n  }\n\n  let requestMetadata: Metadata;\n  let requestMessage: RequestType | null = null;\n  call.start({\n    onReceiveMetadata(metadata) {\n      requestMetadata = metadata;\n      call.startRead();\n    },\n    onReceiveMessage(message) {\n      if (requestMessage) {\n        call.sendStatus({\n          code: Status.UNIMPLEMENTED,\n          details: `Received a second request message for server streaming method ${handler.path}`,\n          metadata: null,\n        });\n        return;\n      }\n      requestMessage = message;\n      call.startRead();\n    },\n    onReceiveHalfClose() {\n      if (!requestMessage) {\n        call.sendStatus({\n          code: Status.UNIMPLEMENTED,\n          details: `Received no request message for server streaming method ${handler.path}`,\n          metadata: null,\n        });\n        return;\n      }\n      stream = new ServerWritableStreamImpl(\n        handler.path,\n        call,\n        requestMetadata,\n        requestMessage\n      );\n      try {\n        handler.func(stream, respond);\n      } catch (err) {\n        call.sendStatus({\n          code: Status.UNKNOWN,\n          details: `Server method handler threw error ${\n            (err as Error).message\n          }`,\n          metadata: null,\n        });\n      }\n    },\n    onCancel() {\n      if (stream) {\n        stream.cancelled = true;\n        stream.emit('cancelled', 'cancelled');\n      }\n    },\n  });\n}\n\nfunction handleClientStreaming<RequestType, ResponseType>(\n  call: ServerInterceptingCallInterface,\n  handler: ClientStreamingHandler<RequestType, ResponseType>\n): void {\n  let stream: ServerReadableStream<RequestType, ResponseType>;\n\n  function respond(\n    err: ServerErrorResponse | ServerStatusResponse | null,\n    value?: ResponseType | null,\n    trailer?: Metadata,\n    flags?: number\n  ) {\n    if (err) {\n      call.sendStatus(serverErrorToStatus(err, trailer));\n      return;\n    }\n    call.sendMessage(value, () => {\n      call.sendStatus({\n        code: Status.OK,\n        details: 'OK',\n        metadata: trailer ?? null,\n      });\n    });\n  }\n\n  call.start({\n    onReceiveMetadata(metadata) {\n      stream = new ServerDuplexStreamImpl(handler.path, call, metadata);\n      try {\n        handler.func(stream, respond);\n      } catch (err) {\n        call.sendStatus({\n          code: Status.UNKNOWN,\n          details: `Server method handler threw error ${\n            (err as Error).message\n          }`,\n          metadata: null,\n        });\n      }\n    },\n    onReceiveMessage(message) {\n      stream.push(message);\n    },\n    onReceiveHalfClose() {\n      stream.push(null);\n    },\n    onCancel() {\n      if (stream) {\n        stream.cancelled = true;\n        stream.emit('cancelled', 'cancelled');\n        stream.destroy();\n      }\n    },\n  });\n}\n\nfunction handleServerStreaming<RequestType, ResponseType>(\n  call: ServerInterceptingCallInterface,\n  handler: ServerStreamingHandler<RequestType, ResponseType>\n): void {\n  let stream: ServerWritableStream<RequestType, ResponseType>;\n\n  let requestMetadata: Metadata;\n  let requestMessage: RequestType | null = null;\n  call.start({\n    onReceiveMetadata(metadata) {\n      requestMetadata = metadata;\n      call.startRead();\n    },\n    onReceiveMessage(message) {\n      if (requestMessage) {\n        call.sendStatus({\n          code: Status.UNIMPLEMENTED,\n          details: `Received a second request message for server streaming method ${handler.path}`,\n          metadata: null,\n        });\n        return;\n      }\n      requestMessage = message;\n      call.startRead();\n    },\n    onReceiveHalfClose() {\n      if (!requestMessage) {\n        call.sendStatus({\n          code: Status.UNIMPLEMENTED,\n          details: `Received no request message for server streaming method ${handler.path}`,\n          metadata: null,\n        });\n        return;\n      }\n      stream = new ServerWritableStreamImpl(\n        handler.path,\n        call,\n        requestMetadata,\n        requestMessage\n      );\n      try {\n        handler.func(stream);\n      } catch (err) {\n        call.sendStatus({\n          code: Status.UNKNOWN,\n          details: `Server method handler threw error ${\n            (err as Error).message\n          }`,\n          metadata: null,\n        });\n      }\n    },\n    onCancel() {\n      if (stream) {\n        stream.cancelled = true;\n        stream.emit('cancelled', 'cancelled');\n        stream.destroy();\n      }\n    },\n  });\n}\n\nfunction handleBidiStreaming<RequestType, ResponseType>(\n  call: ServerInterceptingCallInterface,\n  handler: BidiStreamingHandler<RequestType, ResponseType>\n): void {\n  let stream: ServerDuplexStream<RequestType, ResponseType>;\n\n  call.start({\n    onReceiveMetadata(metadata) {\n      stream = new ServerDuplexStreamImpl(handler.path, call, metadata);\n      try {\n        handler.func(stream);\n      } catch (err) {\n        call.sendStatus({\n          code: Status.UNKNOWN,\n          details: `Server method handler threw error ${\n            (err as Error).message\n          }`,\n          metadata: null,\n        });\n      }\n    },\n    onReceiveMessage(message) {\n      stream.push(message);\n    },\n    onReceiveHalfClose() {\n      stream.push(null);\n    },\n    onCancel() {\n      if (stream) {\n        stream.cancelled = true;\n        stream.emit('cancelled', 'cancelled');\n        stream.destroy();\n      }\n    },\n  });\n}\n", "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { StatusObject } from './call-interface';\nimport { Status } from './constants';\nimport { Metadata } from './metadata';\n\n/**\n * A builder for gRPC status objects.\n */\nexport class StatusBuilder {\n  private code: Status | null;\n  private details: string | null;\n  private metadata: Metadata | null;\n\n  constructor() {\n    this.code = null;\n    this.details = null;\n    this.metadata = null;\n  }\n\n  /**\n   * Adds a status code to the builder.\n   */\n  withCode(code: Status): this {\n    this.code = code;\n    return this;\n  }\n\n  /**\n   * Adds details to the builder.\n   */\n  withDetails(details: string): this {\n    this.details = details;\n    return this;\n  }\n\n  /**\n   * Adds metadata to the builder.\n   */\n  withMetadata(metadata: Metadata): this {\n    this.metadata = metadata;\n    return this;\n  }\n\n  /**\n   * Builds the status object.\n   */\n  build(): Partial<StatusObject> {\n    const status: Partial<StatusObject> = {};\n\n    if (this.code !== null) {\n      status.code = this.code;\n    }\n\n    if (this.details !== null) {\n      status.details = this.details;\n    }\n\n    if (this.metadata !== null) {\n      status.metadata = this.metadata;\n    }\n\n    return status;\n  }\n}\n", "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport {\n  LoadBalancer,\n  ChannelControlHelper,\n  TypedLoadBalancingConfig,\n  registerDefaultLoadBalancerType,\n  registerLoadBalancerType,\n  createChildChannelControlHelper,\n} from './load-balancer';\nimport { ConnectivityState } from './connectivity-state';\nimport {\n  QueuePicker,\n  Picker,\n  PickArgs,\n  CompletePickResult,\n  PickResultType,\n  UnavailablePicker,\n} from './picker';\nimport { Endpoint, SubchannelAddress, subchannelAddressToString } from './subchannel-address';\nimport * as logging from './logging';\nimport { LogVerbosity } from './constants';\nimport {\n  SubchannelInterface,\n  ConnectivityStateListener,\n  HealthListener,\n} from './subchannel-interface';\nimport { isTcpSubchannelAddress } from './subchannel-address';\nimport { isIPv6 } from 'net';\nimport { ChannelOptions } from './channel-options';\nimport { StatusOr, statusOrFromValue } from './call-interface';\n\nconst TRACER_NAME = 'pick_first';\n\nfunction trace(text: string): void {\n  logging.trace(LogVerbosity.DEBUG, TRACER_NAME, text);\n}\n\nconst TYPE_NAME = 'pick_first';\n\n/**\n * Delay after starting a connection on a subchannel before starting a\n * connection on the next subchannel in the list, for Happy Eyeballs algorithm.\n */\nconst CONNECTION_DELAY_INTERVAL_MS = 250;\n\nexport class PickFirstLoadBalancingConfig implements TypedLoadBalancingConfig {\n  constructor(private readonly shuffleAddressList: boolean) {}\n\n  getLoadBalancerName(): string {\n    return TYPE_NAME;\n  }\n\n  toJsonObject(): object {\n    return {\n      [TYPE_NAME]: {\n        shuffleAddressList: this.shuffleAddressList,\n      },\n    };\n  }\n\n  getShuffleAddressList() {\n    return this.shuffleAddressList;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  static createFromJson(obj: any) {\n    if (\n      'shuffleAddressList' in obj &&\n      !(typeof obj.shuffleAddressList === 'boolean')\n    ) {\n      throw new Error(\n        'pick_first config field shuffleAddressList must be a boolean if provided'\n      );\n    }\n    return new PickFirstLoadBalancingConfig(obj.shuffleAddressList === true);\n  }\n}\n\n/**\n * Picker for a `PickFirstLoadBalancer` in the READY state. Always returns the\n * picked subchannel.\n */\nclass PickFirstPicker implements Picker {\n  constructor(private subchannel: SubchannelInterface) {}\n\n  pick(pickArgs: PickArgs): CompletePickResult {\n    return {\n      pickResultType: PickResultType.COMPLETE,\n      subchannel: this.subchannel,\n      status: null,\n      onCallStarted: null,\n      onCallEnded: null,\n    };\n  }\n}\n\ninterface SubchannelChild {\n  subchannel: SubchannelInterface;\n  hasReportedTransientFailure: boolean;\n}\n\n/**\n * Return a new array with the elements of the input array in a random order\n * @param list The input array\n * @returns A shuffled array of the elements of list\n */\nexport function shuffled<T>(list: T[]): T[] {\n  const result = list.slice();\n  for (let i = result.length - 1; i > 1; i--) {\n    const j = Math.floor(Math.random() * (i + 1));\n    const temp = result[i];\n    result[i] = result[j];\n    result[j] = temp;\n  }\n  return result;\n}\n\n/**\n * Interleave addresses in addressList by family in accordance with RFC-8304 section 4\n * @param addressList\n * @returns\n */\nfunction interleaveAddressFamilies(\n  addressList: SubchannelAddress[]\n): SubchannelAddress[] {\n  if (addressList.length === 0) {\n    return [];\n  }\n  const result: SubchannelAddress[] = [];\n  const ipv6Addresses: SubchannelAddress[] = [];\n  const ipv4Addresses: SubchannelAddress[] = [];\n  const ipv6First =\n    isTcpSubchannelAddress(addressList[0]) && isIPv6(addressList[0].host);\n  for (const address of addressList) {\n    if (isTcpSubchannelAddress(address) && isIPv6(address.host)) {\n      ipv6Addresses.push(address);\n    } else {\n      ipv4Addresses.push(address);\n    }\n  }\n  const firstList = ipv6First ? ipv6Addresses : ipv4Addresses;\n  const secondList = ipv6First ? ipv4Addresses : ipv6Addresses;\n  for (let i = 0; i < Math.max(firstList.length, secondList.length); i++) {\n    if (i < firstList.length) {\n      result.push(firstList[i]);\n    }\n    if (i < secondList.length) {\n      result.push(secondList[i]);\n    }\n  }\n  return result;\n}\n\nconst REPORT_HEALTH_STATUS_OPTION_NAME =\n  'grpc-node.internal.pick-first.report_health_status';\n\nexport class PickFirstLoadBalancer implements LoadBalancer {\n  /**\n   * The list of subchannels this load balancer is currently attempting to\n   * connect to.\n   */\n  private children: SubchannelChild[] = [];\n  /**\n   * The current connectivity state of the load balancer.\n   */\n  private currentState: ConnectivityState = ConnectivityState.IDLE;\n  /**\n   * The index within the `subchannels` array of the subchannel with the most\n   * recently started connection attempt.\n   */\n  private currentSubchannelIndex = 0;\n  /**\n   * The currently picked subchannel used for making calls. Populated if\n   * and only if the load balancer's current state is READY. In that case,\n   * the subchannel's current state is also READY.\n   */\n  private currentPick: SubchannelInterface | null = null;\n  /**\n   * Listener callback attached to each subchannel in the `subchannels` list\n   * while establishing a connection.\n   */\n  private subchannelStateListener: ConnectivityStateListener = (\n    subchannel,\n    previousState,\n    newState,\n    keepaliveTime,\n    errorMessage\n  ) => {\n    this.onSubchannelStateUpdate(\n      subchannel,\n      previousState,\n      newState,\n      errorMessage\n    );\n  };\n\n  private pickedSubchannelHealthListener: HealthListener = () =>\n    this.calculateAndReportNewState();\n  /**\n   * Timer reference for the timer tracking when to start\n   */\n  private connectionDelayTimeout: NodeJS.Timeout;\n\n  /**\n   * The LB policy enters sticky TRANSIENT_FAILURE mode when all\n   * subchannels have failed to connect at least once, and it stays in that\n   * mode until a connection attempt is successful. While in sticky TF mode,\n   * the LB policy continuously attempts to connect to all of its subchannels.\n   */\n  private stickyTransientFailureMode = false;\n\n  private reportHealthStatus: boolean = false;\n\n  /**\n   * The most recent error reported by any subchannel as it transitioned to\n   * TRANSIENT_FAILURE.\n   */\n  private lastError: string | null = null;\n\n  private latestAddressList: SubchannelAddress[] | null = null;\n\n  private latestOptions: ChannelOptions = {};\n\n  private latestResolutionNote: string = '';\n\n  /**\n   * Load balancer that attempts to connect to each backend in the address list\n   * in order, and picks the first one that connects, using it for every\n   * request.\n   * @param channelControlHelper `ChannelControlHelper` instance provided by\n   *     this load balancer's owner.\n   */\n  constructor(\n    private readonly channelControlHelper: ChannelControlHelper\n  ) {\n    this.connectionDelayTimeout = setTimeout(() => {}, 0);\n    clearTimeout(this.connectionDelayTimeout);\n  }\n\n  private allChildrenHaveReportedTF(): boolean {\n    return this.children.every(child => child.hasReportedTransientFailure);\n  }\n\n  private resetChildrenReportedTF() {\n    this.children.every(child => child.hasReportedTransientFailure = false);\n  }\n\n  private calculateAndReportNewState() {\n    if (this.currentPick) {\n      if (this.reportHealthStatus && !this.currentPick.isHealthy()) {\n        const errorMessage = `Picked subchannel ${this.currentPick.getAddress()} is unhealthy`;\n        this.updateState(\n          ConnectivityState.TRANSIENT_FAILURE,\n          new UnavailablePicker({\n            details: errorMessage,\n          }),\n          errorMessage\n        );\n      } else {\n        this.updateState(\n          ConnectivityState.READY,\n          new PickFirstPicker(this.currentPick),\n          null\n        );\n      }\n    } else if (this.latestAddressList?.length === 0) {\n      const errorMessage = `No connection established. Last error: ${this.lastError}. Resolution note: ${this.latestResolutionNote}`;\n      this.updateState(\n        ConnectivityState.TRANSIENT_FAILURE,\n        new UnavailablePicker({\n          details: errorMessage,\n        }),\n        errorMessage\n      );\n    } else if (this.children.length === 0) {\n      this.updateState(ConnectivityState.IDLE, new QueuePicker(this), null);\n    } else {\n      if (this.stickyTransientFailureMode) {\n        const errorMessage = `No connection established. Last error: ${this.lastError}. Resolution note: ${this.latestResolutionNote}`;\n        this.updateState(\n          ConnectivityState.TRANSIENT_FAILURE,\n          new UnavailablePicker({\n            details: errorMessage,\n          }),\n          errorMessage\n        );\n      } else {\n        this.updateState(ConnectivityState.CONNECTING, new QueuePicker(this), null);\n      }\n    }\n  }\n\n  private requestReresolution() {\n    this.channelControlHelper.requestReresolution();\n  }\n\n  private maybeEnterStickyTransientFailureMode() {\n    if (!this.allChildrenHaveReportedTF()) {\n      return;\n    }\n    this.requestReresolution();\n    this.resetChildrenReportedTF();\n    if (this.stickyTransientFailureMode) {\n      this.calculateAndReportNewState();\n      return;\n    }\n    this.stickyTransientFailureMode = true;\n    for (const { subchannel } of this.children) {\n      subchannel.startConnecting();\n    }\n    this.calculateAndReportNewState();\n  }\n\n  private removeCurrentPick() {\n    if (this.currentPick !== null) {\n      this.currentPick.removeConnectivityStateListener(this.subchannelStateListener);\n      this.channelControlHelper.removeChannelzChild(\n        this.currentPick.getChannelzRef()\n      );\n      this.currentPick.removeHealthStateWatcher(\n        this.pickedSubchannelHealthListener\n      );\n      // Unref last, to avoid triggering listeners\n      this.currentPick.unref();\n      this.currentPick = null;\n    }\n  }\n\n  private onSubchannelStateUpdate(\n    subchannel: SubchannelInterface,\n    previousState: ConnectivityState,\n    newState: ConnectivityState,\n    errorMessage?: string\n  ) {\n    if (this.currentPick?.realSubchannelEquals(subchannel)) {\n      if (newState !== ConnectivityState.READY) {\n        this.removeCurrentPick();\n        this.calculateAndReportNewState();\n      }\n      return;\n    }\n    for (const [index, child] of this.children.entries()) {\n      if (subchannel.realSubchannelEquals(child.subchannel)) {\n        if (newState === ConnectivityState.READY) {\n          this.pickSubchannel(child.subchannel);\n        }\n        if (newState === ConnectivityState.TRANSIENT_FAILURE) {\n          child.hasReportedTransientFailure = true;\n          if (errorMessage) {\n            this.lastError = errorMessage;\n          }\n          this.maybeEnterStickyTransientFailureMode();\n          if (index === this.currentSubchannelIndex) {\n            this.startNextSubchannelConnecting(index + 1);\n          }\n        }\n        child.subchannel.startConnecting();\n        return;\n      }\n    }\n  }\n\n  private startNextSubchannelConnecting(startIndex: number) {\n    clearTimeout(this.connectionDelayTimeout);\n    for (const [index, child] of this.children.entries()) {\n      if (index >= startIndex) {\n        const subchannelState = child.subchannel.getConnectivityState();\n        if (\n          subchannelState === ConnectivityState.IDLE ||\n          subchannelState === ConnectivityState.CONNECTING\n        ) {\n          this.startConnecting(index);\n          return;\n        }\n      }\n    }\n    this.maybeEnterStickyTransientFailureMode();\n  }\n\n  /**\n   * Have a single subchannel in the `subchannels` list start connecting.\n   * @param subchannelIndex The index into the `subchannels` list.\n   */\n  private startConnecting(subchannelIndex: number) {\n    clearTimeout(this.connectionDelayTimeout);\n    this.currentSubchannelIndex = subchannelIndex;\n    if (\n      this.children[subchannelIndex].subchannel.getConnectivityState() ===\n      ConnectivityState.IDLE\n    ) {\n      trace(\n        'Start connecting to subchannel with address ' +\n          this.children[subchannelIndex].subchannel.getAddress()\n      );\n      process.nextTick(() => {\n        this.children[subchannelIndex]?.subchannel.startConnecting();\n      });\n    }\n    this.connectionDelayTimeout = setTimeout(() => {\n      this.startNextSubchannelConnecting(subchannelIndex + 1);\n    }, CONNECTION_DELAY_INTERVAL_MS);\n    this.connectionDelayTimeout.unref?.();\n  }\n\n  /**\n   * Declare that the specified subchannel should be used to make requests.\n   * This functions the same independent of whether subchannel is a member of\n   * this.children and whether it is equal to this.currentPick.\n   * Prerequisite: subchannel.getConnectivityState() === READY.\n   * @param subchannel\n   */\n  private pickSubchannel(subchannel: SubchannelInterface) {\n    trace('Pick subchannel with address ' + subchannel.getAddress());\n    this.stickyTransientFailureMode = false;\n    /* Ref before removeCurrentPick and resetSubchannelList to avoid the\n     * refcount dropping to 0 during this process. */\n    subchannel.ref();\n    this.channelControlHelper.addChannelzChild(subchannel.getChannelzRef());\n    this.removeCurrentPick();\n    this.resetSubchannelList();\n    subchannel.addConnectivityStateListener(this.subchannelStateListener);\n    subchannel.addHealthStateWatcher(this.pickedSubchannelHealthListener);\n    this.currentPick = subchannel;\n    clearTimeout(this.connectionDelayTimeout);\n    this.calculateAndReportNewState();\n  }\n\n  private updateState(newState: ConnectivityState, picker: Picker, errorMessage: string | null) {\n    trace(\n      ConnectivityState[this.currentState] +\n        ' -> ' +\n        ConnectivityState[newState]\n    );\n    this.currentState = newState;\n    this.channelControlHelper.updateState(newState, picker, errorMessage);\n  }\n\n  private resetSubchannelList() {\n    for (const child of this.children) {\n      /* Always remoev the connectivity state listener. If the subchannel is\n         getting picked, it will be re-added then. */\n      child.subchannel.removeConnectivityStateListener(\n        this.subchannelStateListener\n      );\n      /* Refs are counted independently for the children list and the\n       * currentPick, so we call unref whether or not the child is the\n       * currentPick. Channelz child references are also refcounted, so\n       * removeChannelzChild can be handled the same way. */\n      child.subchannel.unref();\n      this.channelControlHelper.removeChannelzChild(\n        child.subchannel.getChannelzRef()\n      );\n    }\n    this.currentSubchannelIndex = 0;\n    this.children = [];\n  }\n\n  private connectToAddressList(addressList: SubchannelAddress[], options: ChannelOptions) {\n    trace('connectToAddressList([' + addressList.map(address => subchannelAddressToString(address)) + '])');\n    const newChildrenList = addressList.map(address => ({\n      subchannel: this.channelControlHelper.createSubchannel(address, options),\n      hasReportedTransientFailure: false,\n    }));\n    for (const { subchannel } of newChildrenList) {\n      if (subchannel.getConnectivityState() === ConnectivityState.READY) {\n        this.pickSubchannel(subchannel);\n        return;\n      }\n    }\n    /* Ref each subchannel before resetting the list, to ensure that\n     * subchannels shared between the list don't drop to 0 refs during the\n     * transition. */\n    for (const { subchannel } of newChildrenList) {\n      subchannel.ref();\n      this.channelControlHelper.addChannelzChild(subchannel.getChannelzRef());\n    }\n    this.resetSubchannelList();\n    this.children = newChildrenList;\n    for (const { subchannel } of this.children) {\n      subchannel.addConnectivityStateListener(this.subchannelStateListener);\n    }\n    for (const child of this.children) {\n      if (\n        child.subchannel.getConnectivityState() ===\n        ConnectivityState.TRANSIENT_FAILURE\n      ) {\n        child.hasReportedTransientFailure = true;\n      }\n    }\n    this.startNextSubchannelConnecting(0);\n    this.calculateAndReportNewState();\n  }\n\n  updateAddressList(\n    maybeEndpointList: StatusOr<Endpoint[]>,\n    lbConfig: TypedLoadBalancingConfig,\n    options: ChannelOptions,\n    resolutionNote: string\n  ): boolean {\n    if (!(lbConfig instanceof PickFirstLoadBalancingConfig)) {\n      return false;\n    }\n    if (!maybeEndpointList.ok) {\n      if (this.children.length === 0 && this.currentPick === null) {\n        this.channelControlHelper.updateState(\n          ConnectivityState.TRANSIENT_FAILURE,\n          new UnavailablePicker(maybeEndpointList.error),\n          maybeEndpointList.error.details\n        );\n      }\n      return true;\n    }\n    let endpointList = maybeEndpointList.value;\n    this.reportHealthStatus = options[REPORT_HEALTH_STATUS_OPTION_NAME];\n    /* Previously, an update would be discarded if it was identical to the\n     * previous update, to minimize churn. Now the DNS resolver is\n     * rate-limited, so that is less of a concern. */\n    if (lbConfig.getShuffleAddressList()) {\n      endpointList = shuffled(endpointList);\n    }\n    const rawAddressList = ([] as SubchannelAddress[]).concat(\n      ...endpointList.map(endpoint => endpoint.addresses)\n    );\n    trace('updateAddressList([' + rawAddressList.map(address => subchannelAddressToString(address)) + '])');\n    const addressList = interleaveAddressFamilies(rawAddressList);\n    this.latestAddressList = addressList;\n    this.latestOptions = options;\n    this.connectToAddressList(addressList, options);\n    this.latestResolutionNote = resolutionNote;\n    if (rawAddressList.length > 0) {\n      return true;\n    } else {\n      this.lastError = 'No addresses resolved';\n      return false;\n    }\n  }\n\n  exitIdle() {\n    if (\n      this.currentState === ConnectivityState.IDLE &&\n      this.latestAddressList\n    ) {\n      this.connectToAddressList(this.latestAddressList, this.latestOptions);\n    }\n  }\n\n  resetBackoff() {\n    /* The pick first load balancer does not have a connection backoff, so this\n     * does nothing */\n  }\n\n  destroy() {\n    this.resetSubchannelList();\n    this.removeCurrentPick();\n  }\n\n  getTypeName(): string {\n    return TYPE_NAME;\n  }\n}\n\nconst LEAF_CONFIG = new PickFirstLoadBalancingConfig(false);\n\n/**\n * This class handles the leaf load balancing operations for a single endpoint.\n * It is a thin wrapper around a PickFirstLoadBalancer with a different API\n * that more closely reflects how it will be used as a leaf balancer.\n */\nexport class LeafLoadBalancer {\n  private pickFirstBalancer: PickFirstLoadBalancer;\n  private latestState: ConnectivityState = ConnectivityState.IDLE;\n  private latestPicker: Picker;\n  constructor(\n    private endpoint: Endpoint,\n    channelControlHelper: ChannelControlHelper,\n    private options: ChannelOptions,\n    private resolutionNote: string\n  ) {\n    const childChannelControlHelper = createChildChannelControlHelper(\n      channelControlHelper,\n      {\n        updateState: (connectivityState, picker, errorMessage) => {\n          this.latestState = connectivityState;\n          this.latestPicker = picker;\n          channelControlHelper.updateState(connectivityState, picker, errorMessage);\n        },\n      }\n    );\n    this.pickFirstBalancer = new PickFirstLoadBalancer(\n      childChannelControlHelper\n    );\n    this.latestPicker = new QueuePicker(this.pickFirstBalancer);\n  }\n\n  startConnecting() {\n    this.pickFirstBalancer.updateAddressList(\n      statusOrFromValue([this.endpoint]),\n      LEAF_CONFIG,\n      { ...this.options, [REPORT_HEALTH_STATUS_OPTION_NAME]: true },\n      this.resolutionNote\n    );\n  }\n\n  /**\n   * Update the endpoint associated with this LeafLoadBalancer to a new\n   * endpoint. Does not trigger connection establishment if a connection\n   * attempt is not already in progress.\n   * @param newEndpoint\n   */\n  updateEndpoint(newEndpoint: Endpoint, newOptions: ChannelOptions) {\n    this.options = newOptions;\n    this.endpoint = newEndpoint;\n    if (this.latestState !== ConnectivityState.IDLE) {\n      this.startConnecting();\n    }\n  }\n\n  getConnectivityState() {\n    return this.latestState;\n  }\n\n  getPicker() {\n    return this.latestPicker;\n  }\n\n  getEndpoint() {\n    return this.endpoint;\n  }\n\n  exitIdle() {\n    this.pickFirstBalancer.exitIdle();\n  }\n\n  destroy() {\n    this.pickFirstBalancer.destroy();\n  }\n}\n\nexport function setup(): void {\n  registerLoadBalancerType(\n    TYPE_NAME,\n    PickFirstLoadBalancer,\n    PickFirstLoadBalancingConfig\n  );\n  registerDefaultLoadBalancerType(TYPE_NAME);\n}\n", "/*\n * Copyright 2024 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport * as fs from 'fs';\nimport * as logging from './logging';\nimport { LogVerbosity } from './constants';\nimport { promisify } from 'util';\n\nconst TRACER_NAME = 'certificate_provider';\n\nfunction trace(text: string) {\n  logging.trace(LogVerbosity.DEBUG, TRACER_NAME, text);\n}\n\nexport interface CaCertificateUpdate {\n  caCertificate: Buffer;\n}\n\nexport interface IdentityCertificateUpdate {\n  certificate: Buffer;\n  privateKey: Buffer;\n}\n\nexport interface CaCertificateUpdateListener {\n  (update: CaCertificateUpdate | null): void;\n}\n\nexport interface IdentityCertificateUpdateListener {\n  (update: IdentityCertificateUpdate | null) : void;\n}\n\nexport interface CertificateProvider {\n  addCaCertificateListener(listener: CaCertificateUpdateListener): void;\n  removeCaCertificateListener(listener: CaCertificateUpdateListener): void;\n  addIdentityCertificateListener(listener: IdentityCertificateUpdateListener): void;\n  removeIdentityCertificateListener(listener: IdentityCertificateUpdateListener): void;\n}\n\nexport interface FileWatcherCertificateProviderConfig {\n  certificateFile?: string | undefined;\n  privateKeyFile?: string | undefined;\n  caCertificateFile?: string | undefined;\n  refreshIntervalMs: number;\n}\n\nconst readFilePromise = promisify(fs.readFile);\n\nexport class FileWatcherCertificateProvider implements CertificateProvider {\n  private refreshTimer: NodeJS.Timeout | null = null;\n  private fileResultPromise: Promise<[PromiseSettledResult<Buffer>, PromiseSettledResult<Buffer>, PromiseSettledResult<Buffer>]> | null = null;\n  private latestCaUpdate: CaCertificateUpdate | null | undefined = undefined;\n  private caListeners: Set<CaCertificateUpdateListener> = new Set();\n  private latestIdentityUpdate: IdentityCertificateUpdate | null | undefined = undefined;\n  private identityListeners: Set<IdentityCertificateUpdateListener> = new Set();\n  private lastUpdateTime: Date | null = null;\n\n  constructor(\n    private config: FileWatcherCertificateProviderConfig\n  ) {\n    if ((config.certificateFile === undefined) !== (config.privateKeyFile === undefined)) {\n      throw new Error('certificateFile and privateKeyFile must be set or unset together');\n    }\n    if (config.certificateFile === undefined && config.caCertificateFile === undefined) {\n      throw new Error('At least one of certificateFile and caCertificateFile must be set');\n    }\n    trace('File watcher constructed with config ' + JSON.stringify(config));\n  }\n\n  private updateCertificates() {\n    if (this.fileResultPromise) {\n      return;\n    }\n    this.fileResultPromise = Promise.allSettled([\n      this.config.certificateFile ? readFilePromise(this.config.certificateFile) : Promise.reject<Buffer>(),\n      this.config.privateKeyFile ? readFilePromise(this.config.privateKeyFile) : Promise.reject<Buffer>(),\n      this.config.caCertificateFile ? readFilePromise(this.config.caCertificateFile) : Promise.reject<Buffer>()\n    ]);\n    this.fileResultPromise.then(([certificateResult, privateKeyResult, caCertificateResult]) => {\n      if (!this.refreshTimer) {\n        return;\n      }\n      trace('File watcher read certificates certificate ' + certificateResult.status + ', privateKey ' + privateKeyResult.status + ', CA certificate ' + caCertificateResult.status);\n      this.lastUpdateTime = new Date();\n      this.fileResultPromise = null;\n      if (certificateResult.status === 'fulfilled' && privateKeyResult.status === 'fulfilled') {\n        this.latestIdentityUpdate = {\n          certificate: certificateResult.value,\n          privateKey: privateKeyResult.value\n        };\n      } else {\n        this.latestIdentityUpdate = null;\n      }\n      if (caCertificateResult.status === 'fulfilled') {\n        this.latestCaUpdate = {\n          caCertificate: caCertificateResult.value\n        };\n      } else {\n        this.latestCaUpdate = null;\n      }\n      for (const listener of this.identityListeners) {\n        listener(this.latestIdentityUpdate);\n      }\n      for (const listener of this.caListeners) {\n        listener(this.latestCaUpdate);\n      }\n    });\n    trace('File watcher initiated certificate update');\n  }\n\n  private maybeStartWatchingFiles() {\n    if (!this.refreshTimer) {\n      /* Perform the first read immediately, but only if there was not already\n       * a recent read, to avoid reading from the filesystem significantly more\n       * frequently than configured if the provider quickly switches between\n       * used and unused. */\n      const timeSinceLastUpdate = this.lastUpdateTime ? (new Date()).getTime() - this.lastUpdateTime.getTime() : Infinity;\n      if (timeSinceLastUpdate > this.config.refreshIntervalMs) {\n        this.updateCertificates();\n      }\n      if (timeSinceLastUpdate > this.config.refreshIntervalMs * 2) {\n        // Clear out old updates if they are definitely stale\n        this.latestCaUpdate = undefined;\n        this.latestIdentityUpdate = undefined;\n      }\n      this.refreshTimer = setInterval(() => this.updateCertificates(), this.config.refreshIntervalMs);\n      trace('File watcher started watching');\n    }\n  }\n\n  private maybeStopWatchingFiles() {\n    if (this.caListeners.size === 0 && this.identityListeners.size === 0) {\n      this.fileResultPromise = null;\n      if (this.refreshTimer) {\n        clearInterval(this.refreshTimer);\n        this.refreshTimer = null;\n      }\n    }\n  }\n\n  addCaCertificateListener(listener: CaCertificateUpdateListener): void {\n    this.caListeners.add(listener);\n    this.maybeStartWatchingFiles();\n    if (this.latestCaUpdate !== undefined) {\n      process.nextTick(listener, this.latestCaUpdate);\n    }\n  }\n  removeCaCertificateListener(listener: CaCertificateUpdateListener): void {\n    this.caListeners.delete(listener);\n    this.maybeStopWatchingFiles();\n  }\n  addIdentityCertificateListener(listener: IdentityCertificateUpdateListener): void {\n    this.identityListeners.add(listener);\n    this.maybeStartWatchingFiles();\n    if (this.latestIdentityUpdate !== undefined) {\n      process.nextTick(listener, this.latestIdentityUpdate);\n    }\n  }\n  removeIdentityCertificateListener(listener: IdentityCertificateUpdateListener): void {\n    this.identityListeners.delete(listener);\n    this.maybeStopWatchingFiles();\n  }\n}\n", "export { trace, log } from './logging';\nexport {\n  Resolver,\n  ResolverListener,\n  registerResolver,\n  ConfigSelector,\n  createResolver,\n  CHANNEL_ARGS_CONFIG_SELECTOR_KEY,\n} from './resolver';\nexport { GrpcUri, uriToString, splitHostPort, HostPort } from './uri-parser';\nexport { Duration, durationToMs, parseDuration } from './duration';\nexport { BackoffTimeout } from './backoff-timeout';\nexport {\n  LoadBalancer,\n  TypedLoadBalancingConfig,\n  ChannelControlHelper,\n  createChildChannelControlHelper,\n  registerLoadBalancerType,\n  selectLbConfigFromList,\n  parseLoadBalancingConfig,\n  isLoadBalancerNameRegistered,\n} from './load-balancer';\nexport { LeafLoadBalancer } from './load-balancer-pick-first';\nexport {\n  SubchannelAddress,\n  subchannelAddressToString,\n  Endpoint,\n  endpointToString,\n  endpointHasAddress,\n  EndpointMap,\n} from './subchannel-address';\nexport { ChildLoadBalancerHandler } from './load-balancer-child-handler';\nexport {\n  Picker,\n  UnavailablePicker,\n  QueuePicker,\n  PickResult,\n  PickArgs,\n  PickResultType,\n} from './picker';\nexport {\n  Call as CallStream,\n  StatusOr,\n  statusOrFromValue,\n  statusOrFromError\n} from './call-interface';\nexport { Filter, BaseFilter, FilterFactory } from './filter';\nexport { FilterStackFactory } from './filter-stack';\nexport { registerAdminService } from './admin';\nexport {\n  SubchannelInterface,\n  BaseSubchannelWrapper,\n  ConnectivityStateListener,\n  HealthListener,\n} from './subchannel-interface';\nexport {\n  OutlierDetectionRawConfig,\n  SuccessRateEjectionConfig,\n  FailurePercentageEjectionConfig,\n} from './load-balancer-outlier-detection';\n\nexport { createServerCredentialsWithInterceptors, createCertificateProviderServerCredentials } from './server-credentials';\nexport {\n  CaCertificateUpdate,\n  CaCertificateUpdateListener,\n  IdentityCertificateUpdate,\n  IdentityCertificateUpdateListener,\n  CertificateProvider,\n  FileWatcherCertificateProvider,\n  FileWatcherCertificateProviderConfig\n} from './certificate-provider';\nexport { createCertificateProviderChannelCredentials, SecureConnector, SecureConnectResult } from './channel-credentials';\nexport { SUBCHANNEL_ARGS_EXCLUDE_KEY_PREFIX } from './internal-channel';\n", "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Resolver, ResolverListener, registerResolver } from './resolver';\nimport { Endpoint } from './subchannel-address';\nimport { GrpcUri } from './uri-parser';\nimport { ChannelOptions } from './channel-options';\nimport { statusOrFromValue } from './call-interface';\n\nclass UdsResolver implements Resolver {\n  private hasReturnedResult = false;\n  private endpoints: Endpoint[] = [];\n  constructor(\n    target: GrpcUri,\n    private listener: ResolverListener,\n    channelOptions: ChannelOptions\n  ) {\n    let path: string;\n    if (target.authority === '') {\n      path = '/' + target.path;\n    } else {\n      path = target.path;\n    }\n    this.endpoints = [{ addresses: [{ path }] }];\n  }\n  updateResolution(): void {\n    if (!this.hasReturnedResult) {\n      this.hasReturnedResult = true;\n      process.nextTick(\n        this.listener,\n        statusOrFromValue(this.endpoints),\n        {},\n        null,\n        ''\n      );\n    }\n  }\n\n  destroy() {\n    this.hasReturnedResult = false;\n  }\n\n  static getDefaultAuthority(target: GrpcUri): string {\n    return 'localhost';\n  }\n}\n\nexport function setup() {\n  registerResolver('unix', UdsResolver);\n}\n", "/*\n * Copyright 2021 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { isIPv4, isIPv6 } from 'net';\nimport { StatusObject, statusOrFromError, statusOrFromValue } from './call-interface';\nimport { ChannelOptions } from './channel-options';\nimport { LogVerbosity, Status } from './constants';\nimport { Metadata } from './metadata';\nimport { registerResolver, Resolver, ResolverListener } from './resolver';\nimport { Endpoint, SubchannelAddress, subchannelAddressToString } from './subchannel-address';\nimport { GrpcUri, splitHostPort, uriToString } from './uri-parser';\nimport * as logging from './logging';\n\nconst TRACER_NAME = 'ip_resolver';\n\nfunction trace(text: string): void {\n  logging.trace(LogVerbosity.DEBUG, TRACER_NAME, text);\n}\n\nconst IPV4_SCHEME = 'ipv4';\nconst IPV6_SCHEME = 'ipv6';\n\n/**\n * The default TCP port to connect to if not explicitly specified in the target.\n */\nconst DEFAULT_PORT = 443;\n\nclass IpResolver implements Resolver {\n  private endpoints: Endpoint[] = [];\n  private error: StatusObject | null = null;\n  private hasReturnedResult = false;\n  constructor(\n    target: GrpcUri,\n    private listener: ResolverListener,\n    channelOptions: ChannelOptions\n  ) {\n    trace('Resolver constructed for target ' + uriToString(target));\n    const addresses: SubchannelAddress[] = [];\n    if (!(target.scheme === IPV4_SCHEME || target.scheme === IPV6_SCHEME)) {\n      this.error = {\n        code: Status.UNAVAILABLE,\n        details: `Unrecognized scheme ${target.scheme} in IP resolver`,\n        metadata: new Metadata(),\n      };\n      return;\n    }\n    const pathList = target.path.split(',');\n    for (const path of pathList) {\n      const hostPort = splitHostPort(path);\n      if (hostPort === null) {\n        this.error = {\n          code: Status.UNAVAILABLE,\n          details: `Failed to parse ${target.scheme} address ${path}`,\n          metadata: new Metadata(),\n        };\n        return;\n      }\n      if (\n        (target.scheme === IPV4_SCHEME && !isIPv4(hostPort.host)) ||\n        (target.scheme === IPV6_SCHEME && !isIPv6(hostPort.host))\n      ) {\n        this.error = {\n          code: Status.UNAVAILABLE,\n          details: `Failed to parse ${target.scheme} address ${path}`,\n          metadata: new Metadata(),\n        };\n        return;\n      }\n      addresses.push({\n        host: hostPort.host,\n        port: hostPort.port ?? DEFAULT_PORT,\n      });\n    }\n    this.endpoints = addresses.map(address => ({ addresses: [address] }));\n    trace('Parsed ' + target.scheme + ' address list ' + addresses.map(subchannelAddressToString));\n  }\n  updateResolution(): void {\n    if (!this.hasReturnedResult) {\n      this.hasReturnedResult = true;\n      process.nextTick(() => {\n        if (this.error) {\n          this.listener(\n            statusOrFromError(this.error),\n            {},\n            null,\n            ''\n          );\n        } else {\n          this.listener(\n            statusOrFromValue(this.endpoints),\n            {},\n            null,\n            ''\n          );\n        }\n      });\n    }\n  }\n  destroy(): void {\n    this.hasReturnedResult = false;\n  }\n\n  static getDefaultAuthority(target: GrpcUri): string {\n    return target.path.split(',')[0];\n  }\n}\n\nexport function setup() {\n  registerResolver(IPV4_SCHEME, IpResolver);\n  registerResolver(IPV6_SCHEME, IpResolver);\n}\n", "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport {\n  LoadBalancer,\n  ChannelControlHelper,\n  TypedLoadBalancingConfig,\n  registerLoadBalancerType,\n  createChildChannelControlHelper,\n} from './load-balancer';\nimport { ConnectivityState } from './connectivity-state';\nimport {\n  QueuePicker,\n  Picker,\n  PickArgs,\n  UnavailablePicker,\n  PickResult,\n} from './picker';\nimport * as logging from './logging';\nimport { LogVerbosity } from './constants';\nimport {\n  Endpoint,\n  endpointEqual,\n  endpointToString,\n} from './subchannel-address';\nimport { LeafLoadBalancer } from './load-balancer-pick-first';\nimport { ChannelOptions } from './channel-options';\nimport { StatusOr } from './call-interface';\n\nconst TRACER_NAME = 'round_robin';\n\nfunction trace(text: string): void {\n  logging.trace(LogVerbosity.DEBUG, TRACER_NAME, text);\n}\n\nconst TYPE_NAME = 'round_robin';\n\nclass RoundRobinLoadBalancingConfig implements TypedLoadBalancingConfig {\n  getLoadBalancerName(): string {\n    return TYPE_NAME;\n  }\n\n  constructor() {}\n\n  toJsonObject(): object {\n    return {\n      [TYPE_NAME]: {},\n    };\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  static createFromJson(obj: any) {\n    return new RoundRobinLoadBalancingConfig();\n  }\n}\n\nclass RoundRobinPicker implements Picker {\n  constructor(\n    private readonly children: { endpoint: Endpoint; picker: Picker }[],\n    private nextIndex = 0\n  ) {}\n\n  pick(pickArgs: PickArgs): PickResult {\n    const childPicker = this.children[this.nextIndex].picker;\n    this.nextIndex = (this.nextIndex + 1) % this.children.length;\n    return childPicker.pick(pickArgs);\n  }\n\n  /**\n   * Check what the next subchannel returned would be. Used by the load\n   * balancer implementation to preserve this part of the picker state if\n   * possible when a subchannel connects or disconnects.\n   */\n  peekNextEndpoint(): Endpoint {\n    return this.children[this.nextIndex].endpoint;\n  }\n}\n\nfunction rotateArray<T>(list: T[], startIndex: number) {\n  return [...list.slice(startIndex), ...list.slice(0, startIndex)];\n}\n\nexport class RoundRobinLoadBalancer implements LoadBalancer {\n  private children: LeafLoadBalancer[] = [];\n\n  private currentState: ConnectivityState = ConnectivityState.IDLE;\n\n  private currentReadyPicker: RoundRobinPicker | null = null;\n\n  private updatesPaused = false;\n\n  private childChannelControlHelper: ChannelControlHelper;\n\n  private lastError: string | null = null;\n\n  constructor(\n    private readonly channelControlHelper: ChannelControlHelper\n  ) {\n    this.childChannelControlHelper = createChildChannelControlHelper(\n      channelControlHelper,\n      {\n        updateState: (connectivityState, picker, errorMessage) => {\n          /* Ensure that name resolution is requested again after active\n           * connections are dropped. This is more aggressive than necessary to\n           * accomplish that, so we are counting on resolvers to have\n           * reasonable rate limits. */\n          if (this.currentState === ConnectivityState.READY && connectivityState !== ConnectivityState.READY) {\n            this.channelControlHelper.requestReresolution();\n          }\n          if (errorMessage) {\n            this.lastError = errorMessage;\n          }\n          this.calculateAndUpdateState();\n        },\n      }\n    );\n  }\n\n  private countChildrenWithState(state: ConnectivityState) {\n    return this.children.filter(child => child.getConnectivityState() === state)\n      .length;\n  }\n\n  private calculateAndUpdateState() {\n    if (this.updatesPaused) {\n      return;\n    }\n    if (this.countChildrenWithState(ConnectivityState.READY) > 0) {\n      const readyChildren = this.children.filter(\n        child => child.getConnectivityState() === ConnectivityState.READY\n      );\n      let index = 0;\n      if (this.currentReadyPicker !== null) {\n        const nextPickedEndpoint = this.currentReadyPicker.peekNextEndpoint();\n        index = readyChildren.findIndex(child =>\n          endpointEqual(child.getEndpoint(), nextPickedEndpoint)\n        );\n        if (index < 0) {\n          index = 0;\n        }\n      }\n      this.updateState(\n        ConnectivityState.READY,\n        new RoundRobinPicker(\n          readyChildren.map(child => ({\n            endpoint: child.getEndpoint(),\n            picker: child.getPicker(),\n          })),\n          index\n        ),\n        null\n      );\n    } else if (this.countChildrenWithState(ConnectivityState.CONNECTING) > 0) {\n      this.updateState(ConnectivityState.CONNECTING, new QueuePicker(this), null);\n    } else if (\n      this.countChildrenWithState(ConnectivityState.TRANSIENT_FAILURE) > 0\n    ) {\n      const errorMessage = `round_robin: No connection established. Last error: ${this.lastError}`;\n      this.updateState(\n        ConnectivityState.TRANSIENT_FAILURE,\n        new UnavailablePicker({\n          details: errorMessage,\n        }),\n        errorMessage\n      );\n    } else {\n      this.updateState(ConnectivityState.IDLE, new QueuePicker(this), null);\n    }\n    /* round_robin should keep all children connected, this is how we do that.\n     * We can't do this more efficiently in the individual child's updateState\n     * callback because that doesn't have a reference to which child the state\n     * change is associated with. */\n    for (const child of this.children) {\n      if (child.getConnectivityState() === ConnectivityState.IDLE) {\n        child.exitIdle();\n      }\n    }\n  }\n\n  private updateState(newState: ConnectivityState, picker: Picker, errorMessage: string | null) {\n    trace(\n      ConnectivityState[this.currentState] +\n        ' -> ' +\n        ConnectivityState[newState]\n    );\n    if (newState === ConnectivityState.READY) {\n      this.currentReadyPicker = picker as RoundRobinPicker;\n    } else {\n      this.currentReadyPicker = null;\n    }\n    this.currentState = newState;\n    this.channelControlHelper.updateState(newState, picker, errorMessage);\n  }\n\n  private resetSubchannelList() {\n    for (const child of this.children) {\n      child.destroy();\n    }\n    this.children = [];\n  }\n\n  updateAddressList(\n    maybeEndpointList: StatusOr<Endpoint[]>,\n    lbConfig: TypedLoadBalancingConfig,\n    options: ChannelOptions,\n    resolutionNote: string\n  ): boolean {\n    if (!(lbConfig instanceof RoundRobinLoadBalancingConfig)) {\n      return false;\n    }\n    if (!maybeEndpointList.ok) {\n      if (this.children.length === 0) {\n        this.updateState(\n          ConnectivityState.TRANSIENT_FAILURE,\n          new UnavailablePicker(maybeEndpointList.error),\n          maybeEndpointList.error.details\n        );\n      }\n      return true;\n    }\n    const startIndex = (Math.random() * maybeEndpointList.value.length) | 0;\n    const endpointList = rotateArray(maybeEndpointList.value, startIndex);\n    this.resetSubchannelList();\n    if (endpointList.length === 0) {\n      const errorMessage = `No addresses resolved. Resolution note: ${resolutionNote}`;\n      this.updateState(\n        ConnectivityState.TRANSIENT_FAILURE,\n        new UnavailablePicker({details: errorMessage}),\n        errorMessage\n      );\n    }\n    trace('Connect to endpoint list ' + endpointList.map(endpointToString));\n    this.updatesPaused = true;\n    this.children = endpointList.map(\n      endpoint =>\n        new LeafLoadBalancer(\n          endpoint,\n          this.childChannelControlHelper,\n          options,\n          resolutionNote\n        )\n    );\n    for (const child of this.children) {\n      child.startConnecting();\n    }\n    this.updatesPaused = false;\n    this.calculateAndUpdateState();\n    return true;\n  }\n\n  exitIdle(): void {\n    /* The round_robin LB policy is only in the IDLE state if it has no\n     * addresses to try to connect to and it has no picked subchannel.\n     * In that case, there is no meaningful action that can be taken here. */\n  }\n  resetBackoff(): void {\n    // This LB policy has no backoff to reset\n  }\n  destroy(): void {\n    this.resetSubchannelList();\n  }\n  getTypeName(): string {\n    return TYPE_NAME;\n  }\n}\n\nexport function setup() {\n  registerLoadBalancerType(\n    TYPE_NAME,\n    RoundRobinLoadBalancer,\n    RoundRobinLoadBalancingConfig\n  );\n}\n", "/*\n * Copyright 2022 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { ChannelOptions } from './channel-options';\nimport { ConnectivityState } from './connectivity-state';\nimport { LogVerbosity, Status } from './constants';\nimport { Duration, durationToMs, isDuration, msToDuration } from './duration';\nimport {\n  ChannelControlHelper,\n  createChildChannelControlHelper,\n  registerLoadBalancerType,\n} from './experimental';\nimport {\n  selectLbConfigFromList,\n  LoadBalancer,\n  TypedLoadBalancingConfig,\n} from './load-balancer';\nimport { ChildLoadBalancerHandler } from './load-balancer-child-handler';\nimport { PickArgs, Picker, PickResult, PickResultType } from './picker';\nimport {\n  Endpoint,\n  EndpointMap,\n  SubchannelAddress,\n  endpointToString,\n} from './subchannel-address';\nimport {\n  BaseSubchannelWrapper,\n  SubchannelInterface,\n} from './subchannel-interface';\nimport * as logging from './logging';\nimport { LoadBalancingConfig } from './service-config';\nimport { StatusOr } from './call-interface';\n\nconst TRACER_NAME = 'outlier_detection';\n\nfunction trace(text: string): void {\n  logging.trace(LogVerbosity.DEBUG, TRACER_NAME, text);\n}\n\nconst TYPE_NAME = 'outlier_detection';\n\nconst OUTLIER_DETECTION_ENABLED =\n  (process.env.GRPC_EXPERIMENTAL_ENABLE_OUTLIER_DETECTION ?? 'true') === 'true';\n\nexport interface SuccessRateEjectionConfig {\n  readonly stdev_factor: number;\n  readonly enforcement_percentage: number;\n  readonly minimum_hosts: number;\n  readonly request_volume: number;\n}\n\nexport interface FailurePercentageEjectionConfig {\n  readonly threshold: number;\n  readonly enforcement_percentage: number;\n  readonly minimum_hosts: number;\n  readonly request_volume: number;\n}\n\nexport interface OutlierDetectionRawConfig {\n  interval?: Duration;\n  base_ejection_time?: Duration;\n  max_ejection_time?: Duration;\n  max_ejection_percent?: number;\n  success_rate_ejection?: Partial<SuccessRateEjectionConfig>;\n  failure_percentage_ejection?: Partial<FailurePercentageEjectionConfig>;\n  child_policy: LoadBalancingConfig[];\n}\n\nconst defaultSuccessRateEjectionConfig: SuccessRateEjectionConfig = {\n  stdev_factor: 1900,\n  enforcement_percentage: 100,\n  minimum_hosts: 5,\n  request_volume: 100,\n};\n\nconst defaultFailurePercentageEjectionConfig: FailurePercentageEjectionConfig =\n  {\n    threshold: 85,\n    enforcement_percentage: 100,\n    minimum_hosts: 5,\n    request_volume: 50,\n  };\n\ntype TypeofValues =\n  | 'object'\n  | 'boolean'\n  | 'function'\n  | 'number'\n  | 'string'\n  | 'undefined';\n\nfunction validateFieldType(\n  obj: any,\n  fieldName: string,\n  expectedType: TypeofValues,\n  objectName?: string\n) {\n  if (\n    fieldName in obj &&\n    obj[fieldName] !== undefined &&\n    typeof obj[fieldName] !== expectedType\n  ) {\n    const fullFieldName = objectName ? `${objectName}.${fieldName}` : fieldName;\n    throw new Error(\n      `outlier detection config ${fullFieldName} parse error: expected ${expectedType}, got ${typeof obj[\n        fieldName\n      ]}`\n    );\n  }\n}\n\nfunction validatePositiveDuration(\n  obj: any,\n  fieldName: string,\n  objectName?: string\n) {\n  const fullFieldName = objectName ? `${objectName}.${fieldName}` : fieldName;\n  if (fieldName in obj && obj[fieldName] !== undefined) {\n    if (!isDuration(obj[fieldName])) {\n      throw new Error(\n        `outlier detection config ${fullFieldName} parse error: expected Duration, got ${typeof obj[\n          fieldName\n        ]}`\n      );\n    }\n    if (\n      !(\n        obj[fieldName].seconds >= 0 &&\n        obj[fieldName].seconds <= 315_576_000_000 &&\n        obj[fieldName].nanos >= 0 &&\n        obj[fieldName].nanos <= 999_999_999\n      )\n    ) {\n      throw new Error(\n        `outlier detection config ${fullFieldName} parse error: values out of range for non-negative Duaration`\n      );\n    }\n  }\n}\n\nfunction validatePercentage(obj: any, fieldName: string, objectName?: string) {\n  const fullFieldName = objectName ? `${objectName}.${fieldName}` : fieldName;\n  validateFieldType(obj, fieldName, 'number', objectName);\n  if (\n    fieldName in obj &&\n    obj[fieldName] !== undefined &&\n    !(obj[fieldName] >= 0 && obj[fieldName] <= 100)\n  ) {\n    throw new Error(\n      `outlier detection config ${fullFieldName} parse error: value out of range for percentage (0-100)`\n    );\n  }\n}\n\nexport class OutlierDetectionLoadBalancingConfig\n  implements TypedLoadBalancingConfig\n{\n  private readonly intervalMs: number;\n  private readonly baseEjectionTimeMs: number;\n  private readonly maxEjectionTimeMs: number;\n  private readonly maxEjectionPercent: number;\n  private readonly successRateEjection: SuccessRateEjectionConfig | null;\n  private readonly failurePercentageEjection: FailurePercentageEjectionConfig | null;\n\n  constructor(\n    intervalMs: number | null,\n    baseEjectionTimeMs: number | null,\n    maxEjectionTimeMs: number | null,\n    maxEjectionPercent: number | null,\n    successRateEjection: Partial<SuccessRateEjectionConfig> | null,\n    failurePercentageEjection: Partial<FailurePercentageEjectionConfig> | null,\n    private readonly childPolicy: TypedLoadBalancingConfig\n  ) {\n    if (childPolicy.getLoadBalancerName() === 'pick_first') {\n      throw new Error(\n        'outlier_detection LB policy cannot have a pick_first child policy'\n      );\n    }\n    this.intervalMs = intervalMs ?? 10_000;\n    this.baseEjectionTimeMs = baseEjectionTimeMs ?? 30_000;\n    this.maxEjectionTimeMs = maxEjectionTimeMs ?? 300_000;\n    this.maxEjectionPercent = maxEjectionPercent ?? 10;\n    this.successRateEjection = successRateEjection\n      ? { ...defaultSuccessRateEjectionConfig, ...successRateEjection }\n      : null;\n    this.failurePercentageEjection = failurePercentageEjection\n      ? {\n          ...defaultFailurePercentageEjectionConfig,\n          ...failurePercentageEjection,\n        }\n      : null;\n  }\n  getLoadBalancerName(): string {\n    return TYPE_NAME;\n  }\n  toJsonObject(): object {\n    return {\n      outlier_detection: {\n        interval: msToDuration(this.intervalMs),\n        base_ejection_time: msToDuration(this.baseEjectionTimeMs),\n        max_ejection_time: msToDuration(this.maxEjectionTimeMs),\n        max_ejection_percent: this.maxEjectionPercent,\n        success_rate_ejection: this.successRateEjection ?? undefined,\n        failure_percentage_ejection:\n          this.failurePercentageEjection ?? undefined,\n        child_policy: [this.childPolicy.toJsonObject()],\n      },\n    };\n  }\n\n  getIntervalMs(): number {\n    return this.intervalMs;\n  }\n  getBaseEjectionTimeMs(): number {\n    return this.baseEjectionTimeMs;\n  }\n  getMaxEjectionTimeMs(): number {\n    return this.maxEjectionTimeMs;\n  }\n  getMaxEjectionPercent(): number {\n    return this.maxEjectionPercent;\n  }\n  getSuccessRateEjectionConfig(): SuccessRateEjectionConfig | null {\n    return this.successRateEjection;\n  }\n  getFailurePercentageEjectionConfig(): FailurePercentageEjectionConfig | null {\n    return this.failurePercentageEjection;\n  }\n  getChildPolicy(): TypedLoadBalancingConfig {\n    return this.childPolicy;\n  }\n\n  static createFromJson(obj: any): OutlierDetectionLoadBalancingConfig {\n    validatePositiveDuration(obj, 'interval');\n    validatePositiveDuration(obj, 'base_ejection_time');\n    validatePositiveDuration(obj, 'max_ejection_time');\n    validatePercentage(obj, 'max_ejection_percent');\n    if (\n      'success_rate_ejection' in obj &&\n      obj.success_rate_ejection !== undefined\n    ) {\n      if (typeof obj.success_rate_ejection !== 'object') {\n        throw new Error(\n          'outlier detection config success_rate_ejection must be an object'\n        );\n      }\n      validateFieldType(\n        obj.success_rate_ejection,\n        'stdev_factor',\n        'number',\n        'success_rate_ejection'\n      );\n      validatePercentage(\n        obj.success_rate_ejection,\n        'enforcement_percentage',\n        'success_rate_ejection'\n      );\n      validateFieldType(\n        obj.success_rate_ejection,\n        'minimum_hosts',\n        'number',\n        'success_rate_ejection'\n      );\n      validateFieldType(\n        obj.success_rate_ejection,\n        'request_volume',\n        'number',\n        'success_rate_ejection'\n      );\n    }\n    if (\n      'failure_percentage_ejection' in obj &&\n      obj.failure_percentage_ejection !== undefined\n    ) {\n      if (typeof obj.failure_percentage_ejection !== 'object') {\n        throw new Error(\n          'outlier detection config failure_percentage_ejection must be an object'\n        );\n      }\n      validatePercentage(\n        obj.failure_percentage_ejection,\n        'threshold',\n        'failure_percentage_ejection'\n      );\n      validatePercentage(\n        obj.failure_percentage_ejection,\n        'enforcement_percentage',\n        'failure_percentage_ejection'\n      );\n      validateFieldType(\n        obj.failure_percentage_ejection,\n        'minimum_hosts',\n        'number',\n        'failure_percentage_ejection'\n      );\n      validateFieldType(\n        obj.failure_percentage_ejection,\n        'request_volume',\n        'number',\n        'failure_percentage_ejection'\n      );\n    }\n\n    if (!('child_policy' in obj) || !Array.isArray(obj.child_policy)) {\n      throw new Error('outlier detection config child_policy must be an array');\n    }\n    const childPolicy = selectLbConfigFromList(obj.child_policy);\n    if (!childPolicy) {\n      throw new Error(\n        'outlier detection config child_policy: no valid recognized policy found'\n      );\n    }\n\n    return new OutlierDetectionLoadBalancingConfig(\n      obj.interval ? durationToMs(obj.interval) : null,\n      obj.base_ejection_time ? durationToMs(obj.base_ejection_time) : null,\n      obj.max_ejection_time ? durationToMs(obj.max_ejection_time) : null,\n      obj.max_ejection_percent ?? null,\n      obj.success_rate_ejection,\n      obj.failure_percentage_ejection,\n      childPolicy\n    );\n  }\n}\n\nclass OutlierDetectionSubchannelWrapper\n  extends BaseSubchannelWrapper\n  implements SubchannelInterface\n{\n  private refCount = 0;\n  constructor(\n    childSubchannel: SubchannelInterface,\n    private mapEntry?: MapEntry\n  ) {\n    super(childSubchannel);\n  }\n\n  ref() {\n    this.child.ref();\n    this.refCount += 1;\n  }\n\n  unref() {\n    this.child.unref();\n    this.refCount -= 1;\n    if (this.refCount <= 0) {\n      if (this.mapEntry) {\n        const index = this.mapEntry.subchannelWrappers.indexOf(this);\n        if (index >= 0) {\n          this.mapEntry.subchannelWrappers.splice(index, 1);\n        }\n      }\n    }\n  }\n\n  eject() {\n    this.setHealthy(false);\n  }\n\n  uneject() {\n    this.setHealthy(true);\n  }\n\n  getMapEntry(): MapEntry | undefined {\n    return this.mapEntry;\n  }\n\n  getWrappedSubchannel(): SubchannelInterface {\n    return this.child;\n  }\n}\n\ninterface CallCountBucket {\n  success: number;\n  failure: number;\n}\n\nfunction createEmptyBucket(): CallCountBucket {\n  return {\n    success: 0,\n    failure: 0,\n  };\n}\n\nclass CallCounter {\n  private activeBucket: CallCountBucket = createEmptyBucket();\n  private inactiveBucket: CallCountBucket = createEmptyBucket();\n  addSuccess() {\n    this.activeBucket.success += 1;\n  }\n  addFailure() {\n    this.activeBucket.failure += 1;\n  }\n  switchBuckets() {\n    this.inactiveBucket = this.activeBucket;\n    this.activeBucket = createEmptyBucket();\n  }\n  getLastSuccesses() {\n    return this.inactiveBucket.success;\n  }\n  getLastFailures() {\n    return this.inactiveBucket.failure;\n  }\n}\n\nclass OutlierDetectionPicker implements Picker {\n  constructor(private wrappedPicker: Picker, private countCalls: boolean) {}\n  pick(pickArgs: PickArgs): PickResult {\n    const wrappedPick = this.wrappedPicker.pick(pickArgs);\n    if (wrappedPick.pickResultType === PickResultType.COMPLETE) {\n      const subchannelWrapper =\n        wrappedPick.subchannel as OutlierDetectionSubchannelWrapper;\n      const mapEntry = subchannelWrapper.getMapEntry();\n      if (mapEntry) {\n        let onCallEnded = wrappedPick.onCallEnded;\n        if (this.countCalls) {\n          onCallEnded = (statusCode, details, metadata) => {\n            if (statusCode === Status.OK) {\n              mapEntry.counter.addSuccess();\n            } else {\n              mapEntry.counter.addFailure();\n            }\n            wrappedPick.onCallEnded?.(statusCode, details, metadata);\n          };\n        }\n        return {\n          ...wrappedPick,\n          subchannel: subchannelWrapper.getWrappedSubchannel(),\n          onCallEnded: onCallEnded,\n        };\n      } else {\n        return {\n          ...wrappedPick,\n          subchannel: subchannelWrapper.getWrappedSubchannel(),\n        };\n      }\n    } else {\n      return wrappedPick;\n    }\n  }\n}\n\ninterface MapEntry {\n  counter: CallCounter;\n  currentEjectionTimestamp: Date | null;\n  ejectionTimeMultiplier: number;\n  subchannelWrappers: OutlierDetectionSubchannelWrapper[];\n}\n\nexport class OutlierDetectionLoadBalancer implements LoadBalancer {\n  private childBalancer: ChildLoadBalancerHandler;\n  private entryMap = new EndpointMap<MapEntry>();\n  private latestConfig: OutlierDetectionLoadBalancingConfig | null = null;\n  private ejectionTimer: NodeJS.Timeout;\n  private timerStartTime: Date | null = null;\n\n  constructor(\n    channelControlHelper: ChannelControlHelper\n  ) {\n    this.childBalancer = new ChildLoadBalancerHandler(\n      createChildChannelControlHelper(channelControlHelper, {\n        createSubchannel: (\n          subchannelAddress: SubchannelAddress,\n          subchannelArgs: ChannelOptions\n        ) => {\n          const originalSubchannel = channelControlHelper.createSubchannel(\n            subchannelAddress,\n            subchannelArgs\n          );\n          const mapEntry =\n            this.entryMap.getForSubchannelAddress(subchannelAddress);\n          const subchannelWrapper = new OutlierDetectionSubchannelWrapper(\n            originalSubchannel,\n            mapEntry\n          );\n          if (mapEntry?.currentEjectionTimestamp !== null) {\n            // If the address is ejected, propagate that to the new subchannel wrapper\n            subchannelWrapper.eject();\n          }\n          mapEntry?.subchannelWrappers.push(subchannelWrapper);\n          return subchannelWrapper;\n        },\n        updateState: (connectivityState: ConnectivityState, picker: Picker, errorMessage: string) => {\n          if (connectivityState === ConnectivityState.READY) {\n            channelControlHelper.updateState(\n              connectivityState,\n              new OutlierDetectionPicker(picker, this.isCountingEnabled()),\n              errorMessage\n            );\n          } else {\n            channelControlHelper.updateState(connectivityState, picker, errorMessage);\n          }\n        },\n      })\n    );\n    this.ejectionTimer = setInterval(() => {}, 0);\n    clearInterval(this.ejectionTimer);\n  }\n\n  private isCountingEnabled(): boolean {\n    return (\n      this.latestConfig !== null &&\n      (this.latestConfig.getSuccessRateEjectionConfig() !== null ||\n        this.latestConfig.getFailurePercentageEjectionConfig() !== null)\n    );\n  }\n\n  private getCurrentEjectionPercent() {\n    let ejectionCount = 0;\n    for (const mapEntry of this.entryMap.values()) {\n      if (mapEntry.currentEjectionTimestamp !== null) {\n        ejectionCount += 1;\n      }\n    }\n    return (ejectionCount * 100) / this.entryMap.size;\n  }\n\n  private runSuccessRateCheck(ejectionTimestamp: Date) {\n    if (!this.latestConfig) {\n      return;\n    }\n    const successRateConfig = this.latestConfig.getSuccessRateEjectionConfig();\n    if (!successRateConfig) {\n      return;\n    }\n    trace('Running success rate check');\n    // Step 1\n    const targetRequestVolume = successRateConfig.request_volume;\n    let addresesWithTargetVolume = 0;\n    const successRates: number[] = [];\n    for (const [endpoint, mapEntry] of this.entryMap.entries()) {\n      const successes = mapEntry.counter.getLastSuccesses();\n      const failures = mapEntry.counter.getLastFailures();\n      trace(\n        'Stats for ' +\n          endpointToString(endpoint) +\n          ': successes=' +\n          successes +\n          ' failures=' +\n          failures +\n          ' targetRequestVolume=' +\n          targetRequestVolume\n      );\n      if (successes + failures >= targetRequestVolume) {\n        addresesWithTargetVolume += 1;\n        successRates.push(successes / (successes + failures));\n      }\n    }\n    trace(\n      'Found ' +\n        addresesWithTargetVolume +\n        ' success rate candidates; currentEjectionPercent=' +\n        this.getCurrentEjectionPercent() +\n        ' successRates=[' +\n        successRates +\n        ']'\n    );\n    if (addresesWithTargetVolume < successRateConfig.minimum_hosts) {\n      return;\n    }\n\n    // Step 2\n    const successRateMean =\n      successRates.reduce((a, b) => a + b) / successRates.length;\n    let successRateDeviationSum = 0;\n    for (const rate of successRates) {\n      const deviation = rate - successRateMean;\n      successRateDeviationSum += deviation * deviation;\n    }\n    const successRateVariance = successRateDeviationSum / successRates.length;\n    const successRateStdev = Math.sqrt(successRateVariance);\n    const ejectionThreshold =\n      successRateMean -\n      successRateStdev * (successRateConfig.stdev_factor / 1000);\n    trace(\n      'stdev=' + successRateStdev + ' ejectionThreshold=' + ejectionThreshold\n    );\n\n    // Step 3\n    for (const [address, mapEntry] of this.entryMap.entries()) {\n      // Step 3.i\n      if (\n        this.getCurrentEjectionPercent() >=\n        this.latestConfig.getMaxEjectionPercent()\n      ) {\n        break;\n      }\n      // Step 3.ii\n      const successes = mapEntry.counter.getLastSuccesses();\n      const failures = mapEntry.counter.getLastFailures();\n      if (successes + failures < targetRequestVolume) {\n        continue;\n      }\n      // Step 3.iii\n      const successRate = successes / (successes + failures);\n      trace('Checking candidate ' + address + ' successRate=' + successRate);\n      if (successRate < ejectionThreshold) {\n        const randomNumber = Math.random() * 100;\n        trace(\n          'Candidate ' +\n            address +\n            ' randomNumber=' +\n            randomNumber +\n            ' enforcement_percentage=' +\n            successRateConfig.enforcement_percentage\n        );\n        if (randomNumber < successRateConfig.enforcement_percentage) {\n          trace('Ejecting candidate ' + address);\n          this.eject(mapEntry, ejectionTimestamp);\n        }\n      }\n    }\n  }\n\n  private runFailurePercentageCheck(ejectionTimestamp: Date) {\n    if (!this.latestConfig) {\n      return;\n    }\n    const failurePercentageConfig =\n      this.latestConfig.getFailurePercentageEjectionConfig();\n    if (!failurePercentageConfig) {\n      return;\n    }\n    trace(\n      'Running failure percentage check. threshold=' +\n        failurePercentageConfig.threshold +\n        ' request volume threshold=' +\n        failurePercentageConfig.request_volume\n    );\n    // Step 1\n    let addressesWithTargetVolume = 0;\n    for (const mapEntry of this.entryMap.values()) {\n      const successes = mapEntry.counter.getLastSuccesses();\n      const failures = mapEntry.counter.getLastFailures();\n      if (successes + failures >= failurePercentageConfig.request_volume) {\n        addressesWithTargetVolume += 1;\n      }\n    }\n    if (addressesWithTargetVolume < failurePercentageConfig.minimum_hosts) {\n      return;\n    }\n\n    // Step 2\n    for (const [address, mapEntry] of this.entryMap.entries()) {\n      // Step 2.i\n      if (\n        this.getCurrentEjectionPercent() >=\n        this.latestConfig.getMaxEjectionPercent()\n      ) {\n        break;\n      }\n      // Step 2.ii\n      const successes = mapEntry.counter.getLastSuccesses();\n      const failures = mapEntry.counter.getLastFailures();\n      trace('Candidate successes=' + successes + ' failures=' + failures);\n      if (successes + failures < failurePercentageConfig.request_volume) {\n        continue;\n      }\n      // Step 2.iii\n      const failurePercentage = (failures * 100) / (failures + successes);\n      if (failurePercentage > failurePercentageConfig.threshold) {\n        const randomNumber = Math.random() * 100;\n        trace(\n          'Candidate ' +\n            address +\n            ' randomNumber=' +\n            randomNumber +\n            ' enforcement_percentage=' +\n            failurePercentageConfig.enforcement_percentage\n        );\n        if (randomNumber < failurePercentageConfig.enforcement_percentage) {\n          trace('Ejecting candidate ' + address);\n          this.eject(mapEntry, ejectionTimestamp);\n        }\n      }\n    }\n  }\n\n  private eject(mapEntry: MapEntry, ejectionTimestamp: Date) {\n    mapEntry.currentEjectionTimestamp = new Date();\n    mapEntry.ejectionTimeMultiplier += 1;\n    for (const subchannelWrapper of mapEntry.subchannelWrappers) {\n      subchannelWrapper.eject();\n    }\n  }\n\n  private uneject(mapEntry: MapEntry) {\n    mapEntry.currentEjectionTimestamp = null;\n    for (const subchannelWrapper of mapEntry.subchannelWrappers) {\n      subchannelWrapper.uneject();\n    }\n  }\n\n  private switchAllBuckets() {\n    for (const mapEntry of this.entryMap.values()) {\n      mapEntry.counter.switchBuckets();\n    }\n  }\n\n  private startTimer(delayMs: number) {\n    this.ejectionTimer = setTimeout(() => this.runChecks(), delayMs);\n    this.ejectionTimer.unref?.();\n  }\n\n  private runChecks() {\n    const ejectionTimestamp = new Date();\n    trace('Ejection timer running');\n\n    this.switchAllBuckets();\n\n    if (!this.latestConfig) {\n      return;\n    }\n    this.timerStartTime = ejectionTimestamp;\n    this.startTimer(this.latestConfig.getIntervalMs());\n\n    this.runSuccessRateCheck(ejectionTimestamp);\n    this.runFailurePercentageCheck(ejectionTimestamp);\n\n    for (const [address, mapEntry] of this.entryMap.entries()) {\n      if (mapEntry.currentEjectionTimestamp === null) {\n        if (mapEntry.ejectionTimeMultiplier > 0) {\n          mapEntry.ejectionTimeMultiplier -= 1;\n        }\n      } else {\n        const baseEjectionTimeMs = this.latestConfig.getBaseEjectionTimeMs();\n        const maxEjectionTimeMs = this.latestConfig.getMaxEjectionTimeMs();\n        const returnTime = new Date(\n          mapEntry.currentEjectionTimestamp.getTime()\n        );\n        returnTime.setMilliseconds(\n          returnTime.getMilliseconds() +\n            Math.min(\n              baseEjectionTimeMs * mapEntry.ejectionTimeMultiplier,\n              Math.max(baseEjectionTimeMs, maxEjectionTimeMs)\n            )\n        );\n        if (returnTime < new Date()) {\n          trace('Unejecting ' + address);\n          this.uneject(mapEntry);\n        }\n      }\n    }\n  }\n\n  updateAddressList(\n    endpointList: StatusOr<Endpoint[]>,\n    lbConfig: TypedLoadBalancingConfig,\n    options: ChannelOptions,\n    resolutionNote: string\n  ): boolean {\n    if (!(lbConfig instanceof OutlierDetectionLoadBalancingConfig)) {\n      return false;\n    }\n    trace('Received update with config: ' + JSON.stringify(lbConfig.toJsonObject(), undefined, 2));\n    if (endpointList.ok) {\n      for (const endpoint of endpointList.value) {\n        if (!this.entryMap.has(endpoint)) {\n          trace('Adding map entry for ' + endpointToString(endpoint));\n          this.entryMap.set(endpoint, {\n            counter: new CallCounter(),\n            currentEjectionTimestamp: null,\n            ejectionTimeMultiplier: 0,\n            subchannelWrappers: [],\n          });\n        }\n      }\n      this.entryMap.deleteMissing(endpointList.value);\n    }\n    const childPolicy = lbConfig.getChildPolicy();\n    this.childBalancer.updateAddressList(endpointList, childPolicy, options, resolutionNote);\n\n    if (\n      lbConfig.getSuccessRateEjectionConfig() ||\n      lbConfig.getFailurePercentageEjectionConfig()\n    ) {\n      if (this.timerStartTime) {\n        trace('Previous timer existed. Replacing timer');\n        clearTimeout(this.ejectionTimer);\n        const remainingDelay =\n          lbConfig.getIntervalMs() -\n          (new Date().getTime() - this.timerStartTime.getTime());\n        this.startTimer(remainingDelay);\n      } else {\n        trace('Starting new timer');\n        this.timerStartTime = new Date();\n        this.startTimer(lbConfig.getIntervalMs());\n        this.switchAllBuckets();\n      }\n    } else {\n      trace('Counting disabled. Cancelling timer.');\n      this.timerStartTime = null;\n      clearTimeout(this.ejectionTimer);\n      for (const mapEntry of this.entryMap.values()) {\n        this.uneject(mapEntry);\n        mapEntry.ejectionTimeMultiplier = 0;\n      }\n    }\n\n    this.latestConfig = lbConfig;\n    return true;\n  }\n  exitIdle(): void {\n    this.childBalancer.exitIdle();\n  }\n  resetBackoff(): void {\n    this.childBalancer.resetBackoff();\n  }\n  destroy(): void {\n    clearTimeout(this.ejectionTimer);\n    this.childBalancer.destroy();\n  }\n  getTypeName(): string {\n    return TYPE_NAME;\n  }\n}\n\nexport function setup() {\n  if (OUTLIER_DETECTION_ENABLED) {\n    registerLoadBalancerType(\n      TYPE_NAME,\n      OutlierDetectionLoadBalancer,\n      OutlierDetectionLoadBalancingConfig\n    );\n  }\n}\n", "/*\n * Copyright 2025 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nconst top = 0;\nconst parent = (i: number) => Math.floor(i / 2);\nconst left = (i: number) => i * 2 + 1;\nconst right = (i: number) => i * 2 + 2;\n\n/**\n * A generic priority queue implemented as an array-based binary heap.\n * Adapted from https://stackoverflow.com/a/42919752/159388\n */\nexport class PriorityQueue<T=number> {\n  private readonly heap: T[] = [];\n  /**\n   *\n   * @param comparator Returns true if the first argument should precede the\n   *   second in the queue. Defaults to `(a, b) => a > b`\n   */\n  constructor(private readonly comparator = (a: T, b: T) => a > b) {}\n\n  /**\n   * @returns The number of items currently in the queue\n   */\n  size(): number {\n    return this.heap.length;\n  }\n  /**\n   * @returns True if there are no items in the queue, false otherwise\n   */\n  isEmpty(): boolean {\n    return this.size() == 0;\n  }\n  /**\n   * Look at the front item that would be popped, without modifying the contents\n   * of the queue\n   * @returns The front item in the queue, or undefined if the queue is empty\n   */\n  peek(): T | undefined {\n    return this.heap[top];\n  }\n  /**\n   * Add the items to the queue\n   * @param values The items to add\n   * @returns The new size of the queue after adding the items\n   */\n  push(...values: T[]): number {\n    values.forEach(value => {\n      this.heap.push(value);\n      this.siftUp();\n    });\n    return this.size();\n  }\n  /**\n   * Remove the front item in the queue and return it\n   * @returns The front item in the queue, or undefined if the queue is empty\n   */\n  pop(): T | undefined {\n    const poppedValue = this.peek();\n    const bottom = this.size() - 1;\n    if (bottom > top) {\n      this.swap(top, bottom);\n    }\n    this.heap.pop();\n    this.siftDown();\n    return poppedValue;\n  }\n  /**\n   * Simultaneously remove the front item in the queue and add the provided\n   * item.\n   * @param value The item to add\n   * @returns The front item in the queue, or undefined if the queue is empty\n   */\n  replace(value: T): T | undefined {\n    const replacedValue = this.peek();\n    this.heap[top] = value;\n    this.siftDown();\n    return replacedValue;\n  }\n  private greater(i: number, j: number): boolean {\n    return this.comparator(this.heap[i], this.heap[j]);\n  }\n  private swap(i: number, j: number): void {\n    [this.heap[i], this.heap[j]] = [this.heap[j], this.heap[i]];\n  }\n  private siftUp(): void {\n    let node = this.size() - 1;\n    while (node > top && this.greater(node, parent(node))) {\n      this.swap(node, parent(node));\n      node = parent(node);\n    }\n  }\n  private siftDown(): void {\n    let node = top;\n    while (\n      (left(node) < this.size() && this.greater(left(node), node)) ||\n      (right(node) < this.size() && this.greater(right(node), node))\n    ) {\n      let maxChild = (right(node) < this.size() && this.greater(right(node), left(node))) ? right(node) : left(node);\n      this.swap(node, maxChild);\n      node = maxChild;\n    }\n  }\n}\n", "/*\n * Copyright 2025 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport { StatusOr } from './call-interface';\nimport { ChannelOptions } from './channel-options';\nimport { ConnectivityState } from './connectivity-state';\nimport { LogVerbosity } from './constants';\nimport { Duration, durationMessageToDuration, durationToMs, durationToString, isDuration, isDurationMessage, msToDuration, parseDuration } from './duration';\nimport { OrcaLoadReport__Output } from './generated/xds/data/orca/v3/OrcaLoadReport';\nimport { ChannelControlHelper, createChildChannelControlHelper, LoadBalancer, registerLoadBalancerType, TypedLoadBalancingConfig } from './load-balancer';\nimport { LeafLoadBalancer } from './load-balancer-pick-first';\nimport * as logging from './logging';\nimport { createMetricsReader, MetricsListener, OrcaOobMetricsSubchannelWrapper } from './orca';\nimport { PickArgs, Picker, PickResult, PickResultType, QueuePicker, UnavailablePicker } from './picker';\nimport { PriorityQueue } from './priority-queue';\nimport { Endpoint, endpointToString } from './subchannel-address';\n\nconst TRACER_NAME = 'weighted_round_robin';\n\nfunction trace(text: string): void {\n  logging.trace(LogVerbosity.DEBUG, TRACER_NAME, text);\n}\n\nconst TYPE_NAME = 'weighted_round_robin';\n\nconst DEFAULT_OOB_REPORTING_PERIOD_MS = 10_000;\nconst DEFAULT_BLACKOUT_PERIOD_MS = 10_000;\nconst DEFAULT_WEIGHT_EXPIRATION_PERIOD_MS = 3 * 60_000;\nconst DEFAULT_WEIGHT_UPDATE_PERIOD_MS = 1_000;\nconst DEFAULT_ERROR_UTILIZATION_PENALTY = 1;\n\ntype TypeofValues =\n  | 'object'\n  | 'boolean'\n  | 'function'\n  | 'number'\n  | 'string'\n  | 'undefined';\n\nfunction validateFieldType(\n  obj: any,\n  fieldName: string,\n  expectedType: TypeofValues\n) {\n  if (\n    fieldName in obj &&\n    obj[fieldName] !== undefined &&\n    typeof obj[fieldName] !== expectedType\n  ) {\n    throw new Error(\n      `weighted round robin config ${fieldName} parse error: expected ${expectedType}, got ${typeof obj[\n        fieldName\n      ]}`\n    );\n  }\n}\n\nfunction parseDurationField(obj: any, fieldName: string): number | null {\n  if (fieldName in obj && obj[fieldName] !== undefined && obj[fieldName] !== null) {\n    let durationObject: Duration;\n    if (isDuration(obj[fieldName])) {\n      durationObject = obj[fieldName];\n    } else if (isDurationMessage(obj[fieldName])) {\n      durationObject = durationMessageToDuration(obj[fieldName]);\n    } else if (typeof obj[fieldName] === 'string') {\n      const parsedDuration = parseDuration(obj[fieldName]);\n      if (!parsedDuration) {\n        throw new Error(`weighted round robin config ${fieldName}: failed to parse duration string ${obj[fieldName]}`);\n      }\n      durationObject = parsedDuration;\n    } else {\n      throw new Error(`weighted round robin config ${fieldName}: expected duration, got ${typeof obj[fieldName]}`);\n    }\n    return durationToMs(durationObject);\n  }\n  return null;\n}\n\nexport class WeightedRoundRobinLoadBalancingConfig implements TypedLoadBalancingConfig {\n  private readonly enableOobLoadReport: boolean;\n  private readonly oobLoadReportingPeriodMs: number;\n  private readonly blackoutPeriodMs: number;\n  private readonly weightExpirationPeriodMs: number;\n  private readonly weightUpdatePeriodMs: number;\n  private readonly errorUtilizationPenalty: number;\n\n  constructor(\n    enableOobLoadReport: boolean | null,\n    oobLoadReportingPeriodMs: number | null,\n    blackoutPeriodMs: number | null,\n    weightExpirationPeriodMs: number | null,\n    weightUpdatePeriodMs: number | null,\n    errorUtilizationPenalty: number | null\n  ) {\n    this.enableOobLoadReport = enableOobLoadReport ?? false;\n    this.oobLoadReportingPeriodMs = oobLoadReportingPeriodMs ?? DEFAULT_OOB_REPORTING_PERIOD_MS;\n    this.blackoutPeriodMs = blackoutPeriodMs ?? DEFAULT_BLACKOUT_PERIOD_MS;\n    this.weightExpirationPeriodMs = weightExpirationPeriodMs ?? DEFAULT_WEIGHT_EXPIRATION_PERIOD_MS;\n    this.weightUpdatePeriodMs = Math.max(weightUpdatePeriodMs ?? DEFAULT_WEIGHT_UPDATE_PERIOD_MS, 100);\n    this.errorUtilizationPenalty = errorUtilizationPenalty ?? DEFAULT_ERROR_UTILIZATION_PENALTY;\n  }\n\n  getLoadBalancerName(): string {\n    return TYPE_NAME;\n  }\n  toJsonObject(): object {\n    return {\n      enable_oob_load_report: this.enableOobLoadReport,\n      oob_load_reporting_period: durationToString(msToDuration(this.oobLoadReportingPeriodMs)),\n      blackout_period: durationToString(msToDuration(this.blackoutPeriodMs)),\n      weight_expiration_period: durationToString(msToDuration(this.weightExpirationPeriodMs)),\n      weight_update_period: durationToString(msToDuration(this.weightUpdatePeriodMs)),\n      error_utilization_penalty: this.errorUtilizationPenalty\n    };\n  }\n  static createFromJson(obj: any): WeightedRoundRobinLoadBalancingConfig {\n    validateFieldType(obj, 'enable_oob_load_report', 'boolean');\n    validateFieldType(obj, 'error_utilization_penalty', 'number');\n    if (obj.error_utilization_penalty < 0) {\n      throw new Error('weighted round robin config error_utilization_penalty < 0');\n    }\n    return new WeightedRoundRobinLoadBalancingConfig(\n      obj.enable_oob_load_report,\n      parseDurationField(obj, 'oob_load_reporting_period'),\n      parseDurationField(obj, 'blackout_period'),\n      parseDurationField(obj, 'weight_expiration_period'),\n      parseDurationField(obj, 'weight_update_period'),\n      obj.error_utilization_penalty\n    )\n  }\n\n  getEnableOobLoadReport() {\n    return this.enableOobLoadReport;\n  }\n  getOobLoadReportingPeriodMs() {\n    return this.oobLoadReportingPeriodMs;\n  }\n  getBlackoutPeriodMs() {\n    return this.blackoutPeriodMs;\n  }\n  getWeightExpirationPeriodMs() {\n    return this.weightExpirationPeriodMs;\n  }\n  getWeightUpdatePeriodMs() {\n    return this.weightUpdatePeriodMs;\n  }\n  getErrorUtilizationPenalty() {\n    return this.errorUtilizationPenalty;\n  }\n}\n\ninterface WeightedPicker {\n  endpointName: string;\n  picker: Picker;\n  weight: number;\n}\n\ninterface QueueEntry {\n  endpointName: string;\n  picker: Picker;\n  period: number;\n  deadline: number;\n}\n\ntype MetricsHandler = (loadReport: OrcaLoadReport__Output, endpointName: string) => void;\n\nclass WeightedRoundRobinPicker implements Picker {\n  private queue: PriorityQueue<QueueEntry> = new PriorityQueue((a, b) => a.deadline < b.deadline);\n  constructor(children: WeightedPicker[], private readonly metricsHandler: MetricsHandler | null) {\n    const positiveWeight = children.filter(picker => picker.weight > 0);\n    let averageWeight: number;\n    if (positiveWeight.length < 2) {\n      averageWeight = 1;\n    } else {\n      let weightSum: number = 0;\n      for (const { weight } of positiveWeight) {\n        weightSum += weight;\n      }\n      averageWeight = weightSum / positiveWeight.length;\n    }\n    for (const child of children) {\n      const period = child.weight > 0 ? 1 / child.weight : averageWeight;\n      this.queue.push({\n        endpointName: child.endpointName,\n        picker: child.picker,\n        period: period,\n        deadline: Math.random() * period\n      });\n    }\n  }\n  pick(pickArgs: PickArgs): PickResult {\n    const entry = this.queue.pop()!;\n    this.queue.push({\n      ...entry,\n      deadline: entry.deadline + entry.period\n    })\n    const childPick = entry.picker.pick(pickArgs);\n    if (childPick.pickResultType === PickResultType.COMPLETE) {\n      if (this.metricsHandler) {\n        return {\n          ...childPick,\n          onCallEnded: createMetricsReader(loadReport => this.metricsHandler!(loadReport, entry.endpointName), childPick.onCallEnded)\n        };\n      } else {\n        const subchannelWrapper = childPick.subchannel as OrcaOobMetricsSubchannelWrapper;\n        return {\n          ...childPick,\n          subchannel: subchannelWrapper.getWrappedSubchannel()\n        }\n      }\n    } else {\n      return childPick;\n    }\n  }\n}\n\ninterface ChildEntry {\n  child: LeafLoadBalancer;\n  lastUpdated: Date;\n  nonEmptySince: Date | null;\n  weight: number;\n  oobMetricsListener: MetricsListener | null;\n}\n\nclass WeightedRoundRobinLoadBalancer implements LoadBalancer {\n  private latestConfig: WeightedRoundRobinLoadBalancingConfig | null = null;\n\n  private children: Map<string, ChildEntry> = new Map();\n\n  private currentState: ConnectivityState = ConnectivityState.IDLE;\n\n  private updatesPaused = false;\n\n  private lastError: string | null = null;\n\n  private weightUpdateTimer: NodeJS.Timeout | null = null;\n\n  constructor(private readonly channelControlHelper: ChannelControlHelper) {}\n\n  private countChildrenWithState(state: ConnectivityState) {\n    let count = 0;\n    for (const entry of this.children.values()) {\n      if (entry.child.getConnectivityState() === state) {\n        count += 1;\n      }\n    }\n    return count;\n  }\n\n  updateWeight(entry: ChildEntry, loadReport: OrcaLoadReport__Output): void {\n    const qps = loadReport.rps_fractional;\n    let utilization = loadReport.application_utilization;\n    if (utilization > 0 && qps > 0) {\n      utilization += (loadReport.eps / qps) * (this.latestConfig?.getErrorUtilizationPenalty() ?? 0);\n    }\n    const newWeight = utilization === 0 ? 0 : qps / utilization;\n    if (newWeight === 0) {\n      return;\n    }\n    const now = new Date();\n    if (entry.nonEmptySince === null) {\n      entry.nonEmptySince = now;\n    }\n    entry.lastUpdated = now;\n    entry.weight = newWeight;\n  }\n\n  getWeight(entry: ChildEntry): number {\n    if (!this.latestConfig) {\n      return 0;\n    }\n    const now = new Date().getTime();\n    if (now - entry.lastUpdated.getTime() >= this.latestConfig.getWeightExpirationPeriodMs()) {\n      entry.nonEmptySince = null;\n      return 0;\n    }\n    const blackoutPeriod = this.latestConfig.getBlackoutPeriodMs();\n    if (blackoutPeriod > 0 && (entry.nonEmptySince === null || now - entry.nonEmptySince.getTime() < blackoutPeriod)) {\n      return 0;\n    }\n    return entry.weight;\n  }\n\n  private calculateAndUpdateState() {\n    if (this.updatesPaused || !this.latestConfig) {\n      return;\n    }\n    if (this.countChildrenWithState(ConnectivityState.READY) > 0) {\n      const weightedPickers: WeightedPicker[] = [];\n      for (const [endpoint, entry] of this.children) {\n        if (entry.child.getConnectivityState() !== ConnectivityState.READY) {\n          continue;\n        }\n        weightedPickers.push({\n          endpointName: endpoint,\n          picker: entry.child.getPicker(),\n          weight: this.getWeight(entry)\n        });\n      }\n      trace('Created picker with weights: ' + weightedPickers.map(entry => entry.endpointName + ':' + entry.weight).join(','));\n      let metricsHandler: MetricsHandler | null;\n      if (!this.latestConfig.getEnableOobLoadReport()) {\n        metricsHandler = (loadReport, endpointName) => {\n          const childEntry = this.children.get(endpointName);\n          if (childEntry) {\n            this.updateWeight(childEntry, loadReport);\n          }\n        };\n      } else {\n        metricsHandler = null;\n      }\n      this.updateState(\n        ConnectivityState.READY,\n        new WeightedRoundRobinPicker(\n          weightedPickers,\n          metricsHandler\n        ),\n        null\n      );\n    } else if (this.countChildrenWithState(ConnectivityState.CONNECTING) > 0) {\n      this.updateState(ConnectivityState.CONNECTING, new QueuePicker(this), null);\n    } else if (\n      this.countChildrenWithState(ConnectivityState.TRANSIENT_FAILURE) > 0\n    ) {\n      const errorMessage = `weighted_round_robin: No connection established. Last error: ${this.lastError}`;\n      this.updateState(\n        ConnectivityState.TRANSIENT_FAILURE,\n        new UnavailablePicker({\n          details: errorMessage,\n        }),\n        errorMessage\n      );\n    } else {\n      this.updateState(ConnectivityState.IDLE, new QueuePicker(this), null);\n    }\n    /* round_robin should keep all children connected, this is how we do that.\n      * We can't do this more efficiently in the individual child's updateState\n      * callback because that doesn't have a reference to which child the state\n      * change is associated with. */\n    for (const {child} of this.children.values()) {\n      if (child.getConnectivityState() === ConnectivityState.IDLE) {\n        child.exitIdle();\n      }\n    }\n  }\n\n  private updateState(newState: ConnectivityState, picker: Picker, errorMessage: string | null) {\n    trace(\n      ConnectivityState[this.currentState] +\n        ' -> ' +\n        ConnectivityState[newState]\n    );\n    this.currentState = newState;\n    this.channelControlHelper.updateState(newState, picker, errorMessage);\n  }\n\n  updateAddressList(maybeEndpointList: StatusOr<Endpoint[]>, lbConfig: TypedLoadBalancingConfig, options: ChannelOptions, resolutionNote: string): boolean {\n    if (!(lbConfig instanceof WeightedRoundRobinLoadBalancingConfig)) {\n      return false;\n    }\n    if (!maybeEndpointList.ok) {\n      if (this.children.size === 0) {\n        this.updateState(\n          ConnectivityState.TRANSIENT_FAILURE,\n          new UnavailablePicker(maybeEndpointList.error),\n          maybeEndpointList.error.details\n        );\n      }\n      return true;\n    }\n    if (maybeEndpointList.value.length === 0) {\n      const errorMessage = `No addresses resolved. Resolution note: ${resolutionNote}`;\n      this.updateState(\n        ConnectivityState.TRANSIENT_FAILURE,\n        new UnavailablePicker({details: errorMessage}),\n        errorMessage\n      );\n      return false;\n    }\n    trace('Connect to endpoint list ' + maybeEndpointList.value.map(endpointToString));\n    const now = new Date();\n    const seenEndpointNames = new Set<string>();\n    this.updatesPaused = true;\n    this.latestConfig = lbConfig;\n    for (const endpoint of maybeEndpointList.value) {\n      const name = endpointToString(endpoint);\n      seenEndpointNames.add(name);\n      let entry = this.children.get(name);\n      if (!entry) {\n        entry = {\n          child: new LeafLoadBalancer(endpoint, createChildChannelControlHelper(this.channelControlHelper, {\n            updateState: (connectivityState, picker, errorMessage) => {\n              /* Ensure that name resolution is requested again after active\n                * connections are dropped. This is more aggressive than necessary to\n                * accomplish that, so we are counting on resolvers to have\n                * reasonable rate limits. */\n              if (this.currentState === ConnectivityState.READY && connectivityState !== ConnectivityState.READY) {\n                this.channelControlHelper.requestReresolution();\n              }\n              if (connectivityState === ConnectivityState.READY) {\n                entry!.nonEmptySince = null;\n              }\n              if (errorMessage) {\n                this.lastError = errorMessage;\n              }\n              this.calculateAndUpdateState();\n            },\n            createSubchannel: (subchannelAddress, subchannelArgs) => {\n              const subchannel = this.channelControlHelper.createSubchannel(subchannelAddress, subchannelArgs);\n              if (entry?.oobMetricsListener) {\n                return new OrcaOobMetricsSubchannelWrapper(subchannel, entry.oobMetricsListener, this.latestConfig!.getOobLoadReportingPeriodMs());\n              } else {\n                return subchannel;\n              }\n            }\n          }), options, resolutionNote),\n          lastUpdated: now,\n          nonEmptySince: null,\n          weight: 0,\n          oobMetricsListener: null\n        };\n        this.children.set(name, entry);\n      }\n      if (lbConfig.getEnableOobLoadReport()) {\n        entry.oobMetricsListener = loadReport => {\n          this.updateWeight(entry!, loadReport);\n        };\n      } else {\n        entry.oobMetricsListener = null;\n      }\n    }\n    for (const [endpointName, entry] of this.children) {\n      if (seenEndpointNames.has(endpointName)) {\n        entry.child.startConnecting();\n      } else {\n        entry.child.destroy();\n        this.children.delete(endpointName);\n      }\n    }\n    this.updatesPaused = false;\n    this.calculateAndUpdateState();\n    if (this.weightUpdateTimer) {\n      clearInterval(this.weightUpdateTimer);\n    }\n    this.weightUpdateTimer = setInterval(() => {\n      if (this.currentState === ConnectivityState.READY) {\n        this.calculateAndUpdateState();\n      }\n    }, lbConfig.getWeightUpdatePeriodMs()).unref?.();\n    return true;\n  }\n  exitIdle(): void {\n    /* The weighted_round_robin LB policy is only in the IDLE state if it has\n     * no addresses to try to connect to and it has no picked subchannel.\n     * In that case, there is no meaningful action that can be taken here. */\n  }\n  resetBackoff(): void {\n    // This LB policy has no backoff to reset\n  }\n  destroy(): void {\n    for (const entry of this.children.values()) {\n      entry.child.destroy();\n    }\n    this.children.clear();\n    if (this.weightUpdateTimer) {\n      clearInterval(this.weightUpdateTimer);\n    }\n  }\n  getTypeName(): string {\n    return TYPE_NAME;\n  }\n}\n\nexport function setup() {\n  registerLoadBalancerType(\n    TYPE_NAME,\n    WeightedRoundRobinLoadBalancer,\n    WeightedRoundRobinLoadBalancingConfig\n  );\n}\n", "/*\n * Copyright 2019 gRPC authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n */\n\nimport {\n  ClientDuplexStream,\n  ClientReadableStream,\n  ClientUnaryCall,\n  ClientWritableStream,\n  ServiceError,\n} from './call';\nimport { CallCredentials, OAuth2Client } from './call-credentials';\nimport { StatusObject } from './call-interface';\nimport { Channel, ChannelImplementation } from './channel';\nimport { CompressionAlgorithms } from './compression-algorithms';\nimport { ConnectivityState } from './connectivity-state';\nimport { ChannelCredentials, VerifyOptions } from './channel-credentials';\nimport {\n  CallOptions,\n  Client,\n  ClientOptions,\n  CallInvocationTransformer,\n  CallProperties,\n  UnaryCallback,\n} from './client';\nimport { LogVerbosity, Status, Propagate } from './constants';\nimport * as logging from './logging';\nimport {\n  Deserialize,\n  loadPackageDefinition,\n  makeClientConstructor,\n  MethodDefinition,\n  Serialize,\n  ServerMethodDefinition,\n  ServiceDefinition,\n} from './make-client';\nimport { Metadata, MetadataOptions, MetadataValue } from './metadata';\nimport {\n  ConnectionInjector,\n  Server,\n  ServerOptions,\n  UntypedHandleCall,\n  UntypedServiceImplementation,\n} from './server';\nimport { KeyCertPair, ServerCredentials } from './server-credentials';\nimport { StatusBuilder } from './status-builder';\nimport {\n  handleBidiStreamingCall,\n  handleServerStreamingCall,\n  handleClientStreamingCall,\n  handleUnaryCall,\n  sendUnaryData,\n  ServerUnaryCall,\n  ServerReadableStream,\n  ServerWritableStream,\n  ServerDuplexStream,\n  ServerErrorResponse,\n} from './server-call';\n\nexport { OAuth2Client };\n\n/**** Client Credentials ****/\n\n// Using assign only copies enumerable properties, which is what we want\nexport const credentials = {\n  /**\n   * Combine a ChannelCredentials with any number of CallCredentials into a\n   * single ChannelCredentials object.\n   * @param channelCredentials The ChannelCredentials object.\n   * @param callCredentials Any number of CallCredentials objects.\n   * @return The resulting ChannelCredentials object.\n   */\n  combineChannelCredentials: (\n    channelCredentials: ChannelCredentials,\n    ...callCredentials: CallCredentials[]\n  ): ChannelCredentials => {\n    return callCredentials.reduce(\n      (acc, other) => acc.compose(other),\n      channelCredentials\n    );\n  },\n\n  /**\n   * Combine any number of CallCredentials into a single CallCredentials\n   * object.\n   * @param first The first CallCredentials object.\n   * @param additional Any number of additional CallCredentials objects.\n   * @return The resulting CallCredentials object.\n   */\n  combineCallCredentials: (\n    first: CallCredentials,\n    ...additional: CallCredentials[]\n  ): CallCredentials => {\n    return additional.reduce((acc, other) => acc.compose(other), first);\n  },\n\n  // from channel-credentials.ts\n  createInsecure: ChannelCredentials.createInsecure,\n  createSsl: ChannelCredentials.createSsl,\n  createFromSecureContext: ChannelCredentials.createFromSecureContext,\n\n  // from call-credentials.ts\n  createFromMetadataGenerator: CallCredentials.createFromMetadataGenerator,\n  createFromGoogleCredential: CallCredentials.createFromGoogleCredential,\n  createEmpty: CallCredentials.createEmpty,\n};\n\n/**** Metadata ****/\n\nexport { Metadata, MetadataOptions, MetadataValue };\n\n/**** Constants ****/\n\nexport {\n  LogVerbosity as logVerbosity,\n  Status as status,\n  ConnectivityState as connectivityState,\n  Propagate as propagate,\n  CompressionAlgorithms as compressionAlgorithms,\n  // TODO: Other constants as well\n};\n\n/**** Client ****/\n\nexport {\n  Client,\n  ClientOptions,\n  loadPackageDefinition,\n  makeClientConstructor,\n  makeClientConstructor as makeGenericClientConstructor,\n  CallProperties,\n  CallInvocationTransformer,\n  ChannelImplementation as Channel,\n  Channel as ChannelInterface,\n  UnaryCallback as requestCallback,\n};\n\n/**\n * Close a Client object.\n * @param client The client to close.\n */\nexport const closeClient = (client: Client) => client.close();\n\nexport const waitForClientReady = (\n  client: Client,\n  deadline: Date | number,\n  callback: (error?: Error) => void\n) => client.waitForReady(deadline, callback);\n\n/* Interfaces */\n\nexport {\n  sendUnaryData,\n  ChannelCredentials,\n  CallCredentials,\n  Deadline,\n  Serialize as serialize,\n  Deserialize as deserialize,\n  ClientUnaryCall,\n  ClientReadableStream,\n  ClientWritableStream,\n  ClientDuplexStream,\n  CallOptions,\n  MethodDefinition,\n  StatusObject,\n  ServiceError,\n  ServerUnaryCall,\n  ServerReadableStream,\n  ServerWritableStream,\n  ServerDuplexStream,\n  ServerErrorResponse,\n  ServerMethodDefinition,\n  ServiceDefinition,\n  UntypedHandleCall,\n  UntypedServiceImplementation,\n  VerifyOptions,\n};\n\n/**** Server ****/\n\nexport {\n  handleBidiStreamingCall,\n  handleServerStreamingCall,\n  handleUnaryCall,\n  handleClientStreamingCall,\n};\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\nexport type Call =\n  | ClientUnaryCall\n  | ClientReadableStream<any>\n  | ClientWritableStream<any>\n  | ClientDuplexStream<any, any>;\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n/**** Unimplemented function stubs ****/\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nexport const loadObject = (value: any, options: any): never => {\n  throw new Error(\n    'Not available in this library. Use @grpc/proto-loader and loadPackageDefinition instead'\n  );\n};\n\nexport const load = (filename: any, format: any, options: any): never => {\n  throw new Error(\n    'Not available in this library. Use @grpc/proto-loader and loadPackageDefinition instead'\n  );\n};\n\nexport const setLogger = (logger: Partial<Console>): void => {\n  logging.setLogger(logger);\n};\n\nexport const setLogVerbosity = (verbosity: LogVerbosity): void => {\n  logging.setLoggerVerbosity(verbosity);\n};\n\nexport { ConnectionInjector, Server, ServerOptions };\nexport { ServerCredentials };\nexport { KeyCertPair };\n\nexport const getClientChannel = (client: Client) => {\n  return Client.prototype.getChannel.call(client);\n};\n\nexport { StatusBuilder };\n\nexport { Listener, InterceptingListener } from './call-interface';\n\nexport {\n  Requester,\n  ListenerBuilder,\n  RequesterBuilder,\n  Interceptor,\n  InterceptorOptions,\n  InterceptorProvider,\n  InterceptingCall,\n  InterceptorConfigurationError,\n  NextCall,\n} from './client-interceptors';\n\nexport {\n  GrpcObject,\n  ServiceClientConstructor,\n  ProtobufTypeDefinition,\n} from './make-client';\n\nexport { ChannelOptions } from './channel-options';\n\nexport { getChannelzServiceDefinition, getChannelzHandlers } from './channelz';\n\nexport { addAdminServicesToServer } from './admin';\n\nexport {\n  ServiceConfig,\n  LoadBalancingConfig,\n  MethodConfig,\n  RetryPolicy,\n} from './service-config';\n\nexport {\n  ServerListener,\n  FullServerListener,\n  ServerListenerBuilder,\n  Responder,\n  FullResponder,\n  ResponderBuilder,\n  ServerInterceptingCallInterface,\n  ServerInterceptingCall,\n  ServerInterceptor,\n} from './server-interceptors';\n\nexport { ServerMetricRecorder } from './orca';\n\nimport * as experimental from './experimental';\nexport { experimental };\n\nimport * as resolver_dns from './resolver-dns';\nimport * as resolver_uds from './resolver-uds';\nimport * as resolver_ip from './resolver-ip';\nimport * as load_balancer_pick_first from './load-balancer-pick-first';\nimport * as load_balancer_round_robin from './load-balancer-round-robin';\nimport * as load_balancer_outlier_detection from './load-balancer-outlier-detection';\nimport * as load_balancer_weighted_round_robin from './load-balancer-weighted-round-robin';\nimport * as channelz from './channelz';\nimport { Deadline } from './deadline';\n\n(() => {\n  resolver_dns.setup();\n  resolver_uds.setup();\n  resolver_ip.setup();\n  load_balancer_pick_first.setup();\n  load_balancer_round_robin.setup();\n  load_balancer_outlier_detection.setup();\n  load_balancer_weighted_round_robin.setup();\n  channelz.setup();\n})();\n", "import * as grpc from '@grpc/grpc-js';\nimport {CompatServiceDefinition, MethodDefinition, ServiceDefinition} from '.';\n\nexport type FromGrpcJsServiceDefinition<\n  Service extends grpc.ServiceDefinition,\n> = {\n  [M in GrpcJsServiceMethodKeys<Service>]: FromGrpcJsMethodDefinition<\n    Service[M]\n  >;\n};\n\n/**\n * Removes index signature from ServiceDefinition type.\n *\n * See https://stackoverflow.com/questions/51465182/typescript-remove-index-signature-using-mapped-types\n */\nexport type GrpcJsServiceMethodKeys<Service extends grpc.ServiceDefinition> =\n  keyof {\n    [P in keyof Service as string extends P\n      ? never\n      : number extends P\n      ? never\n      : P]: Service[P];\n  } &\n    keyof Service;\n\nexport type FromGrpcJsMethodDefinition<Method> =\n  Method extends grpc.MethodDefinition<infer Request, infer Response>\n    ? MethodDefinition<\n        Request,\n        Request,\n        Response,\n        Response,\n        Method['requestStream'],\n        Method['responseStream']\n      >\n    : never;\n\nexport function fromGrpcJsServiceDefinition(\n  definition: grpc.ServiceDefinition,\n): ServiceDefinition {\n  const result: ServiceDefinition = {};\n\n  for (const [key, method] of Object.entries(definition)) {\n    result[key] = {\n      path: method.path,\n      requestStream: method.requestStream,\n      responseStream: method.responseStream,\n      requestDeserialize: bytes =>\n        method.requestDeserialize(Buffer.from(bytes)),\n      requestSerialize: method.requestSerialize,\n      responseDeserialize: bytes =>\n        method.responseDeserialize(Buffer.from(bytes)),\n      responseSerialize: method.responseSerialize,\n      options: {},\n    };\n  }\n\n  return result;\n}\n\nexport function isGrpcJsServiceDefinition(\n  definition: CompatServiceDefinition,\n): definition is grpc.ServiceDefinition {\n  return Object.values(definition).every(\n    value =>\n      typeof value === 'object' &&\n      value != null &&\n      typeof value.path === 'string',\n  );\n}\n", "import {CompatServiceDefinition, MethodDefinition, ServiceDefinition} from '.';\n\nexport type TsProtoServiceDefinition = {\n  name: string;\n  fullName: string;\n  methods: {\n    [method: string]: TsProtoMethodDefinition<any, any>;\n  };\n};\n\nexport type TsProtoMethodDefinition<Request, Response> = {\n  name: string;\n  requestType: TsProtoMessageType<Request>;\n  requestStream: boolean;\n  responseType: TsProtoMessageType<Response>;\n  responseStream: boolean;\n  options: {\n    idempotencyLevel?: 'IDEMPOTENT' | 'NO_SIDE_EFFECTS';\n    _unknownFields?: {};\n  };\n};\n\nexport type TsProtoMessageType<Message> = {\n  encode(message: Message): ProtobufJsWriter;\n  decode(input: Uint8Array): Message;\n  fromPartial?(object: unknown): Message;\n};\n\nexport type ProtobufJsWriter = {\n  finish(): Uint8Array;\n};\n\nexport type TsProtoMessageIn<Type extends TsProtoMessageType<any>> =\n  Type['fromPartial'] extends Function\n    ? Parameters<Type['fromPartial']>[0]\n    : Type extends TsProtoMessageType<infer Message>\n    ? Message\n    : never;\n\nexport type FromTsProtoServiceDefinition<\n  Service extends TsProtoServiceDefinition,\n> = {\n  [M in keyof Service['methods']]: FromTsProtoMethodDefinition<\n    Service['methods'][M]\n  >;\n};\n\nexport type FromTsProtoMethodDefinition<Method> =\n  Method extends TsProtoMethodDefinition<infer Request, infer Response>\n    ? MethodDefinition<\n        TsProtoMessageIn<Method['requestType']>,\n        Request,\n        TsProtoMessageIn<Method['responseType']>,\n        Response,\n        Method['requestStream'],\n        Method['responseStream']\n      >\n    : never;\n\nexport function fromTsProtoServiceDefinition(\n  definition: TsProtoServiceDefinition,\n): ServiceDefinition {\n  const result: ServiceDefinition = {};\n\n  for (const [key, method] of Object.entries(definition.methods)) {\n    const requestEncode = method.requestType.encode;\n    const requestFromPartial = method.requestType.fromPartial;\n    const responseEncode = method.responseType.encode;\n    const responseFromPartial = method.responseType.fromPartial;\n\n    result[key] = {\n      path: `/${definition.fullName}/${method.name}`,\n      requestStream: method.requestStream,\n      responseStream: method.responseStream,\n      requestDeserialize: method.requestType.decode,\n      requestSerialize:\n        requestFromPartial != null\n          ? value => requestEncode(requestFromPartial(value)).finish()\n          : value => requestEncode(value).finish(),\n      responseDeserialize: method.responseType.decode,\n      responseSerialize:\n        responseFromPartial != null\n          ? value => responseEncode(responseFromPartial(value)).finish()\n          : value => responseEncode(value).finish(),\n      options: method.options,\n    };\n  }\n\n  return result;\n}\n\nexport function isTsProtoServiceDefinition(\n  definition: CompatServiceDefinition,\n): definition is TsProtoServiceDefinition {\n  return (\n    'name' in definition && 'fullName' in definition && 'methods' in definition\n  );\n}\n", "import {\n  ServiceDefinition as GrpcJsServiceDefinition,\n  MethodDefinition as GrpcJsMethodDefinition,\n} from '@grpc/grpc-js';\nimport {\n  fromGrpcJsServiceDefinition,\n  FromGrpcJsServiceDefinition,\n  isGrpcJsServiceDefinition,\n} from './grpc-js';\nimport {\n  fromTsProtoServiceDefinition,\n  FromTsProtoServiceDefinition,\n  isTsProtoServiceDefinition,\n  TsProtoServiceDefinition,\n} from './ts-proto';\n\n/**\n * A nice-grpc service definition.\n */\nexport type ServiceDefinition = {\n  [method: string]: AnyMethodDefinition;\n};\n\n/**\n * A nice-grpc method definition.\n */\nexport type MethodDefinition<\n  RequestIn,\n  RequestOut,\n  ResponseIn,\n  ResponseOut,\n  RequestStream extends boolean = boolean,\n  ResponseStream extends boolean = boolean,\n> = {\n  path: string;\n  requestStream: RequestStream;\n  responseStream: ResponseStream;\n  requestSerialize(value: RequestIn): Uint8Array;\n  requestDeserialize(bytes: Uint8Array): RequestOut;\n  responseSerialize(value: ResponseIn): Uint8Array;\n  responseDeserialize(bytes: Uint8Array): ResponseOut;\n  options: {\n    idempotencyLevel?: 'IDEMPOTENT' | 'NO_SIDE_EFFECTS';\n  };\n};\n\n/**\n * A nice-grpc method definition with any request and response types.\n */\nexport type AnyMethodDefinition = MethodDefinition<any, any, any, any>;\n\n/**\n * A service definition that can be converted to a nice-grpc service definition\n * i.e. a nice-grpc service definition, a grpc-js service definition or a\n * ts-proto service definition.\n */\nexport type CompatServiceDefinition =\n  | ServiceDefinition\n  | GrpcJsServiceDefinition\n  | TsProtoServiceDefinition;\n\n/**\n * A nice-grpc service definition converted from a CompatServiceDefinition.\n */\nexport type NormalizedServiceDefinition<\n  Service extends CompatServiceDefinition,\n> = Service extends ServiceDefinition\n  ? Service\n  : Service extends GrpcJsServiceDefinition\n  ? FromGrpcJsServiceDefinition<Service>\n  : Service extends TsProtoServiceDefinition\n  ? FromTsProtoServiceDefinition<Service>\n  : never;\n\n/** @internal */\nexport function normalizeServiceDefinition(\n  definition: CompatServiceDefinition,\n): ServiceDefinition {\n  if (isGrpcJsServiceDefinition(definition)) {\n    return fromGrpcJsServiceDefinition(definition);\n  } else if (isTsProtoServiceDefinition(definition)) {\n    return fromTsProtoServiceDefinition(definition);\n  } else {\n    return definition;\n  }\n}\n\n/** @internal */\nexport function toGrpcJsServiceDefinition(\n  definition: ServiceDefinition,\n): GrpcJsServiceDefinition {\n  const result: {[key: string]: GrpcJsMethodDefinition<any, any>} = {};\n\n  for (const [key, method] of Object.entries(definition)) {\n    result[key] = toGrpcJsMethodDefinition(method);\n  }\n\n  return result;\n}\n\n/** @internal */\nexport function toGrpcJsMethodDefinition(\n  definition: AnyMethodDefinition,\n): GrpcJsMethodDefinition<any, any> {\n  return {\n    path: definition.path,\n    requestStream: definition.requestStream,\n    responseStream: definition.responseStream,\n    requestDeserialize: definition.requestDeserialize,\n    requestSerialize: value => Buffer.from(definition.requestSerialize(value)),\n    responseDeserialize: definition.responseDeserialize,\n    responseSerialize: value =>\n      Buffer.from(definition.responseSerialize(value)),\n  };\n}\n", "/**\n * Thrown when an abortable function was aborted.\n *\n * **Warning**: do not use `instanceof` with this class. Instead, use\n * `isAbortError` function.\n */\nexport class AbortError extends Error {\n  constructor() {\n    super('The operation has been aborted');\n\n    this.message = 'The operation has been aborted';\n\n    this.name = 'AbortError';\n\n    if (typeof Error.captureStackTrace === 'function') {\n      Error.captureStackTrace(this, this.constructor);\n    }\n  }\n}\n\n/**\n * Checks whether given `error` is an `AbortError`.\n */\nexport function isAbortError(error: unknown): error is Error {\n  return (\n    typeof error === 'object' &&\n    error !== null &&\n    (error as any).name === 'AbortError'\n  );\n}\n\n/**\n * If `signal` is aborted, throws `AbortError`. Otherwise does nothing.\n */\nexport function throwIfAborted(signal: AbortSignal): void {\n  if (signal.aborted) {\n    throw new AbortError();\n  }\n}\n\n/**\n * If `error` is `AbortError`, throws it. Otherwise does nothing.\n *\n * Useful for `try/catch` blocks around abortable code:\n *\n *    try {\n *      await somethingAbortable(signal);\n *    } catch (err) {\n *      rethrowAbortError(err);\n *\n *      // do normal error handling\n *    }\n */\nexport function rethrowAbortError(error: unknown): void {\n  if (isAbortError(error)) {\n    throw error;\n  }\n\n  return;\n}\n\n/**\n * If `error` is `AbortError`, does nothing. Otherwise throws it.\n *\n * Useful for invoking top-level abortable functions:\n *\n *    somethingAbortable(signal).catch(catchAbortError)\n *\n * Without `catchAbortError`, aborting would result in unhandled promise\n * rejection.\n */\nexport function catchAbortError(error: unknown): void {\n  if (isAbortError(error)) {\n    return;\n  }\n\n  throw error;\n}\n", "import {AbortError} from './AbortError';\n\n/**\n * Similar to `new Promise(executor)`, but allows executor to return abort\n * callback that is called once `signal` is aborted.\n *\n * Returned promise rejects with `AbortError` once `signal` is aborted.\n *\n * Callback can return a promise, e.g. for doing any async cleanup. In this\n * case, the promise returned from `execute` rejects with `AbortError` after\n * that promise fulfills.\n */\nexport function execute<T>(\n  signal: AbortSignal,\n  executor: (\n    resolve: (value: T) => void,\n    reject: (reason?: any) => void,\n  ) => () => void | PromiseLike<void>,\n): Promise<T> {\n  return new Promise<T>((resolve, reject) => {\n    if (signal.aborted) {\n      reject(new AbortError());\n      return;\n    }\n\n    let removeAbortListener: (() => void) | undefined;\n    let finished = false;\n\n    function finish() {\n      if (!finished) {\n        finished = true;\n        if (removeAbortListener != null) {\n          removeAbortListener();\n        }\n      }\n    }\n\n    const callback = executor(\n      value => {\n        resolve(value);\n        finish();\n      },\n      reason => {\n        reject(reason);\n        finish();\n      },\n    );\n\n    if (!finished) {\n      const listener = () => {\n        const callbackResult = callback();\n\n        if (callbackResult == null) {\n          reject(new AbortError());\n        } else {\n          callbackResult.then(\n            () => {\n              reject(new AbortError());\n            },\n            reason => {\n              reject(reason);\n            },\n          );\n        }\n\n        finish();\n      };\n\n      signal.addEventListener('abort', listener);\n\n      removeAbortListener = () => {\n        signal.removeEventListener('abort', listener);\n      };\n    }\n  });\n}\n", "import {execute} from './execute';\n\n/**\n * Wrap a promise to reject with `AbortError` once `signal` is aborted.\n *\n * Useful to wrap non-abortable promises.\n * Note that underlying process will NOT be aborted.\n */\nexport function abortable<T>(\n  signal: AbortSignal,\n  promise: PromiseLike<T>,\n): Promise<T> {\n  if (signal.aborted) {\n    // prevent unhandled rejection\n    const noop = () => {};\n    promise.then(noop, noop);\n  }\n\n  return execute<T>(signal, (resolve, reject) => {\n    promise.then(resolve, reject);\n\n    return () => {};\n  });\n}\n", "import {execute} from './execute';\n\n/**\n * Returns a promise that fulfills after delay and rejects with\n * `AbortError` once `signal` is aborted.\n *\n * The delay time is specified as a `Date` object or as an integer denoting\n * milliseconds to wait.\n * \n * Example:\n * \n *     // Make requests repeatedly with a delay between consecutive requests\n *     while (true) {\n *       await makeRequest(signal, params);\n *       await delay(signal, 1000);\n *     }\n * \n * Example:\n * \n *     // Make requests repeatedly with a fixed interval\n *     import {addMilliseconds} from 'date-fns';\n * \n *     let date = new Date();\n * \n *     while (true) {\n *       await makeRequest(signal, params);\n *       \n *       date = addMilliseconds(date, 1000);\n *       await delay(signal, date);\n *     }\n */\nexport function delay(\n  signal: AbortSignal,\n  dueTime: number | Date,\n): Promise<void> {\n  return execute<void>(signal, resolve => {\n    const ms =\n      typeof dueTime === 'number' ? dueTime : dueTime.getTime() - Date.now();\n\n    const timer = setTimeout(resolve, ms);\n\n    return () => {\n      clearTimeout(timer);\n    };\n  });\n}\n", "import {execute} from './execute';\n\n/**\n * Return a promise that never fulfills and only rejects with `AbortError` once\n * `signal` is aborted.\n */\nexport function forever(signal: AbortSignal): Promise<never> {\n  return execute(signal, () => () => {});\n}\n", "import { execute } from './execute';\n\nexport type EventTargetLike<T> =\n  | EventTargetLike.HasEventTargetAddRemove<T>\n  | EventTargetLike.NodeStyleEventEmitter\n  | EventTargetLike.NodeCompatibleEventEmitter\n  | EventTargetLike.JQueryStyleEventEmitter<any, T>;\n\n/**\n * Returns a promise that fulfills when an event of specific type is emitted\n * from given event target and rejects with `AbortError` once `signal` is\n * aborted.\n *\n * Example:\n *\n *     // Create a WebSocket and wait for connection\n *     const webSocket = new WebSocket(url);\n *     \n *     const openEvent = await race(signal, signal => [\n *       waitForEvent<WebSocketEventMap['open']>(signal, webSocket, 'open'),\n *       waitForEvent<WebSocketEventMap['close']>(signal, webSocket, 'close').then(\n *         event => {\n *           throw new Error(`Failed to connect to ${url}: ${event.reason}`);\n *         },\n *       ),\n *     ]);\n */\nexport function waitForEvent<T>(\n  signal: AbortSignal,\n  target: EventTargetLike<T>,\n  eventName: string | symbol,\n  options?: EventTargetLike.EventListenerOptions,\n): Promise<T> {\n  return execute<T>(signal, resolve => {\n    let unlisten: (() => void) | undefined;\n    let finished = false;\n\n    const handler = (...args: any[]) => {\n      resolve(args.length > 1 ? args : args[0]);\n      finished = true;\n\n      if (unlisten != null) {\n        unlisten();\n      }\n    };\n\n    unlisten = listen(target, eventName, handler, options);\n\n    if (finished) {\n      unlisten();\n    }\n\n    return () => {\n      finished = true;\n\n      if (unlisten != null) {\n        unlisten();\n      }\n    };\n  });\n}\n\n// gratefully copied from RxJS' fromEvent\nexport namespace EventTargetLike {\n  export interface NodeStyleEventEmitter {\n    addListener: (\n      eventName: string | symbol,\n      handler: NodeEventHandler,\n    ) => this;\n    removeListener: (\n      eventName: string | symbol,\n      handler: NodeEventHandler,\n    ) => this;\n  }\n\n  export type NodeEventHandler = (...args: any[]) => void;\n\n  // For APIs that implement `addListener` and `removeListener` methods that may\n  // not use the same arguments or return EventEmitter values\n  // such as React Native\n  export interface NodeCompatibleEventEmitter {\n    addListener: (eventName: string, handler: NodeEventHandler) => void | {};\n    removeListener: (eventName: string, handler: NodeEventHandler) => void | {};\n  }\n\n  // Use handler types like those in @types/jquery. See:\n  // https://github.com/DefinitelyTyped/DefinitelyTyped/blob/847731ba1d7fa6db6b911c0e43aa0afe596e7723/types/jquery/misc.d.ts#L6395\n  export interface JQueryStyleEventEmitter<TContext, T> {\n    on: (\n      eventName: string | symbol,\n      handler: (this: TContext, t: T, ...args: any[]) => any,\n    ) => void;\n    off: (\n      eventName: string | symbol,\n      handler: (this: TContext, t: T, ...args: any[]) => any,\n    ) => void;\n  }\n\n  export interface HasEventTargetAddRemove<E> {\n    addEventListener(\n      type: string | symbol,\n      listener: ((evt: E) => void) | null,\n      options?: boolean | AddEventListenerOptions,\n    ): void;\n    removeEventListener(\n      type: string | symbol,\n      listener: ((evt: E) => void) | null,\n      options?: EventListenerOptions | boolean,\n    ): void;\n  }\n\n  export interface EventListenerOptions {\n    capture?: boolean;\n    passive?: boolean;\n    once?: boolean;\n  }\n\n  export interface AddEventListenerOptions extends EventListenerOptions {\n    once?: boolean;\n    passive?: boolean;\n  }\n}\n\nfunction listen<T>(\n  target: EventTargetLike<T>,\n  eventName: string | symbol,\n  handler: (...args: any[]) => void,\n  options?: EventTargetLike.EventListenerOptions,\n) {\n  if (isEventTarget(target)) {\n    target.addEventListener(eventName, handler, options);\n    return () => target.removeEventListener(eventName, handler, options);\n  }\n\n  if (isJQueryStyleEventEmitter(target)) {\n    target.on(eventName, handler);\n    return () => target.off(eventName, handler);\n  }\n\n  if (isNodeStyleEventEmitter(target)) {\n    target.addListener(eventName, handler);\n    return () => target.removeListener(eventName, handler);\n  }\n\n  throw new Error('Invalid event target');\n}\n\nfunction isNodeStyleEventEmitter(\n  sourceObj: any,\n): sourceObj is EventTargetLike.NodeStyleEventEmitter {\n  return (\n    isFunction(sourceObj.addListener) && isFunction(sourceObj.removeListener)\n  );\n}\n\nfunction isJQueryStyleEventEmitter(\n  sourceObj: any,\n): sourceObj is EventTargetLike.JQueryStyleEventEmitter<any, any> {\n  return isFunction(sourceObj.on) && isFunction(sourceObj.off);\n}\n\nfunction isEventTarget(\n  sourceObj: any,\n): sourceObj is EventTargetLike.HasEventTargetAddRemove<any> {\n  return (\n    isFunction(sourceObj.addEventListener) &&\n    isFunction(sourceObj.removeEventListener)\n  );\n}\n\nconst isFunction = (obj: any) => typeof obj === 'function';\n", "import {AbortError, isAbortError} from './AbortError';\n\n/**\n * Abortable version of `Promise.all`.\n *\n * Creates new inner `AbortSignal` and passes it to `executor`. That signal is\n * aborted when `signal` is aborted or any of the promises returned from\n * `executor` are rejected.\n *\n * Returns a promise that fulfills with an array of results when all of the\n * promises returned from `executor` fulfill, rejects when any of the\n * promises returned from `executor` are rejected, and rejects with `AbortError`\n * when `signal` is aborted.\n *\n * The promises returned from `executor` must be abortable, i.e. once\n * `innerSignal` is aborted, they must reject with `AbortError` either\n * immediately, or after doing any async cleanup.\n *\n * Example:\n *\n *     const [result1, result2] = await all(signal, signal => [\n *       makeRequest(signal, params1),\n *       makeRequest(signal, params2),\n *     ]);\n */\nexport function all<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(\n  signal: AbortSignal,\n  executor: (\n    innerSignal: AbortSignal,\n  ) => readonly [\n    PromiseLike<T1>,\n    PromiseLike<T2>,\n    PromiseLike<T3>,\n    PromiseLike<T4>,\n    PromiseLike<T5>,\n    PromiseLike<T6>,\n    PromiseLike<T7>,\n    PromiseLike<T8>,\n    PromiseLike<T9>,\n    PromiseLike<T10>,\n  ],\n): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9, T10]>;\nexport function all<T1, T2, T3, T4, T5, T6, T7, T8, T9>(\n  signal: AbortSignal,\n  executor: (\n    innerSignal: AbortSignal,\n  ) => readonly [\n    PromiseLike<T1>,\n    PromiseLike<T2>,\n    PromiseLike<T3>,\n    PromiseLike<T4>,\n    PromiseLike<T5>,\n    PromiseLike<T6>,\n    PromiseLike<T7>,\n    PromiseLike<T8>,\n    PromiseLike<T9>,\n  ],\n): Promise<[T1, T2, T3, T4, T5, T6, T7, T8, T9]>;\nexport function all<T1, T2, T3, T4, T5, T6, T7, T8>(\n  signal: AbortSignal,\n  executor: (\n    innerSignal: AbortSignal,\n  ) => readonly [\n    PromiseLike<T1>,\n    PromiseLike<T2>,\n    PromiseLike<T3>,\n    PromiseLike<T4>,\n    PromiseLike<T5>,\n    PromiseLike<T6>,\n    PromiseLike<T7>,\n    PromiseLike<T8>,\n  ],\n): Promise<[T1, T2, T3, T4, T5, T6, T7, T8]>;\nexport function all<T1, T2, T3, T4, T5, T6, T7>(\n  signal: AbortSignal,\n  executor: (\n    innerSignal: AbortSignal,\n  ) => readonly [\n    PromiseLike<T1>,\n    PromiseLike<T2>,\n    PromiseLike<T3>,\n    PromiseLike<T4>,\n    PromiseLike<T5>,\n    PromiseLike<T6>,\n    PromiseLike<T7>,\n  ],\n): Promise<[T1, T2, T3, T4, T5, T6, T7]>;\nexport function all<T1, T2, T3, T4, T5, T6>(\n  signal: AbortSignal,\n  executor: (\n    innerSignal: AbortSignal,\n  ) => readonly [\n    PromiseLike<T1>,\n    PromiseLike<T2>,\n    PromiseLike<T3>,\n    PromiseLike<T4>,\n    PromiseLike<T5>,\n    PromiseLike<T6>,\n  ],\n): Promise<[T1, T2, T3, T4, T5, T6]>;\nexport function all<T1, T2, T3, T4, T5>(\n  signal: AbortSignal,\n  executor: (\n    innerSignal: AbortSignal,\n  ) => readonly [\n    PromiseLike<T1>,\n    PromiseLike<T2>,\n    PromiseLike<T3>,\n    PromiseLike<T4>,\n    PromiseLike<T5>,\n  ],\n): Promise<[T1, T2, T3, T4, T5]>;\nexport function all<T1, T2, T3, T4>(\n  signal: AbortSignal,\n  executor: (\n    innerSignal: AbortSignal,\n  ) => readonly [\n    PromiseLike<T1>,\n    PromiseLike<T2>,\n    PromiseLike<T3>,\n    PromiseLike<T4>,\n  ],\n): Promise<[T1, T2, T3, T4]>;\nexport function all<T1, T2, T3>(\n  signal: AbortSignal,\n  executor: (\n    innerSignal: AbortSignal,\n  ) => readonly [PromiseLike<T1>, PromiseLike<T2>, PromiseLike<T3>],\n): Promise<[T1, T2, T3]>;\nexport function all<T1, T2>(\n  signal: AbortSignal,\n  executor: (\n    innerSignal: AbortSignal,\n  ) => readonly [PromiseLike<T1>, PromiseLike<T2>],\n): Promise<[T1, T2]>;\nexport function all<T>(\n  signal: AbortSignal,\n  executor: (innerSignal: AbortSignal) => readonly PromiseLike<T>[],\n): Promise<T[]>;\nexport function all<T>(\n  signal: AbortSignal,\n  executor: (innerSignal: AbortSignal) => readonly PromiseLike<T>[],\n): Promise<T[]> {\n  return new Promise((resolve, reject) => {\n    if (signal.aborted) {\n      reject(new AbortError());\n      return;\n    }\n\n    const innerAbortController = new AbortController();\n\n    const promises = executor(innerAbortController.signal);\n\n    if (promises.length === 0) {\n      resolve([]);\n      return;\n    }\n\n    const abortListener = () => {\n      innerAbortController.abort();\n    };\n\n    signal.addEventListener('abort', abortListener);\n\n    let rejection: {reason: any} | undefined;\n    const results = new Array<T>(promises.length);\n\n    let settledCount = 0;\n\n    function settled() {\n      settledCount += 1;\n\n      if (settledCount === promises.length) {\n        signal.removeEventListener('abort', abortListener);\n\n        if (rejection != null) {\n          reject(rejection.reason);\n        } else {\n          resolve(results);\n        }\n      }\n    }\n\n    for (const [i, promise] of promises.entries()) {\n      promise.then(\n        value => {\n          results[i] = value;\n\n          settled();\n        },\n        reason => {\n          innerAbortController.abort();\n\n          if (\n            rejection == null ||\n            (!isAbortError(reason) && isAbortError(rejection.reason))\n          ) {\n            rejection = {reason};\n          }\n\n          settled();\n        },\n      );\n    }\n  });\n}\n", "import {AbortError, isAbortError} from './AbortError';\n\n/**\n * Abortable version of `Promise.race`.\n *\n * Creates new inner `AbortSignal` and passes it to `executor`. That signal is\n * aborted when `signal` is aborted or any of the promises returned from\n * `executor` are fulfilled or rejected.\n *\n * Returns a promise that fulfills or rejects when any of the promises returned\n * from `executor` are fulfilled or rejected, and rejects with `AbortError` when\n * `signal` is aborted.\n *\n * The promises returned from `executor` must be abortable, i.e. once\n * `innerSignal` is aborted, they must reject with `AbortError` either\n * immediately, or after doing any async cleanup.\n *\n * Example:\n *\n *     const result = await race(signal, signal => [\n *       delay(signal, 1000).then(() => ({status: 'timeout'})),\n *       makeRequest(signal, params).then(value => ({status: 'success', value})),\n *     ]);\n *\n *     if (result.status === 'timeout') {\n *       // request timed out\n *     } else {\n *       const response = result.value;\n *     }\n */\nexport function race<T extends PromiseLike<any>>(\n  signal: AbortSignal,\n  executor: (innerSignal: AbortSignal) => readonly T[],\n): Promise<T extends PromiseLike<infer U> ? U : never> {\n  return new Promise((resolve, reject) => {\n    if (signal.aborted) {\n      reject(new AbortError());\n      return;\n    }\n\n    const innerAbortController = new AbortController();\n\n    const promises = executor(innerAbortController.signal);\n\n    const abortListener = () => {\n      innerAbortController.abort();\n    };\n\n    signal.addEventListener('abort', abortListener);\n\n    let settledCount = 0;\n\n    function settled(\n      result: PromiseSettledResult<T extends PromiseLike<infer U> ? U : never>,\n    ) {\n      innerAbortController.abort();\n\n      settledCount += 1;\n\n      if (settledCount === promises.length) {\n        signal.removeEventListener('abort', abortListener);\n\n        if (result.status === 'fulfilled') {\n          resolve(result.value);\n        } else {\n          reject(result.reason);\n        }\n      }\n    }\n\n    let result:\n      | PromiseSettledResult<T extends PromiseLike<infer U> ? U : never>\n      | undefined;\n\n    for (const promise of promises) {\n      promise.then(\n        value => {\n          if (result == null) {\n            result = {status: 'fulfilled', value};\n          }\n\n          settled(result);\n        },\n        reason => {\n          if (\n            result == null ||\n            (!isAbortError(reason) &&\n              (result.status === 'fulfilled' || isAbortError(result.reason)))\n          ) {\n            result = {status: 'rejected', reason};\n          }\n\n          settled(result);\n        },\n      );\n    }\n  });\n}\n", "import {delay} from './delay';\nimport {rethrowAbortError} from './AbortError';\n\nexport type RetryOptions = {\n  /**\n   * Starting delay before first retry attempt in milliseconds.\n   *\n   * Defaults to 1000.\n   *\n   * Example: if `baseMs` is 100, then retries will be attempted in 100ms,\n   * 200ms, 400ms etc (not counting jitter).\n   */\n  baseMs?: number;\n  /**\n   * Maximum delay between attempts in milliseconds.\n   *\n   * Defaults to 30 seconds.\n   *\n   * Example: if `baseMs` is 1000 and `maxDelayMs` is 3000, then retries will be\n   * attempted in 1000ms, 2000ms, 3000ms, 3000ms etc (not counting jitter).\n   */\n  maxDelayMs?: number;\n  /**\n   * Maximum for the total number of attempts.\n   *\n   * Defaults to `Infinity`.\n   */\n  maxAttempts?: number;\n  /**\n   * Called after each failed attempt before setting delay timer.\n   *\n   * Rethrow error from this callback to prevent further retries.\n   */\n  onError?: (error: unknown, attempt: number, delayMs: number) => void;\n};\n\n/**\n * Retry function with exponential backoff.\n *\n * The function receives AbortSignal, attempt number starting with 0, and reset\n * function that sets attempt number to -1 so that the next attempt will be\n * made without delay.\n */\nexport async function retry<T>(\n  signal: AbortSignal,\n  fn: (signal: AbortSignal, attempt: number, reset: () => void) => Promise<T>,\n  options: RetryOptions = {},\n): Promise<T> {\n  const {\n    baseMs = 1000,\n    maxDelayMs = 30000,\n    onError,\n    maxAttempts = Infinity,\n  } = options;\n\n  let attempt = 0;\n\n  const reset = () => {\n    attempt = -1;\n  };\n\n  while (true) {\n    try {\n      return await fn(signal, attempt, reset);\n    } catch (error) {\n      rethrowAbortError(error);\n\n      if (attempt >= maxAttempts) {\n        throw error;\n      }\n\n      let delayMs: number;\n\n      if (attempt === -1) {\n        delayMs = 0;\n      } else {\n        // https://aws.amazon.com/ru/blogs/architecture/exponential-backoff-and-jitter/\n        const backoff = Math.min(maxDelayMs, Math.pow(2, attempt) * baseMs);\n        delayMs = Math.round((backoff * (1 + Math.random())) / 2);\n      }\n\n      if (onError) {\n        onError(error, attempt, delayMs);\n      }\n\n      if (delayMs !== 0) {\n        await delay(signal, delayMs);\n      }\n\n      attempt += 1;\n    }\n  }\n}\n", "import {AbortError, catchAbortError, isAbortError} from './AbortError';\n\nexport type SpawnEffects = {\n  /**\n   * Schedules a function to run after spawned function finishes.\n   *\n   * Deferred functions run serially in last-in-first-out order.\n   *\n   * Promise returned from `spawn` fulfills or rejects only after all deferred\n   * functions finish.\n   */\n  defer(fn: () => void | Promise<void>): void;\n\n  /**\n   * Executes an abortable function in background.\n   *\n   * If a forked function throws an exception, spawned function and other forks\n   * are aborted and promise returned from `spawn` rejects with that exception.\n   *\n   * When spawned function finishes, all forks are aborted.\n   */\n  fork<T>(fn: (signal: AbortSignal) => Promise<T>): ForkTask<T>;\n};\n\nexport type ForkTask<T> = {\n  /**\n   * Abort a forked function.\n   */\n  abort(): void;\n  /**\n   * Returns a promise returned from a forked function.\n   */\n  join(): Promise<T>;\n};\n\n/**\n * Run an abortable function with `fork` and `defer` effects attached to it.\n *\n * `spawn` allows to write Go-style coroutines.\n *\n * Example:\n *\n *     // Connect to a database, then start a server, then block until abort.\n *     // On abort, gracefully shutdown the server, and once done, disconnect\n *     // from the database.\n *     spawn(signal, async (signal, {defer}) => {\n *       const db = await connectToDb();\n *\n *       defer(async () => {\n *         await db.close();\n *       });\n *\n *       const server = await startServer(db);\n *\n *       defer(async () => {\n *         await server.close();\n *       });\n *\n *       await forever(signal);\n *     });\n *\n * Example:\n *\n *     // Connect to a database, then start an infinite polling loop.\n *     // On abort, disconnect from the database.\n *     spawn(signal, async (signal, {defer}) => {\n *       const db = await connectToDb();\n *\n *       defer(async () => {\n *         await db.close();\n *       });\n *\n *       while (true) {\n *         await poll(signal, db);\n *         await delay(signal, 5000);\n *       }\n *     });\n *\n * Example:\n *\n *     // Acquire a lock and execute a function.\n *     // Extend the lock while the function is running.\n *     // Once the function finishes or the signal is aborted, stop extending\n *     // the lock and release it.\n *     import Redlock = require('redlock');\n *     \n *     const lockTtl = 30_000;    \n * \n *     function withLock<T>(\n *       signal: AbortSignal,\n *       redlock: Redlock,\n *       key: string,\n *       fn: (signal: AbortSignal) => Promise<T>,\n *     ): Promise<T> {\n *       return spawn(signal, async (signal, {fork, defer}) => {\n *         const lock = await redlock.lock(key, lockTtl);\n * \n *         defer(() => lock.unlock());\n *     \u200B\n *         fork(async signal => {\n *           while (true) {\n *             await delay(signal, lockTtl / 10);\n *             await lock.extend(lockTtl);\n *           }\n *         });\n * \n *         return await fn(signal);\n *       });\n *     }\n * \n *     const redlock = new Redlock([redis], {\n *       retryCount: -1,\n *     });\n * \n *     await withLock(signal, redlock, 'the-lock-key', async signal => {\n *       // ...\n *     });\n */\nexport function spawn<T>(\n  signal: AbortSignal,\n  fn: (signal: AbortSignal, effects: SpawnEffects) => Promise<T>,\n): Promise<T> {\n  if (signal.aborted) {\n    return Promise.reject(new AbortError());\n  }\n\n  const deferredFunctions: Array<() => void | Promise<void>> = [];\n\n  /**\n   * Aborted when spawned function finishes\n   * or one of forked functions throws\n   * or parent signal aborted.\n   */\n  const spawnAbortController = new AbortController();\n  const spawnSignal = spawnAbortController.signal;\n\n  const abortSpawn = () => {\n    spawnAbortController.abort();\n  };\n  signal.addEventListener('abort', abortSpawn);\n  const removeAbortListener = () => {\n    signal.removeEventListener('abort', abortSpawn);\n  };\n\n  const tasks = new Set<ForkTask<unknown>>();\n\n  const abortTasks = () => {\n    for (const task of tasks) {\n      task.abort();\n    }\n  };\n  spawnSignal.addEventListener('abort', abortTasks);\n  const removeSpawnAbortListener = () => {\n    spawnSignal.removeEventListener('abort', abortTasks);\n  };\n\n  let promise = new Promise<T>((resolve, reject) => {\n    let result: {value: T} | undefined;\n    let failure: {error: unknown} | undefined;\n\n    fork(signal =>\n      fn(signal, {\n        defer(fn: () => void | Promise<void>) {\n          deferredFunctions.push(fn);\n        },\n\n        fork,\n      }),\n    )\n      .join()\n      .then(\n        value => {\n          spawnAbortController.abort();\n          result = {value};\n        },\n        error => {\n          spawnAbortController.abort();\n\n          if (!isAbortError(error) || failure == null) {\n            failure = {error};\n          }\n        },\n      );\n\n    function fork<T>(forkFn: (signal: AbortSignal) => Promise<T>): ForkTask<T> {\n      if (spawnSignal.aborted) {\n        // return already aborted task\n        return {\n          abort() {},\n          async join() {\n            throw new AbortError();\n          },\n        };\n      }\n\n      const taskAbortController = new AbortController();\n      const taskSignal = taskAbortController.signal;\n\n      const taskPromise = forkFn(taskSignal);\n\n      const task: ForkTask<T> = {\n        abort() {\n          taskAbortController.abort();\n        },\n        join: () => taskPromise,\n      };\n\n      tasks.add(task);\n\n      taskPromise\n        .catch(catchAbortError)\n        .catch(error => {\n          failure = {error};\n\n          // error in forked function\n          spawnAbortController.abort();\n        })\n        .finally(() => {\n          tasks.delete(task);\n\n          if (tasks.size === 0) {\n            if (failure != null) {\n              reject(failure.error);\n            } else {\n              resolve(result!.value);\n            }\n          }\n        });\n\n      return task;\n    }\n  });\n\n  promise = promise.finally(() => {\n    removeAbortListener();\n    removeSpawnAbortListener();\n\n    let deferPromise = Promise.resolve();\n\n    for (let i = deferredFunctions.length - 1; i >= 0; i--) {\n      deferPromise = deferPromise.finally(deferredFunctions[i]);\n    }\n\n    return deferPromise;\n  });\n\n  return promise;\n}\n", "import {catchAbortError} from './AbortError';\n\n/**\n * Invokes an abortable function with implicitly created `AbortSignal`.\n *\n * Returns a function that aborts that signal and waits until passed function\n * finishes.\n *\n * Any error other than `AbortError` thrown from passed function will result in\n * unhandled promise rejection.\n *\n * Example:\n *\n *    const stop = run(async signal => {\n *      try {\n *        while (true) {\n *          await delay(signal, 1000);\n *          console.log('tick');\n *        }\n *      } finally {\n *        await doCleanup();\n *      }\n *    });\n *\n *    // abort and wait until cleanup is done\n *    await stop();\n */\nexport function run(\n  fn: (signal: AbortSignal) => Promise<void>,\n): () => Promise<void> {\n  const abortController = new AbortController();\n\n  const promise = fn(abortController.signal).catch(catchAbortError);\n\n  return () => {\n    abortController.abort();\n    return promise;\n  };\n}\n", "import {isAbortError, catchAbortError} from './AbortError';\nimport {delay} from './delay';\nimport {execute} from './execute';\n\nexport type ProactiveRetryOptions = {\n  /**\n   * Base delay between attempts in milliseconds.\n   *\n   * Defaults to 1000.\n   *\n   * Example: if `baseMs` is 100, then retries will be attempted in 100ms,\n   * 200ms, 400ms etc (not counting jitter).\n   */\n  baseMs?: number;\n  /**\n   * Maximum for the total number of attempts.\n   *\n   * Defaults to `Infinity`.\n   */\n  maxAttempts?: number;\n  /**\n   * Called after each failed attempt.\n   *\n   * Rethrow error from this callback to prevent further retries.\n   */\n  onError?: (error: unknown, attempt: number) => void;\n};\n\n/**\n * Proactively retry a function with exponential backoff.\n *\n * Also known as hedging.\n *\n * The function will be called multiple times in parallel until it succeeds, in\n * which case all the other calls will be aborted.\n */\nexport function proactiveRetry<T>(\n  signal: AbortSignal,\n  fn: (signal: AbortSignal, attempt: number) => Promise<T>,\n  options: ProactiveRetryOptions = {},\n): Promise<T> {\n  const {baseMs = 1000, onError, maxAttempts = Infinity} = options;\n\n  return execute(signal, (resolve, reject) => {\n    const innerAbortController = new AbortController();\n    let attemptsExhausted = false;\n\n    const promises = new Map</* attempt */ number, Promise<T>>();\n\n    function handleFulfilled(value: T) {\n      innerAbortController.abort();\n      promises.clear();\n\n      resolve(value);\n    }\n\n    function handleRejected(err: unknown, attempt: number) {\n      promises.delete(attempt);\n\n      if (attemptsExhausted && promises.size === 0) {\n        reject(err);\n\n        return;\n      }\n\n      if (isAbortError(err)) {\n        return;\n      }\n\n      if (onError) {\n        try {\n          onError(err, attempt);\n        } catch (err) {\n          innerAbortController.abort();\n          promises.clear();\n\n          reject(err);\n        }\n      }\n    }\n\n    async function makeAttempts(signal: AbortSignal) {\n      for (let attempt = 0; ; attempt++) {\n        const promise = fn(signal, attempt);\n\n        promises.set(attempt, promise);\n\n        promise.then(handleFulfilled, err => handleRejected(err, attempt));\n\n        if (attempt + 1 >= maxAttempts) {\n          break;\n        }\n\n        // https://aws.amazon.com/ru/blogs/architecture/exponential-backoff-and-jitter/\n        const backoff = Math.pow(2, attempt) * baseMs;\n        const delayMs = Math.round((backoff * (1 + Math.random())) / 2);\n\n        await delay(signal, delayMs);\n      }\n\n      attemptsExhausted = true;\n    }\n\n    makeAttempts(innerAbortController.signal).catch(catchAbortError);\n\n    return () => {\n      innerAbortController.abort();\n    };\n  });\n}\n", "export * from './abortable';\nexport * from './AbortError';\nexport * from './delay';\nexport * from './execute';\nexport * from './forever';\nexport * from './waitForEvent';\nexport * from './all';\nexport * from './race';\nexport * from './retry';\nexport * from './spawn';\nexport * from './run';\nexport * from './proactiveRetry';\n", "import * as grpc from '@grpc/grpc-js';\nimport {Metadata} from 'nice-grpc-common';\n\n/** @internal */\nexport function convertMetadataToGrpcJs(metadata: Metadata): grpc.Metadata {\n  const grpcMetadata = new grpc.Metadata();\n\n  for (const [key, values] of metadata) {\n    for (const value of values) {\n      grpcMetadata.add(\n        key,\n        typeof value === 'string' ? value : Buffer.from(value),\n      );\n    }\n  }\n\n  return grpcMetadata;\n}\n\n/** @internal */\nexport function convertMetadataFromGrpcJs(\n  grpcMetadata: grpc.Metadata,\n): Metadata {\n  const metadata = Metadata();\n\n  for (const key of Object.keys(grpcMetadata.getMap())) {\n    const value = grpcMetadata.get(key);\n\n    metadata.set(key, value);\n  }\n\n  return metadata;\n}\n", "/** @internal */\nexport function isAsyncIterable(value: any): value is AsyncIterable<unknown> {\n  return value != null && Symbol.asyncIterator in value;\n}\n", "import {ObjectReadable} from '@grpc/grpc-js/build/src/object-stream';\n\ntype NodeInternalReadableState = {\n  errored: unknown;\n  errorEmitted: boolean;\n  endEmitted: boolean;\n  closeEmitted: boolean;\n};\n\nlet nodejsInternalsCompatibilityCheckedOnce = false;\n\n/**\n * Exactly once check that an object has Node.js readable stream internal object looks roughly like we expect.\n */\nfunction nodejsInternalsAccessible(obj: any): obj is NodeInternalReadableState {\n  if (nodejsInternalsCompatibilityCheckedOnce) {\n    return true;\n  }\n\n  const safe =\n    obj &&\n    typeof obj === 'object' &&\n    'errored' in obj &&\n    'errorEmitted' in obj &&\n    'endEmitted' in obj &&\n    'closeEmitted' in obj &&\n    typeof obj.errorEmitted === 'boolean' &&\n    typeof obj.endEmitted === 'boolean' &&\n    typeof obj.closeEmitted === 'boolean';\n\n  nodejsInternalsCompatibilityCheckedOnce = safe;\n  return safe;\n}\n\n/**\n * This is a copy of NodeJS createAsyncIterator(stream), with removed stream\n * destruction.\n *\n * https://github.com/nodejs/node/blob/v15.8.0/lib/internal/streams/readable.js#L1079\n *\n * @internal\n */\nexport async function* readableToAsyncIterable<T>(\n  stream: ObjectReadable<T>,\n): AsyncIterable<T> {\n  let callback = nop;\n\n  function next(this: any, resolve?: any) {\n    if (this === stream) {\n      callback();\n      callback = nop;\n    } else {\n      callback = resolve;\n    }\n  }\n\n  const state = (stream as any)._readableState;\n  if (!nodejsInternalsAccessible(state)) {\n    throw new Error('nice-grpc: _readableState members incompatible');\n  }\n\n  let error = state.errored;\n  let errorEmitted = state.errorEmitted;\n  let endEmitted = state.endEmitted;\n  let closeEmitted = state.closeEmitted;\n\n  stream\n    .on('readable', next)\n    .on('error', function (this: any, err) {\n      error = err;\n      errorEmitted = true;\n      next.call(this);\n    })\n    .on('end', function (this: any) {\n      endEmitted = true;\n      next.call(this);\n    })\n    .on('close', function (this: any) {\n      closeEmitted = true;\n      next.call(this);\n    });\n\n  while (true) {\n    const chunk = stream.destroyed ? null : stream.read();\n    if (chunk !== null) {\n      yield chunk;\n    } else if (errorEmitted) {\n      throw error;\n    } else if (endEmitted) {\n      break;\n    } else if (closeEmitted) {\n      break;\n    } else {\n      await new Promise(next);\n    }\n  }\n}\n\nconst nop = () => {};\n", "import {ServerSurfaceCall} from '@grpc/grpc-js/build/src/server-call';\nimport {CallContext, Metadata} from 'nice-grpc-common';\nimport {\n  convertMetadataFromGrpcJs,\n  convertMetadataToGrpcJs,\n} from '../utils/convertMetadata';\n\n// https://github.com/deeplay-io/nice-grpc/issues/607\n// https://github.com/deeplay-io/nice-grpc/issues/555\nexport type CallContextMaybeCancel = {\n  signal: AbortSignal;\n  cancel?: () => void;\n};\n\n/** @internal */\nexport function createCallContext(call: ServerSurfaceCall): {\n  context: CallContext;\n  maybeCancel: CallContextMaybeCancel;\n} {\n  const ac = new AbortController();\n  const maybeCancel: CallContextMaybeCancel = {\n    signal: ac.signal,\n    cancel() {\n      ac.abort();\n    },\n  };\n\n  const header = Metadata();\n  const trailer = Metadata();\n\n  if (call.cancelled) {\n    maybeCancel.cancel?.();\n    maybeCancel.cancel = undefined;\n  } else {\n    call.on('close', () => {\n      maybeCancel.cancel = undefined;\n    });\n    call.on('finish', () => {\n      maybeCancel.cancel = undefined;\n    });\n    call.on('cancelled', () => {\n      maybeCancel.cancel?.();\n      maybeCancel.cancel = undefined;\n    });\n  }\n\n  let headerSent = false;\n\n  const context = {\n    metadata: convertMetadataFromGrpcJs(call.metadata),\n    peer: call.getPeer(),\n    header,\n    sendHeader() {\n      if (headerSent) {\n        return;\n      }\n\n      if (!isEmptyMetadata(header)) {\n        call.sendMetadata(convertMetadataToGrpcJs(header));\n      }\n      headerSent = true;\n    },\n    trailer,\n    signal: maybeCancel.signal,\n  };\n\n  return {context, maybeCancel};\n}\n\nfunction isEmptyMetadata(metadata: Metadata) {\n  for (const _ of metadata) {\n    return false;\n  }\n\n  return true;\n}\n", "import {Metadata, status, StatusObject} from '@grpc/grpc-js';\nimport {isAbortError} from 'abort-controller-x';\nimport {ServerError} from 'nice-grpc-common';\n\n/** @internal */\nexport function createErrorStatusObject(\n  path: string,\n  error: unknown,\n  trailer: Metadata,\n): StatusObject {\n  if (error instanceof ServerError) {\n    return {\n      code: error.code,\n      details: error.details,\n      metadata: trailer,\n    };\n  } else if (isAbortError(error)) {\n    return {\n      code: status.CANCELLED,\n      details: 'The operation was cancelled',\n      metadata: trailer,\n    };\n  } else {\n    process.emitWarning(\n      `${path}: Uncaught error in server implementation method. Server methods should only throw ServerError or AbortError. ${\n        error instanceof Error ? error.stack : error\n      }`,\n    );\n\n    return {\n      code: status.UNKNOWN,\n      details: 'Unknown server error occurred',\n      metadata: trailer,\n    };\n  }\n}\n", "import {handleBidiStreamingCall} from '@grpc/grpc-js';\nimport {isAbortError, waitForEvent} from 'abort-controller-x';\nimport {\n  CallContext,\n  MethodDescriptor,\n  ServerMiddleware,\n} from 'nice-grpc-common';\nimport {MethodDefinition} from '../service-definitions';\nimport {convertMetadataToGrpcJs} from '../utils/convertMetadata';\nimport {isAsyncIterable} from '../utils/isAsyncIterable';\nimport {readableToAsyncIterable} from '../utils/readableToAsyncIterable';\nimport {BidiStreamingMethodImplementation} from './ServiceImplementation';\nimport {createCallContext} from './createCallContext';\nimport {createErrorStatusObject} from './createErrorStatusObject';\n\n/** @internal */\nexport function createBidiStreamingMethodHandler<Request, Response>(\n  definition: MethodDefinition<unknown, Request, Response, unknown>,\n  implementation: BidiStreamingMethodImplementation<Request, Response>,\n  middleware?: ServerMiddleware,\n): handleBidiStreamingCall<Request, Response> {\n  const methodDescriptor: MethodDescriptor = {\n    path: definition.path,\n    requestStream: definition.requestStream,\n    responseStream: definition.responseStream,\n    options: definition.options,\n  };\n\n  async function* bidiStreamingMethodHandler(\n    request: AsyncIterable<Request>,\n    context: CallContext,\n  ) {\n    if (!isAsyncIterable(request)) {\n      throw new Error(\n        'A middleware passed invalid request to next(): expected a single message for bidirectional streaming method',\n      );\n    }\n\n    yield* implementation(request, context);\n  }\n\n  const handler =\n    middleware == null\n      ? bidiStreamingMethodHandler\n      : (request: AsyncIterable<Request>, context: CallContext) =>\n          middleware(\n            {\n              method: methodDescriptor,\n              requestStream: true,\n              request,\n              responseStream: true,\n              next: bidiStreamingMethodHandler,\n            },\n            context,\n          );\n\n  return call => {\n    const {context, maybeCancel} = createCallContext(call);\n\n    Promise.resolve()\n      .then(async () => {\n        const iterable = handler(readableToAsyncIterable(call), context);\n        const iterator = iterable[Symbol.asyncIterator]();\n\n        try {\n          let result = await iterator.next();\n\n          while (true) {\n            if (!result.done) {\n              try {\n                context.sendHeader();\n\n                const shouldContinue = call.write(result.value);\n\n                if (!shouldContinue) {\n                  await waitForEvent(context.signal, call, 'drain');\n                }\n              } catch (err) {\n                result = isAbortError(err)\n                  ? await iterator.return()\n                  : await iterator.throw(err);\n\n                continue;\n              }\n\n              result = await iterator.next();\n\n              continue;\n            }\n\n            if (result.value != null) {\n              result = await iterator.throw(\n                new Error(\n                  'A middleware returned a message, but expected to return void for bidirectional streaming method',\n                ),\n              );\n\n              continue;\n            }\n\n            break;\n          }\n        } finally {\n          maybeCancel.cancel = undefined;\n          context.sendHeader();\n        }\n      })\n      .then(\n        () => {\n          call.end(convertMetadataToGrpcJs(context.trailer));\n        },\n        err => {\n          call.emit(\n            'error',\n            createErrorStatusObject(\n              definition.path,\n              err,\n              convertMetadataToGrpcJs(context.trailer),\n            ),\n          );\n        },\n      );\n  };\n}\n", "import {handleClientStreamingCall} from '@grpc/grpc-js';\nimport {\n  CallContext,\n  MethodDescriptor,\n  ServerMiddleware,\n} from 'nice-grpc-common';\nimport {MethodDefinition} from '../service-definitions';\nimport {convertMetadataToGrpcJs} from '../utils/convertMetadata';\nimport {isAsyncIterable} from '../utils/isAsyncIterable';\nimport {readableToAsyncIterable} from '../utils/readableToAsyncIterable';\nimport {ClientStreamingMethodImplementation} from './ServiceImplementation';\nimport {createCallContext} from './createCallContext';\nimport {createErrorStatusObject} from './createErrorStatusObject';\n\n/** @internal */\nexport function createClientStreamingMethodHandler<Request, Response>(\n  definition: MethodDefinition<unknown, Request, Response, unknown>,\n  implementation: ClientStreamingMethodImplementation<Request, Response>,\n  middleware?: ServerMiddleware,\n): handleClientStreamingCall<Request, Response> {\n  const methodDescriptor: MethodDescriptor = {\n    path: definition.path,\n    requestStream: definition.requestStream,\n    responseStream: definition.responseStream,\n    options: definition.options,\n  };\n\n  async function* clientStreamingMethodHandler(\n    request: AsyncIterable<Request>,\n    context: CallContext,\n  ) {\n    if (!isAsyncIterable(request)) {\n      throw new Error(\n        'A middleware passed invalid request to next(): expected a single message for client streaming method',\n      );\n    }\n\n    return await implementation(request, context);\n  }\n\n  const handler =\n    middleware == null\n      ? clientStreamingMethodHandler\n      : (request: AsyncIterable<Request>, context: CallContext) =>\n          middleware(\n            {\n              method: methodDescriptor,\n              requestStream: true,\n              request,\n              responseStream: false,\n              next: clientStreamingMethodHandler,\n            },\n            context,\n          );\n\n  return (call, callback) => {\n    const {context, maybeCancel} = createCallContext(call);\n\n    Promise.resolve()\n      .then(async () => {\n        const iterable = handler(readableToAsyncIterable(call), context);\n        const iterator = iterable[Symbol.asyncIterator]();\n\n        try {\n          let result = await iterator.next();\n\n          while (true) {\n            if (!result.done) {\n              result = await iterator.throw(\n                new Error(\n                  'A middleware yielded a message, but expected to only return a message for client streaming method',\n                ),\n              );\n\n              continue;\n            }\n\n            if (result.value == null) {\n              result = await iterator.throw(\n                new Error(\n                  'A middleware returned void, but expected to return a message for client streaming method',\n                ),\n              );\n\n              continue;\n            }\n\n            return result.value;\n          }\n        } finally {\n          maybeCancel.cancel = undefined;\n          context.sendHeader();\n        }\n      })\n      .then(\n        res => {\n          callback(null, res, convertMetadataToGrpcJs(context.trailer));\n        },\n        err => {\n          callback(\n            createErrorStatusObject(\n              definition.path,\n              err,\n              convertMetadataToGrpcJs(context.trailer),\n            ),\n          );\n        },\n      );\n  };\n}\n", "import {handleServerStreamingCall} from '@grpc/grpc-js';\nimport {isAbortError, waitForEvent} from 'abort-controller-x';\nimport {\n  CallContext,\n  MethodDescriptor,\n  ServerMiddleware,\n} from 'nice-grpc-common';\nimport {MethodDefinition} from '../service-definitions';\nimport {convertMetadataToGrpcJs} from '../utils/convertMetadata';\nimport {isAsyncIterable} from '../utils/isAsyncIterable';\nimport {ServerStreamingMethodImplementation} from './ServiceImplementation';\nimport {createCallContext} from './createCallContext';\nimport {createErrorStatusObject} from './createErrorStatusObject';\n\n/** @internal */\nexport function createServerStreamingMethodHandler<Request, Response>(\n  definition: MethodDefinition<unknown, Request, Response, unknown>,\n  implementation: ServerStreamingMethodImplementation<Request, Response>,\n  middleware?: ServerMiddleware,\n): handleServerStreamingCall<Request, Response> {\n  const methodDescriptor: MethodDescriptor = {\n    path: definition.path,\n    requestStream: definition.requestStream,\n    responseStream: definition.responseStream,\n    options: definition.options,\n  };\n\n  async function* serverStreamingMethodHandler(\n    request: Request,\n    context: CallContext,\n  ) {\n    if (isAsyncIterable(request)) {\n      throw new Error(\n        'A middleware passed invalid request to next(): expected a single message for server streaming method',\n      );\n    }\n\n    yield* implementation(request, context);\n  }\n\n  const handler =\n    middleware == null\n      ? serverStreamingMethodHandler\n      : (request: Request, context: CallContext) =>\n          middleware(\n            {\n              method: methodDescriptor,\n              requestStream: false,\n              request,\n              responseStream: true,\n              next: serverStreamingMethodHandler,\n            },\n            context,\n          );\n\n  return call => {\n    const {context, maybeCancel} = createCallContext(call);\n\n    Promise.resolve()\n      .then(async () => {\n        const iterable = handler(call.request, context);\n        const iterator = iterable[Symbol.asyncIterator]();\n\n        try {\n          let result = await iterator.next();\n\n          while (true) {\n            if (!result.done) {\n              try {\n                context.sendHeader();\n\n                const shouldContinue = call.write(result.value);\n\n                if (!shouldContinue) {\n                  await waitForEvent(context.signal, call, 'drain');\n                }\n              } catch (err) {\n                result = isAbortError(err)\n                  ? await iterator.return()\n                  : await iterator.throw(err);\n\n                continue;\n              }\n\n              result = await iterator.next();\n\n              continue;\n            }\n\n            if (result.value != null) {\n              result = await iterator.throw(\n                new Error(\n                  'A middleware returned a message, but expected to return void for server streaming method',\n                ),\n              );\n\n              continue;\n            }\n\n            break;\n          }\n        } finally {\n          maybeCancel.cancel = undefined;\n          context.sendHeader();\n        }\n      })\n      .then(\n        () => {\n          call.end(convertMetadataToGrpcJs(context.trailer));\n        },\n        err => {\n          call.emit(\n            'error',\n            createErrorStatusObject(\n              definition.path,\n              err,\n              convertMetadataToGrpcJs(context.trailer),\n            ),\n          );\n        },\n      );\n  };\n}\n", "import {handleUnaryCall} from '@grpc/grpc-js';\nimport {\n  CallContext,\n  MethodDescriptor,\n  ServerMiddleware,\n} from 'nice-grpc-common';\nimport {MethodDefinition} from '../service-definitions';\nimport {convertMetadataToGrpcJs} from '../utils/convertMetadata';\nimport {isAsyncIterable} from '../utils/isAsyncIterable';\nimport {UnaryMethodImplementation} from './ServiceImplementation';\nimport {createCallContext} from './createCallContext';\nimport {createErrorStatusObject} from './createErrorStatusObject';\n\n/** @internal */\nexport function createUnaryMethodHandler<Request, Response>(\n  definition: MethodDefinition<unknown, Request, Response, unknown>,\n  implementation: UnaryMethodImplementation<Request, Response>,\n  middleware?: ServerMiddleware,\n): handleUnaryCall<Request, Response> {\n  const methodDescriptor: MethodDescriptor = {\n    path: definition.path,\n    requestStream: definition.requestStream,\n    responseStream: definition.responseStream,\n    options: definition.options,\n  };\n\n  async function* unaryMethodHandler(request: Request, context: CallContext) {\n    if (isAsyncIterable(request)) {\n      throw new Error(\n        'A middleware passed invalid request to next(): expected a single message for unary method',\n      );\n    }\n\n    return await implementation(request, context);\n  }\n\n  const handler =\n    middleware == null\n      ? unaryMethodHandler\n      : (request: Request, context: CallContext) =>\n          middleware(\n            {\n              method: methodDescriptor,\n              requestStream: false,\n              request,\n              responseStream: false,\n              next: unaryMethodHandler,\n            },\n            context,\n          );\n\n  return (call, callback) => {\n    const {context, maybeCancel} = createCallContext(call);\n\n    Promise.resolve()\n      .then(async () => {\n        const iterable = handler(call.request, context);\n        const iterator = iterable[Symbol.asyncIterator]();\n\n        try {\n          let result = await iterator.next();\n\n          while (true) {\n            if (!result.done) {\n              result = await iterator.throw(\n                new Error(\n                  'A middleware yielded a message, but expected to only return a message for unary method',\n                ),\n              );\n\n              continue;\n            }\n\n            if (result.value == null) {\n              result = await iterator.throw(\n                new Error(\n                  'A middleware returned void, but expected to return a message for unary method',\n                ),\n              );\n\n              continue;\n            }\n\n            return result.value;\n          }\n        } finally {\n          maybeCancel.cancel = undefined;\n          context.sendHeader();\n        }\n      })\n      .then(\n        res => {\n          callback(null, res, convertMetadataToGrpcJs(context.trailer));\n        },\n        err => {\n          callback(\n            createErrorStatusObject(\n              definition.path,\n              err,\n              convertMetadataToGrpcJs(context.trailer),\n            ),\n          );\n        },\n      );\n  };\n}\n", "import {\n  ChannelOptions,\n  Server as GrpcServer,\n  ServerCredentials,\n  UntypedServiceImplementation,\n} from '@grpc/grpc-js';\nimport {ServerMiddleware, composeServerMiddleware} from 'nice-grpc-common';\nimport {\n  CompatServiceDefinition,\n  normalizeServiceDefinition,\n  ServiceDefinition,\n  toGrpcJsServiceDefinition,\n} from '../service-definitions';\nimport {createBidiStreamingMethodHandler} from './handleBidiStreamingCall';\nimport {createClientStreamingMethodHandler} from './handleClientStreamingCall';\nimport {createServerStreamingMethodHandler} from './handleServerStreamingCall';\nimport {createUnaryMethodHandler} from './handleUnaryCall';\nimport {ServiceImplementation} from './ServiceImplementation';\n\nexport type Server<CallContextExt = {}> = {\n  /**\n   * Attach a middleware to the server.\n   *\n   * This method returns a new server with the middleware attached.\n   *\n   * A middleware that is attached first, will be invoked first.\n   *\n   * This method must be used before adding any services or calling `listen()`.\n   *\n   * @param middleware The middleware to attach.\n   * @returns A new server with the middleware attached.\n   */\n  use<Ext>(\n    middleware: ServerMiddleware<Ext, CallContextExt>,\n  ): Server<CallContextExt & Ext>;\n  /**\n   * Attach a middleware per service:\n   *\n   * ```ts\n   * server.with(middleware).add(TestDefinition, implementation)\n   * ```\n   *\n   * This will attach the middleware only to the service in the chained `add()`\n   * call. Multiple `with()` calls can be chained to attach multiple middleware.\n   *\n   * @param middleware The middleware to attach.\n   * @returns A builder that can be used to add services with the middleware\n   *     attached.\n   */\n  with<Ext>(\n    middleware: ServerMiddleware<Ext, CallContextExt>,\n  ): ServerAddBuilder<CallContextExt & Ext>;\n  /**\n   * Add a service to the server.\n   *\n   * @param definition The service definition obtained from the generated code.\n   * @param implementation The service implementation.\n   */\n  add<Service extends CompatServiceDefinition>(\n    definition: Service,\n    implementation: ServiceImplementation<Service, CallContextExt>,\n  ): void;\n  /**\n   * Start listening on given 'host:port'.\n   *\n   * Use 'localhost:0' to bind to a random port.\n   *\n   * Returns port that the server is bound to.\n   *\n   * @param address The address to listen on, in the form 'host:port'.\n   * @param credentials Optional credentials object that is usually created by\n   *     calling `ServerCredentials.createSsl()` or\n   *     `ServerCredentials.createInsecure()`. If not specified, the server will\n   *     use `ServerCredentials.createInsecure()`.\n   * @returns A promise that resolves to the port that the server is bound to.\n   */\n  listen(address: string, credentials?: ServerCredentials): Promise<number>;\n  /**\n   * Gracefully shut down the server, waiting for all existing calls to finish.\n   */\n  shutdown(): Promise<void>;\n  /**\n   * Forcefully shut down the server, cancelling all existing calls.\n   *\n   * The client will receive a gRPC error with code `CANCELLED`.\n   */\n  forceShutdown(): void;\n};\n\nexport type ServerAddBuilder<CallContextExt> = {\n  with<Ext>(\n    middleware: ServerMiddleware<Ext, CallContextExt>,\n  ): ServerAddBuilder<CallContextExt & Ext>;\n  add<Service extends CompatServiceDefinition>(\n    definition: Service,\n    implementation: ServiceImplementation<Service, CallContextExt>,\n  ): void;\n};\n\n/**\n * Create a new server.\n *\n * @param options Optional channel options.\n * @returns The new server.\n */\nexport function createServer(options: ChannelOptions = {}): Server {\n  return createServerWithMiddleware(options);\n}\n\nfunction createServerWithMiddleware<CallContextExt = {}>(\n  options: ChannelOptions,\n  middleware?: ServerMiddleware<CallContextExt>,\n): Server<CallContextExt> {\n  const services: Array<{\n    definition: ServiceDefinition;\n    middleware?: ServerMiddleware<any, any>;\n    implementation: ServiceImplementation<ServiceDefinition, any>;\n  }> = [];\n\n  let server: GrpcServer | undefined;\n\n  function createAddBuilder<CallContextExt>(\n    middleware?: ServerMiddleware<CallContextExt>,\n  ): ServerAddBuilder<CallContextExt> {\n    return {\n      with<Ext>(newMiddleware: ServerMiddleware<Ext, CallContextExt>) {\n        return createAddBuilder(\n          middleware == null\n            ? (newMiddleware as ServerMiddleware<Ext & CallContextExt>)\n            : composeServerMiddleware(middleware, newMiddleware),\n        );\n      },\n      add(definition, implementation) {\n        if (server != null) {\n          throw new Error('server.add() must be used before listen()');\n        }\n\n        services.push({\n          definition: normalizeServiceDefinition(definition),\n          middleware,\n          implementation,\n        });\n      },\n    };\n  }\n\n  return {\n    use<Ext>(newMiddleware: ServerMiddleware<Ext, CallContextExt>) {\n      if (server != null) {\n        throw new Error('server.use() must be used before listen()');\n      }\n\n      if (services.length > 0) {\n        throw new Error('server.use() must be used before adding any services');\n      }\n\n      return createServerWithMiddleware(\n        options,\n        middleware == null\n          ? (newMiddleware as ServerMiddleware<Ext & CallContextExt>)\n          : composeServerMiddleware(middleware, newMiddleware),\n      );\n    },\n\n    ...createAddBuilder(middleware),\n\n    async listen(address, credentials) {\n      if (server != null) {\n        throw new Error('server.listen() has already been called');\n      }\n\n      server = new GrpcServer(options);\n\n      for (const {definition, middleware, implementation} of services) {\n        const grpcImplementation: UntypedServiceImplementation = {};\n\n        for (const [methodName, methodDefinition] of Object.entries(\n          definition,\n        )) {\n          const methodImplementation = (implementation as any)[methodName].bind(\n            implementation,\n          );\n\n          if (!methodDefinition.requestStream) {\n            if (!methodDefinition.responseStream) {\n              grpcImplementation[methodName] = createUnaryMethodHandler(\n                methodDefinition,\n                methodImplementation,\n                middleware,\n              );\n            } else {\n              grpcImplementation[methodName] =\n                createServerStreamingMethodHandler(\n                  methodDefinition,\n                  methodImplementation,\n                  middleware,\n                );\n            }\n          } else {\n            if (!methodDefinition.responseStream) {\n              grpcImplementation[methodName] =\n                createClientStreamingMethodHandler(\n                  methodDefinition,\n                  methodImplementation,\n                  middleware,\n                );\n            } else {\n              grpcImplementation[methodName] = createBidiStreamingMethodHandler(\n                methodDefinition,\n                methodImplementation,\n                middleware,\n              );\n            }\n          }\n        }\n\n        server.addService(\n          toGrpcJsServiceDefinition(definition),\n          grpcImplementation,\n        );\n      }\n\n      const port = await new Promise<number>((resolve, reject) => {\n        server!.bindAsync(\n          address,\n          credentials ?? ServerCredentials.createInsecure(),\n          (err, port) => {\n            if (err != null) {\n              server = undefined;\n              reject(err);\n            } else {\n              resolve(port);\n            }\n          },\n        );\n      });\n\n      return port;\n    },\n\n    async shutdown() {\n      if (server == null) {\n        return;\n      }\n\n      await new Promise<void>((resolve, reject) => {\n        server!.tryShutdown(err => {\n          if (err != null) {\n            reject(err);\n          } else {\n            resolve();\n          }\n        });\n      });\n\n      server = undefined;\n    },\n\n    forceShutdown() {\n      if (server == null) {\n        return;\n      }\n\n      server!.forceShutdown();\n      server = undefined;\n    },\n  };\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=ServiceImplementation.js.map", "import {\n  Channel,\n  ChannelCredentials,\n  ChannelOptions,\n  connectivityState,\n} from '@grpc/grpc-js';\n\nconst knownProtocols = new Set(['http', 'https']);\n\n/**\n * Creates a new channel. The channel represents a remote endpoint that can be\n * connected to.\n *\n * @param address The address of the server, in the form `protocol://host:port`,\n *     where `protocol` is one of `http` or `https`.\n *     If the protocol is not specified, it will be inferred from the\n *     credentials.\n *     If the port is not specified, it will be inferred from the protocol.\n * @param credentials Optional credentials object that is usually created by\n *     calling `ChannelCredentials.createSsl()` or\n *     `ChannelCredentials.createInsecure()`. If not specified, the credentials\n *     will be inferred from the protocol. If the protocol is not specified,\n *     `ChannelCredentials.createInsecure()` will be used.\n * @param options Optional channel options object.\n * @returns The new channel.\n */\nexport function createChannel(\n  address: string,\n  credentials?: ChannelCredentials,\n  options: ChannelOptions = {},\n): Channel {\n  const match = /^(?:([^:]+):\\/\\/)?(.*?)(?::(\\d+))?$/.exec(address);\n  if (match == null) throw new Error(`Invalid address: '${address}'`);\n\n  let [, protocol, host, port] = match;\n\n  const knownProtocol = !protocol || knownProtocols.has(protocol);\n  const isSecure = credentials?._isSecure() || protocol?.includes('https');\n\n  credentials ??= isSecure\n    ? ChannelCredentials.createSsl()\n    : ChannelCredentials.createInsecure();\n  port ??= isSecure ? '443' : '80';\n\n  let target = knownProtocol ? `${host}:${port}` : address;\n  return new Channel(target, credentials, options);\n}\n\n/**\n * Waits for the channel to be connected.\n *\n * It is not necessary to call this function before making a call on a client.\n */\nexport async function waitForChannelReady(\n  channel: Channel,\n  deadline: Date,\n): Promise<void> {\n  while (true) {\n    const state = channel.getConnectivityState(true);\n\n    if (state === connectivityState.READY) {\n      return;\n    }\n\n    await new Promise<void>((resolve, reject) => {\n      channel.watchConnectivityState(state, deadline, err => {\n        if (err != null) {\n          reject(err);\n        } else {\n          resolve();\n        }\n      });\n    });\n  }\n}\n", "import {ClientError} from 'nice-grpc-common';\nimport {Metadata, StatusObject} from '@grpc/grpc-js';\n\n/** @internal */\nexport function wrapClientError(error: unknown, path: string) {\n  if (isStatusObject(error)) {\n    return new ClientError(path, error.code, error.details);\n  }\n\n  return error;\n}\n\nfunction isStatusObject(obj: any): obj is StatusObject {\n  return (\n    typeof obj === 'object' &&\n    obj !== null &&\n    typeof obj.code === 'number' &&\n    typeof obj.details === 'string' &&\n    obj.metadata instanceof Metadata\n  );\n}\n", "import {Client, ClientWritableStream} from '@grpc/grpc-js';\nimport {isAbortError, throwIfAborted, waitForEvent} from 'abort-controller-x';\nimport {\n  CallOptions,\n  ClientMiddleware,\n  Metadata,\n  MethodDescriptor,\n} from 'nice-grpc-common';\nimport {\n  MethodDefinition,\n  toGrpcJsMethodDefinition,\n} from '../service-definitions';\nimport {\n  convertMetadataFromGrpcJs,\n  convertMetadataToGrpcJs,\n} from '../utils/convertMetadata';\nimport {isAsyncIterable} from '../utils/isAsyncIterable';\nimport {readableToAsyncIterable} from '../utils/readableToAsyncIterable';\nimport {BidiStreamingClientMethod} from './Client';\nimport {wrapClientError} from './wrapClientError';\n\n/** @internal */\nexport function createBidiStreamingMethod<Request, Response>(\n  definition: MethodDefinition<Request, unknown, unknown, Response>,\n  client: Client,\n  middleware: ClientMiddleware | undefined,\n  defaultOptions: CallOptions,\n): BidiStreamingClientMethod<Request, Response> {\n  const grpcMethodDefinition = toGrpcJsMethodDefinition(definition);\n\n  const methodDescriptor: MethodDescriptor = {\n    path: definition.path,\n    requestStream: definition.requestStream,\n    responseStream: definition.responseStream,\n    options: definition.options,\n  };\n\n  async function* bidiStreamingMethod(\n    request: AsyncIterable<Request>,\n    options: CallOptions,\n  ): AsyncGenerator<Response, void, undefined> {\n    if (!isAsyncIterable(request)) {\n      throw new Error(\n        'A middleware passed invalid request to next(): expected a single message for bidirectional streaming method',\n      );\n    }\n\n    const {metadata = Metadata(), onHeader, onTrailer} = options;\n\n    const signal = options.signal ?? new AbortController().signal;\n\n    const pipeAbortController = new AbortController();\n\n    const call = client.makeBidiStreamRequest(\n      grpcMethodDefinition.path,\n      grpcMethodDefinition.requestSerialize,\n      grpcMethodDefinition.responseDeserialize,\n      convertMetadataToGrpcJs(metadata),\n    );\n\n    call.on('metadata', metadata => {\n      onHeader?.(convertMetadataFromGrpcJs(metadata));\n    });\n    call.on('status', status => {\n      onTrailer?.(convertMetadataFromGrpcJs(status.metadata));\n    });\n\n    let pipeError: unknown;\n\n    pipeRequest(pipeAbortController.signal, request, call).then(\n      () => {\n        call.end();\n      },\n      err => {\n        if (!isAbortError(err)) {\n          pipeError = err;\n          call.cancel();\n        }\n      },\n    );\n\n    const abortListener = () => {\n      pipeAbortController.abort();\n      call.cancel();\n    };\n\n    signal.addEventListener('abort', abortListener);\n\n    try {\n      yield* readableToAsyncIterable(call);\n    } catch (err) {\n      throw wrapClientError(err, definition.path);\n    } finally {\n      pipeAbortController.abort();\n      signal.removeEventListener('abort', abortListener);\n      throwIfAborted(signal);\n\n      call.cancel();\n\n      if (pipeError) {\n        throw pipeError;\n      }\n    }\n  }\n\n  const method =\n    middleware == null\n      ? bidiStreamingMethod\n      : (request: AsyncIterable<Request>, options: CallOptions) =>\n          middleware(\n            {\n              method: methodDescriptor,\n              requestStream: true,\n              request,\n              responseStream: true,\n              next: bidiStreamingMethod,\n            },\n            options,\n          );\n\n  return (request, options) => {\n    const iterable = method(request, {\n      ...defaultOptions,\n      ...options,\n    });\n    const iterator = iterable[Symbol.asyncIterator]();\n\n    return {\n      [Symbol.asyncIterator]() {\n        return {\n          async next() {\n            const result = await iterator.next();\n\n            if (result.done && result.value != null) {\n              return await iterator.throw(\n                new Error(\n                  'A middleware returned a message, but expected to return void for bidirectional streaming method',\n                ),\n              );\n            }\n\n            return result;\n          },\n          return() {\n            return iterator.return();\n          },\n          throw(err) {\n            return iterator.throw(err);\n          },\n        };\n      },\n    };\n  };\n}\n\nasync function pipeRequest<Request>(\n  signal: AbortSignal,\n  request: AsyncIterable<Request>,\n  call: ClientWritableStream<Request>,\n): Promise<void> {\n  for await (const item of request) {\n    throwIfAborted(signal);\n\n    const shouldContinue = call.write(item);\n\n    if (!shouldContinue) {\n      await waitForEvent(signal, call, 'drain');\n    }\n  }\n}\n", "import {Client, ClientWritableStream} from '@grpc/grpc-js';\nimport {\n  execute,\n  isAbortError,\n  throwIfAborted,\n  waitForEvent,\n} from 'abort-controller-x';\nimport {\n  CallOptions,\n  ClientMiddleware,\n  Metadata,\n  MethodDescriptor,\n} from 'nice-grpc-common';\nimport {\n  MethodDefinition,\n  toGrpcJsMethodDefinition,\n} from '../service-definitions';\nimport {\n  convertMetadataFromGrpcJs,\n  convertMetadataToGrpcJs,\n} from '../utils/convertMetadata';\nimport {isAsyncIterable} from '../utils/isAsyncIterable';\nimport {ClientStreamingClientMethod} from './Client';\nimport {wrapClientError} from './wrapClientError';\n\n/** @internal */\nexport function createClientStreamingMethod<Request, Response>(\n  definition: MethodDefinition<Request, unknown, unknown, Response>,\n  client: Client,\n  middleware: ClientMiddleware | undefined,\n  defaultOptions: CallOptions,\n): ClientStreamingClientMethod<Request, Response> {\n  const grpcMethodDefinition = toGrpcJsMethodDefinition(definition);\n\n  const methodDescriptor: MethodDescriptor = {\n    path: definition.path,\n    requestStream: definition.requestStream,\n    responseStream: definition.responseStream,\n    options: definition.options,\n  };\n\n  async function* clientStreamingMethod(\n    request: AsyncIterable<Request>,\n    options: CallOptions,\n  ): AsyncGenerator<never, Response, undefined> {\n    if (!isAsyncIterable(request)) {\n      throw new Error(\n        'A middleware passed invalid request to next(): expected a single message for client streaming method',\n      );\n    }\n\n    const {\n      metadata = Metadata(),\n      signal = new AbortController().signal,\n      onHeader,\n      onTrailer,\n    } = options;\n\n    return await execute<Response>(signal, (resolve, reject) => {\n      const pipeAbortController = new AbortController();\n\n      const call = client.makeClientStreamRequest(\n        grpcMethodDefinition.path,\n        grpcMethodDefinition.requestSerialize,\n        grpcMethodDefinition.responseDeserialize,\n        convertMetadataToGrpcJs(metadata),\n        (err, response) => {\n          pipeAbortController.abort();\n\n          if (err != null) {\n            reject(wrapClientError(err, definition.path));\n          } else {\n            resolve(response!);\n          }\n        },\n      );\n\n      call.on('metadata', metadata => {\n        onHeader?.(convertMetadataFromGrpcJs(metadata));\n      });\n      call.on('status', status => {\n        onTrailer?.(convertMetadataFromGrpcJs(status.metadata));\n      });\n\n      pipeRequest(pipeAbortController.signal, request, call).then(\n        () => {\n          call.end();\n        },\n        err => {\n          if (!isAbortError(err)) {\n            reject(err);\n            call.cancel();\n          }\n        },\n      );\n\n      return () => {\n        pipeAbortController.abort();\n        call.cancel();\n      };\n    });\n  }\n\n  const method =\n    middleware == null\n      ? clientStreamingMethod\n      : (request: AsyncIterable<Request>, options: CallOptions) =>\n          middleware(\n            {\n              method: methodDescriptor,\n              requestStream: true,\n              request,\n              responseStream: false,\n              next: clientStreamingMethod,\n            },\n            options,\n          );\n\n  return async (request, options) => {\n    const iterable = method(request, {\n      ...defaultOptions,\n      ...options,\n    });\n    const iterator = iterable[Symbol.asyncIterator]();\n\n    let result = await iterator.next();\n\n    while (true) {\n      if (!result.done) {\n        result = await iterator.throw(\n          new Error(\n            'A middleware yielded a message, but expected to only return a message for client streaming method',\n          ),\n        );\n\n        continue;\n      }\n\n      if (result.value == null) {\n        result = await iterator.throw(\n          new Error(\n            'A middleware returned void, but expected to return a message for client streaming method',\n          ),\n        );\n\n        continue;\n      }\n\n      return result.value;\n    }\n  };\n}\n\nasync function pipeRequest<Request>(\n  signal: AbortSignal,\n  request: AsyncIterable<Request>,\n  call: ClientWritableStream<Request>,\n): Promise<void> {\n  for await (const item of request) {\n    throwIfAborted(signal);\n\n    const shouldContinue = call.write(item);\n\n    if (!shouldContinue) {\n      await waitForEvent(signal, call, 'drain');\n    }\n  }\n}\n", "import {Client} from '@grpc/grpc-js';\nimport {throwIfAborted} from 'abort-controller-x';\nimport {\n  CallOptions,\n  ClientMiddleware,\n  Metadata,\n  MethodDescriptor,\n} from 'nice-grpc-common';\nimport {\n  MethodDefinition,\n  toGrpcJsMethodDefinition,\n} from '../service-definitions';\nimport {\n  convertMetadataFromGrpcJs,\n  convertMetadataToGrpcJs,\n} from '../utils/convertMetadata';\nimport {isAsyncIterable} from '../utils/isAsyncIterable';\nimport {readableToAsyncIterable} from '../utils/readableToAsyncIterable';\nimport {ServerStreamingClientMethod} from './Client';\nimport {wrapClientError} from './wrapClientError';\n\n/** @internal */\nexport function createServerStreamingMethod<Request, Response>(\n  definition: MethodDefinition<Request, unknown, unknown, Response>,\n  client: Client,\n  middleware: ClientMiddleware | undefined,\n  defaultOptions: CallOptions,\n): ServerStreamingClientMethod<Request, Response> {\n  const grpcMethodDefinition = toGrpcJsMethodDefinition(definition);\n\n  const methodDescriptor: MethodDescriptor = {\n    path: definition.path,\n    requestStream: definition.requestStream,\n    responseStream: definition.responseStream,\n    options: definition.options,\n  };\n\n  async function* serverStreamingMethod(\n    request: Request,\n    options: CallOptions,\n  ): AsyncGenerator<Response, void, undefined> {\n    if (isAsyncIterable(request)) {\n      throw new Error(\n        'A middleware passed invalid request to next(): expected a single message for server streaming method',\n      );\n    }\n\n    const {metadata = Metadata(), onHeader, onTrailer} = options;\n\n    const signal = options.signal ?? new AbortController().signal;\n\n    const call = client.makeServerStreamRequest(\n      grpcMethodDefinition.path,\n      grpcMethodDefinition.requestSerialize,\n      grpcMethodDefinition.responseDeserialize,\n      request,\n      convertMetadataToGrpcJs(metadata),\n    );\n\n    call.on('metadata', metadata => {\n      onHeader?.(convertMetadataFromGrpcJs(metadata));\n    });\n    call.on('status', status => {\n      onTrailer?.(convertMetadataFromGrpcJs(status.metadata));\n    });\n\n    const abortListener = () => {\n      call.cancel();\n    };\n\n    signal.addEventListener('abort', abortListener);\n\n    try {\n      yield* readableToAsyncIterable(call);\n    } catch (err) {\n      throw wrapClientError(err, definition.path);\n    } finally {\n      signal.removeEventListener('abort', abortListener);\n      throwIfAborted(signal);\n      call.cancel();\n    }\n  }\n\n  const method =\n    middleware == null\n      ? serverStreamingMethod\n      : (request: Request, options: CallOptions) =>\n          middleware(\n            {\n              method: methodDescriptor,\n              requestStream: false,\n              request,\n              responseStream: true,\n              next: serverStreamingMethod,\n            },\n            options,\n          );\n\n  return (request, options) => {\n    const iterable = method(request, {\n      ...defaultOptions,\n      ...options,\n    });\n    const iterator = iterable[Symbol.asyncIterator]();\n\n    return {\n      [Symbol.asyncIterator]() {\n        return {\n          async next() {\n            const result = await iterator.next();\n\n            if (result.done && result.value != null) {\n              return await iterator.throw(\n                new Error(\n                  'A middleware returned a message, but expected to return void for server streaming method',\n                ),\n              );\n            }\n\n            return result;\n          },\n          return() {\n            return iterator.return();\n          },\n          throw(err) {\n            return iterator.throw(err);\n          },\n        };\n      },\n    };\n  };\n}\n", "import {Client} from '@grpc/grpc-js';\nimport {execute} from 'abort-controller-x';\nimport {\n  CallOptions,\n  ClientMiddleware,\n  Metadata,\n  MethodDescriptor,\n} from 'nice-grpc-common';\nimport {\n  MethodDefinition,\n  toGrpcJsMethodDefinition,\n} from '../service-definitions';\nimport {\n  convertMetadataFromGrpcJs,\n  convertMetadataToGrpcJs,\n} from '../utils/convertMetadata';\nimport {isAsyncIterable} from '../utils/isAsyncIterable';\nimport {UnaryClientMethod} from './Client';\nimport {wrapClientError} from './wrapClientError';\n\n/** @internal */\nexport function createUnaryMethod<Request, Response>(\n  definition: MethodDefinition<Request, unknown, unknown, Response>,\n  client: Client,\n  middleware: ClientMiddleware | undefined,\n  defaultOptions: CallOptions,\n): UnaryClientMethod<Request, Response> {\n  const grpcMethodDefinition = toGrpcJsMethodDefinition(definition);\n\n  const methodDescriptor: MethodDescriptor = {\n    path: definition.path,\n    requestStream: definition.requestStream,\n    responseStream: definition.responseStream,\n    options: definition.options,\n  };\n\n  async function* unaryMethod(\n    request: Request,\n    options: CallOptions,\n  ): AsyncGenerator<never, Response, undefined> {\n    if (isAsyncIterable(request)) {\n      throw new Error(\n        'A middleware passed invalid request to next(): expected a single message for unary method',\n      );\n    }\n\n    const {\n      metadata = Metadata(),\n      signal = new AbortController().signal,\n      onHeader,\n      onTrailer,\n    } = options;\n\n    return await execute<Response>(signal, (resolve, reject) => {\n      const call = client.makeUnaryRequest(\n        grpcMethodDefinition.path,\n        grpcMethodDefinition.requestSerialize,\n        grpcMethodDefinition.responseDeserialize,\n        request,\n        convertMetadataToGrpcJs(metadata),\n        (err, response) => {\n          if (err != null) {\n            reject(wrapClientError(err, definition.path));\n          } else {\n            resolve(response!);\n          }\n        },\n      );\n\n      call.on('metadata', metadata => {\n        onHeader?.(convertMetadataFromGrpcJs(metadata));\n      });\n      call.on('status', status => {\n        onTrailer?.(convertMetadataFromGrpcJs(status.metadata));\n      });\n\n      return () => {\n        call.cancel();\n      };\n    });\n  }\n\n  const method =\n    middleware == null\n      ? unaryMethod\n      : (request: Request, options: CallOptions) =>\n          middleware(\n            {\n              method: methodDescriptor,\n              requestStream: false,\n              request,\n              responseStream: false,\n              next: unaryMethod,\n            },\n            options,\n          );\n\n  return async (request, options) => {\n    const iterable = method(request, {\n      ...defaultOptions,\n      ...options,\n    });\n    const iterator = iterable[Symbol.asyncIterator]();\n\n    let result = await iterator.next();\n\n    while (true) {\n      if (!result.done) {\n        result = await iterator.throw(\n          new Error(\n            'A middleware yielded a message, but expected to only return a message for unary method',\n          ),\n        );\n\n        continue;\n      }\n\n      if (result.value == null) {\n        result = await iterator.throw(\n          new Error(\n            'A middleware returned void, but expected to return a message for unary method',\n          ),\n        );\n\n        continue;\n      }\n\n      return result.value;\n    }\n  };\n}\n", "import {Channel, makeClientConstructor} from '@grpc/grpc-js';\nimport {\n  CallOptions,\n  ClientMiddleware,\n  composeClientMiddleware,\n} from 'nice-grpc-common';\nimport {\n  AnyMethodDefinition,\n  CompatServiceDefinition,\n  NormalizedServiceDefinition,\n  normalizeServiceDefinition,\n  ServiceDefinition,\n} from '../service-definitions';\nimport {Client} from './Client';\nimport {createBidiStreamingMethod} from './createBidiStreamingMethod';\nimport {createClientStreamingMethod} from './createClientStreamingMethod';\nimport {createServerStreamingMethod} from './createServerStreamingMethod';\nimport {createUnaryMethod} from './createUnaryMethod';\n\nexport type ClientFactory<CallOptionsExt = {}> = {\n  /**\n   * Attach a middleware to the client factory.\n   *\n   * This method returns a new client factory with the middleware attached.\n   *\n   * A middleware that is attached first, will be invoked last.\n   *\n   * @param middleware The middleware to attach.\n   * @returns A new client factory with the middleware attached.\n   */\n  use<Ext>(\n    middleware: ClientMiddleware<Ext, CallOptionsExt>,\n  ): ClientFactory<CallOptionsExt & Ext>;\n  /**\n   * Create a client using the client factory.\n   *\n   * @param definition The service definition.\n   * @param channel The channel to use.\n   * @param defaultCallOptions Default call options per method, or `'*'` for all\n   *     methods.\n   */\n  create<Service extends CompatServiceDefinition>(\n    definition: Service,\n    channel: Channel,\n    defaultCallOptions?: DefaultCallOptions<\n      NormalizedServiceDefinition<Service>,\n      CallOptionsExt\n    >,\n  ): Client<Service, CallOptionsExt>;\n};\n\nexport type DefaultCallOptions<\n  Service extends ServiceDefinition,\n  CallOptionsExt = {},\n> = {\n  [K in keyof Service | '*']?: CallOptions & Partial<CallOptionsExt>;\n};\n\n/**\n * Create a client factory that can be used to create clients with middleware.\n */\nexport function createClientFactory(): ClientFactory {\n  return createClientFactoryWithMiddleware();\n}\n\n/**\n * Create a client with no middleware.\n *\n * This is the same as calling `createClientFactory().create()`.\n */\nexport function createClient<Service extends CompatServiceDefinition>(\n  definition: Service,\n  channel: Channel,\n  defaultCallOptions?: DefaultCallOptions<NormalizedServiceDefinition<Service>>,\n): Client<Service> {\n  return createClientFactory().create(definition, channel, defaultCallOptions);\n}\n\nfunction createClientFactoryWithMiddleware<CallOptionsExt = {}>(\n  middleware?: ClientMiddleware<CallOptionsExt>,\n): ClientFactory<CallOptionsExt> {\n  return {\n    use<Ext>(newMiddleware: ClientMiddleware<Ext, CallOptionsExt>) {\n      return createClientFactoryWithMiddleware(\n        middleware == null\n          ? (newMiddleware as ClientMiddleware<Ext & CallOptionsExt>)\n          : composeClientMiddleware(middleware, newMiddleware),\n      );\n    },\n\n    create<Service extends CompatServiceDefinition>(\n      definition: Service,\n      channel: Channel,\n      defaultCallOptions: DefaultCallOptions<\n        NormalizedServiceDefinition<Service>,\n        CallOptionsExt\n      > = {},\n    ) {\n      const constructor = makeClientConstructor({}, '');\n      const grpcClient = new constructor('', null!, {\n        channelOverride: channel,\n      });\n\n      type NormalizedService = NormalizedServiceDefinition<Service>;\n\n      const client = {} as {\n        [K in keyof NormalizedService]: Function;\n      };\n\n      const methodEntries = Object.entries(\n        normalizeServiceDefinition(definition),\n      ) as Array<[keyof NormalizedService, AnyMethodDefinition]>;\n\n      for (const [methodName, methodDefinition] of methodEntries) {\n        const defaultOptions = {\n          ...defaultCallOptions['*'],\n          ...defaultCallOptions[methodName],\n        } as CallOptions;\n\n        if (!methodDefinition.requestStream) {\n          if (!methodDefinition.responseStream) {\n            client[methodName] = createUnaryMethod(\n              methodDefinition,\n              grpcClient,\n              middleware,\n              defaultOptions,\n            );\n          } else {\n            client[methodName] = createServerStreamingMethod(\n              methodDefinition,\n              grpcClient,\n              middleware,\n              defaultOptions,\n            );\n          }\n        } else {\n          if (!methodDefinition.responseStream) {\n            client[methodName] = createClientStreamingMethod(\n              methodDefinition,\n              grpcClient,\n              middleware,\n              defaultOptions,\n            );\n          } else {\n            client[methodName] = createBidiStreamingMethod(\n              methodDefinition,\n              grpcClient,\n              middleware,\n              defaultOptions,\n            );\n          }\n        }\n      }\n\n      return client as Client<Service, CallOptionsExt>;\n    },\n  };\n}\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=Client.js.map", "export * from 'nice-grpc-common';\n\nexport * from './server/Server';\nexport * from './server/ServiceImplementation';\n\nexport {createChannel, waitForChannelReady} from './client/channel';\nexport {Channel, ChannelOptions, ChannelCredentials} from '@grpc/grpc-js';\nexport * from './client/ClientFactory';\nexport * from './client/Client';\n\nexport {\n  ServiceDefinition,\n  MethodDefinition,\n  CompatServiceDefinition,\n  NormalizedServiceDefinition,\n} from './service-definitions';\nexport {TsProtoServiceDefinition} from './service-definitions/ts-proto';\nexport {ServiceDefinition as GrpcJsServiceDefinition} from '@grpc/grpc-js';\n", "import {\n  ClientMiddlewareCall,\n  CallOptions,\n  ClientError,\n  ClientMiddleware,\n  Metadata,\n} from 'nice-grpc';\nimport {isAbortError} from 'abort-controller-x';\nimport { createLogger } from '@restorecommerce/logger';\nimport { DeadlineOptions } from 'nice-grpc-client-middleware-deadline';\nimport { AsyncLocalStorage } from 'node:async_hooks';\nimport { randomUUID } from 'node:crypto';\n\nconst tracingHeader = 'x-request-id';\n\nexport const metadataPassThrough = new AsyncLocalStorage();\n\nexport interface WithRequestID {\n  rid?: string;\n}\n\nexport async function* tracingMiddleware<Request, Response>(\n  call: ClientMiddlewareCall<Request, Response, WithRequestID>,\n  options: CallOptions,\n) {\n  const nextID = options.metadata?.get(tracingHeader) ?? randomUUID();\n  options.metadata?.set(tracingHeader, nextID);\n  return yield* call.next(call.request, {\n    ...options,\n    rid: nextID\n  });\n}\n\nexport const loggingMiddleware = (logger: ReturnType<typeof createLogger>, omittedFields: any): ClientMiddleware => {\n  if (!logger) {\n    console.error(new Error('WARNING: grpc-client loggingMiddleware initialized with an undefined logger!'));\n  }\n\n  return async function* <Request, Response>(\n    call: ClientMiddlewareCall<Request, Response>,\n    options: CallOptions & WithRequestID,\n  ) {\n    const {path} = call.method;\n\n    logger?.debug(`[rid: ${options.rid}] invoking ${path} endpoint with data`, { request: call.request });\n\n    try {\n      return yield* call.next(call.request, options);\n    } catch (err) {\n      if (err instanceof ClientError) {\n        logger?.error(`[rid: ${options.rid}] Error serving request ${path}: Client Error`, {\n          code: err.code,\n          message: err.message,\n          stack: err.stack,\n          details: err.details\n        });\n      } else if (isAbortError(err)) {\n        logger?.error(`[rid: ${options.rid}] Error serving request ${path}: cancel`, {\n          message: (err as Error).message,\n          stack: (err as Error).stack,\n        });\n      } else {\n        logger?.error(`[rid: ${options.rid}] Error serving request ${path}`, {\n          message: (err as Error).message,\n          stack: (err as Error).stack,\n        });\n      }\n\n      throw err;\n    }\n  }\n}\nexport const internalDeadlineMiddleware = (timeout: number): ClientMiddleware => {\n  return async function* <Request, Response>(\n    call: ClientMiddlewareCall<Request, Response, DeadlineOptions>,\n    options: CallOptions & WithRequestID,\n  ) {\n    return yield* call.next(call.request, {\n      ...options,\n      deadline: timeout\n    });\n  }\n}\n\nexport async function* metaMiddleware<Request, Response>(\n  call: ClientMiddlewareCall<Request, Response>,\n  options: CallOptions,\n) {\n  const val = metadataPassThrough.getStore();\n  if (val) {\n    if (!options.metadata) {\n      options.metadata = Metadata();\n    }\n\n    const parsed = JSON.parse(val as string) as Record<string, string>;\n    for (const k of Object.keys(parsed)) {\n      options.metadata.set(k, parsed[k]);\n    }\n  }\n\n  return yield* call.next(call.request, {\n    ...options,\n  });\n}\n", "import {ClientError, ClientMiddleware, Status} from 'nice-grpc-common';\n\nexport type DeadlineOptions = {\n  /**\n   * Deadline for the call.\n   *\n   * If `Date`, it will be interpreted as an absolute time.\n   * If number, it will be interpreted as a relative time in milliseconds.\n   * By default, there is no deadline.\n   */\n  deadline?: Date | number;\n};\n\n/**\n * Client middleware that adds support for setting deadline for a call, after\n * which the call will get cancelled, and a `ClientError` with status code\n * `DEADLINE_EXCEEDED` will be thrown.\n */\nexport const deadlineMiddleware: ClientMiddleware<DeadlineOptions> =\n  async function* deadlineMiddleware(call, options) {\n    if (options.deadline == null || options.signal?.aborted) {\n      return yield* call.next(call.request, options);\n    }\n\n    const {deadline, signal: origSignal, ...restOptions} = options;\n\n    const abortController = new AbortController();\n\n    const abortListener = () => {\n      abortController.abort();\n    };\n\n    origSignal?.addEventListener('abort', abortListener);\n\n    let timedOut = false;\n\n    const offset =\n      deadline instanceof Date ? deadline.getTime() - Date.now() : deadline;\n    const timer = setTimeout(() => {\n      timedOut = true;\n      abortController.abort();\n    }, offset);\n\n    try {\n      return yield* call.next(call.request, {\n        ...restOptions,\n        signal: abortController.signal,\n      });\n    } finally {\n      origSignal?.removeEventListener('abort', abortListener);\n      clearTimeout(timer);\n\n      if (timedOut) {\n        throw new ClientError(\n          call.method.path,\n          Status.DEADLINE_EXCEEDED,\n          'Deadline exceeded',\n        );\n      }\n    }\n  };\n", "import {delay, rethrowAbortError} from 'abort-controller-x';\nimport {ClientError, ClientMiddleware, Status} from 'nice-grpc-common';\n\n/**\n * These options are added to `CallOptions` by\n * `nice-grpc-client-middleware-retry`.\n */\nexport type RetryOptions = {\n  /**\n   * Boolean indicating whether retries are enabled.\n   *\n   * If the method is marked as idempotent in Protobuf, i.e. has\n   *\n   *     option idempotency_level = IDEMPOTENT;\n   *\n   * then the default is `true`. Otherwise the default is `false`.\n   *\n   * Method options currently work only when compiling with `ts-proto`.\n   */\n  retry?: boolean;\n  /**\n   * Base delay between retry attempts in milliseconds.\n   *\n   * Defaults to 1000.\n   *\n   * Example: if `retryBaseDelayMs` is 100, then retries will be attempted in\n   * 100ms, 200ms, 400ms etc (not counting jitter).\n   */\n  retryBaseDelayMs?: number;\n  /**\n   * Maximum delay between attempts in milliseconds.\n   *\n   * Defaults to 30 seconds.\n   *\n   * Example: if `retryBaseDelayMs` is 1000 and `retryMaxDelayMs` is 3000, then\n   * retries will be attempted in 1000ms, 2000ms, 3000ms, 3000ms etc (not\n   * counting jitter).\n   */\n  retryMaxDelayMs?: number;\n  /**\n   * Maximum for the total number of attempts. `Infinity` is supported.\n   *\n   * Defaults to 1, i.e. a single retry will be attempted.\n   */\n  retryMaxAttempts?: number;\n  /**\n   * Array of retryable status codes.\n   *\n   * Default is `[UNKNOWN, INTERNAL, UNAVAILABLE, CANCELLED]`.\n   */\n  retryableStatuses?: Status[];\n  /**\n   * Called after receiving error with retryable status code before setting\n   * backoff delay timer.\n   *\n   * If the error code is not retryable, or the maximum attempts exceeded, this\n   * function will not be called and the error will be thrown from the client\n   * method.\n   */\n  onRetryableError?(error: ClientError, attempt: number, delayMs: number): void;\n};\n\nconst defaultRetryableStatuses: Status[] = [\n  Status.UNKNOWN,\n  Status.INTERNAL,\n  Status.UNAVAILABLE,\n  // Server may return `CANCELLED` if it is shutting down. We can distinguish\n  // this from client-initiated cancellations because these are returned as\n  // `AbortError`s.\n  Status.CANCELLED,\n];\n\n/**\n * Client middleware that adds automatic retries to unary calls.\n */\nexport const retryMiddleware: ClientMiddleware<RetryOptions> =\n  async function* retryMiddleware(call, options) {\n    const {idempotencyLevel} = call.method.options;\n    const isIdempotent =\n      idempotencyLevel === 'IDEMPOTENT' ||\n      idempotencyLevel === 'NO_SIDE_EFFECTS';\n\n    const {\n      retry = isIdempotent,\n      retryBaseDelayMs = 1000,\n      retryMaxDelayMs = 30000,\n      retryMaxAttempts = 1,\n      onRetryableError,\n      retryableStatuses = defaultRetryableStatuses,\n      ...restOptions\n    } = options;\n\n    if (call.requestStream || call.responseStream || !retry) {\n      return yield* call.next(call.request, restOptions);\n    }\n\n    const signal = options.signal ?? new AbortController().signal;\n\n    for (let attempt = 0; ; attempt++) {\n      try {\n        return yield* call.next(call.request, restOptions);\n      } catch (error: unknown) {\n        rethrowAbortError(error);\n\n        if (\n          attempt >= retryMaxAttempts ||\n          !(error instanceof ClientError) ||\n          !retryableStatuses.includes(error.code)\n        ) {\n          throw error;\n        }\n\n        // https://aws.amazon.com/ru/blogs/architecture/exponential-backoff-and-jitter/\n        const backoff = Math.min(\n          retryMaxDelayMs,\n          Math.pow(2, attempt) * retryBaseDelayMs,\n        );\n        const delayMs = Math.round((backoff * (1 + Math.random())) / 2);\n\n        onRetryableError?.(error, attempt, delayMs);\n\n        await delay(signal, delayMs);\n      }\n    }\n  };\n", "import {\n  Channel,\n  Client,\n  createClientFactory as createClientFactoryInternal,\n  DefaultCallOptions,\n  createChannel,\n  ClientError,\n  Metadata,\n  type CallContext,\n} from 'nice-grpc';\nimport { CompatServiceDefinition, NormalizedServiceDefinition } from 'nice-grpc/lib/service-definitions';\nimport {\n  internalDeadlineMiddleware,\n  loggingMiddleware,\n  metaMiddleware,\n  tracingMiddleware,\n  WithRequestID\n} from './middleware';\nimport { createLogger } from '@restorecommerce/logger';\nimport { deadlineMiddleware } from 'nice-grpc-client-middleware-deadline';\nimport { retryMiddleware } from 'nice-grpc-client-middleware-retry';\n\nexport interface GrpcClientConfig {\n  logger: ReturnType<typeof createLogger>;\n  timeout?: number;\n  omittedFields?: any;\n}\n\nexport function createClient<Service extends CompatServiceDefinition>(\n  config: GrpcClientConfig,\n  definition: Service,\n  channel: Channel,\n  defaultCallOptions?: DefaultCallOptions<NormalizedServiceDefinition<Service>>,\n): Client<Service> {\n  let factory = createClientFactoryInternal()\n    .use<WithRequestID>(loggingMiddleware(config.logger, config.omittedFields))\n    .use<WithRequestID>(tracingMiddleware)\n    .use<WithRequestID>(metaMiddleware)\n    .use<WithRequestID>(retryMiddleware);\n\n  if (config.timeout) {\n    factory = factory.use(deadlineMiddleware);\n    factory = factory.use(internalDeadlineMiddleware(config.timeout));\n  }\n\n  if (!defaultCallOptions) {\n    defaultCallOptions = {};\n  }\n  defaultCallOptions = Object.assign(defaultCallOptions, {\n    '*': {\n      retryMaxAttempts: 5,\n      retry: true,\n    },\n    onRetryableError(error: ClientError, attempt: number, delayMs: number) {\n      config.logger.error(`Call failed (${attempt}), retrying in ${delayMs}ms`, { code: error.code, message: error.message, stack: error.stack });\n    }\n  });\n  return factory.create(definition, channel, defaultCallOptions);\n}\n\nexport { Client, Channel, createChannel, CallContext, Metadata };\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/commandinterface.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { Any, protoMetadata as protoMetadata1 } from \"../../google/protobuf/any\";\nimport { protoMetadata as protoMetadata2, Subject } from \"./auth\";\nimport { protoMetadata as protoMetadata3 } from \"./options\";\n\nexport const protobufPackage = \"io.restorecommerce.commandinterface\";\n\n/** used to send requests through Kafka or gRPC */\nexport interface CommandRequest {\n  /** command identifier (used to demultiplex operation in the command implementation) */\n  name?:\n    | string\n    | undefined;\n  /** variable payload */\n  payload?: Any | undefined;\n  subject?: Subject | undefined;\n}\n\n/** used to push responses to Kafka */\nexport interface CommandResponse {\n  /**\n   * service identifiers\n   * (multiple services may reply to one system command)\n   * (multiple service names can be bound to one microservice)\n   */\n  services?:\n    | string[]\n    | undefined;\n  /** variable payload */\n  payload?: Any | undefined;\n}\n\nfunction createBaseCommandRequest(): CommandRequest {\n  return {};\n}\n\nexport const CommandRequest: MessageFns<CommandRequest> = {\n  encode(message: CommandRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.name !== undefined) {\n      writer.uint32(10).string(message.name);\n    }\n    if (message.payload !== undefined) {\n      Any.encode(message.payload, writer.uint32(18).fork()).join();\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CommandRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCommandRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.payload = Any.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CommandRequest {\n    return {\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      payload: isSet(object.payload) ? Any.fromJSON(object.payload) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: CommandRequest): unknown {\n    const obj: any = {};\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.payload !== undefined) {\n      obj.payload = Any.toJSON(message.payload);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CommandRequest>): CommandRequest {\n    return CommandRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CommandRequest>): CommandRequest {\n    const message = createBaseCommandRequest();\n    message.name = object.name ?? undefined;\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? Any.fromPartial(object.payload)\n      : undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseCommandResponse(): CommandResponse {\n  return {};\n}\n\nexport const CommandResponse: MessageFns<CommandResponse> = {\n  encode(message: CommandResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.services !== undefined && message.services.length !== 0) {\n      for (const v of message.services) {\n        writer.uint32(10).string(v!);\n      }\n    }\n    if (message.payload !== undefined) {\n      Any.encode(message.payload, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CommandResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCommandResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.services === undefined) {\n            message.services = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.services!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.payload = Any.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CommandResponse {\n    return {\n      services: globalThis.Array.isArray(object?.services)\n        ? object.services.map((e: any) => globalThis.String(e))\n        : undefined,\n      payload: isSet(object.payload) ? Any.fromJSON(object.payload) : undefined,\n    };\n  },\n\n  toJSON(message: CommandResponse): unknown {\n    const obj: any = {};\n    if (message.services?.length) {\n      obj.services = message.services;\n    }\n    if (message.payload !== undefined) {\n      obj.payload = Any.toJSON(message.payload);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CommandResponse>): CommandResponse {\n    return CommandResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CommandResponse>): CommandResponse {\n    const message = createBaseCommandResponse();\n    message.services = object.services?.map((e) => e) || undefined;\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? Any.fromPartial(object.payload)\n      : undefined;\n    return message;\n  },\n};\n\n/** RPC service for executing commands */\nexport type CommandInterfaceServiceDefinition = typeof CommandInterfaceServiceDefinition;\nexport const CommandInterfaceServiceDefinition = {\n  name: \"CommandInterfaceService\",\n  fullName: \"io.restorecommerce.commandinterface.CommandInterfaceService\",\n  methods: {\n    command: {\n      name: \"Command\",\n      requestType: CommandRequest,\n      requestStream: false,\n      responseType: Any,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface CommandInterfaceServiceImplementation<CallContextExt = {}> {\n  command(request: CommandRequest, context: CallContext & CallContextExt): Promise<DeepPartial<Any>>;\n}\n\nexport interface CommandInterfaceServiceClient<CallOptionsExt = {}> {\n  command(request: DeepPartial<CommandRequest>, options?: CallOptions & CallOptionsExt): Promise<Any>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/commandinterface.proto\",\n    \"package\": \"io.restorecommerce.commandinterface\",\n    \"dependency\": [\"google/protobuf/any.proto\", \"io/restorecommerce/auth.proto\", \"io/restorecommerce/options.proto\"],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"CommandRequest\",\n      \"field\": [{\n        \"name\": \"name\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"payload\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Any\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_name\", \"options\": undefined }, { \"name\": \"_payload\", \"options\": undefined }, {\n        \"name\": \"_subject\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"CommandResponse\",\n      \"field\": [{\n        \"name\": \"services\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"services\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"payload\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Any\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [{\n      \"name\": \"CommandInterfaceService\",\n      \"method\": [{\n        \"name\": \"Command\",\n        \"inputType\": \".io.restorecommerce.commandinterface.CommandRequest\",\n        \"outputType\": \".google.protobuf.Any\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [4, 0],\n        \"span\": [9, 0, 14, 1],\n        \"leadingComments\": \" used to send requests through Kafka or gRPC\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 0, 2, 0],\n        \"span\": [11, 2, 27],\n        \"leadingComments\": \"  command identifier (used to demultiplex operation in the command implementation)\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 0, 2, 1],\n        \"span\": [12, 2, 43],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" variable payload\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 1],\n        \"span\": [17, 0, 23, 1],\n        \"leadingComments\": \" used to push responses to Kafka\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 1, 2, 0],\n        \"span\": [21, 2, 31],\n        \"leadingComments\":\n          \" service identifiers\\n (multiple services may reply to one system command)\\n (multiple service names can be bound to one microservice)\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 1, 2, 1],\n        \"span\": [22, 2, 43],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" variable payload\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0],\n        \"span\": [28, 0, 30, 1],\n        \"leadingComments\": \"*\\n RPC service for executing commands\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.commandinterface.CommandRequest\": CommandRequest,\n    \".io.restorecommerce.commandinterface.CommandResponse\": CommandResponse,\n  },\n  dependencies: [protoMetadata1, protoMetadata2, protoMetadata3],\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "import { Channel, createClient, GrpcClientConfig } from '@restorecommerce/grpc-client';\nimport {\n  DeleteRequest,\n  ReadRequest,\n  Sort,\n  Sort_SortOrder,\n  FieldFilter\n} from './generated/io/restorecommerce/resource_base';\nimport { CommandInterfaceServiceClient, CommandInterfaceServiceDefinition } from './generated/io/restorecommerce/commandinterface';\nimport { createChannel } from 'nice-grpc';\n\nexport { DeleteRequest, ReadRequest, Sort, Sort_SortOrder, FieldFilter };\n\nexport class RestoreCommerceGrpcClient {\n\n  protected channel: Channel;\n\n  readonly command: CommandInterfaceServiceClient;\n\n  constructor(address: string, cfg: GrpcClientConfig) {\n    this.channel = createChannel(address);\n    this.command = createClient(cfg, CommandInterfaceServiceDefinition, this.channel);\n  }\n\n  protected createClient = createClient;\n\n}\n", "import { Any } from './generated/google/protobuf/any';\nexport { Any };\n\nexport * from './grpc-client';", "// eslint-disable-next-line @typescript-eslint/no-extraneous-class\nexport abstract class _CodeOrName {\n  abstract readonly str: string\n  abstract readonly names: UsedNames\n  abstract toString(): string\n  abstract emptyStr(): boolean\n}\n\nexport const IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i\n\nexport class Name extends _CodeOrName {\n  readonly str: string\n  constructor(s: string) {\n    super()\n    if (!IDENTIFIER.test(s)) throw new Error(\"CodeGen: name must be a valid identifier\")\n    this.str = s\n  }\n\n  toString(): string {\n    return this.str\n  }\n\n  emptyStr(): boolean {\n    return false\n  }\n\n  get names(): UsedNames {\n    return {[this.str]: 1}\n  }\n}\n\nexport class _Code extends _CodeOrName {\n  readonly _items: readonly CodeItem[]\n  private _str?: string\n  private _names?: UsedNames\n\n  constructor(code: string | readonly CodeItem[]) {\n    super()\n    this._items = typeof code === \"string\" ? [code] : code\n  }\n\n  toString(): string {\n    return this.str\n  }\n\n  emptyStr(): boolean {\n    if (this._items.length > 1) return false\n    const item = this._items[0]\n    return item === \"\" || item === '\"\"'\n  }\n\n  get str(): string {\n    return (this._str ??= this._items.reduce((s: string, c: CodeItem) => `${s}${c}`, \"\"))\n  }\n\n  get names(): UsedNames {\n    return (this._names ??= this._items.reduce((names: UsedNames, c) => {\n      if (c instanceof Name) names[c.str] = (names[c.str] || 0) + 1\n      return names\n    }, {}))\n  }\n}\n\nexport type CodeItem = Name | string | number | boolean | null\n\nexport type UsedNames = Record<string, number | undefined>\n\nexport type Code = _Code | Name\n\nexport type SafeExpr = Code | number | boolean | null\n\nexport const nil = new _Code(\"\")\n\ntype CodeArg = SafeExpr | string | undefined\n\nexport function _(strs: TemplateStringsArray, ...args: CodeArg[]): _Code {\n  const code: CodeItem[] = [strs[0]]\n  let i = 0\n  while (i < args.length) {\n    addCodeArg(code, args[i])\n    code.push(strs[++i])\n  }\n  return new _Code(code)\n}\n\nconst plus = new _Code(\"+\")\n\nexport function str(strs: TemplateStringsArray, ...args: (CodeArg | string[])[]): _Code {\n  const expr: CodeItem[] = [safeStringify(strs[0])]\n  let i = 0\n  while (i < args.length) {\n    expr.push(plus)\n    addCodeArg(expr, args[i])\n    expr.push(plus, safeStringify(strs[++i]))\n  }\n  optimize(expr)\n  return new _Code(expr)\n}\n\nexport function addCodeArg(code: CodeItem[], arg: CodeArg | string[]): void {\n  if (arg instanceof _Code) code.push(...arg._items)\n  else if (arg instanceof Name) code.push(arg)\n  else code.push(interpolate(arg))\n}\n\nfunction optimize(expr: CodeItem[]): void {\n  let i = 1\n  while (i < expr.length - 1) {\n    if (expr[i] === plus) {\n      const res = mergeExprItems(expr[i - 1], expr[i + 1])\n      if (res !== undefined) {\n        expr.splice(i - 1, 3, res)\n        continue\n      }\n      expr[i++] = \"+\"\n    }\n    i++\n  }\n}\n\nfunction mergeExprItems(a: CodeItem, b: CodeItem): CodeItem | undefined {\n  if (b === '\"\"') return a\n  if (a === '\"\"') return b\n  if (typeof a == \"string\") {\n    if (b instanceof Name || a[a.length - 1] !== '\"') return\n    if (typeof b != \"string\") return `${a.slice(0, -1)}${b}\"`\n    if (b[0] === '\"') return a.slice(0, -1) + b.slice(1)\n    return\n  }\n  if (typeof b == \"string\" && b[0] === '\"' && !(a instanceof Name)) return `\"${a}${b.slice(1)}`\n  return\n}\n\nexport function strConcat(c1: Code, c2: Code): Code {\n  return c2.emptyStr() ? c1 : c1.emptyStr() ? c2 : str`${c1}${c2}`\n}\n\n// TODO do not allow arrays here\nfunction interpolate(x?: string | string[] | number | boolean | null): SafeExpr | string {\n  return typeof x == \"number\" || typeof x == \"boolean\" || x === null\n    ? x\n    : safeStringify(Array.isArray(x) ? x.join(\",\") : x)\n}\n\nexport function stringify(x: unknown): Code {\n  return new _Code(safeStringify(x))\n}\n\nexport function safeStringify(x: unknown): string {\n  return JSON.stringify(x)\n    .replace(/\\u2028/g, \"\\\\u2028\")\n    .replace(/\\u2029/g, \"\\\\u2029\")\n}\n\nexport function getProperty(key: Code | string | number): Code {\n  return typeof key == \"string\" && IDENTIFIER.test(key) ? new _Code(`.${key}`) : _`[${key}]`\n}\n\n//Does best effort to format the name properly\nexport function getEsmExportName(key: Code | string | number): Code {\n  if (typeof key == \"string\" && IDENTIFIER.test(key)) {\n    return new _Code(`${key}`)\n  }\n  throw new Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`)\n}\n\nexport function regexpCode(rx: RegExp): Code {\n  return new _Code(rx.toString())\n}\n", "import {_, nil, Code, Name} from \"./code\"\n\ninterface NameGroup {\n  prefix: string\n  index: number\n}\n\nexport interface NameValue {\n  ref: ValueReference // this is the reference to any value that can be referred to from generated code via `globals` var in the closure\n  key?: unknown // any key to identify a global to avoid duplicates, if not passed ref is used\n  code?: Code // this is the code creating the value needed for standalone code wit_out closure - can be a primitive value, function or import (`require`)\n}\n\nexport type ValueReference = unknown // possibly make CodeGen parameterized type on this type\n\nclass ValueError extends Error {\n  readonly value?: NameValue\n  constructor(name: ValueScopeName) {\n    super(`CodeGen: \"code\" for ${name} not defined`)\n    this.value = name.value\n  }\n}\n\ninterface ScopeOptions {\n  prefixes?: Set<string>\n  parent?: Scope\n}\n\ninterface ValueScopeOptions extends ScopeOptions {\n  scope: ScopeStore\n  es5?: boolean\n  lines?: boolean\n}\n\nexport type ScopeStore = Record<string, ValueReference[] | undefined>\n\ntype ScopeValues = {\n  [Prefix in string]?: Map<unknown, ValueScopeName>\n}\n\nexport type ScopeValueSets = {\n  [Prefix in string]?: Set<ValueScopeName>\n}\n\nexport enum UsedValueState {\n  Started,\n  Completed,\n}\n\nexport type UsedScopeValues = {\n  [Prefix in string]?: Map<ValueScopeName, UsedValueState | undefined>\n}\n\nexport const varKinds = {\n  const: new Name(\"const\"),\n  let: new Name(\"let\"),\n  var: new Name(\"var\"),\n}\n\nexport class Scope {\n  protected readonly _names: {[Prefix in string]?: NameGroup} = {}\n  protected readonly _prefixes?: Set<string>\n  protected readonly _parent?: Scope\n\n  constructor({prefixes, parent}: ScopeOptions = {}) {\n    this._prefixes = prefixes\n    this._parent = parent\n  }\n\n  toName(nameOrPrefix: Name | string): Name {\n    return nameOrPrefix instanceof Name ? nameOrPrefix : this.name(nameOrPrefix)\n  }\n\n  name(prefix: string): Name {\n    return new Name(this._newName(prefix))\n  }\n\n  protected _newName(prefix: string): string {\n    const ng = this._names[prefix] || this._nameGroup(prefix)\n    return `${prefix}${ng.index++}`\n  }\n\n  private _nameGroup(prefix: string): NameGroup {\n    if (this._parent?._prefixes?.has(prefix) || (this._prefixes && !this._prefixes.has(prefix))) {\n      throw new Error(`CodeGen: prefix \"${prefix}\" is not allowed in this scope`)\n    }\n    return (this._names[prefix] = {prefix, index: 0})\n  }\n}\n\ninterface ScopePath {\n  property: string\n  itemIndex: number\n}\n\nexport class ValueScopeName extends Name {\n  readonly prefix: string\n  value?: NameValue\n  scopePath?: Code\n\n  constructor(prefix: string, nameStr: string) {\n    super(nameStr)\n    this.prefix = prefix\n  }\n\n  setValue(value: NameValue, {property, itemIndex}: ScopePath): void {\n    this.value = value\n    this.scopePath = _`.${new Name(property)}[${itemIndex}]`\n  }\n}\n\ninterface VSOptions extends ValueScopeOptions {\n  _n: Code\n}\n\nconst line = _`\\n`\n\nexport class ValueScope extends Scope {\n  protected readonly _values: ScopeValues = {}\n  protected readonly _scope: ScopeStore\n  readonly opts: VSOptions\n\n  constructor(opts: ValueScopeOptions) {\n    super(opts)\n    this._scope = opts.scope\n    this.opts = {...opts, _n: opts.lines ? line : nil}\n  }\n\n  get(): ScopeStore {\n    return this._scope\n  }\n\n  name(prefix: string): ValueScopeName {\n    return new ValueScopeName(prefix, this._newName(prefix))\n  }\n\n  value(nameOrPrefix: ValueScopeName | string, value: NameValue): ValueScopeName {\n    if (value.ref === undefined) throw new Error(\"CodeGen: ref must be passed in value\")\n    const name = this.toName(nameOrPrefix) as ValueScopeName\n    const {prefix} = name\n    const valueKey = value.key ?? value.ref\n    let vs = this._values[prefix]\n    if (vs) {\n      const _name = vs.get(valueKey)\n      if (_name) return _name\n    } else {\n      vs = this._values[prefix] = new Map()\n    }\n    vs.set(valueKey, name)\n\n    const s = this._scope[prefix] || (this._scope[prefix] = [])\n    const itemIndex = s.length\n    s[itemIndex] = value.ref\n    name.setValue(value, {property: prefix, itemIndex})\n    return name\n  }\n\n  getValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n    const vs = this._values[prefix]\n    if (!vs) return\n    return vs.get(keyOrRef)\n  }\n\n  scopeRefs(scopeName: Name, values: ScopeValues | ScopeValueSets = this._values): Code {\n    return this._reduceValues(values, (name: ValueScopeName) => {\n      if (name.scopePath === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n      return _`${scopeName}${name.scopePath}`\n    })\n  }\n\n  scopeCode(\n    values: ScopeValues | ScopeValueSets = this._values,\n    usedValues?: UsedScopeValues,\n    getCode?: (n: ValueScopeName) => Code | undefined\n  ): Code {\n    return this._reduceValues(\n      values,\n      (name: ValueScopeName) => {\n        if (name.value === undefined) throw new Error(`CodeGen: name \"${name}\" has no value`)\n        return name.value.code\n      },\n      usedValues,\n      getCode\n    )\n  }\n\n  private _reduceValues(\n    values: ScopeValues | ScopeValueSets,\n    valueCode: (n: ValueScopeName) => Code | undefined,\n    usedValues: UsedScopeValues = {},\n    getCode?: (n: ValueScopeName) => Code | undefined\n  ): Code {\n    let code: Code = nil\n    for (const prefix in values) {\n      const vs = values[prefix]\n      if (!vs) continue\n      const nameSet = (usedValues[prefix] = usedValues[prefix] || new Map())\n      vs.forEach((name: ValueScopeName) => {\n        if (nameSet.has(name)) return\n        nameSet.set(name, UsedValueState.Started)\n        let c = valueCode(name)\n        if (c) {\n          const def = this.opts.es5 ? varKinds.var : varKinds.const\n          code = _`${code}${def} ${name} = ${c};${this.opts._n}`\n        } else if ((c = getCode?.(name))) {\n          code = _`${code}${c}${this.opts._n}`\n        } else {\n          throw new ValueError(name)\n        }\n        nameSet.set(name, UsedValueState.Completed)\n      })\n    }\n    return code\n  }\n}\n", "import type {ScopeValueSets, NameValue, ValueScope, ValueScopeName} from \"./scope\"\nimport {_, nil, _Code, Code, Name, UsedNames, CodeItem, addCodeArg, _CodeOrName} from \"./code\"\nimport {Scope, varKinds} from \"./scope\"\n\nexport {_, str, strConcat, nil, getProperty, stringify, regexpCode, Name, Code} from \"./code\"\nexport {Scope, ScopeStore, ValueScope, ValueScopeName, ScopeValueSets, varKinds} from \"./scope\"\n\n// type for expressions that can be safely inserted in code without quotes\nexport type SafeExpr = Code | number | boolean | null\n\n// type that is either Code of function that adds code to CodeGen instance using its methods\nexport type Block = Code | (() => void)\n\nexport const operators = {\n  GT: new _Code(\">\"),\n  GTE: new _Code(\">=\"),\n  LT: new _Code(\"<\"),\n  LTE: new _Code(\"<=\"),\n  EQ: new _Code(\"===\"),\n  NEQ: new _Code(\"!==\"),\n  NOT: new _Code(\"!\"),\n  OR: new _Code(\"||\"),\n  AND: new _Code(\"&&\"),\n  ADD: new _Code(\"+\"),\n}\n\nabstract class Node {\n  abstract readonly names: UsedNames\n\n  optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n    return this\n  }\n\n  optimizeNames(_names: UsedNames, _constants: Constants): this | undefined {\n    return this\n  }\n\n  // get count(): number {\n  //   return 1\n  // }\n}\n\nclass Def extends Node {\n  constructor(\n    private readonly varKind: Name,\n    private readonly name: Name,\n    private rhs?: SafeExpr\n  ) {\n    super()\n  }\n\n  render({es5, _n}: CGOptions): string {\n    const varKind = es5 ? varKinds.var : this.varKind\n    const rhs = this.rhs === undefined ? \"\" : ` = ${this.rhs}`\n    return `${varKind} ${this.name}${rhs};` + _n\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n    if (!names[this.name.str]) return\n    if (this.rhs) this.rhs = optimizeExpr(this.rhs, names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    return this.rhs instanceof _CodeOrName ? this.rhs.names : {}\n  }\n}\n\nclass Assign extends Node {\n  constructor(\n    readonly lhs: Code,\n    public rhs: SafeExpr,\n    private readonly sideEffects?: boolean\n  ) {\n    super()\n  }\n\n  render({_n}: CGOptions): string {\n    return `${this.lhs} = ${this.rhs};` + _n\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n    if (this.lhs instanceof Name && !names[this.lhs.str] && !this.sideEffects) return\n    this.rhs = optimizeExpr(this.rhs, names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    const names = this.lhs instanceof Name ? {} : {...this.lhs.names}\n    return addExprNames(names, this.rhs)\n  }\n}\n\nclass AssignOp extends Assign {\n  constructor(\n    lhs: Code,\n    private readonly op: Code,\n    rhs: SafeExpr,\n    sideEffects?: boolean\n  ) {\n    super(lhs, rhs, sideEffects)\n  }\n\n  render({_n}: CGOptions): string {\n    return `${this.lhs} ${this.op}= ${this.rhs};` + _n\n  }\n}\n\nclass Label extends Node {\n  readonly names: UsedNames = {}\n  constructor(readonly label: Name) {\n    super()\n  }\n\n  render({_n}: CGOptions): string {\n    return `${this.label}:` + _n\n  }\n}\n\nclass Break extends Node {\n  readonly names: UsedNames = {}\n  constructor(readonly label?: Code) {\n    super()\n  }\n\n  render({_n}: CGOptions): string {\n    const label = this.label ? ` ${this.label}` : \"\"\n    return `break${label};` + _n\n  }\n}\n\nclass Throw extends Node {\n  constructor(readonly error: Code) {\n    super()\n  }\n\n  render({_n}: CGOptions): string {\n    return `throw ${this.error};` + _n\n  }\n\n  get names(): UsedNames {\n    return this.error.names\n  }\n}\n\nclass AnyCode extends Node {\n  constructor(private code: SafeExpr) {\n    super()\n  }\n\n  render({_n}: CGOptions): string {\n    return `${this.code};` + _n\n  }\n\n  optimizeNodes(): this | undefined {\n    return `${this.code}` ? this : undefined\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this {\n    this.code = optimizeExpr(this.code, names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    return this.code instanceof _CodeOrName ? this.code.names : {}\n  }\n}\n\nabstract class ParentNode extends Node {\n  constructor(readonly nodes: ChildNode[] = []) {\n    super()\n  }\n\n  render(opts: CGOptions): string {\n    return this.nodes.reduce((code, n) => code + n.render(opts), \"\")\n  }\n\n  optimizeNodes(): this | ChildNode | ChildNode[] | undefined {\n    const {nodes} = this\n    let i = nodes.length\n    while (i--) {\n      const n = nodes[i].optimizeNodes()\n      if (Array.isArray(n)) nodes.splice(i, 1, ...n)\n      else if (n) nodes[i] = n\n      else nodes.splice(i, 1)\n    }\n    return nodes.length > 0 ? this : undefined\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n    const {nodes} = this\n    let i = nodes.length\n    while (i--) {\n      // iterating backwards improves 1-pass optimization\n      const n = nodes[i]\n      if (n.optimizeNames(names, constants)) continue\n      subtractNames(names, n.names)\n      nodes.splice(i, 1)\n    }\n    return nodes.length > 0 ? this : undefined\n  }\n\n  get names(): UsedNames {\n    return this.nodes.reduce((names: UsedNames, n) => addNames(names, n.names), {})\n  }\n\n  // get count(): number {\n  //   return this.nodes.reduce((c, n) => c + n.count, 1)\n  // }\n}\n\nabstract class BlockNode extends ParentNode {\n  render(opts: CGOptions): string {\n    return \"{\" + opts._n + super.render(opts) + \"}\" + opts._n\n  }\n}\n\nclass Root extends ParentNode {}\n\nclass Else extends BlockNode {\n  static readonly kind = \"else\"\n}\n\nclass If extends BlockNode {\n  static readonly kind = \"if\"\n  else?: If | Else\n  constructor(\n    private condition: Code | boolean,\n    nodes?: ChildNode[]\n  ) {\n    super(nodes)\n  }\n\n  render(opts: CGOptions): string {\n    let code = `if(${this.condition})` + super.render(opts)\n    if (this.else) code += \"else \" + this.else.render(opts)\n    return code\n  }\n\n  optimizeNodes(): If | ChildNode[] | undefined {\n    super.optimizeNodes()\n    const cond = this.condition\n    if (cond === true) return this.nodes // else is ignored here\n    let e = this.else\n    if (e) {\n      const ns = e.optimizeNodes()\n      e = this.else = Array.isArray(ns) ? new Else(ns) : (ns as Else | undefined)\n    }\n    if (e) {\n      if (cond === false) return e instanceof If ? e : e.nodes\n      if (this.nodes.length) return this\n      return new If(not(cond), e instanceof If ? [e] : e.nodes)\n    }\n    if (cond === false || !this.nodes.length) return undefined\n    return this\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n    this.else = this.else?.optimizeNames(names, constants)\n    if (!(super.optimizeNames(names, constants) || this.else)) return\n    this.condition = optimizeExpr(this.condition, names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    const names = super.names\n    addExprNames(names, this.condition)\n    if (this.else) addNames(names, this.else.names)\n    return names\n  }\n\n  // get count(): number {\n  //   return super.count + (this.else?.count || 0)\n  // }\n}\n\nabstract class For extends BlockNode {\n  static readonly kind = \"for\"\n}\n\nclass ForLoop extends For {\n  constructor(private iteration: Code) {\n    super()\n  }\n\n  render(opts: CGOptions): string {\n    return `for(${this.iteration})` + super.render(opts)\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n    if (!super.optimizeNames(names, constants)) return\n    this.iteration = optimizeExpr(this.iteration, names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    return addNames(super.names, this.iteration.names)\n  }\n}\n\nclass ForRange extends For {\n  constructor(\n    private readonly varKind: Name,\n    private readonly name: Name,\n    private readonly from: SafeExpr,\n    private readonly to: SafeExpr\n  ) {\n    super()\n  }\n\n  render(opts: CGOptions): string {\n    const varKind = opts.es5 ? varKinds.var : this.varKind\n    const {name, from, to} = this\n    return `for(${varKind} ${name}=${from}; ${name}<${to}; ${name}++)` + super.render(opts)\n  }\n\n  get names(): UsedNames {\n    const names = addExprNames(super.names, this.from)\n    return addExprNames(names, this.to)\n  }\n}\n\nclass ForIter extends For {\n  constructor(\n    private readonly loop: \"of\" | \"in\",\n    private readonly varKind: Name,\n    private readonly name: Name,\n    private iterable: Code\n  ) {\n    super()\n  }\n\n  render(opts: CGOptions): string {\n    return `for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})` + super.render(opts)\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this | undefined {\n    if (!super.optimizeNames(names, constants)) return\n    this.iterable = optimizeExpr(this.iterable, names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    return addNames(super.names, this.iterable.names)\n  }\n}\n\nclass Func extends BlockNode {\n  static readonly kind = \"func\"\n  constructor(\n    public name: Name,\n    public args: Code,\n    public async?: boolean\n  ) {\n    super()\n  }\n\n  render(opts: CGOptions): string {\n    const _async = this.async ? \"async \" : \"\"\n    return `${_async}function ${this.name}(${this.args})` + super.render(opts)\n  }\n}\n\nclass Return extends ParentNode {\n  static readonly kind = \"return\"\n\n  render(opts: CGOptions): string {\n    return \"return \" + super.render(opts)\n  }\n}\n\nclass Try extends BlockNode {\n  catch?: Catch\n  finally?: Finally\n\n  render(opts: CGOptions): string {\n    let code = \"try\" + super.render(opts)\n    if (this.catch) code += this.catch.render(opts)\n    if (this.finally) code += this.finally.render(opts)\n    return code\n  }\n\n  optimizeNodes(): this {\n    super.optimizeNodes()\n    this.catch?.optimizeNodes() as Catch | undefined\n    this.finally?.optimizeNodes() as Finally | undefined\n    return this\n  }\n\n  optimizeNames(names: UsedNames, constants: Constants): this {\n    super.optimizeNames(names, constants)\n    this.catch?.optimizeNames(names, constants)\n    this.finally?.optimizeNames(names, constants)\n    return this\n  }\n\n  get names(): UsedNames {\n    const names = super.names\n    if (this.catch) addNames(names, this.catch.names)\n    if (this.finally) addNames(names, this.finally.names)\n    return names\n  }\n\n  // get count(): number {\n  //   return super.count + (this.catch?.count || 0) + (this.finally?.count || 0)\n  // }\n}\n\nclass Catch extends BlockNode {\n  static readonly kind = \"catch\"\n  constructor(readonly error: Name) {\n    super()\n  }\n\n  render(opts: CGOptions): string {\n    return `catch(${this.error})` + super.render(opts)\n  }\n}\n\nclass Finally extends BlockNode {\n  static readonly kind = \"finally\"\n  render(opts: CGOptions): string {\n    return \"finally\" + super.render(opts)\n  }\n}\n\ntype StartBlockNode = If | For | Func | Return | Try\n\ntype LeafNode = Def | Assign | Label | Break | Throw | AnyCode\n\ntype ChildNode = StartBlockNode | LeafNode\n\ntype EndBlockNodeType =\n  | typeof If\n  | typeof Else\n  | typeof For\n  | typeof Func\n  | typeof Return\n  | typeof Catch\n  | typeof Finally\n\ntype Constants = Record<string, SafeExpr | undefined>\n\nexport interface CodeGenOptions {\n  es5?: boolean\n  lines?: boolean\n  ownProperties?: boolean\n}\n\ninterface CGOptions extends CodeGenOptions {\n  _n: \"\\n\" | \"\"\n}\n\nexport class CodeGen {\n  readonly _scope: Scope\n  readonly _extScope: ValueScope\n  readonly _values: ScopeValueSets = {}\n  private readonly _nodes: ParentNode[]\n  private readonly _blockStarts: number[] = []\n  private readonly _constants: Constants = {}\n  private readonly opts: CGOptions\n\n  constructor(extScope: ValueScope, opts: CodeGenOptions = {}) {\n    this.opts = {...opts, _n: opts.lines ? \"\\n\" : \"\"}\n    this._extScope = extScope\n    this._scope = new Scope({parent: extScope})\n    this._nodes = [new Root()]\n  }\n\n  toString(): string {\n    return this._root.render(this.opts)\n  }\n\n  // returns unique name in the internal scope\n  name(prefix: string): Name {\n    return this._scope.name(prefix)\n  }\n\n  // reserves unique name in the external scope\n  scopeName(prefix: string): ValueScopeName {\n    return this._extScope.name(prefix)\n  }\n\n  // reserves unique name in the external scope and assigns value to it\n  scopeValue(prefixOrName: ValueScopeName | string, value: NameValue): Name {\n    const name = this._extScope.value(prefixOrName, value)\n    const vs = this._values[name.prefix] || (this._values[name.prefix] = new Set())\n    vs.add(name)\n    return name\n  }\n\n  getScopeValue(prefix: string, keyOrRef: unknown): ValueScopeName | undefined {\n    return this._extScope.getValue(prefix, keyOrRef)\n  }\n\n  // return code that assigns values in the external scope to the names that are used internally\n  // (same names that were returned by gen.scopeName or gen.scopeValue)\n  scopeRefs(scopeName: Name): Code {\n    return this._extScope.scopeRefs(scopeName, this._values)\n  }\n\n  scopeCode(): Code {\n    return this._extScope.scopeCode(this._values)\n  }\n\n  private _def(\n    varKind: Name,\n    nameOrPrefix: Name | string,\n    rhs?: SafeExpr,\n    constant?: boolean\n  ): Name {\n    const name = this._scope.toName(nameOrPrefix)\n    if (rhs !== undefined && constant) this._constants[name.str] = rhs\n    this._leafNode(new Def(varKind, name, rhs))\n    return name\n  }\n\n  // `const` declaration (`var` in es5 mode)\n  const(nameOrPrefix: Name | string, rhs: SafeExpr, _constant?: boolean): Name {\n    return this._def(varKinds.const, nameOrPrefix, rhs, _constant)\n  }\n\n  // `let` declaration with optional assignment (`var` in es5 mode)\n  let(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n    return this._def(varKinds.let, nameOrPrefix, rhs, _constant)\n  }\n\n  // `var` declaration with optional assignment\n  var(nameOrPrefix: Name | string, rhs?: SafeExpr, _constant?: boolean): Name {\n    return this._def(varKinds.var, nameOrPrefix, rhs, _constant)\n  }\n\n  // assignment code\n  assign(lhs: Code, rhs: SafeExpr, sideEffects?: boolean): CodeGen {\n    return this._leafNode(new Assign(lhs, rhs, sideEffects))\n  }\n\n  // `+=` code\n  add(lhs: Code, rhs: SafeExpr): CodeGen {\n    return this._leafNode(new AssignOp(lhs, operators.ADD, rhs))\n  }\n\n  // appends passed SafeExpr to code or executes Block\n  code(c: Block | SafeExpr): CodeGen {\n    if (typeof c == \"function\") c()\n    else if (c !== nil) this._leafNode(new AnyCode(c))\n    return this\n  }\n\n  // returns code for object literal for the passed argument list of key-value pairs\n  object(...keyValues: [Name | string, SafeExpr | string][]): _Code {\n    const code: CodeItem[] = [\"{\"]\n    for (const [key, value] of keyValues) {\n      if (code.length > 1) code.push(\",\")\n      code.push(key)\n      if (key !== value || this.opts.es5) {\n        code.push(\":\")\n        addCodeArg(code, value)\n      }\n    }\n    code.push(\"}\")\n    return new _Code(code)\n  }\n\n  // `if` clause (or statement if `thenBody` and, optionally, `elseBody` are passed)\n  if(condition: Code | boolean, thenBody?: Block, elseBody?: Block): CodeGen {\n    this._blockNode(new If(condition))\n\n    if (thenBody && elseBody) {\n      this.code(thenBody).else().code(elseBody).endIf()\n    } else if (thenBody) {\n      this.code(thenBody).endIf()\n    } else if (elseBody) {\n      throw new Error('CodeGen: \"else\" body without \"then\" body')\n    }\n    return this\n  }\n\n  // `else if` clause - invalid without `if` or after `else` clauses\n  elseIf(condition: Code | boolean): CodeGen {\n    return this._elseNode(new If(condition))\n  }\n\n  // `else` clause - only valid after `if` or `else if` clauses\n  else(): CodeGen {\n    return this._elseNode(new Else())\n  }\n\n  // end `if` statement (needed if gen.if was used only with condition)\n  endIf(): CodeGen {\n    return this._endBlockNode(If, Else)\n  }\n\n  private _for(node: For, forBody?: Block): CodeGen {\n    this._blockNode(node)\n    if (forBody) this.code(forBody).endFor()\n    return this\n  }\n\n  // a generic `for` clause (or statement if `forBody` is passed)\n  for(iteration: Code, forBody?: Block): CodeGen {\n    return this._for(new ForLoop(iteration), forBody)\n  }\n\n  // `for` statement for a range of values\n  forRange(\n    nameOrPrefix: Name | string,\n    from: SafeExpr,\n    to: SafeExpr,\n    forBody: (index: Name) => void,\n    varKind: Code = this.opts.es5 ? varKinds.var : varKinds.let\n  ): CodeGen {\n    const name = this._scope.toName(nameOrPrefix)\n    return this._for(new ForRange(varKind, name, from, to), () => forBody(name))\n  }\n\n  // `for-of` statement (in es5 mode replace with a normal for loop)\n  forOf(\n    nameOrPrefix: Name | string,\n    iterable: Code,\n    forBody: (item: Name) => void,\n    varKind: Code = varKinds.const\n  ): CodeGen {\n    const name = this._scope.toName(nameOrPrefix)\n    if (this.opts.es5) {\n      const arr = iterable instanceof Name ? iterable : this.var(\"_arr\", iterable)\n      return this.forRange(\"_i\", 0, _`${arr}.length`, (i) => {\n        this.var(name, _`${arr}[${i}]`)\n        forBody(name)\n      })\n    }\n    return this._for(new ForIter(\"of\", varKind, name, iterable), () => forBody(name))\n  }\n\n  // `for-in` statement.\n  // With option `ownProperties` replaced with a `for-of` loop for object keys\n  forIn(\n    nameOrPrefix: Name | string,\n    obj: Code,\n    forBody: (item: Name) => void,\n    varKind: Code = this.opts.es5 ? varKinds.var : varKinds.const\n  ): CodeGen {\n    if (this.opts.ownProperties) {\n      return this.forOf(nameOrPrefix, _`Object.keys(${obj})`, forBody)\n    }\n    const name = this._scope.toName(nameOrPrefix)\n    return this._for(new ForIter(\"in\", varKind, name, obj), () => forBody(name))\n  }\n\n  // end `for` loop\n  endFor(): CodeGen {\n    return this._endBlockNode(For)\n  }\n\n  // `label` statement\n  label(label: Name): CodeGen {\n    return this._leafNode(new Label(label))\n  }\n\n  // `break` statement\n  break(label?: Code): CodeGen {\n    return this._leafNode(new Break(label))\n  }\n\n  // `return` statement\n  return(value: Block | SafeExpr): CodeGen {\n    const node = new Return()\n    this._blockNode(node)\n    this.code(value)\n    if (node.nodes.length !== 1) throw new Error('CodeGen: \"return\" should have one node')\n    return this._endBlockNode(Return)\n  }\n\n  // `try` statement\n  try(tryBody: Block, catchCode?: (e: Name) => void, finallyCode?: Block): CodeGen {\n    if (!catchCode && !finallyCode) throw new Error('CodeGen: \"try\" without \"catch\" and \"finally\"')\n    const node = new Try()\n    this._blockNode(node)\n    this.code(tryBody)\n    if (catchCode) {\n      const error = this.name(\"e\")\n      this._currNode = node.catch = new Catch(error)\n      catchCode(error)\n    }\n    if (finallyCode) {\n      this._currNode = node.finally = new Finally()\n      this.code(finallyCode)\n    }\n    return this._endBlockNode(Catch, Finally)\n  }\n\n  // `throw` statement\n  throw(error: Code): CodeGen {\n    return this._leafNode(new Throw(error))\n  }\n\n  // start self-balancing block\n  block(body?: Block, nodeCount?: number): CodeGen {\n    this._blockStarts.push(this._nodes.length)\n    if (body) this.code(body).endBlock(nodeCount)\n    return this\n  }\n\n  // end the current self-balancing block\n  endBlock(nodeCount?: number): CodeGen {\n    const len = this._blockStarts.pop()\n    if (len === undefined) throw new Error(\"CodeGen: not in self-balancing block\")\n    const toClose = this._nodes.length - len\n    if (toClose < 0 || (nodeCount !== undefined && toClose !== nodeCount)) {\n      throw new Error(`CodeGen: wrong number of nodes: ${toClose} vs ${nodeCount} expected`)\n    }\n    this._nodes.length = len\n    return this\n  }\n\n  // `function` heading (or definition if funcBody is passed)\n  func(name: Name, args: Code = nil, async?: boolean, funcBody?: Block): CodeGen {\n    this._blockNode(new Func(name, args, async))\n    if (funcBody) this.code(funcBody).endFunc()\n    return this\n  }\n\n  // end function definition\n  endFunc(): CodeGen {\n    return this._endBlockNode(Func)\n  }\n\n  optimize(n = 1): void {\n    while (n-- > 0) {\n      this._root.optimizeNodes()\n      this._root.optimizeNames(this._root.names, this._constants)\n    }\n  }\n\n  private _leafNode(node: LeafNode): CodeGen {\n    this._currNode.nodes.push(node)\n    return this\n  }\n\n  private _blockNode(node: StartBlockNode): void {\n    this._currNode.nodes.push(node)\n    this._nodes.push(node)\n  }\n\n  private _endBlockNode(N1: EndBlockNodeType, N2?: EndBlockNodeType): CodeGen {\n    const n = this._currNode\n    if (n instanceof N1 || (N2 && n instanceof N2)) {\n      this._nodes.pop()\n      return this\n    }\n    throw new Error(`CodeGen: not in block \"${N2 ? `${N1.kind}/${N2.kind}` : N1.kind}\"`)\n  }\n\n  private _elseNode(node: If | Else): CodeGen {\n    const n = this._currNode\n    if (!(n instanceof If)) {\n      throw new Error('CodeGen: \"else\" without \"if\"')\n    }\n    this._currNode = n.else = node\n    return this\n  }\n\n  private get _root(): Root {\n    return this._nodes[0] as Root\n  }\n\n  private get _currNode(): ParentNode {\n    const ns = this._nodes\n    return ns[ns.length - 1]\n  }\n\n  private set _currNode(node: ParentNode) {\n    const ns = this._nodes\n    ns[ns.length - 1] = node\n  }\n\n  // get nodeCount(): number {\n  //   return this._root.count\n  // }\n}\n\nfunction addNames(names: UsedNames, from: UsedNames): UsedNames {\n  for (const n in from) names[n] = (names[n] || 0) + (from[n] || 0)\n  return names\n}\n\nfunction addExprNames(names: UsedNames, from: SafeExpr): UsedNames {\n  return from instanceof _CodeOrName ? addNames(names, from.names) : names\n}\n\nfunction optimizeExpr<T extends SafeExpr | Code>(expr: T, names: UsedNames, constants: Constants): T\nfunction optimizeExpr(expr: SafeExpr, names: UsedNames, constants: Constants): SafeExpr {\n  if (expr instanceof Name) return replaceName(expr)\n  if (!canOptimize(expr)) return expr\n  return new _Code(\n    expr._items.reduce((items: CodeItem[], c: SafeExpr | string) => {\n      if (c instanceof Name) c = replaceName(c)\n      if (c instanceof _Code) items.push(...c._items)\n      else items.push(c)\n      return items\n    }, [])\n  )\n\n  function replaceName(n: Name): SafeExpr {\n    const c = constants[n.str]\n    if (c === undefined || names[n.str] !== 1) return n\n    delete names[n.str]\n    return c\n  }\n\n  function canOptimize(e: SafeExpr): e is _Code {\n    return (\n      e instanceof _Code &&\n      e._items.some(\n        (c) => c instanceof Name && names[c.str] === 1 && constants[c.str] !== undefined\n      )\n    )\n  }\n}\n\nfunction subtractNames(names: UsedNames, from: UsedNames): void {\n  for (const n in from) names[n] = (names[n] || 0) - (from[n] || 0)\n}\n\nexport function not<T extends Code | SafeExpr>(x: T): T\nexport function not(x: Code | SafeExpr): Code | SafeExpr {\n  return typeof x == \"boolean\" || typeof x == \"number\" || x === null ? !x : _`!${par(x)}`\n}\n\nconst andCode = mappend(operators.AND)\n\n// boolean AND (&&) expression with the passed arguments\nexport function and(...args: Code[]): Code {\n  return args.reduce(andCode)\n}\n\nconst orCode = mappend(operators.OR)\n\n// boolean OR (||) expression with the passed arguments\nexport function or(...args: Code[]): Code {\n  return args.reduce(orCode)\n}\n\ntype MAppend = (x: Code, y: Code) => Code\n\nfunction mappend(op: Code): MAppend {\n  return (x, y) => (x === nil ? y : y === nil ? x : _`${par(x)} ${op} ${par(y)}`)\n}\n\nfunction par(x: Code): Code {\n  return x instanceof Name ? x : _`(${x})`\n}\n", "import type {AnySchema, EvaluatedProperties, EvaluatedItems} from \"../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \".\"\nimport {_, getProperty, Code, Name, CodeGen} from \"./codegen\"\nimport {_Code} from \"./codegen/code\"\nimport type {Rule, ValidationRules} from \"./rules\"\n\n// TODO refactor to use Set\nexport function toHash<T extends string = string>(arr: T[]): {[K in T]?: true} {\n  const hash: {[K in T]?: true} = {}\n  for (const item of arr) hash[item] = true\n  return hash\n}\n\nexport function alwaysValidSchema(it: SchemaCxt, schema: AnySchema): boolean | void {\n  if (typeof schema == \"boolean\") return schema\n  if (Object.keys(schema).length === 0) return true\n  checkUnknownRules(it, schema)\n  return !schemaHasRules(schema, it.self.RULES.all)\n}\n\nexport function checkUnknownRules(it: SchemaCxt, schema: AnySchema = it.schema): void {\n  const {opts, self} = it\n  if (!opts.strictSchema) return\n  if (typeof schema === \"boolean\") return\n  const rules = self.RULES.keywords\n  for (const key in schema) {\n    if (!rules[key]) checkStrictMode(it, `unknown keyword: \"${key}\"`)\n  }\n}\n\nexport function schemaHasRules(\n  schema: AnySchema,\n  rules: {[Key in string]?: boolean | Rule}\n): boolean {\n  if (typeof schema == \"boolean\") return !schema\n  for (const key in schema) if (rules[key]) return true\n  return false\n}\n\nexport function schemaHasRulesButRef(schema: AnySchema, RULES: ValidationRules): boolean {\n  if (typeof schema == \"boolean\") return !schema\n  for (const key in schema) if (key !== \"$ref\" && RULES.all[key]) return true\n  return false\n}\n\nexport function schemaRefOrVal(\n  {topSchemaRef, schemaPath}: SchemaObjCxt,\n  schema: unknown,\n  keyword: string,\n  $data?: string | false\n): Code | number | boolean {\n  if (!$data) {\n    if (typeof schema == \"number\" || typeof schema == \"boolean\") return schema\n    if (typeof schema == \"string\") return _`${schema}`\n  }\n  return _`${topSchemaRef}${schemaPath}${getProperty(keyword)}`\n}\n\nexport function unescapeFragment(str: string): string {\n  return unescapeJsonPointer(decodeURIComponent(str))\n}\n\nexport function escapeFragment(str: string | number): string {\n  return encodeURIComponent(escapeJsonPointer(str))\n}\n\nexport function escapeJsonPointer(str: string | number): string {\n  if (typeof str == \"number\") return `${str}`\n  return str.replace(/~/g, \"~0\").replace(/\\//g, \"~1\")\n}\n\nexport function unescapeJsonPointer(str: string): string {\n  return str.replace(/~1/g, \"/\").replace(/~0/g, \"~\")\n}\n\nexport function eachItem<T>(xs: T | T[], f: (x: T) => void): void {\n  if (Array.isArray(xs)) {\n    for (const x of xs) f(x)\n  } else {\n    f(xs)\n  }\n}\n\ntype SomeEvaluated = EvaluatedProperties | EvaluatedItems\n\ntype MergeEvaluatedFunc<T extends SomeEvaluated> = (\n  gen: CodeGen,\n  from: Name | T,\n  to: Name | Exclude<T, true> | undefined,\n  toName?: typeof Name\n) => Name | T\n\ninterface MakeMergeFuncArgs<T extends SomeEvaluated> {\n  mergeNames: (gen: CodeGen, from: Name, to: Name) => void\n  mergeToName: (gen: CodeGen, from: T, to: Name) => void\n  mergeValues: (from: T, to: Exclude<T, true>) => T\n  resultToName: (gen: CodeGen, res?: T) => Name\n}\n\nfunction makeMergeEvaluated<T extends SomeEvaluated>({\n  mergeNames,\n  mergeToName,\n  mergeValues,\n  resultToName,\n}: MakeMergeFuncArgs<T>): MergeEvaluatedFunc<T> {\n  return (gen, from, to, toName) => {\n    const res =\n      to === undefined\n        ? from\n        : to instanceof Name\n        ? (from instanceof Name ? mergeNames(gen, from, to) : mergeToName(gen, from, to), to)\n        : from instanceof Name\n        ? (mergeToName(gen, to, from), from)\n        : mergeValues(from, to)\n    return toName === Name && !(res instanceof Name) ? resultToName(gen, res) : res\n  }\n}\n\ninterface MergeEvaluated {\n  props: MergeEvaluatedFunc<EvaluatedProperties>\n  items: MergeEvaluatedFunc<EvaluatedItems>\n}\n\nexport const mergeEvaluated: MergeEvaluated = {\n  props: makeMergeEvaluated({\n    mergeNames: (gen, from, to) =>\n      gen.if(_`${to} !== true && ${from} !== undefined`, () => {\n        gen.if(\n          _`${from} === true`,\n          () => gen.assign(to, true),\n          () => gen.assign(to, _`${to} || {}`).code(_`Object.assign(${to}, ${from})`)\n        )\n      }),\n    mergeToName: (gen, from, to) =>\n      gen.if(_`${to} !== true`, () => {\n        if (from === true) {\n          gen.assign(to, true)\n        } else {\n          gen.assign(to, _`${to} || {}`)\n          setEvaluated(gen, to, from)\n        }\n      }),\n    mergeValues: (from, to) => (from === true ? true : {...from, ...to}),\n    resultToName: evaluatedPropsToName,\n  }),\n  items: makeMergeEvaluated({\n    mergeNames: (gen, from, to) =>\n      gen.if(_`${to} !== true && ${from} !== undefined`, () =>\n        gen.assign(to, _`${from} === true ? true : ${to} > ${from} ? ${to} : ${from}`)\n      ),\n    mergeToName: (gen, from, to) =>\n      gen.if(_`${to} !== true`, () =>\n        gen.assign(to, from === true ? true : _`${to} > ${from} ? ${to} : ${from}`)\n      ),\n    mergeValues: (from, to) => (from === true ? true : Math.max(from, to)),\n    resultToName: (gen, items) => gen.var(\"items\", items),\n  }),\n}\n\nexport function evaluatedPropsToName(gen: CodeGen, ps?: EvaluatedProperties): Name {\n  if (ps === true) return gen.var(\"props\", true)\n  const props = gen.var(\"props\", _`{}`)\n  if (ps !== undefined) setEvaluated(gen, props, ps)\n  return props\n}\n\nexport function setEvaluated(gen: CodeGen, props: Name, ps: {[K in string]?: true}): void {\n  Object.keys(ps).forEach((p) => gen.assign(_`${props}${getProperty(p)}`, true))\n}\n\nconst snippets: {[S in string]?: _Code} = {}\n\nexport function useFunc(gen: CodeGen, f: {code: string}): Name {\n  return gen.scopeValue(\"func\", {\n    ref: f,\n    code: snippets[f.code] || (snippets[f.code] = new _Code(f.code)),\n  })\n}\n\nexport enum Type {\n  Num,\n  Str,\n}\n\nexport function getErrorPath(\n  dataProp: Name | string | number,\n  dataPropType?: Type,\n  jsPropertySyntax?: boolean\n): Code | string {\n  // let path\n  if (dataProp instanceof Name) {\n    const isNumber = dataPropType === Type.Num\n    return jsPropertySyntax\n      ? isNumber\n        ? _`\"[\" + ${dataProp} + \"]\"`\n        : _`\"['\" + ${dataProp} + \"']\"`\n      : isNumber\n      ? _`\"/\" + ${dataProp}`\n      : _`\"/\" + ${dataProp}.replace(/~/g, \"~0\").replace(/\\\\//g, \"~1\")` // TODO maybe use global escapePointer\n  }\n  return jsPropertySyntax ? getProperty(dataProp).toString() : \"/\" + escapeJsonPointer(dataProp)\n}\n\nexport function checkStrictMode(\n  it: SchemaCxt,\n  msg: string,\n  mode: boolean | \"log\" = it.opts.strictSchema\n): void {\n  if (!mode) return\n  msg = `strict mode: ${msg}`\n  if (mode === true) throw new Error(msg)\n  it.self.logger.warn(msg)\n}\n", "import {Name} from \"./codegen\"\n\nconst names = {\n  // validation function arguments\n  data: new Name(\"data\"), // data passed to validation function\n  // args passed from referencing schema\n  valCxt: new Name(\"valCxt\"), // validation/data context - should not be used directly, it is destructured to the names below\n  instancePath: new Name(\"instancePath\"),\n  parentData: new Name(\"parentData\"),\n  parentDataProperty: new Name(\"parentDataProperty\"),\n  rootData: new Name(\"rootData\"), // root data - same as the data passed to the first/top validation function\n  dynamicAnchors: new Name(\"dynamicAnchors\"), // used to support recursiveRef and dynamicRef\n  // function scoped variables\n  vErrors: new Name(\"vErrors\"), // null or array of validation errors\n  errors: new Name(\"errors\"), // counter of validation errors\n  this: new Name(\"this\"),\n  // \"globals\"\n  self: new Name(\"self\"),\n  scope: new Name(\"scope\"),\n  // JTD serialize/parse name for JSON string and position\n  json: new Name(\"json\"),\n  jsonPos: new Name(\"jsonPos\"),\n  jsonLen: new Name(\"jsonLen\"),\n  jsonPart: new Name(\"jsonPart\"),\n}\n\nexport default names\n", "import type {KeywordErrorCxt, KeywordErrorDefinition} from \"../types\"\nimport type {SchemaCxt} from \"./index\"\nimport {CodeGen, _, str, strConcat, Code, Name} from \"./codegen\"\nimport {SafeExpr} from \"./codegen/code\"\nimport {getErrorPath, Type} from \"./util\"\nimport N from \"./names\"\n\nexport const keywordError: KeywordErrorDefinition = {\n  message: ({keyword}) => str`must pass \"${keyword}\" keyword validation`,\n}\n\nexport const keyword$DataError: KeywordErrorDefinition = {\n  message: ({keyword, schemaType}) =>\n    schemaType\n      ? str`\"${keyword}\" keyword must be ${schemaType} ($data)`\n      : str`\"${keyword}\" keyword is invalid ($data)`,\n}\n\nexport interface ErrorPaths {\n  instancePath?: Code\n  schemaPath?: string\n  parentSchema?: boolean\n}\n\nexport function reportError(\n  cxt: KeywordErrorCxt,\n  error: KeywordErrorDefinition = keywordError,\n  errorPaths?: ErrorPaths,\n  overrideAllErrors?: boolean\n): void {\n  const {it} = cxt\n  const {gen, compositeRule, allErrors} = it\n  const errObj = errorObjectCode(cxt, error, errorPaths)\n  if (overrideAllErrors ?? (compositeRule || allErrors)) {\n    addError(gen, errObj)\n  } else {\n    returnErrors(it, _`[${errObj}]`)\n  }\n}\n\nexport function reportExtraError(\n  cxt: KeywordErrorCxt,\n  error: KeywordErrorDefinition = keywordError,\n  errorPaths?: ErrorPaths\n): void {\n  const {it} = cxt\n  const {gen, compositeRule, allErrors} = it\n  const errObj = errorObjectCode(cxt, error, errorPaths)\n  addError(gen, errObj)\n  if (!(compositeRule || allErrors)) {\n    returnErrors(it, N.vErrors)\n  }\n}\n\nexport function resetErrorsCount(gen: CodeGen, errsCount: Name): void {\n  gen.assign(N.errors, errsCount)\n  gen.if(_`${N.vErrors} !== null`, () =>\n    gen.if(\n      errsCount,\n      () => gen.assign(_`${N.vErrors}.length`, errsCount),\n      () => gen.assign(N.vErrors, null)\n    )\n  )\n}\n\nexport function extendErrors({\n  gen,\n  keyword,\n  schemaValue,\n  data,\n  errsCount,\n  it,\n}: KeywordErrorCxt): void {\n  /* istanbul ignore if */\n  if (errsCount === undefined) throw new Error(\"ajv implementation error\")\n  const err = gen.name(\"err\")\n  gen.forRange(\"i\", errsCount, N.errors, (i) => {\n    gen.const(err, _`${N.vErrors}[${i}]`)\n    gen.if(_`${err}.instancePath === undefined`, () =>\n      gen.assign(_`${err}.instancePath`, strConcat(N.instancePath, it.errorPath))\n    )\n    gen.assign(_`${err}.schemaPath`, str`${it.errSchemaPath}/${keyword}`)\n    if (it.opts.verbose) {\n      gen.assign(_`${err}.schema`, schemaValue)\n      gen.assign(_`${err}.data`, data)\n    }\n  })\n}\n\nfunction addError(gen: CodeGen, errObj: Code): void {\n  const err = gen.const(\"err\", errObj)\n  gen.if(\n    _`${N.vErrors} === null`,\n    () => gen.assign(N.vErrors, _`[${err}]`),\n    _`${N.vErrors}.push(${err})`\n  )\n  gen.code(_`${N.errors}++`)\n}\n\nfunction returnErrors(it: SchemaCxt, errs: Code): void {\n  const {gen, validateName, schemaEnv} = it\n  if (schemaEnv.$async) {\n    gen.throw(_`new ${it.ValidationError as Name}(${errs})`)\n  } else {\n    gen.assign(_`${validateName}.errors`, errs)\n    gen.return(false)\n  }\n}\n\nconst E = {\n  keyword: new Name(\"keyword\"),\n  schemaPath: new Name(\"schemaPath\"), // also used in JTD errors\n  params: new Name(\"params\"),\n  propertyName: new Name(\"propertyName\"),\n  message: new Name(\"message\"),\n  schema: new Name(\"schema\"),\n  parentSchema: new Name(\"parentSchema\"),\n}\n\nfunction errorObjectCode(\n  cxt: KeywordErrorCxt,\n  error: KeywordErrorDefinition,\n  errorPaths?: ErrorPaths\n): Code {\n  const {createErrors} = cxt.it\n  if (createErrors === false) return _`{}`\n  return errorObject(cxt, error, errorPaths)\n}\n\nfunction errorObject(\n  cxt: KeywordErrorCxt,\n  error: KeywordErrorDefinition,\n  errorPaths: ErrorPaths = {}\n): Code {\n  const {gen, it} = cxt\n  const keyValues: [Name, SafeExpr | string][] = [\n    errorInstancePath(it, errorPaths),\n    errorSchemaPath(cxt, errorPaths),\n  ]\n  extraErrorProps(cxt, error, keyValues)\n  return gen.object(...keyValues)\n}\n\nfunction errorInstancePath({errorPath}: SchemaCxt, {instancePath}: ErrorPaths): [Name, Code] {\n  const instPath = instancePath\n    ? str`${errorPath}${getErrorPath(instancePath, Type.Str)}`\n    : errorPath\n  return [N.instancePath, strConcat(N.instancePath, instPath)]\n}\n\nfunction errorSchemaPath(\n  {keyword, it: {errSchemaPath}}: KeywordErrorCxt,\n  {schemaPath, parentSchema}: ErrorPaths\n): [Name, string | Code] {\n  let schPath = parentSchema ? errSchemaPath : str`${errSchemaPath}/${keyword}`\n  if (schemaPath) {\n    schPath = str`${schPath}${getErrorPath(schemaPath, Type.Str)}`\n  }\n  return [E.schemaPath, schPath]\n}\n\nfunction extraErrorProps(\n  cxt: KeywordErrorCxt,\n  {params, message}: KeywordErrorDefinition,\n  keyValues: [Name, SafeExpr | string][]\n): void {\n  const {keyword, data, schemaValue, it} = cxt\n  const {opts, propertyName, topSchemaRef, schemaPath} = it\n  keyValues.push(\n    [E.keyword, keyword],\n    [E.params, typeof params == \"function\" ? params(cxt) : params || _`{}`]\n  )\n  if (opts.messages) {\n    keyValues.push([E.message, typeof message == \"function\" ? message(cxt) : message])\n  }\n  if (opts.verbose) {\n    keyValues.push(\n      [E.schema, schemaValue],\n      [E.parentSchema, _`${topSchemaRef}${schemaPath}`],\n      [N.data, data]\n    )\n  }\n  if (propertyName) keyValues.push([E.propertyName, propertyName])\n}\n", "import type {KeywordErrorDefinition, KeywordErrorCxt} from \"../../types\"\nimport type {SchemaCxt} from \"..\"\nimport {reportError} from \"../errors\"\nimport {_, Name} from \"../codegen\"\nimport N from \"../names\"\n\nconst boolError: KeywordErrorDefinition = {\n  message: \"boolean schema is false\",\n}\n\nexport function topBoolOrEmptySchema(it: SchemaCxt): void {\n  const {gen, schema, validateName} = it\n  if (schema === false) {\n    falseSchemaError(it, false)\n  } else if (typeof schema == \"object\" && schema.$async === true) {\n    gen.return(N.data)\n  } else {\n    gen.assign(_`${validateName}.errors`, null)\n    gen.return(true)\n  }\n}\n\nexport function boolOrEmptySchema(it: SchemaCxt, valid: Name): void {\n  const {gen, schema} = it\n  if (schema === false) {\n    gen.var(valid, false) // TODO var\n    falseSchemaError(it)\n  } else {\n    gen.var(valid, true) // TODO var\n  }\n}\n\nfunction falseSchemaError(it: SchemaCxt, overrideAllErrors?: boolean): void {\n  const {gen, data} = it\n  // TODO maybe some other interface should be used for non-keyword validation errors...\n  const cxt: KeywordErrorCxt = {\n    gen,\n    keyword: \"false schema\",\n    data,\n    schema: false,\n    schemaCode: false,\n    schemaValue: false,\n    params: {},\n    it,\n  }\n  reportError(cxt, boolError, undefined, overrideAllErrors)\n}\n", "import type {AddedKeywordDefinition} from \"../types\"\n\nconst _jsonTypes = [\"string\", \"number\", \"integer\", \"boolean\", \"null\", \"object\", \"array\"] as const\n\nexport type JSONType = (typeof _jsonTypes)[number]\n\nconst jsonTypes: Set<string> = new Set(_jsonTypes)\n\nexport function isJSONType(x: unknown): x is JSONType {\n  return typeof x == \"string\" && jsonTypes.has(x)\n}\n\ntype ValidationTypes = {\n  [K in JSONType]: boolean | RuleGroup | undefined\n}\n\nexport interface ValidationRules {\n  rules: RuleGroup[]\n  post: RuleGroup\n  all: {[Key in string]?: boolean | Rule} // rules that have to be validated\n  keywords: {[Key in string]?: boolean} // all known keywords (superset of \"all\")\n  types: ValidationTypes\n}\n\nexport interface RuleGroup {\n  type?: JSONType\n  rules: Rule[]\n}\n\n// This interface wraps KeywordDefinition because definition can have multiple keywords\nexport interface Rule {\n  keyword: string\n  definition: AddedKeywordDefinition\n}\n\nexport function getRules(): ValidationRules {\n  const groups: Record<\"number\" | \"string\" | \"array\" | \"object\", RuleGroup> = {\n    number: {type: \"number\", rules: []},\n    string: {type: \"string\", rules: []},\n    array: {type: \"array\", rules: []},\n    object: {type: \"object\", rules: []},\n  }\n  return {\n    types: {...groups, integer: true, boolean: true, null: true},\n    rules: [{rules: []}, groups.number, groups.string, groups.array, groups.object],\n    post: {rules: []},\n    all: {},\n    keywords: {},\n  }\n}\n", "import type {AnySchemaObject} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport type {JSONType, RuleGroup, Rule} from \"../rules\"\n\nexport function schemaHasRulesForType(\n  {schema, self}: SchemaObjCxt,\n  type: JSONType\n): boolean | undefined {\n  const group = self.RULES.types[type]\n  return group && group !== true && shouldUseGroup(schema, group)\n}\n\nexport function shouldUseGroup(schema: AnySchemaObject, group: RuleGroup): boolean {\n  return group.rules.some((rule) => shouldUseRule(schema, rule))\n}\n\nexport function shouldUseRule(schema: AnySchemaObject, rule: Rule): boolean | undefined {\n  return (\n    schema[rule.keyword] !== undefined ||\n    rule.definition.implements?.some((kwd) => schema[kwd] !== undefined)\n  )\n}\n", "import type {\n  KeywordErrorDefinition,\n  KeywordErrorCxt,\n  ErrorObject,\n  AnySchemaObject,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {isJSONType, JSONType} from \"../rules\"\nimport {schemaHasRulesForType} from \"./applicability\"\nimport {reportError} from \"../errors\"\nimport {_, nil, and, not, operators, Code, Name} from \"../codegen\"\nimport {toHash, schemaRefOrVal} from \"../util\"\n\nexport enum DataType {\n  Correct,\n  Wrong,\n}\n\nexport function getSchemaTypes(schema: AnySchemaObject): JSONType[] {\n  const types = getJSONTypes(schema.type)\n  const hasNull = types.includes(\"null\")\n  if (hasNull) {\n    if (schema.nullable === false) throw new Error(\"type: null contradicts nullable: false\")\n  } else {\n    if (!types.length && schema.nullable !== undefined) {\n      throw new Error('\"nullable\" cannot be used without \"type\"')\n    }\n    if (schema.nullable === true) types.push(\"null\")\n  }\n  return types\n}\n\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\nexport function getJSONTypes(ts: unknown | unknown[]): JSONType[] {\n  const types: unknown[] = Array.isArray(ts) ? ts : ts ? [ts] : []\n  if (types.every(isJSONType)) return types\n  throw new Error(\"type must be JSONType or JSONType[]: \" + types.join(\",\"))\n}\n\nexport function coerceAndCheckDataType(it: SchemaObjCxt, types: JSONType[]): boolean {\n  const {gen, data, opts} = it\n  const coerceTo = coerceToTypes(types, opts.coerceTypes)\n  const checkTypes =\n    types.length > 0 &&\n    !(coerceTo.length === 0 && types.length === 1 && schemaHasRulesForType(it, types[0]))\n  if (checkTypes) {\n    const wrongType = checkDataTypes(types, data, opts.strictNumbers, DataType.Wrong)\n    gen.if(wrongType, () => {\n      if (coerceTo.length) coerceData(it, types, coerceTo)\n      else reportTypeError(it)\n    })\n  }\n  return checkTypes\n}\n\nconst COERCIBLE: Set<JSONType> = new Set([\"string\", \"number\", \"integer\", \"boolean\", \"null\"])\nfunction coerceToTypes(types: JSONType[], coerceTypes?: boolean | \"array\"): JSONType[] {\n  return coerceTypes\n    ? types.filter((t) => COERCIBLE.has(t) || (coerceTypes === \"array\" && t === \"array\"))\n    : []\n}\n\nfunction coerceData(it: SchemaObjCxt, types: JSONType[], coerceTo: JSONType[]): void {\n  const {gen, data, opts} = it\n  const dataType = gen.let(\"dataType\", _`typeof ${data}`)\n  const coerced = gen.let(\"coerced\", _`undefined`)\n  if (opts.coerceTypes === \"array\") {\n    gen.if(_`${dataType} == 'object' && Array.isArray(${data}) && ${data}.length == 1`, () =>\n      gen\n        .assign(data, _`${data}[0]`)\n        .assign(dataType, _`typeof ${data}`)\n        .if(checkDataTypes(types, data, opts.strictNumbers), () => gen.assign(coerced, data))\n    )\n  }\n  gen.if(_`${coerced} !== undefined`)\n  for (const t of coerceTo) {\n    if (COERCIBLE.has(t) || (t === \"array\" && opts.coerceTypes === \"array\")) {\n      coerceSpecificType(t)\n    }\n  }\n  gen.else()\n  reportTypeError(it)\n  gen.endIf()\n\n  gen.if(_`${coerced} !== undefined`, () => {\n    gen.assign(data, coerced)\n    assignParentData(it, coerced)\n  })\n\n  function coerceSpecificType(t: string): void {\n    switch (t) {\n      case \"string\":\n        gen\n          .elseIf(_`${dataType} == \"number\" || ${dataType} == \"boolean\"`)\n          .assign(coerced, _`\"\" + ${data}`)\n          .elseIf(_`${data} === null`)\n          .assign(coerced, _`\"\"`)\n        return\n      case \"number\":\n        gen\n          .elseIf(\n            _`${dataType} == \"boolean\" || ${data} === null\n              || (${dataType} == \"string\" && ${data} && ${data} == +${data})`\n          )\n          .assign(coerced, _`+${data}`)\n        return\n      case \"integer\":\n        gen\n          .elseIf(\n            _`${dataType} === \"boolean\" || ${data} === null\n              || (${dataType} === \"string\" && ${data} && ${data} == +${data} && !(${data} % 1))`\n          )\n          .assign(coerced, _`+${data}`)\n        return\n      case \"boolean\":\n        gen\n          .elseIf(_`${data} === \"false\" || ${data} === 0 || ${data} === null`)\n          .assign(coerced, false)\n          .elseIf(_`${data} === \"true\" || ${data} === 1`)\n          .assign(coerced, true)\n        return\n      case \"null\":\n        gen.elseIf(_`${data} === \"\" || ${data} === 0 || ${data} === false`)\n        gen.assign(coerced, null)\n        return\n\n      case \"array\":\n        gen\n          .elseIf(\n            _`${dataType} === \"string\" || ${dataType} === \"number\"\n              || ${dataType} === \"boolean\" || ${data} === null`\n          )\n          .assign(coerced, _`[${data}]`)\n    }\n  }\n}\n\nfunction assignParentData({gen, parentData, parentDataProperty}: SchemaObjCxt, expr: Name): void {\n  // TODO use gen.property\n  gen.if(_`${parentData} !== undefined`, () =>\n    gen.assign(_`${parentData}[${parentDataProperty}]`, expr)\n  )\n}\n\nexport function checkDataType(\n  dataType: JSONType,\n  data: Name,\n  strictNums?: boolean | \"log\",\n  correct = DataType.Correct\n): Code {\n  const EQ = correct === DataType.Correct ? operators.EQ : operators.NEQ\n  let cond: Code\n  switch (dataType) {\n    case \"null\":\n      return _`${data} ${EQ} null`\n    case \"array\":\n      cond = _`Array.isArray(${data})`\n      break\n    case \"object\":\n      cond = _`${data} && typeof ${data} == \"object\" && !Array.isArray(${data})`\n      break\n    case \"integer\":\n      cond = numCond(_`!(${data} % 1) && !isNaN(${data})`)\n      break\n    case \"number\":\n      cond = numCond()\n      break\n    default:\n      return _`typeof ${data} ${EQ} ${dataType}`\n  }\n  return correct === DataType.Correct ? cond : not(cond)\n\n  function numCond(_cond: Code = nil): Code {\n    return and(_`typeof ${data} == \"number\"`, _cond, strictNums ? _`isFinite(${data})` : nil)\n  }\n}\n\nexport function checkDataTypes(\n  dataTypes: JSONType[],\n  data: Name,\n  strictNums?: boolean | \"log\",\n  correct?: DataType\n): Code {\n  if (dataTypes.length === 1) {\n    return checkDataType(dataTypes[0], data, strictNums, correct)\n  }\n  let cond: Code\n  const types = toHash(dataTypes)\n  if (types.array && types.object) {\n    const notObj = _`typeof ${data} != \"object\"`\n    cond = types.null ? notObj : _`!${data} || ${notObj}`\n    delete types.null\n    delete types.array\n    delete types.object\n  } else {\n    cond = nil\n  }\n  if (types.number) delete types.integer\n  for (const t in types) cond = and(cond, checkDataType(t as JSONType, data, strictNums, correct))\n  return cond\n}\n\nexport type TypeError = ErrorObject<\"type\", {type: string}>\n\nconst typeError: KeywordErrorDefinition = {\n  message: ({schema}) => `must be ${schema}`,\n  params: ({schema, schemaValue}) =>\n    typeof schema == \"string\" ? _`{type: ${schema}}` : _`{type: ${schemaValue}}`,\n}\n\nexport function reportTypeError(it: SchemaObjCxt): void {\n  const cxt = getTypeErrorContext(it)\n  reportError(cxt, typeError)\n}\n\nfunction getTypeErrorContext(it: SchemaObjCxt): KeywordErrorCxt {\n  const {gen, data, schema} = it\n  const schemaCode = schemaRefOrVal(it, schema, \"type\")\n  return {\n    gen,\n    keyword: \"type\",\n    data,\n    schema: schema.type,\n    schemaCode,\n    schemaValue: schemaCode,\n    parentSchema: schema,\n    params: {},\n    it,\n  }\n}\n", "import type {SchemaObjCxt} from \"..\"\nimport {_, getProperty, stringify} from \"../codegen\"\nimport {checkStrictMode} from \"../util\"\n\nexport function assignDefaults(it: SchemaObjCxt, ty?: string): void {\n  const {properties, items} = it.schema\n  if (ty === \"object\" && properties) {\n    for (const key in properties) {\n      assignDefault(it, key, properties[key].default)\n    }\n  } else if (ty === \"array\" && Array.isArray(items)) {\n    items.forEach((sch, i: number) => assignDefault(it, i, sch.default))\n  }\n}\n\nfunction assignDefault(it: SchemaObjCxt, prop: string | number, defaultValue: unknown): void {\n  const {gen, compositeRule, data, opts} = it\n  if (defaultValue === undefined) return\n  const childData = _`${data}${getProperty(prop)}`\n  if (compositeRule) {\n    checkStrictMode(it, `default is ignored for: ${childData}`)\n    return\n  }\n\n  let condition = _`${childData} === undefined`\n  if (opts.useDefaults === \"empty\") {\n    condition = _`${condition} || ${childData} === null || ${childData} === \"\"`\n  }\n  // `${childData} === undefined` +\n  // (opts.useDefaults === \"empty\" ? ` || ${childData} === null || ${childData} === \"\"` : \"\")\n  gen.if(condition, _`${childData} = ${stringify(defaultValue)}`)\n}\n", "import type {AnySchema, SchemaMap} from \"../types\"\nimport type {SchemaCxt} from \"../compile\"\nimport type {KeywordCxt} from \"../compile/validate\"\nimport {CodeGen, _, and, or, not, nil, strConcat, getProperty, Code, Name} from \"../compile/codegen\"\nimport {alwaysValidSchema, Type} from \"../compile/util\"\nimport N from \"../compile/names\"\nimport {useFunc} from \"../compile/util\"\nexport function checkReportMissingProp(cxt: KeywordCxt, prop: string): void {\n  const {gen, data, it} = cxt\n  gen.if(noPropertyInData(gen, data, prop, it.opts.ownProperties), () => {\n    cxt.setParams({missingProperty: _`${prop}`}, true)\n    cxt.error()\n  })\n}\n\nexport function checkMissingProp(\n  {gen, data, it: {opts}}: KeywordCxt,\n  properties: string[],\n  missing: Name\n): Code {\n  return or(\n    ...properties.map((prop) =>\n      and(noPropertyInData(gen, data, prop, opts.ownProperties), _`${missing} = ${prop}`)\n    )\n  )\n}\n\nexport function reportMissingProp(cxt: KeywordCxt, missing: Name): void {\n  cxt.setParams({missingProperty: missing}, true)\n  cxt.error()\n}\n\nexport function hasPropFunc(gen: CodeGen): Name {\n  return gen.scopeValue(\"func\", {\n    // eslint-disable-next-line @typescript-eslint/unbound-method\n    ref: Object.prototype.hasOwnProperty,\n    code: _`Object.prototype.hasOwnProperty`,\n  })\n}\n\nexport function isOwnProperty(gen: CodeGen, data: Name, property: Name | string): Code {\n  return _`${hasPropFunc(gen)}.call(${data}, ${property})`\n}\n\nexport function propertyInData(\n  gen: CodeGen,\n  data: Name,\n  property: Name | string,\n  ownProperties?: boolean\n): Code {\n  const cond = _`${data}${getProperty(property)} !== undefined`\n  return ownProperties ? _`${cond} && ${isOwnProperty(gen, data, property)}` : cond\n}\n\nexport function noPropertyInData(\n  gen: CodeGen,\n  data: Name,\n  property: Name | string,\n  ownProperties?: boolean\n): Code {\n  const cond = _`${data}${getProperty(property)} === undefined`\n  return ownProperties ? or(cond, not(isOwnProperty(gen, data, property))) : cond\n}\n\nexport function allSchemaProperties(schemaMap?: SchemaMap): string[] {\n  return schemaMap ? Object.keys(schemaMap).filter((p) => p !== \"__proto__\") : []\n}\n\nexport function schemaProperties(it: SchemaCxt, schemaMap: SchemaMap): string[] {\n  return allSchemaProperties(schemaMap).filter(\n    (p) => !alwaysValidSchema(it, schemaMap[p] as AnySchema)\n  )\n}\n\nexport function callValidateCode(\n  {schemaCode, data, it: {gen, topSchemaRef, schemaPath, errorPath}, it}: KeywordCxt,\n  func: Code,\n  context: Code,\n  passSchema?: boolean\n): Code {\n  const dataAndSchema = passSchema ? _`${schemaCode}, ${data}, ${topSchemaRef}${schemaPath}` : data\n  const valCxt: [Name, Code | number][] = [\n    [N.instancePath, strConcat(N.instancePath, errorPath)],\n    [N.parentData, it.parentData],\n    [N.parentDataProperty, it.parentDataProperty],\n    [N.rootData, N.rootData],\n  ]\n  if (it.opts.dynamicRef) valCxt.push([N.dynamicAnchors, N.dynamicAnchors])\n  const args = _`${dataAndSchema}, ${gen.object(...valCxt)}`\n  return context !== nil ? _`${func}.call(${context}, ${args})` : _`${func}(${args})`\n}\n\nconst newRegExp = _`new RegExp`\n\nexport function usePattern({gen, it: {opts}}: KeywordCxt, pattern: string): Name {\n  const u = opts.unicodeRegExp ? \"u\" : \"\"\n  const {regExp} = opts.code\n  const rx = regExp(pattern, u)\n\n  return gen.scopeValue(\"pattern\", {\n    key: rx.toString(),\n    ref: rx,\n    code: _`${regExp.code === \"new RegExp\" ? newRegExp : useFunc(gen, regExp)}(${pattern}, ${u})`,\n  })\n}\n\nexport function validateArray(cxt: KeywordCxt): Name {\n  const {gen, data, keyword, it} = cxt\n  const valid = gen.name(\"valid\")\n  if (it.allErrors) {\n    const validArr = gen.let(\"valid\", true)\n    validateItems(() => gen.assign(validArr, false))\n    return validArr\n  }\n  gen.var(valid, true)\n  validateItems(() => gen.break())\n  return valid\n\n  function validateItems(notValid: () => void): void {\n    const len = gen.const(\"len\", _`${data}.length`)\n    gen.forRange(\"i\", 0, len, (i) => {\n      cxt.subschema(\n        {\n          keyword,\n          dataProp: i,\n          dataPropType: Type.Num,\n        },\n        valid\n      )\n      gen.if(not(valid), notValid)\n    })\n  }\n}\n\nexport function validateUnion(cxt: KeywordCxt): void {\n  const {gen, schema, keyword, it} = cxt\n  /* istanbul ignore if */\n  if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n  const alwaysValid = schema.some((sch: AnySchema) => alwaysValidSchema(it, sch))\n  if (alwaysValid && !it.opts.unevaluated) return\n\n  const valid = gen.let(\"valid\", false)\n  const schValid = gen.name(\"_valid\")\n\n  gen.block(() =>\n    schema.forEach((_sch: AnySchema, i: number) => {\n      const schCxt = cxt.subschema(\n        {\n          keyword,\n          schemaProp: i,\n          compositeRule: true,\n        },\n        schValid\n      )\n      gen.assign(valid, _`${valid} || ${schValid}`)\n      const merged = cxt.mergeValidEvaluated(schCxt, schValid)\n      // can short-circuit if `unevaluatedProperties/Items` not supported (opts.unevaluated !== true)\n      // or if all properties and items were evaluated (it.props === true && it.items === true)\n      if (!merged) gen.if(not(valid))\n    })\n  )\n\n  cxt.result(\n    valid,\n    () => cxt.reset(),\n    () => cxt.error(true)\n  )\n}\n", "import type {KeywordCxt} from \".\"\nimport type {\n  AnySchema,\n  SchemaValidateFunction,\n  AnyValidateFunction,\n  AddedKeywordDefinition,\n  MacroKeywordDefinition,\n  FuncKeywordDefinition,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, nil, not, stringify, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport type {JSONType} from \"../rules\"\nimport {callValidateCode} from \"../../vocabularies/code\"\nimport {extendErrors} from \"../errors\"\n\ntype KeywordCompilationResult = AnySchema | SchemaValidateFunction | AnyValidateFunction\n\nexport function macroKeywordCode(cxt: KeywordCxt, def: MacroKeywordDefinition): void {\n  const {gen, keyword, schema, parentSchema, it} = cxt\n  const macroSchema = def.macro.call(it.self, schema, parentSchema, it)\n  const schemaRef = useKeyword(gen, keyword, macroSchema)\n  if (it.opts.validateSchema !== false) it.self.validateSchema(macroSchema, true)\n\n  const valid = gen.name(\"valid\")\n  cxt.subschema(\n    {\n      schema: macroSchema,\n      schemaPath: nil,\n      errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n      topSchemaRef: schemaRef,\n      compositeRule: true,\n    },\n    valid\n  )\n  cxt.pass(valid, () => cxt.error(true))\n}\n\nexport function funcKeywordCode(cxt: KeywordCxt, def: FuncKeywordDefinition): void {\n  const {gen, keyword, schema, parentSchema, $data, it} = cxt\n  checkAsyncKeyword(it, def)\n  const validate =\n    !$data && def.compile ? def.compile.call(it.self, schema, parentSchema, it) : def.validate\n  const validateRef = useKeyword(gen, keyword, validate)\n  const valid = gen.let(\"valid\")\n  cxt.block$data(valid, validateKeyword)\n  cxt.ok(def.valid ?? valid)\n\n  function validateKeyword(): void {\n    if (def.errors === false) {\n      assignValid()\n      if (def.modifying) modifyData(cxt)\n      reportErrs(() => cxt.error())\n    } else {\n      const ruleErrs = def.async ? validateAsync() : validateSync()\n      if (def.modifying) modifyData(cxt)\n      reportErrs(() => addErrs(cxt, ruleErrs))\n    }\n  }\n\n  function validateAsync(): Name {\n    const ruleErrs = gen.let(\"ruleErrs\", null)\n    gen.try(\n      () => assignValid(_`await `),\n      (e) =>\n        gen.assign(valid, false).if(\n          _`${e} instanceof ${it.ValidationError as Name}`,\n          () => gen.assign(ruleErrs, _`${e}.errors`),\n          () => gen.throw(e)\n        )\n    )\n    return ruleErrs\n  }\n\n  function validateSync(): Code {\n    const validateErrs = _`${validateRef}.errors`\n    gen.assign(validateErrs, null)\n    assignValid(nil)\n    return validateErrs\n  }\n\n  function assignValid(_await: Code = def.async ? _`await ` : nil): void {\n    const passCxt = it.opts.passContext ? N.this : N.self\n    const passSchema = !((\"compile\" in def && !$data) || def.schema === false)\n    gen.assign(\n      valid,\n      _`${_await}${callValidateCode(cxt, validateRef, passCxt, passSchema)}`,\n      def.modifying\n    )\n  }\n\n  function reportErrs(errors: () => void): void {\n    gen.if(not(def.valid ?? valid), errors)\n  }\n}\n\nfunction modifyData(cxt: KeywordCxt): void {\n  const {gen, data, it} = cxt\n  gen.if(it.parentData, () => gen.assign(data, _`${it.parentData}[${it.parentDataProperty}]`))\n}\n\nfunction addErrs(cxt: KeywordCxt, errs: Code): void {\n  const {gen} = cxt\n  gen.if(\n    _`Array.isArray(${errs})`,\n    () => {\n      gen\n        .assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`)\n        .assign(N.errors, _`${N.vErrors}.length`)\n      extendErrors(cxt)\n    },\n    () => cxt.error()\n  )\n}\n\nfunction checkAsyncKeyword({schemaEnv}: SchemaObjCxt, def: FuncKeywordDefinition): void {\n  if (def.async && !schemaEnv.$async) throw new Error(\"async keyword in sync schema\")\n}\n\nfunction useKeyword(gen: CodeGen, keyword: string, result?: KeywordCompilationResult): Name {\n  if (result === undefined) throw new Error(`keyword \"${keyword}\" failed to compile`)\n  return gen.scopeValue(\n    \"keyword\",\n    typeof result == \"function\" ? {ref: result} : {ref: result, code: stringify(result)}\n  )\n}\n\nexport function validSchemaType(\n  schema: unknown,\n  schemaType: JSONType[],\n  allowUndefined = false\n): boolean {\n  // TODO add tests\n  return (\n    !schemaType.length ||\n    schemaType.some((st) =>\n      st === \"array\"\n        ? Array.isArray(schema)\n        : st === \"object\"\n        ? schema && typeof schema == \"object\" && !Array.isArray(schema)\n        : typeof schema == st || (allowUndefined && typeof schema == \"undefined\")\n    )\n  )\n}\n\nexport function validateKeywordUsage(\n  {schema, opts, self, errSchemaPath}: SchemaObjCxt,\n  def: AddedKeywordDefinition,\n  keyword: string\n): void {\n  /* istanbul ignore if */\n  if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) {\n    throw new Error(\"ajv implementation error\")\n  }\n\n  const deps = def.dependencies\n  if (deps?.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) {\n    throw new Error(`parent schema must have dependencies of ${keyword}: ${deps.join(\",\")}`)\n  }\n\n  if (def.validateSchema) {\n    const valid = def.validateSchema(schema[keyword])\n    if (!valid) {\n      const msg =\n        `keyword \"${keyword}\" value is invalid at path \"${errSchemaPath}\": ` +\n        self.errorsText(def.validateSchema.errors)\n      if (opts.validateSchema === \"log\") self.logger.error(msg)\n      else throw new Error(msg)\n    }\n  }\n}\n", "import type {AnySchema} from \"../../types\"\nimport type {SchemaObjCxt} from \"..\"\nimport {_, str, getProperty, Code, Name} from \"../codegen\"\nimport {escapeFragment, getErrorPath, Type} from \"../util\"\nimport type {JSONType} from \"../rules\"\n\nexport interface SubschemaContext {\n  // TODO use Optional? align with SchemCxt property types\n  schema: AnySchema\n  schemaPath: Code\n  errSchemaPath: string\n  topSchemaRef?: Code\n  errorPath?: Code\n  dataLevel?: number\n  dataTypes?: JSONType[]\n  data?: Name\n  parentData?: Name\n  parentDataProperty?: Code | number\n  dataNames?: Name[]\n  dataPathArr?: (Code | number)[]\n  propertyName?: Name\n  jtdDiscriminator?: string\n  jtdMetadata?: boolean\n  compositeRule?: true\n  createErrors?: boolean\n  allErrors?: boolean\n}\n\nexport type SubschemaArgs = Partial<{\n  keyword: string\n  schemaProp: string | number\n  schema: AnySchema\n  schemaPath: Code\n  errSchemaPath: string\n  topSchemaRef: Code\n  data: Name | Code\n  dataProp: Code | string | number\n  dataTypes: JSONType[]\n  definedProperties: Set<string>\n  propertyName: Name\n  dataPropType: Type\n  jtdDiscriminator: string\n  jtdMetadata: boolean\n  compositeRule: true\n  createErrors: boolean\n  allErrors: boolean\n}>\n\nexport function getSubschema(\n  it: SchemaObjCxt,\n  {keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef}: SubschemaArgs\n): SubschemaContext {\n  if (keyword !== undefined && schema !== undefined) {\n    throw new Error('both \"keyword\" and \"schema\" passed, only one allowed')\n  }\n\n  if (keyword !== undefined) {\n    const sch = it.schema[keyword]\n    return schemaProp === undefined\n      ? {\n          schema: sch,\n          schemaPath: _`${it.schemaPath}${getProperty(keyword)}`,\n          errSchemaPath: `${it.errSchemaPath}/${keyword}`,\n        }\n      : {\n          schema: sch[schemaProp],\n          schemaPath: _`${it.schemaPath}${getProperty(keyword)}${getProperty(schemaProp)}`,\n          errSchemaPath: `${it.errSchemaPath}/${keyword}/${escapeFragment(schemaProp)}`,\n        }\n  }\n\n  if (schema !== undefined) {\n    if (schemaPath === undefined || errSchemaPath === undefined || topSchemaRef === undefined) {\n      throw new Error('\"schemaPath\", \"errSchemaPath\" and \"topSchemaRef\" are required with \"schema\"')\n    }\n    return {\n      schema,\n      schemaPath,\n      topSchemaRef,\n      errSchemaPath,\n    }\n  }\n\n  throw new Error('either \"keyword\" or \"schema\" must be passed')\n}\n\nexport function extendSubschemaData(\n  subschema: SubschemaContext,\n  it: SchemaObjCxt,\n  {dataProp, dataPropType: dpType, data, dataTypes, propertyName}: SubschemaArgs\n): void {\n  if (data !== undefined && dataProp !== undefined) {\n    throw new Error('both \"data\" and \"dataProp\" passed, only one allowed')\n  }\n\n  const {gen} = it\n\n  if (dataProp !== undefined) {\n    const {errorPath, dataPathArr, opts} = it\n    const nextData = gen.let(\"data\", _`${it.data}${getProperty(dataProp)}`, true)\n    dataContextProps(nextData)\n    subschema.errorPath = str`${errorPath}${getErrorPath(dataProp, dpType, opts.jsPropertySyntax)}`\n    subschema.parentDataProperty = _`${dataProp}`\n    subschema.dataPathArr = [...dataPathArr, subschema.parentDataProperty]\n  }\n\n  if (data !== undefined) {\n    const nextData = data instanceof Name ? data : gen.let(\"data\", data, true) // replaceable if used once?\n    dataContextProps(nextData)\n    if (propertyName !== undefined) subschema.propertyName = propertyName\n    // TODO something is possibly wrong here with not changing parentDataProperty and not appending dataPathArr\n  }\n\n  if (dataTypes) subschema.dataTypes = dataTypes\n\n  function dataContextProps(_nextData: Name): void {\n    subschema.data = _nextData\n    subschema.dataLevel = it.dataLevel + 1\n    subschema.dataTypes = []\n    it.definedProperties = new Set<string>()\n    subschema.parentData = it.data\n    subschema.dataNames = [...it.dataNames, _nextData]\n  }\n}\n\nexport function extendSubschemaMode(\n  subschema: SubschemaContext,\n  {jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors}: SubschemaArgs\n): void {\n  if (compositeRule !== undefined) subschema.compositeRule = compositeRule\n  if (createErrors !== undefined) subschema.createErrors = createErrors\n  if (allErrors !== undefined) subschema.allErrors = allErrors\n  subschema.jtdDiscriminator = jtdDiscriminator // not inherited\n  subschema.jtdMetadata = jtdMetadata // not inherited\n}\n", "'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n  if (a === b) return true;\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    if (a.constructor !== b.constructor) return false;\n\n    var length, i, keys;\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (!equal(a[i], b[i])) return false;\n      return true;\n    }\n\n\n\n    if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n    if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n    if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) return false;\n\n    for (i = length; i-- !== 0;)\n      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n    for (i = length; i-- !== 0;) {\n      var key = keys[i];\n\n      if (!equal(a[key], b[key])) return false;\n    }\n\n    return true;\n  }\n\n  // true if both NaN, false otherwise\n  return a!==a && b!==b;\n};\n", "'use strict';\n\nvar traverse = module.exports = function (schema, opts, cb) {\n  // Legacy support for v0.3.1 and earlier.\n  if (typeof opts == 'function') {\n    cb = opts;\n    opts = {};\n  }\n\n  cb = opts.cb || cb;\n  var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};\n  var post = cb.post || function() {};\n\n  _traverse(opts, pre, post, schema, '', schema);\n};\n\n\ntraverse.keywords = {\n  additionalItems: true,\n  items: true,\n  contains: true,\n  additionalProperties: true,\n  propertyNames: true,\n  not: true,\n  if: true,\n  then: true,\n  else: true\n};\n\ntraverse.arrayKeywords = {\n  items: true,\n  allOf: true,\n  anyOf: true,\n  oneOf: true\n};\n\ntraverse.propsKeywords = {\n  $defs: true,\n  definitions: true,\n  properties: true,\n  patternProperties: true,\n  dependencies: true\n};\n\ntraverse.skipKeywords = {\n  default: true,\n  enum: true,\n  const: true,\n  required: true,\n  maximum: true,\n  minimum: true,\n  exclusiveMaximum: true,\n  exclusiveMinimum: true,\n  multipleOf: true,\n  maxLength: true,\n  minLength: true,\n  pattern: true,\n  format: true,\n  maxItems: true,\n  minItems: true,\n  uniqueItems: true,\n  maxProperties: true,\n  minProperties: true\n};\n\n\nfunction _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n  if (schema && typeof schema == 'object' && !Array.isArray(schema)) {\n    pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n    for (var key in schema) {\n      var sch = schema[key];\n      if (Array.isArray(sch)) {\n        if (key in traverse.arrayKeywords) {\n          for (var i=0; i<sch.length; i++)\n            _traverse(opts, pre, post, sch[i], jsonPtr + '/' + key + '/' + i, rootSchema, jsonPtr, key, schema, i);\n        }\n      } else if (key in traverse.propsKeywords) {\n        if (sch && typeof sch == 'object') {\n          for (var prop in sch)\n            _traverse(opts, pre, post, sch[prop], jsonPtr + '/' + key + '/' + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop);\n        }\n      } else if (key in traverse.keywords || (opts.allKeys && !(key in traverse.skipKeywords))) {\n        _traverse(opts, pre, post, sch, jsonPtr + '/' + key, rootSchema, jsonPtr, key, schema);\n      }\n    }\n    post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n  }\n}\n\n\nfunction escapeJsonPtr(str) {\n  return str.replace(/~/g, '~0').replace(/\\//g, '~1');\n}\n", "import type {AnySchema, AnySchemaObject, UriResolver} from \"../types\"\nimport type Ajv from \"../ajv\"\nimport type {URIComponent} from \"fast-uri\"\nimport {eachItem} from \"./util\"\nimport * as equal from \"fast-deep-equal\"\nimport * as traverse from \"json-schema-traverse\"\n\n// the hash of local references inside the schema (created by getSchemaRefs), used for inline resolution\nexport type LocalRefs = {[Ref in string]?: AnySchemaObject}\n\n// TODO refactor to use keyword definitions\nconst SIMPLE_INLINED = new Set([\n  \"type\",\n  \"format\",\n  \"pattern\",\n  \"maxLength\",\n  \"minLength\",\n  \"maxProperties\",\n  \"minProperties\",\n  \"maxItems\",\n  \"minItems\",\n  \"maximum\",\n  \"minimum\",\n  \"uniqueItems\",\n  \"multipleOf\",\n  \"required\",\n  \"enum\",\n  \"const\",\n])\n\nexport function inlineRef(schema: AnySchema, limit: boolean | number = true): boolean {\n  if (typeof schema == \"boolean\") return true\n  if (limit === true) return !hasRef(schema)\n  if (!limit) return false\n  return countKeys(schema) <= limit\n}\n\nconst REF_KEYWORDS = new Set([\n  \"$ref\",\n  \"$recursiveRef\",\n  \"$recursiveAnchor\",\n  \"$dynamicRef\",\n  \"$dynamicAnchor\",\n])\n\nfunction hasRef(schema: AnySchemaObject): boolean {\n  for (const key in schema) {\n    if (REF_KEYWORDS.has(key)) return true\n    const sch = schema[key]\n    if (Array.isArray(sch) && sch.some(hasRef)) return true\n    if (typeof sch == \"object\" && hasRef(sch)) return true\n  }\n  return false\n}\n\nfunction countKeys(schema: AnySchemaObject): number {\n  let count = 0\n  for (const key in schema) {\n    if (key === \"$ref\") return Infinity\n    count++\n    if (SIMPLE_INLINED.has(key)) continue\n    if (typeof schema[key] == \"object\") {\n      eachItem(schema[key], (sch) => (count += countKeys(sch)))\n    }\n    if (count === Infinity) return Infinity\n  }\n  return count\n}\n\nexport function getFullPath(resolver: UriResolver, id = \"\", normalize?: boolean): string {\n  if (normalize !== false) id = normalizeId(id)\n  const p = resolver.parse(id)\n  return _getFullPath(resolver, p)\n}\n\nexport function _getFullPath(resolver: UriResolver, p: URIComponent): string {\n  const serialized = resolver.serialize(p)\n  return serialized.split(\"#\")[0] + \"#\"\n}\n\nconst TRAILING_SLASH_HASH = /#\\/?$/\nexport function normalizeId(id: string | undefined): string {\n  return id ? id.replace(TRAILING_SLASH_HASH, \"\") : \"\"\n}\n\nexport function resolveUrl(resolver: UriResolver, baseId: string, id: string): string {\n  id = normalizeId(id)\n  return resolver.resolve(baseId, id)\n}\n\nconst ANCHOR = /^[a-z_][-a-z0-9._]*$/i\n\nexport function getSchemaRefs(this: Ajv, schema: AnySchema, baseId: string): LocalRefs {\n  if (typeof schema == \"boolean\") return {}\n  const {schemaId, uriResolver} = this.opts\n  const schId = normalizeId(schema[schemaId] || baseId)\n  const baseIds: {[JsonPtr in string]?: string} = {\"\": schId}\n  const pathPrefix = getFullPath(uriResolver, schId, false)\n  const localRefs: LocalRefs = {}\n  const schemaRefs: Set<string> = new Set()\n\n  traverse(schema, {allKeys: true}, (sch, jsonPtr, _, parentJsonPtr) => {\n    if (parentJsonPtr === undefined) return\n    const fullPath = pathPrefix + jsonPtr\n    let innerBaseId = baseIds[parentJsonPtr]\n    if (typeof sch[schemaId] == \"string\") innerBaseId = addRef.call(this, sch[schemaId])\n    addAnchor.call(this, sch.$anchor)\n    addAnchor.call(this, sch.$dynamicAnchor)\n    baseIds[jsonPtr] = innerBaseId\n\n    function addRef(this: Ajv, ref: string): string {\n      // eslint-disable-next-line @typescript-eslint/unbound-method\n      const _resolve = this.opts.uriResolver.resolve\n      ref = normalizeId(innerBaseId ? _resolve(innerBaseId, ref) : ref)\n      if (schemaRefs.has(ref)) throw ambiguos(ref)\n      schemaRefs.add(ref)\n      let schOrRef = this.refs[ref]\n      if (typeof schOrRef == \"string\") schOrRef = this.refs[schOrRef]\n      if (typeof schOrRef == \"object\") {\n        checkAmbiguosRef(sch, schOrRef.schema, ref)\n      } else if (ref !== normalizeId(fullPath)) {\n        if (ref[0] === \"#\") {\n          checkAmbiguosRef(sch, localRefs[ref], ref)\n          localRefs[ref] = sch\n        } else {\n          this.refs[ref] = fullPath\n        }\n      }\n      return ref\n    }\n\n    function addAnchor(this: Ajv, anchor: unknown): void {\n      if (typeof anchor == \"string\") {\n        if (!ANCHOR.test(anchor)) throw new Error(`invalid anchor \"${anchor}\"`)\n        addRef.call(this, `#${anchor}`)\n      }\n    }\n  })\n\n  return localRefs\n\n  function checkAmbiguosRef(sch1: AnySchema, sch2: AnySchema | undefined, ref: string): void {\n    if (sch2 !== undefined && !equal(sch1, sch2)) throw ambiguos(ref)\n  }\n\n  function ambiguos(ref: string): Error {\n    return new Error(`reference \"${ref}\" resolves to more than one schema`)\n  }\n}\n", "import type {\n  AddedKeywordDefinition,\n  AnySchema,\n  AnySchemaObject,\n  KeywordErrorCxt,\n  KeywordCxtParams,\n} from \"../../types\"\nimport type {SchemaCxt, SchemaObjCxt} from \"..\"\nimport type {InstanceOptions} from \"../../core\"\nimport {boolOrEmptySchema, topBoolOrEmptySchema} from \"./boolSchema\"\nimport {coerceAndCheckDataType, getSchemaTypes} from \"./dataType\"\nimport {shouldUseGroup, shouldUseRule} from \"./applicability\"\nimport {checkDataType, checkDataTypes, reportTypeError, DataType} from \"./dataType\"\nimport {assignDefaults} from \"./defaults\"\nimport {funcKeywordCode, macroKeywordCode, validateKeywordUsage, validSchemaType} from \"./keyword\"\nimport {getSubschema, extendSubschemaData, SubschemaArgs, extendSubschemaMode} from \"./subschema\"\nimport {_, nil, str, or, not, getProperty, Block, Code, Name, CodeGen} from \"../codegen\"\nimport N from \"../names\"\nimport {resolveUrl} from \"../resolve\"\nimport {\n  schemaRefOrVal,\n  schemaHasRulesButRef,\n  checkUnknownRules,\n  checkStrictMode,\n  unescapeJsonPointer,\n  mergeEvaluated,\n} from \"../util\"\nimport type {JSONType, Rule, RuleGroup} from \"../rules\"\nimport {\n  ErrorPaths,\n  reportError,\n  reportExtraError,\n  resetErrorsCount,\n  keyword$DataError,\n} from \"../errors\"\n\n// schema compilation - generates validation function, subschemaCode (below) is used for subschemas\nexport function validateFunctionCode(it: SchemaCxt): void {\n  if (isSchemaObj(it)) {\n    checkKeywords(it)\n    if (schemaCxtHasRules(it)) {\n      topSchemaObjCode(it)\n      return\n    }\n  }\n  validateFunction(it, () => topBoolOrEmptySchema(it))\n}\n\nfunction validateFunction(\n  {gen, validateName, schema, schemaEnv, opts}: SchemaCxt,\n  body: Block\n): void {\n  if (opts.code.es5) {\n    gen.func(validateName, _`${N.data}, ${N.valCxt}`, schemaEnv.$async, () => {\n      gen.code(_`\"use strict\"; ${funcSourceUrl(schema, opts)}`)\n      destructureValCxtES5(gen, opts)\n      gen.code(body)\n    })\n  } else {\n    gen.func(validateName, _`${N.data}, ${destructureValCxt(opts)}`, schemaEnv.$async, () =>\n      gen.code(funcSourceUrl(schema, opts)).code(body)\n    )\n  }\n}\n\nfunction destructureValCxt(opts: InstanceOptions): Code {\n  return _`{${N.instancePath}=\"\", ${N.parentData}, ${N.parentDataProperty}, ${N.rootData}=${\n    N.data\n  }${opts.dynamicRef ? _`, ${N.dynamicAnchors}={}` : nil}}={}`\n}\n\nfunction destructureValCxtES5(gen: CodeGen, opts: InstanceOptions): void {\n  gen.if(\n    N.valCxt,\n    () => {\n      gen.var(N.instancePath, _`${N.valCxt}.${N.instancePath}`)\n      gen.var(N.parentData, _`${N.valCxt}.${N.parentData}`)\n      gen.var(N.parentDataProperty, _`${N.valCxt}.${N.parentDataProperty}`)\n      gen.var(N.rootData, _`${N.valCxt}.${N.rootData}`)\n      if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`${N.valCxt}.${N.dynamicAnchors}`)\n    },\n    () => {\n      gen.var(N.instancePath, _`\"\"`)\n      gen.var(N.parentData, _`undefined`)\n      gen.var(N.parentDataProperty, _`undefined`)\n      gen.var(N.rootData, N.data)\n      if (opts.dynamicRef) gen.var(N.dynamicAnchors, _`{}`)\n    }\n  )\n}\n\nfunction topSchemaObjCode(it: SchemaObjCxt): void {\n  const {schema, opts, gen} = it\n  validateFunction(it, () => {\n    if (opts.$comment && schema.$comment) commentKeyword(it)\n    checkNoDefault(it)\n    gen.let(N.vErrors, null)\n    gen.let(N.errors, 0)\n    if (opts.unevaluated) resetEvaluated(it)\n    typeAndKeywords(it)\n    returnResults(it)\n  })\n  return\n}\n\nfunction resetEvaluated(it: SchemaObjCxt): void {\n  // TODO maybe some hook to execute it in the end to check whether props/items are Name, as in assignEvaluated\n  const {gen, validateName} = it\n  it.evaluated = gen.const(\"evaluated\", _`${validateName}.evaluated`)\n  gen.if(_`${it.evaluated}.dynamicProps`, () => gen.assign(_`${it.evaluated}.props`, _`undefined`))\n  gen.if(_`${it.evaluated}.dynamicItems`, () => gen.assign(_`${it.evaluated}.items`, _`undefined`))\n}\n\nfunction funcSourceUrl(schema: AnySchema, opts: InstanceOptions): Code {\n  const schId = typeof schema == \"object\" && schema[opts.schemaId]\n  return schId && (opts.code.source || opts.code.process) ? _`/*# sourceURL=${schId} */` : nil\n}\n\n// schema compilation - this function is used recursively to generate code for sub-schemas\nfunction subschemaCode(it: SchemaCxt, valid: Name): void {\n  if (isSchemaObj(it)) {\n    checkKeywords(it)\n    if (schemaCxtHasRules(it)) {\n      subSchemaObjCode(it, valid)\n      return\n    }\n  }\n  boolOrEmptySchema(it, valid)\n}\n\nfunction schemaCxtHasRules({schema, self}: SchemaCxt): boolean {\n  if (typeof schema == \"boolean\") return !schema\n  for (const key in schema) if (self.RULES.all[key]) return true\n  return false\n}\n\nfunction isSchemaObj(it: SchemaCxt): it is SchemaObjCxt {\n  return typeof it.schema != \"boolean\"\n}\n\nfunction subSchemaObjCode(it: SchemaObjCxt, valid: Name): void {\n  const {schema, gen, opts} = it\n  if (opts.$comment && schema.$comment) commentKeyword(it)\n  updateContext(it)\n  checkAsyncSchema(it)\n  const errsCount = gen.const(\"_errs\", N.errors)\n  typeAndKeywords(it, errsCount)\n  // TODO var\n  gen.var(valid, _`${errsCount} === ${N.errors}`)\n}\n\nfunction checkKeywords(it: SchemaObjCxt): void {\n  checkUnknownRules(it)\n  checkRefsAndKeywords(it)\n}\n\nfunction typeAndKeywords(it: SchemaObjCxt, errsCount?: Name): void {\n  if (it.opts.jtd) return schemaKeywords(it, [], false, errsCount)\n  const types = getSchemaTypes(it.schema)\n  const checkedTypes = coerceAndCheckDataType(it, types)\n  schemaKeywords(it, types, !checkedTypes, errsCount)\n}\n\nfunction checkRefsAndKeywords(it: SchemaObjCxt): void {\n  const {schema, errSchemaPath, opts, self} = it\n  if (schema.$ref && opts.ignoreKeywordsWithRef && schemaHasRulesButRef(schema, self.RULES)) {\n    self.logger.warn(`$ref: keywords ignored in schema at path \"${errSchemaPath}\"`)\n  }\n}\n\nfunction checkNoDefault(it: SchemaObjCxt): void {\n  const {schema, opts} = it\n  if (schema.default !== undefined && opts.useDefaults && opts.strictSchema) {\n    checkStrictMode(it, \"default is ignored in the schema root\")\n  }\n}\n\nfunction updateContext(it: SchemaObjCxt): void {\n  const schId = it.schema[it.opts.schemaId]\n  if (schId) it.baseId = resolveUrl(it.opts.uriResolver, it.baseId, schId)\n}\n\nfunction checkAsyncSchema(it: SchemaObjCxt): void {\n  if (it.schema.$async && !it.schemaEnv.$async) throw new Error(\"async schema in sync schema\")\n}\n\nfunction commentKeyword({gen, schemaEnv, schema, errSchemaPath, opts}: SchemaObjCxt): void {\n  const msg = schema.$comment\n  if (opts.$comment === true) {\n    gen.code(_`${N.self}.logger.log(${msg})`)\n  } else if (typeof opts.$comment == \"function\") {\n    const schemaPath = str`${errSchemaPath}/$comment`\n    const rootName = gen.scopeValue(\"root\", {ref: schemaEnv.root})\n    gen.code(_`${N.self}.opts.$comment(${msg}, ${schemaPath}, ${rootName}.schema)`)\n  }\n}\n\nfunction returnResults(it: SchemaCxt): void {\n  const {gen, schemaEnv, validateName, ValidationError, opts} = it\n  if (schemaEnv.$async) {\n    // TODO assign unevaluated\n    gen.if(\n      _`${N.errors} === 0`,\n      () => gen.return(N.data),\n      () => gen.throw(_`new ${ValidationError as Name}(${N.vErrors})`)\n    )\n  } else {\n    gen.assign(_`${validateName}.errors`, N.vErrors)\n    if (opts.unevaluated) assignEvaluated(it)\n    gen.return(_`${N.errors} === 0`)\n  }\n}\n\nfunction assignEvaluated({gen, evaluated, props, items}: SchemaCxt): void {\n  if (props instanceof Name) gen.assign(_`${evaluated}.props`, props)\n  if (items instanceof Name) gen.assign(_`${evaluated}.items`, items)\n}\n\nfunction schemaKeywords(\n  it: SchemaObjCxt,\n  types: JSONType[],\n  typeErrors: boolean,\n  errsCount?: Name\n): void {\n  const {gen, schema, data, allErrors, opts, self} = it\n  const {RULES} = self\n  if (schema.$ref && (opts.ignoreKeywordsWithRef || !schemaHasRulesButRef(schema, RULES))) {\n    gen.block(() => keywordCode(it, \"$ref\", (RULES.all.$ref as Rule).definition)) // TODO typecast\n    return\n  }\n  if (!opts.jtd) checkStrictTypes(it, types)\n  gen.block(() => {\n    for (const group of RULES.rules) groupKeywords(group)\n    groupKeywords(RULES.post)\n  })\n\n  function groupKeywords(group: RuleGroup): void {\n    if (!shouldUseGroup(schema, group)) return\n    if (group.type) {\n      gen.if(checkDataType(group.type, data, opts.strictNumbers))\n      iterateKeywords(it, group)\n      if (types.length === 1 && types[0] === group.type && typeErrors) {\n        gen.else()\n        reportTypeError(it)\n      }\n      gen.endIf()\n    } else {\n      iterateKeywords(it, group)\n    }\n    // TODO make it \"ok\" call?\n    if (!allErrors) gen.if(_`${N.errors} === ${errsCount || 0}`)\n  }\n}\n\nfunction iterateKeywords(it: SchemaObjCxt, group: RuleGroup): void {\n  const {\n    gen,\n    schema,\n    opts: {useDefaults},\n  } = it\n  if (useDefaults) assignDefaults(it, group.type)\n  gen.block(() => {\n    for (const rule of group.rules) {\n      if (shouldUseRule(schema, rule)) {\n        keywordCode(it, rule.keyword, rule.definition, group.type)\n      }\n    }\n  })\n}\n\nfunction checkStrictTypes(it: SchemaObjCxt, types: JSONType[]): void {\n  if (it.schemaEnv.meta || !it.opts.strictTypes) return\n  checkContextTypes(it, types)\n  if (!it.opts.allowUnionTypes) checkMultipleTypes(it, types)\n  checkKeywordTypes(it, it.dataTypes)\n}\n\nfunction checkContextTypes(it: SchemaObjCxt, types: JSONType[]): void {\n  if (!types.length) return\n  if (!it.dataTypes.length) {\n    it.dataTypes = types\n    return\n  }\n  types.forEach((t) => {\n    if (!includesType(it.dataTypes, t)) {\n      strictTypesError(it, `type \"${t}\" not allowed by context \"${it.dataTypes.join(\",\")}\"`)\n    }\n  })\n  narrowSchemaTypes(it, types)\n}\n\nfunction checkMultipleTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n  if (ts.length > 1 && !(ts.length === 2 && ts.includes(\"null\"))) {\n    strictTypesError(it, \"use allowUnionTypes to allow union type keyword\")\n  }\n}\n\nfunction checkKeywordTypes(it: SchemaObjCxt, ts: JSONType[]): void {\n  const rules = it.self.RULES.all\n  for (const keyword in rules) {\n    const rule = rules[keyword]\n    if (typeof rule == \"object\" && shouldUseRule(it.schema, rule)) {\n      const {type} = rule.definition\n      if (type.length && !type.some((t) => hasApplicableType(ts, t))) {\n        strictTypesError(it, `missing type \"${type.join(\",\")}\" for keyword \"${keyword}\"`)\n      }\n    }\n  }\n}\n\nfunction hasApplicableType(schTs: JSONType[], kwdT: JSONType): boolean {\n  return schTs.includes(kwdT) || (kwdT === \"number\" && schTs.includes(\"integer\"))\n}\n\nfunction includesType(ts: JSONType[], t: JSONType): boolean {\n  return ts.includes(t) || (t === \"integer\" && ts.includes(\"number\"))\n}\n\nfunction narrowSchemaTypes(it: SchemaObjCxt, withTypes: JSONType[]): void {\n  const ts: JSONType[] = []\n  for (const t of it.dataTypes) {\n    if (includesType(withTypes, t)) ts.push(t)\n    else if (withTypes.includes(\"integer\") && t === \"number\") ts.push(\"integer\")\n  }\n  it.dataTypes = ts\n}\n\nfunction strictTypesError(it: SchemaObjCxt, msg: string): void {\n  const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n  msg += ` at \"${schemaPath}\" (strictTypes)`\n  checkStrictMode(it, msg, it.opts.strictTypes)\n}\n\nexport class KeywordCxt implements KeywordErrorCxt {\n  readonly gen: CodeGen\n  readonly allErrors?: boolean\n  readonly keyword: string\n  readonly data: Name // Name referencing the current level of the data instance\n  readonly $data?: string | false\n  schema: any // keyword value in the schema\n  readonly schemaValue: Code | number | boolean // Code reference to keyword schema value or primitive value\n  readonly schemaCode: Code | number | boolean // Code reference to resolved schema value (different if schema is $data)\n  readonly schemaType: JSONType[] // allowed type(s) of keyword value in the schema\n  readonly parentSchema: AnySchemaObject\n  readonly errsCount?: Name // Name reference to the number of validation errors collected before this keyword,\n  // requires option trackErrors in keyword definition\n  params: KeywordCxtParams // object to pass parameters to error messages from keyword code\n  readonly it: SchemaObjCxt // schema compilation context (schema is guaranteed to be an object, not boolean)\n  readonly def: AddedKeywordDefinition\n\n  constructor(it: SchemaObjCxt, def: AddedKeywordDefinition, keyword: string) {\n    validateKeywordUsage(it, def, keyword)\n    this.gen = it.gen\n    this.allErrors = it.allErrors\n    this.keyword = keyword\n    this.data = it.data\n    this.schema = it.schema[keyword]\n    this.$data = def.$data && it.opts.$data && this.schema && this.schema.$data\n    this.schemaValue = schemaRefOrVal(it, this.schema, keyword, this.$data)\n    this.schemaType = def.schemaType\n    this.parentSchema = it.schema\n    this.params = {}\n    this.it = it\n    this.def = def\n\n    if (this.$data) {\n      this.schemaCode = it.gen.const(\"vSchema\", getData(this.$data, it))\n    } else {\n      this.schemaCode = this.schemaValue\n      if (!validSchemaType(this.schema, def.schemaType, def.allowUndefined)) {\n        throw new Error(`${keyword} value must be ${JSON.stringify(def.schemaType)}`)\n      }\n    }\n\n    if (\"code\" in def ? def.trackErrors : def.errors !== false) {\n      this.errsCount = it.gen.const(\"_errs\", N.errors)\n    }\n  }\n\n  result(condition: Code, successAction?: () => void, failAction?: () => void): void {\n    this.failResult(not(condition), successAction, failAction)\n  }\n\n  failResult(condition: Code, successAction?: () => void, failAction?: () => void): void {\n    this.gen.if(condition)\n    if (failAction) failAction()\n    else this.error()\n    if (successAction) {\n      this.gen.else()\n      successAction()\n      if (this.allErrors) this.gen.endIf()\n    } else {\n      if (this.allErrors) this.gen.endIf()\n      else this.gen.else()\n    }\n  }\n\n  pass(condition: Code, failAction?: () => void): void {\n    this.failResult(not(condition), undefined, failAction)\n  }\n\n  fail(condition?: Code): void {\n    if (condition === undefined) {\n      this.error()\n      if (!this.allErrors) this.gen.if(false) // this branch will be removed by gen.optimize\n      return\n    }\n    this.gen.if(condition)\n    this.error()\n    if (this.allErrors) this.gen.endIf()\n    else this.gen.else()\n  }\n\n  fail$data(condition: Code): void {\n    if (!this.$data) return this.fail(condition)\n    const {schemaCode} = this\n    this.fail(_`${schemaCode} !== undefined && (${or(this.invalid$data(), condition)})`)\n  }\n\n  error(append?: boolean, errorParams?: KeywordCxtParams, errorPaths?: ErrorPaths): void {\n    if (errorParams) {\n      this.setParams(errorParams)\n      this._error(append, errorPaths)\n      this.setParams({})\n      return\n    }\n    this._error(append, errorPaths)\n  }\n\n  private _error(append?: boolean, errorPaths?: ErrorPaths): void {\n    ;(append ? reportExtraError : reportError)(this, this.def.error, errorPaths)\n  }\n\n  $dataError(): void {\n    reportError(this, this.def.$dataError || keyword$DataError)\n  }\n\n  reset(): void {\n    if (this.errsCount === undefined) throw new Error('add \"trackErrors\" to keyword definition')\n    resetErrorsCount(this.gen, this.errsCount)\n  }\n\n  ok(cond: Code | boolean): void {\n    if (!this.allErrors) this.gen.if(cond)\n  }\n\n  setParams(obj: KeywordCxtParams, assign?: true): void {\n    if (assign) Object.assign(this.params, obj)\n    else this.params = obj\n  }\n\n  block$data(valid: Name, codeBlock: () => void, $dataValid: Code = nil): void {\n    this.gen.block(() => {\n      this.check$data(valid, $dataValid)\n      codeBlock()\n    })\n  }\n\n  check$data(valid: Name = nil, $dataValid: Code = nil): void {\n    if (!this.$data) return\n    const {gen, schemaCode, schemaType, def} = this\n    gen.if(or(_`${schemaCode} === undefined`, $dataValid))\n    if (valid !== nil) gen.assign(valid, true)\n    if (schemaType.length || def.validateSchema) {\n      gen.elseIf(this.invalid$data())\n      this.$dataError()\n      if (valid !== nil) gen.assign(valid, false)\n    }\n    gen.else()\n  }\n\n  invalid$data(): Code {\n    const {gen, schemaCode, schemaType, def, it} = this\n    return or(wrong$DataType(), invalid$DataSchema())\n\n    function wrong$DataType(): Code {\n      if (schemaType.length) {\n        /* istanbul ignore if */\n        if (!(schemaCode instanceof Name)) throw new Error(\"ajv implementation error\")\n        const st = Array.isArray(schemaType) ? schemaType : [schemaType]\n        return _`${checkDataTypes(st, schemaCode, it.opts.strictNumbers, DataType.Wrong)}`\n      }\n      return nil\n    }\n\n    function invalid$DataSchema(): Code {\n      if (def.validateSchema) {\n        const validateSchemaRef = gen.scopeValue(\"validate$data\", {ref: def.validateSchema}) // TODO value.code for standalone\n        return _`!${validateSchemaRef}(${schemaCode})`\n      }\n      return nil\n    }\n  }\n\n  subschema(appl: SubschemaArgs, valid: Name): SchemaCxt {\n    const subschema = getSubschema(this.it, appl)\n    extendSubschemaData(subschema, this.it, appl)\n    extendSubschemaMode(subschema, appl)\n    const nextContext = {...this.it, ...subschema, items: undefined, props: undefined}\n    subschemaCode(nextContext, valid)\n    return nextContext\n  }\n\n  mergeEvaluated(schemaCxt: SchemaCxt, toName?: typeof Name): void {\n    const {it, gen} = this\n    if (!it.opts.unevaluated) return\n    if (it.props !== true && schemaCxt.props !== undefined) {\n      it.props = mergeEvaluated.props(gen, schemaCxt.props, it.props, toName)\n    }\n    if (it.items !== true && schemaCxt.items !== undefined) {\n      it.items = mergeEvaluated.items(gen, schemaCxt.items, it.items, toName)\n    }\n  }\n\n  mergeValidEvaluated(schemaCxt: SchemaCxt, valid: Name): boolean | void {\n    const {it, gen} = this\n    if (it.opts.unevaluated && (it.props !== true || it.items !== true)) {\n      gen.if(valid, () => this.mergeEvaluated(schemaCxt, Name))\n      return true\n    }\n  }\n}\n\nfunction keywordCode(\n  it: SchemaObjCxt,\n  keyword: string,\n  def: AddedKeywordDefinition,\n  ruleType?: JSONType\n): void {\n  const cxt = new KeywordCxt(it, def, keyword)\n  if (\"code\" in def) {\n    def.code(cxt, ruleType)\n  } else if (cxt.$data && def.validate) {\n    funcKeywordCode(cxt, def)\n  } else if (\"macro\" in def) {\n    macroKeywordCode(cxt, def)\n  } else if (def.compile || def.validate) {\n    funcKeywordCode(cxt, def)\n  }\n}\n\nconst JSON_POINTER = /^\\/(?:[^~]|~0|~1)*$/\nconst RELATIVE_JSON_POINTER = /^([0-9]+)(#|\\/(?:[^~]|~0|~1)*)?$/\nexport function getData(\n  $data: string,\n  {dataLevel, dataNames, dataPathArr}: SchemaCxt\n): Code | number {\n  let jsonPointer\n  let data: Code\n  if ($data === \"\") return N.rootData\n  if ($data[0] === \"/\") {\n    if (!JSON_POINTER.test($data)) throw new Error(`Invalid JSON-pointer: ${$data}`)\n    jsonPointer = $data\n    data = N.rootData\n  } else {\n    const matches = RELATIVE_JSON_POINTER.exec($data)\n    if (!matches) throw new Error(`Invalid JSON-pointer: ${$data}`)\n    const up: number = +matches[1]\n    jsonPointer = matches[2]\n    if (jsonPointer === \"#\") {\n      if (up >= dataLevel) throw new Error(errorMsg(\"property/index\", up))\n      return dataPathArr[dataLevel - up]\n    }\n    if (up > dataLevel) throw new Error(errorMsg(\"data\", up))\n    data = dataNames[dataLevel - up]\n    if (!jsonPointer) return data\n  }\n\n  let expr = data\n  const segments = jsonPointer.split(\"/\")\n  for (const segment of segments) {\n    if (segment) {\n      data = _`${data}${getProperty(unescapeJsonPointer(segment))}`\n      expr = _`${expr} && ${data}`\n    }\n  }\n  return expr\n\n  function errorMsg(pointerType: string, up: number): string {\n    return `Cannot access ${pointerType} ${up} levels up, current level is ${dataLevel}`\n  }\n}\n", "import type {ErrorObject} from \"../types\"\n\nexport default class ValidationError extends Error {\n  readonly errors: Partial<ErrorObject>[]\n  readonly ajv: true\n  readonly validation: true\n\n  constructor(errors: Partial<ErrorObject>[]) {\n    super(\"validation failed\")\n    this.errors = errors\n    this.ajv = this.validation = true\n  }\n}\n", "import {resolveUrl, normalizeId, getFullPath} from \"./resolve\"\nimport type {UriResolver} from \"../types\"\n\nexport default class MissingRefError extends Error {\n  readonly missingRef: string\n  readonly missingSchema: string\n\n  constructor(resolver: UriResolver, baseId: string, ref: string, msg?: string) {\n    super(msg || `can't resolve reference ${ref} from id ${baseId}`)\n    this.missingRef = resolveUrl(resolver, baseId, ref)\n    this.missingSchema = normalizeId(getFullPath(resolver, this.missingRef))\n  }\n}\n", "import type {\n  AnySchema,\n  AnySchemaObject,\n  AnyValidateFunction,\n  AsyncValidateFunction,\n  EvaluatedProperties,\n  EvaluatedItems,\n} from \"../types\"\nimport type Ajv from \"../core\"\nimport type {InstanceOptions} from \"../core\"\nimport {CodeGen, _, nil, stringify, Name, Code, ValueScopeName} from \"./codegen\"\nimport ValidationError from \"../runtime/validation_error\"\nimport N from \"./names\"\nimport {LocalRefs, getFullPath, _getFullPath, inlineRef, normalizeId, resolveUrl} from \"./resolve\"\nimport {schemaHasRulesButRef, unescapeFragment} from \"./util\"\nimport {validateFunctionCode} from \"./validate\"\nimport {URIComponent} from \"fast-uri\"\nimport {JSONType} from \"./rules\"\n\nexport type SchemaRefs = {\n  [Ref in string]?: SchemaEnv | AnySchema\n}\n\nexport interface SchemaCxt {\n  readonly gen: CodeGen\n  readonly allErrors?: boolean // validation mode - whether to collect all errors or break on error\n  readonly data: Name // Name with reference to the current part of data instance\n  readonly parentData: Name // should be used in keywords modifying data\n  readonly parentDataProperty: Code | number // should be used in keywords modifying data\n  readonly dataNames: Name[]\n  readonly dataPathArr: (Code | number)[]\n  readonly dataLevel: number // the level of the currently validated data,\n  // it can be used to access both the property names and the data on all levels from the top.\n  dataTypes: JSONType[] // data types applied to the current part of data instance\n  definedProperties: Set<string> // set of properties to keep track of for required checks\n  readonly topSchemaRef: Code\n  readonly validateName: Name\n  evaluated?: Name\n  readonly ValidationError?: Name\n  readonly schema: AnySchema // current schema object - equal to parentSchema passed via KeywordCxt\n  readonly schemaEnv: SchemaEnv\n  readonly rootId: string\n  baseId: string // the current schema base URI that should be used as the base for resolving URIs in references (\\$ref)\n  readonly schemaPath: Code // the run-time expression that evaluates to the property name of the current schema\n  readonly errSchemaPath: string // this is actual string, should not be changed to Code\n  readonly errorPath: Code\n  readonly propertyName?: Name\n  readonly compositeRule?: boolean // true indicates that the current schema is inside the compound keyword,\n  // where failing some rule doesn't mean validation failure (`anyOf`, `oneOf`, `not`, `if`).\n  // This flag is used to determine whether you can return validation result immediately after any error in case the option `allErrors` is not `true.\n  // You only need to use it if you have many steps in your keywords and potentially can define multiple errors.\n  props?: EvaluatedProperties | Name // properties evaluated by this schema - used by parent schema or assigned to validation function\n  items?: EvaluatedItems | Name // last item evaluated by this schema - used by parent schema or assigned to validation function\n  jtdDiscriminator?: string\n  jtdMetadata?: boolean\n  readonly createErrors?: boolean\n  readonly opts: InstanceOptions // Ajv instance option.\n  readonly self: Ajv // current Ajv instance\n}\n\nexport interface SchemaObjCxt extends SchemaCxt {\n  readonly schema: AnySchemaObject\n}\ninterface SchemaEnvArgs {\n  readonly schema: AnySchema\n  readonly schemaId?: \"$id\" | \"id\"\n  readonly root?: SchemaEnv\n  readonly baseId?: string\n  readonly schemaPath?: string\n  readonly localRefs?: LocalRefs\n  readonly meta?: boolean\n}\n\nexport class SchemaEnv implements SchemaEnvArgs {\n  readonly schema: AnySchema\n  readonly schemaId?: \"$id\" | \"id\"\n  readonly root: SchemaEnv\n  baseId: string // TODO possibly, it should be readonly\n  schemaPath?: string\n  localRefs?: LocalRefs\n  readonly meta?: boolean\n  readonly $async?: boolean // true if the current schema is asynchronous.\n  readonly refs: SchemaRefs = {}\n  readonly dynamicAnchors: {[Ref in string]?: true} = {}\n  validate?: AnyValidateFunction\n  validateName?: ValueScopeName\n  serialize?: (data: unknown) => string\n  serializeName?: ValueScopeName\n  parse?: (data: string) => unknown\n  parseName?: ValueScopeName\n\n  constructor(env: SchemaEnvArgs) {\n    let schema: AnySchemaObject | undefined\n    if (typeof env.schema == \"object\") schema = env.schema\n    this.schema = env.schema\n    this.schemaId = env.schemaId\n    this.root = env.root || this\n    this.baseId = env.baseId ?? normalizeId(schema?.[env.schemaId || \"$id\"])\n    this.schemaPath = env.schemaPath\n    this.localRefs = env.localRefs\n    this.meta = env.meta\n    this.$async = schema?.$async\n    this.refs = {}\n  }\n}\n\n// let codeSize = 0\n// let nodeCount = 0\n\n// Compiles schema in SchemaEnv\nexport function compileSchema(this: Ajv, sch: SchemaEnv): SchemaEnv {\n  // TODO refactor - remove compilations\n  const _sch = getCompilingSchema.call(this, sch)\n  if (_sch) return _sch\n  const rootId = getFullPath(this.opts.uriResolver, sch.root.baseId) // TODO if getFullPath removed 1 tests fails\n  const {es5, lines} = this.opts.code\n  const {ownProperties} = this.opts\n  const gen = new CodeGen(this.scope, {es5, lines, ownProperties})\n  let _ValidationError\n  if (sch.$async) {\n    _ValidationError = gen.scopeValue(\"Error\", {\n      ref: ValidationError,\n      code: _`require(\"ajv/dist/runtime/validation_error\").default`,\n    })\n  }\n\n  const validateName = gen.scopeName(\"validate\")\n  sch.validateName = validateName\n\n  const schemaCxt: SchemaCxt = {\n    gen,\n    allErrors: this.opts.allErrors,\n    data: N.data,\n    parentData: N.parentData,\n    parentDataProperty: N.parentDataProperty,\n    dataNames: [N.data],\n    dataPathArr: [nil], // TODO can its length be used as dataLevel if nil is removed?\n    dataLevel: 0,\n    dataTypes: [],\n    definedProperties: new Set<string>(),\n    topSchemaRef: gen.scopeValue(\n      \"schema\",\n      this.opts.code.source === true\n        ? {ref: sch.schema, code: stringify(sch.schema)}\n        : {ref: sch.schema}\n    ),\n    validateName,\n    ValidationError: _ValidationError,\n    schema: sch.schema,\n    schemaEnv: sch,\n    rootId,\n    baseId: sch.baseId || rootId,\n    schemaPath: nil,\n    errSchemaPath: sch.schemaPath || (this.opts.jtd ? \"\" : \"#\"),\n    errorPath: _`\"\"`,\n    opts: this.opts,\n    self: this,\n  }\n\n  let sourceCode: string | undefined\n  try {\n    this._compilations.add(sch)\n    validateFunctionCode(schemaCxt)\n    gen.optimize(this.opts.code.optimize)\n    // gen.optimize(1)\n    const validateCode = gen.toString()\n    sourceCode = `${gen.scopeRefs(N.scope)}return ${validateCode}`\n    // console.log((codeSize += sourceCode.length), (nodeCount += gen.nodeCount))\n    if (this.opts.code.process) sourceCode = this.opts.code.process(sourceCode, sch)\n    // console.log(\"\\n\\n\\n *** \\n\", sourceCode)\n    const makeValidate = new Function(`${N.self}`, `${N.scope}`, sourceCode)\n    const validate: AnyValidateFunction = makeValidate(this, this.scope.get())\n    this.scope.value(validateName, {ref: validate})\n\n    validate.errors = null\n    validate.schema = sch.schema\n    validate.schemaEnv = sch\n    if (sch.$async) (validate as AsyncValidateFunction).$async = true\n    if (this.opts.code.source === true) {\n      validate.source = {validateName, validateCode, scopeValues: gen._values}\n    }\n    if (this.opts.unevaluated) {\n      const {props, items} = schemaCxt\n      validate.evaluated = {\n        props: props instanceof Name ? undefined : props,\n        items: items instanceof Name ? undefined : items,\n        dynamicProps: props instanceof Name,\n        dynamicItems: items instanceof Name,\n      }\n      if (validate.source) validate.source.evaluated = stringify(validate.evaluated)\n    }\n    sch.validate = validate\n    return sch\n  } catch (e) {\n    delete sch.validate\n    delete sch.validateName\n    if (sourceCode) this.logger.error(\"Error compiling schema, function code:\", sourceCode)\n    // console.log(\"\\n\\n\\n *** \\n\", sourceCode, this.opts)\n    throw e\n  } finally {\n    this._compilations.delete(sch)\n  }\n}\n\nexport function resolveRef(\n  this: Ajv,\n  root: SchemaEnv,\n  baseId: string,\n  ref: string\n): AnySchema | SchemaEnv | undefined {\n  ref = resolveUrl(this.opts.uriResolver, baseId, ref)\n  const schOrFunc = root.refs[ref]\n  if (schOrFunc) return schOrFunc\n\n  let _sch = resolve.call(this, root, ref)\n  if (_sch === undefined) {\n    const schema = root.localRefs?.[ref] // TODO maybe localRefs should hold SchemaEnv\n    const {schemaId} = this.opts\n    if (schema) _sch = new SchemaEnv({schema, schemaId, root, baseId})\n  }\n\n  if (_sch === undefined) return\n  return (root.refs[ref] = inlineOrCompile.call(this, _sch))\n}\n\nfunction inlineOrCompile(this: Ajv, sch: SchemaEnv): AnySchema | SchemaEnv {\n  if (inlineRef(sch.schema, this.opts.inlineRefs)) return sch.schema\n  return sch.validate ? sch : compileSchema.call(this, sch)\n}\n\n// Index of schema compilation in the currently compiled list\nexport function getCompilingSchema(this: Ajv, schEnv: SchemaEnv): SchemaEnv | void {\n  for (const sch of this._compilations) {\n    if (sameSchemaEnv(sch, schEnv)) return sch\n  }\n}\n\nfunction sameSchemaEnv(s1: SchemaEnv, s2: SchemaEnv): boolean {\n  return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId\n}\n\n// resolve and compile the references ($ref)\n// TODO returns AnySchemaObject (if the schema can be inlined) or validation function\nfunction resolve(\n  this: Ajv,\n  root: SchemaEnv, // information about the root schema for the current schema\n  ref: string // reference to resolve\n): SchemaEnv | undefined {\n  let sch\n  while (typeof (sch = this.refs[ref]) == \"string\") ref = sch\n  return sch || this.schemas[ref] || resolveSchema.call(this, root, ref)\n}\n\n// Resolve schema, its root and baseId\nexport function resolveSchema(\n  this: Ajv,\n  root: SchemaEnv, // root object with properties schema, refs TODO below SchemaEnv is assigned to it\n  ref: string // reference to resolve\n): SchemaEnv | undefined {\n  const p = this.opts.uriResolver.parse(ref)\n  const refPath = _getFullPath(this.opts.uriResolver, p)\n  let baseId = getFullPath(this.opts.uriResolver, root.baseId, undefined)\n  // TODO `Object.keys(root.schema).length > 0` should not be needed - but removing breaks 2 tests\n  if (Object.keys(root.schema).length > 0 && refPath === baseId) {\n    return getJsonPointer.call(this, p, root)\n  }\n\n  const id = normalizeId(refPath)\n  const schOrRef = this.refs[id] || this.schemas[id]\n  if (typeof schOrRef == \"string\") {\n    const sch = resolveSchema.call(this, root, schOrRef)\n    if (typeof sch?.schema !== \"object\") return\n    return getJsonPointer.call(this, p, sch)\n  }\n\n  if (typeof schOrRef?.schema !== \"object\") return\n  if (!schOrRef.validate) compileSchema.call(this, schOrRef)\n  if (id === normalizeId(ref)) {\n    const {schema} = schOrRef\n    const {schemaId} = this.opts\n    const schId = schema[schemaId]\n    if (schId) baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n    return new SchemaEnv({schema, schemaId, root, baseId})\n  }\n  return getJsonPointer.call(this, p, schOrRef)\n}\n\nconst PREVENT_SCOPE_CHANGE = new Set([\n  \"properties\",\n  \"patternProperties\",\n  \"enum\",\n  \"dependencies\",\n  \"definitions\",\n])\n\nfunction getJsonPointer(\n  this: Ajv,\n  parsedRef: URIComponent,\n  {baseId, schema, root}: SchemaEnv\n): SchemaEnv | undefined {\n  if (parsedRef.fragment?.[0] !== \"/\") return\n  for (const part of parsedRef.fragment.slice(1).split(\"/\")) {\n    if (typeof schema === \"boolean\") return\n    const partSchema = schema[unescapeFragment(part)]\n    if (partSchema === undefined) return\n    schema = partSchema\n    // TODO PREVENT_SCOPE_CHANGE could be defined in keyword def?\n    const schId = typeof schema === \"object\" && schema[this.opts.schemaId]\n    if (!PREVENT_SCOPE_CHANGE.has(part) && schId) {\n      baseId = resolveUrl(this.opts.uriResolver, baseId, schId)\n    }\n  }\n  let env: SchemaEnv | undefined\n  if (typeof schema != \"boolean\" && schema.$ref && !schemaHasRulesButRef(schema, this.RULES)) {\n    const $ref = resolveUrl(this.opts.uriResolver, baseId, schema.$ref)\n    env = resolveSchema.call(this, root, $ref)\n  }\n  // even though resolution failed we need to return SchemaEnv to throw exception\n  // so that compileAsync loads missing schema.\n  const {schemaId} = this.opts\n  env = env || new SchemaEnv({schema, schemaId, root, baseId})\n  if (env.schema !== env.root.schema) return env\n  return undefined\n}\n", "{\n  \"$id\": \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n  \"description\": \"Meta-schema for $data reference (JSON AnySchema extension proposal)\",\n  \"type\": \"object\",\n  \"required\": [\"$data\"],\n  \"properties\": {\n    \"$data\": {\n      \"type\": \"string\",\n      \"anyOf\": [{\"format\": \"relative-json-pointer\"}, {\"format\": \"json-pointer\"}]\n    }\n  },\n  \"additionalProperties\": false\n}\n", "'use strict'\n\n/** @type {(value: string) => boolean} */\nconst isUUID = RegExp.prototype.test.bind(/^[\\da-f]{8}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{12}$/iu)\n\n/** @type {(value: string) => boolean} */\nconst isIPv4 = RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)$/u)\n\n/**\n * @param {Array<string>} input\n * @returns {string}\n */\nfunction stringArrayToHexStripped (input) {\n  let acc = ''\n  let code = 0\n  let i = 0\n\n  for (i = 0; i < input.length; i++) {\n    code = input[i].charCodeAt(0)\n    if (code === 48) {\n      continue\n    }\n    if (!((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))) {\n      return ''\n    }\n    acc += input[i]\n    break\n  }\n\n  for (i += 1; i < input.length; i++) {\n    code = input[i].charCodeAt(0)\n    if (!((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))) {\n      return ''\n    }\n    acc += input[i]\n  }\n  return acc\n}\n\n/**\n * @typedef {Object} GetIPV6Result\n * @property {boolean} error - Indicates if there was an error parsing the IPv6 address.\n * @property {string} address - The parsed IPv6 address.\n * @property {string} [zone] - The zone identifier, if present.\n */\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nconst nonSimpleDomain = RegExp.prototype.test.bind(/[^!\"$&'()*+,\\-.;=_`a-z{}~]/u)\n\n/**\n * @param {Array<string>} buffer\n * @returns {boolean}\n */\nfunction consumeIsZone (buffer) {\n  buffer.length = 0\n  return true\n}\n\n/**\n * @param {Array<string>} buffer\n * @param {Array<string>} address\n * @param {GetIPV6Result} output\n * @returns {boolean}\n */\nfunction consumeHextets (buffer, address, output) {\n  if (buffer.length) {\n    const hex = stringArrayToHexStripped(buffer)\n    if (hex !== '') {\n      address.push(hex)\n    } else {\n      output.error = true\n      return false\n    }\n    buffer.length = 0\n  }\n  return true\n}\n\n/**\n * @param {string} input\n * @returns {GetIPV6Result}\n */\nfunction getIPV6 (input) {\n  let tokenCount = 0\n  const output = { error: false, address: '', zone: '' }\n  /** @type {Array<string>} */\n  const address = []\n  /** @type {Array<string>} */\n  const buffer = []\n  let endipv6Encountered = false\n  let endIpv6 = false\n\n  let consume = consumeHextets\n\n  for (let i = 0; i < input.length; i++) {\n    const cursor = input[i]\n    if (cursor === '[' || cursor === ']') { continue }\n    if (cursor === ':') {\n      if (endipv6Encountered === true) {\n        endIpv6 = true\n      }\n      if (!consume(buffer, address, output)) { break }\n      if (++tokenCount > 7) {\n        // not valid\n        output.error = true\n        break\n      }\n      if (i > 0 && input[i - 1] === ':') {\n        endipv6Encountered = true\n      }\n      address.push(':')\n      continue\n    } else if (cursor === '%') {\n      if (!consume(buffer, address, output)) { break }\n      // switch to zone detection\n      consume = consumeIsZone\n    } else {\n      buffer.push(cursor)\n      continue\n    }\n  }\n  if (buffer.length) {\n    if (consume === consumeIsZone) {\n      output.zone = buffer.join('')\n    } else if (endIpv6) {\n      address.push(buffer.join(''))\n    } else {\n      address.push(stringArrayToHexStripped(buffer))\n    }\n  }\n  output.address = address.join('')\n  return output\n}\n\n/**\n * @typedef {Object} NormalizeIPv6Result\n * @property {string} host - The normalized host.\n * @property {string} [escapedHost] - The escaped host.\n * @property {boolean} isIPV6 - Indicates if the host is an IPv6 address.\n */\n\n/**\n * @param {string} host\n * @returns {NormalizeIPv6Result}\n */\nfunction normalizeIPv6 (host) {\n  if (findToken(host, ':') < 2) { return { host, isIPV6: false } }\n  const ipv6 = getIPV6(host)\n\n  if (!ipv6.error) {\n    let newHost = ipv6.address\n    let escapedHost = ipv6.address\n    if (ipv6.zone) {\n      newHost += '%' + ipv6.zone\n      escapedHost += '%25' + ipv6.zone\n    }\n    return { host: newHost, isIPV6: true, escapedHost }\n  } else {\n    return { host, isIPV6: false }\n  }\n}\n\n/**\n * @param {string} str\n * @param {string} token\n * @returns {number}\n */\nfunction findToken (str, token) {\n  let ind = 0\n  for (let i = 0; i < str.length; i++) {\n    if (str[i] === token) ind++\n  }\n  return ind\n}\n\n/**\n * @param {string} path\n * @returns {string}\n *\n * @see https://datatracker.ietf.org/doc/html/rfc3986#section-5.2.4\n */\nfunction removeDotSegments (path) {\n  let input = path\n  const output = []\n  let nextSlash = -1\n  let len = 0\n\n  // eslint-disable-next-line no-cond-assign\n  while (len = input.length) {\n    if (len === 1) {\n      if (input === '.') {\n        break\n      } else if (input === '/') {\n        output.push('/')\n        break\n      } else {\n        output.push(input)\n        break\n      }\n    } else if (len === 2) {\n      if (input[0] === '.') {\n        if (input[1] === '.') {\n          break\n        } else if (input[1] === '/') {\n          input = input.slice(2)\n          continue\n        }\n      } else if (input[0] === '/') {\n        if (input[1] === '.' || input[1] === '/') {\n          output.push('/')\n          break\n        }\n      }\n    } else if (len === 3) {\n      if (input === '/..') {\n        if (output.length !== 0) {\n          output.pop()\n        }\n        output.push('/')\n        break\n      }\n    }\n    if (input[0] === '.') {\n      if (input[1] === '.') {\n        if (input[2] === '/') {\n          input = input.slice(3)\n          continue\n        }\n      } else if (input[1] === '/') {\n        input = input.slice(2)\n        continue\n      }\n    } else if (input[0] === '/') {\n      if (input[1] === '.') {\n        if (input[2] === '/') {\n          input = input.slice(2)\n          continue\n        } else if (input[2] === '.') {\n          if (input[3] === '/') {\n            input = input.slice(3)\n            if (output.length !== 0) {\n              output.pop()\n            }\n            continue\n          }\n        }\n      }\n    }\n\n    // Rule 2E: Move normal path segment to output\n    if ((nextSlash = input.indexOf('/', 1)) === -1) {\n      output.push(input)\n      break\n    } else {\n      output.push(input.slice(0, nextSlash))\n      input = input.slice(nextSlash)\n    }\n  }\n\n  return output.join('')\n}\n\n/**\n * @param {import('../types/index').URIComponent} component\n * @param {boolean} esc\n * @returns {import('../types/index').URIComponent}\n */\nfunction normalizeComponentEncoding (component, esc) {\n  const func = esc !== true ? escape : unescape\n  if (component.scheme !== undefined) {\n    component.scheme = func(component.scheme)\n  }\n  if (component.userinfo !== undefined) {\n    component.userinfo = func(component.userinfo)\n  }\n  if (component.host !== undefined) {\n    component.host = func(component.host)\n  }\n  if (component.path !== undefined) {\n    component.path = func(component.path)\n  }\n  if (component.query !== undefined) {\n    component.query = func(component.query)\n  }\n  if (component.fragment !== undefined) {\n    component.fragment = func(component.fragment)\n  }\n  return component\n}\n\n/**\n * @param {import('../types/index').URIComponent} component\n * @returns {string|undefined}\n */\nfunction recomposeAuthority (component) {\n  const uriTokens = []\n\n  if (component.userinfo !== undefined) {\n    uriTokens.push(component.userinfo)\n    uriTokens.push('@')\n  }\n\n  if (component.host !== undefined) {\n    let host = unescape(component.host)\n    if (!isIPv4(host)) {\n      const ipV6res = normalizeIPv6(host)\n      if (ipV6res.isIPV6 === true) {\n        host = `[${ipV6res.escapedHost}]`\n      } else {\n        host = component.host\n      }\n    }\n    uriTokens.push(host)\n  }\n\n  if (typeof component.port === 'number' || typeof component.port === 'string') {\n    uriTokens.push(':')\n    uriTokens.push(String(component.port))\n  }\n\n  return uriTokens.length ? uriTokens.join('') : undefined\n};\n\nmodule.exports = {\n  nonSimpleDomain,\n  recomposeAuthority,\n  normalizeComponentEncoding,\n  removeDotSegments,\n  isIPv4,\n  isUUID,\n  normalizeIPv6,\n  stringArrayToHexStripped\n}\n", "'use strict'\n\nconst { isUUID } = require('./utils')\nconst URN_REG = /([\\da-z][\\d\\-a-z]{0,31}):((?:[\\w!$'()*+,\\-.:;=@]|%[\\da-f]{2})+)/iu\n\nconst supportedSchemeNames = /** @type {const} */ (['http', 'https', 'ws',\n  'wss', 'urn', 'urn:uuid'])\n\n/** @typedef {supportedSchemeNames[number]} SchemeName */\n\n/**\n * @param {string} name\n * @returns {name is SchemeName}\n */\nfunction isValidSchemeName (name) {\n  return supportedSchemeNames.indexOf(/** @type {*} */ (name)) !== -1\n}\n\n/**\n * @callback SchemeFn\n * @param {import('../types/index').URIComponent} component\n * @param {import('../types/index').Options} options\n * @returns {import('../types/index').URIComponent}\n */\n\n/**\n * @typedef {Object} SchemeHandler\n * @property {SchemeName} scheme - The scheme name.\n * @property {boolean} [domainHost] - Indicates if the scheme supports domain hosts.\n * @property {SchemeFn} parse - Function to parse the URI component for this scheme.\n * @property {SchemeFn} serialize - Function to serialize the URI component for this scheme.\n * @property {boolean} [skipNormalize] - Indicates if normalization should be skipped for this scheme.\n * @property {boolean} [absolutePath] - Indicates if the scheme uses absolute paths.\n * @property {boolean} [unicodeSupport] - Indicates if the scheme supports Unicode.\n */\n\n/**\n * @param {import('../types/index').URIComponent} wsComponent\n * @returns {boolean}\n */\nfunction wsIsSecure (wsComponent) {\n  if (wsComponent.secure === true) {\n    return true\n  } else if (wsComponent.secure === false) {\n    return false\n  } else if (wsComponent.scheme) {\n    return (\n      wsComponent.scheme.length === 3 &&\n      (wsComponent.scheme[0] === 'w' || wsComponent.scheme[0] === 'W') &&\n      (wsComponent.scheme[1] === 's' || wsComponent.scheme[1] === 'S') &&\n      (wsComponent.scheme[2] === 's' || wsComponent.scheme[2] === 'S')\n    )\n  } else {\n    return false\n  }\n}\n\n/** @type {SchemeFn} */\nfunction httpParse (component) {\n  if (!component.host) {\n    component.error = component.error || 'HTTP URIs must have a host.'\n  }\n\n  return component\n}\n\n/** @type {SchemeFn} */\nfunction httpSerialize (component) {\n  const secure = String(component.scheme).toLowerCase() === 'https'\n\n  // normalize the default port\n  if (component.port === (secure ? 443 : 80) || component.port === '') {\n    component.port = undefined\n  }\n\n  // normalize the empty path\n  if (!component.path) {\n    component.path = '/'\n  }\n\n  // NOTE: We do not parse query strings for HTTP URIs\n  // as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n  // and not the HTTP spec.\n\n  return component\n}\n\n/** @type {SchemeFn} */\nfunction wsParse (wsComponent) {\n// indicate if the secure flag is set\n  wsComponent.secure = wsIsSecure(wsComponent)\n\n  // construct resouce name\n  wsComponent.resourceName = (wsComponent.path || '/') + (wsComponent.query ? '?' + wsComponent.query : '')\n  wsComponent.path = undefined\n  wsComponent.query = undefined\n\n  return wsComponent\n}\n\n/** @type {SchemeFn} */\nfunction wsSerialize (wsComponent) {\n// normalize the default port\n  if (wsComponent.port === (wsIsSecure(wsComponent) ? 443 : 80) || wsComponent.port === '') {\n    wsComponent.port = undefined\n  }\n\n  // ensure scheme matches secure flag\n  if (typeof wsComponent.secure === 'boolean') {\n    wsComponent.scheme = (wsComponent.secure ? 'wss' : 'ws')\n    wsComponent.secure = undefined\n  }\n\n  // reconstruct path from resource name\n  if (wsComponent.resourceName) {\n    const [path, query] = wsComponent.resourceName.split('?')\n    wsComponent.path = (path && path !== '/' ? path : undefined)\n    wsComponent.query = query\n    wsComponent.resourceName = undefined\n  }\n\n  // forbid fragment component\n  wsComponent.fragment = undefined\n\n  return wsComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnParse (urnComponent, options) {\n  if (!urnComponent.path) {\n    urnComponent.error = 'URN can not be parsed'\n    return urnComponent\n  }\n  const matches = urnComponent.path.match(URN_REG)\n  if (matches) {\n    const scheme = options.scheme || urnComponent.scheme || 'urn'\n    urnComponent.nid = matches[1].toLowerCase()\n    urnComponent.nss = matches[2]\n    const urnScheme = `${scheme}:${options.nid || urnComponent.nid}`\n    const schemeHandler = getSchemeHandler(urnScheme)\n    urnComponent.path = undefined\n\n    if (schemeHandler) {\n      urnComponent = schemeHandler.parse(urnComponent, options)\n    }\n  } else {\n    urnComponent.error = urnComponent.error || 'URN can not be parsed.'\n  }\n\n  return urnComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnSerialize (urnComponent, options) {\n  if (urnComponent.nid === undefined) {\n    throw new Error('URN without nid cannot be serialized')\n  }\n  const scheme = options.scheme || urnComponent.scheme || 'urn'\n  const nid = urnComponent.nid.toLowerCase()\n  const urnScheme = `${scheme}:${options.nid || nid}`\n  const schemeHandler = getSchemeHandler(urnScheme)\n\n  if (schemeHandler) {\n    urnComponent = schemeHandler.serialize(urnComponent, options)\n  }\n\n  const uriComponent = urnComponent\n  const nss = urnComponent.nss\n  uriComponent.path = `${nid || options.nid}:${nss}`\n\n  options.skipEscape = true\n  return uriComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnuuidParse (urnComponent, options) {\n  const uuidComponent = urnComponent\n  uuidComponent.uuid = uuidComponent.nss\n  uuidComponent.nss = undefined\n\n  if (!options.tolerant && (!uuidComponent.uuid || !isUUID(uuidComponent.uuid))) {\n    uuidComponent.error = uuidComponent.error || 'UUID is not valid.'\n  }\n\n  return uuidComponent\n}\n\n/** @type {SchemeFn} */\nfunction urnuuidSerialize (uuidComponent) {\n  const urnComponent = uuidComponent\n  // normalize UUID\n  urnComponent.nss = (uuidComponent.uuid || '').toLowerCase()\n  return urnComponent\n}\n\nconst http = /** @type {SchemeHandler} */ ({\n  scheme: 'http',\n  domainHost: true,\n  parse: httpParse,\n  serialize: httpSerialize\n})\n\nconst https = /** @type {SchemeHandler} */ ({\n  scheme: 'https',\n  domainHost: http.domainHost,\n  parse: httpParse,\n  serialize: httpSerialize\n})\n\nconst ws = /** @type {SchemeHandler} */ ({\n  scheme: 'ws',\n  domainHost: true,\n  parse: wsParse,\n  serialize: wsSerialize\n})\n\nconst wss = /** @type {SchemeHandler} */ ({\n  scheme: 'wss',\n  domainHost: ws.domainHost,\n  parse: ws.parse,\n  serialize: ws.serialize\n})\n\nconst urn = /** @type {SchemeHandler} */ ({\n  scheme: 'urn',\n  parse: urnParse,\n  serialize: urnSerialize,\n  skipNormalize: true\n})\n\nconst urnuuid = /** @type {SchemeHandler} */ ({\n  scheme: 'urn:uuid',\n  parse: urnuuidParse,\n  serialize: urnuuidSerialize,\n  skipNormalize: true\n})\n\nconst SCHEMES = /** @type {Record<SchemeName, SchemeHandler>} */ ({\n  http,\n  https,\n  ws,\n  wss,\n  urn,\n  'urn:uuid': urnuuid\n})\n\nObject.setPrototypeOf(SCHEMES, null)\n\n/**\n * @param {string|undefined} scheme\n * @returns {SchemeHandler|undefined}\n */\nfunction getSchemeHandler (scheme) {\n  return (\n    scheme && (\n      SCHEMES[/** @type {SchemeName} */ (scheme)] ||\n      SCHEMES[/** @type {SchemeName} */(scheme.toLowerCase())])\n  ) ||\n    undefined\n}\n\nmodule.exports = {\n  wsIsSecure,\n  SCHEMES,\n  isValidSchemeName,\n  getSchemeHandler,\n}\n", "'use strict'\n\nconst { normalizeIPv6, removeDotSegments, recomposeAuthority, normalizeComponentEncoding, isIPv4, nonSimpleDomain } = require('./lib/utils')\nconst { SCHEMES, getSchemeHandler } = require('./lib/schemes')\n\n/**\n * @template {import('./types/index').URIComponent|string} T\n * @param {T} uri\n * @param {import('./types/index').Options} [options]\n * @returns {T}\n */\nfunction normalize (uri, options) {\n  if (typeof uri === 'string') {\n    uri = /** @type {T} */ (serialize(parse(uri, options), options))\n  } else if (typeof uri === 'object') {\n    uri = /** @type {T} */ (parse(serialize(uri, options), options))\n  }\n  return uri\n}\n\n/**\n * @param {string} baseURI\n * @param {string} relativeURI\n * @param {import('./types/index').Options} [options]\n * @returns {string}\n */\nfunction resolve (baseURI, relativeURI, options) {\n  const schemelessOptions = options ? Object.assign({ scheme: 'null' }, options) : { scheme: 'null' }\n  const resolved = resolveComponent(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true)\n  schemelessOptions.skipEscape = true\n  return serialize(resolved, schemelessOptions)\n}\n\n/**\n * @param {import ('./types/index').URIComponent} base\n * @param {import ('./types/index').URIComponent} relative\n * @param {import('./types/index').Options} [options]\n * @param {boolean} [skipNormalization=false]\n * @returns {import ('./types/index').URIComponent}\n */\nfunction resolveComponent (base, relative, options, skipNormalization) {\n  /** @type {import('./types/index').URIComponent} */\n  const target = {}\n  if (!skipNormalization) {\n    base = parse(serialize(base, options), options) // normalize base component\n    relative = parse(serialize(relative, options), options) // normalize relative component\n  }\n  options = options || {}\n\n  if (!options.tolerant && relative.scheme) {\n    target.scheme = relative.scheme\n    // target.authority = relative.authority;\n    target.userinfo = relative.userinfo\n    target.host = relative.host\n    target.port = relative.port\n    target.path = removeDotSegments(relative.path || '')\n    target.query = relative.query\n  } else {\n    if (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n      // target.authority = relative.authority;\n      target.userinfo = relative.userinfo\n      target.host = relative.host\n      target.port = relative.port\n      target.path = removeDotSegments(relative.path || '')\n      target.query = relative.query\n    } else {\n      if (!relative.path) {\n        target.path = base.path\n        if (relative.query !== undefined) {\n          target.query = relative.query\n        } else {\n          target.query = base.query\n        }\n      } else {\n        if (relative.path[0] === '/') {\n          target.path = removeDotSegments(relative.path)\n        } else {\n          if ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n            target.path = '/' + relative.path\n          } else if (!base.path) {\n            target.path = relative.path\n          } else {\n            target.path = base.path.slice(0, base.path.lastIndexOf('/') + 1) + relative.path\n          }\n          target.path = removeDotSegments(target.path)\n        }\n        target.query = relative.query\n      }\n      // target.authority = base.authority;\n      target.userinfo = base.userinfo\n      target.host = base.host\n      target.port = base.port\n    }\n    target.scheme = base.scheme\n  }\n\n  target.fragment = relative.fragment\n\n  return target\n}\n\n/**\n * @param {import ('./types/index').URIComponent|string} uriA\n * @param {import ('./types/index').URIComponent|string} uriB\n * @param {import ('./types/index').Options} options\n * @returns {boolean}\n */\nfunction equal (uriA, uriB, options) {\n  if (typeof uriA === 'string') {\n    uriA = unescape(uriA)\n    uriA = serialize(normalizeComponentEncoding(parse(uriA, options), true), { ...options, skipEscape: true })\n  } else if (typeof uriA === 'object') {\n    uriA = serialize(normalizeComponentEncoding(uriA, true), { ...options, skipEscape: true })\n  }\n\n  if (typeof uriB === 'string') {\n    uriB = unescape(uriB)\n    uriB = serialize(normalizeComponentEncoding(parse(uriB, options), true), { ...options, skipEscape: true })\n  } else if (typeof uriB === 'object') {\n    uriB = serialize(normalizeComponentEncoding(uriB, true), { ...options, skipEscape: true })\n  }\n\n  return uriA.toLowerCase() === uriB.toLowerCase()\n}\n\n/**\n * @param {Readonly<import('./types/index').URIComponent>} cmpts\n * @param {import('./types/index').Options} [opts]\n * @returns {string}\n */\nfunction serialize (cmpts, opts) {\n  const component = {\n    host: cmpts.host,\n    scheme: cmpts.scheme,\n    userinfo: cmpts.userinfo,\n    port: cmpts.port,\n    path: cmpts.path,\n    query: cmpts.query,\n    nid: cmpts.nid,\n    nss: cmpts.nss,\n    uuid: cmpts.uuid,\n    fragment: cmpts.fragment,\n    reference: cmpts.reference,\n    resourceName: cmpts.resourceName,\n    secure: cmpts.secure,\n    error: ''\n  }\n  const options = Object.assign({}, opts)\n  const uriTokens = []\n\n  // find scheme handler\n  const schemeHandler = getSchemeHandler(options.scheme || component.scheme)\n\n  // perform scheme specific serialization\n  if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(component, options)\n\n  if (component.path !== undefined) {\n    if (!options.skipEscape) {\n      component.path = escape(component.path)\n\n      if (component.scheme !== undefined) {\n        component.path = component.path.split('%3A').join(':')\n      }\n    } else {\n      component.path = unescape(component.path)\n    }\n  }\n\n  if (options.reference !== 'suffix' && component.scheme) {\n    uriTokens.push(component.scheme, ':')\n  }\n\n  const authority = recomposeAuthority(component)\n  if (authority !== undefined) {\n    if (options.reference !== 'suffix') {\n      uriTokens.push('//')\n    }\n\n    uriTokens.push(authority)\n\n    if (component.path && component.path[0] !== '/') {\n      uriTokens.push('/')\n    }\n  }\n  if (component.path !== undefined) {\n    let s = component.path\n\n    if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n      s = removeDotSegments(s)\n    }\n\n    if (\n      authority === undefined &&\n      s[0] === '/' &&\n      s[1] === '/'\n    ) {\n      // don't allow the path to start with \"//\"\n      s = '/%2F' + s.slice(2)\n    }\n\n    uriTokens.push(s)\n  }\n\n  if (component.query !== undefined) {\n    uriTokens.push('?', component.query)\n  }\n\n  if (component.fragment !== undefined) {\n    uriTokens.push('#', component.fragment)\n  }\n  return uriTokens.join('')\n}\n\nconst URI_PARSE = /^(?:([^#/:?]+):)?(?:\\/\\/((?:([^#/?@]*)@)?(\\[[^#/?\\]]+\\]|[^#/:?]*)(?::(\\d*))?))?([^#?]*)(?:\\?([^#]*))?(?:#((?:.|[\\n\\r])*))?/u\n\n/**\n * @param {string} uri\n * @param {import('./types/index').Options} [opts]\n * @returns\n */\nfunction parse (uri, opts) {\n  const options = Object.assign({}, opts)\n  /** @type {import('./types/index').URIComponent} */\n  const parsed = {\n    scheme: undefined,\n    userinfo: undefined,\n    host: '',\n    port: undefined,\n    path: '',\n    query: undefined,\n    fragment: undefined\n  }\n\n  let isIP = false\n  if (options.reference === 'suffix') {\n    if (options.scheme) {\n      uri = options.scheme + ':' + uri\n    } else {\n      uri = '//' + uri\n    }\n  }\n\n  const matches = uri.match(URI_PARSE)\n\n  if (matches) {\n    // store each component\n    parsed.scheme = matches[1]\n    parsed.userinfo = matches[3]\n    parsed.host = matches[4]\n    parsed.port = parseInt(matches[5], 10)\n    parsed.path = matches[6] || ''\n    parsed.query = matches[7]\n    parsed.fragment = matches[8]\n\n    // fix port number\n    if (isNaN(parsed.port)) {\n      parsed.port = matches[5]\n    }\n    if (parsed.host) {\n      const ipv4result = isIPv4(parsed.host)\n      if (ipv4result === false) {\n        const ipv6result = normalizeIPv6(parsed.host)\n        parsed.host = ipv6result.host.toLowerCase()\n        isIP = ipv6result.isIPV6\n      } else {\n        isIP = true\n      }\n    }\n    if (parsed.scheme === undefined && parsed.userinfo === undefined && parsed.host === undefined && parsed.port === undefined && parsed.query === undefined && !parsed.path) {\n      parsed.reference = 'same-document'\n    } else if (parsed.scheme === undefined) {\n      parsed.reference = 'relative'\n    } else if (parsed.fragment === undefined) {\n      parsed.reference = 'absolute'\n    } else {\n      parsed.reference = 'uri'\n    }\n\n    // check for reference errors\n    if (options.reference && options.reference !== 'suffix' && options.reference !== parsed.reference) {\n      parsed.error = parsed.error || 'URI is not a ' + options.reference + ' reference.'\n    }\n\n    // find scheme handler\n    const schemeHandler = getSchemeHandler(options.scheme || parsed.scheme)\n\n    // check if scheme can't handle IRIs\n    if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n      // if host component is a domain name\n      if (parsed.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost)) && isIP === false && nonSimpleDomain(parsed.host)) {\n        // convert Unicode IDN -> ASCII IDN\n        try {\n          parsed.host = URL.domainToASCII(parsed.host.toLowerCase())\n        } catch (e) {\n          parsed.error = parsed.error || \"Host's domain name can not be converted to ASCII: \" + e\n        }\n      }\n      // convert IRI -> URI\n    }\n\n    if (!schemeHandler || (schemeHandler && !schemeHandler.skipNormalize)) {\n      if (uri.indexOf('%') !== -1) {\n        if (parsed.scheme !== undefined) {\n          parsed.scheme = unescape(parsed.scheme)\n        }\n        if (parsed.host !== undefined) {\n          parsed.host = unescape(parsed.host)\n        }\n      }\n      if (parsed.path) {\n        parsed.path = escape(unescape(parsed.path))\n      }\n      if (parsed.fragment) {\n        parsed.fragment = encodeURI(decodeURIComponent(parsed.fragment))\n      }\n    }\n\n    // perform scheme specific parsing\n    if (schemeHandler && schemeHandler.parse) {\n      schemeHandler.parse(parsed, options)\n    }\n  } else {\n    parsed.error = parsed.error || 'URI can not be parsed.'\n  }\n  return parsed\n}\n\nconst fastUri = {\n  SCHEMES,\n  normalize,\n  resolve,\n  resolveComponent,\n  equal,\n  serialize,\n  parse\n}\n\nmodule.exports = fastUri\nmodule.exports.default = fastUri\nmodule.exports.fastUri = fastUri\n", "import * as uri from \"fast-uri\"\n\ntype URI = typeof uri & {code: string}\n;(uri as URI).code = 'require(\"ajv/dist/runtime/uri\").default'\n\nexport default uri as URI\n", "export {\n  Format,\n  FormatDefinition,\n  AsyncFormatDefinition,\n  KeywordDefinition,\n  KeywordErrorDefinition,\n  CodeKeywordDefinition,\n  MacroKeywordDefinition,\n  FuncKeywordDefinition,\n  Vocabulary,\n  Schema,\n  SchemaObject,\n  AnySchemaObject,\n  AsyncSchema,\n  AnySchema,\n  ValidateFunction,\n  AsyncValidateFunction,\n  AnyValidateFunction,\n  ErrorObject,\n  ErrorNoParams,\n} from \"./types\"\n\nexport {SchemaCxt, SchemaObjCxt} from \"./compile\"\nexport interface Plugin<Opts> {\n  (ajv: Ajv, options?: Opts): Ajv\n  [prop: string]: any\n}\n\nexport {KeywordCxt} from \"./compile/validate\"\nexport {DefinedError} from \"./vocabularies/errors\"\nexport {JSONType} from \"./compile/rules\"\nexport {JSONSchemaType} from \"./types/json-schema\"\nexport {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from \"./types/jtd-schema\"\nexport {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from \"./compile/codegen\"\n\nimport type {\n  Schema,\n  AnySchema,\n  AnySchemaObject,\n  SchemaObject,\n  AsyncSchema,\n  Vocabulary,\n  KeywordDefinition,\n  AddedKeywordDefinition,\n  AnyValidateFunction,\n  ValidateFunction,\n  AsyncValidateFunction,\n  ErrorObject,\n  Format,\n  AddedFormat,\n  RegExpEngine,\n  UriResolver,\n} from \"./types\"\nimport type {JSONSchemaType} from \"./types/json-schema\"\nimport type {JTDSchemaType, SomeJTDSchemaType, JTDDataType} from \"./types/jtd-schema\"\nimport ValidationError from \"./runtime/validation_error\"\nimport MissingRefError from \"./compile/ref_error\"\nimport {getRules, ValidationRules, Rule, RuleGroup, JSONType} from \"./compile/rules\"\nimport {SchemaEnv, compileSchema, resolveSchema} from \"./compile\"\nimport {Code, ValueScope} from \"./compile/codegen\"\nimport {normalizeId, getSchemaRefs} from \"./compile/resolve\"\nimport {getJSONTypes} from \"./compile/validate/dataType\"\nimport {eachItem} from \"./compile/util\"\nimport * as $dataRefSchema from \"./refs/data.json\"\n\nimport DefaultUriResolver from \"./runtime/uri\"\n\nconst defaultRegExp: RegExpEngine = (str, flags) => new RegExp(str, flags)\ndefaultRegExp.code = \"new RegExp\"\n\nconst META_IGNORE_OPTIONS: (keyof Options)[] = [\"removeAdditional\", \"useDefaults\", \"coerceTypes\"]\nconst EXT_SCOPE_NAMES = new Set([\n  \"validate\",\n  \"serialize\",\n  \"parse\",\n  \"wrapper\",\n  \"root\",\n  \"schema\",\n  \"keyword\",\n  \"pattern\",\n  \"formats\",\n  \"validate$data\",\n  \"func\",\n  \"obj\",\n  \"Error\",\n])\n\nexport type Options = CurrentOptions & DeprecatedOptions\n\nexport interface CurrentOptions {\n  // strict mode options (NEW)\n  strict?: boolean | \"log\"\n  strictSchema?: boolean | \"log\"\n  strictNumbers?: boolean | \"log\"\n  strictTypes?: boolean | \"log\"\n  strictTuples?: boolean | \"log\"\n  strictRequired?: boolean | \"log\"\n  allowMatchingProperties?: boolean // disables a strict mode restriction\n  allowUnionTypes?: boolean\n  validateFormats?: boolean\n  // validation and reporting options:\n  $data?: boolean\n  allErrors?: boolean\n  verbose?: boolean\n  discriminator?: boolean\n  unicodeRegExp?: boolean\n  timestamp?: \"string\" | \"date\" // JTD only\n  parseDate?: boolean // JTD only\n  allowDate?: boolean // JTD only\n  $comment?:\n    | true\n    | ((comment: string, schemaPath?: string, rootSchema?: AnySchemaObject) => unknown)\n  formats?: {[Name in string]?: Format}\n  keywords?: Vocabulary\n  schemas?: AnySchema[] | {[Key in string]?: AnySchema}\n  logger?: Logger | false\n  loadSchema?: (uri: string) => Promise<AnySchemaObject>\n  // options to modify validated data:\n  removeAdditional?: boolean | \"all\" | \"failing\"\n  useDefaults?: boolean | \"empty\"\n  coerceTypes?: boolean | \"array\"\n  // advanced options:\n  next?: boolean // NEW\n  unevaluated?: boolean // NEW\n  dynamicRef?: boolean // NEW\n  schemaId?: \"id\" | \"$id\"\n  jtd?: boolean // NEW\n  meta?: SchemaObject | boolean\n  defaultMeta?: string | AnySchemaObject\n  validateSchema?: boolean | \"log\"\n  addUsedSchema?: boolean\n  inlineRefs?: boolean | number\n  passContext?: boolean\n  loopRequired?: number\n  loopEnum?: number // NEW\n  ownProperties?: boolean\n  multipleOfPrecision?: number\n  int32range?: boolean // JTD only\n  messages?: boolean\n  code?: CodeOptions // NEW\n  uriResolver?: UriResolver\n}\n\nexport interface CodeOptions {\n  es5?: boolean\n  esm?: boolean\n  lines?: boolean\n  optimize?: boolean | number\n  formats?: Code // code to require (or construct) map of available formats - for standalone code\n  source?: boolean\n  process?: (code: string, schema?: SchemaEnv) => string\n  regExp?: RegExpEngine\n}\n\ninterface InstanceCodeOptions extends CodeOptions {\n  regExp: RegExpEngine\n  optimize: number\n}\n\ninterface DeprecatedOptions {\n  /** @deprecated */\n  ignoreKeywordsWithRef?: boolean\n  /** @deprecated */\n  jsPropertySyntax?: boolean // added instead of jsonPointers\n  /** @deprecated */\n  unicode?: boolean\n}\n\ninterface RemovedOptions {\n  format?: boolean\n  errorDataPath?: \"object\" | \"property\"\n  nullable?: boolean // \"nullable\" keyword is supported by default\n  jsonPointers?: boolean\n  extendRefs?: true | \"ignore\" | \"fail\"\n  missingRefs?: true | \"ignore\" | \"fail\"\n  processCode?: (code: string, schema?: SchemaEnv) => string\n  sourceCode?: boolean\n  strictDefaults?: boolean\n  strictKeywords?: boolean\n  uniqueItems?: boolean\n  unknownFormats?: true | string[] | \"ignore\"\n  cache?: any\n  serialize?: (schema: AnySchema) => unknown\n  ajvErrors?: boolean\n}\n\ntype OptionsInfo<T extends RemovedOptions | DeprecatedOptions> = {\n  [K in keyof T]-?: string | undefined\n}\n\nconst removedOptions: OptionsInfo<RemovedOptions> = {\n  errorDataPath: \"\",\n  format: \"`validateFormats: false` can be used instead.\",\n  nullable: '\"nullable\" keyword is supported by default.',\n  jsonPointers: \"Deprecated jsPropertySyntax can be used instead.\",\n  extendRefs: \"Deprecated ignoreKeywordsWithRef can be used instead.\",\n  missingRefs: \"Pass empty schema with $id that should be ignored to ajv.addSchema.\",\n  processCode: \"Use option `code: {process: (code, schemaEnv: object) => string}`\",\n  sourceCode: \"Use option `code: {source: true}`\",\n  strictDefaults: \"It is default now, see option `strict`.\",\n  strictKeywords: \"It is default now, see option `strict`.\",\n  uniqueItems: '\"uniqueItems\" keyword is always validated.',\n  unknownFormats: \"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).\",\n  cache: \"Map is used as cache, schema object as key.\",\n  serialize: \"Map is used as cache, schema object as key.\",\n  ajvErrors: \"It is default now.\",\n}\n\nconst deprecatedOptions: OptionsInfo<DeprecatedOptions> = {\n  ignoreKeywordsWithRef: \"\",\n  jsPropertySyntax: \"\",\n  unicode: '\"minLength\"/\"maxLength\" account for unicode characters by default.',\n}\n\ntype RequiredInstanceOptions = {\n  [K in\n    | \"strictSchema\"\n    | \"strictNumbers\"\n    | \"strictTypes\"\n    | \"strictTuples\"\n    | \"strictRequired\"\n    | \"inlineRefs\"\n    | \"loopRequired\"\n    | \"loopEnum\"\n    | \"meta\"\n    | \"messages\"\n    | \"schemaId\"\n    | \"addUsedSchema\"\n    | \"validateSchema\"\n    | \"validateFormats\"\n    | \"int32range\"\n    | \"unicodeRegExp\"\n    | \"uriResolver\"]: NonNullable<Options[K]>\n} & {code: InstanceCodeOptions}\n\nexport type InstanceOptions = Options & RequiredInstanceOptions\n\nconst MAX_EXPRESSION = 200\n\n// eslint-disable-next-line complexity\nfunction requiredOptions(o: Options): RequiredInstanceOptions {\n  const s = o.strict\n  const _optz = o.code?.optimize\n  const optimize = _optz === true || _optz === undefined ? 1 : _optz || 0\n  const regExp = o.code?.regExp ?? defaultRegExp\n  const uriResolver = o.uriResolver ?? DefaultUriResolver\n  return {\n    strictSchema: o.strictSchema ?? s ?? true,\n    strictNumbers: o.strictNumbers ?? s ?? true,\n    strictTypes: o.strictTypes ?? s ?? \"log\",\n    strictTuples: o.strictTuples ?? s ?? \"log\",\n    strictRequired: o.strictRequired ?? s ?? false,\n    code: o.code ? {...o.code, optimize, regExp} : {optimize, regExp},\n    loopRequired: o.loopRequired ?? MAX_EXPRESSION,\n    loopEnum: o.loopEnum ?? MAX_EXPRESSION,\n    meta: o.meta ?? true,\n    messages: o.messages ?? true,\n    inlineRefs: o.inlineRefs ?? true,\n    schemaId: o.schemaId ?? \"$id\",\n    addUsedSchema: o.addUsedSchema ?? true,\n    validateSchema: o.validateSchema ?? true,\n    validateFormats: o.validateFormats ?? true,\n    unicodeRegExp: o.unicodeRegExp ?? true,\n    int32range: o.int32range ?? true,\n    uriResolver: uriResolver,\n  }\n}\n\nexport interface Logger {\n  log(...args: unknown[]): unknown\n  warn(...args: unknown[]): unknown\n  error(...args: unknown[]): unknown\n}\n\nexport default class Ajv {\n  opts: InstanceOptions\n  errors?: ErrorObject[] | null // errors from the last validation\n  logger: Logger\n  // shared external scope values for compiled functions\n  readonly scope: ValueScope\n  readonly schemas: {[Key in string]?: SchemaEnv} = {}\n  readonly refs: {[Ref in string]?: SchemaEnv | string} = {}\n  readonly formats: {[Name in string]?: AddedFormat} = {}\n  readonly RULES: ValidationRules\n  readonly _compilations: Set<SchemaEnv> = new Set()\n  private readonly _loading: {[Ref in string]?: Promise<AnySchemaObject>} = {}\n  private readonly _cache: Map<AnySchema, SchemaEnv> = new Map()\n  private readonly _metaOpts: InstanceOptions\n\n  static ValidationError = ValidationError\n  static MissingRefError = MissingRefError\n\n  constructor(opts: Options = {}) {\n    opts = this.opts = {...opts, ...requiredOptions(opts)}\n    const {es5, lines} = this.opts.code\n\n    this.scope = new ValueScope({scope: {}, prefixes: EXT_SCOPE_NAMES, es5, lines})\n    this.logger = getLogger(opts.logger)\n    const formatOpt = opts.validateFormats\n    opts.validateFormats = false\n\n    this.RULES = getRules()\n    checkOptions.call(this, removedOptions, opts, \"NOT SUPPORTED\")\n    checkOptions.call(this, deprecatedOptions, opts, \"DEPRECATED\", \"warn\")\n    this._metaOpts = getMetaSchemaOptions.call(this)\n\n    if (opts.formats) addInitialFormats.call(this)\n    this._addVocabularies()\n    this._addDefaultMetaSchema()\n    if (opts.keywords) addInitialKeywords.call(this, opts.keywords)\n    if (typeof opts.meta == \"object\") this.addMetaSchema(opts.meta)\n    addInitialSchemas.call(this)\n    opts.validateFormats = formatOpt\n  }\n\n  _addVocabularies(): void {\n    this.addKeyword(\"$async\")\n  }\n\n  _addDefaultMetaSchema(): void {\n    const {$data, meta, schemaId} = this.opts\n    let _dataRefSchema: SchemaObject = $dataRefSchema\n    if (schemaId === \"id\") {\n      _dataRefSchema = {...$dataRefSchema}\n      _dataRefSchema.id = _dataRefSchema.$id\n      delete _dataRefSchema.$id\n    }\n    if (meta && $data) this.addMetaSchema(_dataRefSchema, _dataRefSchema[schemaId], false)\n  }\n\n  defaultMeta(): string | AnySchemaObject | undefined {\n    const {meta, schemaId} = this.opts\n    return (this.opts.defaultMeta = typeof meta == \"object\" ? meta[schemaId] || meta : undefined)\n  }\n\n  // Validate data using schema\n  // AnySchema will be compiled and cached using schema itself as a key for Map\n  validate(schema: Schema | string, data: unknown): boolean\n  validate(schemaKeyRef: AnySchema | string, data: unknown): boolean | Promise<unknown>\n  validate<T>(schema: Schema | JSONSchemaType<T> | string, data: unknown): data is T\n  // Separated for type inference to work\n  // eslint-disable-next-line @typescript-eslint/unified-signatures\n  validate<T>(schema: JTDSchemaType<T>, data: unknown): data is T\n  // This overload is only intended for typescript inference, the first\n  // argument prevents manual type annotation from matching this overload\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  validate<N extends never, T extends SomeJTDSchemaType>(\n    schema: T,\n    data: unknown\n  ): data is JTDDataType<T>\n  // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n  validate<T>(schema: AsyncSchema, data: unknown | T): Promise<T>\n  validate<T>(schemaKeyRef: AnySchema | string, data: unknown): data is T | Promise<T>\n  validate<T>(\n    schemaKeyRef: AnySchema | string, // key, ref or schema object\n    // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n    data: unknown | T // to be validated\n  ): boolean | Promise<T> {\n    let v: AnyValidateFunction | undefined\n    if (typeof schemaKeyRef == \"string\") {\n      v = this.getSchema<T>(schemaKeyRef)\n      if (!v) throw new Error(`no schema with key or ref \"${schemaKeyRef}\"`)\n    } else {\n      v = this.compile<T>(schemaKeyRef)\n    }\n\n    const valid = v(data)\n    if (!(\"$async\" in v)) this.errors = v.errors\n    return valid\n  }\n\n  // Create validation function for passed schema\n  // _meta: true if schema is a meta-schema. Used internally to compile meta schemas of user-defined keywords.\n  compile<T = unknown>(schema: Schema | JSONSchemaType<T>, _meta?: boolean): ValidateFunction<T>\n  // Separated for type inference to work\n  // eslint-disable-next-line @typescript-eslint/unified-signatures\n  compile<T = unknown>(schema: JTDSchemaType<T>, _meta?: boolean): ValidateFunction<T>\n  // This overload is only intended for typescript inference, the first\n  // argument prevents manual type annotation from matching this overload\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  compile<N extends never, T extends SomeJTDSchemaType>(\n    schema: T,\n    _meta?: boolean\n  ): ValidateFunction<JTDDataType<T>>\n  compile<T = unknown>(schema: AsyncSchema, _meta?: boolean): AsyncValidateFunction<T>\n  compile<T = unknown>(schema: AnySchema, _meta?: boolean): AnyValidateFunction<T>\n  compile<T = unknown>(schema: AnySchema, _meta?: boolean): AnyValidateFunction<T> {\n    const sch = this._addSchema(schema, _meta)\n    return (sch.validate || this._compileSchemaEnv(sch)) as AnyValidateFunction<T>\n  }\n\n  // Creates validating function for passed schema with asynchronous loading of missing schemas.\n  // `loadSchema` option should be a function that accepts schema uri and returns promise that resolves with the schema.\n  // TODO allow passing schema URI\n  // meta - optional true to compile meta-schema\n  compileAsync<T = unknown>(\n    schema: SchemaObject | JSONSchemaType<T>,\n    _meta?: boolean\n  ): Promise<ValidateFunction<T>>\n  // Separated for type inference to work\n  // eslint-disable-next-line @typescript-eslint/unified-signatures\n  compileAsync<T = unknown>(schema: JTDSchemaType<T>, _meta?: boolean): Promise<ValidateFunction<T>>\n  compileAsync<T = unknown>(schema: AsyncSchema, meta?: boolean): Promise<AsyncValidateFunction<T>>\n  // eslint-disable-next-line @typescript-eslint/unified-signatures\n  compileAsync<T = unknown>(\n    schema: AnySchemaObject,\n    meta?: boolean\n  ): Promise<AnyValidateFunction<T>>\n  compileAsync<T = unknown>(\n    schema: AnySchemaObject,\n    meta?: boolean\n  ): Promise<AnyValidateFunction<T>> {\n    if (typeof this.opts.loadSchema != \"function\") {\n      throw new Error(\"options.loadSchema should be a function\")\n    }\n    const {loadSchema} = this.opts\n    return runCompileAsync.call(this, schema, meta)\n\n    async function runCompileAsync(\n      this: Ajv,\n      _schema: AnySchemaObject,\n      _meta?: boolean\n    ): Promise<AnyValidateFunction> {\n      await loadMetaSchema.call(this, _schema.$schema)\n      const sch = this._addSchema(_schema, _meta)\n      return sch.validate || _compileAsync.call(this, sch)\n    }\n\n    async function loadMetaSchema(this: Ajv, $ref?: string): Promise<void> {\n      if ($ref && !this.getSchema($ref)) {\n        await runCompileAsync.call(this, {$ref}, true)\n      }\n    }\n\n    async function _compileAsync(this: Ajv, sch: SchemaEnv): Promise<AnyValidateFunction> {\n      try {\n        return this._compileSchemaEnv(sch)\n      } catch (e) {\n        if (!(e instanceof MissingRefError)) throw e\n        checkLoaded.call(this, e)\n        await loadMissingSchema.call(this, e.missingSchema)\n        return _compileAsync.call(this, sch)\n      }\n    }\n\n    function checkLoaded(this: Ajv, {missingSchema: ref, missingRef}: MissingRefError): void {\n      if (this.refs[ref]) {\n        throw new Error(`AnySchema ${ref} is loaded but ${missingRef} cannot be resolved`)\n      }\n    }\n\n    async function loadMissingSchema(this: Ajv, ref: string): Promise<void> {\n      const _schema = await _loadSchema.call(this, ref)\n      if (!this.refs[ref]) await loadMetaSchema.call(this, _schema.$schema)\n      if (!this.refs[ref]) this.addSchema(_schema, ref, meta)\n    }\n\n    async function _loadSchema(this: Ajv, ref: string): Promise<AnySchemaObject> {\n      const p = this._loading[ref]\n      if (p) return p\n      try {\n        return await (this._loading[ref] = loadSchema(ref))\n      } finally {\n        delete this._loading[ref]\n      }\n    }\n  }\n\n  // Adds schema to the instance\n  addSchema(\n    schema: AnySchema | AnySchema[], // If array is passed, `key` will be ignored\n    key?: string, // Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.\n    _meta?: boolean, // true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.\n    _validateSchema = this.opts.validateSchema // false to skip schema validation. Used internally, option validateSchema should be used instead.\n  ): Ajv {\n    if (Array.isArray(schema)) {\n      for (const sch of schema) this.addSchema(sch, undefined, _meta, _validateSchema)\n      return this\n    }\n    let id: string | undefined\n    if (typeof schema === \"object\") {\n      const {schemaId} = this.opts\n      id = schema[schemaId]\n      if (id !== undefined && typeof id != \"string\") {\n        throw new Error(`schema ${schemaId} must be string`)\n      }\n    }\n    key = normalizeId(key || id)\n    this._checkUnique(key)\n    this.schemas[key] = this._addSchema(schema, _meta, key, _validateSchema, true)\n    return this\n  }\n\n  // Add schema that will be used to validate other schemas\n  // options in META_IGNORE_OPTIONS are alway set to false\n  addMetaSchema(\n    schema: AnySchemaObject,\n    key?: string, // schema key\n    _validateSchema = this.opts.validateSchema // false to skip schema validation, can be used to override validateSchema option for meta-schema\n  ): Ajv {\n    this.addSchema(schema, key, true, _validateSchema)\n    return this\n  }\n\n  //  Validate schema against its meta-schema\n  validateSchema(schema: AnySchema, throwOrLogError?: boolean): boolean | Promise<unknown> {\n    if (typeof schema == \"boolean\") return true\n    let $schema: string | AnySchemaObject | undefined\n    $schema = schema.$schema\n    if ($schema !== undefined && typeof $schema != \"string\") {\n      throw new Error(\"$schema must be a string\")\n    }\n    $schema = $schema || this.opts.defaultMeta || this.defaultMeta()\n    if (!$schema) {\n      this.logger.warn(\"meta-schema not available\")\n      this.errors = null\n      return true\n    }\n    const valid = this.validate($schema, schema)\n    if (!valid && throwOrLogError) {\n      const message = \"schema is invalid: \" + this.errorsText()\n      if (this.opts.validateSchema === \"log\") this.logger.error(message)\n      else throw new Error(message)\n    }\n    return valid\n  }\n\n  // Get compiled schema by `key` or `ref`.\n  // (`key` that was passed to `addSchema` or full schema reference - `schema.$id` or resolved id)\n  getSchema<T = unknown>(keyRef: string): AnyValidateFunction<T> | undefined {\n    let sch\n    while (typeof (sch = getSchEnv.call(this, keyRef)) == \"string\") keyRef = sch\n    if (sch === undefined) {\n      const {schemaId} = this.opts\n      const root = new SchemaEnv({schema: {}, schemaId})\n      sch = resolveSchema.call(this, root, keyRef)\n      if (!sch) return\n      this.refs[keyRef] = sch\n    }\n    return (sch.validate || this._compileSchemaEnv(sch)) as AnyValidateFunction<T> | undefined\n  }\n\n  // Remove cached schema(s).\n  // If no parameter is passed all schemas but meta-schemas are removed.\n  // If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed.\n  // Even if schema is referenced by other schemas it still can be removed as other schemas have local references.\n  removeSchema(schemaKeyRef?: AnySchema | string | RegExp): Ajv {\n    if (schemaKeyRef instanceof RegExp) {\n      this._removeAllSchemas(this.schemas, schemaKeyRef)\n      this._removeAllSchemas(this.refs, schemaKeyRef)\n      return this\n    }\n    switch (typeof schemaKeyRef) {\n      case \"undefined\":\n        this._removeAllSchemas(this.schemas)\n        this._removeAllSchemas(this.refs)\n        this._cache.clear()\n        return this\n      case \"string\": {\n        const sch = getSchEnv.call(this, schemaKeyRef)\n        if (typeof sch == \"object\") this._cache.delete(sch.schema)\n        delete this.schemas[schemaKeyRef]\n        delete this.refs[schemaKeyRef]\n        return this\n      }\n      case \"object\": {\n        const cacheKey = schemaKeyRef\n        this._cache.delete(cacheKey)\n        let id = schemaKeyRef[this.opts.schemaId]\n        if (id) {\n          id = normalizeId(id)\n          delete this.schemas[id]\n          delete this.refs[id]\n        }\n        return this\n      }\n      default:\n        throw new Error(\"ajv.removeSchema: invalid parameter\")\n    }\n  }\n\n  // add \"vocabulary\" - a collection of keywords\n  addVocabulary(definitions: Vocabulary): Ajv {\n    for (const def of definitions) this.addKeyword(def)\n    return this\n  }\n\n  addKeyword(\n    kwdOrDef: string | KeywordDefinition,\n    def?: KeywordDefinition // deprecated\n  ): Ajv {\n    let keyword: string | string[]\n    if (typeof kwdOrDef == \"string\") {\n      keyword = kwdOrDef\n      if (typeof def == \"object\") {\n        this.logger.warn(\"these parameters are deprecated, see docs for addKeyword\")\n        def.keyword = keyword\n      }\n    } else if (typeof kwdOrDef == \"object\" && def === undefined) {\n      def = kwdOrDef\n      keyword = def.keyword\n      if (Array.isArray(keyword) && !keyword.length) {\n        throw new Error(\"addKeywords: keyword must be string or non-empty array\")\n      }\n    } else {\n      throw new Error(\"invalid addKeywords parameters\")\n    }\n\n    checkKeyword.call(this, keyword, def)\n    if (!def) {\n      eachItem(keyword, (kwd) => addRule.call(this, kwd))\n      return this\n    }\n    keywordMetaschema.call(this, def)\n    const definition: AddedKeywordDefinition = {\n      ...def,\n      type: getJSONTypes(def.type),\n      schemaType: getJSONTypes(def.schemaType),\n    }\n    eachItem(\n      keyword,\n      definition.type.length === 0\n        ? (k) => addRule.call(this, k, definition)\n        : (k) => definition.type.forEach((t) => addRule.call(this, k, definition, t))\n    )\n    return this\n  }\n\n  getKeyword(keyword: string): AddedKeywordDefinition | boolean {\n    const rule = this.RULES.all[keyword]\n    return typeof rule == \"object\" ? rule.definition : !!rule\n  }\n\n  // Remove keyword\n  removeKeyword(keyword: string): Ajv {\n    // TODO return type should be Ajv\n    const {RULES} = this\n    delete RULES.keywords[keyword]\n    delete RULES.all[keyword]\n    for (const group of RULES.rules) {\n      const i = group.rules.findIndex((rule) => rule.keyword === keyword)\n      if (i >= 0) group.rules.splice(i, 1)\n    }\n    return this\n  }\n\n  // Add format\n  addFormat(name: string, format: Format): Ajv {\n    if (typeof format == \"string\") format = new RegExp(format)\n    this.formats[name] = format\n    return this\n  }\n\n  errorsText(\n    errors: ErrorObject[] | null | undefined = this.errors, // optional array of validation errors\n    {separator = \", \", dataVar = \"data\"}: ErrorsTextOptions = {} // optional options with properties `separator` and `dataVar`\n  ): string {\n    if (!errors || errors.length === 0) return \"No errors\"\n    return errors\n      .map((e) => `${dataVar}${e.instancePath} ${e.message}`)\n      .reduce((text, msg) => text + separator + msg)\n  }\n\n  $dataMetaSchema(metaSchema: AnySchemaObject, keywordsJsonPointers: string[]): AnySchemaObject {\n    const rules = this.RULES.all\n    metaSchema = JSON.parse(JSON.stringify(metaSchema))\n    for (const jsonPointer of keywordsJsonPointers) {\n      const segments = jsonPointer.split(\"/\").slice(1) // first segment is an empty string\n      let keywords = metaSchema\n      for (const seg of segments) keywords = keywords[seg] as AnySchemaObject\n\n      for (const key in rules) {\n        const rule = rules[key]\n        if (typeof rule != \"object\") continue\n        const {$data} = rule.definition\n        const schema = keywords[key] as AnySchemaObject | undefined\n        if ($data && schema) keywords[key] = schemaOrData(schema)\n      }\n    }\n\n    return metaSchema\n  }\n\n  private _removeAllSchemas(schemas: {[Ref in string]?: SchemaEnv | string}, regex?: RegExp): void {\n    for (const keyRef in schemas) {\n      const sch = schemas[keyRef]\n      if (!regex || regex.test(keyRef)) {\n        if (typeof sch == \"string\") {\n          delete schemas[keyRef]\n        } else if (sch && !sch.meta) {\n          this._cache.delete(sch.schema)\n          delete schemas[keyRef]\n        }\n      }\n    }\n  }\n\n  _addSchema(\n    schema: AnySchema,\n    meta?: boolean,\n    baseId?: string,\n    validateSchema = this.opts.validateSchema,\n    addSchema = this.opts.addUsedSchema\n  ): SchemaEnv {\n    let id: string | undefined\n    const {schemaId} = this.opts\n    if (typeof schema == \"object\") {\n      id = schema[schemaId]\n    } else {\n      if (this.opts.jtd) throw new Error(\"schema must be object\")\n      else if (typeof schema != \"boolean\") throw new Error(\"schema must be object or boolean\")\n    }\n    let sch = this._cache.get(schema)\n    if (sch !== undefined) return sch\n\n    baseId = normalizeId(id || baseId)\n    const localRefs = getSchemaRefs.call(this, schema, baseId)\n    sch = new SchemaEnv({schema, schemaId, meta, baseId, localRefs})\n    this._cache.set(sch.schema, sch)\n    if (addSchema && !baseId.startsWith(\"#\")) {\n      // TODO atm it is allowed to overwrite schemas without id (instead of not adding them)\n      if (baseId) this._checkUnique(baseId)\n      this.refs[baseId] = sch\n    }\n    if (validateSchema) this.validateSchema(schema, true)\n    return sch\n  }\n\n  private _checkUnique(id: string): void {\n    if (this.schemas[id] || this.refs[id]) {\n      throw new Error(`schema with key or id \"${id}\" already exists`)\n    }\n  }\n\n  private _compileSchemaEnv(sch: SchemaEnv): AnyValidateFunction {\n    if (sch.meta) this._compileMetaSchema(sch)\n    else compileSchema.call(this, sch)\n\n    /* istanbul ignore if */\n    if (!sch.validate) throw new Error(\"ajv implementation error\")\n    return sch.validate\n  }\n\n  private _compileMetaSchema(sch: SchemaEnv): void {\n    const currentOpts = this.opts\n    this.opts = this._metaOpts\n    try {\n      compileSchema.call(this, sch)\n    } finally {\n      this.opts = currentOpts\n    }\n  }\n}\n\nexport interface ErrorsTextOptions {\n  separator?: string\n  dataVar?: string\n}\n\nfunction checkOptions(\n  this: Ajv,\n  checkOpts: OptionsInfo<RemovedOptions | DeprecatedOptions>,\n  options: Options & RemovedOptions,\n  msg: string,\n  log: \"warn\" | \"error\" = \"error\"\n): void {\n  for (const key in checkOpts) {\n    const opt = key as keyof typeof checkOpts\n    if (opt in options) this.logger[log](`${msg}: option ${key}. ${checkOpts[opt]}`)\n  }\n}\n\nfunction getSchEnv(this: Ajv, keyRef: string): SchemaEnv | string | undefined {\n  keyRef = normalizeId(keyRef) // TODO tests fail without this line\n  return this.schemas[keyRef] || this.refs[keyRef]\n}\n\nfunction addInitialSchemas(this: Ajv): void {\n  const optsSchemas = this.opts.schemas\n  if (!optsSchemas) return\n  if (Array.isArray(optsSchemas)) this.addSchema(optsSchemas)\n  else for (const key in optsSchemas) this.addSchema(optsSchemas[key] as AnySchema, key)\n}\n\nfunction addInitialFormats(this: Ajv): void {\n  for (const name in this.opts.formats) {\n    const format = this.opts.formats[name]\n    if (format) this.addFormat(name, format)\n  }\n}\n\nfunction addInitialKeywords(\n  this: Ajv,\n  defs: Vocabulary | {[K in string]?: KeywordDefinition}\n): void {\n  if (Array.isArray(defs)) {\n    this.addVocabulary(defs)\n    return\n  }\n  this.logger.warn(\"keywords option as map is deprecated, pass array\")\n  for (const keyword in defs) {\n    const def = defs[keyword] as KeywordDefinition\n    if (!def.keyword) def.keyword = keyword\n    this.addKeyword(def)\n  }\n}\n\nfunction getMetaSchemaOptions(this: Ajv): InstanceOptions {\n  const metaOpts = {...this.opts}\n  for (const opt of META_IGNORE_OPTIONS) delete metaOpts[opt]\n  return metaOpts\n}\n\nconst noLogs = {log() {}, warn() {}, error() {}}\n\nfunction getLogger(logger?: Partial<Logger> | false): Logger {\n  if (logger === false) return noLogs\n  if (logger === undefined) return console\n  if (logger.log && logger.warn && logger.error) return logger as Logger\n  throw new Error(\"logger must implement log, warn and error methods\")\n}\n\nconst KEYWORD_NAME = /^[a-z_$][a-z0-9_$:-]*$/i\n\nfunction checkKeyword(this: Ajv, keyword: string | string[], def?: KeywordDefinition): void {\n  const {RULES} = this\n  eachItem(keyword, (kwd) => {\n    if (RULES.keywords[kwd]) throw new Error(`Keyword ${kwd} is already defined`)\n    if (!KEYWORD_NAME.test(kwd)) throw new Error(`Keyword ${kwd} has invalid name`)\n  })\n  if (!def) return\n  if (def.$data && !(\"code\" in def || \"validate\" in def)) {\n    throw new Error('$data keyword must have \"code\" or \"validate\" function')\n  }\n}\n\nfunction addRule(\n  this: Ajv,\n  keyword: string,\n  definition?: AddedKeywordDefinition,\n  dataType?: JSONType\n): void {\n  const post = definition?.post\n  if (dataType && post) throw new Error('keyword with \"post\" flag cannot have \"type\"')\n  const {RULES} = this\n  let ruleGroup = post ? RULES.post : RULES.rules.find(({type: t}) => t === dataType)\n  if (!ruleGroup) {\n    ruleGroup = {type: dataType, rules: []}\n    RULES.rules.push(ruleGroup)\n  }\n  RULES.keywords[keyword] = true\n  if (!definition) return\n\n  const rule: Rule = {\n    keyword,\n    definition: {\n      ...definition,\n      type: getJSONTypes(definition.type),\n      schemaType: getJSONTypes(definition.schemaType),\n    },\n  }\n  if (definition.before) addBeforeRule.call(this, ruleGroup, rule, definition.before)\n  else ruleGroup.rules.push(rule)\n  RULES.all[keyword] = rule\n  definition.implements?.forEach((kwd) => this.addKeyword(kwd))\n}\n\nfunction addBeforeRule(this: Ajv, ruleGroup: RuleGroup, rule: Rule, before: string): void {\n  const i = ruleGroup.rules.findIndex((_rule) => _rule.keyword === before)\n  if (i >= 0) {\n    ruleGroup.rules.splice(i, 0, rule)\n  } else {\n    ruleGroup.rules.push(rule)\n    this.logger.warn(`rule ${before} is not defined`)\n  }\n}\n\nfunction keywordMetaschema(this: Ajv, def: KeywordDefinition): void {\n  let {metaSchema} = def\n  if (metaSchema === undefined) return\n  if (def.$data && this.opts.$data) metaSchema = schemaOrData(metaSchema)\n  def.validateSchema = this.compile(metaSchema, true)\n}\n\nconst $dataRef = {\n  $ref: \"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#\",\n}\n\nfunction schemaOrData(schema: AnySchema): AnySchemaObject {\n  return {anyOf: [schema, $dataRef]}\n}\n", "import type {CodeKeywordDefinition} from \"../../types\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"id\",\n  code() {\n    throw new Error('NOT SUPPORTED: keyword \"id\", use \"$id\" for schema ID')\n  },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport MissingRefError from \"../../compile/ref_error\"\nimport {callValidateCode} from \"../code\"\nimport {_, nil, stringify, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport {SchemaEnv, resolveRef} from \"../../compile\"\nimport {mergeEvaluated} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"$ref\",\n  schemaType: \"string\",\n  code(cxt: KeywordCxt): void {\n    const {gen, schema: $ref, it} = cxt\n    const {baseId, schemaEnv: env, validateName, opts, self} = it\n    const {root} = env\n    if (($ref === \"#\" || $ref === \"#/\") && baseId === root.baseId) return callRootRef()\n    const schOrEnv = resolveRef.call(self, root, baseId, $ref)\n    if (schOrEnv === undefined) throw new MissingRefError(it.opts.uriResolver, baseId, $ref)\n    if (schOrEnv instanceof SchemaEnv) return callValidate(schOrEnv)\n    return inlineRefSchema(schOrEnv)\n\n    function callRootRef(): void {\n      if (env === root) return callRef(cxt, validateName, env, env.$async)\n      const rootName = gen.scopeValue(\"root\", {ref: root})\n      return callRef(cxt, _`${rootName}.validate`, root, root.$async)\n    }\n\n    function callValidate(sch: SchemaEnv): void {\n      const v = getValidate(cxt, sch)\n      callRef(cxt, v, sch, sch.$async)\n    }\n\n    function inlineRefSchema(sch: AnySchema): void {\n      const schName = gen.scopeValue(\n        \"schema\",\n        opts.code.source === true ? {ref: sch, code: stringify(sch)} : {ref: sch}\n      )\n      const valid = gen.name(\"valid\")\n      const schCxt = cxt.subschema(\n        {\n          schema: sch,\n          dataTypes: [],\n          schemaPath: nil,\n          topSchemaRef: schName,\n          errSchemaPath: $ref,\n        },\n        valid\n      )\n      cxt.mergeEvaluated(schCxt)\n      cxt.ok(valid)\n    }\n  },\n}\n\nexport function getValidate(cxt: KeywordCxt, sch: SchemaEnv): Code {\n  const {gen} = cxt\n  return sch.validate\n    ? gen.scopeValue(\"validate\", {ref: sch.validate})\n    : _`${gen.scopeValue(\"wrapper\", {ref: sch})}.validate`\n}\n\nexport function callRef(cxt: KeywordCxt, v: Code, sch?: SchemaEnv, $async?: boolean): void {\n  const {gen, it} = cxt\n  const {allErrors, schemaEnv: env, opts} = it\n  const passCxt = opts.passContext ? N.this : nil\n  if ($async) callAsyncRef()\n  else callSyncRef()\n\n  function callAsyncRef(): void {\n    if (!env.$async) throw new Error(\"async schema referenced by sync schema\")\n    const valid = gen.let(\"valid\")\n    gen.try(\n      () => {\n        gen.code(_`await ${callValidateCode(cxt, v, passCxt)}`)\n        addEvaluatedFrom(v) // TODO will not work with async, it has to be returned with the result\n        if (!allErrors) gen.assign(valid, true)\n      },\n      (e) => {\n        gen.if(_`!(${e} instanceof ${it.ValidationError as Name})`, () => gen.throw(e))\n        addErrorsFrom(e)\n        if (!allErrors) gen.assign(valid, false)\n      }\n    )\n    cxt.ok(valid)\n  }\n\n  function callSyncRef(): void {\n    cxt.result(\n      callValidateCode(cxt, v, passCxt),\n      () => addEvaluatedFrom(v),\n      () => addErrorsFrom(v)\n    )\n  }\n\n  function addErrorsFrom(source: Code): void {\n    const errs = _`${source}.errors`\n    gen.assign(N.vErrors, _`${N.vErrors} === null ? ${errs} : ${N.vErrors}.concat(${errs})`) // TODO tagged\n    gen.assign(N.errors, _`${N.vErrors}.length`)\n  }\n\n  function addEvaluatedFrom(source: Code): void {\n    if (!it.opts.unevaluated) return\n    const schEvaluated = sch?.validate?.evaluated\n    // TODO refactor\n    if (it.props !== true) {\n      if (schEvaluated && !schEvaluated.dynamicProps) {\n        if (schEvaluated.props !== undefined) {\n          it.props = mergeEvaluated.props(gen, schEvaluated.props, it.props)\n        }\n      } else {\n        const props = gen.var(\"props\", _`${source}.evaluated.props`)\n        it.props = mergeEvaluated.props(gen, props, it.props, Name)\n      }\n    }\n    if (it.items !== true) {\n      if (schEvaluated && !schEvaluated.dynamicItems) {\n        if (schEvaluated.items !== undefined) {\n          it.items = mergeEvaluated.items(gen, schEvaluated.items, it.items)\n        }\n      } else {\n        const items = gen.var(\"items\", _`${source}.evaluated.items`)\n        it.items = mergeEvaluated.items(gen, items, it.items, Name)\n      }\n    }\n  }\n}\n\nexport default def\n", "import type {Vocabulary} from \"../../types\"\nimport idKeyword from \"./id\"\nimport refKeyword from \"./ref\"\n\nconst core: Vocabulary = [\n  \"$schema\",\n  \"$id\",\n  \"$defs\",\n  \"$vocabulary\",\n  {keyword: \"$comment\"},\n  \"definitions\",\n  idKeyword,\n  refKeyword,\n]\n\nexport default core\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators, Code} from \"../../compile/codegen\"\n\nconst ops = operators\n\ntype Kwd = \"maximum\" | \"minimum\" | \"exclusiveMaximum\" | \"exclusiveMinimum\"\n\ntype Comparison = \"<=\" | \">=\" | \"<\" | \">\"\n\nconst KWDs: {[K in Kwd]: {okStr: Comparison; ok: Code; fail: Code}} = {\n  maximum: {okStr: \"<=\", ok: ops.LTE, fail: ops.GT},\n  minimum: {okStr: \">=\", ok: ops.GTE, fail: ops.LT},\n  exclusiveMaximum: {okStr: \"<\", ok: ops.LT, fail: ops.GTE},\n  exclusiveMinimum: {okStr: \">\", ok: ops.GT, fail: ops.LTE},\n}\n\nexport type LimitNumberError = ErrorObject<\n  Kwd,\n  {limit: number; comparison: Comparison},\n  number | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n  message: ({keyword, schemaCode}) => str`must be ${KWDs[keyword as Kwd].okStr} ${schemaCode}`,\n  params: ({keyword, schemaCode}) =>\n    _`{comparison: ${KWDs[keyword as Kwd].okStr}, limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: Object.keys(KWDs),\n  type: \"number\",\n  schemaType: \"number\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {keyword, data, schemaCode} = cxt\n    cxt.fail$data(_`${data} ${KWDs[keyword as Kwd].fail} ${schemaCode} || isNaN(${data})`)\n  },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\n\nexport type MultipleOfError = ErrorObject<\n  \"multipleOf\",\n  {multipleOf: number},\n  number | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n  message: ({schemaCode}) => str`must be multiple of ${schemaCode}`,\n  params: ({schemaCode}) => _`{multipleOf: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"multipleOf\",\n  type: \"number\",\n  schemaType: \"number\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, data, schemaCode, it} = cxt\n    // const bdt = bad$DataType(schemaCode, <string>def.schemaType, $data)\n    const prec = it.opts.multipleOfPrecision\n    const res = gen.let(\"res\")\n    const invalid = prec\n      ? _`Math.abs(Math.round(${res}) - ${res}) > 1e-${prec}`\n      : _`${res} !== parseInt(${res})`\n    cxt.fail$data(_`(${schemaCode} === 0 || (${res} = ${data}/${schemaCode}, ${invalid}))`)\n  },\n}\n\nexport default def\n", "// https://mathiasbynens.be/notes/javascript-encoding\n// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode\nexport default function ucs2length(str: string): number {\n  const len = str.length\n  let length = 0\n  let pos = 0\n  let value: number\n  while (pos < len) {\n    length++\n    value = str.charCodeAt(pos++)\n    if (value >= 0xd800 && value <= 0xdbff && pos < len) {\n      // high surrogate, and there is a next character\n      value = str.charCodeAt(pos)\n      if ((value & 0xfc00) === 0xdc00) pos++ // low surrogate\n    }\n  }\n  return length\n}\n\nucs2length.code = 'require(\"ajv/dist/runtime/ucs2length\").default'\n", "import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport ucs2length from \"../../runtime/ucs2length\"\n\nconst error: KeywordErrorDefinition = {\n  message({keyword, schemaCode}) {\n    const comp = keyword === \"maxLength\" ? \"more\" : \"fewer\"\n    return str`must NOT have ${comp} than ${schemaCode} characters`\n  },\n  params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: [\"maxLength\", \"minLength\"],\n  type: \"string\",\n  schemaType: \"number\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {keyword, data, schemaCode, it} = cxt\n    const op = keyword === \"maxLength\" ? operators.GT : operators.LT\n    const len =\n      it.opts.unicode === false ? _`${data}.length` : _`${useFunc(cxt.gen, ucs2length)}(${data})`\n    cxt.fail$data(_`${len} ${op} ${schemaCode}`)\n  },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {usePattern} from \"../code\"\nimport {_, str} from \"../../compile/codegen\"\n\nexport type PatternError = ErrorObject<\"pattern\", {pattern: string}, string | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n  message: ({schemaCode}) => str`must match pattern \"${schemaCode}\"`,\n  params: ({schemaCode}) => _`{pattern: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"pattern\",\n  type: \"string\",\n  schemaType: \"string\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {data, $data, schema, schemaCode, it} = cxt\n    // TODO regexp should be wrapped in try/catchs\n    const u = it.opts.unicodeRegExp ? \"u\" : \"\"\n    const regExp = $data ? _`(new RegExp(${schemaCode}, ${u}))` : usePattern(cxt, schema)\n    cxt.fail$data(_`!${regExp}.test(${data})`)\n  },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\n\nconst error: KeywordErrorDefinition = {\n  message({keyword, schemaCode}) {\n    const comp = keyword === \"maxProperties\" ? \"more\" : \"fewer\"\n    return str`must NOT have ${comp} than ${schemaCode} properties`\n  },\n  params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: [\"maxProperties\", \"minProperties\"],\n  type: \"object\",\n  schemaType: \"number\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {keyword, data, schemaCode} = cxt\n    const op = keyword === \"maxProperties\" ? operators.GT : operators.LT\n    cxt.fail$data(_`Object.keys(${data}).length ${op} ${schemaCode}`)\n  },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {\n  checkReportMissingProp,\n  checkMissingProp,\n  reportMissingProp,\n  propertyInData,\n  noPropertyInData,\n} from \"../code\"\nimport {_, str, nil, not, Name, Code} from \"../../compile/codegen\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nexport type RequiredError = ErrorObject<\n  \"required\",\n  {missingProperty: string},\n  string[] | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params: {missingProperty}}) => str`must have required property '${missingProperty}'`,\n  params: ({params: {missingProperty}}) => _`{missingProperty: ${missingProperty}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"required\",\n  type: \"object\",\n  schemaType: \"array\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, schema, schemaCode, data, $data, it} = cxt\n    const {opts} = it\n    if (!$data && schema.length === 0) return\n    const useLoop = schema.length >= opts.loopRequired\n    if (it.allErrors) allErrorsMode()\n    else exitOnErrorMode()\n\n    if (opts.strictRequired) {\n      const props = cxt.parentSchema.properties\n      const {definedProperties} = cxt.it\n      for (const requiredKey of schema) {\n        if (props?.[requiredKey] === undefined && !definedProperties.has(requiredKey)) {\n          const schemaPath = it.schemaEnv.baseId + it.errSchemaPath\n          const msg = `required property \"${requiredKey}\" is not defined at \"${schemaPath}\" (strictRequired)`\n          checkStrictMode(it, msg, it.opts.strictRequired)\n        }\n      }\n    }\n\n    function allErrorsMode(): void {\n      if (useLoop || $data) {\n        cxt.block$data(nil, loopAllRequired)\n      } else {\n        for (const prop of schema) {\n          checkReportMissingProp(cxt, prop)\n        }\n      }\n    }\n\n    function exitOnErrorMode(): void {\n      const missing = gen.let(\"missing\")\n      if (useLoop || $data) {\n        const valid = gen.let(\"valid\", true)\n        cxt.block$data(valid, () => loopUntilMissing(missing, valid))\n        cxt.ok(valid)\n      } else {\n        gen.if(checkMissingProp(cxt, schema, missing))\n        reportMissingProp(cxt, missing)\n        gen.else()\n      }\n    }\n\n    function loopAllRequired(): void {\n      gen.forOf(\"prop\", schemaCode as Code, (prop) => {\n        cxt.setParams({missingProperty: prop})\n        gen.if(noPropertyInData(gen, data, prop, opts.ownProperties), () => cxt.error())\n      })\n    }\n\n    function loopUntilMissing(missing: Name, valid: Name): void {\n      cxt.setParams({missingProperty: missing})\n      gen.forOf(\n        missing,\n        schemaCode as Code,\n        () => {\n          gen.assign(valid, propertyInData(gen, data, missing, opts.ownProperties))\n          gen.if(not(valid), () => {\n            cxt.error()\n            gen.break()\n          })\n        },\n        nil\n      )\n    }\n  },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, operators} from \"../../compile/codegen\"\n\nconst error: KeywordErrorDefinition = {\n  message({keyword, schemaCode}) {\n    const comp = keyword === \"maxItems\" ? \"more\" : \"fewer\"\n    return str`must NOT have ${comp} than ${schemaCode} items`\n  },\n  params: ({schemaCode}) => _`{limit: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: [\"maxItems\", \"minItems\"],\n  type: \"array\",\n  schemaType: \"number\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {keyword, data, schemaCode} = cxt\n    const op = keyword === \"maxItems\" ? operators.GT : operators.LT\n    cxt.fail$data(_`${data}.length ${op} ${schemaCode}`)\n  },\n}\n\nexport default def\n", "// https://github.com/ajv-validator/ajv/issues/889\nimport * as equal from \"fast-deep-equal\"\n\ntype Equal = typeof equal & {code: string}\n;(equal as Equal).code = 'require(\"ajv/dist/runtime/equal\").default'\n\nexport default equal as Equal\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkDataTypes, getSchemaTypes, DataType} from \"../../compile/validate/dataType\"\nimport {_, str, Name} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type UniqueItemsError = ErrorObject<\n  \"uniqueItems\",\n  {i: number; j: number},\n  boolean | {$data: string}\n>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params: {i, j}}) =>\n    str`must NOT have duplicate items (items ## ${j} and ${i} are identical)`,\n  params: ({params: {i, j}}) => _`{i: ${i}, j: ${j}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"uniqueItems\",\n  type: \"array\",\n  schemaType: \"boolean\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, data, $data, schema, parentSchema, schemaCode, it} = cxt\n    if (!$data && !schema) return\n    const valid = gen.let(\"valid\")\n    const itemTypes = parentSchema.items ? getSchemaTypes(parentSchema.items) : []\n    cxt.block$data(valid, validateUniqueItems, _`${schemaCode} === false`)\n    cxt.ok(valid)\n\n    function validateUniqueItems(): void {\n      const i = gen.let(\"i\", _`${data}.length`)\n      const j = gen.let(\"j\")\n      cxt.setParams({i, j})\n      gen.assign(valid, true)\n      gen.if(_`${i} > 1`, () => (canOptimize() ? loopN : loopN2)(i, j))\n    }\n\n    function canOptimize(): boolean {\n      return itemTypes.length > 0 && !itemTypes.some((t) => t === \"object\" || t === \"array\")\n    }\n\n    function loopN(i: Name, j: Name): void {\n      const item = gen.name(\"item\")\n      const wrongType = checkDataTypes(itemTypes, item, it.opts.strictNumbers, DataType.Wrong)\n      const indices = gen.const(\"indices\", _`{}`)\n      gen.for(_`;${i}--;`, () => {\n        gen.let(item, _`${data}[${i}]`)\n        gen.if(wrongType, _`continue`)\n        if (itemTypes.length > 1) gen.if(_`typeof ${item} == \"string\"`, _`${item} += \"_\"`)\n        gen\n          .if(_`typeof ${indices}[${item}] == \"number\"`, () => {\n            gen.assign(j, _`${indices}[${item}]`)\n            cxt.error()\n            gen.assign(valid, false).break()\n          })\n          .code(_`${indices}[${item}] = ${i}`)\n      })\n    }\n\n    function loopN2(i: Name, j: Name): void {\n      const eql = useFunc(gen, equal)\n      const outer = gen.name(\"outer\")\n      gen.label(outer).for(_`;${i}--;`, () =>\n        gen.for(_`${j} = ${i}; ${j}--;`, () =>\n          gen.if(_`${eql}(${data}[${i}], ${data}[${j}])`, () => {\n            cxt.error()\n            gen.assign(valid, false).break(outer)\n          })\n        )\n      )\n    }\n  },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type ConstError = ErrorObject<\"const\", {allowedValue: any}>\n\nconst error: KeywordErrorDefinition = {\n  message: \"must be equal to constant\",\n  params: ({schemaCode}) => _`{allowedValue: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"const\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, data, $data, schemaCode, schema} = cxt\n    if ($data || (schema && typeof schema == \"object\")) {\n      cxt.fail$data(_`!${useFunc(gen, equal)}(${data}, ${schemaCode})`)\n    } else {\n      cxt.fail(_`${schema} !== ${data}`)\n    }\n  },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, or, Name, Code} from \"../../compile/codegen\"\nimport {useFunc} from \"../../compile/util\"\nimport equal from \"../../runtime/equal\"\n\nexport type EnumError = ErrorObject<\"enum\", {allowedValues: any[]}, any[] | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n  message: \"must be equal to one of the allowed values\",\n  params: ({schemaCode}) => _`{allowedValues: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"enum\",\n  schemaType: \"array\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, data, $data, schema, schemaCode, it} = cxt\n    if (!$data && schema.length === 0) throw new Error(\"enum must have non-empty array\")\n    const useLoop = schema.length >= it.opts.loopEnum\n    let eql: Name | undefined\n    const getEql = (): Name => (eql ??= useFunc(gen, equal))\n\n    let valid: Code\n    if (useLoop || $data) {\n      valid = gen.let(\"valid\")\n      cxt.block$data(valid, loopEnum)\n    } else {\n      /* istanbul ignore if */\n      if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n      const vSchema = gen.const(\"vSchema\", schemaCode)\n      valid = or(...schema.map((_x: unknown, i: number) => equalCode(vSchema, i)))\n    }\n    cxt.pass(valid)\n\n    function loopEnum(): void {\n      gen.assign(valid, false)\n      gen.forOf(\"v\", schemaCode as Code, (v) =>\n        gen.if(_`${getEql()}(${data}, ${v})`, () => gen.assign(valid, true).break())\n      )\n    }\n\n    function equalCode(vSchema: Name, i: number): Code {\n      const sch = schema[i]\n      return typeof sch === \"object\" && sch !== null\n        ? _`${getEql()}(${data}, ${vSchema}[${i}])`\n        : _`${data} === ${sch}`\n    }\n  },\n}\n\nexport default def\n", "import type {ErrorObject, Vocabulary} from \"../../types\"\nimport limitNumber, {LimitNumberError} from \"./limitNumber\"\nimport multipleOf, {MultipleOfError} from \"./multipleOf\"\nimport limitLength from \"./limitLength\"\nimport pattern, {PatternError} from \"./pattern\"\nimport limitProperties from \"./limitProperties\"\nimport required, {RequiredError} from \"./required\"\nimport limitItems from \"./limitItems\"\nimport uniqueItems, {UniqueItemsError} from \"./uniqueItems\"\nimport constKeyword, {ConstError} from \"./const\"\nimport enumKeyword, {EnumError} from \"./enum\"\n\nconst validation: Vocabulary = [\n  // number\n  limitNumber,\n  multipleOf,\n  // string\n  limitLength,\n  pattern,\n  // object\n  limitProperties,\n  required,\n  // array\n  limitItems,\n  uniqueItems,\n  // any\n  {keyword: \"type\", schemaType: [\"string\", \"array\"]},\n  {keyword: \"nullable\", schemaType: \"boolean\"},\n  constKeyword,\n  enumKeyword,\n]\n\nexport default validation\n\ntype LimitError = ErrorObject<\n  \"maxItems\" | \"minItems\" | \"minProperties\" | \"maxProperties\" | \"minLength\" | \"maxLength\",\n  {limit: number},\n  number | {$data: string}\n>\n\nexport type ValidationKeywordError =\n  | LimitError\n  | LimitNumberError\n  | MultipleOfError\n  | PatternError\n  | RequiredError\n  | UniqueItemsError\n  | ConstError\n  | EnumError\n", "import type {\n  CodeKeywordDefinition,\n  ErrorObject,\n  KeywordErrorDefinition,\n  AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode, Type} from \"../../compile/util\"\n\nexport type AdditionalItemsError = ErrorObject<\"additionalItems\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n  params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"additionalItems\" as const,\n  type: \"array\",\n  schemaType: [\"boolean\", \"object\"],\n  before: \"uniqueItems\",\n  error,\n  code(cxt: KeywordCxt) {\n    const {parentSchema, it} = cxt\n    const {items} = parentSchema\n    if (!Array.isArray(items)) {\n      checkStrictMode(it, '\"additionalItems\" is ignored when \"items\" is not an array of schemas')\n      return\n    }\n    validateAdditionalItems(cxt, items)\n  },\n}\n\nexport function validateAdditionalItems(cxt: KeywordCxt, items: AnySchema[]): void {\n  const {gen, schema, data, keyword, it} = cxt\n  it.items = true\n  const len = gen.const(\"len\", _`${data}.length`)\n  if (schema === false) {\n    cxt.setParams({len: items.length})\n    cxt.pass(_`${len} <= ${items.length}`)\n  } else if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n    const valid = gen.var(\"valid\", _`${len} <= ${items.length}`) // TODO var\n    gen.if(not(valid), () => validateItems(valid))\n    cxt.ok(valid)\n  }\n\n  function validateItems(valid: Name): void {\n    gen.forRange(\"i\", items.length, len, (i) => {\n      cxt.subschema({keyword, dataProp: i, dataPropType: Type.Num}, valid)\n      if (!it.allErrors) gen.if(not(valid), () => gen.break())\n    })\n  }\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, AnySchema, AnySchemaObject} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_} from \"../../compile/codegen\"\nimport {alwaysValidSchema, mergeEvaluated, checkStrictMode} from \"../../compile/util\"\nimport {validateArray} from \"../code\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"items\",\n  type: \"array\",\n  schemaType: [\"object\", \"array\", \"boolean\"],\n  before: \"uniqueItems\",\n  code(cxt: KeywordCxt) {\n    const {schema, it} = cxt\n    if (Array.isArray(schema)) return validateTuple(cxt, \"additionalItems\", schema)\n    it.items = true\n    if (alwaysValidSchema(it, schema)) return\n    cxt.ok(validateArray(cxt))\n  },\n}\n\nexport function validateTuple(\n  cxt: KeywordCxt,\n  extraItems: string,\n  schArr: AnySchema[] = cxt.schema\n): void {\n  const {gen, parentSchema, data, keyword, it} = cxt\n  checkStrictTuple(parentSchema)\n  if (it.opts.unevaluated && schArr.length && it.items !== true) {\n    it.items = mergeEvaluated.items(gen, schArr.length, it.items)\n  }\n  const valid = gen.name(\"valid\")\n  const len = gen.const(\"len\", _`${data}.length`)\n  schArr.forEach((sch: AnySchema, i: number) => {\n    if (alwaysValidSchema(it, sch)) return\n    gen.if(_`${len} > ${i}`, () =>\n      cxt.subschema(\n        {\n          keyword,\n          schemaProp: i,\n          dataProp: i,\n        },\n        valid\n      )\n    )\n    cxt.ok(valid)\n  })\n\n  function checkStrictTuple(sch: AnySchemaObject): void {\n    const {opts, errSchemaPath} = it\n    const l = schArr.length\n    const fullTuple = l === sch.minItems && (l === sch.maxItems || sch[extraItems] === false)\n    if (opts.strictTuples && !fullTuple) {\n      const msg = `\"${keyword}\" is ${l}-tuple, but minItems or maxItems/${extraItems} are not specified or different at path \"${errSchemaPath}\"`\n      checkStrictMode(it, msg, opts.strictTuples)\n    }\n  }\n}\n\nexport default def\n", "import type {CodeKeywordDefinition} from \"../../types\"\nimport {validateTuple} from \"./items\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"prefixItems\",\n  type: \"array\",\n  schemaType: [\"array\"],\n  before: \"uniqueItems\",\n  code: (cxt) => validateTuple(cxt, \"items\"),\n}\n\nexport default def\n", "import type {\n  CodeKeywordDefinition,\n  KeywordErrorDefinition,\n  ErrorObject,\n  AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {validateArray} from \"../code\"\nimport {validateAdditionalItems} from \"./additionalItems\"\n\nexport type ItemsError = ErrorObject<\"items\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n  params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"items\",\n  type: \"array\",\n  schemaType: [\"object\", \"boolean\"],\n  before: \"uniqueItems\",\n  error,\n  code(cxt: KeywordCxt) {\n    const {schema, parentSchema, it} = cxt\n    const {prefixItems} = parentSchema\n    it.items = true\n    if (alwaysValidSchema(it, schema)) return\n    if (prefixItems) validateAdditionalItems(cxt, prefixItems)\n    else cxt.ok(validateArray(cxt))\n  },\n}\n\nexport default def\n", "import type {\n  CodeKeywordDefinition,\n  KeywordErrorDefinition,\n  ErrorObject,\n  AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode, Type} from \"../../compile/util\"\n\nexport type ContainsError = ErrorObject<\n  \"contains\",\n  {minContains: number; maxContains?: number},\n  AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params: {min, max}}) =>\n    max === undefined\n      ? str`must contain at least ${min} valid item(s)`\n      : str`must contain at least ${min} and no more than ${max} valid item(s)`,\n  params: ({params: {min, max}}) =>\n    max === undefined ? _`{minContains: ${min}}` : _`{minContains: ${min}, maxContains: ${max}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"contains\",\n  type: \"array\",\n  schemaType: [\"object\", \"boolean\"],\n  before: \"uniqueItems\",\n  trackErrors: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, schema, parentSchema, data, it} = cxt\n    let min: number\n    let max: number | undefined\n    const {minContains, maxContains} = parentSchema\n    if (it.opts.next) {\n      min = minContains === undefined ? 1 : minContains\n      max = maxContains\n    } else {\n      min = 1\n    }\n    const len = gen.const(\"len\", _`${data}.length`)\n    cxt.setParams({min, max})\n    if (max === undefined && min === 0) {\n      checkStrictMode(it, `\"minContains\" == 0 without \"maxContains\": \"contains\" keyword ignored`)\n      return\n    }\n    if (max !== undefined && min > max) {\n      checkStrictMode(it, `\"minContains\" > \"maxContains\" is always invalid`)\n      cxt.fail()\n      return\n    }\n    if (alwaysValidSchema(it, schema)) {\n      let cond = _`${len} >= ${min}`\n      if (max !== undefined) cond = _`${cond} && ${len} <= ${max}`\n      cxt.pass(cond)\n      return\n    }\n\n    it.items = true\n    const valid = gen.name(\"valid\")\n    if (max === undefined && min === 1) {\n      validateItems(valid, () => gen.if(valid, () => gen.break()))\n    } else if (min === 0) {\n      gen.let(valid, true)\n      if (max !== undefined) gen.if(_`${data}.length > 0`, validateItemsWithCount)\n    } else {\n      gen.let(valid, false)\n      validateItemsWithCount()\n    }\n    cxt.result(valid, () => cxt.reset())\n\n    function validateItemsWithCount(): void {\n      const schValid = gen.name(\"_valid\")\n      const count = gen.let(\"count\", 0)\n      validateItems(schValid, () => gen.if(schValid, () => checkLimits(count)))\n    }\n\n    function validateItems(_valid: Name, block: () => void): void {\n      gen.forRange(\"i\", 0, len, (i) => {\n        cxt.subschema(\n          {\n            keyword: \"contains\",\n            dataProp: i,\n            dataPropType: Type.Num,\n            compositeRule: true,\n          },\n          _valid\n        )\n        block()\n      })\n    }\n\n    function checkLimits(count: Name): void {\n      gen.code(_`${count}++`)\n      if (max === undefined) {\n        gen.if(_`${count} >= ${min}`, () => gen.assign(valid, true).break())\n      } else {\n        gen.if(_`${count} > ${max}`, () => gen.assign(valid, false).break())\n        if (min === 1) gen.assign(valid, true)\n        else gen.if(_`${count} >= ${min}`, () => gen.assign(valid, true))\n      }\n    }\n  },\n}\n\nexport default def\n", "import type {\n  CodeKeywordDefinition,\n  ErrorObject,\n  KeywordErrorDefinition,\n  SchemaMap,\n  AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {checkReportMissingProp, checkMissingProp, reportMissingProp, propertyInData} from \"../code\"\n\nexport type PropertyDependencies = {[K in string]?: string[]}\n\nexport interface DependenciesErrorParams {\n  property: string\n  missingProperty: string\n  depsCount: number\n  deps: string // TODO change to string[]\n}\n\ntype SchemaDependencies = SchemaMap\n\nexport type DependenciesError = ErrorObject<\n  \"dependencies\",\n  DependenciesErrorParams,\n  {[K in string]?: string[] | AnySchema}\n>\n\nexport const error: KeywordErrorDefinition = {\n  message: ({params: {property, depsCount, deps}}) => {\n    const property_ies = depsCount === 1 ? \"property\" : \"properties\"\n    return str`must have ${property_ies} ${deps} when property ${property} is present`\n  },\n  params: ({params: {property, depsCount, deps, missingProperty}}) =>\n    _`{property: ${property},\n    missingProperty: ${missingProperty},\n    depsCount: ${depsCount},\n    deps: ${deps}}`, // TODO change to reference\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"dependencies\",\n  type: \"object\",\n  schemaType: \"object\",\n  error,\n  code(cxt: KeywordCxt) {\n    const [propDeps, schDeps] = splitDependencies(cxt)\n    validatePropertyDeps(cxt, propDeps)\n    validateSchemaDeps(cxt, schDeps)\n  },\n}\n\nfunction splitDependencies({schema}: KeywordCxt): [PropertyDependencies, SchemaDependencies] {\n  const propertyDeps: PropertyDependencies = {}\n  const schemaDeps: SchemaDependencies = {}\n  for (const key in schema) {\n    if (key === \"__proto__\") continue\n    const deps = Array.isArray(schema[key]) ? propertyDeps : schemaDeps\n    deps[key] = schema[key]\n  }\n  return [propertyDeps, schemaDeps]\n}\n\nexport function validatePropertyDeps(\n  cxt: KeywordCxt,\n  propertyDeps: {[K in string]?: string[]} = cxt.schema\n): void {\n  const {gen, data, it} = cxt\n  if (Object.keys(propertyDeps).length === 0) return\n  const missing = gen.let(\"missing\")\n  for (const prop in propertyDeps) {\n    const deps = propertyDeps[prop] as string[]\n    if (deps.length === 0) continue\n    const hasProperty = propertyInData(gen, data, prop, it.opts.ownProperties)\n    cxt.setParams({\n      property: prop,\n      depsCount: deps.length,\n      deps: deps.join(\", \"),\n    })\n    if (it.allErrors) {\n      gen.if(hasProperty, () => {\n        for (const depProp of deps) {\n          checkReportMissingProp(cxt, depProp)\n        }\n      })\n    } else {\n      gen.if(_`${hasProperty} && (${checkMissingProp(cxt, deps, missing)})`)\n      reportMissingProp(cxt, missing)\n      gen.else()\n    }\n  }\n}\n\nexport function validateSchemaDeps(cxt: KeywordCxt, schemaDeps: SchemaMap = cxt.schema): void {\n  const {gen, data, keyword, it} = cxt\n  const valid = gen.name(\"valid\")\n  for (const prop in schemaDeps) {\n    if (alwaysValidSchema(it, schemaDeps[prop] as AnySchema)) continue\n    gen.if(\n      propertyInData(gen, data, prop, it.opts.ownProperties),\n      () => {\n        const schCxt = cxt.subschema({keyword, schemaProp: prop}, valid)\n        cxt.mergeValidEvaluated(schCxt, valid)\n      },\n      () => gen.var(valid, true) // TODO var\n    )\n    cxt.ok(valid)\n  }\n}\n\nexport default def\n", "import type {\n  CodeKeywordDefinition,\n  ErrorObject,\n  KeywordErrorDefinition,\n  AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, not} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nexport type PropertyNamesError = ErrorObject<\"propertyNames\", {propertyName: string}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n  message: \"property name must be valid\",\n  params: ({params}) => _`{propertyName: ${params.propertyName}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"propertyNames\",\n  type: \"object\",\n  schemaType: [\"object\", \"boolean\"],\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, schema, data, it} = cxt\n    if (alwaysValidSchema(it, schema)) return\n    const valid = gen.name(\"valid\")\n\n    gen.forIn(\"key\", data, (key) => {\n      cxt.setParams({propertyName: key})\n      cxt.subschema(\n        {\n          keyword: \"propertyNames\",\n          data: key,\n          dataTypes: [\"string\"],\n          propertyName: key,\n          compositeRule: true,\n        },\n        valid\n      )\n      gen.if(not(valid), () => {\n        cxt.error(true)\n        if (!it.allErrors) gen.break()\n      })\n    })\n\n    cxt.ok(valid)\n  },\n}\n\nexport default def\n", "import type {\n  CodeKeywordDefinition,\n  AddedKeywordDefinition,\n  ErrorObject,\n  KeywordErrorDefinition,\n  AnySchema,\n} from \"../../types\"\nimport {allSchemaProperties, usePattern, isOwnProperty} from \"../code\"\nimport {_, nil, or, not, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport type {SubschemaArgs} from \"../../compile/validate/subschema\"\nimport {alwaysValidSchema, schemaRefOrVal, Type} from \"../../compile/util\"\n\nexport type AdditionalPropertiesError = ErrorObject<\n  \"additionalProperties\",\n  {additionalProperty: string},\n  AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n  message: \"must NOT have additional properties\",\n  params: ({params}) => _`{additionalProperty: ${params.additionalProperty}}`,\n}\n\nconst def: CodeKeywordDefinition & AddedKeywordDefinition = {\n  keyword: \"additionalProperties\",\n  type: [\"object\"],\n  schemaType: [\"boolean\", \"object\"],\n  allowUndefined: true,\n  trackErrors: true,\n  error,\n  code(cxt) {\n    const {gen, schema, parentSchema, data, errsCount, it} = cxt\n    /* istanbul ignore if */\n    if (!errsCount) throw new Error(\"ajv implementation error\")\n    const {allErrors, opts} = it\n    it.props = true\n    if (opts.removeAdditional !== \"all\" && alwaysValidSchema(it, schema)) return\n    const props = allSchemaProperties(parentSchema.properties)\n    const patProps = allSchemaProperties(parentSchema.patternProperties)\n    checkAdditionalProperties()\n    cxt.ok(_`${errsCount} === ${N.errors}`)\n\n    function checkAdditionalProperties(): void {\n      gen.forIn(\"key\", data, (key: Name) => {\n        if (!props.length && !patProps.length) additionalPropertyCode(key)\n        else gen.if(isAdditional(key), () => additionalPropertyCode(key))\n      })\n    }\n\n    function isAdditional(key: Name): Code {\n      let definedProp: Code\n      if (props.length > 8) {\n        // TODO maybe an option instead of hard-coded 8?\n        const propsSchema = schemaRefOrVal(it, parentSchema.properties, \"properties\")\n        definedProp = isOwnProperty(gen, propsSchema as Code, key)\n      } else if (props.length) {\n        definedProp = or(...props.map((p) => _`${key} === ${p}`))\n      } else {\n        definedProp = nil\n      }\n      if (patProps.length) {\n        definedProp = or(definedProp, ...patProps.map((p) => _`${usePattern(cxt, p)}.test(${key})`))\n      }\n      return not(definedProp)\n    }\n\n    function deleteAdditional(key: Name): void {\n      gen.code(_`delete ${data}[${key}]`)\n    }\n\n    function additionalPropertyCode(key: Name): void {\n      if (opts.removeAdditional === \"all\" || (opts.removeAdditional && schema === false)) {\n        deleteAdditional(key)\n        return\n      }\n\n      if (schema === false) {\n        cxt.setParams({additionalProperty: key})\n        cxt.error()\n        if (!allErrors) gen.break()\n        return\n      }\n\n      if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n        const valid = gen.name(\"valid\")\n        if (opts.removeAdditional === \"failing\") {\n          applyAdditionalSchema(key, valid, false)\n          gen.if(not(valid), () => {\n            cxt.reset()\n            deleteAdditional(key)\n          })\n        } else {\n          applyAdditionalSchema(key, valid)\n          if (!allErrors) gen.if(not(valid), () => gen.break())\n        }\n      }\n    }\n\n    function applyAdditionalSchema(key: Name, valid: Name, errors?: false): void {\n      const subschema: SubschemaArgs = {\n        keyword: \"additionalProperties\",\n        dataProp: key,\n        dataPropType: Type.Str,\n      }\n      if (errors === false) {\n        Object.assign(subschema, {\n          compositeRule: true,\n          createErrors: false,\n          allErrors: false,\n        })\n      }\n      cxt.subschema(subschema, valid)\n    }\n  },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition} from \"../../types\"\nimport {KeywordCxt} from \"../../compile/validate\"\nimport {propertyInData, allSchemaProperties} from \"../code\"\nimport {alwaysValidSchema, toHash, mergeEvaluated} from \"../../compile/util\"\nimport apDef from \"./additionalProperties\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"properties\",\n  type: \"object\",\n  schemaType: \"object\",\n  code(cxt: KeywordCxt) {\n    const {gen, schema, parentSchema, data, it} = cxt\n    if (it.opts.removeAdditional === \"all\" && parentSchema.additionalProperties === undefined) {\n      apDef.code(new KeywordCxt(it, apDef, \"additionalProperties\"))\n    }\n    const allProps = allSchemaProperties(schema)\n    for (const prop of allProps) {\n      it.definedProperties.add(prop)\n    }\n    if (it.opts.unevaluated && allProps.length && it.props !== true) {\n      it.props = mergeEvaluated.props(gen, toHash(allProps), it.props)\n    }\n    const properties = allProps.filter((p) => !alwaysValidSchema(it, schema[p]))\n    if (properties.length === 0) return\n    const valid = gen.name(\"valid\")\n\n    for (const prop of properties) {\n      if (hasDefault(prop)) {\n        applyPropertySchema(prop)\n      } else {\n        gen.if(propertyInData(gen, data, prop, it.opts.ownProperties))\n        applyPropertySchema(prop)\n        if (!it.allErrors) gen.else().var(valid, true)\n        gen.endIf()\n      }\n      cxt.it.definedProperties.add(prop)\n      cxt.ok(valid)\n    }\n\n    function hasDefault(prop: string): boolean | undefined {\n      return it.opts.useDefaults && !it.compositeRule && schema[prop].default !== undefined\n    }\n\n    function applyPropertySchema(prop: string): void {\n      cxt.subschema(\n        {\n          keyword: \"properties\",\n          schemaProp: prop,\n          dataProp: prop,\n        },\n        valid\n      )\n    }\n  },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {allSchemaProperties, usePattern} from \"../code\"\nimport {_, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode} from \"../../compile/util\"\nimport {evaluatedPropsToName, Type} from \"../../compile/util\"\nimport {AnySchema} from \"../../types\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"patternProperties\",\n  type: \"object\",\n  schemaType: \"object\",\n  code(cxt: KeywordCxt) {\n    const {gen, schema, data, parentSchema, it} = cxt\n    const {opts} = it\n    const patterns = allSchemaProperties(schema)\n    const alwaysValidPatterns = patterns.filter((p) =>\n      alwaysValidSchema(it, schema[p] as AnySchema)\n    )\n\n    if (\n      patterns.length === 0 ||\n      (alwaysValidPatterns.length === patterns.length &&\n        (!it.opts.unevaluated || it.props === true))\n    ) {\n      return\n    }\n\n    const checkProperties =\n      opts.strictSchema && !opts.allowMatchingProperties && parentSchema.properties\n    const valid = gen.name(\"valid\")\n    if (it.props !== true && !(it.props instanceof Name)) {\n      it.props = evaluatedPropsToName(gen, it.props)\n    }\n    const {props} = it\n    validatePatternProperties()\n\n    function validatePatternProperties(): void {\n      for (const pat of patterns) {\n        if (checkProperties) checkMatchingProperties(pat)\n        if (it.allErrors) {\n          validateProperties(pat)\n        } else {\n          gen.var(valid, true) // TODO var\n          validateProperties(pat)\n          gen.if(valid)\n        }\n      }\n    }\n\n    function checkMatchingProperties(pat: string): void {\n      for (const prop in checkProperties) {\n        if (new RegExp(pat).test(prop)) {\n          checkStrictMode(\n            it,\n            `property ${prop} matches pattern ${pat} (use allowMatchingProperties)`\n          )\n        }\n      }\n    }\n\n    function validateProperties(pat: string): void {\n      gen.forIn(\"key\", data, (key) => {\n        gen.if(_`${usePattern(cxt, pat)}.test(${key})`, () => {\n          const alwaysValid = alwaysValidPatterns.includes(pat)\n          if (!alwaysValid) {\n            cxt.subschema(\n              {\n                keyword: \"patternProperties\",\n                schemaProp: pat,\n                dataProp: key,\n                dataPropType: Type.Str,\n              },\n              valid\n            )\n          }\n\n          if (it.opts.unevaluated && props !== true) {\n            gen.assign(_`${props}[${key}]`, true)\n          } else if (!alwaysValid && !it.allErrors) {\n            // can short-circuit if `unevaluatedProperties` is not supported (opts.next === false)\n            // or if all properties were evaluated (props === true)\n            gen.if(not(valid), () => gen.break())\n          }\n        })\n      })\n    }\n  },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nexport type NotKeywordError = ErrorNoParams<\"not\", AnySchema>\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"not\",\n  schemaType: [\"object\", \"boolean\"],\n  trackErrors: true,\n  code(cxt: KeywordCxt) {\n    const {gen, schema, it} = cxt\n    if (alwaysValidSchema(it, schema)) {\n      cxt.fail()\n      return\n    }\n\n    const valid = gen.name(\"valid\")\n    cxt.subschema(\n      {\n        keyword: \"not\",\n        compositeRule: true,\n        createErrors: false,\n        allErrors: false,\n      },\n      valid\n    )\n\n    cxt.failResult(\n      valid,\n      () => cxt.reset(),\n      () => cxt.error()\n    )\n  },\n  error: {message: \"must NOT be valid\"},\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, ErrorNoParams, AnySchema} from \"../../types\"\nimport {validateUnion} from \"../code\"\n\nexport type AnyOfError = ErrorNoParams<\"anyOf\", AnySchema[]>\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"anyOf\",\n  schemaType: \"array\",\n  trackErrors: true,\n  code: validateUnion,\n  error: {message: \"must match a schema in anyOf\"},\n}\n\nexport default def\n", "import type {\n  CodeKeywordDefinition,\n  ErrorObject,\n  KeywordErrorDefinition,\n  AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema} from \"../../compile/util\"\nimport {SchemaCxt} from \"../../compile\"\n\nexport type OneOfError = ErrorObject<\n  \"oneOf\",\n  {passingSchemas: [number, number] | null},\n  AnySchema[]\n>\n\nconst error: KeywordErrorDefinition = {\n  message: \"must match exactly one schema in oneOf\",\n  params: ({params}) => _`{passingSchemas: ${params.passing}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"oneOf\",\n  schemaType: \"array\",\n  trackErrors: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, schema, parentSchema, it} = cxt\n    /* istanbul ignore if */\n    if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n    if (it.opts.discriminator && parentSchema.discriminator) return\n    const schArr: AnySchema[] = schema\n    const valid = gen.let(\"valid\", false)\n    const passing = gen.let(\"passing\", null)\n    const schValid = gen.name(\"_valid\")\n    cxt.setParams({passing})\n    // TODO possibly fail straight away (with warning or exception) if there are two empty always valid schemas\n\n    gen.block(validateOneOf)\n\n    cxt.result(\n      valid,\n      () => cxt.reset(),\n      () => cxt.error(true)\n    )\n\n    function validateOneOf(): void {\n      schArr.forEach((sch: AnySchema, i: number) => {\n        let schCxt: SchemaCxt | undefined\n        if (alwaysValidSchema(it, sch)) {\n          gen.var(schValid, true)\n        } else {\n          schCxt = cxt.subschema(\n            {\n              keyword: \"oneOf\",\n              schemaProp: i,\n              compositeRule: true,\n            },\n            schValid\n          )\n        }\n\n        if (i > 0) {\n          gen\n            .if(_`${schValid} && ${valid}`)\n            .assign(valid, false)\n            .assign(passing, _`[${passing}, ${i}]`)\n            .else()\n        }\n\n        gen.if(schValid, () => {\n          gen.assign(valid, true)\n          gen.assign(passing, i)\n          if (schCxt) cxt.mergeEvaluated(schCxt, Name)\n        })\n      })\n    }\n  },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition, AnySchema} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {alwaysValidSchema} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"allOf\",\n  schemaType: \"array\",\n  code(cxt: KeywordCxt) {\n    const {gen, schema, it} = cxt\n    /* istanbul ignore if */\n    if (!Array.isArray(schema)) throw new Error(\"ajv implementation error\")\n    const valid = gen.name(\"valid\")\n    schema.forEach((sch: AnySchema, i: number) => {\n      if (alwaysValidSchema(it, sch)) return\n      const schCxt = cxt.subschema({keyword: \"allOf\", schemaProp: i}, valid)\n      cxt.ok(valid)\n      cxt.mergeEvaluated(schCxt)\n    })\n  },\n}\n\nexport default def\n", "import type {\n  CodeKeywordDefinition,\n  ErrorObject,\n  KeywordErrorDefinition,\n  AnySchema,\n} from \"../../types\"\nimport type {SchemaObjCxt} from \"../../compile\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, checkStrictMode} from \"../../compile/util\"\n\nexport type IfKeywordError = ErrorObject<\"if\", {failingKeyword: string}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params}) => str`must match \"${params.ifClause}\" schema`,\n  params: ({params}) => _`{failingKeyword: ${params.ifClause}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"if\",\n  schemaType: [\"object\", \"boolean\"],\n  trackErrors: true,\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, parentSchema, it} = cxt\n    if (parentSchema.then === undefined && parentSchema.else === undefined) {\n      checkStrictMode(it, '\"if\" without \"then\" and \"else\" is ignored')\n    }\n    const hasThen = hasSchema(it, \"then\")\n    const hasElse = hasSchema(it, \"else\")\n    if (!hasThen && !hasElse) return\n\n    const valid = gen.let(\"valid\", true)\n    const schValid = gen.name(\"_valid\")\n    validateIf()\n    cxt.reset()\n\n    if (hasThen && hasElse) {\n      const ifClause = gen.let(\"ifClause\")\n      cxt.setParams({ifClause})\n      gen.if(schValid, validateClause(\"then\", ifClause), validateClause(\"else\", ifClause))\n    } else if (hasThen) {\n      gen.if(schValid, validateClause(\"then\"))\n    } else {\n      gen.if(not(schValid), validateClause(\"else\"))\n    }\n\n    cxt.pass(valid, () => cxt.error(true))\n\n    function validateIf(): void {\n      const schCxt = cxt.subschema(\n        {\n          keyword: \"if\",\n          compositeRule: true,\n          createErrors: false,\n          allErrors: false,\n        },\n        schValid\n      )\n      cxt.mergeEvaluated(schCxt)\n    }\n\n    function validateClause(keyword: string, ifClause?: Name): () => void {\n      return () => {\n        const schCxt = cxt.subschema({keyword}, schValid)\n        gen.assign(valid, schValid)\n        cxt.mergeValidEvaluated(schCxt, valid)\n        if (ifClause) gen.assign(ifClause, _`${keyword}`)\n        else cxt.setParams({ifClause: keyword})\n      }\n    }\n  },\n}\n\nfunction hasSchema(it: SchemaObjCxt, keyword: string): boolean {\n  const schema = it.schema[keyword]\n  return schema !== undefined && !alwaysValidSchema(it, schema)\n}\n\nexport default def\n", "import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: [\"then\", \"else\"],\n  schemaType: [\"object\", \"boolean\"],\n  code({keyword, parentSchema, it}: KeywordCxt) {\n    if (parentSchema.if === undefined) checkStrictMode(it, `\"${keyword}\" without \"if\" is ignored`)\n  },\n}\n\nexport default def\n", "import type {ErrorNoParams, Vocabulary} from \"../../types\"\nimport additionalItems, {AdditionalItemsError} from \"./additionalItems\"\nimport prefixItems from \"./prefixItems\"\nimport items from \"./items\"\nimport items2020, {ItemsError} from \"./items2020\"\nimport contains, {ContainsError} from \"./contains\"\nimport dependencies, {DependenciesError} from \"./dependencies\"\nimport propertyNames, {PropertyNamesError} from \"./propertyNames\"\nimport additionalProperties, {AdditionalPropertiesError} from \"./additionalProperties\"\nimport properties from \"./properties\"\nimport patternProperties from \"./patternProperties\"\nimport notKeyword, {NotKeywordError} from \"./not\"\nimport anyOf, {AnyOfError} from \"./anyOf\"\nimport oneOf, {OneOfError} from \"./oneOf\"\nimport allOf from \"./allOf\"\nimport ifKeyword, {IfKeywordError} from \"./if\"\nimport thenElse from \"./thenElse\"\n\nexport default function getApplicator(draft2020 = false): Vocabulary {\n  const applicator = [\n    // any\n    notKeyword,\n    anyOf,\n    oneOf,\n    allOf,\n    ifKeyword,\n    thenElse,\n    // object\n    propertyNames,\n    additionalProperties,\n    dependencies,\n    properties,\n    patternProperties,\n  ]\n  // array\n  if (draft2020) applicator.push(prefixItems, items2020)\n  else applicator.push(additionalItems, items)\n  applicator.push(contains)\n  return applicator\n}\n\nexport type ApplicatorKeywordError =\n  | ErrorNoParams<\"false schema\">\n  | AdditionalItemsError\n  | ItemsError\n  | ContainsError\n  | AdditionalPropertiesError\n  | DependenciesError\n  | IfKeywordError\n  | AnyOfError\n  | OneOfError\n  | NotKeywordError\n  | PropertyNamesError\n", "import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, getProperty, Code} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport {SchemaEnv, compileSchema} from \"../../compile\"\nimport {getValidate} from \"../core/ref\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"$dynamicAnchor\",\n  schemaType: \"string\",\n  code: (cxt) => dynamicAnchor(cxt, cxt.schema),\n}\n\nexport function dynamicAnchor(cxt: KeywordCxt, anchor: string): void {\n  const {gen, it} = cxt\n  it.schemaEnv.root.dynamicAnchors[anchor] = true\n  const v = _`${N.dynamicAnchors}${getProperty(anchor)}`\n  const validate = it.errSchemaPath === \"#\" ? it.validateName : _getValidate(cxt)\n  gen.if(_`!${v}`, () => gen.assign(v, validate))\n}\n\nfunction _getValidate(cxt: KeywordCxt): Code {\n  const {schemaEnv, schema, self} = cxt.it\n  const {root, baseId, localRefs, meta} = schemaEnv.root\n  const {schemaId} = self.opts\n  const sch = new SchemaEnv({schema, schemaId, root, baseId, localRefs, meta})\n  compileSchema.call(self, sch)\n  return getValidate(cxt, sch)\n}\n\nexport default def\n", "import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, getProperty, Code, Name} from \"../../compile/codegen\"\nimport N from \"../../compile/names\"\nimport {callRef} from \"../core/ref\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"$dynamicRef\",\n  schemaType: \"string\",\n  code: (cxt) => dynamicRef(cxt, cxt.schema),\n}\n\nexport function dynamicRef(cxt: KeywordCxt, ref: string): void {\n  const {gen, keyword, it} = cxt\n  if (ref[0] !== \"#\") throw new Error(`\"${keyword}\" only supports hash fragment reference`)\n  const anchor = ref.slice(1)\n  if (it.allErrors) {\n    _dynamicRef()\n  } else {\n    const valid = gen.let(\"valid\", false)\n    _dynamicRef(valid)\n    cxt.ok(valid)\n  }\n\n  function _dynamicRef(valid?: Name): void {\n    // TODO the assumption here is that `recursiveRef: #` always points to the root\n    // of the schema object, which is not correct, because there may be $id that\n    // makes # point to it, and the target schema may not contain dynamic/recursiveAnchor.\n    // Because of that 2 tests in recursiveRef.json fail.\n    // This is a similar problem to #815 (`$id` doesn't alter resolution scope for `{ \"$ref\": \"#\" }`).\n    // (This problem is not tested in JSON-Schema-Test-Suite)\n    if (it.schemaEnv.root.dynamicAnchors[anchor]) {\n      const v = gen.let(\"_v\", _`${N.dynamicAnchors}${getProperty(anchor)}`)\n      gen.if(v, _callRef(v, valid), _callRef(it.validateName, valid))\n    } else {\n      _callRef(it.validateName, valid)()\n    }\n  }\n\n  function _callRef(validate: Code, valid?: Name): () => void {\n    return valid\n      ? () =>\n          gen.block(() => {\n            callRef(cxt, validate)\n            gen.let(valid, true)\n          })\n      : () => callRef(cxt, validate)\n  }\n}\n\nexport default def\n", "import type {CodeKeywordDefinition} from \"../../types\"\nimport {dynamicAnchor} from \"./dynamicAnchor\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"$recursiveAnchor\",\n  schemaType: \"boolean\",\n  code(cxt) {\n    if (cxt.schema) dynamicAnchor(cxt, \"\")\n    else checkStrictMode(cxt.it, \"$recursiveAnchor: false is ignored\")\n  },\n}\n\nexport default def\n", "import type {CodeKeywordDefinition} from \"../../types\"\nimport {dynamicRef} from \"./dynamicRef\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"$recursiveRef\",\n  schemaType: \"string\",\n  code: (cxt) => dynamicRef(cxt, cxt.schema),\n}\n\nexport default def\n", "import type {Vocabulary} from \"../../types\"\nimport dynamicAnchor from \"./dynamicAnchor\"\nimport dynamicRef from \"./dynamicRef\"\nimport recursiveAnchor from \"./recursiveAnchor\"\nimport recursiveRef from \"./recursiveRef\"\n\nconst dynamic: Vocabulary = [dynamicAnchor, dynamicRef, recursiveAnchor, recursiveRef]\n\nexport default dynamic\n", "import type {CodeKeywordDefinition, ErrorObject} from \"../../types\"\nimport {\n  validatePropertyDeps,\n  error,\n  DependenciesErrorParams,\n  PropertyDependencies,\n} from \"../applicator/dependencies\"\n\nexport type DependentRequiredError = ErrorObject<\n  \"dependentRequired\",\n  DependenciesErrorParams,\n  PropertyDependencies\n>\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"dependentRequired\",\n  type: \"object\",\n  schemaType: \"object\",\n  error,\n  code: (cxt) => validatePropertyDeps(cxt),\n}\n\nexport default def\n", "import type {CodeKeywordDefinition} from \"../../types\"\nimport {validateSchemaDeps} from \"./dependencies\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"dependentSchemas\",\n  type: \"object\",\n  schemaType: \"object\",\n  code: (cxt) => validateSchemaDeps(cxt),\n}\n\nexport default def\n", "import type {CodeKeywordDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {checkStrictMode} from \"../../compile/util\"\n\nconst def: CodeKeywordDefinition = {\n  keyword: [\"maxContains\", \"minContains\"],\n  type: \"array\",\n  schemaType: \"number\",\n  code({keyword, parentSchema, it}: KeywordCxt) {\n    if (parentSchema.contains === undefined) {\n      checkStrictMode(it, `\"${keyword}\" without \"contains\" is ignored`)\n    }\n  },\n}\n\nexport default def\n", "import type {Vocabulary} from \"../types\"\nimport dependentRequired from \"./validation/dependentRequired\"\nimport dependentSchemas from \"./applicator/dependentSchemas\"\nimport limitContains from \"./validation/limitContains\"\n\nconst next: Vocabulary = [dependentRequired, dependentSchemas, limitContains]\n\nexport default next\n", "import type {\n  CodeKeywordDefinition,\n  KeywordErrorDefinition,\n  ErrorObject,\n  AnySchema,\n} from \"../../types\"\nimport {_, not, and, Name, Code} from \"../../compile/codegen\"\nimport {alwaysValidSchema, Type} from \"../../compile/util\"\nimport N from \"../../compile/names\"\n\nexport type UnevaluatedPropertiesError = ErrorObject<\n  \"unevaluatedProperties\",\n  {unevaluatedProperty: string},\n  AnySchema\n>\n\nconst error: KeywordErrorDefinition = {\n  message: \"must NOT have unevaluated properties\",\n  params: ({params}) => _`{unevaluatedProperty: ${params.unevaluatedProperty}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"unevaluatedProperties\",\n  type: \"object\",\n  schemaType: [\"boolean\", \"object\"],\n  trackErrors: true,\n  error,\n  code(cxt) {\n    const {gen, schema, data, errsCount, it} = cxt\n    /* istanbul ignore if */\n    if (!errsCount) throw new Error(\"ajv implementation error\")\n    const {allErrors, props} = it\n    if (props instanceof Name) {\n      gen.if(_`${props} !== true`, () =>\n        gen.forIn(\"key\", data, (key: Name) =>\n          gen.if(unevaluatedDynamic(props, key), () => unevaluatedPropCode(key))\n        )\n      )\n    } else if (props !== true) {\n      gen.forIn(\"key\", data, (key: Name) =>\n        props === undefined\n          ? unevaluatedPropCode(key)\n          : gen.if(unevaluatedStatic(props, key), () => unevaluatedPropCode(key))\n      )\n    }\n    it.props = true\n    cxt.ok(_`${errsCount} === ${N.errors}`)\n\n    function unevaluatedPropCode(key: Name): void {\n      if (schema === false) {\n        cxt.setParams({unevaluatedProperty: key})\n        cxt.error()\n        if (!allErrors) gen.break()\n        return\n      }\n\n      if (!alwaysValidSchema(it, schema)) {\n        const valid = gen.name(\"valid\")\n        cxt.subschema(\n          {\n            keyword: \"unevaluatedProperties\",\n            dataProp: key,\n            dataPropType: Type.Str,\n          },\n          valid\n        )\n        if (!allErrors) gen.if(not(valid), () => gen.break())\n      }\n    }\n\n    function unevaluatedDynamic(evaluatedProps: Name, key: Name): Code {\n      return _`!${evaluatedProps} || !${evaluatedProps}[${key}]`\n    }\n\n    function unevaluatedStatic(evaluatedProps: {[K in string]?: true}, key: Name): Code {\n      const ps: Code[] = []\n      for (const p in evaluatedProps) {\n        if (evaluatedProps[p] === true) ps.push(_`${key} !== ${p}`)\n      }\n      return and(...ps)\n    }\n  },\n}\n\nexport default def\n", "import type {\n  CodeKeywordDefinition,\n  ErrorObject,\n  KeywordErrorDefinition,\n  AnySchema,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, not, Name} from \"../../compile/codegen\"\nimport {alwaysValidSchema, Type} from \"../../compile/util\"\n\nexport type UnevaluatedItemsError = ErrorObject<\"unevaluatedItems\", {limit: number}, AnySchema>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params: {len}}) => str`must NOT have more than ${len} items`,\n  params: ({params: {len}}) => _`{limit: ${len}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"unevaluatedItems\",\n  type: \"array\",\n  schemaType: [\"boolean\", \"object\"],\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, schema, data, it} = cxt\n    const items = it.items || 0\n    if (items === true) return\n    const len = gen.const(\"len\", _`${data}.length`)\n    if (schema === false) {\n      cxt.setParams({len: items})\n      cxt.fail(_`${len} > ${items}`)\n    } else if (typeof schema == \"object\" && !alwaysValidSchema(it, schema)) {\n      const valid = gen.var(\"valid\", _`${len} <= ${items}`)\n      gen.if(not(valid), () => validateItems(valid, items))\n      cxt.ok(valid)\n    }\n    it.items = true\n\n    function validateItems(valid: Name, from: Name | number): void {\n      gen.forRange(\"i\", from, len, (i) => {\n        cxt.subschema({keyword: \"unevaluatedItems\", dataProp: i, dataPropType: Type.Num}, valid)\n        if (!it.allErrors) gen.if(not(valid), () => gen.break())\n      })\n    }\n  },\n}\n\nexport default def\n", "import type {Vocabulary} from \"../../types\"\nimport unevaluatedProperties from \"./unevaluatedProperties\"\nimport unevaluatedItems from \"./unevaluatedItems\"\n\nconst unevaluated: Vocabulary = [unevaluatedProperties, unevaluatedItems]\n\nexport default unevaluated\n", "import type {\n  AddedFormat,\n  FormatValidator,\n  AsyncFormatValidator,\n  CodeKeywordDefinition,\n  KeywordErrorDefinition,\n  ErrorObject,\n} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, str, nil, or, Code, getProperty, regexpCode} from \"../../compile/codegen\"\n\ntype FormatValidate =\n  | FormatValidator<string>\n  | FormatValidator<number>\n  | AsyncFormatValidator<string>\n  | AsyncFormatValidator<number>\n  | RegExp\n  | string\n  | true\n\nexport type FormatError = ErrorObject<\"format\", {format: string}, string | {$data: string}>\n\nconst error: KeywordErrorDefinition = {\n  message: ({schemaCode}) => str`must match format \"${schemaCode}\"`,\n  params: ({schemaCode}) => _`{format: ${schemaCode}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"format\",\n  type: [\"number\", \"string\"],\n  schemaType: \"string\",\n  $data: true,\n  error,\n  code(cxt: KeywordCxt, ruleType?: string) {\n    const {gen, data, $data, schema, schemaCode, it} = cxt\n    const {opts, errSchemaPath, schemaEnv, self} = it\n    if (!opts.validateFormats) return\n\n    if ($data) validate$DataFormat()\n    else validateFormat()\n\n    function validate$DataFormat(): void {\n      const fmts = gen.scopeValue(\"formats\", {\n        ref: self.formats,\n        code: opts.code.formats,\n      })\n      const fDef = gen.const(\"fDef\", _`${fmts}[${schemaCode}]`)\n      const fType = gen.let(\"fType\")\n      const format = gen.let(\"format\")\n      // TODO simplify\n      gen.if(\n        _`typeof ${fDef} == \"object\" && !(${fDef} instanceof RegExp)`,\n        () => gen.assign(fType, _`${fDef}.type || \"string\"`).assign(format, _`${fDef}.validate`),\n        () => gen.assign(fType, _`\"string\"`).assign(format, fDef)\n      )\n      cxt.fail$data(or(unknownFmt(), invalidFmt()))\n\n      function unknownFmt(): Code {\n        if (opts.strictSchema === false) return nil\n        return _`${schemaCode} && !${format}`\n      }\n\n      function invalidFmt(): Code {\n        const callFormat = schemaEnv.$async\n          ? _`(${fDef}.async ? await ${format}(${data}) : ${format}(${data}))`\n          : _`${format}(${data})`\n        const validData = _`(typeof ${format} == \"function\" ? ${callFormat} : ${format}.test(${data}))`\n        return _`${format} && ${format} !== true && ${fType} === ${ruleType} && !${validData}`\n      }\n    }\n\n    function validateFormat(): void {\n      const formatDef: AddedFormat | undefined = self.formats[schema]\n      if (!formatDef) {\n        unknownFormat()\n        return\n      }\n      if (formatDef === true) return\n      const [fmtType, format, fmtRef] = getFormat(formatDef)\n      if (fmtType === ruleType) cxt.pass(validCondition())\n\n      function unknownFormat(): void {\n        if (opts.strictSchema === false) {\n          self.logger.warn(unknownMsg())\n          return\n        }\n        throw new Error(unknownMsg())\n\n        function unknownMsg(): string {\n          return `unknown format \"${schema as string}\" ignored in schema at path \"${errSchemaPath}\"`\n        }\n      }\n\n      function getFormat(fmtDef: AddedFormat): [string, FormatValidate, Code] {\n        const code =\n          fmtDef instanceof RegExp\n            ? regexpCode(fmtDef)\n            : opts.code.formats\n            ? _`${opts.code.formats}${getProperty(schema)}`\n            : undefined\n        const fmt = gen.scopeValue(\"formats\", {key: schema, ref: fmtDef, code})\n        if (typeof fmtDef == \"object\" && !(fmtDef instanceof RegExp)) {\n          return [fmtDef.type || \"string\", fmtDef.validate, _`${fmt}.validate`]\n        }\n\n        return [\"string\", fmtDef, fmt]\n      }\n\n      function validCondition(): Code {\n        if (typeof formatDef == \"object\" && !(formatDef instanceof RegExp) && formatDef.async) {\n          if (!schemaEnv.$async) throw new Error(\"async format in sync schema\")\n          return _`await ${fmtRef}(${data})`\n        }\n        return typeof format == \"function\" ? _`${fmtRef}(${data})` : _`${fmtRef}.test(${data})`\n      }\n    }\n  },\n}\n\nexport default def\n", "import type {Vocabulary} from \"../../types\"\nimport formatKeyword from \"./format\"\n\nconst format: Vocabulary = [formatKeyword]\n\nexport default format\n", "import type {Vocabulary} from \"../types\"\n\nexport const metadataVocabulary: Vocabulary = [\n  \"title\",\n  \"description\",\n  \"default\",\n  \"deprecated\",\n  \"readOnly\",\n  \"writeOnly\",\n  \"examples\",\n]\n\nexport const contentVocabulary: Vocabulary = [\n  \"contentMediaType\",\n  \"contentEncoding\",\n  \"contentSchema\",\n]\n", "import type {Vocabulary} from \"../types\"\nimport coreVocabulary from \"./core\"\nimport validationVocabulary from \"./validation\"\nimport getApplicatorVocabulary from \"./applicator\"\nimport dynamicVocabulary from \"./dynamic\"\nimport nextVocabulary from \"./next\"\nimport unevaluatedVocabulary from \"./unevaluated\"\nimport formatVocabulary from \"./format\"\nimport {metadataVocabulary, contentVocabulary} from \"./metadata\"\n\nconst draft2020Vocabularies: Vocabulary[] = [\n  dynamicVocabulary,\n  coreVocabulary,\n  validationVocabulary,\n  getApplicatorVocabulary(true),\n  formatVocabulary,\n  metadataVocabulary,\n  contentVocabulary,\n  nextVocabulary,\n  unevaluatedVocabulary,\n]\n\nexport default draft2020Vocabularies\n", "import type {ErrorObject} from \"../../types\"\n\nexport enum DiscrError {\n  Tag = \"tag\",\n  Mapping = \"mapping\",\n}\n\nexport type DiscrErrorObj<E extends DiscrError> = ErrorObject<\n  \"discriminator\",\n  {error: E; tag: string; tagValue: unknown},\n  string\n>\n", "import type {CodeKeywordDefinition, AnySchemaObject, KeywordErrorDefinition} from \"../../types\"\nimport type {KeywordCxt} from \"../../compile/validate\"\nimport {_, getProperty, Name} from \"../../compile/codegen\"\nimport {DiscrError, DiscrErrorObj} from \"../discriminator/types\"\nimport {resolveRef, SchemaEnv} from \"../../compile\"\nimport MissingRefError from \"../../compile/ref_error\"\nimport {schemaHasRulesButRef} from \"../../compile/util\"\n\nexport type DiscriminatorError = DiscrErrorObj<DiscrError.Tag> | DiscrErrorObj<DiscrError.Mapping>\n\nconst error: KeywordErrorDefinition = {\n  message: ({params: {discrError, tagName}}) =>\n    discrError === DiscrError.Tag\n      ? `tag \"${tagName}\" must be string`\n      : `value of tag \"${tagName}\" must be in oneOf`,\n  params: ({params: {discrError, tag, tagName}}) =>\n    _`{error: ${discrError}, tag: ${tagName}, tagValue: ${tag}}`,\n}\n\nconst def: CodeKeywordDefinition = {\n  keyword: \"discriminator\",\n  type: \"object\",\n  schemaType: \"object\",\n  error,\n  code(cxt: KeywordCxt) {\n    const {gen, data, schema, parentSchema, it} = cxt\n    const {oneOf} = parentSchema\n    if (!it.opts.discriminator) {\n      throw new Error(\"discriminator: requires discriminator option\")\n    }\n    const tagName = schema.propertyName\n    if (typeof tagName != \"string\") throw new Error(\"discriminator: requires propertyName\")\n    if (schema.mapping) throw new Error(\"discriminator: mapping is not supported\")\n    if (!oneOf) throw new Error(\"discriminator: requires oneOf keyword\")\n    const valid = gen.let(\"valid\", false)\n    const tag = gen.const(\"tag\", _`${data}${getProperty(tagName)}`)\n    gen.if(\n      _`typeof ${tag} == \"string\"`,\n      () => validateMapping(),\n      () => cxt.error(false, {discrError: DiscrError.Tag, tag, tagName})\n    )\n    cxt.ok(valid)\n\n    function validateMapping(): void {\n      const mapping = getMapping()\n      gen.if(false)\n      for (const tagValue in mapping) {\n        gen.elseIf(_`${tag} === ${tagValue}`)\n        gen.assign(valid, applyTagSchema(mapping[tagValue]))\n      }\n      gen.else()\n      cxt.error(false, {discrError: DiscrError.Mapping, tag, tagName})\n      gen.endIf()\n    }\n\n    function applyTagSchema(schemaProp?: number): Name {\n      const _valid = gen.name(\"valid\")\n      const schCxt = cxt.subschema({keyword: \"oneOf\", schemaProp}, _valid)\n      cxt.mergeEvaluated(schCxt, Name)\n      return _valid\n    }\n\n    function getMapping(): {[T in string]?: number} {\n      const oneOfMapping: {[T in string]?: number} = {}\n      const topRequired = hasRequired(parentSchema)\n      let tagRequired = true\n      for (let i = 0; i < oneOf.length; i++) {\n        let sch = oneOf[i]\n        if (sch?.$ref && !schemaHasRulesButRef(sch, it.self.RULES)) {\n          const ref = sch.$ref\n          sch = resolveRef.call(it.self, it.schemaEnv.root, it.baseId, ref)\n          if (sch instanceof SchemaEnv) sch = sch.schema\n          if (sch === undefined) throw new MissingRefError(it.opts.uriResolver, it.baseId, ref)\n        }\n        const propSch = sch?.properties?.[tagName]\n        if (typeof propSch != \"object\") {\n          throw new Error(\n            `discriminator: oneOf subschemas (or referenced schemas) must have \"properties/${tagName}\"`\n          )\n        }\n        tagRequired = tagRequired && (topRequired || hasRequired(sch))\n        addMappings(propSch, i)\n      }\n      if (!tagRequired) throw new Error(`discriminator: \"${tagName}\" must be required`)\n      return oneOfMapping\n\n      function hasRequired({required}: AnySchemaObject): boolean {\n        return Array.isArray(required) && required.includes(tagName)\n      }\n\n      function addMappings(sch: AnySchemaObject, i: number): void {\n        if (sch.const) {\n          addMapping(sch.const, i)\n        } else if (sch.enum) {\n          for (const tagValue of sch.enum) {\n            addMapping(tagValue, i)\n          }\n        } else {\n          throw new Error(`discriminator: \"properties/${tagName}\" must have \"const\" or \"enum\"`)\n        }\n      }\n\n      function addMapping(tagValue: unknown, i: number): void {\n        if (typeof tagValue != \"string\" || tagValue in oneOfMapping) {\n          throw new Error(`discriminator: \"${tagName}\" values must be unique strings`)\n        }\n        oneOfMapping[tagValue] = i\n      }\n    }\n  },\n}\n\nexport default def\n", "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$vocabulary\": {\n    \"https://json-schema.org/draft/2020-12/vocab/core\": true,\n    \"https://json-schema.org/draft/2020-12/vocab/applicator\": true,\n    \"https://json-schema.org/draft/2020-12/vocab/unevaluated\": true,\n    \"https://json-schema.org/draft/2020-12/vocab/validation\": true,\n    \"https://json-schema.org/draft/2020-12/vocab/meta-data\": true,\n    \"https://json-schema.org/draft/2020-12/vocab/format-annotation\": true,\n    \"https://json-schema.org/draft/2020-12/vocab/content\": true\n  },\n  \"$dynamicAnchor\": \"meta\",\n\n  \"title\": \"Core and Validation specifications meta-schema\",\n  \"allOf\": [\n    {\"$ref\": \"meta/core\"},\n    {\"$ref\": \"meta/applicator\"},\n    {\"$ref\": \"meta/unevaluated\"},\n    {\"$ref\": \"meta/validation\"},\n    {\"$ref\": \"meta/meta-data\"},\n    {\"$ref\": \"meta/format-annotation\"},\n    {\"$ref\": \"meta/content\"}\n  ],\n  \"type\": [\"object\", \"boolean\"],\n  \"$comment\": \"This meta-schema also defines keywords that have appeared in previous drafts in order to prevent incompatible extensions as they remain in common use.\",\n  \"properties\": {\n    \"definitions\": {\n      \"$comment\": \"\\\"definitions\\\" has been replaced by \\\"$defs\\\".\",\n      \"type\": \"object\",\n      \"additionalProperties\": {\"$dynamicRef\": \"#meta\"},\n      \"deprecated\": true,\n      \"default\": {}\n    },\n    \"dependencies\": {\n      \"$comment\": \"\\\"dependencies\\\" has been split and replaced by \\\"dependentSchemas\\\" and \\\"dependentRequired\\\" in order to serve their differing semantics.\",\n      \"type\": \"object\",\n      \"additionalProperties\": {\n        \"anyOf\": [{\"$dynamicRef\": \"#meta\"}, {\"$ref\": \"meta/validation#/$defs/stringArray\"}]\n      },\n      \"deprecated\": true,\n      \"default\": {}\n    },\n    \"$recursiveAnchor\": {\n      \"$comment\": \"\\\"$recursiveAnchor\\\" has been replaced by \\\"$dynamicAnchor\\\".\",\n      \"$ref\": \"meta/core#/$defs/anchorString\",\n      \"deprecated\": true\n    },\n    \"$recursiveRef\": {\n      \"$comment\": \"\\\"$recursiveRef\\\" has been replaced by \\\"$dynamicRef\\\".\",\n      \"$ref\": \"meta/core#/$defs/uriReferenceString\",\n      \"deprecated\": true\n    }\n  }\n}\n", "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://json-schema.org/draft/2020-12/meta/applicator\",\n  \"$vocabulary\": {\n    \"https://json-schema.org/draft/2020-12/vocab/applicator\": true\n  },\n  \"$dynamicAnchor\": \"meta\",\n\n  \"title\": \"Applicator vocabulary meta-schema\",\n  \"type\": [\"object\", \"boolean\"],\n  \"properties\": {\n    \"prefixItems\": {\"$ref\": \"#/$defs/schemaArray\"},\n    \"items\": {\"$dynamicRef\": \"#meta\"},\n    \"contains\": {\"$dynamicRef\": \"#meta\"},\n    \"additionalProperties\": {\"$dynamicRef\": \"#meta\"},\n    \"properties\": {\n      \"type\": \"object\",\n      \"additionalProperties\": {\"$dynamicRef\": \"#meta\"},\n      \"default\": {}\n    },\n    \"patternProperties\": {\n      \"type\": \"object\",\n      \"additionalProperties\": {\"$dynamicRef\": \"#meta\"},\n      \"propertyNames\": {\"format\": \"regex\"},\n      \"default\": {}\n    },\n    \"dependentSchemas\": {\n      \"type\": \"object\",\n      \"additionalProperties\": {\"$dynamicRef\": \"#meta\"},\n      \"default\": {}\n    },\n    \"propertyNames\": {\"$dynamicRef\": \"#meta\"},\n    \"if\": {\"$dynamicRef\": \"#meta\"},\n    \"then\": {\"$dynamicRef\": \"#meta\"},\n    \"else\": {\"$dynamicRef\": \"#meta\"},\n    \"allOf\": {\"$ref\": \"#/$defs/schemaArray\"},\n    \"anyOf\": {\"$ref\": \"#/$defs/schemaArray\"},\n    \"oneOf\": {\"$ref\": \"#/$defs/schemaArray\"},\n    \"not\": {\"$dynamicRef\": \"#meta\"}\n  },\n  \"$defs\": {\n    \"schemaArray\": {\n      \"type\": \"array\",\n      \"minItems\": 1,\n      \"items\": {\"$dynamicRef\": \"#meta\"}\n    }\n  }\n}\n", "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://json-schema.org/draft/2020-12/meta/unevaluated\",\n  \"$vocabulary\": {\n    \"https://json-schema.org/draft/2020-12/vocab/unevaluated\": true\n  },\n  \"$dynamicAnchor\": \"meta\",\n\n  \"title\": \"Unevaluated applicator vocabulary meta-schema\",\n  \"type\": [\"object\", \"boolean\"],\n  \"properties\": {\n    \"unevaluatedItems\": {\"$dynamicRef\": \"#meta\"},\n    \"unevaluatedProperties\": {\"$dynamicRef\": \"#meta\"}\n  }\n}\n", "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://json-schema.org/draft/2020-12/meta/content\",\n  \"$vocabulary\": {\n    \"https://json-schema.org/draft/2020-12/vocab/content\": true\n  },\n  \"$dynamicAnchor\": \"meta\",\n\n  \"title\": \"Content vocabulary meta-schema\",\n\n  \"type\": [\"object\", \"boolean\"],\n  \"properties\": {\n    \"contentEncoding\": {\"type\": \"string\"},\n    \"contentMediaType\": {\"type\": \"string\"},\n    \"contentSchema\": {\"$dynamicRef\": \"#meta\"}\n  }\n}\n", "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://json-schema.org/draft/2020-12/meta/core\",\n  \"$vocabulary\": {\n    \"https://json-schema.org/draft/2020-12/vocab/core\": true\n  },\n  \"$dynamicAnchor\": \"meta\",\n\n  \"title\": \"Core vocabulary meta-schema\",\n  \"type\": [\"object\", \"boolean\"],\n  \"properties\": {\n    \"$id\": {\n      \"$ref\": \"#/$defs/uriReferenceString\",\n      \"$comment\": \"Non-empty fragments not allowed.\",\n      \"pattern\": \"^[^#]*#?$\"\n    },\n    \"$schema\": {\"$ref\": \"#/$defs/uriString\"},\n    \"$ref\": {\"$ref\": \"#/$defs/uriReferenceString\"},\n    \"$anchor\": {\"$ref\": \"#/$defs/anchorString\"},\n    \"$dynamicRef\": {\"$ref\": \"#/$defs/uriReferenceString\"},\n    \"$dynamicAnchor\": {\"$ref\": \"#/$defs/anchorString\"},\n    \"$vocabulary\": {\n      \"type\": \"object\",\n      \"propertyNames\": {\"$ref\": \"#/$defs/uriString\"},\n      \"additionalProperties\": {\n        \"type\": \"boolean\"\n      }\n    },\n    \"$comment\": {\n      \"type\": \"string\"\n    },\n    \"$defs\": {\n      \"type\": \"object\",\n      \"additionalProperties\": {\"$dynamicRef\": \"#meta\"}\n    }\n  },\n  \"$defs\": {\n    \"anchorString\": {\n      \"type\": \"string\",\n      \"pattern\": \"^[A-Za-z_][-A-Za-z0-9._]*$\"\n    },\n    \"uriString\": {\n      \"type\": \"string\",\n      \"format\": \"uri\"\n    },\n    \"uriReferenceString\": {\n      \"type\": \"string\",\n      \"format\": \"uri-reference\"\n    }\n  }\n}\n", "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://json-schema.org/draft/2020-12/meta/format-annotation\",\n  \"$vocabulary\": {\n    \"https://json-schema.org/draft/2020-12/vocab/format-annotation\": true\n  },\n  \"$dynamicAnchor\": \"meta\",\n\n  \"title\": \"Format vocabulary meta-schema for annotation results\",\n  \"type\": [\"object\", \"boolean\"],\n  \"properties\": {\n    \"format\": {\"type\": \"string\"}\n  }\n}\n", "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://json-schema.org/draft/2020-12/meta/meta-data\",\n  \"$vocabulary\": {\n    \"https://json-schema.org/draft/2020-12/vocab/meta-data\": true\n  },\n  \"$dynamicAnchor\": \"meta\",\n\n  \"title\": \"Meta-data vocabulary meta-schema\",\n\n  \"type\": [\"object\", \"boolean\"],\n  \"properties\": {\n    \"title\": {\n      \"type\": \"string\"\n    },\n    \"description\": {\n      \"type\": \"string\"\n    },\n    \"default\": true,\n    \"deprecated\": {\n      \"type\": \"boolean\",\n      \"default\": false\n    },\n    \"readOnly\": {\n      \"type\": \"boolean\",\n      \"default\": false\n    },\n    \"writeOnly\": {\n      \"type\": \"boolean\",\n      \"default\": false\n    },\n    \"examples\": {\n      \"type\": \"array\",\n      \"items\": true\n    }\n  }\n}\n", "{\n  \"$schema\": \"https://json-schema.org/draft/2020-12/schema\",\n  \"$id\": \"https://json-schema.org/draft/2020-12/meta/validation\",\n  \"$vocabulary\": {\n    \"https://json-schema.org/draft/2020-12/vocab/validation\": true\n  },\n  \"$dynamicAnchor\": \"meta\",\n\n  \"title\": \"Validation vocabulary meta-schema\",\n  \"type\": [\"object\", \"boolean\"],\n  \"properties\": {\n    \"type\": {\n      \"anyOf\": [\n        {\"$ref\": \"#/$defs/simpleTypes\"},\n        {\n          \"type\": \"array\",\n          \"items\": {\"$ref\": \"#/$defs/simpleTypes\"},\n          \"minItems\": 1,\n          \"uniqueItems\": true\n        }\n      ]\n    },\n    \"const\": true,\n    \"enum\": {\n      \"type\": \"array\",\n      \"items\": true\n    },\n    \"multipleOf\": {\n      \"type\": \"number\",\n      \"exclusiveMinimum\": 0\n    },\n    \"maximum\": {\n      \"type\": \"number\"\n    },\n    \"exclusiveMaximum\": {\n      \"type\": \"number\"\n    },\n    \"minimum\": {\n      \"type\": \"number\"\n    },\n    \"exclusiveMinimum\": {\n      \"type\": \"number\"\n    },\n    \"maxLength\": {\"$ref\": \"#/$defs/nonNegativeInteger\"},\n    \"minLength\": {\"$ref\": \"#/$defs/nonNegativeIntegerDefault0\"},\n    \"pattern\": {\n      \"type\": \"string\",\n      \"format\": \"regex\"\n    },\n    \"maxItems\": {\"$ref\": \"#/$defs/nonNegativeInteger\"},\n    \"minItems\": {\"$ref\": \"#/$defs/nonNegativeIntegerDefault0\"},\n    \"uniqueItems\": {\n      \"type\": \"boolean\",\n      \"default\": false\n    },\n    \"maxContains\": {\"$ref\": \"#/$defs/nonNegativeInteger\"},\n    \"minContains\": {\n      \"$ref\": \"#/$defs/nonNegativeInteger\",\n      \"default\": 1\n    },\n    \"maxProperties\": {\"$ref\": \"#/$defs/nonNegativeInteger\"},\n    \"minProperties\": {\"$ref\": \"#/$defs/nonNegativeIntegerDefault0\"},\n    \"required\": {\"$ref\": \"#/$defs/stringArray\"},\n    \"dependentRequired\": {\n      \"type\": \"object\",\n      \"additionalProperties\": {\n        \"$ref\": \"#/$defs/stringArray\"\n      }\n    }\n  },\n  \"$defs\": {\n    \"nonNegativeInteger\": {\n      \"type\": \"integer\",\n      \"minimum\": 0\n    },\n    \"nonNegativeIntegerDefault0\": {\n      \"$ref\": \"#/$defs/nonNegativeInteger\",\n      \"default\": 0\n    },\n    \"simpleTypes\": {\n      \"enum\": [\"array\", \"boolean\", \"integer\", \"null\", \"number\", \"object\", \"string\"]\n    },\n    \"stringArray\": {\n      \"type\": \"array\",\n      \"items\": {\"type\": \"string\"},\n      \"uniqueItems\": true,\n      \"default\": []\n    }\n  }\n}\n", "import type Ajv from \"../../core\"\nimport type {AnySchemaObject} from \"../../types\"\nimport * as metaSchema from \"./schema.json\"\nimport * as applicator from \"./meta/applicator.json\"\nimport * as unevaluated from \"./meta/unevaluated.json\"\nimport * as content from \"./meta/content.json\"\nimport * as core from \"./meta/core.json\"\nimport * as format from \"./meta/format-annotation.json\"\nimport * as metadata from \"./meta/meta-data.json\"\nimport * as validation from \"./meta/validation.json\"\n\nconst META_SUPPORT_DATA = [\"/properties\"]\n\nexport default function addMetaSchema2020(this: Ajv, $data?: boolean): Ajv {\n  ;[\n    metaSchema,\n    applicator,\n    unevaluated,\n    content,\n    core,\n    with$data(this, format),\n    metadata,\n    with$data(this, validation),\n  ].forEach((sch) => this.addMetaSchema(sch, undefined, false))\n  return this\n\n  function with$data(ajv: Ajv, sch: AnySchemaObject): AnySchemaObject {\n    return $data ? ajv.$dataMetaSchema(sch, META_SUPPORT_DATA) : sch\n  }\n}\n", "import type {AnySchemaObject} from \"./types\"\nimport AjvCore, {Options} from \"./core\"\n\nimport draft2020Vocabularies from \"./vocabularies/draft2020\"\nimport discriminator from \"./vocabularies/discriminator\"\nimport addMetaSchema2020 from \"./refs/json-schema-2020-12\"\n\nconst META_SCHEMA_ID = \"https://json-schema.org/draft/2020-12/schema\"\n\nexport class Ajv2020 extends AjvCore {\n  constructor(opts: Options = {}) {\n    super({\n      ...opts,\n      dynamicRef: true,\n      next: true,\n      unevaluated: true,\n    })\n  }\n\n  _addVocabularies(): void {\n    super._addVocabularies()\n    draft2020Vocabularies.forEach((v) => this.addVocabulary(v))\n    if (this.opts.discriminator) this.addKeyword(discriminator)\n  }\n\n  _addDefaultMetaSchema(): void {\n    super._addDefaultMetaSchema()\n    const {$data, meta} = this.opts\n    if (!meta) return\n    addMetaSchema2020.call(this, $data)\n    this.refs[\"http://json-schema.org/schema\"] = META_SCHEMA_ID\n  }\n\n  defaultMeta(): string | AnySchemaObject | undefined {\n    return (this.opts.defaultMeta =\n      super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : undefined))\n  }\n}\n\nmodule.exports = exports = Ajv2020\nmodule.exports.Ajv2020 = Ajv2020\nObject.defineProperty(exports, \"__esModule\", {value: true})\n\nexport default Ajv2020\n\nexport {\n  Format,\n  FormatDefinition,\n  AsyncFormatDefinition,\n  KeywordDefinition,\n  KeywordErrorDefinition,\n  CodeKeywordDefinition,\n  MacroKeywordDefinition,\n  FuncKeywordDefinition,\n  Vocabulary,\n  Schema,\n  SchemaObject,\n  AnySchemaObject,\n  AsyncSchema,\n  AnySchema,\n  ValidateFunction,\n  AsyncValidateFunction,\n  ErrorObject,\n  ErrorNoParams,\n} from \"./types\"\n\nexport {Plugin, Options, CodeOptions, InstanceOptions, Logger, ErrorsTextOptions} from \"./core\"\nexport {SchemaCxt, SchemaObjCxt} from \"./compile\"\nexport {KeywordCxt} from \"./compile/validate\"\nexport {DefinedError} from \"./vocabularies/errors\"\nexport {JSONType} from \"./compile/rules\"\nexport {JSONSchemaType} from \"./types/json-schema\"\nexport {_, str, stringify, nil, Name, Code, CodeGen, CodeGenOptions} from \"./compile/codegen\"\nexport {default as ValidationError} from \"./runtime/validation_error\"\nexport {default as MissingRefError} from \"./compile/ref_error\"\n", "'use strict'\n\nfunction reusify (Constructor) {\n  var head = new Constructor()\n  var tail = head\n\n  function get () {\n    var current = head\n\n    if (current.next) {\n      head = current.next\n    } else {\n      head = new Constructor()\n      tail = head\n    }\n\n    current.next = null\n\n    return current\n  }\n\n  function release (obj) {\n    tail.next = obj\n    tail = obj\n  }\n\n  return {\n    get: get,\n    release: release\n  }\n}\n\nmodule.exports = reusify\n", "'use strict'\n\n/* eslint-disable no-var */\n\nvar reusify = require('reusify')\n\nfunction fastqueue (context, worker, _concurrency) {\n  if (typeof context === 'function') {\n    _concurrency = worker\n    worker = context\n    context = null\n  }\n\n  if (!(_concurrency >= 1)) {\n    throw new Error('fastqueue concurrency must be equal to or greater than 1')\n  }\n\n  var cache = reusify(Task)\n  var queueHead = null\n  var queueTail = null\n  var _running = 0\n  var errorHandler = null\n\n  var self = {\n    push: push,\n    drain: noop,\n    saturated: noop,\n    pause: pause,\n    paused: false,\n\n    get concurrency () {\n      return _concurrency\n    },\n    set concurrency (value) {\n      if (!(value >= 1)) {\n        throw new Error('fastqueue concurrency must be equal to or greater than 1')\n      }\n      _concurrency = value\n\n      if (self.paused) return\n      for (; queueHead && _running < _concurrency;) {\n        _running++\n        release()\n      }\n    },\n\n    running: running,\n    resume: resume,\n    idle: idle,\n    length: length,\n    getQueue: getQueue,\n    unshift: unshift,\n    empty: noop,\n    kill: kill,\n    killAndDrain: killAndDrain,\n    error: error\n  }\n\n  return self\n\n  function running () {\n    return _running\n  }\n\n  function pause () {\n    self.paused = true\n  }\n\n  function length () {\n    var current = queueHead\n    var counter = 0\n\n    while (current) {\n      current = current.next\n      counter++\n    }\n\n    return counter\n  }\n\n  function getQueue () {\n    var current = queueHead\n    var tasks = []\n\n    while (current) {\n      tasks.push(current.value)\n      current = current.next\n    }\n\n    return tasks\n  }\n\n  function resume () {\n    if (!self.paused) return\n    self.paused = false\n    if (queueHead === null) {\n      _running++\n      release()\n      return\n    }\n    for (; queueHead && _running < _concurrency;) {\n      _running++\n      release()\n    }\n  }\n\n  function idle () {\n    return _running === 0 && self.length() === 0\n  }\n\n  function push (value, done) {\n    var current = cache.get()\n\n    current.context = context\n    current.release = release\n    current.value = value\n    current.callback = done || noop\n    current.errorHandler = errorHandler\n\n    if (_running >= _concurrency || self.paused) {\n      if (queueTail) {\n        queueTail.next = current\n        queueTail = current\n      } else {\n        queueHead = current\n        queueTail = current\n        self.saturated()\n      }\n    } else {\n      _running++\n      worker.call(context, current.value, current.worked)\n    }\n  }\n\n  function unshift (value, done) {\n    var current = cache.get()\n\n    current.context = context\n    current.release = release\n    current.value = value\n    current.callback = done || noop\n    current.errorHandler = errorHandler\n\n    if (_running >= _concurrency || self.paused) {\n      if (queueHead) {\n        current.next = queueHead\n        queueHead = current\n      } else {\n        queueHead = current\n        queueTail = current\n        self.saturated()\n      }\n    } else {\n      _running++\n      worker.call(context, current.value, current.worked)\n    }\n  }\n\n  function release (holder) {\n    if (holder) {\n      cache.release(holder)\n    }\n    var next = queueHead\n    if (next && _running <= _concurrency) {\n      if (!self.paused) {\n        if (queueTail === queueHead) {\n          queueTail = null\n        }\n        queueHead = next.next\n        next.next = null\n        worker.call(context, next.value, next.worked)\n        if (queueTail === null) {\n          self.empty()\n        }\n      } else {\n        _running--\n      }\n    } else if (--_running === 0) {\n      self.drain()\n    }\n  }\n\n  function kill () {\n    queueHead = null\n    queueTail = null\n    self.drain = noop\n  }\n\n  function killAndDrain () {\n    queueHead = null\n    queueTail = null\n    self.drain()\n    self.drain = noop\n  }\n\n  function error (handler) {\n    errorHandler = handler\n  }\n}\n\nfunction noop () {}\n\nfunction Task () {\n  this.value = null\n  this.callback = noop\n  this.next = null\n  this.release = noop\n  this.context = null\n  this.errorHandler = null\n\n  var self = this\n\n  this.worked = function worked (err, result) {\n    var callback = self.callback\n    var errorHandler = self.errorHandler\n    var val = self.value\n    self.value = null\n    self.callback = noop\n    if (self.errorHandler) {\n      errorHandler(err, val)\n    }\n    callback.call(self.context, err, result)\n    self.release(self)\n  }\n}\n\nfunction queueAsPromised (context, worker, _concurrency) {\n  if (typeof context === 'function') {\n    _concurrency = worker\n    worker = context\n    context = null\n  }\n\n  function asyncWrapper (arg, cb) {\n    worker.call(this, arg)\n      .then(function (res) {\n        cb(null, res)\n      }, cb)\n  }\n\n  var queue = fastqueue(context, asyncWrapper, _concurrency)\n\n  var pushCb = queue.push\n  var unshiftCb = queue.unshift\n\n  queue.push = push\n  queue.unshift = unshift\n  queue.drained = drained\n\n  return queue\n\n  function push (value) {\n    var p = new Promise(function (resolve, reject) {\n      pushCb(value, function (err, result) {\n        if (err) {\n          reject(err)\n          return\n        }\n        resolve(result)\n      })\n    })\n\n    // Let's fork the promise chain to\n    // make the error bubble up to the user but\n    // not lead to a unhandledRejection\n    p.catch(noop)\n\n    return p\n  }\n\n  function unshift (value) {\n    var p = new Promise(function (resolve, reject) {\n      unshiftCb(value, function (err, result) {\n        if (err) {\n          reject(err)\n          return\n        }\n        resolve(result)\n      })\n    })\n\n    // Let's fork the promise chain to\n    // make the error bubble up to the user but\n    // not lead to a unhandledRejection\n    p.catch(noop)\n\n    return p\n  }\n\n  function drained () {\n    var p = new Promise(function (resolve) {\n      process.nextTick(function () {\n        if (queue.idle()) {\n          resolve()\n        } else {\n          var previousDrain = queue.drain\n          queue.drain = function () {\n            if (typeof previousDrain === 'function') previousDrain()\n            resolve()\n            queue.drain = previousDrain\n          }\n        }\n      })\n    })\n\n    return p\n  }\n}\n\nmodule.exports = fastqueue\nmodule.exports.promise = queueAsPromised\n", "/**\n * Mnemonist Heap Comparators\n * ===========================\n *\n * Default comparators & functions dealing with comparators reversing etc.\n */\nvar DEFAULT_COMPARATOR = function(a, b) {\n  if (a < b)\n    return -1;\n  if (a > b)\n    return 1;\n\n  return 0;\n};\n\nvar DEFAULT_REVERSE_COMPARATOR = function(a, b) {\n  if (a < b)\n    return 1;\n  if (a > b)\n    return -1;\n\n  return 0;\n};\n\n/**\n * Function used to reverse a comparator.\n */\nfunction reverseComparator(comparator) {\n  return function(a, b) {\n    return comparator(b, a);\n  };\n}\n\n/**\n * Function returning a tuple comparator.\n */\nfunction createTupleComparator(size) {\n  if (size === 2) {\n    return function(a, b) {\n      if (a[0] < b[0])\n        return -1;\n\n      if (a[0] > b[0])\n        return 1;\n\n      if (a[1] < b[1])\n        return -1;\n\n      if (a[1] > b[1])\n        return 1;\n\n      return 0;\n    };\n  }\n\n  return function(a, b) {\n    var i = 0;\n\n    while (i < size) {\n      if (a[i] < b[i])\n        return -1;\n\n      if (a[i] > b[i])\n        return 1;\n\n      i++;\n    }\n\n    return 0;\n  };\n}\n\n/**\n * Exporting.\n */\nexports.DEFAULT_COMPARATOR = DEFAULT_COMPARATOR;\nexports.DEFAULT_REVERSE_COMPARATOR = DEFAULT_REVERSE_COMPARATOR;\nexports.reverseComparator = reverseComparator;\nexports.createTupleComparator = createTupleComparator;\n", "exports.ARRAY_BUFFER_SUPPORT = typeof ArrayBuffer !== 'undefined';\nexports.SYMBOL_SUPPORT = typeof Symbol !== 'undefined';\n", "/**\n * Obliterator ForEach Function\n * =============================\n *\n * Helper function used to easily iterate over mixed values.\n */\nvar support = require('./support.js');\n\nvar ARRAY_BUFFER_SUPPORT = support.ARRAY_BUFFER_SUPPORT;\nvar SYMBOL_SUPPORT = support.SYMBOL_SUPPORT;\n\n/**\n * Function able to iterate over almost any iterable JS value.\n *\n * @param  {any}      iterable - Iterable value.\n * @param  {function} callback - Callback function.\n */\nmodule.exports = function forEach(iterable, callback) {\n  var iterator, k, i, l, s;\n\n  if (!iterable) throw new Error('obliterator/forEach: invalid iterable.');\n\n  if (typeof callback !== 'function')\n    throw new Error('obliterator/forEach: expecting a callback.');\n\n  // The target is an array or a string or function arguments\n  if (\n    Array.isArray(iterable) ||\n    (ARRAY_BUFFER_SUPPORT && ArrayBuffer.isView(iterable)) ||\n    typeof iterable === 'string' ||\n    iterable.toString() === '[object Arguments]'\n  ) {\n    for (i = 0, l = iterable.length; i < l; i++) callback(iterable[i], i);\n    return;\n  }\n\n  // The target has a #.forEach method\n  if (typeof iterable.forEach === 'function') {\n    iterable.forEach(callback);\n    return;\n  }\n\n  // The target is iterable\n  if (\n    SYMBOL_SUPPORT &&\n    Symbol.iterator in iterable &&\n    typeof iterable.next !== 'function'\n  ) {\n    iterable = iterable[Symbol.iterator]();\n  }\n\n  // The target is an iterator\n  if (typeof iterable.next === 'function') {\n    iterator = iterable;\n    i = 0;\n\n    while (((s = iterator.next()), s.done !== true)) {\n      callback(s.value, i);\n      i++;\n    }\n\n    return;\n  }\n\n  // The target is a plain object\n  for (k in iterable) {\n    if (iterable.hasOwnProperty(k)) {\n      callback(iterable[k], k);\n    }\n  }\n\n  return;\n};\n", "/* eslint no-constant-condition: 0 */\n/**\n * Mnemonist Fibonacci Heap\n * =========================\n *\n * Fibonacci heap implementation.\n */\nvar comparators = require('./utils/comparators.js'),\n    forEach = require('obliterator/foreach');\n\nvar DEFAULT_COMPARATOR = comparators.DEFAULT_COMPARATOR,\n    reverseComparator = comparators.reverseComparator;\n\n/**\n * Fibonacci Heap.\n *\n * @constructor\n */\nfunction FibonacciHeap(comparator) {\n  this.clear();\n  this.comparator = comparator || DEFAULT_COMPARATOR;\n\n  if (typeof this.comparator !== 'function')\n    throw new Error('mnemonist/FibonacciHeap.constructor: given comparator should be a function.');\n}\n\n/**\n * Method used to clear the heap.\n *\n * @return {undefined}\n */\nFibonacciHeap.prototype.clear = function() {\n\n  // Properties\n  this.root = null;\n  this.min = null;\n  this.size = 0;\n};\n\n/**\n * Function used to create a node.\n *\n * @param  {any}    item - Target item.\n * @return {object}\n */\nfunction createNode(item) {\n  return {\n    item: item,\n    degree: 0\n  };\n}\n\n/**\n * Function used to merge the given node with the root list.\n *\n * @param {FibonacciHeap} heap - Target heap.\n * @param {Node}          node - Target node.\n */\nfunction mergeWithRoot(heap, node) {\n  if (!heap.root) {\n    heap.root = node;\n  }\n  else {\n    node.right = heap.root.right;\n    node.left = heap.root;\n    heap.root.right.left = node;\n    heap.root.right = node;\n  }\n}\n\n/**\n * Method used to push an item into the heap.\n *\n * @param  {any}    item - Item to push.\n * @return {number}\n */\nFibonacciHeap.prototype.push = function(item) {\n  var node = createNode(item);\n  node.left = node;\n  node.right = node;\n  mergeWithRoot(this, node);\n\n  if (!this.min || this.comparator(node.item, this.min.item) <= 0)\n    this.min = node;\n\n  return ++this.size;\n};\n\n/**\n * Method used to get the \"first\" item of the heap.\n *\n * @return {any}\n */\nFibonacciHeap.prototype.peek = function() {\n  return this.min ? this.min.item : undefined;\n};\n\n/**\n * Function used to consume the given linked list.\n *\n * @param {Node} head - Head node.\n * @param {array}\n */\nfunction consumeLinkedList(head) {\n  var nodes = [],\n      node = head,\n      flag = false;\n\n  while (true) {\n    if (node === head && flag)\n      break;\n    else if (node === head)\n      flag = true;\n\n    nodes.push(node);\n    node = node.right;\n  }\n\n  return nodes;\n}\n\n/**\n * Function used to remove the target node from the root list.\n *\n * @param {FibonacciHeap} heap - Target heap.\n * @param {Node}          node - Target node.\n */\nfunction removeFromRoot(heap, node) {\n  if (heap.root === node)\n    heap.root = node.right;\n  node.left.right = node.right;\n  node.right.left = node.left;\n}\n\n/**\n * Function used to merge the given node with the child list of a root node.\n *\n * @param {Node} parent - Parent node.\n * @param {Node} node   - Target node.\n */\nfunction mergeWithChild(parent, node) {\n  if (!parent.child) {\n    parent.child = node;\n  }\n  else {\n    node.right = parent.child.right;\n    node.left = parent.child;\n    parent.child.right.left = node;\n    parent.child.right = node;\n  }\n}\n\n/**\n * Function used to link one node to another in the root list.\n *\n * @param {FibonacciHeap} heap - Target heap.\n * @param {Node}          y - Y node.\n * @param {Node}          x - X node.\n */\nfunction link(heap, y, x) {\n  removeFromRoot(heap, y);\n  y.left = y;\n  y.right = y;\n  mergeWithChild(x, y);\n  x.degree++;\n  y.parent = x;\n}\n\n/**\n * Function used to consolidate the heap.\n *\n * @param {FibonacciHeap} heap - Target heap.\n */\nfunction consolidate(heap) {\n  var A = new Array(heap.size),\n      nodes = consumeLinkedList(heap.root),\n      i, l, x, y, d, t;\n\n  for (i = 0, l = nodes.length; i < l; i++) {\n    x = nodes[i];\n    d = x.degree;\n\n    while (A[d]) {\n      y = A[d];\n\n      if (heap.comparator(x.item, y.item) > 0) {\n        t = x;\n        x = y;\n        y = t;\n      }\n\n      link(heap, y, x);\n      A[d] = null;\n      d++;\n    }\n\n    A[d] = x;\n  }\n\n  for (i = 0; i < heap.size; i++) {\n    if (A[i] && heap.comparator(A[i].item, heap.min.item) <= 0)\n      heap.min = A[i];\n  }\n}\n\n/**\n * Method used to retrieve & remove the \"first\" item of the heap.\n *\n * @return {any}\n */\nFibonacciHeap.prototype.pop = function() {\n  if (!this.size)\n    return undefined;\n\n  var z = this.min;\n\n  if (z.child) {\n    var nodes = consumeLinkedList(z.child),\n        node,\n        i,\n        l;\n\n    for (i = 0, l = nodes.length; i < l; i++) {\n      node = nodes[i];\n\n      mergeWithRoot(this, node);\n      delete node.parent;\n    }\n  }\n\n  removeFromRoot(this, z);\n\n  if (z === z.right) {\n    this.min = null;\n    this.root = null;\n  }\n  else {\n    this.min = z.right;\n    consolidate(this);\n  }\n\n  this.size--;\n\n  return z.item;\n};\n\n/**\n * Convenience known methods.\n */\nFibonacciHeap.prototype.inspect = function() {\n  var proxy = {\n    size: this.size\n  };\n\n  if (this.min && 'item' in this.min)\n    proxy.top = this.min.item;\n\n  // Trick so that node displays the name of the constructor\n  Object.defineProperty(proxy, 'constructor', {\n    value: FibonacciHeap,\n    enumerable: false\n  });\n\n  return proxy;\n};\n\nif (typeof Symbol !== 'undefined')\n  FibonacciHeap.prototype[Symbol.for('nodejs.util.inspect.custom')] = FibonacciHeap.prototype.inspect;\n\n/**\n * Fibonacci Maximum Heap.\n *\n * @constructor\n */\nfunction MaxFibonacciHeap(comparator) {\n  this.clear();\n  this.comparator = comparator || DEFAULT_COMPARATOR;\n\n  if (typeof this.comparator !== 'function')\n    throw new Error('mnemonist/FibonacciHeap.constructor: given comparator should be a function.');\n\n  this.comparator = reverseComparator(this.comparator);\n}\n\nMaxFibonacciHeap.prototype = FibonacciHeap.prototype;\n\n/**\n * Static @.from function taking an arbitrary iterable & converting it into\n * a heap.\n *\n * @param  {Iterable} iterable   - Target iterable.\n * @param  {function} comparator - Custom comparator function.\n * @return {FibonacciHeap}\n */\nFibonacciHeap.from = function(iterable, comparator) {\n  var heap = new FibonacciHeap(comparator);\n\n  forEach(iterable, function(value) {\n    heap.push(value);\n  });\n\n  return heap;\n};\n\nMaxFibonacciHeap.from = function(iterable, comparator) {\n  var heap = new MaxFibonacciHeap(comparator);\n\n  forEach(iterable, function(value) {\n    heap.push(value);\n  });\n\n  return heap;\n};\n\n/**\n * Exporting.\n */\nFibonacciHeap.MinFibonacciHeap = FibonacciHeap;\nFibonacciHeap.MaxFibonacciHeap = MaxFibonacciHeap;\n\nmodule.exports = FibonacciHeap;\n", "/**\n * Mnemonist Typed Array Helpers\n * ==============================\n *\n * Miscellaneous helpers related to typed arrays.\n */\n\n/**\n * When using an unsigned integer array to store pointers, one might want to\n * choose the optimal word size in regards to the actual numbers of pointers\n * to store.\n *\n * This helpers does just that.\n *\n * @param  {number} size - Expected size of the array to map.\n * @return {TypedArray}\n */\nvar MAX_8BIT_INTEGER = Math.pow(2, 8) - 1,\n    MAX_16BIT_INTEGER = Math.pow(2, 16) - 1,\n    MAX_32BIT_INTEGER = Math.pow(2, 32) - 1;\n\nvar MAX_SIGNED_8BIT_INTEGER = Math.pow(2, 7) - 1,\n    MAX_SIGNED_16BIT_INTEGER = Math.pow(2, 15) - 1,\n    MAX_SIGNED_32BIT_INTEGER = Math.pow(2, 31) - 1;\n\nexports.getPointerArray = function(size) {\n  var maxIndex = size - 1;\n\n  if (maxIndex <= MAX_8BIT_INTEGER)\n    return Uint8Array;\n\n  if (maxIndex <= MAX_16BIT_INTEGER)\n    return Uint16Array;\n\n  if (maxIndex <= MAX_32BIT_INTEGER)\n    return Uint32Array;\n\n  throw new Error('mnemonist: Pointer Array of size > 4294967295 is not supported.');\n};\n\nexports.getSignedPointerArray = function(size) {\n  var maxIndex = size - 1;\n\n  if (maxIndex <= MAX_SIGNED_8BIT_INTEGER)\n    return Int8Array;\n\n  if (maxIndex <= MAX_SIGNED_16BIT_INTEGER)\n    return Int16Array;\n\n  if (maxIndex <= MAX_SIGNED_32BIT_INTEGER)\n    return Int32Array;\n\n  return Float64Array;\n};\n\n/**\n * Function returning the minimal type able to represent the given number.\n *\n * @param  {number} value - Value to test.\n * @return {TypedArrayClass}\n */\nexports.getNumberType = function(value) {\n\n  // <= 32 bits itnteger?\n  if (value === (value | 0)) {\n\n    // Negative\n    if (Math.sign(value) === -1) {\n      if (value <= 127 && value >= -128)\n        return Int8Array;\n\n      if (value <= 32767 && value >= -32768)\n        return Int16Array;\n\n      return Int32Array;\n    }\n    else {\n\n      if (value <= 255)\n        return Uint8Array;\n\n      if (value <= 65535)\n        return Uint16Array;\n\n      return Uint32Array;\n    }\n  }\n\n  // 53 bits integer & floats\n  // NOTE: it's kinda hard to tell whether we could use 32bits or not...\n  return Float64Array;\n};\n\n/**\n * Function returning the minimal type able to represent the given array\n * of JavaScript numbers.\n *\n * @param  {array}    array  - Array to represent.\n * @param  {function} getter - Optional getter.\n * @return {TypedArrayClass}\n */\nvar TYPE_PRIORITY = {\n  Uint8Array: 1,\n  Int8Array: 2,\n  Uint16Array: 3,\n  Int16Array: 4,\n  Uint32Array: 5,\n  Int32Array: 6,\n  Float32Array: 7,\n  Float64Array: 8\n};\n\n// TODO: make this a one-shot for one value\nexports.getMinimalRepresentation = function(array, getter) {\n  var maxType = null,\n      maxPriority = 0,\n      p,\n      t,\n      v,\n      i,\n      l;\n\n  for (i = 0, l = array.length; i < l; i++) {\n    v = getter ? getter(array[i]) : array[i];\n    t = exports.getNumberType(v);\n    p = TYPE_PRIORITY[t.name];\n\n    if (p > maxPriority) {\n      maxPriority = p;\n      maxType = t;\n    }\n  }\n\n  return maxType;\n};\n\n/**\n * Function returning whether the given value is a typed array.\n *\n * @param  {any} value - Value to test.\n * @return {boolean}\n */\nexports.isTypedArray = function(value) {\n  return typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView(value);\n};\n\n/**\n * Function used to concat byte arrays.\n *\n * @param  {...ByteArray}\n * @return {ByteArray}\n */\nexports.concat = function() {\n  var length = 0,\n      i,\n      o,\n      l;\n\n  for (i = 0, l = arguments.length; i < l; i++)\n    length += arguments[i].length;\n\n  var array = new (arguments[0].constructor)(length);\n\n  for (i = 0, o = 0; i < l; i++) {\n    array.set(arguments[i], o);\n    o += arguments[i].length;\n  }\n\n  return array;\n};\n\n/**\n * Function used to initialize a byte array of indices.\n *\n * @param  {number}    length - Length of target.\n * @return {ByteArray}\n */\nexports.indices = function(length) {\n  var PointerArray = exports.getPointerArray(length);\n\n  var array = new PointerArray(length);\n\n  for (var i = 0; i < length; i++)\n    array[i] = i;\n\n  return array;\n};\n", "/**\n * Mnemonist Iterable Function\n * ============================\n *\n * Harmonized iteration helpers over mixed iterable targets.\n */\nvar forEach = require('obliterator/foreach');\n\nvar typed = require('./typed-arrays.js');\n\n/**\n * Function used to determine whether the given object supports array-like\n * random access.\n *\n * @param  {any} target - Target object.\n * @return {boolean}\n */\nfunction isArrayLike(target) {\n  return Array.isArray(target) || typed.isTypedArray(target);\n}\n\n/**\n * Function used to guess the length of the structure over which we are going\n * to iterate.\n *\n * @param  {any} target - Target object.\n * @return {number|undefined}\n */\nfunction guessLength(target) {\n  if (typeof target.length === 'number')\n    return target.length;\n\n  if (typeof target.size === 'number')\n    return target.size;\n\n  return;\n}\n\n/**\n * Function used to convert an iterable to an array.\n *\n * @param  {any}   target - Iteration target.\n * @return {array}\n */\nfunction toArray(target) {\n  var l = guessLength(target);\n\n  var array = typeof l === 'number' ? new Array(l) : [];\n\n  var i = 0;\n\n  // TODO: we could optimize when given target is array like\n  forEach(target, function(value) {\n    array[i++] = value;\n  });\n\n  return array;\n}\n\n/**\n * Same as above but returns a supplementary indices array.\n *\n * @param  {any}   target - Iteration target.\n * @return {array}\n */\nfunction toArrayWithIndices(target) {\n  var l = guessLength(target);\n\n  var IndexArray = typeof l === 'number' ?\n    typed.getPointerArray(l) :\n    Array;\n\n  var array = typeof l === 'number' ? new Array(l) : [];\n  var indices = typeof l === 'number' ? new IndexArray(l) : [];\n\n  var i = 0;\n\n  // TODO: we could optimize when given target is array like\n  forEach(target, function(value) {\n    array[i] = value;\n    indices[i] = i++;\n  });\n\n  return [array, indices];\n}\n\n/**\n * Exporting.\n */\nexports.isArrayLike = isArrayLike;\nexports.guessLength = guessLength;\nexports.toArray = toArray;\nexports.toArrayWithIndices = toArrayWithIndices;\n", "/**\n * Mnemonist Binary Heap\n * ======================\n *\n * Binary heap implementation.\n */\nvar forEach = require('obliterator/foreach'),\n    comparators = require('./utils/comparators.js'),\n    iterables = require('./utils/iterables.js');\n\nvar DEFAULT_COMPARATOR = comparators.DEFAULT_COMPARATOR,\n    reverseComparator = comparators.reverseComparator;\n\n/**\n * Heap helper functions.\n */\n\n/**\n * Function used to sift down.\n *\n * @param {function} compare    - Comparison function.\n * @param {array}    heap       - Array storing the heap's data.\n * @param {number}   startIndex - Starting index.\n * @param {number}   i          - Index.\n */\nfunction siftDown(compare, heap, startIndex, i) {\n  var item = heap[i],\n      parentIndex,\n      parent;\n\n  while (i > startIndex) {\n    parentIndex = (i - 1) >> 1;\n    parent = heap[parentIndex];\n\n    if (compare(item, parent) < 0) {\n      heap[i] = parent;\n      i = parentIndex;\n      continue;\n    }\n\n    break;\n  }\n\n  heap[i] = item;\n}\n\n/**\n * Function used to sift up.\n *\n * @param {function} compare - Comparison function.\n * @param {array}    heap    - Array storing the heap's data.\n * @param {number}   i       - Index.\n */\nfunction siftUp(compare, heap, i) {\n  var endIndex = heap.length,\n      startIndex = i,\n      item = heap[i],\n      childIndex = 2 * i + 1,\n      rightIndex;\n\n  while (childIndex < endIndex) {\n    rightIndex = childIndex + 1;\n\n    if (\n      rightIndex < endIndex &&\n      compare(heap[childIndex], heap[rightIndex]) >= 0\n    ) {\n      childIndex = rightIndex;\n    }\n\n    heap[i] = heap[childIndex];\n    i = childIndex;\n    childIndex = 2 * i + 1;\n  }\n\n  heap[i] = item;\n  siftDown(compare, heap, startIndex, i);\n}\n\n/**\n * Function used to push an item into a heap represented by a raw array.\n *\n * @param {function} compare - Comparison function.\n * @param {array}    heap    - Array storing the heap's data.\n * @param {any}      item    - Item to push.\n */\nfunction push(compare, heap, item) {\n  heap.push(item);\n  siftDown(compare, heap, 0, heap.length - 1);\n}\n\n/**\n * Function used to pop an item from a heap represented by a raw array.\n *\n * @param  {function} compare - Comparison function.\n * @param  {array}    heap    - Array storing the heap's data.\n * @return {any}\n */\nfunction pop(compare, heap) {\n  var lastItem = heap.pop();\n\n  if (heap.length !== 0) {\n    var item = heap[0];\n    heap[0] = lastItem;\n    siftUp(compare, heap, 0);\n\n    return item;\n  }\n\n  return lastItem;\n}\n\n/**\n * Function used to pop the heap then push a new value into it, thus \"replacing\"\n * it.\n *\n * @param  {function} compare - Comparison function.\n * @param  {array}    heap    - Array storing the heap's data.\n * @param  {any}      item    - The item to push.\n * @return {any}\n */\nfunction replace(compare, heap, item) {\n  if (heap.length === 0)\n    throw new Error('mnemonist/heap.replace: cannot pop an empty heap.');\n\n  var popped = heap[0];\n  heap[0] = item;\n  siftUp(compare, heap, 0);\n\n  return popped;\n}\n\n/**\n * Function used to push an item in the heap then pop the heap and return the\n * popped value.\n *\n * @param  {function} compare - Comparison function.\n * @param  {array}    heap    - Array storing the heap's data.\n * @param  {any}      item    - The item to push.\n * @return {any}\n */\nfunction pushpop(compare, heap, item) {\n  var tmp;\n\n  if (heap.length !== 0 && compare(heap[0], item) < 0) {\n    tmp = heap[0];\n    heap[0] = item;\n    item = tmp;\n    siftUp(compare, heap, 0);\n  }\n\n  return item;\n}\n\n/**\n * Converts and array into an abstract heap in linear time.\n *\n * @param {function} compare - Comparison function.\n * @param {array}    array   - Target array.\n */\nfunction heapify(compare, array) {\n  var n = array.length,\n      l = n >> 1,\n      i = l;\n\n  while (--i >= 0)\n    siftUp(compare, array, i);\n}\n\n/**\n * Fully consumes the given heap.\n *\n * @param  {function} compare - Comparison function.\n * @param  {array}    heap    - Array storing the heap's data.\n * @return {array}\n */\nfunction consume(compare, heap) {\n  var l = heap.length,\n      i = 0;\n\n  var array = new Array(l);\n\n  while (i < l)\n    array[i++] = pop(compare, heap);\n\n  return array;\n}\n\n/**\n * Function used to retrieve the n smallest items from the given iterable.\n *\n * @param {function} compare  - Comparison function.\n * @param {number}   n        - Number of top items to retrieve.\n * @param {any}      iterable - Arbitrary iterable.\n * @param {array}\n */\nfunction nsmallest(compare, n, iterable) {\n  if (arguments.length === 2) {\n    iterable = n;\n    n = compare;\n    compare = DEFAULT_COMPARATOR;\n  }\n\n  var reverseCompare = reverseComparator(compare);\n\n  var i, l, v;\n\n  var min = Infinity;\n\n  var result;\n\n  // If n is equal to 1, it's just a matter of finding the minimum\n  if (n === 1) {\n    if (iterables.isArrayLike(iterable)) {\n      for (i = 0, l = iterable.length; i < l; i++) {\n        v = iterable[i];\n\n        if (min === Infinity || compare(v, min) < 0)\n          min = v;\n      }\n\n      result = new iterable.constructor(1);\n      result[0] = min;\n\n      return result;\n    }\n\n    forEach(iterable, function(value) {\n      if (min === Infinity || compare(value, min) < 0)\n        min = value;\n    });\n\n    return [min];\n  }\n\n  if (iterables.isArrayLike(iterable)) {\n\n    // If n > iterable length, we just clone and sort\n    if (n >= iterable.length)\n      return iterable.slice().sort(compare);\n\n    result = iterable.slice(0, n);\n    heapify(reverseCompare, result);\n\n    for (i = n, l = iterable.length; i < l; i++)\n      if (reverseCompare(iterable[i], result[0]) > 0)\n        replace(reverseCompare, result, iterable[i]);\n\n    // NOTE: if n is over some number, it becomes faster to consume the heap\n    return result.sort(compare);\n  }\n\n  // Correct for size\n  var size = iterables.guessLength(iterable);\n\n  if (size !== null && size < n)\n    n = size;\n\n  result = new Array(n);\n  i = 0;\n\n  forEach(iterable, function(value) {\n    if (i < n) {\n      result[i] = value;\n    }\n    else {\n      if (i === n)\n        heapify(reverseCompare, result);\n\n      if (reverseCompare(value, result[0]) > 0)\n        replace(reverseCompare, result, value);\n    }\n\n    i++;\n  });\n\n  if (result.length > i)\n    result.length = i;\n\n  // NOTE: if n is over some number, it becomes faster to consume the heap\n  return result.sort(compare);\n}\n\n/**\n * Function used to retrieve the n largest items from the given iterable.\n *\n * @param {function} compare  - Comparison function.\n * @param {number}   n        - Number of top items to retrieve.\n * @param {any}      iterable - Arbitrary iterable.\n * @param {array}\n */\nfunction nlargest(compare, n, iterable) {\n  if (arguments.length === 2) {\n    iterable = n;\n    n = compare;\n    compare = DEFAULT_COMPARATOR;\n  }\n\n  var reverseCompare = reverseComparator(compare);\n\n  var i, l, v;\n\n  var max = -Infinity;\n\n  var result;\n\n  // If n is equal to 1, it's just a matter of finding the maximum\n  if (n === 1) {\n    if (iterables.isArrayLike(iterable)) {\n      for (i = 0, l = iterable.length; i < l; i++) {\n        v = iterable[i];\n\n        if (max === -Infinity || compare(v, max) > 0)\n          max = v;\n      }\n\n      result = new iterable.constructor(1);\n      result[0] = max;\n\n      return result;\n    }\n\n    forEach(iterable, function(value) {\n      if (max === -Infinity || compare(value, max) > 0)\n        max = value;\n    });\n\n    return [max];\n  }\n\n  if (iterables.isArrayLike(iterable)) {\n\n    // If n > iterable length, we just clone and sort\n    if (n >= iterable.length)\n      return iterable.slice().sort(reverseCompare);\n\n    result = iterable.slice(0, n);\n    heapify(compare, result);\n\n    for (i = n, l = iterable.length; i < l; i++)\n      if (compare(iterable[i], result[0]) > 0)\n        replace(compare, result, iterable[i]);\n\n    // NOTE: if n is over some number, it becomes faster to consume the heap\n    return result.sort(reverseCompare);\n  }\n\n  // Correct for size\n  var size = iterables.guessLength(iterable);\n\n  if (size !== null && size < n)\n    n = size;\n\n  result = new Array(n);\n  i = 0;\n\n  forEach(iterable, function(value) {\n    if (i < n) {\n      result[i] = value;\n    }\n    else {\n      if (i === n)\n        heapify(compare, result);\n\n      if (compare(value, result[0]) > 0)\n        replace(compare, result, value);\n    }\n\n    i++;\n  });\n\n  if (result.length > i)\n    result.length = i;\n\n  // NOTE: if n is over some number, it becomes faster to consume the heap\n  return result.sort(reverseCompare);\n}\n\n/**\n * Binary Minimum Heap.\n *\n * @constructor\n * @param {function} comparator - Comparator function to use.\n */\nfunction Heap(comparator) {\n  this.clear();\n  this.comparator = comparator || DEFAULT_COMPARATOR;\n\n  if (typeof this.comparator !== 'function')\n    throw new Error('mnemonist/Heap.constructor: given comparator should be a function.');\n}\n\n/**\n * Method used to clear the heap.\n *\n * @return {undefined}\n */\nHeap.prototype.clear = function() {\n\n  // Properties\n  this.items = [];\n  this.size = 0;\n};\n\n/**\n * Method used to push an item into the heap.\n *\n * @param  {any}    item - Item to push.\n * @return {number}\n */\nHeap.prototype.push = function(item) {\n  push(this.comparator, this.items, item);\n  return ++this.size;\n};\n\n/**\n * Method used to retrieve the \"first\" item of the heap.\n *\n * @return {any}\n */\nHeap.prototype.peek = function() {\n  return this.items[0];\n};\n\n/**\n * Method used to retrieve & remove the \"first\" item of the heap.\n *\n * @return {any}\n */\nHeap.prototype.pop = function() {\n  if (this.size !== 0)\n    this.size--;\n\n  return pop(this.comparator, this.items);\n};\n\n/**\n * Method used to pop the heap, then push an item and return the popped\n * item.\n *\n * @param  {any} item - Item to push into the heap.\n * @return {any}\n */\nHeap.prototype.replace = function(item) {\n  return replace(this.comparator, this.items, item);\n};\n\n/**\n * Method used to push the heap, the pop it and return the pooped item.\n *\n * @param  {any} item - Item to push into the heap.\n * @return {any}\n */\nHeap.prototype.pushpop = function(item) {\n  return pushpop(this.comparator, this.items, item);\n};\n\n/**\n * Method used to consume the heap fully and return its items as a sorted array.\n *\n * @return {array}\n */\nHeap.prototype.consume = function() {\n  this.size = 0;\n  return consume(this.comparator, this.items);\n};\n\n/**\n * Method used to convert the heap to an array. Note that it basically clone\n * the heap and consumes it completely. This is hardly performant.\n *\n * @return {array}\n */\nHeap.prototype.toArray = function() {\n  return consume(this.comparator, this.items.slice());\n};\n\n/**\n * Convenience known methods.\n */\nHeap.prototype.inspect = function() {\n  var proxy = this.toArray();\n\n  // Trick so that node displays the name of the constructor\n  Object.defineProperty(proxy, 'constructor', {\n    value: Heap,\n    enumerable: false\n  });\n\n  return proxy;\n};\n\nif (typeof Symbol !== 'undefined')\n  Heap.prototype[Symbol.for('nodejs.util.inspect.custom')] = Heap.prototype.inspect;\n\n/**\n * Binary Maximum Heap.\n *\n * @constructor\n * @param {function} comparator - Comparator function to use.\n */\nfunction MaxHeap(comparator) {\n  this.clear();\n  this.comparator = comparator || DEFAULT_COMPARATOR;\n\n  if (typeof this.comparator !== 'function')\n    throw new Error('mnemonist/MaxHeap.constructor: given comparator should be a function.');\n\n  this.comparator = reverseComparator(this.comparator);\n}\n\nMaxHeap.prototype = Heap.prototype;\n\n/**\n * Static @.from function taking an arbitrary iterable & converting it into\n * a heap.\n *\n * @param  {Iterable} iterable   - Target iterable.\n * @param  {function} comparator - Custom comparator function.\n * @return {Heap}\n */\nHeap.from = function(iterable, comparator) {\n  var heap = new Heap(comparator);\n\n  var items;\n\n  // If iterable is an array, we can be clever about it\n  if (iterables.isArrayLike(iterable))\n    items = iterable.slice();\n  else\n    items = iterables.toArray(iterable);\n\n  heapify(heap.comparator, items);\n  heap.items = items;\n  heap.size = items.length;\n\n  return heap;\n};\n\nMaxHeap.from = function(iterable, comparator) {\n  var heap = new MaxHeap(comparator);\n\n  var items;\n\n  // If iterable is an array, we can be clever about it\n  if (iterables.isArrayLike(iterable))\n    items = iterable.slice();\n  else\n    items = iterables.toArray(iterable);\n\n  heapify(heap.comparator, items);\n  heap.items = items;\n  heap.size = items.length;\n\n  return heap;\n};\n\n/**\n * Exporting.\n */\nHeap.siftUp = siftUp;\nHeap.siftDown = siftDown;\nHeap.push = push;\nHeap.pop = pop;\nHeap.replace = replace;\nHeap.pushpop = pushpop;\nHeap.heapify = heapify;\nHeap.consume = consume;\n\nHeap.nsmallest = nsmallest;\nHeap.nlargest = nlargest;\n\nHeap.MinHeap = Heap;\nHeap.MaxHeap = MaxHeap;\n\nmodule.exports = Heap;\n", "/**\n * Mnemonist Suffix Array\n * =======================\n *\n * Linear time implementation of a suffix array using the recursive\n * method by Karkkainen and Sanders.\n *\n * [References]:\n * https://www.cs.helsinki.fi/u/tpkarkka/publications/jacm05-revised.pdf\n * http://people.mpi-inf.mpg.de/~sanders/programs/suffix/\n * http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.184.442&rep=rep1&type=pdf\n *\n * [Article]:\n * \"Simple Linear Work Suffix Array Construction\", Karkkainen and Sanders.\n *\n * [Note]:\n * A paper by Simon J. Puglisi, William F. Smyth & Andrew Turpin named\n * \"The Performance of Linear Time Suffix Sorting Algorithms\" seems to\n * prove that supralinear algorithm are in fact better faring for\n * \"real\" world use cases. It would be nice to check this out in JavaScript\n * because the high level of the language could change a lot to the fact.\n *\n * The current code is largely inspired by the following:\n * https://github.com/tixxit/suffixarray/blob/master/suffixarray.js\n */\n\n/**\n * Constants.\n */\nvar SEPARATOR = '\\u0001';\n\n/**\n * Function used to sort the triples.\n *\n * @param {string|array} string - Padded sequence.\n * @param {array}        array  - Array to sort (will be mutated).\n * @param {number}       offset - Index offset.\n */\nfunction sort(string, array, offset) {\n  var l = array.length,\n      buckets = [],\n      i = l,\n      j = -1,\n      b,\n      d = 0,\n      bits;\n\n  while (i--)\n    j = Math.max(string[array[i] + offset], j);\n\n  bits = j >> 24 && 32 || j >> 16 && 24 || j >> 8 && 16 || 8;\n\n  for (; d < bits; d += 4) {\n    for (i = 16; i--;)\n      buckets[i] = [];\n    for (i = l; i--;)\n      buckets[((string[array[i] + offset]) >> d) & 15].push(array[i]);\n    for (b = 0; b < 16; b++) {\n      for (j = buckets[b].length; j--;)\n        array[++i] = buckets[b][j];\n    }\n  }\n}\n\n/**\n * Comparison helper.\n */\nfunction compare(string, lookup, m, n) {\n  return (\n    (string[m] - string[n]) ||\n    (m % 3 === 2 ?\n      (string[m + 1] - string[n + 1]) || (lookup[m + 2] - lookup[n + 2]) :\n      (lookup[m + 1] - lookup[n + 1]))\n  );\n}\n\n/**\n * Recursive function used to build the suffix tree in linear time.\n *\n * @param  {string|array} string - Padded sequence.\n * @param  {number}       l      - True length of sequence (unpadded).\n * @return {array}\n */\nfunction build(string, l) {\n  var a = [],\n      b = [],\n      al = (2 * l / 3) | 0,\n      bl = l - al,\n      r = (al + 1) >> 1,\n      i = al,\n      j = 0,\n      k,\n      lookup = [],\n      result = [];\n\n  if (l === 1)\n    return [0];\n\n  while (i--)\n    a[i] = ((i * 3) >> 1) + 1;\n\n  for (i = 3; i--;)\n    sort(string, a, i);\n\n  j = b[((a[0] / 3) | 0) + (a[0] % 3 === 1 ? 0 : r)] = 1;\n\n  for (i = 1; i < al; i++) {\n    if (string[a[i]] !== string[a[i - 1]] ||\n        string[a[i] + 1] !== string[a[i - 1] + 1] ||\n        string[a[i] + 2] !== string[a[i - 1] + 2])\n      j++;\n\n    b[((a[i] / 3) | 0) + (a[i] % 3 === 1 ? 0 : r)] = j;\n  }\n\n  if (j < al) {\n    b = build(b, al);\n\n    for (i = al; i--;)\n      a[i] = b[i] < r ? b[i] * 3 + 1 : ((b[i] - r) * 3 + 2);\n  }\n\n  for (i = al; i--;)\n    lookup[a[i]] = i;\n  lookup[l] = -1;\n  lookup[l + 1] = -2;\n\n  b = l % 3 === 1 ? [l - 1] : [];\n\n  for (i = 0; i < al; i++) {\n    if (a[i] % 3 === 1)\n      b.push(a[i] - 1);\n  }\n\n  sort(string, b, 0);\n\n  for (i = 0, j = 0, k = 0; i < al && j < bl;)\n    result[k++] = (\n      compare(string, lookup, a[i], b[j]) < 0 ?\n        a[i++] :\n        b[j++]\n    );\n\n  while (i < al)\n    result[k++] = a[i++];\n\n  while (j < bl)\n    result[k++] = b[j++];\n\n  return result;\n}\n\n/**\n * Function used to create the array we are going to work on.\n *\n * @param  {string|array} target - Target sequence.\n * @return {array}\n */\nfunction convert(target) {\n\n  // Creating the alphabet array\n  var length = target.length,\n      paddingOffset = length % 3,\n      array = new Array(length + paddingOffset),\n      l,\n      i;\n\n  // If we have an arbitrary sequence, we need to transform it\n  if (typeof target !== 'string') {\n    var uniqueTokens = Object.create(null);\n\n    for (i = 0; i < length; i++) {\n      if (!uniqueTokens[target[i]])\n        uniqueTokens[target[i]] = true;\n    }\n\n    var alphabet = Object.create(null),\n        sortedUniqueTokens = Object.keys(uniqueTokens).sort();\n\n    for (i = 0, l = sortedUniqueTokens.length; i < l; i++)\n      alphabet[sortedUniqueTokens[i]] = i + 1;\n\n    for (i = 0; i < length; i++) {\n      array[i] = alphabet[target[i]];\n    }\n  }\n  else {\n    for (i = 0; i < length; i++)\n      array[i] = target.charCodeAt(i);\n  }\n\n  // Padding the array\n  for (i = length; i < length + paddingOffset; i++)\n    array[i] = 0;\n\n  return array;\n}\n\n/**\n * Suffix Array.\n *\n * @constructor\n * @param {string|array} string - Sequence for which to build the suffix array.\n */\nfunction SuffixArray(string) {\n\n  // Properties\n  this.hasArbitrarySequence = typeof string !== 'string';\n  this.string = string;\n  this.length = string.length;\n\n  // Building the array\n  this.array = build(convert(string), this.length);\n}\n\n/**\n * Convenience known methods.\n */\nSuffixArray.prototype.toString = function() {\n  return this.array.join(',');\n};\n\nSuffixArray.prototype.toJSON = function() {\n  return this.array;\n};\n\nSuffixArray.prototype.inspect = function() {\n  var array = new Array(this.length);\n\n  for (var i = 0; i < this.length; i++)\n    array[i] = this.string.slice(this.array[i]);\n\n  // Trick so that node displays the name of the constructor\n  Object.defineProperty(array, 'constructor', {\n    value: SuffixArray,\n    enumerable: false\n  });\n\n  return array;\n};\n\nif (typeof Symbol !== 'undefined')\n  SuffixArray.prototype[Symbol.for('nodejs.util.inspect.custom')] = SuffixArray.prototype.inspect;\n\n/**\n * Generalized Suffix Array.\n *\n * @constructor\n */\nfunction GeneralizedSuffixArray(strings) {\n\n  // Properties\n  this.hasArbitrarySequence = typeof strings[0] !== 'string';\n  this.size = strings.length;\n\n  if (this.hasArbitrarySequence) {\n    this.text = [];\n\n    for (var i = 0, l = this.size; i < l; i++) {\n      this.text.push.apply(this.text, strings[i]);\n\n      if (i < l - 1)\n        this.text.push(SEPARATOR);\n    }\n  }\n  else {\n    this.text = strings.join(SEPARATOR);\n  }\n\n  this.firstLength = strings[0].length;\n  this.length = this.text.length;\n\n  // Building the array\n  this.array = build(convert(this.text), this.length);\n}\n\n/**\n * Method used to retrieve the longest common subsequence of the generalized\n * suffix array.\n *\n * @return {string|array}\n */\nGeneralizedSuffixArray.prototype.longestCommonSubsequence = function() {\n  var lcs = this.hasArbitrarySequence ? [] : '',\n      lcp,\n      i,\n      j,\n      s,\n      t;\n\n  for (i = 1; i < this.length; i++) {\n    s = this.array[i];\n    t = this.array[i - 1];\n\n    if (s < this.firstLength &&\n        t < this.firstLength)\n      continue;\n\n    if (s > this.firstLength &&\n        t > this.firstLength)\n      continue;\n\n    lcp = Math.min(this.length - s, this.length - t);\n\n    for (j = 0; j < lcp; j++) {\n      if (this.text[s + j] !== this.text[t + j]) {\n        lcp = j;\n        break;\n      }\n    }\n\n    if (lcp > lcs.length)\n      lcs = this.text.slice(s, s + lcp);\n  }\n\n  return lcs;\n};\n\n/**\n * Convenience known methods.\n */\nGeneralizedSuffixArray.prototype.toString = function() {\n  return this.array.join(',');\n};\n\nGeneralizedSuffixArray.prototype.toJSON = function() {\n  return this.array;\n};\n\nGeneralizedSuffixArray.prototype.inspect = function() {\n  var array = new Array(this.length);\n\n  for (var i = 0; i < this.length; i++)\n    array[i] = this.text.slice(this.array[i]);\n\n  // Trick so that node displays the name of the constructor\n  Object.defineProperty(array, 'constructor', {\n    value: GeneralizedSuffixArray,\n    enumerable: false\n  });\n\n  return array;\n};\n\nif (typeof Symbol !== 'undefined')\n  GeneralizedSuffixArray.prototype[Symbol.for('nodejs.util.inspect.custom')] = GeneralizedSuffixArray.prototype.inspect;\n\n/**\n * Exporting.\n */\nSuffixArray.GeneralizedSuffixArray = GeneralizedSuffixArray;\n\nmodule.exports = SuffixArray;\n", "/**\n * Obliterator Iterator Class\n * ===========================\n *\n * Simple class representing the library's iterators.\n */\n\n/**\n * Iterator class.\n *\n * @constructor\n * @param {function} next - Next function.\n */\nfunction Iterator(next) {\n  if (typeof next !== 'function')\n    throw new Error('obliterator/iterator: expecting a function!');\n\n  this.next = next;\n}\n\n/**\n * If symbols are supported, we add `next` to `Symbol.iterator`.\n */\nif (typeof Symbol !== 'undefined')\n  Iterator.prototype[Symbol.iterator] = function () {\n    return this;\n  };\n\n/**\n * Returning an iterator of the given values.\n *\n * @param  {any...} values - Values.\n * @return {Iterator}\n */\nIterator.of = function () {\n  var args = arguments,\n    l = args.length,\n    i = 0;\n\n  return new Iterator(function () {\n    if (i >= l) return {done: true};\n\n    return {done: false, value: args[i++]};\n  });\n};\n\n/**\n * Returning an empty iterator.\n *\n * @return {Iterator}\n */\nIterator.empty = function () {\n  var iterator = new Iterator(function () {\n    return {done: true};\n  });\n\n  return iterator;\n};\n\n/**\n * Returning an iterator over the given indexed sequence.\n *\n * @param  {string|Array} sequence - Target sequence.\n * @return {Iterator}\n */\nIterator.fromSequence = function (sequence) {\n  var i = 0,\n    l = sequence.length;\n\n  return new Iterator(function () {\n    if (i >= l) return {done: true};\n\n    return {done: false, value: sequence[i++]};\n  });\n};\n\n/**\n * Returning whether the given value is an iterator.\n *\n * @param  {any} value - Value.\n * @return {boolean}\n */\nIterator.is = function (value) {\n  if (value instanceof Iterator) return true;\n\n  return (\n    typeof value === 'object' &&\n    value !== null &&\n    typeof value.next === 'function'\n  );\n};\n\n/**\n * Exporting.\n */\nmodule.exports = Iterator;\n", "/**\n * Mnemonist Vector\n * =================\n *\n * Abstract implementation of a growing array that can be used with JavaScript\n * typed arrays and other array-like structures.\n *\n * Note: should try and use ArrayBuffer.transfer when it will be available.\n */\nvar Iterator = require('obliterator/iterator'),\n    forEach = require('obliterator/foreach'),\n    iterables = require('./utils/iterables.js'),\n    typed = require('./utils/typed-arrays.js');\n\n/**\n * Defaults.\n */\nvar DEFAULT_GROWING_POLICY = function(currentCapacity) {\n  return Math.max(1, Math.ceil(currentCapacity * 1.5));\n};\n\nvar pointerArrayFactory = function(capacity) {\n  var PointerArray = typed.getPointerArray(capacity);\n\n  return new PointerArray(capacity);\n};\n\n/**\n * Vector.\n *\n * @constructor\n * @param {function}      ArrayClass             - An array constructor.\n * @param {number|object} initialCapacityOrOptions - Self-explanatory:\n * @param {number}        initialCapacity          - Initial capacity.\n * @param {number}        initialLength            - Initial length.\n * @param {function}      policy                   - Allocation policy.\n */\nfunction Vector(ArrayClass, initialCapacityOrOptions) {\n  if (arguments.length < 1)\n    throw new Error('mnemonist/vector: expecting at least a byte array constructor.');\n\n  var initialCapacity = initialCapacityOrOptions || 0,\n      policy = DEFAULT_GROWING_POLICY,\n      initialLength = 0,\n      factory = false;\n\n  if (typeof initialCapacityOrOptions === 'object') {\n    initialCapacity = initialCapacityOrOptions.initialCapacity || 0;\n    initialLength = initialCapacityOrOptions.initialLength || 0;\n    policy = initialCapacityOrOptions.policy || policy;\n    factory = initialCapacityOrOptions.factory === true;\n  }\n\n  this.factory = factory ? ArrayClass : null;\n  this.ArrayClass = ArrayClass;\n  this.length = initialLength;\n  this.capacity = Math.max(initialLength, initialCapacity);\n  this.policy = policy;\n  this.array = new ArrayClass(this.capacity);\n}\n\n/**\n * Method used to set a value.\n *\n * @param  {number} index - Index to edit.\n * @param  {any}    value - Value.\n * @return {Vector}\n */\nVector.prototype.set = function(index, value) {\n\n  // Out of bounds?\n  if (this.length < index)\n    throw new Error('Vector(' + this.ArrayClass.name + ').set: index out of bounds.');\n\n  // Updating value\n  this.array[index] = value;\n\n  return this;\n};\n\n/**\n * Method used to get a value.\n *\n * @param  {number} index - Index to retrieve.\n * @return {any}\n */\nVector.prototype.get = function(index) {\n  if (this.length < index)\n    return undefined;\n\n  return this.array[index];\n};\n\n/**\n * Method used to apply the growing policy.\n *\n * @param  {number} [override] - Override capacity.\n * @return {number}\n */\nVector.prototype.applyPolicy = function(override) {\n  var newCapacity = this.policy(override || this.capacity);\n\n  if (typeof newCapacity !== 'number' || newCapacity < 0)\n    throw new Error('mnemonist/vector.applyPolicy: policy returned an invalid value (expecting a positive integer).');\n\n  if (newCapacity <= this.capacity)\n    throw new Error('mnemonist/vector.applyPolicy: policy returned a less or equal capacity to allocate.');\n\n  // TODO: we should probably check that the returned number is an integer\n  return newCapacity;\n};\n\n/**\n * Method used to reallocate the underlying array.\n *\n * @param  {number}       capacity - Target capacity.\n * @return {Vector}\n */\nVector.prototype.reallocate = function(capacity) {\n  if (capacity === this.capacity)\n    return this;\n\n  var oldArray = this.array;\n\n  if (capacity < this.length)\n    this.length = capacity;\n\n  if (capacity > this.capacity) {\n    if (this.factory === null)\n      this.array = new this.ArrayClass(capacity);\n    else\n      this.array = this.factory(capacity);\n\n    if (typed.isTypedArray(this.array)) {\n      this.array.set(oldArray, 0);\n    }\n    else {\n      for (var i = 0, l = this.length; i < l; i++)\n        this.array[i] = oldArray[i];\n    }\n  }\n  else {\n    this.array = oldArray.slice(0, capacity);\n  }\n\n  this.capacity = capacity;\n\n  return this;\n};\n\n/**\n * Method used to grow the array.\n *\n * @param  {number}       [capacity] - Optional capacity to match.\n * @return {Vector}\n */\nVector.prototype.grow = function(capacity) {\n  var newCapacity;\n\n  if (typeof capacity === 'number') {\n\n    if (this.capacity >= capacity)\n      return this;\n\n    // We need to match the given capacity\n    newCapacity = this.capacity;\n\n    while (newCapacity < capacity)\n      newCapacity = this.applyPolicy(newCapacity);\n\n    this.reallocate(newCapacity);\n\n    return this;\n  }\n\n  // We need to run the policy once\n  newCapacity = this.applyPolicy();\n  this.reallocate(newCapacity);\n\n  return this;\n};\n\n/**\n * Method used to resize the array. Won't deallocate.\n *\n * @param  {number}       length - Target length.\n * @return {Vector}\n */\nVector.prototype.resize = function(length) {\n  if (length === this.length)\n    return this;\n\n  if (length < this.length) {\n    this.length = length;\n    return this;\n  }\n\n  this.length = length;\n  this.reallocate(length);\n\n  return this;\n};\n\n/**\n * Method used to push a value into the array.\n *\n * @param  {any}    value - Value to push.\n * @return {number}       - Length of the array.\n */\nVector.prototype.push = function(value) {\n  if (this.capacity === this.length)\n    this.grow();\n\n  this.array[this.length++] = value;\n\n  return this.length;\n};\n\n/**\n * Method used to pop the last value of the array.\n *\n * @return {number} - The popped value.\n */\nVector.prototype.pop = function() {\n  if (this.length === 0)\n    return;\n\n  return this.array[--this.length];\n};\n\n/**\n * Method used to create an iterator over a vector's values.\n *\n * @return {Iterator}\n */\nVector.prototype.values = function() {\n  var items = this.array,\n      l = this.length,\n      i = 0;\n\n  return new Iterator(function() {\n    if (i >= l)\n      return {\n        done: true\n      };\n\n    var value = items[i];\n    i++;\n\n    return {\n      value: value,\n      done: false\n    };\n  });\n};\n\n/**\n * Method used to create an iterator over a vector's entries.\n *\n * @return {Iterator}\n */\nVector.prototype.entries = function() {\n  var items = this.array,\n      l = this.length,\n      i = 0;\n\n  return new Iterator(function() {\n    if (i >= l)\n      return {\n        done: true\n      };\n\n    var value = items[i];\n\n    return {\n      value: [i++, value],\n      done: false\n    };\n  });\n};\n\n/**\n * Attaching the #.values method to Symbol.iterator if possible.\n */\nif (typeof Symbol !== 'undefined')\n  Vector.prototype[Symbol.iterator] = Vector.prototype.values;\n\n/**\n * Convenience known methods.\n */\nVector.prototype.inspect = function() {\n  var proxy = this.array.slice(0, this.length);\n\n  proxy.type = this.array.constructor.name;\n  proxy.items = this.length;\n  proxy.capacity = this.capacity;\n\n  // Trick so that node displays the name of the constructor\n  Object.defineProperty(proxy, 'constructor', {\n    value: Vector,\n    enumerable: false\n  });\n\n  return proxy;\n};\n\nif (typeof Symbol !== 'undefined')\n  Vector.prototype[Symbol.for('nodejs.util.inspect.custom')] = Vector.prototype.inspect;\n\n/**\n * Static @.from function taking an arbitrary iterable & converting it into\n * a vector.\n *\n * @param  {Iterable} iterable   - Target iterable.\n * @param  {function} ArrayClass - Byte array class.\n * @param  {number}   capacity   - Desired capacity.\n * @return {Vector}\n */\nVector.from = function(iterable, ArrayClass, capacity) {\n\n  if (arguments.length < 3) {\n\n    // Attempting to guess the needed capacity\n    capacity = iterables.guessLength(iterable);\n\n    if (typeof capacity !== 'number')\n      throw new Error('mnemonist/vector.from: could not guess iterable length. Please provide desired capacity as last argument.');\n  }\n\n  var vector = new Vector(ArrayClass, capacity);\n\n  forEach(iterable, function(value) {\n    vector.push(value);\n  });\n\n  return vector;\n};\n\n/**\n * Exporting.\n */\nfunction subClass(ArrayClass) {\n  var SubClass = function(initialCapacityOrOptions) {\n    Vector.call(this, ArrayClass, initialCapacityOrOptions);\n  };\n\n  for (var k in Vector.prototype) {\n    if (Vector.prototype.hasOwnProperty(k))\n      SubClass.prototype[k] = Vector.prototype[k];\n  }\n\n  SubClass.from = function(iterable, capacity) {\n    return Vector.from(iterable, ArrayClass, capacity);\n  };\n\n  if (typeof Symbol !== 'undefined')\n    SubClass.prototype[Symbol.iterator] = SubClass.prototype.values;\n\n  return SubClass;\n}\n\nVector.Int8Vector = subClass(Int8Array);\nVector.Uint8Vector = subClass(Uint8Array);\nVector.Uint8ClampedVector = subClass(Uint8ClampedArray);\nVector.Int16Vector = subClass(Int16Array);\nVector.Uint16Vector = subClass(Uint16Array);\nVector.Int32Vector = subClass(Int32Array);\nVector.Uint32Vector = subClass(Uint32Array);\nVector.Float32Vector = subClass(Float32Array);\nVector.Float64Vector = subClass(Float64Array);\nVector.PointerVector = subClass(pointerArrayFactory);\n\nmodule.exports = Vector;\n", "/**\n * Mnemonist LRUCache\n * ===================\n *\n * JavaScript implementation of the LRU Cache data structure. To save up\n * memory and allocations this implementation represents its underlying\n * doubly-linked list as static arrays and pointers. Thus, memory is allocated\n * only once at instantiation and JS objects are never created to serve as\n * pointers. This also means this implementation does not trigger too many\n * garbage collections.\n *\n * Note that to save up memory, a LRU Cache can be implemented using a singly\n * linked list by storing predecessors' pointers as hashmap values.\n * However, this means more hashmap lookups and would probably slow the whole\n * thing down. What's more, pointers are not the things taking most space in\n * memory.\n */\nvar Iterator = require('obliterator/iterator'),\n    forEach = require('obliterator/foreach'),\n    typed = require('./utils/typed-arrays.js'),\n    iterables = require('./utils/iterables.js');\n\n/**\n * LRUCache.\n *\n * @constructor\n * @param {function} Keys     - Array class for storing keys.\n * @param {function} Values   - Array class for storing values.\n * @param {number}   capacity - Desired capacity.\n */\nfunction LRUCache(Keys, Values, capacity) {\n  if (arguments.length < 2) {\n    capacity = Keys;\n    Keys = null;\n    Values = null;\n  }\n\n  this.capacity = capacity;\n\n  if (typeof this.capacity !== 'number' || this.capacity <= 0)\n    throw new Error('mnemonist/lru-cache: capacity should be positive number.');\n  else if (!isFinite(this.capacity) || Math.floor(this.capacity) !== this.capacity)\n    throw new Error('mnemonist/lru-cache: capacity should be a finite positive integer.');\n\n  var PointerArray = typed.getPointerArray(capacity);\n\n  this.forward = new PointerArray(capacity);\n  this.backward = new PointerArray(capacity);\n  this.K = typeof Keys === 'function' ? new Keys(capacity) : new Array(capacity);\n  this.V = typeof Values === 'function' ? new Values(capacity) : new Array(capacity);\n\n  // Properties\n  this.size = 0;\n  this.head = 0;\n  this.tail = 0;\n  this.items = {};\n}\n\n/**\n * Method used to clear the structure.\n *\n * @return {undefined}\n */\nLRUCache.prototype.clear = function() {\n  this.size = 0;\n  this.head = 0;\n  this.tail = 0;\n  this.items = {};\n};\n\n/**\n * Method used to splay a value on top.\n *\n * @param  {number}   pointer - Pointer of the value to splay on top.\n * @return {LRUCache}\n */\nLRUCache.prototype.splayOnTop = function(pointer) {\n  var oldHead = this.head;\n\n  if (this.head === pointer)\n    return this;\n\n  var previous = this.backward[pointer],\n      next = this.forward[pointer];\n\n  if (this.tail === pointer) {\n    this.tail = previous;\n  }\n  else {\n    this.backward[next] = previous;\n  }\n\n  this.forward[previous] = next;\n\n  this.backward[oldHead] = pointer;\n  this.head = pointer;\n  this.forward[pointer] = oldHead;\n\n  return this;\n};\n\n/**\n * Method used to set the value for the given key in the cache.\n *\n * @param  {any} key   - Key.\n * @param  {any} value - Value.\n * @return {undefined}\n */\nLRUCache.prototype.set = function(key, value) {\n\n  var pointer = this.items[key];\n\n  // The key already exists, we just need to update the value and splay on top\n  if (typeof pointer !== 'undefined') {\n    this.splayOnTop(pointer);\n    this.V[pointer] = value;\n\n    return;\n  }\n\n  // The cache is not yet full\n  if (this.size < this.capacity) {\n    pointer = this.size++;\n  }\n\n  // Cache is full, we need to drop the last value\n  else {\n    pointer = this.tail;\n    this.tail = this.backward[pointer];\n    delete this.items[this.K[pointer]];\n  }\n\n  // Storing key & value\n  this.items[key] = pointer;\n  this.K[pointer] = key;\n  this.V[pointer] = value;\n\n  // Moving the item at the front of the list\n  this.forward[pointer] = this.head;\n  this.backward[this.head] = pointer;\n  this.head = pointer;\n};\n\n/**\n * Method used to set the value for the given key in the cache\n *\n * @param  {any} key   - Key.\n * @param  {any} value - Value.\n * @return {{evicted: boolean, key: any, value: any}} An object containing the\n * key and value of an item that was overwritten or evicted in the set\n * operation, as well as a boolean indicating whether it was evicted due to\n * limited capacity. Return value is null if nothing was evicted or overwritten\n * during the set operation.\n */\nLRUCache.prototype.setpop = function(key, value) {\n  var oldValue = null;\n  var oldKey = null;\n\n  var pointer = this.items[key];\n\n  // The key already exists, we just need to update the value and splay on top\n  if (typeof pointer !== 'undefined') {\n    this.splayOnTop(pointer);\n    oldValue = this.V[pointer];\n    this.V[pointer] = value;\n    return {evicted: false, key: key, value: oldValue};\n  }\n\n  // The cache is not yet full\n  if (this.size < this.capacity) {\n    pointer = this.size++;\n  }\n\n  // Cache is full, we need to drop the last value\n  else {\n    pointer = this.tail;\n    this.tail = this.backward[pointer];\n    oldValue = this.V[pointer];\n    oldKey = this.K[pointer];\n    delete this.items[oldKey];\n  }\n\n  // Storing key & value\n  this.items[key] = pointer;\n  this.K[pointer] = key;\n  this.V[pointer] = value;\n\n  // Moving the item at the front of the list\n  this.forward[pointer] = this.head;\n  this.backward[this.head] = pointer;\n  this.head = pointer;\n\n  // Return object if eviction took place, otherwise return null\n  if (oldKey) {\n    return {evicted: true, key: oldKey, value: oldValue};\n  }\n  else {\n    return null;\n  }\n};\n\n/**\n * Method used to check whether the key exists in the cache.\n *\n * @param  {any} key   - Key.\n * @return {boolean}\n */\nLRUCache.prototype.has = function(key) {\n  return key in this.items;\n};\n\n/**\n * Method used to get the value attached to the given key. Will move the\n * related key to the front of the underlying linked list.\n *\n * @param  {any} key   - Key.\n * @return {any}\n */\nLRUCache.prototype.get = function(key) {\n  var pointer = this.items[key];\n\n  if (typeof pointer === 'undefined')\n    return;\n\n  this.splayOnTop(pointer);\n\n  return this.V[pointer];\n};\n\n/**\n * Method used to get the value attached to the given key. Does not modify\n * the ordering of the underlying linked list.\n *\n * @param  {any} key   - Key.\n * @return {any}\n */\nLRUCache.prototype.peek = function(key) {\n  var pointer = this.items[key];\n\n  if (typeof pointer === 'undefined')\n    return;\n\n  return this.V[pointer];\n};\n\n/**\n * Method used to iterate over the cache's entries using a callback.\n *\n * @param  {function}  callback - Function to call for each item.\n * @param  {object}    scope    - Optional scope.\n * @return {undefined}\n */\nLRUCache.prototype.forEach = function(callback, scope) {\n  scope = arguments.length > 1 ? scope : this;\n\n  var i = 0,\n      l = this.size;\n\n  var pointer = this.head,\n      keys = this.K,\n      values = this.V,\n      forward = this.forward;\n\n  while (i < l) {\n\n    callback.call(scope, values[pointer], keys[pointer], this);\n    pointer = forward[pointer];\n\n    i++;\n  }\n};\n\n/**\n * Method used to create an iterator over the cache's keys from most\n * recently used to least recently used.\n *\n * @return {Iterator}\n */\nLRUCache.prototype.keys = function() {\n  var i = 0,\n      l = this.size;\n\n  var pointer = this.head,\n      keys = this.K,\n      forward = this.forward;\n\n  return new Iterator(function() {\n    if (i >= l)\n      return {done: true};\n\n    var key = keys[pointer];\n\n    i++;\n\n    if (i < l)\n      pointer = forward[pointer];\n\n    return {\n      done: false,\n      value: key\n    };\n  });\n};\n\n/**\n * Method used to create an iterator over the cache's values from most\n * recently used to least recently used.\n *\n * @return {Iterator}\n */\nLRUCache.prototype.values = function() {\n  var i = 0,\n      l = this.size;\n\n  var pointer = this.head,\n      values = this.V,\n      forward = this.forward;\n\n  return new Iterator(function() {\n    if (i >= l)\n      return {done: true};\n\n    var value = values[pointer];\n\n    i++;\n\n    if (i < l)\n      pointer = forward[pointer];\n\n    return {\n      done: false,\n      value: value\n    };\n  });\n};\n\n/**\n * Method used to create an iterator over the cache's entries from most\n * recently used to least recently used.\n *\n * @return {Iterator}\n */\nLRUCache.prototype.entries = function() {\n  var i = 0,\n      l = this.size;\n\n  var pointer = this.head,\n      keys = this.K,\n      values = this.V,\n      forward = this.forward;\n\n  return new Iterator(function() {\n    if (i >= l)\n      return {done: true};\n\n    var key = keys[pointer],\n        value = values[pointer];\n\n    i++;\n\n    if (i < l)\n      pointer = forward[pointer];\n\n    return {\n      done: false,\n      value: [key, value]\n    };\n  });\n};\n\n/**\n * Attaching the #.entries method to Symbol.iterator if possible.\n */\nif (typeof Symbol !== 'undefined')\n  LRUCache.prototype[Symbol.iterator] = LRUCache.prototype.entries;\n\n/**\n * Convenience known methods.\n */\nLRUCache.prototype.inspect = function() {\n  var proxy = new Map();\n\n  var iterator = this.entries(),\n      step;\n\n  while ((step = iterator.next(), !step.done))\n    proxy.set(step.value[0], step.value[1]);\n\n  // Trick so that node displays the name of the constructor\n  Object.defineProperty(proxy, 'constructor', {\n    value: LRUCache,\n    enumerable: false\n  });\n\n  return proxy;\n};\n\nif (typeof Symbol !== 'undefined')\n  LRUCache.prototype[Symbol.for('nodejs.util.inspect.custom')] = LRUCache.prototype.inspect;\n\n/**\n * Static @.from function taking an arbitrary iterable & converting it into\n * a structure.\n *\n * @param  {Iterable} iterable - Target iterable.\n * @param  {function} Keys     - Array class for storing keys.\n * @param  {function} Values   - Array class for storing values.\n * @param  {number}   capacity - Cache's capacity.\n * @return {LRUCache}\n */\nLRUCache.from = function(iterable, Keys, Values, capacity) {\n  if (arguments.length < 2) {\n    capacity = iterables.guessLength(iterable);\n\n    if (typeof capacity !== 'number')\n      throw new Error('mnemonist/lru-cache.from: could not guess iterable length. Please provide desired capacity as last argument.');\n  }\n  else if (arguments.length === 2) {\n    capacity = Keys;\n    Keys = null;\n    Values = null;\n  }\n\n  var cache = new LRUCache(Keys, Values, capacity);\n\n  forEach(iterable, function(value, key) {\n    cache.set(key, value);\n  });\n\n  return cache;\n};\n\n/**\n * Exporting.\n */\nmodule.exports = LRUCache;\n", "{\n  \"100\": \"Continue\",\n  \"101\": \"Switching Protocols\",\n  \"102\": \"Processing\",\n  \"103\": \"Early Hints\",\n  \"200\": \"OK\",\n  \"201\": \"Created\",\n  \"202\": \"Accepted\",\n  \"203\": \"Non-Authoritative Information\",\n  \"204\": \"No Content\",\n  \"205\": \"Reset Content\",\n  \"206\": \"Partial Content\",\n  \"207\": \"Multi-Status\",\n  \"208\": \"Already Reported\",\n  \"226\": \"IM Used\",\n  \"300\": \"Multiple Choices\",\n  \"301\": \"Moved Permanently\",\n  \"302\": \"Found\",\n  \"303\": \"See Other\",\n  \"304\": \"Not Modified\",\n  \"305\": \"Use Proxy\",\n  \"307\": \"Temporary Redirect\",\n  \"308\": \"Permanent Redirect\",\n  \"400\": \"Bad Request\",\n  \"401\": \"Unauthorized\",\n  \"402\": \"Payment Required\",\n  \"403\": \"Forbidden\",\n  \"404\": \"Not Found\",\n  \"405\": \"Method Not Allowed\",\n  \"406\": \"Not Acceptable\",\n  \"407\": \"Proxy Authentication Required\",\n  \"408\": \"Request Timeout\",\n  \"409\": \"Conflict\",\n  \"410\": \"Gone\",\n  \"411\": \"Length Required\",\n  \"412\": \"Precondition Failed\",\n  \"413\": \"Payload Too Large\",\n  \"414\": \"URI Too Long\",\n  \"415\": \"Unsupported Media Type\",\n  \"416\": \"Range Not Satisfiable\",\n  \"417\": \"Expectation Failed\",\n  \"418\": \"I'm a Teapot\",\n  \"421\": \"Misdirected Request\",\n  \"422\": \"Unprocessable Entity\",\n  \"423\": \"Locked\",\n  \"424\": \"Failed Dependency\",\n  \"425\": \"Too Early\",\n  \"426\": \"Upgrade Required\",\n  \"428\": \"Precondition Required\",\n  \"429\": \"Too Many Requests\",\n  \"431\": \"Request Header Fields Too Large\",\n  \"451\": \"Unavailable For Legal Reasons\",\n  \"500\": \"Internal Server Error\",\n  \"501\": \"Not Implemented\",\n  \"502\": \"Bad Gateway\",\n  \"503\": \"Service Unavailable\",\n  \"504\": \"Gateway Timeout\",\n  \"505\": \"HTTP Version Not Supported\",\n  \"506\": \"Variant Also Negotiates\",\n  \"507\": \"Insufficient Storage\",\n  \"508\": \"Loop Detected\",\n  \"509\": \"Bandwidth Limit Exceeded\",\n  \"510\": \"Not Extended\",\n  \"511\": \"Network Authentication Required\"\n}\n", "/*!\n * statuses\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar codes = require('./codes.json')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = status\n\n// status code to message map\nstatus.message = codes\n\n// status message (lower-case) to code map\nstatus.code = createMessageToStatusCodeMap(codes)\n\n// array of status codes\nstatus.codes = createStatusCodeList(codes)\n\n// status codes for redirects\nstatus.redirect = {\n  300: true,\n  301: true,\n  302: true,\n  303: true,\n  305: true,\n  307: true,\n  308: true\n}\n\n// status codes for empty bodies\nstatus.empty = {\n  204: true,\n  205: true,\n  304: true\n}\n\n// status codes for when you should retry the request\nstatus.retry = {\n  502: true,\n  503: true,\n  504: true\n}\n\n/**\n * Create a map of message to status code.\n * @private\n */\n\nfunction createMessageToStatusCodeMap (codes) {\n  var map = {}\n\n  Object.keys(codes).forEach(function forEachCode (code) {\n    var message = codes[code]\n    var status = Number(code)\n\n    // populate map\n    map[message.toLowerCase()] = status\n  })\n\n  return map\n}\n\n/**\n * Create a list of all status codes.\n * @private\n */\n\nfunction createStatusCodeList (codes) {\n  return Object.keys(codes).map(function mapCode (code) {\n    return Number(code)\n  })\n}\n\n/**\n * Get the status code for given message.\n * @private\n */\n\nfunction getStatusCode (message) {\n  var msg = message.toLowerCase()\n\n  if (!Object.prototype.hasOwnProperty.call(status.code, msg)) {\n    throw new Error('invalid status message: \"' + message + '\"')\n  }\n\n  return status.code[msg]\n}\n\n/**\n * Get the status message for given code.\n * @private\n */\n\nfunction getStatusMessage (code) {\n  if (!Object.prototype.hasOwnProperty.call(status.message, code)) {\n    throw new Error('invalid status code: ' + code)\n  }\n\n  return status.message[code]\n}\n\n/**\n * Get the status code.\n *\n * Given a number, this will throw if it is not a known status\n * code, otherwise the code will be returned. Given a string,\n * the string will be parsed for a number and return the code\n * if valid, otherwise will lookup the code assuming this is\n * the status message.\n *\n * @param {string|number} code\n * @returns {number}\n * @public\n */\n\nfunction status (code) {\n  if (typeof code === 'number') {\n    return getStatusMessage(code)\n  }\n\n  if (typeof code !== 'string') {\n    throw new TypeError('code must be a number or string')\n  }\n\n  // '403'\n  var n = parseInt(code, 10)\n  if (!isNaN(n)) {\n    return getStatusMessage(n)\n  }\n\n  return getStatusCode(code)\n}\n", "/*!\n * http-errors\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar deprecate = require('depd')('http-errors')\nvar setPrototypeOf = require('setprototypeof')\nvar statuses = require('statuses')\nvar inherits = require('inherits')\nvar toIdentifier = require('toidentifier')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = createError\nmodule.exports.HttpError = createHttpErrorConstructor()\nmodule.exports.isHttpError = createIsHttpErrorFunction(module.exports.HttpError)\n\n// Populate exports for all constructors\npopulateConstructorExports(module.exports, statuses.codes, module.exports.HttpError)\n\n/**\n * Get the code class of a status code.\n * @private\n */\n\nfunction codeClass (status) {\n  return Number(String(status).charAt(0) + '00')\n}\n\n/**\n * Create a new HTTP Error.\n *\n * @returns {Error}\n * @public\n */\n\nfunction createError () {\n  // so much arity going on ~_~\n  var err\n  var msg\n  var status = 500\n  var props = {}\n  for (var i = 0; i < arguments.length; i++) {\n    var arg = arguments[i]\n    var type = typeof arg\n    if (type === 'object' && arg instanceof Error) {\n      err = arg\n      status = err.status || err.statusCode || status\n    } else if (type === 'number' && i === 0) {\n      status = arg\n    } else if (type === 'string') {\n      msg = arg\n    } else if (type === 'object') {\n      props = arg\n    } else {\n      throw new TypeError('argument #' + (i + 1) + ' unsupported type ' + type)\n    }\n  }\n\n  if (typeof status === 'number' && (status < 400 || status >= 600)) {\n    deprecate('non-error status code; use only 4xx or 5xx status codes')\n  }\n\n  if (typeof status !== 'number' ||\n    (!statuses.message[status] && (status < 400 || status >= 600))) {\n    status = 500\n  }\n\n  // constructor\n  var HttpError = createError[status] || createError[codeClass(status)]\n\n  if (!err) {\n    // create error\n    err = HttpError\n      ? new HttpError(msg)\n      : new Error(msg || statuses.message[status])\n    Error.captureStackTrace(err, createError)\n  }\n\n  if (!HttpError || !(err instanceof HttpError) || err.status !== status) {\n    // add properties to generic error\n    err.expose = status < 500\n    err.status = err.statusCode = status\n  }\n\n  for (var key in props) {\n    if (key !== 'status' && key !== 'statusCode') {\n      err[key] = props[key]\n    }\n  }\n\n  return err\n}\n\n/**\n * Create HTTP error abstract base class.\n * @private\n */\n\nfunction createHttpErrorConstructor () {\n  function HttpError () {\n    throw new TypeError('cannot construct abstract class')\n  }\n\n  inherits(HttpError, Error)\n\n  return HttpError\n}\n\n/**\n * Create a constructor for a client error.\n * @private\n */\n\nfunction createClientErrorConstructor (HttpError, name, code) {\n  var className = toClassName(name)\n\n  function ClientError (message) {\n    // create the error object\n    var msg = message != null ? message : statuses.message[code]\n    var err = new Error(msg)\n\n    // capture a stack trace to the construction point\n    Error.captureStackTrace(err, ClientError)\n\n    // adjust the [[Prototype]]\n    setPrototypeOf(err, ClientError.prototype)\n\n    // redefine the error message\n    Object.defineProperty(err, 'message', {\n      enumerable: true,\n      configurable: true,\n      value: msg,\n      writable: true\n    })\n\n    // redefine the error name\n    Object.defineProperty(err, 'name', {\n      enumerable: false,\n      configurable: true,\n      value: className,\n      writable: true\n    })\n\n    return err\n  }\n\n  inherits(ClientError, HttpError)\n  nameFunc(ClientError, className)\n\n  ClientError.prototype.status = code\n  ClientError.prototype.statusCode = code\n  ClientError.prototype.expose = true\n\n  return ClientError\n}\n\n/**\n * Create function to test is a value is a HttpError.\n * @private\n */\n\nfunction createIsHttpErrorFunction (HttpError) {\n  return function isHttpError (val) {\n    if (!val || typeof val !== 'object') {\n      return false\n    }\n\n    if (val instanceof HttpError) {\n      return true\n    }\n\n    return val instanceof Error &&\n      typeof val.expose === 'boolean' &&\n      typeof val.statusCode === 'number' && val.status === val.statusCode\n  }\n}\n\n/**\n * Create a constructor for a server error.\n * @private\n */\n\nfunction createServerErrorConstructor (HttpError, name, code) {\n  var className = toClassName(name)\n\n  function ServerError (message) {\n    // create the error object\n    var msg = message != null ? message : statuses.message[code]\n    var err = new Error(msg)\n\n    // capture a stack trace to the construction point\n    Error.captureStackTrace(err, ServerError)\n\n    // adjust the [[Prototype]]\n    setPrototypeOf(err, ServerError.prototype)\n\n    // redefine the error message\n    Object.defineProperty(err, 'message', {\n      enumerable: true,\n      configurable: true,\n      value: msg,\n      writable: true\n    })\n\n    // redefine the error name\n    Object.defineProperty(err, 'name', {\n      enumerable: false,\n      configurable: true,\n      value: className,\n      writable: true\n    })\n\n    return err\n  }\n\n  inherits(ServerError, HttpError)\n  nameFunc(ServerError, className)\n\n  ServerError.prototype.status = code\n  ServerError.prototype.statusCode = code\n  ServerError.prototype.expose = false\n\n  return ServerError\n}\n\n/**\n * Set the name of a function, if possible.\n * @private\n */\n\nfunction nameFunc (func, name) {\n  var desc = Object.getOwnPropertyDescriptor(func, 'name')\n\n  if (desc && desc.configurable) {\n    desc.value = name\n    Object.defineProperty(func, 'name', desc)\n  }\n}\n\n/**\n * Populate the exports object with constructors for every error class.\n * @private\n */\n\nfunction populateConstructorExports (exports, codes, HttpError) {\n  codes.forEach(function forEachCode (code) {\n    var CodeError\n    var name = toIdentifier(statuses.message[code])\n\n    switch (codeClass(code)) {\n      case 400:\n        CodeError = createClientErrorConstructor(HttpError, name, code)\n        break\n      case 500:\n        CodeError = createServerErrorConstructor(HttpError, name, code)\n        break\n    }\n\n    if (CodeError) {\n      // export the constructor\n      exports[code] = CodeError\n      exports[name] = CodeError\n    }\n  })\n}\n\n/**\n * Get a class name from a name identifier.\n *\n * @param {string} name\n * @returns {string}\n * @private\n */\n\nfunction toClassName (name) {\n  return name.slice(-5) === 'Error' ? name : name + 'Error'\n}\n", "const URLSearchParams = require('url').URLSearchParams\n\nmodule.exports = {\n  stringify: (obj) => {\n    const searchParams = new URLSearchParams()\n    const addKey = (k, v, params) => {\n      const val = typeof v === 'string' || typeof v === 'number' ? v : ''\n      params.append(k, val)\n    }\n\n    for (const [key, value] of Object.entries(obj)) {\n      if (Array.isArray(value)) {\n        const lgth = value.length\n        for (let i = 0; i < lgth; i++) {\n          addKey(key, value[i], searchParams)\n        }\n      } else {\n        addKey(key, value, searchParams)\n      }\n    }\n    return searchParams.toString()\n  },\n\n  parse: (str) => {\n    const searchParams = new URLSearchParams(str)\n    const obj = {}\n    for (const key of searchParams.keys()) {\n      const values = searchParams.getAll(key)\n      obj[key] = values.length <= 1 ? values[0] : values\n    }\n    return obj\n  }\n}\n", "{\n  \"application/1d-interleaved-parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"application/3gpdash-qoe-report+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/3gpp-ims+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/3gpphal+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/3gpphalforms+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/a2l\": {\n    \"source\": \"iana\"\n  },\n  \"application/ace+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/ace+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ace-groupcomm+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/ace-trl+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/activemessage\": {\n    \"source\": \"iana\"\n  },\n  \"application/activity+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/aif+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/aif+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-cdni+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-cdnifilter+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-costmap+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-costmapfilter+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-directory+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-endpointcost+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-endpointcostparams+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-endpointprop+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-endpointpropparams+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-error+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-networkmap+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-networkmapfilter+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-propmap+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-propmapparams+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-tips+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-tipsparams+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-updatestreamcontrol+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/alto-updatestreamparams+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/aml\": {\n    \"source\": \"iana\"\n  },\n  \"application/andrew-inset\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ez\"]\n  },\n  \"application/appinstaller\": {\n    \"compressible\": false,\n    \"extensions\": [\"appinstaller\"]\n  },\n  \"application/applefile\": {\n    \"source\": \"iana\"\n  },\n  \"application/applixware\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"aw\"]\n  },\n  \"application/appx\": {\n    \"compressible\": false,\n    \"extensions\": [\"appx\"]\n  },\n  \"application/appxbundle\": {\n    \"compressible\": false,\n    \"extensions\": [\"appxbundle\"]\n  },\n  \"application/at+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/atf\": {\n    \"source\": \"iana\"\n  },\n  \"application/atfx\": {\n    \"source\": \"iana\"\n  },\n  \"application/atom+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"atom\"]\n  },\n  \"application/atomcat+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"atomcat\"]\n  },\n  \"application/atomdeleted+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"atomdeleted\"]\n  },\n  \"application/atomicmail\": {\n    \"source\": \"iana\"\n  },\n  \"application/atomsvc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"atomsvc\"]\n  },\n  \"application/atsc-dwd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dwd\"]\n  },\n  \"application/atsc-dynamic-event-message\": {\n    \"source\": \"iana\"\n  },\n  \"application/atsc-held+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"held\"]\n  },\n  \"application/atsc-rdt+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/atsc-rsat+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rsat\"]\n  },\n  \"application/atxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/auth-policy+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/automationml-aml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"aml\"]\n  },\n  \"application/automationml-amlx+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"amlx\"]\n  },\n  \"application/bacnet-xdd+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/batch-smtp\": {\n    \"source\": \"iana\"\n  },\n  \"application/bdoc\": {\n    \"compressible\": false,\n    \"extensions\": [\"bdoc\"]\n  },\n  \"application/beep+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/bufr\": {\n    \"source\": \"iana\"\n  },\n  \"application/c2pa\": {\n    \"source\": \"iana\"\n  },\n  \"application/calendar+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/calendar+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xcs\"]\n  },\n  \"application/call-completion\": {\n    \"source\": \"iana\"\n  },\n  \"application/cals-1840\": {\n    \"source\": \"iana\"\n  },\n  \"application/captive+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/cbor-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/cccex\": {\n    \"source\": \"iana\"\n  },\n  \"application/ccmp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ccxml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ccxml\"]\n  },\n  \"application/cda+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/cdfx+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"cdfx\"]\n  },\n  \"application/cdmi-capability\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdmia\"]\n  },\n  \"application/cdmi-container\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdmic\"]\n  },\n  \"application/cdmi-domain\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdmid\"]\n  },\n  \"application/cdmi-object\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdmio\"]\n  },\n  \"application/cdmi-queue\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdmiq\"]\n  },\n  \"application/cdni\": {\n    \"source\": \"iana\"\n  },\n  \"application/ce+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/cea\": {\n    \"source\": \"iana\"\n  },\n  \"application/cea-2018+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cellml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cfw\": {\n    \"source\": \"iana\"\n  },\n  \"application/cid-edhoc+cbor-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/city+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/city+json-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/clr\": {\n    \"source\": \"iana\"\n  },\n  \"application/clue+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/clue_info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cms\": {\n    \"source\": \"iana\"\n  },\n  \"application/cnrp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/coap-eap\": {\n    \"source\": \"iana\"\n  },\n  \"application/coap-group+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/coap-payload\": {\n    \"source\": \"iana\"\n  },\n  \"application/commonground\": {\n    \"source\": \"iana\"\n  },\n  \"application/concise-problem-details+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/conference-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cose\": {\n    \"source\": \"iana\"\n  },\n  \"application/cose-key\": {\n    \"source\": \"iana\"\n  },\n  \"application/cose-key-set\": {\n    \"source\": \"iana\"\n  },\n  \"application/cose-x509\": {\n    \"source\": \"iana\"\n  },\n  \"application/cpl+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"cpl\"]\n  },\n  \"application/csrattrs\": {\n    \"source\": \"iana\"\n  },\n  \"application/csta+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cstadata+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/csvm+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cu-seeme\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cu\"]\n  },\n  \"application/cwl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cwl\"]\n  },\n  \"application/cwl+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/cwl+yaml\": {\n    \"source\": \"iana\"\n  },\n  \"application/cwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/cybercash\": {\n    \"source\": \"iana\"\n  },\n  \"application/dart\": {\n    \"compressible\": true\n  },\n  \"application/dash+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mpd\"]\n  },\n  \"application/dash-patch+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mpp\"]\n  },\n  \"application/dashdelta\": {\n    \"source\": \"iana\"\n  },\n  \"application/davmount+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"davmount\"]\n  },\n  \"application/dca-rft\": {\n    \"source\": \"iana\"\n  },\n  \"application/dcd\": {\n    \"source\": \"iana\"\n  },\n  \"application/dec-dx\": {\n    \"source\": \"iana\"\n  },\n  \"application/dialog-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/dicom\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dcm\"]\n  },\n  \"application/dicom+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/dicom+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/dii\": {\n    \"source\": \"iana\"\n  },\n  \"application/dit\": {\n    \"source\": \"iana\"\n  },\n  \"application/dns\": {\n    \"source\": \"iana\"\n  },\n  \"application/dns+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/dns-message\": {\n    \"source\": \"iana\"\n  },\n  \"application/docbook+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"dbk\"]\n  },\n  \"application/dots+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/dpop+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/dskpp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/dssc+der\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dssc\"]\n  },\n  \"application/dssc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xdssc\"]\n  },\n  \"application/dvcs\": {\n    \"source\": \"iana\"\n  },\n  \"application/eat+cwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/eat+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/eat-bun+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/eat-bun+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/eat-ucs+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/eat-ucs+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ecmascript\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"ecma\"]\n  },\n  \"application/edhoc+cbor-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/edi-consent\": {\n    \"source\": \"iana\"\n  },\n  \"application/edi-x12\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/edifact\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/efi\": {\n    \"source\": \"iana\"\n  },\n  \"application/elm+json\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/elm+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.cap+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.comment+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.control+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.deviceinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.ecall.msd\": {\n    \"source\": \"iana\"\n  },\n  \"application/emergencycalldata.legacyesn+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.providerinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.serviceinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.subscriberinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emergencycalldata.veds+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/emma+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"emma\"]\n  },\n  \"application/emotionml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"emotionml\"]\n  },\n  \"application/encaprtp\": {\n    \"source\": \"iana\"\n  },\n  \"application/entity-statement+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/epp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/epub+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"epub\"]\n  },\n  \"application/eshop\": {\n    \"source\": \"iana\"\n  },\n  \"application/exi\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"exi\"]\n  },\n  \"application/expect-ct-report+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/express\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"exp\"]\n  },\n  \"application/fastinfoset\": {\n    \"source\": \"iana\"\n  },\n  \"application/fastsoap\": {\n    \"source\": \"iana\"\n  },\n  \"application/fdf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fdf\"]\n  },\n  \"application/fdt+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"fdt\"]\n  },\n  \"application/fhir+json\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/fhir+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/fido.trusted-apps+json\": {\n    \"compressible\": true\n  },\n  \"application/fits\": {\n    \"source\": \"iana\"\n  },\n  \"application/flexfec\": {\n    \"source\": \"iana\"\n  },\n  \"application/font-sfnt\": {\n    \"source\": \"iana\"\n  },\n  \"application/font-tdpfr\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pfr\"]\n  },\n  \"application/font-woff\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/framework-attributes+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/geo+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"geojson\"]\n  },\n  \"application/geo+json-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/geopackage+sqlite3\": {\n    \"source\": \"iana\"\n  },\n  \"application/geopose+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/geoxacml+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/geoxacml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/gltf-buffer\": {\n    \"source\": \"iana\"\n  },\n  \"application/gml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"gml\"]\n  },\n  \"application/gnap-binding-jws\": {\n    \"source\": \"iana\"\n  },\n  \"application/gnap-binding-jwsd\": {\n    \"source\": \"iana\"\n  },\n  \"application/gnap-binding-rotation-jws\": {\n    \"source\": \"iana\"\n  },\n  \"application/gnap-binding-rotation-jwsd\": {\n    \"source\": \"iana\"\n  },\n  \"application/gpx+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"gpx\"]\n  },\n  \"application/grib\": {\n    \"source\": \"iana\"\n  },\n  \"application/gxf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gxf\"]\n  },\n  \"application/gzip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"gz\"]\n  },\n  \"application/h224\": {\n    \"source\": \"iana\"\n  },\n  \"application/held+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/hjson\": {\n    \"extensions\": [\"hjson\"]\n  },\n  \"application/hl7v2+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/http\": {\n    \"source\": \"iana\"\n  },\n  \"application/hyperstudio\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"stk\"]\n  },\n  \"application/ibe-key-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ibe-pkg-reply+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ibe-pp-data\": {\n    \"source\": \"iana\"\n  },\n  \"application/iges\": {\n    \"source\": \"iana\"\n  },\n  \"application/im-iscomposing+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/index\": {\n    \"source\": \"iana\"\n  },\n  \"application/index.cmd\": {\n    \"source\": \"iana\"\n  },\n  \"application/index.obj\": {\n    \"source\": \"iana\"\n  },\n  \"application/index.response\": {\n    \"source\": \"iana\"\n  },\n  \"application/index.vnd\": {\n    \"source\": \"iana\"\n  },\n  \"application/inkml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ink\",\"inkml\"]\n  },\n  \"application/iotp\": {\n    \"source\": \"iana\"\n  },\n  \"application/ipfix\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ipfix\"]\n  },\n  \"application/ipp\": {\n    \"source\": \"iana\"\n  },\n  \"application/isup\": {\n    \"source\": \"iana\"\n  },\n  \"application/its+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"its\"]\n  },\n  \"application/java-archive\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"jar\",\"war\",\"ear\"]\n  },\n  \"application/java-serialized-object\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"ser\"]\n  },\n  \"application/java-vm\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"class\"]\n  },\n  \"application/javascript\": {\n    \"source\": \"apache\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"js\"]\n  },\n  \"application/jf2feed+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jose\": {\n    \"source\": \"iana\"\n  },\n  \"application/jose+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jrd+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jscalendar+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jscontact+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/json\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"json\",\"map\"]\n  },\n  \"application/json-patch+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/json-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/json5\": {\n    \"extensions\": [\"json5\"]\n  },\n  \"application/jsonml+json\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"jsonml\"]\n  },\n  \"application/jsonpath\": {\n    \"source\": \"iana\"\n  },\n  \"application/jwk+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jwk-set+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/jwk-set+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/kpml-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/kpml-response+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ld+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"jsonld\"]\n  },\n  \"application/lgr+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"lgr\"]\n  },\n  \"application/link-format\": {\n    \"source\": \"iana\"\n  },\n  \"application/linkset\": {\n    \"source\": \"iana\"\n  },\n  \"application/linkset+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/load-control+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/logout+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/lost+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"lostxml\"]\n  },\n  \"application/lostsync+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/lpf+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/lxf\": {\n    \"source\": \"iana\"\n  },\n  \"application/mac-binhex40\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hqx\"]\n  },\n  \"application/mac-compactpro\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cpt\"]\n  },\n  \"application/macwriteii\": {\n    \"source\": \"iana\"\n  },\n  \"application/mads+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mads\"]\n  },\n  \"application/manifest+json\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"webmanifest\"]\n  },\n  \"application/marc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mrc\"]\n  },\n  \"application/marcxml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mrcx\"]\n  },\n  \"application/mathematica\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ma\",\"nb\",\"mb\"]\n  },\n  \"application/mathml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mathml\"]\n  },\n  \"application/mathml-content+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mathml-presentation+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-associated-procedure-description+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-deregister+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-envelope+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-msk+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-msk-response+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-protection-description+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-reception-report+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-register+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-register-response+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-schedule+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbms-user-service-description+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mbox\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mbox\"]\n  },\n  \"application/media-policy-dataset+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mpf\"]\n  },\n  \"application/media_control+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mediaservercontrol+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mscml\"]\n  },\n  \"application/merge-patch+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/metalink+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"metalink\"]\n  },\n  \"application/metalink4+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"meta4\"]\n  },\n  \"application/mets+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mets\"]\n  },\n  \"application/mf4\": {\n    \"source\": \"iana\"\n  },\n  \"application/mikey\": {\n    \"source\": \"iana\"\n  },\n  \"application/mipc\": {\n    \"source\": \"iana\"\n  },\n  \"application/missing-blocks+cbor-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/mmt-aei+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"maei\"]\n  },\n  \"application/mmt-usd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"musd\"]\n  },\n  \"application/mods+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mods\"]\n  },\n  \"application/moss-keys\": {\n    \"source\": \"iana\"\n  },\n  \"application/moss-signature\": {\n    \"source\": \"iana\"\n  },\n  \"application/mosskey-data\": {\n    \"source\": \"iana\"\n  },\n  \"application/mosskey-request\": {\n    \"source\": \"iana\"\n  },\n  \"application/mp21\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"m21\",\"mp21\"]\n  },\n  \"application/mp4\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mp4\",\"mpg4\",\"mp4s\",\"m4p\"]\n  },\n  \"application/mpeg4-generic\": {\n    \"source\": \"iana\"\n  },\n  \"application/mpeg4-iod\": {\n    \"source\": \"iana\"\n  },\n  \"application/mpeg4-iod-xmt\": {\n    \"source\": \"iana\"\n  },\n  \"application/mrb-consumer+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/mrb-publish+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/msc-ivr+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/msc-mixer+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/msix\": {\n    \"compressible\": false,\n    \"extensions\": [\"msix\"]\n  },\n  \"application/msixbundle\": {\n    \"compressible\": false,\n    \"extensions\": [\"msixbundle\"]\n  },\n  \"application/msword\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"doc\",\"dot\"]\n  },\n  \"application/mud+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/multipart-core\": {\n    \"source\": \"iana\"\n  },\n  \"application/mxf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mxf\"]\n  },\n  \"application/n-quads\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nq\"]\n  },\n  \"application/n-triples\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nt\"]\n  },\n  \"application/nasdata\": {\n    \"source\": \"iana\"\n  },\n  \"application/news-checkgroups\": {\n    \"source\": \"iana\",\n    \"charset\": \"US-ASCII\"\n  },\n  \"application/news-groupinfo\": {\n    \"source\": \"iana\",\n    \"charset\": \"US-ASCII\"\n  },\n  \"application/news-transmission\": {\n    \"source\": \"iana\"\n  },\n  \"application/nlsml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/node\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cjs\"]\n  },\n  \"application/nss\": {\n    \"source\": \"iana\"\n  },\n  \"application/oauth-authz-req+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/oblivious-dns-message\": {\n    \"source\": \"iana\"\n  },\n  \"application/ocsp-request\": {\n    \"source\": \"iana\"\n  },\n  \"application/ocsp-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/octet-stream\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"bin\",\"dms\",\"lrf\",\"mar\",\"so\",\"dist\",\"distz\",\"pkg\",\"bpk\",\"dump\",\"elc\",\"deploy\",\"exe\",\"dll\",\"deb\",\"dmg\",\"iso\",\"img\",\"msi\",\"msp\",\"msm\",\"buffer\"]\n  },\n  \"application/oda\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oda\"]\n  },\n  \"application/odm+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/odx\": {\n    \"source\": \"iana\"\n  },\n  \"application/oebps-package+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"opf\"]\n  },\n  \"application/ogg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"ogx\"]\n  },\n  \"application/ohttp-keys\": {\n    \"source\": \"iana\"\n  },\n  \"application/omdoc+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"omdoc\"]\n  },\n  \"application/onenote\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"onetoc\",\"onetoc2\",\"onetmp\",\"onepkg\",\"one\",\"onea\"]\n  },\n  \"application/opc-nodeset+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/oscore\": {\n    \"source\": \"iana\"\n  },\n  \"application/oxps\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oxps\"]\n  },\n  \"application/p21\": {\n    \"source\": \"iana\"\n  },\n  \"application/p21+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/p2p-overlay+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"relo\"]\n  },\n  \"application/parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"application/passport\": {\n    \"source\": \"iana\"\n  },\n  \"application/patch-ops-error+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xer\"]\n  },\n  \"application/pdf\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"pdf\"]\n  },\n  \"application/pdx\": {\n    \"source\": \"iana\"\n  },\n  \"application/pem-certificate-chain\": {\n    \"source\": \"iana\"\n  },\n  \"application/pgp-encrypted\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"pgp\"]\n  },\n  \"application/pgp-keys\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"asc\"]\n  },\n  \"application/pgp-signature\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sig\",\"asc\"]\n  },\n  \"application/pics-rules\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"prf\"]\n  },\n  \"application/pidf+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/pidf-diff+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/pkcs10\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"p10\"]\n  },\n  \"application/pkcs12\": {\n    \"source\": \"iana\"\n  },\n  \"application/pkcs7-mime\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"p7m\",\"p7c\"]\n  },\n  \"application/pkcs7-signature\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"p7s\"]\n  },\n  \"application/pkcs8\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"p8\"]\n  },\n  \"application/pkcs8-encrypted\": {\n    \"source\": \"iana\"\n  },\n  \"application/pkix-attr-cert\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ac\"]\n  },\n  \"application/pkix-cert\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cer\"]\n  },\n  \"application/pkix-crl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"crl\"]\n  },\n  \"application/pkix-pkipath\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pkipath\"]\n  },\n  \"application/pkixcmp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pki\"]\n  },\n  \"application/pls+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"pls\"]\n  },\n  \"application/poc-settings+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/postscript\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ai\",\"eps\",\"ps\"]\n  },\n  \"application/ppsp-tracker+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/private-token-issuer-directory\": {\n    \"source\": \"iana\"\n  },\n  \"application/private-token-request\": {\n    \"source\": \"iana\"\n  },\n  \"application/private-token-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/problem+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/problem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/provenance+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"provx\"]\n  },\n  \"application/provided-claims+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.alvestrand.titrax-sheet\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.cww\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cww\"]\n  },\n  \"application/prs.cyn\": {\n    \"source\": \"iana\",\n    \"charset\": \"7-BIT\"\n  },\n  \"application/prs.hpub+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/prs.implied-document+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/prs.implied-executable\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.implied-object+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/prs.implied-object+json-seq\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.implied-object+yaml\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.implied-structure\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.mayfile\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.nprend\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.plucker\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.rdf-xml-crypt\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.vcfbzip2\": {\n    \"source\": \"iana\"\n  },\n  \"application/prs.xsf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xsf\"]\n  },\n  \"application/pskc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"pskcxml\"]\n  },\n  \"application/pvd+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/qsig\": {\n    \"source\": \"iana\"\n  },\n  \"application/raml+yaml\": {\n    \"compressible\": true,\n    \"extensions\": [\"raml\"]\n  },\n  \"application/raptorfec\": {\n    \"source\": \"iana\"\n  },\n  \"application/rdap+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/rdf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rdf\",\"owl\"]\n  },\n  \"application/reginfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rif\"]\n  },\n  \"application/relax-ng-compact-syntax\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rnc\"]\n  },\n  \"application/remote-printing\": {\n    \"source\": \"apache\"\n  },\n  \"application/reputon+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/resolve-response+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/resource-lists+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rl\"]\n  },\n  \"application/resource-lists-diff+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rld\"]\n  },\n  \"application/rfc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/riscos\": {\n    \"source\": \"iana\"\n  },\n  \"application/rlmi+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/rls-services+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rs\"]\n  },\n  \"application/route-apd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rapd\"]\n  },\n  \"application/route-s-tsid+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"sls\"]\n  },\n  \"application/route-usd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rusd\"]\n  },\n  \"application/rpki-checklist\": {\n    \"source\": \"iana\"\n  },\n  \"application/rpki-ghostbusters\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gbr\"]\n  },\n  \"application/rpki-manifest\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mft\"]\n  },\n  \"application/rpki-publication\": {\n    \"source\": \"iana\"\n  },\n  \"application/rpki-roa\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"roa\"]\n  },\n  \"application/rpki-signed-tal\": {\n    \"source\": \"iana\"\n  },\n  \"application/rpki-updown\": {\n    \"source\": \"iana\"\n  },\n  \"application/rsd+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"rsd\"]\n  },\n  \"application/rss+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"rss\"]\n  },\n  \"application/rtf\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rtf\"]\n  },\n  \"application/rtploopback\": {\n    \"source\": \"iana\"\n  },\n  \"application/rtx\": {\n    \"source\": \"iana\"\n  },\n  \"application/samlassertion+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/samlmetadata+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sarif+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sarif-external-properties+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sbe\": {\n    \"source\": \"iana\"\n  },\n  \"application/sbml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"sbml\"]\n  },\n  \"application/scaip+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/scim+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/scvp-cv-request\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"scq\"]\n  },\n  \"application/scvp-cv-response\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"scs\"]\n  },\n  \"application/scvp-vp-request\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"spq\"]\n  },\n  \"application/scvp-vp-response\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"spp\"]\n  },\n  \"application/sdp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sdp\"]\n  },\n  \"application/secevent+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/senml+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/senml+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/senml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"senmlx\"]\n  },\n  \"application/senml-etch+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/senml-etch+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/senml-exi\": {\n    \"source\": \"iana\"\n  },\n  \"application/sensml+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/sensml+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sensml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"sensmlx\"]\n  },\n  \"application/sensml-exi\": {\n    \"source\": \"iana\"\n  },\n  \"application/sep+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sep-exi\": {\n    \"source\": \"iana\"\n  },\n  \"application/session-info\": {\n    \"source\": \"iana\"\n  },\n  \"application/set-payment\": {\n    \"source\": \"iana\"\n  },\n  \"application/set-payment-initiation\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"setpay\"]\n  },\n  \"application/set-registration\": {\n    \"source\": \"iana\"\n  },\n  \"application/set-registration-initiation\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"setreg\"]\n  },\n  \"application/sgml\": {\n    \"source\": \"iana\"\n  },\n  \"application/sgml-open-catalog\": {\n    \"source\": \"iana\"\n  },\n  \"application/shf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"shf\"]\n  },\n  \"application/sieve\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"siv\",\"sieve\"]\n  },\n  \"application/simple-filter+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/simple-message-summary\": {\n    \"source\": \"iana\"\n  },\n  \"application/simplesymbolcontainer\": {\n    \"source\": \"iana\"\n  },\n  \"application/sipc\": {\n    \"source\": \"iana\"\n  },\n  \"application/slate\": {\n    \"source\": \"iana\"\n  },\n  \"application/smil\": {\n    \"source\": \"apache\"\n  },\n  \"application/smil+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"smi\",\"smil\"]\n  },\n  \"application/smpte336m\": {\n    \"source\": \"iana\"\n  },\n  \"application/soap+fastinfoset\": {\n    \"source\": \"iana\"\n  },\n  \"application/soap+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sparql-query\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rq\"]\n  },\n  \"application/sparql-results+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"srx\"]\n  },\n  \"application/spdx+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/spirits-event+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/sql\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sql\"]\n  },\n  \"application/srgs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gram\"]\n  },\n  \"application/srgs+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"grxml\"]\n  },\n  \"application/sru+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"sru\"]\n  },\n  \"application/ssdl+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"ssdl\"]\n  },\n  \"application/sslkeylogfile\": {\n    \"source\": \"iana\"\n  },\n  \"application/ssml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ssml\"]\n  },\n  \"application/st2110-41\": {\n    \"source\": \"iana\"\n  },\n  \"application/stix+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/stratum\": {\n    \"source\": \"iana\"\n  },\n  \"application/swid+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/swid+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"swidtag\"]\n  },\n  \"application/tamp-apex-update\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-apex-update-confirm\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-community-update\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-community-update-confirm\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-error\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-sequence-adjust\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-sequence-adjust-confirm\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-status-query\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-status-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-update\": {\n    \"source\": \"iana\"\n  },\n  \"application/tamp-update-confirm\": {\n    \"source\": \"iana\"\n  },\n  \"application/tar\": {\n    \"compressible\": true\n  },\n  \"application/taxii+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/td+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/tei+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"tei\",\"teicorpus\"]\n  },\n  \"application/tetra_isi\": {\n    \"source\": \"iana\"\n  },\n  \"application/thraud+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"tfi\"]\n  },\n  \"application/timestamp-query\": {\n    \"source\": \"iana\"\n  },\n  \"application/timestamp-reply\": {\n    \"source\": \"iana\"\n  },\n  \"application/timestamped-data\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tsd\"]\n  },\n  \"application/tlsrpt+gzip\": {\n    \"source\": \"iana\"\n  },\n  \"application/tlsrpt+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/tm+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/tnauthlist\": {\n    \"source\": \"iana\"\n  },\n  \"application/toc+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/token-introspection+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/toml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"toml\"]\n  },\n  \"application/trickle-ice-sdpfrag\": {\n    \"source\": \"iana\"\n  },\n  \"application/trig\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"trig\"]\n  },\n  \"application/trust-chain+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/trust-mark+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/trust-mark-delegation+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/ttml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ttml\"]\n  },\n  \"application/tve-trigger\": {\n    \"source\": \"iana\"\n  },\n  \"application/tzif\": {\n    \"source\": \"iana\"\n  },\n  \"application/tzif-leap\": {\n    \"source\": \"iana\"\n  },\n  \"application/ubjson\": {\n    \"compressible\": false,\n    \"extensions\": [\"ubj\"]\n  },\n  \"application/uccs+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/ujcs+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/ulpfec\": {\n    \"source\": \"iana\"\n  },\n  \"application/urc-grpsheet+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/urc-ressheet+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rsheet\"]\n  },\n  \"application/urc-targetdesc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"td\"]\n  },\n  \"application/urc-uisocketdesc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vc+cose\": {\n    \"source\": \"iana\"\n  },\n  \"application/vc+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/vcard+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vcard+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vemmi\": {\n    \"source\": \"iana\"\n  },\n  \"application/vividence.scriptfile\": {\n    \"source\": \"apache\"\n  },\n  \"application/vnd.1000minds.decision-model+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"1km\"]\n  },\n  \"application/vnd.1ob\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp-prose+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp-prose-pc3a+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp-prose-pc3ach+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp-prose-pc3ch+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp-prose-pc8+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp-v2x-local-service-information\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.5gnas\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.5gsa2x\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.5gsa2x-local-service-information\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.5gsv2x\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.5gsv2x-local-service-information\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.access-transfer-events+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.bsf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.crs+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.current-location-discovery+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.gmop+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.gtpc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.interworking-data\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.lpp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.mc-signalling-ear\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.mcdata-affiliation-command+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcdata-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcdata-msgstore-ctrl-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcdata-payload\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.mcdata-regroup+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcdata-service-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcdata-signalling\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.mcdata-ue-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcdata-user-profile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-affiliation-command+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-floor-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-location-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-mbms-usage-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-regroup+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-service-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-signed+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-ue-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-ue-init-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcptt-user-profile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-affiliation-command+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-location-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-mbms-usage-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-regroup+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-service-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-transmission-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-ue-config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mcvideo-user-profile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.mid-call+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.ngap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.pfcp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.pic-bw-large\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"plb\"]\n  },\n  \"application/vnd.3gpp.pic-bw-small\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"psb\"]\n  },\n  \"application/vnd.3gpp.pic-bw-var\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pvb\"]\n  },\n  \"application/vnd.3gpp.pinapp-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.s1ap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.seal-group-doc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.seal-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.seal-location-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.seal-mbms-usage-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.seal-network-qos-management-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.seal-ue-config-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.seal-unicast-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.seal-user-profile-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.sms\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.sms+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.srvcc-ext+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.srvcc-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.state-and-event-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.ussd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp.v2x\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp.vae-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp2.bcmcsinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.3gpp2.sms\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3gpp2.tcap\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tcap\"]\n  },\n  \"application/vnd.3lightssoftware.imagescal\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.3m.post-it-notes\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pwn\"]\n  },\n  \"application/vnd.accpac.simply.aso\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"aso\"]\n  },\n  \"application/vnd.accpac.simply.imp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"imp\"]\n  },\n  \"application/vnd.acm.addressxfer+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.acm.chatbot+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.acucobol\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"acu\"]\n  },\n  \"application/vnd.acucorp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"atc\",\"acutc\"]\n  },\n  \"application/vnd.adobe.air-application-installer-package+zip\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"air\"]\n  },\n  \"application/vnd.adobe.flash.movie\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.adobe.formscentral.fcdt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fcdt\"]\n  },\n  \"application/vnd.adobe.fxp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fxp\",\"fxpl\"]\n  },\n  \"application/vnd.adobe.partial-upload\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.adobe.xdp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xdp\"]\n  },\n  \"application/vnd.adobe.xfdf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xfdf\"]\n  },\n  \"application/vnd.aether.imp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.afplinedata\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.afplinedata-pagedef\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.cmoca-cmresource\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.foca-charset\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.foca-codedfont\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.foca-codepage\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-cmtable\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-formdef\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-mediummap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-objectcontainer\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-overlay\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.afpc.modca-pagesegment\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.age\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"age\"]\n  },\n  \"application/vnd.ah-barcode\": {\n    \"source\": \"apache\"\n  },\n  \"application/vnd.ahead.space\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ahead\"]\n  },\n  \"application/vnd.airzip.filesecure.azf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"azf\"]\n  },\n  \"application/vnd.airzip.filesecure.azs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"azs\"]\n  },\n  \"application/vnd.amadeus+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.amazon.ebook\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"azw\"]\n  },\n  \"application/vnd.amazon.mobi8-ebook\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.americandynamics.acc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"acc\"]\n  },\n  \"application/vnd.amiga.ami\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ami\"]\n  },\n  \"application/vnd.amundsen.maze+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.android.ota\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.android.package-archive\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"apk\"]\n  },\n  \"application/vnd.anki\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.anser-web-certificate-issue-initiation\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cii\"]\n  },\n  \"application/vnd.anser-web-funds-transfer-initiation\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"fti\"]\n  },\n  \"application/vnd.antix.game-component\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"atx\"]\n  },\n  \"application/vnd.apache.arrow.file\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.apache.arrow.stream\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.apache.parquet\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.apache.thrift.binary\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.apache.thrift.compact\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.apache.thrift.json\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.apexlang\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.api+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.aplextor.warrp+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.apothekende.reservation+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.apple.installer+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mpkg\"]\n  },\n  \"application/vnd.apple.keynote\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"key\"]\n  },\n  \"application/vnd.apple.mpegurl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"m3u8\"]\n  },\n  \"application/vnd.apple.numbers\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"numbers\"]\n  },\n  \"application/vnd.apple.pages\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pages\"]\n  },\n  \"application/vnd.apple.pkpass\": {\n    \"compressible\": false,\n    \"extensions\": [\"pkpass\"]\n  },\n  \"application/vnd.arastra.swi\": {\n    \"source\": \"apache\"\n  },\n  \"application/vnd.aristanetworks.swi\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"swi\"]\n  },\n  \"application/vnd.artisan+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.artsquare\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.astraea-software.iota\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"iota\"]\n  },\n  \"application/vnd.audiograph\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"aep\"]\n  },\n  \"application/vnd.autodesk.fbx\": {\n    \"extensions\": [\"fbx\"]\n  },\n  \"application/vnd.autopackage\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.avalon+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.avistar+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.balsamiq.bmml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"bmml\"]\n  },\n  \"application/vnd.balsamiq.bmpr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.banana-accounting\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bbf.usp.error\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bbf.usp.msg\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bbf.usp.msg+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.bekitzur-stech+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.belightsoft.lhzd+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.belightsoft.lhzl+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.bint.med-content\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.biopax.rdf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.blink-idb-value-wrapper\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.blueice.multipass\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mpm\"]\n  },\n  \"application/vnd.bluetooth.ep.oob\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bluetooth.le.oob\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bmi\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"bmi\"]\n  },\n  \"application/vnd.bpf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.bpf3\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.businessobjects\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rep\"]\n  },\n  \"application/vnd.byu.uapi+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.bzip3\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.c3voc.schedule+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cab-jscript\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.canon-cpdl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.canon-lips\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.capasystems-pg+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cendio.thinlinc.clientconf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.century-systems.tcp_stream\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.chemdraw+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"cdxml\"]\n  },\n  \"application/vnd.chess-pgn\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.chipnuts.karaoke-mmd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mmd\"]\n  },\n  \"application/vnd.ciedi\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cinderella\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdy\"]\n  },\n  \"application/vnd.cirpack.isdn-ext\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.citationstyles.style+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"csl\"]\n  },\n  \"application/vnd.claymore\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cla\"]\n  },\n  \"application/vnd.cloanto.rp9\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rp9\"]\n  },\n  \"application/vnd.clonk.c4group\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"c4g\",\"c4d\",\"c4f\",\"c4p\",\"c4u\"]\n  },\n  \"application/vnd.cluetrust.cartomobile-config\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"c11amc\"]\n  },\n  \"application/vnd.cluetrust.cartomobile-config-pkg\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"c11amz\"]\n  },\n  \"application/vnd.cncf.helm.chart.content.v1.tar+gzip\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cncf.helm.chart.provenance.v1.prov\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cncf.helm.config.v1+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.coffeescript\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.document\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.document-template\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.presentation\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.presentation-template\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.spreadsheet\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collabio.xodocuments.spreadsheet-template\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.collection+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.collection.doc+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.collection.next+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.comicbook+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.comicbook-rar\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.commerce-battelle\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.commonspace\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"csp\"]\n  },\n  \"application/vnd.contact.cmsg\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdbcmsg\"]\n  },\n  \"application/vnd.coreos.ignition+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cosmocaller\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cmc\"]\n  },\n  \"application/vnd.crick.clicker\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"clkx\"]\n  },\n  \"application/vnd.crick.clicker.keyboard\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"clkk\"]\n  },\n  \"application/vnd.crick.clicker.palette\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"clkp\"]\n  },\n  \"application/vnd.crick.clicker.template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"clkt\"]\n  },\n  \"application/vnd.crick.clicker.wordbank\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"clkw\"]\n  },\n  \"application/vnd.criticaltools.wbs+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wbs\"]\n  },\n  \"application/vnd.cryptii.pipe+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.crypto-shade-file\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cryptomator.encrypted\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cryptomator.vault\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ctc-posml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pml\"]\n  },\n  \"application/vnd.ctct.ws+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cups-pdf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cups-postscript\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cups-ppd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ppd\"]\n  },\n  \"application/vnd.cups-raster\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cups-raw\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.curl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.curl.car\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"car\"]\n  },\n  \"application/vnd.curl.pcurl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pcurl\"]\n  },\n  \"application/vnd.cyan.dean.root+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cybank\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.cyclonedx+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.cyclonedx+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.d2l.coursepackage1p0+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.d3m-dataset\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.d3m-problem\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dart\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dart\"]\n  },\n  \"application/vnd.data-vision.rdz\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rdz\"]\n  },\n  \"application/vnd.datalog\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.datapackage+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dataresource+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dbf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dbf\"]\n  },\n  \"application/vnd.dcmp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dcmp\"]\n  },\n  \"application/vnd.debian.binary-package\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dece.data\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvf\",\"uvvf\",\"uvd\",\"uvvd\"]\n  },\n  \"application/vnd.dece.ttml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"uvt\",\"uvvt\"]\n  },\n  \"application/vnd.dece.unspecified\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvx\",\"uvvx\"]\n  },\n  \"application/vnd.dece.zip\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvz\",\"uvvz\"]\n  },\n  \"application/vnd.denovo.fcselayout-link\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fe_launch\"]\n  },\n  \"application/vnd.desmume.movie\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dir-bi.plate-dl-nosuffix\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dm.delegation+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dna\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dna\"]\n  },\n  \"application/vnd.document+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dolby.mlp\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mlp\"]\n  },\n  \"application/vnd.dolby.mobile.1\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dolby.mobile.2\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.doremir.scorecloud-binary-document\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dpgraph\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dpg\"]\n  },\n  \"application/vnd.dreamfactory\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dfac\"]\n  },\n  \"application/vnd.drive+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ds-keypoint\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"kpxx\"]\n  },\n  \"application/vnd.dtg.local\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dtg.local.flash\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dtg.local.html\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ait\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ait\"]\n  },\n  \"application/vnd.dvb.dvbisl+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.dvbj\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.esgcontainer\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ipdcdftnotifaccess\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ipdcesgaccess\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ipdcesgaccess2\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ipdcesgpdd\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.ipdcroaming\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.iptv.alfec-base\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.iptv.alfec-enhancement\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.notif-aggregate-root+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-container+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-generic+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-ia-msglist+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-ia-registration-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-ia-registration-response+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.notif-init+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.dvb.pfr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dvb.service\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"svc\"]\n  },\n  \"application/vnd.dxr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.dynageo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"geo\"]\n  },\n  \"application/vnd.dzr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.easykaraoke.cdgdownload\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecdis-update\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecip.rlp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.eclipse.ditto+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ecowin.chart\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mag\"]\n  },\n  \"application/vnd.ecowin.filerequest\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecowin.fileupdate\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecowin.series\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecowin.seriesrequest\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ecowin.seriesupdate\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.efi.img\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.efi.iso\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.eln+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.emclient.accessrequest+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.enliven\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nml\"]\n  },\n  \"application/vnd.enphase.envoy\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.eprints.data+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.epson.esf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"esf\"]\n  },\n  \"application/vnd.epson.msf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"msf\"]\n  },\n  \"application/vnd.epson.quickanime\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"qam\"]\n  },\n  \"application/vnd.epson.salt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"slt\"]\n  },\n  \"application/vnd.epson.ssf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ssf\"]\n  },\n  \"application/vnd.ericsson.quickcall\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.erofs\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.espass-espass+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.eszigno3+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"es3\",\"et3\"]\n  },\n  \"application/vnd.etsi.aoc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.asic-e+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.etsi.asic-s+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.etsi.cug+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvcommand+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvdiscovery+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvprofile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvsad-bc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvsad-cod+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvsad-npvr+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvservice+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvsync+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.iptvueprofile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.mcid+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.mheg5\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.etsi.overload-control-policy-dataset+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.pstn+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.sci+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.simservs+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.timestamp-token\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.etsi.tsl+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.etsi.tsl.der\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.eu.kasparian.car+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.eudora.data\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.evolv.ecig.profile\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.evolv.ecig.settings\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.evolv.ecig.theme\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.exstream-empower+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.exstream-package\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ezpix-album\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ez2\"]\n  },\n  \"application/vnd.ezpix-package\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ez3\"]\n  },\n  \"application/vnd.f-secure.mobile\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.familysearch.gedcom+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.fastcopy-disk-image\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fdf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"fdf\"]\n  },\n  \"application/vnd.fdsn.mseed\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mseed\"]\n  },\n  \"application/vnd.fdsn.seed\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"seed\",\"dataless\"]\n  },\n  \"application/vnd.fdsn.stationxml+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"XML-BASED\",\n    \"compressible\": true\n  },\n  \"application/vnd.ffsns\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ficlab.flb+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.filmit.zfc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fints\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.firemonkeys.cloudcell\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.flographit\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gph\"]\n  },\n  \"application/vnd.fluxtime.clip\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ftc\"]\n  },\n  \"application/vnd.font-fontforge-sfd\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.framemaker\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fm\",\"frame\",\"maker\",\"book\"]\n  },\n  \"application/vnd.freelog.comic\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.frogans.fnc\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"fnc\"]\n  },\n  \"application/vnd.frogans.ltf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ltf\"]\n  },\n  \"application/vnd.fsc.weblaunch\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fsc\"]\n  },\n  \"application/vnd.fujifilm.fb.docuworks\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujifilm.fb.docuworks.binder\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujifilm.fb.docuworks.container\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujifilm.fb.jfi+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.fujitsu.oasys\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oas\"]\n  },\n  \"application/vnd.fujitsu.oasys2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oa2\"]\n  },\n  \"application/vnd.fujitsu.oasys3\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oa3\"]\n  },\n  \"application/vnd.fujitsu.oasysgp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fg5\"]\n  },\n  \"application/vnd.fujitsu.oasysprs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"bh2\"]\n  },\n  \"application/vnd.fujixerox.art-ex\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujixerox.art4\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujixerox.ddd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ddd\"]\n  },\n  \"application/vnd.fujixerox.docuworks\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xdw\"]\n  },\n  \"application/vnd.fujixerox.docuworks.binder\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xbd\"]\n  },\n  \"application/vnd.fujixerox.docuworks.container\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fujixerox.hbpl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.fut-misnet\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.futoin+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.futoin+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.fuzzysheet\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fzs\"]\n  },\n  \"application/vnd.ga4gh.passport+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.genomatix.tuxedo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"txd\"]\n  },\n  \"application/vnd.genozip\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.gentics.grd+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.gentoo.catmetadata+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.gentoo.ebuild\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.gentoo.eclass\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.gentoo.gpkg\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.gentoo.manifest\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.gentoo.pkgmetadata+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.gentoo.xpak\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.geo+json\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/vnd.geocube+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/vnd.geogebra.file\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ggb\"]\n  },\n  \"application/vnd.geogebra.pinboard\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.geogebra.slides\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ggs\"]\n  },\n  \"application/vnd.geogebra.tool\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ggt\"]\n  },\n  \"application/vnd.geometry-explorer\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gex\",\"gre\"]\n  },\n  \"application/vnd.geonext\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gxt\"]\n  },\n  \"application/vnd.geoplan\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"g2w\"]\n  },\n  \"application/vnd.geospace\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"g3w\"]\n  },\n  \"application/vnd.gerber\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.globalplatform.card-content-mgt\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.globalplatform.card-content-mgt-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.gmx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gmx\"]\n  },\n  \"application/vnd.gnu.taler.exchange+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.gnu.taler.merchant+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.google-apps.audio\": {},\n  \"application/vnd.google-apps.document\": {\n    \"compressible\": false,\n    \"extensions\": [\"gdoc\"]\n  },\n  \"application/vnd.google-apps.drawing\": {\n    \"compressible\": false,\n    \"extensions\": [\"gdraw\"]\n  },\n  \"application/vnd.google-apps.drive-sdk\": {\n    \"compressible\": false\n  },\n  \"application/vnd.google-apps.file\": {},\n  \"application/vnd.google-apps.folder\": {\n    \"compressible\": false\n  },\n  \"application/vnd.google-apps.form\": {\n    \"compressible\": false,\n    \"extensions\": [\"gform\"]\n  },\n  \"application/vnd.google-apps.fusiontable\": {},\n  \"application/vnd.google-apps.jam\": {\n    \"compressible\": false,\n    \"extensions\": [\"gjam\"]\n  },\n  \"application/vnd.google-apps.mail-layout\": {},\n  \"application/vnd.google-apps.map\": {\n    \"compressible\": false,\n    \"extensions\": [\"gmap\"]\n  },\n  \"application/vnd.google-apps.photo\": {},\n  \"application/vnd.google-apps.presentation\": {\n    \"compressible\": false,\n    \"extensions\": [\"gslides\"]\n  },\n  \"application/vnd.google-apps.script\": {\n    \"compressible\": false,\n    \"extensions\": [\"gscript\"]\n  },\n  \"application/vnd.google-apps.shortcut\": {},\n  \"application/vnd.google-apps.site\": {\n    \"compressible\": false,\n    \"extensions\": [\"gsite\"]\n  },\n  \"application/vnd.google-apps.spreadsheet\": {\n    \"compressible\": false,\n    \"extensions\": [\"gsheet\"]\n  },\n  \"application/vnd.google-apps.unknown\": {},\n  \"application/vnd.google-apps.video\": {},\n  \"application/vnd.google-earth.kml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"kml\"]\n  },\n  \"application/vnd.google-earth.kmz\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"kmz\"]\n  },\n  \"application/vnd.gov.sk.e-form+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/vnd.gov.sk.e-form+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.gov.sk.xmldatacontainer+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xdcf\"]\n  },\n  \"application/vnd.gpxsee.map+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.grafeq\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gqf\",\"gqs\"]\n  },\n  \"application/vnd.gridmp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.groove-account\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gac\"]\n  },\n  \"application/vnd.groove-help\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ghf\"]\n  },\n  \"application/vnd.groove-identity-message\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gim\"]\n  },\n  \"application/vnd.groove-injector\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"grv\"]\n  },\n  \"application/vnd.groove-tool-message\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gtm\"]\n  },\n  \"application/vnd.groove-tool-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tpl\"]\n  },\n  \"application/vnd.groove-vcard\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vcg\"]\n  },\n  \"application/vnd.hal+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hal+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"hal\"]\n  },\n  \"application/vnd.handheld-entertainment+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"zmm\"]\n  },\n  \"application/vnd.hbci\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hbci\"]\n  },\n  \"application/vnd.hc+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hcl-bireports\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.hdt\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.heroku+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hhe.lesson-player\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"les\"]\n  },\n  \"application/vnd.hp-hpgl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hpgl\"]\n  },\n  \"application/vnd.hp-hpid\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hpid\"]\n  },\n  \"application/vnd.hp-hps\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hps\"]\n  },\n  \"application/vnd.hp-jlyt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jlt\"]\n  },\n  \"application/vnd.hp-pcl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pcl\"]\n  },\n  \"application/vnd.hp-pclxl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pclxl\"]\n  },\n  \"application/vnd.hsl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.httphone\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.hydrostatix.sof-data\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sfd-hdstx\"]\n  },\n  \"application/vnd.hyper+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hyper-item+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hyperdrive+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.hzn-3d-crossword\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ibm.afplinedata\": {\n    \"source\": \"apache\"\n  },\n  \"application/vnd.ibm.electronic-media\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ibm.minipay\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mpy\"]\n  },\n  \"application/vnd.ibm.modcap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"afp\",\"listafp\",\"list3820\"]\n  },\n  \"application/vnd.ibm.rights-management\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"irm\"]\n  },\n  \"application/vnd.ibm.secure-container\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sc\"]\n  },\n  \"application/vnd.iccprofile\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"icc\",\"icm\"]\n  },\n  \"application/vnd.ieee.1905\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.igloader\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"igl\"]\n  },\n  \"application/vnd.imagemeter.folder+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.imagemeter.image+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.immervision-ivp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ivp\"]\n  },\n  \"application/vnd.immervision-ivu\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ivu\"]\n  },\n  \"application/vnd.ims.imsccv1p1\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ims.imsccv1p2\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ims.imsccv1p3\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ims.lis.v2.result+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ims.lti.v2.toolconsumerprofile+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ims.lti.v2.toolproxy+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ims.lti.v2.toolproxy.id+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ims.lti.v2.toolsettings+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ims.lti.v2.toolsettings.simple+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.informedcontrol.rms+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.informix-visionary\": {\n    \"source\": \"apache\"\n  },\n  \"application/vnd.infotech.project\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.infotech.project+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.innopath.wamp.notification\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.insors.igm\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"igm\"]\n  },\n  \"application/vnd.intercon.formnet\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xpw\",\"xpx\"]\n  },\n  \"application/vnd.intergeo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"i2g\"]\n  },\n  \"application/vnd.intertrust.digibox\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.intertrust.nncp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.intu.qbo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"qbo\"]\n  },\n  \"application/vnd.intu.qfx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"qfx\"]\n  },\n  \"application/vnd.ipfs.ipns-record\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ipld.car\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ipld.dag-cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ipld.dag-json\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ipld.raw\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.iptc.g2.catalogitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.conceptitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.knowledgeitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.newsitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.newsmessage+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.packageitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.iptc.g2.planningitem+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ipunplugged.rcprofile\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rcprofile\"]\n  },\n  \"application/vnd.irepository.package+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"irp\"]\n  },\n  \"application/vnd.is-xpr\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xpr\"]\n  },\n  \"application/vnd.isac.fcs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fcs\"]\n  },\n  \"application/vnd.iso11783-10+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.jam\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jam\"]\n  },\n  \"application/vnd.japannet-directory-service\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-jpnstore-wakeup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-payment-wakeup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-registration\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-registration-wakeup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-setstore-wakeup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-verification\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.japannet-verification-wakeup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.jcp.javame.midlet-rms\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rms\"]\n  },\n  \"application/vnd.jisp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jisp\"]\n  },\n  \"application/vnd.joost.joda-archive\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"joda\"]\n  },\n  \"application/vnd.jsk.isdn-ngn\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.kahootz\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ktz\",\"ktr\"]\n  },\n  \"application/vnd.kde.karbon\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"karbon\"]\n  },\n  \"application/vnd.kde.kchart\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"chrt\"]\n  },\n  \"application/vnd.kde.kformula\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kfo\"]\n  },\n  \"application/vnd.kde.kivio\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"flw\"]\n  },\n  \"application/vnd.kde.kontour\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kon\"]\n  },\n  \"application/vnd.kde.kpresenter\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kpr\",\"kpt\"]\n  },\n  \"application/vnd.kde.kspread\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ksp\"]\n  },\n  \"application/vnd.kde.kword\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kwd\",\"kwt\"]\n  },\n  \"application/vnd.kdl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.kenameaapp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"htke\"]\n  },\n  \"application/vnd.keyman.kmp+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.keyman.kmx\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.kidspiration\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kia\"]\n  },\n  \"application/vnd.kinar\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"kne\",\"knp\"]\n  },\n  \"application/vnd.koan\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"skp\",\"skd\",\"skt\",\"skm\"]\n  },\n  \"application/vnd.kodak-descriptor\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sse\"]\n  },\n  \"application/vnd.las\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.las.las+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.las.las+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"lasxml\"]\n  },\n  \"application/vnd.laszip\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ldev.productlicensing\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.leap+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.liberty-request+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.llamagraphics.life-balance.desktop\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"lbd\"]\n  },\n  \"application/vnd.llamagraphics.life-balance.exchange+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"lbe\"]\n  },\n  \"application/vnd.logipipe.circuit+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.loom\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.lotus-1-2-3\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"123\"]\n  },\n  \"application/vnd.lotus-approach\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"apr\"]\n  },\n  \"application/vnd.lotus-freelance\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pre\"]\n  },\n  \"application/vnd.lotus-notes\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nsf\"]\n  },\n  \"application/vnd.lotus-organizer\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"org\"]\n  },\n  \"application/vnd.lotus-screencam\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"scm\"]\n  },\n  \"application/vnd.lotus-wordpro\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"lwp\"]\n  },\n  \"application/vnd.macports.portpkg\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"portpkg\"]\n  },\n  \"application/vnd.mapbox-vector-tile\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mvt\"]\n  },\n  \"application/vnd.marlin.drm.actiontoken+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.marlin.drm.conftoken+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.marlin.drm.license+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.marlin.drm.mdcf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mason+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.maxar.archive.3tz+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.maxmind.maxmind-db\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mcd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mcd\"]\n  },\n  \"application/vnd.mdl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mdl-mbsdf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.medcalcdata\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mc1\"]\n  },\n  \"application/vnd.mediastation.cdkey\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cdkey\"]\n  },\n  \"application/vnd.medicalholodeck.recordxr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.meridian-slingshot\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mermaid\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mfer\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mwf\"]\n  },\n  \"application/vnd.mfmp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mfm\"]\n  },\n  \"application/vnd.micro+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.micrografx.flo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"flo\"]\n  },\n  \"application/vnd.micrografx.igx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"igx\"]\n  },\n  \"application/vnd.microsoft.portable-executable\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.microsoft.windows.thumbnail-cache\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.miele+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.mif\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mif\"]\n  },\n  \"application/vnd.minisoft-hp3000-save\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mitsubishi.misty-guard.trustweb\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mobius.daf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"daf\"]\n  },\n  \"application/vnd.mobius.dis\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dis\"]\n  },\n  \"application/vnd.mobius.mbk\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mbk\"]\n  },\n  \"application/vnd.mobius.mqy\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mqy\"]\n  },\n  \"application/vnd.mobius.msl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"msl\"]\n  },\n  \"application/vnd.mobius.plc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"plc\"]\n  },\n  \"application/vnd.mobius.txf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"txf\"]\n  },\n  \"application/vnd.modl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mophun.application\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mpn\"]\n  },\n  \"application/vnd.mophun.certificate\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mpc\"]\n  },\n  \"application/vnd.motorola.flexsuite\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.adsi\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.fis\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.gotap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.kmr\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.ttc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.flexsuite.wem\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.motorola.iprm\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mozilla.xul+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xul\"]\n  },\n  \"application/vnd.ms-3mfdocument\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-artgalry\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cil\"]\n  },\n  \"application/vnd.ms-asf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-cab-compressed\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cab\"]\n  },\n  \"application/vnd.ms-color.iccprofile\": {\n    \"source\": \"apache\"\n  },\n  \"application/vnd.ms-excel\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"xls\",\"xlm\",\"xla\",\"xlc\",\"xlt\",\"xlw\"]\n  },\n  \"application/vnd.ms-excel.addin.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xlam\"]\n  },\n  \"application/vnd.ms-excel.sheet.binary.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xlsb\"]\n  },\n  \"application/vnd.ms-excel.sheet.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xlsm\"]\n  },\n  \"application/vnd.ms-excel.template.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xltm\"]\n  },\n  \"application/vnd.ms-fontobject\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"eot\"]\n  },\n  \"application/vnd.ms-htmlhelp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"chm\"]\n  },\n  \"application/vnd.ms-ims\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ims\"]\n  },\n  \"application/vnd.ms-lrm\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"lrm\"]\n  },\n  \"application/vnd.ms-office.activex+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-officetheme\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"thmx\"]\n  },\n  \"application/vnd.ms-opentype\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-outlook\": {\n    \"compressible\": false,\n    \"extensions\": [\"msg\"]\n  },\n  \"application/vnd.ms-package.obfuscated-opentype\": {\n    \"source\": \"apache\"\n  },\n  \"application/vnd.ms-pki.seccat\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cat\"]\n  },\n  \"application/vnd.ms-pki.stl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"stl\"]\n  },\n  \"application/vnd.ms-playready.initiator+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-powerpoint\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"ppt\",\"pps\",\"pot\"]\n  },\n  \"application/vnd.ms-powerpoint.addin.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ppam\"]\n  },\n  \"application/vnd.ms-powerpoint.presentation.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pptm\"]\n  },\n  \"application/vnd.ms-powerpoint.slide.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sldm\"]\n  },\n  \"application/vnd.ms-powerpoint.slideshow.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ppsm\"]\n  },\n  \"application/vnd.ms-powerpoint.template.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"potm\"]\n  },\n  \"application/vnd.ms-printdevicecapabilities+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-printing.printticket+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-printschematicket+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.ms-project\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mpp\",\"mpt\"]\n  },\n  \"application/vnd.ms-tnef\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-visio.viewer\": {\n    \"extensions\": [\"vdx\"]\n  },\n  \"application/vnd.ms-windows.devicepairing\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-windows.nwprinting.oob\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-windows.printerpairing\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-windows.wsd.oob\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-wmdrm.lic-chlg-req\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-wmdrm.lic-resp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-wmdrm.meter-chlg-req\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-wmdrm.meter-resp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ms-word.document.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"docm\"]\n  },\n  \"application/vnd.ms-word.template.macroenabled.12\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dotm\"]\n  },\n  \"application/vnd.ms-works\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wps\",\"wks\",\"wcm\",\"wdb\"]\n  },\n  \"application/vnd.ms-wpl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wpl\"]\n  },\n  \"application/vnd.ms-xpsdocument\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"xps\"]\n  },\n  \"application/vnd.msa-disk-image\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.mseq\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mseq\"]\n  },\n  \"application/vnd.msgpack\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.msign\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.multiad.creator\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.multiad.creator.cif\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.music-niff\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.musician\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mus\"]\n  },\n  \"application/vnd.muvee.style\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"msty\"]\n  },\n  \"application/vnd.mynfc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"taglet\"]\n  },\n  \"application/vnd.nacamar.ybrid+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nato.bindingdataobject+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nato.bindingdataobject+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nato.bindingdataobject+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"bdo\"]\n  },\n  \"application/vnd.nato.openxmlformats-package.iepd+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"application/vnd.ncd.control\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ncd.reference\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nearst.inv+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nebumind.line\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nervana\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.netfpx\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.neurolanguage.nlu\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nlu\"]\n  },\n  \"application/vnd.nimn\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nintendo.nitro.rom\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nintendo.snes.rom\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nitf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ntf\",\"nitf\"]\n  },\n  \"application/vnd.noblenet-directory\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nnd\"]\n  },\n  \"application/vnd.noblenet-sealer\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nns\"]\n  },\n  \"application/vnd.noblenet-web\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nnw\"]\n  },\n  \"application/vnd.nokia.catalogs\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.conml+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.conml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nokia.iptv.config+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nokia.isds-radio-presets\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.landmark+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.landmark+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nokia.landmarkcollection+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nokia.n-gage.ac+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ac\"]\n  },\n  \"application/vnd.nokia.n-gage.data\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ngdat\"]\n  },\n  \"application/vnd.nokia.n-gage.symbian.install\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"n-gage\"]\n  },\n  \"application/vnd.nokia.ncd\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.pcd+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.nokia.pcd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.nokia.radio-preset\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rpst\"]\n  },\n  \"application/vnd.nokia.radio-presets\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rpss\"]\n  },\n  \"application/vnd.novadigm.edm\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"edm\"]\n  },\n  \"application/vnd.novadigm.edx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"edx\"]\n  },\n  \"application/vnd.novadigm.ext\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ext\"]\n  },\n  \"application/vnd.ntt-local.content-share\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ntt-local.file-transfer\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ntt-local.ogw_remote-access\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ntt-local.sip-ta_remote\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ntt-local.sip-ta_tcp_stream\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oai.workflows\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oai.workflows+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oai.workflows+yaml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oasis.opendocument.base\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oasis.opendocument.chart\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odc\"]\n  },\n  \"application/vnd.oasis.opendocument.chart-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"otc\"]\n  },\n  \"application/vnd.oasis.opendocument.database\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"odb\"]\n  },\n  \"application/vnd.oasis.opendocument.formula\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odf\"]\n  },\n  \"application/vnd.oasis.opendocument.formula-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odft\"]\n  },\n  \"application/vnd.oasis.opendocument.graphics\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"odg\"]\n  },\n  \"application/vnd.oasis.opendocument.graphics-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"otg\"]\n  },\n  \"application/vnd.oasis.opendocument.image\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odi\"]\n  },\n  \"application/vnd.oasis.opendocument.image-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oti\"]\n  },\n  \"application/vnd.oasis.opendocument.presentation\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"odp\"]\n  },\n  \"application/vnd.oasis.opendocument.presentation-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"otp\"]\n  },\n  \"application/vnd.oasis.opendocument.spreadsheet\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"ods\"]\n  },\n  \"application/vnd.oasis.opendocument.spreadsheet-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ots\"]\n  },\n  \"application/vnd.oasis.opendocument.text\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"odt\"]\n  },\n  \"application/vnd.oasis.opendocument.text-master\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"odm\"]\n  },\n  \"application/vnd.oasis.opendocument.text-master-template\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oasis.opendocument.text-template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ott\"]\n  },\n  \"application/vnd.oasis.opendocument.text-web\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"oth\"]\n  },\n  \"application/vnd.obn\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ocf+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oci.image.manifest.v1+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oftn.l10n+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.contentaccessdownload+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.contentaccessstreaming+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.cspg-hexbinary\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oipf.dae.svg+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.dae.xhtml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.mippvcontrolmessage+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.pae.gem\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oipf.spdiscovery+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.spdlist+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.ueprofile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oipf.userprofile+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.olpc-sugar\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xo\"]\n  },\n  \"application/vnd.oma-scws-config\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma-scws-http-request\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma-scws-http-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.associated-procedure-parameter+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.drm-trigger+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.imd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.ltkm\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.notification+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.provisioningtrigger\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.sgboot\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.sgdd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.sgdu\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.simple-symbol-container\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.bcast.smartcard-trigger+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.sprov+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.bcast.stkm\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.cab-address-book+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.cab-feature-handler+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.cab-pcc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.cab-subs-invite+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.cab-user-prefs+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.dcd\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.dcdc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.dd2+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dd2\"]\n  },\n  \"application/vnd.oma.drm.risd+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.group-usage-list+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.lwm2m+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.lwm2m+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.lwm2m+tlv\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.pal+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.poc.detailed-progress-report+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.poc.final-report+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.poc.groups+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.poc.invocation-descriptor+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.poc.optimized-progress-report+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.push\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.oma.scidm.messages+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oma.xcap-directory+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.omads-email+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/vnd.omads-file+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/vnd.omads-folder+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/vnd.omaloc-supl-init\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepager\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepagertamp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepagertamx\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepagertat\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepagertatp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onepagertatx\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.onvif.metadata\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.openblox.game+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"obgx\"]\n  },\n  \"application/vnd.openblox.game-binary\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.openeye.oeb\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.openofficeorg.extension\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"oxt\"]\n  },\n  \"application/vnd.openstreetmap.data+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"osm\"]\n  },\n  \"application/vnd.opentimestamps.ots\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.openvpi.dspx+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.custom-properties+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.customxmlproperties+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawing+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.extended-properties+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.comments+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.presentation\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"pptx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slide\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sldx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slide+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slideshow\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ppsx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.tags+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"potx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"xlsx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xltx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.theme+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.themeoverride+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.vmldrawing\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"docx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.template\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dotx\"]\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-package.core-properties+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.openxmlformats-package.relationships+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oracle.resource+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.orange.indata\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.osa.netdeploy\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.osgeo.mapguide.package\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mgp\"]\n  },\n  \"application/vnd.osgi.bundle\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.osgi.dp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dp\"]\n  },\n  \"application/vnd.osgi.subsystem\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"esa\"]\n  },\n  \"application/vnd.otps.ct-kip+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.oxli.countgraph\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.pagerduty+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.palm\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pdb\",\"pqa\",\"oprc\"]\n  },\n  \"application/vnd.panoply\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.paos.xml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.patentdive\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.patientecommsdoc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.pawaafile\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"paw\"]\n  },\n  \"application/vnd.pcos\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.pg.format\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"str\"]\n  },\n  \"application/vnd.pg.osasli\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ei6\"]\n  },\n  \"application/vnd.piaccess.application-licence\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.picsel\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"efif\"]\n  },\n  \"application/vnd.pmi.widget\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wg\"]\n  },\n  \"application/vnd.poc.group-advertisement+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.pocketlearn\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"plf\"]\n  },\n  \"application/vnd.powerbuilder6\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pbd\"]\n  },\n  \"application/vnd.powerbuilder6-s\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.powerbuilder7\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.powerbuilder7-s\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.powerbuilder75\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.powerbuilder75-s\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.preminet\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.previewsystems.box\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"box\"]\n  },\n  \"application/vnd.procrate.brushset\": {\n    \"extensions\": [\"brushset\"]\n  },\n  \"application/vnd.procreate.brush\": {\n    \"extensions\": [\"brush\"]\n  },\n  \"application/vnd.procreate.dream\": {\n    \"extensions\": [\"drm\"]\n  },\n  \"application/vnd.proteus.magazine\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mgz\"]\n  },\n  \"application/vnd.psfs\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.pt.mundusmundi\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.publishare-delta-tree\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"qps\"]\n  },\n  \"application/vnd.pvi.ptid1\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ptid\"]\n  },\n  \"application/vnd.pwg-multiplexed\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.pwg-xhtml-print+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xhtm\"]\n  },\n  \"application/vnd.qualcomm.brew-app-res\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.quarantainenet\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.quark.quarkxpress\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"qxd\",\"qxt\",\"qwd\",\"qwt\",\"qxl\",\"qxb\"]\n  },\n  \"application/vnd.quobject-quoxdocument\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.radisys.moml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-audit+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-audit-conf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-audit-conn+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-audit-dialog+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-audit-stream+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-conf+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-base+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-fax-detect+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-fax-sendrecv+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-group+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-speech+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.radisys.msml-dialog-transform+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.rainstor.data\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.rapid\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.rar\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rar\"]\n  },\n  \"application/vnd.realvnc.bed\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"bed\"]\n  },\n  \"application/vnd.recordare.musicxml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mxl\"]\n  },\n  \"application/vnd.recordare.musicxml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"musicxml\"]\n  },\n  \"application/vnd.relpipe\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.renlearn.rlprint\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.resilient.logic\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.restful+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.rig.cryptonote\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cryptonote\"]\n  },\n  \"application/vnd.rim.cod\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cod\"]\n  },\n  \"application/vnd.rn-realmedia\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"rm\"]\n  },\n  \"application/vnd.rn-realmedia-vbr\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"rmvb\"]\n  },\n  \"application/vnd.route66.link66+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"link66\"]\n  },\n  \"application/vnd.rs-274x\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ruckus.download\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.s3sms\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sailingtracker.track\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"st\"]\n  },\n  \"application/vnd.sar\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sbm.cid\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sbm.mid2\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.scribus\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.3df\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.csf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.doc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.eml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.mht\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.net\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.ppt\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.tiff\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealed.xls\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealedmedia.softseal.html\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sealedmedia.softseal.pdf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.seemail\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"see\"]\n  },\n  \"application/vnd.seis+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.sema\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sema\"]\n  },\n  \"application/vnd.semd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"semd\"]\n  },\n  \"application/vnd.semf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"semf\"]\n  },\n  \"application/vnd.shade-save-file\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.shana.informed.formdata\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ifm\"]\n  },\n  \"application/vnd.shana.informed.formtemplate\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"itp\"]\n  },\n  \"application/vnd.shana.informed.interchange\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"iif\"]\n  },\n  \"application/vnd.shana.informed.package\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ipk\"]\n  },\n  \"application/vnd.shootproof+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.shopkick+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.shp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.shx\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sigrok.session\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.simtech-mindmapper\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"twd\",\"twds\"]\n  },\n  \"application/vnd.siren+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.sketchometry\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.smaf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mmf\"]\n  },\n  \"application/vnd.smart.notebook\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.smart.teacher\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"teacher\"]\n  },\n  \"application/vnd.smintio.portals.archive\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.snesdev-page-table\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.software602.filler.form+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"fo\"]\n  },\n  \"application/vnd.software602.filler.form-xml-zip\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.solent.sdkm+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"sdkm\",\"sdkd\"]\n  },\n  \"application/vnd.spotfire.dxp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dxp\"]\n  },\n  \"application/vnd.spotfire.sfs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sfs\"]\n  },\n  \"application/vnd.sqlite3\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sss-cod\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sss-dtf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sss-ntf\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.stardivision.calc\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sdc\"]\n  },\n  \"application/vnd.stardivision.draw\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sda\"]\n  },\n  \"application/vnd.stardivision.impress\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sdd\"]\n  },\n  \"application/vnd.stardivision.math\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"smf\"]\n  },\n  \"application/vnd.stardivision.writer\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sdw\",\"vor\"]\n  },\n  \"application/vnd.stardivision.writer-global\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sgl\"]\n  },\n  \"application/vnd.stepmania.package\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"smzip\"]\n  },\n  \"application/vnd.stepmania.stepchart\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sm\"]\n  },\n  \"application/vnd.street-stream\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sun.wadl+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wadl\"]\n  },\n  \"application/vnd.sun.xml.calc\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxc\"]\n  },\n  \"application/vnd.sun.xml.calc.template\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"stc\"]\n  },\n  \"application/vnd.sun.xml.draw\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxd\"]\n  },\n  \"application/vnd.sun.xml.draw.template\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"std\"]\n  },\n  \"application/vnd.sun.xml.impress\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxi\"]\n  },\n  \"application/vnd.sun.xml.impress.template\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sti\"]\n  },\n  \"application/vnd.sun.xml.math\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxm\"]\n  },\n  \"application/vnd.sun.xml.writer\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxw\"]\n  },\n  \"application/vnd.sun.xml.writer.global\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sxg\"]\n  },\n  \"application/vnd.sun.xml.writer.template\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"stw\"]\n  },\n  \"application/vnd.sus-calendar\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sus\",\"susp\"]\n  },\n  \"application/vnd.svd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"svd\"]\n  },\n  \"application/vnd.swiftview-ics\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sybyl.mol2\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.sycle+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.syft+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.symbian.install\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sis\",\"sisx\"]\n  },\n  \"application/vnd.syncml+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"xsm\"]\n  },\n  \"application/vnd.syncml.dm+wbxml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"extensions\": [\"bdm\"]\n  },\n  \"application/vnd.syncml.dm+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"xdm\"]\n  },\n  \"application/vnd.syncml.dm.notification\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.syncml.dmddf+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.syncml.dmddf+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"ddf\"]\n  },\n  \"application/vnd.syncml.dmtnds+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.syncml.dmtnds+xml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true\n  },\n  \"application/vnd.syncml.ds.notification\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.tableschema+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.tao.intent-module-archive\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tao\"]\n  },\n  \"application/vnd.tcpdump.pcap\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pcap\",\"cap\",\"dmp\"]\n  },\n  \"application/vnd.think-cell.ppttc+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.tmd.mediaflex.api+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.tml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.tmobile-livetv\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tmo\"]\n  },\n  \"application/vnd.tri.onesource\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.trid.tpt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tpt\"]\n  },\n  \"application/vnd.triscape.mxs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mxs\"]\n  },\n  \"application/vnd.trueapp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tra\"]\n  },\n  \"application/vnd.truedoc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ubisoft.webplayer\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ufdl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ufd\",\"ufdl\"]\n  },\n  \"application/vnd.uic.osdm+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.uiq.theme\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"utz\"]\n  },\n  \"application/vnd.umajin\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"umj\"]\n  },\n  \"application/vnd.unity\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"unityweb\"]\n  },\n  \"application/vnd.uoml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"uoml\",\"uo\"]\n  },\n  \"application/vnd.uplanet.alert\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.alert-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.bearer-choice\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.bearer-choice-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.cacheop\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.cacheop-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.channel\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.channel-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.list\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.list-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.listcmd\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.listcmd-wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uplanet.signal\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.uri-map\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.valve.source.material\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vcx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vcx\"]\n  },\n  \"application/vnd.vd-study\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vectorworks\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vel+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.veraison.tsm-report+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.veraison.tsm-report+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.verimatrix.vcas\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.veritone.aion+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.veryant.thin\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.ves.encrypted\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vidsoft.vidconference\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.visio\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vsd\",\"vst\",\"vss\",\"vsw\",\"vsdx\",\"vtx\"]\n  },\n  \"application/vnd.visionary\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vis\"]\n  },\n  \"application/vnd.vividence.scriptfile\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vocalshaper.vsp4\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.vsf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vsf\"]\n  },\n  \"application/vnd.wap.sic\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wap.slc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wap.wbxml\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"extensions\": [\"wbxml\"]\n  },\n  \"application/vnd.wap.wmlc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wmlc\"]\n  },\n  \"application/vnd.wap.wmlscriptc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wmlsc\"]\n  },\n  \"application/vnd.wasmflow.wafl\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.webturbo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wtb\"]\n  },\n  \"application/vnd.wfa.dpp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wfa.p2p\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wfa.wsc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.windows.devicepairing\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wmc\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wmf.bootstrap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wolfram.mathematica\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wolfram.mathematica.package\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wolfram.player\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"nbp\"]\n  },\n  \"application/vnd.wordlift\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wordperfect\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wpd\"]\n  },\n  \"application/vnd.wqd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wqd\"]\n  },\n  \"application/vnd.wrq-hp3000-labelled\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wt.stf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"stf\"]\n  },\n  \"application/vnd.wv.csp+wbxml\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.wv.csp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.wv.ssp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.xacml+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.xara\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xar\"]\n  },\n  \"application/vnd.xarin.cpj\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xecrets-encrypted\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xfdl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xfdl\"]\n  },\n  \"application/vnd.xfdl.webform\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xmi+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vnd.xmpie.cpkg\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xmpie.dpkg\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xmpie.plan\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xmpie.ppkg\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.xmpie.xlim\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.yamaha.hv-dic\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hvd\"]\n  },\n  \"application/vnd.yamaha.hv-script\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hvs\"]\n  },\n  \"application/vnd.yamaha.hv-voice\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hvp\"]\n  },\n  \"application/vnd.yamaha.openscoreformat\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"osf\"]\n  },\n  \"application/vnd.yamaha.openscoreformat.osfpvg+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"osfpvg\"]\n  },\n  \"application/vnd.yamaha.remote-setup\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.yamaha.smaf-audio\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"saf\"]\n  },\n  \"application/vnd.yamaha.smaf-phrase\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"spf\"]\n  },\n  \"application/vnd.yamaha.through-ngn\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.yamaha.tunnel-udpencap\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.yaoweme\": {\n    \"source\": \"iana\"\n  },\n  \"application/vnd.yellowriver-custom-menu\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cmp\"]\n  },\n  \"application/vnd.zul\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"zir\",\"zirz\"]\n  },\n  \"application/vnd.zzazz.deck+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"zaz\"]\n  },\n  \"application/voicexml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"vxml\"]\n  },\n  \"application/voucher-cms+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/voucher-jws+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/vp\": {\n    \"source\": \"iana\"\n  },\n  \"application/vp+cose\": {\n    \"source\": \"iana\"\n  },\n  \"application/vp+jwt\": {\n    \"source\": \"iana\"\n  },\n  \"application/vq-rtcpxr\": {\n    \"source\": \"iana\"\n  },\n  \"application/wasm\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wasm\"]\n  },\n  \"application/watcherinfo+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wif\"]\n  },\n  \"application/webpush-options+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/whoispp-query\": {\n    \"source\": \"iana\"\n  },\n  \"application/whoispp-response\": {\n    \"source\": \"iana\"\n  },\n  \"application/widget\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wgt\"]\n  },\n  \"application/winhlp\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"hlp\"]\n  },\n  \"application/wita\": {\n    \"source\": \"iana\"\n  },\n  \"application/wordperfect5.1\": {\n    \"source\": \"iana\"\n  },\n  \"application/wsdl+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wsdl\"]\n  },\n  \"application/wspolicy+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"wspolicy\"]\n  },\n  \"application/x-7z-compressed\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"7z\"]\n  },\n  \"application/x-abiword\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"abw\"]\n  },\n  \"application/x-ace-compressed\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ace\"]\n  },\n  \"application/x-amf\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-apple-diskimage\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"dmg\"]\n  },\n  \"application/x-arj\": {\n    \"compressible\": false,\n    \"extensions\": [\"arj\"]\n  },\n  \"application/x-authorware-bin\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"aab\",\"x32\",\"u32\",\"vox\"]\n  },\n  \"application/x-authorware-map\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"aam\"]\n  },\n  \"application/x-authorware-seg\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"aas\"]\n  },\n  \"application/x-bcpio\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"bcpio\"]\n  },\n  \"application/x-bdoc\": {\n    \"compressible\": false,\n    \"extensions\": [\"bdoc\"]\n  },\n  \"application/x-bittorrent\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"torrent\"]\n  },\n  \"application/x-blender\": {\n    \"extensions\": [\"blend\"]\n  },\n  \"application/x-blorb\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"blb\",\"blorb\"]\n  },\n  \"application/x-bzip\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"bz\"]\n  },\n  \"application/x-bzip2\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"bz2\",\"boz\"]\n  },\n  \"application/x-cbr\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cbr\",\"cba\",\"cbt\",\"cbz\",\"cb7\"]\n  },\n  \"application/x-cdlink\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"vcd\"]\n  },\n  \"application/x-cfs-compressed\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cfs\"]\n  },\n  \"application/x-chat\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"chat\"]\n  },\n  \"application/x-chess-pgn\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pgn\"]\n  },\n  \"application/x-chrome-extension\": {\n    \"extensions\": [\"crx\"]\n  },\n  \"application/x-cocoa\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"cco\"]\n  },\n  \"application/x-compress\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-compressed\": {\n    \"extensions\": [\"rar\"]\n  },\n  \"application/x-conference\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"nsc\"]\n  },\n  \"application/x-cpio\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cpio\"]\n  },\n  \"application/x-csh\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"csh\"]\n  },\n  \"application/x-deb\": {\n    \"compressible\": false\n  },\n  \"application/x-debian-package\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"deb\",\"udeb\"]\n  },\n  \"application/x-dgc-compressed\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"dgc\"]\n  },\n  \"application/x-director\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"dir\",\"dcr\",\"dxr\",\"cst\",\"cct\",\"cxt\",\"w3d\",\"fgd\",\"swa\"]\n  },\n  \"application/x-doom\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wad\"]\n  },\n  \"application/x-dtbncx+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"ncx\"]\n  },\n  \"application/x-dtbook+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"dtb\"]\n  },\n  \"application/x-dtbresource+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"res\"]\n  },\n  \"application/x-dvi\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"dvi\"]\n  },\n  \"application/x-envoy\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"evy\"]\n  },\n  \"application/x-eva\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"eva\"]\n  },\n  \"application/x-font-bdf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"bdf\"]\n  },\n  \"application/x-font-dos\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-font-framemaker\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-font-ghostscript\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gsf\"]\n  },\n  \"application/x-font-libgrx\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-font-linux-psf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"psf\"]\n  },\n  \"application/x-font-pcf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pcf\"]\n  },\n  \"application/x-font-snf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"snf\"]\n  },\n  \"application/x-font-speedo\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-font-sunos-news\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-font-type1\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pfa\",\"pfb\",\"pfm\",\"afm\"]\n  },\n  \"application/x-font-vfont\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-freearc\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"arc\"]\n  },\n  \"application/x-futuresplash\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"spl\"]\n  },\n  \"application/x-gca-compressed\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gca\"]\n  },\n  \"application/x-glulx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ulx\"]\n  },\n  \"application/x-gnumeric\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gnumeric\"]\n  },\n  \"application/x-gramps-xml\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gramps\"]\n  },\n  \"application/x-gtar\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gtar\"]\n  },\n  \"application/x-gzip\": {\n    \"source\": \"apache\"\n  },\n  \"application/x-hdf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"hdf\"]\n  },\n  \"application/x-httpd-php\": {\n    \"compressible\": true,\n    \"extensions\": [\"php\"]\n  },\n  \"application/x-install-instructions\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"install\"]\n  },\n  \"application/x-ipynb+json\": {\n    \"compressible\": true,\n    \"extensions\": [\"ipynb\"]\n  },\n  \"application/x-iso9660-image\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"iso\"]\n  },\n  \"application/x-iwork-keynote-sffkey\": {\n    \"extensions\": [\"key\"]\n  },\n  \"application/x-iwork-numbers-sffnumbers\": {\n    \"extensions\": [\"numbers\"]\n  },\n  \"application/x-iwork-pages-sffpages\": {\n    \"extensions\": [\"pages\"]\n  },\n  \"application/x-java-archive-diff\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"jardiff\"]\n  },\n  \"application/x-java-jnlp-file\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"jnlp\"]\n  },\n  \"application/x-javascript\": {\n    \"compressible\": true\n  },\n  \"application/x-keepass2\": {\n    \"extensions\": [\"kdbx\"]\n  },\n  \"application/x-latex\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"latex\"]\n  },\n  \"application/x-lua-bytecode\": {\n    \"extensions\": [\"luac\"]\n  },\n  \"application/x-lzh-compressed\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"lzh\",\"lha\"]\n  },\n  \"application/x-makeself\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"run\"]\n  },\n  \"application/x-mie\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mie\"]\n  },\n  \"application/x-mobipocket-ebook\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"prc\",\"mobi\"]\n  },\n  \"application/x-mpegurl\": {\n    \"compressible\": false\n  },\n  \"application/x-ms-application\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"application\"]\n  },\n  \"application/x-ms-shortcut\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"lnk\"]\n  },\n  \"application/x-ms-wmd\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wmd\"]\n  },\n  \"application/x-ms-wmz\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wmz\"]\n  },\n  \"application/x-ms-xbap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xbap\"]\n  },\n  \"application/x-msaccess\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mdb\"]\n  },\n  \"application/x-msbinder\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"obd\"]\n  },\n  \"application/x-mscardfile\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"crd\"]\n  },\n  \"application/x-msclip\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"clp\"]\n  },\n  \"application/x-msdos-program\": {\n    \"extensions\": [\"exe\"]\n  },\n  \"application/x-msdownload\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"exe\",\"dll\",\"com\",\"bat\",\"msi\"]\n  },\n  \"application/x-msmediaview\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mvb\",\"m13\",\"m14\"]\n  },\n  \"application/x-msmetafile\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wmf\",\"wmz\",\"emf\",\"emz\"]\n  },\n  \"application/x-msmoney\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mny\"]\n  },\n  \"application/x-mspublisher\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pub\"]\n  },\n  \"application/x-msschedule\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"scd\"]\n  },\n  \"application/x-msterminal\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"trm\"]\n  },\n  \"application/x-mswrite\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wri\"]\n  },\n  \"application/x-netcdf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"nc\",\"cdf\"]\n  },\n  \"application/x-ns-proxy-autoconfig\": {\n    \"compressible\": true,\n    \"extensions\": [\"pac\"]\n  },\n  \"application/x-nzb\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"nzb\"]\n  },\n  \"application/x-perl\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"pl\",\"pm\"]\n  },\n  \"application/x-pilot\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"prc\",\"pdb\"]\n  },\n  \"application/x-pkcs12\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"p12\",\"pfx\"]\n  },\n  \"application/x-pkcs7-certificates\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"p7b\",\"spc\"]\n  },\n  \"application/x-pkcs7-certreqresp\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"p7r\"]\n  },\n  \"application/x-pki-message\": {\n    \"source\": \"iana\"\n  },\n  \"application/x-rar-compressed\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"rar\"]\n  },\n  \"application/x-redhat-package-manager\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"rpm\"]\n  },\n  \"application/x-research-info-systems\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ris\"]\n  },\n  \"application/x-sea\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"sea\"]\n  },\n  \"application/x-sh\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"sh\"]\n  },\n  \"application/x-shar\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"shar\"]\n  },\n  \"application/x-shockwave-flash\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"swf\"]\n  },\n  \"application/x-silverlight-app\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xap\"]\n  },\n  \"application/x-sql\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sql\"]\n  },\n  \"application/x-stuffit\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"sit\"]\n  },\n  \"application/x-stuffitx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sitx\"]\n  },\n  \"application/x-subrip\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"srt\"]\n  },\n  \"application/x-sv4cpio\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sv4cpio\"]\n  },\n  \"application/x-sv4crc\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sv4crc\"]\n  },\n  \"application/x-t3vm-image\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"t3\"]\n  },\n  \"application/x-tads\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"gam\"]\n  },\n  \"application/x-tar\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"tar\"]\n  },\n  \"application/x-tcl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"tcl\",\"tk\"]\n  },\n  \"application/x-tex\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"tex\"]\n  },\n  \"application/x-tex-tfm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"tfm\"]\n  },\n  \"application/x-texinfo\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"texinfo\",\"texi\"]\n  },\n  \"application/x-tgif\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"obj\"]\n  },\n  \"application/x-ustar\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ustar\"]\n  },\n  \"application/x-virtualbox-hdd\": {\n    \"compressible\": true,\n    \"extensions\": [\"hdd\"]\n  },\n  \"application/x-virtualbox-ova\": {\n    \"compressible\": true,\n    \"extensions\": [\"ova\"]\n  },\n  \"application/x-virtualbox-ovf\": {\n    \"compressible\": true,\n    \"extensions\": [\"ovf\"]\n  },\n  \"application/x-virtualbox-vbox\": {\n    \"compressible\": true,\n    \"extensions\": [\"vbox\"]\n  },\n  \"application/x-virtualbox-vbox-extpack\": {\n    \"compressible\": false,\n    \"extensions\": [\"vbox-extpack\"]\n  },\n  \"application/x-virtualbox-vdi\": {\n    \"compressible\": true,\n    \"extensions\": [\"vdi\"]\n  },\n  \"application/x-virtualbox-vhd\": {\n    \"compressible\": true,\n    \"extensions\": [\"vhd\"]\n  },\n  \"application/x-virtualbox-vmdk\": {\n    \"compressible\": true,\n    \"extensions\": [\"vmdk\"]\n  },\n  \"application/x-wais-source\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"src\"]\n  },\n  \"application/x-web-app-manifest+json\": {\n    \"compressible\": true,\n    \"extensions\": [\"webapp\"]\n  },\n  \"application/x-www-form-urlencoded\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/x-x509-ca-cert\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"der\",\"crt\",\"pem\"]\n  },\n  \"application/x-x509-ca-ra-cert\": {\n    \"source\": \"iana\"\n  },\n  \"application/x-x509-next-ca-cert\": {\n    \"source\": \"iana\"\n  },\n  \"application/x-xfig\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"fig\"]\n  },\n  \"application/x-xliff+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"xlf\"]\n  },\n  \"application/x-xpinstall\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"xpi\"]\n  },\n  \"application/x-xz\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xz\"]\n  },\n  \"application/x-zip-compressed\": {\n    \"extensions\": [\"zip\"]\n  },\n  \"application/x-zmachine\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"z1\",\"z2\",\"z3\",\"z4\",\"z5\",\"z6\",\"z7\",\"z8\"]\n  },\n  \"application/x400-bp\": {\n    \"source\": \"iana\"\n  },\n  \"application/xacml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xaml+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"xaml\"]\n  },\n  \"application/xcap-att+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xav\"]\n  },\n  \"application/xcap-caps+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xca\"]\n  },\n  \"application/xcap-diff+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xdf\"]\n  },\n  \"application/xcap-el+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xel\"]\n  },\n  \"application/xcap-error+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xcap-ns+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xns\"]\n  },\n  \"application/xcon-conference-info+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xcon-conference-info-diff+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xenc+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xenc\"]\n  },\n  \"application/xfdf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xfdf\"]\n  },\n  \"application/xhtml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xhtml\",\"xht\"]\n  },\n  \"application/xhtml-voice+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true\n  },\n  \"application/xliff+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xlf\"]\n  },\n  \"application/xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xml\",\"xsl\",\"xsd\",\"rng\"]\n  },\n  \"application/xml-dtd\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dtd\"]\n  },\n  \"application/xml-external-parsed-entity\": {\n    \"source\": \"iana\"\n  },\n  \"application/xml-patch+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xmpp+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/xop+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xop\"]\n  },\n  \"application/xproc+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"xpl\"]\n  },\n  \"application/xslt+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xsl\",\"xslt\"]\n  },\n  \"application/xspf+xml\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"xspf\"]\n  },\n  \"application/xv+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"mxml\",\"xhvml\",\"xvml\",\"xvm\"]\n  },\n  \"application/yaml\": {\n    \"source\": \"iana\"\n  },\n  \"application/yang\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"yang\"]\n  },\n  \"application/yang-data+cbor\": {\n    \"source\": \"iana\"\n  },\n  \"application/yang-data+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/yang-data+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/yang-patch+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/yang-patch+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/yang-sid+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"application/yin+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"yin\"]\n  },\n  \"application/zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"zip\"]\n  },\n  \"application/zip+dotlottie\": {\n    \"extensions\": [\"lottie\"]\n  },\n  \"application/zlib\": {\n    \"source\": \"iana\"\n  },\n  \"application/zstd\": {\n    \"source\": \"iana\"\n  },\n  \"audio/1d-interleaved-parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"audio/32kadpcm\": {\n    \"source\": \"iana\"\n  },\n  \"audio/3gpp\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"3gpp\"]\n  },\n  \"audio/3gpp2\": {\n    \"source\": \"iana\"\n  },\n  \"audio/aac\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"adts\",\"aac\"]\n  },\n  \"audio/ac3\": {\n    \"source\": \"iana\"\n  },\n  \"audio/adpcm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"adp\"]\n  },\n  \"audio/amr\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"amr\"]\n  },\n  \"audio/amr-wb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/amr-wb+\": {\n    \"source\": \"iana\"\n  },\n  \"audio/aptx\": {\n    \"source\": \"iana\"\n  },\n  \"audio/asc\": {\n    \"source\": \"iana\"\n  },\n  \"audio/atrac-advanced-lossless\": {\n    \"source\": \"iana\"\n  },\n  \"audio/atrac-x\": {\n    \"source\": \"iana\"\n  },\n  \"audio/atrac3\": {\n    \"source\": \"iana\"\n  },\n  \"audio/basic\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"au\",\"snd\"]\n  },\n  \"audio/bv16\": {\n    \"source\": \"iana\"\n  },\n  \"audio/bv32\": {\n    \"source\": \"iana\"\n  },\n  \"audio/clearmode\": {\n    \"source\": \"iana\"\n  },\n  \"audio/cn\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dat12\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dls\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dsr-es201108\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dsr-es202050\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dsr-es202211\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dsr-es202212\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dv\": {\n    \"source\": \"iana\"\n  },\n  \"audio/dvi4\": {\n    \"source\": \"iana\"\n  },\n  \"audio/eac3\": {\n    \"source\": \"iana\"\n  },\n  \"audio/encaprtp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrc\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrc-qcp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrc0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrc1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcb0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcb1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcnw\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcnw0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcnw1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcwb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcwb0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evrcwb1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/evs\": {\n    \"source\": \"iana\"\n  },\n  \"audio/flac\": {\n    \"source\": \"iana\"\n  },\n  \"audio/flexfec\": {\n    \"source\": \"iana\"\n  },\n  \"audio/fwdred\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g711-0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g719\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g722\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g7221\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g723\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g726-16\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g726-24\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g726-32\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g726-40\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g728\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g729\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g7291\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g729d\": {\n    \"source\": \"iana\"\n  },\n  \"audio/g729e\": {\n    \"source\": \"iana\"\n  },\n  \"audio/gsm\": {\n    \"source\": \"iana\"\n  },\n  \"audio/gsm-efr\": {\n    \"source\": \"iana\"\n  },\n  \"audio/gsm-hr-08\": {\n    \"source\": \"iana\"\n  },\n  \"audio/ilbc\": {\n    \"source\": \"iana\"\n  },\n  \"audio/ip-mr_v2.5\": {\n    \"source\": \"iana\"\n  },\n  \"audio/isac\": {\n    \"source\": \"apache\"\n  },\n  \"audio/l16\": {\n    \"source\": \"iana\"\n  },\n  \"audio/l20\": {\n    \"source\": \"iana\"\n  },\n  \"audio/l24\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"audio/l8\": {\n    \"source\": \"iana\"\n  },\n  \"audio/lpc\": {\n    \"source\": \"iana\"\n  },\n  \"audio/matroska\": {\n    \"source\": \"iana\"\n  },\n  \"audio/melp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/melp1200\": {\n    \"source\": \"iana\"\n  },\n  \"audio/melp2400\": {\n    \"source\": \"iana\"\n  },\n  \"audio/melp600\": {\n    \"source\": \"iana\"\n  },\n  \"audio/mhas\": {\n    \"source\": \"iana\"\n  },\n  \"audio/midi\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mid\",\"midi\",\"kar\",\"rmi\"]\n  },\n  \"audio/midi-clip\": {\n    \"source\": \"iana\"\n  },\n  \"audio/mobile-xmf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mxmf\"]\n  },\n  \"audio/mp3\": {\n    \"compressible\": false,\n    \"extensions\": [\"mp3\"]\n  },\n  \"audio/mp4\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"m4a\",\"mp4a\",\"m4b\"]\n  },\n  \"audio/mp4a-latm\": {\n    \"source\": \"iana\"\n  },\n  \"audio/mpa\": {\n    \"source\": \"iana\"\n  },\n  \"audio/mpa-robust\": {\n    \"source\": \"iana\"\n  },\n  \"audio/mpeg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"mpga\",\"mp2\",\"mp2a\",\"mp3\",\"m2a\",\"m3a\"]\n  },\n  \"audio/mpeg4-generic\": {\n    \"source\": \"iana\"\n  },\n  \"audio/musepack\": {\n    \"source\": \"apache\"\n  },\n  \"audio/ogg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"oga\",\"ogg\",\"spx\",\"opus\"]\n  },\n  \"audio/opus\": {\n    \"source\": \"iana\"\n  },\n  \"audio/parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"audio/pcma\": {\n    \"source\": \"iana\"\n  },\n  \"audio/pcma-wb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/pcmu\": {\n    \"source\": \"iana\"\n  },\n  \"audio/pcmu-wb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/prs.sid\": {\n    \"source\": \"iana\"\n  },\n  \"audio/qcelp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/raptorfec\": {\n    \"source\": \"iana\"\n  },\n  \"audio/red\": {\n    \"source\": \"iana\"\n  },\n  \"audio/rtp-enc-aescm128\": {\n    \"source\": \"iana\"\n  },\n  \"audio/rtp-midi\": {\n    \"source\": \"iana\"\n  },\n  \"audio/rtploopback\": {\n    \"source\": \"iana\"\n  },\n  \"audio/rtx\": {\n    \"source\": \"iana\"\n  },\n  \"audio/s3m\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"s3m\"]\n  },\n  \"audio/scip\": {\n    \"source\": \"iana\"\n  },\n  \"audio/silk\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sil\"]\n  },\n  \"audio/smv\": {\n    \"source\": \"iana\"\n  },\n  \"audio/smv-qcp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/smv0\": {\n    \"source\": \"iana\"\n  },\n  \"audio/sofa\": {\n    \"source\": \"iana\"\n  },\n  \"audio/sp-midi\": {\n    \"source\": \"iana\"\n  },\n  \"audio/speex\": {\n    \"source\": \"iana\"\n  },\n  \"audio/t140c\": {\n    \"source\": \"iana\"\n  },\n  \"audio/t38\": {\n    \"source\": \"iana\"\n  },\n  \"audio/telephone-event\": {\n    \"source\": \"iana\"\n  },\n  \"audio/tetra_acelp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/tetra_acelp_bb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/tone\": {\n    \"source\": \"iana\"\n  },\n  \"audio/tsvcis\": {\n    \"source\": \"iana\"\n  },\n  \"audio/uemclip\": {\n    \"source\": \"iana\"\n  },\n  \"audio/ulpfec\": {\n    \"source\": \"iana\"\n  },\n  \"audio/usac\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vdvi\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vmr-wb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.3gpp.iufp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.4sb\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.audiokoz\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.celp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.cisco.nse\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.cmles.radio-events\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.cns.anp1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.cns.inf1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dece.audio\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uva\",\"uvva\"]\n  },\n  \"audio/vnd.digital-winds\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"eol\"]\n  },\n  \"audio/vnd.dlna.adts\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.heaac.1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.heaac.2\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.mlp\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.mps\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.pl2\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.pl2x\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.pl2z\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dolby.pulse.1\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dra\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dra\"]\n  },\n  \"audio/vnd.dts\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dts\"]\n  },\n  \"audio/vnd.dts.hd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dtshd\"]\n  },\n  \"audio/vnd.dts.uhd\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.dvb.file\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.everad.plj\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.hns.audio\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.lucent.voice\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"lvp\"]\n  },\n  \"audio/vnd.ms-playready.media.pya\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pya\"]\n  },\n  \"audio/vnd.nokia.mobile-xmf\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.nortel.vbk\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.nuera.ecelp4800\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ecelp4800\"]\n  },\n  \"audio/vnd.nuera.ecelp7470\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ecelp7470\"]\n  },\n  \"audio/vnd.nuera.ecelp9600\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ecelp9600\"]\n  },\n  \"audio/vnd.octel.sbc\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.presonus.multitrack\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.qcelp\": {\n    \"source\": \"apache\"\n  },\n  \"audio/vnd.rhetorex.32kadpcm\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.rip\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rip\"]\n  },\n  \"audio/vnd.rn-realaudio\": {\n    \"compressible\": false\n  },\n  \"audio/vnd.sealedmedia.softseal.mpeg\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.vmx.cvsd\": {\n    \"source\": \"iana\"\n  },\n  \"audio/vnd.wave\": {\n    \"compressible\": false\n  },\n  \"audio/vorbis\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"audio/vorbis-config\": {\n    \"source\": \"iana\"\n  },\n  \"audio/wav\": {\n    \"compressible\": false,\n    \"extensions\": [\"wav\"]\n  },\n  \"audio/wave\": {\n    \"compressible\": false,\n    \"extensions\": [\"wav\"]\n  },\n  \"audio/webm\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"weba\"]\n  },\n  \"audio/x-aac\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"aac\"]\n  },\n  \"audio/x-aiff\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"aif\",\"aiff\",\"aifc\"]\n  },\n  \"audio/x-caf\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"caf\"]\n  },\n  \"audio/x-flac\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"flac\"]\n  },\n  \"audio/x-m4a\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"m4a\"]\n  },\n  \"audio/x-matroska\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mka\"]\n  },\n  \"audio/x-mpegurl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"m3u\"]\n  },\n  \"audio/x-ms-wax\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wax\"]\n  },\n  \"audio/x-ms-wma\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wma\"]\n  },\n  \"audio/x-pn-realaudio\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ram\",\"ra\"]\n  },\n  \"audio/x-pn-realaudio-plugin\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"rmp\"]\n  },\n  \"audio/x-realaudio\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"ra\"]\n  },\n  \"audio/x-tta\": {\n    \"source\": \"apache\"\n  },\n  \"audio/x-wav\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wav\"]\n  },\n  \"audio/xm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xm\"]\n  },\n  \"chemical/x-cdx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cdx\"]\n  },\n  \"chemical/x-cif\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cif\"]\n  },\n  \"chemical/x-cmdf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cmdf\"]\n  },\n  \"chemical/x-cml\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cml\"]\n  },\n  \"chemical/x-csml\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"csml\"]\n  },\n  \"chemical/x-pdb\": {\n    \"source\": \"apache\"\n  },\n  \"chemical/x-xyz\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xyz\"]\n  },\n  \"font/collection\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ttc\"]\n  },\n  \"font/otf\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"otf\"]\n  },\n  \"font/sfnt\": {\n    \"source\": \"iana\"\n  },\n  \"font/ttf\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ttf\"]\n  },\n  \"font/woff\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"woff\"]\n  },\n  \"font/woff2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"woff2\"]\n  },\n  \"image/aces\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"exr\"]\n  },\n  \"image/apng\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"apng\"]\n  },\n  \"image/avci\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"avci\"]\n  },\n  \"image/avcs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"avcs\"]\n  },\n  \"image/avif\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"avif\"]\n  },\n  \"image/bmp\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"bmp\",\"dib\"]\n  },\n  \"image/cgm\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cgm\"]\n  },\n  \"image/dicom-rle\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"drle\"]\n  },\n  \"image/dpx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dpx\"]\n  },\n  \"image/emf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"emf\"]\n  },\n  \"image/fits\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fits\"]\n  },\n  \"image/g3fax\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"g3\"]\n  },\n  \"image/gif\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"gif\"]\n  },\n  \"image/heic\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"heic\"]\n  },\n  \"image/heic-sequence\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"heics\"]\n  },\n  \"image/heif\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"heif\"]\n  },\n  \"image/heif-sequence\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"heifs\"]\n  },\n  \"image/hej2k\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"hej2\"]\n  },\n  \"image/ief\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ief\"]\n  },\n  \"image/j2c\": {\n    \"source\": \"iana\"\n  },\n  \"image/jaii\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jaii\"]\n  },\n  \"image/jais\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jais\"]\n  },\n  \"image/jls\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jls\"]\n  },\n  \"image/jp2\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"jp2\",\"jpg2\"]\n  },\n  \"image/jpeg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"jpg\",\"jpeg\",\"jpe\"]\n  },\n  \"image/jph\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jph\"]\n  },\n  \"image/jphc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jhc\"]\n  },\n  \"image/jpm\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"jpm\",\"jpgm\"]\n  },\n  \"image/jpx\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"jpx\",\"jpf\"]\n  },\n  \"image/jxl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxl\"]\n  },\n  \"image/jxr\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxr\"]\n  },\n  \"image/jxra\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxra\"]\n  },\n  \"image/jxrs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxrs\"]\n  },\n  \"image/jxs\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxs\"]\n  },\n  \"image/jxsc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxsc\"]\n  },\n  \"image/jxsi\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxsi\"]\n  },\n  \"image/jxss\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jxss\"]\n  },\n  \"image/ktx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ktx\"]\n  },\n  \"image/ktx2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ktx2\"]\n  },\n  \"image/naplps\": {\n    \"source\": \"iana\"\n  },\n  \"image/pjpeg\": {\n    \"compressible\": false,\n    \"extensions\": [\"jfif\"]\n  },\n  \"image/png\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"png\"]\n  },\n  \"image/prs.btif\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"btif\",\"btf\"]\n  },\n  \"image/prs.pti\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pti\"]\n  },\n  \"image/pwg-raster\": {\n    \"source\": \"iana\"\n  },\n  \"image/sgi\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sgi\"]\n  },\n  \"image/svg+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"svg\",\"svgz\"]\n  },\n  \"image/t38\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"t38\"]\n  },\n  \"image/tiff\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"tif\",\"tiff\"]\n  },\n  \"image/tiff-fx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tfx\"]\n  },\n  \"image/vnd.adobe.photoshop\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"psd\"]\n  },\n  \"image/vnd.airzip.accelerator.azv\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"azv\"]\n  },\n  \"image/vnd.clip\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.cns.inf2\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.dece.graphic\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvi\",\"uvvi\",\"uvg\",\"uvvg\"]\n  },\n  \"image/vnd.djvu\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"djvu\",\"djv\"]\n  },\n  \"image/vnd.dvb.subtitle\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sub\"]\n  },\n  \"image/vnd.dwg\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dwg\"]\n  },\n  \"image/vnd.dxf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dxf\"]\n  },\n  \"image/vnd.fastbidsheet\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fbs\"]\n  },\n  \"image/vnd.fpx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fpx\"]\n  },\n  \"image/vnd.fst\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fst\"]\n  },\n  \"image/vnd.fujixerox.edmics-mmr\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mmr\"]\n  },\n  \"image/vnd.fujixerox.edmics-rlc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"rlc\"]\n  },\n  \"image/vnd.globalgraphics.pgb\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.microsoft.icon\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"ico\"]\n  },\n  \"image/vnd.mix\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.mozilla.apng\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.ms-dds\": {\n    \"compressible\": true,\n    \"extensions\": [\"dds\"]\n  },\n  \"image/vnd.ms-modi\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mdi\"]\n  },\n  \"image/vnd.ms-photo\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wdp\"]\n  },\n  \"image/vnd.net-fpx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"npx\"]\n  },\n  \"image/vnd.pco.b16\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"b16\"]\n  },\n  \"image/vnd.radiance\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.sealed.png\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.sealedmedia.softseal.gif\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.sealedmedia.softseal.jpg\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.svf\": {\n    \"source\": \"iana\"\n  },\n  \"image/vnd.tencent.tap\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"tap\"]\n  },\n  \"image/vnd.valve.source.texture\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vtf\"]\n  },\n  \"image/vnd.wap.wbmp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wbmp\"]\n  },\n  \"image/vnd.xiff\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"xif\"]\n  },\n  \"image/vnd.zbrush.pcx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pcx\"]\n  },\n  \"image/webp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"webp\"]\n  },\n  \"image/wmf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wmf\"]\n  },\n  \"image/x-3ds\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"3ds\"]\n  },\n  \"image/x-adobe-dng\": {\n    \"extensions\": [\"dng\"]\n  },\n  \"image/x-cmu-raster\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ras\"]\n  },\n  \"image/x-cmx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"cmx\"]\n  },\n  \"image/x-emf\": {\n    \"source\": \"iana\"\n  },\n  \"image/x-freehand\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"fh\",\"fhc\",\"fh4\",\"fh5\",\"fh7\"]\n  },\n  \"image/x-icon\": {\n    \"source\": \"apache\",\n    \"compressible\": true,\n    \"extensions\": [\"ico\"]\n  },\n  \"image/x-jng\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"jng\"]\n  },\n  \"image/x-mrsid-image\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sid\"]\n  },\n  \"image/x-ms-bmp\": {\n    \"source\": \"nginx\",\n    \"compressible\": true,\n    \"extensions\": [\"bmp\"]\n  },\n  \"image/x-pcx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pcx\"]\n  },\n  \"image/x-pict\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pic\",\"pct\"]\n  },\n  \"image/x-portable-anymap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pnm\"]\n  },\n  \"image/x-portable-bitmap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pbm\"]\n  },\n  \"image/x-portable-graymap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"pgm\"]\n  },\n  \"image/x-portable-pixmap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ppm\"]\n  },\n  \"image/x-rgb\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"rgb\"]\n  },\n  \"image/x-tga\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"tga\"]\n  },\n  \"image/x-wmf\": {\n    \"source\": \"iana\"\n  },\n  \"image/x-xbitmap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xbm\"]\n  },\n  \"image/x-xcf\": {\n    \"compressible\": false\n  },\n  \"image/x-xpixmap\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xpm\"]\n  },\n  \"image/x-xwindowdump\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"xwd\"]\n  },\n  \"message/bhttp\": {\n    \"source\": \"iana\"\n  },\n  \"message/cpim\": {\n    \"source\": \"iana\"\n  },\n  \"message/delivery-status\": {\n    \"source\": \"iana\"\n  },\n  \"message/disposition-notification\": {\n    \"source\": \"iana\",\n    \"extensions\": [\n      \"disposition-notification\"\n    ]\n  },\n  \"message/external-body\": {\n    \"source\": \"iana\"\n  },\n  \"message/feedback-report\": {\n    \"source\": \"iana\"\n  },\n  \"message/global\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"u8msg\"]\n  },\n  \"message/global-delivery-status\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"u8dsn\"]\n  },\n  \"message/global-disposition-notification\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"u8mdn\"]\n  },\n  \"message/global-headers\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"u8hdr\"]\n  },\n  \"message/http\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"message/imdn+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"message/mls\": {\n    \"source\": \"iana\"\n  },\n  \"message/news\": {\n    \"source\": \"apache\"\n  },\n  \"message/ohttp-req\": {\n    \"source\": \"iana\"\n  },\n  \"message/ohttp-res\": {\n    \"source\": \"iana\"\n  },\n  \"message/partial\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"message/rfc822\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"eml\",\"mime\",\"mht\",\"mhtml\"]\n  },\n  \"message/s-http\": {\n    \"source\": \"apache\"\n  },\n  \"message/sip\": {\n    \"source\": \"iana\"\n  },\n  \"message/sipfrag\": {\n    \"source\": \"iana\"\n  },\n  \"message/tracking-status\": {\n    \"source\": \"iana\"\n  },\n  \"message/vnd.si.simp\": {\n    \"source\": \"apache\"\n  },\n  \"message/vnd.wfa.wsc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wsc\"]\n  },\n  \"model/3mf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"3mf\"]\n  },\n  \"model/e57\": {\n    \"source\": \"iana\"\n  },\n  \"model/gltf+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"gltf\"]\n  },\n  \"model/gltf-binary\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"glb\"]\n  },\n  \"model/iges\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"igs\",\"iges\"]\n  },\n  \"model/jt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jt\"]\n  },\n  \"model/mesh\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"msh\",\"mesh\",\"silo\"]\n  },\n  \"model/mtl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mtl\"]\n  },\n  \"model/obj\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"obj\"]\n  },\n  \"model/prc\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"prc\"]\n  },\n  \"model/step\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"step\",\"stp\",\"stpnc\",\"p21\",\"210\"]\n  },\n  \"model/step+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"stpx\"]\n  },\n  \"model/step+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"stpz\"]\n  },\n  \"model/step-xml+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"stpxz\"]\n  },\n  \"model/stl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"stl\"]\n  },\n  \"model/u3d\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"u3d\"]\n  },\n  \"model/vnd.bary\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"bary\"]\n  },\n  \"model/vnd.cld\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"cld\"]\n  },\n  \"model/vnd.collada+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"dae\"]\n  },\n  \"model/vnd.dwf\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dwf\"]\n  },\n  \"model/vnd.flatland.3dml\": {\n    \"source\": \"iana\"\n  },\n  \"model/vnd.gdl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gdl\"]\n  },\n  \"model/vnd.gs-gdl\": {\n    \"source\": \"apache\"\n  },\n  \"model/vnd.gs.gdl\": {\n    \"source\": \"iana\"\n  },\n  \"model/vnd.gtw\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gtw\"]\n  },\n  \"model/vnd.moml+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"model/vnd.mts\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mts\"]\n  },\n  \"model/vnd.opengex\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ogex\"]\n  },\n  \"model/vnd.parasolid.transmit.binary\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"x_b\"]\n  },\n  \"model/vnd.parasolid.transmit.text\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"x_t\"]\n  },\n  \"model/vnd.pytha.pyox\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pyo\",\"pyox\"]\n  },\n  \"model/vnd.rosette.annotated-data-model\": {\n    \"source\": \"iana\"\n  },\n  \"model/vnd.sap.vds\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vds\"]\n  },\n  \"model/vnd.usda\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"usda\"]\n  },\n  \"model/vnd.usdz+zip\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"usdz\"]\n  },\n  \"model/vnd.valve.source.compiled-map\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"bsp\"]\n  },\n  \"model/vnd.vtu\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"vtu\"]\n  },\n  \"model/vrml\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"wrl\",\"vrml\"]\n  },\n  \"model/x3d+binary\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"x3db\",\"x3dbz\"]\n  },\n  \"model/x3d+fastinfoset\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"x3db\"]\n  },\n  \"model/x3d+vrml\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"x3dv\",\"x3dvz\"]\n  },\n  \"model/x3d+xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"x3d\",\"x3dz\"]\n  },\n  \"model/x3d-vrml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"x3dv\"]\n  },\n  \"multipart/alternative\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"multipart/appledouble\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/byteranges\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/digest\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/encrypted\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"multipart/form-data\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"multipart/header-set\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/mixed\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/multilingual\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/parallel\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/related\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"multipart/report\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/signed\": {\n    \"source\": \"iana\",\n    \"compressible\": false\n  },\n  \"multipart/vnd.bint.med-plus\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/voice-message\": {\n    \"source\": \"iana\"\n  },\n  \"multipart/x-mixed-replace\": {\n    \"source\": \"iana\"\n  },\n  \"text/1d-interleaved-parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"text/cache-manifest\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"appcache\",\"manifest\"]\n  },\n  \"text/calendar\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ics\",\"ifb\"]\n  },\n  \"text/calender\": {\n    \"compressible\": true\n  },\n  \"text/cmd\": {\n    \"compressible\": true\n  },\n  \"text/coffeescript\": {\n    \"extensions\": [\"coffee\",\"litcoffee\"]\n  },\n  \"text/cql\": {\n    \"source\": \"iana\"\n  },\n  \"text/cql-expression\": {\n    \"source\": \"iana\"\n  },\n  \"text/cql-identifier\": {\n    \"source\": \"iana\"\n  },\n  \"text/css\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"css\"]\n  },\n  \"text/csv\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"csv\"]\n  },\n  \"text/csv-schema\": {\n    \"source\": \"iana\"\n  },\n  \"text/directory\": {\n    \"source\": \"iana\"\n  },\n  \"text/dns\": {\n    \"source\": \"iana\"\n  },\n  \"text/ecmascript\": {\n    \"source\": \"apache\"\n  },\n  \"text/encaprtp\": {\n    \"source\": \"iana\"\n  },\n  \"text/enriched\": {\n    \"source\": \"iana\"\n  },\n  \"text/fhirpath\": {\n    \"source\": \"iana\"\n  },\n  \"text/flexfec\": {\n    \"source\": \"iana\"\n  },\n  \"text/fwdred\": {\n    \"source\": \"iana\"\n  },\n  \"text/gff3\": {\n    \"source\": \"iana\"\n  },\n  \"text/grammar-ref-list\": {\n    \"source\": \"iana\"\n  },\n  \"text/hl7v2\": {\n    \"source\": \"iana\"\n  },\n  \"text/html\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"html\",\"htm\",\"shtml\"]\n  },\n  \"text/jade\": {\n    \"extensions\": [\"jade\"]\n  },\n  \"text/javascript\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"js\",\"mjs\"]\n  },\n  \"text/jcr-cnd\": {\n    \"source\": \"iana\"\n  },\n  \"text/jsx\": {\n    \"compressible\": true,\n    \"extensions\": [\"jsx\"]\n  },\n  \"text/less\": {\n    \"compressible\": true,\n    \"extensions\": [\"less\"]\n  },\n  \"text/markdown\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"md\",\"markdown\"]\n  },\n  \"text/mathml\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"mml\"]\n  },\n  \"text/mdx\": {\n    \"compressible\": true,\n    \"extensions\": [\"mdx\"]\n  },\n  \"text/mizar\": {\n    \"source\": \"iana\"\n  },\n  \"text/n3\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"n3\"]\n  },\n  \"text/parameters\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\"\n  },\n  \"text/parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"text/plain\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"txt\",\"text\",\"conf\",\"def\",\"list\",\"log\",\"in\",\"ini\"]\n  },\n  \"text/provenance-notation\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\"\n  },\n  \"text/prs.fallenstein.rst\": {\n    \"source\": \"iana\"\n  },\n  \"text/prs.lines.tag\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dsc\"]\n  },\n  \"text/prs.prop.logic\": {\n    \"source\": \"iana\"\n  },\n  \"text/prs.texi\": {\n    \"source\": \"iana\"\n  },\n  \"text/raptorfec\": {\n    \"source\": \"iana\"\n  },\n  \"text/red\": {\n    \"source\": \"iana\"\n  },\n  \"text/rfc822-headers\": {\n    \"source\": \"iana\"\n  },\n  \"text/richtext\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rtx\"]\n  },\n  \"text/rtf\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"rtf\"]\n  },\n  \"text/rtp-enc-aescm128\": {\n    \"source\": \"iana\"\n  },\n  \"text/rtploopback\": {\n    \"source\": \"iana\"\n  },\n  \"text/rtx\": {\n    \"source\": \"iana\"\n  },\n  \"text/sgml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sgml\",\"sgm\"]\n  },\n  \"text/shaclc\": {\n    \"source\": \"iana\"\n  },\n  \"text/shex\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"shex\"]\n  },\n  \"text/slim\": {\n    \"extensions\": [\"slim\",\"slm\"]\n  },\n  \"text/spdx\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"spdx\"]\n  },\n  \"text/strings\": {\n    \"source\": \"iana\"\n  },\n  \"text/stylus\": {\n    \"extensions\": [\"stylus\",\"styl\"]\n  },\n  \"text/t140\": {\n    \"source\": \"iana\"\n  },\n  \"text/tab-separated-values\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"tsv\"]\n  },\n  \"text/troff\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"t\",\"tr\",\"roff\",\"man\",\"me\",\"ms\"]\n  },\n  \"text/turtle\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"extensions\": [\"ttl\"]\n  },\n  \"text/ulpfec\": {\n    \"source\": \"iana\"\n  },\n  \"text/uri-list\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"uri\",\"uris\",\"urls\"]\n  },\n  \"text/vcard\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"vcard\"]\n  },\n  \"text/vnd.a\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.abc\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.ascii-art\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.curl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"curl\"]\n  },\n  \"text/vnd.curl.dcurl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"dcurl\"]\n  },\n  \"text/vnd.curl.mcurl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mcurl\"]\n  },\n  \"text/vnd.curl.scurl\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"scurl\"]\n  },\n  \"text/vnd.debian.copyright\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\"\n  },\n  \"text/vnd.dmclientscript\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.dvb.subtitle\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"sub\"]\n  },\n  \"text/vnd.esmertec.theme-descriptor\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\"\n  },\n  \"text/vnd.exchangeable\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.familysearch.gedcom\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ged\"]\n  },\n  \"text/vnd.ficlab.flt\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.fly\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fly\"]\n  },\n  \"text/vnd.fmi.flexstor\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"flx\"]\n  },\n  \"text/vnd.gml\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.graphviz\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"gv\"]\n  },\n  \"text/vnd.hans\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.hgl\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.in3d.3dml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"3dml\"]\n  },\n  \"text/vnd.in3d.spot\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"spot\"]\n  },\n  \"text/vnd.iptc.newsml\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.iptc.nitf\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.latex-z\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.motorola.reflex\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.ms-mediapackage\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.net2phone.commcenter.command\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.radisys.msml-basic-layout\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.senx.warpscript\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.si.uricatalogue\": {\n    \"source\": \"apache\"\n  },\n  \"text/vnd.sosi\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.sun.j2me.app-descriptor\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"extensions\": [\"jad\"]\n  },\n  \"text/vnd.trolltech.linguist\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\"\n  },\n  \"text/vnd.vcf\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.wap.si\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.wap.sl\": {\n    \"source\": \"iana\"\n  },\n  \"text/vnd.wap.wml\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wml\"]\n  },\n  \"text/vnd.wap.wmlscript\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wmls\"]\n  },\n  \"text/vnd.zoo.kcl\": {\n    \"source\": \"iana\"\n  },\n  \"text/vtt\": {\n    \"source\": \"iana\",\n    \"charset\": \"UTF-8\",\n    \"compressible\": true,\n    \"extensions\": [\"vtt\"]\n  },\n  \"text/wgsl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"wgsl\"]\n  },\n  \"text/x-asm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"s\",\"asm\"]\n  },\n  \"text/x-c\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"c\",\"cc\",\"cxx\",\"cpp\",\"h\",\"hh\",\"dic\"]\n  },\n  \"text/x-component\": {\n    \"source\": \"nginx\",\n    \"extensions\": [\"htc\"]\n  },\n  \"text/x-fortran\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"f\",\"for\",\"f77\",\"f90\"]\n  },\n  \"text/x-gwt-rpc\": {\n    \"compressible\": true\n  },\n  \"text/x-handlebars-template\": {\n    \"extensions\": [\"hbs\"]\n  },\n  \"text/x-java-source\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"java\"]\n  },\n  \"text/x-jquery-tmpl\": {\n    \"compressible\": true\n  },\n  \"text/x-lua\": {\n    \"extensions\": [\"lua\"]\n  },\n  \"text/x-markdown\": {\n    \"compressible\": true,\n    \"extensions\": [\"mkd\"]\n  },\n  \"text/x-nfo\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"nfo\"]\n  },\n  \"text/x-opml\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"opml\"]\n  },\n  \"text/x-org\": {\n    \"compressible\": true,\n    \"extensions\": [\"org\"]\n  },\n  \"text/x-pascal\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"p\",\"pas\"]\n  },\n  \"text/x-processing\": {\n    \"compressible\": true,\n    \"extensions\": [\"pde\"]\n  },\n  \"text/x-sass\": {\n    \"extensions\": [\"sass\"]\n  },\n  \"text/x-scss\": {\n    \"extensions\": [\"scss\"]\n  },\n  \"text/x-setext\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"etx\"]\n  },\n  \"text/x-sfv\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"sfv\"]\n  },\n  \"text/x-suse-ymp\": {\n    \"compressible\": true,\n    \"extensions\": [\"ymp\"]\n  },\n  \"text/x-uuencode\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"uu\"]\n  },\n  \"text/x-vcalendar\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"vcs\"]\n  },\n  \"text/x-vcard\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"vcf\"]\n  },\n  \"text/xml\": {\n    \"source\": \"iana\",\n    \"compressible\": true,\n    \"extensions\": [\"xml\"]\n  },\n  \"text/xml-external-parsed-entity\": {\n    \"source\": \"iana\"\n  },\n  \"text/yaml\": {\n    \"compressible\": true,\n    \"extensions\": [\"yaml\",\"yml\"]\n  },\n  \"video/1d-interleaved-parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"video/3gpp\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"3gp\",\"3gpp\"]\n  },\n  \"video/3gpp-tt\": {\n    \"source\": \"iana\"\n  },\n  \"video/3gpp2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"3g2\"]\n  },\n  \"video/av1\": {\n    \"source\": \"iana\"\n  },\n  \"video/bmpeg\": {\n    \"source\": \"iana\"\n  },\n  \"video/bt656\": {\n    \"source\": \"iana\"\n  },\n  \"video/celb\": {\n    \"source\": \"iana\"\n  },\n  \"video/dv\": {\n    \"source\": \"iana\"\n  },\n  \"video/encaprtp\": {\n    \"source\": \"iana\"\n  },\n  \"video/evc\": {\n    \"source\": \"iana\"\n  },\n  \"video/ffv1\": {\n    \"source\": \"iana\"\n  },\n  \"video/flexfec\": {\n    \"source\": \"iana\"\n  },\n  \"video/h261\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"h261\"]\n  },\n  \"video/h263\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"h263\"]\n  },\n  \"video/h263-1998\": {\n    \"source\": \"iana\"\n  },\n  \"video/h263-2000\": {\n    \"source\": \"iana\"\n  },\n  \"video/h264\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"h264\"]\n  },\n  \"video/h264-rcdo\": {\n    \"source\": \"iana\"\n  },\n  \"video/h264-svc\": {\n    \"source\": \"iana\"\n  },\n  \"video/h265\": {\n    \"source\": \"iana\"\n  },\n  \"video/h266\": {\n    \"source\": \"iana\"\n  },\n  \"video/iso.segment\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"m4s\"]\n  },\n  \"video/jpeg\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"jpgv\"]\n  },\n  \"video/jpeg2000\": {\n    \"source\": \"iana\"\n  },\n  \"video/jpm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"jpm\",\"jpgm\"]\n  },\n  \"video/jxsv\": {\n    \"source\": \"iana\"\n  },\n  \"video/lottie+json\": {\n    \"source\": \"iana\",\n    \"compressible\": true\n  },\n  \"video/matroska\": {\n    \"source\": \"iana\"\n  },\n  \"video/matroska-3d\": {\n    \"source\": \"iana\"\n  },\n  \"video/mj2\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mj2\",\"mjp2\"]\n  },\n  \"video/mp1s\": {\n    \"source\": \"iana\"\n  },\n  \"video/mp2p\": {\n    \"source\": \"iana\"\n  },\n  \"video/mp2t\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"ts\",\"m2t\",\"m2ts\",\"mts\"]\n  },\n  \"video/mp4\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"mp4\",\"mp4v\",\"mpg4\"]\n  },\n  \"video/mp4v-es\": {\n    \"source\": \"iana\"\n  },\n  \"video/mpeg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"mpeg\",\"mpg\",\"mpe\",\"m1v\",\"m2v\"]\n  },\n  \"video/mpeg4-generic\": {\n    \"source\": \"iana\"\n  },\n  \"video/mpv\": {\n    \"source\": \"iana\"\n  },\n  \"video/nv\": {\n    \"source\": \"iana\"\n  },\n  \"video/ogg\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"ogv\"]\n  },\n  \"video/parityfec\": {\n    \"source\": \"iana\"\n  },\n  \"video/pointer\": {\n    \"source\": \"iana\"\n  },\n  \"video/quicktime\": {\n    \"source\": \"iana\",\n    \"compressible\": false,\n    \"extensions\": [\"qt\",\"mov\"]\n  },\n  \"video/raptorfec\": {\n    \"source\": \"iana\"\n  },\n  \"video/raw\": {\n    \"source\": \"iana\"\n  },\n  \"video/rtp-enc-aescm128\": {\n    \"source\": \"iana\"\n  },\n  \"video/rtploopback\": {\n    \"source\": \"iana\"\n  },\n  \"video/rtx\": {\n    \"source\": \"iana\"\n  },\n  \"video/scip\": {\n    \"source\": \"iana\"\n  },\n  \"video/smpte291\": {\n    \"source\": \"iana\"\n  },\n  \"video/smpte292m\": {\n    \"source\": \"iana\"\n  },\n  \"video/ulpfec\": {\n    \"source\": \"iana\"\n  },\n  \"video/vc1\": {\n    \"source\": \"iana\"\n  },\n  \"video/vc2\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.cctv\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.dece.hd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvh\",\"uvvh\"]\n  },\n  \"video/vnd.dece.mobile\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvm\",\"uvvm\"]\n  },\n  \"video/vnd.dece.mp4\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.dece.pd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvp\",\"uvvp\"]\n  },\n  \"video/vnd.dece.sd\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvs\",\"uvvs\"]\n  },\n  \"video/vnd.dece.video\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvv\",\"uvvv\"]\n  },\n  \"video/vnd.directv.mpeg\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.directv.mpeg-tts\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.dlna.mpeg-tts\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.dvb.file\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"dvb\"]\n  },\n  \"video/vnd.fvt\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"fvt\"]\n  },\n  \"video/vnd.hns.video\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.1dparityfec-1010\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.1dparityfec-2005\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.2dparityfec-1010\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.2dparityfec-2005\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.ttsavc\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.iptvforum.ttsmpeg2\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.motorola.video\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.motorola.videop\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.mpegurl\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"mxu\",\"m4u\"]\n  },\n  \"video/vnd.ms-playready.media.pyv\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"pyv\"]\n  },\n  \"video/vnd.nokia.interleaved-multimedia\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.nokia.mp4vr\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.nokia.videovoip\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.objectvideo\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.planar\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.radgamettools.bink\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.radgamettools.smacker\": {\n    \"source\": \"apache\"\n  },\n  \"video/vnd.sealed.mpeg1\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.sealed.mpeg4\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.sealed.swf\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.sealedmedia.softseal.mov\": {\n    \"source\": \"iana\"\n  },\n  \"video/vnd.uvvu.mp4\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"uvu\",\"uvvu\"]\n  },\n  \"video/vnd.vivo\": {\n    \"source\": \"iana\",\n    \"extensions\": [\"viv\"]\n  },\n  \"video/vnd.youtube.yt\": {\n    \"source\": \"iana\"\n  },\n  \"video/vp8\": {\n    \"source\": \"iana\"\n  },\n  \"video/vp9\": {\n    \"source\": \"iana\"\n  },\n  \"video/webm\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"webm\"]\n  },\n  \"video/x-f4v\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"f4v\"]\n  },\n  \"video/x-fli\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"fli\"]\n  },\n  \"video/x-flv\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"flv\"]\n  },\n  \"video/x-m4v\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"m4v\"]\n  },\n  \"video/x-matroska\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"mkv\",\"mk3d\",\"mks\"]\n  },\n  \"video/x-mng\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"mng\"]\n  },\n  \"video/x-ms-asf\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"asf\",\"asx\"]\n  },\n  \"video/x-ms-vob\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"vob\"]\n  },\n  \"video/x-ms-wm\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wm\"]\n  },\n  \"video/x-ms-wmv\": {\n    \"source\": \"apache\",\n    \"compressible\": false,\n    \"extensions\": [\"wmv\"]\n  },\n  \"video/x-ms-wmx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wmx\"]\n  },\n  \"video/x-ms-wvx\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"wvx\"]\n  },\n  \"video/x-msvideo\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"avi\"]\n  },\n  \"video/x-sgi-movie\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"movie\"]\n  },\n  \"video/x-smv\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"smv\"]\n  },\n  \"x-conference/x-cooltalk\": {\n    \"source\": \"apache\",\n    \"extensions\": [\"ice\"]\n  },\n  \"x-shader/x-fragment\": {\n    \"compressible\": true\n  },\n  \"x-shader/x-vertex\": {\n    \"compressible\": true\n  }\n}\n", "/*!\n * mime-db\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * Module exports.\n */\n\nmodule.exports = require('./db.json')\n", "// 'mime-score' back-ported to CommonJS\n\n// Score RFC facets (see https://tools.ietf.org/html/rfc6838#section-3)\nvar FACET_SCORES = {\n  'prs.': 100,\n  'x-': 200,\n  'x.': 300,\n  'vnd.': 400,\n  default: 900\n}\n\n// Score mime source (Logic originally from `jshttp/mime-types` module)\nvar SOURCE_SCORES = {\n  nginx: 10,\n  apache: 20,\n  iana: 40,\n  default: 30 // definitions added by `jshttp/mime-db` project?\n}\n\nvar TYPE_SCORES = {\n  // prefer application/xml over text/xml\n  // prefer application/rtf over text/rtf\n  application: 1,\n\n  // prefer font/woff over application/font-woff\n  font: 2,\n\n  // prefer video/mp4 over audio/mp4 over application/mp4\n  // See https://www.rfc-editor.org/rfc/rfc4337.html#section-2\n  audio: 2,\n  video: 3,\n\n  default: 0\n}\n\n/**\n * Get each component of the score for a mime type.  The sum of these is the\n * total score.  The higher the score, the more \"official\" the type.\n */\nmodule.exports = function mimeScore (mimeType, source = 'default') {\n  if (mimeType === 'application/octet-stream') {\n    return 0\n  }\n\n  const [type, subtype] = mimeType.split('/')\n\n  const facet = subtype.replace(/(\\.|x-).*/, '$1')\n\n  const facetScore = FACET_SCORES[facet] || FACET_SCORES.default\n  const sourceScore = SOURCE_SCORES[source] || SOURCE_SCORES.default\n  const typeScore = TYPE_SCORES[type] || TYPE_SCORES.default\n\n  // All else being equal prefer shorter types\n  const lengthScore = 1 - mimeType.length / 100\n\n  return facetScore + sourceScore + typeScore + lengthScore\n}\n", "/*!\n * mime-types\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar db = require('mime-db')\nvar extname = require('path').extname\nvar mimeScore = require('./mimeScore')\n\n/**\n * Module variables.\n * @private\n */\n\nvar EXTRACT_TYPE_REGEXP = /^\\s*([^;\\s]*)(?:;|\\s|$)/\nvar TEXT_TYPE_REGEXP = /^text\\//i\n\n/**\n * Module exports.\n * @public\n */\n\nexports.charset = charset\nexports.charsets = { lookup: charset }\nexports.contentType = contentType\nexports.extension = extension\nexports.extensions = Object.create(null)\nexports.lookup = lookup\nexports.types = Object.create(null)\nexports._extensionConflicts = []\n\n// Populate the extensions/types maps\npopulateMaps(exports.extensions, exports.types)\n\n/**\n * Get the default charset for a MIME type.\n *\n * @param {string} type\n * @return {false|string}\n */\n\nfunction charset (type) {\n  if (!type || typeof type !== 'string') {\n    return false\n  }\n\n  // TODO: use media-typer\n  var match = EXTRACT_TYPE_REGEXP.exec(type)\n  var mime = match && db[match[1].toLowerCase()]\n\n  if (mime && mime.charset) {\n    return mime.charset\n  }\n\n  // default text/* to utf-8\n  if (match && TEXT_TYPE_REGEXP.test(match[1])) {\n    return 'UTF-8'\n  }\n\n  return false\n}\n\n/**\n * Create a full Content-Type header given a MIME type or extension.\n *\n * @param {string} str\n * @return {false|string}\n */\n\nfunction contentType (str) {\n  // TODO: should this even be in this module?\n  if (!str || typeof str !== 'string') {\n    return false\n  }\n\n  var mime = str.indexOf('/') === -1 ? exports.lookup(str) : str\n\n  if (!mime) {\n    return false\n  }\n\n  // TODO: use content-type or other module\n  if (mime.indexOf('charset') === -1) {\n    var charset = exports.charset(mime)\n    if (charset) mime += '; charset=' + charset.toLowerCase()\n  }\n\n  return mime\n}\n\n/**\n * Get the default extension for a MIME type.\n *\n * @param {string} type\n * @return {false|string}\n */\n\nfunction extension (type) {\n  if (!type || typeof type !== 'string') {\n    return false\n  }\n\n  // TODO: use media-typer\n  var match = EXTRACT_TYPE_REGEXP.exec(type)\n\n  // get extensions\n  var exts = match && exports.extensions[match[1].toLowerCase()]\n\n  if (!exts || !exts.length) {\n    return false\n  }\n\n  return exts[0]\n}\n\n/**\n * Lookup the MIME type for a file path/extension.\n *\n * @param {string} path\n * @return {false|string}\n */\n\nfunction lookup (path) {\n  if (!path || typeof path !== 'string') {\n    return false\n  }\n\n  // get the extension (\"ext\" or \".ext\" or full path)\n  var extension = extname('x.' + path)\n    .toLowerCase()\n    .slice(1)\n\n  if (!extension) {\n    return false\n  }\n\n  return exports.types[extension] || false\n}\n\n/**\n * Populate the extensions and types maps.\n * @private\n */\n\nfunction populateMaps (extensions, types) {\n  Object.keys(db).forEach(function forEachMimeType (type) {\n    var mime = db[type]\n    var exts = mime.extensions\n\n    if (!exts || !exts.length) {\n      return\n    }\n\n    // mime -> extensions\n    extensions[type] = exts\n\n    // extension -> mime\n    for (var i = 0; i < exts.length; i++) {\n      var extension = exts[i]\n      types[extension] = _preferredType(extension, types[extension], type)\n\n      // DELETE (eventually): Capture extension->type maps that change as a\n      // result of switching to mime-score.  This is just to help make reviewing\n      // PR #119 easier, and can be removed once that PR is approved.\n      const legacyType = _preferredTypeLegacy(\n        extension,\n        types[extension],\n        type\n      )\n      if (legacyType !== types[extension]) {\n        exports._extensionConflicts.push([extension, legacyType, types[extension]])\n      }\n    }\n  })\n}\n\n// Resolve type conflict using mime-score\nfunction _preferredType (ext, type0, type1) {\n  var score0 = type0 ? mimeScore(type0, db[type0].source) : 0\n  var score1 = type1 ? mimeScore(type1, db[type1].source) : 0\n\n  return score0 > score1 ? type0 : type1\n}\n\n// Resolve type conflict using pre-mime-score logic\nfunction _preferredTypeLegacy (ext, type0, type1) {\n  var SOURCE_RANK = ['nginx', 'apache', undefined, 'iana']\n\n  var score0 = type0 ? SOURCE_RANK.indexOf(db[type0].source) : 0\n  var score1 = type1 ? SOURCE_RANK.indexOf(db[type1].source) : 0\n\n  if (\n    exports.types[extension] !== 'application/octet-stream' &&\n    (score0 > score1 ||\n      (score0 === score1 &&\n        exports.types[extension]?.slice(0, 12) === 'application/'))\n  ) {\n    return type0\n  }\n\n  return score0 > score1 ? type0 : type1\n}\n", "/*!\n * media-typer\n * Copyright(c) 2014-2017 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * RegExp to match type in RFC 6838\n *\n * type-name = restricted-name\n * subtype-name = restricted-name\n * restricted-name = restricted-name-first *126restricted-name-chars\n * restricted-name-first  = ALPHA / DIGIT\n * restricted-name-chars  = ALPHA / DIGIT / \"!\" / \"#\" /\n *                          \"$\" / \"&\" / \"-\" / \"^\" / \"_\"\n * restricted-name-chars =/ \".\" ; Characters before first dot always\n *                              ; specify a facet name\n * restricted-name-chars =/ \"+\" ; Characters after last plus always\n *                              ; specify a structured syntax suffix\n * ALPHA =  %x41-5A / %x61-7A   ; A-Z / a-z\n * DIGIT =  %x30-39             ; 0-9\n */\nvar SUBTYPE_NAME_REGEXP = /^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/\nvar TYPE_NAME_REGEXP = /^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/\nvar TYPE_REGEXP = /^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/\n\n/**\n * Module exports.\n */\n\nexports.format = format\nexports.parse = parse\nexports.test = test\n\n/**\n * Format object to media type.\n *\n * @param {object} obj\n * @return {string}\n * @public\n */\n\nfunction format (obj) {\n  if (!obj || typeof obj !== 'object') {\n    throw new TypeError('argument obj is required')\n  }\n\n  var subtype = obj.subtype\n  var suffix = obj.suffix\n  var type = obj.type\n\n  if (!type || !TYPE_NAME_REGEXP.test(type)) {\n    throw new TypeError('invalid type')\n  }\n\n  if (!subtype || !SUBTYPE_NAME_REGEXP.test(subtype)) {\n    throw new TypeError('invalid subtype')\n  }\n\n  // format as type/subtype\n  var string = type + '/' + subtype\n\n  // append +suffix\n  if (suffix) {\n    if (!TYPE_NAME_REGEXP.test(suffix)) {\n      throw new TypeError('invalid suffix')\n    }\n\n    string += '+' + suffix\n  }\n\n  return string\n}\n\n/**\n * Test media type.\n *\n * @param {string} string\n * @return {object}\n * @public\n */\n\nfunction test (string) {\n  if (!string) {\n    throw new TypeError('argument string is required')\n  }\n\n  if (typeof string !== 'string') {\n    throw new TypeError('argument string is required to be a string')\n  }\n\n  return TYPE_REGEXP.test(string.toLowerCase())\n}\n\n/**\n * Parse media type to object.\n *\n * @param {string} string\n * @return {object}\n * @public\n */\n\nfunction parse (string) {\n  if (!string) {\n    throw new TypeError('argument string is required')\n  }\n\n  if (typeof string !== 'string') {\n    throw new TypeError('argument string is required to be a string')\n  }\n\n  var match = TYPE_REGEXP.exec(string.toLowerCase())\n\n  if (!match) {\n    throw new TypeError('invalid media type')\n  }\n\n  var type = match[1]\n  var subtype = match[2]\n  var suffix\n\n  // suffix after last +\n  var index = subtype.lastIndexOf('+')\n  if (index !== -1) {\n    suffix = subtype.substr(index + 1)\n    subtype = subtype.substr(0, index)\n  }\n\n  return new MediaType(type, subtype, suffix)\n}\n\n/**\n * Class for MediaType object.\n * @public\n */\n\nfunction MediaType (type, subtype, suffix) {\n  this.type = type\n  this.subtype = subtype\n  this.suffix = suffix\n}\n", "/*!\n * type-is\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar contentType = require('content-type')\nvar mime = require('mime-types')\nvar typer = require('media-typer')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = typeofrequest\nmodule.exports.is = typeis\nmodule.exports.hasBody = hasbody\nmodule.exports.normalize = normalize\nmodule.exports.match = mimeMatch\n\n/**\n * Compare a `value` content-type with `types`.\n * Each `type` can be an extension like `html`,\n * a special shortcut like `multipart` or `urlencoded`,\n * or a mime type.\n *\n * If no types match, `false` is returned.\n * Otherwise, the first `type` that matches is returned.\n *\n * @param {String} value\n * @param {Array} types\n * @public\n */\n\nfunction typeis (value, types_) {\n  var i\n  var types = types_\n\n  // remove parameters and normalize\n  var val = tryNormalizeType(value)\n\n  // no type or invalid\n  if (!val) {\n    return false\n  }\n\n  // support flattened arguments\n  if (types && !Array.isArray(types)) {\n    types = new Array(arguments.length - 1)\n    for (i = 0; i < types.length; i++) {\n      types[i] = arguments[i + 1]\n    }\n  }\n\n  // no types, return the content type\n  if (!types || !types.length) {\n    return val\n  }\n\n  var type\n  for (i = 0; i < types.length; i++) {\n    if (mimeMatch(normalize(type = types[i]), val)) {\n      return type[0] === '+' || type.indexOf('*') !== -1\n        ? val\n        : type\n    }\n  }\n\n  // no matches\n  return false\n}\n\n/**\n * Check if a request has a request body.\n * A request with a body __must__ either have `transfer-encoding`\n * or `content-length` headers set.\n * http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.3\n *\n * @param {Object} request\n * @return {Boolean}\n * @public\n */\n\nfunction hasbody (req) {\n  return req.headers['transfer-encoding'] !== undefined ||\n    !isNaN(req.headers['content-length'])\n}\n\n/**\n * Check if the incoming request contains the \"Content-Type\"\n * header field, and it contains any of the give mime `type`s.\n * If there is no request body, `null` is returned.\n * If there is no content type, `false` is returned.\n * Otherwise, it returns the first `type` that matches.\n *\n * Examples:\n *\n *     // With Content-Type: text/html; charset=utf-8\n *     this.is('html'); // => 'html'\n *     this.is('text/html'); // => 'text/html'\n *     this.is('text/*', 'application/json'); // => 'text/html'\n *\n *     // When Content-Type is application/json\n *     this.is('json', 'urlencoded'); // => 'json'\n *     this.is('application/json'); // => 'application/json'\n *     this.is('html', 'application/*'); // => 'application/json'\n *\n *     this.is('html'); // => false\n *\n * @param {Object} req\n * @param {(String|Array)} types...\n * @return {(String|false|null)}\n * @public\n */\n\nfunction typeofrequest (req, types_) {\n  // no body\n  if (!hasbody(req)) return null\n  // support flattened arguments\n  var types = arguments.length > 2\n    ? Array.prototype.slice.call(arguments, 1)\n    : types_\n  // request content type\n  var value = req.headers['content-type']\n\n  return typeis(value, types)\n}\n\n/**\n * Normalize a mime type.\n * If it's a shorthand, expand it to a valid mime type.\n *\n * In general, you probably want:\n *\n *   var type = is(req, ['urlencoded', 'json', 'multipart']);\n *\n * Then use the appropriate body parsers.\n * These three are the most common request body types\n * and are thus ensured to work.\n *\n * @param {String} type\n * @return {String|false|null}\n * @public\n */\n\nfunction normalize (type) {\n  if (typeof type !== 'string') {\n    // invalid type\n    return false\n  }\n\n  switch (type) {\n    case 'urlencoded':\n      return 'application/x-www-form-urlencoded'\n    case 'multipart':\n      return 'multipart/*'\n  }\n\n  if (type[0] === '+') {\n    // \"+json\" -> \"*/*+json\" expando\n    return '*/*' + type\n  }\n\n  return type.indexOf('/') === -1\n    ? mime.lookup(type)\n    : type\n}\n\n/**\n * Check if `expected` mime type\n * matches `actual` mime type with\n * wildcard and +suffix support.\n *\n * @param {String} expected\n * @param {String} actual\n * @return {Boolean}\n * @public\n */\n\nfunction mimeMatch (expected, actual) {\n  // invalid type\n  if (expected === false) {\n    return false\n  }\n\n  // split types\n  var actualParts = actual.split('/')\n  var expectedParts = expected.split('/')\n\n  // invalid format\n  if (actualParts.length !== 2 || expectedParts.length !== 2) {\n    return false\n  }\n\n  // validate type\n  if (expectedParts[0] !== '*' && expectedParts[0] !== actualParts[0]) {\n    return false\n  }\n\n  // validate suffix wildcard\n  if (expectedParts[1].slice(0, 2) === '*+') {\n    return expectedParts[1].length <= actualParts[1].length + 1 &&\n      expectedParts[1].slice(1) === actualParts[1].slice(1 - expectedParts[1].length)\n  }\n\n  // validate subtype\n  if (expectedParts[1] !== '*' && expectedParts[1] !== actualParts[1]) {\n    return false\n  }\n\n  return true\n}\n\n/**\n * Normalize a type and remove parameters.\n *\n * @param {string} value\n * @return {(string|null)}\n * @private\n */\nfunction normalizeType (value) {\n  // Parse the type\n  var type = contentType.parse(value).type\n\n  return typer.test(type) ? type : null\n}\n\n/**\n * Try to normalize a type and remove parameters.\n *\n * @param {string} value\n * @return {(string|null)}\n * @private\n */\nfunction tryNormalizeType (value) {\n  try {\n    return value ? normalizeType(value) : null\n  } catch (err) {\n    return null\n  }\n}\n", "module.exports = (obj, keys) => {\n  const ret = {}\n  for (let i = 0; i < keys.length; i++) {\n    const key = keys[i]\n    if (obj[key] == null) continue\n    ret[key] = obj[key]\n  }\n  return ret\n}\n", "'use strict'\n\n/**\n * Module dependencies.\n */\n\nconst URL = require('url').URL\nconst net = require('net')\nconst accepts = require('accepts')\nconst contentType = require('content-type')\nconst stringify = require('url').format\nconst parse = require('parseurl')\nconst sp = require('./search-params.js')\n\nconst typeis = require('type-is')\nconst fresh = require('fresh')\nconst only = require('./only.js')\nconst util = require('util')\n\nconst IP = Symbol('context#ip')\n\n/**\n * Prototype.\n */\n\nmodule.exports = {\n\n  /**\n   * Return request header.\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  get header () {\n    return this.req.headers\n  },\n\n  /**\n   * Set request header.\n   *\n   * @api public\n   */\n\n  set header (val) {\n    this.req.headers = val\n  },\n\n  /**\n   * Return request header, alias as request.header\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  get headers () {\n    return this.req.headers\n  },\n\n  /**\n   * Set request header, alias as request.header\n   *\n   * @api public\n   */\n\n  set headers (val) {\n    this.req.headers = val\n  },\n\n  /**\n   * Get request URL.\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get url () {\n    return this.req.url\n  },\n\n  /**\n   * Set request URL.\n   *\n   * @api public\n   */\n\n  set url (val) {\n    this.req.url = val\n  },\n\n  /**\n   * Get the origin header.\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get origin () {\n    return this.req.headers.origin || null\n  },\n\n  /**\n   * Get full request URL.\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get href () {\n    // support: `GET http://example.com/foo`\n    if (/^https?:\\/\\//i.test(this.originalUrl)) return this.originalUrl\n    return this.protocol + '://' + this.host + this.originalUrl\n  },\n\n  /**\n   * Get request method.\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get method () {\n    return this.req.method\n  },\n\n  /**\n   * Set request method.\n   *\n   * @param {String} val\n   * @api public\n   */\n\n  set method (val) {\n    this.req.method = val\n  },\n\n  /**\n   * Get request pathname.\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get path () {\n    return parse(this.req).pathname\n  },\n\n  /**\n   * Set pathname, retaining the query string when present.\n   *\n   * @param {String} path\n   * @api public\n   */\n\n  set path (path) {\n    const url = parse(this.req)\n    if (url.pathname === path) return\n\n    url.pathname = path\n    url.path = null\n\n    this.url = stringify(url)\n  },\n\n  /**\n   * Get parsed query string.\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  get query () {\n    const str = this.querystring\n    const c = this._querycache = this._querycache || {}\n    return c[str] || (c[str] = sp.parse(str))\n  },\n\n  /**\n   * Set query string as an object.\n   *\n   * @param {Object} obj\n   * @api public\n   */\n\n  set query (obj) {\n    this.querystring = sp.stringify(obj)\n  },\n\n  /**\n   * Get query string.\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get querystring () {\n    if (!this.req) return ''\n    return parse(this.req).query || ''\n  },\n\n  /**\n   * Set query string.\n   *\n   * @param {String} str\n   * @api public\n   */\n\n  set querystring (str) {\n    const url = parse(this.req)\n    if (url.search === `?${str}`) return\n\n    url.search = str\n    url.path = null\n    this.url = stringify(url)\n  },\n\n  /**\n   * Get the search string. Same as the query string\n   * except it includes the leading ?.\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get search () {\n    if (!this.querystring) return ''\n    return `?${this.querystring}`\n  },\n\n  /**\n   * Set the search string. Same as\n   * request.querystring= but included for ubiquity.\n   *\n   * @param {String} str\n   * @api public\n   */\n\n  set search (str) {\n    this.querystring = str\n  },\n\n  /**\n   * Parse the \"Host\" header field host\n   * and support X-Forwarded-Host when a\n   * proxy is enabled.\n   *\n   * @return {String} hostname:port\n   * @api public\n   */\n\n  get host () {\n    const proxy = this.app.proxy\n    let host = proxy && this.get('X-Forwarded-Host')\n    if (!host) {\n      if (this.req.httpVersionMajor >= 2) host = this.get(':authority')\n      if (!host) host = this.get('Host')\n    }\n    if (!host) return ''\n    return splitCommaSeparatedValues(host, 1)[0]\n  },\n\n  /**\n   * Parse the \"Host\" header field hostname\n   * and support X-Forwarded-Host when a\n   * proxy is enabled.\n   *\n   * @return {String} hostname\n   * @api public\n   */\n\n  get hostname () {\n    const host = this.host\n    if (!host) return ''\n    if (host[0] === '[') return this.URL.hostname || '' // IPv6\n    return host.split(':', 1)[0]\n  },\n\n  /**\n   * Get WHATWG parsed URL.\n   * Lazily memoized.\n   *\n   * @return {URL|Object}\n   * @api public\n   */\n\n  get URL () {\n    /* istanbul ignore else */\n    if (!this.memoizedURL) {\n      const originalUrl = this.originalUrl || '' // avoid undefined in template string\n      try {\n        this.memoizedURL = new URL(`${this.protocol}://${this.host}${originalUrl}`)\n      } catch (err) {\n        this.memoizedURL = Object.create(null)\n      }\n    }\n    return this.memoizedURL\n  },\n\n  /**\n   * Check if the request is fresh, aka\n   * Last-Modified and/or the ETag\n   * still match.\n   *\n   * @return {Boolean}\n   * @api public\n   */\n\n  get fresh () {\n    const method = this.method\n    const s = this.ctx.status\n\n    // GET or HEAD for weak freshness validation only\n    if (method !== 'GET' && method !== 'HEAD') return false\n\n    // 2xx or 304 as per rfc2616 14.26\n    if ((s >= 200 && s < 300) || s === 304) {\n      return fresh(this.header, this.response.header)\n    }\n\n    return false\n  },\n\n  /**\n   * Check if the request is stale, aka\n   * \"Last-Modified\" and / or the \"ETag\" for the\n   * resource has changed.\n   *\n   * @return {Boolean}\n   * @api public\n   */\n\n  get stale () {\n    return !this.fresh\n  },\n\n  /**\n   * Check if the request is idempotent.\n   *\n   * @return {Boolean}\n   * @api public\n   */\n\n  get idempotent () {\n    const methods = ['GET', 'HEAD', 'PUT', 'DELETE', 'OPTIONS', 'TRACE']\n    return !!~methods.indexOf(this.method)\n  },\n\n  /**\n   * Return the request socket.\n   *\n   * @return {Connection}\n   * @api public\n   */\n\n  get socket () {\n    return this.req.socket\n  },\n\n  /**\n   * Get the charset when present or undefined.\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get charset () {\n    try {\n      const { parameters } = contentType.parse(this.req)\n      return parameters.charset || ''\n    } catch (e) {\n      return ''\n    }\n  },\n\n  /**\n   * Return parsed Content-Length when present.\n   *\n   * @return {Number|void}\n   * @api public\n   */\n\n  get length () {\n    const len = this.get('Content-Length')\n    if (len === '') return\n    return ~~len\n  },\n\n  /**\n   * Return the protocol string \"http\" or \"https\"\n   * when requested with TLS. When the proxy setting\n   * is enabled the \"X-Forwarded-Proto\" header\n   * field will be trusted. If you're running behind\n   * a reverse proxy that supplies https for you this\n   * may be enabled.\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get protocol () {\n    if (this.socket.encrypted) return 'https'\n    if (!this.app.proxy) return 'http'\n    const proto = this.get('X-Forwarded-Proto')\n    return proto ? splitCommaSeparatedValues(proto, 1)[0] : 'http'\n  },\n\n  /**\n   * Shorthand for:\n   *\n   *    this.protocol == 'https'\n   *\n   * @return {Boolean}\n   * @api public\n   */\n\n  get secure () {\n    return this.protocol === 'https'\n  },\n\n  /**\n   * When `app.proxy` is `true`, parse\n   * the \"X-Forwarded-For\" ip address list.\n   *\n   * For example if the value was \"client, proxy1, proxy2\"\n   * you would receive the array `[\"client\", \"proxy1\", \"proxy2\"]`\n   * where \"proxy2\" is the furthest down-stream.\n   *\n   * @return {Array}\n   * @api public\n   */\n\n  get ips () {\n    const proxy = this.app.proxy\n    const val = this.get(this.app.proxyIpHeader)\n    let ips = proxy && val\n      ? splitCommaSeparatedValues(val)\n      : []\n    if (this.app.maxIpsCount > 0) {\n      ips = ips.slice(-this.app.maxIpsCount)\n    }\n    return ips\n  },\n\n  /**\n   * Return request's remote address\n   * When `app.proxy` is `true`, parse\n   * the \"X-Forwarded-For\" ip address list and return the first one\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get ip () {\n    if (!this[IP]) {\n      this[IP] = this.ips[0] || this.socket.remoteAddress || ''\n    }\n    return this[IP]\n  },\n\n  set ip (_ip) {\n    this[IP] = _ip\n  },\n\n  /**\n   * Return subdomains as an array.\n   *\n   * Subdomains are the dot-separated parts of the host before the main domain\n   * of the app. By default, the domain of the app is assumed to be the last two\n   * parts of the host. This can be changed by setting `app.subdomainOffset`.\n   *\n   * For example, if the domain is \"tobi.ferrets.example.com\":\n   * If `app.subdomainOffset` is not set, this.subdomains is\n   * `[\"ferrets\", \"tobi\"]`.\n   * If `app.subdomainOffset` is 3, this.subdomains is `[\"tobi\"]`.\n   *\n   * @return {Array}\n   * @api public\n   */\n\n  get subdomains () {\n    const offset = this.app.subdomainOffset\n    const hostname = this.hostname\n    if (net.isIP(hostname)) return []\n    return hostname\n      .split('.')\n      .reverse()\n      .slice(offset)\n  },\n\n  /**\n   * Get accept object.\n   * Lazily memoized.\n   *\n   * @return {Object}\n   * @api private\n   */\n\n  get accept () {\n    return this._accept || (this._accept = accepts(this.req))\n  },\n\n  /**\n   * Set accept object.\n   *\n   * @param {Object} obj\n   * @api private\n   */\n\n  set accept (obj) {\n    this._accept = obj\n  },\n\n  /**\n   * Check if the given `type(s)` is acceptable, returning\n   * the best match when true, otherwise `false`, in which\n   * case you should respond with 406 \"Not Acceptable\".\n   *\n   * The `type` value may be a single mime type string\n   * such as \"application/json\", the extension name\n   * such as \"json\" or an array `[\"json\", \"html\", \"text/plain\"]`. When a list\n   * or array is given the _best_ match, if any is returned.\n   *\n   * Examples:\n   *\n   *     // Accept: text/html\n   *     this.accepts('html');\n   *     // => \"html\"\n   *\n   *     // Accept: text/*, application/json\n   *     this.accepts('html');\n   *     // => \"html\"\n   *     this.accepts('text/html');\n   *     // => \"text/html\"\n   *     this.accepts('json', 'text');\n   *     // => \"json\"\n   *     this.accepts('application/json');\n   *     // => \"application/json\"\n   *\n   *     // Accept: text/*, application/json\n   *     this.accepts('image/png');\n   *     this.accepts('png');\n   *     // => false\n   *\n   *     // Accept: text/*;q=.5, application/json\n   *     this.accepts(['html', 'json']);\n   *     this.accepts('html', 'json');\n   *     // => \"json\"\n   *\n   * @param {String|Array} type(s)...\n   * @return {String|Array|false}\n   * @api public\n   */\n\n  accepts (...args) {\n    return this.accept.types(...args)\n  },\n\n  /**\n   * Return accepted encodings or best fit based on `encodings`.\n   *\n   * Given `Accept-Encoding: gzip, deflate`\n   * an array sorted by quality is returned:\n   *\n   *     ['gzip', 'deflate']\n   *\n   * @param {String|Array} encoding(s)...\n   * @return {String|Array}\n   * @api public\n   */\n\n  acceptsEncodings (...args) {\n    return this.accept.encodings(...args)\n  },\n\n  /**\n   * Return accepted charsets or best fit based on `charsets`.\n   *\n   * Given `Accept-Charset: utf-8, iso-8859-1;q=0.2, utf-7;q=0.5`\n   * an array sorted by quality is returned:\n   *\n   *     ['utf-8', 'utf-7', 'iso-8859-1']\n   *\n   * @param {String|Array} charset(s)...\n   * @return {String|Array}\n   * @api public\n   */\n\n  acceptsCharsets (...args) {\n    return this.accept.charsets(...args)\n  },\n\n  /**\n   * Return accepted languages or best fit based on `langs`.\n   *\n   * Given `Accept-Language: en;q=0.8, es, pt`\n   * an array sorted by quality is returned:\n   *\n   *     ['es', 'pt', 'en']\n   *\n   * @param {String|Array} lang(s)...\n   * @return {Array|String}\n   * @api public\n   */\n\n  acceptsLanguages (...args) {\n    return this.accept.languages(...args)\n  },\n\n  /**\n   * Check if the incoming request contains the \"Content-Type\"\n   * header field and if it contains any of the given mime `type`s.\n   * If there is no request body, `null` is returned.\n   * If there is no content type, `false` is returned.\n   * Otherwise, it returns the first `type` that matches.\n   *\n   * Examples:\n   *\n   *     // With Content-Type: text/html; charset=utf-8\n   *     this.is('html'); // => 'html'\n   *     this.is('text/html'); // => 'text/html'\n   *     this.is('text/*', 'application/json'); // => 'text/html'\n   *\n   *     // When Content-Type is application/json\n   *     this.is('json', 'urlencoded'); // => 'json'\n   *     this.is('application/json'); // => 'application/json'\n   *     this.is('html', 'application/*'); // => 'application/json'\n   *\n   *     this.is('html'); // => false\n   *\n   * @param {String|String[]} [type]\n   * @param {String[]} [types]\n   * @return {String|false|null}\n   * @api public\n   */\n\n  is (type, ...types) {\n    return typeis(this.req, type, ...types)\n  },\n\n  /**\n   * Return the request mime type void of\n   * parameters such as \"charset\".\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get type () {\n    const type = this.get('Content-Type')\n    if (!type) return ''\n    return type.split(';')[0]\n  },\n\n  /**\n   * Return request header.\n   *\n   * The `Referrer` header field is special-cased,\n   * both `Referrer` and `Referer` are interchangeable.\n   *\n   * Examples:\n   *\n   *     this.get('Content-Type');\n   *     // => \"text/plain\"\n   *\n   *     this.get('content-type');\n   *     // => \"text/plain\"\n   *\n   *     this.get('Something');\n   *     // => ''\n   *\n   * @param {String} field\n   * @return {String}\n   * @api public\n   */\n\n  get (field) {\n    const req = this.req\n    switch (field = field.toLowerCase()) {\n      case 'referer':\n      case 'referrer':\n        return req.headers.referrer || req.headers.referer || ''\n      default:\n        return req.headers[field] || ''\n    }\n  },\n\n  /**\n   * Inspect implementation.\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  inspect () {\n    if (!this.req) return\n    return this.toJSON()\n  },\n\n  /**\n   * Return JSON representation.\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  toJSON () {\n    return only(this, [\n      'method',\n      'url',\n      'header'\n    ])\n  }\n}\n\n/**\n * Custom inspection implementation for newer Node.js versions.\n *\n * @return {Object}\n * @api public\n */\n\n/* istanbul ignore else */\nif (util.inspect.custom) {\n  module.exports[util.inspect.custom] = module.exports.inspect\n}\n\n/**\n * Split a comma-separated value string into an array of values, with an optional limit.\n * All the values are trimmed of whitespace.\n *\n * @param {string} value - The comma-separated value string to split.\n * @param {number} [limit] - The maximum number of values to return.\n * @returns {string[]} An array of values from the comma-separated string.\n */\nfunction splitCommaSeparatedValues (value, limit) {\n  return value.split(',', limit).map(v => v.trim())\n}\n", "'use strict'\n\nconst Stream = require('stream')\n\n// TODO: use a third party library for this\n\nmodule.exports = (stream) => {\n  return (\n    stream instanceof Stream ||\n    (stream !== null &&\n      typeof stream === 'object' &&\n      !!stream.readable &&\n      typeof stream.pipe === 'function' &&\n      typeof stream.read === 'function' &&\n      typeof stream.readable === 'boolean' &&\n      typeof stream.readableObjectMode === 'boolean' &&\n      typeof stream.destroy === 'function' &&\n      typeof stream.destroyed === 'boolean')\n  )\n}\n", "'use strict'\n\n/**\n * Module dependencies.\n */\n\nconst assert = require('node:assert')\nconst extname = require('node:path').extname\nconst util = require('node:util')\n\nconst contentDisposition = require('content-disposition')\nconst onFinish = require('on-finished')\nconst escape = require('escape-html')\nconst typeis = require('type-is').is\nconst statuses = require('statuses')\nconst destroy = require('destroy')\nconst encodeUrl = require('encodeurl')\nconst vary = require('vary')\nconst getType = require('mime-types').contentType\n\nconst isStream = require('./is-stream.js')\nconst only = require('./only.js')\n\n/**\n * Prototype.\n */\n\nmodule.exports = {\n\n  /**\n   * Return the request socket.\n   *\n   * @return {Connection}\n   * @api public\n   */\n\n  get socket () {\n    return this.res.socket\n  },\n\n  /**\n   * Return response header.\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  get header () {\n    const { res } = this\n    return typeof res.getHeaders === 'function'\n      ? res.getHeaders()\n      : res._headers || {} // Node < 7.7\n  },\n\n  /**\n   * Return response header, alias as response.header\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  get headers () {\n    return this.header\n  },\n\n  /**\n   * Get response status code.\n   *\n   * @return {Number}\n   * @api public\n   */\n\n  get status () {\n    return this.res.statusCode\n  },\n\n  /**\n   * Set response status code.\n   *\n   * @param {Number} code\n   * @api public\n   */\n\n  set status (code) {\n    if (this.headerSent) return\n\n    assert(Number.isInteger(code), 'status code must be a number')\n    assert(code >= 100 && code <= 999, `invalid status code: ${code}`)\n    this._explicitStatus = true\n    this.res.statusCode = code\n    if (this.req.httpVersionMajor < 2) this.res.statusMessage = statuses.message[code]\n    if (this.body && statuses.empty[code]) this.body = null\n  },\n\n  /**\n   * Get response status message\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get message () {\n    return this.res.statusMessage || statuses.message[this.status]\n  },\n\n  /**\n   * Set response status message\n   *\n   * @param {String} msg\n   * @api public\n   */\n\n  set message (msg) {\n    this.res.statusMessage = msg\n  },\n\n  /**\n   * Get response body.\n   *\n   * @return {Mixed}\n   * @api public\n   */\n\n  get body () {\n    return this._body\n  },\n\n  /**\n   * Set response body.\n   *\n   * @param {String|Buffer|Object|Stream|ReadableStream|Blob|Response} val\n   * @api public\n   */\n\n  set body (val) {\n    const original = this._body\n    this._body = val\n\n    const cleanupPreviousStream = () => {\n      if (original && isStream(original)) {\n        original.once('error', () => {})\n        // Only destroy if the new value is not a stream\n        if (!isStream(val)) {\n          destroy(original)\n        }\n      }\n    }\n\n    // no content\n\n    if (val == null) {\n      if (!statuses.empty[this.status]) {\n        if (this.type === 'application/json') {\n          this._body = 'null'\n          return\n        }\n        this.status = 204\n      }\n      if (val === null) this._explicitNullBody = true\n      this.remove('Content-Type')\n      this.remove('Content-Length')\n      this.remove('Transfer-Encoding')\n      cleanupPreviousStream()\n      return\n    }\n\n    // set the status\n    if (!this._explicitStatus) this.status = 200\n\n    // set the content-type only if not yet set\n    const setType = !this.has('Content-Type')\n\n    // string\n    if (typeof val === 'string') {\n      if (setType) this.type = /^\\s*</.test(val) ? 'html' : 'text'\n      this.length = Buffer.byteLength(val)\n      cleanupPreviousStream()\n      return\n    }\n\n    // buffer\n    if (Buffer.isBuffer(val)) {\n      if (setType) this.type = 'bin'\n      this.length = val.length\n      cleanupPreviousStream()\n      return\n    }\n\n    // stream\n    if (isStream(val)) {\n      onFinish(this.res, destroy.bind(null, val))\n      if (original !== val) {\n        if (original != null) this.remove('Content-Length')\n        cleanupPreviousStream()\n      }\n\n      if (setType) this.type = 'bin'\n      return\n    }\n\n    // ReadableStream\n    if (val instanceof ReadableStream) {\n      if (setType) this.type = 'bin'\n      cleanupPreviousStream()\n      return\n    }\n\n    // blob\n    if (val instanceof Blob) {\n      if (setType) this.type = 'bin'\n      this.length = val.size\n      cleanupPreviousStream()\n      return\n    }\n\n    // Response\n    if (val instanceof Response) {\n      this.status = val.status\n      if (setType) this.type = 'bin'\n      const headers = val.headers\n      for (const key of headers.keys()) {\n        this.set(key, headers.get(key))\n      }\n      cleanupPreviousStream()\n      return\n    }\n\n    // json\n    this.remove('Content-Length')\n    if (!this.type || !/\\bjson\\b/i.test(this.type)) this.type = 'json'\n    cleanupPreviousStream()\n  },\n\n  /**\n   * Set Content-Length field to `n`.\n   *\n   * @param {Number} n\n   * @api public\n   */\n\n  set length (n) {\n    if (!this.has('Transfer-Encoding')) {\n      this.set('Content-Length', n)\n    }\n  },\n\n  /**\n   * Return parsed response Content-Length when present.\n   *\n   * @return {Number}\n   * @api public\n   */\n\n  get length () {\n    if (this.has('Content-Length')) {\n      return parseInt(this.get('Content-Length'), 10) || 0\n    }\n\n    const { body } = this\n    if (!body || isStream(body)) return undefined\n    if (typeof body === 'string') return Buffer.byteLength(body)\n    if (Buffer.isBuffer(body)) return body.length\n    return Buffer.byteLength(JSON.stringify(body))\n  },\n\n  /**\n   * Check if a header has been written to the socket.\n   *\n   * @return {Boolean}\n   * @api public\n   */\n\n  get headerSent () {\n    return this.res.headersSent\n  },\n\n  /**\n   * Vary on `field`.\n   *\n   * @param {String|String[]} field\n   * @api public\n   */\n\n  vary (field) {\n    if (this.headerSent) return\n\n    vary(this.res, field)\n  },\n\n  /**\n   * Perform a 302 redirect to `url`.\n   *\n   * Examples:\n   *\n   *    this.redirect('/login');\n   *    this.redirect('http://google.com');\n   *\n   * @param {String} url\n   * @api public\n   */\n\n  redirect (url) {\n    if (/^https?:\\/\\//i.test(url)) {\n      // formatting url again avoid security escapes\n      url = new URL(url).toString()\n    }\n    this.set('Location', encodeUrl(url))\n\n    // status\n    if (!statuses.redirect[this.status]) this.status = 302\n\n    // html\n    if (this.ctx.accepts('html')) {\n      url = escape(url)\n      this.type = 'text/html; charset=utf-8'\n      this.body = `Redirecting to ${url}.`\n      return\n    }\n\n    // text\n    this.type = 'text/plain; charset=utf-8'\n    this.body = `Redirecting to ${url}.`\n  },\n\n  /**\n   * Perform a special-cased \"back\" to provide Referrer support.\n   * When Referrer is not present, `alt` or \"/\" is used.\n   *\n   * Examples:\n   *\n   *    ctx.back()\n   *    ctx.back('/index.html')\n   *\n   * @param {String} [alt]\n   * @api public\n   */\n\n  back (alt) {\n    const referrer = this.ctx.get('Referrer')\n    if (referrer) {\n      // referrer is an absolute URL, check if it's the same origin\n      const url = new URL(referrer, this.ctx.href)\n      if (url.host === this.ctx.host) {\n        this.redirect(referrer)\n        return\n      }\n    }\n\n    // no referrer, use alt or '/'\n    this.redirect(alt || '/')\n  },\n\n  /**\n   * Set Content-Disposition header to \"attachment\" with optional `filename`.\n   *\n   * @param {String} [filename]\n   * @param {object} [options]\n   * @param {string} [options.type=attachment]\n   * @param {string|boolean} [options.fallback=true]\n   * @api public\n   */\n\n  attachment (filename, options) {\n    if (filename && !this.has('Content-Type')) {\n      this.type = extname(filename)\n    }\n    this.set('Content-Disposition', contentDisposition(filename, options))\n  },\n\n  /**\n   * Set Content-Type response header with `type` through `mime.lookup()`\n   * when it does not contain a charset.\n   *\n   * Examples:\n   *\n   *     this.type = '.html';\n   *     this.type = 'html';\n   *     this.type = 'json';\n   *     this.type = 'application/json';\n   *     this.type = 'png';\n   *\n   * @param {String} type\n   * @api public\n   */\n\n  set type (type) {\n    type = getType(type)\n    if (type) {\n      this.set('Content-Type', type)\n    } else {\n      this.remove('Content-Type')\n    }\n  },\n\n  /**\n   * Set the Last-Modified date using a string or a Date.\n   *\n   *     this.response.lastModified = new Date();\n   *     this.response.lastModified = '2013-09-13';\n   *\n   * @param {String|Date} val\n   * @api public\n   */\n\n  set lastModified (val) {\n    if (typeof val === 'string') val = new Date(val)\n    this.set('Last-Modified', val.toUTCString())\n  },\n\n  /**\n   * Get the Last-Modified date in Date form, if it exists.\n   *\n   * @return {Date}\n   * @api public\n   */\n\n  get lastModified () {\n    const date = this.get('last-modified')\n    if (date) return new Date(date)\n  },\n\n  /**\n   * Set the ETag of a response.\n   * This will normalize the quotes if necessary.\n   *\n   *     this.response.etag = 'md5hashsum';\n   *     this.response.etag = '\"md5hashsum\"';\n   *     this.response.etag = 'W/\"123456789\"';\n   *\n   * @param {String} val\n   * @api public\n   */\n\n  set etag (val) {\n    if (!/^(W\\/)?\"/.test(val)) val = `\"${val}\"`\n    this.set('ETag', val)\n  },\n\n  /**\n   * Get the ETag of a response.\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get etag () {\n    return this.get('ETag')\n  },\n\n  /**\n   * Return the response mime type void of\n   * parameters such as \"charset\".\n   *\n   * @return {String}\n   * @api public\n   */\n\n  get type () {\n    const type = this.get('Content-Type')\n    if (!type) return ''\n    return type.split(';', 1)[0]\n  },\n\n  /**\n   * Check whether the response is one of the listed types.\n   * Pretty much the same as `this.request.is()`.\n   *\n   * @param {String|String[]} [type]\n   * @param {String[]} [types]\n   * @return {String|false}\n   * @api public\n   */\n\n  is (type, ...types) {\n    return typeis(this.type, type, ...types)\n  },\n\n  /**\n   * Return response header.\n   *\n   * Examples:\n   *\n   *     this.get('Content-Type');\n   *     // => \"text/plain\"\n   *\n   *     this.get('content-type');\n   *     // => \"text/plain\"\n   *\n   * @param {String} field\n   * @return {any}\n   * @api public\n   */\n\n  get (field) {\n    return this.res.getHeader(field)\n  },\n\n  /**\n   * Returns true if the header identified by name is currently set in the outgoing headers.\n   * The header name matching is case-insensitive.\n   *\n   * Examples:\n   *\n   *     this.has('Content-Type');\n   *     // => true\n   *\n   *     this.get('content-type');\n   *     // => true\n   *\n   * @param {String} field\n   * @return {boolean}\n   * @api public\n   */\n\n  has (field) {\n    return typeof this.res.hasHeader === 'function'\n      ? this.res.hasHeader(field)\n      // Node < 7.7\n      : field.toLowerCase() in this.headers\n  },\n\n  /**\n   * Set header `field` to `val` or pass\n   * an object of header fields.\n   *\n   * Examples:\n   *\n   *    this.set('Foo', ['bar', 'baz']);\n   *    this.set('Accept', 'application/json');\n   *    this.set({ Accept: 'text/plain', 'X-API-Key': 'tobi' });\n   *\n   * @param {String|{ [k: string]: any }} field\n   * @param {any} [val]\n   * @api public\n   */\n\n  set (field, val) {\n    if (this.headerSent || !field) return\n\n    if (typeof field === 'string') {\n      this.res.setHeader(field, val)\n    } else {\n      Object.keys(field).forEach(header => this.res.setHeader(header, field[header]))\n    }\n  },\n\n  /**\n   * Append additional header `field` with value `val`.\n   *\n   * Examples:\n   *\n   * ```\n   * this.append('Link', ['<http://localhost/>', '<http://localhost:3000/>']);\n   * this.append('Set-Cookie', 'foo=bar; Path=/; HttpOnly');\n   * this.append('Warning', '199 Miscellaneous warning');\n   * ```\n   *\n   * @param {String} field\n   * @param {*} val\n   * @api public\n   */\n\n  append (field, val) {\n    const prev = this.get(field)\n\n    if (prev) {\n      val = Array.isArray(prev)\n        ? prev.concat(val)\n        : [prev].concat(val)\n    }\n\n    return this.set(field, val)\n  },\n\n  /**\n   * Remove header `field`.\n   *\n   * @param {String} field\n   * @api public\n   */\n\n  remove (field) {\n    if (this.headerSent) return\n\n    this.res.removeHeader(field)\n  },\n\n  /**\n   * Checks if the request is writable.\n   * Tests for the existence of the socket\n   * as node sometimes does not set it.\n   *\n   * @return {Boolean}\n   * @api private\n   */\n\n  get writable () {\n    // can't write any more after response finished\n    // response.writableEnded is available since Node > 12.9\n    // https://nodejs.org/api/http.html#http_response_writableended\n    // response.finished is undocumented feature of previous Node versions\n    // https://stackoverflow.com/questions/16254385/undocumented-response-finished-in-node-js\n    if (this.res.writableEnded || this.res.finished) return false\n\n    const socket = this.res.socket\n    // There are already pending outgoing res, but still writable\n    // https://github.com/nodejs/node/blob/v4.4.7/lib/_http_server.js#L486\n    if (!socket) return true\n    return socket.writable\n  },\n\n  /**\n   * Inspect implementation.\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  inspect () {\n    if (!this.res) return\n    const o = this.toJSON()\n    o.body = this.body\n    return o\n  },\n\n  /**\n   * Return JSON representation.\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  toJSON () {\n    return only(this, [\n      'status',\n      'message',\n      'header'\n    ])\n  },\n\n  /**\n   * Flush any set headers and begin the body\n   */\n\n  flushHeaders () {\n    this.res.flushHeaders()\n  }\n}\n\n/**\n * Custom inspection implementation for node 6+.\n *\n * @return {Object}\n * @api public\n */\n\n/* istanbul ignore else */\nif (util.inspect.custom) {\n  module.exports[util.inspect.custom] = module.exports.inspect\n}\n", "'use strict'\n\n/**\n * Module dependencies.\n */\n\nconst util = require('util')\nconst createError = require('http-errors')\nconst httpAssert = require('http-assert')\nconst delegate = require('delegates')\nconst statuses = require('statuses')\nconst Cookies = require('cookies')\n\nconst COOKIES = Symbol('context#cookies')\n\n/**\n * Context prototype.\n */\n\nconst proto = module.exports = {\n\n  /**\n   * util.inspect() implementation, which\n   * just returns the JSON output.\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  inspect () {\n    if (this === proto) return this\n    return this.toJSON()\n  },\n\n  /**\n   * Return JSON representation.\n   *\n   * Here we explicitly invoke .toJSON() on each\n   * object, as iteration will otherwise fail due\n   * to the getters and cause utilities such as\n   * clone() to fail.\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  toJSON () {\n    return {\n      request: this.request.toJSON(),\n      response: this.response.toJSON(),\n      app: this.app.toJSON(),\n      originalUrl: this.originalUrl,\n      req: '<original node req>',\n      res: '<original node res>',\n      socket: '<original node socket>'\n    }\n  },\n\n  /**\n   * Similar to .throw(), adds assertion.\n   *\n   *    this.assert(this.user, 401, 'Please login!');\n   *\n   * See: https://github.com/jshttp/http-assert\n   *\n   * @param {Mixed} test\n   * @param {Number} status\n   * @param {String} message\n   * @api public\n   */\n\n  assert: httpAssert,\n\n  /**\n   * Throw an error with `status` (default 500) and\n   * `msg`. Note that these are user-level\n   * errors, and the message may be exposed to the client.\n   *\n   *    this.throw(403)\n   *    this.throw(400, 'name required')\n   *    this.throw('something exploded')\n   *    this.throw(new Error('invalid'))\n   *    this.throw(400, new Error('invalid'))\n   *\n   * See: https://github.com/jshttp/http-errors\n   *\n   * Note: `status` should only be passed as the first parameter.\n   *\n   * @param {String|Number|Error} err, msg or status\n   * @param {String|Number|Error} [err, msg or status]\n   * @param {Object} [props]\n   * @api public\n   */\n\n  throw (...args) {\n    throw createError(...args)\n  },\n\n  /**\n   * Default error handling.\n   *\n   * @param {Error} err\n   * @api private\n   */\n\n  onerror (err) {\n    // don't do anything if there is no error.\n    // this allows you to pass `this.onerror`\n    // to node-style callbacks.\n    if (err == null) return\n\n    // When dealing with cross-globals a normal `instanceof` check doesn't work properly.\n    // See https://github.com/koajs/koa/issues/1466\n    // We can probably remove it once jest fixes https://github.com/facebook/jest/issues/2549.\n    const isNativeError =\n      Object.prototype.toString.call(err) === '[object Error]' ||\n      err instanceof Error\n    if (!isNativeError) err = new Error(util.format('non-error thrown: %j', err))\n\n    let headerSent = false\n    if (this.headerSent || !this.writable) {\n      headerSent = err.headerSent = true\n    }\n\n    // delegate\n    this.app.emit('error', err, this)\n\n    // nothing we can do here other\n    // than delegate to the app-level\n    // handler and log.\n    if (headerSent) {\n      return\n    }\n\n    const { res } = this\n\n    // first unset all headers\n    /* istanbul ignore else */\n    if (typeof res.getHeaderNames === 'function') {\n      res.getHeaderNames().forEach(name => res.removeHeader(name))\n    } else {\n      res._headers = {} // Node < 7.7\n    }\n\n    // then set those specified\n    this.set(err.headers)\n\n    // force text/plain\n    this.type = 'text'\n\n    let statusCode = err.status || err.statusCode\n\n    // default to 500\n    if (typeof statusCode !== 'number' || !statuses.message[statusCode]) statusCode = 500\n\n    // respond\n    const code = statuses.message[statusCode]\n    const msg = err.expose ? err.message : code\n    this.status = err.status = statusCode\n    this.length = Buffer.byteLength(msg)\n    res.end(msg)\n  },\n\n  get cookies () {\n    if (!this[COOKIES]) {\n      this[COOKIES] = new Cookies(this.req, this.res, {\n        keys: this.app.keys,\n        secure: this.request.secure\n      })\n    }\n    return this[COOKIES]\n  },\n\n  set cookies (_cookies) {\n    this[COOKIES] = _cookies\n  }\n}\n\n/**\n * Custom inspection implementation for newer Node.js versions.\n *\n * @return {Object}\n * @api public\n */\n\n/* istanbul ignore else */\nif (util.inspect.custom) {\n  module.exports[util.inspect.custom] = module.exports.inspect\n}\n\n/**\n * Response delegation.\n */\n\ndelegate(proto, 'response')\n  .method('attachment')\n  .method('redirect')\n  .method('remove')\n  .method('vary')\n  .method('has')\n  .method('set')\n  .method('append')\n  .method('flushHeaders')\n  .method('back')\n  .access('status')\n  .access('message')\n  .access('body')\n  .access('length')\n  .access('type')\n  .access('lastModified')\n  .access('etag')\n  .getter('headerSent')\n  .getter('writable')\n\n/**\n * Request delegation.\n */\n\ndelegate(proto, 'request')\n  .method('acceptsLanguages')\n  .method('acceptsEncodings')\n  .method('acceptsCharsets')\n  .method('accepts')\n  .method('get')\n  .method('is')\n  .access('querystring')\n  .access('idempotent')\n  .access('socket')\n  .access('search')\n  .access('method')\n  .access('query')\n  .access('path')\n  .access('url')\n  .access('accept')\n  .getter('origin')\n  .getter('href')\n  .getter('subdomains')\n  .getter('protocol')\n  .getter('host')\n  .getter('hostname')\n  .getter('URL')\n  .getter('header')\n  .getter('headers')\n  .getter('secure')\n  .getter('stale')\n  .getter('fresh')\n  .getter('ips')\n  .getter('ip')\n", "'use strict'\n\n/**\n * Module dependencies.\n */\nconst util = require('node:util')\nconst debug = util.debuglog('koa:application')\nconst Emitter = require('node:events')\nconst Stream = require('node:stream')\nconst http = require('node:http')\nconst { AsyncLocalStorage } = require('node:async_hooks')\n\nconst onFinished = require('on-finished')\nconst compose = require('koa-compose')\nconst statuses = require('statuses')\nconst { HttpError } = require('http-errors')\n\nconst request = require('./request')\nconst response = require('./response')\nconst context = require('./context')\nconst isStream = require('./is-stream.js')\nconst only = require('./only.js')\n\n/** @typedef {typeof import ('./context') & {\n *  app: Application\n *  req: import('http').IncomingMessage\n *  res: import('http').ServerResponse\n *  request: KoaRequest\n *  response: KoaResponse\n *  state: any\n *  originalUrl: string\n * }} Context */\n\n/** @typedef {typeof import('./request')} KoaRequest */\n\n/** @typedef {typeof import('./response')} KoaResponse */\n\n/**\n * Expose `Application` class.\n * Inherits from `Emitter.prototype`.\n */\n\nmodule.exports = class Application extends Emitter {\n  /**\n   * Initialize a new `Application`.\n   *\n   * @api public\n   */\n\n  /**\n   *\n   * @param {object} [options] Application options\n   * @param {string} [options.env='development'] Environment\n   * @param {string[]} [options.keys] Signed cookie keys\n   * @param {boolean} [options.proxy] Trust proxy headers\n   * @param {number} [options.subdomainOffset] Subdomain offset\n   * @param {string} [options.proxyIpHeader] Proxy IP header, defaults to X-Forwarded-For\n   * @param {number} [options.maxIpsCount] Max IPs read from proxy IP header, default to 0 (means infinity)\n   * @param {function} [options.compose] Function to handle middleware composition\n   * @param {boolean} [options.asyncLocalStorage] Enable AsyncLocalStorage, default to false\n   *\n   */\n\n  constructor (options) {\n    super()\n    options = options || {}\n    this.proxy = options.proxy || false\n    this.subdomainOffset = options.subdomainOffset || 2\n    this.proxyIpHeader = options.proxyIpHeader || 'X-Forwarded-For'\n    this.maxIpsCount = options.maxIpsCount || 0\n    this.env = options.env || process.env.NODE_ENV || 'development'\n    this.compose = options.compose || compose\n    if (options.keys) this.keys = options.keys\n    this.middleware = []\n    this.context = Object.create(context)\n    this.request = Object.create(request)\n    this.response = Object.create(response)\n    // util.inspect.custom support for node 6+\n    /* istanbul ignore else */\n    if (util.inspect.custom) {\n      this[util.inspect.custom] = this.inspect\n    }\n    if (options.asyncLocalStorage) {\n      if (options.asyncLocalStorage instanceof AsyncLocalStorage) {\n        this.ctxStorage = options.asyncLocalStorage\n      } else {\n        this.ctxStorage = new AsyncLocalStorage()\n      }\n    }\n  }\n\n  /**\n   * Shorthand for:\n   *\n   *    http.createServer(app.callback()).listen(...)\n   *\n   * @param {Mixed} ...\n   * @return {import('http').Server}\n   * @api public\n   */\n\n  listen (...args) {\n    debug('listen')\n    const server = http.createServer(this.callback())\n    return server.listen(...args)\n  }\n\n  /**\n   * Return JSON representation.\n   * We only bother showing settings.\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  toJSON () {\n    return only(this, ['subdomainOffset', 'proxy', 'env'])\n  }\n\n  /**\n   * Inspect implementation.\n   *\n   * @return {Object}\n   * @api public\n   */\n\n  inspect () {\n    return this.toJSON()\n  }\n\n  /**\n   * Use the given middleware `fn`.\n   *\n   * Old-style middleware will be converted.\n   *\n   * @param {(context: Context) => Promise<any | void>} fn\n   * @return {Application} self\n   * @api public\n   */\n\n  use (fn) {\n    if (typeof fn !== 'function') { throw new TypeError('middleware must be a function!') }\n    debug('use %s', fn._name || fn.name || '-')\n    this.middleware.push(fn)\n    return this\n  }\n\n  /**\n   * Return a request handler callback\n   * for node's native http server.\n   *\n   * @return {Function}\n   * @api public\n   */\n\n  callback () {\n    const fn = this.compose(this.middleware)\n\n    if (!this.listenerCount('error')) this.on('error', this.onerror)\n\n    const handleRequest = (req, res) => {\n      const ctx = this.createContext(req, res)\n      if (!this.ctxStorage) {\n        return this.handleRequest(ctx, fn)\n      }\n      return this.ctxStorage.run(ctx, async () => {\n        return await this.handleRequest(ctx, fn)\n      })\n    }\n\n    return handleRequest\n  }\n\n  /**\n   * return current context from async local storage\n   */\n  get currentContext () {\n    if (this.ctxStorage) return this.ctxStorage.getStore()\n  }\n\n  /**\n   * Handle request in callback.\n   *\n   * @api private\n   */\n\n  handleRequest (ctx, fnMiddleware) {\n    const res = ctx.res\n    res.statusCode = 404\n    const onerror = (err) => ctx.onerror(err)\n    const handleResponse = () => respond(ctx)\n    onFinished(res, onerror)\n    return fnMiddleware(ctx).then(handleResponse).catch(onerror)\n  }\n\n  /**\n   * Initialize a new context.\n   *\n   * @api private\n   */\n\n  createContext (req, res) {\n    /** @type {Context} */\n    const context = Object.create(this.context)\n    /** @type {KoaRequest} */\n    const request = (context.request = Object.create(this.request))\n    /** @type {KoaResponse} */\n    const response = (context.response = Object.create(this.response))\n    context.app = request.app = response.app = this\n    context.req = request.req = response.req = req\n    context.res = request.res = response.res = res\n    request.ctx = response.ctx = context\n    request.response = response\n    response.request = request\n    context.originalUrl = request.originalUrl = req.url\n    context.state = {}\n    return context\n  }\n\n  /**\n   * Default error handler.\n   *\n   * @param {Error} err\n   * @api private\n   */\n\n  onerror (err) {\n    // When dealing with cross-globals a normal `instanceof` check doesn't work properly.\n    // See https://github.com/koajs/koa/issues/1466\n    // We can probably remove it once jest fixes https://github.com/facebook/jest/issues/2549.\n    const isNativeError =\n      Object.prototype.toString.call(err) === '[object Error]' ||\n      err instanceof Error\n    if (!isNativeError) { throw new TypeError(util.format('non-error thrown: %j', err)) }\n\n    if (err.status === 404 || err.expose) return\n    if (this.silent) return\n\n    const msg = err.stack || err.toString()\n    console.error(`\\n${msg.replace(/^/gm, '  ')}\\n`)\n  }\n\n  /**\n   * Help TS users comply to CommonJS, ESM, bundler mismatch.\n   * @see https://github.com/koajs/koa/issues/1513\n   */\n\n  static get default () {\n    return Application\n  }\n}\n\n/**\n * Response helper.\n */\n\nfunction respond (ctx) {\n  // allow bypassing koa\n  if (ctx.respond === false) return\n\n  const res = ctx.res\n\n  if (!ctx.writable) return res.end()\n\n  let body = ctx.body\n  const code = ctx.status\n\n  // ignore body\n  if (statuses.empty[code]) {\n    // strip headers\n    ctx.body = null\n    return res.end()\n  }\n\n  if (ctx.method === 'HEAD') {\n    if (!res.headersSent && !ctx.response.has('Content-Length')) {\n      const { length } = ctx.response\n      if (Number.isInteger(length)) ctx.length = length\n    }\n    return res.end()\n  }\n\n  // status body\n  if (body === null || body === undefined) {\n    if (ctx.response._explicitNullBody) {\n      ctx.response.remove('Content-Type')\n      ctx.response.remove('Transfer-Encoding')\n      ctx.length = 0\n      return res.end()\n    }\n    if (ctx.req.httpVersionMajor >= 2) {\n      body = String(code)\n    } else {\n      body = ctx.message || String(code)\n    }\n    if (!res.headersSent) {\n      ctx.type = 'text'\n      ctx.length = Buffer.byteLength(body)\n    }\n    return res.end(body)\n  }\n\n  // responses\n\n  if (Buffer.isBuffer(body)) return res.end(body)\n  if (typeof body === 'string') return res.end(body)\n\n  let stream = null\n  if (body instanceof Blob) stream = Stream.Readable.from(body.stream())\n  else if (body instanceof ReadableStream) stream = Stream.Readable.from(body)\n  else if (body instanceof Response) stream = Stream.Readable.from(body?.body || '')\n  else if (isStream(body)) stream = body\n\n  if (stream) {\n    return Stream.pipeline(stream, res, err => {\n      if (err && ctx.app.listenerCount('error')) ctx.onerror(err)\n    })\n  }\n\n  // body: json\n  body = JSON.stringify(body)\n  if (!res.headersSent) {\n    ctx.length = Buffer.byteLength(body)\n  }\n  res.end(body)\n}\n\n/**\n * Make HttpError available to consumers of the library so that consumers don't\n * have a direct dependency upon `http-errors`\n */\n\nmodule.exports.HttpError = HttpError\n", "{\n  \"100\": \"Continue\",\n  \"101\": \"Switching Protocols\",\n  \"102\": \"Processing\",\n  \"103\": \"Early Hints\",\n  \"200\": \"OK\",\n  \"201\": \"Created\",\n  \"202\": \"Accepted\",\n  \"203\": \"Non-Authoritative Information\",\n  \"204\": \"No Content\",\n  \"205\": \"Reset Content\",\n  \"206\": \"Partial Content\",\n  \"207\": \"Multi-Status\",\n  \"208\": \"Already Reported\",\n  \"226\": \"IM Used\",\n  \"300\": \"Multiple Choices\",\n  \"301\": \"Moved Permanently\",\n  \"302\": \"Found\",\n  \"303\": \"See Other\",\n  \"304\": \"Not Modified\",\n  \"305\": \"Use Proxy\",\n  \"307\": \"Temporary Redirect\",\n  \"308\": \"Permanent Redirect\",\n  \"400\": \"Bad Request\",\n  \"401\": \"Unauthorized\",\n  \"402\": \"Payment Required\",\n  \"403\": \"Forbidden\",\n  \"404\": \"Not Found\",\n  \"405\": \"Method Not Allowed\",\n  \"406\": \"Not Acceptable\",\n  \"407\": \"Proxy Authentication Required\",\n  \"408\": \"Request Timeout\",\n  \"409\": \"Conflict\",\n  \"410\": \"Gone\",\n  \"411\": \"Length Required\",\n  \"412\": \"Precondition Failed\",\n  \"413\": \"Payload Too Large\",\n  \"414\": \"URI Too Long\",\n  \"415\": \"Unsupported Media Type\",\n  \"416\": \"Range Not Satisfiable\",\n  \"417\": \"Expectation Failed\",\n  \"418\": \"I'm a Teapot\",\n  \"421\": \"Misdirected Request\",\n  \"422\": \"Unprocessable Entity\",\n  \"423\": \"Locked\",\n  \"424\": \"Failed Dependency\",\n  \"425\": \"Too Early\",\n  \"426\": \"Upgrade Required\",\n  \"428\": \"Precondition Required\",\n  \"429\": \"Too Many Requests\",\n  \"431\": \"Request Header Fields Too Large\",\n  \"451\": \"Unavailable For Legal Reasons\",\n  \"500\": \"Internal Server Error\",\n  \"501\": \"Not Implemented\",\n  \"502\": \"Bad Gateway\",\n  \"503\": \"Service Unavailable\",\n  \"504\": \"Gateway Timeout\",\n  \"505\": \"HTTP Version Not Supported\",\n  \"506\": \"Variant Also Negotiates\",\n  \"507\": \"Insufficient Storage\",\n  \"508\": \"Loop Detected\",\n  \"509\": \"Bandwidth Limit Exceeded\",\n  \"510\": \"Not Extended\",\n  \"511\": \"Network Authentication Required\"\n}\n", "/*!\n * statuses\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar codes = require('./codes.json')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = status\n\n// status code to message map\nstatus.message = codes\n\n// status message (lower-case) to code map\nstatus.code = createMessageToStatusCodeMap(codes)\n\n// array of status codes\nstatus.codes = createStatusCodeList(codes)\n\n// status codes for redirects\nstatus.redirect = {\n  300: true,\n  301: true,\n  302: true,\n  303: true,\n  305: true,\n  307: true,\n  308: true\n}\n\n// status codes for empty bodies\nstatus.empty = {\n  204: true,\n  205: true,\n  304: true\n}\n\n// status codes for when you should retry the request\nstatus.retry = {\n  502: true,\n  503: true,\n  504: true\n}\n\n/**\n * Create a map of message to status code.\n * @private\n */\n\nfunction createMessageToStatusCodeMap (codes) {\n  var map = {}\n\n  Object.keys(codes).forEach(function forEachCode (code) {\n    var message = codes[code]\n    var status = Number(code)\n\n    // populate map\n    map[message.toLowerCase()] = status\n  })\n\n  return map\n}\n\n/**\n * Create a list of all status codes.\n * @private\n */\n\nfunction createStatusCodeList (codes) {\n  return Object.keys(codes).map(function mapCode (code) {\n    return Number(code)\n  })\n}\n\n/**\n * Get the status code for given message.\n * @private\n */\n\nfunction getStatusCode (message) {\n  var msg = message.toLowerCase()\n\n  if (!Object.prototype.hasOwnProperty.call(status.code, msg)) {\n    throw new Error('invalid status message: \"' + message + '\"')\n  }\n\n  return status.code[msg]\n}\n\n/**\n * Get the status message for given code.\n * @private\n */\n\nfunction getStatusMessage (code) {\n  if (!Object.prototype.hasOwnProperty.call(status.message, code)) {\n    throw new Error('invalid status code: ' + code)\n  }\n\n  return status.message[code]\n}\n\n/**\n * Get the status code.\n *\n * Given a number, this will throw if it is not a known status\n * code, otherwise the code will be returned. Given a string,\n * the string will be parsed for a number and return the code\n * if valid, otherwise will lookup the code assuming this is\n * the status message.\n *\n * @param {string|number} code\n * @returns {number}\n * @public\n */\n\nfunction status (code) {\n  if (typeof code === 'number') {\n    return getStatusMessage(code)\n  }\n\n  if (typeof code !== 'string') {\n    throw new TypeError('code must be a number or string')\n  }\n\n  // '403'\n  var n = parseInt(code, 10)\n  if (!isNaN(n)) {\n    return getStatusMessage(n)\n  }\n\n  return getStatusCode(code)\n}\n", "/*!\n * http-errors\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar deprecate = require('depd')('http-errors')\nvar setPrototypeOf = require('setprototypeof')\nvar statuses = require('statuses')\nvar inherits = require('inherits')\nvar toIdentifier = require('toidentifier')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = createError\nmodule.exports.HttpError = createHttpErrorConstructor()\nmodule.exports.isHttpError = createIsHttpErrorFunction(module.exports.HttpError)\n\n// Populate exports for all constructors\npopulateConstructorExports(module.exports, statuses.codes, module.exports.HttpError)\n\n/**\n * Get the code class of a status code.\n * @private\n */\n\nfunction codeClass (status) {\n  return Number(String(status).charAt(0) + '00')\n}\n\n/**\n * Create a new HTTP Error.\n *\n * @returns {Error}\n * @public\n */\n\nfunction createError () {\n  // so much arity going on ~_~\n  var err\n  var msg\n  var status = 500\n  var props = {}\n  for (var i = 0; i < arguments.length; i++) {\n    var arg = arguments[i]\n    var type = typeof arg\n    if (type === 'object' && arg instanceof Error) {\n      err = arg\n      status = err.status || err.statusCode || status\n    } else if (type === 'number' && i === 0) {\n      status = arg\n    } else if (type === 'string') {\n      msg = arg\n    } else if (type === 'object') {\n      props = arg\n    } else {\n      throw new TypeError('argument #' + (i + 1) + ' unsupported type ' + type)\n    }\n  }\n\n  if (typeof status === 'number' && (status < 400 || status >= 600)) {\n    deprecate('non-error status code; use only 4xx or 5xx status codes')\n  }\n\n  if (typeof status !== 'number' ||\n    (!statuses.message[status] && (status < 400 || status >= 600))) {\n    status = 500\n  }\n\n  // constructor\n  var HttpError = createError[status] || createError[codeClass(status)]\n\n  if (!err) {\n    // create error\n    err = HttpError\n      ? new HttpError(msg)\n      : new Error(msg || statuses.message[status])\n    Error.captureStackTrace(err, createError)\n  }\n\n  if (!HttpError || !(err instanceof HttpError) || err.status !== status) {\n    // add properties to generic error\n    err.expose = status < 500\n    err.status = err.statusCode = status\n  }\n\n  for (var key in props) {\n    if (key !== 'status' && key !== 'statusCode') {\n      err[key] = props[key]\n    }\n  }\n\n  return err\n}\n\n/**\n * Create HTTP error abstract base class.\n * @private\n */\n\nfunction createHttpErrorConstructor () {\n  function HttpError () {\n    throw new TypeError('cannot construct abstract class')\n  }\n\n  inherits(HttpError, Error)\n\n  return HttpError\n}\n\n/**\n * Create a constructor for a client error.\n * @private\n */\n\nfunction createClientErrorConstructor (HttpError, name, code) {\n  var className = toClassName(name)\n\n  function ClientError (message) {\n    // create the error object\n    var msg = message != null ? message : statuses.message[code]\n    var err = new Error(msg)\n\n    // capture a stack trace to the construction point\n    Error.captureStackTrace(err, ClientError)\n\n    // adjust the [[Prototype]]\n    setPrototypeOf(err, ClientError.prototype)\n\n    // redefine the error message\n    Object.defineProperty(err, 'message', {\n      enumerable: true,\n      configurable: true,\n      value: msg,\n      writable: true\n    })\n\n    // redefine the error name\n    Object.defineProperty(err, 'name', {\n      enumerable: false,\n      configurable: true,\n      value: className,\n      writable: true\n    })\n\n    return err\n  }\n\n  inherits(ClientError, HttpError)\n  nameFunc(ClientError, className)\n\n  ClientError.prototype.status = code\n  ClientError.prototype.statusCode = code\n  ClientError.prototype.expose = true\n\n  return ClientError\n}\n\n/**\n * Create function to test is a value is a HttpError.\n * @private\n */\n\nfunction createIsHttpErrorFunction (HttpError) {\n  return function isHttpError (val) {\n    if (!val || typeof val !== 'object') {\n      return false\n    }\n\n    if (val instanceof HttpError) {\n      return true\n    }\n\n    return val instanceof Error &&\n      typeof val.expose === 'boolean' &&\n      typeof val.statusCode === 'number' && val.status === val.statusCode\n  }\n}\n\n/**\n * Create a constructor for a server error.\n * @private\n */\n\nfunction createServerErrorConstructor (HttpError, name, code) {\n  var className = toClassName(name)\n\n  function ServerError (message) {\n    // create the error object\n    var msg = message != null ? message : statuses.message[code]\n    var err = new Error(msg)\n\n    // capture a stack trace to the construction point\n    Error.captureStackTrace(err, ServerError)\n\n    // adjust the [[Prototype]]\n    setPrototypeOf(err, ServerError.prototype)\n\n    // redefine the error message\n    Object.defineProperty(err, 'message', {\n      enumerable: true,\n      configurable: true,\n      value: msg,\n      writable: true\n    })\n\n    // redefine the error name\n    Object.defineProperty(err, 'name', {\n      enumerable: false,\n      configurable: true,\n      value: className,\n      writable: true\n    })\n\n    return err\n  }\n\n  inherits(ServerError, HttpError)\n  nameFunc(ServerError, className)\n\n  ServerError.prototype.status = code\n  ServerError.prototype.statusCode = code\n  ServerError.prototype.expose = false\n\n  return ServerError\n}\n\n/**\n * Set the name of a function, if possible.\n * @private\n */\n\nfunction nameFunc (func, name) {\n  var desc = Object.getOwnPropertyDescriptor(func, 'name')\n\n  if (desc && desc.configurable) {\n    desc.value = name\n    Object.defineProperty(func, 'name', desc)\n  }\n}\n\n/**\n * Populate the exports object with constructors for every error class.\n * @private\n */\n\nfunction populateConstructorExports (exports, codes, HttpError) {\n  codes.forEach(function forEachCode (code) {\n    var CodeError\n    var name = toIdentifier(statuses.message[code])\n\n    switch (codeClass(code)) {\n      case 400:\n        CodeError = createClientErrorConstructor(HttpError, name, code)\n        break\n      case 500:\n        CodeError = createServerErrorConstructor(HttpError, name, code)\n        break\n    }\n\n    if (CodeError) {\n      // export the constructor\n      exports[code] = CodeError\n      exports[name] = CodeError\n    }\n  })\n}\n\n/**\n * Get a class name from a name identifier.\n *\n * @param {string} name\n * @returns {string}\n * @private\n */\n\nfunction toClassName (name) {\n  return name.slice(-5) === 'Error' ? name : name + 'Error'\n}\n", "const DEFAULT_DELIMITER = \"/\";\nconst NOOP_VALUE = (value: string) => value;\nconst ID_START = /^[$_\\p{ID_Start}]$/u;\nconst ID_CONTINUE = /^[$\\u200c\\u200d\\p{ID_Continue}]$/u;\n\n/**\n * Encode a string into another string.\n */\nexport type Encode = (value: string) => string;\n\n/**\n * Decode a string into another string.\n */\nexport type Decode = (value: string) => string;\n\nexport interface ParseOptions {\n  /**\n   * A function for encoding input strings.\n   */\n  encodePath?: Encode;\n}\n\nexport interface PathToRegexpOptions {\n  /**\n   * Matches the path completely without trailing characters. (default: `true`)\n   */\n  end?: boolean;\n  /**\n   * Allows optional trailing delimiter to match. (default: `true`)\n   */\n  trailing?: boolean;\n  /**\n   * Match will be case sensitive. (default: `false`)\n   */\n  sensitive?: boolean;\n  /**\n   * The default delimiter for segments. (default: `'/'`)\n   */\n  delimiter?: string;\n}\n\nexport interface MatchOptions extends PathToRegexpOptions {\n  /**\n   * Function for decoding strings for params, or `false` to disable entirely. (default: `decodeURIComponent`)\n   */\n  decode?: Decode | false;\n}\n\nexport interface CompileOptions {\n  /**\n   * Function for encoding input strings for output into the path, or `false` to disable entirely. (default: `encodeURIComponent`)\n   */\n  encode?: Encode | false;\n  /**\n   * The default delimiter for segments. (default: `'/'`)\n   */\n  delimiter?: string;\n}\n\ntype TokenType =\n  | \"{\"\n  | \"}\"\n  | \"wildcard\"\n  | \"param\"\n  | \"char\"\n  | \"escape\"\n  | \"end\"\n  // Reserved for use or ambiguous due to past use.\n  | \"(\"\n  | \")\"\n  | \"[\"\n  | \"]\"\n  | \"+\"\n  | \"?\"\n  | \"!\";\n\n/**\n * Tokenizer results.\n */\ninterface LexToken {\n  type: TokenType;\n  index: number;\n  value: string;\n}\n\nconst SIMPLE_TOKENS: Record<string, TokenType> = {\n  // Groups.\n  \"{\": \"{\",\n  \"}\": \"}\",\n  // Reserved.\n  \"(\": \"(\",\n  \")\": \")\",\n  \"[\": \"[\",\n  \"]\": \"]\",\n  \"+\": \"+\",\n  \"?\": \"?\",\n  \"!\": \"!\",\n};\n\n/**\n * Escape text for stringify to path.\n */\nfunction escapeText(str: string) {\n  return str.replace(/[{}()\\[\\]+?!:*\\\\]/g, \"\\\\$&\");\n}\n\n/**\n * Escape a regular expression string.\n */\nfunction escape(str: string) {\n  return str.replace(/[.+*?^${}()[\\]|/\\\\]/g, \"\\\\$&\");\n}\n\n/**\n * Plain text.\n */\nexport interface Text {\n  type: \"text\";\n  value: string;\n}\n\n/**\n * A parameter designed to match arbitrary text within a segment.\n */\nexport interface Parameter {\n  type: \"param\";\n  name: string;\n}\n\n/**\n * A wildcard parameter designed to match multiple segments.\n */\nexport interface Wildcard {\n  type: \"wildcard\";\n  name: string;\n}\n\n/**\n * A set of possible tokens to expand when matching.\n */\nexport interface Group {\n  type: \"group\";\n  tokens: Token[];\n}\n\n/**\n * A token that corresponds with a regexp capture.\n */\nexport type Key = Parameter | Wildcard;\n\n/**\n * A sequence of `path-to-regexp` keys that match capturing groups.\n */\nexport type Keys = Array<Key>;\n\n/**\n * A sequence of path match characters.\n */\nexport type Token = Text | Parameter | Wildcard | Group;\n\n/**\n * Tokenized path instance.\n */\nexport class TokenData {\n  constructor(\n    public readonly tokens: Token[],\n    public readonly originalPath?: string,\n  ) {}\n}\n\n/**\n * ParseError is thrown when there is an error processing the path.\n */\nexport class PathError extends TypeError {\n  constructor(\n    message: string,\n    public readonly originalPath: string | undefined,\n  ) {\n    let text = message;\n    if (originalPath) text += `: ${originalPath}`;\n    text += `; visit https://git.new/pathToRegexpError for info`;\n    super(text);\n  }\n}\n\n/**\n * Parse a string for the raw tokens.\n */\nexport function parse(str: string, options: ParseOptions = {}): TokenData {\n  const { encodePath = NOOP_VALUE } = options;\n  const chars = [...str];\n  const tokens: Array<LexToken> = [];\n  let index = 0;\n  let pos = 0;\n\n  function name() {\n    let value = \"\";\n\n    if (ID_START.test(chars[index])) {\n      do {\n        value += chars[index++];\n      } while (ID_CONTINUE.test(chars[index]));\n    } else if (chars[index] === '\"') {\n      let quoteStart = index;\n\n      while (index++ < chars.length) {\n        if (chars[index] === '\"') {\n          index++;\n          quoteStart = 0;\n          break;\n        }\n\n        // Increment over escape characters.\n        if (chars[index] === \"\\\\\") index++;\n\n        value += chars[index];\n      }\n\n      if (quoteStart) {\n        throw new PathError(`Unterminated quote at index ${quoteStart}`, str);\n      }\n    }\n\n    if (!value) {\n      throw new PathError(`Missing parameter name at index ${index}`, str);\n    }\n\n    return value;\n  }\n\n  while (index < chars.length) {\n    const value = chars[index];\n    const type = SIMPLE_TOKENS[value];\n\n    if (type) {\n      tokens.push({ type, index: index++, value });\n    } else if (value === \"\\\\\") {\n      tokens.push({ type: \"escape\", index: index++, value: chars[index++] });\n    } else if (value === \":\") {\n      tokens.push({ type: \"param\", index: index++, value: name() });\n    } else if (value === \"*\") {\n      tokens.push({ type: \"wildcard\", index: index++, value: name() });\n    } else {\n      tokens.push({ type: \"char\", index: index++, value });\n    }\n  }\n\n  tokens.push({ type: \"end\", index, value: \"\" });\n\n  function consumeUntil(endType: TokenType): Token[] {\n    const output: Token[] = [];\n\n    while (true) {\n      const token = tokens[pos++];\n      if (token.type === endType) break;\n\n      if (token.type === \"char\" || token.type === \"escape\") {\n        let path = token.value;\n        let cur = tokens[pos];\n\n        while (cur.type === \"char\" || cur.type === \"escape\") {\n          path += cur.value;\n          cur = tokens[++pos];\n        }\n\n        output.push({\n          type: \"text\",\n          value: encodePath(path),\n        });\n        continue;\n      }\n\n      if (token.type === \"param\" || token.type === \"wildcard\") {\n        output.push({\n          type: token.type,\n          name: token.value,\n        });\n        continue;\n      }\n\n      if (token.type === \"{\") {\n        output.push({\n          type: \"group\",\n          tokens: consumeUntil(\"}\"),\n        });\n        continue;\n      }\n\n      throw new PathError(\n        `Unexpected ${token.type} at index ${token.index}, expected ${endType}`,\n        str,\n      );\n    }\n\n    return output;\n  }\n\n  return new TokenData(consumeUntil(\"end\"), str);\n}\n\n/**\n * Compile a string to a template function for the path.\n */\nexport function compile<P extends ParamData = ParamData>(\n  path: Path,\n  options: CompileOptions & ParseOptions = {},\n) {\n  const { encode = encodeURIComponent, delimiter = DEFAULT_DELIMITER } =\n    options;\n  const data = typeof path === \"object\" ? path : parse(path, options);\n  const fn = tokensToFunction(data.tokens, delimiter, encode);\n\n  return function path(params: P = {} as P) {\n    const [path, ...missing] = fn(params);\n    if (missing.length) {\n      throw new TypeError(`Missing parameters: ${missing.join(\", \")}`);\n    }\n    return path;\n  };\n}\n\nexport type ParamData = Partial<Record<string, string | string[]>>;\nexport type PathFunction<P extends ParamData> = (data?: P) => string;\n\nfunction tokensToFunction(\n  tokens: Token[],\n  delimiter: string,\n  encode: Encode | false,\n) {\n  const encoders = tokens.map((token) =>\n    tokenToFunction(token, delimiter, encode),\n  );\n\n  return (data: ParamData) => {\n    const result: string[] = [\"\"];\n\n    for (const encoder of encoders) {\n      const [value, ...extras] = encoder(data);\n      result[0] += value;\n      result.push(...extras);\n    }\n\n    return result;\n  };\n}\n\n/**\n * Convert a single token into a path building function.\n */\nfunction tokenToFunction(\n  token: Token,\n  delimiter: string,\n  encode: Encode | false,\n): (data: ParamData) => string[] {\n  if (token.type === \"text\") return () => [token.value];\n\n  if (token.type === \"group\") {\n    const fn = tokensToFunction(token.tokens, delimiter, encode);\n\n    return (data) => {\n      const [value, ...missing] = fn(data);\n      if (!missing.length) return [value];\n      return [\"\"];\n    };\n  }\n\n  const encodeValue = encode || NOOP_VALUE;\n\n  if (token.type === \"wildcard\" && encode !== false) {\n    return (data) => {\n      const value = data[token.name];\n      if (value == null) return [\"\", token.name];\n\n      if (!Array.isArray(value) || value.length === 0) {\n        throw new TypeError(`Expected \"${token.name}\" to be a non-empty array`);\n      }\n\n      return [\n        value\n          .map((value, index) => {\n            if (typeof value !== \"string\") {\n              throw new TypeError(\n                `Expected \"${token.name}/${index}\" to be a string`,\n              );\n            }\n\n            return encodeValue(value);\n          })\n          .join(delimiter),\n      ];\n    };\n  }\n\n  return (data) => {\n    const value = data[token.name];\n    if (value == null) return [\"\", token.name];\n\n    if (typeof value !== \"string\") {\n      throw new TypeError(`Expected \"${token.name}\" to be a string`);\n    }\n\n    return [encodeValue(value)];\n  };\n}\n\n/**\n * A match result contains data about the path match.\n */\nexport interface MatchResult<P extends ParamData> {\n  path: string;\n  params: P;\n}\n\n/**\n * A match is either `false` (no match) or a match result.\n */\nexport type Match<P extends ParamData> = false | MatchResult<P>;\n\n/**\n * The match function takes a string and returns whether it matched the path.\n */\nexport type MatchFunction<P extends ParamData> = (path: string) => Match<P>;\n\n/**\n * Supported path types.\n */\nexport type Path = string | TokenData;\n\n/**\n * Transform a path into a match function.\n */\nexport function match<P extends ParamData>(\n  path: Path | Path[],\n  options: MatchOptions & ParseOptions = {},\n): MatchFunction<P> {\n  const { decode = decodeURIComponent, delimiter = DEFAULT_DELIMITER } =\n    options;\n  const { regexp, keys } = pathToRegexp(path, options);\n\n  const decoders = keys.map((key) => {\n    if (decode === false) return NOOP_VALUE;\n    if (key.type === \"param\") return decode;\n    return (value: string) => value.split(delimiter).map(decode);\n  });\n\n  return function match(input: string) {\n    const m = regexp.exec(input);\n    if (!m) return false;\n\n    const path = m[0];\n    const params = Object.create(null);\n\n    for (let i = 1; i < m.length; i++) {\n      if (m[i] === undefined) continue;\n\n      const key = keys[i - 1];\n      const decoder = decoders[i - 1];\n      params[key.name] = decoder(m[i]);\n    }\n\n    return { path, params };\n  };\n}\n\nexport function pathToRegexp(\n  path: Path | Path[],\n  options: PathToRegexpOptions & ParseOptions = {},\n) {\n  const {\n    delimiter = DEFAULT_DELIMITER,\n    end = true,\n    sensitive = false,\n    trailing = true,\n  } = options;\n  const keys: Keys = [];\n  const flags = sensitive ? \"\" : \"i\";\n  const sources: string[] = [];\n\n  for (const input of pathsToArray(path, [])) {\n    const data = typeof input === \"object\" ? input : parse(input, options);\n    for (const tokens of flatten(data.tokens, 0, [])) {\n      sources.push(toRegExpSource(tokens, delimiter, keys, data.originalPath));\n    }\n  }\n\n  let pattern = `^(?:${sources.join(\"|\")})`;\n  if (trailing) pattern += `(?:${escape(delimiter)}$)?`;\n  pattern += end ? \"$\" : `(?=${escape(delimiter)}|$)`;\n\n  const regexp = new RegExp(pattern, flags);\n  return { regexp, keys };\n}\n\n/**\n * Convert a path or array of paths into a flat array.\n */\nfunction pathsToArray(paths: Path | Path[], init: Path[]): Path[] {\n  if (Array.isArray(paths)) {\n    for (const p of paths) pathsToArray(p, init);\n  } else {\n    init.push(paths);\n  }\n  return init;\n}\n\n/**\n * Flattened token set.\n */\ntype FlatToken = Text | Parameter | Wildcard;\n\n/**\n * Generate a flat list of sequence tokens from the given tokens.\n */\nfunction* flatten(\n  tokens: Token[],\n  index: number,\n  init: FlatToken[],\n): Generator<FlatToken[]> {\n  if (index === tokens.length) {\n    return yield init;\n  }\n\n  const token = tokens[index];\n\n  if (token.type === \"group\") {\n    for (const seq of flatten(token.tokens, 0, init.slice())) {\n      yield* flatten(tokens, index + 1, seq);\n    }\n  } else {\n    init.push(token);\n  }\n\n  yield* flatten(tokens, index + 1, init);\n}\n\n/**\n * Transform a flat sequence of tokens into a regular expression.\n */\nfunction toRegExpSource(\n  tokens: FlatToken[],\n  delimiter: string,\n  keys: Keys,\n  originalPath: string | undefined,\n): string {\n  let result = \"\";\n  let backtrack = \"\";\n  let isSafeSegmentParam = true;\n\n  for (const token of tokens) {\n    if (token.type === \"text\") {\n      result += escape(token.value);\n      backtrack += token.value;\n      isSafeSegmentParam ||= token.value.includes(delimiter);\n      continue;\n    }\n\n    if (token.type === \"param\" || token.type === \"wildcard\") {\n      if (!isSafeSegmentParam && !backtrack) {\n        throw new PathError(\n          `Missing text before \"${token.name}\" ${token.type}`,\n          originalPath,\n        );\n      }\n\n      if (token.type === \"param\") {\n        result += `(${negate(delimiter, isSafeSegmentParam ? \"\" : backtrack)}+)`;\n      } else {\n        result += `([\\\\s\\\\S]+)`;\n      }\n\n      keys.push(token);\n      backtrack = \"\";\n      isSafeSegmentParam = false;\n      continue;\n    }\n  }\n\n  return result;\n}\n\n/**\n * Block backtracking on previous text and ignore delimiter string.\n */\nfunction negate(delimiter: string, backtrack: string): string {\n  if (backtrack.length < 2) {\n    if (delimiter.length < 2) return `[^${escape(delimiter + backtrack)}]`;\n    return `(?:(?!${escape(delimiter)})[^${escape(backtrack)}])`;\n  }\n  if (delimiter.length < 2) {\n    return `(?:(?!${escape(backtrack)})[^${escape(delimiter)}])`;\n  }\n  return `(?:(?!${escape(backtrack)}|${escape(delimiter)})[\\\\s\\\\S])`;\n}\n\n/**\n * Stringify an array of tokens into a path string.\n */\nfunction stringifyTokens(tokens: Token[]): string {\n  let value = \"\";\n  let i = 0;\n\n  function name(value: string) {\n    const isSafe = isNameSafe(value) && isNextNameSafe(tokens[i]);\n    return isSafe ? value : JSON.stringify(value);\n  }\n\n  while (i < tokens.length) {\n    const token = tokens[i++];\n\n    if (token.type === \"text\") {\n      value += escapeText(token.value);\n      continue;\n    }\n\n    if (token.type === \"group\") {\n      value += `{${stringifyTokens(token.tokens)}}`;\n      continue;\n    }\n\n    if (token.type === \"param\") {\n      value += `:${name(token.name)}`;\n      continue;\n    }\n\n    if (token.type === \"wildcard\") {\n      value += `*${name(token.name)}`;\n      continue;\n    }\n\n    throw new TypeError(`Unknown token type: ${(token as any).type}`);\n  }\n\n  return value;\n}\n\n/**\n * Stringify token data into a path string.\n */\nexport function stringify(data: TokenData): string {\n  return stringifyTokens(data.tokens);\n}\n\n/**\n * Validate the parameter name contains valid ID characters.\n */\nfunction isNameSafe(name: string): boolean {\n  const [first, ...rest] = name;\n  return ID_START.test(first) && rest.every((char) => ID_CONTINUE.test(char));\n}\n\n/**\n * Validate the next token does not interfere with the current param name.\n */\nfunction isNextNameSafe(token: Token | undefined): boolean {\n  if (token && token.type === \"text\") return !ID_CONTINUE.test(token.value[0]);\n  return true;\n}\n", "/*!\n * bytes\n * Copyright(c) 2012-2014 TJ Holowaychuk\n * Copyright(c) 2015 Jed Watson\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = bytes;\nmodule.exports.format = format;\nmodule.exports.parse = parse;\n\n/**\n * Module variables.\n * @private\n */\n\nvar formatThousandsRegExp = /\\B(?=(\\d{3})+(?!\\d))/g;\n\nvar formatDecimalsRegExp = /(?:\\.0*|(\\.[^0]+)0+)$/;\n\nvar map = {\n  b:  1,\n  kb: 1 << 10,\n  mb: 1 << 20,\n  gb: 1 << 30,\n  tb: Math.pow(1024, 4),\n  pb: Math.pow(1024, 5),\n};\n\nvar parseRegExp = /^((-|\\+)?(\\d+(?:\\.\\d+)?)) *(kb|mb|gb|tb|pb)$/i;\n\n/**\n * Convert the given value in bytes into a string or parse to string to an integer in bytes.\n *\n * @param {string|number} value\n * @param {{\n *  case: [string],\n *  decimalPlaces: [number]\n *  fixedDecimals: [boolean]\n *  thousandsSeparator: [string]\n *  unitSeparator: [string]\n *  }} [options] bytes options.\n *\n * @returns {string|number|null}\n */\n\nfunction bytes(value, options) {\n  if (typeof value === 'string') {\n    return parse(value);\n  }\n\n  if (typeof value === 'number') {\n    return format(value, options);\n  }\n\n  return null;\n}\n\n/**\n * Format the given value in bytes into a string.\n *\n * If the value is negative, it is kept as such. If it is a float,\n * it is rounded.\n *\n * @param {number} value\n * @param {object} [options]\n * @param {number} [options.decimalPlaces=2]\n * @param {number} [options.fixedDecimals=false]\n * @param {string} [options.thousandsSeparator=]\n * @param {string} [options.unit=]\n * @param {string} [options.unitSeparator=]\n *\n * @returns {string|null}\n * @public\n */\n\nfunction format(value, options) {\n  if (!Number.isFinite(value)) {\n    return null;\n  }\n\n  var mag = Math.abs(value);\n  var thousandsSeparator = (options && options.thousandsSeparator) || '';\n  var unitSeparator = (options && options.unitSeparator) || '';\n  var decimalPlaces = (options && options.decimalPlaces !== undefined) ? options.decimalPlaces : 2;\n  var fixedDecimals = Boolean(options && options.fixedDecimals);\n  var unit = (options && options.unit) || '';\n\n  if (!unit || !map[unit.toLowerCase()]) {\n    if (mag >= map.pb) {\n      unit = 'PB';\n    } else if (mag >= map.tb) {\n      unit = 'TB';\n    } else if (mag >= map.gb) {\n      unit = 'GB';\n    } else if (mag >= map.mb) {\n      unit = 'MB';\n    } else if (mag >= map.kb) {\n      unit = 'KB';\n    } else {\n      unit = 'B';\n    }\n  }\n\n  var val = value / map[unit.toLowerCase()];\n  var str = val.toFixed(decimalPlaces);\n\n  if (!fixedDecimals) {\n    str = str.replace(formatDecimalsRegExp, '$1');\n  }\n\n  if (thousandsSeparator) {\n    str = str.split('.').map(function (s, i) {\n      return i === 0\n        ? s.replace(formatThousandsRegExp, thousandsSeparator)\n        : s\n    }).join('.');\n  }\n\n  return str + unitSeparator + unit;\n}\n\n/**\n * Parse the string value into an integer in bytes.\n *\n * If no unit is given, it is assumed the value is in bytes.\n *\n * @param {number|string} val\n *\n * @returns {number|null}\n * @public\n */\n\nfunction parse(val) {\n  if (typeof val === 'number' && !isNaN(val)) {\n    return val;\n  }\n\n  if (typeof val !== 'string') {\n    return null;\n  }\n\n  // Test if the string passed is valid\n  var results = parseRegExp.exec(val);\n  var floatValue;\n  var unit = 'b';\n\n  if (!results) {\n    // Nothing could be extracted from the given string\n    floatValue = parseInt(val, 10);\n    unit = 'b'\n  } else {\n    // Retrieve the value and the unit\n    floatValue = parseFloat(results[1]);\n    unit = results[4].toLowerCase();\n  }\n\n  if (isNaN(floatValue)) {\n    return null;\n  }\n\n  return Math.floor(map[unit] * floatValue);\n}\n", "/* eslint-disable node/no-deprecated-api */\n\n'use strict'\n\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\nvar safer = {}\n\nvar key\n\nfor (key in buffer) {\n  if (!buffer.hasOwnProperty(key)) continue\n  if (key === 'SlowBuffer' || key === 'Buffer') continue\n  safer[key] = buffer[key]\n}\n\nvar Safer = safer.Buffer = {}\nfor (key in Buffer) {\n  if (!Buffer.hasOwnProperty(key)) continue\n  if (key === 'allocUnsafe' || key === 'allocUnsafeSlow') continue\n  Safer[key] = Buffer[key]\n}\n\nsafer.Buffer.prototype = Buffer.prototype\n\nif (!Safer.from || Safer.from === Uint8Array.from) {\n  Safer.from = function (value, encodingOrOffset, length) {\n    if (typeof value === 'number') {\n      throw new TypeError('The \"value\" argument must not be of type number. Received type ' + typeof value)\n    }\n    if (value && typeof value.length === 'undefined') {\n      throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type ' + typeof value)\n    }\n    return Buffer(value, encodingOrOffset, length)\n  }\n}\n\nif (!Safer.alloc) {\n  Safer.alloc = function (size, fill, encoding) {\n    if (typeof size !== 'number') {\n      throw new TypeError('The \"size\" argument must be of type number. Received type ' + typeof size)\n    }\n    if (size < 0 || size >= 2 * (1 << 30)) {\n      throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n    }\n    var buf = Buffer(size)\n    if (!fill || fill.length === 0) {\n      buf.fill(0)\n    } else if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n    return buf\n  }\n}\n\nif (!safer.kStringMaxLength) {\n  try {\n    safer.kStringMaxLength = process.binding('buffer').kStringMaxLength\n  } catch (e) {\n    // we can't determine kStringMaxLength in environments where process.binding\n    // is unsupported, so let's not set it\n  }\n}\n\nif (!safer.constants) {\n  safer.constants = {\n    MAX_LENGTH: safer.kMaxLength\n  }\n  if (safer.kStringMaxLength) {\n    safer.constants.MAX_STRING_LENGTH = safer.kStringMaxLength\n  }\n}\n\nmodule.exports = safer\n", "\"use strict\"\n\nvar BOMChar = \"\\uFEFF\"\n\nexports.PrependBOM = PrependBOMWrapper\nfunction PrependBOMWrapper (encoder, options) {\n  this.encoder = encoder\n  this.addBOM = true\n}\n\nPrependBOMWrapper.prototype.write = function (str) {\n  if (this.addBOM) {\n    str = BOMChar + str\n    this.addBOM = false\n  }\n\n  return this.encoder.write(str)\n}\n\nPrependBOMWrapper.prototype.end = function () {\n  return this.encoder.end()\n}\n\n// ------------------------------------------------------------------------------\n\nexports.StripBOM = StripBOMWrapper\nfunction StripBOMWrapper (decoder, options) {\n  this.decoder = decoder\n  this.pass = false\n  this.options = options || {}\n}\n\nStripBOMWrapper.prototype.write = function (buf) {\n  var res = this.decoder.write(buf)\n  if (this.pass || !res) { return res }\n\n  if (res[0] === BOMChar) {\n    res = res.slice(1)\n    if (typeof this.options.stripBOM === \"function\") { this.options.stripBOM() }\n  }\n\n  this.pass = true\n  return res\n}\n\nStripBOMWrapper.prototype.end = function () {\n  return this.decoder.end()\n}\n", "\"use strict\"\n\nvar hasOwn = typeof Object.hasOwn === \"undefined\" ? Function.call.bind(Object.prototype.hasOwnProperty) : Object.hasOwn\n\nfunction mergeModules (target, module) {\n  for (var key in module) {\n    if (hasOwn(module, key)) {\n      target[key] = module[key]\n    }\n  }\n}\n\nmodule.exports = mergeModules\n", "\"use strict\"\nvar Buffer = require(\"safer-buffer\").Buffer\n\n// Export Node.js internal encodings.\n\nmodule.exports = {\n  // Encodings\n  utf8: { type: \"_internal\", bomAware: true },\n  cesu8: { type: \"_internal\", bomAware: true },\n  unicode11utf8: \"utf8\",\n\n  ucs2: { type: \"_internal\", bomAware: true },\n  utf16le: \"ucs2\",\n\n  binary: { type: \"_internal\" },\n  base64: { type: \"_internal\" },\n  hex: { type: \"_internal\" },\n\n  // Codec.\n  _internal: InternalCodec\n}\n\n// ------------------------------------------------------------------------------\n\nfunction InternalCodec (codecOptions, iconv) {\n  this.enc = codecOptions.encodingName\n  this.bomAware = codecOptions.bomAware\n\n  if (this.enc === \"base64\") { this.encoder = InternalEncoderBase64 } else if (this.enc === \"utf8\") { this.encoder = InternalEncoderUtf8 } else if (this.enc === \"cesu8\") {\n    this.enc = \"utf8\" // Use utf8 for decoding.\n    this.encoder = InternalEncoderCesu8\n\n    // Add decoder for versions of Node not supporting CESU-8\n    if (Buffer.from(\"eda0bdedb2a9\", \"hex\").toString() !== \"\uD83D\uDCA9\") {\n      this.decoder = InternalDecoderCesu8\n      this.defaultCharUnicode = iconv.defaultCharUnicode\n    }\n  }\n}\n\nInternalCodec.prototype.encoder = InternalEncoder\nInternalCodec.prototype.decoder = InternalDecoder\n\n// ------------------------------------------------------------------------------\n\n// We use node.js internal decoder. Its signature is the same as ours.\nvar StringDecoder = require(\"string_decoder\").StringDecoder\n\nfunction InternalDecoder (options, codec) {\n  this.decoder = new StringDecoder(codec.enc)\n}\n\nInternalDecoder.prototype.write = function (buf) {\n  if (!Buffer.isBuffer(buf)) {\n    buf = Buffer.from(buf)\n  }\n\n  return this.decoder.write(buf)\n}\n\nInternalDecoder.prototype.end = function () {\n  return this.decoder.end()\n}\n\n// ------------------------------------------------------------------------------\n// Encoder is mostly trivial\n\nfunction InternalEncoder (options, codec) {\n  this.enc = codec.enc\n}\n\nInternalEncoder.prototype.write = function (str) {\n  return Buffer.from(str, this.enc)\n}\n\nInternalEncoder.prototype.end = function () {\n}\n\n// ------------------------------------------------------------------------------\n// Except base64 encoder, which must keep its state.\n\nfunction InternalEncoderBase64 (options, codec) {\n  this.prevStr = \"\"\n}\n\nInternalEncoderBase64.prototype.write = function (str) {\n  str = this.prevStr + str\n  var completeQuads = str.length - (str.length % 4)\n  this.prevStr = str.slice(completeQuads)\n  str = str.slice(0, completeQuads)\n\n  return Buffer.from(str, \"base64\")\n}\n\nInternalEncoderBase64.prototype.end = function () {\n  return Buffer.from(this.prevStr, \"base64\")\n}\n\n// ------------------------------------------------------------------------------\n// CESU-8 encoder is also special.\n\nfunction InternalEncoderCesu8 (options, codec) {\n}\n\nInternalEncoderCesu8.prototype.write = function (str) {\n  var buf = Buffer.alloc(str.length * 3); var bufIdx = 0\n  for (var i = 0; i < str.length; i++) {\n    var charCode = str.charCodeAt(i)\n    // Naive implementation, but it works because CESU-8 is especially easy\n    // to convert from UTF-16 (which all JS strings are encoded in).\n    if (charCode < 0x80) { buf[bufIdx++] = charCode } else if (charCode < 0x800) {\n      buf[bufIdx++] = 0xC0 + (charCode >>> 6)\n      buf[bufIdx++] = 0x80 + (charCode & 0x3f)\n    } else { // charCode will always be < 0x10000 in javascript.\n      buf[bufIdx++] = 0xE0 + (charCode >>> 12)\n      buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f)\n      buf[bufIdx++] = 0x80 + (charCode & 0x3f)\n    }\n  }\n  return buf.slice(0, bufIdx)\n}\n\nInternalEncoderCesu8.prototype.end = function () {\n}\n\n// ------------------------------------------------------------------------------\n// CESU-8 decoder is not implemented in Node v4.0+\n\nfunction InternalDecoderCesu8 (options, codec) {\n  this.acc = 0\n  this.contBytes = 0\n  this.accBytes = 0\n  this.defaultCharUnicode = codec.defaultCharUnicode\n}\n\nInternalDecoderCesu8.prototype.write = function (buf) {\n  var acc = this.acc; var contBytes = this.contBytes; var accBytes = this.accBytes\n  var res = \"\"\n  for (var i = 0; i < buf.length; i++) {\n    var curByte = buf[i]\n    if ((curByte & 0xC0) !== 0x80) { // Leading byte\n      if (contBytes > 0) { // Previous code is invalid\n        res += this.defaultCharUnicode\n        contBytes = 0\n      }\n\n      if (curByte < 0x80) { // Single-byte code\n        res += String.fromCharCode(curByte)\n      } else if (curByte < 0xE0) { // Two-byte code\n        acc = curByte & 0x1F\n        contBytes = 1; accBytes = 1\n      } else if (curByte < 0xF0) { // Three-byte code\n        acc = curByte & 0x0F\n        contBytes = 2; accBytes = 1\n      } else { // Four or more are not supported for CESU-8.\n        res += this.defaultCharUnicode\n      }\n    } else { // Continuation byte\n      if (contBytes > 0) { // We're waiting for it.\n        acc = (acc << 6) | (curByte & 0x3f)\n        contBytes--; accBytes++\n        if (contBytes === 0) {\n          // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80)\n          if (accBytes === 2 && acc < 0x80 && acc > 0) {\n            res += this.defaultCharUnicode\n          } else if (accBytes === 3 && acc < 0x800) {\n            res += this.defaultCharUnicode\n          } else {\n            // Actually add character.\n            res += String.fromCharCode(acc)\n          }\n        }\n      } else { // Unexpected continuation byte\n        res += this.defaultCharUnicode\n      }\n    }\n  }\n  this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes\n  return res\n}\n\nInternalDecoderCesu8.prototype.end = function () {\n  var res = 0\n  if (this.contBytes > 0) { res += this.defaultCharUnicode }\n  return res\n}\n\n// ------------------------------------------------------------------------------\n// check the chunk boundaries for surrogate pair\n\nfunction InternalEncoderUtf8 (options, codec) {\n  this.highSurrogate = \"\"\n}\n\nInternalEncoderUtf8.prototype.write = function (str) {\n  if (this.highSurrogate) {\n    str = this.highSurrogate + str\n    this.highSurrogate = \"\"\n  }\n\n  if (str.length > 0) {\n    var charCode = str.charCodeAt(str.length - 1)\n    if (charCode >= 0xd800 && charCode < 0xdc00) {\n      this.highSurrogate = str[str.length - 1]\n      str = str.slice(0, str.length - 1)\n    }\n  }\n\n  return Buffer.from(str, this.enc)\n}\n\nInternalEncoderUtf8.prototype.end = function () {\n  if (this.highSurrogate) {\n    var str = this.highSurrogate\n    this.highSurrogate = \"\"\n    return Buffer.from(str, this.enc)\n  }\n}\n", "\"use strict\"\n\nvar Buffer = require(\"safer-buffer\").Buffer\n\n// == UTF32-LE/BE codec. ==========================================================\n\nexports._utf32 = Utf32Codec\n\nfunction Utf32Codec (codecOptions, iconv) {\n  this.iconv = iconv\n  this.bomAware = true\n  this.isLE = codecOptions.isLE\n}\n\nexports.utf32le = { type: \"_utf32\", isLE: true }\nexports.utf32be = { type: \"_utf32\", isLE: false }\n\n// Aliases\nexports.ucs4le = \"utf32le\"\nexports.ucs4be = \"utf32be\"\n\nUtf32Codec.prototype.encoder = Utf32Encoder\nUtf32Codec.prototype.decoder = Utf32Decoder\n\n// -- Encoding\n\nfunction Utf32Encoder (options, codec) {\n  this.isLE = codec.isLE\n  this.highSurrogate = 0\n}\n\nUtf32Encoder.prototype.write = function (str) {\n  var src = Buffer.from(str, \"ucs2\")\n  var dst = Buffer.alloc(src.length * 2)\n  var write32 = this.isLE ? dst.writeUInt32LE : dst.writeUInt32BE\n  var offset = 0\n\n  for (var i = 0; i < src.length; i += 2) {\n    var code = src.readUInt16LE(i)\n    var isHighSurrogate = (code >= 0xD800 && code < 0xDC00)\n    var isLowSurrogate = (code >= 0xDC00 && code < 0xE000)\n\n    if (this.highSurrogate) {\n      if (isHighSurrogate || !isLowSurrogate) {\n        // There shouldn't be two high surrogates in a row, nor a high surrogate which isn't followed by a low\n        // surrogate. If this happens, keep the pending high surrogate as a stand-alone semi-invalid character\n        // (technically wrong, but expected by some applications, like Windows file names).\n        write32.call(dst, this.highSurrogate, offset)\n        offset += 4\n      } else {\n        // Create 32-bit value from high and low surrogates;\n        var codepoint = (((this.highSurrogate - 0xD800) << 10) | (code - 0xDC00)) + 0x10000\n\n        write32.call(dst, codepoint, offset)\n        offset += 4\n        this.highSurrogate = 0\n\n        continue\n      }\n    }\n\n    if (isHighSurrogate) { this.highSurrogate = code } else {\n      // Even if the current character is a low surrogate, with no previous high surrogate, we'll\n      // encode it as a semi-invalid stand-alone character for the same reasons expressed above for\n      // unpaired high surrogates.\n      write32.call(dst, code, offset)\n      offset += 4\n      this.highSurrogate = 0\n    }\n  }\n\n  if (offset < dst.length) { dst = dst.slice(0, offset) }\n\n  return dst\n}\n\nUtf32Encoder.prototype.end = function () {\n  // Treat any leftover high surrogate as a semi-valid independent character.\n  if (!this.highSurrogate) { return }\n\n  var buf = Buffer.alloc(4)\n\n  if (this.isLE) { buf.writeUInt32LE(this.highSurrogate, 0) } else { buf.writeUInt32BE(this.highSurrogate, 0) }\n\n  this.highSurrogate = 0\n\n  return buf\n}\n\n// -- Decoding\n\nfunction Utf32Decoder (options, codec) {\n  this.isLE = codec.isLE\n  this.badChar = codec.iconv.defaultCharUnicode.charCodeAt(0)\n  this.overflow = []\n}\n\nUtf32Decoder.prototype.write = function (src) {\n  if (src.length === 0) { return \"\" }\n\n  var i = 0\n  var codepoint = 0\n  var dst = Buffer.alloc(src.length + 4)\n  var offset = 0\n  var isLE = this.isLE\n  var overflow = this.overflow\n  var badChar = this.badChar\n\n  if (overflow.length > 0) {\n    for (; i < src.length && overflow.length < 4; i++) { overflow.push(src[i]) }\n\n    if (overflow.length === 4) {\n      // NOTE: codepoint is a signed int32 and can be negative.\n      // NOTE: We copied this block from below to help V8 optimize it (it works with array, not buffer).\n      if (isLE) {\n        codepoint = overflow[i] | (overflow[i + 1] << 8) | (overflow[i + 2] << 16) | (overflow[i + 3] << 24)\n      } else {\n        codepoint = overflow[i + 3] | (overflow[i + 2] << 8) | (overflow[i + 1] << 16) | (overflow[i] << 24)\n      }\n      overflow.length = 0\n\n      offset = _writeCodepoint(dst, offset, codepoint, badChar)\n    }\n  }\n\n  // Main loop. Should be as optimized as possible.\n  for (; i < src.length - 3; i += 4) {\n    // NOTE: codepoint is a signed int32 and can be negative.\n    if (isLE) {\n      codepoint = src[i] | (src[i + 1] << 8) | (src[i + 2] << 16) | (src[i + 3] << 24)\n    } else {\n      codepoint = src[i + 3] | (src[i + 2] << 8) | (src[i + 1] << 16) | (src[i] << 24)\n    }\n    offset = _writeCodepoint(dst, offset, codepoint, badChar)\n  }\n\n  // Keep overflowing bytes.\n  for (; i < src.length; i++) {\n    overflow.push(src[i])\n  }\n\n  return dst.slice(0, offset).toString(\"ucs2\")\n}\n\nfunction _writeCodepoint (dst, offset, codepoint, badChar) {\n  // NOTE: codepoint is signed int32 and can be negative. We keep it that way to help V8 with optimizations.\n  if (codepoint < 0 || codepoint > 0x10FFFF) {\n    // Not a valid Unicode codepoint\n    codepoint = badChar\n  }\n\n  // Ephemeral Planes: Write high surrogate.\n  if (codepoint >= 0x10000) {\n    codepoint -= 0x10000\n\n    var high = 0xD800 | (codepoint >> 10)\n    dst[offset++] = high & 0xff\n    dst[offset++] = high >> 8\n\n    // Low surrogate is written below.\n    var codepoint = 0xDC00 | (codepoint & 0x3FF)\n  }\n\n  // Write BMP char or low surrogate.\n  dst[offset++] = codepoint & 0xff\n  dst[offset++] = codepoint >> 8\n\n  return offset\n};\n\nUtf32Decoder.prototype.end = function () {\n  this.overflow.length = 0\n}\n\n// == UTF-32 Auto codec =============================================================\n// Decoder chooses automatically from UTF-32LE and UTF-32BE using BOM and space-based heuristic.\n// Defaults to UTF-32LE. http://en.wikipedia.org/wiki/UTF-32\n// Encoder/decoder default can be changed: iconv.decode(buf, 'utf32', {defaultEncoding: 'utf-32be'});\n\n// Encoder prepends BOM (which can be overridden with (addBOM: false}).\n\nexports.utf32 = Utf32AutoCodec\nexports.ucs4 = \"utf32\"\n\nfunction Utf32AutoCodec (options, iconv) {\n  this.iconv = iconv\n}\n\nUtf32AutoCodec.prototype.encoder = Utf32AutoEncoder\nUtf32AutoCodec.prototype.decoder = Utf32AutoDecoder\n\n// -- Encoding\n\nfunction Utf32AutoEncoder (options, codec) {\n  options = options || {}\n\n  if (options.addBOM === undefined) {\n    options.addBOM = true\n  }\n\n  this.encoder = codec.iconv.getEncoder(options.defaultEncoding || \"utf-32le\", options)\n}\n\nUtf32AutoEncoder.prototype.write = function (str) {\n  return this.encoder.write(str)\n}\n\nUtf32AutoEncoder.prototype.end = function () {\n  return this.encoder.end()\n}\n\n// -- Decoding\n\nfunction Utf32AutoDecoder (options, codec) {\n  this.decoder = null\n  this.initialBufs = []\n  this.initialBufsLen = 0\n  this.options = options || {}\n  this.iconv = codec.iconv\n}\n\nUtf32AutoDecoder.prototype.write = function (buf) {\n  if (!this.decoder) {\n    // Codec is not chosen yet. Accumulate initial bytes.\n    this.initialBufs.push(buf)\n    this.initialBufsLen += buf.length\n\n    if (this.initialBufsLen < 32) // We need more bytes to use space heuristic (see below)\n    { return \"\" }\n\n    // We have enough bytes -> detect endianness.\n    var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding)\n    this.decoder = this.iconv.getDecoder(encoding, this.options)\n\n    var resStr = \"\"\n    for (var i = 0; i < this.initialBufs.length; i++) { resStr += this.decoder.write(this.initialBufs[i]) }\n\n    this.initialBufs.length = this.initialBufsLen = 0\n    return resStr\n  }\n\n  return this.decoder.write(buf)\n}\n\nUtf32AutoDecoder.prototype.end = function () {\n  if (!this.decoder) {\n    var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding)\n    this.decoder = this.iconv.getDecoder(encoding, this.options)\n\n    var resStr = \"\"\n    for (var i = 0; i < this.initialBufs.length; i++) { resStr += this.decoder.write(this.initialBufs[i]) }\n\n    var trail = this.decoder.end()\n    if (trail) { resStr += trail }\n\n    this.initialBufs.length = this.initialBufsLen = 0\n    return resStr\n  }\n\n  return this.decoder.end()\n}\n\nfunction detectEncoding (bufs, defaultEncoding) {\n  var b = []\n  var charsProcessed = 0\n  var invalidLE = 0; var invalidBE = 0   // Number of invalid chars when decoded as LE or BE.\n  var bmpCharsLE = 0; var bmpCharsBE = 0 // Number of BMP chars when decoded as LE or BE.\n\n  outerLoop:\n  for (var i = 0; i < bufs.length; i++) {\n    var buf = bufs[i]\n    for (var j = 0; j < buf.length; j++) {\n      b.push(buf[j])\n      if (b.length === 4) {\n        if (charsProcessed === 0) {\n          // Check BOM first.\n          if (b[0] === 0xFF && b[1] === 0xFE && b[2] === 0 && b[3] === 0) {\n            return \"utf-32le\"\n          }\n          if (b[0] === 0 && b[1] === 0 && b[2] === 0xFE && b[3] === 0xFF) {\n            return \"utf-32be\"\n          }\n        }\n\n        if (b[0] !== 0 || b[1] > 0x10) invalidBE++\n        if (b[3] !== 0 || b[2] > 0x10) invalidLE++\n\n        if (b[0] === 0 && b[1] === 0 && (b[2] !== 0 || b[3] !== 0)) bmpCharsBE++\n        if ((b[0] !== 0 || b[1] !== 0) && b[2] === 0 && b[3] === 0) bmpCharsLE++\n\n        b.length = 0\n        charsProcessed++\n\n        if (charsProcessed >= 100) {\n          break outerLoop\n        }\n      }\n    }\n  }\n\n  // Make decisions.\n  if (bmpCharsBE - invalidBE > bmpCharsLE - invalidLE) return \"utf-32be\"\n  if (bmpCharsBE - invalidBE < bmpCharsLE - invalidLE) return \"utf-32le\"\n\n  // Couldn't decide (likely all zeros or not enough data).\n  return defaultEncoding || \"utf-32le\"\n}\n", "\"use strict\"\nvar Buffer = require(\"safer-buffer\").Buffer\n\n// Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js\n\n// == UTF16-BE codec. ==========================================================\n\nexports.utf16be = Utf16BECodec\nfunction Utf16BECodec () {\n}\n\nUtf16BECodec.prototype.encoder = Utf16BEEncoder\nUtf16BECodec.prototype.decoder = Utf16BEDecoder\nUtf16BECodec.prototype.bomAware = true\n\n// -- Encoding\n\nfunction Utf16BEEncoder () {\n}\n\nUtf16BEEncoder.prototype.write = function (str) {\n  var buf = Buffer.from(str, \"ucs2\")\n  for (var i = 0; i < buf.length; i += 2) {\n    var tmp = buf[i]; buf[i] = buf[i + 1]; buf[i + 1] = tmp\n  }\n  return buf\n}\n\nUtf16BEEncoder.prototype.end = function () {\n}\n\n// -- Decoding\n\nfunction Utf16BEDecoder () {\n  this.overflowByte = -1\n}\n\nUtf16BEDecoder.prototype.write = function (buf) {\n  if (buf.length == 0) { return \"\" }\n\n  var buf2 = Buffer.alloc(buf.length + 1)\n  var i = 0; var j = 0\n\n  if (this.overflowByte !== -1) {\n    buf2[0] = buf[0]\n    buf2[1] = this.overflowByte\n    i = 1; j = 2\n  }\n\n  for (; i < buf.length - 1; i += 2, j += 2) {\n    buf2[j] = buf[i + 1]\n    buf2[j + 1] = buf[i]\n  }\n\n  this.overflowByte = (i == buf.length - 1) ? buf[buf.length - 1] : -1\n\n  return buf2.slice(0, j).toString(\"ucs2\")\n}\n\nUtf16BEDecoder.prototype.end = function () {\n  this.overflowByte = -1\n}\n\n// == UTF-16 codec =============================================================\n// Decoder chooses automatically from UTF-16LE and UTF-16BE using BOM and space-based heuristic.\n// Defaults to UTF-16LE, as it's prevalent and default in Node.\n// http://en.wikipedia.org/wiki/UTF-16 and http://encoding.spec.whatwg.org/#utf-16le\n// Decoder default can be changed: iconv.decode(buf, 'utf16', {defaultEncoding: 'utf-16be'});\n\n// Encoder uses UTF-16LE and prepends BOM (which can be overridden with addBOM: false).\n\nexports.utf16 = Utf16Codec\nfunction Utf16Codec (codecOptions, iconv) {\n  this.iconv = iconv\n}\n\nUtf16Codec.prototype.encoder = Utf16Encoder\nUtf16Codec.prototype.decoder = Utf16Decoder\n\n// -- Encoding (pass-through)\n\nfunction Utf16Encoder (options, codec) {\n  options = options || {}\n  if (options.addBOM === undefined) { options.addBOM = true }\n  this.encoder = codec.iconv.getEncoder(\"utf-16le\", options)\n}\n\nUtf16Encoder.prototype.write = function (str) {\n  return this.encoder.write(str)\n}\n\nUtf16Encoder.prototype.end = function () {\n  return this.encoder.end()\n}\n\n// -- Decoding\n\nfunction Utf16Decoder (options, codec) {\n  this.decoder = null\n  this.initialBufs = []\n  this.initialBufsLen = 0\n\n  this.options = options || {}\n  this.iconv = codec.iconv\n}\n\nUtf16Decoder.prototype.write = function (buf) {\n  if (!this.decoder) {\n    // Codec is not chosen yet. Accumulate initial bytes.\n    this.initialBufs.push(buf)\n    this.initialBufsLen += buf.length\n\n    if (this.initialBufsLen < 16) // We need more bytes to use space heuristic (see below)\n    { return \"\" }\n\n    // We have enough bytes -> detect endianness.\n    var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding)\n    this.decoder = this.iconv.getDecoder(encoding, this.options)\n\n    var resStr = \"\"\n    for (var i = 0; i < this.initialBufs.length; i++) { resStr += this.decoder.write(this.initialBufs[i]) }\n\n    this.initialBufs.length = this.initialBufsLen = 0\n    return resStr\n  }\n\n  return this.decoder.write(buf)\n}\n\nUtf16Decoder.prototype.end = function () {\n  if (!this.decoder) {\n    var encoding = detectEncoding(this.initialBufs, this.options.defaultEncoding)\n    this.decoder = this.iconv.getDecoder(encoding, this.options)\n\n    var resStr = \"\"\n    for (var i = 0; i < this.initialBufs.length; i++) { resStr += this.decoder.write(this.initialBufs[i]) }\n\n    var trail = this.decoder.end()\n    if (trail) { resStr += trail }\n\n    this.initialBufs.length = this.initialBufsLen = 0\n    return resStr\n  }\n  return this.decoder.end()\n}\n\nfunction detectEncoding (bufs, defaultEncoding) {\n  var b = []\n  var charsProcessed = 0\n  // Number of ASCII chars when decoded as LE or BE.\n  var asciiCharsLE = 0\n  var asciiCharsBE = 0\n\n  outerLoop:\n  for (var i = 0; i < bufs.length; i++) {\n    var buf = bufs[i]\n    for (var j = 0; j < buf.length; j++) {\n      b.push(buf[j])\n      if (b.length === 2) {\n        if (charsProcessed === 0) {\n          // Check BOM first.\n          if (b[0] === 0xFF && b[1] === 0xFE) return \"utf-16le\"\n          if (b[0] === 0xFE && b[1] === 0xFF) return \"utf-16be\"\n        }\n\n        if (b[0] === 0 && b[1] !== 0) asciiCharsBE++\n        if (b[0] !== 0 && b[1] === 0) asciiCharsLE++\n\n        b.length = 0\n        charsProcessed++\n\n        if (charsProcessed >= 100) {\n          break outerLoop\n        }\n      }\n    }\n  }\n\n  // Make decisions.\n  // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon.\n  // So, we count ASCII as if it was LE or BE, and decide from that.\n  if (asciiCharsBE > asciiCharsLE) return \"utf-16be\"\n  if (asciiCharsBE < asciiCharsLE) return \"utf-16le\"\n\n  // Couldn't decide (likely all zeros or not enough data).\n  return defaultEncoding || \"utf-16le\"\n}\n", "\"use strict\"\nvar Buffer = require(\"safer-buffer\").Buffer\n\n// UTF-7 codec, according to https://tools.ietf.org/html/rfc2152\n// See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3\n\nexports.utf7 = Utf7Codec\nexports.unicode11utf7 = \"utf7\" // Alias UNICODE-1-1-UTF-7\nfunction Utf7Codec (codecOptions, iconv) {\n  this.iconv = iconv\n};\n\nUtf7Codec.prototype.encoder = Utf7Encoder\nUtf7Codec.prototype.decoder = Utf7Decoder\nUtf7Codec.prototype.bomAware = true\n\n// -- Encoding\n\n// Why scape ()?./?\n// eslint-disable-next-line no-useless-escape\nvar nonDirectChars = /[^A-Za-z0-9'\\(\\),-\\.\\/:\\? \\n\\r\\t]+/g\n\nfunction Utf7Encoder (options, codec) {\n  this.iconv = codec.iconv\n}\n\nUtf7Encoder.prototype.write = function (str) {\n  // Naive implementation.\n  // Non-direct chars are encoded as \"+<base64>-\"; single \"+\" char is encoded as \"+-\".\n  return Buffer.from(str.replace(nonDirectChars, function (chunk) {\n    return \"+\" + (chunk === \"+\"\n      ? \"\"\n      : this.iconv.encode(chunk, \"utf16-be\").toString(\"base64\").replace(/=+$/, \"\")) +\n            \"-\"\n  }.bind(this)))\n}\n\nUtf7Encoder.prototype.end = function () {\n}\n\n// -- Decoding\n\nfunction Utf7Decoder (options, codec) {\n  this.iconv = codec.iconv\n  this.inBase64 = false\n  this.base64Accum = \"\"\n}\n\n// Why scape /?\n// eslint-disable-next-line no-useless-escape\nvar base64Regex = /[A-Za-z0-9\\/+]/\nvar base64Chars = []\nfor (var i = 0; i < 256; i++) { base64Chars[i] = base64Regex.test(String.fromCharCode(i)) }\n\nvar plusChar = \"+\".charCodeAt(0)\nvar minusChar = \"-\".charCodeAt(0)\nvar andChar = \"&\".charCodeAt(0)\n\nUtf7Decoder.prototype.write = function (buf) {\n  var res = \"\"; var lastI = 0\n  var inBase64 = this.inBase64\n  var base64Accum = this.base64Accum\n\n  // The decoder is more involved as we must handle chunks in stream.\n\n  for (var i = 0; i < buf.length; i++) {\n    if (!inBase64) { // We're in direct mode.\n      // Write direct chars until '+'\n      if (buf[i] == plusChar) {\n        res += this.iconv.decode(buf.slice(lastI, i), \"ascii\") // Write direct chars.\n        lastI = i + 1\n        inBase64 = true\n      }\n    } else { // We decode base64.\n      if (!base64Chars[buf[i]]) { // Base64 ended.\n        if (i == lastI && buf[i] == minusChar) { // \"+-\" -> \"+\"\n          res += \"+\"\n        } else {\n          var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), \"ascii\")\n          res += this.iconv.decode(Buffer.from(b64str, \"base64\"), \"utf16-be\")\n        }\n\n        if (buf[i] != minusChar) // Minus is absorbed after base64.\n        { i-- }\n\n        lastI = i + 1\n        inBase64 = false\n        base64Accum = \"\"\n      }\n    }\n  }\n\n  if (!inBase64) {\n    res += this.iconv.decode(buf.slice(lastI), \"ascii\") // Write direct chars.\n  } else {\n    var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), \"ascii\")\n\n    var canBeDecoded = b64str.length - (b64str.length % 8) // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n    base64Accum = b64str.slice(canBeDecoded) // The rest will be decoded in future.\n    b64str = b64str.slice(0, canBeDecoded)\n\n    res += this.iconv.decode(Buffer.from(b64str, \"base64\"), \"utf16-be\")\n  }\n\n  this.inBase64 = inBase64\n  this.base64Accum = base64Accum\n\n  return res\n}\n\nUtf7Decoder.prototype.end = function () {\n  var res = \"\"\n  if (this.inBase64 && this.base64Accum.length > 0) { res = this.iconv.decode(Buffer.from(this.base64Accum, \"base64\"), \"utf16-be\") }\n\n  this.inBase64 = false\n  this.base64Accum = \"\"\n  return res\n}\n\n// UTF-7-IMAP codec.\n// RFC3501 Sec. 5.1.3 Modified UTF-7 (http://tools.ietf.org/html/rfc3501#section-5.1.3)\n// Differences:\n//  * Base64 part is started by \"&\" instead of \"+\"\n//  * Direct characters are 0x20-0x7E, except \"&\" (0x26)\n//  * In Base64, \",\" is used instead of \"/\"\n//  * Base64 must not be used to represent direct characters.\n//  * No implicit shift back from Base64 (should always end with '-')\n//  * String must end in non-shifted position.\n//  * \"-&\" while in base64 is not allowed.\n\nexports.utf7imap = Utf7IMAPCodec\nfunction Utf7IMAPCodec (codecOptions, iconv) {\n  this.iconv = iconv\n};\n\nUtf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder\nUtf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder\nUtf7IMAPCodec.prototype.bomAware = true\n\n// -- Encoding\n\nfunction Utf7IMAPEncoder (options, codec) {\n  this.iconv = codec.iconv\n  this.inBase64 = false\n  this.base64Accum = Buffer.alloc(6)\n  this.base64AccumIdx = 0\n}\n\nUtf7IMAPEncoder.prototype.write = function (str) {\n  var inBase64 = this.inBase64\n  var base64Accum = this.base64Accum\n  var base64AccumIdx = this.base64AccumIdx\n  var buf = Buffer.alloc(str.length * 5 + 10); var bufIdx = 0\n\n  for (var i = 0; i < str.length; i++) {\n    var uChar = str.charCodeAt(i)\n    if (uChar >= 0x20 && uChar <= 0x7E) { // Direct character or '&'.\n      if (inBase64) {\n        if (base64AccumIdx > 0) {\n          bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString(\"base64\").replace(/\\//g, \",\").replace(/=+$/, \"\"), bufIdx)\n          base64AccumIdx = 0\n        }\n\n        buf[bufIdx++] = minusChar // Write '-', then go to direct mode.\n        inBase64 = false\n      }\n\n      if (!inBase64) {\n        buf[bufIdx++] = uChar // Write direct character\n\n        if (uChar === andChar)  // Ampersand -> '&-'\n        { buf[bufIdx++] = minusChar }\n      }\n    } else { // Non-direct character\n      if (!inBase64) {\n        buf[bufIdx++] = andChar // Write '&', then go to base64 mode.\n        inBase64 = true\n      }\n      if (inBase64) {\n        base64Accum[base64AccumIdx++] = uChar >> 8\n        base64Accum[base64AccumIdx++] = uChar & 0xFF\n\n        if (base64AccumIdx == base64Accum.length) {\n          bufIdx += buf.write(base64Accum.toString(\"base64\").replace(/\\//g, \",\"), bufIdx)\n          base64AccumIdx = 0\n        }\n      }\n    }\n  }\n\n  this.inBase64 = inBase64\n  this.base64AccumIdx = base64AccumIdx\n\n  return buf.slice(0, bufIdx)\n}\n\nUtf7IMAPEncoder.prototype.end = function () {\n  var buf = Buffer.alloc(10); var bufIdx = 0\n  if (this.inBase64) {\n    if (this.base64AccumIdx > 0) {\n      bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString(\"base64\").replace(/\\//g, \",\").replace(/=+$/, \"\"), bufIdx)\n      this.base64AccumIdx = 0\n    }\n\n    buf[bufIdx++] = minusChar // Write '-', then go to direct mode.\n    this.inBase64 = false\n  }\n\n  return buf.slice(0, bufIdx)\n}\n\n// -- Decoding\n\nfunction Utf7IMAPDecoder (options, codec) {\n  this.iconv = codec.iconv\n  this.inBase64 = false\n  this.base64Accum = \"\"\n}\n\nvar base64IMAPChars = base64Chars.slice()\nbase64IMAPChars[\",\".charCodeAt(0)] = true\n\nUtf7IMAPDecoder.prototype.write = function (buf) {\n  var res = \"\"; var lastI = 0\n  var inBase64 = this.inBase64\n  var base64Accum = this.base64Accum\n\n  // The decoder is more involved as we must handle chunks in stream.\n  // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end).\n\n  for (var i = 0; i < buf.length; i++) {\n    if (!inBase64) { // We're in direct mode.\n      // Write direct chars until '&'\n      if (buf[i] == andChar) {\n        res += this.iconv.decode(buf.slice(lastI, i), \"ascii\") // Write direct chars.\n        lastI = i + 1\n        inBase64 = true\n      }\n    } else { // We decode base64.\n      if (!base64IMAPChars[buf[i]]) { // Base64 ended.\n        if (i == lastI && buf[i] == minusChar) { // \"&-\" -> \"&\"\n          res += \"&\"\n        } else {\n          var b64str = base64Accum + this.iconv.decode(buf.slice(lastI, i), \"ascii\").replace(/,/g, \"/\")\n          res += this.iconv.decode(Buffer.from(b64str, \"base64\"), \"utf16-be\")\n        }\n\n        if (buf[i] != minusChar) // Minus may be absorbed after base64.\n        { i-- }\n\n        lastI = i + 1\n        inBase64 = false\n        base64Accum = \"\"\n      }\n    }\n  }\n\n  if (!inBase64) {\n    res += this.iconv.decode(buf.slice(lastI), \"ascii\") // Write direct chars.\n  } else {\n    var b64str = base64Accum + this.iconv.decode(buf.slice(lastI), \"ascii\").replace(/,/g, \"/\")\n\n    var canBeDecoded = b64str.length - (b64str.length % 8) // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n    base64Accum = b64str.slice(canBeDecoded) // The rest will be decoded in future.\n    b64str = b64str.slice(0, canBeDecoded)\n\n    res += this.iconv.decode(Buffer.from(b64str, \"base64\"), \"utf16-be\")\n  }\n\n  this.inBase64 = inBase64\n  this.base64Accum = base64Accum\n\n  return res\n}\n\nUtf7IMAPDecoder.prototype.end = function () {\n  var res = \"\"\n  if (this.inBase64 && this.base64Accum.length > 0) { res = this.iconv.decode(Buffer.from(this.base64Accum, \"base64\"), \"utf16-be\") }\n\n  this.inBase64 = false\n  this.base64Accum = \"\"\n  return res\n}\n", "\"use strict\"\nvar Buffer = require(\"safer-buffer\").Buffer\n\n// Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that\n// correspond to encoded bytes (if 128 - then lower half is ASCII).\n\nexports._sbcs = SBCSCodec\nfunction SBCSCodec (codecOptions, iconv) {\n  if (!codecOptions) {\n    throw new Error(\"SBCS codec is called without the data.\")\n  }\n\n  // Prepare char buffer for decoding.\n  if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256)) {\n    throw new Error(\"Encoding '\" + codecOptions.type + \"' has incorrect 'chars' (must be of len 128 or 256)\")\n  }\n\n  if (codecOptions.chars.length === 128) {\n    var asciiString = \"\"\n    for (var i = 0; i < 128; i++) {\n      asciiString += String.fromCharCode(i)\n    }\n    codecOptions.chars = asciiString + codecOptions.chars\n  }\n\n  this.decodeBuf = Buffer.from(codecOptions.chars, \"ucs2\")\n\n  // Encoding buffer.\n  var encodeBuf = Buffer.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0))\n\n  for (var i = 0; i < codecOptions.chars.length; i++) {\n    encodeBuf[codecOptions.chars.charCodeAt(i)] = i\n  }\n\n  this.encodeBuf = encodeBuf\n}\n\nSBCSCodec.prototype.encoder = SBCSEncoder\nSBCSCodec.prototype.decoder = SBCSDecoder\n\nfunction SBCSEncoder (options, codec) {\n  this.encodeBuf = codec.encodeBuf\n}\n\nSBCSEncoder.prototype.write = function (str) {\n  var buf = Buffer.alloc(str.length)\n  for (var i = 0; i < str.length; i++) {\n    buf[i] = this.encodeBuf[str.charCodeAt(i)]\n  }\n\n  return buf\n}\n\nSBCSEncoder.prototype.end = function () {\n}\n\nfunction SBCSDecoder (options, codec) {\n  this.decodeBuf = codec.decodeBuf\n}\n\nSBCSDecoder.prototype.write = function (buf) {\n  // Strings are immutable in JS -> we use ucs2 buffer to speed up computations.\n  var decodeBuf = this.decodeBuf\n  var newBuf = Buffer.alloc(buf.length * 2)\n  var idx1 = 0; var idx2 = 0\n  for (var i = 0; i < buf.length; i++) {\n    idx1 = buf[i] * 2; idx2 = i * 2\n    newBuf[idx2] = decodeBuf[idx1]\n    newBuf[idx2 + 1] = decodeBuf[idx1 + 1]\n  }\n  return newBuf.toString(\"ucs2\")\n}\n\nSBCSDecoder.prototype.end = function () {\n}\n", "\"use strict\"\n\n// Manually added data to be used by sbcs codec in addition to generated one.\n\nmodule.exports = {\n  // Not supported by iconv, not sure why.\n  10029: \"maccenteuro\",\n  maccenteuro: {\n    type: \"_sbcs\",\n    chars: \"\u00C4\u0100\u0101\u00C9\u0104\u00D6\u00DC\u00E1\u0105\u010C\u00E4\u010D\u0106\u0107\u00E9\u0179\u017A\u010E\u00ED\u010F\u0112\u0113\u0116\u00F3\u0117\u00F4\u00F6\u00F5\u00FA\u011A\u011B\u00FC\u2020\u00B0\u0118\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u0119\u00A8\u2260\u0123\u012E\u012F\u012A\u2264\u2265\u012B\u0136\u2202\u2211\u0142\u013B\u013C\u013D\u013E\u0139\u013A\u0145\u0146\u0143\u00AC\u221A\u0144\u0147\u2206\u00AB\u00BB\u2026\u00A0\u0148\u0150\u00D5\u0151\u014C\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u014D\u0154\u0155\u0158\u2039\u203A\u0159\u0156\u0157\u0160\u201A\u201E\u0161\u015A\u015B\u00C1\u0164\u0165\u00CD\u017D\u017E\u016A\u00D3\u00D4\u016B\u016E\u00DA\u016F\u0170\u0171\u0172\u0173\u00DD\u00FD\u0137\u017B\u0141\u017C\u0122\u02C7\"\n  },\n\n  808: \"cp808\",\n  ibm808: \"cp808\",\n  cp808: {\n    type: \"_sbcs\",\n    chars: \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\u00B0\u2219\u00B7\u221A\u2116\u20AC\u25A0\u00A0\"\n  },\n\n  mik: {\n    type: \"_sbcs\",\n    chars: \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2514\u2534\u252C\u251C\u2500\u253C\u2563\u2551\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2510\u2591\u2592\u2593\u2502\u2524\u2116\u00A7\u2557\u255D\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n  },\n\n  cp720: {\n    type: \"_sbcs\",\n    chars: \"\\x80\\x81\u00E9\u00E2\\x84\u00E0\\x86\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\\x8d\\x8e\\x8f\\x90\\u0651\\u0652\u00F4\u00A4\u0640\u00FB\u00F9\u0621\u0622\u0623\u0624\u00A3\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0636\u0637\u0638\u0639\u063A\u0641\u00B5\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u2261\\u064b\\u064c\\u064d\\u064e\\u064f\\u0650\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\\u00a0\"\n  },\n\n  // Aliases of generated encodings.\n  ascii8bit: \"ascii\",\n  usascii: \"ascii\",\n  ansix34: \"ascii\",\n  ansix341968: \"ascii\",\n  ansix341986: \"ascii\",\n  csascii: \"ascii\",\n  cp367: \"ascii\",\n  ibm367: \"ascii\",\n  isoir6: \"ascii\",\n  iso646us: \"ascii\",\n  iso646irv: \"ascii\",\n  us: \"ascii\",\n\n  latin1: \"iso88591\",\n  latin2: \"iso88592\",\n  latin3: \"iso88593\",\n  latin4: \"iso88594\",\n  latin5: \"iso88599\",\n  latin6: \"iso885910\",\n  latin7: \"iso885913\",\n  latin8: \"iso885914\",\n  latin9: \"iso885915\",\n  latin10: \"iso885916\",\n\n  csisolatin1: \"iso88591\",\n  csisolatin2: \"iso88592\",\n  csisolatin3: \"iso88593\",\n  csisolatin4: \"iso88594\",\n  csisolatincyrillic: \"iso88595\",\n  csisolatinarabic: \"iso88596\",\n  csisolatingreek: \"iso88597\",\n  csisolatinhebrew: \"iso88598\",\n  csisolatin5: \"iso88599\",\n  csisolatin6: \"iso885910\",\n\n  l1: \"iso88591\",\n  l2: \"iso88592\",\n  l3: \"iso88593\",\n  l4: \"iso88594\",\n  l5: \"iso88599\",\n  l6: \"iso885910\",\n  l7: \"iso885913\",\n  l8: \"iso885914\",\n  l9: \"iso885915\",\n  l10: \"iso885916\",\n\n  isoir14: \"iso646jp\",\n  isoir57: \"iso646cn\",\n  isoir100: \"iso88591\",\n  isoir101: \"iso88592\",\n  isoir109: \"iso88593\",\n  isoir110: \"iso88594\",\n  isoir144: \"iso88595\",\n  isoir127: \"iso88596\",\n  isoir126: \"iso88597\",\n  isoir138: \"iso88598\",\n  isoir148: \"iso88599\",\n  isoir157: \"iso885910\",\n  isoir166: \"tis620\",\n  isoir179: \"iso885913\",\n  isoir199: \"iso885914\",\n  isoir203: \"iso885915\",\n  isoir226: \"iso885916\",\n\n  cp819: \"iso88591\",\n  ibm819: \"iso88591\",\n\n  cyrillic: \"iso88595\",\n\n  arabic: \"iso88596\",\n  arabic8: \"iso88596\",\n  ecma114: \"iso88596\",\n  asmo708: \"iso88596\",\n\n  greek: \"iso88597\",\n  greek8: \"iso88597\",\n  ecma118: \"iso88597\",\n  elot928: \"iso88597\",\n\n  hebrew: \"iso88598\",\n  hebrew8: \"iso88598\",\n\n  turkish: \"iso88599\",\n  turkish8: \"iso88599\",\n\n  thai: \"iso885911\",\n  thai8: \"iso885911\",\n\n  celtic: \"iso885914\",\n  celtic8: \"iso885914\",\n  isoceltic: \"iso885914\",\n\n  tis6200: \"tis620\",\n  tis62025291: \"tis620\",\n  tis62025330: \"tis620\",\n\n  10000: \"macroman\",\n  10006: \"macgreek\",\n  10007: \"maccyrillic\",\n  10079: \"maciceland\",\n  10081: \"macturkish\",\n\n  cspc8codepage437: \"cp437\",\n  cspc775baltic: \"cp775\",\n  cspc850multilingual: \"cp850\",\n  cspcp852: \"cp852\",\n  cspc862latinhebrew: \"cp862\",\n  cpgr: \"cp869\",\n\n  msee: \"cp1250\",\n  mscyrl: \"cp1251\",\n  msansi: \"cp1252\",\n  msgreek: \"cp1253\",\n  msturk: \"cp1254\",\n  mshebr: \"cp1255\",\n  msarab: \"cp1256\",\n  winbaltrim: \"cp1257\",\n\n  cp20866: \"koi8r\",\n  20866: \"koi8r\",\n  ibm878: \"koi8r\",\n  cskoi8r: \"koi8r\",\n\n  cp21866: \"koi8u\",\n  21866: \"koi8u\",\n  ibm1168: \"koi8u\",\n\n  strk10482002: \"rk1048\",\n\n  tcvn5712: \"tcvn\",\n  tcvn57121: \"tcvn\",\n\n  gb198880: \"iso646cn\",\n  cn: \"iso646cn\",\n\n  csiso14jisc6220ro: \"iso646jp\",\n  jisc62201969ro: \"iso646jp\",\n  jp: \"iso646jp\",\n\n  cshproman8: \"hproman8\",\n  r8: \"hproman8\",\n  roman8: \"hproman8\",\n  xroman8: \"hproman8\",\n  ibm1051: \"hproman8\",\n\n  mac: \"macintosh\",\n  csmacintosh: \"macintosh\"\n}\n", "\"use strict\";\n\n// Generated data for sbcs codec. Don't edit manually. Regenerate using generation/gen-sbcs.js script.\nmodule.exports = {\n  \"437\": \"cp437\",\n  \"737\": \"cp737\",\n  \"775\": \"cp775\",\n  \"850\": \"cp850\",\n  \"852\": \"cp852\",\n  \"855\": \"cp855\",\n  \"856\": \"cp856\",\n  \"857\": \"cp857\",\n  \"858\": \"cp858\",\n  \"860\": \"cp860\",\n  \"861\": \"cp861\",\n  \"862\": \"cp862\",\n  \"863\": \"cp863\",\n  \"864\": \"cp864\",\n  \"865\": \"cp865\",\n  \"866\": \"cp866\",\n  \"869\": \"cp869\",\n  \"874\": \"windows874\",\n  \"922\": \"cp922\",\n  \"1046\": \"cp1046\",\n  \"1124\": \"cp1124\",\n  \"1125\": \"cp1125\",\n  \"1129\": \"cp1129\",\n  \"1133\": \"cp1133\",\n  \"1161\": \"cp1161\",\n  \"1162\": \"cp1162\",\n  \"1163\": \"cp1163\",\n  \"1250\": \"windows1250\",\n  \"1251\": \"windows1251\",\n  \"1252\": \"windows1252\",\n  \"1253\": \"windows1253\",\n  \"1254\": \"windows1254\",\n  \"1255\": \"windows1255\",\n  \"1256\": \"windows1256\",\n  \"1257\": \"windows1257\",\n  \"1258\": \"windows1258\",\n  \"28591\": \"iso88591\",\n  \"28592\": \"iso88592\",\n  \"28593\": \"iso88593\",\n  \"28594\": \"iso88594\",\n  \"28595\": \"iso88595\",\n  \"28596\": \"iso88596\",\n  \"28597\": \"iso88597\",\n  \"28598\": \"iso88598\",\n  \"28599\": \"iso88599\",\n  \"28600\": \"iso885910\",\n  \"28601\": \"iso885911\",\n  \"28603\": \"iso885913\",\n  \"28604\": \"iso885914\",\n  \"28605\": \"iso885915\",\n  \"28606\": \"iso885916\",\n  \"windows874\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\uFFFD\uFFFD\uFFFD\u2026\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"win874\": \"windows874\",\n  \"cp874\": \"windows874\",\n  \"windows1250\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\u0160\u2039\u015A\u0164\u017D\u0179\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0161\u203A\u015B\u0165\u017E\u017A\u00A0\u02C7\u02D8\u0141\u00A4\u0104\u00A6\u00A7\u00A8\u00A9\u015E\u00AB\u00AC\u00AD\u00AE\u017B\u00B0\u00B1\u02DB\u0142\u00B4\u00B5\u00B6\u00B7\u00B8\u0105\u015F\u00BB\u013D\u02DD\u013E\u017C\u0154\u00C1\u00C2\u0102\u00C4\u0139\u0106\u00C7\u010C\u00C9\u0118\u00CB\u011A\u00CD\u00CE\u010E\u0110\u0143\u0147\u00D3\u00D4\u0150\u00D6\u00D7\u0158\u016E\u00DA\u0170\u00DC\u00DD\u0162\u00DF\u0155\u00E1\u00E2\u0103\u00E4\u013A\u0107\u00E7\u010D\u00E9\u0119\u00EB\u011B\u00ED\u00EE\u010F\u0111\u0144\u0148\u00F3\u00F4\u0151\u00F6\u00F7\u0159\u016F\u00FA\u0171\u00FC\u00FD\u0163\u02D9\"\n  },\n  \"win1250\": \"windows1250\",\n  \"cp1250\": \"windows1250\",\n  \"windows1251\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u040C\u040B\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u045C\u045B\u045F\u00A0\u040E\u045E\u0408\u00A4\u0490\u00A6\u00A7\u0401\u00A9\u0404\u00AB\u00AC\u00AD\u00AE\u0407\u00B0\u00B1\u0406\u0456\u0491\u00B5\u00B6\u00B7\u0451\u2116\u0454\u00BB\u0458\u0405\u0455\u0457\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\"\n  },\n  \"win1251\": \"windows1251\",\n  \"cp1251\": \"windows1251\",\n  \"windows1252\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\u017D\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\u017E\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n  },\n  \"win1252\": \"windows1252\",\n  \"cp1252\": \"windows1252\",\n  \"windows1253\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\u00A0\u0385\u0386\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\uFFFD\u00AB\u00AC\u00AD\u00AE\u2015\u00B0\u00B1\u00B2\u00B3\u0384\u00B5\u00B6\u00B7\u0388\u0389\u038A\u00BB\u038C\u00BD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD\"\n  },\n  \"win1253\": \"windows1253\",\n  \"cp1253\": \"windows1253\",\n  \"windows1254\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\uFFFD\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u011E\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u0130\u015E\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u011F\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u0131\u015F\u00FF\"\n  },\n  \"win1254\": \"windows1254\",\n  \"cp1254\": \"windows1254\",\n  \"windows1255\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\u00A0\u00A1\u00A2\u00A3\u20AA\u00A5\u00A6\u00A7\u00A8\u00A9\u00D7\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00F7\u00BB\u00BC\u00BD\u00BE\u00BF\u05B0\u05B1\u05B2\u05B3\u05B4\u05B5\u05B6\u05B7\u05B8\u05B9\u05BA\u05BB\u05BC\u05BD\u05BE\u05BF\u05C0\u05C1\u05C2\u05C3\u05F0\u05F1\u05F2\u05F3\u05F4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD\"\n  },\n  \"win1255\": \"windows1255\",\n  \"cp1255\": \"windows1255\",\n  \"windows1256\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\u067E\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0679\u2039\u0152\u0686\u0698\u0688\u06AF\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u06A9\u2122\u0691\u203A\u0153\u200C\u200D\u06BA\u00A0\u060C\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u06BE\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u061B\u00BB\u00BC\u00BD\u00BE\u061F\u06C1\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u00D7\u0637\u0638\u0639\u063A\u0640\u0641\u0642\u0643\u00E0\u0644\u00E2\u0645\u0646\u0647\u0648\u00E7\u00E8\u00E9\u00EA\u00EB\u0649\u064A\u00EE\u00EF\u064B\u064C\u064D\u064E\u00F4\u064F\u0650\u00F7\u0651\u00F9\u0652\u00FB\u00FC\u200E\u200F\u06D2\"\n  },\n  \"win1256\": \"windows1256\",\n  \"cp1256\": \"windows1256\",\n  \"windows1257\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\u00A8\u02C7\u00B8\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\u00AF\u02DB\uFFFD\u00A0\uFFFD\u00A2\u00A3\u00A4\uFFFD\u00A6\u00A7\u00D8\u00A9\u0156\u00AB\u00AC\u00AD\u00AE\u00C6\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00F8\u00B9\u0157\u00BB\u00BC\u00BD\u00BE\u00E6\u0104\u012E\u0100\u0106\u00C4\u00C5\u0118\u0112\u010C\u00C9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\u00D3\u014C\u00D5\u00D6\u00D7\u0172\u0141\u015A\u016A\u00DC\u017B\u017D\u00DF\u0105\u012F\u0101\u0107\u00E4\u00E5\u0119\u0113\u010D\u00E9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\u00F3\u014D\u00F5\u00F6\u00F7\u0173\u0142\u015B\u016B\u00FC\u017C\u017E\u02D9\"\n  },\n  \"win1257\": \"windows1257\",\n  \"cp1257\": \"windows1257\",\n  \"windows1258\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\u0153\uFFFD\uFFFD\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u0102\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u0300\u00CD\u00CE\u00CF\u0110\u00D1\u0309\u00D3\u00D4\u01A0\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u01AF\u0303\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u0301\u00ED\u00EE\u00EF\u0111\u00F1\u0323\u00F3\u00F4\u01A1\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u01B0\u20AB\u00FF\"\n  },\n  \"win1258\": \"windows1258\",\n  \"cp1258\": \"windows1258\",\n  \"iso88591\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n  },\n  \"cp28591\": \"iso88591\",\n  \"iso88592\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u02D8\u0141\u00A4\u013D\u015A\u00A7\u00A8\u0160\u015E\u0164\u0179\u00AD\u017D\u017B\u00B0\u0105\u02DB\u0142\u00B4\u013E\u015B\u02C7\u00B8\u0161\u015F\u0165\u017A\u02DD\u017E\u017C\u0154\u00C1\u00C2\u0102\u00C4\u0139\u0106\u00C7\u010C\u00C9\u0118\u00CB\u011A\u00CD\u00CE\u010E\u0110\u0143\u0147\u00D3\u00D4\u0150\u00D6\u00D7\u0158\u016E\u00DA\u0170\u00DC\u00DD\u0162\u00DF\u0155\u00E1\u00E2\u0103\u00E4\u013A\u0107\u00E7\u010D\u00E9\u0119\u00EB\u011B\u00ED\u00EE\u010F\u0111\u0144\u0148\u00F3\u00F4\u0151\u00F6\u00F7\u0159\u016F\u00FA\u0171\u00FC\u00FD\u0163\u02D9\"\n  },\n  \"cp28592\": \"iso88592\",\n  \"iso88593\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0126\u02D8\u00A3\u00A4\uFFFD\u0124\u00A7\u00A8\u0130\u015E\u011E\u0134\u00AD\uFFFD\u017B\u00B0\u0127\u00B2\u00B3\u00B4\u00B5\u0125\u00B7\u00B8\u0131\u015F\u011F\u0135\u00BD\uFFFD\u017C\u00C0\u00C1\u00C2\uFFFD\u00C4\u010A\u0108\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\uFFFD\u00D1\u00D2\u00D3\u00D4\u0120\u00D6\u00D7\u011C\u00D9\u00DA\u00DB\u00DC\u016C\u015C\u00DF\u00E0\u00E1\u00E2\uFFFD\u00E4\u010B\u0109\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\uFFFD\u00F1\u00F2\u00F3\u00F4\u0121\u00F6\u00F7\u011D\u00F9\u00FA\u00FB\u00FC\u016D\u015D\u02D9\"\n  },\n  \"cp28593\": \"iso88593\",\n  \"iso88594\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u0138\u0156\u00A4\u0128\u013B\u00A7\u00A8\u0160\u0112\u0122\u0166\u00AD\u017D\u00AF\u00B0\u0105\u02DB\u0157\u00B4\u0129\u013C\u02C7\u00B8\u0161\u0113\u0123\u0167\u014A\u017E\u014B\u0100\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u012E\u010C\u00C9\u0118\u00CB\u0116\u00CD\u00CE\u012A\u0110\u0145\u014C\u0136\u00D4\u00D5\u00D6\u00D7\u00D8\u0172\u00DA\u00DB\u00DC\u0168\u016A\u00DF\u0101\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u012F\u010D\u00E9\u0119\u00EB\u0117\u00ED\u00EE\u012B\u0111\u0146\u014D\u0137\u00F4\u00F5\u00F6\u00F7\u00F8\u0173\u00FA\u00FB\u00FC\u0169\u016B\u02D9\"\n  },\n  \"cp28594\": \"iso88594\",\n  \"iso88595\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\u00AD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\u00A7\u045E\u045F\"\n  },\n  \"cp28595\": \"iso88595\",\n  \"iso88596\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\uFFFD\uFFFD\uFFFD\u00A4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u060C\u00AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u061B\uFFFD\uFFFD\uFFFD\u061F\uFFFD\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"cp28596\": \"iso88596\",\n  \"iso88597\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u2018\u2019\u00A3\u20AC\u20AF\u00A6\u00A7\u00A8\u00A9\u037A\u00AB\u00AC\u00AD\uFFFD\u2015\u00B0\u00B1\u00B2\u00B3\u0384\u0385\u0386\u00B7\u0388\u0389\u038A\u00BB\u038C\u00BD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD\"\n  },\n  \"cp28597\": \"iso88597\",\n  \"iso88598\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\uFFFD\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00D7\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00F7\u00BB\u00BC\u00BD\u00BE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2017\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD\"\n  },\n  \"cp28598\": \"iso88598\",\n  \"iso88599\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u011E\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u0130\u015E\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u011F\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u0131\u015F\u00FF\"\n  },\n  \"cp28599\": \"iso88599\",\n  \"iso885910\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u0112\u0122\u012A\u0128\u0136\u00A7\u013B\u0110\u0160\u0166\u017D\u00AD\u016A\u014A\u00B0\u0105\u0113\u0123\u012B\u0129\u0137\u00B7\u013C\u0111\u0161\u0167\u017E\u2015\u016B\u014B\u0100\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u012E\u010C\u00C9\u0118\u00CB\u0116\u00CD\u00CE\u00CF\u00D0\u0145\u014C\u00D3\u00D4\u00D5\u00D6\u0168\u00D8\u0172\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u0101\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u012F\u010D\u00E9\u0119\u00EB\u0117\u00ED\u00EE\u00EF\u00F0\u0146\u014D\u00F3\u00F4\u00F5\u00F6\u0169\u00F8\u0173\u00FA\u00FB\u00FC\u00FD\u00FE\u0138\"\n  },\n  \"cp28600\": \"iso885910\",\n  \"iso885911\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"cp28601\": \"iso885911\",\n  \"iso885913\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u201D\u00A2\u00A3\u00A4\u201E\u00A6\u00A7\u00D8\u00A9\u0156\u00AB\u00AC\u00AD\u00AE\u00C6\u00B0\u00B1\u00B2\u00B3\u201C\u00B5\u00B6\u00B7\u00F8\u00B9\u0157\u00BB\u00BC\u00BD\u00BE\u00E6\u0104\u012E\u0100\u0106\u00C4\u00C5\u0118\u0112\u010C\u00C9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\u00D3\u014C\u00D5\u00D6\u00D7\u0172\u0141\u015A\u016A\u00DC\u017B\u017D\u00DF\u0105\u012F\u0101\u0107\u00E4\u00E5\u0119\u0113\u010D\u00E9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\u00F3\u014D\u00F5\u00F6\u00F7\u0173\u0142\u015B\u016B\u00FC\u017C\u017E\u2019\"\n  },\n  \"cp28603\": \"iso885913\",\n  \"iso885914\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u1E02\u1E03\u00A3\u010A\u010B\u1E0A\u00A7\u1E80\u00A9\u1E82\u1E0B\u1EF2\u00AD\u00AE\u0178\u1E1E\u1E1F\u0120\u0121\u1E40\u1E41\u00B6\u1E56\u1E81\u1E57\u1E83\u1E60\u1EF3\u1E84\u1E85\u1E61\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u0174\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u1E6A\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u0176\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u0175\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u1E6B\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u0177\u00FF\"\n  },\n  \"cp28604\": \"iso885914\",\n  \"iso885915\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u20AC\u00A5\u0160\u00A7\u0161\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u017D\u00B5\u00B6\u00B7\u017E\u00B9\u00BA\u00BB\u0152\u0153\u0178\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n  },\n  \"cp28605\": \"iso885915\",\n  \"iso885916\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u0105\u0141\u20AC\u201E\u0160\u00A7\u0161\u00A9\u0218\u00AB\u0179\u00AD\u017A\u017B\u00B0\u00B1\u010C\u0142\u017D\u201D\u00B6\u00B7\u017E\u010D\u0219\u00BB\u0152\u0153\u0178\u017C\u00C0\u00C1\u00C2\u0102\u00C4\u0106\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u0110\u0143\u00D2\u00D3\u00D4\u0150\u00D6\u015A\u0170\u00D9\u00DA\u00DB\u00DC\u0118\u021A\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u0107\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u0111\u0144\u00F2\u00F3\u00F4\u0151\u00F6\u015B\u0171\u00F9\u00FA\u00FB\u00FC\u0119\u021B\u00FF\"\n  },\n  \"cp28606\": \"iso885916\",\n  \"cp437\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00A2\u00A3\u00A5\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n  },\n  \"ibm437\": \"cp437\",\n  \"csibm437\": \"cp437\",\n  \"cp737\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u03C5\u03C6\u03C7\u03C8\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03C9\u03AC\u03AD\u03AE\u03CA\u03AF\u03CC\u03CD\u03CB\u03CE\u0386\u0388\u0389\u038A\u038C\u038E\u038F\u00B1\u2265\u2264\u03AA\u03AB\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n  },\n  \"ibm737\": \"cp737\",\n  \"csibm737\": \"cp737\",\n  \"cp775\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0106\u00FC\u00E9\u0101\u00E4\u0123\u00E5\u0107\u0142\u0113\u0156\u0157\u012B\u0179\u00C4\u00C5\u00C9\u00E6\u00C6\u014D\u00F6\u0122\u00A2\u015A\u015B\u00D6\u00DC\u00F8\u00A3\u00D8\u00D7\u00A4\u0100\u012A\u00F3\u017B\u017C\u017A\u201D\u00A6\u00A9\u00AE\u00AC\u00BD\u00BC\u0141\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u0104\u010C\u0118\u0116\u2563\u2551\u2557\u255D\u012E\u0160\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0172\u016A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u017D\u0105\u010D\u0119\u0117\u012F\u0161\u0173\u016B\u017E\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u00D3\u00DF\u014C\u0143\u00F5\u00D5\u00B5\u0144\u0136\u0137\u013B\u013C\u0146\u0112\u0145\u2019\u00AD\u00B1\u201C\u00BE\u00B6\u00A7\u00F7\u201E\u00B0\u2219\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n  },\n  \"ibm775\": \"cp775\",\n  \"csibm775\": \"cp775\",\n  \"cp850\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00F8\u00A3\u00D8\u00D7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u00AE\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u00C0\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u00E3\u00C3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u00F0\u00D0\u00CA\u00CB\u00C8\u0131\u00CD\u00CE\u00CF\u2518\u250C\u2588\u2584\u00A6\u00CC\u2580\u00D3\u00DF\u00D4\u00D2\u00F5\u00D5\u00B5\u00FE\u00DE\u00DA\u00DB\u00D9\u00FD\u00DD\u00AF\u00B4\u00AD\u00B1\u2017\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n  },\n  \"ibm850\": \"cp850\",\n  \"csibm850\": \"cp850\",\n  \"cp852\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u016F\u0107\u00E7\u0142\u00EB\u0150\u0151\u00EE\u0179\u00C4\u0106\u00C9\u0139\u013A\u00F4\u00F6\u013D\u013E\u015A\u015B\u00D6\u00DC\u0164\u0165\u0141\u00D7\u010D\u00E1\u00ED\u00F3\u00FA\u0104\u0105\u017D\u017E\u0118\u0119\u00AC\u017A\u010C\u015F\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u011A\u015E\u2563\u2551\u2557\u255D\u017B\u017C\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0102\u0103\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u0111\u0110\u010E\u00CB\u010F\u0147\u00CD\u00CE\u011B\u2518\u250C\u2588\u2584\u0162\u016E\u2580\u00D3\u00DF\u00D4\u0143\u0144\u0148\u0160\u0161\u0154\u00DA\u0155\u0170\u00FD\u00DD\u0163\u00B4\u00AD\u02DD\u02DB\u02C7\u02D8\u00A7\u00F7\u00B8\u00B0\u00A8\u02D9\u0171\u0158\u0159\u25A0\u00A0\"\n  },\n  \"ibm852\": \"cp852\",\n  \"csibm852\": \"cp852\",\n  \"cp855\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0452\u0402\u0453\u0403\u0451\u0401\u0454\u0404\u0455\u0405\u0456\u0406\u0457\u0407\u0458\u0408\u0459\u0409\u045A\u040A\u045B\u040B\u045C\u040C\u045E\u040E\u045F\u040F\u044E\u042E\u044A\u042A\u0430\u0410\u0431\u0411\u0446\u0426\u0434\u0414\u0435\u0415\u0444\u0424\u0433\u0413\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u0445\u0425\u0438\u0418\u2563\u2551\u2557\u255D\u0439\u0419\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u043A\u041A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u043B\u041B\u043C\u041C\u043D\u041D\u043E\u041E\u043F\u2518\u250C\u2588\u2584\u041F\u044F\u2580\u042F\u0440\u0420\u0441\u0421\u0442\u0422\u0443\u0423\u0436\u0416\u0432\u0412\u044C\u042C\u2116\u00AD\u044B\u042B\u0437\u0417\u0448\u0428\u044D\u042D\u0449\u0429\u0447\u0427\u00A7\u25A0\u00A0\"\n  },\n  \"ibm855\": \"cp855\",\n  \"csibm855\": \"cp855\",\n  \"cp856\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\u00A3\uFFFD\u00D7\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00AE\u00AC\u00BD\u00BC\uFFFD\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\uFFFD\uFFFD\uFFFD\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\uFFFD\uFFFD\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2518\u250C\u2588\u2584\u00A6\uFFFD\u2580\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00B5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00AF\u00B4\u00AD\u00B1\u2017\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n  },\n  \"ibm856\": \"cp856\",\n  \"csibm856\": \"cp856\",\n  \"cp857\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u0131\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u0130\u00D6\u00DC\u00F8\u00A3\u00D8\u015E\u015F\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u011E\u011F\u00BF\u00AE\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u00C0\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u00E3\u00C3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u00BA\u00AA\u00CA\u00CB\u00C8\uFFFD\u00CD\u00CE\u00CF\u2518\u250C\u2588\u2584\u00A6\u00CC\u2580\u00D3\u00DF\u00D4\u00D2\u00F5\u00D5\u00B5\uFFFD\u00D7\u00DA\u00DB\u00D9\u00EC\u00FF\u00AF\u00B4\u00AD\u00B1\uFFFD\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n  },\n  \"ibm857\": \"cp857\",\n  \"csibm857\": \"cp857\",\n  \"cp858\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00F8\u00A3\u00D8\u00D7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u00AE\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u00C0\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u00E3\u00C3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u00F0\u00D0\u00CA\u00CB\u00C8\u20AC\u00CD\u00CE\u00CF\u2518\u250C\u2588\u2584\u00A6\u00CC\u2580\u00D3\u00DF\u00D4\u00D2\u00F5\u00D5\u00B5\u00FE\u00DE\u00DA\u00DB\u00D9\u00FD\u00DD\u00AF\u00B4\u00AD\u00B1\u2017\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n  },\n  \"ibm858\": \"cp858\",\n  \"csibm858\": \"cp858\",\n  \"cp860\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E3\u00E0\u00C1\u00E7\u00EA\u00CA\u00E8\u00CD\u00D4\u00EC\u00C3\u00C2\u00C9\u00C0\u00C8\u00F4\u00F5\u00F2\u00DA\u00F9\u00CC\u00D5\u00DC\u00A2\u00A3\u00D9\u20A7\u00D3\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u00D2\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n  },\n  \"ibm860\": \"cp860\",\n  \"csibm860\": \"cp860\",\n  \"cp861\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00D0\u00F0\u00DE\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00FE\u00FB\u00DD\u00FD\u00D6\u00DC\u00F8\u00A3\u00D8\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00C1\u00CD\u00D3\u00DA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n  },\n  \"ibm861\": \"cp861\",\n  \"csibm861\": \"cp861\",\n  \"cp862\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\u00A2\u00A3\u00A5\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n  },\n  \"ibm862\": \"cp862\",\n  \"csibm862\": \"cp862\",\n  \"cp863\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00C2\u00E0\u00B6\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u2017\u00C0\u00A7\u00C9\u00C8\u00CA\u00F4\u00CB\u00CF\u00FB\u00F9\u00A4\u00D4\u00DC\u00A2\u00A3\u00D9\u00DB\u0192\u00A6\u00B4\u00F3\u00FA\u00A8\u00B8\u00B3\u00AF\u00CE\u2310\u00AC\u00BD\u00BC\u00BE\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n  },\n  \"ibm863\": \"cp863\",\n  \"csibm863\": \"cp863\",\n  \"cp864\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$\u066A&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u007F\u00B0\u00B7\u2219\u221A\u2592\u2500\u2502\u253C\u2524\u252C\u251C\u2534\u2510\u250C\u2514\u2518\u03B2\u221E\u03C6\u00B1\u00BD\u00BC\u2248\u00AB\u00BB\uFEF7\uFEF8\uFFFD\uFFFD\uFEFB\uFEFC\uFFFD\u00A0\u00AD\uFE82\u00A3\u00A4\uFE84\uFFFD\uFFFD\uFE8E\uFE8F\uFE95\uFE99\u060C\uFE9D\uFEA1\uFEA5\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFED1\u061B\uFEB1\uFEB5\uFEB9\u061F\u00A2\uFE80\uFE81\uFE83\uFE85\uFECA\uFE8B\uFE8D\uFE91\uFE93\uFE97\uFE9B\uFE9F\uFEA3\uFEA7\uFEA9\uFEAB\uFEAD\uFEAF\uFEB3\uFEB7\uFEBB\uFEBF\uFEC1\uFEC5\uFECB\uFECF\u00A6\u00AC\u00F7\u00D7\uFEC9\u0640\uFED3\uFED7\uFEDB\uFEDF\uFEE3\uFEE7\uFEEB\uFEED\uFEEF\uFEF3\uFEBD\uFECC\uFECE\uFECD\uFEE1\uFE7D\u0651\uFEE5\uFEE9\uFEEC\uFEF0\uFEF2\uFED0\uFED5\uFEF5\uFEF6\uFEDD\uFED9\uFEF1\u25A0\uFFFD\"\n  },\n  \"ibm864\": \"cp864\",\n  \"csibm864\": \"cp864\",\n  \"cp865\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00F8\u00A3\u00D8\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00A4\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n  },\n  \"ibm865\": \"cp865\",\n  \"csibm865\": \"cp865\",\n  \"cp866\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\u00B0\u2219\u00B7\u221A\u2116\u00A4\u25A0\u00A0\"\n  },\n  \"ibm866\": \"cp866\",\n  \"csibm866\": \"cp866\",\n  \"cp869\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0386\uFFFD\u00B7\u00AC\u00A6\u2018\u2019\u0388\u2015\u0389\u038A\u03AA\u038C\uFFFD\uFFFD\u038E\u03AB\u00A9\u038F\u00B2\u00B3\u03AC\u00A3\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03CD\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u00BD\u0398\u0399\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u039A\u039B\u039C\u039D\u2563\u2551\u2557\u255D\u039E\u039F\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u03A0\u03A1\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u2518\u250C\u2588\u2584\u03B4\u03B5\u2580\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u0384\u00AD\u00B1\u03C5\u03C6\u03C7\u00A7\u03C8\u0385\u00B0\u00A8\u03C9\u03CB\u03B0\u03CE\u25A0\u00A0\"\n  },\n  \"ibm869\": \"cp869\",\n  \"csibm869\": \"cp869\",\n  \"cp922\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u203E\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u0160\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u017D\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u0161\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u017E\u00FF\"\n  },\n  \"ibm922\": \"cp922\",\n  \"csibm922\": \"cp922\",\n  \"cp1046\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\uFE88\u00D7\u00F7\uF8F6\uF8F5\uF8F4\uF8F7\uFE71\u0088\u25A0\u2502\u2500\u2510\u250C\u2514\u2518\uFE79\uFE7B\uFE7D\uFE7F\uFE77\uFE8A\uFEF0\uFEF3\uFEF2\uFECE\uFECF\uFED0\uFEF6\uFEF8\uFEFA\uFEFC\u00A0\uF8FA\uF8F9\uF8F8\u00A4\uF8FB\uFE8B\uFE91\uFE97\uFE9B\uFE9F\uFEA3\u060C\u00AD\uFEA7\uFEB3\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFEB7\u061B\uFEBB\uFEBF\uFECA\u061F\uFECB\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\uFEC7\u0639\u063A\uFECC\uFE82\uFE84\uFE8E\uFED3\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFED7\uFEDB\uFEDF\uF8FC\uFEF5\uFEF7\uFEF9\uFEFB\uFEE3\uFEE7\uFEEC\uFEE9\uFFFD\"\n  },\n  \"ibm1046\": \"cp1046\",\n  \"csibm1046\": \"cp1046\",\n  \"cp1124\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0401\u0402\u0490\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\u00AD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0491\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\u00A7\u045E\u045F\"\n  },\n  \"ibm1124\": \"cp1124\",\n  \"csibm1124\": \"cp1124\",\n  \"cp1125\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0490\u0491\u0404\u0454\u0406\u0456\u0407\u0457\u00B7\u221A\u2116\u00A4\u25A0\u00A0\"\n  },\n  \"ibm1125\": \"cp1125\",\n  \"csibm1125\": \"cp1125\",\n  \"cp1129\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u0153\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u0178\u00B5\u00B6\u00B7\u0152\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u0102\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u0300\u00CD\u00CE\u00CF\u0110\u00D1\u0309\u00D3\u00D4\u01A0\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u01AF\u0303\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u0301\u00ED\u00EE\u00EF\u0111\u00F1\u0323\u00F3\u00F4\u01A1\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u01B0\u20AB\u00FF\"\n  },\n  \"ibm1129\": \"cp1129\",\n  \"csibm1129\": \"cp1129\",\n  \"cp1133\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0E81\u0E82\u0E84\u0E87\u0E88\u0EAA\u0E8A\u0E8D\u0E94\u0E95\u0E96\u0E97\u0E99\u0E9A\u0E9B\u0E9C\u0E9D\u0E9E\u0E9F\u0EA1\u0EA2\u0EA3\u0EA5\u0EA7\u0EAB\u0EAD\u0EAE\uFFFD\uFFFD\uFFFD\u0EAF\u0EB0\u0EB2\u0EB3\u0EB4\u0EB5\u0EB6\u0EB7\u0EB8\u0EB9\u0EBC\u0EB1\u0EBB\u0EBD\uFFFD\uFFFD\uFFFD\u0EC0\u0EC1\u0EC2\u0EC3\u0EC4\u0EC8\u0EC9\u0ECA\u0ECB\u0ECC\u0ECD\u0EC6\uFFFD\u0EDC\u0EDD\u20AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0ED0\u0ED1\u0ED2\u0ED3\u0ED4\u0ED5\u0ED6\u0ED7\u0ED8\u0ED9\uFFFD\uFFFD\u00A2\u00AC\u00A6\uFFFD\"\n  },\n  \"ibm1133\": \"cp1133\",\n  \"csibm1133\": \"cp1133\",\n  \"cp1161\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E48\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\u0E49\u0E4A\u0E4B\u20AC\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\u00A2\u00AC\u00A6\u00A0\"\n  },\n  \"ibm1161\": \"cp1161\",\n  \"csibm1161\": \"cp1161\",\n  \"cp1162\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\u0081\u0082\u0083\u0084\u2026\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"ibm1162\": \"cp1162\",\n  \"csibm1162\": \"cp1162\",\n  \"cp1163\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u20AC\u00A5\u00A6\u00A7\u0153\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u0178\u00B5\u00B6\u00B7\u0152\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u0102\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u0300\u00CD\u00CE\u00CF\u0110\u00D1\u0309\u00D3\u00D4\u01A0\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u01AF\u0303\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u0301\u00ED\u00EE\u00EF\u0111\u00F1\u0323\u00F3\u00F4\u01A1\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u01B0\u20AB\u00FF\"\n  },\n  \"ibm1163\": \"cp1163\",\n  \"csibm1163\": \"cp1163\",\n  \"maccroatian\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u0160\u2122\u00B4\u00A8\u2260\u017D\u00D8\u221E\u00B1\u2264\u2265\u2206\u00B5\u2202\u2211\u220F\u0161\u222B\u00AA\u00BA\u2126\u017E\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u0106\u00AB\u010C\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u0110\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\uFFFD\u00A9\u2044\u00A4\u2039\u203A\u00C6\u00BB\u2013\u00B7\u201A\u201E\u2030\u00C2\u0107\u00C1\u010D\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\u0111\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u03C0\u00CB\u02DA\u00B8\u00CA\u00E6\u02C7\"\n  },\n  \"maccyrillic\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u0406\u00AE\u00A9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\u00B1\u2264\u2265\u0456\u00B5\u2202\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u00A4\"\n  },\n  \"macgreek\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C4\u00B9\u00B2\u00C9\u00B3\u00D6\u00DC\u0385\u00E0\u00E2\u00E4\u0384\u00A8\u00E7\u00E9\u00E8\u00EA\u00EB\u00A3\u2122\u00EE\u00EF\u2022\u00BD\u2030\u00F4\u00F6\u00A6\u00AD\u00F9\u00FB\u00FC\u2020\u0393\u0394\u0398\u039B\u039E\u03A0\u00DF\u00AE\u00A9\u03A3\u03AA\u00A7\u2260\u00B0\u0387\u0391\u00B1\u2264\u2265\u00A5\u0392\u0395\u0396\u0397\u0399\u039A\u039C\u03A6\u03AB\u03A8\u03A9\u03AC\u039D\u00AC\u039F\u03A1\u2248\u03A4\u00AB\u00BB\u2026\u00A0\u03A5\u03A7\u0386\u0388\u0153\u2013\u2015\u201C\u201D\u2018\u2019\u00F7\u0389\u038A\u038C\u038E\u03AD\u03AE\u03AF\u03CC\u038F\u03CD\u03B1\u03B2\u03C8\u03B4\u03B5\u03C6\u03B3\u03B7\u03B9\u03BE\u03BA\u03BB\u03BC\u03BD\u03BF\u03C0\u03CE\u03C1\u03C3\u03C4\u03B8\u03C9\u03C2\u03C7\u03C5\u03B6\u03CA\u03CB\u0390\u03B0\uFFFD\"\n  },\n  \"maciceland\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u00DD\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u00D0\u00F0\u00DE\u00FE\u00FD\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n  },\n  \"macroman\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u2039\u203A\uFB01\uFB02\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n  },\n  \"macromania\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u0102\u015E\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u0103\u015F\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u2039\u203A\u0162\u0163\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n  },\n  \"macthai\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00AB\u00BB\u2026\uF88C\uF88F\uF892\uF895\uF898\uF88B\uF88E\uF891\uF894\uF897\u201C\u201D\uF899\uFFFD\u2022\uF884\uF889\uF885\uF886\uF887\uF888\uF88A\uF88D\uF890\uF893\uF896\u2018\u2019\uFFFD\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFEFF\u200B\u2013\u2014\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u2122\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u00AE\u00A9\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"macturkish\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u011E\u011F\u0130\u0131\u015E\u015F\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\uFFFD\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n  },\n  \"macukraine\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\u00B0\u0490\u00A3\u00A7\u2022\u00B6\u0406\u00AE\u00A9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\u00B1\u2264\u2265\u0456\u00B5\u0491\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u00A4\"\n  },\n  \"koi8r\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\u00A0\u2321\u00B0\u00B2\u00B7\u00F7\u2550\u2551\u2552\u0451\u2553\u2554\u2555\u2556\u2557\u2558\u2559\u255A\u255B\u255C\u255D\u255E\u255F\u2560\u2561\u0401\u2562\u2563\u2564\u2565\u2566\u2567\u2568\u2569\u256A\u256B\u256C\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n  },\n  \"koi8u\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\u00A0\u2321\u00B0\u00B2\u00B7\u00F7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u255D\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u256C\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n  },\n  \"koi8ru\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\u00A0\u2321\u00B0\u00B2\u00B7\u00F7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u045E\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u040E\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n  },\n  \"koi8t\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u049B\u0493\u201A\u0492\u201E\u2026\u2020\u2021\uFFFD\u2030\u04B3\u2039\u04B2\u04B7\u04B6\uFFFD\u049A\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04EF\u04EE\u0451\u00A4\u04E3\u00A6\u00A7\uFFFD\uFFFD\uFFFD\u00AB\u00AC\u00AD\u00AE\uFFFD\u00B0\u00B1\u00B2\u0401\uFFFD\u04E2\u00B6\u00B7\uFFFD\u2116\uFFFD\u00BB\uFFFD\uFFFD\uFFFD\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n  },\n  \"armscii8\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\uFFFD\u0587\u0589)(\u00BB\u00AB\u2014.\u055D,-\u058A\u2026\u055C\u055B\u055E\u0531\u0561\u0532\u0562\u0533\u0563\u0534\u0564\u0535\u0565\u0536\u0566\u0537\u0567\u0538\u0568\u0539\u0569\u053A\u056A\u053B\u056B\u053C\u056C\u053D\u056D\u053E\u056E\u053F\u056F\u0540\u0570\u0541\u0571\u0542\u0572\u0543\u0573\u0544\u0574\u0545\u0575\u0546\u0576\u0547\u0577\u0548\u0578\u0549\u0579\u054A\u057A\u054B\u057B\u054C\u057C\u054D\u057D\u054E\u057E\u054F\u057F\u0550\u0580\u0551\u0581\u0552\u0582\u0553\u0583\u0554\u0584\u0555\u0585\u0556\u0586\u055A\uFFFD\"\n  },\n  \"rk1048\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u049A\u04BA\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u049B\u04BB\u045F\u00A0\u04B0\u04B1\u04D8\u00A4\u04E8\u00A6\u00A7\u0401\u00A9\u0492\u00AB\u00AC\u00AD\u00AE\u04AE\u00B0\u00B1\u0406\u0456\u04E9\u00B5\u00B6\u00B7\u0451\u2116\u0493\u00BB\u04D9\u04A2\u04A3\u04AF\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\"\n  },\n  \"tcvn\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\\u0000\u00DA\u1EE4\\u0003\u1EEA\u1EEC\u1EEE\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\u1EE8\u1EF0\u1EF2\u1EF6\u1EF8\u00DD\u1EF4\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u007F\u00C0\u1EA2\u00C3\u00C1\u1EA0\u1EB6\u1EAC\u00C8\u1EBA\u1EBC\u00C9\u1EB8\u1EC6\u00CC\u1EC8\u0128\u00CD\u1ECA\u00D2\u1ECE\u00D5\u00D3\u1ECC\u1ED8\u1EDC\u1EDE\u1EE0\u1EDA\u1EE2\u00D9\u1EE6\u0168\u00A0\u0102\u00C2\u00CA\u00D4\u01A0\u01AF\u0110\u0103\u00E2\u00EA\u00F4\u01A1\u01B0\u0111\u1EB0\u0300\u0309\u0303\u0301\u0323\u00E0\u1EA3\u00E3\u00E1\u1EA1\u1EB2\u1EB1\u1EB3\u1EB5\u1EAF\u1EB4\u1EAE\u1EA6\u1EA8\u1EAA\u1EA4\u1EC0\u1EB7\u1EA7\u1EA9\u1EAB\u1EA5\u1EAD\u00E8\u1EC2\u1EBB\u1EBD\u00E9\u1EB9\u1EC1\u1EC3\u1EC5\u1EBF\u1EC7\u00EC\u1EC9\u1EC4\u1EBE\u1ED2\u0129\u00ED\u1ECB\u00F2\u1ED4\u1ECF\u00F5\u00F3\u1ECD\u1ED3\u1ED5\u1ED7\u1ED1\u1ED9\u1EDD\u1EDF\u1EE1\u1EDB\u1EE3\u00F9\u1ED6\u1EE7\u0169\u00FA\u1EE5\u1EEB\u1EED\u1EEF\u1EE9\u1EF1\u1EF3\u1EF7\u1EF9\u00FD\u1EF5\u1ED0\"\n  },\n  \"georgianacademy\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\u008D\u008E\u008F\u0090\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\u009D\u009E\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n  },\n  \"georgianps\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\u008D\u008E\u008F\u0090\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\u009D\u009E\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10F1\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10F2\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10F3\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10F4\u10EF\u10F0\u10F5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n  },\n  \"pt154\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0496\u0492\u04EE\u0493\u201E\u2026\u04B6\u04AE\u04B2\u04AF\u04A0\u04E2\u04A2\u049A\u04BA\u04B8\u0497\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u04B3\u04B7\u04A1\u04E3\u04A3\u049B\u04BB\u04B9\u00A0\u040E\u045E\u0408\u04E8\u0498\u04B0\u00A7\u0401\u00A9\u04D8\u00AB\u00AC\u04EF\u00AE\u049C\u00B0\u04B1\u0406\u0456\u0499\u04E9\u00B6\u00B7\u0451\u2116\u04D9\u00BB\u0458\u04AA\u04AB\u049D\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\"\n  },\n  \"viscii\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\\u0000\\u0001\u1EB2\\u0003\\u0004\u1EB4\u1EAA\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\u1EF6\\u0015\\u0016\\u0017\\u0018\u1EF8\\u001a\\u001b\\u001c\\u001d\u1EF4\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u007F\u1EA0\u1EAE\u1EB0\u1EB6\u1EA4\u1EA6\u1EA8\u1EAC\u1EBC\u1EB8\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EE2\u1EDA\u1EDC\u1EDE\u1ECA\u1ECE\u1ECC\u1EC8\u1EE6\u0168\u1EE4\u1EF2\u00D5\u1EAF\u1EB1\u1EB7\u1EA5\u1EA7\u1EA9\u1EAD\u1EBD\u1EB9\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1ED1\u1ED3\u1ED5\u1ED7\u1EE0\u01A0\u1ED9\u1EDD\u1EDF\u1ECB\u1EF0\u1EE8\u1EEA\u1EEC\u01A1\u1EDB\u01AF\u00C0\u00C1\u00C2\u00C3\u1EA2\u0102\u1EB3\u1EB5\u00C8\u00C9\u00CA\u1EBA\u00CC\u00CD\u0128\u1EF3\u0110\u1EE9\u00D2\u00D3\u00D4\u1EA1\u1EF7\u1EEB\u1EED\u00D9\u00DA\u1EF9\u1EF5\u00DD\u1EE1\u01B0\u00E0\u00E1\u00E2\u00E3\u1EA3\u0103\u1EEF\u1EAB\u00E8\u00E9\u00EA\u1EBB\u00EC\u00ED\u0129\u1EC9\u0111\u1EF1\u00F2\u00F3\u00F4\u00F5\u1ECF\u1ECD\u1EE5\u00F9\u00FA\u0169\u1EE7\u00FD\u1EE3\u1EEE\"\n  },\n  \"iso646cn\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#\u00A5%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\u007F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"iso646jp\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\u00A5]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\u007F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"hproman8\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00C0\u00C2\u00C8\u00CA\u00CB\u00CE\u00CF\u00B4\u02CB\u02C6\u00A8\u02DC\u00D9\u00DB\u20A4\u00AF\u00DD\u00FD\u00B0\u00C7\u00E7\u00D1\u00F1\u00A1\u00BF\u00A4\u00A3\u00A5\u00A7\u0192\u00A2\u00E2\u00EA\u00F4\u00FB\u00E1\u00E9\u00F3\u00FA\u00E0\u00E8\u00F2\u00F9\u00E4\u00EB\u00F6\u00FC\u00C5\u00EE\u00D8\u00C6\u00E5\u00ED\u00F8\u00E6\u00C4\u00EC\u00D6\u00DC\u00C9\u00EF\u00DF\u00D4\u00C1\u00C3\u00E3\u00D0\u00F0\u00CD\u00CC\u00D3\u00D2\u00D5\u00F5\u0160\u0161\u00DA\u0178\u00FF\u00DE\u00FE\u00B7\u00B5\u00B6\u00BE\u2014\u00BC\u00BD\u00AA\u00BA\u00AB\u25A0\u00BB\u00B1\uFFFD\"\n  },\n  \"macintosh\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u2039\u203A\uFB01\uFB02\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n  },\n  \"ascii\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"tis620\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n  }\n}", "\"use strict\"\nvar Buffer = require(\"safer-buffer\").Buffer\n\n// Multibyte codec. In this scheme, a character is represented by 1 or more bytes.\n// Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences.\n// To save memory and loading time, we read table files only when requested.\n\nexports._dbcs = DBCSCodec\n\nvar UNASSIGNED = -1\nvar GB18030_CODE = -2\nvar SEQ_START = -10\nvar NODE_START = -1000\nvar UNASSIGNED_NODE = new Array(0x100)\nvar DEF_CHAR = -1\n\nfor (var i = 0; i < 0x100; i++) { UNASSIGNED_NODE[i] = UNASSIGNED }\n\n// Class DBCSCodec reads and initializes mapping tables.\nfunction DBCSCodec (codecOptions, iconv) {\n  this.encodingName = codecOptions.encodingName\n  if (!codecOptions) { throw new Error(\"DBCS codec is called without the data.\") }\n  if (!codecOptions.table) { throw new Error(\"Encoding '\" + this.encodingName + \"' has no data.\") }\n\n  // Load tables.\n  var mappingTable = codecOptions.table()\n\n  // Decode tables: MBCS -> Unicode.\n\n  // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256.\n  // Trie root is decodeTables[0].\n  // Values: >=  0 -> unicode character code. can be > 0xFFFF\n  //         == UNASSIGNED -> unknown/unassigned sequence.\n  //         == GB18030_CODE -> this is the end of a GB18030 4-byte sequence.\n  //         <= NODE_START -> index of the next node in our trie to process next byte.\n  //         <= SEQ_START  -> index of the start of a character code sequence, in decodeTableSeq.\n  this.decodeTables = []\n  this.decodeTables[0] = UNASSIGNED_NODE.slice(0) // Create root node.\n\n  // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here.\n  this.decodeTableSeq = []\n\n  // Actual mapping tables consist of chunks. Use them to fill up decode tables.\n  for (var i = 0; i < mappingTable.length; i++) { this._addDecodeChunk(mappingTable[i]) }\n\n  // Load & create GB18030 tables when needed.\n  if (typeof codecOptions.gb18030 === \"function\") {\n    this.gb18030 = codecOptions.gb18030() // Load GB18030 ranges.\n\n    // Add GB18030 common decode nodes.\n    var commonThirdByteNodeIdx = this.decodeTables.length\n    this.decodeTables.push(UNASSIGNED_NODE.slice(0))\n\n    var commonFourthByteNodeIdx = this.decodeTables.length\n    this.decodeTables.push(UNASSIGNED_NODE.slice(0))\n\n    // Fill out the tree\n    var firstByteNode = this.decodeTables[0]\n    for (var i = 0x81; i <= 0xFE; i++) {\n      var secondByteNode = this.decodeTables[NODE_START - firstByteNode[i]]\n      for (var j = 0x30; j <= 0x39; j++) {\n        if (secondByteNode[j] === UNASSIGNED) {\n          secondByteNode[j] = NODE_START - commonThirdByteNodeIdx\n        } else if (secondByteNode[j] > NODE_START) {\n          throw new Error(\"gb18030 decode tables conflict at byte 2\")\n        }\n\n        var thirdByteNode = this.decodeTables[NODE_START - secondByteNode[j]]\n        for (var k = 0x81; k <= 0xFE; k++) {\n          if (thirdByteNode[k] === UNASSIGNED) {\n            thirdByteNode[k] = NODE_START - commonFourthByteNodeIdx\n          } else if (thirdByteNode[k] === NODE_START - commonFourthByteNodeIdx) {\n            continue\n          } else if (thirdByteNode[k] > NODE_START) {\n            throw new Error(\"gb18030 decode tables conflict at byte 3\")\n          }\n\n          var fourthByteNode = this.decodeTables[NODE_START - thirdByteNode[k]]\n          for (var l = 0x30; l <= 0x39; l++) {\n            if (fourthByteNode[l] === UNASSIGNED) { fourthByteNode[l] = GB18030_CODE }\n          }\n        }\n      }\n    }\n  }\n\n  this.defaultCharUnicode = iconv.defaultCharUnicode\n\n  // Encode tables: Unicode -> DBCS.\n\n  // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance.\n  // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null.\n  // Values: >=  0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.).\n  //         == UNASSIGNED -> no conversion found. Output a default char.\n  //         <= SEQ_START  -> it's an index in encodeTableSeq, see below. The character starts a sequence.\n  this.encodeTable = []\n\n  // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of\n  // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key\n  // means end of sequence (needed when one sequence is a strict subsequence of another).\n  // Objects are kept separately from encodeTable to increase performance.\n  this.encodeTableSeq = []\n\n  // Some chars can be decoded, but need not be encoded.\n  var skipEncodeChars = {}\n  if (codecOptions.encodeSkipVals) {\n    for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) {\n      var val = codecOptions.encodeSkipVals[i]\n      if (typeof val === \"number\") { skipEncodeChars[val] = true } else {\n        for (var j = val.from; j <= val.to; j++) { skipEncodeChars[j] = true }\n      }\n    }\n  }\n\n  // Use decode trie to recursively fill out encode tables.\n  this._fillEncodeTable(0, 0, skipEncodeChars)\n\n  // Add more encoding pairs when needed.\n  if (codecOptions.encodeAdd) {\n    for (var uChar in codecOptions.encodeAdd) {\n      if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar)) { this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]) }\n    }\n  }\n\n  this.defCharSB = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)]\n  if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0][\"?\"]\n  if (this.defCharSB === UNASSIGNED) this.defCharSB = \"?\".charCodeAt(0)\n}\n\nDBCSCodec.prototype.encoder = DBCSEncoder\nDBCSCodec.prototype.decoder = DBCSDecoder\n\n// Decoder helpers\nDBCSCodec.prototype._getDecodeTrieNode = function (addr) {\n  var bytes = []\n  for (; addr > 0; addr >>>= 8) { bytes.push(addr & 0xFF) }\n  if (bytes.length == 0) { bytes.push(0) }\n\n  var node = this.decodeTables[0]\n  for (var i = bytes.length - 1; i > 0; i--) { // Traverse nodes deeper into the trie.\n    var val = node[bytes[i]]\n\n    if (val == UNASSIGNED) { // Create new node.\n      node[bytes[i]] = NODE_START - this.decodeTables.length\n      this.decodeTables.push(node = UNASSIGNED_NODE.slice(0))\n    } else if (val <= NODE_START) { // Existing node.\n      node = this.decodeTables[NODE_START - val]\n    } else { throw new Error(\"Overwrite byte in \" + this.encodingName + \", addr: \" + addr.toString(16)) }\n  }\n  return node\n}\n\nDBCSCodec.prototype._addDecodeChunk = function (chunk) {\n  // First element of chunk is the hex mbcs code where we start.\n  var curAddr = parseInt(chunk[0], 16)\n\n  // Choose the decoding node where we'll write our chars.\n  var writeTable = this._getDecodeTrieNode(curAddr)\n  curAddr = curAddr & 0xFF\n\n  // Write all other elements of the chunk to the table.\n  for (var k = 1; k < chunk.length; k++) {\n    var part = chunk[k]\n    if (typeof part === \"string\") { // String, write as-is.\n      for (var l = 0; l < part.length;) {\n        var code = part.charCodeAt(l++)\n        if (code >= 0xD800 && code < 0xDC00) { // Decode surrogate\n          var codeTrail = part.charCodeAt(l++)\n          if (codeTrail >= 0xDC00 && codeTrail < 0xE000) { writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00) } else { throw new Error(\"Incorrect surrogate pair in \" + this.encodingName + \" at chunk \" + chunk[0]) }\n        } else if (code > 0x0FF0 && code <= 0x0FFF) { // Character sequence (our own encoding used)\n          var len = 0xFFF - code + 2\n          var seq = []\n          for (var m = 0; m < len; m++) { seq.push(part.charCodeAt(l++)) } // Simple variation: don't support surrogates or subsequences in seq.\n\n          writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length\n          this.decodeTableSeq.push(seq)\n        } else { writeTable[curAddr++] = code } // Basic char\n      }\n    } else if (typeof part === \"number\") { // Integer, meaning increasing sequence starting with prev character.\n      var charCode = writeTable[curAddr - 1] + 1\n      for (var l = 0; l < part; l++) { writeTable[curAddr++] = charCode++ }\n    } else { throw new Error(\"Incorrect type '\" + typeof part + \"' given in \" + this.encodingName + \" at chunk \" + chunk[0]) }\n  }\n  if (curAddr > 0xFF) { throw new Error(\"Incorrect chunk in \" + this.encodingName + \" at addr \" + chunk[0] + \": too long\" + curAddr) }\n}\n\n// Encoder helpers\nDBCSCodec.prototype._getEncodeBucket = function (uCode) {\n  var high = uCode >> 8 // This could be > 0xFF because of astral characters.\n  if (this.encodeTable[high] === undefined) {\n    this.encodeTable[high] = UNASSIGNED_NODE.slice(0)\n  } // Create bucket on demand.\n  return this.encodeTable[high]\n}\n\nDBCSCodec.prototype._setEncodeChar = function (uCode, dbcsCode) {\n  var bucket = this._getEncodeBucket(uCode)\n  var low = uCode & 0xFF\n  if (bucket[low] <= SEQ_START) { this.encodeTableSeq[SEQ_START - bucket[low]][DEF_CHAR] = dbcsCode } // There's already a sequence, set a single-char subsequence of it.\n  else if (bucket[low] == UNASSIGNED) { bucket[low] = dbcsCode }\n}\n\nDBCSCodec.prototype._setEncodeSequence = function (seq, dbcsCode) {\n  // Get the root of character tree according to first character of the sequence.\n  var uCode = seq[0]\n  var bucket = this._getEncodeBucket(uCode)\n  var low = uCode & 0xFF\n\n  var node\n  if (bucket[low] <= SEQ_START) {\n    // There's already a sequence with  - use it.\n    node = this.encodeTableSeq[SEQ_START - bucket[low]]\n  } else {\n    // There was no sequence object - allocate a new one.\n    node = {}\n    if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low] // If a char was set before - make it a single-char subsequence.\n    bucket[low] = SEQ_START - this.encodeTableSeq.length\n    this.encodeTableSeq.push(node)\n  }\n\n  // Traverse the character tree, allocating new nodes as needed.\n  for (var j = 1; j < seq.length - 1; j++) {\n    var oldVal = node[uCode]\n    if (typeof oldVal === \"object\") { node = oldVal } else {\n      node = node[uCode] = {}\n      if (oldVal !== undefined) { node[DEF_CHAR] = oldVal }\n    }\n  }\n\n  // Set the leaf to given dbcsCode.\n  uCode = seq[seq.length - 1]\n  node[uCode] = dbcsCode\n}\n\nDBCSCodec.prototype._fillEncodeTable = function (nodeIdx, prefix, skipEncodeChars) {\n  var node = this.decodeTables[nodeIdx]\n  var hasValues = false\n  var subNodeEmpty = {}\n  for (var i = 0; i < 0x100; i++) {\n    var uCode = node[i]\n    var mbCode = prefix + i\n    if (skipEncodeChars[mbCode]) { continue }\n\n    if (uCode >= 0) {\n      this._setEncodeChar(uCode, mbCode)\n      hasValues = true\n    } else if (uCode <= NODE_START) {\n      var subNodeIdx = NODE_START - uCode\n      if (!subNodeEmpty[subNodeIdx]) {  // Skip empty subtrees (they are too large in gb18030).\n        var newPrefix = (mbCode << 8) >>> 0  // NOTE: '>>> 0' keeps 32-bit num positive.\n        if (this._fillEncodeTable(subNodeIdx, newPrefix, skipEncodeChars)) { hasValues = true } else { subNodeEmpty[subNodeIdx] = true }\n      }\n    } else if (uCode <= SEQ_START) {\n      this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode)\n      hasValues = true\n    }\n  }\n  return hasValues\n}\n\n// == Encoder ==================================================================\n\nfunction DBCSEncoder (options, codec) {\n  // Encoder state\n  this.leadSurrogate = -1\n  this.seqObj = undefined\n\n  // Static data\n  this.encodeTable = codec.encodeTable\n  this.encodeTableSeq = codec.encodeTableSeq\n  this.defaultCharSingleByte = codec.defCharSB\n  this.gb18030 = codec.gb18030\n}\n\nDBCSEncoder.prototype.write = function (str) {\n  var newBuf = Buffer.alloc(str.length * (this.gb18030 ? 4 : 3))\n  var leadSurrogate = this.leadSurrogate\n  var seqObj = this.seqObj\n  var nextChar = -1\n  var i = 0; var j = 0\n\n  while (true) {\n    // 0. Get next character.\n    if (nextChar === -1) {\n      if (i == str.length) break\n      var uCode = str.charCodeAt(i++)\n    } else {\n      var uCode = nextChar\n      nextChar = -1\n    }\n\n    // 1. Handle surrogates.\n    if (uCode >= 0xD800 && uCode < 0xE000) { // Char is one of surrogates.\n      if (uCode < 0xDC00) { // We've got lead surrogate.\n        if (leadSurrogate === -1) {\n          leadSurrogate = uCode\n          continue\n        } else {\n          leadSurrogate = uCode\n          // Double lead surrogate found.\n          uCode = UNASSIGNED\n        }\n      } else { // We've got trail surrogate.\n        if (leadSurrogate !== -1) {\n          uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00)\n          leadSurrogate = -1\n        } else {\n          // Incomplete surrogate pair - only trail surrogate found.\n          uCode = UNASSIGNED\n        }\n      }\n    } else if (leadSurrogate !== -1) {\n      // Incomplete surrogate pair - only lead surrogate found.\n      nextChar = uCode; uCode = UNASSIGNED // Write an error, then current char.\n      leadSurrogate = -1\n    }\n\n    // 2. Convert uCode character.\n    var dbcsCode = UNASSIGNED\n    if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence\n      var resCode = seqObj[uCode]\n      if (typeof resCode === \"object\") { // Sequence continues.\n        seqObj = resCode\n        continue\n      } else if (typeof resCode === \"number\") { // Sequence finished. Write it.\n        dbcsCode = resCode\n      } else if (resCode == undefined) { // Current character is not part of the sequence.\n        // Try default character for this sequence\n        resCode = seqObj[DEF_CHAR]\n        if (resCode !== undefined) {\n          dbcsCode = resCode // Found. Write it.\n          nextChar = uCode // Current character will be written too in the next iteration.\n        } else {\n          // TODO: What if we have no default? (resCode == undefined)\n          // Then, we should write first char of the sequence as-is and try the rest recursively.\n          // Didn't do it for now because no encoding has this situation yet.\n          // Currently, just skip the sequence and write current char.\n        }\n      }\n      seqObj = undefined\n    } else if (uCode >= 0) {  // Regular character\n      var subtable = this.encodeTable[uCode >> 8]\n      if (subtable !== undefined) { dbcsCode = subtable[uCode & 0xFF] }\n\n      if (dbcsCode <= SEQ_START) { // Sequence start\n        seqObj = this.encodeTableSeq[SEQ_START - dbcsCode]\n        continue\n      }\n\n      if (dbcsCode == UNASSIGNED && this.gb18030) {\n        // Use GB18030 algorithm to find character(s) to write.\n        var idx = findIdx(this.gb18030.uChars, uCode)\n        if (idx != -1) {\n          var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx])\n          newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600\n          newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260\n          newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10\n          newBuf[j++] = 0x30 + dbcsCode\n          continue\n        }\n      }\n    }\n\n    // 3. Write dbcsCode character.\n    if (dbcsCode === UNASSIGNED) { dbcsCode = this.defaultCharSingleByte }\n\n    if (dbcsCode < 0x100) {\n      newBuf[j++] = dbcsCode\n    } else if (dbcsCode < 0x10000) {\n      newBuf[j++] = dbcsCode >> 8   // high byte\n      newBuf[j++] = dbcsCode & 0xFF // low byte\n    } else if (dbcsCode < 0x1000000) {\n      newBuf[j++] = dbcsCode >> 16\n      newBuf[j++] = (dbcsCode >> 8) & 0xFF\n      newBuf[j++] = dbcsCode & 0xFF\n    } else {\n      newBuf[j++] = dbcsCode >>> 24\n      newBuf[j++] = (dbcsCode >>> 16) & 0xFF\n      newBuf[j++] = (dbcsCode >>> 8) & 0xFF\n      newBuf[j++] = dbcsCode & 0xFF\n    }\n  }\n\n  this.seqObj = seqObj\n  this.leadSurrogate = leadSurrogate\n  return newBuf.slice(0, j)\n}\n\nDBCSEncoder.prototype.end = function () {\n  if (this.leadSurrogate === -1 && this.seqObj === undefined) { return } // All clean. Most often case.\n\n  var newBuf = Buffer.alloc(10); var j = 0\n\n  if (this.seqObj) { // We're in the sequence.\n    var dbcsCode = this.seqObj[DEF_CHAR]\n    if (dbcsCode !== undefined) { // Write beginning of the sequence.\n      if (dbcsCode < 0x100) {\n        newBuf[j++] = dbcsCode\n      } else {\n        newBuf[j++] = dbcsCode >> 8   // high byte\n        newBuf[j++] = dbcsCode & 0xFF // low byte\n      }\n    } else {\n      // See todo above.\n    }\n    this.seqObj = undefined\n  }\n\n  if (this.leadSurrogate !== -1) {\n    // Incomplete surrogate pair - only lead surrogate found.\n    newBuf[j++] = this.defaultCharSingleByte\n    this.leadSurrogate = -1\n  }\n\n  return newBuf.slice(0, j)\n}\n\n// Export for testing\nDBCSEncoder.prototype.findIdx = findIdx\n\n// == Decoder ==================================================================\n\nfunction DBCSDecoder (options, codec) {\n  // Decoder state\n  this.nodeIdx = 0\n  this.prevBytes = []\n\n  // Static data\n  this.decodeTables = codec.decodeTables\n  this.decodeTableSeq = codec.decodeTableSeq\n  this.defaultCharUnicode = codec.defaultCharUnicode\n  this.gb18030 = codec.gb18030\n}\n\nDBCSDecoder.prototype.write = function (buf) {\n  var newBuf = Buffer.alloc(buf.length * 2)\n  var nodeIdx = this.nodeIdx\n  var prevBytes = this.prevBytes; var prevOffset = this.prevBytes.length\n  var seqStart = -this.prevBytes.length // idx of the start of current parsed sequence.\n  var uCode\n\n  for (var i = 0, j = 0; i < buf.length; i++) {\n    var curByte = (i >= 0) ? buf[i] : prevBytes[i + prevOffset]\n\n    // Lookup in current trie node.\n    var uCode = this.decodeTables[nodeIdx][curByte]\n\n    if (uCode >= 0) {\n      // Normal character, just use it.\n    } else if (uCode === UNASSIGNED) { // Unknown char.\n      // TODO: Callback with seq.\n      uCode = this.defaultCharUnicode.charCodeAt(0)\n      i = seqStart // Skip one byte ('i' will be incremented by the for loop) and try to parse again.\n    } else if (uCode === GB18030_CODE) {\n      if (i >= 3) {\n        var ptr = (buf[i - 3] - 0x81) * 12600 + (buf[i - 2] - 0x30) * 1260 + (buf[i - 1] - 0x81) * 10 + (curByte - 0x30)\n      } else {\n        var ptr = (prevBytes[i - 3 + prevOffset] - 0x81) * 12600 +\n                          (((i - 2 >= 0) ? buf[i - 2] : prevBytes[i - 2 + prevOffset]) - 0x30) * 1260 +\n                          (((i - 1 >= 0) ? buf[i - 1] : prevBytes[i - 1 + prevOffset]) - 0x81) * 10 +\n                          (curByte - 0x30)\n      }\n      var idx = findIdx(this.gb18030.gbChars, ptr)\n      uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx]\n    } else if (uCode <= NODE_START) { // Go to next trie node.\n      nodeIdx = NODE_START - uCode\n      continue\n    } else if (uCode <= SEQ_START) { // Output a sequence of chars.\n      var seq = this.decodeTableSeq[SEQ_START - uCode]\n      for (var k = 0; k < seq.length - 1; k++) {\n        uCode = seq[k]\n        newBuf[j++] = uCode & 0xFF\n        newBuf[j++] = uCode >> 8\n      }\n      uCode = seq[seq.length - 1]\n    } else { throw new Error(\"iconv-lite internal error: invalid decoding table value \" + uCode + \" at \" + nodeIdx + \"/\" + curByte) }\n\n    // Write the character to buffer, handling higher planes using surrogate pair.\n    if (uCode >= 0x10000) {\n      uCode -= 0x10000\n      var uCodeLead = 0xD800 | (uCode >> 10)\n      newBuf[j++] = uCodeLead & 0xFF\n      newBuf[j++] = uCodeLead >> 8\n\n      uCode = 0xDC00 | (uCode & 0x3FF)\n    }\n    newBuf[j++] = uCode & 0xFF\n    newBuf[j++] = uCode >> 8\n\n    // Reset trie node.\n    nodeIdx = 0; seqStart = i + 1\n  }\n\n  this.nodeIdx = nodeIdx\n  this.prevBytes = (seqStart >= 0)\n    ? Array.prototype.slice.call(buf, seqStart)\n    : prevBytes.slice(seqStart + prevOffset).concat(Array.prototype.slice.call(buf))\n\n  return newBuf.slice(0, j).toString(\"ucs2\")\n}\n\nDBCSDecoder.prototype.end = function () {\n  var ret = \"\"\n\n  // Try to parse all remaining chars.\n  while (this.prevBytes.length > 0) {\n    // Skip 1 character in the buffer.\n    ret += this.defaultCharUnicode\n    var bytesArr = this.prevBytes.slice(1)\n\n    // Parse remaining as usual.\n    this.prevBytes = []\n    this.nodeIdx = 0\n    if (bytesArr.length > 0) { ret += this.write(bytesArr) }\n  }\n\n  this.prevBytes = []\n  this.nodeIdx = 0\n  return ret\n}\n\n// Binary search for GB18030. Returns largest i such that table[i] <= val.\nfunction findIdx (table, val) {\n  if (table[0] > val) { return -1 }\n\n  var l = 0; var r = table.length\n  while (l < r - 1) { // always table[l] <= val < table[r]\n    var mid = l + ((r - l + 1) >> 1)\n    if (table[mid] <= val) { l = mid } else { r = mid }\n  }\n  return l\n}\n", "[\n[\"0\",\"\\u0000\",128],\n[\"a1\",\"\uFF61\",62],\n[\"8140\",\"\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\u00B4\uFF40\u00A8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008\",9,\"\uFF0B\uFF0D\u00B1\u00D7\"],\n[\"8180\",\"\u00F7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\u00B0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\u00A7\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013\"],\n[\"81b8\",\"\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\"],\n[\"81c8\",\"\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203\"],\n[\"81da\",\"\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\"],\n[\"81f0\",\"\u212B\u2030\u266F\u266D\u266A\u2020\u2021\u00B6\"],\n[\"81fc\",\"\u25EF\"],\n[\"824f\",\"\uFF10\",9],\n[\"8260\",\"\uFF21\",25],\n[\"8281\",\"\uFF41\",25],\n[\"829f\",\"\u3041\",82],\n[\"8340\",\"\u30A1\",62],\n[\"8380\",\"\u30E0\",22],\n[\"839f\",\"\u0391\",16,\"\u03A3\",6],\n[\"83bf\",\"\u03B1\",16,\"\u03C3\",6],\n[\"8440\",\"\u0410\",5,\"\u0401\u0416\",25],\n[\"8470\",\"\u0430\",5,\"\u0451\u0436\",7],\n[\"8480\",\"\u043E\",17],\n[\"849f\",\"\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\"],\n[\"8740\",\"\u2460\",19,\"\u2160\",9],\n[\"875f\",\"\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1\"],\n[\"877e\",\"\u337B\"],\n[\"8780\",\"\u301D\u301F\u2116\u33CD\u2121\u32A4\",4,\"\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A\"],\n[\"889f\",\"\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D\"],\n[\"8940\",\"\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186\"],\n[\"8980\",\"\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539\"],\n[\"8a40\",\"\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B\"],\n[\"8a80\",\"\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4\"],\n[\"8b40\",\"\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551\"],\n[\"8b80\",\"\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48\"],\n[\"8c40\",\"\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8\"],\n[\"8c80\",\"\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411\"],\n[\"8d40\",\"\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D\"],\n[\"8d80\",\"\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237\"],\n[\"8e40\",\"\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62\"],\n[\"8e80\",\"\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468\"],\n[\"8f40\",\"\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3\"],\n[\"8f80\",\"\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE\"],\n[\"9040\",\"\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8\"],\n[\"9080\",\"\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA\"],\n[\"9140\",\"\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB\"],\n[\"9180\",\"\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA\"],\n[\"9240\",\"\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4\"],\n[\"9280\",\"\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013\"],\n[\"9340\",\"\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC\"],\n[\"9380\",\"\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165\"],\n[\"9440\",\"\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885\"],\n[\"9480\",\"\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E\"],\n[\"9540\",\"\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577\"],\n[\"9580\",\"\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B\"],\n[\"9640\",\"\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6\"],\n[\"9680\",\"\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652\"],\n[\"9740\",\"\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32\"],\n[\"9780\",\"\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F\"],\n[\"9840\",\"\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155\"],\n[\"989f\",\"\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2\"],\n[\"9940\",\"\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED\"],\n[\"9980\",\"\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8\"],\n[\"9a40\",\"\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638\"],\n[\"9a80\",\"\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969\"],\n[\"9b40\",\"\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80\"],\n[\"9b80\",\"\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF\"],\n[\"9c40\",\"\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060\"],\n[\"9c80\",\"\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B\"],\n[\"9d40\",\"\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B\"],\n[\"9d80\",\"\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC\"],\n[\"9e40\",\"\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E\"],\n[\"9e80\",\"\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3\"],\n[\"9f40\",\"\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF\"],\n[\"9f80\",\"\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC\"],\n[\"e040\",\"\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD\"],\n[\"e080\",\"\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1\"],\n[\"e140\",\"\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF\"],\n[\"e180\",\"\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC\"],\n[\"e240\",\"\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0\"],\n[\"e280\",\"\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06\"],\n[\"e340\",\"\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37\"],\n[\"e380\",\"\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B\"],\n[\"e440\",\"\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264\"],\n[\"e480\",\"\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548\"],\n[\"e540\",\"\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC\"],\n[\"e580\",\"\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E\"],\n[\"e640\",\"\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7\"],\n[\"e680\",\"\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A\"],\n[\"e740\",\"\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C\"],\n[\"e780\",\"\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E\"],\n[\"e840\",\"\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599\"],\n[\"e880\",\"\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870\"],\n[\"e940\",\"\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43\"],\n[\"e980\",\"\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48\"],\n[\"ea40\",\"\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\"],\n[\"ea80\",\"\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0\u582F\u69C7\u9059\u7464\u51DC\u7199\"],\n[\"ed40\",\"\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\"],\n[\"ed80\",\"\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1\"],\n[\"ee40\",\"\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\"],\n[\"ee80\",\"\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1\"],\n[\"eeef\",\"\u2170\",9,\"\uFFE2\uFFE4\uFF07\uFF02\"],\n[\"f040\",\"\uE000\",62],\n[\"f080\",\"\uE03F\",124],\n[\"f140\",\"\uE0BC\",62],\n[\"f180\",\"\uE0FB\",124],\n[\"f240\",\"\uE178\",62],\n[\"f280\",\"\uE1B7\",124],\n[\"f340\",\"\uE234\",62],\n[\"f380\",\"\uE273\",124],\n[\"f440\",\"\uE2F0\",62],\n[\"f480\",\"\uE32F\",124],\n[\"f540\",\"\uE3AC\",62],\n[\"f580\",\"\uE3EB\",124],\n[\"f640\",\"\uE468\",62],\n[\"f680\",\"\uE4A7\",124],\n[\"f740\",\"\uE524\",62],\n[\"f780\",\"\uE563\",124],\n[\"f840\",\"\uE5E0\",62],\n[\"f880\",\"\uE61F\",124],\n[\"f940\",\"\uE69C\"],\n[\"fa40\",\"\u2170\",9,\"\u2160\",9,\"\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u2235\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\"],\n[\"fa80\",\"\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\"],\n[\"fb40\",\"\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\"],\n[\"fb80\",\"\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\"],\n[\"fc40\",\"\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1\"]\n]\n", "[\n[\"0\",\"\\u0000\",127],\n[\"8ea1\",\"\uFF61\",62],\n[\"a1a1\",\"\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\u00B4\uFF40\u00A8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008\",9,\"\uFF0B\uFF0D\u00B1\u00D7\u00F7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\u00B0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\u00A7\u2606\u2605\u25CB\u25CF\u25CE\u25C7\"],\n[\"a2a1\",\"\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013\"],\n[\"a2ba\",\"\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\"],\n[\"a2ca\",\"\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203\"],\n[\"a2dc\",\"\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\"],\n[\"a2f2\",\"\u212B\u2030\u266F\u266D\u266A\u2020\u2021\u00B6\"],\n[\"a2fe\",\"\u25EF\"],\n[\"a3b0\",\"\uFF10\",9],\n[\"a3c1\",\"\uFF21\",25],\n[\"a3e1\",\"\uFF41\",25],\n[\"a4a1\",\"\u3041\",82],\n[\"a5a1\",\"\u30A1\",85],\n[\"a6a1\",\"\u0391\",16,\"\u03A3\",6],\n[\"a6c1\",\"\u03B1\",16,\"\u03C3\",6],\n[\"a7a1\",\"\u0410\",5,\"\u0401\u0416\",25],\n[\"a7d1\",\"\u0430\",5,\"\u0451\u0436\",25],\n[\"a8a1\",\"\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\"],\n[\"ada1\",\"\u2460\",19,\"\u2160\",9],\n[\"adc0\",\"\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1\"],\n[\"addf\",\"\u337B\u301D\u301F\u2116\u33CD\u2121\u32A4\",4,\"\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A\"],\n[\"b0a1\",\"\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D\"],\n[\"b1a1\",\"\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC\"],\n[\"b2a1\",\"\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539\"],\n[\"b3a1\",\"\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431\"],\n[\"b4a1\",\"\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4\"],\n[\"b5a1\",\"\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC\"],\n[\"b6a1\",\"\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48\"],\n[\"b7a1\",\"\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372\"],\n[\"b8a1\",\"\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411\"],\n[\"b9a1\",\"\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC\"],\n[\"baa1\",\"\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237\"],\n[\"bba1\",\"\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642\"],\n[\"bca1\",\"\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468\"],\n[\"bda1\",\"\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F\"],\n[\"bea1\",\"\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE\"],\n[\"bfa1\",\"\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE\"],\n[\"c0a1\",\"\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA\"],\n[\"c1a1\",\"\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E\"],\n[\"c2a1\",\"\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA\"],\n[\"c3a1\",\"\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5\"],\n[\"c4a1\",\"\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013\"],\n[\"c5a1\",\"\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230\"],\n[\"c6a1\",\"\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165\"],\n[\"c7a1\",\"\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6\"],\n[\"c8a1\",\"\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E\"],\n[\"c9a1\",\"\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D\"],\n[\"caa1\",\"\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B\"],\n[\"cba1\",\"\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80\"],\n[\"cca1\",\"\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652\"],\n[\"cda1\",\"\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483\"],\n[\"cea1\",\"\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F\"],\n[\"cfa1\",\"\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155\"],\n[\"d0a1\",\"\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2\"],\n[\"d1a1\",\"\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8\"],\n[\"d2a1\",\"\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8\"],\n[\"d3a1\",\"\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709\"],\n[\"d4a1\",\"\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969\"],\n[\"d5a1\",\"\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53\"],\n[\"d6a1\",\"\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF\"],\n[\"d7a1\",\"\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A\"],\n[\"d8a1\",\"\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B\"],\n[\"d9a1\",\"\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC\"],\n[\"daa1\",\"\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC\"],\n[\"dba1\",\"\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD\"],\n[\"dca1\",\"\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3\"],\n[\"dda1\",\"\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE\"],\n[\"dea1\",\"\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC\"],\n[\"dfa1\",\"\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC\"],\n[\"e0a1\",\"\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1\"],\n[\"e1a1\",\"\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670\"],\n[\"e2a1\",\"\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC\"],\n[\"e3a1\",\"\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50\"],\n[\"e4a1\",\"\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06\"],\n[\"e5a1\",\"\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A\"],\n[\"e6a1\",\"\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B\"],\n[\"e7a1\",\"\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9\"],\n[\"e8a1\",\"\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548\"],\n[\"e9a1\",\"\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759\"],\n[\"eaa1\",\"\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E\"],\n[\"eba1\",\"\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B\"],\n[\"eca1\",\"\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A\"],\n[\"eda1\",\"\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8\"],\n[\"eea1\",\"\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E\"],\n[\"efa1\",\"\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E\"],\n[\"f0a1\",\"\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870\"],\n[\"f1a1\",\"\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7\"],\n[\"f2a1\",\"\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48\"],\n[\"f3a1\",\"\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0\"],\n[\"f4a1\",\"\u582F\u69C7\u9059\u7464\u51DC\u7199\"],\n[\"f9a1\",\"\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\"],\n[\"faa1\",\"\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1\"],\n[\"fba1\",\"\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\"],\n[\"fca1\",\"\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1\"],\n[\"fcf1\",\"\u2170\",9,\"\uFFE2\uFFE4\uFF07\uFF02\"],\n[\"8fa2af\",\"\u02D8\u02C7\u00B8\u02D9\u02DD\u00AF\u02DB\u02DA\uFF5E\u0384\u0385\"],\n[\"8fa2c2\",\"\u00A1\u00A6\u00BF\"],\n[\"8fa2eb\",\"\u00BA\u00AA\u00A9\u00AE\u2122\u00A4\u2116\"],\n[\"8fa6e1\",\"\u0386\u0388\u0389\u038A\u03AA\"],\n[\"8fa6e7\",\"\u038C\"],\n[\"8fa6e9\",\"\u038E\u03AB\"],\n[\"8fa6ec\",\"\u038F\"],\n[\"8fa6f1\",\"\u03AC\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03C2\u03CD\u03CB\u03B0\u03CE\"],\n[\"8fa7c2\",\"\u0402\",10,\"\u040E\u040F\"],\n[\"8fa7f2\",\"\u0452\",10,\"\u045E\u045F\"],\n[\"8fa9a1\",\"\u00C6\u0110\"],\n[\"8fa9a4\",\"\u0126\"],\n[\"8fa9a6\",\"\u0132\"],\n[\"8fa9a8\",\"\u0141\u013F\"],\n[\"8fa9ab\",\"\u014A\u00D8\u0152\"],\n[\"8fa9af\",\"\u0166\u00DE\"],\n[\"8fa9c1\",\"\u00E6\u0111\u00F0\u0127\u0131\u0133\u0138\u0142\u0140\u0149\u014B\u00F8\u0153\u00DF\u0167\u00FE\"],\n[\"8faaa1\",\"\u00C1\u00C0\u00C4\u00C2\u0102\u01CD\u0100\u0104\u00C5\u00C3\u0106\u0108\u010C\u00C7\u010A\u010E\u00C9\u00C8\u00CB\u00CA\u011A\u0116\u0112\u0118\"],\n[\"8faaba\",\"\u011C\u011E\u0122\u0120\u0124\u00CD\u00CC\u00CF\u00CE\u01CF\u0130\u012A\u012E\u0128\u0134\u0136\u0139\u013D\u013B\u0143\u0147\u0145\u00D1\u00D3\u00D2\u00D6\u00D4\u01D1\u0150\u014C\u00D5\u0154\u0158\u0156\u015A\u015C\u0160\u015E\u0164\u0162\u00DA\u00D9\u00DC\u00DB\u016C\u01D3\u0170\u016A\u0172\u016E\u0168\u01D7\u01DB\u01D9\u01D5\u0174\u00DD\u0178\u0176\u0179\u017D\u017B\"],\n[\"8faba1\",\"\u00E1\u00E0\u00E4\u00E2\u0103\u01CE\u0101\u0105\u00E5\u00E3\u0107\u0109\u010D\u00E7\u010B\u010F\u00E9\u00E8\u00EB\u00EA\u011B\u0117\u0113\u0119\u01F5\u011D\u011F\"],\n[\"8fabbd\",\"\u0121\u0125\u00ED\u00EC\u00EF\u00EE\u01D0\"],\n[\"8fabc5\",\"\u012B\u012F\u0129\u0135\u0137\u013A\u013E\u013C\u0144\u0148\u0146\u00F1\u00F3\u00F2\u00F6\u00F4\u01D2\u0151\u014D\u00F5\u0155\u0159\u0157\u015B\u015D\u0161\u015F\u0165\u0163\u00FA\u00F9\u00FC\u00FB\u016D\u01D4\u0171\u016B\u0173\u016F\u0169\u01D8\u01DC\u01DA\u01D6\u0175\u00FD\u00FF\u0177\u017A\u017E\u017C\"],\n[\"8fb0a1\",\"\u4E02\u4E04\u4E05\u4E0C\u4E12\u4E1F\u4E23\u4E24\u4E28\u4E2B\u4E2E\u4E2F\u4E30\u4E35\u4E40\u4E41\u4E44\u4E47\u4E51\u4E5A\u4E5C\u4E63\u4E68\u4E69\u4E74\u4E75\u4E79\u4E7F\u4E8D\u4E96\u4E97\u4E9D\u4EAF\u4EB9\u4EC3\u4ED0\u4EDA\u4EDB\u4EE0\u4EE1\u4EE2\u4EE8\u4EEF\u4EF1\u4EF3\u4EF5\u4EFD\u4EFE\u4EFF\u4F00\u4F02\u4F03\u4F08\u4F0B\u4F0C\u4F12\u4F15\u4F16\u4F17\u4F19\u4F2E\u4F31\u4F60\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E\u4F40\u4F42\u4F48\u4F49\u4F4B\u4F4C\u4F52\u4F54\u4F56\u4F58\u4F5F\u4F63\u4F6A\u4F6C\u4F6E\u4F71\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F7E\u4F81\u4F82\u4F84\"],\n[\"8fb1a1\",\"\u4F85\u4F89\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F94\u4F97\u4F99\u4F9A\u4F9E\u4F9F\u4FB2\u4FB7\u4FB9\u4FBB\u4FBC\u4FBD\u4FBE\u4FC0\u4FC1\u4FC5\u4FC6\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FCF\u4FD2\u4FDC\u4FE0\u4FE2\u4FF0\u4FF2\u4FFC\u4FFD\u4FFF\u5000\u5001\u5004\u5007\u500A\u500C\u500E\u5010\u5013\u5017\u5018\u501B\u501C\u501D\u501E\u5022\u5027\u502E\u5030\u5032\u5033\u5035\u5040\u5041\u5042\u5045\u5046\u504A\u504C\u504E\u5051\u5052\u5053\u5057\u5059\u505F\u5060\u5062\u5063\u5066\u5067\u506A\u506D\u5070\u5071\u503B\u5081\u5083\u5084\u5086\u508A\u508E\u508F\u5090\"],\n[\"8fb2a1\",\"\u5092\u5093\u5094\u5096\u509B\u509C\u509E\",4,\"\u50AA\u50AF\u50B0\u50B9\u50BA\u50BD\u50C0\u50C3\u50C4\u50C7\u50CC\u50CE\u50D0\u50D3\u50D4\u50D8\u50DC\u50DD\u50DF\u50E2\u50E4\u50E6\u50E8\u50E9\u50EF\u50F1\u50F6\u50FA\u50FE\u5103\u5106\u5107\u5108\u510B\u510C\u510D\u510E\u50F2\u5110\u5117\u5119\u511B\u511C\u511D\u511E\u5123\u5127\u5128\u512C\u512D\u512F\u5131\u5133\u5134\u5135\u5138\u5139\u5142\u514A\u514F\u5153\u5155\u5157\u5158\u515F\u5164\u5166\u517E\u5183\u5184\u518B\u518E\u5198\u519D\u51A1\u51A3\u51AD\u51B8\u51BA\u51BC\u51BE\u51BF\u51C2\"],\n[\"8fb3a1\",\"\u51C8\u51CF\u51D1\u51D2\u51D3\u51D5\u51D8\u51DE\u51E2\u51E5\u51EE\u51F2\u51F3\u51F4\u51F7\u5201\u5202\u5205\u5212\u5213\u5215\u5216\u5218\u5222\u5228\u5231\u5232\u5235\u523C\u5245\u5249\u5255\u5257\u5258\u525A\u525C\u525F\u5260\u5261\u5266\u526E\u5277\u5278\u5279\u5280\u5282\u5285\u528A\u528C\u5293\u5295\u5296\u5297\u5298\u529A\u529C\u52A4\u52A5\u52A6\u52A7\u52AF\u52B0\u52B6\u52B7\u52B8\u52BA\u52BB\u52BD\u52C0\u52C4\u52C6\u52C8\u52CC\u52CF\u52D1\u52D4\u52D6\u52DB\u52DC\u52E1\u52E5\u52E8\u52E9\u52EA\u52EC\u52F0\u52F1\u52F4\u52F6\u52F7\u5300\u5303\u530A\u530B\"],\n[\"8fb4a1\",\"\u530C\u5311\u5313\u5318\u531B\u531C\u531E\u531F\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u5330\u5332\u5335\u533C\u533D\u533E\u5342\u534C\u534B\u5359\u535B\u5361\u5363\u5365\u536C\u536D\u5372\u5379\u537E\u5383\u5387\u5388\u538E\u5393\u5394\u5399\u539D\u53A1\u53A4\u53AA\u53AB\u53AF\u53B2\u53B4\u53B5\u53B7\u53B8\u53BA\u53BD\u53C0\u53C5\u53CF\u53D2\u53D3\u53D5\u53DA\u53DD\u53DE\u53E0\u53E6\u53E7\u53F5\u5402\u5413\u541A\u5421\u5427\u5428\u542A\u542F\u5431\u5434\u5435\u5443\u5444\u5447\u544D\u544F\u545E\u5462\u5464\u5466\u5467\u5469\u546B\u546D\u546E\u5474\u547F\"],\n[\"8fb5a1\",\"\u5481\u5483\u5485\u5488\u5489\u548D\u5491\u5495\u5496\u549C\u549F\u54A1\u54A6\u54A7\u54A9\u54AA\u54AD\u54AE\u54B1\u54B7\u54B9\u54BA\u54BB\u54BF\u54C6\u54CA\u54CD\u54CE\u54E0\u54EA\u54EC\u54EF\u54F6\u54FC\u54FE\u54FF\u5500\u5501\u5505\u5508\u5509\u550C\u550D\u550E\u5515\u552A\u552B\u5532\u5535\u5536\u553B\u553C\u553D\u5541\u5547\u5549\u554A\u554D\u5550\u5551\u5558\u555A\u555B\u555E\u5560\u5561\u5564\u5566\u557F\u5581\u5582\u5586\u5588\u558E\u558F\u5591\u5592\u5593\u5594\u5597\u55A3\u55A4\u55AD\u55B2\u55BF\u55C1\u55C3\u55C6\u55C9\u55CB\u55CC\u55CE\u55D1\u55D2\"],\n[\"8fb6a1\",\"\u55D3\u55D7\u55D8\u55DB\u55DE\u55E2\u55E9\u55F6\u55FF\u5605\u5608\u560A\u560D\",5,\"\u5619\u562C\u5630\u5633\u5635\u5637\u5639\u563B\u563C\u563D\u563F\u5640\u5641\u5643\u5644\u5646\u5649\u564B\u564D\u564F\u5654\u565E\u5660\u5661\u5662\u5663\u5666\u5669\u566D\u566F\u5671\u5672\u5675\u5684\u5685\u5688\u568B\u568C\u5695\u5699\u569A\u569D\u569E\u569F\u56A6\u56A7\u56A8\u56A9\u56AB\u56AC\u56AD\u56B1\u56B3\u56B7\u56BE\u56C5\u56C9\u56CA\u56CB\u56CF\u56D0\u56CC\u56CD\u56D9\u56DC\u56DD\u56DF\u56E1\u56E4\",4,\"\u56F1\u56EB\u56ED\"],\n[\"8fb7a1\",\"\u56F6\u56F7\u5701\u5702\u5707\u570A\u570C\u5711\u5715\u571A\u571B\u571D\u5720\u5722\u5723\u5724\u5725\u5729\u572A\u572C\u572E\u572F\u5733\u5734\u573D\u573E\u573F\u5745\u5746\u574C\u574D\u5752\u5762\u5765\u5767\u5768\u576B\u576D\",4,\"\u5773\u5774\u5775\u5777\u5779\u577A\u577B\u577C\u577E\u5781\u5783\u578C\u5794\u5797\u5799\u579A\u579C\u579D\u579E\u579F\u57A1\u5795\u57A7\u57A8\u57A9\u57AC\u57B8\u57BD\u57C7\u57C8\u57CC\u57CF\u57D5\u57DD\u57DE\u57E4\u57E6\u57E7\u57E9\u57ED\u57F0\u57F5\u57F6\u57F8\u57FD\u57FE\u57FF\u5803\u5804\u5808\u5809\u57E1\"],\n[\"8fb8a1\",\"\u580C\u580D\u581B\u581E\u581F\u5820\u5826\u5827\u582D\u5832\u5839\u583F\u5849\u584C\u584D\u584F\u5850\u5855\u585F\u5861\u5864\u5867\u5868\u5878\u587C\u587F\u5880\u5881\u5887\u5888\u5889\u588A\u588C\u588D\u588F\u5890\u5894\u5896\u589D\u58A0\u58A1\u58A2\u58A6\u58A9\u58B1\u58B2\u58C4\u58BC\u58C2\u58C8\u58CD\u58CE\u58D0\u58D2\u58D4\u58D6\u58DA\u58DD\u58E1\u58E2\u58E9\u58F3\u5905\u5906\u590B\u590C\u5912\u5913\u5914\u8641\u591D\u5921\u5923\u5924\u5928\u592F\u5930\u5933\u5935\u5936\u593F\u5943\u5946\u5952\u5953\u5959\u595B\u595D\u595E\u595F\u5961\u5963\u596B\u596D\"],\n[\"8fb9a1\",\"\u596F\u5972\u5975\u5976\u5979\u597B\u597C\u598B\u598C\u598E\u5992\u5995\u5997\u599F\u59A4\u59A7\u59AD\u59AE\u59AF\u59B0\u59B3\u59B7\u59BA\u59BC\u59C1\u59C3\u59C4\u59C8\u59CA\u59CD\u59D2\u59DD\u59DE\u59DF\u59E3\u59E4\u59E7\u59EE\u59EF\u59F1\u59F2\u59F4\u59F7\u5A00\u5A04\u5A0C\u5A0D\u5A0E\u5A12\u5A13\u5A1E\u5A23\u5A24\u5A27\u5A28\u5A2A\u5A2D\u5A30\u5A44\u5A45\u5A47\u5A48\u5A4C\u5A50\u5A55\u5A5E\u5A63\u5A65\u5A67\u5A6D\u5A77\u5A7A\u5A7B\u5A7E\u5A8B\u5A90\u5A93\u5A96\u5A99\u5A9C\u5A9E\u5A9F\u5AA0\u5AA2\u5AA7\u5AAC\u5AB1\u5AB2\u5AB3\u5AB5\u5AB8\u5ABA\u5ABB\u5ABF\"],\n[\"8fbaa1\",\"\u5AC4\u5AC6\u5AC8\u5ACF\u5ADA\u5ADC\u5AE0\u5AE5\u5AEA\u5AEE\u5AF5\u5AF6\u5AFD\u5B00\u5B01\u5B08\u5B17\u5B34\u5B19\u5B1B\u5B1D\u5B21\u5B25\u5B2D\u5B38\u5B41\u5B4B\u5B4C\u5B52\u5B56\u5B5E\u5B68\u5B6E\u5B6F\u5B7C\u5B7D\u5B7E\u5B7F\u5B81\u5B84\u5B86\u5B8A\u5B8E\u5B90\u5B91\u5B93\u5B94\u5B96\u5BA8\u5BA9\u5BAC\u5BAD\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBC\u5BC0\u5BC1\u5BCD\u5BCF\u5BD6\",4,\"\u5BE0\u5BEF\u5BF1\u5BF4\u5BFD\u5C0C\u5C17\u5C1E\u5C1F\u5C23\u5C26\u5C29\u5C2B\u5C2C\u5C2E\u5C30\u5C32\u5C35\u5C36\u5C59\u5C5A\u5C5C\u5C62\u5C63\u5C67\u5C68\u5C69\"],\n[\"8fbba1\",\"\u5C6D\u5C70\u5C74\u5C75\u5C7A\u5C7B\u5C7C\u5C7D\u5C87\u5C88\u5C8A\u5C8F\u5C92\u5C9D\u5C9F\u5CA0\u5CA2\u5CA3\u5CA6\u5CAA\u5CB2\u5CB4\u5CB5\u5CBA\u5CC9\u5CCB\u5CD2\u5CDD\u5CD7\u5CEE\u5CF1\u5CF2\u5CF4\u5D01\u5D06\u5D0D\u5D12\u5D2B\u5D23\u5D24\u5D26\u5D27\u5D31\u5D34\u5D39\u5D3D\u5D3F\u5D42\u5D43\u5D46\u5D48\u5D55\u5D51\u5D59\u5D4A\u5D5F\u5D60\u5D61\u5D62\u5D64\u5D6A\u5D6D\u5D70\u5D79\u5D7A\u5D7E\u5D7F\u5D81\u5D83\u5D88\u5D8A\u5D92\u5D93\u5D94\u5D95\u5D99\u5D9B\u5D9F\u5DA0\u5DA7\u5DAB\u5DB0\u5DB4\u5DB8\u5DB9\u5DC3\u5DC7\u5DCB\u5DD0\u5DCE\u5DD8\u5DD9\u5DE0\u5DE4\"],\n[\"8fbca1\",\"\u5DE9\u5DF8\u5DF9\u5E00\u5E07\u5E0D\u5E12\u5E14\u5E15\u5E18\u5E1F\u5E20\u5E2E\u5E28\u5E32\u5E35\u5E3E\u5E4B\u5E50\u5E49\u5E51\u5E56\u5E58\u5E5B\u5E5C\u5E5E\u5E68\u5E6A\",4,\"\u5E70\u5E80\u5E8B\u5E8E\u5EA2\u5EA4\u5EA5\u5EA8\u5EAA\u5EAC\u5EB1\u5EB3\u5EBD\u5EBE\u5EBF\u5EC6\u5ECC\u5ECB\u5ECE\u5ED1\u5ED2\u5ED4\u5ED5\u5EDC\u5EDE\u5EE5\u5EEB\u5F02\u5F06\u5F07\u5F08\u5F0E\u5F19\u5F1C\u5F1D\u5F21\u5F22\u5F23\u5F24\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F34\u5F36\u5F3B\u5F3D\u5F3F\u5F40\u5F44\u5F45\u5F47\u5F4D\u5F50\u5F54\u5F58\u5F5B\u5F60\u5F63\u5F64\u5F67\"],\n[\"8fbda1\",\"\u5F6F\u5F72\u5F74\u5F75\u5F78\u5F7A\u5F7D\u5F7E\u5F89\u5F8D\u5F8F\u5F96\u5F9C\u5F9D\u5FA2\u5FA7\u5FAB\u5FA4\u5FAC\u5FAF\u5FB0\u5FB1\u5FB8\u5FC4\u5FC7\u5FC8\u5FC9\u5FCB\u5FD0\",4,\"\u5FDE\u5FE1\u5FE2\u5FE8\u5FE9\u5FEA\u5FEC\u5FED\u5FEE\u5FEF\u5FF2\u5FF3\u5FF6\u5FFA\u5FFC\u6007\u600A\u600D\u6013\u6014\u6017\u6018\u601A\u601F\u6024\u602D\u6033\u6035\u6040\u6047\u6048\u6049\u604C\u6051\u6054\u6056\u6057\u605D\u6061\u6067\u6071\u607E\u607F\u6082\u6086\u6088\u608A\u608E\u6091\u6093\u6095\u6098\u609D\u609E\u60A2\u60A4\u60A5\u60A8\u60B0\u60B1\u60B7\"],\n[\"8fbea1\",\"\u60BB\u60BE\u60C2\u60C4\u60C8\u60C9\u60CA\u60CB\u60CE\u60CF\u60D4\u60D5\u60D9\u60DB\u60DD\u60DE\u60E2\u60E5\u60F2\u60F5\u60F8\u60FC\u60FD\u6102\u6107\u610A\u610C\u6110\",4,\"\u6116\u6117\u6119\u611C\u611E\u6122\u612A\u612B\u6130\u6131\u6135\u6136\u6137\u6139\u6141\u6145\u6146\u6149\u615E\u6160\u616C\u6172\u6178\u617B\u617C\u617F\u6180\u6181\u6183\u6184\u618B\u618D\u6192\u6193\u6197\u6198\u619C\u619D\u619F\u61A0\u61A5\u61A8\u61AA\u61AD\u61B8\u61B9\u61BC\u61C0\u61C1\u61C2\u61CE\u61CF\u61D5\u61DC\u61DD\u61DE\u61DF\u61E1\u61E2\u61E7\u61E9\u61E5\"],\n[\"8fbfa1\",\"\u61EC\u61ED\u61EF\u6201\u6203\u6204\u6207\u6213\u6215\u621C\u6220\u6222\u6223\u6227\u6229\u622B\u6239\u623D\u6242\u6243\u6244\u6246\u624C\u6250\u6251\u6252\u6254\u6256\u625A\u625C\u6264\u626D\u626F\u6273\u627A\u627D\u628D\u628E\u628F\u6290\u62A6\u62A8\u62B3\u62B6\u62B7\u62BA\u62BE\u62BF\u62C4\u62CE\u62D5\u62D6\u62DA\u62EA\u62F2\u62F4\u62FC\u62FD\u6303\u6304\u630A\u630B\u630D\u6310\u6313\u6316\u6318\u6329\u632A\u632D\u6335\u6336\u6339\u633C\u6341\u6342\u6343\u6344\u6346\u634A\u634B\u634E\u6352\u6353\u6354\u6358\u635B\u6365\u6366\u636C\u636D\u6371\u6374\u6375\"],\n[\"8fc0a1\",\"\u6378\u637C\u637D\u637F\u6382\u6384\u6387\u638A\u6390\u6394\u6395\u6399\u639A\u639E\u63A4\u63A6\u63AD\u63AE\u63AF\u63BD\u63C1\u63C5\u63C8\u63CE\u63D1\u63D3\u63D4\u63D5\u63DC\u63E0\u63E5\u63EA\u63EC\u63F2\u63F3\u63F5\u63F8\u63F9\u6409\u640A\u6410\u6412\u6414\u6418\u641E\u6420\u6422\u6424\u6425\u6429\u642A\u642F\u6430\u6435\u643D\u643F\u644B\u644F\u6451\u6452\u6453\u6454\u645A\u645B\u645C\u645D\u645F\u6460\u6461\u6463\u646D\u6473\u6474\u647B\u647D\u6485\u6487\u648F\u6490\u6491\u6498\u6499\u649B\u649D\u649F\u64A1\u64A3\u64A6\u64A8\u64AC\u64B3\u64BD\u64BE\u64BF\"],\n[\"8fc1a1\",\"\u64C4\u64C9\u64CA\u64CB\u64CC\u64CE\u64D0\u64D1\u64D5\u64D7\u64E4\u64E5\u64E9\u64EA\u64ED\u64F0\u64F5\u64F7\u64FB\u64FF\u6501\u6504\u6508\u6509\u650A\u650F\u6513\u6514\u6516\u6519\u651B\u651E\u651F\u6522\u6526\u6529\u652E\u6531\u653A\u653C\u653D\u6543\u6547\u6549\u6550\u6552\u6554\u655F\u6560\u6567\u656B\u657A\u657D\u6581\u6585\u658A\u6592\u6595\u6598\u659D\u65A0\u65A3\u65A6\u65AE\u65B2\u65B3\u65B4\u65BF\u65C2\u65C8\u65C9\u65CE\u65D0\u65D4\u65D6\u65D8\u65DF\u65F0\u65F2\u65F4\u65F5\u65F9\u65FE\u65FF\u6600\u6604\u6608\u6609\u660D\u6611\u6612\u6615\u6616\u661D\"],\n[\"8fc2a1\",\"\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6631\u6633\u6639\u6637\u6640\u6645\u6646\u664A\u664C\u6651\u664E\u6657\u6658\u6659\u665B\u665C\u6660\u6661\u66FB\u666A\u666B\u666C\u667E\u6673\u6675\u667F\u6677\u6678\u6679\u667B\u6680\u667C\u668B\u668C\u668D\u6690\u6692\u6699\u669A\u669B\u669C\u669F\u66A0\u66A4\u66AD\u66B1\u66B2\u66B5\u66BB\u66BF\u66C0\u66C2\u66C3\u66C8\u66CC\u66CE\u66CF\u66D4\u66DB\u66DF\u66E8\u66EB\u66EC\u66EE\u66FA\u6705\u6707\u670E\u6713\u6719\u671C\u6720\u6722\u6733\u673E\u6745\u6747\u6748\u674C\u6754\u6755\u675D\"],\n[\"8fc3a1\",\"\u6766\u676C\u676E\u6774\u6776\u677B\u6781\u6784\u678E\u678F\u6791\u6793\u6796\u6798\u6799\u679B\u67B0\u67B1\u67B2\u67B5\u67BB\u67BC\u67BD\u67F9\u67C0\u67C2\u67C3\u67C5\u67C8\u67C9\u67D2\u67D7\u67D9\u67DC\u67E1\u67E6\u67F0\u67F2\u67F6\u67F7\u6852\u6814\u6819\u681D\u681F\u6828\u6827\u682C\u682D\u682F\u6830\u6831\u6833\u683B\u683F\u6844\u6845\u684A\u684C\u6855\u6857\u6858\u685B\u686B\u686E\",4,\"\u6875\u6879\u687A\u687B\u687C\u6882\u6884\u6886\u6888\u6896\u6898\u689A\u689C\u68A1\u68A3\u68A5\u68A9\u68AA\u68AE\u68B2\u68BB\u68C5\u68C8\u68CC\u68CF\"],\n[\"8fc4a1\",\"\u68D0\u68D1\u68D3\u68D6\u68D9\u68DC\u68DD\u68E5\u68E8\u68EA\u68EB\u68EC\u68ED\u68F0\u68F1\u68F5\u68F6\u68FB\u68FC\u68FD\u6906\u6909\u690A\u6910\u6911\u6913\u6916\u6917\u6931\u6933\u6935\u6938\u693B\u6942\u6945\u6949\u694E\u6957\u695B\u6963\u6964\u6965\u6966\u6968\u6969\u696C\u6970\u6971\u6972\u697A\u697B\u697F\u6980\u698D\u6992\u6996\u6998\u69A1\u69A5\u69A6\u69A8\u69AB\u69AD\u69AF\u69B7\u69B8\u69BA\u69BC\u69C5\u69C8\u69D1\u69D6\u69D7\u69E2\u69E5\u69EE\u69EF\u69F1\u69F3\u69F5\u69FE\u6A00\u6A01\u6A03\u6A0F\u6A11\u6A15\u6A1A\u6A1D\u6A20\u6A24\u6A28\u6A30\u6A32\"],\n[\"8fc5a1\",\"\u6A34\u6A37\u6A3B\u6A3E\u6A3F\u6A45\u6A46\u6A49\u6A4A\u6A4E\u6A50\u6A51\u6A52\u6A55\u6A56\u6A5B\u6A64\u6A67\u6A6A\u6A71\u6A73\u6A7E\u6A81\u6A83\u6A86\u6A87\u6A89\u6A8B\u6A91\u6A9B\u6A9D\u6A9E\u6A9F\u6AA5\u6AAB\u6AAF\u6AB0\u6AB1\u6AB4\u6ABD\u6ABE\u6ABF\u6AC6\u6AC9\u6AC8\u6ACC\u6AD0\u6AD4\u6AD5\u6AD6\u6ADC\u6ADD\u6AE4\u6AE7\u6AEC\u6AF0\u6AF1\u6AF2\u6AFC\u6AFD\u6B02\u6B03\u6B06\u6B07\u6B09\u6B0F\u6B10\u6B11\u6B17\u6B1B\u6B1E\u6B24\u6B28\u6B2B\u6B2C\u6B2F\u6B35\u6B36\u6B3B\u6B3F\u6B46\u6B4A\u6B4D\u6B52\u6B56\u6B58\u6B5D\u6B60\u6B67\u6B6B\u6B6E\u6B70\u6B75\u6B7D\"],\n[\"8fc6a1\",\"\u6B7E\u6B82\u6B85\u6B97\u6B9B\u6B9F\u6BA0\u6BA2\u6BA3\u6BA8\u6BA9\u6BAC\u6BAD\u6BAE\u6BB0\u6BB8\u6BB9\u6BBD\u6BBE\u6BC3\u6BC4\u6BC9\u6BCC\u6BD6\u6BDA\u6BE1\u6BE3\u6BE6\u6BE7\u6BEE\u6BF1\u6BF7\u6BF9\u6BFF\u6C02\u6C04\u6C05\u6C09\u6C0D\u6C0E\u6C10\u6C12\u6C19\u6C1F\u6C26\u6C27\u6C28\u6C2C\u6C2E\u6C33\u6C35\u6C36\u6C3A\u6C3B\u6C3F\u6C4A\u6C4B\u6C4D\u6C4F\u6C52\u6C54\u6C59\u6C5B\u6C5C\u6C6B\u6C6D\u6C6F\u6C74\u6C76\u6C78\u6C79\u6C7B\u6C85\u6C86\u6C87\u6C89\u6C94\u6C95\u6C97\u6C98\u6C9C\u6C9F\u6CB0\u6CB2\u6CB4\u6CC2\u6CC6\u6CCD\u6CCF\u6CD0\u6CD1\u6CD2\u6CD4\u6CD6\"],\n[\"8fc7a1\",\"\u6CDA\u6CDC\u6CE0\u6CE7\u6CE9\u6CEB\u6CEC\u6CEE\u6CF2\u6CF4\u6D04\u6D07\u6D0A\u6D0E\u6D0F\u6D11\u6D13\u6D1A\u6D26\u6D27\u6D28\u6C67\u6D2E\u6D2F\u6D31\u6D39\u6D3C\u6D3F\u6D57\u6D5E\u6D5F\u6D61\u6D65\u6D67\u6D6F\u6D70\u6D7C\u6D82\u6D87\u6D91\u6D92\u6D94\u6D96\u6D97\u6D98\u6DAA\u6DAC\u6DB4\u6DB7\u6DB9\u6DBD\u6DBF\u6DC4\u6DC8\u6DCA\u6DCE\u6DCF\u6DD6\u6DDB\u6DDD\u6DDF\u6DE0\u6DE2\u6DE5\u6DE9\u6DEF\u6DF0\u6DF4\u6DF6\u6DFC\u6E00\u6E04\u6E1E\u6E22\u6E27\u6E32\u6E36\u6E39\u6E3B\u6E3C\u6E44\u6E45\u6E48\u6E49\u6E4B\u6E4F\u6E51\u6E52\u6E53\u6E54\u6E57\u6E5C\u6E5D\u6E5E\"],\n[\"8fc8a1\",\"\u6E62\u6E63\u6E68\u6E73\u6E7B\u6E7D\u6E8D\u6E93\u6E99\u6EA0\u6EA7\u6EAD\u6EAE\u6EB1\u6EB3\u6EBB\u6EBF\u6EC0\u6EC1\u6EC3\u6EC7\u6EC8\u6ECA\u6ECD\u6ECE\u6ECF\u6EEB\u6EED\u6EEE\u6EF9\u6EFB\u6EFD\u6F04\u6F08\u6F0A\u6F0C\u6F0D\u6F16\u6F18\u6F1A\u6F1B\u6F26\u6F29\u6F2A\u6F2F\u6F30\u6F33\u6F36\u6F3B\u6F3C\u6F2D\u6F4F\u6F51\u6F52\u6F53\u6F57\u6F59\u6F5A\u6F5D\u6F5E\u6F61\u6F62\u6F68\u6F6C\u6F7D\u6F7E\u6F83\u6F87\u6F88\u6F8B\u6F8C\u6F8D\u6F90\u6F92\u6F93\u6F94\u6F96\u6F9A\u6F9F\u6FA0\u6FA5\u6FA6\u6FA7\u6FA8\u6FAE\u6FAF\u6FB0\u6FB5\u6FB6\u6FBC\u6FC5\u6FC7\u6FC8\u6FCA\"],\n[\"8fc9a1\",\"\u6FDA\u6FDE\u6FE8\u6FE9\u6FF0\u6FF5\u6FF9\u6FFC\u6FFD\u7000\u7005\u7006\u7007\u700D\u7017\u7020\u7023\u702F\u7034\u7037\u7039\u703C\u7043\u7044\u7048\u7049\u704A\u704B\u7054\u7055\u705D\u705E\u704E\u7064\u7065\u706C\u706E\u7075\u7076\u707E\u7081\u7085\u7086\u7094\",4,\"\u709B\u70A4\u70AB\u70B0\u70B1\u70B4\u70B7\u70CA\u70D1\u70D3\u70D4\u70D5\u70D6\u70D8\u70DC\u70E4\u70FA\u7103\",4,\"\u710B\u710C\u710F\u711E\u7120\u712B\u712D\u712F\u7130\u7131\u7138\u7141\u7145\u7146\u7147\u714A\u714B\u7150\u7152\u7157\u715A\u715C\u715E\u7160\"],\n[\"8fcaa1\",\"\u7168\u7179\u7180\u7185\u7187\u718C\u7192\u719A\u719B\u71A0\u71A2\u71AF\u71B0\u71B2\u71B3\u71BA\u71BF\u71C0\u71C1\u71C4\u71CB\u71CC\u71D3\u71D6\u71D9\u71DA\u71DC\u71F8\u71FE\u7200\u7207\u7208\u7209\u7213\u7217\u721A\u721D\u721F\u7224\u722B\u722F\u7234\u7238\u7239\u7241\u7242\u7243\u7245\u724E\u724F\u7250\u7253\u7255\u7256\u725A\u725C\u725E\u7260\u7263\u7268\u726B\u726E\u726F\u7271\u7277\u7278\u727B\u727C\u727F\u7284\u7289\u728D\u728E\u7293\u729B\u72A8\u72AD\u72AE\u72B1\u72B4\u72BE\u72C1\u72C7\u72C9\u72CC\u72D5\u72D6\u72D8\u72DF\u72E5\u72F3\u72F4\u72FA\u72FB\"],\n[\"8fcba1\",\"\u72FE\u7302\u7304\u7305\u7307\u730B\u730D\u7312\u7313\u7318\u7319\u731E\u7322\u7324\u7327\u7328\u732C\u7331\u7332\u7335\u733A\u733B\u733D\u7343\u734D\u7350\u7352\u7356\u7358\u735D\u735E\u735F\u7360\u7366\u7367\u7369\u736B\u736C\u736E\u736F\u7371\u7377\u7379\u737C\u7380\u7381\u7383\u7385\u7386\u738E\u7390\u7393\u7395\u7397\u7398\u739C\u739E\u739F\u73A0\u73A2\u73A5\u73A6\u73AA\u73AB\u73AD\u73B5\u73B7\u73B9\u73BC\u73BD\u73BF\u73C5\u73C6\u73C9\u73CB\u73CC\u73CF\u73D2\u73D3\u73D6\u73D9\u73DD\u73E1\u73E3\u73E6\u73E7\u73E9\u73F4\u73F5\u73F7\u73F9\u73FA\u73FB\u73FD\"],\n[\"8fcca1\",\"\u73FF\u7400\u7401\u7404\u7407\u740A\u7411\u741A\u741B\u7424\u7426\u7428\",9,\"\u7439\u7440\u7443\u7444\u7446\u7447\u744B\u744D\u7451\u7452\u7457\u745D\u7462\u7466\u7467\u7468\u746B\u746D\u746E\u7471\u7472\u7480\u7481\u7485\u7486\u7487\u7489\u748F\u7490\u7491\u7492\u7498\u7499\u749A\u749C\u749F\u74A0\u74A1\u74A3\u74A6\u74A8\u74A9\u74AA\u74AB\u74AE\u74AF\u74B1\u74B2\u74B5\u74B9\u74BB\u74BF\u74C8\u74C9\u74CC\u74D0\u74D3\u74D8\u74DA\u74DB\u74DE\u74DF\u74E4\u74E8\u74EA\u74EB\u74EF\u74F4\u74FA\u74FB\u74FC\u74FF\u7506\"],\n[\"8fcda1\",\"\u7512\u7516\u7517\u7520\u7521\u7524\u7527\u7529\u752A\u752F\u7536\u7539\u753D\u753E\u753F\u7540\u7543\u7547\u7548\u754E\u7550\u7552\u7557\u755E\u755F\u7561\u756F\u7571\u7579\",5,\"\u7581\u7585\u7590\u7592\u7593\u7595\u7599\u759C\u75A2\u75A4\u75B4\u75BA\u75BF\u75C0\u75C1\u75C4\u75C6\u75CC\u75CE\u75CF\u75D7\u75DC\u75DF\u75E0\u75E1\u75E4\u75E7\u75EC\u75EE\u75EF\u75F1\u75F9\u7600\u7602\u7603\u7604\u7607\u7608\u760A\u760C\u760F\u7612\u7613\u7615\u7616\u7619\u761B\u761C\u761D\u761E\u7623\u7625\u7626\u7629\u762D\u7632\u7633\u7635\u7638\u7639\"],\n[\"8fcea1\",\"\u763A\u763C\u764A\u7640\u7641\u7643\u7644\u7645\u7649\u764B\u7655\u7659\u765F\u7664\u7665\u766D\u766E\u766F\u7671\u7674\u7681\u7685\u768C\u768D\u7695\u769B\u769C\u769D\u769F\u76A0\u76A2\",6,\"\u76AA\u76AD\u76BD\u76C1\u76C5\u76C9\u76CB\u76CC\u76CE\u76D4\u76D9\u76E0\u76E6\u76E8\u76EC\u76F0\u76F1\u76F6\u76F9\u76FC\u7700\u7706\u770A\u770E\u7712\u7714\u7715\u7717\u7719\u771A\u771C\u7722\u7728\u772D\u772E\u772F\u7734\u7735\u7736\u7739\u773D\u773E\u7742\u7745\u7746\u774A\u774D\u774E\u774F\u7752\u7756\u7757\u775C\u775E\u775F\u7760\u7762\"],\n[\"8fcfa1\",\"\u7764\u7767\u776A\u776C\u7770\u7772\u7773\u7774\u777A\u777D\u7780\u7784\u778C\u778D\u7794\u7795\u7796\u779A\u779F\u77A2\u77A7\u77AA\u77AE\u77AF\u77B1\u77B5\u77BE\u77C3\u77C9\u77D1\u77D2\u77D5\u77D9\u77DE\u77DF\u77E0\u77E4\u77E6\u77EA\u77EC\u77F0\u77F1\u77F4\u77F8\u77FB\u7805\u7806\u7809\u780D\u780E\u7811\u781D\u7821\u7822\u7823\u782D\u782E\u7830\u7835\u7837\u7843\u7844\u7847\u7848\u784C\u784E\u7852\u785C\u785E\u7860\u7861\u7863\u7864\u7868\u786A\u786E\u787A\u787E\u788A\u788F\u7894\u7898\u78A1\u789D\u789E\u789F\u78A4\u78A8\u78AC\u78AD\u78B0\u78B1\u78B2\u78B3\"],\n[\"8fd0a1\",\"\u78BB\u78BD\u78BF\u78C7\u78C8\u78C9\u78CC\u78CE\u78D2\u78D3\u78D5\u78D6\u78E4\u78DB\u78DF\u78E0\u78E1\u78E6\u78EA\u78F2\u78F3\u7900\u78F6\u78F7\u78FA\u78FB\u78FF\u7906\u790C\u7910\u791A\u791C\u791E\u791F\u7920\u7925\u7927\u7929\u792D\u7931\u7934\u7935\u793B\u793D\u793F\u7944\u7945\u7946\u794A\u794B\u794F\u7951\u7954\u7958\u795B\u795C\u7967\u7969\u796B\u7972\u7979\u797B\u797C\u797E\u798B\u798C\u7991\u7993\u7994\u7995\u7996\u7998\u799B\u799C\u79A1\u79A8\u79A9\u79AB\u79AF\u79B1\u79B4\u79B8\u79BB\u79C2\u79C4\u79C7\u79C8\u79CA\u79CF\u79D4\u79D6\u79DA\u79DD\u79DE\"],\n[\"8fd1a1\",\"\u79E0\u79E2\u79E5\u79EA\u79EB\u79ED\u79F1\u79F8\u79FC\u7A02\u7A03\u7A07\u7A09\u7A0A\u7A0C\u7A11\u7A15\u7A1B\u7A1E\u7A21\u7A27\u7A2B\u7A2D\u7A2F\u7A30\u7A34\u7A35\u7A38\u7A39\u7A3A\u7A44\u7A45\u7A47\u7A48\u7A4C\u7A55\u7A56\u7A59\u7A5C\u7A5D\u7A5F\u7A60\u7A65\u7A67\u7A6A\u7A6D\u7A75\u7A78\u7A7E\u7A80\u7A82\u7A85\u7A86\u7A8A\u7A8B\u7A90\u7A91\u7A94\u7A9E\u7AA0\u7AA3\u7AAC\u7AB3\u7AB5\u7AB9\u7ABB\u7ABC\u7AC6\u7AC9\u7ACC\u7ACE\u7AD1\u7ADB\u7AE8\u7AE9\u7AEB\u7AEC\u7AF1\u7AF4\u7AFB\u7AFD\u7AFE\u7B07\u7B14\u7B1F\u7B23\u7B27\u7B29\u7B2A\u7B2B\u7B2D\u7B2E\u7B2F\u7B30\"],\n[\"8fd2a1\",\"\u7B31\u7B34\u7B3D\u7B3F\u7B40\u7B41\u7B47\u7B4E\u7B55\u7B60\u7B64\u7B66\u7B69\u7B6A\u7B6D\u7B6F\u7B72\u7B73\u7B77\u7B84\u7B89\u7B8E\u7B90\u7B91\u7B96\u7B9B\u7B9E\u7BA0\u7BA5\u7BAC\u7BAF\u7BB0\u7BB2\u7BB5\u7BB6\u7BBA\u7BBB\u7BBC\u7BBD\u7BC2\u7BC5\u7BC8\u7BCA\u7BD4\u7BD6\u7BD7\u7BD9\u7BDA\u7BDB\u7BE8\u7BEA\u7BF2\u7BF4\u7BF5\u7BF8\u7BF9\u7BFA\u7BFC\u7BFE\u7C01\u7C02\u7C03\u7C04\u7C06\u7C09\u7C0B\u7C0C\u7C0E\u7C0F\u7C19\u7C1B\u7C20\u7C25\u7C26\u7C28\u7C2C\u7C31\u7C33\u7C34\u7C36\u7C39\u7C3A\u7C46\u7C4A\u7C55\u7C51\u7C52\u7C53\u7C59\",5],\n[\"8fd3a1\",\"\u7C61\u7C63\u7C67\u7C69\u7C6D\u7C6E\u7C70\u7C72\u7C79\u7C7C\u7C7D\u7C86\u7C87\u7C8F\u7C94\u7C9E\u7CA0\u7CA6\u7CB0\u7CB6\u7CB7\u7CBA\u7CBB\u7CBC\u7CBF\u7CC4\u7CC7\u7CC8\u7CC9\u7CCD\u7CCF\u7CD3\u7CD4\u7CD5\u7CD7\u7CD9\u7CDA\u7CDD\u7CE6\u7CE9\u7CEB\u7CF5\u7D03\u7D07\u7D08\u7D09\u7D0F\u7D11\u7D12\u7D13\u7D16\u7D1D\u7D1E\u7D23\u7D26\u7D2A\u7D2D\u7D31\u7D3C\u7D3D\u7D3E\u7D40\u7D41\u7D47\u7D48\u7D4D\u7D51\u7D53\u7D57\u7D59\u7D5A\u7D5C\u7D5D\u7D65\u7D67\u7D6A\u7D70\u7D78\u7D7A\u7D7B\u7D7F\u7D81\u7D82\u7D83\u7D85\u7D86\u7D88\u7D8B\u7D8C\u7D8D\u7D91\u7D96\u7D97\u7D9D\"],\n[\"8fd4a1\",\"\u7D9E\u7DA6\u7DA7\u7DAA\u7DB3\u7DB6\u7DB7\u7DB9\u7DC2\",4,\"\u7DCC\u7DCD\u7DCE\u7DD7\u7DD9\u7E00\u7DE2\u7DE5\u7DE6\u7DEA\u7DEB\u7DED\u7DF1\u7DF5\u7DF6\u7DF9\u7DFA\u7E08\u7E10\u7E11\u7E15\u7E17\u7E1C\u7E1D\u7E20\u7E27\u7E28\u7E2C\u7E2D\u7E2F\u7E33\u7E36\u7E3F\u7E44\u7E45\u7E47\u7E4E\u7E50\u7E52\u7E58\u7E5F\u7E61\u7E62\u7E65\u7E6B\u7E6E\u7E6F\u7E73\u7E78\u7E7E\u7E81\u7E86\u7E87\u7E8A\u7E8D\u7E91\u7E95\u7E98\u7E9A\u7E9D\u7E9E\u7F3C\u7F3B\u7F3D\u7F3E\u7F3F\u7F43\u7F44\u7F47\u7F4F\u7F52\u7F53\u7F5B\u7F5C\u7F5D\u7F61\u7F63\u7F64\u7F65\u7F66\u7F6D\"],\n[\"8fd5a1\",\"\u7F71\u7F7D\u7F7E\u7F7F\u7F80\u7F8B\u7F8D\u7F8F\u7F90\u7F91\u7F96\u7F97\u7F9C\u7FA1\u7FA2\u7FA6\u7FAA\u7FAD\u7FB4\u7FBC\u7FBF\u7FC0\u7FC3\u7FC8\u7FCE\u7FCF\u7FDB\u7FDF\u7FE3\u7FE5\u7FE8\u7FEC\u7FEE\u7FEF\u7FF2\u7FFA\u7FFD\u7FFE\u7FFF\u8007\u8008\u800A\u800D\u800E\u800F\u8011\u8013\u8014\u8016\u801D\u801E\u801F\u8020\u8024\u8026\u802C\u802E\u8030\u8034\u8035\u8037\u8039\u803A\u803C\u803E\u8040\u8044\u8060\u8064\u8066\u806D\u8071\u8075\u8081\u8088\u808E\u809C\u809E\u80A6\u80A7\u80AB\u80B8\u80B9\u80C8\u80CD\u80CF\u80D2\u80D4\u80D5\u80D7\u80D8\u80E0\u80ED\u80EE\"],\n[\"8fd6a1\",\"\u80F0\u80F2\u80F3\u80F6\u80F9\u80FA\u80FE\u8103\u810B\u8116\u8117\u8118\u811C\u811E\u8120\u8124\u8127\u812C\u8130\u8135\u813A\u813C\u8145\u8147\u814A\u814C\u8152\u8157\u8160\u8161\u8167\u8168\u8169\u816D\u816F\u8177\u8181\u8190\u8184\u8185\u8186\u818B\u818E\u8196\u8198\u819B\u819E\u81A2\u81AE\u81B2\u81B4\u81BB\u81CB\u81C3\u81C5\u81CA\u81CE\u81CF\u81D5\u81D7\u81DB\u81DD\u81DE\u81E1\u81E4\u81EB\u81EC\u81F0\u81F1\u81F2\u81F5\u81F6\u81F8\u81F9\u81FD\u81FF\u8200\u8203\u820F\u8213\u8214\u8219\u821A\u821D\u8221\u8222\u8228\u8232\u8234\u823A\u8243\u8244\u8245\u8246\"],\n[\"8fd7a1\",\"\u824B\u824E\u824F\u8251\u8256\u825C\u8260\u8263\u8267\u826D\u8274\u827B\u827D\u827F\u8280\u8281\u8283\u8284\u8287\u8289\u828A\u828E\u8291\u8294\u8296\u8298\u829A\u829B\u82A0\u82A1\u82A3\u82A4\u82A7\u82A8\u82A9\u82AA\u82AE\u82B0\u82B2\u82B4\u82B7\u82BA\u82BC\u82BE\u82BF\u82C6\u82D0\u82D5\u82DA\u82E0\u82E2\u82E4\u82E8\u82EA\u82ED\u82EF\u82F6\u82F7\u82FD\u82FE\u8300\u8301\u8307\u8308\u830A\u830B\u8354\u831B\u831D\u831E\u831F\u8321\u8322\u832C\u832D\u832E\u8330\u8333\u8337\u833A\u833C\u833D\u8342\u8343\u8344\u8347\u834D\u834E\u8351\u8355\u8356\u8357\u8370\u8378\"],\n[\"8fd8a1\",\"\u837D\u837F\u8380\u8382\u8384\u8386\u838D\u8392\u8394\u8395\u8398\u8399\u839B\u839C\u839D\u83A6\u83A7\u83A9\u83AC\u83BE\u83BF\u83C0\u83C7\u83C9\u83CF\u83D0\u83D1\u83D4\u83DD\u8353\u83E8\u83EA\u83F6\u83F8\u83F9\u83FC\u8401\u8406\u840A\u840F\u8411\u8415\u8419\u83AD\u842F\u8439\u8445\u8447\u8448\u844A\u844D\u844F\u8451\u8452\u8456\u8458\u8459\u845A\u845C\u8460\u8464\u8465\u8467\u846A\u8470\u8473\u8474\u8476\u8478\u847C\u847D\u8481\u8485\u8492\u8493\u8495\u849E\u84A6\u84A8\u84A9\u84AA\u84AF\u84B1\u84B4\u84BA\u84BD\u84BE\u84C0\u84C2\u84C7\u84C8\u84CC\u84CF\u84D3\"],\n[\"8fd9a1\",\"\u84DC\u84E7\u84EA\u84EF\u84F0\u84F1\u84F2\u84F7\u8532\u84FA\u84FB\u84FD\u8502\u8503\u8507\u850C\u850E\u8510\u851C\u851E\u8522\u8523\u8524\u8525\u8527\u852A\u852B\u852F\u8533\u8534\u8536\u853F\u8546\u854F\",4,\"\u8556\u8559\u855C\",6,\"\u8564\u856B\u856F\u8579\u857A\u857B\u857D\u857F\u8581\u8585\u8586\u8589\u858B\u858C\u858F\u8593\u8598\u859D\u859F\u85A0\u85A2\u85A5\u85A7\u85B4\u85B6\u85B7\u85B8\u85BC\u85BD\u85BE\u85BF\u85C2\u85C7\u85CA\u85CB\u85CE\u85AD\u85D8\u85DA\u85DF\u85E0\u85E6\u85E8\u85ED\u85F3\u85F6\u85FC\"],\n[\"8fdaa1\",\"\u85FF\u8600\u8604\u8605\u860D\u860E\u8610\u8611\u8612\u8618\u8619\u861B\u861E\u8621\u8627\u8629\u8636\u8638\u863A\u863C\u863D\u8640\u8642\u8646\u8652\u8653\u8656\u8657\u8658\u8659\u865D\u8660\",4,\"\u8669\u866C\u866F\u8675\u8676\u8677\u867A\u868D\u8691\u8696\u8698\u869A\u869C\u86A1\u86A6\u86A7\u86A8\u86AD\u86B1\u86B3\u86B4\u86B5\u86B7\u86B8\u86B9\u86BF\u86C0\u86C1\u86C3\u86C5\u86D1\u86D2\u86D5\u86D7\u86DA\u86DC\u86E0\u86E3\u86E5\u86E7\u8688\u86FA\u86FC\u86FD\u8704\u8705\u8707\u870B\u870E\u870F\u8710\u8713\u8714\u8719\u871E\u871F\u8721\u8723\"],\n[\"8fdba1\",\"\u8728\u872E\u872F\u8731\u8732\u8739\u873A\u873C\u873D\u873E\u8740\u8743\u8745\u874D\u8758\u875D\u8761\u8764\u8765\u876F\u8771\u8772\u877B\u8783\",6,\"\u878B\u878C\u8790\u8793\u8795\u8797\u8798\u8799\u879E\u87A0\u87A3\u87A7\u87AC\u87AD\u87AE\u87B1\u87B5\u87BE\u87BF\u87C1\u87C8\u87C9\u87CA\u87CE\u87D5\u87D6\u87D9\u87DA\u87DC\u87DF\u87E2\u87E3\u87E4\u87EA\u87EB\u87ED\u87F1\u87F3\u87F8\u87FA\u87FF\u8801\u8803\u8806\u8809\u880A\u880B\u8810\u8819\u8812\u8813\u8814\u8818\u881A\u881B\u881C\u881E\u881F\u8828\u882D\u882E\u8830\u8832\u8835\"],\n[\"8fdca1\",\"\u883A\u883C\u8841\u8843\u8845\u8848\u8849\u884A\u884B\u884E\u8851\u8855\u8856\u8858\u885A\u885C\u885F\u8860\u8864\u8869\u8871\u8879\u887B\u8880\u8898\u889A\u889B\u889C\u889F\u88A0\u88A8\u88AA\u88BA\u88BD\u88BE\u88C0\u88CA\",4,\"\u88D1\u88D2\u88D3\u88DB\u88DE\u88E7\u88EF\u88F0\u88F1\u88F5\u88F7\u8901\u8906\u890D\u890E\u890F\u8915\u8916\u8918\u8919\u891A\u891C\u8920\u8926\u8927\u8928\u8930\u8931\u8932\u8935\u8939\u893A\u893E\u8940\u8942\u8945\u8946\u8949\u894F\u8952\u8957\u895A\u895B\u895C\u8961\u8962\u8963\u896B\u896E\u8970\u8973\u8975\u897A\"],\n[\"8fdda1\",\"\u897B\u897C\u897D\u8989\u898D\u8990\u8994\u8995\u899B\u899C\u899F\u89A0\u89A5\u89B0\u89B4\u89B5\u89B6\u89B7\u89BC\u89D4\",4,\"\u89E5\u89E9\u89EB\u89ED\u89F1\u89F3\u89F6\u89F9\u89FD\u89FF\u8A04\u8A05\u8A07\u8A0F\u8A11\u8A12\u8A14\u8A15\u8A1E\u8A20\u8A22\u8A24\u8A26\u8A2B\u8A2C\u8A2F\u8A35\u8A37\u8A3D\u8A3E\u8A40\u8A43\u8A45\u8A47\u8A49\u8A4D\u8A4E\u8A53\u8A56\u8A57\u8A58\u8A5C\u8A5D\u8A61\u8A65\u8A67\u8A75\u8A76\u8A77\u8A79\u8A7A\u8A7B\u8A7E\u8A7F\u8A80\u8A83\u8A86\u8A8B\u8A8F\u8A90\u8A92\u8A96\u8A97\u8A99\u8A9F\u8AA7\u8AA9\u8AAE\u8AAF\u8AB3\"],\n[\"8fdea1\",\"\u8AB6\u8AB7\u8ABB\u8ABE\u8AC3\u8AC6\u8AC8\u8AC9\u8ACA\u8AD1\u8AD3\u8AD4\u8AD5\u8AD7\u8ADD\u8ADF\u8AEC\u8AF0\u8AF4\u8AF5\u8AF6\u8AFC\u8AFF\u8B05\u8B06\u8B0B\u8B11\u8B1C\u8B1E\u8B1F\u8B0A\u8B2D\u8B30\u8B37\u8B3C\u8B42\",4,\"\u8B48\u8B52\u8B53\u8B54\u8B59\u8B4D\u8B5E\u8B63\u8B6D\u8B76\u8B78\u8B79\u8B7C\u8B7E\u8B81\u8B84\u8B85\u8B8B\u8B8D\u8B8F\u8B94\u8B95\u8B9C\u8B9E\u8B9F\u8C38\u8C39\u8C3D\u8C3E\u8C45\u8C47\u8C49\u8C4B\u8C4F\u8C51\u8C53\u8C54\u8C57\u8C58\u8C5B\u8C5D\u8C59\u8C63\u8C64\u8C66\u8C68\u8C69\u8C6D\u8C73\u8C75\u8C76\u8C7B\u8C7E\u8C86\"],\n[\"8fdfa1\",\"\u8C87\u8C8B\u8C90\u8C92\u8C93\u8C99\u8C9B\u8C9C\u8CA4\u8CB9\u8CBA\u8CC5\u8CC6\u8CC9\u8CCB\u8CCF\u8CD6\u8CD5\u8CD9\u8CDD\u8CE1\u8CE8\u8CEC\u8CEF\u8CF0\u8CF2\u8CF5\u8CF7\u8CF8\u8CFE\u8CFF\u8D01\u8D03\u8D09\u8D12\u8D17\u8D1B\u8D65\u8D69\u8D6C\u8D6E\u8D7F\u8D82\u8D84\u8D88\u8D8D\u8D90\u8D91\u8D95\u8D9E\u8D9F\u8DA0\u8DA6\u8DAB\u8DAC\u8DAF\u8DB2\u8DB5\u8DB7\u8DB9\u8DBB\u8DC0\u8DC5\u8DC6\u8DC7\u8DC8\u8DCA\u8DCE\u8DD1\u8DD4\u8DD5\u8DD7\u8DD9\u8DE4\u8DE5\u8DE7\u8DEC\u8DF0\u8DBC\u8DF1\u8DF2\u8DF4\u8DFD\u8E01\u8E04\u8E05\u8E06\u8E0B\u8E11\u8E14\u8E16\u8E20\u8E21\u8E22\"],\n[\"8fe0a1\",\"\u8E23\u8E26\u8E27\u8E31\u8E33\u8E36\u8E37\u8E38\u8E39\u8E3D\u8E40\u8E41\u8E4B\u8E4D\u8E4E\u8E4F\u8E54\u8E5B\u8E5C\u8E5D\u8E5E\u8E61\u8E62\u8E69\u8E6C\u8E6D\u8E6F\u8E70\u8E71\u8E79\u8E7A\u8E7B\u8E82\u8E83\u8E89\u8E90\u8E92\u8E95\u8E9A\u8E9B\u8E9D\u8E9E\u8EA2\u8EA7\u8EA9\u8EAD\u8EAE\u8EB3\u8EB5\u8EBA\u8EBB\u8EC0\u8EC1\u8EC3\u8EC4\u8EC7\u8ECF\u8ED1\u8ED4\u8EDC\u8EE8\u8EEE\u8EF0\u8EF1\u8EF7\u8EF9\u8EFA\u8EED\u8F00\u8F02\u8F07\u8F08\u8F0F\u8F10\u8F16\u8F17\u8F18\u8F1E\u8F20\u8F21\u8F23\u8F25\u8F27\u8F28\u8F2C\u8F2D\u8F2E\u8F34\u8F35\u8F36\u8F37\u8F3A\u8F40\u8F41\"],\n[\"8fe1a1\",\"\u8F43\u8F47\u8F4F\u8F51\",4,\"\u8F58\u8F5D\u8F5E\u8F65\u8F9D\u8FA0\u8FA1\u8FA4\u8FA5\u8FA6\u8FB5\u8FB6\u8FB8\u8FBE\u8FC0\u8FC1\u8FC6\u8FCA\u8FCB\u8FCD\u8FD0\u8FD2\u8FD3\u8FD5\u8FE0\u8FE3\u8FE4\u8FE8\u8FEE\u8FF1\u8FF5\u8FF6\u8FFB\u8FFE\u9002\u9004\u9008\u900C\u9018\u901B\u9028\u9029\u902F\u902A\u902C\u902D\u9033\u9034\u9037\u903F\u9043\u9044\u904C\u905B\u905D\u9062\u9066\u9067\u906C\u9070\u9074\u9079\u9085\u9088\u908B\u908C\u908E\u9090\u9095\u9097\u9098\u9099\u909B\u90A0\u90A1\u90A2\u90A5\u90B0\u90B2\u90B3\u90B4\u90B6\u90BD\u90CC\u90BE\u90C3\"],\n[\"8fe2a1\",\"\u90C4\u90C5\u90C7\u90C8\u90D5\u90D7\u90D8\u90D9\u90DC\u90DD\u90DF\u90E5\u90D2\u90F6\u90EB\u90EF\u90F0\u90F4\u90FE\u90FF\u9100\u9104\u9105\u9106\u9108\u910D\u9110\u9114\u9116\u9117\u9118\u911A\u911C\u911E\u9120\u9125\u9122\u9123\u9127\u9129\u912E\u912F\u9131\u9134\u9136\u9137\u9139\u913A\u913C\u913D\u9143\u9147\u9148\u914F\u9153\u9157\u9159\u915A\u915B\u9161\u9164\u9167\u916D\u9174\u9179\u917A\u917B\u9181\u9183\u9185\u9186\u918A\u918E\u9191\u9193\u9194\u9195\u9198\u919E\u91A1\u91A6\u91A8\u91AC\u91AD\u91AE\u91B0\u91B1\u91B2\u91B3\u91B6\u91BB\u91BC\u91BD\u91BF\"],\n[\"8fe3a1\",\"\u91C2\u91C3\u91C5\u91D3\u91D4\u91D7\u91D9\u91DA\u91DE\u91E4\u91E5\u91E9\u91EA\u91EC\",5,\"\u91F7\u91F9\u91FB\u91FD\u9200\u9201\u9204\u9205\u9206\u9207\u9209\u920A\u920C\u9210\u9212\u9213\u9216\u9218\u921C\u921D\u9223\u9224\u9225\u9226\u9228\u922E\u922F\u9230\u9233\u9235\u9236\u9238\u9239\u923A\u923C\u923E\u9240\u9242\u9243\u9246\u9247\u924A\u924D\u924E\u924F\u9251\u9258\u9259\u925C\u925D\u9260\u9261\u9265\u9267\u9268\u9269\u926E\u926F\u9270\u9275\",4,\"\u927B\u927C\u927D\u927F\u9288\u9289\u928A\u928D\u928E\u9292\u9297\"],\n[\"8fe4a1\",\"\u9299\u929F\u92A0\u92A4\u92A5\u92A7\u92A8\u92AB\u92AF\u92B2\u92B6\u92B8\u92BA\u92BB\u92BC\u92BD\u92BF\",4,\"\u92C5\u92C6\u92C7\u92C8\u92CB\u92CC\u92CD\u92CE\u92D0\u92D3\u92D5\u92D7\u92D8\u92D9\u92DC\u92DD\u92DF\u92E0\u92E1\u92E3\u92E5\u92E7\u92E8\u92EC\u92EE\u92F0\u92F9\u92FB\u92FF\u9300\u9302\u9308\u930D\u9311\u9314\u9315\u931C\u931D\u931E\u931F\u9321\u9324\u9325\u9327\u9329\u932A\u9333\u9334\u9336\u9337\u9347\u9348\u9349\u9350\u9351\u9352\u9355\u9357\u9358\u935A\u935E\u9364\u9365\u9367\u9369\u936A\u936D\u936F\u9370\u9371\u9373\u9374\u9376\"],\n[\"8fe5a1\",\"\u937A\u937D\u937F\u9380\u9381\u9382\u9388\u938A\u938B\u938D\u938F\u9392\u9395\u9398\u939B\u939E\u93A1\u93A3\u93A4\u93A6\u93A8\u93AB\u93B4\u93B5\u93B6\u93BA\u93A9\u93C1\u93C4\u93C5\u93C6\u93C7\u93C9\",4,\"\u93D3\u93D9\u93DC\u93DE\u93DF\u93E2\u93E6\u93E7\u93F9\u93F7\u93F8\u93FA\u93FB\u93FD\u9401\u9402\u9404\u9408\u9409\u940D\u940E\u940F\u9415\u9416\u9417\u941F\u942E\u942F\u9431\u9432\u9433\u9434\u943B\u943F\u943D\u9443\u9445\u9448\u944A\u944C\u9455\u9459\u945C\u945F\u9461\u9463\u9468\u946B\u946D\u946E\u946F\u9471\u9472\u9484\u9483\u9578\u9579\"],\n[\"8fe6a1\",\"\u957E\u9584\u9588\u958C\u958D\u958E\u959D\u959E\u959F\u95A1\u95A6\u95A9\u95AB\u95AC\u95B4\u95B6\u95BA\u95BD\u95BF\u95C6\u95C8\u95C9\u95CB\u95D0\u95D1\u95D2\u95D3\u95D9\u95DA\u95DD\u95DE\u95DF\u95E0\u95E4\u95E6\u961D\u961E\u9622\u9624\u9625\u9626\u962C\u9631\u9633\u9637\u9638\u9639\u963A\u963C\u963D\u9641\u9652\u9654\u9656\u9657\u9658\u9661\u966E\u9674\u967B\u967C\u967E\u967F\u9681\u9682\u9683\u9684\u9689\u9691\u9696\u969A\u969D\u969F\u96A4\u96A5\u96A6\u96A9\u96AE\u96AF\u96B3\u96BA\u96CA\u96D2\u5DB2\u96D8\u96DA\u96DD\u96DE\u96DF\u96E9\u96EF\u96F1\u96FA\u9702\"],\n[\"8fe7a1\",\"\u9703\u9705\u9709\u971A\u971B\u971D\u9721\u9722\u9723\u9728\u9731\u9733\u9741\u9743\u974A\u974E\u974F\u9755\u9757\u9758\u975A\u975B\u9763\u9767\u976A\u976E\u9773\u9776\u9777\u9778\u977B\u977D\u977F\u9780\u9789\u9795\u9796\u9797\u9799\u979A\u979E\u979F\u97A2\u97AC\u97AE\u97B1\u97B2\u97B5\u97B6\u97B8\u97B9\u97BA\u97BC\u97BE\u97BF\u97C1\u97C4\u97C5\u97C7\u97C9\u97CA\u97CC\u97CD\u97CE\u97D0\u97D1\u97D4\u97D7\u97D8\u97D9\u97DD\u97DE\u97E0\u97DB\u97E1\u97E4\u97EF\u97F1\u97F4\u97F7\u97F8\u97FA\u9807\u980A\u9819\u980D\u980E\u9814\u9816\u981C\u981E\u9820\u9823\u9826\"],\n[\"8fe8a1\",\"\u982B\u982E\u982F\u9830\u9832\u9833\u9835\u9825\u983E\u9844\u9847\u984A\u9851\u9852\u9853\u9856\u9857\u9859\u985A\u9862\u9863\u9865\u9866\u986A\u986C\u98AB\u98AD\u98AE\u98B0\u98B4\u98B7\u98B8\u98BA\u98BB\u98BF\u98C2\u98C5\u98C8\u98CC\u98E1\u98E3\u98E5\u98E6\u98E7\u98EA\u98F3\u98F6\u9902\u9907\u9908\u9911\u9915\u9916\u9917\u991A\u991B\u991C\u991F\u9922\u9926\u9927\u992B\u9931\",4,\"\u9939\u993A\u993B\u993C\u9940\u9941\u9946\u9947\u9948\u994D\u994E\u9954\u9958\u9959\u995B\u995C\u995E\u995F\u9960\u999B\u999D\u999F\u99A6\u99B0\u99B1\u99B2\u99B5\"],\n[\"8fe9a1\",\"\u99B9\u99BA\u99BD\u99BF\u99C3\u99C9\u99D3\u99D4\u99D9\u99DA\u99DC\u99DE\u99E7\u99EA\u99EB\u99EC\u99F0\u99F4\u99F5\u99F9\u99FD\u99FE\u9A02\u9A03\u9A04\u9A0B\u9A0C\u9A10\u9A11\u9A16\u9A1E\u9A20\u9A22\u9A23\u9A24\u9A27\u9A2D\u9A2E\u9A33\u9A35\u9A36\u9A38\u9A47\u9A41\u9A44\u9A4A\u9A4B\u9A4C\u9A4E\u9A51\u9A54\u9A56\u9A5D\u9AAA\u9AAC\u9AAE\u9AAF\u9AB2\u9AB4\u9AB5\u9AB6\u9AB9\u9ABB\u9ABE\u9ABF\u9AC1\u9AC3\u9AC6\u9AC8\u9ACE\u9AD0\u9AD2\u9AD5\u9AD6\u9AD7\u9ADB\u9ADC\u9AE0\u9AE4\u9AE5\u9AE7\u9AE9\u9AEC\u9AF2\u9AF3\u9AF5\u9AF9\u9AFA\u9AFD\u9AFF\",4],\n[\"8feaa1\",\"\u9B04\u9B05\u9B08\u9B09\u9B0B\u9B0C\u9B0D\u9B0E\u9B10\u9B12\u9B16\u9B19\u9B1B\u9B1C\u9B20\u9B26\u9B2B\u9B2D\u9B33\u9B34\u9B35\u9B37\u9B39\u9B3A\u9B3D\u9B48\u9B4B\u9B4C\u9B55\u9B56\u9B57\u9B5B\u9B5E\u9B61\u9B63\u9B65\u9B66\u9B68\u9B6A\",4,\"\u9B73\u9B75\u9B77\u9B78\u9B79\u9B7F\u9B80\u9B84\u9B85\u9B86\u9B87\u9B89\u9B8A\u9B8B\u9B8D\u9B8F\u9B90\u9B94\u9B9A\u9B9D\u9B9E\u9BA6\u9BA7\u9BA9\u9BAC\u9BB0\u9BB1\u9BB2\u9BB7\u9BB8\u9BBB\u9BBC\u9BBE\u9BBF\u9BC1\u9BC7\u9BC8\u9BCE\u9BD0\u9BD7\u9BD8\u9BDD\u9BDF\u9BE5\u9BE7\u9BEA\u9BEB\u9BEF\u9BF3\u9BF7\u9BF8\"],\n[\"8feba1\",\"\u9BF9\u9BFA\u9BFD\u9BFF\u9C00\u9C02\u9C0B\u9C0F\u9C11\u9C16\u9C18\u9C19\u9C1A\u9C1C\u9C1E\u9C22\u9C23\u9C26\",4,\"\u9C31\u9C35\u9C36\u9C37\u9C3D\u9C41\u9C43\u9C44\u9C45\u9C49\u9C4A\u9C4E\u9C4F\u9C50\u9C53\u9C54\u9C56\u9C58\u9C5B\u9C5D\u9C5E\u9C5F\u9C63\u9C69\u9C6A\u9C5C\u9C6B\u9C68\u9C6E\u9C70\u9C72\u9C75\u9C77\u9C7B\u9CE6\u9CF2\u9CF7\u9CF9\u9D0B\u9D02\u9D11\u9D17\u9D18\u9D1C\u9D1D\u9D1E\u9D2F\u9D30\u9D32\u9D33\u9D34\u9D3A\u9D3C\u9D45\u9D3D\u9D42\u9D43\u9D47\u9D4A\u9D53\u9D54\u9D5F\u9D63\u9D62\u9D65\u9D69\u9D6A\u9D6B\u9D70\u9D76\u9D77\u9D7B\"],\n[\"8feca1\",\"\u9D7C\u9D7E\u9D83\u9D84\u9D86\u9D8A\u9D8D\u9D8E\u9D92\u9D93\u9D95\u9D96\u9D97\u9D98\u9DA1\u9DAA\u9DAC\u9DAE\u9DB1\u9DB5\u9DB9\u9DBC\u9DBF\u9DC3\u9DC7\u9DC9\u9DCA\u9DD4\u9DD5\u9DD6\u9DD7\u9DDA\u9DDE\u9DDF\u9DE0\u9DE5\u9DE7\u9DE9\u9DEB\u9DEE\u9DF0\u9DF3\u9DF4\u9DFE\u9E0A\u9E02\u9E07\u9E0E\u9E10\u9E11\u9E12\u9E15\u9E16\u9E19\u9E1C\u9E1D\u9E7A\u9E7B\u9E7C\u9E80\u9E82\u9E83\u9E84\u9E85\u9E87\u9E8E\u9E8F\u9E96\u9E98\u9E9B\u9E9E\u9EA4\u9EA8\u9EAC\u9EAE\u9EAF\u9EB0\u9EB3\u9EB4\u9EB5\u9EC6\u9EC8\u9ECB\u9ED5\u9EDF\u9EE4\u9EE7\u9EEC\u9EED\u9EEE\u9EF0\u9EF1\u9EF2\u9EF5\"],\n[\"8feda1\",\"\u9EF8\u9EFF\u9F02\u9F03\u9F09\u9F0F\u9F10\u9F11\u9F12\u9F14\u9F16\u9F17\u9F19\u9F1A\u9F1B\u9F1F\u9F22\u9F26\u9F2A\u9F2B\u9F2F\u9F31\u9F32\u9F34\u9F37\u9F39\u9F3A\u9F3C\u9F3D\u9F3F\u9F41\u9F43\",4,\"\u9F53\u9F55\u9F56\u9F57\u9F58\u9F5A\u9F5D\u9F5E\u9F68\u9F69\u9F6D\",4,\"\u9F73\u9F75\u9F7A\u9F7D\u9F8F\u9F90\u9F91\u9F92\u9F94\u9F96\u9F97\u9F9E\u9FA1\u9FA2\u9FA3\u9FA5\"]\n]\n", "[\n[\"0\",\"\\u0000\",127,\"\u20AC\"],\n[\"8140\",\"\u4E02\u4E04\u4E05\u4E06\u4E0F\u4E12\u4E17\u4E1F\u4E20\u4E21\u4E23\u4E26\u4E29\u4E2E\u4E2F\u4E31\u4E33\u4E35\u4E37\u4E3C\u4E40\u4E41\u4E42\u4E44\u4E46\u4E4A\u4E51\u4E55\u4E57\u4E5A\u4E5B\u4E62\u4E63\u4E64\u4E65\u4E67\u4E68\u4E6A\",5,\"\u4E72\u4E74\",9,\"\u4E7F\",6,\"\u4E87\u4E8A\"],\n[\"8180\",\"\u4E90\u4E96\u4E97\u4E99\u4E9C\u4E9D\u4E9E\u4EA3\u4EAA\u4EAF\u4EB0\u4EB1\u4EB4\u4EB6\u4EB7\u4EB8\u4EB9\u4EBC\u4EBD\u4EBE\u4EC8\u4ECC\u4ECF\u4ED0\u4ED2\u4EDA\u4EDB\u4EDC\u4EE0\u4EE2\u4EE6\u4EE7\u4EE9\u4EED\u4EEE\u4EEF\u4EF1\u4EF4\u4EF8\u4EF9\u4EFA\u4EFC\u4EFE\u4F00\u4F02\",6,\"\u4F0B\u4F0C\u4F12\",4,\"\u4F1C\u4F1D\u4F21\u4F23\u4F28\u4F29\u4F2C\u4F2D\u4F2E\u4F31\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E\",4,\"\u4F44\u4F45\u4F47\",5,\"\u4F52\u4F54\u4F56\u4F61\u4F62\u4F66\u4F68\u4F6A\u4F6B\u4F6D\u4F6E\u4F71\u4F72\u4F75\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F80\u4F81\u4F82\u4F85\u4F86\u4F87\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F95\u4F96\u4F98\u4F99\u4F9A\u4F9C\u4F9E\u4F9F\u4FA1\u4FA2\"],\n[\"8240\",\"\u4FA4\u4FAB\u4FAD\u4FB0\",4,\"\u4FB6\",8,\"\u4FC0\u4FC1\u4FC2\u4FC6\u4FC7\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FD2\",4,\"\u4FD9\u4FDB\u4FE0\u4FE2\u4FE4\u4FE5\u4FE7\u4FEB\u4FEC\u4FF0\u4FF2\u4FF4\u4FF5\u4FF6\u4FF7\u4FF9\u4FFB\u4FFC\u4FFD\u4FFF\",11],\n[\"8280\",\"\u500B\u500E\u5010\u5011\u5013\u5015\u5016\u5017\u501B\u501D\u501E\u5020\u5022\u5023\u5024\u5027\u502B\u502F\",10,\"\u503B\u503D\u503F\u5040\u5041\u5042\u5044\u5045\u5046\u5049\u504A\u504B\u504D\u5050\",4,\"\u5056\u5057\u5058\u5059\u505B\u505D\",7,\"\u5066\",5,\"\u506D\",8,\"\u5078\u5079\u507A\u507C\u507D\u5081\u5082\u5083\u5084\u5086\u5087\u5089\u508A\u508B\u508C\u508E\",20,\"\u50A4\u50A6\u50AA\u50AB\u50AD\",4,\"\u50B3\",6,\"\u50BC\"],\n[\"8340\",\"\u50BD\",17,\"\u50D0\",5,\"\u50D7\u50D8\u50D9\u50DB\",10,\"\u50E8\u50E9\u50EA\u50EB\u50EF\u50F0\u50F1\u50F2\u50F4\u50F6\",4,\"\u50FC\",9,\"\u5108\"],\n[\"8380\",\"\u5109\u510A\u510C\",5,\"\u5113\",13,\"\u5122\",28,\"\u5142\u5147\u514A\u514C\u514E\u514F\u5150\u5152\u5153\u5157\u5158\u5159\u515B\u515D\",4,\"\u5163\u5164\u5166\u5167\u5169\u516A\u516F\u5172\u517A\u517E\u517F\u5183\u5184\u5186\u5187\u518A\u518B\u518E\u518F\u5190\u5191\u5193\u5194\u5198\u519A\u519D\u519E\u519F\u51A1\u51A3\u51A6\",4,\"\u51AD\u51AE\u51B4\u51B8\u51B9\u51BA\u51BE\u51BF\u51C1\u51C2\u51C3\u51C5\u51C8\u51CA\u51CD\u51CE\u51D0\u51D2\",5],\n[\"8440\",\"\u51D8\u51D9\u51DA\u51DC\u51DE\u51DF\u51E2\u51E3\u51E5\",5,\"\u51EC\u51EE\u51F1\u51F2\u51F4\u51F7\u51FE\u5204\u5205\u5209\u520B\u520C\u520F\u5210\u5213\u5214\u5215\u521C\u521E\u521F\u5221\u5222\u5223\u5225\u5226\u5227\u522A\u522C\u522F\u5231\u5232\u5234\u5235\u523C\u523E\u5244\",5,\"\u524B\u524E\u524F\u5252\u5253\u5255\u5257\u5258\"],\n[\"8480\",\"\u5259\u525A\u525B\u525D\u525F\u5260\u5262\u5263\u5264\u5266\u5268\u526B\u526C\u526D\u526E\u5270\u5271\u5273\",9,\"\u527E\u5280\u5283\",4,\"\u5289\",6,\"\u5291\u5292\u5294\",6,\"\u529C\u52A4\u52A5\u52A6\u52A7\u52AE\u52AF\u52B0\u52B4\",9,\"\u52C0\u52C1\u52C2\u52C4\u52C5\u52C6\u52C8\u52CA\u52CC\u52CD\u52CE\u52CF\u52D1\u52D3\u52D4\u52D5\u52D7\u52D9\",5,\"\u52E0\u52E1\u52E2\u52E3\u52E5\",10,\"\u52F1\",7,\"\u52FB\u52FC\u52FD\u5301\u5302\u5303\u5304\u5307\u5309\u530A\u530B\u530C\u530E\"],\n[\"8540\",\"\u5311\u5312\u5313\u5314\u5318\u531B\u531C\u531E\u531F\u5322\u5324\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u532F\",9,\"\u533C\u533D\u5340\u5342\u5344\u5346\u534B\u534C\u534D\u5350\u5354\u5358\u5359\u535B\u535D\u5365\u5368\u536A\u536C\u536D\u5372\u5376\u5379\u537B\u537C\u537D\u537E\u5380\u5381\u5383\u5387\u5388\u538A\u538E\u538F\"],\n[\"8580\",\"\u5390\",4,\"\u5396\u5397\u5399\u539B\u539C\u539E\u53A0\u53A1\u53A4\u53A7\u53AA\u53AB\u53AC\u53AD\u53AF\",6,\"\u53B7\u53B8\u53B9\u53BA\u53BC\u53BD\u53BE\u53C0\u53C3\",4,\"\u53CE\u53CF\u53D0\u53D2\u53D3\u53D5\u53DA\u53DC\u53DD\u53DE\u53E1\u53E2\u53E7\u53F4\u53FA\u53FE\u53FF\u5400\u5402\u5405\u5407\u540B\u5414\u5418\u5419\u541A\u541C\u5422\u5424\u5425\u542A\u5430\u5433\u5436\u5437\u543A\u543D\u543F\u5441\u5442\u5444\u5445\u5447\u5449\u544C\u544D\u544E\u544F\u5451\u545A\u545D\",4,\"\u5463\u5465\u5467\u5469\",7,\"\u5474\u5479\u547A\u547E\u547F\u5481\u5483\u5485\u5487\u5488\u5489\u548A\u548D\u5491\u5493\u5497\u5498\u549C\u549E\u549F\u54A0\u54A1\"],\n[\"8640\",\"\u54A2\u54A5\u54AE\u54B0\u54B2\u54B5\u54B6\u54B7\u54B9\u54BA\u54BC\u54BE\u54C3\u54C5\u54CA\u54CB\u54D6\u54D8\u54DB\u54E0\",4,\"\u54EB\u54EC\u54EF\u54F0\u54F1\u54F4\",5,\"\u54FB\u54FE\u5500\u5502\u5503\u5504\u5505\u5508\u550A\",4,\"\u5512\u5513\u5515\",5,\"\u551C\u551D\u551E\u551F\u5521\u5525\u5526\"],\n[\"8680\",\"\u5528\u5529\u552B\u552D\u5532\u5534\u5535\u5536\u5538\u5539\u553A\u553B\u553D\u5540\u5542\u5545\u5547\u5548\u554B\",4,\"\u5551\u5552\u5553\u5554\u5557\",4,\"\u555D\u555E\u555F\u5560\u5562\u5563\u5568\u5569\u556B\u556F\",5,\"\u5579\u557A\u557D\u557F\u5585\u5586\u558C\u558D\u558E\u5590\u5592\u5593\u5595\u5596\u5597\u559A\u559B\u559E\u55A0\",6,\"\u55A8\",8,\"\u55B2\u55B4\u55B6\u55B8\u55BA\u55BC\u55BF\",4,\"\u55C6\u55C7\u55C8\u55CA\u55CB\u55CE\u55CF\u55D0\u55D5\u55D7\",4,\"\u55DE\u55E0\u55E2\u55E7\u55E9\u55ED\u55EE\u55F0\u55F1\u55F4\u55F6\u55F8\",4,\"\u55FF\u5602\u5603\u5604\u5605\"],\n[\"8740\",\"\u5606\u5607\u560A\u560B\u560D\u5610\",7,\"\u5619\u561A\u561C\u561D\u5620\u5621\u5622\u5625\u5626\u5628\u5629\u562A\u562B\u562E\u562F\u5630\u5633\u5635\u5637\u5638\u563A\u563C\u563D\u563E\u5640\",11,\"\u564F\",4,\"\u5655\u5656\u565A\u565B\u565D\",4],\n[\"8780\",\"\u5663\u5665\u5666\u5667\u566D\u566E\u566F\u5670\u5672\u5673\u5674\u5675\u5677\u5678\u5679\u567A\u567D\",7,\"\u5687\",6,\"\u5690\u5691\u5692\u5694\",14,\"\u56A4\",10,\"\u56B0\",6,\"\u56B8\u56B9\u56BA\u56BB\u56BD\",12,\"\u56CB\",8,\"\u56D5\u56D6\u56D8\u56D9\u56DC\u56E3\u56E5\",5,\"\u56EC\u56EE\u56EF\u56F2\u56F3\u56F6\u56F7\u56F8\u56FB\u56FC\u5700\u5701\u5702\u5705\u5707\u570B\",6],\n[\"8840\",\"\u5712\",9,\"\u571D\u571E\u5720\u5721\u5722\u5724\u5725\u5726\u5727\u572B\u5731\u5732\u5734\",4,\"\u573C\u573D\u573F\u5741\u5743\u5744\u5745\u5746\u5748\u5749\u574B\u5752\",4,\"\u5758\u5759\u5762\u5763\u5765\u5767\u576C\u576E\u5770\u5771\u5772\u5774\u5775\u5778\u5779\u577A\u577D\u577E\u577F\u5780\"],\n[\"8880\",\"\u5781\u5787\u5788\u5789\u578A\u578D\",4,\"\u5794\",6,\"\u579C\u579D\u579E\u579F\u57A5\u57A8\u57AA\u57AC\u57AF\u57B0\u57B1\u57B3\u57B5\u57B6\u57B7\u57B9\",8,\"\u57C4\",6,\"\u57CC\u57CD\u57D0\u57D1\u57D3\u57D6\u57D7\u57DB\u57DC\u57DE\u57E1\u57E2\u57E3\u57E5\",7,\"\u57EE\u57F0\u57F1\u57F2\u57F3\u57F5\u57F6\u57F7\u57FB\u57FC\u57FE\u57FF\u5801\u5803\u5804\u5805\u5808\u5809\u580A\u580C\u580E\u580F\u5810\u5812\u5813\u5814\u5816\u5817\u5818\u581A\u581B\u581C\u581D\u581F\u5822\u5823\u5825\",4,\"\u582B\",4,\"\u5831\u5832\u5833\u5834\u5836\",7],\n[\"8940\",\"\u583E\",5,\"\u5845\",6,\"\u584E\u584F\u5850\u5852\u5853\u5855\u5856\u5857\u5859\",4,\"\u585F\",5,\"\u5866\",4,\"\u586D\",16,\"\u587F\u5882\u5884\u5886\u5887\u5888\u588A\u588B\u588C\"],\n[\"8980\",\"\u588D\",4,\"\u5894\",4,\"\u589B\u589C\u589D\u58A0\",7,\"\u58AA\",17,\"\u58BD\u58BE\u58BF\u58C0\u58C2\u58C3\u58C4\u58C6\",10,\"\u58D2\u58D3\u58D4\u58D6\",13,\"\u58E5\",5,\"\u58ED\u58EF\u58F1\u58F2\u58F4\u58F5\u58F7\u58F8\u58FA\",7,\"\u5903\u5905\u5906\u5908\",4,\"\u590E\u5910\u5911\u5912\u5913\u5917\u5918\u591B\u591D\u591E\u5920\u5921\u5922\u5923\u5926\u5928\u592C\u5930\u5932\u5933\u5935\u5936\u593B\"],\n[\"8a40\",\"\u593D\u593E\u593F\u5940\u5943\u5945\u5946\u594A\u594C\u594D\u5950\u5952\u5953\u5959\u595B\",4,\"\u5961\u5963\u5964\u5966\",12,\"\u5975\u5977\u597A\u597B\u597C\u597E\u597F\u5980\u5985\u5989\u598B\u598C\u598E\u598F\u5990\u5991\u5994\u5995\u5998\u599A\u599B\u599C\u599D\u599F\u59A0\u59A1\u59A2\u59A6\"],\n[\"8a80\",\"\u59A7\u59AC\u59AD\u59B0\u59B1\u59B3\",5,\"\u59BA\u59BC\u59BD\u59BF\",6,\"\u59C7\u59C8\u59C9\u59CC\u59CD\u59CE\u59CF\u59D5\u59D6\u59D9\u59DB\u59DE\",4,\"\u59E4\u59E6\u59E7\u59E9\u59EA\u59EB\u59ED\",11,\"\u59FA\u59FC\u59FD\u59FE\u5A00\u5A02\u5A0A\u5A0B\u5A0D\u5A0E\u5A0F\u5A10\u5A12\u5A14\u5A15\u5A16\u5A17\u5A19\u5A1A\u5A1B\u5A1D\u5A1E\u5A21\u5A22\u5A24\u5A26\u5A27\u5A28\u5A2A\",6,\"\u5A33\u5A35\u5A37\",4,\"\u5A3D\u5A3E\u5A3F\u5A41\",4,\"\u5A47\u5A48\u5A4B\",9,\"\u5A56\u5A57\u5A58\u5A59\u5A5B\",5],\n[\"8b40\",\"\u5A61\u5A63\u5A64\u5A65\u5A66\u5A68\u5A69\u5A6B\",8,\"\u5A78\u5A79\u5A7B\u5A7C\u5A7D\u5A7E\u5A80\",17,\"\u5A93\",6,\"\u5A9C\",13,\"\u5AAB\u5AAC\"],\n[\"8b80\",\"\u5AAD\",4,\"\u5AB4\u5AB6\u5AB7\u5AB9\",4,\"\u5ABF\u5AC0\u5AC3\",5,\"\u5ACA\u5ACB\u5ACD\",4,\"\u5AD3\u5AD5\u5AD7\u5AD9\u5ADA\u5ADB\u5ADD\u5ADE\u5ADF\u5AE2\u5AE4\u5AE5\u5AE7\u5AE8\u5AEA\u5AEC\",4,\"\u5AF2\",22,\"\u5B0A\",11,\"\u5B18\",25,\"\u5B33\u5B35\u5B36\u5B38\",7,\"\u5B41\",6],\n[\"8c40\",\"\u5B48\",7,\"\u5B52\u5B56\u5B5E\u5B60\u5B61\u5B67\u5B68\u5B6B\u5B6D\u5B6E\u5B6F\u5B72\u5B74\u5B76\u5B77\u5B78\u5B79\u5B7B\u5B7C\u5B7E\u5B7F\u5B82\u5B86\u5B8A\u5B8D\u5B8E\u5B90\u5B91\u5B92\u5B94\u5B96\u5B9F\u5BA7\u5BA8\u5BA9\u5BAC\u5BAD\u5BAE\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBB\u5BBC\u5BC0\u5BC1\u5BC3\u5BC8\u5BC9\u5BCA\u5BCB\u5BCD\u5BCE\u5BCF\"],\n[\"8c80\",\"\u5BD1\u5BD4\",8,\"\u5BE0\u5BE2\u5BE3\u5BE6\u5BE7\u5BE9\",4,\"\u5BEF\u5BF1\",6,\"\u5BFD\u5BFE\u5C00\u5C02\u5C03\u5C05\u5C07\u5C08\u5C0B\u5C0C\u5C0D\u5C0E\u5C10\u5C12\u5C13\u5C17\u5C19\u5C1B\u5C1E\u5C1F\u5C20\u5C21\u5C23\u5C26\u5C28\u5C29\u5C2A\u5C2B\u5C2D\u5C2E\u5C2F\u5C30\u5C32\u5C33\u5C35\u5C36\u5C37\u5C43\u5C44\u5C46\u5C47\u5C4C\u5C4D\u5C52\u5C53\u5C54\u5C56\u5C57\u5C58\u5C5A\u5C5B\u5C5C\u5C5D\u5C5F\u5C62\u5C64\u5C67\",6,\"\u5C70\u5C72\",6,\"\u5C7B\u5C7C\u5C7D\u5C7E\u5C80\u5C83\",4,\"\u5C89\u5C8A\u5C8B\u5C8E\u5C8F\u5C92\u5C93\u5C95\u5C9D\",4,\"\u5CA4\",4],\n[\"8d40\",\"\u5CAA\u5CAE\u5CAF\u5CB0\u5CB2\u5CB4\u5CB6\u5CB9\u5CBA\u5CBB\u5CBC\u5CBE\u5CC0\u5CC2\u5CC3\u5CC5\",5,\"\u5CCC\",5,\"\u5CD3\",5,\"\u5CDA\",6,\"\u5CE2\u5CE3\u5CE7\u5CE9\u5CEB\u5CEC\u5CEE\u5CEF\u5CF1\",9,\"\u5CFC\",4],\n[\"8d80\",\"\u5D01\u5D04\u5D05\u5D08\",5,\"\u5D0F\",4,\"\u5D15\u5D17\u5D18\u5D19\u5D1A\u5D1C\u5D1D\u5D1F\",4,\"\u5D25\u5D28\u5D2A\u5D2B\u5D2C\u5D2F\",4,\"\u5D35\",7,\"\u5D3F\",7,\"\u5D48\u5D49\u5D4D\",10,\"\u5D59\u5D5A\u5D5C\u5D5E\",10,\"\u5D6A\u5D6D\u5D6E\u5D70\u5D71\u5D72\u5D73\u5D75\",12,\"\u5D83\",21,\"\u5D9A\u5D9B\u5D9C\u5D9E\u5D9F\u5DA0\"],\n[\"8e40\",\"\u5DA1\",21,\"\u5DB8\",12,\"\u5DC6\",6,\"\u5DCE\",12,\"\u5DDC\u5DDF\u5DE0\u5DE3\u5DE4\u5DEA\u5DEC\u5DED\"],\n[\"8e80\",\"\u5DF0\u5DF5\u5DF6\u5DF8\",4,\"\u5DFF\u5E00\u5E04\u5E07\u5E09\u5E0A\u5E0B\u5E0D\u5E0E\u5E12\u5E13\u5E17\u5E1E\",7,\"\u5E28\",4,\"\u5E2F\u5E30\u5E32\",4,\"\u5E39\u5E3A\u5E3E\u5E3F\u5E40\u5E41\u5E43\u5E46\",5,\"\u5E4D\",6,\"\u5E56\",4,\"\u5E5C\u5E5D\u5E5F\u5E60\u5E63\",14,\"\u5E75\u5E77\u5E79\u5E7E\u5E81\u5E82\u5E83\u5E85\u5E88\u5E89\u5E8C\u5E8D\u5E8E\u5E92\u5E98\u5E9B\u5E9D\u5EA1\u5EA2\u5EA3\u5EA4\u5EA8\",4,\"\u5EAE\",4,\"\u5EB4\u5EBA\u5EBB\u5EBC\u5EBD\u5EBF\",6],\n[\"8f40\",\"\u5EC6\u5EC7\u5EC8\u5ECB\",5,\"\u5ED4\u5ED5\u5ED7\u5ED8\u5ED9\u5EDA\u5EDC\",11,\"\u5EE9\u5EEB\",8,\"\u5EF5\u5EF8\u5EF9\u5EFB\u5EFC\u5EFD\u5F05\u5F06\u5F07\u5F09\u5F0C\u5F0D\u5F0E\u5F10\u5F12\u5F14\u5F16\u5F19\u5F1A\u5F1C\u5F1D\u5F1E\u5F21\u5F22\u5F23\u5F24\"],\n[\"8f80\",\"\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F32\",6,\"\u5F3B\u5F3D\u5F3E\u5F3F\u5F41\",14,\"\u5F51\u5F54\u5F59\u5F5A\u5F5B\u5F5C\u5F5E\u5F5F\u5F60\u5F63\u5F65\u5F67\u5F68\u5F6B\u5F6E\u5F6F\u5F72\u5F74\u5F75\u5F76\u5F78\u5F7A\u5F7D\u5F7E\u5F7F\u5F83\u5F86\u5F8D\u5F8E\u5F8F\u5F91\u5F93\u5F94\u5F96\u5F9A\u5F9B\u5F9D\u5F9E\u5F9F\u5FA0\u5FA2\",5,\"\u5FA9\u5FAB\u5FAC\u5FAF\",5,\"\u5FB6\u5FB8\u5FB9\u5FBA\u5FBB\u5FBE\",4,\"\u5FC7\u5FC8\u5FCA\u5FCB\u5FCE\u5FD3\u5FD4\u5FD5\u5FDA\u5FDB\u5FDC\u5FDE\u5FDF\u5FE2\u5FE3\u5FE5\u5FE6\u5FE8\u5FE9\u5FEC\u5FEF\u5FF0\u5FF2\u5FF3\u5FF4\u5FF6\u5FF7\u5FF9\u5FFA\u5FFC\u6007\"],\n[\"9040\",\"\u6008\u6009\u600B\u600C\u6010\u6011\u6013\u6017\u6018\u601A\u601E\u601F\u6022\u6023\u6024\u602C\u602D\u602E\u6030\",4,\"\u6036\",4,\"\u603D\u603E\u6040\u6044\",6,\"\u604C\u604E\u604F\u6051\u6053\u6054\u6056\u6057\u6058\u605B\u605C\u605E\u605F\u6060\u6061\u6065\u6066\u606E\u6071\u6072\u6074\u6075\u6077\u607E\u6080\"],\n[\"9080\",\"\u6081\u6082\u6085\u6086\u6087\u6088\u608A\u608B\u608E\u608F\u6090\u6091\u6093\u6095\u6097\u6098\u6099\u609C\u609E\u60A1\u60A2\u60A4\u60A5\u60A7\u60A9\u60AA\u60AE\u60B0\u60B3\u60B5\u60B6\u60B7\u60B9\u60BA\u60BD\",7,\"\u60C7\u60C8\u60C9\u60CC\",4,\"\u60D2\u60D3\u60D4\u60D6\u60D7\u60D9\u60DB\u60DE\u60E1\",4,\"\u60EA\u60F1\u60F2\u60F5\u60F7\u60F8\u60FB\",4,\"\u6102\u6103\u6104\u6105\u6107\u610A\u610B\u610C\u6110\",4,\"\u6116\u6117\u6118\u6119\u611B\u611C\u611D\u611E\u6121\u6122\u6125\u6128\u6129\u612A\u612C\",18,\"\u6140\",6],\n[\"9140\",\"\u6147\u6149\u614B\u614D\u614F\u6150\u6152\u6153\u6154\u6156\",6,\"\u615E\u615F\u6160\u6161\u6163\u6164\u6165\u6166\u6169\",6,\"\u6171\u6172\u6173\u6174\u6176\u6178\",18,\"\u618C\u618D\u618F\",4,\"\u6195\"],\n[\"9180\",\"\u6196\",6,\"\u619E\",8,\"\u61AA\u61AB\u61AD\",9,\"\u61B8\",5,\"\u61BF\u61C0\u61C1\u61C3\",4,\"\u61C9\u61CC\",4,\"\u61D3\u61D5\",16,\"\u61E7\",13,\"\u61F6\",8,\"\u6200\",5,\"\u6207\u6209\u6213\u6214\u6219\u621C\u621D\u621E\u6220\u6223\u6226\u6227\u6228\u6229\u622B\u622D\u622F\u6230\u6231\u6232\u6235\u6236\u6238\",4,\"\u6242\u6244\u6245\u6246\u624A\"],\n[\"9240\",\"\u624F\u6250\u6255\u6256\u6257\u6259\u625A\u625C\",6,\"\u6264\u6265\u6268\u6271\u6272\u6274\u6275\u6277\u6278\u627A\u627B\u627D\u6281\u6282\u6283\u6285\u6286\u6287\u6288\u628B\",5,\"\u6294\u6299\u629C\u629D\u629E\u62A3\u62A6\u62A7\u62A9\u62AA\u62AD\u62AE\u62AF\u62B0\u62B2\u62B3\u62B4\u62B6\u62B7\u62B8\u62BA\u62BE\u62C0\u62C1\"],\n[\"9280\",\"\u62C3\u62CB\u62CF\u62D1\u62D5\u62DD\u62DE\u62E0\u62E1\u62E4\u62EA\u62EB\u62F0\u62F2\u62F5\u62F8\u62F9\u62FA\u62FB\u6300\u6303\u6304\u6305\u6306\u630A\u630B\u630C\u630D\u630F\u6310\u6312\u6313\u6314\u6315\u6317\u6318\u6319\u631C\u6326\u6327\u6329\u632C\u632D\u632E\u6330\u6331\u6333\",5,\"\u633B\u633C\u633E\u633F\u6340\u6341\u6344\u6347\u6348\u634A\u6351\u6352\u6353\u6354\u6356\",7,\"\u6360\u6364\u6365\u6366\u6368\u636A\u636B\u636C\u636F\u6370\u6372\u6373\u6374\u6375\u6378\u6379\u637C\u637D\u637E\u637F\u6381\u6383\u6384\u6385\u6386\u638B\u638D\u6391\u6393\u6394\u6395\u6397\u6399\",6,\"\u63A1\u63A4\u63A6\u63AB\u63AF\u63B1\u63B2\u63B5\u63B6\u63B9\u63BB\u63BD\u63BF\u63C0\"],\n[\"9340\",\"\u63C1\u63C2\u63C3\u63C5\u63C7\u63C8\u63CA\u63CB\u63CC\u63D1\u63D3\u63D4\u63D5\u63D7\",6,\"\u63DF\u63E2\u63E4\",4,\"\u63EB\u63EC\u63EE\u63EF\u63F0\u63F1\u63F3\u63F5\u63F7\u63F9\u63FA\u63FB\u63FC\u63FE\u6403\u6404\u6406\",4,\"\u640D\u640E\u6411\u6412\u6415\",5,\"\u641D\u641F\u6422\u6423\u6424\"],\n[\"9380\",\"\u6425\u6427\u6428\u6429\u642B\u642E\",5,\"\u6435\",4,\"\u643B\u643C\u643E\u6440\u6442\u6443\u6449\u644B\",6,\"\u6453\u6455\u6456\u6457\u6459\",4,\"\u645F\",7,\"\u6468\u646A\u646B\u646C\u646E\",9,\"\u647B\",6,\"\u6483\u6486\u6488\",8,\"\u6493\u6494\u6497\u6498\u649A\u649B\u649C\u649D\u649F\",4,\"\u64A5\u64A6\u64A7\u64A8\u64AA\u64AB\u64AF\u64B1\u64B2\u64B3\u64B4\u64B6\u64B9\u64BB\u64BD\u64BE\u64BF\u64C1\u64C3\u64C4\u64C6\",6,\"\u64CF\u64D1\u64D3\u64D4\u64D5\u64D6\u64D9\u64DA\"],\n[\"9440\",\"\u64DB\u64DC\u64DD\u64DF\u64E0\u64E1\u64E3\u64E5\u64E7\",24,\"\u6501\",7,\"\u650A\",7,\"\u6513\",4,\"\u6519\",8],\n[\"9480\",\"\u6522\u6523\u6524\u6526\",4,\"\u652C\u652D\u6530\u6531\u6532\u6533\u6537\u653A\u653C\u653D\u6540\",4,\"\u6546\u6547\u654A\u654B\u654D\u654E\u6550\u6552\u6553\u6554\u6557\u6558\u655A\u655C\u655F\u6560\u6561\u6564\u6565\u6567\u6568\u6569\u656A\u656D\u656E\u656F\u6571\u6573\u6575\u6576\u6578\",14,\"\u6588\u6589\u658A\u658D\u658E\u658F\u6592\u6594\u6595\u6596\u6598\u659A\u659D\u659E\u65A0\u65A2\u65A3\u65A6\u65A8\u65AA\u65AC\u65AE\u65B1\",7,\"\u65BA\u65BB\u65BE\u65BF\u65C0\u65C2\u65C7\u65C8\u65C9\u65CA\u65CD\u65D0\u65D1\u65D3\u65D4\u65D5\u65D8\",7,\"\u65E1\u65E3\u65E4\u65EA\u65EB\"],\n[\"9540\",\"\u65F2\u65F3\u65F4\u65F5\u65F8\u65F9\u65FB\",4,\"\u6601\u6604\u6605\u6607\u6608\u6609\u660B\u660D\u6610\u6611\u6612\u6616\u6617\u6618\u661A\u661B\u661C\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6632\u6633\u6637\",4,\"\u663D\u663F\u6640\u6642\u6644\",6,\"\u664D\u664E\u6650\u6651\u6658\"],\n[\"9580\",\"\u6659\u665B\u665C\u665D\u665E\u6660\u6662\u6663\u6665\u6667\u6669\",4,\"\u6671\u6672\u6673\u6675\u6678\u6679\u667B\u667C\u667D\u667F\u6680\u6681\u6683\u6685\u6686\u6688\u6689\u668A\u668B\u668D\u668E\u668F\u6690\u6692\u6693\u6694\u6695\u6698\",4,\"\u669E\",8,\"\u66A9\",4,\"\u66AF\",4,\"\u66B5\u66B6\u66B7\u66B8\u66BA\u66BB\u66BC\u66BD\u66BF\",25,\"\u66DA\u66DE\",7,\"\u66E7\u66E8\u66EA\",5,\"\u66F1\u66F5\u66F6\u66F8\u66FA\u66FB\u66FD\u6701\u6702\u6703\"],\n[\"9640\",\"\u6704\u6705\u6706\u6707\u670C\u670E\u670F\u6711\u6712\u6713\u6716\u6718\u6719\u671A\u671C\u671E\u6720\",5,\"\u6727\u6729\u672E\u6730\u6732\u6733\u6736\u6737\u6738\u6739\u673B\u673C\u673E\u673F\u6741\u6744\u6745\u6747\u674A\u674B\u674D\u6752\u6754\u6755\u6757\",4,\"\u675D\u6762\u6763\u6764\u6766\u6767\u676B\u676C\u676E\u6771\u6774\u6776\"],\n[\"9680\",\"\u6778\u6779\u677A\u677B\u677D\u6780\u6782\u6783\u6785\u6786\u6788\u678A\u678C\u678D\u678E\u678F\u6791\u6792\u6793\u6794\u6796\u6799\u679B\u679F\u67A0\u67A1\u67A4\u67A6\u67A9\u67AC\u67AE\u67B1\u67B2\u67B4\u67B9\",7,\"\u67C2\u67C5\",9,\"\u67D5\u67D6\u67D7\u67DB\u67DF\u67E1\u67E3\u67E4\u67E6\u67E7\u67E8\u67EA\u67EB\u67ED\u67EE\u67F2\u67F5\",7,\"\u67FE\u6801\u6802\u6803\u6804\u6806\u680D\u6810\u6812\u6814\u6815\u6818\",4,\"\u681E\u681F\u6820\u6822\",6,\"\u682B\",6,\"\u6834\u6835\u6836\u683A\u683B\u683F\u6847\u684B\u684D\u684F\u6852\u6856\",5],\n[\"9740\",\"\u685C\u685D\u685E\u685F\u686A\u686C\",7,\"\u6875\u6878\",8,\"\u6882\u6884\u6887\",7,\"\u6890\u6891\u6892\u6894\u6895\u6896\u6898\",9,\"\u68A3\u68A4\u68A5\u68A9\u68AA\u68AB\u68AC\u68AE\u68B1\u68B2\u68B4\u68B6\u68B7\u68B8\"],\n[\"9780\",\"\u68B9\",6,\"\u68C1\u68C3\",5,\"\u68CA\u68CC\u68CE\u68CF\u68D0\u68D1\u68D3\u68D4\u68D6\u68D7\u68D9\u68DB\",4,\"\u68E1\u68E2\u68E4\",9,\"\u68EF\u68F2\u68F3\u68F4\u68F6\u68F7\u68F8\u68FB\u68FD\u68FE\u68FF\u6900\u6902\u6903\u6904\u6906\",4,\"\u690C\u690F\u6911\u6913\",11,\"\u6921\u6922\u6923\u6925\",7,\"\u692E\u692F\u6931\u6932\u6933\u6935\u6936\u6937\u6938\u693A\u693B\u693C\u693E\u6940\u6941\u6943\",16,\"\u6955\u6956\u6958\u6959\u695B\u695C\u695F\"],\n[\"9840\",\"\u6961\u6962\u6964\u6965\u6967\u6968\u6969\u696A\u696C\u696D\u696F\u6970\u6972\",4,\"\u697A\u697B\u697D\u697E\u697F\u6981\u6983\u6985\u698A\u698B\u698C\u698E\",5,\"\u6996\u6997\u6999\u699A\u699D\",9,\"\u69A9\u69AA\u69AC\u69AE\u69AF\u69B0\u69B2\u69B3\u69B5\u69B6\u69B8\u69B9\u69BA\u69BC\u69BD\"],\n[\"9880\",\"\u69BE\u69BF\u69C0\u69C2\",7,\"\u69CB\u69CD\u69CF\u69D1\u69D2\u69D3\u69D5\",5,\"\u69DC\u69DD\u69DE\u69E1\",11,\"\u69EE\u69EF\u69F0\u69F1\u69F3\",9,\"\u69FE\u6A00\",9,\"\u6A0B\",11,\"\u6A19\",5,\"\u6A20\u6A22\",5,\"\u6A29\u6A2B\u6A2C\u6A2D\u6A2E\u6A30\u6A32\u6A33\u6A34\u6A36\",6,\"\u6A3F\",4,\"\u6A45\u6A46\u6A48\",7,\"\u6A51\",6,\"\u6A5A\"],\n[\"9940\",\"\u6A5C\",4,\"\u6A62\u6A63\u6A64\u6A66\",10,\"\u6A72\",6,\"\u6A7A\u6A7B\u6A7D\u6A7E\u6A7F\u6A81\u6A82\u6A83\u6A85\",8,\"\u6A8F\u6A92\",4,\"\u6A98\",7,\"\u6AA1\",5],\n[\"9980\",\"\u6AA7\u6AA8\u6AAA\u6AAD\",114,\"\u6B25\u6B26\u6B28\",6],\n[\"9a40\",\"\u6B2F\u6B30\u6B31\u6B33\u6B34\u6B35\u6B36\u6B38\u6B3B\u6B3C\u6B3D\u6B3F\u6B40\u6B41\u6B42\u6B44\u6B45\u6B48\u6B4A\u6B4B\u6B4D\",11,\"\u6B5A\",7,\"\u6B68\u6B69\u6B6B\",13,\"\u6B7A\u6B7D\u6B7E\u6B7F\u6B80\u6B85\u6B88\"],\n[\"9a80\",\"\u6B8C\u6B8E\u6B8F\u6B90\u6B91\u6B94\u6B95\u6B97\u6B98\u6B99\u6B9C\",4,\"\u6BA2\",7,\"\u6BAB\",7,\"\u6BB6\u6BB8\",6,\"\u6BC0\u6BC3\u6BC4\u6BC6\",4,\"\u6BCC\u6BCE\u6BD0\u6BD1\u6BD8\u6BDA\u6BDC\",4,\"\u6BE2\",7,\"\u6BEC\u6BED\u6BEE\u6BF0\u6BF1\u6BF2\u6BF4\u6BF6\u6BF7\u6BF8\u6BFA\u6BFB\u6BFC\u6BFE\",6,\"\u6C08\",4,\"\u6C0E\u6C12\u6C17\u6C1C\u6C1D\u6C1E\u6C20\u6C23\u6C25\u6C2B\u6C2C\u6C2D\u6C31\u6C33\u6C36\u6C37\u6C39\u6C3A\u6C3B\u6C3C\u6C3E\u6C3F\u6C43\u6C44\u6C45\u6C48\u6C4B\",4,\"\u6C51\u6C52\u6C53\u6C56\u6C58\"],\n[\"9b40\",\"\u6C59\u6C5A\u6C62\u6C63\u6C65\u6C66\u6C67\u6C6B\",4,\"\u6C71\u6C73\u6C75\u6C77\u6C78\u6C7A\u6C7B\u6C7C\u6C7F\u6C80\u6C84\u6C87\u6C8A\u6C8B\u6C8D\u6C8E\u6C91\u6C92\u6C95\u6C96\u6C97\u6C98\u6C9A\u6C9C\u6C9D\u6C9E\u6CA0\u6CA2\u6CA8\u6CAC\u6CAF\u6CB0\u6CB4\u6CB5\u6CB6\u6CB7\u6CBA\u6CC0\u6CC1\u6CC2\u6CC3\u6CC6\u6CC7\u6CC8\u6CCB\u6CCD\u6CCE\u6CCF\u6CD1\u6CD2\u6CD8\"],\n[\"9b80\",\"\u6CD9\u6CDA\u6CDC\u6CDD\u6CDF\u6CE4\u6CE6\u6CE7\u6CE9\u6CEC\u6CED\u6CF2\u6CF4\u6CF9\u6CFF\u6D00\u6D02\u6D03\u6D05\u6D06\u6D08\u6D09\u6D0A\u6D0D\u6D0F\u6D10\u6D11\u6D13\u6D14\u6D15\u6D16\u6D18\u6D1C\u6D1D\u6D1F\",5,\"\u6D26\u6D28\u6D29\u6D2C\u6D2D\u6D2F\u6D30\u6D34\u6D36\u6D37\u6D38\u6D3A\u6D3F\u6D40\u6D42\u6D44\u6D49\u6D4C\u6D50\u6D55\u6D56\u6D57\u6D58\u6D5B\u6D5D\u6D5F\u6D61\u6D62\u6D64\u6D65\u6D67\u6D68\u6D6B\u6D6C\u6D6D\u6D70\u6D71\u6D72\u6D73\u6D75\u6D76\u6D79\u6D7A\u6D7B\u6D7D\",4,\"\u6D83\u6D84\u6D86\u6D87\u6D8A\u6D8B\u6D8D\u6D8F\u6D90\u6D92\u6D96\",4,\"\u6D9C\u6DA2\u6DA5\u6DAC\u6DAD\u6DB0\u6DB1\u6DB3\u6DB4\u6DB6\u6DB7\u6DB9\",5,\"\u6DC1\u6DC2\u6DC3\u6DC8\u6DC9\u6DCA\"],\n[\"9c40\",\"\u6DCD\u6DCE\u6DCF\u6DD0\u6DD2\u6DD3\u6DD4\u6DD5\u6DD7\u6DDA\u6DDB\u6DDC\u6DDF\u6DE2\u6DE3\u6DE5\u6DE7\u6DE8\u6DE9\u6DEA\u6DED\u6DEF\u6DF0\u6DF2\u6DF4\u6DF5\u6DF6\u6DF8\u6DFA\u6DFD\",7,\"\u6E06\u6E07\u6E08\u6E09\u6E0B\u6E0F\u6E12\u6E13\u6E15\u6E18\u6E19\u6E1B\u6E1C\u6E1E\u6E1F\u6E22\u6E26\u6E27\u6E28\u6E2A\u6E2C\u6E2E\u6E30\u6E31\u6E33\u6E35\"],\n[\"9c80\",\"\u6E36\u6E37\u6E39\u6E3B\",7,\"\u6E45\",7,\"\u6E4F\u6E50\u6E51\u6E52\u6E55\u6E57\u6E59\u6E5A\u6E5C\u6E5D\u6E5E\u6E60\",10,\"\u6E6C\u6E6D\u6E6F\",14,\"\u6E80\u6E81\u6E82\u6E84\u6E87\u6E88\u6E8A\",4,\"\u6E91\",6,\"\u6E99\u6E9A\u6E9B\u6E9D\u6E9E\u6EA0\u6EA1\u6EA3\u6EA4\u6EA6\u6EA8\u6EA9\u6EAB\u6EAC\u6EAD\u6EAE\u6EB0\u6EB3\u6EB5\u6EB8\u6EB9\u6EBC\u6EBE\u6EBF\u6EC0\u6EC3\u6EC4\u6EC5\u6EC6\u6EC8\u6EC9\u6ECA\u6ECC\u6ECD\u6ECE\u6ED0\u6ED2\u6ED6\u6ED8\u6ED9\u6EDB\u6EDC\u6EDD\u6EE3\u6EE7\u6EEA\",5],\n[\"9d40\",\"\u6EF0\u6EF1\u6EF2\u6EF3\u6EF5\u6EF6\u6EF7\u6EF8\u6EFA\",7,\"\u6F03\u6F04\u6F05\u6F07\u6F08\u6F0A\",4,\"\u6F10\u6F11\u6F12\u6F16\",9,\"\u6F21\u6F22\u6F23\u6F25\u6F26\u6F27\u6F28\u6F2C\u6F2E\u6F30\u6F32\u6F34\u6F35\u6F37\",6,\"\u6F3F\u6F40\u6F41\u6F42\"],\n[\"9d80\",\"\u6F43\u6F44\u6F45\u6F48\u6F49\u6F4A\u6F4C\u6F4E\",9,\"\u6F59\u6F5A\u6F5B\u6F5D\u6F5F\u6F60\u6F61\u6F63\u6F64\u6F65\u6F67\",5,\"\u6F6F\u6F70\u6F71\u6F73\u6F75\u6F76\u6F77\u6F79\u6F7B\u6F7D\",6,\"\u6F85\u6F86\u6F87\u6F8A\u6F8B\u6F8F\",12,\"\u6F9D\u6F9E\u6F9F\u6FA0\u6FA2\",4,\"\u6FA8\",10,\"\u6FB4\u6FB5\u6FB7\u6FB8\u6FBA\",5,\"\u6FC1\u6FC3\",5,\"\u6FCA\",6,\"\u6FD3\",10,\"\u6FDF\u6FE2\u6FE3\u6FE4\u6FE5\"],\n[\"9e40\",\"\u6FE6\",7,\"\u6FF0\",32,\"\u7012\",7,\"\u701C\",6,\"\u7024\",6],\n[\"9e80\",\"\u702B\",9,\"\u7036\u7037\u7038\u703A\",17,\"\u704D\u704E\u7050\",13,\"\u705F\",11,\"\u706E\u7071\u7072\u7073\u7074\u7077\u7079\u707A\u707B\u707D\u7081\u7082\u7083\u7084\u7086\u7087\u7088\u708B\u708C\u708D\u708F\u7090\u7091\u7093\u7097\u7098\u709A\u709B\u709E\",12,\"\u70B0\u70B2\u70B4\u70B5\u70B6\u70BA\u70BE\u70BF\u70C4\u70C5\u70C6\u70C7\u70C9\u70CB\",12,\"\u70DA\"],\n[\"9f40\",\"\u70DC\u70DD\u70DE\u70E0\u70E1\u70E2\u70E3\u70E5\u70EA\u70EE\u70F0\",6,\"\u70F8\u70FA\u70FB\u70FC\u70FE\",10,\"\u710B\",4,\"\u7111\u7112\u7114\u7117\u711B\",10,\"\u7127\",7,\"\u7132\u7133\u7134\"],\n[\"9f80\",\"\u7135\u7137\",13,\"\u7146\u7147\u7148\u7149\u714B\u714D\u714F\",12,\"\u715D\u715F\",4,\"\u7165\u7169\",4,\"\u716F\u7170\u7171\u7174\u7175\u7176\u7177\u7179\u717B\u717C\u717E\",5,\"\u7185\",4,\"\u718B\u718C\u718D\u718E\u7190\u7191\u7192\u7193\u7195\u7196\u7197\u719A\",4,\"\u71A1\",6,\"\u71A9\u71AA\u71AB\u71AD\",5,\"\u71B4\u71B6\u71B7\u71B8\u71BA\",8,\"\u71C4\",9,\"\u71CF\",4],\n[\"a040\",\"\u71D6\",9,\"\u71E1\u71E2\u71E3\u71E4\u71E6\u71E8\",5,\"\u71EF\",9,\"\u71FA\",11,\"\u7207\",19],\n[\"a080\",\"\u721B\u721C\u721E\",9,\"\u7229\u722B\u722D\u722E\u722F\u7232\u7233\u7234\u723A\u723C\u723E\u7240\",6,\"\u7249\u724A\u724B\u724E\u724F\u7250\u7251\u7253\u7254\u7255\u7257\u7258\u725A\u725C\u725E\u7260\u7263\u7264\u7265\u7268\u726A\u726B\u726C\u726D\u7270\u7271\u7273\u7274\u7276\u7277\u7278\u727B\u727C\u727D\u7282\u7283\u7285\",4,\"\u728C\u728E\u7290\u7291\u7293\",11,\"\u72A0\",11,\"\u72AE\u72B1\u72B2\u72B3\u72B5\u72BA\",6,\"\u72C5\u72C6\u72C7\u72C9\u72CA\u72CB\u72CC\u72CF\u72D1\u72D3\u72D4\u72D5\u72D6\u72D8\u72DA\u72DB\"],\n[\"a1a1\",\"\u3000\u3001\u3002\u00B7\u02C9\u02C7\u00A8\u3003\u3005\u2014\uFF5E\u2016\u2026\u2018\u2019\u201C\u201D\u3014\u3015\u3008\",7,\"\u3016\u3017\u3010\u3011\u00B1\u00D7\u00F7\u2236\u2227\u2228\u2211\u220F\u222A\u2229\u2208\u2237\u221A\u22A5\u2225\u2220\u2312\u2299\u222B\u222E\u2261\u224C\u2248\u223D\u221D\u2260\u226E\u226F\u2264\u2265\u221E\u2235\u2234\u2642\u2640\u00B0\u2032\u2033\u2103\uFF04\u00A4\uFFE0\uFFE1\u2030\u00A7\u2116\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u203B\u2192\u2190\u2191\u2193\u3013\"],\n[\"a2a1\",\"\u2170\",9],\n[\"a2b1\",\"\u2488\",19,\"\u2474\",19,\"\u2460\",9],\n[\"a2e5\",\"\u3220\",9],\n[\"a2f1\",\"\u2160\",11],\n[\"a3a1\",\"\uFF01\uFF02\uFF03\uFFE5\uFF05\",88,\"\uFFE3\"],\n[\"a4a1\",\"\u3041\",82],\n[\"a5a1\",\"\u30A1\",85],\n[\"a6a1\",\"\u0391\",16,\"\u03A3\",6],\n[\"a6c1\",\"\u03B1\",16,\"\u03C3\",6],\n[\"a6e0\",\"\uFE35\uFE36\uFE39\uFE3A\uFE3F\uFE40\uFE3D\uFE3E\uFE41\uFE42\uFE43\uFE44\"],\n[\"a6ee\",\"\uFE3B\uFE3C\uFE37\uFE38\uFE31\"],\n[\"a6f4\",\"\uFE33\uFE34\"],\n[\"a7a1\",\"\u0410\",5,\"\u0401\u0416\",25],\n[\"a7d1\",\"\u0430\",5,\"\u0451\u0436\",25],\n[\"a840\",\"\u02CA\u02CB\u02D9\u2013\u2015\u2025\u2035\u2105\u2109\u2196\u2197\u2198\u2199\u2215\u221F\u2223\u2252\u2266\u2267\u22BF\u2550\",35,\"\u2581\",6],\n[\"a880\",\"\u2588\",7,\"\u2593\u2594\u2595\u25BC\u25BD\u25E2\u25E3\u25E4\u25E5\u2609\u2295\u3012\u301D\u301E\"],\n[\"a8a1\",\"\u0101\u00E1\u01CE\u00E0\u0113\u00E9\u011B\u00E8\u012B\u00ED\u01D0\u00EC\u014D\u00F3\u01D2\u00F2\u016B\u00FA\u01D4\u00F9\u01D6\u01D8\u01DA\u01DC\u00FC\u00EA\u0251\"],\n[\"a8bd\",\"\u0144\u0148\"],\n[\"a8c0\",\"\u0261\"],\n[\"a8c5\",\"\u3105\",36],\n[\"a940\",\"\u3021\",8,\"\u32A3\u338E\u338F\u339C\u339D\u339E\u33A1\u33C4\u33CE\u33D1\u33D2\u33D5\uFE30\uFFE2\uFFE4\"],\n[\"a959\",\"\u2121\u3231\"],\n[\"a95c\",\"\u2010\"],\n[\"a960\",\"\u30FC\u309B\u309C\u30FD\u30FE\u3006\u309D\u309E\uFE49\",9,\"\uFE54\uFE55\uFE56\uFE57\uFE59\",8],\n[\"a980\",\"\uFE62\",4,\"\uFE68\uFE69\uFE6A\uFE6B\"],\n[\"a996\",\"\u3007\"],\n[\"a9a4\",\"\u2500\",75],\n[\"aa40\",\"\u72DC\u72DD\u72DF\u72E2\",5,\"\u72EA\u72EB\u72F5\u72F6\u72F9\u72FD\u72FE\u72FF\u7300\u7302\u7304\",5,\"\u730B\u730C\u730D\u730F\u7310\u7311\u7312\u7314\u7318\u7319\u731A\u731F\u7320\u7323\u7324\u7326\u7327\u7328\u732D\u732F\u7330\u7332\u7333\u7335\u7336\u733A\u733B\u733C\u733D\u7340\",8],\n[\"aa80\",\"\u7349\u734A\u734B\u734C\u734E\u734F\u7351\u7353\u7354\u7355\u7356\u7358\",7,\"\u7361\",10,\"\u736E\u7370\u7371\"],\n[\"ab40\",\"\u7372\",11,\"\u737F\",4,\"\u7385\u7386\u7388\u738A\u738C\u738D\u738F\u7390\u7392\u7393\u7394\u7395\u7397\u7398\u7399\u739A\u739C\u739D\u739E\u73A0\u73A1\u73A3\",5,\"\u73AA\u73AC\u73AD\u73B1\u73B4\u73B5\u73B6\u73B8\u73B9\u73BC\u73BD\u73BE\u73BF\u73C1\u73C3\",4],\n[\"ab80\",\"\u73CB\u73CC\u73CE\u73D2\",6,\"\u73DA\u73DB\u73DC\u73DD\u73DF\u73E1\u73E2\u73E3\u73E4\u73E6\u73E8\u73EA\u73EB\u73EC\u73EE\u73EF\u73F0\u73F1\u73F3\",4],\n[\"ac40\",\"\u73F8\",10,\"\u7404\u7407\u7408\u740B\u740C\u740D\u740E\u7411\",8,\"\u741C\",5,\"\u7423\u7424\u7427\u7429\u742B\u742D\u742F\u7431\u7432\u7437\",4,\"\u743D\u743E\u743F\u7440\u7442\",11],\n[\"ac80\",\"\u744E\",6,\"\u7456\u7458\u745D\u7460\",12,\"\u746E\u746F\u7471\",4,\"\u7478\u7479\u747A\"],\n[\"ad40\",\"\u747B\u747C\u747D\u747F\u7482\u7484\u7485\u7486\u7488\u7489\u748A\u748C\u748D\u748F\u7491\",10,\"\u749D\u749F\",7,\"\u74AA\",15,\"\u74BB\",12],\n[\"ad80\",\"\u74C8\",9,\"\u74D3\",8,\"\u74DD\u74DF\u74E1\u74E5\u74E7\",6,\"\u74F0\u74F1\u74F2\"],\n[\"ae40\",\"\u74F3\u74F5\u74F8\",6,\"\u7500\u7501\u7502\u7503\u7505\",7,\"\u750E\u7510\u7512\u7514\u7515\u7516\u7517\u751B\u751D\u751E\u7520\",4,\"\u7526\u7527\u752A\u752E\u7534\u7536\u7539\u753C\u753D\u753F\u7541\u7542\u7543\u7544\u7546\u7547\u7549\u754A\u754D\u7550\u7551\u7552\u7553\u7555\u7556\u7557\u7558\"],\n[\"ae80\",\"\u755D\",7,\"\u7567\u7568\u7569\u756B\",6,\"\u7573\u7575\u7576\u7577\u757A\",4,\"\u7580\u7581\u7582\u7584\u7585\u7587\"],\n[\"af40\",\"\u7588\u7589\u758A\u758C\u758D\u758E\u7590\u7593\u7595\u7598\u759B\u759C\u759E\u75A2\u75A6\",4,\"\u75AD\u75B6\u75B7\u75BA\u75BB\u75BF\u75C0\u75C1\u75C6\u75CB\u75CC\u75CE\u75CF\u75D0\u75D1\u75D3\u75D7\u75D9\u75DA\u75DC\u75DD\u75DF\u75E0\u75E1\u75E5\u75E9\u75EC\u75ED\u75EE\u75EF\u75F2\u75F3\u75F5\u75F6\u75F7\u75F8\u75FA\u75FB\u75FD\u75FE\u7602\u7604\u7606\u7607\"],\n[\"af80\",\"\u7608\u7609\u760B\u760D\u760E\u760F\u7611\u7612\u7613\u7614\u7616\u761A\u761C\u761D\u761E\u7621\u7623\u7627\u7628\u762C\u762E\u762F\u7631\u7632\u7636\u7637\u7639\u763A\u763B\u763D\u7641\u7642\u7644\"],\n[\"b040\",\"\u7645\",6,\"\u764E\",5,\"\u7655\u7657\",4,\"\u765D\u765F\u7660\u7661\u7662\u7664\",6,\"\u766C\u766D\u766E\u7670\",7,\"\u7679\u767A\u767C\u767F\u7680\u7681\u7683\u7685\u7689\u768A\u768C\u768D\u768F\u7690\u7692\u7694\u7695\u7697\u7698\u769A\u769B\"],\n[\"b080\",\"\u769C\",7,\"\u76A5\",8,\"\u76AF\u76B0\u76B3\u76B5\",9,\"\u76C0\u76C1\u76C3\u554A\u963F\u57C3\u6328\u54CE\u5509\u54C0\u7691\u764C\u853C\u77EE\u827E\u788D\u7231\u9698\u978D\u6C28\u5B89\u4FFA\u6309\u6697\u5CB8\u80FA\u6848\u80AE\u6602\u76CE\u51F9\u6556\u71AC\u7FF1\u8884\u50B2\u5965\u61CA\u6FB3\u82AD\u634C\u6252\u53ED\u5427\u7B06\u516B\u75A4\u5DF4\u62D4\u8DCB\u9776\u628A\u8019\u575D\u9738\u7F62\u7238\u767D\u67CF\u767E\u6446\u4F70\u8D25\u62DC\u7A17\u6591\u73ED\u642C\u6273\u822C\u9881\u677F\u7248\u626E\u62CC\u4F34\u74E3\u534A\u529E\u7ECA\u90A6\u5E2E\u6886\u699C\u8180\u7ED1\u68D2\u78C5\u868C\u9551\u508D\u8C24\u82DE\u80DE\u5305\u8912\u5265\"],\n[\"b140\",\"\u76C4\u76C7\u76C9\u76CB\u76CC\u76D3\u76D5\u76D9\u76DA\u76DC\u76DD\u76DE\u76E0\",4,\"\u76E6\",7,\"\u76F0\u76F3\u76F5\u76F6\u76F7\u76FA\u76FB\u76FD\u76FF\u7700\u7702\u7703\u7705\u7706\u770A\u770C\u770E\",10,\"\u771B\u771C\u771D\u771E\u7721\u7723\u7724\u7725\u7727\u772A\u772B\"],\n[\"b180\",\"\u772C\u772E\u7730\",4,\"\u7739\u773B\u773D\u773E\u773F\u7742\u7744\u7745\u7746\u7748\",7,\"\u7752\",7,\"\u775C\u8584\u96F9\u4FDD\u5821\u9971\u5B9D\u62B1\u62A5\u66B4\u8C79\u9C8D\u7206\u676F\u7891\u60B2\u5351\u5317\u8F88\u80CC\u8D1D\u94A1\u500D\u72C8\u5907\u60EB\u7119\u88AB\u5954\u82EF\u672C\u7B28\u5D29\u7EF7\u752D\u6CF5\u8E66\u8FF8\u903C\u9F3B\u6BD4\u9119\u7B14\u5F7C\u78A7\u84D6\u853D\u6BD5\u6BD9\u6BD6\u5E01\u5E87\u75F9\u95ED\u655D\u5F0A\u5FC5\u8F9F\u58C1\u81C2\u907F\u965B\u97AD\u8FB9\u7F16\u8D2C\u6241\u4FBF\u53D8\u535E\u8FA8\u8FA9\u8FAB\u904D\u6807\u5F6A\u8198\u8868\u9CD6\u618B\u522B\u762A\u5F6C\u658C\u6FD2\u6EE8\u5BBE\u6448\u5175\u51B0\u67C4\u4E19\u79C9\u997C\u70B3\"],\n[\"b240\",\"\u775D\u775E\u775F\u7760\u7764\u7767\u7769\u776A\u776D\",11,\"\u777A\u777B\u777C\u7781\u7782\u7783\u7786\",5,\"\u778F\u7790\u7793\",11,\"\u77A1\u77A3\u77A4\u77A6\u77A8\u77AB\u77AD\u77AE\u77AF\u77B1\u77B2\u77B4\u77B6\",4],\n[\"b280\",\"\u77BC\u77BE\u77C0\",12,\"\u77CE\",8,\"\u77D8\u77D9\u77DA\u77DD\",4,\"\u77E4\u75C5\u5E76\u73BB\u83E0\u64AD\u62E8\u94B5\u6CE2\u535A\u52C3\u640F\u94C2\u7B94\u4F2F\u5E1B\u8236\u8116\u818A\u6E24\u6CCA\u9A73\u6355\u535C\u54FA\u8865\u57E0\u4E0D\u5E03\u6B65\u7C3F\u90E8\u6016\u64E6\u731C\u88C1\u6750\u624D\u8D22\u776C\u8E29\u91C7\u5F69\u83DC\u8521\u9910\u53C2\u8695\u6B8B\u60ED\u60E8\u707F\u82CD\u8231\u4ED3\u6CA7\u85CF\u64CD\u7CD9\u69FD\u66F9\u8349\u5395\u7B56\u4FA7\u518C\u6D4B\u5C42\u8E6D\u63D2\u53C9\u832C\u8336\u67E5\u78B4\u643D\u5BDF\u5C94\u5DEE\u8BE7\u62C6\u67F4\u8C7A\u6400\u63BA\u8749\u998B\u8C17\u7F20\u94F2\u4EA7\u9610\u98A4\u660C\u7316\"],\n[\"b340\",\"\u77E6\u77E8\u77EA\u77EF\u77F0\u77F1\u77F2\u77F4\u77F5\u77F7\u77F9\u77FA\u77FB\u77FC\u7803\",5,\"\u780A\u780B\u780E\u780F\u7810\u7813\u7815\u7819\u781B\u781E\u7820\u7821\u7822\u7824\u7828\u782A\u782B\u782E\u782F\u7831\u7832\u7833\u7835\u7836\u783D\u783F\u7841\u7842\u7843\u7844\u7846\u7848\u7849\u784A\u784B\u784D\u784F\u7851\u7853\u7854\u7858\u7859\u785A\"],\n[\"b380\",\"\u785B\u785C\u785E\",11,\"\u786F\",7,\"\u7878\u7879\u787A\u787B\u787D\",6,\"\u573A\u5C1D\u5E38\u957F\u507F\u80A0\u5382\u655E\u7545\u5531\u5021\u8D85\u6284\u949E\u671D\u5632\u6F6E\u5DE2\u5435\u7092\u8F66\u626F\u64A4\u63A3\u5F7B\u6F88\u90F4\u81E3\u8FB0\u5C18\u6668\u5FF1\u6C89\u9648\u8D81\u886C\u6491\u79F0\u57CE\u6A59\u6210\u5448\u4E58\u7A0B\u60E9\u6F84\u8BDA\u627F\u901E\u9A8B\u79E4\u5403\u75F4\u6301\u5319\u6C60\u8FDF\u5F1B\u9A70\u803B\u9F7F\u4F88\u5C3A\u8D64\u7FC5\u65A5\u70BD\u5145\u51B2\u866B\u5D07\u5BA0\u62BD\u916C\u7574\u8E0C\u7A20\u6101\u7B79\u4EC7\u7EF8\u7785\u4E11\u81ED\u521D\u51FA\u6A71\u53A8\u8E87\u9504\u96CF\u6EC1\u9664\u695A\"],\n[\"b440\",\"\u7884\u7885\u7886\u7888\u788A\u788B\u788F\u7890\u7892\u7894\u7895\u7896\u7899\u789D\u789E\u78A0\u78A2\u78A4\u78A6\u78A8\",7,\"\u78B5\u78B6\u78B7\u78B8\u78BA\u78BB\u78BC\u78BD\u78BF\u78C0\u78C2\u78C3\u78C4\u78C6\u78C7\u78C8\u78CC\u78CD\u78CE\u78CF\u78D1\u78D2\u78D3\u78D6\u78D7\u78D8\u78DA\",9],\n[\"b480\",\"\u78E4\u78E5\u78E6\u78E7\u78E9\u78EA\u78EB\u78ED\",4,\"\u78F3\u78F5\u78F6\u78F8\u78F9\u78FB\",5,\"\u7902\u7903\u7904\u7906\",6,\"\u7840\u50A8\u77D7\u6410\u89E6\u5904\u63E3\u5DDD\u7A7F\u693D\u4F20\u8239\u5598\u4E32\u75AE\u7A97\u5E62\u5E8A\u95EF\u521B\u5439\u708A\u6376\u9524\u5782\u6625\u693F\u9187\u5507\u6DF3\u7EAF\u8822\u6233\u7EF0\u75B5\u8328\u78C1\u96CC\u8F9E\u6148\u74F7\u8BCD\u6B64\u523A\u8D50\u6B21\u806A\u8471\u56F1\u5306\u4ECE\u4E1B\u51D1\u7C97\u918B\u7C07\u4FC3\u8E7F\u7BE1\u7A9C\u6467\u5D14\u50AC\u8106\u7601\u7CB9\u6DEC\u7FE0\u6751\u5B58\u5BF8\u78CB\u64AE\u6413\u63AA\u632B\u9519\u642D\u8FBE\u7B54\u7629\u6253\u5927\u5446\u6B79\u50A3\u6234\u5E26\u6B86\u4EE3\u8D37\u888B\u5F85\u902E\"],\n[\"b540\",\"\u790D\",5,\"\u7914\",9,\"\u791F\",4,\"\u7925\",14,\"\u7935\",4,\"\u793D\u793F\u7942\u7943\u7944\u7945\u7947\u794A\",8,\"\u7954\u7955\u7958\u7959\u7961\u7963\"],\n[\"b580\",\"\u7964\u7966\u7969\u796A\u796B\u796C\u796E\u7970\",6,\"\u7979\u797B\",4,\"\u7982\u7983\u7986\u7987\u7988\u7989\u798B\u798C\u798D\u798E\u7990\u7991\u7992\u6020\u803D\u62C5\u4E39\u5355\u90F8\u63B8\u80C6\u65E6\u6C2E\u4F46\u60EE\u6DE1\u8BDE\u5F39\u86CB\u5F53\u6321\u515A\u8361\u6863\u5200\u6363\u8E48\u5012\u5C9B\u7977\u5BFC\u5230\u7A3B\u60BC\u9053\u76D7\u5FB7\u5F97\u7684\u8E6C\u706F\u767B\u7B49\u77AA\u51F3\u9093\u5824\u4F4E\u6EF4\u8FEA\u654C\u7B1B\u72C4\u6DA4\u7FDF\u5AE1\u62B5\u5E95\u5730\u8482\u7B2C\u5E1D\u5F1F\u9012\u7F14\u98A0\u6382\u6EC7\u7898\u70B9\u5178\u975B\u57AB\u7535\u4F43\u7538\u5E97\u60E6\u5960\u6DC0\u6BBF\u7889\u53FC\u96D5\u51CB\u5201\u6389\u540A\u9493\u8C03\u8DCC\u7239\u789F\u8776\u8FED\u8C0D\u53E0\"],\n[\"b640\",\"\u7993\",6,\"\u799B\",11,\"\u79A8\",10,\"\u79B4\",4,\"\u79BC\u79BF\u79C2\u79C4\u79C5\u79C7\u79C8\u79CA\u79CC\u79CE\u79CF\u79D0\u79D3\u79D4\u79D6\u79D7\u79D9\",5,\"\u79E0\u79E1\u79E2\u79E5\u79E8\u79EA\"],\n[\"b680\",\"\u79EC\u79EE\u79F1\",6,\"\u79F9\u79FA\u79FC\u79FE\u79FF\u7A01\u7A04\u7A05\u7A07\u7A08\u7A09\u7A0A\u7A0C\u7A0F\",4,\"\u7A15\u7A16\u7A18\u7A19\u7A1B\u7A1C\u4E01\u76EF\u53EE\u9489\u9876\u9F0E\u952D\u5B9A\u8BA2\u4E22\u4E1C\u51AC\u8463\u61C2\u52A8\u680B\u4F97\u606B\u51BB\u6D1E\u515C\u6296\u6597\u9661\u8C46\u9017\u75D8\u90FD\u7763\u6BD2\u728A\u72EC\u8BFB\u5835\u7779\u8D4C\u675C\u9540\u809A\u5EA6\u6E21\u5992\u7AEF\u77ED\u953B\u6BB5\u65AD\u7F0E\u5806\u5151\u961F\u5BF9\u58A9\u5428\u8E72\u6566\u987F\u56E4\u949D\u76FE\u9041\u6387\u54C6\u591A\u593A\u579B\u8EB2\u6735\u8DFA\u8235\u5241\u60F0\u5815\u86FE\u5CE8\u9E45\u4FC4\u989D\u8BB9\u5A25\u6076\u5384\u627C\u904F\u9102\u997F\u6069\u800C\u513F\u8033\u5C14\u9975\u6D31\u4E8C\"],\n[\"b740\",\"\u7A1D\u7A1F\u7A21\u7A22\u7A24\",14,\"\u7A34\u7A35\u7A36\u7A38\u7A3A\u7A3E\u7A40\",5,\"\u7A47\",9,\"\u7A52\",4,\"\u7A58\",16],\n[\"b780\",\"\u7A69\",6,\"\u7A71\u7A72\u7A73\u7A75\u7A7B\u7A7C\u7A7D\u7A7E\u7A82\u7A85\u7A87\u7A89\u7A8A\u7A8B\u7A8C\u7A8E\u7A8F\u7A90\u7A93\u7A94\u7A99\u7A9A\u7A9B\u7A9E\u7AA1\u7AA2\u8D30\u53D1\u7F5A\u7B4F\u4F10\u4E4F\u9600\u6CD5\u73D0\u85E9\u5E06\u756A\u7FFB\u6A0A\u77FE\u9492\u7E41\u51E1\u70E6\u53CD\u8FD4\u8303\u8D29\u72AF\u996D\u6CDB\u574A\u82B3\u65B9\u80AA\u623F\u9632\u59A8\u4EFF\u8BBF\u7EBA\u653E\u83F2\u975E\u5561\u98DE\u80A5\u532A\u8BFD\u5420\u80BA\u5E9F\u6CB8\u8D39\u82AC\u915A\u5429\u6C1B\u5206\u7EB7\u575F\u711A\u6C7E\u7C89\u594B\u4EFD\u5FFF\u6124\u7CAA\u4E30\u5C01\u67AB\u8702\u5CF0\u950B\u98CE\u75AF\u70FD\u9022\u51AF\u7F1D\u8BBD\u5949\u51E4\u4F5B\u5426\u592B\u6577\u80A4\u5B75\u6276\u62C2\u8F90\u5E45\u6C1F\u7B26\u4F0F\u4FD8\u670D\"],\n[\"b840\",\"\u7AA3\u7AA4\u7AA7\u7AA9\u7AAA\u7AAB\u7AAE\",4,\"\u7AB4\",10,\"\u7AC0\",10,\"\u7ACC\",9,\"\u7AD7\u7AD8\u7ADA\u7ADB\u7ADC\u7ADD\u7AE1\u7AE2\u7AE4\u7AE7\",5,\"\u7AEE\u7AF0\u7AF1\u7AF2\u7AF3\"],\n[\"b880\",\"\u7AF4\",4,\"\u7AFB\u7AFC\u7AFE\u7B00\u7B01\u7B02\u7B05\u7B07\u7B09\u7B0C\u7B0D\u7B0E\u7B10\u7B12\u7B13\u7B16\u7B17\u7B18\u7B1A\u7B1C\u7B1D\u7B1F\u7B21\u7B22\u7B23\u7B27\u7B29\u7B2D\u6D6E\u6DAA\u798F\u88B1\u5F17\u752B\u629A\u8F85\u4FEF\u91DC\u65A7\u812F\u8151\u5E9C\u8150\u8D74\u526F\u8986\u8D4B\u590D\u5085\u4ED8\u961C\u7236\u8179\u8D1F\u5BCC\u8BA3\u9644\u5987\u7F1A\u5490\u5676\u560E\u8BE5\u6539\u6982\u9499\u76D6\u6E89\u5E72\u7518\u6746\u67D1\u7AFF\u809D\u8D76\u611F\u79C6\u6562\u8D63\u5188\u521A\u94A2\u7F38\u809B\u7EB2\u5C97\u6E2F\u6760\u7BD9\u768B\u9AD8\u818F\u7F94\u7CD5\u641E\u9550\u7A3F\u544A\u54E5\u6B4C\u6401\u6208\u9E3D\u80F3\u7599\u5272\u9769\u845B\u683C\u86E4\u9601\u9694\u94EC\u4E2A\u5404\u7ED9\u6839\u8DDF\u8015\u66F4\u5E9A\u7FB9\"],\n[\"b940\",\"\u7B2F\u7B30\u7B32\u7B34\u7B35\u7B36\u7B37\u7B39\u7B3B\u7B3D\u7B3F\",5,\"\u7B46\u7B48\u7B4A\u7B4D\u7B4E\u7B53\u7B55\u7B57\u7B59\u7B5C\u7B5E\u7B5F\u7B61\u7B63\",10,\"\u7B6F\u7B70\u7B73\u7B74\u7B76\u7B78\u7B7A\u7B7C\u7B7D\u7B7F\u7B81\u7B82\u7B83\u7B84\u7B86\",6,\"\u7B8E\u7B8F\"],\n[\"b980\",\"\u7B91\u7B92\u7B93\u7B96\u7B98\u7B99\u7B9A\u7B9B\u7B9E\u7B9F\u7BA0\u7BA3\u7BA4\u7BA5\u7BAE\u7BAF\u7BB0\u7BB2\u7BB3\u7BB5\u7BB6\u7BB7\u7BB9\",7,\"\u7BC2\u7BC3\u7BC4\u57C2\u803F\u6897\u5DE5\u653B\u529F\u606D\u9F9A\u4F9B\u8EAC\u516C\u5BAB\u5F13\u5DE9\u6C5E\u62F1\u8D21\u5171\u94A9\u52FE\u6C9F\u82DF\u72D7\u57A2\u6784\u8D2D\u591F\u8F9C\u83C7\u5495\u7B8D\u4F30\u6CBD\u5B64\u59D1\u9F13\u53E4\u86CA\u9AA8\u8C37\u80A1\u6545\u987E\u56FA\u96C7\u522E\u74DC\u5250\u5BE1\u6302\u8902\u4E56\u62D0\u602A\u68FA\u5173\u5B98\u51A0\u89C2\u7BA1\u9986\u7F50\u60EF\u704C\u8D2F\u5149\u5E7F\u901B\u7470\u89C4\u572D\u7845\u5F52\u9F9F\u95FA\u8F68\u9B3C\u8BE1\u7678\u6842\u67DC\u8DEA\u8D35\u523D\u8F8A\u6EDA\u68CD\u9505\u90ED\u56FD\u679C\u88F9\u8FC7\u54C8\"],\n[\"ba40\",\"\u7BC5\u7BC8\u7BC9\u7BCA\u7BCB\u7BCD\u7BCE\u7BCF\u7BD0\u7BD2\u7BD4\",4,\"\u7BDB\u7BDC\u7BDE\u7BDF\u7BE0\u7BE2\u7BE3\u7BE4\u7BE7\u7BE8\u7BE9\u7BEB\u7BEC\u7BED\u7BEF\u7BF0\u7BF2\",4,\"\u7BF8\u7BF9\u7BFA\u7BFB\u7BFD\u7BFF\",7,\"\u7C08\u7C09\u7C0A\u7C0D\u7C0E\u7C10\",5,\"\u7C17\u7C18\u7C19\"],\n[\"ba80\",\"\u7C1A\",4,\"\u7C20\",5,\"\u7C28\u7C29\u7C2B\",12,\"\u7C39\",5,\"\u7C42\u9AB8\u5B69\u6D77\u6C26\u4EA5\u5BB3\u9A87\u9163\u61A8\u90AF\u97E9\u542B\u6DB5\u5BD2\u51FD\u558A\u7F55\u7FF0\u64BC\u634D\u65F1\u61BE\u608D\u710A\u6C57\u6C49\u592F\u676D\u822A\u58D5\u568E\u8C6A\u6BEB\u90DD\u597D\u8017\u53F7\u6D69\u5475\u559D\u8377\u83CF\u6838\u79BE\u548C\u4F55\u5408\u76D2\u8C89\u9602\u6CB3\u6DB8\u8D6B\u8910\u9E64\u8D3A\u563F\u9ED1\u75D5\u5F88\u72E0\u6068\u54FC\u4EA8\u6A2A\u8861\u6052\u8F70\u54C4\u70D8\u8679\u9E3F\u6D2A\u5B8F\u5F18\u7EA2\u5589\u4FAF\u7334\u543C\u539A\u5019\u540E\u547C\u4E4E\u5FFD\u745A\u58F6\u846B\u80E1\u8774\u72D0\u7CCA\u6E56\"],\n[\"bb40\",\"\u7C43\",9,\"\u7C4E\",36,\"\u7C75\",5,\"\u7C7E\",9],\n[\"bb80\",\"\u7C88\u7C8A\",6,\"\u7C93\u7C94\u7C96\u7C99\u7C9A\u7C9B\u7CA0\u7CA1\u7CA3\u7CA6\u7CA7\u7CA8\u7CA9\u7CAB\u7CAC\u7CAD\u7CAF\u7CB0\u7CB4\",4,\"\u7CBA\u7CBB\u5F27\u864E\u552C\u62A4\u4E92\u6CAA\u6237\u82B1\u54D7\u534E\u733E\u6ED1\u753B\u5212\u5316\u8BDD\u69D0\u5F8A\u6000\u6DEE\u574F\u6B22\u73AF\u6853\u8FD8\u7F13\u6362\u60A3\u5524\u75EA\u8C62\u7115\u6DA3\u5BA6\u5E7B\u8352\u614C\u9EC4\u78FA\u8757\u7C27\u7687\u51F0\u60F6\u714C\u6643\u5E4C\u604D\u8C0E\u7070\u6325\u8F89\u5FBD\u6062\u86D4\u56DE\u6BC1\u6094\u6167\u5349\u60E0\u6666\u8D3F\u79FD\u4F1A\u70E9\u6C47\u8BB3\u8BF2\u7ED8\u8364\u660F\u5A5A\u9B42\u6D51\u6DF7\u8C41\u6D3B\u4F19\u706B\u83B7\u6216\u60D1\u970D\u8D27\u7978\u51FB\u573E\u57FA\u673A\u7578\u7A3D\u79EF\u7B95\"],\n[\"bc40\",\"\u7CBF\u7CC0\u7CC2\u7CC3\u7CC4\u7CC6\u7CC9\u7CCB\u7CCE\",6,\"\u7CD8\u7CDA\u7CDB\u7CDD\u7CDE\u7CE1\",6,\"\u7CE9\",5,\"\u7CF0\",7,\"\u7CF9\u7CFA\u7CFC\",13,\"\u7D0B\",5],\n[\"bc80\",\"\u7D11\",14,\"\u7D21\u7D23\u7D24\u7D25\u7D26\u7D28\u7D29\u7D2A\u7D2C\u7D2D\u7D2E\u7D30\",6,\"\u808C\u9965\u8FF9\u6FC0\u8BA5\u9E21\u59EC\u7EE9\u7F09\u5409\u6781\u68D8\u8F91\u7C4D\u96C6\u53CA\u6025\u75BE\u6C72\u5373\u5AC9\u7EA7\u6324\u51E0\u810A\u5DF1\u84DF\u6280\u5180\u5B63\u4F0E\u796D\u5242\u60B8\u6D4E\u5BC4\u5BC2\u8BA1\u8BB0\u65E2\u5FCC\u9645\u5993\u7EE7\u7EAA\u5609\u67B7\u5939\u4F73\u5BB6\u52A0\u835A\u988A\u8D3E\u7532\u94BE\u5047\u7A3C\u4EF7\u67B6\u9A7E\u5AC1\u6B7C\u76D1\u575A\u5C16\u7B3A\u95F4\u714E\u517C\u80A9\u8270\u5978\u7F04\u8327\u68C0\u67EC\u78B1\u7877\u62E3\u6361\u7B80\u4FED\u526A\u51CF\u8350\u69DB\u9274\u8DF5\u8D31\u89C1\u952E\u7BAD\u4EF6\"],\n[\"bd40\",\"\u7D37\",54,\"\u7D6F\",7],\n[\"bd80\",\"\u7D78\",32,\"\u5065\u8230\u5251\u996F\u6E10\u6E85\u6DA7\u5EFA\u50F5\u59DC\u5C06\u6D46\u6C5F\u7586\u848B\u6868\u5956\u8BB2\u5320\u9171\u964D\u8549\u6912\u7901\u7126\u80F6\u4EA4\u90CA\u6D47\u9A84\u5A07\u56BC\u6405\u94F0\u77EB\u4FA5\u811A\u72E1\u89D2\u997A\u7F34\u7EDE\u527F\u6559\u9175\u8F7F\u8F83\u53EB\u7A96\u63ED\u63A5\u7686\u79F8\u8857\u9636\u622A\u52AB\u8282\u6854\u6770\u6377\u776B\u7AED\u6D01\u7ED3\u89E3\u59D0\u6212\u85C9\u82A5\u754C\u501F\u4ECB\u75A5\u8BEB\u5C4A\u5DFE\u7B4B\u65A4\u91D1\u4ECA\u6D25\u895F\u7D27\u9526\u4EC5\u8C28\u8FDB\u9773\u664B\u7981\u8FD1\u70EC\u6D78\"],\n[\"be40\",\"\u7D99\",12,\"\u7DA7\",6,\"\u7DAF\",42],\n[\"be80\",\"\u7DDA\",32,\"\u5C3D\u52B2\u8346\u5162\u830E\u775B\u6676\u9CB8\u4EAC\u60CA\u7CBE\u7CB3\u7ECF\u4E95\u8B66\u666F\u9888\u9759\u5883\u656C\u955C\u5F84\u75C9\u9756\u7ADF\u7ADE\u51C0\u70AF\u7A98\u63EA\u7A76\u7EA0\u7396\u97ED\u4E45\u7078\u4E5D\u9152\u53A9\u6551\u65E7\u81FC\u8205\u548E\u5C31\u759A\u97A0\u62D8\u72D9\u75BD\u5C45\u9A79\u83CA\u5C40\u5480\u77E9\u4E3E\u6CAE\u805A\u62D2\u636E\u5DE8\u5177\u8DDD\u8E1E\u952F\u4FF1\u53E5\u60E7\u70AC\u5267\u6350\u9E43\u5A1F\u5026\u7737\u5377\u7EE2\u6485\u652B\u6289\u6398\u5014\u7235\u89C9\u51B3\u8BC0\u7EDD\u5747\u83CC\u94A7\u519B\u541B\u5CFB\"],\n[\"bf40\",\"\u7DFB\",62],\n[\"bf80\",\"\u7E3A\u7E3C\",4,\"\u7E42\",4,\"\u7E48\",21,\"\u4FCA\u7AE3\u6D5A\u90E1\u9A8F\u5580\u5496\u5361\u54AF\u5F00\u63E9\u6977\u51EF\u6168\u520A\u582A\u52D8\u574E\u780D\u770B\u5EB7\u6177\u7CE0\u625B\u6297\u4EA2\u7095\u8003\u62F7\u70E4\u9760\u5777\u82DB\u67EF\u68F5\u78D5\u9897\u79D1\u58F3\u54B3\u53EF\u6E34\u514B\u523B\u5BA2\u8BFE\u80AF\u5543\u57A6\u6073\u5751\u542D\u7A7A\u6050\u5B54\u63A7\u62A0\u53E3\u6263\u5BC7\u67AF\u54ED\u7A9F\u82E6\u9177\u5E93\u88E4\u5938\u57AE\u630E\u8DE8\u80EF\u5757\u7B77\u4FA9\u5FEB\u5BBD\u6B3E\u5321\u7B50\u72C2\u6846\u77FF\u7736\u65F7\u51B5\u4E8F\u76D4\u5CBF\u7AA5\u8475\u594E\u9B41\u5080\"],\n[\"c040\",\"\u7E5E\",35,\"\u7E83\",23,\"\u7E9C\u7E9D\u7E9E\"],\n[\"c080\",\"\u7EAE\u7EB4\u7EBB\u7EBC\u7ED6\u7EE4\u7EEC\u7EF9\u7F0A\u7F10\u7F1E\u7F37\u7F39\u7F3B\",6,\"\u7F43\u7F46\",9,\"\u7F52\u7F53\u9988\u6127\u6E83\u5764\u6606\u6346\u56F0\u62EC\u6269\u5ED3\u9614\u5783\u62C9\u5587\u8721\u814A\u8FA3\u5566\u83B1\u6765\u8D56\u84DD\u5A6A\u680F\u62E6\u7BEE\u9611\u5170\u6F9C\u8C30\u63FD\u89C8\u61D2\u7F06\u70C2\u6EE5\u7405\u6994\u72FC\u5ECA\u90CE\u6717\u6D6A\u635E\u52B3\u7262\u8001\u4F6C\u59E5\u916A\u70D9\u6D9D\u52D2\u4E50\u96F7\u956D\u857E\u78CA\u7D2F\u5121\u5792\u64C2\u808B\u7C7B\u6CEA\u68F1\u695E\u51B7\u5398\u68A8\u7281\u9ECE\u7BF1\u72F8\u79BB\u6F13\u7406\u674E\u91CC\u9CA4\u793C\u8389\u8354\u540F\u6817\u4E3D\u5389\u52B1\u783E\u5386\u5229\u5088\u4F8B\u4FD0\"],\n[\"c140\",\"\u7F56\u7F59\u7F5B\u7F5C\u7F5D\u7F5E\u7F60\u7F63\",4,\"\u7F6B\u7F6C\u7F6D\u7F6F\u7F70\u7F73\u7F75\u7F76\u7F77\u7F78\u7F7A\u7F7B\u7F7C\u7F7D\u7F7F\u7F80\u7F82\",7,\"\u7F8B\u7F8D\u7F8F\",4,\"\u7F95\",4,\"\u7F9B\u7F9C\u7FA0\u7FA2\u7FA3\u7FA5\u7FA6\u7FA8\",6,\"\u7FB1\"],\n[\"c180\",\"\u7FB3\",4,\"\u7FBA\u7FBB\u7FBE\u7FC0\u7FC2\u7FC3\u7FC4\u7FC6\u7FC7\u7FC8\u7FC9\u7FCB\u7FCD\u7FCF\",4,\"\u7FD6\u7FD7\u7FD9\",5,\"\u7FE2\u7FE3\u75E2\u7ACB\u7C92\u6CA5\u96B6\u529B\u7483\u54E9\u4FE9\u8054\u83B2\u8FDE\u9570\u5EC9\u601C\u6D9F\u5E18\u655B\u8138\u94FE\u604B\u70BC\u7EC3\u7CAE\u51C9\u6881\u7CB1\u826F\u4E24\u8F86\u91CF\u667E\u4EAE\u8C05\u64A9\u804A\u50DA\u7597\u71CE\u5BE5\u8FBD\u6F66\u4E86\u6482\u9563\u5ED6\u6599\u5217\u88C2\u70C8\u52A3\u730E\u7433\u6797\u78F7\u9716\u4E34\u90BB\u9CDE\u6DCB\u51DB\u8D41\u541D\u62CE\u73B2\u83F1\u96F6\u9F84\u94C3\u4F36\u7F9A\u51CC\u7075\u9675\u5CAD\u9886\u53E6\u4EE4\u6E9C\u7409\u69B4\u786B\u998F\u7559\u5218\u7624\u6D41\u67F3\u516D\u9F99\u804B\u5499\u7B3C\u7ABF\"],\n[\"c240\",\"\u7FE4\u7FE7\u7FE8\u7FEA\u7FEB\u7FEC\u7FED\u7FEF\u7FF2\u7FF4\",6,\"\u7FFD\u7FFE\u7FFF\u8002\u8007\u8008\u8009\u800A\u800E\u800F\u8011\u8013\u801A\u801B\u801D\u801E\u801F\u8021\u8023\u8024\u802B\",5,\"\u8032\u8034\u8039\u803A\u803C\u803E\u8040\u8041\u8044\u8045\u8047\u8048\u8049\u804E\u804F\u8050\u8051\u8053\u8055\u8056\u8057\"],\n[\"c280\",\"\u8059\u805B\",13,\"\u806B\",5,\"\u8072\",11,\"\u9686\u5784\u62E2\u9647\u697C\u5A04\u6402\u7BD3\u6F0F\u964B\u82A6\u5362\u9885\u5E90\u7089\u63B3\u5364\u864F\u9C81\u9E93\u788C\u9732\u8DEF\u8D42\u9E7F\u6F5E\u7984\u5F55\u9646\u622E\u9A74\u5415\u94DD\u4FA3\u65C5\u5C65\u5C61\u7F15\u8651\u6C2F\u5F8B\u7387\u6EE4\u7EFF\u5CE6\u631B\u5B6A\u6EE6\u5375\u4E71\u63A0\u7565\u62A1\u8F6E\u4F26\u4ED1\u6CA6\u7EB6\u8BBA\u841D\u87BA\u7F57\u903B\u9523\u7BA9\u9AA1\u88F8\u843D\u6D1B\u9A86\u7EDC\u5988\u9EBB\u739B\u7801\u8682\u9A6C\u9A82\u561B\u5417\u57CB\u4E70\u9EA6\u5356\u8FC8\u8109\u7792\u9992\u86EE\u6EE1\u8513\u66FC\u6162\u6F2B\"],\n[\"c340\",\"\u807E\u8081\u8082\u8085\u8088\u808A\u808D\",5,\"\u8094\u8095\u8097\u8099\u809E\u80A3\u80A6\u80A7\u80A8\u80AC\u80B0\u80B3\u80B5\u80B6\u80B8\u80B9\u80BB\u80C5\u80C7\",4,\"\u80CF\",6,\"\u80D8\u80DF\u80E0\u80E2\u80E3\u80E6\u80EE\u80F5\u80F7\u80F9\u80FB\u80FE\u80FF\u8100\u8101\u8103\u8104\u8105\u8107\u8108\u810B\"],\n[\"c380\",\"\u810C\u8115\u8117\u8119\u811B\u811C\u811D\u811F\",12,\"\u812D\u812E\u8130\u8133\u8134\u8135\u8137\u8139\",4,\"\u813F\u8C29\u8292\u832B\u76F2\u6C13\u5FD9\u83BD\u732B\u8305\u951A\u6BDB\u77DB\u94C6\u536F\u8302\u5192\u5E3D\u8C8C\u8D38\u4E48\u73AB\u679A\u6885\u9176\u9709\u7164\u6CA1\u7709\u5A92\u9541\u6BCF\u7F8E\u6627\u5BD0\u59B9\u5A9A\u95E8\u95F7\u4EEC\u840C\u8499\u6AAC\u76DF\u9530\u731B\u68A6\u5B5F\u772F\u919A\u9761\u7CDC\u8FF7\u8C1C\u5F25\u7C73\u79D8\u89C5\u6CCC\u871C\u5BC6\u5E42\u68C9\u7720\u7EF5\u5195\u514D\u52C9\u5A29\u7F05\u9762\u82D7\u63CF\u7784\u85D0\u79D2\u6E3A\u5E99\u5999\u8511\u706D\u6C11\u62BF\u76BF\u654F\u60AF\u95FD\u660E\u879F\u9E23\u94ED\u540D\u547D\u8C2C\u6478\"],\n[\"c440\",\"\u8140\",5,\"\u8147\u8149\u814D\u814E\u814F\u8152\u8156\u8157\u8158\u815B\",4,\"\u8161\u8162\u8163\u8164\u8166\u8168\u816A\u816B\u816C\u816F\u8172\u8173\u8175\u8176\u8177\u8178\u8181\u8183\",4,\"\u8189\u818B\u818C\u818D\u818E\u8190\u8192\",5,\"\u8199\u819A\u819E\",4,\"\u81A4\u81A5\"],\n[\"c480\",\"\u81A7\u81A9\u81AB\",7,\"\u81B4\",5,\"\u81BC\u81BD\u81BE\u81BF\u81C4\u81C5\u81C7\u81C8\u81C9\u81CB\u81CD\",6,\"\u6479\u8611\u6A21\u819C\u78E8\u6469\u9B54\u62B9\u672B\u83AB\u58A8\u9ED8\u6CAB\u6F20\u5BDE\u964C\u8C0B\u725F\u67D0\u62C7\u7261\u4EA9\u59C6\u6BCD\u5893\u66AE\u5E55\u52DF\u6155\u6728\u76EE\u7766\u7267\u7A46\u62FF\u54EA\u5450\u94A0\u90A3\u5A1C\u7EB3\u6C16\u4E43\u5976\u8010\u5948\u5357\u7537\u96BE\u56CA\u6320\u8111\u607C\u95F9\u6DD6\u5462\u9981\u5185\u5AE9\u80FD\u59AE\u9713\u502A\u6CE5\u5C3C\u62DF\u4F60\u533F\u817B\u9006\u6EBA\u852B\u62C8\u5E74\u78BE\u64B5\u637B\u5FF5\u5A18\u917F\u9E1F\u5C3F\u634F\u8042\u5B7D\u556E\u954A\u954D\u6D85\u60A8\u67E0\u72DE\u51DD\u5B81\"],\n[\"c540\",\"\u81D4\",14,\"\u81E4\u81E5\u81E6\u81E8\u81E9\u81EB\u81EE\",4,\"\u81F5\",5,\"\u81FD\u81FF\u8203\u8207\",4,\"\u820E\u820F\u8211\u8213\u8215\",5,\"\u821D\u8220\u8224\u8225\u8226\u8227\u8229\u822E\u8232\u823A\u823C\u823D\u823F\"],\n[\"c580\",\"\u8240\u8241\u8242\u8243\u8245\u8246\u8248\u824A\u824C\u824D\u824E\u8250\",7,\"\u8259\u825B\u825C\u825D\u825E\u8260\",7,\"\u8269\u62E7\u6CDE\u725B\u626D\u94AE\u7EBD\u8113\u6D53\u519C\u5F04\u5974\u52AA\u6012\u5973\u6696\u8650\u759F\u632A\u61E6\u7CEF\u8BFA\u54E6\u6B27\u9E25\u6BB4\u85D5\u5455\u5076\u6CA4\u556A\u8DB4\u722C\u5E15\u6015\u7436\u62CD\u6392\u724C\u5F98\u6E43\u6D3E\u6500\u6F58\u76D8\u78D0\u76FC\u7554\u5224\u53DB\u4E53\u5E9E\u65C1\u802A\u80D6\u629B\u5486\u5228\u70AE\u888D\u8DD1\u6CE1\u5478\u80DA\u57F9\u88F4\u8D54\u966A\u914D\u4F69\u6C9B\u55B7\u76C6\u7830\u62A8\u70F9\u6F8E\u5F6D\u84EC\u68DA\u787C\u7BF7\u81A8\u670B\u9E4F\u6367\u78B0\u576F\u7812\u9739\u6279\u62AB\u5288\u7435\u6BD7\"],\n[\"c640\",\"\u826A\u826B\u826C\u826D\u8271\u8275\u8276\u8277\u8278\u827B\u827C\u8280\u8281\u8283\u8285\u8286\u8287\u8289\u828C\u8290\u8293\u8294\u8295\u8296\u829A\u829B\u829E\u82A0\u82A2\u82A3\u82A7\u82B2\u82B5\u82B6\u82BA\u82BB\u82BC\u82BF\u82C0\u82C2\u82C3\u82C5\u82C6\u82C9\u82D0\u82D6\u82D9\u82DA\u82DD\u82E2\u82E7\u82E8\u82E9\u82EA\u82EC\u82ED\u82EE\u82F0\u82F2\u82F3\u82F5\u82F6\u82F8\"],\n[\"c680\",\"\u82FA\u82FC\",4,\"\u830A\u830B\u830D\u8310\u8312\u8313\u8316\u8318\u8319\u831D\",9,\"\u8329\u832A\u832E\u8330\u8332\u8337\u833B\u833D\u5564\u813E\u75B2\u76AE\u5339\u75DE\u50FB\u5C41\u8B6C\u7BC7\u504F\u7247\u9A97\u98D8\u6F02\u74E2\u7968\u6487\u77A5\u62FC\u9891\u8D2B\u54C1\u8058\u4E52\u576A\u82F9\u840D\u5E73\u51ED\u74F6\u8BC4\u5C4F\u5761\u6CFC\u9887\u5A46\u7834\u9B44\u8FEB\u7C95\u5256\u6251\u94FA\u4EC6\u8386\u8461\u83E9\u84B2\u57D4\u6734\u5703\u666E\u6D66\u8C31\u66DD\u7011\u671F\u6B3A\u6816\u621A\u59BB\u4E03\u51C4\u6F06\u67D2\u6C8F\u5176\u68CB\u5947\u6B67\u7566\u5D0E\u8110\u9F50\u65D7\u7948\u7941\u9A91\u8D77\u5C82\u4E5E\u4F01\u542F\u5951\u780C\u5668\u6C14\u8FC4\u5F03\u6C7D\u6CE3\u8BAB\u6390\"],\n[\"c740\",\"\u833E\u833F\u8341\u8342\u8344\u8345\u8348\u834A\",4,\"\u8353\u8355\",4,\"\u835D\u8362\u8370\",6,\"\u8379\u837A\u837E\",6,\"\u8387\u8388\u838A\u838B\u838C\u838D\u838F\u8390\u8391\u8394\u8395\u8396\u8397\u8399\u839A\u839D\u839F\u83A1\",6,\"\u83AC\u83AD\u83AE\"],\n[\"c780\",\"\u83AF\u83B5\u83BB\u83BE\u83BF\u83C2\u83C3\u83C4\u83C6\u83C8\u83C9\u83CB\u83CD\u83CE\u83D0\u83D1\u83D2\u83D3\u83D5\u83D7\u83D9\u83DA\u83DB\u83DE\u83E2\u83E3\u83E4\u83E6\u83E7\u83E8\u83EB\u83EC\u83ED\u6070\u6D3D\u7275\u6266\u948E\u94C5\u5343\u8FC1\u7B7E\u4EDF\u8C26\u4E7E\u9ED4\u94B1\u94B3\u524D\u6F5C\u9063\u6D45\u8C34\u5811\u5D4C\u6B20\u6B49\u67AA\u545B\u8154\u7F8C\u5899\u8537\u5F3A\u62A2\u6A47\u9539\u6572\u6084\u6865\u77A7\u4E54\u4FA8\u5DE7\u9798\u64AC\u7FD8\u5CED\u4FCF\u7A8D\u5207\u8304\u4E14\u602F\u7A83\u94A6\u4FB5\u4EB2\u79E6\u7434\u52E4\u82B9\u64D2\u79BD\u5BDD\u6C81\u9752\u8F7B\u6C22\u503E\u537F\u6E05\u64CE\u6674\u6C30\u60C5\u9877\u8BF7\u5E86\u743C\u7A77\u79CB\u4E18\u90B1\u7403\u6C42\u56DA\u914B\u6CC5\u8D8B\u533A\u86C6\u66F2\u8EAF\u5C48\u9A71\u6E20\"],\n[\"c840\",\"\u83EE\u83EF\u83F3\",4,\"\u83FA\u83FB\u83FC\u83FE\u83FF\u8400\u8402\u8405\u8407\u8408\u8409\u840A\u8410\u8412\",5,\"\u8419\u841A\u841B\u841E\",5,\"\u8429\",7,\"\u8432\",5,\"\u8439\u843A\u843B\u843E\",7,\"\u8447\u8448\u8449\"],\n[\"c880\",\"\u844A\",6,\"\u8452\",4,\"\u8458\u845D\u845E\u845F\u8460\u8462\u8464\",4,\"\u846A\u846E\u846F\u8470\u8472\u8474\u8477\u8479\u847B\u847C\u53D6\u5A36\u9F8B\u8DA3\u53BB\u5708\u98A7\u6743\u919B\u6CC9\u5168\u75CA\u62F3\u72AC\u5238\u529D\u7F3A\u7094\u7638\u5374\u9E4A\u69B7\u786E\u96C0\u88D9\u7FA4\u7136\u71C3\u5189\u67D3\u74E4\u58E4\u6518\u56B7\u8BA9\u9976\u6270\u7ED5\u60F9\u70ED\u58EC\u4EC1\u4EBA\u5FCD\u97E7\u4EFB\u8BA4\u5203\u598A\u7EAB\u6254\u4ECD\u65E5\u620E\u8338\u84C9\u8363\u878D\u7194\u6EB6\u5BB9\u7ED2\u5197\u63C9\u67D4\u8089\u8339\u8815\u5112\u5B7A\u5982\u8FB1\u4E73\u6C5D\u5165\u8925\u8F6F\u962E\u854A\u745E\u9510\u95F0\u6DA6\u82E5\u5F31\u6492\u6D12\u8428\u816E\u9CC3\u585E\u8D5B\u4E09\u53C1\"],\n[\"c940\",\"\u847D\",4,\"\u8483\u8484\u8485\u8486\u848A\u848D\u848F\",7,\"\u8498\u849A\u849B\u849D\u849E\u849F\u84A0\u84A2\",12,\"\u84B0\u84B1\u84B3\u84B5\u84B6\u84B7\u84BB\u84BC\u84BE\u84C0\u84C2\u84C3\u84C5\u84C6\u84C7\u84C8\u84CB\u84CC\u84CE\u84CF\u84D2\u84D4\u84D5\u84D7\"],\n[\"c980\",\"\u84D8\",4,\"\u84DE\u84E1\u84E2\u84E4\u84E7\",4,\"\u84ED\u84EE\u84EF\u84F1\",10,\"\u84FD\u84FE\u8500\u8501\u8502\u4F1E\u6563\u6851\u55D3\u4E27\u6414\u9A9A\u626B\u5AC2\u745F\u8272\u6DA9\u68EE\u50E7\u838E\u7802\u6740\u5239\u6C99\u7EB1\u50BB\u5565\u715E\u7B5B\u6652\u73CA\u82EB\u6749\u5C71\u5220\u717D\u886B\u95EA\u9655\u64C5\u8D61\u81B3\u5584\u6C55\u6247\u7F2E\u5892\u4F24\u5546\u8D4F\u664C\u4E0A\u5C1A\u88F3\u68A2\u634E\u7A0D\u70E7\u828D\u52FA\u97F6\u5C11\u54E8\u90B5\u7ECD\u5962\u8D4A\u86C7\u820C\u820D\u8D66\u6444\u5C04\u6151\u6D89\u793E\u8BBE\u7837\u7533\u547B\u4F38\u8EAB\u6DF1\u5A20\u7EC5\u795E\u6C88\u5BA1\u5A76\u751A\u80BE\u614E\u6E17\u58F0\u751F\u7525\u7272\u5347\u7EF3\"],\n[\"ca40\",\"\u8503\",8,\"\u850D\u850E\u850F\u8510\u8512\u8514\u8515\u8516\u8518\u8519\u851B\u851C\u851D\u851E\u8520\u8522\",8,\"\u852D\",9,\"\u853E\",4,\"\u8544\u8545\u8546\u8547\u854B\",10],\n[\"ca80\",\"\u8557\u8558\u855A\u855B\u855C\u855D\u855F\",4,\"\u8565\u8566\u8567\u8569\",8,\"\u8573\u8575\u8576\u8577\u8578\u857C\u857D\u857F\u8580\u8581\u7701\u76DB\u5269\u80DC\u5723\u5E08\u5931\u72EE\u65BD\u6E7F\u8BD7\u5C38\u8671\u5341\u77F3\u62FE\u65F6\u4EC0\u98DF\u8680\u5B9E\u8BC6\u53F2\u77E2\u4F7F\u5C4E\u9A76\u59CB\u5F0F\u793A\u58EB\u4E16\u67FF\u4E8B\u62ED\u8A93\u901D\u52BF\u662F\u55DC\u566C\u9002\u4ED5\u4F8D\u91CA\u9970\u6C0F\u5E02\u6043\u5BA4\u89C6\u8BD5\u6536\u624B\u9996\u5B88\u5BFF\u6388\u552E\u53D7\u7626\u517D\u852C\u67A2\u68B3\u6B8A\u6292\u8F93\u53D4\u8212\u6DD1\u758F\u4E66\u8D4E\u5B70\u719F\u85AF\u6691\u66D9\u7F72\u8700\u9ECD\u9F20\u5C5E\u672F\u8FF0\u6811\u675F\u620D\u7AD6\u5885\u5EB6\u6570\u6F31\"],\n[\"cb40\",\"\u8582\u8583\u8586\u8588\",6,\"\u8590\",10,\"\u859D\",6,\"\u85A5\u85A6\u85A7\u85A9\u85AB\u85AC\u85AD\u85B1\",5,\"\u85B8\u85BA\",6,\"\u85C2\",6,\"\u85CA\",4,\"\u85D1\u85D2\"],\n[\"cb80\",\"\u85D4\u85D6\",5,\"\u85DD\",6,\"\u85E5\u85E6\u85E7\u85E8\u85EA\",14,\"\u6055\u5237\u800D\u6454\u8870\u7529\u5E05\u6813\u62F4\u971C\u53CC\u723D\u8C01\u6C34\u7761\u7A0E\u542E\u77AC\u987A\u821C\u8BF4\u7855\u6714\u70C1\u65AF\u6495\u5636\u601D\u79C1\u53F8\u4E1D\u6B7B\u8086\u5BFA\u55E3\u56DB\u4F3A\u4F3C\u9972\u5DF3\u677E\u8038\u6002\u9882\u9001\u5B8B\u8BBC\u8BF5\u641C\u8258\u64DE\u55FD\u82CF\u9165\u4FD7\u7D20\u901F\u7C9F\u50F3\u5851\u6EAF\u5BBF\u8BC9\u8083\u9178\u849C\u7B97\u867D\u968B\u968F\u7EE5\u9AD3\u788E\u5C81\u7A57\u9042\u96A7\u795F\u5B59\u635F\u7B0B\u84D1\u68AD\u5506\u7F29\u7410\u7D22\u9501\u6240\u584C\u4ED6\u5B83\u5979\u5854\"],\n[\"cc40\",\"\u85F9\u85FA\u85FC\u85FD\u85FE\u8600\",4,\"\u8606\",10,\"\u8612\u8613\u8614\u8615\u8617\",15,\"\u8628\u862A\",13,\"\u8639\u863A\u863B\u863D\u863E\u863F\u8640\"],\n[\"cc80\",\"\u8641\",11,\"\u8652\u8653\u8655\",4,\"\u865B\u865C\u865D\u865F\u8660\u8661\u8663\",7,\"\u736D\u631E\u8E4B\u8E0F\u80CE\u82D4\u62AC\u53F0\u6CF0\u915E\u592A\u6001\u6C70\u574D\u644A\u8D2A\u762B\u6EE9\u575B\u6A80\u75F0\u6F6D\u8C2D\u8C08\u5766\u6BEF\u8892\u78B3\u63A2\u53F9\u70AD\u6C64\u5858\u642A\u5802\u68E0\u819B\u5510\u7CD6\u5018\u8EBA\u6DCC\u8D9F\u70EB\u638F\u6D9B\u6ED4\u7EE6\u8404\u6843\u9003\u6DD8\u9676\u8BA8\u5957\u7279\u85E4\u817E\u75BC\u8A8A\u68AF\u5254\u8E22\u9511\u63D0\u9898\u8E44\u557C\u4F53\u66FF\u568F\u60D5\u6D95\u5243\u5C49\u5929\u6DFB\u586B\u7530\u751C\u606C\u8214\u8146\u6311\u6761\u8FE2\u773A\u8DF3\u8D34\u94C1\u5E16\u5385\u542C\u70C3\"],\n[\"cd40\",\"\u866D\u866F\u8670\u8672\",6,\"\u8683\",6,\"\u868E\",4,\"\u8694\u8696\",5,\"\u869E\",4,\"\u86A5\u86A6\u86AB\u86AD\u86AE\u86B2\u86B3\u86B7\u86B8\u86B9\u86BB\",4,\"\u86C1\u86C2\u86C3\u86C5\u86C8\u86CC\u86CD\u86D2\u86D3\u86D5\u86D6\u86D7\u86DA\u86DC\"],\n[\"cd80\",\"\u86DD\u86E0\u86E1\u86E2\u86E3\u86E5\u86E6\u86E7\u86E8\u86EA\u86EB\u86EC\u86EF\u86F5\u86F6\u86F7\u86FA\u86FB\u86FC\u86FD\u86FF\u8701\u8704\u8705\u8706\u870B\u870C\u870E\u870F\u8710\u8711\u8714\u8716\u6C40\u5EF7\u505C\u4EAD\u5EAD\u633A\u8247\u901A\u6850\u916E\u77B3\u540C\u94DC\u5F64\u7AE5\u6876\u6345\u7B52\u7EDF\u75DB\u5077\u6295\u5934\u900F\u51F8\u79C3\u7A81\u56FE\u5F92\u9014\u6D82\u5C60\u571F\u5410\u5154\u6E4D\u56E2\u63A8\u9893\u817F\u8715\u892A\u9000\u541E\u5C6F\u81C0\u62D6\u6258\u8131\u9E35\u9640\u9A6E\u9A7C\u692D\u59A5\u62D3\u553E\u6316\u54C7\u86D9\u6D3C\u5A03\u74E6\u889C\u6B6A\u5916\u8C4C\u5F2F\u6E7E\u73A9\u987D\u4E38\u70F7\u5B8C\u7897\u633D\u665A\u7696\u60CB\u5B9B\u5A49\u4E07\u8155\u6C6A\u738B\u4EA1\u6789\u7F51\u5F80\u65FA\u671B\u5FD8\u5984\u5A01\"],\n[\"ce40\",\"\u8719\u871B\u871D\u871F\u8720\u8724\u8726\u8727\u8728\u872A\u872B\u872C\u872D\u872F\u8730\u8732\u8733\u8735\u8736\u8738\u8739\u873A\u873C\u873D\u8740\",6,\"\u874A\u874B\u874D\u874F\u8750\u8751\u8752\u8754\u8755\u8756\u8758\u875A\",5,\"\u8761\u8762\u8766\",7,\"\u876F\u8771\u8772\u8773\u8775\"],\n[\"ce80\",\"\u8777\u8778\u8779\u877A\u877F\u8780\u8781\u8784\u8786\u8787\u8789\u878A\u878C\u878E\",4,\"\u8794\u8795\u8796\u8798\",6,\"\u87A0\",4,\"\u5DCD\u5FAE\u5371\u97E6\u8FDD\u6845\u56F4\u552F\u60DF\u4E3A\u6F4D\u7EF4\u82C7\u840E\u59D4\u4F1F\u4F2A\u5C3E\u7EAC\u672A\u851A\u5473\u754F\u80C3\u5582\u9B4F\u4F4D\u6E2D\u8C13\u5C09\u6170\u536B\u761F\u6E29\u868A\u6587\u95FB\u7EB9\u543B\u7A33\u7D0A\u95EE\u55E1\u7FC1\u74EE\u631D\u8717\u6DA1\u7A9D\u6211\u65A1\u5367\u63E1\u6C83\u5DEB\u545C\u94A8\u4E4C\u6C61\u8BEC\u5C4B\u65E0\u829C\u68A7\u543E\u5434\u6BCB\u6B66\u4E94\u6342\u5348\u821E\u4F0D\u4FAE\u575E\u620A\u96FE\u6664\u7269\u52FF\u52A1\u609F\u8BEF\u6614\u7199\u6790\u897F\u7852\u77FD\u6670\u563B\u5438\u9521\u727A\"],\n[\"cf40\",\"\u87A5\u87A6\u87A7\u87A9\u87AA\u87AE\u87B0\u87B1\u87B2\u87B4\u87B6\u87B7\u87B8\u87B9\u87BB\u87BC\u87BE\u87BF\u87C1\",4,\"\u87C7\u87C8\u87C9\u87CC\",4,\"\u87D4\",6,\"\u87DC\u87DD\u87DE\u87DF\u87E1\u87E2\u87E3\u87E4\u87E6\u87E7\u87E8\u87E9\u87EB\u87EC\u87ED\u87EF\",9],\n[\"cf80\",\"\u87FA\u87FB\u87FC\u87FD\u87FF\u8800\u8801\u8802\u8804\",5,\"\u880B\",7,\"\u8814\u8817\u8818\u8819\u881A\u881C\",4,\"\u8823\u7A00\u606F\u5E0C\u6089\u819D\u5915\u60DC\u7184\u70EF\u6EAA\u6C50\u7280\u6A84\u88AD\u5E2D\u4E60\u5AB3\u559C\u94E3\u6D17\u7CFB\u9699\u620F\u7EC6\u778E\u867E\u5323\u971E\u8F96\u6687\u5CE1\u4FA0\u72ED\u4E0B\u53A6\u590F\u5413\u6380\u9528\u5148\u4ED9\u9C9C\u7EA4\u54B8\u8D24\u8854\u8237\u95F2\u6D8E\u5F26\u5ACC\u663E\u9669\u73B0\u732E\u53BF\u817A\u9985\u7FA1\u5BAA\u9677\u9650\u7EBF\u76F8\u53A2\u9576\u9999\u7BB1\u8944\u6E58\u4E61\u7FD4\u7965\u8BE6\u60F3\u54CD\u4EAB\u9879\u5DF7\u6A61\u50CF\u5411\u8C61\u8427\u785D\u9704\u524A\u54EE\u56A3\u9500\u6D88\u5BB5\u6DC6\u6653\"],\n[\"d040\",\"\u8824\",13,\"\u8833\",5,\"\u883A\u883B\u883D\u883E\u883F\u8841\u8842\u8843\u8846\",5,\"\u884E\",5,\"\u8855\u8856\u8858\u885A\",6,\"\u8866\u8867\u886A\u886D\u886F\u8871\u8873\u8874\u8875\u8876\u8878\u8879\u887A\"],\n[\"d080\",\"\u887B\u887C\u8880\u8883\u8886\u8887\u8889\u888A\u888C\u888E\u888F\u8890\u8891\u8893\u8894\u8895\u8897\",4,\"\u889D\",4,\"\u88A3\u88A5\",5,\"\u5C0F\u5B5D\u6821\u8096\u5578\u7B11\u6548\u6954\u4E9B\u6B47\u874E\u978B\u534F\u631F\u643A\u90AA\u659C\u80C1\u8C10\u5199\u68B0\u5378\u87F9\u61C8\u6CC4\u6CFB\u8C22\u5C51\u85AA\u82AF\u950C\u6B23\u8F9B\u65B0\u5FFB\u5FC3\u4FE1\u8845\u661F\u8165\u7329\u60FA\u5174\u5211\u578B\u5F62\u90A2\u884C\u9192\u5E78\u674F\u6027\u59D3\u5144\u51F6\u80F8\u5308\u6C79\u96C4\u718A\u4F11\u4FEE\u7F9E\u673D\u55C5\u9508\u79C0\u8896\u7EE3\u589F\u620C\u9700\u865A\u5618\u987B\u5F90\u8BB8\u84C4\u9157\u53D9\u65ED\u5E8F\u755C\u6064\u7D6E\u5A7F\u7EEA\u7EED\u8F69\u55A7\u5BA3\u60AC\u65CB\u7384\"],\n[\"d140\",\"\u88AC\u88AE\u88AF\u88B0\u88B2\",4,\"\u88B8\u88B9\u88BA\u88BB\u88BD\u88BE\u88BF\u88C0\u88C3\u88C4\u88C7\u88C8\u88CA\u88CB\u88CC\u88CD\u88CF\u88D0\u88D1\u88D3\u88D6\u88D7\u88DA\",4,\"\u88E0\u88E1\u88E6\u88E7\u88E9\",6,\"\u88F2\u88F5\u88F6\u88F7\u88FA\u88FB\u88FD\u88FF\u8900\u8901\u8903\",5],\n[\"d180\",\"\u8909\u890B\",4,\"\u8911\u8914\",4,\"\u891C\",4,\"\u8922\u8923\u8924\u8926\u8927\u8928\u8929\u892C\u892D\u892E\u892F\u8931\u8932\u8933\u8935\u8937\u9009\u7663\u7729\u7EDA\u9774\u859B\u5B66\u7A74\u96EA\u8840\u52CB\u718F\u5FAA\u65EC\u8BE2\u5BFB\u9A6F\u5DE1\u6B89\u6C5B\u8BAD\u8BAF\u900A\u8FC5\u538B\u62BC\u9E26\u9E2D\u5440\u4E2B\u82BD\u7259\u869C\u5D16\u8859\u6DAF\u96C5\u54D1\u4E9A\u8BB6\u7109\u54BD\u9609\u70DF\u6DF9\u76D0\u4E25\u7814\u8712\u5CA9\u5EF6\u8A00\u989C\u960E\u708E\u6CBF\u5944\u63A9\u773C\u884D\u6F14\u8273\u5830\u71D5\u538C\u781A\u96C1\u5501\u5F66\u7130\u5BB4\u8C1A\u9A8C\u6B83\u592E\u9E2F\u79E7\u6768\u626C\u4F6F\u75A1\u7F8A\u6D0B\u9633\u6C27\u4EF0\u75D2\u517B\u6837\u6F3E\u9080\u8170\u5996\u7476\"],\n[\"d240\",\"\u8938\",8,\"\u8942\u8943\u8945\",24,\"\u8960\",5,\"\u8967\",19,\"\u897C\"],\n[\"d280\",\"\u897D\u897E\u8980\u8982\u8984\u8985\u8987\",26,\"\u6447\u5C27\u9065\u7A91\u8C23\u59DA\u54AC\u8200\u836F\u8981\u8000\u6930\u564E\u8036\u7237\u91CE\u51B6\u4E5F\u9875\u6396\u4E1A\u53F6\u66F3\u814B\u591C\u6DB2\u4E00\u58F9\u533B\u63D6\u94F1\u4F9D\u4F0A\u8863\u9890\u5937\u9057\u79FB\u4EEA\u80F0\u7591\u6C82\u5B9C\u59E8\u5F5D\u6905\u8681\u501A\u5DF2\u4E59\u77E3\u4EE5\u827A\u6291\u6613\u9091\u5C79\u4EBF\u5F79\u81C6\u9038\u8084\u75AB\u4EA6\u88D4\u610F\u6BC5\u5FC6\u4E49\u76CA\u6EA2\u8BE3\u8BAE\u8C0A\u8BD1\u5F02\u7FFC\u7FCC\u7ECE\u8335\u836B\u56E0\u6BB7\u97F3\u9634\u59FB\u541F\u94F6\u6DEB\u5BC5\u996E\u5C39\u5F15\u9690\"],\n[\"d340\",\"\u89A2\",30,\"\u89C3\u89CD\u89D3\u89D4\u89D5\u89D7\u89D8\u89D9\u89DB\u89DD\u89DF\u89E0\u89E1\u89E2\u89E4\u89E7\u89E8\u89E9\u89EA\u89EC\u89ED\u89EE\u89F0\u89F1\u89F2\u89F4\",6],\n[\"d380\",\"\u89FB\",4,\"\u8A01\",5,\"\u8A08\",21,\"\u5370\u82F1\u6A31\u5A74\u9E70\u5E94\u7F28\u83B9\u8424\u8425\u8367\u8747\u8FCE\u8D62\u76C8\u5F71\u9896\u786C\u6620\u54DF\u62E5\u4F63\u81C3\u75C8\u5EB8\u96CD\u8E0A\u86F9\u548F\u6CF3\u6D8C\u6C38\u607F\u52C7\u7528\u5E7D\u4F18\u60A0\u5FE7\u5C24\u7531\u90AE\u94C0\u72B9\u6CB9\u6E38\u9149\u6709\u53CB\u53F3\u4F51\u91C9\u8BF1\u53C8\u5E7C\u8FC2\u6DE4\u4E8E\u76C2\u6986\u865E\u611A\u8206\u4F59\u4FDE\u903E\u9C7C\u6109\u6E1D\u6E14\u9685\u4E88\u5A31\u96E8\u4E0E\u5C7F\u79B9\u5B87\u8BED\u7FBD\u7389\u57DF\u828B\u90C1\u5401\u9047\u55BB\u5CEA\u5FA1\u6108\u6B32\u72F1\u80B2\u8A89\"],\n[\"d440\",\"\u8A1E\",31,\"\u8A3F\",8,\"\u8A49\",21],\n[\"d480\",\"\u8A5F\",25,\"\u8A7A\",6,\"\u6D74\u5BD3\u88D5\u9884\u8C6B\u9A6D\u9E33\u6E0A\u51A4\u5143\u57A3\u8881\u539F\u63F4\u8F95\u56ED\u5458\u5706\u733F\u6E90\u7F18\u8FDC\u82D1\u613F\u6028\u9662\u66F0\u7EA6\u8D8A\u8DC3\u94A5\u5CB3\u7CA4\u6708\u60A6\u9605\u8018\u4E91\u90E7\u5300\u9668\u5141\u8FD0\u8574\u915D\u6655\u97F5\u5B55\u531D\u7838\u6742\u683D\u54C9\u707E\u5BB0\u8F7D\u518D\u5728\u54B1\u6512\u6682\u8D5E\u8D43\u810F\u846C\u906D\u7CDF\u51FF\u85FB\u67A3\u65E9\u6FA1\u86A4\u8E81\u566A\u9020\u7682\u7076\u71E5\u8D23\u62E9\u5219\u6CFD\u8D3C\u600E\u589E\u618E\u66FE\u8D60\u624E\u55B3\u6E23\u672D\u8F67\"],\n[\"d540\",\"\u8A81\",7,\"\u8A8B\",7,\"\u8A94\",46],\n[\"d580\",\"\u8AC3\",32,\"\u94E1\u95F8\u7728\u6805\u69A8\u548B\u4E4D\u70B8\u8BC8\u6458\u658B\u5B85\u7A84\u503A\u5BE8\u77BB\u6BE1\u8A79\u7C98\u6CBE\u76CF\u65A9\u8F97\u5D2D\u5C55\u8638\u6808\u5360\u6218\u7AD9\u6E5B\u7EFD\u6A1F\u7AE0\u5F70\u6F33\u5F20\u638C\u6DA8\u6756\u4E08\u5E10\u8D26\u4ED7\u80C0\u7634\u969C\u62DB\u662D\u627E\u6CBC\u8D75\u7167\u7F69\u5146\u8087\u53EC\u906E\u6298\u54F2\u86F0\u8F99\u8005\u9517\u8517\u8FD9\u6D59\u73CD\u659F\u771F\u7504\u7827\u81FB\u8D1E\u9488\u4FA6\u6795\u75B9\u8BCA\u9707\u632F\u9547\u9635\u84B8\u6323\u7741\u5F81\u72F0\u4E89\u6014\u6574\u62EF\u6B63\u653F\"],\n[\"d640\",\"\u8AE4\",34,\"\u8B08\",27],\n[\"d680\",\"\u8B24\u8B25\u8B27\",30,\"\u5E27\u75C7\u90D1\u8BC1\u829D\u679D\u652F\u5431\u8718\u77E5\u80A2\u8102\u6C41\u4E4B\u7EC7\u804C\u76F4\u690D\u6B96\u6267\u503C\u4F84\u5740\u6307\u6B62\u8DBE\u53EA\u65E8\u7EB8\u5FD7\u631A\u63B7\u81F3\u81F4\u7F6E\u5E1C\u5CD9\u5236\u667A\u79E9\u7A1A\u8D28\u7099\u75D4\u6EDE\u6CBB\u7A92\u4E2D\u76C5\u5FE0\u949F\u8877\u7EC8\u79CD\u80BF\u91CD\u4EF2\u4F17\u821F\u5468\u5DDE\u6D32\u8BCC\u7CA5\u8F74\u8098\u5E1A\u5492\u76B1\u5B99\u663C\u9AA4\u73E0\u682A\u86DB\u6731\u732A\u8BF8\u8BDB\u9010\u7AF9\u70DB\u716E\u62C4\u77A9\u5631\u4E3B\u8457\u67F1\u52A9\u86C0\u8D2E\u94F8\u7B51\"],\n[\"d740\",\"\u8B46\",31,\"\u8B67\",4,\"\u8B6D\",25],\n[\"d780\",\"\u8B87\",24,\"\u8BAC\u8BB1\u8BBB\u8BC7\u8BD0\u8BEA\u8C09\u8C1E\u4F4F\u6CE8\u795D\u9A7B\u6293\u722A\u62FD\u4E13\u7816\u8F6C\u64B0\u8D5A\u7BC6\u6869\u5E84\u88C5\u5986\u649E\u58EE\u72B6\u690E\u9525\u8FFD\u8D58\u5760\u7F00\u8C06\u51C6\u6349\u62D9\u5353\u684C\u7422\u8301\u914C\u5544\u7740\u707C\u6D4A\u5179\u54A8\u8D44\u59FF\u6ECB\u6DC4\u5B5C\u7D2B\u4ED4\u7C7D\u6ED3\u5B50\u81EA\u6E0D\u5B57\u9B03\u68D5\u8E2A\u5B97\u7EFC\u603B\u7EB5\u90B9\u8D70\u594F\u63CD\u79DF\u8DB3\u5352\u65CF\u7956\u8BC5\u963B\u7EC4\u94BB\u7E82\u5634\u9189\u6700\u7F6A\u5C0A\u9075\u6628\u5DE6\u4F50\u67DE\u505A\u4F5C\u5750\u5EA7\"],\n[\"d840\",\"\u8C38\",8,\"\u8C42\u8C43\u8C44\u8C45\u8C48\u8C4A\u8C4B\u8C4D\",7,\"\u8C56\u8C57\u8C58\u8C59\u8C5B\",5,\"\u8C63\",6,\"\u8C6C\",6,\"\u8C74\u8C75\u8C76\u8C77\u8C7B\",6,\"\u8C83\u8C84\u8C86\u8C87\"],\n[\"d880\",\"\u8C88\u8C8B\u8C8D\",6,\"\u8C95\u8C96\u8C97\u8C99\",20,\"\u4E8D\u4E0C\u5140\u4E10\u5EFF\u5345\u4E15\u4E98\u4E1E\u9B32\u5B6C\u5669\u4E28\u79BA\u4E3F\u5315\u4E47\u592D\u723B\u536E\u6C10\u56DF\u80E4\u9997\u6BD3\u777E\u9F17\u4E36\u4E9F\u9F10\u4E5C\u4E69\u4E93\u8288\u5B5B\u556C\u560F\u4EC4\u538D\u539D\u53A3\u53A5\u53AE\u9765\u8D5D\u531A\u53F5\u5326\u532E\u533E\u8D5C\u5366\u5363\u5202\u5208\u520E\u522D\u5233\u523F\u5240\u524C\u525E\u5261\u525C\u84AF\u527D\u5282\u5281\u5290\u5293\u5182\u7F54\u4EBB\u4EC3\u4EC9\u4EC2\u4EE8\u4EE1\u4EEB\u4EDE\u4F1B\u4EF3\u4F22\u4F64\u4EF5\u4F25\u4F27\u4F09\u4F2B\u4F5E\u4F67\u6538\u4F5A\u4F5D\"],\n[\"d940\",\"\u8CAE\",62],\n[\"d980\",\"\u8CED\",32,\"\u4F5F\u4F57\u4F32\u4F3D\u4F76\u4F74\u4F91\u4F89\u4F83\u4F8F\u4F7E\u4F7B\u4FAA\u4F7C\u4FAC\u4F94\u4FE6\u4FE8\u4FEA\u4FC5\u4FDA\u4FE3\u4FDC\u4FD1\u4FDF\u4FF8\u5029\u504C\u4FF3\u502C\u500F\u502E\u502D\u4FFE\u501C\u500C\u5025\u5028\u507E\u5043\u5055\u5048\u504E\u506C\u507B\u50A5\u50A7\u50A9\u50BA\u50D6\u5106\u50ED\u50EC\u50E6\u50EE\u5107\u510B\u4EDD\u6C3D\u4F58\u4F65\u4FCE\u9FA0\u6C46\u7C74\u516E\u5DFD\u9EC9\u9998\u5181\u5914\u52F9\u530D\u8A07\u5310\u51EB\u5919\u5155\u4EA0\u5156\u4EB3\u886E\u88A4\u4EB5\u8114\u88D2\u7980\u5B34\u8803\u7FB8\u51AB\u51B1\u51BD\u51BC\"],\n[\"da40\",\"\u8D0E\",14,\"\u8D20\u8D51\u8D52\u8D57\u8D5F\u8D65\u8D68\u8D69\u8D6A\u8D6C\u8D6E\u8D6F\u8D71\u8D72\u8D78\",8,\"\u8D82\u8D83\u8D86\u8D87\u8D88\u8D89\u8D8C\",4,\"\u8D92\u8D93\u8D95\",9,\"\u8DA0\u8DA1\"],\n[\"da80\",\"\u8DA2\u8DA4\",12,\"\u8DB2\u8DB6\u8DB7\u8DB9\u8DBB\u8DBD\u8DC0\u8DC1\u8DC2\u8DC5\u8DC7\u8DC8\u8DC9\u8DCA\u8DCD\u8DD0\u8DD2\u8DD3\u8DD4\u51C7\u5196\u51A2\u51A5\u8BA0\u8BA6\u8BA7\u8BAA\u8BB4\u8BB5\u8BB7\u8BC2\u8BC3\u8BCB\u8BCF\u8BCE\u8BD2\u8BD3\u8BD4\u8BD6\u8BD8\u8BD9\u8BDC\u8BDF\u8BE0\u8BE4\u8BE8\u8BE9\u8BEE\u8BF0\u8BF3\u8BF6\u8BF9\u8BFC\u8BFF\u8C00\u8C02\u8C04\u8C07\u8C0C\u8C0F\u8C11\u8C12\u8C14\u8C15\u8C16\u8C19\u8C1B\u8C18\u8C1D\u8C1F\u8C20\u8C21\u8C25\u8C27\u8C2A\u8C2B\u8C2E\u8C2F\u8C32\u8C33\u8C35\u8C36\u5369\u537A\u961D\u9622\u9621\u9631\u962A\u963D\u963C\u9642\u9649\u9654\u965F\u9667\u966C\u9672\u9674\u9688\u968D\u9697\u96B0\u9097\u909B\u909D\u9099\u90AC\u90A1\u90B4\u90B3\u90B6\u90BA\"],\n[\"db40\",\"\u8DD5\u8DD8\u8DD9\u8DDC\u8DE0\u8DE1\u8DE2\u8DE5\u8DE6\u8DE7\u8DE9\u8DED\u8DEE\u8DF0\u8DF1\u8DF2\u8DF4\u8DF6\u8DFC\u8DFE\",6,\"\u8E06\u8E07\u8E08\u8E0B\u8E0D\u8E0E\u8E10\u8E11\u8E12\u8E13\u8E15\",7,\"\u8E20\u8E21\u8E24\",4,\"\u8E2B\u8E2D\u8E30\u8E32\u8E33\u8E34\u8E36\u8E37\u8E38\u8E3B\u8E3C\u8E3E\"],\n[\"db80\",\"\u8E3F\u8E43\u8E45\u8E46\u8E4C\",4,\"\u8E53\",5,\"\u8E5A\",11,\"\u8E67\u8E68\u8E6A\u8E6B\u8E6E\u8E71\u90B8\u90B0\u90CF\u90C5\u90BE\u90D0\u90C4\u90C7\u90D3\u90E6\u90E2\u90DC\u90D7\u90DB\u90EB\u90EF\u90FE\u9104\u9122\u911E\u9123\u9131\u912F\u9139\u9143\u9146\u520D\u5942\u52A2\u52AC\u52AD\u52BE\u54FF\u52D0\u52D6\u52F0\u53DF\u71EE\u77CD\u5EF4\u51F5\u51FC\u9B2F\u53B6\u5F01\u755A\u5DEF\u574C\u57A9\u57A1\u587E\u58BC\u58C5\u58D1\u5729\u572C\u572A\u5733\u5739\u572E\u572F\u575C\u573B\u5742\u5769\u5785\u576B\u5786\u577C\u577B\u5768\u576D\u5776\u5773\u57AD\u57A4\u578C\u57B2\u57CF\u57A7\u57B4\u5793\u57A0\u57D5\u57D8\u57DA\u57D9\u57D2\u57B8\u57F4\u57EF\u57F8\u57E4\u57DD\"],\n[\"dc40\",\"\u8E73\u8E75\u8E77\",4,\"\u8E7D\u8E7E\u8E80\u8E82\u8E83\u8E84\u8E86\u8E88\",6,\"\u8E91\u8E92\u8E93\u8E95\",6,\"\u8E9D\u8E9F\",11,\"\u8EAD\u8EAE\u8EB0\u8EB1\u8EB3\",6,\"\u8EBB\",7],\n[\"dc80\",\"\u8EC3\",10,\"\u8ECF\",21,\"\u580B\u580D\u57FD\u57ED\u5800\u581E\u5819\u5844\u5820\u5865\u586C\u5881\u5889\u589A\u5880\u99A8\u9F19\u61FF\u8279\u827D\u827F\u828F\u828A\u82A8\u8284\u828E\u8291\u8297\u8299\u82AB\u82B8\u82BE\u82B0\u82C8\u82CA\u82E3\u8298\u82B7\u82AE\u82CB\u82CC\u82C1\u82A9\u82B4\u82A1\u82AA\u829F\u82C4\u82CE\u82A4\u82E1\u8309\u82F7\u82E4\u830F\u8307\u82DC\u82F4\u82D2\u82D8\u830C\u82FB\u82D3\u8311\u831A\u8306\u8314\u8315\u82E0\u82D5\u831C\u8351\u835B\u835C\u8308\u8392\u833C\u8334\u8331\u839B\u835E\u832F\u834F\u8347\u8343\u835F\u8340\u8317\u8360\u832D\u833A\u8333\u8366\u8365\"],\n[\"dd40\",\"\u8EE5\",62],\n[\"dd80\",\"\u8F24\",32,\"\u8368\u831B\u8369\u836C\u836A\u836D\u836E\u83B0\u8378\u83B3\u83B4\u83A0\u83AA\u8393\u839C\u8385\u837C\u83B6\u83A9\u837D\u83B8\u837B\u8398\u839E\u83A8\u83BA\u83BC\u83C1\u8401\u83E5\u83D8\u5807\u8418\u840B\u83DD\u83FD\u83D6\u841C\u8438\u8411\u8406\u83D4\u83DF\u840F\u8403\u83F8\u83F9\u83EA\u83C5\u83C0\u8426\u83F0\u83E1\u845C\u8451\u845A\u8459\u8473\u8487\u8488\u847A\u8489\u8478\u843C\u8446\u8469\u8476\u848C\u848E\u8431\u846D\u84C1\u84CD\u84D0\u84E6\u84BD\u84D3\u84CA\u84BF\u84BA\u84E0\u84A1\u84B9\u84B4\u8497\u84E5\u84E3\u850C\u750D\u8538\u84F0\u8539\u851F\u853A\"],\n[\"de40\",\"\u8F45\",32,\"\u8F6A\u8F80\u8F8C\u8F92\u8F9D\u8FA0\u8FA1\u8FA2\u8FA4\u8FA5\u8FA6\u8FA7\u8FAA\u8FAC\u8FAD\u8FAE\u8FAF\u8FB2\u8FB3\u8FB4\u8FB5\u8FB7\u8FB8\u8FBA\u8FBB\u8FBC\u8FBF\u8FC0\u8FC3\u8FC6\"],\n[\"de80\",\"\u8FC9\",4,\"\u8FCF\u8FD2\u8FD6\u8FD7\u8FDA\u8FE0\u8FE1\u8FE3\u8FE7\u8FEC\u8FEF\u8FF1\u8FF2\u8FF4\u8FF5\u8FF6\u8FFA\u8FFB\u8FFC\u8FFE\u8FFF\u9007\u9008\u900C\u900E\u9013\u9015\u9018\u8556\u853B\u84FF\u84FC\u8559\u8548\u8568\u8564\u855E\u857A\u77A2\u8543\u8572\u857B\u85A4\u85A8\u8587\u858F\u8579\u85AE\u859C\u8585\u85B9\u85B7\u85B0\u85D3\u85C1\u85DC\u85FF\u8627\u8605\u8629\u8616\u863C\u5EFE\u5F08\u593C\u5941\u8037\u5955\u595A\u5958\u530F\u5C22\u5C25\u5C2C\u5C34\u624C\u626A\u629F\u62BB\u62CA\u62DA\u62D7\u62EE\u6322\u62F6\u6339\u634B\u6343\u63AD\u63F6\u6371\u637A\u638E\u63B4\u636D\u63AC\u638A\u6369\u63AE\u63BC\u63F2\u63F8\u63E0\u63FF\u63C4\u63DE\u63CE\u6452\u63C6\u63BE\u6445\u6441\u640B\u641B\u6420\u640C\u6426\u6421\u645E\u6484\u646D\u6496\"],\n[\"df40\",\"\u9019\u901C\u9023\u9024\u9025\u9027\",5,\"\u9030\",4,\"\u9037\u9039\u903A\u903D\u903F\u9040\u9043\u9045\u9046\u9048\",4,\"\u904E\u9054\u9055\u9056\u9059\u905A\u905C\",5,\"\u9064\u9066\u9067\u9069\u906A\u906B\u906C\u906F\",4,\"\u9076\",6,\"\u907E\u9081\"],\n[\"df80\",\"\u9084\u9085\u9086\u9087\u9089\u908A\u908C\",4,\"\u9092\u9094\u9096\u9098\u909A\u909C\u909E\u909F\u90A0\u90A4\u90A5\u90A7\u90A8\u90A9\u90AB\u90AD\u90B2\u90B7\u90BC\u90BD\u90BF\u90C0\u647A\u64B7\u64B8\u6499\u64BA\u64C0\u64D0\u64D7\u64E4\u64E2\u6509\u6525\u652E\u5F0B\u5FD2\u7519\u5F11\u535F\u53F1\u53FD\u53E9\u53E8\u53FB\u5412\u5416\u5406\u544B\u5452\u5453\u5454\u5456\u5443\u5421\u5457\u5459\u5423\u5432\u5482\u5494\u5477\u5471\u5464\u549A\u549B\u5484\u5476\u5466\u549D\u54D0\u54AD\u54C2\u54B4\u54D2\u54A7\u54A6\u54D3\u54D4\u5472\u54A3\u54D5\u54BB\u54BF\u54CC\u54D9\u54DA\u54DC\u54A9\u54AA\u54A4\u54DD\u54CF\u54DE\u551B\u54E7\u5520\u54FD\u5514\u54F3\u5522\u5523\u550F\u5511\u5527\u552A\u5567\u558F\u55B5\u5549\u556D\u5541\u5555\u553F\u5550\u553C\"],\n[\"e040\",\"\u90C2\u90C3\u90C6\u90C8\u90C9\u90CB\u90CC\u90CD\u90D2\u90D4\u90D5\u90D6\u90D8\u90D9\u90DA\u90DE\u90DF\u90E0\u90E3\u90E4\u90E5\u90E9\u90EA\u90EC\u90EE\u90F0\u90F1\u90F2\u90F3\u90F5\u90F6\u90F7\u90F9\u90FA\u90FB\u90FC\u90FF\u9100\u9101\u9103\u9105\",19,\"\u911A\u911B\u911C\"],\n[\"e080\",\"\u911D\u911F\u9120\u9121\u9124\",10,\"\u9130\u9132\",6,\"\u913A\",8,\"\u9144\u5537\u5556\u5575\u5576\u5577\u5533\u5530\u555C\u558B\u55D2\u5583\u55B1\u55B9\u5588\u5581\u559F\u557E\u55D6\u5591\u557B\u55DF\u55BD\u55BE\u5594\u5599\u55EA\u55F7\u55C9\u561F\u55D1\u55EB\u55EC\u55D4\u55E6\u55DD\u55C4\u55EF\u55E5\u55F2\u55F3\u55CC\u55CD\u55E8\u55F5\u55E4\u8F94\u561E\u5608\u560C\u5601\u5624\u5623\u55FE\u5600\u5627\u562D\u5658\u5639\u5657\u562C\u564D\u5662\u5659\u565C\u564C\u5654\u5686\u5664\u5671\u566B\u567B\u567C\u5685\u5693\u56AF\u56D4\u56D7\u56DD\u56E1\u56F5\u56EB\u56F9\u56FF\u5704\u570A\u5709\u571C\u5E0F\u5E19\u5E14\u5E11\u5E31\u5E3B\u5E3C\"],\n[\"e140\",\"\u9145\u9147\u9148\u9151\u9153\u9154\u9155\u9156\u9158\u9159\u915B\u915C\u915F\u9160\u9166\u9167\u9168\u916B\u916D\u9173\u917A\u917B\u917C\u9180\",4,\"\u9186\u9188\u918A\u918E\u918F\u9193\",6,\"\u919C\",5,\"\u91A4\",5,\"\u91AB\u91AC\u91B0\u91B1\u91B2\u91B3\u91B6\u91B7\u91B8\u91B9\u91BB\"],\n[\"e180\",\"\u91BC\",10,\"\u91C8\u91CB\u91D0\u91D2\",9,\"\u91DD\",8,\"\u5E37\u5E44\u5E54\u5E5B\u5E5E\u5E61\u5C8C\u5C7A\u5C8D\u5C90\u5C96\u5C88\u5C98\u5C99\u5C91\u5C9A\u5C9C\u5CB5\u5CA2\u5CBD\u5CAC\u5CAB\u5CB1\u5CA3\u5CC1\u5CB7\u5CC4\u5CD2\u5CE4\u5CCB\u5CE5\u5D02\u5D03\u5D27\u5D26\u5D2E\u5D24\u5D1E\u5D06\u5D1B\u5D58\u5D3E\u5D34\u5D3D\u5D6C\u5D5B\u5D6F\u5D5D\u5D6B\u5D4B\u5D4A\u5D69\u5D74\u5D82\u5D99\u5D9D\u8C73\u5DB7\u5DC5\u5F73\u5F77\u5F82\u5F87\u5F89\u5F8C\u5F95\u5F99\u5F9C\u5FA8\u5FAD\u5FB5\u5FBC\u8862\u5F61\u72AD\u72B0\u72B4\u72B7\u72B8\u72C3\u72C1\u72CE\u72CD\u72D2\u72E8\u72EF\u72E9\u72F2\u72F4\u72F7\u7301\u72F3\u7303\u72FA\"],\n[\"e240\",\"\u91E6\",62],\n[\"e280\",\"\u9225\",32,\"\u72FB\u7317\u7313\u7321\u730A\u731E\u731D\u7315\u7322\u7339\u7325\u732C\u7338\u7331\u7350\u734D\u7357\u7360\u736C\u736F\u737E\u821B\u5925\u98E7\u5924\u5902\u9963\u9967\",5,\"\u9974\u9977\u997D\u9980\u9984\u9987\u998A\u998D\u9990\u9991\u9993\u9994\u9995\u5E80\u5E91\u5E8B\u5E96\u5EA5\u5EA0\u5EB9\u5EB5\u5EBE\u5EB3\u8D53\u5ED2\u5ED1\u5EDB\u5EE8\u5EEA\u81BA\u5FC4\u5FC9\u5FD6\u5FCF\u6003\u5FEE\u6004\u5FE1\u5FE4\u5FFE\u6005\u6006\u5FEA\u5FED\u5FF8\u6019\u6035\u6026\u601B\u600F\u600D\u6029\u602B\u600A\u603F\u6021\u6078\u6079\u607B\u607A\u6042\"],\n[\"e340\",\"\u9246\",45,\"\u9275\",16],\n[\"e380\",\"\u9286\",7,\"\u928F\",24,\"\u606A\u607D\u6096\u609A\u60AD\u609D\u6083\u6092\u608C\u609B\u60EC\u60BB\u60B1\u60DD\u60D8\u60C6\u60DA\u60B4\u6120\u6126\u6115\u6123\u60F4\u6100\u610E\u612B\u614A\u6175\u61AC\u6194\u61A7\u61B7\u61D4\u61F5\u5FDD\u96B3\u95E9\u95EB\u95F1\u95F3\u95F5\u95F6\u95FC\u95FE\u9603\u9604\u9606\u9608\u960A\u960B\u960C\u960D\u960F\u9612\u9615\u9616\u9617\u9619\u961A\u4E2C\u723F\u6215\u6C35\u6C54\u6C5C\u6C4A\u6CA3\u6C85\u6C90\u6C94\u6C8C\u6C68\u6C69\u6C74\u6C76\u6C86\u6CA9\u6CD0\u6CD4\u6CAD\u6CF7\u6CF8\u6CF1\u6CD7\u6CB2\u6CE0\u6CD6\u6CFA\u6CEB\u6CEE\u6CB1\u6CD3\u6CEF\u6CFE\"],\n[\"e440\",\"\u92A8\",5,\"\u92AF\",24,\"\u92C9\",31],\n[\"e480\",\"\u92E9\",32,\"\u6D39\u6D27\u6D0C\u6D43\u6D48\u6D07\u6D04\u6D19\u6D0E\u6D2B\u6D4D\u6D2E\u6D35\u6D1A\u6D4F\u6D52\u6D54\u6D33\u6D91\u6D6F\u6D9E\u6DA0\u6D5E\u6D93\u6D94\u6D5C\u6D60\u6D7C\u6D63\u6E1A\u6DC7\u6DC5\u6DDE\u6E0E\u6DBF\u6DE0\u6E11\u6DE6\u6DDD\u6DD9\u6E16\u6DAB\u6E0C\u6DAE\u6E2B\u6E6E\u6E4E\u6E6B\u6EB2\u6E5F\u6E86\u6E53\u6E54\u6E32\u6E25\u6E44\u6EDF\u6EB1\u6E98\u6EE0\u6F2D\u6EE2\u6EA5\u6EA7\u6EBD\u6EBB\u6EB7\u6ED7\u6EB4\u6ECF\u6E8F\u6EC2\u6E9F\u6F62\u6F46\u6F47\u6F24\u6F15\u6EF9\u6F2F\u6F36\u6F4B\u6F74\u6F2A\u6F09\u6F29\u6F89\u6F8D\u6F8C\u6F78\u6F72\u6F7C\u6F7A\u6FD1\"],\n[\"e540\",\"\u930A\",51,\"\u933F\",10],\n[\"e580\",\"\u934A\",31,\"\u936B\u6FC9\u6FA7\u6FB9\u6FB6\u6FC2\u6FE1\u6FEE\u6FDE\u6FE0\u6FEF\u701A\u7023\u701B\u7039\u7035\u704F\u705E\u5B80\u5B84\u5B95\u5B93\u5BA5\u5BB8\u752F\u9A9E\u6434\u5BE4\u5BEE\u8930\u5BF0\u8E47\u8B07\u8FB6\u8FD3\u8FD5\u8FE5\u8FEE\u8FE4\u8FE9\u8FE6\u8FF3\u8FE8\u9005\u9004\u900B\u9026\u9011\u900D\u9016\u9021\u9035\u9036\u902D\u902F\u9044\u9051\u9052\u9050\u9068\u9058\u9062\u905B\u66B9\u9074\u907D\u9082\u9088\u9083\u908B\u5F50\u5F57\u5F56\u5F58\u5C3B\u54AB\u5C50\u5C59\u5B71\u5C63\u5C66\u7FBC\u5F2A\u5F29\u5F2D\u8274\u5F3C\u9B3B\u5C6E\u5981\u5983\u598D\u59A9\u59AA\u59A3\"],\n[\"e640\",\"\u936C\",34,\"\u9390\",27],\n[\"e680\",\"\u93AC\",29,\"\u93CB\u93CC\u93CD\u5997\u59CA\u59AB\u599E\u59A4\u59D2\u59B2\u59AF\u59D7\u59BE\u5A05\u5A06\u59DD\u5A08\u59E3\u59D8\u59F9\u5A0C\u5A09\u5A32\u5A34\u5A11\u5A23\u5A13\u5A40\u5A67\u5A4A\u5A55\u5A3C\u5A62\u5A75\u80EC\u5AAA\u5A9B\u5A77\u5A7A\u5ABE\u5AEB\u5AB2\u5AD2\u5AD4\u5AB8\u5AE0\u5AE3\u5AF1\u5AD6\u5AE6\u5AD8\u5ADC\u5B09\u5B17\u5B16\u5B32\u5B37\u5B40\u5C15\u5C1C\u5B5A\u5B65\u5B73\u5B51\u5B53\u5B62\u9A75\u9A77\u9A78\u9A7A\u9A7F\u9A7D\u9A80\u9A81\u9A85\u9A88\u9A8A\u9A90\u9A92\u9A93\u9A96\u9A98\u9A9B\u9A9C\u9A9D\u9A9F\u9AA0\u9AA2\u9AA3\u9AA5\u9AA7\u7E9F\u7EA1\u7EA3\u7EA5\u7EA8\u7EA9\"],\n[\"e740\",\"\u93CE\",7,\"\u93D7\",54],\n[\"e780\",\"\u940E\",32,\"\u7EAD\u7EB0\u7EBE\u7EC0\u7EC1\u7EC2\u7EC9\u7ECB\u7ECC\u7ED0\u7ED4\u7ED7\u7EDB\u7EE0\u7EE1\u7EE8\u7EEB\u7EEE\u7EEF\u7EF1\u7EF2\u7F0D\u7EF6\u7EFA\u7EFB\u7EFE\u7F01\u7F02\u7F03\u7F07\u7F08\u7F0B\u7F0C\u7F0F\u7F11\u7F12\u7F17\u7F19\u7F1C\u7F1B\u7F1F\u7F21\",6,\"\u7F2A\u7F2B\u7F2C\u7F2D\u7F2F\",4,\"\u7F35\u5E7A\u757F\u5DDB\u753E\u9095\u738E\u7391\u73AE\u73A2\u739F\u73CF\u73C2\u73D1\u73B7\u73B3\u73C0\u73C9\u73C8\u73E5\u73D9\u987C\u740A\u73E9\u73E7\u73DE\u73BA\u73F2\u740F\u742A\u745B\u7426\u7425\u7428\u7430\u742E\u742C\"],\n[\"e840\",\"\u942F\",14,\"\u943F\",43,\"\u946C\u946D\u946E\u946F\"],\n[\"e880\",\"\u9470\",20,\"\u9491\u9496\u9498\u94C7\u94CF\u94D3\u94D4\u94DA\u94E6\u94FB\u951C\u9520\u741B\u741A\u7441\u745C\u7457\u7455\u7459\u7477\u746D\u747E\u749C\u748E\u7480\u7481\u7487\u748B\u749E\u74A8\u74A9\u7490\u74A7\u74D2\u74BA\u97EA\u97EB\u97EC\u674C\u6753\u675E\u6748\u6769\u67A5\u6787\u676A\u6773\u6798\u67A7\u6775\u67A8\u679E\u67AD\u678B\u6777\u677C\u67F0\u6809\u67D8\u680A\u67E9\u67B0\u680C\u67D9\u67B5\u67DA\u67B3\u67DD\u6800\u67C3\u67B8\u67E2\u680E\u67C1\u67FD\u6832\u6833\u6860\u6861\u684E\u6862\u6844\u6864\u6883\u681D\u6855\u6866\u6841\u6867\u6840\u683E\u684A\u6849\u6829\u68B5\u688F\u6874\u6877\u6893\u686B\u68C2\u696E\u68FC\u691F\u6920\u68F9\"],\n[\"e940\",\"\u9527\u9533\u953D\u9543\u9548\u954B\u9555\u955A\u9560\u956E\u9574\u9575\u9577\",7,\"\u9580\",42],\n[\"e980\",\"\u95AB\",32,\"\u6924\u68F0\u690B\u6901\u6957\u68E3\u6910\u6971\u6939\u6960\u6942\u695D\u6984\u696B\u6980\u6998\u6978\u6934\u69CC\u6987\u6988\u69CE\u6989\u6966\u6963\u6979\u699B\u69A7\u69BB\u69AB\u69AD\u69D4\u69B1\u69C1\u69CA\u69DF\u6995\u69E0\u698D\u69FF\u6A2F\u69ED\u6A17\u6A18\u6A65\u69F2\u6A44\u6A3E\u6AA0\u6A50\u6A5B\u6A35\u6A8E\u6A79\u6A3D\u6A28\u6A58\u6A7C\u6A91\u6A90\u6AA9\u6A97\u6AAB\u7337\u7352\u6B81\u6B82\u6B87\u6B84\u6B92\u6B93\u6B8D\u6B9A\u6B9B\u6BA1\u6BAA\u8F6B\u8F6D\u8F71\u8F72\u8F73\u8F75\u8F76\u8F78\u8F77\u8F79\u8F7A\u8F7C\u8F7E\u8F81\u8F82\u8F84\u8F87\u8F8B\"],\n[\"ea40\",\"\u95CC\",27,\"\u95EC\u95FF\u9607\u9613\u9618\u961B\u961E\u9620\u9623\",6,\"\u962B\u962C\u962D\u962F\u9630\u9637\u9638\u9639\u963A\u963E\u9641\u9643\u964A\u964E\u964F\u9651\u9652\u9653\u9656\u9657\"],\n[\"ea80\",\"\u9658\u9659\u965A\u965C\u965D\u965E\u9660\u9663\u9665\u9666\u966B\u966D\",4,\"\u9673\u9678\",12,\"\u9687\u9689\u968A\u8F8D\u8F8E\u8F8F\u8F98\u8F9A\u8ECE\u620B\u6217\u621B\u621F\u6222\u6221\u6225\u6224\u622C\u81E7\u74EF\u74F4\u74FF\u750F\u7511\u7513\u6534\u65EE\u65EF\u65F0\u660A\u6619\u6772\u6603\u6615\u6600\u7085\u66F7\u661D\u6634\u6631\u6636\u6635\u8006\u665F\u6654\u6641\u664F\u6656\u6661\u6657\u6677\u6684\u668C\u66A7\u669D\u66BE\u66DB\u66DC\u66E6\u66E9\u8D32\u8D33\u8D36\u8D3B\u8D3D\u8D40\u8D45\u8D46\u8D48\u8D49\u8D47\u8D4D\u8D55\u8D59\u89C7\u89CA\u89CB\u89CC\u89CE\u89CF\u89D0\u89D1\u726E\u729F\u725D\u7266\u726F\u727E\u727F\u7284\u728B\u728D\u728F\u7292\u6308\u6332\u63B0\"],\n[\"eb40\",\"\u968C\u968E\u9691\u9692\u9693\u9695\u9696\u969A\u969B\u969D\",9,\"\u96A8\",7,\"\u96B1\u96B2\u96B4\u96B5\u96B7\u96B8\u96BA\u96BB\u96BF\u96C2\u96C3\u96C8\u96CA\u96CB\u96D0\u96D1\u96D3\u96D4\u96D6\",9,\"\u96E1\",6,\"\u96EB\"],\n[\"eb80\",\"\u96EC\u96ED\u96EE\u96F0\u96F1\u96F2\u96F4\u96F5\u96F8\u96FA\u96FB\u96FC\u96FD\u96FF\u9702\u9703\u9705\u970A\u970B\u970C\u9710\u9711\u9712\u9714\u9715\u9717\",4,\"\u971D\u971F\u9720\u643F\u64D8\u8004\u6BEA\u6BF3\u6BFD\u6BF5\u6BF9\u6C05\u6C07\u6C06\u6C0D\u6C15\u6C18\u6C19\u6C1A\u6C21\u6C29\u6C24\u6C2A\u6C32\u6535\u6555\u656B\u724D\u7252\u7256\u7230\u8662\u5216\u809F\u809C\u8093\u80BC\u670A\u80BD\u80B1\u80AB\u80AD\u80B4\u80B7\u80E7\u80E8\u80E9\u80EA\u80DB\u80C2\u80C4\u80D9\u80CD\u80D7\u6710\u80DD\u80EB\u80F1\u80F4\u80ED\u810D\u810E\u80F2\u80FC\u6715\u8112\u8C5A\u8136\u811E\u812C\u8118\u8132\u8148\u814C\u8153\u8174\u8159\u815A\u8171\u8160\u8169\u817C\u817D\u816D\u8167\u584D\u5AB5\u8188\u8182\u8191\u6ED5\u81A3\u81AA\u81CC\u6726\u81CA\u81BB\"],\n[\"ec40\",\"\u9721\",8,\"\u972B\u972C\u972E\u972F\u9731\u9733\",4,\"\u973A\u973B\u973C\u973D\u973F\",18,\"\u9754\u9755\u9757\u9758\u975A\u975C\u975D\u975F\u9763\u9764\u9766\u9767\u9768\u976A\",7],\n[\"ec80\",\"\u9772\u9775\u9777\",4,\"\u977D\",7,\"\u9786\",4,\"\u978C\u978E\u978F\u9790\u9793\u9795\u9796\u9797\u9799\",4,\"\u81C1\u81A6\u6B24\u6B37\u6B39\u6B43\u6B46\u6B59\u98D1\u98D2\u98D3\u98D5\u98D9\u98DA\u6BB3\u5F40\u6BC2\u89F3\u6590\u9F51\u6593\u65BC\u65C6\u65C4\u65C3\u65CC\u65CE\u65D2\u65D6\u7080\u709C\u7096\u709D\u70BB\u70C0\u70B7\u70AB\u70B1\u70E8\u70CA\u7110\u7113\u7116\u712F\u7131\u7173\u715C\u7168\u7145\u7172\u714A\u7178\u717A\u7198\u71B3\u71B5\u71A8\u71A0\u71E0\u71D4\u71E7\u71F9\u721D\u7228\u706C\u7118\u7166\u71B9\u623E\u623D\u6243\u6248\u6249\u793B\u7940\u7946\u7949\u795B\u795C\u7953\u795A\u7962\u7957\u7960\u796F\u7967\u797A\u7985\u798A\u799A\u79A7\u79B3\u5FD1\u5FD0\"],\n[\"ed40\",\"\u979E\u979F\u97A1\u97A2\u97A4\",6,\"\u97AC\u97AE\u97B0\u97B1\u97B3\u97B5\",46],\n[\"ed80\",\"\u97E4\u97E5\u97E8\u97EE\",4,\"\u97F4\u97F7\",23,\"\u603C\u605D\u605A\u6067\u6041\u6059\u6063\u60AB\u6106\u610D\u615D\u61A9\u619D\u61CB\u61D1\u6206\u8080\u807F\u6C93\u6CF6\u6DFC\u77F6\u77F8\u7800\u7809\u7817\u7818\u7811\u65AB\u782D\u781C\u781D\u7839\u783A\u783B\u781F\u783C\u7825\u782C\u7823\u7829\u784E\u786D\u7856\u7857\u7826\u7850\u7847\u784C\u786A\u789B\u7893\u789A\u7887\u789C\u78A1\u78A3\u78B2\u78B9\u78A5\u78D4\u78D9\u78C9\u78EC\u78F2\u7905\u78F4\u7913\u7924\u791E\u7934\u9F9B\u9EF9\u9EFB\u9EFC\u76F1\u7704\u770D\u76F9\u7707\u7708\u771A\u7722\u7719\u772D\u7726\u7735\u7738\u7750\u7751\u7747\u7743\u775A\u7768\"],\n[\"ee40\",\"\u980F\",62],\n[\"ee80\",\"\u984E\",32,\"\u7762\u7765\u777F\u778D\u777D\u7780\u778C\u7791\u779F\u77A0\u77B0\u77B5\u77BD\u753A\u7540\u754E\u754B\u7548\u755B\u7572\u7579\u7583\u7F58\u7F61\u7F5F\u8A48\u7F68\u7F74\u7F71\u7F79\u7F81\u7F7E\u76CD\u76E5\u8832\u9485\u9486\u9487\u948B\u948A\u948C\u948D\u948F\u9490\u9494\u9497\u9495\u949A\u949B\u949C\u94A3\u94A4\u94AB\u94AA\u94AD\u94AC\u94AF\u94B0\u94B2\u94B4\u94B6\",4,\"\u94BC\u94BD\u94BF\u94C4\u94C8\",6,\"\u94D0\u94D1\u94D2\u94D5\u94D6\u94D7\u94D9\u94D8\u94DB\u94DE\u94DF\u94E0\u94E2\u94E4\u94E5\u94E7\u94E8\u94EA\"],\n[\"ef40\",\"\u986F\",5,\"\u988B\u988E\u9892\u9895\u9899\u98A3\u98A8\",37,\"\u98CF\u98D0\u98D4\u98D6\u98D7\u98DB\u98DC\u98DD\u98E0\",4],\n[\"ef80\",\"\u98E5\u98E6\u98E9\",30,\"\u94E9\u94EB\u94EE\u94EF\u94F3\u94F4\u94F5\u94F7\u94F9\u94FC\u94FD\u94FF\u9503\u9502\u9506\u9507\u9509\u950A\u950D\u950E\u950F\u9512\",4,\"\u9518\u951B\u951D\u951E\u951F\u9522\u952A\u952B\u9529\u952C\u9531\u9532\u9534\u9536\u9537\u9538\u953C\u953E\u953F\u9542\u9535\u9544\u9545\u9546\u9549\u954C\u954E\u954F\u9552\u9553\u9554\u9556\u9557\u9558\u9559\u955B\u955E\u955F\u955D\u9561\u9562\u9564\",8,\"\u956F\u9571\u9572\u9573\u953A\u77E7\u77EC\u96C9\u79D5\u79ED\u79E3\u79EB\u7A06\u5D47\u7A03\u7A02\u7A1E\u7A14\"],\n[\"f040\",\"\u9908\",4,\"\u990E\u990F\u9911\",28,\"\u992F\",26],\n[\"f080\",\"\u994A\",9,\"\u9956\",12,\"\u9964\u9966\u9973\u9978\u9979\u997B\u997E\u9982\u9983\u9989\u7A39\u7A37\u7A51\u9ECF\u99A5\u7A70\u7688\u768E\u7693\u7699\u76A4\u74DE\u74E0\u752C\u9E20\u9E22\u9E28\",4,\"\u9E32\u9E31\u9E36\u9E38\u9E37\u9E39\u9E3A\u9E3E\u9E41\u9E42\u9E44\u9E46\u9E47\u9E48\u9E49\u9E4B\u9E4C\u9E4E\u9E51\u9E55\u9E57\u9E5A\u9E5B\u9E5C\u9E5E\u9E63\u9E66\",6,\"\u9E71\u9E6D\u9E73\u7592\u7594\u7596\u75A0\u759D\u75AC\u75A3\u75B3\u75B4\u75B8\u75C4\u75B1\u75B0\u75C3\u75C2\u75D6\u75CD\u75E3\u75E8\u75E6\u75E4\u75EB\u75E7\u7603\u75F1\u75FC\u75FF\u7610\u7600\u7605\u760C\u7617\u760A\u7625\u7618\u7615\u7619\"],\n[\"f140\",\"\u998C\u998E\u999A\",10,\"\u99A6\u99A7\u99A9\",47],\n[\"f180\",\"\u99D9\",32,\"\u761B\u763C\u7622\u7620\u7640\u762D\u7630\u763F\u7635\u7643\u763E\u7633\u764D\u765E\u7654\u765C\u7656\u766B\u766F\u7FCA\u7AE6\u7A78\u7A79\u7A80\u7A86\u7A88\u7A95\u7AA6\u7AA0\u7AAC\u7AA8\u7AAD\u7AB3\u8864\u8869\u8872\u887D\u887F\u8882\u88A2\u88C6\u88B7\u88BC\u88C9\u88E2\u88CE\u88E3\u88E5\u88F1\u891A\u88FC\u88E8\u88FE\u88F0\u8921\u8919\u8913\u891B\u890A\u8934\u892B\u8936\u8941\u8966\u897B\u758B\u80E5\u76B2\u76B4\u77DC\u8012\u8014\u8016\u801C\u8020\u8022\u8025\u8026\u8027\u8029\u8028\u8031\u800B\u8035\u8043\u8046\u804D\u8052\u8069\u8071\u8983\u9878\u9880\u9883\"],\n[\"f240\",\"\u99FA\",62],\n[\"f280\",\"\u9A39\",32,\"\u9889\u988C\u988D\u988F\u9894\u989A\u989B\u989E\u989F\u98A1\u98A2\u98A5\u98A6\u864D\u8654\u866C\u866E\u867F\u867A\u867C\u867B\u86A8\u868D\u868B\u86AC\u869D\u86A7\u86A3\u86AA\u8693\u86A9\u86B6\u86C4\u86B5\u86CE\u86B0\u86BA\u86B1\u86AF\u86C9\u86CF\u86B4\u86E9\u86F1\u86F2\u86ED\u86F3\u86D0\u8713\u86DE\u86F4\u86DF\u86D8\u86D1\u8703\u8707\u86F8\u8708\u870A\u870D\u8709\u8723\u873B\u871E\u8725\u872E\u871A\u873E\u8748\u8734\u8731\u8729\u8737\u873F\u8782\u8722\u877D\u877E\u877B\u8760\u8770\u874C\u876E\u878B\u8753\u8763\u877C\u8764\u8759\u8765\u8793\u87AF\u87A8\u87D2\"],\n[\"f340\",\"\u9A5A\",17,\"\u9A72\u9A83\u9A89\u9A8D\u9A8E\u9A94\u9A95\u9A99\u9AA6\u9AA9\",6,\"\u9AB2\u9AB3\u9AB4\u9AB5\u9AB9\u9ABB\u9ABD\u9ABE\u9ABF\u9AC3\u9AC4\u9AC6\",4,\"\u9ACD\u9ACE\u9ACF\u9AD0\u9AD2\u9AD4\u9AD5\u9AD6\u9AD7\u9AD9\u9ADA\u9ADB\u9ADC\"],\n[\"f380\",\"\u9ADD\u9ADE\u9AE0\u9AE2\u9AE3\u9AE4\u9AE5\u9AE7\u9AE8\u9AE9\u9AEA\u9AEC\u9AEE\u9AF0\",8,\"\u9AFA\u9AFC\",6,\"\u9B04\u9B05\u9B06\u87C6\u8788\u8785\u87AD\u8797\u8783\u87AB\u87E5\u87AC\u87B5\u87B3\u87CB\u87D3\u87BD\u87D1\u87C0\u87CA\u87DB\u87EA\u87E0\u87EE\u8816\u8813\u87FE\u880A\u881B\u8821\u8839\u883C\u7F36\u7F42\u7F44\u7F45\u8210\u7AFA\u7AFD\u7B08\u7B03\u7B04\u7B15\u7B0A\u7B2B\u7B0F\u7B47\u7B38\u7B2A\u7B19\u7B2E\u7B31\u7B20\u7B25\u7B24\u7B33\u7B3E\u7B1E\u7B58\u7B5A\u7B45\u7B75\u7B4C\u7B5D\u7B60\u7B6E\u7B7B\u7B62\u7B72\u7B71\u7B90\u7BA6\u7BA7\u7BB8\u7BAC\u7B9D\u7BA8\u7B85\u7BAA\u7B9C\u7BA2\u7BAB\u7BB4\u7BD1\u7BC1\u7BCC\u7BDD\u7BDA\u7BE5\u7BE6\u7BEA\u7C0C\u7BFE\u7BFC\u7C0F\u7C16\u7C0B\"],\n[\"f440\",\"\u9B07\u9B09\",5,\"\u9B10\u9B11\u9B12\u9B14\",10,\"\u9B20\u9B21\u9B22\u9B24\",10,\"\u9B30\u9B31\u9B33\",7,\"\u9B3D\u9B3E\u9B3F\u9B40\u9B46\u9B4A\u9B4B\u9B4C\u9B4E\u9B50\u9B52\u9B53\u9B55\",5],\n[\"f480\",\"\u9B5B\",32,\"\u7C1F\u7C2A\u7C26\u7C38\u7C41\u7C40\u81FE\u8201\u8202\u8204\u81EC\u8844\u8221\u8222\u8223\u822D\u822F\u8228\u822B\u8238\u823B\u8233\u8234\u823E\u8244\u8249\u824B\u824F\u825A\u825F\u8268\u887E\u8885\u8888\u88D8\u88DF\u895E\u7F9D\u7F9F\u7FA7\u7FAF\u7FB0\u7FB2\u7C7C\u6549\u7C91\u7C9D\u7C9C\u7C9E\u7CA2\u7CB2\u7CBC\u7CBD\u7CC1\u7CC7\u7CCC\u7CCD\u7CC8\u7CC5\u7CD7\u7CE8\u826E\u66A8\u7FBF\u7FCE\u7FD5\u7FE5\u7FE1\u7FE6\u7FE9\u7FEE\u7FF3\u7CF8\u7D77\u7DA6\u7DAE\u7E47\u7E9B\u9EB8\u9EB4\u8D73\u8D84\u8D94\u8D91\u8DB1\u8D67\u8D6D\u8C47\u8C49\u914A\u9150\u914E\u914F\u9164\"],\n[\"f540\",\"\u9B7C\",62],\n[\"f580\",\"\u9BBB\",32,\"\u9162\u9161\u9170\u9169\u916F\u917D\u917E\u9172\u9174\u9179\u918C\u9185\u9190\u918D\u9191\u91A2\u91A3\u91AA\u91AD\u91AE\u91AF\u91B5\u91B4\u91BA\u8C55\u9E7E\u8DB8\u8DEB\u8E05\u8E59\u8E69\u8DB5\u8DBF\u8DBC\u8DBA\u8DC4\u8DD6\u8DD7\u8DDA\u8DDE\u8DCE\u8DCF\u8DDB\u8DC6\u8DEC\u8DF7\u8DF8\u8DE3\u8DF9\u8DFB\u8DE4\u8E09\u8DFD\u8E14\u8E1D\u8E1F\u8E2C\u8E2E\u8E23\u8E2F\u8E3A\u8E40\u8E39\u8E35\u8E3D\u8E31\u8E49\u8E41\u8E42\u8E51\u8E52\u8E4A\u8E70\u8E76\u8E7C\u8E6F\u8E74\u8E85\u8E8F\u8E94\u8E90\u8E9C\u8E9E\u8C78\u8C82\u8C8A\u8C85\u8C98\u8C94\u659B\u89D6\u89DE\u89DA\u89DC\"],\n[\"f640\",\"\u9BDC\",62],\n[\"f680\",\"\u9C1B\",32,\"\u89E5\u89EB\u89EF\u8A3E\u8B26\u9753\u96E9\u96F3\u96EF\u9706\u9701\u9708\u970F\u970E\u972A\u972D\u9730\u973E\u9F80\u9F83\u9F85\",5,\"\u9F8C\u9EFE\u9F0B\u9F0D\u96B9\u96BC\u96BD\u96CE\u96D2\u77BF\u96E0\u928E\u92AE\u92C8\u933E\u936A\u93CA\u938F\u943E\u946B\u9C7F\u9C82\u9C85\u9C86\u9C87\u9C88\u7A23\u9C8B\u9C8E\u9C90\u9C91\u9C92\u9C94\u9C95\u9C9A\u9C9B\u9C9E\",5,\"\u9CA5\",4,\"\u9CAB\u9CAD\u9CAE\u9CB0\",7,\"\u9CBA\u9CBB\u9CBC\u9CBD\u9CC4\u9CC5\u9CC6\u9CC7\u9CCA\u9CCB\"],\n[\"f740\",\"\u9C3C\",62],\n[\"f780\",\"\u9C7B\u9C7D\u9C7E\u9C80\u9C83\u9C84\u9C89\u9C8A\u9C8C\u9C8F\u9C93\u9C96\u9C97\u9C98\u9C99\u9C9D\u9CAA\u9CAC\u9CAF\u9CB9\u9CBE\",4,\"\u9CC8\u9CC9\u9CD1\u9CD2\u9CDA\u9CDB\u9CE0\u9CE1\u9CCC\",4,\"\u9CD3\u9CD4\u9CD5\u9CD7\u9CD8\u9CD9\u9CDC\u9CDD\u9CDF\u9CE2\u977C\u9785\u9791\u9792\u9794\u97AF\u97AB\u97A3\u97B2\u97B4\u9AB1\u9AB0\u9AB7\u9E58\u9AB6\u9ABA\u9ABC\u9AC1\u9AC0\u9AC5\u9AC2\u9ACB\u9ACC\u9AD1\u9B45\u9B43\u9B47\u9B49\u9B48\u9B4D\u9B51\u98E8\u990D\u992E\u9955\u9954\u9ADF\u9AE1\u9AE6\u9AEF\u9AEB\u9AFB\u9AED\u9AF9\u9B08\u9B0F\u9B13\u9B1F\u9B23\u9EBD\u9EBE\u7E3B\u9E82\u9E87\u9E88\u9E8B\u9E92\u93D6\u9E9D\u9E9F\u9EDB\u9EDC\u9EDD\u9EE0\u9EDF\u9EE2\u9EE9\u9EE7\u9EE5\u9EEA\u9EEF\u9F22\u9F2C\u9F2F\u9F39\u9F37\u9F3D\u9F3E\u9F44\"],\n[\"f840\",\"\u9CE3\",62],\n[\"f880\",\"\u9D22\",32],\n[\"f940\",\"\u9D43\",62],\n[\"f980\",\"\u9D82\",32],\n[\"fa40\",\"\u9DA3\",62],\n[\"fa80\",\"\u9DE2\",32],\n[\"fb40\",\"\u9E03\",27,\"\u9E24\u9E27\u9E2E\u9E30\u9E34\u9E3B\u9E3C\u9E40\u9E4D\u9E50\u9E52\u9E53\u9E54\u9E56\u9E59\u9E5D\u9E5F\u9E60\u9E61\u9E62\u9E65\u9E6E\u9E6F\u9E72\u9E74\",9,\"\u9E80\"],\n[\"fb80\",\"\u9E81\u9E83\u9E84\u9E85\u9E86\u9E89\u9E8A\u9E8C\",5,\"\u9E94\",8,\"\u9E9E\u9EA0\",5,\"\u9EA7\u9EA8\u9EA9\u9EAA\"],\n[\"fc40\",\"\u9EAB\",8,\"\u9EB5\u9EB6\u9EB7\u9EB9\u9EBA\u9EBC\u9EBF\",4,\"\u9EC5\u9EC6\u9EC7\u9EC8\u9ECA\u9ECB\u9ECC\u9ED0\u9ED2\u9ED3\u9ED5\u9ED6\u9ED7\u9ED9\u9EDA\u9EDE\u9EE1\u9EE3\u9EE4\u9EE6\u9EE8\u9EEB\u9EEC\u9EED\u9EEE\u9EF0\",8,\"\u9EFA\u9EFD\u9EFF\",6],\n[\"fc80\",\"\u9F06\",4,\"\u9F0C\u9F0F\u9F11\u9F12\u9F14\u9F15\u9F16\u9F18\u9F1A\",5,\"\u9F21\u9F23\",8,\"\u9F2D\u9F2E\u9F30\u9F31\"],\n[\"fd40\",\"\u9F32\",4,\"\u9F38\u9F3A\u9F3C\u9F3F\",4,\"\u9F45\",10,\"\u9F52\",38],\n[\"fd80\",\"\u9F79\",5,\"\u9F81\u9F82\u9F8D\",11,\"\u9F9C\u9F9D\u9F9E\u9FA1\",4,\"\uF92C\uF979\uF995\uF9E7\uF9F1\"],\n[\"fe40\",\"\uFA0C\uFA0D\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA18\uFA1F\uFA20\uFA21\uFA23\uFA24\uFA27\uFA28\uFA29\"]\n]\n", "[\n[\"a140\",\"\uE4C6\",62],\n[\"a180\",\"\uE505\",32],\n[\"a240\",\"\uE526\",62],\n[\"a280\",\"\uE565\",32],\n[\"a2ab\",\"\uE766\",5],\n[\"a2e3\",\"\u20AC\uE76D\"],\n[\"a2ef\",\"\uE76E\uE76F\"],\n[\"a2fd\",\"\uE770\uE771\"],\n[\"a340\",\"\uE586\",62],\n[\"a380\",\"\uE5C5\",31,\"\u3000\"],\n[\"a440\",\"\uE5E6\",62],\n[\"a480\",\"\uE625\",32],\n[\"a4f4\",\"\uE772\",10],\n[\"a540\",\"\uE646\",62],\n[\"a580\",\"\uE685\",32],\n[\"a5f7\",\"\uE77D\",7],\n[\"a640\",\"\uE6A6\",62],\n[\"a680\",\"\uE6E5\",32],\n[\"a6b9\",\"\uE785\",7],\n[\"a6d9\",\"\uE78D\",6],\n[\"a6ec\",\"\uE794\uE795\"],\n[\"a6f3\",\"\uE796\"],\n[\"a6f6\",\"\uE797\",8],\n[\"a740\",\"\uE706\",62],\n[\"a780\",\"\uE745\",32],\n[\"a7c2\",\"\uE7A0\",14],\n[\"a7f2\",\"\uE7AF\",12],\n[\"a896\",\"\uE7BC\",10],\n[\"a8bc\",\"\u1E3F\"],\n[\"a8bf\",\"\u01F9\"],\n[\"a8c1\",\"\uE7C9\uE7CA\uE7CB\uE7CC\"],\n[\"a8ea\",\"\uE7CD\",20],\n[\"a958\",\"\uE7E2\"],\n[\"a95b\",\"\uE7E3\"],\n[\"a95d\",\"\uE7E4\uE7E5\uE7E6\"],\n[\"a989\",\"\u303E\u2FF0\",11],\n[\"a997\",\"\uE7F4\",12],\n[\"a9f0\",\"\uE801\",14],\n[\"aaa1\",\"\uE000\",93],\n[\"aba1\",\"\uE05E\",93],\n[\"aca1\",\"\uE0BC\",93],\n[\"ada1\",\"\uE11A\",93],\n[\"aea1\",\"\uE178\",93],\n[\"afa1\",\"\uE1D6\",93],\n[\"d7fa\",\"\uE810\",4],\n[\"f8a1\",\"\uE234\",93],\n[\"f9a1\",\"\uE292\",93],\n[\"faa1\",\"\uE2F0\",93],\n[\"fba1\",\"\uE34E\",93],\n[\"fca1\",\"\uE3AC\",93],\n[\"fda1\",\"\uE40A\",93],\n[\"fe50\",\"\u2E81\uE816\uE817\uE818\u2E84\u3473\u3447\u2E88\u2E8B\uE81E\u359E\u361A\u360E\u2E8C\u2E97\u396E\u3918\uE826\u39CF\u39DF\u3A73\u39D0\uE82B\uE82C\u3B4E\u3C6E\u3CE0\u2EA7\uE831\uE832\u2EAA\u4056\u415F\u2EAE\u4337\u2EB3\u2EB6\u2EB7\uE83B\u43B1\u43AC\u2EBB\u43DD\u44D6\u4661\u464C\uE843\"],\n[\"fe80\",\"\u4723\u4729\u477C\u478D\u2ECA\u4947\u497A\u497D\u4982\u4983\u4985\u4986\u499F\u499B\u49B7\u49B6\uE854\uE855\u4CA3\u4C9F\u4CA0\u4CA1\u4C77\u4CA2\u4D13\",6,\"\u4DAE\uE864\uE468\",93],\n[\"8135f437\",\"\uE7C7\"]\n]\n", "{\"uChars\":[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],\"gbChars\":[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189000]}", "[\n[\"0\",\"\\u0000\",127],\n[\"8141\",\"\uAC02\uAC03\uAC05\uAC06\uAC0B\",4,\"\uAC18\uAC1E\uAC1F\uAC21\uAC22\uAC23\uAC25\",6,\"\uAC2E\uAC32\uAC33\uAC34\"],\n[\"8161\",\"\uAC35\uAC36\uAC37\uAC3A\uAC3B\uAC3D\uAC3E\uAC3F\uAC41\",9,\"\uAC4C\uAC4E\",5,\"\uAC55\"],\n[\"8181\",\"\uAC56\uAC57\uAC59\uAC5A\uAC5B\uAC5D\",18,\"\uAC72\uAC73\uAC75\uAC76\uAC79\uAC7B\",4,\"\uAC82\uAC87\uAC88\uAC8D\uAC8E\uAC8F\uAC91\uAC92\uAC93\uAC95\",6,\"\uAC9E\uACA2\",5,\"\uACAB\uACAD\uACAE\uACB1\",6,\"\uACBA\uACBE\uACBF\uACC0\uACC2\uACC3\uACC5\uACC6\uACC7\uACC9\uACCA\uACCB\uACCD\",7,\"\uACD6\uACD8\",7,\"\uACE2\uACE3\uACE5\uACE6\uACE9\uACEB\uACED\uACEE\uACF2\uACF4\uACF7\",4,\"\uACFE\uACFF\uAD01\uAD02\uAD03\uAD05\uAD07\",4,\"\uAD0E\uAD10\uAD12\uAD13\"],\n[\"8241\",\"\uAD14\uAD15\uAD16\uAD17\uAD19\uAD1A\uAD1B\uAD1D\uAD1E\uAD1F\uAD21\",7,\"\uAD2A\uAD2B\uAD2E\",5],\n[\"8261\",\"\uAD36\uAD37\uAD39\uAD3A\uAD3B\uAD3D\",6,\"\uAD46\uAD48\uAD4A\",5,\"\uAD51\uAD52\uAD53\uAD55\uAD56\uAD57\"],\n[\"8281\",\"\uAD59\",7,\"\uAD62\uAD64\",7,\"\uAD6E\uAD6F\uAD71\uAD72\uAD77\uAD78\uAD79\uAD7A\uAD7E\uAD80\uAD83\",4,\"\uAD8A\uAD8B\uAD8D\uAD8E\uAD8F\uAD91\",10,\"\uAD9E\",5,\"\uADA5\",17,\"\uADB8\",7,\"\uADC2\uADC3\uADC5\uADC6\uADC7\uADC9\",6,\"\uADD2\uADD4\",7,\"\uADDD\uADDE\uADDF\uADE1\uADE2\uADE3\uADE5\",18],\n[\"8341\",\"\uADFA\uADFB\uADFD\uADFE\uAE02\",5,\"\uAE0A\uAE0C\uAE0E\",5,\"\uAE15\",7],\n[\"8361\",\"\uAE1D\",18,\"\uAE32\uAE33\uAE35\uAE36\uAE39\uAE3B\uAE3C\"],\n[\"8381\",\"\uAE3D\uAE3E\uAE3F\uAE42\uAE44\uAE47\uAE48\uAE49\uAE4B\uAE4F\uAE51\uAE52\uAE53\uAE55\uAE57\",4,\"\uAE5E\uAE62\uAE63\uAE64\uAE66\uAE67\uAE6A\uAE6B\uAE6D\uAE6E\uAE6F\uAE71\",6,\"\uAE7A\uAE7E\",5,\"\uAE86\",5,\"\uAE8D\",46,\"\uAEBF\uAEC1\uAEC2\uAEC3\uAEC5\",6,\"\uAECE\uAED2\",5,\"\uAEDA\uAEDB\uAEDD\",8],\n[\"8441\",\"\uAEE6\uAEE7\uAEE9\uAEEA\uAEEC\uAEEE\",5,\"\uAEF5\uAEF6\uAEF7\uAEF9\uAEFA\uAEFB\uAEFD\",8],\n[\"8461\",\"\uAF06\uAF09\uAF0A\uAF0B\uAF0C\uAF0E\uAF0F\uAF11\",18],\n[\"8481\",\"\uAF24\",7,\"\uAF2E\uAF2F\uAF31\uAF33\uAF35\",6,\"\uAF3E\uAF40\uAF44\uAF45\uAF46\uAF47\uAF4A\",5,\"\uAF51\",10,\"\uAF5E\",5,\"\uAF66\",18,\"\uAF7A\",5,\"\uAF81\uAF82\uAF83\uAF85\uAF86\uAF87\uAF89\",6,\"\uAF92\uAF93\uAF94\uAF96\",5,\"\uAF9D\",26,\"\uAFBA\uAFBB\uAFBD\uAFBE\"],\n[\"8541\",\"\uAFBF\uAFC1\",5,\"\uAFCA\uAFCC\uAFCF\",4,\"\uAFD5\",6,\"\uAFDD\",4],\n[\"8561\",\"\uAFE2\",5,\"\uAFEA\",5,\"\uAFF2\uAFF3\uAFF5\uAFF6\uAFF7\uAFF9\",6,\"\uB002\uB003\"],\n[\"8581\",\"\uB005\",6,\"\uB00D\uB00E\uB00F\uB011\uB012\uB013\uB015\",6,\"\uB01E\",9,\"\uB029\",26,\"\uB046\uB047\uB049\uB04B\uB04D\uB04F\uB050\uB051\uB052\uB056\uB058\uB05A\uB05B\uB05C\uB05E\",29,\"\uB07E\uB07F\uB081\uB082\uB083\uB085\",6,\"\uB08E\uB090\uB092\",5,\"\uB09B\uB09D\uB09E\uB0A3\uB0A4\"],\n[\"8641\",\"\uB0A5\uB0A6\uB0A7\uB0AA\uB0B0\uB0B2\uB0B6\uB0B7\uB0B9\uB0BA\uB0BB\uB0BD\",6,\"\uB0C6\uB0CA\",5,\"\uB0D2\"],\n[\"8661\",\"\uB0D3\uB0D5\uB0D6\uB0D7\uB0D9\",6,\"\uB0E1\uB0E2\uB0E3\uB0E4\uB0E6\",10],\n[\"8681\",\"\uB0F1\",22,\"\uB10A\uB10D\uB10E\uB10F\uB111\uB114\uB115\uB116\uB117\uB11A\uB11E\",4,\"\uB126\uB127\uB129\uB12A\uB12B\uB12D\",6,\"\uB136\uB13A\",5,\"\uB142\uB143\uB145\uB146\uB147\uB149\",6,\"\uB152\uB153\uB156\uB157\uB159\uB15A\uB15B\uB15D\uB15E\uB15F\uB161\",22,\"\uB17A\uB17B\uB17D\uB17E\uB17F\uB181\uB183\",4,\"\uB18A\uB18C\uB18E\uB18F\uB190\uB191\uB195\uB196\uB197\uB199\uB19A\uB19B\uB19D\"],\n[\"8741\",\"\uB19E\",9,\"\uB1A9\",15],\n[\"8761\",\"\uB1B9\",18,\"\uB1CD\uB1CE\uB1CF\uB1D1\uB1D2\uB1D3\uB1D5\"],\n[\"8781\",\"\uB1D6\",5,\"\uB1DE\uB1E0\",7,\"\uB1EA\uB1EB\uB1ED\uB1EE\uB1EF\uB1F1\",7,\"\uB1FA\uB1FC\uB1FE\",5,\"\uB206\uB207\uB209\uB20A\uB20D\",6,\"\uB216\uB218\uB21A\",5,\"\uB221\",18,\"\uB235\",6,\"\uB23D\",26,\"\uB259\uB25A\uB25B\uB25D\uB25E\uB25F\uB261\",6,\"\uB26A\",4],\n[\"8841\",\"\uB26F\",4,\"\uB276\",5,\"\uB27D\",6,\"\uB286\uB287\uB288\uB28A\",4],\n[\"8861\",\"\uB28F\uB292\uB293\uB295\uB296\uB297\uB29B\",4,\"\uB2A2\uB2A4\uB2A7\uB2A8\uB2A9\uB2AB\uB2AD\uB2AE\uB2AF\uB2B1\uB2B2\uB2B3\uB2B5\uB2B6\uB2B7\"],\n[\"8881\",\"\uB2B8\",15,\"\uB2CA\uB2CB\uB2CD\uB2CE\uB2CF\uB2D1\uB2D3\",4,\"\uB2DA\uB2DC\uB2DE\uB2DF\uB2E0\uB2E1\uB2E3\uB2E7\uB2E9\uB2EA\uB2F0\uB2F1\uB2F2\uB2F6\uB2FC\uB2FD\uB2FE\uB302\uB303\uB305\uB306\uB307\uB309\",6,\"\uB312\uB316\",5,\"\uB31D\",54,\"\uB357\uB359\uB35A\uB35D\uB360\uB361\uB362\uB363\"],\n[\"8941\",\"\uB366\uB368\uB36A\uB36C\uB36D\uB36F\uB372\uB373\uB375\uB376\uB377\uB379\",6,\"\uB382\uB386\",5,\"\uB38D\"],\n[\"8961\",\"\uB38E\uB38F\uB391\uB392\uB393\uB395\",10,\"\uB3A2\",5,\"\uB3A9\uB3AA\uB3AB\uB3AD\"],\n[\"8981\",\"\uB3AE\",21,\"\uB3C6\uB3C7\uB3C9\uB3CA\uB3CD\uB3CF\uB3D1\uB3D2\uB3D3\uB3D6\uB3D8\uB3DA\uB3DC\uB3DE\uB3DF\uB3E1\uB3E2\uB3E3\uB3E5\uB3E6\uB3E7\uB3E9\",18,\"\uB3FD\",18,\"\uB411\",6,\"\uB419\uB41A\uB41B\uB41D\uB41E\uB41F\uB421\",6,\"\uB42A\uB42C\",7,\"\uB435\",15],\n[\"8a41\",\"\uB445\",10,\"\uB452\uB453\uB455\uB456\uB457\uB459\",6,\"\uB462\uB464\uB466\"],\n[\"8a61\",\"\uB467\",4,\"\uB46D\",18,\"\uB481\uB482\"],\n[\"8a81\",\"\uB483\",4,\"\uB489\",19,\"\uB49E\",5,\"\uB4A5\uB4A6\uB4A7\uB4A9\uB4AA\uB4AB\uB4AD\",7,\"\uB4B6\uB4B8\uB4BA\",5,\"\uB4C1\uB4C2\uB4C3\uB4C5\uB4C6\uB4C7\uB4C9\",6,\"\uB4D1\uB4D2\uB4D3\uB4D4\uB4D6\",5,\"\uB4DE\uB4DF\uB4E1\uB4E2\uB4E5\uB4E7\",4,\"\uB4EE\uB4F0\uB4F2\",5,\"\uB4F9\",26,\"\uB516\uB517\uB519\uB51A\uB51D\"],\n[\"8b41\",\"\uB51E\",5,\"\uB526\uB52B\",4,\"\uB532\uB533\uB535\uB536\uB537\uB539\",6,\"\uB542\uB546\"],\n[\"8b61\",\"\uB547\uB548\uB549\uB54A\uB54E\uB54F\uB551\uB552\uB553\uB555\",6,\"\uB55E\uB562\",8],\n[\"8b81\",\"\uB56B\",52,\"\uB5A2\uB5A3\uB5A5\uB5A6\uB5A7\uB5A9\uB5AC\uB5AD\uB5AE\uB5AF\uB5B2\uB5B6\",4,\"\uB5BE\uB5BF\uB5C1\uB5C2\uB5C3\uB5C5\",6,\"\uB5CE\uB5D2\",5,\"\uB5D9\",18,\"\uB5ED\",18],\n[\"8c41\",\"\uB600\",15,\"\uB612\uB613\uB615\uB616\uB617\uB619\",4],\n[\"8c61\",\"\uB61E\",6,\"\uB626\",5,\"\uB62D\",6,\"\uB635\",5],\n[\"8c81\",\"\uB63B\",12,\"\uB649\",26,\"\uB665\uB666\uB667\uB669\",50,\"\uB69E\uB69F\uB6A1\uB6A2\uB6A3\uB6A5\",5,\"\uB6AD\uB6AE\uB6AF\uB6B0\uB6B2\",16],\n[\"8d41\",\"\uB6C3\",16,\"\uB6D5\",8],\n[\"8d61\",\"\uB6DE\",17,\"\uB6F1\uB6F2\uB6F3\uB6F5\uB6F6\uB6F7\uB6F9\uB6FA\"],\n[\"8d81\",\"\uB6FB\",4,\"\uB702\uB703\uB704\uB706\",33,\"\uB72A\uB72B\uB72D\uB72E\uB731\",6,\"\uB73A\uB73C\",7,\"\uB745\uB746\uB747\uB749\uB74A\uB74B\uB74D\",6,\"\uB756\",9,\"\uB761\uB762\uB763\uB765\uB766\uB767\uB769\",6,\"\uB772\uB774\uB776\",5,\"\uB77E\uB77F\uB781\uB782\uB783\uB785\",6,\"\uB78E\uB793\uB794\uB795\uB79A\uB79B\uB79D\uB79E\"],\n[\"8e41\",\"\uB79F\uB7A1\",6,\"\uB7AA\uB7AE\",5,\"\uB7B6\uB7B7\uB7B9\",8],\n[\"8e61\",\"\uB7C2\",4,\"\uB7C8\uB7CA\",19],\n[\"8e81\",\"\uB7DE\",13,\"\uB7EE\uB7EF\uB7F1\uB7F2\uB7F3\uB7F5\",6,\"\uB7FE\uB802\",4,\"\uB80A\uB80B\uB80D\uB80E\uB80F\uB811\",6,\"\uB81A\uB81C\uB81E\",5,\"\uB826\uB827\uB829\uB82A\uB82B\uB82D\",6,\"\uB836\uB83A\",5,\"\uB841\uB842\uB843\uB845\",11,\"\uB852\uB854\",7,\"\uB85E\uB85F\uB861\uB862\uB863\uB865\",6,\"\uB86E\uB870\uB872\",5,\"\uB879\uB87A\uB87B\uB87D\",7],\n[\"8f41\",\"\uB885\",7,\"\uB88E\",17],\n[\"8f61\",\"\uB8A0\",7,\"\uB8A9\",6,\"\uB8B1\uB8B2\uB8B3\uB8B5\uB8B6\uB8B7\uB8B9\",4],\n[\"8f81\",\"\uB8BE\uB8BF\uB8C2\uB8C4\uB8C6\",5,\"\uB8CD\uB8CE\uB8CF\uB8D1\uB8D2\uB8D3\uB8D5\",7,\"\uB8DE\uB8E0\uB8E2\",5,\"\uB8EA\uB8EB\uB8ED\uB8EE\uB8EF\uB8F1\",6,\"\uB8FA\uB8FC\uB8FE\",5,\"\uB905\",18,\"\uB919\",6,\"\uB921\",26,\"\uB93E\uB93F\uB941\uB942\uB943\uB945\",6,\"\uB94D\uB94E\uB950\uB952\",5],\n[\"9041\",\"\uB95A\uB95B\uB95D\uB95E\uB95F\uB961\",6,\"\uB96A\uB96C\uB96E\",5,\"\uB976\uB977\uB979\uB97A\uB97B\uB97D\"],\n[\"9061\",\"\uB97E\",5,\"\uB986\uB988\uB98B\uB98C\uB98F\",15],\n[\"9081\",\"\uB99F\",12,\"\uB9AE\uB9AF\uB9B1\uB9B2\uB9B3\uB9B5\",6,\"\uB9BE\uB9C0\uB9C2\",5,\"\uB9CA\uB9CB\uB9CD\uB9D3\",4,\"\uB9DA\uB9DC\uB9DF\uB9E0\uB9E2\uB9E6\uB9E7\uB9E9\uB9EA\uB9EB\uB9ED\",6,\"\uB9F6\uB9FB\",4,\"\uBA02\",5,\"\uBA09\",11,\"\uBA16\",33,\"\uBA3A\uBA3B\uBA3D\uBA3E\uBA3F\uBA41\uBA43\uBA44\uBA45\uBA46\"],\n[\"9141\",\"\uBA47\uBA4A\uBA4C\uBA4F\uBA50\uBA51\uBA52\uBA56\uBA57\uBA59\uBA5A\uBA5B\uBA5D\",6,\"\uBA66\uBA6A\",5],\n[\"9161\",\"\uBA72\uBA73\uBA75\uBA76\uBA77\uBA79\",9,\"\uBA86\uBA88\uBA89\uBA8A\uBA8B\uBA8D\",5],\n[\"9181\",\"\uBA93\",20,\"\uBAAA\uBAAD\uBAAE\uBAAF\uBAB1\uBAB3\",4,\"\uBABA\uBABC\uBABE\",5,\"\uBAC5\uBAC6\uBAC7\uBAC9\",14,\"\uBADA\",33,\"\uBAFD\uBAFE\uBAFF\uBB01\uBB02\uBB03\uBB05\",7,\"\uBB0E\uBB10\uBB12\",5,\"\uBB19\uBB1A\uBB1B\uBB1D\uBB1E\uBB1F\uBB21\",6],\n[\"9241\",\"\uBB28\uBB2A\uBB2C\",7,\"\uBB37\uBB39\uBB3A\uBB3F\",4,\"\uBB46\uBB48\uBB4A\uBB4B\uBB4C\uBB4E\uBB51\uBB52\"],\n[\"9261\",\"\uBB53\uBB55\uBB56\uBB57\uBB59\",7,\"\uBB62\uBB64\",7,\"\uBB6D\",4],\n[\"9281\",\"\uBB72\",21,\"\uBB89\uBB8A\uBB8B\uBB8D\uBB8E\uBB8F\uBB91\",18,\"\uBBA5\uBBA6\uBBA7\uBBA9\uBBAA\uBBAB\uBBAD\",6,\"\uBBB5\uBBB6\uBBB8\",7,\"\uBBC1\uBBC2\uBBC3\uBBC5\uBBC6\uBBC7\uBBC9\",6,\"\uBBD1\uBBD2\uBBD4\",35,\"\uBBFA\uBBFB\uBBFD\uBBFE\uBC01\"],\n[\"9341\",\"\uBC03\",4,\"\uBC0A\uBC0E\uBC10\uBC12\uBC13\uBC19\uBC1A\uBC20\uBC21\uBC22\uBC23\uBC26\uBC28\uBC2A\uBC2B\uBC2C\uBC2E\uBC2F\uBC32\uBC33\uBC35\"],\n[\"9361\",\"\uBC36\uBC37\uBC39\",6,\"\uBC42\uBC46\uBC47\uBC48\uBC4A\uBC4B\uBC4E\uBC4F\uBC51\",8],\n[\"9381\",\"\uBC5A\uBC5B\uBC5C\uBC5E\",37,\"\uBC86\uBC87\uBC89\uBC8A\uBC8D\uBC8F\",4,\"\uBC96\uBC98\uBC9B\",4,\"\uBCA2\uBCA3\uBCA5\uBCA6\uBCA9\",6,\"\uBCB2\uBCB6\",5,\"\uBCBE\uBCBF\uBCC1\uBCC2\uBCC3\uBCC5\",7,\"\uBCCE\uBCD2\uBCD3\uBCD4\uBCD6\uBCD7\uBCD9\uBCDA\uBCDB\uBCDD\",22,\"\uBCF7\uBCF9\uBCFA\uBCFB\uBCFD\"],\n[\"9441\",\"\uBCFE\",5,\"\uBD06\uBD08\uBD0A\",5,\"\uBD11\uBD12\uBD13\uBD15\",8],\n[\"9461\",\"\uBD1E\",5,\"\uBD25\",6,\"\uBD2D\",12],\n[\"9481\",\"\uBD3A\",5,\"\uBD41\",6,\"\uBD4A\uBD4B\uBD4D\uBD4E\uBD4F\uBD51\",6,\"\uBD5A\",9,\"\uBD65\uBD66\uBD67\uBD69\",22,\"\uBD82\uBD83\uBD85\uBD86\uBD8B\",4,\"\uBD92\uBD94\uBD96\uBD97\uBD98\uBD9B\uBD9D\",6,\"\uBDA5\",10,\"\uBDB1\",6,\"\uBDB9\",24],\n[\"9541\",\"\uBDD2\uBDD3\uBDD6\uBDD7\uBDD9\uBDDA\uBDDB\uBDDD\",11,\"\uBDEA\",5,\"\uBDF1\"],\n[\"9561\",\"\uBDF2\uBDF3\uBDF5\uBDF6\uBDF7\uBDF9\",6,\"\uBE01\uBE02\uBE04\uBE06\",5,\"\uBE0E\uBE0F\uBE11\uBE12\uBE13\"],\n[\"9581\",\"\uBE15\",6,\"\uBE1E\uBE20\",35,\"\uBE46\uBE47\uBE49\uBE4A\uBE4B\uBE4D\uBE4F\",4,\"\uBE56\uBE58\uBE5C\uBE5D\uBE5E\uBE5F\uBE62\uBE63\uBE65\uBE66\uBE67\uBE69\uBE6B\",4,\"\uBE72\uBE76\",4,\"\uBE7E\uBE7F\uBE81\uBE82\uBE83\uBE85\",6,\"\uBE8E\uBE92\",5,\"\uBE9A\",13,\"\uBEA9\",14],\n[\"9641\",\"\uBEB8\",23,\"\uBED2\uBED3\"],\n[\"9661\",\"\uBED5\uBED6\uBED9\",6,\"\uBEE1\uBEE2\uBEE6\",5,\"\uBEED\",8],\n[\"9681\",\"\uBEF6\",10,\"\uBF02\",5,\"\uBF0A\",13,\"\uBF1A\uBF1E\",33,\"\uBF42\uBF43\uBF45\uBF46\uBF47\uBF49\",6,\"\uBF52\uBF53\uBF54\uBF56\",44],\n[\"9741\",\"\uBF83\",16,\"\uBF95\",8],\n[\"9761\",\"\uBF9E\",17,\"\uBFB1\",7],\n[\"9781\",\"\uBFB9\",11,\"\uBFC6\",5,\"\uBFCE\uBFCF\uBFD1\uBFD2\uBFD3\uBFD5\",6,\"\uBFDD\uBFDE\uBFE0\uBFE2\",89,\"\uC03D\uC03E\uC03F\"],\n[\"9841\",\"\uC040\",16,\"\uC052\",5,\"\uC059\uC05A\uC05B\"],\n[\"9861\",\"\uC05D\uC05E\uC05F\uC061\",6,\"\uC06A\",15],\n[\"9881\",\"\uC07A\",21,\"\uC092\uC093\uC095\uC096\uC097\uC099\",6,\"\uC0A2\uC0A4\uC0A6\",5,\"\uC0AE\uC0B1\uC0B2\uC0B7\",4,\"\uC0BE\uC0C2\uC0C3\uC0C4\uC0C6\uC0C7\uC0CA\uC0CB\uC0CD\uC0CE\uC0CF\uC0D1\",6,\"\uC0DA\uC0DE\",5,\"\uC0E6\uC0E7\uC0E9\uC0EA\uC0EB\uC0ED\",6,\"\uC0F6\uC0F8\uC0FA\",5,\"\uC101\uC102\uC103\uC105\uC106\uC107\uC109\",6,\"\uC111\uC112\uC113\uC114\uC116\",5,\"\uC121\uC122\uC125\uC128\uC129\uC12A\uC12B\uC12E\"],\n[\"9941\",\"\uC132\uC133\uC134\uC135\uC137\uC13A\uC13B\uC13D\uC13E\uC13F\uC141\",6,\"\uC14A\uC14E\",5,\"\uC156\uC157\"],\n[\"9961\",\"\uC159\uC15A\uC15B\uC15D\",6,\"\uC166\uC16A\",5,\"\uC171\uC172\uC173\uC175\uC176\uC177\uC179\uC17A\uC17B\"],\n[\"9981\",\"\uC17C\",8,\"\uC186\",5,\"\uC18F\uC191\uC192\uC193\uC195\uC197\",4,\"\uC19E\uC1A0\uC1A2\uC1A3\uC1A4\uC1A6\uC1A7\uC1AA\uC1AB\uC1AD\uC1AE\uC1AF\uC1B1\",11,\"\uC1BE\",5,\"\uC1C5\uC1C6\uC1C7\uC1C9\uC1CA\uC1CB\uC1CD\",6,\"\uC1D5\uC1D6\uC1D9\",6,\"\uC1E1\uC1E2\uC1E3\uC1E5\uC1E6\uC1E7\uC1E9\",6,\"\uC1F2\uC1F4\",7,\"\uC1FE\uC1FF\uC201\uC202\uC203\uC205\",6,\"\uC20E\uC210\uC212\",5,\"\uC21A\uC21B\uC21D\uC21E\uC221\uC222\uC223\"],\n[\"9a41\",\"\uC224\uC225\uC226\uC227\uC22A\uC22C\uC22E\uC230\uC233\uC235\",16],\n[\"9a61\",\"\uC246\uC247\uC249\",6,\"\uC252\uC253\uC255\uC256\uC257\uC259\",6,\"\uC261\uC262\uC263\uC264\uC266\"],\n[\"9a81\",\"\uC267\",4,\"\uC26E\uC26F\uC271\uC272\uC273\uC275\",6,\"\uC27E\uC280\uC282\",5,\"\uC28A\",5,\"\uC291\",6,\"\uC299\uC29A\uC29C\uC29E\",5,\"\uC2A6\uC2A7\uC2A9\uC2AA\uC2AB\uC2AE\",5,\"\uC2B6\uC2B8\uC2BA\",33,\"\uC2DE\uC2DF\uC2E1\uC2E2\uC2E5\",5,\"\uC2EE\uC2F0\uC2F2\uC2F3\uC2F4\uC2F5\uC2F7\uC2FA\uC2FD\uC2FE\uC2FF\uC301\",6,\"\uC30A\uC30B\uC30E\uC30F\"],\n[\"9b41\",\"\uC310\uC311\uC312\uC316\uC317\uC319\uC31A\uC31B\uC31D\",6,\"\uC326\uC327\uC32A\",8],\n[\"9b61\",\"\uC333\",17,\"\uC346\",7],\n[\"9b81\",\"\uC34E\",25,\"\uC36A\uC36B\uC36D\uC36E\uC36F\uC371\uC373\",4,\"\uC37A\uC37B\uC37E\",5,\"\uC385\uC386\uC387\uC389\uC38A\uC38B\uC38D\",50,\"\uC3C1\",22,\"\uC3DA\"],\n[\"9c41\",\"\uC3DB\uC3DD\uC3DE\uC3E1\uC3E3\",4,\"\uC3EA\uC3EB\uC3EC\uC3EE\",5,\"\uC3F6\uC3F7\uC3F9\",5],\n[\"9c61\",\"\uC3FF\",8,\"\uC409\",6,\"\uC411\",9],\n[\"9c81\",\"\uC41B\",8,\"\uC425\",6,\"\uC42D\uC42E\uC42F\uC431\uC432\uC433\uC435\",6,\"\uC43E\",9,\"\uC449\",26,\"\uC466\uC467\uC469\uC46A\uC46B\uC46D\",6,\"\uC476\uC477\uC478\uC47A\",5,\"\uC481\",18,\"\uC495\",6,\"\uC49D\",12],\n[\"9d41\",\"\uC4AA\",13,\"\uC4B9\uC4BA\uC4BB\uC4BD\",8],\n[\"9d61\",\"\uC4C6\",25],\n[\"9d81\",\"\uC4E0\",8,\"\uC4EA\",5,\"\uC4F2\uC4F3\uC4F5\uC4F6\uC4F7\uC4F9\uC4FB\uC4FC\uC4FD\uC4FE\uC502\",9,\"\uC50D\uC50E\uC50F\uC511\uC512\uC513\uC515\",6,\"\uC51D\",10,\"\uC52A\uC52B\uC52D\uC52E\uC52F\uC531\",6,\"\uC53A\uC53C\uC53E\",5,\"\uC546\uC547\uC54B\uC54F\uC550\uC551\uC552\uC556\uC55A\uC55B\uC55C\uC55F\uC562\uC563\uC565\uC566\uC567\uC569\",6,\"\uC572\uC576\",5,\"\uC57E\uC57F\uC581\uC582\uC583\uC585\uC586\uC588\uC589\uC58A\uC58B\uC58E\uC590\uC592\uC593\uC594\"],\n[\"9e41\",\"\uC596\uC599\uC59A\uC59B\uC59D\uC59E\uC59F\uC5A1\",7,\"\uC5AA\",9,\"\uC5B6\"],\n[\"9e61\",\"\uC5B7\uC5BA\uC5BF\",4,\"\uC5CB\uC5CD\uC5CF\uC5D2\uC5D3\uC5D5\uC5D6\uC5D7\uC5D9\",6,\"\uC5E2\uC5E4\uC5E6\uC5E7\"],\n[\"9e81\",\"\uC5E8\uC5E9\uC5EA\uC5EB\uC5EF\uC5F1\uC5F2\uC5F3\uC5F5\uC5F8\uC5F9\uC5FA\uC5FB\uC602\uC603\uC604\uC609\uC60A\uC60B\uC60D\uC60E\uC60F\uC611\",6,\"\uC61A\uC61D\",6,\"\uC626\uC627\uC629\uC62A\uC62B\uC62F\uC631\uC632\uC636\uC638\uC63A\uC63C\uC63D\uC63E\uC63F\uC642\uC643\uC645\uC646\uC647\uC649\",6,\"\uC652\uC656\",5,\"\uC65E\uC65F\uC661\",10,\"\uC66D\uC66E\uC670\uC672\",5,\"\uC67A\uC67B\uC67D\uC67E\uC67F\uC681\",6,\"\uC68A\uC68C\uC68E\",5,\"\uC696\uC697\uC699\uC69A\uC69B\uC69D\",6,\"\uC6A6\"],\n[\"9f41\",\"\uC6A8\uC6AA\",5,\"\uC6B2\uC6B3\uC6B5\uC6B6\uC6B7\uC6BB\",4,\"\uC6C2\uC6C4\uC6C6\",5,\"\uC6CE\"],\n[\"9f61\",\"\uC6CF\uC6D1\uC6D2\uC6D3\uC6D5\",6,\"\uC6DE\uC6DF\uC6E2\",5,\"\uC6EA\uC6EB\uC6ED\uC6EE\uC6EF\uC6F1\uC6F2\"],\n[\"9f81\",\"\uC6F3\",4,\"\uC6FA\uC6FB\uC6FC\uC6FE\",5,\"\uC706\uC707\uC709\uC70A\uC70B\uC70D\",6,\"\uC716\uC718\uC71A\",5,\"\uC722\uC723\uC725\uC726\uC727\uC729\",6,\"\uC732\uC734\uC736\uC738\uC739\uC73A\uC73B\uC73E\uC73F\uC741\uC742\uC743\uC745\",4,\"\uC74B\uC74E\uC750\uC759\uC75A\uC75B\uC75D\uC75E\uC75F\uC761\",6,\"\uC769\uC76A\uC76C\",7,\"\uC776\uC777\uC779\uC77A\uC77B\uC77F\uC780\uC781\uC782\uC786\uC78B\uC78C\uC78D\uC78F\uC792\uC793\uC795\uC799\uC79B\",4,\"\uC7A2\uC7A7\",4,\"\uC7AE\uC7AF\uC7B1\uC7B2\uC7B3\uC7B5\uC7B6\uC7B7\"],\n[\"a041\",\"\uC7B8\uC7B9\uC7BA\uC7BB\uC7BE\uC7C2\",5,\"\uC7CA\uC7CB\uC7CD\uC7CF\uC7D1\",6,\"\uC7D9\uC7DA\uC7DB\uC7DC\"],\n[\"a061\",\"\uC7DE\",5,\"\uC7E5\uC7E6\uC7E7\uC7E9\uC7EA\uC7EB\uC7ED\",13],\n[\"a081\",\"\uC7FB\",4,\"\uC802\uC803\uC805\uC806\uC807\uC809\uC80B\",4,\"\uC812\uC814\uC817\",4,\"\uC81E\uC81F\uC821\uC822\uC823\uC825\",6,\"\uC82E\uC830\uC832\",5,\"\uC839\uC83A\uC83B\uC83D\uC83E\uC83F\uC841\",6,\"\uC84A\uC84B\uC84E\",5,\"\uC855\",26,\"\uC872\uC873\uC875\uC876\uC877\uC879\uC87B\",4,\"\uC882\uC884\uC888\uC889\uC88A\uC88E\",5,\"\uC895\",7,\"\uC89E\uC8A0\uC8A2\uC8A3\uC8A4\"],\n[\"a141\",\"\uC8A5\uC8A6\uC8A7\uC8A9\",18,\"\uC8BE\uC8BF\uC8C0\uC8C1\"],\n[\"a161\",\"\uC8C2\uC8C3\uC8C5\uC8C6\uC8C7\uC8C9\uC8CA\uC8CB\uC8CD\",6,\"\uC8D6\uC8D8\uC8DA\",5,\"\uC8E2\uC8E3\uC8E5\"],\n[\"a181\",\"\uC8E6\",14,\"\uC8F6\",5,\"\uC8FE\uC8FF\uC901\uC902\uC903\uC907\",4,\"\uC90E\u3000\u3001\u3002\u00B7\u2025\u2026\u00A8\u3003\u00AD\u2015\u2225\uFF3C\u223C\u2018\u2019\u201C\u201D\u3014\u3015\u3008\",9,\"\u00B1\u00D7\u00F7\u2260\u2264\u2265\u221E\u2234\u00B0\u2032\u2033\u2103\u212B\uFFE0\uFFE1\uFFE5\u2642\u2640\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u00A7\u203B\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u2192\u2190\u2191\u2193\u2194\u3013\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\u2227\u2228\uFFE2\"],\n[\"a241\",\"\uC910\uC912\",5,\"\uC919\",18],\n[\"a261\",\"\uC92D\",6,\"\uC935\",18],\n[\"a281\",\"\uC948\",7,\"\uC952\uC953\uC955\uC956\uC957\uC959\",6,\"\uC962\uC964\",7,\"\uC96D\uC96E\uC96F\u21D2\u21D4\u2200\u2203\u00B4\uFF5E\u02C7\u02D8\u02DD\u02DA\u02D9\u00B8\u02DB\u00A1\u00BF\u02D0\u222E\u2211\u220F\u00A4\u2109\u2030\u25C1\u25C0\u25B7\u25B6\u2664\u2660\u2661\u2665\u2667\u2663\u2299\u25C8\u25A3\u25D0\u25D1\u2592\u25A4\u25A5\u25A8\u25A7\u25A6\u25A9\u2668\u260F\u260E\u261C\u261E\u00B6\u2020\u2021\u2195\u2197\u2199\u2196\u2198\u266D\u2669\u266A\u266C\u327F\u321C\u2116\u33C7\u2122\u33C2\u33D8\u2121\u20AC\u00AE\"],\n[\"a341\",\"\uC971\uC972\uC973\uC975\",6,\"\uC97D\",10,\"\uC98A\uC98B\uC98D\uC98E\uC98F\"],\n[\"a361\",\"\uC991\",6,\"\uC99A\uC99C\uC99E\",16],\n[\"a381\",\"\uC9AF\",16,\"\uC9C2\uC9C3\uC9C5\uC9C6\uC9C9\uC9CB\",4,\"\uC9D2\uC9D4\uC9D7\uC9D8\uC9DB\uFF01\",58,\"\uFFE6\uFF3D\",32,\"\uFFE3\"],\n[\"a441\",\"\uC9DE\uC9DF\uC9E1\uC9E3\uC9E5\uC9E6\uC9E8\uC9E9\uC9EA\uC9EB\uC9EE\uC9F2\",5,\"\uC9FA\uC9FB\uC9FD\uC9FE\uC9FF\uCA01\uCA02\uCA03\uCA04\"],\n[\"a461\",\"\uCA05\uCA06\uCA07\uCA0A\uCA0E\",5,\"\uCA15\uCA16\uCA17\uCA19\",12],\n[\"a481\",\"\uCA26\uCA27\uCA28\uCA2A\",28,\"\u3131\",93],\n[\"a541\",\"\uCA47\",4,\"\uCA4E\uCA4F\uCA51\uCA52\uCA53\uCA55\",6,\"\uCA5E\uCA62\",5,\"\uCA69\uCA6A\"],\n[\"a561\",\"\uCA6B\",17,\"\uCA7E\",5,\"\uCA85\uCA86\"],\n[\"a581\",\"\uCA87\",16,\"\uCA99\",14,\"\u2170\",9],\n[\"a5b0\",\"\u2160\",9],\n[\"a5c1\",\"\u0391\",16,\"\u03A3\",6],\n[\"a5e1\",\"\u03B1\",16,\"\u03C3\",6],\n[\"a641\",\"\uCAA8\",19,\"\uCABE\uCABF\uCAC1\uCAC2\uCAC3\uCAC5\"],\n[\"a661\",\"\uCAC6\",5,\"\uCACE\uCAD0\uCAD2\uCAD4\uCAD5\uCAD6\uCAD7\uCADA\",5,\"\uCAE1\",6],\n[\"a681\",\"\uCAE8\uCAE9\uCAEA\uCAEB\uCAED\",6,\"\uCAF5\",18,\"\uCB09\uCB0A\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\u2512\u2511\u251A\u2519\u2516\u2515\u250E\u250D\u251E\u251F\u2521\u2522\u2526\u2527\u2529\u252A\u252D\u252E\u2531\u2532\u2535\u2536\u2539\u253A\u253D\u253E\u2540\u2541\u2543\",7],\n[\"a741\",\"\uCB0B\",4,\"\uCB11\uCB12\uCB13\uCB15\uCB16\uCB17\uCB19\",6,\"\uCB22\",7],\n[\"a761\",\"\uCB2A\",22,\"\uCB42\uCB43\uCB44\"],\n[\"a781\",\"\uCB45\uCB46\uCB47\uCB4A\uCB4B\uCB4D\uCB4E\uCB4F\uCB51\",6,\"\uCB5A\uCB5B\uCB5C\uCB5E\",5,\"\uCB65\",7,\"\u3395\u3396\u3397\u2113\u3398\u33C4\u33A3\u33A4\u33A5\u33A6\u3399\",9,\"\u33CA\u338D\u338E\u338F\u33CF\u3388\u3389\u33C8\u33A7\u33A8\u33B0\",9,\"\u3380\",4,\"\u33BA\",5,\"\u3390\",4,\"\u2126\u33C0\u33C1\u338A\u338B\u338C\u33D6\u33C5\u33AD\u33AE\u33AF\u33DB\u33A9\u33AA\u33AB\u33AC\u33DD\u33D0\u33D3\u33C3\u33C9\u33DC\u33C6\"],\n[\"a841\",\"\uCB6D\",10,\"\uCB7A\",14],\n[\"a861\",\"\uCB89\",18,\"\uCB9D\",6],\n[\"a881\",\"\uCBA4\",19,\"\uCBB9\",11,\"\u00C6\u00D0\u00AA\u0126\"],\n[\"a8a6\",\"\u0132\"],\n[\"a8a8\",\"\u013F\u0141\u00D8\u0152\u00BA\u00DE\u0166\u014A\"],\n[\"a8b1\",\"\u3260\",27,\"\u24D0\",25,\"\u2460\",14,\"\u00BD\u2153\u2154\u00BC\u00BE\u215B\u215C\u215D\u215E\"],\n[\"a941\",\"\uCBC5\",14,\"\uCBD5\",10],\n[\"a961\",\"\uCBE0\uCBE1\uCBE2\uCBE3\uCBE5\uCBE6\uCBE8\uCBEA\",18],\n[\"a981\",\"\uCBFD\",14,\"\uCC0E\uCC0F\uCC11\uCC12\uCC13\uCC15\",6,\"\uCC1E\uCC1F\uCC20\uCC23\uCC24\u00E6\u0111\u00F0\u0127\u0131\u0133\u0138\u0140\u0142\u00F8\u0153\u00DF\u00FE\u0167\u014B\u0149\u3200\",27,\"\u249C\",25,\"\u2474\",14,\"\u00B9\u00B2\u00B3\u2074\u207F\u2081\u2082\u2083\u2084\"],\n[\"aa41\",\"\uCC25\uCC26\uCC2A\uCC2B\uCC2D\uCC2F\uCC31\",6,\"\uCC3A\uCC3F\",4,\"\uCC46\uCC47\uCC49\uCC4A\uCC4B\uCC4D\uCC4E\"],\n[\"aa61\",\"\uCC4F\",4,\"\uCC56\uCC5A\",5,\"\uCC61\uCC62\uCC63\uCC65\uCC67\uCC69\",6,\"\uCC71\uCC72\"],\n[\"aa81\",\"\uCC73\uCC74\uCC76\",29,\"\u3041\",82],\n[\"ab41\",\"\uCC94\uCC95\uCC96\uCC97\uCC9A\uCC9B\uCC9D\uCC9E\uCC9F\uCCA1\",6,\"\uCCAA\uCCAE\",5,\"\uCCB6\uCCB7\uCCB9\"],\n[\"ab61\",\"\uCCBA\uCCBB\uCCBD\",6,\"\uCCC6\uCCC8\uCCCA\",5,\"\uCCD1\uCCD2\uCCD3\uCCD5\",5],\n[\"ab81\",\"\uCCDB\",8,\"\uCCE5\",6,\"\uCCED\uCCEE\uCCEF\uCCF1\",12,\"\u30A1\",85],\n[\"ac41\",\"\uCCFE\uCCFF\uCD00\uCD02\",5,\"\uCD0A\uCD0B\uCD0D\uCD0E\uCD0F\uCD11\",6,\"\uCD1A\uCD1C\uCD1E\uCD1F\uCD20\"],\n[\"ac61\",\"\uCD21\uCD22\uCD23\uCD25\uCD26\uCD27\uCD29\uCD2A\uCD2B\uCD2D\",11,\"\uCD3A\",4],\n[\"ac81\",\"\uCD3F\",28,\"\uCD5D\uCD5E\uCD5F\u0410\",5,\"\u0401\u0416\",25],\n[\"acd1\",\"\u0430\",5,\"\u0451\u0436\",25],\n[\"ad41\",\"\uCD61\uCD62\uCD63\uCD65\",6,\"\uCD6E\uCD70\uCD72\",5,\"\uCD79\",7],\n[\"ad61\",\"\uCD81\",6,\"\uCD89\",10,\"\uCD96\uCD97\uCD99\uCD9A\uCD9B\uCD9D\uCD9E\uCD9F\"],\n[\"ad81\",\"\uCDA0\uCDA1\uCDA2\uCDA3\uCDA6\uCDA8\uCDAA\",5,\"\uCDB1\",18,\"\uCDC5\"],\n[\"ae41\",\"\uCDC6\",5,\"\uCDCD\uCDCE\uCDCF\uCDD1\",16],\n[\"ae61\",\"\uCDE2\",5,\"\uCDE9\uCDEA\uCDEB\uCDED\uCDEE\uCDEF\uCDF1\",6,\"\uCDFA\uCDFC\uCDFE\",4],\n[\"ae81\",\"\uCE03\uCE05\uCE06\uCE07\uCE09\uCE0A\uCE0B\uCE0D\",6,\"\uCE15\uCE16\uCE17\uCE18\uCE1A\",5,\"\uCE22\uCE23\uCE25\uCE26\uCE27\uCE29\uCE2A\uCE2B\"],\n[\"af41\",\"\uCE2C\uCE2D\uCE2E\uCE2F\uCE32\uCE34\uCE36\",19],\n[\"af61\",\"\uCE4A\",13,\"\uCE5A\uCE5B\uCE5D\uCE5E\uCE62\",5,\"\uCE6A\uCE6C\"],\n[\"af81\",\"\uCE6E\",5,\"\uCE76\uCE77\uCE79\uCE7A\uCE7B\uCE7D\",6,\"\uCE86\uCE88\uCE8A\",5,\"\uCE92\uCE93\uCE95\uCE96\uCE97\uCE99\"],\n[\"b041\",\"\uCE9A\",5,\"\uCEA2\uCEA6\",5,\"\uCEAE\",12],\n[\"b061\",\"\uCEBB\",5,\"\uCEC2\",19],\n[\"b081\",\"\uCED6\",13,\"\uCEE6\uCEE7\uCEE9\uCEEA\uCEED\",6,\"\uCEF6\uCEFA\",5,\"\uAC00\uAC01\uAC04\uAC07\uAC08\uAC09\uAC0A\uAC10\",7,\"\uAC19\",4,\"\uAC20\uAC24\uAC2C\uAC2D\uAC2F\uAC30\uAC31\uAC38\uAC39\uAC3C\uAC40\uAC4B\uAC4D\uAC54\uAC58\uAC5C\uAC70\uAC71\uAC74\uAC77\uAC78\uAC7A\uAC80\uAC81\uAC83\uAC84\uAC85\uAC86\uAC89\uAC8A\uAC8B\uAC8C\uAC90\uAC94\uAC9C\uAC9D\uAC9F\uACA0\uACA1\uACA8\uACA9\uACAA\uACAC\uACAF\uACB0\uACB8\uACB9\uACBB\uACBC\uACBD\uACC1\uACC4\uACC8\uACCC\uACD5\uACD7\uACE0\uACE1\uACE4\uACE7\uACE8\uACEA\uACEC\uACEF\uACF0\uACF1\uACF3\uACF5\uACF6\uACFC\uACFD\uAD00\uAD04\uAD06\"],\n[\"b141\",\"\uCF02\uCF03\uCF05\uCF06\uCF07\uCF09\",6,\"\uCF12\uCF14\uCF16\",5,\"\uCF1D\uCF1E\uCF1F\uCF21\uCF22\uCF23\"],\n[\"b161\",\"\uCF25\",6,\"\uCF2E\uCF32\",5,\"\uCF39\",11],\n[\"b181\",\"\uCF45\",14,\"\uCF56\uCF57\uCF59\uCF5A\uCF5B\uCF5D\",6,\"\uCF66\uCF68\uCF6A\uCF6B\uCF6C\uAD0C\uAD0D\uAD0F\uAD11\uAD18\uAD1C\uAD20\uAD29\uAD2C\uAD2D\uAD34\uAD35\uAD38\uAD3C\uAD44\uAD45\uAD47\uAD49\uAD50\uAD54\uAD58\uAD61\uAD63\uAD6C\uAD6D\uAD70\uAD73\uAD74\uAD75\uAD76\uAD7B\uAD7C\uAD7D\uAD7F\uAD81\uAD82\uAD88\uAD89\uAD8C\uAD90\uAD9C\uAD9D\uADA4\uADB7\uADC0\uADC1\uADC4\uADC8\uADD0\uADD1\uADD3\uADDC\uADE0\uADE4\uADF8\uADF9\uADFC\uADFF\uAE00\uAE01\uAE08\uAE09\uAE0B\uAE0D\uAE14\uAE30\uAE31\uAE34\uAE37\uAE38\uAE3A\uAE40\uAE41\uAE43\uAE45\uAE46\uAE4A\uAE4C\uAE4D\uAE4E\uAE50\uAE54\uAE56\uAE5C\uAE5D\uAE5F\uAE60\uAE61\uAE65\uAE68\uAE69\uAE6C\uAE70\uAE78\"],\n[\"b241\",\"\uCF6D\uCF6E\uCF6F\uCF72\uCF73\uCF75\uCF76\uCF77\uCF79\",6,\"\uCF81\uCF82\uCF83\uCF84\uCF86\",5,\"\uCF8D\"],\n[\"b261\",\"\uCF8E\",18,\"\uCFA2\",5,\"\uCFA9\"],\n[\"b281\",\"\uCFAA\",5,\"\uCFB1\",18,\"\uCFC5\",6,\"\uAE79\uAE7B\uAE7C\uAE7D\uAE84\uAE85\uAE8C\uAEBC\uAEBD\uAEBE\uAEC0\uAEC4\uAECC\uAECD\uAECF\uAED0\uAED1\uAED8\uAED9\uAEDC\uAEE8\uAEEB\uAEED\uAEF4\uAEF8\uAEFC\uAF07\uAF08\uAF0D\uAF10\uAF2C\uAF2D\uAF30\uAF32\uAF34\uAF3C\uAF3D\uAF3F\uAF41\uAF42\uAF43\uAF48\uAF49\uAF50\uAF5C\uAF5D\uAF64\uAF65\uAF79\uAF80\uAF84\uAF88\uAF90\uAF91\uAF95\uAF9C\uAFB8\uAFB9\uAFBC\uAFC0\uAFC7\uAFC8\uAFC9\uAFCB\uAFCD\uAFCE\uAFD4\uAFDC\uAFE8\uAFE9\uAFF0\uAFF1\uAFF4\uAFF8\uB000\uB001\uB004\uB00C\uB010\uB014\uB01C\uB01D\uB028\uB044\uB045\uB048\uB04A\uB04C\uB04E\uB053\uB054\uB055\uB057\uB059\"],\n[\"b341\",\"\uCFCC\",19,\"\uCFE2\uCFE3\uCFE5\uCFE6\uCFE7\uCFE9\"],\n[\"b361\",\"\uCFEA\",5,\"\uCFF2\uCFF4\uCFF6\",5,\"\uCFFD\uCFFE\uCFFF\uD001\uD002\uD003\uD005\",5],\n[\"b381\",\"\uD00B\",5,\"\uD012\",5,\"\uD019\",19,\"\uB05D\uB07C\uB07D\uB080\uB084\uB08C\uB08D\uB08F\uB091\uB098\uB099\uB09A\uB09C\uB09F\uB0A0\uB0A1\uB0A2\uB0A8\uB0A9\uB0AB\",4,\"\uB0B1\uB0B3\uB0B4\uB0B5\uB0B8\uB0BC\uB0C4\uB0C5\uB0C7\uB0C8\uB0C9\uB0D0\uB0D1\uB0D4\uB0D8\uB0E0\uB0E5\uB108\uB109\uB10B\uB10C\uB110\uB112\uB113\uB118\uB119\uB11B\uB11C\uB11D\uB123\uB124\uB125\uB128\uB12C\uB134\uB135\uB137\uB138\uB139\uB140\uB141\uB144\uB148\uB150\uB151\uB154\uB155\uB158\uB15C\uB160\uB178\uB179\uB17C\uB180\uB182\uB188\uB189\uB18B\uB18D\uB192\uB193\uB194\uB198\uB19C\uB1A8\uB1CC\uB1D0\uB1D4\uB1DC\uB1DD\"],\n[\"b441\",\"\uD02E\",5,\"\uD036\uD037\uD039\uD03A\uD03B\uD03D\",6,\"\uD046\uD048\uD04A\",5],\n[\"b461\",\"\uD051\uD052\uD053\uD055\uD056\uD057\uD059\",6,\"\uD061\",10,\"\uD06E\uD06F\"],\n[\"b481\",\"\uD071\uD072\uD073\uD075\",6,\"\uD07E\uD07F\uD080\uD082\",18,\"\uB1DF\uB1E8\uB1E9\uB1EC\uB1F0\uB1F9\uB1FB\uB1FD\uB204\uB205\uB208\uB20B\uB20C\uB214\uB215\uB217\uB219\uB220\uB234\uB23C\uB258\uB25C\uB260\uB268\uB269\uB274\uB275\uB27C\uB284\uB285\uB289\uB290\uB291\uB294\uB298\uB299\uB29A\uB2A0\uB2A1\uB2A3\uB2A5\uB2A6\uB2AA\uB2AC\uB2B0\uB2B4\uB2C8\uB2C9\uB2CC\uB2D0\uB2D2\uB2D8\uB2D9\uB2DB\uB2DD\uB2E2\uB2E4\uB2E5\uB2E6\uB2E8\uB2EB\",4,\"\uB2F3\uB2F4\uB2F5\uB2F7\",4,\"\uB2FF\uB300\uB301\uB304\uB308\uB310\uB311\uB313\uB314\uB315\uB31C\uB354\uB355\uB356\uB358\uB35B\uB35C\uB35E\uB35F\uB364\uB365\"],\n[\"b541\",\"\uD095\",14,\"\uD0A6\uD0A7\uD0A9\uD0AA\uD0AB\uD0AD\",5],\n[\"b561\",\"\uD0B3\uD0B6\uD0B8\uD0BA\",5,\"\uD0C2\uD0C3\uD0C5\uD0C6\uD0C7\uD0CA\",5,\"\uD0D2\uD0D6\",4],\n[\"b581\",\"\uD0DB\uD0DE\uD0DF\uD0E1\uD0E2\uD0E3\uD0E5\",6,\"\uD0EE\uD0F2\",5,\"\uD0F9\",11,\"\uB367\uB369\uB36B\uB36E\uB370\uB371\uB374\uB378\uB380\uB381\uB383\uB384\uB385\uB38C\uB390\uB394\uB3A0\uB3A1\uB3A8\uB3AC\uB3C4\uB3C5\uB3C8\uB3CB\uB3CC\uB3CE\uB3D0\uB3D4\uB3D5\uB3D7\uB3D9\uB3DB\uB3DD\uB3E0\uB3E4\uB3E8\uB3FC\uB410\uB418\uB41C\uB420\uB428\uB429\uB42B\uB434\uB450\uB451\uB454\uB458\uB460\uB461\uB463\uB465\uB46C\uB480\uB488\uB49D\uB4A4\uB4A8\uB4AC\uB4B5\uB4B7\uB4B9\uB4C0\uB4C4\uB4C8\uB4D0\uB4D5\uB4DC\uB4DD\uB4E0\uB4E3\uB4E4\uB4E6\uB4EC\uB4ED\uB4EF\uB4F1\uB4F8\uB514\uB515\uB518\uB51B\uB51C\uB524\uB525\uB527\uB528\uB529\uB52A\uB530\uB531\uB534\uB538\"],\n[\"b641\",\"\uD105\",7,\"\uD10E\",17],\n[\"b661\",\"\uD120\",15,\"\uD132\uD133\uD135\uD136\uD137\uD139\uD13B\uD13C\uD13D\uD13E\"],\n[\"b681\",\"\uD13F\uD142\uD146\",5,\"\uD14E\uD14F\uD151\uD152\uD153\uD155\",6,\"\uD15E\uD160\uD162\",5,\"\uD169\uD16A\uD16B\uD16D\uB540\uB541\uB543\uB544\uB545\uB54B\uB54C\uB54D\uB550\uB554\uB55C\uB55D\uB55F\uB560\uB561\uB5A0\uB5A1\uB5A4\uB5A8\uB5AA\uB5AB\uB5B0\uB5B1\uB5B3\uB5B4\uB5B5\uB5BB\uB5BC\uB5BD\uB5C0\uB5C4\uB5CC\uB5CD\uB5CF\uB5D0\uB5D1\uB5D8\uB5EC\uB610\uB611\uB614\uB618\uB625\uB62C\uB634\uB648\uB664\uB668\uB69C\uB69D\uB6A0\uB6A4\uB6AB\uB6AC\uB6B1\uB6D4\uB6F0\uB6F4\uB6F8\uB700\uB701\uB705\uB728\uB729\uB72C\uB72F\uB730\uB738\uB739\uB73B\uB744\uB748\uB74C\uB754\uB755\uB760\uB764\uB768\uB770\uB771\uB773\uB775\uB77C\uB77D\uB780\uB784\uB78C\uB78D\uB78F\uB790\uB791\uB792\uB796\uB797\"],\n[\"b741\",\"\uD16E\",13,\"\uD17D\",6,\"\uD185\uD186\uD187\uD189\uD18A\"],\n[\"b761\",\"\uD18B\",20,\"\uD1A2\uD1A3\uD1A5\uD1A6\uD1A7\"],\n[\"b781\",\"\uD1A9\",6,\"\uD1B2\uD1B4\uD1B6\uD1B7\uD1B8\uD1B9\uD1BB\uD1BD\uD1BE\uD1BF\uD1C1\",14,\"\uB798\uB799\uB79C\uB7A0\uB7A8\uB7A9\uB7AB\uB7AC\uB7AD\uB7B4\uB7B5\uB7B8\uB7C7\uB7C9\uB7EC\uB7ED\uB7F0\uB7F4\uB7FC\uB7FD\uB7FF\uB800\uB801\uB807\uB808\uB809\uB80C\uB810\uB818\uB819\uB81B\uB81D\uB824\uB825\uB828\uB82C\uB834\uB835\uB837\uB838\uB839\uB840\uB844\uB851\uB853\uB85C\uB85D\uB860\uB864\uB86C\uB86D\uB86F\uB871\uB878\uB87C\uB88D\uB8A8\uB8B0\uB8B4\uB8B8\uB8C0\uB8C1\uB8C3\uB8C5\uB8CC\uB8D0\uB8D4\uB8DD\uB8DF\uB8E1\uB8E8\uB8E9\uB8EC\uB8F0\uB8F8\uB8F9\uB8FB\uB8FD\uB904\uB918\uB920\uB93C\uB93D\uB940\uB944\uB94C\uB94F\uB951\uB958\uB959\uB95C\uB960\uB968\uB969\"],\n[\"b841\",\"\uD1D0\",7,\"\uD1D9\",17],\n[\"b861\",\"\uD1EB\",8,\"\uD1F5\uD1F6\uD1F7\uD1F9\",13],\n[\"b881\",\"\uD208\uD20A\",5,\"\uD211\",24,\"\uB96B\uB96D\uB974\uB975\uB978\uB97C\uB984\uB985\uB987\uB989\uB98A\uB98D\uB98E\uB9AC\uB9AD\uB9B0\uB9B4\uB9BC\uB9BD\uB9BF\uB9C1\uB9C8\uB9C9\uB9CC\uB9CE\",4,\"\uB9D8\uB9D9\uB9DB\uB9DD\uB9DE\uB9E1\uB9E3\uB9E4\uB9E5\uB9E8\uB9EC\uB9F4\uB9F5\uB9F7\uB9F8\uB9F9\uB9FA\uBA00\uBA01\uBA08\uBA15\uBA38\uBA39\uBA3C\uBA40\uBA42\uBA48\uBA49\uBA4B\uBA4D\uBA4E\uBA53\uBA54\uBA55\uBA58\uBA5C\uBA64\uBA65\uBA67\uBA68\uBA69\uBA70\uBA71\uBA74\uBA78\uBA83\uBA84\uBA85\uBA87\uBA8C\uBAA8\uBAA9\uBAAB\uBAAC\uBAB0\uBAB2\uBAB8\uBAB9\uBABB\uBABD\uBAC4\uBAC8\uBAD8\uBAD9\uBAFC\"],\n[\"b941\",\"\uD22A\uD22B\uD22E\uD22F\uD231\uD232\uD233\uD235\",6,\"\uD23E\uD240\uD242\",5,\"\uD249\uD24A\uD24B\uD24C\"],\n[\"b961\",\"\uD24D\",14,\"\uD25D\",6,\"\uD265\uD266\uD267\uD268\"],\n[\"b981\",\"\uD269\",22,\"\uD282\uD283\uD285\uD286\uD287\uD289\uD28A\uD28B\uD28C\uBB00\uBB04\uBB0D\uBB0F\uBB11\uBB18\uBB1C\uBB20\uBB29\uBB2B\uBB34\uBB35\uBB36\uBB38\uBB3B\uBB3C\uBB3D\uBB3E\uBB44\uBB45\uBB47\uBB49\uBB4D\uBB4F\uBB50\uBB54\uBB58\uBB61\uBB63\uBB6C\uBB88\uBB8C\uBB90\uBBA4\uBBA8\uBBAC\uBBB4\uBBB7\uBBC0\uBBC4\uBBC8\uBBD0\uBBD3\uBBF8\uBBF9\uBBFC\uBBFF\uBC00\uBC02\uBC08\uBC09\uBC0B\uBC0C\uBC0D\uBC0F\uBC11\uBC14\",4,\"\uBC1B\",4,\"\uBC24\uBC25\uBC27\uBC29\uBC2D\uBC30\uBC31\uBC34\uBC38\uBC40\uBC41\uBC43\uBC44\uBC45\uBC49\uBC4C\uBC4D\uBC50\uBC5D\uBC84\uBC85\uBC88\uBC8B\uBC8C\uBC8E\uBC94\uBC95\uBC97\"],\n[\"ba41\",\"\uD28D\uD28E\uD28F\uD292\uD293\uD294\uD296\",5,\"\uD29D\uD29E\uD29F\uD2A1\uD2A2\uD2A3\uD2A5\",6,\"\uD2AD\"],\n[\"ba61\",\"\uD2AE\uD2AF\uD2B0\uD2B2\",5,\"\uD2BA\uD2BB\uD2BD\uD2BE\uD2C1\uD2C3\",4,\"\uD2CA\uD2CC\",5],\n[\"ba81\",\"\uD2D2\uD2D3\uD2D5\uD2D6\uD2D7\uD2D9\uD2DA\uD2DB\uD2DD\",6,\"\uD2E6\",9,\"\uD2F2\uD2F3\uD2F5\uD2F6\uD2F7\uD2F9\uD2FA\uBC99\uBC9A\uBCA0\uBCA1\uBCA4\uBCA7\uBCA8\uBCB0\uBCB1\uBCB3\uBCB4\uBCB5\uBCBC\uBCBD\uBCC0\uBCC4\uBCCD\uBCCF\uBCD0\uBCD1\uBCD5\uBCD8\uBCDC\uBCF4\uBCF5\uBCF6\uBCF8\uBCFC\uBD04\uBD05\uBD07\uBD09\uBD10\uBD14\uBD24\uBD2C\uBD40\uBD48\uBD49\uBD4C\uBD50\uBD58\uBD59\uBD64\uBD68\uBD80\uBD81\uBD84\uBD87\uBD88\uBD89\uBD8A\uBD90\uBD91\uBD93\uBD95\uBD99\uBD9A\uBD9C\uBDA4\uBDB0\uBDB8\uBDD4\uBDD5\uBDD8\uBDDC\uBDE9\uBDF0\uBDF4\uBDF8\uBE00\uBE03\uBE05\uBE0C\uBE0D\uBE10\uBE14\uBE1C\uBE1D\uBE1F\uBE44\uBE45\uBE48\uBE4C\uBE4E\uBE54\uBE55\uBE57\uBE59\uBE5A\uBE5B\uBE60\uBE61\uBE64\"],\n[\"bb41\",\"\uD2FB\",4,\"\uD302\uD304\uD306\",5,\"\uD30F\uD311\uD312\uD313\uD315\uD317\",4,\"\uD31E\uD322\uD323\"],\n[\"bb61\",\"\uD324\uD326\uD327\uD32A\uD32B\uD32D\uD32E\uD32F\uD331\",6,\"\uD33A\uD33E\",5,\"\uD346\uD347\uD348\uD349\"],\n[\"bb81\",\"\uD34A\",31,\"\uBE68\uBE6A\uBE70\uBE71\uBE73\uBE74\uBE75\uBE7B\uBE7C\uBE7D\uBE80\uBE84\uBE8C\uBE8D\uBE8F\uBE90\uBE91\uBE98\uBE99\uBEA8\uBED0\uBED1\uBED4\uBED7\uBED8\uBEE0\uBEE3\uBEE4\uBEE5\uBEEC\uBF01\uBF08\uBF09\uBF18\uBF19\uBF1B\uBF1C\uBF1D\uBF40\uBF41\uBF44\uBF48\uBF50\uBF51\uBF55\uBF94\uBFB0\uBFC5\uBFCC\uBFCD\uBFD0\uBFD4\uBFDC\uBFDF\uBFE1\uC03C\uC051\uC058\uC05C\uC060\uC068\uC069\uC090\uC091\uC094\uC098\uC0A0\uC0A1\uC0A3\uC0A5\uC0AC\uC0AD\uC0AF\uC0B0\uC0B3\uC0B4\uC0B5\uC0B6\uC0BC\uC0BD\uC0BF\uC0C0\uC0C1\uC0C5\uC0C8\uC0C9\uC0CC\uC0D0\uC0D8\uC0D9\uC0DB\uC0DC\uC0DD\uC0E4\"],\n[\"bc41\",\"\uD36A\",17,\"\uD37E\uD37F\uD381\uD382\uD383\uD385\uD386\uD387\"],\n[\"bc61\",\"\uD388\uD389\uD38A\uD38B\uD38E\uD392\",5,\"\uD39A\uD39B\uD39D\uD39E\uD39F\uD3A1\",6,\"\uD3AA\uD3AC\uD3AE\"],\n[\"bc81\",\"\uD3AF\",4,\"\uD3B5\uD3B6\uD3B7\uD3B9\uD3BA\uD3BB\uD3BD\",6,\"\uD3C6\uD3C7\uD3CA\",5,\"\uD3D1\",5,\"\uC0E5\uC0E8\uC0EC\uC0F4\uC0F5\uC0F7\uC0F9\uC100\uC104\uC108\uC110\uC115\uC11C\",4,\"\uC123\uC124\uC126\uC127\uC12C\uC12D\uC12F\uC130\uC131\uC136\uC138\uC139\uC13C\uC140\uC148\uC149\uC14B\uC14C\uC14D\uC154\uC155\uC158\uC15C\uC164\uC165\uC167\uC168\uC169\uC170\uC174\uC178\uC185\uC18C\uC18D\uC18E\uC190\uC194\uC196\uC19C\uC19D\uC19F\uC1A1\uC1A5\uC1A8\uC1A9\uC1AC\uC1B0\uC1BD\uC1C4\uC1C8\uC1CC\uC1D4\uC1D7\uC1D8\uC1E0\uC1E4\uC1E8\uC1F0\uC1F1\uC1F3\uC1FC\uC1FD\uC200\uC204\uC20C\uC20D\uC20F\uC211\uC218\uC219\uC21C\uC21F\uC220\uC228\uC229\uC22B\uC22D\"],\n[\"bd41\",\"\uD3D7\uD3D9\",7,\"\uD3E2\uD3E4\",7,\"\uD3EE\uD3EF\uD3F1\uD3F2\uD3F3\uD3F5\uD3F6\uD3F7\"],\n[\"bd61\",\"\uD3F8\uD3F9\uD3FA\uD3FB\uD3FE\uD400\uD402\",5,\"\uD409\",13],\n[\"bd81\",\"\uD417\",5,\"\uD41E\",25,\"\uC22F\uC231\uC232\uC234\uC248\uC250\uC251\uC254\uC258\uC260\uC265\uC26C\uC26D\uC270\uC274\uC27C\uC27D\uC27F\uC281\uC288\uC289\uC290\uC298\uC29B\uC29D\uC2A4\uC2A5\uC2A8\uC2AC\uC2AD\uC2B4\uC2B5\uC2B7\uC2B9\uC2DC\uC2DD\uC2E0\uC2E3\uC2E4\uC2EB\uC2EC\uC2ED\uC2EF\uC2F1\uC2F6\uC2F8\uC2F9\uC2FB\uC2FC\uC300\uC308\uC309\uC30C\uC30D\uC313\uC314\uC315\uC318\uC31C\uC324\uC325\uC328\uC329\uC345\uC368\uC369\uC36C\uC370\uC372\uC378\uC379\uC37C\uC37D\uC384\uC388\uC38C\uC3C0\uC3D8\uC3D9\uC3DC\uC3DF\uC3E0\uC3E2\uC3E8\uC3E9\uC3ED\uC3F4\uC3F5\uC3F8\uC408\uC410\uC424\uC42C\uC430\"],\n[\"be41\",\"\uD438\",7,\"\uD441\uD442\uD443\uD445\",14],\n[\"be61\",\"\uD454\",7,\"\uD45D\uD45E\uD45F\uD461\uD462\uD463\uD465\",7,\"\uD46E\uD470\uD471\uD472\"],\n[\"be81\",\"\uD473\",4,\"\uD47A\uD47B\uD47D\uD47E\uD481\uD483\",4,\"\uD48A\uD48C\uD48E\",5,\"\uD495\",8,\"\uC434\uC43C\uC43D\uC448\uC464\uC465\uC468\uC46C\uC474\uC475\uC479\uC480\uC494\uC49C\uC4B8\uC4BC\uC4E9\uC4F0\uC4F1\uC4F4\uC4F8\uC4FA\uC4FF\uC500\uC501\uC50C\uC510\uC514\uC51C\uC528\uC529\uC52C\uC530\uC538\uC539\uC53B\uC53D\uC544\uC545\uC548\uC549\uC54A\uC54C\uC54D\uC54E\uC553\uC554\uC555\uC557\uC558\uC559\uC55D\uC55E\uC560\uC561\uC564\uC568\uC570\uC571\uC573\uC574\uC575\uC57C\uC57D\uC580\uC584\uC587\uC58C\uC58D\uC58F\uC591\uC595\uC597\uC598\uC59C\uC5A0\uC5A9\uC5B4\uC5B5\uC5B8\uC5B9\uC5BB\uC5BC\uC5BD\uC5BE\uC5C4\",6,\"\uC5CC\uC5CE\"],\n[\"bf41\",\"\uD49E\",10,\"\uD4AA\",14],\n[\"bf61\",\"\uD4B9\",18,\"\uD4CD\uD4CE\uD4CF\uD4D1\uD4D2\uD4D3\uD4D5\"],\n[\"bf81\",\"\uD4D6\",5,\"\uD4DD\uD4DE\uD4E0\",7,\"\uD4E9\uD4EA\uD4EB\uD4ED\uD4EE\uD4EF\uD4F1\",6,\"\uD4F9\uD4FA\uD4FC\uC5D0\uC5D1\uC5D4\uC5D8\uC5E0\uC5E1\uC5E3\uC5E5\uC5EC\uC5ED\uC5EE\uC5F0\uC5F4\uC5F6\uC5F7\uC5FC\",5,\"\uC605\uC606\uC607\uC608\uC60C\uC610\uC618\uC619\uC61B\uC61C\uC624\uC625\uC628\uC62C\uC62D\uC62E\uC630\uC633\uC634\uC635\uC637\uC639\uC63B\uC640\uC641\uC644\uC648\uC650\uC651\uC653\uC654\uC655\uC65C\uC65D\uC660\uC66C\uC66F\uC671\uC678\uC679\uC67C\uC680\uC688\uC689\uC68B\uC68D\uC694\uC695\uC698\uC69C\uC6A4\uC6A5\uC6A7\uC6A9\uC6B0\uC6B1\uC6B4\uC6B8\uC6B9\uC6BA\uC6C0\uC6C1\uC6C3\uC6C5\uC6CC\uC6CD\uC6D0\uC6D4\uC6DC\uC6DD\uC6E0\uC6E1\uC6E8\"],\n[\"c041\",\"\uD4FE\",5,\"\uD505\uD506\uD507\uD509\uD50A\uD50B\uD50D\",6,\"\uD516\uD518\",5],\n[\"c061\",\"\uD51E\",25],\n[\"c081\",\"\uD538\uD539\uD53A\uD53B\uD53E\uD53F\uD541\uD542\uD543\uD545\",6,\"\uD54E\uD550\uD552\",5,\"\uD55A\uD55B\uD55D\uD55E\uD55F\uD561\uD562\uD563\uC6E9\uC6EC\uC6F0\uC6F8\uC6F9\uC6FD\uC704\uC705\uC708\uC70C\uC714\uC715\uC717\uC719\uC720\uC721\uC724\uC728\uC730\uC731\uC733\uC735\uC737\uC73C\uC73D\uC740\uC744\uC74A\uC74C\uC74D\uC74F\uC751\",7,\"\uC75C\uC760\uC768\uC76B\uC774\uC775\uC778\uC77C\uC77D\uC77E\uC783\uC784\uC785\uC787\uC788\uC789\uC78A\uC78E\uC790\uC791\uC794\uC796\uC797\uC798\uC79A\uC7A0\uC7A1\uC7A3\uC7A4\uC7A5\uC7A6\uC7AC\uC7AD\uC7B0\uC7B4\uC7BC\uC7BD\uC7BF\uC7C0\uC7C1\uC7C8\uC7C9\uC7CC\uC7CE\uC7D0\uC7D8\uC7DD\uC7E4\uC7E8\uC7EC\uC800\uC801\uC804\uC808\uC80A\"],\n[\"c141\",\"\uD564\uD566\uD567\uD56A\uD56C\uD56E\",5,\"\uD576\uD577\uD579\uD57A\uD57B\uD57D\",6,\"\uD586\uD58A\uD58B\"],\n[\"c161\",\"\uD58C\uD58D\uD58E\uD58F\uD591\",19,\"\uD5A6\uD5A7\"],\n[\"c181\",\"\uD5A8\",31,\"\uC810\uC811\uC813\uC815\uC816\uC81C\uC81D\uC820\uC824\uC82C\uC82D\uC82F\uC831\uC838\uC83C\uC840\uC848\uC849\uC84C\uC84D\uC854\uC870\uC871\uC874\uC878\uC87A\uC880\uC881\uC883\uC885\uC886\uC887\uC88B\uC88C\uC88D\uC894\uC89D\uC89F\uC8A1\uC8A8\uC8BC\uC8BD\uC8C4\uC8C8\uC8CC\uC8D4\uC8D5\uC8D7\uC8D9\uC8E0\uC8E1\uC8E4\uC8F5\uC8FC\uC8FD\uC900\uC904\uC905\uC906\uC90C\uC90D\uC90F\uC911\uC918\uC92C\uC934\uC950\uC951\uC954\uC958\uC960\uC961\uC963\uC96C\uC970\uC974\uC97C\uC988\uC989\uC98C\uC990\uC998\uC999\uC99B\uC99D\uC9C0\uC9C1\uC9C4\uC9C7\uC9C8\uC9CA\uC9D0\uC9D1\uC9D3\"],\n[\"c241\",\"\uD5CA\uD5CB\uD5CD\uD5CE\uD5CF\uD5D1\uD5D3\",4,\"\uD5DA\uD5DC\uD5DE\",5,\"\uD5E6\uD5E7\uD5E9\uD5EA\uD5EB\uD5ED\uD5EE\"],\n[\"c261\",\"\uD5EF\",4,\"\uD5F6\uD5F8\uD5FA\",5,\"\uD602\uD603\uD605\uD606\uD607\uD609\",6,\"\uD612\"],\n[\"c281\",\"\uD616\",5,\"\uD61D\uD61E\uD61F\uD621\uD622\uD623\uD625\",7,\"\uD62E\",9,\"\uD63A\uD63B\uC9D5\uC9D6\uC9D9\uC9DA\uC9DC\uC9DD\uC9E0\uC9E2\uC9E4\uC9E7\uC9EC\uC9ED\uC9EF\uC9F0\uC9F1\uC9F8\uC9F9\uC9FC\uCA00\uCA08\uCA09\uCA0B\uCA0C\uCA0D\uCA14\uCA18\uCA29\uCA4C\uCA4D\uCA50\uCA54\uCA5C\uCA5D\uCA5F\uCA60\uCA61\uCA68\uCA7D\uCA84\uCA98\uCABC\uCABD\uCAC0\uCAC4\uCACC\uCACD\uCACF\uCAD1\uCAD3\uCAD8\uCAD9\uCAE0\uCAEC\uCAF4\uCB08\uCB10\uCB14\uCB18\uCB20\uCB21\uCB41\uCB48\uCB49\uCB4C\uCB50\uCB58\uCB59\uCB5D\uCB64\uCB78\uCB79\uCB9C\uCBB8\uCBD4\uCBE4\uCBE7\uCBE9\uCC0C\uCC0D\uCC10\uCC14\uCC1C\uCC1D\uCC21\uCC22\uCC27\uCC28\uCC29\uCC2C\uCC2E\uCC30\uCC38\uCC39\uCC3B\"],\n[\"c341\",\"\uD63D\uD63E\uD63F\uD641\uD642\uD643\uD644\uD646\uD647\uD64A\uD64C\uD64E\uD64F\uD650\uD652\uD653\uD656\uD657\uD659\uD65A\uD65B\uD65D\",4],\n[\"c361\",\"\uD662\",4,\"\uD668\uD66A\",5,\"\uD672\uD673\uD675\",11],\n[\"c381\",\"\uD681\uD682\uD684\uD686\",5,\"\uD68E\uD68F\uD691\uD692\uD693\uD695\",7,\"\uD69E\uD6A0\uD6A2\",5,\"\uD6A9\uD6AA\uCC3C\uCC3D\uCC3E\uCC44\uCC45\uCC48\uCC4C\uCC54\uCC55\uCC57\uCC58\uCC59\uCC60\uCC64\uCC66\uCC68\uCC70\uCC75\uCC98\uCC99\uCC9C\uCCA0\uCCA8\uCCA9\uCCAB\uCCAC\uCCAD\uCCB4\uCCB5\uCCB8\uCCBC\uCCC4\uCCC5\uCCC7\uCCC9\uCCD0\uCCD4\uCCE4\uCCEC\uCCF0\uCD01\uCD08\uCD09\uCD0C\uCD10\uCD18\uCD19\uCD1B\uCD1D\uCD24\uCD28\uCD2C\uCD39\uCD5C\uCD60\uCD64\uCD6C\uCD6D\uCD6F\uCD71\uCD78\uCD88\uCD94\uCD95\uCD98\uCD9C\uCDA4\uCDA5\uCDA7\uCDA9\uCDB0\uCDC4\uCDCC\uCDD0\uCDE8\uCDEC\uCDF0\uCDF8\uCDF9\uCDFB\uCDFD\uCE04\uCE08\uCE0C\uCE14\uCE19\uCE20\uCE21\uCE24\uCE28\uCE30\uCE31\uCE33\uCE35\"],\n[\"c441\",\"\uD6AB\uD6AD\uD6AE\uD6AF\uD6B1\",7,\"\uD6BA\uD6BC\",7,\"\uD6C6\uD6C7\uD6C9\uD6CA\uD6CB\"],\n[\"c461\",\"\uD6CD\uD6CE\uD6CF\uD6D0\uD6D2\uD6D3\uD6D5\uD6D6\uD6D8\uD6DA\",5,\"\uD6E1\uD6E2\uD6E3\uD6E5\uD6E6\uD6E7\uD6E9\",4],\n[\"c481\",\"\uD6EE\uD6EF\uD6F1\uD6F2\uD6F3\uD6F4\uD6F6\",5,\"\uD6FE\uD6FF\uD701\uD702\uD703\uD705\",11,\"\uD712\uD713\uD714\uCE58\uCE59\uCE5C\uCE5F\uCE60\uCE61\uCE68\uCE69\uCE6B\uCE6D\uCE74\uCE75\uCE78\uCE7C\uCE84\uCE85\uCE87\uCE89\uCE90\uCE91\uCE94\uCE98\uCEA0\uCEA1\uCEA3\uCEA4\uCEA5\uCEAC\uCEAD\uCEC1\uCEE4\uCEE5\uCEE8\uCEEB\uCEEC\uCEF4\uCEF5\uCEF7\uCEF8\uCEF9\uCF00\uCF01\uCF04\uCF08\uCF10\uCF11\uCF13\uCF15\uCF1C\uCF20\uCF24\uCF2C\uCF2D\uCF2F\uCF30\uCF31\uCF38\uCF54\uCF55\uCF58\uCF5C\uCF64\uCF65\uCF67\uCF69\uCF70\uCF71\uCF74\uCF78\uCF80\uCF85\uCF8C\uCFA1\uCFA8\uCFB0\uCFC4\uCFE0\uCFE1\uCFE4\uCFE8\uCFF0\uCFF1\uCFF3\uCFF5\uCFFC\uD000\uD004\uD011\uD018\uD02D\uD034\uD035\uD038\uD03C\"],\n[\"c541\",\"\uD715\uD716\uD717\uD71A\uD71B\uD71D\uD71E\uD71F\uD721\",6,\"\uD72A\uD72C\uD72E\",5,\"\uD736\uD737\uD739\"],\n[\"c561\",\"\uD73A\uD73B\uD73D\",6,\"\uD745\uD746\uD748\uD74A\",5,\"\uD752\uD753\uD755\uD75A\",4],\n[\"c581\",\"\uD75F\uD762\uD764\uD766\uD767\uD768\uD76A\uD76B\uD76D\uD76E\uD76F\uD771\uD772\uD773\uD775\",6,\"\uD77E\uD77F\uD780\uD782\",5,\"\uD78A\uD78B\uD044\uD045\uD047\uD049\uD050\uD054\uD058\uD060\uD06C\uD06D\uD070\uD074\uD07C\uD07D\uD081\uD0A4\uD0A5\uD0A8\uD0AC\uD0B4\uD0B5\uD0B7\uD0B9\uD0C0\uD0C1\uD0C4\uD0C8\uD0C9\uD0D0\uD0D1\uD0D3\uD0D4\uD0D5\uD0DC\uD0DD\uD0E0\uD0E4\uD0EC\uD0ED\uD0EF\uD0F0\uD0F1\uD0F8\uD10D\uD130\uD131\uD134\uD138\uD13A\uD140\uD141\uD143\uD144\uD145\uD14C\uD14D\uD150\uD154\uD15C\uD15D\uD15F\uD161\uD168\uD16C\uD17C\uD184\uD188\uD1A0\uD1A1\uD1A4\uD1A8\uD1B0\uD1B1\uD1B3\uD1B5\uD1BA\uD1BC\uD1C0\uD1D8\uD1F4\uD1F8\uD207\uD209\uD210\uD22C\uD22D\uD230\uD234\uD23C\uD23D\uD23F\uD241\uD248\uD25C\"],\n[\"c641\",\"\uD78D\uD78E\uD78F\uD791\",6,\"\uD79A\uD79C\uD79E\",5],\n[\"c6a1\",\"\uD264\uD280\uD281\uD284\uD288\uD290\uD291\uD295\uD29C\uD2A0\uD2A4\uD2AC\uD2B1\uD2B8\uD2B9\uD2BC\uD2BF\uD2C0\uD2C2\uD2C8\uD2C9\uD2CB\uD2D4\uD2D8\uD2DC\uD2E4\uD2E5\uD2F0\uD2F1\uD2F4\uD2F8\uD300\uD301\uD303\uD305\uD30C\uD30D\uD30E\uD310\uD314\uD316\uD31C\uD31D\uD31F\uD320\uD321\uD325\uD328\uD329\uD32C\uD330\uD338\uD339\uD33B\uD33C\uD33D\uD344\uD345\uD37C\uD37D\uD380\uD384\uD38C\uD38D\uD38F\uD390\uD391\uD398\uD399\uD39C\uD3A0\uD3A8\uD3A9\uD3AB\uD3AD\uD3B4\uD3B8\uD3BC\uD3C4\uD3C5\uD3C8\uD3C9\uD3D0\uD3D8\uD3E1\uD3E3\uD3EC\uD3ED\uD3F0\uD3F4\uD3FC\uD3FD\uD3FF\uD401\"],\n[\"c7a1\",\"\uD408\uD41D\uD440\uD444\uD45C\uD460\uD464\uD46D\uD46F\uD478\uD479\uD47C\uD47F\uD480\uD482\uD488\uD489\uD48B\uD48D\uD494\uD4A9\uD4CC\uD4D0\uD4D4\uD4DC\uD4DF\uD4E8\uD4EC\uD4F0\uD4F8\uD4FB\uD4FD\uD504\uD508\uD50C\uD514\uD515\uD517\uD53C\uD53D\uD540\uD544\uD54C\uD54D\uD54F\uD551\uD558\uD559\uD55C\uD560\uD565\uD568\uD569\uD56B\uD56D\uD574\uD575\uD578\uD57C\uD584\uD585\uD587\uD588\uD589\uD590\uD5A5\uD5C8\uD5C9\uD5CC\uD5D0\uD5D2\uD5D8\uD5D9\uD5DB\uD5DD\uD5E4\uD5E5\uD5E8\uD5EC\uD5F4\uD5F5\uD5F7\uD5F9\uD600\uD601\uD604\uD608\uD610\uD611\uD613\uD614\uD615\uD61C\uD620\"],\n[\"c8a1\",\"\uD624\uD62D\uD638\uD639\uD63C\uD640\uD645\uD648\uD649\uD64B\uD64D\uD651\uD654\uD655\uD658\uD65C\uD667\uD669\uD670\uD671\uD674\uD683\uD685\uD68C\uD68D\uD690\uD694\uD69D\uD69F\uD6A1\uD6A8\uD6AC\uD6B0\uD6B9\uD6BB\uD6C4\uD6C5\uD6C8\uD6CC\uD6D1\uD6D4\uD6D7\uD6D9\uD6E0\uD6E4\uD6E8\uD6F0\uD6F5\uD6FC\uD6FD\uD700\uD704\uD711\uD718\uD719\uD71C\uD720\uD728\uD729\uD72B\uD72D\uD734\uD735\uD738\uD73C\uD744\uD747\uD749\uD750\uD751\uD754\uD756\uD757\uD758\uD759\uD760\uD761\uD763\uD765\uD769\uD76C\uD770\uD774\uD77C\uD77D\uD781\uD788\uD789\uD78C\uD790\uD798\uD799\uD79B\uD79D\"],\n[\"caa1\",\"\u4F3D\u4F73\u5047\u50F9\u52A0\u53EF\u5475\u54E5\u5609\u5AC1\u5BB6\u6687\u67B6\u67B7\u67EF\u6B4C\u73C2\u75C2\u7A3C\u82DB\u8304\u8857\u8888\u8A36\u8CC8\u8DCF\u8EFB\u8FE6\u99D5\u523B\u5374\u5404\u606A\u6164\u6BBC\u73CF\u811A\u89BA\u89D2\u95A3\u4F83\u520A\u58BE\u5978\u59E6\u5E72\u5E79\u61C7\u63C0\u6746\u67EC\u687F\u6F97\u764E\u770B\u78F5\u7A08\u7AFF\u7C21\u809D\u826E\u8271\u8AEB\u9593\u4E6B\u559D\u66F7\u6E34\u78A3\u7AED\u845B\u8910\u874E\u97A8\u52D8\u574E\u582A\u5D4C\u611F\u61BE\u6221\u6562\u67D1\u6A44\u6E1B\u7518\u75B3\u76E3\u77B0\u7D3A\u90AF\u9451\u9452\u9F95\"],\n[\"cba1\",\"\u5323\u5CAC\u7532\u80DB\u9240\u9598\u525B\u5808\u59DC\u5CA1\u5D17\u5EB7\u5F3A\u5F4A\u6177\u6C5F\u757A\u7586\u7CE0\u7D73\u7DB1\u7F8C\u8154\u8221\u8591\u8941\u8B1B\u92FC\u964D\u9C47\u4ECB\u4EF7\u500B\u51F1\u584F\u6137\u613E\u6168\u6539\u69EA\u6F11\u75A5\u7686\u76D6\u7B87\u82A5\u84CB\uF900\u93A7\u958B\u5580\u5BA2\u5751\uF901\u7CB3\u7FB9\u91B5\u5028\u53BB\u5C45\u5DE8\u62D2\u636E\u64DA\u64E7\u6E20\u70AC\u795B\u8DDD\u8E1E\uF902\u907D\u9245\u92F8\u4E7E\u4EF6\u5065\u5DFE\u5EFA\u6106\u6957\u8171\u8654\u8E47\u9375\u9A2B\u4E5E\u5091\u6770\u6840\u5109\u528D\u5292\u6AA2\"],\n[\"cca1\",\"\u77BC\u9210\u9ED4\u52AB\u602F\u8FF2\u5048\u61A9\u63ED\u64CA\u683C\u6A84\u6FC0\u8188\u89A1\u9694\u5805\u727D\u72AC\u7504\u7D79\u7E6D\u80A9\u898B\u8B74\u9063\u9D51\u6289\u6C7A\u6F54\u7D50\u7F3A\u8A23\u517C\u614A\u7B9D\u8B19\u9257\u938C\u4EAC\u4FD3\u501E\u50BE\u5106\u52C1\u52CD\u537F\u5770\u5883\u5E9A\u5F91\u6176\u61AC\u64CE\u656C\u666F\u66BB\u66F4\u6897\u6D87\u7085\u70F1\u749F\u74A5\u74CA\u75D9\u786C\u78EC\u7ADF\u7AF6\u7D45\u7D93\u8015\u803F\u811B\u8396\u8B66\u8F15\u9015\u93E1\u9803\u9838\u9A5A\u9BE8\u4FC2\u5553\u583A\u5951\u5B63\u5C46\u60B8\u6212\u6842\u68B0\"],\n[\"cda1\",\"\u68E8\u6EAA\u754C\u7678\u78CE\u7A3D\u7CFB\u7E6B\u7E7C\u8A08\u8AA1\u8C3F\u968E\u9DC4\u53E4\u53E9\u544A\u5471\u56FA\u59D1\u5B64\u5C3B\u5EAB\u62F7\u6537\u6545\u6572\u66A0\u67AF\u69C1\u6CBD\u75FC\u7690\u777E\u7A3F\u7F94\u8003\u80A1\u818F\u82E6\u82FD\u83F0\u85C1\u8831\u88B4\u8AA5\uF903\u8F9C\u932E\u96C7\u9867\u9AD8\u9F13\u54ED\u659B\u66F2\u688F\u7A40\u8C37\u9D60\u56F0\u5764\u5D11\u6606\u68B1\u68CD\u6EFE\u7428\u889E\u9BE4\u6C68\uF904\u9AA8\u4F9B\u516C\u5171\u529F\u5B54\u5DE5\u6050\u606D\u62F1\u63A7\u653B\u73D9\u7A7A\u86A3\u8CA2\u978F\u4E32\u5BE1\u6208\u679C\u74DC\"],\n[\"cea1\",\"\u79D1\u83D3\u8A87\u8AB2\u8DE8\u904E\u934B\u9846\u5ED3\u69E8\u85FF\u90ED\uF905\u51A0\u5B98\u5BEC\u6163\u68FA\u6B3E\u704C\u742F\u74D8\u7BA1\u7F50\u83C5\u89C0\u8CAB\u95DC\u9928\u522E\u605D\u62EC\u9002\u4F8A\u5149\u5321\u58D9\u5EE3\u66E0\u6D38\u709A\u72C2\u73D6\u7B50\u80F1\u945B\u5366\u639B\u7F6B\u4E56\u5080\u584A\u58DE\u602A\u6127\u62D0\u69D0\u9B41\u5B8F\u7D18\u80B1\u8F5F\u4EA4\u50D1\u54AC\u55AC\u5B0C\u5DA0\u5DE7\u652A\u654E\u6821\u6A4B\u72E1\u768E\u77EF\u7D5E\u7FF9\u81A0\u854E\u86DF\u8F03\u8F4E\u90CA\u9903\u9A55\u9BAB\u4E18\u4E45\u4E5D\u4EC7\u4FF1\u5177\u52FE\"],\n[\"cfa1\",\"\u5340\u53E3\u53E5\u548E\u5614\u5775\u57A2\u5BC7\u5D87\u5ED0\u61FC\u62D8\u6551\u67B8\u67E9\u69CB\u6B50\u6BC6\u6BEC\u6C42\u6E9D\u7078\u72D7\u7396\u7403\u77BF\u77E9\u7A76\u7D7F\u8009\u81FC\u8205\u820A\u82DF\u8862\u8B33\u8CFC\u8EC0\u9011\u90B1\u9264\u92B6\u99D2\u9A45\u9CE9\u9DD7\u9F9C\u570B\u5C40\u83CA\u97A0\u97AB\u9EB4\u541B\u7A98\u7FA4\u88D9\u8ECD\u90E1\u5800\u5C48\u6398\u7A9F\u5BAE\u5F13\u7A79\u7AAE\u828E\u8EAC\u5026\u5238\u52F8\u5377\u5708\u62F3\u6372\u6B0A\u6DC3\u7737\u53A5\u7357\u8568\u8E76\u95D5\u673A\u6AC3\u6F70\u8A6D\u8ECC\u994B\uF906\u6677\u6B78\u8CB4\"],\n[\"d0a1\",\"\u9B3C\uF907\u53EB\u572D\u594E\u63C6\u69FB\u73EA\u7845\u7ABA\u7AC5\u7CFE\u8475\u898F\u8D73\u9035\u95A8\u52FB\u5747\u7547\u7B60\u83CC\u921E\uF908\u6A58\u514B\u524B\u5287\u621F\u68D8\u6975\u9699\u50C5\u52A4\u52E4\u61C3\u65A4\u6839\u69FF\u747E\u7B4B\u82B9\u83EB\u89B2\u8B39\u8FD1\u9949\uF909\u4ECA\u5997\u64D2\u6611\u6A8E\u7434\u7981\u79BD\u82A9\u887E\u887F\u895F\uF90A\u9326\u4F0B\u53CA\u6025\u6271\u6C72\u7D1A\u7D66\u4E98\u5162\u77DC\u80AF\u4F01\u4F0E\u5176\u5180\u55DC\u5668\u573B\u57FA\u57FC\u5914\u5947\u5993\u5BC4\u5C90\u5D0E\u5DF1\u5E7E\u5FCC\u6280\u65D7\u65E3\"],\n[\"d1a1\",\"\u671E\u671F\u675E\u68CB\u68C4\u6A5F\u6B3A\u6C23\u6C7D\u6C82\u6DC7\u7398\u7426\u742A\u7482\u74A3\u7578\u757F\u7881\u78EF\u7941\u7947\u7948\u797A\u7B95\u7D00\u7DBA\u7F88\u8006\u802D\u808C\u8A18\u8B4F\u8C48\u8D77\u9321\u9324\u98E2\u9951\u9A0E\u9A0F\u9A65\u9E92\u7DCA\u4F76\u5409\u62EE\u6854\u91D1\u55AB\u513A\uF90B\uF90C\u5A1C\u61E6\uF90D\u62CF\u62FF\uF90E\",5,\"\u90A3\uF914\",4,\"\u8AFE\uF919\uF91A\uF91B\uF91C\u6696\uF91D\u7156\uF91E\uF91F\u96E3\uF920\u634F\u637A\u5357\uF921\u678F\u6960\u6E73\uF922\u7537\uF923\uF924\uF925\"],\n[\"d2a1\",\"\u7D0D\uF926\uF927\u8872\u56CA\u5A18\uF928\",4,\"\u4E43\uF92D\u5167\u5948\u67F0\u8010\uF92E\u5973\u5E74\u649A\u79CA\u5FF5\u606C\u62C8\u637B\u5BE7\u5BD7\u52AA\uF92F\u5974\u5F29\u6012\uF930\uF931\uF932\u7459\uF933\",5,\"\u99D1\uF939\",10,\"\u6FC3\uF944\uF945\u81BF\u8FB2\u60F1\uF946\uF947\u8166\uF948\uF949\u5C3F\uF94A\",7,\"\u5AE9\u8A25\u677B\u7D10\uF952\",5,\"\u80FD\uF958\uF959\u5C3C\u6CE5\u533F\u6EBA\u591A\u8336\"],\n[\"d3a1\",\"\u4E39\u4EB6\u4F46\u55AE\u5718\u58C7\u5F56\u65B7\u65E6\u6A80\u6BB5\u6E4D\u77ED\u7AEF\u7C1E\u7DDE\u86CB\u8892\u9132\u935B\u64BB\u6FBE\u737A\u75B8\u9054\u5556\u574D\u61BA\u64D4\u66C7\u6DE1\u6E5B\u6F6D\u6FB9\u75F0\u8043\u81BD\u8541\u8983\u8AC7\u8B5A\u931F\u6C93\u7553\u7B54\u8E0F\u905D\u5510\u5802\u5858\u5E62\u6207\u649E\u68E0\u7576\u7CD6\u87B3\u9EE8\u4EE3\u5788\u576E\u5927\u5C0D\u5CB1\u5E36\u5F85\u6234\u64E1\u73B3\u81FA\u888B\u8CB8\u968A\u9EDB\u5B85\u5FB7\u60B3\u5012\u5200\u5230\u5716\u5835\u5857\u5C0E\u5C60\u5CF6\u5D8B\u5EA6\u5F92\u60BC\u6311\u6389\u6417\u6843\"],\n[\"d4a1\",\"\u68F9\u6AC2\u6DD8\u6E21\u6ED4\u6FE4\u71FE\u76DC\u7779\u79B1\u7A3B\u8404\u89A9\u8CED\u8DF3\u8E48\u9003\u9014\u9053\u90FD\u934D\u9676\u97DC\u6BD2\u7006\u7258\u72A2\u7368\u7763\u79BF\u7BE4\u7E9B\u8B80\u58A9\u60C7\u6566\u65FD\u66BE\u6C8C\u711E\u71C9\u8C5A\u9813\u4E6D\u7A81\u4EDD\u51AC\u51CD\u52D5\u540C\u61A7\u6771\u6850\u68DF\u6D1E\u6F7C\u75BC\u77B3\u7AE5\u80F4\u8463\u9285\u515C\u6597\u675C\u6793\u75D8\u7AC7\u8373\uF95A\u8C46\u9017\u982D\u5C6F\u81C0\u829A\u9041\u906F\u920D\u5F97\u5D9D\u6A59\u71C8\u767B\u7B49\u85E4\u8B04\u9127\u9A30\u5587\u61F6\uF95B\u7669\u7F85\"],\n[\"d5a1\",\"\u863F\u87BA\u88F8\u908F\uF95C\u6D1B\u70D9\u73DE\u7D61\u843D\uF95D\u916A\u99F1\uF95E\u4E82\u5375\u6B04\u6B12\u703E\u721B\u862D\u9E1E\u524C\u8FA3\u5D50\u64E5\u652C\u6B16\u6FEB\u7C43\u7E9C\u85CD\u8964\u89BD\u62C9\u81D8\u881F\u5ECA\u6717\u6D6A\u72FC\u7405\u746F\u8782\u90DE\u4F86\u5D0D\u5FA0\u840A\u51B7\u63A0\u7565\u4EAE\u5006\u5169\u51C9\u6881\u6A11\u7CAE\u7CB1\u7CE7\u826F\u8AD2\u8F1B\u91CF\u4FB6\u5137\u52F5\u5442\u5EEC\u616E\u623E\u65C5\u6ADA\u6FFE\u792A\u85DC\u8823\u95AD\u9A62\u9A6A\u9E97\u9ECE\u529B\u66C6\u6B77\u701D\u792B\u8F62\u9742\u6190\u6200\u6523\u6F23\"],\n[\"d6a1\",\"\u7149\u7489\u7DF4\u806F\u84EE\u8F26\u9023\u934A\u51BD\u5217\u52A3\u6D0C\u70C8\u88C2\u5EC9\u6582\u6BAE\u6FC2\u7C3E\u7375\u4EE4\u4F36\u56F9\uF95F\u5CBA\u5DBA\u601C\u73B2\u7B2D\u7F9A\u7FCE\u8046\u901E\u9234\u96F6\u9748\u9818\u9F61\u4F8B\u6FA7\u79AE\u91B4\u96B7\u52DE\uF960\u6488\u64C4\u6AD3\u6F5E\u7018\u7210\u76E7\u8001\u8606\u865C\u8DEF\u8F05\u9732\u9B6F\u9DFA\u9E75\u788C\u797F\u7DA0\u83C9\u9304\u9E7F\u9E93\u8AD6\u58DF\u5F04\u6727\u7027\u74CF\u7C60\u807E\u5121\u7028\u7262\u78CA\u8CC2\u8CDA\u8CF4\u96F7\u4E86\u50DA\u5BEE\u5ED6\u6599\u71CE\u7642\u77AD\u804A\u84FC\"],\n[\"d7a1\",\"\u907C\u9B27\u9F8D\u58D8\u5A41\u5C62\u6A13\u6DDA\u6F0F\u763B\u7D2F\u7E37\u851E\u8938\u93E4\u964B\u5289\u65D2\u67F3\u69B4\u6D41\u6E9C\u700F\u7409\u7460\u7559\u7624\u786B\u8B2C\u985E\u516D\u622E\u9678\u4F96\u502B\u5D19\u6DEA\u7DB8\u8F2A\u5F8B\u6144\u6817\uF961\u9686\u52D2\u808B\u51DC\u51CC\u695E\u7A1C\u7DBE\u83F1\u9675\u4FDA\u5229\u5398\u540F\u550E\u5C65\u60A7\u674E\u68A8\u6D6C\u7281\u72F8\u7406\u7483\uF962\u75E2\u7C6C\u7F79\u7FB8\u8389\u88CF\u88E1\u91CC\u91D0\u96E2\u9BC9\u541D\u6F7E\u71D0\u7498\u85FA\u8EAA\u96A3\u9C57\u9E9F\u6797\u6DCB\u7433\u81E8\u9716\u782C\"],\n[\"d8a1\",\"\u7ACB\u7B20\u7C92\u6469\u746A\u75F2\u78BC\u78E8\u99AC\u9B54\u9EBB\u5BDE\u5E55\u6F20\u819C\u83AB\u9088\u4E07\u534D\u5A29\u5DD2\u5F4E\u6162\u633D\u6669\u66FC\u6EFF\u6F2B\u7063\u779E\u842C\u8513\u883B\u8F13\u9945\u9C3B\u551C\u62B9\u672B\u6CAB\u8309\u896A\u977A\u4EA1\u5984\u5FD8\u5FD9\u671B\u7DB2\u7F54\u8292\u832B\u83BD\u8F1E\u9099\u57CB\u59B9\u5A92\u5BD0\u6627\u679A\u6885\u6BCF\u7164\u7F75\u8CB7\u8CE3\u9081\u9B45\u8108\u8C8A\u964C\u9A40\u9EA5\u5B5F\u6C13\u731B\u76F2\u76DF\u840C\u51AA\u8993\u514D\u5195\u52C9\u68C9\u6C94\u7704\u7720\u7DBF\u7DEC\u9762\u9EB5\u6EC5\"],\n[\"d9a1\",\"\u8511\u51A5\u540D\u547D\u660E\u669D\u6927\u6E9F\u76BF\u7791\u8317\u84C2\u879F\u9169\u9298\u9CF4\u8882\u4FAE\u5192\u52DF\u59C6\u5E3D\u6155\u6478\u6479\u66AE\u67D0\u6A21\u6BCD\u6BDB\u725F\u7261\u7441\u7738\u77DB\u8017\u82BC\u8305\u8B00\u8B28\u8C8C\u6728\u6C90\u7267\u76EE\u7766\u7A46\u9DA9\u6B7F\u6C92\u5922\u6726\u8499\u536F\u5893\u5999\u5EDF\u63CF\u6634\u6773\u6E3A\u732B\u7AD7\u82D7\u9328\u52D9\u5DEB\u61AE\u61CB\u620A\u62C7\u64AB\u65E0\u6959\u6B66\u6BCB\u7121\u73F7\u755D\u7E46\u821E\u8302\u856A\u8AA3\u8CBF\u9727\u9D61\u58A8\u9ED8\u5011\u520E\u543B\u554F\u6587\"],\n[\"daa1\",\"\u6C76\u7D0A\u7D0B\u805E\u868A\u9580\u96EF\u52FF\u6C95\u7269\u5473\u5A9A\u5C3E\u5D4B\u5F4C\u5FAE\u672A\u68B6\u6963\u6E3C\u6E44\u7709\u7C73\u7F8E\u8587\u8B0E\u8FF7\u9761\u9EF4\u5CB7\u60B6\u610D\u61AB\u654F\u65FB\u65FC\u6C11\u6CEF\u739F\u73C9\u7DE1\u9594\u5BC6\u871C\u8B10\u525D\u535A\u62CD\u640F\u64B2\u6734\u6A38\u6CCA\u73C0\u749E\u7B94\u7C95\u7E1B\u818A\u8236\u8584\u8FEB\u96F9\u99C1\u4F34\u534A\u53CD\u53DB\u62CC\u642C\u6500\u6591\u69C3\u6CEE\u6F58\u73ED\u7554\u7622\u76E4\u76FC\u78D0\u78FB\u792C\u7D46\u822C\u87E0\u8FD4\u9812\u98EF\u52C3\u62D4\u64A5\u6E24\u6F51\"],\n[\"dba1\",\"\u767C\u8DCB\u91B1\u9262\u9AEE\u9B43\u5023\u508D\u574A\u59A8\u5C28\u5E47\u5F77\u623F\u653E\u65B9\u65C1\u6609\u678B\u699C\u6EC2\u78C5\u7D21\u80AA\u8180\u822B\u82B3\u84A1\u868C\u8A2A\u8B17\u90A6\u9632\u9F90\u500D\u4FF3\uF963\u57F9\u5F98\u62DC\u6392\u676F\u6E43\u7119\u76C3\u80CC\u80DA\u88F4\u88F5\u8919\u8CE0\u8F29\u914D\u966A\u4F2F\u4F70\u5E1B\u67CF\u6822\u767D\u767E\u9B44\u5E61\u6A0A\u7169\u71D4\u756A\uF964\u7E41\u8543\u85E9\u98DC\u4F10\u7B4F\u7F70\u95A5\u51E1\u5E06\u68B5\u6C3E\u6C4E\u6CDB\u72AF\u7BC4\u8303\u6CD5\u743A\u50FB\u5288\u58C1\u64D8\u6A97\u74A7\u7656\"],\n[\"dca1\",\"\u78A7\u8617\u95E2\u9739\uF965\u535E\u5F01\u8B8A\u8FA8\u8FAF\u908A\u5225\u77A5\u9C49\u9F08\u4E19\u5002\u5175\u5C5B\u5E77\u661E\u663A\u67C4\u68C5\u70B3\u7501\u75C5\u79C9\u7ADD\u8F27\u9920\u9A08\u4FDD\u5821\u5831\u5BF6\u666E\u6B65\u6D11\u6E7A\u6F7D\u73E4\u752B\u83E9\u88DC\u8913\u8B5C\u8F14\u4F0F\u50D5\u5310\u535C\u5B93\u5FA9\u670D\u798F\u8179\u832F\u8514\u8907\u8986\u8F39\u8F3B\u99A5\u9C12\u672C\u4E76\u4FF8\u5949\u5C01\u5CEF\u5CF0\u6367\u68D2\u70FD\u71A2\u742B\u7E2B\u84EC\u8702\u9022\u92D2\u9CF3\u4E0D\u4ED8\u4FEF\u5085\u5256\u526F\u5426\u5490\u57E0\u592B\u5A66\"],\n[\"dda1\",\"\u5B5A\u5B75\u5BCC\u5E9C\uF966\u6276\u6577\u65A7\u6D6E\u6EA5\u7236\u7B26\u7C3F\u7F36\u8150\u8151\u819A\u8240\u8299\u83A9\u8A03\u8CA0\u8CE6\u8CFB\u8D74\u8DBA\u90E8\u91DC\u961C\u9644\u99D9\u9CE7\u5317\u5206\u5429\u5674\u58B3\u5954\u596E\u5FFF\u61A4\u626E\u6610\u6C7E\u711A\u76C6\u7C89\u7CDE\u7D1B\u82AC\u8CC1\u96F0\uF967\u4F5B\u5F17\u5F7F\u62C2\u5D29\u670B\u68DA\u787C\u7E43\u9D6C\u4E15\u5099\u5315\u532A\u5351\u5983\u5A62\u5E87\u60B2\u618A\u6249\u6279\u6590\u6787\u69A7\u6BD4\u6BD6\u6BD7\u6BD8\u6CB8\uF968\u7435\u75FA\u7812\u7891\u79D5\u79D8\u7C83\u7DCB\u7FE1\u80A5\"],\n[\"dea1\",\"\u813E\u81C2\u83F2\u871A\u88E8\u8AB9\u8B6C\u8CBB\u9119\u975E\u98DB\u9F3B\u56AC\u5B2A\u5F6C\u658C\u6AB3\u6BAF\u6D5C\u6FF1\u7015\u725D\u73AD\u8CA7\u8CD3\u983B\u6191\u6C37\u8058\u9A01\u4E4D\u4E8B\u4E9B\u4ED5\u4F3A\u4F3C\u4F7F\u4FDF\u50FF\u53F2\u53F8\u5506\u55E3\u56DB\u58EB\u5962\u5A11\u5BEB\u5BFA\u5C04\u5DF3\u5E2B\u5F99\u601D\u6368\u659C\u65AF\u67F6\u67FB\u68AD\u6B7B\u6C99\u6CD7\u6E23\u7009\u7345\u7802\u793E\u7940\u7960\u79C1\u7BE9\u7D17\u7D72\u8086\u820D\u838E\u84D1\u86C7\u88DF\u8A50\u8A5E\u8B1D\u8CDC\u8D66\u8FAD\u90AA\u98FC\u99DF\u9E9D\u524A\uF969\u6714\uF96A\"],\n[\"dfa1\",\"\u5098\u522A\u5C71\u6563\u6C55\u73CA\u7523\u759D\u7B97\u849C\u9178\u9730\u4E77\u6492\u6BBA\u715E\u85A9\u4E09\uF96B\u6749\u68EE\u6E17\u829F\u8518\u886B\u63F7\u6F81\u9212\u98AF\u4E0A\u50B7\u50CF\u511F\u5546\u55AA\u5617\u5B40\u5C19\u5CE0\u5E38\u5E8A\u5EA0\u5EC2\u60F3\u6851\u6A61\u6E58\u723D\u7240\u72C0\u76F8\u7965\u7BB1\u7FD4\u88F3\u89F4\u8A73\u8C61\u8CDE\u971C\u585E\u74BD\u8CFD\u55C7\uF96C\u7A61\u7D22\u8272\u7272\u751F\u7525\uF96D\u7B19\u5885\u58FB\u5DBC\u5E8F\u5EB6\u5F90\u6055\u6292\u637F\u654D\u6691\u66D9\u66F8\u6816\u68F2\u7280\u745E\u7B6E\u7D6E\u7DD6\u7F72\"],\n[\"e0a1\",\"\u80E5\u8212\u85AF\u897F\u8A93\u901D\u92E4\u9ECD\u9F20\u5915\u596D\u5E2D\u60DC\u6614\u6673\u6790\u6C50\u6DC5\u6F5F\u77F3\u78A9\u84C6\u91CB\u932B\u4ED9\u50CA\u5148\u5584\u5B0B\u5BA3\u6247\u657E\u65CB\u6E32\u717D\u7401\u7444\u7487\u74BF\u766C\u79AA\u7DDA\u7E55\u7FA8\u817A\u81B3\u8239\u861A\u87EC\u8A75\u8DE3\u9078\u9291\u9425\u994D\u9BAE\u5368\u5C51\u6954\u6CC4\u6D29\u6E2B\u820C\u859B\u893B\u8A2D\u8AAA\u96EA\u9F67\u5261\u66B9\u6BB2\u7E96\u87FE\u8D0D\u9583\u965D\u651D\u6D89\u71EE\uF96E\u57CE\u59D3\u5BAC\u6027\u60FA\u6210\u661F\u665F\u7329\u73F9\u76DB\u7701\u7B6C\"],\n[\"e1a1\",\"\u8056\u8072\u8165\u8AA0\u9192\u4E16\u52E2\u6B72\u6D17\u7A05\u7B39\u7D30\uF96F\u8CB0\u53EC\u562F\u5851\u5BB5\u5C0F\u5C11\u5DE2\u6240\u6383\u6414\u662D\u68B3\u6CBC\u6D88\u6EAF\u701F\u70A4\u71D2\u7526\u758F\u758E\u7619\u7B11\u7BE0\u7C2B\u7D20\u7D39\u852C\u856D\u8607\u8A34\u900D\u9061\u90B5\u92B7\u97F6\u9A37\u4FD7\u5C6C\u675F\u6D91\u7C9F\u7E8C\u8B16\u8D16\u901F\u5B6B\u5DFD\u640D\u84C0\u905C\u98E1\u7387\u5B8B\u609A\u677E\u6DDE\u8A1F\u8AA6\u9001\u980C\u5237\uF970\u7051\u788E\u9396\u8870\u91D7\u4FEE\u53D7\u55FD\u56DA\u5782\u58FD\u5AC2\u5B88\u5CAB\u5CC0\u5E25\u6101\"],\n[\"e2a1\",\"\u620D\u624B\u6388\u641C\u6536\u6578\u6A39\u6B8A\u6C34\u6D19\u6F31\u71E7\u72E9\u7378\u7407\u74B2\u7626\u7761\u79C0\u7A57\u7AEA\u7CB9\u7D8F\u7DAC\u7E61\u7F9E\u8129\u8331\u8490\u84DA\u85EA\u8896\u8AB0\u8B90\u8F38\u9042\u9083\u916C\u9296\u92B9\u968B\u96A7\u96A8\u96D6\u9700\u9808\u9996\u9AD3\u9B1A\u53D4\u587E\u5919\u5B70\u5BBF\u6DD1\u6F5A\u719F\u7421\u74B9\u8085\u83FD\u5DE1\u5F87\u5FAA\u6042\u65EC\u6812\u696F\u6A53\u6B89\u6D35\u6DF3\u73E3\u76FE\u77AC\u7B4D\u7D14\u8123\u821C\u8340\u84F4\u8563\u8A62\u8AC4\u9187\u931E\u9806\u99B4\u620C\u8853\u8FF0\u9265\u5D07\u5D27\"],\n[\"e3a1\",\"\u5D69\u745F\u819D\u8768\u6FD5\u62FE\u7FD2\u8936\u8972\u4E1E\u4E58\u50E7\u52DD\u5347\u627F\u6607\u7E69\u8805\u965E\u4F8D\u5319\u5636\u59CB\u5AA4\u5C38\u5C4E\u5C4D\u5E02\u5F11\u6043\u65BD\u662F\u6642\u67BE\u67F4\u731C\u77E2\u793A\u7FC5\u8494\u84CD\u8996\u8A66\u8A69\u8AE1\u8C55\u8C7A\u57F4\u5BD4\u5F0F\u606F\u62ED\u690D\u6B96\u6E5C\u7184\u7BD2\u8755\u8B58\u8EFE\u98DF\u98FE\u4F38\u4F81\u4FE1\u547B\u5A20\u5BB8\u613C\u65B0\u6668\u71FC\u7533\u795E\u7D33\u814E\u81E3\u8398\u85AA\u85CE\u8703\u8A0A\u8EAB\u8F9B\uF971\u8FC5\u5931\u5BA4\u5BE6\u6089\u5BE9\u5C0B\u5FC3\u6C81\"],\n[\"e4a1\",\"\uF972\u6DF1\u700B\u751A\u82AF\u8AF6\u4EC0\u5341\uF973\u96D9\u6C0F\u4E9E\u4FC4\u5152\u555E\u5A25\u5CE8\u6211\u7259\u82BD\u83AA\u86FE\u8859\u8A1D\u963F\u96C5\u9913\u9D09\u9D5D\u580A\u5CB3\u5DBD\u5E44\u60E1\u6115\u63E1\u6A02\u6E25\u9102\u9354\u984E\u9C10\u9F77\u5B89\u5CB8\u6309\u664F\u6848\u773C\u96C1\u978D\u9854\u9B9F\u65A1\u8B01\u8ECB\u95BC\u5535\u5CA9\u5DD6\u5EB5\u6697\u764C\u83F4\u95C7\u58D3\u62BC\u72CE\u9D28\u4EF0\u592E\u600F\u663B\u6B83\u79E7\u9D26\u5393\u54C0\u57C3\u5D16\u611B\u66D6\u6DAF\u788D\u827E\u9698\u9744\u5384\u627C\u6396\u6DB2\u7E0A\u814B\u984D\"],\n[\"e5a1\",\"\u6AFB\u7F4C\u9DAF\u9E1A\u4E5F\u503B\u51B6\u591C\u60F9\u63F6\u6930\u723A\u8036\uF974\u91CE\u5F31\uF975\uF976\u7D04\u82E5\u846F\u84BB\u85E5\u8E8D\uF977\u4F6F\uF978\uF979\u58E4\u5B43\u6059\u63DA\u6518\u656D\u6698\uF97A\u694A\u6A23\u6D0B\u7001\u716C\u75D2\u760D\u79B3\u7A70\uF97B\u7F8A\uF97C\u8944\uF97D\u8B93\u91C0\u967D\uF97E\u990A\u5704\u5FA1\u65BC\u6F01\u7600\u79A6\u8A9E\u99AD\u9B5A\u9F6C\u5104\u61B6\u6291\u6A8D\u81C6\u5043\u5830\u5F66\u7109\u8A00\u8AFA\u5B7C\u8616\u4FFA\u513C\u56B4\u5944\u63A9\u6DF9\u5DAA\u696D\u5186\u4E88\u4F59\uF97F\uF980\uF981\u5982\uF982\"],\n[\"e6a1\",\"\uF983\u6B5F\u6C5D\uF984\u74B5\u7916\uF985\u8207\u8245\u8339\u8F3F\u8F5D\uF986\u9918\uF987\uF988\uF989\u4EA6\uF98A\u57DF\u5F79\u6613\uF98B\uF98C\u75AB\u7E79\u8B6F\uF98D\u9006\u9A5B\u56A5\u5827\u59F8\u5A1F\u5BB4\uF98E\u5EF6\uF98F\uF990\u6350\u633B\uF991\u693D\u6C87\u6CBF\u6D8E\u6D93\u6DF5\u6F14\uF992\u70DF\u7136\u7159\uF993\u71C3\u71D5\uF994\u784F\u786F\uF995\u7B75\u7DE3\uF996\u7E2F\uF997\u884D\u8EDF\uF998\uF999\uF99A\u925B\uF99B\u9CF6\uF99C\uF99D\uF99E\u6085\u6D85\uF99F\u71B1\uF9A0\uF9A1\u95B1\u53AD\uF9A2\uF9A3\uF9A4\u67D3\uF9A5\u708E\u7130\u7430\u8276\u82D2\"],\n[\"e7a1\",\"\uF9A6\u95BB\u9AE5\u9E7D\u66C4\uF9A7\u71C1\u8449\uF9A8\uF9A9\u584B\uF9AA\uF9AB\u5DB8\u5F71\uF9AC\u6620\u668E\u6979\u69AE\u6C38\u6CF3\u6E36\u6F41\u6FDA\u701B\u702F\u7150\u71DF\u7370\uF9AD\u745B\uF9AE\u74D4\u76C8\u7A4E\u7E93\uF9AF\uF9B0\u82F1\u8A60\u8FCE\uF9B1\u9348\uF9B2\u9719\uF9B3\uF9B4\u4E42\u502A\uF9B5\u5208\u53E1\u66F3\u6C6D\u6FCA\u730A\u777F\u7A62\u82AE\u85DD\u8602\uF9B6\u88D4\u8A63\u8B7D\u8C6B\uF9B7\u92B3\uF9B8\u9713\u9810\u4E94\u4F0D\u4FC9\u50B2\u5348\u543E\u5433\u55DA\u5862\u58BA\u5967\u5A1B\u5BE4\u609F\uF9B9\u61CA\u6556\u65FF\u6664\u68A7\u6C5A\u6FB3\"],\n[\"e8a1\",\"\u70CF\u71AC\u7352\u7B7D\u8708\u8AA4\u9C32\u9F07\u5C4B\u6C83\u7344\u7389\u923A\u6EAB\u7465\u761F\u7A69\u7E15\u860A\u5140\u58C5\u64C1\u74EE\u7515\u7670\u7FC1\u9095\u96CD\u9954\u6E26\u74E6\u7AA9\u7AAA\u81E5\u86D9\u8778\u8A1B\u5A49\u5B8C\u5B9B\u68A1\u6900\u6D63\u73A9\u7413\u742C\u7897\u7DE9\u7FEB\u8118\u8155\u839E\u8C4C\u962E\u9811\u66F0\u5F80\u65FA\u6789\u6C6A\u738B\u502D\u5A03\u6B6A\u77EE\u5916\u5D6C\u5DCD\u7325\u754F\uF9BA\uF9BB\u50E5\u51F9\u582F\u592D\u5996\u59DA\u5BE5\uF9BC\uF9BD\u5DA2\u62D7\u6416\u6493\u64FE\uF9BE\u66DC\uF9BF\u6A48\uF9C0\u71FF\u7464\uF9C1\"],\n[\"e9a1\",\"\u7A88\u7AAF\u7E47\u7E5E\u8000\u8170\uF9C2\u87EF\u8981\u8B20\u9059\uF9C3\u9080\u9952\u617E\u6B32\u6D74\u7E1F\u8925\u8FB1\u4FD1\u50AD\u5197\u52C7\u57C7\u5889\u5BB9\u5EB8\u6142\u6995\u6D8C\u6E67\u6EB6\u7194\u7462\u7528\u752C\u8073\u8338\u84C9\u8E0A\u9394\u93DE\uF9C4\u4E8E\u4F51\u5076\u512A\u53C8\u53CB\u53F3\u5B87\u5BD3\u5C24\u611A\u6182\u65F4\u725B\u7397\u7440\u76C2\u7950\u7991\u79B9\u7D06\u7FBD\u828B\u85D5\u865E\u8FC2\u9047\u90F5\u91EA\u9685\u96E8\u96E9\u52D6\u5F67\u65ED\u6631\u682F\u715C\u7A36\u90C1\u980A\u4E91\uF9C5\u6A52\u6B9E\u6F90\u7189\u8018\u82B8\u8553\"],\n[\"eaa1\",\"\u904B\u9695\u96F2\u97FB\u851A\u9B31\u4E90\u718A\u96C4\u5143\u539F\u54E1\u5713\u5712\u57A3\u5A9B\u5AC4\u5BC3\u6028\u613F\u63F4\u6C85\u6D39\u6E72\u6E90\u7230\u733F\u7457\u82D1\u8881\u8F45\u9060\uF9C6\u9662\u9858\u9D1B\u6708\u8D8A\u925E\u4F4D\u5049\u50DE\u5371\u570D\u59D4\u5A01\u5C09\u6170\u6690\u6E2D\u7232\u744B\u7DEF\u80C3\u840E\u8466\u853F\u875F\u885B\u8918\u8B02\u9055\u97CB\u9B4F\u4E73\u4F91\u5112\u516A\uF9C7\u552F\u55A9\u5B7A\u5BA5\u5E7C\u5E7D\u5EBE\u60A0\u60DF\u6108\u6109\u63C4\u6538\u6709\uF9C8\u67D4\u67DA\uF9C9\u6961\u6962\u6CB9\u6D27\uF9CA\u6E38\uF9CB\"],\n[\"eba1\",\"\u6FE1\u7336\u7337\uF9CC\u745C\u7531\uF9CD\u7652\uF9CE\uF9CF\u7DAD\u81FE\u8438\u88D5\u8A98\u8ADB\u8AED\u8E30\u8E42\u904A\u903E\u907A\u9149\u91C9\u936E\uF9D0\uF9D1\u5809\uF9D2\u6BD3\u8089\u80B2\uF9D3\uF9D4\u5141\u596B\u5C39\uF9D5\uF9D6\u6F64\u73A7\u80E4\u8D07\uF9D7\u9217\u958F\uF9D8\uF9D9\uF9DA\uF9DB\u807F\u620E\u701C\u7D68\u878D\uF9DC\u57A0\u6069\u6147\u6BB7\u8ABE\u9280\u96B1\u4E59\u541F\u6DEB\u852D\u9670\u97F3\u98EE\u63D6\u6CE3\u9091\u51DD\u61C9\u81BA\u9DF9\u4F9D\u501A\u5100\u5B9C\u610F\u61FF\u64EC\u6905\u6BC5\u7591\u77E3\u7FA9\u8264\u858F\u87FB\u8863\u8ABC\"],\n[\"eca1\",\"\u8B70\u91AB\u4E8C\u4EE5\u4F0A\uF9DD\uF9DE\u5937\u59E8\uF9DF\u5DF2\u5F1B\u5F5B\u6021\uF9E0\uF9E1\uF9E2\uF9E3\u723E\u73E5\uF9E4\u7570\u75CD\uF9E5\u79FB\uF9E6\u800C\u8033\u8084\u82E1\u8351\uF9E7\uF9E8\u8CBD\u8CB3\u9087\uF9E9\uF9EA\u98F4\u990C\uF9EB\uF9EC\u7037\u76CA\u7FCA\u7FCC\u7FFC\u8B1A\u4EBA\u4EC1\u5203\u5370\uF9ED\u54BD\u56E0\u59FB\u5BC5\u5F15\u5FCD\u6E6E\uF9EE\uF9EF\u7D6A\u8335\uF9F0\u8693\u8A8D\uF9F1\u976D\u9777\uF9F2\uF9F3\u4E00\u4F5A\u4F7E\u58F9\u65E5\u6EA2\u9038\u93B0\u99B9\u4EFB\u58EC\u598A\u59D9\u6041\uF9F4\uF9F5\u7A14\uF9F6\u834F\u8CC3\u5165\u5344\"],\n[\"eda1\",\"\uF9F7\uF9F8\uF9F9\u4ECD\u5269\u5B55\u82BF\u4ED4\u523A\u54A8\u59C9\u59FF\u5B50\u5B57\u5B5C\u6063\u6148\u6ECB\u7099\u716E\u7386\u74F7\u75B5\u78C1\u7D2B\u8005\u81EA\u8328\u8517\u85C9\u8AEE\u8CC7\u96CC\u4F5C\u52FA\u56BC\u65AB\u6628\u707C\u70B8\u7235\u7DBD\u828D\u914C\u96C0\u9D72\u5B71\u68E7\u6B98\u6F7A\u76DE\u5C91\u66AB\u6F5B\u7BB4\u7C2A\u8836\u96DC\u4E08\u4ED7\u5320\u5834\u58BB\u58EF\u596C\u5C07\u5E33\u5E84\u5F35\u638C\u66B2\u6756\u6A1F\u6AA3\u6B0C\u6F3F\u7246\uF9FA\u7350\u748B\u7AE0\u7CA7\u8178\u81DF\u81E7\u838A\u846C\u8523\u8594\u85CF\u88DD\u8D13\u91AC\u9577\"],\n[\"eea1\",\"\u969C\u518D\u54C9\u5728\u5BB0\u624D\u6750\u683D\u6893\u6E3D\u6ED3\u707D\u7E21\u88C1\u8CA1\u8F09\u9F4B\u9F4E\u722D\u7B8F\u8ACD\u931A\u4F47\u4F4E\u5132\u5480\u59D0\u5E95\u62B5\u6775\u696E\u6A17\u6CAE\u6E1A\u72D9\u732A\u75BD\u7BB8\u7D35\u82E7\u83F9\u8457\u85F7\u8A5B\u8CAF\u8E87\u9019\u90B8\u96CE\u9F5F\u52E3\u540A\u5AE1\u5BC2\u6458\u6575\u6EF4\u72C4\uF9FB\u7684\u7A4D\u7B1B\u7C4D\u7E3E\u7FDF\u837B\u8B2B\u8CCA\u8D64\u8DE1\u8E5F\u8FEA\u8FF9\u9069\u93D1\u4F43\u4F7A\u50B3\u5168\u5178\u524D\u526A\u5861\u587C\u5960\u5C08\u5C55\u5EDB\u609B\u6230\u6813\u6BBF\u6C08\u6FB1\"],\n[\"efa1\",\"\u714E\u7420\u7530\u7538\u7551\u7672\u7B4C\u7B8B\u7BAD\u7BC6\u7E8F\u8A6E\u8F3E\u8F49\u923F\u9293\u9322\u942B\u96FB\u985A\u986B\u991E\u5207\u622A\u6298\u6D59\u7664\u7ACA\u7BC0\u7D76\u5360\u5CBE\u5E97\u6F38\u70B9\u7C98\u9711\u9B8E\u9EDE\u63A5\u647A\u8776\u4E01\u4E95\u4EAD\u505C\u5075\u5448\u59C3\u5B9A\u5E40\u5EAD\u5EF7\u5F81\u60C5\u633A\u653F\u6574\u65CC\u6676\u6678\u67FE\u6968\u6A89\u6B63\u6C40\u6DC0\u6DE8\u6E1F\u6E5E\u701E\u70A1\u738E\u73FD\u753A\u775B\u7887\u798E\u7A0B\u7A7D\u7CBE\u7D8E\u8247\u8A02\u8AEA\u8C9E\u912D\u914A\u91D8\u9266\u92CC\u9320\u9706\u9756\"],\n[\"f0a1\",\"\u975C\u9802\u9F0E\u5236\u5291\u557C\u5824\u5E1D\u5F1F\u608C\u63D0\u68AF\u6FDF\u796D\u7B2C\u81CD\u85BA\u88FD\u8AF8\u8E44\u918D\u9664\u969B\u973D\u984C\u9F4A\u4FCE\u5146\u51CB\u52A9\u5632\u5F14\u5F6B\u63AA\u64CD\u65E9\u6641\u66FA\u66F9\u671D\u689D\u68D7\u69FD\u6F15\u6F6E\u7167\u71E5\u722A\u74AA\u773A\u7956\u795A\u79DF\u7A20\u7A95\u7C97\u7CDF\u7D44\u7E70\u8087\u85FB\u86A4\u8A54\u8ABF\u8D99\u8E81\u9020\u906D\u91E3\u963B\u96D5\u9CE5\u65CF\u7C07\u8DB3\u93C3\u5B58\u5C0A\u5352\u62D9\u731D\u5027\u5B97\u5F9E\u60B0\u616B\u68D5\u6DD9\u742E\u7A2E\u7D42\u7D9C\u7E31\u816B\"],\n[\"f1a1\",\"\u8E2A\u8E35\u937E\u9418\u4F50\u5750\u5DE6\u5EA7\u632B\u7F6A\u4E3B\u4F4F\u4F8F\u505A\u59DD\u80C4\u546A\u5468\u55FE\u594F\u5B99\u5DDE\u5EDA\u665D\u6731\u67F1\u682A\u6CE8\u6D32\u6E4A\u6F8D\u70B7\u73E0\u7587\u7C4C\u7D02\u7D2C\u7DA2\u821F\u86DB\u8A3B\u8A85\u8D70\u8E8A\u8F33\u9031\u914E\u9152\u9444\u99D0\u7AF9\u7CA5\u4FCA\u5101\u51C6\u57C8\u5BEF\u5CFB\u6659\u6A3D\u6D5A\u6E96\u6FEC\u710C\u756F\u7AE3\u8822\u9021\u9075\u96CB\u99FF\u8301\u4E2D\u4EF2\u8846\u91CD\u537D\u6ADB\u696B\u6C41\u847A\u589E\u618E\u66FE\u62EF\u70DD\u7511\u75C7\u7E52\u84B8\u8B49\u8D08\u4E4B\u53EA\"],\n[\"f2a1\",\"\u54AB\u5730\u5740\u5FD7\u6301\u6307\u646F\u652F\u65E8\u667A\u679D\u67B3\u6B62\u6C60\u6C9A\u6F2C\u77E5\u7825\u7949\u7957\u7D19\u80A2\u8102\u81F3\u829D\u82B7\u8718\u8A8C\uF9FC\u8D04\u8DBE\u9072\u76F4\u7A19\u7A37\u7E54\u8077\u5507\u55D4\u5875\u632F\u6422\u6649\u664B\u686D\u699B\u6B84\u6D25\u6EB1\u73CD\u7468\u74A1\u755B\u75B9\u76E1\u771E\u778B\u79E6\u7E09\u7E1D\u81FB\u852F\u8897\u8A3A\u8CD1\u8EEB\u8FB0\u9032\u93AD\u9663\u9673\u9707\u4F84\u53F1\u59EA\u5AC9\u5E19\u684E\u74C6\u75BE\u79E9\u7A92\u81A3\u86ED\u8CEA\u8DCC\u8FED\u659F\u6715\uF9FD\u57F7\u6F57\u7DDD\u8F2F\"],\n[\"f3a1\",\"\u93F6\u96C6\u5FB5\u61F2\u6F84\u4E14\u4F98\u501F\u53C9\u55DF\u5D6F\u5DEE\u6B21\u6B64\u78CB\u7B9A\uF9FE\u8E49\u8ECA\u906E\u6349\u643E\u7740\u7A84\u932F\u947F\u9F6A\u64B0\u6FAF\u71E6\u74A8\u74DA\u7AC4\u7C12\u7E82\u7CB2\u7E98\u8B9A\u8D0A\u947D\u9910\u994C\u5239\u5BDF\u64E6\u672D\u7D2E\u50ED\u53C3\u5879\u6158\u6159\u61FA\u65AC\u7AD9\u8B92\u8B96\u5009\u5021\u5275\u5531\u5A3C\u5EE0\u5F70\u6134\u655E\u660C\u6636\u66A2\u69CD\u6EC4\u6F32\u7316\u7621\u7A93\u8139\u8259\u83D6\u84BC\u50B5\u57F0\u5BC0\u5BE8\u5F69\u63A1\u7826\u7DB5\u83DC\u8521\u91C7\u91F5\u518A\u67F5\u7B56\"],\n[\"f4a1\",\"\u8CAC\u51C4\u59BB\u60BD\u8655\u501C\uF9FF\u5254\u5C3A\u617D\u621A\u62D3\u64F2\u65A5\u6ECC\u7620\u810A\u8E60\u965F\u96BB\u4EDF\u5343\u5598\u5929\u5DDD\u64C5\u6CC9\u6DFA\u7394\u7A7F\u821B\u85A6\u8CE4\u8E10\u9077\u91E7\u95E1\u9621\u97C6\u51F8\u54F2\u5586\u5FB9\u64A4\u6F88\u7DB4\u8F1F\u8F4D\u9435\u50C9\u5C16\u6CBE\u6DFB\u751B\u77BB\u7C3D\u7C64\u8A79\u8AC2\u581E\u59BE\u5E16\u6377\u7252\u758A\u776B\u8ADC\u8CBC\u8F12\u5EF3\u6674\u6DF8\u807D\u83C1\u8ACB\u9751\u9BD6\uFA00\u5243\u66FF\u6D95\u6EEF\u7DE0\u8AE6\u902E\u905E\u9AD4\u521D\u527F\u54E8\u6194\u6284\u62DB\u68A2\"],\n[\"f5a1\",\"\u6912\u695A\u6A35\u7092\u7126\u785D\u7901\u790E\u79D2\u7A0D\u8096\u8278\u82D5\u8349\u8549\u8C82\u8D85\u9162\u918B\u91AE\u4FC3\u56D1\u71ED\u77D7\u8700\u89F8\u5BF8\u5FD6\u6751\u90A8\u53E2\u585A\u5BF5\u60A4\u6181\u6460\u7E3D\u8070\u8525\u9283\u64AE\u50AC\u5D14\u6700\u589C\u62BD\u63A8\u690E\u6978\u6A1E\u6E6B\u76BA\u79CB\u82BB\u8429\u8ACF\u8DA8\u8FFD\u9112\u914B\u919C\u9310\u9318\u939A\u96DB\u9A36\u9C0D\u4E11\u755C\u795D\u7AFA\u7B51\u7BC9\u7E2E\u84C4\u8E59\u8E74\u8EF8\u9010\u6625\u693F\u7443\u51FA\u672E\u9EDC\u5145\u5FE0\u6C96\u87F2\u885D\u8877\u60B4\u81B5\u8403\"],\n[\"f6a1\",\"\u8D05\u53D6\u5439\u5634\u5A36\u5C31\u708A\u7FE0\u805A\u8106\u81ED\u8DA3\u9189\u9A5F\u9DF2\u5074\u4EC4\u53A0\u60FB\u6E2C\u5C64\u4F88\u5024\u55E4\u5CD9\u5E5F\u6065\u6894\u6CBB\u6DC4\u71BE\u75D4\u75F4\u7661\u7A1A\u7A49\u7DC7\u7DFB\u7F6E\u81F4\u86A9\u8F1C\u96C9\u99B3\u9F52\u5247\u52C5\u98ED\u89AA\u4E03\u67D2\u6F06\u4FB5\u5BE2\u6795\u6C88\u6D78\u741B\u7827\u91DD\u937C\u87C4\u79E4\u7A31\u5FEB\u4ED6\u54A4\u553E\u58AE\u59A5\u60F0\u6253\u62D6\u6736\u6955\u8235\u9640\u99B1\u99DD\u502C\u5353\u5544\u577C\uFA01\u6258\uFA02\u64E2\u666B\u67DD\u6FC1\u6FEF\u7422\u7438\u8A17\"],\n[\"f7a1\",\"\u9438\u5451\u5606\u5766\u5F48\u619A\u6B4E\u7058\u70AD\u7DBB\u8A95\u596A\u812B\u63A2\u7708\u803D\u8CAA\u5854\u642D\u69BB\u5B95\u5E11\u6E6F\uFA03\u8569\u514C\u53F0\u592A\u6020\u614B\u6B86\u6C70\u6CF0\u7B1E\u80CE\u82D4\u8DC6\u90B0\u98B1\uFA04\u64C7\u6FA4\u6491\u6504\u514E\u5410\u571F\u8A0E\u615F\u6876\uFA05\u75DB\u7B52\u7D71\u901A\u5806\u69CC\u817F\u892A\u9000\u9839\u5078\u5957\u59AC\u6295\u900F\u9B2A\u615D\u7279\u95D6\u5761\u5A46\u5DF4\u628A\u64AD\u64FA\u6777\u6CE2\u6D3E\u722C\u7436\u7834\u7F77\u82AD\u8DDB\u9817\u5224\u5742\u677F\u7248\u74E3\u8CA9\u8FA6\u9211\"],\n[\"f8a1\",\"\u962A\u516B\u53ED\u634C\u4F69\u5504\u6096\u6557\u6C9B\u6D7F\u724C\u72FD\u7A17\u8987\u8C9D\u5F6D\u6F8E\u70F9\u81A8\u610E\u4FBF\u504F\u6241\u7247\u7BC7\u7DE8\u7FE9\u904D\u97AD\u9A19\u8CB6\u576A\u5E73\u67B0\u840D\u8A55\u5420\u5B16\u5E63\u5EE2\u5F0A\u6583\u80BA\u853D\u9589\u965B\u4F48\u5305\u530D\u530F\u5486\u54FA\u5703\u5E03\u6016\u629B\u62B1\u6355\uFA06\u6CE1\u6D66\u75B1\u7832\u80DE\u812F\u82DE\u8461\u84B2\u888D\u8912\u900B\u92EA\u98FD\u9B91\u5E45\u66B4\u66DD\u7011\u7206\uFA07\u4FF5\u527D\u5F6A\u6153\u6753\u6A19\u6F02\u74E2\u7968\u8868\u8C79\u98C7\u98C4\u9A43\"],\n[\"f9a1\",\"\u54C1\u7A1F\u6953\u8AF7\u8C4A\u98A8\u99AE\u5F7C\u62AB\u75B2\u76AE\u88AB\u907F\u9642\u5339\u5F3C\u5FC5\u6CCC\u73CC\u7562\u758B\u7B46\u82FE\u999D\u4E4F\u903C\u4E0B\u4F55\u53A6\u590F\u5EC8\u6630\u6CB3\u7455\u8377\u8766\u8CC0\u9050\u971E\u9C15\u58D1\u5B78\u8650\u8B14\u9DB4\u5BD2\u6068\u608D\u65F1\u6C57\u6F22\u6FA3\u701A\u7F55\u7FF0\u9591\u9592\u9650\u97D3\u5272\u8F44\u51FD\u542B\u54B8\u5563\u558A\u6ABB\u6DB5\u7DD8\u8266\u929C\u9677\u9E79\u5408\u54C8\u76D2\u86E4\u95A4\u95D4\u965C\u4EA2\u4F09\u59EE\u5AE6\u5DF7\u6052\u6297\u676D\u6841\u6C86\u6E2F\u7F38\u809B\u822A\"],\n[\"faa1\",\"\uFA08\uFA09\u9805\u4EA5\u5055\u54B3\u5793\u595A\u5B69\u5BB3\u61C8\u6977\u6D77\u7023\u87F9\u89E3\u8A72\u8AE7\u9082\u99ED\u9AB8\u52BE\u6838\u5016\u5E78\u674F\u8347\u884C\u4EAB\u5411\u56AE\u73E6\u9115\u97FF\u9909\u9957\u9999\u5653\u589F\u865B\u8A31\u61B2\u6AF6\u737B\u8ED2\u6B47\u96AA\u9A57\u5955\u7200\u8D6B\u9769\u4FD4\u5CF4\u5F26\u61F8\u665B\u6CEB\u70AB\u7384\u73B9\u73FE\u7729\u774D\u7D43\u7D62\u7E23\u8237\u8852\uFA0A\u8CE2\u9249\u986F\u5B51\u7A74\u8840\u9801\u5ACC\u4FE0\u5354\u593E\u5CFD\u633E\u6D79\u72F9\u8105\u8107\u83A2\u92CF\u9830\u4EA8\u5144\u5211\u578B\"],\n[\"fba1\",\"\u5F62\u6CC2\u6ECE\u7005\u7050\u70AF\u7192\u73E9\u7469\u834A\u87A2\u8861\u9008\u90A2\u93A3\u99A8\u516E\u5F57\u60E0\u6167\u66B3\u8559\u8E4A\u91AF\u978B\u4E4E\u4E92\u547C\u58D5\u58FA\u597D\u5CB5\u5F27\u6236\u6248\u660A\u6667\u6BEB\u6D69\u6DCF\u6E56\u6EF8\u6F94\u6FE0\u6FE9\u705D\u72D0\u7425\u745A\u74E0\u7693\u795C\u7CCA\u7E1E\u80E1\u82A6\u846B\u84BF\u864E\u865F\u8774\u8B77\u8C6A\u93AC\u9800\u9865\u60D1\u6216\u9177\u5A5A\u660F\u6DF7\u6E3E\u743F\u9B42\u5FFD\u60DA\u7B0F\u54C4\u5F18\u6C5E\u6CD3\u6D2A\u70D8\u7D05\u8679\u8A0C\u9D3B\u5316\u548C\u5B05\u6A3A\u706B\u7575\"],\n[\"fca1\",\"\u798D\u79BE\u82B1\u83EF\u8A71\u8B41\u8CA8\u9774\uFA0B\u64F4\u652B\u78BA\u78BB\u7A6B\u4E38\u559A\u5950\u5BA6\u5E7B\u60A3\u63DB\u6B61\u6665\u6853\u6E19\u7165\u74B0\u7D08\u9084\u9A69\u9C25\u6D3B\u6ED1\u733E\u8C41\u95CA\u51F0\u5E4C\u5FA8\u604D\u60F6\u6130\u614C\u6643\u6644\u69A5\u6CC1\u6E5F\u6EC9\u6F62\u714C\u749C\u7687\u7BC1\u7C27\u8352\u8757\u9051\u968D\u9EC3\u532F\u56DE\u5EFB\u5F8A\u6062\u6094\u61F7\u6666\u6703\u6A9C\u6DEE\u6FAE\u7070\u736A\u7E6A\u81BE\u8334\u86D4\u8AA8\u8CC4\u5283\u7372\u5B96\u6A6B\u9404\u54EE\u5686\u5B5D\u6548\u6585\u66C9\u689F\u6D8D\u6DC6\"],\n[\"fda1\",\"\u723B\u80B4\u9175\u9A4D\u4FAF\u5019\u539A\u540E\u543C\u5589\u55C5\u5E3F\u5F8C\u673D\u7166\u73DD\u9005\u52DB\u52F3\u5864\u58CE\u7104\u718F\u71FB\u85B0\u8A13\u6688\u85A8\u55A7\u6684\u714A\u8431\u5349\u5599\u6BC1\u5F59\u5FBD\u63EE\u6689\u7147\u8AF1\u8F1D\u9EBE\u4F11\u643A\u70CB\u7566\u8667\u6064\u8B4E\u9DF8\u5147\u51F6\u5308\u6D36\u80F8\u9ED1\u6615\u6B23\u7098\u75D5\u5403\u5C79\u7D07\u8A16\u6B20\u6B3D\u6B46\u5438\u6070\u6D3D\u7FD5\u8208\u50D6\u51DE\u559C\u566B\u56CD\u59EC\u5B09\u5E0C\u6199\u6198\u6231\u665E\u66E6\u7199\u71B9\u71BA\u72A7\u79A7\u7A00\u7FB2\u8A70\"]\n]\n", "[\n[\"0\",\"\\u0000\",127],\n[\"a140\",\"\u3000\uFF0C\u3001\u3002\uFF0E\u2027\uFF1B\uFF1A\uFF1F\uFF01\uFE30\u2026\u2025\uFE50\uFE51\uFE52\u00B7\uFE54\uFE55\uFE56\uFE57\uFF5C\u2013\uFE31\u2014\uFE33\u2574\uFE34\uFE4F\uFF08\uFF09\uFE35\uFE36\uFF5B\uFF5D\uFE37\uFE38\u3014\u3015\uFE39\uFE3A\u3010\u3011\uFE3B\uFE3C\u300A\u300B\uFE3D\uFE3E\u3008\u3009\uFE3F\uFE40\u300C\u300D\uFE41\uFE42\u300E\u300F\uFE43\uFE44\uFE59\uFE5A\"],\n[\"a1a1\",\"\uFE5B\uFE5C\uFE5D\uFE5E\u2018\u2019\u201C\u201D\u301D\u301E\u2035\u2032\uFF03\uFF06\uFF0A\u203B\u00A7\u3003\u25CB\u25CF\u25B3\u25B2\u25CE\u2606\u2605\u25C7\u25C6\u25A1\u25A0\u25BD\u25BC\u32A3\u2105\u00AF\uFFE3\uFF3F\u02CD\uFE49\uFE4A\uFE4D\uFE4E\uFE4B\uFE4C\uFE5F\uFE60\uFE61\uFF0B\uFF0D\u00D7\u00F7\u00B1\u221A\uFF1C\uFF1E\uFF1D\u2266\u2267\u2260\u221E\u2252\u2261\uFE62\",4,\"\uFF5E\u2229\u222A\u22A5\u2220\u221F\u22BF\u33D2\u33D1\u222B\u222E\u2235\u2234\u2640\u2642\u2295\u2299\u2191\u2193\u2190\u2192\u2196\u2197\u2199\u2198\u2225\u2223\uFF0F\"],\n[\"a240\",\"\uFF3C\u2215\uFE68\uFF04\uFFE5\u3012\uFFE0\uFFE1\uFF05\uFF20\u2103\u2109\uFE69\uFE6A\uFE6B\u33D5\u339C\u339D\u339E\u33CE\u33A1\u338E\u338F\u33C4\u00B0\u5159\u515B\u515E\u515D\u5161\u5163\u55E7\u74E9\u7CCE\u2581\",7,\"\u258F\u258E\u258D\u258C\u258B\u258A\u2589\u253C\u2534\u252C\u2524\u251C\u2594\u2500\u2502\u2595\u250C\u2510\u2514\u2518\u256D\"],\n[\"a2a1\",\"\u256E\u2570\u256F\u2550\u255E\u256A\u2561\u25E2\u25E3\u25E5\u25E4\u2571\u2572\u2573\uFF10\",9,\"\u2160\",9,\"\u3021\",8,\"\u5341\u5344\u5345\uFF21\",25,\"\uFF41\",21],\n[\"a340\",\"\uFF57\uFF58\uFF59\uFF5A\u0391\",16,\"\u03A3\",6,\"\u03B1\",16,\"\u03C3\",6,\"\u3105\",10],\n[\"a3a1\",\"\u3110\",25,\"\u02D9\u02C9\u02CA\u02C7\u02CB\"],\n[\"a3e1\",\"\u20AC\"],\n[\"a440\",\"\u4E00\u4E59\u4E01\u4E03\u4E43\u4E5D\u4E86\u4E8C\u4EBA\u513F\u5165\u516B\u51E0\u5200\u5201\u529B\u5315\u5341\u535C\u53C8\u4E09\u4E0B\u4E08\u4E0A\u4E2B\u4E38\u51E1\u4E45\u4E48\u4E5F\u4E5E\u4E8E\u4EA1\u5140\u5203\u52FA\u5343\u53C9\u53E3\u571F\u58EB\u5915\u5927\u5973\u5B50\u5B51\u5B53\u5BF8\u5C0F\u5C22\u5C38\u5C71\u5DDD\u5DE5\u5DF1\u5DF2\u5DF3\u5DFE\u5E72\u5EFE\u5F0B\u5F13\u624D\"],\n[\"a4a1\",\"\u4E11\u4E10\u4E0D\u4E2D\u4E30\u4E39\u4E4B\u5C39\u4E88\u4E91\u4E95\u4E92\u4E94\u4EA2\u4EC1\u4EC0\u4EC3\u4EC6\u4EC7\u4ECD\u4ECA\u4ECB\u4EC4\u5143\u5141\u5167\u516D\u516E\u516C\u5197\u51F6\u5206\u5207\u5208\u52FB\u52FE\u52FF\u5316\u5339\u5348\u5347\u5345\u535E\u5384\u53CB\u53CA\u53CD\u58EC\u5929\u592B\u592A\u592D\u5B54\u5C11\u5C24\u5C3A\u5C6F\u5DF4\u5E7B\u5EFF\u5F14\u5F15\u5FC3\u6208\u6236\u624B\u624E\u652F\u6587\u6597\u65A4\u65B9\u65E5\u66F0\u6708\u6728\u6B20\u6B62\u6B79\u6BCB\u6BD4\u6BDB\u6C0F\u6C34\u706B\u722A\u7236\u723B\u7247\u7259\u725B\u72AC\u738B\u4E19\"],\n[\"a540\",\"\u4E16\u4E15\u4E14\u4E18\u4E3B\u4E4D\u4E4F\u4E4E\u4EE5\u4ED8\u4ED4\u4ED5\u4ED6\u4ED7\u4EE3\u4EE4\u4ED9\u4EDE\u5145\u5144\u5189\u518A\u51AC\u51F9\u51FA\u51F8\u520A\u52A0\u529F\u5305\u5306\u5317\u531D\u4EDF\u534A\u5349\u5361\u5360\u536F\u536E\u53BB\u53EF\u53E4\u53F3\u53EC\u53EE\u53E9\u53E8\u53FC\u53F8\u53F5\u53EB\u53E6\u53EA\u53F2\u53F1\u53F0\u53E5\u53ED\u53FB\u56DB\u56DA\u5916\"],\n[\"a5a1\",\"\u592E\u5931\u5974\u5976\u5B55\u5B83\u5C3C\u5DE8\u5DE7\u5DE6\u5E02\u5E03\u5E73\u5E7C\u5F01\u5F18\u5F17\u5FC5\u620A\u6253\u6254\u6252\u6251\u65A5\u65E6\u672E\u672C\u672A\u672B\u672D\u6B63\u6BCD\u6C11\u6C10\u6C38\u6C41\u6C40\u6C3E\u72AF\u7384\u7389\u74DC\u74E6\u7518\u751F\u7528\u7529\u7530\u7531\u7532\u7533\u758B\u767D\u76AE\u76BF\u76EE\u77DB\u77E2\u77F3\u793A\u79BE\u7A74\u7ACB\u4E1E\u4E1F\u4E52\u4E53\u4E69\u4E99\u4EA4\u4EA6\u4EA5\u4EFF\u4F09\u4F19\u4F0A\u4F15\u4F0D\u4F10\u4F11\u4F0F\u4EF2\u4EF6\u4EFB\u4EF0\u4EF3\u4EFD\u4F01\u4F0B\u5149\u5147\u5146\u5148\u5168\"],\n[\"a640\",\"\u5171\u518D\u51B0\u5217\u5211\u5212\u520E\u5216\u52A3\u5308\u5321\u5320\u5370\u5371\u5409\u540F\u540C\u540A\u5410\u5401\u540B\u5404\u5411\u540D\u5408\u5403\u540E\u5406\u5412\u56E0\u56DE\u56DD\u5733\u5730\u5728\u572D\u572C\u572F\u5729\u5919\u591A\u5937\u5938\u5984\u5978\u5983\u597D\u5979\u5982\u5981\u5B57\u5B58\u5B87\u5B88\u5B85\u5B89\u5BFA\u5C16\u5C79\u5DDE\u5E06\u5E76\u5E74\"],\n[\"a6a1\",\"\u5F0F\u5F1B\u5FD9\u5FD6\u620E\u620C\u620D\u6210\u6263\u625B\u6258\u6536\u65E9\u65E8\u65EC\u65ED\u66F2\u66F3\u6709\u673D\u6734\u6731\u6735\u6B21\u6B64\u6B7B\u6C16\u6C5D\u6C57\u6C59\u6C5F\u6C60\u6C50\u6C55\u6C61\u6C5B\u6C4D\u6C4E\u7070\u725F\u725D\u767E\u7AF9\u7C73\u7CF8\u7F36\u7F8A\u7FBD\u8001\u8003\u800C\u8012\u8033\u807F\u8089\u808B\u808C\u81E3\u81EA\u81F3\u81FC\u820C\u821B\u821F\u826E\u8272\u827E\u866B\u8840\u884C\u8863\u897F\u9621\u4E32\u4EA8\u4F4D\u4F4F\u4F47\u4F57\u4F5E\u4F34\u4F5B\u4F55\u4F30\u4F50\u4F51\u4F3D\u4F3A\u4F38\u4F43\u4F54\u4F3C\u4F46\u4F63\"],\n[\"a740\",\"\u4F5C\u4F60\u4F2F\u4F4E\u4F36\u4F59\u4F5D\u4F48\u4F5A\u514C\u514B\u514D\u5175\u51B6\u51B7\u5225\u5224\u5229\u522A\u5228\u52AB\u52A9\u52AA\u52AC\u5323\u5373\u5375\u541D\u542D\u541E\u543E\u5426\u544E\u5427\u5446\u5443\u5433\u5448\u5442\u541B\u5429\u544A\u5439\u543B\u5438\u542E\u5435\u5436\u5420\u543C\u5440\u5431\u542B\u541F\u542C\u56EA\u56F0\u56E4\u56EB\u574A\u5751\u5740\u574D\"],\n[\"a7a1\",\"\u5747\u574E\u573E\u5750\u574F\u573B\u58EF\u593E\u599D\u5992\u59A8\u599E\u59A3\u5999\u5996\u598D\u59A4\u5993\u598A\u59A5\u5B5D\u5B5C\u5B5A\u5B5B\u5B8C\u5B8B\u5B8F\u5C2C\u5C40\u5C41\u5C3F\u5C3E\u5C90\u5C91\u5C94\u5C8C\u5DEB\u5E0C\u5E8F\u5E87\u5E8A\u5EF7\u5F04\u5F1F\u5F64\u5F62\u5F77\u5F79\u5FD8\u5FCC\u5FD7\u5FCD\u5FF1\u5FEB\u5FF8\u5FEA\u6212\u6211\u6284\u6297\u6296\u6280\u6276\u6289\u626D\u628A\u627C\u627E\u6279\u6273\u6292\u626F\u6298\u626E\u6295\u6293\u6291\u6286\u6539\u653B\u6538\u65F1\u66F4\u675F\u674E\u674F\u6750\u6751\u675C\u6756\u675E\u6749\u6746\u6760\"],\n[\"a840\",\"\u6753\u6757\u6B65\u6BCF\u6C42\u6C5E\u6C99\u6C81\u6C88\u6C89\u6C85\u6C9B\u6C6A\u6C7A\u6C90\u6C70\u6C8C\u6C68\u6C96\u6C92\u6C7D\u6C83\u6C72\u6C7E\u6C74\u6C86\u6C76\u6C8D\u6C94\u6C98\u6C82\u7076\u707C\u707D\u7078\u7262\u7261\u7260\u72C4\u72C2\u7396\u752C\u752B\u7537\u7538\u7682\u76EF\u77E3\u79C1\u79C0\u79BF\u7A76\u7CFB\u7F55\u8096\u8093\u809D\u8098\u809B\u809A\u80B2\u826F\u8292\"],\n[\"a8a1\",\"\u828B\u828D\u898B\u89D2\u8A00\u8C37\u8C46\u8C55\u8C9D\u8D64\u8D70\u8DB3\u8EAB\u8ECA\u8F9B\u8FB0\u8FC2\u8FC6\u8FC5\u8FC4\u5DE1\u9091\u90A2\u90AA\u90A6\u90A3\u9149\u91C6\u91CC\u9632\u962E\u9631\u962A\u962C\u4E26\u4E56\u4E73\u4E8B\u4E9B\u4E9E\u4EAB\u4EAC\u4F6F\u4F9D\u4F8D\u4F73\u4F7F\u4F6C\u4F9B\u4F8B\u4F86\u4F83\u4F70\u4F75\u4F88\u4F69\u4F7B\u4F96\u4F7E\u4F8F\u4F91\u4F7A\u5154\u5152\u5155\u5169\u5177\u5176\u5178\u51BD\u51FD\u523B\u5238\u5237\u523A\u5230\u522E\u5236\u5241\u52BE\u52BB\u5352\u5354\u5353\u5351\u5366\u5377\u5378\u5379\u53D6\u53D4\u53D7\u5473\u5475\"],\n[\"a940\",\"\u5496\u5478\u5495\u5480\u547B\u5477\u5484\u5492\u5486\u547C\u5490\u5471\u5476\u548C\u549A\u5462\u5468\u548B\u547D\u548E\u56FA\u5783\u5777\u576A\u5769\u5761\u5766\u5764\u577C\u591C\u5949\u5947\u5948\u5944\u5954\u59BE\u59BB\u59D4\u59B9\u59AE\u59D1\u59C6\u59D0\u59CD\u59CB\u59D3\u59CA\u59AF\u59B3\u59D2\u59C5\u5B5F\u5B64\u5B63\u5B97\u5B9A\u5B98\u5B9C\u5B99\u5B9B\u5C1A\u5C48\u5C45\"],\n[\"a9a1\",\"\u5C46\u5CB7\u5CA1\u5CB8\u5CA9\u5CAB\u5CB1\u5CB3\u5E18\u5E1A\u5E16\u5E15\u5E1B\u5E11\u5E78\u5E9A\u5E97\u5E9C\u5E95\u5E96\u5EF6\u5F26\u5F27\u5F29\u5F80\u5F81\u5F7F\u5F7C\u5FDD\u5FE0\u5FFD\u5FF5\u5FFF\u600F\u6014\u602F\u6035\u6016\u602A\u6015\u6021\u6027\u6029\u602B\u601B\u6216\u6215\u623F\u623E\u6240\u627F\u62C9\u62CC\u62C4\u62BF\u62C2\u62B9\u62D2\u62DB\u62AB\u62D3\u62D4\u62CB\u62C8\u62A8\u62BD\u62BC\u62D0\u62D9\u62C7\u62CD\u62B5\u62DA\u62B1\u62D8\u62D6\u62D7\u62C6\u62AC\u62CE\u653E\u65A7\u65BC\u65FA\u6614\u6613\u660C\u6606\u6602\u660E\u6600\u660F\u6615\u660A\"],\n[\"aa40\",\"\u6607\u670D\u670B\u676D\u678B\u6795\u6771\u679C\u6773\u6777\u6787\u679D\u6797\u676F\u6770\u677F\u6789\u677E\u6790\u6775\u679A\u6793\u677C\u676A\u6772\u6B23\u6B66\u6B67\u6B7F\u6C13\u6C1B\u6CE3\u6CE8\u6CF3\u6CB1\u6CCC\u6CE5\u6CB3\u6CBD\u6CBE\u6CBC\u6CE2\u6CAB\u6CD5\u6CD3\u6CB8\u6CC4\u6CB9\u6CC1\u6CAE\u6CD7\u6CC5\u6CF1\u6CBF\u6CBB\u6CE1\u6CDB\u6CCA\u6CAC\u6CEF\u6CDC\u6CD6\u6CE0\"],\n[\"aaa1\",\"\u7095\u708E\u7092\u708A\u7099\u722C\u722D\u7238\u7248\u7267\u7269\u72C0\u72CE\u72D9\u72D7\u72D0\u73A9\u73A8\u739F\u73AB\u73A5\u753D\u759D\u7599\u759A\u7684\u76C2\u76F2\u76F4\u77E5\u77FD\u793E\u7940\u7941\u79C9\u79C8\u7A7A\u7A79\u7AFA\u7CFE\u7F54\u7F8C\u7F8B\u8005\u80BA\u80A5\u80A2\u80B1\u80A1\u80AB\u80A9\u80B4\u80AA\u80AF\u81E5\u81FE\u820D\u82B3\u829D\u8299\u82AD\u82BD\u829F\u82B9\u82B1\u82AC\u82A5\u82AF\u82B8\u82A3\u82B0\u82BE\u82B7\u864E\u8671\u521D\u8868\u8ECB\u8FCE\u8FD4\u8FD1\u90B5\u90B8\u90B1\u90B6\u91C7\u91D1\u9577\u9580\u961C\u9640\u963F\u963B\u9644\"],\n[\"ab40\",\"\u9642\u96B9\u96E8\u9752\u975E\u4E9F\u4EAD\u4EAE\u4FE1\u4FB5\u4FAF\u4FBF\u4FE0\u4FD1\u4FCF\u4FDD\u4FC3\u4FB6\u4FD8\u4FDF\u4FCA\u4FD7\u4FAE\u4FD0\u4FC4\u4FC2\u4FDA\u4FCE\u4FDE\u4FB7\u5157\u5192\u5191\u51A0\u524E\u5243\u524A\u524D\u524C\u524B\u5247\u52C7\u52C9\u52C3\u52C1\u530D\u5357\u537B\u539A\u53DB\u54AC\u54C0\u54A8\u54CE\u54C9\u54B8\u54A6\u54B3\u54C7\u54C2\u54BD\u54AA\u54C1\"],\n[\"aba1\",\"\u54C4\u54C8\u54AF\u54AB\u54B1\u54BB\u54A9\u54A7\u54BF\u56FF\u5782\u578B\u57A0\u57A3\u57A2\u57CE\u57AE\u5793\u5955\u5951\u594F\u594E\u5950\u59DC\u59D8\u59FF\u59E3\u59E8\u5A03\u59E5\u59EA\u59DA\u59E6\u5A01\u59FB\u5B69\u5BA3\u5BA6\u5BA4\u5BA2\u5BA5\u5C01\u5C4E\u5C4F\u5C4D\u5C4B\u5CD9\u5CD2\u5DF7\u5E1D\u5E25\u5E1F\u5E7D\u5EA0\u5EA6\u5EFA\u5F08\u5F2D\u5F65\u5F88\u5F85\u5F8A\u5F8B\u5F87\u5F8C\u5F89\u6012\u601D\u6020\u6025\u600E\u6028\u604D\u6070\u6068\u6062\u6046\u6043\u606C\u606B\u606A\u6064\u6241\u62DC\u6316\u6309\u62FC\u62ED\u6301\u62EE\u62FD\u6307\u62F1\u62F7\"],\n[\"ac40\",\"\u62EF\u62EC\u62FE\u62F4\u6311\u6302\u653F\u6545\u65AB\u65BD\u65E2\u6625\u662D\u6620\u6627\u662F\u661F\u6628\u6631\u6624\u66F7\u67FF\u67D3\u67F1\u67D4\u67D0\u67EC\u67B6\u67AF\u67F5\u67E9\u67EF\u67C4\u67D1\u67B4\u67DA\u67E5\u67B8\u67CF\u67DE\u67F3\u67B0\u67D9\u67E2\u67DD\u67D2\u6B6A\u6B83\u6B86\u6BB5\u6BD2\u6BD7\u6C1F\u6CC9\u6D0B\u6D32\u6D2A\u6D41\u6D25\u6D0C\u6D31\u6D1E\u6D17\"],\n[\"aca1\",\"\u6D3B\u6D3D\u6D3E\u6D36\u6D1B\u6CF5\u6D39\u6D27\u6D38\u6D29\u6D2E\u6D35\u6D0E\u6D2B\u70AB\u70BA\u70B3\u70AC\u70AF\u70AD\u70B8\u70AE\u70A4\u7230\u7272\u726F\u7274\u72E9\u72E0\u72E1\u73B7\u73CA\u73BB\u73B2\u73CD\u73C0\u73B3\u751A\u752D\u754F\u754C\u754E\u754B\u75AB\u75A4\u75A5\u75A2\u75A3\u7678\u7686\u7687\u7688\u76C8\u76C6\u76C3\u76C5\u7701\u76F9\u76F8\u7709\u770B\u76FE\u76FC\u7707\u77DC\u7802\u7814\u780C\u780D\u7946\u7949\u7948\u7947\u79B9\u79BA\u79D1\u79D2\u79CB\u7A7F\u7A81\u7AFF\u7AFD\u7C7D\u7D02\u7D05\u7D00\u7D09\u7D07\u7D04\u7D06\u7F38\u7F8E\u7FBF\u8004\"],\n[\"ad40\",\"\u8010\u800D\u8011\u8036\u80D6\u80E5\u80DA\u80C3\u80C4\u80CC\u80E1\u80DB\u80CE\u80DE\u80E4\u80DD\u81F4\u8222\u82E7\u8303\u8305\u82E3\u82DB\u82E6\u8304\u82E5\u8302\u8309\u82D2\u82D7\u82F1\u8301\u82DC\u82D4\u82D1\u82DE\u82D3\u82DF\u82EF\u8306\u8650\u8679\u867B\u867A\u884D\u886B\u8981\u89D4\u8A08\u8A02\u8A03\u8C9E\u8CA0\u8D74\u8D73\u8DB4\u8ECD\u8ECC\u8FF0\u8FE6\u8FE2\u8FEA\u8FE5\"],\n[\"ada1\",\"\u8FED\u8FEB\u8FE4\u8FE8\u90CA\u90CE\u90C1\u90C3\u914B\u914A\u91CD\u9582\u9650\u964B\u964C\u964D\u9762\u9769\u97CB\u97ED\u97F3\u9801\u98A8\u98DB\u98DF\u9996\u9999\u4E58\u4EB3\u500C\u500D\u5023\u4FEF\u5026\u5025\u4FF8\u5029\u5016\u5006\u503C\u501F\u501A\u5012\u5011\u4FFA\u5000\u5014\u5028\u4FF1\u5021\u500B\u5019\u5018\u4FF3\u4FEE\u502D\u502A\u4FFE\u502B\u5009\u517C\u51A4\u51A5\u51A2\u51CD\u51CC\u51C6\u51CB\u5256\u525C\u5254\u525B\u525D\u532A\u537F\u539F\u539D\u53DF\u54E8\u5510\u5501\u5537\u54FC\u54E5\u54F2\u5506\u54FA\u5514\u54E9\u54ED\u54E1\u5509\u54EE\u54EA\"],\n[\"ae40\",\"\u54E6\u5527\u5507\u54FD\u550F\u5703\u5704\u57C2\u57D4\u57CB\u57C3\u5809\u590F\u5957\u5958\u595A\u5A11\u5A18\u5A1C\u5A1F\u5A1B\u5A13\u59EC\u5A20\u5A23\u5A29\u5A25\u5A0C\u5A09\u5B6B\u5C58\u5BB0\u5BB3\u5BB6\u5BB4\u5BAE\u5BB5\u5BB9\u5BB8\u5C04\u5C51\u5C55\u5C50\u5CED\u5CFD\u5CFB\u5CEA\u5CE8\u5CF0\u5CF6\u5D01\u5CF4\u5DEE\u5E2D\u5E2B\u5EAB\u5EAD\u5EA7\u5F31\u5F92\u5F91\u5F90\u6059\"],\n[\"aea1\",\"\u6063\u6065\u6050\u6055\u606D\u6069\u606F\u6084\u609F\u609A\u608D\u6094\u608C\u6085\u6096\u6247\u62F3\u6308\u62FF\u634E\u633E\u632F\u6355\u6342\u6346\u634F\u6349\u633A\u6350\u633D\u632A\u632B\u6328\u634D\u634C\u6548\u6549\u6599\u65C1\u65C5\u6642\u6649\u664F\u6643\u6652\u664C\u6645\u6641\u66F8\u6714\u6715\u6717\u6821\u6838\u6848\u6846\u6853\u6839\u6842\u6854\u6829\u68B3\u6817\u684C\u6851\u683D\u67F4\u6850\u6840\u683C\u6843\u682A\u6845\u6813\u6818\u6841\u6B8A\u6B89\u6BB7\u6C23\u6C27\u6C28\u6C26\u6C24\u6CF0\u6D6A\u6D95\u6D88\u6D87\u6D66\u6D78\u6D77\u6D59\u6D93\"],\n[\"af40\",\"\u6D6C\u6D89\u6D6E\u6D5A\u6D74\u6D69\u6D8C\u6D8A\u6D79\u6D85\u6D65\u6D94\u70CA\u70D8\u70E4\u70D9\u70C8\u70CF\u7239\u7279\u72FC\u72F9\u72FD\u72F8\u72F7\u7386\u73ED\u7409\u73EE\u73E0\u73EA\u73DE\u7554\u755D\u755C\u755A\u7559\u75BE\u75C5\u75C7\u75B2\u75B3\u75BD\u75BC\u75B9\u75C2\u75B8\u768B\u76B0\u76CA\u76CD\u76CE\u7729\u771F\u7720\u7728\u77E9\u7830\u7827\u7838\u781D\u7834\u7837\"],\n[\"afa1\",\"\u7825\u782D\u7820\u781F\u7832\u7955\u7950\u7960\u795F\u7956\u795E\u795D\u7957\u795A\u79E4\u79E3\u79E7\u79DF\u79E6\u79E9\u79D8\u7A84\u7A88\u7AD9\u7B06\u7B11\u7C89\u7D21\u7D17\u7D0B\u7D0A\u7D20\u7D22\u7D14\u7D10\u7D15\u7D1A\u7D1C\u7D0D\u7D19\u7D1B\u7F3A\u7F5F\u7F94\u7FC5\u7FC1\u8006\u8018\u8015\u8019\u8017\u803D\u803F\u80F1\u8102\u80F0\u8105\u80ED\u80F4\u8106\u80F8\u80F3\u8108\u80FD\u810A\u80FC\u80EF\u81ED\u81EC\u8200\u8210\u822A\u822B\u8228\u822C\u82BB\u832B\u8352\u8354\u834A\u8338\u8350\u8349\u8335\u8334\u834F\u8332\u8339\u8336\u8317\u8340\u8331\u8328\u8343\"],\n[\"b040\",\"\u8654\u868A\u86AA\u8693\u86A4\u86A9\u868C\u86A3\u869C\u8870\u8877\u8881\u8882\u887D\u8879\u8A18\u8A10\u8A0E\u8A0C\u8A15\u8A0A\u8A17\u8A13\u8A16\u8A0F\u8A11\u8C48\u8C7A\u8C79\u8CA1\u8CA2\u8D77\u8EAC\u8ED2\u8ED4\u8ECF\u8FB1\u9001\u9006\u8FF7\u9000\u8FFA\u8FF4\u9003\u8FFD\u9005\u8FF8\u9095\u90E1\u90DD\u90E2\u9152\u914D\u914C\u91D8\u91DD\u91D7\u91DC\u91D9\u9583\u9662\u9663\u9661\"],\n[\"b0a1\",\"\u965B\u965D\u9664\u9658\u965E\u96BB\u98E2\u99AC\u9AA8\u9AD8\u9B25\u9B32\u9B3C\u4E7E\u507A\u507D\u505C\u5047\u5043\u504C\u505A\u5049\u5065\u5076\u504E\u5055\u5075\u5074\u5077\u504F\u500F\u506F\u506D\u515C\u5195\u51F0\u526A\u526F\u52D2\u52D9\u52D8\u52D5\u5310\u530F\u5319\u533F\u5340\u533E\u53C3\u66FC\u5546\u556A\u5566\u5544\u555E\u5561\u5543\u554A\u5531\u5556\u554F\u5555\u552F\u5564\u5538\u552E\u555C\u552C\u5563\u5533\u5541\u5557\u5708\u570B\u5709\u57DF\u5805\u580A\u5806\u57E0\u57E4\u57FA\u5802\u5835\u57F7\u57F9\u5920\u5962\u5A36\u5A41\u5A49\u5A66\u5A6A\u5A40\"],\n[\"b140\",\"\u5A3C\u5A62\u5A5A\u5A46\u5A4A\u5B70\u5BC7\u5BC5\u5BC4\u5BC2\u5BBF\u5BC6\u5C09\u5C08\u5C07\u5C60\u5C5C\u5C5D\u5D07\u5D06\u5D0E\u5D1B\u5D16\u5D22\u5D11\u5D29\u5D14\u5D19\u5D24\u5D27\u5D17\u5DE2\u5E38\u5E36\u5E33\u5E37\u5EB7\u5EB8\u5EB6\u5EB5\u5EBE\u5F35\u5F37\u5F57\u5F6C\u5F69\u5F6B\u5F97\u5F99\u5F9E\u5F98\u5FA1\u5FA0\u5F9C\u607F\u60A3\u6089\u60A0\u60A8\u60CB\u60B4\u60E6\u60BD\"],\n[\"b1a1\",\"\u60C5\u60BB\u60B5\u60DC\u60BC\u60D8\u60D5\u60C6\u60DF\u60B8\u60DA\u60C7\u621A\u621B\u6248\u63A0\u63A7\u6372\u6396\u63A2\u63A5\u6377\u6367\u6398\u63AA\u6371\u63A9\u6389\u6383\u639B\u636B\u63A8\u6384\u6388\u6399\u63A1\u63AC\u6392\u638F\u6380\u637B\u6369\u6368\u637A\u655D\u6556\u6551\u6559\u6557\u555F\u654F\u6558\u6555\u6554\u659C\u659B\u65AC\u65CF\u65CB\u65CC\u65CE\u665D\u665A\u6664\u6668\u6666\u665E\u66F9\u52D7\u671B\u6881\u68AF\u68A2\u6893\u68B5\u687F\u6876\u68B1\u68A7\u6897\u68B0\u6883\u68C4\u68AD\u6886\u6885\u6894\u689D\u68A8\u689F\u68A1\u6882\u6B32\u6BBA\"],\n[\"b240\",\"\u6BEB\u6BEC\u6C2B\u6D8E\u6DBC\u6DF3\u6DD9\u6DB2\u6DE1\u6DCC\u6DE4\u6DFB\u6DFA\u6E05\u6DC7\u6DCB\u6DAF\u6DD1\u6DAE\u6DDE\u6DF9\u6DB8\u6DF7\u6DF5\u6DC5\u6DD2\u6E1A\u6DB5\u6DDA\u6DEB\u6DD8\u6DEA\u6DF1\u6DEE\u6DE8\u6DC6\u6DC4\u6DAA\u6DEC\u6DBF\u6DE6\u70F9\u7109\u710A\u70FD\u70EF\u723D\u727D\u7281\u731C\u731B\u7316\u7313\u7319\u7387\u7405\u740A\u7403\u7406\u73FE\u740D\u74E0\u74F6\"],\n[\"b2a1\",\"\u74F7\u751C\u7522\u7565\u7566\u7562\u7570\u758F\u75D4\u75D5\u75B5\u75CA\u75CD\u768E\u76D4\u76D2\u76DB\u7737\u773E\u773C\u7736\u7738\u773A\u786B\u7843\u784E\u7965\u7968\u796D\u79FB\u7A92\u7A95\u7B20\u7B28\u7B1B\u7B2C\u7B26\u7B19\u7B1E\u7B2E\u7C92\u7C97\u7C95\u7D46\u7D43\u7D71\u7D2E\u7D39\u7D3C\u7D40\u7D30\u7D33\u7D44\u7D2F\u7D42\u7D32\u7D31\u7F3D\u7F9E\u7F9A\u7FCC\u7FCE\u7FD2\u801C\u804A\u8046\u812F\u8116\u8123\u812B\u8129\u8130\u8124\u8202\u8235\u8237\u8236\u8239\u838E\u839E\u8398\u8378\u83A2\u8396\u83BD\u83AB\u8392\u838A\u8393\u8389\u83A0\u8377\u837B\u837C\"],\n[\"b340\",\"\u8386\u83A7\u8655\u5F6A\u86C7\u86C0\u86B6\u86C4\u86B5\u86C6\u86CB\u86B1\u86AF\u86C9\u8853\u889E\u8888\u88AB\u8892\u8896\u888D\u888B\u8993\u898F\u8A2A\u8A1D\u8A23\u8A25\u8A31\u8A2D\u8A1F\u8A1B\u8A22\u8C49\u8C5A\u8CA9\u8CAC\u8CAB\u8CA8\u8CAA\u8CA7\u8D67\u8D66\u8DBE\u8DBA\u8EDB\u8EDF\u9019\u900D\u901A\u9017\u9023\u901F\u901D\u9010\u9015\u901E\u9020\u900F\u9022\u9016\u901B\u9014\"],\n[\"b3a1\",\"\u90E8\u90ED\u90FD\u9157\u91CE\u91F5\u91E6\u91E3\u91E7\u91ED\u91E9\u9589\u966A\u9675\u9673\u9678\u9670\u9674\u9676\u9677\u966C\u96C0\u96EA\u96E9\u7AE0\u7ADF\u9802\u9803\u9B5A\u9CE5\u9E75\u9E7F\u9EA5\u9EBB\u50A2\u508D\u5085\u5099\u5091\u5080\u5096\u5098\u509A\u6700\u51F1\u5272\u5274\u5275\u5269\u52DE\u52DD\u52DB\u535A\u53A5\u557B\u5580\u55A7\u557C\u558A\u559D\u5598\u5582\u559C\u55AA\u5594\u5587\u558B\u5583\u55B3\u55AE\u559F\u553E\u55B2\u559A\u55BB\u55AC\u55B1\u557E\u5589\u55AB\u5599\u570D\u582F\u582A\u5834\u5824\u5830\u5831\u5821\u581D\u5820\u58F9\u58FA\u5960\"],\n[\"b440\",\"\u5A77\u5A9A\u5A7F\u5A92\u5A9B\u5AA7\u5B73\u5B71\u5BD2\u5BCC\u5BD3\u5BD0\u5C0A\u5C0B\u5C31\u5D4C\u5D50\u5D34\u5D47\u5DFD\u5E45\u5E3D\u5E40\u5E43\u5E7E\u5ECA\u5EC1\u5EC2\u5EC4\u5F3C\u5F6D\u5FA9\u5FAA\u5FA8\u60D1\u60E1\u60B2\u60B6\u60E0\u611C\u6123\u60FA\u6115\u60F0\u60FB\u60F4\u6168\u60F1\u610E\u60F6\u6109\u6100\u6112\u621F\u6249\u63A3\u638C\u63CF\u63C0\u63E9\u63C9\u63C6\u63CD\"],\n[\"b4a1\",\"\u63D2\u63E3\u63D0\u63E1\u63D6\u63ED\u63EE\u6376\u63F4\u63EA\u63DB\u6452\u63DA\u63F9\u655E\u6566\u6562\u6563\u6591\u6590\u65AF\u666E\u6670\u6674\u6676\u666F\u6691\u667A\u667E\u6677\u66FE\u66FF\u671F\u671D\u68FA\u68D5\u68E0\u68D8\u68D7\u6905\u68DF\u68F5\u68EE\u68E7\u68F9\u68D2\u68F2\u68E3\u68CB\u68CD\u690D\u6912\u690E\u68C9\u68DA\u696E\u68FB\u6B3E\u6B3A\u6B3D\u6B98\u6B96\u6BBC\u6BEF\u6C2E\u6C2F\u6C2C\u6E2F\u6E38\u6E54\u6E21\u6E32\u6E67\u6E4A\u6E20\u6E25\u6E23\u6E1B\u6E5B\u6E58\u6E24\u6E56\u6E6E\u6E2D\u6E26\u6E6F\u6E34\u6E4D\u6E3A\u6E2C\u6E43\u6E1D\u6E3E\u6ECB\"],\n[\"b540\",\"\u6E89\u6E19\u6E4E\u6E63\u6E44\u6E72\u6E69\u6E5F\u7119\u711A\u7126\u7130\u7121\u7136\u716E\u711C\u724C\u7284\u7280\u7336\u7325\u7334\u7329\u743A\u742A\u7433\u7422\u7425\u7435\u7436\u7434\u742F\u741B\u7426\u7428\u7525\u7526\u756B\u756A\u75E2\u75DB\u75E3\u75D9\u75D8\u75DE\u75E0\u767B\u767C\u7696\u7693\u76B4\u76DC\u774F\u77ED\u785D\u786C\u786F\u7A0D\u7A08\u7A0B\u7A05\u7A00\u7A98\"],\n[\"b5a1\",\"\u7A97\u7A96\u7AE5\u7AE3\u7B49\u7B56\u7B46\u7B50\u7B52\u7B54\u7B4D\u7B4B\u7B4F\u7B51\u7C9F\u7CA5\u7D5E\u7D50\u7D68\u7D55\u7D2B\u7D6E\u7D72\u7D61\u7D66\u7D62\u7D70\u7D73\u5584\u7FD4\u7FD5\u800B\u8052\u8085\u8155\u8154\u814B\u8151\u814E\u8139\u8146\u813E\u814C\u8153\u8174\u8212\u821C\u83E9\u8403\u83F8\u840D\u83E0\u83C5\u840B\u83C1\u83EF\u83F1\u83F4\u8457\u840A\u83F0\u840C\u83CC\u83FD\u83F2\u83CA\u8438\u840E\u8404\u83DC\u8407\u83D4\u83DF\u865B\u86DF\u86D9\u86ED\u86D4\u86DB\u86E4\u86D0\u86DE\u8857\u88C1\u88C2\u88B1\u8983\u8996\u8A3B\u8A60\u8A55\u8A5E\u8A3C\u8A41\"],\n[\"b640\",\"\u8A54\u8A5B\u8A50\u8A46\u8A34\u8A3A\u8A36\u8A56\u8C61\u8C82\u8CAF\u8CBC\u8CB3\u8CBD\u8CC1\u8CBB\u8CC0\u8CB4\u8CB7\u8CB6\u8CBF\u8CB8\u8D8A\u8D85\u8D81\u8DCE\u8DDD\u8DCB\u8DDA\u8DD1\u8DCC\u8DDB\u8DC6\u8EFB\u8EF8\u8EFC\u8F9C\u902E\u9035\u9031\u9038\u9032\u9036\u9102\u90F5\u9109\u90FE\u9163\u9165\u91CF\u9214\u9215\u9223\u9209\u921E\u920D\u9210\u9207\u9211\u9594\u958F\u958B\u9591\"],\n[\"b6a1\",\"\u9593\u9592\u958E\u968A\u968E\u968B\u967D\u9685\u9686\u968D\u9672\u9684\u96C1\u96C5\u96C4\u96C6\u96C7\u96EF\u96F2\u97CC\u9805\u9806\u9808\u98E7\u98EA\u98EF\u98E9\u98F2\u98ED\u99AE\u99AD\u9EC3\u9ECD\u9ED1\u4E82\u50AD\u50B5\u50B2\u50B3\u50C5\u50BE\u50AC\u50B7\u50BB\u50AF\u50C7\u527F\u5277\u527D\u52DF\u52E6\u52E4\u52E2\u52E3\u532F\u55DF\u55E8\u55D3\u55E6\u55CE\u55DC\u55C7\u55D1\u55E3\u55E4\u55EF\u55DA\u55E1\u55C5\u55C6\u55E5\u55C9\u5712\u5713\u585E\u5851\u5858\u5857\u585A\u5854\u586B\u584C\u586D\u584A\u5862\u5852\u584B\u5967\u5AC1\u5AC9\u5ACC\u5ABE\u5ABD\u5ABC\"],\n[\"b740\",\"\u5AB3\u5AC2\u5AB2\u5D69\u5D6F\u5E4C\u5E79\u5EC9\u5EC8\u5F12\u5F59\u5FAC\u5FAE\u611A\u610F\u6148\u611F\u60F3\u611B\u60F9\u6101\u6108\u614E\u614C\u6144\u614D\u613E\u6134\u6127\u610D\u6106\u6137\u6221\u6222\u6413\u643E\u641E\u642A\u642D\u643D\u642C\u640F\u641C\u6414\u640D\u6436\u6416\u6417\u6406\u656C\u659F\u65B0\u6697\u6689\u6687\u6688\u6696\u6684\u6698\u668D\u6703\u6994\u696D\"],\n[\"b7a1\",\"\u695A\u6977\u6960\u6954\u6975\u6930\u6982\u694A\u6968\u696B\u695E\u6953\u6979\u6986\u695D\u6963\u695B\u6B47\u6B72\u6BC0\u6BBF\u6BD3\u6BFD\u6EA2\u6EAF\u6ED3\u6EB6\u6EC2\u6E90\u6E9D\u6EC7\u6EC5\u6EA5\u6E98\u6EBC\u6EBA\u6EAB\u6ED1\u6E96\u6E9C\u6EC4\u6ED4\u6EAA\u6EA7\u6EB4\u714E\u7159\u7169\u7164\u7149\u7167\u715C\u716C\u7166\u714C\u7165\u715E\u7146\u7168\u7156\u723A\u7252\u7337\u7345\u733F\u733E\u746F\u745A\u7455\u745F\u745E\u7441\u743F\u7459\u745B\u745C\u7576\u7578\u7600\u75F0\u7601\u75F2\u75F1\u75FA\u75FF\u75F4\u75F3\u76DE\u76DF\u775B\u776B\u7766\u775E\u7763\"],\n[\"b840\",\"\u7779\u776A\u776C\u775C\u7765\u7768\u7762\u77EE\u788E\u78B0\u7897\u7898\u788C\u7889\u787C\u7891\u7893\u787F\u797A\u797F\u7981\u842C\u79BD\u7A1C\u7A1A\u7A20\u7A14\u7A1F\u7A1E\u7A9F\u7AA0\u7B77\u7BC0\u7B60\u7B6E\u7B67\u7CB1\u7CB3\u7CB5\u7D93\u7D79\u7D91\u7D81\u7D8F\u7D5B\u7F6E\u7F69\u7F6A\u7F72\u7FA9\u7FA8\u7FA4\u8056\u8058\u8086\u8084\u8171\u8170\u8178\u8165\u816E\u8173\u816B\"],\n[\"b8a1\",\"\u8179\u817A\u8166\u8205\u8247\u8482\u8477\u843D\u8431\u8475\u8466\u846B\u8449\u846C\u845B\u843C\u8435\u8461\u8463\u8469\u846D\u8446\u865E\u865C\u865F\u86F9\u8713\u8708\u8707\u8700\u86FE\u86FB\u8702\u8703\u8706\u870A\u8859\u88DF\u88D4\u88D9\u88DC\u88D8\u88DD\u88E1\u88CA\u88D5\u88D2\u899C\u89E3\u8A6B\u8A72\u8A73\u8A66\u8A69\u8A70\u8A87\u8A7C\u8A63\u8AA0\u8A71\u8A85\u8A6D\u8A62\u8A6E\u8A6C\u8A79\u8A7B\u8A3E\u8A68\u8C62\u8C8A\u8C89\u8CCA\u8CC7\u8CC8\u8CC4\u8CB2\u8CC3\u8CC2\u8CC5\u8DE1\u8DDF\u8DE8\u8DEF\u8DF3\u8DFA\u8DEA\u8DE4\u8DE6\u8EB2\u8F03\u8F09\u8EFE\u8F0A\"],\n[\"b940\",\"\u8F9F\u8FB2\u904B\u904A\u9053\u9042\u9054\u903C\u9055\u9050\u9047\u904F\u904E\u904D\u9051\u903E\u9041\u9112\u9117\u916C\u916A\u9169\u91C9\u9237\u9257\u9238\u923D\u9240\u923E\u925B\u924B\u9264\u9251\u9234\u9249\u924D\u9245\u9239\u923F\u925A\u9598\u9698\u9694\u9695\u96CD\u96CB\u96C9\u96CA\u96F7\u96FB\u96F9\u96F6\u9756\u9774\u9776\u9810\u9811\u9813\u980A\u9812\u980C\u98FC\u98F4\"],\n[\"b9a1\",\"\u98FD\u98FE\u99B3\u99B1\u99B4\u9AE1\u9CE9\u9E82\u9F0E\u9F13\u9F20\u50E7\u50EE\u50E5\u50D6\u50ED\u50DA\u50D5\u50CF\u50D1\u50F1\u50CE\u50E9\u5162\u51F3\u5283\u5282\u5331\u53AD\u55FE\u5600\u561B\u5617\u55FD\u5614\u5606\u5609\u560D\u560E\u55F7\u5616\u561F\u5608\u5610\u55F6\u5718\u5716\u5875\u587E\u5883\u5893\u588A\u5879\u5885\u587D\u58FD\u5925\u5922\u5924\u596A\u5969\u5AE1\u5AE6\u5AE9\u5AD7\u5AD6\u5AD8\u5AE3\u5B75\u5BDE\u5BE7\u5BE1\u5BE5\u5BE6\u5BE8\u5BE2\u5BE4\u5BDF\u5C0D\u5C62\u5D84\u5D87\u5E5B\u5E63\u5E55\u5E57\u5E54\u5ED3\u5ED6\u5F0A\u5F46\u5F70\u5FB9\u6147\"],\n[\"ba40\",\"\u613F\u614B\u6177\u6162\u6163\u615F\u615A\u6158\u6175\u622A\u6487\u6458\u6454\u64A4\u6478\u645F\u647A\u6451\u6467\u6434\u646D\u647B\u6572\u65A1\u65D7\u65D6\u66A2\u66A8\u669D\u699C\u69A8\u6995\u69C1\u69AE\u69D3\u69CB\u699B\u69B7\u69BB\u69AB\u69B4\u69D0\u69CD\u69AD\u69CC\u69A6\u69C3\u69A3\u6B49\u6B4C\u6C33\u6F33\u6F14\u6EFE\u6F13\u6EF4\u6F29\u6F3E\u6F20\u6F2C\u6F0F\u6F02\u6F22\"],\n[\"baa1\",\"\u6EFF\u6EEF\u6F06\u6F31\u6F38\u6F32\u6F23\u6F15\u6F2B\u6F2F\u6F88\u6F2A\u6EEC\u6F01\u6EF2\u6ECC\u6EF7\u7194\u7199\u717D\u718A\u7184\u7192\u723E\u7292\u7296\u7344\u7350\u7464\u7463\u746A\u7470\u746D\u7504\u7591\u7627\u760D\u760B\u7609\u7613\u76E1\u76E3\u7784\u777D\u777F\u7761\u78C1\u789F\u78A7\u78B3\u78A9\u78A3\u798E\u798F\u798D\u7A2E\u7A31\u7AAA\u7AA9\u7AED\u7AEF\u7BA1\u7B95\u7B8B\u7B75\u7B97\u7B9D\u7B94\u7B8F\u7BB8\u7B87\u7B84\u7CB9\u7CBD\u7CBE\u7DBB\u7DB0\u7D9C\u7DBD\u7DBE\u7DA0\u7DCA\u7DB4\u7DB2\u7DB1\u7DBA\u7DA2\u7DBF\u7DB5\u7DB8\u7DAD\u7DD2\u7DC7\u7DAC\"],\n[\"bb40\",\"\u7F70\u7FE0\u7FE1\u7FDF\u805E\u805A\u8087\u8150\u8180\u818F\u8188\u818A\u817F\u8182\u81E7\u81FA\u8207\u8214\u821E\u824B\u84C9\u84BF\u84C6\u84C4\u8499\u849E\u84B2\u849C\u84CB\u84B8\u84C0\u84D3\u8490\u84BC\u84D1\u84CA\u873F\u871C\u873B\u8722\u8725\u8734\u8718\u8755\u8737\u8729\u88F3\u8902\u88F4\u88F9\u88F8\u88FD\u88E8\u891A\u88EF\u8AA6\u8A8C\u8A9E\u8AA3\u8A8D\u8AA1\u8A93\u8AA4\"],\n[\"bba1\",\"\u8AAA\u8AA5\u8AA8\u8A98\u8A91\u8A9A\u8AA7\u8C6A\u8C8D\u8C8C\u8CD3\u8CD1\u8CD2\u8D6B\u8D99\u8D95\u8DFC\u8F14\u8F12\u8F15\u8F13\u8FA3\u9060\u9058\u905C\u9063\u9059\u905E\u9062\u905D\u905B\u9119\u9118\u911E\u9175\u9178\u9177\u9174\u9278\u9280\u9285\u9298\u9296\u927B\u9293\u929C\u92A8\u927C\u9291\u95A1\u95A8\u95A9\u95A3\u95A5\u95A4\u9699\u969C\u969B\u96CC\u96D2\u9700\u977C\u9785\u97F6\u9817\u9818\u98AF\u98B1\u9903\u9905\u990C\u9909\u99C1\u9AAF\u9AB0\u9AE6\u9B41\u9B42\u9CF4\u9CF6\u9CF3\u9EBC\u9F3B\u9F4A\u5104\u5100\u50FB\u50F5\u50F9\u5102\u5108\u5109\u5105\u51DC\"],\n[\"bc40\",\"\u5287\u5288\u5289\u528D\u528A\u52F0\u53B2\u562E\u563B\u5639\u5632\u563F\u5634\u5629\u5653\u564E\u5657\u5674\u5636\u562F\u5630\u5880\u589F\u589E\u58B3\u589C\u58AE\u58A9\u58A6\u596D\u5B09\u5AFB\u5B0B\u5AF5\u5B0C\u5B08\u5BEE\u5BEC\u5BE9\u5BEB\u5C64\u5C65\u5D9D\u5D94\u5E62\u5E5F\u5E61\u5EE2\u5EDA\u5EDF\u5EDD\u5EE3\u5EE0\u5F48\u5F71\u5FB7\u5FB5\u6176\u6167\u616E\u615D\u6155\u6182\"],\n[\"bca1\",\"\u617C\u6170\u616B\u617E\u61A7\u6190\u61AB\u618E\u61AC\u619A\u61A4\u6194\u61AE\u622E\u6469\u646F\u6479\u649E\u64B2\u6488\u6490\u64B0\u64A5\u6493\u6495\u64A9\u6492\u64AE\u64AD\u64AB\u649A\u64AC\u6499\u64A2\u64B3\u6575\u6577\u6578\u66AE\u66AB\u66B4\u66B1\u6A23\u6A1F\u69E8\u6A01\u6A1E\u6A19\u69FD\u6A21\u6A13\u6A0A\u69F3\u6A02\u6A05\u69ED\u6A11\u6B50\u6B4E\u6BA4\u6BC5\u6BC6\u6F3F\u6F7C\u6F84\u6F51\u6F66\u6F54\u6F86\u6F6D\u6F5B\u6F78\u6F6E\u6F8E\u6F7A\u6F70\u6F64\u6F97\u6F58\u6ED5\u6F6F\u6F60\u6F5F\u719F\u71AC\u71B1\u71A8\u7256\u729B\u734E\u7357\u7469\u748B\u7483\"],\n[\"bd40\",\"\u747E\u7480\u757F\u7620\u7629\u761F\u7624\u7626\u7621\u7622\u769A\u76BA\u76E4\u778E\u7787\u778C\u7791\u778B\u78CB\u78C5\u78BA\u78CA\u78BE\u78D5\u78BC\u78D0\u7A3F\u7A3C\u7A40\u7A3D\u7A37\u7A3B\u7AAF\u7AAE\u7BAD\u7BB1\u7BC4\u7BB4\u7BC6\u7BC7\u7BC1\u7BA0\u7BCC\u7CCA\u7DE0\u7DF4\u7DEF\u7DFB\u7DD8\u7DEC\u7DDD\u7DE8\u7DE3\u7DDA\u7DDE\u7DE9\u7D9E\u7DD9\u7DF2\u7DF9\u7F75\u7F77\u7FAF\"],\n[\"bda1\",\"\u7FE9\u8026\u819B\u819C\u819D\u81A0\u819A\u8198\u8517\u853D\u851A\u84EE\u852C\u852D\u8513\u8511\u8523\u8521\u8514\u84EC\u8525\u84FF\u8506\u8782\u8774\u8776\u8760\u8766\u8778\u8768\u8759\u8757\u874C\u8753\u885B\u885D\u8910\u8907\u8912\u8913\u8915\u890A\u8ABC\u8AD2\u8AC7\u8AC4\u8A95\u8ACB\u8AF8\u8AB2\u8AC9\u8AC2\u8ABF\u8AB0\u8AD6\u8ACD\u8AB6\u8AB9\u8ADB\u8C4C\u8C4E\u8C6C\u8CE0\u8CDE\u8CE6\u8CE4\u8CEC\u8CED\u8CE2\u8CE3\u8CDC\u8CEA\u8CE1\u8D6D\u8D9F\u8DA3\u8E2B\u8E10\u8E1D\u8E22\u8E0F\u8E29\u8E1F\u8E21\u8E1E\u8EBA\u8F1D\u8F1B\u8F1F\u8F29\u8F26\u8F2A\u8F1C\u8F1E\"],\n[\"be40\",\"\u8F25\u9069\u906E\u9068\u906D\u9077\u9130\u912D\u9127\u9131\u9187\u9189\u918B\u9183\u92C5\u92BB\u92B7\u92EA\u92AC\u92E4\u92C1\u92B3\u92BC\u92D2\u92C7\u92F0\u92B2\u95AD\u95B1\u9704\u9706\u9707\u9709\u9760\u978D\u978B\u978F\u9821\u982B\u981C\u98B3\u990A\u9913\u9912\u9918\u99DD\u99D0\u99DF\u99DB\u99D1\u99D5\u99D2\u99D9\u9AB7\u9AEE\u9AEF\u9B27\u9B45\u9B44\u9B77\u9B6F\u9D06\u9D09\"],\n[\"bea1\",\"\u9D03\u9EA9\u9EBE\u9ECE\u58A8\u9F52\u5112\u5118\u5114\u5110\u5115\u5180\u51AA\u51DD\u5291\u5293\u52F3\u5659\u566B\u5679\u5669\u5664\u5678\u566A\u5668\u5665\u5671\u566F\u566C\u5662\u5676\u58C1\u58BE\u58C7\u58C5\u596E\u5B1D\u5B34\u5B78\u5BF0\u5C0E\u5F4A\u61B2\u6191\u61A9\u618A\u61CD\u61B6\u61BE\u61CA\u61C8\u6230\u64C5\u64C1\u64CB\u64BB\u64BC\u64DA\u64C4\u64C7\u64C2\u64CD\u64BF\u64D2\u64D4\u64BE\u6574\u66C6\u66C9\u66B9\u66C4\u66C7\u66B8\u6A3D\u6A38\u6A3A\u6A59\u6A6B\u6A58\u6A39\u6A44\u6A62\u6A61\u6A4B\u6A47\u6A35\u6A5F\u6A48\u6B59\u6B77\u6C05\u6FC2\u6FB1\u6FA1\"],\n[\"bf40\",\"\u6FC3\u6FA4\u6FC1\u6FA7\u6FB3\u6FC0\u6FB9\u6FB6\u6FA6\u6FA0\u6FB4\u71BE\u71C9\u71D0\u71D2\u71C8\u71D5\u71B9\u71CE\u71D9\u71DC\u71C3\u71C4\u7368\u749C\u74A3\u7498\u749F\u749E\u74E2\u750C\u750D\u7634\u7638\u763A\u76E7\u76E5\u77A0\u779E\u779F\u77A5\u78E8\u78DA\u78EC\u78E7\u79A6\u7A4D\u7A4E\u7A46\u7A4C\u7A4B\u7ABA\u7BD9\u7C11\u7BC9\u7BE4\u7BDB\u7BE1\u7BE9\u7BE6\u7CD5\u7CD6\u7E0A\"],\n[\"bfa1\",\"\u7E11\u7E08\u7E1B\u7E23\u7E1E\u7E1D\u7E09\u7E10\u7F79\u7FB2\u7FF0\u7FF1\u7FEE\u8028\u81B3\u81A9\u81A8\u81FB\u8208\u8258\u8259\u854A\u8559\u8548\u8568\u8569\u8543\u8549\u856D\u856A\u855E\u8783\u879F\u879E\u87A2\u878D\u8861\u892A\u8932\u8925\u892B\u8921\u89AA\u89A6\u8AE6\u8AFA\u8AEB\u8AF1\u8B00\u8ADC\u8AE7\u8AEE\u8AFE\u8B01\u8B02\u8AF7\u8AED\u8AF3\u8AF6\u8AFC\u8C6B\u8C6D\u8C93\u8CF4\u8E44\u8E31\u8E34\u8E42\u8E39\u8E35\u8F3B\u8F2F\u8F38\u8F33\u8FA8\u8FA6\u9075\u9074\u9078\u9072\u907C\u907A\u9134\u9192\u9320\u9336\u92F8\u9333\u932F\u9322\u92FC\u932B\u9304\u931A\"],\n[\"c040\",\"\u9310\u9326\u9321\u9315\u932E\u9319\u95BB\u96A7\u96A8\u96AA\u96D5\u970E\u9711\u9716\u970D\u9713\u970F\u975B\u975C\u9766\u9798\u9830\u9838\u983B\u9837\u982D\u9839\u9824\u9910\u9928\u991E\u991B\u9921\u991A\u99ED\u99E2\u99F1\u9AB8\u9ABC\u9AFB\u9AED\u9B28\u9B91\u9D15\u9D23\u9D26\u9D28\u9D12\u9D1B\u9ED8\u9ED4\u9F8D\u9F9C\u512A\u511F\u5121\u5132\u52F5\u568E\u5680\u5690\u5685\u5687\"],\n[\"c0a1\",\"\u568F\u58D5\u58D3\u58D1\u58CE\u5B30\u5B2A\u5B24\u5B7A\u5C37\u5C68\u5DBC\u5DBA\u5DBD\u5DB8\u5E6B\u5F4C\u5FBD\u61C9\u61C2\u61C7\u61E6\u61CB\u6232\u6234\u64CE\u64CA\u64D8\u64E0\u64F0\u64E6\u64EC\u64F1\u64E2\u64ED\u6582\u6583\u66D9\u66D6\u6A80\u6A94\u6A84\u6AA2\u6A9C\u6ADB\u6AA3\u6A7E\u6A97\u6A90\u6AA0\u6B5C\u6BAE\u6BDA\u6C08\u6FD8\u6FF1\u6FDF\u6FE0\u6FDB\u6FE4\u6FEB\u6FEF\u6F80\u6FEC\u6FE1\u6FE9\u6FD5\u6FEE\u6FF0\u71E7\u71DF\u71EE\u71E6\u71E5\u71ED\u71EC\u71F4\u71E0\u7235\u7246\u7370\u7372\u74A9\u74B0\u74A6\u74A8\u7646\u7642\u764C\u76EA\u77B3\u77AA\u77B0\u77AC\"],\n[\"c140\",\"\u77A7\u77AD\u77EF\u78F7\u78FA\u78F4\u78EF\u7901\u79A7\u79AA\u7A57\u7ABF\u7C07\u7C0D\u7BFE\u7BF7\u7C0C\u7BE0\u7CE0\u7CDC\u7CDE\u7CE2\u7CDF\u7CD9\u7CDD\u7E2E\u7E3E\u7E46\u7E37\u7E32\u7E43\u7E2B\u7E3D\u7E31\u7E45\u7E41\u7E34\u7E39\u7E48\u7E35\u7E3F\u7E2F\u7F44\u7FF3\u7FFC\u8071\u8072\u8070\u806F\u8073\u81C6\u81C3\u81BA\u81C2\u81C0\u81BF\u81BD\u81C9\u81BE\u81E8\u8209\u8271\u85AA\"],\n[\"c1a1\",\"\u8584\u857E\u859C\u8591\u8594\u85AF\u859B\u8587\u85A8\u858A\u8667\u87C0\u87D1\u87B3\u87D2\u87C6\u87AB\u87BB\u87BA\u87C8\u87CB\u893B\u8936\u8944\u8938\u893D\u89AC\u8B0E\u8B17\u8B19\u8B1B\u8B0A\u8B20\u8B1D\u8B04\u8B10\u8C41\u8C3F\u8C73\u8CFA\u8CFD\u8CFC\u8CF8\u8CFB\u8DA8\u8E49\u8E4B\u8E48\u8E4A\u8F44\u8F3E\u8F42\u8F45\u8F3F\u907F\u907D\u9084\u9081\u9082\u9080\u9139\u91A3\u919E\u919C\u934D\u9382\u9328\u9375\u934A\u9365\u934B\u9318\u937E\u936C\u935B\u9370\u935A\u9354\u95CA\u95CB\u95CC\u95C8\u95C6\u96B1\u96B8\u96D6\u971C\u971E\u97A0\u97D3\u9846\u98B6\u9935\u9A01\"],\n[\"c240\",\"\u99FF\u9BAE\u9BAB\u9BAA\u9BAD\u9D3B\u9D3F\u9E8B\u9ECF\u9EDE\u9EDC\u9EDD\u9EDB\u9F3E\u9F4B\u53E2\u5695\u56AE\u58D9\u58D8\u5B38\u5F5D\u61E3\u6233\u64F4\u64F2\u64FE\u6506\u64FA\u64FB\u64F7\u65B7\u66DC\u6726\u6AB3\u6AAC\u6AC3\u6ABB\u6AB8\u6AC2\u6AAE\u6AAF\u6B5F\u6B78\u6BAF\u7009\u700B\u6FFE\u7006\u6FFA\u7011\u700F\u71FB\u71FC\u71FE\u71F8\u7377\u7375\u74A7\u74BF\u7515\u7656\u7658\"],\n[\"c2a1\",\"\u7652\u77BD\u77BF\u77BB\u77BC\u790E\u79AE\u7A61\u7A62\u7A60\u7AC4\u7AC5\u7C2B\u7C27\u7C2A\u7C1E\u7C23\u7C21\u7CE7\u7E54\u7E55\u7E5E\u7E5A\u7E61\u7E52\u7E59\u7F48\u7FF9\u7FFB\u8077\u8076\u81CD\u81CF\u820A\u85CF\u85A9\u85CD\u85D0\u85C9\u85B0\u85BA\u85B9\u85A6\u87EF\u87EC\u87F2\u87E0\u8986\u89B2\u89F4\u8B28\u8B39\u8B2C\u8B2B\u8C50\u8D05\u8E59\u8E63\u8E66\u8E64\u8E5F\u8E55\u8EC0\u8F49\u8F4D\u9087\u9083\u9088\u91AB\u91AC\u91D0\u9394\u938A\u9396\u93A2\u93B3\u93AE\u93AC\u93B0\u9398\u939A\u9397\u95D4\u95D6\u95D0\u95D5\u96E2\u96DC\u96D9\u96DB\u96DE\u9724\u97A3\u97A6\"],\n[\"c340\",\"\u97AD\u97F9\u984D\u984F\u984C\u984E\u9853\u98BA\u993E\u993F\u993D\u992E\u99A5\u9A0E\u9AC1\u9B03\u9B06\u9B4F\u9B4E\u9B4D\u9BCA\u9BC9\u9BFD\u9BC8\u9BC0\u9D51\u9D5D\u9D60\u9EE0\u9F15\u9F2C\u5133\u56A5\u58DE\u58DF\u58E2\u5BF5\u9F90\u5EEC\u61F2\u61F7\u61F6\u61F5\u6500\u650F\u66E0\u66DD\u6AE5\u6ADD\u6ADA\u6AD3\u701B\u701F\u7028\u701A\u701D\u7015\u7018\u7206\u720D\u7258\u72A2\u7378\"],\n[\"c3a1\",\"\u737A\u74BD\u74CA\u74E3\u7587\u7586\u765F\u7661\u77C7\u7919\u79B1\u7A6B\u7A69\u7C3E\u7C3F\u7C38\u7C3D\u7C37\u7C40\u7E6B\u7E6D\u7E79\u7E69\u7E6A\u7F85\u7E73\u7FB6\u7FB9\u7FB8\u81D8\u85E9\u85DD\u85EA\u85D5\u85E4\u85E5\u85F7\u87FB\u8805\u880D\u87F9\u87FE\u8960\u895F\u8956\u895E\u8B41\u8B5C\u8B58\u8B49\u8B5A\u8B4E\u8B4F\u8B46\u8B59\u8D08\u8D0A\u8E7C\u8E72\u8E87\u8E76\u8E6C\u8E7A\u8E74\u8F54\u8F4E\u8FAD\u908A\u908B\u91B1\u91AE\u93E1\u93D1\u93DF\u93C3\u93C8\u93DC\u93DD\u93D6\u93E2\u93CD\u93D8\u93E4\u93D7\u93E8\u95DC\u96B4\u96E3\u972A\u9727\u9761\u97DC\u97FB\u985E\"],\n[\"c440\",\"\u9858\u985B\u98BC\u9945\u9949\u9A16\u9A19\u9B0D\u9BE8\u9BE7\u9BD6\u9BDB\u9D89\u9D61\u9D72\u9D6A\u9D6C\u9E92\u9E97\u9E93\u9EB4\u52F8\u56A8\u56B7\u56B6\u56B4\u56BC\u58E4\u5B40\u5B43\u5B7D\u5BF6\u5DC9\u61F8\u61FA\u6518\u6514\u6519\u66E6\u6727\u6AEC\u703E\u7030\u7032\u7210\u737B\u74CF\u7662\u7665\u7926\u792A\u792C\u792B\u7AC7\u7AF6\u7C4C\u7C43\u7C4D\u7CEF\u7CF0\u8FAE\u7E7D\u7E7C\"],\n[\"c4a1\",\"\u7E82\u7F4C\u8000\u81DA\u8266\u85FB\u85F9\u8611\u85FA\u8606\u860B\u8607\u860A\u8814\u8815\u8964\u89BA\u89F8\u8B70\u8B6C\u8B66\u8B6F\u8B5F\u8B6B\u8D0F\u8D0D\u8E89\u8E81\u8E85\u8E82\u91B4\u91CB\u9418\u9403\u93FD\u95E1\u9730\u98C4\u9952\u9951\u99A8\u9A2B\u9A30\u9A37\u9A35\u9C13\u9C0D\u9E79\u9EB5\u9EE8\u9F2F\u9F5F\u9F63\u9F61\u5137\u5138\u56C1\u56C0\u56C2\u5914\u5C6C\u5DCD\u61FC\u61FE\u651D\u651C\u6595\u66E9\u6AFB\u6B04\u6AFA\u6BB2\u704C\u721B\u72A7\u74D6\u74D4\u7669\u77D3\u7C50\u7E8F\u7E8C\u7FBC\u8617\u862D\u861A\u8823\u8822\u8821\u881F\u896A\u896C\u89BD\u8B74\"],\n[\"c540\",\"\u8B77\u8B7D\u8D13\u8E8A\u8E8D\u8E8B\u8F5F\u8FAF\u91BA\u942E\u9433\u9435\u943A\u9438\u9432\u942B\u95E2\u9738\u9739\u9732\u97FF\u9867\u9865\u9957\u9A45\u9A43\u9A40\u9A3E\u9ACF\u9B54\u9B51\u9C2D\u9C25\u9DAF\u9DB4\u9DC2\u9DB8\u9E9D\u9EEF\u9F19\u9F5C\u9F66\u9F67\u513C\u513B\u56C8\u56CA\u56C9\u5B7F\u5DD4\u5DD2\u5F4E\u61FF\u6524\u6B0A\u6B61\u7051\u7058\u7380\u74E4\u758A\u766E\u766C\"],\n[\"c5a1\",\"\u79B3\u7C60\u7C5F\u807E\u807D\u81DF\u8972\u896F\u89FC\u8B80\u8D16\u8D17\u8E91\u8E93\u8F61\u9148\u9444\u9451\u9452\u973D\u973E\u97C3\u97C1\u986B\u9955\u9A55\u9A4D\u9AD2\u9B1A\u9C49\u9C31\u9C3E\u9C3B\u9DD3\u9DD7\u9F34\u9F6C\u9F6A\u9F94\u56CC\u5DD6\u6200\u6523\u652B\u652A\u66EC\u6B10\u74DA\u7ACA\u7C64\u7C63\u7C65\u7E93\u7E96\u7E94\u81E2\u8638\u863F\u8831\u8B8A\u9090\u908F\u9463\u9460\u9464\u9768\u986F\u995C\u9A5A\u9A5B\u9A57\u9AD3\u9AD4\u9AD1\u9C54\u9C57\u9C56\u9DE5\u9E9F\u9EF4\u56D1\u58E9\u652C\u705E\u7671\u7672\u77D7\u7F50\u7F88\u8836\u8839\u8862\u8B93\u8B92\"],\n[\"c640\",\"\u8B96\u8277\u8D1B\u91C0\u946A\u9742\u9748\u9744\u97C6\u9870\u9A5F\u9B22\u9B58\u9C5F\u9DF9\u9DFA\u9E7C\u9E7D\u9F07\u9F77\u9F72\u5EF3\u6B16\u7063\u7C6C\u7C6E\u883B\u89C0\u8EA1\u91C1\u9472\u9470\u9871\u995E\u9AD6\u9B23\u9ECC\u7064\u77DA\u8B9A\u9477\u97C9\u9A62\u9A65\u7E9C\u8B9C\u8EAA\u91C5\u947D\u947E\u947C\u9C77\u9C78\u9EF7\u8C54\u947F\u9E1A\u7228\u9A6A\u9B31\u9E1B\u9E1E\u7C72\"],\n[\"c940\",\"\u4E42\u4E5C\u51F5\u531A\u5382\u4E07\u4E0C\u4E47\u4E8D\u56D7\uFA0C\u5C6E\u5F73\u4E0F\u5187\u4E0E\u4E2E\u4E93\u4EC2\u4EC9\u4EC8\u5198\u52FC\u536C\u53B9\u5720\u5903\u592C\u5C10\u5DFF\u65E1\u6BB3\u6BCC\u6C14\u723F\u4E31\u4E3C\u4EE8\u4EDC\u4EE9\u4EE1\u4EDD\u4EDA\u520C\u531C\u534C\u5722\u5723\u5917\u592F\u5B81\u5B84\u5C12\u5C3B\u5C74\u5C73\u5E04\u5E80\u5E82\u5FC9\u6209\u6250\u6C15\"],\n[\"c9a1\",\"\u6C36\u6C43\u6C3F\u6C3B\u72AE\u72B0\u738A\u79B8\u808A\u961E\u4F0E\u4F18\u4F2C\u4EF5\u4F14\u4EF1\u4F00\u4EF7\u4F08\u4F1D\u4F02\u4F05\u4F22\u4F13\u4F04\u4EF4\u4F12\u51B1\u5213\u5209\u5210\u52A6\u5322\u531F\u534D\u538A\u5407\u56E1\u56DF\u572E\u572A\u5734\u593C\u5980\u597C\u5985\u597B\u597E\u5977\u597F\u5B56\u5C15\u5C25\u5C7C\u5C7A\u5C7B\u5C7E\u5DDF\u5E75\u5E84\u5F02\u5F1A\u5F74\u5FD5\u5FD4\u5FCF\u625C\u625E\u6264\u6261\u6266\u6262\u6259\u6260\u625A\u6265\u65EF\u65EE\u673E\u6739\u6738\u673B\u673A\u673F\u673C\u6733\u6C18\u6C46\u6C52\u6C5C\u6C4F\u6C4A\u6C54\u6C4B\"],\n[\"ca40\",\"\u6C4C\u7071\u725E\u72B4\u72B5\u738E\u752A\u767F\u7A75\u7F51\u8278\u827C\u8280\u827D\u827F\u864D\u897E\u9099\u9097\u9098\u909B\u9094\u9622\u9624\u9620\u9623\u4F56\u4F3B\u4F62\u4F49\u4F53\u4F64\u4F3E\u4F67\u4F52\u4F5F\u4F41\u4F58\u4F2D\u4F33\u4F3F\u4F61\u518F\u51B9\u521C\u521E\u5221\u52AD\u52AE\u5309\u5363\u5372\u538E\u538F\u5430\u5437\u542A\u5454\u5445\u5419\u541C\u5425\u5418\"],\n[\"caa1\",\"\u543D\u544F\u5441\u5428\u5424\u5447\u56EE\u56E7\u56E5\u5741\u5745\u574C\u5749\u574B\u5752\u5906\u5940\u59A6\u5998\u59A0\u5997\u598E\u59A2\u5990\u598F\u59A7\u59A1\u5B8E\u5B92\u5C28\u5C2A\u5C8D\u5C8F\u5C88\u5C8B\u5C89\u5C92\u5C8A\u5C86\u5C93\u5C95\u5DE0\u5E0A\u5E0E\u5E8B\u5E89\u5E8C\u5E88\u5E8D\u5F05\u5F1D\u5F78\u5F76\u5FD2\u5FD1\u5FD0\u5FED\u5FE8\u5FEE\u5FF3\u5FE1\u5FE4\u5FE3\u5FFA\u5FEF\u5FF7\u5FFB\u6000\u5FF4\u623A\u6283\u628C\u628E\u628F\u6294\u6287\u6271\u627B\u627A\u6270\u6281\u6288\u6277\u627D\u6272\u6274\u6537\u65F0\u65F4\u65F3\u65F2\u65F5\u6745\u6747\"],\n[\"cb40\",\"\u6759\u6755\u674C\u6748\u675D\u674D\u675A\u674B\u6BD0\u6C19\u6C1A\u6C78\u6C67\u6C6B\u6C84\u6C8B\u6C8F\u6C71\u6C6F\u6C69\u6C9A\u6C6D\u6C87\u6C95\u6C9C\u6C66\u6C73\u6C65\u6C7B\u6C8E\u7074\u707A\u7263\u72BF\u72BD\u72C3\u72C6\u72C1\u72BA\u72C5\u7395\u7397\u7393\u7394\u7392\u753A\u7539\u7594\u7595\u7681\u793D\u8034\u8095\u8099\u8090\u8092\u809C\u8290\u828F\u8285\u828E\u8291\u8293\"],\n[\"cba1\",\"\u828A\u8283\u8284\u8C78\u8FC9\u8FBF\u909F\u90A1\u90A5\u909E\u90A7\u90A0\u9630\u9628\u962F\u962D\u4E33\u4F98\u4F7C\u4F85\u4F7D\u4F80\u4F87\u4F76\u4F74\u4F89\u4F84\u4F77\u4F4C\u4F97\u4F6A\u4F9A\u4F79\u4F81\u4F78\u4F90\u4F9C\u4F94\u4F9E\u4F92\u4F82\u4F95\u4F6B\u4F6E\u519E\u51BC\u51BE\u5235\u5232\u5233\u5246\u5231\u52BC\u530A\u530B\u533C\u5392\u5394\u5487\u547F\u5481\u5491\u5482\u5488\u546B\u547A\u547E\u5465\u546C\u5474\u5466\u548D\u546F\u5461\u5460\u5498\u5463\u5467\u5464\u56F7\u56F9\u576F\u5772\u576D\u576B\u5771\u5770\u5776\u5780\u5775\u577B\u5773\u5774\u5762\"],\n[\"cc40\",\"\u5768\u577D\u590C\u5945\u59B5\u59BA\u59CF\u59CE\u59B2\u59CC\u59C1\u59B6\u59BC\u59C3\u59D6\u59B1\u59BD\u59C0\u59C8\u59B4\u59C7\u5B62\u5B65\u5B93\u5B95\u5C44\u5C47\u5CAE\u5CA4\u5CA0\u5CB5\u5CAF\u5CA8\u5CAC\u5C9F\u5CA3\u5CAD\u5CA2\u5CAA\u5CA7\u5C9D\u5CA5\u5CB6\u5CB0\u5CA6\u5E17\u5E14\u5E19\u5F28\u5F22\u5F23\u5F24\u5F54\u5F82\u5F7E\u5F7D\u5FDE\u5FE5\u602D\u6026\u6019\u6032\u600B\"],\n[\"cca1\",\"\u6034\u600A\u6017\u6033\u601A\u601E\u602C\u6022\u600D\u6010\u602E\u6013\u6011\u600C\u6009\u601C\u6214\u623D\u62AD\u62B4\u62D1\u62BE\u62AA\u62B6\u62CA\u62AE\u62B3\u62AF\u62BB\u62A9\u62B0\u62B8\u653D\u65A8\u65BB\u6609\u65FC\u6604\u6612\u6608\u65FB\u6603\u660B\u660D\u6605\u65FD\u6611\u6610\u66F6\u670A\u6785\u676C\u678E\u6792\u6776\u677B\u6798\u6786\u6784\u6774\u678D\u678C\u677A\u679F\u6791\u6799\u6783\u677D\u6781\u6778\u6779\u6794\u6B25\u6B80\u6B7E\u6BDE\u6C1D\u6C93\u6CEC\u6CEB\u6CEE\u6CD9\u6CB6\u6CD4\u6CAD\u6CE7\u6CB7\u6CD0\u6CC2\u6CBA\u6CC3\u6CC6\u6CED\u6CF2\"],\n[\"cd40\",\"\u6CD2\u6CDD\u6CB4\u6C8A\u6C9D\u6C80\u6CDE\u6CC0\u6D30\u6CCD\u6CC7\u6CB0\u6CF9\u6CCF\u6CE9\u6CD1\u7094\u7098\u7085\u7093\u7086\u7084\u7091\u7096\u7082\u709A\u7083\u726A\u72D6\u72CB\u72D8\u72C9\u72DC\u72D2\u72D4\u72DA\u72CC\u72D1\u73A4\u73A1\u73AD\u73A6\u73A2\u73A0\u73AC\u739D\u74DD\u74E8\u753F\u7540\u753E\u758C\u7598\u76AF\u76F3\u76F1\u76F0\u76F5\u77F8\u77FC\u77F9\u77FB\u77FA\"],\n[\"cda1\",\"\u77F7\u7942\u793F\u79C5\u7A78\u7A7B\u7AFB\u7C75\u7CFD\u8035\u808F\u80AE\u80A3\u80B8\u80B5\u80AD\u8220\u82A0\u82C0\u82AB\u829A\u8298\u829B\u82B5\u82A7\u82AE\u82BC\u829E\u82BA\u82B4\u82A8\u82A1\u82A9\u82C2\u82A4\u82C3\u82B6\u82A2\u8670\u866F\u866D\u866E\u8C56\u8FD2\u8FCB\u8FD3\u8FCD\u8FD6\u8FD5\u8FD7\u90B2\u90B4\u90AF\u90B3\u90B0\u9639\u963D\u963C\u963A\u9643\u4FCD\u4FC5\u4FD3\u4FB2\u4FC9\u4FCB\u4FC1\u4FD4\u4FDC\u4FD9\u4FBB\u4FB3\u4FDB\u4FC7\u4FD6\u4FBA\u4FC0\u4FB9\u4FEC\u5244\u5249\u52C0\u52C2\u533D\u537C\u5397\u5396\u5399\u5398\u54BA\u54A1\u54AD\u54A5\u54CF\"],\n[\"ce40\",\"\u54C3\u830D\u54B7\u54AE\u54D6\u54B6\u54C5\u54C6\u54A0\u5470\u54BC\u54A2\u54BE\u5472\u54DE\u54B0\u57B5\u579E\u579F\u57A4\u578C\u5797\u579D\u579B\u5794\u5798\u578F\u5799\u57A5\u579A\u5795\u58F4\u590D\u5953\u59E1\u59DE\u59EE\u5A00\u59F1\u59DD\u59FA\u59FD\u59FC\u59F6\u59E4\u59F2\u59F7\u59DB\u59E9\u59F3\u59F5\u59E0\u59FE\u59F4\u59ED\u5BA8\u5C4C\u5CD0\u5CD8\u5CCC\u5CD7\u5CCB\u5CDB\"],\n[\"cea1\",\"\u5CDE\u5CDA\u5CC9\u5CC7\u5CCA\u5CD6\u5CD3\u5CD4\u5CCF\u5CC8\u5CC6\u5CCE\u5CDF\u5CF8\u5DF9\u5E21\u5E22\u5E23\u5E20\u5E24\u5EB0\u5EA4\u5EA2\u5E9B\u5EA3\u5EA5\u5F07\u5F2E\u5F56\u5F86\u6037\u6039\u6054\u6072\u605E\u6045\u6053\u6047\u6049\u605B\u604C\u6040\u6042\u605F\u6024\u6044\u6058\u6066\u606E\u6242\u6243\u62CF\u630D\u630B\u62F5\u630E\u6303\u62EB\u62F9\u630F\u630C\u62F8\u62F6\u6300\u6313\u6314\u62FA\u6315\u62FB\u62F0\u6541\u6543\u65AA\u65BF\u6636\u6621\u6632\u6635\u661C\u6626\u6622\u6633\u662B\u663A\u661D\u6634\u6639\u662E\u670F\u6710\u67C1\u67F2\u67C8\u67BA\"],\n[\"cf40\",\"\u67DC\u67BB\u67F8\u67D8\u67C0\u67B7\u67C5\u67EB\u67E4\u67DF\u67B5\u67CD\u67B3\u67F7\u67F6\u67EE\u67E3\u67C2\u67B9\u67CE\u67E7\u67F0\u67B2\u67FC\u67C6\u67ED\u67CC\u67AE\u67E6\u67DB\u67FA\u67C9\u67CA\u67C3\u67EA\u67CB\u6B28\u6B82\u6B84\u6BB6\u6BD6\u6BD8\u6BE0\u6C20\u6C21\u6D28\u6D34\u6D2D\u6D1F\u6D3C\u6D3F\u6D12\u6D0A\u6CDA\u6D33\u6D04\u6D19\u6D3A\u6D1A\u6D11\u6D00\u6D1D\u6D42\"],\n[\"cfa1\",\"\u6D01\u6D18\u6D37\u6D03\u6D0F\u6D40\u6D07\u6D20\u6D2C\u6D08\u6D22\u6D09\u6D10\u70B7\u709F\u70BE\u70B1\u70B0\u70A1\u70B4\u70B5\u70A9\u7241\u7249\u724A\u726C\u7270\u7273\u726E\u72CA\u72E4\u72E8\u72EB\u72DF\u72EA\u72E6\u72E3\u7385\u73CC\u73C2\u73C8\u73C5\u73B9\u73B6\u73B5\u73B4\u73EB\u73BF\u73C7\u73BE\u73C3\u73C6\u73B8\u73CB\u74EC\u74EE\u752E\u7547\u7548\u75A7\u75AA\u7679\u76C4\u7708\u7703\u7704\u7705\u770A\u76F7\u76FB\u76FA\u77E7\u77E8\u7806\u7811\u7812\u7805\u7810\u780F\u780E\u7809\u7803\u7813\u794A\u794C\u794B\u7945\u7944\u79D5\u79CD\u79CF\u79D6\u79CE\u7A80\"],\n[\"d040\",\"\u7A7E\u7AD1\u7B00\u7B01\u7C7A\u7C78\u7C79\u7C7F\u7C80\u7C81\u7D03\u7D08\u7D01\u7F58\u7F91\u7F8D\u7FBE\u8007\u800E\u800F\u8014\u8037\u80D8\u80C7\u80E0\u80D1\u80C8\u80C2\u80D0\u80C5\u80E3\u80D9\u80DC\u80CA\u80D5\u80C9\u80CF\u80D7\u80E6\u80CD\u81FF\u8221\u8294\u82D9\u82FE\u82F9\u8307\u82E8\u8300\u82D5\u833A\u82EB\u82D6\u82F4\u82EC\u82E1\u82F2\u82F5\u830C\u82FB\u82F6\u82F0\u82EA\"],\n[\"d0a1\",\"\u82E4\u82E0\u82FA\u82F3\u82ED\u8677\u8674\u867C\u8673\u8841\u884E\u8867\u886A\u8869\u89D3\u8A04\u8A07\u8D72\u8FE3\u8FE1\u8FEE\u8FE0\u90F1\u90BD\u90BF\u90D5\u90C5\u90BE\u90C7\u90CB\u90C8\u91D4\u91D3\u9654\u964F\u9651\u9653\u964A\u964E\u501E\u5005\u5007\u5013\u5022\u5030\u501B\u4FF5\u4FF4\u5033\u5037\u502C\u4FF6\u4FF7\u5017\u501C\u5020\u5027\u5035\u502F\u5031\u500E\u515A\u5194\u5193\u51CA\u51C4\u51C5\u51C8\u51CE\u5261\u525A\u5252\u525E\u525F\u5255\u5262\u52CD\u530E\u539E\u5526\u54E2\u5517\u5512\u54E7\u54F3\u54E4\u551A\u54FF\u5504\u5508\u54EB\u5511\u5505\u54F1\"],\n[\"d140\",\"\u550A\u54FB\u54F7\u54F8\u54E0\u550E\u5503\u550B\u5701\u5702\u57CC\u5832\u57D5\u57D2\u57BA\u57C6\u57BD\u57BC\u57B8\u57B6\u57BF\u57C7\u57D0\u57B9\u57C1\u590E\u594A\u5A19\u5A16\u5A2D\u5A2E\u5A15\u5A0F\u5A17\u5A0A\u5A1E\u5A33\u5B6C\u5BA7\u5BAD\u5BAC\u5C03\u5C56\u5C54\u5CEC\u5CFF\u5CEE\u5CF1\u5CF7\u5D00\u5CF9\u5E29\u5E28\u5EA8\u5EAE\u5EAA\u5EAC\u5F33\u5F30\u5F67\u605D\u605A\u6067\"],\n[\"d1a1\",\"\u6041\u60A2\u6088\u6080\u6092\u6081\u609D\u6083\u6095\u609B\u6097\u6087\u609C\u608E\u6219\u6246\u62F2\u6310\u6356\u632C\u6344\u6345\u6336\u6343\u63E4\u6339\u634B\u634A\u633C\u6329\u6341\u6334\u6358\u6354\u6359\u632D\u6347\u6333\u635A\u6351\u6338\u6357\u6340\u6348\u654A\u6546\u65C6\u65C3\u65C4\u65C2\u664A\u665F\u6647\u6651\u6712\u6713\u681F\u681A\u6849\u6832\u6833\u683B\u684B\u684F\u6816\u6831\u681C\u6835\u682B\u682D\u682F\u684E\u6844\u6834\u681D\u6812\u6814\u6826\u6828\u682E\u684D\u683A\u6825\u6820\u6B2C\u6B2F\u6B2D\u6B31\u6B34\u6B6D\u8082\u6B88\u6BE6\u6BE4\"],\n[\"d240\",\"\u6BE8\u6BE3\u6BE2\u6BE7\u6C25\u6D7A\u6D63\u6D64\u6D76\u6D0D\u6D61\u6D92\u6D58\u6D62\u6D6D\u6D6F\u6D91\u6D8D\u6DEF\u6D7F\u6D86\u6D5E\u6D67\u6D60\u6D97\u6D70\u6D7C\u6D5F\u6D82\u6D98\u6D2F\u6D68\u6D8B\u6D7E\u6D80\u6D84\u6D16\u6D83\u6D7B\u6D7D\u6D75\u6D90\u70DC\u70D3\u70D1\u70DD\u70CB\u7F39\u70E2\u70D7\u70D2\u70DE\u70E0\u70D4\u70CD\u70C5\u70C6\u70C7\u70DA\u70CE\u70E1\u7242\u7278\"],\n[\"d2a1\",\"\u7277\u7276\u7300\u72FA\u72F4\u72FE\u72F6\u72F3\u72FB\u7301\u73D3\u73D9\u73E5\u73D6\u73BC\u73E7\u73E3\u73E9\u73DC\u73D2\u73DB\u73D4\u73DD\u73DA\u73D7\u73D8\u73E8\u74DE\u74DF\u74F4\u74F5\u7521\u755B\u755F\u75B0\u75C1\u75BB\u75C4\u75C0\u75BF\u75B6\u75BA\u768A\u76C9\u771D\u771B\u7710\u7713\u7712\u7723\u7711\u7715\u7719\u771A\u7722\u7727\u7823\u782C\u7822\u7835\u782F\u7828\u782E\u782B\u7821\u7829\u7833\u782A\u7831\u7954\u795B\u794F\u795C\u7953\u7952\u7951\u79EB\u79EC\u79E0\u79EE\u79ED\u79EA\u79DC\u79DE\u79DD\u7A86\u7A89\u7A85\u7A8B\u7A8C\u7A8A\u7A87\u7AD8\u7B10\"],\n[\"d340\",\"\u7B04\u7B13\u7B05\u7B0F\u7B08\u7B0A\u7B0E\u7B09\u7B12\u7C84\u7C91\u7C8A\u7C8C\u7C88\u7C8D\u7C85\u7D1E\u7D1D\u7D11\u7D0E\u7D18\u7D16\u7D13\u7D1F\u7D12\u7D0F\u7D0C\u7F5C\u7F61\u7F5E\u7F60\u7F5D\u7F5B\u7F96\u7F92\u7FC3\u7FC2\u7FC0\u8016\u803E\u8039\u80FA\u80F2\u80F9\u80F5\u8101\u80FB\u8100\u8201\u822F\u8225\u8333\u832D\u8344\u8319\u8351\u8325\u8356\u833F\u8341\u8326\u831C\u8322\"],\n[\"d3a1\",\"\u8342\u834E\u831B\u832A\u8308\u833C\u834D\u8316\u8324\u8320\u8337\u832F\u8329\u8347\u8345\u834C\u8353\u831E\u832C\u834B\u8327\u8348\u8653\u8652\u86A2\u86A8\u8696\u868D\u8691\u869E\u8687\u8697\u8686\u868B\u869A\u8685\u86A5\u8699\u86A1\u86A7\u8695\u8698\u868E\u869D\u8690\u8694\u8843\u8844\u886D\u8875\u8876\u8872\u8880\u8871\u887F\u886F\u8883\u887E\u8874\u887C\u8A12\u8C47\u8C57\u8C7B\u8CA4\u8CA3\u8D76\u8D78\u8DB5\u8DB7\u8DB6\u8ED1\u8ED3\u8FFE\u8FF5\u9002\u8FFF\u8FFB\u9004\u8FFC\u8FF6\u90D6\u90E0\u90D9\u90DA\u90E3\u90DF\u90E5\u90D8\u90DB\u90D7\u90DC\u90E4\u9150\"],\n[\"d440\",\"\u914E\u914F\u91D5\u91E2\u91DA\u965C\u965F\u96BC\u98E3\u9ADF\u9B2F\u4E7F\u5070\u506A\u5061\u505E\u5060\u5053\u504B\u505D\u5072\u5048\u504D\u5041\u505B\u504A\u5062\u5015\u5045\u505F\u5069\u506B\u5063\u5064\u5046\u5040\u506E\u5073\u5057\u5051\u51D0\u526B\u526D\u526C\u526E\u52D6\u52D3\u532D\u539C\u5575\u5576\u553C\u554D\u5550\u5534\u552A\u5551\u5562\u5536\u5535\u5530\u5552\u5545\"],\n[\"d4a1\",\"\u550C\u5532\u5565\u554E\u5539\u5548\u552D\u553B\u5540\u554B\u570A\u5707\u57FB\u5814\u57E2\u57F6\u57DC\u57F4\u5800\u57ED\u57FD\u5808\u57F8\u580B\u57F3\u57CF\u5807\u57EE\u57E3\u57F2\u57E5\u57EC\u57E1\u580E\u57FC\u5810\u57E7\u5801\u580C\u57F1\u57E9\u57F0\u580D\u5804\u595C\u5A60\u5A58\u5A55\u5A67\u5A5E\u5A38\u5A35\u5A6D\u5A50\u5A5F\u5A65\u5A6C\u5A53\u5A64\u5A57\u5A43\u5A5D\u5A52\u5A44\u5A5B\u5A48\u5A8E\u5A3E\u5A4D\u5A39\u5A4C\u5A70\u5A69\u5A47\u5A51\u5A56\u5A42\u5A5C\u5B72\u5B6E\u5BC1\u5BC0\u5C59\u5D1E\u5D0B\u5D1D\u5D1A\u5D20\u5D0C\u5D28\u5D0D\u5D26\u5D25\u5D0F\"],\n[\"d540\",\"\u5D30\u5D12\u5D23\u5D1F\u5D2E\u5E3E\u5E34\u5EB1\u5EB4\u5EB9\u5EB2\u5EB3\u5F36\u5F38\u5F9B\u5F96\u5F9F\u608A\u6090\u6086\u60BE\u60B0\u60BA\u60D3\u60D4\u60CF\u60E4\u60D9\u60DD\u60C8\u60B1\u60DB\u60B7\u60CA\u60BF\u60C3\u60CD\u60C0\u6332\u6365\u638A\u6382\u637D\u63BD\u639E\u63AD\u639D\u6397\u63AB\u638E\u636F\u6387\u6390\u636E\u63AF\u6375\u639C\u636D\u63AE\u637C\u63A4\u633B\u639F\"],\n[\"d5a1\",\"\u6378\u6385\u6381\u6391\u638D\u6370\u6553\u65CD\u6665\u6661\u665B\u6659\u665C\u6662\u6718\u6879\u6887\u6890\u689C\u686D\u686E\u68AE\u68AB\u6956\u686F\u68A3\u68AC\u68A9\u6875\u6874\u68B2\u688F\u6877\u6892\u687C\u686B\u6872\u68AA\u6880\u6871\u687E\u689B\u6896\u688B\u68A0\u6889\u68A4\u6878\u687B\u6891\u688C\u688A\u687D\u6B36\u6B33\u6B37\u6B38\u6B91\u6B8F\u6B8D\u6B8E\u6B8C\u6C2A\u6DC0\u6DAB\u6DB4\u6DB3\u6E74\u6DAC\u6DE9\u6DE2\u6DB7\u6DF6\u6DD4\u6E00\u6DC8\u6DE0\u6DDF\u6DD6\u6DBE\u6DE5\u6DDC\u6DDD\u6DDB\u6DF4\u6DCA\u6DBD\u6DED\u6DF0\u6DBA\u6DD5\u6DC2\u6DCF\u6DC9\"],\n[\"d640\",\"\u6DD0\u6DF2\u6DD3\u6DFD\u6DD7\u6DCD\u6DE3\u6DBB\u70FA\u710D\u70F7\u7117\u70F4\u710C\u70F0\u7104\u70F3\u7110\u70FC\u70FF\u7106\u7113\u7100\u70F8\u70F6\u710B\u7102\u710E\u727E\u727B\u727C\u727F\u731D\u7317\u7307\u7311\u7318\u730A\u7308\u72FF\u730F\u731E\u7388\u73F6\u73F8\u73F5\u7404\u7401\u73FD\u7407\u7400\u73FA\u73FC\u73FF\u740C\u740B\u73F4\u7408\u7564\u7563\u75CE\u75D2\u75CF\"],\n[\"d6a1\",\"\u75CB\u75CC\u75D1\u75D0\u768F\u7689\u76D3\u7739\u772F\u772D\u7731\u7732\u7734\u7733\u773D\u7725\u773B\u7735\u7848\u7852\u7849\u784D\u784A\u784C\u7826\u7845\u7850\u7964\u7967\u7969\u796A\u7963\u796B\u7961\u79BB\u79FA\u79F8\u79F6\u79F7\u7A8F\u7A94\u7A90\u7B35\u7B47\u7B34\u7B25\u7B30\u7B22\u7B24\u7B33\u7B18\u7B2A\u7B1D\u7B31\u7B2B\u7B2D\u7B2F\u7B32\u7B38\u7B1A\u7B23\u7C94\u7C98\u7C96\u7CA3\u7D35\u7D3D\u7D38\u7D36\u7D3A\u7D45\u7D2C\u7D29\u7D41\u7D47\u7D3E\u7D3F\u7D4A\u7D3B\u7D28\u7F63\u7F95\u7F9C\u7F9D\u7F9B\u7FCA\u7FCB\u7FCD\u7FD0\u7FD1\u7FC7\u7FCF\u7FC9\u801F\"],\n[\"d740\",\"\u801E\u801B\u8047\u8043\u8048\u8118\u8125\u8119\u811B\u812D\u811F\u812C\u811E\u8121\u8115\u8127\u811D\u8122\u8211\u8238\u8233\u823A\u8234\u8232\u8274\u8390\u83A3\u83A8\u838D\u837A\u8373\u83A4\u8374\u838F\u8381\u8395\u8399\u8375\u8394\u83A9\u837D\u8383\u838C\u839D\u839B\u83AA\u838B\u837E\u83A5\u83AF\u8388\u8397\u83B0\u837F\u83A6\u8387\u83AE\u8376\u839A\u8659\u8656\u86BF\u86B7\"],\n[\"d7a1\",\"\u86C2\u86C1\u86C5\u86BA\u86B0\u86C8\u86B9\u86B3\u86B8\u86CC\u86B4\u86BB\u86BC\u86C3\u86BD\u86BE\u8852\u8889\u8895\u88A8\u88A2\u88AA\u889A\u8891\u88A1\u889F\u8898\u88A7\u8899\u889B\u8897\u88A4\u88AC\u888C\u8893\u888E\u8982\u89D6\u89D9\u89D5\u8A30\u8A27\u8A2C\u8A1E\u8C39\u8C3B\u8C5C\u8C5D\u8C7D\u8CA5\u8D7D\u8D7B\u8D79\u8DBC\u8DC2\u8DB9\u8DBF\u8DC1\u8ED8\u8EDE\u8EDD\u8EDC\u8ED7\u8EE0\u8EE1\u9024\u900B\u9011\u901C\u900C\u9021\u90EF\u90EA\u90F0\u90F4\u90F2\u90F3\u90D4\u90EB\u90EC\u90E9\u9156\u9158\u915A\u9153\u9155\u91EC\u91F4\u91F1\u91F3\u91F8\u91E4\u91F9\u91EA\"],\n[\"d840\",\"\u91EB\u91F7\u91E8\u91EE\u957A\u9586\u9588\u967C\u966D\u966B\u9671\u966F\u96BF\u976A\u9804\u98E5\u9997\u509B\u5095\u5094\u509E\u508B\u50A3\u5083\u508C\u508E\u509D\u5068\u509C\u5092\u5082\u5087\u515F\u51D4\u5312\u5311\u53A4\u53A7\u5591\u55A8\u55A5\u55AD\u5577\u5645\u55A2\u5593\u5588\u558F\u55B5\u5581\u55A3\u5592\u55A4\u557D\u558C\u55A6\u557F\u5595\u55A1\u558E\u570C\u5829\u5837\"],\n[\"d8a1\",\"\u5819\u581E\u5827\u5823\u5828\u57F5\u5848\u5825\u581C\u581B\u5833\u583F\u5836\u582E\u5839\u5838\u582D\u582C\u583B\u5961\u5AAF\u5A94\u5A9F\u5A7A\u5AA2\u5A9E\u5A78\u5AA6\u5A7C\u5AA5\u5AAC\u5A95\u5AAE\u5A37\u5A84\u5A8A\u5A97\u5A83\u5A8B\u5AA9\u5A7B\u5A7D\u5A8C\u5A9C\u5A8F\u5A93\u5A9D\u5BEA\u5BCD\u5BCB\u5BD4\u5BD1\u5BCA\u5BCE\u5C0C\u5C30\u5D37\u5D43\u5D6B\u5D41\u5D4B\u5D3F\u5D35\u5D51\u5D4E\u5D55\u5D33\u5D3A\u5D52\u5D3D\u5D31\u5D59\u5D42\u5D39\u5D49\u5D38\u5D3C\u5D32\u5D36\u5D40\u5D45\u5E44\u5E41\u5F58\u5FA6\u5FA5\u5FAB\u60C9\u60B9\u60CC\u60E2\u60CE\u60C4\u6114\"],\n[\"d940\",\"\u60F2\u610A\u6116\u6105\u60F5\u6113\u60F8\u60FC\u60FE\u60C1\u6103\u6118\u611D\u6110\u60FF\u6104\u610B\u624A\u6394\u63B1\u63B0\u63CE\u63E5\u63E8\u63EF\u63C3\u649D\u63F3\u63CA\u63E0\u63F6\u63D5\u63F2\u63F5\u6461\u63DF\u63BE\u63DD\u63DC\u63C4\u63D8\u63D3\u63C2\u63C7\u63CC\u63CB\u63C8\u63F0\u63D7\u63D9\u6532\u6567\u656A\u6564\u655C\u6568\u6565\u658C\u659D\u659E\u65AE\u65D0\u65D2\"],\n[\"d9a1\",\"\u667C\u666C\u667B\u6680\u6671\u6679\u666A\u6672\u6701\u690C\u68D3\u6904\u68DC\u692A\u68EC\u68EA\u68F1\u690F\u68D6\u68F7\u68EB\u68E4\u68F6\u6913\u6910\u68F3\u68E1\u6907\u68CC\u6908\u6970\u68B4\u6911\u68EF\u68C6\u6914\u68F8\u68D0\u68FD\u68FC\u68E8\u690B\u690A\u6917\u68CE\u68C8\u68DD\u68DE\u68E6\u68F4\u68D1\u6906\u68D4\u68E9\u6915\u6925\u68C7\u6B39\u6B3B\u6B3F\u6B3C\u6B94\u6B97\u6B99\u6B95\u6BBD\u6BF0\u6BF2\u6BF3\u6C30\u6DFC\u6E46\u6E47\u6E1F\u6E49\u6E88\u6E3C\u6E3D\u6E45\u6E62\u6E2B\u6E3F\u6E41\u6E5D\u6E73\u6E1C\u6E33\u6E4B\u6E40\u6E51\u6E3B\u6E03\u6E2E\u6E5E\"],\n[\"da40\",\"\u6E68\u6E5C\u6E61\u6E31\u6E28\u6E60\u6E71\u6E6B\u6E39\u6E22\u6E30\u6E53\u6E65\u6E27\u6E78\u6E64\u6E77\u6E55\u6E79\u6E52\u6E66\u6E35\u6E36\u6E5A\u7120\u711E\u712F\u70FB\u712E\u7131\u7123\u7125\u7122\u7132\u711F\u7128\u713A\u711B\u724B\u725A\u7288\u7289\u7286\u7285\u728B\u7312\u730B\u7330\u7322\u7331\u7333\u7327\u7332\u732D\u7326\u7323\u7335\u730C\u742E\u742C\u7430\u742B\u7416\"],\n[\"daa1\",\"\u741A\u7421\u742D\u7431\u7424\u7423\u741D\u7429\u7420\u7432\u74FB\u752F\u756F\u756C\u75E7\u75DA\u75E1\u75E6\u75DD\u75DF\u75E4\u75D7\u7695\u7692\u76DA\u7746\u7747\u7744\u774D\u7745\u774A\u774E\u774B\u774C\u77DE\u77EC\u7860\u7864\u7865\u785C\u786D\u7871\u786A\u786E\u7870\u7869\u7868\u785E\u7862\u7974\u7973\u7972\u7970\u7A02\u7A0A\u7A03\u7A0C\u7A04\u7A99\u7AE6\u7AE4\u7B4A\u7B3B\u7B44\u7B48\u7B4C\u7B4E\u7B40\u7B58\u7B45\u7CA2\u7C9E\u7CA8\u7CA1\u7D58\u7D6F\u7D63\u7D53\u7D56\u7D67\u7D6A\u7D4F\u7D6D\u7D5C\u7D6B\u7D52\u7D54\u7D69\u7D51\u7D5F\u7D4E\u7F3E\u7F3F\u7F65\"],\n[\"db40\",\"\u7F66\u7FA2\u7FA0\u7FA1\u7FD7\u8051\u804F\u8050\u80FE\u80D4\u8143\u814A\u8152\u814F\u8147\u813D\u814D\u813A\u81E6\u81EE\u81F7\u81F8\u81F9\u8204\u823C\u823D\u823F\u8275\u833B\u83CF\u83F9\u8423\u83C0\u83E8\u8412\u83E7\u83E4\u83FC\u83F6\u8410\u83C6\u83C8\u83EB\u83E3\u83BF\u8401\u83DD\u83E5\u83D8\u83FF\u83E1\u83CB\u83CE\u83D6\u83F5\u83C9\u8409\u840F\u83DE\u8411\u8406\u83C2\u83F3\"],\n[\"dba1\",\"\u83D5\u83FA\u83C7\u83D1\u83EA\u8413\u83C3\u83EC\u83EE\u83C4\u83FB\u83D7\u83E2\u841B\u83DB\u83FE\u86D8\u86E2\u86E6\u86D3\u86E3\u86DA\u86EA\u86DD\u86EB\u86DC\u86EC\u86E9\u86D7\u86E8\u86D1\u8848\u8856\u8855\u88BA\u88D7\u88B9\u88B8\u88C0\u88BE\u88B6\u88BC\u88B7\u88BD\u88B2\u8901\u88C9\u8995\u8998\u8997\u89DD\u89DA\u89DB\u8A4E\u8A4D\u8A39\u8A59\u8A40\u8A57\u8A58\u8A44\u8A45\u8A52\u8A48\u8A51\u8A4A\u8A4C\u8A4F\u8C5F\u8C81\u8C80\u8CBA\u8CBE\u8CB0\u8CB9\u8CB5\u8D84\u8D80\u8D89\u8DD8\u8DD3\u8DCD\u8DC7\u8DD6\u8DDC\u8DCF\u8DD5\u8DD9\u8DC8\u8DD7\u8DC5\u8EEF\u8EF7\u8EFA\"],\n[\"dc40\",\"\u8EF9\u8EE6\u8EEE\u8EE5\u8EF5\u8EE7\u8EE8\u8EF6\u8EEB\u8EF1\u8EEC\u8EF4\u8EE9\u902D\u9034\u902F\u9106\u912C\u9104\u90FF\u90FC\u9108\u90F9\u90FB\u9101\u9100\u9107\u9105\u9103\u9161\u9164\u915F\u9162\u9160\u9201\u920A\u9225\u9203\u921A\u9226\u920F\u920C\u9200\u9212\u91FF\u91FD\u9206\u9204\u9227\u9202\u921C\u9224\u9219\u9217\u9205\u9216\u957B\u958D\u958C\u9590\u9687\u967E\u9688\"],\n[\"dca1\",\"\u9689\u9683\u9680\u96C2\u96C8\u96C3\u96F1\u96F0\u976C\u9770\u976E\u9807\u98A9\u98EB\u9CE6\u9EF9\u4E83\u4E84\u4EB6\u50BD\u50BF\u50C6\u50AE\u50C4\u50CA\u50B4\u50C8\u50C2\u50B0\u50C1\u50BA\u50B1\u50CB\u50C9\u50B6\u50B8\u51D7\u527A\u5278\u527B\u527C\u55C3\u55DB\u55CC\u55D0\u55CB\u55CA\u55DD\u55C0\u55D4\u55C4\u55E9\u55BF\u55D2\u558D\u55CF\u55D5\u55E2\u55D6\u55C8\u55F2\u55CD\u55D9\u55C2\u5714\u5853\u5868\u5864\u584F\u584D\u5849\u586F\u5855\u584E\u585D\u5859\u5865\u585B\u583D\u5863\u5871\u58FC\u5AC7\u5AC4\u5ACB\u5ABA\u5AB8\u5AB1\u5AB5\u5AB0\u5ABF\u5AC8\u5ABB\u5AC6\"],\n[\"dd40\",\"\u5AB7\u5AC0\u5ACA\u5AB4\u5AB6\u5ACD\u5AB9\u5A90\u5BD6\u5BD8\u5BD9\u5C1F\u5C33\u5D71\u5D63\u5D4A\u5D65\u5D72\u5D6C\u5D5E\u5D68\u5D67\u5D62\u5DF0\u5E4F\u5E4E\u5E4A\u5E4D\u5E4B\u5EC5\u5ECC\u5EC6\u5ECB\u5EC7\u5F40\u5FAF\u5FAD\u60F7\u6149\u614A\u612B\u6145\u6136\u6132\u612E\u6146\u612F\u614F\u6129\u6140\u6220\u9168\u6223\u6225\u6224\u63C5\u63F1\u63EB\u6410\u6412\u6409\u6420\u6424\"],\n[\"dda1\",\"\u6433\u6443\u641F\u6415\u6418\u6439\u6437\u6422\u6423\u640C\u6426\u6430\u6428\u6441\u6435\u642F\u640A\u641A\u6440\u6425\u6427\u640B\u63E7\u641B\u642E\u6421\u640E\u656F\u6592\u65D3\u6686\u668C\u6695\u6690\u668B\u668A\u6699\u6694\u6678\u6720\u6966\u695F\u6938\u694E\u6962\u6971\u693F\u6945\u696A\u6939\u6942\u6957\u6959\u697A\u6948\u6949\u6935\u696C\u6933\u693D\u6965\u68F0\u6978\u6934\u6969\u6940\u696F\u6944\u6976\u6958\u6941\u6974\u694C\u693B\u694B\u6937\u695C\u694F\u6951\u6932\u6952\u692F\u697B\u693C\u6B46\u6B45\u6B43\u6B42\u6B48\u6B41\u6B9B\uFA0D\u6BFB\u6BFC\"],\n[\"de40\",\"\u6BF9\u6BF7\u6BF8\u6E9B\u6ED6\u6EC8\u6E8F\u6EC0\u6E9F\u6E93\u6E94\u6EA0\u6EB1\u6EB9\u6EC6\u6ED2\u6EBD\u6EC1\u6E9E\u6EC9\u6EB7\u6EB0\u6ECD\u6EA6\u6ECF\u6EB2\u6EBE\u6EC3\u6EDC\u6ED8\u6E99\u6E92\u6E8E\u6E8D\u6EA4\u6EA1\u6EBF\u6EB3\u6ED0\u6ECA\u6E97\u6EAE\u6EA3\u7147\u7154\u7152\u7163\u7160\u7141\u715D\u7162\u7172\u7178\u716A\u7161\u7142\u7158\u7143\u714B\u7170\u715F\u7150\u7153\"],\n[\"dea1\",\"\u7144\u714D\u715A\u724F\u728D\u728C\u7291\u7290\u728E\u733C\u7342\u733B\u733A\u7340\u734A\u7349\u7444\u744A\u744B\u7452\u7451\u7457\u7440\u744F\u7450\u744E\u7442\u7446\u744D\u7454\u74E1\u74FF\u74FE\u74FD\u751D\u7579\u7577\u6983\u75EF\u760F\u7603\u75F7\u75FE\u75FC\u75F9\u75F8\u7610\u75FB\u75F6\u75ED\u75F5\u75FD\u7699\u76B5\u76DD\u7755\u775F\u7760\u7752\u7756\u775A\u7769\u7767\u7754\u7759\u776D\u77E0\u7887\u789A\u7894\u788F\u7884\u7895\u7885\u7886\u78A1\u7883\u7879\u7899\u7880\u7896\u787B\u797C\u7982\u797D\u7979\u7A11\u7A18\u7A19\u7A12\u7A17\u7A15\u7A22\u7A13\"],\n[\"df40\",\"\u7A1B\u7A10\u7AA3\u7AA2\u7A9E\u7AEB\u7B66\u7B64\u7B6D\u7B74\u7B69\u7B72\u7B65\u7B73\u7B71\u7B70\u7B61\u7B78\u7B76\u7B63\u7CB2\u7CB4\u7CAF\u7D88\u7D86\u7D80\u7D8D\u7D7F\u7D85\u7D7A\u7D8E\u7D7B\u7D83\u7D7C\u7D8C\u7D94\u7D84\u7D7D\u7D92\u7F6D\u7F6B\u7F67\u7F68\u7F6C\u7FA6\u7FA5\u7FA7\u7FDB\u7FDC\u8021\u8164\u8160\u8177\u815C\u8169\u815B\u8162\u8172\u6721\u815E\u8176\u8167\u816F\"],\n[\"dfa1\",\"\u8144\u8161\u821D\u8249\u8244\u8240\u8242\u8245\u84F1\u843F\u8456\u8476\u8479\u848F\u848D\u8465\u8451\u8440\u8486\u8467\u8430\u844D\u847D\u845A\u8459\u8474\u8473\u845D\u8507\u845E\u8437\u843A\u8434\u847A\u8443\u8478\u8432\u8445\u8429\u83D9\u844B\u842F\u8442\u842D\u845F\u8470\u8439\u844E\u844C\u8452\u846F\u84C5\u848E\u843B\u8447\u8436\u8433\u8468\u847E\u8444\u842B\u8460\u8454\u846E\u8450\u870B\u8704\u86F7\u870C\u86FA\u86D6\u86F5\u874D\u86F8\u870E\u8709\u8701\u86F6\u870D\u8705\u88D6\u88CB\u88CD\u88CE\u88DE\u88DB\u88DA\u88CC\u88D0\u8985\u899B\u89DF\u89E5\u89E4\"],\n[\"e040\",\"\u89E1\u89E0\u89E2\u89DC\u89E6\u8A76\u8A86\u8A7F\u8A61\u8A3F\u8A77\u8A82\u8A84\u8A75\u8A83\u8A81\u8A74\u8A7A\u8C3C\u8C4B\u8C4A\u8C65\u8C64\u8C66\u8C86\u8C84\u8C85\u8CCC\u8D68\u8D69\u8D91\u8D8C\u8D8E\u8D8F\u8D8D\u8D93\u8D94\u8D90\u8D92\u8DF0\u8DE0\u8DEC\u8DF1\u8DEE\u8DD0\u8DE9\u8DE3\u8DE2\u8DE7\u8DF2\u8DEB\u8DF4\u8F06\u8EFF\u8F01\u8F00\u8F05\u8F07\u8F08\u8F02\u8F0B\u9052\u903F\"],\n[\"e0a1\",\"\u9044\u9049\u903D\u9110\u910D\u910F\u9111\u9116\u9114\u910B\u910E\u916E\u916F\u9248\u9252\u9230\u923A\u9266\u9233\u9265\u925E\u9283\u922E\u924A\u9246\u926D\u926C\u924F\u9260\u9267\u926F\u9236\u9261\u9270\u9231\u9254\u9263\u9250\u9272\u924E\u9253\u924C\u9256\u9232\u959F\u959C\u959E\u959B\u9692\u9693\u9691\u9697\u96CE\u96FA\u96FD\u96F8\u96F5\u9773\u9777\u9778\u9772\u980F\u980D\u980E\u98AC\u98F6\u98F9\u99AF\u99B2\u99B0\u99B5\u9AAD\u9AAB\u9B5B\u9CEA\u9CED\u9CE7\u9E80\u9EFD\u50E6\u50D4\u50D7\u50E8\u50F3\u50DB\u50EA\u50DD\u50E4\u50D3\u50EC\u50F0\u50EF\u50E3\u50E0\"],\n[\"e140\",\"\u51D8\u5280\u5281\u52E9\u52EB\u5330\u53AC\u5627\u5615\u560C\u5612\u55FC\u560F\u561C\u5601\u5613\u5602\u55FA\u561D\u5604\u55FF\u55F9\u5889\u587C\u5890\u5898\u5886\u5881\u587F\u5874\u588B\u587A\u5887\u5891\u588E\u5876\u5882\u5888\u587B\u5894\u588F\u58FE\u596B\u5ADC\u5AEE\u5AE5\u5AD5\u5AEA\u5ADA\u5AED\u5AEB\u5AF3\u5AE2\u5AE0\u5ADB\u5AEC\u5ADE\u5ADD\u5AD9\u5AE8\u5ADF\u5B77\u5BE0\"],\n[\"e1a1\",\"\u5BE3\u5C63\u5D82\u5D80\u5D7D\u5D86\u5D7A\u5D81\u5D77\u5D8A\u5D89\u5D88\u5D7E\u5D7C\u5D8D\u5D79\u5D7F\u5E58\u5E59\u5E53\u5ED8\u5ED1\u5ED7\u5ECE\u5EDC\u5ED5\u5ED9\u5ED2\u5ED4\u5F44\u5F43\u5F6F\u5FB6\u612C\u6128\u6141\u615E\u6171\u6173\u6152\u6153\u6172\u616C\u6180\u6174\u6154\u617A\u615B\u6165\u613B\u616A\u6161\u6156\u6229\u6227\u622B\u642B\u644D\u645B\u645D\u6474\u6476\u6472\u6473\u647D\u6475\u6466\u64A6\u644E\u6482\u645E\u645C\u644B\u6453\u6460\u6450\u647F\u643F\u646C\u646B\u6459\u6465\u6477\u6573\u65A0\u66A1\u66A0\u669F\u6705\u6704\u6722\u69B1\u69B6\u69C9\"],\n[\"e240\",\"\u69A0\u69CE\u6996\u69B0\u69AC\u69BC\u6991\u6999\u698E\u69A7\u698D\u69A9\u69BE\u69AF\u69BF\u69C4\u69BD\u69A4\u69D4\u69B9\u69CA\u699A\u69CF\u69B3\u6993\u69AA\u69A1\u699E\u69D9\u6997\u6990\u69C2\u69B5\u69A5\u69C6\u6B4A\u6B4D\u6B4B\u6B9E\u6B9F\u6BA0\u6BC3\u6BC4\u6BFE\u6ECE\u6EF5\u6EF1\u6F03\u6F25\u6EF8\u6F37\u6EFB\u6F2E\u6F09\u6F4E\u6F19\u6F1A\u6F27\u6F18\u6F3B\u6F12\u6EED\u6F0A\"],\n[\"e2a1\",\"\u6F36\u6F73\u6EF9\u6EEE\u6F2D\u6F40\u6F30\u6F3C\u6F35\u6EEB\u6F07\u6F0E\u6F43\u6F05\u6EFD\u6EF6\u6F39\u6F1C\u6EFC\u6F3A\u6F1F\u6F0D\u6F1E\u6F08\u6F21\u7187\u7190\u7189\u7180\u7185\u7182\u718F\u717B\u7186\u7181\u7197\u7244\u7253\u7297\u7295\u7293\u7343\u734D\u7351\u734C\u7462\u7473\u7471\u7475\u7472\u7467\u746E\u7500\u7502\u7503\u757D\u7590\u7616\u7608\u760C\u7615\u7611\u760A\u7614\u76B8\u7781\u777C\u7785\u7782\u776E\u7780\u776F\u777E\u7783\u78B2\u78AA\u78B4\u78AD\u78A8\u787E\u78AB\u789E\u78A5\u78A0\u78AC\u78A2\u78A4\u7998\u798A\u798B\u7996\u7995\u7994\u7993\"],\n[\"e340\",\"\u7997\u7988\u7992\u7990\u7A2B\u7A4A\u7A30\u7A2F\u7A28\u7A26\u7AA8\u7AAB\u7AAC\u7AEE\u7B88\u7B9C\u7B8A\u7B91\u7B90\u7B96\u7B8D\u7B8C\u7B9B\u7B8E\u7B85\u7B98\u5284\u7B99\u7BA4\u7B82\u7CBB\u7CBF\u7CBC\u7CBA\u7DA7\u7DB7\u7DC2\u7DA3\u7DAA\u7DC1\u7DC0\u7DC5\u7D9D\u7DCE\u7DC4\u7DC6\u7DCB\u7DCC\u7DAF\u7DB9\u7D96\u7DBC\u7D9F\u7DA6\u7DAE\u7DA9\u7DA1\u7DC9\u7F73\u7FE2\u7FE3\u7FE5\u7FDE\"],\n[\"e3a1\",\"\u8024\u805D\u805C\u8189\u8186\u8183\u8187\u818D\u818C\u818B\u8215\u8497\u84A4\u84A1\u849F\u84BA\u84CE\u84C2\u84AC\u84AE\u84AB\u84B9\u84B4\u84C1\u84CD\u84AA\u849A\u84B1\u84D0\u849D\u84A7\u84BB\u84A2\u8494\u84C7\u84CC\u849B\u84A9\u84AF\u84A8\u84D6\u8498\u84B6\u84CF\u84A0\u84D7\u84D4\u84D2\u84DB\u84B0\u8491\u8661\u8733\u8723\u8728\u876B\u8740\u872E\u871E\u8721\u8719\u871B\u8743\u872C\u8741\u873E\u8746\u8720\u8732\u872A\u872D\u873C\u8712\u873A\u8731\u8735\u8742\u8726\u8727\u8738\u8724\u871A\u8730\u8711\u88F7\u88E7\u88F1\u88F2\u88FA\u88FE\u88EE\u88FC\u88F6\u88FB\"],\n[\"e440\",\"\u88F0\u88EC\u88EB\u899D\u89A1\u899F\u899E\u89E9\u89EB\u89E8\u8AAB\u8A99\u8A8B\u8A92\u8A8F\u8A96\u8C3D\u8C68\u8C69\u8CD5\u8CCF\u8CD7\u8D96\u8E09\u8E02\u8DFF\u8E0D\u8DFD\u8E0A\u8E03\u8E07\u8E06\u8E05\u8DFE\u8E00\u8E04\u8F10\u8F11\u8F0E\u8F0D\u9123\u911C\u9120\u9122\u911F\u911D\u911A\u9124\u9121\u911B\u917A\u9172\u9179\u9173\u92A5\u92A4\u9276\u929B\u927A\u92A0\u9294\u92AA\u928D\"],\n[\"e4a1\",\"\u92A6\u929A\u92AB\u9279\u9297\u927F\u92A3\u92EE\u928E\u9282\u9295\u92A2\u927D\u9288\u92A1\u928A\u9286\u928C\u9299\u92A7\u927E\u9287\u92A9\u929D\u928B\u922D\u969E\u96A1\u96FF\u9758\u977D\u977A\u977E\u9783\u9780\u9782\u977B\u9784\u9781\u977F\u97CE\u97CD\u9816\u98AD\u98AE\u9902\u9900\u9907\u999D\u999C\u99C3\u99B9\u99BB\u99BA\u99C2\u99BD\u99C7\u9AB1\u9AE3\u9AE7\u9B3E\u9B3F\u9B60\u9B61\u9B5F\u9CF1\u9CF2\u9CF5\u9EA7\u50FF\u5103\u5130\u50F8\u5106\u5107\u50F6\u50FE\u510B\u510C\u50FD\u510A\u528B\u528C\u52F1\u52EF\u5648\u5642\u564C\u5635\u5641\u564A\u5649\u5646\u5658\"],\n[\"e540\",\"\u565A\u5640\u5633\u563D\u562C\u563E\u5638\u562A\u563A\u571A\u58AB\u589D\u58B1\u58A0\u58A3\u58AF\u58AC\u58A5\u58A1\u58FF\u5AFF\u5AF4\u5AFD\u5AF7\u5AF6\u5B03\u5AF8\u5B02\u5AF9\u5B01\u5B07\u5B05\u5B0F\u5C67\u5D99\u5D97\u5D9F\u5D92\u5DA2\u5D93\u5D95\u5DA0\u5D9C\u5DA1\u5D9A\u5D9E\u5E69\u5E5D\u5E60\u5E5C\u7DF3\u5EDB\u5EDE\u5EE1\u5F49\u5FB2\u618B\u6183\u6179\u61B1\u61B0\u61A2\u6189\"],\n[\"e5a1\",\"\u619B\u6193\u61AF\u61AD\u619F\u6192\u61AA\u61A1\u618D\u6166\u61B3\u622D\u646E\u6470\u6496\u64A0\u6485\u6497\u649C\u648F\u648B\u648A\u648C\u64A3\u649F\u6468\u64B1\u6498\u6576\u657A\u6579\u657B\u65B2\u65B3\u66B5\u66B0\u66A9\u66B2\u66B7\u66AA\u66AF\u6A00\u6A06\u6A17\u69E5\u69F8\u6A15\u69F1\u69E4\u6A20\u69FF\u69EC\u69E2\u6A1B\u6A1D\u69FE\u6A27\u69F2\u69EE\u6A14\u69F7\u69E7\u6A40\u6A08\u69E6\u69FB\u6A0D\u69FC\u69EB\u6A09\u6A04\u6A18\u6A25\u6A0F\u69F6\u6A26\u6A07\u69F4\u6A16\u6B51\u6BA5\u6BA3\u6BA2\u6BA6\u6C01\u6C00\u6BFF\u6C02\u6F41\u6F26\u6F7E\u6F87\u6FC6\u6F92\"],\n[\"e640\",\"\u6F8D\u6F89\u6F8C\u6F62\u6F4F\u6F85\u6F5A\u6F96\u6F76\u6F6C\u6F82\u6F55\u6F72\u6F52\u6F50\u6F57\u6F94\u6F93\u6F5D\u6F00\u6F61\u6F6B\u6F7D\u6F67\u6F90\u6F53\u6F8B\u6F69\u6F7F\u6F95\u6F63\u6F77\u6F6A\u6F7B\u71B2\u71AF\u719B\u71B0\u71A0\u719A\u71A9\u71B5\u719D\u71A5\u719E\u71A4\u71A1\u71AA\u719C\u71A7\u71B3\u7298\u729A\u7358\u7352\u735E\u735F\u7360\u735D\u735B\u7361\u735A\u7359\"],\n[\"e6a1\",\"\u7362\u7487\u7489\u748A\u7486\u7481\u747D\u7485\u7488\u747C\u7479\u7508\u7507\u757E\u7625\u761E\u7619\u761D\u761C\u7623\u761A\u7628\u761B\u769C\u769D\u769E\u769B\u778D\u778F\u7789\u7788\u78CD\u78BB\u78CF\u78CC\u78D1\u78CE\u78D4\u78C8\u78C3\u78C4\u78C9\u799A\u79A1\u79A0\u799C\u79A2\u799B\u6B76\u7A39\u7AB2\u7AB4\u7AB3\u7BB7\u7BCB\u7BBE\u7BAC\u7BCE\u7BAF\u7BB9\u7BCA\u7BB5\u7CC5\u7CC8\u7CCC\u7CCB\u7DF7\u7DDB\u7DEA\u7DE7\u7DD7\u7DE1\u7E03\u7DFA\u7DE6\u7DF6\u7DF1\u7DF0\u7DEE\u7DDF\u7F76\u7FAC\u7FB0\u7FAD\u7FED\u7FEB\u7FEA\u7FEC\u7FE6\u7FE8\u8064\u8067\u81A3\u819F\"],\n[\"e740\",\"\u819E\u8195\u81A2\u8199\u8197\u8216\u824F\u8253\u8252\u8250\u824E\u8251\u8524\u853B\u850F\u8500\u8529\u850E\u8509\u850D\u851F\u850A\u8527\u851C\u84FB\u852B\u84FA\u8508\u850C\u84F4\u852A\u84F2\u8515\u84F7\u84EB\u84F3\u84FC\u8512\u84EA\u84E9\u8516\u84FE\u8528\u851D\u852E\u8502\u84FD\u851E\u84F6\u8531\u8526\u84E7\u84E8\u84F0\u84EF\u84F9\u8518\u8520\u8530\u850B\u8519\u852F\u8662\"],\n[\"e7a1\",\"\u8756\u8763\u8764\u8777\u87E1\u8773\u8758\u8754\u875B\u8752\u8761\u875A\u8751\u875E\u876D\u876A\u8750\u874E\u875F\u875D\u876F\u876C\u877A\u876E\u875C\u8765\u874F\u877B\u8775\u8762\u8767\u8769\u885A\u8905\u890C\u8914\u890B\u8917\u8918\u8919\u8906\u8916\u8911\u890E\u8909\u89A2\u89A4\u89A3\u89ED\u89F0\u89EC\u8ACF\u8AC6\u8AB8\u8AD3\u8AD1\u8AD4\u8AD5\u8ABB\u8AD7\u8ABE\u8AC0\u8AC5\u8AD8\u8AC3\u8ABA\u8ABD\u8AD9\u8C3E\u8C4D\u8C8F\u8CE5\u8CDF\u8CD9\u8CE8\u8CDA\u8CDD\u8CE7\u8DA0\u8D9C\u8DA1\u8D9B\u8E20\u8E23\u8E25\u8E24\u8E2E\u8E15\u8E1B\u8E16\u8E11\u8E19\u8E26\u8E27\"],\n[\"e840\",\"\u8E14\u8E12\u8E18\u8E13\u8E1C\u8E17\u8E1A\u8F2C\u8F24\u8F18\u8F1A\u8F20\u8F23\u8F16\u8F17\u9073\u9070\u906F\u9067\u906B\u912F\u912B\u9129\u912A\u9132\u9126\u912E\u9185\u9186\u918A\u9181\u9182\u9184\u9180\u92D0\u92C3\u92C4\u92C0\u92D9\u92B6\u92CF\u92F1\u92DF\u92D8\u92E9\u92D7\u92DD\u92CC\u92EF\u92C2\u92E8\u92CA\u92C8\u92CE\u92E6\u92CD\u92D5\u92C9\u92E0\u92DE\u92E7\u92D1\u92D3\"],\n[\"e8a1\",\"\u92B5\u92E1\u92C6\u92B4\u957C\u95AC\u95AB\u95AE\u95B0\u96A4\u96A2\u96D3\u9705\u9708\u9702\u975A\u978A\u978E\u9788\u97D0\u97CF\u981E\u981D\u9826\u9829\u9828\u9820\u981B\u9827\u98B2\u9908\u98FA\u9911\u9914\u9916\u9917\u9915\u99DC\u99CD\u99CF\u99D3\u99D4\u99CE\u99C9\u99D6\u99D8\u99CB\u99D7\u99CC\u9AB3\u9AEC\u9AEB\u9AF3\u9AF2\u9AF1\u9B46\u9B43\u9B67\u9B74\u9B71\u9B66\u9B76\u9B75\u9B70\u9B68\u9B64\u9B6C\u9CFC\u9CFA\u9CFD\u9CFF\u9CF7\u9D07\u9D00\u9CF9\u9CFB\u9D08\u9D05\u9D04\u9E83\u9ED3\u9F0F\u9F10\u511C\u5113\u5117\u511A\u5111\u51DE\u5334\u53E1\u5670\u5660\u566E\"],\n[\"e940\",\"\u5673\u5666\u5663\u566D\u5672\u565E\u5677\u571C\u571B\u58C8\u58BD\u58C9\u58BF\u58BA\u58C2\u58BC\u58C6\u5B17\u5B19\u5B1B\u5B21\u5B14\u5B13\u5B10\u5B16\u5B28\u5B1A\u5B20\u5B1E\u5BEF\u5DAC\u5DB1\u5DA9\u5DA7\u5DB5\u5DB0\u5DAE\u5DAA\u5DA8\u5DB2\u5DAD\u5DAF\u5DB4\u5E67\u5E68\u5E66\u5E6F\u5EE9\u5EE7\u5EE6\u5EE8\u5EE5\u5F4B\u5FBC\u619D\u61A8\u6196\u61C5\u61B4\u61C6\u61C1\u61CC\u61BA\"],\n[\"e9a1\",\"\u61BF\u61B8\u618C\u64D7\u64D6\u64D0\u64CF\u64C9\u64BD\u6489\u64C3\u64DB\u64F3\u64D9\u6533\u657F\u657C\u65A2\u66C8\u66BE\u66C0\u66CA\u66CB\u66CF\u66BD\u66BB\u66BA\u66CC\u6723\u6A34\u6A66\u6A49\u6A67\u6A32\u6A68\u6A3E\u6A5D\u6A6D\u6A76\u6A5B\u6A51\u6A28\u6A5A\u6A3B\u6A3F\u6A41\u6A6A\u6A64\u6A50\u6A4F\u6A54\u6A6F\u6A69\u6A60\u6A3C\u6A5E\u6A56\u6A55\u6A4D\u6A4E\u6A46\u6B55\u6B54\u6B56\u6BA7\u6BAA\u6BAB\u6BC8\u6BC7\u6C04\u6C03\u6C06\u6FAD\u6FCB\u6FA3\u6FC7\u6FBC\u6FCE\u6FC8\u6F5E\u6FC4\u6FBD\u6F9E\u6FCA\u6FA8\u7004\u6FA5\u6FAE\u6FBA\u6FAC\u6FAA\u6FCF\u6FBF\u6FB8\"],\n[\"ea40\",\"\u6FA2\u6FC9\u6FAB\u6FCD\u6FAF\u6FB2\u6FB0\u71C5\u71C2\u71BF\u71B8\u71D6\u71C0\u71C1\u71CB\u71D4\u71CA\u71C7\u71CF\u71BD\u71D8\u71BC\u71C6\u71DA\u71DB\u729D\u729E\u7369\u7366\u7367\u736C\u7365\u736B\u736A\u747F\u749A\u74A0\u7494\u7492\u7495\u74A1\u750B\u7580\u762F\u762D\u7631\u763D\u7633\u763C\u7635\u7632\u7630\u76BB\u76E6\u779A\u779D\u77A1\u779C\u779B\u77A2\u77A3\u7795\u7799\"],\n[\"eaa1\",\"\u7797\u78DD\u78E9\u78E5\u78EA\u78DE\u78E3\u78DB\u78E1\u78E2\u78ED\u78DF\u78E0\u79A4\u7A44\u7A48\u7A47\u7AB6\u7AB8\u7AB5\u7AB1\u7AB7\u7BDE\u7BE3\u7BE7\u7BDD\u7BD5\u7BE5\u7BDA\u7BE8\u7BF9\u7BD4\u7BEA\u7BE2\u7BDC\u7BEB\u7BD8\u7BDF\u7CD2\u7CD4\u7CD7\u7CD0\u7CD1\u7E12\u7E21\u7E17\u7E0C\u7E1F\u7E20\u7E13\u7E0E\u7E1C\u7E15\u7E1A\u7E22\u7E0B\u7E0F\u7E16\u7E0D\u7E14\u7E25\u7E24\u7F43\u7F7B\u7F7C\u7F7A\u7FB1\u7FEF\u802A\u8029\u806C\u81B1\u81A6\u81AE\u81B9\u81B5\u81AB\u81B0\u81AC\u81B4\u81B2\u81B7\u81A7\u81F2\u8255\u8256\u8257\u8556\u8545\u856B\u854D\u8553\u8561\u8558\"],\n[\"eb40\",\"\u8540\u8546\u8564\u8541\u8562\u8544\u8551\u8547\u8563\u853E\u855B\u8571\u854E\u856E\u8575\u8555\u8567\u8560\u858C\u8566\u855D\u8554\u8565\u856C\u8663\u8665\u8664\u879B\u878F\u8797\u8793\u8792\u8788\u8781\u8796\u8798\u8779\u8787\u87A3\u8785\u8790\u8791\u879D\u8784\u8794\u879C\u879A\u8789\u891E\u8926\u8930\u892D\u892E\u8927\u8931\u8922\u8929\u8923\u892F\u892C\u891F\u89F1\u8AE0\"],\n[\"eba1\",\"\u8AE2\u8AF2\u8AF4\u8AF5\u8ADD\u8B14\u8AE4\u8ADF\u8AF0\u8AC8\u8ADE\u8AE1\u8AE8\u8AFF\u8AEF\u8AFB\u8C91\u8C92\u8C90\u8CF5\u8CEE\u8CF1\u8CF0\u8CF3\u8D6C\u8D6E\u8DA5\u8DA7\u8E33\u8E3E\u8E38\u8E40\u8E45\u8E36\u8E3C\u8E3D\u8E41\u8E30\u8E3F\u8EBD\u8F36\u8F2E\u8F35\u8F32\u8F39\u8F37\u8F34\u9076\u9079\u907B\u9086\u90FA\u9133\u9135\u9136\u9193\u9190\u9191\u918D\u918F\u9327\u931E\u9308\u931F\u9306\u930F\u937A\u9338\u933C\u931B\u9323\u9312\u9301\u9346\u932D\u930E\u930D\u92CB\u931D\u92FA\u9325\u9313\u92F9\u92F7\u9334\u9302\u9324\u92FF\u9329\u9339\u9335\u932A\u9314\u930C\"],\n[\"ec40\",\"\u930B\u92FE\u9309\u9300\u92FB\u9316\u95BC\u95CD\u95BE\u95B9\u95BA\u95B6\u95BF\u95B5\u95BD\u96A9\u96D4\u970B\u9712\u9710\u9799\u9797\u9794\u97F0\u97F8\u9835\u982F\u9832\u9924\u991F\u9927\u9929\u999E\u99EE\u99EC\u99E5\u99E4\u99F0\u99E3\u99EA\u99E9\u99E7\u9AB9\u9ABF\u9AB4\u9ABB\u9AF6\u9AFA\u9AF9\u9AF7\u9B33\u9B80\u9B85\u9B87\u9B7C\u9B7E\u9B7B\u9B82\u9B93\u9B92\u9B90\u9B7A\u9B95\"],\n[\"eca1\",\"\u9B7D\u9B88\u9D25\u9D17\u9D20\u9D1E\u9D14\u9D29\u9D1D\u9D18\u9D22\u9D10\u9D19\u9D1F\u9E88\u9E86\u9E87\u9EAE\u9EAD\u9ED5\u9ED6\u9EFA\u9F12\u9F3D\u5126\u5125\u5122\u5124\u5120\u5129\u52F4\u5693\u568C\u568D\u5686\u5684\u5683\u567E\u5682\u567F\u5681\u58D6\u58D4\u58CF\u58D2\u5B2D\u5B25\u5B32\u5B23\u5B2C\u5B27\u5B26\u5B2F\u5B2E\u5B7B\u5BF1\u5BF2\u5DB7\u5E6C\u5E6A\u5FBE\u5FBB\u61C3\u61B5\u61BC\u61E7\u61E0\u61E5\u61E4\u61E8\u61DE\u64EF\u64E9\u64E3\u64EB\u64E4\u64E8\u6581\u6580\u65B6\u65DA\u66D2\u6A8D\u6A96\u6A81\u6AA5\u6A89\u6A9F\u6A9B\u6AA1\u6A9E\u6A87\u6A93\u6A8E\"],\n[\"ed40\",\"\u6A95\u6A83\u6AA8\u6AA4\u6A91\u6A7F\u6AA6\u6A9A\u6A85\u6A8C\u6A92\u6B5B\u6BAD\u6C09\u6FCC\u6FA9\u6FF4\u6FD4\u6FE3\u6FDC\u6FED\u6FE7\u6FE6\u6FDE\u6FF2\u6FDD\u6FE2\u6FE8\u71E1\u71F1\u71E8\u71F2\u71E4\u71F0\u71E2\u7373\u736E\u736F\u7497\u74B2\u74AB\u7490\u74AA\u74AD\u74B1\u74A5\u74AF\u7510\u7511\u7512\u750F\u7584\u7643\u7648\u7649\u7647\u76A4\u76E9\u77B5\u77AB\u77B2\u77B7\u77B6\"],\n[\"eda1\",\"\u77B4\u77B1\u77A8\u77F0\u78F3\u78FD\u7902\u78FB\u78FC\u78F2\u7905\u78F9\u78FE\u7904\u79AB\u79A8\u7A5C\u7A5B\u7A56\u7A58\u7A54\u7A5A\u7ABE\u7AC0\u7AC1\u7C05\u7C0F\u7BF2\u7C00\u7BFF\u7BFB\u7C0E\u7BF4\u7C0B\u7BF3\u7C02\u7C09\u7C03\u7C01\u7BF8\u7BFD\u7C06\u7BF0\u7BF1\u7C10\u7C0A\u7CE8\u7E2D\u7E3C\u7E42\u7E33\u9848\u7E38\u7E2A\u7E49\u7E40\u7E47\u7E29\u7E4C\u7E30\u7E3B\u7E36\u7E44\u7E3A\u7F45\u7F7F\u7F7E\u7F7D\u7FF4\u7FF2\u802C\u81BB\u81C4\u81CC\u81CA\u81C5\u81C7\u81BC\u81E9\u825B\u825A\u825C\u8583\u8580\u858F\u85A7\u8595\u85A0\u858B\u85A3\u857B\u85A4\u859A\u859E\"],\n[\"ee40\",\"\u8577\u857C\u8589\u85A1\u857A\u8578\u8557\u858E\u8596\u8586\u858D\u8599\u859D\u8581\u85A2\u8582\u8588\u8585\u8579\u8576\u8598\u8590\u859F\u8668\u87BE\u87AA\u87AD\u87C5\u87B0\u87AC\u87B9\u87B5\u87BC\u87AE\u87C9\u87C3\u87C2\u87CC\u87B7\u87AF\u87C4\u87CA\u87B4\u87B6\u87BF\u87B8\u87BD\u87DE\u87B2\u8935\u8933\u893C\u893E\u8941\u8952\u8937\u8942\u89AD\u89AF\u89AE\u89F2\u89F3\u8B1E\"],\n[\"eea1\",\"\u8B18\u8B16\u8B11\u8B05\u8B0B\u8B22\u8B0F\u8B12\u8B15\u8B07\u8B0D\u8B08\u8B06\u8B1C\u8B13\u8B1A\u8C4F\u8C70\u8C72\u8C71\u8C6F\u8C95\u8C94\u8CF9\u8D6F\u8E4E\u8E4D\u8E53\u8E50\u8E4C\u8E47\u8F43\u8F40\u9085\u907E\u9138\u919A\u91A2\u919B\u9199\u919F\u91A1\u919D\u91A0\u93A1\u9383\u93AF\u9364\u9356\u9347\u937C\u9358\u935C\u9376\u9349\u9350\u9351\u9360\u936D\u938F\u934C\u936A\u9379\u9357\u9355\u9352\u934F\u9371\u9377\u937B\u9361\u935E\u9363\u9367\u9380\u934E\u9359\u95C7\u95C0\u95C9\u95C3\u95C5\u95B7\u96AE\u96B0\u96AC\u9720\u971F\u9718\u971D\u9719\u979A\u97A1\u979C\"],\n[\"ef40\",\"\u979E\u979D\u97D5\u97D4\u97F1\u9841\u9844\u984A\u9849\u9845\u9843\u9925\u992B\u992C\u992A\u9933\u9932\u992F\u992D\u9931\u9930\u9998\u99A3\u99A1\u9A02\u99FA\u99F4\u99F7\u99F9\u99F8\u99F6\u99FB\u99FD\u99FE\u99FC\u9A03\u9ABE\u9AFE\u9AFD\u9B01\u9AFC\u9B48\u9B9A\u9BA8\u9B9E\u9B9B\u9BA6\u9BA1\u9BA5\u9BA4\u9B86\u9BA2\u9BA0\u9BAF\u9D33\u9D41\u9D67\u9D36\u9D2E\u9D2F\u9D31\u9D38\u9D30\"],\n[\"efa1\",\"\u9D45\u9D42\u9D43\u9D3E\u9D37\u9D40\u9D3D\u7FF5\u9D2D\u9E8A\u9E89\u9E8D\u9EB0\u9EC8\u9EDA\u9EFB\u9EFF\u9F24\u9F23\u9F22\u9F54\u9FA0\u5131\u512D\u512E\u5698\u569C\u5697\u569A\u569D\u5699\u5970\u5B3C\u5C69\u5C6A\u5DC0\u5E6D\u5E6E\u61D8\u61DF\u61ED\u61EE\u61F1\u61EA\u61F0\u61EB\u61D6\u61E9\u64FF\u6504\u64FD\u64F8\u6501\u6503\u64FC\u6594\u65DB\u66DA\u66DB\u66D8\u6AC5\u6AB9\u6ABD\u6AE1\u6AC6\u6ABA\u6AB6\u6AB7\u6AC7\u6AB4\u6AAD\u6B5E\u6BC9\u6C0B\u7007\u700C\u700D\u7001\u7005\u7014\u700E\u6FFF\u7000\u6FFB\u7026\u6FFC\u6FF7\u700A\u7201\u71FF\u71F9\u7203\u71FD\u7376\"],\n[\"f040\",\"\u74B8\u74C0\u74B5\u74C1\u74BE\u74B6\u74BB\u74C2\u7514\u7513\u765C\u7664\u7659\u7650\u7653\u7657\u765A\u76A6\u76BD\u76EC\u77C2\u77BA\u78FF\u790C\u7913\u7914\u7909\u7910\u7912\u7911\u79AD\u79AC\u7A5F\u7C1C\u7C29\u7C19\u7C20\u7C1F\u7C2D\u7C1D\u7C26\u7C28\u7C22\u7C25\u7C30\u7E5C\u7E50\u7E56\u7E63\u7E58\u7E62\u7E5F\u7E51\u7E60\u7E57\u7E53\u7FB5\u7FB3\u7FF7\u7FF8\u8075\u81D1\u81D2\"],\n[\"f0a1\",\"\u81D0\u825F\u825E\u85B4\u85C6\u85C0\u85C3\u85C2\u85B3\u85B5\u85BD\u85C7\u85C4\u85BF\u85CB\u85CE\u85C8\u85C5\u85B1\u85B6\u85D2\u8624\u85B8\u85B7\u85BE\u8669\u87E7\u87E6\u87E2\u87DB\u87EB\u87EA\u87E5\u87DF\u87F3\u87E4\u87D4\u87DC\u87D3\u87ED\u87D8\u87E3\u87A4\u87D7\u87D9\u8801\u87F4\u87E8\u87DD\u8953\u894B\u894F\u894C\u8946\u8950\u8951\u8949\u8B2A\u8B27\u8B23\u8B33\u8B30\u8B35\u8B47\u8B2F\u8B3C\u8B3E\u8B31\u8B25\u8B37\u8B26\u8B36\u8B2E\u8B24\u8B3B\u8B3D\u8B3A\u8C42\u8C75\u8C99\u8C98\u8C97\u8CFE\u8D04\u8D02\u8D00\u8E5C\u8E62\u8E60\u8E57\u8E56\u8E5E\u8E65\u8E67\"],\n[\"f140\",\"\u8E5B\u8E5A\u8E61\u8E5D\u8E69\u8E54\u8F46\u8F47\u8F48\u8F4B\u9128\u913A\u913B\u913E\u91A8\u91A5\u91A7\u91AF\u91AA\u93B5\u938C\u9392\u93B7\u939B\u939D\u9389\u93A7\u938E\u93AA\u939E\u93A6\u9395\u9388\u9399\u939F\u938D\u93B1\u9391\u93B2\u93A4\u93A8\u93B4\u93A3\u93A5\u95D2\u95D3\u95D1\u96B3\u96D7\u96DA\u5DC2\u96DF\u96D8\u96DD\u9723\u9722\u9725\u97AC\u97AE\u97A8\u97AB\u97A4\u97AA\"],\n[\"f1a1\",\"\u97A2\u97A5\u97D7\u97D9\u97D6\u97D8\u97FA\u9850\u9851\u9852\u98B8\u9941\u993C\u993A\u9A0F\u9A0B\u9A09\u9A0D\u9A04\u9A11\u9A0A\u9A05\u9A07\u9A06\u9AC0\u9ADC\u9B08\u9B04\u9B05\u9B29\u9B35\u9B4A\u9B4C\u9B4B\u9BC7\u9BC6\u9BC3\u9BBF\u9BC1\u9BB5\u9BB8\u9BD3\u9BB6\u9BC4\u9BB9\u9BBD\u9D5C\u9D53\u9D4F\u9D4A\u9D5B\u9D4B\u9D59\u9D56\u9D4C\u9D57\u9D52\u9D54\u9D5F\u9D58\u9D5A\u9E8E\u9E8C\u9EDF\u9F01\u9F00\u9F16\u9F25\u9F2B\u9F2A\u9F29\u9F28\u9F4C\u9F55\u5134\u5135\u5296\u52F7\u53B4\u56AB\u56AD\u56A6\u56A7\u56AA\u56AC\u58DA\u58DD\u58DB\u5912\u5B3D\u5B3E\u5B3F\u5DC3\u5E70\"],\n[\"f240\",\"\u5FBF\u61FB\u6507\u6510\u650D\u6509\u650C\u650E\u6584\u65DE\u65DD\u66DE\u6AE7\u6AE0\u6ACC\u6AD1\u6AD9\u6ACB\u6ADF\u6ADC\u6AD0\u6AEB\u6ACF\u6ACD\u6ADE\u6B60\u6BB0\u6C0C\u7019\u7027\u7020\u7016\u702B\u7021\u7022\u7023\u7029\u7017\u7024\u701C\u702A\u720C\u720A\u7207\u7202\u7205\u72A5\u72A6\u72A4\u72A3\u72A1\u74CB\u74C5\u74B7\u74C3\u7516\u7660\u77C9\u77CA\u77C4\u77F1\u791D\u791B\"],\n[\"f2a1\",\"\u7921\u791C\u7917\u791E\u79B0\u7A67\u7A68\u7C33\u7C3C\u7C39\u7C2C\u7C3B\u7CEC\u7CEA\u7E76\u7E75\u7E78\u7E70\u7E77\u7E6F\u7E7A\u7E72\u7E74\u7E68\u7F4B\u7F4A\u7F83\u7F86\u7FB7\u7FFD\u7FFE\u8078\u81D7\u81D5\u8264\u8261\u8263\u85EB\u85F1\u85ED\u85D9\u85E1\u85E8\u85DA\u85D7\u85EC\u85F2\u85F8\u85D8\u85DF\u85E3\u85DC\u85D1\u85F0\u85E6\u85EF\u85DE\u85E2\u8800\u87FA\u8803\u87F6\u87F7\u8809\u880C\u880B\u8806\u87FC\u8808\u87FF\u880A\u8802\u8962\u895A\u895B\u8957\u8961\u895C\u8958\u895D\u8959\u8988\u89B7\u89B6\u89F6\u8B50\u8B48\u8B4A\u8B40\u8B53\u8B56\u8B54\u8B4B\u8B55\"],\n[\"f340\",\"\u8B51\u8B42\u8B52\u8B57\u8C43\u8C77\u8C76\u8C9A\u8D06\u8D07\u8D09\u8DAC\u8DAA\u8DAD\u8DAB\u8E6D\u8E78\u8E73\u8E6A\u8E6F\u8E7B\u8EC2\u8F52\u8F51\u8F4F\u8F50\u8F53\u8FB4\u9140\u913F\u91B0\u91AD\u93DE\u93C7\u93CF\u93C2\u93DA\u93D0\u93F9\u93EC\u93CC\u93D9\u93A9\u93E6\u93CA\u93D4\u93EE\u93E3\u93D5\u93C4\u93CE\u93C0\u93D2\u93E7\u957D\u95DA\u95DB\u96E1\u9729\u972B\u972C\u9728\u9726\"],\n[\"f3a1\",\"\u97B3\u97B7\u97B6\u97DD\u97DE\u97DF\u985C\u9859\u985D\u9857\u98BF\u98BD\u98BB\u98BE\u9948\u9947\u9943\u99A6\u99A7\u9A1A\u9A15\u9A25\u9A1D\u9A24\u9A1B\u9A22\u9A20\u9A27\u9A23\u9A1E\u9A1C\u9A14\u9AC2\u9B0B\u9B0A\u9B0E\u9B0C\u9B37\u9BEA\u9BEB\u9BE0\u9BDE\u9BE4\u9BE6\u9BE2\u9BF0\u9BD4\u9BD7\u9BEC\u9BDC\u9BD9\u9BE5\u9BD5\u9BE1\u9BDA\u9D77\u9D81\u9D8A\u9D84\u9D88\u9D71\u9D80\u9D78\u9D86\u9D8B\u9D8C\u9D7D\u9D6B\u9D74\u9D75\u9D70\u9D69\u9D85\u9D73\u9D7B\u9D82\u9D6F\u9D79\u9D7F\u9D87\u9D68\u9E94\u9E91\u9EC0\u9EFC\u9F2D\u9F40\u9F41\u9F4D\u9F56\u9F57\u9F58\u5337\u56B2\"],\n[\"f440\",\"\u56B5\u56B3\u58E3\u5B45\u5DC6\u5DC7\u5EEE\u5EEF\u5FC0\u5FC1\u61F9\u6517\u6516\u6515\u6513\u65DF\u66E8\u66E3\u66E4\u6AF3\u6AF0\u6AEA\u6AE8\u6AF9\u6AF1\u6AEE\u6AEF\u703C\u7035\u702F\u7037\u7034\u7031\u7042\u7038\u703F\u703A\u7039\u7040\u703B\u7033\u7041\u7213\u7214\u72A8\u737D\u737C\u74BA\u76AB\u76AA\u76BE\u76ED\u77CC\u77CE\u77CF\u77CD\u77F2\u7925\u7923\u7927\u7928\u7924\u7929\"],\n[\"f4a1\",\"\u79B2\u7A6E\u7A6C\u7A6D\u7AF7\u7C49\u7C48\u7C4A\u7C47\u7C45\u7CEE\u7E7B\u7E7E\u7E81\u7E80\u7FBA\u7FFF\u8079\u81DB\u81D9\u820B\u8268\u8269\u8622\u85FF\u8601\u85FE\u861B\u8600\u85F6\u8604\u8609\u8605\u860C\u85FD\u8819\u8810\u8811\u8817\u8813\u8816\u8963\u8966\u89B9\u89F7\u8B60\u8B6A\u8B5D\u8B68\u8B63\u8B65\u8B67\u8B6D\u8DAE\u8E86\u8E88\u8E84\u8F59\u8F56\u8F57\u8F55\u8F58\u8F5A\u908D\u9143\u9141\u91B7\u91B5\u91B2\u91B3\u940B\u9413\u93FB\u9420\u940F\u9414\u93FE\u9415\u9410\u9428\u9419\u940D\u93F5\u9400\u93F7\u9407\u940E\u9416\u9412\u93FA\u9409\u93F8\u940A\u93FF\"],\n[\"f540\",\"\u93FC\u940C\u93F6\u9411\u9406\u95DE\u95E0\u95DF\u972E\u972F\u97B9\u97BB\u97FD\u97FE\u9860\u9862\u9863\u985F\u98C1\u98C2\u9950\u994E\u9959\u994C\u994B\u9953\u9A32\u9A34\u9A31\u9A2C\u9A2A\u9A36\u9A29\u9A2E\u9A38\u9A2D\u9AC7\u9ACA\u9AC6\u9B10\u9B12\u9B11\u9C0B\u9C08\u9BF7\u9C05\u9C12\u9BF8\u9C40\u9C07\u9C0E\u9C06\u9C17\u9C14\u9C09\u9D9F\u9D99\u9DA4\u9D9D\u9D92\u9D98\u9D90\u9D9B\"],\n[\"f5a1\",\"\u9DA0\u9D94\u9D9C\u9DAA\u9D97\u9DA1\u9D9A\u9DA2\u9DA8\u9D9E\u9DA3\u9DBF\u9DA9\u9D96\u9DA6\u9DA7\u9E99\u9E9B\u9E9A\u9EE5\u9EE4\u9EE7\u9EE6\u9F30\u9F2E\u9F5B\u9F60\u9F5E\u9F5D\u9F59\u9F91\u513A\u5139\u5298\u5297\u56C3\u56BD\u56BE\u5B48\u5B47\u5DCB\u5DCF\u5EF1\u61FD\u651B\u6B02\u6AFC\u6B03\u6AF8\u6B00\u7043\u7044\u704A\u7048\u7049\u7045\u7046\u721D\u721A\u7219\u737E\u7517\u766A\u77D0\u792D\u7931\u792F\u7C54\u7C53\u7CF2\u7E8A\u7E87\u7E88\u7E8B\u7E86\u7E8D\u7F4D\u7FBB\u8030\u81DD\u8618\u862A\u8626\u861F\u8623\u861C\u8619\u8627\u862E\u8621\u8620\u8629\u861E\u8625\"],\n[\"f640\",\"\u8829\u881D\u881B\u8820\u8824\u881C\u882B\u884A\u896D\u8969\u896E\u896B\u89FA\u8B79\u8B78\u8B45\u8B7A\u8B7B\u8D10\u8D14\u8DAF\u8E8E\u8E8C\u8F5E\u8F5B\u8F5D\u9146\u9144\u9145\u91B9\u943F\u943B\u9436\u9429\u943D\u943C\u9430\u9439\u942A\u9437\u942C\u9440\u9431\u95E5\u95E4\u95E3\u9735\u973A\u97BF\u97E1\u9864\u98C9\u98C6\u98C0\u9958\u9956\u9A39\u9A3D\u9A46\u9A44\u9A42\u9A41\u9A3A\"],\n[\"f6a1\",\"\u9A3F\u9ACD\u9B15\u9B17\u9B18\u9B16\u9B3A\u9B52\u9C2B\u9C1D\u9C1C\u9C2C\u9C23\u9C28\u9C29\u9C24\u9C21\u9DB7\u9DB6\u9DBC\u9DC1\u9DC7\u9DCA\u9DCF\u9DBE\u9DC5\u9DC3\u9DBB\u9DB5\u9DCE\u9DB9\u9DBA\u9DAC\u9DC8\u9DB1\u9DAD\u9DCC\u9DB3\u9DCD\u9DB2\u9E7A\u9E9C\u9EEB\u9EEE\u9EED\u9F1B\u9F18\u9F1A\u9F31\u9F4E\u9F65\u9F64\u9F92\u4EB9\u56C6\u56C5\u56CB\u5971\u5B4B\u5B4C\u5DD5\u5DD1\u5EF2\u6521\u6520\u6526\u6522\u6B0B\u6B08\u6B09\u6C0D\u7055\u7056\u7057\u7052\u721E\u721F\u72A9\u737F\u74D8\u74D5\u74D9\u74D7\u766D\u76AD\u7935\u79B4\u7A70\u7A71\u7C57\u7C5C\u7C59\u7C5B\u7C5A\"],\n[\"f740\",\"\u7CF4\u7CF1\u7E91\u7F4F\u7F87\u81DE\u826B\u8634\u8635\u8633\u862C\u8632\u8636\u882C\u8828\u8826\u882A\u8825\u8971\u89BF\u89BE\u89FB\u8B7E\u8B84\u8B82\u8B86\u8B85\u8B7F\u8D15\u8E95\u8E94\u8E9A\u8E92\u8E90\u8E96\u8E97\u8F60\u8F62\u9147\u944C\u9450\u944A\u944B\u944F\u9447\u9445\u9448\u9449\u9446\u973F\u97E3\u986A\u9869\u98CB\u9954\u995B\u9A4E\u9A53\u9A54\u9A4C\u9A4F\u9A48\u9A4A\"],\n[\"f7a1\",\"\u9A49\u9A52\u9A50\u9AD0\u9B19\u9B2B\u9B3B\u9B56\u9B55\u9C46\u9C48\u9C3F\u9C44\u9C39\u9C33\u9C41\u9C3C\u9C37\u9C34\u9C32\u9C3D\u9C36\u9DDB\u9DD2\u9DDE\u9DDA\u9DCB\u9DD0\u9DDC\u9DD1\u9DDF\u9DE9\u9DD9\u9DD8\u9DD6\u9DF5\u9DD5\u9DDD\u9EB6\u9EF0\u9F35\u9F33\u9F32\u9F42\u9F6B\u9F95\u9FA2\u513D\u5299\u58E8\u58E7\u5972\u5B4D\u5DD8\u882F\u5F4F\u6201\u6203\u6204\u6529\u6525\u6596\u66EB\u6B11\u6B12\u6B0F\u6BCA\u705B\u705A\u7222\u7382\u7381\u7383\u7670\u77D4\u7C67\u7C66\u7E95\u826C\u863A\u8640\u8639\u863C\u8631\u863B\u863E\u8830\u8832\u882E\u8833\u8976\u8974\u8973\u89FE\"],\n[\"f840\",\"\u8B8C\u8B8E\u8B8B\u8B88\u8C45\u8D19\u8E98\u8F64\u8F63\u91BC\u9462\u9455\u945D\u9457\u945E\u97C4\u97C5\u9800\u9A56\u9A59\u9B1E\u9B1F\u9B20\u9C52\u9C58\u9C50\u9C4A\u9C4D\u9C4B\u9C55\u9C59\u9C4C\u9C4E\u9DFB\u9DF7\u9DEF\u9DE3\u9DEB\u9DF8\u9DE4\u9DF6\u9DE1\u9DEE\u9DE6\u9DF2\u9DF0\u9DE2\u9DEC\u9DF4\u9DF3\u9DE8\u9DED\u9EC2\u9ED0\u9EF2\u9EF3\u9F06\u9F1C\u9F38\u9F37\u9F36\u9F43\u9F4F\"],\n[\"f8a1\",\"\u9F71\u9F70\u9F6E\u9F6F\u56D3\u56CD\u5B4E\u5C6D\u652D\u66ED\u66EE\u6B13\u705F\u7061\u705D\u7060\u7223\u74DB\u74E5\u77D5\u7938\u79B7\u79B6\u7C6A\u7E97\u7F89\u826D\u8643\u8838\u8837\u8835\u884B\u8B94\u8B95\u8E9E\u8E9F\u8EA0\u8E9D\u91BE\u91BD\u91C2\u946B\u9468\u9469\u96E5\u9746\u9743\u9747\u97C7\u97E5\u9A5E\u9AD5\u9B59\u9C63\u9C67\u9C66\u9C62\u9C5E\u9C60\u9E02\u9DFE\u9E07\u9E03\u9E06\u9E05\u9E00\u9E01\u9E09\u9DFF\u9DFD\u9E04\u9EA0\u9F1E\u9F46\u9F74\u9F75\u9F76\u56D4\u652E\u65B8\u6B18\u6B19\u6B17\u6B1A\u7062\u7226\u72AA\u77D8\u77D9\u7939\u7C69\u7C6B\u7CF6\u7E9A\"],\n[\"f940\",\"\u7E98\u7E9B\u7E99\u81E0\u81E1\u8646\u8647\u8648\u8979\u897A\u897C\u897B\u89FF\u8B98\u8B99\u8EA5\u8EA4\u8EA3\u946E\u946D\u946F\u9471\u9473\u9749\u9872\u995F\u9C68\u9C6E\u9C6D\u9E0B\u9E0D\u9E10\u9E0F\u9E12\u9E11\u9EA1\u9EF5\u9F09\u9F47\u9F78\u9F7B\u9F7A\u9F79\u571E\u7066\u7C6F\u883C\u8DB2\u8EA6\u91C3\u9474\u9478\u9476\u9475\u9A60\u9C74\u9C73\u9C71\u9C75\u9E14\u9E13\u9EF6\u9F0A\"],\n[\"f9a1\",\"\u9FA4\u7068\u7065\u7CF7\u866A\u883E\u883D\u883F\u8B9E\u8C9C\u8EA9\u8EC9\u974B\u9873\u9874\u98CC\u9961\u99AB\u9A64\u9A66\u9A67\u9B24\u9E15\u9E17\u9F48\u6207\u6B1E\u7227\u864C\u8EA8\u9482\u9480\u9481\u9A69\u9A68\u9B2E\u9E19\u7229\u864B\u8B9F\u9483\u9C79\u9EB7\u7675\u9A6B\u9C7A\u9E1D\u7069\u706A\u9EA4\u9F7E\u9F49\u9F98\u7881\u92B9\u88CF\u58BB\u6052\u7CA7\u5AFA\u2554\u2566\u2557\u2560\u256C\u2563\u255A\u2569\u255D\u2552\u2564\u2555\u255E\u256A\u2561\u2558\u2567\u255B\u2553\u2565\u2556\u255F\u256B\u2562\u2559\u2568\u255C\u2551\u2550\u256D\u256E\u2570\u256F\u2593\"]\n]\n", "[\n[\"8740\",\"\u43F0\u4C32\u4603\u45A6\u4578\uD85C\uDE67\u4D77\u45B3\uD85F\uDCB1\u4CE2\uD85F\uDCC5\u3B95\u4736\u4744\u4C47\u4C40\uD850\uDEBF\uD84D\uDE17\uD85C\uDF52\uD85B\uDE8B\uD85C\uDCD2\u4C57\uD868\uDF51\u474F\u45DA\u4C85\uD85F\uDC6C\u4D07\u4AA4\u46A1\uD85A\uDF23\u7225\uD856\uDE54\uD846\uDE63\uD84F\uDE06\uD84F\uDF61\u664D\u56FB\"],\n[\"8767\",\"\u7D95\u591D\uD862\uDFB9\u3DF4\u9734\uD85E\uDFEF\u5BDB\uD847\uDD5E\u5AA4\u3625\uD867\uDEB0\u5AD1\u5BB7\u5CFC\u676E\u8593\uD866\uDD45\u7461\u749D\u3875\uD847\uDD53\uD84D\uDE9E\uD858\uDC21\u3EEC\"],\n[\"87a1\",\"\uD856\uDCDE\u3AF5\u7AFC\u9F97\uD850\uDD61\uD862\uDD0D\uD84C\uDDEA\uD842\uDE8A\uD84C\uDE5E\u430A\u8484\u9F96\u942F\u4930\u8613\u5896\u974A\u9218\u79D0\u7A32\u6660\u6A29\u889D\u744C\u7BC5\u6782\u7A2C\u524F\u9046\u34E6\u73C4\uD857\uDDB9\u74C6\u9FC7\u57B3\u492F\u544C\u4131\uD84D\uDE8E\u5818\u7A72\uD85E\uDF65\u8B8F\u46AE\uD85B\uDE88\u4181\uD857\uDD99\u7BAE\uD849\uDCBC\u9FC8\uD849\uDCC1\uD849\uDCC9\uD849\uDCCC\u9FC9\u8504\uD84D\uDDBB\u40B4\u9FCA\u44E1\uD86B\uDDFF\u62C1\u706E\u9FCB\"],\n[\"8840\",\"\u31C0\",4,\"\uD840\uDD0C\u31C5\uD840\uDCD1\uD840\uDCCD\u31C6\u31C7\uD840\uDCCB\uD847\uDFE8\u31C8\uD840\uDCCA\u31C9\u31CA\u31CB\u31CC\uD840\uDD0E\u31CD\u31CE\u0100\u00C1\u01CD\u00C0\u0112\u00C9\u011A\u00C8\u014C\u00D3\u01D1\u00D2\u0FFF\u00CA\u0304\u1EBE\u0FFF\u00CA\u030C\u1EC0\u00CA\u0101\u00E1\u01CE\u00E0\u0251\u0113\u00E9\u011B\u00E8\u012B\u00ED\u01D0\u00EC\u014D\u00F3\u01D2\u00F2\u016B\u00FA\u01D4\u00F9\u01D6\u01D8\u01DA\"],\n[\"88a1\",\"\u01DC\u00FC\u0FFF\u00EA\u0304\u1EBF\u0FFF\u00EA\u030C\u1EC1\u00EA\u0261\u23DA\u23DB\"],\n[\"8940\",\"\uD868\uDFA9\uD844\uDD45\"],\n[\"8943\",\"\u650A\"],\n[\"8946\",\"\u4E3D\u6EDD\u9D4E\u91DF\"],\n[\"894c\",\"\uD85D\uDF35\u6491\u4F1A\u4F28\u4FA8\u5156\u5174\u519C\u51E4\u52A1\u52A8\u533B\u534E\u53D1\u53D8\u56E2\u58F0\u5904\u5907\u5932\u5934\u5B66\u5B9E\u5B9F\u5C9A\u5E86\u603B\u6589\u67FE\u6804\u6865\u6D4E\u70BC\u7535\u7EA4\u7EAC\u7EBA\u7EC7\u7ECF\u7EDF\u7F06\u7F37\u827A\u82CF\u836F\u89C6\u8BBE\u8BE2\u8F66\u8F67\u8F6E\"],\n[\"89a1\",\"\u7411\u7CFC\u7DCD\u6946\u7AC9\u5227\"],\n[\"89ab\",\"\u918C\u78B8\u915E\u80BC\"],\n[\"89b0\",\"\u8D0B\u80F6\uD842\uDDE7\"],\n[\"89b5\",\"\u809F\u9EC7\u4CCD\u9DC9\u9E0C\u4C3E\uD867\uDDF6\uD85C\uDC0E\u9E0A\uD868\uDD33\u35C1\"],\n[\"89c1\",\"\u6E9A\u823E\u7519\"],\n[\"89c5\",\"\u4911\u9A6C\u9A8F\u9F99\u7987\uD861\uDC6C\uD847\uDDCA\uD841\uDDD0\uD84A\uDEE6\u4E24\u4E81\u4E80\u4E87\u4EBF\u4EEB\u4F37\u344C\u4FBD\u3E48\u5003\u5088\u347D\u3493\u34A5\u5186\u5905\u51DB\u51FC\u5205\u4E89\u5279\u5290\u5327\u35C7\u53A9\u3551\u53B0\u3553\u53C2\u5423\u356D\u3572\u3681\u5493\u54A3\u54B4\u54B9\u54D0\u54EF\u5518\u5523\u5528\u3598\u553F\u35A5\u35BF\u55D7\u35C5\"],\n[\"8a40\",\"\uD85F\uDD84\u5525\"],\n[\"8a43\",\"\uD843\uDC42\uD843\uDD15\uD854\uDD2B\u5590\uD84B\uDCC6\u39EC\uD840\uDF41\u8E46\uD853\uDDB8\uD865\uDCE5\u4053\uD860\uDCBE\u777A\uD84B\uDC38\u3A34\u47D5\uD860\uDD5D\uD85A\uDDF2\uD853\uDDEA\u64DD\uD843\uDD7C\uD843\uDFB4\uD843\uDCD5\uD844\uDCF4\u648D\u8E7E\uD843\uDE96\uD843\uDC0B\uD843\uDF64\uD84B\uDCA9\uD860\uDE56\uD851\uDCD3\"],\n[\"8a64\",\"\uD843\uDD46\uD866\uDE4D\uD860\uDCE9\u47F4\uD853\uDEA7\uD84B\uDCC2\u9AB2\u3A67\uD865\uDDF4\u3FED\u3506\uD854\uDEC7\uD865\uDFD4\uD85E\uDCC8\uD84B\uDD44\u9D6E\u9815\"],\n[\"8a76\",\"\u43D9\uD858\uDCA5\u64B4\u54E3\uD84B\uDD4C\uD84A\uDFCA\uD844\uDC77\u39FB\uD844\uDC6F\"],\n[\"8aa1\",\"\uD859\uDEDA\uD859\uDF16\uD85E\uDDA0\u64EA\uD854\uDC52\uD843\uDC43\u8E68\uD848\uDDA1\uD862\uDF4C\uD841\uDF31\"],\n[\"8aac\",\"\u480B\uD840\uDDA9\u3FFA\u5873\uD84B\uDD8D\"],\n[\"8ab2\",\"\uD851\uDDC8\uD841\uDCFC\uD858\uDC97\uD843\uDF4C\uD843\uDD96\u5579\u40BB\u43BA\"],\n[\"8abb\",\"\u4AB4\uD84A\uDE66\uD844\uDC9D\u81AA\u98F5\uD843\uDD9C\u6379\u39FE\uD849\uDF75\u8DC0\u56A1\u647C\u3E43\"],\n[\"8ac9\",\"\uD869\uDE01\uD843\uDE09\uD84A\uDECF\uD84B\uDCC9\"],\n[\"8ace\",\"\uD844\uDCC8\uD84E\uDDC2\u3992\u3A06\uD860\uDE9B\u3578\uD857\uDE49\uD848\uDCC7\u5652\uD843\uDF31\uD84B\uDCB2\uD865\uDF20\u34BC\u6C3D\uD853\uDE3B\"],\n[\"8adf\",\"\uD85D\uDD74\uD84B\uDE8B\uD848\uDE08\uD869\uDE5B\uD863\uDCCD\uD843\uDE7A\uD843\uDC34\uD85A\uDC1C\u7F93\uD844\uDCCF\uD84A\uDC03\uD84A\uDD39\u35FB\uD854\uDDE3\uD843\uDE8C\uD843\uDF8D\uD843\uDEAA\u3F93\uD843\uDF30\uD843\uDD47\uD844\uDD4F\uD843\uDE4C\"],\n[\"8af6\",\"\uD843\uDEAB\uD842\uDFA9\uD843\uDD48\uD844\uDCC0\uD844\uDD3D\u3FF9\uD849\uDE96\u6432\uD843\uDFAD\"],\n[\"8b40\",\"\uD84C\uDFF4\uD85D\uDE39\uD84A\uDFCE\uD843\uDD7E\uD843\uDD7F\uD84B\uDC51\uD84B\uDC55\u3A18\uD843\uDE98\uD844\uDCC7\uD843\uDF2E\uD869\uDE32\uD85A\uDF50\uD863\uDCD2\uD863\uDD99\uD863\uDCCA\u95AA\u54CC\u82C4\u55B9\"],\n[\"8b55\",\"\uD867\uDEC3\u9C26\u9AB6\uD85D\uDF5E\uD84B\uDDEE\u7140\u816D\u80EC\u5C1C\uD859\uDD72\u8134\u3797\u535F\uD860\uDCBD\u91B6\uD843\uDEFA\uD843\uDE0F\uD843\uDE77\uD843\uDEFB\u35DD\uD853\uDDEB\u3609\uD843\uDCD6\u56AF\uD849\uDFB5\uD844\uDCC9\uD843\uDE10\uD843\uDE78\uD844\uDC78\uD844\uDD48\uD860\uDE07\uD845\uDC55\uD843\uDE79\uD853\uDE50\uD84B\uDDA4\u5A54\uD844\uDC1D\uD844\uDC1E\uD844\uDCF5\uD844\uDCF6\u579C\uD843\uDE11\"],\n[\"8ba1\",\"\uD85D\uDE94\uD860\uDECD\uD843\uDFB5\uD843\uDE7B\uD854\uDD7E\u3703\uD843\uDFB6\uD844\uDD80\uD854\uDED8\uD868\uDEBD\uD852\uDDDA\uD846\uDC3A\uD850\uDD77\uD860\uDE7C\u5899\u5268\u361A\uD855\uDF3D\u7BB2\u5B68\u4800\u4B2C\u9F27\u49E7\u9C1F\u9B8D\uD856\uDF74\uD84C\uDD3D\u55FB\u35F2\u5689\u4E28\u5902\uD846\uDFC1\uD87E\uDC78\u9751\uD840\uDC86\u4E5B\u4EBB\u353E\u5C23\u5F51\u5FC4\u38FA\u624C\u6535\u6B7A\u6C35\u6C3A\u706C\u722B\u4E2C\u72AD\uD852\uDCE9\u7F52\u793B\u7CF9\u7F53\uD858\uDE6A\u34C1\"],\n[\"8bde\",\"\uD858\uDF4B\u8002\u8080\uD859\uDE12\uD85A\uDD51\u535D\u8864\u89C1\uD85E\uDCB2\u8BA0\u8D1D\u9485\u9578\u957F\u95E8\uD863\uDE0F\u97E6\u9875\u98CE\u98DE\u9963\uD866\uDC10\u9C7C\u9E1F\u9EC4\u6B6F\uF907\u4E37\uD840\uDC87\u961D\u6237\u94A2\"],\n[\"8c40\",\"\u503B\u6DFE\uD867\uDC73\u9FA6\u3DC9\u888F\uD850\uDD4E\u7077\u5CF5\u4B20\uD854\uDDCD\u3559\uD857\uDD30\u6122\uD862\uDE32\u8FA7\u91F6\u7191\u6719\u73BA\uD84C\uDE81\uD868\uDD07\u3C8B\uD846\uDD80\u4B10\u78E4\u7402\u51AE\uD861\uDF0F\u4009\u6A63\uD868\uDEBA\u4223\u860F\uD842\uDE6F\u7A2A\uD866\uDD47\uD862\uDEEA\u9755\u704D\u5324\uD848\uDC7E\u93F4\u76D9\uD862\uDDE3\u9FA7\u77DD\u4EA3\u4FF0\u50BC\u4E2F\u4F17\u9FA8\u5434\u7D8B\u5892\u58D0\uD847\uDDB6\u5E92\u5E99\u5FC2\uD849\uDF12\u658B\"],\n[\"8ca1\",\"\uD84C\uDFF9\u6919\u6A43\uD84F\uDC63\u6CFF\"],\n[\"8ca7\",\"\u7200\uD851\uDD05\u738C\u3EDB\uD852\uDE13\u5B15\u74B9\u8B83\uD857\uDCA4\uD855\uDE95\u7A93\u7BEC\u7CC3\u7E6C\u82F8\u8597\u9FA9\u8890\u9FAA\u8EB9\u9FAB\u8FCF\u855F\u99E0\u9221\u9FAC\uD863\uDDB9\uD845\uDC3F\u4071\u42A2\u5A1A\"],\n[\"8cc9\",\"\u9868\u676B\u4276\u573D\"],\n[\"8cce\",\"\u85D6\uD852\uDD7B\u82BF\uD85C\uDD0D\u4C81\uD85B\uDD74\u5D7B\uD85A\uDF15\uD85B\uDFBE\u9FAD\u9FAE\u5B96\u9FAF\u66E7\u7E5B\u6E57\u79CA\u3D88\u44C3\uD84C\uDE56\uD849\uDF96\u439A\u4536\"],\n[\"8ce6\",\"\u5CD5\uD84E\uDF1A\u8AF9\u5C78\u3D12\uD84D\uDD51\u5D78\u9FB2\u7157\u4558\uD850\uDCEC\uD847\uDE23\u4C77\u3978\u344A\uD840\uDDA4\uD85B\uDC41\u8ACC\u4FB4\uD840\uDE39\u59BF\u816C\u9856\uD866\uDCFA\u5F3B\"],\n[\"8d40\",\"\uD842\uDF9F\"],\n[\"8d42\",\"\uD848\uDDC1\uD862\uDD6D\u4102\u46BB\uD864\uDC79\u3F07\u9FB3\uD868\uDDB5\u40F8\u37D6\u46F7\uD85B\uDC46\u417C\uD861\uDEB2\uD85C\uDFFF\u456D\u38D4\uD855\uDC9A\u4561\u451B\u4D89\u4C7B\u4D76\u45EA\u3FC8\uD852\uDF0F\u3661\u44DE\u44BD\u41ED\u5D3E\u5D48\u5D56\u3DFC\u380F\u5DA4\u5DB9\u3820\u3838\u5E42\u5EBD\u5F25\u5F83\u3908\u3914\u393F\u394D\u60D7\u613D\u5CE5\u3989\u61B7\u61B9\u61CF\u39B8\u622C\u6290\u62E5\u6318\u39F8\u56B1\"],\n[\"8da1\",\"\u3A03\u63E2\u63FB\u6407\u645A\u3A4B\u64C0\u5D15\u5621\u9F9F\u3A97\u6586\u3ABD\u65FF\u6653\u3AF2\u6692\u3B22\u6716\u3B42\u67A4\u6800\u3B58\u684A\u6884\u3B72\u3B71\u3B7B\u6909\u6943\u725C\u6964\u699F\u6985\u3BBC\u69D6\u3BDD\u6A65\u6A74\u6A71\u6A82\u3BEC\u6A99\u3BF2\u6AAB\u6AB5\u6AD4\u6AF6\u6B81\u6BC1\u6BEA\u6C75\u6CAA\u3CCB\u6D02\u6D06\u6D26\u6D81\u3CEF\u6DA4\u6DB1\u6E15\u6E18\u6E29\u6E86\uD862\uDDC0\u6EBB\u6EE2\u6EDA\u9F7F\u6EE8\u6EE9\u6F24\u6F34\u3D46\uD84F\uDF41\u6F81\u6FBE\u3D6A\u3D75\u71B7\u5C99\u3D8A\u702C\u3D91\u7050\u7054\u706F\u707F\u7089\uD840\uDF25\u43C1\u35F1\uD843\uDED8\"],\n[\"8e40\",\"\uD84F\uDED7\u57BE\uD85B\uDED3\u713E\uD855\uDFE0\u364E\u69A2\uD862\uDFE9\u5B74\u7A49\uD856\uDCE1\uD865\uDCD9\u7A65\u7A7D\uD856\uDDAC\u7ABB\u7AB0\u7AC2\u7AC3\u71D1\uD859\uDC8D\u41CA\u7ADA\u7ADD\u7AEA\u41EF\u54B2\uD857\uDC01\u7B0B\u7B55\u7B29\uD854\uDF0E\uD857\uDCFE\u7BA2\u7B6F\u839C\uD856\uDFB4\uD85B\uDC7F\u7BD0\u8421\u7B92\u7BB8\uD857\uDD20\u3DAD\uD857\uDC65\u8492\u7BFA\u7C06\u7C35\uD857\uDCC1\u7C44\u7C83\uD852\uDC82\u7CA6\u667D\uD851\uDD78\u7CC9\u7CC7\u7CE6\u7C74\u7CF3\u7CF5\u7CCE\"],\n[\"8ea1\",\"\u7E67\u451D\uD85B\uDE44\u7D5D\uD85B\uDED6\u748D\u7D89\u7DAB\u7135\u7DB3\u7DD2\uD850\uDC57\uD858\uDC29\u7DE4\u3D13\u7DF5\uD845\uDFF9\u7DE5\uD860\uDF6D\u7E1D\uD858\uDD21\uD858\uDD5A\u7E6E\u7E92\u432B\u946C\u7E27\u7F40\u7F41\u7F47\u7936\uD858\uDED0\u99E1\u7F97\uD858\uDF51\u7FA3\uD845\uDE61\uD840\uDC68\u455C\uD84D\uDF66\u4503\uD860\uDF3A\u7FFA\uD859\uDC89\u8005\u8008\u801D\u8028\u802F\uD868\uDC87\uD85B\uDCC3\u803B\u803C\u8061\uD849\uDF14\u4989\uD859\uDE26\uD84F\uDDE3\uD859\uDEE8\u6725\u80A7\uD862\uDE48\u8107\u811A\u58B0\uD849\uDEF6\u6C7F\uD859\uDC98\uD853\uDFB8\u64E7\uD845\uDC8A\u8218\uD846\uDC5E\u6A53\uD852\uDE65\uD852\uDE95\u447A\u8229\uD842\uDF0D\uD85A\uDE52\uD84F\uDD7E\u4FF9\uD845\uDCFD\u84E2\u8362\uD85A\uDF0A\uD852\uDDA7\uD84D\uDD30\uD845\uDF73\uD84F\uDDF8\u82AA\u691B\uD87E\uDD94\u41DB\"],\n[\"8f40\",\"\u854B\u82D0\u831A\uD843\uDE16\uD845\uDFB4\u36C1\uD84C\uDD7D\uD84D\uDD5A\u827B\u82E2\u8318\uD84F\uDE8B\uD85B\uDDA3\uD85A\uDF05\uD85A\uDF97\uD84D\uDDCE\u3DBF\u831D\u55EC\u8385\u450B\uD85B\uDDA5\u83AC\u83C1\u83D3\u347E\uD85B\uDED4\u6A57\u855A\u3496\uD85B\uDE42\uD84B\uDEEF\u8458\uD856\uDFE4\u8471\u3DD3\u44E4\u6AA7\u844A\uD84F\uDCB5\u7958\u84A8\uD85A\uDF96\uD85B\uDE77\uD85B\uDE43\u84DE\u840F\u8391\u44A0\u8493\u84E4\uD857\uDC91\u4240\uD857\uDCC0\u4543\u8534\u5AF2\uD85B\uDE99\u4527\u8573\u4516\u67BF\u8616\"],\n[\"8fa1\",\"\uD861\uDE25\uD861\uDE3B\u85C1\uD85C\uDC88\u8602\uD845\uDD82\uD85C\uDCCD\uD87E\uDDB2\u456A\u8628\u3648\uD846\uDCA2\u53F7\uD85C\uDF9A\u867E\u8771\uD868\uDCF8\u87EE\uD84B\uDC27\u87B1\u87DA\u880F\u5661\u866C\u6856\u460F\u8845\u8846\uD85D\uDDE0\uD84F\uDDB9\uD85D\uDDE4\u885E\u889C\u465B\u88B4\u88B5\u63C1\u88C5\u7777\uD85D\uDF0F\u8987\u898A\u89A6\u89A9\u89A7\u89BC\uD862\uDE25\u89E7\uD85E\uDD24\uD85E\uDEBD\u8A9C\u7793\u91FE\u8A90\uD85E\uDE59\u7AE9\uD85E\uDF3A\uD84F\uDF8F\u4713\uD85E\uDF38\u717C\u8B0C\u8B1F\uD855\uDC30\uD855\uDD65\u8B3F\u8B4C\u8B4D\u8AA9\uD852\uDE7A\u8B90\u8B9B\u8AAF\uD845\uDEDF\u4615\u884F\u8C9B\uD85F\uDD54\uD85F\uDD8F\uD87E\uDDD4\u3725\uD85F\uDD53\u8CD6\uD85F\uDD98\uD85F\uDDBD\u8D12\u8D03\uD846\uDD10\u8CDB\u705C\u8D11\uD853\uDCC9\u3ED0\u8D77\"],\n[\"9040\",\"\u8DA9\uD860\uDC02\uD844\uDC14\uD852\uDD8A\u3B7C\uD860\uDDBC\uD85C\uDD0C\u7AE7\u8EAD\u8EB6\u8EC3\u92D4\u8F19\u8F2D\uD860\uDF65\uD861\uDC12\u8FA5\u9303\uD868\uDE9F\uD842\uDE50\u8FB3\u492A\uD862\uDDDE\uD861\uDD3D\uD84F\uDDBB\u5EF8\uD84C\uDE62\u8FF9\uD868\uDC14\uD861\uDEBC\uD861\uDD01\uD848\uDF25\u3980\uD85B\uDED7\u9037\uD861\uDD3C\uD85E\uDEBE\u9061\uD861\uDD6C\uD861\uDE0B\u90A8\uD861\uDF13\u90C4\uD861\uDEE6\u90AE\u90FD\u9167\u3AF0\u91A9\u91C4\u7CAC\uD862\uDD33\uD847\uDE89\u920E\u6C9F\u9241\u9262\uD855\uDDB9\u92B9\uD862\uDEC6\uD84F\uDC9B\uD862\uDF0C\uD855\uDDDB\"],\n[\"90a1\",\"\uD843\uDD31\u932C\u936B\uD862\uDEE1\uD862\uDFEB\u708F\u5AC3\uD862\uDEE2\uD862\uDEE5\u4965\u9244\uD862\uDFEC\uD863\uDC39\uD862\uDFFF\u9373\u945B\u8EBC\u9585\u95A6\u9426\u95A0\u6FF6\u42B9\uD849\uDE7A\uD861\uDED8\uD844\uDE7C\uD84F\uDE2E\u49DF\u6C1C\u967B\u9696\u416C\u96A3\uD85B\uDED5\u61DA\u96B6\u78F5\uD862\uDEE0\u96BD\u53CC\u49A1\uD85B\uDCB8\uD840\uDE74\uD859\uDC10\uD864\uDCAF\uD864\uDCE5\uD852\uDED1\uD846\uDD15\uD84C\uDF0A\u9731\u8642\u9736\u4A0F\u453D\u4585\uD852\uDEE9\u7075\u5B41\u971B\u975C\uD864\uDDD5\u9757\u5B4A\uD864\uDDEB\u975F\u9425\u50D0\uD84C\uDCB7\uD84C\uDCBC\u9789\u979F\u97B1\u97BE\u97C0\u97D2\u97E0\uD855\uDC6C\u97EE\u741C\uD865\uDC33\u97FF\u97F5\uD865\uDC1D\uD85E\uDD7A\u4AD1\u9834\u9833\u984B\u9866\u3B0E\uD85C\uDD75\u3D51\uD841\uDE30\uD850\uDD5C\"],\n[\"9140\",\"\uD855\uDF06\u98CA\u98B7\u98C8\u98C7\u4AFF\uD85B\uDD27\uD845\uDED3\u55B0\u98E1\u98E6\u98EC\u9378\u9939\uD852\uDE29\u4B72\uD866\uDC57\uD866\uDD05\u99F5\u9A0C\u9A3B\u9A10\u9A58\uD855\uDF25\u36C4\uD864\uDCB1\uD866\uDFD5\u9AE0\u9AE2\uD866\uDF05\u9AF4\u4C0E\u9B14\u9B2D\uD861\uDE00\u5034\u9B34\uD85A\uDDA8\u38C3\uD84C\uDC7D\u9B50\u9B40\uD867\uDD3E\u5A45\uD846\uDC63\u9B8E\uD850\uDE4B\u9C02\u9BFF\u9C0C\uD867\uDE68\u9DD4\uD867\uDFB7\uD868\uDD92\uD868\uDDAB\uD868\uDCE1\uD868\uDD23\uD868\uDDDF\u9D7E\u9D83\uD868\uDD34\u9E0E\u6888\"],\n[\"91a1\",\"\u9DC4\uD848\uDD5B\uD868\uDD93\uD868\uDE20\uD846\uDD3B\uD868\uDE33\u9D39\uD868\uDCB9\uD868\uDEB4\u9E90\u9E95\u9E9E\u9EA2\u4D34\u9EAA\u9EAF\uD850\uDF64\u9EC1\u3B60\u39E5\u3D1D\u4F32\u37BE\uD863\uDC2B\u9F02\u9F08\u4B96\u9424\uD85B\uDDA2\u9F17\u9F16\u9F39\u569F\u568A\u9F45\u99B8\uD864\uDC8B\u97F2\u847F\u9F62\u9F69\u7ADC\u9F8E\u7216\u4BBE\uD852\uDD75\uD852\uDDBB\u7177\uD852\uDDF8\uD850\uDF48\uD852\uDE51\u739E\uD862\uDFDA\uD846\uDCFA\u799F\uD862\uDD7E\uD863\uDE36\u9369\u93F3\uD862\uDE44\u92EC\u9381\u93CB\uD862\uDD6C\uD851\uDCB9\u7217\u3EEB\u7772\u7A43\u70D0\uD851\uDC73\uD850\uDFF8\u717E\uD845\uDFEF\u70A3\uD846\uDCBE\uD84D\uDD99\u3EC7\uD846\uDC85\uD855\uDC2F\uD845\uDFF8\u3722\uD845\uDEFB\uD846\uDC39\u36E1\uD845\uDF74\uD846\uDCD1\uD857\uDF4B\u3723\uD845\uDEC0\u575B\uD852\uDE25\uD844\uDFFE\uD844\uDEA8\"],\n[\"9240\",\"\uD844\uDFC6\uD845\uDCB6\u8503\uD84D\uDEA6\u8503\u8455\uD852\uDD94\uD85C\uDD65\uD84F\uDE31\uD855\uDD5C\uD84F\uDEFB\uD85C\uDC52\u44F4\uD84D\uDEEE\uD866\uDD9D\uD85B\uDF26\u67F9\u3733\u3C15\u3DE7\u586C\uD846\uDD22\u6810\u4057\uD84D\uDF3F\uD850\uDCE1\uD850\uDC8B\uD850\uDD0F\uD85B\uDC21\u54CB\u569E\uD859\uDEB1\u5692\uD843\uDFDF\uD842\uDFA8\uD843\uDE0D\u93C6\uD862\uDF13\u939C\u4EF8\u512B\u3819\uD851\uDC36\u4EBC\uD841\uDC65\uD840\uDF7F\u4F4B\u4F8A\uD855\uDE51\u5A68\uD840\uDDAB\uD840\uDFCB\u3999\uD840\uDF0A\uD841\uDC14\u3435\u4F29\uD840\uDEC0\uD863\uDEB3\uD840\uDE75\u8ADA\uD840\uDE0C\u4E98\"],\n[\"92a1\",\"\u50CD\u510D\u4FA2\u4F03\uD852\uDE0E\uD84F\uDE8A\u4F42\u502E\u506C\u5081\u4FCC\u4FE5\u5058\u50FC\u5159\u515B\u515D\u515E\u6E76\uD84D\uDD95\uD84F\uDE39\uD84F\uDEBF\u6D72\uD846\uDC84\uD84F\uDE89\u51A8\u51C3\uD841\uDDE0\u44DD\uD841\uDCA3\uD841\uDC92\uD841\uDC91\u8D7A\uD862\uDE9C\uD841\uDF0E\u5259\u52A4\uD842\uDC73\u52E1\u936E\u467A\u718C\uD850\uDF8C\uD843\uDC20\uD852\uDDAC\uD844\uDCE4\u69D1\uD843\uDE1D\u7479\u3EDE\u7499\u7414\u7456\u7398\u4B8E\uD852\uDEBC\uD850\uDC8D\u53D0\u3584\u720F\uD850\uDCC9\u55B4\uD840\uDF45\u54CD\uD842\uDFC6\u571D\u925D\u96F4\u9366\u57DD\u578D\u577F\u363E\u58CB\u5A99\uD862\uDE46\uD845\uDEFA\uD845\uDF6F\uD845\uDF10\u5A2C\u59B8\u928F\u5A7E\u5ACF\u5A12\uD856\uDD46\uD846\uDDF3\uD846\uDC61\uD850\uDE95\u36F5\u6D05\u7443\u5A21\uD857\uDE83\"],\n[\"9340\",\"\u5A81\uD862\uDFD7\uD841\uDC13\u93E0\u748C\uD844\uDF03\u7105\u4972\u9408\uD862\uDDFB\u93BD\u37A0\u5C1E\u5C9E\u5E5E\u5E48\uD846\uDD96\uD846\uDD7C\uD84E\uDEEE\u5ECD\u5B4F\uD846\uDD03\uD846\uDD04\u3701\uD846\uDCA0\u36DD\uD845\uDEFE\u36D3\u812A\uD862\uDE47\uD847\uDDBA\uD84D\uDC72\uD862\uDDA8\u5F0C\u5F0E\uD846\uDD27\uD845\uDFAB\u5A6B\uD845\uDF3B\u5B44\u8614\uD85D\uDDFD\u8860\u607E\uD84A\uDC60\uD849\uDE2B\u5FDB\u3EB8\uD849\uDDAF\uD849\uDDBE\uD864\uDC88\uD85B\uDF73\u61C0\uD840\uDC3E\uD840\uDC46\uD849\uDE1B\u6199\u6198\u6075\uD84B\uDC9B\uD84B\uDD07\uD851\uDED4\uD864\uDD4D\"],\n[\"93a1\",\"\u6471\uD851\uDE65\uD84A\uDF6A\u3A29\uD84A\uDF22\uD84D\uDC50\uD866\uDCEA\uD84B\uDE78\u6337\uD869\uDC5B\u64B6\u6331\u63D1\uD852\uDDE3\uD84B\uDD67\u62A4\uD84B\uDCA1\u643B\u656B\u6972\u3BF4\uD84C\uDC8E\uD84C\uDEAD\uD852\uDD89\uD84C\uDEAB\u550D\uD84C\uDEE0\uD846\uDCD9\uD865\uDC3F\u66CE\uD84C\uDE89\uD84C\uDDB3\u3AE0\u4190\uD855\uDD84\uD862\uDF22\uD855\uDD8F\uD845\uDEFC\uD855\uDD5B\uD855\uDC25\u78EE\uD84C\uDD03\uD846\uDC2A\uD84C\uDE34\u3464\uD84C\uDE0F\uD84C\uDD82\uD850\uDEC9\u668E\uD85B\uDD24\u666B\u4B93\u6630\uD85E\uDC70\uD847\uDDEB\u6663\uD84C\uDED2\uD84C\uDEE1\u661E\uD856\uDC72\u38D1\uD84E\uDC3A\uD84D\uDFBC\u3B99\uD84D\uDFA2\uD84C\uDFFE\u74D0\u3B96\u678F\uD851\uDE2A\u68B6\u681E\u3BC4\u6ABE\u3863\uD84D\uDFD5\uD851\uDC87\u6A33\u6A52\u6AC9\u6B05\uD846\uDD12\u6511\u6898\u6A4C\u3BD7\u6A7A\u6B57\uD84F\uDFC0\uD84F\uDC9A\u93A0\u92F2\uD862\uDFEA\uD862\uDECB\"],\n[\"9440\",\"\u9289\uD860\uDC1E\uD862\uDDDC\u9467\u6DA5\u6F0B\uD852\uDDEC\u6D67\uD84F\uDF7F\u3D8F\u6E04\uD850\uDC3C\u5A3D\u6E0A\u5847\u6D24\u7842\u713B\uD850\uDF1A\uD850\uDE76\u70F1\u7250\u7287\u7294\uD851\uDF8F\uD851\uDF25\u5179\uD852\uDEA4\uD841\uDDEB\u747A\uD84F\uDEF8\uD84D\uDE5F\uD852\uDE4A\uD852\uDD17\uD857\uDFE1\u3F06\u3EB1\uD852\uDEDF\uD863\uDC23\uD84F\uDF35\u60A7\u3EF3\u74CC\u743C\u9387\u7437\u449F\uD85B\uDDEA\u4551\u7583\u3F63\uD853\uDCD9\uD853\uDD06\u3F58\u7555\u7673\uD869\uDDC6\u3B19\u7468\uD862\uDECC\uD852\uDDAB\uD852\uDD8E\u3AFB\"],\n[\"94a1\",\"\u3DCD\uD852\uDE4E\u3EFF\uD852\uDDC5\uD852\uDCF3\u91FA\u5732\u9342\uD862\uDEE3\uD846\uDC64\u50DF\uD854\uDE21\uD854\uDDE7\u7778\uD84C\uDE32\u770E\u770F\u777B\uD851\uDE97\uD84D\uDF81\u3A5E\uD852\uDCF0\u7438\u749B\u3EBF\uD852\uDEBA\uD852\uDEC7\u40C8\uD852\uDE96\uD858\uDDAE\u9307\uD855\uDD81\u781E\u788D\u7888\u78D2\u73D0\u7959\uD85D\uDF41\uD855\uDEE3\u410E\u799B\u8496\u79A5\u6A2D\uD84F\uDEFA\u7A3A\u79F4\u416E\uD845\uDEE6\u4132\u9235\u79F1\uD843\uDD4C\uD852\uDD8C\uD840\uDE99\uD84F\uDDBA\uD845\uDF6E\u3597\u556B\u3570\u36AA\uD840\uDDD4\uD843\uDC0D\u7AE2\u5A59\uD849\uDEF5\uD856\uDEAF\uD856\uDE9C\u5A0D\uD840\uDE5B\u78F0\u5A2A\uD856\uDFC6\u7AFE\u41F9\u7C5D\u7C6D\u4211\uD856\uDFB3\uD857\uDEBC\uD857\uDEA6\u7CCD\uD852\uDDF9\uD845\uDFB0\u7C8E\u7C7C\u7CAE\u6AB2\u7DDC\u7E07\u7DD3\u7F4E\uD858\uDE61\"],\n[\"9540\",\"\uD858\uDD5C\uD85E\uDF48\u7D97\uD857\uDE82\u426A\uD85A\uDF75\uD842\uDD16\u67D6\uD840\uDC4E\uD84D\uDDCF\u57C4\uD859\uDC12\uD858\uDFF8\uD852\uDD62\u7FDD\u7B27\uD842\uDC2C\uD856\uDEE9\uD857\uDD43\u7B0C\uD857\uDE0E\u99E6\u8645\u9A63\u6A1C\uD84D\uDC3F\u39E2\uD852\uDDF7\uD859\uDDAD\u9A1F\uD859\uDDA0\u8480\uD85C\uDD27\uD85B\uDCD1\u44EA\u8137\u4402\u80C6\u8109\u8142\uD859\uDFB4\u98C3\uD85A\uDE42\u8262\u8265\uD85A\uDE51\u8453\uD85B\uDDA7\u8610\uD85C\uDE1B\u5A86\u417F\uD846\uDC40\u5B2B\uD846\uDCA1\u5AE4\uD846\uDCD8\u86A0\uD87E\uDDBC\uD84F\uDD8F\u882D\uD85D\uDC22\u5A02\"],\n[\"95a1\",\"\u886E\u4F45\u8887\u88BF\u88E6\u8965\u894D\uD855\uDE83\u8954\uD85D\uDF85\uD85D\uDF84\uD862\uDFF5\uD862\uDFD9\uD862\uDF9C\uD862\uDDF9\u3EAD\u84A3\u46F5\u46CF\u37F2\u8A3D\u8A1C\uD865\uDC48\u5F4D\u922B\uD850\uDE84\u65D4\u7129\u70C4\uD846\uDC45\u9D6D\u8C9F\u8CE9\uD85F\uDDDC\u599A\u77C3\u59F0\u436E\u36D4\u8E2A\u8EA7\uD853\uDC09\u8F30\u8F4A\u42F4\u6C58\u6FBB\uD848\uDF21\u489B\u6F79\u6E8B\uD845\uDFDA\u9BE9\u36B5\uD852\uDD2F\u90BB\u9097\u5571\u4906\u91BB\u9404\uD862\uDE4B\u4062\uD862\uDEFC\u9427\uD863\uDC1D\uD863\uDC3B\u84E5\u8A2B\u9599\u95A7\u9597\u9596\uD863\uDD34\u7445\u3EC2\uD852\uDCFF\uD852\uDE42\uD850\uDFEA\u3EE7\uD84C\uDE25\u968F\uD863\uDEE7\uD863\uDE66\uD863\uDE65\u3ECC\uD852\uDDED\uD852\uDE78\uD84F\uDFEE\u7412\u746B\u3EFC\u9741\uD864\uDCB0\"],\n[\"9640\",\"\u6847\u4A1D\uD864\uDC93\uD855\uDFDF\u975D\u9368\uD862\uDD89\uD863\uDC26\uD862\uDF2F\uD858\uDFBE\u92BA\u5B11\u8B69\u493C\u73F9\uD850\uDE1B\u979B\u9771\u9938\uD843\uDF26\u5DC1\uD862\uDFC5\uD852\uDEB2\u981F\uD865\uDCDA\u92F6\uD865\uDDD7\u91E5\u44C0\uD862\uDF50\uD852\uDE67\uD862\uDF64\u98DC\uD862\uDE45\u3F00\u922A\u4925\u8414\u993B\u994D\uD85E\uDF06\u3DFD\u999B\u4B6F\u99AA\u9A5C\uD862\uDF65\uD856\uDCC8\u6A8F\u9A21\u5AFE\u9A2F\uD866\uDCF1\u4B90\uD866\uDD48\u99BC\u4BBD\u4B97\u937D\u5872\uD844\uDF02\u5822\uD852\uDDB8\"],\n[\"96a1\",\"\uD845\uDCE8\u7844\uD849\uDF1F\uD84F\uDDB8\u68C5\u3D7D\u9458\u3927\u6150\uD849\uDF81\uD84A\uDD6B\u6107\u9C4F\u9C53\u9C7B\u9C35\u9C10\u9B7F\u9BCF\uD867\uDE2D\u9B9F\uD868\uDDF5\uD868\uDCFE\u9D21\u4CAE\uD850\uDD04\u9E18\u4CB0\u9D0C\uD868\uDDB4\uD868\uDCED\uD868\uDCF3\uD866\uDD2F\u9DA5\u84BD\uD85B\uDE12\uD85B\uDFDF\uD85A\uDF82\u85FC\u4533\uD85B\uDDA4\uD85B\uDE84\uD85B\uDDF0\u8420\u85EE\uD85B\uDE00\uD84D\uDFD7\uD858\uDC64\u79E2\uD84D\uDD9C\uD84D\uDE40\u492D\uD852\uDDDE\u3D62\u93DB\u92BE\u9348\uD840\uDEBF\u78B9\u9277\u944D\u4FE4\u3440\u9064\uD855\uDD5D\u783D\u7854\u78B6\u784B\uD845\uDF57\uD84C\uDDC9\uD852\uDD41\u369A\u4F72\u6FDA\u6FD9\u701E\u701E\u5414\uD850\uDDB5\u57BB\u58F3\u578A\u9D16\u57D7\u7134\u34AF\uD850\uDDAC\u71EB\uD85B\uDC40\uD853\uDF97\u5B28\uD845\uDFB5\uD862\uDE49\"],\n[\"9740\",\"\u610C\u5ACE\u5A0B\u42BC\uD851\uDC88\u372C\u4B7B\uD862\uDDFC\u93BB\u93B8\uD846\uDCD6\uD843\uDF1D\u8472\uD85B\uDCC0\uD845\uDC13\uD850\uDEFA\uD84B\uDC26\uD850\uDFC1\u5994\uD84F\uDDB7\uD859\uDF41\u7DA8\uD858\uDD5B\uD858\uDCA4\uD852\uDDB9\uD852\uDD8B\uD862\uDDFA\u92E5\u73E2\u3EE9\u74B4\uD862\uDF63\uD846\uDC9F\u3EE1\uD852\uDEB3\u6AD8\u73F3\u73FB\u3ED6\uD852\uDE3E\uD852\uDE94\uD845\uDFD9\uD852\uDE66\uD840\uDFA7\uD845\uDC24\uD852\uDDE5\u7448\uD852\uDD16\u70A5\uD852\uDD76\u9284\u73E6\u935F\uD841\uDCFE\u9331\uD862\uDECE\uD862\uDE16\u9386\uD862\uDFE7\uD855\uDDD5\u4935\uD862\uDE82\u716B\"],\n[\"97a1\",\"\uD852\uDD43\uD843\uDCFF\u56A4\uD841\uDE1A\uD842\uDFEB\uD843\uDCB8\u5502\u79C4\uD845\uDFFA\u7DFE\uD845\uDEC2\uD852\uDE50\uD846\uDC52\u452E\u9401\u370A\uD862\uDEC0\uD852\uDDAD\u59B0\uD846\uDCBF\uD846\uDC83\uD85D\uDC84\u5AA1\u36E2\uD84F\uDD5B\u36B0\u925F\u5A79\uD862\uDE81\uD846\uDC62\u9374\u3CCD\uD842\uDEB4\u4A96\u398A\u50F4\u3D69\u3D4C\uD844\uDF9C\u7175\u42FB\uD860\uDE18\u6E0F\uD864\uDCE4\u44EB\u6D57\uD85F\uDE4F\u7067\u6CAF\u3CD6\uD84F\uDFED\uD84F\uDE2D\u6E02\u6F0C\u3D6F\uD840\uDFF5\u7551\u36BC\u34C8\u4680\u3EDA\u4871\u59C4\u926E\u493E\u8F41\uD863\uDC1C\uD85A\uDFC0\u5812\u57C8\u36D6\uD845\uDC52\u70FE\uD850\uDF62\uD852\uDE71\uD84B\uDFE3\uD844\uDEB0\uD848\uDFBD\u68B9\u6967\uD844\uDF98\uD84D\uDCE5\uD85E\uDFF4\uD84D\uDEDF\uD862\uDE83\uD84D\uDFD6\uD84C\uDFFA\uD853\uDC9F\u6A1A\uD84D\uDEAD\uD85B\uDCB7\u843E\u44DF\u44CE\"],\n[\"9840\",\"\uD85B\uDD26\uD85B\uDD51\uD85B\uDC82\uD85B\uDFDE\u6F17\uD85C\uDD09\u833D\uD845\uDF3A\u83ED\uD85B\uDC80\uD85C\uDC53\uD845\uDFDB\u5989\u5A82\uD845\uDFB3\u5A61\u5A71\uD846\uDD05\uD850\uDDFC\u372D\u59EF\uD845\uDF3C\u36C7\u718E\u9390\u669A\uD850\uDEA5\u5A6E\u5A2B\uD850\uDE93\u6A2B\uD84F\uDEF9\uD85D\uDF36\uD851\uDC5B\uD850\uDECA\u711D\uD850\uDE59\uD862\uDDE1\u4FB0\uD85B\uDD28\u5CC2\uD851\uDCCE\uD85F\uDE4D\uD850\uDFBD\u6A0C\uD850\uDE56\uD844\uDF04\u70A6\u7133\uD850\uDFE9\u3DA5\u6CDF\uD87E\uDC25\uD852\uDE4F\u7E65\u59EB\u5D2F\u3DF3\u5F5C\uD852\uDE5D\uD845\uDFDF\u7DA4\u8426\"],\n[\"98a1\",\"\u5485\uD84E\uDEFA\uD84C\uDF00\uD840\uDE14\u577E\uD842\uDCD5\uD841\uDE19\u3FE5\uD847\uDF9E\uD868\uDEB6\u7003\uD864\uDD5B\u5D70\u738F\u7CD3\uD862\uDE59\uD865\uDC20\u4FC8\u7FE7\u72CD\u7310\uD85E\uDEF4\u7338\u7339\uD855\uDEF6\u7341\u7348\u3EA9\uD85E\uDF18\u906C\u71F5\uD852\uDCF2\u73E1\u81F6\u3ECA\u770C\u3ED1\u6CA2\u56FD\u7419\u741E\u741F\u3EE2\u3EF0\u3EF4\u3EFA\u74D3\u3F0E\u3F53\u7542\u756D\u7572\u758D\u3F7C\u75C8\u75DC\u3FC0\u764D\u3FD7\u7674\u3FDC\u767A\uD853\uDF5C\u7188\u5623\u8980\u5869\u401D\u7743\u4039\u6761\u4045\u35DB\u7798\u406A\u406F\u5C5E\u77BE\u77CB\u58F2\u7818\u70B9\u781C\u40A8\u7839\u7847\u7851\u7866\u8448\uD855\uDD35\u7933\u6803\u7932\u4103\"],\n[\"9940\",\"\u4109\u7991\u7999\u8FBB\u7A06\u8FBC\u4167\u7A91\u41B2\u7ABC\u8279\u41C4\u7ACF\u7ADB\u41CF\u4E21\u7B62\u7B6C\u7B7B\u7C12\u7C1B\u4260\u427A\u7C7B\u7C9C\u428C\u7CB8\u4294\u7CED\u8F93\u70C0\uD843\uDCCF\u7DCF\u7DD4\u7DD0\u7DFD\u7FAE\u7FB4\u729F\u4397\u8020\u8025\u7B39\u802E\u8031\u8054\u3DCC\u57B4\u70A0\u80B7\u80E9\u43ED\u810C\u732A\u810E\u8112\u7560\u8114\u4401\u3B39\u8156\u8159\u815A\"],\n[\"99a1\",\"\u4413\u583A\u817C\u8184\u4425\u8193\u442D\u81A5\u57EF\u81C1\u81E4\u8254\u448F\u82A6\u8276\u82CA\u82D8\u82FF\u44B0\u8357\u9669\u698A\u8405\u70F5\u8464\u60E3\u8488\u4504\u84BE\u84E1\u84F8\u8510\u8538\u8552\u453B\u856F\u8570\u85E0\u4577\u8672\u8692\u86B2\u86EF\u9645\u878B\u4606\u4617\u88AE\u88FF\u8924\u8947\u8991\uD85E\uDD67\u8A29\u8A38\u8A94\u8AB4\u8C51\u8CD4\u8CF2\u8D1C\u4798\u585F\u8DC3\u47ED\u4EEE\u8E3A\u55D8\u5754\u8E71\u55F5\u8EB0\u4837\u8ECE\u8EE2\u8EE4\u8EED\u8EF2\u8FB7\u8FC1\u8FCA\u8FCC\u9033\u99C4\u48AD\u98E0\u9213\u491E\u9228\u9258\u926B\u92B1\u92AE\u92BF\"],\n[\"9a40\",\"\u92E3\u92EB\u92F3\u92F4\u92FD\u9343\u9384\u93AD\u4945\u4951\u9EBF\u9417\u5301\u941D\u942D\u943E\u496A\u9454\u9479\u952D\u95A2\u49A7\u95F4\u9633\u49E5\u67A0\u4A24\u9740\u4A35\u97B2\u97C2\u5654\u4AE4\u60E8\u98B9\u4B19\u98F1\u5844\u990E\u9919\u51B4\u991C\u9937\u9942\u995D\u9962\u4B70\u99C5\u4B9D\u9A3C\u9B0F\u7A83\u9B69\u9B81\u9BDD\u9BF1\u9BF4\u4C6D\u9C20\u376F\uD846\uDFC2\u9D49\u9C3A\"],\n[\"9aa1\",\"\u9EFE\u5650\u9D93\u9DBD\u9DC0\u9DFC\u94F6\u8FB6\u9E7B\u9EAC\u9EB1\u9EBD\u9EC6\u94DC\u9EE2\u9EF1\u9EF8\u7AC8\u9F44\uD840\uDC94\uD840\uDEB7\uD840\uDFA0\u691A\u94C3\u59AC\uD841\uDCD7\u5840\u94C1\u37B9\uD841\uDDD5\uD841\uDE15\uD841\uDE76\uD845\uDEBA\u5757\u7173\uD842\uDEC2\uD842\uDECD\uD842\uDFBF\u546A\uD87E\uDC3B\uD842\uDFCB\u549E\uD842\uDFFB\uD843\uDC3B\uD843\uDC53\uD843\uDC65\uD843\uDC7C\u60E7\uD843\uDC8D\u567A\uD843\uDCB5\uD843\uDCDD\uD843\uDCED\uD843\uDD6F\uD843\uDDB2\uD843\uDDC8\u6955\u9C2F\u87A5\uD843\uDE04\uD843\uDE0E\uD843\uDED7\uD843\uDF90\uD843\uDF2D\uD843\uDE73\u5C20\uD843\uDFBC\u5E0B\uD844\uDC5C\uD844\uDC4F\uD844\uDC76\u671E\uD844\uDC7B\uD844\uDC88\uD844\uDC96\u3647\uD844\uDCBF\uD844\uDCD3\uD844\uDD2F\uD844\uDD3B\u5364\u84AD\uD844\uDEE3\uD844\uDF75\uD844\uDF36\u8B81\uD845\uDD77\uD845\uDE19\uD845\uDFC3\uD845\uDFC7\u4E78\u70BB\uD846\uDC2D\uD846\uDD6A\"],\n[\"9b40\",\"\uD846\uDE2D\uD846\uDE45\uD847\uDC2A\uD847\uDC70\uD847\uDCAC\uD847\uDEC8\u62C3\uD847\uDED5\uD847\uDF15\u7198\u6855\uD848\uDC45\u69E9\u36C8\uD848\uDE7C\uD848\uDFD7\uD848\uDFFA\uD849\uDF2A\uD84A\uDC71\uD84A\uDD4F\u82FD\uD84A\uDD67\uD84A\uDD93\uD84A\uDED5\u89A5\uD84A\uDEE8\u8FA0\uD84A\uDF0E\u97B8\uD84A\uDF3F\u9847\u9ABD\uD84B\uDC4C\"],\n[\"9b62\",\"\uD84B\uDC88\uD84B\uDCB7\uD856\uDFE8\uD84B\uDD08\uD84B\uDD12\uD84B\uDDB7\uD84B\uDD95\uD84B\uDE42\uD84B\uDF74\uD84B\uDFCC\uD84C\uDC33\uD84C\uDC66\uD84C\uDF1F\uD84C\uDFDE\u5FB1\u6648\u66BF\uD85E\uDE79\uD84D\uDD67\uD84D\uDDF3\u7201\uD852\uDDBA\u77D7\uD84D\uDE1A\uD84D\uDF16\u7E87\uD840\uDF46\u58B5\u670E\"],\n[\"9ba1\",\"\u6918\uD84E\uDEA7\uD85D\uDE57\uD857\uDFE2\uD84F\uDE11\uD84F\uDEB9\uD85D\uDDFE\uD848\uDC9A\u48D0\u4AB8\uD850\uDD19\uD862\uDE9A\uD850\uDEEE\uD850\uDF0D\uD850\uDC3B\uD850\uDF34\uD850\uDF96\uD852\uDE45\uD841\uDDCA\u51D2\uD841\uDE11\u599F\uD847\uDEA8\u3BBE\uD84F\uDCFF\uD851\uDC04\uD851\uDCD6\u5788\uD851\uDE74\u399B\uD851\uDF2F\uD861\uDDE8\uD866\uDDC9\u3762\uD848\uDDC3\u8B5E\uD862\uDF4E\u99D6\uD852\uDC12\uD852\uDCFB\uD852\uDE15\u7209\uD852\uDEC0\uD843\uDC78\u5965\uD853\uDEA5\uD853\uDF86\uD841\uDF79\u8EDA\uD854\uDC2C\u528F\u573F\u7171\uD854\uDE99\uD855\uDC19\uD84F\uDF4A\uD852\uDEA7\u55BC\uD855\uDC46\uD855\uDC6E\uD85A\uDF52\u91D4\u3473\uD855\uDD3F\uD85D\uDE32\uD855\uDD5E\u4718\uD855\uDD62\uD855\uDD66\uD855\uDFC7\uD852\uDD3F\uD856\uDC5D\u5066\u34FB\uD84C\uDFCC\u60DE\uD856\uDD03\u477C\uD862\uDD48\uD856\uDEAE\uD856\uDF89\uD857\uDC06\uD847\uDD90\u57A1\u7151\u6FB6\uD858\uDD02\uD85F\uDC12\u9056\uD858\uDDB2\uD853\uDF9A\u8B62\uD859\uDC02\uD859\uDC4A\"],\n[\"9c40\",\"\u5D5B\uD85A\uDFF7\u8F36\uD859\uDC84\uD846\uDD1C\u8AEA\uD852\uDDF6\uD859\uDC88\uD84F\uDFEF\uD859\uDD12\u4BC0\uD859\uDDBF\uD859\uDEB5\uD849\uDF1B\u9465\uD855\uDFE1\u6195\u5A27\uD87E\uDCCD\u4FBB\u56B9\uD851\uDD21\uD859\uDEFC\u4E6A\uD852\uDD34\u9656\u6D8F\uD85B\uDCBD\u3618\u8977\uD859\uDF99\uD85A\uDC6E\uD859\uDC11\uD85A\uDC5E\u71DF\uD85A\uDCC7\u7B42\uD864\uDCC0\uD842\uDE11\uD85A\uDD26\u9104\uD85A\uDD39\u7A45\u9DF0\uD85A\uDDFA\u9A26\uD85A\uDE2D\u365F\uD859\uDC69\uD840\uDC21\u7983\uD85A\uDE34\uD85A\uDF5B\u5D2C\uD84D\uDD19\u83CF\uD85A\uDF9D\u46D0\uD85B\uDCA4\u753B\u8865\uD85B\uDDAE\u58B6\"],\n[\"9ca1\",\"\u371C\uD849\uDD8D\uD85C\uDC4B\uD85C\uDDCD\u3C54\uD85C\uDE80\uD85C\uDE85\u9281\uD848\uDD7A\uD85C\uDE8B\u9330\uD85C\uDEE6\uD852\uDDD0\u6C39\u949F\uD85D\uDC50\uD843\uDEF8\u8827\u88F5\uD84A\uDD26\uD861\uDC73\uD845\uDFB1\u6EB8\uD852\uDE2A\uD846\uDC20\u39A4\u36B9\u5C10\u79E3\u453F\u66B6\uD867\uDCAD\uD866\uDCA4\u8943\uD85D\uDFCC\uD85E\uDC58\u56D6\u40DF\uD845\uDE0A\u39A1\uD84D\uDF2F\uD860\uDCE8\uD844\uDFC5\u71AD\u8366\uD85E\uDDDD\uD864\uDDA8\u5A67\u4CB7\uD85C\uDCAF\uD862\uDDAB\uD85E\uDDFD\uD85E\uDE0A\uD85E\uDF0B\uD85F\uDD66\uD850\uDD7A\u7B43\u797E\uD860\uDC09\u6FB5\uD868\uDEDF\u6A03\uD860\uDF18\u53A2\uD85B\uDE07\u93BF\u6836\u975D\uD860\uDD6F\uD860\uDC23\uD85A\uDDB5\uD844\uDFED\uD84C\uDE2F\uD860\uDC48\u5D85\uD863\uDC30\uD860\uDC83\u5715\u9823\uD862\uDD49\u5DAB\uD852\uDD88\u65BE\u69D5\u53D2\uD852\uDEA5\uD84F\uDF81\u3C11\u6736\uD860\uDC90\uD860\uDCF4\uD860\uDD2E\uD847\uDFA1\uD860\uDD4F\"],\n[\"9d40\",\"\uD860\uDD89\uD860\uDDAF\uD860\uDE1A\uD860\uDF06\uD860\uDF2F\uD860\uDF8A\u35CA\uD861\uDC68\uD861\uDEAA\u48FA\u63E6\uD862\uDD56\u7808\u9255\uD862\uDDB8\u43F2\uD862\uDDE7\u43DF\uD862\uDDE8\uD862\uDF46\uD862\uDFD4\u59F8\uD863\uDC09\u8F0B\uD863\uDFC5\uD864\uDCEC\u7B51\uD864\uDD10\uD864\uDD3C\u3DF7\uD864\uDD5E\uD852\uDECA\u8FD0\u728F\u568B\uD865\uDCE7\uD865\uDDE9\uD865\uDDB0\uD865\uDDB8\uD865\uDF32\uD866\uDCD1\uD866\uDD49\uD866\uDD6A\uD866\uDDC3\uD866\uDE28\uD866\uDF0E\uD867\uDD5A\uD867\uDD9B\u7E9F\uD867\uDEF8\uD867\uDF23\u4CA4\u9547\uD868\uDE93\u71A2\uD868\uDEFF\u4D91\u9012\uD869\uDDCB\u4D9C\uD843\uDC9C\u8FBE\u55C1\"],\n[\"9da1\",\"\u8FBA\uD849\uDCB0\u8FB9\uD852\uDE93\u4509\u7E7F\u6F56\u6AB1\u4EEA\u34E4\uD862\uDF2C\uD85E\uDC9D\u373A\u8E80\uD845\uDFF5\uD860\uDC24\uD862\uDF6C\uD862\uDF99\uD85E\uDE3E\uD859\uDEAF\u3DEB\uD85D\uDE55\uD84F\uDCB7\uD855\uDE35\uD856\uDD56\u4E9A\uD857\uDE81\uD858\uDE58\u56BF\uD843\uDE6D\u8E0E\u5B6D\uD84F\uDE88\uD853\uDC9E\u63DE\u62D0\uD845\uDFF6\uD846\uDC7B\u6530\u562D\uD857\uDC4A\u541A\uD854\uDF11\u3DC6\uD867\uDD98\u4C7D\u5622\u561E\u7F49\uD857\uDED8\u5975\uD84F\uDD40\u8770\u4E1C\uD843\uDFEA\uD843\uDD49\uD84D\uDEBA\u8117\u9D5E\u8D18\u763B\u9C45\u764E\u77B9\u9345\u5432\u8148\u82F7\u5625\u8132\u8418\u80BD\u55EA\u7962\u5643\u5416\uD843\uDE9D\u35CE\u5605\u55F1\u66F1\uD860\uDEE2\u362D\u7534\u55F0\u55BA\u5497\u5572\uD843\uDC41\uD843\uDC96\u5ED0\uD854\uDD48\uD843\uDE76\uD84B\uDC62\"],\n[\"9e40\",\"\uD843\uDEA2\u9EAB\u7D5A\u55DE\uD844\uDC75\u629D\u976D\u5494\u8CCD\u71F6\u9176\u63FC\u63B9\u63FE\u5569\uD84A\uDF43\u9C72\uD84B\uDEB3\u519A\u34DF\uD843\uDDA7\u51A7\u544D\u551E\u5513\u7666\u8E2D\uD85A\uDC8A\u75B1\u80B6\u8804\u8786\u88C7\u81B6\u841C\uD844\uDCC1\u44EC\u7304\uD851\uDF06\u5B90\u830B\uD85A\uDC93\u567B\uD849\uDEF4\uD85F\uDD2F\uD850\uDDA3\uD85F\uDD73\uD85B\uDED0\uD85C\uDEB6\u9170\uD844\uDDD9\u9208\uD84F\uDCFC\uD869\uDEA9\uD843\uDEAC\uD843\uDEF9\u7266\uD847\uDCA2\u474E\uD853\uDFC2\uD85F\uDFF9\uD843\uDFEB\u40FA\"],\n[\"9ea1\",\"\u9C5D\u651F\uD84B\uDDA0\u48F3\uD851\uDFE0\uD867\uDD7C\uD843\uDFEC\uD843\uDE0A\u6062\uD85D\uDDA3\uD843\uDFED\"],\n[\"9ead\",\"\uD858\uDC48\uD844\uDD87\u71A3\u7E8E\u9D50\u4E1A\u4E04\u3577\u5B0D\u6CB2\u5367\u36AC\u39DC\u537D\u36A5\uD851\uDE18\u589A\uD852\uDF6E\u822D\u544B\u57AA\uD856\uDE95\uD842\uDD79\"],\n[\"9ec5\",\"\u3A52\uD849\uDC65\u7374\uD867\uDEAC\u4D09\u9BED\uD84F\uDCFE\uD867\uDF30\u4C5B\uD853\uDFA9\uD865\uDD9E\uD867\uDFDE\u845C\uD84F\uDDB6\uD85C\uDEB2\uD859\uDFB3\uD84D\uDF20\u632E\u7D25\uD84F\uDEF7\uD84F\uDE2C\u3A2A\u9008\u52CC\u3E74\u367A\u45E9\uD841\uDC8E\u7640\u5AF0\uD843\uDEB6\u787A\uD85F\uDF2E\u58A7\u40BF\u567C\u9B8B\u5D74\u7654\uD869\uDC34\u9E85\u4CE1\u75F9\u37FB\u6119\uD84C\uDCDA\uD850\uDFF2\"],\n[\"9ef5\",\"\u565D\uD844\uDEA9\u57A7\uD852\uDD63\uD867\uDE06\u5234\uD85C\uDCAE\u35AD\u6C4A\u9D7C\"],\n[\"9f40\",\"\u7C56\u9B39\u57DE\uD845\uDF6C\u5C53\u64D3\uD865\uDCD0\uD858\uDF35\uD85C\uDD64\u86AD\uD843\uDD28\uD85B\uDD22\uD852\uDEE2\uD843\uDD71\"],\n[\"9f4f\",\"\u51FE\uD847\uDF0F\u5D8E\u9703\uD847\uDDD1\u9E81\u904C\u7B1F\u9B02\u5CD1\u7BA3\u6268\u6335\u9AFF\u7BCF\u9B2A\u7C7E\u9B2E\u7C42\u7C86\u9C15\u7BFC\u9B09\u9F17\u9C1B\uD852\uDD3E\u9F5A\u5573\u5BC3\u4FFD\u9E98\u4FF2\u5260\u3E06\u52D1\u5767\u5056\u59B7\u5E12\u97C8\u9DAB\u8F5C\u5469\u97B4\u9940\u97BA\u532C\u6130\"],\n[\"9fa1\",\"\u692C\u53DA\u9C0A\u9D02\u4C3B\u9641\u6980\u50A6\u7546\uD845\uDF6D\u99DA\u5273\"],\n[\"9fae\",\"\u9159\u9681\u915C\"],\n[\"9fb2\",\"\u9151\uD863\uDE97\u637F\uD85B\uDD23\u6ACA\u5611\u918E\u757A\u6285\uD840\uDFFC\u734F\u7C70\uD857\uDC21\uD84F\uDCFD\"],\n[\"9fc1\",\"\uD852\uDD19\u76D6\u9B9D\u4E2A\uD843\uDCD4\u83BE\u8842\"],\n[\"9fc9\",\"\u5C4A\u69C0\u50ED\u577A\u521F\u5DF5\u4ECE\u6C31\uD840\uDDF2\u4F39\u549C\u54DA\u529A\u8D82\u35FE\u5F0C\u35F3\"],\n[\"9fdb\",\"\u6B52\u917C\u9FA5\u9B97\u982E\u98B4\u9ABA\u9EA8\u9E84\u717A\u7B14\"],\n[\"9fe7\",\"\u6BFA\u8818\u7F78\"],\n[\"9feb\",\"\u5620\uD869\uDE4A\u8E77\u9F53\"],\n[\"9ff0\",\"\u8DD4\u8E4F\u9E1C\u8E01\u6282\uD860\uDF7D\u8E28\u8E75\u7AD3\uD852\uDE77\u7A3E\u78D8\u6CEA\u8A67\u7607\"],\n[\"a040\",\"\uD862\uDE5A\u9F26\u6CCE\u87D6\u75C3\uD868\uDEB2\u7853\uD87E\uDC40\u8D0C\u72E2\u7371\u8B2D\u7302\u74F1\u8CEB\uD852\uDEBB\u862F\u5FBA\u88A0\u44B7\"],\n[\"a055\",\"\uD846\uDC3B\uD85B\uDE05\"],\n[\"a058\",\"\u8A7E\uD849\uDD1B\"],\n[\"a05b\",\"\u60FD\u7667\u9AD7\u9D44\u936E\u9B8F\u87F5\"],\n[\"a063\",\"\u880F\u8CF7\u732C\u9721\u9BB0\u35D6\u72B2\u4C07\u7C51\u994A\uD858\uDD59\u6159\u4C04\u9E96\u617D\"],\n[\"a073\",\"\u575F\u616F\u62A6\u6239\u62CE\u3A5C\u61E2\u53AA\uD84C\uDFF5\u6364\u6802\u35D2\"],\n[\"a0a1\",\"\u5D57\uD862\uDFC2\u8FDA\uD863\uDE39\"],\n[\"a0a6\",\"\u50D9\uD847\uDD46\u7906\u5332\u9638\uD843\uDF3B\u4065\"],\n[\"a0ae\",\"\u77FE\"],\n[\"a0b0\",\"\u7CC2\uD857\uDF1A\u7CDA\u7A2D\u8066\u8063\u7D4D\u7505\u74F2\u8994\u821A\u670C\u8062\uD85D\uDC86\u805B\u74F0\u8103\u7724\u8989\uD859\uDFCC\u7553\uD85B\uDED1\u87A9\u87CE\u81C8\u878C\u8A49\u8CAD\u8B43\u772B\u74F8\u84DA\u3635\u69B2\u8DA6\"],\n[\"a0d4\",\"\u89A9\u7468\u6DB9\u87C1\uD850\uDC11\u74E7\u3DDB\u7176\u60A4\u619C\u3CD1\u7162\u6077\"],\n[\"a0e2\",\"\u7F71\uD862\uDF2D\u7250\u60E9\u4B7E\u5220\u3C18\uD84F\uDCC7\uD857\uDED7\uD85D\uDE56\uD855\uDD31\uD846\uDD44\uD844\uDEFE\uD866\uDD03\uD85B\uDDDC\uD85C\uDCAD\u5CC1\uD858\uDDAD\uD862\uDE0F\uD84D\uDE77\uD840\uDCEE\uD85A\uDC46\uD853\uDF0E\u4562\u5B1F\uD858\uDF4C\u9F50\u9EA6\uD858\uDE6B\"],\n[\"a3c0\",\"\u2400\",31,\"\u2421\"],\n[\"c6a1\",\"\u2460\",9,\"\u2474\",9,\"\u2170\",9,\"\u4E36\u4E3F\u4E85\u4EA0\u5182\u5196\u51AB\u52F9\u5338\u5369\u53B6\u590A\u5B80\u5DDB\u2F33\u5E7F\u5EF4\u5F50\u5F61\u6534\u65E0\u7592\u7676\u8FB5\u96B6\u00A8\u02C6\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\uFF3B\uFF3D\u273D\u3041\",23],\n[\"c740\",\"\u3059\",58,\"\u30A1\u30A2\u30A3\u30A4\"],\n[\"c7a1\",\"\u30A5\",81,\"\u0410\",5,\"\u0401\u0416\",4],\n[\"c840\",\"\u041B\",26,\"\u0451\u0436\",25,\"\u21E7\u21B8\u21B9\u31CF\uD840\uDCCC\u4E5A\uD840\uDC8A\u5202\u4491\"],\n[\"c8a1\",\"\u9FB0\u5188\u9FB1\uD85D\uDE07\"],\n[\"c8cd\",\"\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u309B\u309C\u2E80\u2E84\u2E86\u2E87\u2E88\u2E8A\u2E8C\u2E8D\u2E95\u2E9C\u2E9D\u2EA5\u2EA7\u2EAA\u2EAC\u2EAE\u2EB6\u2EBC\u2EBE\u2EC6\u2ECA\u2ECC\u2ECD\u2ECF\u2ED6\u2ED7\u2EDE\u2EE3\"],\n[\"c8f5\",\"\u0283\u0250\u025B\u0254\u0275\u0153\u00F8\u014B\u028A\u026A\"],\n[\"f9fe\",\"\uFFED\"],\n[\"fa40\",\"\uD841\uDD47\u92DB\uD841\uDDDF\uD84F\uDFC5\u854C\u42B5\u73EF\u51B5\u3649\uD852\uDD42\uD862\uDDE4\u9344\uD846\uDDDB\u82EE\uD84F\uDCC8\u783C\u6744\u62DF\uD852\uDD33\uD862\uDDAA\uD840\uDEA0\uD85A\uDFB3\uD844\uDF05\u4FAB\uD849\uDCED\u5008\uD85B\uDD29\uD85E\uDE84\uD84D\uDE00\uD852\uDEB1\uD849\uDD13\u5029\uD840\uDF7E\u5FA4\uD840\uDF80\uD840\uDF47\u6EDB\uD841\uDC1F\u507D\u5101\u347A\u510E\u986C\u3743\u8416\uD852\uDDA4\uD841\uDC87\u5160\uD84C\uDFB4\u516A\uD842\uDFFF\uD848\uDCFC\uD840\uDEE5\uD849\uDD30\uD841\uDD8E\uD84C\uDE33\uD846\uDD83\u5B82\u877D\uD841\uDDB3\uD84F\uDC99\u51B2\u51B8\"],\n[\"faa1\",\"\u9D34\u51C9\u51CF\u51D1\u3CDC\u51D3\uD852\uDEA6\u51B3\u51E2\u5342\u51ED\u83CD\u693E\uD84D\uDF2D\u5F7B\u520B\u5226\u523C\u52B5\u5257\u5294\u52B9\u52C5\u7C15\u8542\u52E0\u860D\uD85A\uDF13\u5305\uD862\uDEDE\u5549\u6ED9\uD84F\uDF80\uD842\uDD54\uD84F\uDFEC\u5333\u5344\uD842\uDFE2\u6CCB\uD845\uDF26\u681B\u73D5\u604A\u3EAA\u38CC\uD845\uDEE8\u71DD\u44A2\u536D\u5374\uD861\uDEAB\u537E\u537F\uD845\uDD96\uD845\uDE13\u77E6\u5393\uD862\uDE9B\u53A0\u53AB\u53AE\u73A7\uD855\uDF72\u3F59\u739C\u53C1\u53C5\u6C49\u4E49\u57FE\u53D9\u3AAB\uD842\uDF8F\u53E0\uD84F\uDFEB\uD84B\uDDA3\u53F6\uD843\uDC77\u5413\u7079\u552B\u6657\u6D5B\u546D\uD85A\uDF53\uD843\uDD74\u555D\u548F\u54A4\u47A6\uD845\uDF0D\uD843\uDEDD\u3DB4\uD843\uDD4D\"],\n[\"fb40\",\"\uD862\uDDBC\uD849\uDE98\u5547\u4CED\u542F\u7417\u5586\u55A9\u5605\uD846\uDCD7\uD850\uDC3A\u4552\uD851\uDC35\u66B3\uD844\uDCB4\u5637\u66CD\uD84C\uDE8A\u66A4\u66AD\u564D\u564F\u78F1\u56F1\u9787\u53FE\u5700\u56EF\u56ED\uD862\uDF66\u3623\uD844\uDE4F\u5746\uD850\uDDA5\u6C6E\u708B\u5742\u36B1\uD85B\uDC7E\u57E6\uD845\uDC16\u5803\uD845\uDC54\uD850\uDF63\u5826\uD852\uDFF5\u585C\u58AA\u3561\u58E0\u58DC\uD844\uDE3C\u58FB\u5BFF\u5743\uD868\uDD50\uD850\uDE78\u93D3\u35A1\u591F\u68A6\u36C3\u6E59\"],\n[\"fba1\",\"\uD845\uDE3E\u5A24\u5553\uD845\uDE92\u8505\u59C9\uD843\uDD4E\uD85B\uDC81\uD85B\uDD2A\uD845\uDFDC\u59D9\uD845\uDFFB\uD845\uDFB2\uD85B\uDDA6\u6D71\uD846\uDC28\uD845\uDED5\u59F9\uD85B\uDE45\u5AAB\u5A63\u36E6\uD852\uDDA9\u5A77\u3708\u5A96\u7465\u5AD3\uD85B\uDFA1\uD849\uDD54\u3D85\uD846\uDD11\u3732\uD845\uDEB8\u5E83\u52D0\u5B76\u6588\u5B7C\uD85E\uDE0E\u4004\u485D\uD840\uDE04\u5BD5\u6160\uD846\uDE34\uD856\uDDCC\uD841\uDDA5\u5BF3\u5B9D\u4D10\u5C05\uD846\uDF44\u5C13\u73CE\u5C14\uD847\uDCA5\uD85A\uDF28\u5C49\u48DD\u5C85\u5CE9\u5CEF\u5D8B\uD847\uDDF9\uD847\uDE37\u5D10\u5D18\u5D46\uD847\uDEA4\u5CBA\u5DD7\u82FC\u382D\uD852\uDD01\uD848\uDC49\uD848\uDD73\u8287\u3836\u3BC2\u5E2E\u6A8A\u5E75\u5E7A\uD851\uDCBC\uD843\uDCD3\u53A6\u4EB7\u5ED0\u53A8\uD845\uDF71\u5E09\u5EF4\uD861\uDC82\"],\n[\"fc40\",\"\u5EF9\u5EFB\u38A0\u5EFC\u683E\u941B\u5F0D\uD840\uDDC1\uD87E\uDC94\u3ADE\u48AE\uD844\uDF3A\u5F3A\uD85A\uDC88\uD848\uDFD0\u5F58\uD849\uDC71\u5F63\u97BD\uD85B\uDE6E\u5F72\u9340\uD862\uDE36\u5FA7\u5DB6\u3D5F\uD854\uDE50\uD847\uDF6A\uD85C\uDCF8\uD849\uDE68\u91D6\uD840\uDE9E\uD862\uDE29\u6031\u6685\uD846\uDC77\u3963\u3DC7\u3639\u5790\uD849\uDFB4\u7971\u3E40\u609E\u60A4\u60B3\uD852\uDD82\uD852\uDD8F\uD85E\uDE53\u74A4\u50E1\u5AA0\u6164\u8424\u6142\uD87E\uDCA6\uD85B\uDED2\u6181\u51F4\uD841\uDE56\u6187\u5BAA\uD84F\uDFB7\"],\n[\"fca1\",\"\uD84A\uDC5F\u61D3\uD862\uDF9D\uD866\uDD5D\u61D0\u3932\uD84A\uDD80\uD84A\uDCC1\u6023\u615C\u651E\u638B\uD840\uDD18\u62C5\uD845\uDF70\u62D5\uD84B\uDE0D\u636C\uD852\uDDDF\u3A17\u6438\u63F8\uD844\uDF8E\uD845\uDFFC\u6490\u6F8A\uD84B\uDE36\u9814\uD850\uDC8C\uD855\uDF1D\u64E1\u64E5\u947B\u3A66\u643A\u3A57\u654D\u6F16\uD852\uDE28\uD852\uDE23\u6585\u656D\u655F\uD84C\uDC7E\u65B5\uD852\uDD40\u4B37\u65D1\u40D8\uD846\uDC29\u65E0\u65E3\u5FDF\uD84D\uDC00\u6618\uD84C\uDDF7\uD84C\uDDF8\u6644\uD84C\uDDA4\uD84C\uDDA5\u664B\uD843\uDE75\u6667\uD854\uDDE6\u6673\u6674\uD847\uDE3D\uD84C\uDE31\uD861\uDDF4\uD84C\uDDC8\uD854\uDF13\u77C5\uD84A\uDCF7\u99A4\u6702\uD850\uDF9C\uD852\uDE21\u3B2B\u69FA\uD84D\uDFC2\u675E\u6767\u6762\uD850\uDDCD\uD864\uDCED\u67D7\u44E9\u6822\u6E50\u923C\u6801\uD84C\uDFE6\uD85B\uDDA0\u685D\"],\n[\"fd40\",\"\uD84D\uDC6F\u69E1\u6A0B\uD862\uDEDF\u6973\u68C3\uD84D\uDDCD\u6901\u6900\u3D32\u3A01\uD84D\uDE3C\u3B80\u67AC\u6961\uD862\uDE4A\u42FC\u6936\u6998\u3BA1\uD840\uDFC9\u8363\u5090\u69F9\uD84D\uDE59\uD848\uDD2A\u6A45\uD84D\uDF03\u6A9D\u3BF3\u67B1\u6AC8\uD864\uDD9C\u3C0D\u6B1D\uD842\uDD23\u60DE\u6B35\u6B74\uD849\uDFCD\u6EB5\uD84E\uDEDB\uD840\uDFB5\uD846\uDD58\u3740\u5421\uD84E\uDF5A\u6BE1\uD84F\uDEFC\u6BDC\u6C37\uD849\uDC8B\uD852\uDCF1\uD85A\uDF51\u6C5A\u8226\u6C79\uD84F\uDDBC\u44C5\uD84F\uDDBD\uD850\uDDA4\uD852\uDD0C\uD852\uDD00\"],\n[\"fda1\",\"\uD84F\uDCC9\u36E5\u3CEB\uD843\uDD32\u9B83\uD84C\uDDF9\uD849\uDC91\u7F8F\u6837\uD85B\uDD25\uD85B\uDDA1\uD85B\uDDEB\u6D96\u6D5C\u6E7C\u6F04\uD852\uDD7F\uD850\uDC85\uD85B\uDE72\u8533\uD85B\uDF74\u51C7\u6C9C\u6E1D\u842E\uD862\uDF21\u6E2F\uD84F\uDE2F\u7453\uD84F\uDF82\u79CC\u6E4F\u5A91\uD84C\uDC4B\u6FF8\u370D\u6F9D\uD84F\uDE30\u6EFA\uD845\uDC97\uD850\uDC3D\u4555\u93F0\u6F44\u6F5C\u3D4E\u6F74\uD864\uDD70\u3D3B\u6F9F\uD850\uDD44\u6FD3\uD850\uDC91\uD850\uDD55\uD850\uDC39\uD84F\uDFF0\uD84F\uDFB4\uD850\uDD3F\u51DF\uD850\uDD56\uD850\uDD57\uD850\uDD40\uD858\uDDDD\u704B\u707E\u70A7\u7081\u70CC\u70D5\u70D6\u70DF\u4104\u3DE8\u71B4\u7196\uD850\uDE77\u712B\u7145\u5A88\u714A\u716E\u5C9C\uD850\uDF65\u714F\u9362\uD850\uDEC1\u712C\uD851\uDC5A\uD852\uDE27\uD852\uDE22\u71BA\uD862\uDFE8\u70BD\u720E\"],\n[\"fe40\",\"\u9442\u7215\u5911\u9443\u7224\u9341\uD855\uDE05\u722E\u7240\uD852\uDD74\u68BD\u7255\u7257\u3E55\uD84C\uDC44\u680D\u6F3D\u7282\u732A\u732B\uD852\uDC23\uD862\uDC2B\u48ED\uD862\uDC04\u7328\u732E\u73CF\u73AA\uD843\uDC3A\uD85A\uDE2E\u73C9\u7449\uD850\uDDE2\uD845\uDEE7\uD852\uDE24\u6623\u36C5\uD852\uDDB7\uD852\uDD8D\uD852\uDDFB\u73F7\u7415\u6903\uD852\uDE26\u7439\uD841\uDDC3\u3ED7\u745C\uD84A\uDCAD\u7460\uD863\uDEB2\u7447\u73E4\u7476\u83B9\u746C\u3730\u7474\u93F1\u6A2C\u7482\u4953\uD852\uDE8C\"],\n[\"fea1\",\"\uD850\uDD5F\uD852\uDE79\uD862\uDF8F\u5B46\uD863\uDC03\uD846\uDC9E\u74C8\uD846\uDD88\u750E\u74E9\u751E\uD863\uDED9\uD846\uDE4B\u5BD7\uD863\uDEAC\u9385\u754D\u754A\u7567\u756E\uD853\uDF82\u3F04\uD853\uDD13\u758E\u745D\u759E\u75B4\u7602\u762C\u7651\u764F\u766F\u7676\uD858\uDFF5\u7690\u81EF\u37F8\uD85A\uDD11\uD85A\uDD0E\u76A1\u76A5\u76B7\u76CC\uD85B\uDF9F\u8462\uD854\uDC9D\uD854\uDD7D\uD847\uDE1C\u771E\u7726\u7740\u64AF\uD854\uDE20\u7758\uD84C\uDEAC\u77AF\uD862\uDD64\uD862\uDD68\uD845\uDEC1\u77F4\u7809\uD844\uDF76\uD852\uDE12\u68CA\u78AF\u78C7\u78D3\u96A5\u792E\uD855\uDDE0\u78D7\u7934\u78B1\uD85D\uDE0C\u8FB8\u8884\uD862\uDF2B\uD858\uDC83\uD849\uDE1C\u7986\u8900\u6902\u7980\uD856\uDC57\u799D\uD85E\uDF39\u793C\u79A9\u6E2A\uD85C\uDD26\u3EA8\u79C6\uD864\uDD0D\u79D4\"]\n]\n", "\"use strict\"\n\n// Description of supported double byte encodings and aliases.\n// Tables are not require()-d until they are needed to speed up library load.\n// require()-s are direct to support Browserify.\n\nmodule.exports = {\n\n  // == Japanese/ShiftJIS ====================================================\n  // All japanese encodings are based on JIS X set of standards:\n  // JIS X 0201 - Single-byte encoding of ASCII + \u00A5 + Kana chars at 0xA1-0xDF.\n  // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes.\n  //              Has several variations in 1978, 1983, 1990 and 1997.\n  // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead.\n  // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233.\n  //              2 planes, first is superset of 0208, second - revised 0212.\n  //              Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx)\n\n  // Byte encodings are:\n  //  * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte\n  //               encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC.\n  //               Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI.\n  //  * EUC-JP:    Up to 3 bytes per character. Used mostly on *nixes.\n  //               0x00-0x7F       - lower part of 0201\n  //               0x8E, 0xA1-0xDF - upper part of 0201\n  //               (0xA1-0xFE)x2   - 0208 plane (94x94).\n  //               0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94).\n  //  * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon.\n  //               Used as-is in ISO2022 family.\n  //  * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII,\n  //                0201-1976 Roman, 0208-1978, 0208-1983.\n  //  * ISO2022-JP-1: Adds esc seq for 0212-1990.\n  //  * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7.\n  //  * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2.\n  //  * ISO2022-JP-2004: Adds 0213-2004 Plane 1.\n  //\n  // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes.\n  //\n  // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html\n\n  shiftjis: {\n    type: \"_dbcs\",\n    table: function () { return require(\"./tables/shiftjis.json\") },\n    encodeAdd: { \"\\u00a5\": 0x5C, \"\\u203E\": 0x7E },\n    encodeSkipVals: [{ from: 0xED40, to: 0xF940 }]\n  },\n  csshiftjis: \"shiftjis\",\n  mskanji: \"shiftjis\",\n  sjis: \"shiftjis\",\n  windows31j: \"shiftjis\",\n  ms31j: \"shiftjis\",\n  xsjis: \"shiftjis\",\n  windows932: \"shiftjis\",\n  ms932: \"shiftjis\",\n  932: \"shiftjis\",\n  cp932: \"shiftjis\",\n\n  eucjp: {\n    type: \"_dbcs\",\n    table: function () { return require(\"./tables/eucjp.json\") },\n    encodeAdd: { \"\\u00a5\": 0x5C, \"\\u203E\": 0x7E }\n  },\n\n  // TODO: KDDI extension to Shift_JIS\n  // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes.\n  // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars.\n\n  // == Chinese/GBK ==========================================================\n  // http://en.wikipedia.org/wiki/GBK\n  // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder\n\n  // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936\n  gb2312: \"cp936\",\n  gb231280: \"cp936\",\n  gb23121980: \"cp936\",\n  csgb2312: \"cp936\",\n  csiso58gb231280: \"cp936\",\n  euccn: \"cp936\",\n\n  // Microsoft's CP936 is a subset and approximation of GBK.\n  windows936: \"cp936\",\n  ms936: \"cp936\",\n  936: \"cp936\",\n  cp936: {\n    type: \"_dbcs\",\n    table: function () { return require(\"./tables/cp936.json\") }\n  },\n\n  // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other.\n  gbk: {\n    type: \"_dbcs\",\n    table: function () { return require(\"./tables/cp936.json\").concat(require(\"./tables/gbk-added.json\")) }\n  },\n  xgbk: \"gbk\",\n  isoir58: \"gbk\",\n\n  // GB18030 is an algorithmic extension of GBK.\n  // Main source: https://www.w3.org/TR/encoding/#gbk-encoder\n  // http://icu-project.org/docs/papers/gb18030.html\n  // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml\n  // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0\n  gb18030: {\n    type: \"_dbcs\",\n    table: function () { return require(\"./tables/cp936.json\").concat(require(\"./tables/gbk-added.json\")) },\n    gb18030: function () { return require(\"./tables/gb18030-ranges.json\") },\n    encodeSkipVals: [0x80],\n    encodeAdd: { \"\u20AC\": 0xA2E3 }\n  },\n\n  chinese: \"gb18030\",\n\n  // == Korean ===============================================================\n  // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same.\n  windows949: \"cp949\",\n  ms949: \"cp949\",\n  949: \"cp949\",\n  cp949: {\n    type: \"_dbcs\",\n    table: function () { return require(\"./tables/cp949.json\") }\n  },\n\n  cseuckr: \"cp949\",\n  csksc56011987: \"cp949\",\n  euckr: \"cp949\",\n  isoir149: \"cp949\",\n  korean: \"cp949\",\n  ksc56011987: \"cp949\",\n  ksc56011989: \"cp949\",\n  ksc5601: \"cp949\",\n\n  // == Big5/Taiwan/Hong Kong ================================================\n  // There are lots of tables for Big5 and cp950. Please see the following links for history:\n  // http://moztw.org/docs/big5/  http://www.haible.de/bruno/charsets/conversion-tables/Big5.html\n  // Variations, in roughly number of defined chars:\n  //  * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT\n  //  * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/\n  //  * Big5-2003 (Taiwan standard) almost superset of cp950.\n  //  * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers.\n  //  * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard.\n  //    many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years.\n  //    Plus, it has 4 combining sequences.\n  //    Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299\n  //    because big5-hkscs is the only encoding to include astral characters in non-algorithmic way.\n  //    Implementations are not consistent within browsers; sometimes labeled as just big5.\n  //    MS Internet Explorer switches from big5 to big5-hkscs when a patch applied.\n  //    Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31\n  //    In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s.\n  //    Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt\n  //                   http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt\n  //\n  // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder\n  // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong.\n\n  windows950: \"cp950\",\n  ms950: \"cp950\",\n  950: \"cp950\",\n  cp950: {\n    type: \"_dbcs\",\n    table: function () { return require(\"./tables/cp950.json\") }\n  },\n\n  // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus.\n  big5: \"big5hkscs\",\n  big5hkscs: {\n    type: \"_dbcs\",\n    table: function () { return require(\"./tables/cp950.json\").concat(require(\"./tables/big5-added.json\")) },\n    encodeSkipVals: [\n      // Although Encoding Standard says we should avoid encoding to HKSCS area (See Step 1 of\n      // https://encoding.spec.whatwg.org/#index-big5-pointer), we still do it to increase compatibility with ICU.\n      // But if a single unicode point can be encoded both as HKSCS and regular Big5, we prefer the latter.\n      0x8e69, 0x8e6f, 0x8e7e, 0x8eab, 0x8eb4, 0x8ecd, 0x8ed0, 0x8f57, 0x8f69, 0x8f6e, 0x8fcb, 0x8ffe,\n      0x906d, 0x907a, 0x90c4, 0x90dc, 0x90f1, 0x91bf, 0x92af, 0x92b0, 0x92b1, 0x92b2, 0x92d1, 0x9447, 0x94ca,\n      0x95d9, 0x96fc, 0x9975, 0x9b76, 0x9b78, 0x9b7b, 0x9bc6, 0x9bde, 0x9bec, 0x9bf6, 0x9c42, 0x9c53, 0x9c62,\n      0x9c68, 0x9c6b, 0x9c77, 0x9cbc, 0x9cbd, 0x9cd0, 0x9d57, 0x9d5a, 0x9dc4, 0x9def, 0x9dfb, 0x9ea9, 0x9eef,\n      0x9efd, 0x9f60, 0x9fcb, 0xa077, 0xa0dc, 0xa0df, 0x8fcc, 0x92c8, 0x9644, 0x96ed,\n\n      // Step 2 of https://encoding.spec.whatwg.org/#index-big5-pointer: Use last pointer for U+2550, U+255E, U+2561, U+256A, U+5341, or U+5345\n      0xa2a4, 0xa2a5, 0xa2a7, 0xa2a6, 0xa2cc, 0xa2ce\n    ]\n  },\n\n  cnbig5: \"big5hkscs\",\n  csbig5: \"big5hkscs\",\n  xxbig5: \"big5hkscs\"\n}\n", "\"use strict\"\n\nvar mergeModules = require(\"../lib/helpers/merge-exports\")\n\n// Update this array if you add/rename/remove files in this directory.\n// We support Browserify by skipping automatic module discovery and requiring modules directly.\nvar modules = [\n  require(\"./internal\"),\n  require(\"./utf32\"),\n  require(\"./utf16\"),\n  require(\"./utf7\"),\n  require(\"./sbcs-codec\"),\n  require(\"./sbcs-data\"),\n  require(\"./sbcs-data-generated\"),\n  require(\"./dbcs-codec\"),\n  require(\"./dbcs-data\")\n]\n\n// Put all encoding/alias/codec definitions to single object and export it.\nfor (var i = 0; i < modules.length; i++) {\n  var module = modules[i]\n  mergeModules(exports, module)\n}\n", "\"use strict\"\n\nvar Buffer = require(\"safer-buffer\").Buffer\n\n// NOTE: Due to 'stream' module being pretty large (~100Kb, significant in browser environments),\n// we opt to dependency-inject it instead of creating a hard dependency.\nmodule.exports = function (streamModule) {\n  var Transform = streamModule.Transform\n\n  // == Encoder stream =======================================================\n\n  function IconvLiteEncoderStream (conv, options) {\n    this.conv = conv\n    options = options || {}\n    options.decodeStrings = false // We accept only strings, so we don't need to decode them.\n    Transform.call(this, options)\n  }\n\n  IconvLiteEncoderStream.prototype = Object.create(Transform.prototype, {\n    constructor: { value: IconvLiteEncoderStream }\n  })\n\n  IconvLiteEncoderStream.prototype._transform = function (chunk, encoding, done) {\n    if (typeof chunk !== \"string\") {\n      return done(new Error(\"Iconv encoding stream needs strings as its input.\"))\n    }\n\n    try {\n      var res = this.conv.write(chunk)\n      if (res && res.length) this.push(res)\n      done()\n    } catch (e) {\n      done(e)\n    }\n  }\n\n  IconvLiteEncoderStream.prototype._flush = function (done) {\n    try {\n      var res = this.conv.end()\n      if (res && res.length) this.push(res)\n      done()\n    } catch (e) {\n      done(e)\n    }\n  }\n\n  IconvLiteEncoderStream.prototype.collect = function (cb) {\n    var chunks = []\n    this.on(\"error\", cb)\n    this.on(\"data\", function (chunk) { chunks.push(chunk) })\n    this.on(\"end\", function () {\n      cb(null, Buffer.concat(chunks))\n    })\n    return this\n  }\n\n  // == Decoder stream =======================================================\n\n  function IconvLiteDecoderStream (conv, options) {\n    this.conv = conv\n    options = options || {}\n    options.encoding = this.encoding = \"utf8\" // We output strings.\n    Transform.call(this, options)\n  }\n\n  IconvLiteDecoderStream.prototype = Object.create(Transform.prototype, {\n    constructor: { value: IconvLiteDecoderStream }\n  })\n\n  IconvLiteDecoderStream.prototype._transform = function (chunk, encoding, done) {\n    if (!Buffer.isBuffer(chunk) && !(chunk instanceof Uint8Array)) { return done(new Error(\"Iconv decoding stream needs buffers as its input.\")) }\n    try {\n      var res = this.conv.write(chunk)\n      if (res && res.length) this.push(res, this.encoding)\n      done()\n    } catch (e) {\n      done(e)\n    }\n  }\n\n  IconvLiteDecoderStream.prototype._flush = function (done) {\n    try {\n      var res = this.conv.end()\n      if (res && res.length) this.push(res, this.encoding)\n      done()\n    } catch (e) {\n      done(e)\n    }\n  }\n\n  IconvLiteDecoderStream.prototype.collect = function (cb) {\n    var res = \"\"\n    this.on(\"error\", cb)\n    this.on(\"data\", function (chunk) { res += chunk })\n    this.on(\"end\", function () {\n      cb(null, res)\n    })\n    return this\n  }\n\n  return {\n    IconvLiteEncoderStream: IconvLiteEncoderStream,\n    IconvLiteDecoderStream: IconvLiteDecoderStream\n  }\n}\n", "\"use strict\"\n\nvar Buffer = require(\"safer-buffer\").Buffer\n\nvar bomHandling = require(\"./bom-handling\")\nvar mergeModules = require(\"./helpers/merge-exports\")\n\n// All codecs and aliases are kept here, keyed by encoding name/alias.\n// They are lazy loaded in `iconv.getCodec` from `encodings/index.js`.\n// Cannot initialize with { __proto__: null } because Boolean({ __proto__: null }) === true\nmodule.exports.encodings = null\n\n// Characters emitted in case of error.\nmodule.exports.defaultCharUnicode = \"\uFFFD\"\nmodule.exports.defaultCharSingleByte = \"?\"\n\n// Public API.\nmodule.exports.encode = function encode (str, encoding, options) {\n  str = \"\" + (str || \"\") // Ensure string.\n\n  var encoder = module.exports.getEncoder(encoding, options)\n\n  var res = encoder.write(str)\n  var trail = encoder.end()\n\n  return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res\n}\n\nmodule.exports.decode = function decode (buf, encoding, options) {\n  if (typeof buf === \"string\") {\n    if (!module.exports.skipDecodeWarning) {\n      console.error(\"Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding\")\n      module.exports.skipDecodeWarning = true\n    }\n\n    buf = Buffer.from(\"\" + (buf || \"\"), \"binary\") // Ensure buffer.\n  }\n\n  var decoder = module.exports.getDecoder(encoding, options)\n\n  var res = decoder.write(buf)\n  var trail = decoder.end()\n\n  return trail ? (res + trail) : res\n}\n\nmodule.exports.encodingExists = function encodingExists (enc) {\n  try {\n    module.exports.getCodec(enc)\n    return true\n  } catch (e) {\n    return false\n  }\n}\n\n// Legacy aliases to convert functions\nmodule.exports.toEncoding = module.exports.encode\nmodule.exports.fromEncoding = module.exports.decode\n\n// Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache.\nmodule.exports._codecDataCache = { __proto__: null }\n\nmodule.exports.getCodec = function getCodec (encoding) {\n  if (!module.exports.encodings) {\n    var raw = require(\"../encodings\")\n    // TODO: In future versions when old nodejs support is removed can use object.assign\n    module.exports.encodings = { __proto__: null } // Initialize as empty object.\n    mergeModules(module.exports.encodings, raw)\n  }\n\n  // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n  var enc = module.exports._canonicalizeEncoding(encoding)\n\n  // Traverse iconv.encodings to find actual codec.\n  var codecOptions = {}\n  while (true) {\n    var codec = module.exports._codecDataCache[enc]\n\n    if (codec) { return codec }\n\n    var codecDef = module.exports.encodings[enc]\n\n    switch (typeof codecDef) {\n      case \"string\": // Direct alias to other encoding.\n        enc = codecDef\n        break\n\n      case \"object\": // Alias with options. Can be layered.\n        for (var key in codecDef) { codecOptions[key] = codecDef[key] }\n\n        if (!codecOptions.encodingName) { codecOptions.encodingName = enc }\n\n        enc = codecDef.type\n        break\n\n      case \"function\": // Codec itself.\n        if (!codecOptions.encodingName) { codecOptions.encodingName = enc }\n\n        // The codec function must load all tables and return object with .encoder and .decoder methods.\n        // It'll be called only once (for each different options object).\n        //\n        codec = new codecDef(codecOptions, module.exports)\n\n        module.exports._codecDataCache[codecOptions.encodingName] = codec // Save it to be reused later.\n        return codec\n\n      default:\n        throw new Error(\"Encoding not recognized: '\" + encoding + \"' (searched as: '\" + enc + \"')\")\n    }\n  }\n}\n\nmodule.exports._canonicalizeEncoding = function (encoding) {\n  // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n  return (\"\" + encoding).toLowerCase().replace(/:\\d{4}$|[^0-9a-z]/g, \"\")\n}\n\nmodule.exports.getEncoder = function getEncoder (encoding, options) {\n  var codec = module.exports.getCodec(encoding)\n  var encoder = new codec.encoder(options, codec)\n\n  if (codec.bomAware && options && options.addBOM) { encoder = new bomHandling.PrependBOM(encoder, options) }\n\n  return encoder\n}\n\nmodule.exports.getDecoder = function getDecoder (encoding, options) {\n  var codec = module.exports.getCodec(encoding)\n  var decoder = new codec.decoder(options, codec)\n\n  if (codec.bomAware && !(options && options.stripBOM === false)) { decoder = new bomHandling.StripBOM(decoder, options) }\n\n  return decoder\n}\n\n// Streaming API\n// NOTE: Streaming API naturally depends on 'stream' module from Node.js. Unfortunately in browser environments this module can add\n// up to 100Kb to the output bundle. To avoid unnecessary code bloat, we don't enable Streaming API in browser by default.\n// If you would like to enable it explicitly, please add the following code to your app:\n// > iconv.enableStreamingAPI(require('stream'));\nmodule.exports.enableStreamingAPI = function enableStreamingAPI (streamModule) {\n  if (module.exports.supportsStreams) { return }\n\n  // Dependency-inject stream module to create IconvLite stream classes.\n  var streams = require(\"./streams\")(streamModule)\n\n  // Not public API yet, but expose the stream classes.\n  module.exports.IconvLiteEncoderStream = streams.IconvLiteEncoderStream\n  module.exports.IconvLiteDecoderStream = streams.IconvLiteDecoderStream\n\n  // Streaming API.\n  module.exports.encodeStream = function encodeStream (encoding, options) {\n    return new module.exports.IconvLiteEncoderStream(module.exports.getEncoder(encoding, options), options)\n  }\n\n  module.exports.decodeStream = function decodeStream (encoding, options) {\n    return new module.exports.IconvLiteDecoderStream(module.exports.getDecoder(encoding, options), options)\n  }\n\n  module.exports.supportsStreams = true\n}\n\n// Enable Streaming API automatically if 'stream' module is available and non-empty (the majority of environments).\nvar streamModule\ntry {\n  streamModule = require(\"stream\")\n} catch (e) {}\n\nif (streamModule && streamModule.Transform) {\n  module.exports.enableStreamingAPI(streamModule)\n} else {\n  // In rare cases where 'stream' module is not available by default, throw a helpful exception.\n  module.exports.encodeStream = module.exports.decodeStream = function () {\n    throw new Error(\"iconv-lite Streaming API is not enabled. Use iconv.enableStreamingAPI(require('stream')); to enable it.\")\n  }\n}\n\n// Some environments, such as browsers, may not load JavaScript files as UTF-8\n// eslint-disable-next-line no-constant-condition\nif (\"\u0100\" !== \"\\u0100\") {\n  console.error(\"iconv-lite warning: js files use non-utf8 encoding. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info.\")\n}\n", "/*!\n * unpipe\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = unpipe\n\n/**\n * Determine if there are Node.js pipe-like data listeners.\n * @private\n */\n\nfunction hasPipeDataListeners(stream) {\n  var listeners = stream.listeners('data')\n\n  for (var i = 0; i < listeners.length; i++) {\n    if (listeners[i].name === 'ondata') {\n      return true\n    }\n  }\n\n  return false\n}\n\n/**\n * Unpipe a stream from all destinations.\n *\n * @param {object} stream\n * @public\n */\n\nfunction unpipe(stream) {\n  if (!stream) {\n    throw new TypeError('argument stream is required')\n  }\n\n  if (typeof stream.unpipe === 'function') {\n    // new-style\n    stream.unpipe()\n    return\n  }\n\n  // Node.js 0.8 hack\n  if (!hasPipeDataListeners(stream)) {\n    return\n  }\n\n  var listener\n  var listeners = stream.listeners('close')\n\n  for (var i = 0; i < listeners.length; i++) {\n    listener = listeners[i]\n\n    if (listener.name !== 'cleanup' && listener.name !== 'onclose') {\n      continue\n    }\n\n    // invoke the listener\n    listener.call(stream)\n  }\n}\n", "/*!\n * raw-body\n * Copyright(c) 2013-2014 Jonathan Ong\n * Copyright(c) 2014-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar asyncHooks = tryRequireAsyncHooks()\nvar bytes = require('bytes')\nvar createError = require('http-errors')\nvar iconv = require('iconv-lite')\nvar unpipe = require('unpipe')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = getRawBody\n\n/**\n * Module variables.\n * @private\n */\n\nvar ICONV_ENCODING_MESSAGE_REGEXP = /^Encoding not recognized: /\n\n/**\n * Get the decoder for a given encoding.\n *\n * @param {string} encoding\n * @private\n */\n\nfunction getDecoder (encoding) {\n  if (!encoding) return null\n\n  try {\n    return iconv.getDecoder(encoding)\n  } catch (e) {\n    // error getting decoder\n    if (!ICONV_ENCODING_MESSAGE_REGEXP.test(e.message)) throw e\n\n    // the encoding was not found\n    throw createError(415, 'specified encoding unsupported', {\n      encoding: encoding,\n      type: 'encoding.unsupported'\n    })\n  }\n}\n\n/**\n * Get the raw body of a stream (typically HTTP).\n *\n * @param {object} stream\n * @param {object|string|function} [options]\n * @param {function} [callback]\n * @public\n */\n\nfunction getRawBody (stream, options, callback) {\n  var done = callback\n  var opts = options || {}\n\n  // light validation\n  if (stream === undefined) {\n    throw new TypeError('argument stream is required')\n  } else if (typeof stream !== 'object' || stream === null || typeof stream.on !== 'function') {\n    throw new TypeError('argument stream must be a stream')\n  }\n\n  if (options === true || typeof options === 'string') {\n    // short cut for encoding\n    opts = {\n      encoding: options\n    }\n  }\n\n  if (typeof options === 'function') {\n    done = options\n    opts = {}\n  }\n\n  // validate callback is a function, if provided\n  if (done !== undefined && typeof done !== 'function') {\n    throw new TypeError('argument callback must be a function')\n  }\n\n  // require the callback without promises\n  if (!done && !global.Promise) {\n    throw new TypeError('argument callback is required')\n  }\n\n  // get encoding\n  var encoding = opts.encoding !== true\n    ? opts.encoding\n    : 'utf-8'\n\n  // convert the limit to an integer\n  var limit = bytes.parse(opts.limit)\n\n  // convert the expected length to an integer\n  var length = opts.length != null && !isNaN(opts.length)\n    ? parseInt(opts.length, 10)\n    : null\n\n  if (done) {\n    // classic callback style\n    return readStream(stream, encoding, length, limit, wrap(done))\n  }\n\n  return new Promise(function executor (resolve, reject) {\n    readStream(stream, encoding, length, limit, function onRead (err, buf) {\n      if (err) return reject(err)\n      resolve(buf)\n    })\n  })\n}\n\n/**\n * Halt a stream.\n *\n * @param {Object} stream\n * @private\n */\n\nfunction halt (stream) {\n  // unpipe everything from the stream\n  unpipe(stream)\n\n  // pause stream\n  if (typeof stream.pause === 'function') {\n    stream.pause()\n  }\n}\n\n/**\n * Read the data from the stream.\n *\n * @param {object} stream\n * @param {string} encoding\n * @param {number} length\n * @param {number} limit\n * @param {function} callback\n * @public\n */\n\nfunction readStream (stream, encoding, length, limit, callback) {\n  var complete = false\n  var sync = true\n\n  // check the length and limit options.\n  // note: we intentionally leave the stream paused,\n  // so users should handle the stream themselves.\n  if (limit !== null && length !== null && length > limit) {\n    return done(createError(413, 'request entity too large', {\n      expected: length,\n      length: length,\n      limit: limit,\n      type: 'entity.too.large'\n    }))\n  }\n\n  // streams1: assert request encoding is buffer.\n  // streams2+: assert the stream encoding is buffer.\n  //   stream._decoder: streams1\n  //   state.encoding: streams2\n  //   state.decoder: streams2, specifically < 0.10.6\n  var state = stream._readableState\n  if (stream._decoder || (state && (state.encoding || state.decoder))) {\n    // developer error\n    return done(createError(500, 'stream encoding should not be set', {\n      type: 'stream.encoding.set'\n    }))\n  }\n\n  if (typeof stream.readable !== 'undefined' && !stream.readable) {\n    return done(createError(500, 'stream is not readable', {\n      type: 'stream.not.readable'\n    }))\n  }\n\n  var received = 0\n  var decoder\n\n  try {\n    decoder = getDecoder(encoding)\n  } catch (err) {\n    return done(err)\n  }\n\n  var buffer = decoder\n    ? ''\n    : []\n\n  // attach listeners\n  stream.on('aborted', onAborted)\n  stream.on('close', cleanup)\n  stream.on('data', onData)\n  stream.on('end', onEnd)\n  stream.on('error', onEnd)\n\n  // mark sync section complete\n  sync = false\n\n  function done () {\n    var args = new Array(arguments.length)\n\n    // copy arguments\n    for (var i = 0; i < args.length; i++) {\n      args[i] = arguments[i]\n    }\n\n    // mark complete\n    complete = true\n\n    if (sync) {\n      process.nextTick(invokeCallback)\n    } else {\n      invokeCallback()\n    }\n\n    function invokeCallback () {\n      cleanup()\n\n      if (args[0]) {\n        // halt the stream on error\n        halt(stream)\n      }\n\n      callback.apply(null, args)\n    }\n  }\n\n  function onAborted () {\n    if (complete) return\n\n    done(createError(400, 'request aborted', {\n      code: 'ECONNABORTED',\n      expected: length,\n      length: length,\n      received: received,\n      type: 'request.aborted'\n    }))\n  }\n\n  function onData (chunk) {\n    if (complete) return\n\n    received += chunk.length\n\n    if (limit !== null && received > limit) {\n      done(createError(413, 'request entity too large', {\n        limit: limit,\n        received: received,\n        type: 'entity.too.large'\n      }))\n    } else if (decoder) {\n      buffer += decoder.write(chunk)\n    } else {\n      buffer.push(chunk)\n    }\n  }\n\n  function onEnd (err) {\n    if (complete) return\n    if (err) return done(err)\n\n    if (length !== null && received !== length) {\n      done(createError(400, 'request size did not match content length', {\n        expected: length,\n        length: length,\n        received: received,\n        type: 'request.size.invalid'\n      }))\n    } else {\n      var string = decoder\n        ? buffer + (decoder.end() || '')\n        : Buffer.concat(buffer)\n      done(null, string)\n    }\n  }\n\n  function cleanup () {\n    buffer = null\n\n    stream.removeListener('aborted', onAborted)\n    stream.removeListener('data', onData)\n    stream.removeListener('end', onEnd)\n    stream.removeListener('error', onEnd)\n    stream.removeListener('close', cleanup)\n  }\n}\n\n/**\n * Try to require async_hooks\n * @private\n */\n\nfunction tryRequireAsyncHooks () {\n  try {\n    return require('async_hooks')\n  } catch (e) {\n    return {}\n  }\n}\n\n/**\n * Wrap function with async resource, if possible.\n * AsyncResource.bind static method backported.\n * @private\n */\n\nfunction wrap (fn) {\n  var res\n\n  // create anonymous resource\n  if (asyncHooks.AsyncResource) {\n    res = new asyncHooks.AsyncResource(fn.name || 'bound-anonymous-fn')\n  }\n\n  // incompatible node.js\n  if (!res || !res.runInAsyncScope) {\n    return fn\n  }\n\n  // return bound function\n  return res.runInAsyncScope.bind(res, fn, null)\n}\n", "const vary = require('vary');\n\n/**\n * CORS middleware\n *\n * @param {Object} [options]\n *  - {String|Function(ctx)} origin `Access-Control-Allow-Origin`, default is '*'\n *    If `credentials` set and return `true, the `origin` default value will set to the request `Origin` header\n *  - {String|Array} allowMethods `Access-Control-Allow-Methods`, default is 'GET,HEAD,PUT,POST,DELETE,PATCH'\n *  - {String|Array} exposeHeaders `Access-Control-Expose-Headers`\n *  - {String|Array} allowHeaders `Access-Control-Allow-Headers`\n *  - {String|Number} maxAge `Access-Control-Max-Age` in seconds\n *  - {Boolean|Function(ctx)} credentials `Access-Control-Allow-Credentials`\n *  - {Boolean} keepHeadersOnError Add set headers to `err.header` if an error is thrown\n *  - {Boolean} secureContext `Cross-Origin-Opener-Policy` & `Cross-Origin-Embedder-Policy` headers.', default is false\n *    @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer/Planned_changes\n *  - {Boolean} privateNetworkAccess handle `Access-Control-Request-Private-Network` request by return `Access-Control-Allow-Private-Network`, default to false\n *    @see https://wicg.github.io/private-network-access/\n * @return {Function} cors middleware\n * @public\n */\nmodule.exports = function(options) {\n  const defaults = {\n    allowMethods: 'GET,HEAD,PUT,POST,DELETE,PATCH',\n    secureContext: false,\n  };\n\n  options = {\n    ...defaults,\n    ...options,\n  };\n\n  if (Array.isArray(options.exposeHeaders)) {\n    options.exposeHeaders = options.exposeHeaders.join(',');\n  }\n\n  if (Array.isArray(options.allowMethods)) {\n    options.allowMethods = options.allowMethods.join(',');\n  }\n\n  if (Array.isArray(options.allowHeaders)) {\n    options.allowHeaders = options.allowHeaders.join(',');\n  }\n\n  if (options.maxAge) {\n    options.maxAge = String(options.maxAge);\n  }\n\n  options.keepHeadersOnError = options.keepHeadersOnError === undefined || !!options.keepHeadersOnError;\n\n  return async function cors(ctx, next) {\n    // If the Origin header is not present terminate this set of steps.\n    // The request is outside the scope of this specification.\n    const requestOrigin = ctx.get('Origin');\n\n    // Always set Vary header\n    // https://github.com/rs/cors/issues/10\n    ctx.vary('Origin');\n\n    let origin;\n    if (typeof options.origin === 'function') {\n      origin = await options.origin(ctx);\n      if (!origin) {\n        return await next();\n      }\n    } else {\n      origin = options.origin || '*';\n    }\n\n    let credentials;\n    if (typeof options.credentials === 'function') {\n      credentials = await options.credentials(ctx);\n    } else {\n      credentials = !!options.credentials;\n    }\n\n    if (credentials && origin === '*') {\n      origin = requestOrigin;\n    }\n\n    const headersSet = {};\n\n    function set(key, value) {\n      ctx.set(key, value);\n      headersSet[key] = value;\n    }\n\n    if (ctx.method !== 'OPTIONS') {\n      // Simple Cross-Origin Request, Actual Request, and Redirects\n      set('Access-Control-Allow-Origin', origin);\n\n      if (credentials === true) {\n        set('Access-Control-Allow-Credentials', 'true');\n      }\n\n      if (options.exposeHeaders) {\n        set('Access-Control-Expose-Headers', options.exposeHeaders);\n      }\n\n      if (options.secureContext) {\n        set('Cross-Origin-Opener-Policy', 'same-origin');\n        set('Cross-Origin-Embedder-Policy', 'require-corp');\n      }\n\n      if (!options.keepHeadersOnError) {\n        return await next();\n      }\n      try {\n        return await next();\n      } catch (err) {\n        const errHeadersSet = err.headers || {};\n        const varyWithOrigin = vary.append(errHeadersSet.vary || errHeadersSet.Vary || '', 'Origin');\n        delete errHeadersSet.Vary;\n\n        err.headers = {\n          ...errHeadersSet,\n          ...headersSet,\n          ...{ vary: varyWithOrigin },\n        };\n        throw err;\n      }\n    } else {\n      // Preflight Request\n\n      // If there is no Access-Control-Request-Method header or if parsing failed,\n      // do not set any additional headers and terminate this set of steps.\n      // The request is outside the scope of this specification.\n      if (!ctx.get('Access-Control-Request-Method')) {\n        // this not preflight request, ignore it\n        return await next();\n      }\n\n      ctx.set('Access-Control-Allow-Origin', origin);\n\n      if (credentials === true) {\n        ctx.set('Access-Control-Allow-Credentials', 'true');\n      }\n\n      if (options.maxAge) {\n        ctx.set('Access-Control-Max-Age', options.maxAge);\n      }\n\n      if (options.privateNetworkAccess && ctx.get('Access-Control-Request-Private-Network')) {\n        ctx.set('Access-Control-Allow-Private-Network', 'true');\n      }\n\n      if (options.allowMethods) {\n        ctx.set('Access-Control-Allow-Methods', options.allowMethods);\n      }\n\n      if (options.secureContext) {\n        set('Cross-Origin-Opener-Policy', 'same-origin');\n        set('Cross-Origin-Embedder-Policy', 'require-corp');\n      }\n\n      let allowHeaders = options.allowHeaders;\n      if (!allowHeaders) {\n        allowHeaders = ctx.get('Access-Control-Request-Headers');\n      }\n      if (allowHeaders) {\n        ctx.set('Access-Control-Allow-Headers', allowHeaders);\n      }\n\n      ctx.status = 204;\n    }\n  };\n};\n", "'use strict';\n\nconst object = {};\nconst hasOwnProperty = object.hasOwnProperty;\nconst forOwn = (object, callback) => {\n\tfor (const key in object) {\n\t\tif (hasOwnProperty.call(object, key)) {\n\t\t\tcallback(key, object[key]);\n\t\t}\n\t}\n};\n\nconst extend = (destination, source) => {\n\tif (!source) {\n\t\treturn destination;\n\t}\n\tforOwn(source, (key, value) => {\n\t\tdestination[key] = value;\n\t});\n\treturn destination;\n};\n\nconst forEach = (array, callback) => {\n\tconst length = array.length;\n\tlet index = -1;\n\twhile (++index < length) {\n\t\tcallback(array[index]);\n\t}\n};\n\nconst fourHexEscape = (hex) => {\n\treturn '\\\\u' + ('0000' + hex).slice(-4);\n}\n\nconst hexadecimal = (code, lowercase) => {\n\tlet hexadecimal = code.toString(16);\n\tif (lowercase) return hexadecimal;\n\treturn hexadecimal.toUpperCase();\n};\n\nconst toString = object.toString;\nconst isArray = Array.isArray;\nconst isBuffer = (value) => {\n\treturn typeof Buffer === 'function' && Buffer.isBuffer(value);\n};\nconst isObject = (value) => {\n\t// This is a very simple check, but it\u2019s good enough for what we need.\n\treturn toString.call(value) == '[object Object]';\n};\nconst isString = (value) => {\n\treturn typeof value == 'string' ||\n\t\ttoString.call(value) == '[object String]';\n};\nconst isNumber = (value) => {\n\treturn typeof value == 'number' ||\n\t\ttoString.call(value) == '[object Number]';\n};\nconst isBigInt = (value) => {\n  return typeof value == 'bigint';\n};\nconst isFunction = (value) => {\n\treturn typeof value == 'function';\n};\nconst isMap = (value) => {\n\treturn toString.call(value) == '[object Map]';\n};\nconst isSet = (value) => {\n\treturn toString.call(value) == '[object Set]';\n};\n\n/*--------------------------------------------------------------------------*/\n\n// https://mathiasbynens.be/notes/javascript-escapes#single\nconst singleEscapes = {\n\t'\\\\': '\\\\\\\\',\n\t'\\b': '\\\\b',\n\t'\\f': '\\\\f',\n\t'\\n': '\\\\n',\n\t'\\r': '\\\\r',\n\t'\\t': '\\\\t'\n\t// `\\v` is omitted intentionally, because in IE < 9, '\\v' == 'v'.\n\t// '\\v': '\\\\x0B'\n};\nconst regexSingleEscape = /[\\\\\\b\\f\\n\\r\\t]/;\n\nconst regexDigit = /[0-9]/;\nconst regexWhitespace = /[\\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000]/;\n\nconst escapeEverythingRegex = /([\\uD800-\\uDBFF][\\uDC00-\\uDFFF])|([\\uD800-\\uDFFF])|(['\"`])|[^]/g;\nconst escapeNonAsciiRegex = /([\\uD800-\\uDBFF][\\uDC00-\\uDFFF])|([\\uD800-\\uDFFF])|(['\"`])|[^ !#-&\\(-\\[\\]-_a-~]/g;\n\nconst jsesc = (argument, options) => {\n\tconst increaseIndentation = () => {\n\t\toldIndent = indent;\n\t\t++options.indentLevel;\n\t\tindent = options.indent.repeat(options.indentLevel)\n\t};\n\t// Handle options\n\tconst defaults = {\n\t\t'escapeEverything': false,\n\t\t'minimal': false,\n\t\t'isScriptContext': false,\n\t\t'quotes': 'single',\n\t\t'wrap': false,\n\t\t'es6': false,\n\t\t'json': false,\n\t\t'compact': true,\n\t\t'lowercaseHex': false,\n\t\t'numbers': 'decimal',\n\t\t'indent': '\\t',\n\t\t'indentLevel': 0,\n\t\t'__inline1__': false,\n\t\t'__inline2__': false\n\t};\n\tconst json = options && options.json;\n\tif (json) {\n\t\tdefaults.quotes = 'double';\n\t\tdefaults.wrap = true;\n\t}\n\toptions = extend(defaults, options);\n\tif (\n\t\toptions.quotes != 'single' &&\n\t\toptions.quotes != 'double' &&\n\t\toptions.quotes != 'backtick'\n\t) {\n\t\toptions.quotes = 'single';\n\t}\n\tconst quote = options.quotes == 'double' ?\n\t\t'\"' :\n\t\t(options.quotes == 'backtick' ?\n\t\t\t'`' :\n\t\t\t'\\''\n\t\t);\n\tconst compact = options.compact;\n\tconst lowercaseHex = options.lowercaseHex;\n\tlet indent = options.indent.repeat(options.indentLevel);\n\tlet oldIndent = '';\n\tconst inline1 = options.__inline1__;\n\tconst inline2 = options.__inline2__;\n\tconst newLine = compact ? '' : '\\n';\n\tlet result;\n\tlet isEmpty = true;\n\tconst useBinNumbers = options.numbers == 'binary';\n\tconst useOctNumbers = options.numbers == 'octal';\n\tconst useDecNumbers = options.numbers == 'decimal';\n\tconst useHexNumbers = options.numbers == 'hexadecimal';\n\n\tif (json && argument && isFunction(argument.toJSON)) {\n\t\targument = argument.toJSON();\n\t}\n\n\tif (!isString(argument)) {\n\t\tif (isMap(argument)) {\n\t\t\tif (argument.size == 0) {\n\t\t\t\treturn 'new Map()';\n\t\t\t}\n\t\t\tif (!compact) {\n\t\t\t\toptions.__inline1__ = true;\n\t\t\t\toptions.__inline2__ = false;\n\t\t\t}\n\t\t\treturn 'new Map(' + jsesc(Array.from(argument), options) + ')';\n\t\t}\n\t\tif (isSet(argument)) {\n\t\t\tif (argument.size == 0) {\n\t\t\t\treturn 'new Set()';\n\t\t\t}\n\t\t\treturn 'new Set(' + jsesc(Array.from(argument), options) + ')';\n\t\t}\n\t\tif (isBuffer(argument)) {\n\t\t\tif (argument.length == 0) {\n\t\t\t\treturn 'Buffer.from([])';\n\t\t\t}\n\t\t\treturn 'Buffer.from(' + jsesc(Array.from(argument), options) + ')';\n\t\t}\n\t\tif (isArray(argument)) {\n\t\t\tresult = [];\n\t\t\toptions.wrap = true;\n\t\t\tif (inline1) {\n\t\t\t\toptions.__inline1__ = false;\n\t\t\t\toptions.__inline2__ = true;\n\t\t\t}\n\t\t\tif (!inline2) {\n\t\t\t\tincreaseIndentation();\n\t\t\t}\n\t\t\tforEach(argument, (value) => {\n\t\t\t\tisEmpty = false;\n\t\t\t\tif (inline2) {\n\t\t\t\t\toptions.__inline2__ = false;\n\t\t\t\t}\n\t\t\t\tresult.push(\n\t\t\t\t\t(compact || inline2 ? '' : indent) +\n\t\t\t\t\tjsesc(value, options)\n\t\t\t\t);\n\t\t\t});\n\t\t\tif (isEmpty) {\n\t\t\t\treturn '[]';\n\t\t\t}\n\t\t\tif (inline2) {\n\t\t\t\treturn '[' + result.join(', ') + ']';\n\t\t\t}\n\t\t\treturn '[' + newLine + result.join(',' + newLine) + newLine +\n\t\t\t\t(compact ? '' : oldIndent) + ']';\n\t\t} else if (isNumber(argument) || isBigInt(argument)) {\n\t\t\tif (json) {\n\t\t\t\t// Some number values (e.g. `Infinity`) cannot be represented in JSON.\n\t\t\t\t// `BigInt` values less than `-Number.MAX_VALUE` or greater than\n        // `Number.MAX_VALUE` cannot be represented in JSON so they will become\n        // `-Infinity` or `Infinity`, respectively, and then become `null` when\n        // stringified.\n\t\t\t\treturn JSON.stringify(Number(argument));\n\t\t\t}\n\n      let result;\n\t\t\tif (useDecNumbers) {\n\t\t\t\tresult = String(argument);\n\t\t\t} else if (useHexNumbers) {\n\t\t\t\tlet hexadecimal = argument.toString(16);\n\t\t\t\tif (!lowercaseHex) {\n\t\t\t\t\thexadecimal = hexadecimal.toUpperCase();\n\t\t\t\t}\n\t\t\t\tresult = '0x' + hexadecimal;\n\t\t\t} else if (useBinNumbers) {\n\t\t\t\tresult = '0b' + argument.toString(2);\n\t\t\t} else if (useOctNumbers) {\n\t\t\t\tresult = '0o' + argument.toString(8);\n\t\t\t}\n\n      if (isBigInt(argument)) {\n        return result + 'n';\n      }\n      return result;\n\t\t} else if (isBigInt(argument)) {\n\t\t\tif (json) {\n\t\t\t\t// `BigInt` values less than `-Number.MAX_VALUE` or greater than\n        // `Number.MAX_VALUE` will become `-Infinity` or `Infinity`,\n        // respectively, and cannot be represented in JSON.\n\t\t\t\treturn JSON.stringify(Number(argument));\n\t\t\t}\n      return argument + 'n';\n    } else if (!isObject(argument)) {\n\t\t\tif (json) {\n\t\t\t\t// For some values (e.g. `undefined`, `function` objects),\n\t\t\t\t// `JSON.stringify(value)` returns `undefined` (which isn\u2019t valid\n\t\t\t\t// JSON) instead of `'null'`.\n\t\t\t\treturn JSON.stringify(argument) || 'null';\n\t\t\t}\n\t\t\treturn String(argument);\n\t\t} else { // it\u2019s an object\n\t\t\tresult = [];\n\t\t\toptions.wrap = true;\n\t\t\tincreaseIndentation();\n\t\t\tforOwn(argument, (key, value) => {\n\t\t\t\tisEmpty = false;\n\t\t\t\tresult.push(\n\t\t\t\t\t(compact ? '' : indent) +\n\t\t\t\t\tjsesc(key, options) + ':' +\n\t\t\t\t\t(compact ? '' : ' ') +\n\t\t\t\t\tjsesc(value, options)\n\t\t\t\t);\n\t\t\t});\n\t\t\tif (isEmpty) {\n\t\t\t\treturn '{}';\n\t\t\t}\n\t\t\treturn '{' + newLine + result.join(',' + newLine) + newLine +\n\t\t\t\t(compact ? '' : oldIndent) + '}';\n\t\t}\n\t}\n\n\tconst regex = options.escapeEverything ? escapeEverythingRegex : escapeNonAsciiRegex;\n\tresult = argument.replace(regex, (char, pair, lone, quoteChar, index, string) => {\n\t\tif (pair) {\n\t\t\tif (options.minimal) return pair;\n\t\t\tconst first = pair.charCodeAt(0);\n\t\t\tconst second = pair.charCodeAt(1);\n\t\t\tif (options.es6) {\n\t\t\t\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\t\t\t\tconst codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n\t\t\t\tconst hex = hexadecimal(codePoint, lowercaseHex);\n\t\t\t\treturn '\\\\u{' + hex + '}';\n\t\t\t}\n\t\t\treturn fourHexEscape(hexadecimal(first, lowercaseHex)) + fourHexEscape(hexadecimal(second, lowercaseHex));\n\t\t}\n\n\t\tif (lone) {\n\t\t\treturn fourHexEscape(hexadecimal(lone.charCodeAt(0), lowercaseHex));\n\t\t}\n\n\t\tif (\n\t\t\tchar == '\\0' &&\n\t\t\t!json &&\n\t\t\t!regexDigit.test(string.charAt(index + 1))\n\t\t) {\n\t\t\treturn '\\\\0';\n\t\t}\n\n\t\tif (quoteChar) {\n\t\t\tif (quoteChar == quote || options.escapeEverything) {\n\t\t\t\treturn '\\\\' + quoteChar;\n\t\t\t}\n\t\t\treturn quoteChar;\n\t\t}\n\n\t\tif (regexSingleEscape.test(char)) {\n\t\t\t// no need for a `hasOwnProperty` check here\n\t\t\treturn singleEscapes[char];\n\t\t}\n\n\t\tif (options.minimal && !regexWhitespace.test(char)) {\n\t\t\treturn char;\n\t\t}\n\n\t\tconst hex = hexadecimal(char.charCodeAt(0), lowercaseHex);\n\t\tif (json || hex.length > 2) {\n\t\t\treturn fourHexEscape(hex);\n\t\t}\n\n\t\treturn '\\\\x' + ('00' + hex).slice(-2);\n\t});\n\n\tif (quote == '`') {\n\t\tresult = result.replace(/\\$\\{/g, '\\\\${');\n\t}\n\tif (options.isScriptContext) {\n\t\t// https://mathiasbynens.be/notes/etago\n\t\tresult = result\n\t\t\t.replace(/<\\/(script|style)/gi, '<\\\\/$1')\n\t\t\t.replace(/<!--/g, json ? '\\\\u003C!--' : '\\\\x3C!--');\n\t}\n\tif (options.wrap) {\n\t\tresult = quote + result + quote;\n\t}\n\treturn result;\n};\n\njsesc.version = '3.0.2';\n\nmodule.exports = jsesc;\n", "{\n  \"100\": \"Continue\",\n  \"101\": \"Switching Protocols\",\n  \"102\": \"Processing\",\n  \"103\": \"Early Hints\",\n  \"200\": \"OK\",\n  \"201\": \"Created\",\n  \"202\": \"Accepted\",\n  \"203\": \"Non-Authoritative Information\",\n  \"204\": \"No Content\",\n  \"205\": \"Reset Content\",\n  \"206\": \"Partial Content\",\n  \"207\": \"Multi-Status\",\n  \"208\": \"Already Reported\",\n  \"226\": \"IM Used\",\n  \"300\": \"Multiple Choices\",\n  \"301\": \"Moved Permanently\",\n  \"302\": \"Found\",\n  \"303\": \"See Other\",\n  \"304\": \"Not Modified\",\n  \"305\": \"Use Proxy\",\n  \"307\": \"Temporary Redirect\",\n  \"308\": \"Permanent Redirect\",\n  \"400\": \"Bad Request\",\n  \"401\": \"Unauthorized\",\n  \"402\": \"Payment Required\",\n  \"403\": \"Forbidden\",\n  \"404\": \"Not Found\",\n  \"405\": \"Method Not Allowed\",\n  \"406\": \"Not Acceptable\",\n  \"407\": \"Proxy Authentication Required\",\n  \"408\": \"Request Timeout\",\n  \"409\": \"Conflict\",\n  \"410\": \"Gone\",\n  \"411\": \"Length Required\",\n  \"412\": \"Precondition Failed\",\n  \"413\": \"Payload Too Large\",\n  \"414\": \"URI Too Long\",\n  \"415\": \"Unsupported Media Type\",\n  \"416\": \"Range Not Satisfiable\",\n  \"417\": \"Expectation Failed\",\n  \"418\": \"I'm a Teapot\",\n  \"421\": \"Misdirected Request\",\n  \"422\": \"Unprocessable Entity\",\n  \"423\": \"Locked\",\n  \"424\": \"Failed Dependency\",\n  \"425\": \"Too Early\",\n  \"426\": \"Upgrade Required\",\n  \"428\": \"Precondition Required\",\n  \"429\": \"Too Many Requests\",\n  \"431\": \"Request Header Fields Too Large\",\n  \"451\": \"Unavailable For Legal Reasons\",\n  \"500\": \"Internal Server Error\",\n  \"501\": \"Not Implemented\",\n  \"502\": \"Bad Gateway\",\n  \"503\": \"Service Unavailable\",\n  \"504\": \"Gateway Timeout\",\n  \"505\": \"HTTP Version Not Supported\",\n  \"506\": \"Variant Also Negotiates\",\n  \"507\": \"Insufficient Storage\",\n  \"508\": \"Loop Detected\",\n  \"509\": \"Bandwidth Limit Exceeded\",\n  \"510\": \"Not Extended\",\n  \"511\": \"Network Authentication Required\"\n}\n", "/*!\n * statuses\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar codes = require('./codes.json')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = status\n\n// status code to message map\nstatus.message = codes\n\n// status message (lower-case) to code map\nstatus.code = createMessageToStatusCodeMap(codes)\n\n// array of status codes\nstatus.codes = createStatusCodeList(codes)\n\n// status codes for redirects\nstatus.redirect = {\n  300: true,\n  301: true,\n  302: true,\n  303: true,\n  305: true,\n  307: true,\n  308: true\n}\n\n// status codes for empty bodies\nstatus.empty = {\n  204: true,\n  205: true,\n  304: true\n}\n\n// status codes for when you should retry the request\nstatus.retry = {\n  502: true,\n  503: true,\n  504: true\n}\n\n/**\n * Create a map of message to status code.\n * @private\n */\n\nfunction createMessageToStatusCodeMap (codes) {\n  var map = {}\n\n  Object.keys(codes).forEach(function forEachCode (code) {\n    var message = codes[code]\n    var status = Number(code)\n\n    // populate map\n    map[message.toLowerCase()] = status\n  })\n\n  return map\n}\n\n/**\n * Create a list of all status codes.\n * @private\n */\n\nfunction createStatusCodeList (codes) {\n  return Object.keys(codes).map(function mapCode (code) {\n    return Number(code)\n  })\n}\n\n/**\n * Get the status code for given message.\n * @private\n */\n\nfunction getStatusCode (message) {\n  var msg = message.toLowerCase()\n\n  if (!Object.prototype.hasOwnProperty.call(status.code, msg)) {\n    throw new Error('invalid status message: \"' + message + '\"')\n  }\n\n  return status.code[msg]\n}\n\n/**\n * Get the status message for given code.\n * @private\n */\n\nfunction getStatusMessage (code) {\n  if (!Object.prototype.hasOwnProperty.call(status.message, code)) {\n    throw new Error('invalid status code: ' + code)\n  }\n\n  return status.message[code]\n}\n\n/**\n * Get the status code.\n *\n * Given a number, this will throw if it is not a known status\n * code, otherwise the code will be returned. Given a string,\n * the string will be parsed for a number and return the code\n * if valid, otherwise will lookup the code assuming this is\n * the status message.\n *\n * @param {string|number} code\n * @returns {number}\n * @public\n */\n\nfunction status (code) {\n  if (typeof code === 'number') {\n    return getStatusMessage(code)\n  }\n\n  if (typeof code !== 'string') {\n    throw new TypeError('code must be a number or string')\n  }\n\n  // '403'\n  var n = parseInt(code, 10)\n  if (!isNaN(n)) {\n    return getStatusMessage(n)\n  }\n\n  return getStatusCode(code)\n}\n", "/*!\n * http-errors\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2016 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar deprecate = require('depd')('http-errors')\nvar setPrototypeOf = require('setprototypeof')\nvar statuses = require('statuses')\nvar inherits = require('inherits')\nvar toIdentifier = require('toidentifier')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = createError\nmodule.exports.HttpError = createHttpErrorConstructor()\nmodule.exports.isHttpError = createIsHttpErrorFunction(module.exports.HttpError)\n\n// Populate exports for all constructors\npopulateConstructorExports(module.exports, statuses.codes, module.exports.HttpError)\n\n/**\n * Get the code class of a status code.\n * @private\n */\n\nfunction codeClass (status) {\n  return Number(String(status).charAt(0) + '00')\n}\n\n/**\n * Create a new HTTP Error.\n *\n * @returns {Error}\n * @public\n */\n\nfunction createError () {\n  // so much arity going on ~_~\n  var err\n  var msg\n  var status = 500\n  var props = {}\n  for (var i = 0; i < arguments.length; i++) {\n    var arg = arguments[i]\n    var type = typeof arg\n    if (type === 'object' && arg instanceof Error) {\n      err = arg\n      status = err.status || err.statusCode || status\n    } else if (type === 'number' && i === 0) {\n      status = arg\n    } else if (type === 'string') {\n      msg = arg\n    } else if (type === 'object') {\n      props = arg\n    } else {\n      throw new TypeError('argument #' + (i + 1) + ' unsupported type ' + type)\n    }\n  }\n\n  if (typeof status === 'number' && (status < 400 || status >= 600)) {\n    deprecate('non-error status code; use only 4xx or 5xx status codes')\n  }\n\n  if (typeof status !== 'number' ||\n    (!statuses.message[status] && (status < 400 || status >= 600))) {\n    status = 500\n  }\n\n  // constructor\n  var HttpError = createError[status] || createError[codeClass(status)]\n\n  if (!err) {\n    // create error\n    err = HttpError\n      ? new HttpError(msg)\n      : new Error(msg || statuses.message[status])\n    Error.captureStackTrace(err, createError)\n  }\n\n  if (!HttpError || !(err instanceof HttpError) || err.status !== status) {\n    // add properties to generic error\n    err.expose = status < 500\n    err.status = err.statusCode = status\n  }\n\n  for (var key in props) {\n    if (key !== 'status' && key !== 'statusCode') {\n      err[key] = props[key]\n    }\n  }\n\n  return err\n}\n\n/**\n * Create HTTP error abstract base class.\n * @private\n */\n\nfunction createHttpErrorConstructor () {\n  function HttpError () {\n    throw new TypeError('cannot construct abstract class')\n  }\n\n  inherits(HttpError, Error)\n\n  return HttpError\n}\n\n/**\n * Create a constructor for a client error.\n * @private\n */\n\nfunction createClientErrorConstructor (HttpError, name, code) {\n  var className = toClassName(name)\n\n  function ClientError (message) {\n    // create the error object\n    var msg = message != null ? message : statuses.message[code]\n    var err = new Error(msg)\n\n    // capture a stack trace to the construction point\n    Error.captureStackTrace(err, ClientError)\n\n    // adjust the [[Prototype]]\n    setPrototypeOf(err, ClientError.prototype)\n\n    // redefine the error message\n    Object.defineProperty(err, 'message', {\n      enumerable: true,\n      configurable: true,\n      value: msg,\n      writable: true\n    })\n\n    // redefine the error name\n    Object.defineProperty(err, 'name', {\n      enumerable: false,\n      configurable: true,\n      value: className,\n      writable: true\n    })\n\n    return err\n  }\n\n  inherits(ClientError, HttpError)\n  nameFunc(ClientError, className)\n\n  ClientError.prototype.status = code\n  ClientError.prototype.statusCode = code\n  ClientError.prototype.expose = true\n\n  return ClientError\n}\n\n/**\n * Create function to test is a value is a HttpError.\n * @private\n */\n\nfunction createIsHttpErrorFunction (HttpError) {\n  return function isHttpError (val) {\n    if (!val || typeof val !== 'object') {\n      return false\n    }\n\n    if (val instanceof HttpError) {\n      return true\n    }\n\n    return val instanceof Error &&\n      typeof val.expose === 'boolean' &&\n      typeof val.statusCode === 'number' && val.status === val.statusCode\n  }\n}\n\n/**\n * Create a constructor for a server error.\n * @private\n */\n\nfunction createServerErrorConstructor (HttpError, name, code) {\n  var className = toClassName(name)\n\n  function ServerError (message) {\n    // create the error object\n    var msg = message != null ? message : statuses.message[code]\n    var err = new Error(msg)\n\n    // capture a stack trace to the construction point\n    Error.captureStackTrace(err, ServerError)\n\n    // adjust the [[Prototype]]\n    setPrototypeOf(err, ServerError.prototype)\n\n    // redefine the error message\n    Object.defineProperty(err, 'message', {\n      enumerable: true,\n      configurable: true,\n      value: msg,\n      writable: true\n    })\n\n    // redefine the error name\n    Object.defineProperty(err, 'name', {\n      enumerable: false,\n      configurable: true,\n      value: className,\n      writable: true\n    })\n\n    return err\n  }\n\n  inherits(ServerError, HttpError)\n  nameFunc(ServerError, className)\n\n  ServerError.prototype.status = code\n  ServerError.prototype.statusCode = code\n  ServerError.prototype.expose = false\n\n  return ServerError\n}\n\n/**\n * Set the name of a function, if possible.\n * @private\n */\n\nfunction nameFunc (func, name) {\n  var desc = Object.getOwnPropertyDescriptor(func, 'name')\n\n  if (desc && desc.configurable) {\n    desc.value = name\n    Object.defineProperty(func, 'name', desc)\n  }\n}\n\n/**\n * Populate the exports object with constructors for every error class.\n * @private\n */\n\nfunction populateConstructorExports (exports, codes, HttpError) {\n  codes.forEach(function forEachCode (code) {\n    var CodeError\n    var name = toIdentifier(statuses.message[code])\n\n    switch (codeClass(code)) {\n      case 400:\n        CodeError = createClientErrorConstructor(HttpError, name, code)\n        break\n      case 500:\n        CodeError = createServerErrorConstructor(HttpError, name, code)\n        break\n    }\n\n    if (CodeError) {\n      // export the constructor\n      exports[code] = CodeError\n      exports[name] = CodeError\n    }\n  })\n}\n\n/**\n * Get a class name from a name identifier.\n * @private\n */\n\nfunction toClassName (name) {\n  return name.substr(-5) !== 'Error'\n    ? name + 'Error'\n    : name\n}\n", "const DEFAULT_DELIMITER = \"/\";\nconst NOOP_VALUE = (value: string) => value;\nconst ID_START = /^[$_\\p{ID_Start}]$/u;\nconst ID_CONTINUE = /^[$\\u200c\\u200d\\p{ID_Continue}]$/u;\n\n/**\n * Encode a string into another string.\n */\nexport type Encode = (value: string) => string;\n\n/**\n * Decode a string into another string.\n */\nexport type Decode = (value: string) => string;\n\nexport interface ParseOptions {\n  /**\n   * A function for encoding input strings.\n   */\n  encodePath?: Encode;\n}\n\nexport interface PathToRegexpOptions {\n  /**\n   * Matches the path completely without trailing characters. (default: `true`)\n   */\n  end?: boolean;\n  /**\n   * Allows optional trailing delimiter to match. (default: `true`)\n   */\n  trailing?: boolean;\n  /**\n   * Match will be case sensitive. (default: `false`)\n   */\n  sensitive?: boolean;\n  /**\n   * The default delimiter for segments. (default: `'/'`)\n   */\n  delimiter?: string;\n}\n\nexport interface MatchOptions extends PathToRegexpOptions {\n  /**\n   * Function for decoding strings for params, or `false` to disable entirely. (default: `decodeURIComponent`)\n   */\n  decode?: Decode | false;\n}\n\nexport interface CompileOptions {\n  /**\n   * Function for encoding input strings for output into the path, or `false` to disable entirely. (default: `encodeURIComponent`)\n   */\n  encode?: Encode | false;\n  /**\n   * The default delimiter for segments. (default: `'/'`)\n   */\n  delimiter?: string;\n}\n\ntype TokenType =\n  | \"{\"\n  | \"}\"\n  | \"wildcard\"\n  | \"param\"\n  | \"char\"\n  | \"escape\"\n  | \"end\"\n  // Reserved for use or ambiguous due to past use.\n  | \"(\"\n  | \")\"\n  | \"[\"\n  | \"]\"\n  | \"+\"\n  | \"?\"\n  | \"!\";\n\n/**\n * Tokenizer results.\n */\ninterface LexToken {\n  type: TokenType;\n  index: number;\n  value: string;\n}\n\nconst SIMPLE_TOKENS: Record<string, TokenType> = {\n  // Groups.\n  \"{\": \"{\",\n  \"}\": \"}\",\n  // Reserved.\n  \"(\": \"(\",\n  \")\": \")\",\n  \"[\": \"[\",\n  \"]\": \"]\",\n  \"+\": \"+\",\n  \"?\": \"?\",\n  \"!\": \"!\",\n};\n\n/**\n * Escape text for stringify to path.\n */\nfunction escapeText(str: string) {\n  return str.replace(/[{}()\\[\\]+?!:*\\\\]/g, \"\\\\$&\");\n}\n\n/**\n * Escape a regular expression string.\n */\nfunction escape(str: string) {\n  return str.replace(/[.+*?^${}()[\\]|/\\\\]/g, \"\\\\$&\");\n}\n\n/**\n * Plain text.\n */\nexport interface Text {\n  type: \"text\";\n  value: string;\n}\n\n/**\n * A parameter designed to match arbitrary text within a segment.\n */\nexport interface Parameter {\n  type: \"param\";\n  name: string;\n}\n\n/**\n * A wildcard parameter designed to match multiple segments.\n */\nexport interface Wildcard {\n  type: \"wildcard\";\n  name: string;\n}\n\n/**\n * A set of possible tokens to expand when matching.\n */\nexport interface Group {\n  type: \"group\";\n  tokens: Token[];\n}\n\n/**\n * A token that corresponds with a regexp capture.\n */\nexport type Key = Parameter | Wildcard;\n\n/**\n * A sequence of `path-to-regexp` keys that match capturing groups.\n */\nexport type Keys = Array<Key>;\n\n/**\n * A sequence of path match characters.\n */\nexport type Token = Text | Parameter | Wildcard | Group;\n\n/**\n * Tokenized path instance.\n */\nexport class TokenData {\n  constructor(\n    public readonly tokens: Token[],\n    public readonly originalPath?: string,\n  ) {}\n}\n\n/**\n * ParseError is thrown when there is an error processing the path.\n */\nexport class PathError extends TypeError {\n  constructor(\n    message: string,\n    public readonly originalPath: string | undefined,\n  ) {\n    let text = message;\n    if (originalPath) text += `: ${originalPath}`;\n    text += `; visit https://git.new/pathToRegexpError for info`;\n    super(text);\n  }\n}\n\n/**\n * Parse a string for the raw tokens.\n */\nexport function parse(str: string, options: ParseOptions = {}): TokenData {\n  const { encodePath = NOOP_VALUE } = options;\n  const chars = [...str];\n  const tokens: Array<LexToken> = [];\n  let index = 0;\n  let pos = 0;\n\n  function name() {\n    let value = \"\";\n\n    if (ID_START.test(chars[index])) {\n      do {\n        value += chars[index++];\n      } while (ID_CONTINUE.test(chars[index]));\n    } else if (chars[index] === '\"') {\n      let quoteStart = index;\n\n      while (index++ < chars.length) {\n        if (chars[index] === '\"') {\n          index++;\n          quoteStart = 0;\n          break;\n        }\n\n        // Increment over escape characters.\n        if (chars[index] === \"\\\\\") index++;\n\n        value += chars[index];\n      }\n\n      if (quoteStart) {\n        throw new PathError(`Unterminated quote at index ${quoteStart}`, str);\n      }\n    }\n\n    if (!value) {\n      throw new PathError(`Missing parameter name at index ${index}`, str);\n    }\n\n    return value;\n  }\n\n  while (index < chars.length) {\n    const value = chars[index];\n    const type = SIMPLE_TOKENS[value];\n\n    if (type) {\n      tokens.push({ type, index: index++, value });\n    } else if (value === \"\\\\\") {\n      tokens.push({ type: \"escape\", index: index++, value: chars[index++] });\n    } else if (value === \":\") {\n      tokens.push({ type: \"param\", index: index++, value: name() });\n    } else if (value === \"*\") {\n      tokens.push({ type: \"wildcard\", index: index++, value: name() });\n    } else {\n      tokens.push({ type: \"char\", index: index++, value });\n    }\n  }\n\n  tokens.push({ type: \"end\", index, value: \"\" });\n\n  function consumeUntil(endType: TokenType): Token[] {\n    const output: Token[] = [];\n\n    while (true) {\n      const token = tokens[pos++];\n      if (token.type === endType) break;\n\n      if (token.type === \"char\" || token.type === \"escape\") {\n        let path = token.value;\n        let cur = tokens[pos];\n\n        while (cur.type === \"char\" || cur.type === \"escape\") {\n          path += cur.value;\n          cur = tokens[++pos];\n        }\n\n        output.push({\n          type: \"text\",\n          value: encodePath(path),\n        });\n        continue;\n      }\n\n      if (token.type === \"param\" || token.type === \"wildcard\") {\n        output.push({\n          type: token.type,\n          name: token.value,\n        });\n        continue;\n      }\n\n      if (token.type === \"{\") {\n        output.push({\n          type: \"group\",\n          tokens: consumeUntil(\"}\"),\n        });\n        continue;\n      }\n\n      throw new PathError(\n        `Unexpected ${token.type} at index ${token.index}, expected ${endType}`,\n        str,\n      );\n    }\n\n    return output;\n  }\n\n  return new TokenData(consumeUntil(\"end\"), str);\n}\n\n/**\n * Compile a string to a template function for the path.\n */\nexport function compile<P extends ParamData = ParamData>(\n  path: Path,\n  options: CompileOptions & ParseOptions = {},\n) {\n  const { encode = encodeURIComponent, delimiter = DEFAULT_DELIMITER } =\n    options;\n  const data = typeof path === \"object\" ? path : parse(path, options);\n  const fn = tokensToFunction(data.tokens, delimiter, encode);\n\n  return function path(params: P = {} as P) {\n    const [path, ...missing] = fn(params);\n    if (missing.length) {\n      throw new TypeError(`Missing parameters: ${missing.join(\", \")}`);\n    }\n    return path;\n  };\n}\n\nexport type ParamData = Partial<Record<string, string | string[]>>;\nexport type PathFunction<P extends ParamData> = (data?: P) => string;\n\nfunction tokensToFunction(\n  tokens: Token[],\n  delimiter: string,\n  encode: Encode | false,\n) {\n  const encoders = tokens.map((token) =>\n    tokenToFunction(token, delimiter, encode),\n  );\n\n  return (data: ParamData) => {\n    const result: string[] = [\"\"];\n\n    for (const encoder of encoders) {\n      const [value, ...extras] = encoder(data);\n      result[0] += value;\n      result.push(...extras);\n    }\n\n    return result;\n  };\n}\n\n/**\n * Convert a single token into a path building function.\n */\nfunction tokenToFunction(\n  token: Token,\n  delimiter: string,\n  encode: Encode | false,\n): (data: ParamData) => string[] {\n  if (token.type === \"text\") return () => [token.value];\n\n  if (token.type === \"group\") {\n    const fn = tokensToFunction(token.tokens, delimiter, encode);\n\n    return (data) => {\n      const [value, ...missing] = fn(data);\n      if (!missing.length) return [value];\n      return [\"\"];\n    };\n  }\n\n  const encodeValue = encode || NOOP_VALUE;\n\n  if (token.type === \"wildcard\" && encode !== false) {\n    return (data) => {\n      const value = data[token.name];\n      if (value == null) return [\"\", token.name];\n\n      if (!Array.isArray(value) || value.length === 0) {\n        throw new TypeError(`Expected \"${token.name}\" to be a non-empty array`);\n      }\n\n      return [\n        value\n          .map((value, index) => {\n            if (typeof value !== \"string\") {\n              throw new TypeError(\n                `Expected \"${token.name}/${index}\" to be a string`,\n              );\n            }\n\n            return encodeValue(value);\n          })\n          .join(delimiter),\n      ];\n    };\n  }\n\n  return (data) => {\n    const value = data[token.name];\n    if (value == null) return [\"\", token.name];\n\n    if (typeof value !== \"string\") {\n      throw new TypeError(`Expected \"${token.name}\" to be a string`);\n    }\n\n    return [encodeValue(value)];\n  };\n}\n\n/**\n * A match result contains data about the path match.\n */\nexport interface MatchResult<P extends ParamData> {\n  path: string;\n  params: P;\n}\n\n/**\n * A match is either `false` (no match) or a match result.\n */\nexport type Match<P extends ParamData> = false | MatchResult<P>;\n\n/**\n * The match function takes a string and returns whether it matched the path.\n */\nexport type MatchFunction<P extends ParamData> = (path: string) => Match<P>;\n\n/**\n * Supported path types.\n */\nexport type Path = string | TokenData;\n\n/**\n * Transform a path into a match function.\n */\nexport function match<P extends ParamData>(\n  path: Path | Path[],\n  options: MatchOptions & ParseOptions = {},\n): MatchFunction<P> {\n  const { decode = decodeURIComponent, delimiter = DEFAULT_DELIMITER } =\n    options;\n  const { regexp, keys } = pathToRegexp(path, options);\n\n  const decoders = keys.map((key) => {\n    if (decode === false) return NOOP_VALUE;\n    if (key.type === \"param\") return decode;\n    return (value: string) => value.split(delimiter).map(decode);\n  });\n\n  return function match(input: string) {\n    const m = regexp.exec(input);\n    if (!m) return false;\n\n    const path = m[0];\n    const params = Object.create(null);\n\n    for (let i = 1; i < m.length; i++) {\n      if (m[i] === undefined) continue;\n\n      const key = keys[i - 1];\n      const decoder = decoders[i - 1];\n      params[key.name] = decoder(m[i]);\n    }\n\n    return { path, params };\n  };\n}\n\nexport function pathToRegexp(\n  path: Path | Path[],\n  options: PathToRegexpOptions & ParseOptions = {},\n) {\n  const {\n    delimiter = DEFAULT_DELIMITER,\n    end = true,\n    sensitive = false,\n    trailing = true,\n  } = options;\n  const keys: Keys = [];\n  const flags = sensitive ? \"\" : \"i\";\n  const sources: string[] = [];\n\n  for (const input of pathsToArray(path, [])) {\n    const data = typeof input === \"object\" ? input : parse(input, options);\n    for (const tokens of flatten(data.tokens, 0, [])) {\n      sources.push(toRegExpSource(tokens, delimiter, keys, data.originalPath));\n    }\n  }\n\n  let pattern = `^(?:${sources.join(\"|\")})`;\n  if (trailing) pattern += `(?:${escape(delimiter)}$)?`;\n  pattern += end ? \"$\" : `(?=${escape(delimiter)}|$)`;\n\n  const regexp = new RegExp(pattern, flags);\n  return { regexp, keys };\n}\n\n/**\n * Convert a path or array of paths into a flat array.\n */\nfunction pathsToArray(paths: Path | Path[], init: Path[]): Path[] {\n  if (Array.isArray(paths)) {\n    for (const p of paths) pathsToArray(p, init);\n  } else {\n    init.push(paths);\n  }\n  return init;\n}\n\n/**\n * Flattened token set.\n */\ntype FlatToken = Text | Parameter | Wildcard;\n\n/**\n * Generate a flat list of sequence tokens from the given tokens.\n */\nfunction* flatten(\n  tokens: Token[],\n  index: number,\n  init: FlatToken[],\n): Generator<FlatToken[]> {\n  if (index === tokens.length) {\n    return yield init;\n  }\n\n  const token = tokens[index];\n\n  if (token.type === \"group\") {\n    for (const seq of flatten(token.tokens, 0, init.slice())) {\n      yield* flatten(tokens, index + 1, seq);\n    }\n  } else {\n    init.push(token);\n  }\n\n  yield* flatten(tokens, index + 1, init);\n}\n\n/**\n * Transform a flat sequence of tokens into a regular expression.\n */\nfunction toRegExpSource(\n  tokens: FlatToken[],\n  delimiter: string,\n  keys: Keys,\n  originalPath: string | undefined,\n): string {\n  let result = \"\";\n  let backtrack = \"\";\n  let isSafeSegmentParam = true;\n\n  for (const token of tokens) {\n    if (token.type === \"text\") {\n      result += escape(token.value);\n      backtrack += token.value;\n      isSafeSegmentParam ||= token.value.includes(delimiter);\n      continue;\n    }\n\n    if (token.type === \"param\" || token.type === \"wildcard\") {\n      if (!isSafeSegmentParam && !backtrack) {\n        throw new PathError(\n          `Missing text before \"${token.name}\" ${token.type}`,\n          originalPath,\n        );\n      }\n\n      if (token.type === \"param\") {\n        result += `(${negate(delimiter, isSafeSegmentParam ? \"\" : backtrack)}+)`;\n      } else {\n        result += `([\\\\s\\\\S]+)`;\n      }\n\n      keys.push(token);\n      backtrack = \"\";\n      isSafeSegmentParam = false;\n      continue;\n    }\n  }\n\n  return result;\n}\n\n/**\n * Block backtracking on previous text and ignore delimiter string.\n */\nfunction negate(delimiter: string, backtrack: string): string {\n  if (backtrack.length < 2) {\n    if (delimiter.length < 2) return `[^${escape(delimiter + backtrack)}]`;\n    return `(?:(?!${escape(delimiter)})[^${escape(backtrack)}])`;\n  }\n  if (delimiter.length < 2) {\n    return `(?:(?!${escape(backtrack)})[^${escape(delimiter)}])`;\n  }\n  return `(?:(?!${escape(backtrack)}|${escape(delimiter)})[\\\\s\\\\S])`;\n}\n\n/**\n * Stringify an array of tokens into a path string.\n */\nfunction stringifyTokens(tokens: Token[]): string {\n  let value = \"\";\n  let i = 0;\n\n  function name(value: string) {\n    const isSafe = isNameSafe(value) && isNextNameSafe(tokens[i]);\n    return isSafe ? value : JSON.stringify(value);\n  }\n\n  while (i < tokens.length) {\n    const token = tokens[i++];\n\n    if (token.type === \"text\") {\n      value += escapeText(token.value);\n      continue;\n    }\n\n    if (token.type === \"group\") {\n      value += `{${stringifyTokens(token.tokens)}}`;\n      continue;\n    }\n\n    if (token.type === \"param\") {\n      value += `:${name(token.name)}`;\n      continue;\n    }\n\n    if (token.type === \"wildcard\") {\n      value += `*${name(token.name)}`;\n      continue;\n    }\n\n    throw new TypeError(`Unknown token type: ${(token as any).type}`);\n  }\n\n  return value;\n}\n\n/**\n * Stringify token data into a path string.\n */\nexport function stringify(data: TokenData): string {\n  return stringifyTokens(data.tokens);\n}\n\n/**\n * Validate the parameter name contains valid ID characters.\n */\nfunction isNameSafe(name: string): boolean {\n  const [first, ...rest] = name;\n  return ID_START.test(first) && rest.every((char) => ID_CONTINUE.test(char));\n}\n\n/**\n * Validate the next token does not interfere with the current param name.\n */\nfunction isNextNameSafe(token: Token | undefined): boolean {\n  if (token && token.type === \"text\") return !ID_CONTINUE.test(token.value[0]);\n  return true;\n}\n", "const { parse: parseUrl, format: formatUrl } = require('node:url');\n\nconst { pathToRegexp, compile, parse } = require('path-to-regexp');\n\nmodule.exports = class Layer {\n  /**\n   * Initialize a new routing Layer with given `method`, `path`, and `middleware`.\n   *\n   * @param {String|RegExp} path Path string or regular expression.\n   * @param {Array} methods Array of HTTP verbs.\n   * @param {Array} middleware Layer callback/middleware or series of.\n   * @param {Object=} opts\n   * @param {String=} opts.name route name\n   * @param {String=} opts.sensitive case sensitive (default: false)\n   * @param {String=} opts.strict require the trailing slash (default: false)\n   * @param {Boolean=} opts.pathAsRegExp if true, treat `path` as a regular expression\n   * @returns {Layer}\n   * @private\n   */\n  constructor(path, methods, middleware, opts = {}) {\n    this.opts = opts;\n    this.name = this.opts.name || null;\n    this.methods = [];\n    for (const method of methods) {\n      const l = this.methods.push(method.toUpperCase());\n      if (this.methods[l - 1] === 'GET') this.methods.unshift('HEAD');\n    }\n\n    this.stack = Array.isArray(middleware) ? middleware : [middleware];\n    // ensure middleware is a function\n    for (let i = 0; i < this.stack.length; i++) {\n      const fn = this.stack[i];\n      const type = typeof fn;\n      if (type !== 'function')\n        throw new Error(\n          `${methods.toString()} \\`${\n            this.opts.name || path\n          }\\`: \\`middleware\\` must be a function, not \\`${type}\\``\n        );\n    }\n\n    this.path = path;\n    this.paramNames = [];\n\n    if (this.opts.pathAsRegExp === true) {\n      this.regexp = new RegExp(path);\n    } else if (this.path) {\n      if ('strict' in this.opts) {\n        // path-to-regexp renamed strict to trailing in v8.1.0\n        this.opts.trailing = this.opts.strict !== true;\n      }\n\n      const { regexp, keys } = pathToRegexp(this.path, this.opts);\n      this.regexp = regexp;\n      this.paramNames = keys;\n    }\n  }\n\n  /**\n   * Returns whether request `path` matches route.\n   *\n   * @param {String} path\n   * @returns {Boolean}\n   * @private\n   */\n  match(path) {\n    return this.regexp.test(path);\n  }\n\n  /**\n   * Returns map of URL parameters for given `path` and `paramNames`.\n   *\n   * @param {String} path\n   * @param {Array.<String>} captures\n   * @param {Object=} params\n   * @returns {Object}\n   * @private\n   */\n  params(path, captures, params = {}) {\n    for (let len = captures.length, i = 0; i < len; i++) {\n      if (this.paramNames[i]) {\n        const c = captures[i];\n        if (c && c.length > 0)\n          params[this.paramNames[i].name] = c ? safeDecodeURIComponent(c) : c;\n      }\n    }\n\n    return params;\n  }\n\n  /**\n   * Returns array of regexp url path captures.\n   *\n   * @param {String} path\n   * @returns {Array.<String>}\n   * @private\n   */\n  captures(path) {\n    return this.opts.ignoreCaptures ? [] : path.match(this.regexp).slice(1);\n  }\n\n  /**\n   * Generate URL for route using given `params`.\n   *\n   * @example\n   *\n   * ```javascript\n   * const route = new Layer('/users/:id', ['GET'], fn);\n   *\n   * route.url({ id: 123 }); // => \"/users/123\"\n   * ```\n   *\n   * @param {Object} params url parameters\n   * @returns {String}\n   * @private\n   */\n  url(params, options) {\n    let args = params;\n    const url = this.path.replace(/\\(\\.\\*\\)/g, '');\n\n    if (typeof params !== 'object') {\n      args = Array.prototype.slice.call(arguments);\n      if (typeof args[args.length - 1] === 'object') {\n        options = args[args.length - 1];\n        args = args.slice(0, -1);\n      }\n    }\n\n    const toPath = compile(url, { encode: encodeURIComponent, ...options });\n    let replaced;\n    const { tokens } = parse(url);\n    let replace = {};\n\n    if (Array.isArray(args)) {\n      for (let len = tokens.length, i = 0, j = 0; i < len; i++) {\n        if (tokens[i].name) {\n          replace[tokens[i].name] = args[j++];\n        }\n      }\n    } else if (tokens.some((token) => token.name)) {\n      replace = params;\n    } else if (!options) {\n      options = params;\n    }\n\n    for (const [key, value] of Object.entries(replace)) {\n      replace[key] = String(value);\n    }\n\n    replaced = toPath(replace);\n\n    if (options && options.query) {\n      replaced = parseUrl(replaced);\n      if (typeof options.query === 'string') {\n        replaced.search = options.query;\n      } else {\n        replaced.search = undefined;\n        replaced.query = options.query;\n      }\n\n      return formatUrl(replaced);\n    }\n\n    return replaced;\n  }\n\n  /**\n   * Run validations on route named parameters.\n   *\n   * @example\n   *\n   * ```javascript\n   * router\n   *   .param('user', function (id, ctx, next) {\n   *     ctx.user = users[id];\n   *     if (!ctx.user) return ctx.status = 404;\n   *     next();\n   *   })\n   *   .get('/users/:user', function (ctx, next) {\n   *     ctx.body = ctx.user;\n   *   });\n   * ```\n   *\n   * @param {String} param\n   * @param {Function} middleware\n   * @returns {Layer}\n   * @private\n   */\n  param(param, fn) {\n    const { stack } = this;\n    const params = this.paramNames;\n    const middleware = function (ctx, next) {\n      return fn.call(this, ctx.params[param], ctx, next);\n    };\n\n    middleware.param = param;\n\n    const names = params.map(function (p) {\n      return p.name;\n    });\n\n    const x = names.indexOf(param);\n    if (x > -1) {\n      // iterate through the stack, to figure out where to place the handler fn\n      stack.some((fn, i) => {\n        // param handlers are always first, so when we find an fn w/o a param property, stop here\n        // if the param handler at this part of the stack comes after the one we are adding, stop here\n        if (!fn.param || names.indexOf(fn.param) > x) {\n          // inject this param handler right before the current item\n          stack.splice(i, 0, middleware);\n          return true; // then break the loop\n        }\n      });\n    }\n\n    return this;\n  }\n\n  /**\n   * Prefix route path.\n   *\n   * @param {String} prefix\n   * @returns {Layer}\n   * @private\n   */\n  setPrefix(prefix) {\n    if (this.path) {\n      this.path =\n        this.path !== '/' || this.opts.strict === true\n          ? `${prefix}${this.path}`\n          : prefix;\n      if (this.opts.pathAsRegExp === true || prefix instanceof RegExp) {\n        this.regexp = new RegExp(this.path);\n      } else if (this.path) {\n        const { regexp, keys } = pathToRegexp(this.path, this.opts);\n        this.regexp = regexp;\n        this.paramNames = keys;\n      }\n    }\n\n    return this;\n  }\n};\n\n/**\n * Safe decodeURIComponent, won't throw any error.\n * If `decodeURIComponent` error happen, just return the original value.\n *\n * @param {String} text\n * @returns {String} URL decode original string.\n * @private\n */\n\nfunction safeDecodeURIComponent(text) {\n  try {\n    // TODO: take a look on `safeDecodeURIComponent` if we use it only with route params let's remove the `replace` method otherwise make it flexible.\n    // @link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent#decoding_query_parameters_from_a_url\n    return decodeURIComponent(text.replace(/\\+/g, ' '));\n  } catch {\n    return text;\n  }\n}\n", "/**\n * RESTful resource routing middleware for koa.\n *\n * @author Alex Mingoia <talk@alexmingoia.com>\n * @link https://github.com/alexmingoia/koa-router\n */\nconst http = require('node:http');\n\nconst debug = require('debug')('koa-router');\n\nconst compose = require('koa-compose');\nconst HttpError = require('http-errors');\nconst { pathToRegexp } = require('path-to-regexp');\n\nconst Layer = require('./layer');\n\nconst methods = http.METHODS.map((method) => method.toLowerCase());\n\n/**\n * @module koa-router\n */\nclass Router {\n  /**\n   * Create a new router.\n   *\n   * @example\n   *\n   * Basic usage:\n   *\n   * ```javascript\n   * const Koa = require('koa');\n   * const Router = require('@koa/router');\n   *\n   * const app = new Koa();\n   * const router = new Router();\n   *\n   * router.get('/', (ctx, next) => {\n   *   // ctx.router available\n   * });\n   *\n   * app\n   *   .use(router.routes())\n   *   .use(router.allowedMethods());\n   * ```\n   *\n   * @alias module:koa-router\n   * @param {Object=} opts\n   * @param {Boolean=false} opts.exclusive only run last matched route's controller when there are multiple matches\n   * @param {String=} opts.prefix prefix router paths\n   * @param {String|RegExp=} opts.host host for router match\n   * @constructor\n   */\n  constructor(opts = {}) {\n    if (!(this instanceof Router)) return new Router(opts);  \n\n    this.opts = opts;\n    this.methods = this.opts.methods || [\n      'HEAD',\n      'OPTIONS',\n      'GET',\n      'PUT',\n      'PATCH',\n      'POST',\n      'DELETE'\n    ];\n    this.exclusive = Boolean(this.opts.exclusive);\n\n    this.params = {};\n    this.stack = [];\n    this.host = this.opts.host;\n  }\n\n  /**\n   * Generate URL from url pattern and given `params`.\n   *\n   * @example\n   *\n   * ```javascript\n   * const url = Router.url('/users/:id', {id: 1});\n   * // => \"/users/1\"\n   * ```\n   *\n   * @param {String} path url pattern\n   * @param {Object} params url parameters\n   * @returns {String}\n   */\n  static url(path, ...args) {\n    return Layer.prototype.url.apply({ path }, args);\n  }\n\n  /**\n   * Use given middleware.\n   *\n   * Middleware run in the order they are defined by `.use()`. They are invoked\n   * sequentially, requests start at the first middleware and work their way\n   * \"down\" the middleware stack.\n   *\n   * @example\n   *\n   * ```javascript\n   * // session middleware will run before authorize\n   * router\n   *   .use(session())\n   *   .use(authorize());\n   *\n   * // use middleware only with given path\n   * router.use('/users', userAuth());\n   *\n   * // or with an array of paths\n   * router.use(['/users', '/admin'], userAuth());\n   *\n   * app.use(router.routes());\n   * ```\n   *\n   * @param {String=} path\n   * @param {Function} middleware\n   * @param {Function=} ...\n   * @returns {Router}\n   */\n  use(...middleware) {\n    const router = this;\n    let path;\n\n    // support array of paths\n    if (Array.isArray(middleware[0]) && typeof middleware[0][0] === 'string') {\n      const arrPaths = middleware[0];\n      for (const p of arrPaths) {\n        router.use.apply(router, [p, ...middleware.slice(1)]);\n      }\n\n      return this;\n    }\n\n    const hasPath = typeof middleware[0] === 'string';\n    if (hasPath) path = middleware.shift();\n\n    for (const m of middleware) {\n      if (m.router) {\n        const cloneRouter = Object.assign(\n          Object.create(Router.prototype),\n          m.router,\n          {\n            stack: [...m.router.stack]\n          }\n        );\n\n        for (let j = 0; j < cloneRouter.stack.length; j++) {\n          const nestedLayer = cloneRouter.stack[j];\n          const cloneLayer = Object.assign(\n            Object.create(Layer.prototype),\n            nestedLayer\n          );\n\n          if (path) cloneLayer.setPrefix(path);\n          if (router.opts.prefix) cloneLayer.setPrefix(router.opts.prefix);\n          router.stack.push(cloneLayer);\n          cloneRouter.stack[j] = cloneLayer;\n        }\n\n        if (router.params) {\n          const routerParams = Object.keys(router.params);\n          for (const key of routerParams) {\n            cloneRouter.param(key, router.params[key]);\n          }\n        }\n      } else {\n        const { keys } = pathToRegexp(router.opts.prefix || '', router.opts);\n        const routerPrefixHasParam = Boolean(\n          router.opts.prefix && keys.length > 0\n        );\n        router.register(path || '([^/]*)', [], m, {\n          end: false,\n          ignoreCaptures: !hasPath && !routerPrefixHasParam,\n          pathAsRegExp: true\n        });\n      }\n    }\n\n    return this;\n  }\n\n  /**\n   * Set the path prefix for a Router instance that was already initialized.\n   *\n   * @example\n   *\n   * ```javascript\n   * router.prefix('/things/:thing_id')\n   * ```\n   *\n   * @param {String} prefix\n   * @returns {Router}\n   */\n  prefix(prefix) {\n    prefix = prefix.replace(/\\/$/, '');\n\n    this.opts.prefix = prefix;\n\n    for (let i = 0; i < this.stack.length; i++) {\n      const route = this.stack[i];\n      route.setPrefix(prefix);\n    }\n\n    return this;\n  }\n\n  /**\n   * Returns router middleware which dispatches a route matching the request.\n   *\n   * @returns {Function}\n   */\n  middleware() {\n    const router = this;\n    const dispatch = (ctx, next) => {\n      debug('%s %s', ctx.method, ctx.path);\n\n      const hostMatched = router.matchHost(ctx.host);\n\n      if (!hostMatched) {\n        return next();\n      }\n\n      const path =\n        router.opts.routerPath ||\n        ctx.newRouterPath ||\n        ctx.path ||\n        ctx.routerPath;\n      const matched = router.match(path, ctx.method);\n      if (ctx.matched) {\n        ctx.matched.push.apply(ctx.matched, matched.path);\n      } else {\n        ctx.matched = matched.path;\n      }\n\n      ctx.router = router;\n\n      if (!matched.route) return next();\n\n      const matchedLayers = matched.pathAndMethod;\n      const mostSpecificLayer = matchedLayers[matchedLayers.length - 1];\n      ctx._matchedRoute = mostSpecificLayer.path;\n      if (mostSpecificLayer.name) {\n        ctx._matchedRouteName = mostSpecificLayer.name;\n      }\n\n      const layerChain = (\n        router.exclusive ? [mostSpecificLayer] : matchedLayers\n      ).reduce((memo, layer) => {\n        memo.push((ctx, next) => {\n          ctx.captures = layer.captures(path, ctx.captures);\n          ctx.request.params = layer.params(path, ctx.captures, ctx.params);\n          ctx.params = ctx.request.params;\n          ctx.routerPath = layer.path;\n          ctx.routerName = layer.name;\n          ctx._matchedRoute = layer.path;\n          if (layer.name) {\n            ctx._matchedRouteName = layer.name;\n          }\n\n          return next();\n        });\n        return [...memo, ...layer.stack];\n      }, []);\n\n      return compose(layerChain)(ctx, next);\n    };\n\n    dispatch.router = this;\n\n    return dispatch;\n  }\n\n  routes() {\n    return this.middleware();\n  }\n\n  /**\n   * Returns separate middleware for responding to `OPTIONS` requests with\n   * an `Allow` header containing the allowed methods, as well as responding\n   * with `405 Method Not Allowed` and `501 Not Implemented` as appropriate.\n   *\n   * @example\n   *\n   * ```javascript\n   * const Koa = require('koa');\n   * const Router = require('@koa/router');\n   *\n   * const app = new Koa();\n   * const router = new Router();\n   *\n   * app.use(router.routes());\n   * app.use(router.allowedMethods());\n   * ```\n   *\n   * **Example with [Boom](https://github.com/hapijs/boom)**\n   *\n   * ```javascript\n   * const Koa = require('koa');\n   * const Router = require('@koa/router');\n   * const Boom = require('boom');\n   *\n   * const app = new Koa();\n   * const router = new Router();\n   *\n   * app.use(router.routes());\n   * app.use(router.allowedMethods({\n   *   throw: true,\n   *   notImplemented: () => new Boom.notImplemented(),\n   *   methodNotAllowed: () => new Boom.methodNotAllowed()\n   * }));\n   * ```\n   *\n   * @param {Object=} options\n   * @param {Boolean=} options.throw throw error instead of setting status and header\n   * @param {Function=} options.notImplemented throw the returned value in place of the default NotImplemented error\n   * @param {Function=} options.methodNotAllowed throw the returned value in place of the default MethodNotAllowed error\n   * @returns {Function}\n   */\n  allowedMethods(options = {}) {\n    const implemented = this.methods;\n\n    return (ctx, next) => {\n      return next().then(() => {\n        const allowed = {};\n\n        if (ctx.matched && (!ctx.status || ctx.status === 404)) {\n          for (let i = 0; i < ctx.matched.length; i++) {\n            const route = ctx.matched[i];\n            for (let j = 0; j < route.methods.length; j++) {\n              const method = route.methods[j];\n              allowed[method] = method;\n            }\n          }\n\n          const allowedArr = Object.keys(allowed);\n          if (!implemented.includes(ctx.method)) {\n            if (options.throw) {\n              const notImplementedThrowable =\n                typeof options.notImplemented === 'function'\n                  ? options.notImplemented() // set whatever the user returns from their function\n                  : new HttpError.NotImplemented();\n\n              throw notImplementedThrowable;\n            } else {\n              ctx.status = 501;\n              ctx.set('Allow', allowedArr.join(', '));\n            }\n          } else if (allowedArr.length > 0) {\n            if (ctx.method === 'OPTIONS') {\n              ctx.status = 200;\n              ctx.body = '';\n              ctx.set('Allow', allowedArr.join(', '));\n            } else if (!allowed[ctx.method]) {\n              if (options.throw) {\n                const notAllowedThrowable =\n                  typeof options.methodNotAllowed === 'function'\n                    ? options.methodNotAllowed() // set whatever the user returns from their function\n                    : new HttpError.MethodNotAllowed();\n\n                throw notAllowedThrowable;\n              } else {\n                ctx.status = 405;\n                ctx.set('Allow', allowedArr.join(', '));\n              }\n            }\n          }\n        }\n      });\n    };\n  }\n\n  /**\n   * Register route with all methods.\n   *\n   * @param {String} name Optional.\n   * @param {String} path\n   * @param {Function=} middleware You may also pass multiple middleware.\n   * @param {Function} callback\n   * @returns {Router}\n   */\n  all(name, path, middleware) {\n    if (typeof path === 'string' || path instanceof RegExp) {\n      middleware = Array.prototype.slice.call(arguments, 2);\n    } else {\n      middleware = Array.prototype.slice.call(arguments, 1);\n      path = name;\n      name = null;\n    }\n\n    // Sanity check to ensure we have a viable path candidate (eg: string|regex|non-empty array)\n    if (\n      typeof path !== 'string' &&\n      !(path instanceof RegExp) &&\n      (!Array.isArray(path) || path.length === 0)\n    )\n      throw new Error('You have to provide a path when adding an all handler');\n\n    const opts = {\n      name,\n      pathAsRegExp: path instanceof RegExp\n    };\n\n    this.register(path, methods, middleware, { ...this.opts, ...opts });\n\n    return this;\n  }\n\n  /**\n   * Redirect `source` to `destination` URL with optional 30x status `code`.\n   *\n   * Both `source` and `destination` can be route names.\n   *\n   * ```javascript\n   * router.redirect('/login', 'sign-in');\n   * ```\n   *\n   * This is equivalent to:\n   *\n   * ```javascript\n   * router.all('/login', ctx => {\n   *   ctx.redirect('/sign-in');\n   *   ctx.status = 301;\n   * });\n   * ```\n   *\n   * @param {String} source URL or route name.\n   * @param {String} destination URL or route name.\n   * @param {Number=} code HTTP status code (default: 301).\n   * @returns {Router}\n   */\n  redirect(source, destination, code) {\n    // lookup source route by name\n    if (typeof source === 'symbol' || source[0] !== '/') {\n      source = this.url(source);\n      if (source instanceof Error) throw source;\n    }\n\n    // lookup destination route by name\n    if (\n      typeof destination === 'symbol' ||\n      (destination[0] !== '/' && !destination.includes('://'))\n    ) {\n      destination = this.url(destination);\n      if (destination instanceof Error) throw destination;\n    }\n\n    return this.all(source, (ctx) => {\n      ctx.redirect(destination);\n      ctx.status = code || 301;\n    });\n  }\n\n  /**\n   * Create and register a route.\n   *\n   * @param {String} path Path string.\n   * @param {Array.<String>} methods Array of HTTP verbs.\n   * @param {Function} middleware Multiple middleware also accepted.\n   * @returns {Layer}\n   * @private\n   */\n  register(path, methods, middleware, newOpts = {}) {\n    const router = this;\n    const { stack } = this;\n    const opts = { ...this.opts, ...newOpts };\n    // support array of paths\n    if (Array.isArray(path)) {\n      for (const curPath of path) {\n        router.register.call(router, curPath, methods, middleware, opts);\n      }\n\n      return this;\n    }\n\n    // create route\n    const route = new Layer(path, methods, middleware, {\n      end: opts.end === false ? opts.end : true,\n      name: opts.name,\n      sensitive: opts.sensitive || false,\n      strict: opts.strict || false,\n      prefix: opts.prefix || '',\n      ignoreCaptures: opts.ignoreCaptures,\n      pathAsRegExp: opts.pathAsRegExp\n    });\n\n    // if parent prefix exists, add prefix to new route\n    if (this.opts.prefix) {\n      route.setPrefix(this.opts.prefix);\n    }\n\n    // add parameter middleware\n    for (let i = 0; i < Object.keys(this.params).length; i++) {\n      const param = Object.keys(this.params)[i];\n      route.param(param, this.params[param]);\n    }\n\n    stack.push(route);\n\n    debug('defined route %s %s', route.methods, route.path);\n\n    return route;\n  }\n\n  /**\n   * Lookup route with given `name`.\n   *\n   * @param {String} name\n   * @returns {Layer|false}\n   */\n  route(name) {\n    const routes = this.stack;\n\n    for (let len = routes.length, i = 0; i < len; i++) {\n      if (routes[i].name && routes[i].name === name) return routes[i];\n    }\n\n    return false;\n  }\n\n  /**\n   * Generate URL for route. Takes a route name and map of named `params`.\n   *\n   * @example\n   *\n   * ```javascript\n   * router.get('user', '/users/:id', (ctx, next) => {\n   *   // ...\n   * });\n   *\n   * router.url('user', 3);\n   * // => \"/users/3\"\n   *\n   * router.url('user', { id: 3 });\n   * // => \"/users/3\"\n   *\n   * router.use((ctx, next) => {\n   *   // redirect to named route\n   *   ctx.redirect(ctx.router.url('sign-in'));\n   * })\n   *\n   * router.url('user', { id: 3 }, { query: { limit: 1 } });\n   * // => \"/users/3?limit=1\"\n   *\n   * router.url('user', { id: 3 }, { query: \"limit=1\" });\n   * // => \"/users/3?limit=1\"\n   * ```\n   *\n   * @param {String} name route name\n   * @param {Object} params url parameters\n   * @param {Object} [options] options parameter\n   * @param {Object|String} [options.query] query options\n   * @returns {String|Error}\n   */\n  url(name, ...args) {\n    const route = this.route(name);\n    if (route) return route.url.apply(route, args);\n\n    return new Error(`No route found for name: ${String(name)}`);\n  }\n\n  /**\n   * Match given `path` and return corresponding routes.\n   *\n   * @param {String} path\n   * @param {String} method\n   * @returns {Object.<path, pathAndMethod>} returns layers that matched path and\n   * path and method.\n   * @private\n   */\n  match(path, method) {\n    const layers = this.stack;\n    let layer;\n    const matched = {\n      path: [],\n      pathAndMethod: [],\n      route: false\n    };\n\n    for (let len = layers.length, i = 0; i < len; i++) {\n      layer = layers[i];\n\n      debug('test %s %s', layer.path, layer.regexp);\n\n      if (layer.match(path)) {\n        matched.path.push(layer);\n\n        if (layer.methods.length === 0 || layer.methods.includes(method)) {\n          matched.pathAndMethod.push(layer);\n          if (layer.methods.length > 0) matched.route = true;\n        }\n      }\n    }\n\n    return matched;\n  }\n\n  /**\n   * Match given `input` to allowed host\n   * @param {String} input\n   * @returns {boolean}\n   */\n  matchHost(input) {\n    const { host } = this;\n\n    if (!host) {\n      return true;\n    }\n\n    if (!input) {\n      return false;\n    }\n\n    if (typeof host === 'string') {\n      return input === host;\n    }\n\n    if (typeof host === 'object' && host instanceof RegExp) {\n      return host.test(input);\n    }\n  }\n\n  /**\n   * Run middleware for named route parameters. Useful for auto-loading or\n   * validation.\n   *\n   * @example\n   *\n   * ```javascript\n   * router\n   *   .param('user', (id, ctx, next) => {\n   *     ctx.user = users[id];\n   *     if (!ctx.user) return ctx.status = 404;\n   *     return next();\n   *   })\n   *   .get('/users/:user', ctx => {\n   *     ctx.body = ctx.user;\n   *   })\n   *   .get('/users/:user/friends', ctx => {\n   *     return ctx.user.getFriends().then(function(friends) {\n   *       ctx.body = friends;\n   *     });\n   *   })\n   *   // /users/3 => {\"id\": 3, \"name\": \"Alex\"}\n   *   // /users/3/friends => [{\"id\": 4, \"name\": \"TJ\"}]\n   * ```\n   *\n   * @param {String} param\n   * @param {Function} middleware\n   * @returns {Router}\n   */\n  param(param, middleware) {\n    this.params[param] = middleware;\n    for (let i = 0; i < this.stack.length; i++) {\n      const route = this.stack[i];\n      route.param(param, middleware);\n    }\n\n    return this;\n  }\n}\n\n/**\n * Create `router.verb()` methods, where *verb* is one of the HTTP verbs such\n * as `router.get()` or `router.post()`.\n *\n * Match URL patterns to callback functions or controller actions using `router.verb()`,\n * where **verb** is one of the HTTP verbs such as `router.get()` or `router.post()`.\n *\n * Additionally, `router.all()` can be used to match against all methods.\n *\n * ```javascript\n * router\n *   .get('/', (ctx, next) => {\n *     ctx.body = 'Hello World!';\n *   })\n *   .post('/users', (ctx, next) => {\n *     // ...\n *   })\n *   .put('/users/:id', (ctx, next) => {\n *     // ...\n *   })\n *   .del('/users/:id', (ctx, next) => {\n *     // ...\n *   })\n *   .all('/users/:id', (ctx, next) => {\n *     // ...\n *   });\n * ```\n *\n * When a route is matched, its path is available at `ctx._matchedRoute` and if named,\n * the name is available at `ctx._matchedRouteName`\n *\n * Route paths will be translated to regular expressions using\n * [path-to-regexp](https://github.com/pillarjs/path-to-regexp).\n *\n * Query strings will not be considered when matching requests.\n *\n * #### Named routes\n *\n * Routes can optionally have names. This allows generation of URLs and easy\n * renaming of URLs during development.\n *\n * ```javascript\n * router.get('user', '/users/:id', (ctx, next) => {\n *  // ...\n * });\n *\n * router.url('user', 3);\n * // => \"/users/3\"\n * ```\n *\n * #### Multiple middleware\n *\n * Multiple middleware may be given:\n *\n * ```javascript\n * router.get(\n *   '/users/:id',\n *   (ctx, next) => {\n *     return User.findOne(ctx.params.id).then(function(user) {\n *       ctx.user = user;\n *       next();\n *     });\n *   },\n *   ctx => {\n *     console.log(ctx.user);\n *     // => { id: 17, name: \"Alex\" }\n *   }\n * );\n * ```\n *\n * ### Nested routers\n *\n * Nesting routers is supported:\n *\n * ```javascript\n * const forums = new Router();\n * const posts = new Router();\n *\n * posts.get('/', (ctx, next) => {...});\n * posts.get('/:pid', (ctx, next) => {...});\n * forums.use('/forums/:fid/posts', posts.routes(), posts.allowedMethods());\n *\n * // responds to \"/forums/123/posts\" and \"/forums/123/posts/123\"\n * app.use(forums.routes());\n * ```\n *\n * #### Router prefixes\n *\n * Route paths can be prefixed at the router level:\n *\n * ```javascript\n * const router = new Router({\n *   prefix: '/users'\n * });\n *\n * router.get('/', ...); // responds to \"/users\"\n * router.get('/:id', ...); // responds to \"/users/:id\"\n * ```\n *\n * #### URL parameters\n *\n * Named route parameters are captured and added to `ctx.params`.\n *\n * ```javascript\n * router.get('/:category/:title', (ctx, next) => {\n *   console.log(ctx.params);\n *   // => { category: 'programming', title: 'how-to-node' }\n * });\n * ```\n *\n * The [path-to-regexp](https://github.com/pillarjs/path-to-regexp) module is\n * used to convert paths to regular expressions.\n *\n *\n * ### Match host for each router instance\n *\n * ```javascript\n * const router = new Router({\n *    host: 'example.domain' // only match if request host exactly equal `example.domain`\n * });\n *\n * ```\n *\n * OR host cloud be a regexp\n *\n * ```javascript\n * const router = new Router({\n *     host: /.*\\.?example\\.domain$/ // all host end with .example.domain would be matched\n * });\n * ```\n *\n * @name get|put|post|patch|delete|del\n * @memberof module:koa-router.prototype\n * @param {String} path\n * @param {Function=} middleware route middleware(s)\n * @param {Function} callback route callback\n * @returns {Router}\n */\nfor (const method of methods) {\n  Router.prototype[method] = function (name, path, middleware) {\n    if (typeof path === 'string' || path instanceof RegExp) {\n      middleware = Array.prototype.slice.call(arguments, 2);\n    } else {\n      middleware = Array.prototype.slice.call(arguments, 1);\n      path = name;\n      name = null;\n    }\n\n    // Sanity check to ensure we have a viable path candidate (eg: string|regex|non-empty array)\n    if (\n      typeof path !== 'string' &&\n      !(path instanceof RegExp) &&\n      (!Array.isArray(path) || path.length === 0)\n    )\n      throw new Error(\n        `You have to provide a path when adding a ${method} handler`\n      );\n\n    const opts = {\n      name,\n      pathAsRegExp: path instanceof RegExp\n    };\n\n    // pass opts to register call on verb methods\n    this.register(path, [method], middleware, { ...this.opts, ...opts });\n    return this;\n  };\n}\n\n// Alias for `router.delete()` because delete is a reserved word\n \nRouter.prototype.del = Router.prototype['delete'];\n\nmodule.exports = Router;\n", "/*!\n * media-typer\n * Copyright(c) 2014 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * RegExp to match *( \";\" parameter ) in RFC 2616 sec 3.7\n *\n * parameter     = token \"=\" ( token | quoted-string )\n * token         = 1*<any CHAR except CTLs or separators>\n * separators    = \"(\" | \")\" | \"<\" | \">\" | \"@\"\n *               | \",\" | \";\" | \":\" | \"\\\" | <\">\n *               | \"/\" | \"[\" | \"]\" | \"?\" | \"=\"\n *               | \"{\" | \"}\" | SP | HT\n * quoted-string = ( <\"> *(qdtext | quoted-pair ) <\"> )\n * qdtext        = <any TEXT except <\">>\n * quoted-pair   = \"\\\" CHAR\n * CHAR          = <any US-ASCII character (octets 0 - 127)>\n * TEXT          = <any OCTET except CTLs, but including LWS>\n * LWS           = [CRLF] 1*( SP | HT )\n * CRLF          = CR LF\n * CR            = <US-ASCII CR, carriage return (13)>\n * LF            = <US-ASCII LF, linefeed (10)>\n * SP            = <US-ASCII SP, space (32)>\n * SHT           = <US-ASCII HT, horizontal-tab (9)>\n * CTL           = <any US-ASCII control character (octets 0 - 31) and DEL (127)>\n * OCTET         = <any 8-bit sequence of data>\n */\nvar paramRegExp = /; *([!#$%&'\\*\\+\\-\\.0-9A-Z\\^_`a-z\\|~]+) *= *(\"(?:[ !\\u0023-\\u005b\\u005d-\\u007e\\u0080-\\u00ff]|\\\\[\\u0020-\\u007e])*\"|[!#$%&'\\*\\+\\-\\.0-9A-Z\\^_`a-z\\|~]+) */g;\nvar textRegExp = /^[\\u0020-\\u007e\\u0080-\\u00ff]+$/\nvar tokenRegExp = /^[!#$%&'\\*\\+\\-\\.0-9A-Z\\^_`a-z\\|~]+$/\n\n/**\n * RegExp to match quoted-pair in RFC 2616\n *\n * quoted-pair = \"\\\" CHAR\n * CHAR        = <any US-ASCII character (octets 0 - 127)>\n */\nvar qescRegExp = /\\\\([\\u0000-\\u007f])/g;\n\n/**\n * RegExp to match chars that must be quoted-pair in RFC 2616\n */\nvar quoteRegExp = /([\\\\\"])/g;\n\n/**\n * RegExp to match type in RFC 6838\n *\n * type-name = restricted-name\n * subtype-name = restricted-name\n * restricted-name = restricted-name-first *126restricted-name-chars\n * restricted-name-first  = ALPHA / DIGIT\n * restricted-name-chars  = ALPHA / DIGIT / \"!\" / \"#\" /\n *                          \"$\" / \"&\" / \"-\" / \"^\" / \"_\"\n * restricted-name-chars =/ \".\" ; Characters before first dot always\n *                              ; specify a facet name\n * restricted-name-chars =/ \"+\" ; Characters after last plus always\n *                              ; specify a structured syntax suffix\n * ALPHA =  %x41-5A / %x61-7A   ; A-Z / a-z\n * DIGIT =  %x30-39             ; 0-9\n */\nvar subtypeNameRegExp = /^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/\nvar typeNameRegExp = /^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/\nvar typeRegExp = /^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/;\n\n/**\n * Module exports.\n */\n\nexports.format = format\nexports.parse = parse\n\n/**\n * Format object to media type.\n *\n * @param {object} obj\n * @return {string}\n * @api public\n */\n\nfunction format(obj) {\n  if (!obj || typeof obj !== 'object') {\n    throw new TypeError('argument obj is required')\n  }\n\n  var parameters = obj.parameters\n  var subtype = obj.subtype\n  var suffix = obj.suffix\n  var type = obj.type\n\n  if (!type || !typeNameRegExp.test(type)) {\n    throw new TypeError('invalid type')\n  }\n\n  if (!subtype || !subtypeNameRegExp.test(subtype)) {\n    throw new TypeError('invalid subtype')\n  }\n\n  // format as type/subtype\n  var string = type + '/' + subtype\n\n  // append +suffix\n  if (suffix) {\n    if (!typeNameRegExp.test(suffix)) {\n      throw new TypeError('invalid suffix')\n    }\n\n    string += '+' + suffix\n  }\n\n  // append parameters\n  if (parameters && typeof parameters === 'object') {\n    var param\n    var params = Object.keys(parameters).sort()\n\n    for (var i = 0; i < params.length; i++) {\n      param = params[i]\n\n      if (!tokenRegExp.test(param)) {\n        throw new TypeError('invalid parameter name')\n      }\n\n      string += '; ' + param + '=' + qstring(parameters[param])\n    }\n  }\n\n  return string\n}\n\n/**\n * Parse media type to object.\n *\n * @param {string|object} string\n * @return {Object}\n * @api public\n */\n\nfunction parse(string) {\n  if (!string) {\n    throw new TypeError('argument string is required')\n  }\n\n  // support req/res-like objects as argument\n  if (typeof string === 'object') {\n    string = getcontenttype(string)\n  }\n\n  if (typeof string !== 'string') {\n    throw new TypeError('argument string is required to be a string')\n  }\n\n  var index = string.indexOf(';')\n  var type = index !== -1\n    ? string.substr(0, index)\n    : string\n\n  var key\n  var match\n  var obj = splitType(type)\n  var params = {}\n  var value\n\n  paramRegExp.lastIndex = index\n\n  while (match = paramRegExp.exec(string)) {\n    if (match.index !== index) {\n      throw new TypeError('invalid parameter format')\n    }\n\n    index += match[0].length\n    key = match[1].toLowerCase()\n    value = match[2]\n\n    if (value[0] === '\"') {\n      // remove quotes and escapes\n      value = value\n        .substr(1, value.length - 2)\n        .replace(qescRegExp, '$1')\n    }\n\n    params[key] = value\n  }\n\n  if (index !== -1 && index !== string.length) {\n    throw new TypeError('invalid parameter format')\n  }\n\n  obj.parameters = params\n\n  return obj\n}\n\n/**\n * Get content-type from req/res objects.\n *\n * @param {object}\n * @return {Object}\n * @api private\n */\n\nfunction getcontenttype(obj) {\n  if (typeof obj.getHeader === 'function') {\n    // res-like\n    return obj.getHeader('content-type')\n  }\n\n  if (typeof obj.headers === 'object') {\n    // req-like\n    return obj.headers && obj.headers['content-type']\n  }\n}\n\n/**\n * Quote a string if necessary.\n *\n * @param {string} val\n * @return {string}\n * @api private\n */\n\nfunction qstring(val) {\n  var str = String(val)\n\n  // no need to quote tokens\n  if (tokenRegExp.test(str)) {\n    return str\n  }\n\n  if (str.length > 0 && !textRegExp.test(str)) {\n    throw new TypeError('invalid parameter value')\n  }\n\n  return '\"' + str.replace(quoteRegExp, '\\\\$1') + '\"'\n}\n\n/**\n * Simply \"type/subtype+siffx\" into parts.\n *\n * @param {string} string\n * @return {Object}\n * @api private\n */\n\nfunction splitType(string) {\n  var match = typeRegExp.exec(string.toLowerCase())\n\n  if (!match) {\n    throw new TypeError('invalid media type')\n  }\n\n  var type = match[1]\n  var subtype = match[2]\n  var suffix\n\n  // suffix after last +\n  var index = subtype.lastIndexOf('+')\n  if (index !== -1) {\n    suffix = subtype.substr(index + 1)\n    subtype = subtype.substr(0, index)\n  }\n\n  var obj = {\n    type: type,\n    subtype: subtype,\n    suffix: suffix\n  }\n\n  return obj\n}\n", "/*!\n * type-is\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2014-2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar typer = require('media-typer')\nvar mime = require('mime-types')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = typeofrequest\nmodule.exports.is = typeis\nmodule.exports.hasBody = hasbody\nmodule.exports.normalize = normalize\nmodule.exports.match = mimeMatch\n\n/**\n * Compare a `value` content-type with `types`.\n * Each `type` can be an extension like `html`,\n * a special shortcut like `multipart` or `urlencoded`,\n * or a mime type.\n *\n * If no types match, `false` is returned.\n * Otherwise, the first `type` that matches is returned.\n *\n * @param {String} value\n * @param {Array} types\n * @public\n */\n\nfunction typeis (value, types_) {\n  var i\n  var types = types_\n\n  // remove parameters and normalize\n  var val = tryNormalizeType(value)\n\n  // no type or invalid\n  if (!val) {\n    return false\n  }\n\n  // support flattened arguments\n  if (types && !Array.isArray(types)) {\n    types = new Array(arguments.length - 1)\n    for (i = 0; i < types.length; i++) {\n      types[i] = arguments[i + 1]\n    }\n  }\n\n  // no types, return the content type\n  if (!types || !types.length) {\n    return val\n  }\n\n  var type\n  for (i = 0; i < types.length; i++) {\n    if (mimeMatch(normalize(type = types[i]), val)) {\n      return type[0] === '+' || type.indexOf('*') !== -1\n        ? val\n        : type\n    }\n  }\n\n  // no matches\n  return false\n}\n\n/**\n * Check if a request has a request body.\n * A request with a body __must__ either have `transfer-encoding`\n * or `content-length` headers set.\n * http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.3\n *\n * @param {Object} request\n * @return {Boolean}\n * @public\n */\n\nfunction hasbody (req) {\n  return req.headers['transfer-encoding'] !== undefined ||\n    !isNaN(req.headers['content-length'])\n}\n\n/**\n * Check if the incoming request contains the \"Content-Type\"\n * header field, and it contains any of the give mime `type`s.\n * If there is no request body, `null` is returned.\n * If there is no content type, `false` is returned.\n * Otherwise, it returns the first `type` that matches.\n *\n * Examples:\n *\n *     // With Content-Type: text/html; charset=utf-8\n *     this.is('html'); // => 'html'\n *     this.is('text/html'); // => 'text/html'\n *     this.is('text/*', 'application/json'); // => 'text/html'\n *\n *     // When Content-Type is application/json\n *     this.is('json', 'urlencoded'); // => 'json'\n *     this.is('application/json'); // => 'application/json'\n *     this.is('html', 'application/*'); // => 'application/json'\n *\n *     this.is('html'); // => false\n *\n * @param {String|Array} types...\n * @return {String|false|null}\n * @public\n */\n\nfunction typeofrequest (req, types_) {\n  var types = types_\n\n  // no body\n  if (!hasbody(req)) {\n    return null\n  }\n\n  // support flattened arguments\n  if (arguments.length > 2) {\n    types = new Array(arguments.length - 1)\n    for (var i = 0; i < types.length; i++) {\n      types[i] = arguments[i + 1]\n    }\n  }\n\n  // request content type\n  var value = req.headers['content-type']\n\n  return typeis(value, types)\n}\n\n/**\n * Normalize a mime type.\n * If it's a shorthand, expand it to a valid mime type.\n *\n * In general, you probably want:\n *\n *   var type = is(req, ['urlencoded', 'json', 'multipart']);\n *\n * Then use the appropriate body parsers.\n * These three are the most common request body types\n * and are thus ensured to work.\n *\n * @param {String} type\n * @private\n */\n\nfunction normalize (type) {\n  if (typeof type !== 'string') {\n    // invalid type\n    return false\n  }\n\n  switch (type) {\n    case 'urlencoded':\n      return 'application/x-www-form-urlencoded'\n    case 'multipart':\n      return 'multipart/*'\n  }\n\n  if (type[0] === '+') {\n    // \"+json\" -> \"*/*+json\" expando\n    return '*/*' + type\n  }\n\n  return type.indexOf('/') === -1\n    ? mime.lookup(type)\n    : type\n}\n\n/**\n * Check if `expected` mime type\n * matches `actual` mime type with\n * wildcard and +suffix support.\n *\n * @param {String} expected\n * @param {String} actual\n * @return {Boolean}\n * @private\n */\n\nfunction mimeMatch (expected, actual) {\n  // invalid type\n  if (expected === false) {\n    return false\n  }\n\n  // split types\n  var actualParts = actual.split('/')\n  var expectedParts = expected.split('/')\n\n  // invalid format\n  if (actualParts.length !== 2 || expectedParts.length !== 2) {\n    return false\n  }\n\n  // validate type\n  if (expectedParts[0] !== '*' && expectedParts[0] !== actualParts[0]) {\n    return false\n  }\n\n  // validate suffix wildcard\n  if (expectedParts[1].substr(0, 2) === '*+') {\n    return expectedParts[1].length <= actualParts[1].length + 1 &&\n      expectedParts[1].substr(1) === actualParts[1].substr(1 - expectedParts[1].length)\n  }\n\n  // validate subtype\n  if (expectedParts[1] !== '*' && expectedParts[1] !== actualParts[1]) {\n    return false\n  }\n\n  return true\n}\n\n/**\n * Normalize a type and remove parameters.\n *\n * @param {string} value\n * @return {string}\n * @private\n */\n\nfunction normalizeType (value) {\n  // parse the type\n  var type = typer.parse(value)\n\n  // remove the parameters\n  type.parameters = undefined\n\n  // reformat it\n  return typer.format(type)\n}\n\n/**\n * Try to normalize a type and remove parameters.\n *\n * @param {string} value\n * @return {string}\n * @private\n */\n\nfunction tryNormalizeType (value) {\n  if (!value) {\n    return null\n  }\n\n  try {\n    return normalizeType(value)\n  } catch (err) {\n    return null\n  }\n}\n", "\"use strict\";\n\nvar BOMChar = '\\uFEFF';\n\nexports.PrependBOM = PrependBOMWrapper\nfunction PrependBOMWrapper(encoder, options) {\n    this.encoder = encoder;\n    this.addBOM = true;\n}\n\nPrependBOMWrapper.prototype.write = function(str) {\n    if (this.addBOM) {\n        str = BOMChar + str;\n        this.addBOM = false;\n    }\n\n    return this.encoder.write(str);\n}\n\nPrependBOMWrapper.prototype.end = function() {\n    return this.encoder.end();\n}\n\n\n//------------------------------------------------------------------------------\n\nexports.StripBOM = StripBOMWrapper;\nfunction StripBOMWrapper(decoder, options) {\n    this.decoder = decoder;\n    this.pass = false;\n    this.options = options || {};\n}\n\nStripBOMWrapper.prototype.write = function(buf) {\n    var res = this.decoder.write(buf);\n    if (this.pass || !res)\n        return res;\n\n    if (res[0] === BOMChar) {\n        res = res.slice(1);\n        if (typeof this.options.stripBOM === 'function')\n            this.options.stripBOM();\n    }\n\n    this.pass = true;\n    return res;\n}\n\nStripBOMWrapper.prototype.end = function() {\n    return this.decoder.end();\n}\n\n", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Export Node.js internal encodings.\n\nmodule.exports = {\n    // Encodings\n    utf8:   { type: \"_internal\", bomAware: true},\n    cesu8:  { type: \"_internal\", bomAware: true},\n    unicode11utf8: \"utf8\",\n\n    ucs2:   { type: \"_internal\", bomAware: true},\n    utf16le: \"ucs2\",\n\n    binary: { type: \"_internal\" },\n    base64: { type: \"_internal\" },\n    hex:    { type: \"_internal\" },\n\n    // Codec.\n    _internal: InternalCodec,\n};\n\n//------------------------------------------------------------------------------\n\nfunction InternalCodec(codecOptions, iconv) {\n    this.enc = codecOptions.encodingName;\n    this.bomAware = codecOptions.bomAware;\n\n    if (this.enc === \"base64\")\n        this.encoder = InternalEncoderBase64;\n    else if (this.enc === \"cesu8\") {\n        this.enc = \"utf8\"; // Use utf8 for decoding.\n        this.encoder = InternalEncoderCesu8;\n\n        // Add decoder for versions of Node not supporting CESU-8\n        if (Buffer.from('eda0bdedb2a9', 'hex').toString() !== '\uD83D\uDCA9') {\n            this.decoder = InternalDecoderCesu8;\n            this.defaultCharUnicode = iconv.defaultCharUnicode;\n        }\n    }\n}\n\nInternalCodec.prototype.encoder = InternalEncoder;\nInternalCodec.prototype.decoder = InternalDecoder;\n\n//------------------------------------------------------------------------------\n\n// We use node.js internal decoder. Its signature is the same as ours.\nvar StringDecoder = require('string_decoder').StringDecoder;\n\nif (!StringDecoder.prototype.end) // Node v0.8 doesn't have this method.\n    StringDecoder.prototype.end = function() {};\n\n\nfunction InternalDecoder(options, codec) {\n    StringDecoder.call(this, codec.enc);\n}\n\nInternalDecoder.prototype = StringDecoder.prototype;\n\n\n//------------------------------------------------------------------------------\n// Encoder is mostly trivial\n\nfunction InternalEncoder(options, codec) {\n    this.enc = codec.enc;\n}\n\nInternalEncoder.prototype.write = function(str) {\n    return Buffer.from(str, this.enc);\n}\n\nInternalEncoder.prototype.end = function() {\n}\n\n\n//------------------------------------------------------------------------------\n// Except base64 encoder, which must keep its state.\n\nfunction InternalEncoderBase64(options, codec) {\n    this.prevStr = '';\n}\n\nInternalEncoderBase64.prototype.write = function(str) {\n    str = this.prevStr + str;\n    var completeQuads = str.length - (str.length % 4);\n    this.prevStr = str.slice(completeQuads);\n    str = str.slice(0, completeQuads);\n\n    return Buffer.from(str, \"base64\");\n}\n\nInternalEncoderBase64.prototype.end = function() {\n    return Buffer.from(this.prevStr, \"base64\");\n}\n\n\n//------------------------------------------------------------------------------\n// CESU-8 encoder is also special.\n\nfunction InternalEncoderCesu8(options, codec) {\n}\n\nInternalEncoderCesu8.prototype.write = function(str) {\n    var buf = Buffer.alloc(str.length * 3), bufIdx = 0;\n    for (var i = 0; i < str.length; i++) {\n        var charCode = str.charCodeAt(i);\n        // Naive implementation, but it works because CESU-8 is especially easy\n        // to convert from UTF-16 (which all JS strings are encoded in).\n        if (charCode < 0x80)\n            buf[bufIdx++] = charCode;\n        else if (charCode < 0x800) {\n            buf[bufIdx++] = 0xC0 + (charCode >>> 6);\n            buf[bufIdx++] = 0x80 + (charCode & 0x3f);\n        }\n        else { // charCode will always be < 0x10000 in javascript.\n            buf[bufIdx++] = 0xE0 + (charCode >>> 12);\n            buf[bufIdx++] = 0x80 + ((charCode >>> 6) & 0x3f);\n            buf[bufIdx++] = 0x80 + (charCode & 0x3f);\n        }\n    }\n    return buf.slice(0, bufIdx);\n}\n\nInternalEncoderCesu8.prototype.end = function() {\n}\n\n//------------------------------------------------------------------------------\n// CESU-8 decoder is not implemented in Node v4.0+\n\nfunction InternalDecoderCesu8(options, codec) {\n    this.acc = 0;\n    this.contBytes = 0;\n    this.accBytes = 0;\n    this.defaultCharUnicode = codec.defaultCharUnicode;\n}\n\nInternalDecoderCesu8.prototype.write = function(buf) {\n    var acc = this.acc, contBytes = this.contBytes, accBytes = this.accBytes, \n        res = '';\n    for (var i = 0; i < buf.length; i++) {\n        var curByte = buf[i];\n        if ((curByte & 0xC0) !== 0x80) { // Leading byte\n            if (contBytes > 0) { // Previous code is invalid\n                res += this.defaultCharUnicode;\n                contBytes = 0;\n            }\n\n            if (curByte < 0x80) { // Single-byte code\n                res += String.fromCharCode(curByte);\n            } else if (curByte < 0xE0) { // Two-byte code\n                acc = curByte & 0x1F;\n                contBytes = 1; accBytes = 1;\n            } else if (curByte < 0xF0) { // Three-byte code\n                acc = curByte & 0x0F;\n                contBytes = 2; accBytes = 1;\n            } else { // Four or more are not supported for CESU-8.\n                res += this.defaultCharUnicode;\n            }\n        } else { // Continuation byte\n            if (contBytes > 0) { // We're waiting for it.\n                acc = (acc << 6) | (curByte & 0x3f);\n                contBytes--; accBytes++;\n                if (contBytes === 0) {\n                    // Check for overlong encoding, but support Modified UTF-8 (encoding NULL as C0 80)\n                    if (accBytes === 2 && acc < 0x80 && acc > 0)\n                        res += this.defaultCharUnicode;\n                    else if (accBytes === 3 && acc < 0x800)\n                        res += this.defaultCharUnicode;\n                    else\n                        // Actually add character.\n                        res += String.fromCharCode(acc);\n                }\n            } else { // Unexpected continuation byte\n                res += this.defaultCharUnicode;\n            }\n        }\n    }\n    this.acc = acc; this.contBytes = contBytes; this.accBytes = accBytes;\n    return res;\n}\n\nInternalDecoderCesu8.prototype.end = function() {\n    var res = 0;\n    if (this.contBytes > 0)\n        res += this.defaultCharUnicode;\n    return res;\n}\n", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Note: UTF16-LE (or UCS2) codec is Node.js native. See encodings/internal.js\n\n// == UTF16-BE codec. ==========================================================\n\nexports.utf16be = Utf16BECodec;\nfunction Utf16BECodec() {\n}\n\nUtf16BECodec.prototype.encoder = Utf16BEEncoder;\nUtf16BECodec.prototype.decoder = Utf16BEDecoder;\nUtf16BECodec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nfunction Utf16BEEncoder() {\n}\n\nUtf16BEEncoder.prototype.write = function(str) {\n    var buf = Buffer.from(str, 'ucs2');\n    for (var i = 0; i < buf.length; i += 2) {\n        var tmp = buf[i]; buf[i] = buf[i+1]; buf[i+1] = tmp;\n    }\n    return buf;\n}\n\nUtf16BEEncoder.prototype.end = function() {\n}\n\n\n// -- Decoding\n\nfunction Utf16BEDecoder() {\n    this.overflowByte = -1;\n}\n\nUtf16BEDecoder.prototype.write = function(buf) {\n    if (buf.length == 0)\n        return '';\n\n    var buf2 = Buffer.alloc(buf.length + 1),\n        i = 0, j = 0;\n\n    if (this.overflowByte !== -1) {\n        buf2[0] = buf[0];\n        buf2[1] = this.overflowByte;\n        i = 1; j = 2;\n    }\n\n    for (; i < buf.length-1; i += 2, j+= 2) {\n        buf2[j] = buf[i+1];\n        buf2[j+1] = buf[i];\n    }\n\n    this.overflowByte = (i == buf.length-1) ? buf[buf.length-1] : -1;\n\n    return buf2.slice(0, j).toString('ucs2');\n}\n\nUtf16BEDecoder.prototype.end = function() {\n}\n\n\n// == UTF-16 codec =============================================================\n// Decoder chooses automatically from UTF-16LE and UTF-16BE using BOM and space-based heuristic.\n// Defaults to UTF-16LE, as it's prevalent and default in Node.\n// http://en.wikipedia.org/wiki/UTF-16 and http://encoding.spec.whatwg.org/#utf-16le\n// Decoder default can be changed: iconv.decode(buf, 'utf16', {defaultEncoding: 'utf-16be'});\n\n// Encoder uses UTF-16LE and prepends BOM (which can be overridden with addBOM: false).\n\nexports.utf16 = Utf16Codec;\nfunction Utf16Codec(codecOptions, iconv) {\n    this.iconv = iconv;\n}\n\nUtf16Codec.prototype.encoder = Utf16Encoder;\nUtf16Codec.prototype.decoder = Utf16Decoder;\n\n\n// -- Encoding (pass-through)\n\nfunction Utf16Encoder(options, codec) {\n    options = options || {};\n    if (options.addBOM === undefined)\n        options.addBOM = true;\n    this.encoder = codec.iconv.getEncoder('utf-16le', options);\n}\n\nUtf16Encoder.prototype.write = function(str) {\n    return this.encoder.write(str);\n}\n\nUtf16Encoder.prototype.end = function() {\n    return this.encoder.end();\n}\n\n\n// -- Decoding\n\nfunction Utf16Decoder(options, codec) {\n    this.decoder = null;\n    this.initialBytes = [];\n    this.initialBytesLen = 0;\n\n    this.options = options || {};\n    this.iconv = codec.iconv;\n}\n\nUtf16Decoder.prototype.write = function(buf) {\n    if (!this.decoder) {\n        // Codec is not chosen yet. Accumulate initial bytes.\n        this.initialBytes.push(buf);\n        this.initialBytesLen += buf.length;\n        \n        if (this.initialBytesLen < 16) // We need more bytes to use space heuristic (see below)\n            return '';\n\n        // We have enough bytes -> detect endianness.\n        var buf = Buffer.concat(this.initialBytes),\n            encoding = detectEncoding(buf, this.options.defaultEncoding);\n        this.decoder = this.iconv.getDecoder(encoding, this.options);\n        this.initialBytes.length = this.initialBytesLen = 0;\n    }\n\n    return this.decoder.write(buf);\n}\n\nUtf16Decoder.prototype.end = function() {\n    if (!this.decoder) {\n        var buf = Buffer.concat(this.initialBytes),\n            encoding = detectEncoding(buf, this.options.defaultEncoding);\n        this.decoder = this.iconv.getDecoder(encoding, this.options);\n\n        var res = this.decoder.write(buf),\n            trail = this.decoder.end();\n\n        return trail ? (res + trail) : res;\n    }\n    return this.decoder.end();\n}\n\nfunction detectEncoding(buf, defaultEncoding) {\n    var enc = defaultEncoding || 'utf-16le';\n\n    if (buf.length >= 2) {\n        // Check BOM.\n        if (buf[0] == 0xFE && buf[1] == 0xFF) // UTF-16BE BOM\n            enc = 'utf-16be';\n        else if (buf[0] == 0xFF && buf[1] == 0xFE) // UTF-16LE BOM\n            enc = 'utf-16le';\n        else {\n            // No BOM found. Try to deduce encoding from initial content.\n            // Most of the time, the content has ASCII chars (U+00**), but the opposite (U+**00) is uncommon.\n            // So, we count ASCII as if it was LE or BE, and decide from that.\n            var asciiCharsLE = 0, asciiCharsBE = 0, // Counts of chars in both positions\n                _len = Math.min(buf.length - (buf.length % 2), 64); // Len is always even.\n\n            for (var i = 0; i < _len; i += 2) {\n                if (buf[i] === 0 && buf[i+1] !== 0) asciiCharsBE++;\n                if (buf[i] !== 0 && buf[i+1] === 0) asciiCharsLE++;\n            }\n\n            if (asciiCharsBE > asciiCharsLE)\n                enc = 'utf-16be';\n            else if (asciiCharsBE < asciiCharsLE)\n                enc = 'utf-16le';\n        }\n    }\n\n    return enc;\n}\n\n\n", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// UTF-7 codec, according to https://tools.ietf.org/html/rfc2152\n// See also below a UTF-7-IMAP codec, according to http://tools.ietf.org/html/rfc3501#section-5.1.3\n\nexports.utf7 = Utf7Codec;\nexports.unicode11utf7 = 'utf7'; // Alias UNICODE-1-1-UTF-7\nfunction Utf7Codec(codecOptions, iconv) {\n    this.iconv = iconv;\n};\n\nUtf7Codec.prototype.encoder = Utf7Encoder;\nUtf7Codec.prototype.decoder = Utf7Decoder;\nUtf7Codec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nvar nonDirectChars = /[^A-Za-z0-9'\\(\\),-\\.\\/:\\? \\n\\r\\t]+/g;\n\nfunction Utf7Encoder(options, codec) {\n    this.iconv = codec.iconv;\n}\n\nUtf7Encoder.prototype.write = function(str) {\n    // Naive implementation.\n    // Non-direct chars are encoded as \"+<base64>-\"; single \"+\" char is encoded as \"+-\".\n    return Buffer.from(str.replace(nonDirectChars, function(chunk) {\n        return \"+\" + (chunk === '+' ? '' : \n            this.iconv.encode(chunk, 'utf16-be').toString('base64').replace(/=+$/, '')) \n            + \"-\";\n    }.bind(this)));\n}\n\nUtf7Encoder.prototype.end = function() {\n}\n\n\n// -- Decoding\n\nfunction Utf7Decoder(options, codec) {\n    this.iconv = codec.iconv;\n    this.inBase64 = false;\n    this.base64Accum = '';\n}\n\nvar base64Regex = /[A-Za-z0-9\\/+]/;\nvar base64Chars = [];\nfor (var i = 0; i < 256; i++)\n    base64Chars[i] = base64Regex.test(String.fromCharCode(i));\n\nvar plusChar = '+'.charCodeAt(0), \n    minusChar = '-'.charCodeAt(0),\n    andChar = '&'.charCodeAt(0);\n\nUtf7Decoder.prototype.write = function(buf) {\n    var res = \"\", lastI = 0,\n        inBase64 = this.inBase64,\n        base64Accum = this.base64Accum;\n\n    // The decoder is more involved as we must handle chunks in stream.\n\n    for (var i = 0; i < buf.length; i++) {\n        if (!inBase64) { // We're in direct mode.\n            // Write direct chars until '+'\n            if (buf[i] == plusChar) {\n                res += this.iconv.decode(buf.slice(lastI, i), \"ascii\"); // Write direct chars.\n                lastI = i+1;\n                inBase64 = true;\n            }\n        } else { // We decode base64.\n            if (!base64Chars[buf[i]]) { // Base64 ended.\n                if (i == lastI && buf[i] == minusChar) {// \"+-\" -> \"+\"\n                    res += \"+\";\n                } else {\n                    var b64str = base64Accum + buf.slice(lastI, i).toString();\n                    res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n                }\n\n                if (buf[i] != minusChar) // Minus is absorbed after base64.\n                    i--;\n\n                lastI = i+1;\n                inBase64 = false;\n                base64Accum = '';\n            }\n        }\n    }\n\n    if (!inBase64) {\n        res += this.iconv.decode(buf.slice(lastI), \"ascii\"); // Write direct chars.\n    } else {\n        var b64str = base64Accum + buf.slice(lastI).toString();\n\n        var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n        base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.\n        b64str = b64str.slice(0, canBeDecoded);\n\n        res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n    }\n\n    this.inBase64 = inBase64;\n    this.base64Accum = base64Accum;\n\n    return res;\n}\n\nUtf7Decoder.prototype.end = function() {\n    var res = \"\";\n    if (this.inBase64 && this.base64Accum.length > 0)\n        res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), \"utf16-be\");\n\n    this.inBase64 = false;\n    this.base64Accum = '';\n    return res;\n}\n\n\n// UTF-7-IMAP codec.\n// RFC3501 Sec. 5.1.3 Modified UTF-7 (http://tools.ietf.org/html/rfc3501#section-5.1.3)\n// Differences:\n//  * Base64 part is started by \"&\" instead of \"+\"\n//  * Direct characters are 0x20-0x7E, except \"&\" (0x26)\n//  * In Base64, \",\" is used instead of \"/\"\n//  * Base64 must not be used to represent direct characters.\n//  * No implicit shift back from Base64 (should always end with '-')\n//  * String must end in non-shifted position.\n//  * \"-&\" while in base64 is not allowed.\n\n\nexports.utf7imap = Utf7IMAPCodec;\nfunction Utf7IMAPCodec(codecOptions, iconv) {\n    this.iconv = iconv;\n};\n\nUtf7IMAPCodec.prototype.encoder = Utf7IMAPEncoder;\nUtf7IMAPCodec.prototype.decoder = Utf7IMAPDecoder;\nUtf7IMAPCodec.prototype.bomAware = true;\n\n\n// -- Encoding\n\nfunction Utf7IMAPEncoder(options, codec) {\n    this.iconv = codec.iconv;\n    this.inBase64 = false;\n    this.base64Accum = Buffer.alloc(6);\n    this.base64AccumIdx = 0;\n}\n\nUtf7IMAPEncoder.prototype.write = function(str) {\n    var inBase64 = this.inBase64,\n        base64Accum = this.base64Accum,\n        base64AccumIdx = this.base64AccumIdx,\n        buf = Buffer.alloc(str.length*5 + 10), bufIdx = 0;\n\n    for (var i = 0; i < str.length; i++) {\n        var uChar = str.charCodeAt(i);\n        if (0x20 <= uChar && uChar <= 0x7E) { // Direct character or '&'.\n            if (inBase64) {\n                if (base64AccumIdx > 0) {\n                    bufIdx += buf.write(base64Accum.slice(0, base64AccumIdx).toString('base64').replace(/\\//g, ',').replace(/=+$/, ''), bufIdx);\n                    base64AccumIdx = 0;\n                }\n\n                buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.\n                inBase64 = false;\n            }\n\n            if (!inBase64) {\n                buf[bufIdx++] = uChar; // Write direct character\n\n                if (uChar === andChar)  // Ampersand -> '&-'\n                    buf[bufIdx++] = minusChar;\n            }\n\n        } else { // Non-direct character\n            if (!inBase64) {\n                buf[bufIdx++] = andChar; // Write '&', then go to base64 mode.\n                inBase64 = true;\n            }\n            if (inBase64) {\n                base64Accum[base64AccumIdx++] = uChar >> 8;\n                base64Accum[base64AccumIdx++] = uChar & 0xFF;\n\n                if (base64AccumIdx == base64Accum.length) {\n                    bufIdx += buf.write(base64Accum.toString('base64').replace(/\\//g, ','), bufIdx);\n                    base64AccumIdx = 0;\n                }\n            }\n        }\n    }\n\n    this.inBase64 = inBase64;\n    this.base64AccumIdx = base64AccumIdx;\n\n    return buf.slice(0, bufIdx);\n}\n\nUtf7IMAPEncoder.prototype.end = function() {\n    var buf = Buffer.alloc(10), bufIdx = 0;\n    if (this.inBase64) {\n        if (this.base64AccumIdx > 0) {\n            bufIdx += buf.write(this.base64Accum.slice(0, this.base64AccumIdx).toString('base64').replace(/\\//g, ',').replace(/=+$/, ''), bufIdx);\n            this.base64AccumIdx = 0;\n        }\n\n        buf[bufIdx++] = minusChar; // Write '-', then go to direct mode.\n        this.inBase64 = false;\n    }\n\n    return buf.slice(0, bufIdx);\n}\n\n\n// -- Decoding\n\nfunction Utf7IMAPDecoder(options, codec) {\n    this.iconv = codec.iconv;\n    this.inBase64 = false;\n    this.base64Accum = '';\n}\n\nvar base64IMAPChars = base64Chars.slice();\nbase64IMAPChars[','.charCodeAt(0)] = true;\n\nUtf7IMAPDecoder.prototype.write = function(buf) {\n    var res = \"\", lastI = 0,\n        inBase64 = this.inBase64,\n        base64Accum = this.base64Accum;\n\n    // The decoder is more involved as we must handle chunks in stream.\n    // It is forgiving, closer to standard UTF-7 (for example, '-' is optional at the end).\n\n    for (var i = 0; i < buf.length; i++) {\n        if (!inBase64) { // We're in direct mode.\n            // Write direct chars until '&'\n            if (buf[i] == andChar) {\n                res += this.iconv.decode(buf.slice(lastI, i), \"ascii\"); // Write direct chars.\n                lastI = i+1;\n                inBase64 = true;\n            }\n        } else { // We decode base64.\n            if (!base64IMAPChars[buf[i]]) { // Base64 ended.\n                if (i == lastI && buf[i] == minusChar) { // \"&-\" -> \"&\"\n                    res += \"&\";\n                } else {\n                    var b64str = base64Accum + buf.slice(lastI, i).toString().replace(/,/g, '/');\n                    res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n                }\n\n                if (buf[i] != minusChar) // Minus may be absorbed after base64.\n                    i--;\n\n                lastI = i+1;\n                inBase64 = false;\n                base64Accum = '';\n            }\n        }\n    }\n\n    if (!inBase64) {\n        res += this.iconv.decode(buf.slice(lastI), \"ascii\"); // Write direct chars.\n    } else {\n        var b64str = base64Accum + buf.slice(lastI).toString().replace(/,/g, '/');\n\n        var canBeDecoded = b64str.length - (b64str.length % 8); // Minimal chunk: 2 quads -> 2x3 bytes -> 3 chars.\n        base64Accum = b64str.slice(canBeDecoded); // The rest will be decoded in future.\n        b64str = b64str.slice(0, canBeDecoded);\n\n        res += this.iconv.decode(Buffer.from(b64str, 'base64'), \"utf16-be\");\n    }\n\n    this.inBase64 = inBase64;\n    this.base64Accum = base64Accum;\n\n    return res;\n}\n\nUtf7IMAPDecoder.prototype.end = function() {\n    var res = \"\";\n    if (this.inBase64 && this.base64Accum.length > 0)\n        res = this.iconv.decode(Buffer.from(this.base64Accum, 'base64'), \"utf16-be\");\n\n    this.inBase64 = false;\n    this.base64Accum = '';\n    return res;\n}\n\n\n", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Single-byte codec. Needs a 'chars' string parameter that contains 256 or 128 chars that\n// correspond to encoded bytes (if 128 - then lower half is ASCII). \n\nexports._sbcs = SBCSCodec;\nfunction SBCSCodec(codecOptions, iconv) {\n    if (!codecOptions)\n        throw new Error(\"SBCS codec is called without the data.\")\n    \n    // Prepare char buffer for decoding.\n    if (!codecOptions.chars || (codecOptions.chars.length !== 128 && codecOptions.chars.length !== 256))\n        throw new Error(\"Encoding '\"+codecOptions.type+\"' has incorrect 'chars' (must be of len 128 or 256)\");\n    \n    if (codecOptions.chars.length === 128) {\n        var asciiString = \"\";\n        for (var i = 0; i < 128; i++)\n            asciiString += String.fromCharCode(i);\n        codecOptions.chars = asciiString + codecOptions.chars;\n    }\n\n    this.decodeBuf = Buffer.from(codecOptions.chars, 'ucs2');\n    \n    // Encoding buffer.\n    var encodeBuf = Buffer.alloc(65536, iconv.defaultCharSingleByte.charCodeAt(0));\n\n    for (var i = 0; i < codecOptions.chars.length; i++)\n        encodeBuf[codecOptions.chars.charCodeAt(i)] = i;\n\n    this.encodeBuf = encodeBuf;\n}\n\nSBCSCodec.prototype.encoder = SBCSEncoder;\nSBCSCodec.prototype.decoder = SBCSDecoder;\n\n\nfunction SBCSEncoder(options, codec) {\n    this.encodeBuf = codec.encodeBuf;\n}\n\nSBCSEncoder.prototype.write = function(str) {\n    var buf = Buffer.alloc(str.length);\n    for (var i = 0; i < str.length; i++)\n        buf[i] = this.encodeBuf[str.charCodeAt(i)];\n    \n    return buf;\n}\n\nSBCSEncoder.prototype.end = function() {\n}\n\n\nfunction SBCSDecoder(options, codec) {\n    this.decodeBuf = codec.decodeBuf;\n}\n\nSBCSDecoder.prototype.write = function(buf) {\n    // Strings are immutable in JS -> we use ucs2 buffer to speed up computations.\n    var decodeBuf = this.decodeBuf;\n    var newBuf = Buffer.alloc(buf.length*2);\n    var idx1 = 0, idx2 = 0;\n    for (var i = 0; i < buf.length; i++) {\n        idx1 = buf[i]*2; idx2 = i*2;\n        newBuf[idx2] = decodeBuf[idx1];\n        newBuf[idx2+1] = decodeBuf[idx1+1];\n    }\n    return newBuf.toString('ucs2');\n}\n\nSBCSDecoder.prototype.end = function() {\n}\n", "\"use strict\";\n\n// Manually added data to be used by sbcs codec in addition to generated one.\n\nmodule.exports = {\n    // Not supported by iconv, not sure why.\n    \"10029\": \"maccenteuro\",\n    \"maccenteuro\": {\n        \"type\": \"_sbcs\",\n        \"chars\": \"\u00C4\u0100\u0101\u00C9\u0104\u00D6\u00DC\u00E1\u0105\u010C\u00E4\u010D\u0106\u0107\u00E9\u0179\u017A\u010E\u00ED\u010F\u0112\u0113\u0116\u00F3\u0117\u00F4\u00F6\u00F5\u00FA\u011A\u011B\u00FC\u2020\u00B0\u0118\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u0119\u00A8\u2260\u0123\u012E\u012F\u012A\u2264\u2265\u012B\u0136\u2202\u2211\u0142\u013B\u013C\u013D\u013E\u0139\u013A\u0145\u0146\u0143\u00AC\u221A\u0144\u0147\u2206\u00AB\u00BB\u2026\u00A0\u0148\u0150\u00D5\u0151\u014C\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u014D\u0154\u0155\u0158\u2039\u203A\u0159\u0156\u0157\u0160\u201A\u201E\u0161\u015A\u015B\u00C1\u0164\u0165\u00CD\u017D\u017E\u016A\u00D3\u00D4\u016B\u016E\u00DA\u016F\u0170\u0171\u0172\u0173\u00DD\u00FD\u0137\u017B\u0141\u017C\u0122\u02C7\"\n    },\n\n    \"808\": \"cp808\",\n    \"ibm808\": \"cp808\",\n    \"cp808\": {\n        \"type\": \"_sbcs\",\n        \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\u00B0\u2219\u00B7\u221A\u2116\u20AC\u25A0\u00A0\"\n    },\n\n    \"mik\": {\n        \"type\": \"_sbcs\",\n        \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2514\u2534\u252C\u251C\u2500\u253C\u2563\u2551\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2510\u2591\u2592\u2593\u2502\u2524\u2116\u00A7\u2557\u255D\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n    },\n\n    // Aliases of generated encodings.\n    \"ascii8bit\": \"ascii\",\n    \"usascii\": \"ascii\",\n    \"ansix34\": \"ascii\",\n    \"ansix341968\": \"ascii\",\n    \"ansix341986\": \"ascii\",\n    \"csascii\": \"ascii\",\n    \"cp367\": \"ascii\",\n    \"ibm367\": \"ascii\",\n    \"isoir6\": \"ascii\",\n    \"iso646us\": \"ascii\",\n    \"iso646irv\": \"ascii\",\n    \"us\": \"ascii\",\n\n    \"latin1\": \"iso88591\",\n    \"latin2\": \"iso88592\",\n    \"latin3\": \"iso88593\",\n    \"latin4\": \"iso88594\",\n    \"latin5\": \"iso88599\",\n    \"latin6\": \"iso885910\",\n    \"latin7\": \"iso885913\",\n    \"latin8\": \"iso885914\",\n    \"latin9\": \"iso885915\",\n    \"latin10\": \"iso885916\",\n\n    \"csisolatin1\": \"iso88591\",\n    \"csisolatin2\": \"iso88592\",\n    \"csisolatin3\": \"iso88593\",\n    \"csisolatin4\": \"iso88594\",\n    \"csisolatincyrillic\": \"iso88595\",\n    \"csisolatinarabic\": \"iso88596\",\n    \"csisolatingreek\" : \"iso88597\",\n    \"csisolatinhebrew\": \"iso88598\",\n    \"csisolatin5\": \"iso88599\",\n    \"csisolatin6\": \"iso885910\",\n\n    \"l1\": \"iso88591\",\n    \"l2\": \"iso88592\",\n    \"l3\": \"iso88593\",\n    \"l4\": \"iso88594\",\n    \"l5\": \"iso88599\",\n    \"l6\": \"iso885910\",\n    \"l7\": \"iso885913\",\n    \"l8\": \"iso885914\",\n    \"l9\": \"iso885915\",\n    \"l10\": \"iso885916\",\n\n    \"isoir14\": \"iso646jp\",\n    \"isoir57\": \"iso646cn\",\n    \"isoir100\": \"iso88591\",\n    \"isoir101\": \"iso88592\",\n    \"isoir109\": \"iso88593\",\n    \"isoir110\": \"iso88594\",\n    \"isoir144\": \"iso88595\",\n    \"isoir127\": \"iso88596\",\n    \"isoir126\": \"iso88597\",\n    \"isoir138\": \"iso88598\",\n    \"isoir148\": \"iso88599\",\n    \"isoir157\": \"iso885910\",\n    \"isoir166\": \"tis620\",\n    \"isoir179\": \"iso885913\",\n    \"isoir199\": \"iso885914\",\n    \"isoir203\": \"iso885915\",\n    \"isoir226\": \"iso885916\",\n\n    \"cp819\": \"iso88591\",\n    \"ibm819\": \"iso88591\",\n\n    \"cyrillic\": \"iso88595\",\n\n    \"arabic\": \"iso88596\",\n    \"arabic8\": \"iso88596\",\n    \"ecma114\": \"iso88596\",\n    \"asmo708\": \"iso88596\",\n\n    \"greek\" : \"iso88597\",\n    \"greek8\" : \"iso88597\",\n    \"ecma118\" : \"iso88597\",\n    \"elot928\" : \"iso88597\",\n\n    \"hebrew\": \"iso88598\",\n    \"hebrew8\": \"iso88598\",\n\n    \"turkish\": \"iso88599\",\n    \"turkish8\": \"iso88599\",\n\n    \"thai\": \"iso885911\",\n    \"thai8\": \"iso885911\",\n\n    \"celtic\": \"iso885914\",\n    \"celtic8\": \"iso885914\",\n    \"isoceltic\": \"iso885914\",\n\n    \"tis6200\": \"tis620\",\n    \"tis62025291\": \"tis620\",\n    \"tis62025330\": \"tis620\",\n\n    \"10000\": \"macroman\",\n    \"10006\": \"macgreek\",\n    \"10007\": \"maccyrillic\",\n    \"10079\": \"maciceland\",\n    \"10081\": \"macturkish\",\n\n    \"cspc8codepage437\": \"cp437\",\n    \"cspc775baltic\": \"cp775\",\n    \"cspc850multilingual\": \"cp850\",\n    \"cspcp852\": \"cp852\",\n    \"cspc862latinhebrew\": \"cp862\",\n    \"cpgr\": \"cp869\",\n\n    \"msee\": \"cp1250\",\n    \"mscyrl\": \"cp1251\",\n    \"msansi\": \"cp1252\",\n    \"msgreek\": \"cp1253\",\n    \"msturk\": \"cp1254\",\n    \"mshebr\": \"cp1255\",\n    \"msarab\": \"cp1256\",\n    \"winbaltrim\": \"cp1257\",\n\n    \"cp20866\": \"koi8r\",\n    \"20866\": \"koi8r\",\n    \"ibm878\": \"koi8r\",\n    \"cskoi8r\": \"koi8r\",\n\n    \"cp21866\": \"koi8u\",\n    \"21866\": \"koi8u\",\n    \"ibm1168\": \"koi8u\",\n\n    \"strk10482002\": \"rk1048\",\n\n    \"tcvn5712\": \"tcvn\",\n    \"tcvn57121\": \"tcvn\",\n\n    \"gb198880\": \"iso646cn\",\n    \"cn\": \"iso646cn\",\n\n    \"csiso14jisc6220ro\": \"iso646jp\",\n    \"jisc62201969ro\": \"iso646jp\",\n    \"jp\": \"iso646jp\",\n\n    \"cshproman8\": \"hproman8\",\n    \"r8\": \"hproman8\",\n    \"roman8\": \"hproman8\",\n    \"xroman8\": \"hproman8\",\n    \"ibm1051\": \"hproman8\",\n\n    \"mac\": \"macintosh\",\n    \"csmacintosh\": \"macintosh\",\n};\n\n", "\"use strict\";\n\n// Generated data for sbcs codec. Don't edit manually. Regenerate using generation/gen-sbcs.js script.\nmodule.exports = {\n  \"437\": \"cp437\",\n  \"737\": \"cp737\",\n  \"775\": \"cp775\",\n  \"850\": \"cp850\",\n  \"852\": \"cp852\",\n  \"855\": \"cp855\",\n  \"856\": \"cp856\",\n  \"857\": \"cp857\",\n  \"858\": \"cp858\",\n  \"860\": \"cp860\",\n  \"861\": \"cp861\",\n  \"862\": \"cp862\",\n  \"863\": \"cp863\",\n  \"864\": \"cp864\",\n  \"865\": \"cp865\",\n  \"866\": \"cp866\",\n  \"869\": \"cp869\",\n  \"874\": \"windows874\",\n  \"922\": \"cp922\",\n  \"1046\": \"cp1046\",\n  \"1124\": \"cp1124\",\n  \"1125\": \"cp1125\",\n  \"1129\": \"cp1129\",\n  \"1133\": \"cp1133\",\n  \"1161\": \"cp1161\",\n  \"1162\": \"cp1162\",\n  \"1163\": \"cp1163\",\n  \"1250\": \"windows1250\",\n  \"1251\": \"windows1251\",\n  \"1252\": \"windows1252\",\n  \"1253\": \"windows1253\",\n  \"1254\": \"windows1254\",\n  \"1255\": \"windows1255\",\n  \"1256\": \"windows1256\",\n  \"1257\": \"windows1257\",\n  \"1258\": \"windows1258\",\n  \"28591\": \"iso88591\",\n  \"28592\": \"iso88592\",\n  \"28593\": \"iso88593\",\n  \"28594\": \"iso88594\",\n  \"28595\": \"iso88595\",\n  \"28596\": \"iso88596\",\n  \"28597\": \"iso88597\",\n  \"28598\": \"iso88598\",\n  \"28599\": \"iso88599\",\n  \"28600\": \"iso885910\",\n  \"28601\": \"iso885911\",\n  \"28603\": \"iso885913\",\n  \"28604\": \"iso885914\",\n  \"28605\": \"iso885915\",\n  \"28606\": \"iso885916\",\n  \"windows874\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\uFFFD\uFFFD\uFFFD\u2026\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"win874\": \"windows874\",\n  \"cp874\": \"windows874\",\n  \"windows1250\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\u0160\u2039\u015A\u0164\u017D\u0179\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0161\u203A\u015B\u0165\u017E\u017A\u00A0\u02C7\u02D8\u0141\u00A4\u0104\u00A6\u00A7\u00A8\u00A9\u015E\u00AB\u00AC\u00AD\u00AE\u017B\u00B0\u00B1\u02DB\u0142\u00B4\u00B5\u00B6\u00B7\u00B8\u0105\u015F\u00BB\u013D\u02DD\u013E\u017C\u0154\u00C1\u00C2\u0102\u00C4\u0139\u0106\u00C7\u010C\u00C9\u0118\u00CB\u011A\u00CD\u00CE\u010E\u0110\u0143\u0147\u00D3\u00D4\u0150\u00D6\u00D7\u0158\u016E\u00DA\u0170\u00DC\u00DD\u0162\u00DF\u0155\u00E1\u00E2\u0103\u00E4\u013A\u0107\u00E7\u010D\u00E9\u0119\u00EB\u011B\u00ED\u00EE\u010F\u0111\u0144\u0148\u00F3\u00F4\u0151\u00F6\u00F7\u0159\u016F\u00FA\u0171\u00FC\u00FD\u0163\u02D9\"\n  },\n  \"win1250\": \"windows1250\",\n  \"cp1250\": \"windows1250\",\n  \"windows1251\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u040C\u040B\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u045C\u045B\u045F\u00A0\u040E\u045E\u0408\u00A4\u0490\u00A6\u00A7\u0401\u00A9\u0404\u00AB\u00AC\u00AD\u00AE\u0407\u00B0\u00B1\u0406\u0456\u0491\u00B5\u00B6\u00B7\u0451\u2116\u0454\u00BB\u0458\u0405\u0455\u0457\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\"\n  },\n  \"win1251\": \"windows1251\",\n  \"cp1251\": \"windows1251\",\n  \"windows1252\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\u017D\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\u017E\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n  },\n  \"win1252\": \"windows1252\",\n  \"cp1252\": \"windows1252\",\n  \"windows1253\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\u00A0\u0385\u0386\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\uFFFD\u00AB\u00AC\u00AD\u00AE\u2015\u00B0\u00B1\u00B2\u00B3\u0384\u00B5\u00B6\u00B7\u0388\u0389\u038A\u00BB\u038C\u00BD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD\"\n  },\n  \"win1253\": \"windows1253\",\n  \"cp1253\": \"windows1253\",\n  \"windows1254\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\uFFFD\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u011E\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u0130\u015E\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u011F\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u0131\u015F\u00FF\"\n  },\n  \"win1254\": \"windows1254\",\n  \"cp1254\": \"windows1254\",\n  \"windows1255\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\u00A0\u00A1\u00A2\u00A3\u20AA\u00A5\u00A6\u00A7\u00A8\u00A9\u00D7\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00F7\u00BB\u00BC\u00BD\u00BE\u00BF\u05B0\u05B1\u05B2\u05B3\u05B4\u05B5\u05B6\u05B7\u05B8\u05B9\u05BA\u05BB\u05BC\u05BD\u05BE\u05BF\u05C0\u05C1\u05C2\u05C3\u05F0\u05F1\u05F2\u05F3\u05F4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD\"\n  },\n  \"win1255\": \"windows1255\",\n  \"cp1255\": \"windows1255\",\n  \"windows1256\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\u067E\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0679\u2039\u0152\u0686\u0698\u0688\u06AF\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u06A9\u2122\u0691\u203A\u0153\u200C\u200D\u06BA\u00A0\u060C\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u06BE\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u061B\u00BB\u00BC\u00BD\u00BE\u061F\u06C1\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u00D7\u0637\u0638\u0639\u063A\u0640\u0641\u0642\u0643\u00E0\u0644\u00E2\u0645\u0646\u0647\u0648\u00E7\u00E8\u00E9\u00EA\u00EB\u0649\u064A\u00EE\u00EF\u064B\u064C\u064D\u064E\u00F4\u064F\u0650\u00F7\u0651\u00F9\u0652\u00FB\u00FC\u200E\u200F\u06D2\"\n  },\n  \"win1256\": \"windows1256\",\n  \"cp1256\": \"windows1256\",\n  \"windows1257\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\u00A8\u02C7\u00B8\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\u00AF\u02DB\uFFFD\u00A0\uFFFD\u00A2\u00A3\u00A4\uFFFD\u00A6\u00A7\u00D8\u00A9\u0156\u00AB\u00AC\u00AD\u00AE\u00C6\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00F8\u00B9\u0157\u00BB\u00BC\u00BD\u00BE\u00E6\u0104\u012E\u0100\u0106\u00C4\u00C5\u0118\u0112\u010C\u00C9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\u00D3\u014C\u00D5\u00D6\u00D7\u0172\u0141\u015A\u016A\u00DC\u017B\u017D\u00DF\u0105\u012F\u0101\u0107\u00E4\u00E5\u0119\u0113\u010D\u00E9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\u00F3\u014D\u00F5\u00F6\u00F7\u0173\u0142\u015B\u016B\u00FC\u017C\u017E\u02D9\"\n  },\n  \"win1257\": \"windows1257\",\n  \"cp1257\": \"windows1257\",\n  \"windows1258\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\u0153\uFFFD\uFFFD\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u0102\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u0300\u00CD\u00CE\u00CF\u0110\u00D1\u0309\u00D3\u00D4\u01A0\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u01AF\u0303\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u0301\u00ED\u00EE\u00EF\u0111\u00F1\u0323\u00F3\u00F4\u01A1\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u01B0\u20AB\u00FF\"\n  },\n  \"win1258\": \"windows1258\",\n  \"cp1258\": \"windows1258\",\n  \"iso88591\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n  },\n  \"cp28591\": \"iso88591\",\n  \"iso88592\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u02D8\u0141\u00A4\u013D\u015A\u00A7\u00A8\u0160\u015E\u0164\u0179\u00AD\u017D\u017B\u00B0\u0105\u02DB\u0142\u00B4\u013E\u015B\u02C7\u00B8\u0161\u015F\u0165\u017A\u02DD\u017E\u017C\u0154\u00C1\u00C2\u0102\u00C4\u0139\u0106\u00C7\u010C\u00C9\u0118\u00CB\u011A\u00CD\u00CE\u010E\u0110\u0143\u0147\u00D3\u00D4\u0150\u00D6\u00D7\u0158\u016E\u00DA\u0170\u00DC\u00DD\u0162\u00DF\u0155\u00E1\u00E2\u0103\u00E4\u013A\u0107\u00E7\u010D\u00E9\u0119\u00EB\u011B\u00ED\u00EE\u010F\u0111\u0144\u0148\u00F3\u00F4\u0151\u00F6\u00F7\u0159\u016F\u00FA\u0171\u00FC\u00FD\u0163\u02D9\"\n  },\n  \"cp28592\": \"iso88592\",\n  \"iso88593\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0126\u02D8\u00A3\u00A4\uFFFD\u0124\u00A7\u00A8\u0130\u015E\u011E\u0134\u00AD\uFFFD\u017B\u00B0\u0127\u00B2\u00B3\u00B4\u00B5\u0125\u00B7\u00B8\u0131\u015F\u011F\u0135\u00BD\uFFFD\u017C\u00C0\u00C1\u00C2\uFFFD\u00C4\u010A\u0108\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\uFFFD\u00D1\u00D2\u00D3\u00D4\u0120\u00D6\u00D7\u011C\u00D9\u00DA\u00DB\u00DC\u016C\u015C\u00DF\u00E0\u00E1\u00E2\uFFFD\u00E4\u010B\u0109\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\uFFFD\u00F1\u00F2\u00F3\u00F4\u0121\u00F6\u00F7\u011D\u00F9\u00FA\u00FB\u00FC\u016D\u015D\u02D9\"\n  },\n  \"cp28593\": \"iso88593\",\n  \"iso88594\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u0138\u0156\u00A4\u0128\u013B\u00A7\u00A8\u0160\u0112\u0122\u0166\u00AD\u017D\u00AF\u00B0\u0105\u02DB\u0157\u00B4\u0129\u013C\u02C7\u00B8\u0161\u0113\u0123\u0167\u014A\u017E\u014B\u0100\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u012E\u010C\u00C9\u0118\u00CB\u0116\u00CD\u00CE\u012A\u0110\u0145\u014C\u0136\u00D4\u00D5\u00D6\u00D7\u00D8\u0172\u00DA\u00DB\u00DC\u0168\u016A\u00DF\u0101\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u012F\u010D\u00E9\u0119\u00EB\u0117\u00ED\u00EE\u012B\u0111\u0146\u014D\u0137\u00F4\u00F5\u00F6\u00F7\u00F8\u0173\u00FA\u00FB\u00FC\u0169\u016B\u02D9\"\n  },\n  \"cp28594\": \"iso88594\",\n  \"iso88595\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\u00AD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\u00A7\u045E\u045F\"\n  },\n  \"cp28595\": \"iso88595\",\n  \"iso88596\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\uFFFD\uFFFD\uFFFD\u00A4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u060C\u00AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u061B\uFFFD\uFFFD\uFFFD\u061F\uFFFD\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"cp28596\": \"iso88596\",\n  \"iso88597\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u2018\u2019\u00A3\u20AC\u20AF\u00A6\u00A7\u00A8\u00A9\u037A\u00AB\u00AC\u00AD\uFFFD\u2015\u00B0\u00B1\u00B2\u00B3\u0384\u0385\u0386\u00B7\u0388\u0389\u038A\u00BB\u038C\u00BD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD\"\n  },\n  \"cp28597\": \"iso88597\",\n  \"iso88598\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\uFFFD\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00D7\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00F7\u00BB\u00BC\u00BD\u00BE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2017\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD\"\n  },\n  \"cp28598\": \"iso88598\",\n  \"iso88599\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u011E\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u0130\u015E\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u011F\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u0131\u015F\u00FF\"\n  },\n  \"cp28599\": \"iso88599\",\n  \"iso885910\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u0112\u0122\u012A\u0128\u0136\u00A7\u013B\u0110\u0160\u0166\u017D\u00AD\u016A\u014A\u00B0\u0105\u0113\u0123\u012B\u0129\u0137\u00B7\u013C\u0111\u0161\u0167\u017E\u2015\u016B\u014B\u0100\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u012E\u010C\u00C9\u0118\u00CB\u0116\u00CD\u00CE\u00CF\u00D0\u0145\u014C\u00D3\u00D4\u00D5\u00D6\u0168\u00D8\u0172\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u0101\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u012F\u010D\u00E9\u0119\u00EB\u0117\u00ED\u00EE\u00EF\u00F0\u0146\u014D\u00F3\u00F4\u00F5\u00F6\u0169\u00F8\u0173\u00FA\u00FB\u00FC\u00FD\u00FE\u0138\"\n  },\n  \"cp28600\": \"iso885910\",\n  \"iso885911\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"cp28601\": \"iso885911\",\n  \"iso885913\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u201D\u00A2\u00A3\u00A4\u201E\u00A6\u00A7\u00D8\u00A9\u0156\u00AB\u00AC\u00AD\u00AE\u00C6\u00B0\u00B1\u00B2\u00B3\u201C\u00B5\u00B6\u00B7\u00F8\u00B9\u0157\u00BB\u00BC\u00BD\u00BE\u00E6\u0104\u012E\u0100\u0106\u00C4\u00C5\u0118\u0112\u010C\u00C9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\u00D3\u014C\u00D5\u00D6\u00D7\u0172\u0141\u015A\u016A\u00DC\u017B\u017D\u00DF\u0105\u012F\u0101\u0107\u00E4\u00E5\u0119\u0113\u010D\u00E9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\u00F3\u014D\u00F5\u00F6\u00F7\u0173\u0142\u015B\u016B\u00FC\u017C\u017E\u2019\"\n  },\n  \"cp28603\": \"iso885913\",\n  \"iso885914\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u1E02\u1E03\u00A3\u010A\u010B\u1E0A\u00A7\u1E80\u00A9\u1E82\u1E0B\u1EF2\u00AD\u00AE\u0178\u1E1E\u1E1F\u0120\u0121\u1E40\u1E41\u00B6\u1E56\u1E81\u1E57\u1E83\u1E60\u1EF3\u1E84\u1E85\u1E61\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u0174\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u1E6A\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u0176\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u0175\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u1E6B\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u0177\u00FF\"\n  },\n  \"cp28604\": \"iso885914\",\n  \"iso885915\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u20AC\u00A5\u0160\u00A7\u0161\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u017D\u00B5\u00B6\u00B7\u017E\u00B9\u00BA\u00BB\u0152\u0153\u0178\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u00D0\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u00DE\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n  },\n  \"cp28605\": \"iso885915\",\n  \"iso885916\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0104\u0105\u0141\u20AC\u201E\u0160\u00A7\u0161\u00A9\u0218\u00AB\u0179\u00AD\u017A\u017B\u00B0\u00B1\u010C\u0142\u017D\u201D\u00B6\u00B7\u017E\u010D\u0219\u00BB\u0152\u0153\u0178\u017C\u00C0\u00C1\u00C2\u0102\u00C4\u0106\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u0110\u0143\u00D2\u00D3\u00D4\u0150\u00D6\u015A\u0170\u00D9\u00DA\u00DB\u00DC\u0118\u021A\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u0107\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u0111\u0144\u00F2\u00F3\u00F4\u0151\u00F6\u015B\u0171\u00F9\u00FA\u00FB\u00FC\u0119\u021B\u00FF\"\n  },\n  \"cp28606\": \"iso885916\",\n  \"cp437\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00A2\u00A3\u00A5\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n  },\n  \"ibm437\": \"cp437\",\n  \"csibm437\": \"cp437\",\n  \"cp737\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u03C5\u03C6\u03C7\u03C8\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03C9\u03AC\u03AD\u03AE\u03CA\u03AF\u03CC\u03CD\u03CB\u03CE\u0386\u0388\u0389\u038A\u038C\u038E\u038F\u00B1\u2265\u2264\u03AA\u03AB\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n  },\n  \"ibm737\": \"cp737\",\n  \"csibm737\": \"cp737\",\n  \"cp775\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0106\u00FC\u00E9\u0101\u00E4\u0123\u00E5\u0107\u0142\u0113\u0156\u0157\u012B\u0179\u00C4\u00C5\u00C9\u00E6\u00C6\u014D\u00F6\u0122\u00A2\u015A\u015B\u00D6\u00DC\u00F8\u00A3\u00D8\u00D7\u00A4\u0100\u012A\u00F3\u017B\u017C\u017A\u201D\u00A6\u00A9\u00AE\u00AC\u00BD\u00BC\u0141\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u0104\u010C\u0118\u0116\u2563\u2551\u2557\u255D\u012E\u0160\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0172\u016A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u017D\u0105\u010D\u0119\u0117\u012F\u0161\u0173\u016B\u017E\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u00D3\u00DF\u014C\u0143\u00F5\u00D5\u00B5\u0144\u0136\u0137\u013B\u013C\u0146\u0112\u0145\u2019\u00AD\u00B1\u201C\u00BE\u00B6\u00A7\u00F7\u201E\u00B0\u2219\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n  },\n  \"ibm775\": \"cp775\",\n  \"csibm775\": \"cp775\",\n  \"cp850\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00F8\u00A3\u00D8\u00D7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u00AE\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u00C0\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u00E3\u00C3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u00F0\u00D0\u00CA\u00CB\u00C8\u0131\u00CD\u00CE\u00CF\u2518\u250C\u2588\u2584\u00A6\u00CC\u2580\u00D3\u00DF\u00D4\u00D2\u00F5\u00D5\u00B5\u00FE\u00DE\u00DA\u00DB\u00D9\u00FD\u00DD\u00AF\u00B4\u00AD\u00B1\u2017\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n  },\n  \"ibm850\": \"cp850\",\n  \"csibm850\": \"cp850\",\n  \"cp852\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u016F\u0107\u00E7\u0142\u00EB\u0150\u0151\u00EE\u0179\u00C4\u0106\u00C9\u0139\u013A\u00F4\u00F6\u013D\u013E\u015A\u015B\u00D6\u00DC\u0164\u0165\u0141\u00D7\u010D\u00E1\u00ED\u00F3\u00FA\u0104\u0105\u017D\u017E\u0118\u0119\u00AC\u017A\u010C\u015F\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u011A\u015E\u2563\u2551\u2557\u255D\u017B\u017C\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0102\u0103\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u0111\u0110\u010E\u00CB\u010F\u0147\u00CD\u00CE\u011B\u2518\u250C\u2588\u2584\u0162\u016E\u2580\u00D3\u00DF\u00D4\u0143\u0144\u0148\u0160\u0161\u0154\u00DA\u0155\u0170\u00FD\u00DD\u0163\u00B4\u00AD\u02DD\u02DB\u02C7\u02D8\u00A7\u00F7\u00B8\u00B0\u00A8\u02D9\u0171\u0158\u0159\u25A0\u00A0\"\n  },\n  \"ibm852\": \"cp852\",\n  \"csibm852\": \"cp852\",\n  \"cp855\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0452\u0402\u0453\u0403\u0451\u0401\u0454\u0404\u0455\u0405\u0456\u0406\u0457\u0407\u0458\u0408\u0459\u0409\u045A\u040A\u045B\u040B\u045C\u040C\u045E\u040E\u045F\u040F\u044E\u042E\u044A\u042A\u0430\u0410\u0431\u0411\u0446\u0426\u0434\u0414\u0435\u0415\u0444\u0424\u0433\u0413\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u0445\u0425\u0438\u0418\u2563\u2551\u2557\u255D\u0439\u0419\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u043A\u041A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u043B\u041B\u043C\u041C\u043D\u041D\u043E\u041E\u043F\u2518\u250C\u2588\u2584\u041F\u044F\u2580\u042F\u0440\u0420\u0441\u0421\u0442\u0422\u0443\u0423\u0436\u0416\u0432\u0412\u044C\u042C\u2116\u00AD\u044B\u042B\u0437\u0417\u0448\u0428\u044D\u042D\u0449\u0429\u0447\u0427\u00A7\u25A0\u00A0\"\n  },\n  \"ibm855\": \"cp855\",\n  \"csibm855\": \"cp855\",\n  \"cp856\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\u00A3\uFFFD\u00D7\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00AE\u00AC\u00BD\u00BC\uFFFD\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\uFFFD\uFFFD\uFFFD\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\uFFFD\uFFFD\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2518\u250C\u2588\u2584\u00A6\uFFFD\u2580\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00B5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u00AF\u00B4\u00AD\u00B1\u2017\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n  },\n  \"ibm856\": \"cp856\",\n  \"csibm856\": \"cp856\",\n  \"cp857\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u0131\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u0130\u00D6\u00DC\u00F8\u00A3\u00D8\u015E\u015F\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u011E\u011F\u00BF\u00AE\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u00C0\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u00E3\u00C3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u00BA\u00AA\u00CA\u00CB\u00C8\uFFFD\u00CD\u00CE\u00CF\u2518\u250C\u2588\u2584\u00A6\u00CC\u2580\u00D3\u00DF\u00D4\u00D2\u00F5\u00D5\u00B5\uFFFD\u00D7\u00DA\u00DB\u00D9\u00EC\u00FF\u00AF\u00B4\u00AD\u00B1\uFFFD\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n  },\n  \"ibm857\": \"cp857\",\n  \"csibm857\": \"cp857\",\n  \"cp858\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00F8\u00A3\u00D8\u00D7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u00AE\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u00C1\u00C2\u00C0\u00A9\u2563\u2551\u2557\u255D\u00A2\u00A5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u00E3\u00C3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u00A4\u00F0\u00D0\u00CA\u00CB\u00C8\u20AC\u00CD\u00CE\u00CF\u2518\u250C\u2588\u2584\u00A6\u00CC\u2580\u00D3\u00DF\u00D4\u00D2\u00F5\u00D5\u00B5\u00FE\u00DE\u00DA\u00DB\u00D9\u00FD\u00DD\u00AF\u00B4\u00AD\u00B1\u2017\u00BE\u00B6\u00A7\u00F7\u00B8\u00B0\u00A8\u00B7\u00B9\u00B3\u00B2\u25A0\u00A0\"\n  },\n  \"ibm858\": \"cp858\",\n  \"csibm858\": \"cp858\",\n  \"cp860\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E3\u00E0\u00C1\u00E7\u00EA\u00CA\u00E8\u00CD\u00D4\u00EC\u00C3\u00C2\u00C9\u00C0\u00C8\u00F4\u00F5\u00F2\u00DA\u00F9\u00CC\u00D5\u00DC\u00A2\u00A3\u00D9\u20A7\u00D3\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u00D2\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n  },\n  \"ibm860\": \"cp860\",\n  \"csibm860\": \"cp860\",\n  \"cp861\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00D0\u00F0\u00DE\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00FE\u00FB\u00DD\u00FD\u00D6\u00DC\u00F8\u00A3\u00D8\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00C1\u00CD\u00D3\u00DA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n  },\n  \"ibm861\": \"cp861\",\n  \"csibm861\": \"cp861\",\n  \"cp862\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\u00A2\u00A3\u00A5\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n  },\n  \"ibm862\": \"cp862\",\n  \"csibm862\": \"cp862\",\n  \"cp863\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00C2\u00E0\u00B6\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u2017\u00C0\u00A7\u00C9\u00C8\u00CA\u00F4\u00CB\u00CF\u00FB\u00F9\u00A4\u00D4\u00DC\u00A2\u00A3\u00D9\u00DB\u0192\u00A6\u00B4\u00F3\u00FA\u00A8\u00B8\u00B3\u00AF\u00CE\u2310\u00AC\u00BD\u00BC\u00BE\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n  },\n  \"ibm863\": \"cp863\",\n  \"csibm863\": \"cp863\",\n  \"cp864\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$\u066A&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u007F\u00B0\u00B7\u2219\u221A\u2592\u2500\u2502\u253C\u2524\u252C\u251C\u2534\u2510\u250C\u2514\u2518\u03B2\u221E\u03C6\u00B1\u00BD\u00BC\u2248\u00AB\u00BB\uFEF7\uFEF8\uFFFD\uFFFD\uFEFB\uFEFC\uFFFD\u00A0\u00AD\uFE82\u00A3\u00A4\uFE84\uFFFD\uFFFD\uFE8E\uFE8F\uFE95\uFE99\u060C\uFE9D\uFEA1\uFEA5\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFED1\u061B\uFEB1\uFEB5\uFEB9\u061F\u00A2\uFE80\uFE81\uFE83\uFE85\uFECA\uFE8B\uFE8D\uFE91\uFE93\uFE97\uFE9B\uFE9F\uFEA3\uFEA7\uFEA9\uFEAB\uFEAD\uFEAF\uFEB3\uFEB7\uFEBB\uFEBF\uFEC1\uFEC5\uFECB\uFECF\u00A6\u00AC\u00F7\u00D7\uFEC9\u0640\uFED3\uFED7\uFEDB\uFEDF\uFEE3\uFEE7\uFEEB\uFEED\uFEEF\uFEF3\uFEBD\uFECC\uFECE\uFECD\uFEE1\uFE7D\u0651\uFEE5\uFEE9\uFEEC\uFEF0\uFEF2\uFED0\uFED5\uFEF5\uFEF6\uFEDD\uFED9\uFEF1\u25A0\uFFFD\"\n  },\n  \"ibm864\": \"cp864\",\n  \"csibm864\": \"cp864\",\n  \"cp865\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C7\u00FC\u00E9\u00E2\u00E4\u00E0\u00E5\u00E7\u00EA\u00EB\u00E8\u00EF\u00EE\u00EC\u00C4\u00C5\u00C9\u00E6\u00C6\u00F4\u00F6\u00F2\u00FB\u00F9\u00FF\u00D6\u00DC\u00F8\u00A3\u00D8\u20A7\u0192\u00E1\u00ED\u00F3\u00FA\u00F1\u00D1\u00AA\u00BA\u00BF\u2310\u00AC\u00BD\u00BC\u00A1\u00AB\u00A4\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\u00DF\u0393\u03C0\u03A3\u03C3\u00B5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\u00B1\u2265\u2264\u2320\u2321\u00F7\u2248\u00B0\u2219\u00B7\u221A\u207F\u00B2\u25A0\u00A0\"\n  },\n  \"ibm865\": \"cp865\",\n  \"csibm865\": \"cp865\",\n  \"cp866\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\u00B0\u2219\u00B7\u221A\u2116\u00A4\u25A0\u00A0\"\n  },\n  \"ibm866\": \"cp866\",\n  \"csibm866\": \"cp866\",\n  \"cp869\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0386\uFFFD\u00B7\u00AC\u00A6\u2018\u2019\u0388\u2015\u0389\u038A\u03AA\u038C\uFFFD\uFFFD\u038E\u03AB\u00A9\u038F\u00B2\u00B3\u03AC\u00A3\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03CD\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u00BD\u0398\u0399\u00AB\u00BB\u2591\u2592\u2593\u2502\u2524\u039A\u039B\u039C\u039D\u2563\u2551\u2557\u255D\u039E\u039F\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u03A0\u03A1\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u2518\u250C\u2588\u2584\u03B4\u03B5\u2580\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u0384\u00AD\u00B1\u03C5\u03C6\u03C7\u00A7\u03C8\u0385\u00B0\u00A8\u03C9\u03CB\u03B0\u03CE\u25A0\u00A0\"\n  },\n  \"ibm869\": \"cp869\",\n  \"csibm869\": \"cp869\",\n  \"cp922\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u203E\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u00C3\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u00CC\u00CD\u00CE\u00CF\u0160\u00D1\u00D2\u00D3\u00D4\u00D5\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u00DD\u017D\u00DF\u00E0\u00E1\u00E2\u00E3\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u0161\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u017E\u00FF\"\n  },\n  \"ibm922\": \"cp922\",\n  \"csibm922\": \"cp922\",\n  \"cp1046\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\uFE88\u00D7\u00F7\uF8F6\uF8F5\uF8F4\uF8F7\uFE71\u0088\u25A0\u2502\u2500\u2510\u250C\u2514\u2518\uFE79\uFE7B\uFE7D\uFE7F\uFE77\uFE8A\uFEF0\uFEF3\uFEF2\uFECE\uFECF\uFED0\uFEF6\uFEF8\uFEFA\uFEFC\u00A0\uF8FA\uF8F9\uF8F8\u00A4\uF8FB\uFE8B\uFE91\uFE97\uFE9B\uFE9F\uFEA3\u060C\u00AD\uFEA7\uFEB3\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFEB7\u061B\uFEBB\uFEBF\uFECA\u061F\uFECB\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\uFEC7\u0639\u063A\uFECC\uFE82\uFE84\uFE8E\uFED3\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFED7\uFEDB\uFEDF\uF8FC\uFEF5\uFEF7\uFEF9\uFEFB\uFEE3\uFEE7\uFEEC\uFEE9\uFFFD\"\n  },\n  \"ibm1046\": \"cp1046\",\n  \"csibm1046\": \"cp1046\",\n  \"cp1124\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0401\u0402\u0490\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\u00AD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0491\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\u00A7\u045E\u045F\"\n  },\n  \"ibm1124\": \"cp1124\",\n  \"csibm1124\": \"cp1124\",\n  \"cp1125\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0490\u0491\u0404\u0454\u0406\u0456\u0407\u0457\u00B7\u221A\u2116\u00A4\u25A0\u00A0\"\n  },\n  \"ibm1125\": \"cp1125\",\n  \"csibm1125\": \"cp1125\",\n  \"cp1129\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u0153\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u0178\u00B5\u00B6\u00B7\u0152\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u0102\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u0300\u00CD\u00CE\u00CF\u0110\u00D1\u0309\u00D3\u00D4\u01A0\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u01AF\u0303\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u0301\u00ED\u00EE\u00EF\u0111\u00F1\u0323\u00F3\u00F4\u01A1\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u01B0\u20AB\u00FF\"\n  },\n  \"ibm1129\": \"cp1129\",\n  \"csibm1129\": \"cp1129\",\n  \"cp1133\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0E81\u0E82\u0E84\u0E87\u0E88\u0EAA\u0E8A\u0E8D\u0E94\u0E95\u0E96\u0E97\u0E99\u0E9A\u0E9B\u0E9C\u0E9D\u0E9E\u0E9F\u0EA1\u0EA2\u0EA3\u0EA5\u0EA7\u0EAB\u0EAD\u0EAE\uFFFD\uFFFD\uFFFD\u0EAF\u0EB0\u0EB2\u0EB3\u0EB4\u0EB5\u0EB6\u0EB7\u0EB8\u0EB9\u0EBC\u0EB1\u0EBB\u0EBD\uFFFD\uFFFD\uFFFD\u0EC0\u0EC1\u0EC2\u0EC3\u0EC4\u0EC8\u0EC9\u0ECA\u0ECB\u0ECC\u0ECD\u0EC6\uFFFD\u0EDC\u0EDD\u20AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0ED0\u0ED1\u0ED2\u0ED3\u0ED4\u0ED5\u0ED6\u0ED7\u0ED8\u0ED9\uFFFD\uFFFD\u00A2\u00AC\u00A6\uFFFD\"\n  },\n  \"ibm1133\": \"cp1133\",\n  \"csibm1133\": \"cp1133\",\n  \"cp1161\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E48\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\u0E49\u0E4A\u0E4B\u20AC\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\u00A2\u00AC\u00A6\u00A0\"\n  },\n  \"ibm1161\": \"cp1161\",\n  \"csibm1161\": \"cp1161\",\n  \"cp1162\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u20AC\u0081\u0082\u0083\u0084\u2026\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"ibm1162\": \"cp1162\",\n  \"csibm1162\": \"cp1162\",\n  \"cp1163\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00A1\u00A2\u00A3\u20AC\u00A5\u00A6\u00A7\u0153\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u0178\u00B5\u00B6\u00B7\u0152\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u00C0\u00C1\u00C2\u0102\u00C4\u00C5\u00C6\u00C7\u00C8\u00C9\u00CA\u00CB\u0300\u00CD\u00CE\u00CF\u0110\u00D1\u0309\u00D3\u00D4\u01A0\u00D6\u00D7\u00D8\u00D9\u00DA\u00DB\u00DC\u01AF\u0303\u00DF\u00E0\u00E1\u00E2\u0103\u00E4\u00E5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u0301\u00ED\u00EE\u00EF\u0111\u00F1\u0323\u00F3\u00F4\u01A1\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u01B0\u20AB\u00FF\"\n  },\n  \"ibm1163\": \"cp1163\",\n  \"csibm1163\": \"cp1163\",\n  \"maccroatian\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u0160\u2122\u00B4\u00A8\u2260\u017D\u00D8\u221E\u00B1\u2264\u2265\u2206\u00B5\u2202\u2211\u220F\u0161\u222B\u00AA\u00BA\u2126\u017E\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u0106\u00AB\u010C\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u0110\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\uFFFD\u00A9\u2044\u00A4\u2039\u203A\u00C6\u00BB\u2013\u00B7\u201A\u201E\u2030\u00C2\u0107\u00C1\u010D\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\u0111\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u03C0\u00CB\u02DA\u00B8\u00CA\u00E6\u02C7\"\n  },\n  \"maccyrillic\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u0406\u00AE\u00A9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\u00B1\u2264\u2265\u0456\u00B5\u2202\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u00A4\"\n  },\n  \"macgreek\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C4\u00B9\u00B2\u00C9\u00B3\u00D6\u00DC\u0385\u00E0\u00E2\u00E4\u0384\u00A8\u00E7\u00E9\u00E8\u00EA\u00EB\u00A3\u2122\u00EE\u00EF\u2022\u00BD\u2030\u00F4\u00F6\u00A6\u00AD\u00F9\u00FB\u00FC\u2020\u0393\u0394\u0398\u039B\u039E\u03A0\u00DF\u00AE\u00A9\u03A3\u03AA\u00A7\u2260\u00B0\u0387\u0391\u00B1\u2264\u2265\u00A5\u0392\u0395\u0396\u0397\u0399\u039A\u039C\u03A6\u03AB\u03A8\u03A9\u03AC\u039D\u00AC\u039F\u03A1\u2248\u03A4\u00AB\u00BB\u2026\u00A0\u03A5\u03A7\u0386\u0388\u0153\u2013\u2015\u201C\u201D\u2018\u2019\u00F7\u0389\u038A\u038C\u038E\u03AD\u03AE\u03AF\u03CC\u038F\u03CD\u03B1\u03B2\u03C8\u03B4\u03B5\u03C6\u03B3\u03B7\u03B9\u03BE\u03BA\u03BB\u03BC\u03BD\u03BF\u03C0\u03CE\u03C1\u03C3\u03C4\u03B8\u03C9\u03C2\u03C7\u03C5\u03B6\u03CA\u03CB\u0390\u03B0\uFFFD\"\n  },\n  \"maciceland\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u00DD\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u00D0\u00F0\u00DE\u00FE\u00FD\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n  },\n  \"macroman\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u2039\u203A\uFB01\uFB02\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n  },\n  \"macromania\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u0102\u015E\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u0103\u015F\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u2039\u203A\u0162\u0163\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n  },\n  \"macthai\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00AB\u00BB\u2026\uF88C\uF88F\uF892\uF895\uF898\uF88B\uF88E\uF891\uF894\uF897\u201C\u201D\uF899\uFFFD\u2022\uF884\uF889\uF885\uF886\uF887\uF888\uF88A\uF88D\uF890\uF893\uF896\u2018\u2019\uFFFD\u00A0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFEFF\u200B\u2013\u2014\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u2122\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u00AE\u00A9\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"macturkish\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u011E\u011F\u0130\u0131\u015E\u015F\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\uFFFD\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n  },\n  \"macukraine\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\u00B0\u0490\u00A3\u00A7\u2022\u00B6\u0406\u00AE\u00A9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\u00B1\u2264\u2265\u0456\u00B5\u0491\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u00A4\"\n  },\n  \"koi8r\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\u00A0\u2321\u00B0\u00B2\u00B7\u00F7\u2550\u2551\u2552\u0451\u2553\u2554\u2555\u2556\u2557\u2558\u2559\u255A\u255B\u255C\u255D\u255E\u255F\u2560\u2561\u0401\u2562\u2563\u2564\u2565\u2566\u2567\u2568\u2569\u256A\u256B\u256C\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n  },\n  \"koi8u\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\u00A0\u2321\u00B0\u00B2\u00B7\u00F7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u255D\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u256C\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n  },\n  \"koi8ru\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\u00A0\u2321\u00B0\u00B2\u00B7\u00F7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u045E\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u040E\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n  },\n  \"koi8t\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u049B\u0493\u201A\u0492\u201E\u2026\u2020\u2021\uFFFD\u2030\u04B3\u2039\u04B2\u04B7\u04B6\uFFFD\u049A\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04EF\u04EE\u0451\u00A4\u04E3\u00A6\u00A7\uFFFD\uFFFD\uFFFD\u00AB\u00AC\u00AD\u00AE\uFFFD\u00B0\u00B1\u00B2\u0401\uFFFD\u04E2\u00B6\u00B7\uFFFD\u2116\uFFFD\u00BB\uFFFD\uFFFD\uFFFD\u00A9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A\"\n  },\n  \"armscii8\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\uFFFD\u0587\u0589)(\u00BB\u00AB\u2014.\u055D,-\u058A\u2026\u055C\u055B\u055E\u0531\u0561\u0532\u0562\u0533\u0563\u0534\u0564\u0535\u0565\u0536\u0566\u0537\u0567\u0538\u0568\u0539\u0569\u053A\u056A\u053B\u056B\u053C\u056C\u053D\u056D\u053E\u056E\u053F\u056F\u0540\u0570\u0541\u0571\u0542\u0572\u0543\u0573\u0544\u0574\u0545\u0575\u0546\u0576\u0547\u0577\u0548\u0578\u0549\u0579\u054A\u057A\u054B\u057B\u054C\u057C\u054D\u057D\u054E\u057E\u054F\u057F\u0550\u0580\u0551\u0581\u0552\u0582\u0553\u0583\u0554\u0584\u0555\u0585\u0556\u0586\u055A\uFFFD\"\n  },\n  \"rk1048\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u049A\u04BA\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u049B\u04BB\u045F\u00A0\u04B0\u04B1\u04D8\u00A4\u04E8\u00A6\u00A7\u0401\u00A9\u0492\u00AB\u00AC\u00AD\u00AE\u04AE\u00B0\u00B1\u0406\u0456\u04E9\u00B5\u00B6\u00B7\u0451\u2116\u0493\u00BB\u04D9\u04A2\u04A3\u04AF\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\"\n  },\n  \"tcvn\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\\u0000\u00DA\u1EE4\\u0003\u1EEA\u1EEC\u1EEE\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\u1EE8\u1EF0\u1EF2\u1EF6\u1EF8\u00DD\u1EF4\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u007F\u00C0\u1EA2\u00C3\u00C1\u1EA0\u1EB6\u1EAC\u00C8\u1EBA\u1EBC\u00C9\u1EB8\u1EC6\u00CC\u1EC8\u0128\u00CD\u1ECA\u00D2\u1ECE\u00D5\u00D3\u1ECC\u1ED8\u1EDC\u1EDE\u1EE0\u1EDA\u1EE2\u00D9\u1EE6\u0168\u00A0\u0102\u00C2\u00CA\u00D4\u01A0\u01AF\u0110\u0103\u00E2\u00EA\u00F4\u01A1\u01B0\u0111\u1EB0\u0300\u0309\u0303\u0301\u0323\u00E0\u1EA3\u00E3\u00E1\u1EA1\u1EB2\u1EB1\u1EB3\u1EB5\u1EAF\u1EB4\u1EAE\u1EA6\u1EA8\u1EAA\u1EA4\u1EC0\u1EB7\u1EA7\u1EA9\u1EAB\u1EA5\u1EAD\u00E8\u1EC2\u1EBB\u1EBD\u00E9\u1EB9\u1EC1\u1EC3\u1EC5\u1EBF\u1EC7\u00EC\u1EC9\u1EC4\u1EBE\u1ED2\u0129\u00ED\u1ECB\u00F2\u1ED4\u1ECF\u00F5\u00F3\u1ECD\u1ED3\u1ED5\u1ED7\u1ED1\u1ED9\u1EDD\u1EDF\u1EE1\u1EDB\u1EE3\u00F9\u1ED6\u1EE7\u0169\u00FA\u1EE5\u1EEB\u1EED\u1EEF\u1EE9\u1EF1\u1EF3\u1EF7\u1EF9\u00FD\u1EF5\u1ED0\"\n  },\n  \"georgianacademy\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\u008D\u008E\u008F\u0090\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\u009D\u009E\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n  },\n  \"georgianps\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\u008D\u008E\u008F\u0090\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\u009D\u009E\u0178\u00A0\u00A1\u00A2\u00A3\u00A4\u00A5\u00A6\u00A7\u00A8\u00A9\u00AA\u00AB\u00AC\u00AD\u00AE\u00AF\u00B0\u00B1\u00B2\u00B3\u00B4\u00B5\u00B6\u00B7\u00B8\u00B9\u00BA\u00BB\u00BC\u00BD\u00BE\u00BF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10F1\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10F2\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10F3\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10F4\u10EF\u10F0\u10F5\u00E6\u00E7\u00E8\u00E9\u00EA\u00EB\u00EC\u00ED\u00EE\u00EF\u00F0\u00F1\u00F2\u00F3\u00F4\u00F5\u00F6\u00F7\u00F8\u00F9\u00FA\u00FB\u00FC\u00FD\u00FE\u00FF\"\n  },\n  \"pt154\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0496\u0492\u04EE\u0493\u201E\u2026\u04B6\u04AE\u04B2\u04AF\u04A0\u04E2\u04A2\u049A\u04BA\u04B8\u0497\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u04B3\u04B7\u04A1\u04E3\u04A3\u049B\u04BB\u04B9\u00A0\u040E\u045E\u0408\u04E8\u0498\u04B0\u00A7\u0401\u00A9\u04D8\u00AB\u00AC\u04EF\u00AE\u049C\u00B0\u04B1\u0406\u0456\u0499\u04E9\u00B6\u00B7\u0451\u2116\u04D9\u00BB\u0458\u04AA\u04AB\u049D\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\"\n  },\n  \"viscii\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\\u0000\\u0001\u1EB2\\u0003\\u0004\u1EB4\u1EAA\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\u1EF6\\u0015\\u0016\\u0017\\u0018\u1EF8\\u001a\\u001b\\u001c\\u001d\u1EF4\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}~\u007F\u1EA0\u1EAE\u1EB0\u1EB6\u1EA4\u1EA6\u1EA8\u1EAC\u1EBC\u1EB8\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EE2\u1EDA\u1EDC\u1EDE\u1ECA\u1ECE\u1ECC\u1EC8\u1EE6\u0168\u1EE4\u1EF2\u00D5\u1EAF\u1EB1\u1EB7\u1EA5\u1EA7\u1EA9\u1EAD\u1EBD\u1EB9\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1ED1\u1ED3\u1ED5\u1ED7\u1EE0\u01A0\u1ED9\u1EDD\u1EDF\u1ECB\u1EF0\u1EE8\u1EEA\u1EEC\u01A1\u1EDB\u01AF\u00C0\u00C1\u00C2\u00C3\u1EA2\u0102\u1EB3\u1EB5\u00C8\u00C9\u00CA\u1EBA\u00CC\u00CD\u0128\u1EF3\u0110\u1EE9\u00D2\u00D3\u00D4\u1EA1\u1EF7\u1EEB\u1EED\u00D9\u00DA\u1EF9\u1EF5\u00DD\u1EE1\u01B0\u00E0\u00E1\u00E2\u00E3\u1EA3\u0103\u1EEF\u1EAB\u00E8\u00E9\u00EA\u1EBB\u00EC\u00ED\u0129\u1EC9\u0111\u1EF1\u00F2\u00F3\u00F4\u00F5\u1ECF\u1ECD\u1EE5\u00F9\u00FA\u0169\u1EE7\u00FD\u1EE3\u1EEE\"\n  },\n  \"iso646cn\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#\u00A5%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\\\]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\u007F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"iso646jp\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\\u0000\\u0001\\u0002\\u0003\\u0004\\u0005\\u0006\\u0007\\b\\t\\n\\u000b\\f\\r\\u000e\\u000f\\u0010\\u0011\\u0012\\u0013\\u0014\\u0015\\u0016\\u0017\\u0018\\u0019\\u001a\\u001b\\u001c\\u001d\\u001e\\u001f !\\\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\u00A5]^_`abcdefghijklmnopqrstuvwxyz{|}\u203E\u007F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"hproman8\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u0080\u0081\u0082\u0083\u0084\u0085\u0086\u0087\u0088\u0089\u008A\u008B\u008C\u008D\u008E\u008F\u0090\u0091\u0092\u0093\u0094\u0095\u0096\u0097\u0098\u0099\u009A\u009B\u009C\u009D\u009E\u009F\u00A0\u00C0\u00C2\u00C8\u00CA\u00CB\u00CE\u00CF\u00B4\u02CB\u02C6\u00A8\u02DC\u00D9\u00DB\u20A4\u00AF\u00DD\u00FD\u00B0\u00C7\u00E7\u00D1\u00F1\u00A1\u00BF\u00A4\u00A3\u00A5\u00A7\u0192\u00A2\u00E2\u00EA\u00F4\u00FB\u00E1\u00E9\u00F3\u00FA\u00E0\u00E8\u00F2\u00F9\u00E4\u00EB\u00F6\u00FC\u00C5\u00EE\u00D8\u00C6\u00E5\u00ED\u00F8\u00E6\u00C4\u00EC\u00D6\u00DC\u00C9\u00EF\u00DF\u00D4\u00C1\u00C3\u00E3\u00D0\u00F0\u00CD\u00CC\u00D3\u00D2\u00D5\u00F5\u0160\u0161\u00DA\u0178\u00FF\u00DE\u00FE\u00B7\u00B5\u00B6\u00BE\u2014\u00BC\u00BD\u00AA\u00BA\u00AB\u25A0\u00BB\u00B1\uFFFD\"\n  },\n  \"macintosh\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\u00C4\u00C5\u00C7\u00C9\u00D1\u00D6\u00DC\u00E1\u00E0\u00E2\u00E4\u00E3\u00E5\u00E7\u00E9\u00E8\u00EA\u00EB\u00ED\u00EC\u00EE\u00EF\u00F1\u00F3\u00F2\u00F4\u00F6\u00F5\u00FA\u00F9\u00FB\u00FC\u2020\u00B0\u00A2\u00A3\u00A7\u2022\u00B6\u00DF\u00AE\u00A9\u2122\u00B4\u00A8\u2260\u00C6\u00D8\u221E\u00B1\u2264\u2265\u00A5\u00B5\u2202\u2211\u220F\u03C0\u222B\u00AA\u00BA\u2126\u00E6\u00F8\u00BF\u00A1\u00AC\u221A\u0192\u2248\u2206\u00AB\u00BB\u2026\u00A0\u00C0\u00C3\u00D5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\u00F7\u25CA\u00FF\u0178\u2044\u00A4\u2039\u203A\uFB01\uFB02\u2021\u00B7\u201A\u201E\u2030\u00C2\u00CA\u00C1\u00CB\u00C8\u00CD\u00CE\u00CF\u00CC\u00D3\u00D4\uFFFD\u00D2\u00DA\u00DB\u00D9\u0131\u02C6\u02DC\u00AF\u02D8\u02D9\u02DA\u00B8\u02DD\u02DB\u02C7\"\n  },\n  \"ascii\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\"\n  },\n  \"tis620\": {\n    \"type\": \"_sbcs\",\n    \"chars\": \"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD\"\n  }\n}", "\"use strict\";\nvar Buffer = require(\"safer-buffer\").Buffer;\n\n// Multibyte codec. In this scheme, a character is represented by 1 or more bytes.\n// Our codec supports UTF-16 surrogates, extensions for GB18030 and unicode sequences.\n// To save memory and loading time, we read table files only when requested.\n\nexports._dbcs = DBCSCodec;\n\nvar UNASSIGNED = -1,\n    GB18030_CODE = -2,\n    SEQ_START  = -10,\n    NODE_START = -1000,\n    UNASSIGNED_NODE = new Array(0x100),\n    DEF_CHAR = -1;\n\nfor (var i = 0; i < 0x100; i++)\n    UNASSIGNED_NODE[i] = UNASSIGNED;\n\n\n// Class DBCSCodec reads and initializes mapping tables.\nfunction DBCSCodec(codecOptions, iconv) {\n    this.encodingName = codecOptions.encodingName;\n    if (!codecOptions)\n        throw new Error(\"DBCS codec is called without the data.\")\n    if (!codecOptions.table)\n        throw new Error(\"Encoding '\" + this.encodingName + \"' has no data.\");\n\n    // Load tables.\n    var mappingTable = codecOptions.table();\n\n\n    // Decode tables: MBCS -> Unicode.\n\n    // decodeTables is a trie, encoded as an array of arrays of integers. Internal arrays are trie nodes and all have len = 256.\n    // Trie root is decodeTables[0].\n    // Values: >=  0 -> unicode character code. can be > 0xFFFF\n    //         == UNASSIGNED -> unknown/unassigned sequence.\n    //         == GB18030_CODE -> this is the end of a GB18030 4-byte sequence.\n    //         <= NODE_START -> index of the next node in our trie to process next byte.\n    //         <= SEQ_START  -> index of the start of a character code sequence, in decodeTableSeq.\n    this.decodeTables = [];\n    this.decodeTables[0] = UNASSIGNED_NODE.slice(0); // Create root node.\n\n    // Sometimes a MBCS char corresponds to a sequence of unicode chars. We store them as arrays of integers here. \n    this.decodeTableSeq = [];\n\n    // Actual mapping tables consist of chunks. Use them to fill up decode tables.\n    for (var i = 0; i < mappingTable.length; i++)\n        this._addDecodeChunk(mappingTable[i]);\n\n    this.defaultCharUnicode = iconv.defaultCharUnicode;\n\n    \n    // Encode tables: Unicode -> DBCS.\n\n    // `encodeTable` is array mapping from unicode char to encoded char. All its values are integers for performance.\n    // Because it can be sparse, it is represented as array of buckets by 256 chars each. Bucket can be null.\n    // Values: >=  0 -> it is a normal char. Write the value (if <=256 then 1 byte, if <=65536 then 2 bytes, etc.).\n    //         == UNASSIGNED -> no conversion found. Output a default char.\n    //         <= SEQ_START  -> it's an index in encodeTableSeq, see below. The character starts a sequence.\n    this.encodeTable = [];\n    \n    // `encodeTableSeq` is used when a sequence of unicode characters is encoded as a single code. We use a tree of\n    // objects where keys correspond to characters in sequence and leafs are the encoded dbcs values. A special DEF_CHAR key\n    // means end of sequence (needed when one sequence is a strict subsequence of another).\n    // Objects are kept separately from encodeTable to increase performance.\n    this.encodeTableSeq = [];\n\n    // Some chars can be decoded, but need not be encoded.\n    var skipEncodeChars = {};\n    if (codecOptions.encodeSkipVals)\n        for (var i = 0; i < codecOptions.encodeSkipVals.length; i++) {\n            var val = codecOptions.encodeSkipVals[i];\n            if (typeof val === 'number')\n                skipEncodeChars[val] = true;\n            else\n                for (var j = val.from; j <= val.to; j++)\n                    skipEncodeChars[j] = true;\n        }\n        \n    // Use decode trie to recursively fill out encode tables.\n    this._fillEncodeTable(0, 0, skipEncodeChars);\n\n    // Add more encoding pairs when needed.\n    if (codecOptions.encodeAdd) {\n        for (var uChar in codecOptions.encodeAdd)\n            if (Object.prototype.hasOwnProperty.call(codecOptions.encodeAdd, uChar))\n                this._setEncodeChar(uChar.charCodeAt(0), codecOptions.encodeAdd[uChar]);\n    }\n\n    this.defCharSB  = this.encodeTable[0][iconv.defaultCharSingleByte.charCodeAt(0)];\n    if (this.defCharSB === UNASSIGNED) this.defCharSB = this.encodeTable[0]['?'];\n    if (this.defCharSB === UNASSIGNED) this.defCharSB = \"?\".charCodeAt(0);\n\n\n    // Load & create GB18030 tables when needed.\n    if (typeof codecOptions.gb18030 === 'function') {\n        this.gb18030 = codecOptions.gb18030(); // Load GB18030 ranges.\n\n        // Add GB18030 decode tables.\n        var thirdByteNodeIdx = this.decodeTables.length;\n        var thirdByteNode = this.decodeTables[thirdByteNodeIdx] = UNASSIGNED_NODE.slice(0);\n\n        var fourthByteNodeIdx = this.decodeTables.length;\n        var fourthByteNode = this.decodeTables[fourthByteNodeIdx] = UNASSIGNED_NODE.slice(0);\n\n        for (var i = 0x81; i <= 0xFE; i++) {\n            var secondByteNodeIdx = NODE_START - this.decodeTables[0][i];\n            var secondByteNode = this.decodeTables[secondByteNodeIdx];\n            for (var j = 0x30; j <= 0x39; j++)\n                secondByteNode[j] = NODE_START - thirdByteNodeIdx;\n        }\n        for (var i = 0x81; i <= 0xFE; i++)\n            thirdByteNode[i] = NODE_START - fourthByteNodeIdx;\n        for (var i = 0x30; i <= 0x39; i++)\n            fourthByteNode[i] = GB18030_CODE\n    }        \n}\n\nDBCSCodec.prototype.encoder = DBCSEncoder;\nDBCSCodec.prototype.decoder = DBCSDecoder;\n\n// Decoder helpers\nDBCSCodec.prototype._getDecodeTrieNode = function(addr) {\n    var bytes = [];\n    for (; addr > 0; addr >>= 8)\n        bytes.push(addr & 0xFF);\n    if (bytes.length == 0)\n        bytes.push(0);\n\n    var node = this.decodeTables[0];\n    for (var i = bytes.length-1; i > 0; i--) { // Traverse nodes deeper into the trie.\n        var val = node[bytes[i]];\n\n        if (val == UNASSIGNED) { // Create new node.\n            node[bytes[i]] = NODE_START - this.decodeTables.length;\n            this.decodeTables.push(node = UNASSIGNED_NODE.slice(0));\n        }\n        else if (val <= NODE_START) { // Existing node.\n            node = this.decodeTables[NODE_START - val];\n        }\n        else\n            throw new Error(\"Overwrite byte in \" + this.encodingName + \", addr: \" + addr.toString(16));\n    }\n    return node;\n}\n\n\nDBCSCodec.prototype._addDecodeChunk = function(chunk) {\n    // First element of chunk is the hex mbcs code where we start.\n    var curAddr = parseInt(chunk[0], 16);\n\n    // Choose the decoding node where we'll write our chars.\n    var writeTable = this._getDecodeTrieNode(curAddr);\n    curAddr = curAddr & 0xFF;\n\n    // Write all other elements of the chunk to the table.\n    for (var k = 1; k < chunk.length; k++) {\n        var part = chunk[k];\n        if (typeof part === \"string\") { // String, write as-is.\n            for (var l = 0; l < part.length;) {\n                var code = part.charCodeAt(l++);\n                if (0xD800 <= code && code < 0xDC00) { // Decode surrogate\n                    var codeTrail = part.charCodeAt(l++);\n                    if (0xDC00 <= codeTrail && codeTrail < 0xE000)\n                        writeTable[curAddr++] = 0x10000 + (code - 0xD800) * 0x400 + (codeTrail - 0xDC00);\n                    else\n                        throw new Error(\"Incorrect surrogate pair in \"  + this.encodingName + \" at chunk \" + chunk[0]);\n                }\n                else if (0x0FF0 < code && code <= 0x0FFF) { // Character sequence (our own encoding used)\n                    var len = 0xFFF - code + 2;\n                    var seq = [];\n                    for (var m = 0; m < len; m++)\n                        seq.push(part.charCodeAt(l++)); // Simple variation: don't support surrogates or subsequences in seq.\n\n                    writeTable[curAddr++] = SEQ_START - this.decodeTableSeq.length;\n                    this.decodeTableSeq.push(seq);\n                }\n                else\n                    writeTable[curAddr++] = code; // Basic char\n            }\n        } \n        else if (typeof part === \"number\") { // Integer, meaning increasing sequence starting with prev character.\n            var charCode = writeTable[curAddr - 1] + 1;\n            for (var l = 0; l < part; l++)\n                writeTable[curAddr++] = charCode++;\n        }\n        else\n            throw new Error(\"Incorrect type '\" + typeof part + \"' given in \"  + this.encodingName + \" at chunk \" + chunk[0]);\n    }\n    if (curAddr > 0xFF)\n        throw new Error(\"Incorrect chunk in \"  + this.encodingName + \" at addr \" + chunk[0] + \": too long\" + curAddr);\n}\n\n// Encoder helpers\nDBCSCodec.prototype._getEncodeBucket = function(uCode) {\n    var high = uCode >> 8; // This could be > 0xFF because of astral characters.\n    if (this.encodeTable[high] === undefined)\n        this.encodeTable[high] = UNASSIGNED_NODE.slice(0); // Create bucket on demand.\n    return this.encodeTable[high];\n}\n\nDBCSCodec.prototype._setEncodeChar = function(uCode, dbcsCode) {\n    var bucket = this._getEncodeBucket(uCode);\n    var low = uCode & 0xFF;\n    if (bucket[low] <= SEQ_START)\n        this.encodeTableSeq[SEQ_START-bucket[low]][DEF_CHAR] = dbcsCode; // There's already a sequence, set a single-char subsequence of it.\n    else if (bucket[low] == UNASSIGNED)\n        bucket[low] = dbcsCode;\n}\n\nDBCSCodec.prototype._setEncodeSequence = function(seq, dbcsCode) {\n    \n    // Get the root of character tree according to first character of the sequence.\n    var uCode = seq[0];\n    var bucket = this._getEncodeBucket(uCode);\n    var low = uCode & 0xFF;\n\n    var node;\n    if (bucket[low] <= SEQ_START) {\n        // There's already a sequence with  - use it.\n        node = this.encodeTableSeq[SEQ_START-bucket[low]];\n    }\n    else {\n        // There was no sequence object - allocate a new one.\n        node = {};\n        if (bucket[low] !== UNASSIGNED) node[DEF_CHAR] = bucket[low]; // If a char was set before - make it a single-char subsequence.\n        bucket[low] = SEQ_START - this.encodeTableSeq.length;\n        this.encodeTableSeq.push(node);\n    }\n\n    // Traverse the character tree, allocating new nodes as needed.\n    for (var j = 1; j < seq.length-1; j++) {\n        var oldVal = node[uCode];\n        if (typeof oldVal === 'object')\n            node = oldVal;\n        else {\n            node = node[uCode] = {}\n            if (oldVal !== undefined)\n                node[DEF_CHAR] = oldVal\n        }\n    }\n\n    // Set the leaf to given dbcsCode.\n    uCode = seq[seq.length-1];\n    node[uCode] = dbcsCode;\n}\n\nDBCSCodec.prototype._fillEncodeTable = function(nodeIdx, prefix, skipEncodeChars) {\n    var node = this.decodeTables[nodeIdx];\n    for (var i = 0; i < 0x100; i++) {\n        var uCode = node[i];\n        var mbCode = prefix + i;\n        if (skipEncodeChars[mbCode])\n            continue;\n\n        if (uCode >= 0)\n            this._setEncodeChar(uCode, mbCode);\n        else if (uCode <= NODE_START)\n            this._fillEncodeTable(NODE_START - uCode, mbCode << 8, skipEncodeChars);\n        else if (uCode <= SEQ_START)\n            this._setEncodeSequence(this.decodeTableSeq[SEQ_START - uCode], mbCode);\n    }\n}\n\n\n\n// == Encoder ==================================================================\n\nfunction DBCSEncoder(options, codec) {\n    // Encoder state\n    this.leadSurrogate = -1;\n    this.seqObj = undefined;\n    \n    // Static data\n    this.encodeTable = codec.encodeTable;\n    this.encodeTableSeq = codec.encodeTableSeq;\n    this.defaultCharSingleByte = codec.defCharSB;\n    this.gb18030 = codec.gb18030;\n}\n\nDBCSEncoder.prototype.write = function(str) {\n    var newBuf = Buffer.alloc(str.length * (this.gb18030 ? 4 : 3)),\n        leadSurrogate = this.leadSurrogate,\n        seqObj = this.seqObj, nextChar = -1,\n        i = 0, j = 0;\n\n    while (true) {\n        // 0. Get next character.\n        if (nextChar === -1) {\n            if (i == str.length) break;\n            var uCode = str.charCodeAt(i++);\n        }\n        else {\n            var uCode = nextChar;\n            nextChar = -1;    \n        }\n\n        // 1. Handle surrogates.\n        if (0xD800 <= uCode && uCode < 0xE000) { // Char is one of surrogates.\n            if (uCode < 0xDC00) { // We've got lead surrogate.\n                if (leadSurrogate === -1) {\n                    leadSurrogate = uCode;\n                    continue;\n                } else {\n                    leadSurrogate = uCode;\n                    // Double lead surrogate found.\n                    uCode = UNASSIGNED;\n                }\n            } else { // We've got trail surrogate.\n                if (leadSurrogate !== -1) {\n                    uCode = 0x10000 + (leadSurrogate - 0xD800) * 0x400 + (uCode - 0xDC00);\n                    leadSurrogate = -1;\n                } else {\n                    // Incomplete surrogate pair - only trail surrogate found.\n                    uCode = UNASSIGNED;\n                }\n                \n            }\n        }\n        else if (leadSurrogate !== -1) {\n            // Incomplete surrogate pair - only lead surrogate found.\n            nextChar = uCode; uCode = UNASSIGNED; // Write an error, then current char.\n            leadSurrogate = -1;\n        }\n\n        // 2. Convert uCode character.\n        var dbcsCode = UNASSIGNED;\n        if (seqObj !== undefined && uCode != UNASSIGNED) { // We are in the middle of the sequence\n            var resCode = seqObj[uCode];\n            if (typeof resCode === 'object') { // Sequence continues.\n                seqObj = resCode;\n                continue;\n\n            } else if (typeof resCode == 'number') { // Sequence finished. Write it.\n                dbcsCode = resCode;\n\n            } else if (resCode == undefined) { // Current character is not part of the sequence.\n\n                // Try default character for this sequence\n                resCode = seqObj[DEF_CHAR];\n                if (resCode !== undefined) {\n                    dbcsCode = resCode; // Found. Write it.\n                    nextChar = uCode; // Current character will be written too in the next iteration.\n\n                } else {\n                    // TODO: What if we have no default? (resCode == undefined)\n                    // Then, we should write first char of the sequence as-is and try the rest recursively.\n                    // Didn't do it for now because no encoding has this situation yet.\n                    // Currently, just skip the sequence and write current char.\n                }\n            }\n            seqObj = undefined;\n        }\n        else if (uCode >= 0) {  // Regular character\n            var subtable = this.encodeTable[uCode >> 8];\n            if (subtable !== undefined)\n                dbcsCode = subtable[uCode & 0xFF];\n            \n            if (dbcsCode <= SEQ_START) { // Sequence start\n                seqObj = this.encodeTableSeq[SEQ_START-dbcsCode];\n                continue;\n            }\n\n            if (dbcsCode == UNASSIGNED && this.gb18030) {\n                // Use GB18030 algorithm to find character(s) to write.\n                var idx = findIdx(this.gb18030.uChars, uCode);\n                if (idx != -1) {\n                    var dbcsCode = this.gb18030.gbChars[idx] + (uCode - this.gb18030.uChars[idx]);\n                    newBuf[j++] = 0x81 + Math.floor(dbcsCode / 12600); dbcsCode = dbcsCode % 12600;\n                    newBuf[j++] = 0x30 + Math.floor(dbcsCode / 1260); dbcsCode = dbcsCode % 1260;\n                    newBuf[j++] = 0x81 + Math.floor(dbcsCode / 10); dbcsCode = dbcsCode % 10;\n                    newBuf[j++] = 0x30 + dbcsCode;\n                    continue;\n                }\n            }\n        }\n\n        // 3. Write dbcsCode character.\n        if (dbcsCode === UNASSIGNED)\n            dbcsCode = this.defaultCharSingleByte;\n        \n        if (dbcsCode < 0x100) {\n            newBuf[j++] = dbcsCode;\n        }\n        else if (dbcsCode < 0x10000) {\n            newBuf[j++] = dbcsCode >> 8;   // high byte\n            newBuf[j++] = dbcsCode & 0xFF; // low byte\n        }\n        else {\n            newBuf[j++] = dbcsCode >> 16;\n            newBuf[j++] = (dbcsCode >> 8) & 0xFF;\n            newBuf[j++] = dbcsCode & 0xFF;\n        }\n    }\n\n    this.seqObj = seqObj;\n    this.leadSurrogate = leadSurrogate;\n    return newBuf.slice(0, j);\n}\n\nDBCSEncoder.prototype.end = function() {\n    if (this.leadSurrogate === -1 && this.seqObj === undefined)\n        return; // All clean. Most often case.\n\n    var newBuf = Buffer.alloc(10), j = 0;\n\n    if (this.seqObj) { // We're in the sequence.\n        var dbcsCode = this.seqObj[DEF_CHAR];\n        if (dbcsCode !== undefined) { // Write beginning of the sequence.\n            if (dbcsCode < 0x100) {\n                newBuf[j++] = dbcsCode;\n            }\n            else {\n                newBuf[j++] = dbcsCode >> 8;   // high byte\n                newBuf[j++] = dbcsCode & 0xFF; // low byte\n            }\n        } else {\n            // See todo above.\n        }\n        this.seqObj = undefined;\n    }\n\n    if (this.leadSurrogate !== -1) {\n        // Incomplete surrogate pair - only lead surrogate found.\n        newBuf[j++] = this.defaultCharSingleByte;\n        this.leadSurrogate = -1;\n    }\n    \n    return newBuf.slice(0, j);\n}\n\n// Export for testing\nDBCSEncoder.prototype.findIdx = findIdx;\n\n\n// == Decoder ==================================================================\n\nfunction DBCSDecoder(options, codec) {\n    // Decoder state\n    this.nodeIdx = 0;\n    this.prevBuf = Buffer.alloc(0);\n\n    // Static data\n    this.decodeTables = codec.decodeTables;\n    this.decodeTableSeq = codec.decodeTableSeq;\n    this.defaultCharUnicode = codec.defaultCharUnicode;\n    this.gb18030 = codec.gb18030;\n}\n\nDBCSDecoder.prototype.write = function(buf) {\n    var newBuf = Buffer.alloc(buf.length*2),\n        nodeIdx = this.nodeIdx, \n        prevBuf = this.prevBuf, prevBufOffset = this.prevBuf.length,\n        seqStart = -this.prevBuf.length, // idx of the start of current parsed sequence.\n        uCode;\n\n    if (prevBufOffset > 0) // Make prev buf overlap a little to make it easier to slice later.\n        prevBuf = Buffer.concat([prevBuf, buf.slice(0, 10)]);\n    \n    for (var i = 0, j = 0; i < buf.length; i++) {\n        var curByte = (i >= 0) ? buf[i] : prevBuf[i + prevBufOffset];\n\n        // Lookup in current trie node.\n        var uCode = this.decodeTables[nodeIdx][curByte];\n\n        if (uCode >= 0) { \n            // Normal character, just use it.\n        }\n        else if (uCode === UNASSIGNED) { // Unknown char.\n            // TODO: Callback with seq.\n            //var curSeq = (seqStart >= 0) ? buf.slice(seqStart, i+1) : prevBuf.slice(seqStart + prevBufOffset, i+1 + prevBufOffset);\n            i = seqStart; // Try to parse again, after skipping first byte of the sequence ('i' will be incremented by 'for' cycle).\n            uCode = this.defaultCharUnicode.charCodeAt(0);\n        }\n        else if (uCode === GB18030_CODE) {\n            var curSeq = (seqStart >= 0) ? buf.slice(seqStart, i+1) : prevBuf.slice(seqStart + prevBufOffset, i+1 + prevBufOffset);\n            var ptr = (curSeq[0]-0x81)*12600 + (curSeq[1]-0x30)*1260 + (curSeq[2]-0x81)*10 + (curSeq[3]-0x30);\n            var idx = findIdx(this.gb18030.gbChars, ptr);\n            uCode = this.gb18030.uChars[idx] + ptr - this.gb18030.gbChars[idx];\n        }\n        else if (uCode <= NODE_START) { // Go to next trie node.\n            nodeIdx = NODE_START - uCode;\n            continue;\n        }\n        else if (uCode <= SEQ_START) { // Output a sequence of chars.\n            var seq = this.decodeTableSeq[SEQ_START - uCode];\n            for (var k = 0; k < seq.length - 1; k++) {\n                uCode = seq[k];\n                newBuf[j++] = uCode & 0xFF;\n                newBuf[j++] = uCode >> 8;\n            }\n            uCode = seq[seq.length-1];\n        }\n        else\n            throw new Error(\"iconv-lite internal error: invalid decoding table value \" + uCode + \" at \" + nodeIdx + \"/\" + curByte);\n\n        // Write the character to buffer, handling higher planes using surrogate pair.\n        if (uCode > 0xFFFF) { \n            uCode -= 0x10000;\n            var uCodeLead = 0xD800 + Math.floor(uCode / 0x400);\n            newBuf[j++] = uCodeLead & 0xFF;\n            newBuf[j++] = uCodeLead >> 8;\n\n            uCode = 0xDC00 + uCode % 0x400;\n        }\n        newBuf[j++] = uCode & 0xFF;\n        newBuf[j++] = uCode >> 8;\n\n        // Reset trie node.\n        nodeIdx = 0; seqStart = i+1;\n    }\n\n    this.nodeIdx = nodeIdx;\n    this.prevBuf = (seqStart >= 0) ? buf.slice(seqStart) : prevBuf.slice(seqStart + prevBufOffset);\n    return newBuf.slice(0, j).toString('ucs2');\n}\n\nDBCSDecoder.prototype.end = function() {\n    var ret = '';\n\n    // Try to parse all remaining chars.\n    while (this.prevBuf.length > 0) {\n        // Skip 1 character in the buffer.\n        ret += this.defaultCharUnicode;\n        var buf = this.prevBuf.slice(1);\n\n        // Parse remaining as usual.\n        this.prevBuf = Buffer.alloc(0);\n        this.nodeIdx = 0;\n        if (buf.length > 0)\n            ret += this.write(buf);\n    }\n\n    this.nodeIdx = 0;\n    return ret;\n}\n\n// Binary search for GB18030. Returns largest i such that table[i] <= val.\nfunction findIdx(table, val) {\n    if (table[0] > val)\n        return -1;\n\n    var l = 0, r = table.length;\n    while (l < r-1) { // always table[l] <= val < table[r]\n        var mid = l + Math.floor((r-l+1)/2);\n        if (table[mid] <= val)\n            l = mid;\n        else\n            r = mid;\n    }\n    return l;\n}\n\n", "[\n[\"0\",\"\\u0000\",128],\n[\"a1\",\"\uFF61\",62],\n[\"8140\",\"\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\u00B4\uFF40\u00A8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008\",9,\"\uFF0B\uFF0D\u00B1\u00D7\"],\n[\"8180\",\"\u00F7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\u00B0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\u00A7\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013\"],\n[\"81b8\",\"\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\"],\n[\"81c8\",\"\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203\"],\n[\"81da\",\"\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\"],\n[\"81f0\",\"\u212B\u2030\u266F\u266D\u266A\u2020\u2021\u00B6\"],\n[\"81fc\",\"\u25EF\"],\n[\"824f\",\"\uFF10\",9],\n[\"8260\",\"\uFF21\",25],\n[\"8281\",\"\uFF41\",25],\n[\"829f\",\"\u3041\",82],\n[\"8340\",\"\u30A1\",62],\n[\"8380\",\"\u30E0\",22],\n[\"839f\",\"\u0391\",16,\"\u03A3\",6],\n[\"83bf\",\"\u03B1\",16,\"\u03C3\",6],\n[\"8440\",\"\u0410\",5,\"\u0401\u0416\",25],\n[\"8470\",\"\u0430\",5,\"\u0451\u0436\",7],\n[\"8480\",\"\u043E\",17],\n[\"849f\",\"\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\"],\n[\"8740\",\"\u2460\",19,\"\u2160\",9],\n[\"875f\",\"\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1\"],\n[\"877e\",\"\u337B\"],\n[\"8780\",\"\u301D\u301F\u2116\u33CD\u2121\u32A4\",4,\"\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A\"],\n[\"889f\",\"\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D\"],\n[\"8940\",\"\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186\"],\n[\"8980\",\"\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539\"],\n[\"8a40\",\"\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B\"],\n[\"8a80\",\"\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4\"],\n[\"8b40\",\"\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551\"],\n[\"8b80\",\"\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48\"],\n[\"8c40\",\"\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8\"],\n[\"8c80\",\"\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411\"],\n[\"8d40\",\"\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D\"],\n[\"8d80\",\"\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237\"],\n[\"8e40\",\"\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62\"],\n[\"8e80\",\"\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468\"],\n[\"8f40\",\"\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3\"],\n[\"8f80\",\"\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE\"],\n[\"9040\",\"\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8\"],\n[\"9080\",\"\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA\"],\n[\"9140\",\"\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB\"],\n[\"9180\",\"\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA\"],\n[\"9240\",\"\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4\"],\n[\"9280\",\"\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013\"],\n[\"9340\",\"\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC\"],\n[\"9380\",\"\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165\"],\n[\"9440\",\"\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885\"],\n[\"9480\",\"\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E\"],\n[\"9540\",\"\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577\"],\n[\"9580\",\"\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B\"],\n[\"9640\",\"\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6\"],\n[\"9680\",\"\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652\"],\n[\"9740\",\"\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32\"],\n[\"9780\",\"\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F\"],\n[\"9840\",\"\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155\"],\n[\"989f\",\"\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2\"],\n[\"9940\",\"\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED\"],\n[\"9980\",\"\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8\"],\n[\"9a40\",\"\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638\"],\n[\"9a80\",\"\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969\"],\n[\"9b40\",\"\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80\"],\n[\"9b80\",\"\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF\"],\n[\"9c40\",\"\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060\"],\n[\"9c80\",\"\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B\"],\n[\"9d40\",\"\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B\"],\n[\"9d80\",\"\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC\"],\n[\"9e40\",\"\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E\"],\n[\"9e80\",\"\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3\"],\n[\"9f40\",\"\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF\"],\n[\"9f80\",\"\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC\"],\n[\"e040\",\"\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD\"],\n[\"e080\",\"\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1\"],\n[\"e140\",\"\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF\"],\n[\"e180\",\"\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC\"],\n[\"e240\",\"\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0\"],\n[\"e280\",\"\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06\"],\n[\"e340\",\"\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37\"],\n[\"e380\",\"\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B\"],\n[\"e440\",\"\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264\"],\n[\"e480\",\"\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548\"],\n[\"e540\",\"\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC\"],\n[\"e580\",\"\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E\"],\n[\"e640\",\"\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7\"],\n[\"e680\",\"\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A\"],\n[\"e740\",\"\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C\"],\n[\"e780\",\"\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E\"],\n[\"e840\",\"\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599\"],\n[\"e880\",\"\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870\"],\n[\"e940\",\"\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43\"],\n[\"e980\",\"\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48\"],\n[\"ea40\",\"\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\"],\n[\"ea80\",\"\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0\u582F\u69C7\u9059\u7464\u51DC\u7199\"],\n[\"ed40\",\"\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\"],\n[\"ed80\",\"\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1\"],\n[\"ee40\",\"\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\"],\n[\"ee80\",\"\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1\"],\n[\"eeef\",\"\u2170\",9,\"\uFFE2\uFFE4\uFF07\uFF02\"],\n[\"f040\",\"\uE000\",62],\n[\"f080\",\"\uE03F\",124],\n[\"f140\",\"\uE0BC\",62],\n[\"f180\",\"\uE0FB\",124],\n[\"f240\",\"\uE178\",62],\n[\"f280\",\"\uE1B7\",124],\n[\"f340\",\"\uE234\",62],\n[\"f380\",\"\uE273\",124],\n[\"f440\",\"\uE2F0\",62],\n[\"f480\",\"\uE32F\",124],\n[\"f540\",\"\uE3AC\",62],\n[\"f580\",\"\uE3EB\",124],\n[\"f640\",\"\uE468\",62],\n[\"f680\",\"\uE4A7\",124],\n[\"f740\",\"\uE524\",62],\n[\"f780\",\"\uE563\",124],\n[\"f840\",\"\uE5E0\",62],\n[\"f880\",\"\uE61F\",124],\n[\"f940\",\"\uE69C\"],\n[\"fa40\",\"\u2170\",9,\"\u2160\",9,\"\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u2235\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\"],\n[\"fa80\",\"\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\"],\n[\"fb40\",\"\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\"],\n[\"fb80\",\"\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\"],\n[\"fc40\",\"\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1\"]\n]\n", "[\n[\"0\",\"\\u0000\",127],\n[\"8ea1\",\"\uFF61\",62],\n[\"a1a1\",\"\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\u00B4\uFF40\u00A8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008\",9,\"\uFF0B\uFF0D\u00B1\u00D7\u00F7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\u00B0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\u00A7\u2606\u2605\u25CB\u25CF\u25CE\u25C7\"],\n[\"a2a1\",\"\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013\"],\n[\"a2ba\",\"\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\"],\n[\"a2ca\",\"\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203\"],\n[\"a2dc\",\"\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\"],\n[\"a2f2\",\"\u212B\u2030\u266F\u266D\u266A\u2020\u2021\u00B6\"],\n[\"a2fe\",\"\u25EF\"],\n[\"a3b0\",\"\uFF10\",9],\n[\"a3c1\",\"\uFF21\",25],\n[\"a3e1\",\"\uFF41\",25],\n[\"a4a1\",\"\u3041\",82],\n[\"a5a1\",\"\u30A1\",85],\n[\"a6a1\",\"\u0391\",16,\"\u03A3\",6],\n[\"a6c1\",\"\u03B1\",16,\"\u03C3\",6],\n[\"a7a1\",\"\u0410\",5,\"\u0401\u0416\",25],\n[\"a7d1\",\"\u0430\",5,\"\u0451\u0436\",25],\n[\"a8a1\",\"\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\"],\n[\"ada1\",\"\u2460\",19,\"\u2160\",9],\n[\"adc0\",\"\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1\"],\n[\"addf\",\"\u337B\u301D\u301F\u2116\u33CD\u2121\u32A4\",4,\"\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A\"],\n[\"b0a1\",\"\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D\"],\n[\"b1a1\",\"\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC\"],\n[\"b2a1\",\"\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539\"],\n[\"b3a1\",\"\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431\"],\n[\"b4a1\",\"\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4\"],\n[\"b5a1\",\"\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC\"],\n[\"b6a1\",\"\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48\"],\n[\"b7a1\",\"\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372\"],\n[\"b8a1\",\"\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411\"],\n[\"b9a1\",\"\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC\"],\n[\"baa1\",\"\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237\"],\n[\"bba1\",\"\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642\"],\n[\"bca1\",\"\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468\"],\n[\"bda1\",\"\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F\"],\n[\"bea1\",\"\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE\"],\n[\"bfa1\",\"\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE\"],\n[\"c0a1\",\"\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA\"],\n[\"c1a1\",\"\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E\"],\n[\"c2a1\",\"\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA\"],\n[\"c3a1\",\"\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5\"],\n[\"c4a1\",\"\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013\"],\n[\"c5a1\",\"\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230\"],\n[\"c6a1\",\"\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165\"],\n[\"c7a1\",\"\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6\"],\n[\"c8a1\",\"\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E\"],\n[\"c9a1\",\"\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D\"],\n[\"caa1\",\"\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B\"],\n[\"cba1\",\"\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80\"],\n[\"cca1\",\"\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652\"],\n[\"cda1\",\"\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483\"],\n[\"cea1\",\"\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F\"],\n[\"cfa1\",\"\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155\"],\n[\"d0a1\",\"\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2\"],\n[\"d1a1\",\"\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8\"],\n[\"d2a1\",\"\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8\"],\n[\"d3a1\",\"\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709\"],\n[\"d4a1\",\"\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969\"],\n[\"d5a1\",\"\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53\"],\n[\"d6a1\",\"\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF\"],\n[\"d7a1\",\"\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A\"],\n[\"d8a1\",\"\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B\"],\n[\"d9a1\",\"\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC\"],\n[\"daa1\",\"\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC\"],\n[\"dba1\",\"\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD\"],\n[\"dca1\",\"\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3\"],\n[\"dda1\",\"\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE\"],\n[\"dea1\",\"\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC\"],\n[\"dfa1\",\"\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC\"],\n[\"e0a1\",\"\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1\"],\n[\"e1a1\",\"\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670\"],\n[\"e2a1\",\"\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC\"],\n[\"e3a1\",\"\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50\"],\n[\"e4a1\",\"\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06\"],\n[\"e5a1\",\"\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A\"],\n[\"e6a1\",\"\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B\"],\n[\"e7a1\",\"\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9\"],\n[\"e8a1\",\"\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548\"],\n[\"e9a1\",\"\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759\"],\n[\"eaa1\",\"\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E\"],\n[\"eba1\",\"\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B\"],\n[\"eca1\",\"\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A\"],\n[\"eda1\",\"\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8\"],\n[\"eea1\",\"\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E\"],\n[\"efa1\",\"\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E\"],\n[\"f0a1\",\"\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870\"],\n[\"f1a1\",\"\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7\"],\n[\"f2a1\",\"\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48\"],\n[\"f3a1\",\"\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0\"],\n[\"f4a1\",\"\u582F\u69C7\u9059\u7464\u51DC\u7199\"],\n[\"f9a1\",\"\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\"],\n[\"faa1\",\"\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1\"],\n[\"fba1\",\"\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\"],\n[\"fca1\",\"\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1\"],\n[\"fcf1\",\"\u2170\",9,\"\uFFE2\uFFE4\uFF07\uFF02\"],\n[\"8fa2af\",\"\u02D8\u02C7\u00B8\u02D9\u02DD\u00AF\u02DB\u02DA\uFF5E\u0384\u0385\"],\n[\"8fa2c2\",\"\u00A1\u00A6\u00BF\"],\n[\"8fa2eb\",\"\u00BA\u00AA\u00A9\u00AE\u2122\u00A4\u2116\"],\n[\"8fa6e1\",\"\u0386\u0388\u0389\u038A\u03AA\"],\n[\"8fa6e7\",\"\u038C\"],\n[\"8fa6e9\",\"\u038E\u03AB\"],\n[\"8fa6ec\",\"\u038F\"],\n[\"8fa6f1\",\"\u03AC\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03C2\u03CD\u03CB\u03B0\u03CE\"],\n[\"8fa7c2\",\"\u0402\",10,\"\u040E\u040F\"],\n[\"8fa7f2\",\"\u0452\",10,\"\u045E\u045F\"],\n[\"8fa9a1\",\"\u00C6\u0110\"],\n[\"8fa9a4\",\"\u0126\"],\n[\"8fa9a6\",\"\u0132\"],\n[\"8fa9a8\",\"\u0141\u013F\"],\n[\"8fa9ab\",\"\u014A\u00D8\u0152\"],\n[\"8fa9af\",\"\u0166\u00DE\"],\n[\"8fa9c1\",\"\u00E6\u0111\u00F0\u0127\u0131\u0133\u0138\u0142\u0140\u0149\u014B\u00F8\u0153\u00DF\u0167\u00FE\"],\n[\"8faaa1\",\"\u00C1\u00C0\u00C4\u00C2\u0102\u01CD\u0100\u0104\u00C5\u00C3\u0106\u0108\u010C\u00C7\u010A\u010E\u00C9\u00C8\u00CB\u00CA\u011A\u0116\u0112\u0118\"],\n[\"8faaba\",\"\u011C\u011E\u0122\u0120\u0124\u00CD\u00CC\u00CF\u00CE\u01CF\u0130\u012A\u012E\u0128\u0134\u0136\u0139\u013D\u013B\u0143\u0147\u0145\u00D1\u00D3\u00D2\u00D6\u00D4\u01D1\u0150\u014C\u00D5\u0154\u0158\u0156\u015A\u015C\u0160\u015E\u0164\u0162\u00DA\u00D9\u00DC\u00DB\u016C\u01D3\u0170\u016A\u0172\u016E\u0168\u01D7\u01DB\u01D9\u01D5\u0174\u00DD\u0178\u0176\u0179\u017D\u017B\"],\n[\"8faba1\",\"\u00E1\u00E0\u00E4\u00E2\u0103\u01CE\u0101\u0105\u00E5\u00E3\u0107\u0109\u010D\u00E7\u010B\u010F\u00E9\u00E8\u00EB\u00EA\u011B\u0117\u0113\u0119\u01F5\u011D\u011F\"],\n[\"8fabbd\",\"\u0121\u0125\u00ED\u00EC\u00EF\u00EE\u01D0\"],\n[\"8fabc5\",\"\u012B\u012F\u0129\u0135\u0137\u013A\u013E\u013C\u0144\u0148\u0146\u00F1\u00F3\u00F2\u00F6\u00F4\u01D2\u0151\u014D\u00F5\u0155\u0159\u0157\u015B\u015D\u0161\u015F\u0165\u0163\u00FA\u00F9\u00FC\u00FB\u016D\u01D4\u0171\u016B\u0173\u016F\u0169\u01D8\u01DC\u01DA\u01D6\u0175\u00FD\u00FF\u0177\u017A\u017E\u017C\"],\n[\"8fb0a1\",\"\u4E02\u4E04\u4E05\u4E0C\u4E12\u4E1F\u4E23\u4E24\u4E28\u4E2B\u4E2E\u4E2F\u4E30\u4E35\u4E40\u4E41\u4E44\u4E47\u4E51\u4E5A\u4E5C\u4E63\u4E68\u4E69\u4E74\u4E75\u4E79\u4E7F\u4E8D\u4E96\u4E97\u4E9D\u4EAF\u4EB9\u4EC3\u4ED0\u4EDA\u4EDB\u4EE0\u4EE1\u4EE2\u4EE8\u4EEF\u4EF1\u4EF3\u4EF5\u4EFD\u4EFE\u4EFF\u4F00\u4F02\u4F03\u4F08\u4F0B\u4F0C\u4F12\u4F15\u4F16\u4F17\u4F19\u4F2E\u4F31\u4F60\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E\u4F40\u4F42\u4F48\u4F49\u4F4B\u4F4C\u4F52\u4F54\u4F56\u4F58\u4F5F\u4F63\u4F6A\u4F6C\u4F6E\u4F71\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F7E\u4F81\u4F82\u4F84\"],\n[\"8fb1a1\",\"\u4F85\u4F89\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F94\u4F97\u4F99\u4F9A\u4F9E\u4F9F\u4FB2\u4FB7\u4FB9\u4FBB\u4FBC\u4FBD\u4FBE\u4FC0\u4FC1\u4FC5\u4FC6\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FCF\u4FD2\u4FDC\u4FE0\u4FE2\u4FF0\u4FF2\u4FFC\u4FFD\u4FFF\u5000\u5001\u5004\u5007\u500A\u500C\u500E\u5010\u5013\u5017\u5018\u501B\u501C\u501D\u501E\u5022\u5027\u502E\u5030\u5032\u5033\u5035\u5040\u5041\u5042\u5045\u5046\u504A\u504C\u504E\u5051\u5052\u5053\u5057\u5059\u505F\u5060\u5062\u5063\u5066\u5067\u506A\u506D\u5070\u5071\u503B\u5081\u5083\u5084\u5086\u508A\u508E\u508F\u5090\"],\n[\"8fb2a1\",\"\u5092\u5093\u5094\u5096\u509B\u509C\u509E\",4,\"\u50AA\u50AF\u50B0\u50B9\u50BA\u50BD\u50C0\u50C3\u50C4\u50C7\u50CC\u50CE\u50D0\u50D3\u50D4\u50D8\u50DC\u50DD\u50DF\u50E2\u50E4\u50E6\u50E8\u50E9\u50EF\u50F1\u50F6\u50FA\u50FE\u5103\u5106\u5107\u5108\u510B\u510C\u510D\u510E\u50F2\u5110\u5117\u5119\u511B\u511C\u511D\u511E\u5123\u5127\u5128\u512C\u512D\u512F\u5131\u5133\u5134\u5135\u5138\u5139\u5142\u514A\u514F\u5153\u5155\u5157\u5158\u515F\u5164\u5166\u517E\u5183\u5184\u518B\u518E\u5198\u519D\u51A1\u51A3\u51AD\u51B8\u51BA\u51BC\u51BE\u51BF\u51C2\"],\n[\"8fb3a1\",\"\u51C8\u51CF\u51D1\u51D2\u51D3\u51D5\u51D8\u51DE\u51E2\u51E5\u51EE\u51F2\u51F3\u51F4\u51F7\u5201\u5202\u5205\u5212\u5213\u5215\u5216\u5218\u5222\u5228\u5231\u5232\u5235\u523C\u5245\u5249\u5255\u5257\u5258\u525A\u525C\u525F\u5260\u5261\u5266\u526E\u5277\u5278\u5279\u5280\u5282\u5285\u528A\u528C\u5293\u5295\u5296\u5297\u5298\u529A\u529C\u52A4\u52A5\u52A6\u52A7\u52AF\u52B0\u52B6\u52B7\u52B8\u52BA\u52BB\u52BD\u52C0\u52C4\u52C6\u52C8\u52CC\u52CF\u52D1\u52D4\u52D6\u52DB\u52DC\u52E1\u52E5\u52E8\u52E9\u52EA\u52EC\u52F0\u52F1\u52F4\u52F6\u52F7\u5300\u5303\u530A\u530B\"],\n[\"8fb4a1\",\"\u530C\u5311\u5313\u5318\u531B\u531C\u531E\u531F\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u5330\u5332\u5335\u533C\u533D\u533E\u5342\u534C\u534B\u5359\u535B\u5361\u5363\u5365\u536C\u536D\u5372\u5379\u537E\u5383\u5387\u5388\u538E\u5393\u5394\u5399\u539D\u53A1\u53A4\u53AA\u53AB\u53AF\u53B2\u53B4\u53B5\u53B7\u53B8\u53BA\u53BD\u53C0\u53C5\u53CF\u53D2\u53D3\u53D5\u53DA\u53DD\u53DE\u53E0\u53E6\u53E7\u53F5\u5402\u5413\u541A\u5421\u5427\u5428\u542A\u542F\u5431\u5434\u5435\u5443\u5444\u5447\u544D\u544F\u545E\u5462\u5464\u5466\u5467\u5469\u546B\u546D\u546E\u5474\u547F\"],\n[\"8fb5a1\",\"\u5481\u5483\u5485\u5488\u5489\u548D\u5491\u5495\u5496\u549C\u549F\u54A1\u54A6\u54A7\u54A9\u54AA\u54AD\u54AE\u54B1\u54B7\u54B9\u54BA\u54BB\u54BF\u54C6\u54CA\u54CD\u54CE\u54E0\u54EA\u54EC\u54EF\u54F6\u54FC\u54FE\u54FF\u5500\u5501\u5505\u5508\u5509\u550C\u550D\u550E\u5515\u552A\u552B\u5532\u5535\u5536\u553B\u553C\u553D\u5541\u5547\u5549\u554A\u554D\u5550\u5551\u5558\u555A\u555B\u555E\u5560\u5561\u5564\u5566\u557F\u5581\u5582\u5586\u5588\u558E\u558F\u5591\u5592\u5593\u5594\u5597\u55A3\u55A4\u55AD\u55B2\u55BF\u55C1\u55C3\u55C6\u55C9\u55CB\u55CC\u55CE\u55D1\u55D2\"],\n[\"8fb6a1\",\"\u55D3\u55D7\u55D8\u55DB\u55DE\u55E2\u55E9\u55F6\u55FF\u5605\u5608\u560A\u560D\",5,\"\u5619\u562C\u5630\u5633\u5635\u5637\u5639\u563B\u563C\u563D\u563F\u5640\u5641\u5643\u5644\u5646\u5649\u564B\u564D\u564F\u5654\u565E\u5660\u5661\u5662\u5663\u5666\u5669\u566D\u566F\u5671\u5672\u5675\u5684\u5685\u5688\u568B\u568C\u5695\u5699\u569A\u569D\u569E\u569F\u56A6\u56A7\u56A8\u56A9\u56AB\u56AC\u56AD\u56B1\u56B3\u56B7\u56BE\u56C5\u56C9\u56CA\u56CB\u56CF\u56D0\u56CC\u56CD\u56D9\u56DC\u56DD\u56DF\u56E1\u56E4\",4,\"\u56F1\u56EB\u56ED\"],\n[\"8fb7a1\",\"\u56F6\u56F7\u5701\u5702\u5707\u570A\u570C\u5711\u5715\u571A\u571B\u571D\u5720\u5722\u5723\u5724\u5725\u5729\u572A\u572C\u572E\u572F\u5733\u5734\u573D\u573E\u573F\u5745\u5746\u574C\u574D\u5752\u5762\u5765\u5767\u5768\u576B\u576D\",4,\"\u5773\u5774\u5775\u5777\u5779\u577A\u577B\u577C\u577E\u5781\u5783\u578C\u5794\u5797\u5799\u579A\u579C\u579D\u579E\u579F\u57A1\u5795\u57A7\u57A8\u57A9\u57AC\u57B8\u57BD\u57C7\u57C8\u57CC\u57CF\u57D5\u57DD\u57DE\u57E4\u57E6\u57E7\u57E9\u57ED\u57F0\u57F5\u57F6\u57F8\u57FD\u57FE\u57FF\u5803\u5804\u5808\u5809\u57E1\"],\n[\"8fb8a1\",\"\u580C\u580D\u581B\u581E\u581F\u5820\u5826\u5827\u582D\u5832\u5839\u583F\u5849\u584C\u584D\u584F\u5850\u5855\u585F\u5861\u5864\u5867\u5868\u5878\u587C\u587F\u5880\u5881\u5887\u5888\u5889\u588A\u588C\u588D\u588F\u5890\u5894\u5896\u589D\u58A0\u58A1\u58A2\u58A6\u58A9\u58B1\u58B2\u58C4\u58BC\u58C2\u58C8\u58CD\u58CE\u58D0\u58D2\u58D4\u58D6\u58DA\u58DD\u58E1\u58E2\u58E9\u58F3\u5905\u5906\u590B\u590C\u5912\u5913\u5914\u8641\u591D\u5921\u5923\u5924\u5928\u592F\u5930\u5933\u5935\u5936\u593F\u5943\u5946\u5952\u5953\u5959\u595B\u595D\u595E\u595F\u5961\u5963\u596B\u596D\"],\n[\"8fb9a1\",\"\u596F\u5972\u5975\u5976\u5979\u597B\u597C\u598B\u598C\u598E\u5992\u5995\u5997\u599F\u59A4\u59A7\u59AD\u59AE\u59AF\u59B0\u59B3\u59B7\u59BA\u59BC\u59C1\u59C3\u59C4\u59C8\u59CA\u59CD\u59D2\u59DD\u59DE\u59DF\u59E3\u59E4\u59E7\u59EE\u59EF\u59F1\u59F2\u59F4\u59F7\u5A00\u5A04\u5A0C\u5A0D\u5A0E\u5A12\u5A13\u5A1E\u5A23\u5A24\u5A27\u5A28\u5A2A\u5A2D\u5A30\u5A44\u5A45\u5A47\u5A48\u5A4C\u5A50\u5A55\u5A5E\u5A63\u5A65\u5A67\u5A6D\u5A77\u5A7A\u5A7B\u5A7E\u5A8B\u5A90\u5A93\u5A96\u5A99\u5A9C\u5A9E\u5A9F\u5AA0\u5AA2\u5AA7\u5AAC\u5AB1\u5AB2\u5AB3\u5AB5\u5AB8\u5ABA\u5ABB\u5ABF\"],\n[\"8fbaa1\",\"\u5AC4\u5AC6\u5AC8\u5ACF\u5ADA\u5ADC\u5AE0\u5AE5\u5AEA\u5AEE\u5AF5\u5AF6\u5AFD\u5B00\u5B01\u5B08\u5B17\u5B34\u5B19\u5B1B\u5B1D\u5B21\u5B25\u5B2D\u5B38\u5B41\u5B4B\u5B4C\u5B52\u5B56\u5B5E\u5B68\u5B6E\u5B6F\u5B7C\u5B7D\u5B7E\u5B7F\u5B81\u5B84\u5B86\u5B8A\u5B8E\u5B90\u5B91\u5B93\u5B94\u5B96\u5BA8\u5BA9\u5BAC\u5BAD\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBC\u5BC0\u5BC1\u5BCD\u5BCF\u5BD6\",4,\"\u5BE0\u5BEF\u5BF1\u5BF4\u5BFD\u5C0C\u5C17\u5C1E\u5C1F\u5C23\u5C26\u5C29\u5C2B\u5C2C\u5C2E\u5C30\u5C32\u5C35\u5C36\u5C59\u5C5A\u5C5C\u5C62\u5C63\u5C67\u5C68\u5C69\"],\n[\"8fbba1\",\"\u5C6D\u5C70\u5C74\u5C75\u5C7A\u5C7B\u5C7C\u5C7D\u5C87\u5C88\u5C8A\u5C8F\u5C92\u5C9D\u5C9F\u5CA0\u5CA2\u5CA3\u5CA6\u5CAA\u5CB2\u5CB4\u5CB5\u5CBA\u5CC9\u5CCB\u5CD2\u5CDD\u5CD7\u5CEE\u5CF1\u5CF2\u5CF4\u5D01\u5D06\u5D0D\u5D12\u5D2B\u5D23\u5D24\u5D26\u5D27\u5D31\u5D34\u5D39\u5D3D\u5D3F\u5D42\u5D43\u5D46\u5D48\u5D55\u5D51\u5D59\u5D4A\u5D5F\u5D60\u5D61\u5D62\u5D64\u5D6A\u5D6D\u5D70\u5D79\u5D7A\u5D7E\u5D7F\u5D81\u5D83\u5D88\u5D8A\u5D92\u5D93\u5D94\u5D95\u5D99\u5D9B\u5D9F\u5DA0\u5DA7\u5DAB\u5DB0\u5DB4\u5DB8\u5DB9\u5DC3\u5DC7\u5DCB\u5DD0\u5DCE\u5DD8\u5DD9\u5DE0\u5DE4\"],\n[\"8fbca1\",\"\u5DE9\u5DF8\u5DF9\u5E00\u5E07\u5E0D\u5E12\u5E14\u5E15\u5E18\u5E1F\u5E20\u5E2E\u5E28\u5E32\u5E35\u5E3E\u5E4B\u5E50\u5E49\u5E51\u5E56\u5E58\u5E5B\u5E5C\u5E5E\u5E68\u5E6A\",4,\"\u5E70\u5E80\u5E8B\u5E8E\u5EA2\u5EA4\u5EA5\u5EA8\u5EAA\u5EAC\u5EB1\u5EB3\u5EBD\u5EBE\u5EBF\u5EC6\u5ECC\u5ECB\u5ECE\u5ED1\u5ED2\u5ED4\u5ED5\u5EDC\u5EDE\u5EE5\u5EEB\u5F02\u5F06\u5F07\u5F08\u5F0E\u5F19\u5F1C\u5F1D\u5F21\u5F22\u5F23\u5F24\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F34\u5F36\u5F3B\u5F3D\u5F3F\u5F40\u5F44\u5F45\u5F47\u5F4D\u5F50\u5F54\u5F58\u5F5B\u5F60\u5F63\u5F64\u5F67\"],\n[\"8fbda1\",\"\u5F6F\u5F72\u5F74\u5F75\u5F78\u5F7A\u5F7D\u5F7E\u5F89\u5F8D\u5F8F\u5F96\u5F9C\u5F9D\u5FA2\u5FA7\u5FAB\u5FA4\u5FAC\u5FAF\u5FB0\u5FB1\u5FB8\u5FC4\u5FC7\u5FC8\u5FC9\u5FCB\u5FD0\",4,\"\u5FDE\u5FE1\u5FE2\u5FE8\u5FE9\u5FEA\u5FEC\u5FED\u5FEE\u5FEF\u5FF2\u5FF3\u5FF6\u5FFA\u5FFC\u6007\u600A\u600D\u6013\u6014\u6017\u6018\u601A\u601F\u6024\u602D\u6033\u6035\u6040\u6047\u6048\u6049\u604C\u6051\u6054\u6056\u6057\u605D\u6061\u6067\u6071\u607E\u607F\u6082\u6086\u6088\u608A\u608E\u6091\u6093\u6095\u6098\u609D\u609E\u60A2\u60A4\u60A5\u60A8\u60B0\u60B1\u60B7\"],\n[\"8fbea1\",\"\u60BB\u60BE\u60C2\u60C4\u60C8\u60C9\u60CA\u60CB\u60CE\u60CF\u60D4\u60D5\u60D9\u60DB\u60DD\u60DE\u60E2\u60E5\u60F2\u60F5\u60F8\u60FC\u60FD\u6102\u6107\u610A\u610C\u6110\",4,\"\u6116\u6117\u6119\u611C\u611E\u6122\u612A\u612B\u6130\u6131\u6135\u6136\u6137\u6139\u6141\u6145\u6146\u6149\u615E\u6160\u616C\u6172\u6178\u617B\u617C\u617F\u6180\u6181\u6183\u6184\u618B\u618D\u6192\u6193\u6197\u6198\u619C\u619D\u619F\u61A0\u61A5\u61A8\u61AA\u61AD\u61B8\u61B9\u61BC\u61C0\u61C1\u61C2\u61CE\u61CF\u61D5\u61DC\u61DD\u61DE\u61DF\u61E1\u61E2\u61E7\u61E9\u61E5\"],\n[\"8fbfa1\",\"\u61EC\u61ED\u61EF\u6201\u6203\u6204\u6207\u6213\u6215\u621C\u6220\u6222\u6223\u6227\u6229\u622B\u6239\u623D\u6242\u6243\u6244\u6246\u624C\u6250\u6251\u6252\u6254\u6256\u625A\u625C\u6264\u626D\u626F\u6273\u627A\u627D\u628D\u628E\u628F\u6290\u62A6\u62A8\u62B3\u62B6\u62B7\u62BA\u62BE\u62BF\u62C4\u62CE\u62D5\u62D6\u62DA\u62EA\u62F2\u62F4\u62FC\u62FD\u6303\u6304\u630A\u630B\u630D\u6310\u6313\u6316\u6318\u6329\u632A\u632D\u6335\u6336\u6339\u633C\u6341\u6342\u6343\u6344\u6346\u634A\u634B\u634E\u6352\u6353\u6354\u6358\u635B\u6365\u6366\u636C\u636D\u6371\u6374\u6375\"],\n[\"8fc0a1\",\"\u6378\u637C\u637D\u637F\u6382\u6384\u6387\u638A\u6390\u6394\u6395\u6399\u639A\u639E\u63A4\u63A6\u63AD\u63AE\u63AF\u63BD\u63C1\u63C5\u63C8\u63CE\u63D1\u63D3\u63D4\u63D5\u63DC\u63E0\u63E5\u63EA\u63EC\u63F2\u63F3\u63F5\u63F8\u63F9\u6409\u640A\u6410\u6412\u6414\u6418\u641E\u6420\u6422\u6424\u6425\u6429\u642A\u642F\u6430\u6435\u643D\u643F\u644B\u644F\u6451\u6452\u6453\u6454\u645A\u645B\u645C\u645D\u645F\u6460\u6461\u6463\u646D\u6473\u6474\u647B\u647D\u6485\u6487\u648F\u6490\u6491\u6498\u6499\u649B\u649D\u649F\u64A1\u64A3\u64A6\u64A8\u64AC\u64B3\u64BD\u64BE\u64BF\"],\n[\"8fc1a1\",\"\u64C4\u64C9\u64CA\u64CB\u64CC\u64CE\u64D0\u64D1\u64D5\u64D7\u64E4\u64E5\u64E9\u64EA\u64ED\u64F0\u64F5\u64F7\u64FB\u64FF\u6501\u6504\u6508\u6509\u650A\u650F\u6513\u6514\u6516\u6519\u651B\u651E\u651F\u6522\u6526\u6529\u652E\u6531\u653A\u653C\u653D\u6543\u6547\u6549\u6550\u6552\u6554\u655F\u6560\u6567\u656B\u657A\u657D\u6581\u6585\u658A\u6592\u6595\u6598\u659D\u65A0\u65A3\u65A6\u65AE\u65B2\u65B3\u65B4\u65BF\u65C2\u65C8\u65C9\u65CE\u65D0\u65D4\u65D6\u65D8\u65DF\u65F0\u65F2\u65F4\u65F5\u65F9\u65FE\u65FF\u6600\u6604\u6608\u6609\u660D\u6611\u6612\u6615\u6616\u661D\"],\n[\"8fc2a1\",\"\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6631\u6633\u6639\u6637\u6640\u6645\u6646\u664A\u664C\u6651\u664E\u6657\u6658\u6659\u665B\u665C\u6660\u6661\u66FB\u666A\u666B\u666C\u667E\u6673\u6675\u667F\u6677\u6678\u6679\u667B\u6680\u667C\u668B\u668C\u668D\u6690\u6692\u6699\u669A\u669B\u669C\u669F\u66A0\u66A4\u66AD\u66B1\u66B2\u66B5\u66BB\u66BF\u66C0\u66C2\u66C3\u66C8\u66CC\u66CE\u66CF\u66D4\u66DB\u66DF\u66E8\u66EB\u66EC\u66EE\u66FA\u6705\u6707\u670E\u6713\u6719\u671C\u6720\u6722\u6733\u673E\u6745\u6747\u6748\u674C\u6754\u6755\u675D\"],\n[\"8fc3a1\",\"\u6766\u676C\u676E\u6774\u6776\u677B\u6781\u6784\u678E\u678F\u6791\u6793\u6796\u6798\u6799\u679B\u67B0\u67B1\u67B2\u67B5\u67BB\u67BC\u67BD\u67F9\u67C0\u67C2\u67C3\u67C5\u67C8\u67C9\u67D2\u67D7\u67D9\u67DC\u67E1\u67E6\u67F0\u67F2\u67F6\u67F7\u6852\u6814\u6819\u681D\u681F\u6828\u6827\u682C\u682D\u682F\u6830\u6831\u6833\u683B\u683F\u6844\u6845\u684A\u684C\u6855\u6857\u6858\u685B\u686B\u686E\",4,\"\u6875\u6879\u687A\u687B\u687C\u6882\u6884\u6886\u6888\u6896\u6898\u689A\u689C\u68A1\u68A3\u68A5\u68A9\u68AA\u68AE\u68B2\u68BB\u68C5\u68C8\u68CC\u68CF\"],\n[\"8fc4a1\",\"\u68D0\u68D1\u68D3\u68D6\u68D9\u68DC\u68DD\u68E5\u68E8\u68EA\u68EB\u68EC\u68ED\u68F0\u68F1\u68F5\u68F6\u68FB\u68FC\u68FD\u6906\u6909\u690A\u6910\u6911\u6913\u6916\u6917\u6931\u6933\u6935\u6938\u693B\u6942\u6945\u6949\u694E\u6957\u695B\u6963\u6964\u6965\u6966\u6968\u6969\u696C\u6970\u6971\u6972\u697A\u697B\u697F\u6980\u698D\u6992\u6996\u6998\u69A1\u69A5\u69A6\u69A8\u69AB\u69AD\u69AF\u69B7\u69B8\u69BA\u69BC\u69C5\u69C8\u69D1\u69D6\u69D7\u69E2\u69E5\u69EE\u69EF\u69F1\u69F3\u69F5\u69FE\u6A00\u6A01\u6A03\u6A0F\u6A11\u6A15\u6A1A\u6A1D\u6A20\u6A24\u6A28\u6A30\u6A32\"],\n[\"8fc5a1\",\"\u6A34\u6A37\u6A3B\u6A3E\u6A3F\u6A45\u6A46\u6A49\u6A4A\u6A4E\u6A50\u6A51\u6A52\u6A55\u6A56\u6A5B\u6A64\u6A67\u6A6A\u6A71\u6A73\u6A7E\u6A81\u6A83\u6A86\u6A87\u6A89\u6A8B\u6A91\u6A9B\u6A9D\u6A9E\u6A9F\u6AA5\u6AAB\u6AAF\u6AB0\u6AB1\u6AB4\u6ABD\u6ABE\u6ABF\u6AC6\u6AC9\u6AC8\u6ACC\u6AD0\u6AD4\u6AD5\u6AD6\u6ADC\u6ADD\u6AE4\u6AE7\u6AEC\u6AF0\u6AF1\u6AF2\u6AFC\u6AFD\u6B02\u6B03\u6B06\u6B07\u6B09\u6B0F\u6B10\u6B11\u6B17\u6B1B\u6B1E\u6B24\u6B28\u6B2B\u6B2C\u6B2F\u6B35\u6B36\u6B3B\u6B3F\u6B46\u6B4A\u6B4D\u6B52\u6B56\u6B58\u6B5D\u6B60\u6B67\u6B6B\u6B6E\u6B70\u6B75\u6B7D\"],\n[\"8fc6a1\",\"\u6B7E\u6B82\u6B85\u6B97\u6B9B\u6B9F\u6BA0\u6BA2\u6BA3\u6BA8\u6BA9\u6BAC\u6BAD\u6BAE\u6BB0\u6BB8\u6BB9\u6BBD\u6BBE\u6BC3\u6BC4\u6BC9\u6BCC\u6BD6\u6BDA\u6BE1\u6BE3\u6BE6\u6BE7\u6BEE\u6BF1\u6BF7\u6BF9\u6BFF\u6C02\u6C04\u6C05\u6C09\u6C0D\u6C0E\u6C10\u6C12\u6C19\u6C1F\u6C26\u6C27\u6C28\u6C2C\u6C2E\u6C33\u6C35\u6C36\u6C3A\u6C3B\u6C3F\u6C4A\u6C4B\u6C4D\u6C4F\u6C52\u6C54\u6C59\u6C5B\u6C5C\u6C6B\u6C6D\u6C6F\u6C74\u6C76\u6C78\u6C79\u6C7B\u6C85\u6C86\u6C87\u6C89\u6C94\u6C95\u6C97\u6C98\u6C9C\u6C9F\u6CB0\u6CB2\u6CB4\u6CC2\u6CC6\u6CCD\u6CCF\u6CD0\u6CD1\u6CD2\u6CD4\u6CD6\"],\n[\"8fc7a1\",\"\u6CDA\u6CDC\u6CE0\u6CE7\u6CE9\u6CEB\u6CEC\u6CEE\u6CF2\u6CF4\u6D04\u6D07\u6D0A\u6D0E\u6D0F\u6D11\u6D13\u6D1A\u6D26\u6D27\u6D28\u6C67\u6D2E\u6D2F\u6D31\u6D39\u6D3C\u6D3F\u6D57\u6D5E\u6D5F\u6D61\u6D65\u6D67\u6D6F\u6D70\u6D7C\u6D82\u6D87\u6D91\u6D92\u6D94\u6D96\u6D97\u6D98\u6DAA\u6DAC\u6DB4\u6DB7\u6DB9\u6DBD\u6DBF\u6DC4\u6DC8\u6DCA\u6DCE\u6DCF\u6DD6\u6DDB\u6DDD\u6DDF\u6DE0\u6DE2\u6DE5\u6DE9\u6DEF\u6DF0\u6DF4\u6DF6\u6DFC\u6E00\u6E04\u6E1E\u6E22\u6E27\u6E32\u6E36\u6E39\u6E3B\u6E3C\u6E44\u6E45\u6E48\u6E49\u6E4B\u6E4F\u6E51\u6E52\u6E53\u6E54\u6E57\u6E5C\u6E5D\u6E5E\"],\n[\"8fc8a1\",\"\u6E62\u6E63\u6E68\u6E73\u6E7B\u6E7D\u6E8D\u6E93\u6E99\u6EA0\u6EA7\u6EAD\u6EAE\u6EB1\u6EB3\u6EBB\u6EBF\u6EC0\u6EC1\u6EC3\u6EC7\u6EC8\u6ECA\u6ECD\u6ECE\u6ECF\u6EEB\u6EED\u6EEE\u6EF9\u6EFB\u6EFD\u6F04\u6F08\u6F0A\u6F0C\u6F0D\u6F16\u6F18\u6F1A\u6F1B\u6F26\u6F29\u6F2A\u6F2F\u6F30\u6F33\u6F36\u6F3B\u6F3C\u6F2D\u6F4F\u6F51\u6F52\u6F53\u6F57\u6F59\u6F5A\u6F5D\u6F5E\u6F61\u6F62\u6F68\u6F6C\u6F7D\u6F7E\u6F83\u6F87\u6F88\u6F8B\u6F8C\u6F8D\u6F90\u6F92\u6F93\u6F94\u6F96\u6F9A\u6F9F\u6FA0\u6FA5\u6FA6\u6FA7\u6FA8\u6FAE\u6FAF\u6FB0\u6FB5\u6FB6\u6FBC\u6FC5\u6FC7\u6FC8\u6FCA\"],\n[\"8fc9a1\",\"\u6FDA\u6FDE\u6FE8\u6FE9\u6FF0\u6FF5\u6FF9\u6FFC\u6FFD\u7000\u7005\u7006\u7007\u700D\u7017\u7020\u7023\u702F\u7034\u7037\u7039\u703C\u7043\u7044\u7048\u7049\u704A\u704B\u7054\u7055\u705D\u705E\u704E\u7064\u7065\u706C\u706E\u7075\u7076\u707E\u7081\u7085\u7086\u7094\",4,\"\u709B\u70A4\u70AB\u70B0\u70B1\u70B4\u70B7\u70CA\u70D1\u70D3\u70D4\u70D5\u70D6\u70D8\u70DC\u70E4\u70FA\u7103\",4,\"\u710B\u710C\u710F\u711E\u7120\u712B\u712D\u712F\u7130\u7131\u7138\u7141\u7145\u7146\u7147\u714A\u714B\u7150\u7152\u7157\u715A\u715C\u715E\u7160\"],\n[\"8fcaa1\",\"\u7168\u7179\u7180\u7185\u7187\u718C\u7192\u719A\u719B\u71A0\u71A2\u71AF\u71B0\u71B2\u71B3\u71BA\u71BF\u71C0\u71C1\u71C4\u71CB\u71CC\u71D3\u71D6\u71D9\u71DA\u71DC\u71F8\u71FE\u7200\u7207\u7208\u7209\u7213\u7217\u721A\u721D\u721F\u7224\u722B\u722F\u7234\u7238\u7239\u7241\u7242\u7243\u7245\u724E\u724F\u7250\u7253\u7255\u7256\u725A\u725C\u725E\u7260\u7263\u7268\u726B\u726E\u726F\u7271\u7277\u7278\u727B\u727C\u727F\u7284\u7289\u728D\u728E\u7293\u729B\u72A8\u72AD\u72AE\u72B1\u72B4\u72BE\u72C1\u72C7\u72C9\u72CC\u72D5\u72D6\u72D8\u72DF\u72E5\u72F3\u72F4\u72FA\u72FB\"],\n[\"8fcba1\",\"\u72FE\u7302\u7304\u7305\u7307\u730B\u730D\u7312\u7313\u7318\u7319\u731E\u7322\u7324\u7327\u7328\u732C\u7331\u7332\u7335\u733A\u733B\u733D\u7343\u734D\u7350\u7352\u7356\u7358\u735D\u735E\u735F\u7360\u7366\u7367\u7369\u736B\u736C\u736E\u736F\u7371\u7377\u7379\u737C\u7380\u7381\u7383\u7385\u7386\u738E\u7390\u7393\u7395\u7397\u7398\u739C\u739E\u739F\u73A0\u73A2\u73A5\u73A6\u73AA\u73AB\u73AD\u73B5\u73B7\u73B9\u73BC\u73BD\u73BF\u73C5\u73C6\u73C9\u73CB\u73CC\u73CF\u73D2\u73D3\u73D6\u73D9\u73DD\u73E1\u73E3\u73E6\u73E7\u73E9\u73F4\u73F5\u73F7\u73F9\u73FA\u73FB\u73FD\"],\n[\"8fcca1\",\"\u73FF\u7400\u7401\u7404\u7407\u740A\u7411\u741A\u741B\u7424\u7426\u7428\",9,\"\u7439\u7440\u7443\u7444\u7446\u7447\u744B\u744D\u7451\u7452\u7457\u745D\u7462\u7466\u7467\u7468\u746B\u746D\u746E\u7471\u7472\u7480\u7481\u7485\u7486\u7487\u7489\u748F\u7490\u7491\u7492\u7498\u7499\u749A\u749C\u749F\u74A0\u74A1\u74A3\u74A6\u74A8\u74A9\u74AA\u74AB\u74AE\u74AF\u74B1\u74B2\u74B5\u74B9\u74BB\u74BF\u74C8\u74C9\u74CC\u74D0\u74D3\u74D8\u74DA\u74DB\u74DE\u74DF\u74E4\u74E8\u74EA\u74EB\u74EF\u74F4\u74FA\u74FB\u74FC\u74FF\u7506\"],\n[\"8fcda1\",\"\u7512\u7516\u7517\u7520\u7521\u7524\u7527\u7529\u752A\u752F\u7536\u7539\u753D\u753E\u753F\u7540\u7543\u7547\u7548\u754E\u7550\u7552\u7557\u755E\u755F\u7561\u756F\u7571\u7579\",5,\"\u7581\u7585\u7590\u7592\u7593\u7595\u7599\u759C\u75A2\u75A4\u75B4\u75BA\u75BF\u75C0\u75C1\u75C4\u75C6\u75CC\u75CE\u75CF\u75D7\u75DC\u75DF\u75E0\u75E1\u75E4\u75E7\u75EC\u75EE\u75EF\u75F1\u75F9\u7600\u7602\u7603\u7604\u7607\u7608\u760A\u760C\u760F\u7612\u7613\u7615\u7616\u7619\u761B\u761C\u761D\u761E\u7623\u7625\u7626\u7629\u762D\u7632\u7633\u7635\u7638\u7639\"],\n[\"8fcea1\",\"\u763A\u763C\u764A\u7640\u7641\u7643\u7644\u7645\u7649\u764B\u7655\u7659\u765F\u7664\u7665\u766D\u766E\u766F\u7671\u7674\u7681\u7685\u768C\u768D\u7695\u769B\u769C\u769D\u769F\u76A0\u76A2\",6,\"\u76AA\u76AD\u76BD\u76C1\u76C5\u76C9\u76CB\u76CC\u76CE\u76D4\u76D9\u76E0\u76E6\u76E8\u76EC\u76F0\u76F1\u76F6\u76F9\u76FC\u7700\u7706\u770A\u770E\u7712\u7714\u7715\u7717\u7719\u771A\u771C\u7722\u7728\u772D\u772E\u772F\u7734\u7735\u7736\u7739\u773D\u773E\u7742\u7745\u7746\u774A\u774D\u774E\u774F\u7752\u7756\u7757\u775C\u775E\u775F\u7760\u7762\"],\n[\"8fcfa1\",\"\u7764\u7767\u776A\u776C\u7770\u7772\u7773\u7774\u777A\u777D\u7780\u7784\u778C\u778D\u7794\u7795\u7796\u779A\u779F\u77A2\u77A7\u77AA\u77AE\u77AF\u77B1\u77B5\u77BE\u77C3\u77C9\u77D1\u77D2\u77D5\u77D9\u77DE\u77DF\u77E0\u77E4\u77E6\u77EA\u77EC\u77F0\u77F1\u77F4\u77F8\u77FB\u7805\u7806\u7809\u780D\u780E\u7811\u781D\u7821\u7822\u7823\u782D\u782E\u7830\u7835\u7837\u7843\u7844\u7847\u7848\u784C\u784E\u7852\u785C\u785E\u7860\u7861\u7863\u7864\u7868\u786A\u786E\u787A\u787E\u788A\u788F\u7894\u7898\u78A1\u789D\u789E\u789F\u78A4\u78A8\u78AC\u78AD\u78B0\u78B1\u78B2\u78B3\"],\n[\"8fd0a1\",\"\u78BB\u78BD\u78BF\u78C7\u78C8\u78C9\u78CC\u78CE\u78D2\u78D3\u78D5\u78D6\u78E4\u78DB\u78DF\u78E0\u78E1\u78E6\u78EA\u78F2\u78F3\u7900\u78F6\u78F7\u78FA\u78FB\u78FF\u7906\u790C\u7910\u791A\u791C\u791E\u791F\u7920\u7925\u7927\u7929\u792D\u7931\u7934\u7935\u793B\u793D\u793F\u7944\u7945\u7946\u794A\u794B\u794F\u7951\u7954\u7958\u795B\u795C\u7967\u7969\u796B\u7972\u7979\u797B\u797C\u797E\u798B\u798C\u7991\u7993\u7994\u7995\u7996\u7998\u799B\u799C\u79A1\u79A8\u79A9\u79AB\u79AF\u79B1\u79B4\u79B8\u79BB\u79C2\u79C4\u79C7\u79C8\u79CA\u79CF\u79D4\u79D6\u79DA\u79DD\u79DE\"],\n[\"8fd1a1\",\"\u79E0\u79E2\u79E5\u79EA\u79EB\u79ED\u79F1\u79F8\u79FC\u7A02\u7A03\u7A07\u7A09\u7A0A\u7A0C\u7A11\u7A15\u7A1B\u7A1E\u7A21\u7A27\u7A2B\u7A2D\u7A2F\u7A30\u7A34\u7A35\u7A38\u7A39\u7A3A\u7A44\u7A45\u7A47\u7A48\u7A4C\u7A55\u7A56\u7A59\u7A5C\u7A5D\u7A5F\u7A60\u7A65\u7A67\u7A6A\u7A6D\u7A75\u7A78\u7A7E\u7A80\u7A82\u7A85\u7A86\u7A8A\u7A8B\u7A90\u7A91\u7A94\u7A9E\u7AA0\u7AA3\u7AAC\u7AB3\u7AB5\u7AB9\u7ABB\u7ABC\u7AC6\u7AC9\u7ACC\u7ACE\u7AD1\u7ADB\u7AE8\u7AE9\u7AEB\u7AEC\u7AF1\u7AF4\u7AFB\u7AFD\u7AFE\u7B07\u7B14\u7B1F\u7B23\u7B27\u7B29\u7B2A\u7B2B\u7B2D\u7B2E\u7B2F\u7B30\"],\n[\"8fd2a1\",\"\u7B31\u7B34\u7B3D\u7B3F\u7B40\u7B41\u7B47\u7B4E\u7B55\u7B60\u7B64\u7B66\u7B69\u7B6A\u7B6D\u7B6F\u7B72\u7B73\u7B77\u7B84\u7B89\u7B8E\u7B90\u7B91\u7B96\u7B9B\u7B9E\u7BA0\u7BA5\u7BAC\u7BAF\u7BB0\u7BB2\u7BB5\u7BB6\u7BBA\u7BBB\u7BBC\u7BBD\u7BC2\u7BC5\u7BC8\u7BCA\u7BD4\u7BD6\u7BD7\u7BD9\u7BDA\u7BDB\u7BE8\u7BEA\u7BF2\u7BF4\u7BF5\u7BF8\u7BF9\u7BFA\u7BFC\u7BFE\u7C01\u7C02\u7C03\u7C04\u7C06\u7C09\u7C0B\u7C0C\u7C0E\u7C0F\u7C19\u7C1B\u7C20\u7C25\u7C26\u7C28\u7C2C\u7C31\u7C33\u7C34\u7C36\u7C39\u7C3A\u7C46\u7C4A\u7C55\u7C51\u7C52\u7C53\u7C59\",5],\n[\"8fd3a1\",\"\u7C61\u7C63\u7C67\u7C69\u7C6D\u7C6E\u7C70\u7C72\u7C79\u7C7C\u7C7D\u7C86\u7C87\u7C8F\u7C94\u7C9E\u7CA0\u7CA6\u7CB0\u7CB6\u7CB7\u7CBA\u7CBB\u7CBC\u7CBF\u7CC4\u7CC7\u7CC8\u7CC9\u7CCD\u7CCF\u7CD3\u7CD4\u7CD5\u7CD7\u7CD9\u7CDA\u7CDD\u7CE6\u7CE9\u7CEB\u7CF5\u7D03\u7D07\u7D08\u7D09\u7D0F\u7D11\u7D12\u7D13\u7D16\u7D1D\u7D1E\u7D23\u7D26\u7D2A\u7D2D\u7D31\u7D3C\u7D3D\u7D3E\u7D40\u7D41\u7D47\u7D48\u7D4D\u7D51\u7D53\u7D57\u7D59\u7D5A\u7D5C\u7D5D\u7D65\u7D67\u7D6A\u7D70\u7D78\u7D7A\u7D7B\u7D7F\u7D81\u7D82\u7D83\u7D85\u7D86\u7D88\u7D8B\u7D8C\u7D8D\u7D91\u7D96\u7D97\u7D9D\"],\n[\"8fd4a1\",\"\u7D9E\u7DA6\u7DA7\u7DAA\u7DB3\u7DB6\u7DB7\u7DB9\u7DC2\",4,\"\u7DCC\u7DCD\u7DCE\u7DD7\u7DD9\u7E00\u7DE2\u7DE5\u7DE6\u7DEA\u7DEB\u7DED\u7DF1\u7DF5\u7DF6\u7DF9\u7DFA\u7E08\u7E10\u7E11\u7E15\u7E17\u7E1C\u7E1D\u7E20\u7E27\u7E28\u7E2C\u7E2D\u7E2F\u7E33\u7E36\u7E3F\u7E44\u7E45\u7E47\u7E4E\u7E50\u7E52\u7E58\u7E5F\u7E61\u7E62\u7E65\u7E6B\u7E6E\u7E6F\u7E73\u7E78\u7E7E\u7E81\u7E86\u7E87\u7E8A\u7E8D\u7E91\u7E95\u7E98\u7E9A\u7E9D\u7E9E\u7F3C\u7F3B\u7F3D\u7F3E\u7F3F\u7F43\u7F44\u7F47\u7F4F\u7F52\u7F53\u7F5B\u7F5C\u7F5D\u7F61\u7F63\u7F64\u7F65\u7F66\u7F6D\"],\n[\"8fd5a1\",\"\u7F71\u7F7D\u7F7E\u7F7F\u7F80\u7F8B\u7F8D\u7F8F\u7F90\u7F91\u7F96\u7F97\u7F9C\u7FA1\u7FA2\u7FA6\u7FAA\u7FAD\u7FB4\u7FBC\u7FBF\u7FC0\u7FC3\u7FC8\u7FCE\u7FCF\u7FDB\u7FDF\u7FE3\u7FE5\u7FE8\u7FEC\u7FEE\u7FEF\u7FF2\u7FFA\u7FFD\u7FFE\u7FFF\u8007\u8008\u800A\u800D\u800E\u800F\u8011\u8013\u8014\u8016\u801D\u801E\u801F\u8020\u8024\u8026\u802C\u802E\u8030\u8034\u8035\u8037\u8039\u803A\u803C\u803E\u8040\u8044\u8060\u8064\u8066\u806D\u8071\u8075\u8081\u8088\u808E\u809C\u809E\u80A6\u80A7\u80AB\u80B8\u80B9\u80C8\u80CD\u80CF\u80D2\u80D4\u80D5\u80D7\u80D8\u80E0\u80ED\u80EE\"],\n[\"8fd6a1\",\"\u80F0\u80F2\u80F3\u80F6\u80F9\u80FA\u80FE\u8103\u810B\u8116\u8117\u8118\u811C\u811E\u8120\u8124\u8127\u812C\u8130\u8135\u813A\u813C\u8145\u8147\u814A\u814C\u8152\u8157\u8160\u8161\u8167\u8168\u8169\u816D\u816F\u8177\u8181\u8190\u8184\u8185\u8186\u818B\u818E\u8196\u8198\u819B\u819E\u81A2\u81AE\u81B2\u81B4\u81BB\u81CB\u81C3\u81C5\u81CA\u81CE\u81CF\u81D5\u81D7\u81DB\u81DD\u81DE\u81E1\u81E4\u81EB\u81EC\u81F0\u81F1\u81F2\u81F5\u81F6\u81F8\u81F9\u81FD\u81FF\u8200\u8203\u820F\u8213\u8214\u8219\u821A\u821D\u8221\u8222\u8228\u8232\u8234\u823A\u8243\u8244\u8245\u8246\"],\n[\"8fd7a1\",\"\u824B\u824E\u824F\u8251\u8256\u825C\u8260\u8263\u8267\u826D\u8274\u827B\u827D\u827F\u8280\u8281\u8283\u8284\u8287\u8289\u828A\u828E\u8291\u8294\u8296\u8298\u829A\u829B\u82A0\u82A1\u82A3\u82A4\u82A7\u82A8\u82A9\u82AA\u82AE\u82B0\u82B2\u82B4\u82B7\u82BA\u82BC\u82BE\u82BF\u82C6\u82D0\u82D5\u82DA\u82E0\u82E2\u82E4\u82E8\u82EA\u82ED\u82EF\u82F6\u82F7\u82FD\u82FE\u8300\u8301\u8307\u8308\u830A\u830B\u8354\u831B\u831D\u831E\u831F\u8321\u8322\u832C\u832D\u832E\u8330\u8333\u8337\u833A\u833C\u833D\u8342\u8343\u8344\u8347\u834D\u834E\u8351\u8355\u8356\u8357\u8370\u8378\"],\n[\"8fd8a1\",\"\u837D\u837F\u8380\u8382\u8384\u8386\u838D\u8392\u8394\u8395\u8398\u8399\u839B\u839C\u839D\u83A6\u83A7\u83A9\u83AC\u83BE\u83BF\u83C0\u83C7\u83C9\u83CF\u83D0\u83D1\u83D4\u83DD\u8353\u83E8\u83EA\u83F6\u83F8\u83F9\u83FC\u8401\u8406\u840A\u840F\u8411\u8415\u8419\u83AD\u842F\u8439\u8445\u8447\u8448\u844A\u844D\u844F\u8451\u8452\u8456\u8458\u8459\u845A\u845C\u8460\u8464\u8465\u8467\u846A\u8470\u8473\u8474\u8476\u8478\u847C\u847D\u8481\u8485\u8492\u8493\u8495\u849E\u84A6\u84A8\u84A9\u84AA\u84AF\u84B1\u84B4\u84BA\u84BD\u84BE\u84C0\u84C2\u84C7\u84C8\u84CC\u84CF\u84D3\"],\n[\"8fd9a1\",\"\u84DC\u84E7\u84EA\u84EF\u84F0\u84F1\u84F2\u84F7\u8532\u84FA\u84FB\u84FD\u8502\u8503\u8507\u850C\u850E\u8510\u851C\u851E\u8522\u8523\u8524\u8525\u8527\u852A\u852B\u852F\u8533\u8534\u8536\u853F\u8546\u854F\",4,\"\u8556\u8559\u855C\",6,\"\u8564\u856B\u856F\u8579\u857A\u857B\u857D\u857F\u8581\u8585\u8586\u8589\u858B\u858C\u858F\u8593\u8598\u859D\u859F\u85A0\u85A2\u85A5\u85A7\u85B4\u85B6\u85B7\u85B8\u85BC\u85BD\u85BE\u85BF\u85C2\u85C7\u85CA\u85CB\u85CE\u85AD\u85D8\u85DA\u85DF\u85E0\u85E6\u85E8\u85ED\u85F3\u85F6\u85FC\"],\n[\"8fdaa1\",\"\u85FF\u8600\u8604\u8605\u860D\u860E\u8610\u8611\u8612\u8618\u8619\u861B\u861E\u8621\u8627\u8629\u8636\u8638\u863A\u863C\u863D\u8640\u8642\u8646\u8652\u8653\u8656\u8657\u8658\u8659\u865D\u8660\",4,\"\u8669\u866C\u866F\u8675\u8676\u8677\u867A\u868D\u8691\u8696\u8698\u869A\u869C\u86A1\u86A6\u86A7\u86A8\u86AD\u86B1\u86B3\u86B4\u86B5\u86B7\u86B8\u86B9\u86BF\u86C0\u86C1\u86C3\u86C5\u86D1\u86D2\u86D5\u86D7\u86DA\u86DC\u86E0\u86E3\u86E5\u86E7\u8688\u86FA\u86FC\u86FD\u8704\u8705\u8707\u870B\u870E\u870F\u8710\u8713\u8714\u8719\u871E\u871F\u8721\u8723\"],\n[\"8fdba1\",\"\u8728\u872E\u872F\u8731\u8732\u8739\u873A\u873C\u873D\u873E\u8740\u8743\u8745\u874D\u8758\u875D\u8761\u8764\u8765\u876F\u8771\u8772\u877B\u8783\",6,\"\u878B\u878C\u8790\u8793\u8795\u8797\u8798\u8799\u879E\u87A0\u87A3\u87A7\u87AC\u87AD\u87AE\u87B1\u87B5\u87BE\u87BF\u87C1\u87C8\u87C9\u87CA\u87CE\u87D5\u87D6\u87D9\u87DA\u87DC\u87DF\u87E2\u87E3\u87E4\u87EA\u87EB\u87ED\u87F1\u87F3\u87F8\u87FA\u87FF\u8801\u8803\u8806\u8809\u880A\u880B\u8810\u8819\u8812\u8813\u8814\u8818\u881A\u881B\u881C\u881E\u881F\u8828\u882D\u882E\u8830\u8832\u8835\"],\n[\"8fdca1\",\"\u883A\u883C\u8841\u8843\u8845\u8848\u8849\u884A\u884B\u884E\u8851\u8855\u8856\u8858\u885A\u885C\u885F\u8860\u8864\u8869\u8871\u8879\u887B\u8880\u8898\u889A\u889B\u889C\u889F\u88A0\u88A8\u88AA\u88BA\u88BD\u88BE\u88C0\u88CA\",4,\"\u88D1\u88D2\u88D3\u88DB\u88DE\u88E7\u88EF\u88F0\u88F1\u88F5\u88F7\u8901\u8906\u890D\u890E\u890F\u8915\u8916\u8918\u8919\u891A\u891C\u8920\u8926\u8927\u8928\u8930\u8931\u8932\u8935\u8939\u893A\u893E\u8940\u8942\u8945\u8946\u8949\u894F\u8952\u8957\u895A\u895B\u895C\u8961\u8962\u8963\u896B\u896E\u8970\u8973\u8975\u897A\"],\n[\"8fdda1\",\"\u897B\u897C\u897D\u8989\u898D\u8990\u8994\u8995\u899B\u899C\u899F\u89A0\u89A5\u89B0\u89B4\u89B5\u89B6\u89B7\u89BC\u89D4\",4,\"\u89E5\u89E9\u89EB\u89ED\u89F1\u89F3\u89F6\u89F9\u89FD\u89FF\u8A04\u8A05\u8A07\u8A0F\u8A11\u8A12\u8A14\u8A15\u8A1E\u8A20\u8A22\u8A24\u8A26\u8A2B\u8A2C\u8A2F\u8A35\u8A37\u8A3D\u8A3E\u8A40\u8A43\u8A45\u8A47\u8A49\u8A4D\u8A4E\u8A53\u8A56\u8A57\u8A58\u8A5C\u8A5D\u8A61\u8A65\u8A67\u8A75\u8A76\u8A77\u8A79\u8A7A\u8A7B\u8A7E\u8A7F\u8A80\u8A83\u8A86\u8A8B\u8A8F\u8A90\u8A92\u8A96\u8A97\u8A99\u8A9F\u8AA7\u8AA9\u8AAE\u8AAF\u8AB3\"],\n[\"8fdea1\",\"\u8AB6\u8AB7\u8ABB\u8ABE\u8AC3\u8AC6\u8AC8\u8AC9\u8ACA\u8AD1\u8AD3\u8AD4\u8AD5\u8AD7\u8ADD\u8ADF\u8AEC\u8AF0\u8AF4\u8AF5\u8AF6\u8AFC\u8AFF\u8B05\u8B06\u8B0B\u8B11\u8B1C\u8B1E\u8B1F\u8B0A\u8B2D\u8B30\u8B37\u8B3C\u8B42\",4,\"\u8B48\u8B52\u8B53\u8B54\u8B59\u8B4D\u8B5E\u8B63\u8B6D\u8B76\u8B78\u8B79\u8B7C\u8B7E\u8B81\u8B84\u8B85\u8B8B\u8B8D\u8B8F\u8B94\u8B95\u8B9C\u8B9E\u8B9F\u8C38\u8C39\u8C3D\u8C3E\u8C45\u8C47\u8C49\u8C4B\u8C4F\u8C51\u8C53\u8C54\u8C57\u8C58\u8C5B\u8C5D\u8C59\u8C63\u8C64\u8C66\u8C68\u8C69\u8C6D\u8C73\u8C75\u8C76\u8C7B\u8C7E\u8C86\"],\n[\"8fdfa1\",\"\u8C87\u8C8B\u8C90\u8C92\u8C93\u8C99\u8C9B\u8C9C\u8CA4\u8CB9\u8CBA\u8CC5\u8CC6\u8CC9\u8CCB\u8CCF\u8CD6\u8CD5\u8CD9\u8CDD\u8CE1\u8CE8\u8CEC\u8CEF\u8CF0\u8CF2\u8CF5\u8CF7\u8CF8\u8CFE\u8CFF\u8D01\u8D03\u8D09\u8D12\u8D17\u8D1B\u8D65\u8D69\u8D6C\u8D6E\u8D7F\u8D82\u8D84\u8D88\u8D8D\u8D90\u8D91\u8D95\u8D9E\u8D9F\u8DA0\u8DA6\u8DAB\u8DAC\u8DAF\u8DB2\u8DB5\u8DB7\u8DB9\u8DBB\u8DC0\u8DC5\u8DC6\u8DC7\u8DC8\u8DCA\u8DCE\u8DD1\u8DD4\u8DD5\u8DD7\u8DD9\u8DE4\u8DE5\u8DE7\u8DEC\u8DF0\u8DBC\u8DF1\u8DF2\u8DF4\u8DFD\u8E01\u8E04\u8E05\u8E06\u8E0B\u8E11\u8E14\u8E16\u8E20\u8E21\u8E22\"],\n[\"8fe0a1\",\"\u8E23\u8E26\u8E27\u8E31\u8E33\u8E36\u8E37\u8E38\u8E39\u8E3D\u8E40\u8E41\u8E4B\u8E4D\u8E4E\u8E4F\u8E54\u8E5B\u8E5C\u8E5D\u8E5E\u8E61\u8E62\u8E69\u8E6C\u8E6D\u8E6F\u8E70\u8E71\u8E79\u8E7A\u8E7B\u8E82\u8E83\u8E89\u8E90\u8E92\u8E95\u8E9A\u8E9B\u8E9D\u8E9E\u8EA2\u8EA7\u8EA9\u8EAD\u8EAE\u8EB3\u8EB5\u8EBA\u8EBB\u8EC0\u8EC1\u8EC3\u8EC4\u8EC7\u8ECF\u8ED1\u8ED4\u8EDC\u8EE8\u8EEE\u8EF0\u8EF1\u8EF7\u8EF9\u8EFA\u8EED\u8F00\u8F02\u8F07\u8F08\u8F0F\u8F10\u8F16\u8F17\u8F18\u8F1E\u8F20\u8F21\u8F23\u8F25\u8F27\u8F28\u8F2C\u8F2D\u8F2E\u8F34\u8F35\u8F36\u8F37\u8F3A\u8F40\u8F41\"],\n[\"8fe1a1\",\"\u8F43\u8F47\u8F4F\u8F51\",4,\"\u8F58\u8F5D\u8F5E\u8F65\u8F9D\u8FA0\u8FA1\u8FA4\u8FA5\u8FA6\u8FB5\u8FB6\u8FB8\u8FBE\u8FC0\u8FC1\u8FC6\u8FCA\u8FCB\u8FCD\u8FD0\u8FD2\u8FD3\u8FD5\u8FE0\u8FE3\u8FE4\u8FE8\u8FEE\u8FF1\u8FF5\u8FF6\u8FFB\u8FFE\u9002\u9004\u9008\u900C\u9018\u901B\u9028\u9029\u902F\u902A\u902C\u902D\u9033\u9034\u9037\u903F\u9043\u9044\u904C\u905B\u905D\u9062\u9066\u9067\u906C\u9070\u9074\u9079\u9085\u9088\u908B\u908C\u908E\u9090\u9095\u9097\u9098\u9099\u909B\u90A0\u90A1\u90A2\u90A5\u90B0\u90B2\u90B3\u90B4\u90B6\u90BD\u90CC\u90BE\u90C3\"],\n[\"8fe2a1\",\"\u90C4\u90C5\u90C7\u90C8\u90D5\u90D7\u90D8\u90D9\u90DC\u90DD\u90DF\u90E5\u90D2\u90F6\u90EB\u90EF\u90F0\u90F4\u90FE\u90FF\u9100\u9104\u9105\u9106\u9108\u910D\u9110\u9114\u9116\u9117\u9118\u911A\u911C\u911E\u9120\u9125\u9122\u9123\u9127\u9129\u912E\u912F\u9131\u9134\u9136\u9137\u9139\u913A\u913C\u913D\u9143\u9147\u9148\u914F\u9153\u9157\u9159\u915A\u915B\u9161\u9164\u9167\u916D\u9174\u9179\u917A\u917B\u9181\u9183\u9185\u9186\u918A\u918E\u9191\u9193\u9194\u9195\u9198\u919E\u91A1\u91A6\u91A8\u91AC\u91AD\u91AE\u91B0\u91B1\u91B2\u91B3\u91B6\u91BB\u91BC\u91BD\u91BF\"],\n[\"8fe3a1\",\"\u91C2\u91C3\u91C5\u91D3\u91D4\u91D7\u91D9\u91DA\u91DE\u91E4\u91E5\u91E9\u91EA\u91EC\",5,\"\u91F7\u91F9\u91FB\u91FD\u9200\u9201\u9204\u9205\u9206\u9207\u9209\u920A\u920C\u9210\u9212\u9213\u9216\u9218\u921C\u921D\u9223\u9224\u9225\u9226\u9228\u922E\u922F\u9230\u9233\u9235\u9236\u9238\u9239\u923A\u923C\u923E\u9240\u9242\u9243\u9246\u9247\u924A\u924D\u924E\u924F\u9251\u9258\u9259\u925C\u925D\u9260\u9261\u9265\u9267\u9268\u9269\u926E\u926F\u9270\u9275\",4,\"\u927B\u927C\u927D\u927F\u9288\u9289\u928A\u928D\u928E\u9292\u9297\"],\n[\"8fe4a1\",\"\u9299\u929F\u92A0\u92A4\u92A5\u92A7\u92A8\u92AB\u92AF\u92B2\u92B6\u92B8\u92BA\u92BB\u92BC\u92BD\u92BF\",4,\"\u92C5\u92C6\u92C7\u92C8\u92CB\u92CC\u92CD\u92CE\u92D0\u92D3\u92D5\u92D7\u92D8\u92D9\u92DC\u92DD\u92DF\u92E0\u92E1\u92E3\u92E5\u92E7\u92E8\u92EC\u92EE\u92F0\u92F9\u92FB\u92FF\u9300\u9302\u9308\u930D\u9311\u9314\u9315\u931C\u931D\u931E\u931F\u9321\u9324\u9325\u9327\u9329\u932A\u9333\u9334\u9336\u9337\u9347\u9348\u9349\u9350\u9351\u9352\u9355\u9357\u9358\u935A\u935E\u9364\u9365\u9367\u9369\u936A\u936D\u936F\u9370\u9371\u9373\u9374\u9376\"],\n[\"8fe5a1\",\"\u937A\u937D\u937F\u9380\u9381\u9382\u9388\u938A\u938B\u938D\u938F\u9392\u9395\u9398\u939B\u939E\u93A1\u93A3\u93A4\u93A6\u93A8\u93AB\u93B4\u93B5\u93B6\u93BA\u93A9\u93C1\u93C4\u93C5\u93C6\u93C7\u93C9\",4,\"\u93D3\u93D9\u93DC\u93DE\u93DF\u93E2\u93E6\u93E7\u93F9\u93F7\u93F8\u93FA\u93FB\u93FD\u9401\u9402\u9404\u9408\u9409\u940D\u940E\u940F\u9415\u9416\u9417\u941F\u942E\u942F\u9431\u9432\u9433\u9434\u943B\u943F\u943D\u9443\u9445\u9448\u944A\u944C\u9455\u9459\u945C\u945F\u9461\u9463\u9468\u946B\u946D\u946E\u946F\u9471\u9472\u9484\u9483\u9578\u9579\"],\n[\"8fe6a1\",\"\u957E\u9584\u9588\u958C\u958D\u958E\u959D\u959E\u959F\u95A1\u95A6\u95A9\u95AB\u95AC\u95B4\u95B6\u95BA\u95BD\u95BF\u95C6\u95C8\u95C9\u95CB\u95D0\u95D1\u95D2\u95D3\u95D9\u95DA\u95DD\u95DE\u95DF\u95E0\u95E4\u95E6\u961D\u961E\u9622\u9624\u9625\u9626\u962C\u9631\u9633\u9637\u9638\u9639\u963A\u963C\u963D\u9641\u9652\u9654\u9656\u9657\u9658\u9661\u966E\u9674\u967B\u967C\u967E\u967F\u9681\u9682\u9683\u9684\u9689\u9691\u9696\u969A\u969D\u969F\u96A4\u96A5\u96A6\u96A9\u96AE\u96AF\u96B3\u96BA\u96CA\u96D2\u5DB2\u96D8\u96DA\u96DD\u96DE\u96DF\u96E9\u96EF\u96F1\u96FA\u9702\"],\n[\"8fe7a1\",\"\u9703\u9705\u9709\u971A\u971B\u971D\u9721\u9722\u9723\u9728\u9731\u9733\u9741\u9743\u974A\u974E\u974F\u9755\u9757\u9758\u975A\u975B\u9763\u9767\u976A\u976E\u9773\u9776\u9777\u9778\u977B\u977D\u977F\u9780\u9789\u9795\u9796\u9797\u9799\u979A\u979E\u979F\u97A2\u97AC\u97AE\u97B1\u97B2\u97B5\u97B6\u97B8\u97B9\u97BA\u97BC\u97BE\u97BF\u97C1\u97C4\u97C5\u97C7\u97C9\u97CA\u97CC\u97CD\u97CE\u97D0\u97D1\u97D4\u97D7\u97D8\u97D9\u97DD\u97DE\u97E0\u97DB\u97E1\u97E4\u97EF\u97F1\u97F4\u97F7\u97F8\u97FA\u9807\u980A\u9819\u980D\u980E\u9814\u9816\u981C\u981E\u9820\u9823\u9826\"],\n[\"8fe8a1\",\"\u982B\u982E\u982F\u9830\u9832\u9833\u9835\u9825\u983E\u9844\u9847\u984A\u9851\u9852\u9853\u9856\u9857\u9859\u985A\u9862\u9863\u9865\u9866\u986A\u986C\u98AB\u98AD\u98AE\u98B0\u98B4\u98B7\u98B8\u98BA\u98BB\u98BF\u98C2\u98C5\u98C8\u98CC\u98E1\u98E3\u98E5\u98E6\u98E7\u98EA\u98F3\u98F6\u9902\u9907\u9908\u9911\u9915\u9916\u9917\u991A\u991B\u991C\u991F\u9922\u9926\u9927\u992B\u9931\",4,\"\u9939\u993A\u993B\u993C\u9940\u9941\u9946\u9947\u9948\u994D\u994E\u9954\u9958\u9959\u995B\u995C\u995E\u995F\u9960\u999B\u999D\u999F\u99A6\u99B0\u99B1\u99B2\u99B5\"],\n[\"8fe9a1\",\"\u99B9\u99BA\u99BD\u99BF\u99C3\u99C9\u99D3\u99D4\u99D9\u99DA\u99DC\u99DE\u99E7\u99EA\u99EB\u99EC\u99F0\u99F4\u99F5\u99F9\u99FD\u99FE\u9A02\u9A03\u9A04\u9A0B\u9A0C\u9A10\u9A11\u9A16\u9A1E\u9A20\u9A22\u9A23\u9A24\u9A27\u9A2D\u9A2E\u9A33\u9A35\u9A36\u9A38\u9A47\u9A41\u9A44\u9A4A\u9A4B\u9A4C\u9A4E\u9A51\u9A54\u9A56\u9A5D\u9AAA\u9AAC\u9AAE\u9AAF\u9AB2\u9AB4\u9AB5\u9AB6\u9AB9\u9ABB\u9ABE\u9ABF\u9AC1\u9AC3\u9AC6\u9AC8\u9ACE\u9AD0\u9AD2\u9AD5\u9AD6\u9AD7\u9ADB\u9ADC\u9AE0\u9AE4\u9AE5\u9AE7\u9AE9\u9AEC\u9AF2\u9AF3\u9AF5\u9AF9\u9AFA\u9AFD\u9AFF\",4],\n[\"8feaa1\",\"\u9B04\u9B05\u9B08\u9B09\u9B0B\u9B0C\u9B0D\u9B0E\u9B10\u9B12\u9B16\u9B19\u9B1B\u9B1C\u9B20\u9B26\u9B2B\u9B2D\u9B33\u9B34\u9B35\u9B37\u9B39\u9B3A\u9B3D\u9B48\u9B4B\u9B4C\u9B55\u9B56\u9B57\u9B5B\u9B5E\u9B61\u9B63\u9B65\u9B66\u9B68\u9B6A\",4,\"\u9B73\u9B75\u9B77\u9B78\u9B79\u9B7F\u9B80\u9B84\u9B85\u9B86\u9B87\u9B89\u9B8A\u9B8B\u9B8D\u9B8F\u9B90\u9B94\u9B9A\u9B9D\u9B9E\u9BA6\u9BA7\u9BA9\u9BAC\u9BB0\u9BB1\u9BB2\u9BB7\u9BB8\u9BBB\u9BBC\u9BBE\u9BBF\u9BC1\u9BC7\u9BC8\u9BCE\u9BD0\u9BD7\u9BD8\u9BDD\u9BDF\u9BE5\u9BE7\u9BEA\u9BEB\u9BEF\u9BF3\u9BF7\u9BF8\"],\n[\"8feba1\",\"\u9BF9\u9BFA\u9BFD\u9BFF\u9C00\u9C02\u9C0B\u9C0F\u9C11\u9C16\u9C18\u9C19\u9C1A\u9C1C\u9C1E\u9C22\u9C23\u9C26\",4,\"\u9C31\u9C35\u9C36\u9C37\u9C3D\u9C41\u9C43\u9C44\u9C45\u9C49\u9C4A\u9C4E\u9C4F\u9C50\u9C53\u9C54\u9C56\u9C58\u9C5B\u9C5D\u9C5E\u9C5F\u9C63\u9C69\u9C6A\u9C5C\u9C6B\u9C68\u9C6E\u9C70\u9C72\u9C75\u9C77\u9C7B\u9CE6\u9CF2\u9CF7\u9CF9\u9D0B\u9D02\u9D11\u9D17\u9D18\u9D1C\u9D1D\u9D1E\u9D2F\u9D30\u9D32\u9D33\u9D34\u9D3A\u9D3C\u9D45\u9D3D\u9D42\u9D43\u9D47\u9D4A\u9D53\u9D54\u9D5F\u9D63\u9D62\u9D65\u9D69\u9D6A\u9D6B\u9D70\u9D76\u9D77\u9D7B\"],\n[\"8feca1\",\"\u9D7C\u9D7E\u9D83\u9D84\u9D86\u9D8A\u9D8D\u9D8E\u9D92\u9D93\u9D95\u9D96\u9D97\u9D98\u9DA1\u9DAA\u9DAC\u9DAE\u9DB1\u9DB5\u9DB9\u9DBC\u9DBF\u9DC3\u9DC7\u9DC9\u9DCA\u9DD4\u9DD5\u9DD6\u9DD7\u9DDA\u9DDE\u9DDF\u9DE0\u9DE5\u9DE7\u9DE9\u9DEB\u9DEE\u9DF0\u9DF3\u9DF4\u9DFE\u9E0A\u9E02\u9E07\u9E0E\u9E10\u9E11\u9E12\u9E15\u9E16\u9E19\u9E1C\u9E1D\u9E7A\u9E7B\u9E7C\u9E80\u9E82\u9E83\u9E84\u9E85\u9E87\u9E8E\u9E8F\u9E96\u9E98\u9E9B\u9E9E\u9EA4\u9EA8\u9EAC\u9EAE\u9EAF\u9EB0\u9EB3\u9EB4\u9EB5\u9EC6\u9EC8\u9ECB\u9ED5\u9EDF\u9EE4\u9EE7\u9EEC\u9EED\u9EEE\u9EF0\u9EF1\u9EF2\u9EF5\"],\n[\"8feda1\",\"\u9EF8\u9EFF\u9F02\u9F03\u9F09\u9F0F\u9F10\u9F11\u9F12\u9F14\u9F16\u9F17\u9F19\u9F1A\u9F1B\u9F1F\u9F22\u9F26\u9F2A\u9F2B\u9F2F\u9F31\u9F32\u9F34\u9F37\u9F39\u9F3A\u9F3C\u9F3D\u9F3F\u9F41\u9F43\",4,\"\u9F53\u9F55\u9F56\u9F57\u9F58\u9F5A\u9F5D\u9F5E\u9F68\u9F69\u9F6D\",4,\"\u9F73\u9F75\u9F7A\u9F7D\u9F8F\u9F90\u9F91\u9F92\u9F94\u9F96\u9F97\u9F9E\u9FA1\u9FA2\u9FA3\u9FA5\"]\n]\n", "[\n[\"0\",\"\\u0000\",127,\"\u20AC\"],\n[\"8140\",\"\u4E02\u4E04\u4E05\u4E06\u4E0F\u4E12\u4E17\u4E1F\u4E20\u4E21\u4E23\u4E26\u4E29\u4E2E\u4E2F\u4E31\u4E33\u4E35\u4E37\u4E3C\u4E40\u4E41\u4E42\u4E44\u4E46\u4E4A\u4E51\u4E55\u4E57\u4E5A\u4E5B\u4E62\u4E63\u4E64\u4E65\u4E67\u4E68\u4E6A\",5,\"\u4E72\u4E74\",9,\"\u4E7F\",6,\"\u4E87\u4E8A\"],\n[\"8180\",\"\u4E90\u4E96\u4E97\u4E99\u4E9C\u4E9D\u4E9E\u4EA3\u4EAA\u4EAF\u4EB0\u4EB1\u4EB4\u4EB6\u4EB7\u4EB8\u4EB9\u4EBC\u4EBD\u4EBE\u4EC8\u4ECC\u4ECF\u4ED0\u4ED2\u4EDA\u4EDB\u4EDC\u4EE0\u4EE2\u4EE6\u4EE7\u4EE9\u4EED\u4EEE\u4EEF\u4EF1\u4EF4\u4EF8\u4EF9\u4EFA\u4EFC\u4EFE\u4F00\u4F02\",6,\"\u4F0B\u4F0C\u4F12\",4,\"\u4F1C\u4F1D\u4F21\u4F23\u4F28\u4F29\u4F2C\u4F2D\u4F2E\u4F31\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E\",4,\"\u4F44\u4F45\u4F47\",5,\"\u4F52\u4F54\u4F56\u4F61\u4F62\u4F66\u4F68\u4F6A\u4F6B\u4F6D\u4F6E\u4F71\u4F72\u4F75\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F80\u4F81\u4F82\u4F85\u4F86\u4F87\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F95\u4F96\u4F98\u4F99\u4F9A\u4F9C\u4F9E\u4F9F\u4FA1\u4FA2\"],\n[\"8240\",\"\u4FA4\u4FAB\u4FAD\u4FB0\",4,\"\u4FB6\",8,\"\u4FC0\u4FC1\u4FC2\u4FC6\u4FC7\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FD2\",4,\"\u4FD9\u4FDB\u4FE0\u4FE2\u4FE4\u4FE5\u4FE7\u4FEB\u4FEC\u4FF0\u4FF2\u4FF4\u4FF5\u4FF6\u4FF7\u4FF9\u4FFB\u4FFC\u4FFD\u4FFF\",11],\n[\"8280\",\"\u500B\u500E\u5010\u5011\u5013\u5015\u5016\u5017\u501B\u501D\u501E\u5020\u5022\u5023\u5024\u5027\u502B\u502F\",10,\"\u503B\u503D\u503F\u5040\u5041\u5042\u5044\u5045\u5046\u5049\u504A\u504B\u504D\u5050\",4,\"\u5056\u5057\u5058\u5059\u505B\u505D\",7,\"\u5066\",5,\"\u506D\",8,\"\u5078\u5079\u507A\u507C\u507D\u5081\u5082\u5083\u5084\u5086\u5087\u5089\u508A\u508B\u508C\u508E\",20,\"\u50A4\u50A6\u50AA\u50AB\u50AD\",4,\"\u50B3\",6,\"\u50BC\"],\n[\"8340\",\"\u50BD\",17,\"\u50D0\",5,\"\u50D7\u50D8\u50D9\u50DB\",10,\"\u50E8\u50E9\u50EA\u50EB\u50EF\u50F0\u50F1\u50F2\u50F4\u50F6\",4,\"\u50FC\",9,\"\u5108\"],\n[\"8380\",\"\u5109\u510A\u510C\",5,\"\u5113\",13,\"\u5122\",28,\"\u5142\u5147\u514A\u514C\u514E\u514F\u5150\u5152\u5153\u5157\u5158\u5159\u515B\u515D\",4,\"\u5163\u5164\u5166\u5167\u5169\u516A\u516F\u5172\u517A\u517E\u517F\u5183\u5184\u5186\u5187\u518A\u518B\u518E\u518F\u5190\u5191\u5193\u5194\u5198\u519A\u519D\u519E\u519F\u51A1\u51A3\u51A6\",4,\"\u51AD\u51AE\u51B4\u51B8\u51B9\u51BA\u51BE\u51BF\u51C1\u51C2\u51C3\u51C5\u51C8\u51CA\u51CD\u51CE\u51D0\u51D2\",5],\n[\"8440\",\"\u51D8\u51D9\u51DA\u51DC\u51DE\u51DF\u51E2\u51E3\u51E5\",5,\"\u51EC\u51EE\u51F1\u51F2\u51F4\u51F7\u51FE\u5204\u5205\u5209\u520B\u520C\u520F\u5210\u5213\u5214\u5215\u521C\u521E\u521F\u5221\u5222\u5223\u5225\u5226\u5227\u522A\u522C\u522F\u5231\u5232\u5234\u5235\u523C\u523E\u5244\",5,\"\u524B\u524E\u524F\u5252\u5253\u5255\u5257\u5258\"],\n[\"8480\",\"\u5259\u525A\u525B\u525D\u525F\u5260\u5262\u5263\u5264\u5266\u5268\u526B\u526C\u526D\u526E\u5270\u5271\u5273\",9,\"\u527E\u5280\u5283\",4,\"\u5289\",6,\"\u5291\u5292\u5294\",6,\"\u529C\u52A4\u52A5\u52A6\u52A7\u52AE\u52AF\u52B0\u52B4\",9,\"\u52C0\u52C1\u52C2\u52C4\u52C5\u52C6\u52C8\u52CA\u52CC\u52CD\u52CE\u52CF\u52D1\u52D3\u52D4\u52D5\u52D7\u52D9\",5,\"\u52E0\u52E1\u52E2\u52E3\u52E5\",10,\"\u52F1\",7,\"\u52FB\u52FC\u52FD\u5301\u5302\u5303\u5304\u5307\u5309\u530A\u530B\u530C\u530E\"],\n[\"8540\",\"\u5311\u5312\u5313\u5314\u5318\u531B\u531C\u531E\u531F\u5322\u5324\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u532F\",9,\"\u533C\u533D\u5340\u5342\u5344\u5346\u534B\u534C\u534D\u5350\u5354\u5358\u5359\u535B\u535D\u5365\u5368\u536A\u536C\u536D\u5372\u5376\u5379\u537B\u537C\u537D\u537E\u5380\u5381\u5383\u5387\u5388\u538A\u538E\u538F\"],\n[\"8580\",\"\u5390\",4,\"\u5396\u5397\u5399\u539B\u539C\u539E\u53A0\u53A1\u53A4\u53A7\u53AA\u53AB\u53AC\u53AD\u53AF\",6,\"\u53B7\u53B8\u53B9\u53BA\u53BC\u53BD\u53BE\u53C0\u53C3\",4,\"\u53CE\u53CF\u53D0\u53D2\u53D3\u53D5\u53DA\u53DC\u53DD\u53DE\u53E1\u53E2\u53E7\u53F4\u53FA\u53FE\u53FF\u5400\u5402\u5405\u5407\u540B\u5414\u5418\u5419\u541A\u541C\u5422\u5424\u5425\u542A\u5430\u5433\u5436\u5437\u543A\u543D\u543F\u5441\u5442\u5444\u5445\u5447\u5449\u544C\u544D\u544E\u544F\u5451\u545A\u545D\",4,\"\u5463\u5465\u5467\u5469\",7,\"\u5474\u5479\u547A\u547E\u547F\u5481\u5483\u5485\u5487\u5488\u5489\u548A\u548D\u5491\u5493\u5497\u5498\u549C\u549E\u549F\u54A0\u54A1\"],\n[\"8640\",\"\u54A2\u54A5\u54AE\u54B0\u54B2\u54B5\u54B6\u54B7\u54B9\u54BA\u54BC\u54BE\u54C3\u54C5\u54CA\u54CB\u54D6\u54D8\u54DB\u54E0\",4,\"\u54EB\u54EC\u54EF\u54F0\u54F1\u54F4\",5,\"\u54FB\u54FE\u5500\u5502\u5503\u5504\u5505\u5508\u550A\",4,\"\u5512\u5513\u5515\",5,\"\u551C\u551D\u551E\u551F\u5521\u5525\u5526\"],\n[\"8680\",\"\u5528\u5529\u552B\u552D\u5532\u5534\u5535\u5536\u5538\u5539\u553A\u553B\u553D\u5540\u5542\u5545\u5547\u5548\u554B\",4,\"\u5551\u5552\u5553\u5554\u5557\",4,\"\u555D\u555E\u555F\u5560\u5562\u5563\u5568\u5569\u556B\u556F\",5,\"\u5579\u557A\u557D\u557F\u5585\u5586\u558C\u558D\u558E\u5590\u5592\u5593\u5595\u5596\u5597\u559A\u559B\u559E\u55A0\",6,\"\u55A8\",8,\"\u55B2\u55B4\u55B6\u55B8\u55BA\u55BC\u55BF\",4,\"\u55C6\u55C7\u55C8\u55CA\u55CB\u55CE\u55CF\u55D0\u55D5\u55D7\",4,\"\u55DE\u55E0\u55E2\u55E7\u55E9\u55ED\u55EE\u55F0\u55F1\u55F4\u55F6\u55F8\",4,\"\u55FF\u5602\u5603\u5604\u5605\"],\n[\"8740\",\"\u5606\u5607\u560A\u560B\u560D\u5610\",7,\"\u5619\u561A\u561C\u561D\u5620\u5621\u5622\u5625\u5626\u5628\u5629\u562A\u562B\u562E\u562F\u5630\u5633\u5635\u5637\u5638\u563A\u563C\u563D\u563E\u5640\",11,\"\u564F\",4,\"\u5655\u5656\u565A\u565B\u565D\",4],\n[\"8780\",\"\u5663\u5665\u5666\u5667\u566D\u566E\u566F\u5670\u5672\u5673\u5674\u5675\u5677\u5678\u5679\u567A\u567D\",7,\"\u5687\",6,\"\u5690\u5691\u5692\u5694\",14,\"\u56A4\",10,\"\u56B0\",6,\"\u56B8\u56B9\u56BA\u56BB\u56BD\",12,\"\u56CB\",8,\"\u56D5\u56D6\u56D8\u56D9\u56DC\u56E3\u56E5\",5,\"\u56EC\u56EE\u56EF\u56F2\u56F3\u56F6\u56F7\u56F8\u56FB\u56FC\u5700\u5701\u5702\u5705\u5707\u570B\",6],\n[\"8840\",\"\u5712\",9,\"\u571D\u571E\u5720\u5721\u5722\u5724\u5725\u5726\u5727\u572B\u5731\u5732\u5734\",4,\"\u573C\u573D\u573F\u5741\u5743\u5744\u5745\u5746\u5748\u5749\u574B\u5752\",4,\"\u5758\u5759\u5762\u5763\u5765\u5767\u576C\u576E\u5770\u5771\u5772\u5774\u5775\u5778\u5779\u577A\u577D\u577E\u577F\u5780\"],\n[\"8880\",\"\u5781\u5787\u5788\u5789\u578A\u578D\",4,\"\u5794\",6,\"\u579C\u579D\u579E\u579F\u57A5\u57A8\u57AA\u57AC\u57AF\u57B0\u57B1\u57B3\u57B5\u57B6\u57B7\u57B9\",8,\"\u57C4\",6,\"\u57CC\u57CD\u57D0\u57D1\u57D3\u57D6\u57D7\u57DB\u57DC\u57DE\u57E1\u57E2\u57E3\u57E5\",7,\"\u57EE\u57F0\u57F1\u57F2\u57F3\u57F5\u57F6\u57F7\u57FB\u57FC\u57FE\u57FF\u5801\u5803\u5804\u5805\u5808\u5809\u580A\u580C\u580E\u580F\u5810\u5812\u5813\u5814\u5816\u5817\u5818\u581A\u581B\u581C\u581D\u581F\u5822\u5823\u5825\",4,\"\u582B\",4,\"\u5831\u5832\u5833\u5834\u5836\",7],\n[\"8940\",\"\u583E\",5,\"\u5845\",6,\"\u584E\u584F\u5850\u5852\u5853\u5855\u5856\u5857\u5859\",4,\"\u585F\",5,\"\u5866\",4,\"\u586D\",16,\"\u587F\u5882\u5884\u5886\u5887\u5888\u588A\u588B\u588C\"],\n[\"8980\",\"\u588D\",4,\"\u5894\",4,\"\u589B\u589C\u589D\u58A0\",7,\"\u58AA\",17,\"\u58BD\u58BE\u58BF\u58C0\u58C2\u58C3\u58C4\u58C6\",10,\"\u58D2\u58D3\u58D4\u58D6\",13,\"\u58E5\",5,\"\u58ED\u58EF\u58F1\u58F2\u58F4\u58F5\u58F7\u58F8\u58FA\",7,\"\u5903\u5905\u5906\u5908\",4,\"\u590E\u5910\u5911\u5912\u5913\u5917\u5918\u591B\u591D\u591E\u5920\u5921\u5922\u5923\u5926\u5928\u592C\u5930\u5932\u5933\u5935\u5936\u593B\"],\n[\"8a40\",\"\u593D\u593E\u593F\u5940\u5943\u5945\u5946\u594A\u594C\u594D\u5950\u5952\u5953\u5959\u595B\",4,\"\u5961\u5963\u5964\u5966\",12,\"\u5975\u5977\u597A\u597B\u597C\u597E\u597F\u5980\u5985\u5989\u598B\u598C\u598E\u598F\u5990\u5991\u5994\u5995\u5998\u599A\u599B\u599C\u599D\u599F\u59A0\u59A1\u59A2\u59A6\"],\n[\"8a80\",\"\u59A7\u59AC\u59AD\u59B0\u59B1\u59B3\",5,\"\u59BA\u59BC\u59BD\u59BF\",6,\"\u59C7\u59C8\u59C9\u59CC\u59CD\u59CE\u59CF\u59D5\u59D6\u59D9\u59DB\u59DE\",4,\"\u59E4\u59E6\u59E7\u59E9\u59EA\u59EB\u59ED\",11,\"\u59FA\u59FC\u59FD\u59FE\u5A00\u5A02\u5A0A\u5A0B\u5A0D\u5A0E\u5A0F\u5A10\u5A12\u5A14\u5A15\u5A16\u5A17\u5A19\u5A1A\u5A1B\u5A1D\u5A1E\u5A21\u5A22\u5A24\u5A26\u5A27\u5A28\u5A2A\",6,\"\u5A33\u5A35\u5A37\",4,\"\u5A3D\u5A3E\u5A3F\u5A41\",4,\"\u5A47\u5A48\u5A4B\",9,\"\u5A56\u5A57\u5A58\u5A59\u5A5B\",5],\n[\"8b40\",\"\u5A61\u5A63\u5A64\u5A65\u5A66\u5A68\u5A69\u5A6B\",8,\"\u5A78\u5A79\u5A7B\u5A7C\u5A7D\u5A7E\u5A80\",17,\"\u5A93\",6,\"\u5A9C\",13,\"\u5AAB\u5AAC\"],\n[\"8b80\",\"\u5AAD\",4,\"\u5AB4\u5AB6\u5AB7\u5AB9\",4,\"\u5ABF\u5AC0\u5AC3\",5,\"\u5ACA\u5ACB\u5ACD\",4,\"\u5AD3\u5AD5\u5AD7\u5AD9\u5ADA\u5ADB\u5ADD\u5ADE\u5ADF\u5AE2\u5AE4\u5AE5\u5AE7\u5AE8\u5AEA\u5AEC\",4,\"\u5AF2\",22,\"\u5B0A\",11,\"\u5B18\",25,\"\u5B33\u5B35\u5B36\u5B38\",7,\"\u5B41\",6],\n[\"8c40\",\"\u5B48\",7,\"\u5B52\u5B56\u5B5E\u5B60\u5B61\u5B67\u5B68\u5B6B\u5B6D\u5B6E\u5B6F\u5B72\u5B74\u5B76\u5B77\u5B78\u5B79\u5B7B\u5B7C\u5B7E\u5B7F\u5B82\u5B86\u5B8A\u5B8D\u5B8E\u5B90\u5B91\u5B92\u5B94\u5B96\u5B9F\u5BA7\u5BA8\u5BA9\u5BAC\u5BAD\u5BAE\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBB\u5BBC\u5BC0\u5BC1\u5BC3\u5BC8\u5BC9\u5BCA\u5BCB\u5BCD\u5BCE\u5BCF\"],\n[\"8c80\",\"\u5BD1\u5BD4\",8,\"\u5BE0\u5BE2\u5BE3\u5BE6\u5BE7\u5BE9\",4,\"\u5BEF\u5BF1\",6,\"\u5BFD\u5BFE\u5C00\u5C02\u5C03\u5C05\u5C07\u5C08\u5C0B\u5C0C\u5C0D\u5C0E\u5C10\u5C12\u5C13\u5C17\u5C19\u5C1B\u5C1E\u5C1F\u5C20\u5C21\u5C23\u5C26\u5C28\u5C29\u5C2A\u5C2B\u5C2D\u5C2E\u5C2F\u5C30\u5C32\u5C33\u5C35\u5C36\u5C37\u5C43\u5C44\u5C46\u5C47\u5C4C\u5C4D\u5C52\u5C53\u5C54\u5C56\u5C57\u5C58\u5C5A\u5C5B\u5C5C\u5C5D\u5C5F\u5C62\u5C64\u5C67\",6,\"\u5C70\u5C72\",6,\"\u5C7B\u5C7C\u5C7D\u5C7E\u5C80\u5C83\",4,\"\u5C89\u5C8A\u5C8B\u5C8E\u5C8F\u5C92\u5C93\u5C95\u5C9D\",4,\"\u5CA4\",4],\n[\"8d40\",\"\u5CAA\u5CAE\u5CAF\u5CB0\u5CB2\u5CB4\u5CB6\u5CB9\u5CBA\u5CBB\u5CBC\u5CBE\u5CC0\u5CC2\u5CC3\u5CC5\",5,\"\u5CCC\",5,\"\u5CD3\",5,\"\u5CDA\",6,\"\u5CE2\u5CE3\u5CE7\u5CE9\u5CEB\u5CEC\u5CEE\u5CEF\u5CF1\",9,\"\u5CFC\",4],\n[\"8d80\",\"\u5D01\u5D04\u5D05\u5D08\",5,\"\u5D0F\",4,\"\u5D15\u5D17\u5D18\u5D19\u5D1A\u5D1C\u5D1D\u5D1F\",4,\"\u5D25\u5D28\u5D2A\u5D2B\u5D2C\u5D2F\",4,\"\u5D35\",7,\"\u5D3F\",7,\"\u5D48\u5D49\u5D4D\",10,\"\u5D59\u5D5A\u5D5C\u5D5E\",10,\"\u5D6A\u5D6D\u5D6E\u5D70\u5D71\u5D72\u5D73\u5D75\",12,\"\u5D83\",21,\"\u5D9A\u5D9B\u5D9C\u5D9E\u5D9F\u5DA0\"],\n[\"8e40\",\"\u5DA1\",21,\"\u5DB8\",12,\"\u5DC6\",6,\"\u5DCE\",12,\"\u5DDC\u5DDF\u5DE0\u5DE3\u5DE4\u5DEA\u5DEC\u5DED\"],\n[\"8e80\",\"\u5DF0\u5DF5\u5DF6\u5DF8\",4,\"\u5DFF\u5E00\u5E04\u5E07\u5E09\u5E0A\u5E0B\u5E0D\u5E0E\u5E12\u5E13\u5E17\u5E1E\",7,\"\u5E28\",4,\"\u5E2F\u5E30\u5E32\",4,\"\u5E39\u5E3A\u5E3E\u5E3F\u5E40\u5E41\u5E43\u5E46\",5,\"\u5E4D\",6,\"\u5E56\",4,\"\u5E5C\u5E5D\u5E5F\u5E60\u5E63\",14,\"\u5E75\u5E77\u5E79\u5E7E\u5E81\u5E82\u5E83\u5E85\u5E88\u5E89\u5E8C\u5E8D\u5E8E\u5E92\u5E98\u5E9B\u5E9D\u5EA1\u5EA2\u5EA3\u5EA4\u5EA8\",4,\"\u5EAE\",4,\"\u5EB4\u5EBA\u5EBB\u5EBC\u5EBD\u5EBF\",6],\n[\"8f40\",\"\u5EC6\u5EC7\u5EC8\u5ECB\",5,\"\u5ED4\u5ED5\u5ED7\u5ED8\u5ED9\u5EDA\u5EDC\",11,\"\u5EE9\u5EEB\",8,\"\u5EF5\u5EF8\u5EF9\u5EFB\u5EFC\u5EFD\u5F05\u5F06\u5F07\u5F09\u5F0C\u5F0D\u5F0E\u5F10\u5F12\u5F14\u5F16\u5F19\u5F1A\u5F1C\u5F1D\u5F1E\u5F21\u5F22\u5F23\u5F24\"],\n[\"8f80\",\"\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F32\",6,\"\u5F3B\u5F3D\u5F3E\u5F3F\u5F41\",14,\"\u5F51\u5F54\u5F59\u5F5A\u5F5B\u5F5C\u5F5E\u5F5F\u5F60\u5F63\u5F65\u5F67\u5F68\u5F6B\u5F6E\u5F6F\u5F72\u5F74\u5F75\u5F76\u5F78\u5F7A\u5F7D\u5F7E\u5F7F\u5F83\u5F86\u5F8D\u5F8E\u5F8F\u5F91\u5F93\u5F94\u5F96\u5F9A\u5F9B\u5F9D\u5F9E\u5F9F\u5FA0\u5FA2\",5,\"\u5FA9\u5FAB\u5FAC\u5FAF\",5,\"\u5FB6\u5FB8\u5FB9\u5FBA\u5FBB\u5FBE\",4,\"\u5FC7\u5FC8\u5FCA\u5FCB\u5FCE\u5FD3\u5FD4\u5FD5\u5FDA\u5FDB\u5FDC\u5FDE\u5FDF\u5FE2\u5FE3\u5FE5\u5FE6\u5FE8\u5FE9\u5FEC\u5FEF\u5FF0\u5FF2\u5FF3\u5FF4\u5FF6\u5FF7\u5FF9\u5FFA\u5FFC\u6007\"],\n[\"9040\",\"\u6008\u6009\u600B\u600C\u6010\u6011\u6013\u6017\u6018\u601A\u601E\u601F\u6022\u6023\u6024\u602C\u602D\u602E\u6030\",4,\"\u6036\",4,\"\u603D\u603E\u6040\u6044\",6,\"\u604C\u604E\u604F\u6051\u6053\u6054\u6056\u6057\u6058\u605B\u605C\u605E\u605F\u6060\u6061\u6065\u6066\u606E\u6071\u6072\u6074\u6075\u6077\u607E\u6080\"],\n[\"9080\",\"\u6081\u6082\u6085\u6086\u6087\u6088\u608A\u608B\u608E\u608F\u6090\u6091\u6093\u6095\u6097\u6098\u6099\u609C\u609E\u60A1\u60A2\u60A4\u60A5\u60A7\u60A9\u60AA\u60AE\u60B0\u60B3\u60B5\u60B6\u60B7\u60B9\u60BA\u60BD\",7,\"\u60C7\u60C8\u60C9\u60CC\",4,\"\u60D2\u60D3\u60D4\u60D6\u60D7\u60D9\u60DB\u60DE\u60E1\",4,\"\u60EA\u60F1\u60F2\u60F5\u60F7\u60F8\u60FB\",4,\"\u6102\u6103\u6104\u6105\u6107\u610A\u610B\u610C\u6110\",4,\"\u6116\u6117\u6118\u6119\u611B\u611C\u611D\u611E\u6121\u6122\u6125\u6128\u6129\u612A\u612C\",18,\"\u6140\",6],\n[\"9140\",\"\u6147\u6149\u614B\u614D\u614F\u6150\u6152\u6153\u6154\u6156\",6,\"\u615E\u615F\u6160\u6161\u6163\u6164\u6165\u6166\u6169\",6,\"\u6171\u6172\u6173\u6174\u6176\u6178\",18,\"\u618C\u618D\u618F\",4,\"\u6195\"],\n[\"9180\",\"\u6196\",6,\"\u619E\",8,\"\u61AA\u61AB\u61AD\",9,\"\u61B8\",5,\"\u61BF\u61C0\u61C1\u61C3\",4,\"\u61C9\u61CC\",4,\"\u61D3\u61D5\",16,\"\u61E7\",13,\"\u61F6\",8,\"\u6200\",5,\"\u6207\u6209\u6213\u6214\u6219\u621C\u621D\u621E\u6220\u6223\u6226\u6227\u6228\u6229\u622B\u622D\u622F\u6230\u6231\u6232\u6235\u6236\u6238\",4,\"\u6242\u6244\u6245\u6246\u624A\"],\n[\"9240\",\"\u624F\u6250\u6255\u6256\u6257\u6259\u625A\u625C\",6,\"\u6264\u6265\u6268\u6271\u6272\u6274\u6275\u6277\u6278\u627A\u627B\u627D\u6281\u6282\u6283\u6285\u6286\u6287\u6288\u628B\",5,\"\u6294\u6299\u629C\u629D\u629E\u62A3\u62A6\u62A7\u62A9\u62AA\u62AD\u62AE\u62AF\u62B0\u62B2\u62B3\u62B4\u62B6\u62B7\u62B8\u62BA\u62BE\u62C0\u62C1\"],\n[\"9280\",\"\u62C3\u62CB\u62CF\u62D1\u62D5\u62DD\u62DE\u62E0\u62E1\u62E4\u62EA\u62EB\u62F0\u62F2\u62F5\u62F8\u62F9\u62FA\u62FB\u6300\u6303\u6304\u6305\u6306\u630A\u630B\u630C\u630D\u630F\u6310\u6312\u6313\u6314\u6315\u6317\u6318\u6319\u631C\u6326\u6327\u6329\u632C\u632D\u632E\u6330\u6331\u6333\",5,\"\u633B\u633C\u633E\u633F\u6340\u6341\u6344\u6347\u6348\u634A\u6351\u6352\u6353\u6354\u6356\",7,\"\u6360\u6364\u6365\u6366\u6368\u636A\u636B\u636C\u636F\u6370\u6372\u6373\u6374\u6375\u6378\u6379\u637C\u637D\u637E\u637F\u6381\u6383\u6384\u6385\u6386\u638B\u638D\u6391\u6393\u6394\u6395\u6397\u6399\",6,\"\u63A1\u63A4\u63A6\u63AB\u63AF\u63B1\u63B2\u63B5\u63B6\u63B9\u63BB\u63BD\u63BF\u63C0\"],\n[\"9340\",\"\u63C1\u63C2\u63C3\u63C5\u63C7\u63C8\u63CA\u63CB\u63CC\u63D1\u63D3\u63D4\u63D5\u63D7\",6,\"\u63DF\u63E2\u63E4\",4,\"\u63EB\u63EC\u63EE\u63EF\u63F0\u63F1\u63F3\u63F5\u63F7\u63F9\u63FA\u63FB\u63FC\u63FE\u6403\u6404\u6406\",4,\"\u640D\u640E\u6411\u6412\u6415\",5,\"\u641D\u641F\u6422\u6423\u6424\"],\n[\"9380\",\"\u6425\u6427\u6428\u6429\u642B\u642E\",5,\"\u6435\",4,\"\u643B\u643C\u643E\u6440\u6442\u6443\u6449\u644B\",6,\"\u6453\u6455\u6456\u6457\u6459\",4,\"\u645F\",7,\"\u6468\u646A\u646B\u646C\u646E\",9,\"\u647B\",6,\"\u6483\u6486\u6488\",8,\"\u6493\u6494\u6497\u6498\u649A\u649B\u649C\u649D\u649F\",4,\"\u64A5\u64A6\u64A7\u64A8\u64AA\u64AB\u64AF\u64B1\u64B2\u64B3\u64B4\u64B6\u64B9\u64BB\u64BD\u64BE\u64BF\u64C1\u64C3\u64C4\u64C6\",6,\"\u64CF\u64D1\u64D3\u64D4\u64D5\u64D6\u64D9\u64DA\"],\n[\"9440\",\"\u64DB\u64DC\u64DD\u64DF\u64E0\u64E1\u64E3\u64E5\u64E7\",24,\"\u6501\",7,\"\u650A\",7,\"\u6513\",4,\"\u6519\",8],\n[\"9480\",\"\u6522\u6523\u6524\u6526\",4,\"\u652C\u652D\u6530\u6531\u6532\u6533\u6537\u653A\u653C\u653D\u6540\",4,\"\u6546\u6547\u654A\u654B\u654D\u654E\u6550\u6552\u6553\u6554\u6557\u6558\u655A\u655C\u655F\u6560\u6561\u6564\u6565\u6567\u6568\u6569\u656A\u656D\u656E\u656F\u6571\u6573\u6575\u6576\u6578\",14,\"\u6588\u6589\u658A\u658D\u658E\u658F\u6592\u6594\u6595\u6596\u6598\u659A\u659D\u659E\u65A0\u65A2\u65A3\u65A6\u65A8\u65AA\u65AC\u65AE\u65B1\",7,\"\u65BA\u65BB\u65BE\u65BF\u65C0\u65C2\u65C7\u65C8\u65C9\u65CA\u65CD\u65D0\u65D1\u65D3\u65D4\u65D5\u65D8\",7,\"\u65E1\u65E3\u65E4\u65EA\u65EB\"],\n[\"9540\",\"\u65F2\u65F3\u65F4\u65F5\u65F8\u65F9\u65FB\",4,\"\u6601\u6604\u6605\u6607\u6608\u6609\u660B\u660D\u6610\u6611\u6612\u6616\u6617\u6618\u661A\u661B\u661C\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6632\u6633\u6637\",4,\"\u663D\u663F\u6640\u6642\u6644\",6,\"\u664D\u664E\u6650\u6651\u6658\"],\n[\"9580\",\"\u6659\u665B\u665C\u665D\u665E\u6660\u6662\u6663\u6665\u6667\u6669\",4,\"\u6671\u6672\u6673\u6675\u6678\u6679\u667B\u667C\u667D\u667F\u6680\u6681\u6683\u6685\u6686\u6688\u6689\u668A\u668B\u668D\u668E\u668F\u6690\u6692\u6693\u6694\u6695\u6698\",4,\"\u669E\",8,\"\u66A9\",4,\"\u66AF\",4,\"\u66B5\u66B6\u66B7\u66B8\u66BA\u66BB\u66BC\u66BD\u66BF\",25,\"\u66DA\u66DE\",7,\"\u66E7\u66E8\u66EA\",5,\"\u66F1\u66F5\u66F6\u66F8\u66FA\u66FB\u66FD\u6701\u6702\u6703\"],\n[\"9640\",\"\u6704\u6705\u6706\u6707\u670C\u670E\u670F\u6711\u6712\u6713\u6716\u6718\u6719\u671A\u671C\u671E\u6720\",5,\"\u6727\u6729\u672E\u6730\u6732\u6733\u6736\u6737\u6738\u6739\u673B\u673C\u673E\u673F\u6741\u6744\u6745\u6747\u674A\u674B\u674D\u6752\u6754\u6755\u6757\",4,\"\u675D\u6762\u6763\u6764\u6766\u6767\u676B\u676C\u676E\u6771\u6774\u6776\"],\n[\"9680\",\"\u6778\u6779\u677A\u677B\u677D\u6780\u6782\u6783\u6785\u6786\u6788\u678A\u678C\u678D\u678E\u678F\u6791\u6792\u6793\u6794\u6796\u6799\u679B\u679F\u67A0\u67A1\u67A4\u67A6\u67A9\u67AC\u67AE\u67B1\u67B2\u67B4\u67B9\",7,\"\u67C2\u67C5\",9,\"\u67D5\u67D6\u67D7\u67DB\u67DF\u67E1\u67E3\u67E4\u67E6\u67E7\u67E8\u67EA\u67EB\u67ED\u67EE\u67F2\u67F5\",7,\"\u67FE\u6801\u6802\u6803\u6804\u6806\u680D\u6810\u6812\u6814\u6815\u6818\",4,\"\u681E\u681F\u6820\u6822\",6,\"\u682B\",6,\"\u6834\u6835\u6836\u683A\u683B\u683F\u6847\u684B\u684D\u684F\u6852\u6856\",5],\n[\"9740\",\"\u685C\u685D\u685E\u685F\u686A\u686C\",7,\"\u6875\u6878\",8,\"\u6882\u6884\u6887\",7,\"\u6890\u6891\u6892\u6894\u6895\u6896\u6898\",9,\"\u68A3\u68A4\u68A5\u68A9\u68AA\u68AB\u68AC\u68AE\u68B1\u68B2\u68B4\u68B6\u68B7\u68B8\"],\n[\"9780\",\"\u68B9\",6,\"\u68C1\u68C3\",5,\"\u68CA\u68CC\u68CE\u68CF\u68D0\u68D1\u68D3\u68D4\u68D6\u68D7\u68D9\u68DB\",4,\"\u68E1\u68E2\u68E4\",9,\"\u68EF\u68F2\u68F3\u68F4\u68F6\u68F7\u68F8\u68FB\u68FD\u68FE\u68FF\u6900\u6902\u6903\u6904\u6906\",4,\"\u690C\u690F\u6911\u6913\",11,\"\u6921\u6922\u6923\u6925\",7,\"\u692E\u692F\u6931\u6932\u6933\u6935\u6936\u6937\u6938\u693A\u693B\u693C\u693E\u6940\u6941\u6943\",16,\"\u6955\u6956\u6958\u6959\u695B\u695C\u695F\"],\n[\"9840\",\"\u6961\u6962\u6964\u6965\u6967\u6968\u6969\u696A\u696C\u696D\u696F\u6970\u6972\",4,\"\u697A\u697B\u697D\u697E\u697F\u6981\u6983\u6985\u698A\u698B\u698C\u698E\",5,\"\u6996\u6997\u6999\u699A\u699D\",9,\"\u69A9\u69AA\u69AC\u69AE\u69AF\u69B0\u69B2\u69B3\u69B5\u69B6\u69B8\u69B9\u69BA\u69BC\u69BD\"],\n[\"9880\",\"\u69BE\u69BF\u69C0\u69C2\",7,\"\u69CB\u69CD\u69CF\u69D1\u69D2\u69D3\u69D5\",5,\"\u69DC\u69DD\u69DE\u69E1\",11,\"\u69EE\u69EF\u69F0\u69F1\u69F3\",9,\"\u69FE\u6A00\",9,\"\u6A0B\",11,\"\u6A19\",5,\"\u6A20\u6A22\",5,\"\u6A29\u6A2B\u6A2C\u6A2D\u6A2E\u6A30\u6A32\u6A33\u6A34\u6A36\",6,\"\u6A3F\",4,\"\u6A45\u6A46\u6A48\",7,\"\u6A51\",6,\"\u6A5A\"],\n[\"9940\",\"\u6A5C\",4,\"\u6A62\u6A63\u6A64\u6A66\",10,\"\u6A72\",6,\"\u6A7A\u6A7B\u6A7D\u6A7E\u6A7F\u6A81\u6A82\u6A83\u6A85\",8,\"\u6A8F\u6A92\",4,\"\u6A98\",7,\"\u6AA1\",5],\n[\"9980\",\"\u6AA7\u6AA8\u6AAA\u6AAD\",114,\"\u6B25\u6B26\u6B28\",6],\n[\"9a40\",\"\u6B2F\u6B30\u6B31\u6B33\u6B34\u6B35\u6B36\u6B38\u6B3B\u6B3C\u6B3D\u6B3F\u6B40\u6B41\u6B42\u6B44\u6B45\u6B48\u6B4A\u6B4B\u6B4D\",11,\"\u6B5A\",7,\"\u6B68\u6B69\u6B6B\",13,\"\u6B7A\u6B7D\u6B7E\u6B7F\u6B80\u6B85\u6B88\"],\n[\"9a80\",\"\u6B8C\u6B8E\u6B8F\u6B90\u6B91\u6B94\u6B95\u6B97\u6B98\u6B99\u6B9C\",4,\"\u6BA2\",7,\"\u6BAB\",7,\"\u6BB6\u6BB8\",6,\"\u6BC0\u6BC3\u6BC4\u6BC6\",4,\"\u6BCC\u6BCE\u6BD0\u6BD1\u6BD8\u6BDA\u6BDC\",4,\"\u6BE2\",7,\"\u6BEC\u6BED\u6BEE\u6BF0\u6BF1\u6BF2\u6BF4\u6BF6\u6BF7\u6BF8\u6BFA\u6BFB\u6BFC\u6BFE\",6,\"\u6C08\",4,\"\u6C0E\u6C12\u6C17\u6C1C\u6C1D\u6C1E\u6C20\u6C23\u6C25\u6C2B\u6C2C\u6C2D\u6C31\u6C33\u6C36\u6C37\u6C39\u6C3A\u6C3B\u6C3C\u6C3E\u6C3F\u6C43\u6C44\u6C45\u6C48\u6C4B\",4,\"\u6C51\u6C52\u6C53\u6C56\u6C58\"],\n[\"9b40\",\"\u6C59\u6C5A\u6C62\u6C63\u6C65\u6C66\u6C67\u6C6B\",4,\"\u6C71\u6C73\u6C75\u6C77\u6C78\u6C7A\u6C7B\u6C7C\u6C7F\u6C80\u6C84\u6C87\u6C8A\u6C8B\u6C8D\u6C8E\u6C91\u6C92\u6C95\u6C96\u6C97\u6C98\u6C9A\u6C9C\u6C9D\u6C9E\u6CA0\u6CA2\u6CA8\u6CAC\u6CAF\u6CB0\u6CB4\u6CB5\u6CB6\u6CB7\u6CBA\u6CC0\u6CC1\u6CC2\u6CC3\u6CC6\u6CC7\u6CC8\u6CCB\u6CCD\u6CCE\u6CCF\u6CD1\u6CD2\u6CD8\"],\n[\"9b80\",\"\u6CD9\u6CDA\u6CDC\u6CDD\u6CDF\u6CE4\u6CE6\u6CE7\u6CE9\u6CEC\u6CED\u6CF2\u6CF4\u6CF9\u6CFF\u6D00\u6D02\u6D03\u6D05\u6D06\u6D08\u6D09\u6D0A\u6D0D\u6D0F\u6D10\u6D11\u6D13\u6D14\u6D15\u6D16\u6D18\u6D1C\u6D1D\u6D1F\",5,\"\u6D26\u6D28\u6D29\u6D2C\u6D2D\u6D2F\u6D30\u6D34\u6D36\u6D37\u6D38\u6D3A\u6D3F\u6D40\u6D42\u6D44\u6D49\u6D4C\u6D50\u6D55\u6D56\u6D57\u6D58\u6D5B\u6D5D\u6D5F\u6D61\u6D62\u6D64\u6D65\u6D67\u6D68\u6D6B\u6D6C\u6D6D\u6D70\u6D71\u6D72\u6D73\u6D75\u6D76\u6D79\u6D7A\u6D7B\u6D7D\",4,\"\u6D83\u6D84\u6D86\u6D87\u6D8A\u6D8B\u6D8D\u6D8F\u6D90\u6D92\u6D96\",4,\"\u6D9C\u6DA2\u6DA5\u6DAC\u6DAD\u6DB0\u6DB1\u6DB3\u6DB4\u6DB6\u6DB7\u6DB9\",5,\"\u6DC1\u6DC2\u6DC3\u6DC8\u6DC9\u6DCA\"],\n[\"9c40\",\"\u6DCD\u6DCE\u6DCF\u6DD0\u6DD2\u6DD3\u6DD4\u6DD5\u6DD7\u6DDA\u6DDB\u6DDC\u6DDF\u6DE2\u6DE3\u6DE5\u6DE7\u6DE8\u6DE9\u6DEA\u6DED\u6DEF\u6DF0\u6DF2\u6DF4\u6DF5\u6DF6\u6DF8\u6DFA\u6DFD\",7,\"\u6E06\u6E07\u6E08\u6E09\u6E0B\u6E0F\u6E12\u6E13\u6E15\u6E18\u6E19\u6E1B\u6E1C\u6E1E\u6E1F\u6E22\u6E26\u6E27\u6E28\u6E2A\u6E2C\u6E2E\u6E30\u6E31\u6E33\u6E35\"],\n[\"9c80\",\"\u6E36\u6E37\u6E39\u6E3B\",7,\"\u6E45\",7,\"\u6E4F\u6E50\u6E51\u6E52\u6E55\u6E57\u6E59\u6E5A\u6E5C\u6E5D\u6E5E\u6E60\",10,\"\u6E6C\u6E6D\u6E6F\",14,\"\u6E80\u6E81\u6E82\u6E84\u6E87\u6E88\u6E8A\",4,\"\u6E91\",6,\"\u6E99\u6E9A\u6E9B\u6E9D\u6E9E\u6EA0\u6EA1\u6EA3\u6EA4\u6EA6\u6EA8\u6EA9\u6EAB\u6EAC\u6EAD\u6EAE\u6EB0\u6EB3\u6EB5\u6EB8\u6EB9\u6EBC\u6EBE\u6EBF\u6EC0\u6EC3\u6EC4\u6EC5\u6EC6\u6EC8\u6EC9\u6ECA\u6ECC\u6ECD\u6ECE\u6ED0\u6ED2\u6ED6\u6ED8\u6ED9\u6EDB\u6EDC\u6EDD\u6EE3\u6EE7\u6EEA\",5],\n[\"9d40\",\"\u6EF0\u6EF1\u6EF2\u6EF3\u6EF5\u6EF6\u6EF7\u6EF8\u6EFA\",7,\"\u6F03\u6F04\u6F05\u6F07\u6F08\u6F0A\",4,\"\u6F10\u6F11\u6F12\u6F16\",9,\"\u6F21\u6F22\u6F23\u6F25\u6F26\u6F27\u6F28\u6F2C\u6F2E\u6F30\u6F32\u6F34\u6F35\u6F37\",6,\"\u6F3F\u6F40\u6F41\u6F42\"],\n[\"9d80\",\"\u6F43\u6F44\u6F45\u6F48\u6F49\u6F4A\u6F4C\u6F4E\",9,\"\u6F59\u6F5A\u6F5B\u6F5D\u6F5F\u6F60\u6F61\u6F63\u6F64\u6F65\u6F67\",5,\"\u6F6F\u6F70\u6F71\u6F73\u6F75\u6F76\u6F77\u6F79\u6F7B\u6F7D\",6,\"\u6F85\u6F86\u6F87\u6F8A\u6F8B\u6F8F\",12,\"\u6F9D\u6F9E\u6F9F\u6FA0\u6FA2\",4,\"\u6FA8\",10,\"\u6FB4\u6FB5\u6FB7\u6FB8\u6FBA\",5,\"\u6FC1\u6FC3\",5,\"\u6FCA\",6,\"\u6FD3\",10,\"\u6FDF\u6FE2\u6FE3\u6FE4\u6FE5\"],\n[\"9e40\",\"\u6FE6\",7,\"\u6FF0\",32,\"\u7012\",7,\"\u701C\",6,\"\u7024\",6],\n[\"9e80\",\"\u702B\",9,\"\u7036\u7037\u7038\u703A\",17,\"\u704D\u704E\u7050\",13,\"\u705F\",11,\"\u706E\u7071\u7072\u7073\u7074\u7077\u7079\u707A\u707B\u707D\u7081\u7082\u7083\u7084\u7086\u7087\u7088\u708B\u708C\u708D\u708F\u7090\u7091\u7093\u7097\u7098\u709A\u709B\u709E\",12,\"\u70B0\u70B2\u70B4\u70B5\u70B6\u70BA\u70BE\u70BF\u70C4\u70C5\u70C6\u70C7\u70C9\u70CB\",12,\"\u70DA\"],\n[\"9f40\",\"\u70DC\u70DD\u70DE\u70E0\u70E1\u70E2\u70E3\u70E5\u70EA\u70EE\u70F0\",6,\"\u70F8\u70FA\u70FB\u70FC\u70FE\",10,\"\u710B\",4,\"\u7111\u7112\u7114\u7117\u711B\",10,\"\u7127\",7,\"\u7132\u7133\u7134\"],\n[\"9f80\",\"\u7135\u7137\",13,\"\u7146\u7147\u7148\u7149\u714B\u714D\u714F\",12,\"\u715D\u715F\",4,\"\u7165\u7169\",4,\"\u716F\u7170\u7171\u7174\u7175\u7176\u7177\u7179\u717B\u717C\u717E\",5,\"\u7185\",4,\"\u718B\u718C\u718D\u718E\u7190\u7191\u7192\u7193\u7195\u7196\u7197\u719A\",4,\"\u71A1\",6,\"\u71A9\u71AA\u71AB\u71AD\",5,\"\u71B4\u71B6\u71B7\u71B8\u71BA\",8,\"\u71C4\",9,\"\u71CF\",4],\n[\"a040\",\"\u71D6\",9,\"\u71E1\u71E2\u71E3\u71E4\u71E6\u71E8\",5,\"\u71EF\",9,\"\u71FA\",11,\"\u7207\",19],\n[\"a080\",\"\u721B\u721C\u721E\",9,\"\u7229\u722B\u722D\u722E\u722F\u7232\u7233\u7234\u723A\u723C\u723E\u7240\",6,\"\u7249\u724A\u724B\u724E\u724F\u7250\u7251\u7253\u7254\u7255\u7257\u7258\u725A\u725C\u725E\u7260\u7263\u7264\u7265\u7268\u726A\u726B\u726C\u726D\u7270\u7271\u7273\u7274\u7276\u7277\u7278\u727B\u727C\u727D\u7282\u7283\u7285\",4,\"\u728C\u728E\u7290\u7291\u7293\",11,\"\u72A0\",11,\"\u72AE\u72B1\u72B2\u72B3\u72B5\u72BA\",6,\"\u72C5\u72C6\u72C7\u72C9\u72CA\u72CB\u72CC\u72CF\u72D1\u72D3\u72D4\u72D5\u72D6\u72D8\u72DA\u72DB\"],\n[\"a1a1\",\"\u3000\u3001\u3002\u00B7\u02C9\u02C7\u00A8\u3003\u3005\u2014\uFF5E\u2016\u2026\u2018\u2019\u201C\u201D\u3014\u3015\u3008\",7,\"\u3016\u3017\u3010\u3011\u00B1\u00D7\u00F7\u2236\u2227\u2228\u2211\u220F\u222A\u2229\u2208\u2237\u221A\u22A5\u2225\u2220\u2312\u2299\u222B\u222E\u2261\u224C\u2248\u223D\u221D\u2260\u226E\u226F\u2264\u2265\u221E\u2235\u2234\u2642\u2640\u00B0\u2032\u2033\u2103\uFF04\u00A4\uFFE0\uFFE1\u2030\u00A7\u2116\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u203B\u2192\u2190\u2191\u2193\u3013\"],\n[\"a2a1\",\"\u2170\",9],\n[\"a2b1\",\"\u2488\",19,\"\u2474\",19,\"\u2460\",9],\n[\"a2e5\",\"\u3220\",9],\n[\"a2f1\",\"\u2160\",11],\n[\"a3a1\",\"\uFF01\uFF02\uFF03\uFFE5\uFF05\",88,\"\uFFE3\"],\n[\"a4a1\",\"\u3041\",82],\n[\"a5a1\",\"\u30A1\",85],\n[\"a6a1\",\"\u0391\",16,\"\u03A3\",6],\n[\"a6c1\",\"\u03B1\",16,\"\u03C3\",6],\n[\"a6e0\",\"\uFE35\uFE36\uFE39\uFE3A\uFE3F\uFE40\uFE3D\uFE3E\uFE41\uFE42\uFE43\uFE44\"],\n[\"a6ee\",\"\uFE3B\uFE3C\uFE37\uFE38\uFE31\"],\n[\"a6f4\",\"\uFE33\uFE34\"],\n[\"a7a1\",\"\u0410\",5,\"\u0401\u0416\",25],\n[\"a7d1\",\"\u0430\",5,\"\u0451\u0436\",25],\n[\"a840\",\"\u02CA\u02CB\u02D9\u2013\u2015\u2025\u2035\u2105\u2109\u2196\u2197\u2198\u2199\u2215\u221F\u2223\u2252\u2266\u2267\u22BF\u2550\",35,\"\u2581\",6],\n[\"a880\",\"\u2588\",7,\"\u2593\u2594\u2595\u25BC\u25BD\u25E2\u25E3\u25E4\u25E5\u2609\u2295\u3012\u301D\u301E\"],\n[\"a8a1\",\"\u0101\u00E1\u01CE\u00E0\u0113\u00E9\u011B\u00E8\u012B\u00ED\u01D0\u00EC\u014D\u00F3\u01D2\u00F2\u016B\u00FA\u01D4\u00F9\u01D6\u01D8\u01DA\u01DC\u00FC\u00EA\u0251\"],\n[\"a8bd\",\"\u0144\u0148\"],\n[\"a8c0\",\"\u0261\"],\n[\"a8c5\",\"\u3105\",36],\n[\"a940\",\"\u3021\",8,\"\u32A3\u338E\u338F\u339C\u339D\u339E\u33A1\u33C4\u33CE\u33D1\u33D2\u33D5\uFE30\uFFE2\uFFE4\"],\n[\"a959\",\"\u2121\u3231\"],\n[\"a95c\",\"\u2010\"],\n[\"a960\",\"\u30FC\u309B\u309C\u30FD\u30FE\u3006\u309D\u309E\uFE49\",9,\"\uFE54\uFE55\uFE56\uFE57\uFE59\",8],\n[\"a980\",\"\uFE62\",4,\"\uFE68\uFE69\uFE6A\uFE6B\"],\n[\"a996\",\"\u3007\"],\n[\"a9a4\",\"\u2500\",75],\n[\"aa40\",\"\u72DC\u72DD\u72DF\u72E2\",5,\"\u72EA\u72EB\u72F5\u72F6\u72F9\u72FD\u72FE\u72FF\u7300\u7302\u7304\",5,\"\u730B\u730C\u730D\u730F\u7310\u7311\u7312\u7314\u7318\u7319\u731A\u731F\u7320\u7323\u7324\u7326\u7327\u7328\u732D\u732F\u7330\u7332\u7333\u7335\u7336\u733A\u733B\u733C\u733D\u7340\",8],\n[\"aa80\",\"\u7349\u734A\u734B\u734C\u734E\u734F\u7351\u7353\u7354\u7355\u7356\u7358\",7,\"\u7361\",10,\"\u736E\u7370\u7371\"],\n[\"ab40\",\"\u7372\",11,\"\u737F\",4,\"\u7385\u7386\u7388\u738A\u738C\u738D\u738F\u7390\u7392\u7393\u7394\u7395\u7397\u7398\u7399\u739A\u739C\u739D\u739E\u73A0\u73A1\u73A3\",5,\"\u73AA\u73AC\u73AD\u73B1\u73B4\u73B5\u73B6\u73B8\u73B9\u73BC\u73BD\u73BE\u73BF\u73C1\u73C3\",4],\n[\"ab80\",\"\u73CB\u73CC\u73CE\u73D2\",6,\"\u73DA\u73DB\u73DC\u73DD\u73DF\u73E1\u73E2\u73E3\u73E4\u73E6\u73E8\u73EA\u73EB\u73EC\u73EE\u73EF\u73F0\u73F1\u73F3\",4],\n[\"ac40\",\"\u73F8\",10,\"\u7404\u7407\u7408\u740B\u740C\u740D\u740E\u7411\",8,\"\u741C\",5,\"\u7423\u7424\u7427\u7429\u742B\u742D\u742F\u7431\u7432\u7437\",4,\"\u743D\u743E\u743F\u7440\u7442\",11],\n[\"ac80\",\"\u744E\",6,\"\u7456\u7458\u745D\u7460\",12,\"\u746E\u746F\u7471\",4,\"\u7478\u7479\u747A\"],\n[\"ad40\",\"\u747B\u747C\u747D\u747F\u7482\u7484\u7485\u7486\u7488\u7489\u748A\u748C\u748D\u748F\u7491\",10,\"\u749D\u749F\",7,\"\u74AA\",15,\"\u74BB\",12],\n[\"ad80\",\"\u74C8\",9,\"\u74D3\",8,\"\u74DD\u74DF\u74E1\u74E5\u74E7\",6,\"\u74F0\u74F1\u74F2\"],\n[\"ae40\",\"\u74F3\u74F5\u74F8\",6,\"\u7500\u7501\u7502\u7503\u7505\",7,\"\u750E\u7510\u7512\u7514\u7515\u7516\u7517\u751B\u751D\u751E\u7520\",4,\"\u7526\u7527\u752A\u752E\u7534\u7536\u7539\u753C\u753D\u753F\u7541\u7542\u7543\u7544\u7546\u7547\u7549\u754A\u754D\u7550\u7551\u7552\u7553\u7555\u7556\u7557\u7558\"],\n[\"ae80\",\"\u755D\",7,\"\u7567\u7568\u7569\u756B\",6,\"\u7573\u7575\u7576\u7577\u757A\",4,\"\u7580\u7581\u7582\u7584\u7585\u7587\"],\n[\"af40\",\"\u7588\u7589\u758A\u758C\u758D\u758E\u7590\u7593\u7595\u7598\u759B\u759C\u759E\u75A2\u75A6\",4,\"\u75AD\u75B6\u75B7\u75BA\u75BB\u75BF\u75C0\u75C1\u75C6\u75CB\u75CC\u75CE\u75CF\u75D0\u75D1\u75D3\u75D7\u75D9\u75DA\u75DC\u75DD\u75DF\u75E0\u75E1\u75E5\u75E9\u75EC\u75ED\u75EE\u75EF\u75F2\u75F3\u75F5\u75F6\u75F7\u75F8\u75FA\u75FB\u75FD\u75FE\u7602\u7604\u7606\u7607\"],\n[\"af80\",\"\u7608\u7609\u760B\u760D\u760E\u760F\u7611\u7612\u7613\u7614\u7616\u761A\u761C\u761D\u761E\u7621\u7623\u7627\u7628\u762C\u762E\u762F\u7631\u7632\u7636\u7637\u7639\u763A\u763B\u763D\u7641\u7642\u7644\"],\n[\"b040\",\"\u7645\",6,\"\u764E\",5,\"\u7655\u7657\",4,\"\u765D\u765F\u7660\u7661\u7662\u7664\",6,\"\u766C\u766D\u766E\u7670\",7,\"\u7679\u767A\u767C\u767F\u7680\u7681\u7683\u7685\u7689\u768A\u768C\u768D\u768F\u7690\u7692\u7694\u7695\u7697\u7698\u769A\u769B\"],\n[\"b080\",\"\u769C\",7,\"\u76A5\",8,\"\u76AF\u76B0\u76B3\u76B5\",9,\"\u76C0\u76C1\u76C3\u554A\u963F\u57C3\u6328\u54CE\u5509\u54C0\u7691\u764C\u853C\u77EE\u827E\u788D\u7231\u9698\u978D\u6C28\u5B89\u4FFA\u6309\u6697\u5CB8\u80FA\u6848\u80AE\u6602\u76CE\u51F9\u6556\u71AC\u7FF1\u8884\u50B2\u5965\u61CA\u6FB3\u82AD\u634C\u6252\u53ED\u5427\u7B06\u516B\u75A4\u5DF4\u62D4\u8DCB\u9776\u628A\u8019\u575D\u9738\u7F62\u7238\u767D\u67CF\u767E\u6446\u4F70\u8D25\u62DC\u7A17\u6591\u73ED\u642C\u6273\u822C\u9881\u677F\u7248\u626E\u62CC\u4F34\u74E3\u534A\u529E\u7ECA\u90A6\u5E2E\u6886\u699C\u8180\u7ED1\u68D2\u78C5\u868C\u9551\u508D\u8C24\u82DE\u80DE\u5305\u8912\u5265\"],\n[\"b140\",\"\u76C4\u76C7\u76C9\u76CB\u76CC\u76D3\u76D5\u76D9\u76DA\u76DC\u76DD\u76DE\u76E0\",4,\"\u76E6\",7,\"\u76F0\u76F3\u76F5\u76F6\u76F7\u76FA\u76FB\u76FD\u76FF\u7700\u7702\u7703\u7705\u7706\u770A\u770C\u770E\",10,\"\u771B\u771C\u771D\u771E\u7721\u7723\u7724\u7725\u7727\u772A\u772B\"],\n[\"b180\",\"\u772C\u772E\u7730\",4,\"\u7739\u773B\u773D\u773E\u773F\u7742\u7744\u7745\u7746\u7748\",7,\"\u7752\",7,\"\u775C\u8584\u96F9\u4FDD\u5821\u9971\u5B9D\u62B1\u62A5\u66B4\u8C79\u9C8D\u7206\u676F\u7891\u60B2\u5351\u5317\u8F88\u80CC\u8D1D\u94A1\u500D\u72C8\u5907\u60EB\u7119\u88AB\u5954\u82EF\u672C\u7B28\u5D29\u7EF7\u752D\u6CF5\u8E66\u8FF8\u903C\u9F3B\u6BD4\u9119\u7B14\u5F7C\u78A7\u84D6\u853D\u6BD5\u6BD9\u6BD6\u5E01\u5E87\u75F9\u95ED\u655D\u5F0A\u5FC5\u8F9F\u58C1\u81C2\u907F\u965B\u97AD\u8FB9\u7F16\u8D2C\u6241\u4FBF\u53D8\u535E\u8FA8\u8FA9\u8FAB\u904D\u6807\u5F6A\u8198\u8868\u9CD6\u618B\u522B\u762A\u5F6C\u658C\u6FD2\u6EE8\u5BBE\u6448\u5175\u51B0\u67C4\u4E19\u79C9\u997C\u70B3\"],\n[\"b240\",\"\u775D\u775E\u775F\u7760\u7764\u7767\u7769\u776A\u776D\",11,\"\u777A\u777B\u777C\u7781\u7782\u7783\u7786\",5,\"\u778F\u7790\u7793\",11,\"\u77A1\u77A3\u77A4\u77A6\u77A8\u77AB\u77AD\u77AE\u77AF\u77B1\u77B2\u77B4\u77B6\",4],\n[\"b280\",\"\u77BC\u77BE\u77C0\",12,\"\u77CE\",8,\"\u77D8\u77D9\u77DA\u77DD\",4,\"\u77E4\u75C5\u5E76\u73BB\u83E0\u64AD\u62E8\u94B5\u6CE2\u535A\u52C3\u640F\u94C2\u7B94\u4F2F\u5E1B\u8236\u8116\u818A\u6E24\u6CCA\u9A73\u6355\u535C\u54FA\u8865\u57E0\u4E0D\u5E03\u6B65\u7C3F\u90E8\u6016\u64E6\u731C\u88C1\u6750\u624D\u8D22\u776C\u8E29\u91C7\u5F69\u83DC\u8521\u9910\u53C2\u8695\u6B8B\u60ED\u60E8\u707F\u82CD\u8231\u4ED3\u6CA7\u85CF\u64CD\u7CD9\u69FD\u66F9\u8349\u5395\u7B56\u4FA7\u518C\u6D4B\u5C42\u8E6D\u63D2\u53C9\u832C\u8336\u67E5\u78B4\u643D\u5BDF\u5C94\u5DEE\u8BE7\u62C6\u67F4\u8C7A\u6400\u63BA\u8749\u998B\u8C17\u7F20\u94F2\u4EA7\u9610\u98A4\u660C\u7316\"],\n[\"b340\",\"\u77E6\u77E8\u77EA\u77EF\u77F0\u77F1\u77F2\u77F4\u77F5\u77F7\u77F9\u77FA\u77FB\u77FC\u7803\",5,\"\u780A\u780B\u780E\u780F\u7810\u7813\u7815\u7819\u781B\u781E\u7820\u7821\u7822\u7824\u7828\u782A\u782B\u782E\u782F\u7831\u7832\u7833\u7835\u7836\u783D\u783F\u7841\u7842\u7843\u7844\u7846\u7848\u7849\u784A\u784B\u784D\u784F\u7851\u7853\u7854\u7858\u7859\u785A\"],\n[\"b380\",\"\u785B\u785C\u785E\",11,\"\u786F\",7,\"\u7878\u7879\u787A\u787B\u787D\",6,\"\u573A\u5C1D\u5E38\u957F\u507F\u80A0\u5382\u655E\u7545\u5531\u5021\u8D85\u6284\u949E\u671D\u5632\u6F6E\u5DE2\u5435\u7092\u8F66\u626F\u64A4\u63A3\u5F7B\u6F88\u90F4\u81E3\u8FB0\u5C18\u6668\u5FF1\u6C89\u9648\u8D81\u886C\u6491\u79F0\u57CE\u6A59\u6210\u5448\u4E58\u7A0B\u60E9\u6F84\u8BDA\u627F\u901E\u9A8B\u79E4\u5403\u75F4\u6301\u5319\u6C60\u8FDF\u5F1B\u9A70\u803B\u9F7F\u4F88\u5C3A\u8D64\u7FC5\u65A5\u70BD\u5145\u51B2\u866B\u5D07\u5BA0\u62BD\u916C\u7574\u8E0C\u7A20\u6101\u7B79\u4EC7\u7EF8\u7785\u4E11\u81ED\u521D\u51FA\u6A71\u53A8\u8E87\u9504\u96CF\u6EC1\u9664\u695A\"],\n[\"b440\",\"\u7884\u7885\u7886\u7888\u788A\u788B\u788F\u7890\u7892\u7894\u7895\u7896\u7899\u789D\u789E\u78A0\u78A2\u78A4\u78A6\u78A8\",7,\"\u78B5\u78B6\u78B7\u78B8\u78BA\u78BB\u78BC\u78BD\u78BF\u78C0\u78C2\u78C3\u78C4\u78C6\u78C7\u78C8\u78CC\u78CD\u78CE\u78CF\u78D1\u78D2\u78D3\u78D6\u78D7\u78D8\u78DA\",9],\n[\"b480\",\"\u78E4\u78E5\u78E6\u78E7\u78E9\u78EA\u78EB\u78ED\",4,\"\u78F3\u78F5\u78F6\u78F8\u78F9\u78FB\",5,\"\u7902\u7903\u7904\u7906\",6,\"\u7840\u50A8\u77D7\u6410\u89E6\u5904\u63E3\u5DDD\u7A7F\u693D\u4F20\u8239\u5598\u4E32\u75AE\u7A97\u5E62\u5E8A\u95EF\u521B\u5439\u708A\u6376\u9524\u5782\u6625\u693F\u9187\u5507\u6DF3\u7EAF\u8822\u6233\u7EF0\u75B5\u8328\u78C1\u96CC\u8F9E\u6148\u74F7\u8BCD\u6B64\u523A\u8D50\u6B21\u806A\u8471\u56F1\u5306\u4ECE\u4E1B\u51D1\u7C97\u918B\u7C07\u4FC3\u8E7F\u7BE1\u7A9C\u6467\u5D14\u50AC\u8106\u7601\u7CB9\u6DEC\u7FE0\u6751\u5B58\u5BF8\u78CB\u64AE\u6413\u63AA\u632B\u9519\u642D\u8FBE\u7B54\u7629\u6253\u5927\u5446\u6B79\u50A3\u6234\u5E26\u6B86\u4EE3\u8D37\u888B\u5F85\u902E\"],\n[\"b540\",\"\u790D\",5,\"\u7914\",9,\"\u791F\",4,\"\u7925\",14,\"\u7935\",4,\"\u793D\u793F\u7942\u7943\u7944\u7945\u7947\u794A\",8,\"\u7954\u7955\u7958\u7959\u7961\u7963\"],\n[\"b580\",\"\u7964\u7966\u7969\u796A\u796B\u796C\u796E\u7970\",6,\"\u7979\u797B\",4,\"\u7982\u7983\u7986\u7987\u7988\u7989\u798B\u798C\u798D\u798E\u7990\u7991\u7992\u6020\u803D\u62C5\u4E39\u5355\u90F8\u63B8\u80C6\u65E6\u6C2E\u4F46\u60EE\u6DE1\u8BDE\u5F39\u86CB\u5F53\u6321\u515A\u8361\u6863\u5200\u6363\u8E48\u5012\u5C9B\u7977\u5BFC\u5230\u7A3B\u60BC\u9053\u76D7\u5FB7\u5F97\u7684\u8E6C\u706F\u767B\u7B49\u77AA\u51F3\u9093\u5824\u4F4E\u6EF4\u8FEA\u654C\u7B1B\u72C4\u6DA4\u7FDF\u5AE1\u62B5\u5E95\u5730\u8482\u7B2C\u5E1D\u5F1F\u9012\u7F14\u98A0\u6382\u6EC7\u7898\u70B9\u5178\u975B\u57AB\u7535\u4F43\u7538\u5E97\u60E6\u5960\u6DC0\u6BBF\u7889\u53FC\u96D5\u51CB\u5201\u6389\u540A\u9493\u8C03\u8DCC\u7239\u789F\u8776\u8FED\u8C0D\u53E0\"],\n[\"b640\",\"\u7993\",6,\"\u799B\",11,\"\u79A8\",10,\"\u79B4\",4,\"\u79BC\u79BF\u79C2\u79C4\u79C5\u79C7\u79C8\u79CA\u79CC\u79CE\u79CF\u79D0\u79D3\u79D4\u79D6\u79D7\u79D9\",5,\"\u79E0\u79E1\u79E2\u79E5\u79E8\u79EA\"],\n[\"b680\",\"\u79EC\u79EE\u79F1\",6,\"\u79F9\u79FA\u79FC\u79FE\u79FF\u7A01\u7A04\u7A05\u7A07\u7A08\u7A09\u7A0A\u7A0C\u7A0F\",4,\"\u7A15\u7A16\u7A18\u7A19\u7A1B\u7A1C\u4E01\u76EF\u53EE\u9489\u9876\u9F0E\u952D\u5B9A\u8BA2\u4E22\u4E1C\u51AC\u8463\u61C2\u52A8\u680B\u4F97\u606B\u51BB\u6D1E\u515C\u6296\u6597\u9661\u8C46\u9017\u75D8\u90FD\u7763\u6BD2\u728A\u72EC\u8BFB\u5835\u7779\u8D4C\u675C\u9540\u809A\u5EA6\u6E21\u5992\u7AEF\u77ED\u953B\u6BB5\u65AD\u7F0E\u5806\u5151\u961F\u5BF9\u58A9\u5428\u8E72\u6566\u987F\u56E4\u949D\u76FE\u9041\u6387\u54C6\u591A\u593A\u579B\u8EB2\u6735\u8DFA\u8235\u5241\u60F0\u5815\u86FE\u5CE8\u9E45\u4FC4\u989D\u8BB9\u5A25\u6076\u5384\u627C\u904F\u9102\u997F\u6069\u800C\u513F\u8033\u5C14\u9975\u6D31\u4E8C\"],\n[\"b740\",\"\u7A1D\u7A1F\u7A21\u7A22\u7A24\",14,\"\u7A34\u7A35\u7A36\u7A38\u7A3A\u7A3E\u7A40\",5,\"\u7A47\",9,\"\u7A52\",4,\"\u7A58\",16],\n[\"b780\",\"\u7A69\",6,\"\u7A71\u7A72\u7A73\u7A75\u7A7B\u7A7C\u7A7D\u7A7E\u7A82\u7A85\u7A87\u7A89\u7A8A\u7A8B\u7A8C\u7A8E\u7A8F\u7A90\u7A93\u7A94\u7A99\u7A9A\u7A9B\u7A9E\u7AA1\u7AA2\u8D30\u53D1\u7F5A\u7B4F\u4F10\u4E4F\u9600\u6CD5\u73D0\u85E9\u5E06\u756A\u7FFB\u6A0A\u77FE\u9492\u7E41\u51E1\u70E6\u53CD\u8FD4\u8303\u8D29\u72AF\u996D\u6CDB\u574A\u82B3\u65B9\u80AA\u623F\u9632\u59A8\u4EFF\u8BBF\u7EBA\u653E\u83F2\u975E\u5561\u98DE\u80A5\u532A\u8BFD\u5420\u80BA\u5E9F\u6CB8\u8D39\u82AC\u915A\u5429\u6C1B\u5206\u7EB7\u575F\u711A\u6C7E\u7C89\u594B\u4EFD\u5FFF\u6124\u7CAA\u4E30\u5C01\u67AB\u8702\u5CF0\u950B\u98CE\u75AF\u70FD\u9022\u51AF\u7F1D\u8BBD\u5949\u51E4\u4F5B\u5426\u592B\u6577\u80A4\u5B75\u6276\u62C2\u8F90\u5E45\u6C1F\u7B26\u4F0F\u4FD8\u670D\"],\n[\"b840\",\"\u7AA3\u7AA4\u7AA7\u7AA9\u7AAA\u7AAB\u7AAE\",4,\"\u7AB4\",10,\"\u7AC0\",10,\"\u7ACC\",9,\"\u7AD7\u7AD8\u7ADA\u7ADB\u7ADC\u7ADD\u7AE1\u7AE2\u7AE4\u7AE7\",5,\"\u7AEE\u7AF0\u7AF1\u7AF2\u7AF3\"],\n[\"b880\",\"\u7AF4\",4,\"\u7AFB\u7AFC\u7AFE\u7B00\u7B01\u7B02\u7B05\u7B07\u7B09\u7B0C\u7B0D\u7B0E\u7B10\u7B12\u7B13\u7B16\u7B17\u7B18\u7B1A\u7B1C\u7B1D\u7B1F\u7B21\u7B22\u7B23\u7B27\u7B29\u7B2D\u6D6E\u6DAA\u798F\u88B1\u5F17\u752B\u629A\u8F85\u4FEF\u91DC\u65A7\u812F\u8151\u5E9C\u8150\u8D74\u526F\u8986\u8D4B\u590D\u5085\u4ED8\u961C\u7236\u8179\u8D1F\u5BCC\u8BA3\u9644\u5987\u7F1A\u5490\u5676\u560E\u8BE5\u6539\u6982\u9499\u76D6\u6E89\u5E72\u7518\u6746\u67D1\u7AFF\u809D\u8D76\u611F\u79C6\u6562\u8D63\u5188\u521A\u94A2\u7F38\u809B\u7EB2\u5C97\u6E2F\u6760\u7BD9\u768B\u9AD8\u818F\u7F94\u7CD5\u641E\u9550\u7A3F\u544A\u54E5\u6B4C\u6401\u6208\u9E3D\u80F3\u7599\u5272\u9769\u845B\u683C\u86E4\u9601\u9694\u94EC\u4E2A\u5404\u7ED9\u6839\u8DDF\u8015\u66F4\u5E9A\u7FB9\"],\n[\"b940\",\"\u7B2F\u7B30\u7B32\u7B34\u7B35\u7B36\u7B37\u7B39\u7B3B\u7B3D\u7B3F\",5,\"\u7B46\u7B48\u7B4A\u7B4D\u7B4E\u7B53\u7B55\u7B57\u7B59\u7B5C\u7B5E\u7B5F\u7B61\u7B63\",10,\"\u7B6F\u7B70\u7B73\u7B74\u7B76\u7B78\u7B7A\u7B7C\u7B7D\u7B7F\u7B81\u7B82\u7B83\u7B84\u7B86\",6,\"\u7B8E\u7B8F\"],\n[\"b980\",\"\u7B91\u7B92\u7B93\u7B96\u7B98\u7B99\u7B9A\u7B9B\u7B9E\u7B9F\u7BA0\u7BA3\u7BA4\u7BA5\u7BAE\u7BAF\u7BB0\u7BB2\u7BB3\u7BB5\u7BB6\u7BB7\u7BB9\",7,\"\u7BC2\u7BC3\u7BC4\u57C2\u803F\u6897\u5DE5\u653B\u529F\u606D\u9F9A\u4F9B\u8EAC\u516C\u5BAB\u5F13\u5DE9\u6C5E\u62F1\u8D21\u5171\u94A9\u52FE\u6C9F\u82DF\u72D7\u57A2\u6784\u8D2D\u591F\u8F9C\u83C7\u5495\u7B8D\u4F30\u6CBD\u5B64\u59D1\u9F13\u53E4\u86CA\u9AA8\u8C37\u80A1\u6545\u987E\u56FA\u96C7\u522E\u74DC\u5250\u5BE1\u6302\u8902\u4E56\u62D0\u602A\u68FA\u5173\u5B98\u51A0\u89C2\u7BA1\u9986\u7F50\u60EF\u704C\u8D2F\u5149\u5E7F\u901B\u7470\u89C4\u572D\u7845\u5F52\u9F9F\u95FA\u8F68\u9B3C\u8BE1\u7678\u6842\u67DC\u8DEA\u8D35\u523D\u8F8A\u6EDA\u68CD\u9505\u90ED\u56FD\u679C\u88F9\u8FC7\u54C8\"],\n[\"ba40\",\"\u7BC5\u7BC8\u7BC9\u7BCA\u7BCB\u7BCD\u7BCE\u7BCF\u7BD0\u7BD2\u7BD4\",4,\"\u7BDB\u7BDC\u7BDE\u7BDF\u7BE0\u7BE2\u7BE3\u7BE4\u7BE7\u7BE8\u7BE9\u7BEB\u7BEC\u7BED\u7BEF\u7BF0\u7BF2\",4,\"\u7BF8\u7BF9\u7BFA\u7BFB\u7BFD\u7BFF\",7,\"\u7C08\u7C09\u7C0A\u7C0D\u7C0E\u7C10\",5,\"\u7C17\u7C18\u7C19\"],\n[\"ba80\",\"\u7C1A\",4,\"\u7C20\",5,\"\u7C28\u7C29\u7C2B\",12,\"\u7C39\",5,\"\u7C42\u9AB8\u5B69\u6D77\u6C26\u4EA5\u5BB3\u9A87\u9163\u61A8\u90AF\u97E9\u542B\u6DB5\u5BD2\u51FD\u558A\u7F55\u7FF0\u64BC\u634D\u65F1\u61BE\u608D\u710A\u6C57\u6C49\u592F\u676D\u822A\u58D5\u568E\u8C6A\u6BEB\u90DD\u597D\u8017\u53F7\u6D69\u5475\u559D\u8377\u83CF\u6838\u79BE\u548C\u4F55\u5408\u76D2\u8C89\u9602\u6CB3\u6DB8\u8D6B\u8910\u9E64\u8D3A\u563F\u9ED1\u75D5\u5F88\u72E0\u6068\u54FC\u4EA8\u6A2A\u8861\u6052\u8F70\u54C4\u70D8\u8679\u9E3F\u6D2A\u5B8F\u5F18\u7EA2\u5589\u4FAF\u7334\u543C\u539A\u5019\u540E\u547C\u4E4E\u5FFD\u745A\u58F6\u846B\u80E1\u8774\u72D0\u7CCA\u6E56\"],\n[\"bb40\",\"\u7C43\",9,\"\u7C4E\",36,\"\u7C75\",5,\"\u7C7E\",9],\n[\"bb80\",\"\u7C88\u7C8A\",6,\"\u7C93\u7C94\u7C96\u7C99\u7C9A\u7C9B\u7CA0\u7CA1\u7CA3\u7CA6\u7CA7\u7CA8\u7CA9\u7CAB\u7CAC\u7CAD\u7CAF\u7CB0\u7CB4\",4,\"\u7CBA\u7CBB\u5F27\u864E\u552C\u62A4\u4E92\u6CAA\u6237\u82B1\u54D7\u534E\u733E\u6ED1\u753B\u5212\u5316\u8BDD\u69D0\u5F8A\u6000\u6DEE\u574F\u6B22\u73AF\u6853\u8FD8\u7F13\u6362\u60A3\u5524\u75EA\u8C62\u7115\u6DA3\u5BA6\u5E7B\u8352\u614C\u9EC4\u78FA\u8757\u7C27\u7687\u51F0\u60F6\u714C\u6643\u5E4C\u604D\u8C0E\u7070\u6325\u8F89\u5FBD\u6062\u86D4\u56DE\u6BC1\u6094\u6167\u5349\u60E0\u6666\u8D3F\u79FD\u4F1A\u70E9\u6C47\u8BB3\u8BF2\u7ED8\u8364\u660F\u5A5A\u9B42\u6D51\u6DF7\u8C41\u6D3B\u4F19\u706B\u83B7\u6216\u60D1\u970D\u8D27\u7978\u51FB\u573E\u57FA\u673A\u7578\u7A3D\u79EF\u7B95\"],\n[\"bc40\",\"\u7CBF\u7CC0\u7CC2\u7CC3\u7CC4\u7CC6\u7CC9\u7CCB\u7CCE\",6,\"\u7CD8\u7CDA\u7CDB\u7CDD\u7CDE\u7CE1\",6,\"\u7CE9\",5,\"\u7CF0\",7,\"\u7CF9\u7CFA\u7CFC\",13,\"\u7D0B\",5],\n[\"bc80\",\"\u7D11\",14,\"\u7D21\u7D23\u7D24\u7D25\u7D26\u7D28\u7D29\u7D2A\u7D2C\u7D2D\u7D2E\u7D30\",6,\"\u808C\u9965\u8FF9\u6FC0\u8BA5\u9E21\u59EC\u7EE9\u7F09\u5409\u6781\u68D8\u8F91\u7C4D\u96C6\u53CA\u6025\u75BE\u6C72\u5373\u5AC9\u7EA7\u6324\u51E0\u810A\u5DF1\u84DF\u6280\u5180\u5B63\u4F0E\u796D\u5242\u60B8\u6D4E\u5BC4\u5BC2\u8BA1\u8BB0\u65E2\u5FCC\u9645\u5993\u7EE7\u7EAA\u5609\u67B7\u5939\u4F73\u5BB6\u52A0\u835A\u988A\u8D3E\u7532\u94BE\u5047\u7A3C\u4EF7\u67B6\u9A7E\u5AC1\u6B7C\u76D1\u575A\u5C16\u7B3A\u95F4\u714E\u517C\u80A9\u8270\u5978\u7F04\u8327\u68C0\u67EC\u78B1\u7877\u62E3\u6361\u7B80\u4FED\u526A\u51CF\u8350\u69DB\u9274\u8DF5\u8D31\u89C1\u952E\u7BAD\u4EF6\"],\n[\"bd40\",\"\u7D37\",54,\"\u7D6F\",7],\n[\"bd80\",\"\u7D78\",32,\"\u5065\u8230\u5251\u996F\u6E10\u6E85\u6DA7\u5EFA\u50F5\u59DC\u5C06\u6D46\u6C5F\u7586\u848B\u6868\u5956\u8BB2\u5320\u9171\u964D\u8549\u6912\u7901\u7126\u80F6\u4EA4\u90CA\u6D47\u9A84\u5A07\u56BC\u6405\u94F0\u77EB\u4FA5\u811A\u72E1\u89D2\u997A\u7F34\u7EDE\u527F\u6559\u9175\u8F7F\u8F83\u53EB\u7A96\u63ED\u63A5\u7686\u79F8\u8857\u9636\u622A\u52AB\u8282\u6854\u6770\u6377\u776B\u7AED\u6D01\u7ED3\u89E3\u59D0\u6212\u85C9\u82A5\u754C\u501F\u4ECB\u75A5\u8BEB\u5C4A\u5DFE\u7B4B\u65A4\u91D1\u4ECA\u6D25\u895F\u7D27\u9526\u4EC5\u8C28\u8FDB\u9773\u664B\u7981\u8FD1\u70EC\u6D78\"],\n[\"be40\",\"\u7D99\",12,\"\u7DA7\",6,\"\u7DAF\",42],\n[\"be80\",\"\u7DDA\",32,\"\u5C3D\u52B2\u8346\u5162\u830E\u775B\u6676\u9CB8\u4EAC\u60CA\u7CBE\u7CB3\u7ECF\u4E95\u8B66\u666F\u9888\u9759\u5883\u656C\u955C\u5F84\u75C9\u9756\u7ADF\u7ADE\u51C0\u70AF\u7A98\u63EA\u7A76\u7EA0\u7396\u97ED\u4E45\u7078\u4E5D\u9152\u53A9\u6551\u65E7\u81FC\u8205\u548E\u5C31\u759A\u97A0\u62D8\u72D9\u75BD\u5C45\u9A79\u83CA\u5C40\u5480\u77E9\u4E3E\u6CAE\u805A\u62D2\u636E\u5DE8\u5177\u8DDD\u8E1E\u952F\u4FF1\u53E5\u60E7\u70AC\u5267\u6350\u9E43\u5A1F\u5026\u7737\u5377\u7EE2\u6485\u652B\u6289\u6398\u5014\u7235\u89C9\u51B3\u8BC0\u7EDD\u5747\u83CC\u94A7\u519B\u541B\u5CFB\"],\n[\"bf40\",\"\u7DFB\",62],\n[\"bf80\",\"\u7E3A\u7E3C\",4,\"\u7E42\",4,\"\u7E48\",21,\"\u4FCA\u7AE3\u6D5A\u90E1\u9A8F\u5580\u5496\u5361\u54AF\u5F00\u63E9\u6977\u51EF\u6168\u520A\u582A\u52D8\u574E\u780D\u770B\u5EB7\u6177\u7CE0\u625B\u6297\u4EA2\u7095\u8003\u62F7\u70E4\u9760\u5777\u82DB\u67EF\u68F5\u78D5\u9897\u79D1\u58F3\u54B3\u53EF\u6E34\u514B\u523B\u5BA2\u8BFE\u80AF\u5543\u57A6\u6073\u5751\u542D\u7A7A\u6050\u5B54\u63A7\u62A0\u53E3\u6263\u5BC7\u67AF\u54ED\u7A9F\u82E6\u9177\u5E93\u88E4\u5938\u57AE\u630E\u8DE8\u80EF\u5757\u7B77\u4FA9\u5FEB\u5BBD\u6B3E\u5321\u7B50\u72C2\u6846\u77FF\u7736\u65F7\u51B5\u4E8F\u76D4\u5CBF\u7AA5\u8475\u594E\u9B41\u5080\"],\n[\"c040\",\"\u7E5E\",35,\"\u7E83\",23,\"\u7E9C\u7E9D\u7E9E\"],\n[\"c080\",\"\u7EAE\u7EB4\u7EBB\u7EBC\u7ED6\u7EE4\u7EEC\u7EF9\u7F0A\u7F10\u7F1E\u7F37\u7F39\u7F3B\",6,\"\u7F43\u7F46\",9,\"\u7F52\u7F53\u9988\u6127\u6E83\u5764\u6606\u6346\u56F0\u62EC\u6269\u5ED3\u9614\u5783\u62C9\u5587\u8721\u814A\u8FA3\u5566\u83B1\u6765\u8D56\u84DD\u5A6A\u680F\u62E6\u7BEE\u9611\u5170\u6F9C\u8C30\u63FD\u89C8\u61D2\u7F06\u70C2\u6EE5\u7405\u6994\u72FC\u5ECA\u90CE\u6717\u6D6A\u635E\u52B3\u7262\u8001\u4F6C\u59E5\u916A\u70D9\u6D9D\u52D2\u4E50\u96F7\u956D\u857E\u78CA\u7D2F\u5121\u5792\u64C2\u808B\u7C7B\u6CEA\u68F1\u695E\u51B7\u5398\u68A8\u7281\u9ECE\u7BF1\u72F8\u79BB\u6F13\u7406\u674E\u91CC\u9CA4\u793C\u8389\u8354\u540F\u6817\u4E3D\u5389\u52B1\u783E\u5386\u5229\u5088\u4F8B\u4FD0\"],\n[\"c140\",\"\u7F56\u7F59\u7F5B\u7F5C\u7F5D\u7F5E\u7F60\u7F63\",4,\"\u7F6B\u7F6C\u7F6D\u7F6F\u7F70\u7F73\u7F75\u7F76\u7F77\u7F78\u7F7A\u7F7B\u7F7C\u7F7D\u7F7F\u7F80\u7F82\",7,\"\u7F8B\u7F8D\u7F8F\",4,\"\u7F95\",4,\"\u7F9B\u7F9C\u7FA0\u7FA2\u7FA3\u7FA5\u7FA6\u7FA8\",6,\"\u7FB1\"],\n[\"c180\",\"\u7FB3\",4,\"\u7FBA\u7FBB\u7FBE\u7FC0\u7FC2\u7FC3\u7FC4\u7FC6\u7FC7\u7FC8\u7FC9\u7FCB\u7FCD\u7FCF\",4,\"\u7FD6\u7FD7\u7FD9\",5,\"\u7FE2\u7FE3\u75E2\u7ACB\u7C92\u6CA5\u96B6\u529B\u7483\u54E9\u4FE9\u8054\u83B2\u8FDE\u9570\u5EC9\u601C\u6D9F\u5E18\u655B\u8138\u94FE\u604B\u70BC\u7EC3\u7CAE\u51C9\u6881\u7CB1\u826F\u4E24\u8F86\u91CF\u667E\u4EAE\u8C05\u64A9\u804A\u50DA\u7597\u71CE\u5BE5\u8FBD\u6F66\u4E86\u6482\u9563\u5ED6\u6599\u5217\u88C2\u70C8\u52A3\u730E\u7433\u6797\u78F7\u9716\u4E34\u90BB\u9CDE\u6DCB\u51DB\u8D41\u541D\u62CE\u73B2\u83F1\u96F6\u9F84\u94C3\u4F36\u7F9A\u51CC\u7075\u9675\u5CAD\u9886\u53E6\u4EE4\u6E9C\u7409\u69B4\u786B\u998F\u7559\u5218\u7624\u6D41\u67F3\u516D\u9F99\u804B\u5499\u7B3C\u7ABF\"],\n[\"c240\",\"\u7FE4\u7FE7\u7FE8\u7FEA\u7FEB\u7FEC\u7FED\u7FEF\u7FF2\u7FF4\",6,\"\u7FFD\u7FFE\u7FFF\u8002\u8007\u8008\u8009\u800A\u800E\u800F\u8011\u8013\u801A\u801B\u801D\u801E\u801F\u8021\u8023\u8024\u802B\",5,\"\u8032\u8034\u8039\u803A\u803C\u803E\u8040\u8041\u8044\u8045\u8047\u8048\u8049\u804E\u804F\u8050\u8051\u8053\u8055\u8056\u8057\"],\n[\"c280\",\"\u8059\u805B\",13,\"\u806B\",5,\"\u8072\",11,\"\u9686\u5784\u62E2\u9647\u697C\u5A04\u6402\u7BD3\u6F0F\u964B\u82A6\u5362\u9885\u5E90\u7089\u63B3\u5364\u864F\u9C81\u9E93\u788C\u9732\u8DEF\u8D42\u9E7F\u6F5E\u7984\u5F55\u9646\u622E\u9A74\u5415\u94DD\u4FA3\u65C5\u5C65\u5C61\u7F15\u8651\u6C2F\u5F8B\u7387\u6EE4\u7EFF\u5CE6\u631B\u5B6A\u6EE6\u5375\u4E71\u63A0\u7565\u62A1\u8F6E\u4F26\u4ED1\u6CA6\u7EB6\u8BBA\u841D\u87BA\u7F57\u903B\u9523\u7BA9\u9AA1\u88F8\u843D\u6D1B\u9A86\u7EDC\u5988\u9EBB\u739B\u7801\u8682\u9A6C\u9A82\u561B\u5417\u57CB\u4E70\u9EA6\u5356\u8FC8\u8109\u7792\u9992\u86EE\u6EE1\u8513\u66FC\u6162\u6F2B\"],\n[\"c340\",\"\u807E\u8081\u8082\u8085\u8088\u808A\u808D\",5,\"\u8094\u8095\u8097\u8099\u809E\u80A3\u80A6\u80A7\u80A8\u80AC\u80B0\u80B3\u80B5\u80B6\u80B8\u80B9\u80BB\u80C5\u80C7\",4,\"\u80CF\",6,\"\u80D8\u80DF\u80E0\u80E2\u80E3\u80E6\u80EE\u80F5\u80F7\u80F9\u80FB\u80FE\u80FF\u8100\u8101\u8103\u8104\u8105\u8107\u8108\u810B\"],\n[\"c380\",\"\u810C\u8115\u8117\u8119\u811B\u811C\u811D\u811F\",12,\"\u812D\u812E\u8130\u8133\u8134\u8135\u8137\u8139\",4,\"\u813F\u8C29\u8292\u832B\u76F2\u6C13\u5FD9\u83BD\u732B\u8305\u951A\u6BDB\u77DB\u94C6\u536F\u8302\u5192\u5E3D\u8C8C\u8D38\u4E48\u73AB\u679A\u6885\u9176\u9709\u7164\u6CA1\u7709\u5A92\u9541\u6BCF\u7F8E\u6627\u5BD0\u59B9\u5A9A\u95E8\u95F7\u4EEC\u840C\u8499\u6AAC\u76DF\u9530\u731B\u68A6\u5B5F\u772F\u919A\u9761\u7CDC\u8FF7\u8C1C\u5F25\u7C73\u79D8\u89C5\u6CCC\u871C\u5BC6\u5E42\u68C9\u7720\u7EF5\u5195\u514D\u52C9\u5A29\u7F05\u9762\u82D7\u63CF\u7784\u85D0\u79D2\u6E3A\u5E99\u5999\u8511\u706D\u6C11\u62BF\u76BF\u654F\u60AF\u95FD\u660E\u879F\u9E23\u94ED\u540D\u547D\u8C2C\u6478\"],\n[\"c440\",\"\u8140\",5,\"\u8147\u8149\u814D\u814E\u814F\u8152\u8156\u8157\u8158\u815B\",4,\"\u8161\u8162\u8163\u8164\u8166\u8168\u816A\u816B\u816C\u816F\u8172\u8173\u8175\u8176\u8177\u8178\u8181\u8183\",4,\"\u8189\u818B\u818C\u818D\u818E\u8190\u8192\",5,\"\u8199\u819A\u819E\",4,\"\u81A4\u81A5\"],\n[\"c480\",\"\u81A7\u81A9\u81AB\",7,\"\u81B4\",5,\"\u81BC\u81BD\u81BE\u81BF\u81C4\u81C5\u81C7\u81C8\u81C9\u81CB\u81CD\",6,\"\u6479\u8611\u6A21\u819C\u78E8\u6469\u9B54\u62B9\u672B\u83AB\u58A8\u9ED8\u6CAB\u6F20\u5BDE\u964C\u8C0B\u725F\u67D0\u62C7\u7261\u4EA9\u59C6\u6BCD\u5893\u66AE\u5E55\u52DF\u6155\u6728\u76EE\u7766\u7267\u7A46\u62FF\u54EA\u5450\u94A0\u90A3\u5A1C\u7EB3\u6C16\u4E43\u5976\u8010\u5948\u5357\u7537\u96BE\u56CA\u6320\u8111\u607C\u95F9\u6DD6\u5462\u9981\u5185\u5AE9\u80FD\u59AE\u9713\u502A\u6CE5\u5C3C\u62DF\u4F60\u533F\u817B\u9006\u6EBA\u852B\u62C8\u5E74\u78BE\u64B5\u637B\u5FF5\u5A18\u917F\u9E1F\u5C3F\u634F\u8042\u5B7D\u556E\u954A\u954D\u6D85\u60A8\u67E0\u72DE\u51DD\u5B81\"],\n[\"c540\",\"\u81D4\",14,\"\u81E4\u81E5\u81E6\u81E8\u81E9\u81EB\u81EE\",4,\"\u81F5\",5,\"\u81FD\u81FF\u8203\u8207\",4,\"\u820E\u820F\u8211\u8213\u8215\",5,\"\u821D\u8220\u8224\u8225\u8226\u8227\u8229\u822E\u8232\u823A\u823C\u823D\u823F\"],\n[\"c580\",\"\u8240\u8241\u8242\u8243\u8245\u8246\u8248\u824A\u824C\u824D\u824E\u8250\",7,\"\u8259\u825B\u825C\u825D\u825E\u8260\",7,\"\u8269\u62E7\u6CDE\u725B\u626D\u94AE\u7EBD\u8113\u6D53\u519C\u5F04\u5974\u52AA\u6012\u5973\u6696\u8650\u759F\u632A\u61E6\u7CEF\u8BFA\u54E6\u6B27\u9E25\u6BB4\u85D5\u5455\u5076\u6CA4\u556A\u8DB4\u722C\u5E15\u6015\u7436\u62CD\u6392\u724C\u5F98\u6E43\u6D3E\u6500\u6F58\u76D8\u78D0\u76FC\u7554\u5224\u53DB\u4E53\u5E9E\u65C1\u802A\u80D6\u629B\u5486\u5228\u70AE\u888D\u8DD1\u6CE1\u5478\u80DA\u57F9\u88F4\u8D54\u966A\u914D\u4F69\u6C9B\u55B7\u76C6\u7830\u62A8\u70F9\u6F8E\u5F6D\u84EC\u68DA\u787C\u7BF7\u81A8\u670B\u9E4F\u6367\u78B0\u576F\u7812\u9739\u6279\u62AB\u5288\u7435\u6BD7\"],\n[\"c640\",\"\u826A\u826B\u826C\u826D\u8271\u8275\u8276\u8277\u8278\u827B\u827C\u8280\u8281\u8283\u8285\u8286\u8287\u8289\u828C\u8290\u8293\u8294\u8295\u8296\u829A\u829B\u829E\u82A0\u82A2\u82A3\u82A7\u82B2\u82B5\u82B6\u82BA\u82BB\u82BC\u82BF\u82C0\u82C2\u82C3\u82C5\u82C6\u82C9\u82D0\u82D6\u82D9\u82DA\u82DD\u82E2\u82E7\u82E8\u82E9\u82EA\u82EC\u82ED\u82EE\u82F0\u82F2\u82F3\u82F5\u82F6\u82F8\"],\n[\"c680\",\"\u82FA\u82FC\",4,\"\u830A\u830B\u830D\u8310\u8312\u8313\u8316\u8318\u8319\u831D\",9,\"\u8329\u832A\u832E\u8330\u8332\u8337\u833B\u833D\u5564\u813E\u75B2\u76AE\u5339\u75DE\u50FB\u5C41\u8B6C\u7BC7\u504F\u7247\u9A97\u98D8\u6F02\u74E2\u7968\u6487\u77A5\u62FC\u9891\u8D2B\u54C1\u8058\u4E52\u576A\u82F9\u840D\u5E73\u51ED\u74F6\u8BC4\u5C4F\u5761\u6CFC\u9887\u5A46\u7834\u9B44\u8FEB\u7C95\u5256\u6251\u94FA\u4EC6\u8386\u8461\u83E9\u84B2\u57D4\u6734\u5703\u666E\u6D66\u8C31\u66DD\u7011\u671F\u6B3A\u6816\u621A\u59BB\u4E03\u51C4\u6F06\u67D2\u6C8F\u5176\u68CB\u5947\u6B67\u7566\u5D0E\u8110\u9F50\u65D7\u7948\u7941\u9A91\u8D77\u5C82\u4E5E\u4F01\u542F\u5951\u780C\u5668\u6C14\u8FC4\u5F03\u6C7D\u6CE3\u8BAB\u6390\"],\n[\"c740\",\"\u833E\u833F\u8341\u8342\u8344\u8345\u8348\u834A\",4,\"\u8353\u8355\",4,\"\u835D\u8362\u8370\",6,\"\u8379\u837A\u837E\",6,\"\u8387\u8388\u838A\u838B\u838C\u838D\u838F\u8390\u8391\u8394\u8395\u8396\u8397\u8399\u839A\u839D\u839F\u83A1\",6,\"\u83AC\u83AD\u83AE\"],\n[\"c780\",\"\u83AF\u83B5\u83BB\u83BE\u83BF\u83C2\u83C3\u83C4\u83C6\u83C8\u83C9\u83CB\u83CD\u83CE\u83D0\u83D1\u83D2\u83D3\u83D5\u83D7\u83D9\u83DA\u83DB\u83DE\u83E2\u83E3\u83E4\u83E6\u83E7\u83E8\u83EB\u83EC\u83ED\u6070\u6D3D\u7275\u6266\u948E\u94C5\u5343\u8FC1\u7B7E\u4EDF\u8C26\u4E7E\u9ED4\u94B1\u94B3\u524D\u6F5C\u9063\u6D45\u8C34\u5811\u5D4C\u6B20\u6B49\u67AA\u545B\u8154\u7F8C\u5899\u8537\u5F3A\u62A2\u6A47\u9539\u6572\u6084\u6865\u77A7\u4E54\u4FA8\u5DE7\u9798\u64AC\u7FD8\u5CED\u4FCF\u7A8D\u5207\u8304\u4E14\u602F\u7A83\u94A6\u4FB5\u4EB2\u79E6\u7434\u52E4\u82B9\u64D2\u79BD\u5BDD\u6C81\u9752\u8F7B\u6C22\u503E\u537F\u6E05\u64CE\u6674\u6C30\u60C5\u9877\u8BF7\u5E86\u743C\u7A77\u79CB\u4E18\u90B1\u7403\u6C42\u56DA\u914B\u6CC5\u8D8B\u533A\u86C6\u66F2\u8EAF\u5C48\u9A71\u6E20\"],\n[\"c840\",\"\u83EE\u83EF\u83F3\",4,\"\u83FA\u83FB\u83FC\u83FE\u83FF\u8400\u8402\u8405\u8407\u8408\u8409\u840A\u8410\u8412\",5,\"\u8419\u841A\u841B\u841E\",5,\"\u8429\",7,\"\u8432\",5,\"\u8439\u843A\u843B\u843E\",7,\"\u8447\u8448\u8449\"],\n[\"c880\",\"\u844A\",6,\"\u8452\",4,\"\u8458\u845D\u845E\u845F\u8460\u8462\u8464\",4,\"\u846A\u846E\u846F\u8470\u8472\u8474\u8477\u8479\u847B\u847C\u53D6\u5A36\u9F8B\u8DA3\u53BB\u5708\u98A7\u6743\u919B\u6CC9\u5168\u75CA\u62F3\u72AC\u5238\u529D\u7F3A\u7094\u7638\u5374\u9E4A\u69B7\u786E\u96C0\u88D9\u7FA4\u7136\u71C3\u5189\u67D3\u74E4\u58E4\u6518\u56B7\u8BA9\u9976\u6270\u7ED5\u60F9\u70ED\u58EC\u4EC1\u4EBA\u5FCD\u97E7\u4EFB\u8BA4\u5203\u598A\u7EAB\u6254\u4ECD\u65E5\u620E\u8338\u84C9\u8363\u878D\u7194\u6EB6\u5BB9\u7ED2\u5197\u63C9\u67D4\u8089\u8339\u8815\u5112\u5B7A\u5982\u8FB1\u4E73\u6C5D\u5165\u8925\u8F6F\u962E\u854A\u745E\u9510\u95F0\u6DA6\u82E5\u5F31\u6492\u6D12\u8428\u816E\u9CC3\u585E\u8D5B\u4E09\u53C1\"],\n[\"c940\",\"\u847D\",4,\"\u8483\u8484\u8485\u8486\u848A\u848D\u848F\",7,\"\u8498\u849A\u849B\u849D\u849E\u849F\u84A0\u84A2\",12,\"\u84B0\u84B1\u84B3\u84B5\u84B6\u84B7\u84BB\u84BC\u84BE\u84C0\u84C2\u84C3\u84C5\u84C6\u84C7\u84C8\u84CB\u84CC\u84CE\u84CF\u84D2\u84D4\u84D5\u84D7\"],\n[\"c980\",\"\u84D8\",4,\"\u84DE\u84E1\u84E2\u84E4\u84E7\",4,\"\u84ED\u84EE\u84EF\u84F1\",10,\"\u84FD\u84FE\u8500\u8501\u8502\u4F1E\u6563\u6851\u55D3\u4E27\u6414\u9A9A\u626B\u5AC2\u745F\u8272\u6DA9\u68EE\u50E7\u838E\u7802\u6740\u5239\u6C99\u7EB1\u50BB\u5565\u715E\u7B5B\u6652\u73CA\u82EB\u6749\u5C71\u5220\u717D\u886B\u95EA\u9655\u64C5\u8D61\u81B3\u5584\u6C55\u6247\u7F2E\u5892\u4F24\u5546\u8D4F\u664C\u4E0A\u5C1A\u88F3\u68A2\u634E\u7A0D\u70E7\u828D\u52FA\u97F6\u5C11\u54E8\u90B5\u7ECD\u5962\u8D4A\u86C7\u820C\u820D\u8D66\u6444\u5C04\u6151\u6D89\u793E\u8BBE\u7837\u7533\u547B\u4F38\u8EAB\u6DF1\u5A20\u7EC5\u795E\u6C88\u5BA1\u5A76\u751A\u80BE\u614E\u6E17\u58F0\u751F\u7525\u7272\u5347\u7EF3\"],\n[\"ca40\",\"\u8503\",8,\"\u850D\u850E\u850F\u8510\u8512\u8514\u8515\u8516\u8518\u8519\u851B\u851C\u851D\u851E\u8520\u8522\",8,\"\u852D\",9,\"\u853E\",4,\"\u8544\u8545\u8546\u8547\u854B\",10],\n[\"ca80\",\"\u8557\u8558\u855A\u855B\u855C\u855D\u855F\",4,\"\u8565\u8566\u8567\u8569\",8,\"\u8573\u8575\u8576\u8577\u8578\u857C\u857D\u857F\u8580\u8581\u7701\u76DB\u5269\u80DC\u5723\u5E08\u5931\u72EE\u65BD\u6E7F\u8BD7\u5C38\u8671\u5341\u77F3\u62FE\u65F6\u4EC0\u98DF\u8680\u5B9E\u8BC6\u53F2\u77E2\u4F7F\u5C4E\u9A76\u59CB\u5F0F\u793A\u58EB\u4E16\u67FF\u4E8B\u62ED\u8A93\u901D\u52BF\u662F\u55DC\u566C\u9002\u4ED5\u4F8D\u91CA\u9970\u6C0F\u5E02\u6043\u5BA4\u89C6\u8BD5\u6536\u624B\u9996\u5B88\u5BFF\u6388\u552E\u53D7\u7626\u517D\u852C\u67A2\u68B3\u6B8A\u6292\u8F93\u53D4\u8212\u6DD1\u758F\u4E66\u8D4E\u5B70\u719F\u85AF\u6691\u66D9\u7F72\u8700\u9ECD\u9F20\u5C5E\u672F\u8FF0\u6811\u675F\u620D\u7AD6\u5885\u5EB6\u6570\u6F31\"],\n[\"cb40\",\"\u8582\u8583\u8586\u8588\",6,\"\u8590\",10,\"\u859D\",6,\"\u85A5\u85A6\u85A7\u85A9\u85AB\u85AC\u85AD\u85B1\",5,\"\u85B8\u85BA\",6,\"\u85C2\",6,\"\u85CA\",4,\"\u85D1\u85D2\"],\n[\"cb80\",\"\u85D4\u85D6\",5,\"\u85DD\",6,\"\u85E5\u85E6\u85E7\u85E8\u85EA\",14,\"\u6055\u5237\u800D\u6454\u8870\u7529\u5E05\u6813\u62F4\u971C\u53CC\u723D\u8C01\u6C34\u7761\u7A0E\u542E\u77AC\u987A\u821C\u8BF4\u7855\u6714\u70C1\u65AF\u6495\u5636\u601D\u79C1\u53F8\u4E1D\u6B7B\u8086\u5BFA\u55E3\u56DB\u4F3A\u4F3C\u9972\u5DF3\u677E\u8038\u6002\u9882\u9001\u5B8B\u8BBC\u8BF5\u641C\u8258\u64DE\u55FD\u82CF\u9165\u4FD7\u7D20\u901F\u7C9F\u50F3\u5851\u6EAF\u5BBF\u8BC9\u8083\u9178\u849C\u7B97\u867D\u968B\u968F\u7EE5\u9AD3\u788E\u5C81\u7A57\u9042\u96A7\u795F\u5B59\u635F\u7B0B\u84D1\u68AD\u5506\u7F29\u7410\u7D22\u9501\u6240\u584C\u4ED6\u5B83\u5979\u5854\"],\n[\"cc40\",\"\u85F9\u85FA\u85FC\u85FD\u85FE\u8600\",4,\"\u8606\",10,\"\u8612\u8613\u8614\u8615\u8617\",15,\"\u8628\u862A\",13,\"\u8639\u863A\u863B\u863D\u863E\u863F\u8640\"],\n[\"cc80\",\"\u8641\",11,\"\u8652\u8653\u8655\",4,\"\u865B\u865C\u865D\u865F\u8660\u8661\u8663\",7,\"\u736D\u631E\u8E4B\u8E0F\u80CE\u82D4\u62AC\u53F0\u6CF0\u915E\u592A\u6001\u6C70\u574D\u644A\u8D2A\u762B\u6EE9\u575B\u6A80\u75F0\u6F6D\u8C2D\u8C08\u5766\u6BEF\u8892\u78B3\u63A2\u53F9\u70AD\u6C64\u5858\u642A\u5802\u68E0\u819B\u5510\u7CD6\u5018\u8EBA\u6DCC\u8D9F\u70EB\u638F\u6D9B\u6ED4\u7EE6\u8404\u6843\u9003\u6DD8\u9676\u8BA8\u5957\u7279\u85E4\u817E\u75BC\u8A8A\u68AF\u5254\u8E22\u9511\u63D0\u9898\u8E44\u557C\u4F53\u66FF\u568F\u60D5\u6D95\u5243\u5C49\u5929\u6DFB\u586B\u7530\u751C\u606C\u8214\u8146\u6311\u6761\u8FE2\u773A\u8DF3\u8D34\u94C1\u5E16\u5385\u542C\u70C3\"],\n[\"cd40\",\"\u866D\u866F\u8670\u8672\",6,\"\u8683\",6,\"\u868E\",4,\"\u8694\u8696\",5,\"\u869E\",4,\"\u86A5\u86A6\u86AB\u86AD\u86AE\u86B2\u86B3\u86B7\u86B8\u86B9\u86BB\",4,\"\u86C1\u86C2\u86C3\u86C5\u86C8\u86CC\u86CD\u86D2\u86D3\u86D5\u86D6\u86D7\u86DA\u86DC\"],\n[\"cd80\",\"\u86DD\u86E0\u86E1\u86E2\u86E3\u86E5\u86E6\u86E7\u86E8\u86EA\u86EB\u86EC\u86EF\u86F5\u86F6\u86F7\u86FA\u86FB\u86FC\u86FD\u86FF\u8701\u8704\u8705\u8706\u870B\u870C\u870E\u870F\u8710\u8711\u8714\u8716\u6C40\u5EF7\u505C\u4EAD\u5EAD\u633A\u8247\u901A\u6850\u916E\u77B3\u540C\u94DC\u5F64\u7AE5\u6876\u6345\u7B52\u7EDF\u75DB\u5077\u6295\u5934\u900F\u51F8\u79C3\u7A81\u56FE\u5F92\u9014\u6D82\u5C60\u571F\u5410\u5154\u6E4D\u56E2\u63A8\u9893\u817F\u8715\u892A\u9000\u541E\u5C6F\u81C0\u62D6\u6258\u8131\u9E35\u9640\u9A6E\u9A7C\u692D\u59A5\u62D3\u553E\u6316\u54C7\u86D9\u6D3C\u5A03\u74E6\u889C\u6B6A\u5916\u8C4C\u5F2F\u6E7E\u73A9\u987D\u4E38\u70F7\u5B8C\u7897\u633D\u665A\u7696\u60CB\u5B9B\u5A49\u4E07\u8155\u6C6A\u738B\u4EA1\u6789\u7F51\u5F80\u65FA\u671B\u5FD8\u5984\u5A01\"],\n[\"ce40\",\"\u8719\u871B\u871D\u871F\u8720\u8724\u8726\u8727\u8728\u872A\u872B\u872C\u872D\u872F\u8730\u8732\u8733\u8735\u8736\u8738\u8739\u873A\u873C\u873D\u8740\",6,\"\u874A\u874B\u874D\u874F\u8750\u8751\u8752\u8754\u8755\u8756\u8758\u875A\",5,\"\u8761\u8762\u8766\",7,\"\u876F\u8771\u8772\u8773\u8775\"],\n[\"ce80\",\"\u8777\u8778\u8779\u877A\u877F\u8780\u8781\u8784\u8786\u8787\u8789\u878A\u878C\u878E\",4,\"\u8794\u8795\u8796\u8798\",6,\"\u87A0\",4,\"\u5DCD\u5FAE\u5371\u97E6\u8FDD\u6845\u56F4\u552F\u60DF\u4E3A\u6F4D\u7EF4\u82C7\u840E\u59D4\u4F1F\u4F2A\u5C3E\u7EAC\u672A\u851A\u5473\u754F\u80C3\u5582\u9B4F\u4F4D\u6E2D\u8C13\u5C09\u6170\u536B\u761F\u6E29\u868A\u6587\u95FB\u7EB9\u543B\u7A33\u7D0A\u95EE\u55E1\u7FC1\u74EE\u631D\u8717\u6DA1\u7A9D\u6211\u65A1\u5367\u63E1\u6C83\u5DEB\u545C\u94A8\u4E4C\u6C61\u8BEC\u5C4B\u65E0\u829C\u68A7\u543E\u5434\u6BCB\u6B66\u4E94\u6342\u5348\u821E\u4F0D\u4FAE\u575E\u620A\u96FE\u6664\u7269\u52FF\u52A1\u609F\u8BEF\u6614\u7199\u6790\u897F\u7852\u77FD\u6670\u563B\u5438\u9521\u727A\"],\n[\"cf40\",\"\u87A5\u87A6\u87A7\u87A9\u87AA\u87AE\u87B0\u87B1\u87B2\u87B4\u87B6\u87B7\u87B8\u87B9\u87BB\u87BC\u87BE\u87BF\u87C1\",4,\"\u87C7\u87C8\u87C9\u87CC\",4,\"\u87D4\",6,\"\u87DC\u87DD\u87DE\u87DF\u87E1\u87E2\u87E3\u87E4\u87E6\u87E7\u87E8\u87E9\u87EB\u87EC\u87ED\u87EF\",9],\n[\"cf80\",\"\u87FA\u87FB\u87FC\u87FD\u87FF\u8800\u8801\u8802\u8804\",5,\"\u880B\",7,\"\u8814\u8817\u8818\u8819\u881A\u881C\",4,\"\u8823\u7A00\u606F\u5E0C\u6089\u819D\u5915\u60DC\u7184\u70EF\u6EAA\u6C50\u7280\u6A84\u88AD\u5E2D\u4E60\u5AB3\u559C\u94E3\u6D17\u7CFB\u9699\u620F\u7EC6\u778E\u867E\u5323\u971E\u8F96\u6687\u5CE1\u4FA0\u72ED\u4E0B\u53A6\u590F\u5413\u6380\u9528\u5148\u4ED9\u9C9C\u7EA4\u54B8\u8D24\u8854\u8237\u95F2\u6D8E\u5F26\u5ACC\u663E\u9669\u73B0\u732E\u53BF\u817A\u9985\u7FA1\u5BAA\u9677\u9650\u7EBF\u76F8\u53A2\u9576\u9999\u7BB1\u8944\u6E58\u4E61\u7FD4\u7965\u8BE6\u60F3\u54CD\u4EAB\u9879\u5DF7\u6A61\u50CF\u5411\u8C61\u8427\u785D\u9704\u524A\u54EE\u56A3\u9500\u6D88\u5BB5\u6DC6\u6653\"],\n[\"d040\",\"\u8824\",13,\"\u8833\",5,\"\u883A\u883B\u883D\u883E\u883F\u8841\u8842\u8843\u8846\",5,\"\u884E\",5,\"\u8855\u8856\u8858\u885A\",6,\"\u8866\u8867\u886A\u886D\u886F\u8871\u8873\u8874\u8875\u8876\u8878\u8879\u887A\"],\n[\"d080\",\"\u887B\u887C\u8880\u8883\u8886\u8887\u8889\u888A\u888C\u888E\u888F\u8890\u8891\u8893\u8894\u8895\u8897\",4,\"\u889D\",4,\"\u88A3\u88A5\",5,\"\u5C0F\u5B5D\u6821\u8096\u5578\u7B11\u6548\u6954\u4E9B\u6B47\u874E\u978B\u534F\u631F\u643A\u90AA\u659C\u80C1\u8C10\u5199\u68B0\u5378\u87F9\u61C8\u6CC4\u6CFB\u8C22\u5C51\u85AA\u82AF\u950C\u6B23\u8F9B\u65B0\u5FFB\u5FC3\u4FE1\u8845\u661F\u8165\u7329\u60FA\u5174\u5211\u578B\u5F62\u90A2\u884C\u9192\u5E78\u674F\u6027\u59D3\u5144\u51F6\u80F8\u5308\u6C79\u96C4\u718A\u4F11\u4FEE\u7F9E\u673D\u55C5\u9508\u79C0\u8896\u7EE3\u589F\u620C\u9700\u865A\u5618\u987B\u5F90\u8BB8\u84C4\u9157\u53D9\u65ED\u5E8F\u755C\u6064\u7D6E\u5A7F\u7EEA\u7EED\u8F69\u55A7\u5BA3\u60AC\u65CB\u7384\"],\n[\"d140\",\"\u88AC\u88AE\u88AF\u88B0\u88B2\",4,\"\u88B8\u88B9\u88BA\u88BB\u88BD\u88BE\u88BF\u88C0\u88C3\u88C4\u88C7\u88C8\u88CA\u88CB\u88CC\u88CD\u88CF\u88D0\u88D1\u88D3\u88D6\u88D7\u88DA\",4,\"\u88E0\u88E1\u88E6\u88E7\u88E9\",6,\"\u88F2\u88F5\u88F6\u88F7\u88FA\u88FB\u88FD\u88FF\u8900\u8901\u8903\",5],\n[\"d180\",\"\u8909\u890B\",4,\"\u8911\u8914\",4,\"\u891C\",4,\"\u8922\u8923\u8924\u8926\u8927\u8928\u8929\u892C\u892D\u892E\u892F\u8931\u8932\u8933\u8935\u8937\u9009\u7663\u7729\u7EDA\u9774\u859B\u5B66\u7A74\u96EA\u8840\u52CB\u718F\u5FAA\u65EC\u8BE2\u5BFB\u9A6F\u5DE1\u6B89\u6C5B\u8BAD\u8BAF\u900A\u8FC5\u538B\u62BC\u9E26\u9E2D\u5440\u4E2B\u82BD\u7259\u869C\u5D16\u8859\u6DAF\u96C5\u54D1\u4E9A\u8BB6\u7109\u54BD\u9609\u70DF\u6DF9\u76D0\u4E25\u7814\u8712\u5CA9\u5EF6\u8A00\u989C\u960E\u708E\u6CBF\u5944\u63A9\u773C\u884D\u6F14\u8273\u5830\u71D5\u538C\u781A\u96C1\u5501\u5F66\u7130\u5BB4\u8C1A\u9A8C\u6B83\u592E\u9E2F\u79E7\u6768\u626C\u4F6F\u75A1\u7F8A\u6D0B\u9633\u6C27\u4EF0\u75D2\u517B\u6837\u6F3E\u9080\u8170\u5996\u7476\"],\n[\"d240\",\"\u8938\",8,\"\u8942\u8943\u8945\",24,\"\u8960\",5,\"\u8967\",19,\"\u897C\"],\n[\"d280\",\"\u897D\u897E\u8980\u8982\u8984\u8985\u8987\",26,\"\u6447\u5C27\u9065\u7A91\u8C23\u59DA\u54AC\u8200\u836F\u8981\u8000\u6930\u564E\u8036\u7237\u91CE\u51B6\u4E5F\u9875\u6396\u4E1A\u53F6\u66F3\u814B\u591C\u6DB2\u4E00\u58F9\u533B\u63D6\u94F1\u4F9D\u4F0A\u8863\u9890\u5937\u9057\u79FB\u4EEA\u80F0\u7591\u6C82\u5B9C\u59E8\u5F5D\u6905\u8681\u501A\u5DF2\u4E59\u77E3\u4EE5\u827A\u6291\u6613\u9091\u5C79\u4EBF\u5F79\u81C6\u9038\u8084\u75AB\u4EA6\u88D4\u610F\u6BC5\u5FC6\u4E49\u76CA\u6EA2\u8BE3\u8BAE\u8C0A\u8BD1\u5F02\u7FFC\u7FCC\u7ECE\u8335\u836B\u56E0\u6BB7\u97F3\u9634\u59FB\u541F\u94F6\u6DEB\u5BC5\u996E\u5C39\u5F15\u9690\"],\n[\"d340\",\"\u89A2\",30,\"\u89C3\u89CD\u89D3\u89D4\u89D5\u89D7\u89D8\u89D9\u89DB\u89DD\u89DF\u89E0\u89E1\u89E2\u89E4\u89E7\u89E8\u89E9\u89EA\u89EC\u89ED\u89EE\u89F0\u89F1\u89F2\u89F4\",6],\n[\"d380\",\"\u89FB\",4,\"\u8A01\",5,\"\u8A08\",21,\"\u5370\u82F1\u6A31\u5A74\u9E70\u5E94\u7F28\u83B9\u8424\u8425\u8367\u8747\u8FCE\u8D62\u76C8\u5F71\u9896\u786C\u6620\u54DF\u62E5\u4F63\u81C3\u75C8\u5EB8\u96CD\u8E0A\u86F9\u548F\u6CF3\u6D8C\u6C38\u607F\u52C7\u7528\u5E7D\u4F18\u60A0\u5FE7\u5C24\u7531\u90AE\u94C0\u72B9\u6CB9\u6E38\u9149\u6709\u53CB\u53F3\u4F51\u91C9\u8BF1\u53C8\u5E7C\u8FC2\u6DE4\u4E8E\u76C2\u6986\u865E\u611A\u8206\u4F59\u4FDE\u903E\u9C7C\u6109\u6E1D\u6E14\u9685\u4E88\u5A31\u96E8\u4E0E\u5C7F\u79B9\u5B87\u8BED\u7FBD\u7389\u57DF\u828B\u90C1\u5401\u9047\u55BB\u5CEA\u5FA1\u6108\u6B32\u72F1\u80B2\u8A89\"],\n[\"d440\",\"\u8A1E\",31,\"\u8A3F\",8,\"\u8A49\",21],\n[\"d480\",\"\u8A5F\",25,\"\u8A7A\",6,\"\u6D74\u5BD3\u88D5\u9884\u8C6B\u9A6D\u9E33\u6E0A\u51A4\u5143\u57A3\u8881\u539F\u63F4\u8F95\u56ED\u5458\u5706\u733F\u6E90\u7F18\u8FDC\u82D1\u613F\u6028\u9662\u66F0\u7EA6\u8D8A\u8DC3\u94A5\u5CB3\u7CA4\u6708\u60A6\u9605\u8018\u4E91\u90E7\u5300\u9668\u5141\u8FD0\u8574\u915D\u6655\u97F5\u5B55\u531D\u7838\u6742\u683D\u54C9\u707E\u5BB0\u8F7D\u518D\u5728\u54B1\u6512\u6682\u8D5E\u8D43\u810F\u846C\u906D\u7CDF\u51FF\u85FB\u67A3\u65E9\u6FA1\u86A4\u8E81\u566A\u9020\u7682\u7076\u71E5\u8D23\u62E9\u5219\u6CFD\u8D3C\u600E\u589E\u618E\u66FE\u8D60\u624E\u55B3\u6E23\u672D\u8F67\"],\n[\"d540\",\"\u8A81\",7,\"\u8A8B\",7,\"\u8A94\",46],\n[\"d580\",\"\u8AC3\",32,\"\u94E1\u95F8\u7728\u6805\u69A8\u548B\u4E4D\u70B8\u8BC8\u6458\u658B\u5B85\u7A84\u503A\u5BE8\u77BB\u6BE1\u8A79\u7C98\u6CBE\u76CF\u65A9\u8F97\u5D2D\u5C55\u8638\u6808\u5360\u6218\u7AD9\u6E5B\u7EFD\u6A1F\u7AE0\u5F70\u6F33\u5F20\u638C\u6DA8\u6756\u4E08\u5E10\u8D26\u4ED7\u80C0\u7634\u969C\u62DB\u662D\u627E\u6CBC\u8D75\u7167\u7F69\u5146\u8087\u53EC\u906E\u6298\u54F2\u86F0\u8F99\u8005\u9517\u8517\u8FD9\u6D59\u73CD\u659F\u771F\u7504\u7827\u81FB\u8D1E\u9488\u4FA6\u6795\u75B9\u8BCA\u9707\u632F\u9547\u9635\u84B8\u6323\u7741\u5F81\u72F0\u4E89\u6014\u6574\u62EF\u6B63\u653F\"],\n[\"d640\",\"\u8AE4\",34,\"\u8B08\",27],\n[\"d680\",\"\u8B24\u8B25\u8B27\",30,\"\u5E27\u75C7\u90D1\u8BC1\u829D\u679D\u652F\u5431\u8718\u77E5\u80A2\u8102\u6C41\u4E4B\u7EC7\u804C\u76F4\u690D\u6B96\u6267\u503C\u4F84\u5740\u6307\u6B62\u8DBE\u53EA\u65E8\u7EB8\u5FD7\u631A\u63B7\u81F3\u81F4\u7F6E\u5E1C\u5CD9\u5236\u667A\u79E9\u7A1A\u8D28\u7099\u75D4\u6EDE\u6CBB\u7A92\u4E2D\u76C5\u5FE0\u949F\u8877\u7EC8\u79CD\u80BF\u91CD\u4EF2\u4F17\u821F\u5468\u5DDE\u6D32\u8BCC\u7CA5\u8F74\u8098\u5E1A\u5492\u76B1\u5B99\u663C\u9AA4\u73E0\u682A\u86DB\u6731\u732A\u8BF8\u8BDB\u9010\u7AF9\u70DB\u716E\u62C4\u77A9\u5631\u4E3B\u8457\u67F1\u52A9\u86C0\u8D2E\u94F8\u7B51\"],\n[\"d740\",\"\u8B46\",31,\"\u8B67\",4,\"\u8B6D\",25],\n[\"d780\",\"\u8B87\",24,\"\u8BAC\u8BB1\u8BBB\u8BC7\u8BD0\u8BEA\u8C09\u8C1E\u4F4F\u6CE8\u795D\u9A7B\u6293\u722A\u62FD\u4E13\u7816\u8F6C\u64B0\u8D5A\u7BC6\u6869\u5E84\u88C5\u5986\u649E\u58EE\u72B6\u690E\u9525\u8FFD\u8D58\u5760\u7F00\u8C06\u51C6\u6349\u62D9\u5353\u684C\u7422\u8301\u914C\u5544\u7740\u707C\u6D4A\u5179\u54A8\u8D44\u59FF\u6ECB\u6DC4\u5B5C\u7D2B\u4ED4\u7C7D\u6ED3\u5B50\u81EA\u6E0D\u5B57\u9B03\u68D5\u8E2A\u5B97\u7EFC\u603B\u7EB5\u90B9\u8D70\u594F\u63CD\u79DF\u8DB3\u5352\u65CF\u7956\u8BC5\u963B\u7EC4\u94BB\u7E82\u5634\u9189\u6700\u7F6A\u5C0A\u9075\u6628\u5DE6\u4F50\u67DE\u505A\u4F5C\u5750\u5EA7\"],\n[\"d840\",\"\u8C38\",8,\"\u8C42\u8C43\u8C44\u8C45\u8C48\u8C4A\u8C4B\u8C4D\",7,\"\u8C56\u8C57\u8C58\u8C59\u8C5B\",5,\"\u8C63\",6,\"\u8C6C\",6,\"\u8C74\u8C75\u8C76\u8C77\u8C7B\",6,\"\u8C83\u8C84\u8C86\u8C87\"],\n[\"d880\",\"\u8C88\u8C8B\u8C8D\",6,\"\u8C95\u8C96\u8C97\u8C99\",20,\"\u4E8D\u4E0C\u5140\u4E10\u5EFF\u5345\u4E15\u4E98\u4E1E\u9B32\u5B6C\u5669\u4E28\u79BA\u4E3F\u5315\u4E47\u592D\u723B\u536E\u6C10\u56DF\u80E4\u9997\u6BD3\u777E\u9F17\u4E36\u4E9F\u9F10\u4E5C\u4E69\u4E93\u8288\u5B5B\u556C\u560F\u4EC4\u538D\u539D\u53A3\u53A5\u53AE\u9765\u8D5D\u531A\u53F5\u5326\u532E\u533E\u8D5C\u5366\u5363\u5202\u5208\u520E\u522D\u5233\u523F\u5240\u524C\u525E\u5261\u525C\u84AF\u527D\u5282\u5281\u5290\u5293\u5182\u7F54\u4EBB\u4EC3\u4EC9\u4EC2\u4EE8\u4EE1\u4EEB\u4EDE\u4F1B\u4EF3\u4F22\u4F64\u4EF5\u4F25\u4F27\u4F09\u4F2B\u4F5E\u4F67\u6538\u4F5A\u4F5D\"],\n[\"d940\",\"\u8CAE\",62],\n[\"d980\",\"\u8CED\",32,\"\u4F5F\u4F57\u4F32\u4F3D\u4F76\u4F74\u4F91\u4F89\u4F83\u4F8F\u4F7E\u4F7B\u4FAA\u4F7C\u4FAC\u4F94\u4FE6\u4FE8\u4FEA\u4FC5\u4FDA\u4FE3\u4FDC\u4FD1\u4FDF\u4FF8\u5029\u504C\u4FF3\u502C\u500F\u502E\u502D\u4FFE\u501C\u500C\u5025\u5028\u507E\u5043\u5055\u5048\u504E\u506C\u507B\u50A5\u50A7\u50A9\u50BA\u50D6\u5106\u50ED\u50EC\u50E6\u50EE\u5107\u510B\u4EDD\u6C3D\u4F58\u4F65\u4FCE\u9FA0\u6C46\u7C74\u516E\u5DFD\u9EC9\u9998\u5181\u5914\u52F9\u530D\u8A07\u5310\u51EB\u5919\u5155\u4EA0\u5156\u4EB3\u886E\u88A4\u4EB5\u8114\u88D2\u7980\u5B34\u8803\u7FB8\u51AB\u51B1\u51BD\u51BC\"],\n[\"da40\",\"\u8D0E\",14,\"\u8D20\u8D51\u8D52\u8D57\u8D5F\u8D65\u8D68\u8D69\u8D6A\u8D6C\u8D6E\u8D6F\u8D71\u8D72\u8D78\",8,\"\u8D82\u8D83\u8D86\u8D87\u8D88\u8D89\u8D8C\",4,\"\u8D92\u8D93\u8D95\",9,\"\u8DA0\u8DA1\"],\n[\"da80\",\"\u8DA2\u8DA4\",12,\"\u8DB2\u8DB6\u8DB7\u8DB9\u8DBB\u8DBD\u8DC0\u8DC1\u8DC2\u8DC5\u8DC7\u8DC8\u8DC9\u8DCA\u8DCD\u8DD0\u8DD2\u8DD3\u8DD4\u51C7\u5196\u51A2\u51A5\u8BA0\u8BA6\u8BA7\u8BAA\u8BB4\u8BB5\u8BB7\u8BC2\u8BC3\u8BCB\u8BCF\u8BCE\u8BD2\u8BD3\u8BD4\u8BD6\u8BD8\u8BD9\u8BDC\u8BDF\u8BE0\u8BE4\u8BE8\u8BE9\u8BEE\u8BF0\u8BF3\u8BF6\u8BF9\u8BFC\u8BFF\u8C00\u8C02\u8C04\u8C07\u8C0C\u8C0F\u8C11\u8C12\u8C14\u8C15\u8C16\u8C19\u8C1B\u8C18\u8C1D\u8C1F\u8C20\u8C21\u8C25\u8C27\u8C2A\u8C2B\u8C2E\u8C2F\u8C32\u8C33\u8C35\u8C36\u5369\u537A\u961D\u9622\u9621\u9631\u962A\u963D\u963C\u9642\u9649\u9654\u965F\u9667\u966C\u9672\u9674\u9688\u968D\u9697\u96B0\u9097\u909B\u909D\u9099\u90AC\u90A1\u90B4\u90B3\u90B6\u90BA\"],\n[\"db40\",\"\u8DD5\u8DD8\u8DD9\u8DDC\u8DE0\u8DE1\u8DE2\u8DE5\u8DE6\u8DE7\u8DE9\u8DED\u8DEE\u8DF0\u8DF1\u8DF2\u8DF4\u8DF6\u8DFC\u8DFE\",6,\"\u8E06\u8E07\u8E08\u8E0B\u8E0D\u8E0E\u8E10\u8E11\u8E12\u8E13\u8E15\",7,\"\u8E20\u8E21\u8E24\",4,\"\u8E2B\u8E2D\u8E30\u8E32\u8E33\u8E34\u8E36\u8E37\u8E38\u8E3B\u8E3C\u8E3E\"],\n[\"db80\",\"\u8E3F\u8E43\u8E45\u8E46\u8E4C\",4,\"\u8E53\",5,\"\u8E5A\",11,\"\u8E67\u8E68\u8E6A\u8E6B\u8E6E\u8E71\u90B8\u90B0\u90CF\u90C5\u90BE\u90D0\u90C4\u90C7\u90D3\u90E6\u90E2\u90DC\u90D7\u90DB\u90EB\u90EF\u90FE\u9104\u9122\u911E\u9123\u9131\u912F\u9139\u9143\u9146\u520D\u5942\u52A2\u52AC\u52AD\u52BE\u54FF\u52D0\u52D6\u52F0\u53DF\u71EE\u77CD\u5EF4\u51F5\u51FC\u9B2F\u53B6\u5F01\u755A\u5DEF\u574C\u57A9\u57A1\u587E\u58BC\u58C5\u58D1\u5729\u572C\u572A\u5733\u5739\u572E\u572F\u575C\u573B\u5742\u5769\u5785\u576B\u5786\u577C\u577B\u5768\u576D\u5776\u5773\u57AD\u57A4\u578C\u57B2\u57CF\u57A7\u57B4\u5793\u57A0\u57D5\u57D8\u57DA\u57D9\u57D2\u57B8\u57F4\u57EF\u57F8\u57E4\u57DD\"],\n[\"dc40\",\"\u8E73\u8E75\u8E77\",4,\"\u8E7D\u8E7E\u8E80\u8E82\u8E83\u8E84\u8E86\u8E88\",6,\"\u8E91\u8E92\u8E93\u8E95\",6,\"\u8E9D\u8E9F\",11,\"\u8EAD\u8EAE\u8EB0\u8EB1\u8EB3\",6,\"\u8EBB\",7],\n[\"dc80\",\"\u8EC3\",10,\"\u8ECF\",21,\"\u580B\u580D\u57FD\u57ED\u5800\u581E\u5819\u5844\u5820\u5865\u586C\u5881\u5889\u589A\u5880\u99A8\u9F19\u61FF\u8279\u827D\u827F\u828F\u828A\u82A8\u8284\u828E\u8291\u8297\u8299\u82AB\u82B8\u82BE\u82B0\u82C8\u82CA\u82E3\u8298\u82B7\u82AE\u82CB\u82CC\u82C1\u82A9\u82B4\u82A1\u82AA\u829F\u82C4\u82CE\u82A4\u82E1\u8309\u82F7\u82E4\u830F\u8307\u82DC\u82F4\u82D2\u82D8\u830C\u82FB\u82D3\u8311\u831A\u8306\u8314\u8315\u82E0\u82D5\u831C\u8351\u835B\u835C\u8308\u8392\u833C\u8334\u8331\u839B\u835E\u832F\u834F\u8347\u8343\u835F\u8340\u8317\u8360\u832D\u833A\u8333\u8366\u8365\"],\n[\"dd40\",\"\u8EE5\",62],\n[\"dd80\",\"\u8F24\",32,\"\u8368\u831B\u8369\u836C\u836A\u836D\u836E\u83B0\u8378\u83B3\u83B4\u83A0\u83AA\u8393\u839C\u8385\u837C\u83B6\u83A9\u837D\u83B8\u837B\u8398\u839E\u83A8\u83BA\u83BC\u83C1\u8401\u83E5\u83D8\u5807\u8418\u840B\u83DD\u83FD\u83D6\u841C\u8438\u8411\u8406\u83D4\u83DF\u840F\u8403\u83F8\u83F9\u83EA\u83C5\u83C0\u8426\u83F0\u83E1\u845C\u8451\u845A\u8459\u8473\u8487\u8488\u847A\u8489\u8478\u843C\u8446\u8469\u8476\u848C\u848E\u8431\u846D\u84C1\u84CD\u84D0\u84E6\u84BD\u84D3\u84CA\u84BF\u84BA\u84E0\u84A1\u84B9\u84B4\u8497\u84E5\u84E3\u850C\u750D\u8538\u84F0\u8539\u851F\u853A\"],\n[\"de40\",\"\u8F45\",32,\"\u8F6A\u8F80\u8F8C\u8F92\u8F9D\u8FA0\u8FA1\u8FA2\u8FA4\u8FA5\u8FA6\u8FA7\u8FAA\u8FAC\u8FAD\u8FAE\u8FAF\u8FB2\u8FB3\u8FB4\u8FB5\u8FB7\u8FB8\u8FBA\u8FBB\u8FBC\u8FBF\u8FC0\u8FC3\u8FC6\"],\n[\"de80\",\"\u8FC9\",4,\"\u8FCF\u8FD2\u8FD6\u8FD7\u8FDA\u8FE0\u8FE1\u8FE3\u8FE7\u8FEC\u8FEF\u8FF1\u8FF2\u8FF4\u8FF5\u8FF6\u8FFA\u8FFB\u8FFC\u8FFE\u8FFF\u9007\u9008\u900C\u900E\u9013\u9015\u9018\u8556\u853B\u84FF\u84FC\u8559\u8548\u8568\u8564\u855E\u857A\u77A2\u8543\u8572\u857B\u85A4\u85A8\u8587\u858F\u8579\u85AE\u859C\u8585\u85B9\u85B7\u85B0\u85D3\u85C1\u85DC\u85FF\u8627\u8605\u8629\u8616\u863C\u5EFE\u5F08\u593C\u5941\u8037\u5955\u595A\u5958\u530F\u5C22\u5C25\u5C2C\u5C34\u624C\u626A\u629F\u62BB\u62CA\u62DA\u62D7\u62EE\u6322\u62F6\u6339\u634B\u6343\u63AD\u63F6\u6371\u637A\u638E\u63B4\u636D\u63AC\u638A\u6369\u63AE\u63BC\u63F2\u63F8\u63E0\u63FF\u63C4\u63DE\u63CE\u6452\u63C6\u63BE\u6445\u6441\u640B\u641B\u6420\u640C\u6426\u6421\u645E\u6484\u646D\u6496\"],\n[\"df40\",\"\u9019\u901C\u9023\u9024\u9025\u9027\",5,\"\u9030\",4,\"\u9037\u9039\u903A\u903D\u903F\u9040\u9043\u9045\u9046\u9048\",4,\"\u904E\u9054\u9055\u9056\u9059\u905A\u905C\",5,\"\u9064\u9066\u9067\u9069\u906A\u906B\u906C\u906F\",4,\"\u9076\",6,\"\u907E\u9081\"],\n[\"df80\",\"\u9084\u9085\u9086\u9087\u9089\u908A\u908C\",4,\"\u9092\u9094\u9096\u9098\u909A\u909C\u909E\u909F\u90A0\u90A4\u90A5\u90A7\u90A8\u90A9\u90AB\u90AD\u90B2\u90B7\u90BC\u90BD\u90BF\u90C0\u647A\u64B7\u64B8\u6499\u64BA\u64C0\u64D0\u64D7\u64E4\u64E2\u6509\u6525\u652E\u5F0B\u5FD2\u7519\u5F11\u535F\u53F1\u53FD\u53E9\u53E8\u53FB\u5412\u5416\u5406\u544B\u5452\u5453\u5454\u5456\u5443\u5421\u5457\u5459\u5423\u5432\u5482\u5494\u5477\u5471\u5464\u549A\u549B\u5484\u5476\u5466\u549D\u54D0\u54AD\u54C2\u54B4\u54D2\u54A7\u54A6\u54D3\u54D4\u5472\u54A3\u54D5\u54BB\u54BF\u54CC\u54D9\u54DA\u54DC\u54A9\u54AA\u54A4\u54DD\u54CF\u54DE\u551B\u54E7\u5520\u54FD\u5514\u54F3\u5522\u5523\u550F\u5511\u5527\u552A\u5567\u558F\u55B5\u5549\u556D\u5541\u5555\u553F\u5550\u553C\"],\n[\"e040\",\"\u90C2\u90C3\u90C6\u90C8\u90C9\u90CB\u90CC\u90CD\u90D2\u90D4\u90D5\u90D6\u90D8\u90D9\u90DA\u90DE\u90DF\u90E0\u90E3\u90E4\u90E5\u90E9\u90EA\u90EC\u90EE\u90F0\u90F1\u90F2\u90F3\u90F5\u90F6\u90F7\u90F9\u90FA\u90FB\u90FC\u90FF\u9100\u9101\u9103\u9105\",19,\"\u911A\u911B\u911C\"],\n[\"e080\",\"\u911D\u911F\u9120\u9121\u9124\",10,\"\u9130\u9132\",6,\"\u913A\",8,\"\u9144\u5537\u5556\u5575\u5576\u5577\u5533\u5530\u555C\u558B\u55D2\u5583\u55B1\u55B9\u5588\u5581\u559F\u557E\u55D6\u5591\u557B\u55DF\u55BD\u55BE\u5594\u5599\u55EA\u55F7\u55C9\u561F\u55D1\u55EB\u55EC\u55D4\u55E6\u55DD\u55C4\u55EF\u55E5\u55F2\u55F3\u55CC\u55CD\u55E8\u55F5\u55E4\u8F94\u561E\u5608\u560C\u5601\u5624\u5623\u55FE\u5600\u5627\u562D\u5658\u5639\u5657\u562C\u564D\u5662\u5659\u565C\u564C\u5654\u5686\u5664\u5671\u566B\u567B\u567C\u5685\u5693\u56AF\u56D4\u56D7\u56DD\u56E1\u56F5\u56EB\u56F9\u56FF\u5704\u570A\u5709\u571C\u5E0F\u5E19\u5E14\u5E11\u5E31\u5E3B\u5E3C\"],\n[\"e140\",\"\u9145\u9147\u9148\u9151\u9153\u9154\u9155\u9156\u9158\u9159\u915B\u915C\u915F\u9160\u9166\u9167\u9168\u916B\u916D\u9173\u917A\u917B\u917C\u9180\",4,\"\u9186\u9188\u918A\u918E\u918F\u9193\",6,\"\u919C\",5,\"\u91A4\",5,\"\u91AB\u91AC\u91B0\u91B1\u91B2\u91B3\u91B6\u91B7\u91B8\u91B9\u91BB\"],\n[\"e180\",\"\u91BC\",10,\"\u91C8\u91CB\u91D0\u91D2\",9,\"\u91DD\",8,\"\u5E37\u5E44\u5E54\u5E5B\u5E5E\u5E61\u5C8C\u5C7A\u5C8D\u5C90\u5C96\u5C88\u5C98\u5C99\u5C91\u5C9A\u5C9C\u5CB5\u5CA2\u5CBD\u5CAC\u5CAB\u5CB1\u5CA3\u5CC1\u5CB7\u5CC4\u5CD2\u5CE4\u5CCB\u5CE5\u5D02\u5D03\u5D27\u5D26\u5D2E\u5D24\u5D1E\u5D06\u5D1B\u5D58\u5D3E\u5D34\u5D3D\u5D6C\u5D5B\u5D6F\u5D5D\u5D6B\u5D4B\u5D4A\u5D69\u5D74\u5D82\u5D99\u5D9D\u8C73\u5DB7\u5DC5\u5F73\u5F77\u5F82\u5F87\u5F89\u5F8C\u5F95\u5F99\u5F9C\u5FA8\u5FAD\u5FB5\u5FBC\u8862\u5F61\u72AD\u72B0\u72B4\u72B7\u72B8\u72C3\u72C1\u72CE\u72CD\u72D2\u72E8\u72EF\u72E9\u72F2\u72F4\u72F7\u7301\u72F3\u7303\u72FA\"],\n[\"e240\",\"\u91E6\",62],\n[\"e280\",\"\u9225\",32,\"\u72FB\u7317\u7313\u7321\u730A\u731E\u731D\u7315\u7322\u7339\u7325\u732C\u7338\u7331\u7350\u734D\u7357\u7360\u736C\u736F\u737E\u821B\u5925\u98E7\u5924\u5902\u9963\u9967\",5,\"\u9974\u9977\u997D\u9980\u9984\u9987\u998A\u998D\u9990\u9991\u9993\u9994\u9995\u5E80\u5E91\u5E8B\u5E96\u5EA5\u5EA0\u5EB9\u5EB5\u5EBE\u5EB3\u8D53\u5ED2\u5ED1\u5EDB\u5EE8\u5EEA\u81BA\u5FC4\u5FC9\u5FD6\u5FCF\u6003\u5FEE\u6004\u5FE1\u5FE4\u5FFE\u6005\u6006\u5FEA\u5FED\u5FF8\u6019\u6035\u6026\u601B\u600F\u600D\u6029\u602B\u600A\u603F\u6021\u6078\u6079\u607B\u607A\u6042\"],\n[\"e340\",\"\u9246\",45,\"\u9275\",16],\n[\"e380\",\"\u9286\",7,\"\u928F\",24,\"\u606A\u607D\u6096\u609A\u60AD\u609D\u6083\u6092\u608C\u609B\u60EC\u60BB\u60B1\u60DD\u60D8\u60C6\u60DA\u60B4\u6120\u6126\u6115\u6123\u60F4\u6100\u610E\u612B\u614A\u6175\u61AC\u6194\u61A7\u61B7\u61D4\u61F5\u5FDD\u96B3\u95E9\u95EB\u95F1\u95F3\u95F5\u95F6\u95FC\u95FE\u9603\u9604\u9606\u9608\u960A\u960B\u960C\u960D\u960F\u9612\u9615\u9616\u9617\u9619\u961A\u4E2C\u723F\u6215\u6C35\u6C54\u6C5C\u6C4A\u6CA3\u6C85\u6C90\u6C94\u6C8C\u6C68\u6C69\u6C74\u6C76\u6C86\u6CA9\u6CD0\u6CD4\u6CAD\u6CF7\u6CF8\u6CF1\u6CD7\u6CB2\u6CE0\u6CD6\u6CFA\u6CEB\u6CEE\u6CB1\u6CD3\u6CEF\u6CFE\"],\n[\"e440\",\"\u92A8\",5,\"\u92AF\",24,\"\u92C9\",31],\n[\"e480\",\"\u92E9\",32,\"\u6D39\u6D27\u6D0C\u6D43\u6D48\u6D07\u6D04\u6D19\u6D0E\u6D2B\u6D4D\u6D2E\u6D35\u6D1A\u6D4F\u6D52\u6D54\u6D33\u6D91\u6D6F\u6D9E\u6DA0\u6D5E\u6D93\u6D94\u6D5C\u6D60\u6D7C\u6D63\u6E1A\u6DC7\u6DC5\u6DDE\u6E0E\u6DBF\u6DE0\u6E11\u6DE6\u6DDD\u6DD9\u6E16\u6DAB\u6E0C\u6DAE\u6E2B\u6E6E\u6E4E\u6E6B\u6EB2\u6E5F\u6E86\u6E53\u6E54\u6E32\u6E25\u6E44\u6EDF\u6EB1\u6E98\u6EE0\u6F2D\u6EE2\u6EA5\u6EA7\u6EBD\u6EBB\u6EB7\u6ED7\u6EB4\u6ECF\u6E8F\u6EC2\u6E9F\u6F62\u6F46\u6F47\u6F24\u6F15\u6EF9\u6F2F\u6F36\u6F4B\u6F74\u6F2A\u6F09\u6F29\u6F89\u6F8D\u6F8C\u6F78\u6F72\u6F7C\u6F7A\u6FD1\"],\n[\"e540\",\"\u930A\",51,\"\u933F\",10],\n[\"e580\",\"\u934A\",31,\"\u936B\u6FC9\u6FA7\u6FB9\u6FB6\u6FC2\u6FE1\u6FEE\u6FDE\u6FE0\u6FEF\u701A\u7023\u701B\u7039\u7035\u704F\u705E\u5B80\u5B84\u5B95\u5B93\u5BA5\u5BB8\u752F\u9A9E\u6434\u5BE4\u5BEE\u8930\u5BF0\u8E47\u8B07\u8FB6\u8FD3\u8FD5\u8FE5\u8FEE\u8FE4\u8FE9\u8FE6\u8FF3\u8FE8\u9005\u9004\u900B\u9026\u9011\u900D\u9016\u9021\u9035\u9036\u902D\u902F\u9044\u9051\u9052\u9050\u9068\u9058\u9062\u905B\u66B9\u9074\u907D\u9082\u9088\u9083\u908B\u5F50\u5F57\u5F56\u5F58\u5C3B\u54AB\u5C50\u5C59\u5B71\u5C63\u5C66\u7FBC\u5F2A\u5F29\u5F2D\u8274\u5F3C\u9B3B\u5C6E\u5981\u5983\u598D\u59A9\u59AA\u59A3\"],\n[\"e640\",\"\u936C\",34,\"\u9390\",27],\n[\"e680\",\"\u93AC\",29,\"\u93CB\u93CC\u93CD\u5997\u59CA\u59AB\u599E\u59A4\u59D2\u59B2\u59AF\u59D7\u59BE\u5A05\u5A06\u59DD\u5A08\u59E3\u59D8\u59F9\u5A0C\u5A09\u5A32\u5A34\u5A11\u5A23\u5A13\u5A40\u5A67\u5A4A\u5A55\u5A3C\u5A62\u5A75\u80EC\u5AAA\u5A9B\u5A77\u5A7A\u5ABE\u5AEB\u5AB2\u5AD2\u5AD4\u5AB8\u5AE0\u5AE3\u5AF1\u5AD6\u5AE6\u5AD8\u5ADC\u5B09\u5B17\u5B16\u5B32\u5B37\u5B40\u5C15\u5C1C\u5B5A\u5B65\u5B73\u5B51\u5B53\u5B62\u9A75\u9A77\u9A78\u9A7A\u9A7F\u9A7D\u9A80\u9A81\u9A85\u9A88\u9A8A\u9A90\u9A92\u9A93\u9A96\u9A98\u9A9B\u9A9C\u9A9D\u9A9F\u9AA0\u9AA2\u9AA3\u9AA5\u9AA7\u7E9F\u7EA1\u7EA3\u7EA5\u7EA8\u7EA9\"],\n[\"e740\",\"\u93CE\",7,\"\u93D7\",54],\n[\"e780\",\"\u940E\",32,\"\u7EAD\u7EB0\u7EBE\u7EC0\u7EC1\u7EC2\u7EC9\u7ECB\u7ECC\u7ED0\u7ED4\u7ED7\u7EDB\u7EE0\u7EE1\u7EE8\u7EEB\u7EEE\u7EEF\u7EF1\u7EF2\u7F0D\u7EF6\u7EFA\u7EFB\u7EFE\u7F01\u7F02\u7F03\u7F07\u7F08\u7F0B\u7F0C\u7F0F\u7F11\u7F12\u7F17\u7F19\u7F1C\u7F1B\u7F1F\u7F21\",6,\"\u7F2A\u7F2B\u7F2C\u7F2D\u7F2F\",4,\"\u7F35\u5E7A\u757F\u5DDB\u753E\u9095\u738E\u7391\u73AE\u73A2\u739F\u73CF\u73C2\u73D1\u73B7\u73B3\u73C0\u73C9\u73C8\u73E5\u73D9\u987C\u740A\u73E9\u73E7\u73DE\u73BA\u73F2\u740F\u742A\u745B\u7426\u7425\u7428\u7430\u742E\u742C\"],\n[\"e840\",\"\u942F\",14,\"\u943F\",43,\"\u946C\u946D\u946E\u946F\"],\n[\"e880\",\"\u9470\",20,\"\u9491\u9496\u9498\u94C7\u94CF\u94D3\u94D4\u94DA\u94E6\u94FB\u951C\u9520\u741B\u741A\u7441\u745C\u7457\u7455\u7459\u7477\u746D\u747E\u749C\u748E\u7480\u7481\u7487\u748B\u749E\u74A8\u74A9\u7490\u74A7\u74D2\u74BA\u97EA\u97EB\u97EC\u674C\u6753\u675E\u6748\u6769\u67A5\u6787\u676A\u6773\u6798\u67A7\u6775\u67A8\u679E\u67AD\u678B\u6777\u677C\u67F0\u6809\u67D8\u680A\u67E9\u67B0\u680C\u67D9\u67B5\u67DA\u67B3\u67DD\u6800\u67C3\u67B8\u67E2\u680E\u67C1\u67FD\u6832\u6833\u6860\u6861\u684E\u6862\u6844\u6864\u6883\u681D\u6855\u6866\u6841\u6867\u6840\u683E\u684A\u6849\u6829\u68B5\u688F\u6874\u6877\u6893\u686B\u68C2\u696E\u68FC\u691F\u6920\u68F9\"],\n[\"e940\",\"\u9527\u9533\u953D\u9543\u9548\u954B\u9555\u955A\u9560\u956E\u9574\u9575\u9577\",7,\"\u9580\",42],\n[\"e980\",\"\u95AB\",32,\"\u6924\u68F0\u690B\u6901\u6957\u68E3\u6910\u6971\u6939\u6960\u6942\u695D\u6984\u696B\u6980\u6998\u6978\u6934\u69CC\u6987\u6988\u69CE\u6989\u6966\u6963\u6979\u699B\u69A7\u69BB\u69AB\u69AD\u69D4\u69B1\u69C1\u69CA\u69DF\u6995\u69E0\u698D\u69FF\u6A2F\u69ED\u6A17\u6A18\u6A65\u69F2\u6A44\u6A3E\u6AA0\u6A50\u6A5B\u6A35\u6A8E\u6A79\u6A3D\u6A28\u6A58\u6A7C\u6A91\u6A90\u6AA9\u6A97\u6AAB\u7337\u7352\u6B81\u6B82\u6B87\u6B84\u6B92\u6B93\u6B8D\u6B9A\u6B9B\u6BA1\u6BAA\u8F6B\u8F6D\u8F71\u8F72\u8F73\u8F75\u8F76\u8F78\u8F77\u8F79\u8F7A\u8F7C\u8F7E\u8F81\u8F82\u8F84\u8F87\u8F8B\"],\n[\"ea40\",\"\u95CC\",27,\"\u95EC\u95FF\u9607\u9613\u9618\u961B\u961E\u9620\u9623\",6,\"\u962B\u962C\u962D\u962F\u9630\u9637\u9638\u9639\u963A\u963E\u9641\u9643\u964A\u964E\u964F\u9651\u9652\u9653\u9656\u9657\"],\n[\"ea80\",\"\u9658\u9659\u965A\u965C\u965D\u965E\u9660\u9663\u9665\u9666\u966B\u966D\",4,\"\u9673\u9678\",12,\"\u9687\u9689\u968A\u8F8D\u8F8E\u8F8F\u8F98\u8F9A\u8ECE\u620B\u6217\u621B\u621F\u6222\u6221\u6225\u6224\u622C\u81E7\u74EF\u74F4\u74FF\u750F\u7511\u7513\u6534\u65EE\u65EF\u65F0\u660A\u6619\u6772\u6603\u6615\u6600\u7085\u66F7\u661D\u6634\u6631\u6636\u6635\u8006\u665F\u6654\u6641\u664F\u6656\u6661\u6657\u6677\u6684\u668C\u66A7\u669D\u66BE\u66DB\u66DC\u66E6\u66E9\u8D32\u8D33\u8D36\u8D3B\u8D3D\u8D40\u8D45\u8D46\u8D48\u8D49\u8D47\u8D4D\u8D55\u8D59\u89C7\u89CA\u89CB\u89CC\u89CE\u89CF\u89D0\u89D1\u726E\u729F\u725D\u7266\u726F\u727E\u727F\u7284\u728B\u728D\u728F\u7292\u6308\u6332\u63B0\"],\n[\"eb40\",\"\u968C\u968E\u9691\u9692\u9693\u9695\u9696\u969A\u969B\u969D\",9,\"\u96A8\",7,\"\u96B1\u96B2\u96B4\u96B5\u96B7\u96B8\u96BA\u96BB\u96BF\u96C2\u96C3\u96C8\u96CA\u96CB\u96D0\u96D1\u96D3\u96D4\u96D6\",9,\"\u96E1\",6,\"\u96EB\"],\n[\"eb80\",\"\u96EC\u96ED\u96EE\u96F0\u96F1\u96F2\u96F4\u96F5\u96F8\u96FA\u96FB\u96FC\u96FD\u96FF\u9702\u9703\u9705\u970A\u970B\u970C\u9710\u9711\u9712\u9714\u9715\u9717\",4,\"\u971D\u971F\u9720\u643F\u64D8\u8004\u6BEA\u6BF3\u6BFD\u6BF5\u6BF9\u6C05\u6C07\u6C06\u6C0D\u6C15\u6C18\u6C19\u6C1A\u6C21\u6C29\u6C24\u6C2A\u6C32\u6535\u6555\u656B\u724D\u7252\u7256\u7230\u8662\u5216\u809F\u809C\u8093\u80BC\u670A\u80BD\u80B1\u80AB\u80AD\u80B4\u80B7\u80E7\u80E8\u80E9\u80EA\u80DB\u80C2\u80C4\u80D9\u80CD\u80D7\u6710\u80DD\u80EB\u80F1\u80F4\u80ED\u810D\u810E\u80F2\u80FC\u6715\u8112\u8C5A\u8136\u811E\u812C\u8118\u8132\u8148\u814C\u8153\u8174\u8159\u815A\u8171\u8160\u8169\u817C\u817D\u816D\u8167\u584D\u5AB5\u8188\u8182\u8191\u6ED5\u81A3\u81AA\u81CC\u6726\u81CA\u81BB\"],\n[\"ec40\",\"\u9721\",8,\"\u972B\u972C\u972E\u972F\u9731\u9733\",4,\"\u973A\u973B\u973C\u973D\u973F\",18,\"\u9754\u9755\u9757\u9758\u975A\u975C\u975D\u975F\u9763\u9764\u9766\u9767\u9768\u976A\",7],\n[\"ec80\",\"\u9772\u9775\u9777\",4,\"\u977D\",7,\"\u9786\",4,\"\u978C\u978E\u978F\u9790\u9793\u9795\u9796\u9797\u9799\",4,\"\u81C1\u81A6\u6B24\u6B37\u6B39\u6B43\u6B46\u6B59\u98D1\u98D2\u98D3\u98D5\u98D9\u98DA\u6BB3\u5F40\u6BC2\u89F3\u6590\u9F51\u6593\u65BC\u65C6\u65C4\u65C3\u65CC\u65CE\u65D2\u65D6\u7080\u709C\u7096\u709D\u70BB\u70C0\u70B7\u70AB\u70B1\u70E8\u70CA\u7110\u7113\u7116\u712F\u7131\u7173\u715C\u7168\u7145\u7172\u714A\u7178\u717A\u7198\u71B3\u71B5\u71A8\u71A0\u71E0\u71D4\u71E7\u71F9\u721D\u7228\u706C\u7118\u7166\u71B9\u623E\u623D\u6243\u6248\u6249\u793B\u7940\u7946\u7949\u795B\u795C\u7953\u795A\u7962\u7957\u7960\u796F\u7967\u797A\u7985\u798A\u799A\u79A7\u79B3\u5FD1\u5FD0\"],\n[\"ed40\",\"\u979E\u979F\u97A1\u97A2\u97A4\",6,\"\u97AC\u97AE\u97B0\u97B1\u97B3\u97B5\",46],\n[\"ed80\",\"\u97E4\u97E5\u97E8\u97EE\",4,\"\u97F4\u97F7\",23,\"\u603C\u605D\u605A\u6067\u6041\u6059\u6063\u60AB\u6106\u610D\u615D\u61A9\u619D\u61CB\u61D1\u6206\u8080\u807F\u6C93\u6CF6\u6DFC\u77F6\u77F8\u7800\u7809\u7817\u7818\u7811\u65AB\u782D\u781C\u781D\u7839\u783A\u783B\u781F\u783C\u7825\u782C\u7823\u7829\u784E\u786D\u7856\u7857\u7826\u7850\u7847\u784C\u786A\u789B\u7893\u789A\u7887\u789C\u78A1\u78A3\u78B2\u78B9\u78A5\u78D4\u78D9\u78C9\u78EC\u78F2\u7905\u78F4\u7913\u7924\u791E\u7934\u9F9B\u9EF9\u9EFB\u9EFC\u76F1\u7704\u770D\u76F9\u7707\u7708\u771A\u7722\u7719\u772D\u7726\u7735\u7738\u7750\u7751\u7747\u7743\u775A\u7768\"],\n[\"ee40\",\"\u980F\",62],\n[\"ee80\",\"\u984E\",32,\"\u7762\u7765\u777F\u778D\u777D\u7780\u778C\u7791\u779F\u77A0\u77B0\u77B5\u77BD\u753A\u7540\u754E\u754B\u7548\u755B\u7572\u7579\u7583\u7F58\u7F61\u7F5F\u8A48\u7F68\u7F74\u7F71\u7F79\u7F81\u7F7E\u76CD\u76E5\u8832\u9485\u9486\u9487\u948B\u948A\u948C\u948D\u948F\u9490\u9494\u9497\u9495\u949A\u949B\u949C\u94A3\u94A4\u94AB\u94AA\u94AD\u94AC\u94AF\u94B0\u94B2\u94B4\u94B6\",4,\"\u94BC\u94BD\u94BF\u94C4\u94C8\",6,\"\u94D0\u94D1\u94D2\u94D5\u94D6\u94D7\u94D9\u94D8\u94DB\u94DE\u94DF\u94E0\u94E2\u94E4\u94E5\u94E7\u94E8\u94EA\"],\n[\"ef40\",\"\u986F\",5,\"\u988B\u988E\u9892\u9895\u9899\u98A3\u98A8\",37,\"\u98CF\u98D0\u98D4\u98D6\u98D7\u98DB\u98DC\u98DD\u98E0\",4],\n[\"ef80\",\"\u98E5\u98E6\u98E9\",30,\"\u94E9\u94EB\u94EE\u94EF\u94F3\u94F4\u94F5\u94F7\u94F9\u94FC\u94FD\u94FF\u9503\u9502\u9506\u9507\u9509\u950A\u950D\u950E\u950F\u9512\",4,\"\u9518\u951B\u951D\u951E\u951F\u9522\u952A\u952B\u9529\u952C\u9531\u9532\u9534\u9536\u9537\u9538\u953C\u953E\u953F\u9542\u9535\u9544\u9545\u9546\u9549\u954C\u954E\u954F\u9552\u9553\u9554\u9556\u9557\u9558\u9559\u955B\u955E\u955F\u955D\u9561\u9562\u9564\",8,\"\u956F\u9571\u9572\u9573\u953A\u77E7\u77EC\u96C9\u79D5\u79ED\u79E3\u79EB\u7A06\u5D47\u7A03\u7A02\u7A1E\u7A14\"],\n[\"f040\",\"\u9908\",4,\"\u990E\u990F\u9911\",28,\"\u992F\",26],\n[\"f080\",\"\u994A\",9,\"\u9956\",12,\"\u9964\u9966\u9973\u9978\u9979\u997B\u997E\u9982\u9983\u9989\u7A39\u7A37\u7A51\u9ECF\u99A5\u7A70\u7688\u768E\u7693\u7699\u76A4\u74DE\u74E0\u752C\u9E20\u9E22\u9E28\",4,\"\u9E32\u9E31\u9E36\u9E38\u9E37\u9E39\u9E3A\u9E3E\u9E41\u9E42\u9E44\u9E46\u9E47\u9E48\u9E49\u9E4B\u9E4C\u9E4E\u9E51\u9E55\u9E57\u9E5A\u9E5B\u9E5C\u9E5E\u9E63\u9E66\",6,\"\u9E71\u9E6D\u9E73\u7592\u7594\u7596\u75A0\u759D\u75AC\u75A3\u75B3\u75B4\u75B8\u75C4\u75B1\u75B0\u75C3\u75C2\u75D6\u75CD\u75E3\u75E8\u75E6\u75E4\u75EB\u75E7\u7603\u75F1\u75FC\u75FF\u7610\u7600\u7605\u760C\u7617\u760A\u7625\u7618\u7615\u7619\"],\n[\"f140\",\"\u998C\u998E\u999A\",10,\"\u99A6\u99A7\u99A9\",47],\n[\"f180\",\"\u99D9\",32,\"\u761B\u763C\u7622\u7620\u7640\u762D\u7630\u763F\u7635\u7643\u763E\u7633\u764D\u765E\u7654\u765C\u7656\u766B\u766F\u7FCA\u7AE6\u7A78\u7A79\u7A80\u7A86\u7A88\u7A95\u7AA6\u7AA0\u7AAC\u7AA8\u7AAD\u7AB3\u8864\u8869\u8872\u887D\u887F\u8882\u88A2\u88C6\u88B7\u88BC\u88C9\u88E2\u88CE\u88E3\u88E5\u88F1\u891A\u88FC\u88E8\u88FE\u88F0\u8921\u8919\u8913\u891B\u890A\u8934\u892B\u8936\u8941\u8966\u897B\u758B\u80E5\u76B2\u76B4\u77DC\u8012\u8014\u8016\u801C\u8020\u8022\u8025\u8026\u8027\u8029\u8028\u8031\u800B\u8035\u8043\u8046\u804D\u8052\u8069\u8071\u8983\u9878\u9880\u9883\"],\n[\"f240\",\"\u99FA\",62],\n[\"f280\",\"\u9A39\",32,\"\u9889\u988C\u988D\u988F\u9894\u989A\u989B\u989E\u989F\u98A1\u98A2\u98A5\u98A6\u864D\u8654\u866C\u866E\u867F\u867A\u867C\u867B\u86A8\u868D\u868B\u86AC\u869D\u86A7\u86A3\u86AA\u8693\u86A9\u86B6\u86C4\u86B5\u86CE\u86B0\u86BA\u86B1\u86AF\u86C9\u86CF\u86B4\u86E9\u86F1\u86F2\u86ED\u86F3\u86D0\u8713\u86DE\u86F4\u86DF\u86D8\u86D1\u8703\u8707\u86F8\u8708\u870A\u870D\u8709\u8723\u873B\u871E\u8725\u872E\u871A\u873E\u8748\u8734\u8731\u8729\u8737\u873F\u8782\u8722\u877D\u877E\u877B\u8760\u8770\u874C\u876E\u878B\u8753\u8763\u877C\u8764\u8759\u8765\u8793\u87AF\u87A8\u87D2\"],\n[\"f340\",\"\u9A5A\",17,\"\u9A72\u9A83\u9A89\u9A8D\u9A8E\u9A94\u9A95\u9A99\u9AA6\u9AA9\",6,\"\u9AB2\u9AB3\u9AB4\u9AB5\u9AB9\u9ABB\u9ABD\u9ABE\u9ABF\u9AC3\u9AC4\u9AC6\",4,\"\u9ACD\u9ACE\u9ACF\u9AD0\u9AD2\u9AD4\u9AD5\u9AD6\u9AD7\u9AD9\u9ADA\u9ADB\u9ADC\"],\n[\"f380\",\"\u9ADD\u9ADE\u9AE0\u9AE2\u9AE3\u9AE4\u9AE5\u9AE7\u9AE8\u9AE9\u9AEA\u9AEC\u9AEE\u9AF0\",8,\"\u9AFA\u9AFC\",6,\"\u9B04\u9B05\u9B06\u87C6\u8788\u8785\u87AD\u8797\u8783\u87AB\u87E5\u87AC\u87B5\u87B3\u87CB\u87D3\u87BD\u87D1\u87C0\u87CA\u87DB\u87EA\u87E0\u87EE\u8816\u8813\u87FE\u880A\u881B\u8821\u8839\u883C\u7F36\u7F42\u7F44\u7F45\u8210\u7AFA\u7AFD\u7B08\u7B03\u7B04\u7B15\u7B0A\u7B2B\u7B0F\u7B47\u7B38\u7B2A\u7B19\u7B2E\u7B31\u7B20\u7B25\u7B24\u7B33\u7B3E\u7B1E\u7B58\u7B5A\u7B45\u7B75\u7B4C\u7B5D\u7B60\u7B6E\u7B7B\u7B62\u7B72\u7B71\u7B90\u7BA6\u7BA7\u7BB8\u7BAC\u7B9D\u7BA8\u7B85\u7BAA\u7B9C\u7BA2\u7BAB\u7BB4\u7BD1\u7BC1\u7BCC\u7BDD\u7BDA\u7BE5\u7BE6\u7BEA\u7C0C\u7BFE\u7BFC\u7C0F\u7C16\u7C0B\"],\n[\"f440\",\"\u9B07\u9B09\",5,\"\u9B10\u9B11\u9B12\u9B14\",10,\"\u9B20\u9B21\u9B22\u9B24\",10,\"\u9B30\u9B31\u9B33\",7,\"\u9B3D\u9B3E\u9B3F\u9B40\u9B46\u9B4A\u9B4B\u9B4C\u9B4E\u9B50\u9B52\u9B53\u9B55\",5],\n[\"f480\",\"\u9B5B\",32,\"\u7C1F\u7C2A\u7C26\u7C38\u7C41\u7C40\u81FE\u8201\u8202\u8204\u81EC\u8844\u8221\u8222\u8223\u822D\u822F\u8228\u822B\u8238\u823B\u8233\u8234\u823E\u8244\u8249\u824B\u824F\u825A\u825F\u8268\u887E\u8885\u8888\u88D8\u88DF\u895E\u7F9D\u7F9F\u7FA7\u7FAF\u7FB0\u7FB2\u7C7C\u6549\u7C91\u7C9D\u7C9C\u7C9E\u7CA2\u7CB2\u7CBC\u7CBD\u7CC1\u7CC7\u7CCC\u7CCD\u7CC8\u7CC5\u7CD7\u7CE8\u826E\u66A8\u7FBF\u7FCE\u7FD5\u7FE5\u7FE1\u7FE6\u7FE9\u7FEE\u7FF3\u7CF8\u7D77\u7DA6\u7DAE\u7E47\u7E9B\u9EB8\u9EB4\u8D73\u8D84\u8D94\u8D91\u8DB1\u8D67\u8D6D\u8C47\u8C49\u914A\u9150\u914E\u914F\u9164\"],\n[\"f540\",\"\u9B7C\",62],\n[\"f580\",\"\u9BBB\",32,\"\u9162\u9161\u9170\u9169\u916F\u917D\u917E\u9172\u9174\u9179\u918C\u9185\u9190\u918D\u9191\u91A2\u91A3\u91AA\u91AD\u91AE\u91AF\u91B5\u91B4\u91BA\u8C55\u9E7E\u8DB8\u8DEB\u8E05\u8E59\u8E69\u8DB5\u8DBF\u8DBC\u8DBA\u8DC4\u8DD6\u8DD7\u8DDA\u8DDE\u8DCE\u8DCF\u8DDB\u8DC6\u8DEC\u8DF7\u8DF8\u8DE3\u8DF9\u8DFB\u8DE4\u8E09\u8DFD\u8E14\u8E1D\u8E1F\u8E2C\u8E2E\u8E23\u8E2F\u8E3A\u8E40\u8E39\u8E35\u8E3D\u8E31\u8E49\u8E41\u8E42\u8E51\u8E52\u8E4A\u8E70\u8E76\u8E7C\u8E6F\u8E74\u8E85\u8E8F\u8E94\u8E90\u8E9C\u8E9E\u8C78\u8C82\u8C8A\u8C85\u8C98\u8C94\u659B\u89D6\u89DE\u89DA\u89DC\"],\n[\"f640\",\"\u9BDC\",62],\n[\"f680\",\"\u9C1B\",32,\"\u89E5\u89EB\u89EF\u8A3E\u8B26\u9753\u96E9\u96F3\u96EF\u9706\u9701\u9708\u970F\u970E\u972A\u972D\u9730\u973E\u9F80\u9F83\u9F85\",5,\"\u9F8C\u9EFE\u9F0B\u9F0D\u96B9\u96BC\u96BD\u96CE\u96D2\u77BF\u96E0\u928E\u92AE\u92C8\u933E\u936A\u93CA\u938F\u943E\u946B\u9C7F\u9C82\u9C85\u9C86\u9C87\u9C88\u7A23\u9C8B\u9C8E\u9C90\u9C91\u9C92\u9C94\u9C95\u9C9A\u9C9B\u9C9E\",5,\"\u9CA5\",4,\"\u9CAB\u9CAD\u9CAE\u9CB0\",7,\"\u9CBA\u9CBB\u9CBC\u9CBD\u9CC4\u9CC5\u9CC6\u9CC7\u9CCA\u9CCB\"],\n[\"f740\",\"\u9C3C\",62],\n[\"f780\",\"\u9C7B\u9C7D\u9C7E\u9C80\u9C83\u9C84\u9C89\u9C8A\u9C8C\u9C8F\u9C93\u9C96\u9C97\u9C98\u9C99\u9C9D\u9CAA\u9CAC\u9CAF\u9CB9\u9CBE\",4,\"\u9CC8\u9CC9\u9CD1\u9CD2\u9CDA\u9CDB\u9CE0\u9CE1\u9CCC\",4,\"\u9CD3\u9CD4\u9CD5\u9CD7\u9CD8\u9CD9\u9CDC\u9CDD\u9CDF\u9CE2\u977C\u9785\u9791\u9792\u9794\u97AF\u97AB\u97A3\u97B2\u97B4\u9AB1\u9AB0\u9AB7\u9E58\u9AB6\u9ABA\u9ABC\u9AC1\u9AC0\u9AC5\u9AC2\u9ACB\u9ACC\u9AD1\u9B45\u9B43\u9B47\u9B49\u9B48\u9B4D\u9B51\u98E8\u990D\u992E\u9955\u9954\u9ADF\u9AE1\u9AE6\u9AEF\u9AEB\u9AFB\u9AED\u9AF9\u9B08\u9B0F\u9B13\u9B1F\u9B23\u9EBD\u9EBE\u7E3B\u9E82\u9E87\u9E88\u9E8B\u9E92\u93D6\u9E9D\u9E9F\u9EDB\u9EDC\u9EDD\u9EE0\u9EDF\u9EE2\u9EE9\u9EE7\u9EE5\u9EEA\u9EEF\u9F22\u9F2C\u9F2F\u9F39\u9F37\u9F3D\u9F3E\u9F44\"],\n[\"f840\",\"\u9CE3\",62],\n[\"f880\",\"\u9D22\",32],\n[\"f940\",\"\u9D43\",62],\n[\"f980\",\"\u9D82\",32],\n[\"fa40\",\"\u9DA3\",62],\n[\"fa80\",\"\u9DE2\",32],\n[\"fb40\",\"\u9E03\",27,\"\u9E24\u9E27\u9E2E\u9E30\u9E34\u9E3B\u9E3C\u9E40\u9E4D\u9E50\u9E52\u9E53\u9E54\u9E56\u9E59\u9E5D\u9E5F\u9E60\u9E61\u9E62\u9E65\u9E6E\u9E6F\u9E72\u9E74\",9,\"\u9E80\"],\n[\"fb80\",\"\u9E81\u9E83\u9E84\u9E85\u9E86\u9E89\u9E8A\u9E8C\",5,\"\u9E94\",8,\"\u9E9E\u9EA0\",5,\"\u9EA7\u9EA8\u9EA9\u9EAA\"],\n[\"fc40\",\"\u9EAB\",8,\"\u9EB5\u9EB6\u9EB7\u9EB9\u9EBA\u9EBC\u9EBF\",4,\"\u9EC5\u9EC6\u9EC7\u9EC8\u9ECA\u9ECB\u9ECC\u9ED0\u9ED2\u9ED3\u9ED5\u9ED6\u9ED7\u9ED9\u9EDA\u9EDE\u9EE1\u9EE3\u9EE4\u9EE6\u9EE8\u9EEB\u9EEC\u9EED\u9EEE\u9EF0\",8,\"\u9EFA\u9EFD\u9EFF\",6],\n[\"fc80\",\"\u9F06\",4,\"\u9F0C\u9F0F\u9F11\u9F12\u9F14\u9F15\u9F16\u9F18\u9F1A\",5,\"\u9F21\u9F23\",8,\"\u9F2D\u9F2E\u9F30\u9F31\"],\n[\"fd40\",\"\u9F32\",4,\"\u9F38\u9F3A\u9F3C\u9F3F\",4,\"\u9F45\",10,\"\u9F52\",38],\n[\"fd80\",\"\u9F79\",5,\"\u9F81\u9F82\u9F8D\",11,\"\u9F9C\u9F9D\u9F9E\u9FA1\",4,\"\uF92C\uF979\uF995\uF9E7\uF9F1\"],\n[\"fe40\",\"\uFA0C\uFA0D\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA18\uFA1F\uFA20\uFA21\uFA23\uFA24\uFA27\uFA28\uFA29\"]\n]\n", "[\n[\"a140\",\"\uE4C6\",62],\n[\"a180\",\"\uE505\",32],\n[\"a240\",\"\uE526\",62],\n[\"a280\",\"\uE565\",32],\n[\"a2ab\",\"\uE766\",5],\n[\"a2e3\",\"\u20AC\uE76D\"],\n[\"a2ef\",\"\uE76E\uE76F\"],\n[\"a2fd\",\"\uE770\uE771\"],\n[\"a340\",\"\uE586\",62],\n[\"a380\",\"\uE5C5\",31,\"\u3000\"],\n[\"a440\",\"\uE5E6\",62],\n[\"a480\",\"\uE625\",32],\n[\"a4f4\",\"\uE772\",10],\n[\"a540\",\"\uE646\",62],\n[\"a580\",\"\uE685\",32],\n[\"a5f7\",\"\uE77D\",7],\n[\"a640\",\"\uE6A6\",62],\n[\"a680\",\"\uE6E5\",32],\n[\"a6b9\",\"\uE785\",7],\n[\"a6d9\",\"\uE78D\",6],\n[\"a6ec\",\"\uE794\uE795\"],\n[\"a6f3\",\"\uE796\"],\n[\"a6f6\",\"\uE797\",8],\n[\"a740\",\"\uE706\",62],\n[\"a780\",\"\uE745\",32],\n[\"a7c2\",\"\uE7A0\",14],\n[\"a7f2\",\"\uE7AF\",12],\n[\"a896\",\"\uE7BC\",10],\n[\"a8bc\",\"\uE7C7\"],\n[\"a8bf\",\"\u01F9\"],\n[\"a8c1\",\"\uE7C9\uE7CA\uE7CB\uE7CC\"],\n[\"a8ea\",\"\uE7CD\",20],\n[\"a958\",\"\uE7E2\"],\n[\"a95b\",\"\uE7E3\"],\n[\"a95d\",\"\uE7E4\uE7E5\uE7E6\"],\n[\"a989\",\"\u303E\u2FF0\",11],\n[\"a997\",\"\uE7F4\",12],\n[\"a9f0\",\"\uE801\",14],\n[\"aaa1\",\"\uE000\",93],\n[\"aba1\",\"\uE05E\",93],\n[\"aca1\",\"\uE0BC\",93],\n[\"ada1\",\"\uE11A\",93],\n[\"aea1\",\"\uE178\",93],\n[\"afa1\",\"\uE1D6\",93],\n[\"d7fa\",\"\uE810\",4],\n[\"f8a1\",\"\uE234\",93],\n[\"f9a1\",\"\uE292\",93],\n[\"faa1\",\"\uE2F0\",93],\n[\"fba1\",\"\uE34E\",93],\n[\"fca1\",\"\uE3AC\",93],\n[\"fda1\",\"\uE40A\",93],\n[\"fe50\",\"\u2E81\uE816\uE817\uE818\u2E84\u3473\u3447\u2E88\u2E8B\uE81E\u359E\u361A\u360E\u2E8C\u2E97\u396E\u3918\uE826\u39CF\u39DF\u3A73\u39D0\uE82B\uE82C\u3B4E\u3C6E\u3CE0\u2EA7\uE831\uE832\u2EAA\u4056\u415F\u2EAE\u4337\u2EB3\u2EB6\u2EB7\uE83B\u43B1\u43AC\u2EBB\u43DD\u44D6\u4661\u464C\uE843\"],\n[\"fe80\",\"\u4723\u4729\u477C\u478D\u2ECA\u4947\u497A\u497D\u4982\u4983\u4985\u4986\u499F\u499B\u49B7\u49B6\uE854\uE855\u4CA3\u4C9F\u4CA0\u4CA1\u4C77\u4CA2\u4D13\",6,\"\u4DAE\uE864\uE468\",93]\n]\n", "{\"uChars\":[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],\"gbChars\":[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189000]}", "[\n[\"0\",\"\\u0000\",127],\n[\"8141\",\"\uAC02\uAC03\uAC05\uAC06\uAC0B\",4,\"\uAC18\uAC1E\uAC1F\uAC21\uAC22\uAC23\uAC25\",6,\"\uAC2E\uAC32\uAC33\uAC34\"],\n[\"8161\",\"\uAC35\uAC36\uAC37\uAC3A\uAC3B\uAC3D\uAC3E\uAC3F\uAC41\",9,\"\uAC4C\uAC4E\",5,\"\uAC55\"],\n[\"8181\",\"\uAC56\uAC57\uAC59\uAC5A\uAC5B\uAC5D\",18,\"\uAC72\uAC73\uAC75\uAC76\uAC79\uAC7B\",4,\"\uAC82\uAC87\uAC88\uAC8D\uAC8E\uAC8F\uAC91\uAC92\uAC93\uAC95\",6,\"\uAC9E\uACA2\",5,\"\uACAB\uACAD\uACAE\uACB1\",6,\"\uACBA\uACBE\uACBF\uACC0\uACC2\uACC3\uACC5\uACC6\uACC7\uACC9\uACCA\uACCB\uACCD\",7,\"\uACD6\uACD8\",7,\"\uACE2\uACE3\uACE5\uACE6\uACE9\uACEB\uACED\uACEE\uACF2\uACF4\uACF7\",4,\"\uACFE\uACFF\uAD01\uAD02\uAD03\uAD05\uAD07\",4,\"\uAD0E\uAD10\uAD12\uAD13\"],\n[\"8241\",\"\uAD14\uAD15\uAD16\uAD17\uAD19\uAD1A\uAD1B\uAD1D\uAD1E\uAD1F\uAD21\",7,\"\uAD2A\uAD2B\uAD2E\",5],\n[\"8261\",\"\uAD36\uAD37\uAD39\uAD3A\uAD3B\uAD3D\",6,\"\uAD46\uAD48\uAD4A\",5,\"\uAD51\uAD52\uAD53\uAD55\uAD56\uAD57\"],\n[\"8281\",\"\uAD59\",7,\"\uAD62\uAD64\",7,\"\uAD6E\uAD6F\uAD71\uAD72\uAD77\uAD78\uAD79\uAD7A\uAD7E\uAD80\uAD83\",4,\"\uAD8A\uAD8B\uAD8D\uAD8E\uAD8F\uAD91\",10,\"\uAD9E\",5,\"\uADA5\",17,\"\uADB8\",7,\"\uADC2\uADC3\uADC5\uADC6\uADC7\uADC9\",6,\"\uADD2\uADD4\",7,\"\uADDD\uADDE\uADDF\uADE1\uADE2\uADE3\uADE5\",18],\n[\"8341\",\"\uADFA\uADFB\uADFD\uADFE\uAE02\",5,\"\uAE0A\uAE0C\uAE0E\",5,\"\uAE15\",7],\n[\"8361\",\"\uAE1D\",18,\"\uAE32\uAE33\uAE35\uAE36\uAE39\uAE3B\uAE3C\"],\n[\"8381\",\"\uAE3D\uAE3E\uAE3F\uAE42\uAE44\uAE47\uAE48\uAE49\uAE4B\uAE4F\uAE51\uAE52\uAE53\uAE55\uAE57\",4,\"\uAE5E\uAE62\uAE63\uAE64\uAE66\uAE67\uAE6A\uAE6B\uAE6D\uAE6E\uAE6F\uAE71\",6,\"\uAE7A\uAE7E\",5,\"\uAE86\",5,\"\uAE8D\",46,\"\uAEBF\uAEC1\uAEC2\uAEC3\uAEC5\",6,\"\uAECE\uAED2\",5,\"\uAEDA\uAEDB\uAEDD\",8],\n[\"8441\",\"\uAEE6\uAEE7\uAEE9\uAEEA\uAEEC\uAEEE\",5,\"\uAEF5\uAEF6\uAEF7\uAEF9\uAEFA\uAEFB\uAEFD\",8],\n[\"8461\",\"\uAF06\uAF09\uAF0A\uAF0B\uAF0C\uAF0E\uAF0F\uAF11\",18],\n[\"8481\",\"\uAF24\",7,\"\uAF2E\uAF2F\uAF31\uAF33\uAF35\",6,\"\uAF3E\uAF40\uAF44\uAF45\uAF46\uAF47\uAF4A\",5,\"\uAF51\",10,\"\uAF5E\",5,\"\uAF66\",18,\"\uAF7A\",5,\"\uAF81\uAF82\uAF83\uAF85\uAF86\uAF87\uAF89\",6,\"\uAF92\uAF93\uAF94\uAF96\",5,\"\uAF9D\",26,\"\uAFBA\uAFBB\uAFBD\uAFBE\"],\n[\"8541\",\"\uAFBF\uAFC1\",5,\"\uAFCA\uAFCC\uAFCF\",4,\"\uAFD5\",6,\"\uAFDD\",4],\n[\"8561\",\"\uAFE2\",5,\"\uAFEA\",5,\"\uAFF2\uAFF3\uAFF5\uAFF6\uAFF7\uAFF9\",6,\"\uB002\uB003\"],\n[\"8581\",\"\uB005\",6,\"\uB00D\uB00E\uB00F\uB011\uB012\uB013\uB015\",6,\"\uB01E\",9,\"\uB029\",26,\"\uB046\uB047\uB049\uB04B\uB04D\uB04F\uB050\uB051\uB052\uB056\uB058\uB05A\uB05B\uB05C\uB05E\",29,\"\uB07E\uB07F\uB081\uB082\uB083\uB085\",6,\"\uB08E\uB090\uB092\",5,\"\uB09B\uB09D\uB09E\uB0A3\uB0A4\"],\n[\"8641\",\"\uB0A5\uB0A6\uB0A7\uB0AA\uB0B0\uB0B2\uB0B6\uB0B7\uB0B9\uB0BA\uB0BB\uB0BD\",6,\"\uB0C6\uB0CA\",5,\"\uB0D2\"],\n[\"8661\",\"\uB0D3\uB0D5\uB0D6\uB0D7\uB0D9\",6,\"\uB0E1\uB0E2\uB0E3\uB0E4\uB0E6\",10],\n[\"8681\",\"\uB0F1\",22,\"\uB10A\uB10D\uB10E\uB10F\uB111\uB114\uB115\uB116\uB117\uB11A\uB11E\",4,\"\uB126\uB127\uB129\uB12A\uB12B\uB12D\",6,\"\uB136\uB13A\",5,\"\uB142\uB143\uB145\uB146\uB147\uB149\",6,\"\uB152\uB153\uB156\uB157\uB159\uB15A\uB15B\uB15D\uB15E\uB15F\uB161\",22,\"\uB17A\uB17B\uB17D\uB17E\uB17F\uB181\uB183\",4,\"\uB18A\uB18C\uB18E\uB18F\uB190\uB191\uB195\uB196\uB197\uB199\uB19A\uB19B\uB19D\"],\n[\"8741\",\"\uB19E\",9,\"\uB1A9\",15],\n[\"8761\",\"\uB1B9\",18,\"\uB1CD\uB1CE\uB1CF\uB1D1\uB1D2\uB1D3\uB1D5\"],\n[\"8781\",\"\uB1D6\",5,\"\uB1DE\uB1E0\",7,\"\uB1EA\uB1EB\uB1ED\uB1EE\uB1EF\uB1F1\",7,\"\uB1FA\uB1FC\uB1FE\",5,\"\uB206\uB207\uB209\uB20A\uB20D\",6,\"\uB216\uB218\uB21A\",5,\"\uB221\",18,\"\uB235\",6,\"\uB23D\",26,\"\uB259\uB25A\uB25B\uB25D\uB25E\uB25F\uB261\",6,\"\uB26A\",4],\n[\"8841\",\"\uB26F\",4,\"\uB276\",5,\"\uB27D\",6,\"\uB286\uB287\uB288\uB28A\",4],\n[\"8861\",\"\uB28F\uB292\uB293\uB295\uB296\uB297\uB29B\",4,\"\uB2A2\uB2A4\uB2A7\uB2A8\uB2A9\uB2AB\uB2AD\uB2AE\uB2AF\uB2B1\uB2B2\uB2B3\uB2B5\uB2B6\uB2B7\"],\n[\"8881\",\"\uB2B8\",15,\"\uB2CA\uB2CB\uB2CD\uB2CE\uB2CF\uB2D1\uB2D3\",4,\"\uB2DA\uB2DC\uB2DE\uB2DF\uB2E0\uB2E1\uB2E3\uB2E7\uB2E9\uB2EA\uB2F0\uB2F1\uB2F2\uB2F6\uB2FC\uB2FD\uB2FE\uB302\uB303\uB305\uB306\uB307\uB309\",6,\"\uB312\uB316\",5,\"\uB31D\",54,\"\uB357\uB359\uB35A\uB35D\uB360\uB361\uB362\uB363\"],\n[\"8941\",\"\uB366\uB368\uB36A\uB36C\uB36D\uB36F\uB372\uB373\uB375\uB376\uB377\uB379\",6,\"\uB382\uB386\",5,\"\uB38D\"],\n[\"8961\",\"\uB38E\uB38F\uB391\uB392\uB393\uB395\",10,\"\uB3A2\",5,\"\uB3A9\uB3AA\uB3AB\uB3AD\"],\n[\"8981\",\"\uB3AE\",21,\"\uB3C6\uB3C7\uB3C9\uB3CA\uB3CD\uB3CF\uB3D1\uB3D2\uB3D3\uB3D6\uB3D8\uB3DA\uB3DC\uB3DE\uB3DF\uB3E1\uB3E2\uB3E3\uB3E5\uB3E6\uB3E7\uB3E9\",18,\"\uB3FD\",18,\"\uB411\",6,\"\uB419\uB41A\uB41B\uB41D\uB41E\uB41F\uB421\",6,\"\uB42A\uB42C\",7,\"\uB435\",15],\n[\"8a41\",\"\uB445\",10,\"\uB452\uB453\uB455\uB456\uB457\uB459\",6,\"\uB462\uB464\uB466\"],\n[\"8a61\",\"\uB467\",4,\"\uB46D\",18,\"\uB481\uB482\"],\n[\"8a81\",\"\uB483\",4,\"\uB489\",19,\"\uB49E\",5,\"\uB4A5\uB4A6\uB4A7\uB4A9\uB4AA\uB4AB\uB4AD\",7,\"\uB4B6\uB4B8\uB4BA\",5,\"\uB4C1\uB4C2\uB4C3\uB4C5\uB4C6\uB4C7\uB4C9\",6,\"\uB4D1\uB4D2\uB4D3\uB4D4\uB4D6\",5,\"\uB4DE\uB4DF\uB4E1\uB4E2\uB4E5\uB4E7\",4,\"\uB4EE\uB4F0\uB4F2\",5,\"\uB4F9\",26,\"\uB516\uB517\uB519\uB51A\uB51D\"],\n[\"8b41\",\"\uB51E\",5,\"\uB526\uB52B\",4,\"\uB532\uB533\uB535\uB536\uB537\uB539\",6,\"\uB542\uB546\"],\n[\"8b61\",\"\uB547\uB548\uB549\uB54A\uB54E\uB54F\uB551\uB552\uB553\uB555\",6,\"\uB55E\uB562\",8],\n[\"8b81\",\"\uB56B\",52,\"\uB5A2\uB5A3\uB5A5\uB5A6\uB5A7\uB5A9\uB5AC\uB5AD\uB5AE\uB5AF\uB5B2\uB5B6\",4,\"\uB5BE\uB5BF\uB5C1\uB5C2\uB5C3\uB5C5\",6,\"\uB5CE\uB5D2\",5,\"\uB5D9\",18,\"\uB5ED\",18],\n[\"8c41\",\"\uB600\",15,\"\uB612\uB613\uB615\uB616\uB617\uB619\",4],\n[\"8c61\",\"\uB61E\",6,\"\uB626\",5,\"\uB62D\",6,\"\uB635\",5],\n[\"8c81\",\"\uB63B\",12,\"\uB649\",26,\"\uB665\uB666\uB667\uB669\",50,\"\uB69E\uB69F\uB6A1\uB6A2\uB6A3\uB6A5\",5,\"\uB6AD\uB6AE\uB6AF\uB6B0\uB6B2\",16],\n[\"8d41\",\"\uB6C3\",16,\"\uB6D5\",8],\n[\"8d61\",\"\uB6DE\",17,\"\uB6F1\uB6F2\uB6F3\uB6F5\uB6F6\uB6F7\uB6F9\uB6FA\"],\n[\"8d81\",\"\uB6FB\",4,\"\uB702\uB703\uB704\uB706\",33,\"\uB72A\uB72B\uB72D\uB72E\uB731\",6,\"\uB73A\uB73C\",7,\"\uB745\uB746\uB747\uB749\uB74A\uB74B\uB74D\",6,\"\uB756\",9,\"\uB761\uB762\uB763\uB765\uB766\uB767\uB769\",6,\"\uB772\uB774\uB776\",5,\"\uB77E\uB77F\uB781\uB782\uB783\uB785\",6,\"\uB78E\uB793\uB794\uB795\uB79A\uB79B\uB79D\uB79E\"],\n[\"8e41\",\"\uB79F\uB7A1\",6,\"\uB7AA\uB7AE\",5,\"\uB7B6\uB7B7\uB7B9\",8],\n[\"8e61\",\"\uB7C2\",4,\"\uB7C8\uB7CA\",19],\n[\"8e81\",\"\uB7DE\",13,\"\uB7EE\uB7EF\uB7F1\uB7F2\uB7F3\uB7F5\",6,\"\uB7FE\uB802\",4,\"\uB80A\uB80B\uB80D\uB80E\uB80F\uB811\",6,\"\uB81A\uB81C\uB81E\",5,\"\uB826\uB827\uB829\uB82A\uB82B\uB82D\",6,\"\uB836\uB83A\",5,\"\uB841\uB842\uB843\uB845\",11,\"\uB852\uB854\",7,\"\uB85E\uB85F\uB861\uB862\uB863\uB865\",6,\"\uB86E\uB870\uB872\",5,\"\uB879\uB87A\uB87B\uB87D\",7],\n[\"8f41\",\"\uB885\",7,\"\uB88E\",17],\n[\"8f61\",\"\uB8A0\",7,\"\uB8A9\",6,\"\uB8B1\uB8B2\uB8B3\uB8B5\uB8B6\uB8B7\uB8B9\",4],\n[\"8f81\",\"\uB8BE\uB8BF\uB8C2\uB8C4\uB8C6\",5,\"\uB8CD\uB8CE\uB8CF\uB8D1\uB8D2\uB8D3\uB8D5\",7,\"\uB8DE\uB8E0\uB8E2\",5,\"\uB8EA\uB8EB\uB8ED\uB8EE\uB8EF\uB8F1\",6,\"\uB8FA\uB8FC\uB8FE\",5,\"\uB905\",18,\"\uB919\",6,\"\uB921\",26,\"\uB93E\uB93F\uB941\uB942\uB943\uB945\",6,\"\uB94D\uB94E\uB950\uB952\",5],\n[\"9041\",\"\uB95A\uB95B\uB95D\uB95E\uB95F\uB961\",6,\"\uB96A\uB96C\uB96E\",5,\"\uB976\uB977\uB979\uB97A\uB97B\uB97D\"],\n[\"9061\",\"\uB97E\",5,\"\uB986\uB988\uB98B\uB98C\uB98F\",15],\n[\"9081\",\"\uB99F\",12,\"\uB9AE\uB9AF\uB9B1\uB9B2\uB9B3\uB9B5\",6,\"\uB9BE\uB9C0\uB9C2\",5,\"\uB9CA\uB9CB\uB9CD\uB9D3\",4,\"\uB9DA\uB9DC\uB9DF\uB9E0\uB9E2\uB9E6\uB9E7\uB9E9\uB9EA\uB9EB\uB9ED\",6,\"\uB9F6\uB9FB\",4,\"\uBA02\",5,\"\uBA09\",11,\"\uBA16\",33,\"\uBA3A\uBA3B\uBA3D\uBA3E\uBA3F\uBA41\uBA43\uBA44\uBA45\uBA46\"],\n[\"9141\",\"\uBA47\uBA4A\uBA4C\uBA4F\uBA50\uBA51\uBA52\uBA56\uBA57\uBA59\uBA5A\uBA5B\uBA5D\",6,\"\uBA66\uBA6A\",5],\n[\"9161\",\"\uBA72\uBA73\uBA75\uBA76\uBA77\uBA79\",9,\"\uBA86\uBA88\uBA89\uBA8A\uBA8B\uBA8D\",5],\n[\"9181\",\"\uBA93\",20,\"\uBAAA\uBAAD\uBAAE\uBAAF\uBAB1\uBAB3\",4,\"\uBABA\uBABC\uBABE\",5,\"\uBAC5\uBAC6\uBAC7\uBAC9\",14,\"\uBADA\",33,\"\uBAFD\uBAFE\uBAFF\uBB01\uBB02\uBB03\uBB05\",7,\"\uBB0E\uBB10\uBB12\",5,\"\uBB19\uBB1A\uBB1B\uBB1D\uBB1E\uBB1F\uBB21\",6],\n[\"9241\",\"\uBB28\uBB2A\uBB2C\",7,\"\uBB37\uBB39\uBB3A\uBB3F\",4,\"\uBB46\uBB48\uBB4A\uBB4B\uBB4C\uBB4E\uBB51\uBB52\"],\n[\"9261\",\"\uBB53\uBB55\uBB56\uBB57\uBB59\",7,\"\uBB62\uBB64\",7,\"\uBB6D\",4],\n[\"9281\",\"\uBB72\",21,\"\uBB89\uBB8A\uBB8B\uBB8D\uBB8E\uBB8F\uBB91\",18,\"\uBBA5\uBBA6\uBBA7\uBBA9\uBBAA\uBBAB\uBBAD\",6,\"\uBBB5\uBBB6\uBBB8\",7,\"\uBBC1\uBBC2\uBBC3\uBBC5\uBBC6\uBBC7\uBBC9\",6,\"\uBBD1\uBBD2\uBBD4\",35,\"\uBBFA\uBBFB\uBBFD\uBBFE\uBC01\"],\n[\"9341\",\"\uBC03\",4,\"\uBC0A\uBC0E\uBC10\uBC12\uBC13\uBC19\uBC1A\uBC20\uBC21\uBC22\uBC23\uBC26\uBC28\uBC2A\uBC2B\uBC2C\uBC2E\uBC2F\uBC32\uBC33\uBC35\"],\n[\"9361\",\"\uBC36\uBC37\uBC39\",6,\"\uBC42\uBC46\uBC47\uBC48\uBC4A\uBC4B\uBC4E\uBC4F\uBC51\",8],\n[\"9381\",\"\uBC5A\uBC5B\uBC5C\uBC5E\",37,\"\uBC86\uBC87\uBC89\uBC8A\uBC8D\uBC8F\",4,\"\uBC96\uBC98\uBC9B\",4,\"\uBCA2\uBCA3\uBCA5\uBCA6\uBCA9\",6,\"\uBCB2\uBCB6\",5,\"\uBCBE\uBCBF\uBCC1\uBCC2\uBCC3\uBCC5\",7,\"\uBCCE\uBCD2\uBCD3\uBCD4\uBCD6\uBCD7\uBCD9\uBCDA\uBCDB\uBCDD\",22,\"\uBCF7\uBCF9\uBCFA\uBCFB\uBCFD\"],\n[\"9441\",\"\uBCFE\",5,\"\uBD06\uBD08\uBD0A\",5,\"\uBD11\uBD12\uBD13\uBD15\",8],\n[\"9461\",\"\uBD1E\",5,\"\uBD25\",6,\"\uBD2D\",12],\n[\"9481\",\"\uBD3A\",5,\"\uBD41\",6,\"\uBD4A\uBD4B\uBD4D\uBD4E\uBD4F\uBD51\",6,\"\uBD5A\",9,\"\uBD65\uBD66\uBD67\uBD69\",22,\"\uBD82\uBD83\uBD85\uBD86\uBD8B\",4,\"\uBD92\uBD94\uBD96\uBD97\uBD98\uBD9B\uBD9D\",6,\"\uBDA5\",10,\"\uBDB1\",6,\"\uBDB9\",24],\n[\"9541\",\"\uBDD2\uBDD3\uBDD6\uBDD7\uBDD9\uBDDA\uBDDB\uBDDD\",11,\"\uBDEA\",5,\"\uBDF1\"],\n[\"9561\",\"\uBDF2\uBDF3\uBDF5\uBDF6\uBDF7\uBDF9\",6,\"\uBE01\uBE02\uBE04\uBE06\",5,\"\uBE0E\uBE0F\uBE11\uBE12\uBE13\"],\n[\"9581\",\"\uBE15\",6,\"\uBE1E\uBE20\",35,\"\uBE46\uBE47\uBE49\uBE4A\uBE4B\uBE4D\uBE4F\",4,\"\uBE56\uBE58\uBE5C\uBE5D\uBE5E\uBE5F\uBE62\uBE63\uBE65\uBE66\uBE67\uBE69\uBE6B\",4,\"\uBE72\uBE76\",4,\"\uBE7E\uBE7F\uBE81\uBE82\uBE83\uBE85\",6,\"\uBE8E\uBE92\",5,\"\uBE9A\",13,\"\uBEA9\",14],\n[\"9641\",\"\uBEB8\",23,\"\uBED2\uBED3\"],\n[\"9661\",\"\uBED5\uBED6\uBED9\",6,\"\uBEE1\uBEE2\uBEE6\",5,\"\uBEED\",8],\n[\"9681\",\"\uBEF6\",10,\"\uBF02\",5,\"\uBF0A\",13,\"\uBF1A\uBF1E\",33,\"\uBF42\uBF43\uBF45\uBF46\uBF47\uBF49\",6,\"\uBF52\uBF53\uBF54\uBF56\",44],\n[\"9741\",\"\uBF83\",16,\"\uBF95\",8],\n[\"9761\",\"\uBF9E\",17,\"\uBFB1\",7],\n[\"9781\",\"\uBFB9\",11,\"\uBFC6\",5,\"\uBFCE\uBFCF\uBFD1\uBFD2\uBFD3\uBFD5\",6,\"\uBFDD\uBFDE\uBFE0\uBFE2\",89,\"\uC03D\uC03E\uC03F\"],\n[\"9841\",\"\uC040\",16,\"\uC052\",5,\"\uC059\uC05A\uC05B\"],\n[\"9861\",\"\uC05D\uC05E\uC05F\uC061\",6,\"\uC06A\",15],\n[\"9881\",\"\uC07A\",21,\"\uC092\uC093\uC095\uC096\uC097\uC099\",6,\"\uC0A2\uC0A4\uC0A6\",5,\"\uC0AE\uC0B1\uC0B2\uC0B7\",4,\"\uC0BE\uC0C2\uC0C3\uC0C4\uC0C6\uC0C7\uC0CA\uC0CB\uC0CD\uC0CE\uC0CF\uC0D1\",6,\"\uC0DA\uC0DE\",5,\"\uC0E6\uC0E7\uC0E9\uC0EA\uC0EB\uC0ED\",6,\"\uC0F6\uC0F8\uC0FA\",5,\"\uC101\uC102\uC103\uC105\uC106\uC107\uC109\",6,\"\uC111\uC112\uC113\uC114\uC116\",5,\"\uC121\uC122\uC125\uC128\uC129\uC12A\uC12B\uC12E\"],\n[\"9941\",\"\uC132\uC133\uC134\uC135\uC137\uC13A\uC13B\uC13D\uC13E\uC13F\uC141\",6,\"\uC14A\uC14E\",5,\"\uC156\uC157\"],\n[\"9961\",\"\uC159\uC15A\uC15B\uC15D\",6,\"\uC166\uC16A\",5,\"\uC171\uC172\uC173\uC175\uC176\uC177\uC179\uC17A\uC17B\"],\n[\"9981\",\"\uC17C\",8,\"\uC186\",5,\"\uC18F\uC191\uC192\uC193\uC195\uC197\",4,\"\uC19E\uC1A0\uC1A2\uC1A3\uC1A4\uC1A6\uC1A7\uC1AA\uC1AB\uC1AD\uC1AE\uC1AF\uC1B1\",11,\"\uC1BE\",5,\"\uC1C5\uC1C6\uC1C7\uC1C9\uC1CA\uC1CB\uC1CD\",6,\"\uC1D5\uC1D6\uC1D9\",6,\"\uC1E1\uC1E2\uC1E3\uC1E5\uC1E6\uC1E7\uC1E9\",6,\"\uC1F2\uC1F4\",7,\"\uC1FE\uC1FF\uC201\uC202\uC203\uC205\",6,\"\uC20E\uC210\uC212\",5,\"\uC21A\uC21B\uC21D\uC21E\uC221\uC222\uC223\"],\n[\"9a41\",\"\uC224\uC225\uC226\uC227\uC22A\uC22C\uC22E\uC230\uC233\uC235\",16],\n[\"9a61\",\"\uC246\uC247\uC249\",6,\"\uC252\uC253\uC255\uC256\uC257\uC259\",6,\"\uC261\uC262\uC263\uC264\uC266\"],\n[\"9a81\",\"\uC267\",4,\"\uC26E\uC26F\uC271\uC272\uC273\uC275\",6,\"\uC27E\uC280\uC282\",5,\"\uC28A\",5,\"\uC291\",6,\"\uC299\uC29A\uC29C\uC29E\",5,\"\uC2A6\uC2A7\uC2A9\uC2AA\uC2AB\uC2AE\",5,\"\uC2B6\uC2B8\uC2BA\",33,\"\uC2DE\uC2DF\uC2E1\uC2E2\uC2E5\",5,\"\uC2EE\uC2F0\uC2F2\uC2F3\uC2F4\uC2F5\uC2F7\uC2FA\uC2FD\uC2FE\uC2FF\uC301\",6,\"\uC30A\uC30B\uC30E\uC30F\"],\n[\"9b41\",\"\uC310\uC311\uC312\uC316\uC317\uC319\uC31A\uC31B\uC31D\",6,\"\uC326\uC327\uC32A\",8],\n[\"9b61\",\"\uC333\",17,\"\uC346\",7],\n[\"9b81\",\"\uC34E\",25,\"\uC36A\uC36B\uC36D\uC36E\uC36F\uC371\uC373\",4,\"\uC37A\uC37B\uC37E\",5,\"\uC385\uC386\uC387\uC389\uC38A\uC38B\uC38D\",50,\"\uC3C1\",22,\"\uC3DA\"],\n[\"9c41\",\"\uC3DB\uC3DD\uC3DE\uC3E1\uC3E3\",4,\"\uC3EA\uC3EB\uC3EC\uC3EE\",5,\"\uC3F6\uC3F7\uC3F9\",5],\n[\"9c61\",\"\uC3FF\",8,\"\uC409\",6,\"\uC411\",9],\n[\"9c81\",\"\uC41B\",8,\"\uC425\",6,\"\uC42D\uC42E\uC42F\uC431\uC432\uC433\uC435\",6,\"\uC43E\",9,\"\uC449\",26,\"\uC466\uC467\uC469\uC46A\uC46B\uC46D\",6,\"\uC476\uC477\uC478\uC47A\",5,\"\uC481\",18,\"\uC495\",6,\"\uC49D\",12],\n[\"9d41\",\"\uC4AA\",13,\"\uC4B9\uC4BA\uC4BB\uC4BD\",8],\n[\"9d61\",\"\uC4C6\",25],\n[\"9d81\",\"\uC4E0\",8,\"\uC4EA\",5,\"\uC4F2\uC4F3\uC4F5\uC4F6\uC4F7\uC4F9\uC4FB\uC4FC\uC4FD\uC4FE\uC502\",9,\"\uC50D\uC50E\uC50F\uC511\uC512\uC513\uC515\",6,\"\uC51D\",10,\"\uC52A\uC52B\uC52D\uC52E\uC52F\uC531\",6,\"\uC53A\uC53C\uC53E\",5,\"\uC546\uC547\uC54B\uC54F\uC550\uC551\uC552\uC556\uC55A\uC55B\uC55C\uC55F\uC562\uC563\uC565\uC566\uC567\uC569\",6,\"\uC572\uC576\",5,\"\uC57E\uC57F\uC581\uC582\uC583\uC585\uC586\uC588\uC589\uC58A\uC58B\uC58E\uC590\uC592\uC593\uC594\"],\n[\"9e41\",\"\uC596\uC599\uC59A\uC59B\uC59D\uC59E\uC59F\uC5A1\",7,\"\uC5AA\",9,\"\uC5B6\"],\n[\"9e61\",\"\uC5B7\uC5BA\uC5BF\",4,\"\uC5CB\uC5CD\uC5CF\uC5D2\uC5D3\uC5D5\uC5D6\uC5D7\uC5D9\",6,\"\uC5E2\uC5E4\uC5E6\uC5E7\"],\n[\"9e81\",\"\uC5E8\uC5E9\uC5EA\uC5EB\uC5EF\uC5F1\uC5F2\uC5F3\uC5F5\uC5F8\uC5F9\uC5FA\uC5FB\uC602\uC603\uC604\uC609\uC60A\uC60B\uC60D\uC60E\uC60F\uC611\",6,\"\uC61A\uC61D\",6,\"\uC626\uC627\uC629\uC62A\uC62B\uC62F\uC631\uC632\uC636\uC638\uC63A\uC63C\uC63D\uC63E\uC63F\uC642\uC643\uC645\uC646\uC647\uC649\",6,\"\uC652\uC656\",5,\"\uC65E\uC65F\uC661\",10,\"\uC66D\uC66E\uC670\uC672\",5,\"\uC67A\uC67B\uC67D\uC67E\uC67F\uC681\",6,\"\uC68A\uC68C\uC68E\",5,\"\uC696\uC697\uC699\uC69A\uC69B\uC69D\",6,\"\uC6A6\"],\n[\"9f41\",\"\uC6A8\uC6AA\",5,\"\uC6B2\uC6B3\uC6B5\uC6B6\uC6B7\uC6BB\",4,\"\uC6C2\uC6C4\uC6C6\",5,\"\uC6CE\"],\n[\"9f61\",\"\uC6CF\uC6D1\uC6D2\uC6D3\uC6D5\",6,\"\uC6DE\uC6DF\uC6E2\",5,\"\uC6EA\uC6EB\uC6ED\uC6EE\uC6EF\uC6F1\uC6F2\"],\n[\"9f81\",\"\uC6F3\",4,\"\uC6FA\uC6FB\uC6FC\uC6FE\",5,\"\uC706\uC707\uC709\uC70A\uC70B\uC70D\",6,\"\uC716\uC718\uC71A\",5,\"\uC722\uC723\uC725\uC726\uC727\uC729\",6,\"\uC732\uC734\uC736\uC738\uC739\uC73A\uC73B\uC73E\uC73F\uC741\uC742\uC743\uC745\",4,\"\uC74B\uC74E\uC750\uC759\uC75A\uC75B\uC75D\uC75E\uC75F\uC761\",6,\"\uC769\uC76A\uC76C\",7,\"\uC776\uC777\uC779\uC77A\uC77B\uC77F\uC780\uC781\uC782\uC786\uC78B\uC78C\uC78D\uC78F\uC792\uC793\uC795\uC799\uC79B\",4,\"\uC7A2\uC7A7\",4,\"\uC7AE\uC7AF\uC7B1\uC7B2\uC7B3\uC7B5\uC7B6\uC7B7\"],\n[\"a041\",\"\uC7B8\uC7B9\uC7BA\uC7BB\uC7BE\uC7C2\",5,\"\uC7CA\uC7CB\uC7CD\uC7CF\uC7D1\",6,\"\uC7D9\uC7DA\uC7DB\uC7DC\"],\n[\"a061\",\"\uC7DE\",5,\"\uC7E5\uC7E6\uC7E7\uC7E9\uC7EA\uC7EB\uC7ED\",13],\n[\"a081\",\"\uC7FB\",4,\"\uC802\uC803\uC805\uC806\uC807\uC809\uC80B\",4,\"\uC812\uC814\uC817\",4,\"\uC81E\uC81F\uC821\uC822\uC823\uC825\",6,\"\uC82E\uC830\uC832\",5,\"\uC839\uC83A\uC83B\uC83D\uC83E\uC83F\uC841\",6,\"\uC84A\uC84B\uC84E\",5,\"\uC855\",26,\"\uC872\uC873\uC875\uC876\uC877\uC879\uC87B\",4,\"\uC882\uC884\uC888\uC889\uC88A\uC88E\",5,\"\uC895\",7,\"\uC89E\uC8A0\uC8A2\uC8A3\uC8A4\"],\n[\"a141\",\"\uC8A5\uC8A6\uC8A7\uC8A9\",18,\"\uC8BE\uC8BF\uC8C0\uC8C1\"],\n[\"a161\",\"\uC8C2\uC8C3\uC8C5\uC8C6\uC8C7\uC8C9\uC8CA\uC8CB\uC8CD\",6,\"\uC8D6\uC8D8\uC8DA\",5,\"\uC8E2\uC8E3\uC8E5\"],\n[\"a181\",\"\uC8E6\",14,\"\uC8F6\",5,\"\uC8FE\uC8FF\uC901\uC902\uC903\uC907\",4,\"\uC90E\u3000\u3001\u3002\u00B7\u2025\u2026\u00A8\u3003\u00AD\u2015\u2225\uFF3C\u223C\u2018\u2019\u201C\u201D\u3014\u3015\u3008\",9,\"\u00B1\u00D7\u00F7\u2260\u2264\u2265\u221E\u2234\u00B0\u2032\u2033\u2103\u212B\uFFE0\uFFE1\uFFE5\u2642\u2640\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u00A7\u203B\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u2192\u2190\u2191\u2193\u2194\u3013\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\u2227\u2228\uFFE2\"],\n[\"a241\",\"\uC910\uC912\",5,\"\uC919\",18],\n[\"a261\",\"\uC92D\",6,\"\uC935\",18],\n[\"a281\",\"\uC948\",7,\"\uC952\uC953\uC955\uC956\uC957\uC959\",6,\"\uC962\uC964\",7,\"\uC96D\uC96E\uC96F\u21D2\u21D4\u2200\u2203\u00B4\uFF5E\u02C7\u02D8\u02DD\u02DA\u02D9\u00B8\u02DB\u00A1\u00BF\u02D0\u222E\u2211\u220F\u00A4\u2109\u2030\u25C1\u25C0\u25B7\u25B6\u2664\u2660\u2661\u2665\u2667\u2663\u2299\u25C8\u25A3\u25D0\u25D1\u2592\u25A4\u25A5\u25A8\u25A7\u25A6\u25A9\u2668\u260F\u260E\u261C\u261E\u00B6\u2020\u2021\u2195\u2197\u2199\u2196\u2198\u266D\u2669\u266A\u266C\u327F\u321C\u2116\u33C7\u2122\u33C2\u33D8\u2121\u20AC\u00AE\"],\n[\"a341\",\"\uC971\uC972\uC973\uC975\",6,\"\uC97D\",10,\"\uC98A\uC98B\uC98D\uC98E\uC98F\"],\n[\"a361\",\"\uC991\",6,\"\uC99A\uC99C\uC99E\",16],\n[\"a381\",\"\uC9AF\",16,\"\uC9C2\uC9C3\uC9C5\uC9C6\uC9C9\uC9CB\",4,\"\uC9D2\uC9D4\uC9D7\uC9D8\uC9DB\uFF01\",58,\"\uFFE6\uFF3D\",32,\"\uFFE3\"],\n[\"a441\",\"\uC9DE\uC9DF\uC9E1\uC9E3\uC9E5\uC9E6\uC9E8\uC9E9\uC9EA\uC9EB\uC9EE\uC9F2\",5,\"\uC9FA\uC9FB\uC9FD\uC9FE\uC9FF\uCA01\uCA02\uCA03\uCA04\"],\n[\"a461\",\"\uCA05\uCA06\uCA07\uCA0A\uCA0E\",5,\"\uCA15\uCA16\uCA17\uCA19\",12],\n[\"a481\",\"\uCA26\uCA27\uCA28\uCA2A\",28,\"\u3131\",93],\n[\"a541\",\"\uCA47\",4,\"\uCA4E\uCA4F\uCA51\uCA52\uCA53\uCA55\",6,\"\uCA5E\uCA62\",5,\"\uCA69\uCA6A\"],\n[\"a561\",\"\uCA6B\",17,\"\uCA7E\",5,\"\uCA85\uCA86\"],\n[\"a581\",\"\uCA87\",16,\"\uCA99\",14,\"\u2170\",9],\n[\"a5b0\",\"\u2160\",9],\n[\"a5c1\",\"\u0391\",16,\"\u03A3\",6],\n[\"a5e1\",\"\u03B1\",16,\"\u03C3\",6],\n[\"a641\",\"\uCAA8\",19,\"\uCABE\uCABF\uCAC1\uCAC2\uCAC3\uCAC5\"],\n[\"a661\",\"\uCAC6\",5,\"\uCACE\uCAD0\uCAD2\uCAD4\uCAD5\uCAD6\uCAD7\uCADA\",5,\"\uCAE1\",6],\n[\"a681\",\"\uCAE8\uCAE9\uCAEA\uCAEB\uCAED\",6,\"\uCAF5\",18,\"\uCB09\uCB0A\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\u2512\u2511\u251A\u2519\u2516\u2515\u250E\u250D\u251E\u251F\u2521\u2522\u2526\u2527\u2529\u252A\u252D\u252E\u2531\u2532\u2535\u2536\u2539\u253A\u253D\u253E\u2540\u2541\u2543\",7],\n[\"a741\",\"\uCB0B\",4,\"\uCB11\uCB12\uCB13\uCB15\uCB16\uCB17\uCB19\",6,\"\uCB22\",7],\n[\"a761\",\"\uCB2A\",22,\"\uCB42\uCB43\uCB44\"],\n[\"a781\",\"\uCB45\uCB46\uCB47\uCB4A\uCB4B\uCB4D\uCB4E\uCB4F\uCB51\",6,\"\uCB5A\uCB5B\uCB5C\uCB5E\",5,\"\uCB65\",7,\"\u3395\u3396\u3397\u2113\u3398\u33C4\u33A3\u33A4\u33A5\u33A6\u3399\",9,\"\u33CA\u338D\u338E\u338F\u33CF\u3388\u3389\u33C8\u33A7\u33A8\u33B0\",9,\"\u3380\",4,\"\u33BA\",5,\"\u3390\",4,\"\u2126\u33C0\u33C1\u338A\u338B\u338C\u33D6\u33C5\u33AD\u33AE\u33AF\u33DB\u33A9\u33AA\u33AB\u33AC\u33DD\u33D0\u33D3\u33C3\u33C9\u33DC\u33C6\"],\n[\"a841\",\"\uCB6D\",10,\"\uCB7A\",14],\n[\"a861\",\"\uCB89\",18,\"\uCB9D\",6],\n[\"a881\",\"\uCBA4\",19,\"\uCBB9\",11,\"\u00C6\u00D0\u00AA\u0126\"],\n[\"a8a6\",\"\u0132\"],\n[\"a8a8\",\"\u013F\u0141\u00D8\u0152\u00BA\u00DE\u0166\u014A\"],\n[\"a8b1\",\"\u3260\",27,\"\u24D0\",25,\"\u2460\",14,\"\u00BD\u2153\u2154\u00BC\u00BE\u215B\u215C\u215D\u215E\"],\n[\"a941\",\"\uCBC5\",14,\"\uCBD5\",10],\n[\"a961\",\"\uCBE0\uCBE1\uCBE2\uCBE3\uCBE5\uCBE6\uCBE8\uCBEA\",18],\n[\"a981\",\"\uCBFD\",14,\"\uCC0E\uCC0F\uCC11\uCC12\uCC13\uCC15\",6,\"\uCC1E\uCC1F\uCC20\uCC23\uCC24\u00E6\u0111\u00F0\u0127\u0131\u0133\u0138\u0140\u0142\u00F8\u0153\u00DF\u00FE\u0167\u014B\u0149\u3200\",27,\"\u249C\",25,\"\u2474\",14,\"\u00B9\u00B2\u00B3\u2074\u207F\u2081\u2082\u2083\u2084\"],\n[\"aa41\",\"\uCC25\uCC26\uCC2A\uCC2B\uCC2D\uCC2F\uCC31\",6,\"\uCC3A\uCC3F\",4,\"\uCC46\uCC47\uCC49\uCC4A\uCC4B\uCC4D\uCC4E\"],\n[\"aa61\",\"\uCC4F\",4,\"\uCC56\uCC5A\",5,\"\uCC61\uCC62\uCC63\uCC65\uCC67\uCC69\",6,\"\uCC71\uCC72\"],\n[\"aa81\",\"\uCC73\uCC74\uCC76\",29,\"\u3041\",82],\n[\"ab41\",\"\uCC94\uCC95\uCC96\uCC97\uCC9A\uCC9B\uCC9D\uCC9E\uCC9F\uCCA1\",6,\"\uCCAA\uCCAE\",5,\"\uCCB6\uCCB7\uCCB9\"],\n[\"ab61\",\"\uCCBA\uCCBB\uCCBD\",6,\"\uCCC6\uCCC8\uCCCA\",5,\"\uCCD1\uCCD2\uCCD3\uCCD5\",5],\n[\"ab81\",\"\uCCDB\",8,\"\uCCE5\",6,\"\uCCED\uCCEE\uCCEF\uCCF1\",12,\"\u30A1\",85],\n[\"ac41\",\"\uCCFE\uCCFF\uCD00\uCD02\",5,\"\uCD0A\uCD0B\uCD0D\uCD0E\uCD0F\uCD11\",6,\"\uCD1A\uCD1C\uCD1E\uCD1F\uCD20\"],\n[\"ac61\",\"\uCD21\uCD22\uCD23\uCD25\uCD26\uCD27\uCD29\uCD2A\uCD2B\uCD2D\",11,\"\uCD3A\",4],\n[\"ac81\",\"\uCD3F\",28,\"\uCD5D\uCD5E\uCD5F\u0410\",5,\"\u0401\u0416\",25],\n[\"acd1\",\"\u0430\",5,\"\u0451\u0436\",25],\n[\"ad41\",\"\uCD61\uCD62\uCD63\uCD65\",6,\"\uCD6E\uCD70\uCD72\",5,\"\uCD79\",7],\n[\"ad61\",\"\uCD81\",6,\"\uCD89\",10,\"\uCD96\uCD97\uCD99\uCD9A\uCD9B\uCD9D\uCD9E\uCD9F\"],\n[\"ad81\",\"\uCDA0\uCDA1\uCDA2\uCDA3\uCDA6\uCDA8\uCDAA\",5,\"\uCDB1\",18,\"\uCDC5\"],\n[\"ae41\",\"\uCDC6\",5,\"\uCDCD\uCDCE\uCDCF\uCDD1\",16],\n[\"ae61\",\"\uCDE2\",5,\"\uCDE9\uCDEA\uCDEB\uCDED\uCDEE\uCDEF\uCDF1\",6,\"\uCDFA\uCDFC\uCDFE\",4],\n[\"ae81\",\"\uCE03\uCE05\uCE06\uCE07\uCE09\uCE0A\uCE0B\uCE0D\",6,\"\uCE15\uCE16\uCE17\uCE18\uCE1A\",5,\"\uCE22\uCE23\uCE25\uCE26\uCE27\uCE29\uCE2A\uCE2B\"],\n[\"af41\",\"\uCE2C\uCE2D\uCE2E\uCE2F\uCE32\uCE34\uCE36\",19],\n[\"af61\",\"\uCE4A\",13,\"\uCE5A\uCE5B\uCE5D\uCE5E\uCE62\",5,\"\uCE6A\uCE6C\"],\n[\"af81\",\"\uCE6E\",5,\"\uCE76\uCE77\uCE79\uCE7A\uCE7B\uCE7D\",6,\"\uCE86\uCE88\uCE8A\",5,\"\uCE92\uCE93\uCE95\uCE96\uCE97\uCE99\"],\n[\"b041\",\"\uCE9A\",5,\"\uCEA2\uCEA6\",5,\"\uCEAE\",12],\n[\"b061\",\"\uCEBB\",5,\"\uCEC2\",19],\n[\"b081\",\"\uCED6\",13,\"\uCEE6\uCEE7\uCEE9\uCEEA\uCEED\",6,\"\uCEF6\uCEFA\",5,\"\uAC00\uAC01\uAC04\uAC07\uAC08\uAC09\uAC0A\uAC10\",7,\"\uAC19\",4,\"\uAC20\uAC24\uAC2C\uAC2D\uAC2F\uAC30\uAC31\uAC38\uAC39\uAC3C\uAC40\uAC4B\uAC4D\uAC54\uAC58\uAC5C\uAC70\uAC71\uAC74\uAC77\uAC78\uAC7A\uAC80\uAC81\uAC83\uAC84\uAC85\uAC86\uAC89\uAC8A\uAC8B\uAC8C\uAC90\uAC94\uAC9C\uAC9D\uAC9F\uACA0\uACA1\uACA8\uACA9\uACAA\uACAC\uACAF\uACB0\uACB8\uACB9\uACBB\uACBC\uACBD\uACC1\uACC4\uACC8\uACCC\uACD5\uACD7\uACE0\uACE1\uACE4\uACE7\uACE8\uACEA\uACEC\uACEF\uACF0\uACF1\uACF3\uACF5\uACF6\uACFC\uACFD\uAD00\uAD04\uAD06\"],\n[\"b141\",\"\uCF02\uCF03\uCF05\uCF06\uCF07\uCF09\",6,\"\uCF12\uCF14\uCF16\",5,\"\uCF1D\uCF1E\uCF1F\uCF21\uCF22\uCF23\"],\n[\"b161\",\"\uCF25\",6,\"\uCF2E\uCF32\",5,\"\uCF39\",11],\n[\"b181\",\"\uCF45\",14,\"\uCF56\uCF57\uCF59\uCF5A\uCF5B\uCF5D\",6,\"\uCF66\uCF68\uCF6A\uCF6B\uCF6C\uAD0C\uAD0D\uAD0F\uAD11\uAD18\uAD1C\uAD20\uAD29\uAD2C\uAD2D\uAD34\uAD35\uAD38\uAD3C\uAD44\uAD45\uAD47\uAD49\uAD50\uAD54\uAD58\uAD61\uAD63\uAD6C\uAD6D\uAD70\uAD73\uAD74\uAD75\uAD76\uAD7B\uAD7C\uAD7D\uAD7F\uAD81\uAD82\uAD88\uAD89\uAD8C\uAD90\uAD9C\uAD9D\uADA4\uADB7\uADC0\uADC1\uADC4\uADC8\uADD0\uADD1\uADD3\uADDC\uADE0\uADE4\uADF8\uADF9\uADFC\uADFF\uAE00\uAE01\uAE08\uAE09\uAE0B\uAE0D\uAE14\uAE30\uAE31\uAE34\uAE37\uAE38\uAE3A\uAE40\uAE41\uAE43\uAE45\uAE46\uAE4A\uAE4C\uAE4D\uAE4E\uAE50\uAE54\uAE56\uAE5C\uAE5D\uAE5F\uAE60\uAE61\uAE65\uAE68\uAE69\uAE6C\uAE70\uAE78\"],\n[\"b241\",\"\uCF6D\uCF6E\uCF6F\uCF72\uCF73\uCF75\uCF76\uCF77\uCF79\",6,\"\uCF81\uCF82\uCF83\uCF84\uCF86\",5,\"\uCF8D\"],\n[\"b261\",\"\uCF8E\",18,\"\uCFA2\",5,\"\uCFA9\"],\n[\"b281\",\"\uCFAA\",5,\"\uCFB1\",18,\"\uCFC5\",6,\"\uAE79\uAE7B\uAE7C\uAE7D\uAE84\uAE85\uAE8C\uAEBC\uAEBD\uAEBE\uAEC0\uAEC4\uAECC\uAECD\uAECF\uAED0\uAED1\uAED8\uAED9\uAEDC\uAEE8\uAEEB\uAEED\uAEF4\uAEF8\uAEFC\uAF07\uAF08\uAF0D\uAF10\uAF2C\uAF2D\uAF30\uAF32\uAF34\uAF3C\uAF3D\uAF3F\uAF41\uAF42\uAF43\uAF48\uAF49\uAF50\uAF5C\uAF5D\uAF64\uAF65\uAF79\uAF80\uAF84\uAF88\uAF90\uAF91\uAF95\uAF9C\uAFB8\uAFB9\uAFBC\uAFC0\uAFC7\uAFC8\uAFC9\uAFCB\uAFCD\uAFCE\uAFD4\uAFDC\uAFE8\uAFE9\uAFF0\uAFF1\uAFF4\uAFF8\uB000\uB001\uB004\uB00C\uB010\uB014\uB01C\uB01D\uB028\uB044\uB045\uB048\uB04A\uB04C\uB04E\uB053\uB054\uB055\uB057\uB059\"],\n[\"b341\",\"\uCFCC\",19,\"\uCFE2\uCFE3\uCFE5\uCFE6\uCFE7\uCFE9\"],\n[\"b361\",\"\uCFEA\",5,\"\uCFF2\uCFF4\uCFF6\",5,\"\uCFFD\uCFFE\uCFFF\uD001\uD002\uD003\uD005\",5],\n[\"b381\",\"\uD00B\",5,\"\uD012\",5,\"\uD019\",19,\"\uB05D\uB07C\uB07D\uB080\uB084\uB08C\uB08D\uB08F\uB091\uB098\uB099\uB09A\uB09C\uB09F\uB0A0\uB0A1\uB0A2\uB0A8\uB0A9\uB0AB\",4,\"\uB0B1\uB0B3\uB0B4\uB0B5\uB0B8\uB0BC\uB0C4\uB0C5\uB0C7\uB0C8\uB0C9\uB0D0\uB0D1\uB0D4\uB0D8\uB0E0\uB0E5\uB108\uB109\uB10B\uB10C\uB110\uB112\uB113\uB118\uB119\uB11B\uB11C\uB11D\uB123\uB124\uB125\uB128\uB12C\uB134\uB135\uB137\uB138\uB139\uB140\uB141\uB144\uB148\uB150\uB151\uB154\uB155\uB158\uB15C\uB160\uB178\uB179\uB17C\uB180\uB182\uB188\uB189\uB18B\uB18D\uB192\uB193\uB194\uB198\uB19C\uB1A8\uB1CC\uB1D0\uB1D4\uB1DC\uB1DD\"],\n[\"b441\",\"\uD02E\",5,\"\uD036\uD037\uD039\uD03A\uD03B\uD03D\",6,\"\uD046\uD048\uD04A\",5],\n[\"b461\",\"\uD051\uD052\uD053\uD055\uD056\uD057\uD059\",6,\"\uD061\",10,\"\uD06E\uD06F\"],\n[\"b481\",\"\uD071\uD072\uD073\uD075\",6,\"\uD07E\uD07F\uD080\uD082\",18,\"\uB1DF\uB1E8\uB1E9\uB1EC\uB1F0\uB1F9\uB1FB\uB1FD\uB204\uB205\uB208\uB20B\uB20C\uB214\uB215\uB217\uB219\uB220\uB234\uB23C\uB258\uB25C\uB260\uB268\uB269\uB274\uB275\uB27C\uB284\uB285\uB289\uB290\uB291\uB294\uB298\uB299\uB29A\uB2A0\uB2A1\uB2A3\uB2A5\uB2A6\uB2AA\uB2AC\uB2B0\uB2B4\uB2C8\uB2C9\uB2CC\uB2D0\uB2D2\uB2D8\uB2D9\uB2DB\uB2DD\uB2E2\uB2E4\uB2E5\uB2E6\uB2E8\uB2EB\",4,\"\uB2F3\uB2F4\uB2F5\uB2F7\",4,\"\uB2FF\uB300\uB301\uB304\uB308\uB310\uB311\uB313\uB314\uB315\uB31C\uB354\uB355\uB356\uB358\uB35B\uB35C\uB35E\uB35F\uB364\uB365\"],\n[\"b541\",\"\uD095\",14,\"\uD0A6\uD0A7\uD0A9\uD0AA\uD0AB\uD0AD\",5],\n[\"b561\",\"\uD0B3\uD0B6\uD0B8\uD0BA\",5,\"\uD0C2\uD0C3\uD0C5\uD0C6\uD0C7\uD0CA\",5,\"\uD0D2\uD0D6\",4],\n[\"b581\",\"\uD0DB\uD0DE\uD0DF\uD0E1\uD0E2\uD0E3\uD0E5\",6,\"\uD0EE\uD0F2\",5,\"\uD0F9\",11,\"\uB367\uB369\uB36B\uB36E\uB370\uB371\uB374\uB378\uB380\uB381\uB383\uB384\uB385\uB38C\uB390\uB394\uB3A0\uB3A1\uB3A8\uB3AC\uB3C4\uB3C5\uB3C8\uB3CB\uB3CC\uB3CE\uB3D0\uB3D4\uB3D5\uB3D7\uB3D9\uB3DB\uB3DD\uB3E0\uB3E4\uB3E8\uB3FC\uB410\uB418\uB41C\uB420\uB428\uB429\uB42B\uB434\uB450\uB451\uB454\uB458\uB460\uB461\uB463\uB465\uB46C\uB480\uB488\uB49D\uB4A4\uB4A8\uB4AC\uB4B5\uB4B7\uB4B9\uB4C0\uB4C4\uB4C8\uB4D0\uB4D5\uB4DC\uB4DD\uB4E0\uB4E3\uB4E4\uB4E6\uB4EC\uB4ED\uB4EF\uB4F1\uB4F8\uB514\uB515\uB518\uB51B\uB51C\uB524\uB525\uB527\uB528\uB529\uB52A\uB530\uB531\uB534\uB538\"],\n[\"b641\",\"\uD105\",7,\"\uD10E\",17],\n[\"b661\",\"\uD120\",15,\"\uD132\uD133\uD135\uD136\uD137\uD139\uD13B\uD13C\uD13D\uD13E\"],\n[\"b681\",\"\uD13F\uD142\uD146\",5,\"\uD14E\uD14F\uD151\uD152\uD153\uD155\",6,\"\uD15E\uD160\uD162\",5,\"\uD169\uD16A\uD16B\uD16D\uB540\uB541\uB543\uB544\uB545\uB54B\uB54C\uB54D\uB550\uB554\uB55C\uB55D\uB55F\uB560\uB561\uB5A0\uB5A1\uB5A4\uB5A8\uB5AA\uB5AB\uB5B0\uB5B1\uB5B3\uB5B4\uB5B5\uB5BB\uB5BC\uB5BD\uB5C0\uB5C4\uB5CC\uB5CD\uB5CF\uB5D0\uB5D1\uB5D8\uB5EC\uB610\uB611\uB614\uB618\uB625\uB62C\uB634\uB648\uB664\uB668\uB69C\uB69D\uB6A0\uB6A4\uB6AB\uB6AC\uB6B1\uB6D4\uB6F0\uB6F4\uB6F8\uB700\uB701\uB705\uB728\uB729\uB72C\uB72F\uB730\uB738\uB739\uB73B\uB744\uB748\uB74C\uB754\uB755\uB760\uB764\uB768\uB770\uB771\uB773\uB775\uB77C\uB77D\uB780\uB784\uB78C\uB78D\uB78F\uB790\uB791\uB792\uB796\uB797\"],\n[\"b741\",\"\uD16E\",13,\"\uD17D\",6,\"\uD185\uD186\uD187\uD189\uD18A\"],\n[\"b761\",\"\uD18B\",20,\"\uD1A2\uD1A3\uD1A5\uD1A6\uD1A7\"],\n[\"b781\",\"\uD1A9\",6,\"\uD1B2\uD1B4\uD1B6\uD1B7\uD1B8\uD1B9\uD1BB\uD1BD\uD1BE\uD1BF\uD1C1\",14,\"\uB798\uB799\uB79C\uB7A0\uB7A8\uB7A9\uB7AB\uB7AC\uB7AD\uB7B4\uB7B5\uB7B8\uB7C7\uB7C9\uB7EC\uB7ED\uB7F0\uB7F4\uB7FC\uB7FD\uB7FF\uB800\uB801\uB807\uB808\uB809\uB80C\uB810\uB818\uB819\uB81B\uB81D\uB824\uB825\uB828\uB82C\uB834\uB835\uB837\uB838\uB839\uB840\uB844\uB851\uB853\uB85C\uB85D\uB860\uB864\uB86C\uB86D\uB86F\uB871\uB878\uB87C\uB88D\uB8A8\uB8B0\uB8B4\uB8B8\uB8C0\uB8C1\uB8C3\uB8C5\uB8CC\uB8D0\uB8D4\uB8DD\uB8DF\uB8E1\uB8E8\uB8E9\uB8EC\uB8F0\uB8F8\uB8F9\uB8FB\uB8FD\uB904\uB918\uB920\uB93C\uB93D\uB940\uB944\uB94C\uB94F\uB951\uB958\uB959\uB95C\uB960\uB968\uB969\"],\n[\"b841\",\"\uD1D0\",7,\"\uD1D9\",17],\n[\"b861\",\"\uD1EB\",8,\"\uD1F5\uD1F6\uD1F7\uD1F9\",13],\n[\"b881\",\"\uD208\uD20A\",5,\"\uD211\",24,\"\uB96B\uB96D\uB974\uB975\uB978\uB97C\uB984\uB985\uB987\uB989\uB98A\uB98D\uB98E\uB9AC\uB9AD\uB9B0\uB9B4\uB9BC\uB9BD\uB9BF\uB9C1\uB9C8\uB9C9\uB9CC\uB9CE\",4,\"\uB9D8\uB9D9\uB9DB\uB9DD\uB9DE\uB9E1\uB9E3\uB9E4\uB9E5\uB9E8\uB9EC\uB9F4\uB9F5\uB9F7\uB9F8\uB9F9\uB9FA\uBA00\uBA01\uBA08\uBA15\uBA38\uBA39\uBA3C\uBA40\uBA42\uBA48\uBA49\uBA4B\uBA4D\uBA4E\uBA53\uBA54\uBA55\uBA58\uBA5C\uBA64\uBA65\uBA67\uBA68\uBA69\uBA70\uBA71\uBA74\uBA78\uBA83\uBA84\uBA85\uBA87\uBA8C\uBAA8\uBAA9\uBAAB\uBAAC\uBAB0\uBAB2\uBAB8\uBAB9\uBABB\uBABD\uBAC4\uBAC8\uBAD8\uBAD9\uBAFC\"],\n[\"b941\",\"\uD22A\uD22B\uD22E\uD22F\uD231\uD232\uD233\uD235\",6,\"\uD23E\uD240\uD242\",5,\"\uD249\uD24A\uD24B\uD24C\"],\n[\"b961\",\"\uD24D\",14,\"\uD25D\",6,\"\uD265\uD266\uD267\uD268\"],\n[\"b981\",\"\uD269\",22,\"\uD282\uD283\uD285\uD286\uD287\uD289\uD28A\uD28B\uD28C\uBB00\uBB04\uBB0D\uBB0F\uBB11\uBB18\uBB1C\uBB20\uBB29\uBB2B\uBB34\uBB35\uBB36\uBB38\uBB3B\uBB3C\uBB3D\uBB3E\uBB44\uBB45\uBB47\uBB49\uBB4D\uBB4F\uBB50\uBB54\uBB58\uBB61\uBB63\uBB6C\uBB88\uBB8C\uBB90\uBBA4\uBBA8\uBBAC\uBBB4\uBBB7\uBBC0\uBBC4\uBBC8\uBBD0\uBBD3\uBBF8\uBBF9\uBBFC\uBBFF\uBC00\uBC02\uBC08\uBC09\uBC0B\uBC0C\uBC0D\uBC0F\uBC11\uBC14\",4,\"\uBC1B\",4,\"\uBC24\uBC25\uBC27\uBC29\uBC2D\uBC30\uBC31\uBC34\uBC38\uBC40\uBC41\uBC43\uBC44\uBC45\uBC49\uBC4C\uBC4D\uBC50\uBC5D\uBC84\uBC85\uBC88\uBC8B\uBC8C\uBC8E\uBC94\uBC95\uBC97\"],\n[\"ba41\",\"\uD28D\uD28E\uD28F\uD292\uD293\uD294\uD296\",5,\"\uD29D\uD29E\uD29F\uD2A1\uD2A2\uD2A3\uD2A5\",6,\"\uD2AD\"],\n[\"ba61\",\"\uD2AE\uD2AF\uD2B0\uD2B2\",5,\"\uD2BA\uD2BB\uD2BD\uD2BE\uD2C1\uD2C3\",4,\"\uD2CA\uD2CC\",5],\n[\"ba81\",\"\uD2D2\uD2D3\uD2D5\uD2D6\uD2D7\uD2D9\uD2DA\uD2DB\uD2DD\",6,\"\uD2E6\",9,\"\uD2F2\uD2F3\uD2F5\uD2F6\uD2F7\uD2F9\uD2FA\uBC99\uBC9A\uBCA0\uBCA1\uBCA4\uBCA7\uBCA8\uBCB0\uBCB1\uBCB3\uBCB4\uBCB5\uBCBC\uBCBD\uBCC0\uBCC4\uBCCD\uBCCF\uBCD0\uBCD1\uBCD5\uBCD8\uBCDC\uBCF4\uBCF5\uBCF6\uBCF8\uBCFC\uBD04\uBD05\uBD07\uBD09\uBD10\uBD14\uBD24\uBD2C\uBD40\uBD48\uBD49\uBD4C\uBD50\uBD58\uBD59\uBD64\uBD68\uBD80\uBD81\uBD84\uBD87\uBD88\uBD89\uBD8A\uBD90\uBD91\uBD93\uBD95\uBD99\uBD9A\uBD9C\uBDA4\uBDB0\uBDB8\uBDD4\uBDD5\uBDD8\uBDDC\uBDE9\uBDF0\uBDF4\uBDF8\uBE00\uBE03\uBE05\uBE0C\uBE0D\uBE10\uBE14\uBE1C\uBE1D\uBE1F\uBE44\uBE45\uBE48\uBE4C\uBE4E\uBE54\uBE55\uBE57\uBE59\uBE5A\uBE5B\uBE60\uBE61\uBE64\"],\n[\"bb41\",\"\uD2FB\",4,\"\uD302\uD304\uD306\",5,\"\uD30F\uD311\uD312\uD313\uD315\uD317\",4,\"\uD31E\uD322\uD323\"],\n[\"bb61\",\"\uD324\uD326\uD327\uD32A\uD32B\uD32D\uD32E\uD32F\uD331\",6,\"\uD33A\uD33E\",5,\"\uD346\uD347\uD348\uD349\"],\n[\"bb81\",\"\uD34A\",31,\"\uBE68\uBE6A\uBE70\uBE71\uBE73\uBE74\uBE75\uBE7B\uBE7C\uBE7D\uBE80\uBE84\uBE8C\uBE8D\uBE8F\uBE90\uBE91\uBE98\uBE99\uBEA8\uBED0\uBED1\uBED4\uBED7\uBED8\uBEE0\uBEE3\uBEE4\uBEE5\uBEEC\uBF01\uBF08\uBF09\uBF18\uBF19\uBF1B\uBF1C\uBF1D\uBF40\uBF41\uBF44\uBF48\uBF50\uBF51\uBF55\uBF94\uBFB0\uBFC5\uBFCC\uBFCD\uBFD0\uBFD4\uBFDC\uBFDF\uBFE1\uC03C\uC051\uC058\uC05C\uC060\uC068\uC069\uC090\uC091\uC094\uC098\uC0A0\uC0A1\uC0A3\uC0A5\uC0AC\uC0AD\uC0AF\uC0B0\uC0B3\uC0B4\uC0B5\uC0B6\uC0BC\uC0BD\uC0BF\uC0C0\uC0C1\uC0C5\uC0C8\uC0C9\uC0CC\uC0D0\uC0D8\uC0D9\uC0DB\uC0DC\uC0DD\uC0E4\"],\n[\"bc41\",\"\uD36A\",17,\"\uD37E\uD37F\uD381\uD382\uD383\uD385\uD386\uD387\"],\n[\"bc61\",\"\uD388\uD389\uD38A\uD38B\uD38E\uD392\",5,\"\uD39A\uD39B\uD39D\uD39E\uD39F\uD3A1\",6,\"\uD3AA\uD3AC\uD3AE\"],\n[\"bc81\",\"\uD3AF\",4,\"\uD3B5\uD3B6\uD3B7\uD3B9\uD3BA\uD3BB\uD3BD\",6,\"\uD3C6\uD3C7\uD3CA\",5,\"\uD3D1\",5,\"\uC0E5\uC0E8\uC0EC\uC0F4\uC0F5\uC0F7\uC0F9\uC100\uC104\uC108\uC110\uC115\uC11C\",4,\"\uC123\uC124\uC126\uC127\uC12C\uC12D\uC12F\uC130\uC131\uC136\uC138\uC139\uC13C\uC140\uC148\uC149\uC14B\uC14C\uC14D\uC154\uC155\uC158\uC15C\uC164\uC165\uC167\uC168\uC169\uC170\uC174\uC178\uC185\uC18C\uC18D\uC18E\uC190\uC194\uC196\uC19C\uC19D\uC19F\uC1A1\uC1A5\uC1A8\uC1A9\uC1AC\uC1B0\uC1BD\uC1C4\uC1C8\uC1CC\uC1D4\uC1D7\uC1D8\uC1E0\uC1E4\uC1E8\uC1F0\uC1F1\uC1F3\uC1FC\uC1FD\uC200\uC204\uC20C\uC20D\uC20F\uC211\uC218\uC219\uC21C\uC21F\uC220\uC228\uC229\uC22B\uC22D\"],\n[\"bd41\",\"\uD3D7\uD3D9\",7,\"\uD3E2\uD3E4\",7,\"\uD3EE\uD3EF\uD3F1\uD3F2\uD3F3\uD3F5\uD3F6\uD3F7\"],\n[\"bd61\",\"\uD3F8\uD3F9\uD3FA\uD3FB\uD3FE\uD400\uD402\",5,\"\uD409\",13],\n[\"bd81\",\"\uD417\",5,\"\uD41E\",25,\"\uC22F\uC231\uC232\uC234\uC248\uC250\uC251\uC254\uC258\uC260\uC265\uC26C\uC26D\uC270\uC274\uC27C\uC27D\uC27F\uC281\uC288\uC289\uC290\uC298\uC29B\uC29D\uC2A4\uC2A5\uC2A8\uC2AC\uC2AD\uC2B4\uC2B5\uC2B7\uC2B9\uC2DC\uC2DD\uC2E0\uC2E3\uC2E4\uC2EB\uC2EC\uC2ED\uC2EF\uC2F1\uC2F6\uC2F8\uC2F9\uC2FB\uC2FC\uC300\uC308\uC309\uC30C\uC30D\uC313\uC314\uC315\uC318\uC31C\uC324\uC325\uC328\uC329\uC345\uC368\uC369\uC36C\uC370\uC372\uC378\uC379\uC37C\uC37D\uC384\uC388\uC38C\uC3C0\uC3D8\uC3D9\uC3DC\uC3DF\uC3E0\uC3E2\uC3E8\uC3E9\uC3ED\uC3F4\uC3F5\uC3F8\uC408\uC410\uC424\uC42C\uC430\"],\n[\"be41\",\"\uD438\",7,\"\uD441\uD442\uD443\uD445\",14],\n[\"be61\",\"\uD454\",7,\"\uD45D\uD45E\uD45F\uD461\uD462\uD463\uD465\",7,\"\uD46E\uD470\uD471\uD472\"],\n[\"be81\",\"\uD473\",4,\"\uD47A\uD47B\uD47D\uD47E\uD481\uD483\",4,\"\uD48A\uD48C\uD48E\",5,\"\uD495\",8,\"\uC434\uC43C\uC43D\uC448\uC464\uC465\uC468\uC46C\uC474\uC475\uC479\uC480\uC494\uC49C\uC4B8\uC4BC\uC4E9\uC4F0\uC4F1\uC4F4\uC4F8\uC4FA\uC4FF\uC500\uC501\uC50C\uC510\uC514\uC51C\uC528\uC529\uC52C\uC530\uC538\uC539\uC53B\uC53D\uC544\uC545\uC548\uC549\uC54A\uC54C\uC54D\uC54E\uC553\uC554\uC555\uC557\uC558\uC559\uC55D\uC55E\uC560\uC561\uC564\uC568\uC570\uC571\uC573\uC574\uC575\uC57C\uC57D\uC580\uC584\uC587\uC58C\uC58D\uC58F\uC591\uC595\uC597\uC598\uC59C\uC5A0\uC5A9\uC5B4\uC5B5\uC5B8\uC5B9\uC5BB\uC5BC\uC5BD\uC5BE\uC5C4\",6,\"\uC5CC\uC5CE\"],\n[\"bf41\",\"\uD49E\",10,\"\uD4AA\",14],\n[\"bf61\",\"\uD4B9\",18,\"\uD4CD\uD4CE\uD4CF\uD4D1\uD4D2\uD4D3\uD4D5\"],\n[\"bf81\",\"\uD4D6\",5,\"\uD4DD\uD4DE\uD4E0\",7,\"\uD4E9\uD4EA\uD4EB\uD4ED\uD4EE\uD4EF\uD4F1\",6,\"\uD4F9\uD4FA\uD4FC\uC5D0\uC5D1\uC5D4\uC5D8\uC5E0\uC5E1\uC5E3\uC5E5\uC5EC\uC5ED\uC5EE\uC5F0\uC5F4\uC5F6\uC5F7\uC5FC\",5,\"\uC605\uC606\uC607\uC608\uC60C\uC610\uC618\uC619\uC61B\uC61C\uC624\uC625\uC628\uC62C\uC62D\uC62E\uC630\uC633\uC634\uC635\uC637\uC639\uC63B\uC640\uC641\uC644\uC648\uC650\uC651\uC653\uC654\uC655\uC65C\uC65D\uC660\uC66C\uC66F\uC671\uC678\uC679\uC67C\uC680\uC688\uC689\uC68B\uC68D\uC694\uC695\uC698\uC69C\uC6A4\uC6A5\uC6A7\uC6A9\uC6B0\uC6B1\uC6B4\uC6B8\uC6B9\uC6BA\uC6C0\uC6C1\uC6C3\uC6C5\uC6CC\uC6CD\uC6D0\uC6D4\uC6DC\uC6DD\uC6E0\uC6E1\uC6E8\"],\n[\"c041\",\"\uD4FE\",5,\"\uD505\uD506\uD507\uD509\uD50A\uD50B\uD50D\",6,\"\uD516\uD518\",5],\n[\"c061\",\"\uD51E\",25],\n[\"c081\",\"\uD538\uD539\uD53A\uD53B\uD53E\uD53F\uD541\uD542\uD543\uD545\",6,\"\uD54E\uD550\uD552\",5,\"\uD55A\uD55B\uD55D\uD55E\uD55F\uD561\uD562\uD563\uC6E9\uC6EC\uC6F0\uC6F8\uC6F9\uC6FD\uC704\uC705\uC708\uC70C\uC714\uC715\uC717\uC719\uC720\uC721\uC724\uC728\uC730\uC731\uC733\uC735\uC737\uC73C\uC73D\uC740\uC744\uC74A\uC74C\uC74D\uC74F\uC751\",7,\"\uC75C\uC760\uC768\uC76B\uC774\uC775\uC778\uC77C\uC77D\uC77E\uC783\uC784\uC785\uC787\uC788\uC789\uC78A\uC78E\uC790\uC791\uC794\uC796\uC797\uC798\uC79A\uC7A0\uC7A1\uC7A3\uC7A4\uC7A5\uC7A6\uC7AC\uC7AD\uC7B0\uC7B4\uC7BC\uC7BD\uC7BF\uC7C0\uC7C1\uC7C8\uC7C9\uC7CC\uC7CE\uC7D0\uC7D8\uC7DD\uC7E4\uC7E8\uC7EC\uC800\uC801\uC804\uC808\uC80A\"],\n[\"c141\",\"\uD564\uD566\uD567\uD56A\uD56C\uD56E\",5,\"\uD576\uD577\uD579\uD57A\uD57B\uD57D\",6,\"\uD586\uD58A\uD58B\"],\n[\"c161\",\"\uD58C\uD58D\uD58E\uD58F\uD591\",19,\"\uD5A6\uD5A7\"],\n[\"c181\",\"\uD5A8\",31,\"\uC810\uC811\uC813\uC815\uC816\uC81C\uC81D\uC820\uC824\uC82C\uC82D\uC82F\uC831\uC838\uC83C\uC840\uC848\uC849\uC84C\uC84D\uC854\uC870\uC871\uC874\uC878\uC87A\uC880\uC881\uC883\uC885\uC886\uC887\uC88B\uC88C\uC88D\uC894\uC89D\uC89F\uC8A1\uC8A8\uC8BC\uC8BD\uC8C4\uC8C8\uC8CC\uC8D4\uC8D5\uC8D7\uC8D9\uC8E0\uC8E1\uC8E4\uC8F5\uC8FC\uC8FD\uC900\uC904\uC905\uC906\uC90C\uC90D\uC90F\uC911\uC918\uC92C\uC934\uC950\uC951\uC954\uC958\uC960\uC961\uC963\uC96C\uC970\uC974\uC97C\uC988\uC989\uC98C\uC990\uC998\uC999\uC99B\uC99D\uC9C0\uC9C1\uC9C4\uC9C7\uC9C8\uC9CA\uC9D0\uC9D1\uC9D3\"],\n[\"c241\",\"\uD5CA\uD5CB\uD5CD\uD5CE\uD5CF\uD5D1\uD5D3\",4,\"\uD5DA\uD5DC\uD5DE\",5,\"\uD5E6\uD5E7\uD5E9\uD5EA\uD5EB\uD5ED\uD5EE\"],\n[\"c261\",\"\uD5EF\",4,\"\uD5F6\uD5F8\uD5FA\",5,\"\uD602\uD603\uD605\uD606\uD607\uD609\",6,\"\uD612\"],\n[\"c281\",\"\uD616\",5,\"\uD61D\uD61E\uD61F\uD621\uD622\uD623\uD625\",7,\"\uD62E\",9,\"\uD63A\uD63B\uC9D5\uC9D6\uC9D9\uC9DA\uC9DC\uC9DD\uC9E0\uC9E2\uC9E4\uC9E7\uC9EC\uC9ED\uC9EF\uC9F0\uC9F1\uC9F8\uC9F9\uC9FC\uCA00\uCA08\uCA09\uCA0B\uCA0C\uCA0D\uCA14\uCA18\uCA29\uCA4C\uCA4D\uCA50\uCA54\uCA5C\uCA5D\uCA5F\uCA60\uCA61\uCA68\uCA7D\uCA84\uCA98\uCABC\uCABD\uCAC0\uCAC4\uCACC\uCACD\uCACF\uCAD1\uCAD3\uCAD8\uCAD9\uCAE0\uCAEC\uCAF4\uCB08\uCB10\uCB14\uCB18\uCB20\uCB21\uCB41\uCB48\uCB49\uCB4C\uCB50\uCB58\uCB59\uCB5D\uCB64\uCB78\uCB79\uCB9C\uCBB8\uCBD4\uCBE4\uCBE7\uCBE9\uCC0C\uCC0D\uCC10\uCC14\uCC1C\uCC1D\uCC21\uCC22\uCC27\uCC28\uCC29\uCC2C\uCC2E\uCC30\uCC38\uCC39\uCC3B\"],\n[\"c341\",\"\uD63D\uD63E\uD63F\uD641\uD642\uD643\uD644\uD646\uD647\uD64A\uD64C\uD64E\uD64F\uD650\uD652\uD653\uD656\uD657\uD659\uD65A\uD65B\uD65D\",4],\n[\"c361\",\"\uD662\",4,\"\uD668\uD66A\",5,\"\uD672\uD673\uD675\",11],\n[\"c381\",\"\uD681\uD682\uD684\uD686\",5,\"\uD68E\uD68F\uD691\uD692\uD693\uD695\",7,\"\uD69E\uD6A0\uD6A2\",5,\"\uD6A9\uD6AA\uCC3C\uCC3D\uCC3E\uCC44\uCC45\uCC48\uCC4C\uCC54\uCC55\uCC57\uCC58\uCC59\uCC60\uCC64\uCC66\uCC68\uCC70\uCC75\uCC98\uCC99\uCC9C\uCCA0\uCCA8\uCCA9\uCCAB\uCCAC\uCCAD\uCCB4\uCCB5\uCCB8\uCCBC\uCCC4\uCCC5\uCCC7\uCCC9\uCCD0\uCCD4\uCCE4\uCCEC\uCCF0\uCD01\uCD08\uCD09\uCD0C\uCD10\uCD18\uCD19\uCD1B\uCD1D\uCD24\uCD28\uCD2C\uCD39\uCD5C\uCD60\uCD64\uCD6C\uCD6D\uCD6F\uCD71\uCD78\uCD88\uCD94\uCD95\uCD98\uCD9C\uCDA4\uCDA5\uCDA7\uCDA9\uCDB0\uCDC4\uCDCC\uCDD0\uCDE8\uCDEC\uCDF0\uCDF8\uCDF9\uCDFB\uCDFD\uCE04\uCE08\uCE0C\uCE14\uCE19\uCE20\uCE21\uCE24\uCE28\uCE30\uCE31\uCE33\uCE35\"],\n[\"c441\",\"\uD6AB\uD6AD\uD6AE\uD6AF\uD6B1\",7,\"\uD6BA\uD6BC\",7,\"\uD6C6\uD6C7\uD6C9\uD6CA\uD6CB\"],\n[\"c461\",\"\uD6CD\uD6CE\uD6CF\uD6D0\uD6D2\uD6D3\uD6D5\uD6D6\uD6D8\uD6DA\",5,\"\uD6E1\uD6E2\uD6E3\uD6E5\uD6E6\uD6E7\uD6E9\",4],\n[\"c481\",\"\uD6EE\uD6EF\uD6F1\uD6F2\uD6F3\uD6F4\uD6F6\",5,\"\uD6FE\uD6FF\uD701\uD702\uD703\uD705\",11,\"\uD712\uD713\uD714\uCE58\uCE59\uCE5C\uCE5F\uCE60\uCE61\uCE68\uCE69\uCE6B\uCE6D\uCE74\uCE75\uCE78\uCE7C\uCE84\uCE85\uCE87\uCE89\uCE90\uCE91\uCE94\uCE98\uCEA0\uCEA1\uCEA3\uCEA4\uCEA5\uCEAC\uCEAD\uCEC1\uCEE4\uCEE5\uCEE8\uCEEB\uCEEC\uCEF4\uCEF5\uCEF7\uCEF8\uCEF9\uCF00\uCF01\uCF04\uCF08\uCF10\uCF11\uCF13\uCF15\uCF1C\uCF20\uCF24\uCF2C\uCF2D\uCF2F\uCF30\uCF31\uCF38\uCF54\uCF55\uCF58\uCF5C\uCF64\uCF65\uCF67\uCF69\uCF70\uCF71\uCF74\uCF78\uCF80\uCF85\uCF8C\uCFA1\uCFA8\uCFB0\uCFC4\uCFE0\uCFE1\uCFE4\uCFE8\uCFF0\uCFF1\uCFF3\uCFF5\uCFFC\uD000\uD004\uD011\uD018\uD02D\uD034\uD035\uD038\uD03C\"],\n[\"c541\",\"\uD715\uD716\uD717\uD71A\uD71B\uD71D\uD71E\uD71F\uD721\",6,\"\uD72A\uD72C\uD72E\",5,\"\uD736\uD737\uD739\"],\n[\"c561\",\"\uD73A\uD73B\uD73D\",6,\"\uD745\uD746\uD748\uD74A\",5,\"\uD752\uD753\uD755\uD75A\",4],\n[\"c581\",\"\uD75F\uD762\uD764\uD766\uD767\uD768\uD76A\uD76B\uD76D\uD76E\uD76F\uD771\uD772\uD773\uD775\",6,\"\uD77E\uD77F\uD780\uD782\",5,\"\uD78A\uD78B\uD044\uD045\uD047\uD049\uD050\uD054\uD058\uD060\uD06C\uD06D\uD070\uD074\uD07C\uD07D\uD081\uD0A4\uD0A5\uD0A8\uD0AC\uD0B4\uD0B5\uD0B7\uD0B9\uD0C0\uD0C1\uD0C4\uD0C8\uD0C9\uD0D0\uD0D1\uD0D3\uD0D4\uD0D5\uD0DC\uD0DD\uD0E0\uD0E4\uD0EC\uD0ED\uD0EF\uD0F0\uD0F1\uD0F8\uD10D\uD130\uD131\uD134\uD138\uD13A\uD140\uD141\uD143\uD144\uD145\uD14C\uD14D\uD150\uD154\uD15C\uD15D\uD15F\uD161\uD168\uD16C\uD17C\uD184\uD188\uD1A0\uD1A1\uD1A4\uD1A8\uD1B0\uD1B1\uD1B3\uD1B5\uD1BA\uD1BC\uD1C0\uD1D8\uD1F4\uD1F8\uD207\uD209\uD210\uD22C\uD22D\uD230\uD234\uD23C\uD23D\uD23F\uD241\uD248\uD25C\"],\n[\"c641\",\"\uD78D\uD78E\uD78F\uD791\",6,\"\uD79A\uD79C\uD79E\",5],\n[\"c6a1\",\"\uD264\uD280\uD281\uD284\uD288\uD290\uD291\uD295\uD29C\uD2A0\uD2A4\uD2AC\uD2B1\uD2B8\uD2B9\uD2BC\uD2BF\uD2C0\uD2C2\uD2C8\uD2C9\uD2CB\uD2D4\uD2D8\uD2DC\uD2E4\uD2E5\uD2F0\uD2F1\uD2F4\uD2F8\uD300\uD301\uD303\uD305\uD30C\uD30D\uD30E\uD310\uD314\uD316\uD31C\uD31D\uD31F\uD320\uD321\uD325\uD328\uD329\uD32C\uD330\uD338\uD339\uD33B\uD33C\uD33D\uD344\uD345\uD37C\uD37D\uD380\uD384\uD38C\uD38D\uD38F\uD390\uD391\uD398\uD399\uD39C\uD3A0\uD3A8\uD3A9\uD3AB\uD3AD\uD3B4\uD3B8\uD3BC\uD3C4\uD3C5\uD3C8\uD3C9\uD3D0\uD3D8\uD3E1\uD3E3\uD3EC\uD3ED\uD3F0\uD3F4\uD3FC\uD3FD\uD3FF\uD401\"],\n[\"c7a1\",\"\uD408\uD41D\uD440\uD444\uD45C\uD460\uD464\uD46D\uD46F\uD478\uD479\uD47C\uD47F\uD480\uD482\uD488\uD489\uD48B\uD48D\uD494\uD4A9\uD4CC\uD4D0\uD4D4\uD4DC\uD4DF\uD4E8\uD4EC\uD4F0\uD4F8\uD4FB\uD4FD\uD504\uD508\uD50C\uD514\uD515\uD517\uD53C\uD53D\uD540\uD544\uD54C\uD54D\uD54F\uD551\uD558\uD559\uD55C\uD560\uD565\uD568\uD569\uD56B\uD56D\uD574\uD575\uD578\uD57C\uD584\uD585\uD587\uD588\uD589\uD590\uD5A5\uD5C8\uD5C9\uD5CC\uD5D0\uD5D2\uD5D8\uD5D9\uD5DB\uD5DD\uD5E4\uD5E5\uD5E8\uD5EC\uD5F4\uD5F5\uD5F7\uD5F9\uD600\uD601\uD604\uD608\uD610\uD611\uD613\uD614\uD615\uD61C\uD620\"],\n[\"c8a1\",\"\uD624\uD62D\uD638\uD639\uD63C\uD640\uD645\uD648\uD649\uD64B\uD64D\uD651\uD654\uD655\uD658\uD65C\uD667\uD669\uD670\uD671\uD674\uD683\uD685\uD68C\uD68D\uD690\uD694\uD69D\uD69F\uD6A1\uD6A8\uD6AC\uD6B0\uD6B9\uD6BB\uD6C4\uD6C5\uD6C8\uD6CC\uD6D1\uD6D4\uD6D7\uD6D9\uD6E0\uD6E4\uD6E8\uD6F0\uD6F5\uD6FC\uD6FD\uD700\uD704\uD711\uD718\uD719\uD71C\uD720\uD728\uD729\uD72B\uD72D\uD734\uD735\uD738\uD73C\uD744\uD747\uD749\uD750\uD751\uD754\uD756\uD757\uD758\uD759\uD760\uD761\uD763\uD765\uD769\uD76C\uD770\uD774\uD77C\uD77D\uD781\uD788\uD789\uD78C\uD790\uD798\uD799\uD79B\uD79D\"],\n[\"caa1\",\"\u4F3D\u4F73\u5047\u50F9\u52A0\u53EF\u5475\u54E5\u5609\u5AC1\u5BB6\u6687\u67B6\u67B7\u67EF\u6B4C\u73C2\u75C2\u7A3C\u82DB\u8304\u8857\u8888\u8A36\u8CC8\u8DCF\u8EFB\u8FE6\u99D5\u523B\u5374\u5404\u606A\u6164\u6BBC\u73CF\u811A\u89BA\u89D2\u95A3\u4F83\u520A\u58BE\u5978\u59E6\u5E72\u5E79\u61C7\u63C0\u6746\u67EC\u687F\u6F97\u764E\u770B\u78F5\u7A08\u7AFF\u7C21\u809D\u826E\u8271\u8AEB\u9593\u4E6B\u559D\u66F7\u6E34\u78A3\u7AED\u845B\u8910\u874E\u97A8\u52D8\u574E\u582A\u5D4C\u611F\u61BE\u6221\u6562\u67D1\u6A44\u6E1B\u7518\u75B3\u76E3\u77B0\u7D3A\u90AF\u9451\u9452\u9F95\"],\n[\"cba1\",\"\u5323\u5CAC\u7532\u80DB\u9240\u9598\u525B\u5808\u59DC\u5CA1\u5D17\u5EB7\u5F3A\u5F4A\u6177\u6C5F\u757A\u7586\u7CE0\u7D73\u7DB1\u7F8C\u8154\u8221\u8591\u8941\u8B1B\u92FC\u964D\u9C47\u4ECB\u4EF7\u500B\u51F1\u584F\u6137\u613E\u6168\u6539\u69EA\u6F11\u75A5\u7686\u76D6\u7B87\u82A5\u84CB\uF900\u93A7\u958B\u5580\u5BA2\u5751\uF901\u7CB3\u7FB9\u91B5\u5028\u53BB\u5C45\u5DE8\u62D2\u636E\u64DA\u64E7\u6E20\u70AC\u795B\u8DDD\u8E1E\uF902\u907D\u9245\u92F8\u4E7E\u4EF6\u5065\u5DFE\u5EFA\u6106\u6957\u8171\u8654\u8E47\u9375\u9A2B\u4E5E\u5091\u6770\u6840\u5109\u528D\u5292\u6AA2\"],\n[\"cca1\",\"\u77BC\u9210\u9ED4\u52AB\u602F\u8FF2\u5048\u61A9\u63ED\u64CA\u683C\u6A84\u6FC0\u8188\u89A1\u9694\u5805\u727D\u72AC\u7504\u7D79\u7E6D\u80A9\u898B\u8B74\u9063\u9D51\u6289\u6C7A\u6F54\u7D50\u7F3A\u8A23\u517C\u614A\u7B9D\u8B19\u9257\u938C\u4EAC\u4FD3\u501E\u50BE\u5106\u52C1\u52CD\u537F\u5770\u5883\u5E9A\u5F91\u6176\u61AC\u64CE\u656C\u666F\u66BB\u66F4\u6897\u6D87\u7085\u70F1\u749F\u74A5\u74CA\u75D9\u786C\u78EC\u7ADF\u7AF6\u7D45\u7D93\u8015\u803F\u811B\u8396\u8B66\u8F15\u9015\u93E1\u9803\u9838\u9A5A\u9BE8\u4FC2\u5553\u583A\u5951\u5B63\u5C46\u60B8\u6212\u6842\u68B0\"],\n[\"cda1\",\"\u68E8\u6EAA\u754C\u7678\u78CE\u7A3D\u7CFB\u7E6B\u7E7C\u8A08\u8AA1\u8C3F\u968E\u9DC4\u53E4\u53E9\u544A\u5471\u56FA\u59D1\u5B64\u5C3B\u5EAB\u62F7\u6537\u6545\u6572\u66A0\u67AF\u69C1\u6CBD\u75FC\u7690\u777E\u7A3F\u7F94\u8003\u80A1\u818F\u82E6\u82FD\u83F0\u85C1\u8831\u88B4\u8AA5\uF903\u8F9C\u932E\u96C7\u9867\u9AD8\u9F13\u54ED\u659B\u66F2\u688F\u7A40\u8C37\u9D60\u56F0\u5764\u5D11\u6606\u68B1\u68CD\u6EFE\u7428\u889E\u9BE4\u6C68\uF904\u9AA8\u4F9B\u516C\u5171\u529F\u5B54\u5DE5\u6050\u606D\u62F1\u63A7\u653B\u73D9\u7A7A\u86A3\u8CA2\u978F\u4E32\u5BE1\u6208\u679C\u74DC\"],\n[\"cea1\",\"\u79D1\u83D3\u8A87\u8AB2\u8DE8\u904E\u934B\u9846\u5ED3\u69E8\u85FF\u90ED\uF905\u51A0\u5B98\u5BEC\u6163\u68FA\u6B3E\u704C\u742F\u74D8\u7BA1\u7F50\u83C5\u89C0\u8CAB\u95DC\u9928\u522E\u605D\u62EC\u9002\u4F8A\u5149\u5321\u58D9\u5EE3\u66E0\u6D38\u709A\u72C2\u73D6\u7B50\u80F1\u945B\u5366\u639B\u7F6B\u4E56\u5080\u584A\u58DE\u602A\u6127\u62D0\u69D0\u9B41\u5B8F\u7D18\u80B1\u8F5F\u4EA4\u50D1\u54AC\u55AC\u5B0C\u5DA0\u5DE7\u652A\u654E\u6821\u6A4B\u72E1\u768E\u77EF\u7D5E\u7FF9\u81A0\u854E\u86DF\u8F03\u8F4E\u90CA\u9903\u9A55\u9BAB\u4E18\u4E45\u4E5D\u4EC7\u4FF1\u5177\u52FE\"],\n[\"cfa1\",\"\u5340\u53E3\u53E5\u548E\u5614\u5775\u57A2\u5BC7\u5D87\u5ED0\u61FC\u62D8\u6551\u67B8\u67E9\u69CB\u6B50\u6BC6\u6BEC\u6C42\u6E9D\u7078\u72D7\u7396\u7403\u77BF\u77E9\u7A76\u7D7F\u8009\u81FC\u8205\u820A\u82DF\u8862\u8B33\u8CFC\u8EC0\u9011\u90B1\u9264\u92B6\u99D2\u9A45\u9CE9\u9DD7\u9F9C\u570B\u5C40\u83CA\u97A0\u97AB\u9EB4\u541B\u7A98\u7FA4\u88D9\u8ECD\u90E1\u5800\u5C48\u6398\u7A9F\u5BAE\u5F13\u7A79\u7AAE\u828E\u8EAC\u5026\u5238\u52F8\u5377\u5708\u62F3\u6372\u6B0A\u6DC3\u7737\u53A5\u7357\u8568\u8E76\u95D5\u673A\u6AC3\u6F70\u8A6D\u8ECC\u994B\uF906\u6677\u6B78\u8CB4\"],\n[\"d0a1\",\"\u9B3C\uF907\u53EB\u572D\u594E\u63C6\u69FB\u73EA\u7845\u7ABA\u7AC5\u7CFE\u8475\u898F\u8D73\u9035\u95A8\u52FB\u5747\u7547\u7B60\u83CC\u921E\uF908\u6A58\u514B\u524B\u5287\u621F\u68D8\u6975\u9699\u50C5\u52A4\u52E4\u61C3\u65A4\u6839\u69FF\u747E\u7B4B\u82B9\u83EB\u89B2\u8B39\u8FD1\u9949\uF909\u4ECA\u5997\u64D2\u6611\u6A8E\u7434\u7981\u79BD\u82A9\u887E\u887F\u895F\uF90A\u9326\u4F0B\u53CA\u6025\u6271\u6C72\u7D1A\u7D66\u4E98\u5162\u77DC\u80AF\u4F01\u4F0E\u5176\u5180\u55DC\u5668\u573B\u57FA\u57FC\u5914\u5947\u5993\u5BC4\u5C90\u5D0E\u5DF1\u5E7E\u5FCC\u6280\u65D7\u65E3\"],\n[\"d1a1\",\"\u671E\u671F\u675E\u68CB\u68C4\u6A5F\u6B3A\u6C23\u6C7D\u6C82\u6DC7\u7398\u7426\u742A\u7482\u74A3\u7578\u757F\u7881\u78EF\u7941\u7947\u7948\u797A\u7B95\u7D00\u7DBA\u7F88\u8006\u802D\u808C\u8A18\u8B4F\u8C48\u8D77\u9321\u9324\u98E2\u9951\u9A0E\u9A0F\u9A65\u9E92\u7DCA\u4F76\u5409\u62EE\u6854\u91D1\u55AB\u513A\uF90B\uF90C\u5A1C\u61E6\uF90D\u62CF\u62FF\uF90E\",5,\"\u90A3\uF914\",4,\"\u8AFE\uF919\uF91A\uF91B\uF91C\u6696\uF91D\u7156\uF91E\uF91F\u96E3\uF920\u634F\u637A\u5357\uF921\u678F\u6960\u6E73\uF922\u7537\uF923\uF924\uF925\"],\n[\"d2a1\",\"\u7D0D\uF926\uF927\u8872\u56CA\u5A18\uF928\",4,\"\u4E43\uF92D\u5167\u5948\u67F0\u8010\uF92E\u5973\u5E74\u649A\u79CA\u5FF5\u606C\u62C8\u637B\u5BE7\u5BD7\u52AA\uF92F\u5974\u5F29\u6012\uF930\uF931\uF932\u7459\uF933\",5,\"\u99D1\uF939\",10,\"\u6FC3\uF944\uF945\u81BF\u8FB2\u60F1\uF946\uF947\u8166\uF948\uF949\u5C3F\uF94A\",7,\"\u5AE9\u8A25\u677B\u7D10\uF952\",5,\"\u80FD\uF958\uF959\u5C3C\u6CE5\u533F\u6EBA\u591A\u8336\"],\n[\"d3a1\",\"\u4E39\u4EB6\u4F46\u55AE\u5718\u58C7\u5F56\u65B7\u65E6\u6A80\u6BB5\u6E4D\u77ED\u7AEF\u7C1E\u7DDE\u86CB\u8892\u9132\u935B\u64BB\u6FBE\u737A\u75B8\u9054\u5556\u574D\u61BA\u64D4\u66C7\u6DE1\u6E5B\u6F6D\u6FB9\u75F0\u8043\u81BD\u8541\u8983\u8AC7\u8B5A\u931F\u6C93\u7553\u7B54\u8E0F\u905D\u5510\u5802\u5858\u5E62\u6207\u649E\u68E0\u7576\u7CD6\u87B3\u9EE8\u4EE3\u5788\u576E\u5927\u5C0D\u5CB1\u5E36\u5F85\u6234\u64E1\u73B3\u81FA\u888B\u8CB8\u968A\u9EDB\u5B85\u5FB7\u60B3\u5012\u5200\u5230\u5716\u5835\u5857\u5C0E\u5C60\u5CF6\u5D8B\u5EA6\u5F92\u60BC\u6311\u6389\u6417\u6843\"],\n[\"d4a1\",\"\u68F9\u6AC2\u6DD8\u6E21\u6ED4\u6FE4\u71FE\u76DC\u7779\u79B1\u7A3B\u8404\u89A9\u8CED\u8DF3\u8E48\u9003\u9014\u9053\u90FD\u934D\u9676\u97DC\u6BD2\u7006\u7258\u72A2\u7368\u7763\u79BF\u7BE4\u7E9B\u8B80\u58A9\u60C7\u6566\u65FD\u66BE\u6C8C\u711E\u71C9\u8C5A\u9813\u4E6D\u7A81\u4EDD\u51AC\u51CD\u52D5\u540C\u61A7\u6771\u6850\u68DF\u6D1E\u6F7C\u75BC\u77B3\u7AE5\u80F4\u8463\u9285\u515C\u6597\u675C\u6793\u75D8\u7AC7\u8373\uF95A\u8C46\u9017\u982D\u5C6F\u81C0\u829A\u9041\u906F\u920D\u5F97\u5D9D\u6A59\u71C8\u767B\u7B49\u85E4\u8B04\u9127\u9A30\u5587\u61F6\uF95B\u7669\u7F85\"],\n[\"d5a1\",\"\u863F\u87BA\u88F8\u908F\uF95C\u6D1B\u70D9\u73DE\u7D61\u843D\uF95D\u916A\u99F1\uF95E\u4E82\u5375\u6B04\u6B12\u703E\u721B\u862D\u9E1E\u524C\u8FA3\u5D50\u64E5\u652C\u6B16\u6FEB\u7C43\u7E9C\u85CD\u8964\u89BD\u62C9\u81D8\u881F\u5ECA\u6717\u6D6A\u72FC\u7405\u746F\u8782\u90DE\u4F86\u5D0D\u5FA0\u840A\u51B7\u63A0\u7565\u4EAE\u5006\u5169\u51C9\u6881\u6A11\u7CAE\u7CB1\u7CE7\u826F\u8AD2\u8F1B\u91CF\u4FB6\u5137\u52F5\u5442\u5EEC\u616E\u623E\u65C5\u6ADA\u6FFE\u792A\u85DC\u8823\u95AD\u9A62\u9A6A\u9E97\u9ECE\u529B\u66C6\u6B77\u701D\u792B\u8F62\u9742\u6190\u6200\u6523\u6F23\"],\n[\"d6a1\",\"\u7149\u7489\u7DF4\u806F\u84EE\u8F26\u9023\u934A\u51BD\u5217\u52A3\u6D0C\u70C8\u88C2\u5EC9\u6582\u6BAE\u6FC2\u7C3E\u7375\u4EE4\u4F36\u56F9\uF95F\u5CBA\u5DBA\u601C\u73B2\u7B2D\u7F9A\u7FCE\u8046\u901E\u9234\u96F6\u9748\u9818\u9F61\u4F8B\u6FA7\u79AE\u91B4\u96B7\u52DE\uF960\u6488\u64C4\u6AD3\u6F5E\u7018\u7210\u76E7\u8001\u8606\u865C\u8DEF\u8F05\u9732\u9B6F\u9DFA\u9E75\u788C\u797F\u7DA0\u83C9\u9304\u9E7F\u9E93\u8AD6\u58DF\u5F04\u6727\u7027\u74CF\u7C60\u807E\u5121\u7028\u7262\u78CA\u8CC2\u8CDA\u8CF4\u96F7\u4E86\u50DA\u5BEE\u5ED6\u6599\u71CE\u7642\u77AD\u804A\u84FC\"],\n[\"d7a1\",\"\u907C\u9B27\u9F8D\u58D8\u5A41\u5C62\u6A13\u6DDA\u6F0F\u763B\u7D2F\u7E37\u851E\u8938\u93E4\u964B\u5289\u65D2\u67F3\u69B4\u6D41\u6E9C\u700F\u7409\u7460\u7559\u7624\u786B\u8B2C\u985E\u516D\u622E\u9678\u4F96\u502B\u5D19\u6DEA\u7DB8\u8F2A\u5F8B\u6144\u6817\uF961\u9686\u52D2\u808B\u51DC\u51CC\u695E\u7A1C\u7DBE\u83F1\u9675\u4FDA\u5229\u5398\u540F\u550E\u5C65\u60A7\u674E\u68A8\u6D6C\u7281\u72F8\u7406\u7483\uF962\u75E2\u7C6C\u7F79\u7FB8\u8389\u88CF\u88E1\u91CC\u91D0\u96E2\u9BC9\u541D\u6F7E\u71D0\u7498\u85FA\u8EAA\u96A3\u9C57\u9E9F\u6797\u6DCB\u7433\u81E8\u9716\u782C\"],\n[\"d8a1\",\"\u7ACB\u7B20\u7C92\u6469\u746A\u75F2\u78BC\u78E8\u99AC\u9B54\u9EBB\u5BDE\u5E55\u6F20\u819C\u83AB\u9088\u4E07\u534D\u5A29\u5DD2\u5F4E\u6162\u633D\u6669\u66FC\u6EFF\u6F2B\u7063\u779E\u842C\u8513\u883B\u8F13\u9945\u9C3B\u551C\u62B9\u672B\u6CAB\u8309\u896A\u977A\u4EA1\u5984\u5FD8\u5FD9\u671B\u7DB2\u7F54\u8292\u832B\u83BD\u8F1E\u9099\u57CB\u59B9\u5A92\u5BD0\u6627\u679A\u6885\u6BCF\u7164\u7F75\u8CB7\u8CE3\u9081\u9B45\u8108\u8C8A\u964C\u9A40\u9EA5\u5B5F\u6C13\u731B\u76F2\u76DF\u840C\u51AA\u8993\u514D\u5195\u52C9\u68C9\u6C94\u7704\u7720\u7DBF\u7DEC\u9762\u9EB5\u6EC5\"],\n[\"d9a1\",\"\u8511\u51A5\u540D\u547D\u660E\u669D\u6927\u6E9F\u76BF\u7791\u8317\u84C2\u879F\u9169\u9298\u9CF4\u8882\u4FAE\u5192\u52DF\u59C6\u5E3D\u6155\u6478\u6479\u66AE\u67D0\u6A21\u6BCD\u6BDB\u725F\u7261\u7441\u7738\u77DB\u8017\u82BC\u8305\u8B00\u8B28\u8C8C\u6728\u6C90\u7267\u76EE\u7766\u7A46\u9DA9\u6B7F\u6C92\u5922\u6726\u8499\u536F\u5893\u5999\u5EDF\u63CF\u6634\u6773\u6E3A\u732B\u7AD7\u82D7\u9328\u52D9\u5DEB\u61AE\u61CB\u620A\u62C7\u64AB\u65E0\u6959\u6B66\u6BCB\u7121\u73F7\u755D\u7E46\u821E\u8302\u856A\u8AA3\u8CBF\u9727\u9D61\u58A8\u9ED8\u5011\u520E\u543B\u554F\u6587\"],\n[\"daa1\",\"\u6C76\u7D0A\u7D0B\u805E\u868A\u9580\u96EF\u52FF\u6C95\u7269\u5473\u5A9A\u5C3E\u5D4B\u5F4C\u5FAE\u672A\u68B6\u6963\u6E3C\u6E44\u7709\u7C73\u7F8E\u8587\u8B0E\u8FF7\u9761\u9EF4\u5CB7\u60B6\u610D\u61AB\u654F\u65FB\u65FC\u6C11\u6CEF\u739F\u73C9\u7DE1\u9594\u5BC6\u871C\u8B10\u525D\u535A\u62CD\u640F\u64B2\u6734\u6A38\u6CCA\u73C0\u749E\u7B94\u7C95\u7E1B\u818A\u8236\u8584\u8FEB\u96F9\u99C1\u4F34\u534A\u53CD\u53DB\u62CC\u642C\u6500\u6591\u69C3\u6CEE\u6F58\u73ED\u7554\u7622\u76E4\u76FC\u78D0\u78FB\u792C\u7D46\u822C\u87E0\u8FD4\u9812\u98EF\u52C3\u62D4\u64A5\u6E24\u6F51\"],\n[\"dba1\",\"\u767C\u8DCB\u91B1\u9262\u9AEE\u9B43\u5023\u508D\u574A\u59A8\u5C28\u5E47\u5F77\u623F\u653E\u65B9\u65C1\u6609\u678B\u699C\u6EC2\u78C5\u7D21\u80AA\u8180\u822B\u82B3\u84A1\u868C\u8A2A\u8B17\u90A6\u9632\u9F90\u500D\u4FF3\uF963\u57F9\u5F98\u62DC\u6392\u676F\u6E43\u7119\u76C3\u80CC\u80DA\u88F4\u88F5\u8919\u8CE0\u8F29\u914D\u966A\u4F2F\u4F70\u5E1B\u67CF\u6822\u767D\u767E\u9B44\u5E61\u6A0A\u7169\u71D4\u756A\uF964\u7E41\u8543\u85E9\u98DC\u4F10\u7B4F\u7F70\u95A5\u51E1\u5E06\u68B5\u6C3E\u6C4E\u6CDB\u72AF\u7BC4\u8303\u6CD5\u743A\u50FB\u5288\u58C1\u64D8\u6A97\u74A7\u7656\"],\n[\"dca1\",\"\u78A7\u8617\u95E2\u9739\uF965\u535E\u5F01\u8B8A\u8FA8\u8FAF\u908A\u5225\u77A5\u9C49\u9F08\u4E19\u5002\u5175\u5C5B\u5E77\u661E\u663A\u67C4\u68C5\u70B3\u7501\u75C5\u79C9\u7ADD\u8F27\u9920\u9A08\u4FDD\u5821\u5831\u5BF6\u666E\u6B65\u6D11\u6E7A\u6F7D\u73E4\u752B\u83E9\u88DC\u8913\u8B5C\u8F14\u4F0F\u50D5\u5310\u535C\u5B93\u5FA9\u670D\u798F\u8179\u832F\u8514\u8907\u8986\u8F39\u8F3B\u99A5\u9C12\u672C\u4E76\u4FF8\u5949\u5C01\u5CEF\u5CF0\u6367\u68D2\u70FD\u71A2\u742B\u7E2B\u84EC\u8702\u9022\u92D2\u9CF3\u4E0D\u4ED8\u4FEF\u5085\u5256\u526F\u5426\u5490\u57E0\u592B\u5A66\"],\n[\"dda1\",\"\u5B5A\u5B75\u5BCC\u5E9C\uF966\u6276\u6577\u65A7\u6D6E\u6EA5\u7236\u7B26\u7C3F\u7F36\u8150\u8151\u819A\u8240\u8299\u83A9\u8A03\u8CA0\u8CE6\u8CFB\u8D74\u8DBA\u90E8\u91DC\u961C\u9644\u99D9\u9CE7\u5317\u5206\u5429\u5674\u58B3\u5954\u596E\u5FFF\u61A4\u626E\u6610\u6C7E\u711A\u76C6\u7C89\u7CDE\u7D1B\u82AC\u8CC1\u96F0\uF967\u4F5B\u5F17\u5F7F\u62C2\u5D29\u670B\u68DA\u787C\u7E43\u9D6C\u4E15\u5099\u5315\u532A\u5351\u5983\u5A62\u5E87\u60B2\u618A\u6249\u6279\u6590\u6787\u69A7\u6BD4\u6BD6\u6BD7\u6BD8\u6CB8\uF968\u7435\u75FA\u7812\u7891\u79D5\u79D8\u7C83\u7DCB\u7FE1\u80A5\"],\n[\"dea1\",\"\u813E\u81C2\u83F2\u871A\u88E8\u8AB9\u8B6C\u8CBB\u9119\u975E\u98DB\u9F3B\u56AC\u5B2A\u5F6C\u658C\u6AB3\u6BAF\u6D5C\u6FF1\u7015\u725D\u73AD\u8CA7\u8CD3\u983B\u6191\u6C37\u8058\u9A01\u4E4D\u4E8B\u4E9B\u4ED5\u4F3A\u4F3C\u4F7F\u4FDF\u50FF\u53F2\u53F8\u5506\u55E3\u56DB\u58EB\u5962\u5A11\u5BEB\u5BFA\u5C04\u5DF3\u5E2B\u5F99\u601D\u6368\u659C\u65AF\u67F6\u67FB\u68AD\u6B7B\u6C99\u6CD7\u6E23\u7009\u7345\u7802\u793E\u7940\u7960\u79C1\u7BE9\u7D17\u7D72\u8086\u820D\u838E\u84D1\u86C7\u88DF\u8A50\u8A5E\u8B1D\u8CDC\u8D66\u8FAD\u90AA\u98FC\u99DF\u9E9D\u524A\uF969\u6714\uF96A\"],\n[\"dfa1\",\"\u5098\u522A\u5C71\u6563\u6C55\u73CA\u7523\u759D\u7B97\u849C\u9178\u9730\u4E77\u6492\u6BBA\u715E\u85A9\u4E09\uF96B\u6749\u68EE\u6E17\u829F\u8518\u886B\u63F7\u6F81\u9212\u98AF\u4E0A\u50B7\u50CF\u511F\u5546\u55AA\u5617\u5B40\u5C19\u5CE0\u5E38\u5E8A\u5EA0\u5EC2\u60F3\u6851\u6A61\u6E58\u723D\u7240\u72C0\u76F8\u7965\u7BB1\u7FD4\u88F3\u89F4\u8A73\u8C61\u8CDE\u971C\u585E\u74BD\u8CFD\u55C7\uF96C\u7A61\u7D22\u8272\u7272\u751F\u7525\uF96D\u7B19\u5885\u58FB\u5DBC\u5E8F\u5EB6\u5F90\u6055\u6292\u637F\u654D\u6691\u66D9\u66F8\u6816\u68F2\u7280\u745E\u7B6E\u7D6E\u7DD6\u7F72\"],\n[\"e0a1\",\"\u80E5\u8212\u85AF\u897F\u8A93\u901D\u92E4\u9ECD\u9F20\u5915\u596D\u5E2D\u60DC\u6614\u6673\u6790\u6C50\u6DC5\u6F5F\u77F3\u78A9\u84C6\u91CB\u932B\u4ED9\u50CA\u5148\u5584\u5B0B\u5BA3\u6247\u657E\u65CB\u6E32\u717D\u7401\u7444\u7487\u74BF\u766C\u79AA\u7DDA\u7E55\u7FA8\u817A\u81B3\u8239\u861A\u87EC\u8A75\u8DE3\u9078\u9291\u9425\u994D\u9BAE\u5368\u5C51\u6954\u6CC4\u6D29\u6E2B\u820C\u859B\u893B\u8A2D\u8AAA\u96EA\u9F67\u5261\u66B9\u6BB2\u7E96\u87FE\u8D0D\u9583\u965D\u651D\u6D89\u71EE\uF96E\u57CE\u59D3\u5BAC\u6027\u60FA\u6210\u661F\u665F\u7329\u73F9\u76DB\u7701\u7B6C\"],\n[\"e1a1\",\"\u8056\u8072\u8165\u8AA0\u9192\u4E16\u52E2\u6B72\u6D17\u7A05\u7B39\u7D30\uF96F\u8CB0\u53EC\u562F\u5851\u5BB5\u5C0F\u5C11\u5DE2\u6240\u6383\u6414\u662D\u68B3\u6CBC\u6D88\u6EAF\u701F\u70A4\u71D2\u7526\u758F\u758E\u7619\u7B11\u7BE0\u7C2B\u7D20\u7D39\u852C\u856D\u8607\u8A34\u900D\u9061\u90B5\u92B7\u97F6\u9A37\u4FD7\u5C6C\u675F\u6D91\u7C9F\u7E8C\u8B16\u8D16\u901F\u5B6B\u5DFD\u640D\u84C0\u905C\u98E1\u7387\u5B8B\u609A\u677E\u6DDE\u8A1F\u8AA6\u9001\u980C\u5237\uF970\u7051\u788E\u9396\u8870\u91D7\u4FEE\u53D7\u55FD\u56DA\u5782\u58FD\u5AC2\u5B88\u5CAB\u5CC0\u5E25\u6101\"],\n[\"e2a1\",\"\u620D\u624B\u6388\u641C\u6536\u6578\u6A39\u6B8A\u6C34\u6D19\u6F31\u71E7\u72E9\u7378\u7407\u74B2\u7626\u7761\u79C0\u7A57\u7AEA\u7CB9\u7D8F\u7DAC\u7E61\u7F9E\u8129\u8331\u8490\u84DA\u85EA\u8896\u8AB0\u8B90\u8F38\u9042\u9083\u916C\u9296\u92B9\u968B\u96A7\u96A8\u96D6\u9700\u9808\u9996\u9AD3\u9B1A\u53D4\u587E\u5919\u5B70\u5BBF\u6DD1\u6F5A\u719F\u7421\u74B9\u8085\u83FD\u5DE1\u5F87\u5FAA\u6042\u65EC\u6812\u696F\u6A53\u6B89\u6D35\u6DF3\u73E3\u76FE\u77AC\u7B4D\u7D14\u8123\u821C\u8340\u84F4\u8563\u8A62\u8AC4\u9187\u931E\u9806\u99B4\u620C\u8853\u8FF0\u9265\u5D07\u5D27\"],\n[\"e3a1\",\"\u5D69\u745F\u819D\u8768\u6FD5\u62FE\u7FD2\u8936\u8972\u4E1E\u4E58\u50E7\u52DD\u5347\u627F\u6607\u7E69\u8805\u965E\u4F8D\u5319\u5636\u59CB\u5AA4\u5C38\u5C4E\u5C4D\u5E02\u5F11\u6043\u65BD\u662F\u6642\u67BE\u67F4\u731C\u77E2\u793A\u7FC5\u8494\u84CD\u8996\u8A66\u8A69\u8AE1\u8C55\u8C7A\u57F4\u5BD4\u5F0F\u606F\u62ED\u690D\u6B96\u6E5C\u7184\u7BD2\u8755\u8B58\u8EFE\u98DF\u98FE\u4F38\u4F81\u4FE1\u547B\u5A20\u5BB8\u613C\u65B0\u6668\u71FC\u7533\u795E\u7D33\u814E\u81E3\u8398\u85AA\u85CE\u8703\u8A0A\u8EAB\u8F9B\uF971\u8FC5\u5931\u5BA4\u5BE6\u6089\u5BE9\u5C0B\u5FC3\u6C81\"],\n[\"e4a1\",\"\uF972\u6DF1\u700B\u751A\u82AF\u8AF6\u4EC0\u5341\uF973\u96D9\u6C0F\u4E9E\u4FC4\u5152\u555E\u5A25\u5CE8\u6211\u7259\u82BD\u83AA\u86FE\u8859\u8A1D\u963F\u96C5\u9913\u9D09\u9D5D\u580A\u5CB3\u5DBD\u5E44\u60E1\u6115\u63E1\u6A02\u6E25\u9102\u9354\u984E\u9C10\u9F77\u5B89\u5CB8\u6309\u664F\u6848\u773C\u96C1\u978D\u9854\u9B9F\u65A1\u8B01\u8ECB\u95BC\u5535\u5CA9\u5DD6\u5EB5\u6697\u764C\u83F4\u95C7\u58D3\u62BC\u72CE\u9D28\u4EF0\u592E\u600F\u663B\u6B83\u79E7\u9D26\u5393\u54C0\u57C3\u5D16\u611B\u66D6\u6DAF\u788D\u827E\u9698\u9744\u5384\u627C\u6396\u6DB2\u7E0A\u814B\u984D\"],\n[\"e5a1\",\"\u6AFB\u7F4C\u9DAF\u9E1A\u4E5F\u503B\u51B6\u591C\u60F9\u63F6\u6930\u723A\u8036\uF974\u91CE\u5F31\uF975\uF976\u7D04\u82E5\u846F\u84BB\u85E5\u8E8D\uF977\u4F6F\uF978\uF979\u58E4\u5B43\u6059\u63DA\u6518\u656D\u6698\uF97A\u694A\u6A23\u6D0B\u7001\u716C\u75D2\u760D\u79B3\u7A70\uF97B\u7F8A\uF97C\u8944\uF97D\u8B93\u91C0\u967D\uF97E\u990A\u5704\u5FA1\u65BC\u6F01\u7600\u79A6\u8A9E\u99AD\u9B5A\u9F6C\u5104\u61B6\u6291\u6A8D\u81C6\u5043\u5830\u5F66\u7109\u8A00\u8AFA\u5B7C\u8616\u4FFA\u513C\u56B4\u5944\u63A9\u6DF9\u5DAA\u696D\u5186\u4E88\u4F59\uF97F\uF980\uF981\u5982\uF982\"],\n[\"e6a1\",\"\uF983\u6B5F\u6C5D\uF984\u74B5\u7916\uF985\u8207\u8245\u8339\u8F3F\u8F5D\uF986\u9918\uF987\uF988\uF989\u4EA6\uF98A\u57DF\u5F79\u6613\uF98B\uF98C\u75AB\u7E79\u8B6F\uF98D\u9006\u9A5B\u56A5\u5827\u59F8\u5A1F\u5BB4\uF98E\u5EF6\uF98F\uF990\u6350\u633B\uF991\u693D\u6C87\u6CBF\u6D8E\u6D93\u6DF5\u6F14\uF992\u70DF\u7136\u7159\uF993\u71C3\u71D5\uF994\u784F\u786F\uF995\u7B75\u7DE3\uF996\u7E2F\uF997\u884D\u8EDF\uF998\uF999\uF99A\u925B\uF99B\u9CF6\uF99C\uF99D\uF99E\u6085\u6D85\uF99F\u71B1\uF9A0\uF9A1\u95B1\u53AD\uF9A2\uF9A3\uF9A4\u67D3\uF9A5\u708E\u7130\u7430\u8276\u82D2\"],\n[\"e7a1\",\"\uF9A6\u95BB\u9AE5\u9E7D\u66C4\uF9A7\u71C1\u8449\uF9A8\uF9A9\u584B\uF9AA\uF9AB\u5DB8\u5F71\uF9AC\u6620\u668E\u6979\u69AE\u6C38\u6CF3\u6E36\u6F41\u6FDA\u701B\u702F\u7150\u71DF\u7370\uF9AD\u745B\uF9AE\u74D4\u76C8\u7A4E\u7E93\uF9AF\uF9B0\u82F1\u8A60\u8FCE\uF9B1\u9348\uF9B2\u9719\uF9B3\uF9B4\u4E42\u502A\uF9B5\u5208\u53E1\u66F3\u6C6D\u6FCA\u730A\u777F\u7A62\u82AE\u85DD\u8602\uF9B6\u88D4\u8A63\u8B7D\u8C6B\uF9B7\u92B3\uF9B8\u9713\u9810\u4E94\u4F0D\u4FC9\u50B2\u5348\u543E\u5433\u55DA\u5862\u58BA\u5967\u5A1B\u5BE4\u609F\uF9B9\u61CA\u6556\u65FF\u6664\u68A7\u6C5A\u6FB3\"],\n[\"e8a1\",\"\u70CF\u71AC\u7352\u7B7D\u8708\u8AA4\u9C32\u9F07\u5C4B\u6C83\u7344\u7389\u923A\u6EAB\u7465\u761F\u7A69\u7E15\u860A\u5140\u58C5\u64C1\u74EE\u7515\u7670\u7FC1\u9095\u96CD\u9954\u6E26\u74E6\u7AA9\u7AAA\u81E5\u86D9\u8778\u8A1B\u5A49\u5B8C\u5B9B\u68A1\u6900\u6D63\u73A9\u7413\u742C\u7897\u7DE9\u7FEB\u8118\u8155\u839E\u8C4C\u962E\u9811\u66F0\u5F80\u65FA\u6789\u6C6A\u738B\u502D\u5A03\u6B6A\u77EE\u5916\u5D6C\u5DCD\u7325\u754F\uF9BA\uF9BB\u50E5\u51F9\u582F\u592D\u5996\u59DA\u5BE5\uF9BC\uF9BD\u5DA2\u62D7\u6416\u6493\u64FE\uF9BE\u66DC\uF9BF\u6A48\uF9C0\u71FF\u7464\uF9C1\"],\n[\"e9a1\",\"\u7A88\u7AAF\u7E47\u7E5E\u8000\u8170\uF9C2\u87EF\u8981\u8B20\u9059\uF9C3\u9080\u9952\u617E\u6B32\u6D74\u7E1F\u8925\u8FB1\u4FD1\u50AD\u5197\u52C7\u57C7\u5889\u5BB9\u5EB8\u6142\u6995\u6D8C\u6E67\u6EB6\u7194\u7462\u7528\u752C\u8073\u8338\u84C9\u8E0A\u9394\u93DE\uF9C4\u4E8E\u4F51\u5076\u512A\u53C8\u53CB\u53F3\u5B87\u5BD3\u5C24\u611A\u6182\u65F4\u725B\u7397\u7440\u76C2\u7950\u7991\u79B9\u7D06\u7FBD\u828B\u85D5\u865E\u8FC2\u9047\u90F5\u91EA\u9685\u96E8\u96E9\u52D6\u5F67\u65ED\u6631\u682F\u715C\u7A36\u90C1\u980A\u4E91\uF9C5\u6A52\u6B9E\u6F90\u7189\u8018\u82B8\u8553\"],\n[\"eaa1\",\"\u904B\u9695\u96F2\u97FB\u851A\u9B31\u4E90\u718A\u96C4\u5143\u539F\u54E1\u5713\u5712\u57A3\u5A9B\u5AC4\u5BC3\u6028\u613F\u63F4\u6C85\u6D39\u6E72\u6E90\u7230\u733F\u7457\u82D1\u8881\u8F45\u9060\uF9C6\u9662\u9858\u9D1B\u6708\u8D8A\u925E\u4F4D\u5049\u50DE\u5371\u570D\u59D4\u5A01\u5C09\u6170\u6690\u6E2D\u7232\u744B\u7DEF\u80C3\u840E\u8466\u853F\u875F\u885B\u8918\u8B02\u9055\u97CB\u9B4F\u4E73\u4F91\u5112\u516A\uF9C7\u552F\u55A9\u5B7A\u5BA5\u5E7C\u5E7D\u5EBE\u60A0\u60DF\u6108\u6109\u63C4\u6538\u6709\uF9C8\u67D4\u67DA\uF9C9\u6961\u6962\u6CB9\u6D27\uF9CA\u6E38\uF9CB\"],\n[\"eba1\",\"\u6FE1\u7336\u7337\uF9CC\u745C\u7531\uF9CD\u7652\uF9CE\uF9CF\u7DAD\u81FE\u8438\u88D5\u8A98\u8ADB\u8AED\u8E30\u8E42\u904A\u903E\u907A\u9149\u91C9\u936E\uF9D0\uF9D1\u5809\uF9D2\u6BD3\u8089\u80B2\uF9D3\uF9D4\u5141\u596B\u5C39\uF9D5\uF9D6\u6F64\u73A7\u80E4\u8D07\uF9D7\u9217\u958F\uF9D8\uF9D9\uF9DA\uF9DB\u807F\u620E\u701C\u7D68\u878D\uF9DC\u57A0\u6069\u6147\u6BB7\u8ABE\u9280\u96B1\u4E59\u541F\u6DEB\u852D\u9670\u97F3\u98EE\u63D6\u6CE3\u9091\u51DD\u61C9\u81BA\u9DF9\u4F9D\u501A\u5100\u5B9C\u610F\u61FF\u64EC\u6905\u6BC5\u7591\u77E3\u7FA9\u8264\u858F\u87FB\u8863\u8ABC\"],\n[\"eca1\",\"\u8B70\u91AB\u4E8C\u4EE5\u4F0A\uF9DD\uF9DE\u5937\u59E8\uF9DF\u5DF2\u5F1B\u5F5B\u6021\uF9E0\uF9E1\uF9E2\uF9E3\u723E\u73E5\uF9E4\u7570\u75CD\uF9E5\u79FB\uF9E6\u800C\u8033\u8084\u82E1\u8351\uF9E7\uF9E8\u8CBD\u8CB3\u9087\uF9E9\uF9EA\u98F4\u990C\uF9EB\uF9EC\u7037\u76CA\u7FCA\u7FCC\u7FFC\u8B1A\u4EBA\u4EC1\u5203\u5370\uF9ED\u54BD\u56E0\u59FB\u5BC5\u5F15\u5FCD\u6E6E\uF9EE\uF9EF\u7D6A\u8335\uF9F0\u8693\u8A8D\uF9F1\u976D\u9777\uF9F2\uF9F3\u4E00\u4F5A\u4F7E\u58F9\u65E5\u6EA2\u9038\u93B0\u99B9\u4EFB\u58EC\u598A\u59D9\u6041\uF9F4\uF9F5\u7A14\uF9F6\u834F\u8CC3\u5165\u5344\"],\n[\"eda1\",\"\uF9F7\uF9F8\uF9F9\u4ECD\u5269\u5B55\u82BF\u4ED4\u523A\u54A8\u59C9\u59FF\u5B50\u5B57\u5B5C\u6063\u6148\u6ECB\u7099\u716E\u7386\u74F7\u75B5\u78C1\u7D2B\u8005\u81EA\u8328\u8517\u85C9\u8AEE\u8CC7\u96CC\u4F5C\u52FA\u56BC\u65AB\u6628\u707C\u70B8\u7235\u7DBD\u828D\u914C\u96C0\u9D72\u5B71\u68E7\u6B98\u6F7A\u76DE\u5C91\u66AB\u6F5B\u7BB4\u7C2A\u8836\u96DC\u4E08\u4ED7\u5320\u5834\u58BB\u58EF\u596C\u5C07\u5E33\u5E84\u5F35\u638C\u66B2\u6756\u6A1F\u6AA3\u6B0C\u6F3F\u7246\uF9FA\u7350\u748B\u7AE0\u7CA7\u8178\u81DF\u81E7\u838A\u846C\u8523\u8594\u85CF\u88DD\u8D13\u91AC\u9577\"],\n[\"eea1\",\"\u969C\u518D\u54C9\u5728\u5BB0\u624D\u6750\u683D\u6893\u6E3D\u6ED3\u707D\u7E21\u88C1\u8CA1\u8F09\u9F4B\u9F4E\u722D\u7B8F\u8ACD\u931A\u4F47\u4F4E\u5132\u5480\u59D0\u5E95\u62B5\u6775\u696E\u6A17\u6CAE\u6E1A\u72D9\u732A\u75BD\u7BB8\u7D35\u82E7\u83F9\u8457\u85F7\u8A5B\u8CAF\u8E87\u9019\u90B8\u96CE\u9F5F\u52E3\u540A\u5AE1\u5BC2\u6458\u6575\u6EF4\u72C4\uF9FB\u7684\u7A4D\u7B1B\u7C4D\u7E3E\u7FDF\u837B\u8B2B\u8CCA\u8D64\u8DE1\u8E5F\u8FEA\u8FF9\u9069\u93D1\u4F43\u4F7A\u50B3\u5168\u5178\u524D\u526A\u5861\u587C\u5960\u5C08\u5C55\u5EDB\u609B\u6230\u6813\u6BBF\u6C08\u6FB1\"],\n[\"efa1\",\"\u714E\u7420\u7530\u7538\u7551\u7672\u7B4C\u7B8B\u7BAD\u7BC6\u7E8F\u8A6E\u8F3E\u8F49\u923F\u9293\u9322\u942B\u96FB\u985A\u986B\u991E\u5207\u622A\u6298\u6D59\u7664\u7ACA\u7BC0\u7D76\u5360\u5CBE\u5E97\u6F38\u70B9\u7C98\u9711\u9B8E\u9EDE\u63A5\u647A\u8776\u4E01\u4E95\u4EAD\u505C\u5075\u5448\u59C3\u5B9A\u5E40\u5EAD\u5EF7\u5F81\u60C5\u633A\u653F\u6574\u65CC\u6676\u6678\u67FE\u6968\u6A89\u6B63\u6C40\u6DC0\u6DE8\u6E1F\u6E5E\u701E\u70A1\u738E\u73FD\u753A\u775B\u7887\u798E\u7A0B\u7A7D\u7CBE\u7D8E\u8247\u8A02\u8AEA\u8C9E\u912D\u914A\u91D8\u9266\u92CC\u9320\u9706\u9756\"],\n[\"f0a1\",\"\u975C\u9802\u9F0E\u5236\u5291\u557C\u5824\u5E1D\u5F1F\u608C\u63D0\u68AF\u6FDF\u796D\u7B2C\u81CD\u85BA\u88FD\u8AF8\u8E44\u918D\u9664\u969B\u973D\u984C\u9F4A\u4FCE\u5146\u51CB\u52A9\u5632\u5F14\u5F6B\u63AA\u64CD\u65E9\u6641\u66FA\u66F9\u671D\u689D\u68D7\u69FD\u6F15\u6F6E\u7167\u71E5\u722A\u74AA\u773A\u7956\u795A\u79DF\u7A20\u7A95\u7C97\u7CDF\u7D44\u7E70\u8087\u85FB\u86A4\u8A54\u8ABF\u8D99\u8E81\u9020\u906D\u91E3\u963B\u96D5\u9CE5\u65CF\u7C07\u8DB3\u93C3\u5B58\u5C0A\u5352\u62D9\u731D\u5027\u5B97\u5F9E\u60B0\u616B\u68D5\u6DD9\u742E\u7A2E\u7D42\u7D9C\u7E31\u816B\"],\n[\"f1a1\",\"\u8E2A\u8E35\u937E\u9418\u4F50\u5750\u5DE6\u5EA7\u632B\u7F6A\u4E3B\u4F4F\u4F8F\u505A\u59DD\u80C4\u546A\u5468\u55FE\u594F\u5B99\u5DDE\u5EDA\u665D\u6731\u67F1\u682A\u6CE8\u6D32\u6E4A\u6F8D\u70B7\u73E0\u7587\u7C4C\u7D02\u7D2C\u7DA2\u821F\u86DB\u8A3B\u8A85\u8D70\u8E8A\u8F33\u9031\u914E\u9152\u9444\u99D0\u7AF9\u7CA5\u4FCA\u5101\u51C6\u57C8\u5BEF\u5CFB\u6659\u6A3D\u6D5A\u6E96\u6FEC\u710C\u756F\u7AE3\u8822\u9021\u9075\u96CB\u99FF\u8301\u4E2D\u4EF2\u8846\u91CD\u537D\u6ADB\u696B\u6C41\u847A\u589E\u618E\u66FE\u62EF\u70DD\u7511\u75C7\u7E52\u84B8\u8B49\u8D08\u4E4B\u53EA\"],\n[\"f2a1\",\"\u54AB\u5730\u5740\u5FD7\u6301\u6307\u646F\u652F\u65E8\u667A\u679D\u67B3\u6B62\u6C60\u6C9A\u6F2C\u77E5\u7825\u7949\u7957\u7D19\u80A2\u8102\u81F3\u829D\u82B7\u8718\u8A8C\uF9FC\u8D04\u8DBE\u9072\u76F4\u7A19\u7A37\u7E54\u8077\u5507\u55D4\u5875\u632F\u6422\u6649\u664B\u686D\u699B\u6B84\u6D25\u6EB1\u73CD\u7468\u74A1\u755B\u75B9\u76E1\u771E\u778B\u79E6\u7E09\u7E1D\u81FB\u852F\u8897\u8A3A\u8CD1\u8EEB\u8FB0\u9032\u93AD\u9663\u9673\u9707\u4F84\u53F1\u59EA\u5AC9\u5E19\u684E\u74C6\u75BE\u79E9\u7A92\u81A3\u86ED\u8CEA\u8DCC\u8FED\u659F\u6715\uF9FD\u57F7\u6F57\u7DDD\u8F2F\"],\n[\"f3a1\",\"\u93F6\u96C6\u5FB5\u61F2\u6F84\u4E14\u4F98\u501F\u53C9\u55DF\u5D6F\u5DEE\u6B21\u6B64\u78CB\u7B9A\uF9FE\u8E49\u8ECA\u906E\u6349\u643E\u7740\u7A84\u932F\u947F\u9F6A\u64B0\u6FAF\u71E6\u74A8\u74DA\u7AC4\u7C12\u7E82\u7CB2\u7E98\u8B9A\u8D0A\u947D\u9910\u994C\u5239\u5BDF\u64E6\u672D\u7D2E\u50ED\u53C3\u5879\u6158\u6159\u61FA\u65AC\u7AD9\u8B92\u8B96\u5009\u5021\u5275\u5531\u5A3C\u5EE0\u5F70\u6134\u655E\u660C\u6636\u66A2\u69CD\u6EC4\u6F32\u7316\u7621\u7A93\u8139\u8259\u83D6\u84BC\u50B5\u57F0\u5BC0\u5BE8\u5F69\u63A1\u7826\u7DB5\u83DC\u8521\u91C7\u91F5\u518A\u67F5\u7B56\"],\n[\"f4a1\",\"\u8CAC\u51C4\u59BB\u60BD\u8655\u501C\uF9FF\u5254\u5C3A\u617D\u621A\u62D3\u64F2\u65A5\u6ECC\u7620\u810A\u8E60\u965F\u96BB\u4EDF\u5343\u5598\u5929\u5DDD\u64C5\u6CC9\u6DFA\u7394\u7A7F\u821B\u85A6\u8CE4\u8E10\u9077\u91E7\u95E1\u9621\u97C6\u51F8\u54F2\u5586\u5FB9\u64A4\u6F88\u7DB4\u8F1F\u8F4D\u9435\u50C9\u5C16\u6CBE\u6DFB\u751B\u77BB\u7C3D\u7C64\u8A79\u8AC2\u581E\u59BE\u5E16\u6377\u7252\u758A\u776B\u8ADC\u8CBC\u8F12\u5EF3\u6674\u6DF8\u807D\u83C1\u8ACB\u9751\u9BD6\uFA00\u5243\u66FF\u6D95\u6EEF\u7DE0\u8AE6\u902E\u905E\u9AD4\u521D\u527F\u54E8\u6194\u6284\u62DB\u68A2\"],\n[\"f5a1\",\"\u6912\u695A\u6A35\u7092\u7126\u785D\u7901\u790E\u79D2\u7A0D\u8096\u8278\u82D5\u8349\u8549\u8C82\u8D85\u9162\u918B\u91AE\u4FC3\u56D1\u71ED\u77D7\u8700\u89F8\u5BF8\u5FD6\u6751\u90A8\u53E2\u585A\u5BF5\u60A4\u6181\u6460\u7E3D\u8070\u8525\u9283\u64AE\u50AC\u5D14\u6700\u589C\u62BD\u63A8\u690E\u6978\u6A1E\u6E6B\u76BA\u79CB\u82BB\u8429\u8ACF\u8DA8\u8FFD\u9112\u914B\u919C\u9310\u9318\u939A\u96DB\u9A36\u9C0D\u4E11\u755C\u795D\u7AFA\u7B51\u7BC9\u7E2E\u84C4\u8E59\u8E74\u8EF8\u9010\u6625\u693F\u7443\u51FA\u672E\u9EDC\u5145\u5FE0\u6C96\u87F2\u885D\u8877\u60B4\u81B5\u8403\"],\n[\"f6a1\",\"\u8D05\u53D6\u5439\u5634\u5A36\u5C31\u708A\u7FE0\u805A\u8106\u81ED\u8DA3\u9189\u9A5F\u9DF2\u5074\u4EC4\u53A0\u60FB\u6E2C\u5C64\u4F88\u5024\u55E4\u5CD9\u5E5F\u6065\u6894\u6CBB\u6DC4\u71BE\u75D4\u75F4\u7661\u7A1A\u7A49\u7DC7\u7DFB\u7F6E\u81F4\u86A9\u8F1C\u96C9\u99B3\u9F52\u5247\u52C5\u98ED\u89AA\u4E03\u67D2\u6F06\u4FB5\u5BE2\u6795\u6C88\u6D78\u741B\u7827\u91DD\u937C\u87C4\u79E4\u7A31\u5FEB\u4ED6\u54A4\u553E\u58AE\u59A5\u60F0\u6253\u62D6\u6736\u6955\u8235\u9640\u99B1\u99DD\u502C\u5353\u5544\u577C\uFA01\u6258\uFA02\u64E2\u666B\u67DD\u6FC1\u6FEF\u7422\u7438\u8A17\"],\n[\"f7a1\",\"\u9438\u5451\u5606\u5766\u5F48\u619A\u6B4E\u7058\u70AD\u7DBB\u8A95\u596A\u812B\u63A2\u7708\u803D\u8CAA\u5854\u642D\u69BB\u5B95\u5E11\u6E6F\uFA03\u8569\u514C\u53F0\u592A\u6020\u614B\u6B86\u6C70\u6CF0\u7B1E\u80CE\u82D4\u8DC6\u90B0\u98B1\uFA04\u64C7\u6FA4\u6491\u6504\u514E\u5410\u571F\u8A0E\u615F\u6876\uFA05\u75DB\u7B52\u7D71\u901A\u5806\u69CC\u817F\u892A\u9000\u9839\u5078\u5957\u59AC\u6295\u900F\u9B2A\u615D\u7279\u95D6\u5761\u5A46\u5DF4\u628A\u64AD\u64FA\u6777\u6CE2\u6D3E\u722C\u7436\u7834\u7F77\u82AD\u8DDB\u9817\u5224\u5742\u677F\u7248\u74E3\u8CA9\u8FA6\u9211\"],\n[\"f8a1\",\"\u962A\u516B\u53ED\u634C\u4F69\u5504\u6096\u6557\u6C9B\u6D7F\u724C\u72FD\u7A17\u8987\u8C9D\u5F6D\u6F8E\u70F9\u81A8\u610E\u4FBF\u504F\u6241\u7247\u7BC7\u7DE8\u7FE9\u904D\u97AD\u9A19\u8CB6\u576A\u5E73\u67B0\u840D\u8A55\u5420\u5B16\u5E63\u5EE2\u5F0A\u6583\u80BA\u853D\u9589\u965B\u4F48\u5305\u530D\u530F\u5486\u54FA\u5703\u5E03\u6016\u629B\u62B1\u6355\uFA06\u6CE1\u6D66\u75B1\u7832\u80DE\u812F\u82DE\u8461\u84B2\u888D\u8912\u900B\u92EA\u98FD\u9B91\u5E45\u66B4\u66DD\u7011\u7206\uFA07\u4FF5\u527D\u5F6A\u6153\u6753\u6A19\u6F02\u74E2\u7968\u8868\u8C79\u98C7\u98C4\u9A43\"],\n[\"f9a1\",\"\u54C1\u7A1F\u6953\u8AF7\u8C4A\u98A8\u99AE\u5F7C\u62AB\u75B2\u76AE\u88AB\u907F\u9642\u5339\u5F3C\u5FC5\u6CCC\u73CC\u7562\u758B\u7B46\u82FE\u999D\u4E4F\u903C\u4E0B\u4F55\u53A6\u590F\u5EC8\u6630\u6CB3\u7455\u8377\u8766\u8CC0\u9050\u971E\u9C15\u58D1\u5B78\u8650\u8B14\u9DB4\u5BD2\u6068\u608D\u65F1\u6C57\u6F22\u6FA3\u701A\u7F55\u7FF0\u9591\u9592\u9650\u97D3\u5272\u8F44\u51FD\u542B\u54B8\u5563\u558A\u6ABB\u6DB5\u7DD8\u8266\u929C\u9677\u9E79\u5408\u54C8\u76D2\u86E4\u95A4\u95D4\u965C\u4EA2\u4F09\u59EE\u5AE6\u5DF7\u6052\u6297\u676D\u6841\u6C86\u6E2F\u7F38\u809B\u822A\"],\n[\"faa1\",\"\uFA08\uFA09\u9805\u4EA5\u5055\u54B3\u5793\u595A\u5B69\u5BB3\u61C8\u6977\u6D77\u7023\u87F9\u89E3\u8A72\u8AE7\u9082\u99ED\u9AB8\u52BE\u6838\u5016\u5E78\u674F\u8347\u884C\u4EAB\u5411\u56AE\u73E6\u9115\u97FF\u9909\u9957\u9999\u5653\u589F\u865B\u8A31\u61B2\u6AF6\u737B\u8ED2\u6B47\u96AA\u9A57\u5955\u7200\u8D6B\u9769\u4FD4\u5CF4\u5F26\u61F8\u665B\u6CEB\u70AB\u7384\u73B9\u73FE\u7729\u774D\u7D43\u7D62\u7E23\u8237\u8852\uFA0A\u8CE2\u9249\u986F\u5B51\u7A74\u8840\u9801\u5ACC\u4FE0\u5354\u593E\u5CFD\u633E\u6D79\u72F9\u8105\u8107\u83A2\u92CF\u9830\u4EA8\u5144\u5211\u578B\"],\n[\"fba1\",\"\u5F62\u6CC2\u6ECE\u7005\u7050\u70AF\u7192\u73E9\u7469\u834A\u87A2\u8861\u9008\u90A2\u93A3\u99A8\u516E\u5F57\u60E0\u6167\u66B3\u8559\u8E4A\u91AF\u978B\u4E4E\u4E92\u547C\u58D5\u58FA\u597D\u5CB5\u5F27\u6236\u6248\u660A\u6667\u6BEB\u6D69\u6DCF\u6E56\u6EF8\u6F94\u6FE0\u6FE9\u705D\u72D0\u7425\u745A\u74E0\u7693\u795C\u7CCA\u7E1E\u80E1\u82A6\u846B\u84BF\u864E\u865F\u8774\u8B77\u8C6A\u93AC\u9800\u9865\u60D1\u6216\u9177\u5A5A\u660F\u6DF7\u6E3E\u743F\u9B42\u5FFD\u60DA\u7B0F\u54C4\u5F18\u6C5E\u6CD3\u6D2A\u70D8\u7D05\u8679\u8A0C\u9D3B\u5316\u548C\u5B05\u6A3A\u706B\u7575\"],\n[\"fca1\",\"\u798D\u79BE\u82B1\u83EF\u8A71\u8B41\u8CA8\u9774\uFA0B\u64F4\u652B\u78BA\u78BB\u7A6B\u4E38\u559A\u5950\u5BA6\u5E7B\u60A3\u63DB\u6B61\u6665\u6853\u6E19\u7165\u74B0\u7D08\u9084\u9A69\u9C25\u6D3B\u6ED1\u733E\u8C41\u95CA\u51F0\u5E4C\u5FA8\u604D\u60F6\u6130\u614C\u6643\u6644\u69A5\u6CC1\u6E5F\u6EC9\u6F62\u714C\u749C\u7687\u7BC1\u7C27\u8352\u8757\u9051\u968D\u9EC3\u532F\u56DE\u5EFB\u5F8A\u6062\u6094\u61F7\u6666\u6703\u6A9C\u6DEE\u6FAE\u7070\u736A\u7E6A\u81BE\u8334\u86D4\u8AA8\u8CC4\u5283\u7372\u5B96\u6A6B\u9404\u54EE\u5686\u5B5D\u6548\u6585\u66C9\u689F\u6D8D\u6DC6\"],\n[\"fda1\",\"\u723B\u80B4\u9175\u9A4D\u4FAF\u5019\u539A\u540E\u543C\u5589\u55C5\u5E3F\u5F8C\u673D\u7166\u73DD\u9005\u52DB\u52F3\u5864\u58CE\u7104\u718F\u71FB\u85B0\u8A13\u6688\u85A8\u55A7\u6684\u714A\u8431\u5349\u5599\u6BC1\u5F59\u5FBD\u63EE\u6689\u7147\u8AF1\u8F1D\u9EBE\u4F11\u643A\u70CB\u7566\u8667\u6064\u8B4E\u9DF8\u5147\u51F6\u5308\u6D36\u80F8\u9ED1\u6615\u6B23\u7098\u75D5\u5403\u5C79\u7D07\u8A16\u6B20\u6B3D\u6B46\u5438\u6070\u6D3D\u7FD5\u8208\u50D6\u51DE\u559C\u566B\u56CD\u59EC\u5B09\u5E0C\u6199\u6198\u6231\u665E\u66E6\u7199\u71B9\u71BA\u72A7\u79A7\u7A00\u7FB2\u8A70\"]\n]\n", "[\n[\"0\",\"\\u0000\",127],\n[\"a140\",\"\u3000\uFF0C\u3001\u3002\uFF0E\u2027\uFF1B\uFF1A\uFF1F\uFF01\uFE30\u2026\u2025\uFE50\uFE51\uFE52\u00B7\uFE54\uFE55\uFE56\uFE57\uFF5C\u2013\uFE31\u2014\uFE33\u2574\uFE34\uFE4F\uFF08\uFF09\uFE35\uFE36\uFF5B\uFF5D\uFE37\uFE38\u3014\u3015\uFE39\uFE3A\u3010\u3011\uFE3B\uFE3C\u300A\u300B\uFE3D\uFE3E\u3008\u3009\uFE3F\uFE40\u300C\u300D\uFE41\uFE42\u300E\u300F\uFE43\uFE44\uFE59\uFE5A\"],\n[\"a1a1\",\"\uFE5B\uFE5C\uFE5D\uFE5E\u2018\u2019\u201C\u201D\u301D\u301E\u2035\u2032\uFF03\uFF06\uFF0A\u203B\u00A7\u3003\u25CB\u25CF\u25B3\u25B2\u25CE\u2606\u2605\u25C7\u25C6\u25A1\u25A0\u25BD\u25BC\u32A3\u2105\u00AF\uFFE3\uFF3F\u02CD\uFE49\uFE4A\uFE4D\uFE4E\uFE4B\uFE4C\uFE5F\uFE60\uFE61\uFF0B\uFF0D\u00D7\u00F7\u00B1\u221A\uFF1C\uFF1E\uFF1D\u2266\u2267\u2260\u221E\u2252\u2261\uFE62\",4,\"\uFF5E\u2229\u222A\u22A5\u2220\u221F\u22BF\u33D2\u33D1\u222B\u222E\u2235\u2234\u2640\u2642\u2295\u2299\u2191\u2193\u2190\u2192\u2196\u2197\u2199\u2198\u2225\u2223\uFF0F\"],\n[\"a240\",\"\uFF3C\u2215\uFE68\uFF04\uFFE5\u3012\uFFE0\uFFE1\uFF05\uFF20\u2103\u2109\uFE69\uFE6A\uFE6B\u33D5\u339C\u339D\u339E\u33CE\u33A1\u338E\u338F\u33C4\u00B0\u5159\u515B\u515E\u515D\u5161\u5163\u55E7\u74E9\u7CCE\u2581\",7,\"\u258F\u258E\u258D\u258C\u258B\u258A\u2589\u253C\u2534\u252C\u2524\u251C\u2594\u2500\u2502\u2595\u250C\u2510\u2514\u2518\u256D\"],\n[\"a2a1\",\"\u256E\u2570\u256F\u2550\u255E\u256A\u2561\u25E2\u25E3\u25E5\u25E4\u2571\u2572\u2573\uFF10\",9,\"\u2160\",9,\"\u3021\",8,\"\u5341\u5344\u5345\uFF21\",25,\"\uFF41\",21],\n[\"a340\",\"\uFF57\uFF58\uFF59\uFF5A\u0391\",16,\"\u03A3\",6,\"\u03B1\",16,\"\u03C3\",6,\"\u3105\",10],\n[\"a3a1\",\"\u3110\",25,\"\u02D9\u02C9\u02CA\u02C7\u02CB\"],\n[\"a3e1\",\"\u20AC\"],\n[\"a440\",\"\u4E00\u4E59\u4E01\u4E03\u4E43\u4E5D\u4E86\u4E8C\u4EBA\u513F\u5165\u516B\u51E0\u5200\u5201\u529B\u5315\u5341\u535C\u53C8\u4E09\u4E0B\u4E08\u4E0A\u4E2B\u4E38\u51E1\u4E45\u4E48\u4E5F\u4E5E\u4E8E\u4EA1\u5140\u5203\u52FA\u5343\u53C9\u53E3\u571F\u58EB\u5915\u5927\u5973\u5B50\u5B51\u5B53\u5BF8\u5C0F\u5C22\u5C38\u5C71\u5DDD\u5DE5\u5DF1\u5DF2\u5DF3\u5DFE\u5E72\u5EFE\u5F0B\u5F13\u624D\"],\n[\"a4a1\",\"\u4E11\u4E10\u4E0D\u4E2D\u4E30\u4E39\u4E4B\u5C39\u4E88\u4E91\u4E95\u4E92\u4E94\u4EA2\u4EC1\u4EC0\u4EC3\u4EC6\u4EC7\u4ECD\u4ECA\u4ECB\u4EC4\u5143\u5141\u5167\u516D\u516E\u516C\u5197\u51F6\u5206\u5207\u5208\u52FB\u52FE\u52FF\u5316\u5339\u5348\u5347\u5345\u535E\u5384\u53CB\u53CA\u53CD\u58EC\u5929\u592B\u592A\u592D\u5B54\u5C11\u5C24\u5C3A\u5C6F\u5DF4\u5E7B\u5EFF\u5F14\u5F15\u5FC3\u6208\u6236\u624B\u624E\u652F\u6587\u6597\u65A4\u65B9\u65E5\u66F0\u6708\u6728\u6B20\u6B62\u6B79\u6BCB\u6BD4\u6BDB\u6C0F\u6C34\u706B\u722A\u7236\u723B\u7247\u7259\u725B\u72AC\u738B\u4E19\"],\n[\"a540\",\"\u4E16\u4E15\u4E14\u4E18\u4E3B\u4E4D\u4E4F\u4E4E\u4EE5\u4ED8\u4ED4\u4ED5\u4ED6\u4ED7\u4EE3\u4EE4\u4ED9\u4EDE\u5145\u5144\u5189\u518A\u51AC\u51F9\u51FA\u51F8\u520A\u52A0\u529F\u5305\u5306\u5317\u531D\u4EDF\u534A\u5349\u5361\u5360\u536F\u536E\u53BB\u53EF\u53E4\u53F3\u53EC\u53EE\u53E9\u53E8\u53FC\u53F8\u53F5\u53EB\u53E6\u53EA\u53F2\u53F1\u53F0\u53E5\u53ED\u53FB\u56DB\u56DA\u5916\"],\n[\"a5a1\",\"\u592E\u5931\u5974\u5976\u5B55\u5B83\u5C3C\u5DE8\u5DE7\u5DE6\u5E02\u5E03\u5E73\u5E7C\u5F01\u5F18\u5F17\u5FC5\u620A\u6253\u6254\u6252\u6251\u65A5\u65E6\u672E\u672C\u672A\u672B\u672D\u6B63\u6BCD\u6C11\u6C10\u6C38\u6C41\u6C40\u6C3E\u72AF\u7384\u7389\u74DC\u74E6\u7518\u751F\u7528\u7529\u7530\u7531\u7532\u7533\u758B\u767D\u76AE\u76BF\u76EE\u77DB\u77E2\u77F3\u793A\u79BE\u7A74\u7ACB\u4E1E\u4E1F\u4E52\u4E53\u4E69\u4E99\u4EA4\u4EA6\u4EA5\u4EFF\u4F09\u4F19\u4F0A\u4F15\u4F0D\u4F10\u4F11\u4F0F\u4EF2\u4EF6\u4EFB\u4EF0\u4EF3\u4EFD\u4F01\u4F0B\u5149\u5147\u5146\u5148\u5168\"],\n[\"a640\",\"\u5171\u518D\u51B0\u5217\u5211\u5212\u520E\u5216\u52A3\u5308\u5321\u5320\u5370\u5371\u5409\u540F\u540C\u540A\u5410\u5401\u540B\u5404\u5411\u540D\u5408\u5403\u540E\u5406\u5412\u56E0\u56DE\u56DD\u5733\u5730\u5728\u572D\u572C\u572F\u5729\u5919\u591A\u5937\u5938\u5984\u5978\u5983\u597D\u5979\u5982\u5981\u5B57\u5B58\u5B87\u5B88\u5B85\u5B89\u5BFA\u5C16\u5C79\u5DDE\u5E06\u5E76\u5E74\"],\n[\"a6a1\",\"\u5F0F\u5F1B\u5FD9\u5FD6\u620E\u620C\u620D\u6210\u6263\u625B\u6258\u6536\u65E9\u65E8\u65EC\u65ED\u66F2\u66F3\u6709\u673D\u6734\u6731\u6735\u6B21\u6B64\u6B7B\u6C16\u6C5D\u6C57\u6C59\u6C5F\u6C60\u6C50\u6C55\u6C61\u6C5B\u6C4D\u6C4E\u7070\u725F\u725D\u767E\u7AF9\u7C73\u7CF8\u7F36\u7F8A\u7FBD\u8001\u8003\u800C\u8012\u8033\u807F\u8089\u808B\u808C\u81E3\u81EA\u81F3\u81FC\u820C\u821B\u821F\u826E\u8272\u827E\u866B\u8840\u884C\u8863\u897F\u9621\u4E32\u4EA8\u4F4D\u4F4F\u4F47\u4F57\u4F5E\u4F34\u4F5B\u4F55\u4F30\u4F50\u4F51\u4F3D\u4F3A\u4F38\u4F43\u4F54\u4F3C\u4F46\u4F63\"],\n[\"a740\",\"\u4F5C\u4F60\u4F2F\u4F4E\u4F36\u4F59\u4F5D\u4F48\u4F5A\u514C\u514B\u514D\u5175\u51B6\u51B7\u5225\u5224\u5229\u522A\u5228\u52AB\u52A9\u52AA\u52AC\u5323\u5373\u5375\u541D\u542D\u541E\u543E\u5426\u544E\u5427\u5446\u5443\u5433\u5448\u5442\u541B\u5429\u544A\u5439\u543B\u5438\u542E\u5435\u5436\u5420\u543C\u5440\u5431\u542B\u541F\u542C\u56EA\u56F0\u56E4\u56EB\u574A\u5751\u5740\u574D\"],\n[\"a7a1\",\"\u5747\u574E\u573E\u5750\u574F\u573B\u58EF\u593E\u599D\u5992\u59A8\u599E\u59A3\u5999\u5996\u598D\u59A4\u5993\u598A\u59A5\u5B5D\u5B5C\u5B5A\u5B5B\u5B8C\u5B8B\u5B8F\u5C2C\u5C40\u5C41\u5C3F\u5C3E\u5C90\u5C91\u5C94\u5C8C\u5DEB\u5E0C\u5E8F\u5E87\u5E8A\u5EF7\u5F04\u5F1F\u5F64\u5F62\u5F77\u5F79\u5FD8\u5FCC\u5FD7\u5FCD\u5FF1\u5FEB\u5FF8\u5FEA\u6212\u6211\u6284\u6297\u6296\u6280\u6276\u6289\u626D\u628A\u627C\u627E\u6279\u6273\u6292\u626F\u6298\u626E\u6295\u6293\u6291\u6286\u6539\u653B\u6538\u65F1\u66F4\u675F\u674E\u674F\u6750\u6751\u675C\u6756\u675E\u6749\u6746\u6760\"],\n[\"a840\",\"\u6753\u6757\u6B65\u6BCF\u6C42\u6C5E\u6C99\u6C81\u6C88\u6C89\u6C85\u6C9B\u6C6A\u6C7A\u6C90\u6C70\u6C8C\u6C68\u6C96\u6C92\u6C7D\u6C83\u6C72\u6C7E\u6C74\u6C86\u6C76\u6C8D\u6C94\u6C98\u6C82\u7076\u707C\u707D\u7078\u7262\u7261\u7260\u72C4\u72C2\u7396\u752C\u752B\u7537\u7538\u7682\u76EF\u77E3\u79C1\u79C0\u79BF\u7A76\u7CFB\u7F55\u8096\u8093\u809D\u8098\u809B\u809A\u80B2\u826F\u8292\"],\n[\"a8a1\",\"\u828B\u828D\u898B\u89D2\u8A00\u8C37\u8C46\u8C55\u8C9D\u8D64\u8D70\u8DB3\u8EAB\u8ECA\u8F9B\u8FB0\u8FC2\u8FC6\u8FC5\u8FC4\u5DE1\u9091\u90A2\u90AA\u90A6\u90A3\u9149\u91C6\u91CC\u9632\u962E\u9631\u962A\u962C\u4E26\u4E56\u4E73\u4E8B\u4E9B\u4E9E\u4EAB\u4EAC\u4F6F\u4F9D\u4F8D\u4F73\u4F7F\u4F6C\u4F9B\u4F8B\u4F86\u4F83\u4F70\u4F75\u4F88\u4F69\u4F7B\u4F96\u4F7E\u4F8F\u4F91\u4F7A\u5154\u5152\u5155\u5169\u5177\u5176\u5178\u51BD\u51FD\u523B\u5238\u5237\u523A\u5230\u522E\u5236\u5241\u52BE\u52BB\u5352\u5354\u5353\u5351\u5366\u5377\u5378\u5379\u53D6\u53D4\u53D7\u5473\u5475\"],\n[\"a940\",\"\u5496\u5478\u5495\u5480\u547B\u5477\u5484\u5492\u5486\u547C\u5490\u5471\u5476\u548C\u549A\u5462\u5468\u548B\u547D\u548E\u56FA\u5783\u5777\u576A\u5769\u5761\u5766\u5764\u577C\u591C\u5949\u5947\u5948\u5944\u5954\u59BE\u59BB\u59D4\u59B9\u59AE\u59D1\u59C6\u59D0\u59CD\u59CB\u59D3\u59CA\u59AF\u59B3\u59D2\u59C5\u5B5F\u5B64\u5B63\u5B97\u5B9A\u5B98\u5B9C\u5B99\u5B9B\u5C1A\u5C48\u5C45\"],\n[\"a9a1\",\"\u5C46\u5CB7\u5CA1\u5CB8\u5CA9\u5CAB\u5CB1\u5CB3\u5E18\u5E1A\u5E16\u5E15\u5E1B\u5E11\u5E78\u5E9A\u5E97\u5E9C\u5E95\u5E96\u5EF6\u5F26\u5F27\u5F29\u5F80\u5F81\u5F7F\u5F7C\u5FDD\u5FE0\u5FFD\u5FF5\u5FFF\u600F\u6014\u602F\u6035\u6016\u602A\u6015\u6021\u6027\u6029\u602B\u601B\u6216\u6215\u623F\u623E\u6240\u627F\u62C9\u62CC\u62C4\u62BF\u62C2\u62B9\u62D2\u62DB\u62AB\u62D3\u62D4\u62CB\u62C8\u62A8\u62BD\u62BC\u62D0\u62D9\u62C7\u62CD\u62B5\u62DA\u62B1\u62D8\u62D6\u62D7\u62C6\u62AC\u62CE\u653E\u65A7\u65BC\u65FA\u6614\u6613\u660C\u6606\u6602\u660E\u6600\u660F\u6615\u660A\"],\n[\"aa40\",\"\u6607\u670D\u670B\u676D\u678B\u6795\u6771\u679C\u6773\u6777\u6787\u679D\u6797\u676F\u6770\u677F\u6789\u677E\u6790\u6775\u679A\u6793\u677C\u676A\u6772\u6B23\u6B66\u6B67\u6B7F\u6C13\u6C1B\u6CE3\u6CE8\u6CF3\u6CB1\u6CCC\u6CE5\u6CB3\u6CBD\u6CBE\u6CBC\u6CE2\u6CAB\u6CD5\u6CD3\u6CB8\u6CC4\u6CB9\u6CC1\u6CAE\u6CD7\u6CC5\u6CF1\u6CBF\u6CBB\u6CE1\u6CDB\u6CCA\u6CAC\u6CEF\u6CDC\u6CD6\u6CE0\"],\n[\"aaa1\",\"\u7095\u708E\u7092\u708A\u7099\u722C\u722D\u7238\u7248\u7267\u7269\u72C0\u72CE\u72D9\u72D7\u72D0\u73A9\u73A8\u739F\u73AB\u73A5\u753D\u759D\u7599\u759A\u7684\u76C2\u76F2\u76F4\u77E5\u77FD\u793E\u7940\u7941\u79C9\u79C8\u7A7A\u7A79\u7AFA\u7CFE\u7F54\u7F8C\u7F8B\u8005\u80BA\u80A5\u80A2\u80B1\u80A1\u80AB\u80A9\u80B4\u80AA\u80AF\u81E5\u81FE\u820D\u82B3\u829D\u8299\u82AD\u82BD\u829F\u82B9\u82B1\u82AC\u82A5\u82AF\u82B8\u82A3\u82B0\u82BE\u82B7\u864E\u8671\u521D\u8868\u8ECB\u8FCE\u8FD4\u8FD1\u90B5\u90B8\u90B1\u90B6\u91C7\u91D1\u9577\u9580\u961C\u9640\u963F\u963B\u9644\"],\n[\"ab40\",\"\u9642\u96B9\u96E8\u9752\u975E\u4E9F\u4EAD\u4EAE\u4FE1\u4FB5\u4FAF\u4FBF\u4FE0\u4FD1\u4FCF\u4FDD\u4FC3\u4FB6\u4FD8\u4FDF\u4FCA\u4FD7\u4FAE\u4FD0\u4FC4\u4FC2\u4FDA\u4FCE\u4FDE\u4FB7\u5157\u5192\u5191\u51A0\u524E\u5243\u524A\u524D\u524C\u524B\u5247\u52C7\u52C9\u52C3\u52C1\u530D\u5357\u537B\u539A\u53DB\u54AC\u54C0\u54A8\u54CE\u54C9\u54B8\u54A6\u54B3\u54C7\u54C2\u54BD\u54AA\u54C1\"],\n[\"aba1\",\"\u54C4\u54C8\u54AF\u54AB\u54B1\u54BB\u54A9\u54A7\u54BF\u56FF\u5782\u578B\u57A0\u57A3\u57A2\u57CE\u57AE\u5793\u5955\u5951\u594F\u594E\u5950\u59DC\u59D8\u59FF\u59E3\u59E8\u5A03\u59E5\u59EA\u59DA\u59E6\u5A01\u59FB\u5B69\u5BA3\u5BA6\u5BA4\u5BA2\u5BA5\u5C01\u5C4E\u5C4F\u5C4D\u5C4B\u5CD9\u5CD2\u5DF7\u5E1D\u5E25\u5E1F\u5E7D\u5EA0\u5EA6\u5EFA\u5F08\u5F2D\u5F65\u5F88\u5F85\u5F8A\u5F8B\u5F87\u5F8C\u5F89\u6012\u601D\u6020\u6025\u600E\u6028\u604D\u6070\u6068\u6062\u6046\u6043\u606C\u606B\u606A\u6064\u6241\u62DC\u6316\u6309\u62FC\u62ED\u6301\u62EE\u62FD\u6307\u62F1\u62F7\"],\n[\"ac40\",\"\u62EF\u62EC\u62FE\u62F4\u6311\u6302\u653F\u6545\u65AB\u65BD\u65E2\u6625\u662D\u6620\u6627\u662F\u661F\u6628\u6631\u6624\u66F7\u67FF\u67D3\u67F1\u67D4\u67D0\u67EC\u67B6\u67AF\u67F5\u67E9\u67EF\u67C4\u67D1\u67B4\u67DA\u67E5\u67B8\u67CF\u67DE\u67F3\u67B0\u67D9\u67E2\u67DD\u67D2\u6B6A\u6B83\u6B86\u6BB5\u6BD2\u6BD7\u6C1F\u6CC9\u6D0B\u6D32\u6D2A\u6D41\u6D25\u6D0C\u6D31\u6D1E\u6D17\"],\n[\"aca1\",\"\u6D3B\u6D3D\u6D3E\u6D36\u6D1B\u6CF5\u6D39\u6D27\u6D38\u6D29\u6D2E\u6D35\u6D0E\u6D2B\u70AB\u70BA\u70B3\u70AC\u70AF\u70AD\u70B8\u70AE\u70A4\u7230\u7272\u726F\u7274\u72E9\u72E0\u72E1\u73B7\u73CA\u73BB\u73B2\u73CD\u73C0\u73B3\u751A\u752D\u754F\u754C\u754E\u754B\u75AB\u75A4\u75A5\u75A2\u75A3\u7678\u7686\u7687\u7688\u76C8\u76C6\u76C3\u76C5\u7701\u76F9\u76F8\u7709\u770B\u76FE\u76FC\u7707\u77DC\u7802\u7814\u780C\u780D\u7946\u7949\u7948\u7947\u79B9\u79BA\u79D1\u79D2\u79CB\u7A7F\u7A81\u7AFF\u7AFD\u7C7D\u7D02\u7D05\u7D00\u7D09\u7D07\u7D04\u7D06\u7F38\u7F8E\u7FBF\u8004\"],\n[\"ad40\",\"\u8010\u800D\u8011\u8036\u80D6\u80E5\u80DA\u80C3\u80C4\u80CC\u80E1\u80DB\u80CE\u80DE\u80E4\u80DD\u81F4\u8222\u82E7\u8303\u8305\u82E3\u82DB\u82E6\u8304\u82E5\u8302\u8309\u82D2\u82D7\u82F1\u8301\u82DC\u82D4\u82D1\u82DE\u82D3\u82DF\u82EF\u8306\u8650\u8679\u867B\u867A\u884D\u886B\u8981\u89D4\u8A08\u8A02\u8A03\u8C9E\u8CA0\u8D74\u8D73\u8DB4\u8ECD\u8ECC\u8FF0\u8FE6\u8FE2\u8FEA\u8FE5\"],\n[\"ada1\",\"\u8FED\u8FEB\u8FE4\u8FE8\u90CA\u90CE\u90C1\u90C3\u914B\u914A\u91CD\u9582\u9650\u964B\u964C\u964D\u9762\u9769\u97CB\u97ED\u97F3\u9801\u98A8\u98DB\u98DF\u9996\u9999\u4E58\u4EB3\u500C\u500D\u5023\u4FEF\u5026\u5025\u4FF8\u5029\u5016\u5006\u503C\u501F\u501A\u5012\u5011\u4FFA\u5000\u5014\u5028\u4FF1\u5021\u500B\u5019\u5018\u4FF3\u4FEE\u502D\u502A\u4FFE\u502B\u5009\u517C\u51A4\u51A5\u51A2\u51CD\u51CC\u51C6\u51CB\u5256\u525C\u5254\u525B\u525D\u532A\u537F\u539F\u539D\u53DF\u54E8\u5510\u5501\u5537\u54FC\u54E5\u54F2\u5506\u54FA\u5514\u54E9\u54ED\u54E1\u5509\u54EE\u54EA\"],\n[\"ae40\",\"\u54E6\u5527\u5507\u54FD\u550F\u5703\u5704\u57C2\u57D4\u57CB\u57C3\u5809\u590F\u5957\u5958\u595A\u5A11\u5A18\u5A1C\u5A1F\u5A1B\u5A13\u59EC\u5A20\u5A23\u5A29\u5A25\u5A0C\u5A09\u5B6B\u5C58\u5BB0\u5BB3\u5BB6\u5BB4\u5BAE\u5BB5\u5BB9\u5BB8\u5C04\u5C51\u5C55\u5C50\u5CED\u5CFD\u5CFB\u5CEA\u5CE8\u5CF0\u5CF6\u5D01\u5CF4\u5DEE\u5E2D\u5E2B\u5EAB\u5EAD\u5EA7\u5F31\u5F92\u5F91\u5F90\u6059\"],\n[\"aea1\",\"\u6063\u6065\u6050\u6055\u606D\u6069\u606F\u6084\u609F\u609A\u608D\u6094\u608C\u6085\u6096\u6247\u62F3\u6308\u62FF\u634E\u633E\u632F\u6355\u6342\u6346\u634F\u6349\u633A\u6350\u633D\u632A\u632B\u6328\u634D\u634C\u6548\u6549\u6599\u65C1\u65C5\u6642\u6649\u664F\u6643\u6652\u664C\u6645\u6641\u66F8\u6714\u6715\u6717\u6821\u6838\u6848\u6846\u6853\u6839\u6842\u6854\u6829\u68B3\u6817\u684C\u6851\u683D\u67F4\u6850\u6840\u683C\u6843\u682A\u6845\u6813\u6818\u6841\u6B8A\u6B89\u6BB7\u6C23\u6C27\u6C28\u6C26\u6C24\u6CF0\u6D6A\u6D95\u6D88\u6D87\u6D66\u6D78\u6D77\u6D59\u6D93\"],\n[\"af40\",\"\u6D6C\u6D89\u6D6E\u6D5A\u6D74\u6D69\u6D8C\u6D8A\u6D79\u6D85\u6D65\u6D94\u70CA\u70D8\u70E4\u70D9\u70C8\u70CF\u7239\u7279\u72FC\u72F9\u72FD\u72F8\u72F7\u7386\u73ED\u7409\u73EE\u73E0\u73EA\u73DE\u7554\u755D\u755C\u755A\u7559\u75BE\u75C5\u75C7\u75B2\u75B3\u75BD\u75BC\u75B9\u75C2\u75B8\u768B\u76B0\u76CA\u76CD\u76CE\u7729\u771F\u7720\u7728\u77E9\u7830\u7827\u7838\u781D\u7834\u7837\"],\n[\"afa1\",\"\u7825\u782D\u7820\u781F\u7832\u7955\u7950\u7960\u795F\u7956\u795E\u795D\u7957\u795A\u79E4\u79E3\u79E7\u79DF\u79E6\u79E9\u79D8\u7A84\u7A88\u7AD9\u7B06\u7B11\u7C89\u7D21\u7D17\u7D0B\u7D0A\u7D20\u7D22\u7D14\u7D10\u7D15\u7D1A\u7D1C\u7D0D\u7D19\u7D1B\u7F3A\u7F5F\u7F94\u7FC5\u7FC1\u8006\u8018\u8015\u8019\u8017\u803D\u803F\u80F1\u8102\u80F0\u8105\u80ED\u80F4\u8106\u80F8\u80F3\u8108\u80FD\u810A\u80FC\u80EF\u81ED\u81EC\u8200\u8210\u822A\u822B\u8228\u822C\u82BB\u832B\u8352\u8354\u834A\u8338\u8350\u8349\u8335\u8334\u834F\u8332\u8339\u8336\u8317\u8340\u8331\u8328\u8343\"],\n[\"b040\",\"\u8654\u868A\u86AA\u8693\u86A4\u86A9\u868C\u86A3\u869C\u8870\u8877\u8881\u8882\u887D\u8879\u8A18\u8A10\u8A0E\u8A0C\u8A15\u8A0A\u8A17\u8A13\u8A16\u8A0F\u8A11\u8C48\u8C7A\u8C79\u8CA1\u8CA2\u8D77\u8EAC\u8ED2\u8ED4\u8ECF\u8FB1\u9001\u9006\u8FF7\u9000\u8FFA\u8FF4\u9003\u8FFD\u9005\u8FF8\u9095\u90E1\u90DD\u90E2\u9152\u914D\u914C\u91D8\u91DD\u91D7\u91DC\u91D9\u9583\u9662\u9663\u9661\"],\n[\"b0a1\",\"\u965B\u965D\u9664\u9658\u965E\u96BB\u98E2\u99AC\u9AA8\u9AD8\u9B25\u9B32\u9B3C\u4E7E\u507A\u507D\u505C\u5047\u5043\u504C\u505A\u5049\u5065\u5076\u504E\u5055\u5075\u5074\u5077\u504F\u500F\u506F\u506D\u515C\u5195\u51F0\u526A\u526F\u52D2\u52D9\u52D8\u52D5\u5310\u530F\u5319\u533F\u5340\u533E\u53C3\u66FC\u5546\u556A\u5566\u5544\u555E\u5561\u5543\u554A\u5531\u5556\u554F\u5555\u552F\u5564\u5538\u552E\u555C\u552C\u5563\u5533\u5541\u5557\u5708\u570B\u5709\u57DF\u5805\u580A\u5806\u57E0\u57E4\u57FA\u5802\u5835\u57F7\u57F9\u5920\u5962\u5A36\u5A41\u5A49\u5A66\u5A6A\u5A40\"],\n[\"b140\",\"\u5A3C\u5A62\u5A5A\u5A46\u5A4A\u5B70\u5BC7\u5BC5\u5BC4\u5BC2\u5BBF\u5BC6\u5C09\u5C08\u5C07\u5C60\u5C5C\u5C5D\u5D07\u5D06\u5D0E\u5D1B\u5D16\u5D22\u5D11\u5D29\u5D14\u5D19\u5D24\u5D27\u5D17\u5DE2\u5E38\u5E36\u5E33\u5E37\u5EB7\u5EB8\u5EB6\u5EB5\u5EBE\u5F35\u5F37\u5F57\u5F6C\u5F69\u5F6B\u5F97\u5F99\u5F9E\u5F98\u5FA1\u5FA0\u5F9C\u607F\u60A3\u6089\u60A0\u60A8\u60CB\u60B4\u60E6\u60BD\"],\n[\"b1a1\",\"\u60C5\u60BB\u60B5\u60DC\u60BC\u60D8\u60D5\u60C6\u60DF\u60B8\u60DA\u60C7\u621A\u621B\u6248\u63A0\u63A7\u6372\u6396\u63A2\u63A5\u6377\u6367\u6398\u63AA\u6371\u63A9\u6389\u6383\u639B\u636B\u63A8\u6384\u6388\u6399\u63A1\u63AC\u6392\u638F\u6380\u637B\u6369\u6368\u637A\u655D\u6556\u6551\u6559\u6557\u555F\u654F\u6558\u6555\u6554\u659C\u659B\u65AC\u65CF\u65CB\u65CC\u65CE\u665D\u665A\u6664\u6668\u6666\u665E\u66F9\u52D7\u671B\u6881\u68AF\u68A2\u6893\u68B5\u687F\u6876\u68B1\u68A7\u6897\u68B0\u6883\u68C4\u68AD\u6886\u6885\u6894\u689D\u68A8\u689F\u68A1\u6882\u6B32\u6BBA\"],\n[\"b240\",\"\u6BEB\u6BEC\u6C2B\u6D8E\u6DBC\u6DF3\u6DD9\u6DB2\u6DE1\u6DCC\u6DE4\u6DFB\u6DFA\u6E05\u6DC7\u6DCB\u6DAF\u6DD1\u6DAE\u6DDE\u6DF9\u6DB8\u6DF7\u6DF5\u6DC5\u6DD2\u6E1A\u6DB5\u6DDA\u6DEB\u6DD8\u6DEA\u6DF1\u6DEE\u6DE8\u6DC6\u6DC4\u6DAA\u6DEC\u6DBF\u6DE6\u70F9\u7109\u710A\u70FD\u70EF\u723D\u727D\u7281\u731C\u731B\u7316\u7313\u7319\u7387\u7405\u740A\u7403\u7406\u73FE\u740D\u74E0\u74F6\"],\n[\"b2a1\",\"\u74F7\u751C\u7522\u7565\u7566\u7562\u7570\u758F\u75D4\u75D5\u75B5\u75CA\u75CD\u768E\u76D4\u76D2\u76DB\u7737\u773E\u773C\u7736\u7738\u773A\u786B\u7843\u784E\u7965\u7968\u796D\u79FB\u7A92\u7A95\u7B20\u7B28\u7B1B\u7B2C\u7B26\u7B19\u7B1E\u7B2E\u7C92\u7C97\u7C95\u7D46\u7D43\u7D71\u7D2E\u7D39\u7D3C\u7D40\u7D30\u7D33\u7D44\u7D2F\u7D42\u7D32\u7D31\u7F3D\u7F9E\u7F9A\u7FCC\u7FCE\u7FD2\u801C\u804A\u8046\u812F\u8116\u8123\u812B\u8129\u8130\u8124\u8202\u8235\u8237\u8236\u8239\u838E\u839E\u8398\u8378\u83A2\u8396\u83BD\u83AB\u8392\u838A\u8393\u8389\u83A0\u8377\u837B\u837C\"],\n[\"b340\",\"\u8386\u83A7\u8655\u5F6A\u86C7\u86C0\u86B6\u86C4\u86B5\u86C6\u86CB\u86B1\u86AF\u86C9\u8853\u889E\u8888\u88AB\u8892\u8896\u888D\u888B\u8993\u898F\u8A2A\u8A1D\u8A23\u8A25\u8A31\u8A2D\u8A1F\u8A1B\u8A22\u8C49\u8C5A\u8CA9\u8CAC\u8CAB\u8CA8\u8CAA\u8CA7\u8D67\u8D66\u8DBE\u8DBA\u8EDB\u8EDF\u9019\u900D\u901A\u9017\u9023\u901F\u901D\u9010\u9015\u901E\u9020\u900F\u9022\u9016\u901B\u9014\"],\n[\"b3a1\",\"\u90E8\u90ED\u90FD\u9157\u91CE\u91F5\u91E6\u91E3\u91E7\u91ED\u91E9\u9589\u966A\u9675\u9673\u9678\u9670\u9674\u9676\u9677\u966C\u96C0\u96EA\u96E9\u7AE0\u7ADF\u9802\u9803\u9B5A\u9CE5\u9E75\u9E7F\u9EA5\u9EBB\u50A2\u508D\u5085\u5099\u5091\u5080\u5096\u5098\u509A\u6700\u51F1\u5272\u5274\u5275\u5269\u52DE\u52DD\u52DB\u535A\u53A5\u557B\u5580\u55A7\u557C\u558A\u559D\u5598\u5582\u559C\u55AA\u5594\u5587\u558B\u5583\u55B3\u55AE\u559F\u553E\u55B2\u559A\u55BB\u55AC\u55B1\u557E\u5589\u55AB\u5599\u570D\u582F\u582A\u5834\u5824\u5830\u5831\u5821\u581D\u5820\u58F9\u58FA\u5960\"],\n[\"b440\",\"\u5A77\u5A9A\u5A7F\u5A92\u5A9B\u5AA7\u5B73\u5B71\u5BD2\u5BCC\u5BD3\u5BD0\u5C0A\u5C0B\u5C31\u5D4C\u5D50\u5D34\u5D47\u5DFD\u5E45\u5E3D\u5E40\u5E43\u5E7E\u5ECA\u5EC1\u5EC2\u5EC4\u5F3C\u5F6D\u5FA9\u5FAA\u5FA8\u60D1\u60E1\u60B2\u60B6\u60E0\u611C\u6123\u60FA\u6115\u60F0\u60FB\u60F4\u6168\u60F1\u610E\u60F6\u6109\u6100\u6112\u621F\u6249\u63A3\u638C\u63CF\u63C0\u63E9\u63C9\u63C6\u63CD\"],\n[\"b4a1\",\"\u63D2\u63E3\u63D0\u63E1\u63D6\u63ED\u63EE\u6376\u63F4\u63EA\u63DB\u6452\u63DA\u63F9\u655E\u6566\u6562\u6563\u6591\u6590\u65AF\u666E\u6670\u6674\u6676\u666F\u6691\u667A\u667E\u6677\u66FE\u66FF\u671F\u671D\u68FA\u68D5\u68E0\u68D8\u68D7\u6905\u68DF\u68F5\u68EE\u68E7\u68F9\u68D2\u68F2\u68E3\u68CB\u68CD\u690D\u6912\u690E\u68C9\u68DA\u696E\u68FB\u6B3E\u6B3A\u6B3D\u6B98\u6B96\u6BBC\u6BEF\u6C2E\u6C2F\u6C2C\u6E2F\u6E38\u6E54\u6E21\u6E32\u6E67\u6E4A\u6E20\u6E25\u6E23\u6E1B\u6E5B\u6E58\u6E24\u6E56\u6E6E\u6E2D\u6E26\u6E6F\u6E34\u6E4D\u6E3A\u6E2C\u6E43\u6E1D\u6E3E\u6ECB\"],\n[\"b540\",\"\u6E89\u6E19\u6E4E\u6E63\u6E44\u6E72\u6E69\u6E5F\u7119\u711A\u7126\u7130\u7121\u7136\u716E\u711C\u724C\u7284\u7280\u7336\u7325\u7334\u7329\u743A\u742A\u7433\u7422\u7425\u7435\u7436\u7434\u742F\u741B\u7426\u7428\u7525\u7526\u756B\u756A\u75E2\u75DB\u75E3\u75D9\u75D8\u75DE\u75E0\u767B\u767C\u7696\u7693\u76B4\u76DC\u774F\u77ED\u785D\u786C\u786F\u7A0D\u7A08\u7A0B\u7A05\u7A00\u7A98\"],\n[\"b5a1\",\"\u7A97\u7A96\u7AE5\u7AE3\u7B49\u7B56\u7B46\u7B50\u7B52\u7B54\u7B4D\u7B4B\u7B4F\u7B51\u7C9F\u7CA5\u7D5E\u7D50\u7D68\u7D55\u7D2B\u7D6E\u7D72\u7D61\u7D66\u7D62\u7D70\u7D73\u5584\u7FD4\u7FD5\u800B\u8052\u8085\u8155\u8154\u814B\u8151\u814E\u8139\u8146\u813E\u814C\u8153\u8174\u8212\u821C\u83E9\u8403\u83F8\u840D\u83E0\u83C5\u840B\u83C1\u83EF\u83F1\u83F4\u8457\u840A\u83F0\u840C\u83CC\u83FD\u83F2\u83CA\u8438\u840E\u8404\u83DC\u8407\u83D4\u83DF\u865B\u86DF\u86D9\u86ED\u86D4\u86DB\u86E4\u86D0\u86DE\u8857\u88C1\u88C2\u88B1\u8983\u8996\u8A3B\u8A60\u8A55\u8A5E\u8A3C\u8A41\"],\n[\"b640\",\"\u8A54\u8A5B\u8A50\u8A46\u8A34\u8A3A\u8A36\u8A56\u8C61\u8C82\u8CAF\u8CBC\u8CB3\u8CBD\u8CC1\u8CBB\u8CC0\u8CB4\u8CB7\u8CB6\u8CBF\u8CB8\u8D8A\u8D85\u8D81\u8DCE\u8DDD\u8DCB\u8DDA\u8DD1\u8DCC\u8DDB\u8DC6\u8EFB\u8EF8\u8EFC\u8F9C\u902E\u9035\u9031\u9038\u9032\u9036\u9102\u90F5\u9109\u90FE\u9163\u9165\u91CF\u9214\u9215\u9223\u9209\u921E\u920D\u9210\u9207\u9211\u9594\u958F\u958B\u9591\"],\n[\"b6a1\",\"\u9593\u9592\u958E\u968A\u968E\u968B\u967D\u9685\u9686\u968D\u9672\u9684\u96C1\u96C5\u96C4\u96C6\u96C7\u96EF\u96F2\u97CC\u9805\u9806\u9808\u98E7\u98EA\u98EF\u98E9\u98F2\u98ED\u99AE\u99AD\u9EC3\u9ECD\u9ED1\u4E82\u50AD\u50B5\u50B2\u50B3\u50C5\u50BE\u50AC\u50B7\u50BB\u50AF\u50C7\u527F\u5277\u527D\u52DF\u52E6\u52E4\u52E2\u52E3\u532F\u55DF\u55E8\u55D3\u55E6\u55CE\u55DC\u55C7\u55D1\u55E3\u55E4\u55EF\u55DA\u55E1\u55C5\u55C6\u55E5\u55C9\u5712\u5713\u585E\u5851\u5858\u5857\u585A\u5854\u586B\u584C\u586D\u584A\u5862\u5852\u584B\u5967\u5AC1\u5AC9\u5ACC\u5ABE\u5ABD\u5ABC\"],\n[\"b740\",\"\u5AB3\u5AC2\u5AB2\u5D69\u5D6F\u5E4C\u5E79\u5EC9\u5EC8\u5F12\u5F59\u5FAC\u5FAE\u611A\u610F\u6148\u611F\u60F3\u611B\u60F9\u6101\u6108\u614E\u614C\u6144\u614D\u613E\u6134\u6127\u610D\u6106\u6137\u6221\u6222\u6413\u643E\u641E\u642A\u642D\u643D\u642C\u640F\u641C\u6414\u640D\u6436\u6416\u6417\u6406\u656C\u659F\u65B0\u6697\u6689\u6687\u6688\u6696\u6684\u6698\u668D\u6703\u6994\u696D\"],\n[\"b7a1\",\"\u695A\u6977\u6960\u6954\u6975\u6930\u6982\u694A\u6968\u696B\u695E\u6953\u6979\u6986\u695D\u6963\u695B\u6B47\u6B72\u6BC0\u6BBF\u6BD3\u6BFD\u6EA2\u6EAF\u6ED3\u6EB6\u6EC2\u6E90\u6E9D\u6EC7\u6EC5\u6EA5\u6E98\u6EBC\u6EBA\u6EAB\u6ED1\u6E96\u6E9C\u6EC4\u6ED4\u6EAA\u6EA7\u6EB4\u714E\u7159\u7169\u7164\u7149\u7167\u715C\u716C\u7166\u714C\u7165\u715E\u7146\u7168\u7156\u723A\u7252\u7337\u7345\u733F\u733E\u746F\u745A\u7455\u745F\u745E\u7441\u743F\u7459\u745B\u745C\u7576\u7578\u7600\u75F0\u7601\u75F2\u75F1\u75FA\u75FF\u75F4\u75F3\u76DE\u76DF\u775B\u776B\u7766\u775E\u7763\"],\n[\"b840\",\"\u7779\u776A\u776C\u775C\u7765\u7768\u7762\u77EE\u788E\u78B0\u7897\u7898\u788C\u7889\u787C\u7891\u7893\u787F\u797A\u797F\u7981\u842C\u79BD\u7A1C\u7A1A\u7A20\u7A14\u7A1F\u7A1E\u7A9F\u7AA0\u7B77\u7BC0\u7B60\u7B6E\u7B67\u7CB1\u7CB3\u7CB5\u7D93\u7D79\u7D91\u7D81\u7D8F\u7D5B\u7F6E\u7F69\u7F6A\u7F72\u7FA9\u7FA8\u7FA4\u8056\u8058\u8086\u8084\u8171\u8170\u8178\u8165\u816E\u8173\u816B\"],\n[\"b8a1\",\"\u8179\u817A\u8166\u8205\u8247\u8482\u8477\u843D\u8431\u8475\u8466\u846B\u8449\u846C\u845B\u843C\u8435\u8461\u8463\u8469\u846D\u8446\u865E\u865C\u865F\u86F9\u8713\u8708\u8707\u8700\u86FE\u86FB\u8702\u8703\u8706\u870A\u8859\u88DF\u88D4\u88D9\u88DC\u88D8\u88DD\u88E1\u88CA\u88D5\u88D2\u899C\u89E3\u8A6B\u8A72\u8A73\u8A66\u8A69\u8A70\u8A87\u8A7C\u8A63\u8AA0\u8A71\u8A85\u8A6D\u8A62\u8A6E\u8A6C\u8A79\u8A7B\u8A3E\u8A68\u8C62\u8C8A\u8C89\u8CCA\u8CC7\u8CC8\u8CC4\u8CB2\u8CC3\u8CC2\u8CC5\u8DE1\u8DDF\u8DE8\u8DEF\u8DF3\u8DFA\u8DEA\u8DE4\u8DE6\u8EB2\u8F03\u8F09\u8EFE\u8F0A\"],\n[\"b940\",\"\u8F9F\u8FB2\u904B\u904A\u9053\u9042\u9054\u903C\u9055\u9050\u9047\u904F\u904E\u904D\u9051\u903E\u9041\u9112\u9117\u916C\u916A\u9169\u91C9\u9237\u9257\u9238\u923D\u9240\u923E\u925B\u924B\u9264\u9251\u9234\u9249\u924D\u9245\u9239\u923F\u925A\u9598\u9698\u9694\u9695\u96CD\u96CB\u96C9\u96CA\u96F7\u96FB\u96F9\u96F6\u9756\u9774\u9776\u9810\u9811\u9813\u980A\u9812\u980C\u98FC\u98F4\"],\n[\"b9a1\",\"\u98FD\u98FE\u99B3\u99B1\u99B4\u9AE1\u9CE9\u9E82\u9F0E\u9F13\u9F20\u50E7\u50EE\u50E5\u50D6\u50ED\u50DA\u50D5\u50CF\u50D1\u50F1\u50CE\u50E9\u5162\u51F3\u5283\u5282\u5331\u53AD\u55FE\u5600\u561B\u5617\u55FD\u5614\u5606\u5609\u560D\u560E\u55F7\u5616\u561F\u5608\u5610\u55F6\u5718\u5716\u5875\u587E\u5883\u5893\u588A\u5879\u5885\u587D\u58FD\u5925\u5922\u5924\u596A\u5969\u5AE1\u5AE6\u5AE9\u5AD7\u5AD6\u5AD8\u5AE3\u5B75\u5BDE\u5BE7\u5BE1\u5BE5\u5BE6\u5BE8\u5BE2\u5BE4\u5BDF\u5C0D\u5C62\u5D84\u5D87\u5E5B\u5E63\u5E55\u5E57\u5E54\u5ED3\u5ED6\u5F0A\u5F46\u5F70\u5FB9\u6147\"],\n[\"ba40\",\"\u613F\u614B\u6177\u6162\u6163\u615F\u615A\u6158\u6175\u622A\u6487\u6458\u6454\u64A4\u6478\u645F\u647A\u6451\u6467\u6434\u646D\u647B\u6572\u65A1\u65D7\u65D6\u66A2\u66A8\u669D\u699C\u69A8\u6995\u69C1\u69AE\u69D3\u69CB\u699B\u69B7\u69BB\u69AB\u69B4\u69D0\u69CD\u69AD\u69CC\u69A6\u69C3\u69A3\u6B49\u6B4C\u6C33\u6F33\u6F14\u6EFE\u6F13\u6EF4\u6F29\u6F3E\u6F20\u6F2C\u6F0F\u6F02\u6F22\"],\n[\"baa1\",\"\u6EFF\u6EEF\u6F06\u6F31\u6F38\u6F32\u6F23\u6F15\u6F2B\u6F2F\u6F88\u6F2A\u6EEC\u6F01\u6EF2\u6ECC\u6EF7\u7194\u7199\u717D\u718A\u7184\u7192\u723E\u7292\u7296\u7344\u7350\u7464\u7463\u746A\u7470\u746D\u7504\u7591\u7627\u760D\u760B\u7609\u7613\u76E1\u76E3\u7784\u777D\u777F\u7761\u78C1\u789F\u78A7\u78B3\u78A9\u78A3\u798E\u798F\u798D\u7A2E\u7A31\u7AAA\u7AA9\u7AED\u7AEF\u7BA1\u7B95\u7B8B\u7B75\u7B97\u7B9D\u7B94\u7B8F\u7BB8\u7B87\u7B84\u7CB9\u7CBD\u7CBE\u7DBB\u7DB0\u7D9C\u7DBD\u7DBE\u7DA0\u7DCA\u7DB4\u7DB2\u7DB1\u7DBA\u7DA2\u7DBF\u7DB5\u7DB8\u7DAD\u7DD2\u7DC7\u7DAC\"],\n[\"bb40\",\"\u7F70\u7FE0\u7FE1\u7FDF\u805E\u805A\u8087\u8150\u8180\u818F\u8188\u818A\u817F\u8182\u81E7\u81FA\u8207\u8214\u821E\u824B\u84C9\u84BF\u84C6\u84C4\u8499\u849E\u84B2\u849C\u84CB\u84B8\u84C0\u84D3\u8490\u84BC\u84D1\u84CA\u873F\u871C\u873B\u8722\u8725\u8734\u8718\u8755\u8737\u8729\u88F3\u8902\u88F4\u88F9\u88F8\u88FD\u88E8\u891A\u88EF\u8AA6\u8A8C\u8A9E\u8AA3\u8A8D\u8AA1\u8A93\u8AA4\"],\n[\"bba1\",\"\u8AAA\u8AA5\u8AA8\u8A98\u8A91\u8A9A\u8AA7\u8C6A\u8C8D\u8C8C\u8CD3\u8CD1\u8CD2\u8D6B\u8D99\u8D95\u8DFC\u8F14\u8F12\u8F15\u8F13\u8FA3\u9060\u9058\u905C\u9063\u9059\u905E\u9062\u905D\u905B\u9119\u9118\u911E\u9175\u9178\u9177\u9174\u9278\u9280\u9285\u9298\u9296\u927B\u9293\u929C\u92A8\u927C\u9291\u95A1\u95A8\u95A9\u95A3\u95A5\u95A4\u9699\u969C\u969B\u96CC\u96D2\u9700\u977C\u9785\u97F6\u9817\u9818\u98AF\u98B1\u9903\u9905\u990C\u9909\u99C1\u9AAF\u9AB0\u9AE6\u9B41\u9B42\u9CF4\u9CF6\u9CF3\u9EBC\u9F3B\u9F4A\u5104\u5100\u50FB\u50F5\u50F9\u5102\u5108\u5109\u5105\u51DC\"],\n[\"bc40\",\"\u5287\u5288\u5289\u528D\u528A\u52F0\u53B2\u562E\u563B\u5639\u5632\u563F\u5634\u5629\u5653\u564E\u5657\u5674\u5636\u562F\u5630\u5880\u589F\u589E\u58B3\u589C\u58AE\u58A9\u58A6\u596D\u5B09\u5AFB\u5B0B\u5AF5\u5B0C\u5B08\u5BEE\u5BEC\u5BE9\u5BEB\u5C64\u5C65\u5D9D\u5D94\u5E62\u5E5F\u5E61\u5EE2\u5EDA\u5EDF\u5EDD\u5EE3\u5EE0\u5F48\u5F71\u5FB7\u5FB5\u6176\u6167\u616E\u615D\u6155\u6182\"],\n[\"bca1\",\"\u617C\u6170\u616B\u617E\u61A7\u6190\u61AB\u618E\u61AC\u619A\u61A4\u6194\u61AE\u622E\u6469\u646F\u6479\u649E\u64B2\u6488\u6490\u64B0\u64A5\u6493\u6495\u64A9\u6492\u64AE\u64AD\u64AB\u649A\u64AC\u6499\u64A2\u64B3\u6575\u6577\u6578\u66AE\u66AB\u66B4\u66B1\u6A23\u6A1F\u69E8\u6A01\u6A1E\u6A19\u69FD\u6A21\u6A13\u6A0A\u69F3\u6A02\u6A05\u69ED\u6A11\u6B50\u6B4E\u6BA4\u6BC5\u6BC6\u6F3F\u6F7C\u6F84\u6F51\u6F66\u6F54\u6F86\u6F6D\u6F5B\u6F78\u6F6E\u6F8E\u6F7A\u6F70\u6F64\u6F97\u6F58\u6ED5\u6F6F\u6F60\u6F5F\u719F\u71AC\u71B1\u71A8\u7256\u729B\u734E\u7357\u7469\u748B\u7483\"],\n[\"bd40\",\"\u747E\u7480\u757F\u7620\u7629\u761F\u7624\u7626\u7621\u7622\u769A\u76BA\u76E4\u778E\u7787\u778C\u7791\u778B\u78CB\u78C5\u78BA\u78CA\u78BE\u78D5\u78BC\u78D0\u7A3F\u7A3C\u7A40\u7A3D\u7A37\u7A3B\u7AAF\u7AAE\u7BAD\u7BB1\u7BC4\u7BB4\u7BC6\u7BC7\u7BC1\u7BA0\u7BCC\u7CCA\u7DE0\u7DF4\u7DEF\u7DFB\u7DD8\u7DEC\u7DDD\u7DE8\u7DE3\u7DDA\u7DDE\u7DE9\u7D9E\u7DD9\u7DF2\u7DF9\u7F75\u7F77\u7FAF\"],\n[\"bda1\",\"\u7FE9\u8026\u819B\u819C\u819D\u81A0\u819A\u8198\u8517\u853D\u851A\u84EE\u852C\u852D\u8513\u8511\u8523\u8521\u8514\u84EC\u8525\u84FF\u8506\u8782\u8774\u8776\u8760\u8766\u8778\u8768\u8759\u8757\u874C\u8753\u885B\u885D\u8910\u8907\u8912\u8913\u8915\u890A\u8ABC\u8AD2\u8AC7\u8AC4\u8A95\u8ACB\u8AF8\u8AB2\u8AC9\u8AC2\u8ABF\u8AB0\u8AD6\u8ACD\u8AB6\u8AB9\u8ADB\u8C4C\u8C4E\u8C6C\u8CE0\u8CDE\u8CE6\u8CE4\u8CEC\u8CED\u8CE2\u8CE3\u8CDC\u8CEA\u8CE1\u8D6D\u8D9F\u8DA3\u8E2B\u8E10\u8E1D\u8E22\u8E0F\u8E29\u8E1F\u8E21\u8E1E\u8EBA\u8F1D\u8F1B\u8F1F\u8F29\u8F26\u8F2A\u8F1C\u8F1E\"],\n[\"be40\",\"\u8F25\u9069\u906E\u9068\u906D\u9077\u9130\u912D\u9127\u9131\u9187\u9189\u918B\u9183\u92C5\u92BB\u92B7\u92EA\u92AC\u92E4\u92C1\u92B3\u92BC\u92D2\u92C7\u92F0\u92B2\u95AD\u95B1\u9704\u9706\u9707\u9709\u9760\u978D\u978B\u978F\u9821\u982B\u981C\u98B3\u990A\u9913\u9912\u9918\u99DD\u99D0\u99DF\u99DB\u99D1\u99D5\u99D2\u99D9\u9AB7\u9AEE\u9AEF\u9B27\u9B45\u9B44\u9B77\u9B6F\u9D06\u9D09\"],\n[\"bea1\",\"\u9D03\u9EA9\u9EBE\u9ECE\u58A8\u9F52\u5112\u5118\u5114\u5110\u5115\u5180\u51AA\u51DD\u5291\u5293\u52F3\u5659\u566B\u5679\u5669\u5664\u5678\u566A\u5668\u5665\u5671\u566F\u566C\u5662\u5676\u58C1\u58BE\u58C7\u58C5\u596E\u5B1D\u5B34\u5B78\u5BF0\u5C0E\u5F4A\u61B2\u6191\u61A9\u618A\u61CD\u61B6\u61BE\u61CA\u61C8\u6230\u64C5\u64C1\u64CB\u64BB\u64BC\u64DA\u64C4\u64C7\u64C2\u64CD\u64BF\u64D2\u64D4\u64BE\u6574\u66C6\u66C9\u66B9\u66C4\u66C7\u66B8\u6A3D\u6A38\u6A3A\u6A59\u6A6B\u6A58\u6A39\u6A44\u6A62\u6A61\u6A4B\u6A47\u6A35\u6A5F\u6A48\u6B59\u6B77\u6C05\u6FC2\u6FB1\u6FA1\"],\n[\"bf40\",\"\u6FC3\u6FA4\u6FC1\u6FA7\u6FB3\u6FC0\u6FB9\u6FB6\u6FA6\u6FA0\u6FB4\u71BE\u71C9\u71D0\u71D2\u71C8\u71D5\u71B9\u71CE\u71D9\u71DC\u71C3\u71C4\u7368\u749C\u74A3\u7498\u749F\u749E\u74E2\u750C\u750D\u7634\u7638\u763A\u76E7\u76E5\u77A0\u779E\u779F\u77A5\u78E8\u78DA\u78EC\u78E7\u79A6\u7A4D\u7A4E\u7A46\u7A4C\u7A4B\u7ABA\u7BD9\u7C11\u7BC9\u7BE4\u7BDB\u7BE1\u7BE9\u7BE6\u7CD5\u7CD6\u7E0A\"],\n[\"bfa1\",\"\u7E11\u7E08\u7E1B\u7E23\u7E1E\u7E1D\u7E09\u7E10\u7F79\u7FB2\u7FF0\u7FF1\u7FEE\u8028\u81B3\u81A9\u81A8\u81FB\u8208\u8258\u8259\u854A\u8559\u8548\u8568\u8569\u8543\u8549\u856D\u856A\u855E\u8783\u879F\u879E\u87A2\u878D\u8861\u892A\u8932\u8925\u892B\u8921\u89AA\u89A6\u8AE6\u8AFA\u8AEB\u8AF1\u8B00\u8ADC\u8AE7\u8AEE\u8AFE\u8B01\u8B02\u8AF7\u8AED\u8AF3\u8AF6\u8AFC\u8C6B\u8C6D\u8C93\u8CF4\u8E44\u8E31\u8E34\u8E42\u8E39\u8E35\u8F3B\u8F2F\u8F38\u8F33\u8FA8\u8FA6\u9075\u9074\u9078\u9072\u907C\u907A\u9134\u9192\u9320\u9336\u92F8\u9333\u932F\u9322\u92FC\u932B\u9304\u931A\"],\n[\"c040\",\"\u9310\u9326\u9321\u9315\u932E\u9319\u95BB\u96A7\u96A8\u96AA\u96D5\u970E\u9711\u9716\u970D\u9713\u970F\u975B\u975C\u9766\u9798\u9830\u9838\u983B\u9837\u982D\u9839\u9824\u9910\u9928\u991E\u991B\u9921\u991A\u99ED\u99E2\u99F1\u9AB8\u9ABC\u9AFB\u9AED\u9B28\u9B91\u9D15\u9D23\u9D26\u9D28\u9D12\u9D1B\u9ED8\u9ED4\u9F8D\u9F9C\u512A\u511F\u5121\u5132\u52F5\u568E\u5680\u5690\u5685\u5687\"],\n[\"c0a1\",\"\u568F\u58D5\u58D3\u58D1\u58CE\u5B30\u5B2A\u5B24\u5B7A\u5C37\u5C68\u5DBC\u5DBA\u5DBD\u5DB8\u5E6B\u5F4C\u5FBD\u61C9\u61C2\u61C7\u61E6\u61CB\u6232\u6234\u64CE\u64CA\u64D8\u64E0\u64F0\u64E6\u64EC\u64F1\u64E2\u64ED\u6582\u6583\u66D9\u66D6\u6A80\u6A94\u6A84\u6AA2\u6A9C\u6ADB\u6AA3\u6A7E\u6A97\u6A90\u6AA0\u6B5C\u6BAE\u6BDA\u6C08\u6FD8\u6FF1\u6FDF\u6FE0\u6FDB\u6FE4\u6FEB\u6FEF\u6F80\u6FEC\u6FE1\u6FE9\u6FD5\u6FEE\u6FF0\u71E7\u71DF\u71EE\u71E6\u71E5\u71ED\u71EC\u71F4\u71E0\u7235\u7246\u7370\u7372\u74A9\u74B0\u74A6\u74A8\u7646\u7642\u764C\u76EA\u77B3\u77AA\u77B0\u77AC\"],\n[\"c140\",\"\u77A7\u77AD\u77EF\u78F7\u78FA\u78F4\u78EF\u7901\u79A7\u79AA\u7A57\u7ABF\u7C07\u7C0D\u7BFE\u7BF7\u7C0C\u7BE0\u7CE0\u7CDC\u7CDE\u7CE2\u7CDF\u7CD9\u7CDD\u7E2E\u7E3E\u7E46\u7E37\u7E32\u7E43\u7E2B\u7E3D\u7E31\u7E45\u7E41\u7E34\u7E39\u7E48\u7E35\u7E3F\u7E2F\u7F44\u7FF3\u7FFC\u8071\u8072\u8070\u806F\u8073\u81C6\u81C3\u81BA\u81C2\u81C0\u81BF\u81BD\u81C9\u81BE\u81E8\u8209\u8271\u85AA\"],\n[\"c1a1\",\"\u8584\u857E\u859C\u8591\u8594\u85AF\u859B\u8587\u85A8\u858A\u8667\u87C0\u87D1\u87B3\u87D2\u87C6\u87AB\u87BB\u87BA\u87C8\u87CB\u893B\u8936\u8944\u8938\u893D\u89AC\u8B0E\u8B17\u8B19\u8B1B\u8B0A\u8B20\u8B1D\u8B04\u8B10\u8C41\u8C3F\u8C73\u8CFA\u8CFD\u8CFC\u8CF8\u8CFB\u8DA8\u8E49\u8E4B\u8E48\u8E4A\u8F44\u8F3E\u8F42\u8F45\u8F3F\u907F\u907D\u9084\u9081\u9082\u9080\u9139\u91A3\u919E\u919C\u934D\u9382\u9328\u9375\u934A\u9365\u934B\u9318\u937E\u936C\u935B\u9370\u935A\u9354\u95CA\u95CB\u95CC\u95C8\u95C6\u96B1\u96B8\u96D6\u971C\u971E\u97A0\u97D3\u9846\u98B6\u9935\u9A01\"],\n[\"c240\",\"\u99FF\u9BAE\u9BAB\u9BAA\u9BAD\u9D3B\u9D3F\u9E8B\u9ECF\u9EDE\u9EDC\u9EDD\u9EDB\u9F3E\u9F4B\u53E2\u5695\u56AE\u58D9\u58D8\u5B38\u5F5D\u61E3\u6233\u64F4\u64F2\u64FE\u6506\u64FA\u64FB\u64F7\u65B7\u66DC\u6726\u6AB3\u6AAC\u6AC3\u6ABB\u6AB8\u6AC2\u6AAE\u6AAF\u6B5F\u6B78\u6BAF\u7009\u700B\u6FFE\u7006\u6FFA\u7011\u700F\u71FB\u71FC\u71FE\u71F8\u7377\u7375\u74A7\u74BF\u7515\u7656\u7658\"],\n[\"c2a1\",\"\u7652\u77BD\u77BF\u77BB\u77BC\u790E\u79AE\u7A61\u7A62\u7A60\u7AC4\u7AC5\u7C2B\u7C27\u7C2A\u7C1E\u7C23\u7C21\u7CE7\u7E54\u7E55\u7E5E\u7E5A\u7E61\u7E52\u7E59\u7F48\u7FF9\u7FFB\u8077\u8076\u81CD\u81CF\u820A\u85CF\u85A9\u85CD\u85D0\u85C9\u85B0\u85BA\u85B9\u85A6\u87EF\u87EC\u87F2\u87E0\u8986\u89B2\u89F4\u8B28\u8B39\u8B2C\u8B2B\u8C50\u8D05\u8E59\u8E63\u8E66\u8E64\u8E5F\u8E55\u8EC0\u8F49\u8F4D\u9087\u9083\u9088\u91AB\u91AC\u91D0\u9394\u938A\u9396\u93A2\u93B3\u93AE\u93AC\u93B0\u9398\u939A\u9397\u95D4\u95D6\u95D0\u95D5\u96E2\u96DC\u96D9\u96DB\u96DE\u9724\u97A3\u97A6\"],\n[\"c340\",\"\u97AD\u97F9\u984D\u984F\u984C\u984E\u9853\u98BA\u993E\u993F\u993D\u992E\u99A5\u9A0E\u9AC1\u9B03\u9B06\u9B4F\u9B4E\u9B4D\u9BCA\u9BC9\u9BFD\u9BC8\u9BC0\u9D51\u9D5D\u9D60\u9EE0\u9F15\u9F2C\u5133\u56A5\u58DE\u58DF\u58E2\u5BF5\u9F90\u5EEC\u61F2\u61F7\u61F6\u61F5\u6500\u650F\u66E0\u66DD\u6AE5\u6ADD\u6ADA\u6AD3\u701B\u701F\u7028\u701A\u701D\u7015\u7018\u7206\u720D\u7258\u72A2\u7378\"],\n[\"c3a1\",\"\u737A\u74BD\u74CA\u74E3\u7587\u7586\u765F\u7661\u77C7\u7919\u79B1\u7A6B\u7A69\u7C3E\u7C3F\u7C38\u7C3D\u7C37\u7C40\u7E6B\u7E6D\u7E79\u7E69\u7E6A\u7F85\u7E73\u7FB6\u7FB9\u7FB8\u81D8\u85E9\u85DD\u85EA\u85D5\u85E4\u85E5\u85F7\u87FB\u8805\u880D\u87F9\u87FE\u8960\u895F\u8956\u895E\u8B41\u8B5C\u8B58\u8B49\u8B5A\u8B4E\u8B4F\u8B46\u8B59\u8D08\u8D0A\u8E7C\u8E72\u8E87\u8E76\u8E6C\u8E7A\u8E74\u8F54\u8F4E\u8FAD\u908A\u908B\u91B1\u91AE\u93E1\u93D1\u93DF\u93C3\u93C8\u93DC\u93DD\u93D6\u93E2\u93CD\u93D8\u93E4\u93D7\u93E8\u95DC\u96B4\u96E3\u972A\u9727\u9761\u97DC\u97FB\u985E\"],\n[\"c440\",\"\u9858\u985B\u98BC\u9945\u9949\u9A16\u9A19\u9B0D\u9BE8\u9BE7\u9BD6\u9BDB\u9D89\u9D61\u9D72\u9D6A\u9D6C\u9E92\u9E97\u9E93\u9EB4\u52F8\u56A8\u56B7\u56B6\u56B4\u56BC\u58E4\u5B40\u5B43\u5B7D\u5BF6\u5DC9\u61F8\u61FA\u6518\u6514\u6519\u66E6\u6727\u6AEC\u703E\u7030\u7032\u7210\u737B\u74CF\u7662\u7665\u7926\u792A\u792C\u792B\u7AC7\u7AF6\u7C4C\u7C43\u7C4D\u7CEF\u7CF0\u8FAE\u7E7D\u7E7C\"],\n[\"c4a1\",\"\u7E82\u7F4C\u8000\u81DA\u8266\u85FB\u85F9\u8611\u85FA\u8606\u860B\u8607\u860A\u8814\u8815\u8964\u89BA\u89F8\u8B70\u8B6C\u8B66\u8B6F\u8B5F\u8B6B\u8D0F\u8D0D\u8E89\u8E81\u8E85\u8E82\u91B4\u91CB\u9418\u9403\u93FD\u95E1\u9730\u98C4\u9952\u9951\u99A8\u9A2B\u9A30\u9A37\u9A35\u9C13\u9C0D\u9E79\u9EB5\u9EE8\u9F2F\u9F5F\u9F63\u9F61\u5137\u5138\u56C1\u56C0\u56C2\u5914\u5C6C\u5DCD\u61FC\u61FE\u651D\u651C\u6595\u66E9\u6AFB\u6B04\u6AFA\u6BB2\u704C\u721B\u72A7\u74D6\u74D4\u7669\u77D3\u7C50\u7E8F\u7E8C\u7FBC\u8617\u862D\u861A\u8823\u8822\u8821\u881F\u896A\u896C\u89BD\u8B74\"],\n[\"c540\",\"\u8B77\u8B7D\u8D13\u8E8A\u8E8D\u8E8B\u8F5F\u8FAF\u91BA\u942E\u9433\u9435\u943A\u9438\u9432\u942B\u95E2\u9738\u9739\u9732\u97FF\u9867\u9865\u9957\u9A45\u9A43\u9A40\u9A3E\u9ACF\u9B54\u9B51\u9C2D\u9C25\u9DAF\u9DB4\u9DC2\u9DB8\u9E9D\u9EEF\u9F19\u9F5C\u9F66\u9F67\u513C\u513B\u56C8\u56CA\u56C9\u5B7F\u5DD4\u5DD2\u5F4E\u61FF\u6524\u6B0A\u6B61\u7051\u7058\u7380\u74E4\u758A\u766E\u766C\"],\n[\"c5a1\",\"\u79B3\u7C60\u7C5F\u807E\u807D\u81DF\u8972\u896F\u89FC\u8B80\u8D16\u8D17\u8E91\u8E93\u8F61\u9148\u9444\u9451\u9452\u973D\u973E\u97C3\u97C1\u986B\u9955\u9A55\u9A4D\u9AD2\u9B1A\u9C49\u9C31\u9C3E\u9C3B\u9DD3\u9DD7\u9F34\u9F6C\u9F6A\u9F94\u56CC\u5DD6\u6200\u6523\u652B\u652A\u66EC\u6B10\u74DA\u7ACA\u7C64\u7C63\u7C65\u7E93\u7E96\u7E94\u81E2\u8638\u863F\u8831\u8B8A\u9090\u908F\u9463\u9460\u9464\u9768\u986F\u995C\u9A5A\u9A5B\u9A57\u9AD3\u9AD4\u9AD1\u9C54\u9C57\u9C56\u9DE5\u9E9F\u9EF4\u56D1\u58E9\u652C\u705E\u7671\u7672\u77D7\u7F50\u7F88\u8836\u8839\u8862\u8B93\u8B92\"],\n[\"c640\",\"\u8B96\u8277\u8D1B\u91C0\u946A\u9742\u9748\u9744\u97C6\u9870\u9A5F\u9B22\u9B58\u9C5F\u9DF9\u9DFA\u9E7C\u9E7D\u9F07\u9F77\u9F72\u5EF3\u6B16\u7063\u7C6C\u7C6E\u883B\u89C0\u8EA1\u91C1\u9472\u9470\u9871\u995E\u9AD6\u9B23\u9ECC\u7064\u77DA\u8B9A\u9477\u97C9\u9A62\u9A65\u7E9C\u8B9C\u8EAA\u91C5\u947D\u947E\u947C\u9C77\u9C78\u9EF7\u8C54\u947F\u9E1A\u7228\u9A6A\u9B31\u9E1B\u9E1E\u7C72\"],\n[\"c940\",\"\u4E42\u4E5C\u51F5\u531A\u5382\u4E07\u4E0C\u4E47\u4E8D\u56D7\uFA0C\u5C6E\u5F73\u4E0F\u5187\u4E0E\u4E2E\u4E93\u4EC2\u4EC9\u4EC8\u5198\u52FC\u536C\u53B9\u5720\u5903\u592C\u5C10\u5DFF\u65E1\u6BB3\u6BCC\u6C14\u723F\u4E31\u4E3C\u4EE8\u4EDC\u4EE9\u4EE1\u4EDD\u4EDA\u520C\u531C\u534C\u5722\u5723\u5917\u592F\u5B81\u5B84\u5C12\u5C3B\u5C74\u5C73\u5E04\u5E80\u5E82\u5FC9\u6209\u6250\u6C15\"],\n[\"c9a1\",\"\u6C36\u6C43\u6C3F\u6C3B\u72AE\u72B0\u738A\u79B8\u808A\u961E\u4F0E\u4F18\u4F2C\u4EF5\u4F14\u4EF1\u4F00\u4EF7\u4F08\u4F1D\u4F02\u4F05\u4F22\u4F13\u4F04\u4EF4\u4F12\u51B1\u5213\u5209\u5210\u52A6\u5322\u531F\u534D\u538A\u5407\u56E1\u56DF\u572E\u572A\u5734\u593C\u5980\u597C\u5985\u597B\u597E\u5977\u597F\u5B56\u5C15\u5C25\u5C7C\u5C7A\u5C7B\u5C7E\u5DDF\u5E75\u5E84\u5F02\u5F1A\u5F74\u5FD5\u5FD4\u5FCF\u625C\u625E\u6264\u6261\u6266\u6262\u6259\u6260\u625A\u6265\u65EF\u65EE\u673E\u6739\u6738\u673B\u673A\u673F\u673C\u6733\u6C18\u6C46\u6C52\u6C5C\u6C4F\u6C4A\u6C54\u6C4B\"],\n[\"ca40\",\"\u6C4C\u7071\u725E\u72B4\u72B5\u738E\u752A\u767F\u7A75\u7F51\u8278\u827C\u8280\u827D\u827F\u864D\u897E\u9099\u9097\u9098\u909B\u9094\u9622\u9624\u9620\u9623\u4F56\u4F3B\u4F62\u4F49\u4F53\u4F64\u4F3E\u4F67\u4F52\u4F5F\u4F41\u4F58\u4F2D\u4F33\u4F3F\u4F61\u518F\u51B9\u521C\u521E\u5221\u52AD\u52AE\u5309\u5363\u5372\u538E\u538F\u5430\u5437\u542A\u5454\u5445\u5419\u541C\u5425\u5418\"],\n[\"caa1\",\"\u543D\u544F\u5441\u5428\u5424\u5447\u56EE\u56E7\u56E5\u5741\u5745\u574C\u5749\u574B\u5752\u5906\u5940\u59A6\u5998\u59A0\u5997\u598E\u59A2\u5990\u598F\u59A7\u59A1\u5B8E\u5B92\u5C28\u5C2A\u5C8D\u5C8F\u5C88\u5C8B\u5C89\u5C92\u5C8A\u5C86\u5C93\u5C95\u5DE0\u5E0A\u5E0E\u5E8B\u5E89\u5E8C\u5E88\u5E8D\u5F05\u5F1D\u5F78\u5F76\u5FD2\u5FD1\u5FD0\u5FED\u5FE8\u5FEE\u5FF3\u5FE1\u5FE4\u5FE3\u5FFA\u5FEF\u5FF7\u5FFB\u6000\u5FF4\u623A\u6283\u628C\u628E\u628F\u6294\u6287\u6271\u627B\u627A\u6270\u6281\u6288\u6277\u627D\u6272\u6274\u6537\u65F0\u65F4\u65F3\u65F2\u65F5\u6745\u6747\"],\n[\"cb40\",\"\u6759\u6755\u674C\u6748\u675D\u674D\u675A\u674B\u6BD0\u6C19\u6C1A\u6C78\u6C67\u6C6B\u6C84\u6C8B\u6C8F\u6C71\u6C6F\u6C69\u6C9A\u6C6D\u6C87\u6C95\u6C9C\u6C66\u6C73\u6C65\u6C7B\u6C8E\u7074\u707A\u7263\u72BF\u72BD\u72C3\u72C6\u72C1\u72BA\u72C5\u7395\u7397\u7393\u7394\u7392\u753A\u7539\u7594\u7595\u7681\u793D\u8034\u8095\u8099\u8090\u8092\u809C\u8290\u828F\u8285\u828E\u8291\u8293\"],\n[\"cba1\",\"\u828A\u8283\u8284\u8C78\u8FC9\u8FBF\u909F\u90A1\u90A5\u909E\u90A7\u90A0\u9630\u9628\u962F\u962D\u4E33\u4F98\u4F7C\u4F85\u4F7D\u4F80\u4F87\u4F76\u4F74\u4F89\u4F84\u4F77\u4F4C\u4F97\u4F6A\u4F9A\u4F79\u4F81\u4F78\u4F90\u4F9C\u4F94\u4F9E\u4F92\u4F82\u4F95\u4F6B\u4F6E\u519E\u51BC\u51BE\u5235\u5232\u5233\u5246\u5231\u52BC\u530A\u530B\u533C\u5392\u5394\u5487\u547F\u5481\u5491\u5482\u5488\u546B\u547A\u547E\u5465\u546C\u5474\u5466\u548D\u546F\u5461\u5460\u5498\u5463\u5467\u5464\u56F7\u56F9\u576F\u5772\u576D\u576B\u5771\u5770\u5776\u5780\u5775\u577B\u5773\u5774\u5762\"],\n[\"cc40\",\"\u5768\u577D\u590C\u5945\u59B5\u59BA\u59CF\u59CE\u59B2\u59CC\u59C1\u59B6\u59BC\u59C3\u59D6\u59B1\u59BD\u59C0\u59C8\u59B4\u59C7\u5B62\u5B65\u5B93\u5B95\u5C44\u5C47\u5CAE\u5CA4\u5CA0\u5CB5\u5CAF\u5CA8\u5CAC\u5C9F\u5CA3\u5CAD\u5CA2\u5CAA\u5CA7\u5C9D\u5CA5\u5CB6\u5CB0\u5CA6\u5E17\u5E14\u5E19\u5F28\u5F22\u5F23\u5F24\u5F54\u5F82\u5F7E\u5F7D\u5FDE\u5FE5\u602D\u6026\u6019\u6032\u600B\"],\n[\"cca1\",\"\u6034\u600A\u6017\u6033\u601A\u601E\u602C\u6022\u600D\u6010\u602E\u6013\u6011\u600C\u6009\u601C\u6214\u623D\u62AD\u62B4\u62D1\u62BE\u62AA\u62B6\u62CA\u62AE\u62B3\u62AF\u62BB\u62A9\u62B0\u62B8\u653D\u65A8\u65BB\u6609\u65FC\u6604\u6612\u6608\u65FB\u6603\u660B\u660D\u6605\u65FD\u6611\u6610\u66F6\u670A\u6785\u676C\u678E\u6792\u6776\u677B\u6798\u6786\u6784\u6774\u678D\u678C\u677A\u679F\u6791\u6799\u6783\u677D\u6781\u6778\u6779\u6794\u6B25\u6B80\u6B7E\u6BDE\u6C1D\u6C93\u6CEC\u6CEB\u6CEE\u6CD9\u6CB6\u6CD4\u6CAD\u6CE7\u6CB7\u6CD0\u6CC2\u6CBA\u6CC3\u6CC6\u6CED\u6CF2\"],\n[\"cd40\",\"\u6CD2\u6CDD\u6CB4\u6C8A\u6C9D\u6C80\u6CDE\u6CC0\u6D30\u6CCD\u6CC7\u6CB0\u6CF9\u6CCF\u6CE9\u6CD1\u7094\u7098\u7085\u7093\u7086\u7084\u7091\u7096\u7082\u709A\u7083\u726A\u72D6\u72CB\u72D8\u72C9\u72DC\u72D2\u72D4\u72DA\u72CC\u72D1\u73A4\u73A1\u73AD\u73A6\u73A2\u73A0\u73AC\u739D\u74DD\u74E8\u753F\u7540\u753E\u758C\u7598\u76AF\u76F3\u76F1\u76F0\u76F5\u77F8\u77FC\u77F9\u77FB\u77FA\"],\n[\"cda1\",\"\u77F7\u7942\u793F\u79C5\u7A78\u7A7B\u7AFB\u7C75\u7CFD\u8035\u808F\u80AE\u80A3\u80B8\u80B5\u80AD\u8220\u82A0\u82C0\u82AB\u829A\u8298\u829B\u82B5\u82A7\u82AE\u82BC\u829E\u82BA\u82B4\u82A8\u82A1\u82A9\u82C2\u82A4\u82C3\u82B6\u82A2\u8670\u866F\u866D\u866E\u8C56\u8FD2\u8FCB\u8FD3\u8FCD\u8FD6\u8FD5\u8FD7\u90B2\u90B4\u90AF\u90B3\u90B0\u9639\u963D\u963C\u963A\u9643\u4FCD\u4FC5\u4FD3\u4FB2\u4FC9\u4FCB\u4FC1\u4FD4\u4FDC\u4FD9\u4FBB\u4FB3\u4FDB\u4FC7\u4FD6\u4FBA\u4FC0\u4FB9\u4FEC\u5244\u5249\u52C0\u52C2\u533D\u537C\u5397\u5396\u5399\u5398\u54BA\u54A1\u54AD\u54A5\u54CF\"],\n[\"ce40\",\"\u54C3\u830D\u54B7\u54AE\u54D6\u54B6\u54C5\u54C6\u54A0\u5470\u54BC\u54A2\u54BE\u5472\u54DE\u54B0\u57B5\u579E\u579F\u57A4\u578C\u5797\u579D\u579B\u5794\u5798\u578F\u5799\u57A5\u579A\u5795\u58F4\u590D\u5953\u59E1\u59DE\u59EE\u5A00\u59F1\u59DD\u59FA\u59FD\u59FC\u59F6\u59E4\u59F2\u59F7\u59DB\u59E9\u59F3\u59F5\u59E0\u59FE\u59F4\u59ED\u5BA8\u5C4C\u5CD0\u5CD8\u5CCC\u5CD7\u5CCB\u5CDB\"],\n[\"cea1\",\"\u5CDE\u5CDA\u5CC9\u5CC7\u5CCA\u5CD6\u5CD3\u5CD4\u5CCF\u5CC8\u5CC6\u5CCE\u5CDF\u5CF8\u5DF9\u5E21\u5E22\u5E23\u5E20\u5E24\u5EB0\u5EA4\u5EA2\u5E9B\u5EA3\u5EA5\u5F07\u5F2E\u5F56\u5F86\u6037\u6039\u6054\u6072\u605E\u6045\u6053\u6047\u6049\u605B\u604C\u6040\u6042\u605F\u6024\u6044\u6058\u6066\u606E\u6242\u6243\u62CF\u630D\u630B\u62F5\u630E\u6303\u62EB\u62F9\u630F\u630C\u62F8\u62F6\u6300\u6313\u6314\u62FA\u6315\u62FB\u62F0\u6541\u6543\u65AA\u65BF\u6636\u6621\u6632\u6635\u661C\u6626\u6622\u6633\u662B\u663A\u661D\u6634\u6639\u662E\u670F\u6710\u67C1\u67F2\u67C8\u67BA\"],\n[\"cf40\",\"\u67DC\u67BB\u67F8\u67D8\u67C0\u67B7\u67C5\u67EB\u67E4\u67DF\u67B5\u67CD\u67B3\u67F7\u67F6\u67EE\u67E3\u67C2\u67B9\u67CE\u67E7\u67F0\u67B2\u67FC\u67C6\u67ED\u67CC\u67AE\u67E6\u67DB\u67FA\u67C9\u67CA\u67C3\u67EA\u67CB\u6B28\u6B82\u6B84\u6BB6\u6BD6\u6BD8\u6BE0\u6C20\u6C21\u6D28\u6D34\u6D2D\u6D1F\u6D3C\u6D3F\u6D12\u6D0A\u6CDA\u6D33\u6D04\u6D19\u6D3A\u6D1A\u6D11\u6D00\u6D1D\u6D42\"],\n[\"cfa1\",\"\u6D01\u6D18\u6D37\u6D03\u6D0F\u6D40\u6D07\u6D20\u6D2C\u6D08\u6D22\u6D09\u6D10\u70B7\u709F\u70BE\u70B1\u70B0\u70A1\u70B4\u70B5\u70A9\u7241\u7249\u724A\u726C\u7270\u7273\u726E\u72CA\u72E4\u72E8\u72EB\u72DF\u72EA\u72E6\u72E3\u7385\u73CC\u73C2\u73C8\u73C5\u73B9\u73B6\u73B5\u73B4\u73EB\u73BF\u73C7\u73BE\u73C3\u73C6\u73B8\u73CB\u74EC\u74EE\u752E\u7547\u7548\u75A7\u75AA\u7679\u76C4\u7708\u7703\u7704\u7705\u770A\u76F7\u76FB\u76FA\u77E7\u77E8\u7806\u7811\u7812\u7805\u7810\u780F\u780E\u7809\u7803\u7813\u794A\u794C\u794B\u7945\u7944\u79D5\u79CD\u79CF\u79D6\u79CE\u7A80\"],\n[\"d040\",\"\u7A7E\u7AD1\u7B00\u7B01\u7C7A\u7C78\u7C79\u7C7F\u7C80\u7C81\u7D03\u7D08\u7D01\u7F58\u7F91\u7F8D\u7FBE\u8007\u800E\u800F\u8014\u8037\u80D8\u80C7\u80E0\u80D1\u80C8\u80C2\u80D0\u80C5\u80E3\u80D9\u80DC\u80CA\u80D5\u80C9\u80CF\u80D7\u80E6\u80CD\u81FF\u8221\u8294\u82D9\u82FE\u82F9\u8307\u82E8\u8300\u82D5\u833A\u82EB\u82D6\u82F4\u82EC\u82E1\u82F2\u82F5\u830C\u82FB\u82F6\u82F0\u82EA\"],\n[\"d0a1\",\"\u82E4\u82E0\u82FA\u82F3\u82ED\u8677\u8674\u867C\u8673\u8841\u884E\u8867\u886A\u8869\u89D3\u8A04\u8A07\u8D72\u8FE3\u8FE1\u8FEE\u8FE0\u90F1\u90BD\u90BF\u90D5\u90C5\u90BE\u90C7\u90CB\u90C8\u91D4\u91D3\u9654\u964F\u9651\u9653\u964A\u964E\u501E\u5005\u5007\u5013\u5022\u5030\u501B\u4FF5\u4FF4\u5033\u5037\u502C\u4FF6\u4FF7\u5017\u501C\u5020\u5027\u5035\u502F\u5031\u500E\u515A\u5194\u5193\u51CA\u51C4\u51C5\u51C8\u51CE\u5261\u525A\u5252\u525E\u525F\u5255\u5262\u52CD\u530E\u539E\u5526\u54E2\u5517\u5512\u54E7\u54F3\u54E4\u551A\u54FF\u5504\u5508\u54EB\u5511\u5505\u54F1\"],\n[\"d140\",\"\u550A\u54FB\u54F7\u54F8\u54E0\u550E\u5503\u550B\u5701\u5702\u57CC\u5832\u57D5\u57D2\u57BA\u57C6\u57BD\u57BC\u57B8\u57B6\u57BF\u57C7\u57D0\u57B9\u57C1\u590E\u594A\u5A19\u5A16\u5A2D\u5A2E\u5A15\u5A0F\u5A17\u5A0A\u5A1E\u5A33\u5B6C\u5BA7\u5BAD\u5BAC\u5C03\u5C56\u5C54\u5CEC\u5CFF\u5CEE\u5CF1\u5CF7\u5D00\u5CF9\u5E29\u5E28\u5EA8\u5EAE\u5EAA\u5EAC\u5F33\u5F30\u5F67\u605D\u605A\u6067\"],\n[\"d1a1\",\"\u6041\u60A2\u6088\u6080\u6092\u6081\u609D\u6083\u6095\u609B\u6097\u6087\u609C\u608E\u6219\u6246\u62F2\u6310\u6356\u632C\u6344\u6345\u6336\u6343\u63E4\u6339\u634B\u634A\u633C\u6329\u6341\u6334\u6358\u6354\u6359\u632D\u6347\u6333\u635A\u6351\u6338\u6357\u6340\u6348\u654A\u6546\u65C6\u65C3\u65C4\u65C2\u664A\u665F\u6647\u6651\u6712\u6713\u681F\u681A\u6849\u6832\u6833\u683B\u684B\u684F\u6816\u6831\u681C\u6835\u682B\u682D\u682F\u684E\u6844\u6834\u681D\u6812\u6814\u6826\u6828\u682E\u684D\u683A\u6825\u6820\u6B2C\u6B2F\u6B2D\u6B31\u6B34\u6B6D\u8082\u6B88\u6BE6\u6BE4\"],\n[\"d240\",\"\u6BE8\u6BE3\u6BE2\u6BE7\u6C25\u6D7A\u6D63\u6D64\u6D76\u6D0D\u6D61\u6D92\u6D58\u6D62\u6D6D\u6D6F\u6D91\u6D8D\u6DEF\u6D7F\u6D86\u6D5E\u6D67\u6D60\u6D97\u6D70\u6D7C\u6D5F\u6D82\u6D98\u6D2F\u6D68\u6D8B\u6D7E\u6D80\u6D84\u6D16\u6D83\u6D7B\u6D7D\u6D75\u6D90\u70DC\u70D3\u70D1\u70DD\u70CB\u7F39\u70E2\u70D7\u70D2\u70DE\u70E0\u70D4\u70CD\u70C5\u70C6\u70C7\u70DA\u70CE\u70E1\u7242\u7278\"],\n[\"d2a1\",\"\u7277\u7276\u7300\u72FA\u72F4\u72FE\u72F6\u72F3\u72FB\u7301\u73D3\u73D9\u73E5\u73D6\u73BC\u73E7\u73E3\u73E9\u73DC\u73D2\u73DB\u73D4\u73DD\u73DA\u73D7\u73D8\u73E8\u74DE\u74DF\u74F4\u74F5\u7521\u755B\u755F\u75B0\u75C1\u75BB\u75C4\u75C0\u75BF\u75B6\u75BA\u768A\u76C9\u771D\u771B\u7710\u7713\u7712\u7723\u7711\u7715\u7719\u771A\u7722\u7727\u7823\u782C\u7822\u7835\u782F\u7828\u782E\u782B\u7821\u7829\u7833\u782A\u7831\u7954\u795B\u794F\u795C\u7953\u7952\u7951\u79EB\u79EC\u79E0\u79EE\u79ED\u79EA\u79DC\u79DE\u79DD\u7A86\u7A89\u7A85\u7A8B\u7A8C\u7A8A\u7A87\u7AD8\u7B10\"],\n[\"d340\",\"\u7B04\u7B13\u7B05\u7B0F\u7B08\u7B0A\u7B0E\u7B09\u7B12\u7C84\u7C91\u7C8A\u7C8C\u7C88\u7C8D\u7C85\u7D1E\u7D1D\u7D11\u7D0E\u7D18\u7D16\u7D13\u7D1F\u7D12\u7D0F\u7D0C\u7F5C\u7F61\u7F5E\u7F60\u7F5D\u7F5B\u7F96\u7F92\u7FC3\u7FC2\u7FC0\u8016\u803E\u8039\u80FA\u80F2\u80F9\u80F5\u8101\u80FB\u8100\u8201\u822F\u8225\u8333\u832D\u8344\u8319\u8351\u8325\u8356\u833F\u8341\u8326\u831C\u8322\"],\n[\"d3a1\",\"\u8342\u834E\u831B\u832A\u8308\u833C\u834D\u8316\u8324\u8320\u8337\u832F\u8329\u8347\u8345\u834C\u8353\u831E\u832C\u834B\u8327\u8348\u8653\u8652\u86A2\u86A8\u8696\u868D\u8691\u869E\u8687\u8697\u8686\u868B\u869A\u8685\u86A5\u8699\u86A1\u86A7\u8695\u8698\u868E\u869D\u8690\u8694\u8843\u8844\u886D\u8875\u8876\u8872\u8880\u8871\u887F\u886F\u8883\u887E\u8874\u887C\u8A12\u8C47\u8C57\u8C7B\u8CA4\u8CA3\u8D76\u8D78\u8DB5\u8DB7\u8DB6\u8ED1\u8ED3\u8FFE\u8FF5\u9002\u8FFF\u8FFB\u9004\u8FFC\u8FF6\u90D6\u90E0\u90D9\u90DA\u90E3\u90DF\u90E5\u90D8\u90DB\u90D7\u90DC\u90E4\u9150\"],\n[\"d440\",\"\u914E\u914F\u91D5\u91E2\u91DA\u965C\u965F\u96BC\u98E3\u9ADF\u9B2F\u4E7F\u5070\u506A\u5061\u505E\u5060\u5053\u504B\u505D\u5072\u5048\u504D\u5041\u505B\u504A\u5062\u5015\u5045\u505F\u5069\u506B\u5063\u5064\u5046\u5040\u506E\u5073\u5057\u5051\u51D0\u526B\u526D\u526C\u526E\u52D6\u52D3\u532D\u539C\u5575\u5576\u553C\u554D\u5550\u5534\u552A\u5551\u5562\u5536\u5535\u5530\u5552\u5545\"],\n[\"d4a1\",\"\u550C\u5532\u5565\u554E\u5539\u5548\u552D\u553B\u5540\u554B\u570A\u5707\u57FB\u5814\u57E2\u57F6\u57DC\u57F4\u5800\u57ED\u57FD\u5808\u57F8\u580B\u57F3\u57CF\u5807\u57EE\u57E3\u57F2\u57E5\u57EC\u57E1\u580E\u57FC\u5810\u57E7\u5801\u580C\u57F1\u57E9\u57F0\u580D\u5804\u595C\u5A60\u5A58\u5A55\u5A67\u5A5E\u5A38\u5A35\u5A6D\u5A50\u5A5F\u5A65\u5A6C\u5A53\u5A64\u5A57\u5A43\u5A5D\u5A52\u5A44\u5A5B\u5A48\u5A8E\u5A3E\u5A4D\u5A39\u5A4C\u5A70\u5A69\u5A47\u5A51\u5A56\u5A42\u5A5C\u5B72\u5B6E\u5BC1\u5BC0\u5C59\u5D1E\u5D0B\u5D1D\u5D1A\u5D20\u5D0C\u5D28\u5D0D\u5D26\u5D25\u5D0F\"],\n[\"d540\",\"\u5D30\u5D12\u5D23\u5D1F\u5D2E\u5E3E\u5E34\u5EB1\u5EB4\u5EB9\u5EB2\u5EB3\u5F36\u5F38\u5F9B\u5F96\u5F9F\u608A\u6090\u6086\u60BE\u60B0\u60BA\u60D3\u60D4\u60CF\u60E4\u60D9\u60DD\u60C8\u60B1\u60DB\u60B7\u60CA\u60BF\u60C3\u60CD\u60C0\u6332\u6365\u638A\u6382\u637D\u63BD\u639E\u63AD\u639D\u6397\u63AB\u638E\u636F\u6387\u6390\u636E\u63AF\u6375\u639C\u636D\u63AE\u637C\u63A4\u633B\u639F\"],\n[\"d5a1\",\"\u6378\u6385\u6381\u6391\u638D\u6370\u6553\u65CD\u6665\u6661\u665B\u6659\u665C\u6662\u6718\u6879\u6887\u6890\u689C\u686D\u686E\u68AE\u68AB\u6956\u686F\u68A3\u68AC\u68A9\u6875\u6874\u68B2\u688F\u6877\u6892\u687C\u686B\u6872\u68AA\u6880\u6871\u687E\u689B\u6896\u688B\u68A0\u6889\u68A4\u6878\u687B\u6891\u688C\u688A\u687D\u6B36\u6B33\u6B37\u6B38\u6B91\u6B8F\u6B8D\u6B8E\u6B8C\u6C2A\u6DC0\u6DAB\u6DB4\u6DB3\u6E74\u6DAC\u6DE9\u6DE2\u6DB7\u6DF6\u6DD4\u6E00\u6DC8\u6DE0\u6DDF\u6DD6\u6DBE\u6DE5\u6DDC\u6DDD\u6DDB\u6DF4\u6DCA\u6DBD\u6DED\u6DF0\u6DBA\u6DD5\u6DC2\u6DCF\u6DC9\"],\n[\"d640\",\"\u6DD0\u6DF2\u6DD3\u6DFD\u6DD7\u6DCD\u6DE3\u6DBB\u70FA\u710D\u70F7\u7117\u70F4\u710C\u70F0\u7104\u70F3\u7110\u70FC\u70FF\u7106\u7113\u7100\u70F8\u70F6\u710B\u7102\u710E\u727E\u727B\u727C\u727F\u731D\u7317\u7307\u7311\u7318\u730A\u7308\u72FF\u730F\u731E\u7388\u73F6\u73F8\u73F5\u7404\u7401\u73FD\u7407\u7400\u73FA\u73FC\u73FF\u740C\u740B\u73F4\u7408\u7564\u7563\u75CE\u75D2\u75CF\"],\n[\"d6a1\",\"\u75CB\u75CC\u75D1\u75D0\u768F\u7689\u76D3\u7739\u772F\u772D\u7731\u7732\u7734\u7733\u773D\u7725\u773B\u7735\u7848\u7852\u7849\u784D\u784A\u784C\u7826\u7845\u7850\u7964\u7967\u7969\u796A\u7963\u796B\u7961\u79BB\u79FA\u79F8\u79F6\u79F7\u7A8F\u7A94\u7A90\u7B35\u7B47\u7B34\u7B25\u7B30\u7B22\u7B24\u7B33\u7B18\u7B2A\u7B1D\u7B31\u7B2B\u7B2D\u7B2F\u7B32\u7B38\u7B1A\u7B23\u7C94\u7C98\u7C96\u7CA3\u7D35\u7D3D\u7D38\u7D36\u7D3A\u7D45\u7D2C\u7D29\u7D41\u7D47\u7D3E\u7D3F\u7D4A\u7D3B\u7D28\u7F63\u7F95\u7F9C\u7F9D\u7F9B\u7FCA\u7FCB\u7FCD\u7FD0\u7FD1\u7FC7\u7FCF\u7FC9\u801F\"],\n[\"d740\",\"\u801E\u801B\u8047\u8043\u8048\u8118\u8125\u8119\u811B\u812D\u811F\u812C\u811E\u8121\u8115\u8127\u811D\u8122\u8211\u8238\u8233\u823A\u8234\u8232\u8274\u8390\u83A3\u83A8\u838D\u837A\u8373\u83A4\u8374\u838F\u8381\u8395\u8399\u8375\u8394\u83A9\u837D\u8383\u838C\u839D\u839B\u83AA\u838B\u837E\u83A5\u83AF\u8388\u8397\u83B0\u837F\u83A6\u8387\u83AE\u8376\u839A\u8659\u8656\u86BF\u86B7\"],\n[\"d7a1\",\"\u86C2\u86C1\u86C5\u86BA\u86B0\u86C8\u86B9\u86B3\u86B8\u86CC\u86B4\u86BB\u86BC\u86C3\u86BD\u86BE\u8852\u8889\u8895\u88A8\u88A2\u88AA\u889A\u8891\u88A1\u889F\u8898\u88A7\u8899\u889B\u8897\u88A4\u88AC\u888C\u8893\u888E\u8982\u89D6\u89D9\u89D5\u8A30\u8A27\u8A2C\u8A1E\u8C39\u8C3B\u8C5C\u8C5D\u8C7D\u8CA5\u8D7D\u8D7B\u8D79\u8DBC\u8DC2\u8DB9\u8DBF\u8DC1\u8ED8\u8EDE\u8EDD\u8EDC\u8ED7\u8EE0\u8EE1\u9024\u900B\u9011\u901C\u900C\u9021\u90EF\u90EA\u90F0\u90F4\u90F2\u90F3\u90D4\u90EB\u90EC\u90E9\u9156\u9158\u915A\u9153\u9155\u91EC\u91F4\u91F1\u91F3\u91F8\u91E4\u91F9\u91EA\"],\n[\"d840\",\"\u91EB\u91F7\u91E8\u91EE\u957A\u9586\u9588\u967C\u966D\u966B\u9671\u966F\u96BF\u976A\u9804\u98E5\u9997\u509B\u5095\u5094\u509E\u508B\u50A3\u5083\u508C\u508E\u509D\u5068\u509C\u5092\u5082\u5087\u515F\u51D4\u5312\u5311\u53A4\u53A7\u5591\u55A8\u55A5\u55AD\u5577\u5645\u55A2\u5593\u5588\u558F\u55B5\u5581\u55A3\u5592\u55A4\u557D\u558C\u55A6\u557F\u5595\u55A1\u558E\u570C\u5829\u5837\"],\n[\"d8a1\",\"\u5819\u581E\u5827\u5823\u5828\u57F5\u5848\u5825\u581C\u581B\u5833\u583F\u5836\u582E\u5839\u5838\u582D\u582C\u583B\u5961\u5AAF\u5A94\u5A9F\u5A7A\u5AA2\u5A9E\u5A78\u5AA6\u5A7C\u5AA5\u5AAC\u5A95\u5AAE\u5A37\u5A84\u5A8A\u5A97\u5A83\u5A8B\u5AA9\u5A7B\u5A7D\u5A8C\u5A9C\u5A8F\u5A93\u5A9D\u5BEA\u5BCD\u5BCB\u5BD4\u5BD1\u5BCA\u5BCE\u5C0C\u5C30\u5D37\u5D43\u5D6B\u5D41\u5D4B\u5D3F\u5D35\u5D51\u5D4E\u5D55\u5D33\u5D3A\u5D52\u5D3D\u5D31\u5D59\u5D42\u5D39\u5D49\u5D38\u5D3C\u5D32\u5D36\u5D40\u5D45\u5E44\u5E41\u5F58\u5FA6\u5FA5\u5FAB\u60C9\u60B9\u60CC\u60E2\u60CE\u60C4\u6114\"],\n[\"d940\",\"\u60F2\u610A\u6116\u6105\u60F5\u6113\u60F8\u60FC\u60FE\u60C1\u6103\u6118\u611D\u6110\u60FF\u6104\u610B\u624A\u6394\u63B1\u63B0\u63CE\u63E5\u63E8\u63EF\u63C3\u649D\u63F3\u63CA\u63E0\u63F6\u63D5\u63F2\u63F5\u6461\u63DF\u63BE\u63DD\u63DC\u63C4\u63D8\u63D3\u63C2\u63C7\u63CC\u63CB\u63C8\u63F0\u63D7\u63D9\u6532\u6567\u656A\u6564\u655C\u6568\u6565\u658C\u659D\u659E\u65AE\u65D0\u65D2\"],\n[\"d9a1\",\"\u667C\u666C\u667B\u6680\u6671\u6679\u666A\u6672\u6701\u690C\u68D3\u6904\u68DC\u692A\u68EC\u68EA\u68F1\u690F\u68D6\u68F7\u68EB\u68E4\u68F6\u6913\u6910\u68F3\u68E1\u6907\u68CC\u6908\u6970\u68B4\u6911\u68EF\u68C6\u6914\u68F8\u68D0\u68FD\u68FC\u68E8\u690B\u690A\u6917\u68CE\u68C8\u68DD\u68DE\u68E6\u68F4\u68D1\u6906\u68D4\u68E9\u6915\u6925\u68C7\u6B39\u6B3B\u6B3F\u6B3C\u6B94\u6B97\u6B99\u6B95\u6BBD\u6BF0\u6BF2\u6BF3\u6C30\u6DFC\u6E46\u6E47\u6E1F\u6E49\u6E88\u6E3C\u6E3D\u6E45\u6E62\u6E2B\u6E3F\u6E41\u6E5D\u6E73\u6E1C\u6E33\u6E4B\u6E40\u6E51\u6E3B\u6E03\u6E2E\u6E5E\"],\n[\"da40\",\"\u6E68\u6E5C\u6E61\u6E31\u6E28\u6E60\u6E71\u6E6B\u6E39\u6E22\u6E30\u6E53\u6E65\u6E27\u6E78\u6E64\u6E77\u6E55\u6E79\u6E52\u6E66\u6E35\u6E36\u6E5A\u7120\u711E\u712F\u70FB\u712E\u7131\u7123\u7125\u7122\u7132\u711F\u7128\u713A\u711B\u724B\u725A\u7288\u7289\u7286\u7285\u728B\u7312\u730B\u7330\u7322\u7331\u7333\u7327\u7332\u732D\u7326\u7323\u7335\u730C\u742E\u742C\u7430\u742B\u7416\"],\n[\"daa1\",\"\u741A\u7421\u742D\u7431\u7424\u7423\u741D\u7429\u7420\u7432\u74FB\u752F\u756F\u756C\u75E7\u75DA\u75E1\u75E6\u75DD\u75DF\u75E4\u75D7\u7695\u7692\u76DA\u7746\u7747\u7744\u774D\u7745\u774A\u774E\u774B\u774C\u77DE\u77EC\u7860\u7864\u7865\u785C\u786D\u7871\u786A\u786E\u7870\u7869\u7868\u785E\u7862\u7974\u7973\u7972\u7970\u7A02\u7A0A\u7A03\u7A0C\u7A04\u7A99\u7AE6\u7AE4\u7B4A\u7B3B\u7B44\u7B48\u7B4C\u7B4E\u7B40\u7B58\u7B45\u7CA2\u7C9E\u7CA8\u7CA1\u7D58\u7D6F\u7D63\u7D53\u7D56\u7D67\u7D6A\u7D4F\u7D6D\u7D5C\u7D6B\u7D52\u7D54\u7D69\u7D51\u7D5F\u7D4E\u7F3E\u7F3F\u7F65\"],\n[\"db40\",\"\u7F66\u7FA2\u7FA0\u7FA1\u7FD7\u8051\u804F\u8050\u80FE\u80D4\u8143\u814A\u8152\u814F\u8147\u813D\u814D\u813A\u81E6\u81EE\u81F7\u81F8\u81F9\u8204\u823C\u823D\u823F\u8275\u833B\u83CF\u83F9\u8423\u83C0\u83E8\u8412\u83E7\u83E4\u83FC\u83F6\u8410\u83C6\u83C8\u83EB\u83E3\u83BF\u8401\u83DD\u83E5\u83D8\u83FF\u83E1\u83CB\u83CE\u83D6\u83F5\u83C9\u8409\u840F\u83DE\u8411\u8406\u83C2\u83F3\"],\n[\"dba1\",\"\u83D5\u83FA\u83C7\u83D1\u83EA\u8413\u83C3\u83EC\u83EE\u83C4\u83FB\u83D7\u83E2\u841B\u83DB\u83FE\u86D8\u86E2\u86E6\u86D3\u86E3\u86DA\u86EA\u86DD\u86EB\u86DC\u86EC\u86E9\u86D7\u86E8\u86D1\u8848\u8856\u8855\u88BA\u88D7\u88B9\u88B8\u88C0\u88BE\u88B6\u88BC\u88B7\u88BD\u88B2\u8901\u88C9\u8995\u8998\u8997\u89DD\u89DA\u89DB\u8A4E\u8A4D\u8A39\u8A59\u8A40\u8A57\u8A58\u8A44\u8A45\u8A52\u8A48\u8A51\u8A4A\u8A4C\u8A4F\u8C5F\u8C81\u8C80\u8CBA\u8CBE\u8CB0\u8CB9\u8CB5\u8D84\u8D80\u8D89\u8DD8\u8DD3\u8DCD\u8DC7\u8DD6\u8DDC\u8DCF\u8DD5\u8DD9\u8DC8\u8DD7\u8DC5\u8EEF\u8EF7\u8EFA\"],\n[\"dc40\",\"\u8EF9\u8EE6\u8EEE\u8EE5\u8EF5\u8EE7\u8EE8\u8EF6\u8EEB\u8EF1\u8EEC\u8EF4\u8EE9\u902D\u9034\u902F\u9106\u912C\u9104\u90FF\u90FC\u9108\u90F9\u90FB\u9101\u9100\u9107\u9105\u9103\u9161\u9164\u915F\u9162\u9160\u9201\u920A\u9225\u9203\u921A\u9226\u920F\u920C\u9200\u9212\u91FF\u91FD\u9206\u9204\u9227\u9202\u921C\u9224\u9219\u9217\u9205\u9216\u957B\u958D\u958C\u9590\u9687\u967E\u9688\"],\n[\"dca1\",\"\u9689\u9683\u9680\u96C2\u96C8\u96C3\u96F1\u96F0\u976C\u9770\u976E\u9807\u98A9\u98EB\u9CE6\u9EF9\u4E83\u4E84\u4EB6\u50BD\u50BF\u50C6\u50AE\u50C4\u50CA\u50B4\u50C8\u50C2\u50B0\u50C1\u50BA\u50B1\u50CB\u50C9\u50B6\u50B8\u51D7\u527A\u5278\u527B\u527C\u55C3\u55DB\u55CC\u55D0\u55CB\u55CA\u55DD\u55C0\u55D4\u55C4\u55E9\u55BF\u55D2\u558D\u55CF\u55D5\u55E2\u55D6\u55C8\u55F2\u55CD\u55D9\u55C2\u5714\u5853\u5868\u5864\u584F\u584D\u5849\u586F\u5855\u584E\u585D\u5859\u5865\u585B\u583D\u5863\u5871\u58FC\u5AC7\u5AC4\u5ACB\u5ABA\u5AB8\u5AB1\u5AB5\u5AB0\u5ABF\u5AC8\u5ABB\u5AC6\"],\n[\"dd40\",\"\u5AB7\u5AC0\u5ACA\u5AB4\u5AB6\u5ACD\u5AB9\u5A90\u5BD6\u5BD8\u5BD9\u5C1F\u5C33\u5D71\u5D63\u5D4A\u5D65\u5D72\u5D6C\u5D5E\u5D68\u5D67\u5D62\u5DF0\u5E4F\u5E4E\u5E4A\u5E4D\u5E4B\u5EC5\u5ECC\u5EC6\u5ECB\u5EC7\u5F40\u5FAF\u5FAD\u60F7\u6149\u614A\u612B\u6145\u6136\u6132\u612E\u6146\u612F\u614F\u6129\u6140\u6220\u9168\u6223\u6225\u6224\u63C5\u63F1\u63EB\u6410\u6412\u6409\u6420\u6424\"],\n[\"dda1\",\"\u6433\u6443\u641F\u6415\u6418\u6439\u6437\u6422\u6423\u640C\u6426\u6430\u6428\u6441\u6435\u642F\u640A\u641A\u6440\u6425\u6427\u640B\u63E7\u641B\u642E\u6421\u640E\u656F\u6592\u65D3\u6686\u668C\u6695\u6690\u668B\u668A\u6699\u6694\u6678\u6720\u6966\u695F\u6938\u694E\u6962\u6971\u693F\u6945\u696A\u6939\u6942\u6957\u6959\u697A\u6948\u6949\u6935\u696C\u6933\u693D\u6965\u68F0\u6978\u6934\u6969\u6940\u696F\u6944\u6976\u6958\u6941\u6974\u694C\u693B\u694B\u6937\u695C\u694F\u6951\u6932\u6952\u692F\u697B\u693C\u6B46\u6B45\u6B43\u6B42\u6B48\u6B41\u6B9B\uFA0D\u6BFB\u6BFC\"],\n[\"de40\",\"\u6BF9\u6BF7\u6BF8\u6E9B\u6ED6\u6EC8\u6E8F\u6EC0\u6E9F\u6E93\u6E94\u6EA0\u6EB1\u6EB9\u6EC6\u6ED2\u6EBD\u6EC1\u6E9E\u6EC9\u6EB7\u6EB0\u6ECD\u6EA6\u6ECF\u6EB2\u6EBE\u6EC3\u6EDC\u6ED8\u6E99\u6E92\u6E8E\u6E8D\u6EA4\u6EA1\u6EBF\u6EB3\u6ED0\u6ECA\u6E97\u6EAE\u6EA3\u7147\u7154\u7152\u7163\u7160\u7141\u715D\u7162\u7172\u7178\u716A\u7161\u7142\u7158\u7143\u714B\u7170\u715F\u7150\u7153\"],\n[\"dea1\",\"\u7144\u714D\u715A\u724F\u728D\u728C\u7291\u7290\u728E\u733C\u7342\u733B\u733A\u7340\u734A\u7349\u7444\u744A\u744B\u7452\u7451\u7457\u7440\u744F\u7450\u744E\u7442\u7446\u744D\u7454\u74E1\u74FF\u74FE\u74FD\u751D\u7579\u7577\u6983\u75EF\u760F\u7603\u75F7\u75FE\u75FC\u75F9\u75F8\u7610\u75FB\u75F6\u75ED\u75F5\u75FD\u7699\u76B5\u76DD\u7755\u775F\u7760\u7752\u7756\u775A\u7769\u7767\u7754\u7759\u776D\u77E0\u7887\u789A\u7894\u788F\u7884\u7895\u7885\u7886\u78A1\u7883\u7879\u7899\u7880\u7896\u787B\u797C\u7982\u797D\u7979\u7A11\u7A18\u7A19\u7A12\u7A17\u7A15\u7A22\u7A13\"],\n[\"df40\",\"\u7A1B\u7A10\u7AA3\u7AA2\u7A9E\u7AEB\u7B66\u7B64\u7B6D\u7B74\u7B69\u7B72\u7B65\u7B73\u7B71\u7B70\u7B61\u7B78\u7B76\u7B63\u7CB2\u7CB4\u7CAF\u7D88\u7D86\u7D80\u7D8D\u7D7F\u7D85\u7D7A\u7D8E\u7D7B\u7D83\u7D7C\u7D8C\u7D94\u7D84\u7D7D\u7D92\u7F6D\u7F6B\u7F67\u7F68\u7F6C\u7FA6\u7FA5\u7FA7\u7FDB\u7FDC\u8021\u8164\u8160\u8177\u815C\u8169\u815B\u8162\u8172\u6721\u815E\u8176\u8167\u816F\"],\n[\"dfa1\",\"\u8144\u8161\u821D\u8249\u8244\u8240\u8242\u8245\u84F1\u843F\u8456\u8476\u8479\u848F\u848D\u8465\u8451\u8440\u8486\u8467\u8430\u844D\u847D\u845A\u8459\u8474\u8473\u845D\u8507\u845E\u8437\u843A\u8434\u847A\u8443\u8478\u8432\u8445\u8429\u83D9\u844B\u842F\u8442\u842D\u845F\u8470\u8439\u844E\u844C\u8452\u846F\u84C5\u848E\u843B\u8447\u8436\u8433\u8468\u847E\u8444\u842B\u8460\u8454\u846E\u8450\u870B\u8704\u86F7\u870C\u86FA\u86D6\u86F5\u874D\u86F8\u870E\u8709\u8701\u86F6\u870D\u8705\u88D6\u88CB\u88CD\u88CE\u88DE\u88DB\u88DA\u88CC\u88D0\u8985\u899B\u89DF\u89E5\u89E4\"],\n[\"e040\",\"\u89E1\u89E0\u89E2\u89DC\u89E6\u8A76\u8A86\u8A7F\u8A61\u8A3F\u8A77\u8A82\u8A84\u8A75\u8A83\u8A81\u8A74\u8A7A\u8C3C\u8C4B\u8C4A\u8C65\u8C64\u8C66\u8C86\u8C84\u8C85\u8CCC\u8D68\u8D69\u8D91\u8D8C\u8D8E\u8D8F\u8D8D\u8D93\u8D94\u8D90\u8D92\u8DF0\u8DE0\u8DEC\u8DF1\u8DEE\u8DD0\u8DE9\u8DE3\u8DE2\u8DE7\u8DF2\u8DEB\u8DF4\u8F06\u8EFF\u8F01\u8F00\u8F05\u8F07\u8F08\u8F02\u8F0B\u9052\u903F\"],\n[\"e0a1\",\"\u9044\u9049\u903D\u9110\u910D\u910F\u9111\u9116\u9114\u910B\u910E\u916E\u916F\u9248\u9252\u9230\u923A\u9266\u9233\u9265\u925E\u9283\u922E\u924A\u9246\u926D\u926C\u924F\u9260\u9267\u926F\u9236\u9261\u9270\u9231\u9254\u9263\u9250\u9272\u924E\u9253\u924C\u9256\u9232\u959F\u959C\u959E\u959B\u9692\u9693\u9691\u9697\u96CE\u96FA\u96FD\u96F8\u96F5\u9773\u9777\u9778\u9772\u980F\u980D\u980E\u98AC\u98F6\u98F9\u99AF\u99B2\u99B0\u99B5\u9AAD\u9AAB\u9B5B\u9CEA\u9CED\u9CE7\u9E80\u9EFD\u50E6\u50D4\u50D7\u50E8\u50F3\u50DB\u50EA\u50DD\u50E4\u50D3\u50EC\u50F0\u50EF\u50E3\u50E0\"],\n[\"e140\",\"\u51D8\u5280\u5281\u52E9\u52EB\u5330\u53AC\u5627\u5615\u560C\u5612\u55FC\u560F\u561C\u5601\u5613\u5602\u55FA\u561D\u5604\u55FF\u55F9\u5889\u587C\u5890\u5898\u5886\u5881\u587F\u5874\u588B\u587A\u5887\u5891\u588E\u5876\u5882\u5888\u587B\u5894\u588F\u58FE\u596B\u5ADC\u5AEE\u5AE5\u5AD5\u5AEA\u5ADA\u5AED\u5AEB\u5AF3\u5AE2\u5AE0\u5ADB\u5AEC\u5ADE\u5ADD\u5AD9\u5AE8\u5ADF\u5B77\u5BE0\"],\n[\"e1a1\",\"\u5BE3\u5C63\u5D82\u5D80\u5D7D\u5D86\u5D7A\u5D81\u5D77\u5D8A\u5D89\u5D88\u5D7E\u5D7C\u5D8D\u5D79\u5D7F\u5E58\u5E59\u5E53\u5ED8\u5ED1\u5ED7\u5ECE\u5EDC\u5ED5\u5ED9\u5ED2\u5ED4\u5F44\u5F43\u5F6F\u5FB6\u612C\u6128\u6141\u615E\u6171\u6173\u6152\u6153\u6172\u616C\u6180\u6174\u6154\u617A\u615B\u6165\u613B\u616A\u6161\u6156\u6229\u6227\u622B\u642B\u644D\u645B\u645D\u6474\u6476\u6472\u6473\u647D\u6475\u6466\u64A6\u644E\u6482\u645E\u645C\u644B\u6453\u6460\u6450\u647F\u643F\u646C\u646B\u6459\u6465\u6477\u6573\u65A0\u66A1\u66A0\u669F\u6705\u6704\u6722\u69B1\u69B6\u69C9\"],\n[\"e240\",\"\u69A0\u69CE\u6996\u69B0\u69AC\u69BC\u6991\u6999\u698E\u69A7\u698D\u69A9\u69BE\u69AF\u69BF\u69C4\u69BD\u69A4\u69D4\u69B9\u69CA\u699A\u69CF\u69B3\u6993\u69AA\u69A1\u699E\u69D9\u6997\u6990\u69C2\u69B5\u69A5\u69C6\u6B4A\u6B4D\u6B4B\u6B9E\u6B9F\u6BA0\u6BC3\u6BC4\u6BFE\u6ECE\u6EF5\u6EF1\u6F03\u6F25\u6EF8\u6F37\u6EFB\u6F2E\u6F09\u6F4E\u6F19\u6F1A\u6F27\u6F18\u6F3B\u6F12\u6EED\u6F0A\"],\n[\"e2a1\",\"\u6F36\u6F73\u6EF9\u6EEE\u6F2D\u6F40\u6F30\u6F3C\u6F35\u6EEB\u6F07\u6F0E\u6F43\u6F05\u6EFD\u6EF6\u6F39\u6F1C\u6EFC\u6F3A\u6F1F\u6F0D\u6F1E\u6F08\u6F21\u7187\u7190\u7189\u7180\u7185\u7182\u718F\u717B\u7186\u7181\u7197\u7244\u7253\u7297\u7295\u7293\u7343\u734D\u7351\u734C\u7462\u7473\u7471\u7475\u7472\u7467\u746E\u7500\u7502\u7503\u757D\u7590\u7616\u7608\u760C\u7615\u7611\u760A\u7614\u76B8\u7781\u777C\u7785\u7782\u776E\u7780\u776F\u777E\u7783\u78B2\u78AA\u78B4\u78AD\u78A8\u787E\u78AB\u789E\u78A5\u78A0\u78AC\u78A2\u78A4\u7998\u798A\u798B\u7996\u7995\u7994\u7993\"],\n[\"e340\",\"\u7997\u7988\u7992\u7990\u7A2B\u7A4A\u7A30\u7A2F\u7A28\u7A26\u7AA8\u7AAB\u7AAC\u7AEE\u7B88\u7B9C\u7B8A\u7B91\u7B90\u7B96\u7B8D\u7B8C\u7B9B\u7B8E\u7B85\u7B98\u5284\u7B99\u7BA4\u7B82\u7CBB\u7CBF\u7CBC\u7CBA\u7DA7\u7DB7\u7DC2\u7DA3\u7DAA\u7DC1\u7DC0\u7DC5\u7D9D\u7DCE\u7DC4\u7DC6\u7DCB\u7DCC\u7DAF\u7DB9\u7D96\u7DBC\u7D9F\u7DA6\u7DAE\u7DA9\u7DA1\u7DC9\u7F73\u7FE2\u7FE3\u7FE5\u7FDE\"],\n[\"e3a1\",\"\u8024\u805D\u805C\u8189\u8186\u8183\u8187\u818D\u818C\u818B\u8215\u8497\u84A4\u84A1\u849F\u84BA\u84CE\u84C2\u84AC\u84AE\u84AB\u84B9\u84B4\u84C1\u84CD\u84AA\u849A\u84B1\u84D0\u849D\u84A7\u84BB\u84A2\u8494\u84C7\u84CC\u849B\u84A9\u84AF\u84A8\u84D6\u8498\u84B6\u84CF\u84A0\u84D7\u84D4\u84D2\u84DB\u84B0\u8491\u8661\u8733\u8723\u8728\u876B\u8740\u872E\u871E\u8721\u8719\u871B\u8743\u872C\u8741\u873E\u8746\u8720\u8732\u872A\u872D\u873C\u8712\u873A\u8731\u8735\u8742\u8726\u8727\u8738\u8724\u871A\u8730\u8711\u88F7\u88E7\u88F1\u88F2\u88FA\u88FE\u88EE\u88FC\u88F6\u88FB\"],\n[\"e440\",\"\u88F0\u88EC\u88EB\u899D\u89A1\u899F\u899E\u89E9\u89EB\u89E8\u8AAB\u8A99\u8A8B\u8A92\u8A8F\u8A96\u8C3D\u8C68\u8C69\u8CD5\u8CCF\u8CD7\u8D96\u8E09\u8E02\u8DFF\u8E0D\u8DFD\u8E0A\u8E03\u8E07\u8E06\u8E05\u8DFE\u8E00\u8E04\u8F10\u8F11\u8F0E\u8F0D\u9123\u911C\u9120\u9122\u911F\u911D\u911A\u9124\u9121\u911B\u917A\u9172\u9179\u9173\u92A5\u92A4\u9276\u929B\u927A\u92A0\u9294\u92AA\u928D\"],\n[\"e4a1\",\"\u92A6\u929A\u92AB\u9279\u9297\u927F\u92A3\u92EE\u928E\u9282\u9295\u92A2\u927D\u9288\u92A1\u928A\u9286\u928C\u9299\u92A7\u927E\u9287\u92A9\u929D\u928B\u922D\u969E\u96A1\u96FF\u9758\u977D\u977A\u977E\u9783\u9780\u9782\u977B\u9784\u9781\u977F\u97CE\u97CD\u9816\u98AD\u98AE\u9902\u9900\u9907\u999D\u999C\u99C3\u99B9\u99BB\u99BA\u99C2\u99BD\u99C7\u9AB1\u9AE3\u9AE7\u9B3E\u9B3F\u9B60\u9B61\u9B5F\u9CF1\u9CF2\u9CF5\u9EA7\u50FF\u5103\u5130\u50F8\u5106\u5107\u50F6\u50FE\u510B\u510C\u50FD\u510A\u528B\u528C\u52F1\u52EF\u5648\u5642\u564C\u5635\u5641\u564A\u5649\u5646\u5658\"],\n[\"e540\",\"\u565A\u5640\u5633\u563D\u562C\u563E\u5638\u562A\u563A\u571A\u58AB\u589D\u58B1\u58A0\u58A3\u58AF\u58AC\u58A5\u58A1\u58FF\u5AFF\u5AF4\u5AFD\u5AF7\u5AF6\u5B03\u5AF8\u5B02\u5AF9\u5B01\u5B07\u5B05\u5B0F\u5C67\u5D99\u5D97\u5D9F\u5D92\u5DA2\u5D93\u5D95\u5DA0\u5D9C\u5DA1\u5D9A\u5D9E\u5E69\u5E5D\u5E60\u5E5C\u7DF3\u5EDB\u5EDE\u5EE1\u5F49\u5FB2\u618B\u6183\u6179\u61B1\u61B0\u61A2\u6189\"],\n[\"e5a1\",\"\u619B\u6193\u61AF\u61AD\u619F\u6192\u61AA\u61A1\u618D\u6166\u61B3\u622D\u646E\u6470\u6496\u64A0\u6485\u6497\u649C\u648F\u648B\u648A\u648C\u64A3\u649F\u6468\u64B1\u6498\u6576\u657A\u6579\u657B\u65B2\u65B3\u66B5\u66B0\u66A9\u66B2\u66B7\u66AA\u66AF\u6A00\u6A06\u6A17\u69E5\u69F8\u6A15\u69F1\u69E4\u6A20\u69FF\u69EC\u69E2\u6A1B\u6A1D\u69FE\u6A27\u69F2\u69EE\u6A14\u69F7\u69E7\u6A40\u6A08\u69E6\u69FB\u6A0D\u69FC\u69EB\u6A09\u6A04\u6A18\u6A25\u6A0F\u69F6\u6A26\u6A07\u69F4\u6A16\u6B51\u6BA5\u6BA3\u6BA2\u6BA6\u6C01\u6C00\u6BFF\u6C02\u6F41\u6F26\u6F7E\u6F87\u6FC6\u6F92\"],\n[\"e640\",\"\u6F8D\u6F89\u6F8C\u6F62\u6F4F\u6F85\u6F5A\u6F96\u6F76\u6F6C\u6F82\u6F55\u6F72\u6F52\u6F50\u6F57\u6F94\u6F93\u6F5D\u6F00\u6F61\u6F6B\u6F7D\u6F67\u6F90\u6F53\u6F8B\u6F69\u6F7F\u6F95\u6F63\u6F77\u6F6A\u6F7B\u71B2\u71AF\u719B\u71B0\u71A0\u719A\u71A9\u71B5\u719D\u71A5\u719E\u71A4\u71A1\u71AA\u719C\u71A7\u71B3\u7298\u729A\u7358\u7352\u735E\u735F\u7360\u735D\u735B\u7361\u735A\u7359\"],\n[\"e6a1\",\"\u7362\u7487\u7489\u748A\u7486\u7481\u747D\u7485\u7488\u747C\u7479\u7508\u7507\u757E\u7625\u761E\u7619\u761D\u761C\u7623\u761A\u7628\u761B\u769C\u769D\u769E\u769B\u778D\u778F\u7789\u7788\u78CD\u78BB\u78CF\u78CC\u78D1\u78CE\u78D4\u78C8\u78C3\u78C4\u78C9\u799A\u79A1\u79A0\u799C\u79A2\u799B\u6B76\u7A39\u7AB2\u7AB4\u7AB3\u7BB7\u7BCB\u7BBE\u7BAC\u7BCE\u7BAF\u7BB9\u7BCA\u7BB5\u7CC5\u7CC8\u7CCC\u7CCB\u7DF7\u7DDB\u7DEA\u7DE7\u7DD7\u7DE1\u7E03\u7DFA\u7DE6\u7DF6\u7DF1\u7DF0\u7DEE\u7DDF\u7F76\u7FAC\u7FB0\u7FAD\u7FED\u7FEB\u7FEA\u7FEC\u7FE6\u7FE8\u8064\u8067\u81A3\u819F\"],\n[\"e740\",\"\u819E\u8195\u81A2\u8199\u8197\u8216\u824F\u8253\u8252\u8250\u824E\u8251\u8524\u853B\u850F\u8500\u8529\u850E\u8509\u850D\u851F\u850A\u8527\u851C\u84FB\u852B\u84FA\u8508\u850C\u84F4\u852A\u84F2\u8515\u84F7\u84EB\u84F3\u84FC\u8512\u84EA\u84E9\u8516\u84FE\u8528\u851D\u852E\u8502\u84FD\u851E\u84F6\u8531\u8526\u84E7\u84E8\u84F0\u84EF\u84F9\u8518\u8520\u8530\u850B\u8519\u852F\u8662\"],\n[\"e7a1\",\"\u8756\u8763\u8764\u8777\u87E1\u8773\u8758\u8754\u875B\u8752\u8761\u875A\u8751\u875E\u876D\u876A\u8750\u874E\u875F\u875D\u876F\u876C\u877A\u876E\u875C\u8765\u874F\u877B\u8775\u8762\u8767\u8769\u885A\u8905\u890C\u8914\u890B\u8917\u8918\u8919\u8906\u8916\u8911\u890E\u8909\u89A2\u89A4\u89A3\u89ED\u89F0\u89EC\u8ACF\u8AC6\u8AB8\u8AD3\u8AD1\u8AD4\u8AD5\u8ABB\u8AD7\u8ABE\u8AC0\u8AC5\u8AD8\u8AC3\u8ABA\u8ABD\u8AD9\u8C3E\u8C4D\u8C8F\u8CE5\u8CDF\u8CD9\u8CE8\u8CDA\u8CDD\u8CE7\u8DA0\u8D9C\u8DA1\u8D9B\u8E20\u8E23\u8E25\u8E24\u8E2E\u8E15\u8E1B\u8E16\u8E11\u8E19\u8E26\u8E27\"],\n[\"e840\",\"\u8E14\u8E12\u8E18\u8E13\u8E1C\u8E17\u8E1A\u8F2C\u8F24\u8F18\u8F1A\u8F20\u8F23\u8F16\u8F17\u9073\u9070\u906F\u9067\u906B\u912F\u912B\u9129\u912A\u9132\u9126\u912E\u9185\u9186\u918A\u9181\u9182\u9184\u9180\u92D0\u92C3\u92C4\u92C0\u92D9\u92B6\u92CF\u92F1\u92DF\u92D8\u92E9\u92D7\u92DD\u92CC\u92EF\u92C2\u92E8\u92CA\u92C8\u92CE\u92E6\u92CD\u92D5\u92C9\u92E0\u92DE\u92E7\u92D1\u92D3\"],\n[\"e8a1\",\"\u92B5\u92E1\u92C6\u92B4\u957C\u95AC\u95AB\u95AE\u95B0\u96A4\u96A2\u96D3\u9705\u9708\u9702\u975A\u978A\u978E\u9788\u97D0\u97CF\u981E\u981D\u9826\u9829\u9828\u9820\u981B\u9827\u98B2\u9908\u98FA\u9911\u9914\u9916\u9917\u9915\u99DC\u99CD\u99CF\u99D3\u99D4\u99CE\u99C9\u99D6\u99D8\u99CB\u99D7\u99CC\u9AB3\u9AEC\u9AEB\u9AF3\u9AF2\u9AF1\u9B46\u9B43\u9B67\u9B74\u9B71\u9B66\u9B76\u9B75\u9B70\u9B68\u9B64\u9B6C\u9CFC\u9CFA\u9CFD\u9CFF\u9CF7\u9D07\u9D00\u9CF9\u9CFB\u9D08\u9D05\u9D04\u9E83\u9ED3\u9F0F\u9F10\u511C\u5113\u5117\u511A\u5111\u51DE\u5334\u53E1\u5670\u5660\u566E\"],\n[\"e940\",\"\u5673\u5666\u5663\u566D\u5672\u565E\u5677\u571C\u571B\u58C8\u58BD\u58C9\u58BF\u58BA\u58C2\u58BC\u58C6\u5B17\u5B19\u5B1B\u5B21\u5B14\u5B13\u5B10\u5B16\u5B28\u5B1A\u5B20\u5B1E\u5BEF\u5DAC\u5DB1\u5DA9\u5DA7\u5DB5\u5DB0\u5DAE\u5DAA\u5DA8\u5DB2\u5DAD\u5DAF\u5DB4\u5E67\u5E68\u5E66\u5E6F\u5EE9\u5EE7\u5EE6\u5EE8\u5EE5\u5F4B\u5FBC\u619D\u61A8\u6196\u61C5\u61B4\u61C6\u61C1\u61CC\u61BA\"],\n[\"e9a1\",\"\u61BF\u61B8\u618C\u64D7\u64D6\u64D0\u64CF\u64C9\u64BD\u6489\u64C3\u64DB\u64F3\u64D9\u6533\u657F\u657C\u65A2\u66C8\u66BE\u66C0\u66CA\u66CB\u66CF\u66BD\u66BB\u66BA\u66CC\u6723\u6A34\u6A66\u6A49\u6A67\u6A32\u6A68\u6A3E\u6A5D\u6A6D\u6A76\u6A5B\u6A51\u6A28\u6A5A\u6A3B\u6A3F\u6A41\u6A6A\u6A64\u6A50\u6A4F\u6A54\u6A6F\u6A69\u6A60\u6A3C\u6A5E\u6A56\u6A55\u6A4D\u6A4E\u6A46\u6B55\u6B54\u6B56\u6BA7\u6BAA\u6BAB\u6BC8\u6BC7\u6C04\u6C03\u6C06\u6FAD\u6FCB\u6FA3\u6FC7\u6FBC\u6FCE\u6FC8\u6F5E\u6FC4\u6FBD\u6F9E\u6FCA\u6FA8\u7004\u6FA5\u6FAE\u6FBA\u6FAC\u6FAA\u6FCF\u6FBF\u6FB8\"],\n[\"ea40\",\"\u6FA2\u6FC9\u6FAB\u6FCD\u6FAF\u6FB2\u6FB0\u71C5\u71C2\u71BF\u71B8\u71D6\u71C0\u71C1\u71CB\u71D4\u71CA\u71C7\u71CF\u71BD\u71D8\u71BC\u71C6\u71DA\u71DB\u729D\u729E\u7369\u7366\u7367\u736C\u7365\u736B\u736A\u747F\u749A\u74A0\u7494\u7492\u7495\u74A1\u750B\u7580\u762F\u762D\u7631\u763D\u7633\u763C\u7635\u7632\u7630\u76BB\u76E6\u779A\u779D\u77A1\u779C\u779B\u77A2\u77A3\u7795\u7799\"],\n[\"eaa1\",\"\u7797\u78DD\u78E9\u78E5\u78EA\u78DE\u78E3\u78DB\u78E1\u78E2\u78ED\u78DF\u78E0\u79A4\u7A44\u7A48\u7A47\u7AB6\u7AB8\u7AB5\u7AB1\u7AB7\u7BDE\u7BE3\u7BE7\u7BDD\u7BD5\u7BE5\u7BDA\u7BE8\u7BF9\u7BD4\u7BEA\u7BE2\u7BDC\u7BEB\u7BD8\u7BDF\u7CD2\u7CD4\u7CD7\u7CD0\u7CD1\u7E12\u7E21\u7E17\u7E0C\u7E1F\u7E20\u7E13\u7E0E\u7E1C\u7E15\u7E1A\u7E22\u7E0B\u7E0F\u7E16\u7E0D\u7E14\u7E25\u7E24\u7F43\u7F7B\u7F7C\u7F7A\u7FB1\u7FEF\u802A\u8029\u806C\u81B1\u81A6\u81AE\u81B9\u81B5\u81AB\u81B0\u81AC\u81B4\u81B2\u81B7\u81A7\u81F2\u8255\u8256\u8257\u8556\u8545\u856B\u854D\u8553\u8561\u8558\"],\n[\"eb40\",\"\u8540\u8546\u8564\u8541\u8562\u8544\u8551\u8547\u8563\u853E\u855B\u8571\u854E\u856E\u8575\u8555\u8567\u8560\u858C\u8566\u855D\u8554\u8565\u856C\u8663\u8665\u8664\u879B\u878F\u8797\u8793\u8792\u8788\u8781\u8796\u8798\u8779\u8787\u87A3\u8785\u8790\u8791\u879D\u8784\u8794\u879C\u879A\u8789\u891E\u8926\u8930\u892D\u892E\u8927\u8931\u8922\u8929\u8923\u892F\u892C\u891F\u89F1\u8AE0\"],\n[\"eba1\",\"\u8AE2\u8AF2\u8AF4\u8AF5\u8ADD\u8B14\u8AE4\u8ADF\u8AF0\u8AC8\u8ADE\u8AE1\u8AE8\u8AFF\u8AEF\u8AFB\u8C91\u8C92\u8C90\u8CF5\u8CEE\u8CF1\u8CF0\u8CF3\u8D6C\u8D6E\u8DA5\u8DA7\u8E33\u8E3E\u8E38\u8E40\u8E45\u8E36\u8E3C\u8E3D\u8E41\u8E30\u8E3F\u8EBD\u8F36\u8F2E\u8F35\u8F32\u8F39\u8F37\u8F34\u9076\u9079\u907B\u9086\u90FA\u9133\u9135\u9136\u9193\u9190\u9191\u918D\u918F\u9327\u931E\u9308\u931F\u9306\u930F\u937A\u9338\u933C\u931B\u9323\u9312\u9301\u9346\u932D\u930E\u930D\u92CB\u931D\u92FA\u9325\u9313\u92F9\u92F7\u9334\u9302\u9324\u92FF\u9329\u9339\u9335\u932A\u9314\u930C\"],\n[\"ec40\",\"\u930B\u92FE\u9309\u9300\u92FB\u9316\u95BC\u95CD\u95BE\u95B9\u95BA\u95B6\u95BF\u95B5\u95BD\u96A9\u96D4\u970B\u9712\u9710\u9799\u9797\u9794\u97F0\u97F8\u9835\u982F\u9832\u9924\u991F\u9927\u9929\u999E\u99EE\u99EC\u99E5\u99E4\u99F0\u99E3\u99EA\u99E9\u99E7\u9AB9\u9ABF\u9AB4\u9ABB\u9AF6\u9AFA\u9AF9\u9AF7\u9B33\u9B80\u9B85\u9B87\u9B7C\u9B7E\u9B7B\u9B82\u9B93\u9B92\u9B90\u9B7A\u9B95\"],\n[\"eca1\",\"\u9B7D\u9B88\u9D25\u9D17\u9D20\u9D1E\u9D14\u9D29\u9D1D\u9D18\u9D22\u9D10\u9D19\u9D1F\u9E88\u9E86\u9E87\u9EAE\u9EAD\u9ED5\u9ED6\u9EFA\u9F12\u9F3D\u5126\u5125\u5122\u5124\u5120\u5129\u52F4\u5693\u568C\u568D\u5686\u5684\u5683\u567E\u5682\u567F\u5681\u58D6\u58D4\u58CF\u58D2\u5B2D\u5B25\u5B32\u5B23\u5B2C\u5B27\u5B26\u5B2F\u5B2E\u5B7B\u5BF1\u5BF2\u5DB7\u5E6C\u5E6A\u5FBE\u5FBB\u61C3\u61B5\u61BC\u61E7\u61E0\u61E5\u61E4\u61E8\u61DE\u64EF\u64E9\u64E3\u64EB\u64E4\u64E8\u6581\u6580\u65B6\u65DA\u66D2\u6A8D\u6A96\u6A81\u6AA5\u6A89\u6A9F\u6A9B\u6AA1\u6A9E\u6A87\u6A93\u6A8E\"],\n[\"ed40\",\"\u6A95\u6A83\u6AA8\u6AA4\u6A91\u6A7F\u6AA6\u6A9A\u6A85\u6A8C\u6A92\u6B5B\u6BAD\u6C09\u6FCC\u6FA9\u6FF4\u6FD4\u6FE3\u6FDC\u6FED\u6FE7\u6FE6\u6FDE\u6FF2\u6FDD\u6FE2\u6FE8\u71E1\u71F1\u71E8\u71F2\u71E4\u71F0\u71E2\u7373\u736E\u736F\u7497\u74B2\u74AB\u7490\u74AA\u74AD\u74B1\u74A5\u74AF\u7510\u7511\u7512\u750F\u7584\u7643\u7648\u7649\u7647\u76A4\u76E9\u77B5\u77AB\u77B2\u77B7\u77B6\"],\n[\"eda1\",\"\u77B4\u77B1\u77A8\u77F0\u78F3\u78FD\u7902\u78FB\u78FC\u78F2\u7905\u78F9\u78FE\u7904\u79AB\u79A8\u7A5C\u7A5B\u7A56\u7A58\u7A54\u7A5A\u7ABE\u7AC0\u7AC1\u7C05\u7C0F\u7BF2\u7C00\u7BFF\u7BFB\u7C0E\u7BF4\u7C0B\u7BF3\u7C02\u7C09\u7C03\u7C01\u7BF8\u7BFD\u7C06\u7BF0\u7BF1\u7C10\u7C0A\u7CE8\u7E2D\u7E3C\u7E42\u7E33\u9848\u7E38\u7E2A\u7E49\u7E40\u7E47\u7E29\u7E4C\u7E30\u7E3B\u7E36\u7E44\u7E3A\u7F45\u7F7F\u7F7E\u7F7D\u7FF4\u7FF2\u802C\u81BB\u81C4\u81CC\u81CA\u81C5\u81C7\u81BC\u81E9\u825B\u825A\u825C\u8583\u8580\u858F\u85A7\u8595\u85A0\u858B\u85A3\u857B\u85A4\u859A\u859E\"],\n[\"ee40\",\"\u8577\u857C\u8589\u85A1\u857A\u8578\u8557\u858E\u8596\u8586\u858D\u8599\u859D\u8581\u85A2\u8582\u8588\u8585\u8579\u8576\u8598\u8590\u859F\u8668\u87BE\u87AA\u87AD\u87C5\u87B0\u87AC\u87B9\u87B5\u87BC\u87AE\u87C9\u87C3\u87C2\u87CC\u87B7\u87AF\u87C4\u87CA\u87B4\u87B6\u87BF\u87B8\u87BD\u87DE\u87B2\u8935\u8933\u893C\u893E\u8941\u8952\u8937\u8942\u89AD\u89AF\u89AE\u89F2\u89F3\u8B1E\"],\n[\"eea1\",\"\u8B18\u8B16\u8B11\u8B05\u8B0B\u8B22\u8B0F\u8B12\u8B15\u8B07\u8B0D\u8B08\u8B06\u8B1C\u8B13\u8B1A\u8C4F\u8C70\u8C72\u8C71\u8C6F\u8C95\u8C94\u8CF9\u8D6F\u8E4E\u8E4D\u8E53\u8E50\u8E4C\u8E47\u8F43\u8F40\u9085\u907E\u9138\u919A\u91A2\u919B\u9199\u919F\u91A1\u919D\u91A0\u93A1\u9383\u93AF\u9364\u9356\u9347\u937C\u9358\u935C\u9376\u9349\u9350\u9351\u9360\u936D\u938F\u934C\u936A\u9379\u9357\u9355\u9352\u934F\u9371\u9377\u937B\u9361\u935E\u9363\u9367\u9380\u934E\u9359\u95C7\u95C0\u95C9\u95C3\u95C5\u95B7\u96AE\u96B0\u96AC\u9720\u971F\u9718\u971D\u9719\u979A\u97A1\u979C\"],\n[\"ef40\",\"\u979E\u979D\u97D5\u97D4\u97F1\u9841\u9844\u984A\u9849\u9845\u9843\u9925\u992B\u992C\u992A\u9933\u9932\u992F\u992D\u9931\u9930\u9998\u99A3\u99A1\u9A02\u99FA\u99F4\u99F7\u99F9\u99F8\u99F6\u99FB\u99FD\u99FE\u99FC\u9A03\u9ABE\u9AFE\u9AFD\u9B01\u9AFC\u9B48\u9B9A\u9BA8\u9B9E\u9B9B\u9BA6\u9BA1\u9BA5\u9BA4\u9B86\u9BA2\u9BA0\u9BAF\u9D33\u9D41\u9D67\u9D36\u9D2E\u9D2F\u9D31\u9D38\u9D30\"],\n[\"efa1\",\"\u9D45\u9D42\u9D43\u9D3E\u9D37\u9D40\u9D3D\u7FF5\u9D2D\u9E8A\u9E89\u9E8D\u9EB0\u9EC8\u9EDA\u9EFB\u9EFF\u9F24\u9F23\u9F22\u9F54\u9FA0\u5131\u512D\u512E\u5698\u569C\u5697\u569A\u569D\u5699\u5970\u5B3C\u5C69\u5C6A\u5DC0\u5E6D\u5E6E\u61D8\u61DF\u61ED\u61EE\u61F1\u61EA\u61F0\u61EB\u61D6\u61E9\u64FF\u6504\u64FD\u64F8\u6501\u6503\u64FC\u6594\u65DB\u66DA\u66DB\u66D8\u6AC5\u6AB9\u6ABD\u6AE1\u6AC6\u6ABA\u6AB6\u6AB7\u6AC7\u6AB4\u6AAD\u6B5E\u6BC9\u6C0B\u7007\u700C\u700D\u7001\u7005\u7014\u700E\u6FFF\u7000\u6FFB\u7026\u6FFC\u6FF7\u700A\u7201\u71FF\u71F9\u7203\u71FD\u7376\"],\n[\"f040\",\"\u74B8\u74C0\u74B5\u74C1\u74BE\u74B6\u74BB\u74C2\u7514\u7513\u765C\u7664\u7659\u7650\u7653\u7657\u765A\u76A6\u76BD\u76EC\u77C2\u77BA\u78FF\u790C\u7913\u7914\u7909\u7910\u7912\u7911\u79AD\u79AC\u7A5F\u7C1C\u7C29\u7C19\u7C20\u7C1F\u7C2D\u7C1D\u7C26\u7C28\u7C22\u7C25\u7C30\u7E5C\u7E50\u7E56\u7E63\u7E58\u7E62\u7E5F\u7E51\u7E60\u7E57\u7E53\u7FB5\u7FB3\u7FF7\u7FF8\u8075\u81D1\u81D2\"],\n[\"f0a1\",\"\u81D0\u825F\u825E\u85B4\u85C6\u85C0\u85C3\u85C2\u85B3\u85B5\u85BD\u85C7\u85C4\u85BF\u85CB\u85CE\u85C8\u85C5\u85B1\u85B6\u85D2\u8624\u85B8\u85B7\u85BE\u8669\u87E7\u87E6\u87E2\u87DB\u87EB\u87EA\u87E5\u87DF\u87F3\u87E4\u87D4\u87DC\u87D3\u87ED\u87D8\u87E3\u87A4\u87D7\u87D9\u8801\u87F4\u87E8\u87DD\u8953\u894B\u894F\u894C\u8946\u8950\u8951\u8949\u8B2A\u8B27\u8B23\u8B33\u8B30\u8B35\u8B47\u8B2F\u8B3C\u8B3E\u8B31\u8B25\u8B37\u8B26\u8B36\u8B2E\u8B24\u8B3B\u8B3D\u8B3A\u8C42\u8C75\u8C99\u8C98\u8C97\u8CFE\u8D04\u8D02\u8D00\u8E5C\u8E62\u8E60\u8E57\u8E56\u8E5E\u8E65\u8E67\"],\n[\"f140\",\"\u8E5B\u8E5A\u8E61\u8E5D\u8E69\u8E54\u8F46\u8F47\u8F48\u8F4B\u9128\u913A\u913B\u913E\u91A8\u91A5\u91A7\u91AF\u91AA\u93B5\u938C\u9392\u93B7\u939B\u939D\u9389\u93A7\u938E\u93AA\u939E\u93A6\u9395\u9388\u9399\u939F\u938D\u93B1\u9391\u93B2\u93A4\u93A8\u93B4\u93A3\u93A5\u95D2\u95D3\u95D1\u96B3\u96D7\u96DA\u5DC2\u96DF\u96D8\u96DD\u9723\u9722\u9725\u97AC\u97AE\u97A8\u97AB\u97A4\u97AA\"],\n[\"f1a1\",\"\u97A2\u97A5\u97D7\u97D9\u97D6\u97D8\u97FA\u9850\u9851\u9852\u98B8\u9941\u993C\u993A\u9A0F\u9A0B\u9A09\u9A0D\u9A04\u9A11\u9A0A\u9A05\u9A07\u9A06\u9AC0\u9ADC\u9B08\u9B04\u9B05\u9B29\u9B35\u9B4A\u9B4C\u9B4B\u9BC7\u9BC6\u9BC3\u9BBF\u9BC1\u9BB5\u9BB8\u9BD3\u9BB6\u9BC4\u9BB9\u9BBD\u9D5C\u9D53\u9D4F\u9D4A\u9D5B\u9D4B\u9D59\u9D56\u9D4C\u9D57\u9D52\u9D54\u9D5F\u9D58\u9D5A\u9E8E\u9E8C\u9EDF\u9F01\u9F00\u9F16\u9F25\u9F2B\u9F2A\u9F29\u9F28\u9F4C\u9F55\u5134\u5135\u5296\u52F7\u53B4\u56AB\u56AD\u56A6\u56A7\u56AA\u56AC\u58DA\u58DD\u58DB\u5912\u5B3D\u5B3E\u5B3F\u5DC3\u5E70\"],\n[\"f240\",\"\u5FBF\u61FB\u6507\u6510\u650D\u6509\u650C\u650E\u6584\u65DE\u65DD\u66DE\u6AE7\u6AE0\u6ACC\u6AD1\u6AD9\u6ACB\u6ADF\u6ADC\u6AD0\u6AEB\u6ACF\u6ACD\u6ADE\u6B60\u6BB0\u6C0C\u7019\u7027\u7020\u7016\u702B\u7021\u7022\u7023\u7029\u7017\u7024\u701C\u702A\u720C\u720A\u7207\u7202\u7205\u72A5\u72A6\u72A4\u72A3\u72A1\u74CB\u74C5\u74B7\u74C3\u7516\u7660\u77C9\u77CA\u77C4\u77F1\u791D\u791B\"],\n[\"f2a1\",\"\u7921\u791C\u7917\u791E\u79B0\u7A67\u7A68\u7C33\u7C3C\u7C39\u7C2C\u7C3B\u7CEC\u7CEA\u7E76\u7E75\u7E78\u7E70\u7E77\u7E6F\u7E7A\u7E72\u7E74\u7E68\u7F4B\u7F4A\u7F83\u7F86\u7FB7\u7FFD\u7FFE\u8078\u81D7\u81D5\u8264\u8261\u8263\u85EB\u85F1\u85ED\u85D9\u85E1\u85E8\u85DA\u85D7\u85EC\u85F2\u85F8\u85D8\u85DF\u85E3\u85DC\u85D1\u85F0\u85E6\u85EF\u85DE\u85E2\u8800\u87FA\u8803\u87F6\u87F7\u8809\u880C\u880B\u8806\u87FC\u8808\u87FF\u880A\u8802\u8962\u895A\u895B\u8957\u8961\u895C\u8958\u895D\u8959\u8988\u89B7\u89B6\u89F6\u8B50\u8B48\u8B4A\u8B40\u8B53\u8B56\u8B54\u8B4B\u8B55\"],\n[\"f340\",\"\u8B51\u8B42\u8B52\u8B57\u8C43\u8C77\u8C76\u8C9A\u8D06\u8D07\u8D09\u8DAC\u8DAA\u8DAD\u8DAB\u8E6D\u8E78\u8E73\u8E6A\u8E6F\u8E7B\u8EC2\u8F52\u8F51\u8F4F\u8F50\u8F53\u8FB4\u9140\u913F\u91B0\u91AD\u93DE\u93C7\u93CF\u93C2\u93DA\u93D0\u93F9\u93EC\u93CC\u93D9\u93A9\u93E6\u93CA\u93D4\u93EE\u93E3\u93D5\u93C4\u93CE\u93C0\u93D2\u93E7\u957D\u95DA\u95DB\u96E1\u9729\u972B\u972C\u9728\u9726\"],\n[\"f3a1\",\"\u97B3\u97B7\u97B6\u97DD\u97DE\u97DF\u985C\u9859\u985D\u9857\u98BF\u98BD\u98BB\u98BE\u9948\u9947\u9943\u99A6\u99A7\u9A1A\u9A15\u9A25\u9A1D\u9A24\u9A1B\u9A22\u9A20\u9A27\u9A23\u9A1E\u9A1C\u9A14\u9AC2\u9B0B\u9B0A\u9B0E\u9B0C\u9B37\u9BEA\u9BEB\u9BE0\u9BDE\u9BE4\u9BE6\u9BE2\u9BF0\u9BD4\u9BD7\u9BEC\u9BDC\u9BD9\u9BE5\u9BD5\u9BE1\u9BDA\u9D77\u9D81\u9D8A\u9D84\u9D88\u9D71\u9D80\u9D78\u9D86\u9D8B\u9D8C\u9D7D\u9D6B\u9D74\u9D75\u9D70\u9D69\u9D85\u9D73\u9D7B\u9D82\u9D6F\u9D79\u9D7F\u9D87\u9D68\u9E94\u9E91\u9EC0\u9EFC\u9F2D\u9F40\u9F41\u9F4D\u9F56\u9F57\u9F58\u5337\u56B2\"],\n[\"f440\",\"\u56B5\u56B3\u58E3\u5B45\u5DC6\u5DC7\u5EEE\u5EEF\u5FC0\u5FC1\u61F9\u6517\u6516\u6515\u6513\u65DF\u66E8\u66E3\u66E4\u6AF3\u6AF0\u6AEA\u6AE8\u6AF9\u6AF1\u6AEE\u6AEF\u703C\u7035\u702F\u7037\u7034\u7031\u7042\u7038\u703F\u703A\u7039\u7040\u703B\u7033\u7041\u7213\u7214\u72A8\u737D\u737C\u74BA\u76AB\u76AA\u76BE\u76ED\u77CC\u77CE\u77CF\u77CD\u77F2\u7925\u7923\u7927\u7928\u7924\u7929\"],\n[\"f4a1\",\"\u79B2\u7A6E\u7A6C\u7A6D\u7AF7\u7C49\u7C48\u7C4A\u7C47\u7C45\u7CEE\u7E7B\u7E7E\u7E81\u7E80\u7FBA\u7FFF\u8079\u81DB\u81D9\u820B\u8268\u8269\u8622\u85FF\u8601\u85FE\u861B\u8600\u85F6\u8604\u8609\u8605\u860C\u85FD\u8819\u8810\u8811\u8817\u8813\u8816\u8963\u8966\u89B9\u89F7\u8B60\u8B6A\u8B5D\u8B68\u8B63\u8B65\u8B67\u8B6D\u8DAE\u8E86\u8E88\u8E84\u8F59\u8F56\u8F57\u8F55\u8F58\u8F5A\u908D\u9143\u9141\u91B7\u91B5\u91B2\u91B3\u940B\u9413\u93FB\u9420\u940F\u9414\u93FE\u9415\u9410\u9428\u9419\u940D\u93F5\u9400\u93F7\u9407\u940E\u9416\u9412\u93FA\u9409\u93F8\u940A\u93FF\"],\n[\"f540\",\"\u93FC\u940C\u93F6\u9411\u9406\u95DE\u95E0\u95DF\u972E\u972F\u97B9\u97BB\u97FD\u97FE\u9860\u9862\u9863\u985F\u98C1\u98C2\u9950\u994E\u9959\u994C\u994B\u9953\u9A32\u9A34\u9A31\u9A2C\u9A2A\u9A36\u9A29\u9A2E\u9A38\u9A2D\u9AC7\u9ACA\u9AC6\u9B10\u9B12\u9B11\u9C0B\u9C08\u9BF7\u9C05\u9C12\u9BF8\u9C40\u9C07\u9C0E\u9C06\u9C17\u9C14\u9C09\u9D9F\u9D99\u9DA4\u9D9D\u9D92\u9D98\u9D90\u9D9B\"],\n[\"f5a1\",\"\u9DA0\u9D94\u9D9C\u9DAA\u9D97\u9DA1\u9D9A\u9DA2\u9DA8\u9D9E\u9DA3\u9DBF\u9DA9\u9D96\u9DA6\u9DA7\u9E99\u9E9B\u9E9A\u9EE5\u9EE4\u9EE7\u9EE6\u9F30\u9F2E\u9F5B\u9F60\u9F5E\u9F5D\u9F59\u9F91\u513A\u5139\u5298\u5297\u56C3\u56BD\u56BE\u5B48\u5B47\u5DCB\u5DCF\u5EF1\u61FD\u651B\u6B02\u6AFC\u6B03\u6AF8\u6B00\u7043\u7044\u704A\u7048\u7049\u7045\u7046\u721D\u721A\u7219\u737E\u7517\u766A\u77D0\u792D\u7931\u792F\u7C54\u7C53\u7CF2\u7E8A\u7E87\u7E88\u7E8B\u7E86\u7E8D\u7F4D\u7FBB\u8030\u81DD\u8618\u862A\u8626\u861F\u8623\u861C\u8619\u8627\u862E\u8621\u8620\u8629\u861E\u8625\"],\n[\"f640\",\"\u8829\u881D\u881B\u8820\u8824\u881C\u882B\u884A\u896D\u8969\u896E\u896B\u89FA\u8B79\u8B78\u8B45\u8B7A\u8B7B\u8D10\u8D14\u8DAF\u8E8E\u8E8C\u8F5E\u8F5B\u8F5D\u9146\u9144\u9145\u91B9\u943F\u943B\u9436\u9429\u943D\u943C\u9430\u9439\u942A\u9437\u942C\u9440\u9431\u95E5\u95E4\u95E3\u9735\u973A\u97BF\u97E1\u9864\u98C9\u98C6\u98C0\u9958\u9956\u9A39\u9A3D\u9A46\u9A44\u9A42\u9A41\u9A3A\"],\n[\"f6a1\",\"\u9A3F\u9ACD\u9B15\u9B17\u9B18\u9B16\u9B3A\u9B52\u9C2B\u9C1D\u9C1C\u9C2C\u9C23\u9C28\u9C29\u9C24\u9C21\u9DB7\u9DB6\u9DBC\u9DC1\u9DC7\u9DCA\u9DCF\u9DBE\u9DC5\u9DC3\u9DBB\u9DB5\u9DCE\u9DB9\u9DBA\u9DAC\u9DC8\u9DB1\u9DAD\u9DCC\u9DB3\u9DCD\u9DB2\u9E7A\u9E9C\u9EEB\u9EEE\u9EED\u9F1B\u9F18\u9F1A\u9F31\u9F4E\u9F65\u9F64\u9F92\u4EB9\u56C6\u56C5\u56CB\u5971\u5B4B\u5B4C\u5DD5\u5DD1\u5EF2\u6521\u6520\u6526\u6522\u6B0B\u6B08\u6B09\u6C0D\u7055\u7056\u7057\u7052\u721E\u721F\u72A9\u737F\u74D8\u74D5\u74D9\u74D7\u766D\u76AD\u7935\u79B4\u7A70\u7A71\u7C57\u7C5C\u7C59\u7C5B\u7C5A\"],\n[\"f740\",\"\u7CF4\u7CF1\u7E91\u7F4F\u7F87\u81DE\u826B\u8634\u8635\u8633\u862C\u8632\u8636\u882C\u8828\u8826\u882A\u8825\u8971\u89BF\u89BE\u89FB\u8B7E\u8B84\u8B82\u8B86\u8B85\u8B7F\u8D15\u8E95\u8E94\u8E9A\u8E92\u8E90\u8E96\u8E97\u8F60\u8F62\u9147\u944C\u9450\u944A\u944B\u944F\u9447\u9445\u9448\u9449\u9446\u973F\u97E3\u986A\u9869\u98CB\u9954\u995B\u9A4E\u9A53\u9A54\u9A4C\u9A4F\u9A48\u9A4A\"],\n[\"f7a1\",\"\u9A49\u9A52\u9A50\u9AD0\u9B19\u9B2B\u9B3B\u9B56\u9B55\u9C46\u9C48\u9C3F\u9C44\u9C39\u9C33\u9C41\u9C3C\u9C37\u9C34\u9C32\u9C3D\u9C36\u9DDB\u9DD2\u9DDE\u9DDA\u9DCB\u9DD0\u9DDC\u9DD1\u9DDF\u9DE9\u9DD9\u9DD8\u9DD6\u9DF5\u9DD5\u9DDD\u9EB6\u9EF0\u9F35\u9F33\u9F32\u9F42\u9F6B\u9F95\u9FA2\u513D\u5299\u58E8\u58E7\u5972\u5B4D\u5DD8\u882F\u5F4F\u6201\u6203\u6204\u6529\u6525\u6596\u66EB\u6B11\u6B12\u6B0F\u6BCA\u705B\u705A\u7222\u7382\u7381\u7383\u7670\u77D4\u7C67\u7C66\u7E95\u826C\u863A\u8640\u8639\u863C\u8631\u863B\u863E\u8830\u8832\u882E\u8833\u8976\u8974\u8973\u89FE\"],\n[\"f840\",\"\u8B8C\u8B8E\u8B8B\u8B88\u8C45\u8D19\u8E98\u8F64\u8F63\u91BC\u9462\u9455\u945D\u9457\u945E\u97C4\u97C5\u9800\u9A56\u9A59\u9B1E\u9B1F\u9B20\u9C52\u9C58\u9C50\u9C4A\u9C4D\u9C4B\u9C55\u9C59\u9C4C\u9C4E\u9DFB\u9DF7\u9DEF\u9DE3\u9DEB\u9DF8\u9DE4\u9DF6\u9DE1\u9DEE\u9DE6\u9DF2\u9DF0\u9DE2\u9DEC\u9DF4\u9DF3\u9DE8\u9DED\u9EC2\u9ED0\u9EF2\u9EF3\u9F06\u9F1C\u9F38\u9F37\u9F36\u9F43\u9F4F\"],\n[\"f8a1\",\"\u9F71\u9F70\u9F6E\u9F6F\u56D3\u56CD\u5B4E\u5C6D\u652D\u66ED\u66EE\u6B13\u705F\u7061\u705D\u7060\u7223\u74DB\u74E5\u77D5\u7938\u79B7\u79B6\u7C6A\u7E97\u7F89\u826D\u8643\u8838\u8837\u8835\u884B\u8B94\u8B95\u8E9E\u8E9F\u8EA0\u8E9D\u91BE\u91BD\u91C2\u946B\u9468\u9469\u96E5\u9746\u9743\u9747\u97C7\u97E5\u9A5E\u9AD5\u9B59\u9C63\u9C67\u9C66\u9C62\u9C5E\u9C60\u9E02\u9DFE\u9E07\u9E03\u9E06\u9E05\u9E00\u9E01\u9E09\u9DFF\u9DFD\u9E04\u9EA0\u9F1E\u9F46\u9F74\u9F75\u9F76\u56D4\u652E\u65B8\u6B18\u6B19\u6B17\u6B1A\u7062\u7226\u72AA\u77D8\u77D9\u7939\u7C69\u7C6B\u7CF6\u7E9A\"],\n[\"f940\",\"\u7E98\u7E9B\u7E99\u81E0\u81E1\u8646\u8647\u8648\u8979\u897A\u897C\u897B\u89FF\u8B98\u8B99\u8EA5\u8EA4\u8EA3\u946E\u946D\u946F\u9471\u9473\u9749\u9872\u995F\u9C68\u9C6E\u9C6D\u9E0B\u9E0D\u9E10\u9E0F\u9E12\u9E11\u9EA1\u9EF5\u9F09\u9F47\u9F78\u9F7B\u9F7A\u9F79\u571E\u7066\u7C6F\u883C\u8DB2\u8EA6\u91C3\u9474\u9478\u9476\u9475\u9A60\u9C74\u9C73\u9C71\u9C75\u9E14\u9E13\u9EF6\u9F0A\"],\n[\"f9a1\",\"\u9FA4\u7068\u7065\u7CF7\u866A\u883E\u883D\u883F\u8B9E\u8C9C\u8EA9\u8EC9\u974B\u9873\u9874\u98CC\u9961\u99AB\u9A64\u9A66\u9A67\u9B24\u9E15\u9E17\u9F48\u6207\u6B1E\u7227\u864C\u8EA8\u9482\u9480\u9481\u9A69\u9A68\u9B2E\u9E19\u7229\u864B\u8B9F\u9483\u9C79\u9EB7\u7675\u9A6B\u9C7A\u9E1D\u7069\u706A\u9EA4\u9F7E\u9F49\u9F98\u7881\u92B9\u88CF\u58BB\u6052\u7CA7\u5AFA\u2554\u2566\u2557\u2560\u256C\u2563\u255A\u2569\u255D\u2552\u2564\u2555\u255E\u256A\u2561\u2558\u2567\u255B\u2553\u2565\u2556\u255F\u256B\u2562\u2559\u2568\u255C\u2551\u2550\u256D\u256E\u2570\u256F\u2593\"]\n]\n", "[\n[\"8740\",\"\u43F0\u4C32\u4603\u45A6\u4578\uD85C\uDE67\u4D77\u45B3\uD85F\uDCB1\u4CE2\uD85F\uDCC5\u3B95\u4736\u4744\u4C47\u4C40\uD850\uDEBF\uD84D\uDE17\uD85C\uDF52\uD85B\uDE8B\uD85C\uDCD2\u4C57\uD868\uDF51\u474F\u45DA\u4C85\uD85F\uDC6C\u4D07\u4AA4\u46A1\uD85A\uDF23\u7225\uD856\uDE54\uD846\uDE63\uD84F\uDE06\uD84F\uDF61\u664D\u56FB\"],\n[\"8767\",\"\u7D95\u591D\uD862\uDFB9\u3DF4\u9734\uD85E\uDFEF\u5BDB\uD847\uDD5E\u5AA4\u3625\uD867\uDEB0\u5AD1\u5BB7\u5CFC\u676E\u8593\uD866\uDD45\u7461\u749D\u3875\uD847\uDD53\uD84D\uDE9E\uD858\uDC21\u3EEC\"],\n[\"87a1\",\"\uD856\uDCDE\u3AF5\u7AFC\u9F97\uD850\uDD61\uD862\uDD0D\uD84C\uDDEA\uD842\uDE8A\uD84C\uDE5E\u430A\u8484\u9F96\u942F\u4930\u8613\u5896\u974A\u9218\u79D0\u7A32\u6660\u6A29\u889D\u744C\u7BC5\u6782\u7A2C\u524F\u9046\u34E6\u73C4\uD857\uDDB9\u74C6\u9FC7\u57B3\u492F\u544C\u4131\uD84D\uDE8E\u5818\u7A72\uD85E\uDF65\u8B8F\u46AE\uD85B\uDE88\u4181\uD857\uDD99\u7BAE\uD849\uDCBC\u9FC8\uD849\uDCC1\uD849\uDCC9\uD849\uDCCC\u9FC9\u8504\uD84D\uDDBB\u40B4\u9FCA\u44E1\uD86B\uDDFF\u62C1\u706E\u9FCB\"],\n[\"8840\",\"\u31C0\",4,\"\uD840\uDD0C\u31C5\uD840\uDCD1\uD840\uDCCD\u31C6\u31C7\uD840\uDCCB\uD847\uDFE8\u31C8\uD840\uDCCA\u31C9\u31CA\u31CB\u31CC\uD840\uDD0E\u31CD\u31CE\u0100\u00C1\u01CD\u00C0\u0112\u00C9\u011A\u00C8\u014C\u00D3\u01D1\u00D2\u0FFF\u00CA\u0304\u1EBE\u0FFF\u00CA\u030C\u1EC0\u00CA\u0101\u00E1\u01CE\u00E0\u0251\u0113\u00E9\u011B\u00E8\u012B\u00ED\u01D0\u00EC\u014D\u00F3\u01D2\u00F2\u016B\u00FA\u01D4\u00F9\u01D6\u01D8\u01DA\"],\n[\"88a1\",\"\u01DC\u00FC\u0FFF\u00EA\u0304\u1EBF\u0FFF\u00EA\u030C\u1EC1\u00EA\u0261\u23DA\u23DB\"],\n[\"8940\",\"\uD868\uDFA9\uD844\uDD45\"],\n[\"8943\",\"\u650A\"],\n[\"8946\",\"\u4E3D\u6EDD\u9D4E\u91DF\"],\n[\"894c\",\"\uD85D\uDF35\u6491\u4F1A\u4F28\u4FA8\u5156\u5174\u519C\u51E4\u52A1\u52A8\u533B\u534E\u53D1\u53D8\u56E2\u58F0\u5904\u5907\u5932\u5934\u5B66\u5B9E\u5B9F\u5C9A\u5E86\u603B\u6589\u67FE\u6804\u6865\u6D4E\u70BC\u7535\u7EA4\u7EAC\u7EBA\u7EC7\u7ECF\u7EDF\u7F06\u7F37\u827A\u82CF\u836F\u89C6\u8BBE\u8BE2\u8F66\u8F67\u8F6E\"],\n[\"89a1\",\"\u7411\u7CFC\u7DCD\u6946\u7AC9\u5227\"],\n[\"89ab\",\"\u918C\u78B8\u915E\u80BC\"],\n[\"89b0\",\"\u8D0B\u80F6\uD842\uDDE7\"],\n[\"89b5\",\"\u809F\u9EC7\u4CCD\u9DC9\u9E0C\u4C3E\uD867\uDDF6\uD85C\uDC0E\u9E0A\uD868\uDD33\u35C1\"],\n[\"89c1\",\"\u6E9A\u823E\u7519\"],\n[\"89c5\",\"\u4911\u9A6C\u9A8F\u9F99\u7987\uD861\uDC6C\uD847\uDDCA\uD841\uDDD0\uD84A\uDEE6\u4E24\u4E81\u4E80\u4E87\u4EBF\u4EEB\u4F37\u344C\u4FBD\u3E48\u5003\u5088\u347D\u3493\u34A5\u5186\u5905\u51DB\u51FC\u5205\u4E89\u5279\u5290\u5327\u35C7\u53A9\u3551\u53B0\u3553\u53C2\u5423\u356D\u3572\u3681\u5493\u54A3\u54B4\u54B9\u54D0\u54EF\u5518\u5523\u5528\u3598\u553F\u35A5\u35BF\u55D7\u35C5\"],\n[\"8a40\",\"\uD85F\uDD84\u5525\"],\n[\"8a43\",\"\uD843\uDC42\uD843\uDD15\uD854\uDD2B\u5590\uD84B\uDCC6\u39EC\uD840\uDF41\u8E46\uD853\uDDB8\uD865\uDCE5\u4053\uD860\uDCBE\u777A\uD84B\uDC38\u3A34\u47D5\uD860\uDD5D\uD85A\uDDF2\uD853\uDDEA\u64DD\uD843\uDD7C\uD843\uDFB4\uD843\uDCD5\uD844\uDCF4\u648D\u8E7E\uD843\uDE96\uD843\uDC0B\uD843\uDF64\uD84B\uDCA9\uD860\uDE56\uD851\uDCD3\"],\n[\"8a64\",\"\uD843\uDD46\uD866\uDE4D\uD860\uDCE9\u47F4\uD853\uDEA7\uD84B\uDCC2\u9AB2\u3A67\uD865\uDDF4\u3FED\u3506\uD854\uDEC7\uD865\uDFD4\uD85E\uDCC8\uD84B\uDD44\u9D6E\u9815\"],\n[\"8a76\",\"\u43D9\uD858\uDCA5\u64B4\u54E3\uD84B\uDD4C\uD84A\uDFCA\uD844\uDC77\u39FB\uD844\uDC6F\"],\n[\"8aa1\",\"\uD859\uDEDA\uD859\uDF16\uD85E\uDDA0\u64EA\uD854\uDC52\uD843\uDC43\u8E68\uD848\uDDA1\uD862\uDF4C\uD841\uDF31\"],\n[\"8aac\",\"\u480B\uD840\uDDA9\u3FFA\u5873\uD84B\uDD8D\"],\n[\"8ab2\",\"\uD851\uDDC8\uD841\uDCFC\uD858\uDC97\uD843\uDF4C\uD843\uDD96\u5579\u40BB\u43BA\"],\n[\"8abb\",\"\u4AB4\uD84A\uDE66\uD844\uDC9D\u81AA\u98F5\uD843\uDD9C\u6379\u39FE\uD849\uDF75\u8DC0\u56A1\u647C\u3E43\"],\n[\"8ac9\",\"\uD869\uDE01\uD843\uDE09\uD84A\uDECF\uD84B\uDCC9\"],\n[\"8ace\",\"\uD844\uDCC8\uD84E\uDDC2\u3992\u3A06\uD860\uDE9B\u3578\uD857\uDE49\uD848\uDCC7\u5652\uD843\uDF31\uD84B\uDCB2\uD865\uDF20\u34BC\u6C3D\uD853\uDE3B\"],\n[\"8adf\",\"\uD85D\uDD74\uD84B\uDE8B\uD848\uDE08\uD869\uDE5B\uD863\uDCCD\uD843\uDE7A\uD843\uDC34\uD85A\uDC1C\u7F93\uD844\uDCCF\uD84A\uDC03\uD84A\uDD39\u35FB\uD854\uDDE3\uD843\uDE8C\uD843\uDF8D\uD843\uDEAA\u3F93\uD843\uDF30\uD843\uDD47\uD844\uDD4F\uD843\uDE4C\"],\n[\"8af6\",\"\uD843\uDEAB\uD842\uDFA9\uD843\uDD48\uD844\uDCC0\uD844\uDD3D\u3FF9\uD849\uDE96\u6432\uD843\uDFAD\"],\n[\"8b40\",\"\uD84C\uDFF4\uD85D\uDE39\uD84A\uDFCE\uD843\uDD7E\uD843\uDD7F\uD84B\uDC51\uD84B\uDC55\u3A18\uD843\uDE98\uD844\uDCC7\uD843\uDF2E\uD869\uDE32\uD85A\uDF50\uD863\uDCD2\uD863\uDD99\uD863\uDCCA\u95AA\u54CC\u82C4\u55B9\"],\n[\"8b55\",\"\uD867\uDEC3\u9C26\u9AB6\uD85D\uDF5E\uD84B\uDDEE\u7140\u816D\u80EC\u5C1C\uD859\uDD72\u8134\u3797\u535F\uD860\uDCBD\u91B6\uD843\uDEFA\uD843\uDE0F\uD843\uDE77\uD843\uDEFB\u35DD\uD853\uDDEB\u3609\uD843\uDCD6\u56AF\uD849\uDFB5\uD844\uDCC9\uD843\uDE10\uD843\uDE78\uD844\uDC78\uD844\uDD48\uD860\uDE07\uD845\uDC55\uD843\uDE79\uD853\uDE50\uD84B\uDDA4\u5A54\uD844\uDC1D\uD844\uDC1E\uD844\uDCF5\uD844\uDCF6\u579C\uD843\uDE11\"],\n[\"8ba1\",\"\uD85D\uDE94\uD860\uDECD\uD843\uDFB5\uD843\uDE7B\uD854\uDD7E\u3703\uD843\uDFB6\uD844\uDD80\uD854\uDED8\uD868\uDEBD\uD852\uDDDA\uD846\uDC3A\uD850\uDD77\uD860\uDE7C\u5899\u5268\u361A\uD855\uDF3D\u7BB2\u5B68\u4800\u4B2C\u9F27\u49E7\u9C1F\u9B8D\uD856\uDF74\uD84C\uDD3D\u55FB\u35F2\u5689\u4E28\u5902\uD846\uDFC1\uD87E\uDC78\u9751\uD840\uDC86\u4E5B\u4EBB\u353E\u5C23\u5F51\u5FC4\u38FA\u624C\u6535\u6B7A\u6C35\u6C3A\u706C\u722B\u4E2C\u72AD\uD852\uDCE9\u7F52\u793B\u7CF9\u7F53\uD858\uDE6A\u34C1\"],\n[\"8bde\",\"\uD858\uDF4B\u8002\u8080\uD859\uDE12\uD85A\uDD51\u535D\u8864\u89C1\uD85E\uDCB2\u8BA0\u8D1D\u9485\u9578\u957F\u95E8\uD863\uDE0F\u97E6\u9875\u98CE\u98DE\u9963\uD866\uDC10\u9C7C\u9E1F\u9EC4\u6B6F\uF907\u4E37\uD840\uDC87\u961D\u6237\u94A2\"],\n[\"8c40\",\"\u503B\u6DFE\uD867\uDC73\u9FA6\u3DC9\u888F\uD850\uDD4E\u7077\u5CF5\u4B20\uD854\uDDCD\u3559\uD857\uDD30\u6122\uD862\uDE32\u8FA7\u91F6\u7191\u6719\u73BA\uD84C\uDE81\uD868\uDD07\u3C8B\uD846\uDD80\u4B10\u78E4\u7402\u51AE\uD861\uDF0F\u4009\u6A63\uD868\uDEBA\u4223\u860F\uD842\uDE6F\u7A2A\uD866\uDD47\uD862\uDEEA\u9755\u704D\u5324\uD848\uDC7E\u93F4\u76D9\uD862\uDDE3\u9FA7\u77DD\u4EA3\u4FF0\u50BC\u4E2F\u4F17\u9FA8\u5434\u7D8B\u5892\u58D0\uD847\uDDB6\u5E92\u5E99\u5FC2\uD849\uDF12\u658B\"],\n[\"8ca1\",\"\uD84C\uDFF9\u6919\u6A43\uD84F\uDC63\u6CFF\"],\n[\"8ca7\",\"\u7200\uD851\uDD05\u738C\u3EDB\uD852\uDE13\u5B15\u74B9\u8B83\uD857\uDCA4\uD855\uDE95\u7A93\u7BEC\u7CC3\u7E6C\u82F8\u8597\u9FA9\u8890\u9FAA\u8EB9\u9FAB\u8FCF\u855F\u99E0\u9221\u9FAC\uD863\uDDB9\uD845\uDC3F\u4071\u42A2\u5A1A\"],\n[\"8cc9\",\"\u9868\u676B\u4276\u573D\"],\n[\"8cce\",\"\u85D6\uD852\uDD7B\u82BF\uD85C\uDD0D\u4C81\uD85B\uDD74\u5D7B\uD85A\uDF15\uD85B\uDFBE\u9FAD\u9FAE\u5B96\u9FAF\u66E7\u7E5B\u6E57\u79CA\u3D88\u44C3\uD84C\uDE56\uD849\uDF96\u439A\u4536\"],\n[\"8ce6\",\"\u5CD5\uD84E\uDF1A\u8AF9\u5C78\u3D12\uD84D\uDD51\u5D78\u9FB2\u7157\u4558\uD850\uDCEC\uD847\uDE23\u4C77\u3978\u344A\uD840\uDDA4\uD85B\uDC41\u8ACC\u4FB4\uD840\uDE39\u59BF\u816C\u9856\uD866\uDCFA\u5F3B\"],\n[\"8d40\",\"\uD842\uDF9F\"],\n[\"8d42\",\"\uD848\uDDC1\uD862\uDD6D\u4102\u46BB\uD864\uDC79\u3F07\u9FB3\uD868\uDDB5\u40F8\u37D6\u46F7\uD85B\uDC46\u417C\uD861\uDEB2\uD85C\uDFFF\u456D\u38D4\uD855\uDC9A\u4561\u451B\u4D89\u4C7B\u4D76\u45EA\u3FC8\uD852\uDF0F\u3661\u44DE\u44BD\u41ED\u5D3E\u5D48\u5D56\u3DFC\u380F\u5DA4\u5DB9\u3820\u3838\u5E42\u5EBD\u5F25\u5F83\u3908\u3914\u393F\u394D\u60D7\u613D\u5CE5\u3989\u61B7\u61B9\u61CF\u39B8\u622C\u6290\u62E5\u6318\u39F8\u56B1\"],\n[\"8da1\",\"\u3A03\u63E2\u63FB\u6407\u645A\u3A4B\u64C0\u5D15\u5621\u9F9F\u3A97\u6586\u3ABD\u65FF\u6653\u3AF2\u6692\u3B22\u6716\u3B42\u67A4\u6800\u3B58\u684A\u6884\u3B72\u3B71\u3B7B\u6909\u6943\u725C\u6964\u699F\u6985\u3BBC\u69D6\u3BDD\u6A65\u6A74\u6A71\u6A82\u3BEC\u6A99\u3BF2\u6AAB\u6AB5\u6AD4\u6AF6\u6B81\u6BC1\u6BEA\u6C75\u6CAA\u3CCB\u6D02\u6D06\u6D26\u6D81\u3CEF\u6DA4\u6DB1\u6E15\u6E18\u6E29\u6E86\uD862\uDDC0\u6EBB\u6EE2\u6EDA\u9F7F\u6EE8\u6EE9\u6F24\u6F34\u3D46\uD84F\uDF41\u6F81\u6FBE\u3D6A\u3D75\u71B7\u5C99\u3D8A\u702C\u3D91\u7050\u7054\u706F\u707F\u7089\uD840\uDF25\u43C1\u35F1\uD843\uDED8\"],\n[\"8e40\",\"\uD84F\uDED7\u57BE\uD85B\uDED3\u713E\uD855\uDFE0\u364E\u69A2\uD862\uDFE9\u5B74\u7A49\uD856\uDCE1\uD865\uDCD9\u7A65\u7A7D\uD856\uDDAC\u7ABB\u7AB0\u7AC2\u7AC3\u71D1\uD859\uDC8D\u41CA\u7ADA\u7ADD\u7AEA\u41EF\u54B2\uD857\uDC01\u7B0B\u7B55\u7B29\uD854\uDF0E\uD857\uDCFE\u7BA2\u7B6F\u839C\uD856\uDFB4\uD85B\uDC7F\u7BD0\u8421\u7B92\u7BB8\uD857\uDD20\u3DAD\uD857\uDC65\u8492\u7BFA\u7C06\u7C35\uD857\uDCC1\u7C44\u7C83\uD852\uDC82\u7CA6\u667D\uD851\uDD78\u7CC9\u7CC7\u7CE6\u7C74\u7CF3\u7CF5\u7CCE\"],\n[\"8ea1\",\"\u7E67\u451D\uD85B\uDE44\u7D5D\uD85B\uDED6\u748D\u7D89\u7DAB\u7135\u7DB3\u7DD2\uD850\uDC57\uD858\uDC29\u7DE4\u3D13\u7DF5\uD845\uDFF9\u7DE5\uD860\uDF6D\u7E1D\uD858\uDD21\uD858\uDD5A\u7E6E\u7E92\u432B\u946C\u7E27\u7F40\u7F41\u7F47\u7936\uD858\uDED0\u99E1\u7F97\uD858\uDF51\u7FA3\uD845\uDE61\uD840\uDC68\u455C\uD84D\uDF66\u4503\uD860\uDF3A\u7FFA\uD859\uDC89\u8005\u8008\u801D\u8028\u802F\uD868\uDC87\uD85B\uDCC3\u803B\u803C\u8061\uD849\uDF14\u4989\uD859\uDE26\uD84F\uDDE3\uD859\uDEE8\u6725\u80A7\uD862\uDE48\u8107\u811A\u58B0\uD849\uDEF6\u6C7F\uD859\uDC98\uD853\uDFB8\u64E7\uD845\uDC8A\u8218\uD846\uDC5E\u6A53\uD852\uDE65\uD852\uDE95\u447A\u8229\uD842\uDF0D\uD85A\uDE52\uD84F\uDD7E\u4FF9\uD845\uDCFD\u84E2\u8362\uD85A\uDF0A\uD852\uDDA7\uD84D\uDD30\uD845\uDF73\uD84F\uDDF8\u82AA\u691B\uD87E\uDD94\u41DB\"],\n[\"8f40\",\"\u854B\u82D0\u831A\uD843\uDE16\uD845\uDFB4\u36C1\uD84C\uDD7D\uD84D\uDD5A\u827B\u82E2\u8318\uD84F\uDE8B\uD85B\uDDA3\uD85A\uDF05\uD85A\uDF97\uD84D\uDDCE\u3DBF\u831D\u55EC\u8385\u450B\uD85B\uDDA5\u83AC\u83C1\u83D3\u347E\uD85B\uDED4\u6A57\u855A\u3496\uD85B\uDE42\uD84B\uDEEF\u8458\uD856\uDFE4\u8471\u3DD3\u44E4\u6AA7\u844A\uD84F\uDCB5\u7958\u84A8\uD85A\uDF96\uD85B\uDE77\uD85B\uDE43\u84DE\u840F\u8391\u44A0\u8493\u84E4\uD857\uDC91\u4240\uD857\uDCC0\u4543\u8534\u5AF2\uD85B\uDE99\u4527\u8573\u4516\u67BF\u8616\"],\n[\"8fa1\",\"\uD861\uDE25\uD861\uDE3B\u85C1\uD85C\uDC88\u8602\uD845\uDD82\uD85C\uDCCD\uD87E\uDDB2\u456A\u8628\u3648\uD846\uDCA2\u53F7\uD85C\uDF9A\u867E\u8771\uD868\uDCF8\u87EE\uD84B\uDC27\u87B1\u87DA\u880F\u5661\u866C\u6856\u460F\u8845\u8846\uD85D\uDDE0\uD84F\uDDB9\uD85D\uDDE4\u885E\u889C\u465B\u88B4\u88B5\u63C1\u88C5\u7777\uD85D\uDF0F\u8987\u898A\u89A6\u89A9\u89A7\u89BC\uD862\uDE25\u89E7\uD85E\uDD24\uD85E\uDEBD\u8A9C\u7793\u91FE\u8A90\uD85E\uDE59\u7AE9\uD85E\uDF3A\uD84F\uDF8F\u4713\uD85E\uDF38\u717C\u8B0C\u8B1F\uD855\uDC30\uD855\uDD65\u8B3F\u8B4C\u8B4D\u8AA9\uD852\uDE7A\u8B90\u8B9B\u8AAF\uD845\uDEDF\u4615\u884F\u8C9B\uD85F\uDD54\uD85F\uDD8F\uD87E\uDDD4\u3725\uD85F\uDD53\u8CD6\uD85F\uDD98\uD85F\uDDBD\u8D12\u8D03\uD846\uDD10\u8CDB\u705C\u8D11\uD853\uDCC9\u3ED0\u8D77\"],\n[\"9040\",\"\u8DA9\uD860\uDC02\uD844\uDC14\uD852\uDD8A\u3B7C\uD860\uDDBC\uD85C\uDD0C\u7AE7\u8EAD\u8EB6\u8EC3\u92D4\u8F19\u8F2D\uD860\uDF65\uD861\uDC12\u8FA5\u9303\uD868\uDE9F\uD842\uDE50\u8FB3\u492A\uD862\uDDDE\uD861\uDD3D\uD84F\uDDBB\u5EF8\uD84C\uDE62\u8FF9\uD868\uDC14\uD861\uDEBC\uD861\uDD01\uD848\uDF25\u3980\uD85B\uDED7\u9037\uD861\uDD3C\uD85E\uDEBE\u9061\uD861\uDD6C\uD861\uDE0B\u90A8\uD861\uDF13\u90C4\uD861\uDEE6\u90AE\u90FD\u9167\u3AF0\u91A9\u91C4\u7CAC\uD862\uDD33\uD847\uDE89\u920E\u6C9F\u9241\u9262\uD855\uDDB9\u92B9\uD862\uDEC6\uD84F\uDC9B\uD862\uDF0C\uD855\uDDDB\"],\n[\"90a1\",\"\uD843\uDD31\u932C\u936B\uD862\uDEE1\uD862\uDFEB\u708F\u5AC3\uD862\uDEE2\uD862\uDEE5\u4965\u9244\uD862\uDFEC\uD863\uDC39\uD862\uDFFF\u9373\u945B\u8EBC\u9585\u95A6\u9426\u95A0\u6FF6\u42B9\uD849\uDE7A\uD861\uDED8\uD844\uDE7C\uD84F\uDE2E\u49DF\u6C1C\u967B\u9696\u416C\u96A3\uD85B\uDED5\u61DA\u96B6\u78F5\uD862\uDEE0\u96BD\u53CC\u49A1\uD85B\uDCB8\uD840\uDE74\uD859\uDC10\uD864\uDCAF\uD864\uDCE5\uD852\uDED1\uD846\uDD15\uD84C\uDF0A\u9731\u8642\u9736\u4A0F\u453D\u4585\uD852\uDEE9\u7075\u5B41\u971B\u975C\uD864\uDDD5\u9757\u5B4A\uD864\uDDEB\u975F\u9425\u50D0\uD84C\uDCB7\uD84C\uDCBC\u9789\u979F\u97B1\u97BE\u97C0\u97D2\u97E0\uD855\uDC6C\u97EE\u741C\uD865\uDC33\u97FF\u97F5\uD865\uDC1D\uD85E\uDD7A\u4AD1\u9834\u9833\u984B\u9866\u3B0E\uD85C\uDD75\u3D51\uD841\uDE30\uD850\uDD5C\"],\n[\"9140\",\"\uD855\uDF06\u98CA\u98B7\u98C8\u98C7\u4AFF\uD85B\uDD27\uD845\uDED3\u55B0\u98E1\u98E6\u98EC\u9378\u9939\uD852\uDE29\u4B72\uD866\uDC57\uD866\uDD05\u99F5\u9A0C\u9A3B\u9A10\u9A58\uD855\uDF25\u36C4\uD864\uDCB1\uD866\uDFD5\u9AE0\u9AE2\uD866\uDF05\u9AF4\u4C0E\u9B14\u9B2D\uD861\uDE00\u5034\u9B34\uD85A\uDDA8\u38C3\uD84C\uDC7D\u9B50\u9B40\uD867\uDD3E\u5A45\uD846\uDC63\u9B8E\uD850\uDE4B\u9C02\u9BFF\u9C0C\uD867\uDE68\u9DD4\uD867\uDFB7\uD868\uDD92\uD868\uDDAB\uD868\uDCE1\uD868\uDD23\uD868\uDDDF\u9D7E\u9D83\uD868\uDD34\u9E0E\u6888\"],\n[\"91a1\",\"\u9DC4\uD848\uDD5B\uD868\uDD93\uD868\uDE20\uD846\uDD3B\uD868\uDE33\u9D39\uD868\uDCB9\uD868\uDEB4\u9E90\u9E95\u9E9E\u9EA2\u4D34\u9EAA\u9EAF\uD850\uDF64\u9EC1\u3B60\u39E5\u3D1D\u4F32\u37BE\uD863\uDC2B\u9F02\u9F08\u4B96\u9424\uD85B\uDDA2\u9F17\u9F16\u9F39\u569F\u568A\u9F45\u99B8\uD864\uDC8B\u97F2\u847F\u9F62\u9F69\u7ADC\u9F8E\u7216\u4BBE\uD852\uDD75\uD852\uDDBB\u7177\uD852\uDDF8\uD850\uDF48\uD852\uDE51\u739E\uD862\uDFDA\uD846\uDCFA\u799F\uD862\uDD7E\uD863\uDE36\u9369\u93F3\uD862\uDE44\u92EC\u9381\u93CB\uD862\uDD6C\uD851\uDCB9\u7217\u3EEB\u7772\u7A43\u70D0\uD851\uDC73\uD850\uDFF8\u717E\uD845\uDFEF\u70A3\uD846\uDCBE\uD84D\uDD99\u3EC7\uD846\uDC85\uD855\uDC2F\uD845\uDFF8\u3722\uD845\uDEFB\uD846\uDC39\u36E1\uD845\uDF74\uD846\uDCD1\uD857\uDF4B\u3723\uD845\uDEC0\u575B\uD852\uDE25\uD844\uDFFE\uD844\uDEA8\"],\n[\"9240\",\"\uD844\uDFC6\uD845\uDCB6\u8503\uD84D\uDEA6\u8503\u8455\uD852\uDD94\uD85C\uDD65\uD84F\uDE31\uD855\uDD5C\uD84F\uDEFB\uD85C\uDC52\u44F4\uD84D\uDEEE\uD866\uDD9D\uD85B\uDF26\u67F9\u3733\u3C15\u3DE7\u586C\uD846\uDD22\u6810\u4057\uD84D\uDF3F\uD850\uDCE1\uD850\uDC8B\uD850\uDD0F\uD85B\uDC21\u54CB\u569E\uD859\uDEB1\u5692\uD843\uDFDF\uD842\uDFA8\uD843\uDE0D\u93C6\uD862\uDF13\u939C\u4EF8\u512B\u3819\uD851\uDC36\u4EBC\uD841\uDC65\uD840\uDF7F\u4F4B\u4F8A\uD855\uDE51\u5A68\uD840\uDDAB\uD840\uDFCB\u3999\uD840\uDF0A\uD841\uDC14\u3435\u4F29\uD840\uDEC0\uD863\uDEB3\uD840\uDE75\u8ADA\uD840\uDE0C\u4E98\"],\n[\"92a1\",\"\u50CD\u510D\u4FA2\u4F03\uD852\uDE0E\uD84F\uDE8A\u4F42\u502E\u506C\u5081\u4FCC\u4FE5\u5058\u50FC\u5159\u515B\u515D\u515E\u6E76\uD84D\uDD95\uD84F\uDE39\uD84F\uDEBF\u6D72\uD846\uDC84\uD84F\uDE89\u51A8\u51C3\uD841\uDDE0\u44DD\uD841\uDCA3\uD841\uDC92\uD841\uDC91\u8D7A\uD862\uDE9C\uD841\uDF0E\u5259\u52A4\uD842\uDC73\u52E1\u936E\u467A\u718C\uD850\uDF8C\uD843\uDC20\uD852\uDDAC\uD844\uDCE4\u69D1\uD843\uDE1D\u7479\u3EDE\u7499\u7414\u7456\u7398\u4B8E\uD852\uDEBC\uD850\uDC8D\u53D0\u3584\u720F\uD850\uDCC9\u55B4\uD840\uDF45\u54CD\uD842\uDFC6\u571D\u925D\u96F4\u9366\u57DD\u578D\u577F\u363E\u58CB\u5A99\uD862\uDE46\uD845\uDEFA\uD845\uDF6F\uD845\uDF10\u5A2C\u59B8\u928F\u5A7E\u5ACF\u5A12\uD856\uDD46\uD846\uDDF3\uD846\uDC61\uD850\uDE95\u36F5\u6D05\u7443\u5A21\uD857\uDE83\"],\n[\"9340\",\"\u5A81\uD862\uDFD7\uD841\uDC13\u93E0\u748C\uD844\uDF03\u7105\u4972\u9408\uD862\uDDFB\u93BD\u37A0\u5C1E\u5C9E\u5E5E\u5E48\uD846\uDD96\uD846\uDD7C\uD84E\uDEEE\u5ECD\u5B4F\uD846\uDD03\uD846\uDD04\u3701\uD846\uDCA0\u36DD\uD845\uDEFE\u36D3\u812A\uD862\uDE47\uD847\uDDBA\uD84D\uDC72\uD862\uDDA8\u5F0C\u5F0E\uD846\uDD27\uD845\uDFAB\u5A6B\uD845\uDF3B\u5B44\u8614\uD85D\uDDFD\u8860\u607E\uD84A\uDC60\uD849\uDE2B\u5FDB\u3EB8\uD849\uDDAF\uD849\uDDBE\uD864\uDC88\uD85B\uDF73\u61C0\uD840\uDC3E\uD840\uDC46\uD849\uDE1B\u6199\u6198\u6075\uD84B\uDC9B\uD84B\uDD07\uD851\uDED4\uD864\uDD4D\"],\n[\"93a1\",\"\u6471\uD851\uDE65\uD84A\uDF6A\u3A29\uD84A\uDF22\uD84D\uDC50\uD866\uDCEA\uD84B\uDE78\u6337\uD869\uDC5B\u64B6\u6331\u63D1\uD852\uDDE3\uD84B\uDD67\u62A4\uD84B\uDCA1\u643B\u656B\u6972\u3BF4\uD84C\uDC8E\uD84C\uDEAD\uD852\uDD89\uD84C\uDEAB\u550D\uD84C\uDEE0\uD846\uDCD9\uD865\uDC3F\u66CE\uD84C\uDE89\uD84C\uDDB3\u3AE0\u4190\uD855\uDD84\uD862\uDF22\uD855\uDD8F\uD845\uDEFC\uD855\uDD5B\uD855\uDC25\u78EE\uD84C\uDD03\uD846\uDC2A\uD84C\uDE34\u3464\uD84C\uDE0F\uD84C\uDD82\uD850\uDEC9\u668E\uD85B\uDD24\u666B\u4B93\u6630\uD85E\uDC70\uD847\uDDEB\u6663\uD84C\uDED2\uD84C\uDEE1\u661E\uD856\uDC72\u38D1\uD84E\uDC3A\uD84D\uDFBC\u3B99\uD84D\uDFA2\uD84C\uDFFE\u74D0\u3B96\u678F\uD851\uDE2A\u68B6\u681E\u3BC4\u6ABE\u3863\uD84D\uDFD5\uD851\uDC87\u6A33\u6A52\u6AC9\u6B05\uD846\uDD12\u6511\u6898\u6A4C\u3BD7\u6A7A\u6B57\uD84F\uDFC0\uD84F\uDC9A\u93A0\u92F2\uD862\uDFEA\uD862\uDECB\"],\n[\"9440\",\"\u9289\uD860\uDC1E\uD862\uDDDC\u9467\u6DA5\u6F0B\uD852\uDDEC\u6D67\uD84F\uDF7F\u3D8F\u6E04\uD850\uDC3C\u5A3D\u6E0A\u5847\u6D24\u7842\u713B\uD850\uDF1A\uD850\uDE76\u70F1\u7250\u7287\u7294\uD851\uDF8F\uD851\uDF25\u5179\uD852\uDEA4\uD841\uDDEB\u747A\uD84F\uDEF8\uD84D\uDE5F\uD852\uDE4A\uD852\uDD17\uD857\uDFE1\u3F06\u3EB1\uD852\uDEDF\uD863\uDC23\uD84F\uDF35\u60A7\u3EF3\u74CC\u743C\u9387\u7437\u449F\uD85B\uDDEA\u4551\u7583\u3F63\uD853\uDCD9\uD853\uDD06\u3F58\u7555\u7673\uD869\uDDC6\u3B19\u7468\uD862\uDECC\uD852\uDDAB\uD852\uDD8E\u3AFB\"],\n[\"94a1\",\"\u3DCD\uD852\uDE4E\u3EFF\uD852\uDDC5\uD852\uDCF3\u91FA\u5732\u9342\uD862\uDEE3\uD846\uDC64\u50DF\uD854\uDE21\uD854\uDDE7\u7778\uD84C\uDE32\u770E\u770F\u777B\uD851\uDE97\uD84D\uDF81\u3A5E\uD852\uDCF0\u7438\u749B\u3EBF\uD852\uDEBA\uD852\uDEC7\u40C8\uD852\uDE96\uD858\uDDAE\u9307\uD855\uDD81\u781E\u788D\u7888\u78D2\u73D0\u7959\uD85D\uDF41\uD855\uDEE3\u410E\u799B\u8496\u79A5\u6A2D\uD84F\uDEFA\u7A3A\u79F4\u416E\uD845\uDEE6\u4132\u9235\u79F1\uD843\uDD4C\uD852\uDD8C\uD840\uDE99\uD84F\uDDBA\uD845\uDF6E\u3597\u556B\u3570\u36AA\uD840\uDDD4\uD843\uDC0D\u7AE2\u5A59\uD849\uDEF5\uD856\uDEAF\uD856\uDE9C\u5A0D\uD840\uDE5B\u78F0\u5A2A\uD856\uDFC6\u7AFE\u41F9\u7C5D\u7C6D\u4211\uD856\uDFB3\uD857\uDEBC\uD857\uDEA6\u7CCD\uD852\uDDF9\uD845\uDFB0\u7C8E\u7C7C\u7CAE\u6AB2\u7DDC\u7E07\u7DD3\u7F4E\uD858\uDE61\"],\n[\"9540\",\"\uD858\uDD5C\uD85E\uDF48\u7D97\uD857\uDE82\u426A\uD85A\uDF75\uD842\uDD16\u67D6\uD840\uDC4E\uD84D\uDDCF\u57C4\uD859\uDC12\uD858\uDFF8\uD852\uDD62\u7FDD\u7B27\uD842\uDC2C\uD856\uDEE9\uD857\uDD43\u7B0C\uD857\uDE0E\u99E6\u8645\u9A63\u6A1C\uD84D\uDC3F\u39E2\uD852\uDDF7\uD859\uDDAD\u9A1F\uD859\uDDA0\u8480\uD85C\uDD27\uD85B\uDCD1\u44EA\u8137\u4402\u80C6\u8109\u8142\uD859\uDFB4\u98C3\uD85A\uDE42\u8262\u8265\uD85A\uDE51\u8453\uD85B\uDDA7\u8610\uD85C\uDE1B\u5A86\u417F\uD846\uDC40\u5B2B\uD846\uDCA1\u5AE4\uD846\uDCD8\u86A0\uD87E\uDDBC\uD84F\uDD8F\u882D\uD85D\uDC22\u5A02\"],\n[\"95a1\",\"\u886E\u4F45\u8887\u88BF\u88E6\u8965\u894D\uD855\uDE83\u8954\uD85D\uDF85\uD85D\uDF84\uD862\uDFF5\uD862\uDFD9\uD862\uDF9C\uD862\uDDF9\u3EAD\u84A3\u46F5\u46CF\u37F2\u8A3D\u8A1C\uD865\uDC48\u5F4D\u922B\uD850\uDE84\u65D4\u7129\u70C4\uD846\uDC45\u9D6D\u8C9F\u8CE9\uD85F\uDDDC\u599A\u77C3\u59F0\u436E\u36D4\u8E2A\u8EA7\uD853\uDC09\u8F30\u8F4A\u42F4\u6C58\u6FBB\uD848\uDF21\u489B\u6F79\u6E8B\uD845\uDFDA\u9BE9\u36B5\uD852\uDD2F\u90BB\u9097\u5571\u4906\u91BB\u9404\uD862\uDE4B\u4062\uD862\uDEFC\u9427\uD863\uDC1D\uD863\uDC3B\u84E5\u8A2B\u9599\u95A7\u9597\u9596\uD863\uDD34\u7445\u3EC2\uD852\uDCFF\uD852\uDE42\uD850\uDFEA\u3EE7\uD84C\uDE25\u968F\uD863\uDEE7\uD863\uDE66\uD863\uDE65\u3ECC\uD852\uDDED\uD852\uDE78\uD84F\uDFEE\u7412\u746B\u3EFC\u9741\uD864\uDCB0\"],\n[\"9640\",\"\u6847\u4A1D\uD864\uDC93\uD855\uDFDF\u975D\u9368\uD862\uDD89\uD863\uDC26\uD862\uDF2F\uD858\uDFBE\u92BA\u5B11\u8B69\u493C\u73F9\uD850\uDE1B\u979B\u9771\u9938\uD843\uDF26\u5DC1\uD862\uDFC5\uD852\uDEB2\u981F\uD865\uDCDA\u92F6\uD865\uDDD7\u91E5\u44C0\uD862\uDF50\uD852\uDE67\uD862\uDF64\u98DC\uD862\uDE45\u3F00\u922A\u4925\u8414\u993B\u994D\uD85E\uDF06\u3DFD\u999B\u4B6F\u99AA\u9A5C\uD862\uDF65\uD856\uDCC8\u6A8F\u9A21\u5AFE\u9A2F\uD866\uDCF1\u4B90\uD866\uDD48\u99BC\u4BBD\u4B97\u937D\u5872\uD844\uDF02\u5822\uD852\uDDB8\"],\n[\"96a1\",\"\uD845\uDCE8\u7844\uD849\uDF1F\uD84F\uDDB8\u68C5\u3D7D\u9458\u3927\u6150\uD849\uDF81\uD84A\uDD6B\u6107\u9C4F\u9C53\u9C7B\u9C35\u9C10\u9B7F\u9BCF\uD867\uDE2D\u9B9F\uD868\uDDF5\uD868\uDCFE\u9D21\u4CAE\uD850\uDD04\u9E18\u4CB0\u9D0C\uD868\uDDB4\uD868\uDCED\uD868\uDCF3\uD866\uDD2F\u9DA5\u84BD\uD85B\uDE12\uD85B\uDFDF\uD85A\uDF82\u85FC\u4533\uD85B\uDDA4\uD85B\uDE84\uD85B\uDDF0\u8420\u85EE\uD85B\uDE00\uD84D\uDFD7\uD858\uDC64\u79E2\uD84D\uDD9C\uD84D\uDE40\u492D\uD852\uDDDE\u3D62\u93DB\u92BE\u9348\uD840\uDEBF\u78B9\u9277\u944D\u4FE4\u3440\u9064\uD855\uDD5D\u783D\u7854\u78B6\u784B\uD845\uDF57\uD84C\uDDC9\uD852\uDD41\u369A\u4F72\u6FDA\u6FD9\u701E\u701E\u5414\uD850\uDDB5\u57BB\u58F3\u578A\u9D16\u57D7\u7134\u34AF\uD850\uDDAC\u71EB\uD85B\uDC40\uD853\uDF97\u5B28\uD845\uDFB5\uD862\uDE49\"],\n[\"9740\",\"\u610C\u5ACE\u5A0B\u42BC\uD851\uDC88\u372C\u4B7B\uD862\uDDFC\u93BB\u93B8\uD846\uDCD6\uD843\uDF1D\u8472\uD85B\uDCC0\uD845\uDC13\uD850\uDEFA\uD84B\uDC26\uD850\uDFC1\u5994\uD84F\uDDB7\uD859\uDF41\u7DA8\uD858\uDD5B\uD858\uDCA4\uD852\uDDB9\uD852\uDD8B\uD862\uDDFA\u92E5\u73E2\u3EE9\u74B4\uD862\uDF63\uD846\uDC9F\u3EE1\uD852\uDEB3\u6AD8\u73F3\u73FB\u3ED6\uD852\uDE3E\uD852\uDE94\uD845\uDFD9\uD852\uDE66\uD840\uDFA7\uD845\uDC24\uD852\uDDE5\u7448\uD852\uDD16\u70A5\uD852\uDD76\u9284\u73E6\u935F\uD841\uDCFE\u9331\uD862\uDECE\uD862\uDE16\u9386\uD862\uDFE7\uD855\uDDD5\u4935\uD862\uDE82\u716B\"],\n[\"97a1\",\"\uD852\uDD43\uD843\uDCFF\u56A4\uD841\uDE1A\uD842\uDFEB\uD843\uDCB8\u5502\u79C4\uD845\uDFFA\u7DFE\uD845\uDEC2\uD852\uDE50\uD846\uDC52\u452E\u9401\u370A\uD862\uDEC0\uD852\uDDAD\u59B0\uD846\uDCBF\uD846\uDC83\uD85D\uDC84\u5AA1\u36E2\uD84F\uDD5B\u36B0\u925F\u5A79\uD862\uDE81\uD846\uDC62\u9374\u3CCD\uD842\uDEB4\u4A96\u398A\u50F4\u3D69\u3D4C\uD844\uDF9C\u7175\u42FB\uD860\uDE18\u6E0F\uD864\uDCE4\u44EB\u6D57\uD85F\uDE4F\u7067\u6CAF\u3CD6\uD84F\uDFED\uD84F\uDE2D\u6E02\u6F0C\u3D6F\uD840\uDFF5\u7551\u36BC\u34C8\u4680\u3EDA\u4871\u59C4\u926E\u493E\u8F41\uD863\uDC1C\uD85A\uDFC0\u5812\u57C8\u36D6\uD845\uDC52\u70FE\uD850\uDF62\uD852\uDE71\uD84B\uDFE3\uD844\uDEB0\uD848\uDFBD\u68B9\u6967\uD844\uDF98\uD84D\uDCE5\uD85E\uDFF4\uD84D\uDEDF\uD862\uDE83\uD84D\uDFD6\uD84C\uDFFA\uD853\uDC9F\u6A1A\uD84D\uDEAD\uD85B\uDCB7\u843E\u44DF\u44CE\"],\n[\"9840\",\"\uD85B\uDD26\uD85B\uDD51\uD85B\uDC82\uD85B\uDFDE\u6F17\uD85C\uDD09\u833D\uD845\uDF3A\u83ED\uD85B\uDC80\uD85C\uDC53\uD845\uDFDB\u5989\u5A82\uD845\uDFB3\u5A61\u5A71\uD846\uDD05\uD850\uDDFC\u372D\u59EF\uD845\uDF3C\u36C7\u718E\u9390\u669A\uD850\uDEA5\u5A6E\u5A2B\uD850\uDE93\u6A2B\uD84F\uDEF9\uD85D\uDF36\uD851\uDC5B\uD850\uDECA\u711D\uD850\uDE59\uD862\uDDE1\u4FB0\uD85B\uDD28\u5CC2\uD851\uDCCE\uD85F\uDE4D\uD850\uDFBD\u6A0C\uD850\uDE56\uD844\uDF04\u70A6\u7133\uD850\uDFE9\u3DA5\u6CDF\uD87E\uDC25\uD852\uDE4F\u7E65\u59EB\u5D2F\u3DF3\u5F5C\uD852\uDE5D\uD845\uDFDF\u7DA4\u8426\"],\n[\"98a1\",\"\u5485\uD84E\uDEFA\uD84C\uDF00\uD840\uDE14\u577E\uD842\uDCD5\uD841\uDE19\u3FE5\uD847\uDF9E\uD868\uDEB6\u7003\uD864\uDD5B\u5D70\u738F\u7CD3\uD862\uDE59\uD865\uDC20\u4FC8\u7FE7\u72CD\u7310\uD85E\uDEF4\u7338\u7339\uD855\uDEF6\u7341\u7348\u3EA9\uD85E\uDF18\u906C\u71F5\uD852\uDCF2\u73E1\u81F6\u3ECA\u770C\u3ED1\u6CA2\u56FD\u7419\u741E\u741F\u3EE2\u3EF0\u3EF4\u3EFA\u74D3\u3F0E\u3F53\u7542\u756D\u7572\u758D\u3F7C\u75C8\u75DC\u3FC0\u764D\u3FD7\u7674\u3FDC\u767A\uD853\uDF5C\u7188\u5623\u8980\u5869\u401D\u7743\u4039\u6761\u4045\u35DB\u7798\u406A\u406F\u5C5E\u77BE\u77CB\u58F2\u7818\u70B9\u781C\u40A8\u7839\u7847\u7851\u7866\u8448\uD855\uDD35\u7933\u6803\u7932\u4103\"],\n[\"9940\",\"\u4109\u7991\u7999\u8FBB\u7A06\u8FBC\u4167\u7A91\u41B2\u7ABC\u8279\u41C4\u7ACF\u7ADB\u41CF\u4E21\u7B62\u7B6C\u7B7B\u7C12\u7C1B\u4260\u427A\u7C7B\u7C9C\u428C\u7CB8\u4294\u7CED\u8F93\u70C0\uD843\uDCCF\u7DCF\u7DD4\u7DD0\u7DFD\u7FAE\u7FB4\u729F\u4397\u8020\u8025\u7B39\u802E\u8031\u8054\u3DCC\u57B4\u70A0\u80B7\u80E9\u43ED\u810C\u732A\u810E\u8112\u7560\u8114\u4401\u3B39\u8156\u8159\u815A\"],\n[\"99a1\",\"\u4413\u583A\u817C\u8184\u4425\u8193\u442D\u81A5\u57EF\u81C1\u81E4\u8254\u448F\u82A6\u8276\u82CA\u82D8\u82FF\u44B0\u8357\u9669\u698A\u8405\u70F5\u8464\u60E3\u8488\u4504\u84BE\u84E1\u84F8\u8510\u8538\u8552\u453B\u856F\u8570\u85E0\u4577\u8672\u8692\u86B2\u86EF\u9645\u878B\u4606\u4617\u88AE\u88FF\u8924\u8947\u8991\uD85E\uDD67\u8A29\u8A38\u8A94\u8AB4\u8C51\u8CD4\u8CF2\u8D1C\u4798\u585F\u8DC3\u47ED\u4EEE\u8E3A\u55D8\u5754\u8E71\u55F5\u8EB0\u4837\u8ECE\u8EE2\u8EE4\u8EED\u8EF2\u8FB7\u8FC1\u8FCA\u8FCC\u9033\u99C4\u48AD\u98E0\u9213\u491E\u9228\u9258\u926B\u92B1\u92AE\u92BF\"],\n[\"9a40\",\"\u92E3\u92EB\u92F3\u92F4\u92FD\u9343\u9384\u93AD\u4945\u4951\u9EBF\u9417\u5301\u941D\u942D\u943E\u496A\u9454\u9479\u952D\u95A2\u49A7\u95F4\u9633\u49E5\u67A0\u4A24\u9740\u4A35\u97B2\u97C2\u5654\u4AE4\u60E8\u98B9\u4B19\u98F1\u5844\u990E\u9919\u51B4\u991C\u9937\u9942\u995D\u9962\u4B70\u99C5\u4B9D\u9A3C\u9B0F\u7A83\u9B69\u9B81\u9BDD\u9BF1\u9BF4\u4C6D\u9C20\u376F\uD846\uDFC2\u9D49\u9C3A\"],\n[\"9aa1\",\"\u9EFE\u5650\u9D93\u9DBD\u9DC0\u9DFC\u94F6\u8FB6\u9E7B\u9EAC\u9EB1\u9EBD\u9EC6\u94DC\u9EE2\u9EF1\u9EF8\u7AC8\u9F44\uD840\uDC94\uD840\uDEB7\uD840\uDFA0\u691A\u94C3\u59AC\uD841\uDCD7\u5840\u94C1\u37B9\uD841\uDDD5\uD841\uDE15\uD841\uDE76\uD845\uDEBA\u5757\u7173\uD842\uDEC2\uD842\uDECD\uD842\uDFBF\u546A\uD87E\uDC3B\uD842\uDFCB\u549E\uD842\uDFFB\uD843\uDC3B\uD843\uDC53\uD843\uDC65\uD843\uDC7C\u60E7\uD843\uDC8D\u567A\uD843\uDCB5\uD843\uDCDD\uD843\uDCED\uD843\uDD6F\uD843\uDDB2\uD843\uDDC8\u6955\u9C2F\u87A5\uD843\uDE04\uD843\uDE0E\uD843\uDED7\uD843\uDF90\uD843\uDF2D\uD843\uDE73\u5C20\uD843\uDFBC\u5E0B\uD844\uDC5C\uD844\uDC4F\uD844\uDC76\u671E\uD844\uDC7B\uD844\uDC88\uD844\uDC96\u3647\uD844\uDCBF\uD844\uDCD3\uD844\uDD2F\uD844\uDD3B\u5364\u84AD\uD844\uDEE3\uD844\uDF75\uD844\uDF36\u8B81\uD845\uDD77\uD845\uDE19\uD845\uDFC3\uD845\uDFC7\u4E78\u70BB\uD846\uDC2D\uD846\uDD6A\"],\n[\"9b40\",\"\uD846\uDE2D\uD846\uDE45\uD847\uDC2A\uD847\uDC70\uD847\uDCAC\uD847\uDEC8\u62C3\uD847\uDED5\uD847\uDF15\u7198\u6855\uD848\uDC45\u69E9\u36C8\uD848\uDE7C\uD848\uDFD7\uD848\uDFFA\uD849\uDF2A\uD84A\uDC71\uD84A\uDD4F\u82FD\uD84A\uDD67\uD84A\uDD93\uD84A\uDED5\u89A5\uD84A\uDEE8\u8FA0\uD84A\uDF0E\u97B8\uD84A\uDF3F\u9847\u9ABD\uD84B\uDC4C\"],\n[\"9b62\",\"\uD84B\uDC88\uD84B\uDCB7\uD856\uDFE8\uD84B\uDD08\uD84B\uDD12\uD84B\uDDB7\uD84B\uDD95\uD84B\uDE42\uD84B\uDF74\uD84B\uDFCC\uD84C\uDC33\uD84C\uDC66\uD84C\uDF1F\uD84C\uDFDE\u5FB1\u6648\u66BF\uD85E\uDE79\uD84D\uDD67\uD84D\uDDF3\u7201\uD852\uDDBA\u77D7\uD84D\uDE1A\uD84D\uDF16\u7E87\uD840\uDF46\u58B5\u670E\"],\n[\"9ba1\",\"\u6918\uD84E\uDEA7\uD85D\uDE57\uD857\uDFE2\uD84F\uDE11\uD84F\uDEB9\uD85D\uDDFE\uD848\uDC9A\u48D0\u4AB8\uD850\uDD19\uD862\uDE9A\uD850\uDEEE\uD850\uDF0D\uD850\uDC3B\uD850\uDF34\uD850\uDF96\uD852\uDE45\uD841\uDDCA\u51D2\uD841\uDE11\u599F\uD847\uDEA8\u3BBE\uD84F\uDCFF\uD851\uDC04\uD851\uDCD6\u5788\uD851\uDE74\u399B\uD851\uDF2F\uD861\uDDE8\uD866\uDDC9\u3762\uD848\uDDC3\u8B5E\uD862\uDF4E\u99D6\uD852\uDC12\uD852\uDCFB\uD852\uDE15\u7209\uD852\uDEC0\uD843\uDC78\u5965\uD853\uDEA5\uD853\uDF86\uD841\uDF79\u8EDA\uD854\uDC2C\u528F\u573F\u7171\uD854\uDE99\uD855\uDC19\uD84F\uDF4A\uD852\uDEA7\u55BC\uD855\uDC46\uD855\uDC6E\uD85A\uDF52\u91D4\u3473\uD855\uDD3F\uD85D\uDE32\uD855\uDD5E\u4718\uD855\uDD62\uD855\uDD66\uD855\uDFC7\uD852\uDD3F\uD856\uDC5D\u5066\u34FB\uD84C\uDFCC\u60DE\uD856\uDD03\u477C\uD862\uDD48\uD856\uDEAE\uD856\uDF89\uD857\uDC06\uD847\uDD90\u57A1\u7151\u6FB6\uD858\uDD02\uD85F\uDC12\u9056\uD858\uDDB2\uD853\uDF9A\u8B62\uD859\uDC02\uD859\uDC4A\"],\n[\"9c40\",\"\u5D5B\uD85A\uDFF7\u8F36\uD859\uDC84\uD846\uDD1C\u8AEA\uD852\uDDF6\uD859\uDC88\uD84F\uDFEF\uD859\uDD12\u4BC0\uD859\uDDBF\uD859\uDEB5\uD849\uDF1B\u9465\uD855\uDFE1\u6195\u5A27\uD87E\uDCCD\u4FBB\u56B9\uD851\uDD21\uD859\uDEFC\u4E6A\uD852\uDD34\u9656\u6D8F\uD85B\uDCBD\u3618\u8977\uD859\uDF99\uD85A\uDC6E\uD859\uDC11\uD85A\uDC5E\u71DF\uD85A\uDCC7\u7B42\uD864\uDCC0\uD842\uDE11\uD85A\uDD26\u9104\uD85A\uDD39\u7A45\u9DF0\uD85A\uDDFA\u9A26\uD85A\uDE2D\u365F\uD859\uDC69\uD840\uDC21\u7983\uD85A\uDE34\uD85A\uDF5B\u5D2C\uD84D\uDD19\u83CF\uD85A\uDF9D\u46D0\uD85B\uDCA4\u753B\u8865\uD85B\uDDAE\u58B6\"],\n[\"9ca1\",\"\u371C\uD849\uDD8D\uD85C\uDC4B\uD85C\uDDCD\u3C54\uD85C\uDE80\uD85C\uDE85\u9281\uD848\uDD7A\uD85C\uDE8B\u9330\uD85C\uDEE6\uD852\uDDD0\u6C39\u949F\uD85D\uDC50\uD843\uDEF8\u8827\u88F5\uD84A\uDD26\uD861\uDC73\uD845\uDFB1\u6EB8\uD852\uDE2A\uD846\uDC20\u39A4\u36B9\u5C10\u79E3\u453F\u66B6\uD867\uDCAD\uD866\uDCA4\u8943\uD85D\uDFCC\uD85E\uDC58\u56D6\u40DF\uD845\uDE0A\u39A1\uD84D\uDF2F\uD860\uDCE8\uD844\uDFC5\u71AD\u8366\uD85E\uDDDD\uD864\uDDA8\u5A67\u4CB7\uD85C\uDCAF\uD862\uDDAB\uD85E\uDDFD\uD85E\uDE0A\uD85E\uDF0B\uD85F\uDD66\uD850\uDD7A\u7B43\u797E\uD860\uDC09\u6FB5\uD868\uDEDF\u6A03\uD860\uDF18\u53A2\uD85B\uDE07\u93BF\u6836\u975D\uD860\uDD6F\uD860\uDC23\uD85A\uDDB5\uD844\uDFED\uD84C\uDE2F\uD860\uDC48\u5D85\uD863\uDC30\uD860\uDC83\u5715\u9823\uD862\uDD49\u5DAB\uD852\uDD88\u65BE\u69D5\u53D2\uD852\uDEA5\uD84F\uDF81\u3C11\u6736\uD860\uDC90\uD860\uDCF4\uD860\uDD2E\uD847\uDFA1\uD860\uDD4F\"],\n[\"9d40\",\"\uD860\uDD89\uD860\uDDAF\uD860\uDE1A\uD860\uDF06\uD860\uDF2F\uD860\uDF8A\u35CA\uD861\uDC68\uD861\uDEAA\u48FA\u63E6\uD862\uDD56\u7808\u9255\uD862\uDDB8\u43F2\uD862\uDDE7\u43DF\uD862\uDDE8\uD862\uDF46\uD862\uDFD4\u59F8\uD863\uDC09\u8F0B\uD863\uDFC5\uD864\uDCEC\u7B51\uD864\uDD10\uD864\uDD3C\u3DF7\uD864\uDD5E\uD852\uDECA\u8FD0\u728F\u568B\uD865\uDCE7\uD865\uDDE9\uD865\uDDB0\uD865\uDDB8\uD865\uDF32\uD866\uDCD1\uD866\uDD49\uD866\uDD6A\uD866\uDDC3\uD866\uDE28\uD866\uDF0E\uD867\uDD5A\uD867\uDD9B\u7E9F\uD867\uDEF8\uD867\uDF23\u4CA4\u9547\uD868\uDE93\u71A2\uD868\uDEFF\u4D91\u9012\uD869\uDDCB\u4D9C\uD843\uDC9C\u8FBE\u55C1\"],\n[\"9da1\",\"\u8FBA\uD849\uDCB0\u8FB9\uD852\uDE93\u4509\u7E7F\u6F56\u6AB1\u4EEA\u34E4\uD862\uDF2C\uD85E\uDC9D\u373A\u8E80\uD845\uDFF5\uD860\uDC24\uD862\uDF6C\uD862\uDF99\uD85E\uDE3E\uD859\uDEAF\u3DEB\uD85D\uDE55\uD84F\uDCB7\uD855\uDE35\uD856\uDD56\u4E9A\uD857\uDE81\uD858\uDE58\u56BF\uD843\uDE6D\u8E0E\u5B6D\uD84F\uDE88\uD853\uDC9E\u63DE\u62D0\uD845\uDFF6\uD846\uDC7B\u6530\u562D\uD857\uDC4A\u541A\uD854\uDF11\u3DC6\uD867\uDD98\u4C7D\u5622\u561E\u7F49\uD857\uDED8\u5975\uD84F\uDD40\u8770\u4E1C\uD843\uDFEA\uD843\uDD49\uD84D\uDEBA\u8117\u9D5E\u8D18\u763B\u9C45\u764E\u77B9\u9345\u5432\u8148\u82F7\u5625\u8132\u8418\u80BD\u55EA\u7962\u5643\u5416\uD843\uDE9D\u35CE\u5605\u55F1\u66F1\uD860\uDEE2\u362D\u7534\u55F0\u55BA\u5497\u5572\uD843\uDC41\uD843\uDC96\u5ED0\uD854\uDD48\uD843\uDE76\uD84B\uDC62\"],\n[\"9e40\",\"\uD843\uDEA2\u9EAB\u7D5A\u55DE\uD844\uDC75\u629D\u976D\u5494\u8CCD\u71F6\u9176\u63FC\u63B9\u63FE\u5569\uD84A\uDF43\u9C72\uD84B\uDEB3\u519A\u34DF\uD843\uDDA7\u51A7\u544D\u551E\u5513\u7666\u8E2D\uD85A\uDC8A\u75B1\u80B6\u8804\u8786\u88C7\u81B6\u841C\uD844\uDCC1\u44EC\u7304\uD851\uDF06\u5B90\u830B\uD85A\uDC93\u567B\uD849\uDEF4\uD85F\uDD2F\uD850\uDDA3\uD85F\uDD73\uD85B\uDED0\uD85C\uDEB6\u9170\uD844\uDDD9\u9208\uD84F\uDCFC\uD869\uDEA9\uD843\uDEAC\uD843\uDEF9\u7266\uD847\uDCA2\u474E\uD853\uDFC2\uD85F\uDFF9\uD843\uDFEB\u40FA\"],\n[\"9ea1\",\"\u9C5D\u651F\uD84B\uDDA0\u48F3\uD851\uDFE0\uD867\uDD7C\uD843\uDFEC\uD843\uDE0A\u6062\uD85D\uDDA3\uD843\uDFED\"],\n[\"9ead\",\"\uD858\uDC48\uD844\uDD87\u71A3\u7E8E\u9D50\u4E1A\u4E04\u3577\u5B0D\u6CB2\u5367\u36AC\u39DC\u537D\u36A5\uD851\uDE18\u589A\uD852\uDF6E\u822D\u544B\u57AA\uD856\uDE95\uD842\uDD79\"],\n[\"9ec5\",\"\u3A52\uD849\uDC65\u7374\uD867\uDEAC\u4D09\u9BED\uD84F\uDCFE\uD867\uDF30\u4C5B\uD853\uDFA9\uD865\uDD9E\uD867\uDFDE\u845C\uD84F\uDDB6\uD85C\uDEB2\uD859\uDFB3\uD84D\uDF20\u632E\u7D25\uD84F\uDEF7\uD84F\uDE2C\u3A2A\u9008\u52CC\u3E74\u367A\u45E9\uD841\uDC8E\u7640\u5AF0\uD843\uDEB6\u787A\uD85F\uDF2E\u58A7\u40BF\u567C\u9B8B\u5D74\u7654\uD869\uDC34\u9E85\u4CE1\u75F9\u37FB\u6119\uD84C\uDCDA\uD850\uDFF2\"],\n[\"9ef5\",\"\u565D\uD844\uDEA9\u57A7\uD852\uDD63\uD867\uDE06\u5234\uD85C\uDCAE\u35AD\u6C4A\u9D7C\"],\n[\"9f40\",\"\u7C56\u9B39\u57DE\uD845\uDF6C\u5C53\u64D3\uD865\uDCD0\uD858\uDF35\uD85C\uDD64\u86AD\uD843\uDD28\uD85B\uDD22\uD852\uDEE2\uD843\uDD71\"],\n[\"9f4f\",\"\u51FE\uD847\uDF0F\u5D8E\u9703\uD847\uDDD1\u9E81\u904C\u7B1F\u9B02\u5CD1\u7BA3\u6268\u6335\u9AFF\u7BCF\u9B2A\u7C7E\u9B2E\u7C42\u7C86\u9C15\u7BFC\u9B09\u9F17\u9C1B\uD852\uDD3E\u9F5A\u5573\u5BC3\u4FFD\u9E98\u4FF2\u5260\u3E06\u52D1\u5767\u5056\u59B7\u5E12\u97C8\u9DAB\u8F5C\u5469\u97B4\u9940\u97BA\u532C\u6130\"],\n[\"9fa1\",\"\u692C\u53DA\u9C0A\u9D02\u4C3B\u9641\u6980\u50A6\u7546\uD845\uDF6D\u99DA\u5273\"],\n[\"9fae\",\"\u9159\u9681\u915C\"],\n[\"9fb2\",\"\u9151\uD863\uDE97\u637F\uD85B\uDD23\u6ACA\u5611\u918E\u757A\u6285\uD840\uDFFC\u734F\u7C70\uD857\uDC21\uD84F\uDCFD\"],\n[\"9fc1\",\"\uD852\uDD19\u76D6\u9B9D\u4E2A\uD843\uDCD4\u83BE\u8842\"],\n[\"9fc9\",\"\u5C4A\u69C0\u50ED\u577A\u521F\u5DF5\u4ECE\u6C31\uD840\uDDF2\u4F39\u549C\u54DA\u529A\u8D82\u35FE\u5F0C\u35F3\"],\n[\"9fdb\",\"\u6B52\u917C\u9FA5\u9B97\u982E\u98B4\u9ABA\u9EA8\u9E84\u717A\u7B14\"],\n[\"9fe7\",\"\u6BFA\u8818\u7F78\"],\n[\"9feb\",\"\u5620\uD869\uDE4A\u8E77\u9F53\"],\n[\"9ff0\",\"\u8DD4\u8E4F\u9E1C\u8E01\u6282\uD860\uDF7D\u8E28\u8E75\u7AD3\uD852\uDE77\u7A3E\u78D8\u6CEA\u8A67\u7607\"],\n[\"a040\",\"\uD862\uDE5A\u9F26\u6CCE\u87D6\u75C3\uD868\uDEB2\u7853\uD87E\uDC40\u8D0C\u72E2\u7371\u8B2D\u7302\u74F1\u8CEB\uD852\uDEBB\u862F\u5FBA\u88A0\u44B7\"],\n[\"a055\",\"\uD846\uDC3B\uD85B\uDE05\"],\n[\"a058\",\"\u8A7E\uD849\uDD1B\"],\n[\"a05b\",\"\u60FD\u7667\u9AD7\u9D44\u936E\u9B8F\u87F5\"],\n[\"a063\",\"\u880F\u8CF7\u732C\u9721\u9BB0\u35D6\u72B2\u4C07\u7C51\u994A\uD858\uDD59\u6159\u4C04\u9E96\u617D\"],\n[\"a073\",\"\u575F\u616F\u62A6\u6239\u62CE\u3A5C\u61E2\u53AA\uD84C\uDFF5\u6364\u6802\u35D2\"],\n[\"a0a1\",\"\u5D57\uD862\uDFC2\u8FDA\uD863\uDE39\"],\n[\"a0a6\",\"\u50D9\uD847\uDD46\u7906\u5332\u9638\uD843\uDF3B\u4065\"],\n[\"a0ae\",\"\u77FE\"],\n[\"a0b0\",\"\u7CC2\uD857\uDF1A\u7CDA\u7A2D\u8066\u8063\u7D4D\u7505\u74F2\u8994\u821A\u670C\u8062\uD85D\uDC86\u805B\u74F0\u8103\u7724\u8989\uD859\uDFCC\u7553\uD85B\uDED1\u87A9\u87CE\u81C8\u878C\u8A49\u8CAD\u8B43\u772B\u74F8\u84DA\u3635\u69B2\u8DA6\"],\n[\"a0d4\",\"\u89A9\u7468\u6DB9\u87C1\uD850\uDC11\u74E7\u3DDB\u7176\u60A4\u619C\u3CD1\u7162\u6077\"],\n[\"a0e2\",\"\u7F71\uD862\uDF2D\u7250\u60E9\u4B7E\u5220\u3C18\uD84F\uDCC7\uD857\uDED7\uD85D\uDE56\uD855\uDD31\uD846\uDD44\uD844\uDEFE\uD866\uDD03\uD85B\uDDDC\uD85C\uDCAD\u5CC1\uD858\uDDAD\uD862\uDE0F\uD84D\uDE77\uD840\uDCEE\uD85A\uDC46\uD853\uDF0E\u4562\u5B1F\uD858\uDF4C\u9F50\u9EA6\uD858\uDE6B\"],\n[\"a3c0\",\"\u2400\",31,\"\u2421\"],\n[\"c6a1\",\"\u2460\",9,\"\u2474\",9,\"\u2170\",9,\"\u4E36\u4E3F\u4E85\u4EA0\u5182\u5196\u51AB\u52F9\u5338\u5369\u53B6\u590A\u5B80\u5DDB\u2F33\u5E7F\u5EF4\u5F50\u5F61\u6534\u65E0\u7592\u7676\u8FB5\u96B6\u00A8\u02C6\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\uFF3B\uFF3D\u273D\u3041\",23],\n[\"c740\",\"\u3059\",58,\"\u30A1\u30A2\u30A3\u30A4\"],\n[\"c7a1\",\"\u30A5\",81,\"\u0410\",5,\"\u0401\u0416\",4],\n[\"c840\",\"\u041B\",26,\"\u0451\u0436\",25,\"\u21E7\u21B8\u21B9\u31CF\uD840\uDCCC\u4E5A\uD840\uDC8A\u5202\u4491\"],\n[\"c8a1\",\"\u9FB0\u5188\u9FB1\uD85D\uDE07\"],\n[\"c8cd\",\"\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u309B\u309C\u2E80\u2E84\u2E86\u2E87\u2E88\u2E8A\u2E8C\u2E8D\u2E95\u2E9C\u2E9D\u2EA5\u2EA7\u2EAA\u2EAC\u2EAE\u2EB6\u2EBC\u2EBE\u2EC6\u2ECA\u2ECC\u2ECD\u2ECF\u2ED6\u2ED7\u2EDE\u2EE3\"],\n[\"c8f5\",\"\u0283\u0250\u025B\u0254\u0275\u0153\u00F8\u014B\u028A\u026A\"],\n[\"f9fe\",\"\uFFED\"],\n[\"fa40\",\"\uD841\uDD47\u92DB\uD841\uDDDF\uD84F\uDFC5\u854C\u42B5\u73EF\u51B5\u3649\uD852\uDD42\uD862\uDDE4\u9344\uD846\uDDDB\u82EE\uD84F\uDCC8\u783C\u6744\u62DF\uD852\uDD33\uD862\uDDAA\uD840\uDEA0\uD85A\uDFB3\uD844\uDF05\u4FAB\uD849\uDCED\u5008\uD85B\uDD29\uD85E\uDE84\uD84D\uDE00\uD852\uDEB1\uD849\uDD13\u5029\uD840\uDF7E\u5FA4\uD840\uDF80\uD840\uDF47\u6EDB\uD841\uDC1F\u507D\u5101\u347A\u510E\u986C\u3743\u8416\uD852\uDDA4\uD841\uDC87\u5160\uD84C\uDFB4\u516A\uD842\uDFFF\uD848\uDCFC\uD840\uDEE5\uD849\uDD30\uD841\uDD8E\uD84C\uDE33\uD846\uDD83\u5B82\u877D\uD841\uDDB3\uD84F\uDC99\u51B2\u51B8\"],\n[\"faa1\",\"\u9D34\u51C9\u51CF\u51D1\u3CDC\u51D3\uD852\uDEA6\u51B3\u51E2\u5342\u51ED\u83CD\u693E\uD84D\uDF2D\u5F7B\u520B\u5226\u523C\u52B5\u5257\u5294\u52B9\u52C5\u7C15\u8542\u52E0\u860D\uD85A\uDF13\u5305\uD862\uDEDE\u5549\u6ED9\uD84F\uDF80\uD842\uDD54\uD84F\uDFEC\u5333\u5344\uD842\uDFE2\u6CCB\uD845\uDF26\u681B\u73D5\u604A\u3EAA\u38CC\uD845\uDEE8\u71DD\u44A2\u536D\u5374\uD861\uDEAB\u537E\u537F\uD845\uDD96\uD845\uDE13\u77E6\u5393\uD862\uDE9B\u53A0\u53AB\u53AE\u73A7\uD855\uDF72\u3F59\u739C\u53C1\u53C5\u6C49\u4E49\u57FE\u53D9\u3AAB\uD842\uDF8F\u53E0\uD84F\uDFEB\uD84B\uDDA3\u53F6\uD843\uDC77\u5413\u7079\u552B\u6657\u6D5B\u546D\uD85A\uDF53\uD843\uDD74\u555D\u548F\u54A4\u47A6\uD845\uDF0D\uD843\uDEDD\u3DB4\uD843\uDD4D\"],\n[\"fb40\",\"\uD862\uDDBC\uD849\uDE98\u5547\u4CED\u542F\u7417\u5586\u55A9\u5605\uD846\uDCD7\uD850\uDC3A\u4552\uD851\uDC35\u66B3\uD844\uDCB4\u5637\u66CD\uD84C\uDE8A\u66A4\u66AD\u564D\u564F\u78F1\u56F1\u9787\u53FE\u5700\u56EF\u56ED\uD862\uDF66\u3623\uD844\uDE4F\u5746\uD850\uDDA5\u6C6E\u708B\u5742\u36B1\uD85B\uDC7E\u57E6\uD845\uDC16\u5803\uD845\uDC54\uD850\uDF63\u5826\uD852\uDFF5\u585C\u58AA\u3561\u58E0\u58DC\uD844\uDE3C\u58FB\u5BFF\u5743\uD868\uDD50\uD850\uDE78\u93D3\u35A1\u591F\u68A6\u36C3\u6E59\"],\n[\"fba1\",\"\uD845\uDE3E\u5A24\u5553\uD845\uDE92\u8505\u59C9\uD843\uDD4E\uD85B\uDC81\uD85B\uDD2A\uD845\uDFDC\u59D9\uD845\uDFFB\uD845\uDFB2\uD85B\uDDA6\u6D71\uD846\uDC28\uD845\uDED5\u59F9\uD85B\uDE45\u5AAB\u5A63\u36E6\uD852\uDDA9\u5A77\u3708\u5A96\u7465\u5AD3\uD85B\uDFA1\uD849\uDD54\u3D85\uD846\uDD11\u3732\uD845\uDEB8\u5E83\u52D0\u5B76\u6588\u5B7C\uD85E\uDE0E\u4004\u485D\uD840\uDE04\u5BD5\u6160\uD846\uDE34\uD856\uDDCC\uD841\uDDA5\u5BF3\u5B9D\u4D10\u5C05\uD846\uDF44\u5C13\u73CE\u5C14\uD847\uDCA5\uD85A\uDF28\u5C49\u48DD\u5C85\u5CE9\u5CEF\u5D8B\uD847\uDDF9\uD847\uDE37\u5D10\u5D18\u5D46\uD847\uDEA4\u5CBA\u5DD7\u82FC\u382D\uD852\uDD01\uD848\uDC49\uD848\uDD73\u8287\u3836\u3BC2\u5E2E\u6A8A\u5E75\u5E7A\uD851\uDCBC\uD843\uDCD3\u53A6\u4EB7\u5ED0\u53A8\uD845\uDF71\u5E09\u5EF4\uD861\uDC82\"],\n[\"fc40\",\"\u5EF9\u5EFB\u38A0\u5EFC\u683E\u941B\u5F0D\uD840\uDDC1\uD87E\uDC94\u3ADE\u48AE\uD844\uDF3A\u5F3A\uD85A\uDC88\uD848\uDFD0\u5F58\uD849\uDC71\u5F63\u97BD\uD85B\uDE6E\u5F72\u9340\uD862\uDE36\u5FA7\u5DB6\u3D5F\uD854\uDE50\uD847\uDF6A\uD85C\uDCF8\uD849\uDE68\u91D6\uD840\uDE9E\uD862\uDE29\u6031\u6685\uD846\uDC77\u3963\u3DC7\u3639\u5790\uD849\uDFB4\u7971\u3E40\u609E\u60A4\u60B3\uD852\uDD82\uD852\uDD8F\uD85E\uDE53\u74A4\u50E1\u5AA0\u6164\u8424\u6142\uD87E\uDCA6\uD85B\uDED2\u6181\u51F4\uD841\uDE56\u6187\u5BAA\uD84F\uDFB7\"],\n[\"fca1\",\"\uD84A\uDC5F\u61D3\uD862\uDF9D\uD866\uDD5D\u61D0\u3932\uD84A\uDD80\uD84A\uDCC1\u6023\u615C\u651E\u638B\uD840\uDD18\u62C5\uD845\uDF70\u62D5\uD84B\uDE0D\u636C\uD852\uDDDF\u3A17\u6438\u63F8\uD844\uDF8E\uD845\uDFFC\u6490\u6F8A\uD84B\uDE36\u9814\uD850\uDC8C\uD855\uDF1D\u64E1\u64E5\u947B\u3A66\u643A\u3A57\u654D\u6F16\uD852\uDE28\uD852\uDE23\u6585\u656D\u655F\uD84C\uDC7E\u65B5\uD852\uDD40\u4B37\u65D1\u40D8\uD846\uDC29\u65E0\u65E3\u5FDF\uD84D\uDC00\u6618\uD84C\uDDF7\uD84C\uDDF8\u6644\uD84C\uDDA4\uD84C\uDDA5\u664B\uD843\uDE75\u6667\uD854\uDDE6\u6673\u6674\uD847\uDE3D\uD84C\uDE31\uD861\uDDF4\uD84C\uDDC8\uD854\uDF13\u77C5\uD84A\uDCF7\u99A4\u6702\uD850\uDF9C\uD852\uDE21\u3B2B\u69FA\uD84D\uDFC2\u675E\u6767\u6762\uD850\uDDCD\uD864\uDCED\u67D7\u44E9\u6822\u6E50\u923C\u6801\uD84C\uDFE6\uD85B\uDDA0\u685D\"],\n[\"fd40\",\"\uD84D\uDC6F\u69E1\u6A0B\uD862\uDEDF\u6973\u68C3\uD84D\uDDCD\u6901\u6900\u3D32\u3A01\uD84D\uDE3C\u3B80\u67AC\u6961\uD862\uDE4A\u42FC\u6936\u6998\u3BA1\uD840\uDFC9\u8363\u5090\u69F9\uD84D\uDE59\uD848\uDD2A\u6A45\uD84D\uDF03\u6A9D\u3BF3\u67B1\u6AC8\uD864\uDD9C\u3C0D\u6B1D\uD842\uDD23\u60DE\u6B35\u6B74\uD849\uDFCD\u6EB5\uD84E\uDEDB\uD840\uDFB5\uD846\uDD58\u3740\u5421\uD84E\uDF5A\u6BE1\uD84F\uDEFC\u6BDC\u6C37\uD849\uDC8B\uD852\uDCF1\uD85A\uDF51\u6C5A\u8226\u6C79\uD84F\uDDBC\u44C5\uD84F\uDDBD\uD850\uDDA4\uD852\uDD0C\uD852\uDD00\"],\n[\"fda1\",\"\uD84F\uDCC9\u36E5\u3CEB\uD843\uDD32\u9B83\uD84C\uDDF9\uD849\uDC91\u7F8F\u6837\uD85B\uDD25\uD85B\uDDA1\uD85B\uDDEB\u6D96\u6D5C\u6E7C\u6F04\uD852\uDD7F\uD850\uDC85\uD85B\uDE72\u8533\uD85B\uDF74\u51C7\u6C9C\u6E1D\u842E\uD862\uDF21\u6E2F\uD84F\uDE2F\u7453\uD84F\uDF82\u79CC\u6E4F\u5A91\uD84C\uDC4B\u6FF8\u370D\u6F9D\uD84F\uDE30\u6EFA\uD845\uDC97\uD850\uDC3D\u4555\u93F0\u6F44\u6F5C\u3D4E\u6F74\uD864\uDD70\u3D3B\u6F9F\uD850\uDD44\u6FD3\uD850\uDC91\uD850\uDD55\uD850\uDC39\uD84F\uDFF0\uD84F\uDFB4\uD850\uDD3F\u51DF\uD850\uDD56\uD850\uDD57\uD850\uDD40\uD858\uDDDD\u704B\u707E\u70A7\u7081\u70CC\u70D5\u70D6\u70DF\u4104\u3DE8\u71B4\u7196\uD850\uDE77\u712B\u7145\u5A88\u714A\u716E\u5C9C\uD850\uDF65\u714F\u9362\uD850\uDEC1\u712C\uD851\uDC5A\uD852\uDE27\uD852\uDE22\u71BA\uD862\uDFE8\u70BD\u720E\"],\n[\"fe40\",\"\u9442\u7215\u5911\u9443\u7224\u9341\uD855\uDE05\u722E\u7240\uD852\uDD74\u68BD\u7255\u7257\u3E55\uD84C\uDC44\u680D\u6F3D\u7282\u732A\u732B\uD852\uDC23\uD862\uDC2B\u48ED\uD862\uDC04\u7328\u732E\u73CF\u73AA\uD843\uDC3A\uD85A\uDE2E\u73C9\u7449\uD850\uDDE2\uD845\uDEE7\uD852\uDE24\u6623\u36C5\uD852\uDDB7\uD852\uDD8D\uD852\uDDFB\u73F7\u7415\u6903\uD852\uDE26\u7439\uD841\uDDC3\u3ED7\u745C\uD84A\uDCAD\u7460\uD863\uDEB2\u7447\u73E4\u7476\u83B9\u746C\u3730\u7474\u93F1\u6A2C\u7482\u4953\uD852\uDE8C\"],\n[\"fea1\",\"\uD850\uDD5F\uD852\uDE79\uD862\uDF8F\u5B46\uD863\uDC03\uD846\uDC9E\u74C8\uD846\uDD88\u750E\u74E9\u751E\uD863\uDED9\uD846\uDE4B\u5BD7\uD863\uDEAC\u9385\u754D\u754A\u7567\u756E\uD853\uDF82\u3F04\uD853\uDD13\u758E\u745D\u759E\u75B4\u7602\u762C\u7651\u764F\u766F\u7676\uD858\uDFF5\u7690\u81EF\u37F8\uD85A\uDD11\uD85A\uDD0E\u76A1\u76A5\u76B7\u76CC\uD85B\uDF9F\u8462\uD854\uDC9D\uD854\uDD7D\uD847\uDE1C\u771E\u7726\u7740\u64AF\uD854\uDE20\u7758\uD84C\uDEAC\u77AF\uD862\uDD64\uD862\uDD68\uD845\uDEC1\u77F4\u7809\uD844\uDF76\uD852\uDE12\u68CA\u78AF\u78C7\u78D3\u96A5\u792E\uD855\uDDE0\u78D7\u7934\u78B1\uD85D\uDE0C\u8FB8\u8884\uD862\uDF2B\uD858\uDC83\uD849\uDE1C\u7986\u8900\u6902\u7980\uD856\uDC57\u799D\uD85E\uDF39\u793C\u79A9\u6E2A\uD85C\uDD26\u3EA8\u79C6\uD864\uDD0D\u79D4\"]\n]\n", "\"use strict\";\n\n// Description of supported double byte encodings and aliases.\n// Tables are not require()-d until they are needed to speed up library load.\n// require()-s are direct to support Browserify.\n\nmodule.exports = {\n    \n    // == Japanese/ShiftJIS ====================================================\n    // All japanese encodings are based on JIS X set of standards:\n    // JIS X 0201 - Single-byte encoding of ASCII + \u00A5 + Kana chars at 0xA1-0xDF.\n    // JIS X 0208 - Main set of 6879 characters, placed in 94x94 plane, to be encoded by 2 bytes. \n    //              Has several variations in 1978, 1983, 1990 and 1997.\n    // JIS X 0212 - Supplementary plane of 6067 chars in 94x94 plane. 1990. Effectively dead.\n    // JIS X 0213 - Extension and modern replacement of 0208 and 0212. Total chars: 11233.\n    //              2 planes, first is superset of 0208, second - revised 0212.\n    //              Introduced in 2000, revised 2004. Some characters are in Unicode Plane 2 (0x2xxxx)\n\n    // Byte encodings are:\n    //  * Shift_JIS: Compatible with 0201, uses not defined chars in top half as lead bytes for double-byte\n    //               encoding of 0208. Lead byte ranges: 0x81-0x9F, 0xE0-0xEF; Trail byte ranges: 0x40-0x7E, 0x80-0x9E, 0x9F-0xFC.\n    //               Windows CP932 is a superset of Shift_JIS. Some companies added more chars, notably KDDI.\n    //  * EUC-JP:    Up to 3 bytes per character. Used mostly on *nixes.\n    //               0x00-0x7F       - lower part of 0201\n    //               0x8E, 0xA1-0xDF - upper part of 0201\n    //               (0xA1-0xFE)x2   - 0208 plane (94x94).\n    //               0x8F, (0xA1-0xFE)x2 - 0212 plane (94x94).\n    //  * JIS X 208: 7-bit, direct encoding of 0208. Byte ranges: 0x21-0x7E (94 values). Uncommon.\n    //               Used as-is in ISO2022 family.\n    //  * ISO2022-JP: Stateful encoding, with escape sequences to switch between ASCII, \n    //                0201-1976 Roman, 0208-1978, 0208-1983.\n    //  * ISO2022-JP-1: Adds esc seq for 0212-1990.\n    //  * ISO2022-JP-2: Adds esc seq for GB2313-1980, KSX1001-1992, ISO8859-1, ISO8859-7.\n    //  * ISO2022-JP-3: Adds esc seq for 0201-1976 Kana set, 0213-2000 Planes 1, 2.\n    //  * ISO2022-JP-2004: Adds 0213-2004 Plane 1.\n    //\n    // After JIS X 0213 appeared, Shift_JIS-2004, EUC-JISX0213 and ISO2022-JP-2004 followed, with just changing the planes.\n    //\n    // Overall, it seems that it's a mess :( http://www8.plala.or.jp/tkubota1/unicode-symbols-map2.html\n\n    'shiftjis': {\n        type: '_dbcs',\n        table: function() { return require('./tables/shiftjis.json') },\n        encodeAdd: {'\\u00a5': 0x5C, '\\u203E': 0x7E},\n        encodeSkipVals: [{from: 0xED40, to: 0xF940}],\n    },\n    'csshiftjis': 'shiftjis',\n    'mskanji': 'shiftjis',\n    'sjis': 'shiftjis',\n    'windows31j': 'shiftjis',\n    'ms31j': 'shiftjis',\n    'xsjis': 'shiftjis',\n    'windows932': 'shiftjis',\n    'ms932': 'shiftjis',\n    '932': 'shiftjis',\n    'cp932': 'shiftjis',\n\n    'eucjp': {\n        type: '_dbcs',\n        table: function() { return require('./tables/eucjp.json') },\n        encodeAdd: {'\\u00a5': 0x5C, '\\u203E': 0x7E},\n    },\n\n    // TODO: KDDI extension to Shift_JIS\n    // TODO: IBM CCSID 942 = CP932, but F0-F9 custom chars and other char changes.\n    // TODO: IBM CCSID 943 = Shift_JIS = CP932 with original Shift_JIS lower 128 chars.\n\n\n    // == Chinese/GBK ==========================================================\n    // http://en.wikipedia.org/wiki/GBK\n    // We mostly implement W3C recommendation: https://www.w3.org/TR/encoding/#gbk-encoder\n\n    // Oldest GB2312 (1981, ~7600 chars) is a subset of CP936\n    'gb2312': 'cp936',\n    'gb231280': 'cp936',\n    'gb23121980': 'cp936',\n    'csgb2312': 'cp936',\n    'csiso58gb231280': 'cp936',\n    'euccn': 'cp936',\n\n    // Microsoft's CP936 is a subset and approximation of GBK.\n    'windows936': 'cp936',\n    'ms936': 'cp936',\n    '936': 'cp936',\n    'cp936': {\n        type: '_dbcs',\n        table: function() { return require('./tables/cp936.json') },\n    },\n\n    // GBK (~22000 chars) is an extension of CP936 that added user-mapped chars and some other.\n    'gbk': {\n        type: '_dbcs',\n        table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) },\n    },\n    'xgbk': 'gbk',\n    'isoir58': 'gbk',\n\n    // GB18030 is an algorithmic extension of GBK.\n    // Main source: https://www.w3.org/TR/encoding/#gbk-encoder\n    // http://icu-project.org/docs/papers/gb18030.html\n    // http://source.icu-project.org/repos/icu/data/trunk/charset/data/xml/gb-18030-2000.xml\n    // http://www.khngai.com/chinese/charmap/tblgbk.php?page=0\n    'gb18030': {\n        type: '_dbcs',\n        table: function() { return require('./tables/cp936.json').concat(require('./tables/gbk-added.json')) },\n        gb18030: function() { return require('./tables/gb18030-ranges.json') },\n        encodeSkipVals: [0x80],\n        encodeAdd: {'\u20AC': 0xA2E3},\n    },\n\n    'chinese': 'gb18030',\n\n\n    // == Korean ===============================================================\n    // EUC-KR, KS_C_5601 and KS X 1001 are exactly the same.\n    'windows949': 'cp949',\n    'ms949': 'cp949',\n    '949': 'cp949',\n    'cp949': {\n        type: '_dbcs',\n        table: function() { return require('./tables/cp949.json') },\n    },\n\n    'cseuckr': 'cp949',\n    'csksc56011987': 'cp949',\n    'euckr': 'cp949',\n    'isoir149': 'cp949',\n    'korean': 'cp949',\n    'ksc56011987': 'cp949',\n    'ksc56011989': 'cp949',\n    'ksc5601': 'cp949',\n\n\n    // == Big5/Taiwan/Hong Kong ================================================\n    // There are lots of tables for Big5 and cp950. Please see the following links for history:\n    // http://moztw.org/docs/big5/  http://www.haible.de/bruno/charsets/conversion-tables/Big5.html\n    // Variations, in roughly number of defined chars:\n    //  * Windows CP 950: Microsoft variant of Big5. Canonical: http://www.unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT\n    //  * Windows CP 951: Microsoft variant of Big5-HKSCS-2001. Seems to be never public. http://me.abelcheung.org/articles/research/what-is-cp951/\n    //  * Big5-2003 (Taiwan standard) almost superset of cp950.\n    //  * Unicode-at-on (UAO) / Mozilla 1.8. Falling out of use on the Web. Not supported by other browsers.\n    //  * Big5-HKSCS (-2001, -2004, -2008). Hong Kong standard. \n    //    many unicode code points moved from PUA to Supplementary plane (U+2XXXX) over the years.\n    //    Plus, it has 4 combining sequences.\n    //    Seems that Mozilla refused to support it for 10 yrs. https://bugzilla.mozilla.org/show_bug.cgi?id=162431 https://bugzilla.mozilla.org/show_bug.cgi?id=310299\n    //    because big5-hkscs is the only encoding to include astral characters in non-algorithmic way.\n    //    Implementations are not consistent within browsers; sometimes labeled as just big5.\n    //    MS Internet Explorer switches from big5 to big5-hkscs when a patch applied.\n    //    Great discussion & recap of what's going on https://bugzilla.mozilla.org/show_bug.cgi?id=912470#c31\n    //    In the encoder, it might make sense to support encoding old PUA mappings to Big5 bytes seq-s.\n    //    Official spec: http://www.ogcio.gov.hk/en/business/tech_promotion/ccli/terms/doc/2003cmp_2008.txt\n    //                   http://www.ogcio.gov.hk/tc/business/tech_promotion/ccli/terms/doc/hkscs-2008-big5-iso.txt\n    // \n    // Current understanding of how to deal with Big5(-HKSCS) is in the Encoding Standard, http://encoding.spec.whatwg.org/#big5-encoder\n    // Unicode mapping (http://www.unicode.org/Public/MAPPINGS/OBSOLETE/EASTASIA/OTHER/BIG5.TXT) is said to be wrong.\n\n    'windows950': 'cp950',\n    'ms950': 'cp950',\n    '950': 'cp950',\n    'cp950': {\n        type: '_dbcs',\n        table: function() { return require('./tables/cp950.json') },\n    },\n\n    // Big5 has many variations and is an extension of cp950. We use Encoding Standard's as a consensus.\n    'big5': 'big5hkscs',\n    'big5hkscs': {\n        type: '_dbcs',\n        table: function() { return require('./tables/cp950.json').concat(require('./tables/big5-added.json')) },\n        encodeSkipVals: [0xa2cc],\n    },\n\n    'cnbig5': 'big5hkscs',\n    'csbig5': 'big5hkscs',\n    'xxbig5': 'big5hkscs',\n};\n", "\"use strict\";\n\n// Update this array if you add/rename/remove files in this directory.\n// We support Browserify by skipping automatic module discovery and requiring modules directly.\nvar modules = [\n    require(\"./internal\"),\n    require(\"./utf16\"),\n    require(\"./utf7\"),\n    require(\"./sbcs-codec\"),\n    require(\"./sbcs-data\"),\n    require(\"./sbcs-data-generated\"),\n    require(\"./dbcs-codec\"),\n    require(\"./dbcs-data\"),\n];\n\n// Put all encoding/alias/codec definitions to single object and export it. \nfor (var i = 0; i < modules.length; i++) {\n    var module = modules[i];\n    for (var enc in module)\n        if (Object.prototype.hasOwnProperty.call(module, enc))\n            exports[enc] = module[enc];\n}\n", "\"use strict\";\n\nvar Buffer = require(\"buffer\").Buffer,\n    Transform = require(\"stream\").Transform;\n\n\n// == Exports ==================================================================\nmodule.exports = function(iconv) {\n    \n    // Additional Public API.\n    iconv.encodeStream = function encodeStream(encoding, options) {\n        return new IconvLiteEncoderStream(iconv.getEncoder(encoding, options), options);\n    }\n\n    iconv.decodeStream = function decodeStream(encoding, options) {\n        return new IconvLiteDecoderStream(iconv.getDecoder(encoding, options), options);\n    }\n\n    iconv.supportsStreams = true;\n\n\n    // Not published yet.\n    iconv.IconvLiteEncoderStream = IconvLiteEncoderStream;\n    iconv.IconvLiteDecoderStream = IconvLiteDecoderStream;\n    iconv._collect = IconvLiteDecoderStream.prototype.collect;\n};\n\n\n// == Encoder stream =======================================================\nfunction IconvLiteEncoderStream(conv, options) {\n    this.conv = conv;\n    options = options || {};\n    options.decodeStrings = false; // We accept only strings, so we don't need to decode them.\n    Transform.call(this, options);\n}\n\nIconvLiteEncoderStream.prototype = Object.create(Transform.prototype, {\n    constructor: { value: IconvLiteEncoderStream }\n});\n\nIconvLiteEncoderStream.prototype._transform = function(chunk, encoding, done) {\n    if (typeof chunk != 'string')\n        return done(new Error(\"Iconv encoding stream needs strings as its input.\"));\n    try {\n        var res = this.conv.write(chunk);\n        if (res && res.length) this.push(res);\n        done();\n    }\n    catch (e) {\n        done(e);\n    }\n}\n\nIconvLiteEncoderStream.prototype._flush = function(done) {\n    try {\n        var res = this.conv.end();\n        if (res && res.length) this.push(res);\n        done();\n    }\n    catch (e) {\n        done(e);\n    }\n}\n\nIconvLiteEncoderStream.prototype.collect = function(cb) {\n    var chunks = [];\n    this.on('error', cb);\n    this.on('data', function(chunk) { chunks.push(chunk); });\n    this.on('end', function() {\n        cb(null, Buffer.concat(chunks));\n    });\n    return this;\n}\n\n\n// == Decoder stream =======================================================\nfunction IconvLiteDecoderStream(conv, options) {\n    this.conv = conv;\n    options = options || {};\n    options.encoding = this.encoding = 'utf8'; // We output strings.\n    Transform.call(this, options);\n}\n\nIconvLiteDecoderStream.prototype = Object.create(Transform.prototype, {\n    constructor: { value: IconvLiteDecoderStream }\n});\n\nIconvLiteDecoderStream.prototype._transform = function(chunk, encoding, done) {\n    if (!Buffer.isBuffer(chunk))\n        return done(new Error(\"Iconv decoding stream needs buffers as its input.\"));\n    try {\n        var res = this.conv.write(chunk);\n        if (res && res.length) this.push(res, this.encoding);\n        done();\n    }\n    catch (e) {\n        done(e);\n    }\n}\n\nIconvLiteDecoderStream.prototype._flush = function(done) {\n    try {\n        var res = this.conv.end();\n        if (res && res.length) this.push(res, this.encoding);                \n        done();\n    }\n    catch (e) {\n        done(e);\n    }\n}\n\nIconvLiteDecoderStream.prototype.collect = function(cb) {\n    var res = '';\n    this.on('error', cb);\n    this.on('data', function(chunk) { res += chunk; });\n    this.on('end', function() {\n        cb(null, res);\n    });\n    return this;\n}\n\n", "\"use strict\";\nvar Buffer = require(\"buffer\").Buffer;\n// Note: not polyfilled with safer-buffer on a purpose, as overrides Buffer\n\n// == Extend Node primitives to use iconv-lite =================================\n\nmodule.exports = function (iconv) {\n    var original = undefined; // Place to keep original methods.\n\n    // Node authors rewrote Buffer internals to make it compatible with\n    // Uint8Array and we cannot patch key functions since then.\n    // Note: this does use older Buffer API on a purpose\n    iconv.supportsNodeEncodingsExtension = !(Buffer.from || new Buffer(0) instanceof Uint8Array);\n\n    iconv.extendNodeEncodings = function extendNodeEncodings() {\n        if (original) return;\n        original = {};\n\n        if (!iconv.supportsNodeEncodingsExtension) {\n            console.error(\"ACTION NEEDED: require('iconv-lite').extendNodeEncodings() is not supported in your version of Node\");\n            console.error(\"See more info at https://github.com/ashtuchkin/iconv-lite/wiki/Node-v4-compatibility\");\n            return;\n        }\n\n        var nodeNativeEncodings = {\n            'hex': true, 'utf8': true, 'utf-8': true, 'ascii': true, 'binary': true, \n            'base64': true, 'ucs2': true, 'ucs-2': true, 'utf16le': true, 'utf-16le': true,\n        };\n\n        Buffer.isNativeEncoding = function(enc) {\n            return enc && nodeNativeEncodings[enc.toLowerCase()];\n        }\n\n        // -- SlowBuffer -----------------------------------------------------------\n        var SlowBuffer = require('buffer').SlowBuffer;\n\n        original.SlowBufferToString = SlowBuffer.prototype.toString;\n        SlowBuffer.prototype.toString = function(encoding, start, end) {\n            encoding = String(encoding || 'utf8').toLowerCase();\n\n            // Use native conversion when possible\n            if (Buffer.isNativeEncoding(encoding))\n                return original.SlowBufferToString.call(this, encoding, start, end);\n\n            // Otherwise, use our decoding method.\n            if (typeof start == 'undefined') start = 0;\n            if (typeof end == 'undefined') end = this.length;\n            return iconv.decode(this.slice(start, end), encoding);\n        }\n\n        original.SlowBufferWrite = SlowBuffer.prototype.write;\n        SlowBuffer.prototype.write = function(string, offset, length, encoding) {\n            // Support both (string, offset, length, encoding)\n            // and the legacy (string, encoding, offset, length)\n            if (isFinite(offset)) {\n                if (!isFinite(length)) {\n                    encoding = length;\n                    length = undefined;\n                }\n            } else {  // legacy\n                var swap = encoding;\n                encoding = offset;\n                offset = length;\n                length = swap;\n            }\n\n            offset = +offset || 0;\n            var remaining = this.length - offset;\n            if (!length) {\n                length = remaining;\n            } else {\n                length = +length;\n                if (length > remaining) {\n                    length = remaining;\n                }\n            }\n            encoding = String(encoding || 'utf8').toLowerCase();\n\n            // Use native conversion when possible\n            if (Buffer.isNativeEncoding(encoding))\n                return original.SlowBufferWrite.call(this, string, offset, length, encoding);\n\n            if (string.length > 0 && (length < 0 || offset < 0))\n                throw new RangeError('attempt to write beyond buffer bounds');\n\n            // Otherwise, use our encoding method.\n            var buf = iconv.encode(string, encoding);\n            if (buf.length < length) length = buf.length;\n            buf.copy(this, offset, 0, length);\n            return length;\n        }\n\n        // -- Buffer ---------------------------------------------------------------\n\n        original.BufferIsEncoding = Buffer.isEncoding;\n        Buffer.isEncoding = function(encoding) {\n            return Buffer.isNativeEncoding(encoding) || iconv.encodingExists(encoding);\n        }\n\n        original.BufferByteLength = Buffer.byteLength;\n        Buffer.byteLength = SlowBuffer.byteLength = function(str, encoding) {\n            encoding = String(encoding || 'utf8').toLowerCase();\n\n            // Use native conversion when possible\n            if (Buffer.isNativeEncoding(encoding))\n                return original.BufferByteLength.call(this, str, encoding);\n\n            // Slow, I know, but we don't have a better way yet.\n            return iconv.encode(str, encoding).length;\n        }\n\n        original.BufferToString = Buffer.prototype.toString;\n        Buffer.prototype.toString = function(encoding, start, end) {\n            encoding = String(encoding || 'utf8').toLowerCase();\n\n            // Use native conversion when possible\n            if (Buffer.isNativeEncoding(encoding))\n                return original.BufferToString.call(this, encoding, start, end);\n\n            // Otherwise, use our decoding method.\n            if (typeof start == 'undefined') start = 0;\n            if (typeof end == 'undefined') end = this.length;\n            return iconv.decode(this.slice(start, end), encoding);\n        }\n\n        original.BufferWrite = Buffer.prototype.write;\n        Buffer.prototype.write = function(string, offset, length, encoding) {\n            var _offset = offset, _length = length, _encoding = encoding;\n            // Support both (string, offset, length, encoding)\n            // and the legacy (string, encoding, offset, length)\n            if (isFinite(offset)) {\n                if (!isFinite(length)) {\n                    encoding = length;\n                    length = undefined;\n                }\n            } else {  // legacy\n                var swap = encoding;\n                encoding = offset;\n                offset = length;\n                length = swap;\n            }\n\n            encoding = String(encoding || 'utf8').toLowerCase();\n\n            // Use native conversion when possible\n            if (Buffer.isNativeEncoding(encoding))\n                return original.BufferWrite.call(this, string, _offset, _length, _encoding);\n\n            offset = +offset || 0;\n            var remaining = this.length - offset;\n            if (!length) {\n                length = remaining;\n            } else {\n                length = +length;\n                if (length > remaining) {\n                    length = remaining;\n                }\n            }\n\n            if (string.length > 0 && (length < 0 || offset < 0))\n                throw new RangeError('attempt to write beyond buffer bounds');\n\n            // Otherwise, use our encoding method.\n            var buf = iconv.encode(string, encoding);\n            if (buf.length < length) length = buf.length;\n            buf.copy(this, offset, 0, length);\n            return length;\n\n            // TODO: Set _charsWritten.\n        }\n\n\n        // -- Readable -------------------------------------------------------------\n        if (iconv.supportsStreams) {\n            var Readable = require('stream').Readable;\n\n            original.ReadableSetEncoding = Readable.prototype.setEncoding;\n            Readable.prototype.setEncoding = function setEncoding(enc, options) {\n                // Use our own decoder, it has the same interface.\n                // We cannot use original function as it doesn't handle BOM-s.\n                this._readableState.decoder = iconv.getDecoder(enc, options);\n                this._readableState.encoding = enc;\n            }\n\n            Readable.prototype.collect = iconv._collect;\n        }\n    }\n\n    // Remove iconv-lite Node primitive extensions.\n    iconv.undoExtendNodeEncodings = function undoExtendNodeEncodings() {\n        if (!iconv.supportsNodeEncodingsExtension)\n            return;\n        if (!original)\n            throw new Error(\"require('iconv-lite').undoExtendNodeEncodings(): Nothing to undo; extendNodeEncodings() is not called.\")\n\n        delete Buffer.isNativeEncoding;\n\n        var SlowBuffer = require('buffer').SlowBuffer;\n\n        SlowBuffer.prototype.toString = original.SlowBufferToString;\n        SlowBuffer.prototype.write = original.SlowBufferWrite;\n\n        Buffer.isEncoding = original.BufferIsEncoding;\n        Buffer.byteLength = original.BufferByteLength;\n        Buffer.prototype.toString = original.BufferToString;\n        Buffer.prototype.write = original.BufferWrite;\n\n        if (iconv.supportsStreams) {\n            var Readable = require('stream').Readable;\n\n            Readable.prototype.setEncoding = original.ReadableSetEncoding;\n            delete Readable.prototype.collect;\n        }\n\n        original = undefined;\n    }\n}\n", "\"use strict\";\n\n// Some environments don't have global Buffer (e.g. React Native).\n// Solution would be installing npm modules \"buffer\" and \"stream\" explicitly.\nvar Buffer = require(\"safer-buffer\").Buffer;\n\nvar bomHandling = require(\"./bom-handling\"),\n    iconv = module.exports;\n\n// All codecs and aliases are kept here, keyed by encoding name/alias.\n// They are lazy loaded in `iconv.getCodec` from `encodings/index.js`.\niconv.encodings = null;\n\n// Characters emitted in case of error.\niconv.defaultCharUnicode = '\uFFFD';\niconv.defaultCharSingleByte = '?';\n\n// Public API.\niconv.encode = function encode(str, encoding, options) {\n    str = \"\" + (str || \"\"); // Ensure string.\n\n    var encoder = iconv.getEncoder(encoding, options);\n\n    var res = encoder.write(str);\n    var trail = encoder.end();\n    \n    return (trail && trail.length > 0) ? Buffer.concat([res, trail]) : res;\n}\n\niconv.decode = function decode(buf, encoding, options) {\n    if (typeof buf === 'string') {\n        if (!iconv.skipDecodeWarning) {\n            console.error('Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding');\n            iconv.skipDecodeWarning = true;\n        }\n\n        buf = Buffer.from(\"\" + (buf || \"\"), \"binary\"); // Ensure buffer.\n    }\n\n    var decoder = iconv.getDecoder(encoding, options);\n\n    var res = decoder.write(buf);\n    var trail = decoder.end();\n\n    return trail ? (res + trail) : res;\n}\n\niconv.encodingExists = function encodingExists(enc) {\n    try {\n        iconv.getCodec(enc);\n        return true;\n    } catch (e) {\n        return false;\n    }\n}\n\n// Legacy aliases to convert functions\niconv.toEncoding = iconv.encode;\niconv.fromEncoding = iconv.decode;\n\n// Search for a codec in iconv.encodings. Cache codec data in iconv._codecDataCache.\niconv._codecDataCache = {};\niconv.getCodec = function getCodec(encoding) {\n    if (!iconv.encodings)\n        iconv.encodings = require(\"../encodings\"); // Lazy load all encoding definitions.\n    \n    // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n    var enc = iconv._canonicalizeEncoding(encoding);\n\n    // Traverse iconv.encodings to find actual codec.\n    var codecOptions = {};\n    while (true) {\n        var codec = iconv._codecDataCache[enc];\n        if (codec)\n            return codec;\n\n        var codecDef = iconv.encodings[enc];\n\n        switch (typeof codecDef) {\n            case \"string\": // Direct alias to other encoding.\n                enc = codecDef;\n                break;\n\n            case \"object\": // Alias with options. Can be layered.\n                for (var key in codecDef)\n                    codecOptions[key] = codecDef[key];\n\n                if (!codecOptions.encodingName)\n                    codecOptions.encodingName = enc;\n                \n                enc = codecDef.type;\n                break;\n\n            case \"function\": // Codec itself.\n                if (!codecOptions.encodingName)\n                    codecOptions.encodingName = enc;\n\n                // The codec function must load all tables and return object with .encoder and .decoder methods.\n                // It'll be called only once (for each different options object).\n                codec = new codecDef(codecOptions, iconv);\n\n                iconv._codecDataCache[codecOptions.encodingName] = codec; // Save it to be reused later.\n                return codec;\n\n            default:\n                throw new Error(\"Encoding not recognized: '\" + encoding + \"' (searched as: '\"+enc+\"')\");\n        }\n    }\n}\n\niconv._canonicalizeEncoding = function(encoding) {\n    // Canonicalize encoding name: strip all non-alphanumeric chars and appended year.\n    return (''+encoding).toLowerCase().replace(/:\\d{4}$|[^0-9a-z]/g, \"\");\n}\n\niconv.getEncoder = function getEncoder(encoding, options) {\n    var codec = iconv.getCodec(encoding),\n        encoder = new codec.encoder(options, codec);\n\n    if (codec.bomAware && options && options.addBOM)\n        encoder = new bomHandling.PrependBOM(encoder, options);\n\n    return encoder;\n}\n\niconv.getDecoder = function getDecoder(encoding, options) {\n    var codec = iconv.getCodec(encoding),\n        decoder = new codec.decoder(options, codec);\n\n    if (codec.bomAware && !(options && options.stripBOM === false))\n        decoder = new bomHandling.StripBOM(decoder, options);\n\n    return decoder;\n}\n\n\n// Load extensions in Node. All of them are omitted in Browserify build via 'browser' field in package.json.\nvar nodeVer = typeof process !== 'undefined' && process.versions && process.versions.node;\nif (nodeVer) {\n\n    // Load streaming support in Node v0.10+\n    var nodeVerArr = nodeVer.split(\".\").map(Number);\n    if (nodeVerArr[0] > 0 || nodeVerArr[1] >= 10) {\n        require(\"./streams\")(iconv);\n    }\n\n    // Load Node primitive extensions.\n    require(\"./extend-node\")(iconv);\n}\n\nif (\"\u0100\" != \"\\u0100\") {\n    console.error(\"iconv-lite warning: javascript files use encoding different from utf-8. See https://github.com/ashtuchkin/iconv-lite/wiki/Javascript-source-file-encodings for more info.\");\n}\n", "/*!\n * raw-body\n * Copyright(c) 2013-2014 Jonathan Ong\n * Copyright(c) 2014-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar asyncHooks = tryRequireAsyncHooks()\nvar bytes = require('bytes')\nvar createError = require('http-errors')\nvar iconv = require('iconv-lite')\nvar unpipe = require('unpipe')\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = getRawBody\n\n/**\n * Module variables.\n * @private\n */\n\nvar ICONV_ENCODING_MESSAGE_REGEXP = /^Encoding not recognized: /\n\n/**\n * Get the decoder for a given encoding.\n *\n * @param {string} encoding\n * @private\n */\n\nfunction getDecoder (encoding) {\n  if (!encoding) return null\n\n  try {\n    return iconv.getDecoder(encoding)\n  } catch (e) {\n    // error getting decoder\n    if (!ICONV_ENCODING_MESSAGE_REGEXP.test(e.message)) throw e\n\n    // the encoding was not found\n    throw createError(415, 'specified encoding unsupported', {\n      encoding: encoding,\n      type: 'encoding.unsupported'\n    })\n  }\n}\n\n/**\n * Get the raw body of a stream (typically HTTP).\n *\n * @param {object} stream\n * @param {object|string|function} [options]\n * @param {function} [callback]\n * @public\n */\n\nfunction getRawBody (stream, options, callback) {\n  var done = callback\n  var opts = options || {}\n\n  // light validation\n  if (stream === undefined) {\n    throw new TypeError('argument stream is required')\n  } else if (typeof stream !== 'object' || stream === null || typeof stream.on !== 'function') {\n    throw new TypeError('argument stream must be a stream')\n  }\n\n  if (options === true || typeof options === 'string') {\n    // short cut for encoding\n    opts = {\n      encoding: options\n    }\n  }\n\n  if (typeof options === 'function') {\n    done = options\n    opts = {}\n  }\n\n  // validate callback is a function, if provided\n  if (done !== undefined && typeof done !== 'function') {\n    throw new TypeError('argument callback must be a function')\n  }\n\n  // require the callback without promises\n  if (!done && !global.Promise) {\n    throw new TypeError('argument callback is required')\n  }\n\n  // get encoding\n  var encoding = opts.encoding !== true\n    ? opts.encoding\n    : 'utf-8'\n\n  // convert the limit to an integer\n  var limit = bytes.parse(opts.limit)\n\n  // convert the expected length to an integer\n  var length = opts.length != null && !isNaN(opts.length)\n    ? parseInt(opts.length, 10)\n    : null\n\n  if (done) {\n    // classic callback style\n    return readStream(stream, encoding, length, limit, wrap(done))\n  }\n\n  return new Promise(function executor (resolve, reject) {\n    readStream(stream, encoding, length, limit, function onRead (err, buf) {\n      if (err) return reject(err)\n      resolve(buf)\n    })\n  })\n}\n\n/**\n * Halt a stream.\n *\n * @param {Object} stream\n * @private\n */\n\nfunction halt (stream) {\n  // unpipe everything from the stream\n  unpipe(stream)\n\n  // pause stream\n  if (typeof stream.pause === 'function') {\n    stream.pause()\n  }\n}\n\n/**\n * Read the data from the stream.\n *\n * @param {object} stream\n * @param {string} encoding\n * @param {number} length\n * @param {number} limit\n * @param {function} callback\n * @public\n */\n\nfunction readStream (stream, encoding, length, limit, callback) {\n  var complete = false\n  var sync = true\n\n  // check the length and limit options.\n  // note: we intentionally leave the stream paused,\n  // so users should handle the stream themselves.\n  if (limit !== null && length !== null && length > limit) {\n    return done(createError(413, 'request entity too large', {\n      expected: length,\n      length: length,\n      limit: limit,\n      type: 'entity.too.large'\n    }))\n  }\n\n  // streams1: assert request encoding is buffer.\n  // streams2+: assert the stream encoding is buffer.\n  //   stream._decoder: streams1\n  //   state.encoding: streams2\n  //   state.decoder: streams2, specifically < 0.10.6\n  var state = stream._readableState\n  if (stream._decoder || (state && (state.encoding || state.decoder))) {\n    // developer error\n    return done(createError(500, 'stream encoding should not be set', {\n      type: 'stream.encoding.set'\n    }))\n  }\n\n  if (typeof stream.readable !== 'undefined' && !stream.readable) {\n    return done(createError(500, 'stream is not readable', {\n      type: 'stream.not.readable'\n    }))\n  }\n\n  var received = 0\n  var decoder\n\n  try {\n    decoder = getDecoder(encoding)\n  } catch (err) {\n    return done(err)\n  }\n\n  var buffer = decoder\n    ? ''\n    : []\n\n  // attach listeners\n  stream.on('aborted', onAborted)\n  stream.on('close', cleanup)\n  stream.on('data', onData)\n  stream.on('end', onEnd)\n  stream.on('error', onEnd)\n\n  // mark sync section complete\n  sync = false\n\n  function done () {\n    var args = new Array(arguments.length)\n\n    // copy arguments\n    for (var i = 0; i < args.length; i++) {\n      args[i] = arguments[i]\n    }\n\n    // mark complete\n    complete = true\n\n    if (sync) {\n      process.nextTick(invokeCallback)\n    } else {\n      invokeCallback()\n    }\n\n    function invokeCallback () {\n      cleanup()\n\n      if (args[0]) {\n        // halt the stream on error\n        halt(stream)\n      }\n\n      callback.apply(null, args)\n    }\n  }\n\n  function onAborted () {\n    if (complete) return\n\n    done(createError(400, 'request aborted', {\n      code: 'ECONNABORTED',\n      expected: length,\n      length: length,\n      received: received,\n      type: 'request.aborted'\n    }))\n  }\n\n  function onData (chunk) {\n    if (complete) return\n\n    received += chunk.length\n\n    if (limit !== null && received > limit) {\n      done(createError(413, 'request entity too large', {\n        limit: limit,\n        received: received,\n        type: 'entity.too.large'\n      }))\n    } else if (decoder) {\n      buffer += decoder.write(chunk)\n    } else {\n      buffer.push(chunk)\n    }\n  }\n\n  function onEnd (err) {\n    if (complete) return\n    if (err) return done(err)\n\n    if (length !== null && received !== length) {\n      done(createError(400, 'request size did not match content length', {\n        expected: length,\n        length: length,\n        received: received,\n        type: 'request.size.invalid'\n      }))\n    } else {\n      var string = decoder\n        ? buffer + (decoder.end() || '')\n        : Buffer.concat(buffer)\n      done(null, string)\n    }\n  }\n\n  function cleanup () {\n    buffer = null\n\n    stream.removeListener('aborted', onAborted)\n    stream.removeListener('data', onData)\n    stream.removeListener('end', onEnd)\n    stream.removeListener('error', onEnd)\n    stream.removeListener('close', cleanup)\n  }\n}\n\n/**\n * Try to require async_hooks\n * @private\n */\n\nfunction tryRequireAsyncHooks () {\n  try {\n    return require('async_hooks')\n  } catch (e) {\n    return {}\n  }\n}\n\n/**\n * Wrap function with async resource, if possible.\n * AsyncResource.bind static method backported.\n * @private\n */\n\nfunction wrap (fn) {\n  var res\n\n  // create anonymous resource\n  if (asyncHooks.AsyncResource) {\n    res = new asyncHooks.AsyncResource(fn.name || 'bound-anonymous-fn')\n  }\n\n  // incompatible node.js\n  if (!res || !res.runInAsyncScope) {\n    return fn\n  }\n\n  // return bound function\n  return res.runInAsyncScope.bind(res, fn, null)\n}\n", "\nvar zlib = require('zlib')\n\nmodule.exports = inflate\n\nfunction inflate(stream, options) {\n  if (!stream) {\n    throw new TypeError('argument stream is required')\n  }\n\n  options = options || {}\n\n  var encoding = options.encoding\n    || (stream.headers && stream.headers['content-encoding'])\n    || 'identity'\n  \n  var decompression\n  switch (encoding) {\n  case 'gzip':\n  case 'deflate':\n    delete options.brotli\n    delete options.encoding\n    decompression = zlib.createUnzip(options)\n    break\n  case 'br':\n    if (zlib.createBrotliDecompress) {\n      decompression = zlib.createBrotliDecompress(options.brotli)\n    }\n    break\n  case 'identity':\n    return stream\n  }\n\n  if (!decompression) {\n    var err = new Error('Unsupported Content-Encoding: ' + encoding)\n    err.status = 415\n    throw err\n  }\n\n  return stream.pipe(decompression)\n}\n", "'use strict';\n\n\nconst internals = {\n    suspectRx: /\"(?:_|\\\\u005[Ff])(?:_|\\\\u005[Ff])(?:p|\\\\u0070)(?:r|\\\\u0072)(?:o|\\\\u006[Ff])(?:t|\\\\u0074)(?:o|\\\\u006[Ff])(?:_|\\\\u005[Ff])(?:_|\\\\u005[Ff])\"\\s*\\:/\n};\n\n\nexports.parse = function (text, ...args) {\n\n    // Normalize arguments\n\n    const firstOptions = typeof args[0] === 'object' && args[0];\n    const reviver = args.length > 1 || !firstOptions ? args[0] : undefined;\n    const options = (args.length > 1 && args[1]) || firstOptions || {};\n\n    // Parse normally, allowing exceptions\n\n    const obj = JSON.parse(text, reviver);\n\n    // options.protoAction: 'error' (default) / 'remove' / 'ignore'\n\n    if (options.protoAction === 'ignore') {\n        return obj;\n    }\n\n    // Ignore null and non-objects\n\n    if (!obj ||\n        typeof obj !== 'object') {\n\n        return obj;\n    }\n\n    // Check original string for potential exploit\n\n    if (!text.match(internals.suspectRx)) {\n        return obj;\n    }\n\n    // Scan result for proto keys\n\n    exports.scan(obj, options);\n\n    return obj;\n};\n\n\nexports.scan = function (obj, options = {}) {\n\n    let next = [obj];\n\n    while (next.length) {\n        const nodes = next;\n        next = [];\n\n        for (const node of nodes) {\n            if (Object.prototype.hasOwnProperty.call(node, '__proto__')) {      // Avoid calling node.hasOwnProperty directly\n                if (options.protoAction !== 'remove') {\n                    throw new SyntaxError('Object contains forbidden prototype property');\n                }\n\n                delete node.__proto__;\n            }\n\n            for (const key in node) {\n                const value = node[key];\n                if (value &&\n                    typeof value === 'object') {\n\n                    next.push(node[key]);\n                }\n            }\n        }\n    }\n};\n\n\nexports.safeParse = function (text, reviver) {\n\n    try {\n        return exports.parse(text, reviver);\n    }\n    catch (ignoreError) {\n        return null;\n    }\n};\n", "'use strict';\n\n/**\n * Module dependencies.\n */\n\nexports.clone = function(opts) {\n  const options = {};\n  opts = opts || {};\n  for (const key in opts) {\n    options[key] = opts[key];\n  }\n  return options;\n};\n", "'use strict';\n\n/**\n * Module dependencies.\n */\n\nconst raw = require('raw-body');\nconst inflate = require('inflation');\nconst bourne = require('@hapi/bourne');\nconst utils = require('./utils');\n\n// Allowed whitespace is defined in RFC 7159\n// http://www.rfc-editor.org/rfc/rfc7159.txt\nconst strictJSONReg = /^[\\x20\\x09\\x0a\\x0d]*(\\[|\\{)/;\n\n/**\n * Return a Promise which parses json requests.\n *\n * Pass a node request or an object with `.req`,\n * such as a koa Context.\n *\n * @param {Request} req\n * @param {Options} [opts]\n * @return {Function}\n * @api public\n */\n\nmodule.exports = async function(req, opts) {\n  req = req.req || req;\n  opts = utils.clone(opts);\n\n  // defaults\n  const len = req.headers['content-length'];\n  const encoding = req.headers['content-encoding'] || 'identity';\n  if (len && encoding === 'identity') opts.length = ~~len;\n  opts.encoding = opts.encoding || 'utf8';\n  opts.limit = opts.limit || '1mb';\n  const strict = opts.strict !== false;\n  const protoAction = opts.onProtoPoisoning || 'error';\n\n  const str = await raw(inflate(req), opts);\n  try {\n    const parsed = parse(str);\n    return opts.returnRawBody ? { parsed, raw: str } : parsed;\n  } catch (err) {\n    err.status = 400;\n    err.body = str;\n    throw err;\n  }\n\n  function parse(str) {\n    if (!strict) return str ? bourne.parse(str, { protoAction }) : str;\n    // strict mode always return object\n    if (!str) return {};\n    // strict JSON test\n    if (!strictJSONReg.test(str)) {\n      throw new SyntaxError('invalid JSON, only supports object and array');\n    }\n    return bourne.parse(str, { protoAction });\n  }\n};\n", "'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n    RFC1738: 'RFC1738',\n    RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n    'default': Format.RFC3986,\n    formatters: {\n        RFC1738: function (value) {\n            return replace.call(value, percentTwenties, '+');\n        },\n        RFC3986: function (value) {\n            return String(value);\n        }\n    },\n    RFC1738: Format.RFC1738,\n    RFC3986: Format.RFC3986\n};\n", "'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n    var array = [];\n    for (var i = 0; i < 256; ++i) {\n        array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n    }\n\n    return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n    while (queue.length > 1) {\n        var item = queue.pop();\n        var obj = item.obj[item.prop];\n\n        if (isArray(obj)) {\n            var compacted = [];\n\n            for (var j = 0; j < obj.length; ++j) {\n                if (typeof obj[j] !== 'undefined') {\n                    compacted.push(obj[j]);\n                }\n            }\n\n            item.obj[item.prop] = compacted;\n        }\n    }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n    var obj = options && options.plainObjects ? Object.create(null) : {};\n    for (var i = 0; i < source.length; ++i) {\n        if (typeof source[i] !== 'undefined') {\n            obj[i] = source[i];\n        }\n    }\n\n    return obj;\n};\n\nvar merge = function merge(target, source, options) {\n    /* eslint no-param-reassign: 0 */\n    if (!source) {\n        return target;\n    }\n\n    if (typeof source !== 'object') {\n        if (isArray(target)) {\n            target.push(source);\n        } else if (target && typeof target === 'object') {\n            if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n                target[source] = true;\n            }\n        } else {\n            return [target, source];\n        }\n\n        return target;\n    }\n\n    if (!target || typeof target !== 'object') {\n        return [target].concat(source);\n    }\n\n    var mergeTarget = target;\n    if (isArray(target) && !isArray(source)) {\n        mergeTarget = arrayToObject(target, options);\n    }\n\n    if (isArray(target) && isArray(source)) {\n        source.forEach(function (item, i) {\n            if (has.call(target, i)) {\n                var targetItem = target[i];\n                if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n                    target[i] = merge(targetItem, item, options);\n                } else {\n                    target.push(item);\n                }\n            } else {\n                target[i] = item;\n            }\n        });\n        return target;\n    }\n\n    return Object.keys(source).reduce(function (acc, key) {\n        var value = source[key];\n\n        if (has.call(acc, key)) {\n            acc[key] = merge(acc[key], value, options);\n        } else {\n            acc[key] = value;\n        }\n        return acc;\n    }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n    return Object.keys(source).reduce(function (acc, key) {\n        acc[key] = source[key];\n        return acc;\n    }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n    var strWithoutPlus = str.replace(/\\+/g, ' ');\n    if (charset === 'iso-8859-1') {\n        // unescape never throws, no try...catch needed:\n        return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n    }\n    // utf-8\n    try {\n        return decodeURIComponent(strWithoutPlus);\n    } catch (e) {\n        return strWithoutPlus;\n    }\n};\n\nvar limit = 1024;\n\n/* eslint operator-linebreak: [2, \"before\"] */\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n    // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n    // It has been adapted here for stricter adherence to RFC 3986\n    if (str.length === 0) {\n        return str;\n    }\n\n    var string = str;\n    if (typeof str === 'symbol') {\n        string = Symbol.prototype.toString.call(str);\n    } else if (typeof str !== 'string') {\n        string = String(str);\n    }\n\n    if (charset === 'iso-8859-1') {\n        return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n            return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n        });\n    }\n\n    var out = '';\n    for (var j = 0; j < string.length; j += limit) {\n        var segment = string.length >= limit ? string.slice(j, j + limit) : string;\n        var arr = [];\n\n        for (var i = 0; i < segment.length; ++i) {\n            var c = segment.charCodeAt(i);\n            if (\n                c === 0x2D // -\n                || c === 0x2E // .\n                || c === 0x5F // _\n                || c === 0x7E // ~\n                || (c >= 0x30 && c <= 0x39) // 0-9\n                || (c >= 0x41 && c <= 0x5A) // a-z\n                || (c >= 0x61 && c <= 0x7A) // A-Z\n                || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n            ) {\n                arr[arr.length] = segment.charAt(i);\n                continue;\n            }\n\n            if (c < 0x80) {\n                arr[arr.length] = hexTable[c];\n                continue;\n            }\n\n            if (c < 0x800) {\n                arr[arr.length] = hexTable[0xC0 | (c >> 6)]\n                    + hexTable[0x80 | (c & 0x3F)];\n                continue;\n            }\n\n            if (c < 0xD800 || c >= 0xE000) {\n                arr[arr.length] = hexTable[0xE0 | (c >> 12)]\n                    + hexTable[0x80 | ((c >> 6) & 0x3F)]\n                    + hexTable[0x80 | (c & 0x3F)];\n                continue;\n            }\n\n            i += 1;\n            c = 0x10000 + (((c & 0x3FF) << 10) | (segment.charCodeAt(i) & 0x3FF));\n\n            arr[arr.length] = hexTable[0xF0 | (c >> 18)]\n                + hexTable[0x80 | ((c >> 12) & 0x3F)]\n                + hexTable[0x80 | ((c >> 6) & 0x3F)]\n                + hexTable[0x80 | (c & 0x3F)];\n        }\n\n        out += arr.join('');\n    }\n\n    return out;\n};\n\nvar compact = function compact(value) {\n    var queue = [{ obj: { o: value }, prop: 'o' }];\n    var refs = [];\n\n    for (var i = 0; i < queue.length; ++i) {\n        var item = queue[i];\n        var obj = item.obj[item.prop];\n\n        var keys = Object.keys(obj);\n        for (var j = 0; j < keys.length; ++j) {\n            var key = keys[j];\n            var val = obj[key];\n            if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n                queue.push({ obj: obj, prop: key });\n                refs.push(val);\n            }\n        }\n    }\n\n    compactQueue(queue);\n\n    return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n    return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n    if (!obj || typeof obj !== 'object') {\n        return false;\n    }\n\n    return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n    return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n    if (isArray(val)) {\n        var mapped = [];\n        for (var i = 0; i < val.length; i += 1) {\n            mapped.push(fn(val[i]));\n        }\n        return mapped;\n    }\n    return fn(val);\n};\n\nmodule.exports = {\n    arrayToObject: arrayToObject,\n    assign: assign,\n    combine: combine,\n    compact: compact,\n    decode: decode,\n    encode: encode,\n    isBuffer: isBuffer,\n    isRegExp: isRegExp,\n    maybeMap: maybeMap,\n    merge: merge\n};\n", "'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n    brackets: function brackets(prefix) {\n        return prefix + '[]';\n    },\n    comma: 'comma',\n    indices: function indices(prefix, key) {\n        return prefix + '[' + key + ']';\n    },\n    repeat: function repeat(prefix) {\n        return prefix;\n    }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n    push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n    addQueryPrefix: false,\n    allowDots: false,\n    allowEmptyArrays: false,\n    arrayFormat: 'indices',\n    charset: 'utf-8',\n    charsetSentinel: false,\n    delimiter: '&',\n    encode: true,\n    encodeDotInKeys: false,\n    encoder: utils.encode,\n    encodeValuesOnly: false,\n    format: defaultFormat,\n    formatter: formats.formatters[defaultFormat],\n    // deprecated\n    indices: false,\n    serializeDate: function serializeDate(date) {\n        return toISO.call(date);\n    },\n    skipNulls: false,\n    strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n    return typeof v === 'string'\n        || typeof v === 'number'\n        || typeof v === 'boolean'\n        || typeof v === 'symbol'\n        || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n    object,\n    prefix,\n    generateArrayPrefix,\n    commaRoundTrip,\n    allowEmptyArrays,\n    strictNullHandling,\n    skipNulls,\n    encodeDotInKeys,\n    encoder,\n    filter,\n    sort,\n    allowDots,\n    serializeDate,\n    format,\n    formatter,\n    encodeValuesOnly,\n    charset,\n    sideChannel\n) {\n    var obj = object;\n\n    var tmpSc = sideChannel;\n    var step = 0;\n    var findFlag = false;\n    while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n        // Where object last appeared in the ref tree\n        var pos = tmpSc.get(object);\n        step += 1;\n        if (typeof pos !== 'undefined') {\n            if (pos === step) {\n                throw new RangeError('Cyclic object value');\n            } else {\n                findFlag = true; // Break while\n            }\n        }\n        if (typeof tmpSc.get(sentinel) === 'undefined') {\n            step = 0;\n        }\n    }\n\n    if (typeof filter === 'function') {\n        obj = filter(prefix, obj);\n    } else if (obj instanceof Date) {\n        obj = serializeDate(obj);\n    } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        obj = utils.maybeMap(obj, function (value) {\n            if (value instanceof Date) {\n                return serializeDate(value);\n            }\n            return value;\n        });\n    }\n\n    if (obj === null) {\n        if (strictNullHandling) {\n            return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n        }\n\n        obj = '';\n    }\n\n    if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n        if (encoder) {\n            var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n            return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n        }\n        return [formatter(prefix) + '=' + formatter(String(obj))];\n    }\n\n    var values = [];\n\n    if (typeof obj === 'undefined') {\n        return values;\n    }\n\n    var objKeys;\n    if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        // we need to join elements in\n        if (encodeValuesOnly && encoder) {\n            obj = utils.maybeMap(obj, encoder);\n        }\n        objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n    } else if (isArray(filter)) {\n        objKeys = filter;\n    } else {\n        var keys = Object.keys(obj);\n        objKeys = sort ? keys.sort(sort) : keys;\n    }\n\n    var encodedPrefix = encodeDotInKeys ? prefix.replace(/\\./g, '%2E') : prefix;\n\n    var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + '[]' : encodedPrefix;\n\n    if (allowEmptyArrays && isArray(obj) && obj.length === 0) {\n        return adjustedPrefix + '[]';\n    }\n\n    for (var j = 0; j < objKeys.length; ++j) {\n        var key = objKeys[j];\n        var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n        if (skipNulls && value === null) {\n            continue;\n        }\n\n        var encodedKey = allowDots && encodeDotInKeys ? key.replace(/\\./g, '%2E') : key;\n        var keyPrefix = isArray(obj)\n            ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix\n            : adjustedPrefix + (allowDots ? '.' + encodedKey : '[' + encodedKey + ']');\n\n        sideChannel.set(object, step);\n        var valueSideChannel = getSideChannel();\n        valueSideChannel.set(sentinel, sideChannel);\n        pushToArray(values, stringify(\n            value,\n            keyPrefix,\n            generateArrayPrefix,\n            commaRoundTrip,\n            allowEmptyArrays,\n            strictNullHandling,\n            skipNulls,\n            encodeDotInKeys,\n            generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder,\n            filter,\n            sort,\n            allowDots,\n            serializeDate,\n            format,\n            formatter,\n            encodeValuesOnly,\n            charset,\n            valueSideChannel\n        ));\n    }\n\n    return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n        throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n    }\n\n    if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') {\n        throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided');\n    }\n\n    if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n        throw new TypeError('Encoder has to be a function.');\n    }\n\n    var charset = opts.charset || defaults.charset;\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n\n    var format = formats['default'];\n    if (typeof opts.format !== 'undefined') {\n        if (!has.call(formats.formatters, opts.format)) {\n            throw new TypeError('Unknown format option provided.');\n        }\n        format = opts.format;\n    }\n    var formatter = formats.formatters[format];\n\n    var filter = defaults.filter;\n    if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n        filter = opts.filter;\n    }\n\n    var arrayFormat;\n    if (opts.arrayFormat in arrayPrefixGenerators) {\n        arrayFormat = opts.arrayFormat;\n    } else if ('indices' in opts) {\n        arrayFormat = opts.indices ? 'indices' : 'repeat';\n    } else {\n        arrayFormat = defaults.arrayFormat;\n    }\n\n    if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n        throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n    }\n\n    var allowDots = typeof opts.allowDots === 'undefined' ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n    return {\n        addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n        allowDots: allowDots,\n        allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n        arrayFormat: arrayFormat,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        commaRoundTrip: opts.commaRoundTrip,\n        delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n        encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n        encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys,\n        encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n        encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n        filter: filter,\n        format: format,\n        formatter: formatter,\n        serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n        skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n        sort: typeof opts.sort === 'function' ? opts.sort : null,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n    };\n};\n\nmodule.exports = function (object, opts) {\n    var obj = object;\n    var options = normalizeStringifyOptions(opts);\n\n    var objKeys;\n    var filter;\n\n    if (typeof options.filter === 'function') {\n        filter = options.filter;\n        obj = filter('', obj);\n    } else if (isArray(options.filter)) {\n        filter = options.filter;\n        objKeys = filter;\n    }\n\n    var keys = [];\n\n    if (typeof obj !== 'object' || obj === null) {\n        return '';\n    }\n\n    var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat];\n    var commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip;\n\n    if (!objKeys) {\n        objKeys = Object.keys(obj);\n    }\n\n    if (options.sort) {\n        objKeys.sort(options.sort);\n    }\n\n    var sideChannel = getSideChannel();\n    for (var i = 0; i < objKeys.length; ++i) {\n        var key = objKeys[i];\n\n        if (options.skipNulls && obj[key] === null) {\n            continue;\n        }\n        pushToArray(keys, stringify(\n            obj[key],\n            key,\n            generateArrayPrefix,\n            commaRoundTrip,\n            options.allowEmptyArrays,\n            options.strictNullHandling,\n            options.skipNulls,\n            options.encodeDotInKeys,\n            options.encode ? options.encoder : null,\n            options.filter,\n            options.sort,\n            options.allowDots,\n            options.serializeDate,\n            options.format,\n            options.formatter,\n            options.encodeValuesOnly,\n            options.charset,\n            sideChannel\n        ));\n    }\n\n    var joined = keys.join(options.delimiter);\n    var prefix = options.addQueryPrefix === true ? '?' : '';\n\n    if (options.charsetSentinel) {\n        if (options.charset === 'iso-8859-1') {\n            // encodeURIComponent('&#10003;'), the \"numeric entity\" representation of a checkmark\n            prefix += 'utf8=%26%2310003%3B&';\n        } else {\n            // encodeURIComponent('\u2713')\n            prefix += 'utf8=%E2%9C%93&';\n        }\n    }\n\n    return joined.length > 0 ? prefix + joined : '';\n};\n", "'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n    allowDots: false,\n    allowEmptyArrays: false,\n    allowPrototypes: false,\n    allowSparse: false,\n    arrayLimit: 20,\n    charset: 'utf-8',\n    charsetSentinel: false,\n    comma: false,\n    decodeDotInKeys: false,\n    decoder: utils.decode,\n    delimiter: '&',\n    depth: 5,\n    duplicates: 'combine',\n    ignoreQueryPrefix: false,\n    interpretNumericEntities: false,\n    parameterLimit: 1000,\n    parseArrays: true,\n    plainObjects: false,\n    strictDepth: false,\n    strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n    return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n        return String.fromCharCode(parseInt(numberStr, 10));\n    });\n};\n\nvar parseArrayValue = function (val, options) {\n    if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n        return val.split(',');\n    }\n\n    return val;\n};\n\n// This is what browsers will submit when the \u2713 character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the \u2713 character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('&#10003;')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('\u2713')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n    var obj = { __proto__: null };\n\n    var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n    cleanStr = cleanStr.replace(/%5B/gi, '[').replace(/%5D/gi, ']');\n    var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n    var parts = cleanStr.split(options.delimiter, limit);\n    var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n    var i;\n\n    var charset = options.charset;\n    if (options.charsetSentinel) {\n        for (i = 0; i < parts.length; ++i) {\n            if (parts[i].indexOf('utf8=') === 0) {\n                if (parts[i] === charsetSentinel) {\n                    charset = 'utf-8';\n                } else if (parts[i] === isoSentinel) {\n                    charset = 'iso-8859-1';\n                }\n                skipIndex = i;\n                i = parts.length; // The eslint settings do not allow break;\n            }\n        }\n    }\n\n    for (i = 0; i < parts.length; ++i) {\n        if (i === skipIndex) {\n            continue;\n        }\n        var part = parts[i];\n\n        var bracketEqualsPos = part.indexOf(']=');\n        var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n        var key, val;\n        if (pos === -1) {\n            key = options.decoder(part, defaults.decoder, charset, 'key');\n            val = options.strictNullHandling ? null : '';\n        } else {\n            key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n            val = utils.maybeMap(\n                parseArrayValue(part.slice(pos + 1), options),\n                function (encodedVal) {\n                    return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n                }\n            );\n        }\n\n        if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n            val = interpretNumericEntities(val);\n        }\n\n        if (part.indexOf('[]=') > -1) {\n            val = isArray(val) ? [val] : val;\n        }\n\n        var existing = has.call(obj, key);\n        if (existing && options.duplicates === 'combine') {\n            obj[key] = utils.combine(obj[key], val);\n        } else if (!existing || options.duplicates === 'last') {\n            obj[key] = val;\n        }\n    }\n\n    return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n    var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n    for (var i = chain.length - 1; i >= 0; --i) {\n        var obj;\n        var root = chain[i];\n\n        if (root === '[]' && options.parseArrays) {\n            obj = options.allowEmptyArrays && (leaf === '' || (options.strictNullHandling && leaf === null))\n                ? []\n                : [].concat(leaf);\n        } else {\n            obj = options.plainObjects ? Object.create(null) : {};\n            var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n            var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, '.') : cleanRoot;\n            var index = parseInt(decodedRoot, 10);\n            if (!options.parseArrays && decodedRoot === '') {\n                obj = { 0: leaf };\n            } else if (\n                !isNaN(index)\n                && root !== decodedRoot\n                && String(index) === decodedRoot\n                && index >= 0\n                && (options.parseArrays && index <= options.arrayLimit)\n            ) {\n                obj = [];\n                obj[index] = leaf;\n            } else if (decodedRoot !== '__proto__') {\n                obj[decodedRoot] = leaf;\n            }\n        }\n\n        leaf = obj;\n    }\n\n    return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n    if (!givenKey) {\n        return;\n    }\n\n    // Transform dot notation to bracket notation\n    var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n    // The regex chunks\n\n    var brackets = /(\\[[^[\\]]*])/;\n    var child = /(\\[[^[\\]]*])/g;\n\n    // Get the parent\n\n    var segment = options.depth > 0 && brackets.exec(key);\n    var parent = segment ? key.slice(0, segment.index) : key;\n\n    // Stash the parent if it exists\n\n    var keys = [];\n    if (parent) {\n        // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n        if (!options.plainObjects && has.call(Object.prototype, parent)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        keys.push(parent);\n    }\n\n    // Loop through children appending to the array until we hit depth\n\n    var i = 0;\n    while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n        i += 1;\n        if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n        keys.push(segment[1]);\n    }\n\n    // If there's a remainder, check strictDepth option for throw, else just add whatever is left\n\n    if (segment) {\n        if (options.strictDepth === true) {\n            throw new RangeError('Input depth exceeded depth option of ' + options.depth + ' and strictDepth is true');\n        }\n        keys.push('[' + key.slice(segment.index) + ']');\n    }\n\n    return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n        throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n    }\n\n    if (typeof opts.decodeDotInKeys !== 'undefined' && typeof opts.decodeDotInKeys !== 'boolean') {\n        throw new TypeError('`decodeDotInKeys` option can only be `true` or `false`, when provided');\n    }\n\n    if (opts.decoder !== null && typeof opts.decoder !== 'undefined' && typeof opts.decoder !== 'function') {\n        throw new TypeError('Decoder has to be a function.');\n    }\n\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n    var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n    var duplicates = typeof opts.duplicates === 'undefined' ? defaults.duplicates : opts.duplicates;\n\n    if (duplicates !== 'combine' && duplicates !== 'first' && duplicates !== 'last') {\n        throw new TypeError('The duplicates option must be either combine, first, or last');\n    }\n\n    var allowDots = typeof opts.allowDots === 'undefined' ? opts.decodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n    return {\n        allowDots: allowDots,\n        allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n        allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n        allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n        arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n        decodeDotInKeys: typeof opts.decodeDotInKeys === 'boolean' ? opts.decodeDotInKeys : defaults.decodeDotInKeys,\n        decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n        delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n        // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n        depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n        duplicates: duplicates,\n        ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n        interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n        parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n        parseArrays: opts.parseArrays !== false,\n        plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n        strictDepth: typeof opts.strictDepth === 'boolean' ? !!opts.strictDepth : defaults.strictDepth,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n    };\n};\n\nmodule.exports = function (str, opts) {\n    var options = normalizeParseOptions(opts);\n\n    if (str === '' || str === null || typeof str === 'undefined') {\n        return options.plainObjects ? Object.create(null) : {};\n    }\n\n    var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n    var obj = options.plainObjects ? Object.create(null) : {};\n\n    // Iterate over the keys and setup the new object\n\n    var keys = Object.keys(tempObj);\n    for (var i = 0; i < keys.length; ++i) {\n        var key = keys[i];\n        var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n        obj = utils.merge(obj, newObj, options);\n    }\n\n    if (options.allowSparse === true) {\n        return obj;\n    }\n\n    return utils.compact(obj);\n};\n", "'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n    formats: formats,\n    parse: parse,\n    stringify: stringify\n};\n", "'use strict';\n\n/**\n * Module dependencies.\n */\n\nconst raw = require('raw-body');\nconst inflate = require('inflation');\nconst qs = require('qs');\nconst utils = require('./utils');\n\n/**\n * Return a Promise which parses x-www-form-urlencoded requests.\n *\n * Pass a node request or an object with `.req`,\n * such as a koa Context.\n *\n * @param {Request} req\n * @param {Options} [opts]\n * @return {Function}\n * @api public\n */\n\nmodule.exports = async function(req, opts) {\n  req = req.req || req;\n  opts = utils.clone(opts);\n  const queryString = opts.queryString || {};\n\n  // keep compatibility with qs@4\n  if (queryString.allowDots === undefined) queryString.allowDots = true;\n\n  // defaults\n  const len = req.headers['content-length'];\n  const encoding = req.headers['content-encoding'] || 'identity';\n  if (len && encoding === 'identity') opts.length = ~~len;\n  opts.encoding = opts.encoding || 'utf8';\n  opts.limit = opts.limit || '56kb';\n  opts.qs = opts.qs || qs;\n\n  const str = await raw(inflate(req), opts);\n  try {\n    const parsed = opts.qs.parse(str, queryString);\n    return opts.returnRawBody ? { parsed, raw: str } : parsed;\n  } catch (err) {\n    err.status = 400;\n    err.body = str;\n    throw err;\n  }\n};\n", "'use strict';\n\n/**\n * Module dependencies.\n */\n\nconst raw = require('raw-body');\nconst inflate = require('inflation');\nconst utils = require('./utils');\n\n/**\n * Return a Promise which parses text/plain requests.\n *\n * Pass a node request or an object with `.req`,\n * such as a koa Context.\n *\n * @param {Request} req\n * @param {Options} [opts]\n * @return {Function}\n * @api public\n */\n\nmodule.exports = async function(req, opts) {\n  req = req.req || req;\n  opts = utils.clone(opts);\n\n  // defaults\n  const len = req.headers['content-length'];\n  const encoding = req.headers['content-encoding'] || 'identity';\n  if (len && encoding === 'identity') opts.length = ~~len;\n  opts.encoding = opts.encoding === undefined ? 'utf8' : opts.encoding;\n  opts.limit = opts.limit || '1mb';\n\n  const str = await raw(inflate(req), opts);\n  // ensure return the same format with json / form\n  return opts.returnRawBody ? { parsed: str, raw: str } : str;\n};\n", "'use strict';\n\n/**\n * Module dependencies.\n */\n\nconst typeis = require('type-is');\nconst json = require('./json');\nconst form = require('./form');\nconst text = require('./text');\n\nconst jsonTypes = [ 'json', 'application/*+json', 'application/csp-report' ];\nconst formTypes = [ 'urlencoded' ];\nconst textTypes = [ 'text' ];\n\n/**\n * Return a Promise which parses form and json requests\n * depending on the Content-Type.\n *\n * Pass a node request or an object with `.req`,\n * such as a koa Context.\n *\n * @param {Request} req\n * @param {Options} [opts]\n * @return {Function}\n * @api public\n */\n\nmodule.exports = async function(req, opts) {\n  req = req.req || req;\n  opts = opts || {};\n\n  // json\n  const jsonType = opts.jsonTypes || jsonTypes;\n  if (typeis(req, jsonType)) return json(req, opts);\n\n  // form\n  const formType = opts.formTypes || formTypes;\n  if (typeis(req, formType)) return form(req, opts);\n\n  // text\n  const textType = opts.textTypes || textTypes;\n  if (typeis(req, textType)) return text(req, opts);\n\n  // invalid\n  const type = req.headers['content-type'] || '';\n  const message = type ? 'Unsupported content-type: ' + type : 'Missing content-type';\n  const err = new Error(message);\n  err.status = 415;\n  throw err;\n};\n", "'use strict';\n\nexports = module.exports = require('./lib/any');\nexports.json = require('./lib/json');\nexports.form = require('./lib/form');\nexports.text = require('./lib/text');\n", "/**\n * Internal helpers for u64. BigUint64Array is too slow as per 2025, so we implement it using Uint32Array.\n * @todo re-check https://issues.chromium.org/issues/42212588\n * @module\n */\nconst U32_MASK64 = /* @__PURE__ */ BigInt(2 ** 32 - 1);\nconst _32n = /* @__PURE__ */ BigInt(32);\n\nfunction fromBig(\n  n: bigint,\n  le = false\n): {\n  h: number;\n  l: number;\n} {\n  if (le) return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n  return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\n\nfunction split(lst: bigint[], le = false): Uint32Array[] {\n  const len = lst.length;\n  let Ah = new Uint32Array(len);\n  let Al = new Uint32Array(len);\n  for (let i = 0; i < len; i++) {\n    const { h, l } = fromBig(lst[i], le);\n    [Ah[i], Al[i]] = [h, l];\n  }\n  return [Ah, Al];\n}\n\nconst toBig = (h: number, l: number): bigint => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h: number, _l: number, s: number): number => h >>> s;\nconst shrSL = (h: number, l: number, s: number): number => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h: number, l: number, s: number): number => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h: number, l: number, s: number): number => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h: number, l: number, s: number): number => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h: number, l: number, s: number): number => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (_h: number, l: number): number => l;\nconst rotr32L = (h: number, _l: number): number => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h: number, l: number, s: number): number => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h: number, l: number, s: number): number => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h: number, l: number, s: number): number => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h: number, l: number, s: number): number => (h << (s - 32)) | (l >>> (64 - s));\n\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\nfunction add(\n  Ah: number,\n  Al: number,\n  Bh: number,\n  Bl: number\n): {\n  h: number;\n  l: number;\n} {\n  const l = (Al >>> 0) + (Bl >>> 0);\n  return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al: number, Bl: number, Cl: number): number => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low: number, Ah: number, Bh: number, Ch: number): number =>\n  (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al: number, Bl: number, Cl: number, Dl: number): number =>\n  (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number): number =>\n  (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al: number, Bl: number, Cl: number, Dl: number, El: number): number =>\n  (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number): number =>\n  (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n\n// prettier-ignore\nexport {\n  add, add3H, add3L, add4H, add4L, add5H, add5L, fromBig, rotlBH, rotlBL, rotlSH, rotlSL, rotr32H, rotr32L, rotrBH, rotrBL, rotrSH, rotrSL, shrSH, shrSL, split, toBig\n};\n// prettier-ignore\nconst u64: { fromBig: typeof fromBig; split: typeof split; toBig: (h: number, l: number) => bigint; shrSH: (h: number, _l: number, s: number) => number; shrSL: (h: number, l: number, s: number) => number; rotrSH: (h: number, l: number, s: number) => number; rotrSL: (h: number, l: number, s: number) => number; rotrBH: (h: number, l: number, s: number) => number; rotrBL: (h: number, l: number, s: number) => number; rotr32H: (_h: number, l: number) => number; rotr32L: (h: number, _l: number) => number; rotlSH: (h: number, l: number, s: number) => number; rotlSL: (h: number, l: number, s: number) => number; rotlBH: (h: number, l: number, s: number) => number; rotlBL: (h: number, l: number, s: number) => number; add: typeof add; add3L: (Al: number, Bl: number, Cl: number) => number; add3H: (low: number, Ah: number, Bh: number, Ch: number) => number; add4L: (Al: number, Bl: number, Cl: number, Dl: number) => number; add4H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number) => number; add5H: (low: number, Ah: number, Bh: number, Ch: number, Dh: number, Eh: number) => number; add5L: (Al: number, Bl: number, Cl: number, Dl: number, El: number) => number; } = {\n  fromBig, split, toBig,\n  shrSH, shrSL,\n  rotrSH, rotrSL, rotrBH, rotrBL,\n  rotr32H, rotr32L,\n  rotlSH, rotlSL, rotlBH, rotlBL,\n  add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n", "/**\n * Internal webcrypto alias.\n * We prefer WebCrypto aka globalThis.crypto, which exists in node.js 16+.\n * Falls back to Node.js built-in crypto for Node.js <=v14.\n * See utils.ts for details.\n * @module\n */\n// @ts-ignore\nimport * as nc from 'node:crypto';\nexport const crypto: any =\n  nc && typeof nc === 'object' && 'webcrypto' in nc\n    ? (nc.webcrypto as any)\n    : nc && typeof nc === 'object' && 'randomBytes' in nc\n      ? nc\n      : undefined;\n", "/**\n * Utilities for hex, bytes, CSPRNG.\n * @module\n */\n/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n\n// We use WebCrypto aka globalThis.crypto, which exists in browsers and node.js 16+.\n// node.js versions earlier than v19 don't declare it in global scope.\n// For node.js, package.json#exports field mapping rewrites import\n// from `crypto` to `cryptoNode`, which imports native module.\n// Makes the utils un-importable in browsers without a bundler.\n// Once node.js 18 is deprecated (2025-04-30), we can just drop the import.\nimport { crypto } from '@noble/hashes/crypto';\n\n/** Checks if something is Uint8Array. Be careful: nodejs Buffer will return true. */\nexport function isBytes(a: unknown): a is Uint8Array {\n  return a instanceof Uint8Array || (ArrayBuffer.isView(a) && a.constructor.name === 'Uint8Array');\n}\n\n/** Asserts something is positive integer. */\nexport function anumber(n: number): void {\n  if (!Number.isSafeInteger(n) || n < 0) throw new Error('positive integer expected, got ' + n);\n}\n\n/** Asserts something is Uint8Array. */\nexport function abytes(b: Uint8Array | undefined, ...lengths: number[]): void {\n  if (!isBytes(b)) throw new Error('Uint8Array expected');\n  if (lengths.length > 0 && !lengths.includes(b.length))\n    throw new Error('Uint8Array expected of length ' + lengths + ', got length=' + b.length);\n}\n\n/** Asserts something is hash */\nexport function ahash(h: IHash): void {\n  if (typeof h !== 'function' || typeof h.create !== 'function')\n    throw new Error('Hash should be wrapped by utils.createHasher');\n  anumber(h.outputLen);\n  anumber(h.blockLen);\n}\n\n/** Asserts a hash instance has not been destroyed / finished */\nexport function aexists(instance: any, checkFinished = true): void {\n  if (instance.destroyed) throw new Error('Hash instance has been destroyed');\n  if (checkFinished && instance.finished) throw new Error('Hash#digest() has already been called');\n}\n\n/** Asserts output is properly-sized byte array */\nexport function aoutput(out: any, instance: any): void {\n  abytes(out);\n  const min = instance.outputLen;\n  if (out.length < min) {\n    throw new Error('digestInto() expects output buffer of length at least ' + min);\n  }\n}\n\n/** Generic type encompassing 8/16/32-byte arrays - but not 64-byte. */\n// prettier-ignore\nexport type TypedArray = Int8Array | Uint8ClampedArray | Uint8Array |\n  Uint16Array | Int16Array | Uint32Array | Int32Array;\n\n/** Cast u8 / u16 / u32 to u8. */\nexport function u8(arr: TypedArray): Uint8Array {\n  return new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n\n/** Cast u8 / u16 / u32 to u32. */\nexport function u32(arr: TypedArray): Uint32Array {\n  return new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n}\n\n/** Zeroize a byte array. Warning: JS provides no guarantees. */\nexport function clean(...arrays: TypedArray[]): void {\n  for (let i = 0; i < arrays.length; i++) {\n    arrays[i].fill(0);\n  }\n}\n\n/** Create DataView of an array for easy byte-level manipulation. */\nexport function createView(arr: TypedArray): DataView {\n  return new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n}\n\n/** The rotate right (circular right shift) operation for uint32 */\nexport function rotr(word: number, shift: number): number {\n  return (word << (32 - shift)) | (word >>> shift);\n}\n\n/** The rotate left (circular left shift) operation for uint32 */\nexport function rotl(word: number, shift: number): number {\n  return (word << shift) | ((word >>> (32 - shift)) >>> 0);\n}\n\n/** Is current platform little-endian? Most are. Big-Endian platform: IBM */\nexport const isLE: boolean = /* @__PURE__ */ (() =>\n  new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44)();\n\n/** The byte swap operation for uint32 */\nexport function byteSwap(word: number): number {\n  return (\n    ((word << 24) & 0xff000000) |\n    ((word << 8) & 0xff0000) |\n    ((word >>> 8) & 0xff00) |\n    ((word >>> 24) & 0xff)\n  );\n}\n/** Conditionally byte swap if on a big-endian platform */\nexport const swap8IfBE: (n: number) => number = isLE\n  ? (n: number) => n\n  : (n: number) => byteSwap(n);\n\n/** @deprecated */\nexport const byteSwapIfBE: typeof swap8IfBE = swap8IfBE;\n/** In place byte swap for Uint32Array */\nexport function byteSwap32(arr: Uint32Array): Uint32Array {\n  for (let i = 0; i < arr.length; i++) {\n    arr[i] = byteSwap(arr[i]);\n  }\n  return arr;\n}\n\nexport const swap32IfBE: (u: Uint32Array) => Uint32Array = isLE\n  ? (u: Uint32Array) => u\n  : byteSwap32;\n\n// Built-in hex conversion https://caniuse.com/mdn-javascript_builtins_uint8array_fromhex\nconst hasHexBuiltin: boolean = /* @__PURE__ */ (() =>\n  // @ts-ignore\n  typeof Uint8Array.from([]).toHex === 'function' && typeof Uint8Array.fromHex === 'function')();\n\n// Array where index 0xf0 (240) is mapped to string 'f0'\nconst hexes = /* @__PURE__ */ Array.from({ length: 256 }, (_, i) =>\n  i.toString(16).padStart(2, '0')\n);\n\n/**\n * Convert byte array to hex string. Uses built-in function, when available.\n * @example bytesToHex(Uint8Array.from([0xca, 0xfe, 0x01, 0x23])) // 'cafe0123'\n */\nexport function bytesToHex(bytes: Uint8Array): string {\n  abytes(bytes);\n  // @ts-ignore\n  if (hasHexBuiltin) return bytes.toHex();\n  // pre-caching improves the speed 6x\n  let hex = '';\n  for (let i = 0; i < bytes.length; i++) {\n    hex += hexes[bytes[i]];\n  }\n  return hex;\n}\n\n// We use optimized technique to convert hex string to byte array\nconst asciis = { _0: 48, _9: 57, A: 65, F: 70, a: 97, f: 102 } as const;\nfunction asciiToBase16(ch: number): number | undefined {\n  if (ch >= asciis._0 && ch <= asciis._9) return ch - asciis._0; // '2' => 50-48\n  if (ch >= asciis.A && ch <= asciis.F) return ch - (asciis.A - 10); // 'B' => 66-(65-10)\n  if (ch >= asciis.a && ch <= asciis.f) return ch - (asciis.a - 10); // 'b' => 98-(97-10)\n  return;\n}\n\n/**\n * Convert hex string to byte array. Uses built-in function, when available.\n * @example hexToBytes('cafe0123') // Uint8Array.from([0xca, 0xfe, 0x01, 0x23])\n */\nexport function hexToBytes(hex: string): Uint8Array {\n  if (typeof hex !== 'string') throw new Error('hex string expected, got ' + typeof hex);\n  // @ts-ignore\n  if (hasHexBuiltin) return Uint8Array.fromHex(hex);\n  const hl = hex.length;\n  const al = hl / 2;\n  if (hl % 2) throw new Error('hex string expected, got unpadded hex of length ' + hl);\n  const array = new Uint8Array(al);\n  for (let ai = 0, hi = 0; ai < al; ai++, hi += 2) {\n    const n1 = asciiToBase16(hex.charCodeAt(hi));\n    const n2 = asciiToBase16(hex.charCodeAt(hi + 1));\n    if (n1 === undefined || n2 === undefined) {\n      const char = hex[hi] + hex[hi + 1];\n      throw new Error('hex string expected, got non-hex character \"' + char + '\" at index ' + hi);\n    }\n    array[ai] = n1 * 16 + n2; // multiply first octet, e.g. 'a3' => 10*16+3 => 160 + 3 => 163\n  }\n  return array;\n}\n\n/**\n * There is no setImmediate in browser and setTimeout is slow.\n * Call of async fn will return Promise, which will be fullfiled only on\n * next scheduler queue processing step and this is exactly what we need.\n */\nexport const nextTick = async (): Promise<void> => {};\n\n/** Returns control to thread each 'tick' ms to avoid blocking. */\nexport async function asyncLoop(\n  iters: number,\n  tick: number,\n  cb: (i: number) => void\n): Promise<void> {\n  let ts = Date.now();\n  for (let i = 0; i < iters; i++) {\n    cb(i);\n    // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n    const diff = Date.now() - ts;\n    if (diff >= 0 && diff < tick) continue;\n    await nextTick();\n    ts += diff;\n  }\n}\n\n// Global symbols, but ts doesn't see them: https://github.com/microsoft/TypeScript/issues/31535\ndeclare const TextEncoder: any;\ndeclare const TextDecoder: any;\n\n/**\n * Converts string to bytes using UTF8 encoding.\n * @example utf8ToBytes('abc') // Uint8Array.from([97, 98, 99])\n */\nexport function utf8ToBytes(str: string): Uint8Array {\n  if (typeof str !== 'string') throw new Error('string expected');\n  return new Uint8Array(new TextEncoder().encode(str)); // https://bugzil.la/1681809\n}\n\n/**\n * Converts bytes to string using UTF8 encoding.\n * @example bytesToUtf8(Uint8Array.from([97, 98, 99])) // 'abc'\n */\nexport function bytesToUtf8(bytes: Uint8Array): string {\n  return new TextDecoder().decode(bytes);\n}\n\n/** Accepted input of hash functions. Strings are converted to byte arrays. */\nexport type Input = string | Uint8Array;\n/**\n * Normalizes (non-hex) string or Uint8Array to Uint8Array.\n * Warning: when Uint8Array is passed, it would NOT get copied.\n * Keep in mind for future mutable operations.\n */\nexport function toBytes(data: Input): Uint8Array {\n  if (typeof data === 'string') data = utf8ToBytes(data);\n  abytes(data);\n  return data;\n}\n\n/** KDFs can accept string or Uint8Array for user convenience. */\nexport type KDFInput = string | Uint8Array;\n/**\n * Helper for KDFs: consumes uint8array or string.\n * When string is passed, does utf8 decoding, using TextDecoder.\n */\nexport function kdfInputToBytes(data: KDFInput): Uint8Array {\n  if (typeof data === 'string') data = utf8ToBytes(data);\n  abytes(data);\n  return data;\n}\n\n/** Copies several Uint8Arrays into one. */\nexport function concatBytes(...arrays: Uint8Array[]): Uint8Array {\n  let sum = 0;\n  for (let i = 0; i < arrays.length; i++) {\n    const a = arrays[i];\n    abytes(a);\n    sum += a.length;\n  }\n  const res = new Uint8Array(sum);\n  for (let i = 0, pad = 0; i < arrays.length; i++) {\n    const a = arrays[i];\n    res.set(a, pad);\n    pad += a.length;\n  }\n  return res;\n}\n\ntype EmptyObj = {};\nexport function checkOpts<T1 extends EmptyObj, T2 extends EmptyObj>(\n  defaults: T1,\n  opts?: T2\n): T1 & T2 {\n  if (opts !== undefined && {}.toString.call(opts) !== '[object Object]')\n    throw new Error('options should be object or undefined');\n  const merged = Object.assign(defaults, opts);\n  return merged as T1 & T2;\n}\n\n/** Hash interface. */\nexport type IHash = {\n  (data: Uint8Array): Uint8Array;\n  blockLen: number;\n  outputLen: number;\n  create: any;\n};\n\n/** For runtime check if class implements interface */\nexport abstract class Hash<T extends Hash<T>> {\n  abstract blockLen: number; // Bytes per block\n  abstract outputLen: number; // Bytes in output\n  abstract update(buf: Input): this;\n  // Writes digest into buf\n  abstract digestInto(buf: Uint8Array): void;\n  abstract digest(): Uint8Array;\n  /**\n   * Resets internal state. Makes Hash instance unusable.\n   * Reset is impossible for keyed hashes if key is consumed into state. If digest is not consumed\n   * by user, they will need to manually call `destroy()` when zeroing is necessary.\n   */\n  abstract destroy(): void;\n  /**\n   * Clones hash instance. Unsafe: doesn't check whether `to` is valid. Can be used as `clone()`\n   * when no options are passed.\n   * Reasons to use `_cloneInto` instead of clone: 1) performance 2) reuse instance => all internal\n   * buffers are overwritten => causes buffer overwrite which is used for digest in some cases.\n   * There are no guarantees for clean-up because it's impossible in JS.\n   */\n  abstract _cloneInto(to?: T): T;\n  // Safe version that clones internal state\n  abstract clone(): T;\n}\n\n/**\n * XOF: streaming API to read digest in chunks.\n * Same as 'squeeze' in keccak/k12 and 'seek' in blake3, but more generic name.\n * When hash used in XOF mode it is up to user to call '.destroy' afterwards, since we cannot\n * destroy state, next call can require more bytes.\n */\nexport type HashXOF<T extends Hash<T>> = Hash<T> & {\n  xof(bytes: number): Uint8Array; // Read 'bytes' bytes from digest stream\n  xofInto(buf: Uint8Array): Uint8Array; // read buf.length bytes from digest stream into buf\n};\n\n/** Hash function */\nexport type CHash = ReturnType<typeof createHasher>;\n/** Hash function with output */\nexport type CHashO = ReturnType<typeof createOptHasher>;\n/** XOF with output */\nexport type CHashXO = ReturnType<typeof createXOFer>;\n\n/** Wraps hash function, creating an interface on top of it */\nexport function createHasher<T extends Hash<T>>(\n  hashCons: () => Hash<T>\n): {\n  (msg: Input): Uint8Array;\n  outputLen: number;\n  blockLen: number;\n  create(): Hash<T>;\n} {\n  const hashC = (msg: Input): Uint8Array => hashCons().update(toBytes(msg)).digest();\n  const tmp = hashCons();\n  hashC.outputLen = tmp.outputLen;\n  hashC.blockLen = tmp.blockLen;\n  hashC.create = () => hashCons();\n  return hashC;\n}\n\nexport function createOptHasher<H extends Hash<H>, T extends Object>(\n  hashCons: (opts?: T) => Hash<H>\n): {\n  (msg: Input, opts?: T): Uint8Array;\n  outputLen: number;\n  blockLen: number;\n  create(opts?: T): Hash<H>;\n} {\n  const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n  const tmp = hashCons({} as T);\n  hashC.outputLen = tmp.outputLen;\n  hashC.blockLen = tmp.blockLen;\n  hashC.create = (opts?: T) => hashCons(opts);\n  return hashC;\n}\n\nexport function createXOFer<H extends HashXOF<H>, T extends Object>(\n  hashCons: (opts?: T) => HashXOF<H>\n): {\n  (msg: Input, opts?: T): Uint8Array;\n  outputLen: number;\n  blockLen: number;\n  create(opts?: T): HashXOF<H>;\n} {\n  const hashC = (msg: Input, opts?: T): Uint8Array => hashCons(opts).update(toBytes(msg)).digest();\n  const tmp = hashCons({} as T);\n  hashC.outputLen = tmp.outputLen;\n  hashC.blockLen = tmp.blockLen;\n  hashC.create = (opts?: T) => hashCons(opts);\n  return hashC;\n}\nexport const wrapConstructor: typeof createHasher = createHasher;\nexport const wrapConstructorWithOpts: typeof createOptHasher = createOptHasher;\nexport const wrapXOFConstructorWithOpts: typeof createXOFer = createXOFer;\n\n/** Cryptographically secure PRNG. Uses internal OS-level `crypto.getRandomValues`. */\nexport function randomBytes(bytesLength = 32): Uint8Array {\n  if (crypto && typeof crypto.getRandomValues === 'function') {\n    return crypto.getRandomValues(new Uint8Array(bytesLength));\n  }\n  // Legacy Node.js compatibility\n  if (crypto && typeof crypto.randomBytes === 'function') {\n    return Uint8Array.from(crypto.randomBytes(bytesLength));\n  }\n  throw new Error('crypto.getRandomValues must be defined');\n}\n", "/**\n * SHA3 (keccak) hash function, based on a new \"Sponge function\" design.\n * Different from older hashes, the internal state is bigger than output size.\n *\n * Check out [FIPS-202](https://nvlpubs.nist.gov/nistpubs/FIPS/NIST.FIPS.202.pdf),\n * [Website](https://keccak.team/keccak.html),\n * [the differences between SHA-3 and Keccak](https://crypto.stackexchange.com/questions/15727/what-are-the-key-differences-between-the-draft-sha-3-standard-and-the-keccak-sub).\n *\n * Check out `sha3-addons` module for cSHAKE, k12, and others.\n * @module\n */\nimport { rotlBH, rotlBL, rotlSH, rotlSL, split } from './_u64.ts';\n// prettier-ignore\nimport {\n  abytes, aexists, anumber, aoutput,\n  clean, createHasher, createXOFer, Hash,\n  swap32IfBE,\n  toBytes, u32,\n  type CHash, type CHashXO, type HashXOF, type Input\n} from './utils.ts';\n\n// No __PURE__ annotations in sha3 header:\n// EVERYTHING is in fact used on every export.\n// Various per round constants calculations\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _7n = BigInt(7);\nconst _256n = BigInt(256);\nconst _0x71n = BigInt(0x71);\nconst SHA3_PI: number[] = [];\nconst SHA3_ROTL: number[] = [];\nconst _SHA3_IOTA: bigint[] = [];\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n  // Pi\n  [x, y] = [y, (2 * x + 3 * y) % 5];\n  SHA3_PI.push(2 * (5 * y + x));\n  // Rotational\n  SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n  // Iota\n  let t = _0n;\n  for (let j = 0; j < 7; j++) {\n    R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n    if (R & _2n) t ^= _1n << ((_1n << /* @__PURE__ */ BigInt(j)) - _1n);\n  }\n  _SHA3_IOTA.push(t);\n}\nconst IOTAS = split(_SHA3_IOTA, true);\nconst SHA3_IOTA_H = IOTAS[0];\nconst SHA3_IOTA_L = IOTAS[1];\n\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h: number, l: number, s: number) => (s > 32 ? rotlBH(h, l, s) : rotlSH(h, l, s));\nconst rotlL = (h: number, l: number, s: number) => (s > 32 ? rotlBL(h, l, s) : rotlSL(h, l, s));\n\n/** `keccakf1600` internal function, additionally allows to adjust round count. */\nexport function keccakP(s: Uint32Array, rounds: number = 24): void {\n  const B = new Uint32Array(5 * 2);\n  // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n  for (let round = 24 - rounds; round < 24; round++) {\n    // Theta \u03B8\n    for (let x = 0; x < 10; x++) B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n    for (let x = 0; x < 10; x += 2) {\n      const idx1 = (x + 8) % 10;\n      const idx0 = (x + 2) % 10;\n      const B0 = B[idx0];\n      const B1 = B[idx0 + 1];\n      const Th = rotlH(B0, B1, 1) ^ B[idx1];\n      const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n      for (let y = 0; y < 50; y += 10) {\n        s[x + y] ^= Th;\n        s[x + y + 1] ^= Tl;\n      }\n    }\n    // Rho (\u03C1) and Pi (\u03C0)\n    let curH = s[2];\n    let curL = s[3];\n    for (let t = 0; t < 24; t++) {\n      const shift = SHA3_ROTL[t];\n      const Th = rotlH(curH, curL, shift);\n      const Tl = rotlL(curH, curL, shift);\n      const PI = SHA3_PI[t];\n      curH = s[PI];\n      curL = s[PI + 1];\n      s[PI] = Th;\n      s[PI + 1] = Tl;\n    }\n    // Chi (\u03C7)\n    for (let y = 0; y < 50; y += 10) {\n      for (let x = 0; x < 10; x++) B[x] = s[y + x];\n      for (let x = 0; x < 10; x++) s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n    }\n    // Iota (\u03B9)\n    s[0] ^= SHA3_IOTA_H[round];\n    s[1] ^= SHA3_IOTA_L[round];\n  }\n  clean(B);\n}\n\n/** Keccak sponge function. */\nexport class Keccak extends Hash<Keccak> implements HashXOF<Keccak> {\n  protected state: Uint8Array;\n  protected pos = 0;\n  protected posOut = 0;\n  protected finished = false;\n  protected state32: Uint32Array;\n  protected destroyed = false;\n\n  public blockLen: number;\n  public suffix: number;\n  public outputLen: number;\n  protected enableXOF = false;\n  protected rounds: number;\n\n  // NOTE: we accept arguments in bytes instead of bits here.\n  constructor(\n    blockLen: number,\n    suffix: number,\n    outputLen: number,\n    enableXOF = false,\n    rounds: number = 24\n  ) {\n    super();\n    this.blockLen = blockLen;\n    this.suffix = suffix;\n    this.outputLen = outputLen;\n    this.enableXOF = enableXOF;\n    this.rounds = rounds;\n    // Can be passed from user as dkLen\n    anumber(outputLen);\n    // 1600 = 5x5 matrix of 64bit.  1600 bits === 200 bytes\n    // 0 < blockLen < 200\n    if (!(0 < blockLen && blockLen < 200))\n      throw new Error('only keccak-f1600 function is supported');\n    this.state = new Uint8Array(200);\n    this.state32 = u32(this.state);\n  }\n  clone(): Keccak {\n    return this._cloneInto();\n  }\n  protected keccak(): void {\n    swap32IfBE(this.state32);\n    keccakP(this.state32, this.rounds);\n    swap32IfBE(this.state32);\n    this.posOut = 0;\n    this.pos = 0;\n  }\n  update(data: Input): this {\n    aexists(this);\n    data = toBytes(data);\n    abytes(data);\n    const { blockLen, state } = this;\n    const len = data.length;\n    for (let pos = 0; pos < len; ) {\n      const take = Math.min(blockLen - this.pos, len - pos);\n      for (let i = 0; i < take; i++) state[this.pos++] ^= data[pos++];\n      if (this.pos === blockLen) this.keccak();\n    }\n    return this;\n  }\n  protected finish(): void {\n    if (this.finished) return;\n    this.finished = true;\n    const { state, suffix, pos, blockLen } = this;\n    // Do the padding\n    state[pos] ^= suffix;\n    if ((suffix & 0x80) !== 0 && pos === blockLen - 1) this.keccak();\n    state[blockLen - 1] ^= 0x80;\n    this.keccak();\n  }\n  protected writeInto(out: Uint8Array): Uint8Array {\n    aexists(this, false);\n    abytes(out);\n    this.finish();\n    const bufferOut = this.state;\n    const { blockLen } = this;\n    for (let pos = 0, len = out.length; pos < len; ) {\n      if (this.posOut >= blockLen) this.keccak();\n      const take = Math.min(blockLen - this.posOut, len - pos);\n      out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n      this.posOut += take;\n      pos += take;\n    }\n    return out;\n  }\n  xofInto(out: Uint8Array): Uint8Array {\n    // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n    if (!this.enableXOF) throw new Error('XOF is not possible for this instance');\n    return this.writeInto(out);\n  }\n  xof(bytes: number): Uint8Array {\n    anumber(bytes);\n    return this.xofInto(new Uint8Array(bytes));\n  }\n  digestInto(out: Uint8Array): Uint8Array {\n    aoutput(out, this);\n    if (this.finished) throw new Error('digest() was already called');\n    this.writeInto(out);\n    this.destroy();\n    return out;\n  }\n  digest(): Uint8Array {\n    return this.digestInto(new Uint8Array(this.outputLen));\n  }\n  destroy(): void {\n    this.destroyed = true;\n    clean(this.state);\n  }\n  _cloneInto(to?: Keccak): Keccak {\n    const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n    to ||= new Keccak(blockLen, suffix, outputLen, enableXOF, rounds);\n    to.state32.set(this.state32);\n    to.pos = this.pos;\n    to.posOut = this.posOut;\n    to.finished = this.finished;\n    to.rounds = rounds;\n    // Suffix can change in cSHAKE\n    to.suffix = suffix;\n    to.outputLen = outputLen;\n    to.enableXOF = enableXOF;\n    to.destroyed = this.destroyed;\n    return to;\n  }\n}\n\nconst gen = (suffix: number, blockLen: number, outputLen: number) =>\n  createHasher(() => new Keccak(blockLen, suffix, outputLen));\n\n/** SHA3-224 hash function. */\nexport const sha3_224: CHash = /* @__PURE__ */ (() => gen(0x06, 144, 224 / 8))();\n/** SHA3-256 hash function. Different from keccak-256. */\nexport const sha3_256: CHash = /* @__PURE__ */ (() => gen(0x06, 136, 256 / 8))();\n/** SHA3-384 hash function. */\nexport const sha3_384: CHash = /* @__PURE__ */ (() => gen(0x06, 104, 384 / 8))();\n/** SHA3-512 hash function. */\nexport const sha3_512: CHash = /* @__PURE__ */ (() => gen(0x06, 72, 512 / 8))();\n\n/** keccak-224 hash function. */\nexport const keccak_224: CHash = /* @__PURE__ */ (() => gen(0x01, 144, 224 / 8))();\n/** keccak-256 hash function. Different from SHA3-256. */\nexport const keccak_256: CHash = /* @__PURE__ */ (() => gen(0x01, 136, 256 / 8))();\n/** keccak-384 hash function. */\nexport const keccak_384: CHash = /* @__PURE__ */ (() => gen(0x01, 104, 384 / 8))();\n/** keccak-512 hash function. */\nexport const keccak_512: CHash = /* @__PURE__ */ (() => gen(0x01, 72, 512 / 8))();\n\nexport type ShakeOpts = { dkLen?: number };\n\nconst genShake = (suffix: number, blockLen: number, outputLen: number) =>\n  createXOFer<HashXOF<Keccak>, ShakeOpts>(\n    (opts: ShakeOpts = {}) =>\n      new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true)\n  );\n\n/** SHAKE128 XOF with 128-bit security. */\nexport const shake128: CHashXO = /* @__PURE__ */ (() => genShake(0x1f, 168, 128 / 8))();\n/** SHAKE256 XOF with 256-bit security. */\nexport const shake256: CHashXO = /* @__PURE__ */ (() => genShake(0x1f, 136, 256 / 8))();\n", "/* global global, window, module */\nconst { sha3_512: sha3 } = require(\"@noble/hashes/sha3\");\n\nconst defaultLength = 24;\nconst bigLength = 32;\n\nconst createEntropy = (length = 4, random = Math.random) => {\n  let entropy = \"\";\n\n  while (entropy.length < length) {\n    entropy = entropy + Math.floor(random() * 36).toString(36);\n  }\n  return entropy;\n};\n\n/*\n * Adapted from https://github.com/juanelas/bigint-conversion\n * MIT License Copyright (c) 2018 Juan Hern\u00E1ndez Serrano\n */\nfunction bufToBigInt(buf) {\n  let bits = 8n;\n\n  let value = 0n;\n  for (const i of buf.values()) {\n    const bi = BigInt(i);\n    value = (value << bits) + bi;\n  }\n  return value;\n}\n\nconst hash = (input = \"\") => {\n  // Drop the first character because it will bias the histogram\n  // to the left.\n  return bufToBigInt(sha3(input)).toString(36).slice(1);\n};\n\nconst alphabet = Array.from({ length: 26 }, (x, i) =>\n  String.fromCharCode(i + 97)\n);\n\nconst randomLetter = (random) =>\n  alphabet[Math.floor(random() * alphabet.length)];\n\n/*\nThis is a fingerprint of the host environment. It is used to help\nprevent collisions when generating ids in a distributed system.\nIf no global object is available, you can pass in your own, or fall back\non a random string.\n*/\nconst createFingerprint = ({\n  globalObj = typeof global !== \"undefined\"\n    ? global\n    : typeof window !== \"undefined\"\n    ? window\n    : {},\n  random = Math.random,\n} = {}) => {\n  const globals = Object.keys(globalObj).toString();\n  const sourceString = globals.length\n    ? globals + createEntropy(bigLength, random)\n    : createEntropy(bigLength, random);\n\n  return hash(sourceString).substring(0, bigLength);\n};\n\nconst createCounter = (count) => () => {\n  return count++;\n};\n\n// ~22k hosts before 50% chance of initial counter collision\n// with a remaining counter range of 9.0e+15 in JavaScript.\nconst initialCountMax = 476782367;\n\nconst init = ({\n  // Fallback if the user does not pass in a CSPRNG. This should be OK\n  // because we don't rely solely on the random number generator for entropy.\n  // We also use the host fingerprint, current time, and a session counter.\n  random = Math.random,\n  counter = createCounter(Math.floor(random() * initialCountMax)),\n  length = defaultLength,\n  fingerprint = createFingerprint({ random }),\n} = {}) => {\n  return function cuid2() {\n    const firstLetter = randomLetter(random);\n\n    // If we're lucky, the `.toString(36)` calls may reduce hashing rounds\n    // by shortening the input to the hash function a little.\n    const time = Date.now().toString(36);\n    const count = counter().toString(36);\n\n    // The salt should be long enough to be globally unique across the full\n    // length of the hash. For simplicity, we use the same length as the\n    // intended id output.\n    const salt = createEntropy(length, random);\n    const hashInput = `${time + salt + count + fingerprint}`;\n\n    return `${firstLetter + hash(hashInput).substring(1, length)}`;\n  };\n};\n\nconst createId = init();\n\nconst isCuid = (id, { minLength = 2, maxLength = bigLength } = {}) => {\n  const length = id.length;\n  const regex = /^[0-9a-z]+$/;\n\n  try {\n    if (\n      typeof id === \"string\" &&\n      length >= minLength &&\n      length <= maxLength &&\n      regex.test(id)\n    )\n      return true;\n  } finally {\n  }\n\n  return false;\n};\n\nmodule.exports.getConstants = () => ({ defaultLength, bigLength });\nmodule.exports.init = init;\nmodule.exports.createId = createId;\nmodule.exports.bufToBigInt = bufToBigInt;\nmodule.exports.createCounter = createCounter;\nmodule.exports.createFingerprint = createFingerprint;\nmodule.exports.isCuid = isCuid;\n", "const { createId, init, getConstants, isCuid } = require(\"./src/index\");\n\nmodule.exports.createId = createId;\nmodule.exports.init = init;\nmodule.exports.getConstants = getConstants;\nmodule.exports.isCuid = isCuid;\n", "// Returns a wrapper function that returns a wrapped callback\n// The wrapper function should do some stuff, and return a\n// presumably different callback function.\n// This makes sure that own properties are retained, so that\n// decorations and such are not lost along the way.\nmodule.exports = wrappy\nfunction wrappy (fn, cb) {\n  if (fn && cb) return wrappy(fn)(cb)\n\n  if (typeof fn !== 'function')\n    throw new TypeError('need wrapper function')\n\n  Object.keys(fn).forEach(function (k) {\n    wrapper[k] = fn[k]\n  })\n\n  return wrapper\n\n  function wrapper() {\n    var args = new Array(arguments.length)\n    for (var i = 0; i < args.length; i++) {\n      args[i] = arguments[i]\n    }\n    var ret = fn.apply(this, args)\n    var cb = args[args.length-1]\n    if (typeof ret === 'function' && ret !== cb) {\n      Object.keys(cb).forEach(function (k) {\n        ret[k] = cb[k]\n      })\n    }\n    return ret\n  }\n}\n", "var wrappy = require('wrappy')\nmodule.exports = wrappy(dezalgo)\n\nvar asap = require('asap')\n\nfunction dezalgo (cb) {\n  var sync = true\n  asap(function () {\n    sync = false\n  })\n\n  return function zalgoSafe() {\n    var args = arguments\n    var me = this\n    if (sync)\n      asap(function() {\n        cb.apply(me, args)\n      })\n    else\n      cb.apply(me, args)\n  }\n}\n", "var wrappy = require('wrappy')\nmodule.exports = wrappy(once)\nmodule.exports.strict = wrappy(onceStrict)\n\nonce.proto = once(function () {\n  Object.defineProperty(Function.prototype, 'once', {\n    value: function () {\n      return once(this)\n    },\n    configurable: true\n  })\n\n  Object.defineProperty(Function.prototype, 'onceStrict', {\n    value: function () {\n      return onceStrict(this)\n    },\n    configurable: true\n  })\n})\n\nfunction once (fn) {\n  var f = function () {\n    if (f.called) return f.value\n    f.called = true\n    return f.value = fn.apply(this, arguments)\n  }\n  f.called = false\n  return f\n}\n\nfunction onceStrict (fn) {\n  var f = function () {\n    if (f.called)\n      throw new Error(f.onceError)\n    f.called = true\n    return f.value = fn.apply(this, arguments)\n  }\n  var name = fn.name || 'Function wrapped with `once`'\n  f.onceError = name + \" shouldn't be called more than once\"\n  f.called = false\n  return f\n}\n", "const escape = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;',\n  \"'\": '&#x27;',\n  '`': '&#x60;',\n  '=': '&#x3D;'\n};\n\nconst badChars = /[&<>\"'`=]/g,\n  possible = /[&<>\"'`=]/;\n\nfunction escapeChar(chr) {\n  return escape[chr];\n}\n\nexport function extend(obj /* , ...source */) {\n  for (let i = 1; i < arguments.length; i++) {\n    for (let key in arguments[i]) {\n      if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {\n        obj[key] = arguments[i][key];\n      }\n    }\n  }\n\n  return obj;\n}\n\nexport let toString = Object.prototype.toString;\n\n// Sourced from lodash\n// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\n/* eslint-disable func-style */\nlet isFunction = function(value) {\n  return typeof value === 'function';\n};\n// fallback for older versions of Chrome and Safari\n/* istanbul ignore next */\nif (isFunction(/x/)) {\n  isFunction = function(value) {\n    return (\n      typeof value === 'function' &&\n      toString.call(value) === '[object Function]'\n    );\n  };\n}\nexport { isFunction };\n/* eslint-enable func-style */\n\n/* istanbul ignore next */\nexport const isArray =\n  Array.isArray ||\n  function(value) {\n    return value && typeof value === 'object'\n      ? toString.call(value) === '[object Array]'\n      : false;\n  };\n\n// Older IE versions do not directly support indexOf so we must implement our own, sadly.\nexport function indexOf(array, value) {\n  for (let i = 0, len = array.length; i < len; i++) {\n    if (array[i] === value) {\n      return i;\n    }\n  }\n  return -1;\n}\n\nexport function escapeExpression(string) {\n  if (typeof string !== 'string') {\n    // don't escape SafeStrings, since they're already safe\n    if (string && string.toHTML) {\n      return string.toHTML();\n    } else if (string == null) {\n      return '';\n    } else if (!string) {\n      return string + '';\n    }\n\n    // Force a string conversion as this will be done by the append regardless and\n    // the regex test will do this transparently behind the scenes, causing issues if\n    // an object's to string has escaped characters in it.\n    string = '' + string;\n  }\n\n  if (!possible.test(string)) {\n    return string;\n  }\n  return string.replace(badChars, escapeChar);\n}\n\nexport function isEmpty(value) {\n  if (!value && value !== 0) {\n    return true;\n  } else if (isArray(value) && value.length === 0) {\n    return true;\n  } else {\n    return false;\n  }\n}\n\nexport function createFrame(object) {\n  let frame = extend({}, object);\n  frame._parent = object;\n  return frame;\n}\n\nexport function blockParams(params, ids) {\n  params.path = ids;\n  return params;\n}\n\nexport function appendContextPath(contextPath, id) {\n  return (contextPath ? contextPath + '.' : '') + id;\n}\n", "const errorProps = [\n  'description',\n  'fileName',\n  'lineNumber',\n  'endLineNumber',\n  'message',\n  'name',\n  'number',\n  'stack'\n];\n\nfunction Exception(message, node) {\n  let loc = node && node.loc,\n    line,\n    endLineNumber,\n    column,\n    endColumn;\n\n  if (loc) {\n    line = loc.start.line;\n    endLineNumber = loc.end.line;\n    column = loc.start.column;\n    endColumn = loc.end.column;\n\n    message += ' - ' + line + ':' + column;\n  }\n\n  let tmp = Error.prototype.constructor.call(this, message);\n\n  // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n  for (let idx = 0; idx < errorProps.length; idx++) {\n    this[errorProps[idx]] = tmp[errorProps[idx]];\n  }\n\n  /* istanbul ignore else */\n  if (Error.captureStackTrace) {\n    Error.captureStackTrace(this, Exception);\n  }\n\n  try {\n    if (loc) {\n      this.lineNumber = line;\n      this.endLineNumber = endLineNumber;\n\n      // Work around issue under safari where we can't directly set the column value\n      /* istanbul ignore next */\n      if (Object.defineProperty) {\n        Object.defineProperty(this, 'column', {\n          value: column,\n          enumerable: true\n        });\n        Object.defineProperty(this, 'endColumn', {\n          value: endColumn,\n          enumerable: true\n        });\n      } else {\n        this.column = column;\n        this.endColumn = endColumn;\n      }\n    }\n  } catch (nop) {\n    /* Ignore if the browser is very particular */\n  }\n}\n\nException.prototype = new Error();\n\nexport default Exception;\n", "import { appendContextPath, createFrame, isArray } from '../utils';\n\nexport default function(instance) {\n  instance.registerHelper('blockHelperMissing', function(context, options) {\n    let inverse = options.inverse,\n      fn = options.fn;\n\n    if (context === true) {\n      return fn(this);\n    } else if (context === false || context == null) {\n      return inverse(this);\n    } else if (isArray(context)) {\n      if (context.length > 0) {\n        if (options.ids) {\n          options.ids = [options.name];\n        }\n\n        return instance.helpers.each(context, options);\n      } else {\n        return inverse(this);\n      }\n    } else {\n      if (options.data && options.ids) {\n        let data = createFrame(options.data);\n        data.contextPath = appendContextPath(\n          options.data.contextPath,\n          options.name\n        );\n        options = { data: data };\n      }\n\n      return fn(context, options);\n    }\n  });\n}\n", "import {\n  appendContextPath,\n  blockParams,\n  createFrame,\n  isArray,\n  isFunction\n} from '../utils';\nimport Exception from '../exception';\n\nexport default function(instance) {\n  instance.registerHelper('each', function(context, options) {\n    if (!options) {\n      throw new Exception('Must pass iterator to #each');\n    }\n\n    let fn = options.fn,\n      inverse = options.inverse,\n      i = 0,\n      ret = '',\n      data,\n      contextPath;\n\n    if (options.data && options.ids) {\n      contextPath =\n        appendContextPath(options.data.contextPath, options.ids[0]) + '.';\n    }\n\n    if (isFunction(context)) {\n      context = context.call(this);\n    }\n\n    if (options.data) {\n      data = createFrame(options.data);\n    }\n\n    function execIteration(field, index, last) {\n      if (data) {\n        data.key = field;\n        data.index = index;\n        data.first = index === 0;\n        data.last = !!last;\n\n        if (contextPath) {\n          data.contextPath = contextPath + field;\n        }\n      }\n\n      ret =\n        ret +\n        fn(context[field], {\n          data: data,\n          blockParams: blockParams(\n            [context[field], field],\n            [contextPath + field, null]\n          )\n        });\n    }\n\n    if (context && typeof context === 'object') {\n      if (isArray(context)) {\n        for (let j = context.length; i < j; i++) {\n          if (i in context) {\n            execIteration(i, i, i === context.length - 1);\n          }\n        }\n      } else if (typeof Symbol === 'function' && context[Symbol.iterator]) {\n        const newContext = [];\n        const iterator = context[Symbol.iterator]();\n        for (let it = iterator.next(); !it.done; it = iterator.next()) {\n          newContext.push(it.value);\n        }\n        context = newContext;\n        for (let j = context.length; i < j; i++) {\n          execIteration(i, i, i === context.length - 1);\n        }\n      } else {\n        let priorKey;\n\n        Object.keys(context).forEach(key => {\n          // We're running the iterations one step out of sync so we can detect\n          // the last iteration without have to scan the object twice and create\n          // an itermediate keys array.\n          if (priorKey !== undefined) {\n            execIteration(priorKey, i - 1);\n          }\n          priorKey = key;\n          i++;\n        });\n        if (priorKey !== undefined) {\n          execIteration(priorKey, i - 1, true);\n        }\n      }\n    }\n\n    if (i === 0) {\n      ret = inverse(this);\n    }\n\n    return ret;\n  });\n}\n", "import Exception from '../exception';\n\nexport default function(instance) {\n  instance.registerHelper('helperMissing', function(/* [args, ]options */) {\n    if (arguments.length === 1) {\n      // A missing field in a {{foo}} construct.\n      return undefined;\n    } else {\n      // Someone is actually trying to call something, blow up.\n      throw new Exception(\n        'Missing helper: \"' + arguments[arguments.length - 1].name + '\"'\n      );\n    }\n  });\n}\n", "import { isEmpty, isFunction } from '../utils';\nimport Exception from '../exception';\n\nexport default function(instance) {\n  instance.registerHelper('if', function(conditional, options) {\n    if (arguments.length != 2) {\n      throw new Exception('#if requires exactly one argument');\n    }\n    if (isFunction(conditional)) {\n      conditional = conditional.call(this);\n    }\n\n    // Default behavior is to render the positive path if the value is truthy and not empty.\n    // The `includeZero` option may be set to treat the condtional as purely not empty based on the\n    // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.\n    if ((!options.hash.includeZero && !conditional) || isEmpty(conditional)) {\n      return options.inverse(this);\n    } else {\n      return options.fn(this);\n    }\n  });\n\n  instance.registerHelper('unless', function(conditional, options) {\n    if (arguments.length != 2) {\n      throw new Exception('#unless requires exactly one argument');\n    }\n    return instance.helpers['if'].call(this, conditional, {\n      fn: options.inverse,\n      inverse: options.fn,\n      hash: options.hash\n    });\n  });\n}\n", "export default function(instance) {\n  instance.registerHelper('log', function(/* message, options */) {\n    let args = [undefined],\n      options = arguments[arguments.length - 1];\n    for (let i = 0; i < arguments.length - 1; i++) {\n      args.push(arguments[i]);\n    }\n\n    let level = 1;\n    if (options.hash.level != null) {\n      level = options.hash.level;\n    } else if (options.data && options.data.level != null) {\n      level = options.data.level;\n    }\n    args[0] = level;\n\n    instance.log(...args);\n  });\n}\n", "export default function(instance) {\n  instance.registerHelper('lookup', function(obj, field, options) {\n    if (!obj) {\n      // Note for 5.0: Change to \"obj == null\" in 5.0\n      return obj;\n    }\n    return options.lookupProperty(obj, field);\n  });\n}\n", "import {\n  appendContextPath,\n  blockParams,\n  createFrame,\n  isEmpty,\n  isFunction\n} from '../utils';\nimport Exception from '../exception';\n\nexport default function(instance) {\n  instance.registerHelper('with', function(context, options) {\n    if (arguments.length != 2) {\n      throw new Exception('#with requires exactly one argument');\n    }\n    if (isFunction(context)) {\n      context = context.call(this);\n    }\n\n    let fn = options.fn;\n\n    if (!isEmpty(context)) {\n      let data = options.data;\n      if (options.data && options.ids) {\n        data = createFrame(options.data);\n        data.contextPath = appendContextPath(\n          options.data.contextPath,\n          options.ids[0]\n        );\n      }\n\n      return fn(context, {\n        data: data,\n        blockParams: blockParams([context], [data && data.contextPath])\n      });\n    } else {\n      return options.inverse(this);\n    }\n  });\n}\n", "import registerBlockHelperMissing from './helpers/block-helper-missing';\nimport registerEach from './helpers/each';\nimport registerHelperMissing from './helpers/helper-missing';\nimport registerIf from './helpers/if';\nimport registerLog from './helpers/log';\nimport registerLookup from './helpers/lookup';\nimport registerWith from './helpers/with';\n\nexport function registerDefaultHelpers(instance) {\n  registerBlockHelperMissing(instance);\n  registerEach(instance);\n  registerHelperMissing(instance);\n  registerIf(instance);\n  registerLog(instance);\n  registerLookup(instance);\n  registerWith(instance);\n}\n\nexport function moveHelperToHooks(instance, helperName, keepHelper) {\n  if (instance.helpers[helperName]) {\n    instance.hooks[helperName] = instance.helpers[helperName];\n    if (!keepHelper) {\n      delete instance.helpers[helperName];\n    }\n  }\n}\n", "import { extend } from '../utils';\n\nexport default function(instance) {\n  instance.registerDecorator('inline', function(fn, props, container, options) {\n    let ret = fn;\n    if (!props.partials) {\n      props.partials = {};\n      ret = function(context, options) {\n        // Create a new partials stack frame prior to exec.\n        let original = container.partials;\n        container.partials = extend({}, original, props.partials);\n        let ret = fn(context, options);\n        container.partials = original;\n        return ret;\n      };\n    }\n\n    props.partials[options.args[0]] = options.fn;\n\n    return ret;\n  });\n}\n", "import registerInline from './decorators/inline';\n\nexport function registerDefaultDecorators(instance) {\n  registerInline(instance);\n}\n", "import { indexOf } from './utils';\n\nlet logger = {\n  methodMap: ['debug', 'info', 'warn', 'error'],\n  level: 'info',\n\n  // Maps a given level value to the `methodMap` indexes above.\n  lookupLevel: function(level) {\n    if (typeof level === 'string') {\n      let levelMap = indexOf(logger.methodMap, level.toLowerCase());\n      if (levelMap >= 0) {\n        level = levelMap;\n      } else {\n        level = parseInt(level, 10);\n      }\n    }\n\n    return level;\n  },\n\n  // Can be overridden in the host environment\n  log: function(level, ...message) {\n    level = logger.lookupLevel(level);\n\n    if (\n      typeof console !== 'undefined' &&\n      logger.lookupLevel(logger.level) <= level\n    ) {\n      let method = logger.methodMap[level];\n      // eslint-disable-next-line no-console\n      if (!console[method]) {\n        method = 'log';\n      }\n      console[method](...message); // eslint-disable-line no-console\n    }\n  }\n};\n\nexport default logger;\n", "import { extend } from '../utils';\n\n/**\n * Create a new object with \"null\"-prototype to avoid truthy results on prototype properties.\n * The resulting object can be used with \"object[property]\" to check if a property exists\n * @param {...object} sources a varargs parameter of source objects that will be merged\n * @returns {object}\n */\nexport function createNewLookupObject(...sources) {\n  return extend(Object.create(null), ...sources);\n}\n", "import { createNewLookupObject } from './create-new-lookup-object';\nimport logger from '../logger';\n\nconst loggedProperties = Object.create(null);\n\nexport function createProtoAccessControl(runtimeOptions) {\n  let defaultMethodWhiteList = Object.create(null);\n  defaultMethodWhiteList['constructor'] = false;\n  defaultMethodWhiteList['__defineGetter__'] = false;\n  defaultMethodWhiteList['__defineSetter__'] = false;\n  defaultMethodWhiteList['__lookupGetter__'] = false;\n\n  let defaultPropertyWhiteList = Object.create(null);\n  // eslint-disable-next-line no-proto\n  defaultPropertyWhiteList['__proto__'] = false;\n\n  return {\n    properties: {\n      whitelist: createNewLookupObject(\n        defaultPropertyWhiteList,\n        runtimeOptions.allowedProtoProperties\n      ),\n      defaultValue: runtimeOptions.allowProtoPropertiesByDefault\n    },\n    methods: {\n      whitelist: createNewLookupObject(\n        defaultMethodWhiteList,\n        runtimeOptions.allowedProtoMethods\n      ),\n      defaultValue: runtimeOptions.allowProtoMethodsByDefault\n    }\n  };\n}\n\nexport function resultIsAllowed(result, protoAccessControl, propertyName) {\n  if (typeof result === 'function') {\n    return checkWhiteList(protoAccessControl.methods, propertyName);\n  } else {\n    return checkWhiteList(protoAccessControl.properties, propertyName);\n  }\n}\n\nfunction checkWhiteList(protoAccessControlForType, propertyName) {\n  if (protoAccessControlForType.whitelist[propertyName] !== undefined) {\n    return protoAccessControlForType.whitelist[propertyName] === true;\n  }\n  if (protoAccessControlForType.defaultValue !== undefined) {\n    return protoAccessControlForType.defaultValue;\n  }\n  logUnexpecedPropertyAccessOnce(propertyName);\n  return false;\n}\n\nfunction logUnexpecedPropertyAccessOnce(propertyName) {\n  if (loggedProperties[propertyName] !== true) {\n    loggedProperties[propertyName] = true;\n    logger.log(\n      'error',\n      `Handlebars: Access has been denied to resolve the property \"${propertyName}\" because it is not an \"own property\" of its parent.\\n` +\n        `You can add a runtime option to disable the check or this warning:\\n` +\n        `See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details`\n    );\n  }\n}\n\nexport function resetLoggedProperties() {\n  Object.keys(loggedProperties).forEach(propertyName => {\n    delete loggedProperties[propertyName];\n  });\n}\n", "import { createFrame, extend, toString } from './utils';\nimport Exception from './exception';\nimport { registerDefaultHelpers } from './helpers';\nimport { registerDefaultDecorators } from './decorators';\nimport logger from './logger';\nimport { resetLoggedProperties } from './internal/proto-access';\n\nexport const VERSION = '4.7.8';\nexport const COMPILER_REVISION = 8;\nexport const LAST_COMPATIBLE_COMPILER_REVISION = 7;\n\nexport const REVISION_CHANGES = {\n  1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it\n  2: '== 1.0.0-rc.3',\n  3: '== 1.0.0-rc.4',\n  4: '== 1.x.x',\n  5: '== 2.0.0-alpha.x',\n  6: '>= 2.0.0-beta.1',\n  7: '>= 4.0.0 <4.3.0',\n  8: '>= 4.3.0'\n};\n\nconst objectType = '[object Object]';\n\nexport function HandlebarsEnvironment(helpers, partials, decorators) {\n  this.helpers = helpers || {};\n  this.partials = partials || {};\n  this.decorators = decorators || {};\n\n  registerDefaultHelpers(this);\n  registerDefaultDecorators(this);\n}\n\nHandlebarsEnvironment.prototype = {\n  constructor: HandlebarsEnvironment,\n\n  logger: logger,\n  log: logger.log,\n\n  registerHelper: function(name, fn) {\n    if (toString.call(name) === objectType) {\n      if (fn) {\n        throw new Exception('Arg not supported with multiple helpers');\n      }\n      extend(this.helpers, name);\n    } else {\n      this.helpers[name] = fn;\n    }\n  },\n  unregisterHelper: function(name) {\n    delete this.helpers[name];\n  },\n\n  registerPartial: function(name, partial) {\n    if (toString.call(name) === objectType) {\n      extend(this.partials, name);\n    } else {\n      if (typeof partial === 'undefined') {\n        throw new Exception(\n          `Attempting to register a partial called \"${name}\" as undefined`\n        );\n      }\n      this.partials[name] = partial;\n    }\n  },\n  unregisterPartial: function(name) {\n    delete this.partials[name];\n  },\n\n  registerDecorator: function(name, fn) {\n    if (toString.call(name) === objectType) {\n      if (fn) {\n        throw new Exception('Arg not supported with multiple decorators');\n      }\n      extend(this.decorators, name);\n    } else {\n      this.decorators[name] = fn;\n    }\n  },\n  unregisterDecorator: function(name) {\n    delete this.decorators[name];\n  },\n  /**\n   * Reset the memory of illegal property accesses that have already been logged.\n   * @deprecated should only be used in handlebars test-cases\n   */\n  resetLoggedPropertyAccesses() {\n    resetLoggedProperties();\n  }\n};\n\nexport let log = logger.log;\n\nexport { createFrame, logger };\n", "// Build out our basic SafeString type\nfunction SafeString(string) {\n  this.string = string;\n}\n\nSafeString.prototype.toString = SafeString.prototype.toHTML = function() {\n  return '' + this.string;\n};\n\nexport default SafeString;\n", "export function wrapHelper(helper, transformOptionsFn) {\n  if (typeof helper !== 'function') {\n    // This should not happen, but apparently it does in https://github.com/wycats/handlebars.js/issues/1639\n    // We try to make the wrapper least-invasive by not wrapping it, if the helper is not a function.\n    return helper;\n  }\n  let wrapper = function(/* dynamic arguments */) {\n    const options = arguments[arguments.length - 1];\n    arguments[arguments.length - 1] = transformOptionsFn(options);\n    return helper.apply(this, arguments);\n  };\n  return wrapper;\n}\n", "import * as Utils from './utils';\nimport Exception from './exception';\nimport {\n  COMPILER_REVISION,\n  createFrame,\n  LAST_COMPATIBLE_COMPILER_REVISION,\n  REVISION_CHANGES\n} from './base';\nimport { moveHelperToHooks } from './helpers';\nimport { wrapHelper } from './internal/wrapHelper';\nimport {\n  createProtoAccessControl,\n  resultIsAllowed\n} from './internal/proto-access';\n\nexport function checkRevision(compilerInfo) {\n  const compilerRevision = (compilerInfo && compilerInfo[0]) || 1,\n    currentRevision = COMPILER_REVISION;\n\n  if (\n    compilerRevision >= LAST_COMPATIBLE_COMPILER_REVISION &&\n    compilerRevision <= COMPILER_REVISION\n  ) {\n    return;\n  }\n\n  if (compilerRevision < LAST_COMPATIBLE_COMPILER_REVISION) {\n    const runtimeVersions = REVISION_CHANGES[currentRevision],\n      compilerVersions = REVISION_CHANGES[compilerRevision];\n    throw new Exception(\n      'Template was precompiled with an older version of Handlebars than the current runtime. ' +\n        'Please update your precompiler to a newer version (' +\n        runtimeVersions +\n        ') or downgrade your runtime to an older version (' +\n        compilerVersions +\n        ').'\n    );\n  } else {\n    // Use the embedded version info since the runtime doesn't know about this revision yet\n    throw new Exception(\n      'Template was precompiled with a newer version of Handlebars than the current runtime. ' +\n        'Please update your runtime to a newer version (' +\n        compilerInfo[1] +\n        ').'\n    );\n  }\n}\n\nexport function template(templateSpec, env) {\n  /* istanbul ignore next */\n  if (!env) {\n    throw new Exception('No environment passed to template');\n  }\n  if (!templateSpec || !templateSpec.main) {\n    throw new Exception('Unknown template object: ' + typeof templateSpec);\n  }\n\n  templateSpec.main.decorator = templateSpec.main_d;\n\n  // Note: Using env.VM references rather than local var references throughout this section to allow\n  // for external users to override these as pseudo-supported APIs.\n  env.VM.checkRevision(templateSpec.compiler);\n\n  // backwards compatibility for precompiled templates with compiler-version 7 (<4.3.0)\n  const templateWasPrecompiledWithCompilerV7 =\n    templateSpec.compiler && templateSpec.compiler[0] === 7;\n\n  function invokePartialWrapper(partial, context, options) {\n    if (options.hash) {\n      context = Utils.extend({}, context, options.hash);\n      if (options.ids) {\n        options.ids[0] = true;\n      }\n    }\n    partial = env.VM.resolvePartial.call(this, partial, context, options);\n\n    let extendedOptions = Utils.extend({}, options, {\n      hooks: this.hooks,\n      protoAccessControl: this.protoAccessControl\n    });\n\n    let result = env.VM.invokePartial.call(\n      this,\n      partial,\n      context,\n      extendedOptions\n    );\n\n    if (result == null && env.compile) {\n      options.partials[options.name] = env.compile(\n        partial,\n        templateSpec.compilerOptions,\n        env\n      );\n      result = options.partials[options.name](context, extendedOptions);\n    }\n    if (result != null) {\n      if (options.indent) {\n        let lines = result.split('\\n');\n        for (let i = 0, l = lines.length; i < l; i++) {\n          if (!lines[i] && i + 1 === l) {\n            break;\n          }\n\n          lines[i] = options.indent + lines[i];\n        }\n        result = lines.join('\\n');\n      }\n      return result;\n    } else {\n      throw new Exception(\n        'The partial ' +\n          options.name +\n          ' could not be compiled when running in runtime-only mode'\n      );\n    }\n  }\n\n  // Just add water\n  let container = {\n    strict: function(obj, name, loc) {\n      if (!obj || !(name in obj)) {\n        throw new Exception('\"' + name + '\" not defined in ' + obj, {\n          loc: loc\n        });\n      }\n      return container.lookupProperty(obj, name);\n    },\n    lookupProperty: function(parent, propertyName) {\n      let result = parent[propertyName];\n      if (result == null) {\n        return result;\n      }\n      if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n        return result;\n      }\n\n      if (resultIsAllowed(result, container.protoAccessControl, propertyName)) {\n        return result;\n      }\n      return undefined;\n    },\n    lookup: function(depths, name) {\n      const len = depths.length;\n      for (let i = 0; i < len; i++) {\n        let result = depths[i] && container.lookupProperty(depths[i], name);\n        if (result != null) {\n          return depths[i][name];\n        }\n      }\n    },\n    lambda: function(current, context) {\n      return typeof current === 'function' ? current.call(context) : current;\n    },\n\n    escapeExpression: Utils.escapeExpression,\n    invokePartial: invokePartialWrapper,\n\n    fn: function(i) {\n      let ret = templateSpec[i];\n      ret.decorator = templateSpec[i + '_d'];\n      return ret;\n    },\n\n    programs: [],\n    program: function(i, data, declaredBlockParams, blockParams, depths) {\n      let programWrapper = this.programs[i],\n        fn = this.fn(i);\n      if (data || depths || blockParams || declaredBlockParams) {\n        programWrapper = wrapProgram(\n          this,\n          i,\n          fn,\n          data,\n          declaredBlockParams,\n          blockParams,\n          depths\n        );\n      } else if (!programWrapper) {\n        programWrapper = this.programs[i] = wrapProgram(this, i, fn);\n      }\n      return programWrapper;\n    },\n\n    data: function(value, depth) {\n      while (value && depth--) {\n        value = value._parent;\n      }\n      return value;\n    },\n    mergeIfNeeded: function(param, common) {\n      let obj = param || common;\n\n      if (param && common && param !== common) {\n        obj = Utils.extend({}, common, param);\n      }\n\n      return obj;\n    },\n    // An empty object to use as replacement for null-contexts\n    nullContext: Object.seal({}),\n\n    noop: env.VM.noop,\n    compilerInfo: templateSpec.compiler\n  };\n\n  function ret(context, options = {}) {\n    let data = options.data;\n\n    ret._setup(options);\n    if (!options.partial && templateSpec.useData) {\n      data = initData(context, data);\n    }\n    let depths,\n      blockParams = templateSpec.useBlockParams ? [] : undefined;\n    if (templateSpec.useDepths) {\n      if (options.depths) {\n        depths =\n          context != options.depths[0]\n            ? [context].concat(options.depths)\n            : options.depths;\n      } else {\n        depths = [context];\n      }\n    }\n\n    function main(context /*, options*/) {\n      return (\n        '' +\n        templateSpec.main(\n          container,\n          context,\n          container.helpers,\n          container.partials,\n          data,\n          blockParams,\n          depths\n        )\n      );\n    }\n\n    main = executeDecorators(\n      templateSpec.main,\n      main,\n      container,\n      options.depths || [],\n      data,\n      blockParams\n    );\n    return main(context, options);\n  }\n\n  ret.isTop = true;\n\n  ret._setup = function(options) {\n    if (!options.partial) {\n      let mergedHelpers = Utils.extend({}, env.helpers, options.helpers);\n      wrapHelpersToPassLookupProperty(mergedHelpers, container);\n      container.helpers = mergedHelpers;\n\n      if (templateSpec.usePartial) {\n        // Use mergeIfNeeded here to prevent compiling global partials multiple times\n        container.partials = container.mergeIfNeeded(\n          options.partials,\n          env.partials\n        );\n      }\n      if (templateSpec.usePartial || templateSpec.useDecorators) {\n        container.decorators = Utils.extend(\n          {},\n          env.decorators,\n          options.decorators\n        );\n      }\n\n      container.hooks = {};\n      container.protoAccessControl = createProtoAccessControl(options);\n\n      let keepHelperInHelpers =\n        options.allowCallsToHelperMissing ||\n        templateWasPrecompiledWithCompilerV7;\n      moveHelperToHooks(container, 'helperMissing', keepHelperInHelpers);\n      moveHelperToHooks(container, 'blockHelperMissing', keepHelperInHelpers);\n    } else {\n      container.protoAccessControl = options.protoAccessControl; // internal option\n      container.helpers = options.helpers;\n      container.partials = options.partials;\n      container.decorators = options.decorators;\n      container.hooks = options.hooks;\n    }\n  };\n\n  ret._child = function(i, data, blockParams, depths) {\n    if (templateSpec.useBlockParams && !blockParams) {\n      throw new Exception('must pass block params');\n    }\n    if (templateSpec.useDepths && !depths) {\n      throw new Exception('must pass parent depths');\n    }\n\n    return wrapProgram(\n      container,\n      i,\n      templateSpec[i],\n      data,\n      0,\n      blockParams,\n      depths\n    );\n  };\n  return ret;\n}\n\nexport function wrapProgram(\n  container,\n  i,\n  fn,\n  data,\n  declaredBlockParams,\n  blockParams,\n  depths\n) {\n  function prog(context, options = {}) {\n    let currentDepths = depths;\n    if (\n      depths &&\n      context != depths[0] &&\n      !(context === container.nullContext && depths[0] === null)\n    ) {\n      currentDepths = [context].concat(depths);\n    }\n\n    return fn(\n      container,\n      context,\n      container.helpers,\n      container.partials,\n      options.data || data,\n      blockParams && [options.blockParams].concat(blockParams),\n      currentDepths\n    );\n  }\n\n  prog = executeDecorators(fn, prog, container, depths, data, blockParams);\n\n  prog.program = i;\n  prog.depth = depths ? depths.length : 0;\n  prog.blockParams = declaredBlockParams || 0;\n  return prog;\n}\n\n/**\n * This is currently part of the official API, therefore implementation details should not be changed.\n */\nexport function resolvePartial(partial, context, options) {\n  if (!partial) {\n    if (options.name === '@partial-block') {\n      partial = options.data['partial-block'];\n    } else {\n      partial = options.partials[options.name];\n    }\n  } else if (!partial.call && !options.name) {\n    // This is a dynamic partial that returned a string\n    options.name = partial;\n    partial = options.partials[partial];\n  }\n  return partial;\n}\n\nexport function invokePartial(partial, context, options) {\n  // Use the current closure context to save the partial-block if this partial\n  const currentPartialBlock = options.data && options.data['partial-block'];\n  options.partial = true;\n  if (options.ids) {\n    options.data.contextPath = options.ids[0] || options.data.contextPath;\n  }\n\n  let partialBlock;\n  if (options.fn && options.fn !== noop) {\n    options.data = createFrame(options.data);\n    // Wrapper function to get access to currentPartialBlock from the closure\n    let fn = options.fn;\n    partialBlock = options.data['partial-block'] = function partialBlockWrapper(\n      context,\n      options = {}\n    ) {\n      // Restore the partial-block from the closure for the execution of the block\n      // i.e. the part inside the block of the partial call.\n      options.data = createFrame(options.data);\n      options.data['partial-block'] = currentPartialBlock;\n      return fn(context, options);\n    };\n    if (fn.partials) {\n      options.partials = Utils.extend({}, options.partials, fn.partials);\n    }\n  }\n\n  if (partial === undefined && partialBlock) {\n    partial = partialBlock;\n  }\n\n  if (partial === undefined) {\n    throw new Exception('The partial ' + options.name + ' could not be found');\n  } else if (partial instanceof Function) {\n    return partial(context, options);\n  }\n}\n\nexport function noop() {\n  return '';\n}\n\nfunction initData(context, data) {\n  if (!data || !('root' in data)) {\n    data = data ? createFrame(data) : {};\n    data.root = context;\n  }\n  return data;\n}\n\nfunction executeDecorators(fn, prog, container, depths, data, blockParams) {\n  if (fn.decorator) {\n    let props = {};\n    prog = fn.decorator(\n      prog,\n      props,\n      container,\n      depths && depths[0],\n      data,\n      blockParams,\n      depths\n    );\n    Utils.extend(prog, props);\n  }\n  return prog;\n}\n\nfunction wrapHelpersToPassLookupProperty(mergedHelpers, container) {\n  Object.keys(mergedHelpers).forEach(helperName => {\n    let helper = mergedHelpers[helperName];\n    mergedHelpers[helperName] = passLookupPropertyOption(helper, container);\n  });\n}\n\nfunction passLookupPropertyOption(helper, container) {\n  const lookupProperty = container.lookupProperty;\n  return wrapHelper(helper, options => {\n    return Utils.extend({ lookupProperty }, options);\n  });\n}\n", "/* global globalThis */\nexport default function(Handlebars) {\n  /* istanbul ignore next */\n  // https://mathiasbynens.be/notes/globalthis\n  (function() {\n    if (typeof globalThis === 'object') return;\n    Object.prototype.__defineGetter__('__magic__', function() {\n      return this;\n    });\n    __magic__.globalThis = __magic__; // eslint-disable-line no-undef\n    delete Object.prototype.__magic__;\n  })();\n\n  const $Handlebars = globalThis.Handlebars;\n\n  /* istanbul ignore next */\n  Handlebars.noConflict = function() {\n    if (globalThis.Handlebars === Handlebars) {\n      globalThis.Handlebars = $Handlebars;\n    }\n    return Handlebars;\n  };\n}\n", "import * as base from './handlebars/base';\n\n// Each of these augment the Handlebars object. No need to setup here.\n// (This is done to easily share code between commonjs and browse envs)\nimport SafeString from './handlebars/safe-string';\nimport Exception from './handlebars/exception';\nimport * as Utils from './handlebars/utils';\nimport * as runtime from './handlebars/runtime';\n\nimport noConflict from './handlebars/no-conflict';\n\n// For compatibility and usage outside of module systems, make the Handlebars object a namespace\nfunction create() {\n  let hb = new base.HandlebarsEnvironment();\n\n  Utils.extend(hb, base);\n  hb.SafeString = SafeString;\n  hb.Exception = Exception;\n  hb.Utils = Utils;\n  hb.escapeExpression = Utils.escapeExpression;\n\n  hb.VM = runtime;\n  hb.template = function(spec) {\n    return runtime.template(spec, hb);\n  };\n\n  return hb;\n}\n\nlet inst = create();\ninst.create = create;\n\nnoConflict(inst);\n\ninst['default'] = inst;\n\nexport default inst;\n", "let AST = {\n  // Public API used to evaluate derived attributes regarding AST nodes\n  helpers: {\n    // a mustache is definitely a helper if:\n    // * it is an eligible helper, and\n    // * it has at least one parameter or hash segment\n    helperExpression: function(node) {\n      return (\n        node.type === 'SubExpression' ||\n        ((node.type === 'MustacheStatement' ||\n          node.type === 'BlockStatement') &&\n          !!((node.params && node.params.length) || node.hash))\n      );\n    },\n\n    scopedId: function(path) {\n      return /^\\.|this\\b/.test(path.original);\n    },\n\n    // an ID is simple if it only has one part, and that part is not\n    // `..` or `this`.\n    simpleId: function(path) {\n      return (\n        path.parts.length === 1 && !AST.helpers.scopedId(path) && !path.depth\n      );\n    }\n  }\n};\n\n// Must be exported as an object rather than the root of the module as the jison lexer\n// must modify the object to operate properly.\nexport default AST;\n", "// File ignored in coverage tests via setting in .istanbul.yml\n/* Jison generated parser */\nvar handlebars = (function(){\nvar parser = {trace: function trace () { },\nyy: {},\nsymbols_: {\"error\":2,\"root\":3,\"program\":4,\"EOF\":5,\"program_repetition0\":6,\"statement\":7,\"mustache\":8,\"block\":9,\"rawBlock\":10,\"partial\":11,\"partialBlock\":12,\"content\":13,\"COMMENT\":14,\"CONTENT\":15,\"openRawBlock\":16,\"rawBlock_repetition0\":17,\"END_RAW_BLOCK\":18,\"OPEN_RAW_BLOCK\":19,\"helperName\":20,\"openRawBlock_repetition0\":21,\"openRawBlock_option0\":22,\"CLOSE_RAW_BLOCK\":23,\"openBlock\":24,\"block_option0\":25,\"closeBlock\":26,\"openInverse\":27,\"block_option1\":28,\"OPEN_BLOCK\":29,\"openBlock_repetition0\":30,\"openBlock_option0\":31,\"openBlock_option1\":32,\"CLOSE\":33,\"OPEN_INVERSE\":34,\"openInverse_repetition0\":35,\"openInverse_option0\":36,\"openInverse_option1\":37,\"openInverseChain\":38,\"OPEN_INVERSE_CHAIN\":39,\"openInverseChain_repetition0\":40,\"openInverseChain_option0\":41,\"openInverseChain_option1\":42,\"inverseAndProgram\":43,\"INVERSE\":44,\"inverseChain\":45,\"inverseChain_option0\":46,\"OPEN_ENDBLOCK\":47,\"OPEN\":48,\"mustache_repetition0\":49,\"mustache_option0\":50,\"OPEN_UNESCAPED\":51,\"mustache_repetition1\":52,\"mustache_option1\":53,\"CLOSE_UNESCAPED\":54,\"OPEN_PARTIAL\":55,\"partialName\":56,\"partial_repetition0\":57,\"partial_option0\":58,\"openPartialBlock\":59,\"OPEN_PARTIAL_BLOCK\":60,\"openPartialBlock_repetition0\":61,\"openPartialBlock_option0\":62,\"param\":63,\"sexpr\":64,\"OPEN_SEXPR\":65,\"sexpr_repetition0\":66,\"sexpr_option0\":67,\"CLOSE_SEXPR\":68,\"hash\":69,\"hash_repetition_plus0\":70,\"hashSegment\":71,\"ID\":72,\"EQUALS\":73,\"blockParams\":74,\"OPEN_BLOCK_PARAMS\":75,\"blockParams_repetition_plus0\":76,\"CLOSE_BLOCK_PARAMS\":77,\"path\":78,\"dataName\":79,\"STRING\":80,\"NUMBER\":81,\"BOOLEAN\":82,\"UNDEFINED\":83,\"NULL\":84,\"DATA\":85,\"pathSegments\":86,\"SEP\":87,\"$accept\":0,\"$end\":1},\nterminals_: {2:\"error\",5:\"EOF\",14:\"COMMENT\",15:\"CONTENT\",18:\"END_RAW_BLOCK\",19:\"OPEN_RAW_BLOCK\",23:\"CLOSE_RAW_BLOCK\",29:\"OPEN_BLOCK\",33:\"CLOSE\",34:\"OPEN_INVERSE\",39:\"OPEN_INVERSE_CHAIN\",44:\"INVERSE\",47:\"OPEN_ENDBLOCK\",48:\"OPEN\",51:\"OPEN_UNESCAPED\",54:\"CLOSE_UNESCAPED\",55:\"OPEN_PARTIAL\",60:\"OPEN_PARTIAL_BLOCK\",65:\"OPEN_SEXPR\",68:\"CLOSE_SEXPR\",72:\"ID\",73:\"EQUALS\",75:\"OPEN_BLOCK_PARAMS\",77:\"CLOSE_BLOCK_PARAMS\",80:\"STRING\",81:\"NUMBER\",82:\"BOOLEAN\",83:\"UNDEFINED\",84:\"NULL\",85:\"DATA\",87:\"SEP\"},\nproductions_: [0,[3,2],[4,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[13,1],[10,3],[16,5],[9,4],[9,4],[24,6],[27,6],[38,6],[43,2],[45,3],[45,1],[26,3],[8,5],[8,5],[11,5],[12,3],[59,5],[63,1],[63,1],[64,5],[69,1],[71,3],[74,3],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[20,1],[56,1],[56,1],[79,2],[78,1],[86,3],[86,1],[6,0],[6,2],[17,0],[17,2],[21,0],[21,2],[22,0],[22,1],[25,0],[25,1],[28,0],[28,1],[30,0],[30,2],[31,0],[31,1],[32,0],[32,1],[35,0],[35,2],[36,0],[36,1],[37,0],[37,1],[40,0],[40,2],[41,0],[41,1],[42,0],[42,1],[46,0],[46,1],[49,0],[49,2],[50,0],[50,1],[52,0],[52,2],[53,0],[53,1],[57,0],[57,2],[58,0],[58,1],[61,0],[61,2],[62,0],[62,1],[66,0],[66,2],[67,0],[67,1],[70,1],[70,2],[76,1],[76,2]],\nperformAction: function anonymous(yytext,yyleng,yylineno,yy,yystate,$$,_$\n) {\n\nvar $0 = $$.length - 1;\nswitch (yystate) {\ncase 1: return $$[$0-1]; \nbreak;\ncase 2:this.$ = yy.prepareProgram($$[$0]);\nbreak;\ncase 3:this.$ = $$[$0];\nbreak;\ncase 4:this.$ = $$[$0];\nbreak;\ncase 5:this.$ = $$[$0];\nbreak;\ncase 6:this.$ = $$[$0];\nbreak;\ncase 7:this.$ = $$[$0];\nbreak;\ncase 8:this.$ = $$[$0];\nbreak;\ncase 9:\n    this.$ = {\n      type: 'CommentStatement',\n      value: yy.stripComment($$[$0]),\n      strip: yy.stripFlags($$[$0], $$[$0]),\n      loc: yy.locInfo(this._$)\n    };\n  \nbreak;\ncase 10:\n    this.$ = {\n      type: 'ContentStatement',\n      original: $$[$0],\n      value: $$[$0],\n      loc: yy.locInfo(this._$)\n    };\n  \nbreak;\ncase 11:this.$ = yy.prepareRawBlock($$[$0-2], $$[$0-1], $$[$0], this._$);\nbreak;\ncase 12:this.$ = { path: $$[$0-3], params: $$[$0-2], hash: $$[$0-1] };\nbreak;\ncase 13:this.$ = yy.prepareBlock($$[$0-3], $$[$0-2], $$[$0-1], $$[$0], false, this._$);\nbreak;\ncase 14:this.$ = yy.prepareBlock($$[$0-3], $$[$0-2], $$[$0-1], $$[$0], true, this._$);\nbreak;\ncase 15:this.$ = { open: $$[$0-5], path: $$[$0-4], params: $$[$0-3], hash: $$[$0-2], blockParams: $$[$0-1], strip: yy.stripFlags($$[$0-5], $$[$0]) };\nbreak;\ncase 16:this.$ = { path: $$[$0-4], params: $$[$0-3], hash: $$[$0-2], blockParams: $$[$0-1], strip: yy.stripFlags($$[$0-5], $$[$0]) };\nbreak;\ncase 17:this.$ = { path: $$[$0-4], params: $$[$0-3], hash: $$[$0-2], blockParams: $$[$0-1], strip: yy.stripFlags($$[$0-5], $$[$0]) };\nbreak;\ncase 18:this.$ = { strip: yy.stripFlags($$[$0-1], $$[$0-1]), program: $$[$0] };\nbreak;\ncase 19:\n    var inverse = yy.prepareBlock($$[$0-2], $$[$0-1], $$[$0], $$[$0], false, this._$),\n        program = yy.prepareProgram([inverse], $$[$0-1].loc);\n    program.chained = true;\n\n    this.$ = { strip: $$[$0-2].strip, program: program, chain: true };\n  \nbreak;\ncase 20:this.$ = $$[$0];\nbreak;\ncase 21:this.$ = {path: $$[$0-1], strip: yy.stripFlags($$[$0-2], $$[$0])};\nbreak;\ncase 22:this.$ = yy.prepareMustache($$[$0-3], $$[$0-2], $$[$0-1], $$[$0-4], yy.stripFlags($$[$0-4], $$[$0]), this._$);\nbreak;\ncase 23:this.$ = yy.prepareMustache($$[$0-3], $$[$0-2], $$[$0-1], $$[$0-4], yy.stripFlags($$[$0-4], $$[$0]), this._$);\nbreak;\ncase 24:\n    this.$ = {\n      type: 'PartialStatement',\n      name: $$[$0-3],\n      params: $$[$0-2],\n      hash: $$[$0-1],\n      indent: '',\n      strip: yy.stripFlags($$[$0-4], $$[$0]),\n      loc: yy.locInfo(this._$)\n    };\n  \nbreak;\ncase 25:this.$ = yy.preparePartialBlock($$[$0-2], $$[$0-1], $$[$0], this._$);\nbreak;\ncase 26:this.$ = { path: $$[$0-3], params: $$[$0-2], hash: $$[$0-1], strip: yy.stripFlags($$[$0-4], $$[$0]) };\nbreak;\ncase 27:this.$ = $$[$0];\nbreak;\ncase 28:this.$ = $$[$0];\nbreak;\ncase 29:\n    this.$ = {\n      type: 'SubExpression',\n      path: $$[$0-3],\n      params: $$[$0-2],\n      hash: $$[$0-1],\n      loc: yy.locInfo(this._$)\n    };\n  \nbreak;\ncase 30:this.$ = {type: 'Hash', pairs: $$[$0], loc: yy.locInfo(this._$)};\nbreak;\ncase 31:this.$ = {type: 'HashPair', key: yy.id($$[$0-2]), value: $$[$0], loc: yy.locInfo(this._$)};\nbreak;\ncase 32:this.$ = yy.id($$[$0-1]);\nbreak;\ncase 33:this.$ = $$[$0];\nbreak;\ncase 34:this.$ = $$[$0];\nbreak;\ncase 35:this.$ = {type: 'StringLiteral', value: $$[$0], original: $$[$0], loc: yy.locInfo(this._$)};\nbreak;\ncase 36:this.$ = {type: 'NumberLiteral', value: Number($$[$0]), original: Number($$[$0]), loc: yy.locInfo(this._$)};\nbreak;\ncase 37:this.$ = {type: 'BooleanLiteral', value: $$[$0] === 'true', original: $$[$0] === 'true', loc: yy.locInfo(this._$)};\nbreak;\ncase 38:this.$ = {type: 'UndefinedLiteral', original: undefined, value: undefined, loc: yy.locInfo(this._$)};\nbreak;\ncase 39:this.$ = {type: 'NullLiteral', original: null, value: null, loc: yy.locInfo(this._$)};\nbreak;\ncase 40:this.$ = $$[$0];\nbreak;\ncase 41:this.$ = $$[$0];\nbreak;\ncase 42:this.$ = yy.preparePath(true, $$[$0], this._$);\nbreak;\ncase 43:this.$ = yy.preparePath(false, $$[$0], this._$);\nbreak;\ncase 44: $$[$0-2].push({part: yy.id($$[$0]), original: $$[$0], separator: $$[$0-1]}); this.$ = $$[$0-2]; \nbreak;\ncase 45:this.$ = [{part: yy.id($$[$0]), original: $$[$0]}];\nbreak;\ncase 46:this.$ = [];\nbreak;\ncase 47:$$[$0-1].push($$[$0]);\nbreak;\ncase 48:this.$ = [];\nbreak;\ncase 49:$$[$0-1].push($$[$0]);\nbreak;\ncase 50:this.$ = [];\nbreak;\ncase 51:$$[$0-1].push($$[$0]);\nbreak;\ncase 58:this.$ = [];\nbreak;\ncase 59:$$[$0-1].push($$[$0]);\nbreak;\ncase 64:this.$ = [];\nbreak;\ncase 65:$$[$0-1].push($$[$0]);\nbreak;\ncase 70:this.$ = [];\nbreak;\ncase 71:$$[$0-1].push($$[$0]);\nbreak;\ncase 78:this.$ = [];\nbreak;\ncase 79:$$[$0-1].push($$[$0]);\nbreak;\ncase 82:this.$ = [];\nbreak;\ncase 83:$$[$0-1].push($$[$0]);\nbreak;\ncase 86:this.$ = [];\nbreak;\ncase 87:$$[$0-1].push($$[$0]);\nbreak;\ncase 90:this.$ = [];\nbreak;\ncase 91:$$[$0-1].push($$[$0]);\nbreak;\ncase 94:this.$ = [];\nbreak;\ncase 95:$$[$0-1].push($$[$0]);\nbreak;\ncase 98:this.$ = [$$[$0]];\nbreak;\ncase 99:$$[$0-1].push($$[$0]);\nbreak;\ncase 100:this.$ = [$$[$0]];\nbreak;\ncase 101:$$[$0-1].push($$[$0]);\nbreak;\n}\n},\ntable: [{3:1,4:2,5:[2,46],6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{1:[3]},{5:[1,4]},{5:[2,2],7:5,8:6,9:7,10:8,11:9,12:10,13:11,14:[1,12],15:[1,20],16:17,19:[1,23],24:15,27:16,29:[1,21],34:[1,22],39:[2,2],44:[2,2],47:[2,2],48:[1,13],51:[1,14],55:[1,18],59:19,60:[1,24]},{1:[2,1]},{5:[2,47],14:[2,47],15:[2,47],19:[2,47],29:[2,47],34:[2,47],39:[2,47],44:[2,47],47:[2,47],48:[2,47],51:[2,47],55:[2,47],60:[2,47]},{5:[2,3],14:[2,3],15:[2,3],19:[2,3],29:[2,3],34:[2,3],39:[2,3],44:[2,3],47:[2,3],48:[2,3],51:[2,3],55:[2,3],60:[2,3]},{5:[2,4],14:[2,4],15:[2,4],19:[2,4],29:[2,4],34:[2,4],39:[2,4],44:[2,4],47:[2,4],48:[2,4],51:[2,4],55:[2,4],60:[2,4]},{5:[2,5],14:[2,5],15:[2,5],19:[2,5],29:[2,5],34:[2,5],39:[2,5],44:[2,5],47:[2,5],48:[2,5],51:[2,5],55:[2,5],60:[2,5]},{5:[2,6],14:[2,6],15:[2,6],19:[2,6],29:[2,6],34:[2,6],39:[2,6],44:[2,6],47:[2,6],48:[2,6],51:[2,6],55:[2,6],60:[2,6]},{5:[2,7],14:[2,7],15:[2,7],19:[2,7],29:[2,7],34:[2,7],39:[2,7],44:[2,7],47:[2,7],48:[2,7],51:[2,7],55:[2,7],60:[2,7]},{5:[2,8],14:[2,8],15:[2,8],19:[2,8],29:[2,8],34:[2,8],39:[2,8],44:[2,8],47:[2,8],48:[2,8],51:[2,8],55:[2,8],60:[2,8]},{5:[2,9],14:[2,9],15:[2,9],19:[2,9],29:[2,9],34:[2,9],39:[2,9],44:[2,9],47:[2,9],48:[2,9],51:[2,9],55:[2,9],60:[2,9]},{20:25,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:36,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:37,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{4:38,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{15:[2,48],17:39,18:[2,48]},{20:41,56:40,64:42,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:44,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{5:[2,10],14:[2,10],15:[2,10],18:[2,10],19:[2,10],29:[2,10],34:[2,10],39:[2,10],44:[2,10],47:[2,10],48:[2,10],51:[2,10],55:[2,10],60:[2,10]},{20:45,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:46,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:47,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:41,56:48,64:42,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[2,78],49:49,65:[2,78],72:[2,78],80:[2,78],81:[2,78],82:[2,78],83:[2,78],84:[2,78],85:[2,78]},{23:[2,33],33:[2,33],54:[2,33],65:[2,33],68:[2,33],72:[2,33],75:[2,33],80:[2,33],81:[2,33],82:[2,33],83:[2,33],84:[2,33],85:[2,33]},{23:[2,34],33:[2,34],54:[2,34],65:[2,34],68:[2,34],72:[2,34],75:[2,34],80:[2,34],81:[2,34],82:[2,34],83:[2,34],84:[2,34],85:[2,34]},{23:[2,35],33:[2,35],54:[2,35],65:[2,35],68:[2,35],72:[2,35],75:[2,35],80:[2,35],81:[2,35],82:[2,35],83:[2,35],84:[2,35],85:[2,35]},{23:[2,36],33:[2,36],54:[2,36],65:[2,36],68:[2,36],72:[2,36],75:[2,36],80:[2,36],81:[2,36],82:[2,36],83:[2,36],84:[2,36],85:[2,36]},{23:[2,37],33:[2,37],54:[2,37],65:[2,37],68:[2,37],72:[2,37],75:[2,37],80:[2,37],81:[2,37],82:[2,37],83:[2,37],84:[2,37],85:[2,37]},{23:[2,38],33:[2,38],54:[2,38],65:[2,38],68:[2,38],72:[2,38],75:[2,38],80:[2,38],81:[2,38],82:[2,38],83:[2,38],84:[2,38],85:[2,38]},{23:[2,39],33:[2,39],54:[2,39],65:[2,39],68:[2,39],72:[2,39],75:[2,39],80:[2,39],81:[2,39],82:[2,39],83:[2,39],84:[2,39],85:[2,39]},{23:[2,43],33:[2,43],54:[2,43],65:[2,43],68:[2,43],72:[2,43],75:[2,43],80:[2,43],81:[2,43],82:[2,43],83:[2,43],84:[2,43],85:[2,43],87:[1,50]},{72:[1,35],86:51},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{52:52,54:[2,82],65:[2,82],72:[2,82],80:[2,82],81:[2,82],82:[2,82],83:[2,82],84:[2,82],85:[2,82]},{25:53,38:55,39:[1,57],43:56,44:[1,58],45:54,47:[2,54]},{28:59,43:60,44:[1,58],47:[2,56]},{13:62,15:[1,20],18:[1,61]},{33:[2,86],57:63,65:[2,86],72:[2,86],80:[2,86],81:[2,86],82:[2,86],83:[2,86],84:[2,86],85:[2,86]},{33:[2,40],65:[2,40],72:[2,40],80:[2,40],81:[2,40],82:[2,40],83:[2,40],84:[2,40],85:[2,40]},{33:[2,41],65:[2,41],72:[2,41],80:[2,41],81:[2,41],82:[2,41],83:[2,41],84:[2,41],85:[2,41]},{20:64,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:65,47:[1,66]},{30:67,33:[2,58],65:[2,58],72:[2,58],75:[2,58],80:[2,58],81:[2,58],82:[2,58],83:[2,58],84:[2,58],85:[2,58]},{33:[2,64],35:68,65:[2,64],72:[2,64],75:[2,64],80:[2,64],81:[2,64],82:[2,64],83:[2,64],84:[2,64],85:[2,64]},{21:69,23:[2,50],65:[2,50],72:[2,50],80:[2,50],81:[2,50],82:[2,50],83:[2,50],84:[2,50],85:[2,50]},{33:[2,90],61:70,65:[2,90],72:[2,90],80:[2,90],81:[2,90],82:[2,90],83:[2,90],84:[2,90],85:[2,90]},{20:74,33:[2,80],50:71,63:72,64:75,65:[1,43],69:73,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{72:[1,79]},{23:[2,42],33:[2,42],54:[2,42],65:[2,42],68:[2,42],72:[2,42],75:[2,42],80:[2,42],81:[2,42],82:[2,42],83:[2,42],84:[2,42],85:[2,42],87:[1,50]},{20:74,53:80,54:[2,84],63:81,64:75,65:[1,43],69:82,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{26:83,47:[1,66]},{47:[2,55]},{4:84,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],39:[2,46],44:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{47:[2,20]},{20:85,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{4:86,6:3,14:[2,46],15:[2,46],19:[2,46],29:[2,46],34:[2,46],47:[2,46],48:[2,46],51:[2,46],55:[2,46],60:[2,46]},{26:87,47:[1,66]},{47:[2,57]},{5:[2,11],14:[2,11],15:[2,11],19:[2,11],29:[2,11],34:[2,11],39:[2,11],44:[2,11],47:[2,11],48:[2,11],51:[2,11],55:[2,11],60:[2,11]},{15:[2,49],18:[2,49]},{20:74,33:[2,88],58:88,63:89,64:75,65:[1,43],69:90,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{65:[2,94],66:91,68:[2,94],72:[2,94],80:[2,94],81:[2,94],82:[2,94],83:[2,94],84:[2,94],85:[2,94]},{5:[2,25],14:[2,25],15:[2,25],19:[2,25],29:[2,25],34:[2,25],39:[2,25],44:[2,25],47:[2,25],48:[2,25],51:[2,25],55:[2,25],60:[2,25]},{20:92,72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,31:93,33:[2,60],63:94,64:75,65:[1,43],69:95,70:76,71:77,72:[1,78],75:[2,60],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,33:[2,66],36:96,63:97,64:75,65:[1,43],69:98,70:76,71:77,72:[1,78],75:[2,66],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,22:99,23:[2,52],63:100,64:75,65:[1,43],69:101,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{20:74,33:[2,92],62:102,63:103,64:75,65:[1,43],69:104,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,105]},{33:[2,79],65:[2,79],72:[2,79],80:[2,79],81:[2,79],82:[2,79],83:[2,79],84:[2,79],85:[2,79]},{33:[2,81]},{23:[2,27],33:[2,27],54:[2,27],65:[2,27],68:[2,27],72:[2,27],75:[2,27],80:[2,27],81:[2,27],82:[2,27],83:[2,27],84:[2,27],85:[2,27]},{23:[2,28],33:[2,28],54:[2,28],65:[2,28],68:[2,28],72:[2,28],75:[2,28],80:[2,28],81:[2,28],82:[2,28],83:[2,28],84:[2,28],85:[2,28]},{23:[2,30],33:[2,30],54:[2,30],68:[2,30],71:106,72:[1,107],75:[2,30]},{23:[2,98],33:[2,98],54:[2,98],68:[2,98],72:[2,98],75:[2,98]},{23:[2,45],33:[2,45],54:[2,45],65:[2,45],68:[2,45],72:[2,45],73:[1,108],75:[2,45],80:[2,45],81:[2,45],82:[2,45],83:[2,45],84:[2,45],85:[2,45],87:[2,45]},{23:[2,44],33:[2,44],54:[2,44],65:[2,44],68:[2,44],72:[2,44],75:[2,44],80:[2,44],81:[2,44],82:[2,44],83:[2,44],84:[2,44],85:[2,44],87:[2,44]},{54:[1,109]},{54:[2,83],65:[2,83],72:[2,83],80:[2,83],81:[2,83],82:[2,83],83:[2,83],84:[2,83],85:[2,83]},{54:[2,85]},{5:[2,13],14:[2,13],15:[2,13],19:[2,13],29:[2,13],34:[2,13],39:[2,13],44:[2,13],47:[2,13],48:[2,13],51:[2,13],55:[2,13],60:[2,13]},{38:55,39:[1,57],43:56,44:[1,58],45:111,46:110,47:[2,76]},{33:[2,70],40:112,65:[2,70],72:[2,70],75:[2,70],80:[2,70],81:[2,70],82:[2,70],83:[2,70],84:[2,70],85:[2,70]},{47:[2,18]},{5:[2,14],14:[2,14],15:[2,14],19:[2,14],29:[2,14],34:[2,14],39:[2,14],44:[2,14],47:[2,14],48:[2,14],51:[2,14],55:[2,14],60:[2,14]},{33:[1,113]},{33:[2,87],65:[2,87],72:[2,87],80:[2,87],81:[2,87],82:[2,87],83:[2,87],84:[2,87],85:[2,87]},{33:[2,89]},{20:74,63:115,64:75,65:[1,43],67:114,68:[2,96],69:116,70:76,71:77,72:[1,78],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{33:[1,117]},{32:118,33:[2,62],74:119,75:[1,120]},{33:[2,59],65:[2,59],72:[2,59],75:[2,59],80:[2,59],81:[2,59],82:[2,59],83:[2,59],84:[2,59],85:[2,59]},{33:[2,61],75:[2,61]},{33:[2,68],37:121,74:122,75:[1,120]},{33:[2,65],65:[2,65],72:[2,65],75:[2,65],80:[2,65],81:[2,65],82:[2,65],83:[2,65],84:[2,65],85:[2,65]},{33:[2,67],75:[2,67]},{23:[1,123]},{23:[2,51],65:[2,51],72:[2,51],80:[2,51],81:[2,51],82:[2,51],83:[2,51],84:[2,51],85:[2,51]},{23:[2,53]},{33:[1,124]},{33:[2,91],65:[2,91],72:[2,91],80:[2,91],81:[2,91],82:[2,91],83:[2,91],84:[2,91],85:[2,91]},{33:[2,93]},{5:[2,22],14:[2,22],15:[2,22],19:[2,22],29:[2,22],34:[2,22],39:[2,22],44:[2,22],47:[2,22],48:[2,22],51:[2,22],55:[2,22],60:[2,22]},{23:[2,99],33:[2,99],54:[2,99],68:[2,99],72:[2,99],75:[2,99]},{73:[1,108]},{20:74,63:125,64:75,65:[1,43],72:[1,35],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,23],14:[2,23],15:[2,23],19:[2,23],29:[2,23],34:[2,23],39:[2,23],44:[2,23],47:[2,23],48:[2,23],51:[2,23],55:[2,23],60:[2,23]},{47:[2,19]},{47:[2,77]},{20:74,33:[2,72],41:126,63:127,64:75,65:[1,43],69:128,70:76,71:77,72:[1,78],75:[2,72],78:26,79:27,80:[1,28],81:[1,29],82:[1,30],83:[1,31],84:[1,32],85:[1,34],86:33},{5:[2,24],14:[2,24],15:[2,24],19:[2,24],29:[2,24],34:[2,24],39:[2,24],44:[2,24],47:[2,24],48:[2,24],51:[2,24],55:[2,24],60:[2,24]},{68:[1,129]},{65:[2,95],68:[2,95],72:[2,95],80:[2,95],81:[2,95],82:[2,95],83:[2,95],84:[2,95],85:[2,95]},{68:[2,97]},{5:[2,21],14:[2,21],15:[2,21],19:[2,21],29:[2,21],34:[2,21],39:[2,21],44:[2,21],47:[2,21],48:[2,21],51:[2,21],55:[2,21],60:[2,21]},{33:[1,130]},{33:[2,63]},{72:[1,132],76:131},{33:[1,133]},{33:[2,69]},{15:[2,12],18:[2,12]},{14:[2,26],15:[2,26],19:[2,26],29:[2,26],34:[2,26],47:[2,26],48:[2,26],51:[2,26],55:[2,26],60:[2,26]},{23:[2,31],33:[2,31],54:[2,31],68:[2,31],72:[2,31],75:[2,31]},{33:[2,74],42:134,74:135,75:[1,120]},{33:[2,71],65:[2,71],72:[2,71],75:[2,71],80:[2,71],81:[2,71],82:[2,71],83:[2,71],84:[2,71],85:[2,71]},{33:[2,73],75:[2,73]},{23:[2,29],33:[2,29],54:[2,29],65:[2,29],68:[2,29],72:[2,29],75:[2,29],80:[2,29],81:[2,29],82:[2,29],83:[2,29],84:[2,29],85:[2,29]},{14:[2,15],15:[2,15],19:[2,15],29:[2,15],34:[2,15],39:[2,15],44:[2,15],47:[2,15],48:[2,15],51:[2,15],55:[2,15],60:[2,15]},{72:[1,137],77:[1,136]},{72:[2,100],77:[2,100]},{14:[2,16],15:[2,16],19:[2,16],29:[2,16],34:[2,16],44:[2,16],47:[2,16],48:[2,16],51:[2,16],55:[2,16],60:[2,16]},{33:[1,138]},{33:[2,75]},{33:[2,32]},{72:[2,101],77:[2,101]},{14:[2,17],15:[2,17],19:[2,17],29:[2,17],34:[2,17],39:[2,17],44:[2,17],47:[2,17],48:[2,17],51:[2,17],55:[2,17],60:[2,17]}],\ndefaultActions: {4:[2,1],54:[2,55],56:[2,20],60:[2,57],73:[2,81],82:[2,85],86:[2,18],90:[2,89],101:[2,53],104:[2,93],110:[2,19],111:[2,77],116:[2,97],119:[2,63],122:[2,69],135:[2,75],136:[2,32]},\nparseError: function parseError (str, hash) {\n    throw new Error(str);\n},\nparse: function parse(input) {\n    var self = this, stack = [0], vstack = [null], lstack = [], table = this.table, yytext = \"\", yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;\n    this.lexer.setInput(input);\n    this.lexer.yy = this.yy;\n    this.yy.lexer = this.lexer;\n    this.yy.parser = this;\n    if (typeof this.lexer.yylloc == \"undefined\")\n        this.lexer.yylloc = {};\n    var yyloc = this.lexer.yylloc;\n    lstack.push(yyloc);\n    var ranges = this.lexer.options && this.lexer.options.ranges;\n    if (typeof this.yy.parseError === \"function\")\n        this.parseError = this.yy.parseError;\n    function popStack(n) {\n        stack.length = stack.length - 2 * n;\n        vstack.length = vstack.length - n;\n        lstack.length = lstack.length - n;\n    }\n    function lex() {\n        var token;\n        token = self.lexer.lex() || 1;\n        if (typeof token !== \"number\") {\n            token = self.symbols_[token] || token;\n        }\n        return token;\n    }\n    var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;\n    while (true) {\n        state = stack[stack.length - 1];\n        if (this.defaultActions[state]) {\n            action = this.defaultActions[state];\n        } else {\n            if (symbol === null || typeof symbol == \"undefined\") {\n                symbol = lex();\n            }\n            action = table[state] && table[state][symbol];\n        }\n        if (typeof action === \"undefined\" || !action.length || !action[0]) {\n            var errStr = \"\";\n            if (!recovering) {\n                expected = [];\n                for (p in table[state])\n                    if (this.terminals_[p] && p > 2) {\n                        expected.push(\"'\" + this.terminals_[p] + \"'\");\n                    }\n                if (this.lexer.showPosition) {\n                    errStr = \"Parse error on line \" + (yylineno + 1) + \":\\n\" + this.lexer.showPosition() + \"\\nExpecting \" + expected.join(\", \") + \", got '\" + (this.terminals_[symbol] || symbol) + \"'\";\n                } else {\n                    errStr = \"Parse error on line \" + (yylineno + 1) + \": Unexpected \" + (symbol == 1?\"end of input\":\"'\" + (this.terminals_[symbol] || symbol) + \"'\");\n                }\n                this.parseError(errStr, {text: this.lexer.match, token: this.terminals_[symbol] || symbol, line: this.lexer.yylineno, loc: yyloc, expected: expected});\n            }\n        }\n        if (action[0] instanceof Array && action.length > 1) {\n            throw new Error(\"Parse Error: multiple actions possible at state: \" + state + \", token: \" + symbol);\n        }\n        switch (action[0]) {\n        case 1:\n            stack.push(symbol);\n            vstack.push(this.lexer.yytext);\n            lstack.push(this.lexer.yylloc);\n            stack.push(action[1]);\n            symbol = null;\n            if (!preErrorSymbol) {\n                yyleng = this.lexer.yyleng;\n                yytext = this.lexer.yytext;\n                yylineno = this.lexer.yylineno;\n                yyloc = this.lexer.yylloc;\n                if (recovering > 0)\n                    recovering--;\n            } else {\n                symbol = preErrorSymbol;\n                preErrorSymbol = null;\n            }\n            break;\n        case 2:\n            len = this.productions_[action[1]][1];\n            yyval.$ = vstack[vstack.length - len];\n            yyval._$ = {first_line: lstack[lstack.length - (len || 1)].first_line, last_line: lstack[lstack.length - 1].last_line, first_column: lstack[lstack.length - (len || 1)].first_column, last_column: lstack[lstack.length - 1].last_column};\n            if (ranges) {\n                yyval._$.range = [lstack[lstack.length - (len || 1)].range[0], lstack[lstack.length - 1].range[1]];\n            }\n            r = this.performAction.call(yyval, yytext, yyleng, yylineno, this.yy, action[1], vstack, lstack);\n            if (typeof r !== \"undefined\") {\n                return r;\n            }\n            if (len) {\n                stack = stack.slice(0, -1 * len * 2);\n                vstack = vstack.slice(0, -1 * len);\n                lstack = lstack.slice(0, -1 * len);\n            }\n            stack.push(this.productions_[action[1]][0]);\n            vstack.push(yyval.$);\n            lstack.push(yyval._$);\n            newState = table[stack[stack.length - 2]][stack[stack.length - 1]];\n            stack.push(newState);\n            break;\n        case 3:\n            return true;\n        }\n    }\n    return true;\n}\n};\n/* Jison generated lexer */\nvar lexer = (function(){\nvar lexer = ({EOF:1,\nparseError:function parseError(str, hash) {\n        if (this.yy.parser) {\n            this.yy.parser.parseError(str, hash);\n        } else {\n            throw new Error(str);\n        }\n    },\nsetInput:function (input) {\n        this._input = input;\n        this._more = this._less = this.done = false;\n        this.yylineno = this.yyleng = 0;\n        this.yytext = this.matched = this.match = '';\n        this.conditionStack = ['INITIAL'];\n        this.yylloc = {first_line:1,first_column:0,last_line:1,last_column:0};\n        if (this.options.ranges) this.yylloc.range = [0,0];\n        this.offset = 0;\n        return this;\n    },\ninput:function () {\n        var ch = this._input[0];\n        this.yytext += ch;\n        this.yyleng++;\n        this.offset++;\n        this.match += ch;\n        this.matched += ch;\n        var lines = ch.match(/(?:\\r\\n?|\\n).*/g);\n        if (lines) {\n            this.yylineno++;\n            this.yylloc.last_line++;\n        } else {\n            this.yylloc.last_column++;\n        }\n        if (this.options.ranges) this.yylloc.range[1]++;\n\n        this._input = this._input.slice(1);\n        return ch;\n    },\nunput:function (ch) {\n        var len = ch.length;\n        var lines = ch.split(/(?:\\r\\n?|\\n)/g);\n\n        this._input = ch + this._input;\n        this.yytext = this.yytext.substr(0, this.yytext.length-len-1);\n        //this.yyleng -= len;\n        this.offset -= len;\n        var oldLines = this.match.split(/(?:\\r\\n?|\\n)/g);\n        this.match = this.match.substr(0, this.match.length-1);\n        this.matched = this.matched.substr(0, this.matched.length-1);\n\n        if (lines.length-1) this.yylineno -= lines.length-1;\n        var r = this.yylloc.range;\n\n        this.yylloc = {first_line: this.yylloc.first_line,\n          last_line: this.yylineno+1,\n          first_column: this.yylloc.first_column,\n          last_column: lines ?\n              (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length:\n              this.yylloc.first_column - len\n          };\n\n        if (this.options.ranges) {\n            this.yylloc.range = [r[0], r[0] + this.yyleng - len];\n        }\n        return this;\n    },\nmore:function () {\n        this._more = true;\n        return this;\n    },\nless:function (n) {\n        this.unput(this.match.slice(n));\n    },\npastInput:function () {\n        var past = this.matched.substr(0, this.matched.length - this.match.length);\n        return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\\n/g, \"\");\n    },\nupcomingInput:function () {\n        var next = this.match;\n        if (next.length < 20) {\n            next += this._input.substr(0, 20-next.length);\n        }\n        return (next.substr(0,20)+(next.length > 20 ? '...':'')).replace(/\\n/g, \"\");\n    },\nshowPosition:function () {\n        var pre = this.pastInput();\n        var c = new Array(pre.length + 1).join(\"-\");\n        return pre + this.upcomingInput() + \"\\n\" + c+\"^\";\n    },\nnext:function () {\n        if (this.done) {\n            return this.EOF;\n        }\n        if (!this._input) this.done = true;\n\n        var token,\n            match,\n            tempMatch,\n            index,\n            col,\n            lines;\n        if (!this._more) {\n            this.yytext = '';\n            this.match = '';\n        }\n        var rules = this._currentRules();\n        for (var i=0;i < rules.length; i++) {\n            tempMatch = this._input.match(this.rules[rules[i]]);\n            if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {\n                match = tempMatch;\n                index = i;\n                if (!this.options.flex) break;\n            }\n        }\n        if (match) {\n            lines = match[0].match(/(?:\\r\\n?|\\n).*/g);\n            if (lines) this.yylineno += lines.length;\n            this.yylloc = {first_line: this.yylloc.last_line,\n                           last_line: this.yylineno+1,\n                           first_column: this.yylloc.last_column,\n                           last_column: lines ? lines[lines.length-1].length-lines[lines.length-1].match(/\\r?\\n?/)[0].length : this.yylloc.last_column + match[0].length};\n            this.yytext += match[0];\n            this.match += match[0];\n            this.matches = match;\n            this.yyleng = this.yytext.length;\n            if (this.options.ranges) {\n                this.yylloc.range = [this.offset, this.offset += this.yyleng];\n            }\n            this._more = false;\n            this._input = this._input.slice(match[0].length);\n            this.matched += match[0];\n            token = this.performAction.call(this, this.yy, this, rules[index],this.conditionStack[this.conditionStack.length-1]);\n            if (this.done && this._input) this.done = false;\n            if (token) return token;\n            else return;\n        }\n        if (this._input === \"\") {\n            return this.EOF;\n        } else {\n            return this.parseError('Lexical error on line '+(this.yylineno+1)+'. Unrecognized text.\\n'+this.showPosition(),\n                    {text: \"\", token: null, line: this.yylineno});\n        }\n    },\nlex:function lex () {\n        var r = this.next();\n        if (typeof r !== 'undefined') {\n            return r;\n        } else {\n            return this.lex();\n        }\n    },\nbegin:function begin (condition) {\n        this.conditionStack.push(condition);\n    },\npopState:function popState () {\n        return this.conditionStack.pop();\n    },\n_currentRules:function _currentRules () {\n        return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules;\n    },\ntopState:function () {\n        return this.conditionStack[this.conditionStack.length-2];\n    },\npushState:function begin (condition) {\n        this.begin(condition);\n    }});\nlexer.options = {};\nlexer.performAction = function anonymous(yy,yy_,$avoiding_name_collisions,YY_START\n) {\n\n\nfunction strip(start, end) {\n  return yy_.yytext = yy_.yytext.substring(start, yy_.yyleng - end + start);\n}\n\n\nvar YYSTATE=YY_START\nswitch($avoiding_name_collisions) {\ncase 0:\n                                   if(yy_.yytext.slice(-2) === \"\\\\\\\\\") {\n                                     strip(0,1);\n                                     this.begin(\"mu\");\n                                   } else if(yy_.yytext.slice(-1) === \"\\\\\") {\n                                     strip(0,1);\n                                     this.begin(\"emu\");\n                                   } else {\n                                     this.begin(\"mu\");\n                                   }\n                                   if(yy_.yytext) return 15;\n                                 \nbreak;\ncase 1:return 15;\nbreak;\ncase 2:\n                                   this.popState();\n                                   return 15;\n                                 \nbreak;\ncase 3:this.begin('raw'); return 15;\nbreak;\ncase 4:\n                                  this.popState();\n                                  // Should be using `this.topState()` below, but it currently\n                                  // returns the second top instead of the first top. Opened an\n                                  // issue about it at https://github.com/zaach/jison/issues/291\n                                  if (this.conditionStack[this.conditionStack.length-1] === 'raw') {\n                                    return 15;\n                                  } else {\n                                    strip(5, 9);\n                                    return 'END_RAW_BLOCK';\n                                  }\n                                 \nbreak;\ncase 5: return 15; \nbreak;\ncase 6:\n  this.popState();\n  return 14;\n\nbreak;\ncase 7:return 65;\nbreak;\ncase 8:return 68;\nbreak;\ncase 9: return 19; \nbreak;\ncase 10:\n                                  this.popState();\n                                  this.begin('raw');\n                                  return 23;\n                                 \nbreak;\ncase 11:return 55;\nbreak;\ncase 12:return 60;\nbreak;\ncase 13:return 29;\nbreak;\ncase 14:return 47;\nbreak;\ncase 15:this.popState(); return 44;\nbreak;\ncase 16:this.popState(); return 44;\nbreak;\ncase 17:return 34;\nbreak;\ncase 18:return 39;\nbreak;\ncase 19:return 51;\nbreak;\ncase 20:return 48;\nbreak;\ncase 21:\n  this.unput(yy_.yytext);\n  this.popState();\n  this.begin('com');\n\nbreak;\ncase 22:\n  this.popState();\n  return 14;\n\nbreak;\ncase 23:return 48;\nbreak;\ncase 24:return 73;\nbreak;\ncase 25:return 72;\nbreak;\ncase 26:return 72;\nbreak;\ncase 27:return 87;\nbreak;\ncase 28:// ignore whitespace\nbreak;\ncase 29:this.popState(); return 54;\nbreak;\ncase 30:this.popState(); return 33;\nbreak;\ncase 31:yy_.yytext = strip(1,2).replace(/\\\\\"/g,'\"'); return 80;\nbreak;\ncase 32:yy_.yytext = strip(1,2).replace(/\\\\'/g,\"'\"); return 80;\nbreak;\ncase 33:return 85;\nbreak;\ncase 34:return 82;\nbreak;\ncase 35:return 82;\nbreak;\ncase 36:return 83;\nbreak;\ncase 37:return 84;\nbreak;\ncase 38:return 81;\nbreak;\ncase 39:return 75;\nbreak;\ncase 40:return 77;\nbreak;\ncase 41:return 72;\nbreak;\ncase 42:yy_.yytext = yy_.yytext.replace(/\\\\([\\\\\\]])/g,'$1'); return 72;\nbreak;\ncase 43:return 'INVALID';\nbreak;\ncase 44:return 5;\nbreak;\n}\n};\nlexer.rules = [/^(?:[^\\x00]*?(?=(\\{\\{)))/,/^(?:[^\\x00]+)/,/^(?:[^\\x00]{2,}?(?=(\\{\\{|\\\\\\{\\{|\\\\\\\\\\{\\{|$)))/,/^(?:\\{\\{\\{\\{(?=[^/]))/,/^(?:\\{\\{\\{\\{\\/[^\\s!\"#%-,\\.\\/;->@\\[-\\^`\\{-~]+(?=[=}\\s\\/.])\\}\\}\\}\\})/,/^(?:[^\\x00]+?(?=(\\{\\{\\{\\{)))/,/^(?:[\\s\\S]*?--(~)?\\}\\})/,/^(?:\\()/,/^(?:\\))/,/^(?:\\{\\{\\{\\{)/,/^(?:\\}\\}\\}\\})/,/^(?:\\{\\{(~)?>)/,/^(?:\\{\\{(~)?#>)/,/^(?:\\{\\{(~)?#\\*?)/,/^(?:\\{\\{(~)?\\/)/,/^(?:\\{\\{(~)?\\^\\s*(~)?\\}\\})/,/^(?:\\{\\{(~)?\\s*else\\s*(~)?\\}\\})/,/^(?:\\{\\{(~)?\\^)/,/^(?:\\{\\{(~)?\\s*else\\b)/,/^(?:\\{\\{(~)?\\{)/,/^(?:\\{\\{(~)?&)/,/^(?:\\{\\{(~)?!--)/,/^(?:\\{\\{(~)?![\\s\\S]*?\\}\\})/,/^(?:\\{\\{(~)?\\*?)/,/^(?:=)/,/^(?:\\.\\.)/,/^(?:\\.(?=([=~}\\s\\/.)|])))/,/^(?:[\\/.])/,/^(?:\\s+)/,/^(?:\\}(~)?\\}\\})/,/^(?:(~)?\\}\\})/,/^(?:\"(\\\\[\"]|[^\"])*\")/,/^(?:'(\\\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\\s)])))/,/^(?:false(?=([~}\\s)])))/,/^(?:undefined(?=([~}\\s)])))/,/^(?:null(?=([~}\\s)])))/,/^(?:-?[0-9]+(?:\\.[0-9]+)?(?=([~}\\s)])))/,/^(?:as\\s+\\|)/,/^(?:\\|)/,/^(?:([^\\s!\"#%-,\\.\\/;->@\\[-\\^`\\{-~]+(?=([=~}\\s\\/.)|]))))/,/^(?:\\[(\\\\\\]|[^\\]])*\\])/,/^(?:.)/,/^(?:$)/];\nlexer.conditions = {\"mu\":{\"rules\":[7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44],\"inclusive\":false},\"emu\":{\"rules\":[2],\"inclusive\":false},\"com\":{\"rules\":[6],\"inclusive\":false},\"raw\":{\"rules\":[3,4,5],\"inclusive\":false},\"INITIAL\":{\"rules\":[0,1,44],\"inclusive\":true}};\nreturn lexer;})()\nparser.lexer = lexer;\nfunction Parser () { this.yy = {}; }Parser.prototype = parser;parser.Parser = Parser;\nreturn new Parser;\n})();export default handlebars;\n", "import Exception from '../exception';\n\nfunction Visitor() {\n  this.parents = [];\n}\n\nVisitor.prototype = {\n  constructor: Visitor,\n  mutating: false,\n\n  // Visits a given value. If mutating, will replace the value if necessary.\n  acceptKey: function(node, name) {\n    let value = this.accept(node[name]);\n    if (this.mutating) {\n      // Hacky sanity check: This may have a few false positives for type for the helper\n      // methods but will generally do the right thing without a lot of overhead.\n      if (value && !Visitor.prototype[value.type]) {\n        throw new Exception(\n          'Unexpected node type \"' +\n            value.type +\n            '\" found when accepting ' +\n            name +\n            ' on ' +\n            node.type\n        );\n      }\n      node[name] = value;\n    }\n  },\n\n  // Performs an accept operation with added sanity check to ensure\n  // required keys are not removed.\n  acceptRequired: function(node, name) {\n    this.acceptKey(node, name);\n\n    if (!node[name]) {\n      throw new Exception(node.type + ' requires ' + name);\n    }\n  },\n\n  // Traverses a given array. If mutating, empty respnses will be removed\n  // for child elements.\n  acceptArray: function(array) {\n    for (let i = 0, l = array.length; i < l; i++) {\n      this.acceptKey(array, i);\n\n      if (!array[i]) {\n        array.splice(i, 1);\n        i--;\n        l--;\n      }\n    }\n  },\n\n  accept: function(object) {\n    if (!object) {\n      return;\n    }\n\n    /* istanbul ignore next: Sanity code */\n    if (!this[object.type]) {\n      throw new Exception('Unknown type: ' + object.type, object);\n    }\n\n    if (this.current) {\n      this.parents.unshift(this.current);\n    }\n    this.current = object;\n\n    let ret = this[object.type](object);\n\n    this.current = this.parents.shift();\n\n    if (!this.mutating || ret) {\n      return ret;\n    } else if (ret !== false) {\n      return object;\n    }\n  },\n\n  Program: function(program) {\n    this.acceptArray(program.body);\n  },\n\n  MustacheStatement: visitSubExpression,\n  Decorator: visitSubExpression,\n\n  BlockStatement: visitBlock,\n  DecoratorBlock: visitBlock,\n\n  PartialStatement: visitPartial,\n  PartialBlockStatement: function(partial) {\n    visitPartial.call(this, partial);\n\n    this.acceptKey(partial, 'program');\n  },\n\n  ContentStatement: function(/* content */) {},\n  CommentStatement: function(/* comment */) {},\n\n  SubExpression: visitSubExpression,\n\n  PathExpression: function(/* path */) {},\n\n  StringLiteral: function(/* string */) {},\n  NumberLiteral: function(/* number */) {},\n  BooleanLiteral: function(/* bool */) {},\n  UndefinedLiteral: function(/* literal */) {},\n  NullLiteral: function(/* literal */) {},\n\n  Hash: function(hash) {\n    this.acceptArray(hash.pairs);\n  },\n  HashPair: function(pair) {\n    this.acceptRequired(pair, 'value');\n  }\n};\n\nfunction visitSubExpression(mustache) {\n  this.acceptRequired(mustache, 'path');\n  this.acceptArray(mustache.params);\n  this.acceptKey(mustache, 'hash');\n}\nfunction visitBlock(block) {\n  visitSubExpression.call(this, block);\n\n  this.acceptKey(block, 'program');\n  this.acceptKey(block, 'inverse');\n}\nfunction visitPartial(partial) {\n  this.acceptRequired(partial, 'name');\n  this.acceptArray(partial.params);\n  this.acceptKey(partial, 'hash');\n}\n\nexport default Visitor;\n", "import Visitor from './visitor';\n\nfunction WhitespaceControl(options = {}) {\n  this.options = options;\n}\nWhitespaceControl.prototype = new Visitor();\n\nWhitespaceControl.prototype.Program = function(program) {\n  const doStandalone = !this.options.ignoreStandalone;\n\n  let isRoot = !this.isRootSeen;\n  this.isRootSeen = true;\n\n  let body = program.body;\n  for (let i = 0, l = body.length; i < l; i++) {\n    let current = body[i],\n      strip = this.accept(current);\n\n    if (!strip) {\n      continue;\n    }\n\n    let _isPrevWhitespace = isPrevWhitespace(body, i, isRoot),\n      _isNextWhitespace = isNextWhitespace(body, i, isRoot),\n      openStandalone = strip.openStandalone && _isPrevWhitespace,\n      closeStandalone = strip.closeStandalone && _isNextWhitespace,\n      inlineStandalone =\n        strip.inlineStandalone && _isPrevWhitespace && _isNextWhitespace;\n\n    if (strip.close) {\n      omitRight(body, i, true);\n    }\n    if (strip.open) {\n      omitLeft(body, i, true);\n    }\n\n    if (doStandalone && inlineStandalone) {\n      omitRight(body, i);\n\n      if (omitLeft(body, i)) {\n        // If we are on a standalone node, save the indent info for partials\n        if (current.type === 'PartialStatement') {\n          // Pull out the whitespace from the final line\n          current.indent = /([ \\t]+$)/.exec(body[i - 1].original)[1];\n        }\n      }\n    }\n    if (doStandalone && openStandalone) {\n      omitRight((current.program || current.inverse).body);\n\n      // Strip out the previous content node if it's whitespace only\n      omitLeft(body, i);\n    }\n    if (doStandalone && closeStandalone) {\n      // Always strip the next node\n      omitRight(body, i);\n\n      omitLeft((current.inverse || current.program).body);\n    }\n  }\n\n  return program;\n};\n\nWhitespaceControl.prototype.BlockStatement = WhitespaceControl.prototype.DecoratorBlock = WhitespaceControl.prototype.PartialBlockStatement = function(\n  block\n) {\n  this.accept(block.program);\n  this.accept(block.inverse);\n\n  // Find the inverse program that is involed with whitespace stripping.\n  let program = block.program || block.inverse,\n    inverse = block.program && block.inverse,\n    firstInverse = inverse,\n    lastInverse = inverse;\n\n  if (inverse && inverse.chained) {\n    firstInverse = inverse.body[0].program;\n\n    // Walk the inverse chain to find the last inverse that is actually in the chain.\n    while (lastInverse.chained) {\n      lastInverse = lastInverse.body[lastInverse.body.length - 1].program;\n    }\n  }\n\n  let strip = {\n    open: block.openStrip.open,\n    close: block.closeStrip.close,\n\n    // Determine the standalone candiacy. Basically flag our content as being possibly standalone\n    // so our parent can determine if we actually are standalone\n    openStandalone: isNextWhitespace(program.body),\n    closeStandalone: isPrevWhitespace((firstInverse || program).body)\n  };\n\n  if (block.openStrip.close) {\n    omitRight(program.body, null, true);\n  }\n\n  if (inverse) {\n    let inverseStrip = block.inverseStrip;\n\n    if (inverseStrip.open) {\n      omitLeft(program.body, null, true);\n    }\n\n    if (inverseStrip.close) {\n      omitRight(firstInverse.body, null, true);\n    }\n    if (block.closeStrip.open) {\n      omitLeft(lastInverse.body, null, true);\n    }\n\n    // Find standalone else statments\n    if (\n      !this.options.ignoreStandalone &&\n      isPrevWhitespace(program.body) &&\n      isNextWhitespace(firstInverse.body)\n    ) {\n      omitLeft(program.body);\n      omitRight(firstInverse.body);\n    }\n  } else if (block.closeStrip.open) {\n    omitLeft(program.body, null, true);\n  }\n\n  return strip;\n};\n\nWhitespaceControl.prototype.Decorator = WhitespaceControl.prototype.MustacheStatement = function(\n  mustache\n) {\n  return mustache.strip;\n};\n\nWhitespaceControl.prototype.PartialStatement = WhitespaceControl.prototype.CommentStatement = function(\n  node\n) {\n  /* istanbul ignore next */\n  let strip = node.strip || {};\n  return {\n    inlineStandalone: true,\n    open: strip.open,\n    close: strip.close\n  };\n};\n\nfunction isPrevWhitespace(body, i, isRoot) {\n  if (i === undefined) {\n    i = body.length;\n  }\n\n  // Nodes that end with newlines are considered whitespace (but are special\n  // cased for strip operations)\n  let prev = body[i - 1],\n    sibling = body[i - 2];\n  if (!prev) {\n    return isRoot;\n  }\n\n  if (prev.type === 'ContentStatement') {\n    return (sibling || !isRoot ? /\\r?\\n\\s*?$/ : /(^|\\r?\\n)\\s*?$/).test(\n      prev.original\n    );\n  }\n}\nfunction isNextWhitespace(body, i, isRoot) {\n  if (i === undefined) {\n    i = -1;\n  }\n\n  let next = body[i + 1],\n    sibling = body[i + 2];\n  if (!next) {\n    return isRoot;\n  }\n\n  if (next.type === 'ContentStatement') {\n    return (sibling || !isRoot ? /^\\s*?\\r?\\n/ : /^\\s*?(\\r?\\n|$)/).test(\n      next.original\n    );\n  }\n}\n\n// Marks the node to the right of the position as omitted.\n// I.e. {{foo}}' ' will mark the ' ' node as omitted.\n//\n// If i is undefined, then the first child will be marked as such.\n//\n// If mulitple is truthy then all whitespace will be stripped out until non-whitespace\n// content is met.\nfunction omitRight(body, i, multiple) {\n  let current = body[i == null ? 0 : i + 1];\n  if (\n    !current ||\n    current.type !== 'ContentStatement' ||\n    (!multiple && current.rightStripped)\n  ) {\n    return;\n  }\n\n  let original = current.value;\n  current.value = current.value.replace(\n    multiple ? /^\\s+/ : /^[ \\t]*\\r?\\n?/,\n    ''\n  );\n  current.rightStripped = current.value !== original;\n}\n\n// Marks the node to the left of the position as omitted.\n// I.e. ' '{{foo}} will mark the ' ' node as omitted.\n//\n// If i is undefined then the last child will be marked as such.\n//\n// If mulitple is truthy then all whitespace will be stripped out until non-whitespace\n// content is met.\nfunction omitLeft(body, i, multiple) {\n  let current = body[i == null ? body.length - 1 : i - 1];\n  if (\n    !current ||\n    current.type !== 'ContentStatement' ||\n    (!multiple && current.leftStripped)\n  ) {\n    return;\n  }\n\n  // We omit the last node if it's whitespace only and not preceded by a non-content node.\n  let original = current.value;\n  current.value = current.value.replace(multiple ? /\\s+$/ : /[ \\t]+$/, '');\n  current.leftStripped = current.value !== original;\n  return current.leftStripped;\n}\n\nexport default WhitespaceControl;\n", "import Exception from '../exception';\n\nfunction validateClose(open, close) {\n  close = close.path ? close.path.original : close;\n\n  if (open.path.original !== close) {\n    let errorNode = { loc: open.path.loc };\n\n    throw new Exception(\n      open.path.original + \" doesn't match \" + close,\n      errorNode\n    );\n  }\n}\n\nexport function SourceLocation(source, locInfo) {\n  this.source = source;\n  this.start = {\n    line: locInfo.first_line,\n    column: locInfo.first_column\n  };\n  this.end = {\n    line: locInfo.last_line,\n    column: locInfo.last_column\n  };\n}\n\nexport function id(token) {\n  if (/^\\[.*\\]$/.test(token)) {\n    return token.substring(1, token.length - 1);\n  } else {\n    return token;\n  }\n}\n\nexport function stripFlags(open, close) {\n  return {\n    open: open.charAt(2) === '~',\n    close: close.charAt(close.length - 3) === '~'\n  };\n}\n\nexport function stripComment(comment) {\n  return comment.replace(/^\\{\\{~?!-?-?/, '').replace(/-?-?~?\\}\\}$/, '');\n}\n\nexport function preparePath(data, parts, loc) {\n  loc = this.locInfo(loc);\n\n  let original = data ? '@' : '',\n    dig = [],\n    depth = 0;\n\n  for (let i = 0, l = parts.length; i < l; i++) {\n    let part = parts[i].part,\n      // If we have [] syntax then we do not treat path references as operators,\n      // i.e. foo.[this] resolves to approximately context.foo['this']\n      isLiteral = parts[i].original !== part;\n    original += (parts[i].separator || '') + part;\n\n    if (!isLiteral && (part === '..' || part === '.' || part === 'this')) {\n      if (dig.length > 0) {\n        throw new Exception('Invalid path: ' + original, { loc });\n      } else if (part === '..') {\n        depth++;\n      }\n    } else {\n      dig.push(part);\n    }\n  }\n\n  return {\n    type: 'PathExpression',\n    data,\n    depth,\n    parts: dig,\n    original,\n    loc\n  };\n}\n\nexport function prepareMustache(path, params, hash, open, strip, locInfo) {\n  // Must use charAt to support IE pre-10\n  let escapeFlag = open.charAt(3) || open.charAt(2),\n    escaped = escapeFlag !== '{' && escapeFlag !== '&';\n\n  let decorator = /\\*/.test(open);\n  return {\n    type: decorator ? 'Decorator' : 'MustacheStatement',\n    path,\n    params,\n    hash,\n    escaped,\n    strip,\n    loc: this.locInfo(locInfo)\n  };\n}\n\nexport function prepareRawBlock(openRawBlock, contents, close, locInfo) {\n  validateClose(openRawBlock, close);\n\n  locInfo = this.locInfo(locInfo);\n  let program = {\n    type: 'Program',\n    body: contents,\n    strip: {},\n    loc: locInfo\n  };\n\n  return {\n    type: 'BlockStatement',\n    path: openRawBlock.path,\n    params: openRawBlock.params,\n    hash: openRawBlock.hash,\n    program,\n    openStrip: {},\n    inverseStrip: {},\n    closeStrip: {},\n    loc: locInfo\n  };\n}\n\nexport function prepareBlock(\n  openBlock,\n  program,\n  inverseAndProgram,\n  close,\n  inverted,\n  locInfo\n) {\n  if (close && close.path) {\n    validateClose(openBlock, close);\n  }\n\n  let decorator = /\\*/.test(openBlock.open);\n\n  program.blockParams = openBlock.blockParams;\n\n  let inverse, inverseStrip;\n\n  if (inverseAndProgram) {\n    if (decorator) {\n      throw new Exception(\n        'Unexpected inverse block on decorator',\n        inverseAndProgram\n      );\n    }\n\n    if (inverseAndProgram.chain) {\n      inverseAndProgram.program.body[0].closeStrip = close.strip;\n    }\n\n    inverseStrip = inverseAndProgram.strip;\n    inverse = inverseAndProgram.program;\n  }\n\n  if (inverted) {\n    inverted = inverse;\n    inverse = program;\n    program = inverted;\n  }\n\n  return {\n    type: decorator ? 'DecoratorBlock' : 'BlockStatement',\n    path: openBlock.path,\n    params: openBlock.params,\n    hash: openBlock.hash,\n    program,\n    inverse,\n    openStrip: openBlock.strip,\n    inverseStrip,\n    closeStrip: close && close.strip,\n    loc: this.locInfo(locInfo)\n  };\n}\n\nexport function prepareProgram(statements, loc) {\n  if (!loc && statements.length) {\n    const firstLoc = statements[0].loc,\n      lastLoc = statements[statements.length - 1].loc;\n\n    /* istanbul ignore else */\n    if (firstLoc && lastLoc) {\n      loc = {\n        source: firstLoc.source,\n        start: {\n          line: firstLoc.start.line,\n          column: firstLoc.start.column\n        },\n        end: {\n          line: lastLoc.end.line,\n          column: lastLoc.end.column\n        }\n      };\n    }\n  }\n\n  return {\n    type: 'Program',\n    body: statements,\n    strip: {},\n    loc: loc\n  };\n}\n\nexport function preparePartialBlock(open, program, close, locInfo) {\n  validateClose(open, close);\n\n  return {\n    type: 'PartialBlockStatement',\n    name: open.path,\n    params: open.params,\n    hash: open.hash,\n    program,\n    openStrip: open.strip,\n    closeStrip: close && close.strip,\n    loc: this.locInfo(locInfo)\n  };\n}\n", "import parser from './parser';\nimport WhitespaceControl from './whitespace-control';\nimport * as Helpers from './helpers';\nimport { extend } from '../utils';\n\nexport { parser };\n\nlet yy = {};\nextend(yy, Helpers);\n\nexport function parseWithoutProcessing(input, options) {\n  // Just return if an already-compiled AST was passed in.\n  if (input.type === 'Program') {\n    return input;\n  }\n\n  parser.yy = yy;\n\n  // Altering the shared object here, but this is ok as parser is a sync operation\n  yy.locInfo = function(locInfo) {\n    return new yy.SourceLocation(options && options.srcName, locInfo);\n  };\n\n  let ast = parser.parse(input);\n\n  return ast;\n}\n\nexport function parse(input, options) {\n  let ast = parseWithoutProcessing(input, options);\n  let strip = new WhitespaceControl(options);\n\n  return strip.accept(ast);\n}\n", "/* eslint-disable new-cap */\n\nimport Exception from '../exception';\nimport { isArray, indexOf, extend } from '../utils';\nimport AST from './ast';\n\nconst slice = [].slice;\n\nexport function Compiler() {}\n\n// the foundHelper register will disambiguate helper lookup from finding a\n// function in a context. This is necessary for mustache compatibility, which\n// requires that context functions in blocks are evaluated by blockHelperMissing,\n// and then proceed as if the resulting value was provided to blockHelperMissing.\n\nCompiler.prototype = {\n  compiler: Compiler,\n\n  equals: function(other) {\n    let len = this.opcodes.length;\n    if (other.opcodes.length !== len) {\n      return false;\n    }\n\n    for (let i = 0; i < len; i++) {\n      let opcode = this.opcodes[i],\n        otherOpcode = other.opcodes[i];\n      if (\n        opcode.opcode !== otherOpcode.opcode ||\n        !argEquals(opcode.args, otherOpcode.args)\n      ) {\n        return false;\n      }\n    }\n\n    // We know that length is the same between the two arrays because they are directly tied\n    // to the opcode behavior above.\n    len = this.children.length;\n    for (let i = 0; i < len; i++) {\n      if (!this.children[i].equals(other.children[i])) {\n        return false;\n      }\n    }\n\n    return true;\n  },\n\n  guid: 0,\n\n  compile: function(program, options) {\n    this.sourceNode = [];\n    this.opcodes = [];\n    this.children = [];\n    this.options = options;\n    this.stringParams = options.stringParams;\n    this.trackIds = options.trackIds;\n\n    options.blockParams = options.blockParams || [];\n\n    options.knownHelpers = extend(\n      Object.create(null),\n      {\n        helperMissing: true,\n        blockHelperMissing: true,\n        each: true,\n        if: true,\n        unless: true,\n        with: true,\n        log: true,\n        lookup: true\n      },\n      options.knownHelpers\n    );\n\n    return this.accept(program);\n  },\n\n  compileProgram: function(program) {\n    let childCompiler = new this.compiler(), // eslint-disable-line new-cap\n      result = childCompiler.compile(program, this.options),\n      guid = this.guid++;\n\n    this.usePartial = this.usePartial || result.usePartial;\n\n    this.children[guid] = result;\n    this.useDepths = this.useDepths || result.useDepths;\n\n    return guid;\n  },\n\n  accept: function(node) {\n    /* istanbul ignore next: Sanity code */\n    if (!this[node.type]) {\n      throw new Exception('Unknown type: ' + node.type, node);\n    }\n\n    this.sourceNode.unshift(node);\n    let ret = this[node.type](node);\n    this.sourceNode.shift();\n    return ret;\n  },\n\n  Program: function(program) {\n    this.options.blockParams.unshift(program.blockParams);\n\n    let body = program.body,\n      bodyLength = body.length;\n    for (let i = 0; i < bodyLength; i++) {\n      this.accept(body[i]);\n    }\n\n    this.options.blockParams.shift();\n\n    this.isSimple = bodyLength === 1;\n    this.blockParams = program.blockParams ? program.blockParams.length : 0;\n\n    return this;\n  },\n\n  BlockStatement: function(block) {\n    transformLiteralToPath(block);\n\n    let program = block.program,\n      inverse = block.inverse;\n\n    program = program && this.compileProgram(program);\n    inverse = inverse && this.compileProgram(inverse);\n\n    let type = this.classifySexpr(block);\n\n    if (type === 'helper') {\n      this.helperSexpr(block, program, inverse);\n    } else if (type === 'simple') {\n      this.simpleSexpr(block);\n\n      // now that the simple mustache is resolved, we need to\n      // evaluate it by executing `blockHelperMissing`\n      this.opcode('pushProgram', program);\n      this.opcode('pushProgram', inverse);\n      this.opcode('emptyHash');\n      this.opcode('blockValue', block.path.original);\n    } else {\n      this.ambiguousSexpr(block, program, inverse);\n\n      // now that the simple mustache is resolved, we need to\n      // evaluate it by executing `blockHelperMissing`\n      this.opcode('pushProgram', program);\n      this.opcode('pushProgram', inverse);\n      this.opcode('emptyHash');\n      this.opcode('ambiguousBlockValue');\n    }\n\n    this.opcode('append');\n  },\n\n  DecoratorBlock(decorator) {\n    let program = decorator.program && this.compileProgram(decorator.program);\n    let params = this.setupFullMustacheParams(decorator, program, undefined),\n      path = decorator.path;\n\n    this.useDecorators = true;\n    this.opcode('registerDecorator', params.length, path.original);\n  },\n\n  PartialStatement: function(partial) {\n    this.usePartial = true;\n\n    let program = partial.program;\n    if (program) {\n      program = this.compileProgram(partial.program);\n    }\n\n    let params = partial.params;\n    if (params.length > 1) {\n      throw new Exception(\n        'Unsupported number of partial arguments: ' + params.length,\n        partial\n      );\n    } else if (!params.length) {\n      if (this.options.explicitPartialContext) {\n        this.opcode('pushLiteral', 'undefined');\n      } else {\n        params.push({ type: 'PathExpression', parts: [], depth: 0 });\n      }\n    }\n\n    let partialName = partial.name.original,\n      isDynamic = partial.name.type === 'SubExpression';\n    if (isDynamic) {\n      this.accept(partial.name);\n    }\n\n    this.setupFullMustacheParams(partial, program, undefined, true);\n\n    let indent = partial.indent || '';\n    if (this.options.preventIndent && indent) {\n      this.opcode('appendContent', indent);\n      indent = '';\n    }\n\n    this.opcode('invokePartial', isDynamic, partialName, indent);\n    this.opcode('append');\n  },\n  PartialBlockStatement: function(partialBlock) {\n    this.PartialStatement(partialBlock);\n  },\n\n  MustacheStatement: function(mustache) {\n    this.SubExpression(mustache);\n\n    if (mustache.escaped && !this.options.noEscape) {\n      this.opcode('appendEscaped');\n    } else {\n      this.opcode('append');\n    }\n  },\n  Decorator(decorator) {\n    this.DecoratorBlock(decorator);\n  },\n\n  ContentStatement: function(content) {\n    if (content.value) {\n      this.opcode('appendContent', content.value);\n    }\n  },\n\n  CommentStatement: function() {},\n\n  SubExpression: function(sexpr) {\n    transformLiteralToPath(sexpr);\n    let type = this.classifySexpr(sexpr);\n\n    if (type === 'simple') {\n      this.simpleSexpr(sexpr);\n    } else if (type === 'helper') {\n      this.helperSexpr(sexpr);\n    } else {\n      this.ambiguousSexpr(sexpr);\n    }\n  },\n  ambiguousSexpr: function(sexpr, program, inverse) {\n    let path = sexpr.path,\n      name = path.parts[0],\n      isBlock = program != null || inverse != null;\n\n    this.opcode('getContext', path.depth);\n\n    this.opcode('pushProgram', program);\n    this.opcode('pushProgram', inverse);\n\n    path.strict = true;\n    this.accept(path);\n\n    this.opcode('invokeAmbiguous', name, isBlock);\n  },\n\n  simpleSexpr: function(sexpr) {\n    let path = sexpr.path;\n    path.strict = true;\n    this.accept(path);\n    this.opcode('resolvePossibleLambda');\n  },\n\n  helperSexpr: function(sexpr, program, inverse) {\n    let params = this.setupFullMustacheParams(sexpr, program, inverse),\n      path = sexpr.path,\n      name = path.parts[0];\n\n    if (this.options.knownHelpers[name]) {\n      this.opcode('invokeKnownHelper', params.length, name);\n    } else if (this.options.knownHelpersOnly) {\n      throw new Exception(\n        'You specified knownHelpersOnly, but used the unknown helper ' + name,\n        sexpr\n      );\n    } else {\n      path.strict = true;\n      path.falsy = true;\n\n      this.accept(path);\n      this.opcode(\n        'invokeHelper',\n        params.length,\n        path.original,\n        AST.helpers.simpleId(path)\n      );\n    }\n  },\n\n  PathExpression: function(path) {\n    this.addDepth(path.depth);\n    this.opcode('getContext', path.depth);\n\n    let name = path.parts[0],\n      scoped = AST.helpers.scopedId(path),\n      blockParamId = !path.depth && !scoped && this.blockParamIndex(name);\n\n    if (blockParamId) {\n      this.opcode('lookupBlockParam', blockParamId, path.parts);\n    } else if (!name) {\n      // Context reference, i.e. `{{foo .}}` or `{{foo ..}}`\n      this.opcode('pushContext');\n    } else if (path.data) {\n      this.options.data = true;\n      this.opcode('lookupData', path.depth, path.parts, path.strict);\n    } else {\n      this.opcode(\n        'lookupOnContext',\n        path.parts,\n        path.falsy,\n        path.strict,\n        scoped\n      );\n    }\n  },\n\n  StringLiteral: function(string) {\n    this.opcode('pushString', string.value);\n  },\n\n  NumberLiteral: function(number) {\n    this.opcode('pushLiteral', number.value);\n  },\n\n  BooleanLiteral: function(bool) {\n    this.opcode('pushLiteral', bool.value);\n  },\n\n  UndefinedLiteral: function() {\n    this.opcode('pushLiteral', 'undefined');\n  },\n\n  NullLiteral: function() {\n    this.opcode('pushLiteral', 'null');\n  },\n\n  Hash: function(hash) {\n    let pairs = hash.pairs,\n      i = 0,\n      l = pairs.length;\n\n    this.opcode('pushHash');\n\n    for (; i < l; i++) {\n      this.pushParam(pairs[i].value);\n    }\n    while (i--) {\n      this.opcode('assignToHash', pairs[i].key);\n    }\n    this.opcode('popHash');\n  },\n\n  // HELPERS\n  opcode: function(name) {\n    this.opcodes.push({\n      opcode: name,\n      args: slice.call(arguments, 1),\n      loc: this.sourceNode[0].loc\n    });\n  },\n\n  addDepth: function(depth) {\n    if (!depth) {\n      return;\n    }\n\n    this.useDepths = true;\n  },\n\n  classifySexpr: function(sexpr) {\n    let isSimple = AST.helpers.simpleId(sexpr.path);\n\n    let isBlockParam = isSimple && !!this.blockParamIndex(sexpr.path.parts[0]);\n\n    // a mustache is an eligible helper if:\n    // * its id is simple (a single part, not `this` or `..`)\n    let isHelper = !isBlockParam && AST.helpers.helperExpression(sexpr);\n\n    // if a mustache is an eligible helper but not a definite\n    // helper, it is ambiguous, and will be resolved in a later\n    // pass or at runtime.\n    let isEligible = !isBlockParam && (isHelper || isSimple);\n\n    // if ambiguous, we can possibly resolve the ambiguity now\n    // An eligible helper is one that does not have a complex path, i.e. `this.foo`, `../foo` etc.\n    if (isEligible && !isHelper) {\n      let name = sexpr.path.parts[0],\n        options = this.options;\n      if (options.knownHelpers[name]) {\n        isHelper = true;\n      } else if (options.knownHelpersOnly) {\n        isEligible = false;\n      }\n    }\n\n    if (isHelper) {\n      return 'helper';\n    } else if (isEligible) {\n      return 'ambiguous';\n    } else {\n      return 'simple';\n    }\n  },\n\n  pushParams: function(params) {\n    for (let i = 0, l = params.length; i < l; i++) {\n      this.pushParam(params[i]);\n    }\n  },\n\n  pushParam: function(val) {\n    let value = val.value != null ? val.value : val.original || '';\n\n    if (this.stringParams) {\n      if (value.replace) {\n        value = value.replace(/^(\\.?\\.\\/)*/g, '').replace(/\\//g, '.');\n      }\n\n      if (val.depth) {\n        this.addDepth(val.depth);\n      }\n      this.opcode('getContext', val.depth || 0);\n      this.opcode('pushStringParam', value, val.type);\n\n      if (val.type === 'SubExpression') {\n        // SubExpressions get evaluated and passed in\n        // in string params mode.\n        this.accept(val);\n      }\n    } else {\n      if (this.trackIds) {\n        let blockParamIndex;\n        if (val.parts && !AST.helpers.scopedId(val) && !val.depth) {\n          blockParamIndex = this.blockParamIndex(val.parts[0]);\n        }\n        if (blockParamIndex) {\n          let blockParamChild = val.parts.slice(1).join('.');\n          this.opcode('pushId', 'BlockParam', blockParamIndex, blockParamChild);\n        } else {\n          value = val.original || value;\n          if (value.replace) {\n            value = value\n              .replace(/^this(?:\\.|$)/, '')\n              .replace(/^\\.\\//, '')\n              .replace(/^\\.$/, '');\n          }\n\n          this.opcode('pushId', val.type, value);\n        }\n      }\n      this.accept(val);\n    }\n  },\n\n  setupFullMustacheParams: function(sexpr, program, inverse, omitEmpty) {\n    let params = sexpr.params;\n    this.pushParams(params);\n\n    this.opcode('pushProgram', program);\n    this.opcode('pushProgram', inverse);\n\n    if (sexpr.hash) {\n      this.accept(sexpr.hash);\n    } else {\n      this.opcode('emptyHash', omitEmpty);\n    }\n\n    return params;\n  },\n\n  blockParamIndex: function(name) {\n    for (\n      let depth = 0, len = this.options.blockParams.length;\n      depth < len;\n      depth++\n    ) {\n      let blockParams = this.options.blockParams[depth],\n        param = blockParams && indexOf(blockParams, name);\n      if (blockParams && param >= 0) {\n        return [depth, param];\n      }\n    }\n  }\n};\n\nexport function precompile(input, options, env) {\n  if (\n    input == null ||\n    (typeof input !== 'string' && input.type !== 'Program')\n  ) {\n    throw new Exception(\n      'You must pass a string or Handlebars AST to Handlebars.precompile. You passed ' +\n        input\n    );\n  }\n\n  options = options || {};\n  if (!('data' in options)) {\n    options.data = true;\n  }\n  if (options.compat) {\n    options.useDepths = true;\n  }\n\n  let ast = env.parse(input, options),\n    environment = new env.Compiler().compile(ast, options);\n  return new env.JavaScriptCompiler().compile(environment, options);\n}\n\nexport function compile(input, options = {}, env) {\n  if (\n    input == null ||\n    (typeof input !== 'string' && input.type !== 'Program')\n  ) {\n    throw new Exception(\n      'You must pass a string or Handlebars AST to Handlebars.compile. You passed ' +\n        input\n    );\n  }\n\n  options = extend({}, options);\n  if (!('data' in options)) {\n    options.data = true;\n  }\n  if (options.compat) {\n    options.useDepths = true;\n  }\n\n  let compiled;\n\n  function compileInput() {\n    let ast = env.parse(input, options),\n      environment = new env.Compiler().compile(ast, options),\n      templateSpec = new env.JavaScriptCompiler().compile(\n        environment,\n        options,\n        undefined,\n        true\n      );\n    return env.template(templateSpec);\n  }\n\n  // Template is only compiled on first use and cached after that point.\n  function ret(context, execOptions) {\n    if (!compiled) {\n      compiled = compileInput();\n    }\n    return compiled.call(this, context, execOptions);\n  }\n  ret._setup = function(setupOptions) {\n    if (!compiled) {\n      compiled = compileInput();\n    }\n    return compiled._setup(setupOptions);\n  };\n  ret._child = function(i, data, blockParams, depths) {\n    if (!compiled) {\n      compiled = compileInput();\n    }\n    return compiled._child(i, data, blockParams, depths);\n  };\n  return ret;\n}\n\nfunction argEquals(a, b) {\n  if (a === b) {\n    return true;\n  }\n\n  if (isArray(a) && isArray(b) && a.length === b.length) {\n    for (let i = 0; i < a.length; i++) {\n      if (!argEquals(a[i], b[i])) {\n        return false;\n      }\n    }\n    return true;\n  }\n}\n\nfunction transformLiteralToPath(sexpr) {\n  if (!sexpr.path.parts) {\n    let literal = sexpr.path;\n    // Casting to string here to make false and 0 literal values play nicely with the rest\n    // of the system.\n    sexpr.path = {\n      type: 'PathExpression',\n      data: false,\n      depth: 0,\n      parts: [literal.original + ''],\n      original: literal.original + '',\n      loc: literal.loc\n    };\n  }\n}\n", "/* global define, require */\nimport { isArray } from '../utils';\n\nlet SourceNode;\n\ntry {\n  /* istanbul ignore next */\n  if (typeof define !== 'function' || !define.amd) {\n    // We don't support this in AMD environments. For these environments, we assume that\n    // they are running on the browser and thus have no need for the source-map library.\n    let SourceMap = require('source-map');\n    SourceNode = SourceMap.SourceNode;\n  }\n} catch (err) {\n  /* NOP */\n}\n\n/* istanbul ignore if: tested but not covered in istanbul due to dist build  */\nif (!SourceNode) {\n  SourceNode = function(line, column, srcFile, chunks) {\n    this.src = '';\n    if (chunks) {\n      this.add(chunks);\n    }\n  };\n  /* istanbul ignore next */\n  SourceNode.prototype = {\n    add: function(chunks) {\n      if (isArray(chunks)) {\n        chunks = chunks.join('');\n      }\n      this.src += chunks;\n    },\n    prepend: function(chunks) {\n      if (isArray(chunks)) {\n        chunks = chunks.join('');\n      }\n      this.src = chunks + this.src;\n    },\n    toStringWithSourceMap: function() {\n      return { code: this.toString() };\n    },\n    toString: function() {\n      return this.src;\n    }\n  };\n}\n\nfunction castChunk(chunk, codeGen, loc) {\n  if (isArray(chunk)) {\n    let ret = [];\n\n    for (let i = 0, len = chunk.length; i < len; i++) {\n      ret.push(codeGen.wrap(chunk[i], loc));\n    }\n    return ret;\n  } else if (typeof chunk === 'boolean' || typeof chunk === 'number') {\n    // Handle primitives that the SourceNode will throw up on\n    return chunk + '';\n  }\n  return chunk;\n}\n\nfunction CodeGen(srcFile) {\n  this.srcFile = srcFile;\n  this.source = [];\n}\n\nCodeGen.prototype = {\n  isEmpty() {\n    return !this.source.length;\n  },\n  prepend: function(source, loc) {\n    this.source.unshift(this.wrap(source, loc));\n  },\n  push: function(source, loc) {\n    this.source.push(this.wrap(source, loc));\n  },\n\n  merge: function() {\n    let source = this.empty();\n    this.each(function(line) {\n      source.add(['  ', line, '\\n']);\n    });\n    return source;\n  },\n\n  each: function(iter) {\n    for (let i = 0, len = this.source.length; i < len; i++) {\n      iter(this.source[i]);\n    }\n  },\n\n  empty: function() {\n    let loc = this.currentLocation || { start: {} };\n    return new SourceNode(loc.start.line, loc.start.column, this.srcFile);\n  },\n  wrap: function(chunk, loc = this.currentLocation || { start: {} }) {\n    if (chunk instanceof SourceNode) {\n      return chunk;\n    }\n\n    chunk = castChunk(chunk, this, loc);\n\n    return new SourceNode(\n      loc.start.line,\n      loc.start.column,\n      this.srcFile,\n      chunk\n    );\n  },\n\n  functionCall: function(fn, type, params) {\n    params = this.generateList(params);\n    return this.wrap([fn, type ? '.' + type + '(' : '(', params, ')']);\n  },\n\n  quotedString: function(str) {\n    return (\n      '\"' +\n      (str + '')\n        .replace(/\\\\/g, '\\\\\\\\')\n        .replace(/\"/g, '\\\\\"')\n        .replace(/\\n/g, '\\\\n')\n        .replace(/\\r/g, '\\\\r')\n        .replace(/\\u2028/g, '\\\\u2028') // Per Ecma-262 7.3 + 7.8.4\n        .replace(/\\u2029/g, '\\\\u2029') +\n      '\"'\n    );\n  },\n\n  objectLiteral: function(obj) {\n    let pairs = [];\n\n    Object.keys(obj).forEach(key => {\n      let value = castChunk(obj[key], this);\n      if (value !== 'undefined') {\n        pairs.push([this.quotedString(key), ':', value]);\n      }\n    });\n\n    let ret = this.generateList(pairs);\n    ret.prepend('{');\n    ret.add('}');\n    return ret;\n  },\n\n  generateList: function(entries) {\n    let ret = this.empty();\n\n    for (let i = 0, len = entries.length; i < len; i++) {\n      if (i) {\n        ret.add(',');\n      }\n\n      ret.add(castChunk(entries[i], this));\n    }\n\n    return ret;\n  },\n\n  generateArray: function(entries) {\n    let ret = this.generateList(entries);\n    ret.prepend('[');\n    ret.add(']');\n\n    return ret;\n  }\n};\n\nexport default CodeGen;\n", "import { COMPILER_REVISION, REVISION_CHANGES } from '../base';\nimport Exception from '../exception';\nimport { isArray } from '../utils';\nimport CodeGen from './code-gen';\n\nfunction Literal(value) {\n  this.value = value;\n}\n\nfunction JavaScriptCompiler() {}\n\nJavaScriptCompiler.prototype = {\n  // PUBLIC API: You can override these methods in a subclass to provide\n  // alternative compiled forms for name lookup and buffering semantics\n  nameLookup: function(parent, name /*,  type */) {\n    return this.internalNameLookup(parent, name);\n  },\n  depthedLookup: function(name) {\n    return [\n      this.aliasable('container.lookup'),\n      '(depths, ',\n      JSON.stringify(name),\n      ')'\n    ];\n  },\n\n  compilerInfo: function() {\n    const revision = COMPILER_REVISION,\n      versions = REVISION_CHANGES[revision];\n    return [revision, versions];\n  },\n\n  appendToBuffer: function(source, location, explicit) {\n    // Force a source as this simplifies the merge logic.\n    if (!isArray(source)) {\n      source = [source];\n    }\n    source = this.source.wrap(source, location);\n\n    if (this.environment.isSimple) {\n      return ['return ', source, ';'];\n    } else if (explicit) {\n      // This is a case where the buffer operation occurs as a child of another\n      // construct, generally braces. We have to explicitly output these buffer\n      // operations to ensure that the emitted code goes in the correct location.\n      return ['buffer += ', source, ';'];\n    } else {\n      source.appendToBuffer = true;\n      return source;\n    }\n  },\n\n  initializeBuffer: function() {\n    return this.quotedString('');\n  },\n  // END PUBLIC API\n  internalNameLookup: function(parent, name) {\n    this.lookupPropertyFunctionIsUsed = true;\n    return ['lookupProperty(', parent, ',', JSON.stringify(name), ')'];\n  },\n\n  lookupPropertyFunctionIsUsed: false,\n\n  compile: function(environment, options, context, asObject) {\n    this.environment = environment;\n    this.options = options;\n    this.stringParams = this.options.stringParams;\n    this.trackIds = this.options.trackIds;\n    this.precompile = !asObject;\n\n    this.name = this.environment.name;\n    this.isChild = !!context;\n    this.context = context || {\n      decorators: [],\n      programs: [],\n      environments: []\n    };\n\n    this.preamble();\n\n    this.stackSlot = 0;\n    this.stackVars = [];\n    this.aliases = {};\n    this.registers = { list: [] };\n    this.hashes = [];\n    this.compileStack = [];\n    this.inlineStack = [];\n    this.blockParams = [];\n\n    this.compileChildren(environment, options);\n\n    this.useDepths =\n      this.useDepths ||\n      environment.useDepths ||\n      environment.useDecorators ||\n      this.options.compat;\n    this.useBlockParams = this.useBlockParams || environment.useBlockParams;\n\n    let opcodes = environment.opcodes,\n      opcode,\n      firstLoc,\n      i,\n      l;\n\n    for (i = 0, l = opcodes.length; i < l; i++) {\n      opcode = opcodes[i];\n\n      this.source.currentLocation = opcode.loc;\n      firstLoc = firstLoc || opcode.loc;\n      this[opcode.opcode].apply(this, opcode.args);\n    }\n\n    // Flush any trailing content that might be pending.\n    this.source.currentLocation = firstLoc;\n    this.pushSource('');\n\n    /* istanbul ignore next */\n    if (this.stackSlot || this.inlineStack.length || this.compileStack.length) {\n      throw new Exception('Compile completed with content left on stack');\n    }\n\n    if (!this.decorators.isEmpty()) {\n      this.useDecorators = true;\n\n      this.decorators.prepend([\n        'var decorators = container.decorators, ',\n        this.lookupPropertyFunctionVarDeclaration(),\n        ';\\n'\n      ]);\n      this.decorators.push('return fn;');\n\n      if (asObject) {\n        this.decorators = Function.apply(this, [\n          'fn',\n          'props',\n          'container',\n          'depth0',\n          'data',\n          'blockParams',\n          'depths',\n          this.decorators.merge()\n        ]);\n      } else {\n        this.decorators.prepend(\n          'function(fn, props, container, depth0, data, blockParams, depths) {\\n'\n        );\n        this.decorators.push('}\\n');\n        this.decorators = this.decorators.merge();\n      }\n    } else {\n      this.decorators = undefined;\n    }\n\n    let fn = this.createFunctionContext(asObject);\n    if (!this.isChild) {\n      let ret = {\n        compiler: this.compilerInfo(),\n        main: fn\n      };\n\n      if (this.decorators) {\n        ret.main_d = this.decorators; // eslint-disable-line camelcase\n        ret.useDecorators = true;\n      }\n\n      let { programs, decorators } = this.context;\n      for (i = 0, l = programs.length; i < l; i++) {\n        if (programs[i]) {\n          ret[i] = programs[i];\n          if (decorators[i]) {\n            ret[i + '_d'] = decorators[i];\n            ret.useDecorators = true;\n          }\n        }\n      }\n\n      if (this.environment.usePartial) {\n        ret.usePartial = true;\n      }\n      if (this.options.data) {\n        ret.useData = true;\n      }\n      if (this.useDepths) {\n        ret.useDepths = true;\n      }\n      if (this.useBlockParams) {\n        ret.useBlockParams = true;\n      }\n      if (this.options.compat) {\n        ret.compat = true;\n      }\n\n      if (!asObject) {\n        ret.compiler = JSON.stringify(ret.compiler);\n\n        this.source.currentLocation = { start: { line: 1, column: 0 } };\n        ret = this.objectLiteral(ret);\n\n        if (options.srcName) {\n          ret = ret.toStringWithSourceMap({ file: options.destName });\n          ret.map = ret.map && ret.map.toString();\n        } else {\n          ret = ret.toString();\n        }\n      } else {\n        ret.compilerOptions = this.options;\n      }\n\n      return ret;\n    } else {\n      return fn;\n    }\n  },\n\n  preamble: function() {\n    // track the last context pushed into place to allow skipping the\n    // getContext opcode when it would be a noop\n    this.lastContext = 0;\n    this.source = new CodeGen(this.options.srcName);\n    this.decorators = new CodeGen(this.options.srcName);\n  },\n\n  createFunctionContext: function(asObject) {\n    let varDeclarations = '';\n\n    let locals = this.stackVars.concat(this.registers.list);\n    if (locals.length > 0) {\n      varDeclarations += ', ' + locals.join(', ');\n    }\n\n    // Generate minimizer alias mappings\n    //\n    // When using true SourceNodes, this will update all references to the given alias\n    // as the source nodes are reused in situ. For the non-source node compilation mode,\n    // aliases will not be used, but this case is already being run on the client and\n    // we aren't concern about minimizing the template size.\n    let aliasCount = 0;\n    Object.keys(this.aliases).forEach(alias => {\n      let node = this.aliases[alias];\n      if (node.children && node.referenceCount > 1) {\n        varDeclarations += ', alias' + ++aliasCount + '=' + alias;\n        node.children[0] = 'alias' + aliasCount;\n      }\n    });\n\n    if (this.lookupPropertyFunctionIsUsed) {\n      varDeclarations += ', ' + this.lookupPropertyFunctionVarDeclaration();\n    }\n\n    let params = ['container', 'depth0', 'helpers', 'partials', 'data'];\n\n    if (this.useBlockParams || this.useDepths) {\n      params.push('blockParams');\n    }\n    if (this.useDepths) {\n      params.push('depths');\n    }\n\n    // Perform a second pass over the output to merge content when possible\n    let source = this.mergeSource(varDeclarations);\n\n    if (asObject) {\n      params.push(source);\n\n      return Function.apply(this, params);\n    } else {\n      return this.source.wrap([\n        'function(',\n        params.join(','),\n        ') {\\n  ',\n        source,\n        '}'\n      ]);\n    }\n  },\n  mergeSource: function(varDeclarations) {\n    let isSimple = this.environment.isSimple,\n      appendOnly = !this.forceBuffer,\n      appendFirst,\n      sourceSeen,\n      bufferStart,\n      bufferEnd;\n    this.source.each(line => {\n      if (line.appendToBuffer) {\n        if (bufferStart) {\n          line.prepend('  + ');\n        } else {\n          bufferStart = line;\n        }\n        bufferEnd = line;\n      } else {\n        if (bufferStart) {\n          if (!sourceSeen) {\n            appendFirst = true;\n          } else {\n            bufferStart.prepend('buffer += ');\n          }\n          bufferEnd.add(';');\n          bufferStart = bufferEnd = undefined;\n        }\n\n        sourceSeen = true;\n        if (!isSimple) {\n          appendOnly = false;\n        }\n      }\n    });\n\n    if (appendOnly) {\n      if (bufferStart) {\n        bufferStart.prepend('return ');\n        bufferEnd.add(';');\n      } else if (!sourceSeen) {\n        this.source.push('return \"\";');\n      }\n    } else {\n      varDeclarations +=\n        ', buffer = ' + (appendFirst ? '' : this.initializeBuffer());\n\n      if (bufferStart) {\n        bufferStart.prepend('return buffer + ');\n        bufferEnd.add(';');\n      } else {\n        this.source.push('return buffer;');\n      }\n    }\n\n    if (varDeclarations) {\n      this.source.prepend(\n        'var ' + varDeclarations.substring(2) + (appendFirst ? '' : ';\\n')\n      );\n    }\n\n    return this.source.merge();\n  },\n\n  lookupPropertyFunctionVarDeclaration: function() {\n    return `\n      lookupProperty = container.lookupProperty || function(parent, propertyName) {\n        if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n          return parent[propertyName];\n        }\n        return undefined\n    }\n    `.trim();\n  },\n\n  // [blockValue]\n  //\n  // On stack, before: hash, inverse, program, value\n  // On stack, after: return value of blockHelperMissing\n  //\n  // The purpose of this opcode is to take a block of the form\n  // `{{#this.foo}}...{{/this.foo}}`, resolve the value of `foo`, and\n  // replace it on the stack with the result of properly\n  // invoking blockHelperMissing.\n  blockValue: function(name) {\n    let blockHelperMissing = this.aliasable(\n        'container.hooks.blockHelperMissing'\n      ),\n      params = [this.contextName(0)];\n    this.setupHelperArgs(name, 0, params);\n\n    let blockName = this.popStack();\n    params.splice(1, 0, blockName);\n\n    this.push(this.source.functionCall(blockHelperMissing, 'call', params));\n  },\n\n  // [ambiguousBlockValue]\n  //\n  // On stack, before: hash, inverse, program, value\n  // Compiler value, before: lastHelper=value of last found helper, if any\n  // On stack, after, if no lastHelper: same as [blockValue]\n  // On stack, after, if lastHelper: value\n  ambiguousBlockValue: function() {\n    // We're being a bit cheeky and reusing the options value from the prior exec\n    let blockHelperMissing = this.aliasable(\n        'container.hooks.blockHelperMissing'\n      ),\n      params = [this.contextName(0)];\n    this.setupHelperArgs('', 0, params, true);\n\n    this.flushInline();\n\n    let current = this.topStack();\n    params.splice(1, 0, current);\n\n    this.pushSource([\n      'if (!',\n      this.lastHelper,\n      ') { ',\n      current,\n      ' = ',\n      this.source.functionCall(blockHelperMissing, 'call', params),\n      '}'\n    ]);\n  },\n\n  // [appendContent]\n  //\n  // On stack, before: ...\n  // On stack, after: ...\n  //\n  // Appends the string value of `content` to the current buffer\n  appendContent: function(content) {\n    if (this.pendingContent) {\n      content = this.pendingContent + content;\n    } else {\n      this.pendingLocation = this.source.currentLocation;\n    }\n\n    this.pendingContent = content;\n  },\n\n  // [append]\n  //\n  // On stack, before: value, ...\n  // On stack, after: ...\n  //\n  // Coerces `value` to a String and appends it to the current buffer.\n  //\n  // If `value` is truthy, or 0, it is coerced into a string and appended\n  // Otherwise, the empty string is appended\n  append: function() {\n    if (this.isInline()) {\n      this.replaceStack(current => [' != null ? ', current, ' : \"\"']);\n\n      this.pushSource(this.appendToBuffer(this.popStack()));\n    } else {\n      let local = this.popStack();\n      this.pushSource([\n        'if (',\n        local,\n        ' != null) { ',\n        this.appendToBuffer(local, undefined, true),\n        ' }'\n      ]);\n      if (this.environment.isSimple) {\n        this.pushSource([\n          'else { ',\n          this.appendToBuffer(\"''\", undefined, true),\n          ' }'\n        ]);\n      }\n    }\n  },\n\n  // [appendEscaped]\n  //\n  // On stack, before: value, ...\n  // On stack, after: ...\n  //\n  // Escape `value` and append it to the buffer\n  appendEscaped: function() {\n    this.pushSource(\n      this.appendToBuffer([\n        this.aliasable('container.escapeExpression'),\n        '(',\n        this.popStack(),\n        ')'\n      ])\n    );\n  },\n\n  // [getContext]\n  //\n  // On stack, before: ...\n  // On stack, after: ...\n  // Compiler value, after: lastContext=depth\n  //\n  // Set the value of the `lastContext` compiler value to the depth\n  getContext: function(depth) {\n    this.lastContext = depth;\n  },\n\n  // [pushContext]\n  //\n  // On stack, before: ...\n  // On stack, after: currentContext, ...\n  //\n  // Pushes the value of the current context onto the stack.\n  pushContext: function() {\n    this.pushStackLiteral(this.contextName(this.lastContext));\n  },\n\n  // [lookupOnContext]\n  //\n  // On stack, before: ...\n  // On stack, after: currentContext[name], ...\n  //\n  // Looks up the value of `name` on the current context and pushes\n  // it onto the stack.\n  lookupOnContext: function(parts, falsy, strict, scoped) {\n    let i = 0;\n\n    if (!scoped && this.options.compat && !this.lastContext) {\n      // The depthed query is expected to handle the undefined logic for the root level that\n      // is implemented below, so we evaluate that directly in compat mode\n      this.push(this.depthedLookup(parts[i++]));\n    } else {\n      this.pushContext();\n    }\n\n    this.resolvePath('context', parts, i, falsy, strict);\n  },\n\n  // [lookupBlockParam]\n  //\n  // On stack, before: ...\n  // On stack, after: blockParam[name], ...\n  //\n  // Looks up the value of `parts` on the given block param and pushes\n  // it onto the stack.\n  lookupBlockParam: function(blockParamId, parts) {\n    this.useBlockParams = true;\n\n    this.push(['blockParams[', blockParamId[0], '][', blockParamId[1], ']']);\n    this.resolvePath('context', parts, 1);\n  },\n\n  // [lookupData]\n  //\n  // On stack, before: ...\n  // On stack, after: data, ...\n  //\n  // Push the data lookup operator\n  lookupData: function(depth, parts, strict) {\n    if (!depth) {\n      this.pushStackLiteral('data');\n    } else {\n      this.pushStackLiteral('container.data(data, ' + depth + ')');\n    }\n\n    this.resolvePath('data', parts, 0, true, strict);\n  },\n\n  resolvePath: function(type, parts, i, falsy, strict) {\n    if (this.options.strict || this.options.assumeObjects) {\n      this.push(\n        strictLookup(this.options.strict && strict, this, parts, i, type)\n      );\n      return;\n    }\n\n    let len = parts.length;\n    for (; i < len; i++) {\n      /* eslint-disable no-loop-func */\n      this.replaceStack(current => {\n        let lookup = this.nameLookup(current, parts[i], type);\n        // We want to ensure that zero and false are handled properly if the context (falsy flag)\n        // needs to have the special handling for these values.\n        if (!falsy) {\n          return [' != null ? ', lookup, ' : ', current];\n        } else {\n          // Otherwise we can use generic falsy handling\n          return [' && ', lookup];\n        }\n      });\n      /* eslint-enable no-loop-func */\n    }\n  },\n\n  // [resolvePossibleLambda]\n  //\n  // On stack, before: value, ...\n  // On stack, after: resolved value, ...\n  //\n  // If the `value` is a lambda, replace it on the stack by\n  // the return value of the lambda\n  resolvePossibleLambda: function() {\n    this.push([\n      this.aliasable('container.lambda'),\n      '(',\n      this.popStack(),\n      ', ',\n      this.contextName(0),\n      ')'\n    ]);\n  },\n\n  // [pushStringParam]\n  //\n  // On stack, before: ...\n  // On stack, after: string, currentContext, ...\n  //\n  // This opcode is designed for use in string mode, which\n  // provides the string value of a parameter along with its\n  // depth rather than resolving it immediately.\n  pushStringParam: function(string, type) {\n    this.pushContext();\n    this.pushString(type);\n\n    // If it's a subexpression, the string result\n    // will be pushed after this opcode.\n    if (type !== 'SubExpression') {\n      if (typeof string === 'string') {\n        this.pushString(string);\n      } else {\n        this.pushStackLiteral(string);\n      }\n    }\n  },\n\n  emptyHash: function(omitEmpty) {\n    if (this.trackIds) {\n      this.push('{}'); // hashIds\n    }\n    if (this.stringParams) {\n      this.push('{}'); // hashContexts\n      this.push('{}'); // hashTypes\n    }\n    this.pushStackLiteral(omitEmpty ? 'undefined' : '{}');\n  },\n  pushHash: function() {\n    if (this.hash) {\n      this.hashes.push(this.hash);\n    }\n    this.hash = { values: {}, types: [], contexts: [], ids: [] };\n  },\n  popHash: function() {\n    let hash = this.hash;\n    this.hash = this.hashes.pop();\n\n    if (this.trackIds) {\n      this.push(this.objectLiteral(hash.ids));\n    }\n    if (this.stringParams) {\n      this.push(this.objectLiteral(hash.contexts));\n      this.push(this.objectLiteral(hash.types));\n    }\n\n    this.push(this.objectLiteral(hash.values));\n  },\n\n  // [pushString]\n  //\n  // On stack, before: ...\n  // On stack, after: quotedString(string), ...\n  //\n  // Push a quoted version of `string` onto the stack\n  pushString: function(string) {\n    this.pushStackLiteral(this.quotedString(string));\n  },\n\n  // [pushLiteral]\n  //\n  // On stack, before: ...\n  // On stack, after: value, ...\n  //\n  // Pushes a value onto the stack. This operation prevents\n  // the compiler from creating a temporary variable to hold\n  // it.\n  pushLiteral: function(value) {\n    this.pushStackLiteral(value);\n  },\n\n  // [pushProgram]\n  //\n  // On stack, before: ...\n  // On stack, after: program(guid), ...\n  //\n  // Push a program expression onto the stack. This takes\n  // a compile-time guid and converts it into a runtime-accessible\n  // expression.\n  pushProgram: function(guid) {\n    if (guid != null) {\n      this.pushStackLiteral(this.programExpression(guid));\n    } else {\n      this.pushStackLiteral(null);\n    }\n  },\n\n  // [registerDecorator]\n  //\n  // On stack, before: hash, program, params..., ...\n  // On stack, after: ...\n  //\n  // Pops off the decorator's parameters, invokes the decorator,\n  // and inserts the decorator into the decorators list.\n  registerDecorator(paramSize, name) {\n    let foundDecorator = this.nameLookup('decorators', name, 'decorator'),\n      options = this.setupHelperArgs(name, paramSize);\n\n    this.decorators.push([\n      'fn = ',\n      this.decorators.functionCall(foundDecorator, '', [\n        'fn',\n        'props',\n        'container',\n        options\n      ]),\n      ' || fn;'\n    ]);\n  },\n\n  // [invokeHelper]\n  //\n  // On stack, before: hash, inverse, program, params..., ...\n  // On stack, after: result of helper invocation\n  //\n  // Pops off the helper's parameters, invokes the helper,\n  // and pushes the helper's return value onto the stack.\n  //\n  // If the helper is not found, `helperMissing` is called.\n  invokeHelper: function(paramSize, name, isSimple) {\n    let nonHelper = this.popStack(),\n      helper = this.setupHelper(paramSize, name);\n\n    let possibleFunctionCalls = [];\n\n    if (isSimple) {\n      // direct call to helper\n      possibleFunctionCalls.push(helper.name);\n    }\n    // call a function from the input object\n    possibleFunctionCalls.push(nonHelper);\n    if (!this.options.strict) {\n      possibleFunctionCalls.push(\n        this.aliasable('container.hooks.helperMissing')\n      );\n    }\n\n    let functionLookupCode = [\n      '(',\n      this.itemsSeparatedBy(possibleFunctionCalls, '||'),\n      ')'\n    ];\n    let functionCall = this.source.functionCall(\n      functionLookupCode,\n      'call',\n      helper.callParams\n    );\n    this.push(functionCall);\n  },\n\n  itemsSeparatedBy: function(items, separator) {\n    let result = [];\n    result.push(items[0]);\n    for (let i = 1; i < items.length; i++) {\n      result.push(separator, items[i]);\n    }\n    return result;\n  },\n  // [invokeKnownHelper]\n  //\n  // On stack, before: hash, inverse, program, params..., ...\n  // On stack, after: result of helper invocation\n  //\n  // This operation is used when the helper is known to exist,\n  // so a `helperMissing` fallback is not required.\n  invokeKnownHelper: function(paramSize, name) {\n    let helper = this.setupHelper(paramSize, name);\n    this.push(this.source.functionCall(helper.name, 'call', helper.callParams));\n  },\n\n  // [invokeAmbiguous]\n  //\n  // On stack, before: hash, inverse, program, params..., ...\n  // On stack, after: result of disambiguation\n  //\n  // This operation is used when an expression like `{{foo}}`\n  // is provided, but we don't know at compile-time whether it\n  // is a helper or a path.\n  //\n  // This operation emits more code than the other options,\n  // and can be avoided by passing the `knownHelpers` and\n  // `knownHelpersOnly` flags at compile-time.\n  invokeAmbiguous: function(name, helperCall) {\n    this.useRegister('helper');\n\n    let nonHelper = this.popStack();\n\n    this.emptyHash();\n    let helper = this.setupHelper(0, name, helperCall);\n\n    let helperName = (this.lastHelper = this.nameLookup(\n      'helpers',\n      name,\n      'helper'\n    ));\n\n    let lookup = ['(', '(helper = ', helperName, ' || ', nonHelper, ')'];\n    if (!this.options.strict) {\n      lookup[0] = '(helper = ';\n      lookup.push(\n        ' != null ? helper : ',\n        this.aliasable('container.hooks.helperMissing')\n      );\n    }\n\n    this.push([\n      '(',\n      lookup,\n      helper.paramsInit ? ['),(', helper.paramsInit] : [],\n      '),',\n      '(typeof helper === ',\n      this.aliasable('\"function\"'),\n      ' ? ',\n      this.source.functionCall('helper', 'call', helper.callParams),\n      ' : helper))'\n    ]);\n  },\n\n  // [invokePartial]\n  //\n  // On stack, before: context, ...\n  // On stack after: result of partial invocation\n  //\n  // This operation pops off a context, invokes a partial with that context,\n  // and pushes the result of the invocation back.\n  invokePartial: function(isDynamic, name, indent) {\n    let params = [],\n      options = this.setupParams(name, 1, params);\n\n    if (isDynamic) {\n      name = this.popStack();\n      delete options.name;\n    }\n\n    if (indent) {\n      options.indent = JSON.stringify(indent);\n    }\n    options.helpers = 'helpers';\n    options.partials = 'partials';\n    options.decorators = 'container.decorators';\n\n    if (!isDynamic) {\n      params.unshift(this.nameLookup('partials', name, 'partial'));\n    } else {\n      params.unshift(name);\n    }\n\n    if (this.options.compat) {\n      options.depths = 'depths';\n    }\n    options = this.objectLiteral(options);\n    params.push(options);\n\n    this.push(this.source.functionCall('container.invokePartial', '', params));\n  },\n\n  // [assignToHash]\n  //\n  // On stack, before: value, ..., hash, ...\n  // On stack, after: ..., hash, ...\n  //\n  // Pops a value off the stack and assigns it to the current hash\n  assignToHash: function(key) {\n    let value = this.popStack(),\n      context,\n      type,\n      id;\n\n    if (this.trackIds) {\n      id = this.popStack();\n    }\n    if (this.stringParams) {\n      type = this.popStack();\n      context = this.popStack();\n    }\n\n    let hash = this.hash;\n    if (context) {\n      hash.contexts[key] = context;\n    }\n    if (type) {\n      hash.types[key] = type;\n    }\n    if (id) {\n      hash.ids[key] = id;\n    }\n    hash.values[key] = value;\n  },\n\n  pushId: function(type, name, child) {\n    if (type === 'BlockParam') {\n      this.pushStackLiteral(\n        'blockParams[' +\n          name[0] +\n          '].path[' +\n          name[1] +\n          ']' +\n          (child ? ' + ' + JSON.stringify('.' + child) : '')\n      );\n    } else if (type === 'PathExpression') {\n      this.pushString(name);\n    } else if (type === 'SubExpression') {\n      this.pushStackLiteral('true');\n    } else {\n      this.pushStackLiteral('null');\n    }\n  },\n\n  // HELPERS\n\n  compiler: JavaScriptCompiler,\n\n  compileChildren: function(environment, options) {\n    let children = environment.children,\n      child,\n      compiler;\n\n    for (let i = 0, l = children.length; i < l; i++) {\n      child = children[i];\n      compiler = new this.compiler(); // eslint-disable-line new-cap\n\n      let existing = this.matchExistingProgram(child);\n\n      if (existing == null) {\n        this.context.programs.push(''); // Placeholder to prevent name conflicts for nested children\n        let index = this.context.programs.length;\n        child.index = index;\n        child.name = 'program' + index;\n        this.context.programs[index] = compiler.compile(\n          child,\n          options,\n          this.context,\n          !this.precompile\n        );\n        this.context.decorators[index] = compiler.decorators;\n        this.context.environments[index] = child;\n\n        this.useDepths = this.useDepths || compiler.useDepths;\n        this.useBlockParams = this.useBlockParams || compiler.useBlockParams;\n        child.useDepths = this.useDepths;\n        child.useBlockParams = this.useBlockParams;\n      } else {\n        child.index = existing.index;\n        child.name = 'program' + existing.index;\n\n        this.useDepths = this.useDepths || existing.useDepths;\n        this.useBlockParams = this.useBlockParams || existing.useBlockParams;\n      }\n    }\n  },\n  matchExistingProgram: function(child) {\n    for (let i = 0, len = this.context.environments.length; i < len; i++) {\n      let environment = this.context.environments[i];\n      if (environment && environment.equals(child)) {\n        return environment;\n      }\n    }\n  },\n\n  programExpression: function(guid) {\n    let child = this.environment.children[guid],\n      programParams = [child.index, 'data', child.blockParams];\n\n    if (this.useBlockParams || this.useDepths) {\n      programParams.push('blockParams');\n    }\n    if (this.useDepths) {\n      programParams.push('depths');\n    }\n\n    return 'container.program(' + programParams.join(', ') + ')';\n  },\n\n  useRegister: function(name) {\n    if (!this.registers[name]) {\n      this.registers[name] = true;\n      this.registers.list.push(name);\n    }\n  },\n\n  push: function(expr) {\n    if (!(expr instanceof Literal)) {\n      expr = this.source.wrap(expr);\n    }\n\n    this.inlineStack.push(expr);\n    return expr;\n  },\n\n  pushStackLiteral: function(item) {\n    this.push(new Literal(item));\n  },\n\n  pushSource: function(source) {\n    if (this.pendingContent) {\n      this.source.push(\n        this.appendToBuffer(\n          this.source.quotedString(this.pendingContent),\n          this.pendingLocation\n        )\n      );\n      this.pendingContent = undefined;\n    }\n\n    if (source) {\n      this.source.push(source);\n    }\n  },\n\n  replaceStack: function(callback) {\n    let prefix = ['('],\n      stack,\n      createdStack,\n      usedLiteral;\n\n    /* istanbul ignore next */\n    if (!this.isInline()) {\n      throw new Exception('replaceStack on non-inline');\n    }\n\n    // We want to merge the inline statement into the replacement statement via ','\n    let top = this.popStack(true);\n\n    if (top instanceof Literal) {\n      // Literals do not need to be inlined\n      stack = [top.value];\n      prefix = ['(', stack];\n      usedLiteral = true;\n    } else {\n      // Get or create the current stack name for use by the inline\n      createdStack = true;\n      let name = this.incrStack();\n\n      prefix = ['((', this.push(name), ' = ', top, ')'];\n      stack = this.topStack();\n    }\n\n    let item = callback.call(this, stack);\n\n    if (!usedLiteral) {\n      this.popStack();\n    }\n    if (createdStack) {\n      this.stackSlot--;\n    }\n    this.push(prefix.concat(item, ')'));\n  },\n\n  incrStack: function() {\n    this.stackSlot++;\n    if (this.stackSlot > this.stackVars.length) {\n      this.stackVars.push('stack' + this.stackSlot);\n    }\n    return this.topStackName();\n  },\n  topStackName: function() {\n    return 'stack' + this.stackSlot;\n  },\n  flushInline: function() {\n    let inlineStack = this.inlineStack;\n    this.inlineStack = [];\n    for (let i = 0, len = inlineStack.length; i < len; i++) {\n      let entry = inlineStack[i];\n      /* istanbul ignore if */\n      if (entry instanceof Literal) {\n        this.compileStack.push(entry);\n      } else {\n        let stack = this.incrStack();\n        this.pushSource([stack, ' = ', entry, ';']);\n        this.compileStack.push(stack);\n      }\n    }\n  },\n  isInline: function() {\n    return this.inlineStack.length;\n  },\n\n  popStack: function(wrapped) {\n    let inline = this.isInline(),\n      item = (inline ? this.inlineStack : this.compileStack).pop();\n\n    if (!wrapped && item instanceof Literal) {\n      return item.value;\n    } else {\n      if (!inline) {\n        /* istanbul ignore next */\n        if (!this.stackSlot) {\n          throw new Exception('Invalid stack pop');\n        }\n        this.stackSlot--;\n      }\n      return item;\n    }\n  },\n\n  topStack: function() {\n    let stack = this.isInline() ? this.inlineStack : this.compileStack,\n      item = stack[stack.length - 1];\n\n    /* istanbul ignore if */\n    if (item instanceof Literal) {\n      return item.value;\n    } else {\n      return item;\n    }\n  },\n\n  contextName: function(context) {\n    if (this.useDepths && context) {\n      return 'depths[' + context + ']';\n    } else {\n      return 'depth' + context;\n    }\n  },\n\n  quotedString: function(str) {\n    return this.source.quotedString(str);\n  },\n\n  objectLiteral: function(obj) {\n    return this.source.objectLiteral(obj);\n  },\n\n  aliasable: function(name) {\n    let ret = this.aliases[name];\n    if (ret) {\n      ret.referenceCount++;\n      return ret;\n    }\n\n    ret = this.aliases[name] = this.source.wrap(name);\n    ret.aliasable = true;\n    ret.referenceCount = 1;\n\n    return ret;\n  },\n\n  setupHelper: function(paramSize, name, blockHelper) {\n    let params = [],\n      paramsInit = this.setupHelperArgs(name, paramSize, params, blockHelper);\n    let foundHelper = this.nameLookup('helpers', name, 'helper'),\n      callContext = this.aliasable(\n        `${this.contextName(0)} != null ? ${this.contextName(\n          0\n        )} : (container.nullContext || {})`\n      );\n\n    return {\n      params: params,\n      paramsInit: paramsInit,\n      name: foundHelper,\n      callParams: [callContext].concat(params)\n    };\n  },\n\n  setupParams: function(helper, paramSize, params) {\n    let options = {},\n      contexts = [],\n      types = [],\n      ids = [],\n      objectArgs = !params,\n      param;\n\n    if (objectArgs) {\n      params = [];\n    }\n\n    options.name = this.quotedString(helper);\n    options.hash = this.popStack();\n\n    if (this.trackIds) {\n      options.hashIds = this.popStack();\n    }\n    if (this.stringParams) {\n      options.hashTypes = this.popStack();\n      options.hashContexts = this.popStack();\n    }\n\n    let inverse = this.popStack(),\n      program = this.popStack();\n\n    // Avoid setting fn and inverse if neither are set. This allows\n    // helpers to do a check for `if (options.fn)`\n    if (program || inverse) {\n      options.fn = program || 'container.noop';\n      options.inverse = inverse || 'container.noop';\n    }\n\n    // The parameters go on to the stack in order (making sure that they are evaluated in order)\n    // so we need to pop them off the stack in reverse order\n    let i = paramSize;\n    while (i--) {\n      param = this.popStack();\n      params[i] = param;\n\n      if (this.trackIds) {\n        ids[i] = this.popStack();\n      }\n      if (this.stringParams) {\n        types[i] = this.popStack();\n        contexts[i] = this.popStack();\n      }\n    }\n\n    if (objectArgs) {\n      options.args = this.source.generateArray(params);\n    }\n\n    if (this.trackIds) {\n      options.ids = this.source.generateArray(ids);\n    }\n    if (this.stringParams) {\n      options.types = this.source.generateArray(types);\n      options.contexts = this.source.generateArray(contexts);\n    }\n\n    if (this.options.data) {\n      options.data = 'data';\n    }\n    if (this.useBlockParams) {\n      options.blockParams = 'blockParams';\n    }\n    return options;\n  },\n\n  setupHelperArgs: function(helper, paramSize, params, useRegister) {\n    let options = this.setupParams(helper, paramSize, params);\n    options.loc = JSON.stringify(this.source.currentLocation);\n    options = this.objectLiteral(options);\n    if (useRegister) {\n      this.useRegister('options');\n      params.push('options');\n      return ['options=', options];\n    } else if (params) {\n      params.push(options);\n      return '';\n    } else {\n      return options;\n    }\n  }\n};\n\n(function() {\n  const reservedWords = (\n    'break else new var' +\n    ' case finally return void' +\n    ' catch for switch while' +\n    ' continue function this with' +\n    ' default if throw' +\n    ' delete in try' +\n    ' do instanceof typeof' +\n    ' abstract enum int short' +\n    ' boolean export interface static' +\n    ' byte extends long super' +\n    ' char final native synchronized' +\n    ' class float package throws' +\n    ' const goto private transient' +\n    ' debugger implements protected volatile' +\n    ' double import public let yield await' +\n    ' null true false'\n  ).split(' ');\n\n  const compilerWords = (JavaScriptCompiler.RESERVED_WORDS = {});\n\n  for (let i = 0, l = reservedWords.length; i < l; i++) {\n    compilerWords[reservedWords[i]] = true;\n  }\n})();\n\n/**\n * @deprecated May be removed in the next major version\n */\nJavaScriptCompiler.isValidJavaScriptVariableName = function(name) {\n  return (\n    !JavaScriptCompiler.RESERVED_WORDS[name] &&\n    /^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(name)\n  );\n};\n\nfunction strictLookup(requireTerminal, compiler, parts, i, type) {\n  let stack = compiler.popStack(),\n    len = parts.length;\n  if (requireTerminal) {\n    len--;\n  }\n\n  for (; i < len; i++) {\n    stack = compiler.nameLookup(stack, parts[i], type);\n  }\n\n  if (requireTerminal) {\n    return [\n      compiler.aliasable('container.strict'),\n      '(',\n      stack,\n      ', ',\n      compiler.quotedString(parts[i]),\n      ', ',\n      JSON.stringify(compiler.source.currentLocation),\n      ' )'\n    ];\n  } else {\n    return stack;\n  }\n}\n\nexport default JavaScriptCompiler;\n", "import runtime from './handlebars.runtime';\n\n// Compiler imports\nimport AST from './handlebars/compiler/ast';\nimport {\n  parser as Parser,\n  parse,\n  parseWithoutProcessing\n} from './handlebars/compiler/base';\nimport { Compiler, compile, precompile } from './handlebars/compiler/compiler';\nimport JavaScriptCompiler from './handlebars/compiler/javascript-compiler';\nimport Visitor from './handlebars/compiler/visitor';\n\nimport noConflict from './handlebars/no-conflict';\n\nlet _create = runtime.create;\nfunction create() {\n  let hb = _create();\n\n  hb.compile = function(input, options) {\n    return compile(input, options, hb);\n  };\n  hb.precompile = function(input, options) {\n    return precompile(input, options, hb);\n  };\n\n  hb.AST = AST;\n  hb.Compiler = Compiler;\n  hb.JavaScriptCompiler = JavaScriptCompiler;\n  hb.Parser = Parser;\n  hb.parse = parse;\n  hb.parseWithoutProcessing = parseWithoutProcessing;\n\n  return hb;\n}\n\nlet inst = create();\ninst.create = create;\n\nnoConflict(inst);\n\ninst.Visitor = Visitor;\n\ninst['default'] = inst;\n\nexport default inst;\n", "/* eslint-disable new-cap */\nimport Visitor from './visitor';\n\nexport function print(ast) {\n  return new PrintVisitor().accept(ast);\n}\n\nexport function PrintVisitor() {\n  this.padding = 0;\n}\n\nPrintVisitor.prototype = new Visitor();\n\nPrintVisitor.prototype.pad = function(string) {\n  let out = '';\n\n  for (let i = 0, l = this.padding; i < l; i++) {\n    out += '  ';\n  }\n\n  out += string + '\\n';\n  return out;\n};\n\nPrintVisitor.prototype.Program = function(program) {\n  let out = '',\n    body = program.body,\n    i,\n    l;\n\n  if (program.blockParams) {\n    let blockParams = 'BLOCK PARAMS: [';\n    for (i = 0, l = program.blockParams.length; i < l; i++) {\n      blockParams += ' ' + program.blockParams[i];\n    }\n    blockParams += ' ]';\n    out += this.pad(blockParams);\n  }\n\n  for (i = 0, l = body.length; i < l; i++) {\n    out += this.accept(body[i]);\n  }\n\n  this.padding--;\n\n  return out;\n};\n\nPrintVisitor.prototype.MustacheStatement = function(mustache) {\n  return this.pad('{{ ' + this.SubExpression(mustache) + ' }}');\n};\nPrintVisitor.prototype.Decorator = function(mustache) {\n  return this.pad('{{ DIRECTIVE ' + this.SubExpression(mustache) + ' }}');\n};\n\nPrintVisitor.prototype.BlockStatement = PrintVisitor.prototype.DecoratorBlock = function(\n  block\n) {\n  let out = '';\n\n  out += this.pad(\n    (block.type === 'DecoratorBlock' ? 'DIRECTIVE ' : '') + 'BLOCK:'\n  );\n  this.padding++;\n  out += this.pad(this.SubExpression(block));\n  if (block.program) {\n    out += this.pad('PROGRAM:');\n    this.padding++;\n    out += this.accept(block.program);\n    this.padding--;\n  }\n  if (block.inverse) {\n    if (block.program) {\n      this.padding++;\n    }\n    out += this.pad('{{^}}');\n    this.padding++;\n    out += this.accept(block.inverse);\n    this.padding--;\n    if (block.program) {\n      this.padding--;\n    }\n  }\n  this.padding--;\n\n  return out;\n};\n\nPrintVisitor.prototype.PartialStatement = function(partial) {\n  let content = 'PARTIAL:' + partial.name.original;\n  if (partial.params[0]) {\n    content += ' ' + this.accept(partial.params[0]);\n  }\n  if (partial.hash) {\n    content += ' ' + this.accept(partial.hash);\n  }\n  return this.pad('{{> ' + content + ' }}');\n};\nPrintVisitor.prototype.PartialBlockStatement = function(partial) {\n  let content = 'PARTIAL BLOCK:' + partial.name.original;\n  if (partial.params[0]) {\n    content += ' ' + this.accept(partial.params[0]);\n  }\n  if (partial.hash) {\n    content += ' ' + this.accept(partial.hash);\n  }\n\n  content += ' ' + this.pad('PROGRAM:');\n  this.padding++;\n  content += this.accept(partial.program);\n  this.padding--;\n\n  return this.pad('{{> ' + content + ' }}');\n};\n\nPrintVisitor.prototype.ContentStatement = function(content) {\n  return this.pad(\"CONTENT[ '\" + content.value + \"' ]\");\n};\n\nPrintVisitor.prototype.CommentStatement = function(comment) {\n  return this.pad(\"{{! '\" + comment.value + \"' }}\");\n};\n\nPrintVisitor.prototype.SubExpression = function(sexpr) {\n  let params = sexpr.params,\n    paramStrings = [],\n    hash;\n\n  for (let i = 0, l = params.length; i < l; i++) {\n    paramStrings.push(this.accept(params[i]));\n  }\n\n  params = '[' + paramStrings.join(', ') + ']';\n\n  hash = sexpr.hash ? ' ' + this.accept(sexpr.hash) : '';\n\n  return this.accept(sexpr.path) + ' ' + params + hash;\n};\n\nPrintVisitor.prototype.PathExpression = function(id) {\n  let path = id.parts.join('/');\n  return (id.data ? '@' : '') + 'PATH:' + path;\n};\n\nPrintVisitor.prototype.StringLiteral = function(string) {\n  return '\"' + string.value + '\"';\n};\n\nPrintVisitor.prototype.NumberLiteral = function(number) {\n  return 'NUMBER{' + number.value + '}';\n};\n\nPrintVisitor.prototype.BooleanLiteral = function(bool) {\n  return 'BOOLEAN{' + bool.value + '}';\n};\n\nPrintVisitor.prototype.UndefinedLiteral = function() {\n  return 'UNDEFINED';\n};\n\nPrintVisitor.prototype.NullLiteral = function() {\n  return 'NULL';\n};\n\nPrintVisitor.prototype.Hash = function(hash) {\n  let pairs = hash.pairs,\n    joinedPairs = [];\n\n  for (let i = 0, l = pairs.length; i < l; i++) {\n    joinedPairs.push(this.accept(pairs[i]));\n  }\n\n  return 'HASH{' + joinedPairs.join(', ') + '}';\n};\nPrintVisitor.prototype.HashPair = function(pair) {\n  return pair.key + '=' + this.accept(pair.value);\n};\n/* eslint-enable new-cap */\n", "// USAGE:\n// var handlebars = require('handlebars');\n/* eslint-env node */\n/* eslint-disable no-var */\n\n// var local = handlebars.create();\n\nvar handlebars = require('../dist/cjs/handlebars')['default'];\n\nvar printer = require('../dist/cjs/handlebars/compiler/printer');\nhandlebars.PrintVisitor = printer.PrintVisitor;\nhandlebars.print = printer.print;\n\nmodule.exports = handlebars;\n\n// Publish a Node.js require() handler for .handlebars and .hbs files\nfunction extension(module, filename) {\n  var fs = require('fs');\n  var templateString = fs.readFileSync(filename, 'utf8');\n  module.exports = handlebars.compile(templateString);\n}\n/* istanbul ignore else */\nif (typeof require !== 'undefined' && require.extensions) {\n  require.extensions['.handlebars'] = extension;\n  require.extensions['.hbs'] = extension;\n}\n", "\"use strict\";\n\nvar regexes = {\n  ipv4: /^(?:(?:\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])\\.){3}(?:\\d|[1-9]\\d|1\\d{2}|2[0-4]\\d|25[0-5])$/,\n  ipv6: /^((?=.*::)(?!.*::.+::)(::)?([\\dA-F]{1,4}:(:|\\b)|){5}|([\\dA-F]{1,4}:){6})((([\\dA-F]{1,4}((?!\\3)::|:\\b|$))|(?!\\2\\3)){2}|(((2[0-4]|1\\d|[1-9])?\\d|25[0-5])\\.?\\b){4})$/i\n};\n\nfunction not(func) {\n  return function () {\n    return !func.apply(null, Array.prototype.slice.call(arguments));\n  };\n}\n\nfunction existy(value) {\n  return value != null;\n}\n\nfunction ip(value) {\n  return existy(value) && regexes.ipv4.test(value) || regexes.ipv6.test(value);\n}\n\nfunction object(value) {\n  return Object(value) === value;\n}\n\nfunction string(value) {\n  return Object.prototype.toString.call(value) === '[object String]';\n}\n\nvar is = {\n  existy: existy,\n  ip: ip,\n  object: object,\n  string: string,\n  not: {\n    existy: not(existy),\n    ip: not(ip),\n    object: not(object),\n    string: not(string)\n  }\n};\nmodule.exports = is;", "\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }, _typeof(obj); }\n\nvar is = require('./is');\n\nfunction getClientIpFromXForwardedFor(value) {\n  if (!is.existy(value)) {\n    return null;\n  }\n\n  if (is.not.string(value)) {\n    throw new TypeError(\"Expected a string, got \\\"\".concat(_typeof(value), \"\\\"\"));\n  }\n\n  var forwardedIps = value.split(',').map(function (e) {\n    var ip = e.trim();\n\n    if (ip.includes(':')) {\n      var splitted = ip.split(':');\n\n      if (splitted.length === 2) {\n        return splitted[0];\n      }\n    }\n\n    return ip;\n  });\n\n  for (var i = 0; i < forwardedIps.length; i++) {\n    if (is.ip(forwardedIps[i])) {\n      return forwardedIps[i];\n    }\n  }\n\n  return null;\n}\n\nfunction getClientIp(req) {\n  if (req.headers) {\n    if (is.ip(req.headers['x-client-ip'])) {\n      return req.headers['x-client-ip'];\n    }\n\n    var xForwardedFor = getClientIpFromXForwardedFor(req.headers['x-forwarded-for']);\n\n    if (is.ip(xForwardedFor)) {\n      return xForwardedFor;\n    }\n\n    if (is.ip(req.headers['cf-connecting-ip'])) {\n      return req.headers['cf-connecting-ip'];\n    }\n\n    if (is.ip(req.headers['fastly-client-ip'])) {\n      return req.headers['fastly-client-ip'];\n    }\n\n    if (is.ip(req.headers['true-client-ip'])) {\n      return req.headers['true-client-ip'];\n    }\n\n    if (is.ip(req.headers['x-real-ip'])) {\n      return req.headers['x-real-ip'];\n    }\n\n    if (is.ip(req.headers['x-cluster-client-ip'])) {\n      return req.headers['x-cluster-client-ip'];\n    }\n\n    if (is.ip(req.headers['x-forwarded'])) {\n      return req.headers['x-forwarded'];\n    }\n\n    if (is.ip(req.headers['forwarded-for'])) {\n      return req.headers['forwarded-for'];\n    }\n\n    if (is.ip(req.headers.forwarded)) {\n      return req.headers.forwarded;\n    }\n\n    if (is.ip(req.headers['x-appengine-user-ip'])) {\n      return req.headers['x-appengine-user-ip'];\n    }\n  }\n\n  if (is.existy(req.connection)) {\n    if (is.ip(req.connection.remoteAddress)) {\n      return req.connection.remoteAddress;\n    }\n\n    if (is.existy(req.connection.socket) && is.ip(req.connection.socket.remoteAddress)) {\n      return req.connection.socket.remoteAddress;\n    }\n  }\n\n  if (is.existy(req.socket) && is.ip(req.socket.remoteAddress)) {\n    return req.socket.remoteAddress;\n  }\n\n  if (is.existy(req.info) && is.ip(req.info.remoteAddress)) {\n    return req.info.remoteAddress;\n  }\n\n  if (is.existy(req.requestContext) && is.existy(req.requestContext.identity) && is.ip(req.requestContext.identity.sourceIp)) {\n    return req.requestContext.identity.sourceIp;\n  }\n\n  if (req.headers) {\n    if (is.ip(req.headers['Cf-Pseudo-IPv4'])) {\n      return req.headers['Cf-Pseudo-IPv4'];\n    }\n  }\n\n  if (is.existy(req.raw)) {\n    return getClientIp(req.raw);\n  }\n\n  return null;\n}\n\nfunction mw(options) {\n  var configuration = is.not.existy(options) ? {} : options;\n\n  if (is.not.object(configuration)) {\n    throw new TypeError('Options must be an object!');\n  }\n\n  var attributeName = configuration.attributeName || 'clientIp';\n  return function (req, res, next) {\n    var ip = getClientIp(req);\n    Object.defineProperty(req, attributeName, {\n      get: function get() {\n        return ip;\n      },\n      configurable: true\n    });\n    next();\n  };\n}\n\nmodule.exports = {\n  getClientIpFromXForwardedFor: getClientIpFromXForwardedFor,\n  getClientIp: getClientIp,\n  mw: mw\n};", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/country.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { protoMetadata as protoMetadata3, Subject } from \"./auth\";\nimport { protoMetadata as protoMetadata6 } from \"./locale\";\nimport { Meta, protoMetadata as protoMetadata2 } from \"./meta\";\nimport { protoMetadata as protoMetadata5, Resolver } from \"./options\";\nimport { DeleteRequest, DeleteResponse, protoMetadata as protoMetadata1, ReadRequest } from \"./resource_base\";\nimport { OperationStatus, protoMetadata as protoMetadata4, Status } from \"./status\";\n\nexport const protobufPackage = \"io.restorecommerce.country\";\n\nexport interface Deleted {\n  id?: string | undefined;\n}\n\nexport interface CountryList {\n  items?: Country[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface CountryListResponse {\n  items?: CountryResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface CountryResponse {\n  payload?: Country | undefined;\n  status?: Status | undefined;\n}\n\nexport interface Country {\n  id?: string | undefined;\n  meta?: Meta | undefined;\n  name?:\n    | string\n    | undefined;\n  /** primaly used in target application (fallback) */\n  countryCode?: string | undefined;\n  geographicalName?: string | undefined;\n  economicAreas?:\n    | string[]\n    | undefined;\n  /** ISO 3166-1 alpha-2 */\n  countryCodeAlpha2?:\n    | string\n    | undefined;\n  /** ISO 3166-1 alpha-3 */\n  countryCodeAlpha3?:\n    | string\n    | undefined;\n  /** list of common locale in this country, sorted by priority first */\n  localeIds?:\n    | string[]\n    | undefined;\n  /** list of localized names */\n  localizedNames?:\n    | Country_LocaleName[]\n    | undefined;\n  /** list of avalable timezones in this country */\n  timezoneIds?: string[] | undefined;\n}\n\nexport interface Country_LocaleName {\n  locale?: string | undefined;\n  name?: string | undefined;\n}\n\nfunction createBaseDeleted(): Deleted {\n  return {};\n}\n\nexport const Deleted: MessageFns<Deleted> = {\n  encode(message: Deleted, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Deleted {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseDeleted();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Deleted {\n    return { id: isSet(object.id) ? globalThis.String(object.id) : undefined };\n  },\n\n  toJSON(message: Deleted): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Deleted>): Deleted {\n    return Deleted.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Deleted>): Deleted {\n    const message = createBaseDeleted();\n    message.id = object.id ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseCountryList(): CountryList {\n  return {};\n}\n\nexport const CountryList: MessageFns<CountryList> = {\n  encode(message: CountryList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        Country.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CountryList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCountryList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = Country.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CountryList {\n    return {\n      items: globalThis.Array.isArray(object?.items) ? object.items.map((e: any) => Country.fromJSON(e)) : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: CountryList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => Country.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CountryList>): CountryList {\n    return CountryList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CountryList>): CountryList {\n    const message = createBaseCountryList();\n    message.items = object.items?.map((e) => Country.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseCountryListResponse(): CountryListResponse {\n  return {};\n}\n\nexport const CountryListResponse: MessageFns<CountryListResponse> = {\n  encode(message: CountryListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        CountryResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CountryListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCountryListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = CountryResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CountryListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => CountryResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: CountryListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => CountryResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CountryListResponse>): CountryListResponse {\n    return CountryListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CountryListResponse>): CountryListResponse {\n    const message = createBaseCountryListResponse();\n    message.items = object.items?.map((e) => CountryResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseCountryResponse(): CountryResponse {\n  return {};\n}\n\nexport const CountryResponse: MessageFns<CountryResponse> = {\n  encode(message: CountryResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      Country.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CountryResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCountryResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = Country.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CountryResponse {\n    return {\n      payload: isSet(object.payload) ? Country.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: CountryResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = Country.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CountryResponse>): CountryResponse {\n    return CountryResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CountryResponse>): CountryResponse {\n    const message = createBaseCountryResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? Country.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseCountry(): Country {\n  return {};\n}\n\nexport const Country: MessageFns<Country> = {\n  encode(message: Country, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(18).fork()).join();\n    }\n    if (message.name !== undefined) {\n      writer.uint32(26).string(message.name);\n    }\n    if (message.countryCode !== undefined) {\n      writer.uint32(34).string(message.countryCode);\n    }\n    if (message.geographicalName !== undefined) {\n      writer.uint32(42).string(message.geographicalName);\n    }\n    if (message.economicAreas !== undefined && message.economicAreas.length !== 0) {\n      for (const v of message.economicAreas) {\n        writer.uint32(50).string(v!);\n      }\n    }\n    if (message.countryCodeAlpha2 !== undefined) {\n      writer.uint32(58).string(message.countryCodeAlpha2);\n    }\n    if (message.countryCodeAlpha3 !== undefined) {\n      writer.uint32(66).string(message.countryCodeAlpha3);\n    }\n    if (message.localeIds !== undefined && message.localeIds.length !== 0) {\n      for (const v of message.localeIds) {\n        writer.uint32(74).string(v!);\n      }\n    }\n    if (message.localizedNames !== undefined && message.localizedNames.length !== 0) {\n      for (const v of message.localizedNames) {\n        Country_LocaleName.encode(v!, writer.uint32(82).fork()).join();\n      }\n    }\n    if (message.timezoneIds !== undefined && message.timezoneIds.length !== 0) {\n      for (const v of message.timezoneIds) {\n        writer.uint32(90).string(v!);\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Country {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCountry();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.countryCode = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.geographicalName = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          if (message.economicAreas === undefined) {\n            message.economicAreas = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.economicAreas!.push(el);\n          }\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.countryCodeAlpha2 = reader.string();\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.countryCodeAlpha3 = reader.string();\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          if (message.localeIds === undefined) {\n            message.localeIds = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.localeIds!.push(el);\n          }\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          if (message.localizedNames === undefined) {\n            message.localizedNames = [];\n          }\n          const el = Country_LocaleName.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.localizedNames!.push(el);\n          }\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          if (message.timezoneIds === undefined) {\n            message.timezoneIds = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.timezoneIds!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Country {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      countryCode: isSet(object.countryCode) ? globalThis.String(object.countryCode) : undefined,\n      geographicalName: isSet(object.geographicalName) ? globalThis.String(object.geographicalName) : undefined,\n      economicAreas: globalThis.Array.isArray(object?.economicAreas)\n        ? object.economicAreas.map((e: any) => globalThis.String(e))\n        : undefined,\n      countryCodeAlpha2: isSet(object.countryCodeAlpha2) ? globalThis.String(object.countryCodeAlpha2) : undefined,\n      countryCodeAlpha3: isSet(object.countryCodeAlpha3) ? globalThis.String(object.countryCodeAlpha3) : undefined,\n      localeIds: globalThis.Array.isArray(object?.localeIds)\n        ? object.localeIds.map((e: any) => globalThis.String(e))\n        : undefined,\n      localizedNames: globalThis.Array.isArray(object?.localizedNames)\n        ? object.localizedNames.map((e: any) => Country_LocaleName.fromJSON(e))\n        : undefined,\n      timezoneIds: globalThis.Array.isArray(object?.timezoneIds)\n        ? object.timezoneIds.map((e: any) => globalThis.String(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: Country): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.countryCode !== undefined) {\n      obj.countryCode = message.countryCode;\n    }\n    if (message.geographicalName !== undefined) {\n      obj.geographicalName = message.geographicalName;\n    }\n    if (message.economicAreas?.length) {\n      obj.economicAreas = message.economicAreas;\n    }\n    if (message.countryCodeAlpha2 !== undefined) {\n      obj.countryCodeAlpha2 = message.countryCodeAlpha2;\n    }\n    if (message.countryCodeAlpha3 !== undefined) {\n      obj.countryCodeAlpha3 = message.countryCodeAlpha3;\n    }\n    if (message.localeIds?.length) {\n      obj.localeIds = message.localeIds;\n    }\n    if (message.localizedNames?.length) {\n      obj.localizedNames = message.localizedNames.map((e) => Country_LocaleName.toJSON(e));\n    }\n    if (message.timezoneIds?.length) {\n      obj.timezoneIds = message.timezoneIds;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Country>): Country {\n    return Country.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Country>): Country {\n    const message = createBaseCountry();\n    message.id = object.id ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.name = object.name ?? undefined;\n    message.countryCode = object.countryCode ?? undefined;\n    message.geographicalName = object.geographicalName ?? undefined;\n    message.economicAreas = object.economicAreas?.map((e) => e) || undefined;\n    message.countryCodeAlpha2 = object.countryCodeAlpha2 ?? undefined;\n    message.countryCodeAlpha3 = object.countryCodeAlpha3 ?? undefined;\n    message.localeIds = object.localeIds?.map((e) => e) || undefined;\n    message.localizedNames = object.localizedNames?.map((e) => Country_LocaleName.fromPartial(e)) || undefined;\n    message.timezoneIds = object.timezoneIds?.map((e) => e) || undefined;\n    return message;\n  },\n};\n\nfunction createBaseCountry_LocaleName(): Country_LocaleName {\n  return {};\n}\n\nexport const Country_LocaleName: MessageFns<Country_LocaleName> = {\n  encode(message: Country_LocaleName, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.locale !== undefined) {\n      writer.uint32(10).string(message.locale);\n    }\n    if (message.name !== undefined) {\n      writer.uint32(18).string(message.name);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Country_LocaleName {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCountry_LocaleName();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.locale = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Country_LocaleName {\n    return {\n      locale: isSet(object.locale) ? globalThis.String(object.locale) : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n    };\n  },\n\n  toJSON(message: Country_LocaleName): unknown {\n    const obj: any = {};\n    if (message.locale !== undefined) {\n      obj.locale = message.locale;\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Country_LocaleName>): Country_LocaleName {\n    return Country_LocaleName.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Country_LocaleName>): Country_LocaleName {\n    const message = createBaseCountry_LocaleName();\n    message.locale = object.locale ?? undefined;\n    message.name = object.name ?? undefined;\n    return message;\n  },\n};\n\n/** Microservice definition. */\nexport type CountryServiceDefinition = typeof CountryServiceDefinition;\nexport const CountryServiceDefinition = {\n  name: \"CountryService\",\n  fullName: \"io.restorecommerce.country.CountryService\",\n  methods: {\n    read: {\n      name: \"Read\",\n      requestType: ReadRequest,\n      requestStream: false,\n      responseType: CountryListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    create: {\n      name: \"Create\",\n      requestType: CountryList,\n      requestStream: false,\n      responseType: CountryListResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n    update: {\n      name: \"Update\",\n      requestType: CountryList,\n      requestStream: false,\n      responseType: CountryListResponse,\n      responseStream: false,\n      options: {},\n    },\n    upsert: {\n      name: \"Upsert\",\n      requestType: CountryList,\n      requestStream: false,\n      responseType: CountryListResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface CountryServiceImplementation<CallContextExt = {}> {\n  read(request: ReadRequest, context: CallContext & CallContextExt): Promise<DeepPartial<CountryListResponse>>;\n  create(request: CountryList, context: CallContext & CallContextExt): Promise<DeepPartial<CountryListResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n  update(request: CountryList, context: CallContext & CallContextExt): Promise<DeepPartial<CountryListResponse>>;\n  upsert(request: CountryList, context: CallContext & CallContextExt): Promise<DeepPartial<CountryListResponse>>;\n}\n\nexport interface CountryServiceClient<CallOptionsExt = {}> {\n  read(request: DeepPartial<ReadRequest>, options?: CallOptions & CallOptionsExt): Promise<CountryListResponse>;\n  create(request: DeepPartial<CountryList>, options?: CallOptions & CallOptionsExt): Promise<CountryListResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n  update(request: DeepPartial<CountryList>, options?: CallOptions & CallOptionsExt): Promise<CountryListResponse>;\n  upsert(request: DeepPartial<CountryList>, options?: CallOptions & CallOptionsExt): Promise<CountryListResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/country.proto\",\n    \"package\": \"io.restorecommerce.country\",\n    \"dependency\": [\n      \"io/restorecommerce/resource_base.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/options.proto\",\n      \"io/restorecommerce/locale.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Deleted\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"CountryList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.country.Country\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"CountryListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.country.CountryResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"CountryResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.country.Country\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Country\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"name\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"country_code\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"countryCode\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"geographical_name\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"geographicalName\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"economic_areas\",\n        \"number\": 6,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"economicAreas\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"country_code_alpha_2\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"countryCodeAlpha2\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"country_code_alpha_3\",\n        \"number\": 8,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"countryCodeAlpha3\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"locale_ids\",\n        \"number\": 9,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"localeIds\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"localized_names\",\n        \"number\": 10,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.country.Country.LocaleName\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"localizedNames\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"timezone_ids\",\n        \"number\": 11,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"timezoneIds\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [{\n        \"name\": \"LocaleName\",\n        \"field\": [{\n          \"name\": \"locale\",\n          \"number\": 1,\n          \"label\": 1,\n          \"type\": 9,\n          \"typeName\": \"\",\n          \"extendee\": \"\",\n          \"defaultValue\": \"\",\n          \"oneofIndex\": 0,\n          \"jsonName\": \"locale\",\n          \"options\": undefined,\n          \"proto3Optional\": true,\n        }, {\n          \"name\": \"name\",\n          \"number\": 2,\n          \"label\": 1,\n          \"type\": 9,\n          \"typeName\": \"\",\n          \"extendee\": \"\",\n          \"defaultValue\": \"\",\n          \"oneofIndex\": 1,\n          \"jsonName\": \"name\",\n          \"options\": undefined,\n          \"proto3Optional\": true,\n        }],\n        \"extension\": [],\n        \"nestedType\": [],\n        \"enumType\": [],\n        \"extensionRange\": [],\n        \"oneofDecl\": [{ \"name\": \"_locale\", \"options\": undefined }, { \"name\": \"_name\", \"options\": undefined }],\n        \"options\": undefined,\n        \"reservedRange\": [],\n        \"reservedName\": [],\n      }],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_name\", \"options\": undefined },\n        { \"name\": \"_country_code\", \"options\": undefined },\n        { \"name\": \"_geographical_name\", \"options\": undefined },\n        { \"name\": \"_country_code_alpha_2\", \"options\": undefined },\n        { \"name\": \"_country_code_alpha_3\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [{\n      \"name\": \"CountryService\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ReadRequest\",\n        \"outputType\": \".io.restorecommerce.country.CountryListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.country.CountryList\",\n        \"outputType\": \".io.restorecommerce.country.CountryListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.country.CountryList\",\n        \"outputType\": \".io.restorecommerce.country.CountryListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.country.CountryList\",\n        \"outputType\": \".io.restorecommerce.country.CountryListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [3, 5],\n        \"span\": [11, 0, 41],\n        \"leadingComments\": \" Used by resolvers\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0],\n        \"span\": [16, 0, 24, 1],\n        \"leadingComments\": \"\\n Microservice definition.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4, 2, 3],\n        \"span\": [56, 2, 35],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" primaly used in target application (fallback)\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4, 2, 6],\n        \"span\": [59, 2, 43],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" ISO 3166-1 alpha-2\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4, 2, 7],\n        \"span\": [60, 2, 43],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" ISO 3166-1 alpha-3\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4, 2, 8],\n        \"span\": [61, 2, 69, 4],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" list of common locale in this country, sorted by priority first\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4, 2, 9],\n        \"span\": [70, 2, 43],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" list of localized names\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4, 2, 10],\n        \"span\": [71, 2, 79, 4],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" list of avalable timezones in this country\\n\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.country.Deleted\": Deleted,\n    \".io.restorecommerce.country.CountryList\": CountryList,\n    \".io.restorecommerce.country.CountryListResponse\": CountryListResponse,\n    \".io.restorecommerce.country.CountryResponse\": CountryResponse,\n    \".io.restorecommerce.country.Country\": Country,\n    \".io.restorecommerce.country.Country.LocaleName\": Country_LocaleName,\n  },\n  dependencies: [protoMetadata1, protoMetadata2, protoMetadata3, protoMetadata4, protoMetadata5, protoMetadata6],\n  options: {\n    messages: {\n      \"Country\": {\n        fields: {\n          \"locale_ids\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CiEuaW8ucmVzdG9yZWNvbW1lcmNlLmxvY2FsZS5Mb2NhbGUSC21hc3Rlcl9kYXRhGgZsb2NhbGUiBFJlYWQqB2xvY2FsZXM=\",\n                \"base64\",\n              ),\n            ),\n          },\n          \"timezone_ids\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CiUuaW8ucmVzdG9yZWNvbW1lcmNlLnRpbWV6b25lLlRpbWV6b25lEgttYXN0ZXJfZGF0YRoIdGltZXpvbmUiBFJlYWQqCXRpbWV6b25lcw==\",\n                \"base64\",\n              ),\n            ),\n          },\n        },\n      },\n    },\n    services: { \"CountryService\": { methods: { \"Read\": { \"is_query\": true } } } },\n  },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/address.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { protoMetadata as protoMetadata3, Subject } from \"./auth\";\nimport { protoMetadata as protoMetadata6 } from \"./country\";\nimport { Meta, protoMetadata as protoMetadata2 } from \"./meta\";\nimport { protoMetadata as protoMetadata5, Resolver } from \"./options\";\nimport { DeleteRequest, DeleteResponse, protoMetadata as protoMetadata1, ReadRequest } from \"./resource_base\";\nimport { OperationStatus, protoMetadata as protoMetadata4, Status } from \"./status\";\n\nexport const protobufPackage = \"io.restorecommerce.address\";\n\nexport interface Deleted {\n  id?: string | undefined;\n}\n\nexport interface AddressList {\n  items?: Address[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface AddressListResponse {\n  items?: AddressResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface AddressResponse {\n  payload?: Address | undefined;\n  status?: Status | undefined;\n}\n\nexport interface GeoPoint {\n  latitude?: number | undefined;\n  longitude?: number | undefined;\n}\n\nexport interface AddressAddition {\n  field1?: string | undefined;\n  field2?: string | undefined;\n}\n\nexport interface BusinessAddress {\n  name?: string | undefined;\n}\n\nexport interface ResidentialAddress {\n  title?: string | undefined;\n  givenName?: string | undefined;\n  midName?: string | undefined;\n  familyName?: string | undefined;\n}\n\nexport interface PackStation {\n  provider?: string | undefined;\n  stationNumber?: string | undefined;\n  postNumber?: string | undefined;\n}\n\nexport interface Address {\n  id?: string | undefined;\n  meta?: Meta | undefined;\n  postcode?: string | undefined;\n  countryId?: string | undefined;\n  locality?: string | undefined;\n  street?: string | undefined;\n  region?: string | undefined;\n  geoCoordinates?: GeoPoint | undefined;\n  altitude?: number | undefined;\n  buildingNumber?: string | undefined;\n  addressAddition?: AddressAddition | undefined;\n  businessAddress?: BusinessAddress | undefined;\n  residentialAddress?: ResidentialAddress | undefined;\n  packStation?: PackStation | undefined;\n}\n\nexport interface Contact {\n  name?: string | undefined;\n  email?: string | undefined;\n  phone?: string | undefined;\n}\n\nexport interface ShippingAddress {\n  address?: Address | undefined;\n  contact?: Contact | undefined;\n  comments?: string | undefined;\n}\n\nexport interface BillingAddress {\n  address?: Address | undefined;\n  contact?: Contact | undefined;\n  comments?: string | undefined;\n}\n\nfunction createBaseDeleted(): Deleted {\n  return {};\n}\n\nexport const Deleted: MessageFns<Deleted> = {\n  encode(message: Deleted, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Deleted {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseDeleted();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Deleted {\n    return { id: isSet(object.id) ? globalThis.String(object.id) : undefined };\n  },\n\n  toJSON(message: Deleted): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Deleted>): Deleted {\n    return Deleted.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Deleted>): Deleted {\n    const message = createBaseDeleted();\n    message.id = object.id ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseAddressList(): AddressList {\n  return {};\n}\n\nexport const AddressList: MessageFns<AddressList> = {\n  encode(message: AddressList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        Address.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): AddressList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseAddressList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = Address.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): AddressList {\n    return {\n      items: globalThis.Array.isArray(object?.items) ? object.items.map((e: any) => Address.fromJSON(e)) : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: AddressList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => Address.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<AddressList>): AddressList {\n    return AddressList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<AddressList>): AddressList {\n    const message = createBaseAddressList();\n    message.items = object.items?.map((e) => Address.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseAddressListResponse(): AddressListResponse {\n  return {};\n}\n\nexport const AddressListResponse: MessageFns<AddressListResponse> = {\n  encode(message: AddressListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        AddressResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): AddressListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseAddressListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = AddressResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): AddressListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => AddressResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: AddressListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => AddressResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<AddressListResponse>): AddressListResponse {\n    return AddressListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<AddressListResponse>): AddressListResponse {\n    const message = createBaseAddressListResponse();\n    message.items = object.items?.map((e) => AddressResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseAddressResponse(): AddressResponse {\n  return {};\n}\n\nexport const AddressResponse: MessageFns<AddressResponse> = {\n  encode(message: AddressResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      Address.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): AddressResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseAddressResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = Address.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): AddressResponse {\n    return {\n      payload: isSet(object.payload) ? Address.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: AddressResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = Address.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<AddressResponse>): AddressResponse {\n    return AddressResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<AddressResponse>): AddressResponse {\n    const message = createBaseAddressResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? Address.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseGeoPoint(): GeoPoint {\n  return {};\n}\n\nexport const GeoPoint: MessageFns<GeoPoint> = {\n  encode(message: GeoPoint, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.latitude !== undefined) {\n      writer.uint32(9).double(message.latitude);\n    }\n    if (message.longitude !== undefined) {\n      writer.uint32(17).double(message.longitude);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GeoPoint {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGeoPoint();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 9) {\n            break;\n          }\n\n          message.latitude = reader.double();\n          continue;\n        }\n        case 2: {\n          if (tag !== 17) {\n            break;\n          }\n\n          message.longitude = reader.double();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GeoPoint {\n    return {\n      latitude: isSet(object.latitude) ? globalThis.Number(object.latitude) : undefined,\n      longitude: isSet(object.longitude) ? globalThis.Number(object.longitude) : undefined,\n    };\n  },\n\n  toJSON(message: GeoPoint): unknown {\n    const obj: any = {};\n    if (message.latitude !== undefined) {\n      obj.latitude = message.latitude;\n    }\n    if (message.longitude !== undefined) {\n      obj.longitude = message.longitude;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GeoPoint>): GeoPoint {\n    return GeoPoint.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GeoPoint>): GeoPoint {\n    const message = createBaseGeoPoint();\n    message.latitude = object.latitude ?? undefined;\n    message.longitude = object.longitude ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseAddressAddition(): AddressAddition {\n  return {};\n}\n\nexport const AddressAddition: MessageFns<AddressAddition> = {\n  encode(message: AddressAddition, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.field1 !== undefined) {\n      writer.uint32(10).string(message.field1);\n    }\n    if (message.field2 !== undefined) {\n      writer.uint32(18).string(message.field2);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): AddressAddition {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseAddressAddition();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.field1 = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.field2 = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): AddressAddition {\n    return {\n      field1: isSet(object.field1) ? globalThis.String(object.field1) : undefined,\n      field2: isSet(object.field2) ? globalThis.String(object.field2) : undefined,\n    };\n  },\n\n  toJSON(message: AddressAddition): unknown {\n    const obj: any = {};\n    if (message.field1 !== undefined) {\n      obj.field1 = message.field1;\n    }\n    if (message.field2 !== undefined) {\n      obj.field2 = message.field2;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<AddressAddition>): AddressAddition {\n    return AddressAddition.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<AddressAddition>): AddressAddition {\n    const message = createBaseAddressAddition();\n    message.field1 = object.field1 ?? undefined;\n    message.field2 = object.field2 ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseBusinessAddress(): BusinessAddress {\n  return {};\n}\n\nexport const BusinessAddress: MessageFns<BusinessAddress> = {\n  encode(message: BusinessAddress, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.name !== undefined) {\n      writer.uint32(10).string(message.name);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): BusinessAddress {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseBusinessAddress();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): BusinessAddress {\n    return { name: isSet(object.name) ? globalThis.String(object.name) : undefined };\n  },\n\n  toJSON(message: BusinessAddress): unknown {\n    const obj: any = {};\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<BusinessAddress>): BusinessAddress {\n    return BusinessAddress.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<BusinessAddress>): BusinessAddress {\n    const message = createBaseBusinessAddress();\n    message.name = object.name ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseResidentialAddress(): ResidentialAddress {\n  return {};\n}\n\nexport const ResidentialAddress: MessageFns<ResidentialAddress> = {\n  encode(message: ResidentialAddress, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.title !== undefined) {\n      writer.uint32(10).string(message.title);\n    }\n    if (message.givenName !== undefined) {\n      writer.uint32(18).string(message.givenName);\n    }\n    if (message.midName !== undefined) {\n      writer.uint32(26).string(message.midName);\n    }\n    if (message.familyName !== undefined) {\n      writer.uint32(34).string(message.familyName);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ResidentialAddress {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseResidentialAddress();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.title = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.givenName = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.midName = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.familyName = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ResidentialAddress {\n    return {\n      title: isSet(object.title) ? globalThis.String(object.title) : undefined,\n      givenName: isSet(object.givenName) ? globalThis.String(object.givenName) : undefined,\n      midName: isSet(object.midName) ? globalThis.String(object.midName) : undefined,\n      familyName: isSet(object.familyName) ? globalThis.String(object.familyName) : undefined,\n    };\n  },\n\n  toJSON(message: ResidentialAddress): unknown {\n    const obj: any = {};\n    if (message.title !== undefined) {\n      obj.title = message.title;\n    }\n    if (message.givenName !== undefined) {\n      obj.givenName = message.givenName;\n    }\n    if (message.midName !== undefined) {\n      obj.midName = message.midName;\n    }\n    if (message.familyName !== undefined) {\n      obj.familyName = message.familyName;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ResidentialAddress>): ResidentialAddress {\n    return ResidentialAddress.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ResidentialAddress>): ResidentialAddress {\n    const message = createBaseResidentialAddress();\n    message.title = object.title ?? undefined;\n    message.givenName = object.givenName ?? undefined;\n    message.midName = object.midName ?? undefined;\n    message.familyName = object.familyName ?? undefined;\n    return message;\n  },\n};\n\nfunction createBasePackStation(): PackStation {\n  return {};\n}\n\nexport const PackStation: MessageFns<PackStation> = {\n  encode(message: PackStation, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.provider !== undefined) {\n      writer.uint32(10).string(message.provider);\n    }\n    if (message.stationNumber !== undefined) {\n      writer.uint32(18).string(message.stationNumber);\n    }\n    if (message.postNumber !== undefined) {\n      writer.uint32(26).string(message.postNumber);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PackStation {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePackStation();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.provider = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.stationNumber = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.postNumber = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PackStation {\n    return {\n      provider: isSet(object.provider) ? globalThis.String(object.provider) : undefined,\n      stationNumber: isSet(object.stationNumber) ? globalThis.String(object.stationNumber) : undefined,\n      postNumber: isSet(object.postNumber) ? globalThis.String(object.postNumber) : undefined,\n    };\n  },\n\n  toJSON(message: PackStation): unknown {\n    const obj: any = {};\n    if (message.provider !== undefined) {\n      obj.provider = message.provider;\n    }\n    if (message.stationNumber !== undefined) {\n      obj.stationNumber = message.stationNumber;\n    }\n    if (message.postNumber !== undefined) {\n      obj.postNumber = message.postNumber;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PackStation>): PackStation {\n    return PackStation.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PackStation>): PackStation {\n    const message = createBasePackStation();\n    message.provider = object.provider ?? undefined;\n    message.stationNumber = object.stationNumber ?? undefined;\n    message.postNumber = object.postNumber ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseAddress(): Address {\n  return {};\n}\n\nexport const Address: MessageFns<Address> = {\n  encode(message: Address, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(18).fork()).join();\n    }\n    if (message.postcode !== undefined) {\n      writer.uint32(26).string(message.postcode);\n    }\n    if (message.countryId !== undefined) {\n      writer.uint32(34).string(message.countryId);\n    }\n    if (message.locality !== undefined) {\n      writer.uint32(50).string(message.locality);\n    }\n    if (message.street !== undefined) {\n      writer.uint32(58).string(message.street);\n    }\n    if (message.region !== undefined) {\n      writer.uint32(66).string(message.region);\n    }\n    if (message.geoCoordinates !== undefined) {\n      GeoPoint.encode(message.geoCoordinates, writer.uint32(74).fork()).join();\n    }\n    if (message.altitude !== undefined) {\n      writer.uint32(81).double(message.altitude);\n    }\n    if (message.buildingNumber !== undefined) {\n      writer.uint32(90).string(message.buildingNumber);\n    }\n    if (message.addressAddition !== undefined) {\n      AddressAddition.encode(message.addressAddition, writer.uint32(98).fork()).join();\n    }\n    if (message.businessAddress !== undefined) {\n      BusinessAddress.encode(message.businessAddress, writer.uint32(106).fork()).join();\n    }\n    if (message.residentialAddress !== undefined) {\n      ResidentialAddress.encode(message.residentialAddress, writer.uint32(114).fork()).join();\n    }\n    if (message.packStation !== undefined) {\n      PackStation.encode(message.packStation, writer.uint32(122).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Address {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseAddress();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.postcode = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.countryId = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.locality = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.street = reader.string();\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.region = reader.string();\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.geoCoordinates = GeoPoint.decode(reader, reader.uint32());\n          continue;\n        }\n        case 10: {\n          if (tag !== 81) {\n            break;\n          }\n\n          message.altitude = reader.double();\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.buildingNumber = reader.string();\n          continue;\n        }\n        case 12: {\n          if (tag !== 98) {\n            break;\n          }\n\n          message.addressAddition = AddressAddition.decode(reader, reader.uint32());\n          continue;\n        }\n        case 13: {\n          if (tag !== 106) {\n            break;\n          }\n\n          message.businessAddress = BusinessAddress.decode(reader, reader.uint32());\n          continue;\n        }\n        case 14: {\n          if (tag !== 114) {\n            break;\n          }\n\n          message.residentialAddress = ResidentialAddress.decode(reader, reader.uint32());\n          continue;\n        }\n        case 15: {\n          if (tag !== 122) {\n            break;\n          }\n\n          message.packStation = PackStation.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Address {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      postcode: isSet(object.postcode) ? globalThis.String(object.postcode) : undefined,\n      countryId: isSet(object.countryId) ? globalThis.String(object.countryId) : undefined,\n      locality: isSet(object.locality) ? globalThis.String(object.locality) : undefined,\n      street: isSet(object.street) ? globalThis.String(object.street) : undefined,\n      region: isSet(object.region) ? globalThis.String(object.region) : undefined,\n      geoCoordinates: isSet(object.geoCoordinates) ? GeoPoint.fromJSON(object.geoCoordinates) : undefined,\n      altitude: isSet(object.altitude) ? globalThis.Number(object.altitude) : undefined,\n      buildingNumber: isSet(object.buildingNumber) ? globalThis.String(object.buildingNumber) : undefined,\n      addressAddition: isSet(object.addressAddition) ? AddressAddition.fromJSON(object.addressAddition) : undefined,\n      businessAddress: isSet(object.businessAddress) ? BusinessAddress.fromJSON(object.businessAddress) : undefined,\n      residentialAddress: isSet(object.residentialAddress)\n        ? ResidentialAddress.fromJSON(object.residentialAddress)\n        : undefined,\n      packStation: isSet(object.packStation) ? PackStation.fromJSON(object.packStation) : undefined,\n    };\n  },\n\n  toJSON(message: Address): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.postcode !== undefined) {\n      obj.postcode = message.postcode;\n    }\n    if (message.countryId !== undefined) {\n      obj.countryId = message.countryId;\n    }\n    if (message.locality !== undefined) {\n      obj.locality = message.locality;\n    }\n    if (message.street !== undefined) {\n      obj.street = message.street;\n    }\n    if (message.region !== undefined) {\n      obj.region = message.region;\n    }\n    if (message.geoCoordinates !== undefined) {\n      obj.geoCoordinates = GeoPoint.toJSON(message.geoCoordinates);\n    }\n    if (message.altitude !== undefined) {\n      obj.altitude = message.altitude;\n    }\n    if (message.buildingNumber !== undefined) {\n      obj.buildingNumber = message.buildingNumber;\n    }\n    if (message.addressAddition !== undefined) {\n      obj.addressAddition = AddressAddition.toJSON(message.addressAddition);\n    }\n    if (message.businessAddress !== undefined) {\n      obj.businessAddress = BusinessAddress.toJSON(message.businessAddress);\n    }\n    if (message.residentialAddress !== undefined) {\n      obj.residentialAddress = ResidentialAddress.toJSON(message.residentialAddress);\n    }\n    if (message.packStation !== undefined) {\n      obj.packStation = PackStation.toJSON(message.packStation);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Address>): Address {\n    return Address.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Address>): Address {\n    const message = createBaseAddress();\n    message.id = object.id ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.postcode = object.postcode ?? undefined;\n    message.countryId = object.countryId ?? undefined;\n    message.locality = object.locality ?? undefined;\n    message.street = object.street ?? undefined;\n    message.region = object.region ?? undefined;\n    message.geoCoordinates = (object.geoCoordinates !== undefined && object.geoCoordinates !== null)\n      ? GeoPoint.fromPartial(object.geoCoordinates)\n      : undefined;\n    message.altitude = object.altitude ?? undefined;\n    message.buildingNumber = object.buildingNumber ?? undefined;\n    message.addressAddition = (object.addressAddition !== undefined && object.addressAddition !== null)\n      ? AddressAddition.fromPartial(object.addressAddition)\n      : undefined;\n    message.businessAddress = (object.businessAddress !== undefined && object.businessAddress !== null)\n      ? BusinessAddress.fromPartial(object.businessAddress)\n      : undefined;\n    message.residentialAddress = (object.residentialAddress !== undefined && object.residentialAddress !== null)\n      ? ResidentialAddress.fromPartial(object.residentialAddress)\n      : undefined;\n    message.packStation = (object.packStation !== undefined && object.packStation !== null)\n      ? PackStation.fromPartial(object.packStation)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseContact(): Contact {\n  return {};\n}\n\nexport const Contact: MessageFns<Contact> = {\n  encode(message: Contact, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.name !== undefined) {\n      writer.uint32(10).string(message.name);\n    }\n    if (message.email !== undefined) {\n      writer.uint32(18).string(message.email);\n    }\n    if (message.phone !== undefined) {\n      writer.uint32(26).string(message.phone);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Contact {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseContact();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.email = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.phone = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Contact {\n    return {\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      email: isSet(object.email) ? globalThis.String(object.email) : undefined,\n      phone: isSet(object.phone) ? globalThis.String(object.phone) : undefined,\n    };\n  },\n\n  toJSON(message: Contact): unknown {\n    const obj: any = {};\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.email !== undefined) {\n      obj.email = message.email;\n    }\n    if (message.phone !== undefined) {\n      obj.phone = message.phone;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Contact>): Contact {\n    return Contact.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Contact>): Contact {\n    const message = createBaseContact();\n    message.name = object.name ?? undefined;\n    message.email = object.email ?? undefined;\n    message.phone = object.phone ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseShippingAddress(): ShippingAddress {\n  return {};\n}\n\nexport const ShippingAddress: MessageFns<ShippingAddress> = {\n  encode(message: ShippingAddress, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.address !== undefined) {\n      Address.encode(message.address, writer.uint32(10).fork()).join();\n    }\n    if (message.contact !== undefined) {\n      Contact.encode(message.contact, writer.uint32(18).fork()).join();\n    }\n    if (message.comments !== undefined) {\n      writer.uint32(26).string(message.comments);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ShippingAddress {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseShippingAddress();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.address = Address.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.contact = Contact.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.comments = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ShippingAddress {\n    return {\n      address: isSet(object.address) ? Address.fromJSON(object.address) : undefined,\n      contact: isSet(object.contact) ? Contact.fromJSON(object.contact) : undefined,\n      comments: isSet(object.comments) ? globalThis.String(object.comments) : undefined,\n    };\n  },\n\n  toJSON(message: ShippingAddress): unknown {\n    const obj: any = {};\n    if (message.address !== undefined) {\n      obj.address = Address.toJSON(message.address);\n    }\n    if (message.contact !== undefined) {\n      obj.contact = Contact.toJSON(message.contact);\n    }\n    if (message.comments !== undefined) {\n      obj.comments = message.comments;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ShippingAddress>): ShippingAddress {\n    return ShippingAddress.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ShippingAddress>): ShippingAddress {\n    const message = createBaseShippingAddress();\n    message.address = (object.address !== undefined && object.address !== null)\n      ? Address.fromPartial(object.address)\n      : undefined;\n    message.contact = (object.contact !== undefined && object.contact !== null)\n      ? Contact.fromPartial(object.contact)\n      : undefined;\n    message.comments = object.comments ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseBillingAddress(): BillingAddress {\n  return {};\n}\n\nexport const BillingAddress: MessageFns<BillingAddress> = {\n  encode(message: BillingAddress, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.address !== undefined) {\n      Address.encode(message.address, writer.uint32(10).fork()).join();\n    }\n    if (message.contact !== undefined) {\n      Contact.encode(message.contact, writer.uint32(18).fork()).join();\n    }\n    if (message.comments !== undefined) {\n      writer.uint32(26).string(message.comments);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): BillingAddress {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseBillingAddress();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.address = Address.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.contact = Contact.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.comments = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): BillingAddress {\n    return {\n      address: isSet(object.address) ? Address.fromJSON(object.address) : undefined,\n      contact: isSet(object.contact) ? Contact.fromJSON(object.contact) : undefined,\n      comments: isSet(object.comments) ? globalThis.String(object.comments) : undefined,\n    };\n  },\n\n  toJSON(message: BillingAddress): unknown {\n    const obj: any = {};\n    if (message.address !== undefined) {\n      obj.address = Address.toJSON(message.address);\n    }\n    if (message.contact !== undefined) {\n      obj.contact = Contact.toJSON(message.contact);\n    }\n    if (message.comments !== undefined) {\n      obj.comments = message.comments;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<BillingAddress>): BillingAddress {\n    return BillingAddress.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<BillingAddress>): BillingAddress {\n    const message = createBaseBillingAddress();\n    message.address = (object.address !== undefined && object.address !== null)\n      ? Address.fromPartial(object.address)\n      : undefined;\n    message.contact = (object.contact !== undefined && object.contact !== null)\n      ? Contact.fromPartial(object.contact)\n      : undefined;\n    message.comments = object.comments ?? undefined;\n    return message;\n  },\n};\n\n/** Microservice definition. */\nexport type AddressServiceDefinition = typeof AddressServiceDefinition;\nexport const AddressServiceDefinition = {\n  name: \"AddressService\",\n  fullName: \"io.restorecommerce.address.AddressService\",\n  methods: {\n    read: {\n      name: \"Read\",\n      requestType: ReadRequest,\n      requestStream: false,\n      responseType: AddressListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    create: {\n      name: \"Create\",\n      requestType: AddressList,\n      requestStream: false,\n      responseType: AddressListResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n    update: {\n      name: \"Update\",\n      requestType: AddressList,\n      requestStream: false,\n      responseType: AddressListResponse,\n      responseStream: false,\n      options: {},\n    },\n    upsert: {\n      name: \"Upsert\",\n      requestType: AddressList,\n      requestStream: false,\n      responseType: AddressListResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface AddressServiceImplementation<CallContextExt = {}> {\n  read(request: ReadRequest, context: CallContext & CallContextExt): Promise<DeepPartial<AddressListResponse>>;\n  create(request: AddressList, context: CallContext & CallContextExt): Promise<DeepPartial<AddressListResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n  update(request: AddressList, context: CallContext & CallContextExt): Promise<DeepPartial<AddressListResponse>>;\n  upsert(request: AddressList, context: CallContext & CallContextExt): Promise<DeepPartial<AddressListResponse>>;\n}\n\nexport interface AddressServiceClient<CallOptionsExt = {}> {\n  read(request: DeepPartial<ReadRequest>, options?: CallOptions & CallOptionsExt): Promise<AddressListResponse>;\n  create(request: DeepPartial<AddressList>, options?: CallOptions & CallOptionsExt): Promise<AddressListResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n  update(request: DeepPartial<AddressList>, options?: CallOptions & CallOptionsExt): Promise<AddressListResponse>;\n  upsert(request: DeepPartial<AddressList>, options?: CallOptions & CallOptionsExt): Promise<AddressListResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/address.proto\",\n    \"package\": \"io.restorecommerce.address\",\n    \"dependency\": [\n      \"io/restorecommerce/resource_base.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/options.proto\",\n      \"io/restorecommerce/country.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Deleted\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"AddressList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.address.Address\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"AddressListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.address.AddressResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"AddressResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.address.Address\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"GeoPoint\",\n      \"field\": [{\n        \"name\": \"latitude\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 1,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"latitude\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"longitude\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 1,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"longitude\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_latitude\", \"options\": undefined }, { \"name\": \"_longitude\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"AddressAddition\",\n      \"field\": [{\n        \"name\": \"field1\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"field1\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"field2\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"field2\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_field1\", \"options\": undefined }, { \"name\": \"_field2\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"BusinessAddress\",\n      \"field\": [{\n        \"name\": \"name\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_name\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ResidentialAddress\",\n      \"field\": [{\n        \"name\": \"title\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"title\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"given_name\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"givenName\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"mid_name\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"midName\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"family_name\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"familyName\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_title\", \"options\": undefined }, { \"name\": \"_given_name\", \"options\": undefined }, {\n        \"name\": \"_mid_name\",\n        \"options\": undefined,\n      }, { \"name\": \"_family_name\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"PackStation\",\n      \"field\": [{\n        \"name\": \"provider\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"provider\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"station_number\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"stationNumber\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"post_number\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"postNumber\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_provider\", \"options\": undefined },\n        { \"name\": \"_station_number\", \"options\": undefined },\n        { \"name\": \"_post_number\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Address\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"postcode\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"postcode\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"country_id\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"countryId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"locality\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"locality\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"street\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"street\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"region\",\n        \"number\": 8,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 7,\n        \"jsonName\": \"region\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"geo_coordinates\",\n        \"number\": 9,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.address.GeoPoint\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 8,\n        \"jsonName\": \"geoCoordinates\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"altitude\",\n        \"number\": 10,\n        \"label\": 1,\n        \"type\": 1,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 9,\n        \"jsonName\": \"altitude\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"building_number\",\n        \"number\": 11,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 10,\n        \"jsonName\": \"buildingNumber\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"address_addition\",\n        \"number\": 12,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.address.AddressAddition\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 11,\n        \"jsonName\": \"addressAddition\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"business_address\",\n        \"number\": 13,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.address.BusinessAddress\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"businessAddress\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"residential_address\",\n        \"number\": 14,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.address.ResidentialAddress\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"residentialAddress\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"pack_station\",\n        \"number\": 15,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.address.PackStation\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"packStation\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"type\", \"options\": undefined },\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_postcode\", \"options\": undefined },\n        { \"name\": \"_country_id\", \"options\": undefined },\n        { \"name\": \"_locality\", \"options\": undefined },\n        { \"name\": \"_street\", \"options\": undefined },\n        { \"name\": \"_region\", \"options\": undefined },\n        { \"name\": \"_geo_coordinates\", \"options\": undefined },\n        { \"name\": \"_altitude\", \"options\": undefined },\n        { \"name\": \"_building_number\", \"options\": undefined },\n        { \"name\": \"_address_addition\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Contact\",\n      \"field\": [{\n        \"name\": \"name\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"email\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"email\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"phone\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"phone\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_name\", \"options\": undefined }, { \"name\": \"_email\", \"options\": undefined }, {\n        \"name\": \"_phone\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ShippingAddress\",\n      \"field\": [{\n        \"name\": \"address\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.address.Address\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"address\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"contact\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.address.Contact\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"contact\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"comments\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"comments\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_address\", \"options\": undefined }, { \"name\": \"_contact\", \"options\": undefined }, {\n        \"name\": \"_comments\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"BillingAddress\",\n      \"field\": [{\n        \"name\": \"address\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.address.Address\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"address\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"contact\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.address.Contact\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"contact\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"comments\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"comments\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_address\", \"options\": undefined }, { \"name\": \"_contact\", \"options\": undefined }, {\n        \"name\": \"_comments\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [{\n      \"name\": \"AddressService\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ReadRequest\",\n        \"outputType\": \".io.restorecommerce.address.AddressListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.address.AddressList\",\n        \"outputType\": \".io.restorecommerce.address.AddressListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.address.AddressList\",\n        \"outputType\": \".io.restorecommerce.address.AddressListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.address.AddressList\",\n        \"outputType\": \".io.restorecommerce.address.AddressListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [3, 5],\n        \"span\": [11, 0, 42],\n        \"leadingComments\": \" Used by resolvers\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0],\n        \"span\": [16, 0, 24, 1],\n        \"leadingComments\": \"\\n Microservice definition.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.address.Deleted\": Deleted,\n    \".io.restorecommerce.address.AddressList\": AddressList,\n    \".io.restorecommerce.address.AddressListResponse\": AddressListResponse,\n    \".io.restorecommerce.address.AddressResponse\": AddressResponse,\n    \".io.restorecommerce.address.GeoPoint\": GeoPoint,\n    \".io.restorecommerce.address.AddressAddition\": AddressAddition,\n    \".io.restorecommerce.address.BusinessAddress\": BusinessAddress,\n    \".io.restorecommerce.address.ResidentialAddress\": ResidentialAddress,\n    \".io.restorecommerce.address.PackStation\": PackStation,\n    \".io.restorecommerce.address.Address\": Address,\n    \".io.restorecommerce.address.Contact\": Contact,\n    \".io.restorecommerce.address.ShippingAddress\": ShippingAddress,\n    \".io.restorecommerce.address.BillingAddress\": BillingAddress,\n  },\n  dependencies: [protoMetadata1, protoMetadata2, protoMetadata3, protoMetadata4, protoMetadata5, protoMetadata6],\n  options: {\n    messages: {\n      \"Address\": {\n        fields: {\n          \"country_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CiMuaW8ucmVzdG9yZWNvbW1lcmNlLmNvdW50cnkuQ291bnRyeRILbWFzdGVyX2RhdGEaB2NvdW50cnkiBFJlYWQqB2NvdW50cnk=\",\n                \"base64\",\n              ),\n            ),\n          },\n        },\n      },\n    },\n    services: { \"AddressService\": { methods: { \"Read\": { \"is_query\": true } } } },\n  },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/currency.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { protoMetadata as protoMetadata6 } from \"../../google/protobuf/timestamp\";\nimport { protoMetadata as protoMetadata3, Subject } from \"./auth\";\nimport { Meta, protoMetadata as protoMetadata2 } from \"./meta\";\nimport { protoMetadata as protoMetadata5, Resolver } from \"./options\";\nimport { DeleteRequest, DeleteResponse, protoMetadata as protoMetadata1, ReadRequest } from \"./resource_base\";\nimport { OperationStatus, protoMetadata as protoMetadata4, Status } from \"./status\";\n\nexport const protobufPackage = \"io.restorecommerce.currency\";\n\nexport enum SymbolAlignment {\n  surfix = \"surfix\",\n  prefix = \"prefix\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function symbolAlignmentFromJSON(object: any): SymbolAlignment {\n  switch (object) {\n    case 0:\n    case \"surfix\":\n      return SymbolAlignment.surfix;\n    case 1:\n    case \"prefix\":\n      return SymbolAlignment.prefix;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return SymbolAlignment.UNRECOGNIZED;\n  }\n}\n\nexport function symbolAlignmentToJSON(object: SymbolAlignment): string {\n  switch (object) {\n    case SymbolAlignment.surfix:\n      return \"surfix\";\n    case SymbolAlignment.prefix:\n      return \"prefix\";\n    case SymbolAlignment.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function symbolAlignmentToNumber(object: SymbolAlignment): number {\n  switch (object) {\n    case SymbolAlignment.surfix:\n      return 0;\n    case SymbolAlignment.prefix:\n      return 1;\n    case SymbolAlignment.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\nexport interface CurrencyList {\n  items?: Currency[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface CurrencyListResponse {\n  items?: CurrencyResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface CurrencyResponse {\n  payload?: Currency | undefined;\n  status?: Status | undefined;\n}\n\nexport interface Currency {\n  id?: string | undefined;\n  meta?: Meta | undefined;\n  name?: string | undefined;\n  symbol?: string | undefined;\n  countryIds?:\n    | string[]\n    | undefined;\n  /**\n   * For custom exchange rates beyond market.\n   * Regular rates should be retrived from any API.\n   */\n  customExchangeRates?: ExchangeRate[] | undefined;\n  precision?: number | undefined;\n  code?: string | undefined;\n}\n\nexport interface ExchangeRate {\n  toCurrencyId?: string | undefined;\n  rate?:\n    | number\n    | undefined;\n  /** fees */\n  expenses?:\n    | number\n    | undefined;\n  /** leave empty == 1.0 */\n  amount?: number | undefined;\n}\n\nfunction createBaseCurrencyList(): CurrencyList {\n  return {};\n}\n\nexport const CurrencyList: MessageFns<CurrencyList> = {\n  encode(message: CurrencyList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        Currency.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CurrencyList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCurrencyList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = Currency.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CurrencyList {\n    return {\n      items: globalThis.Array.isArray(object?.items) ? object.items.map((e: any) => Currency.fromJSON(e)) : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: CurrencyList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => Currency.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CurrencyList>): CurrencyList {\n    return CurrencyList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CurrencyList>): CurrencyList {\n    const message = createBaseCurrencyList();\n    message.items = object.items?.map((e) => Currency.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseCurrencyListResponse(): CurrencyListResponse {\n  return {};\n}\n\nexport const CurrencyListResponse: MessageFns<CurrencyListResponse> = {\n  encode(message: CurrencyListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        CurrencyResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CurrencyListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCurrencyListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = CurrencyResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CurrencyListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => CurrencyResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: CurrencyListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => CurrencyResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CurrencyListResponse>): CurrencyListResponse {\n    return CurrencyListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CurrencyListResponse>): CurrencyListResponse {\n    const message = createBaseCurrencyListResponse();\n    message.items = object.items?.map((e) => CurrencyResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseCurrencyResponse(): CurrencyResponse {\n  return {};\n}\n\nexport const CurrencyResponse: MessageFns<CurrencyResponse> = {\n  encode(message: CurrencyResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      Currency.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CurrencyResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCurrencyResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = Currency.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CurrencyResponse {\n    return {\n      payload: isSet(object.payload) ? Currency.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: CurrencyResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = Currency.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CurrencyResponse>): CurrencyResponse {\n    return CurrencyResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CurrencyResponse>): CurrencyResponse {\n    const message = createBaseCurrencyResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? Currency.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseCurrency(): Currency {\n  return {};\n}\n\nexport const Currency: MessageFns<Currency> = {\n  encode(message: Currency, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(18).fork()).join();\n    }\n    if (message.name !== undefined) {\n      writer.uint32(26).string(message.name);\n    }\n    if (message.symbol !== undefined) {\n      writer.uint32(34).string(message.symbol);\n    }\n    if (message.countryIds !== undefined && message.countryIds.length !== 0) {\n      for (const v of message.countryIds) {\n        writer.uint32(42).string(v!);\n      }\n    }\n    if (message.customExchangeRates !== undefined && message.customExchangeRates.length !== 0) {\n      for (const v of message.customExchangeRates) {\n        ExchangeRate.encode(v!, writer.uint32(50).fork()).join();\n      }\n    }\n    if (message.precision !== undefined) {\n      writer.uint32(56).int32(message.precision);\n    }\n    if (message.code !== undefined) {\n      writer.uint32(66).string(message.code);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Currency {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCurrency();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.symbol = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          if (message.countryIds === undefined) {\n            message.countryIds = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.countryIds!.push(el);\n          }\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          if (message.customExchangeRates === undefined) {\n            message.customExchangeRates = [];\n          }\n          const el = ExchangeRate.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.customExchangeRates!.push(el);\n          }\n          continue;\n        }\n        case 7: {\n          if (tag !== 56) {\n            break;\n          }\n\n          message.precision = reader.int32();\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.code = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Currency {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      symbol: isSet(object.symbol) ? globalThis.String(object.symbol) : undefined,\n      countryIds: globalThis.Array.isArray(object?.countryIds)\n        ? object.countryIds.map((e: any) => globalThis.String(e))\n        : undefined,\n      customExchangeRates: globalThis.Array.isArray(object?.customExchangeRates)\n        ? object.customExchangeRates.map((e: any) => ExchangeRate.fromJSON(e))\n        : undefined,\n      precision: isSet(object.precision) ? globalThis.Number(object.precision) : undefined,\n      code: isSet(object.code) ? globalThis.String(object.code) : undefined,\n    };\n  },\n\n  toJSON(message: Currency): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.symbol !== undefined) {\n      obj.symbol = message.symbol;\n    }\n    if (message.countryIds?.length) {\n      obj.countryIds = message.countryIds;\n    }\n    if (message.customExchangeRates?.length) {\n      obj.customExchangeRates = message.customExchangeRates.map((e) => ExchangeRate.toJSON(e));\n    }\n    if (message.precision !== undefined) {\n      obj.precision = Math.round(message.precision);\n    }\n    if (message.code !== undefined) {\n      obj.code = message.code;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Currency>): Currency {\n    return Currency.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Currency>): Currency {\n    const message = createBaseCurrency();\n    message.id = object.id ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.name = object.name ?? undefined;\n    message.symbol = object.symbol ?? undefined;\n    message.countryIds = object.countryIds?.map((e) => e) || undefined;\n    message.customExchangeRates = object.customExchangeRates?.map((e) => ExchangeRate.fromPartial(e)) || undefined;\n    message.precision = object.precision ?? undefined;\n    message.code = object.code ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseExchangeRate(): ExchangeRate {\n  return {};\n}\n\nexport const ExchangeRate: MessageFns<ExchangeRate> = {\n  encode(message: ExchangeRate, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.toCurrencyId !== undefined) {\n      writer.uint32(10).string(message.toCurrencyId);\n    }\n    if (message.rate !== undefined) {\n      writer.uint32(25).double(message.rate);\n    }\n    if (message.expenses !== undefined) {\n      writer.uint32(33).double(message.expenses);\n    }\n    if (message.amount !== undefined) {\n      writer.uint32(41).double(message.amount);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ExchangeRate {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseExchangeRate();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.toCurrencyId = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 25) {\n            break;\n          }\n\n          message.rate = reader.double();\n          continue;\n        }\n        case 4: {\n          if (tag !== 33) {\n            break;\n          }\n\n          message.expenses = reader.double();\n          continue;\n        }\n        case 5: {\n          if (tag !== 41) {\n            break;\n          }\n\n          message.amount = reader.double();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ExchangeRate {\n    return {\n      toCurrencyId: isSet(object.toCurrencyId) ? globalThis.String(object.toCurrencyId) : undefined,\n      rate: isSet(object.rate) ? globalThis.Number(object.rate) : undefined,\n      expenses: isSet(object.expenses) ? globalThis.Number(object.expenses) : undefined,\n      amount: isSet(object.amount) ? globalThis.Number(object.amount) : undefined,\n    };\n  },\n\n  toJSON(message: ExchangeRate): unknown {\n    const obj: any = {};\n    if (message.toCurrencyId !== undefined) {\n      obj.toCurrencyId = message.toCurrencyId;\n    }\n    if (message.rate !== undefined) {\n      obj.rate = message.rate;\n    }\n    if (message.expenses !== undefined) {\n      obj.expenses = message.expenses;\n    }\n    if (message.amount !== undefined) {\n      obj.amount = message.amount;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ExchangeRate>): ExchangeRate {\n    return ExchangeRate.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ExchangeRate>): ExchangeRate {\n    const message = createBaseExchangeRate();\n    message.toCurrencyId = object.toCurrencyId ?? undefined;\n    message.rate = object.rate ?? undefined;\n    message.expenses = object.expenses ?? undefined;\n    message.amount = object.amount ?? undefined;\n    return message;\n  },\n};\n\n/** Microservice definition. */\nexport type CurrencyServiceDefinition = typeof CurrencyServiceDefinition;\nexport const CurrencyServiceDefinition = {\n  name: \"CurrencyService\",\n  fullName: \"io.restorecommerce.currency.CurrencyService\",\n  methods: {\n    read: {\n      name: \"Read\",\n      requestType: ReadRequest,\n      requestStream: false,\n      responseType: CurrencyListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    create: {\n      name: \"Create\",\n      requestType: CurrencyList,\n      requestStream: false,\n      responseType: CurrencyListResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n    update: {\n      name: \"Update\",\n      requestType: CurrencyList,\n      requestStream: false,\n      responseType: CurrencyListResponse,\n      responseStream: false,\n      options: {},\n    },\n    upsert: {\n      name: \"Upsert\",\n      requestType: CurrencyList,\n      requestStream: false,\n      responseType: CurrencyListResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface CurrencyServiceImplementation<CallContextExt = {}> {\n  read(request: ReadRequest, context: CallContext & CallContextExt): Promise<DeepPartial<CurrencyListResponse>>;\n  create(request: CurrencyList, context: CallContext & CallContextExt): Promise<DeepPartial<CurrencyListResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n  update(request: CurrencyList, context: CallContext & CallContextExt): Promise<DeepPartial<CurrencyListResponse>>;\n  upsert(request: CurrencyList, context: CallContext & CallContextExt): Promise<DeepPartial<CurrencyListResponse>>;\n}\n\nexport interface CurrencyServiceClient<CallOptionsExt = {}> {\n  read(request: DeepPartial<ReadRequest>, options?: CallOptions & CallOptionsExt): Promise<CurrencyListResponse>;\n  create(request: DeepPartial<CurrencyList>, options?: CallOptions & CallOptionsExt): Promise<CurrencyListResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n  update(request: DeepPartial<CurrencyList>, options?: CallOptions & CallOptionsExt): Promise<CurrencyListResponse>;\n  upsert(request: DeepPartial<CurrencyList>, options?: CallOptions & CallOptionsExt): Promise<CurrencyListResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/currency.proto\",\n    \"package\": \"io.restorecommerce.currency\",\n    \"dependency\": [\n      \"io/restorecommerce/resource_base.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/options.proto\",\n      \"google/protobuf/timestamp.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"CurrencyList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.currency.Currency\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"CurrencyListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.currency.CurrencyResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"CurrencyResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.currency.Currency\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Currency\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"name\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"symbol\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"symbol\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"country_ids\",\n        \"number\": 5,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"countryIds\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"custom_exchange_rates\",\n        \"number\": 6,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.currency.ExchangeRate\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"customExchangeRates\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"precision\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 5,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"precision\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"code\",\n        \"number\": 8,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"code\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_name\", \"options\": undefined },\n        { \"name\": \"_symbol\", \"options\": undefined },\n        { \"name\": \"_precision\", \"options\": undefined },\n        { \"name\": \"_code\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ExchangeRate\",\n      \"field\": [{\n        \"name\": \"to_currency_id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"toCurrencyId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"rate\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 1,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"rate\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"expenses\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 1,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"expenses\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"amount\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 1,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"amount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_to_currency_id\", \"options\": undefined }, { \"name\": \"_rate\", \"options\": undefined }, {\n        \"name\": \"_expenses\",\n        \"options\": undefined,\n      }, { \"name\": \"_amount\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [{\n      \"name\": \"SymbolAlignment\",\n      \"value\": [{ \"name\": \"surfix\", \"number\": 0, \"options\": undefined }, {\n        \"name\": \"prefix\",\n        \"number\": 1,\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"service\": [{\n      \"name\": \"CurrencyService\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ReadRequest\",\n        \"outputType\": \".io.restorecommerce.currency.CurrencyListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.currency.CurrencyList\",\n        \"outputType\": \".io.restorecommerce.currency.CurrencyListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.currency.CurrencyList\",\n        \"outputType\": \".io.restorecommerce.currency.CurrencyListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.currency.CurrencyList\",\n        \"outputType\": \".io.restorecommerce.currency.CurrencyListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [6, 0],\n        \"span\": [14, 0, 22, 1],\n        \"leadingComments\": \"\\n Microservice definition.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 3, 2, 5],\n        \"span\": [64, 2, 50],\n        \"leadingComments\":\n          \"\\n For custom exchange rates beyond market.\\n Regular rates should be retrived from any API.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4, 2, 2],\n        \"span\": [72, 2, 31],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \"fees\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4, 2, 3],\n        \"span\": [73, 2, 29],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" leave empty == 1.0\\n\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.currency.SymbolAlignment\": SymbolAlignment,\n    \".io.restorecommerce.currency.CurrencyList\": CurrencyList,\n    \".io.restorecommerce.currency.CurrencyListResponse\": CurrencyListResponse,\n    \".io.restorecommerce.currency.CurrencyResponse\": CurrencyResponse,\n    \".io.restorecommerce.currency.Currency\": Currency,\n    \".io.restorecommerce.currency.ExchangeRate\": ExchangeRate,\n  },\n  dependencies: [protoMetadata1, protoMetadata2, protoMetadata3, protoMetadata4, protoMetadata5, protoMetadata6],\n  options: {\n    messages: {\n      \"Currency\": {\n        fields: {\n          \"country_ids\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CiMuaW8ucmVzdG9yZWNvbW1lcmNlLmNvdW50cnkuQ291bnRyeRILbWFzdGVyX2RhdGEaB2NvdW50cnkiBFJlYWQqCWNvdW50cmllcw==\",\n                \"base64\",\n              ),\n            ),\n          },\n        },\n      },\n    },\n    services: { \"CurrencyService\": { methods: { \"Read\": { \"is_query\": true } } } },\n  },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/tax_type.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { protoMetadata as protoMetadata3, Subject } from \"./auth\";\nimport { Meta, protoMetadata as protoMetadata2 } from \"./meta\";\nimport { protoMetadata as protoMetadata5 } from \"./options\";\nimport { DeleteRequest, DeleteResponse, protoMetadata as protoMetadata1, ReadRequest } from \"./resource_base\";\nimport { OperationStatus, protoMetadata as protoMetadata4, Status } from \"./status\";\n\nexport const protobufPackage = \"io.restorecommerce.tax_type\";\n\nexport interface Deleted {\n  id?: string | undefined;\n}\n\nexport interface TaxTypeList {\n  items?: TaxType[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface TaxTypeListResponse {\n  items?: TaxTypeResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface TaxTypeResponse {\n  payload?: TaxType | undefined;\n  status?: Status | undefined;\n}\n\nexport interface TaxType {\n  id?: string | undefined;\n  meta?: Meta | undefined;\n  type?: string | undefined;\n  description?: string | undefined;\n}\n\nfunction createBaseDeleted(): Deleted {\n  return {};\n}\n\nexport const Deleted: MessageFns<Deleted> = {\n  encode(message: Deleted, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Deleted {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseDeleted();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Deleted {\n    return { id: isSet(object.id) ? globalThis.String(object.id) : undefined };\n  },\n\n  toJSON(message: Deleted): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Deleted>): Deleted {\n    return Deleted.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Deleted>): Deleted {\n    const message = createBaseDeleted();\n    message.id = object.id ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseTaxTypeList(): TaxTypeList {\n  return {};\n}\n\nexport const TaxTypeList: MessageFns<TaxTypeList> = {\n  encode(message: TaxTypeList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        TaxType.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): TaxTypeList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseTaxTypeList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = TaxType.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): TaxTypeList {\n    return {\n      items: globalThis.Array.isArray(object?.items) ? object.items.map((e: any) => TaxType.fromJSON(e)) : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: TaxTypeList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => TaxType.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<TaxTypeList>): TaxTypeList {\n    return TaxTypeList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<TaxTypeList>): TaxTypeList {\n    const message = createBaseTaxTypeList();\n    message.items = object.items?.map((e) => TaxType.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseTaxTypeListResponse(): TaxTypeListResponse {\n  return {};\n}\n\nexport const TaxTypeListResponse: MessageFns<TaxTypeListResponse> = {\n  encode(message: TaxTypeListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        TaxTypeResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): TaxTypeListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseTaxTypeListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = TaxTypeResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): TaxTypeListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => TaxTypeResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: TaxTypeListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => TaxTypeResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<TaxTypeListResponse>): TaxTypeListResponse {\n    return TaxTypeListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<TaxTypeListResponse>): TaxTypeListResponse {\n    const message = createBaseTaxTypeListResponse();\n    message.items = object.items?.map((e) => TaxTypeResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseTaxTypeResponse(): TaxTypeResponse {\n  return {};\n}\n\nexport const TaxTypeResponse: MessageFns<TaxTypeResponse> = {\n  encode(message: TaxTypeResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      TaxType.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): TaxTypeResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseTaxTypeResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = TaxType.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): TaxTypeResponse {\n    return {\n      payload: isSet(object.payload) ? TaxType.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: TaxTypeResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = TaxType.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<TaxTypeResponse>): TaxTypeResponse {\n    return TaxTypeResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<TaxTypeResponse>): TaxTypeResponse {\n    const message = createBaseTaxTypeResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? TaxType.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseTaxType(): TaxType {\n  return {};\n}\n\nexport const TaxType: MessageFns<TaxType> = {\n  encode(message: TaxType, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(18).fork()).join();\n    }\n    if (message.type !== undefined) {\n      writer.uint32(26).string(message.type);\n    }\n    if (message.description !== undefined) {\n      writer.uint32(34).string(message.description);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): TaxType {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseTaxType();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.type = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): TaxType {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      type: isSet(object.type) ? globalThis.String(object.type) : undefined,\n      description: isSet(object.description) ? globalThis.String(object.description) : undefined,\n    };\n  },\n\n  toJSON(message: TaxType): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.type !== undefined) {\n      obj.type = message.type;\n    }\n    if (message.description !== undefined) {\n      obj.description = message.description;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<TaxType>): TaxType {\n    return TaxType.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<TaxType>): TaxType {\n    const message = createBaseTaxType();\n    message.id = object.id ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.type = object.type ?? undefined;\n    message.description = object.description ?? undefined;\n    return message;\n  },\n};\n\n/** Microservice definition. */\nexport type TaxTypeServiceDefinition = typeof TaxTypeServiceDefinition;\nexport const TaxTypeServiceDefinition = {\n  name: \"TaxTypeService\",\n  fullName: \"io.restorecommerce.tax_type.TaxTypeService\",\n  methods: {\n    read: {\n      name: \"Read\",\n      requestType: ReadRequest,\n      requestStream: false,\n      responseType: TaxTypeListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    create: {\n      name: \"Create\",\n      requestType: TaxTypeList,\n      requestStream: false,\n      responseType: TaxTypeListResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n    update: {\n      name: \"Update\",\n      requestType: TaxTypeList,\n      requestStream: false,\n      responseType: TaxTypeListResponse,\n      responseStream: false,\n      options: {},\n    },\n    upsert: {\n      name: \"Upsert\",\n      requestType: TaxTypeList,\n      requestStream: false,\n      responseType: TaxTypeListResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface TaxTypeServiceImplementation<CallContextExt = {}> {\n  read(request: ReadRequest, context: CallContext & CallContextExt): Promise<DeepPartial<TaxTypeListResponse>>;\n  create(request: TaxTypeList, context: CallContext & CallContextExt): Promise<DeepPartial<TaxTypeListResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n  update(request: TaxTypeList, context: CallContext & CallContextExt): Promise<DeepPartial<TaxTypeListResponse>>;\n  upsert(request: TaxTypeList, context: CallContext & CallContextExt): Promise<DeepPartial<TaxTypeListResponse>>;\n}\n\nexport interface TaxTypeServiceClient<CallOptionsExt = {}> {\n  read(request: DeepPartial<ReadRequest>, options?: CallOptions & CallOptionsExt): Promise<TaxTypeListResponse>;\n  create(request: DeepPartial<TaxTypeList>, options?: CallOptions & CallOptionsExt): Promise<TaxTypeListResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n  update(request: DeepPartial<TaxTypeList>, options?: CallOptions & CallOptionsExt): Promise<TaxTypeListResponse>;\n  upsert(request: DeepPartial<TaxTypeList>, options?: CallOptions & CallOptionsExt): Promise<TaxTypeListResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/tax_type.proto\",\n    \"package\": \"io.restorecommerce.tax_type\",\n    \"dependency\": [\n      \"io/restorecommerce/resource_base.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/options.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Deleted\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"TaxTypeList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.tax_type.TaxType\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"TaxTypeListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.tax_type.TaxTypeResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"TaxTypeResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.tax_type.TaxType\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"TaxType\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"type\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"type\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"description\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"description\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }, { \"name\": \"_meta\", \"options\": undefined }, {\n        \"name\": \"_type\",\n        \"options\": undefined,\n      }, { \"name\": \"_description\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [{\n      \"name\": \"TaxTypeService\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ReadRequest\",\n        \"outputType\": \".io.restorecommerce.tax_type.TaxTypeListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.tax_type.TaxTypeList\",\n        \"outputType\": \".io.restorecommerce.tax_type.TaxTypeListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.tax_type.TaxTypeList\",\n        \"outputType\": \".io.restorecommerce.tax_type.TaxTypeListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.tax_type.TaxTypeList\",\n        \"outputType\": \".io.restorecommerce.tax_type.TaxTypeListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [6, 0],\n        \"span\": [13, 0, 21, 1],\n        \"leadingComments\": \"\\n Microservice definition.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.tax_type.Deleted\": Deleted,\n    \".io.restorecommerce.tax_type.TaxTypeList\": TaxTypeList,\n    \".io.restorecommerce.tax_type.TaxTypeListResponse\": TaxTypeListResponse,\n    \".io.restorecommerce.tax_type.TaxTypeResponse\": TaxTypeResponse,\n    \".io.restorecommerce.tax_type.TaxType\": TaxType,\n  },\n  dependencies: [protoMetadata1, protoMetadata2, protoMetadata3, protoMetadata4, protoMetadata5],\n  options: { services: { \"TaxTypeService\": { methods: { \"Read\": { \"is_query\": true } } } } },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/tax.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { protoMetadata as protoMetadata3, Subject } from \"./auth\";\nimport { protoMetadata as protoMetadata6 } from \"./country\";\nimport { Meta, protoMetadata as protoMetadata2 } from \"./meta\";\nimport { protoMetadata as protoMetadata5, Resolver } from \"./options\";\nimport { DeleteRequest, DeleteResponse, protoMetadata as protoMetadata1, ReadRequest } from \"./resource_base\";\nimport { OperationStatus, protoMetadata as protoMetadata4, Status } from \"./status\";\nimport { protoMetadata as protoMetadata7 } from \"./tax_type\";\n\nexport const protobufPackage = \"io.restorecommerce.tax\";\n\nexport enum RoundMode {\n  HALF = \"HALF\",\n  CEIL = \"CEIL\",\n  FLOOR = \"FLOOR\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function roundModeFromJSON(object: any): RoundMode {\n  switch (object) {\n    case 0:\n    case \"HALF\":\n      return RoundMode.HALF;\n    case 1:\n    case \"CEIL\":\n      return RoundMode.CEIL;\n    case 2:\n    case \"FLOOR\":\n      return RoundMode.FLOOR;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return RoundMode.UNRECOGNIZED;\n  }\n}\n\nexport function roundModeToJSON(object: RoundMode): string {\n  switch (object) {\n    case RoundMode.HALF:\n      return \"HALF\";\n    case RoundMode.CEIL:\n      return \"CEIL\";\n    case RoundMode.FLOOR:\n      return \"FLOOR\";\n    case RoundMode.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function roundModeToNumber(object: RoundMode): number {\n  switch (object) {\n    case RoundMode.HALF:\n      return 0;\n    case RoundMode.CEIL:\n      return 1;\n    case RoundMode.FLOOR:\n      return 2;\n    case RoundMode.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\nexport interface TaxList {\n  items?: Tax[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface TaxListResponse {\n  items?: TaxResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface TaxResponse {\n  payload?: Tax | undefined;\n  status?: Status | undefined;\n}\n\nexport interface Tax {\n  id?: string | undefined;\n  meta?: Meta | undefined;\n  countryId?: string | undefined;\n  rate?: number | undefined;\n  variant?: string | undefined;\n  typeId?: string | undefined;\n  name?: string | undefined;\n  abbreviation?: string | undefined;\n  roundMode?: RoundMode | undefined;\n}\n\nfunction createBaseTaxList(): TaxList {\n  return {};\n}\n\nexport const TaxList: MessageFns<TaxList> = {\n  encode(message: TaxList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        Tax.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): TaxList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseTaxList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = Tax.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): TaxList {\n    return {\n      items: globalThis.Array.isArray(object?.items) ? object.items.map((e: any) => Tax.fromJSON(e)) : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: TaxList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => Tax.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<TaxList>): TaxList {\n    return TaxList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<TaxList>): TaxList {\n    const message = createBaseTaxList();\n    message.items = object.items?.map((e) => Tax.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseTaxListResponse(): TaxListResponse {\n  return {};\n}\n\nexport const TaxListResponse: MessageFns<TaxListResponse> = {\n  encode(message: TaxListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        TaxResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): TaxListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseTaxListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = TaxResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): TaxListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => TaxResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: TaxListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => TaxResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<TaxListResponse>): TaxListResponse {\n    return TaxListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<TaxListResponse>): TaxListResponse {\n    const message = createBaseTaxListResponse();\n    message.items = object.items?.map((e) => TaxResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseTaxResponse(): TaxResponse {\n  return {};\n}\n\nexport const TaxResponse: MessageFns<TaxResponse> = {\n  encode(message: TaxResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      Tax.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): TaxResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseTaxResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = Tax.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): TaxResponse {\n    return {\n      payload: isSet(object.payload) ? Tax.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: TaxResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = Tax.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<TaxResponse>): TaxResponse {\n    return TaxResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<TaxResponse>): TaxResponse {\n    const message = createBaseTaxResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? Tax.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseTax(): Tax {\n  return {};\n}\n\nexport const Tax: MessageFns<Tax> = {\n  encode(message: Tax, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(18).fork()).join();\n    }\n    if (message.countryId !== undefined) {\n      writer.uint32(26).string(message.countryId);\n    }\n    if (message.rate !== undefined) {\n      writer.uint32(33).double(message.rate);\n    }\n    if (message.variant !== undefined) {\n      writer.uint32(42).string(message.variant);\n    }\n    if (message.typeId !== undefined) {\n      writer.uint32(50).string(message.typeId);\n    }\n    if (message.name !== undefined) {\n      writer.uint32(58).string(message.name);\n    }\n    if (message.abbreviation !== undefined) {\n      writer.uint32(66).string(message.abbreviation);\n    }\n    if (message.roundMode !== undefined) {\n      writer.uint32(72).int32(roundModeToNumber(message.roundMode));\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Tax {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseTax();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.countryId = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 33) {\n            break;\n          }\n\n          message.rate = reader.double();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.variant = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.typeId = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.abbreviation = reader.string();\n          continue;\n        }\n        case 9: {\n          if (tag !== 72) {\n            break;\n          }\n\n          message.roundMode = roundModeFromJSON(reader.int32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Tax {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      countryId: isSet(object.countryId) ? globalThis.String(object.countryId) : undefined,\n      rate: isSet(object.rate) ? globalThis.Number(object.rate) : undefined,\n      variant: isSet(object.variant) ? globalThis.String(object.variant) : undefined,\n      typeId: isSet(object.typeId) ? globalThis.String(object.typeId) : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      abbreviation: isSet(object.abbreviation) ? globalThis.String(object.abbreviation) : undefined,\n      roundMode: isSet(object.roundMode) ? roundModeFromJSON(object.roundMode) : undefined,\n    };\n  },\n\n  toJSON(message: Tax): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.countryId !== undefined) {\n      obj.countryId = message.countryId;\n    }\n    if (message.rate !== undefined) {\n      obj.rate = message.rate;\n    }\n    if (message.variant !== undefined) {\n      obj.variant = message.variant;\n    }\n    if (message.typeId !== undefined) {\n      obj.typeId = message.typeId;\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.abbreviation !== undefined) {\n      obj.abbreviation = message.abbreviation;\n    }\n    if (message.roundMode !== undefined) {\n      obj.roundMode = roundModeToJSON(message.roundMode);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Tax>): Tax {\n    return Tax.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Tax>): Tax {\n    const message = createBaseTax();\n    message.id = object.id ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.countryId = object.countryId ?? undefined;\n    message.rate = object.rate ?? undefined;\n    message.variant = object.variant ?? undefined;\n    message.typeId = object.typeId ?? undefined;\n    message.name = object.name ?? undefined;\n    message.abbreviation = object.abbreviation ?? undefined;\n    message.roundMode = object.roundMode ?? undefined;\n    return message;\n  },\n};\n\n/** Microservice definition. */\nexport type TaxServiceDefinition = typeof TaxServiceDefinition;\nexport const TaxServiceDefinition = {\n  name: \"TaxService\",\n  fullName: \"io.restorecommerce.tax.TaxService\",\n  methods: {\n    read: {\n      name: \"Read\",\n      requestType: ReadRequest,\n      requestStream: false,\n      responseType: TaxListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    create: {\n      name: \"Create\",\n      requestType: TaxList,\n      requestStream: false,\n      responseType: TaxListResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n    update: {\n      name: \"Update\",\n      requestType: TaxList,\n      requestStream: false,\n      responseType: TaxListResponse,\n      responseStream: false,\n      options: {},\n    },\n    upsert: {\n      name: \"Upsert\",\n      requestType: TaxList,\n      requestStream: false,\n      responseType: TaxListResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface TaxServiceImplementation<CallContextExt = {}> {\n  read(request: ReadRequest, context: CallContext & CallContextExt): Promise<DeepPartial<TaxListResponse>>;\n  create(request: TaxList, context: CallContext & CallContextExt): Promise<DeepPartial<TaxListResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n  update(request: TaxList, context: CallContext & CallContextExt): Promise<DeepPartial<TaxListResponse>>;\n  upsert(request: TaxList, context: CallContext & CallContextExt): Promise<DeepPartial<TaxListResponse>>;\n}\n\nexport interface TaxServiceClient<CallOptionsExt = {}> {\n  read(request: DeepPartial<ReadRequest>, options?: CallOptions & CallOptionsExt): Promise<TaxListResponse>;\n  create(request: DeepPartial<TaxList>, options?: CallOptions & CallOptionsExt): Promise<TaxListResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n  update(request: DeepPartial<TaxList>, options?: CallOptions & CallOptionsExt): Promise<TaxListResponse>;\n  upsert(request: DeepPartial<TaxList>, options?: CallOptions & CallOptionsExt): Promise<TaxListResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/tax.proto\",\n    \"package\": \"io.restorecommerce.tax\",\n    \"dependency\": [\n      \"io/restorecommerce/resource_base.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/options.proto\",\n      \"io/restorecommerce/country.proto\",\n      \"io/restorecommerce/tax_type.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"TaxList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.tax.Tax\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"TaxListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.tax.TaxResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"TaxResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.tax.Tax\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Tax\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"country_id\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"countryId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"rate\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 1,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"rate\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"variant\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"variant\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"type_id\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"typeId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"name\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"abbreviation\",\n        \"number\": 8,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 7,\n        \"jsonName\": \"abbreviation\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"round_mode\",\n        \"number\": 9,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".io.restorecommerce.tax.RoundMode\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 8,\n        \"jsonName\": \"roundMode\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_country_id\", \"options\": undefined },\n        { \"name\": \"_rate\", \"options\": undefined },\n        { \"name\": \"_variant\", \"options\": undefined },\n        { \"name\": \"_type_id\", \"options\": undefined },\n        { \"name\": \"_name\", \"options\": undefined },\n        { \"name\": \"_abbreviation\", \"options\": undefined },\n        { \"name\": \"_round_mode\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [{\n      \"name\": \"RoundMode\",\n      \"value\": [{ \"name\": \"HALF\", \"number\": 0, \"options\": undefined }, {\n        \"name\": \"CEIL\",\n        \"number\": 1,\n        \"options\": undefined,\n      }, { \"name\": \"FLOOR\", \"number\": 2, \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"service\": [{\n      \"name\": \"TaxService\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ReadRequest\",\n        \"outputType\": \".io.restorecommerce.tax.TaxListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.tax.TaxList\",\n        \"outputType\": \".io.restorecommerce.tax.TaxListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.tax.TaxList\",\n        \"outputType\": \".io.restorecommerce.tax.TaxListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.tax.TaxList\",\n        \"outputType\": \".io.restorecommerce.tax.TaxListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [3, 5],\n        \"span\": [11, 0, 42],\n        \"leadingComments\": \" Used by resolvers\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0],\n        \"span\": [17, 0, 25, 1],\n        \"leadingComments\": \"\\n Microservice definition.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.tax.RoundMode\": RoundMode,\n    \".io.restorecommerce.tax.TaxList\": TaxList,\n    \".io.restorecommerce.tax.TaxListResponse\": TaxListResponse,\n    \".io.restorecommerce.tax.TaxResponse\": TaxResponse,\n    \".io.restorecommerce.tax.Tax\": Tax,\n  },\n  dependencies: [\n    protoMetadata1,\n    protoMetadata2,\n    protoMetadata3,\n    protoMetadata4,\n    protoMetadata5,\n    protoMetadata6,\n    protoMetadata7,\n  ],\n  options: {\n    messages: {\n      \"Tax\": {\n        fields: {\n          \"country_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CiMuaW8ucmVzdG9yZWNvbW1lcmNlLmNvdW50cnkuQ291bnRyeRILbWFzdGVyX2RhdGEaB2NvdW50cnkiBFJlYWQqB2NvdW50cnk=\",\n                \"base64\",\n              ),\n            ),\n          },\n          \"type_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CiQuaW8ucmVzdG9yZWNvbW1lcmNlLnRheF90eXBlLlRheFR5cGUSC21hc3Rlcl9kYXRhGgh0YXhfdHlwZSIEUmVhZCoEdHlwZQ==\",\n                \"base64\",\n              ),\n            ),\n          },\n        },\n      },\n    },\n    services: { \"TaxService\": { methods: { \"Read\": { \"is_query\": true } } } },\n  },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/amount.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { protoMetadata as protoMetadata3 } from \"./currency\";\nimport { protoMetadata as protoMetadata1, Resolver } from \"./options\";\nimport { protoMetadata as protoMetadata2 } from \"./tax\";\n\nexport const protobufPackage = \"io.restorecommerce.amount\";\n\nexport interface VAT {\n  taxId?: string | undefined;\n  vat?: number | undefined;\n}\n\nexport interface Amount {\n  currencyId?: string | undefined;\n  gross?: number | undefined;\n  net?: number | undefined;\n  vats?: VAT[] | undefined;\n}\n\nfunction createBaseVAT(): VAT {\n  return {};\n}\n\nexport const VAT: MessageFns<VAT> = {\n  encode(message: VAT, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.taxId !== undefined) {\n      writer.uint32(10).string(message.taxId);\n    }\n    if (message.vat !== undefined) {\n      writer.uint32(17).double(message.vat);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): VAT {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseVAT();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.taxId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 17) {\n            break;\n          }\n\n          message.vat = reader.double();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): VAT {\n    return {\n      taxId: isSet(object.taxId) ? globalThis.String(object.taxId) : undefined,\n      vat: isSet(object.vat) ? globalThis.Number(object.vat) : undefined,\n    };\n  },\n\n  toJSON(message: VAT): unknown {\n    const obj: any = {};\n    if (message.taxId !== undefined) {\n      obj.taxId = message.taxId;\n    }\n    if (message.vat !== undefined) {\n      obj.vat = message.vat;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<VAT>): VAT {\n    return VAT.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<VAT>): VAT {\n    const message = createBaseVAT();\n    message.taxId = object.taxId ?? undefined;\n    message.vat = object.vat ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseAmount(): Amount {\n  return {};\n}\n\nexport const Amount: MessageFns<Amount> = {\n  encode(message: Amount, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.currencyId !== undefined) {\n      writer.uint32(10).string(message.currencyId);\n    }\n    if (message.gross !== undefined) {\n      writer.uint32(17).double(message.gross);\n    }\n    if (message.net !== undefined) {\n      writer.uint32(25).double(message.net);\n    }\n    if (message.vats !== undefined && message.vats.length !== 0) {\n      for (const v of message.vats) {\n        VAT.encode(v!, writer.uint32(34).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Amount {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseAmount();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.currencyId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 17) {\n            break;\n          }\n\n          message.gross = reader.double();\n          continue;\n        }\n        case 3: {\n          if (tag !== 25) {\n            break;\n          }\n\n          message.net = reader.double();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          if (message.vats === undefined) {\n            message.vats = [];\n          }\n          const el = VAT.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.vats!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Amount {\n    return {\n      currencyId: isSet(object.currencyId) ? globalThis.String(object.currencyId) : undefined,\n      gross: isSet(object.gross) ? globalThis.Number(object.gross) : undefined,\n      net: isSet(object.net) ? globalThis.Number(object.net) : undefined,\n      vats: globalThis.Array.isArray(object?.vats) ? object.vats.map((e: any) => VAT.fromJSON(e)) : undefined,\n    };\n  },\n\n  toJSON(message: Amount): unknown {\n    const obj: any = {};\n    if (message.currencyId !== undefined) {\n      obj.currencyId = message.currencyId;\n    }\n    if (message.gross !== undefined) {\n      obj.gross = message.gross;\n    }\n    if (message.net !== undefined) {\n      obj.net = message.net;\n    }\n    if (message.vats?.length) {\n      obj.vats = message.vats.map((e) => VAT.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Amount>): Amount {\n    return Amount.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Amount>): Amount {\n    const message = createBaseAmount();\n    message.currencyId = object.currencyId ?? undefined;\n    message.gross = object.gross ?? undefined;\n    message.net = object.net ?? undefined;\n    message.vats = object.vats?.map((e) => VAT.fromPartial(e)) || undefined;\n    return message;\n  },\n};\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/amount.proto\",\n    \"package\": \"io.restorecommerce.amount\",\n    \"dependency\": [\n      \"io/restorecommerce/options.proto\",\n      \"io/restorecommerce/tax.proto\",\n      \"io/restorecommerce/currency.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"VAT\",\n      \"field\": [{\n        \"name\": \"tax_id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"taxId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"vat\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 1,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"vat\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_tax_id\", \"options\": undefined }, { \"name\": \"_vat\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Amount\",\n      \"field\": [{\n        \"name\": \"currency_id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"currencyId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"gross\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 1,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"gross\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"net\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 1,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"net\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"vats\",\n        \"number\": 4,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.amount.VAT\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"vats\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_currency_id\", \"options\": undefined }, { \"name\": \"_gross\", \"options\": undefined }, {\n        \"name\": \"_net\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [3, 0],\n        \"span\": [5, 0, 42],\n        \"leadingComments\": \" Used by resolvers\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: { \".io.restorecommerce.amount.VAT\": VAT, \".io.restorecommerce.amount.Amount\": Amount },\n  dependencies: [protoMetadata1, protoMetadata2, protoMetadata3],\n  options: {\n    messages: {\n      \"VAT\": {\n        fields: {\n          \"tax_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\"ChsuaW8ucmVzdG9yZWNvbW1lcmNlLnRheC5UYXgSC21hc3Rlcl9kYXRhGgN0YXgiBFJlYWQqA3RheA==\", \"base64\"),\n            ),\n          },\n        },\n      },\n      \"Amount\": {\n        fields: {\n          \"currency_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CiUuaW8ucmVzdG9yZWNvbW1lcmNlLmN1cnJlbmN5LkN1cnJlbmN5EgttYXN0ZXJfZGF0YRoIY3VycmVuY3kiBFJlYWQqCGN1cnJlbmN5\",\n                \"base64\",\n              ),\n            ),\n          },\n        },\n      },\n    },\n  },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/contact_point_type.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { protoMetadata as protoMetadata2, Subject } from \"./auth\";\nimport { Meta, protoMetadata as protoMetadata3 } from \"./meta\";\nimport { protoMetadata as protoMetadata5 } from \"./options\";\nimport { DeleteRequest, DeleteResponse, protoMetadata as protoMetadata1, ReadRequest } from \"./resource_base\";\nimport { OperationStatus, protoMetadata as protoMetadata4, Status } from \"./status\";\n\nexport const protobufPackage = \"io.restorecommerce.contact_point_type\";\n\nexport interface Deleted {\n  id?: string | undefined;\n}\n\nexport interface ContactPointTypeList {\n  items?: ContactPointType[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface ContactPointType {\n  id?: string | undefined;\n  meta?: Meta | undefined;\n  type?: string | undefined;\n}\n\nexport interface ContactPointTypeListResponse {\n  items?: ContactPointTypeResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface ContactPointTypeResponse {\n  payload?: ContactPointType | undefined;\n  status?: Status | undefined;\n}\n\nfunction createBaseDeleted(): Deleted {\n  return {};\n}\n\nexport const Deleted: MessageFns<Deleted> = {\n  encode(message: Deleted, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Deleted {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseDeleted();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Deleted {\n    return { id: isSet(object.id) ? globalThis.String(object.id) : undefined };\n  },\n\n  toJSON(message: Deleted): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Deleted>): Deleted {\n    return Deleted.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Deleted>): Deleted {\n    const message = createBaseDeleted();\n    message.id = object.id ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseContactPointTypeList(): ContactPointTypeList {\n  return {};\n}\n\nexport const ContactPointTypeList: MessageFns<ContactPointTypeList> = {\n  encode(message: ContactPointTypeList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        ContactPointType.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ContactPointTypeList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseContactPointTypeList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = ContactPointType.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ContactPointTypeList {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => ContactPointType.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: ContactPointTypeList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => ContactPointType.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ContactPointTypeList>): ContactPointTypeList {\n    return ContactPointTypeList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ContactPointTypeList>): ContactPointTypeList {\n    const message = createBaseContactPointTypeList();\n    message.items = object.items?.map((e) => ContactPointType.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseContactPointType(): ContactPointType {\n  return {};\n}\n\nexport const ContactPointType: MessageFns<ContactPointType> = {\n  encode(message: ContactPointType, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(18).fork()).join();\n    }\n    if (message.type !== undefined) {\n      writer.uint32(26).string(message.type);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ContactPointType {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseContactPointType();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.type = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ContactPointType {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      type: isSet(object.type) ? globalThis.String(object.type) : undefined,\n    };\n  },\n\n  toJSON(message: ContactPointType): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.type !== undefined) {\n      obj.type = message.type;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ContactPointType>): ContactPointType {\n    return ContactPointType.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ContactPointType>): ContactPointType {\n    const message = createBaseContactPointType();\n    message.id = object.id ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.type = object.type ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseContactPointTypeListResponse(): ContactPointTypeListResponse {\n  return {};\n}\n\nexport const ContactPointTypeListResponse: MessageFns<ContactPointTypeListResponse> = {\n  encode(message: ContactPointTypeListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        ContactPointTypeResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ContactPointTypeListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseContactPointTypeListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = ContactPointTypeResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ContactPointTypeListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => ContactPointTypeResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: ContactPointTypeListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => ContactPointTypeResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ContactPointTypeListResponse>): ContactPointTypeListResponse {\n    return ContactPointTypeListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ContactPointTypeListResponse>): ContactPointTypeListResponse {\n    const message = createBaseContactPointTypeListResponse();\n    message.items = object.items?.map((e) => ContactPointTypeResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseContactPointTypeResponse(): ContactPointTypeResponse {\n  return {};\n}\n\nexport const ContactPointTypeResponse: MessageFns<ContactPointTypeResponse> = {\n  encode(message: ContactPointTypeResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      ContactPointType.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ContactPointTypeResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseContactPointTypeResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = ContactPointType.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ContactPointTypeResponse {\n    return {\n      payload: isSet(object.payload) ? ContactPointType.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: ContactPointTypeResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = ContactPointType.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ContactPointTypeResponse>): ContactPointTypeResponse {\n    return ContactPointTypeResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ContactPointTypeResponse>): ContactPointTypeResponse {\n    const message = createBaseContactPointTypeResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? ContactPointType.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\n/** Microservice definition. */\nexport type ContactPointTypeServiceDefinition = typeof ContactPointTypeServiceDefinition;\nexport const ContactPointTypeServiceDefinition = {\n  name: \"ContactPointTypeService\",\n  fullName: \"io.restorecommerce.contact_point_type.ContactPointTypeService\",\n  methods: {\n    read: {\n      name: \"Read\",\n      requestType: ReadRequest,\n      requestStream: false,\n      responseType: ContactPointTypeListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    create: {\n      name: \"Create\",\n      requestType: ContactPointTypeList,\n      requestStream: false,\n      responseType: ContactPointTypeListResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n    update: {\n      name: \"Update\",\n      requestType: ContactPointTypeList,\n      requestStream: false,\n      responseType: ContactPointTypeListResponse,\n      responseStream: false,\n      options: {},\n    },\n    upsert: {\n      name: \"Upsert\",\n      requestType: ContactPointTypeList,\n      requestStream: false,\n      responseType: ContactPointTypeListResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface ContactPointTypeServiceImplementation<CallContextExt = {}> {\n  read(request: ReadRequest, context: CallContext & CallContextExt): Promise<DeepPartial<ContactPointTypeListResponse>>;\n  create(\n    request: ContactPointTypeList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<ContactPointTypeListResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n  update(\n    request: ContactPointTypeList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<ContactPointTypeListResponse>>;\n  upsert(\n    request: ContactPointTypeList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<ContactPointTypeListResponse>>;\n}\n\nexport interface ContactPointTypeServiceClient<CallOptionsExt = {}> {\n  read(\n    request: DeepPartial<ReadRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<ContactPointTypeListResponse>;\n  create(\n    request: DeepPartial<ContactPointTypeList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<ContactPointTypeListResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n  update(\n    request: DeepPartial<ContactPointTypeList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<ContactPointTypeListResponse>;\n  upsert(\n    request: DeepPartial<ContactPointTypeList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<ContactPointTypeListResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/contact_point_type.proto\",\n    \"package\": \"io.restorecommerce.contact_point_type\",\n    \"dependency\": [\n      \"io/restorecommerce/resource_base.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/options.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Deleted\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ContactPointTypeList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.contact_point_type.ContactPointType\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ContactPointType\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"type\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"type\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }, { \"name\": \"_meta\", \"options\": undefined }, {\n        \"name\": \"_type\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ContactPointTypeListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.contact_point_type.ContactPointTypeResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ContactPointTypeResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.contact_point_type.ContactPointType\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [{\n      \"name\": \"ContactPointTypeService\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ReadRequest\",\n        \"outputType\": \".io.restorecommerce.contact_point_type.ContactPointTypeListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.contact_point_type.ContactPointTypeList\",\n        \"outputType\": \".io.restorecommerce.contact_point_type.ContactPointTypeListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.contact_point_type.ContactPointTypeList\",\n        \"outputType\": \".io.restorecommerce.contact_point_type.ContactPointTypeListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.contact_point_type.ContactPointTypeList\",\n        \"outputType\": \".io.restorecommerce.contact_point_type.ContactPointTypeListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [6, 0],\n        \"span\": [13, 0, 21, 1],\n        \"leadingComments\": \"\\n Microservice definition.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.contact_point_type.Deleted\": Deleted,\n    \".io.restorecommerce.contact_point_type.ContactPointTypeList\": ContactPointTypeList,\n    \".io.restorecommerce.contact_point_type.ContactPointType\": ContactPointType,\n    \".io.restorecommerce.contact_point_type.ContactPointTypeListResponse\": ContactPointTypeListResponse,\n    \".io.restorecommerce.contact_point_type.ContactPointTypeResponse\": ContactPointTypeResponse,\n  },\n  dependencies: [protoMetadata1, protoMetadata2, protoMetadata3, protoMetadata4, protoMetadata5],\n  options: { services: { \"ContactPointTypeService\": { methods: { \"Read\": { \"is_query\": true } } } } },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/contact_point.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { protoMetadata as protoMetadata6 } from \"./address\";\nimport { protoMetadata as protoMetadata3, Subject } from \"./auth\";\nimport { protoMetadata as protoMetadata7 } from \"./contact_point_type\";\nimport { protoMetadata as protoMetadata9 } from \"./locale\";\nimport { Meta, protoMetadata as protoMetadata2 } from \"./meta\";\nimport { protoMetadata as protoMetadata5, Resolver } from \"./options\";\nimport { DeleteRequest, DeleteResponse, protoMetadata as protoMetadata1, ReadRequest } from \"./resource_base\";\nimport { OperationStatus, protoMetadata as protoMetadata4, Status } from \"./status\";\nimport { protoMetadata as protoMetadata8 } from \"./timezone\";\n\nexport const protobufPackage = \"io.restorecommerce.contact_point\";\n\nexport interface Deleted {\n  id?: string | undefined;\n}\n\nexport interface ContactPointList {\n  items?: ContactPoint[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface ContactPointListResponse {\n  items?: ContactPointResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface ContactPointResponse {\n  payload?: ContactPoint | undefined;\n  status?: Status | undefined;\n}\n\nexport interface ContactPoint {\n  id?: string | undefined;\n  meta?: Meta | undefined;\n  physicalAddressId?: string | undefined;\n  website?: string | undefined;\n  email?: string | undefined;\n  contactPointTypeIds?: string[] | undefined;\n  telephone?: string | undefined;\n  timezoneId?: string | undefined;\n  localeId?: string | undefined;\n  name?: string | undefined;\n  description?: string | undefined;\n}\n\nfunction createBaseDeleted(): Deleted {\n  return {};\n}\n\nexport const Deleted: MessageFns<Deleted> = {\n  encode(message: Deleted, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Deleted {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseDeleted();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Deleted {\n    return { id: isSet(object.id) ? globalThis.String(object.id) : undefined };\n  },\n\n  toJSON(message: Deleted): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Deleted>): Deleted {\n    return Deleted.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Deleted>): Deleted {\n    const message = createBaseDeleted();\n    message.id = object.id ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseContactPointList(): ContactPointList {\n  return {};\n}\n\nexport const ContactPointList: MessageFns<ContactPointList> = {\n  encode(message: ContactPointList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        ContactPoint.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ContactPointList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseContactPointList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = ContactPoint.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ContactPointList {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => ContactPoint.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: ContactPointList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => ContactPoint.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ContactPointList>): ContactPointList {\n    return ContactPointList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ContactPointList>): ContactPointList {\n    const message = createBaseContactPointList();\n    message.items = object.items?.map((e) => ContactPoint.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseContactPointListResponse(): ContactPointListResponse {\n  return {};\n}\n\nexport const ContactPointListResponse: MessageFns<ContactPointListResponse> = {\n  encode(message: ContactPointListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        ContactPointResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ContactPointListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseContactPointListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = ContactPointResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ContactPointListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => ContactPointResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: ContactPointListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => ContactPointResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ContactPointListResponse>): ContactPointListResponse {\n    return ContactPointListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ContactPointListResponse>): ContactPointListResponse {\n    const message = createBaseContactPointListResponse();\n    message.items = object.items?.map((e) => ContactPointResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseContactPointResponse(): ContactPointResponse {\n  return {};\n}\n\nexport const ContactPointResponse: MessageFns<ContactPointResponse> = {\n  encode(message: ContactPointResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      ContactPoint.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ContactPointResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseContactPointResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = ContactPoint.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ContactPointResponse {\n    return {\n      payload: isSet(object.payload) ? ContactPoint.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: ContactPointResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = ContactPoint.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ContactPointResponse>): ContactPointResponse {\n    return ContactPointResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ContactPointResponse>): ContactPointResponse {\n    const message = createBaseContactPointResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? ContactPoint.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseContactPoint(): ContactPoint {\n  return {};\n}\n\nexport const ContactPoint: MessageFns<ContactPoint> = {\n  encode(message: ContactPoint, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(18).fork()).join();\n    }\n    if (message.physicalAddressId !== undefined) {\n      writer.uint32(26).string(message.physicalAddressId);\n    }\n    if (message.website !== undefined) {\n      writer.uint32(42).string(message.website);\n    }\n    if (message.email !== undefined) {\n      writer.uint32(50).string(message.email);\n    }\n    if (message.contactPointTypeIds !== undefined && message.contactPointTypeIds.length !== 0) {\n      for (const v of message.contactPointTypeIds) {\n        writer.uint32(58).string(v!);\n      }\n    }\n    if (message.telephone !== undefined) {\n      writer.uint32(66).string(message.telephone);\n    }\n    if (message.timezoneId !== undefined) {\n      writer.uint32(74).string(message.timezoneId);\n    }\n    if (message.localeId !== undefined) {\n      writer.uint32(82).string(message.localeId);\n    }\n    if (message.name !== undefined) {\n      writer.uint32(90).string(message.name);\n    }\n    if (message.description !== undefined) {\n      writer.uint32(98).string(message.description);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ContactPoint {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseContactPoint();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.physicalAddressId = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.website = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.email = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          if (message.contactPointTypeIds === undefined) {\n            message.contactPointTypeIds = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.contactPointTypeIds!.push(el);\n          }\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.telephone = reader.string();\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.timezoneId = reader.string();\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.localeId = reader.string();\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 12: {\n          if (tag !== 98) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ContactPoint {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      physicalAddressId: isSet(object.physicalAddressId) ? globalThis.String(object.physicalAddressId) : undefined,\n      website: isSet(object.website) ? globalThis.String(object.website) : undefined,\n      email: isSet(object.email) ? globalThis.String(object.email) : undefined,\n      contactPointTypeIds: globalThis.Array.isArray(object?.contactPointTypeIds)\n        ? object.contactPointTypeIds.map((e: any) => globalThis.String(e))\n        : undefined,\n      telephone: isSet(object.telephone) ? globalThis.String(object.telephone) : undefined,\n      timezoneId: isSet(object.timezoneId) ? globalThis.String(object.timezoneId) : undefined,\n      localeId: isSet(object.localeId) ? globalThis.String(object.localeId) : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      description: isSet(object.description) ? globalThis.String(object.description) : undefined,\n    };\n  },\n\n  toJSON(message: ContactPoint): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.physicalAddressId !== undefined) {\n      obj.physicalAddressId = message.physicalAddressId;\n    }\n    if (message.website !== undefined) {\n      obj.website = message.website;\n    }\n    if (message.email !== undefined) {\n      obj.email = message.email;\n    }\n    if (message.contactPointTypeIds?.length) {\n      obj.contactPointTypeIds = message.contactPointTypeIds;\n    }\n    if (message.telephone !== undefined) {\n      obj.telephone = message.telephone;\n    }\n    if (message.timezoneId !== undefined) {\n      obj.timezoneId = message.timezoneId;\n    }\n    if (message.localeId !== undefined) {\n      obj.localeId = message.localeId;\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.description !== undefined) {\n      obj.description = message.description;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ContactPoint>): ContactPoint {\n    return ContactPoint.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ContactPoint>): ContactPoint {\n    const message = createBaseContactPoint();\n    message.id = object.id ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.physicalAddressId = object.physicalAddressId ?? undefined;\n    message.website = object.website ?? undefined;\n    message.email = object.email ?? undefined;\n    message.contactPointTypeIds = object.contactPointTypeIds?.map((e) => e) || undefined;\n    message.telephone = object.telephone ?? undefined;\n    message.timezoneId = object.timezoneId ?? undefined;\n    message.localeId = object.localeId ?? undefined;\n    message.name = object.name ?? undefined;\n    message.description = object.description ?? undefined;\n    return message;\n  },\n};\n\nexport type ContactPointServiceDefinition = typeof ContactPointServiceDefinition;\nexport const ContactPointServiceDefinition = {\n  name: \"ContactPointService\",\n  fullName: \"io.restorecommerce.contact_point.ContactPointService\",\n  methods: {\n    read: {\n      name: \"Read\",\n      requestType: ReadRequest,\n      requestStream: false,\n      responseType: ContactPointListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    create: {\n      name: \"Create\",\n      requestType: ContactPointList,\n      requestStream: false,\n      responseType: ContactPointListResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n    update: {\n      name: \"Update\",\n      requestType: ContactPointList,\n      requestStream: false,\n      responseType: ContactPointListResponse,\n      responseStream: false,\n      options: {},\n    },\n    upsert: {\n      name: \"Upsert\",\n      requestType: ContactPointList,\n      requestStream: false,\n      responseType: ContactPointListResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface ContactPointServiceImplementation<CallContextExt = {}> {\n  read(request: ReadRequest, context: CallContext & CallContextExt): Promise<DeepPartial<ContactPointListResponse>>;\n  create(\n    request: ContactPointList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<ContactPointListResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n  update(\n    request: ContactPointList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<ContactPointListResponse>>;\n  upsert(\n    request: ContactPointList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<ContactPointListResponse>>;\n}\n\nexport interface ContactPointServiceClient<CallOptionsExt = {}> {\n  read(request: DeepPartial<ReadRequest>, options?: CallOptions & CallOptionsExt): Promise<ContactPointListResponse>;\n  create(\n    request: DeepPartial<ContactPointList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<ContactPointListResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n  update(\n    request: DeepPartial<ContactPointList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<ContactPointListResponse>;\n  upsert(\n    request: DeepPartial<ContactPointList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<ContactPointListResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/contact_point.proto\",\n    \"package\": \"io.restorecommerce.contact_point\",\n    \"dependency\": [\n      \"io/restorecommerce/resource_base.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/options.proto\",\n      \"io/restorecommerce/address.proto\",\n      \"io/restorecommerce/contact_point_type.proto\",\n      \"io/restorecommerce/timezone.proto\",\n      \"io/restorecommerce/locale.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Deleted\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ContactPointList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.contact_point.ContactPoint\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ContactPointListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.contact_point.ContactPointResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ContactPointResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.contact_point.ContactPoint\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ContactPoint\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"physical_address_id\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"physicalAddressId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"website\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"website\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"email\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"email\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"contact_point_type_ids\",\n        \"number\": 7,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"contactPointTypeIds\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"telephone\",\n        \"number\": 8,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"telephone\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"timezone_id\",\n        \"number\": 9,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"timezoneId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"locale_id\",\n        \"number\": 10,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 7,\n        \"jsonName\": \"localeId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"name\",\n        \"number\": 11,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 8,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"description\",\n        \"number\": 12,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 9,\n        \"jsonName\": \"description\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_physical_address_id\", \"options\": undefined },\n        { \"name\": \"_website\", \"options\": undefined },\n        { \"name\": \"_email\", \"options\": undefined },\n        { \"name\": \"_telephone\", \"options\": undefined },\n        { \"name\": \"_timezone_id\", \"options\": undefined },\n        { \"name\": \"_locale_id\", \"options\": undefined },\n        { \"name\": \"_name\", \"options\": undefined },\n        { \"name\": \"_description\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [{\n      \"name\": \"ContactPointService\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ReadRequest\",\n        \"outputType\": \".io.restorecommerce.contact_point.ContactPointListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.contact_point.ContactPointList\",\n        \"outputType\": \".io.restorecommerce.contact_point.ContactPointListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.contact_point.ContactPointList\",\n        \"outputType\": \".io.restorecommerce.contact_point.ContactPointListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.contact_point.ContactPointList\",\n        \"outputType\": \".io.restorecommerce.contact_point.ContactPointListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [3, 5],\n        \"span\": [11, 0, 42],\n        \"leadingComments\": \" Used by resolvers\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.contact_point.Deleted\": Deleted,\n    \".io.restorecommerce.contact_point.ContactPointList\": ContactPointList,\n    \".io.restorecommerce.contact_point.ContactPointListResponse\": ContactPointListResponse,\n    \".io.restorecommerce.contact_point.ContactPointResponse\": ContactPointResponse,\n    \".io.restorecommerce.contact_point.ContactPoint\": ContactPoint,\n  },\n  dependencies: [\n    protoMetadata1,\n    protoMetadata2,\n    protoMetadata3,\n    protoMetadata4,\n    protoMetadata5,\n    protoMetadata6,\n    protoMetadata7,\n    protoMetadata8,\n    protoMetadata9,\n  ],\n  options: {\n    messages: {\n      \"ContactPoint\": {\n        fields: {\n          \"physical_address_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CiMuaW8ucmVzdG9yZWNvbW1lcmNlLmFkZHJlc3MuQWRkcmVzcxILbWFzdGVyX2RhdGEaB2FkZHJlc3MiBFJlYWQqD3BoeXNpY2FsQWRkcmVzcw==\",\n                \"base64\",\n              ),\n            ),\n          },\n          \"contact_point_type_ids\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CjcuaW8ucmVzdG9yZWNvbW1lcmNlLmNvbnRhY3RfcG9pbnRfdHlwZS5Db250YWN0UG9pbnRUeXBlEgttYXN0ZXJfZGF0YRoSY29udGFjdF9wb2ludF90eXBlIgRSZWFkKhFjb250YWN0UG9pbnRUeXBlcw==\",\n                \"base64\",\n              ),\n            ),\n          },\n          \"timezone_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CiUuaW8ucmVzdG9yZWNvbW1lcmNlLnRpbWV6b25lLlRpbWV6b25lEgttYXN0ZXJfZGF0YRoIdGltZXpvbmUiBFJlYWQqCHRpbWV6b25l\",\n                \"base64\",\n              ),\n            ),\n          },\n          \"locale_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CiEuaW8ucmVzdG9yZWNvbW1lcmNlLmxvY2FsZS5Mb2NhbGUSC21hc3Rlcl9kYXRhGgZsb2NhbGUiBFJlYWQqBmxvY2FsZQ==\",\n                \"base64\",\n              ),\n            ),\n          },\n        },\n      },\n    },\n    services: { \"ContactPointService\": { methods: { \"Read\": { \"is_query\": true } } } },\n  },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/payment_method.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { Any, protoMetadata as protoMetadata2 } from \"../../google/protobuf/any\";\nimport { protoMetadata as protoMetadata4, Subject } from \"./auth\";\nimport { Meta, protoMetadata as protoMetadata3 } from \"./meta\";\nimport { DeleteRequest, DeleteResponse, protoMetadata as protoMetadata1, ReadRequest } from \"./resource_base\";\nimport { OperationStatus, protoMetadata as protoMetadata5, Status } from \"./status\";\n\nexport const protobufPackage = \"io.restorecommerce.payment_method\";\n\nexport enum PaymentMethodEnum {\n  WIRE_TRANSFER = \"WIRE_TRANSFER\",\n  DIRECT_DEBIT = \"DIRECT_DEBIT\",\n  PAYPAL = \"PAYPAL\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function paymentMethodEnumFromJSON(object: any): PaymentMethodEnum {\n  switch (object) {\n    case 0:\n    case \"WIRE_TRANSFER\":\n      return PaymentMethodEnum.WIRE_TRANSFER;\n    case 1:\n    case \"DIRECT_DEBIT\":\n      return PaymentMethodEnum.DIRECT_DEBIT;\n    case 2:\n    case \"PAYPAL\":\n      return PaymentMethodEnum.PAYPAL;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return PaymentMethodEnum.UNRECOGNIZED;\n  }\n}\n\nexport function paymentMethodEnumToJSON(object: PaymentMethodEnum): string {\n  switch (object) {\n    case PaymentMethodEnum.WIRE_TRANSFER:\n      return \"WIRE_TRANSFER\";\n    case PaymentMethodEnum.DIRECT_DEBIT:\n      return \"DIRECT_DEBIT\";\n    case PaymentMethodEnum.PAYPAL:\n      return \"PAYPAL\";\n    case PaymentMethodEnum.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function paymentMethodEnumToNumber(object: PaymentMethodEnum): number {\n  switch (object) {\n    case PaymentMethodEnum.WIRE_TRANSFER:\n      return 0;\n    case PaymentMethodEnum.DIRECT_DEBIT:\n      return 1;\n    case PaymentMethodEnum.PAYPAL:\n      return 2;\n    case PaymentMethodEnum.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\nexport enum TransferTypeEnum {\n  RECEIVE = \"RECEIVE\",\n  SEND = \"SEND\",\n  BOTH = \"BOTH\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function transferTypeEnumFromJSON(object: any): TransferTypeEnum {\n  switch (object) {\n    case 0:\n    case \"RECEIVE\":\n      return TransferTypeEnum.RECEIVE;\n    case 1:\n    case \"SEND\":\n      return TransferTypeEnum.SEND;\n    case 2:\n    case \"BOTH\":\n      return TransferTypeEnum.BOTH;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return TransferTypeEnum.UNRECOGNIZED;\n  }\n}\n\nexport function transferTypeEnumToJSON(object: TransferTypeEnum): string {\n  switch (object) {\n    case TransferTypeEnum.RECEIVE:\n      return \"RECEIVE\";\n    case TransferTypeEnum.SEND:\n      return \"SEND\";\n    case TransferTypeEnum.BOTH:\n      return \"BOTH\";\n    case TransferTypeEnum.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function transferTypeEnumToNumber(object: TransferTypeEnum): number {\n  switch (object) {\n    case TransferTypeEnum.RECEIVE:\n      return 0;\n    case TransferTypeEnum.SEND:\n      return 1;\n    case TransferTypeEnum.BOTH:\n      return 2;\n    case TransferTypeEnum.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\nexport interface Deleted {\n  id?: string | undefined;\n}\n\nexport interface PaymentMethodList {\n  items?: PaymentMethod[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface PaymentMethodListResponse {\n  items?: PaymentMethodResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface PaymentMethodResponse {\n  payload?: PaymentMethod | undefined;\n  status?: Status | undefined;\n}\n\nexport interface PaymentMethod {\n  id?: string | undefined;\n  meta?: Meta | undefined;\n  paymentMethod?: PaymentMethodEnum | undefined;\n  transferType?: TransferTypeEnum | undefined;\n  data?: Any | undefined;\n}\n\nfunction createBaseDeleted(): Deleted {\n  return {};\n}\n\nexport const Deleted: MessageFns<Deleted> = {\n  encode(message: Deleted, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Deleted {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseDeleted();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Deleted {\n    return { id: isSet(object.id) ? globalThis.String(object.id) : undefined };\n  },\n\n  toJSON(message: Deleted): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Deleted>): Deleted {\n    return Deleted.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Deleted>): Deleted {\n    const message = createBaseDeleted();\n    message.id = object.id ?? undefined;\n    return message;\n  },\n};\n\nfunction createBasePaymentMethodList(): PaymentMethodList {\n  return {};\n}\n\nexport const PaymentMethodList: MessageFns<PaymentMethodList> = {\n  encode(message: PaymentMethodList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        PaymentMethod.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PaymentMethodList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePaymentMethodList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = PaymentMethod.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PaymentMethodList {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => PaymentMethod.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: PaymentMethodList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => PaymentMethod.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PaymentMethodList>): PaymentMethodList {\n    return PaymentMethodList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PaymentMethodList>): PaymentMethodList {\n    const message = createBasePaymentMethodList();\n    message.items = object.items?.map((e) => PaymentMethod.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBasePaymentMethodListResponse(): PaymentMethodListResponse {\n  return {};\n}\n\nexport const PaymentMethodListResponse: MessageFns<PaymentMethodListResponse> = {\n  encode(message: PaymentMethodListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        PaymentMethodResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PaymentMethodListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePaymentMethodListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = PaymentMethodResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PaymentMethodListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => PaymentMethodResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: PaymentMethodListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => PaymentMethodResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PaymentMethodListResponse>): PaymentMethodListResponse {\n    return PaymentMethodListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PaymentMethodListResponse>): PaymentMethodListResponse {\n    const message = createBasePaymentMethodListResponse();\n    message.items = object.items?.map((e) => PaymentMethodResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBasePaymentMethodResponse(): PaymentMethodResponse {\n  return {};\n}\n\nexport const PaymentMethodResponse: MessageFns<PaymentMethodResponse> = {\n  encode(message: PaymentMethodResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      PaymentMethod.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PaymentMethodResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePaymentMethodResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = PaymentMethod.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PaymentMethodResponse {\n    return {\n      payload: isSet(object.payload) ? PaymentMethod.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: PaymentMethodResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = PaymentMethod.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PaymentMethodResponse>): PaymentMethodResponse {\n    return PaymentMethodResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PaymentMethodResponse>): PaymentMethodResponse {\n    const message = createBasePaymentMethodResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? PaymentMethod.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBasePaymentMethod(): PaymentMethod {\n  return {};\n}\n\nexport const PaymentMethod: MessageFns<PaymentMethod> = {\n  encode(message: PaymentMethod, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(18).fork()).join();\n    }\n    if (message.paymentMethod !== undefined) {\n      writer.uint32(24).int32(paymentMethodEnumToNumber(message.paymentMethod));\n    }\n    if (message.transferType !== undefined) {\n      writer.uint32(32).int32(transferTypeEnumToNumber(message.transferType));\n    }\n    if (message.data !== undefined) {\n      Any.encode(message.data, writer.uint32(42).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PaymentMethod {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePaymentMethod();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.paymentMethod = paymentMethodEnumFromJSON(reader.int32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 32) {\n            break;\n          }\n\n          message.transferType = transferTypeEnumFromJSON(reader.int32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.data = Any.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PaymentMethod {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      paymentMethod: isSet(object.paymentMethod) ? paymentMethodEnumFromJSON(object.paymentMethod) : undefined,\n      transferType: isSet(object.transferType) ? transferTypeEnumFromJSON(object.transferType) : undefined,\n      data: isSet(object.data) ? Any.fromJSON(object.data) : undefined,\n    };\n  },\n\n  toJSON(message: PaymentMethod): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.paymentMethod !== undefined) {\n      obj.paymentMethod = paymentMethodEnumToJSON(message.paymentMethod);\n    }\n    if (message.transferType !== undefined) {\n      obj.transferType = transferTypeEnumToJSON(message.transferType);\n    }\n    if (message.data !== undefined) {\n      obj.data = Any.toJSON(message.data);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PaymentMethod>): PaymentMethod {\n    return PaymentMethod.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PaymentMethod>): PaymentMethod {\n    const message = createBasePaymentMethod();\n    message.id = object.id ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.paymentMethod = object.paymentMethod ?? undefined;\n    message.transferType = object.transferType ?? undefined;\n    message.data = (object.data !== undefined && object.data !== null) ? Any.fromPartial(object.data) : undefined;\n    return message;\n  },\n};\n\n/** Microservice definition. */\nexport type PaymentMethodServiceDefinition = typeof PaymentMethodServiceDefinition;\nexport const PaymentMethodServiceDefinition = {\n  name: \"PaymentMethodService\",\n  fullName: \"io.restorecommerce.payment_method.PaymentMethodService\",\n  methods: {\n    read: {\n      name: \"Read\",\n      requestType: ReadRequest,\n      requestStream: false,\n      responseType: PaymentMethodListResponse,\n      responseStream: false,\n      options: {},\n    },\n    create: {\n      name: \"Create\",\n      requestType: PaymentMethodList,\n      requestStream: false,\n      responseType: PaymentMethodListResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n    update: {\n      name: \"Update\",\n      requestType: PaymentMethodList,\n      requestStream: false,\n      responseType: PaymentMethodListResponse,\n      responseStream: false,\n      options: {},\n    },\n    upsert: {\n      name: \"Upsert\",\n      requestType: PaymentMethodList,\n      requestStream: false,\n      responseType: PaymentMethodListResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface PaymentMethodServiceImplementation<CallContextExt = {}> {\n  read(request: ReadRequest, context: CallContext & CallContextExt): Promise<DeepPartial<PaymentMethodListResponse>>;\n  create(\n    request: PaymentMethodList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<PaymentMethodListResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n  update(\n    request: PaymentMethodList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<PaymentMethodListResponse>>;\n  upsert(\n    request: PaymentMethodList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<PaymentMethodListResponse>>;\n}\n\nexport interface PaymentMethodServiceClient<CallOptionsExt = {}> {\n  read(request: DeepPartial<ReadRequest>, options?: CallOptions & CallOptionsExt): Promise<PaymentMethodListResponse>;\n  create(\n    request: DeepPartial<PaymentMethodList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<PaymentMethodListResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n  update(\n    request: DeepPartial<PaymentMethodList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<PaymentMethodListResponse>;\n  upsert(\n    request: DeepPartial<PaymentMethodList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<PaymentMethodListResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/payment_method.proto\",\n    \"package\": \"io.restorecommerce.payment_method\",\n    \"dependency\": [\n      \"io/restorecommerce/resource_base.proto\",\n      \"google/protobuf/any.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/status.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Deleted\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"PaymentMethodList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.payment_method.PaymentMethod\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"PaymentMethodListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.payment_method.PaymentMethodResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"PaymentMethodResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.payment_method.PaymentMethod\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"PaymentMethod\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"payment_method\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".io.restorecommerce.payment_method.PaymentMethodEnum\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"paymentMethod\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"transfer_type\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".io.restorecommerce.payment_method.TransferTypeEnum\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"transferType\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"data\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Any\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"data\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_payment_method\", \"options\": undefined },\n        { \"name\": \"_transfer_type\", \"options\": undefined },\n        { \"name\": \"_data\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [{\n      \"name\": \"PaymentMethodEnum\",\n      \"value\": [{ \"name\": \"WIRE_TRANSFER\", \"number\": 0, \"options\": undefined }, {\n        \"name\": \"DIRECT_DEBIT\",\n        \"number\": 1,\n        \"options\": undefined,\n      }, { \"name\": \"PAYPAL\", \"number\": 2, \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"TransferTypeEnum\",\n      \"value\": [{ \"name\": \"RECEIVE\", \"number\": 0, \"options\": undefined }, {\n        \"name\": \"SEND\",\n        \"number\": 1,\n        \"options\": undefined,\n      }, { \"name\": \"BOTH\", \"number\": 2, \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"service\": [{\n      \"name\": \"PaymentMethodService\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ReadRequest\",\n        \"outputType\": \".io.restorecommerce.payment_method.PaymentMethodListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.payment_method.PaymentMethodList\",\n        \"outputType\": \".io.restorecommerce.payment_method.PaymentMethodListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.payment_method.PaymentMethodList\",\n        \"outputType\": \".io.restorecommerce.payment_method.PaymentMethodListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.payment_method.PaymentMethodList\",\n        \"outputType\": \".io.restorecommerce.payment_method.PaymentMethodListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [6, 0],\n        \"span\": [13, 0, 19, 1],\n        \"leadingComments\": \"\\n Microservice definition.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.payment_method.PaymentMethodEnum\": PaymentMethodEnum,\n    \".io.restorecommerce.payment_method.TransferTypeEnum\": TransferTypeEnum,\n    \".io.restorecommerce.payment_method.Deleted\": Deleted,\n    \".io.restorecommerce.payment_method.PaymentMethodList\": PaymentMethodList,\n    \".io.restorecommerce.payment_method.PaymentMethodListResponse\": PaymentMethodListResponse,\n    \".io.restorecommerce.payment_method.PaymentMethodResponse\": PaymentMethodResponse,\n    \".io.restorecommerce.payment_method.PaymentMethod\": PaymentMethod,\n  },\n  dependencies: [protoMetadata1, protoMetadata2, protoMetadata3, protoMetadata4, protoMetadata5],\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/organization.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { Any, protoMetadata as protoMetadata1 } from \"../../google/protobuf/any\";\nimport { protoMetadata as protoMetadata8 } from \"./address\";\nimport { protoMetadata as protoMetadata4, Subject } from \"./auth\";\nimport { protoMetadata as protoMetadata9 } from \"./contact_point\";\nimport { Image, protoMetadata as protoMetadata6 } from \"./image\";\nimport { Meta, protoMetadata as protoMetadata3 } from \"./meta\";\nimport { protoMetadata as protoMetadata7, Resolver } from \"./options\";\nimport { protoMetadata as protoMetadata10 } from \"./payment_method\";\nimport { DeleteRequest, DeleteResponse, protoMetadata as protoMetadata2, ReadRequest } from \"./resource_base\";\nimport { OperationStatus, protoMetadata as protoMetadata5, Status } from \"./status\";\n\nexport const protobufPackage = \"io.restorecommerce.organization\";\n\nexport interface Deleted {\n  id?: string | undefined;\n}\n\nexport interface DeleteOrgData {\n  orgIds?: string[] | undefined;\n  userIds?: string[] | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface OrganizationList {\n  items?: Organization[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface OrganizationListResponse {\n  items?: OrganizationResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface OrganizationResponse {\n  payload?: Organization | undefined;\n  status?: Status | undefined;\n}\n\nexport interface Organization {\n  /** Organization ID, unique, key */\n  id?: string | undefined;\n  meta?:\n    | Meta\n    | undefined;\n  /** Hierarchically superior organization; may be null */\n  parentId?:\n    | string\n    | undefined;\n  /** list of possible legal addresses of different types */\n  contactPointIds?: string[] | undefined;\n  website?: string | undefined;\n  email?:\n    | string\n    | undefined;\n  /** base64; arangoDB does not support blob storage */\n  logo?: Image | undefined;\n  vatId?: string | undefined;\n  isicV4?: string | undefined;\n  registration?: string | undefined;\n  registrationCourt?: string | undefined;\n  name?: string | undefined;\n  paymentMethodIds?:\n    | string[]\n    | undefined;\n  /** additional data */\n  data?: Any | undefined;\n}\n\nfunction createBaseDeleted(): Deleted {\n  return {};\n}\n\nexport const Deleted: MessageFns<Deleted> = {\n  encode(message: Deleted, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Deleted {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseDeleted();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Deleted {\n    return { id: isSet(object.id) ? globalThis.String(object.id) : undefined };\n  },\n\n  toJSON(message: Deleted): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Deleted>): Deleted {\n    return Deleted.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Deleted>): Deleted {\n    const message = createBaseDeleted();\n    message.id = object.id ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseDeleteOrgData(): DeleteOrgData {\n  return {};\n}\n\nexport const DeleteOrgData: MessageFns<DeleteOrgData> = {\n  encode(message: DeleteOrgData, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.orgIds !== undefined && message.orgIds.length !== 0) {\n      for (const v of message.orgIds) {\n        writer.uint32(10).string(v!);\n      }\n    }\n    if (message.userIds !== undefined && message.userIds.length !== 0) {\n      for (const v of message.userIds) {\n        writer.uint32(18).string(v!);\n      }\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): DeleteOrgData {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseDeleteOrgData();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.orgIds === undefined) {\n            message.orgIds = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.orgIds!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          if (message.userIds === undefined) {\n            message.userIds = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.userIds!.push(el);\n          }\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): DeleteOrgData {\n    return {\n      orgIds: globalThis.Array.isArray(object?.orgIds)\n        ? object.orgIds.map((e: any) => globalThis.String(e))\n        : undefined,\n      userIds: globalThis.Array.isArray(object?.userIds)\n        ? object.userIds.map((e: any) => globalThis.String(e))\n        : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: DeleteOrgData): unknown {\n    const obj: any = {};\n    if (message.orgIds?.length) {\n      obj.orgIds = message.orgIds;\n    }\n    if (message.userIds?.length) {\n      obj.userIds = message.userIds;\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<DeleteOrgData>): DeleteOrgData {\n    return DeleteOrgData.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<DeleteOrgData>): DeleteOrgData {\n    const message = createBaseDeleteOrgData();\n    message.orgIds = object.orgIds?.map((e) => e) || undefined;\n    message.userIds = object.userIds?.map((e) => e) || undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseOrganizationList(): OrganizationList {\n  return {};\n}\n\nexport const OrganizationList: MessageFns<OrganizationList> = {\n  encode(message: OrganizationList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        Organization.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OrganizationList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOrganizationList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = Organization.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OrganizationList {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => Organization.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: OrganizationList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => Organization.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OrganizationList>): OrganizationList {\n    return OrganizationList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OrganizationList>): OrganizationList {\n    const message = createBaseOrganizationList();\n    message.items = object.items?.map((e) => Organization.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseOrganizationListResponse(): OrganizationListResponse {\n  return {};\n}\n\nexport const OrganizationListResponse: MessageFns<OrganizationListResponse> = {\n  encode(message: OrganizationListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        OrganizationResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OrganizationListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOrganizationListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = OrganizationResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OrganizationListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => OrganizationResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: OrganizationListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => OrganizationResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OrganizationListResponse>): OrganizationListResponse {\n    return OrganizationListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OrganizationListResponse>): OrganizationListResponse {\n    const message = createBaseOrganizationListResponse();\n    message.items = object.items?.map((e) => OrganizationResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseOrganizationResponse(): OrganizationResponse {\n  return {};\n}\n\nexport const OrganizationResponse: MessageFns<OrganizationResponse> = {\n  encode(message: OrganizationResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      Organization.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OrganizationResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOrganizationResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = Organization.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OrganizationResponse {\n    return {\n      payload: isSet(object.payload) ? Organization.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: OrganizationResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = Organization.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OrganizationResponse>): OrganizationResponse {\n    return OrganizationResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OrganizationResponse>): OrganizationResponse {\n    const message = createBaseOrganizationResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? Organization.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseOrganization(): Organization {\n  return {};\n}\n\nexport const Organization: MessageFns<Organization> = {\n  encode(message: Organization, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(18).fork()).join();\n    }\n    if (message.parentId !== undefined) {\n      writer.uint32(26).string(message.parentId);\n    }\n    if (message.contactPointIds !== undefined && message.contactPointIds.length !== 0) {\n      for (const v of message.contactPointIds) {\n        writer.uint32(34).string(v!);\n      }\n    }\n    if (message.website !== undefined) {\n      writer.uint32(42).string(message.website);\n    }\n    if (message.email !== undefined) {\n      writer.uint32(50).string(message.email);\n    }\n    if (message.logo !== undefined) {\n      Image.encode(message.logo, writer.uint32(58).fork()).join();\n    }\n    if (message.vatId !== undefined) {\n      writer.uint32(66).string(message.vatId);\n    }\n    if (message.isicV4 !== undefined) {\n      writer.uint32(74).string(message.isicV4);\n    }\n    if (message.registration !== undefined) {\n      writer.uint32(82).string(message.registration);\n    }\n    if (message.registrationCourt !== undefined) {\n      writer.uint32(90).string(message.registrationCourt);\n    }\n    if (message.name !== undefined) {\n      writer.uint32(98).string(message.name);\n    }\n    if (message.paymentMethodIds !== undefined && message.paymentMethodIds.length !== 0) {\n      for (const v of message.paymentMethodIds) {\n        writer.uint32(106).string(v!);\n      }\n    }\n    if (message.data !== undefined) {\n      Any.encode(message.data, writer.uint32(114).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Organization {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOrganization();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.parentId = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          if (message.contactPointIds === undefined) {\n            message.contactPointIds = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.contactPointIds!.push(el);\n          }\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.website = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.email = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.logo = Image.decode(reader, reader.uint32());\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.vatId = reader.string();\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.isicV4 = reader.string();\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.registration = reader.string();\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.registrationCourt = reader.string();\n          continue;\n        }\n        case 12: {\n          if (tag !== 98) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 13: {\n          if (tag !== 106) {\n            break;\n          }\n\n          if (message.paymentMethodIds === undefined) {\n            message.paymentMethodIds = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.paymentMethodIds!.push(el);\n          }\n          continue;\n        }\n        case 14: {\n          if (tag !== 114) {\n            break;\n          }\n\n          message.data = Any.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Organization {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      parentId: isSet(object.parentId) ? globalThis.String(object.parentId) : undefined,\n      contactPointIds: globalThis.Array.isArray(object?.contactPointIds)\n        ? object.contactPointIds.map((e: any) => globalThis.String(e))\n        : undefined,\n      website: isSet(object.website) ? globalThis.String(object.website) : undefined,\n      email: isSet(object.email) ? globalThis.String(object.email) : undefined,\n      logo: isSet(object.logo) ? Image.fromJSON(object.logo) : undefined,\n      vatId: isSet(object.vatId) ? globalThis.String(object.vatId) : undefined,\n      isicV4: isSet(object.isicV4) ? globalThis.String(object.isicV4) : undefined,\n      registration: isSet(object.registration) ? globalThis.String(object.registration) : undefined,\n      registrationCourt: isSet(object.registrationCourt) ? globalThis.String(object.registrationCourt) : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      paymentMethodIds: globalThis.Array.isArray(object?.paymentMethodIds)\n        ? object.paymentMethodIds.map((e: any) => globalThis.String(e))\n        : undefined,\n      data: isSet(object.data) ? Any.fromJSON(object.data) : undefined,\n    };\n  },\n\n  toJSON(message: Organization): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.parentId !== undefined) {\n      obj.parentId = message.parentId;\n    }\n    if (message.contactPointIds?.length) {\n      obj.contactPointIds = message.contactPointIds;\n    }\n    if (message.website !== undefined) {\n      obj.website = message.website;\n    }\n    if (message.email !== undefined) {\n      obj.email = message.email;\n    }\n    if (message.logo !== undefined) {\n      obj.logo = Image.toJSON(message.logo);\n    }\n    if (message.vatId !== undefined) {\n      obj.vatId = message.vatId;\n    }\n    if (message.isicV4 !== undefined) {\n      obj.isicV4 = message.isicV4;\n    }\n    if (message.registration !== undefined) {\n      obj.registration = message.registration;\n    }\n    if (message.registrationCourt !== undefined) {\n      obj.registrationCourt = message.registrationCourt;\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.paymentMethodIds?.length) {\n      obj.paymentMethodIds = message.paymentMethodIds;\n    }\n    if (message.data !== undefined) {\n      obj.data = Any.toJSON(message.data);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Organization>): Organization {\n    return Organization.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Organization>): Organization {\n    const message = createBaseOrganization();\n    message.id = object.id ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.parentId = object.parentId ?? undefined;\n    message.contactPointIds = object.contactPointIds?.map((e) => e) || undefined;\n    message.website = object.website ?? undefined;\n    message.email = object.email ?? undefined;\n    message.logo = (object.logo !== undefined && object.logo !== null) ? Image.fromPartial(object.logo) : undefined;\n    message.vatId = object.vatId ?? undefined;\n    message.isicV4 = object.isicV4 ?? undefined;\n    message.registration = object.registration ?? undefined;\n    message.registrationCourt = object.registrationCourt ?? undefined;\n    message.name = object.name ?? undefined;\n    message.paymentMethodIds = object.paymentMethodIds?.map((e) => e) || undefined;\n    message.data = (object.data !== undefined && object.data !== null) ? Any.fromPartial(object.data) : undefined;\n    return message;\n  },\n};\n\nexport type OrganizationServiceDefinition = typeof OrganizationServiceDefinition;\nexport const OrganizationServiceDefinition = {\n  name: \"OrganizationService\",\n  fullName: \"io.restorecommerce.organization.OrganizationService\",\n  methods: {\n    read: {\n      name: \"Read\",\n      requestType: ReadRequest,\n      requestStream: false,\n      responseType: OrganizationListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    create: {\n      name: \"Create\",\n      requestType: OrganizationList,\n      requestStream: false,\n      responseType: OrganizationListResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n    update: {\n      name: \"Update\",\n      requestType: OrganizationList,\n      requestStream: false,\n      responseType: OrganizationListResponse,\n      responseStream: false,\n      options: {},\n    },\n    upsert: {\n      name: \"Upsert\",\n      requestType: OrganizationList,\n      requestStream: false,\n      responseType: OrganizationListResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface OrganizationServiceImplementation<CallContextExt = {}> {\n  read(request: ReadRequest, context: CallContext & CallContextExt): Promise<DeepPartial<OrganizationListResponse>>;\n  create(\n    request: OrganizationList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<OrganizationListResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n  update(\n    request: OrganizationList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<OrganizationListResponse>>;\n  upsert(\n    request: OrganizationList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<OrganizationListResponse>>;\n}\n\nexport interface OrganizationServiceClient<CallOptionsExt = {}> {\n  read(request: DeepPartial<ReadRequest>, options?: CallOptions & CallOptionsExt): Promise<OrganizationListResponse>;\n  create(\n    request: DeepPartial<OrganizationList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<OrganizationListResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n  update(\n    request: DeepPartial<OrganizationList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<OrganizationListResponse>;\n  upsert(\n    request: DeepPartial<OrganizationList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<OrganizationListResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/organization.proto\",\n    \"package\": \"io.restorecommerce.organization\",\n    \"dependency\": [\n      \"google/protobuf/any.proto\",\n      \"io/restorecommerce/resource_base.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/image.proto\",\n      \"io/restorecommerce/options.proto\",\n      \"io/restorecommerce/address.proto\",\n      \"io/restorecommerce/contact_point.proto\",\n      \"io/restorecommerce/payment_method.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Deleted\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"DeleteOrgData\",\n      \"field\": [{\n        \"name\": \"org_ids\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"orgIds\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"user_ids\",\n        \"number\": 2,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"userIds\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"OrganizationList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.organization.Organization\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"OrganizationListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.organization.OrganizationResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"OrganizationResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.organization.Organization\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Organization\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"parent_id\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"parentId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"contact_point_ids\",\n        \"number\": 4,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"contactPointIds\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"website\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"website\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"email\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"email\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"logo\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.image.Image\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"logo\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"vat_id\",\n        \"number\": 8,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"vatId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"isic_v4\",\n        \"number\": 9,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 7,\n        \"jsonName\": \"isicV4\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"registration\",\n        \"number\": 10,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 8,\n        \"jsonName\": \"registration\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"registration_court\",\n        \"number\": 11,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 9,\n        \"jsonName\": \"registrationCourt\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"name\",\n        \"number\": 12,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 10,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"payment_method_ids\",\n        \"number\": 13,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"paymentMethodIds\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"data\",\n        \"number\": 14,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Any\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 11,\n        \"jsonName\": \"data\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_parent_id\", \"options\": undefined },\n        { \"name\": \"_website\", \"options\": undefined },\n        { \"name\": \"_email\", \"options\": undefined },\n        { \"name\": \"_logo\", \"options\": undefined },\n        { \"name\": \"_vat_id\", \"options\": undefined },\n        { \"name\": \"_isic_v4\", \"options\": undefined },\n        { \"name\": \"_registration\", \"options\": undefined },\n        { \"name\": \"_registration_court\", \"options\": undefined },\n        { \"name\": \"_name\", \"options\": undefined },\n        { \"name\": \"_data\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [{\n      \"name\": \"OrganizationService\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ReadRequest\",\n        \"outputType\": \".io.restorecommerce.organization.OrganizationListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.organization.OrganizationList\",\n        \"outputType\": \".io.restorecommerce.organization.OrganizationListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.organization.OrganizationList\",\n        \"outputType\": \".io.restorecommerce.organization.OrganizationListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.organization.OrganizationList\",\n        \"outputType\": \".io.restorecommerce.organization.OrganizationListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [3, 7],\n        \"span\": [14, 0, 42],\n        \"leadingComments\": \" Used by resolvers\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 5, 2, 0],\n        \"span\": [56, 2, 25],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Organization ID, unique, key\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 5, 2, 2],\n        \"span\": [58, 2, 66, 4],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \"  Hierarchically superior organization; may be null\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 5, 2, 3],\n        \"span\": [67, 2, 75, 4],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" list of possible legal addresses of different types\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 5, 2, 6],\n        \"span\": [78, 2, 51],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" base64; arangoDB does not support blob storage\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 5, 2, 13],\n        \"span\": [93, 2, 41],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" additional data\\n\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.organization.Deleted\": Deleted,\n    \".io.restorecommerce.organization.DeleteOrgData\": DeleteOrgData,\n    \".io.restorecommerce.organization.OrganizationList\": OrganizationList,\n    \".io.restorecommerce.organization.OrganizationListResponse\": OrganizationListResponse,\n    \".io.restorecommerce.organization.OrganizationResponse\": OrganizationResponse,\n    \".io.restorecommerce.organization.Organization\": Organization,\n  },\n  dependencies: [\n    protoMetadata1,\n    protoMetadata2,\n    protoMetadata3,\n    protoMetadata4,\n    protoMetadata5,\n    protoMetadata6,\n    protoMetadata7,\n    protoMetadata8,\n    protoMetadata9,\n    protoMetadata10,\n  ],\n  options: {\n    messages: {\n      \"Organization\": {\n        fields: {\n          \"parent_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"Ci0uaW8ucmVzdG9yZWNvbW1lcmNlLm9yZ2FuaXphdGlvbi5Pcmdhbml6YXRpb24SC21hc3Rlcl9kYXRhGgxvcmdhbml6YXRpb24iBFJlYWQqBnBhcmVudA==\",\n                \"base64\",\n              ),\n            ),\n          },\n          \"contact_point_ids\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"Ci4uaW8ucmVzdG9yZWNvbW1lcmNlLmNvbnRhY3RfcG9pbnQuQ29udGFjdFBvaW50EgttYXN0ZXJfZGF0YRoNY29udGFjdF9wb2ludCIEUmVhZCoNY29udGFjdFBvaW50cw==\",\n                \"base64\",\n              ),\n            ),\n          },\n          \"payment_method_ids\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CjAuaW8ucmVzdG9yZWNvbW1lcmNlLnBheW1lbnRfbWV0aG9kLlBheW1lbnRNZXRob2QSB3BheW1lbnQaDnBheW1lbnRfbWV0aG9kIgRSZWFkKg5wYXltZW50TWV0aG9kcw==\",\n                \"base64\",\n              ),\n            ),\n          },\n        },\n      },\n    },\n    services: { \"OrganizationService\": { methods: { \"Read\": { \"is_query\": true } } } },\n  },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/setting.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { Attribute, protoMetadata as protoMetadata2 } from \"./attribute\";\nimport { protoMetadata as protoMetadata4, Subject } from \"./auth\";\nimport { Meta, protoMetadata as protoMetadata1 } from \"./meta\";\nimport { protoMetadata as protoMetadata6 } from \"./options\";\nimport { DeleteRequest, DeleteResponse, protoMetadata as protoMetadata3, ReadRequest } from \"./resource_base\";\nimport { OperationStatus, protoMetadata as protoMetadata5, Status } from \"./status\";\n\nexport const protobufPackage = \"io.restorecommerce.setting\";\n\nexport interface Setting {\n  id?: string | undefined;\n  meta?: Meta | undefined;\n  name?: string | undefined;\n  description?: string | undefined;\n  settings?: Attribute[] | undefined;\n}\n\nexport interface SettingList {\n  items?: Setting[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface SettingListResponse {\n  items?: SettingResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface SettingResponse {\n  payload?: Setting | undefined;\n  status?: Status | undefined;\n}\n\nfunction createBaseSetting(): Setting {\n  return {};\n}\n\nexport const Setting: MessageFns<Setting> = {\n  encode(message: Setting, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(18).fork()).join();\n    }\n    if (message.name !== undefined) {\n      writer.uint32(26).string(message.name);\n    }\n    if (message.description !== undefined) {\n      writer.uint32(34).string(message.description);\n    }\n    if (message.settings !== undefined && message.settings.length !== 0) {\n      for (const v of message.settings) {\n        Attribute.encode(v!, writer.uint32(42).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Setting {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseSetting();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          if (message.settings === undefined) {\n            message.settings = [];\n          }\n          const el = Attribute.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.settings!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Setting {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      description: isSet(object.description) ? globalThis.String(object.description) : undefined,\n      settings: globalThis.Array.isArray(object?.settings)\n        ? object.settings.map((e: any) => Attribute.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: Setting): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.description !== undefined) {\n      obj.description = message.description;\n    }\n    if (message.settings?.length) {\n      obj.settings = message.settings.map((e) => Attribute.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Setting>): Setting {\n    return Setting.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Setting>): Setting {\n    const message = createBaseSetting();\n    message.id = object.id ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.name = object.name ?? undefined;\n    message.description = object.description ?? undefined;\n    message.settings = object.settings?.map((e) => Attribute.fromPartial(e)) || undefined;\n    return message;\n  },\n};\n\nfunction createBaseSettingList(): SettingList {\n  return {};\n}\n\nexport const SettingList: MessageFns<SettingList> = {\n  encode(message: SettingList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        Setting.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): SettingList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseSettingList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = Setting.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): SettingList {\n    return {\n      items: globalThis.Array.isArray(object?.items) ? object.items.map((e: any) => Setting.fromJSON(e)) : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: SettingList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => Setting.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<SettingList>): SettingList {\n    return SettingList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<SettingList>): SettingList {\n    const message = createBaseSettingList();\n    message.items = object.items?.map((e) => Setting.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseSettingListResponse(): SettingListResponse {\n  return {};\n}\n\nexport const SettingListResponse: MessageFns<SettingListResponse> = {\n  encode(message: SettingListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        SettingResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): SettingListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseSettingListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = SettingResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): SettingListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => SettingResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: SettingListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => SettingResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<SettingListResponse>): SettingListResponse {\n    return SettingListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<SettingListResponse>): SettingListResponse {\n    const message = createBaseSettingListResponse();\n    message.items = object.items?.map((e) => SettingResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseSettingResponse(): SettingResponse {\n  return {};\n}\n\nexport const SettingResponse: MessageFns<SettingResponse> = {\n  encode(message: SettingResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      Setting.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): SettingResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseSettingResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = Setting.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): SettingResponse {\n    return {\n      payload: isSet(object.payload) ? Setting.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: SettingResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = Setting.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<SettingResponse>): SettingResponse {\n    return SettingResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<SettingResponse>): SettingResponse {\n    const message = createBaseSettingResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? Setting.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nexport type SettingServiceDefinition = typeof SettingServiceDefinition;\nexport const SettingServiceDefinition = {\n  name: \"SettingService\",\n  fullName: \"io.restorecommerce.setting.SettingService\",\n  methods: {\n    read: {\n      name: \"Read\",\n      requestType: ReadRequest,\n      requestStream: false,\n      responseType: SettingListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    create: {\n      name: \"Create\",\n      requestType: SettingList,\n      requestStream: false,\n      responseType: SettingListResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n    update: {\n      name: \"Update\",\n      requestType: SettingList,\n      requestStream: false,\n      responseType: SettingListResponse,\n      responseStream: false,\n      options: {},\n    },\n    upsert: {\n      name: \"Upsert\",\n      requestType: SettingList,\n      requestStream: false,\n      responseType: SettingListResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface SettingServiceImplementation<CallContextExt = {}> {\n  read(request: ReadRequest, context: CallContext & CallContextExt): Promise<DeepPartial<SettingListResponse>>;\n  create(request: SettingList, context: CallContext & CallContextExt): Promise<DeepPartial<SettingListResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n  update(request: SettingList, context: CallContext & CallContextExt): Promise<DeepPartial<SettingListResponse>>;\n  upsert(request: SettingList, context: CallContext & CallContextExt): Promise<DeepPartial<SettingListResponse>>;\n}\n\nexport interface SettingServiceClient<CallOptionsExt = {}> {\n  read(request: DeepPartial<ReadRequest>, options?: CallOptions & CallOptionsExt): Promise<SettingListResponse>;\n  create(request: DeepPartial<SettingList>, options?: CallOptions & CallOptionsExt): Promise<SettingListResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n  update(request: DeepPartial<SettingList>, options?: CallOptions & CallOptionsExt): Promise<SettingListResponse>;\n  upsert(request: DeepPartial<SettingList>, options?: CallOptions & CallOptionsExt): Promise<SettingListResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/setting.proto\",\n    \"package\": \"io.restorecommerce.setting\",\n    \"dependency\": [\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/attribute.proto\",\n      \"io/restorecommerce/resource_base.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/options.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Setting\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"name\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"description\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"description\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"settings\",\n        \"number\": 5,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.attribute.Attribute\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"settings\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }, { \"name\": \"_meta\", \"options\": undefined }, {\n        \"name\": \"_name\",\n        \"options\": undefined,\n      }, { \"name\": \"_description\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"SettingList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.setting.Setting\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"SettingListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.setting.SettingResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"SettingResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.setting.Setting\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [{\n      \"name\": \"SettingService\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ReadRequest\",\n        \"outputType\": \".io.restorecommerce.setting.SettingListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.setting.SettingList\",\n        \"outputType\": \".io.restorecommerce.setting.SettingListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.setting.SettingList\",\n        \"outputType\": \".io.restorecommerce.setting.SettingListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.setting.SettingList\",\n        \"outputType\": \".io.restorecommerce.setting.SettingListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": { \"location\": [] },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.setting.Setting\": Setting,\n    \".io.restorecommerce.setting.SettingList\": SettingList,\n    \".io.restorecommerce.setting.SettingListResponse\": SettingListResponse,\n    \".io.restorecommerce.setting.SettingResponse\": SettingResponse,\n  },\n  dependencies: [protoMetadata1, protoMetadata2, protoMetadata3, protoMetadata4, protoMetadata5, protoMetadata6],\n  options: { services: { \"SettingService\": { methods: { \"Read\": { \"is_query\": true } } } } },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/customer.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { protoMetadata as protoMetadata3, Subject } from \"./auth\";\nimport { protoMetadata as protoMetadata8 } from \"./contact_point\";\nimport { Meta, protoMetadata as protoMetadata2 } from \"./meta\";\nimport { protoMetadata as protoMetadata6, Resolver } from \"./options\";\nimport { protoMetadata as protoMetadata9 } from \"./organization\";\nimport { DeleteRequest, DeleteResponse, protoMetadata as protoMetadata1, ReadRequest } from \"./resource_base\";\nimport { protoMetadata as protoMetadata5 } from \"./setting\";\nimport { OperationStatus, protoMetadata as protoMetadata4, Status } from \"./status\";\nimport { protoMetadata as protoMetadata7 } from \"./user\";\n\nexport const protobufPackage = \"io.restorecommerce.customer\";\n\nexport enum CustomerType {\n  PRIVATE = \"PRIVATE\",\n  COMMERCIAL = \"COMMERCIAL\",\n  PUBLIC_SECTOR = \"PUBLIC_SECTOR\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function customerTypeFromJSON(object: any): CustomerType {\n  switch (object) {\n    case 0:\n    case \"PRIVATE\":\n      return CustomerType.PRIVATE;\n    case 1:\n    case \"COMMERCIAL\":\n      return CustomerType.COMMERCIAL;\n    case 2:\n    case \"PUBLIC_SECTOR\":\n      return CustomerType.PUBLIC_SECTOR;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return CustomerType.UNRECOGNIZED;\n  }\n}\n\nexport function customerTypeToJSON(object: CustomerType): string {\n  switch (object) {\n    case CustomerType.PRIVATE:\n      return \"PRIVATE\";\n    case CustomerType.COMMERCIAL:\n      return \"COMMERCIAL\";\n    case CustomerType.PUBLIC_SECTOR:\n      return \"PUBLIC_SECTOR\";\n    case CustomerType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function customerTypeToNumber(object: CustomerType): number {\n  switch (object) {\n    case CustomerType.PRIVATE:\n      return 0;\n    case CustomerType.COMMERCIAL:\n      return 1;\n    case CustomerType.PUBLIC_SECTOR:\n      return 2;\n    case CustomerType.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\nexport interface CustomerList {\n  items?: Customer[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface CustomerListResponse {\n  items?: CustomerResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface CustomerResponse {\n  payload?: Customer | undefined;\n  status?: Status | undefined;\n}\n\nexport interface Customer {\n  id?: string | undefined;\n  meta?: Meta | undefined;\n  private?: Private | undefined;\n  commercial?: Commercial | undefined;\n  publicSector?: PublicSector | undefined;\n  settingId?:\n    | string\n    | undefined;\n  /** display name! */\n  name?: string | undefined;\n  description?: string | undefined;\n}\n\nexport interface Private {\n  userId?: string | undefined;\n  contactPointIds?: string[] | undefined;\n}\n\nexport interface Commercial {\n  organizationId?:\n    | string\n    | undefined;\n  /** list of active templates */\n  templateIds?: string[] | undefined;\n}\n\nexport interface PublicSector {\n  organizationId?:\n    | string\n    | undefined;\n  /** list of active templates */\n  templateIds?: string[] | undefined;\n}\n\nfunction createBaseCustomerList(): CustomerList {\n  return {};\n}\n\nexport const CustomerList: MessageFns<CustomerList> = {\n  encode(message: CustomerList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        Customer.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CustomerList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCustomerList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = Customer.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CustomerList {\n    return {\n      items: globalThis.Array.isArray(object?.items) ? object.items.map((e: any) => Customer.fromJSON(e)) : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: CustomerList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => Customer.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CustomerList>): CustomerList {\n    return CustomerList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CustomerList>): CustomerList {\n    const message = createBaseCustomerList();\n    message.items = object.items?.map((e) => Customer.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseCustomerListResponse(): CustomerListResponse {\n  return {};\n}\n\nexport const CustomerListResponse: MessageFns<CustomerListResponse> = {\n  encode(message: CustomerListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        CustomerResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CustomerListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCustomerListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = CustomerResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CustomerListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => CustomerResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: CustomerListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => CustomerResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CustomerListResponse>): CustomerListResponse {\n    return CustomerListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CustomerListResponse>): CustomerListResponse {\n    const message = createBaseCustomerListResponse();\n    message.items = object.items?.map((e) => CustomerResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseCustomerResponse(): CustomerResponse {\n  return {};\n}\n\nexport const CustomerResponse: MessageFns<CustomerResponse> = {\n  encode(message: CustomerResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      Customer.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CustomerResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCustomerResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = Customer.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CustomerResponse {\n    return {\n      payload: isSet(object.payload) ? Customer.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: CustomerResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = Customer.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CustomerResponse>): CustomerResponse {\n    return CustomerResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CustomerResponse>): CustomerResponse {\n    const message = createBaseCustomerResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? Customer.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseCustomer(): Customer {\n  return {};\n}\n\nexport const Customer: MessageFns<Customer> = {\n  encode(message: Customer, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(18).fork()).join();\n    }\n    if (message.private !== undefined) {\n      Private.encode(message.private, writer.uint32(26).fork()).join();\n    }\n    if (message.commercial !== undefined) {\n      Commercial.encode(message.commercial, writer.uint32(34).fork()).join();\n    }\n    if (message.publicSector !== undefined) {\n      PublicSector.encode(message.publicSector, writer.uint32(42).fork()).join();\n    }\n    if (message.settingId !== undefined && message.settingId !== \"\") {\n      writer.uint32(50).string(message.settingId);\n    }\n    if (message.name !== undefined) {\n      writer.uint32(58).string(message.name);\n    }\n    if (message.description !== undefined) {\n      writer.uint32(66).string(message.description);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Customer {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCustomer();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.private = Private.decode(reader, reader.uint32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.commercial = Commercial.decode(reader, reader.uint32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.publicSector = PublicSector.decode(reader, reader.uint32());\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.settingId = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Customer {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      private: isSet(object.private) ? Private.fromJSON(object.private) : undefined,\n      commercial: isSet(object.commercial) ? Commercial.fromJSON(object.commercial) : undefined,\n      publicSector: isSet(object.publicSector) ? PublicSector.fromJSON(object.publicSector) : undefined,\n      settingId: isSet(object.settingId) ? globalThis.String(object.settingId) : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      description: isSet(object.description) ? globalThis.String(object.description) : undefined,\n    };\n  },\n\n  toJSON(message: Customer): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.private !== undefined) {\n      obj.private = Private.toJSON(message.private);\n    }\n    if (message.commercial !== undefined) {\n      obj.commercial = Commercial.toJSON(message.commercial);\n    }\n    if (message.publicSector !== undefined) {\n      obj.publicSector = PublicSector.toJSON(message.publicSector);\n    }\n    if (message.settingId !== undefined && message.settingId !== \"\") {\n      obj.settingId = message.settingId;\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.description !== undefined) {\n      obj.description = message.description;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Customer>): Customer {\n    return Customer.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Customer>): Customer {\n    const message = createBaseCustomer();\n    message.id = object.id ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.private = (object.private !== undefined && object.private !== null)\n      ? Private.fromPartial(object.private)\n      : undefined;\n    message.commercial = (object.commercial !== undefined && object.commercial !== null)\n      ? Commercial.fromPartial(object.commercial)\n      : undefined;\n    message.publicSector = (object.publicSector !== undefined && object.publicSector !== null)\n      ? PublicSector.fromPartial(object.publicSector)\n      : undefined;\n    message.settingId = object.settingId ?? undefined;\n    message.name = object.name ?? undefined;\n    message.description = object.description ?? undefined;\n    return message;\n  },\n};\n\nfunction createBasePrivate(): Private {\n  return {};\n}\n\nexport const Private: MessageFns<Private> = {\n  encode(message: Private, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.userId !== undefined) {\n      writer.uint32(10).string(message.userId);\n    }\n    if (message.contactPointIds !== undefined && message.contactPointIds.length !== 0) {\n      for (const v of message.contactPointIds) {\n        writer.uint32(18).string(v!);\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Private {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePrivate();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.userId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          if (message.contactPointIds === undefined) {\n            message.contactPointIds = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.contactPointIds!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Private {\n    return {\n      userId: isSet(object.userId) ? globalThis.String(object.userId) : undefined,\n      contactPointIds: globalThis.Array.isArray(object?.contactPointIds)\n        ? object.contactPointIds.map((e: any) => globalThis.String(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: Private): unknown {\n    const obj: any = {};\n    if (message.userId !== undefined) {\n      obj.userId = message.userId;\n    }\n    if (message.contactPointIds?.length) {\n      obj.contactPointIds = message.contactPointIds;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Private>): Private {\n    return Private.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Private>): Private {\n    const message = createBasePrivate();\n    message.userId = object.userId ?? undefined;\n    message.contactPointIds = object.contactPointIds?.map((e) => e) || undefined;\n    return message;\n  },\n};\n\nfunction createBaseCommercial(): Commercial {\n  return {};\n}\n\nexport const Commercial: MessageFns<Commercial> = {\n  encode(message: Commercial, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.organizationId !== undefined) {\n      writer.uint32(10).string(message.organizationId);\n    }\n    if (message.templateIds !== undefined && message.templateIds.length !== 0) {\n      for (const v of message.templateIds) {\n        writer.uint32(18).string(v!);\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Commercial {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCommercial();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.organizationId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          if (message.templateIds === undefined) {\n            message.templateIds = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.templateIds!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Commercial {\n    return {\n      organizationId: isSet(object.organizationId) ? globalThis.String(object.organizationId) : undefined,\n      templateIds: globalThis.Array.isArray(object?.templateIds)\n        ? object.templateIds.map((e: any) => globalThis.String(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: Commercial): unknown {\n    const obj: any = {};\n    if (message.organizationId !== undefined) {\n      obj.organizationId = message.organizationId;\n    }\n    if (message.templateIds?.length) {\n      obj.templateIds = message.templateIds;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Commercial>): Commercial {\n    return Commercial.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Commercial>): Commercial {\n    const message = createBaseCommercial();\n    message.organizationId = object.organizationId ?? undefined;\n    message.templateIds = object.templateIds?.map((e) => e) || undefined;\n    return message;\n  },\n};\n\nfunction createBasePublicSector(): PublicSector {\n  return {};\n}\n\nexport const PublicSector: MessageFns<PublicSector> = {\n  encode(message: PublicSector, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.organizationId !== undefined) {\n      writer.uint32(10).string(message.organizationId);\n    }\n    if (message.templateIds !== undefined && message.templateIds.length !== 0) {\n      for (const v of message.templateIds) {\n        writer.uint32(18).string(v!);\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PublicSector {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePublicSector();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.organizationId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          if (message.templateIds === undefined) {\n            message.templateIds = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.templateIds!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PublicSector {\n    return {\n      organizationId: isSet(object.organizationId) ? globalThis.String(object.organizationId) : undefined,\n      templateIds: globalThis.Array.isArray(object?.templateIds)\n        ? object.templateIds.map((e: any) => globalThis.String(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: PublicSector): unknown {\n    const obj: any = {};\n    if (message.organizationId !== undefined) {\n      obj.organizationId = message.organizationId;\n    }\n    if (message.templateIds?.length) {\n      obj.templateIds = message.templateIds;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PublicSector>): PublicSector {\n    return PublicSector.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PublicSector>): PublicSector {\n    const message = createBasePublicSector();\n    message.organizationId = object.organizationId ?? undefined;\n    message.templateIds = object.templateIds?.map((e) => e) || undefined;\n    return message;\n  },\n};\n\n/** Microservice definition. */\nexport type CustomerServiceDefinition = typeof CustomerServiceDefinition;\nexport const CustomerServiceDefinition = {\n  name: \"CustomerService\",\n  fullName: \"io.restorecommerce.customer.CustomerService\",\n  methods: {\n    read: {\n      name: \"Read\",\n      requestType: ReadRequest,\n      requestStream: false,\n      responseType: CustomerListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    create: {\n      name: \"Create\",\n      requestType: CustomerList,\n      requestStream: false,\n      responseType: CustomerListResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n    update: {\n      name: \"Update\",\n      requestType: CustomerList,\n      requestStream: false,\n      responseType: CustomerListResponse,\n      responseStream: false,\n      options: {},\n    },\n    upsert: {\n      name: \"Upsert\",\n      requestType: CustomerList,\n      requestStream: false,\n      responseType: CustomerListResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface CustomerServiceImplementation<CallContextExt = {}> {\n  read(request: ReadRequest, context: CallContext & CallContextExt): Promise<DeepPartial<CustomerListResponse>>;\n  create(request: CustomerList, context: CallContext & CallContextExt): Promise<DeepPartial<CustomerListResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n  update(request: CustomerList, context: CallContext & CallContextExt): Promise<DeepPartial<CustomerListResponse>>;\n  upsert(request: CustomerList, context: CallContext & CallContextExt): Promise<DeepPartial<CustomerListResponse>>;\n}\n\nexport interface CustomerServiceClient<CallOptionsExt = {}> {\n  read(request: DeepPartial<ReadRequest>, options?: CallOptions & CallOptionsExt): Promise<CustomerListResponse>;\n  create(request: DeepPartial<CustomerList>, options?: CallOptions & CallOptionsExt): Promise<CustomerListResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n  update(request: DeepPartial<CustomerList>, options?: CallOptions & CallOptionsExt): Promise<CustomerListResponse>;\n  upsert(request: DeepPartial<CustomerList>, options?: CallOptions & CallOptionsExt): Promise<CustomerListResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/customer.proto\",\n    \"package\": \"io.restorecommerce.customer\",\n    \"dependency\": [\n      \"io/restorecommerce/resource_base.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/setting.proto\",\n      \"io/restorecommerce/options.proto\",\n      \"io/restorecommerce/user.proto\",\n      \"io/restorecommerce/contact_point.proto\",\n      \"io/restorecommerce/organization.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"CustomerList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.customer.Customer\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"CustomerListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.customer.CustomerResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"CustomerResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.customer.Customer\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Customer\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"private\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.customer.Private\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"private\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"commercial\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.customer.Commercial\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"commercial\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"public_sector\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.customer.PublicSector\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"publicSector\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"setting_id\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"settingId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"name\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"description\",\n        \"number\": 8,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"description\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"type\", \"options\": undefined },\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_name\", \"options\": undefined },\n        { \"name\": \"_description\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Private\",\n      \"field\": [{\n        \"name\": \"user_id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"userId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"contact_point_ids\",\n        \"number\": 2,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"contactPointIds\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_user_id\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Commercial\",\n      \"field\": [{\n        \"name\": \"organization_id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"organizationId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"template_ids\",\n        \"number\": 2,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"templateIds\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_organization_id\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"PublicSector\",\n      \"field\": [{\n        \"name\": \"organization_id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"organizationId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"template_ids\",\n        \"number\": 2,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"templateIds\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_organization_id\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [{\n      \"name\": \"CustomerType\",\n      \"value\": [{ \"name\": \"PRIVATE\", \"number\": 0, \"options\": undefined }, {\n        \"name\": \"COMMERCIAL\",\n        \"number\": 1,\n        \"options\": undefined,\n      }, { \"name\": \"PUBLIC_SECTOR\", \"number\": 2, \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"service\": [{\n      \"name\": \"CustomerService\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ReadRequest\",\n        \"outputType\": \".io.restorecommerce.customer.CustomerListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.customer.CustomerList\",\n        \"outputType\": \".io.restorecommerce.customer.CustomerListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.customer.CustomerList\",\n        \"outputType\": \".io.restorecommerce.customer.CustomerListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.customer.CustomerList\",\n        \"outputType\": \".io.restorecommerce.customer.CustomerListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [3, 6],\n        \"span\": [12, 0, 39],\n        \"leadingComments\": \" Used by resolvers\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0],\n        \"span\": [19, 0, 27, 1],\n        \"leadingComments\": \"\\nMicroservice definition.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 3, 2, 6],\n        \"span\": [69, 2, 27],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" display name!\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 5, 2, 1],\n        \"span\": [104, 2, 112, 4],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" list of active templates\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 6, 2, 1],\n        \"span\": [125, 2, 133, 4],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" list of active templates\\n\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.customer.CustomerType\": CustomerType,\n    \".io.restorecommerce.customer.CustomerList\": CustomerList,\n    \".io.restorecommerce.customer.CustomerListResponse\": CustomerListResponse,\n    \".io.restorecommerce.customer.CustomerResponse\": CustomerResponse,\n    \".io.restorecommerce.customer.Customer\": Customer,\n    \".io.restorecommerce.customer.Private\": Private,\n    \".io.restorecommerce.customer.Commercial\": Commercial,\n    \".io.restorecommerce.customer.PublicSector\": PublicSector,\n  },\n  dependencies: [\n    protoMetadata1,\n    protoMetadata2,\n    protoMetadata3,\n    protoMetadata4,\n    protoMetadata5,\n    protoMetadata6,\n    protoMetadata7,\n    protoMetadata8,\n    protoMetadata9,\n  ],\n  options: {\n    messages: {\n      \"Customer\": {\n        fields: {\n          \"setting_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CiMuaW8ucmVzdG9yZWNvbW1lcmNlLnNldHRpbmcuU2V0dGluZxILbWFzdGVyX2RhdGEaB3NldHRpbmciBFJlYWQqB3NldHRpbmc=\",\n                \"base64\",\n              ),\n            ),\n          },\n        },\n      },\n      \"Private\": {\n        fields: {\n          \"user_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\"Ch0uaW8ucmVzdG9yZWNvbW1lcmNlLnVzZXIuVXNlchIIaWRlbnRpdHkaBHVzZXIiBFJlYWQqBHVzZXI=\", \"base64\"),\n            ),\n          },\n          \"contact_point_ids\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"Ci4uaW8ucmVzdG9yZWNvbW1lcmNlLmNvbnRhY3RfcG9pbnQuQ29udGFjdFBvaW50EgttYXN0ZXJfZGF0YRoNY29udGFjdF9wb2ludCIEUmVhZCoNY29udGFjdFBvaW50cw==\",\n                \"base64\",\n              ),\n            ),\n          },\n        },\n      },\n      \"Commercial\": {\n        fields: {\n          \"organization_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"Ci0uaW8ucmVzdG9yZWNvbW1lcmNlLm9yZ2FuaXphdGlvbi5Pcmdhbml6YXRpb24SC21hc3Rlcl9kYXRhGgxvcmdhbml6YXRpb24iBFJlYWQqDG9yZ2FuaXphdGlvbg==\",\n                \"base64\",\n              ),\n            ),\n          },\n          \"template_ids\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CiUuaW8ucmVzdG9yZWNvbW1lcmNlLnRlbXBsYXRlLlRlbXBsYXRlEgttYXN0ZXJfZGF0YRoIdGVtcGxhdGUiBFJlYWQqCXRlbXBsYXRlcw==\",\n                \"base64\",\n              ),\n            ),\n          },\n        },\n      },\n      \"PublicSector\": {\n        fields: {\n          \"organization_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"Ci0uaW8ucmVzdG9yZWNvbW1lcmNlLm9yZ2FuaXphdGlvbi5Pcmdhbml6YXRpb24SC21hc3Rlcl9kYXRhGgxvcmdhbml6YXRpb24iBFJlYWQqDG9yZ2FuaXphdGlvbg==\",\n                \"base64\",\n              ),\n            ),\n          },\n          \"template_ids\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CiUuaW8ucmVzdG9yZWNvbW1lcmNlLnRlbXBsYXRlLlRlbXBsYXRlEgttYXN0ZXJfZGF0YRoIdGVtcGxhdGUiBFJlYWQqCXRlbXBsYXRlcw==\",\n                \"base64\",\n              ),\n            ),\n          },\n        },\n      },\n    },\n    services: { \"CustomerService\": { methods: { \"Read\": { \"is_query\": true } } } },\n  },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/file.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { Image, protoMetadata as protoMetadata1 } from \"./image\";\n\nexport const protobufPackage = \"io.restorecommerce.file\";\n\nexport interface File {\n  id?: string | undefined;\n  ordinal?: number | undefined;\n  caption?: string | undefined;\n  filename?: string | undefined;\n  contentType?: string | undefined;\n  url?: string | undefined;\n  base64?: string | undefined;\n  blob?: Buffer | undefined;\n  bytes?: number | undefined;\n  tags?: string[] | undefined;\n  thumbnail?: Image | undefined;\n}\n\nexport interface FileList {\n  items?: File[] | undefined;\n  totalCount?: number | undefined;\n}\n\nfunction createBaseFile(): File {\n  return {};\n}\n\nexport const File: MessageFns<File> = {\n  encode(message: File, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.ordinal !== undefined) {\n      writer.uint32(16).uint32(message.ordinal);\n    }\n    if (message.caption !== undefined) {\n      writer.uint32(26).string(message.caption);\n    }\n    if (message.filename !== undefined) {\n      writer.uint32(34).string(message.filename);\n    }\n    if (message.contentType !== undefined) {\n      writer.uint32(42).string(message.contentType);\n    }\n    if (message.url !== undefined) {\n      writer.uint32(50).string(message.url);\n    }\n    if (message.base64 !== undefined) {\n      writer.uint32(58).string(message.base64);\n    }\n    if (message.blob !== undefined) {\n      writer.uint32(66).bytes(message.blob);\n    }\n    if (message.bytes !== undefined) {\n      writer.uint32(72).int64(message.bytes);\n    }\n    if (message.tags !== undefined && message.tags.length !== 0) {\n      for (const v of message.tags) {\n        writer.uint32(82).string(v!);\n      }\n    }\n    if (message.thumbnail !== undefined) {\n      Image.encode(message.thumbnail, writer.uint32(90).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): File {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFile();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.ordinal = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.caption = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.filename = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.contentType = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.url = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.base64 = reader.string();\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.blob = Buffer.from(reader.bytes());\n          continue;\n        }\n        case 9: {\n          if (tag !== 72) {\n            break;\n          }\n\n          message.bytes = longToNumber(reader.int64());\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          if (message.tags === undefined) {\n            message.tags = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.tags!.push(el);\n          }\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.thumbnail = Image.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): File {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      ordinal: isSet(object.ordinal) ? globalThis.Number(object.ordinal) : undefined,\n      caption: isSet(object.caption) ? globalThis.String(object.caption) : undefined,\n      filename: isSet(object.filename) ? globalThis.String(object.filename) : undefined,\n      contentType: isSet(object.contentType) ? globalThis.String(object.contentType) : undefined,\n      url: isSet(object.url) ? globalThis.String(object.url) : undefined,\n      base64: isSet(object.base64) ? globalThis.String(object.base64) : undefined,\n      blob: isSet(object.blob) ? Buffer.from(bytesFromBase64(object.blob)) : undefined,\n      bytes: isSet(object.bytes) ? globalThis.Number(object.bytes) : undefined,\n      tags: globalThis.Array.isArray(object?.tags) ? object.tags.map((e: any) => globalThis.String(e)) : undefined,\n      thumbnail: isSet(object.thumbnail) ? Image.fromJSON(object.thumbnail) : undefined,\n    };\n  },\n\n  toJSON(message: File): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.ordinal !== undefined) {\n      obj.ordinal = Math.round(message.ordinal);\n    }\n    if (message.caption !== undefined) {\n      obj.caption = message.caption;\n    }\n    if (message.filename !== undefined) {\n      obj.filename = message.filename;\n    }\n    if (message.contentType !== undefined) {\n      obj.contentType = message.contentType;\n    }\n    if (message.url !== undefined) {\n      obj.url = message.url;\n    }\n    if (message.base64 !== undefined) {\n      obj.base64 = message.base64;\n    }\n    if (message.blob !== undefined) {\n      obj.blob = base64FromBytes(message.blob);\n    }\n    if (message.bytes !== undefined) {\n      obj.bytes = Math.round(message.bytes);\n    }\n    if (message.tags?.length) {\n      obj.tags = message.tags;\n    }\n    if (message.thumbnail !== undefined) {\n      obj.thumbnail = Image.toJSON(message.thumbnail);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<File>): File {\n    return File.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<File>): File {\n    const message = createBaseFile();\n    message.id = object.id ?? undefined;\n    message.ordinal = object.ordinal ?? undefined;\n    message.caption = object.caption ?? undefined;\n    message.filename = object.filename ?? undefined;\n    message.contentType = object.contentType ?? undefined;\n    message.url = object.url ?? undefined;\n    message.base64 = object.base64 ?? undefined;\n    message.blob = object.blob ?? undefined;\n    message.bytes = object.bytes ?? undefined;\n    message.tags = object.tags?.map((e) => e) || undefined;\n    message.thumbnail = (object.thumbnail !== undefined && object.thumbnail !== null)\n      ? Image.fromPartial(object.thumbnail)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseFileList(): FileList {\n  return {};\n}\n\nexport const FileList: MessageFns<FileList> = {\n  encode(message: FileList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        File.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FileList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFileList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = File.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FileList {\n    return {\n      items: globalThis.Array.isArray(object?.items) ? object.items.map((e: any) => File.fromJSON(e)) : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n    };\n  },\n\n  toJSON(message: FileList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => File.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FileList>): FileList {\n    return FileList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FileList>): FileList {\n    const message = createBaseFileList();\n    message.items = object.items?.map((e) => File.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    return message;\n  },\n};\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/file.proto\",\n    \"package\": \"io.restorecommerce.file\",\n    \"dependency\": [\"io/restorecommerce/image.proto\"],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"File\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"ordinal\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"ordinal\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"caption\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"caption\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"filename\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"filename\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"content_type\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"contentType\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"url\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"url\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"base64\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"base64\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"blob\",\n        \"number\": 8,\n        \"label\": 1,\n        \"type\": 12,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"blob\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"bytes\",\n        \"number\": 9,\n        \"label\": 1,\n        \"type\": 3,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"bytes\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"tags\",\n        \"number\": 10,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"tags\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"thumbnail\",\n        \"number\": 11,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.image.Image\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 7,\n        \"jsonName\": \"thumbnail\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"type\", \"options\": undefined },\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_ordinal\", \"options\": undefined },\n        { \"name\": \"_caption\", \"options\": undefined },\n        { \"name\": \"_filename\", \"options\": undefined },\n        { \"name\": \"_content_type\", \"options\": undefined },\n        { \"name\": \"_bytes\", \"options\": undefined },\n        { \"name\": \"_thumbnail\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"FileList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.file.File\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": { \"location\": [] },\n    \"syntax\": \"proto3\",\n  },\n  references: { \".io.restorecommerce.file.File\": File, \".io.restorecommerce.file.FileList\": FileList },\n  dependencies: [protoMetadata1],\n};\n\nfunction bytesFromBase64(b64: string): Uint8Array {\n  return Uint8Array.from(globalThis.Buffer.from(b64, \"base64\"));\n}\n\nfunction base64FromBytes(arr: Uint8Array): string {\n  return globalThis.Buffer.from(arr).toString(\"base64\");\n}\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction longToNumber(int64: { toString(): string }): number {\n  const num = globalThis.Number(int64.toString());\n  if (num > globalThis.Number.MAX_SAFE_INTEGER) {\n    throw new globalThis.Error(\"Value is larger than Number.MAX_SAFE_INTEGER\");\n  }\n  if (num < globalThis.Number.MIN_SAFE_INTEGER) {\n    throw new globalThis.Error(\"Value is smaller than Number.MIN_SAFE_INTEGER\");\n  }\n  return num;\n}\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/price.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { protoMetadata as protoMetadata2 } from \"./currency\";\nimport { protoMetadata as protoMetadata1, Resolver } from \"./options\";\n\nexport const protobufPackage = \"io.restorecommerce.price\";\n\nexport interface Price {\n  regularPrice?: number | undefined;\n  sale?: boolean | undefined;\n  salePrice?: number | undefined;\n  currencyId?: string | undefined;\n}\n\nfunction createBasePrice(): Price {\n  return {};\n}\n\nexport const Price: MessageFns<Price> = {\n  encode(message: Price, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.regularPrice !== undefined) {\n      writer.uint32(9).double(message.regularPrice);\n    }\n    if (message.sale !== undefined) {\n      writer.uint32(16).bool(message.sale);\n    }\n    if (message.salePrice !== undefined) {\n      writer.uint32(25).double(message.salePrice);\n    }\n    if (message.currencyId !== undefined) {\n      writer.uint32(34).string(message.currencyId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Price {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePrice();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 9) {\n            break;\n          }\n\n          message.regularPrice = reader.double();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.sale = reader.bool();\n          continue;\n        }\n        case 3: {\n          if (tag !== 25) {\n            break;\n          }\n\n          message.salePrice = reader.double();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.currencyId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Price {\n    return {\n      regularPrice: isSet(object.regularPrice) ? globalThis.Number(object.regularPrice) : undefined,\n      sale: isSet(object.sale) ? globalThis.Boolean(object.sale) : undefined,\n      salePrice: isSet(object.salePrice) ? globalThis.Number(object.salePrice) : undefined,\n      currencyId: isSet(object.currencyId) ? globalThis.String(object.currencyId) : undefined,\n    };\n  },\n\n  toJSON(message: Price): unknown {\n    const obj: any = {};\n    if (message.regularPrice !== undefined) {\n      obj.regularPrice = message.regularPrice;\n    }\n    if (message.sale !== undefined) {\n      obj.sale = message.sale;\n    }\n    if (message.salePrice !== undefined) {\n      obj.salePrice = message.salePrice;\n    }\n    if (message.currencyId !== undefined) {\n      obj.currencyId = message.currencyId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Price>): Price {\n    return Price.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Price>): Price {\n    const message = createBasePrice();\n    message.regularPrice = object.regularPrice ?? undefined;\n    message.sale = object.sale ?? undefined;\n    message.salePrice = object.salePrice ?? undefined;\n    message.currencyId = object.currencyId ?? undefined;\n    return message;\n  },\n};\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/price.proto\",\n    \"package\": \"io.restorecommerce.price\",\n    \"dependency\": [\"io/restorecommerce/options.proto\", \"io/restorecommerce/currency.proto\"],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Price\",\n      \"field\": [{\n        \"name\": \"regular_price\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 1,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"regularPrice\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"sale\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"sale\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"sale_price\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 1,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"salePrice\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"currency_id\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"currencyId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_regular_price\", \"options\": undefined }, { \"name\": \"_sale\", \"options\": undefined }, {\n        \"name\": \"_sale_price\",\n        \"options\": undefined,\n      }, { \"name\": \"_currency_id\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [3, 0],\n        \"span\": [5, 0, 42],\n        \"leadingComments\": \" Used by resolvers\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: { \".io.restorecommerce.price.Price\": Price },\n  dependencies: [protoMetadata1, protoMetadata2],\n  options: {\n    messages: {\n      \"Price\": {\n        fields: {\n          \"currency_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CiUuaW8ucmVzdG9yZWNvbW1lcmNlLmN1cnJlbmN5LkN1cnJlbmN5EgttYXN0ZXJfZGF0YRoIY3VycmVuY3kiBFJlYWQqCGN1cnJlbmN5\",\n                \"base64\",\n              ),\n            ),\n          },\n        },\n      },\n    },\n  },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/geometry.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { protoMetadata as protoMetadata1 } from \"./options\";\n\nexport const protobufPackage = \"io.restorecommerce.geometry\";\n\nexport interface Vector3D {\n  x?: number | undefined;\n  y?: number | undefined;\n  z?: number | undefined;\n}\n\nexport interface BoundingBox3D {\n  width?: number | undefined;\n  height?: number | undefined;\n  length?: number | undefined;\n}\n\nexport interface OriginBoundingBox {\n  origin?: Vector3D | undefined;\n  bbox?: BoundingBox3D | undefined;\n}\n\nfunction createBaseVector3D(): Vector3D {\n  return {};\n}\n\nexport const Vector3D: MessageFns<Vector3D> = {\n  encode(message: Vector3D, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.x !== undefined) {\n      writer.uint32(9).double(message.x);\n    }\n    if (message.y !== undefined) {\n      writer.uint32(17).double(message.y);\n    }\n    if (message.z !== undefined) {\n      writer.uint32(25).double(message.z);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Vector3D {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseVector3D();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 9) {\n            break;\n          }\n\n          message.x = reader.double();\n          continue;\n        }\n        case 2: {\n          if (tag !== 17) {\n            break;\n          }\n\n          message.y = reader.double();\n          continue;\n        }\n        case 3: {\n          if (tag !== 25) {\n            break;\n          }\n\n          message.z = reader.double();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Vector3D {\n    return {\n      x: isSet(object.x) ? globalThis.Number(object.x) : undefined,\n      y: isSet(object.y) ? globalThis.Number(object.y) : undefined,\n      z: isSet(object.z) ? globalThis.Number(object.z) : undefined,\n    };\n  },\n\n  toJSON(message: Vector3D): unknown {\n    const obj: any = {};\n    if (message.x !== undefined) {\n      obj.x = message.x;\n    }\n    if (message.y !== undefined) {\n      obj.y = message.y;\n    }\n    if (message.z !== undefined) {\n      obj.z = message.z;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Vector3D>): Vector3D {\n    return Vector3D.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Vector3D>): Vector3D {\n    const message = createBaseVector3D();\n    message.x = object.x ?? undefined;\n    message.y = object.y ?? undefined;\n    message.z = object.z ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseBoundingBox3D(): BoundingBox3D {\n  return {};\n}\n\nexport const BoundingBox3D: MessageFns<BoundingBox3D> = {\n  encode(message: BoundingBox3D, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.width !== undefined) {\n      writer.uint32(9).double(message.width);\n    }\n    if (message.height !== undefined) {\n      writer.uint32(17).double(message.height);\n    }\n    if (message.length !== undefined) {\n      writer.uint32(25).double(message.length);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): BoundingBox3D {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseBoundingBox3D();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 9) {\n            break;\n          }\n\n          message.width = reader.double();\n          continue;\n        }\n        case 2: {\n          if (tag !== 17) {\n            break;\n          }\n\n          message.height = reader.double();\n          continue;\n        }\n        case 3: {\n          if (tag !== 25) {\n            break;\n          }\n\n          message.length = reader.double();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): BoundingBox3D {\n    return {\n      width: isSet(object.width) ? globalThis.Number(object.width) : undefined,\n      height: isSet(object.height) ? globalThis.Number(object.height) : undefined,\n      length: isSet(object.length) ? globalThis.Number(object.length) : undefined,\n    };\n  },\n\n  toJSON(message: BoundingBox3D): unknown {\n    const obj: any = {};\n    if (message.width !== undefined) {\n      obj.width = message.width;\n    }\n    if (message.height !== undefined) {\n      obj.height = message.height;\n    }\n    if (message.length !== undefined) {\n      obj.length = message.length;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<BoundingBox3D>): BoundingBox3D {\n    return BoundingBox3D.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<BoundingBox3D>): BoundingBox3D {\n    const message = createBaseBoundingBox3D();\n    message.width = object.width ?? undefined;\n    message.height = object.height ?? undefined;\n    message.length = object.length ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseOriginBoundingBox(): OriginBoundingBox {\n  return {};\n}\n\nexport const OriginBoundingBox: MessageFns<OriginBoundingBox> = {\n  encode(message: OriginBoundingBox, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.origin !== undefined) {\n      Vector3D.encode(message.origin, writer.uint32(10).fork()).join();\n    }\n    if (message.bbox !== undefined) {\n      BoundingBox3D.encode(message.bbox, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OriginBoundingBox {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOriginBoundingBox();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.origin = Vector3D.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.bbox = BoundingBox3D.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OriginBoundingBox {\n    return {\n      origin: isSet(object.origin) ? Vector3D.fromJSON(object.origin) : undefined,\n      bbox: isSet(object.bbox) ? BoundingBox3D.fromJSON(object.bbox) : undefined,\n    };\n  },\n\n  toJSON(message: OriginBoundingBox): unknown {\n    const obj: any = {};\n    if (message.origin !== undefined) {\n      obj.origin = Vector3D.toJSON(message.origin);\n    }\n    if (message.bbox !== undefined) {\n      obj.bbox = BoundingBox3D.toJSON(message.bbox);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OriginBoundingBox>): OriginBoundingBox {\n    return OriginBoundingBox.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OriginBoundingBox>): OriginBoundingBox {\n    const message = createBaseOriginBoundingBox();\n    message.origin = (object.origin !== undefined && object.origin !== null)\n      ? Vector3D.fromPartial(object.origin)\n      : undefined;\n    message.bbox = (object.bbox !== undefined && object.bbox !== null)\n      ? BoundingBox3D.fromPartial(object.bbox)\n      : undefined;\n    return message;\n  },\n};\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/geometry.proto\",\n    \"package\": \"io.restorecommerce.geometry\",\n    \"dependency\": [\"io/restorecommerce/options.proto\"],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Vector3D\",\n      \"field\": [{\n        \"name\": \"x\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 1,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"x\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"y\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 1,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"y\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"z\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 1,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"z\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_x\", \"options\": undefined }, { \"name\": \"_y\", \"options\": undefined }, {\n        \"name\": \"_z\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"BoundingBox3D\",\n      \"field\": [{\n        \"name\": \"width\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 1,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"width\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"height\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 1,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"height\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"length\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 1,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"length\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_width\", \"options\": undefined }, { \"name\": \"_height\", \"options\": undefined }, {\n        \"name\": \"_length\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"OriginBoundingBox\",\n      \"field\": [{\n        \"name\": \"origin\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.geometry.Vector3D\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"origin\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"bbox\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.geometry.BoundingBox3D\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"bbox\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_origin\", \"options\": undefined }, { \"name\": \"_bbox\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": { \"location\": [] },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.geometry.Vector3D\": Vector3D,\n    \".io.restorecommerce.geometry.BoundingBox3D\": BoundingBox3D,\n    \".io.restorecommerce.geometry.OriginBoundingBox\": OriginBoundingBox,\n  },\n  dependencies: [protoMetadata1],\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/manufacturer.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { protoMetadata as protoMetadata3, Subject } from \"./auth\";\nimport { Meta, protoMetadata as protoMetadata2 } from \"./meta\";\nimport { protoMetadata as protoMetadata5 } from \"./options\";\nimport { DeleteRequest, DeleteResponse, protoMetadata as protoMetadata1, ReadRequest } from \"./resource_base\";\nimport { OperationStatus, protoMetadata as protoMetadata4, Status } from \"./status\";\n\nexport const protobufPackage = \"io.restorecommerce.manufacturer\";\n\n/** Manufacturer resource */\nexport interface Manufacturer {\n  id?: string | undefined;\n  meta?: Meta | undefined;\n  name?: string | undefined;\n  description?: string | undefined;\n}\n\nexport interface ManufacturerList {\n  items?: Manufacturer[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface ManufacturerListResponse {\n  items?: ManufacturerResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface ManufacturerResponse {\n  payload?: Manufacturer | undefined;\n  status?: Status | undefined;\n}\n\nexport interface Deleted {\n  id?: string | undefined;\n}\n\nfunction createBaseManufacturer(): Manufacturer {\n  return {};\n}\n\nexport const Manufacturer: MessageFns<Manufacturer> = {\n  encode(message: Manufacturer, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(18).fork()).join();\n    }\n    if (message.name !== undefined) {\n      writer.uint32(26).string(message.name);\n    }\n    if (message.description !== undefined) {\n      writer.uint32(34).string(message.description);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Manufacturer {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseManufacturer();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Manufacturer {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      description: isSet(object.description) ? globalThis.String(object.description) : undefined,\n    };\n  },\n\n  toJSON(message: Manufacturer): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.description !== undefined) {\n      obj.description = message.description;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Manufacturer>): Manufacturer {\n    return Manufacturer.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Manufacturer>): Manufacturer {\n    const message = createBaseManufacturer();\n    message.id = object.id ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.name = object.name ?? undefined;\n    message.description = object.description ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseManufacturerList(): ManufacturerList {\n  return {};\n}\n\nexport const ManufacturerList: MessageFns<ManufacturerList> = {\n  encode(message: ManufacturerList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        Manufacturer.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ManufacturerList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseManufacturerList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = Manufacturer.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ManufacturerList {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => Manufacturer.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: ManufacturerList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => Manufacturer.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ManufacturerList>): ManufacturerList {\n    return ManufacturerList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ManufacturerList>): ManufacturerList {\n    const message = createBaseManufacturerList();\n    message.items = object.items?.map((e) => Manufacturer.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseManufacturerListResponse(): ManufacturerListResponse {\n  return {};\n}\n\nexport const ManufacturerListResponse: MessageFns<ManufacturerListResponse> = {\n  encode(message: ManufacturerListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        ManufacturerResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ManufacturerListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseManufacturerListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = ManufacturerResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ManufacturerListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => ManufacturerResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: ManufacturerListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => ManufacturerResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ManufacturerListResponse>): ManufacturerListResponse {\n    return ManufacturerListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ManufacturerListResponse>): ManufacturerListResponse {\n    const message = createBaseManufacturerListResponse();\n    message.items = object.items?.map((e) => ManufacturerResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseManufacturerResponse(): ManufacturerResponse {\n  return {};\n}\n\nexport const ManufacturerResponse: MessageFns<ManufacturerResponse> = {\n  encode(message: ManufacturerResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      Manufacturer.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ManufacturerResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseManufacturerResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = Manufacturer.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ManufacturerResponse {\n    return {\n      payload: isSet(object.payload) ? Manufacturer.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: ManufacturerResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = Manufacturer.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ManufacturerResponse>): ManufacturerResponse {\n    return ManufacturerResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ManufacturerResponse>): ManufacturerResponse {\n    const message = createBaseManufacturerResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? Manufacturer.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseDeleted(): Deleted {\n  return {};\n}\n\nexport const Deleted: MessageFns<Deleted> = {\n  encode(message: Deleted, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Deleted {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseDeleted();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Deleted {\n    return { id: isSet(object.id) ? globalThis.String(object.id) : undefined };\n  },\n\n  toJSON(message: Deleted): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Deleted>): Deleted {\n    return Deleted.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Deleted>): Deleted {\n    const message = createBaseDeleted();\n    message.id = object.id ?? undefined;\n    return message;\n  },\n};\n\nexport type ManufacturerServiceDefinition = typeof ManufacturerServiceDefinition;\nexport const ManufacturerServiceDefinition = {\n  name: \"ManufacturerService\",\n  fullName: \"io.restorecommerce.manufacturer.ManufacturerService\",\n  methods: {\n    read: {\n      name: \"Read\",\n      requestType: ReadRequest,\n      requestStream: false,\n      responseType: ManufacturerListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    create: {\n      name: \"Create\",\n      requestType: ManufacturerList,\n      requestStream: false,\n      responseType: ManufacturerListResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n    update: {\n      name: \"Update\",\n      requestType: ManufacturerList,\n      requestStream: false,\n      responseType: ManufacturerListResponse,\n      responseStream: false,\n      options: {},\n    },\n    upsert: {\n      name: \"Upsert\",\n      requestType: ManufacturerList,\n      requestStream: false,\n      responseType: ManufacturerListResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface ManufacturerServiceImplementation<CallContextExt = {}> {\n  read(request: ReadRequest, context: CallContext & CallContextExt): Promise<DeepPartial<ManufacturerListResponse>>;\n  create(\n    request: ManufacturerList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<ManufacturerListResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n  update(\n    request: ManufacturerList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<ManufacturerListResponse>>;\n  upsert(\n    request: ManufacturerList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<ManufacturerListResponse>>;\n}\n\nexport interface ManufacturerServiceClient<CallOptionsExt = {}> {\n  read(request: DeepPartial<ReadRequest>, options?: CallOptions & CallOptionsExt): Promise<ManufacturerListResponse>;\n  create(\n    request: DeepPartial<ManufacturerList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<ManufacturerListResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n  update(\n    request: DeepPartial<ManufacturerList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<ManufacturerListResponse>;\n  upsert(\n    request: DeepPartial<ManufacturerList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<ManufacturerListResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/manufacturer.proto\",\n    \"package\": \"io.restorecommerce.manufacturer\",\n    \"dependency\": [\n      \"io/restorecommerce/resource_base.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/options.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Manufacturer\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"name\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"description\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"description\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }, { \"name\": \"_meta\", \"options\": undefined }, {\n        \"name\": \"_name\",\n        \"options\": undefined,\n      }, { \"name\": \"_description\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ManufacturerList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.manufacturer.Manufacturer\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ManufacturerListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.manufacturer.ManufacturerResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ManufacturerResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.manufacturer.Manufacturer\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Deleted\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [{\n      \"name\": \"ManufacturerService\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ReadRequest\",\n        \"outputType\": \".io.restorecommerce.manufacturer.ManufacturerListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.manufacturer.ManufacturerList\",\n        \"outputType\": \".io.restorecommerce.manufacturer.ManufacturerListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.manufacturer.ManufacturerList\",\n        \"outputType\": \".io.restorecommerce.manufacturer.ManufacturerListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.manufacturer.ManufacturerList\",\n        \"outputType\": \".io.restorecommerce.manufacturer.ManufacturerListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [4, 0],\n        \"span\": [11, 0, 16, 1],\n        \"leadingComments\": \" Manufacturer resource\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.manufacturer.Manufacturer\": Manufacturer,\n    \".io.restorecommerce.manufacturer.ManufacturerList\": ManufacturerList,\n    \".io.restorecommerce.manufacturer.ManufacturerListResponse\": ManufacturerListResponse,\n    \".io.restorecommerce.manufacturer.ManufacturerResponse\": ManufacturerResponse,\n    \".io.restorecommerce.manufacturer.Deleted\": Deleted,\n  },\n  dependencies: [protoMetadata1, protoMetadata2, protoMetadata3, protoMetadata4, protoMetadata5],\n  options: { services: { \"ManufacturerService\": { methods: { \"Read\": { \"is_query\": true } } } } },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/price_group.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { protoMetadata as protoMetadata3, Subject } from \"./auth\";\nimport { Meta, protoMetadata as protoMetadata2 } from \"./meta\";\nimport { protoMetadata as protoMetadata5 } from \"./options\";\nimport { DeleteRequest, DeleteResponse, protoMetadata as protoMetadata1, ReadRequest } from \"./resource_base\";\nimport { OperationStatus, protoMetadata as protoMetadata4, Status } from \"./status\";\n\nexport const protobufPackage = \"io.restorecommerce.price_group\";\n\n/** PriceGroup resource */\nexport interface PriceGroup {\n  id?: string | undefined;\n  meta?: Meta | undefined;\n  name?: string | undefined;\n  description?: string | undefined;\n}\n\nexport interface PriceGroupList {\n  items?: PriceGroup[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface PriceGroupListResponse {\n  items?: PriceGroupResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface PriceGroupResponse {\n  payload?: PriceGroup | undefined;\n  status?: Status | undefined;\n}\n\nexport interface Deleted {\n  id?: string | undefined;\n}\n\nfunction createBasePriceGroup(): PriceGroup {\n  return {};\n}\n\nexport const PriceGroup: MessageFns<PriceGroup> = {\n  encode(message: PriceGroup, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(18).fork()).join();\n    }\n    if (message.name !== undefined) {\n      writer.uint32(26).string(message.name);\n    }\n    if (message.description !== undefined) {\n      writer.uint32(34).string(message.description);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PriceGroup {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePriceGroup();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PriceGroup {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      description: isSet(object.description) ? globalThis.String(object.description) : undefined,\n    };\n  },\n\n  toJSON(message: PriceGroup): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.description !== undefined) {\n      obj.description = message.description;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PriceGroup>): PriceGroup {\n    return PriceGroup.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PriceGroup>): PriceGroup {\n    const message = createBasePriceGroup();\n    message.id = object.id ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.name = object.name ?? undefined;\n    message.description = object.description ?? undefined;\n    return message;\n  },\n};\n\nfunction createBasePriceGroupList(): PriceGroupList {\n  return {};\n}\n\nexport const PriceGroupList: MessageFns<PriceGroupList> = {\n  encode(message: PriceGroupList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        PriceGroup.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PriceGroupList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePriceGroupList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = PriceGroup.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PriceGroupList {\n    return {\n      items: globalThis.Array.isArray(object?.items) ? object.items.map((e: any) => PriceGroup.fromJSON(e)) : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: PriceGroupList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => PriceGroup.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PriceGroupList>): PriceGroupList {\n    return PriceGroupList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PriceGroupList>): PriceGroupList {\n    const message = createBasePriceGroupList();\n    message.items = object.items?.map((e) => PriceGroup.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBasePriceGroupListResponse(): PriceGroupListResponse {\n  return {};\n}\n\nexport const PriceGroupListResponse: MessageFns<PriceGroupListResponse> = {\n  encode(message: PriceGroupListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        PriceGroupResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PriceGroupListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePriceGroupListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = PriceGroupResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PriceGroupListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => PriceGroupResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: PriceGroupListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => PriceGroupResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PriceGroupListResponse>): PriceGroupListResponse {\n    return PriceGroupListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PriceGroupListResponse>): PriceGroupListResponse {\n    const message = createBasePriceGroupListResponse();\n    message.items = object.items?.map((e) => PriceGroupResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBasePriceGroupResponse(): PriceGroupResponse {\n  return {};\n}\n\nexport const PriceGroupResponse: MessageFns<PriceGroupResponse> = {\n  encode(message: PriceGroupResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      PriceGroup.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PriceGroupResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePriceGroupResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = PriceGroup.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PriceGroupResponse {\n    return {\n      payload: isSet(object.payload) ? PriceGroup.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: PriceGroupResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = PriceGroup.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PriceGroupResponse>): PriceGroupResponse {\n    return PriceGroupResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PriceGroupResponse>): PriceGroupResponse {\n    const message = createBasePriceGroupResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? PriceGroup.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseDeleted(): Deleted {\n  return {};\n}\n\nexport const Deleted: MessageFns<Deleted> = {\n  encode(message: Deleted, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Deleted {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseDeleted();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Deleted {\n    return { id: isSet(object.id) ? globalThis.String(object.id) : undefined };\n  },\n\n  toJSON(message: Deleted): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Deleted>): Deleted {\n    return Deleted.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Deleted>): Deleted {\n    const message = createBaseDeleted();\n    message.id = object.id ?? undefined;\n    return message;\n  },\n};\n\nexport type PriceGroupServiceDefinition = typeof PriceGroupServiceDefinition;\nexport const PriceGroupServiceDefinition = {\n  name: \"PriceGroupService\",\n  fullName: \"io.restorecommerce.price_group.PriceGroupService\",\n  methods: {\n    read: {\n      name: \"Read\",\n      requestType: ReadRequest,\n      requestStream: false,\n      responseType: PriceGroupListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    create: {\n      name: \"Create\",\n      requestType: PriceGroupList,\n      requestStream: false,\n      responseType: PriceGroupListResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n    update: {\n      name: \"Update\",\n      requestType: PriceGroupList,\n      requestStream: false,\n      responseType: PriceGroupListResponse,\n      responseStream: false,\n      options: {},\n    },\n    upsert: {\n      name: \"Upsert\",\n      requestType: PriceGroupList,\n      requestStream: false,\n      responseType: PriceGroupListResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface PriceGroupServiceImplementation<CallContextExt = {}> {\n  read(request: ReadRequest, context: CallContext & CallContextExt): Promise<DeepPartial<PriceGroupListResponse>>;\n  create(request: PriceGroupList, context: CallContext & CallContextExt): Promise<DeepPartial<PriceGroupListResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n  update(request: PriceGroupList, context: CallContext & CallContextExt): Promise<DeepPartial<PriceGroupListResponse>>;\n  upsert(request: PriceGroupList, context: CallContext & CallContextExt): Promise<DeepPartial<PriceGroupListResponse>>;\n}\n\nexport interface PriceGroupServiceClient<CallOptionsExt = {}> {\n  read(request: DeepPartial<ReadRequest>, options?: CallOptions & CallOptionsExt): Promise<PriceGroupListResponse>;\n  create(request: DeepPartial<PriceGroupList>, options?: CallOptions & CallOptionsExt): Promise<PriceGroupListResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n  update(request: DeepPartial<PriceGroupList>, options?: CallOptions & CallOptionsExt): Promise<PriceGroupListResponse>;\n  upsert(request: DeepPartial<PriceGroupList>, options?: CallOptions & CallOptionsExt): Promise<PriceGroupListResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/price_group.proto\",\n    \"package\": \"io.restorecommerce.price_group\",\n    \"dependency\": [\n      \"io/restorecommerce/resource_base.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/options.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"PriceGroup\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"name\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"description\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"description\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }, { \"name\": \"_meta\", \"options\": undefined }, {\n        \"name\": \"_name\",\n        \"options\": undefined,\n      }, { \"name\": \"_description\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"PriceGroupList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.price_group.PriceGroup\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"PriceGroupListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.price_group.PriceGroupResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"PriceGroupResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.price_group.PriceGroup\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Deleted\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [{\n      \"name\": \"PriceGroupService\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ReadRequest\",\n        \"outputType\": \".io.restorecommerce.price_group.PriceGroupListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.price_group.PriceGroupList\",\n        \"outputType\": \".io.restorecommerce.price_group.PriceGroupListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.price_group.PriceGroupList\",\n        \"outputType\": \".io.restorecommerce.price_group.PriceGroupListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.price_group.PriceGroupList\",\n        \"outputType\": \".io.restorecommerce.price_group.PriceGroupListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [4, 0],\n        \"span\": [11, 0, 16, 1],\n        \"leadingComments\": \" PriceGroup resource\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.price_group.PriceGroup\": PriceGroup,\n    \".io.restorecommerce.price_group.PriceGroupList\": PriceGroupList,\n    \".io.restorecommerce.price_group.PriceGroupListResponse\": PriceGroupListResponse,\n    \".io.restorecommerce.price_group.PriceGroupResponse\": PriceGroupResponse,\n    \".io.restorecommerce.price_group.Deleted\": Deleted,\n  },\n  dependencies: [protoMetadata1, protoMetadata2, protoMetadata3, protoMetadata4, protoMetadata5],\n  options: { services: { \"PriceGroupService\": { methods: { \"Read\": { \"is_query\": true } } } } },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/product_category.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { protoMetadata as protoMetadata4, Subject } from \"./auth\";\nimport { Image, protoMetadata as protoMetadata3 } from \"./image\";\nimport { Meta, protoMetadata as protoMetadata2 } from \"./meta\";\nimport { protoMetadata as protoMetadata6, Resolver } from \"./options\";\nimport { protoMetadata as protoMetadata7 } from \"./price_group\";\nimport { DeleteRequest, DeleteResponse, protoMetadata as protoMetadata1, ReadRequest } from \"./resource_base\";\nimport { OperationStatus, protoMetadata as protoMetadata5, Status } from \"./status\";\n\nexport const protobufPackage = \"io.restorecommerce.product_category\";\n\n/** ProductCategory resource */\nexport interface ProductCategory {\n  id?: string | undefined;\n  meta?: Meta | undefined;\n  name?: string | undefined;\n  description?: string | undefined;\n  priceGroupId?: string | undefined;\n  image?: Image | undefined;\n  parent?: Parent | undefined;\n}\n\nexport interface ProductCategoryList {\n  items?: ProductCategory[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface ProductCategoryListResponse {\n  items?: ProductCategoryResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface ProductCategoryResponse {\n  payload?: ProductCategory | undefined;\n  status?: Status | undefined;\n}\n\nexport interface Deleted {\n  id?: string | undefined;\n}\n\nexport interface Parent {\n  parentId?: string | undefined;\n}\n\nfunction createBaseProductCategory(): ProductCategory {\n  return {};\n}\n\nexport const ProductCategory: MessageFns<ProductCategory> = {\n  encode(message: ProductCategory, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(18).fork()).join();\n    }\n    if (message.name !== undefined) {\n      writer.uint32(26).string(message.name);\n    }\n    if (message.description !== undefined) {\n      writer.uint32(34).string(message.description);\n    }\n    if (message.priceGroupId !== undefined) {\n      writer.uint32(42).string(message.priceGroupId);\n    }\n    if (message.image !== undefined) {\n      Image.encode(message.image, writer.uint32(50).fork()).join();\n    }\n    if (message.parent !== undefined) {\n      Parent.encode(message.parent, writer.uint32(58).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ProductCategory {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseProductCategory();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.priceGroupId = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.image = Image.decode(reader, reader.uint32());\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.parent = Parent.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ProductCategory {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      description: isSet(object.description) ? globalThis.String(object.description) : undefined,\n      priceGroupId: isSet(object.priceGroupId) ? globalThis.String(object.priceGroupId) : undefined,\n      image: isSet(object.image) ? Image.fromJSON(object.image) : undefined,\n      parent: isSet(object.parent) ? Parent.fromJSON(object.parent) : undefined,\n    };\n  },\n\n  toJSON(message: ProductCategory): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.description !== undefined) {\n      obj.description = message.description;\n    }\n    if (message.priceGroupId !== undefined) {\n      obj.priceGroupId = message.priceGroupId;\n    }\n    if (message.image !== undefined) {\n      obj.image = Image.toJSON(message.image);\n    }\n    if (message.parent !== undefined) {\n      obj.parent = Parent.toJSON(message.parent);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ProductCategory>): ProductCategory {\n    return ProductCategory.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ProductCategory>): ProductCategory {\n    const message = createBaseProductCategory();\n    message.id = object.id ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.name = object.name ?? undefined;\n    message.description = object.description ?? undefined;\n    message.priceGroupId = object.priceGroupId ?? undefined;\n    message.image = (object.image !== undefined && object.image !== null) ? Image.fromPartial(object.image) : undefined;\n    message.parent = (object.parent !== undefined && object.parent !== null)\n      ? Parent.fromPartial(object.parent)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseProductCategoryList(): ProductCategoryList {\n  return {};\n}\n\nexport const ProductCategoryList: MessageFns<ProductCategoryList> = {\n  encode(message: ProductCategoryList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        ProductCategory.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ProductCategoryList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseProductCategoryList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = ProductCategory.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ProductCategoryList {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => ProductCategory.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: ProductCategoryList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => ProductCategory.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ProductCategoryList>): ProductCategoryList {\n    return ProductCategoryList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ProductCategoryList>): ProductCategoryList {\n    const message = createBaseProductCategoryList();\n    message.items = object.items?.map((e) => ProductCategory.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseProductCategoryListResponse(): ProductCategoryListResponse {\n  return {};\n}\n\nexport const ProductCategoryListResponse: MessageFns<ProductCategoryListResponse> = {\n  encode(message: ProductCategoryListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        ProductCategoryResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ProductCategoryListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseProductCategoryListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = ProductCategoryResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ProductCategoryListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => ProductCategoryResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: ProductCategoryListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => ProductCategoryResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ProductCategoryListResponse>): ProductCategoryListResponse {\n    return ProductCategoryListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ProductCategoryListResponse>): ProductCategoryListResponse {\n    const message = createBaseProductCategoryListResponse();\n    message.items = object.items?.map((e) => ProductCategoryResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseProductCategoryResponse(): ProductCategoryResponse {\n  return {};\n}\n\nexport const ProductCategoryResponse: MessageFns<ProductCategoryResponse> = {\n  encode(message: ProductCategoryResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      ProductCategory.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ProductCategoryResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseProductCategoryResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = ProductCategory.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ProductCategoryResponse {\n    return {\n      payload: isSet(object.payload) ? ProductCategory.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: ProductCategoryResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = ProductCategory.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ProductCategoryResponse>): ProductCategoryResponse {\n    return ProductCategoryResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ProductCategoryResponse>): ProductCategoryResponse {\n    const message = createBaseProductCategoryResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? ProductCategory.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseDeleted(): Deleted {\n  return {};\n}\n\nexport const Deleted: MessageFns<Deleted> = {\n  encode(message: Deleted, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Deleted {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseDeleted();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Deleted {\n    return { id: isSet(object.id) ? globalThis.String(object.id) : undefined };\n  },\n\n  toJSON(message: Deleted): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Deleted>): Deleted {\n    return Deleted.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Deleted>): Deleted {\n    const message = createBaseDeleted();\n    message.id = object.id ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseParent(): Parent {\n  return {};\n}\n\nexport const Parent: MessageFns<Parent> = {\n  encode(message: Parent, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.parentId !== undefined) {\n      writer.uint32(10).string(message.parentId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Parent {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseParent();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.parentId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Parent {\n    return { parentId: isSet(object.parentId) ? globalThis.String(object.parentId) : undefined };\n  },\n\n  toJSON(message: Parent): unknown {\n    const obj: any = {};\n    if (message.parentId !== undefined) {\n      obj.parentId = message.parentId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Parent>): Parent {\n    return Parent.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Parent>): Parent {\n    const message = createBaseParent();\n    message.parentId = object.parentId ?? undefined;\n    return message;\n  },\n};\n\nexport type ProductCategoryServiceDefinition = typeof ProductCategoryServiceDefinition;\nexport const ProductCategoryServiceDefinition = {\n  name: \"ProductCategoryService\",\n  fullName: \"io.restorecommerce.product_category.ProductCategoryService\",\n  methods: {\n    read: {\n      name: \"Read\",\n      requestType: ReadRequest,\n      requestStream: false,\n      responseType: ProductCategoryListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    create: {\n      name: \"Create\",\n      requestType: ProductCategoryList,\n      requestStream: false,\n      responseType: ProductCategoryListResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n    update: {\n      name: \"Update\",\n      requestType: ProductCategoryList,\n      requestStream: false,\n      responseType: ProductCategoryListResponse,\n      responseStream: false,\n      options: {},\n    },\n    upsert: {\n      name: \"Upsert\",\n      requestType: ProductCategoryList,\n      requestStream: false,\n      responseType: ProductCategoryListResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface ProductCategoryServiceImplementation<CallContextExt = {}> {\n  read(request: ReadRequest, context: CallContext & CallContextExt): Promise<DeepPartial<ProductCategoryListResponse>>;\n  create(\n    request: ProductCategoryList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<ProductCategoryListResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n  update(\n    request: ProductCategoryList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<ProductCategoryListResponse>>;\n  upsert(\n    request: ProductCategoryList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<ProductCategoryListResponse>>;\n}\n\nexport interface ProductCategoryServiceClient<CallOptionsExt = {}> {\n  read(request: DeepPartial<ReadRequest>, options?: CallOptions & CallOptionsExt): Promise<ProductCategoryListResponse>;\n  create(\n    request: DeepPartial<ProductCategoryList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<ProductCategoryListResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n  update(\n    request: DeepPartial<ProductCategoryList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<ProductCategoryListResponse>;\n  upsert(\n    request: DeepPartial<ProductCategoryList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<ProductCategoryListResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/product_category.proto\",\n    \"package\": \"io.restorecommerce.product_category\",\n    \"dependency\": [\n      \"io/restorecommerce/resource_base.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/image.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/options.proto\",\n      \"io/restorecommerce/price_group.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"ProductCategory\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"name\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"description\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"description\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"price_group_id\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"priceGroupId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"image\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.image.Image\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"image\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"parent\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.product_category.Parent\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"parent\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_name\", \"options\": undefined },\n        { \"name\": \"_description\", \"options\": undefined },\n        { \"name\": \"_price_group_id\", \"options\": undefined },\n        { \"name\": \"_image\", \"options\": undefined },\n        { \"name\": \"_parent\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ProductCategoryList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.product_category.ProductCategory\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ProductCategoryListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.product_category.ProductCategoryResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ProductCategoryResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.product_category.ProductCategory\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Deleted\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Parent\",\n      \"field\": [{\n        \"name\": \"parent_id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"parentId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_parent_id\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [{\n      \"name\": \"ProductCategoryService\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ReadRequest\",\n        \"outputType\": \".io.restorecommerce.product_category.ProductCategoryListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.product_category.ProductCategoryList\",\n        \"outputType\": \".io.restorecommerce.product_category.ProductCategoryListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.product_category.ProductCategoryList\",\n        \"outputType\": \".io.restorecommerce.product_category.ProductCategoryListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.product_category.ProductCategoryList\",\n        \"outputType\": \".io.restorecommerce.product_category.ProductCategoryListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [3, 6],\n        \"span\": [12, 0, 46],\n        \"leadingComments\": \" Used by resolvers\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 0],\n        \"span\": [15, 0, 31, 1],\n        \"leadingComments\": \" ProductCategory resource\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.product_category.ProductCategory\": ProductCategory,\n    \".io.restorecommerce.product_category.ProductCategoryList\": ProductCategoryList,\n    \".io.restorecommerce.product_category.ProductCategoryListResponse\": ProductCategoryListResponse,\n    \".io.restorecommerce.product_category.ProductCategoryResponse\": ProductCategoryResponse,\n    \".io.restorecommerce.product_category.Deleted\": Deleted,\n    \".io.restorecommerce.product_category.Parent\": Parent,\n  },\n  dependencies: [\n    protoMetadata1,\n    protoMetadata2,\n    protoMetadata3,\n    protoMetadata4,\n    protoMetadata5,\n    protoMetadata6,\n    protoMetadata7,\n  ],\n  options: {\n    messages: {\n      \"ProductCategory\": {\n        fields: {\n          \"price_group_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CiouaW8ucmVzdG9yZWNvbW1lcmNlLnByaWNlX2dyb3VwLlByaWNlR3JvdXASB2NhdGFsb2caC3ByaWNlX2dyb3VwIgRSZWFkKgpwcmljZUdyb3Vw\",\n                \"base64\",\n              ),\n            ),\n          },\n        },\n      },\n    },\n    services: { \"ProductCategoryService\": { methods: { \"Read\": { \"is_query\": true } } } },\n  },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/product_prototype.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { protoMetadata as protoMetadata3, Subject } from \"./auth\";\nimport { Meta, protoMetadata as protoMetadata2 } from \"./meta\";\nimport { protoMetadata as protoMetadata5, Resolver } from \"./options\";\nimport { protoMetadata as protoMetadata6 } from \"./product_category\";\nimport { DeleteRequest, DeleteResponse, protoMetadata as protoMetadata1, ReadRequest } from \"./resource_base\";\nimport { OperationStatus, protoMetadata as protoMetadata4, Status } from \"./status\";\n\nexport const protobufPackage = \"io.restorecommerce.product_prototype\";\n\n/** ProductPrototype resource */\nexport interface ProductPrototype {\n  id?: string | undefined;\n  meta?: Meta | undefined;\n  name?: string | undefined;\n  version?: string | undefined;\n  description?: string | undefined;\n  categoryId?: string | undefined;\n}\n\nexport interface ProductPrototypeList {\n  items?: ProductPrototype[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface ProductPrototypeListResponse {\n  items?: ProductPrototypeResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface ProductPrototypeResponse {\n  payload?: ProductPrototype | undefined;\n  status?: Status | undefined;\n}\n\nexport interface Deleted {\n  id?: string | undefined;\n}\n\nfunction createBaseProductPrototype(): ProductPrototype {\n  return {};\n}\n\nexport const ProductPrototype: MessageFns<ProductPrototype> = {\n  encode(message: ProductPrototype, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(18).fork()).join();\n    }\n    if (message.name !== undefined) {\n      writer.uint32(26).string(message.name);\n    }\n    if (message.version !== undefined) {\n      writer.uint32(34).string(message.version);\n    }\n    if (message.description !== undefined) {\n      writer.uint32(42).string(message.description);\n    }\n    if (message.categoryId !== undefined) {\n      writer.uint32(50).string(message.categoryId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ProductPrototype {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseProductPrototype();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.version = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.categoryId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ProductPrototype {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      version: isSet(object.version) ? globalThis.String(object.version) : undefined,\n      description: isSet(object.description) ? globalThis.String(object.description) : undefined,\n      categoryId: isSet(object.categoryId) ? globalThis.String(object.categoryId) : undefined,\n    };\n  },\n\n  toJSON(message: ProductPrototype): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.version !== undefined) {\n      obj.version = message.version;\n    }\n    if (message.description !== undefined) {\n      obj.description = message.description;\n    }\n    if (message.categoryId !== undefined) {\n      obj.categoryId = message.categoryId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ProductPrototype>): ProductPrototype {\n    return ProductPrototype.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ProductPrototype>): ProductPrototype {\n    const message = createBaseProductPrototype();\n    message.id = object.id ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.name = object.name ?? undefined;\n    message.version = object.version ?? undefined;\n    message.description = object.description ?? undefined;\n    message.categoryId = object.categoryId ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseProductPrototypeList(): ProductPrototypeList {\n  return {};\n}\n\nexport const ProductPrototypeList: MessageFns<ProductPrototypeList> = {\n  encode(message: ProductPrototypeList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        ProductPrototype.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ProductPrototypeList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseProductPrototypeList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = ProductPrototype.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ProductPrototypeList {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => ProductPrototype.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: ProductPrototypeList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => ProductPrototype.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ProductPrototypeList>): ProductPrototypeList {\n    return ProductPrototypeList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ProductPrototypeList>): ProductPrototypeList {\n    const message = createBaseProductPrototypeList();\n    message.items = object.items?.map((e) => ProductPrototype.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseProductPrototypeListResponse(): ProductPrototypeListResponse {\n  return {};\n}\n\nexport const ProductPrototypeListResponse: MessageFns<ProductPrototypeListResponse> = {\n  encode(message: ProductPrototypeListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        ProductPrototypeResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ProductPrototypeListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseProductPrototypeListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = ProductPrototypeResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ProductPrototypeListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => ProductPrototypeResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: ProductPrototypeListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => ProductPrototypeResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ProductPrototypeListResponse>): ProductPrototypeListResponse {\n    return ProductPrototypeListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ProductPrototypeListResponse>): ProductPrototypeListResponse {\n    const message = createBaseProductPrototypeListResponse();\n    message.items = object.items?.map((e) => ProductPrototypeResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseProductPrototypeResponse(): ProductPrototypeResponse {\n  return {};\n}\n\nexport const ProductPrototypeResponse: MessageFns<ProductPrototypeResponse> = {\n  encode(message: ProductPrototypeResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      ProductPrototype.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ProductPrototypeResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseProductPrototypeResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = ProductPrototype.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ProductPrototypeResponse {\n    return {\n      payload: isSet(object.payload) ? ProductPrototype.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: ProductPrototypeResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = ProductPrototype.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ProductPrototypeResponse>): ProductPrototypeResponse {\n    return ProductPrototypeResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ProductPrototypeResponse>): ProductPrototypeResponse {\n    const message = createBaseProductPrototypeResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? ProductPrototype.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseDeleted(): Deleted {\n  return {};\n}\n\nexport const Deleted: MessageFns<Deleted> = {\n  encode(message: Deleted, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Deleted {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseDeleted();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Deleted {\n    return { id: isSet(object.id) ? globalThis.String(object.id) : undefined };\n  },\n\n  toJSON(message: Deleted): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Deleted>): Deleted {\n    return Deleted.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Deleted>): Deleted {\n    const message = createBaseDeleted();\n    message.id = object.id ?? undefined;\n    return message;\n  },\n};\n\nexport type ProductPrototypeServiceDefinition = typeof ProductPrototypeServiceDefinition;\nexport const ProductPrototypeServiceDefinition = {\n  name: \"ProductPrototypeService\",\n  fullName: \"io.restorecommerce.product_prototype.ProductPrototypeService\",\n  methods: {\n    read: {\n      name: \"Read\",\n      requestType: ReadRequest,\n      requestStream: false,\n      responseType: ProductPrototypeListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    create: {\n      name: \"Create\",\n      requestType: ProductPrototypeList,\n      requestStream: false,\n      responseType: ProductPrototypeListResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n    update: {\n      name: \"Update\",\n      requestType: ProductPrototypeList,\n      requestStream: false,\n      responseType: ProductPrototypeListResponse,\n      responseStream: false,\n      options: {},\n    },\n    upsert: {\n      name: \"Upsert\",\n      requestType: ProductPrototypeList,\n      requestStream: false,\n      responseType: ProductPrototypeListResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface ProductPrototypeServiceImplementation<CallContextExt = {}> {\n  read(request: ReadRequest, context: CallContext & CallContextExt): Promise<DeepPartial<ProductPrototypeListResponse>>;\n  create(\n    request: ProductPrototypeList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<ProductPrototypeListResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n  update(\n    request: ProductPrototypeList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<ProductPrototypeListResponse>>;\n  upsert(\n    request: ProductPrototypeList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<ProductPrototypeListResponse>>;\n}\n\nexport interface ProductPrototypeServiceClient<CallOptionsExt = {}> {\n  read(\n    request: DeepPartial<ReadRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<ProductPrototypeListResponse>;\n  create(\n    request: DeepPartial<ProductPrototypeList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<ProductPrototypeListResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n  update(\n    request: DeepPartial<ProductPrototypeList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<ProductPrototypeListResponse>;\n  upsert(\n    request: DeepPartial<ProductPrototypeList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<ProductPrototypeListResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/product_prototype.proto\",\n    \"package\": \"io.restorecommerce.product_prototype\",\n    \"dependency\": [\n      \"io/restorecommerce/resource_base.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/options.proto\",\n      \"io/restorecommerce/product_category.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"ProductPrototype\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"name\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"version\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"version\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"description\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"description\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"category_id\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"categoryId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_name\", \"options\": undefined },\n        { \"name\": \"_version\", \"options\": undefined },\n        { \"name\": \"_description\", \"options\": undefined },\n        { \"name\": \"_category_id\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ProductPrototypeList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.product_prototype.ProductPrototype\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ProductPrototypeListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.product_prototype.ProductPrototypeResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ProductPrototypeResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.product_prototype.ProductPrototype\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Deleted\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [{\n      \"name\": \"ProductPrototypeService\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ReadRequest\",\n        \"outputType\": \".io.restorecommerce.product_prototype.ProductPrototypeListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.product_prototype.ProductPrototypeList\",\n        \"outputType\": \".io.restorecommerce.product_prototype.ProductPrototypeListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.product_prototype.ProductPrototypeList\",\n        \"outputType\": \".io.restorecommerce.product_prototype.ProductPrototypeListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.product_prototype.ProductPrototypeList\",\n        \"outputType\": \".io.restorecommerce.product_prototype.ProductPrototypeListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [3, 5],\n        \"span\": [11, 0, 51],\n        \"leadingComments\": \" For resolver\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 0],\n        \"span\": [14, 0, 29, 1],\n        \"leadingComments\": \" ProductPrototype resource\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.product_prototype.ProductPrototype\": ProductPrototype,\n    \".io.restorecommerce.product_prototype.ProductPrototypeList\": ProductPrototypeList,\n    \".io.restorecommerce.product_prototype.ProductPrototypeListResponse\": ProductPrototypeListResponse,\n    \".io.restorecommerce.product_prototype.ProductPrototypeResponse\": ProductPrototypeResponse,\n    \".io.restorecommerce.product_prototype.Deleted\": Deleted,\n  },\n  dependencies: [protoMetadata1, protoMetadata2, protoMetadata3, protoMetadata4, protoMetadata5, protoMetadata6],\n  options: {\n    messages: {\n      \"ProductPrototype\": {\n        fields: {\n          \"category_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CjQuaW8ucmVzdG9yZWNvbW1lcmNlLnByb2R1Y3RfY2F0ZWdvcnkuUHJvZHVjdENhdGVnb3J5EgdjYXRhbG9nGhBwcm9kdWN0X2NhdGVnb3J5IgRSZWFkKghjYXRlZ29yeQ==\",\n                \"base64\",\n              ),\n            ),\n          },\n        },\n      },\n    },\n    services: { \"ProductPrototypeService\": { methods: { \"Read\": { \"is_query\": true } } } },\n  },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/property.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\n\nexport const protobufPackage = \"io.restorecommerce.property\";\n\nexport interface Property {\n  id?: string | undefined;\n  value?: string | undefined;\n  unitCode?: string | undefined;\n}\n\nexport interface PropertyObj {\n  properties?: Property | undefined;\n}\n\nfunction createBaseProperty(): Property {\n  return {};\n}\n\nexport const Property: MessageFns<Property> = {\n  encode(message: Property, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.value !== undefined) {\n      writer.uint32(18).string(message.value);\n    }\n    if (message.unitCode !== undefined) {\n      writer.uint32(26).string(message.unitCode);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Property {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseProperty();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.value = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.unitCode = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Property {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      value: isSet(object.value) ? globalThis.String(object.value) : undefined,\n      unitCode: isSet(object.unitCode) ? globalThis.String(object.unitCode) : undefined,\n    };\n  },\n\n  toJSON(message: Property): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.value !== undefined) {\n      obj.value = message.value;\n    }\n    if (message.unitCode !== undefined) {\n      obj.unitCode = message.unitCode;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Property>): Property {\n    return Property.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Property>): Property {\n    const message = createBaseProperty();\n    message.id = object.id ?? undefined;\n    message.value = object.value ?? undefined;\n    message.unitCode = object.unitCode ?? undefined;\n    return message;\n  },\n};\n\nfunction createBasePropertyObj(): PropertyObj {\n  return {};\n}\n\nexport const PropertyObj: MessageFns<PropertyObj> = {\n  encode(message: PropertyObj, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.properties !== undefined) {\n      Property.encode(message.properties, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PropertyObj {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePropertyObj();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.properties = Property.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PropertyObj {\n    return { properties: isSet(object.properties) ? Property.fromJSON(object.properties) : undefined };\n  },\n\n  toJSON(message: PropertyObj): unknown {\n    const obj: any = {};\n    if (message.properties !== undefined) {\n      obj.properties = Property.toJSON(message.properties);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PropertyObj>): PropertyObj {\n    return PropertyObj.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PropertyObj>): PropertyObj {\n    const message = createBasePropertyObj();\n    message.properties = (object.properties !== undefined && object.properties !== null)\n      ? Property.fromPartial(object.properties)\n      : undefined;\n    return message;\n  },\n};\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/property.proto\",\n    \"package\": \"io.restorecommerce.property\",\n    \"dependency\": [],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Property\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"value\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"value\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"unit_code\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"unitCode\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }, { \"name\": \"_value\", \"options\": undefined }, {\n        \"name\": \"_unit_code\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"PropertyObj\",\n      \"field\": [{\n        \"name\": \"properties\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.property.Property\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"properties\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_properties\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": { \"location\": [] },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.property.Property\": Property,\n    \".io.restorecommerce.property.PropertyObj\": PropertyObj,\n  },\n  dependencies: [],\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/shop.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { protoMetadata as protoMetadata8 } from \"./address\";\nimport { protoMetadata as protoMetadata4 } from \"./attribute\";\nimport { protoMetadata as protoMetadata3, Subject } from \"./auth\";\nimport { protoMetadata as protoMetadata9 } from \"./contact_point\";\nimport { Meta, protoMetadata as protoMetadata2 } from \"./meta\";\nimport { protoMetadata as protoMetadata7, Resolver } from \"./options\";\nimport { protoMetadata as protoMetadata10 } from \"./organization\";\nimport { DeleteRequest, DeleteResponse, protoMetadata as protoMetadata1, ReadRequest } from \"./resource_base\";\nimport { protoMetadata as protoMetadata6 } from \"./setting\";\nimport { OperationStatus, protoMetadata as protoMetadata5, Status } from \"./status\";\n\nexport const protobufPackage = \"io.restorecommerce.shop\";\n\nexport interface ShopList {\n  items?: Shop[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface ShopListResponse {\n  items?: ShopResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface ShopResponse {\n  payload?: Shop | undefined;\n  status?: Status | undefined;\n}\n\nexport interface Shop {\n  id?: string | undefined;\n  meta?: Meta | undefined;\n  shopNumber?: string | undefined;\n  name?: string | undefined;\n  description?: string | undefined;\n  domains?: string[] | undefined;\n  organizationId?:\n    | string\n    | undefined;\n  /** list of active templates */\n  templateIds?: string[] | undefined;\n  settingId?: string | undefined;\n}\n\nfunction createBaseShopList(): ShopList {\n  return {};\n}\n\nexport const ShopList: MessageFns<ShopList> = {\n  encode(message: ShopList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        Shop.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ShopList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseShopList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = Shop.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ShopList {\n    return {\n      items: globalThis.Array.isArray(object?.items) ? object.items.map((e: any) => Shop.fromJSON(e)) : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: ShopList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => Shop.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ShopList>): ShopList {\n    return ShopList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ShopList>): ShopList {\n    const message = createBaseShopList();\n    message.items = object.items?.map((e) => Shop.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseShopListResponse(): ShopListResponse {\n  return {};\n}\n\nexport const ShopListResponse: MessageFns<ShopListResponse> = {\n  encode(message: ShopListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        ShopResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ShopListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseShopListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = ShopResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ShopListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => ShopResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: ShopListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => ShopResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ShopListResponse>): ShopListResponse {\n    return ShopListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ShopListResponse>): ShopListResponse {\n    const message = createBaseShopListResponse();\n    message.items = object.items?.map((e) => ShopResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseShopResponse(): ShopResponse {\n  return {};\n}\n\nexport const ShopResponse: MessageFns<ShopResponse> = {\n  encode(message: ShopResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      Shop.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ShopResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseShopResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = Shop.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ShopResponse {\n    return {\n      payload: isSet(object.payload) ? Shop.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: ShopResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = Shop.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ShopResponse>): ShopResponse {\n    return ShopResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ShopResponse>): ShopResponse {\n    const message = createBaseShopResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? Shop.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseShop(): Shop {\n  return {};\n}\n\nexport const Shop: MessageFns<Shop> = {\n  encode(message: Shop, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(18).fork()).join();\n    }\n    if (message.shopNumber !== undefined) {\n      writer.uint32(26).string(message.shopNumber);\n    }\n    if (message.name !== undefined) {\n      writer.uint32(34).string(message.name);\n    }\n    if (message.description !== undefined) {\n      writer.uint32(42).string(message.description);\n    }\n    if (message.domains !== undefined && message.domains.length !== 0) {\n      for (const v of message.domains) {\n        writer.uint32(50).string(v!);\n      }\n    }\n    if (message.organizationId !== undefined) {\n      writer.uint32(58).string(message.organizationId);\n    }\n    if (message.templateIds !== undefined && message.templateIds.length !== 0) {\n      for (const v of message.templateIds) {\n        writer.uint32(66).string(v!);\n      }\n    }\n    if (message.settingId !== undefined && message.settingId !== \"\") {\n      writer.uint32(74).string(message.settingId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Shop {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseShop();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.shopNumber = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          if (message.domains === undefined) {\n            message.domains = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.domains!.push(el);\n          }\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.organizationId = reader.string();\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          if (message.templateIds === undefined) {\n            message.templateIds = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.templateIds!.push(el);\n          }\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.settingId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Shop {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      shopNumber: isSet(object.shopNumber) ? globalThis.String(object.shopNumber) : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      description: isSet(object.description) ? globalThis.String(object.description) : undefined,\n      domains: globalThis.Array.isArray(object?.domains)\n        ? object.domains.map((e: any) => globalThis.String(e))\n        : undefined,\n      organizationId: isSet(object.organizationId) ? globalThis.String(object.organizationId) : undefined,\n      templateIds: globalThis.Array.isArray(object?.templateIds)\n        ? object.templateIds.map((e: any) => globalThis.String(e))\n        : undefined,\n      settingId: isSet(object.settingId) ? globalThis.String(object.settingId) : undefined,\n    };\n  },\n\n  toJSON(message: Shop): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.shopNumber !== undefined) {\n      obj.shopNumber = message.shopNumber;\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.description !== undefined) {\n      obj.description = message.description;\n    }\n    if (message.domains?.length) {\n      obj.domains = message.domains;\n    }\n    if (message.organizationId !== undefined) {\n      obj.organizationId = message.organizationId;\n    }\n    if (message.templateIds?.length) {\n      obj.templateIds = message.templateIds;\n    }\n    if (message.settingId !== undefined && message.settingId !== \"\") {\n      obj.settingId = message.settingId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Shop>): Shop {\n    return Shop.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Shop>): Shop {\n    const message = createBaseShop();\n    message.id = object.id ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.shopNumber = object.shopNumber ?? undefined;\n    message.name = object.name ?? undefined;\n    message.description = object.description ?? undefined;\n    message.domains = object.domains?.map((e) => e) || undefined;\n    message.organizationId = object.organizationId ?? undefined;\n    message.templateIds = object.templateIds?.map((e) => e) || undefined;\n    message.settingId = object.settingId ?? undefined;\n    return message;\n  },\n};\n\n/** Microservice definition. */\nexport type ShopServiceDefinition = typeof ShopServiceDefinition;\nexport const ShopServiceDefinition = {\n  name: \"ShopService\",\n  fullName: \"io.restorecommerce.shop.ShopService\",\n  methods: {\n    read: {\n      name: \"Read\",\n      requestType: ReadRequest,\n      requestStream: false,\n      responseType: ShopListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    create: {\n      name: \"Create\",\n      requestType: ShopList,\n      requestStream: false,\n      responseType: ShopListResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n    update: {\n      name: \"Update\",\n      requestType: ShopList,\n      requestStream: false,\n      responseType: ShopListResponse,\n      responseStream: false,\n      options: {},\n    },\n    upsert: {\n      name: \"Upsert\",\n      requestType: ShopList,\n      requestStream: false,\n      responseType: ShopListResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface ShopServiceImplementation<CallContextExt = {}> {\n  read(request: ReadRequest, context: CallContext & CallContextExt): Promise<DeepPartial<ShopListResponse>>;\n  create(request: ShopList, context: CallContext & CallContextExt): Promise<DeepPartial<ShopListResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n  update(request: ShopList, context: CallContext & CallContextExt): Promise<DeepPartial<ShopListResponse>>;\n  upsert(request: ShopList, context: CallContext & CallContextExt): Promise<DeepPartial<ShopListResponse>>;\n}\n\nexport interface ShopServiceClient<CallOptionsExt = {}> {\n  read(request: DeepPartial<ReadRequest>, options?: CallOptions & CallOptionsExt): Promise<ShopListResponse>;\n  create(request: DeepPartial<ShopList>, options?: CallOptions & CallOptionsExt): Promise<ShopListResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n  update(request: DeepPartial<ShopList>, options?: CallOptions & CallOptionsExt): Promise<ShopListResponse>;\n  upsert(request: DeepPartial<ShopList>, options?: CallOptions & CallOptionsExt): Promise<ShopListResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/shop.proto\",\n    \"package\": \"io.restorecommerce.shop\",\n    \"dependency\": [\n      \"io/restorecommerce/resource_base.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/attribute.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/setting.proto\",\n      \"io/restorecommerce/options.proto\",\n      \"io/restorecommerce/address.proto\",\n      \"io/restorecommerce/contact_point.proto\",\n      \"io/restorecommerce/organization.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"ShopList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.shop.Shop\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ShopListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.shop.ShopResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ShopResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.shop.Shop\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Shop\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"shop_number\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"shopNumber\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"name\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"description\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"description\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"domains\",\n        \"number\": 6,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"domains\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"organization_id\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"organizationId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"template_ids\",\n        \"number\": 8,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"templateIds\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"setting_id\",\n        \"number\": 9,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"settingId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_shop_number\", \"options\": undefined },\n        { \"name\": \"_name\", \"options\": undefined },\n        { \"name\": \"_description\", \"options\": undefined },\n        { \"name\": \"_organization_id\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [{\n      \"name\": \"ShopService\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ReadRequest\",\n        \"outputType\": \".io.restorecommerce.shop.ShopListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.shop.ShopList\",\n        \"outputType\": \".io.restorecommerce.shop.ShopListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.shop.ShopList\",\n        \"outputType\": \".io.restorecommerce.shop.ShopListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.shop.ShopList\",\n        \"outputType\": \".io.restorecommerce.shop.ShopListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [3, 7],\n        \"span\": [13, 0, 42],\n        \"leadingComments\": \" Used by resolvers\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0],\n        \"span\": [20, 0, 28, 1],\n        \"leadingComments\": \"\\nMicroservice definition.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 3, 2, 7],\n        \"span\": [63, 2, 71, 4],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" list of active templates\\n\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.shop.ShopList\": ShopList,\n    \".io.restorecommerce.shop.ShopListResponse\": ShopListResponse,\n    \".io.restorecommerce.shop.ShopResponse\": ShopResponse,\n    \".io.restorecommerce.shop.Shop\": Shop,\n  },\n  dependencies: [\n    protoMetadata1,\n    protoMetadata2,\n    protoMetadata3,\n    protoMetadata4,\n    protoMetadata5,\n    protoMetadata6,\n    protoMetadata7,\n    protoMetadata8,\n    protoMetadata9,\n    protoMetadata10,\n  ],\n  options: {\n    messages: {\n      \"Shop\": {\n        fields: {\n          \"organization_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"Ci0uaW8ucmVzdG9yZWNvbW1lcmNlLm9yZ2FuaXphdGlvbi5Pcmdhbml6YXRpb24SC21hc3Rlcl9kYXRhGgxvcmdhbml6YXRpb24iBFJlYWQqDG9yZ2FuaXphdGlvbg==\",\n                \"base64\",\n              ),\n            ),\n          },\n          \"template_ids\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CiUuaW8ucmVzdG9yZWNvbW1lcmNlLnRlbXBsYXRlLlRlbXBsYXRlEgttYXN0ZXJfZGF0YRoIdGVtcGxhdGUiBFJlYWQqCXRlbXBsYXRlcw==\",\n                \"base64\",\n              ),\n            ),\n          },\n          \"setting_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CiMuaW8ucmVzdG9yZWNvbW1lcmNlLnNldHRpbmcuU2V0dGluZxILbWFzdGVyX2RhdGEaB3NldHRpbmciBFJlYWQqB3NldHRpbmc=\",\n                \"base64\",\n              ),\n            ),\n          },\n        },\n      },\n    },\n    services: { \"ShopService\": { methods: { \"Read\": { \"is_query\": true } } } },\n  },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/product.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { Any, protoMetadata as protoMetadata1 } from \"../../google/protobuf/any\";\nimport { protoMetadata as protoMetadata2, Timestamp } from \"../../google/protobuf/timestamp\";\nimport { Attribute, protoMetadata as protoMetadata9 } from \"./attribute\";\nimport { protoMetadata as protoMetadata7, Subject } from \"./auth\";\nimport { File, protoMetadata as protoMetadata6 } from \"./file\";\nimport { BoundingBox3D, protoMetadata as protoMetadata10 } from \"./geometry\";\nimport { Image, protoMetadata as protoMetadata5 } from \"./image\";\nimport { protoMetadata as protoMetadata15 } from \"./manufacturer\";\nimport { Meta, protoMetadata as protoMetadata4 } from \"./meta\";\nimport { KafkaSubscription, protoMetadata as protoMetadata12, Resolver } from \"./options\";\nimport { Price, protoMetadata as protoMetadata11 } from \"./price\";\nimport { protoMetadata as protoMetadata13 } from \"./product_category\";\nimport { protoMetadata as protoMetadata14 } from \"./product_prototype\";\nimport { Property, protoMetadata as protoMetadata16 } from \"./property\";\nimport { DeleteRequest, DeleteResponse, protoMetadata as protoMetadata3, ReadRequest } from \"./resource_base\";\nimport { protoMetadata as protoMetadata17 } from \"./shop\";\nimport { OperationStatus, protoMetadata as protoMetadata8, Status } from \"./status\";\nimport { protoMetadata as protoMetadata18 } from \"./tax\";\n\nexport const protobufPackage = \"io.restorecommerce.product\";\n\nexport enum AssociationType {\n  /** MISCELLANEOUS - Use attributes then... */\n  MISCELLANEOUS = \"MISCELLANEOUS\",\n  ACCESSORY = \"ACCESSORY\",\n  RECOMMENDATION = \"RECOMMENDATION\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function associationTypeFromJSON(object: any): AssociationType {\n  switch (object) {\n    case 0:\n    case \"MISCELLANEOUS\":\n      return AssociationType.MISCELLANEOUS;\n    case 1:\n    case \"ACCESSORY\":\n      return AssociationType.ACCESSORY;\n    case 2:\n    case \"RECOMMENDATION\":\n      return AssociationType.RECOMMENDATION;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return AssociationType.UNRECOGNIZED;\n  }\n}\n\nexport function associationTypeToJSON(object: AssociationType): string {\n  switch (object) {\n    case AssociationType.MISCELLANEOUS:\n      return \"MISCELLANEOUS\";\n    case AssociationType.ACCESSORY:\n      return \"ACCESSORY\";\n    case AssociationType.RECOMMENDATION:\n      return \"RECOMMENDATION\";\n    case AssociationType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function associationTypeToNumber(object: AssociationType): number {\n  switch (object) {\n    case AssociationType.MISCELLANEOUS:\n      return 0;\n    case AssociationType.ACCESSORY:\n      return 1;\n    case AssociationType.RECOMMENDATION:\n      return 2;\n    case AssociationType.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\nexport interface Association {\n  productId?: string | undefined;\n  variantId?: string | undefined;\n  type?: AssociationType | undefined;\n  tags?: string[] | undefined;\n  data?: Any | undefined;\n  attributes?: Attribute[] | undefined;\n}\n\n/** Product resource entity */\nexport interface Product {\n  id?: string | undefined;\n  meta?: Meta | undefined;\n  product?: IndividualProduct | undefined;\n  bundle?: Bundle | undefined;\n  shopIds?: string[] | undefined;\n  active?: boolean | undefined;\n  tags?: string[] | undefined;\n  associations?: Association[] | undefined;\n  data?: Any | undefined;\n  attributes?: Attribute[] | undefined;\n}\n\nexport interface IndividualProduct {\n  name?: string | undefined;\n  description?: string | undefined;\n  manufacturerId?: string | undefined;\n  originCountryId?: string | undefined;\n  prototypeId?: string | undefined;\n  categoryId?: string | undefined;\n  taxIds?: string[] | undefined;\n  gtin?: string | undefined;\n  physical?: PhysicalProduct | undefined;\n  service?: ServiceProduct | undefined;\n  virtual?: VirtualProduct | undefined;\n}\n\nexport interface PhysicalProduct {\n  /** complete product definition - for sale */\n  variants?:\n    | PhysicalVariant[]\n    | undefined;\n  /** incomplete templates - not for sale */\n  templates?: PhysicalVariant[] | undefined;\n}\n\nexport interface ServiceProduct {\n  variants?: ServiceVariant[] | undefined;\n  templates?: ServiceVariant[] | undefined;\n}\n\nexport interface VirtualProduct {\n  variants?: VirtualVariant[] | undefined;\n  templates?: VirtualVariant[] | undefined;\n}\n\nexport interface ProductList {\n  items?: Product[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface ProductListResponse {\n  items?: ProductResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface ProductResponse {\n  payload?: Product | undefined;\n  status?: Status | undefined;\n}\n\nexport interface Package {\n  sizeInCm?: BoundingBox3D | undefined;\n  weightInKg?: number | undefined;\n  rotatable?: boolean | undefined;\n}\n\nexport interface PhysicalVariant {\n  id?: string | undefined;\n  name?: string | undefined;\n  description?: string | undefined;\n  stockLevel?: number | undefined;\n  price?: Price | undefined;\n  images?: Image[] | undefined;\n  files?: File[] | undefined;\n  stockKeepingUnit?: string | undefined;\n  parentVariantId?: string | undefined;\n  properties?: Property[] | undefined;\n  taxIds?: string[] | undefined;\n  active?:\n    | boolean\n    | undefined;\n  /** valid for sale */\n  validFrom?: Date | undefined;\n  validTo?: Date | undefined;\n  attributes?:\n    | Attribute[]\n    | undefined;\n  /** size for shipping */\n  package?: Package | undefined;\n  taricCode?: string | undefined;\n  hsCode?: string | undefined;\n  exportDescription?: string | undefined;\n}\n\nexport interface ServiceVariant {\n  id?: string | undefined;\n  name?: string | undefined;\n  description?: string | undefined;\n  stockLevel?: number | undefined;\n  price?: Price | undefined;\n  images?: Image[] | undefined;\n  files?: File[] | undefined;\n  stockKeepingUnit?: string | undefined;\n  parentVariantId?: string | undefined;\n  properties?: Property[] | undefined;\n  taxIds?: string[] | undefined;\n  active?:\n    | boolean\n    | undefined;\n  /** valid for sale */\n  validFrom?: Date | undefined;\n  validTo?: Date | undefined;\n  attributes?: Attribute[] | undefined;\n}\n\nexport interface VirtualVariant {\n  id?: string | undefined;\n  name?: string | undefined;\n  description?: string | undefined;\n  stockLevel?: number | undefined;\n  price?: Price | undefined;\n  images?: Image[] | undefined;\n  files?: File[] | undefined;\n  stockKeepingUnit?: string | undefined;\n  parentVariantId?: string | undefined;\n  properties?: Property[] | undefined;\n  taxIds?: string[] | undefined;\n  active?: boolean | undefined;\n  validFrom?: Date | undefined;\n  validTo?: Date | undefined;\n  attributes?: Attribute[] | undefined;\n}\n\nexport interface Bundle {\n  name?: string | undefined;\n  description?: string | undefined;\n  images?: Image[] | undefined;\n  products?: BundleProduct[] | undefined;\n  price?: Price | undefined;\n  prePackaged?: Package | undefined;\n  attributes?: Attribute[] | undefined;\n  validFrom?: Date | undefined;\n  validTo?: Date | undefined;\n}\n\nexport interface BundleProduct {\n  productId?: string | undefined;\n  variantId?: string | undefined;\n  quantity?:\n    | number\n    | undefined;\n  /** Price ratio in relation to the bundle price */\n  priceRatio?: number | undefined;\n}\n\nexport interface Session {\n  /** get a new id if empty */\n  id?:\n    | string\n    | undefined;\n  /** required field to start a session */\n  from?:\n    | Date\n    | undefined;\n  /** leave empty for auto max session */\n  to?: Date | undefined;\n}\n\nexport interface IndividualProductVariantRequest {\n  productId?: string | undefined;\n  variantId?: string | undefined;\n  quantity?: number | undefined;\n  session?:\n    | Session\n    | undefined;\n  /** for taxing, currency, etc.? */\n  localization?: IndividualProductVariantRequest_Localization | undefined;\n}\n\nexport interface IndividualProductVariantRequest_Localization {\n  countryId?: string | undefined;\n  localeId?: string | undefined;\n  currencyId?: string | undefined;\n}\n\nexport interface IndividualProductVariantListRequest {\n  items?: IndividualProductVariantRequest[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface IndividualProductVariant {\n  id?: string | undefined;\n  meta?: Meta | undefined;\n  variantId?: string | undefined;\n  name?: string | undefined;\n  description?: string | undefined;\n  tags?: string[] | undefined;\n  associations?: Association[] | undefined;\n  data?: Any | undefined;\n  taricCode?: string | undefined;\n  shopIds?: string[] | undefined;\n  manufacturerId?: string | undefined;\n  originCountryId?: string | undefined;\n  prototypeId?: string | undefined;\n  categoryId?: string | undefined;\n  gtin?: string | undefined;\n  stockLevel?: number | undefined;\n  price?: Price | undefined;\n  images?: Image[] | undefined;\n  files?: File[] | undefined;\n  stockKeepingUnit?: string | undefined;\n  properties?: Property[] | undefined;\n  taxIds?: string[] | undefined;\n  active?: boolean | undefined;\n  validFrom?: Date | undefined;\n  validTo?: Date | undefined;\n  attributes?:\n    | Attribute[]\n    | undefined;\n  /** size for shipping */\n  package?: Package | undefined;\n  hsCode?: string | undefined;\n}\n\nexport interface IndividualProductVariantResponse {\n  payload?: IndividualProductVariant | undefined;\n  status?: Status | undefined;\n}\n\nexport interface IndividualProductVariantListResponse {\n  items?: IndividualProductVariantResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n  session?: Session | undefined;\n}\n\nfunction createBaseAssociation(): Association {\n  return {};\n}\n\nexport const Association: MessageFns<Association> = {\n  encode(message: Association, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.productId !== undefined) {\n      writer.uint32(10).string(message.productId);\n    }\n    if (message.variantId !== undefined) {\n      writer.uint32(18).string(message.variantId);\n    }\n    if (message.type !== undefined) {\n      writer.uint32(24).int32(associationTypeToNumber(message.type));\n    }\n    if (message.tags !== undefined && message.tags.length !== 0) {\n      for (const v of message.tags) {\n        writer.uint32(34).string(v!);\n      }\n    }\n    if (message.data !== undefined) {\n      Any.encode(message.data, writer.uint32(42).fork()).join();\n    }\n    if (message.attributes !== undefined && message.attributes.length !== 0) {\n      for (const v of message.attributes) {\n        Attribute.encode(v!, writer.uint32(50).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Association {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseAssociation();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.productId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.variantId = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.type = associationTypeFromJSON(reader.int32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          if (message.tags === undefined) {\n            message.tags = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.tags!.push(el);\n          }\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.data = Any.decode(reader, reader.uint32());\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          if (message.attributes === undefined) {\n            message.attributes = [];\n          }\n          const el = Attribute.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.attributes!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Association {\n    return {\n      productId: isSet(object.productId) ? globalThis.String(object.productId) : undefined,\n      variantId: isSet(object.variantId) ? globalThis.String(object.variantId) : undefined,\n      type: isSet(object.type) ? associationTypeFromJSON(object.type) : undefined,\n      tags: globalThis.Array.isArray(object?.tags) ? object.tags.map((e: any) => globalThis.String(e)) : undefined,\n      data: isSet(object.data) ? Any.fromJSON(object.data) : undefined,\n      attributes: globalThis.Array.isArray(object?.attributes)\n        ? object.attributes.map((e: any) => Attribute.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: Association): unknown {\n    const obj: any = {};\n    if (message.productId !== undefined) {\n      obj.productId = message.productId;\n    }\n    if (message.variantId !== undefined) {\n      obj.variantId = message.variantId;\n    }\n    if (message.type !== undefined) {\n      obj.type = associationTypeToJSON(message.type);\n    }\n    if (message.tags?.length) {\n      obj.tags = message.tags;\n    }\n    if (message.data !== undefined) {\n      obj.data = Any.toJSON(message.data);\n    }\n    if (message.attributes?.length) {\n      obj.attributes = message.attributes.map((e) => Attribute.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Association>): Association {\n    return Association.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Association>): Association {\n    const message = createBaseAssociation();\n    message.productId = object.productId ?? undefined;\n    message.variantId = object.variantId ?? undefined;\n    message.type = object.type ?? undefined;\n    message.tags = object.tags?.map((e) => e) || undefined;\n    message.data = (object.data !== undefined && object.data !== null) ? Any.fromPartial(object.data) : undefined;\n    message.attributes = object.attributes?.map((e) => Attribute.fromPartial(e)) || undefined;\n    return message;\n  },\n};\n\nfunction createBaseProduct(): Product {\n  return {};\n}\n\nexport const Product: MessageFns<Product> = {\n  encode(message: Product, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(18).fork()).join();\n    }\n    if (message.product !== undefined) {\n      IndividualProduct.encode(message.product, writer.uint32(26).fork()).join();\n    }\n    if (message.bundle !== undefined) {\n      Bundle.encode(message.bundle, writer.uint32(34).fork()).join();\n    }\n    if (message.shopIds !== undefined && message.shopIds.length !== 0) {\n      for (const v of message.shopIds) {\n        writer.uint32(42).string(v!);\n      }\n    }\n    if (message.active !== undefined) {\n      writer.uint32(48).bool(message.active);\n    }\n    if (message.tags !== undefined && message.tags.length !== 0) {\n      for (const v of message.tags) {\n        writer.uint32(58).string(v!);\n      }\n    }\n    if (message.associations !== undefined && message.associations.length !== 0) {\n      for (const v of message.associations) {\n        Association.encode(v!, writer.uint32(66).fork()).join();\n      }\n    }\n    if (message.data !== undefined) {\n      Any.encode(message.data, writer.uint32(74).fork()).join();\n    }\n    if (message.attributes !== undefined && message.attributes.length !== 0) {\n      for (const v of message.attributes) {\n        Attribute.encode(v!, writer.uint32(82).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Product {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseProduct();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.product = IndividualProduct.decode(reader, reader.uint32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.bundle = Bundle.decode(reader, reader.uint32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          if (message.shopIds === undefined) {\n            message.shopIds = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.shopIds!.push(el);\n          }\n          continue;\n        }\n        case 6: {\n          if (tag !== 48) {\n            break;\n          }\n\n          message.active = reader.bool();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          if (message.tags === undefined) {\n            message.tags = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.tags!.push(el);\n          }\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          if (message.associations === undefined) {\n            message.associations = [];\n          }\n          const el = Association.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.associations!.push(el);\n          }\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.data = Any.decode(reader, reader.uint32());\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          if (message.attributes === undefined) {\n            message.attributes = [];\n          }\n          const el = Attribute.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.attributes!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Product {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      product: isSet(object.product) ? IndividualProduct.fromJSON(object.product) : undefined,\n      bundle: isSet(object.bundle) ? Bundle.fromJSON(object.bundle) : undefined,\n      shopIds: globalThis.Array.isArray(object?.shopIds)\n        ? object.shopIds.map((e: any) => globalThis.String(e))\n        : undefined,\n      active: isSet(object.active) ? globalThis.Boolean(object.active) : undefined,\n      tags: globalThis.Array.isArray(object?.tags) ? object.tags.map((e: any) => globalThis.String(e)) : undefined,\n      associations: globalThis.Array.isArray(object?.associations)\n        ? object.associations.map((e: any) => Association.fromJSON(e))\n        : undefined,\n      data: isSet(object.data) ? Any.fromJSON(object.data) : undefined,\n      attributes: globalThis.Array.isArray(object?.attributes)\n        ? object.attributes.map((e: any) => Attribute.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: Product): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.product !== undefined) {\n      obj.product = IndividualProduct.toJSON(message.product);\n    }\n    if (message.bundle !== undefined) {\n      obj.bundle = Bundle.toJSON(message.bundle);\n    }\n    if (message.shopIds?.length) {\n      obj.shopIds = message.shopIds;\n    }\n    if (message.active !== undefined) {\n      obj.active = message.active;\n    }\n    if (message.tags?.length) {\n      obj.tags = message.tags;\n    }\n    if (message.associations?.length) {\n      obj.associations = message.associations.map((e) => Association.toJSON(e));\n    }\n    if (message.data !== undefined) {\n      obj.data = Any.toJSON(message.data);\n    }\n    if (message.attributes?.length) {\n      obj.attributes = message.attributes.map((e) => Attribute.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Product>): Product {\n    return Product.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Product>): Product {\n    const message = createBaseProduct();\n    message.id = object.id ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.product = (object.product !== undefined && object.product !== null)\n      ? IndividualProduct.fromPartial(object.product)\n      : undefined;\n    message.bundle = (object.bundle !== undefined && object.bundle !== null)\n      ? Bundle.fromPartial(object.bundle)\n      : undefined;\n    message.shopIds = object.shopIds?.map((e) => e) || undefined;\n    message.active = object.active ?? undefined;\n    message.tags = object.tags?.map((e) => e) || undefined;\n    message.associations = object.associations?.map((e) => Association.fromPartial(e)) || undefined;\n    message.data = (object.data !== undefined && object.data !== null) ? Any.fromPartial(object.data) : undefined;\n    message.attributes = object.attributes?.map((e) => Attribute.fromPartial(e)) || undefined;\n    return message;\n  },\n};\n\nfunction createBaseIndividualProduct(): IndividualProduct {\n  return {};\n}\n\nexport const IndividualProduct: MessageFns<IndividualProduct> = {\n  encode(message: IndividualProduct, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.name !== undefined) {\n      writer.uint32(10).string(message.name);\n    }\n    if (message.description !== undefined) {\n      writer.uint32(18).string(message.description);\n    }\n    if (message.manufacturerId !== undefined) {\n      writer.uint32(26).string(message.manufacturerId);\n    }\n    if (message.originCountryId !== undefined) {\n      writer.uint32(34).string(message.originCountryId);\n    }\n    if (message.prototypeId !== undefined) {\n      writer.uint32(50).string(message.prototypeId);\n    }\n    if (message.categoryId !== undefined) {\n      writer.uint32(58).string(message.categoryId);\n    }\n    if (message.taxIds !== undefined && message.taxIds.length !== 0) {\n      for (const v of message.taxIds) {\n        writer.uint32(66).string(v!);\n      }\n    }\n    if (message.gtin !== undefined) {\n      writer.uint32(82).string(message.gtin);\n    }\n    if (message.physical !== undefined) {\n      PhysicalProduct.encode(message.physical, writer.uint32(90).fork()).join();\n    }\n    if (message.service !== undefined) {\n      ServiceProduct.encode(message.service, writer.uint32(98).fork()).join();\n    }\n    if (message.virtual !== undefined) {\n      VirtualProduct.encode(message.virtual, writer.uint32(106).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): IndividualProduct {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseIndividualProduct();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.manufacturerId = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.originCountryId = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.prototypeId = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.categoryId = reader.string();\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          if (message.taxIds === undefined) {\n            message.taxIds = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.taxIds!.push(el);\n          }\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.gtin = reader.string();\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.physical = PhysicalProduct.decode(reader, reader.uint32());\n          continue;\n        }\n        case 12: {\n          if (tag !== 98) {\n            break;\n          }\n\n          message.service = ServiceProduct.decode(reader, reader.uint32());\n          continue;\n        }\n        case 13: {\n          if (tag !== 106) {\n            break;\n          }\n\n          message.virtual = VirtualProduct.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): IndividualProduct {\n    return {\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      description: isSet(object.description) ? globalThis.String(object.description) : undefined,\n      manufacturerId: isSet(object.manufacturerId) ? globalThis.String(object.manufacturerId) : undefined,\n      originCountryId: isSet(object.originCountryId) ? globalThis.String(object.originCountryId) : undefined,\n      prototypeId: isSet(object.prototypeId) ? globalThis.String(object.prototypeId) : undefined,\n      categoryId: isSet(object.categoryId) ? globalThis.String(object.categoryId) : undefined,\n      taxIds: globalThis.Array.isArray(object?.taxIds)\n        ? object.taxIds.map((e: any) => globalThis.String(e))\n        : undefined,\n      gtin: isSet(object.gtin) ? globalThis.String(object.gtin) : undefined,\n      physical: isSet(object.physical) ? PhysicalProduct.fromJSON(object.physical) : undefined,\n      service: isSet(object.service) ? ServiceProduct.fromJSON(object.service) : undefined,\n      virtual: isSet(object.virtual) ? VirtualProduct.fromJSON(object.virtual) : undefined,\n    };\n  },\n\n  toJSON(message: IndividualProduct): unknown {\n    const obj: any = {};\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.description !== undefined) {\n      obj.description = message.description;\n    }\n    if (message.manufacturerId !== undefined) {\n      obj.manufacturerId = message.manufacturerId;\n    }\n    if (message.originCountryId !== undefined) {\n      obj.originCountryId = message.originCountryId;\n    }\n    if (message.prototypeId !== undefined) {\n      obj.prototypeId = message.prototypeId;\n    }\n    if (message.categoryId !== undefined) {\n      obj.categoryId = message.categoryId;\n    }\n    if (message.taxIds?.length) {\n      obj.taxIds = message.taxIds;\n    }\n    if (message.gtin !== undefined) {\n      obj.gtin = message.gtin;\n    }\n    if (message.physical !== undefined) {\n      obj.physical = PhysicalProduct.toJSON(message.physical);\n    }\n    if (message.service !== undefined) {\n      obj.service = ServiceProduct.toJSON(message.service);\n    }\n    if (message.virtual !== undefined) {\n      obj.virtual = VirtualProduct.toJSON(message.virtual);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<IndividualProduct>): IndividualProduct {\n    return IndividualProduct.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<IndividualProduct>): IndividualProduct {\n    const message = createBaseIndividualProduct();\n    message.name = object.name ?? undefined;\n    message.description = object.description ?? undefined;\n    message.manufacturerId = object.manufacturerId ?? undefined;\n    message.originCountryId = object.originCountryId ?? undefined;\n    message.prototypeId = object.prototypeId ?? undefined;\n    message.categoryId = object.categoryId ?? undefined;\n    message.taxIds = object.taxIds?.map((e) => e) || undefined;\n    message.gtin = object.gtin ?? undefined;\n    message.physical = (object.physical !== undefined && object.physical !== null)\n      ? PhysicalProduct.fromPartial(object.physical)\n      : undefined;\n    message.service = (object.service !== undefined && object.service !== null)\n      ? ServiceProduct.fromPartial(object.service)\n      : undefined;\n    message.virtual = (object.virtual !== undefined && object.virtual !== null)\n      ? VirtualProduct.fromPartial(object.virtual)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBasePhysicalProduct(): PhysicalProduct {\n  return {};\n}\n\nexport const PhysicalProduct: MessageFns<PhysicalProduct> = {\n  encode(message: PhysicalProduct, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.variants !== undefined && message.variants.length !== 0) {\n      for (const v of message.variants) {\n        PhysicalVariant.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.templates !== undefined && message.templates.length !== 0) {\n      for (const v of message.templates) {\n        PhysicalVariant.encode(v!, writer.uint32(18).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PhysicalProduct {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePhysicalProduct();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.variants === undefined) {\n            message.variants = [];\n          }\n          const el = PhysicalVariant.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.variants!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          if (message.templates === undefined) {\n            message.templates = [];\n          }\n          const el = PhysicalVariant.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.templates!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PhysicalProduct {\n    return {\n      variants: globalThis.Array.isArray(object?.variants)\n        ? object.variants.map((e: any) => PhysicalVariant.fromJSON(e))\n        : undefined,\n      templates: globalThis.Array.isArray(object?.templates)\n        ? object.templates.map((e: any) => PhysicalVariant.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: PhysicalProduct): unknown {\n    const obj: any = {};\n    if (message.variants?.length) {\n      obj.variants = message.variants.map((e) => PhysicalVariant.toJSON(e));\n    }\n    if (message.templates?.length) {\n      obj.templates = message.templates.map((e) => PhysicalVariant.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PhysicalProduct>): PhysicalProduct {\n    return PhysicalProduct.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PhysicalProduct>): PhysicalProduct {\n    const message = createBasePhysicalProduct();\n    message.variants = object.variants?.map((e) => PhysicalVariant.fromPartial(e)) || undefined;\n    message.templates = object.templates?.map((e) => PhysicalVariant.fromPartial(e)) || undefined;\n    return message;\n  },\n};\n\nfunction createBaseServiceProduct(): ServiceProduct {\n  return {};\n}\n\nexport const ServiceProduct: MessageFns<ServiceProduct> = {\n  encode(message: ServiceProduct, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.variants !== undefined && message.variants.length !== 0) {\n      for (const v of message.variants) {\n        ServiceVariant.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.templates !== undefined && message.templates.length !== 0) {\n      for (const v of message.templates) {\n        ServiceVariant.encode(v!, writer.uint32(18).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ServiceProduct {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseServiceProduct();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.variants === undefined) {\n            message.variants = [];\n          }\n          const el = ServiceVariant.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.variants!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          if (message.templates === undefined) {\n            message.templates = [];\n          }\n          const el = ServiceVariant.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.templates!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ServiceProduct {\n    return {\n      variants: globalThis.Array.isArray(object?.variants)\n        ? object.variants.map((e: any) => ServiceVariant.fromJSON(e))\n        : undefined,\n      templates: globalThis.Array.isArray(object?.templates)\n        ? object.templates.map((e: any) => ServiceVariant.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: ServiceProduct): unknown {\n    const obj: any = {};\n    if (message.variants?.length) {\n      obj.variants = message.variants.map((e) => ServiceVariant.toJSON(e));\n    }\n    if (message.templates?.length) {\n      obj.templates = message.templates.map((e) => ServiceVariant.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ServiceProduct>): ServiceProduct {\n    return ServiceProduct.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ServiceProduct>): ServiceProduct {\n    const message = createBaseServiceProduct();\n    message.variants = object.variants?.map((e) => ServiceVariant.fromPartial(e)) || undefined;\n    message.templates = object.templates?.map((e) => ServiceVariant.fromPartial(e)) || undefined;\n    return message;\n  },\n};\n\nfunction createBaseVirtualProduct(): VirtualProduct {\n  return {};\n}\n\nexport const VirtualProduct: MessageFns<VirtualProduct> = {\n  encode(message: VirtualProduct, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.variants !== undefined && message.variants.length !== 0) {\n      for (const v of message.variants) {\n        VirtualVariant.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.templates !== undefined && message.templates.length !== 0) {\n      for (const v of message.templates) {\n        VirtualVariant.encode(v!, writer.uint32(18).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): VirtualProduct {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseVirtualProduct();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.variants === undefined) {\n            message.variants = [];\n          }\n          const el = VirtualVariant.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.variants!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          if (message.templates === undefined) {\n            message.templates = [];\n          }\n          const el = VirtualVariant.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.templates!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): VirtualProduct {\n    return {\n      variants: globalThis.Array.isArray(object?.variants)\n        ? object.variants.map((e: any) => VirtualVariant.fromJSON(e))\n        : undefined,\n      templates: globalThis.Array.isArray(object?.templates)\n        ? object.templates.map((e: any) => VirtualVariant.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: VirtualProduct): unknown {\n    const obj: any = {};\n    if (message.variants?.length) {\n      obj.variants = message.variants.map((e) => VirtualVariant.toJSON(e));\n    }\n    if (message.templates?.length) {\n      obj.templates = message.templates.map((e) => VirtualVariant.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<VirtualProduct>): VirtualProduct {\n    return VirtualProduct.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<VirtualProduct>): VirtualProduct {\n    const message = createBaseVirtualProduct();\n    message.variants = object.variants?.map((e) => VirtualVariant.fromPartial(e)) || undefined;\n    message.templates = object.templates?.map((e) => VirtualVariant.fromPartial(e)) || undefined;\n    return message;\n  },\n};\n\nfunction createBaseProductList(): ProductList {\n  return {};\n}\n\nexport const ProductList: MessageFns<ProductList> = {\n  encode(message: ProductList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        Product.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ProductList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseProductList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = Product.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ProductList {\n    return {\n      items: globalThis.Array.isArray(object?.items) ? object.items.map((e: any) => Product.fromJSON(e)) : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: ProductList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => Product.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ProductList>): ProductList {\n    return ProductList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ProductList>): ProductList {\n    const message = createBaseProductList();\n    message.items = object.items?.map((e) => Product.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseProductListResponse(): ProductListResponse {\n  return {};\n}\n\nexport const ProductListResponse: MessageFns<ProductListResponse> = {\n  encode(message: ProductListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        ProductResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ProductListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseProductListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = ProductResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ProductListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => ProductResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: ProductListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => ProductResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ProductListResponse>): ProductListResponse {\n    return ProductListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ProductListResponse>): ProductListResponse {\n    const message = createBaseProductListResponse();\n    message.items = object.items?.map((e) => ProductResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseProductResponse(): ProductResponse {\n  return {};\n}\n\nexport const ProductResponse: MessageFns<ProductResponse> = {\n  encode(message: ProductResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      Product.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ProductResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseProductResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = Product.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ProductResponse {\n    return {\n      payload: isSet(object.payload) ? Product.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: ProductResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = Product.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ProductResponse>): ProductResponse {\n    return ProductResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ProductResponse>): ProductResponse {\n    const message = createBaseProductResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? Product.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBasePackage(): Package {\n  return {};\n}\n\nexport const Package: MessageFns<Package> = {\n  encode(message: Package, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.sizeInCm !== undefined) {\n      BoundingBox3D.encode(message.sizeInCm, writer.uint32(10).fork()).join();\n    }\n    if (message.weightInKg !== undefined) {\n      writer.uint32(17).double(message.weightInKg);\n    }\n    if (message.rotatable !== undefined) {\n      writer.uint32(24).bool(message.rotatable);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Package {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePackage();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.sizeInCm = BoundingBox3D.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 17) {\n            break;\n          }\n\n          message.weightInKg = reader.double();\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.rotatable = reader.bool();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Package {\n    return {\n      sizeInCm: isSet(object.sizeInCm) ? BoundingBox3D.fromJSON(object.sizeInCm) : undefined,\n      weightInKg: isSet(object.weightInKg) ? globalThis.Number(object.weightInKg) : undefined,\n      rotatable: isSet(object.rotatable) ? globalThis.Boolean(object.rotatable) : undefined,\n    };\n  },\n\n  toJSON(message: Package): unknown {\n    const obj: any = {};\n    if (message.sizeInCm !== undefined) {\n      obj.sizeInCm = BoundingBox3D.toJSON(message.sizeInCm);\n    }\n    if (message.weightInKg !== undefined) {\n      obj.weightInKg = message.weightInKg;\n    }\n    if (message.rotatable !== undefined) {\n      obj.rotatable = message.rotatable;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Package>): Package {\n    return Package.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Package>): Package {\n    const message = createBasePackage();\n    message.sizeInCm = (object.sizeInCm !== undefined && object.sizeInCm !== null)\n      ? BoundingBox3D.fromPartial(object.sizeInCm)\n      : undefined;\n    message.weightInKg = object.weightInKg ?? undefined;\n    message.rotatable = object.rotatable ?? undefined;\n    return message;\n  },\n};\n\nfunction createBasePhysicalVariant(): PhysicalVariant {\n  return {};\n}\n\nexport const PhysicalVariant: MessageFns<PhysicalVariant> = {\n  encode(message: PhysicalVariant, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.name !== undefined) {\n      writer.uint32(18).string(message.name);\n    }\n    if (message.description !== undefined) {\n      writer.uint32(26).string(message.description);\n    }\n    if (message.stockLevel !== undefined) {\n      writer.uint32(32).int32(message.stockLevel);\n    }\n    if (message.price !== undefined) {\n      Price.encode(message.price, writer.uint32(42).fork()).join();\n    }\n    if (message.images !== undefined && message.images.length !== 0) {\n      for (const v of message.images) {\n        Image.encode(v!, writer.uint32(50).fork()).join();\n      }\n    }\n    if (message.files !== undefined && message.files.length !== 0) {\n      for (const v of message.files) {\n        File.encode(v!, writer.uint32(58).fork()).join();\n      }\n    }\n    if (message.stockKeepingUnit !== undefined) {\n      writer.uint32(66).string(message.stockKeepingUnit);\n    }\n    if (message.parentVariantId !== undefined) {\n      writer.uint32(74).string(message.parentVariantId);\n    }\n    if (message.properties !== undefined && message.properties.length !== 0) {\n      for (const v of message.properties) {\n        Property.encode(v!, writer.uint32(82).fork()).join();\n      }\n    }\n    if (message.taxIds !== undefined && message.taxIds.length !== 0) {\n      for (const v of message.taxIds) {\n        writer.uint32(90).string(v!);\n      }\n    }\n    if (message.active !== undefined) {\n      writer.uint32(96).bool(message.active);\n    }\n    if (message.validFrom !== undefined) {\n      Timestamp.encode(toTimestamp(message.validFrom), writer.uint32(106).fork()).join();\n    }\n    if (message.validTo !== undefined) {\n      Timestamp.encode(toTimestamp(message.validTo), writer.uint32(114).fork()).join();\n    }\n    if (message.attributes !== undefined && message.attributes.length !== 0) {\n      for (const v of message.attributes) {\n        Attribute.encode(v!, writer.uint32(122).fork()).join();\n      }\n    }\n    if (message.package !== undefined) {\n      Package.encode(message.package, writer.uint32(130).fork()).join();\n    }\n    if (message.taricCode !== undefined) {\n      writer.uint32(138).string(message.taricCode);\n    }\n    if (message.hsCode !== undefined) {\n      writer.uint32(146).string(message.hsCode);\n    }\n    if (message.exportDescription !== undefined) {\n      writer.uint32(154).string(message.exportDescription);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PhysicalVariant {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePhysicalVariant();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 32) {\n            break;\n          }\n\n          message.stockLevel = reader.int32();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.price = Price.decode(reader, reader.uint32());\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          if (message.images === undefined) {\n            message.images = [];\n          }\n          const el = Image.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.images!.push(el);\n          }\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          if (message.files === undefined) {\n            message.files = [];\n          }\n          const el = File.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.files!.push(el);\n          }\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.stockKeepingUnit = reader.string();\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.parentVariantId = reader.string();\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          if (message.properties === undefined) {\n            message.properties = [];\n          }\n          const el = Property.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.properties!.push(el);\n          }\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          if (message.taxIds === undefined) {\n            message.taxIds = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.taxIds!.push(el);\n          }\n          continue;\n        }\n        case 12: {\n          if (tag !== 96) {\n            break;\n          }\n\n          message.active = reader.bool();\n          continue;\n        }\n        case 13: {\n          if (tag !== 106) {\n            break;\n          }\n\n          message.validFrom = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 14: {\n          if (tag !== 114) {\n            break;\n          }\n\n          message.validTo = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 15: {\n          if (tag !== 122) {\n            break;\n          }\n\n          if (message.attributes === undefined) {\n            message.attributes = [];\n          }\n          const el = Attribute.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.attributes!.push(el);\n          }\n          continue;\n        }\n        case 16: {\n          if (tag !== 130) {\n            break;\n          }\n\n          message.package = Package.decode(reader, reader.uint32());\n          continue;\n        }\n        case 17: {\n          if (tag !== 138) {\n            break;\n          }\n\n          message.taricCode = reader.string();\n          continue;\n        }\n        case 18: {\n          if (tag !== 146) {\n            break;\n          }\n\n          message.hsCode = reader.string();\n          continue;\n        }\n        case 19: {\n          if (tag !== 154) {\n            break;\n          }\n\n          message.exportDescription = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PhysicalVariant {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      description: isSet(object.description) ? globalThis.String(object.description) : undefined,\n      stockLevel: isSet(object.stockLevel) ? globalThis.Number(object.stockLevel) : undefined,\n      price: isSet(object.price) ? Price.fromJSON(object.price) : undefined,\n      images: globalThis.Array.isArray(object?.images) ? object.images.map((e: any) => Image.fromJSON(e)) : undefined,\n      files: globalThis.Array.isArray(object?.files) ? object.files.map((e: any) => File.fromJSON(e)) : undefined,\n      stockKeepingUnit: isSet(object.stockKeepingUnit) ? globalThis.String(object.stockKeepingUnit) : undefined,\n      parentVariantId: isSet(object.parentVariantId) ? globalThis.String(object.parentVariantId) : undefined,\n      properties: globalThis.Array.isArray(object?.properties)\n        ? object.properties.map((e: any) => Property.fromJSON(e))\n        : undefined,\n      taxIds: globalThis.Array.isArray(object?.taxIds)\n        ? object.taxIds.map((e: any) => globalThis.String(e))\n        : undefined,\n      active: isSet(object.active) ? globalThis.Boolean(object.active) : undefined,\n      validFrom: isSet(object.validFrom) ? fromJsonTimestamp(object.validFrom) : undefined,\n      validTo: isSet(object.validTo) ? fromJsonTimestamp(object.validTo) : undefined,\n      attributes: globalThis.Array.isArray(object?.attributes)\n        ? object.attributes.map((e: any) => Attribute.fromJSON(e))\n        : undefined,\n      package: isSet(object.package) ? Package.fromJSON(object.package) : undefined,\n      taricCode: isSet(object.taricCode) ? globalThis.String(object.taricCode) : undefined,\n      hsCode: isSet(object.hsCode) ? globalThis.String(object.hsCode) : undefined,\n      exportDescription: isSet(object.exportDescription) ? globalThis.String(object.exportDescription) : undefined,\n    };\n  },\n\n  toJSON(message: PhysicalVariant): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.description !== undefined) {\n      obj.description = message.description;\n    }\n    if (message.stockLevel !== undefined) {\n      obj.stockLevel = Math.round(message.stockLevel);\n    }\n    if (message.price !== undefined) {\n      obj.price = Price.toJSON(message.price);\n    }\n    if (message.images?.length) {\n      obj.images = message.images.map((e) => Image.toJSON(e));\n    }\n    if (message.files?.length) {\n      obj.files = message.files.map((e) => File.toJSON(e));\n    }\n    if (message.stockKeepingUnit !== undefined) {\n      obj.stockKeepingUnit = message.stockKeepingUnit;\n    }\n    if (message.parentVariantId !== undefined) {\n      obj.parentVariantId = message.parentVariantId;\n    }\n    if (message.properties?.length) {\n      obj.properties = message.properties.map((e) => Property.toJSON(e));\n    }\n    if (message.taxIds?.length) {\n      obj.taxIds = message.taxIds;\n    }\n    if (message.active !== undefined) {\n      obj.active = message.active;\n    }\n    if (message.validFrom !== undefined) {\n      obj.validFrom = message.validFrom.toISOString();\n    }\n    if (message.validTo !== undefined) {\n      obj.validTo = message.validTo.toISOString();\n    }\n    if (message.attributes?.length) {\n      obj.attributes = message.attributes.map((e) => Attribute.toJSON(e));\n    }\n    if (message.package !== undefined) {\n      obj.package = Package.toJSON(message.package);\n    }\n    if (message.taricCode !== undefined) {\n      obj.taricCode = message.taricCode;\n    }\n    if (message.hsCode !== undefined) {\n      obj.hsCode = message.hsCode;\n    }\n    if (message.exportDescription !== undefined) {\n      obj.exportDescription = message.exportDescription;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PhysicalVariant>): PhysicalVariant {\n    return PhysicalVariant.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PhysicalVariant>): PhysicalVariant {\n    const message = createBasePhysicalVariant();\n    message.id = object.id ?? undefined;\n    message.name = object.name ?? undefined;\n    message.description = object.description ?? undefined;\n    message.stockLevel = object.stockLevel ?? undefined;\n    message.price = (object.price !== undefined && object.price !== null) ? Price.fromPartial(object.price) : undefined;\n    message.images = object.images?.map((e) => Image.fromPartial(e)) || undefined;\n    message.files = object.files?.map((e) => File.fromPartial(e)) || undefined;\n    message.stockKeepingUnit = object.stockKeepingUnit ?? undefined;\n    message.parentVariantId = object.parentVariantId ?? undefined;\n    message.properties = object.properties?.map((e) => Property.fromPartial(e)) || undefined;\n    message.taxIds = object.taxIds?.map((e) => e) || undefined;\n    message.active = object.active ?? undefined;\n    message.validFrom = object.validFrom ?? undefined;\n    message.validTo = object.validTo ?? undefined;\n    message.attributes = object.attributes?.map((e) => Attribute.fromPartial(e)) || undefined;\n    message.package = (object.package !== undefined && object.package !== null)\n      ? Package.fromPartial(object.package)\n      : undefined;\n    message.taricCode = object.taricCode ?? undefined;\n    message.hsCode = object.hsCode ?? undefined;\n    message.exportDescription = object.exportDescription ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseServiceVariant(): ServiceVariant {\n  return {};\n}\n\nexport const ServiceVariant: MessageFns<ServiceVariant> = {\n  encode(message: ServiceVariant, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.name !== undefined) {\n      writer.uint32(18).string(message.name);\n    }\n    if (message.description !== undefined) {\n      writer.uint32(26).string(message.description);\n    }\n    if (message.stockLevel !== undefined) {\n      writer.uint32(32).int32(message.stockLevel);\n    }\n    if (message.price !== undefined) {\n      Price.encode(message.price, writer.uint32(42).fork()).join();\n    }\n    if (message.images !== undefined && message.images.length !== 0) {\n      for (const v of message.images) {\n        Image.encode(v!, writer.uint32(50).fork()).join();\n      }\n    }\n    if (message.files !== undefined && message.files.length !== 0) {\n      for (const v of message.files) {\n        File.encode(v!, writer.uint32(58).fork()).join();\n      }\n    }\n    if (message.stockKeepingUnit !== undefined) {\n      writer.uint32(66).string(message.stockKeepingUnit);\n    }\n    if (message.parentVariantId !== undefined) {\n      writer.uint32(74).string(message.parentVariantId);\n    }\n    if (message.properties !== undefined && message.properties.length !== 0) {\n      for (const v of message.properties) {\n        Property.encode(v!, writer.uint32(82).fork()).join();\n      }\n    }\n    if (message.taxIds !== undefined && message.taxIds.length !== 0) {\n      for (const v of message.taxIds) {\n        writer.uint32(90).string(v!);\n      }\n    }\n    if (message.active !== undefined) {\n      writer.uint32(96).bool(message.active);\n    }\n    if (message.validFrom !== undefined) {\n      Timestamp.encode(toTimestamp(message.validFrom), writer.uint32(106).fork()).join();\n    }\n    if (message.validTo !== undefined) {\n      Timestamp.encode(toTimestamp(message.validTo), writer.uint32(114).fork()).join();\n    }\n    if (message.attributes !== undefined && message.attributes.length !== 0) {\n      for (const v of message.attributes) {\n        Attribute.encode(v!, writer.uint32(122).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ServiceVariant {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseServiceVariant();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 32) {\n            break;\n          }\n\n          message.stockLevel = reader.int32();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.price = Price.decode(reader, reader.uint32());\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          if (message.images === undefined) {\n            message.images = [];\n          }\n          const el = Image.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.images!.push(el);\n          }\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          if (message.files === undefined) {\n            message.files = [];\n          }\n          const el = File.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.files!.push(el);\n          }\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.stockKeepingUnit = reader.string();\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.parentVariantId = reader.string();\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          if (message.properties === undefined) {\n            message.properties = [];\n          }\n          const el = Property.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.properties!.push(el);\n          }\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          if (message.taxIds === undefined) {\n            message.taxIds = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.taxIds!.push(el);\n          }\n          continue;\n        }\n        case 12: {\n          if (tag !== 96) {\n            break;\n          }\n\n          message.active = reader.bool();\n          continue;\n        }\n        case 13: {\n          if (tag !== 106) {\n            break;\n          }\n\n          message.validFrom = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 14: {\n          if (tag !== 114) {\n            break;\n          }\n\n          message.validTo = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 15: {\n          if (tag !== 122) {\n            break;\n          }\n\n          if (message.attributes === undefined) {\n            message.attributes = [];\n          }\n          const el = Attribute.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.attributes!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ServiceVariant {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      description: isSet(object.description) ? globalThis.String(object.description) : undefined,\n      stockLevel: isSet(object.stockLevel) ? globalThis.Number(object.stockLevel) : undefined,\n      price: isSet(object.price) ? Price.fromJSON(object.price) : undefined,\n      images: globalThis.Array.isArray(object?.images) ? object.images.map((e: any) => Image.fromJSON(e)) : undefined,\n      files: globalThis.Array.isArray(object?.files) ? object.files.map((e: any) => File.fromJSON(e)) : undefined,\n      stockKeepingUnit: isSet(object.stockKeepingUnit) ? globalThis.String(object.stockKeepingUnit) : undefined,\n      parentVariantId: isSet(object.parentVariantId) ? globalThis.String(object.parentVariantId) : undefined,\n      properties: globalThis.Array.isArray(object?.properties)\n        ? object.properties.map((e: any) => Property.fromJSON(e))\n        : undefined,\n      taxIds: globalThis.Array.isArray(object?.taxIds)\n        ? object.taxIds.map((e: any) => globalThis.String(e))\n        : undefined,\n      active: isSet(object.active) ? globalThis.Boolean(object.active) : undefined,\n      validFrom: isSet(object.validFrom) ? fromJsonTimestamp(object.validFrom) : undefined,\n      validTo: isSet(object.validTo) ? fromJsonTimestamp(object.validTo) : undefined,\n      attributes: globalThis.Array.isArray(object?.attributes)\n        ? object.attributes.map((e: any) => Attribute.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: ServiceVariant): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.description !== undefined) {\n      obj.description = message.description;\n    }\n    if (message.stockLevel !== undefined) {\n      obj.stockLevel = Math.round(message.stockLevel);\n    }\n    if (message.price !== undefined) {\n      obj.price = Price.toJSON(message.price);\n    }\n    if (message.images?.length) {\n      obj.images = message.images.map((e) => Image.toJSON(e));\n    }\n    if (message.files?.length) {\n      obj.files = message.files.map((e) => File.toJSON(e));\n    }\n    if (message.stockKeepingUnit !== undefined) {\n      obj.stockKeepingUnit = message.stockKeepingUnit;\n    }\n    if (message.parentVariantId !== undefined) {\n      obj.parentVariantId = message.parentVariantId;\n    }\n    if (message.properties?.length) {\n      obj.properties = message.properties.map((e) => Property.toJSON(e));\n    }\n    if (message.taxIds?.length) {\n      obj.taxIds = message.taxIds;\n    }\n    if (message.active !== undefined) {\n      obj.active = message.active;\n    }\n    if (message.validFrom !== undefined) {\n      obj.validFrom = message.validFrom.toISOString();\n    }\n    if (message.validTo !== undefined) {\n      obj.validTo = message.validTo.toISOString();\n    }\n    if (message.attributes?.length) {\n      obj.attributes = message.attributes.map((e) => Attribute.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ServiceVariant>): ServiceVariant {\n    return ServiceVariant.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ServiceVariant>): ServiceVariant {\n    const message = createBaseServiceVariant();\n    message.id = object.id ?? undefined;\n    message.name = object.name ?? undefined;\n    message.description = object.description ?? undefined;\n    message.stockLevel = object.stockLevel ?? undefined;\n    message.price = (object.price !== undefined && object.price !== null) ? Price.fromPartial(object.price) : undefined;\n    message.images = object.images?.map((e) => Image.fromPartial(e)) || undefined;\n    message.files = object.files?.map((e) => File.fromPartial(e)) || undefined;\n    message.stockKeepingUnit = object.stockKeepingUnit ?? undefined;\n    message.parentVariantId = object.parentVariantId ?? undefined;\n    message.properties = object.properties?.map((e) => Property.fromPartial(e)) || undefined;\n    message.taxIds = object.taxIds?.map((e) => e) || undefined;\n    message.active = object.active ?? undefined;\n    message.validFrom = object.validFrom ?? undefined;\n    message.validTo = object.validTo ?? undefined;\n    message.attributes = object.attributes?.map((e) => Attribute.fromPartial(e)) || undefined;\n    return message;\n  },\n};\n\nfunction createBaseVirtualVariant(): VirtualVariant {\n  return {};\n}\n\nexport const VirtualVariant: MessageFns<VirtualVariant> = {\n  encode(message: VirtualVariant, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.name !== undefined) {\n      writer.uint32(18).string(message.name);\n    }\n    if (message.description !== undefined) {\n      writer.uint32(26).string(message.description);\n    }\n    if (message.stockLevel !== undefined) {\n      writer.uint32(32).int32(message.stockLevel);\n    }\n    if (message.price !== undefined) {\n      Price.encode(message.price, writer.uint32(42).fork()).join();\n    }\n    if (message.images !== undefined && message.images.length !== 0) {\n      for (const v of message.images) {\n        Image.encode(v!, writer.uint32(50).fork()).join();\n      }\n    }\n    if (message.files !== undefined && message.files.length !== 0) {\n      for (const v of message.files) {\n        File.encode(v!, writer.uint32(58).fork()).join();\n      }\n    }\n    if (message.stockKeepingUnit !== undefined) {\n      writer.uint32(66).string(message.stockKeepingUnit);\n    }\n    if (message.parentVariantId !== undefined) {\n      writer.uint32(74).string(message.parentVariantId);\n    }\n    if (message.properties !== undefined && message.properties.length !== 0) {\n      for (const v of message.properties) {\n        Property.encode(v!, writer.uint32(82).fork()).join();\n      }\n    }\n    if (message.taxIds !== undefined && message.taxIds.length !== 0) {\n      for (const v of message.taxIds) {\n        writer.uint32(90).string(v!);\n      }\n    }\n    if (message.active !== undefined) {\n      writer.uint32(96).bool(message.active);\n    }\n    if (message.validFrom !== undefined) {\n      Timestamp.encode(toTimestamp(message.validFrom), writer.uint32(106).fork()).join();\n    }\n    if (message.validTo !== undefined) {\n      Timestamp.encode(toTimestamp(message.validTo), writer.uint32(114).fork()).join();\n    }\n    if (message.attributes !== undefined && message.attributes.length !== 0) {\n      for (const v of message.attributes) {\n        Attribute.encode(v!, writer.uint32(122).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): VirtualVariant {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseVirtualVariant();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 32) {\n            break;\n          }\n\n          message.stockLevel = reader.int32();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.price = Price.decode(reader, reader.uint32());\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          if (message.images === undefined) {\n            message.images = [];\n          }\n          const el = Image.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.images!.push(el);\n          }\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          if (message.files === undefined) {\n            message.files = [];\n          }\n          const el = File.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.files!.push(el);\n          }\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.stockKeepingUnit = reader.string();\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.parentVariantId = reader.string();\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          if (message.properties === undefined) {\n            message.properties = [];\n          }\n          const el = Property.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.properties!.push(el);\n          }\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          if (message.taxIds === undefined) {\n            message.taxIds = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.taxIds!.push(el);\n          }\n          continue;\n        }\n        case 12: {\n          if (tag !== 96) {\n            break;\n          }\n\n          message.active = reader.bool();\n          continue;\n        }\n        case 13: {\n          if (tag !== 106) {\n            break;\n          }\n\n          message.validFrom = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 14: {\n          if (tag !== 114) {\n            break;\n          }\n\n          message.validTo = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 15: {\n          if (tag !== 122) {\n            break;\n          }\n\n          if (message.attributes === undefined) {\n            message.attributes = [];\n          }\n          const el = Attribute.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.attributes!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): VirtualVariant {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      description: isSet(object.description) ? globalThis.String(object.description) : undefined,\n      stockLevel: isSet(object.stockLevel) ? globalThis.Number(object.stockLevel) : undefined,\n      price: isSet(object.price) ? Price.fromJSON(object.price) : undefined,\n      images: globalThis.Array.isArray(object?.images) ? object.images.map((e: any) => Image.fromJSON(e)) : undefined,\n      files: globalThis.Array.isArray(object?.files) ? object.files.map((e: any) => File.fromJSON(e)) : undefined,\n      stockKeepingUnit: isSet(object.stockKeepingUnit) ? globalThis.String(object.stockKeepingUnit) : undefined,\n      parentVariantId: isSet(object.parentVariantId) ? globalThis.String(object.parentVariantId) : undefined,\n      properties: globalThis.Array.isArray(object?.properties)\n        ? object.properties.map((e: any) => Property.fromJSON(e))\n        : undefined,\n      taxIds: globalThis.Array.isArray(object?.taxIds)\n        ? object.taxIds.map((e: any) => globalThis.String(e))\n        : undefined,\n      active: isSet(object.active) ? globalThis.Boolean(object.active) : undefined,\n      validFrom: isSet(object.validFrom) ? fromJsonTimestamp(object.validFrom) : undefined,\n      validTo: isSet(object.validTo) ? fromJsonTimestamp(object.validTo) : undefined,\n      attributes: globalThis.Array.isArray(object?.attributes)\n        ? object.attributes.map((e: any) => Attribute.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: VirtualVariant): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.description !== undefined) {\n      obj.description = message.description;\n    }\n    if (message.stockLevel !== undefined) {\n      obj.stockLevel = Math.round(message.stockLevel);\n    }\n    if (message.price !== undefined) {\n      obj.price = Price.toJSON(message.price);\n    }\n    if (message.images?.length) {\n      obj.images = message.images.map((e) => Image.toJSON(e));\n    }\n    if (message.files?.length) {\n      obj.files = message.files.map((e) => File.toJSON(e));\n    }\n    if (message.stockKeepingUnit !== undefined) {\n      obj.stockKeepingUnit = message.stockKeepingUnit;\n    }\n    if (message.parentVariantId !== undefined) {\n      obj.parentVariantId = message.parentVariantId;\n    }\n    if (message.properties?.length) {\n      obj.properties = message.properties.map((e) => Property.toJSON(e));\n    }\n    if (message.taxIds?.length) {\n      obj.taxIds = message.taxIds;\n    }\n    if (message.active !== undefined) {\n      obj.active = message.active;\n    }\n    if (message.validFrom !== undefined) {\n      obj.validFrom = message.validFrom.toISOString();\n    }\n    if (message.validTo !== undefined) {\n      obj.validTo = message.validTo.toISOString();\n    }\n    if (message.attributes?.length) {\n      obj.attributes = message.attributes.map((e) => Attribute.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<VirtualVariant>): VirtualVariant {\n    return VirtualVariant.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<VirtualVariant>): VirtualVariant {\n    const message = createBaseVirtualVariant();\n    message.id = object.id ?? undefined;\n    message.name = object.name ?? undefined;\n    message.description = object.description ?? undefined;\n    message.stockLevel = object.stockLevel ?? undefined;\n    message.price = (object.price !== undefined && object.price !== null) ? Price.fromPartial(object.price) : undefined;\n    message.images = object.images?.map((e) => Image.fromPartial(e)) || undefined;\n    message.files = object.files?.map((e) => File.fromPartial(e)) || undefined;\n    message.stockKeepingUnit = object.stockKeepingUnit ?? undefined;\n    message.parentVariantId = object.parentVariantId ?? undefined;\n    message.properties = object.properties?.map((e) => Property.fromPartial(e)) || undefined;\n    message.taxIds = object.taxIds?.map((e) => e) || undefined;\n    message.active = object.active ?? undefined;\n    message.validFrom = object.validFrom ?? undefined;\n    message.validTo = object.validTo ?? undefined;\n    message.attributes = object.attributes?.map((e) => Attribute.fromPartial(e)) || undefined;\n    return message;\n  },\n};\n\nfunction createBaseBundle(): Bundle {\n  return {};\n}\n\nexport const Bundle: MessageFns<Bundle> = {\n  encode(message: Bundle, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.name !== undefined) {\n      writer.uint32(10).string(message.name);\n    }\n    if (message.description !== undefined) {\n      writer.uint32(18).string(message.description);\n    }\n    if (message.images !== undefined && message.images.length !== 0) {\n      for (const v of message.images) {\n        Image.encode(v!, writer.uint32(26).fork()).join();\n      }\n    }\n    if (message.products !== undefined && message.products.length !== 0) {\n      for (const v of message.products) {\n        BundleProduct.encode(v!, writer.uint32(34).fork()).join();\n      }\n    }\n    if (message.price !== undefined) {\n      Price.encode(message.price, writer.uint32(42).fork()).join();\n    }\n    if (message.prePackaged !== undefined) {\n      Package.encode(message.prePackaged, writer.uint32(50).fork()).join();\n    }\n    if (message.attributes !== undefined && message.attributes.length !== 0) {\n      for (const v of message.attributes) {\n        Attribute.encode(v!, writer.uint32(58).fork()).join();\n      }\n    }\n    if (message.validFrom !== undefined) {\n      Timestamp.encode(toTimestamp(message.validFrom), writer.uint32(66).fork()).join();\n    }\n    if (message.validTo !== undefined) {\n      Timestamp.encode(toTimestamp(message.validTo), writer.uint32(74).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Bundle {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseBundle();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          if (message.images === undefined) {\n            message.images = [];\n          }\n          const el = Image.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.images!.push(el);\n          }\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          if (message.products === undefined) {\n            message.products = [];\n          }\n          const el = BundleProduct.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.products!.push(el);\n          }\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.price = Price.decode(reader, reader.uint32());\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.prePackaged = Package.decode(reader, reader.uint32());\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          if (message.attributes === undefined) {\n            message.attributes = [];\n          }\n          const el = Attribute.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.attributes!.push(el);\n          }\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.validFrom = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.validTo = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Bundle {\n    return {\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      description: isSet(object.description) ? globalThis.String(object.description) : undefined,\n      images: globalThis.Array.isArray(object?.images) ? object.images.map((e: any) => Image.fromJSON(e)) : undefined,\n      products: globalThis.Array.isArray(object?.products)\n        ? object.products.map((e: any) => BundleProduct.fromJSON(e))\n        : undefined,\n      price: isSet(object.price) ? Price.fromJSON(object.price) : undefined,\n      prePackaged: isSet(object.prePackaged) ? Package.fromJSON(object.prePackaged) : undefined,\n      attributes: globalThis.Array.isArray(object?.attributes)\n        ? object.attributes.map((e: any) => Attribute.fromJSON(e))\n        : undefined,\n      validFrom: isSet(object.validFrom) ? fromJsonTimestamp(object.validFrom) : undefined,\n      validTo: isSet(object.validTo) ? fromJsonTimestamp(object.validTo) : undefined,\n    };\n  },\n\n  toJSON(message: Bundle): unknown {\n    const obj: any = {};\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.description !== undefined) {\n      obj.description = message.description;\n    }\n    if (message.images?.length) {\n      obj.images = message.images.map((e) => Image.toJSON(e));\n    }\n    if (message.products?.length) {\n      obj.products = message.products.map((e) => BundleProduct.toJSON(e));\n    }\n    if (message.price !== undefined) {\n      obj.price = Price.toJSON(message.price);\n    }\n    if (message.prePackaged !== undefined) {\n      obj.prePackaged = Package.toJSON(message.prePackaged);\n    }\n    if (message.attributes?.length) {\n      obj.attributes = message.attributes.map((e) => Attribute.toJSON(e));\n    }\n    if (message.validFrom !== undefined) {\n      obj.validFrom = message.validFrom.toISOString();\n    }\n    if (message.validTo !== undefined) {\n      obj.validTo = message.validTo.toISOString();\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Bundle>): Bundle {\n    return Bundle.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Bundle>): Bundle {\n    const message = createBaseBundle();\n    message.name = object.name ?? undefined;\n    message.description = object.description ?? undefined;\n    message.images = object.images?.map((e) => Image.fromPartial(e)) || undefined;\n    message.products = object.products?.map((e) => BundleProduct.fromPartial(e)) || undefined;\n    message.price = (object.price !== undefined && object.price !== null) ? Price.fromPartial(object.price) : undefined;\n    message.prePackaged = (object.prePackaged !== undefined && object.prePackaged !== null)\n      ? Package.fromPartial(object.prePackaged)\n      : undefined;\n    message.attributes = object.attributes?.map((e) => Attribute.fromPartial(e)) || undefined;\n    message.validFrom = object.validFrom ?? undefined;\n    message.validTo = object.validTo ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseBundleProduct(): BundleProduct {\n  return {};\n}\n\nexport const BundleProduct: MessageFns<BundleProduct> = {\n  encode(message: BundleProduct, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.productId !== undefined) {\n      writer.uint32(10).string(message.productId);\n    }\n    if (message.variantId !== undefined) {\n      writer.uint32(18).string(message.variantId);\n    }\n    if (message.quantity !== undefined) {\n      writer.uint32(24).uint32(message.quantity);\n    }\n    if (message.priceRatio !== undefined) {\n      writer.uint32(33).double(message.priceRatio);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): BundleProduct {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseBundleProduct();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.productId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.variantId = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.quantity = reader.uint32();\n          continue;\n        }\n        case 4: {\n          if (tag !== 33) {\n            break;\n          }\n\n          message.priceRatio = reader.double();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): BundleProduct {\n    return {\n      productId: isSet(object.productId) ? globalThis.String(object.productId) : undefined,\n      variantId: isSet(object.variantId) ? globalThis.String(object.variantId) : undefined,\n      quantity: isSet(object.quantity) ? globalThis.Number(object.quantity) : undefined,\n      priceRatio: isSet(object.priceRatio) ? globalThis.Number(object.priceRatio) : undefined,\n    };\n  },\n\n  toJSON(message: BundleProduct): unknown {\n    const obj: any = {};\n    if (message.productId !== undefined) {\n      obj.productId = message.productId;\n    }\n    if (message.variantId !== undefined) {\n      obj.variantId = message.variantId;\n    }\n    if (message.quantity !== undefined) {\n      obj.quantity = Math.round(message.quantity);\n    }\n    if (message.priceRatio !== undefined) {\n      obj.priceRatio = message.priceRatio;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<BundleProduct>): BundleProduct {\n    return BundleProduct.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<BundleProduct>): BundleProduct {\n    const message = createBaseBundleProduct();\n    message.productId = object.productId ?? undefined;\n    message.variantId = object.variantId ?? undefined;\n    message.quantity = object.quantity ?? undefined;\n    message.priceRatio = object.priceRatio ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseSession(): Session {\n  return {};\n}\n\nexport const Session: MessageFns<Session> = {\n  encode(message: Session, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.from !== undefined) {\n      Timestamp.encode(toTimestamp(message.from), writer.uint32(18).fork()).join();\n    }\n    if (message.to !== undefined) {\n      Timestamp.encode(toTimestamp(message.to), writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Session {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseSession();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.from = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.to = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Session {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      from: isSet(object.from) ? fromJsonTimestamp(object.from) : undefined,\n      to: isSet(object.to) ? fromJsonTimestamp(object.to) : undefined,\n    };\n  },\n\n  toJSON(message: Session): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.from !== undefined) {\n      obj.from = message.from.toISOString();\n    }\n    if (message.to !== undefined) {\n      obj.to = message.to.toISOString();\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Session>): Session {\n    return Session.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Session>): Session {\n    const message = createBaseSession();\n    message.id = object.id ?? undefined;\n    message.from = object.from ?? undefined;\n    message.to = object.to ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseIndividualProductVariantRequest(): IndividualProductVariantRequest {\n  return {};\n}\n\nexport const IndividualProductVariantRequest: MessageFns<IndividualProductVariantRequest> = {\n  encode(message: IndividualProductVariantRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.productId !== undefined) {\n      writer.uint32(10).string(message.productId);\n    }\n    if (message.variantId !== undefined) {\n      writer.uint32(18).string(message.variantId);\n    }\n    if (message.quantity !== undefined) {\n      writer.uint32(24).uint32(message.quantity);\n    }\n    if (message.session !== undefined) {\n      Session.encode(message.session, writer.uint32(34).fork()).join();\n    }\n    if (message.localization !== undefined) {\n      IndividualProductVariantRequest_Localization.encode(message.localization, writer.uint32(42).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): IndividualProductVariantRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseIndividualProductVariantRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.productId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.variantId = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.quantity = reader.uint32();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.session = Session.decode(reader, reader.uint32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.localization = IndividualProductVariantRequest_Localization.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): IndividualProductVariantRequest {\n    return {\n      productId: isSet(object.productId) ? globalThis.String(object.productId) : undefined,\n      variantId: isSet(object.variantId) ? globalThis.String(object.variantId) : undefined,\n      quantity: isSet(object.quantity) ? globalThis.Number(object.quantity) : undefined,\n      session: isSet(object.session) ? Session.fromJSON(object.session) : undefined,\n      localization: isSet(object.localization)\n        ? IndividualProductVariantRequest_Localization.fromJSON(object.localization)\n        : undefined,\n    };\n  },\n\n  toJSON(message: IndividualProductVariantRequest): unknown {\n    const obj: any = {};\n    if (message.productId !== undefined) {\n      obj.productId = message.productId;\n    }\n    if (message.variantId !== undefined) {\n      obj.variantId = message.variantId;\n    }\n    if (message.quantity !== undefined) {\n      obj.quantity = Math.round(message.quantity);\n    }\n    if (message.session !== undefined) {\n      obj.session = Session.toJSON(message.session);\n    }\n    if (message.localization !== undefined) {\n      obj.localization = IndividualProductVariantRequest_Localization.toJSON(message.localization);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<IndividualProductVariantRequest>): IndividualProductVariantRequest {\n    return IndividualProductVariantRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<IndividualProductVariantRequest>): IndividualProductVariantRequest {\n    const message = createBaseIndividualProductVariantRequest();\n    message.productId = object.productId ?? undefined;\n    message.variantId = object.variantId ?? undefined;\n    message.quantity = object.quantity ?? undefined;\n    message.session = (object.session !== undefined && object.session !== null)\n      ? Session.fromPartial(object.session)\n      : undefined;\n    message.localization = (object.localization !== undefined && object.localization !== null)\n      ? IndividualProductVariantRequest_Localization.fromPartial(object.localization)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseIndividualProductVariantRequest_Localization(): IndividualProductVariantRequest_Localization {\n  return {};\n}\n\nexport const IndividualProductVariantRequest_Localization: MessageFns<IndividualProductVariantRequest_Localization> = {\n  encode(\n    message: IndividualProductVariantRequest_Localization,\n    writer: BinaryWriter = new BinaryWriter(),\n  ): BinaryWriter {\n    if (message.countryId !== undefined) {\n      writer.uint32(10).string(message.countryId);\n    }\n    if (message.localeId !== undefined) {\n      writer.uint32(18).string(message.localeId);\n    }\n    if (message.currencyId !== undefined) {\n      writer.uint32(26).string(message.currencyId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): IndividualProductVariantRequest_Localization {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseIndividualProductVariantRequest_Localization();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.countryId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.localeId = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.currencyId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): IndividualProductVariantRequest_Localization {\n    return {\n      countryId: isSet(object.countryId) ? globalThis.String(object.countryId) : undefined,\n      localeId: isSet(object.localeId) ? globalThis.String(object.localeId) : undefined,\n      currencyId: isSet(object.currencyId) ? globalThis.String(object.currencyId) : undefined,\n    };\n  },\n\n  toJSON(message: IndividualProductVariantRequest_Localization): unknown {\n    const obj: any = {};\n    if (message.countryId !== undefined) {\n      obj.countryId = message.countryId;\n    }\n    if (message.localeId !== undefined) {\n      obj.localeId = message.localeId;\n    }\n    if (message.currencyId !== undefined) {\n      obj.currencyId = message.currencyId;\n    }\n    return obj;\n  },\n\n  create(\n    base?: DeepPartial<IndividualProductVariantRequest_Localization>,\n  ): IndividualProductVariantRequest_Localization {\n    return IndividualProductVariantRequest_Localization.fromPartial(base ?? {});\n  },\n  fromPartial(\n    object: DeepPartial<IndividualProductVariantRequest_Localization>,\n  ): IndividualProductVariantRequest_Localization {\n    const message = createBaseIndividualProductVariantRequest_Localization();\n    message.countryId = object.countryId ?? undefined;\n    message.localeId = object.localeId ?? undefined;\n    message.currencyId = object.currencyId ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseIndividualProductVariantListRequest(): IndividualProductVariantListRequest {\n  return {};\n}\n\nexport const IndividualProductVariantListRequest: MessageFns<IndividualProductVariantListRequest> = {\n  encode(message: IndividualProductVariantListRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        IndividualProductVariantRequest.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): IndividualProductVariantListRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseIndividualProductVariantListRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = IndividualProductVariantRequest.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): IndividualProductVariantListRequest {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => IndividualProductVariantRequest.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: IndividualProductVariantListRequest): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => IndividualProductVariantRequest.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<IndividualProductVariantListRequest>): IndividualProductVariantListRequest {\n    return IndividualProductVariantListRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<IndividualProductVariantListRequest>): IndividualProductVariantListRequest {\n    const message = createBaseIndividualProductVariantListRequest();\n    message.items = object.items?.map((e) => IndividualProductVariantRequest.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseIndividualProductVariant(): IndividualProductVariant {\n  return {};\n}\n\nexport const IndividualProductVariant: MessageFns<IndividualProductVariant> = {\n  encode(message: IndividualProductVariant, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(18).fork()).join();\n    }\n    if (message.variantId !== undefined) {\n      writer.uint32(26).string(message.variantId);\n    }\n    if (message.name !== undefined) {\n      writer.uint32(34).string(message.name);\n    }\n    if (message.description !== undefined) {\n      writer.uint32(42).string(message.description);\n    }\n    if (message.tags !== undefined && message.tags.length !== 0) {\n      for (const v of message.tags) {\n        writer.uint32(50).string(v!);\n      }\n    }\n    if (message.associations !== undefined && message.associations.length !== 0) {\n      for (const v of message.associations) {\n        Association.encode(v!, writer.uint32(58).fork()).join();\n      }\n    }\n    if (message.data !== undefined) {\n      Any.encode(message.data, writer.uint32(66).fork()).join();\n    }\n    if (message.taricCode !== undefined) {\n      writer.uint32(74).string(message.taricCode);\n    }\n    if (message.shopIds !== undefined && message.shopIds.length !== 0) {\n      for (const v of message.shopIds) {\n        writer.uint32(82).string(v!);\n      }\n    }\n    if (message.manufacturerId !== undefined) {\n      writer.uint32(90).string(message.manufacturerId);\n    }\n    if (message.originCountryId !== undefined) {\n      writer.uint32(98).string(message.originCountryId);\n    }\n    if (message.prototypeId !== undefined) {\n      writer.uint32(106).string(message.prototypeId);\n    }\n    if (message.categoryId !== undefined) {\n      writer.uint32(114).string(message.categoryId);\n    }\n    if (message.gtin !== undefined) {\n      writer.uint32(122).string(message.gtin);\n    }\n    if (message.stockLevel !== undefined) {\n      writer.uint32(128).int32(message.stockLevel);\n    }\n    if (message.price !== undefined) {\n      Price.encode(message.price, writer.uint32(138).fork()).join();\n    }\n    if (message.images !== undefined && message.images.length !== 0) {\n      for (const v of message.images) {\n        Image.encode(v!, writer.uint32(146).fork()).join();\n      }\n    }\n    if (message.files !== undefined && message.files.length !== 0) {\n      for (const v of message.files) {\n        File.encode(v!, writer.uint32(154).fork()).join();\n      }\n    }\n    if (message.stockKeepingUnit !== undefined) {\n      writer.uint32(162).string(message.stockKeepingUnit);\n    }\n    if (message.properties !== undefined && message.properties.length !== 0) {\n      for (const v of message.properties) {\n        Property.encode(v!, writer.uint32(170).fork()).join();\n      }\n    }\n    if (message.taxIds !== undefined && message.taxIds.length !== 0) {\n      for (const v of message.taxIds) {\n        writer.uint32(178).string(v!);\n      }\n    }\n    if (message.active !== undefined) {\n      writer.uint32(184).bool(message.active);\n    }\n    if (message.validFrom !== undefined) {\n      Timestamp.encode(toTimestamp(message.validFrom), writer.uint32(194).fork()).join();\n    }\n    if (message.validTo !== undefined) {\n      Timestamp.encode(toTimestamp(message.validTo), writer.uint32(202).fork()).join();\n    }\n    if (message.attributes !== undefined && message.attributes.length !== 0) {\n      for (const v of message.attributes) {\n        Attribute.encode(v!, writer.uint32(210).fork()).join();\n      }\n    }\n    if (message.package !== undefined) {\n      Package.encode(message.package, writer.uint32(218).fork()).join();\n    }\n    if (message.hsCode !== undefined) {\n      writer.uint32(226).string(message.hsCode);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): IndividualProductVariant {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseIndividualProductVariant();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.variantId = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          if (message.tags === undefined) {\n            message.tags = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.tags!.push(el);\n          }\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          if (message.associations === undefined) {\n            message.associations = [];\n          }\n          const el = Association.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.associations!.push(el);\n          }\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.data = Any.decode(reader, reader.uint32());\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.taricCode = reader.string();\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          if (message.shopIds === undefined) {\n            message.shopIds = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.shopIds!.push(el);\n          }\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.manufacturerId = reader.string();\n          continue;\n        }\n        case 12: {\n          if (tag !== 98) {\n            break;\n          }\n\n          message.originCountryId = reader.string();\n          continue;\n        }\n        case 13: {\n          if (tag !== 106) {\n            break;\n          }\n\n          message.prototypeId = reader.string();\n          continue;\n        }\n        case 14: {\n          if (tag !== 114) {\n            break;\n          }\n\n          message.categoryId = reader.string();\n          continue;\n        }\n        case 15: {\n          if (tag !== 122) {\n            break;\n          }\n\n          message.gtin = reader.string();\n          continue;\n        }\n        case 16: {\n          if (tag !== 128) {\n            break;\n          }\n\n          message.stockLevel = reader.int32();\n          continue;\n        }\n        case 17: {\n          if (tag !== 138) {\n            break;\n          }\n\n          message.price = Price.decode(reader, reader.uint32());\n          continue;\n        }\n        case 18: {\n          if (tag !== 146) {\n            break;\n          }\n\n          if (message.images === undefined) {\n            message.images = [];\n          }\n          const el = Image.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.images!.push(el);\n          }\n          continue;\n        }\n        case 19: {\n          if (tag !== 154) {\n            break;\n          }\n\n          if (message.files === undefined) {\n            message.files = [];\n          }\n          const el = File.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.files!.push(el);\n          }\n          continue;\n        }\n        case 20: {\n          if (tag !== 162) {\n            break;\n          }\n\n          message.stockKeepingUnit = reader.string();\n          continue;\n        }\n        case 21: {\n          if (tag !== 170) {\n            break;\n          }\n\n          if (message.properties === undefined) {\n            message.properties = [];\n          }\n          const el = Property.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.properties!.push(el);\n          }\n          continue;\n        }\n        case 22: {\n          if (tag !== 178) {\n            break;\n          }\n\n          if (message.taxIds === undefined) {\n            message.taxIds = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.taxIds!.push(el);\n          }\n          continue;\n        }\n        case 23: {\n          if (tag !== 184) {\n            break;\n          }\n\n          message.active = reader.bool();\n          continue;\n        }\n        case 24: {\n          if (tag !== 194) {\n            break;\n          }\n\n          message.validFrom = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 25: {\n          if (tag !== 202) {\n            break;\n          }\n\n          message.validTo = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 26: {\n          if (tag !== 210) {\n            break;\n          }\n\n          if (message.attributes === undefined) {\n            message.attributes = [];\n          }\n          const el = Attribute.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.attributes!.push(el);\n          }\n          continue;\n        }\n        case 27: {\n          if (tag !== 218) {\n            break;\n          }\n\n          message.package = Package.decode(reader, reader.uint32());\n          continue;\n        }\n        case 28: {\n          if (tag !== 226) {\n            break;\n          }\n\n          message.hsCode = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): IndividualProductVariant {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      variantId: isSet(object.variantId) ? globalThis.String(object.variantId) : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      description: isSet(object.description) ? globalThis.String(object.description) : undefined,\n      tags: globalThis.Array.isArray(object?.tags) ? object.tags.map((e: any) => globalThis.String(e)) : undefined,\n      associations: globalThis.Array.isArray(object?.associations)\n        ? object.associations.map((e: any) => Association.fromJSON(e))\n        : undefined,\n      data: isSet(object.data) ? Any.fromJSON(object.data) : undefined,\n      taricCode: isSet(object.taricCode) ? globalThis.String(object.taricCode) : undefined,\n      shopIds: globalThis.Array.isArray(object?.shopIds)\n        ? object.shopIds.map((e: any) => globalThis.String(e))\n        : undefined,\n      manufacturerId: isSet(object.manufacturerId) ? globalThis.String(object.manufacturerId) : undefined,\n      originCountryId: isSet(object.originCountryId) ? globalThis.String(object.originCountryId) : undefined,\n      prototypeId: isSet(object.prototypeId) ? globalThis.String(object.prototypeId) : undefined,\n      categoryId: isSet(object.categoryId) ? globalThis.String(object.categoryId) : undefined,\n      gtin: isSet(object.gtin) ? globalThis.String(object.gtin) : undefined,\n      stockLevel: isSet(object.stockLevel) ? globalThis.Number(object.stockLevel) : undefined,\n      price: isSet(object.price) ? Price.fromJSON(object.price) : undefined,\n      images: globalThis.Array.isArray(object?.images) ? object.images.map((e: any) => Image.fromJSON(e)) : undefined,\n      files: globalThis.Array.isArray(object?.files) ? object.files.map((e: any) => File.fromJSON(e)) : undefined,\n      stockKeepingUnit: isSet(object.stockKeepingUnit) ? globalThis.String(object.stockKeepingUnit) : undefined,\n      properties: globalThis.Array.isArray(object?.properties)\n        ? object.properties.map((e: any) => Property.fromJSON(e))\n        : undefined,\n      taxIds: globalThis.Array.isArray(object?.taxIds)\n        ? object.taxIds.map((e: any) => globalThis.String(e))\n        : undefined,\n      active: isSet(object.active) ? globalThis.Boolean(object.active) : undefined,\n      validFrom: isSet(object.validFrom) ? fromJsonTimestamp(object.validFrom) : undefined,\n      validTo: isSet(object.validTo) ? fromJsonTimestamp(object.validTo) : undefined,\n      attributes: globalThis.Array.isArray(object?.attributes)\n        ? object.attributes.map((e: any) => Attribute.fromJSON(e))\n        : undefined,\n      package: isSet(object.package) ? Package.fromJSON(object.package) : undefined,\n      hsCode: isSet(object.hsCode) ? globalThis.String(object.hsCode) : undefined,\n    };\n  },\n\n  toJSON(message: IndividualProductVariant): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.variantId !== undefined) {\n      obj.variantId = message.variantId;\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.description !== undefined) {\n      obj.description = message.description;\n    }\n    if (message.tags?.length) {\n      obj.tags = message.tags;\n    }\n    if (message.associations?.length) {\n      obj.associations = message.associations.map((e) => Association.toJSON(e));\n    }\n    if (message.data !== undefined) {\n      obj.data = Any.toJSON(message.data);\n    }\n    if (message.taricCode !== undefined) {\n      obj.taricCode = message.taricCode;\n    }\n    if (message.shopIds?.length) {\n      obj.shopIds = message.shopIds;\n    }\n    if (message.manufacturerId !== undefined) {\n      obj.manufacturerId = message.manufacturerId;\n    }\n    if (message.originCountryId !== undefined) {\n      obj.originCountryId = message.originCountryId;\n    }\n    if (message.prototypeId !== undefined) {\n      obj.prototypeId = message.prototypeId;\n    }\n    if (message.categoryId !== undefined) {\n      obj.categoryId = message.categoryId;\n    }\n    if (message.gtin !== undefined) {\n      obj.gtin = message.gtin;\n    }\n    if (message.stockLevel !== undefined) {\n      obj.stockLevel = Math.round(message.stockLevel);\n    }\n    if (message.price !== undefined) {\n      obj.price = Price.toJSON(message.price);\n    }\n    if (message.images?.length) {\n      obj.images = message.images.map((e) => Image.toJSON(e));\n    }\n    if (message.files?.length) {\n      obj.files = message.files.map((e) => File.toJSON(e));\n    }\n    if (message.stockKeepingUnit !== undefined) {\n      obj.stockKeepingUnit = message.stockKeepingUnit;\n    }\n    if (message.properties?.length) {\n      obj.properties = message.properties.map((e) => Property.toJSON(e));\n    }\n    if (message.taxIds?.length) {\n      obj.taxIds = message.taxIds;\n    }\n    if (message.active !== undefined) {\n      obj.active = message.active;\n    }\n    if (message.validFrom !== undefined) {\n      obj.validFrom = message.validFrom.toISOString();\n    }\n    if (message.validTo !== undefined) {\n      obj.validTo = message.validTo.toISOString();\n    }\n    if (message.attributes?.length) {\n      obj.attributes = message.attributes.map((e) => Attribute.toJSON(e));\n    }\n    if (message.package !== undefined) {\n      obj.package = Package.toJSON(message.package);\n    }\n    if (message.hsCode !== undefined) {\n      obj.hsCode = message.hsCode;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<IndividualProductVariant>): IndividualProductVariant {\n    return IndividualProductVariant.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<IndividualProductVariant>): IndividualProductVariant {\n    const message = createBaseIndividualProductVariant();\n    message.id = object.id ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.variantId = object.variantId ?? undefined;\n    message.name = object.name ?? undefined;\n    message.description = object.description ?? undefined;\n    message.tags = object.tags?.map((e) => e) || undefined;\n    message.associations = object.associations?.map((e) => Association.fromPartial(e)) || undefined;\n    message.data = (object.data !== undefined && object.data !== null) ? Any.fromPartial(object.data) : undefined;\n    message.taricCode = object.taricCode ?? undefined;\n    message.shopIds = object.shopIds?.map((e) => e) || undefined;\n    message.manufacturerId = object.manufacturerId ?? undefined;\n    message.originCountryId = object.originCountryId ?? undefined;\n    message.prototypeId = object.prototypeId ?? undefined;\n    message.categoryId = object.categoryId ?? undefined;\n    message.gtin = object.gtin ?? undefined;\n    message.stockLevel = object.stockLevel ?? undefined;\n    message.price = (object.price !== undefined && object.price !== null) ? Price.fromPartial(object.price) : undefined;\n    message.images = object.images?.map((e) => Image.fromPartial(e)) || undefined;\n    message.files = object.files?.map((e) => File.fromPartial(e)) || undefined;\n    message.stockKeepingUnit = object.stockKeepingUnit ?? undefined;\n    message.properties = object.properties?.map((e) => Property.fromPartial(e)) || undefined;\n    message.taxIds = object.taxIds?.map((e) => e) || undefined;\n    message.active = object.active ?? undefined;\n    message.validFrom = object.validFrom ?? undefined;\n    message.validTo = object.validTo ?? undefined;\n    message.attributes = object.attributes?.map((e) => Attribute.fromPartial(e)) || undefined;\n    message.package = (object.package !== undefined && object.package !== null)\n      ? Package.fromPartial(object.package)\n      : undefined;\n    message.hsCode = object.hsCode ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseIndividualProductVariantResponse(): IndividualProductVariantResponse {\n  return {};\n}\n\nexport const IndividualProductVariantResponse: MessageFns<IndividualProductVariantResponse> = {\n  encode(message: IndividualProductVariantResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      IndividualProductVariant.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): IndividualProductVariantResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseIndividualProductVariantResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = IndividualProductVariant.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): IndividualProductVariantResponse {\n    return {\n      payload: isSet(object.payload) ? IndividualProductVariant.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: IndividualProductVariantResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = IndividualProductVariant.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<IndividualProductVariantResponse>): IndividualProductVariantResponse {\n    return IndividualProductVariantResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<IndividualProductVariantResponse>): IndividualProductVariantResponse {\n    const message = createBaseIndividualProductVariantResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? IndividualProductVariant.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseIndividualProductVariantListResponse(): IndividualProductVariantListResponse {\n  return {};\n}\n\nexport const IndividualProductVariantListResponse: MessageFns<IndividualProductVariantListResponse> = {\n  encode(message: IndividualProductVariantListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        IndividualProductVariantResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    if (message.session !== undefined) {\n      Session.encode(message.session, writer.uint32(34).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): IndividualProductVariantListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseIndividualProductVariantListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = IndividualProductVariantResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.session = Session.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): IndividualProductVariantListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => IndividualProductVariantResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n      session: isSet(object.session) ? Session.fromJSON(object.session) : undefined,\n    };\n  },\n\n  toJSON(message: IndividualProductVariantListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => IndividualProductVariantResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    if (message.session !== undefined) {\n      obj.session = Session.toJSON(message.session);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<IndividualProductVariantListResponse>): IndividualProductVariantListResponse {\n    return IndividualProductVariantListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<IndividualProductVariantListResponse>): IndividualProductVariantListResponse {\n    const message = createBaseIndividualProductVariantListResponse();\n    message.items = object.items?.map((e) => IndividualProductVariantResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    message.session = (object.session !== undefined && object.session !== null)\n      ? Session.fromPartial(object.session)\n      : undefined;\n    return message;\n  },\n};\n\nexport type ProductServiceDefinition = typeof ProductServiceDefinition;\nexport const ProductServiceDefinition = {\n  name: \"ProductService\",\n  fullName: \"io.restorecommerce.product.ProductService\",\n  methods: {\n    read: {\n      name: \"Read\",\n      requestType: ReadRequest,\n      requestStream: false,\n      responseType: ProductListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    create: {\n      name: \"Create\",\n      requestType: ProductList,\n      requestStream: false,\n      responseType: ProductListResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n    update: {\n      name: \"Update\",\n      requestType: ProductList,\n      requestStream: false,\n      responseType: ProductListResponse,\n      responseStream: false,\n      options: {},\n    },\n    upsert: {\n      name: \"Upsert\",\n      requestType: ProductList,\n      requestStream: false,\n      responseType: ProductListResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Response with resolved product-variants in a flatten message */\n    getVariant: {\n      name: \"GetVariant\",\n      requestType: IndividualProductVariantListRequest,\n      requestStream: false,\n      responseType: IndividualProductVariantListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    /**\n     * Response with resolved product-variants\n     * Claims a requested quantity from stock level permanently.\n     * Response with an error status if requested quantity is not in stock.\n     */\n    claimVariant: {\n      name: \"ClaimVariant\",\n      requestType: IndividualProductVariantListRequest,\n      requestStream: false,\n      responseType: IndividualProductVariantListResponse,\n      responseStream: false,\n      options: {},\n    },\n    /**\n     * Response with resolved product-variants\n     * Releases a requested quantity back to stock level.\n     */\n    releaseVariant: {\n      name: \"ReleaseVariant\",\n      requestType: IndividualProductVariantListRequest,\n      requestStream: false,\n      responseType: IndividualProductVariantListResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Claim all products assigned to a session permanently */\n    resolveSession: {\n      name: \"ResolveSession\",\n      requestType: Session,\n      requestStream: false,\n      responseType: IndividualProductVariantListResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Drop session and instantly release all claimed products */\n    dropSession: {\n      name: \"DropSession\",\n      requestType: Session,\n      requestStream: false,\n      responseType: IndividualProductVariantListResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface ProductServiceImplementation<CallContextExt = {}> {\n  read(request: ReadRequest, context: CallContext & CallContextExt): Promise<DeepPartial<ProductListResponse>>;\n  create(request: ProductList, context: CallContext & CallContextExt): Promise<DeepPartial<ProductListResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n  update(request: ProductList, context: CallContext & CallContextExt): Promise<DeepPartial<ProductListResponse>>;\n  upsert(request: ProductList, context: CallContext & CallContextExt): Promise<DeepPartial<ProductListResponse>>;\n  /** Response with resolved product-variants in a flatten message */\n  getVariant(\n    request: IndividualProductVariantListRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<IndividualProductVariantListResponse>>;\n  /**\n   * Response with resolved product-variants\n   * Claims a requested quantity from stock level permanently.\n   * Response with an error status if requested quantity is not in stock.\n   */\n  claimVariant(\n    request: IndividualProductVariantListRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<IndividualProductVariantListResponse>>;\n  /**\n   * Response with resolved product-variants\n   * Releases a requested quantity back to stock level.\n   */\n  releaseVariant(\n    request: IndividualProductVariantListRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<IndividualProductVariantListResponse>>;\n  /** Claim all products assigned to a session permanently */\n  resolveSession(\n    request: Session,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<IndividualProductVariantListResponse>>;\n  /** Drop session and instantly release all claimed products */\n  dropSession(\n    request: Session,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<IndividualProductVariantListResponse>>;\n}\n\nexport interface ProductServiceClient<CallOptionsExt = {}> {\n  read(request: DeepPartial<ReadRequest>, options?: CallOptions & CallOptionsExt): Promise<ProductListResponse>;\n  create(request: DeepPartial<ProductList>, options?: CallOptions & CallOptionsExt): Promise<ProductListResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n  update(request: DeepPartial<ProductList>, options?: CallOptions & CallOptionsExt): Promise<ProductListResponse>;\n  upsert(request: DeepPartial<ProductList>, options?: CallOptions & CallOptionsExt): Promise<ProductListResponse>;\n  /** Response with resolved product-variants in a flatten message */\n  getVariant(\n    request: DeepPartial<IndividualProductVariantListRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<IndividualProductVariantListResponse>;\n  /**\n   * Response with resolved product-variants\n   * Claims a requested quantity from stock level permanently.\n   * Response with an error status if requested quantity is not in stock.\n   */\n  claimVariant(\n    request: DeepPartial<IndividualProductVariantListRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<IndividualProductVariantListResponse>;\n  /**\n   * Response with resolved product-variants\n   * Releases a requested quantity back to stock level.\n   */\n  releaseVariant(\n    request: DeepPartial<IndividualProductVariantListRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<IndividualProductVariantListResponse>;\n  /** Claim all products assigned to a session permanently */\n  resolveSession(\n    request: DeepPartial<Session>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<IndividualProductVariantListResponse>;\n  /** Drop session and instantly release all claimed products */\n  dropSession(\n    request: DeepPartial<Session>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<IndividualProductVariantListResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/product.proto\",\n    \"package\": \"io.restorecommerce.product\",\n    \"dependency\": [\n      \"google/protobuf/any.proto\",\n      \"google/protobuf/timestamp.proto\",\n      \"io/restorecommerce/resource_base.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/image.proto\",\n      \"io/restorecommerce/file.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/attribute.proto\",\n      \"io/restorecommerce/geometry.proto\",\n      \"io/restorecommerce/price.proto\",\n      \"io/restorecommerce/options.proto\",\n      \"io/restorecommerce/product_category.proto\",\n      \"io/restorecommerce/product_prototype.proto\",\n      \"io/restorecommerce/manufacturer.proto\",\n      \"io/restorecommerce/property.proto\",\n      \"io/restorecommerce/shop.proto\",\n      \"io/restorecommerce/tax.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Association\",\n      \"field\": [{\n        \"name\": \"product_id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"productId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"variant_id\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"variantId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"type\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".io.restorecommerce.product.AssociationType\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"type\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"tags\",\n        \"number\": 4,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"tags\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"data\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Any\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"data\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"attributes\",\n        \"number\": 6,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.attribute.Attribute\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"attributes\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_product_id\", \"options\": undefined }, { \"name\": \"_variant_id\", \"options\": undefined }, {\n        \"name\": \"_type\",\n        \"options\": undefined,\n      }, { \"name\": \"_data\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Product\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"product\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.product.IndividualProduct\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"product\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"bundle\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.product.Bundle\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"bundle\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"shop_ids\",\n        \"number\": 5,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"shopIds\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"active\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"active\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"tags\",\n        \"number\": 7,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"tags\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"associations\",\n        \"number\": 8,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.product.Association\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"associations\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"data\",\n        \"number\": 9,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Any\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"data\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"attributes\",\n        \"number\": 10,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.attribute.Attribute\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"attributes\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"product_type\", \"options\": undefined },\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_active\", \"options\": undefined },\n        { \"name\": \"_data\", \"options\": undefined },\n      ],\n      \"options\": {\n        \"messageSetWireFormat\": false,\n        \"noStandardDescriptorAccessor\": false,\n        \"deprecated\": false,\n        \"mapEntry\": false,\n        \"uninterpretedOption\": [],\n      },\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"IndividualProduct\",\n      \"field\": [{\n        \"name\": \"name\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"description\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"description\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"manufacturer_id\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"manufacturerId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"origin_country_id\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"originCountryId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"prototype_id\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"prototypeId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"category_id\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"categoryId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"tax_ids\",\n        \"number\": 8,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"taxIds\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"gtin\",\n        \"number\": 10,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"gtin\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"physical\",\n        \"number\": 11,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.product.PhysicalProduct\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"physical\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"service\",\n        \"number\": 12,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.product.ServiceProduct\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"service\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"virtual\",\n        \"number\": 13,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.product.VirtualProduct\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"virtual\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"classification\", \"options\": undefined },\n        { \"name\": \"nature\", \"options\": undefined },\n        { \"name\": \"_name\", \"options\": undefined },\n        { \"name\": \"_description\", \"options\": undefined },\n        { \"name\": \"_manufacturer_id\", \"options\": undefined },\n        { \"name\": \"_origin_country_id\", \"options\": undefined },\n        { \"name\": \"_gtin\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"PhysicalProduct\",\n      \"field\": [{\n        \"name\": \"variants\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.product.PhysicalVariant\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"variants\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"templates\",\n        \"number\": 2,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.product.PhysicalVariant\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"templates\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ServiceProduct\",\n      \"field\": [{\n        \"name\": \"variants\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.product.ServiceVariant\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"variants\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"templates\",\n        \"number\": 2,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.product.ServiceVariant\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"templates\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"VirtualProduct\",\n      \"field\": [{\n        \"name\": \"variants\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.product.VirtualVariant\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"variants\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"templates\",\n        \"number\": 2,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.product.VirtualVariant\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"templates\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ProductList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.product.Product\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ProductListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.product.ProductResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ProductResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.product.Product\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Package\",\n      \"field\": [{\n        \"name\": \"size_in_cm\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.geometry.BoundingBox3D\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"sizeInCm\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"weight_in_kg\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 1,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"weightInKg\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"rotatable\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"rotatable\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_size_in_cm\", \"options\": undefined },\n        { \"name\": \"_weight_in_kg\", \"options\": undefined },\n        { \"name\": \"_rotatable\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"PhysicalVariant\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"name\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"description\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"description\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"stock_level\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 5,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"stockLevel\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"price\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.price.Price\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"price\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"images\",\n        \"number\": 6,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.image.Image\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"images\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"files\",\n        \"number\": 7,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.file.File\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"files\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"stock_keeping_unit\",\n        \"number\": 8,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"stockKeepingUnit\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"parent_variant_id\",\n        \"number\": 9,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"parentVariantId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"properties\",\n        \"number\": 10,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.property.Property\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"properties\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"tax_ids\",\n        \"number\": 11,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"taxIds\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"active\",\n        \"number\": 12,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 7,\n        \"jsonName\": \"active\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"valid_from\",\n        \"number\": 13,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Timestamp\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 8,\n        \"jsonName\": \"validFrom\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"valid_to\",\n        \"number\": 14,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Timestamp\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 9,\n        \"jsonName\": \"validTo\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"attributes\",\n        \"number\": 15,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.attribute.Attribute\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"attributes\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"package\",\n        \"number\": 16,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.product.Package\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 10,\n        \"jsonName\": \"package\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"taric_code\",\n        \"number\": 17,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 11,\n        \"jsonName\": \"taricCode\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"hs_code\",\n        \"number\": 18,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 12,\n        \"jsonName\": \"hsCode\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"export_description\",\n        \"number\": 19,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 13,\n        \"jsonName\": \"exportDescription\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_name\", \"options\": undefined },\n        { \"name\": \"_description\", \"options\": undefined },\n        { \"name\": \"_stock_level\", \"options\": undefined },\n        { \"name\": \"_price\", \"options\": undefined },\n        { \"name\": \"_stock_keeping_unit\", \"options\": undefined },\n        { \"name\": \"_parent_variant_id\", \"options\": undefined },\n        { \"name\": \"_active\", \"options\": undefined },\n        { \"name\": \"_valid_from\", \"options\": undefined },\n        { \"name\": \"_valid_to\", \"options\": undefined },\n        { \"name\": \"_package\", \"options\": undefined },\n        { \"name\": \"_taric_code\", \"options\": undefined },\n        { \"name\": \"_hs_code\", \"options\": undefined },\n        { \"name\": \"_export_description\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ServiceVariant\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"name\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"description\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"description\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"stock_level\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 5,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"stockLevel\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"price\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.price.Price\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"price\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"images\",\n        \"number\": 6,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.image.Image\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"images\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"files\",\n        \"number\": 7,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.file.File\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"files\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"stock_keeping_unit\",\n        \"number\": 8,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"stockKeepingUnit\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"parent_variant_id\",\n        \"number\": 9,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"parentVariantId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"properties\",\n        \"number\": 10,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.property.Property\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"properties\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"tax_ids\",\n        \"number\": 11,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"taxIds\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"active\",\n        \"number\": 12,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 7,\n        \"jsonName\": \"active\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"valid_from\",\n        \"number\": 13,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Timestamp\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 8,\n        \"jsonName\": \"validFrom\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"valid_to\",\n        \"number\": 14,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Timestamp\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 9,\n        \"jsonName\": \"validTo\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"attributes\",\n        \"number\": 15,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.attribute.Attribute\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"attributes\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_name\", \"options\": undefined },\n        { \"name\": \"_description\", \"options\": undefined },\n        { \"name\": \"_stock_level\", \"options\": undefined },\n        { \"name\": \"_price\", \"options\": undefined },\n        { \"name\": \"_stock_keeping_unit\", \"options\": undefined },\n        { \"name\": \"_parent_variant_id\", \"options\": undefined },\n        { \"name\": \"_active\", \"options\": undefined },\n        { \"name\": \"_valid_from\", \"options\": undefined },\n        { \"name\": \"_valid_to\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"VirtualVariant\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"name\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"description\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"description\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"stock_level\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 5,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"stockLevel\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"price\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.price.Price\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"price\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"images\",\n        \"number\": 6,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.image.Image\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"images\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"files\",\n        \"number\": 7,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.file.File\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"files\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"stock_keeping_unit\",\n        \"number\": 8,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"stockKeepingUnit\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"parent_variant_id\",\n        \"number\": 9,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"parentVariantId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"properties\",\n        \"number\": 10,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.property.Property\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"properties\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"tax_ids\",\n        \"number\": 11,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"taxIds\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"active\",\n        \"number\": 12,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 7,\n        \"jsonName\": \"active\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"valid_from\",\n        \"number\": 13,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Timestamp\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 8,\n        \"jsonName\": \"validFrom\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"valid_to\",\n        \"number\": 14,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Timestamp\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 9,\n        \"jsonName\": \"validTo\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"attributes\",\n        \"number\": 15,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.attribute.Attribute\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"attributes\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_name\", \"options\": undefined },\n        { \"name\": \"_description\", \"options\": undefined },\n        { \"name\": \"_stock_level\", \"options\": undefined },\n        { \"name\": \"_price\", \"options\": undefined },\n        { \"name\": \"_stock_keeping_unit\", \"options\": undefined },\n        { \"name\": \"_parent_variant_id\", \"options\": undefined },\n        { \"name\": \"_active\", \"options\": undefined },\n        { \"name\": \"_valid_from\", \"options\": undefined },\n        { \"name\": \"_valid_to\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Bundle\",\n      \"field\": [{\n        \"name\": \"name\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"description\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"description\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"images\",\n        \"number\": 3,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.image.Image\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"images\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"products\",\n        \"number\": 4,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.product.BundleProduct\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"products\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"price\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.price.Price\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"price\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"pre_packaged\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.product.Package\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"prePackaged\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"attributes\",\n        \"number\": 7,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.attribute.Attribute\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"attributes\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"valid_from\",\n        \"number\": 8,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Timestamp\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"validFrom\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"valid_to\",\n        \"number\": 9,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Timestamp\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"validTo\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_name\", \"options\": undefined },\n        { \"name\": \"_description\", \"options\": undefined },\n        { \"name\": \"_price\", \"options\": undefined },\n        { \"name\": \"_pre_packaged\", \"options\": undefined },\n        { \"name\": \"_valid_from\", \"options\": undefined },\n        { \"name\": \"_valid_to\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"BundleProduct\",\n      \"field\": [{\n        \"name\": \"product_id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"productId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"variant_id\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"variantId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"quantity\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"quantity\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"price_ratio\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 1,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"priceRatio\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_product_id\", \"options\": undefined }, { \"name\": \"_variant_id\", \"options\": undefined }, {\n        \"name\": \"_quantity\",\n        \"options\": undefined,\n      }, { \"name\": \"_price_ratio\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Session\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"from\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Timestamp\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"from\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"to\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Timestamp\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"to\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }, { \"name\": \"_from\", \"options\": undefined }, {\n        \"name\": \"_to\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"IndividualProductVariantRequest\",\n      \"field\": [{\n        \"name\": \"product_id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"productId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"variant_id\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"variantId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"quantity\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"quantity\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"session\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.product.Session\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"session\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"localization\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.product.IndividualProductVariantRequest.Localization\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"localization\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [{\n        \"name\": \"Localization\",\n        \"field\": [{\n          \"name\": \"country_id\",\n          \"number\": 1,\n          \"label\": 1,\n          \"type\": 9,\n          \"typeName\": \"\",\n          \"extendee\": \"\",\n          \"defaultValue\": \"\",\n          \"oneofIndex\": 0,\n          \"jsonName\": \"countryId\",\n          \"options\": undefined,\n          \"proto3Optional\": true,\n        }, {\n          \"name\": \"locale_id\",\n          \"number\": 2,\n          \"label\": 1,\n          \"type\": 9,\n          \"typeName\": \"\",\n          \"extendee\": \"\",\n          \"defaultValue\": \"\",\n          \"oneofIndex\": 1,\n          \"jsonName\": \"localeId\",\n          \"options\": undefined,\n          \"proto3Optional\": true,\n        }, {\n          \"name\": \"currency_id\",\n          \"number\": 3,\n          \"label\": 1,\n          \"type\": 9,\n          \"typeName\": \"\",\n          \"extendee\": \"\",\n          \"defaultValue\": \"\",\n          \"oneofIndex\": 2,\n          \"jsonName\": \"currencyId\",\n          \"options\": undefined,\n          \"proto3Optional\": true,\n        }],\n        \"extension\": [],\n        \"nestedType\": [],\n        \"enumType\": [],\n        \"extensionRange\": [],\n        \"oneofDecl\": [{ \"name\": \"_country_id\", \"options\": undefined }, { \"name\": \"_locale_id\", \"options\": undefined }, {\n          \"name\": \"_currency_id\",\n          \"options\": undefined,\n        }],\n        \"options\": undefined,\n        \"reservedRange\": [],\n        \"reservedName\": [],\n      }],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_product_id\", \"options\": undefined },\n        { \"name\": \"_variant_id\", \"options\": undefined },\n        { \"name\": \"_quantity\", \"options\": undefined },\n        { \"name\": \"_session\", \"options\": undefined },\n        { \"name\": \"_localization\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"IndividualProductVariantListRequest\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.product.IndividualProductVariantRequest\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"IndividualProductVariant\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"variant_id\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"variantId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"name\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"description\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"description\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"tags\",\n        \"number\": 6,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"tags\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"associations\",\n        \"number\": 7,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.product.Association\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"associations\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"data\",\n        \"number\": 8,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Any\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"data\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"taric_code\",\n        \"number\": 9,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 7,\n        \"jsonName\": \"taricCode\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"shop_ids\",\n        \"number\": 10,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"shopIds\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"manufacturer_id\",\n        \"number\": 11,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 8,\n        \"jsonName\": \"manufacturerId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"origin_country_id\",\n        \"number\": 12,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 9,\n        \"jsonName\": \"originCountryId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"prototype_id\",\n        \"number\": 13,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"prototypeId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"category_id\",\n        \"number\": 14,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"categoryId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"gtin\",\n        \"number\": 15,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 10,\n        \"jsonName\": \"gtin\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"stock_level\",\n        \"number\": 16,\n        \"label\": 1,\n        \"type\": 5,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 11,\n        \"jsonName\": \"stockLevel\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"price\",\n        \"number\": 17,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.price.Price\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 12,\n        \"jsonName\": \"price\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"images\",\n        \"number\": 18,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.image.Image\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"images\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"files\",\n        \"number\": 19,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.file.File\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"files\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"stock_keeping_unit\",\n        \"number\": 20,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 13,\n        \"jsonName\": \"stockKeepingUnit\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"properties\",\n        \"number\": 21,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.property.Property\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"properties\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"tax_ids\",\n        \"number\": 22,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"taxIds\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"active\",\n        \"number\": 23,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 14,\n        \"jsonName\": \"active\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"valid_from\",\n        \"number\": 24,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Timestamp\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 15,\n        \"jsonName\": \"validFrom\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"valid_to\",\n        \"number\": 25,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Timestamp\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 16,\n        \"jsonName\": \"validTo\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"attributes\",\n        \"number\": 26,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.attribute.Attribute\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"attributes\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"package\",\n        \"number\": 27,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.product.Package\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 17,\n        \"jsonName\": \"package\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"hs_code\",\n        \"number\": 28,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 18,\n        \"jsonName\": \"hsCode\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"classification\", \"options\": undefined },\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_variant_id\", \"options\": undefined },\n        { \"name\": \"_name\", \"options\": undefined },\n        { \"name\": \"_description\", \"options\": undefined },\n        { \"name\": \"_data\", \"options\": undefined },\n        { \"name\": \"_taric_code\", \"options\": undefined },\n        { \"name\": \"_manufacturer_id\", \"options\": undefined },\n        { \"name\": \"_origin_country_id\", \"options\": undefined },\n        { \"name\": \"_gtin\", \"options\": undefined },\n        { \"name\": \"_stock_level\", \"options\": undefined },\n        { \"name\": \"_price\", \"options\": undefined },\n        { \"name\": \"_stock_keeping_unit\", \"options\": undefined },\n        { \"name\": \"_active\", \"options\": undefined },\n        { \"name\": \"_valid_from\", \"options\": undefined },\n        { \"name\": \"_valid_to\", \"options\": undefined },\n        { \"name\": \"_package\", \"options\": undefined },\n        { \"name\": \"_hs_code\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"IndividualProductVariantResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.product.IndividualProductVariant\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"IndividualProductVariantListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.product.IndividualProductVariantResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"session\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.product.Session\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"session\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }, { \"name\": \"_session\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [{\n      \"name\": \"AssociationType\",\n      \"value\": [{ \"name\": \"MISCELLANEOUS\", \"number\": 0, \"options\": undefined }, {\n        \"name\": \"ACCESSORY\",\n        \"number\": 1,\n        \"options\": undefined,\n      }, { \"name\": \"RECOMMENDATION\", \"number\": 2, \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"service\": [{\n      \"name\": \"ProductService\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ReadRequest\",\n        \"outputType\": \".io.restorecommerce.product.ProductListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.product.ProductList\",\n        \"outputType\": \".io.restorecommerce.product.ProductListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.product.ProductList\",\n        \"outputType\": \".io.restorecommerce.product.ProductListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.product.ProductList\",\n        \"outputType\": \".io.restorecommerce.product.ProductListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"GetVariant\",\n        \"inputType\": \".io.restorecommerce.product.IndividualProductVariantListRequest\",\n        \"outputType\": \".io.restorecommerce.product.IndividualProductVariantListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"ClaimVariant\",\n        \"inputType\": \".io.restorecommerce.product.IndividualProductVariantListRequest\",\n        \"outputType\": \".io.restorecommerce.product.IndividualProductVariantListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"ReleaseVariant\",\n        \"inputType\": \".io.restorecommerce.product.IndividualProductVariantListRequest\",\n        \"outputType\": \".io.restorecommerce.product.IndividualProductVariantListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"ResolveSession\",\n        \"inputType\": \".io.restorecommerce.product.Session\",\n        \"outputType\": \".io.restorecommerce.product.IndividualProductVariantListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"DropSession\",\n        \"inputType\": \".io.restorecommerce.product.Session\",\n        \"outputType\": \".io.restorecommerce.product.IndividualProductVariantListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [3, 12],\n        \"span\": [19, 0, 51],\n        \"leadingComments\": \" Used by resolvers\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0, 2, 5],\n        \"span\": [38, 2, 40, 3],\n        \"leadingComments\": \"\\n Response with resolved product-variants in a flatten message\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0, 2, 6],\n        \"span\": [47, 2, 104],\n        \"leadingComments\":\n          \" \\n Response with resolved product-variants\\n Claims a requested quantity from stock level permanently.\\n Response with an error status if requested quantity is not in stock.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0, 2, 7],\n        \"span\": [53, 2, 106],\n        \"leadingComments\":\n          \" \\n Response with resolved product-variants\\n Releases a requested quantity back to stock level.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0, 2, 8],\n        \"span\": [58, 2, 78],\n        \"leadingComments\": \" \\n Claim all products assigned to a session permanently\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0, 2, 9],\n        \"span\": [63, 2, 75],\n        \"leadingComments\": \"\\n Drop session and instantly release all claimed products\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [5, 0, 2, 0],\n        \"span\": [67, 2, 20],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Use attributes then...\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 1],\n        \"span\": [90, 0, 119, 1],\n        \"leadingComments\": \" Product resource entity\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 3, 2, 0],\n        \"span\": [172, 2, 40],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" complete product definition - for sale\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 3, 2, 1],\n        \"span\": [173, 2, 41],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" incomplete templates - not for sale\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 10, 2, 12],\n        \"span\": [222, 2, 53],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" valid for sale\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 10, 2, 15],\n        \"span\": [225, 2, 32],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" size for shipping\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 11, 2, 12],\n        \"span\": [244, 2, 53],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" valid for sale\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 14, 2, 3],\n        \"span\": [291, 2, 34],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \"Price ratio in relation to the bundle price\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 15, 2, 0],\n        \"span\": [295, 2, 25],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" get a new id if empty\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 15, 2, 1],\n        \"span\": [296, 2, 46],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" required field to start a session\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 15, 2, 2],\n        \"span\": [297, 2, 44],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" leave empty for auto max session\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 16, 2, 4],\n        \"span\": [311, 2, 41],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" for taxing, currency, etc.?\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 18, 2, 26],\n        \"span\": [389, 2, 32],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" size for shipping\\n\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.product.AssociationType\": AssociationType,\n    \".io.restorecommerce.product.Association\": Association,\n    \".io.restorecommerce.product.Product\": Product,\n    \".io.restorecommerce.product.IndividualProduct\": IndividualProduct,\n    \".io.restorecommerce.product.PhysicalProduct\": PhysicalProduct,\n    \".io.restorecommerce.product.ServiceProduct\": ServiceProduct,\n    \".io.restorecommerce.product.VirtualProduct\": VirtualProduct,\n    \".io.restorecommerce.product.ProductList\": ProductList,\n    \".io.restorecommerce.product.ProductListResponse\": ProductListResponse,\n    \".io.restorecommerce.product.ProductResponse\": ProductResponse,\n    \".io.restorecommerce.product.Package\": Package,\n    \".io.restorecommerce.product.PhysicalVariant\": PhysicalVariant,\n    \".io.restorecommerce.product.ServiceVariant\": ServiceVariant,\n    \".io.restorecommerce.product.VirtualVariant\": VirtualVariant,\n    \".io.restorecommerce.product.Bundle\": Bundle,\n    \".io.restorecommerce.product.BundleProduct\": BundleProduct,\n    \".io.restorecommerce.product.Session\": Session,\n    \".io.restorecommerce.product.IndividualProductVariantRequest\": IndividualProductVariantRequest,\n    \".io.restorecommerce.product.IndividualProductVariantRequest.Localization\":\n      IndividualProductVariantRequest_Localization,\n    \".io.restorecommerce.product.IndividualProductVariantListRequest\": IndividualProductVariantListRequest,\n    \".io.restorecommerce.product.IndividualProductVariant\": IndividualProductVariant,\n    \".io.restorecommerce.product.IndividualProductVariantResponse\": IndividualProductVariantResponse,\n    \".io.restorecommerce.product.IndividualProductVariantListResponse\": IndividualProductVariantListResponse,\n  },\n  dependencies: [\n    protoMetadata1,\n    protoMetadata2,\n    protoMetadata3,\n    protoMetadata4,\n    protoMetadata5,\n    protoMetadata6,\n    protoMetadata7,\n    protoMetadata8,\n    protoMetadata9,\n    protoMetadata10,\n    protoMetadata11,\n    protoMetadata12,\n    protoMetadata13,\n    protoMetadata14,\n    protoMetadata15,\n    protoMetadata16,\n    protoMetadata17,\n    protoMetadata18,\n  ],\n  options: {\n    messages: {\n      \"Association\": {\n        fields: {\n          \"product_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CiMuaW8ucmVzdG9yZWNvbW1lcmNlLnByb2R1Y3QuUHJvZHVjdBIHY2F0YWxvZxoHcHJvZHVjdCIEUmVhZCoHcHJvZHVjdA==\",\n                \"base64\",\n              ),\n            ),\n          },\n        },\n      },\n      \"Product\": {\n        options: {\n          \"kafka_subscriber\": KafkaSubscription.decode(\n            Buffer.from(\n              \"Cghwcm9kdWN0cxIjaW8ucmVzdG9yZWNvbW1lcmNlLnByb2R1Y3QucmVzb3VyY2UaDnByb2R1Y3RDcmVhdGVkIg5wcm9kdWN0VXBkYXRlZCoOcHJvZHVjdERlbGV0ZWQ=\",\n              \"base64\",\n            ),\n          ),\n        },\n        fields: {\n          \"shop_ids\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"Ch0uaW8ucmVzdG9yZWNvbW1lcmNlLnNob3AuU2hvcBILbWFzdGVyX2RhdGEaBHNob3AiBFJlYWQqBXNob3Bz\",\n                \"base64\",\n              ),\n            ),\n          },\n        },\n      },\n      \"IndividualProduct\": {\n        fields: {\n          \"manufacturer_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"Ci0uaW8ucmVzdG9yZWNvbW1lcmNlLm1hbnVmYWN0dXJlci5NYW51ZmFjdHVyZXISB2NhdGFsb2caDG1hbnVmYWN0dXJlciIEUmVhZCoMbWFudWZhY3R1cmVy\",\n                \"base64\",\n              ),\n            ),\n          },\n          \"origin_country_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CiMuaW8ucmVzdG9yZWNvbW1lcmNlLmNvdW50cnkuQ291bnRyeRILbWFzdGVyX2RhdGEaB2NvdW50cnkiBFJlYWQqDm9yaWdpbl9jb3VudHJ5\",\n                \"base64\",\n              ),\n            ),\n          },\n          \"prototype_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CjYuaW8ucmVzdG9yZWNvbW1lcmNlLnByb2R1Y3RfcHJvdG90eXBlLlByb2R1Y3RQcm90b3R5cGUSB2NhdGFsb2caEXByb2R1Y3RfcHJvdG90eXBlIgRSZWFkKglwcm90b3R5cGU=\",\n                \"base64\",\n              ),\n            ),\n          },\n          \"category_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CjQuaW8ucmVzdG9yZWNvbW1lcmNlLnByb2R1Y3RfY2F0ZWdvcnkuUHJvZHVjdENhdGVnb3J5EgdjYXRhbG9nGhBwcm9kdWN0X2NhdGVnb3J5IgRSZWFkKghjYXRlZ29yeQ==\",\n                \"base64\",\n              ),\n            ),\n          },\n        },\n      },\n      \"BundleProduct\": {\n        fields: {\n          \"product_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CiMuaW8ucmVzdG9yZWNvbW1lcmNlLnByb2R1Y3QuUHJvZHVjdBIHY2F0YWxvZxoHcHJvZHVjdCIEUmVhZCoHcHJvZHVjdA==\",\n                \"base64\",\n              ),\n            ),\n          },\n        },\n      },\n      \"IndividualProductVariant\": {\n        fields: {\n          \"shop_ids\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"Ch0uaW8ucmVzdG9yZWNvbW1lcmNlLnNob3AuU2hvcBILbWFzdGVyX2RhdGEaBHNob3AiBFJlYWQqBXNob3Bz\",\n                \"base64\",\n              ),\n            ),\n          },\n          \"manufacturer_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"Ci0uaW8ucmVzdG9yZWNvbW1lcmNlLm1hbnVmYWN0dXJlci5NYW51ZmFjdHVyZXISB2NhdGFsb2caDG1hbnVmYWN0dXJlciIEUmVhZCoMbWFudWZhY3R1cmVy\",\n                \"base64\",\n              ),\n            ),\n          },\n          \"origin_country_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CiMuaW8ucmVzdG9yZWNvbW1lcmNlLmNvdW50cnkuQ291bnRyeRILbWFzdGVyX2RhdGEaB2NvdW50cnkiBFJlYWQqDm9yaWdpbl9jb3VudHJ5\",\n                \"base64\",\n              ),\n            ),\n          },\n          \"prototype_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CjYuaW8ucmVzdG9yZWNvbW1lcmNlLnByb2R1Y3RfcHJvdG90eXBlLlByb2R1Y3RQcm90b3R5cGUSB2NhdGFsb2caEXByb2R1Y3RfcHJvdG90eXBlIgRSZWFkKglwcm90b3R5cGU=\",\n                \"base64\",\n              ),\n            ),\n          },\n          \"category_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CjQuaW8ucmVzdG9yZWNvbW1lcmNlLnByb2R1Y3RfY2F0ZWdvcnkuUHJvZHVjdENhdGVnb3J5EgdjYXRhbG9nGhBwcm9kdWN0X2NhdGVnb3J5IgRSZWFkKghjYXRlZ29yeQ==\",\n                \"base64\",\n              ),\n            ),\n          },\n        },\n      },\n    },\n    services: { \"ProductService\": { methods: { \"Read\": { \"is_query\": true }, \"GetVariant\": { \"is_query\": true } } } },\n  },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction toTimestamp(date: Date): Timestamp {\n  const seconds = Math.trunc(date.getTime() / 1_000);\n  const nanos = (date.getTime() % 1_000) * 1_000_000;\n  return { seconds, nanos };\n}\n\nfunction fromTimestamp(t: Timestamp): Date {\n  let millis = (t.seconds || 0) * 1_000;\n  millis += (t.nanos || 0) / 1_000_000;\n  return new globalThis.Date(millis);\n}\n\nfunction fromJsonTimestamp(o: any): Date {\n  if (o instanceof globalThis.Date) {\n    return o;\n  } else if (typeof o === \"string\") {\n    return new globalThis.Date(o);\n  } else {\n    return fromTimestamp(Timestamp.fromJSON(o));\n  }\n}\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/reference.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\n\nexport const protobufPackage = \"io.restorecommerce.reference\";\n\nexport interface Reference {\n  instanceType?: string | undefined;\n  instanceId?: string | undefined;\n}\n\nfunction createBaseReference(): Reference {\n  return {};\n}\n\nexport const Reference: MessageFns<Reference> = {\n  encode(message: Reference, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.instanceType !== undefined) {\n      writer.uint32(10).string(message.instanceType);\n    }\n    if (message.instanceId !== undefined) {\n      writer.uint32(18).string(message.instanceId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Reference {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseReference();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.instanceType = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.instanceId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Reference {\n    return {\n      instanceType: isSet(object.instanceType) ? globalThis.String(object.instanceType) : undefined,\n      instanceId: isSet(object.instanceId) ? globalThis.String(object.instanceId) : undefined,\n    };\n  },\n\n  toJSON(message: Reference): unknown {\n    const obj: any = {};\n    if (message.instanceType !== undefined) {\n      obj.instanceType = message.instanceType;\n    }\n    if (message.instanceId !== undefined) {\n      obj.instanceId = message.instanceId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Reference>): Reference {\n    return Reference.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Reference>): Reference {\n    const message = createBaseReference();\n    message.instanceType = object.instanceType ?? undefined;\n    message.instanceId = object.instanceId ?? undefined;\n    return message;\n  },\n};\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/reference.proto\",\n    \"package\": \"io.restorecommerce.reference\",\n    \"dependency\": [],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Reference\",\n      \"field\": [{\n        \"name\": \"instance_type\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"instanceType\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"instance_id\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"instanceId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_instance_type\", \"options\": undefined }, {\n        \"name\": \"_instance_id\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": { \"location\": [] },\n    \"syntax\": \"proto3\",\n  },\n  references: { \".io.restorecommerce.reference.Reference\": Reference },\n  dependencies: [],\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/invoice.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { Any, protoMetadata as protoMetadata1 } from \"../../google/protobuf/any\";\nimport { protoMetadata as protoMetadata18, Timestamp } from \"../../google/protobuf/timestamp\";\nimport { BillingAddress, protoMetadata as protoMetadata8, ShippingAddress } from \"./address\";\nimport { Amount, protoMetadata as protoMetadata9 } from \"./amount\";\nimport { Attribute, protoMetadata as protoMetadata13 } from \"./attribute\";\nimport { protoMetadata as protoMetadata5, Subject } from \"./auth\";\nimport { protoMetadata as protoMetadata16 } from \"./customer\";\nimport { File, protoMetadata as protoMetadata11 } from \"./file\";\nimport { Meta, protoMetadata as protoMetadata3 } from \"./meta\";\nimport { KafkaSubscription, protoMetadata as protoMetadata7, Resolver } from \"./options\";\nimport { protoMetadata as protoMetadata4 } from \"./organization\";\nimport { Price, protoMetadata as protoMetadata10 } from \"./price\";\nimport { protoMetadata as protoMetadata19 } from \"./product\";\nimport { Property, protoMetadata as protoMetadata14 } from \"./property\";\nimport { protoMetadata as protoMetadata12, Reference } from \"./reference\";\nimport { DeleteRequest, DeleteResponse, protoMetadata as protoMetadata2, ReadRequest } from \"./resource_base\";\nimport { protoMetadata as protoMetadata17 } from \"./shop\";\nimport { OperationStatus, protoMetadata as protoMetadata6, Status, StatusListResponse } from \"./status\";\nimport { protoMetadata as protoMetadata15 } from \"./user\";\n\nexport const protobufPackage = \"io.restorecommerce.invoice\";\n\nexport enum PaymentState {\n  UNPAYED = \"UNPAYED\",\n  PAYED = \"PAYED\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function paymentStateFromJSON(object: any): PaymentState {\n  switch (object) {\n    case 0:\n    case \"UNPAYED\":\n      return PaymentState.UNPAYED;\n    case 1:\n    case \"PAYED\":\n      return PaymentState.PAYED;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return PaymentState.UNRECOGNIZED;\n  }\n}\n\nexport function paymentStateToJSON(object: PaymentState): string {\n  switch (object) {\n    case PaymentState.UNPAYED:\n      return \"UNPAYED\";\n    case PaymentState.PAYED:\n      return \"PAYED\";\n    case PaymentState.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function paymentStateToNumber(object: PaymentState): number {\n  switch (object) {\n    case PaymentState.UNPAYED:\n      return 0;\n    case PaymentState.PAYED:\n      return 1;\n    case PaymentState.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\nexport interface RequestInvoiceNumber {\n  shopId?: string | undefined;\n  context?: Any | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface InvoiceNumberResponse {\n  invoiceNumber?: string | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface Deleted {\n  id?: string | undefined;\n}\n\nexport interface InvoiceList {\n  items?: Invoice[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface InvoiceListResponse {\n  items?: InvoiceResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface InvoiceResponse {\n  payload?: Invoice | undefined;\n  status?: Status | undefined;\n}\n\nexport interface InvoiceId {\n  id?:\n    | string\n    | undefined;\n  /** empty takes latest */\n  documentIds?: string[] | undefined;\n  notificationChannelIds?: string[] | undefined;\n  options?: Any | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface InvoiceIdList {\n  items?: InvoiceId[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\n/** The Invoice recource, stored in DB. */\nexport interface Invoice {\n  id?: string | undefined;\n  meta?: Meta | undefined;\n  invoiceNumber?: string | undefined;\n  references?: Reference[] | undefined;\n  userId?:\n    | string\n    | undefined;\n  /** customer_number ref. to recipent orga */\n  customerId?:\n    | string\n    | undefined;\n  /** shop_number --- ref. to sender orga */\n  shopId?: string | undefined;\n  timestamp?: Date | undefined;\n  paymentState?: PaymentState | undefined;\n  sender?: ShippingAddress | undefined;\n  recipient?: ShippingAddress | undefined;\n  sections?: Section[] | undefined;\n  totalAmounts?: Amount[] | undefined;\n  paymentHints?:\n    | string[]\n    | undefined;\n  /** url to rendered PDFs */\n  documents?:\n    | File[]\n    | undefined;\n  /** value performance from date */\n  fromDate?:\n    | Date\n    | undefined;\n  /** value performance to date */\n  toDate?: Date | undefined;\n  sent?: boolean | undefined;\n  withdrawn?: boolean | undefined;\n  customerOrderNumber?: string | undefined;\n  customerVatId?: string | undefined;\n  billingAddress?: BillingAddress | undefined;\n}\n\nexport interface Section {\n  id?: string | undefined;\n  customerRemark?: string | undefined;\n  positions?:\n    | Position[]\n    | undefined;\n  /** repeated in case of multiple currencies? */\n  amounts?: Amount[] | undefined;\n}\n\nexport interface Position {\n  id?: string | undefined;\n  productItem?: ProductItem | undefined;\n  fulfillmentItem?: FulfillmentItem | undefined;\n  manualItem?: ManualItem | undefined;\n  unitPrice?: Price | undefined;\n  quantity?: number | undefined;\n  amount?:\n    | Amount\n    | undefined;\n  /** value performance from date */\n  fromDate?:\n    | Date\n    | undefined;\n  /** value performance to date */\n  toDate?: Date | undefined;\n  attributes?: Attribute[] | undefined;\n}\n\nexport interface ProductItem {\n  productId?: string | undefined;\n  variantId?: string | undefined;\n}\n\nexport interface FulfillmentItem {\n  productId?: string | undefined;\n  variantId?: string | undefined;\n}\n\nexport interface ManualItem {\n  stockKeepingUnit?: string | undefined;\n  name?: string | undefined;\n  descritpion?: string | undefined;\n  properties?: Property[] | undefined;\n}\n\nfunction createBaseRequestInvoiceNumber(): RequestInvoiceNumber {\n  return {};\n}\n\nexport const RequestInvoiceNumber: MessageFns<RequestInvoiceNumber> = {\n  encode(message: RequestInvoiceNumber, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.shopId !== undefined) {\n      writer.uint32(10).string(message.shopId);\n    }\n    if (message.context !== undefined) {\n      Any.encode(message.context, writer.uint32(18).fork()).join();\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): RequestInvoiceNumber {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseRequestInvoiceNumber();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.shopId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.context = Any.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): RequestInvoiceNumber {\n    return {\n      shopId: isSet(object.shopId) ? globalThis.String(object.shopId) : undefined,\n      context: isSet(object.context) ? Any.fromJSON(object.context) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: RequestInvoiceNumber): unknown {\n    const obj: any = {};\n    if (message.shopId !== undefined) {\n      obj.shopId = message.shopId;\n    }\n    if (message.context !== undefined) {\n      obj.context = Any.toJSON(message.context);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<RequestInvoiceNumber>): RequestInvoiceNumber {\n    return RequestInvoiceNumber.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<RequestInvoiceNumber>): RequestInvoiceNumber {\n    const message = createBaseRequestInvoiceNumber();\n    message.shopId = object.shopId ?? undefined;\n    message.context = (object.context !== undefined && object.context !== null)\n      ? Any.fromPartial(object.context)\n      : undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseInvoiceNumberResponse(): InvoiceNumberResponse {\n  return {};\n}\n\nexport const InvoiceNumberResponse: MessageFns<InvoiceNumberResponse> = {\n  encode(message: InvoiceNumberResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.invoiceNumber !== undefined) {\n      writer.uint32(10).string(message.invoiceNumber);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): InvoiceNumberResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseInvoiceNumberResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.invoiceNumber = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): InvoiceNumberResponse {\n    return {\n      invoiceNumber: isSet(object.invoiceNumber) ? globalThis.String(object.invoiceNumber) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: InvoiceNumberResponse): unknown {\n    const obj: any = {};\n    if (message.invoiceNumber !== undefined) {\n      obj.invoiceNumber = message.invoiceNumber;\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<InvoiceNumberResponse>): InvoiceNumberResponse {\n    return InvoiceNumberResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<InvoiceNumberResponse>): InvoiceNumberResponse {\n    const message = createBaseInvoiceNumberResponse();\n    message.invoiceNumber = object.invoiceNumber ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseDeleted(): Deleted {\n  return {};\n}\n\nexport const Deleted: MessageFns<Deleted> = {\n  encode(message: Deleted, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Deleted {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseDeleted();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Deleted {\n    return { id: isSet(object.id) ? globalThis.String(object.id) : undefined };\n  },\n\n  toJSON(message: Deleted): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Deleted>): Deleted {\n    return Deleted.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Deleted>): Deleted {\n    const message = createBaseDeleted();\n    message.id = object.id ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseInvoiceList(): InvoiceList {\n  return {};\n}\n\nexport const InvoiceList: MessageFns<InvoiceList> = {\n  encode(message: InvoiceList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        Invoice.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): InvoiceList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseInvoiceList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = Invoice.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): InvoiceList {\n    return {\n      items: globalThis.Array.isArray(object?.items) ? object.items.map((e: any) => Invoice.fromJSON(e)) : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: InvoiceList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => Invoice.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<InvoiceList>): InvoiceList {\n    return InvoiceList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<InvoiceList>): InvoiceList {\n    const message = createBaseInvoiceList();\n    message.items = object.items?.map((e) => Invoice.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseInvoiceListResponse(): InvoiceListResponse {\n  return {};\n}\n\nexport const InvoiceListResponse: MessageFns<InvoiceListResponse> = {\n  encode(message: InvoiceListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        InvoiceResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): InvoiceListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseInvoiceListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = InvoiceResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): InvoiceListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => InvoiceResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: InvoiceListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => InvoiceResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<InvoiceListResponse>): InvoiceListResponse {\n    return InvoiceListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<InvoiceListResponse>): InvoiceListResponse {\n    const message = createBaseInvoiceListResponse();\n    message.items = object.items?.map((e) => InvoiceResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseInvoiceResponse(): InvoiceResponse {\n  return {};\n}\n\nexport const InvoiceResponse: MessageFns<InvoiceResponse> = {\n  encode(message: InvoiceResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      Invoice.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): InvoiceResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseInvoiceResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = Invoice.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): InvoiceResponse {\n    return {\n      payload: isSet(object.payload) ? Invoice.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: InvoiceResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = Invoice.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<InvoiceResponse>): InvoiceResponse {\n    return InvoiceResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<InvoiceResponse>): InvoiceResponse {\n    const message = createBaseInvoiceResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? Invoice.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseInvoiceId(): InvoiceId {\n  return {};\n}\n\nexport const InvoiceId: MessageFns<InvoiceId> = {\n  encode(message: InvoiceId, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.documentIds !== undefined && message.documentIds.length !== 0) {\n      for (const v of message.documentIds) {\n        writer.uint32(18).string(v!);\n      }\n    }\n    if (message.notificationChannelIds !== undefined && message.notificationChannelIds.length !== 0) {\n      for (const v of message.notificationChannelIds) {\n        writer.uint32(26).string(v!);\n      }\n    }\n    if (message.options !== undefined) {\n      Any.encode(message.options, writer.uint32(34).fork()).join();\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(42).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): InvoiceId {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseInvoiceId();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          if (message.documentIds === undefined) {\n            message.documentIds = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.documentIds!.push(el);\n          }\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          if (message.notificationChannelIds === undefined) {\n            message.notificationChannelIds = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.notificationChannelIds!.push(el);\n          }\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.options = Any.decode(reader, reader.uint32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): InvoiceId {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      documentIds: globalThis.Array.isArray(object?.documentIds)\n        ? object.documentIds.map((e: any) => globalThis.String(e))\n        : undefined,\n      notificationChannelIds: globalThis.Array.isArray(object?.notificationChannelIds)\n        ? object.notificationChannelIds.map((e: any) => globalThis.String(e))\n        : undefined,\n      options: isSet(object.options) ? Any.fromJSON(object.options) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: InvoiceId): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.documentIds?.length) {\n      obj.documentIds = message.documentIds;\n    }\n    if (message.notificationChannelIds?.length) {\n      obj.notificationChannelIds = message.notificationChannelIds;\n    }\n    if (message.options !== undefined) {\n      obj.options = Any.toJSON(message.options);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<InvoiceId>): InvoiceId {\n    return InvoiceId.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<InvoiceId>): InvoiceId {\n    const message = createBaseInvoiceId();\n    message.id = object.id ?? undefined;\n    message.documentIds = object.documentIds?.map((e) => e) || undefined;\n    message.notificationChannelIds = object.notificationChannelIds?.map((e) => e) || undefined;\n    message.options = (object.options !== undefined && object.options !== null)\n      ? Any.fromPartial(object.options)\n      : undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseInvoiceIdList(): InvoiceIdList {\n  return {};\n}\n\nexport const InvoiceIdList: MessageFns<InvoiceIdList> = {\n  encode(message: InvoiceIdList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        InvoiceId.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): InvoiceIdList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseInvoiceIdList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = InvoiceId.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): InvoiceIdList {\n    return {\n      items: globalThis.Array.isArray(object?.items) ? object.items.map((e: any) => InvoiceId.fromJSON(e)) : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: InvoiceIdList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => InvoiceId.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<InvoiceIdList>): InvoiceIdList {\n    return InvoiceIdList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<InvoiceIdList>): InvoiceIdList {\n    const message = createBaseInvoiceIdList();\n    message.items = object.items?.map((e) => InvoiceId.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseInvoice(): Invoice {\n  return {};\n}\n\nexport const Invoice: MessageFns<Invoice> = {\n  encode(message: Invoice, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(18).fork()).join();\n    }\n    if (message.invoiceNumber !== undefined) {\n      writer.uint32(26).string(message.invoiceNumber);\n    }\n    if (message.references !== undefined && message.references.length !== 0) {\n      for (const v of message.references) {\n        Reference.encode(v!, writer.uint32(34).fork()).join();\n      }\n    }\n    if (message.userId !== undefined) {\n      writer.uint32(42).string(message.userId);\n    }\n    if (message.customerId !== undefined) {\n      writer.uint32(50).string(message.customerId);\n    }\n    if (message.shopId !== undefined) {\n      writer.uint32(58).string(message.shopId);\n    }\n    if (message.timestamp !== undefined) {\n      Timestamp.encode(toTimestamp(message.timestamp), writer.uint32(66).fork()).join();\n    }\n    if (message.paymentState !== undefined) {\n      writer.uint32(72).int32(paymentStateToNumber(message.paymentState));\n    }\n    if (message.sender !== undefined) {\n      ShippingAddress.encode(message.sender, writer.uint32(82).fork()).join();\n    }\n    if (message.recipient !== undefined) {\n      ShippingAddress.encode(message.recipient, writer.uint32(90).fork()).join();\n    }\n    if (message.sections !== undefined && message.sections.length !== 0) {\n      for (const v of message.sections) {\n        Section.encode(v!, writer.uint32(98).fork()).join();\n      }\n    }\n    if (message.totalAmounts !== undefined && message.totalAmounts.length !== 0) {\n      for (const v of message.totalAmounts) {\n        Amount.encode(v!, writer.uint32(106).fork()).join();\n      }\n    }\n    if (message.paymentHints !== undefined && message.paymentHints.length !== 0) {\n      for (const v of message.paymentHints) {\n        writer.uint32(114).string(v!);\n      }\n    }\n    if (message.documents !== undefined && message.documents.length !== 0) {\n      for (const v of message.documents) {\n        File.encode(v!, writer.uint32(122).fork()).join();\n      }\n    }\n    if (message.fromDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.fromDate), writer.uint32(130).fork()).join();\n    }\n    if (message.toDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.toDate), writer.uint32(138).fork()).join();\n    }\n    if (message.sent !== undefined) {\n      writer.uint32(144).bool(message.sent);\n    }\n    if (message.withdrawn !== undefined) {\n      writer.uint32(152).bool(message.withdrawn);\n    }\n    if (message.customerOrderNumber !== undefined) {\n      writer.uint32(162).string(message.customerOrderNumber);\n    }\n    if (message.customerVatId !== undefined) {\n      writer.uint32(170).string(message.customerVatId);\n    }\n    if (message.billingAddress !== undefined) {\n      BillingAddress.encode(message.billingAddress, writer.uint32(178).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Invoice {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseInvoice();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.invoiceNumber = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          if (message.references === undefined) {\n            message.references = [];\n          }\n          const el = Reference.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.references!.push(el);\n          }\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.userId = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.customerId = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.shopId = reader.string();\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.timestamp = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 9: {\n          if (tag !== 72) {\n            break;\n          }\n\n          message.paymentState = paymentStateFromJSON(reader.int32());\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.sender = ShippingAddress.decode(reader, reader.uint32());\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.recipient = ShippingAddress.decode(reader, reader.uint32());\n          continue;\n        }\n        case 12: {\n          if (tag !== 98) {\n            break;\n          }\n\n          if (message.sections === undefined) {\n            message.sections = [];\n          }\n          const el = Section.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.sections!.push(el);\n          }\n          continue;\n        }\n        case 13: {\n          if (tag !== 106) {\n            break;\n          }\n\n          if (message.totalAmounts === undefined) {\n            message.totalAmounts = [];\n          }\n          const el = Amount.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.totalAmounts!.push(el);\n          }\n          continue;\n        }\n        case 14: {\n          if (tag !== 114) {\n            break;\n          }\n\n          if (message.paymentHints === undefined) {\n            message.paymentHints = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.paymentHints!.push(el);\n          }\n          continue;\n        }\n        case 15: {\n          if (tag !== 122) {\n            break;\n          }\n\n          if (message.documents === undefined) {\n            message.documents = [];\n          }\n          const el = File.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.documents!.push(el);\n          }\n          continue;\n        }\n        case 16: {\n          if (tag !== 130) {\n            break;\n          }\n\n          message.fromDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 17: {\n          if (tag !== 138) {\n            break;\n          }\n\n          message.toDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 18: {\n          if (tag !== 144) {\n            break;\n          }\n\n          message.sent = reader.bool();\n          continue;\n        }\n        case 19: {\n          if (tag !== 152) {\n            break;\n          }\n\n          message.withdrawn = reader.bool();\n          continue;\n        }\n        case 20: {\n          if (tag !== 162) {\n            break;\n          }\n\n          message.customerOrderNumber = reader.string();\n          continue;\n        }\n        case 21: {\n          if (tag !== 170) {\n            break;\n          }\n\n          message.customerVatId = reader.string();\n          continue;\n        }\n        case 22: {\n          if (tag !== 178) {\n            break;\n          }\n\n          message.billingAddress = BillingAddress.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Invoice {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      invoiceNumber: isSet(object.invoiceNumber) ? globalThis.String(object.invoiceNumber) : undefined,\n      references: globalThis.Array.isArray(object?.references)\n        ? object.references.map((e: any) => Reference.fromJSON(e))\n        : undefined,\n      userId: isSet(object.userId) ? globalThis.String(object.userId) : undefined,\n      customerId: isSet(object.customerId) ? globalThis.String(object.customerId) : undefined,\n      shopId: isSet(object.shopId) ? globalThis.String(object.shopId) : undefined,\n      timestamp: isSet(object.timestamp) ? fromJsonTimestamp(object.timestamp) : undefined,\n      paymentState: isSet(object.paymentState) ? paymentStateFromJSON(object.paymentState) : undefined,\n      sender: isSet(object.sender) ? ShippingAddress.fromJSON(object.sender) : undefined,\n      recipient: isSet(object.recipient) ? ShippingAddress.fromJSON(object.recipient) : undefined,\n      sections: globalThis.Array.isArray(object?.sections)\n        ? object.sections.map((e: any) => Section.fromJSON(e))\n        : undefined,\n      totalAmounts: globalThis.Array.isArray(object?.totalAmounts)\n        ? object.totalAmounts.map((e: any) => Amount.fromJSON(e))\n        : undefined,\n      paymentHints: globalThis.Array.isArray(object?.paymentHints)\n        ? object.paymentHints.map((e: any) => globalThis.String(e))\n        : undefined,\n      documents: globalThis.Array.isArray(object?.documents)\n        ? object.documents.map((e: any) => File.fromJSON(e))\n        : undefined,\n      fromDate: isSet(object.fromDate) ? fromJsonTimestamp(object.fromDate) : undefined,\n      toDate: isSet(object.toDate) ? fromJsonTimestamp(object.toDate) : undefined,\n      sent: isSet(object.sent) ? globalThis.Boolean(object.sent) : undefined,\n      withdrawn: isSet(object.withdrawn) ? globalThis.Boolean(object.withdrawn) : undefined,\n      customerOrderNumber: isSet(object.customerOrderNumber)\n        ? globalThis.String(object.customerOrderNumber)\n        : undefined,\n      customerVatId: isSet(object.customerVatId) ? globalThis.String(object.customerVatId) : undefined,\n      billingAddress: isSet(object.billingAddress) ? BillingAddress.fromJSON(object.billingAddress) : undefined,\n    };\n  },\n\n  toJSON(message: Invoice): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.invoiceNumber !== undefined) {\n      obj.invoiceNumber = message.invoiceNumber;\n    }\n    if (message.references?.length) {\n      obj.references = message.references.map((e) => Reference.toJSON(e));\n    }\n    if (message.userId !== undefined) {\n      obj.userId = message.userId;\n    }\n    if (message.customerId !== undefined) {\n      obj.customerId = message.customerId;\n    }\n    if (message.shopId !== undefined) {\n      obj.shopId = message.shopId;\n    }\n    if (message.timestamp !== undefined) {\n      obj.timestamp = message.timestamp.toISOString();\n    }\n    if (message.paymentState !== undefined) {\n      obj.paymentState = paymentStateToJSON(message.paymentState);\n    }\n    if (message.sender !== undefined) {\n      obj.sender = ShippingAddress.toJSON(message.sender);\n    }\n    if (message.recipient !== undefined) {\n      obj.recipient = ShippingAddress.toJSON(message.recipient);\n    }\n    if (message.sections?.length) {\n      obj.sections = message.sections.map((e) => Section.toJSON(e));\n    }\n    if (message.totalAmounts?.length) {\n      obj.totalAmounts = message.totalAmounts.map((e) => Amount.toJSON(e));\n    }\n    if (message.paymentHints?.length) {\n      obj.paymentHints = message.paymentHints;\n    }\n    if (message.documents?.length) {\n      obj.documents = message.documents.map((e) => File.toJSON(e));\n    }\n    if (message.fromDate !== undefined) {\n      obj.fromDate = message.fromDate.toISOString();\n    }\n    if (message.toDate !== undefined) {\n      obj.toDate = message.toDate.toISOString();\n    }\n    if (message.sent !== undefined) {\n      obj.sent = message.sent;\n    }\n    if (message.withdrawn !== undefined) {\n      obj.withdrawn = message.withdrawn;\n    }\n    if (message.customerOrderNumber !== undefined) {\n      obj.customerOrderNumber = message.customerOrderNumber;\n    }\n    if (message.customerVatId !== undefined) {\n      obj.customerVatId = message.customerVatId;\n    }\n    if (message.billingAddress !== undefined) {\n      obj.billingAddress = BillingAddress.toJSON(message.billingAddress);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Invoice>): Invoice {\n    return Invoice.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Invoice>): Invoice {\n    const message = createBaseInvoice();\n    message.id = object.id ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.invoiceNumber = object.invoiceNumber ?? undefined;\n    message.references = object.references?.map((e) => Reference.fromPartial(e)) || undefined;\n    message.userId = object.userId ?? undefined;\n    message.customerId = object.customerId ?? undefined;\n    message.shopId = object.shopId ?? undefined;\n    message.timestamp = object.timestamp ?? undefined;\n    message.paymentState = object.paymentState ?? undefined;\n    message.sender = (object.sender !== undefined && object.sender !== null)\n      ? ShippingAddress.fromPartial(object.sender)\n      : undefined;\n    message.recipient = (object.recipient !== undefined && object.recipient !== null)\n      ? ShippingAddress.fromPartial(object.recipient)\n      : undefined;\n    message.sections = object.sections?.map((e) => Section.fromPartial(e)) || undefined;\n    message.totalAmounts = object.totalAmounts?.map((e) => Amount.fromPartial(e)) || undefined;\n    message.paymentHints = object.paymentHints?.map((e) => e) || undefined;\n    message.documents = object.documents?.map((e) => File.fromPartial(e)) || undefined;\n    message.fromDate = object.fromDate ?? undefined;\n    message.toDate = object.toDate ?? undefined;\n    message.sent = object.sent ?? undefined;\n    message.withdrawn = object.withdrawn ?? undefined;\n    message.customerOrderNumber = object.customerOrderNumber ?? undefined;\n    message.customerVatId = object.customerVatId ?? undefined;\n    message.billingAddress = (object.billingAddress !== undefined && object.billingAddress !== null)\n      ? BillingAddress.fromPartial(object.billingAddress)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseSection(): Section {\n  return {};\n}\n\nexport const Section: MessageFns<Section> = {\n  encode(message: Section, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.customerRemark !== undefined) {\n      writer.uint32(18).string(message.customerRemark);\n    }\n    if (message.positions !== undefined && message.positions.length !== 0) {\n      for (const v of message.positions) {\n        Position.encode(v!, writer.uint32(26).fork()).join();\n      }\n    }\n    if (message.amounts !== undefined && message.amounts.length !== 0) {\n      for (const v of message.amounts) {\n        Amount.encode(v!, writer.uint32(42).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Section {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseSection();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.customerRemark = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          if (message.positions === undefined) {\n            message.positions = [];\n          }\n          const el = Position.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.positions!.push(el);\n          }\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          if (message.amounts === undefined) {\n            message.amounts = [];\n          }\n          const el = Amount.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.amounts!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Section {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      customerRemark: isSet(object.customerRemark) ? globalThis.String(object.customerRemark) : undefined,\n      positions: globalThis.Array.isArray(object?.positions)\n        ? object.positions.map((e: any) => Position.fromJSON(e))\n        : undefined,\n      amounts: globalThis.Array.isArray(object?.amounts)\n        ? object.amounts.map((e: any) => Amount.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: Section): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.customerRemark !== undefined) {\n      obj.customerRemark = message.customerRemark;\n    }\n    if (message.positions?.length) {\n      obj.positions = message.positions.map((e) => Position.toJSON(e));\n    }\n    if (message.amounts?.length) {\n      obj.amounts = message.amounts.map((e) => Amount.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Section>): Section {\n    return Section.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Section>): Section {\n    const message = createBaseSection();\n    message.id = object.id ?? undefined;\n    message.customerRemark = object.customerRemark ?? undefined;\n    message.positions = object.positions?.map((e) => Position.fromPartial(e)) || undefined;\n    message.amounts = object.amounts?.map((e) => Amount.fromPartial(e)) || undefined;\n    return message;\n  },\n};\n\nfunction createBasePosition(): Position {\n  return {};\n}\n\nexport const Position: MessageFns<Position> = {\n  encode(message: Position, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.productItem !== undefined) {\n      ProductItem.encode(message.productItem, writer.uint32(18).fork()).join();\n    }\n    if (message.fulfillmentItem !== undefined) {\n      FulfillmentItem.encode(message.fulfillmentItem, writer.uint32(26).fork()).join();\n    }\n    if (message.manualItem !== undefined) {\n      ManualItem.encode(message.manualItem, writer.uint32(34).fork()).join();\n    }\n    if (message.unitPrice !== undefined) {\n      Price.encode(message.unitPrice, writer.uint32(42).fork()).join();\n    }\n    if (message.quantity !== undefined) {\n      writer.uint32(48).uint32(message.quantity);\n    }\n    if (message.amount !== undefined) {\n      Amount.encode(message.amount, writer.uint32(58).fork()).join();\n    }\n    if (message.fromDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.fromDate), writer.uint32(66).fork()).join();\n    }\n    if (message.toDate !== undefined) {\n      Timestamp.encode(toTimestamp(message.toDate), writer.uint32(74).fork()).join();\n    }\n    if (message.attributes !== undefined && message.attributes.length !== 0) {\n      for (const v of message.attributes) {\n        Attribute.encode(v!, writer.uint32(82).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Position {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePosition();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.productItem = ProductItem.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.fulfillmentItem = FulfillmentItem.decode(reader, reader.uint32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.manualItem = ManualItem.decode(reader, reader.uint32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.unitPrice = Price.decode(reader, reader.uint32());\n          continue;\n        }\n        case 6: {\n          if (tag !== 48) {\n            break;\n          }\n\n          message.quantity = reader.uint32();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.amount = Amount.decode(reader, reader.uint32());\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.fromDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.toDate = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          if (message.attributes === undefined) {\n            message.attributes = [];\n          }\n          const el = Attribute.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.attributes!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Position {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      productItem: isSet(object.productItem) ? ProductItem.fromJSON(object.productItem) : undefined,\n      fulfillmentItem: isSet(object.fulfillmentItem) ? FulfillmentItem.fromJSON(object.fulfillmentItem) : undefined,\n      manualItem: isSet(object.manualItem) ? ManualItem.fromJSON(object.manualItem) : undefined,\n      unitPrice: isSet(object.unitPrice) ? Price.fromJSON(object.unitPrice) : undefined,\n      quantity: isSet(object.quantity) ? globalThis.Number(object.quantity) : undefined,\n      amount: isSet(object.amount) ? Amount.fromJSON(object.amount) : undefined,\n      fromDate: isSet(object.fromDate) ? fromJsonTimestamp(object.fromDate) : undefined,\n      toDate: isSet(object.toDate) ? fromJsonTimestamp(object.toDate) : undefined,\n      attributes: globalThis.Array.isArray(object?.attributes)\n        ? object.attributes.map((e: any) => Attribute.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: Position): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.productItem !== undefined) {\n      obj.productItem = ProductItem.toJSON(message.productItem);\n    }\n    if (message.fulfillmentItem !== undefined) {\n      obj.fulfillmentItem = FulfillmentItem.toJSON(message.fulfillmentItem);\n    }\n    if (message.manualItem !== undefined) {\n      obj.manualItem = ManualItem.toJSON(message.manualItem);\n    }\n    if (message.unitPrice !== undefined) {\n      obj.unitPrice = Price.toJSON(message.unitPrice);\n    }\n    if (message.quantity !== undefined) {\n      obj.quantity = Math.round(message.quantity);\n    }\n    if (message.amount !== undefined) {\n      obj.amount = Amount.toJSON(message.amount);\n    }\n    if (message.fromDate !== undefined) {\n      obj.fromDate = message.fromDate.toISOString();\n    }\n    if (message.toDate !== undefined) {\n      obj.toDate = message.toDate.toISOString();\n    }\n    if (message.attributes?.length) {\n      obj.attributes = message.attributes.map((e) => Attribute.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Position>): Position {\n    return Position.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Position>): Position {\n    const message = createBasePosition();\n    message.id = object.id ?? undefined;\n    message.productItem = (object.productItem !== undefined && object.productItem !== null)\n      ? ProductItem.fromPartial(object.productItem)\n      : undefined;\n    message.fulfillmentItem = (object.fulfillmentItem !== undefined && object.fulfillmentItem !== null)\n      ? FulfillmentItem.fromPartial(object.fulfillmentItem)\n      : undefined;\n    message.manualItem = (object.manualItem !== undefined && object.manualItem !== null)\n      ? ManualItem.fromPartial(object.manualItem)\n      : undefined;\n    message.unitPrice = (object.unitPrice !== undefined && object.unitPrice !== null)\n      ? Price.fromPartial(object.unitPrice)\n      : undefined;\n    message.quantity = object.quantity ?? undefined;\n    message.amount = (object.amount !== undefined && object.amount !== null)\n      ? Amount.fromPartial(object.amount)\n      : undefined;\n    message.fromDate = object.fromDate ?? undefined;\n    message.toDate = object.toDate ?? undefined;\n    message.attributes = object.attributes?.map((e) => Attribute.fromPartial(e)) || undefined;\n    return message;\n  },\n};\n\nfunction createBaseProductItem(): ProductItem {\n  return {};\n}\n\nexport const ProductItem: MessageFns<ProductItem> = {\n  encode(message: ProductItem, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.productId !== undefined) {\n      writer.uint32(10).string(message.productId);\n    }\n    if (message.variantId !== undefined) {\n      writer.uint32(18).string(message.variantId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ProductItem {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseProductItem();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.productId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.variantId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ProductItem {\n    return {\n      productId: isSet(object.productId) ? globalThis.String(object.productId) : undefined,\n      variantId: isSet(object.variantId) ? globalThis.String(object.variantId) : undefined,\n    };\n  },\n\n  toJSON(message: ProductItem): unknown {\n    const obj: any = {};\n    if (message.productId !== undefined) {\n      obj.productId = message.productId;\n    }\n    if (message.variantId !== undefined) {\n      obj.variantId = message.variantId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ProductItem>): ProductItem {\n    return ProductItem.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ProductItem>): ProductItem {\n    const message = createBaseProductItem();\n    message.productId = object.productId ?? undefined;\n    message.variantId = object.variantId ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseFulfillmentItem(): FulfillmentItem {\n  return {};\n}\n\nexport const FulfillmentItem: MessageFns<FulfillmentItem> = {\n  encode(message: FulfillmentItem, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.productId !== undefined) {\n      writer.uint32(10).string(message.productId);\n    }\n    if (message.variantId !== undefined) {\n      writer.uint32(18).string(message.variantId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FulfillmentItem {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFulfillmentItem();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.productId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.variantId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FulfillmentItem {\n    return {\n      productId: isSet(object.productId) ? globalThis.String(object.productId) : undefined,\n      variantId: isSet(object.variantId) ? globalThis.String(object.variantId) : undefined,\n    };\n  },\n\n  toJSON(message: FulfillmentItem): unknown {\n    const obj: any = {};\n    if (message.productId !== undefined) {\n      obj.productId = message.productId;\n    }\n    if (message.variantId !== undefined) {\n      obj.variantId = message.variantId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FulfillmentItem>): FulfillmentItem {\n    return FulfillmentItem.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FulfillmentItem>): FulfillmentItem {\n    const message = createBaseFulfillmentItem();\n    message.productId = object.productId ?? undefined;\n    message.variantId = object.variantId ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseManualItem(): ManualItem {\n  return {};\n}\n\nexport const ManualItem: MessageFns<ManualItem> = {\n  encode(message: ManualItem, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.stockKeepingUnit !== undefined) {\n      writer.uint32(10).string(message.stockKeepingUnit);\n    }\n    if (message.name !== undefined) {\n      writer.uint32(18).string(message.name);\n    }\n    if (message.descritpion !== undefined) {\n      writer.uint32(26).string(message.descritpion);\n    }\n    if (message.properties !== undefined && message.properties.length !== 0) {\n      for (const v of message.properties) {\n        Property.encode(v!, writer.uint32(34).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ManualItem {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseManualItem();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.stockKeepingUnit = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.descritpion = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          if (message.properties === undefined) {\n            message.properties = [];\n          }\n          const el = Property.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.properties!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ManualItem {\n    return {\n      stockKeepingUnit: isSet(object.stockKeepingUnit) ? globalThis.String(object.stockKeepingUnit) : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      descritpion: isSet(object.descritpion) ? globalThis.String(object.descritpion) : undefined,\n      properties: globalThis.Array.isArray(object?.properties)\n        ? object.properties.map((e: any) => Property.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: ManualItem): unknown {\n    const obj: any = {};\n    if (message.stockKeepingUnit !== undefined) {\n      obj.stockKeepingUnit = message.stockKeepingUnit;\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.descritpion !== undefined) {\n      obj.descritpion = message.descritpion;\n    }\n    if (message.properties?.length) {\n      obj.properties = message.properties.map((e) => Property.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ManualItem>): ManualItem {\n    return ManualItem.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ManualItem>): ManualItem {\n    const message = createBaseManualItem();\n    message.stockKeepingUnit = object.stockKeepingUnit ?? undefined;\n    message.name = object.name ?? undefined;\n    message.descritpion = object.descritpion ?? undefined;\n    message.properties = object.properties?.map((e) => Property.fromPartial(e)) || undefined;\n    return message;\n  },\n};\n\n/** Microservice definition. */\nexport type InvoiceServiceDefinition = typeof InvoiceServiceDefinition;\nexport const InvoiceServiceDefinition = {\n  name: \"InvoiceService\",\n  fullName: \"io.restorecommerce.invoice.InvoiceService\",\n  methods: {\n    read: {\n      name: \"Read\",\n      requestType: ReadRequest,\n      requestStream: false,\n      responseType: InvoiceListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    create: {\n      name: \"Create\",\n      requestType: InvoiceList,\n      requestStream: false,\n      responseType: InvoiceListResponse,\n      responseStream: false,\n      options: {},\n    },\n    update: {\n      name: \"Update\",\n      requestType: InvoiceList,\n      requestStream: false,\n      responseType: InvoiceListResponse,\n      responseStream: false,\n      options: {},\n    },\n    upsert: {\n      name: \"Upsert\",\n      requestType: InvoiceList,\n      requestStream: false,\n      responseType: InvoiceListResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Evaluates and (re-)Renders invoices as PDF to ostorage. (creates if not exist, updates if id is given) */\n    render: {\n      name: \"Render\",\n      requestType: InvoiceList,\n      requestStream: false,\n      responseType: InvoiceListResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Mark invoices as withdrawn */\n    withdraw: {\n      name: \"Withdraw\",\n      requestType: InvoiceIdList,\n      requestStream: false,\n      responseType: InvoiceListResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Triggers notification-srv (sends invoice per email for instance) */\n    send: {\n      name: \"Send\",\n      requestType: InvoiceIdList,\n      requestStream: false,\n      responseType: StatusListResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Generate an incremented invoice number */\n    generateInvoiceNumber: {\n      name: \"GenerateInvoiceNumber\",\n      requestType: RequestInvoiceNumber,\n      requestStream: false,\n      responseType: InvoiceNumberResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface InvoiceServiceImplementation<CallContextExt = {}> {\n  read(request: ReadRequest, context: CallContext & CallContextExt): Promise<DeepPartial<InvoiceListResponse>>;\n  create(request: InvoiceList, context: CallContext & CallContextExt): Promise<DeepPartial<InvoiceListResponse>>;\n  update(request: InvoiceList, context: CallContext & CallContextExt): Promise<DeepPartial<InvoiceListResponse>>;\n  upsert(request: InvoiceList, context: CallContext & CallContextExt): Promise<DeepPartial<InvoiceListResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n  /** Evaluates and (re-)Renders invoices as PDF to ostorage. (creates if not exist, updates if id is given) */\n  render(request: InvoiceList, context: CallContext & CallContextExt): Promise<DeepPartial<InvoiceListResponse>>;\n  /** Mark invoices as withdrawn */\n  withdraw(request: InvoiceIdList, context: CallContext & CallContextExt): Promise<DeepPartial<InvoiceListResponse>>;\n  /** Triggers notification-srv (sends invoice per email for instance) */\n  send(request: InvoiceIdList, context: CallContext & CallContextExt): Promise<DeepPartial<StatusListResponse>>;\n  /** Generate an incremented invoice number */\n  generateInvoiceNumber(\n    request: RequestInvoiceNumber,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<InvoiceNumberResponse>>;\n}\n\nexport interface InvoiceServiceClient<CallOptionsExt = {}> {\n  read(request: DeepPartial<ReadRequest>, options?: CallOptions & CallOptionsExt): Promise<InvoiceListResponse>;\n  create(request: DeepPartial<InvoiceList>, options?: CallOptions & CallOptionsExt): Promise<InvoiceListResponse>;\n  update(request: DeepPartial<InvoiceList>, options?: CallOptions & CallOptionsExt): Promise<InvoiceListResponse>;\n  upsert(request: DeepPartial<InvoiceList>, options?: CallOptions & CallOptionsExt): Promise<InvoiceListResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n  /** Evaluates and (re-)Renders invoices as PDF to ostorage. (creates if not exist, updates if id is given) */\n  render(request: DeepPartial<InvoiceList>, options?: CallOptions & CallOptionsExt): Promise<InvoiceListResponse>;\n  /** Mark invoices as withdrawn */\n  withdraw(request: DeepPartial<InvoiceIdList>, options?: CallOptions & CallOptionsExt): Promise<InvoiceListResponse>;\n  /** Triggers notification-srv (sends invoice per email for instance) */\n  send(request: DeepPartial<InvoiceIdList>, options?: CallOptions & CallOptionsExt): Promise<StatusListResponse>;\n  /** Generate an incremented invoice number */\n  generateInvoiceNumber(\n    request: DeepPartial<RequestInvoiceNumber>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<InvoiceNumberResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/invoice.proto\",\n    \"package\": \"io.restorecommerce.invoice\",\n    \"dependency\": [\n      \"google/protobuf/any.proto\",\n      \"io/restorecommerce/resource_base.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/organization.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/options.proto\",\n      \"io/restorecommerce/address.proto\",\n      \"io/restorecommerce/amount.proto\",\n      \"io/restorecommerce/price.proto\",\n      \"io/restorecommerce/file.proto\",\n      \"io/restorecommerce/reference.proto\",\n      \"io/restorecommerce/attribute.proto\",\n      \"io/restorecommerce/property.proto\",\n      \"io/restorecommerce/user.proto\",\n      \"io/restorecommerce/customer.proto\",\n      \"io/restorecommerce/shop.proto\",\n      \"google/protobuf/timestamp.proto\",\n      \"io/restorecommerce/product.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"RequestInvoiceNumber\",\n      \"field\": [{\n        \"name\": \"shop_id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"shopId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"context\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Any\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"context\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_shop_id\", \"options\": undefined }, { \"name\": \"_context\", \"options\": undefined }, {\n        \"name\": \"_subject\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"InvoiceNumberResponse\",\n      \"field\": [{\n        \"name\": \"invoice_number\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"invoiceNumber\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_invoice_number\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Deleted\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"InvoiceList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.invoice.Invoice\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"InvoiceListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.invoice.InvoiceResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"InvoiceResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.invoice.Invoice\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"InvoiceId\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"document_ids\",\n        \"number\": 2,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"documentIds\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"notification_channel_ids\",\n        \"number\": 3,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"notificationChannelIds\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"options\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Any\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"options\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }, { \"name\": \"_options\", \"options\": undefined }, {\n        \"name\": \"_subject\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"InvoiceIdList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.invoice.InvoiceId\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Invoice\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"invoice_number\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"invoiceNumber\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"references\",\n        \"number\": 4,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.reference.Reference\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"references\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"user_id\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"userId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"customer_id\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"customerId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"shop_id\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"shopId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"timestamp\",\n        \"number\": 8,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Timestamp\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"timestamp\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"payment_state\",\n        \"number\": 9,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".io.restorecommerce.invoice.PaymentState\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 7,\n        \"jsonName\": \"paymentState\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"sender\",\n        \"number\": 10,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.address.ShippingAddress\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 8,\n        \"jsonName\": \"sender\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"recipient\",\n        \"number\": 11,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.address.ShippingAddress\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 9,\n        \"jsonName\": \"recipient\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"sections\",\n        \"number\": 12,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.invoice.Section\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"sections\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_amounts\",\n        \"number\": 13,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.amount.Amount\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalAmounts\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"payment_hints\",\n        \"number\": 14,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"paymentHints\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"documents\",\n        \"number\": 15,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.file.File\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"documents\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"from_date\",\n        \"number\": 16,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Timestamp\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 10,\n        \"jsonName\": \"fromDate\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"to_date\",\n        \"number\": 17,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Timestamp\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 11,\n        \"jsonName\": \"toDate\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"sent\",\n        \"number\": 18,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 12,\n        \"jsonName\": \"sent\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"withdrawn\",\n        \"number\": 19,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 13,\n        \"jsonName\": \"withdrawn\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"customer_order_number\",\n        \"number\": 20,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 14,\n        \"jsonName\": \"customerOrderNumber\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"customer_vat_id\",\n        \"number\": 21,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 15,\n        \"jsonName\": \"customerVatId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"billing_address\",\n        \"number\": 22,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.address.BillingAddress\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 16,\n        \"jsonName\": \"billingAddress\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_invoice_number\", \"options\": undefined },\n        { \"name\": \"_user_id\", \"options\": undefined },\n        { \"name\": \"_customer_id\", \"options\": undefined },\n        { \"name\": \"_shop_id\", \"options\": undefined },\n        { \"name\": \"_timestamp\", \"options\": undefined },\n        { \"name\": \"_payment_state\", \"options\": undefined },\n        { \"name\": \"_sender\", \"options\": undefined },\n        { \"name\": \"_recipient\", \"options\": undefined },\n        { \"name\": \"_from_date\", \"options\": undefined },\n        { \"name\": \"_to_date\", \"options\": undefined },\n        { \"name\": \"_sent\", \"options\": undefined },\n        { \"name\": \"_withdrawn\", \"options\": undefined },\n        { \"name\": \"_customer_order_number\", \"options\": undefined },\n        { \"name\": \"_customer_vat_id\", \"options\": undefined },\n        { \"name\": \"_billing_address\", \"options\": undefined },\n      ],\n      \"options\": {\n        \"messageSetWireFormat\": false,\n        \"noStandardDescriptorAccessor\": false,\n        \"deprecated\": false,\n        \"mapEntry\": false,\n        \"uninterpretedOption\": [],\n      },\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Section\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"customer_remark\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"customerRemark\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"positions\",\n        \"number\": 3,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.invoice.Position\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"positions\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"amounts\",\n        \"number\": 5,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.amount.Amount\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"amounts\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }, { \"name\": \"_customer_remark\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Position\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"product_item\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.invoice.ProductItem\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"productItem\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"fulfillment_item\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.invoice.FulfillmentItem\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"fulfillmentItem\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"manual_item\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.invoice.ManualItem\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"manualItem\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"unit_price\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.price.Price\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"unitPrice\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"quantity\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"quantity\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"amount\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.amount.Amount\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"amount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"from_date\",\n        \"number\": 8,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Timestamp\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"fromDate\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"to_date\",\n        \"number\": 9,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Timestamp\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"toDate\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"attributes\",\n        \"number\": 10,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.attribute.Attribute\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"attributes\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"item_type\", \"options\": undefined },\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_unit_price\", \"options\": undefined },\n        { \"name\": \"_quantity\", \"options\": undefined },\n        { \"name\": \"_amount\", \"options\": undefined },\n        { \"name\": \"_from_date\", \"options\": undefined },\n        { \"name\": \"_to_date\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ProductItem\",\n      \"field\": [{\n        \"name\": \"product_id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"productId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"variant_id\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"variantId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_product_id\", \"options\": undefined }, { \"name\": \"_variant_id\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"FulfillmentItem\",\n      \"field\": [{\n        \"name\": \"product_id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"productId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"variant_id\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"variantId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_product_id\", \"options\": undefined }, { \"name\": \"_variant_id\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ManualItem\",\n      \"field\": [{\n        \"name\": \"stock_keeping_unit\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"stockKeepingUnit\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"name\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"descritpion\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"descritpion\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"properties\",\n        \"number\": 4,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.property.Property\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"properties\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_stock_keeping_unit\", \"options\": undefined },\n        { \"name\": \"_name\", \"options\": undefined },\n        { \"name\": \"_descritpion\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [{\n      \"name\": \"PaymentState\",\n      \"value\": [{ \"name\": \"UNPAYED\", \"number\": 0, \"options\": undefined }, {\n        \"name\": \"PAYED\",\n        \"number\": 1,\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"service\": [{\n      \"name\": \"InvoiceService\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ReadRequest\",\n        \"outputType\": \".io.restorecommerce.invoice.InvoiceListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.invoice.InvoiceList\",\n        \"outputType\": \".io.restorecommerce.invoice.InvoiceListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.invoice.InvoiceList\",\n        \"outputType\": \".io.restorecommerce.invoice.InvoiceListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.invoice.InvoiceList\",\n        \"outputType\": \".io.restorecommerce.invoice.InvoiceListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Render\",\n        \"inputType\": \".io.restorecommerce.invoice.InvoiceList\",\n        \"outputType\": \".io.restorecommerce.invoice.InvoiceListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Withdraw\",\n        \"inputType\": \".io.restorecommerce.invoice.InvoiceIdList\",\n        \"outputType\": \".io.restorecommerce.invoice.InvoiceListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Send\",\n        \"inputType\": \".io.restorecommerce.invoice.InvoiceIdList\",\n        \"outputType\": \".io.restorecommerce.status.StatusListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"GenerateInvoiceNumber\",\n        \"inputType\": \".io.restorecommerce.invoice.RequestInvoiceNumber\",\n        \"outputType\": \".io.restorecommerce.invoice.InvoiceNumberResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [3, 14],\n        \"span\": [20, 0, 39],\n        \"leadingComments\": \" Used by resolvers\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0],\n        \"span\": [29, 0, 57, 1],\n        \"leadingComments\": \"\\n Microservice definition.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0, 2, 5],\n        \"span\": [41, 2, 57],\n        \"leadingComments\":\n          \"\\n Evaluates and (re-)Renders invoices as PDF to ostorage. (creates if not exist, updates if id is given)\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0, 2, 6],\n        \"span\": [46, 2, 61],\n        \"leadingComments\": \"\\n Mark invoices as withdrawn\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0, 2, 7],\n        \"span\": [51, 2, 82],\n        \"leadingComments\": \"\\n Triggers notification-srv (sends invoice per email for instance) \\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0, 2, 8],\n        \"span\": [56, 2, 82],\n        \"leadingComments\": \"\\n Generate an incremented invoice number\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 6, 2, 1],\n        \"span\": [98, 2, 35],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" empty takes latest\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 8],\n        \"span\": [113, 0, 168, 1],\n        \"leadingComments\": \"\\n The Invoice recource, stored in DB.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 8, 2, 5],\n        \"span\": [135, 2, 143, 4],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" customer_number ref. to recipent orga\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 8, 2, 6],\n        \"span\": [144, 2, 152, 4],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" shop_number --- ref. to sender orga\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 8, 2, 14],\n        \"span\": [160, 2, 55],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" url to rendered PDFs\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 8, 2, 15],\n        \"span\": [161, 2, 52],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" value performance from date\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 8, 2, 16],\n        \"span\": [162, 2, 50],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" value performance to date\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 9, 2, 3],\n        \"span\": [174, 2, 56],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" repeated in case of multiple currencies?\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 10, 2, 7],\n        \"span\": [187, 2, 51],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" value performance from date\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 10, 2, 8],\n        \"span\": [188, 2, 49],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" value performance to date\\n\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.invoice.PaymentState\": PaymentState,\n    \".io.restorecommerce.invoice.RequestInvoiceNumber\": RequestInvoiceNumber,\n    \".io.restorecommerce.invoice.InvoiceNumberResponse\": InvoiceNumberResponse,\n    \".io.restorecommerce.invoice.Deleted\": Deleted,\n    \".io.restorecommerce.invoice.InvoiceList\": InvoiceList,\n    \".io.restorecommerce.invoice.InvoiceListResponse\": InvoiceListResponse,\n    \".io.restorecommerce.invoice.InvoiceResponse\": InvoiceResponse,\n    \".io.restorecommerce.invoice.InvoiceId\": InvoiceId,\n    \".io.restorecommerce.invoice.InvoiceIdList\": InvoiceIdList,\n    \".io.restorecommerce.invoice.Invoice\": Invoice,\n    \".io.restorecommerce.invoice.Section\": Section,\n    \".io.restorecommerce.invoice.Position\": Position,\n    \".io.restorecommerce.invoice.ProductItem\": ProductItem,\n    \".io.restorecommerce.invoice.FulfillmentItem\": FulfillmentItem,\n    \".io.restorecommerce.invoice.ManualItem\": ManualItem,\n  },\n  dependencies: [\n    protoMetadata1,\n    protoMetadata2,\n    protoMetadata3,\n    protoMetadata4,\n    protoMetadata5,\n    protoMetadata6,\n    protoMetadata7,\n    protoMetadata8,\n    protoMetadata9,\n    protoMetadata10,\n    protoMetadata11,\n    protoMetadata12,\n    protoMetadata13,\n    protoMetadata14,\n    protoMetadata15,\n    protoMetadata16,\n    protoMetadata17,\n    protoMetadata18,\n    protoMetadata19,\n  ],\n  options: {\n    messages: {\n      \"Invoice\": {\n        options: {\n          \"kafka_subscriber\": KafkaSubscription.decode(\n            Buffer.from(\n              \"CghpbnZvaWNlcxIjaW8ucmVzdG9yZWNvbW1lcmNlLmludm9pY2UucmVzb3VyY2UaDmludm9pY2VDcmVhdGVkIg5pbnZvaWNlVXBkYXRlZCoOaW52b2ljZURlbGV0ZWQ=\",\n              \"base64\",\n            ),\n          ),\n        },\n        fields: {\n          \"user_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\"Ch0uaW8ucmVzdG9yZWNvbW1lcmNlLnVzZXIuVXNlchIIaWRlbnRpdHkaBHVzZXIiBFJlYWQqBHVzZXI=\", \"base64\"),\n            ),\n          },\n          \"customer_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CiUuaW8ucmVzdG9yZWNvbW1lcmNlLmN1c3RvbWVyLkN1c3RvbWVyEgttYXN0ZXJfZGF0YRoIY3VzdG9tZXIiBFJlYWQqCGN1c3RvbWVy\",\n                \"base64\",\n              ),\n            ),\n          },\n          \"shop_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"Ch0uaW8ucmVzdG9yZWNvbW1lcmNlLnNob3AuU2hvcBILbWFzdGVyX2RhdGEaBHNob3AiBFJlYWQqBHNob3A=\",\n                \"base64\",\n              ),\n            ),\n          },\n        },\n      },\n      \"ProductItem\": {\n        fields: {\n          \"product_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CiMuaW8ucmVzdG9yZWNvbW1lcmNlLnByb2R1Y3QuUHJvZHVjdBIHY2F0YWxvZxoHcHJvZHVjdCIEUmVhZCoHcHJvZHVjdA==\",\n                \"base64\",\n              ),\n            ),\n          },\n        },\n      },\n      \"FulfillmentItem\": {\n        fields: {\n          \"product_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CjouaW8ucmVzdG9yZWNvbW1lcmNlLmZ1bGZpbGxtZW50X3Byb2R1Y3QuRnVsZmlsbG1lbnRQcm9kdWN0EgtmdWxmaWxsbWVudBoTZnVsZmlsbG1lbnRfcHJvZHVjdCIEUmVhZCoHcHJvZHVjdA==\",\n                \"base64\",\n              ),\n            ),\n          },\n        },\n      },\n    },\n    services: { \"InvoiceService\": { methods: { \"Read\": { \"is_query\": true } } } },\n  },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction toTimestamp(date: Date): Timestamp {\n  const seconds = Math.trunc(date.getTime() / 1_000);\n  const nanos = (date.getTime() % 1_000) * 1_000_000;\n  return { seconds, nanos };\n}\n\nfunction fromTimestamp(t: Timestamp): Date {\n  let millis = (t.seconds || 0) * 1_000;\n  millis += (t.nanos || 0) / 1_000_000;\n  return new globalThis.Date(millis);\n}\n\nfunction fromJsonTimestamp(o: any): Date {\n  if (o instanceof globalThis.Date) {\n    return o;\n  } else if (typeof o === \"string\") {\n    return new globalThis.Date(o);\n  } else {\n    return fromTimestamp(Timestamp.fromJSON(o));\n  }\n}\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/fulfillment.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { Any, protoMetadata as protoMetadata1 } from \"../../google/protobuf/any\";\nimport { protoMetadata as protoMetadata15, Timestamp } from \"../../google/protobuf/timestamp\";\nimport { protoMetadata as protoMetadata7, ShippingAddress } from \"./address\";\nimport { Amount, protoMetadata as protoMetadata12 } from \"./amount\";\nimport { protoMetadata as protoMetadata4, Subject } from \"./auth\";\nimport { protoMetadata as protoMetadata8 } from \"./country\";\nimport { protoMetadata as protoMetadata17 } from \"./customer\";\nimport { File, protoMetadata as protoMetadata14 } from \"./file\";\nimport { InvoiceListResponse, protoMetadata as protoMetadata13 } from \"./invoice\";\nimport { Meta, protoMetadata as protoMetadata6 } from \"./meta\";\nimport { KafkaSubscription, protoMetadata as protoMetadata10, Resolver } from \"./options\";\nimport { Price, protoMetadata as protoMetadata11 } from \"./price\";\nimport { Package, protoMetadata as protoMetadata9 } from \"./product\";\nimport { protoMetadata as protoMetadata2, Reference } from \"./reference\";\nimport { DeleteRequest, DeleteResponse, protoMetadata as protoMetadata3, ReadRequest } from \"./resource_base\";\nimport { protoMetadata as protoMetadata18 } from \"./shop\";\nimport { OperationStatus, protoMetadata as protoMetadata5, Status, StatusListResponse } from \"./status\";\nimport { protoMetadata as protoMetadata16 } from \"./user\";\n\nexport const protobufPackage = \"io.restorecommerce.fulfillment\";\n\nexport enum FulfillmentState {\n  PENDING = \"PENDING\",\n  SUBMITTED = \"SUBMITTED\",\n  IN_TRANSIT = \"IN_TRANSIT\",\n  COMPLETE = \"COMPLETE\",\n  CANCELLED = \"CANCELLED\",\n  WITHDRAWN = \"WITHDRAWN\",\n  RETOURE = \"RETOURE\",\n  RETOURE_COMPLETE = \"RETOURE_COMPLETE\",\n  FAILED = \"FAILED\",\n  INVALID = \"INVALID\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function fulfillmentStateFromJSON(object: any): FulfillmentState {\n  switch (object) {\n    case 0:\n    case \"PENDING\":\n      return FulfillmentState.PENDING;\n    case 1:\n    case \"SUBMITTED\":\n      return FulfillmentState.SUBMITTED;\n    case 2:\n    case \"IN_TRANSIT\":\n      return FulfillmentState.IN_TRANSIT;\n    case 3:\n    case \"COMPLETE\":\n      return FulfillmentState.COMPLETE;\n    case 4:\n    case \"CANCELLED\":\n      return FulfillmentState.CANCELLED;\n    case 5:\n    case \"WITHDRAWN\":\n      return FulfillmentState.WITHDRAWN;\n    case 6:\n    case \"RETOURE\":\n      return FulfillmentState.RETOURE;\n    case 7:\n    case \"RETOURE_COMPLETE\":\n      return FulfillmentState.RETOURE_COMPLETE;\n    case 8:\n    case \"FAILED\":\n      return FulfillmentState.FAILED;\n    case 9:\n    case \"INVALID\":\n      return FulfillmentState.INVALID;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return FulfillmentState.UNRECOGNIZED;\n  }\n}\n\nexport function fulfillmentStateToJSON(object: FulfillmentState): string {\n  switch (object) {\n    case FulfillmentState.PENDING:\n      return \"PENDING\";\n    case FulfillmentState.SUBMITTED:\n      return \"SUBMITTED\";\n    case FulfillmentState.IN_TRANSIT:\n      return \"IN_TRANSIT\";\n    case FulfillmentState.COMPLETE:\n      return \"COMPLETE\";\n    case FulfillmentState.CANCELLED:\n      return \"CANCELLED\";\n    case FulfillmentState.WITHDRAWN:\n      return \"WITHDRAWN\";\n    case FulfillmentState.RETOURE:\n      return \"RETOURE\";\n    case FulfillmentState.RETOURE_COMPLETE:\n      return \"RETOURE_COMPLETE\";\n    case FulfillmentState.FAILED:\n      return \"FAILED\";\n    case FulfillmentState.INVALID:\n      return \"INVALID\";\n    case FulfillmentState.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function fulfillmentStateToNumber(object: FulfillmentState): number {\n  switch (object) {\n    case FulfillmentState.PENDING:\n      return 0;\n    case FulfillmentState.SUBMITTED:\n      return 1;\n    case FulfillmentState.IN_TRANSIT:\n      return 2;\n    case FulfillmentState.COMPLETE:\n      return 3;\n    case FulfillmentState.CANCELLED:\n      return 4;\n    case FulfillmentState.WITHDRAWN:\n      return 5;\n    case FulfillmentState.RETOURE:\n      return 6;\n    case FulfillmentState.RETOURE_COMPLETE:\n      return 7;\n    case FulfillmentState.FAILED:\n      return 8;\n    case FulfillmentState.INVALID:\n      return 9;\n    case FulfillmentState.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\nexport enum ExportType {\n  OTHER = \"OTHER\",\n  PRESENT = \"PRESENT\",\n  COMMERCIAL_SAMPLE = \"COMMERCIAL_SAMPLE\",\n  DOCUMENT = \"DOCUMENT\",\n  RETURN_OF_GOODS = \"RETURN_OF_GOODS\",\n  COMMERCIAL_GOODS = \"COMMERCIAL_GOODS\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function exportTypeFromJSON(object: any): ExportType {\n  switch (object) {\n    case 0:\n    case \"OTHER\":\n      return ExportType.OTHER;\n    case 1:\n    case \"PRESENT\":\n      return ExportType.PRESENT;\n    case 2:\n    case \"COMMERCIAL_SAMPLE\":\n      return ExportType.COMMERCIAL_SAMPLE;\n    case 3:\n    case \"DOCUMENT\":\n      return ExportType.DOCUMENT;\n    case 4:\n    case \"RETURN_OF_GOODS\":\n      return ExportType.RETURN_OF_GOODS;\n    case 5:\n    case \"COMMERCIAL_GOODS\":\n      return ExportType.COMMERCIAL_GOODS;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return ExportType.UNRECOGNIZED;\n  }\n}\n\nexport function exportTypeToJSON(object: ExportType): string {\n  switch (object) {\n    case ExportType.OTHER:\n      return \"OTHER\";\n    case ExportType.PRESENT:\n      return \"PRESENT\";\n    case ExportType.COMMERCIAL_SAMPLE:\n      return \"COMMERCIAL_SAMPLE\";\n    case ExportType.DOCUMENT:\n      return \"DOCUMENT\";\n    case ExportType.RETURN_OF_GOODS:\n      return \"RETURN_OF_GOODS\";\n    case ExportType.COMMERCIAL_GOODS:\n      return \"COMMERCIAL_GOODS\";\n    case ExportType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function exportTypeToNumber(object: ExportType): number {\n  switch (object) {\n    case ExportType.OTHER:\n      return 0;\n    case ExportType.PRESENT:\n      return 1;\n    case ExportType.COMMERCIAL_SAMPLE:\n      return 2;\n    case ExportType.DOCUMENT:\n      return 3;\n    case ExportType.RETURN_OF_GOODS:\n      return 4;\n    case ExportType.COMMERCIAL_GOODS:\n      return 5;\n    case ExportType.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\nexport enum ShippingCondition {\n  DDU = \"DDU\",\n  DPA = \"DPA\",\n  DAP = \"DAP\",\n  DDP = \"DDP\",\n  DDX = \"DDX\",\n  DXV = \"DXV\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function shippingConditionFromJSON(object: any): ShippingCondition {\n  switch (object) {\n    case 0:\n    case \"DDU\":\n      return ShippingCondition.DDU;\n    case 1:\n    case \"DPA\":\n      return ShippingCondition.DPA;\n    case 2:\n    case \"DAP\":\n      return ShippingCondition.DAP;\n    case 3:\n    case \"DDP\":\n      return ShippingCondition.DDP;\n    case 4:\n    case \"DDX\":\n      return ShippingCondition.DDX;\n    case 5:\n    case \"DXV\":\n      return ShippingCondition.DXV;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return ShippingCondition.UNRECOGNIZED;\n  }\n}\n\nexport function shippingConditionToJSON(object: ShippingCondition): string {\n  switch (object) {\n    case ShippingCondition.DDU:\n      return \"DDU\";\n    case ShippingCondition.DPA:\n      return \"DPA\";\n    case ShippingCondition.DAP:\n      return \"DAP\";\n    case ShippingCondition.DDP:\n      return \"DDP\";\n    case ShippingCondition.DDX:\n      return \"DDX\";\n    case ShippingCondition.DXV:\n      return \"DXV\";\n    case ShippingCondition.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function shippingConditionToNumber(object: ShippingCondition): number {\n  switch (object) {\n    case ShippingCondition.DDU:\n      return 0;\n    case ShippingCondition.DPA:\n      return 1;\n    case ShippingCondition.DAP:\n      return 2;\n    case ShippingCondition.DDP:\n      return 3;\n    case ShippingCondition.DDX:\n      return 4;\n    case ShippingCondition.DXV:\n      return 5;\n    case ShippingCondition.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\nexport interface Item {\n  productId?: string | undefined;\n  variantId?: string | undefined;\n  quantity?: number | undefined;\n  name?: string | undefined;\n  description?: string | undefined;\n  taricCode?: string | undefined;\n  hsCode?: string | undefined;\n  originCountryId?: string | undefined;\n  value?: Amount | undefined;\n  package?: Package | undefined;\n}\n\nexport interface Parcel {\n  id?: string | undefined;\n  productId?: string | undefined;\n  variantId?: string | undefined;\n  items?: Item[] | undefined;\n  price?: Price | undefined;\n  amount?: Amount | undefined;\n  package?: Package | undefined;\n}\n\nexport interface Label {\n  id?: string | undefined;\n  parcelId?: string | undefined;\n  file?:\n    | File\n    | undefined;\n  /** filled on Order */\n  shipmentNumber?:\n    | string\n    | undefined;\n  /** update by Track */\n  state?:\n    | FulfillmentState\n    | undefined;\n  /** API status */\n  status?: Status | undefined;\n}\n\nexport interface Charge {\n  description?: string | undefined;\n  charge?: Amount | undefined;\n}\n\nexport interface CustomsDeclaration {\n  /** should be ExportType (but unconstrained) */\n  exportType?: string | undefined;\n  exportDescription?: string | undefined;\n  invoiceNumber?: string | undefined;\n  consigneeRef?: string | undefined;\n  shipperRef?: string | undefined;\n  MRN?:\n    | string\n    | undefined;\n  /** for e.g. rare goods */\n  permitNumber?:\n    | string\n    | undefined;\n  /** for e.g. medical goods */\n  attestation?:\n    | string\n    | undefined;\n  /** should be ShippingCondition (unconstrained) */\n  shippingCondition?: string | undefined;\n  charges?: Charge[] | undefined;\n  notify?: boolean | undefined;\n}\n\nexport interface Packaging {\n  parcels?: Parcel[] | undefined;\n  sender?: ShippingAddress | undefined;\n  recipient?: ShippingAddress | undefined;\n  notify?: string | undefined;\n  customsDeclaration?: CustomsDeclaration | undefined;\n}\n\nexport interface Event {\n  timestamp?: Date | undefined;\n  location?: string | undefined;\n  details?: Any | undefined;\n  status?: Status | undefined;\n}\n\nexport interface Tracking {\n  shipmentNumber?: string | undefined;\n  events?: Event[] | undefined;\n  details?: Any | undefined;\n  status?: Status | undefined;\n}\n\n/** This is the message of how it get stored to the database */\nexport interface Fulfillment {\n  id?: string | undefined;\n  meta?: Meta | undefined;\n  userId?: string | undefined;\n  customerId?: string | undefined;\n  shopId?: string | undefined;\n  references?: Reference[] | undefined;\n  packaging?:\n    | Packaging\n    | undefined;\n  /** set by service */\n  labels?:\n    | Label[]\n    | undefined;\n  /** set by service */\n  trackings?:\n    | Tracking[]\n    | undefined;\n  /** set by service */\n  totalAmounts?:\n    | Amount[]\n    | undefined;\n  /** set by service */\n  fulfillmentState?:\n    | FulfillmentState\n    | undefined;\n  /** url to rendered PDFs */\n  documents?: File[] | undefined;\n}\n\nexport interface FulfillmentList {\n  items?: Fulfillment[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface FulfillmentResponse {\n  payload?: Fulfillment | undefined;\n  status?: Status | undefined;\n}\n\nexport interface FulfillmentListResponse {\n  items?: FulfillmentResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface FulfillmentId {\n  id?:\n    | string\n    | undefined;\n  /** optional */\n  shipmentNumbers?: string[] | undefined;\n  options?: Any | undefined;\n}\n\nexport interface FulfillmentIdList {\n  items?: FulfillmentId[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface FulfillmentInvoiceSection {\n  fulfillmentId?:\n    | string\n    | undefined;\n  /** selects all on empty */\n  selectedParcels?: string[] | undefined;\n}\n\nexport interface FulfillmentInvoiceRequest {\n  /** if given */\n  invoiceNumber?: string | undefined;\n  paymentHints?: string[] | undefined;\n  sections?: FulfillmentInvoiceSection[] | undefined;\n}\n\nexport interface FulfillmentInvoiceRequestList {\n  items?: FulfillmentInvoiceRequest[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nfunction createBaseItem(): Item {\n  return {};\n}\n\nexport const Item: MessageFns<Item> = {\n  encode(message: Item, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.productId !== undefined) {\n      writer.uint32(10).string(message.productId);\n    }\n    if (message.variantId !== undefined) {\n      writer.uint32(18).string(message.variantId);\n    }\n    if (message.quantity !== undefined) {\n      writer.uint32(24).int32(message.quantity);\n    }\n    if (message.name !== undefined) {\n      writer.uint32(34).string(message.name);\n    }\n    if (message.description !== undefined) {\n      writer.uint32(42).string(message.description);\n    }\n    if (message.taricCode !== undefined) {\n      writer.uint32(50).string(message.taricCode);\n    }\n    if (message.hsCode !== undefined) {\n      writer.uint32(58).string(message.hsCode);\n    }\n    if (message.originCountryId !== undefined) {\n      writer.uint32(66).string(message.originCountryId);\n    }\n    if (message.value !== undefined) {\n      Amount.encode(message.value, writer.uint32(74).fork()).join();\n    }\n    if (message.package !== undefined) {\n      Package.encode(message.package, writer.uint32(82).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Item {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseItem();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.productId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.variantId = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.quantity = reader.int32();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.taricCode = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.hsCode = reader.string();\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.originCountryId = reader.string();\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.value = Amount.decode(reader, reader.uint32());\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.package = Package.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Item {\n    return {\n      productId: isSet(object.productId) ? globalThis.String(object.productId) : undefined,\n      variantId: isSet(object.variantId) ? globalThis.String(object.variantId) : undefined,\n      quantity: isSet(object.quantity) ? globalThis.Number(object.quantity) : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      description: isSet(object.description) ? globalThis.String(object.description) : undefined,\n      taricCode: isSet(object.taricCode) ? globalThis.String(object.taricCode) : undefined,\n      hsCode: isSet(object.hsCode) ? globalThis.String(object.hsCode) : undefined,\n      originCountryId: isSet(object.originCountryId) ? globalThis.String(object.originCountryId) : undefined,\n      value: isSet(object.value) ? Amount.fromJSON(object.value) : undefined,\n      package: isSet(object.package) ? Package.fromJSON(object.package) : undefined,\n    };\n  },\n\n  toJSON(message: Item): unknown {\n    const obj: any = {};\n    if (message.productId !== undefined) {\n      obj.productId = message.productId;\n    }\n    if (message.variantId !== undefined) {\n      obj.variantId = message.variantId;\n    }\n    if (message.quantity !== undefined) {\n      obj.quantity = Math.round(message.quantity);\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.description !== undefined) {\n      obj.description = message.description;\n    }\n    if (message.taricCode !== undefined) {\n      obj.taricCode = message.taricCode;\n    }\n    if (message.hsCode !== undefined) {\n      obj.hsCode = message.hsCode;\n    }\n    if (message.originCountryId !== undefined) {\n      obj.originCountryId = message.originCountryId;\n    }\n    if (message.value !== undefined) {\n      obj.value = Amount.toJSON(message.value);\n    }\n    if (message.package !== undefined) {\n      obj.package = Package.toJSON(message.package);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Item>): Item {\n    return Item.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Item>): Item {\n    const message = createBaseItem();\n    message.productId = object.productId ?? undefined;\n    message.variantId = object.variantId ?? undefined;\n    message.quantity = object.quantity ?? undefined;\n    message.name = object.name ?? undefined;\n    message.description = object.description ?? undefined;\n    message.taricCode = object.taricCode ?? undefined;\n    message.hsCode = object.hsCode ?? undefined;\n    message.originCountryId = object.originCountryId ?? undefined;\n    message.value = (object.value !== undefined && object.value !== null)\n      ? Amount.fromPartial(object.value)\n      : undefined;\n    message.package = (object.package !== undefined && object.package !== null)\n      ? Package.fromPartial(object.package)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseParcel(): Parcel {\n  return {};\n}\n\nexport const Parcel: MessageFns<Parcel> = {\n  encode(message: Parcel, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.productId !== undefined) {\n      writer.uint32(18).string(message.productId);\n    }\n    if (message.variantId !== undefined) {\n      writer.uint32(26).string(message.variantId);\n    }\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        Item.encode(v!, writer.uint32(34).fork()).join();\n      }\n    }\n    if (message.price !== undefined) {\n      Price.encode(message.price, writer.uint32(42).fork()).join();\n    }\n    if (message.amount !== undefined) {\n      Amount.encode(message.amount, writer.uint32(50).fork()).join();\n    }\n    if (message.package !== undefined) {\n      Package.encode(message.package, writer.uint32(58).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Parcel {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseParcel();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.productId = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.variantId = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = Item.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.price = Price.decode(reader, reader.uint32());\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.amount = Amount.decode(reader, reader.uint32());\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.package = Package.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Parcel {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      productId: isSet(object.productId) ? globalThis.String(object.productId) : undefined,\n      variantId: isSet(object.variantId) ? globalThis.String(object.variantId) : undefined,\n      items: globalThis.Array.isArray(object?.items) ? object.items.map((e: any) => Item.fromJSON(e)) : undefined,\n      price: isSet(object.price) ? Price.fromJSON(object.price) : undefined,\n      amount: isSet(object.amount) ? Amount.fromJSON(object.amount) : undefined,\n      package: isSet(object.package) ? Package.fromJSON(object.package) : undefined,\n    };\n  },\n\n  toJSON(message: Parcel): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.productId !== undefined) {\n      obj.productId = message.productId;\n    }\n    if (message.variantId !== undefined) {\n      obj.variantId = message.variantId;\n    }\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => Item.toJSON(e));\n    }\n    if (message.price !== undefined) {\n      obj.price = Price.toJSON(message.price);\n    }\n    if (message.amount !== undefined) {\n      obj.amount = Amount.toJSON(message.amount);\n    }\n    if (message.package !== undefined) {\n      obj.package = Package.toJSON(message.package);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Parcel>): Parcel {\n    return Parcel.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Parcel>): Parcel {\n    const message = createBaseParcel();\n    message.id = object.id ?? undefined;\n    message.productId = object.productId ?? undefined;\n    message.variantId = object.variantId ?? undefined;\n    message.items = object.items?.map((e) => Item.fromPartial(e)) || undefined;\n    message.price = (object.price !== undefined && object.price !== null) ? Price.fromPartial(object.price) : undefined;\n    message.amount = (object.amount !== undefined && object.amount !== null)\n      ? Amount.fromPartial(object.amount)\n      : undefined;\n    message.package = (object.package !== undefined && object.package !== null)\n      ? Package.fromPartial(object.package)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseLabel(): Label {\n  return {};\n}\n\nexport const Label: MessageFns<Label> = {\n  encode(message: Label, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.parcelId !== undefined) {\n      writer.uint32(18).string(message.parcelId);\n    }\n    if (message.file !== undefined) {\n      File.encode(message.file, writer.uint32(26).fork()).join();\n    }\n    if (message.shipmentNumber !== undefined) {\n      writer.uint32(34).string(message.shipmentNumber);\n    }\n    if (message.state !== undefined) {\n      writer.uint32(40).int32(fulfillmentStateToNumber(message.state));\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(50).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Label {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseLabel();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.parcelId = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.file = File.decode(reader, reader.uint32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.shipmentNumber = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 40) {\n            break;\n          }\n\n          message.state = fulfillmentStateFromJSON(reader.int32());\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Label {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      parcelId: isSet(object.parcelId) ? globalThis.String(object.parcelId) : undefined,\n      file: isSet(object.file) ? File.fromJSON(object.file) : undefined,\n      shipmentNumber: isSet(object.shipmentNumber) ? globalThis.String(object.shipmentNumber) : undefined,\n      state: isSet(object.state) ? fulfillmentStateFromJSON(object.state) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: Label): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.parcelId !== undefined) {\n      obj.parcelId = message.parcelId;\n    }\n    if (message.file !== undefined) {\n      obj.file = File.toJSON(message.file);\n    }\n    if (message.shipmentNumber !== undefined) {\n      obj.shipmentNumber = message.shipmentNumber;\n    }\n    if (message.state !== undefined) {\n      obj.state = fulfillmentStateToJSON(message.state);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Label>): Label {\n    return Label.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Label>): Label {\n    const message = createBaseLabel();\n    message.id = object.id ?? undefined;\n    message.parcelId = object.parcelId ?? undefined;\n    message.file = (object.file !== undefined && object.file !== null) ? File.fromPartial(object.file) : undefined;\n    message.shipmentNumber = object.shipmentNumber ?? undefined;\n    message.state = object.state ?? undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseCharge(): Charge {\n  return {};\n}\n\nexport const Charge: MessageFns<Charge> = {\n  encode(message: Charge, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.description !== undefined) {\n      writer.uint32(10).string(message.description);\n    }\n    if (message.charge !== undefined) {\n      Amount.encode(message.charge, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Charge {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCharge();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.charge = Amount.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Charge {\n    return {\n      description: isSet(object.description) ? globalThis.String(object.description) : undefined,\n      charge: isSet(object.charge) ? Amount.fromJSON(object.charge) : undefined,\n    };\n  },\n\n  toJSON(message: Charge): unknown {\n    const obj: any = {};\n    if (message.description !== undefined) {\n      obj.description = message.description;\n    }\n    if (message.charge !== undefined) {\n      obj.charge = Amount.toJSON(message.charge);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Charge>): Charge {\n    return Charge.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Charge>): Charge {\n    const message = createBaseCharge();\n    message.description = object.description ?? undefined;\n    message.charge = (object.charge !== undefined && object.charge !== null)\n      ? Amount.fromPartial(object.charge)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseCustomsDeclaration(): CustomsDeclaration {\n  return {};\n}\n\nexport const CustomsDeclaration: MessageFns<CustomsDeclaration> = {\n  encode(message: CustomsDeclaration, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.exportType !== undefined) {\n      writer.uint32(10).string(message.exportType);\n    }\n    if (message.exportDescription !== undefined) {\n      writer.uint32(18).string(message.exportDescription);\n    }\n    if (message.invoiceNumber !== undefined) {\n      writer.uint32(26).string(message.invoiceNumber);\n    }\n    if (message.consigneeRef !== undefined) {\n      writer.uint32(34).string(message.consigneeRef);\n    }\n    if (message.shipperRef !== undefined) {\n      writer.uint32(42).string(message.shipperRef);\n    }\n    if (message.MRN !== undefined) {\n      writer.uint32(50).string(message.MRN);\n    }\n    if (message.permitNumber !== undefined) {\n      writer.uint32(58).string(message.permitNumber);\n    }\n    if (message.attestation !== undefined) {\n      writer.uint32(66).string(message.attestation);\n    }\n    if (message.shippingCondition !== undefined) {\n      writer.uint32(74).string(message.shippingCondition);\n    }\n    if (message.charges !== undefined && message.charges.length !== 0) {\n      for (const v of message.charges) {\n        Charge.encode(v!, writer.uint32(82).fork()).join();\n      }\n    }\n    if (message.notify !== undefined) {\n      writer.uint32(88).bool(message.notify);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CustomsDeclaration {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCustomsDeclaration();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.exportType = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.exportDescription = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.invoiceNumber = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.consigneeRef = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.shipperRef = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.MRN = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.permitNumber = reader.string();\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.attestation = reader.string();\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.shippingCondition = reader.string();\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          if (message.charges === undefined) {\n            message.charges = [];\n          }\n          const el = Charge.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.charges!.push(el);\n          }\n          continue;\n        }\n        case 11: {\n          if (tag !== 88) {\n            break;\n          }\n\n          message.notify = reader.bool();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CustomsDeclaration {\n    return {\n      exportType: isSet(object.exportType) ? globalThis.String(object.exportType) : undefined,\n      exportDescription: isSet(object.exportDescription) ? globalThis.String(object.exportDescription) : undefined,\n      invoiceNumber: isSet(object.invoiceNumber) ? globalThis.String(object.invoiceNumber) : undefined,\n      consigneeRef: isSet(object.consigneeRef) ? globalThis.String(object.consigneeRef) : undefined,\n      shipperRef: isSet(object.shipperRef) ? globalThis.String(object.shipperRef) : undefined,\n      MRN: isSet(object.MRN) ? globalThis.String(object.MRN) : undefined,\n      permitNumber: isSet(object.permitNumber) ? globalThis.String(object.permitNumber) : undefined,\n      attestation: isSet(object.attestation) ? globalThis.String(object.attestation) : undefined,\n      shippingCondition: isSet(object.shippingCondition) ? globalThis.String(object.shippingCondition) : undefined,\n      charges: globalThis.Array.isArray(object?.charges)\n        ? object.charges.map((e: any) => Charge.fromJSON(e))\n        : undefined,\n      notify: isSet(object.notify) ? globalThis.Boolean(object.notify) : undefined,\n    };\n  },\n\n  toJSON(message: CustomsDeclaration): unknown {\n    const obj: any = {};\n    if (message.exportType !== undefined) {\n      obj.exportType = message.exportType;\n    }\n    if (message.exportDescription !== undefined) {\n      obj.exportDescription = message.exportDescription;\n    }\n    if (message.invoiceNumber !== undefined) {\n      obj.invoiceNumber = message.invoiceNumber;\n    }\n    if (message.consigneeRef !== undefined) {\n      obj.consigneeRef = message.consigneeRef;\n    }\n    if (message.shipperRef !== undefined) {\n      obj.shipperRef = message.shipperRef;\n    }\n    if (message.MRN !== undefined) {\n      obj.MRN = message.MRN;\n    }\n    if (message.permitNumber !== undefined) {\n      obj.permitNumber = message.permitNumber;\n    }\n    if (message.attestation !== undefined) {\n      obj.attestation = message.attestation;\n    }\n    if (message.shippingCondition !== undefined) {\n      obj.shippingCondition = message.shippingCondition;\n    }\n    if (message.charges?.length) {\n      obj.charges = message.charges.map((e) => Charge.toJSON(e));\n    }\n    if (message.notify !== undefined) {\n      obj.notify = message.notify;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CustomsDeclaration>): CustomsDeclaration {\n    return CustomsDeclaration.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CustomsDeclaration>): CustomsDeclaration {\n    const message = createBaseCustomsDeclaration();\n    message.exportType = object.exportType ?? undefined;\n    message.exportDescription = object.exportDescription ?? undefined;\n    message.invoiceNumber = object.invoiceNumber ?? undefined;\n    message.consigneeRef = object.consigneeRef ?? undefined;\n    message.shipperRef = object.shipperRef ?? undefined;\n    message.MRN = object.MRN ?? undefined;\n    message.permitNumber = object.permitNumber ?? undefined;\n    message.attestation = object.attestation ?? undefined;\n    message.shippingCondition = object.shippingCondition ?? undefined;\n    message.charges = object.charges?.map((e) => Charge.fromPartial(e)) || undefined;\n    message.notify = object.notify ?? undefined;\n    return message;\n  },\n};\n\nfunction createBasePackaging(): Packaging {\n  return {};\n}\n\nexport const Packaging: MessageFns<Packaging> = {\n  encode(message: Packaging, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.parcels !== undefined && message.parcels.length !== 0) {\n      for (const v of message.parcels) {\n        Parcel.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.sender !== undefined) {\n      ShippingAddress.encode(message.sender, writer.uint32(18).fork()).join();\n    }\n    if (message.recipient !== undefined) {\n      ShippingAddress.encode(message.recipient, writer.uint32(26).fork()).join();\n    }\n    if (message.notify !== undefined) {\n      writer.uint32(34).string(message.notify);\n    }\n    if (message.customsDeclaration !== undefined) {\n      CustomsDeclaration.encode(message.customsDeclaration, writer.uint32(42).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Packaging {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePackaging();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.parcels === undefined) {\n            message.parcels = [];\n          }\n          const el = Parcel.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.parcels!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.sender = ShippingAddress.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.recipient = ShippingAddress.decode(reader, reader.uint32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.notify = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.customsDeclaration = CustomsDeclaration.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Packaging {\n    return {\n      parcels: globalThis.Array.isArray(object?.parcels)\n        ? object.parcels.map((e: any) => Parcel.fromJSON(e))\n        : undefined,\n      sender: isSet(object.sender) ? ShippingAddress.fromJSON(object.sender) : undefined,\n      recipient: isSet(object.recipient) ? ShippingAddress.fromJSON(object.recipient) : undefined,\n      notify: isSet(object.notify) ? globalThis.String(object.notify) : undefined,\n      customsDeclaration: isSet(object.customsDeclaration)\n        ? CustomsDeclaration.fromJSON(object.customsDeclaration)\n        : undefined,\n    };\n  },\n\n  toJSON(message: Packaging): unknown {\n    const obj: any = {};\n    if (message.parcels?.length) {\n      obj.parcels = message.parcels.map((e) => Parcel.toJSON(e));\n    }\n    if (message.sender !== undefined) {\n      obj.sender = ShippingAddress.toJSON(message.sender);\n    }\n    if (message.recipient !== undefined) {\n      obj.recipient = ShippingAddress.toJSON(message.recipient);\n    }\n    if (message.notify !== undefined) {\n      obj.notify = message.notify;\n    }\n    if (message.customsDeclaration !== undefined) {\n      obj.customsDeclaration = CustomsDeclaration.toJSON(message.customsDeclaration);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Packaging>): Packaging {\n    return Packaging.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Packaging>): Packaging {\n    const message = createBasePackaging();\n    message.parcels = object.parcels?.map((e) => Parcel.fromPartial(e)) || undefined;\n    message.sender = (object.sender !== undefined && object.sender !== null)\n      ? ShippingAddress.fromPartial(object.sender)\n      : undefined;\n    message.recipient = (object.recipient !== undefined && object.recipient !== null)\n      ? ShippingAddress.fromPartial(object.recipient)\n      : undefined;\n    message.notify = object.notify ?? undefined;\n    message.customsDeclaration = (object.customsDeclaration !== undefined && object.customsDeclaration !== null)\n      ? CustomsDeclaration.fromPartial(object.customsDeclaration)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseEvent(): Event {\n  return {};\n}\n\nexport const Event: MessageFns<Event> = {\n  encode(message: Event, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.timestamp !== undefined) {\n      Timestamp.encode(toTimestamp(message.timestamp), writer.uint32(10).fork()).join();\n    }\n    if (message.location !== undefined) {\n      writer.uint32(18).string(message.location);\n    }\n    if (message.details !== undefined) {\n      Any.encode(message.details, writer.uint32(26).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(34).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Event {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseEvent();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.timestamp = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.location = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.details = Any.decode(reader, reader.uint32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Event {\n    return {\n      timestamp: isSet(object.timestamp) ? fromJsonTimestamp(object.timestamp) : undefined,\n      location: isSet(object.location) ? globalThis.String(object.location) : undefined,\n      details: isSet(object.details) ? Any.fromJSON(object.details) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: Event): unknown {\n    const obj: any = {};\n    if (message.timestamp !== undefined) {\n      obj.timestamp = message.timestamp.toISOString();\n    }\n    if (message.location !== undefined) {\n      obj.location = message.location;\n    }\n    if (message.details !== undefined) {\n      obj.details = Any.toJSON(message.details);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Event>): Event {\n    return Event.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Event>): Event {\n    const message = createBaseEvent();\n    message.timestamp = object.timestamp ?? undefined;\n    message.location = object.location ?? undefined;\n    message.details = (object.details !== undefined && object.details !== null)\n      ? Any.fromPartial(object.details)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseTracking(): Tracking {\n  return {};\n}\n\nexport const Tracking: MessageFns<Tracking> = {\n  encode(message: Tracking, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.shipmentNumber !== undefined) {\n      writer.uint32(10).string(message.shipmentNumber);\n    }\n    if (message.events !== undefined && message.events.length !== 0) {\n      for (const v of message.events) {\n        Event.encode(v!, writer.uint32(26).fork()).join();\n      }\n    }\n    if (message.details !== undefined) {\n      Any.encode(message.details, writer.uint32(34).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(42).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Tracking {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseTracking();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.shipmentNumber = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          if (message.events === undefined) {\n            message.events = [];\n          }\n          const el = Event.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.events!.push(el);\n          }\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.details = Any.decode(reader, reader.uint32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Tracking {\n    return {\n      shipmentNumber: isSet(object.shipmentNumber) ? globalThis.String(object.shipmentNumber) : undefined,\n      events: globalThis.Array.isArray(object?.events) ? object.events.map((e: any) => Event.fromJSON(e)) : undefined,\n      details: isSet(object.details) ? Any.fromJSON(object.details) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: Tracking): unknown {\n    const obj: any = {};\n    if (message.shipmentNumber !== undefined) {\n      obj.shipmentNumber = message.shipmentNumber;\n    }\n    if (message.events?.length) {\n      obj.events = message.events.map((e) => Event.toJSON(e));\n    }\n    if (message.details !== undefined) {\n      obj.details = Any.toJSON(message.details);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Tracking>): Tracking {\n    return Tracking.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Tracking>): Tracking {\n    const message = createBaseTracking();\n    message.shipmentNumber = object.shipmentNumber ?? undefined;\n    message.events = object.events?.map((e) => Event.fromPartial(e)) || undefined;\n    message.details = (object.details !== undefined && object.details !== null)\n      ? Any.fromPartial(object.details)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseFulfillment(): Fulfillment {\n  return {};\n}\n\nexport const Fulfillment: MessageFns<Fulfillment> = {\n  encode(message: Fulfillment, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(18).fork()).join();\n    }\n    if (message.userId !== undefined) {\n      writer.uint32(26).string(message.userId);\n    }\n    if (message.customerId !== undefined) {\n      writer.uint32(34).string(message.customerId);\n    }\n    if (message.shopId !== undefined) {\n      writer.uint32(42).string(message.shopId);\n    }\n    if (message.references !== undefined && message.references.length !== 0) {\n      for (const v of message.references) {\n        Reference.encode(v!, writer.uint32(50).fork()).join();\n      }\n    }\n    if (message.packaging !== undefined) {\n      Packaging.encode(message.packaging, writer.uint32(58).fork()).join();\n    }\n    if (message.labels !== undefined && message.labels.length !== 0) {\n      for (const v of message.labels) {\n        Label.encode(v!, writer.uint32(66).fork()).join();\n      }\n    }\n    if (message.trackings !== undefined && message.trackings.length !== 0) {\n      for (const v of message.trackings) {\n        Tracking.encode(v!, writer.uint32(74).fork()).join();\n      }\n    }\n    if (message.totalAmounts !== undefined && message.totalAmounts.length !== 0) {\n      for (const v of message.totalAmounts) {\n        Amount.encode(v!, writer.uint32(82).fork()).join();\n      }\n    }\n    if (message.fulfillmentState !== undefined) {\n      writer.uint32(88).int32(fulfillmentStateToNumber(message.fulfillmentState));\n    }\n    if (message.documents !== undefined && message.documents.length !== 0) {\n      for (const v of message.documents) {\n        File.encode(v!, writer.uint32(98).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Fulfillment {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFulfillment();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.userId = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.customerId = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.shopId = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          if (message.references === undefined) {\n            message.references = [];\n          }\n          const el = Reference.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.references!.push(el);\n          }\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.packaging = Packaging.decode(reader, reader.uint32());\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          if (message.labels === undefined) {\n            message.labels = [];\n          }\n          const el = Label.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.labels!.push(el);\n          }\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          if (message.trackings === undefined) {\n            message.trackings = [];\n          }\n          const el = Tracking.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.trackings!.push(el);\n          }\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          if (message.totalAmounts === undefined) {\n            message.totalAmounts = [];\n          }\n          const el = Amount.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.totalAmounts!.push(el);\n          }\n          continue;\n        }\n        case 11: {\n          if (tag !== 88) {\n            break;\n          }\n\n          message.fulfillmentState = fulfillmentStateFromJSON(reader.int32());\n          continue;\n        }\n        case 12: {\n          if (tag !== 98) {\n            break;\n          }\n\n          if (message.documents === undefined) {\n            message.documents = [];\n          }\n          const el = File.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.documents!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Fulfillment {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      userId: isSet(object.userId) ? globalThis.String(object.userId) : undefined,\n      customerId: isSet(object.customerId) ? globalThis.String(object.customerId) : undefined,\n      shopId: isSet(object.shopId) ? globalThis.String(object.shopId) : undefined,\n      references: globalThis.Array.isArray(object?.references)\n        ? object.references.map((e: any) => Reference.fromJSON(e))\n        : undefined,\n      packaging: isSet(object.packaging) ? Packaging.fromJSON(object.packaging) : undefined,\n      labels: globalThis.Array.isArray(object?.labels) ? object.labels.map((e: any) => Label.fromJSON(e)) : undefined,\n      trackings: globalThis.Array.isArray(object?.trackings)\n        ? object.trackings.map((e: any) => Tracking.fromJSON(e))\n        : undefined,\n      totalAmounts: globalThis.Array.isArray(object?.totalAmounts)\n        ? object.totalAmounts.map((e: any) => Amount.fromJSON(e))\n        : undefined,\n      fulfillmentState: isSet(object.fulfillmentState) ? fulfillmentStateFromJSON(object.fulfillmentState) : undefined,\n      documents: globalThis.Array.isArray(object?.documents)\n        ? object.documents.map((e: any) => File.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: Fulfillment): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.userId !== undefined) {\n      obj.userId = message.userId;\n    }\n    if (message.customerId !== undefined) {\n      obj.customerId = message.customerId;\n    }\n    if (message.shopId !== undefined) {\n      obj.shopId = message.shopId;\n    }\n    if (message.references?.length) {\n      obj.references = message.references.map((e) => Reference.toJSON(e));\n    }\n    if (message.packaging !== undefined) {\n      obj.packaging = Packaging.toJSON(message.packaging);\n    }\n    if (message.labels?.length) {\n      obj.labels = message.labels.map((e) => Label.toJSON(e));\n    }\n    if (message.trackings?.length) {\n      obj.trackings = message.trackings.map((e) => Tracking.toJSON(e));\n    }\n    if (message.totalAmounts?.length) {\n      obj.totalAmounts = message.totalAmounts.map((e) => Amount.toJSON(e));\n    }\n    if (message.fulfillmentState !== undefined) {\n      obj.fulfillmentState = fulfillmentStateToJSON(message.fulfillmentState);\n    }\n    if (message.documents?.length) {\n      obj.documents = message.documents.map((e) => File.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Fulfillment>): Fulfillment {\n    return Fulfillment.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Fulfillment>): Fulfillment {\n    const message = createBaseFulfillment();\n    message.id = object.id ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.userId = object.userId ?? undefined;\n    message.customerId = object.customerId ?? undefined;\n    message.shopId = object.shopId ?? undefined;\n    message.references = object.references?.map((e) => Reference.fromPartial(e)) || undefined;\n    message.packaging = (object.packaging !== undefined && object.packaging !== null)\n      ? Packaging.fromPartial(object.packaging)\n      : undefined;\n    message.labels = object.labels?.map((e) => Label.fromPartial(e)) || undefined;\n    message.trackings = object.trackings?.map((e) => Tracking.fromPartial(e)) || undefined;\n    message.totalAmounts = object.totalAmounts?.map((e) => Amount.fromPartial(e)) || undefined;\n    message.fulfillmentState = object.fulfillmentState ?? undefined;\n    message.documents = object.documents?.map((e) => File.fromPartial(e)) || undefined;\n    return message;\n  },\n};\n\nfunction createBaseFulfillmentList(): FulfillmentList {\n  return {};\n}\n\nexport const FulfillmentList: MessageFns<FulfillmentList> = {\n  encode(message: FulfillmentList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        Fulfillment.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FulfillmentList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFulfillmentList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = Fulfillment.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FulfillmentList {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => Fulfillment.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: FulfillmentList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => Fulfillment.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FulfillmentList>): FulfillmentList {\n    return FulfillmentList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FulfillmentList>): FulfillmentList {\n    const message = createBaseFulfillmentList();\n    message.items = object.items?.map((e) => Fulfillment.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseFulfillmentResponse(): FulfillmentResponse {\n  return {};\n}\n\nexport const FulfillmentResponse: MessageFns<FulfillmentResponse> = {\n  encode(message: FulfillmentResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      Fulfillment.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FulfillmentResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFulfillmentResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = Fulfillment.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FulfillmentResponse {\n    return {\n      payload: isSet(object.payload) ? Fulfillment.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: FulfillmentResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = Fulfillment.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FulfillmentResponse>): FulfillmentResponse {\n    return FulfillmentResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FulfillmentResponse>): FulfillmentResponse {\n    const message = createBaseFulfillmentResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? Fulfillment.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseFulfillmentListResponse(): FulfillmentListResponse {\n  return {};\n}\n\nexport const FulfillmentListResponse: MessageFns<FulfillmentListResponse> = {\n  encode(message: FulfillmentListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        FulfillmentResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FulfillmentListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFulfillmentListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = FulfillmentResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FulfillmentListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => FulfillmentResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: FulfillmentListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => FulfillmentResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FulfillmentListResponse>): FulfillmentListResponse {\n    return FulfillmentListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FulfillmentListResponse>): FulfillmentListResponse {\n    const message = createBaseFulfillmentListResponse();\n    message.items = object.items?.map((e) => FulfillmentResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseFulfillmentId(): FulfillmentId {\n  return {};\n}\n\nexport const FulfillmentId: MessageFns<FulfillmentId> = {\n  encode(message: FulfillmentId, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.shipmentNumbers !== undefined && message.shipmentNumbers.length !== 0) {\n      for (const v of message.shipmentNumbers) {\n        writer.uint32(18).string(v!);\n      }\n    }\n    if (message.options !== undefined) {\n      Any.encode(message.options, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FulfillmentId {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFulfillmentId();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          if (message.shipmentNumbers === undefined) {\n            message.shipmentNumbers = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.shipmentNumbers!.push(el);\n          }\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.options = Any.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FulfillmentId {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      shipmentNumbers: globalThis.Array.isArray(object?.shipmentNumbers)\n        ? object.shipmentNumbers.map((e: any) => globalThis.String(e))\n        : undefined,\n      options: isSet(object.options) ? Any.fromJSON(object.options) : undefined,\n    };\n  },\n\n  toJSON(message: FulfillmentId): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.shipmentNumbers?.length) {\n      obj.shipmentNumbers = message.shipmentNumbers;\n    }\n    if (message.options !== undefined) {\n      obj.options = Any.toJSON(message.options);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FulfillmentId>): FulfillmentId {\n    return FulfillmentId.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FulfillmentId>): FulfillmentId {\n    const message = createBaseFulfillmentId();\n    message.id = object.id ?? undefined;\n    message.shipmentNumbers = object.shipmentNumbers?.map((e) => e) || undefined;\n    message.options = (object.options !== undefined && object.options !== null)\n      ? Any.fromPartial(object.options)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseFulfillmentIdList(): FulfillmentIdList {\n  return {};\n}\n\nexport const FulfillmentIdList: MessageFns<FulfillmentIdList> = {\n  encode(message: FulfillmentIdList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        FulfillmentId.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FulfillmentIdList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFulfillmentIdList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = FulfillmentId.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FulfillmentIdList {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => FulfillmentId.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: FulfillmentIdList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => FulfillmentId.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FulfillmentIdList>): FulfillmentIdList {\n    return FulfillmentIdList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FulfillmentIdList>): FulfillmentIdList {\n    const message = createBaseFulfillmentIdList();\n    message.items = object.items?.map((e) => FulfillmentId.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseFulfillmentInvoiceSection(): FulfillmentInvoiceSection {\n  return {};\n}\n\nexport const FulfillmentInvoiceSection: MessageFns<FulfillmentInvoiceSection> = {\n  encode(message: FulfillmentInvoiceSection, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.fulfillmentId !== undefined) {\n      writer.uint32(10).string(message.fulfillmentId);\n    }\n    if (message.selectedParcels !== undefined && message.selectedParcels.length !== 0) {\n      for (const v of message.selectedParcels) {\n        writer.uint32(18).string(v!);\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FulfillmentInvoiceSection {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFulfillmentInvoiceSection();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.fulfillmentId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          if (message.selectedParcels === undefined) {\n            message.selectedParcels = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.selectedParcels!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FulfillmentInvoiceSection {\n    return {\n      fulfillmentId: isSet(object.fulfillmentId) ? globalThis.String(object.fulfillmentId) : undefined,\n      selectedParcels: globalThis.Array.isArray(object?.selectedParcels)\n        ? object.selectedParcels.map((e: any) => globalThis.String(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: FulfillmentInvoiceSection): unknown {\n    const obj: any = {};\n    if (message.fulfillmentId !== undefined) {\n      obj.fulfillmentId = message.fulfillmentId;\n    }\n    if (message.selectedParcels?.length) {\n      obj.selectedParcels = message.selectedParcels;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FulfillmentInvoiceSection>): FulfillmentInvoiceSection {\n    return FulfillmentInvoiceSection.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FulfillmentInvoiceSection>): FulfillmentInvoiceSection {\n    const message = createBaseFulfillmentInvoiceSection();\n    message.fulfillmentId = object.fulfillmentId ?? undefined;\n    message.selectedParcels = object.selectedParcels?.map((e) => e) || undefined;\n    return message;\n  },\n};\n\nfunction createBaseFulfillmentInvoiceRequest(): FulfillmentInvoiceRequest {\n  return {};\n}\n\nexport const FulfillmentInvoiceRequest: MessageFns<FulfillmentInvoiceRequest> = {\n  encode(message: FulfillmentInvoiceRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.invoiceNumber !== undefined) {\n      writer.uint32(10).string(message.invoiceNumber);\n    }\n    if (message.paymentHints !== undefined && message.paymentHints.length !== 0) {\n      for (const v of message.paymentHints) {\n        writer.uint32(18).string(v!);\n      }\n    }\n    if (message.sections !== undefined && message.sections.length !== 0) {\n      for (const v of message.sections) {\n        FulfillmentInvoiceSection.encode(v!, writer.uint32(26).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FulfillmentInvoiceRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFulfillmentInvoiceRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.invoiceNumber = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          if (message.paymentHints === undefined) {\n            message.paymentHints = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.paymentHints!.push(el);\n          }\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          if (message.sections === undefined) {\n            message.sections = [];\n          }\n          const el = FulfillmentInvoiceSection.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.sections!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FulfillmentInvoiceRequest {\n    return {\n      invoiceNumber: isSet(object.invoiceNumber) ? globalThis.String(object.invoiceNumber) : undefined,\n      paymentHints: globalThis.Array.isArray(object?.paymentHints)\n        ? object.paymentHints.map((e: any) => globalThis.String(e))\n        : undefined,\n      sections: globalThis.Array.isArray(object?.sections)\n        ? object.sections.map((e: any) => FulfillmentInvoiceSection.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: FulfillmentInvoiceRequest): unknown {\n    const obj: any = {};\n    if (message.invoiceNumber !== undefined) {\n      obj.invoiceNumber = message.invoiceNumber;\n    }\n    if (message.paymentHints?.length) {\n      obj.paymentHints = message.paymentHints;\n    }\n    if (message.sections?.length) {\n      obj.sections = message.sections.map((e) => FulfillmentInvoiceSection.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FulfillmentInvoiceRequest>): FulfillmentInvoiceRequest {\n    return FulfillmentInvoiceRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FulfillmentInvoiceRequest>): FulfillmentInvoiceRequest {\n    const message = createBaseFulfillmentInvoiceRequest();\n    message.invoiceNumber = object.invoiceNumber ?? undefined;\n    message.paymentHints = object.paymentHints?.map((e) => e) || undefined;\n    message.sections = object.sections?.map((e) => FulfillmentInvoiceSection.fromPartial(e)) || undefined;\n    return message;\n  },\n};\n\nfunction createBaseFulfillmentInvoiceRequestList(): FulfillmentInvoiceRequestList {\n  return {};\n}\n\nexport const FulfillmentInvoiceRequestList: MessageFns<FulfillmentInvoiceRequestList> = {\n  encode(message: FulfillmentInvoiceRequestList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        FulfillmentInvoiceRequest.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FulfillmentInvoiceRequestList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFulfillmentInvoiceRequestList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = FulfillmentInvoiceRequest.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FulfillmentInvoiceRequestList {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => FulfillmentInvoiceRequest.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: FulfillmentInvoiceRequestList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => FulfillmentInvoiceRequest.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FulfillmentInvoiceRequestList>): FulfillmentInvoiceRequestList {\n    return FulfillmentInvoiceRequestList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FulfillmentInvoiceRequestList>): FulfillmentInvoiceRequestList {\n    const message = createBaseFulfillmentInvoiceRequestList();\n    message.items = object.items?.map((e) => FulfillmentInvoiceRequest.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\n/** Microservice definition. */\nexport type FulfillmentServiceDefinition = typeof FulfillmentServiceDefinition;\nexport const FulfillmentServiceDefinition = {\n  name: \"FulfillmentService\",\n  fullName: \"io.restorecommerce.fulfillment.FulfillmentService\",\n  methods: {\n    /** Returns a list of shipment IDs. */\n    read: {\n      name: \"Read\",\n      requestType: ReadRequest,\n      requestStream: false,\n      responseType: FulfillmentListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    /** Creates fulfillment orders */\n    create: {\n      name: \"Create\",\n      requestType: FulfillmentList,\n      requestStream: false,\n      responseType: FulfillmentListResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Updates fulfillment orders unless Status is beyond Submit */\n    update: {\n      name: \"Update\",\n      requestType: FulfillmentList,\n      requestStream: false,\n      responseType: FulfillmentListResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Creates or Updates fulfillment orders unless Status is beyond Submit */\n    upsert: {\n      name: \"Upsert\",\n      requestType: FulfillmentList,\n      requestStream: false,\n      responseType: FulfillmentListResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Evaluate fulfillment for correctness */\n    evaluate: {\n      name: \"Evaluate\",\n      requestType: FulfillmentList,\n      requestStream: false,\n      responseType: FulfillmentListResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Creates, Submits and Updates fulfillment orders against API */\n    submit: {\n      name: \"Submit\",\n      requestType: FulfillmentList,\n      requestStream: false,\n      responseType: FulfillmentListResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Track a batch of fulfillments */\n    track: {\n      name: \"Track\",\n      requestType: FulfillmentIdList,\n      requestStream: false,\n      responseType: FulfillmentListResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Withdraw a batch of fulfillments and request for cancelation */\n    withdraw: {\n      name: \"Withdraw\",\n      requestType: FulfillmentIdList,\n      requestStream: false,\n      responseType: FulfillmentListResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Cancel a batch of fulfillments */\n    cancel: {\n      name: \"Cancel\",\n      requestType: FulfillmentIdList,\n      requestStream: false,\n      responseType: FulfillmentListResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Delete a batch of fulfillments from the database */\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Evaluate and (re-)Render fulfillments as PDF to ostorage. (creates if not exist, updates if id is given) */\n    render: {\n      name: \"Render\",\n      requestType: FulfillmentList,\n      requestStream: false,\n      responseType: FulfillmentListResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Requires Invoice Service */\n    createInvoice: {\n      name: \"CreateInvoice\",\n      requestType: FulfillmentInvoiceRequestList,\n      requestStream: false,\n      responseType: InvoiceListResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Requires Invoice Service */\n    triggerInvoice: {\n      name: \"TriggerInvoice\",\n      requestType: FulfillmentInvoiceRequestList,\n      requestStream: false,\n      responseType: StatusListResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface FulfillmentServiceImplementation<CallContextExt = {}> {\n  /** Returns a list of shipment IDs. */\n  read(request: ReadRequest, context: CallContext & CallContextExt): Promise<DeepPartial<FulfillmentListResponse>>;\n  /** Creates fulfillment orders */\n  create(\n    request: FulfillmentList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<FulfillmentListResponse>>;\n  /** Updates fulfillment orders unless Status is beyond Submit */\n  update(\n    request: FulfillmentList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<FulfillmentListResponse>>;\n  /** Creates or Updates fulfillment orders unless Status is beyond Submit */\n  upsert(\n    request: FulfillmentList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<FulfillmentListResponse>>;\n  /** Evaluate fulfillment for correctness */\n  evaluate(\n    request: FulfillmentList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<FulfillmentListResponse>>;\n  /** Creates, Submits and Updates fulfillment orders against API */\n  submit(\n    request: FulfillmentList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<FulfillmentListResponse>>;\n  /** Track a batch of fulfillments */\n  track(\n    request: FulfillmentIdList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<FulfillmentListResponse>>;\n  /** Withdraw a batch of fulfillments and request for cancelation */\n  withdraw(\n    request: FulfillmentIdList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<FulfillmentListResponse>>;\n  /** Cancel a batch of fulfillments */\n  cancel(\n    request: FulfillmentIdList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<FulfillmentListResponse>>;\n  /** Delete a batch of fulfillments from the database */\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n  /** Evaluate and (re-)Render fulfillments as PDF to ostorage. (creates if not exist, updates if id is given) */\n  render(\n    request: FulfillmentList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<FulfillmentListResponse>>;\n  /** Requires Invoice Service */\n  createInvoice(\n    request: FulfillmentInvoiceRequestList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<InvoiceListResponse>>;\n  /** Requires Invoice Service */\n  triggerInvoice(\n    request: FulfillmentInvoiceRequestList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<StatusListResponse>>;\n}\n\nexport interface FulfillmentServiceClient<CallOptionsExt = {}> {\n  /** Returns a list of shipment IDs. */\n  read(request: DeepPartial<ReadRequest>, options?: CallOptions & CallOptionsExt): Promise<FulfillmentListResponse>;\n  /** Creates fulfillment orders */\n  create(\n    request: DeepPartial<FulfillmentList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<FulfillmentListResponse>;\n  /** Updates fulfillment orders unless Status is beyond Submit */\n  update(\n    request: DeepPartial<FulfillmentList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<FulfillmentListResponse>;\n  /** Creates or Updates fulfillment orders unless Status is beyond Submit */\n  upsert(\n    request: DeepPartial<FulfillmentList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<FulfillmentListResponse>;\n  /** Evaluate fulfillment for correctness */\n  evaluate(\n    request: DeepPartial<FulfillmentList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<FulfillmentListResponse>;\n  /** Creates, Submits and Updates fulfillment orders against API */\n  submit(\n    request: DeepPartial<FulfillmentList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<FulfillmentListResponse>;\n  /** Track a batch of fulfillments */\n  track(\n    request: DeepPartial<FulfillmentIdList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<FulfillmentListResponse>;\n  /** Withdraw a batch of fulfillments and request for cancelation */\n  withdraw(\n    request: DeepPartial<FulfillmentIdList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<FulfillmentListResponse>;\n  /** Cancel a batch of fulfillments */\n  cancel(\n    request: DeepPartial<FulfillmentIdList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<FulfillmentListResponse>;\n  /** Delete a batch of fulfillments from the database */\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n  /** Evaluate and (re-)Render fulfillments as PDF to ostorage. (creates if not exist, updates if id is given) */\n  render(\n    request: DeepPartial<FulfillmentList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<FulfillmentListResponse>;\n  /** Requires Invoice Service */\n  createInvoice(\n    request: DeepPartial<FulfillmentInvoiceRequestList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<InvoiceListResponse>;\n  /** Requires Invoice Service */\n  triggerInvoice(\n    request: DeepPartial<FulfillmentInvoiceRequestList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<StatusListResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/fulfillment.proto\",\n    \"package\": \"io.restorecommerce.fulfillment\",\n    \"dependency\": [\n      \"google/protobuf/any.proto\",\n      \"io/restorecommerce/reference.proto\",\n      \"io/restorecommerce/resource_base.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/address.proto\",\n      \"io/restorecommerce/country.proto\",\n      \"io/restorecommerce/product.proto\",\n      \"io/restorecommerce/options.proto\",\n      \"io/restorecommerce/price.proto\",\n      \"io/restorecommerce/amount.proto\",\n      \"io/restorecommerce/invoice.proto\",\n      \"io/restorecommerce/file.proto\",\n      \"google/protobuf/timestamp.proto\",\n      \"io/restorecommerce/user.proto\",\n      \"io/restorecommerce/customer.proto\",\n      \"io/restorecommerce/shop.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Item\",\n      \"field\": [{\n        \"name\": \"product_id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"productId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"variant_id\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"variantId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"quantity\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 5,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"quantity\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"name\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"description\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"description\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"taric_code\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"taricCode\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"hs_code\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"hsCode\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"origin_country_id\",\n        \"number\": 8,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 7,\n        \"jsonName\": \"originCountryId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"value\",\n        \"number\": 9,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.amount.Amount\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 8,\n        \"jsonName\": \"value\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"package\",\n        \"number\": 10,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.product.Package\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 9,\n        \"jsonName\": \"package\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_product_id\", \"options\": undefined },\n        { \"name\": \"_variant_id\", \"options\": undefined },\n        { \"name\": \"_quantity\", \"options\": undefined },\n        { \"name\": \"_name\", \"options\": undefined },\n        { \"name\": \"_description\", \"options\": undefined },\n        { \"name\": \"_taric_code\", \"options\": undefined },\n        { \"name\": \"_hs_code\", \"options\": undefined },\n        { \"name\": \"_origin_country_id\", \"options\": undefined },\n        { \"name\": \"_value\", \"options\": undefined },\n        { \"name\": \"_package\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Parcel\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"product_id\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"productId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"variant_id\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"variantId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"items\",\n        \"number\": 4,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.fulfillment.Item\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"price\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.price.Price\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"price\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"amount\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.amount.Amount\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"amount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"package\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.product.Package\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"package\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_product_id\", \"options\": undefined },\n        { \"name\": \"_variant_id\", \"options\": undefined },\n        { \"name\": \"_price\", \"options\": undefined },\n        { \"name\": \"_amount\", \"options\": undefined },\n        { \"name\": \"_package\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Label\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"parcel_id\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"parcelId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"file\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.file.File\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"file\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"shipment_number\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"shipmentNumber\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"state\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".io.restorecommerce.fulfillment.FulfillmentState\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"state\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_parcel_id\", \"options\": undefined },\n        { \"name\": \"_file\", \"options\": undefined },\n        { \"name\": \"_shipment_number\", \"options\": undefined },\n        { \"name\": \"_state\", \"options\": undefined },\n        { \"name\": \"_status\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Charge\",\n      \"field\": [{\n        \"name\": \"description\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"description\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"charge\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.amount.Amount\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"charge\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_description\", \"options\": undefined }, { \"name\": \"_charge\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"CustomsDeclaration\",\n      \"field\": [{\n        \"name\": \"export_type\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"exportType\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"export_description\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"exportDescription\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"invoice_number\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"invoiceNumber\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"consignee_ref\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"consigneeRef\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"shipper_ref\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"shipperRef\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"MRN\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"MRN\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"permit_number\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"permitNumber\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"attestation\",\n        \"number\": 8,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 7,\n        \"jsonName\": \"attestation\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"shipping_condition\",\n        \"number\": 9,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 8,\n        \"jsonName\": \"shippingCondition\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"charges\",\n        \"number\": 10,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.fulfillment.Charge\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"charges\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"notify\",\n        \"number\": 11,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 9,\n        \"jsonName\": \"notify\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_export_type\", \"options\": undefined },\n        { \"name\": \"_export_description\", \"options\": undefined },\n        { \"name\": \"_invoice_number\", \"options\": undefined },\n        { \"name\": \"_consignee_ref\", \"options\": undefined },\n        { \"name\": \"_shipper_ref\", \"options\": undefined },\n        { \"name\": \"_MRN\", \"options\": undefined },\n        { \"name\": \"_permit_number\", \"options\": undefined },\n        { \"name\": \"_attestation\", \"options\": undefined },\n        { \"name\": \"_shipping_condition\", \"options\": undefined },\n        { \"name\": \"_notify\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Packaging\",\n      \"field\": [{\n        \"name\": \"parcels\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.fulfillment.Parcel\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"parcels\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"sender\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.address.ShippingAddress\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"sender\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"recipient\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.address.ShippingAddress\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"recipient\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"notify\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"notify\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"customs_declaration\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.fulfillment.CustomsDeclaration\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"customsDeclaration\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_sender\", \"options\": undefined }, { \"name\": \"_recipient\", \"options\": undefined }, {\n        \"name\": \"_notify\",\n        \"options\": undefined,\n      }, { \"name\": \"_customs_declaration\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Event\",\n      \"field\": [{\n        \"name\": \"timestamp\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Timestamp\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"timestamp\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"location\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"location\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"details\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Any\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"details\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_timestamp\", \"options\": undefined }, { \"name\": \"_location\", \"options\": undefined }, {\n        \"name\": \"_details\",\n        \"options\": undefined,\n      }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Tracking\",\n      \"field\": [{\n        \"name\": \"shipment_number\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"shipmentNumber\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"events\",\n        \"number\": 3,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.fulfillment.Event\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"events\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"details\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Any\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"details\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_shipment_number\", \"options\": undefined },\n        { \"name\": \"_details\", \"options\": undefined },\n        { \"name\": \"_status\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Fulfillment\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"user_id\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"userId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"customer_id\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"customerId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"shop_id\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"shopId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"references\",\n        \"number\": 6,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.reference.Reference\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"references\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"packaging\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.fulfillment.Packaging\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"packaging\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"labels\",\n        \"number\": 8,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.fulfillment.Label\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"labels\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"trackings\",\n        \"number\": 9,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.fulfillment.Tracking\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"trackings\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_amounts\",\n        \"number\": 10,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.amount.Amount\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalAmounts\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"fulfillment_state\",\n        \"number\": 11,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".io.restorecommerce.fulfillment.FulfillmentState\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"fulfillmentState\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"documents\",\n        \"number\": 12,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.file.File\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"documents\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_user_id\", \"options\": undefined },\n        { \"name\": \"_customer_id\", \"options\": undefined },\n        { \"name\": \"_shop_id\", \"options\": undefined },\n        { \"name\": \"_packaging\", \"options\": undefined },\n        { \"name\": \"_fulfillment_state\", \"options\": undefined },\n      ],\n      \"options\": {\n        \"messageSetWireFormat\": false,\n        \"noStandardDescriptorAccessor\": false,\n        \"deprecated\": false,\n        \"mapEntry\": false,\n        \"uninterpretedOption\": [],\n      },\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"FulfillmentList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.fulfillment.Fulfillment\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"FulfillmentResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.fulfillment.Fulfillment\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"FulfillmentListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.fulfillment.FulfillmentResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"FulfillmentId\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"shipment_numbers\",\n        \"number\": 2,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"shipmentNumbers\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"options\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Any\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"options\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }, { \"name\": \"_options\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"FulfillmentIdList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.fulfillment.FulfillmentId\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"FulfillmentInvoiceSection\",\n      \"field\": [{\n        \"name\": \"fulfillment_id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"fulfillmentId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"selected_parcels\",\n        \"number\": 2,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"selectedParcels\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_fulfillment_id\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"FulfillmentInvoiceRequest\",\n      \"field\": [{\n        \"name\": \"invoice_number\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"invoiceNumber\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"payment_hints\",\n        \"number\": 2,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"paymentHints\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"sections\",\n        \"number\": 3,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.fulfillment.FulfillmentInvoiceSection\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"sections\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_invoice_number\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"FulfillmentInvoiceRequestList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.fulfillment.FulfillmentInvoiceRequest\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [{\n      \"name\": \"FulfillmentState\",\n      \"value\": [\n        { \"name\": \"PENDING\", \"number\": 0, \"options\": undefined },\n        { \"name\": \"SUBMITTED\", \"number\": 1, \"options\": undefined },\n        { \"name\": \"IN_TRANSIT\", \"number\": 2, \"options\": undefined },\n        { \"name\": \"COMPLETE\", \"number\": 3, \"options\": undefined },\n        { \"name\": \"CANCELLED\", \"number\": 4, \"options\": undefined },\n        { \"name\": \"WITHDRAWN\", \"number\": 5, \"options\": undefined },\n        { \"name\": \"RETOURE\", \"number\": 6, \"options\": undefined },\n        { \"name\": \"RETOURE_COMPLETE\", \"number\": 7, \"options\": undefined },\n        { \"name\": \"FAILED\", \"number\": 8, \"options\": undefined },\n        { \"name\": \"INVALID\", \"number\": 9, \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ExportType\",\n      \"value\": [\n        { \"name\": \"OTHER\", \"number\": 0, \"options\": undefined },\n        { \"name\": \"PRESENT\", \"number\": 1, \"options\": undefined },\n        { \"name\": \"COMMERCIAL_SAMPLE\", \"number\": 2, \"options\": undefined },\n        { \"name\": \"DOCUMENT\", \"number\": 3, \"options\": undefined },\n        { \"name\": \"RETURN_OF_GOODS\", \"number\": 4, \"options\": undefined },\n        { \"name\": \"COMMERCIAL_GOODS\", \"number\": 5, \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ShippingCondition\",\n      \"value\": [\n        { \"name\": \"DDU\", \"number\": 0, \"options\": undefined },\n        { \"name\": \"DPA\", \"number\": 1, \"options\": undefined },\n        { \"name\": \"DAP\", \"number\": 2, \"options\": undefined },\n        { \"name\": \"DDP\", \"number\": 3, \"options\": undefined },\n        { \"name\": \"DDX\", \"number\": 4, \"options\": undefined },\n        { \"name\": \"DXV\", \"number\": 5, \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"service\": [{\n      \"name\": \"FulfillmentService\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ReadRequest\",\n        \"outputType\": \".io.restorecommerce.fulfillment.FulfillmentListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.fulfillment.FulfillmentList\",\n        \"outputType\": \".io.restorecommerce.fulfillment.FulfillmentListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.fulfillment.FulfillmentList\",\n        \"outputType\": \".io.restorecommerce.fulfillment.FulfillmentListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.fulfillment.FulfillmentList\",\n        \"outputType\": \".io.restorecommerce.fulfillment.FulfillmentListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Evaluate\",\n        \"inputType\": \".io.restorecommerce.fulfillment.FulfillmentList\",\n        \"outputType\": \".io.restorecommerce.fulfillment.FulfillmentListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Submit\",\n        \"inputType\": \".io.restorecommerce.fulfillment.FulfillmentList\",\n        \"outputType\": \".io.restorecommerce.fulfillment.FulfillmentListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Track\",\n        \"inputType\": \".io.restorecommerce.fulfillment.FulfillmentIdList\",\n        \"outputType\": \".io.restorecommerce.fulfillment.FulfillmentListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Withdraw\",\n        \"inputType\": \".io.restorecommerce.fulfillment.FulfillmentIdList\",\n        \"outputType\": \".io.restorecommerce.fulfillment.FulfillmentListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Cancel\",\n        \"inputType\": \".io.restorecommerce.fulfillment.FulfillmentIdList\",\n        \"outputType\": \".io.restorecommerce.fulfillment.FulfillmentListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Render\",\n        \"inputType\": \".io.restorecommerce.fulfillment.FulfillmentList\",\n        \"outputType\": \".io.restorecommerce.fulfillment.FulfillmentListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"CreateInvoice\",\n        \"inputType\": \".io.restorecommerce.fulfillment.FulfillmentInvoiceRequestList\",\n        \"outputType\": \".io.restorecommerce.invoice.InvoiceListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"TriggerInvoice\",\n        \"inputType\": \".io.restorecommerce.fulfillment.FulfillmentInvoiceRequestList\",\n        \"outputType\": \".io.restorecommerce.status.StatusListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [3, 15],\n        \"span\": [21, 0, 39],\n        \"leadingComments\": \" Used by resolvers\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0],\n        \"span\": [28, 0, 95, 1],\n        \"leadingComments\": \"*\\nMicroservice definition.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0, 2, 0],\n        \"span\": [32, 2, 34, 3],\n        \"leadingComments\": \"*\\nReturns a list of shipment IDs.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0, 2, 1],\n        \"span\": [39, 2, 65],\n        \"leadingComments\": \"*\\nCreates fulfillment orders\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0, 2, 2],\n        \"span\": [44, 2, 65],\n        \"leadingComments\": \"*\\nUpdates fulfillment orders unless Status is beyond Submit\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0, 2, 3],\n        \"span\": [49, 2, 65],\n        \"leadingComments\": \"*\\nCreates or Updates fulfillment orders unless Status is beyond Submit\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0, 2, 4],\n        \"span\": [54, 2, 67],\n        \"leadingComments\": \"*\\nEvaluate fulfillment for correctness\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0, 2, 5],\n        \"span\": [59, 2, 65],\n        \"leadingComments\": \"*\\nCreates, Submits and Updates fulfillment orders against API\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0, 2, 6],\n        \"span\": [64, 2, 66],\n        \"leadingComments\": \"*\\nTrack a batch of fulfillments\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0, 2, 7],\n        \"span\": [69, 2, 69],\n        \"leadingComments\": \"*\\nWithdraw a batch of fulfillments and request for cancelation\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0, 2, 8],\n        \"span\": [74, 2, 67],\n        \"leadingComments\": \"*\\nCancel a batch of fulfillments\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0, 2, 9],\n        \"span\": [79, 2, 118],\n        \"leadingComments\": \"*\\nDelete a batch of fulfillments from the database\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0, 2, 10],\n        \"span\": [84, 2, 65],\n        \"leadingComments\":\n          \"*\\n Evaluate and (re-)Render fulfillments as PDF to ostorage. (creates if not exist, updates if id is given)\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0, 2, 11],\n        \"span\": [89, 2, 109],\n        \"leadingComments\": \"*\\nRequires Invoice Service\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0, 2, 12],\n        \"span\": [94, 2, 108],\n        \"leadingComments\": \"*\\nRequires Invoice Service\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 2, 2, 3],\n        \"span\": [163, 2, 38],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \"filled on Order\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 2, 2, 4],\n        \"span\": [164, 2, 38],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \"update by Track\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 2, 2, 5],\n        \"span\": [165, 2, 55],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \"API status\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4, 2, 0],\n        \"span\": [174, 2, 34],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" should be ExportType (but unconstrained)\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4, 2, 6],\n        \"span\": [180, 2, 36],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" for e.g. rare goods\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4, 2, 7],\n        \"span\": [181, 2, 34],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" for e.g. medical goods\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4, 2, 8],\n        \"span\": [182, 2, 41],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" should be ShippingCondition (unconstrained)\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 8],\n        \"span\": [212, 0, 257, 1],\n        \"leadingComments\": \"*\\nThis is the message of how it get stored to the database\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 8, 2, 7],\n        \"span\": [252, 2, 28],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \"set by service\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 8, 2, 8],\n        \"span\": [253, 2, 34],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \"set by service\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 8, 2, 9],\n        \"span\": [254, 2, 63],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \"set by service\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 8, 2, 10],\n        \"span\": [255, 2, 51],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \"set by service\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 8, 2, 11],\n        \"span\": [256, 2, 55],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" url to rendered PDFs\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 12, 2, 1],\n        \"span\": [278, 2, 39],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \"optional\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 14, 2, 1],\n        \"span\": [290, 2, 39],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" selects all on empty\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 15, 2, 0],\n        \"span\": [294, 2, 37],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" if given\\n\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.fulfillment.FulfillmentState\": FulfillmentState,\n    \".io.restorecommerce.fulfillment.ExportType\": ExportType,\n    \".io.restorecommerce.fulfillment.ShippingCondition\": ShippingCondition,\n    \".io.restorecommerce.fulfillment.Item\": Item,\n    \".io.restorecommerce.fulfillment.Parcel\": Parcel,\n    \".io.restorecommerce.fulfillment.Label\": Label,\n    \".io.restorecommerce.fulfillment.Charge\": Charge,\n    \".io.restorecommerce.fulfillment.CustomsDeclaration\": CustomsDeclaration,\n    \".io.restorecommerce.fulfillment.Packaging\": Packaging,\n    \".io.restorecommerce.fulfillment.Event\": Event,\n    \".io.restorecommerce.fulfillment.Tracking\": Tracking,\n    \".io.restorecommerce.fulfillment.Fulfillment\": Fulfillment,\n    \".io.restorecommerce.fulfillment.FulfillmentList\": FulfillmentList,\n    \".io.restorecommerce.fulfillment.FulfillmentResponse\": FulfillmentResponse,\n    \".io.restorecommerce.fulfillment.FulfillmentListResponse\": FulfillmentListResponse,\n    \".io.restorecommerce.fulfillment.FulfillmentId\": FulfillmentId,\n    \".io.restorecommerce.fulfillment.FulfillmentIdList\": FulfillmentIdList,\n    \".io.restorecommerce.fulfillment.FulfillmentInvoiceSection\": FulfillmentInvoiceSection,\n    \".io.restorecommerce.fulfillment.FulfillmentInvoiceRequest\": FulfillmentInvoiceRequest,\n    \".io.restorecommerce.fulfillment.FulfillmentInvoiceRequestList\": FulfillmentInvoiceRequestList,\n  },\n  dependencies: [\n    protoMetadata1,\n    protoMetadata2,\n    protoMetadata3,\n    protoMetadata4,\n    protoMetadata5,\n    protoMetadata6,\n    protoMetadata7,\n    protoMetadata8,\n    protoMetadata9,\n    protoMetadata10,\n    protoMetadata11,\n    protoMetadata12,\n    protoMetadata13,\n    protoMetadata14,\n    protoMetadata15,\n    protoMetadata16,\n    protoMetadata17,\n    protoMetadata18,\n  ],\n  options: {\n    messages: {\n      \"Parcel\": {\n        fields: {\n          \"product_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CjouaW8ucmVzdG9yZWNvbW1lcmNlLmZ1bGZpbGxtZW50X3Byb2R1Y3QuRnVsZmlsbG1lbnRQcm9kdWN0EgttYXN0ZXJfZGF0YRoTZnVsZmlsbG1lbnRfcHJvZHVjdCIEUmVhZCoHcHJvZHVjdA==\",\n                \"base64\",\n              ),\n            ),\n          },\n        },\n      },\n      \"Fulfillment\": {\n        options: {\n          \"kafka_subscriber\": KafkaSubscription.decode(\n            Buffer.from(\n              \"CgxmdWxmaWxsbWVudHMSJ2lvLnJlc3RvcmVjb21tZXJjZS5mdWxmaWxsbWVudC5yZXNvdXJjZRoSZnVsZmlsbG1lbnRDcmVhdGVkIhJmdWxmaWxsbWVudFVwZGF0ZWQqEmZ1bGZpbGxtZW50RGVsZXRlZA==\",\n              \"base64\",\n            ),\n          ),\n        },\n        fields: {\n          \"user_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\"Ch0uaW8ucmVzdG9yZWNvbW1lcmNlLnVzZXIuVXNlchIIaWRlbnRpdHkaBHVzZXIiBFJlYWQqBHVzZXI=\", \"base64\"),\n            ),\n          },\n          \"customer_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CiUuaW8ucmVzdG9yZWNvbW1lcmNlLmN1c3RvbWVyLkN1c3RvbWVyEgttYXN0ZXJfZGF0YRoIY3VzdG9tZXIiBFJlYWQqCGN1c3RvbWVy\",\n                \"base64\",\n              ),\n            ),\n          },\n          \"shop_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"Ch0uaW8ucmVzdG9yZWNvbW1lcmNlLnNob3AuU2hvcBILbWFzdGVyX2RhdGEaBHNob3AiBFJlYWQqBHNob3A=\",\n                \"base64\",\n              ),\n            ),\n          },\n        },\n      },\n    },\n    services: { \"FulfillmentService\": { methods: { \"Read\": { \"is_query\": true } } } },\n  },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction toTimestamp(date: Date): Timestamp {\n  const seconds = Math.trunc(date.getTime() / 1_000);\n  const nanos = (date.getTime() % 1_000) * 1_000_000;\n  return { seconds, nanos };\n}\n\nfunction fromTimestamp(t: Timestamp): Date {\n  let millis = (t.seconds || 0) * 1_000;\n  millis += (t.nanos || 0) / 1_000_000;\n  return new globalThis.Date(millis);\n}\n\nfunction fromJsonTimestamp(o: any): Date {\n  if (o instanceof globalThis.Date) {\n    return o;\n  } else if (typeof o === \"string\") {\n    return new globalThis.Date(o);\n  } else {\n    return fromTimestamp(Timestamp.fromJSON(o));\n  }\n}\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/fulfillment_courier.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { Any, protoMetadata as protoMetadata1 } from \"../../google/protobuf/any\";\nimport { Attribute, protoMetadata as protoMetadata5 } from \"./attribute\";\nimport { protoMetadata as protoMetadata4, Subject } from \"./auth\";\nimport { Meta, protoMetadata as protoMetadata3 } from \"./meta\";\nimport { KafkaSubscription, protoMetadata as protoMetadata7, Resolver } from \"./options\";\nimport { DeleteRequest, DeleteResponse, protoMetadata as protoMetadata2, ReadRequest } from \"./resource_base\";\nimport { protoMetadata as protoMetadata8 } from \"./shop\";\nimport { OperationStatus, protoMetadata as protoMetadata6, Status } from \"./status\";\n\nexport const protobufPackage = \"io.restorecommerce.fulfillment_courier\";\n\nexport enum SupportedAPI {\n  DHLRest = \"DHLRest\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function supportedAPIFromJSON(object: any): SupportedAPI {\n  switch (object) {\n    case 0:\n    case \"DHLRest\":\n      return SupportedAPI.DHLRest;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return SupportedAPI.UNRECOGNIZED;\n  }\n}\n\nexport function supportedAPIToJSON(object: SupportedAPI): string {\n  switch (object) {\n    case SupportedAPI.DHLRest:\n      return \"DHLRest\";\n    case SupportedAPI.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function supportedAPIToNumber(object: SupportedAPI): number {\n  switch (object) {\n    case SupportedAPI.DHLRest:\n      return 0;\n    case SupportedAPI.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\nexport interface FulfillmentCourier {\n  id?: string | undefined;\n  meta?: Meta | undefined;\n  shopIds?: string[] | undefined;\n  name?: string | undefined;\n  description?: string | undefined;\n  logo?: string | undefined;\n  website?: string | undefined;\n  credentialId?: string | undefined;\n  configuration?:\n    | Any\n    | undefined;\n  /** should be SupportedAPI (but unconstrained) */\n  api?: string | undefined;\n  attributes?: Attribute[] | undefined;\n}\n\nexport interface FulfillmentCourierList {\n  items?: FulfillmentCourier[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface FulfillmentCourierResponse {\n  payload?: FulfillmentCourier | undefined;\n  status?: Status | undefined;\n}\n\nexport interface FulfillmentCourierListResponse {\n  items?: FulfillmentCourierResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nfunction createBaseFulfillmentCourier(): FulfillmentCourier {\n  return {};\n}\n\nexport const FulfillmentCourier: MessageFns<FulfillmentCourier> = {\n  encode(message: FulfillmentCourier, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(18).fork()).join();\n    }\n    if (message.shopIds !== undefined && message.shopIds.length !== 0) {\n      for (const v of message.shopIds) {\n        writer.uint32(26).string(v!);\n      }\n    }\n    if (message.name !== undefined) {\n      writer.uint32(34).string(message.name);\n    }\n    if (message.description !== undefined) {\n      writer.uint32(42).string(message.description);\n    }\n    if (message.logo !== undefined) {\n      writer.uint32(50).string(message.logo);\n    }\n    if (message.website !== undefined) {\n      writer.uint32(58).string(message.website);\n    }\n    if (message.credentialId !== undefined) {\n      writer.uint32(66).string(message.credentialId);\n    }\n    if (message.configuration !== undefined) {\n      Any.encode(message.configuration, writer.uint32(74).fork()).join();\n    }\n    if (message.api !== undefined) {\n      writer.uint32(82).string(message.api);\n    }\n    if (message.attributes !== undefined && message.attributes.length !== 0) {\n      for (const v of message.attributes) {\n        Attribute.encode(v!, writer.uint32(90).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FulfillmentCourier {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFulfillmentCourier();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          if (message.shopIds === undefined) {\n            message.shopIds = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.shopIds!.push(el);\n          }\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.logo = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.website = reader.string();\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.credentialId = reader.string();\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.configuration = Any.decode(reader, reader.uint32());\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.api = reader.string();\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          if (message.attributes === undefined) {\n            message.attributes = [];\n          }\n          const el = Attribute.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.attributes!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FulfillmentCourier {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      shopIds: globalThis.Array.isArray(object?.shopIds)\n        ? object.shopIds.map((e: any) => globalThis.String(e))\n        : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      description: isSet(object.description) ? globalThis.String(object.description) : undefined,\n      logo: isSet(object.logo) ? globalThis.String(object.logo) : undefined,\n      website: isSet(object.website) ? globalThis.String(object.website) : undefined,\n      credentialId: isSet(object.credentialId) ? globalThis.String(object.credentialId) : undefined,\n      configuration: isSet(object.configuration) ? Any.fromJSON(object.configuration) : undefined,\n      api: isSet(object.api) ? globalThis.String(object.api) : undefined,\n      attributes: globalThis.Array.isArray(object?.attributes)\n        ? object.attributes.map((e: any) => Attribute.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: FulfillmentCourier): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.shopIds?.length) {\n      obj.shopIds = message.shopIds;\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.description !== undefined) {\n      obj.description = message.description;\n    }\n    if (message.logo !== undefined) {\n      obj.logo = message.logo;\n    }\n    if (message.website !== undefined) {\n      obj.website = message.website;\n    }\n    if (message.credentialId !== undefined) {\n      obj.credentialId = message.credentialId;\n    }\n    if (message.configuration !== undefined) {\n      obj.configuration = Any.toJSON(message.configuration);\n    }\n    if (message.api !== undefined) {\n      obj.api = message.api;\n    }\n    if (message.attributes?.length) {\n      obj.attributes = message.attributes.map((e) => Attribute.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FulfillmentCourier>): FulfillmentCourier {\n    return FulfillmentCourier.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FulfillmentCourier>): FulfillmentCourier {\n    const message = createBaseFulfillmentCourier();\n    message.id = object.id ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.shopIds = object.shopIds?.map((e) => e) || undefined;\n    message.name = object.name ?? undefined;\n    message.description = object.description ?? undefined;\n    message.logo = object.logo ?? undefined;\n    message.website = object.website ?? undefined;\n    message.credentialId = object.credentialId ?? undefined;\n    message.configuration = (object.configuration !== undefined && object.configuration !== null)\n      ? Any.fromPartial(object.configuration)\n      : undefined;\n    message.api = object.api ?? undefined;\n    message.attributes = object.attributes?.map((e) => Attribute.fromPartial(e)) || undefined;\n    return message;\n  },\n};\n\nfunction createBaseFulfillmentCourierList(): FulfillmentCourierList {\n  return {};\n}\n\nexport const FulfillmentCourierList: MessageFns<FulfillmentCourierList> = {\n  encode(message: FulfillmentCourierList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        FulfillmentCourier.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FulfillmentCourierList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFulfillmentCourierList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = FulfillmentCourier.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FulfillmentCourierList {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => FulfillmentCourier.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: FulfillmentCourierList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => FulfillmentCourier.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FulfillmentCourierList>): FulfillmentCourierList {\n    return FulfillmentCourierList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FulfillmentCourierList>): FulfillmentCourierList {\n    const message = createBaseFulfillmentCourierList();\n    message.items = object.items?.map((e) => FulfillmentCourier.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseFulfillmentCourierResponse(): FulfillmentCourierResponse {\n  return {};\n}\n\nexport const FulfillmentCourierResponse: MessageFns<FulfillmentCourierResponse> = {\n  encode(message: FulfillmentCourierResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      FulfillmentCourier.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FulfillmentCourierResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFulfillmentCourierResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = FulfillmentCourier.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FulfillmentCourierResponse {\n    return {\n      payload: isSet(object.payload) ? FulfillmentCourier.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: FulfillmentCourierResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = FulfillmentCourier.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FulfillmentCourierResponse>): FulfillmentCourierResponse {\n    return FulfillmentCourierResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FulfillmentCourierResponse>): FulfillmentCourierResponse {\n    const message = createBaseFulfillmentCourierResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? FulfillmentCourier.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseFulfillmentCourierListResponse(): FulfillmentCourierListResponse {\n  return {};\n}\n\nexport const FulfillmentCourierListResponse: MessageFns<FulfillmentCourierListResponse> = {\n  encode(message: FulfillmentCourierListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        FulfillmentCourierResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FulfillmentCourierListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFulfillmentCourierListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = FulfillmentCourierResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FulfillmentCourierListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => FulfillmentCourierResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: FulfillmentCourierListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => FulfillmentCourierResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FulfillmentCourierListResponse>): FulfillmentCourierListResponse {\n    return FulfillmentCourierListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FulfillmentCourierListResponse>): FulfillmentCourierListResponse {\n    const message = createBaseFulfillmentCourierListResponse();\n    message.items = object.items?.map((e) => FulfillmentCourierResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nexport type FulfillmentCourierServiceDefinition = typeof FulfillmentCourierServiceDefinition;\nexport const FulfillmentCourierServiceDefinition = {\n  name: \"FulfillmentCourierService\",\n  fullName: \"io.restorecommerce.fulfillment_courier.FulfillmentCourierService\",\n  methods: {\n    read: {\n      name: \"Read\",\n      requestType: ReadRequest,\n      requestStream: false,\n      responseType: FulfillmentCourierListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    create: {\n      name: \"Create\",\n      requestType: FulfillmentCourierList,\n      requestStream: false,\n      responseType: FulfillmentCourierListResponse,\n      responseStream: false,\n      options: {},\n    },\n    update: {\n      name: \"Update\",\n      requestType: FulfillmentCourierList,\n      requestStream: false,\n      responseType: FulfillmentCourierListResponse,\n      responseStream: false,\n      options: {},\n    },\n    upsert: {\n      name: \"Upsert\",\n      requestType: FulfillmentCourierList,\n      requestStream: false,\n      responseType: FulfillmentCourierListResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface FulfillmentCourierServiceImplementation<CallContextExt = {}> {\n  read(\n    request: ReadRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<FulfillmentCourierListResponse>>;\n  create(\n    request: FulfillmentCourierList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<FulfillmentCourierListResponse>>;\n  update(\n    request: FulfillmentCourierList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<FulfillmentCourierListResponse>>;\n  upsert(\n    request: FulfillmentCourierList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<FulfillmentCourierListResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n}\n\nexport interface FulfillmentCourierServiceClient<CallOptionsExt = {}> {\n  read(\n    request: DeepPartial<ReadRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<FulfillmentCourierListResponse>;\n  create(\n    request: DeepPartial<FulfillmentCourierList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<FulfillmentCourierListResponse>;\n  update(\n    request: DeepPartial<FulfillmentCourierList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<FulfillmentCourierListResponse>;\n  upsert(\n    request: DeepPartial<FulfillmentCourierList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<FulfillmentCourierListResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/fulfillment_courier.proto\",\n    \"package\": \"io.restorecommerce.fulfillment_courier\",\n    \"dependency\": [\n      \"google/protobuf/any.proto\",\n      \"io/restorecommerce/resource_base.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/attribute.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/options.proto\",\n      \"io/restorecommerce/shop.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"FulfillmentCourier\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"shop_ids\",\n        \"number\": 3,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"shopIds\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"name\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"description\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"description\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"logo\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"logo\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"website\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"website\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"credential_id\",\n        \"number\": 8,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"credentialId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"configuration\",\n        \"number\": 9,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Any\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 7,\n        \"jsonName\": \"configuration\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"api\",\n        \"number\": 10,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 8,\n        \"jsonName\": \"api\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"attributes\",\n        \"number\": 11,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.attribute.Attribute\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"attributes\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_name\", \"options\": undefined },\n        { \"name\": \"_description\", \"options\": undefined },\n        { \"name\": \"_logo\", \"options\": undefined },\n        { \"name\": \"_website\", \"options\": undefined },\n        { \"name\": \"_credential_id\", \"options\": undefined },\n        { \"name\": \"_configuration\", \"options\": undefined },\n        { \"name\": \"_api\", \"options\": undefined },\n      ],\n      \"options\": {\n        \"messageSetWireFormat\": false,\n        \"noStandardDescriptorAccessor\": false,\n        \"deprecated\": false,\n        \"mapEntry\": false,\n        \"uninterpretedOption\": [],\n      },\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"FulfillmentCourierList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.fulfillment_courier.FulfillmentCourier\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"FulfillmentCourierResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.fulfillment_courier.FulfillmentCourier\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"FulfillmentCourierListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.fulfillment_courier.FulfillmentCourierResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [{\n      \"name\": \"SupportedAPI\",\n      \"value\": [{ \"name\": \"DHLRest\", \"number\": 0, \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"service\": [{\n      \"name\": \"FulfillmentCourierService\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ReadRequest\",\n        \"outputType\": \".io.restorecommerce.fulfillment_courier.FulfillmentCourierListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.fulfillment_courier.FulfillmentCourierList\",\n        \"outputType\": \".io.restorecommerce.fulfillment_courier.FulfillmentCourierListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.fulfillment_courier.FulfillmentCourierList\",\n        \"outputType\": \".io.restorecommerce.fulfillment_courier.FulfillmentCourierListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.fulfillment_courier.FulfillmentCourierList\",\n        \"outputType\": \".io.restorecommerce.fulfillment_courier.FulfillmentCourierListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [3, 7],\n        \"span\": [13, 0, 39],\n        \"leadingComments\": \" Used by resolvers\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 0, 2, 9],\n        \"span\": [59, 2, 27],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" should be SupportedAPI (but unconstrained)\\n\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.fulfillment_courier.SupportedAPI\": SupportedAPI,\n    \".io.restorecommerce.fulfillment_courier.FulfillmentCourier\": FulfillmentCourier,\n    \".io.restorecommerce.fulfillment_courier.FulfillmentCourierList\": FulfillmentCourierList,\n    \".io.restorecommerce.fulfillment_courier.FulfillmentCourierResponse\": FulfillmentCourierResponse,\n    \".io.restorecommerce.fulfillment_courier.FulfillmentCourierListResponse\": FulfillmentCourierListResponse,\n  },\n  dependencies: [\n    protoMetadata1,\n    protoMetadata2,\n    protoMetadata3,\n    protoMetadata4,\n    protoMetadata5,\n    protoMetadata6,\n    protoMetadata7,\n    protoMetadata8,\n  ],\n  options: {\n    messages: {\n      \"FulfillmentCourier\": {\n        options: {\n          \"kafka_subscriber\": KafkaSubscription.decode(\n            Buffer.from(\n              \"ChNmdWxmaWxsbWVudENvdXJpZXJzEi9pby5yZXN0b3JlY29tbWVyY2UuZnVsZmlsbG1lbnRfY291cmllci5yZXNvdXJjZRoZZnVsZmlsbG1lbnRDb3VyaWVyQ3JlYXRlZCIZZnVsZmlsbG1lbnRDb3VyaWVyVXBkYXRlZCoZZnVsZmlsbG1lbnRDb3VyaWVyRGVsZXRlZA==\",\n              \"base64\",\n            ),\n          ),\n        },\n        fields: {\n          \"shop_ids\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"Ch0uaW8ucmVzdG9yZWNvbW1lcmNlLnNob3AuU2hvcBILbWFzdGVyX2RhdGEaBHNob3AiBFJlYWQqBXNob3Bz\",\n                \"base64\",\n              ),\n            ),\n          },\n        },\n      },\n    },\n    services: { \"FulfillmentCourierService\": { methods: { \"Read\": { \"is_query\": true } } } },\n  },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/fulfillment_product.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { protoMetadata as protoMetadata7, ShippingAddress } from \"./address\";\nimport { Amount, protoMetadata as protoMetadata8 } from \"./amount\";\nimport { Attribute, protoMetadata as protoMetadata6 } from \"./attribute\";\nimport { protoMetadata as protoMetadata4, Subject } from \"./auth\";\nimport { Item, Parcel, protoMetadata as protoMetadata12 } from \"./fulfillment\";\nimport { protoMetadata as protoMetadata11 } from \"./fulfillment_courier\";\nimport { BoundingBox3D, protoMetadata as protoMetadata10 } from \"./geometry\";\nimport { Meta, protoMetadata as protoMetadata3 } from \"./meta\";\nimport { KafkaSubscription, protoMetadata as protoMetadata13, Resolver } from \"./options\";\nimport { Price, protoMetadata as protoMetadata9 } from \"./price\";\nimport { protoMetadata as protoMetadata1, Reference } from \"./reference\";\nimport { DeleteRequest, DeleteResponse, protoMetadata as protoMetadata2, ReadRequest } from \"./resource_base\";\nimport { OperationStatus, protoMetadata as protoMetadata5, Status } from \"./status\";\n\nexport const protobufPackage = \"io.restorecommerce.fulfillment_product\";\n\nexport interface Preferences {\n  partialFulfillmentAllowed?:\n    | boolean\n    | undefined;\n  /** Narrows search to certain couriers, leave empty for open search */\n  courierIds?:\n    | string[]\n    | undefined;\n  /** Narrows search to certain tariffs, leave empty for open search */\n  fulfillmentProductIds?:\n    | string[]\n    | undefined;\n  /** Courier specific options such as CO2 neutral delivery etc. */\n  options?: Attribute[] | undefined;\n}\n\nexport interface FulfillmentSolutionQuery {\n  customerId?: string | undefined;\n  shopId?: string | undefined;\n  sender?: ShippingAddress | undefined;\n  recipient?: ShippingAddress | undefined;\n  items?: Item[] | undefined;\n  preferences?: Preferences | undefined;\n  reference?: Reference | undefined;\n}\n\nexport interface FulfillmentSolutionQueryList {\n  items?: FulfillmentSolutionQuery[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface FulfillmentProduct {\n  id?: string | undefined;\n  name?: string | undefined;\n  description?: string | undefined;\n  courierId?: string | undefined;\n  startZones?: string[] | undefined;\n  destinationZones?: string[] | undefined;\n  taxIds?: string[] | undefined;\n  attributes?: Attribute[] | undefined;\n  variants?: Variant[] | undefined;\n  meta?: Meta | undefined;\n}\n\nexport interface Variant {\n  id?: string | undefined;\n  name?: string | undefined;\n  description?: string | undefined;\n  price?: Price | undefined;\n  maxSize?: BoundingBox3D | undefined;\n  maxWeight?: number | undefined;\n  attributes?: Attribute[] | undefined;\n}\n\nexport interface FulfillmentProductList {\n  items?: FulfillmentProduct[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface FulfillmentProductResponse {\n  payload?: FulfillmentProduct | undefined;\n  status?: Status | undefined;\n}\n\nexport interface FulfillmentProductListResponse {\n  items?: FulfillmentProductResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface FulfillmentSolution {\n  courierIds?: string[] | undefined;\n  parcels?: Parcel[] | undefined;\n  amounts?: Amount[] | undefined;\n}\n\nexport interface FulfillmentSolutionResponse {\n  reference?: Reference | undefined;\n  solutions?: FulfillmentSolution[] | undefined;\n  status?: Status | undefined;\n}\n\nexport interface FulfillmentSolutionListResponse {\n  items?: FulfillmentSolutionResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nfunction createBasePreferences(): Preferences {\n  return {};\n}\n\nexport const Preferences: MessageFns<Preferences> = {\n  encode(message: Preferences, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.partialFulfillmentAllowed !== undefined) {\n      writer.uint32(8).bool(message.partialFulfillmentAllowed);\n    }\n    if (message.courierIds !== undefined && message.courierIds.length !== 0) {\n      for (const v of message.courierIds) {\n        writer.uint32(18).string(v!);\n      }\n    }\n    if (message.fulfillmentProductIds !== undefined && message.fulfillmentProductIds.length !== 0) {\n      for (const v of message.fulfillmentProductIds) {\n        writer.uint32(26).string(v!);\n      }\n    }\n    if (message.options !== undefined && message.options.length !== 0) {\n      for (const v of message.options) {\n        Attribute.encode(v!, writer.uint32(34).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Preferences {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePreferences();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.partialFulfillmentAllowed = reader.bool();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          if (message.courierIds === undefined) {\n            message.courierIds = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.courierIds!.push(el);\n          }\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          if (message.fulfillmentProductIds === undefined) {\n            message.fulfillmentProductIds = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.fulfillmentProductIds!.push(el);\n          }\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          if (message.options === undefined) {\n            message.options = [];\n          }\n          const el = Attribute.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.options!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Preferences {\n    return {\n      partialFulfillmentAllowed: isSet(object.partialFulfillmentAllowed)\n        ? globalThis.Boolean(object.partialFulfillmentAllowed)\n        : undefined,\n      courierIds: globalThis.Array.isArray(object?.courierIds)\n        ? object.courierIds.map((e: any) => globalThis.String(e))\n        : undefined,\n      fulfillmentProductIds: globalThis.Array.isArray(object?.fulfillmentProductIds)\n        ? object.fulfillmentProductIds.map((e: any) => globalThis.String(e))\n        : undefined,\n      options: globalThis.Array.isArray(object?.options)\n        ? object.options.map((e: any) => Attribute.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: Preferences): unknown {\n    const obj: any = {};\n    if (message.partialFulfillmentAllowed !== undefined) {\n      obj.partialFulfillmentAllowed = message.partialFulfillmentAllowed;\n    }\n    if (message.courierIds?.length) {\n      obj.courierIds = message.courierIds;\n    }\n    if (message.fulfillmentProductIds?.length) {\n      obj.fulfillmentProductIds = message.fulfillmentProductIds;\n    }\n    if (message.options?.length) {\n      obj.options = message.options.map((e) => Attribute.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Preferences>): Preferences {\n    return Preferences.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Preferences>): Preferences {\n    const message = createBasePreferences();\n    message.partialFulfillmentAllowed = object.partialFulfillmentAllowed ?? undefined;\n    message.courierIds = object.courierIds?.map((e) => e) || undefined;\n    message.fulfillmentProductIds = object.fulfillmentProductIds?.map((e) => e) || undefined;\n    message.options = object.options?.map((e) => Attribute.fromPartial(e)) || undefined;\n    return message;\n  },\n};\n\nfunction createBaseFulfillmentSolutionQuery(): FulfillmentSolutionQuery {\n  return {};\n}\n\nexport const FulfillmentSolutionQuery: MessageFns<FulfillmentSolutionQuery> = {\n  encode(message: FulfillmentSolutionQuery, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.customerId !== undefined) {\n      writer.uint32(10).string(message.customerId);\n    }\n    if (message.shopId !== undefined) {\n      writer.uint32(18).string(message.shopId);\n    }\n    if (message.sender !== undefined) {\n      ShippingAddress.encode(message.sender, writer.uint32(26).fork()).join();\n    }\n    if (message.recipient !== undefined) {\n      ShippingAddress.encode(message.recipient, writer.uint32(34).fork()).join();\n    }\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        Item.encode(v!, writer.uint32(42).fork()).join();\n      }\n    }\n    if (message.preferences !== undefined) {\n      Preferences.encode(message.preferences, writer.uint32(50).fork()).join();\n    }\n    if (message.reference !== undefined) {\n      Reference.encode(message.reference, writer.uint32(58).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FulfillmentSolutionQuery {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFulfillmentSolutionQuery();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.customerId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.shopId = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.sender = ShippingAddress.decode(reader, reader.uint32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.recipient = ShippingAddress.decode(reader, reader.uint32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = Item.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.preferences = Preferences.decode(reader, reader.uint32());\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.reference = Reference.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FulfillmentSolutionQuery {\n    return {\n      customerId: isSet(object.customerId) ? globalThis.String(object.customerId) : undefined,\n      shopId: isSet(object.shopId) ? globalThis.String(object.shopId) : undefined,\n      sender: isSet(object.sender) ? ShippingAddress.fromJSON(object.sender) : undefined,\n      recipient: isSet(object.recipient) ? ShippingAddress.fromJSON(object.recipient) : undefined,\n      items: globalThis.Array.isArray(object?.items) ? object.items.map((e: any) => Item.fromJSON(e)) : undefined,\n      preferences: isSet(object.preferences) ? Preferences.fromJSON(object.preferences) : undefined,\n      reference: isSet(object.reference) ? Reference.fromJSON(object.reference) : undefined,\n    };\n  },\n\n  toJSON(message: FulfillmentSolutionQuery): unknown {\n    const obj: any = {};\n    if (message.customerId !== undefined) {\n      obj.customerId = message.customerId;\n    }\n    if (message.shopId !== undefined) {\n      obj.shopId = message.shopId;\n    }\n    if (message.sender !== undefined) {\n      obj.sender = ShippingAddress.toJSON(message.sender);\n    }\n    if (message.recipient !== undefined) {\n      obj.recipient = ShippingAddress.toJSON(message.recipient);\n    }\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => Item.toJSON(e));\n    }\n    if (message.preferences !== undefined) {\n      obj.preferences = Preferences.toJSON(message.preferences);\n    }\n    if (message.reference !== undefined) {\n      obj.reference = Reference.toJSON(message.reference);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FulfillmentSolutionQuery>): FulfillmentSolutionQuery {\n    return FulfillmentSolutionQuery.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FulfillmentSolutionQuery>): FulfillmentSolutionQuery {\n    const message = createBaseFulfillmentSolutionQuery();\n    message.customerId = object.customerId ?? undefined;\n    message.shopId = object.shopId ?? undefined;\n    message.sender = (object.sender !== undefined && object.sender !== null)\n      ? ShippingAddress.fromPartial(object.sender)\n      : undefined;\n    message.recipient = (object.recipient !== undefined && object.recipient !== null)\n      ? ShippingAddress.fromPartial(object.recipient)\n      : undefined;\n    message.items = object.items?.map((e) => Item.fromPartial(e)) || undefined;\n    message.preferences = (object.preferences !== undefined && object.preferences !== null)\n      ? Preferences.fromPartial(object.preferences)\n      : undefined;\n    message.reference = (object.reference !== undefined && object.reference !== null)\n      ? Reference.fromPartial(object.reference)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseFulfillmentSolutionQueryList(): FulfillmentSolutionQueryList {\n  return {};\n}\n\nexport const FulfillmentSolutionQueryList: MessageFns<FulfillmentSolutionQueryList> = {\n  encode(message: FulfillmentSolutionQueryList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        FulfillmentSolutionQuery.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FulfillmentSolutionQueryList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFulfillmentSolutionQueryList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = FulfillmentSolutionQuery.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FulfillmentSolutionQueryList {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => FulfillmentSolutionQuery.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: FulfillmentSolutionQueryList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => FulfillmentSolutionQuery.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FulfillmentSolutionQueryList>): FulfillmentSolutionQueryList {\n    return FulfillmentSolutionQueryList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FulfillmentSolutionQueryList>): FulfillmentSolutionQueryList {\n    const message = createBaseFulfillmentSolutionQueryList();\n    message.items = object.items?.map((e) => FulfillmentSolutionQuery.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseFulfillmentProduct(): FulfillmentProduct {\n  return {};\n}\n\nexport const FulfillmentProduct: MessageFns<FulfillmentProduct> = {\n  encode(message: FulfillmentProduct, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.name !== undefined) {\n      writer.uint32(18).string(message.name);\n    }\n    if (message.description !== undefined) {\n      writer.uint32(26).string(message.description);\n    }\n    if (message.courierId !== undefined) {\n      writer.uint32(34).string(message.courierId);\n    }\n    if (message.startZones !== undefined && message.startZones.length !== 0) {\n      for (const v of message.startZones) {\n        writer.uint32(50).string(v!);\n      }\n    }\n    if (message.destinationZones !== undefined && message.destinationZones.length !== 0) {\n      for (const v of message.destinationZones) {\n        writer.uint32(58).string(v!);\n      }\n    }\n    if (message.taxIds !== undefined && message.taxIds.length !== 0) {\n      for (const v of message.taxIds) {\n        writer.uint32(66).string(v!);\n      }\n    }\n    if (message.attributes !== undefined && message.attributes.length !== 0) {\n      for (const v of message.attributes) {\n        Attribute.encode(v!, writer.uint32(74).fork()).join();\n      }\n    }\n    if (message.variants !== undefined && message.variants.length !== 0) {\n      for (const v of message.variants) {\n        Variant.encode(v!, writer.uint32(82).fork()).join();\n      }\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(90).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FulfillmentProduct {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFulfillmentProduct();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.courierId = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          if (message.startZones === undefined) {\n            message.startZones = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.startZones!.push(el);\n          }\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          if (message.destinationZones === undefined) {\n            message.destinationZones = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.destinationZones!.push(el);\n          }\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          if (message.taxIds === undefined) {\n            message.taxIds = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.taxIds!.push(el);\n          }\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          if (message.attributes === undefined) {\n            message.attributes = [];\n          }\n          const el = Attribute.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.attributes!.push(el);\n          }\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          if (message.variants === undefined) {\n            message.variants = [];\n          }\n          const el = Variant.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.variants!.push(el);\n          }\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FulfillmentProduct {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      description: isSet(object.description) ? globalThis.String(object.description) : undefined,\n      courierId: isSet(object.courierId) ? globalThis.String(object.courierId) : undefined,\n      startZones: globalThis.Array.isArray(object?.startZones)\n        ? object.startZones.map((e: any) => globalThis.String(e))\n        : undefined,\n      destinationZones: globalThis.Array.isArray(object?.destinationZones)\n        ? object.destinationZones.map((e: any) => globalThis.String(e))\n        : undefined,\n      taxIds: globalThis.Array.isArray(object?.taxIds)\n        ? object.taxIds.map((e: any) => globalThis.String(e))\n        : undefined,\n      attributes: globalThis.Array.isArray(object?.attributes)\n        ? object.attributes.map((e: any) => Attribute.fromJSON(e))\n        : undefined,\n      variants: globalThis.Array.isArray(object?.variants)\n        ? object.variants.map((e: any) => Variant.fromJSON(e))\n        : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n    };\n  },\n\n  toJSON(message: FulfillmentProduct): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.description !== undefined) {\n      obj.description = message.description;\n    }\n    if (message.courierId !== undefined) {\n      obj.courierId = message.courierId;\n    }\n    if (message.startZones?.length) {\n      obj.startZones = message.startZones;\n    }\n    if (message.destinationZones?.length) {\n      obj.destinationZones = message.destinationZones;\n    }\n    if (message.taxIds?.length) {\n      obj.taxIds = message.taxIds;\n    }\n    if (message.attributes?.length) {\n      obj.attributes = message.attributes.map((e) => Attribute.toJSON(e));\n    }\n    if (message.variants?.length) {\n      obj.variants = message.variants.map((e) => Variant.toJSON(e));\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FulfillmentProduct>): FulfillmentProduct {\n    return FulfillmentProduct.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FulfillmentProduct>): FulfillmentProduct {\n    const message = createBaseFulfillmentProduct();\n    message.id = object.id ?? undefined;\n    message.name = object.name ?? undefined;\n    message.description = object.description ?? undefined;\n    message.courierId = object.courierId ?? undefined;\n    message.startZones = object.startZones?.map((e) => e) || undefined;\n    message.destinationZones = object.destinationZones?.map((e) => e) || undefined;\n    message.taxIds = object.taxIds?.map((e) => e) || undefined;\n    message.attributes = object.attributes?.map((e) => Attribute.fromPartial(e)) || undefined;\n    message.variants = object.variants?.map((e) => Variant.fromPartial(e)) || undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    return message;\n  },\n};\n\nfunction createBaseVariant(): Variant {\n  return {};\n}\n\nexport const Variant: MessageFns<Variant> = {\n  encode(message: Variant, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.name !== undefined) {\n      writer.uint32(18).string(message.name);\n    }\n    if (message.description !== undefined) {\n      writer.uint32(26).string(message.description);\n    }\n    if (message.price !== undefined) {\n      Price.encode(message.price, writer.uint32(34).fork()).join();\n    }\n    if (message.maxSize !== undefined) {\n      BoundingBox3D.encode(message.maxSize, writer.uint32(50).fork()).join();\n    }\n    if (message.maxWeight !== undefined) {\n      writer.uint32(57).double(message.maxWeight);\n    }\n    if (message.attributes !== undefined && message.attributes.length !== 0) {\n      for (const v of message.attributes) {\n        Attribute.encode(v!, writer.uint32(66).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Variant {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseVariant();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.price = Price.decode(reader, reader.uint32());\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.maxSize = BoundingBox3D.decode(reader, reader.uint32());\n          continue;\n        }\n        case 7: {\n          if (tag !== 57) {\n            break;\n          }\n\n          message.maxWeight = reader.double();\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          if (message.attributes === undefined) {\n            message.attributes = [];\n          }\n          const el = Attribute.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.attributes!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Variant {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      description: isSet(object.description) ? globalThis.String(object.description) : undefined,\n      price: isSet(object.price) ? Price.fromJSON(object.price) : undefined,\n      maxSize: isSet(object.maxSize) ? BoundingBox3D.fromJSON(object.maxSize) : undefined,\n      maxWeight: isSet(object.maxWeight) ? globalThis.Number(object.maxWeight) : undefined,\n      attributes: globalThis.Array.isArray(object?.attributes)\n        ? object.attributes.map((e: any) => Attribute.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: Variant): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.description !== undefined) {\n      obj.description = message.description;\n    }\n    if (message.price !== undefined) {\n      obj.price = Price.toJSON(message.price);\n    }\n    if (message.maxSize !== undefined) {\n      obj.maxSize = BoundingBox3D.toJSON(message.maxSize);\n    }\n    if (message.maxWeight !== undefined) {\n      obj.maxWeight = message.maxWeight;\n    }\n    if (message.attributes?.length) {\n      obj.attributes = message.attributes.map((e) => Attribute.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Variant>): Variant {\n    return Variant.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Variant>): Variant {\n    const message = createBaseVariant();\n    message.id = object.id ?? undefined;\n    message.name = object.name ?? undefined;\n    message.description = object.description ?? undefined;\n    message.price = (object.price !== undefined && object.price !== null) ? Price.fromPartial(object.price) : undefined;\n    message.maxSize = (object.maxSize !== undefined && object.maxSize !== null)\n      ? BoundingBox3D.fromPartial(object.maxSize)\n      : undefined;\n    message.maxWeight = object.maxWeight ?? undefined;\n    message.attributes = object.attributes?.map((e) => Attribute.fromPartial(e)) || undefined;\n    return message;\n  },\n};\n\nfunction createBaseFulfillmentProductList(): FulfillmentProductList {\n  return {};\n}\n\nexport const FulfillmentProductList: MessageFns<FulfillmentProductList> = {\n  encode(message: FulfillmentProductList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        FulfillmentProduct.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FulfillmentProductList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFulfillmentProductList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = FulfillmentProduct.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FulfillmentProductList {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => FulfillmentProduct.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: FulfillmentProductList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => FulfillmentProduct.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FulfillmentProductList>): FulfillmentProductList {\n    return FulfillmentProductList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FulfillmentProductList>): FulfillmentProductList {\n    const message = createBaseFulfillmentProductList();\n    message.items = object.items?.map((e) => FulfillmentProduct.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseFulfillmentProductResponse(): FulfillmentProductResponse {\n  return {};\n}\n\nexport const FulfillmentProductResponse: MessageFns<FulfillmentProductResponse> = {\n  encode(message: FulfillmentProductResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      FulfillmentProduct.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FulfillmentProductResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFulfillmentProductResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = FulfillmentProduct.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FulfillmentProductResponse {\n    return {\n      payload: isSet(object.payload) ? FulfillmentProduct.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: FulfillmentProductResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = FulfillmentProduct.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FulfillmentProductResponse>): FulfillmentProductResponse {\n    return FulfillmentProductResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FulfillmentProductResponse>): FulfillmentProductResponse {\n    const message = createBaseFulfillmentProductResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? FulfillmentProduct.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseFulfillmentProductListResponse(): FulfillmentProductListResponse {\n  return {};\n}\n\nexport const FulfillmentProductListResponse: MessageFns<FulfillmentProductListResponse> = {\n  encode(message: FulfillmentProductListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        FulfillmentProductResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FulfillmentProductListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFulfillmentProductListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = FulfillmentProductResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FulfillmentProductListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => FulfillmentProductResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: FulfillmentProductListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => FulfillmentProductResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FulfillmentProductListResponse>): FulfillmentProductListResponse {\n    return FulfillmentProductListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FulfillmentProductListResponse>): FulfillmentProductListResponse {\n    const message = createBaseFulfillmentProductListResponse();\n    message.items = object.items?.map((e) => FulfillmentProductResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseFulfillmentSolution(): FulfillmentSolution {\n  return {};\n}\n\nexport const FulfillmentSolution: MessageFns<FulfillmentSolution> = {\n  encode(message: FulfillmentSolution, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.courierIds !== undefined && message.courierIds.length !== 0) {\n      for (const v of message.courierIds) {\n        writer.uint32(10).string(v!);\n      }\n    }\n    if (message.parcels !== undefined && message.parcels.length !== 0) {\n      for (const v of message.parcels) {\n        Parcel.encode(v!, writer.uint32(18).fork()).join();\n      }\n    }\n    if (message.amounts !== undefined && message.amounts.length !== 0) {\n      for (const v of message.amounts) {\n        Amount.encode(v!, writer.uint32(26).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FulfillmentSolution {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFulfillmentSolution();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.courierIds === undefined) {\n            message.courierIds = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.courierIds!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          if (message.parcels === undefined) {\n            message.parcels = [];\n          }\n          const el = Parcel.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.parcels!.push(el);\n          }\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          if (message.amounts === undefined) {\n            message.amounts = [];\n          }\n          const el = Amount.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.amounts!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FulfillmentSolution {\n    return {\n      courierIds: globalThis.Array.isArray(object?.courierIds)\n        ? object.courierIds.map((e: any) => globalThis.String(e))\n        : undefined,\n      parcels: globalThis.Array.isArray(object?.parcels)\n        ? object.parcels.map((e: any) => Parcel.fromJSON(e))\n        : undefined,\n      amounts: globalThis.Array.isArray(object?.amounts)\n        ? object.amounts.map((e: any) => Amount.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: FulfillmentSolution): unknown {\n    const obj: any = {};\n    if (message.courierIds?.length) {\n      obj.courierIds = message.courierIds;\n    }\n    if (message.parcels?.length) {\n      obj.parcels = message.parcels.map((e) => Parcel.toJSON(e));\n    }\n    if (message.amounts?.length) {\n      obj.amounts = message.amounts.map((e) => Amount.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FulfillmentSolution>): FulfillmentSolution {\n    return FulfillmentSolution.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FulfillmentSolution>): FulfillmentSolution {\n    const message = createBaseFulfillmentSolution();\n    message.courierIds = object.courierIds?.map((e) => e) || undefined;\n    message.parcels = object.parcels?.map((e) => Parcel.fromPartial(e)) || undefined;\n    message.amounts = object.amounts?.map((e) => Amount.fromPartial(e)) || undefined;\n    return message;\n  },\n};\n\nfunction createBaseFulfillmentSolutionResponse(): FulfillmentSolutionResponse {\n  return {};\n}\n\nexport const FulfillmentSolutionResponse: MessageFns<FulfillmentSolutionResponse> = {\n  encode(message: FulfillmentSolutionResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.reference !== undefined) {\n      Reference.encode(message.reference, writer.uint32(10).fork()).join();\n    }\n    if (message.solutions !== undefined && message.solutions.length !== 0) {\n      for (const v of message.solutions) {\n        FulfillmentSolution.encode(v!, writer.uint32(18).fork()).join();\n      }\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FulfillmentSolutionResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFulfillmentSolutionResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.reference = Reference.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          if (message.solutions === undefined) {\n            message.solutions = [];\n          }\n          const el = FulfillmentSolution.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.solutions!.push(el);\n          }\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FulfillmentSolutionResponse {\n    return {\n      reference: isSet(object.reference) ? Reference.fromJSON(object.reference) : undefined,\n      solutions: globalThis.Array.isArray(object?.solutions)\n        ? object.solutions.map((e: any) => FulfillmentSolution.fromJSON(e))\n        : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: FulfillmentSolutionResponse): unknown {\n    const obj: any = {};\n    if (message.reference !== undefined) {\n      obj.reference = Reference.toJSON(message.reference);\n    }\n    if (message.solutions?.length) {\n      obj.solutions = message.solutions.map((e) => FulfillmentSolution.toJSON(e));\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FulfillmentSolutionResponse>): FulfillmentSolutionResponse {\n    return FulfillmentSolutionResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FulfillmentSolutionResponse>): FulfillmentSolutionResponse {\n    const message = createBaseFulfillmentSolutionResponse();\n    message.reference = (object.reference !== undefined && object.reference !== null)\n      ? Reference.fromPartial(object.reference)\n      : undefined;\n    message.solutions = object.solutions?.map((e) => FulfillmentSolution.fromPartial(e)) || undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseFulfillmentSolutionListResponse(): FulfillmentSolutionListResponse {\n  return {};\n}\n\nexport const FulfillmentSolutionListResponse: MessageFns<FulfillmentSolutionListResponse> = {\n  encode(message: FulfillmentSolutionListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        FulfillmentSolutionResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FulfillmentSolutionListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFulfillmentSolutionListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = FulfillmentSolutionResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FulfillmentSolutionListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => FulfillmentSolutionResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: FulfillmentSolutionListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => FulfillmentSolutionResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FulfillmentSolutionListResponse>): FulfillmentSolutionListResponse {\n    return FulfillmentSolutionListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FulfillmentSolutionListResponse>): FulfillmentSolutionListResponse {\n    const message = createBaseFulfillmentSolutionListResponse();\n    message.items = object.items?.map((e) => FulfillmentSolutionResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nexport type FulfillmentProductServiceDefinition = typeof FulfillmentProductServiceDefinition;\nexport const FulfillmentProductServiceDefinition = {\n  name: \"FulfillmentProductService\",\n  fullName: \"io.restorecommerce.fulfillment_product.FulfillmentProductService\",\n  methods: {\n    read: {\n      name: \"Read\",\n      requestType: ReadRequest,\n      requestStream: false,\n      responseType: FulfillmentProductListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    find: {\n      name: \"Find\",\n      requestType: FulfillmentSolutionQueryList,\n      requestStream: false,\n      responseType: FulfillmentSolutionListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    create: {\n      name: \"Create\",\n      requestType: FulfillmentProductList,\n      requestStream: false,\n      responseType: FulfillmentProductListResponse,\n      responseStream: false,\n      options: {},\n    },\n    update: {\n      name: \"Update\",\n      requestType: FulfillmentProductList,\n      requestStream: false,\n      responseType: FulfillmentProductListResponse,\n      responseStream: false,\n      options: {},\n    },\n    upsert: {\n      name: \"Upsert\",\n      requestType: FulfillmentProductList,\n      requestStream: false,\n      responseType: FulfillmentProductListResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface FulfillmentProductServiceImplementation<CallContextExt = {}> {\n  read(\n    request: ReadRequest,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<FulfillmentProductListResponse>>;\n  find(\n    request: FulfillmentSolutionQueryList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<FulfillmentSolutionListResponse>>;\n  create(\n    request: FulfillmentProductList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<FulfillmentProductListResponse>>;\n  update(\n    request: FulfillmentProductList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<FulfillmentProductListResponse>>;\n  upsert(\n    request: FulfillmentProductList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<FulfillmentProductListResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n}\n\nexport interface FulfillmentProductServiceClient<CallOptionsExt = {}> {\n  read(\n    request: DeepPartial<ReadRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<FulfillmentProductListResponse>;\n  find(\n    request: DeepPartial<FulfillmentSolutionQueryList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<FulfillmentSolutionListResponse>;\n  create(\n    request: DeepPartial<FulfillmentProductList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<FulfillmentProductListResponse>;\n  update(\n    request: DeepPartial<FulfillmentProductList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<FulfillmentProductListResponse>;\n  upsert(\n    request: DeepPartial<FulfillmentProductList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<FulfillmentProductListResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/fulfillment_product.proto\",\n    \"package\": \"io.restorecommerce.fulfillment_product\",\n    \"dependency\": [\n      \"io/restorecommerce/reference.proto\",\n      \"io/restorecommerce/resource_base.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/attribute.proto\",\n      \"io/restorecommerce/address.proto\",\n      \"io/restorecommerce/amount.proto\",\n      \"io/restorecommerce/price.proto\",\n      \"io/restorecommerce/geometry.proto\",\n      \"io/restorecommerce/fulfillment_courier.proto\",\n      \"io/restorecommerce/fulfillment.proto\",\n      \"io/restorecommerce/options.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Preferences\",\n      \"field\": [{\n        \"name\": \"partial_fulfillment_allowed\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"partialFulfillmentAllowed\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"courier_ids\",\n        \"number\": 2,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"courierIds\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"fulfillment_product_ids\",\n        \"number\": 3,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"fulfillmentProductIds\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"options\",\n        \"number\": 4,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.attribute.Attribute\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"options\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_partial_fulfillment_allowed\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"FulfillmentSolutionQuery\",\n      \"field\": [{\n        \"name\": \"customer_id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"customerId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"shop_id\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"shopId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"sender\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.address.ShippingAddress\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"sender\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"recipient\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.address.ShippingAddress\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"recipient\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"items\",\n        \"number\": 5,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.fulfillment.Item\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"preferences\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.fulfillment_product.Preferences\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"preferences\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"reference\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.reference.Reference\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"reference\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_customer_id\", \"options\": undefined },\n        { \"name\": \"_shop_id\", \"options\": undefined },\n        { \"name\": \"_sender\", \"options\": undefined },\n        { \"name\": \"_recipient\", \"options\": undefined },\n        { \"name\": \"_preferences\", \"options\": undefined },\n        { \"name\": \"_reference\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"FulfillmentSolutionQueryList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.fulfillment_product.FulfillmentSolutionQuery\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"FulfillmentProduct\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"name\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"description\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"description\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"courier_id\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"courierId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"start_zones\",\n        \"number\": 6,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"startZones\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"destination_zones\",\n        \"number\": 7,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"destinationZones\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"tax_ids\",\n        \"number\": 8,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"taxIds\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"attributes\",\n        \"number\": 9,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.attribute.Attribute\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"attributes\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"variants\",\n        \"number\": 10,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.fulfillment_product.Variant\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"variants\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 11,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_name\", \"options\": undefined },\n        { \"name\": \"_description\", \"options\": undefined },\n        { \"name\": \"_courier_id\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n      ],\n      \"options\": {\n        \"messageSetWireFormat\": false,\n        \"noStandardDescriptorAccessor\": false,\n        \"deprecated\": false,\n        \"mapEntry\": false,\n        \"uninterpretedOption\": [],\n      },\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Variant\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"name\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"description\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"description\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"price\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.price.Price\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"price\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"max_size\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.geometry.BoundingBox3D\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"maxSize\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"max_weight\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 1,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"maxWeight\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"attributes\",\n        \"number\": 8,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.attribute.Attribute\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"attributes\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_name\", \"options\": undefined },\n        { \"name\": \"_description\", \"options\": undefined },\n        { \"name\": \"_price\", \"options\": undefined },\n        { \"name\": \"_max_size\", \"options\": undefined },\n        { \"name\": \"_max_weight\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"FulfillmentProductList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.fulfillment_product.FulfillmentProduct\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"FulfillmentProductResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.fulfillment_product.FulfillmentProduct\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"FulfillmentProductListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.fulfillment_product.FulfillmentProductResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"FulfillmentSolution\",\n      \"field\": [{\n        \"name\": \"courier_ids\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"courierIds\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"parcels\",\n        \"number\": 2,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.fulfillment.Parcel\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"parcels\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"amounts\",\n        \"number\": 3,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.amount.Amount\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"amounts\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"FulfillmentSolutionResponse\",\n      \"field\": [{\n        \"name\": \"reference\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.reference.Reference\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"reference\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"solutions\",\n        \"number\": 2,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.fulfillment_product.FulfillmentSolution\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"solutions\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_reference\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"FulfillmentSolutionListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.fulfillment_product.FulfillmentSolutionResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [{\n      \"name\": \"FulfillmentProductService\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ReadRequest\",\n        \"outputType\": \".io.restorecommerce.fulfillment_product.FulfillmentProductListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Find\",\n        \"inputType\": \".io.restorecommerce.fulfillment_product.FulfillmentSolutionQueryList\",\n        \"outputType\": \".io.restorecommerce.fulfillment_product.FulfillmentSolutionListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.fulfillment_product.FulfillmentProductList\",\n        \"outputType\": \".io.restorecommerce.fulfillment_product.FulfillmentProductListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.fulfillment_product.FulfillmentProductList\",\n        \"outputType\": \".io.restorecommerce.fulfillment_product.FulfillmentProductListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.fulfillment_product.FulfillmentProductList\",\n        \"outputType\": \".io.restorecommerce.fulfillment_product.FulfillmentProductListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [4, 0, 2, 1],\n        \"span\": [37, 2, 34],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Narrows search to certain couriers, leave empty for open search\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 0, 2, 2],\n        \"span\": [38, 2, 46],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Narrows search to certain tariffs, leave empty for open search\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 0, 2, 3],\n        \"span\": [39, 2, 62],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Courier specific options such as CO2 neutral delivery etc.\\n\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.fulfillment_product.Preferences\": Preferences,\n    \".io.restorecommerce.fulfillment_product.FulfillmentSolutionQuery\": FulfillmentSolutionQuery,\n    \".io.restorecommerce.fulfillment_product.FulfillmentSolutionQueryList\": FulfillmentSolutionQueryList,\n    \".io.restorecommerce.fulfillment_product.FulfillmentProduct\": FulfillmentProduct,\n    \".io.restorecommerce.fulfillment_product.Variant\": Variant,\n    \".io.restorecommerce.fulfillment_product.FulfillmentProductList\": FulfillmentProductList,\n    \".io.restorecommerce.fulfillment_product.FulfillmentProductResponse\": FulfillmentProductResponse,\n    \".io.restorecommerce.fulfillment_product.FulfillmentProductListResponse\": FulfillmentProductListResponse,\n    \".io.restorecommerce.fulfillment_product.FulfillmentSolution\": FulfillmentSolution,\n    \".io.restorecommerce.fulfillment_product.FulfillmentSolutionResponse\": FulfillmentSolutionResponse,\n    \".io.restorecommerce.fulfillment_product.FulfillmentSolutionListResponse\": FulfillmentSolutionListResponse,\n  },\n  dependencies: [\n    protoMetadata1,\n    protoMetadata2,\n    protoMetadata3,\n    protoMetadata4,\n    protoMetadata5,\n    protoMetadata6,\n    protoMetadata7,\n    protoMetadata8,\n    protoMetadata9,\n    protoMetadata10,\n    protoMetadata11,\n    protoMetadata12,\n    protoMetadata13,\n  ],\n  options: {\n    messages: {\n      \"FulfillmentSolutionQuery\": {\n        fields: {\n          \"customer_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CiUuaW8ucmVzdG9yZWNvbW1lcmNlLmN1c3RvbWVyLkN1c3RvbWVyEgttYXN0ZXJfZGF0YRoIY3VzdG9tZXIiBFJlYWQqCGN1c3RvbWVy\",\n                \"base64\",\n              ),\n            ),\n          },\n          \"shop_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"Ch0uaW8ucmVzdG9yZWNvbW1lcmNlLnNob3AuU2hvcBILbWFzdGVyX2RhdGEaBHNob3AiBFJlYWQqBHNob3A=\",\n                \"base64\",\n              ),\n            ),\n          },\n        },\n      },\n      \"FulfillmentProduct\": {\n        options: {\n          \"kafka_subscriber\": KafkaSubscription.decode(\n            Buffer.from(\n              \"ChRmdWxmaWxsbWVudF9wcm9kdWN0cxIvaW8ucmVzdG9yZWNvbW1lcmNlLmZ1bGZpbGxtZW50X3Byb2R1Y3QucmVzb3VyY2UaGWZ1bGZpbGxtZW50UHJvZHVjdENyZWF0ZWQiGWZ1bGZpbGxtZW50UHJvZHVjdFVwZGF0ZWQqGWZ1bGZpbGxtZW50UHJvZHVjdERlbGV0ZWQ=\",\n              \"base64\",\n            ),\n          ),\n        },\n        fields: {\n          \"courier_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CjouaW8ucmVzdG9yZWNvbW1lcmNlLmZ1bGZpbGxtZW50X2NvdXJpZXIuRnVsZmlsbG1lbnRDb3VyaWVyEgtmdWxmaWxsbWVudBoTZnVsZmlsbG1lbnRfY291cmllciIEUmVhZCoHY291cmllcg==\",\n                \"base64\",\n              ),\n            ),\n          },\n        },\n      },\n    },\n    services: {\n      \"FulfillmentProductService\": { methods: { \"Read\": { \"is_query\": true }, \"Find\": { \"is_query\": true } } },\n    },\n  },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/order.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { Any, protoMetadata as protoMetadata1 } from \"../../google/protobuf/any\";\nimport { protoMetadata as protoMetadata2, Timestamp } from \"../../google/protobuf/timestamp\";\nimport { BillingAddress, protoMetadata as protoMetadata8, ShippingAddress } from \"./address\";\nimport { Amount, protoMetadata as protoMetadata9 } from \"./amount\";\nimport { Attribute, protoMetadata as protoMetadata10 } from \"./attribute\";\nimport { protoMetadata as protoMetadata5, Subject } from \"./auth\";\nimport { protoMetadata as protoMetadata12 } from \"./country\";\nimport {\n  CustomerType,\n  customerTypeFromJSON,\n  customerTypeToJSON,\n  customerTypeToNumber,\n  protoMetadata as protoMetadata17,\n} from \"./customer\";\nimport {\n  FulfillmentInvoiceSection,\n  FulfillmentListResponse,\n  FulfillmentResponse,\n  protoMetadata as protoMetadata13,\n} from \"./fulfillment\";\nimport { FulfillmentSolutionListResponse, Preferences, protoMetadata as protoMetadata14 } from \"./fulfillment_product\";\nimport { InvoiceListResponse, InvoiceResponse, protoMetadata as protoMetadata15 } from \"./invoice\";\nimport { Meta, protoMetadata as protoMetadata4 } from \"./meta\";\nimport { KafkaSubscription, protoMetadata as protoMetadata7, Resolver } from \"./options\";\nimport { Price, protoMetadata as protoMetadata11 } from \"./price\";\nimport { protoMetadata as protoMetadata19 } from \"./product\";\nimport { DeleteRequest, DeleteResponse, protoMetadata as protoMetadata3, ReadRequest } from \"./resource_base\";\nimport { protoMetadata as protoMetadata18 } from \"./shop\";\nimport { OperationStatus, protoMetadata as protoMetadata6, Status, StatusListResponse } from \"./status\";\nimport { protoMetadata as protoMetadata16 } from \"./user\";\n\nexport const protobufPackage = \"io.restorecommerce.order\";\n\nexport enum OrderState {\n  PENDING = \"PENDING\",\n  SUBMITTED = \"SUBMITTED\",\n  COMPLETED = \"COMPLETED\",\n  CANCELLED = \"CANCELLED\",\n  WITHDRAWN = \"WITHDRAWN\",\n  INVALID = \"INVALID\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function orderStateFromJSON(object: any): OrderState {\n  switch (object) {\n    case 0:\n    case \"PENDING\":\n      return OrderState.PENDING;\n    case 1:\n    case \"SUBMITTED\":\n      return OrderState.SUBMITTED;\n    case 2:\n    case \"COMPLETED\":\n      return OrderState.COMPLETED;\n    case 3:\n    case \"CANCELLED\":\n      return OrderState.CANCELLED;\n    case 4:\n    case \"WITHDRAWN\":\n      return OrderState.WITHDRAWN;\n    case 5:\n    case \"INVALID\":\n      return OrderState.INVALID;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return OrderState.UNRECOGNIZED;\n  }\n}\n\nexport function orderStateToJSON(object: OrderState): string {\n  switch (object) {\n    case OrderState.PENDING:\n      return \"PENDING\";\n    case OrderState.SUBMITTED:\n      return \"SUBMITTED\";\n    case OrderState.COMPLETED:\n      return \"COMPLETED\";\n    case OrderState.CANCELLED:\n      return \"CANCELLED\";\n    case OrderState.WITHDRAWN:\n      return \"WITHDRAWN\";\n    case OrderState.INVALID:\n      return \"INVALID\";\n    case OrderState.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function orderStateToNumber(object: OrderState): number {\n  switch (object) {\n    case OrderState.PENDING:\n      return 0;\n    case OrderState.SUBMITTED:\n      return 1;\n    case OrderState.COMPLETED:\n      return 2;\n    case OrderState.CANCELLED:\n      return 3;\n    case OrderState.WITHDRAWN:\n      return 4;\n    case OrderState.INVALID:\n      return 5;\n    case OrderState.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\nexport enum FulfillmentInvoiceMode {\n  INCLUDE = \"INCLUDE\",\n  EXCLUDE = \"EXCLUDE\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function fulfillmentInvoiceModeFromJSON(object: any): FulfillmentInvoiceMode {\n  switch (object) {\n    case 0:\n    case \"INCLUDE\":\n      return FulfillmentInvoiceMode.INCLUDE;\n    case 1:\n    case \"EXCLUDE\":\n      return FulfillmentInvoiceMode.EXCLUDE;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return FulfillmentInvoiceMode.UNRECOGNIZED;\n  }\n}\n\nexport function fulfillmentInvoiceModeToJSON(object: FulfillmentInvoiceMode): string {\n  switch (object) {\n    case FulfillmentInvoiceMode.INCLUDE:\n      return \"INCLUDE\";\n    case FulfillmentInvoiceMode.EXCLUDE:\n      return \"EXCLUDE\";\n    case FulfillmentInvoiceMode.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function fulfillmentInvoiceModeToNumber(object: FulfillmentInvoiceMode): number {\n  switch (object) {\n    case FulfillmentInvoiceMode.INCLUDE:\n      return 0;\n    case FulfillmentInvoiceMode.EXCLUDE:\n      return 1;\n    case FulfillmentInvoiceMode.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\nexport interface Event {\n  id?: string | undefined;\n  code?: number | undefined;\n  message?: string | undefined;\n  timestamp?: Date | undefined;\n  state?: OrderState | undefined;\n  attibutes?: Attribute[] | undefined;\n}\n\nexport interface Item {\n  id?: string | undefined;\n  productId?: string | undefined;\n  variantId?: string | undefined;\n  parentItemId?: string | undefined;\n  quantity?:\n    | number\n    | undefined;\n  /** Set by service */\n  unitPrice?:\n    | Price\n    | undefined;\n  /** Set by service */\n  amount?: Amount | undefined;\n}\n\n/** Database Entity */\nexport interface Order {\n  id?: string | undefined;\n  meta?: Meta | undefined;\n  userId?: string | undefined;\n  customerId?: string | undefined;\n  shopId?: string | undefined;\n  items?:\n    | Item[]\n    | undefined;\n  /** Set by service */\n  orderState?:\n    | OrderState\n    | undefined;\n  /** Set by service --- repeated in case of variant currency? */\n  totalAmounts?: Amount[] | undefined;\n  shippingAddress?: ShippingAddress | undefined;\n  billingAddress?: BillingAddress | undefined;\n  notificationEmail?: string | undefined;\n  customerOrderNr?: string | undefined;\n  customerRemark?: string | undefined;\n  customerType?: CustomerType | undefined;\n  customerVatId?: string | undefined;\n  packagingPreferences?: Preferences | undefined;\n  paymentMethodId?: string | undefined;\n  history?: Event[] | undefined;\n}\n\nexport interface OrderIdList {\n  ids?: string[] | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface OrderList {\n  items?: Order[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface OrderSubmitListResponse {\n  orders?: OrderResponse[] | undefined;\n  fulfillments?: FulfillmentResponse[] | undefined;\n  invoices?: InvoiceResponse[] | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface OrderListResponse {\n  items?: OrderResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface OrderResponse {\n  payload?: Order | undefined;\n  status?: Status | undefined;\n}\n\nexport interface Deleted {\n  id?: string | undefined;\n}\n\nexport interface FulfillmentRequest {\n  orderId?: string | undefined;\n  exportType?: string | undefined;\n  exportDescription?: string | undefined;\n  invoiceNumber?: string | undefined;\n  senderAddress?:\n    | ShippingAddress\n    | undefined;\n  /** select all on empty */\n  selectedItems?: string[] | undefined;\n  data?: Any | undefined;\n}\n\nexport interface FulfillmentRequestList {\n  items?: FulfillmentRequest[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface OrderingInvoiceSection {\n  orderId?:\n    | string\n    | undefined;\n  /** select all on empty */\n  selectedItems?: string[] | undefined;\n  fulfillmentMode?:\n    | FulfillmentInvoiceMode\n    | undefined;\n  /** includes all on empty */\n  selectedFulfillments?: FulfillmentInvoiceSection[] | undefined;\n}\n\nexport interface OrderingInvoiceRequest {\n  /** if given */\n  invoiceNumber?: string | undefined;\n  paymentHints?: string[] | undefined;\n  sections?: OrderingInvoiceSection[] | undefined;\n}\n\nexport interface OrderingInvoiceRequestList {\n  items?: OrderingInvoiceRequest[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nfunction createBaseEvent(): Event {\n  return {};\n}\n\nexport const Event: MessageFns<Event> = {\n  encode(message: Event, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.code !== undefined) {\n      writer.uint32(16).uint32(message.code);\n    }\n    if (message.message !== undefined) {\n      writer.uint32(26).string(message.message);\n    }\n    if (message.timestamp !== undefined) {\n      Timestamp.encode(toTimestamp(message.timestamp), writer.uint32(34).fork()).join();\n    }\n    if (message.state !== undefined) {\n      writer.uint32(40).int32(orderStateToNumber(message.state));\n    }\n    if (message.attibutes !== undefined && message.attibutes.length !== 0) {\n      for (const v of message.attibutes) {\n        Attribute.encode(v!, writer.uint32(50).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Event {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseEvent();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.code = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.message = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.timestamp = fromTimestamp(Timestamp.decode(reader, reader.uint32()));\n          continue;\n        }\n        case 5: {\n          if (tag !== 40) {\n            break;\n          }\n\n          message.state = orderStateFromJSON(reader.int32());\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          if (message.attibutes === undefined) {\n            message.attibutes = [];\n          }\n          const el = Attribute.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.attibutes!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Event {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      code: isSet(object.code) ? globalThis.Number(object.code) : undefined,\n      message: isSet(object.message) ? globalThis.String(object.message) : undefined,\n      timestamp: isSet(object.timestamp) ? fromJsonTimestamp(object.timestamp) : undefined,\n      state: isSet(object.state) ? orderStateFromJSON(object.state) : undefined,\n      attibutes: globalThis.Array.isArray(object?.attibutes)\n        ? object.attibutes.map((e: any) => Attribute.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: Event): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.code !== undefined) {\n      obj.code = Math.round(message.code);\n    }\n    if (message.message !== undefined) {\n      obj.message = message.message;\n    }\n    if (message.timestamp !== undefined) {\n      obj.timestamp = message.timestamp.toISOString();\n    }\n    if (message.state !== undefined) {\n      obj.state = orderStateToJSON(message.state);\n    }\n    if (message.attibutes?.length) {\n      obj.attibutes = message.attibutes.map((e) => Attribute.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Event>): Event {\n    return Event.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Event>): Event {\n    const message = createBaseEvent();\n    message.id = object.id ?? undefined;\n    message.code = object.code ?? undefined;\n    message.message = object.message ?? undefined;\n    message.timestamp = object.timestamp ?? undefined;\n    message.state = object.state ?? undefined;\n    message.attibutes = object.attibutes?.map((e) => Attribute.fromPartial(e)) || undefined;\n    return message;\n  },\n};\n\nfunction createBaseItem(): Item {\n  return {};\n}\n\nexport const Item: MessageFns<Item> = {\n  encode(message: Item, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.productId !== undefined) {\n      writer.uint32(18).string(message.productId);\n    }\n    if (message.variantId !== undefined) {\n      writer.uint32(26).string(message.variantId);\n    }\n    if (message.parentItemId !== undefined) {\n      writer.uint32(34).string(message.parentItemId);\n    }\n    if (message.quantity !== undefined) {\n      writer.uint32(40).int32(message.quantity);\n    }\n    if (message.unitPrice !== undefined) {\n      Price.encode(message.unitPrice, writer.uint32(50).fork()).join();\n    }\n    if (message.amount !== undefined) {\n      Amount.encode(message.amount, writer.uint32(58).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Item {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseItem();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.productId = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.variantId = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.parentItemId = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 40) {\n            break;\n          }\n\n          message.quantity = reader.int32();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.unitPrice = Price.decode(reader, reader.uint32());\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.amount = Amount.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Item {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      productId: isSet(object.productId) ? globalThis.String(object.productId) : undefined,\n      variantId: isSet(object.variantId) ? globalThis.String(object.variantId) : undefined,\n      parentItemId: isSet(object.parentItemId) ? globalThis.String(object.parentItemId) : undefined,\n      quantity: isSet(object.quantity) ? globalThis.Number(object.quantity) : undefined,\n      unitPrice: isSet(object.unitPrice) ? Price.fromJSON(object.unitPrice) : undefined,\n      amount: isSet(object.amount) ? Amount.fromJSON(object.amount) : undefined,\n    };\n  },\n\n  toJSON(message: Item): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.productId !== undefined) {\n      obj.productId = message.productId;\n    }\n    if (message.variantId !== undefined) {\n      obj.variantId = message.variantId;\n    }\n    if (message.parentItemId !== undefined) {\n      obj.parentItemId = message.parentItemId;\n    }\n    if (message.quantity !== undefined) {\n      obj.quantity = Math.round(message.quantity);\n    }\n    if (message.unitPrice !== undefined) {\n      obj.unitPrice = Price.toJSON(message.unitPrice);\n    }\n    if (message.amount !== undefined) {\n      obj.amount = Amount.toJSON(message.amount);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Item>): Item {\n    return Item.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Item>): Item {\n    const message = createBaseItem();\n    message.id = object.id ?? undefined;\n    message.productId = object.productId ?? undefined;\n    message.variantId = object.variantId ?? undefined;\n    message.parentItemId = object.parentItemId ?? undefined;\n    message.quantity = object.quantity ?? undefined;\n    message.unitPrice = (object.unitPrice !== undefined && object.unitPrice !== null)\n      ? Price.fromPartial(object.unitPrice)\n      : undefined;\n    message.amount = (object.amount !== undefined && object.amount !== null)\n      ? Amount.fromPartial(object.amount)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseOrder(): Order {\n  return {};\n}\n\nexport const Order: MessageFns<Order> = {\n  encode(message: Order, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(18).fork()).join();\n    }\n    if (message.userId !== undefined) {\n      writer.uint32(26).string(message.userId);\n    }\n    if (message.customerId !== undefined) {\n      writer.uint32(34).string(message.customerId);\n    }\n    if (message.shopId !== undefined) {\n      writer.uint32(42).string(message.shopId);\n    }\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        Item.encode(v!, writer.uint32(50).fork()).join();\n      }\n    }\n    if (message.orderState !== undefined) {\n      writer.uint32(56).int32(orderStateToNumber(message.orderState));\n    }\n    if (message.totalAmounts !== undefined && message.totalAmounts.length !== 0) {\n      for (const v of message.totalAmounts) {\n        Amount.encode(v!, writer.uint32(66).fork()).join();\n      }\n    }\n    if (message.shippingAddress !== undefined) {\n      ShippingAddress.encode(message.shippingAddress, writer.uint32(74).fork()).join();\n    }\n    if (message.billingAddress !== undefined) {\n      BillingAddress.encode(message.billingAddress, writer.uint32(82).fork()).join();\n    }\n    if (message.notificationEmail !== undefined) {\n      writer.uint32(90).string(message.notificationEmail);\n    }\n    if (message.customerOrderNr !== undefined) {\n      writer.uint32(98).string(message.customerOrderNr);\n    }\n    if (message.customerRemark !== undefined) {\n      writer.uint32(106).string(message.customerRemark);\n    }\n    if (message.customerType !== undefined) {\n      writer.uint32(112).int32(customerTypeToNumber(message.customerType));\n    }\n    if (message.customerVatId !== undefined) {\n      writer.uint32(122).string(message.customerVatId);\n    }\n    if (message.packagingPreferences !== undefined) {\n      Preferences.encode(message.packagingPreferences, writer.uint32(130).fork()).join();\n    }\n    if (message.paymentMethodId !== undefined) {\n      writer.uint32(138).string(message.paymentMethodId);\n    }\n    if (message.history !== undefined && message.history.length !== 0) {\n      for (const v of message.history) {\n        Event.encode(v!, writer.uint32(146).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Order {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOrder();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.userId = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.customerId = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.shopId = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = Item.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 7: {\n          if (tag !== 56) {\n            break;\n          }\n\n          message.orderState = orderStateFromJSON(reader.int32());\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          if (message.totalAmounts === undefined) {\n            message.totalAmounts = [];\n          }\n          const el = Amount.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.totalAmounts!.push(el);\n          }\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.shippingAddress = ShippingAddress.decode(reader, reader.uint32());\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.billingAddress = BillingAddress.decode(reader, reader.uint32());\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          message.notificationEmail = reader.string();\n          continue;\n        }\n        case 12: {\n          if (tag !== 98) {\n            break;\n          }\n\n          message.customerOrderNr = reader.string();\n          continue;\n        }\n        case 13: {\n          if (tag !== 106) {\n            break;\n          }\n\n          message.customerRemark = reader.string();\n          continue;\n        }\n        case 14: {\n          if (tag !== 112) {\n            break;\n          }\n\n          message.customerType = customerTypeFromJSON(reader.int32());\n          continue;\n        }\n        case 15: {\n          if (tag !== 122) {\n            break;\n          }\n\n          message.customerVatId = reader.string();\n          continue;\n        }\n        case 16: {\n          if (tag !== 130) {\n            break;\n          }\n\n          message.packagingPreferences = Preferences.decode(reader, reader.uint32());\n          continue;\n        }\n        case 17: {\n          if (tag !== 138) {\n            break;\n          }\n\n          message.paymentMethodId = reader.string();\n          continue;\n        }\n        case 18: {\n          if (tag !== 146) {\n            break;\n          }\n\n          if (message.history === undefined) {\n            message.history = [];\n          }\n          const el = Event.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.history!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Order {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      userId: isSet(object.userId) ? globalThis.String(object.userId) : undefined,\n      customerId: isSet(object.customerId) ? globalThis.String(object.customerId) : undefined,\n      shopId: isSet(object.shopId) ? globalThis.String(object.shopId) : undefined,\n      items: globalThis.Array.isArray(object?.items) ? object.items.map((e: any) => Item.fromJSON(e)) : undefined,\n      orderState: isSet(object.orderState) ? orderStateFromJSON(object.orderState) : undefined,\n      totalAmounts: globalThis.Array.isArray(object?.totalAmounts)\n        ? object.totalAmounts.map((e: any) => Amount.fromJSON(e))\n        : undefined,\n      shippingAddress: isSet(object.shippingAddress) ? ShippingAddress.fromJSON(object.shippingAddress) : undefined,\n      billingAddress: isSet(object.billingAddress) ? BillingAddress.fromJSON(object.billingAddress) : undefined,\n      notificationEmail: isSet(object.notificationEmail) ? globalThis.String(object.notificationEmail) : undefined,\n      customerOrderNr: isSet(object.customerOrderNr) ? globalThis.String(object.customerOrderNr) : undefined,\n      customerRemark: isSet(object.customerRemark) ? globalThis.String(object.customerRemark) : undefined,\n      customerType: isSet(object.customerType) ? customerTypeFromJSON(object.customerType) : undefined,\n      customerVatId: isSet(object.customerVatId) ? globalThis.String(object.customerVatId) : undefined,\n      packagingPreferences: isSet(object.packagingPreferences)\n        ? Preferences.fromJSON(object.packagingPreferences)\n        : undefined,\n      paymentMethodId: isSet(object.paymentMethodId) ? globalThis.String(object.paymentMethodId) : undefined,\n      history: globalThis.Array.isArray(object?.history)\n        ? object.history.map((e: any) => Event.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: Order): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.userId !== undefined) {\n      obj.userId = message.userId;\n    }\n    if (message.customerId !== undefined) {\n      obj.customerId = message.customerId;\n    }\n    if (message.shopId !== undefined) {\n      obj.shopId = message.shopId;\n    }\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => Item.toJSON(e));\n    }\n    if (message.orderState !== undefined) {\n      obj.orderState = orderStateToJSON(message.orderState);\n    }\n    if (message.totalAmounts?.length) {\n      obj.totalAmounts = message.totalAmounts.map((e) => Amount.toJSON(e));\n    }\n    if (message.shippingAddress !== undefined) {\n      obj.shippingAddress = ShippingAddress.toJSON(message.shippingAddress);\n    }\n    if (message.billingAddress !== undefined) {\n      obj.billingAddress = BillingAddress.toJSON(message.billingAddress);\n    }\n    if (message.notificationEmail !== undefined) {\n      obj.notificationEmail = message.notificationEmail;\n    }\n    if (message.customerOrderNr !== undefined) {\n      obj.customerOrderNr = message.customerOrderNr;\n    }\n    if (message.customerRemark !== undefined) {\n      obj.customerRemark = message.customerRemark;\n    }\n    if (message.customerType !== undefined) {\n      obj.customerType = customerTypeToJSON(message.customerType);\n    }\n    if (message.customerVatId !== undefined) {\n      obj.customerVatId = message.customerVatId;\n    }\n    if (message.packagingPreferences !== undefined) {\n      obj.packagingPreferences = Preferences.toJSON(message.packagingPreferences);\n    }\n    if (message.paymentMethodId !== undefined) {\n      obj.paymentMethodId = message.paymentMethodId;\n    }\n    if (message.history?.length) {\n      obj.history = message.history.map((e) => Event.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Order>): Order {\n    return Order.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Order>): Order {\n    const message = createBaseOrder();\n    message.id = object.id ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.userId = object.userId ?? undefined;\n    message.customerId = object.customerId ?? undefined;\n    message.shopId = object.shopId ?? undefined;\n    message.items = object.items?.map((e) => Item.fromPartial(e)) || undefined;\n    message.orderState = object.orderState ?? undefined;\n    message.totalAmounts = object.totalAmounts?.map((e) => Amount.fromPartial(e)) || undefined;\n    message.shippingAddress = (object.shippingAddress !== undefined && object.shippingAddress !== null)\n      ? ShippingAddress.fromPartial(object.shippingAddress)\n      : undefined;\n    message.billingAddress = (object.billingAddress !== undefined && object.billingAddress !== null)\n      ? BillingAddress.fromPartial(object.billingAddress)\n      : undefined;\n    message.notificationEmail = object.notificationEmail ?? undefined;\n    message.customerOrderNr = object.customerOrderNr ?? undefined;\n    message.customerRemark = object.customerRemark ?? undefined;\n    message.customerType = object.customerType ?? undefined;\n    message.customerVatId = object.customerVatId ?? undefined;\n    message.packagingPreferences = (object.packagingPreferences !== undefined && object.packagingPreferences !== null)\n      ? Preferences.fromPartial(object.packagingPreferences)\n      : undefined;\n    message.paymentMethodId = object.paymentMethodId ?? undefined;\n    message.history = object.history?.map((e) => Event.fromPartial(e)) || undefined;\n    return message;\n  },\n};\n\nfunction createBaseOrderIdList(): OrderIdList {\n  return {};\n}\n\nexport const OrderIdList: MessageFns<OrderIdList> = {\n  encode(message: OrderIdList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.ids !== undefined && message.ids.length !== 0) {\n      for (const v of message.ids) {\n        writer.uint32(10).string(v!);\n      }\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OrderIdList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOrderIdList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.ids === undefined) {\n            message.ids = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.ids!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OrderIdList {\n    return {\n      ids: globalThis.Array.isArray(object?.ids) ? object.ids.map((e: any) => globalThis.String(e)) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: OrderIdList): unknown {\n    const obj: any = {};\n    if (message.ids?.length) {\n      obj.ids = message.ids;\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OrderIdList>): OrderIdList {\n    return OrderIdList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OrderIdList>): OrderIdList {\n    const message = createBaseOrderIdList();\n    message.ids = object.ids?.map((e) => e) || undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseOrderList(): OrderList {\n  return {};\n}\n\nexport const OrderList: MessageFns<OrderList> = {\n  encode(message: OrderList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        Order.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OrderList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOrderList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = Order.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OrderList {\n    return {\n      items: globalThis.Array.isArray(object?.items) ? object.items.map((e: any) => Order.fromJSON(e)) : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: OrderList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => Order.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OrderList>): OrderList {\n    return OrderList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OrderList>): OrderList {\n    const message = createBaseOrderList();\n    message.items = object.items?.map((e) => Order.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseOrderSubmitListResponse(): OrderSubmitListResponse {\n  return {};\n}\n\nexport const OrderSubmitListResponse: MessageFns<OrderSubmitListResponse> = {\n  encode(message: OrderSubmitListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.orders !== undefined && message.orders.length !== 0) {\n      for (const v of message.orders) {\n        OrderResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.fulfillments !== undefined && message.fulfillments.length !== 0) {\n      for (const v of message.fulfillments) {\n        FulfillmentResponse.encode(v!, writer.uint32(18).fork()).join();\n      }\n    }\n    if (message.invoices !== undefined && message.invoices.length !== 0) {\n      for (const v of message.invoices) {\n        InvoiceResponse.encode(v!, writer.uint32(26).fork()).join();\n      }\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(34).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OrderSubmitListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOrderSubmitListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.orders === undefined) {\n            message.orders = [];\n          }\n          const el = OrderResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.orders!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          if (message.fulfillments === undefined) {\n            message.fulfillments = [];\n          }\n          const el = FulfillmentResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.fulfillments!.push(el);\n          }\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          if (message.invoices === undefined) {\n            message.invoices = [];\n          }\n          const el = InvoiceResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.invoices!.push(el);\n          }\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OrderSubmitListResponse {\n    return {\n      orders: globalThis.Array.isArray(object?.orders)\n        ? object.orders.map((e: any) => OrderResponse.fromJSON(e))\n        : undefined,\n      fulfillments: globalThis.Array.isArray(object?.fulfillments)\n        ? object.fulfillments.map((e: any) => FulfillmentResponse.fromJSON(e))\n        : undefined,\n      invoices: globalThis.Array.isArray(object?.invoices)\n        ? object.invoices.map((e: any) => InvoiceResponse.fromJSON(e))\n        : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: OrderSubmitListResponse): unknown {\n    const obj: any = {};\n    if (message.orders?.length) {\n      obj.orders = message.orders.map((e) => OrderResponse.toJSON(e));\n    }\n    if (message.fulfillments?.length) {\n      obj.fulfillments = message.fulfillments.map((e) => FulfillmentResponse.toJSON(e));\n    }\n    if (message.invoices?.length) {\n      obj.invoices = message.invoices.map((e) => InvoiceResponse.toJSON(e));\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OrderSubmitListResponse>): OrderSubmitListResponse {\n    return OrderSubmitListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OrderSubmitListResponse>): OrderSubmitListResponse {\n    const message = createBaseOrderSubmitListResponse();\n    message.orders = object.orders?.map((e) => OrderResponse.fromPartial(e)) || undefined;\n    message.fulfillments = object.fulfillments?.map((e) => FulfillmentResponse.fromPartial(e)) || undefined;\n    message.invoices = object.invoices?.map((e) => InvoiceResponse.fromPartial(e)) || undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseOrderListResponse(): OrderListResponse {\n  return {};\n}\n\nexport const OrderListResponse: MessageFns<OrderListResponse> = {\n  encode(message: OrderListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        OrderResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OrderListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOrderListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = OrderResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OrderListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => OrderResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: OrderListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => OrderResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OrderListResponse>): OrderListResponse {\n    return OrderListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OrderListResponse>): OrderListResponse {\n    const message = createBaseOrderListResponse();\n    message.items = object.items?.map((e) => OrderResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseOrderResponse(): OrderResponse {\n  return {};\n}\n\nexport const OrderResponse: MessageFns<OrderResponse> = {\n  encode(message: OrderResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      Order.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OrderResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOrderResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = Order.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OrderResponse {\n    return {\n      payload: isSet(object.payload) ? Order.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: OrderResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = Order.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OrderResponse>): OrderResponse {\n    return OrderResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OrderResponse>): OrderResponse {\n    const message = createBaseOrderResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? Order.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseDeleted(): Deleted {\n  return {};\n}\n\nexport const Deleted: MessageFns<Deleted> = {\n  encode(message: Deleted, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Deleted {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseDeleted();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Deleted {\n    return { id: isSet(object.id) ? globalThis.String(object.id) : undefined };\n  },\n\n  toJSON(message: Deleted): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Deleted>): Deleted {\n    return Deleted.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Deleted>): Deleted {\n    const message = createBaseDeleted();\n    message.id = object.id ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseFulfillmentRequest(): FulfillmentRequest {\n  return {};\n}\n\nexport const FulfillmentRequest: MessageFns<FulfillmentRequest> = {\n  encode(message: FulfillmentRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.orderId !== undefined) {\n      writer.uint32(10).string(message.orderId);\n    }\n    if (message.exportType !== undefined) {\n      writer.uint32(18).string(message.exportType);\n    }\n    if (message.exportDescription !== undefined) {\n      writer.uint32(26).string(message.exportDescription);\n    }\n    if (message.invoiceNumber !== undefined) {\n      writer.uint32(34).string(message.invoiceNumber);\n    }\n    if (message.senderAddress !== undefined) {\n      ShippingAddress.encode(message.senderAddress, writer.uint32(42).fork()).join();\n    }\n    if (message.selectedItems !== undefined && message.selectedItems.length !== 0) {\n      for (const v of message.selectedItems) {\n        writer.uint32(50).string(v!);\n      }\n    }\n    if (message.data !== undefined) {\n      Any.encode(message.data, writer.uint32(58).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FulfillmentRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFulfillmentRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.orderId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.exportType = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.exportDescription = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.invoiceNumber = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.senderAddress = ShippingAddress.decode(reader, reader.uint32());\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          if (message.selectedItems === undefined) {\n            message.selectedItems = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.selectedItems!.push(el);\n          }\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.data = Any.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FulfillmentRequest {\n    return {\n      orderId: isSet(object.orderId) ? globalThis.String(object.orderId) : undefined,\n      exportType: isSet(object.exportType) ? globalThis.String(object.exportType) : undefined,\n      exportDescription: isSet(object.exportDescription) ? globalThis.String(object.exportDescription) : undefined,\n      invoiceNumber: isSet(object.invoiceNumber) ? globalThis.String(object.invoiceNumber) : undefined,\n      senderAddress: isSet(object.senderAddress) ? ShippingAddress.fromJSON(object.senderAddress) : undefined,\n      selectedItems: globalThis.Array.isArray(object?.selectedItems)\n        ? object.selectedItems.map((e: any) => globalThis.String(e))\n        : undefined,\n      data: isSet(object.data) ? Any.fromJSON(object.data) : undefined,\n    };\n  },\n\n  toJSON(message: FulfillmentRequest): unknown {\n    const obj: any = {};\n    if (message.orderId !== undefined) {\n      obj.orderId = message.orderId;\n    }\n    if (message.exportType !== undefined) {\n      obj.exportType = message.exportType;\n    }\n    if (message.exportDescription !== undefined) {\n      obj.exportDescription = message.exportDescription;\n    }\n    if (message.invoiceNumber !== undefined) {\n      obj.invoiceNumber = message.invoiceNumber;\n    }\n    if (message.senderAddress !== undefined) {\n      obj.senderAddress = ShippingAddress.toJSON(message.senderAddress);\n    }\n    if (message.selectedItems?.length) {\n      obj.selectedItems = message.selectedItems;\n    }\n    if (message.data !== undefined) {\n      obj.data = Any.toJSON(message.data);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FulfillmentRequest>): FulfillmentRequest {\n    return FulfillmentRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FulfillmentRequest>): FulfillmentRequest {\n    const message = createBaseFulfillmentRequest();\n    message.orderId = object.orderId ?? undefined;\n    message.exportType = object.exportType ?? undefined;\n    message.exportDescription = object.exportDescription ?? undefined;\n    message.invoiceNumber = object.invoiceNumber ?? undefined;\n    message.senderAddress = (object.senderAddress !== undefined && object.senderAddress !== null)\n      ? ShippingAddress.fromPartial(object.senderAddress)\n      : undefined;\n    message.selectedItems = object.selectedItems?.map((e) => e) || undefined;\n    message.data = (object.data !== undefined && object.data !== null) ? Any.fromPartial(object.data) : undefined;\n    return message;\n  },\n};\n\nfunction createBaseFulfillmentRequestList(): FulfillmentRequestList {\n  return {};\n}\n\nexport const FulfillmentRequestList: MessageFns<FulfillmentRequestList> = {\n  encode(message: FulfillmentRequestList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        FulfillmentRequest.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): FulfillmentRequestList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseFulfillmentRequestList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = FulfillmentRequest.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): FulfillmentRequestList {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => FulfillmentRequest.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: FulfillmentRequestList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => FulfillmentRequest.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<FulfillmentRequestList>): FulfillmentRequestList {\n    return FulfillmentRequestList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<FulfillmentRequestList>): FulfillmentRequestList {\n    const message = createBaseFulfillmentRequestList();\n    message.items = object.items?.map((e) => FulfillmentRequest.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseOrderingInvoiceSection(): OrderingInvoiceSection {\n  return {};\n}\n\nexport const OrderingInvoiceSection: MessageFns<OrderingInvoiceSection> = {\n  encode(message: OrderingInvoiceSection, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.orderId !== undefined) {\n      writer.uint32(10).string(message.orderId);\n    }\n    if (message.selectedItems !== undefined && message.selectedItems.length !== 0) {\n      for (const v of message.selectedItems) {\n        writer.uint32(18).string(v!);\n      }\n    }\n    if (message.fulfillmentMode !== undefined) {\n      writer.uint32(24).int32(fulfillmentInvoiceModeToNumber(message.fulfillmentMode));\n    }\n    if (message.selectedFulfillments !== undefined && message.selectedFulfillments.length !== 0) {\n      for (const v of message.selectedFulfillments) {\n        FulfillmentInvoiceSection.encode(v!, writer.uint32(34).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OrderingInvoiceSection {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOrderingInvoiceSection();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.orderId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          if (message.selectedItems === undefined) {\n            message.selectedItems = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.selectedItems!.push(el);\n          }\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.fulfillmentMode = fulfillmentInvoiceModeFromJSON(reader.int32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          if (message.selectedFulfillments === undefined) {\n            message.selectedFulfillments = [];\n          }\n          const el = FulfillmentInvoiceSection.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.selectedFulfillments!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OrderingInvoiceSection {\n    return {\n      orderId: isSet(object.orderId) ? globalThis.String(object.orderId) : undefined,\n      selectedItems: globalThis.Array.isArray(object?.selectedItems)\n        ? object.selectedItems.map((e: any) => globalThis.String(e))\n        : undefined,\n      fulfillmentMode: isSet(object.fulfillmentMode)\n        ? fulfillmentInvoiceModeFromJSON(object.fulfillmentMode)\n        : undefined,\n      selectedFulfillments: globalThis.Array.isArray(object?.selectedFulfillments)\n        ? object.selectedFulfillments.map((e: any) => FulfillmentInvoiceSection.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: OrderingInvoiceSection): unknown {\n    const obj: any = {};\n    if (message.orderId !== undefined) {\n      obj.orderId = message.orderId;\n    }\n    if (message.selectedItems?.length) {\n      obj.selectedItems = message.selectedItems;\n    }\n    if (message.fulfillmentMode !== undefined) {\n      obj.fulfillmentMode = fulfillmentInvoiceModeToJSON(message.fulfillmentMode);\n    }\n    if (message.selectedFulfillments?.length) {\n      obj.selectedFulfillments = message.selectedFulfillments.map((e) => FulfillmentInvoiceSection.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OrderingInvoiceSection>): OrderingInvoiceSection {\n    return OrderingInvoiceSection.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OrderingInvoiceSection>): OrderingInvoiceSection {\n    const message = createBaseOrderingInvoiceSection();\n    message.orderId = object.orderId ?? undefined;\n    message.selectedItems = object.selectedItems?.map((e) => e) || undefined;\n    message.fulfillmentMode = object.fulfillmentMode ?? undefined;\n    message.selectedFulfillments = object.selectedFulfillments?.map((e) => FulfillmentInvoiceSection.fromPartial(e)) ||\n      undefined;\n    return message;\n  },\n};\n\nfunction createBaseOrderingInvoiceRequest(): OrderingInvoiceRequest {\n  return {};\n}\n\nexport const OrderingInvoiceRequest: MessageFns<OrderingInvoiceRequest> = {\n  encode(message: OrderingInvoiceRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.invoiceNumber !== undefined) {\n      writer.uint32(10).string(message.invoiceNumber);\n    }\n    if (message.paymentHints !== undefined && message.paymentHints.length !== 0) {\n      for (const v of message.paymentHints) {\n        writer.uint32(18).string(v!);\n      }\n    }\n    if (message.sections !== undefined && message.sections.length !== 0) {\n      for (const v of message.sections) {\n        OrderingInvoiceSection.encode(v!, writer.uint32(26).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OrderingInvoiceRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOrderingInvoiceRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.invoiceNumber = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          if (message.paymentHints === undefined) {\n            message.paymentHints = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.paymentHints!.push(el);\n          }\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          if (message.sections === undefined) {\n            message.sections = [];\n          }\n          const el = OrderingInvoiceSection.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.sections!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OrderingInvoiceRequest {\n    return {\n      invoiceNumber: isSet(object.invoiceNumber) ? globalThis.String(object.invoiceNumber) : undefined,\n      paymentHints: globalThis.Array.isArray(object?.paymentHints)\n        ? object.paymentHints.map((e: any) => globalThis.String(e))\n        : undefined,\n      sections: globalThis.Array.isArray(object?.sections)\n        ? object.sections.map((e: any) => OrderingInvoiceSection.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: OrderingInvoiceRequest): unknown {\n    const obj: any = {};\n    if (message.invoiceNumber !== undefined) {\n      obj.invoiceNumber = message.invoiceNumber;\n    }\n    if (message.paymentHints?.length) {\n      obj.paymentHints = message.paymentHints;\n    }\n    if (message.sections?.length) {\n      obj.sections = message.sections.map((e) => OrderingInvoiceSection.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OrderingInvoiceRequest>): OrderingInvoiceRequest {\n    return OrderingInvoiceRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OrderingInvoiceRequest>): OrderingInvoiceRequest {\n    const message = createBaseOrderingInvoiceRequest();\n    message.invoiceNumber = object.invoiceNumber ?? undefined;\n    message.paymentHints = object.paymentHints?.map((e) => e) || undefined;\n    message.sections = object.sections?.map((e) => OrderingInvoiceSection.fromPartial(e)) || undefined;\n    return message;\n  },\n};\n\nfunction createBaseOrderingInvoiceRequestList(): OrderingInvoiceRequestList {\n  return {};\n}\n\nexport const OrderingInvoiceRequestList: MessageFns<OrderingInvoiceRequestList> = {\n  encode(message: OrderingInvoiceRequestList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        OrderingInvoiceRequest.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OrderingInvoiceRequestList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOrderingInvoiceRequestList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = OrderingInvoiceRequest.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OrderingInvoiceRequestList {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => OrderingInvoiceRequest.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: OrderingInvoiceRequestList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => OrderingInvoiceRequest.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OrderingInvoiceRequestList>): OrderingInvoiceRequestList {\n    return OrderingInvoiceRequestList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OrderingInvoiceRequestList>): OrderingInvoiceRequestList {\n    const message = createBaseOrderingInvoiceRequestList();\n    message.items = object.items?.map((e) => OrderingInvoiceRequest.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nexport type OrderServiceDefinition = typeof OrderServiceDefinition;\nexport const OrderServiceDefinition = {\n  name: \"OrderService\",\n  fullName: \"io.restorecommerce.order.OrderService\",\n  methods: {\n    read: {\n      name: \"Read\",\n      requestType: ReadRequest,\n      requestStream: false,\n      responseType: OrderListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    create: {\n      name: \"Create\",\n      requestType: OrderList,\n      requestStream: false,\n      responseType: OrderListResponse,\n      responseStream: false,\n      options: {},\n    },\n    update: {\n      name: \"Update\",\n      requestType: OrderList,\n      requestStream: false,\n      responseType: OrderListResponse,\n      responseStream: false,\n      options: {},\n    },\n    upsert: {\n      name: \"Upsert\",\n      requestType: OrderList,\n      requestStream: false,\n      responseType: OrderListResponse,\n      responseStream: false,\n      options: {},\n    },\n    evaluate: {\n      name: \"Evaluate\",\n      requestType: OrderList,\n      requestStream: false,\n      responseType: OrderListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    submit: {\n      name: \"Submit\",\n      requestType: OrderList,\n      requestStream: false,\n      responseType: OrderSubmitListResponse,\n      responseStream: false,\n      options: {},\n    },\n    withdraw: {\n      name: \"Withdraw\",\n      requestType: OrderIdList,\n      requestStream: false,\n      responseType: OrderListResponse,\n      responseStream: false,\n      options: {},\n    },\n    cancel: {\n      name: \"Cancel\",\n      requestType: OrderIdList,\n      requestStream: false,\n      responseType: OrderListResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Requires Notification Service - (re)sends current order state as email notification. */\n    notify: {\n      name: \"Notify\",\n      requestType: OrderIdList,\n      requestStream: false,\n      responseType: StatusListResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Requires Fulfillment Service */\n    queryFulfillmentSolution: {\n      name: \"QueryFulfillmentSolution\",\n      requestType: FulfillmentRequestList,\n      requestStream: false,\n      responseType: FulfillmentSolutionListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    /**\n     * Requires Fulfillment Service\n     * Evaluates plausibility of the Fulfillment that would result from given order.\n     */\n    evaluateFulfillment: {\n      name: \"EvaluateFulfillment\",\n      requestType: OrderList,\n      requestStream: false,\n      responseType: StatusListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    /** Requires Fulfillment Service */\n    createFulfillment: {\n      name: \"CreateFulfillment\",\n      requestType: FulfillmentRequestList,\n      requestStream: false,\n      responseType: FulfillmentListResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Requires Invoice Service */\n    createInvoice: {\n      name: \"CreateInvoice\",\n      requestType: OrderingInvoiceRequestList,\n      requestStream: false,\n      responseType: InvoiceListResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface OrderServiceImplementation<CallContextExt = {}> {\n  read(request: ReadRequest, context: CallContext & CallContextExt): Promise<DeepPartial<OrderListResponse>>;\n  create(request: OrderList, context: CallContext & CallContextExt): Promise<DeepPartial<OrderListResponse>>;\n  update(request: OrderList, context: CallContext & CallContextExt): Promise<DeepPartial<OrderListResponse>>;\n  upsert(request: OrderList, context: CallContext & CallContextExt): Promise<DeepPartial<OrderListResponse>>;\n  evaluate(request: OrderList, context: CallContext & CallContextExt): Promise<DeepPartial<OrderListResponse>>;\n  submit(request: OrderList, context: CallContext & CallContextExt): Promise<DeepPartial<OrderSubmitListResponse>>;\n  withdraw(request: OrderIdList, context: CallContext & CallContextExt): Promise<DeepPartial<OrderListResponse>>;\n  cancel(request: OrderIdList, context: CallContext & CallContextExt): Promise<DeepPartial<OrderListResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n  /** Requires Notification Service - (re)sends current order state as email notification. */\n  notify(request: OrderIdList, context: CallContext & CallContextExt): Promise<DeepPartial<StatusListResponse>>;\n  /** Requires Fulfillment Service */\n  queryFulfillmentSolution(\n    request: FulfillmentRequestList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<FulfillmentSolutionListResponse>>;\n  /**\n   * Requires Fulfillment Service\n   * Evaluates plausibility of the Fulfillment that would result from given order.\n   */\n  evaluateFulfillment(\n    request: OrderList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<StatusListResponse>>;\n  /** Requires Fulfillment Service */\n  createFulfillment(\n    request: FulfillmentRequestList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<FulfillmentListResponse>>;\n  /** Requires Invoice Service */\n  createInvoice(\n    request: OrderingInvoiceRequestList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<InvoiceListResponse>>;\n}\n\nexport interface OrderServiceClient<CallOptionsExt = {}> {\n  read(request: DeepPartial<ReadRequest>, options?: CallOptions & CallOptionsExt): Promise<OrderListResponse>;\n  create(request: DeepPartial<OrderList>, options?: CallOptions & CallOptionsExt): Promise<OrderListResponse>;\n  update(request: DeepPartial<OrderList>, options?: CallOptions & CallOptionsExt): Promise<OrderListResponse>;\n  upsert(request: DeepPartial<OrderList>, options?: CallOptions & CallOptionsExt): Promise<OrderListResponse>;\n  evaluate(request: DeepPartial<OrderList>, options?: CallOptions & CallOptionsExt): Promise<OrderListResponse>;\n  submit(request: DeepPartial<OrderList>, options?: CallOptions & CallOptionsExt): Promise<OrderSubmitListResponse>;\n  withdraw(request: DeepPartial<OrderIdList>, options?: CallOptions & CallOptionsExt): Promise<OrderListResponse>;\n  cancel(request: DeepPartial<OrderIdList>, options?: CallOptions & CallOptionsExt): Promise<OrderListResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n  /** Requires Notification Service - (re)sends current order state as email notification. */\n  notify(request: DeepPartial<OrderIdList>, options?: CallOptions & CallOptionsExt): Promise<StatusListResponse>;\n  /** Requires Fulfillment Service */\n  queryFulfillmentSolution(\n    request: DeepPartial<FulfillmentRequestList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<FulfillmentSolutionListResponse>;\n  /**\n   * Requires Fulfillment Service\n   * Evaluates plausibility of the Fulfillment that would result from given order.\n   */\n  evaluateFulfillment(\n    request: DeepPartial<OrderList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<StatusListResponse>;\n  /** Requires Fulfillment Service */\n  createFulfillment(\n    request: DeepPartial<FulfillmentRequestList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<FulfillmentListResponse>;\n  /** Requires Invoice Service */\n  createInvoice(\n    request: DeepPartial<OrderingInvoiceRequestList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<InvoiceListResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/order.proto\",\n    \"package\": \"io.restorecommerce.order\",\n    \"dependency\": [\n      \"google/protobuf/any.proto\",\n      \"google/protobuf/timestamp.proto\",\n      \"io/restorecommerce/resource_base.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/options.proto\",\n      \"io/restorecommerce/address.proto\",\n      \"io/restorecommerce/amount.proto\",\n      \"io/restorecommerce/attribute.proto\",\n      \"io/restorecommerce/price.proto\",\n      \"io/restorecommerce/country.proto\",\n      \"io/restorecommerce/fulfillment.proto\",\n      \"io/restorecommerce/fulfillment_product.proto\",\n      \"io/restorecommerce/invoice.proto\",\n      \"io/restorecommerce/user.proto\",\n      \"io/restorecommerce/customer.proto\",\n      \"io/restorecommerce/shop.proto\",\n      \"io/restorecommerce/product.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Event\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"code\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"code\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"message\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"message\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"timestamp\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Timestamp\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"timestamp\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"state\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".io.restorecommerce.order.OrderState\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"state\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"attibutes\",\n        \"number\": 6,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.attribute.Attribute\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"attibutes\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_code\", \"options\": undefined },\n        { \"name\": \"_message\", \"options\": undefined },\n        { \"name\": \"_timestamp\", \"options\": undefined },\n        { \"name\": \"_state\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Item\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"product_id\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"productId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"variant_id\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"variantId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"parent_item_id\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"parentItemId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"quantity\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 5,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"quantity\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"unit_price\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.price.Price\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"unitPrice\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"amount\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.amount.Amount\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"amount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_product_id\", \"options\": undefined },\n        { \"name\": \"_variant_id\", \"options\": undefined },\n        { \"name\": \"_parent_item_id\", \"options\": undefined },\n        { \"name\": \"_quantity\", \"options\": undefined },\n        { \"name\": \"_unit_price\", \"options\": undefined },\n        { \"name\": \"_amount\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Order\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"user_id\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"userId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"customer_id\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"customerId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"shop_id\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"shopId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"items\",\n        \"number\": 6,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.order.Item\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"order_state\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".io.restorecommerce.order.OrderState\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"orderState\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"total_amounts\",\n        \"number\": 8,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.amount.Amount\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalAmounts\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"shipping_address\",\n        \"number\": 9,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.address.ShippingAddress\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"shippingAddress\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"billing_address\",\n        \"number\": 10,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.address.BillingAddress\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 7,\n        \"jsonName\": \"billingAddress\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"notification_email\",\n        \"number\": 11,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 8,\n        \"jsonName\": \"notificationEmail\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"customer_order_nr\",\n        \"number\": 12,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 9,\n        \"jsonName\": \"customerOrderNr\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"customer_remark\",\n        \"number\": 13,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 10,\n        \"jsonName\": \"customerRemark\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"customer_type\",\n        \"number\": 14,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".io.restorecommerce.customer.CustomerType\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 11,\n        \"jsonName\": \"customerType\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"customer_vat_id\",\n        \"number\": 15,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 12,\n        \"jsonName\": \"customerVatId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"packaging_preferences\",\n        \"number\": 16,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.fulfillment_product.Preferences\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 13,\n        \"jsonName\": \"packagingPreferences\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"payment_method_id\",\n        \"number\": 17,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 14,\n        \"jsonName\": \"paymentMethodId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"history\",\n        \"number\": 18,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.order.Event\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"history\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_user_id\", \"options\": undefined },\n        { \"name\": \"_customer_id\", \"options\": undefined },\n        { \"name\": \"_shop_id\", \"options\": undefined },\n        { \"name\": \"_order_state\", \"options\": undefined },\n        { \"name\": \"_shipping_address\", \"options\": undefined },\n        { \"name\": \"_billing_address\", \"options\": undefined },\n        { \"name\": \"_notification_email\", \"options\": undefined },\n        { \"name\": \"_customer_order_nr\", \"options\": undefined },\n        { \"name\": \"_customer_remark\", \"options\": undefined },\n        { \"name\": \"_customer_type\", \"options\": undefined },\n        { \"name\": \"_customer_vat_id\", \"options\": undefined },\n        { \"name\": \"_packaging_preferences\", \"options\": undefined },\n        { \"name\": \"_payment_method_id\", \"options\": undefined },\n      ],\n      \"options\": {\n        \"messageSetWireFormat\": false,\n        \"noStandardDescriptorAccessor\": false,\n        \"deprecated\": false,\n        \"mapEntry\": false,\n        \"uninterpretedOption\": [],\n      },\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"OrderIdList\",\n      \"field\": [{\n        \"name\": \"ids\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"ids\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"OrderList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.order.Order\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"OrderSubmitListResponse\",\n      \"field\": [{\n        \"name\": \"orders\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.order.OrderResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"orders\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"fulfillments\",\n        \"number\": 2,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.fulfillment.FulfillmentResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"fulfillments\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"invoices\",\n        \"number\": 3,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.invoice.InvoiceResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"invoices\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_operation_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"OrderListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.order.OrderResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"OrderResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.order.Order\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Deleted\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"FulfillmentRequest\",\n      \"field\": [{\n        \"name\": \"order_id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"orderId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"export_type\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"exportType\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"export_description\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"exportDescription\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"invoice_number\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"invoiceNumber\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"sender_address\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.address.ShippingAddress\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"senderAddress\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"selected_items\",\n        \"number\": 6,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"selectedItems\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"data\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Any\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"data\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_order_id\", \"options\": undefined },\n        { \"name\": \"_export_type\", \"options\": undefined },\n        { \"name\": \"_export_description\", \"options\": undefined },\n        { \"name\": \"_invoice_number\", \"options\": undefined },\n        { \"name\": \"_sender_address\", \"options\": undefined },\n        { \"name\": \"_data\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"FulfillmentRequestList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.order.FulfillmentRequest\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"OrderingInvoiceSection\",\n      \"field\": [{\n        \"name\": \"order_id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"orderId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"selected_items\",\n        \"number\": 2,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"selectedItems\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"fulfillment_mode\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".io.restorecommerce.order.FulfillmentInvoiceMode\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"fulfillmentMode\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"selected_fulfillments\",\n        \"number\": 4,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.fulfillment.FulfillmentInvoiceSection\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"selectedFulfillments\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_order_id\", \"options\": undefined }, {\n        \"name\": \"_fulfillment_mode\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"OrderingInvoiceRequest\",\n      \"field\": [{\n        \"name\": \"invoice_number\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"invoiceNumber\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"payment_hints\",\n        \"number\": 2,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"paymentHints\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"sections\",\n        \"number\": 3,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.order.OrderingInvoiceSection\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"sections\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_invoice_number\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"OrderingInvoiceRequestList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.order.OrderingInvoiceRequest\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [{\n      \"name\": \"OrderState\",\n      \"value\": [\n        { \"name\": \"PENDING\", \"number\": 0, \"options\": undefined },\n        { \"name\": \"SUBMITTED\", \"number\": 1, \"options\": undefined },\n        { \"name\": \"COMPLETED\", \"number\": 2, \"options\": undefined },\n        { \"name\": \"CANCELLED\", \"number\": 3, \"options\": undefined },\n        { \"name\": \"WITHDRAWN\", \"number\": 4, \"options\": undefined },\n        { \"name\": \"INVALID\", \"number\": 5, \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"FulfillmentInvoiceMode\",\n      \"value\": [{ \"name\": \"INCLUDE\", \"number\": 0, \"options\": undefined }, {\n        \"name\": \"EXCLUDE\",\n        \"number\": 1,\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"service\": [{\n      \"name\": \"OrderService\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ReadRequest\",\n        \"outputType\": \".io.restorecommerce.order.OrderListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.order.OrderList\",\n        \"outputType\": \".io.restorecommerce.order.OrderListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.order.OrderList\",\n        \"outputType\": \".io.restorecommerce.order.OrderListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.order.OrderList\",\n        \"outputType\": \".io.restorecommerce.order.OrderListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Evaluate\",\n        \"inputType\": \".io.restorecommerce.order.OrderList\",\n        \"outputType\": \".io.restorecommerce.order.OrderListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Submit\",\n        \"inputType\": \".io.restorecommerce.order.OrderList\",\n        \"outputType\": \".io.restorecommerce.order.OrderSubmitListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Withdraw\",\n        \"inputType\": \".io.restorecommerce.order.OrderIdList\",\n        \"outputType\": \".io.restorecommerce.order.OrderListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Cancel\",\n        \"inputType\": \".io.restorecommerce.order.OrderIdList\",\n        \"outputType\": \".io.restorecommerce.order.OrderListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Notify\",\n        \"inputType\": \".io.restorecommerce.order.OrderIdList\",\n        \"outputType\": \".io.restorecommerce.status.StatusListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"QueryFulfillmentSolution\",\n        \"inputType\": \".io.restorecommerce.order.FulfillmentRequestList\",\n        \"outputType\": \".io.restorecommerce.fulfillment_product.FulfillmentSolutionListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"EvaluateFulfillment\",\n        \"inputType\": \".io.restorecommerce.order.OrderList\",\n        \"outputType\": \".io.restorecommerce.status.StatusListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"CreateFulfillment\",\n        \"inputType\": \".io.restorecommerce.order.FulfillmentRequestList\",\n        \"outputType\": \".io.restorecommerce.fulfillment.FulfillmentListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"CreateInvoice\",\n        \"inputType\": \".io.restorecommerce.order.OrderingInvoiceRequestList\",\n        \"outputType\": \".io.restorecommerce.invoice.InvoiceListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [3, 15],\n        \"span\": [22, 0, 39],\n        \"leadingComments\": \" Used by resolvers\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0, 2, 9],\n        \"span\": [44, 2, 82],\n        \"leadingComments\": \" Requires Notification Service - (re)sends current order state as email notification.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0, 2, 10],\n        \"span\": [47, 2, 49, 3],\n        \"leadingComments\": \" Requires Fulfillment Service\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0, 2, 11],\n        \"span\": [52, 2, 54, 3],\n        \"leadingComments\":\n          \" Requires Fulfillment Service\\n Evaluates plausibility of the Fulfillment that would result from given order.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0, 2, 12],\n        \"span\": [56, 2, 114],\n        \"leadingComments\": \" Requires Fulfillment Service\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0, 2, 13],\n        \"span\": [58, 2, 106],\n        \"leadingComments\": \" Requires Invoice Service\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 1, 2, 5],\n        \"span\": [98, 2, 57],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \"Set by service\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 1, 2, 6],\n        \"span\": [99, 2, 55],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \"Set by service\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 2],\n        \"span\": [105, 0, 156, 1],\n        \"leadingComments\": \"*\\nDatabase Entity\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 2, 2, 6],\n        \"span\": [144, 2, 38],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Set by service\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 2, 2, 7],\n        \"span\": [145, 2, 62],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Set by service --- repeated in case of variant currency?\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 9, 2, 5],\n        \"span\": [197, 2, 37],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" select all on empty\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 11, 2, 1],\n        \"span\": [209, 2, 37],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" select all on empty\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 11, 2, 3],\n        \"span\": [211, 2, 94],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" includes all on empty\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 12, 2, 0],\n        \"span\": [215, 2, 37],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" if given\\n\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.order.OrderState\": OrderState,\n    \".io.restorecommerce.order.FulfillmentInvoiceMode\": FulfillmentInvoiceMode,\n    \".io.restorecommerce.order.Event\": Event,\n    \".io.restorecommerce.order.Item\": Item,\n    \".io.restorecommerce.order.Order\": Order,\n    \".io.restorecommerce.order.OrderIdList\": OrderIdList,\n    \".io.restorecommerce.order.OrderList\": OrderList,\n    \".io.restorecommerce.order.OrderSubmitListResponse\": OrderSubmitListResponse,\n    \".io.restorecommerce.order.OrderListResponse\": OrderListResponse,\n    \".io.restorecommerce.order.OrderResponse\": OrderResponse,\n    \".io.restorecommerce.order.Deleted\": Deleted,\n    \".io.restorecommerce.order.FulfillmentRequest\": FulfillmentRequest,\n    \".io.restorecommerce.order.FulfillmentRequestList\": FulfillmentRequestList,\n    \".io.restorecommerce.order.OrderingInvoiceSection\": OrderingInvoiceSection,\n    \".io.restorecommerce.order.OrderingInvoiceRequest\": OrderingInvoiceRequest,\n    \".io.restorecommerce.order.OrderingInvoiceRequestList\": OrderingInvoiceRequestList,\n  },\n  dependencies: [\n    protoMetadata1,\n    protoMetadata2,\n    protoMetadata3,\n    protoMetadata4,\n    protoMetadata5,\n    protoMetadata6,\n    protoMetadata7,\n    protoMetadata8,\n    protoMetadata9,\n    protoMetadata10,\n    protoMetadata11,\n    protoMetadata12,\n    protoMetadata13,\n    protoMetadata14,\n    protoMetadata15,\n    protoMetadata16,\n    protoMetadata17,\n    protoMetadata18,\n    protoMetadata19,\n  ],\n  options: {\n    messages: {\n      \"Item\": {\n        fields: {\n          \"product_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CiMuaW8ucmVzdG9yZWNvbW1lcmNlLnByb2R1Y3QuUHJvZHVjdBIHY2F0YWxvZxoHcHJvZHVjdCIEUmVhZCoHcHJvZHVjdA==\",\n                \"base64\",\n              ),\n            ),\n          },\n        },\n      },\n      \"Order\": {\n        options: {\n          \"kafka_subscriber\": KafkaSubscription.decode(\n            Buffer.from(\n              \"CgZvcmRlcnMSJGlvLnJlc3RvcmVjb21tZXJjZS5vcmRlcmluZy5yZXNvdXJjZRoMb3JkZXJDcmVhdGVkIgxvcmRlclVwZGF0ZWQqDG9yZGVyRGVsZXRlZA==\",\n              \"base64\",\n            ),\n          ),\n        },\n        fields: {\n          \"user_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\"Ch0uaW8ucmVzdG9yZWNvbW1lcmNlLnVzZXIuVXNlchIIaWRlbnRpdHkaBHVzZXIiBFJlYWQqBHVzZXI=\", \"base64\"),\n            ),\n          },\n          \"customer_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CiUuaW8ucmVzdG9yZWNvbW1lcmNlLmN1c3RvbWVyLkN1c3RvbWVyEgttYXN0ZXJfZGF0YRoIY3VzdG9tZXIiBFJlYWQqCGN1c3RvbWVy\",\n                \"base64\",\n              ),\n            ),\n          },\n          \"shop_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"Ch0uaW8ucmVzdG9yZWNvbW1lcmNlLnNob3AuU2hvcBILbWFzdGVyX2RhdGEaBHNob3AiBFJlYWQqBHNob3A=\",\n                \"base64\",\n              ),\n            ),\n          },\n        },\n      },\n    },\n    services: {\n      \"OrderService\": {\n        methods: {\n          \"Read\": { \"is_query\": true },\n          \"Evaluate\": { \"is_query\": true },\n          \"QueryFulfillmentSolution\": { \"is_query\": true },\n          \"EvaluateFulfillment\": { \"is_query\": true },\n        },\n      },\n    },\n  },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction toTimestamp(date: Date): Timestamp {\n  const seconds = Math.trunc(date.getTime() / 1_000);\n  const nanos = (date.getTime() % 1_000) * 1_000_000;\n  return { seconds, nanos };\n}\n\nfunction fromTimestamp(t: Timestamp): Date {\n  let millis = (t.seconds || 0) * 1_000;\n  millis += (t.nanos || 0) / 1_000_000;\n  return new globalThis.Date(millis);\n}\n\nfunction fromJsonTimestamp(o: any): Date {\n  if (o instanceof globalThis.Date) {\n    return o;\n  } else if (typeof o === \"string\") {\n    return new globalThis.Date(o);\n  } else {\n    return fromTimestamp(Timestamp.fromJSON(o));\n  }\n}\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/payment.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { protoMetadata as protoMetadata1, Subject } from \"./auth\";\nimport { protoMetadata as protoMetadata3 } from \"./options\";\nimport { OperationStatus, protoMetadata as protoMetadata2, Status } from \"./status\";\n\nexport const protobufPackage = \"io.restorecommerce.payment\";\n\n/** Possible service providers. Provider names must be exactly as in config.yml. */\nexport enum Provider {\n  NO_PROVIDER = \"NO_PROVIDER\",\n  Adyen = \"Adyen\",\n  AuthorizeNetCIM = \"AuthorizeNetCIM\",\n  AuthorizeNet = \"AuthorizeNet\",\n  AxcessMS = \"AxcessMS\",\n  Balanced = \"Balanced\",\n  BamboraAsiaPacific = \"BamboraAsiaPacific\",\n  BankFrick = \"BankFrick\",\n  Banwire = \"Banwire\",\n  BarclaysePDQExtraPlus = \"BarclaysePDQExtraPlus\",\n  Be2Bill = \"Be2Bill\",\n  Beanstreamcom = \"Beanstreamcom\",\n  BluePay = \"BluePay\",\n  Borgun = \"Borgun\",\n  Braintree = \"Braintree\",\n  BridgePay = \"BridgePay\",\n  Cardknox = \"Cardknox\",\n  CardSave = \"CardSave\",\n  CardStream = \"CardStream\",\n  Cashnet = \"Cashnet\",\n  Cecabank = \"Cecabank\",\n  Cenpos = \"Cenpos\",\n  CAMSCentralAccountManagementSystem = \"CAMSCentralAccountManagementSystem\",\n  Checkoutcom = \"Checkoutcom\",\n  Clearhaus = \"Clearhaus\",\n  Commercegate = \"Commercegate\",\n  Conekta = \"Conekta\",\n  CyberSource = \"CyberSource\",\n  DIBS = \"DIBS\",\n  DataCash = \"DataCash\",\n  Efsnet = \"Efsnet\",\n  ElavonMyVirtualMerchant = \"ElavonMyVirtualMerchant\",\n  ePay = \"ePay\",\n  EVOCanada = \"EVOCanada\",\n  eWAY = \"eWAY\",\n  eWAYRapid = \"eWAYRapid\",\n  Exact = \"Exact\",\n  Ezic = \"Ezic\",\n  FatZebra = \"FatZebra\",\n  FederatedCanada = \"FederatedCanada\",\n  FinansbankWebPOS = \"FinansbankWebPOS\",\n  Flo2Cash = \"Flo2Cash\",\n  stPayGatewayNet = \"stPayGatewayNet\",\n  FirstDataGlobalGatewaye4 = \"FirstDataGlobalGatewaye4\",\n  FirstGiving = \"FirstGiving\",\n  GarantiSanalPOS = \"GarantiSanalPOS\",\n  GlobalTransport = \"GlobalTransport\",\n  HDFC = \"HDFC\",\n  HeartlandPaymentSystems = \"HeartlandPaymentSystems\",\n  iATSPayments = \"iATSPayments\",\n  InspireCommerce = \"InspireCommerce\",\n  InstaPay = \"InstaPay\",\n  IPP = \"IPP\",\n  Iridium = \"Iridium\",\n  iTransact = \"iTransact\",\n  JetPay = \"JetPay\",\n  Komoju = \"Komoju\",\n  LinkPoint = \"LinkPoint\",\n  LitleCo = \"LitleCo\",\n  maxiPago = \"maxiPago\",\n  MerchanteSolutions = \"MerchanteSolutions\",\n  MerchantOneGateway = \"MerchantOneGateway\",\n  MerchantWARE = \"MerchantWARE\",\n  MerchantWarrior = \"MerchantWarrior\",\n  Mercury = \"Mercury\",\n  MetricsGlobal = \"MetricsGlobal\",\n  MasterCardInternetGatewayServiceMiGS = \"MasterCardInternetGatewayServiceMiGS\",\n  ModernPayments = \"ModernPayments\",\n  MONEI = \"MONEI\",\n  Moneris = \"Moneris\",\n  MoneyMovers = \"MoneyMovers\",\n  NABTransact = \"NABTransact\",\n  NELiXTransaX = \"NELiXTransaX\",\n  NetRegistry = \"NetRegistry\",\n  BBSNetaxept = \"BBSNetaxept\",\n  NETbilling = \"NETbilling\",\n  NETPAYGateway = \"NETPAYGateway\",\n  NMI = \"NMI\",\n  Ogone = \"Ogone\",\n  Omise = \"Omise\",\n  Openpay = \"Openpay\",\n  OptimalPayments = \"OptimalPayments\",\n  OrbitalPaymentech = \"OrbitalPaymentech\",\n  Pagarme = \"Pagarme\",\n  PagoFacil = \"PagoFacil\",\n  PayConex = \"PayConex\",\n  PayGatePayXML = \"PayGatePayXML\",\n  PayHub = \"PayHub\",\n  PayJunction = \"PayJunction\",\n  PaySecure = \"PaySecure\",\n  PayboxDirect = \"PayboxDirect\",\n  Payeezy = \"Payeezy\",\n  Payex = \"Payex\",\n  PaymentExpress = \"PaymentExpress\",\n  PAYMILL = \"PAYMILL\",\n  PayPalExpressCheckout = \"PayPalExpressCheckout\",\n  PayPalExpressCheckoutUK = \"PayPalExpressCheckoutUK\",\n  PayPalPayflowPro = \"PayPalPayflowPro\",\n  PayPalPaymentsProUS = \"PayPalPaymentsProUS\",\n  PayPalPaymentsProUK = \"PayPalPaymentsProUK\",\n  PayPalWebsitePaymentsProCA = \"PayPalWebsitePaymentsProCA\",\n  PayPalExpressCheckoutforDigitalGoods = \"PayPalExpressCheckoutforDigitalGoods\",\n  Payscout = \"Payscout\",\n  Paystation = \"Paystation\",\n  PayWay = \"PayWay\",\n  PayUIndia = \"PayUIndia\",\n  PinPayments = \"PinPayments\",\n  PlugnPay = \"PlugnPay\",\n  Psigate = \"Psigate\",\n  PSLPaymentSolutions = \"PSLPaymentSolutions\",\n  QuickBooksMerchantServices = \"QuickBooksMerchantServices\",\n  QuickBooksPayments = \"QuickBooksPayments\",\n  QuantumGateway = \"QuantumGateway\",\n  QuickPay = \"QuickPay\",\n  Qvalent = \"Qvalent\",\n  Raven = \"Raven\",\n  Realex = \"Realex\",\n  Redsys = \"Redsys\",\n  S5 = \"S5\",\n  SagePay = \"SagePay\",\n  SagePaymentSolutions = \"SagePaymentSolutions\",\n  SallieMae = \"SallieMae\",\n  SecureNet = \"SecureNet\",\n  SecurePay = \"SecurePay\",\n  SecurePayTech = \"SecurePayTech\",\n  SecurionPay = \"SecurionPay\",\n  SkipJack = \"SkipJack\",\n  SoEasyPay = \"SoEasyPay\",\n  Spreedly = \"Spreedly\",\n  Stripe = \"Stripe\",\n  Swipe = \"Swipe\",\n  TNS = \"TNS\",\n  TransactPro = \"TransactPro\",\n  TransFirst = \"TransFirst\",\n  Transnational = \"Transnational\",\n  Trexle = \"Trexle\",\n  TrustCommerce = \"TrustCommerce\",\n  USAePay = \"USAePay\",\n  VancoPaymentSolutions = \"VancoPaymentSolutions\",\n  Verifi = \"Verifi\",\n  ViaKLIX = \"ViaKLIX\",\n  WebPay = \"WebPay\",\n  WePay = \"WePay\",\n  Wirecard = \"Wirecard\",\n  WorldpayGlobal = \"WorldpayGlobal\",\n  WorldpayOnline = \"WorldpayOnline\",\n  WorldpayUS = \"WorldpayUS\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function providerFromJSON(object: any): Provider {\n  switch (object) {\n    case 0:\n    case \"NO_PROVIDER\":\n      return Provider.NO_PROVIDER;\n    case 1:\n    case \"Adyen\":\n      return Provider.Adyen;\n    case 2:\n    case \"AuthorizeNetCIM\":\n      return Provider.AuthorizeNetCIM;\n    case 3:\n    case \"AuthorizeNet\":\n      return Provider.AuthorizeNet;\n    case 4:\n    case \"AxcessMS\":\n      return Provider.AxcessMS;\n    case 5:\n    case \"Balanced\":\n      return Provider.Balanced;\n    case 6:\n    case \"BamboraAsiaPacific\":\n      return Provider.BamboraAsiaPacific;\n    case 7:\n    case \"BankFrick\":\n      return Provider.BankFrick;\n    case 8:\n    case \"Banwire\":\n      return Provider.Banwire;\n    case 9:\n    case \"BarclaysePDQExtraPlus\":\n      return Provider.BarclaysePDQExtraPlus;\n    case 10:\n    case \"Be2Bill\":\n      return Provider.Be2Bill;\n    case 11:\n    case \"Beanstreamcom\":\n      return Provider.Beanstreamcom;\n    case 12:\n    case \"BluePay\":\n      return Provider.BluePay;\n    case 13:\n    case \"Borgun\":\n      return Provider.Borgun;\n    case 14:\n    case \"Braintree\":\n      return Provider.Braintree;\n    case 15:\n    case \"BridgePay\":\n      return Provider.BridgePay;\n    case 16:\n    case \"Cardknox\":\n      return Provider.Cardknox;\n    case 17:\n    case \"CardSave\":\n      return Provider.CardSave;\n    case 18:\n    case \"CardStream\":\n      return Provider.CardStream;\n    case 19:\n    case \"Cashnet\":\n      return Provider.Cashnet;\n    case 20:\n    case \"Cecabank\":\n      return Provider.Cecabank;\n    case 21:\n    case \"Cenpos\":\n      return Provider.Cenpos;\n    case 22:\n    case \"CAMSCentralAccountManagementSystem\":\n      return Provider.CAMSCentralAccountManagementSystem;\n    case 23:\n    case \"Checkoutcom\":\n      return Provider.Checkoutcom;\n    case 24:\n    case \"Clearhaus\":\n      return Provider.Clearhaus;\n    case 25:\n    case \"Commercegate\":\n      return Provider.Commercegate;\n    case 26:\n    case \"Conekta\":\n      return Provider.Conekta;\n    case 27:\n    case \"CyberSource\":\n      return Provider.CyberSource;\n    case 28:\n    case \"DIBS\":\n      return Provider.DIBS;\n    case 29:\n    case \"DataCash\":\n      return Provider.DataCash;\n    case 30:\n    case \"Efsnet\":\n      return Provider.Efsnet;\n    case 31:\n    case \"ElavonMyVirtualMerchant\":\n      return Provider.ElavonMyVirtualMerchant;\n    case 32:\n    case \"ePay\":\n      return Provider.ePay;\n    case 33:\n    case \"EVOCanada\":\n      return Provider.EVOCanada;\n    case 34:\n    case \"eWAY\":\n      return Provider.eWAY;\n    case 35:\n    case \"eWAYRapid\":\n      return Provider.eWAYRapid;\n    case 36:\n    case \"Exact\":\n      return Provider.Exact;\n    case 37:\n    case \"Ezic\":\n      return Provider.Ezic;\n    case 38:\n    case \"FatZebra\":\n      return Provider.FatZebra;\n    case 39:\n    case \"FederatedCanada\":\n      return Provider.FederatedCanada;\n    case 40:\n    case \"FinansbankWebPOS\":\n      return Provider.FinansbankWebPOS;\n    case 41:\n    case \"Flo2Cash\":\n      return Provider.Flo2Cash;\n    case 42:\n    case \"stPayGatewayNet\":\n      return Provider.stPayGatewayNet;\n    case 43:\n    case \"FirstDataGlobalGatewaye4\":\n      return Provider.FirstDataGlobalGatewaye4;\n    case 44:\n    case \"FirstGiving\":\n      return Provider.FirstGiving;\n    case 45:\n    case \"GarantiSanalPOS\":\n      return Provider.GarantiSanalPOS;\n    case 46:\n    case \"GlobalTransport\":\n      return Provider.GlobalTransport;\n    case 47:\n    case \"HDFC\":\n      return Provider.HDFC;\n    case 48:\n    case \"HeartlandPaymentSystems\":\n      return Provider.HeartlandPaymentSystems;\n    case 49:\n    case \"iATSPayments\":\n      return Provider.iATSPayments;\n    case 50:\n    case \"InspireCommerce\":\n      return Provider.InspireCommerce;\n    case 51:\n    case \"InstaPay\":\n      return Provider.InstaPay;\n    case 52:\n    case \"IPP\":\n      return Provider.IPP;\n    case 53:\n    case \"Iridium\":\n      return Provider.Iridium;\n    case 54:\n    case \"iTransact\":\n      return Provider.iTransact;\n    case 55:\n    case \"JetPay\":\n      return Provider.JetPay;\n    case 56:\n    case \"Komoju\":\n      return Provider.Komoju;\n    case 57:\n    case \"LinkPoint\":\n      return Provider.LinkPoint;\n    case 58:\n    case \"LitleCo\":\n      return Provider.LitleCo;\n    case 59:\n    case \"maxiPago\":\n      return Provider.maxiPago;\n    case 60:\n    case \"MerchanteSolutions\":\n      return Provider.MerchanteSolutions;\n    case 61:\n    case \"MerchantOneGateway\":\n      return Provider.MerchantOneGateway;\n    case 62:\n    case \"MerchantWARE\":\n      return Provider.MerchantWARE;\n    case 63:\n    case \"MerchantWarrior\":\n      return Provider.MerchantWarrior;\n    case 64:\n    case \"Mercury\":\n      return Provider.Mercury;\n    case 65:\n    case \"MetricsGlobal\":\n      return Provider.MetricsGlobal;\n    case 66:\n    case \"MasterCardInternetGatewayServiceMiGS\":\n      return Provider.MasterCardInternetGatewayServiceMiGS;\n    case 67:\n    case \"ModernPayments\":\n      return Provider.ModernPayments;\n    case 68:\n    case \"MONEI\":\n      return Provider.MONEI;\n    case 69:\n    case \"Moneris\":\n      return Provider.Moneris;\n    case 70:\n    case \"MoneyMovers\":\n      return Provider.MoneyMovers;\n    case 71:\n    case \"NABTransact\":\n      return Provider.NABTransact;\n    case 72:\n    case \"NELiXTransaX\":\n      return Provider.NELiXTransaX;\n    case 73:\n    case \"NetRegistry\":\n      return Provider.NetRegistry;\n    case 74:\n    case \"BBSNetaxept\":\n      return Provider.BBSNetaxept;\n    case 75:\n    case \"NETbilling\":\n      return Provider.NETbilling;\n    case 76:\n    case \"NETPAYGateway\":\n      return Provider.NETPAYGateway;\n    case 77:\n    case \"NMI\":\n      return Provider.NMI;\n    case 78:\n    case \"Ogone\":\n      return Provider.Ogone;\n    case 79:\n    case \"Omise\":\n      return Provider.Omise;\n    case 80:\n    case \"Openpay\":\n      return Provider.Openpay;\n    case 81:\n    case \"OptimalPayments\":\n      return Provider.OptimalPayments;\n    case 82:\n    case \"OrbitalPaymentech\":\n      return Provider.OrbitalPaymentech;\n    case 83:\n    case \"Pagarme\":\n      return Provider.Pagarme;\n    case 84:\n    case \"PagoFacil\":\n      return Provider.PagoFacil;\n    case 85:\n    case \"PayConex\":\n      return Provider.PayConex;\n    case 86:\n    case \"PayGatePayXML\":\n      return Provider.PayGatePayXML;\n    case 87:\n    case \"PayHub\":\n      return Provider.PayHub;\n    case 89:\n    case \"PayJunction\":\n      return Provider.PayJunction;\n    case 90:\n    case \"PaySecure\":\n      return Provider.PaySecure;\n    case 91:\n    case \"PayboxDirect\":\n      return Provider.PayboxDirect;\n    case 92:\n    case \"Payeezy\":\n      return Provider.Payeezy;\n    case 93:\n    case \"Payex\":\n      return Provider.Payex;\n    case 94:\n    case \"PaymentExpress\":\n      return Provider.PaymentExpress;\n    case 95:\n    case \"PAYMILL\":\n      return Provider.PAYMILL;\n    case 96:\n    case \"PayPalExpressCheckout\":\n      return Provider.PayPalExpressCheckout;\n    case 97:\n    case \"PayPalExpressCheckoutUK\":\n      return Provider.PayPalExpressCheckoutUK;\n    case 98:\n    case \"PayPalPayflowPro\":\n      return Provider.PayPalPayflowPro;\n    case 99:\n    case \"PayPalPaymentsProUS\":\n      return Provider.PayPalPaymentsProUS;\n    case 100:\n    case \"PayPalPaymentsProUK\":\n      return Provider.PayPalPaymentsProUK;\n    case 101:\n    case \"PayPalWebsitePaymentsProCA\":\n      return Provider.PayPalWebsitePaymentsProCA;\n    case 102:\n    case \"PayPalExpressCheckoutforDigitalGoods\":\n      return Provider.PayPalExpressCheckoutforDigitalGoods;\n    case 103:\n    case \"Payscout\":\n      return Provider.Payscout;\n    case 104:\n    case \"Paystation\":\n      return Provider.Paystation;\n    case 105:\n    case \"PayWay\":\n      return Provider.PayWay;\n    case 106:\n    case \"PayUIndia\":\n      return Provider.PayUIndia;\n    case 107:\n    case \"PinPayments\":\n      return Provider.PinPayments;\n    case 108:\n    case \"PlugnPay\":\n      return Provider.PlugnPay;\n    case 109:\n    case \"Psigate\":\n      return Provider.Psigate;\n    case 110:\n    case \"PSLPaymentSolutions\":\n      return Provider.PSLPaymentSolutions;\n    case 111:\n    case \"QuickBooksMerchantServices\":\n      return Provider.QuickBooksMerchantServices;\n    case 112:\n    case \"QuickBooksPayments\":\n      return Provider.QuickBooksPayments;\n    case 113:\n    case \"QuantumGateway\":\n      return Provider.QuantumGateway;\n    case 114:\n    case \"QuickPay\":\n      return Provider.QuickPay;\n    case 115:\n    case \"Qvalent\":\n      return Provider.Qvalent;\n    case 116:\n    case \"Raven\":\n      return Provider.Raven;\n    case 117:\n    case \"Realex\":\n      return Provider.Realex;\n    case 118:\n    case \"Redsys\":\n      return Provider.Redsys;\n    case 119:\n    case \"S5\":\n      return Provider.S5;\n    case 120:\n    case \"SagePay\":\n      return Provider.SagePay;\n    case 121:\n    case \"SagePaymentSolutions\":\n      return Provider.SagePaymentSolutions;\n    case 122:\n    case \"SallieMae\":\n      return Provider.SallieMae;\n    case 123:\n    case \"SecureNet\":\n      return Provider.SecureNet;\n    case 124:\n    case \"SecurePay\":\n      return Provider.SecurePay;\n    case 125:\n    case \"SecurePayTech\":\n      return Provider.SecurePayTech;\n    case 126:\n    case \"SecurionPay\":\n      return Provider.SecurionPay;\n    case 127:\n    case \"SkipJack\":\n      return Provider.SkipJack;\n    case 128:\n    case \"SoEasyPay\":\n      return Provider.SoEasyPay;\n    case 129:\n    case \"Spreedly\":\n      return Provider.Spreedly;\n    case 130:\n    case \"Stripe\":\n      return Provider.Stripe;\n    case 131:\n    case \"Swipe\":\n      return Provider.Swipe;\n    case 132:\n    case \"TNS\":\n      return Provider.TNS;\n    case 133:\n    case \"TransactPro\":\n      return Provider.TransactPro;\n    case 134:\n    case \"TransFirst\":\n      return Provider.TransFirst;\n    case 135:\n    case \"Transnational\":\n      return Provider.Transnational;\n    case 136:\n    case \"Trexle\":\n      return Provider.Trexle;\n    case 137:\n    case \"TrustCommerce\":\n      return Provider.TrustCommerce;\n    case 138:\n    case \"USAePay\":\n      return Provider.USAePay;\n    case 139:\n    case \"VancoPaymentSolutions\":\n      return Provider.VancoPaymentSolutions;\n    case 140:\n    case \"Verifi\":\n      return Provider.Verifi;\n    case 141:\n    case \"ViaKLIX\":\n      return Provider.ViaKLIX;\n    case 142:\n    case \"WebPay\":\n      return Provider.WebPay;\n    case 143:\n    case \"WePay\":\n      return Provider.WePay;\n    case 144:\n    case \"Wirecard\":\n      return Provider.Wirecard;\n    case 145:\n    case \"WorldpayGlobal\":\n      return Provider.WorldpayGlobal;\n    case 146:\n    case \"WorldpayOnline\":\n      return Provider.WorldpayOnline;\n    case 147:\n    case \"WorldpayUS\":\n      return Provider.WorldpayUS;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return Provider.UNRECOGNIZED;\n  }\n}\n\nexport function providerToJSON(object: Provider): string {\n  switch (object) {\n    case Provider.NO_PROVIDER:\n      return \"NO_PROVIDER\";\n    case Provider.Adyen:\n      return \"Adyen\";\n    case Provider.AuthorizeNetCIM:\n      return \"AuthorizeNetCIM\";\n    case Provider.AuthorizeNet:\n      return \"AuthorizeNet\";\n    case Provider.AxcessMS:\n      return \"AxcessMS\";\n    case Provider.Balanced:\n      return \"Balanced\";\n    case Provider.BamboraAsiaPacific:\n      return \"BamboraAsiaPacific\";\n    case Provider.BankFrick:\n      return \"BankFrick\";\n    case Provider.Banwire:\n      return \"Banwire\";\n    case Provider.BarclaysePDQExtraPlus:\n      return \"BarclaysePDQExtraPlus\";\n    case Provider.Be2Bill:\n      return \"Be2Bill\";\n    case Provider.Beanstreamcom:\n      return \"Beanstreamcom\";\n    case Provider.BluePay:\n      return \"BluePay\";\n    case Provider.Borgun:\n      return \"Borgun\";\n    case Provider.Braintree:\n      return \"Braintree\";\n    case Provider.BridgePay:\n      return \"BridgePay\";\n    case Provider.Cardknox:\n      return \"Cardknox\";\n    case Provider.CardSave:\n      return \"CardSave\";\n    case Provider.CardStream:\n      return \"CardStream\";\n    case Provider.Cashnet:\n      return \"Cashnet\";\n    case Provider.Cecabank:\n      return \"Cecabank\";\n    case Provider.Cenpos:\n      return \"Cenpos\";\n    case Provider.CAMSCentralAccountManagementSystem:\n      return \"CAMSCentralAccountManagementSystem\";\n    case Provider.Checkoutcom:\n      return \"Checkoutcom\";\n    case Provider.Clearhaus:\n      return \"Clearhaus\";\n    case Provider.Commercegate:\n      return \"Commercegate\";\n    case Provider.Conekta:\n      return \"Conekta\";\n    case Provider.CyberSource:\n      return \"CyberSource\";\n    case Provider.DIBS:\n      return \"DIBS\";\n    case Provider.DataCash:\n      return \"DataCash\";\n    case Provider.Efsnet:\n      return \"Efsnet\";\n    case Provider.ElavonMyVirtualMerchant:\n      return \"ElavonMyVirtualMerchant\";\n    case Provider.ePay:\n      return \"ePay\";\n    case Provider.EVOCanada:\n      return \"EVOCanada\";\n    case Provider.eWAY:\n      return \"eWAY\";\n    case Provider.eWAYRapid:\n      return \"eWAYRapid\";\n    case Provider.Exact:\n      return \"Exact\";\n    case Provider.Ezic:\n      return \"Ezic\";\n    case Provider.FatZebra:\n      return \"FatZebra\";\n    case Provider.FederatedCanada:\n      return \"FederatedCanada\";\n    case Provider.FinansbankWebPOS:\n      return \"FinansbankWebPOS\";\n    case Provider.Flo2Cash:\n      return \"Flo2Cash\";\n    case Provider.stPayGatewayNet:\n      return \"stPayGatewayNet\";\n    case Provider.FirstDataGlobalGatewaye4:\n      return \"FirstDataGlobalGatewaye4\";\n    case Provider.FirstGiving:\n      return \"FirstGiving\";\n    case Provider.GarantiSanalPOS:\n      return \"GarantiSanalPOS\";\n    case Provider.GlobalTransport:\n      return \"GlobalTransport\";\n    case Provider.HDFC:\n      return \"HDFC\";\n    case Provider.HeartlandPaymentSystems:\n      return \"HeartlandPaymentSystems\";\n    case Provider.iATSPayments:\n      return \"iATSPayments\";\n    case Provider.InspireCommerce:\n      return \"InspireCommerce\";\n    case Provider.InstaPay:\n      return \"InstaPay\";\n    case Provider.IPP:\n      return \"IPP\";\n    case Provider.Iridium:\n      return \"Iridium\";\n    case Provider.iTransact:\n      return \"iTransact\";\n    case Provider.JetPay:\n      return \"JetPay\";\n    case Provider.Komoju:\n      return \"Komoju\";\n    case Provider.LinkPoint:\n      return \"LinkPoint\";\n    case Provider.LitleCo:\n      return \"LitleCo\";\n    case Provider.maxiPago:\n      return \"maxiPago\";\n    case Provider.MerchanteSolutions:\n      return \"MerchanteSolutions\";\n    case Provider.MerchantOneGateway:\n      return \"MerchantOneGateway\";\n    case Provider.MerchantWARE:\n      return \"MerchantWARE\";\n    case Provider.MerchantWarrior:\n      return \"MerchantWarrior\";\n    case Provider.Mercury:\n      return \"Mercury\";\n    case Provider.MetricsGlobal:\n      return \"MetricsGlobal\";\n    case Provider.MasterCardInternetGatewayServiceMiGS:\n      return \"MasterCardInternetGatewayServiceMiGS\";\n    case Provider.ModernPayments:\n      return \"ModernPayments\";\n    case Provider.MONEI:\n      return \"MONEI\";\n    case Provider.Moneris:\n      return \"Moneris\";\n    case Provider.MoneyMovers:\n      return \"MoneyMovers\";\n    case Provider.NABTransact:\n      return \"NABTransact\";\n    case Provider.NELiXTransaX:\n      return \"NELiXTransaX\";\n    case Provider.NetRegistry:\n      return \"NetRegistry\";\n    case Provider.BBSNetaxept:\n      return \"BBSNetaxept\";\n    case Provider.NETbilling:\n      return \"NETbilling\";\n    case Provider.NETPAYGateway:\n      return \"NETPAYGateway\";\n    case Provider.NMI:\n      return \"NMI\";\n    case Provider.Ogone:\n      return \"Ogone\";\n    case Provider.Omise:\n      return \"Omise\";\n    case Provider.Openpay:\n      return \"Openpay\";\n    case Provider.OptimalPayments:\n      return \"OptimalPayments\";\n    case Provider.OrbitalPaymentech:\n      return \"OrbitalPaymentech\";\n    case Provider.Pagarme:\n      return \"Pagarme\";\n    case Provider.PagoFacil:\n      return \"PagoFacil\";\n    case Provider.PayConex:\n      return \"PayConex\";\n    case Provider.PayGatePayXML:\n      return \"PayGatePayXML\";\n    case Provider.PayHub:\n      return \"PayHub\";\n    case Provider.PayJunction:\n      return \"PayJunction\";\n    case Provider.PaySecure:\n      return \"PaySecure\";\n    case Provider.PayboxDirect:\n      return \"PayboxDirect\";\n    case Provider.Payeezy:\n      return \"Payeezy\";\n    case Provider.Payex:\n      return \"Payex\";\n    case Provider.PaymentExpress:\n      return \"PaymentExpress\";\n    case Provider.PAYMILL:\n      return \"PAYMILL\";\n    case Provider.PayPalExpressCheckout:\n      return \"PayPalExpressCheckout\";\n    case Provider.PayPalExpressCheckoutUK:\n      return \"PayPalExpressCheckoutUK\";\n    case Provider.PayPalPayflowPro:\n      return \"PayPalPayflowPro\";\n    case Provider.PayPalPaymentsProUS:\n      return \"PayPalPaymentsProUS\";\n    case Provider.PayPalPaymentsProUK:\n      return \"PayPalPaymentsProUK\";\n    case Provider.PayPalWebsitePaymentsProCA:\n      return \"PayPalWebsitePaymentsProCA\";\n    case Provider.PayPalExpressCheckoutforDigitalGoods:\n      return \"PayPalExpressCheckoutforDigitalGoods\";\n    case Provider.Payscout:\n      return \"Payscout\";\n    case Provider.Paystation:\n      return \"Paystation\";\n    case Provider.PayWay:\n      return \"PayWay\";\n    case Provider.PayUIndia:\n      return \"PayUIndia\";\n    case Provider.PinPayments:\n      return \"PinPayments\";\n    case Provider.PlugnPay:\n      return \"PlugnPay\";\n    case Provider.Psigate:\n      return \"Psigate\";\n    case Provider.PSLPaymentSolutions:\n      return \"PSLPaymentSolutions\";\n    case Provider.QuickBooksMerchantServices:\n      return \"QuickBooksMerchantServices\";\n    case Provider.QuickBooksPayments:\n      return \"QuickBooksPayments\";\n    case Provider.QuantumGateway:\n      return \"QuantumGateway\";\n    case Provider.QuickPay:\n      return \"QuickPay\";\n    case Provider.Qvalent:\n      return \"Qvalent\";\n    case Provider.Raven:\n      return \"Raven\";\n    case Provider.Realex:\n      return \"Realex\";\n    case Provider.Redsys:\n      return \"Redsys\";\n    case Provider.S5:\n      return \"S5\";\n    case Provider.SagePay:\n      return \"SagePay\";\n    case Provider.SagePaymentSolutions:\n      return \"SagePaymentSolutions\";\n    case Provider.SallieMae:\n      return \"SallieMae\";\n    case Provider.SecureNet:\n      return \"SecureNet\";\n    case Provider.SecurePay:\n      return \"SecurePay\";\n    case Provider.SecurePayTech:\n      return \"SecurePayTech\";\n    case Provider.SecurionPay:\n      return \"SecurionPay\";\n    case Provider.SkipJack:\n      return \"SkipJack\";\n    case Provider.SoEasyPay:\n      return \"SoEasyPay\";\n    case Provider.Spreedly:\n      return \"Spreedly\";\n    case Provider.Stripe:\n      return \"Stripe\";\n    case Provider.Swipe:\n      return \"Swipe\";\n    case Provider.TNS:\n      return \"TNS\";\n    case Provider.TransactPro:\n      return \"TransactPro\";\n    case Provider.TransFirst:\n      return \"TransFirst\";\n    case Provider.Transnational:\n      return \"Transnational\";\n    case Provider.Trexle:\n      return \"Trexle\";\n    case Provider.TrustCommerce:\n      return \"TrustCommerce\";\n    case Provider.USAePay:\n      return \"USAePay\";\n    case Provider.VancoPaymentSolutions:\n      return \"VancoPaymentSolutions\";\n    case Provider.Verifi:\n      return \"Verifi\";\n    case Provider.ViaKLIX:\n      return \"ViaKLIX\";\n    case Provider.WebPay:\n      return \"WebPay\";\n    case Provider.WePay:\n      return \"WePay\";\n    case Provider.Wirecard:\n      return \"Wirecard\";\n    case Provider.WorldpayGlobal:\n      return \"WorldpayGlobal\";\n    case Provider.WorldpayOnline:\n      return \"WorldpayOnline\";\n    case Provider.WorldpayUS:\n      return \"WorldpayUS\";\n    case Provider.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function providerToNumber(object: Provider): number {\n  switch (object) {\n    case Provider.NO_PROVIDER:\n      return 0;\n    case Provider.Adyen:\n      return 1;\n    case Provider.AuthorizeNetCIM:\n      return 2;\n    case Provider.AuthorizeNet:\n      return 3;\n    case Provider.AxcessMS:\n      return 4;\n    case Provider.Balanced:\n      return 5;\n    case Provider.BamboraAsiaPacific:\n      return 6;\n    case Provider.BankFrick:\n      return 7;\n    case Provider.Banwire:\n      return 8;\n    case Provider.BarclaysePDQExtraPlus:\n      return 9;\n    case Provider.Be2Bill:\n      return 10;\n    case Provider.Beanstreamcom:\n      return 11;\n    case Provider.BluePay:\n      return 12;\n    case Provider.Borgun:\n      return 13;\n    case Provider.Braintree:\n      return 14;\n    case Provider.BridgePay:\n      return 15;\n    case Provider.Cardknox:\n      return 16;\n    case Provider.CardSave:\n      return 17;\n    case Provider.CardStream:\n      return 18;\n    case Provider.Cashnet:\n      return 19;\n    case Provider.Cecabank:\n      return 20;\n    case Provider.Cenpos:\n      return 21;\n    case Provider.CAMSCentralAccountManagementSystem:\n      return 22;\n    case Provider.Checkoutcom:\n      return 23;\n    case Provider.Clearhaus:\n      return 24;\n    case Provider.Commercegate:\n      return 25;\n    case Provider.Conekta:\n      return 26;\n    case Provider.CyberSource:\n      return 27;\n    case Provider.DIBS:\n      return 28;\n    case Provider.DataCash:\n      return 29;\n    case Provider.Efsnet:\n      return 30;\n    case Provider.ElavonMyVirtualMerchant:\n      return 31;\n    case Provider.ePay:\n      return 32;\n    case Provider.EVOCanada:\n      return 33;\n    case Provider.eWAY:\n      return 34;\n    case Provider.eWAYRapid:\n      return 35;\n    case Provider.Exact:\n      return 36;\n    case Provider.Ezic:\n      return 37;\n    case Provider.FatZebra:\n      return 38;\n    case Provider.FederatedCanada:\n      return 39;\n    case Provider.FinansbankWebPOS:\n      return 40;\n    case Provider.Flo2Cash:\n      return 41;\n    case Provider.stPayGatewayNet:\n      return 42;\n    case Provider.FirstDataGlobalGatewaye4:\n      return 43;\n    case Provider.FirstGiving:\n      return 44;\n    case Provider.GarantiSanalPOS:\n      return 45;\n    case Provider.GlobalTransport:\n      return 46;\n    case Provider.HDFC:\n      return 47;\n    case Provider.HeartlandPaymentSystems:\n      return 48;\n    case Provider.iATSPayments:\n      return 49;\n    case Provider.InspireCommerce:\n      return 50;\n    case Provider.InstaPay:\n      return 51;\n    case Provider.IPP:\n      return 52;\n    case Provider.Iridium:\n      return 53;\n    case Provider.iTransact:\n      return 54;\n    case Provider.JetPay:\n      return 55;\n    case Provider.Komoju:\n      return 56;\n    case Provider.LinkPoint:\n      return 57;\n    case Provider.LitleCo:\n      return 58;\n    case Provider.maxiPago:\n      return 59;\n    case Provider.MerchanteSolutions:\n      return 60;\n    case Provider.MerchantOneGateway:\n      return 61;\n    case Provider.MerchantWARE:\n      return 62;\n    case Provider.MerchantWarrior:\n      return 63;\n    case Provider.Mercury:\n      return 64;\n    case Provider.MetricsGlobal:\n      return 65;\n    case Provider.MasterCardInternetGatewayServiceMiGS:\n      return 66;\n    case Provider.ModernPayments:\n      return 67;\n    case Provider.MONEI:\n      return 68;\n    case Provider.Moneris:\n      return 69;\n    case Provider.MoneyMovers:\n      return 70;\n    case Provider.NABTransact:\n      return 71;\n    case Provider.NELiXTransaX:\n      return 72;\n    case Provider.NetRegistry:\n      return 73;\n    case Provider.BBSNetaxept:\n      return 74;\n    case Provider.NETbilling:\n      return 75;\n    case Provider.NETPAYGateway:\n      return 76;\n    case Provider.NMI:\n      return 77;\n    case Provider.Ogone:\n      return 78;\n    case Provider.Omise:\n      return 79;\n    case Provider.Openpay:\n      return 80;\n    case Provider.OptimalPayments:\n      return 81;\n    case Provider.OrbitalPaymentech:\n      return 82;\n    case Provider.Pagarme:\n      return 83;\n    case Provider.PagoFacil:\n      return 84;\n    case Provider.PayConex:\n      return 85;\n    case Provider.PayGatePayXML:\n      return 86;\n    case Provider.PayHub:\n      return 87;\n    case Provider.PayJunction:\n      return 89;\n    case Provider.PaySecure:\n      return 90;\n    case Provider.PayboxDirect:\n      return 91;\n    case Provider.Payeezy:\n      return 92;\n    case Provider.Payex:\n      return 93;\n    case Provider.PaymentExpress:\n      return 94;\n    case Provider.PAYMILL:\n      return 95;\n    case Provider.PayPalExpressCheckout:\n      return 96;\n    case Provider.PayPalExpressCheckoutUK:\n      return 97;\n    case Provider.PayPalPayflowPro:\n      return 98;\n    case Provider.PayPalPaymentsProUS:\n      return 99;\n    case Provider.PayPalPaymentsProUK:\n      return 100;\n    case Provider.PayPalWebsitePaymentsProCA:\n      return 101;\n    case Provider.PayPalExpressCheckoutforDigitalGoods:\n      return 102;\n    case Provider.Payscout:\n      return 103;\n    case Provider.Paystation:\n      return 104;\n    case Provider.PayWay:\n      return 105;\n    case Provider.PayUIndia:\n      return 106;\n    case Provider.PinPayments:\n      return 107;\n    case Provider.PlugnPay:\n      return 108;\n    case Provider.Psigate:\n      return 109;\n    case Provider.PSLPaymentSolutions:\n      return 110;\n    case Provider.QuickBooksMerchantServices:\n      return 111;\n    case Provider.QuickBooksPayments:\n      return 112;\n    case Provider.QuantumGateway:\n      return 113;\n    case Provider.QuickPay:\n      return 114;\n    case Provider.Qvalent:\n      return 115;\n    case Provider.Raven:\n      return 116;\n    case Provider.Realex:\n      return 117;\n    case Provider.Redsys:\n      return 118;\n    case Provider.S5:\n      return 119;\n    case Provider.SagePay:\n      return 120;\n    case Provider.SagePaymentSolutions:\n      return 121;\n    case Provider.SallieMae:\n      return 122;\n    case Provider.SecureNet:\n      return 123;\n    case Provider.SecurePay:\n      return 124;\n    case Provider.SecurePayTech:\n      return 125;\n    case Provider.SecurionPay:\n      return 126;\n    case Provider.SkipJack:\n      return 127;\n    case Provider.SoEasyPay:\n      return 128;\n    case Provider.Spreedly:\n      return 129;\n    case Provider.Stripe:\n      return 130;\n    case Provider.Swipe:\n      return 131;\n    case Provider.TNS:\n      return 132;\n    case Provider.TransactPro:\n      return 133;\n    case Provider.TransFirst:\n      return 134;\n    case Provider.Transnational:\n      return 135;\n    case Provider.Trexle:\n      return 136;\n    case Provider.TrustCommerce:\n      return 137;\n    case Provider.USAePay:\n      return 138;\n    case Provider.VancoPaymentSolutions:\n      return 139;\n    case Provider.Verifi:\n      return 140;\n    case Provider.ViaKLIX:\n      return 141;\n    case Provider.WebPay:\n      return 142;\n    case Provider.WePay:\n      return 143;\n    case Provider.Wirecard:\n      return 144;\n    case Provider.WorldpayGlobal:\n      return 145;\n    case Provider.WorldpayOnline:\n      return 146;\n    case Provider.WorldpayUS:\n      return 147;\n    case Provider.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\n/** Possible payment identifiers. */\nexport enum PaymentIdType {\n  NO_IDENTIFIER_TYPE = \"NO_IDENTIFIER_TYPE\",\n  TOKEN = \"TOKEN\",\n  TRANSACTION_ID = \"TRANSACTION_ID\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function paymentIdTypeFromJSON(object: any): PaymentIdType {\n  switch (object) {\n    case 0:\n    case \"NO_IDENTIFIER_TYPE\":\n      return PaymentIdType.NO_IDENTIFIER_TYPE;\n    case 1:\n    case \"TOKEN\":\n      return PaymentIdType.TOKEN;\n    case 2:\n    case \"TRANSACTION_ID\":\n      return PaymentIdType.TRANSACTION_ID;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return PaymentIdType.UNRECOGNIZED;\n  }\n}\n\nexport function paymentIdTypeToJSON(object: PaymentIdType): string {\n  switch (object) {\n    case PaymentIdType.NO_IDENTIFIER_TYPE:\n      return \"NO_IDENTIFIER_TYPE\";\n    case PaymentIdType.TOKEN:\n      return \"TOKEN\";\n    case PaymentIdType.TRANSACTION_ID:\n      return \"TRANSACTION_ID\";\n    case PaymentIdType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function paymentIdTypeToNumber(object: PaymentIdType): number {\n  switch (object) {\n    case PaymentIdType.NO_IDENTIFIER_TYPE:\n      return 0;\n    case PaymentIdType.TOKEN:\n      return 1;\n    case PaymentIdType.TRANSACTION_ID:\n      return 2;\n    case PaymentIdType.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\n/** Request object for setup calls */\nexport interface SetupRequest {\n  ip?: string | undefined;\n  items?: Item[] | undefined;\n  subtotal?: number | undefined;\n  shipping?: number | undefined;\n  handling?: number | undefined;\n  tax?: number | undefined;\n  currency?: string | undefined;\n  returnUrl?: string | undefined;\n  cancelReturnUrl?: string | undefined;\n  allowGuestCheckout?: boolean | undefined;\n  provider?: Provider | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface SetupPayload {\n  token?: string | undefined;\n  confirmInitiationUrl?: string | undefined;\n  initiatedOn?: string | undefined;\n}\n\nexport interface SetupPayloadStatus {\n  payload?: SetupPayload | undefined;\n  status?: Status | undefined;\n}\n\n/** Response object for setup calls. */\nexport interface SetupResponse {\n  item?: SetupPayloadStatus | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\n/** Request object for authorization or purchase call for cardless payment. */\nexport interface PaymentRequest {\n  provider?: Provider | undefined;\n  paymentSum?: number | undefined;\n  currency?: string | undefined;\n  paymentId?: string | undefined;\n  payerId?: string | undefined;\n  token?: string | undefined;\n  subject?: Subject | undefined;\n}\n\n/** Request object for capture call for both standard and cardless payments. */\nexport interface CaptureRequest {\n  provider?: Provider | undefined;\n  paymentSum?: number | undefined;\n  currency?: string | undefined;\n  paymentId?: string | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface PaymentPayload {\n  paymentId?: string | undefined;\n  executedOn?: string | undefined;\n}\n\nexport interface PaymentPayloadStatus {\n  payload?: PaymentPayload | undefined;\n  status?: Status | undefined;\n}\n\n/**\n * Unified response object for authorization, purchase and capture calls\n * for both standard and cardless payments.\n */\nexport interface PaymentResponse {\n  item?: PaymentPayloadStatus | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\n/** Used for building ActiveMerchant::Billing::CreditCard instance. */\nexport interface PaymentCard {\n  primaryNumber?: string | undefined;\n  firstName?: string | undefined;\n  lastName?: string | undefined;\n  month?: string | undefined;\n  year?: number | undefined;\n  verificationValue?: string | undefined;\n}\n\n/** Represents purchased item. Not all providers support this. */\nexport interface Item {\n  name?: string | undefined;\n  description?: string | undefined;\n  quantity?: number | undefined;\n  amount?: number | undefined;\n}\n\nfunction createBaseSetupRequest(): SetupRequest {\n  return {};\n}\n\nexport const SetupRequest: MessageFns<SetupRequest> = {\n  encode(message: SetupRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.ip !== undefined) {\n      writer.uint32(10).string(message.ip);\n    }\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        Item.encode(v!, writer.uint32(18).fork()).join();\n      }\n    }\n    if (message.subtotal !== undefined) {\n      writer.uint32(24).int32(message.subtotal);\n    }\n    if (message.shipping !== undefined) {\n      writer.uint32(32).int32(message.shipping);\n    }\n    if (message.handling !== undefined) {\n      writer.uint32(40).int32(message.handling);\n    }\n    if (message.tax !== undefined) {\n      writer.uint32(48).int32(message.tax);\n    }\n    if (message.currency !== undefined) {\n      writer.uint32(58).string(message.currency);\n    }\n    if (message.returnUrl !== undefined) {\n      writer.uint32(66).string(message.returnUrl);\n    }\n    if (message.cancelReturnUrl !== undefined) {\n      writer.uint32(74).string(message.cancelReturnUrl);\n    }\n    if (message.allowGuestCheckout !== undefined) {\n      writer.uint32(80).bool(message.allowGuestCheckout);\n    }\n    if (message.provider !== undefined) {\n      writer.uint32(88).int32(providerToNumber(message.provider));\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(98).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): SetupRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseSetupRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.ip = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = Item.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.subtotal = reader.int32();\n          continue;\n        }\n        case 4: {\n          if (tag !== 32) {\n            break;\n          }\n\n          message.shipping = reader.int32();\n          continue;\n        }\n        case 5: {\n          if (tag !== 40) {\n            break;\n          }\n\n          message.handling = reader.int32();\n          continue;\n        }\n        case 6: {\n          if (tag !== 48) {\n            break;\n          }\n\n          message.tax = reader.int32();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.currency = reader.string();\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.returnUrl = reader.string();\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.cancelReturnUrl = reader.string();\n          continue;\n        }\n        case 10: {\n          if (tag !== 80) {\n            break;\n          }\n\n          message.allowGuestCheckout = reader.bool();\n          continue;\n        }\n        case 11: {\n          if (tag !== 88) {\n            break;\n          }\n\n          message.provider = providerFromJSON(reader.int32());\n          continue;\n        }\n        case 12: {\n          if (tag !== 98) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): SetupRequest {\n    return {\n      ip: isSet(object.ip) ? globalThis.String(object.ip) : undefined,\n      items: globalThis.Array.isArray(object?.items) ? object.items.map((e: any) => Item.fromJSON(e)) : undefined,\n      subtotal: isSet(object.subtotal) ? globalThis.Number(object.subtotal) : undefined,\n      shipping: isSet(object.shipping) ? globalThis.Number(object.shipping) : undefined,\n      handling: isSet(object.handling) ? globalThis.Number(object.handling) : undefined,\n      tax: isSet(object.tax) ? globalThis.Number(object.tax) : undefined,\n      currency: isSet(object.currency) ? globalThis.String(object.currency) : undefined,\n      returnUrl: isSet(object.returnUrl) ? globalThis.String(object.returnUrl) : undefined,\n      cancelReturnUrl: isSet(object.cancelReturnUrl) ? globalThis.String(object.cancelReturnUrl) : undefined,\n      allowGuestCheckout: isSet(object.allowGuestCheckout) ? globalThis.Boolean(object.allowGuestCheckout) : undefined,\n      provider: isSet(object.provider) ? providerFromJSON(object.provider) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: SetupRequest): unknown {\n    const obj: any = {};\n    if (message.ip !== undefined) {\n      obj.ip = message.ip;\n    }\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => Item.toJSON(e));\n    }\n    if (message.subtotal !== undefined) {\n      obj.subtotal = Math.round(message.subtotal);\n    }\n    if (message.shipping !== undefined) {\n      obj.shipping = Math.round(message.shipping);\n    }\n    if (message.handling !== undefined) {\n      obj.handling = Math.round(message.handling);\n    }\n    if (message.tax !== undefined) {\n      obj.tax = Math.round(message.tax);\n    }\n    if (message.currency !== undefined) {\n      obj.currency = message.currency;\n    }\n    if (message.returnUrl !== undefined) {\n      obj.returnUrl = message.returnUrl;\n    }\n    if (message.cancelReturnUrl !== undefined) {\n      obj.cancelReturnUrl = message.cancelReturnUrl;\n    }\n    if (message.allowGuestCheckout !== undefined) {\n      obj.allowGuestCheckout = message.allowGuestCheckout;\n    }\n    if (message.provider !== undefined) {\n      obj.provider = providerToJSON(message.provider);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<SetupRequest>): SetupRequest {\n    return SetupRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<SetupRequest>): SetupRequest {\n    const message = createBaseSetupRequest();\n    message.ip = object.ip ?? undefined;\n    message.items = object.items?.map((e) => Item.fromPartial(e)) || undefined;\n    message.subtotal = object.subtotal ?? undefined;\n    message.shipping = object.shipping ?? undefined;\n    message.handling = object.handling ?? undefined;\n    message.tax = object.tax ?? undefined;\n    message.currency = object.currency ?? undefined;\n    message.returnUrl = object.returnUrl ?? undefined;\n    message.cancelReturnUrl = object.cancelReturnUrl ?? undefined;\n    message.allowGuestCheckout = object.allowGuestCheckout ?? undefined;\n    message.provider = object.provider ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseSetupPayload(): SetupPayload {\n  return {};\n}\n\nexport const SetupPayload: MessageFns<SetupPayload> = {\n  encode(message: SetupPayload, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.token !== undefined) {\n      writer.uint32(10).string(message.token);\n    }\n    if (message.confirmInitiationUrl !== undefined) {\n      writer.uint32(18).string(message.confirmInitiationUrl);\n    }\n    if (message.initiatedOn !== undefined) {\n      writer.uint32(26).string(message.initiatedOn);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): SetupPayload {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseSetupPayload();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.token = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.confirmInitiationUrl = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.initiatedOn = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): SetupPayload {\n    return {\n      token: isSet(object.token) ? globalThis.String(object.token) : undefined,\n      confirmInitiationUrl: isSet(object.confirmInitiationUrl)\n        ? globalThis.String(object.confirmInitiationUrl)\n        : undefined,\n      initiatedOn: isSet(object.initiatedOn) ? globalThis.String(object.initiatedOn) : undefined,\n    };\n  },\n\n  toJSON(message: SetupPayload): unknown {\n    const obj: any = {};\n    if (message.token !== undefined) {\n      obj.token = message.token;\n    }\n    if (message.confirmInitiationUrl !== undefined) {\n      obj.confirmInitiationUrl = message.confirmInitiationUrl;\n    }\n    if (message.initiatedOn !== undefined) {\n      obj.initiatedOn = message.initiatedOn;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<SetupPayload>): SetupPayload {\n    return SetupPayload.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<SetupPayload>): SetupPayload {\n    const message = createBaseSetupPayload();\n    message.token = object.token ?? undefined;\n    message.confirmInitiationUrl = object.confirmInitiationUrl ?? undefined;\n    message.initiatedOn = object.initiatedOn ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseSetupPayloadStatus(): SetupPayloadStatus {\n  return {};\n}\n\nexport const SetupPayloadStatus: MessageFns<SetupPayloadStatus> = {\n  encode(message: SetupPayloadStatus, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      SetupPayload.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): SetupPayloadStatus {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseSetupPayloadStatus();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = SetupPayload.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): SetupPayloadStatus {\n    return {\n      payload: isSet(object.payload) ? SetupPayload.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: SetupPayloadStatus): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = SetupPayload.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<SetupPayloadStatus>): SetupPayloadStatus {\n    return SetupPayloadStatus.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<SetupPayloadStatus>): SetupPayloadStatus {\n    const message = createBaseSetupPayloadStatus();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? SetupPayload.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseSetupResponse(): SetupResponse {\n  return {};\n}\n\nexport const SetupResponse: MessageFns<SetupResponse> = {\n  encode(message: SetupResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.item !== undefined) {\n      SetupPayloadStatus.encode(message.item, writer.uint32(10).fork()).join();\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): SetupResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseSetupResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.item = SetupPayloadStatus.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): SetupResponse {\n    return {\n      item: isSet(object.item) ? SetupPayloadStatus.fromJSON(object.item) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: SetupResponse): unknown {\n    const obj: any = {};\n    if (message.item !== undefined) {\n      obj.item = SetupPayloadStatus.toJSON(message.item);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<SetupResponse>): SetupResponse {\n    return SetupResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<SetupResponse>): SetupResponse {\n    const message = createBaseSetupResponse();\n    message.item = (object.item !== undefined && object.item !== null)\n      ? SetupPayloadStatus.fromPartial(object.item)\n      : undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBasePaymentRequest(): PaymentRequest {\n  return {};\n}\n\nexport const PaymentRequest: MessageFns<PaymentRequest> = {\n  encode(message: PaymentRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.provider !== undefined) {\n      writer.uint32(8).int32(providerToNumber(message.provider));\n    }\n    if (message.paymentSum !== undefined) {\n      writer.uint32(16).int32(message.paymentSum);\n    }\n    if (message.currency !== undefined) {\n      writer.uint32(26).string(message.currency);\n    }\n    if (message.paymentId !== undefined) {\n      writer.uint32(34).string(message.paymentId);\n    }\n    if (message.payerId !== undefined) {\n      writer.uint32(42).string(message.payerId);\n    }\n    if (message.token !== undefined) {\n      writer.uint32(50).string(message.token);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(58).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PaymentRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePaymentRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.provider = providerFromJSON(reader.int32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.paymentSum = reader.int32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.currency = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.paymentId = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.payerId = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.token = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PaymentRequest {\n    return {\n      provider: isSet(object.provider) ? providerFromJSON(object.provider) : undefined,\n      paymentSum: isSet(object.paymentSum) ? globalThis.Number(object.paymentSum) : undefined,\n      currency: isSet(object.currency) ? globalThis.String(object.currency) : undefined,\n      paymentId: isSet(object.paymentId) ? globalThis.String(object.paymentId) : undefined,\n      payerId: isSet(object.payerId) ? globalThis.String(object.payerId) : undefined,\n      token: isSet(object.token) ? globalThis.String(object.token) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: PaymentRequest): unknown {\n    const obj: any = {};\n    if (message.provider !== undefined) {\n      obj.provider = providerToJSON(message.provider);\n    }\n    if (message.paymentSum !== undefined) {\n      obj.paymentSum = Math.round(message.paymentSum);\n    }\n    if (message.currency !== undefined) {\n      obj.currency = message.currency;\n    }\n    if (message.paymentId !== undefined) {\n      obj.paymentId = message.paymentId;\n    }\n    if (message.payerId !== undefined) {\n      obj.payerId = message.payerId;\n    }\n    if (message.token !== undefined) {\n      obj.token = message.token;\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PaymentRequest>): PaymentRequest {\n    return PaymentRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PaymentRequest>): PaymentRequest {\n    const message = createBasePaymentRequest();\n    message.provider = object.provider ?? undefined;\n    message.paymentSum = object.paymentSum ?? undefined;\n    message.currency = object.currency ?? undefined;\n    message.paymentId = object.paymentId ?? undefined;\n    message.payerId = object.payerId ?? undefined;\n    message.token = object.token ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseCaptureRequest(): CaptureRequest {\n  return {};\n}\n\nexport const CaptureRequest: MessageFns<CaptureRequest> = {\n  encode(message: CaptureRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.provider !== undefined) {\n      writer.uint32(8).int32(providerToNumber(message.provider));\n    }\n    if (message.paymentSum !== undefined) {\n      writer.uint32(16).int32(message.paymentSum);\n    }\n    if (message.currency !== undefined) {\n      writer.uint32(26).string(message.currency);\n    }\n    if (message.paymentId !== undefined) {\n      writer.uint32(34).string(message.paymentId);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(42).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CaptureRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCaptureRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.provider = providerFromJSON(reader.int32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.paymentSum = reader.int32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.currency = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.paymentId = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CaptureRequest {\n    return {\n      provider: isSet(object.provider) ? providerFromJSON(object.provider) : undefined,\n      paymentSum: isSet(object.paymentSum) ? globalThis.Number(object.paymentSum) : undefined,\n      currency: isSet(object.currency) ? globalThis.String(object.currency) : undefined,\n      paymentId: isSet(object.paymentId) ? globalThis.String(object.paymentId) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: CaptureRequest): unknown {\n    const obj: any = {};\n    if (message.provider !== undefined) {\n      obj.provider = providerToJSON(message.provider);\n    }\n    if (message.paymentSum !== undefined) {\n      obj.paymentSum = Math.round(message.paymentSum);\n    }\n    if (message.currency !== undefined) {\n      obj.currency = message.currency;\n    }\n    if (message.paymentId !== undefined) {\n      obj.paymentId = message.paymentId;\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CaptureRequest>): CaptureRequest {\n    return CaptureRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CaptureRequest>): CaptureRequest {\n    const message = createBaseCaptureRequest();\n    message.provider = object.provider ?? undefined;\n    message.paymentSum = object.paymentSum ?? undefined;\n    message.currency = object.currency ?? undefined;\n    message.paymentId = object.paymentId ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBasePaymentPayload(): PaymentPayload {\n  return {};\n}\n\nexport const PaymentPayload: MessageFns<PaymentPayload> = {\n  encode(message: PaymentPayload, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.paymentId !== undefined) {\n      writer.uint32(10).string(message.paymentId);\n    }\n    if (message.executedOn !== undefined) {\n      writer.uint32(18).string(message.executedOn);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PaymentPayload {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePaymentPayload();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.paymentId = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.executedOn = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PaymentPayload {\n    return {\n      paymentId: isSet(object.paymentId) ? globalThis.String(object.paymentId) : undefined,\n      executedOn: isSet(object.executedOn) ? globalThis.String(object.executedOn) : undefined,\n    };\n  },\n\n  toJSON(message: PaymentPayload): unknown {\n    const obj: any = {};\n    if (message.paymentId !== undefined) {\n      obj.paymentId = message.paymentId;\n    }\n    if (message.executedOn !== undefined) {\n      obj.executedOn = message.executedOn;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PaymentPayload>): PaymentPayload {\n    return PaymentPayload.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PaymentPayload>): PaymentPayload {\n    const message = createBasePaymentPayload();\n    message.paymentId = object.paymentId ?? undefined;\n    message.executedOn = object.executedOn ?? undefined;\n    return message;\n  },\n};\n\nfunction createBasePaymentPayloadStatus(): PaymentPayloadStatus {\n  return {};\n}\n\nexport const PaymentPayloadStatus: MessageFns<PaymentPayloadStatus> = {\n  encode(message: PaymentPayloadStatus, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      PaymentPayload.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PaymentPayloadStatus {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePaymentPayloadStatus();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = PaymentPayload.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PaymentPayloadStatus {\n    return {\n      payload: isSet(object.payload) ? PaymentPayload.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: PaymentPayloadStatus): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = PaymentPayload.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PaymentPayloadStatus>): PaymentPayloadStatus {\n    return PaymentPayloadStatus.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PaymentPayloadStatus>): PaymentPayloadStatus {\n    const message = createBasePaymentPayloadStatus();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? PaymentPayload.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBasePaymentResponse(): PaymentResponse {\n  return {};\n}\n\nexport const PaymentResponse: MessageFns<PaymentResponse> = {\n  encode(message: PaymentResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.item !== undefined) {\n      PaymentPayloadStatus.encode(message.item, writer.uint32(10).fork()).join();\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PaymentResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePaymentResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.item = PaymentPayloadStatus.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PaymentResponse {\n    return {\n      item: isSet(object.item) ? PaymentPayloadStatus.fromJSON(object.item) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: PaymentResponse): unknown {\n    const obj: any = {};\n    if (message.item !== undefined) {\n      obj.item = PaymentPayloadStatus.toJSON(message.item);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PaymentResponse>): PaymentResponse {\n    return PaymentResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PaymentResponse>): PaymentResponse {\n    const message = createBasePaymentResponse();\n    message.item = (object.item !== undefined && object.item !== null)\n      ? PaymentPayloadStatus.fromPartial(object.item)\n      : undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBasePaymentCard(): PaymentCard {\n  return {};\n}\n\nexport const PaymentCard: MessageFns<PaymentCard> = {\n  encode(message: PaymentCard, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.primaryNumber !== undefined) {\n      writer.uint32(10).string(message.primaryNumber);\n    }\n    if (message.firstName !== undefined) {\n      writer.uint32(18).string(message.firstName);\n    }\n    if (message.lastName !== undefined) {\n      writer.uint32(26).string(message.lastName);\n    }\n    if (message.month !== undefined) {\n      writer.uint32(34).string(message.month);\n    }\n    if (message.year !== undefined) {\n      writer.uint32(40).int32(message.year);\n    }\n    if (message.verificationValue !== undefined) {\n      writer.uint32(50).string(message.verificationValue);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PaymentCard {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePaymentCard();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.primaryNumber = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.firstName = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.lastName = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.month = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 40) {\n            break;\n          }\n\n          message.year = reader.int32();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.verificationValue = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PaymentCard {\n    return {\n      primaryNumber: isSet(object.primaryNumber) ? globalThis.String(object.primaryNumber) : undefined,\n      firstName: isSet(object.firstName) ? globalThis.String(object.firstName) : undefined,\n      lastName: isSet(object.lastName) ? globalThis.String(object.lastName) : undefined,\n      month: isSet(object.month) ? globalThis.String(object.month) : undefined,\n      year: isSet(object.year) ? globalThis.Number(object.year) : undefined,\n      verificationValue: isSet(object.verificationValue) ? globalThis.String(object.verificationValue) : undefined,\n    };\n  },\n\n  toJSON(message: PaymentCard): unknown {\n    const obj: any = {};\n    if (message.primaryNumber !== undefined) {\n      obj.primaryNumber = message.primaryNumber;\n    }\n    if (message.firstName !== undefined) {\n      obj.firstName = message.firstName;\n    }\n    if (message.lastName !== undefined) {\n      obj.lastName = message.lastName;\n    }\n    if (message.month !== undefined) {\n      obj.month = message.month;\n    }\n    if (message.year !== undefined) {\n      obj.year = Math.round(message.year);\n    }\n    if (message.verificationValue !== undefined) {\n      obj.verificationValue = message.verificationValue;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PaymentCard>): PaymentCard {\n    return PaymentCard.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PaymentCard>): PaymentCard {\n    const message = createBasePaymentCard();\n    message.primaryNumber = object.primaryNumber ?? undefined;\n    message.firstName = object.firstName ?? undefined;\n    message.lastName = object.lastName ?? undefined;\n    message.month = object.month ?? undefined;\n    message.year = object.year ?? undefined;\n    message.verificationValue = object.verificationValue ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseItem(): Item {\n  return {};\n}\n\nexport const Item: MessageFns<Item> = {\n  encode(message: Item, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.name !== undefined) {\n      writer.uint32(10).string(message.name);\n    }\n    if (message.description !== undefined) {\n      writer.uint32(18).string(message.description);\n    }\n    if (message.quantity !== undefined) {\n      writer.uint32(24).int32(message.quantity);\n    }\n    if (message.amount !== undefined) {\n      writer.uint32(32).int32(message.amount);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Item {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseItem();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.quantity = reader.int32();\n          continue;\n        }\n        case 4: {\n          if (tag !== 32) {\n            break;\n          }\n\n          message.amount = reader.int32();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Item {\n    return {\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      description: isSet(object.description) ? globalThis.String(object.description) : undefined,\n      quantity: isSet(object.quantity) ? globalThis.Number(object.quantity) : undefined,\n      amount: isSet(object.amount) ? globalThis.Number(object.amount) : undefined,\n    };\n  },\n\n  toJSON(message: Item): unknown {\n    const obj: any = {};\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.description !== undefined) {\n      obj.description = message.description;\n    }\n    if (message.quantity !== undefined) {\n      obj.quantity = Math.round(message.quantity);\n    }\n    if (message.amount !== undefined) {\n      obj.amount = Math.round(message.amount);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Item>): Item {\n    return Item.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Item>): Item {\n    const message = createBaseItem();\n    message.name = object.name ?? undefined;\n    message.description = object.description ?? undefined;\n    message.quantity = object.quantity ?? undefined;\n    message.amount = object.amount ?? undefined;\n    return message;\n  },\n};\n\nexport type PaymentServiceDefinition = typeof PaymentServiceDefinition;\nexport const PaymentServiceDefinition = {\n  name: \"PaymentService\",\n  fullName: \"io.restorecommerce.payment.PaymentService\",\n  methods: {\n    /** Wrapper for setup_authorization in ActiveMerchant */\n    setupAuthorization: {\n      name: \"SetupAuthorization\",\n      requestType: SetupRequest,\n      requestStream: false,\n      responseType: SetupResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Wrapper for setup_purchase in ActiveMerchant */\n    setupPurchase: {\n      name: \"SetupPurchase\",\n      requestType: SetupRequest,\n      requestStream: false,\n      responseType: SetupResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Gets payment details by token or transaction. Only supported by PayPal Express Checkout. */\n    authorize: {\n      name: \"Authorize\",\n      requestType: PaymentRequest,\n      requestStream: false,\n      responseType: PaymentResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Gets payment details by token or transaction. Only supported by PayPal Express Checkout. */\n    purchase: {\n      name: \"Purchase\",\n      requestType: PaymentRequest,\n      requestStream: false,\n      responseType: PaymentResponse,\n      responseStream: false,\n      options: {},\n    },\n    /** Can capture both cardless and standard authorization. */\n    capture: {\n      name: \"Capture\",\n      requestType: CaptureRequest,\n      requestStream: false,\n      responseType: PaymentResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface PaymentServiceImplementation<CallContextExt = {}> {\n  /** Wrapper for setup_authorization in ActiveMerchant */\n  setupAuthorization(request: SetupRequest, context: CallContext & CallContextExt): Promise<DeepPartial<SetupResponse>>;\n  /** Wrapper for setup_purchase in ActiveMerchant */\n  setupPurchase(request: SetupRequest, context: CallContext & CallContextExt): Promise<DeepPartial<SetupResponse>>;\n  /** Gets payment details by token or transaction. Only supported by PayPal Express Checkout. */\n  authorize(request: PaymentRequest, context: CallContext & CallContextExt): Promise<DeepPartial<PaymentResponse>>;\n  /** Gets payment details by token or transaction. Only supported by PayPal Express Checkout. */\n  purchase(request: PaymentRequest, context: CallContext & CallContextExt): Promise<DeepPartial<PaymentResponse>>;\n  /** Can capture both cardless and standard authorization. */\n  capture(request: CaptureRequest, context: CallContext & CallContextExt): Promise<DeepPartial<PaymentResponse>>;\n}\n\nexport interface PaymentServiceClient<CallOptionsExt = {}> {\n  /** Wrapper for setup_authorization in ActiveMerchant */\n  setupAuthorization(\n    request: DeepPartial<SetupRequest>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<SetupResponse>;\n  /** Wrapper for setup_purchase in ActiveMerchant */\n  setupPurchase(request: DeepPartial<SetupRequest>, options?: CallOptions & CallOptionsExt): Promise<SetupResponse>;\n  /** Gets payment details by token or transaction. Only supported by PayPal Express Checkout. */\n  authorize(request: DeepPartial<PaymentRequest>, options?: CallOptions & CallOptionsExt): Promise<PaymentResponse>;\n  /** Gets payment details by token or transaction. Only supported by PayPal Express Checkout. */\n  purchase(request: DeepPartial<PaymentRequest>, options?: CallOptions & CallOptionsExt): Promise<PaymentResponse>;\n  /** Can capture both cardless and standard authorization. */\n  capture(request: DeepPartial<CaptureRequest>, options?: CallOptions & CallOptionsExt): Promise<PaymentResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/payment.proto\",\n    \"package\": \"io.restorecommerce.payment\",\n    \"dependency\": [\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/options.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"SetupRequest\",\n      \"field\": [{\n        \"name\": \"ip\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"ip\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"items\",\n        \"number\": 2,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.payment.Item\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"subtotal\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 5,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subtotal\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"shipping\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 5,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"shipping\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"handling\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 5,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"handling\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"tax\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 5,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"tax\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"currency\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"currency\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"return_url\",\n        \"number\": 8,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"returnUrl\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"cancel_return_url\",\n        \"number\": 9,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 7,\n        \"jsonName\": \"cancelReturnUrl\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"allow_guest_checkout\",\n        \"number\": 10,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 8,\n        \"jsonName\": \"allowGuestCheckout\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"provider\",\n        \"number\": 11,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".io.restorecommerce.payment.Provider\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 9,\n        \"jsonName\": \"provider\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 12,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 10,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_ip\", \"options\": undefined },\n        { \"name\": \"_subtotal\", \"options\": undefined },\n        { \"name\": \"_shipping\", \"options\": undefined },\n        { \"name\": \"_handling\", \"options\": undefined },\n        { \"name\": \"_tax\", \"options\": undefined },\n        { \"name\": \"_currency\", \"options\": undefined },\n        { \"name\": \"_return_url\", \"options\": undefined },\n        { \"name\": \"_cancel_return_url\", \"options\": undefined },\n        { \"name\": \"_allow_guest_checkout\", \"options\": undefined },\n        { \"name\": \"_provider\", \"options\": undefined },\n        { \"name\": \"_subject\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"SetupPayload\",\n      \"field\": [{\n        \"name\": \"token\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"token\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"confirm_initiation_url\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"confirmInitiationUrl\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"initiated_on\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"initiatedOn\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_token\", \"options\": undefined }, {\n        \"name\": \"_confirm_initiation_url\",\n        \"options\": undefined,\n      }, { \"name\": \"_initiated_on\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"SetupPayloadStatus\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.payment.SetupPayload\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"SetupResponse\",\n      \"field\": [{\n        \"name\": \"item\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.payment.SetupPayloadStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"item\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_item\", \"options\": undefined }, { \"name\": \"_operation_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"PaymentRequest\",\n      \"field\": [{\n        \"name\": \"provider\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".io.restorecommerce.payment.Provider\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"provider\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"payment_sum\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 5,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"paymentSum\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"currency\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"currency\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"payment_id\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"paymentId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"payer_id\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"payerId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"token\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"token\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_provider\", \"options\": undefined },\n        { \"name\": \"_payment_sum\", \"options\": undefined },\n        { \"name\": \"_currency\", \"options\": undefined },\n        { \"name\": \"_payment_id\", \"options\": undefined },\n        { \"name\": \"_payer_id\", \"options\": undefined },\n        { \"name\": \"_token\", \"options\": undefined },\n        { \"name\": \"_subject\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"CaptureRequest\",\n      \"field\": [{\n        \"name\": \"provider\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".io.restorecommerce.payment.Provider\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"provider\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"payment_sum\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 5,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"paymentSum\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"currency\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"currency\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"payment_id\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"paymentId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_provider\", \"options\": undefined },\n        { \"name\": \"_payment_sum\", \"options\": undefined },\n        { \"name\": \"_currency\", \"options\": undefined },\n        { \"name\": \"_payment_id\", \"options\": undefined },\n        { \"name\": \"_subject\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"PaymentPayload\",\n      \"field\": [{\n        \"name\": \"payment_id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"paymentId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"executed_on\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"executedOn\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payment_id\", \"options\": undefined }, { \"name\": \"_executed_on\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"PaymentPayloadStatus\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.payment.PaymentPayload\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"PaymentResponse\",\n      \"field\": [{\n        \"name\": \"item\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.payment.PaymentPayloadStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"item\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_item\", \"options\": undefined }, { \"name\": \"_operation_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"PaymentCard\",\n      \"field\": [{\n        \"name\": \"primary_number\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"primaryNumber\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"first_name\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"firstName\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"last_name\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"lastName\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"month\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"month\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"year\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 5,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"year\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"verification_value\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"verificationValue\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_primary_number\", \"options\": undefined },\n        { \"name\": \"_first_name\", \"options\": undefined },\n        { \"name\": \"_last_name\", \"options\": undefined },\n        { \"name\": \"_month\", \"options\": undefined },\n        { \"name\": \"_year\", \"options\": undefined },\n        { \"name\": \"_verification_value\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Item\",\n      \"field\": [{\n        \"name\": \"name\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"description\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"description\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"quantity\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 5,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"quantity\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"amount\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 5,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"amount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_name\", \"options\": undefined }, { \"name\": \"_description\", \"options\": undefined }, {\n        \"name\": \"_quantity\",\n        \"options\": undefined,\n      }, { \"name\": \"_amount\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [{\n      \"name\": \"Provider\",\n      \"value\": [\n        { \"name\": \"NO_PROVIDER\", \"number\": 0, \"options\": undefined },\n        { \"name\": \"Adyen\", \"number\": 1, \"options\": undefined },\n        { \"name\": \"AuthorizeNetCIM\", \"number\": 2, \"options\": undefined },\n        { \"name\": \"AuthorizeNet\", \"number\": 3, \"options\": undefined },\n        { \"name\": \"AxcessMS\", \"number\": 4, \"options\": undefined },\n        { \"name\": \"Balanced\", \"number\": 5, \"options\": undefined },\n        { \"name\": \"BamboraAsiaPacific\", \"number\": 6, \"options\": undefined },\n        { \"name\": \"BankFrick\", \"number\": 7, \"options\": undefined },\n        { \"name\": \"Banwire\", \"number\": 8, \"options\": undefined },\n        { \"name\": \"BarclaysePDQExtraPlus\", \"number\": 9, \"options\": undefined },\n        { \"name\": \"Be2Bill\", \"number\": 10, \"options\": undefined },\n        { \"name\": \"Beanstreamcom\", \"number\": 11, \"options\": undefined },\n        { \"name\": \"BluePay\", \"number\": 12, \"options\": undefined },\n        { \"name\": \"Borgun\", \"number\": 13, \"options\": undefined },\n        { \"name\": \"Braintree\", \"number\": 14, \"options\": undefined },\n        { \"name\": \"BridgePay\", \"number\": 15, \"options\": undefined },\n        { \"name\": \"Cardknox\", \"number\": 16, \"options\": undefined },\n        { \"name\": \"CardSave\", \"number\": 17, \"options\": undefined },\n        { \"name\": \"CardStream\", \"number\": 18, \"options\": undefined },\n        { \"name\": \"Cashnet\", \"number\": 19, \"options\": undefined },\n        { \"name\": \"Cecabank\", \"number\": 20, \"options\": undefined },\n        { \"name\": \"Cenpos\", \"number\": 21, \"options\": undefined },\n        { \"name\": \"CAMSCentralAccountManagementSystem\", \"number\": 22, \"options\": undefined },\n        { \"name\": \"Checkoutcom\", \"number\": 23, \"options\": undefined },\n        { \"name\": \"Clearhaus\", \"number\": 24, \"options\": undefined },\n        { \"name\": \"Commercegate\", \"number\": 25, \"options\": undefined },\n        { \"name\": \"Conekta\", \"number\": 26, \"options\": undefined },\n        { \"name\": \"CyberSource\", \"number\": 27, \"options\": undefined },\n        { \"name\": \"DIBS\", \"number\": 28, \"options\": undefined },\n        { \"name\": \"DataCash\", \"number\": 29, \"options\": undefined },\n        { \"name\": \"Efsnet\", \"number\": 30, \"options\": undefined },\n        { \"name\": \"ElavonMyVirtualMerchant\", \"number\": 31, \"options\": undefined },\n        { \"name\": \"ePay\", \"number\": 32, \"options\": undefined },\n        { \"name\": \"EVOCanada\", \"number\": 33, \"options\": undefined },\n        { \"name\": \"eWAY\", \"number\": 34, \"options\": undefined },\n        { \"name\": \"eWAYRapid\", \"number\": 35, \"options\": undefined },\n        { \"name\": \"Exact\", \"number\": 36, \"options\": undefined },\n        { \"name\": \"Ezic\", \"number\": 37, \"options\": undefined },\n        { \"name\": \"FatZebra\", \"number\": 38, \"options\": undefined },\n        { \"name\": \"FederatedCanada\", \"number\": 39, \"options\": undefined },\n        { \"name\": \"FinansbankWebPOS\", \"number\": 40, \"options\": undefined },\n        { \"name\": \"Flo2Cash\", \"number\": 41, \"options\": undefined },\n        { \"name\": \"stPayGatewayNet\", \"number\": 42, \"options\": undefined },\n        { \"name\": \"FirstDataGlobalGatewaye4\", \"number\": 43, \"options\": undefined },\n        { \"name\": \"FirstGiving\", \"number\": 44, \"options\": undefined },\n        { \"name\": \"GarantiSanalPOS\", \"number\": 45, \"options\": undefined },\n        { \"name\": \"GlobalTransport\", \"number\": 46, \"options\": undefined },\n        { \"name\": \"HDFC\", \"number\": 47, \"options\": undefined },\n        { \"name\": \"HeartlandPaymentSystems\", \"number\": 48, \"options\": undefined },\n        { \"name\": \"iATSPayments\", \"number\": 49, \"options\": undefined },\n        { \"name\": \"InspireCommerce\", \"number\": 50, \"options\": undefined },\n        { \"name\": \"InstaPay\", \"number\": 51, \"options\": undefined },\n        { \"name\": \"IPP\", \"number\": 52, \"options\": undefined },\n        { \"name\": \"Iridium\", \"number\": 53, \"options\": undefined },\n        { \"name\": \"iTransact\", \"number\": 54, \"options\": undefined },\n        { \"name\": \"JetPay\", \"number\": 55, \"options\": undefined },\n        { \"name\": \"Komoju\", \"number\": 56, \"options\": undefined },\n        { \"name\": \"LinkPoint\", \"number\": 57, \"options\": undefined },\n        { \"name\": \"LitleCo\", \"number\": 58, \"options\": undefined },\n        { \"name\": \"maxiPago\", \"number\": 59, \"options\": undefined },\n        { \"name\": \"MerchanteSolutions\", \"number\": 60, \"options\": undefined },\n        { \"name\": \"MerchantOneGateway\", \"number\": 61, \"options\": undefined },\n        { \"name\": \"MerchantWARE\", \"number\": 62, \"options\": undefined },\n        { \"name\": \"MerchantWarrior\", \"number\": 63, \"options\": undefined },\n        { \"name\": \"Mercury\", \"number\": 64, \"options\": undefined },\n        { \"name\": \"MetricsGlobal\", \"number\": 65, \"options\": undefined },\n        { \"name\": \"MasterCardInternetGatewayServiceMiGS\", \"number\": 66, \"options\": undefined },\n        { \"name\": \"ModernPayments\", \"number\": 67, \"options\": undefined },\n        { \"name\": \"MONEI\", \"number\": 68, \"options\": undefined },\n        { \"name\": \"Moneris\", \"number\": 69, \"options\": undefined },\n        { \"name\": \"MoneyMovers\", \"number\": 70, \"options\": undefined },\n        { \"name\": \"NABTransact\", \"number\": 71, \"options\": undefined },\n        { \"name\": \"NELiXTransaX\", \"number\": 72, \"options\": undefined },\n        { \"name\": \"NetRegistry\", \"number\": 73, \"options\": undefined },\n        { \"name\": \"BBSNetaxept\", \"number\": 74, \"options\": undefined },\n        { \"name\": \"NETbilling\", \"number\": 75, \"options\": undefined },\n        { \"name\": \"NETPAYGateway\", \"number\": 76, \"options\": undefined },\n        { \"name\": \"NMI\", \"number\": 77, \"options\": undefined },\n        { \"name\": \"Ogone\", \"number\": 78, \"options\": undefined },\n        { \"name\": \"Omise\", \"number\": 79, \"options\": undefined },\n        { \"name\": \"Openpay\", \"number\": 80, \"options\": undefined },\n        { \"name\": \"OptimalPayments\", \"number\": 81, \"options\": undefined },\n        { \"name\": \"OrbitalPaymentech\", \"number\": 82, \"options\": undefined },\n        { \"name\": \"Pagarme\", \"number\": 83, \"options\": undefined },\n        { \"name\": \"PagoFacil\", \"number\": 84, \"options\": undefined },\n        { \"name\": \"PayConex\", \"number\": 85, \"options\": undefined },\n        { \"name\": \"PayGatePayXML\", \"number\": 86, \"options\": undefined },\n        { \"name\": \"PayHub\", \"number\": 87, \"options\": undefined },\n        { \"name\": \"PayJunction\", \"number\": 89, \"options\": undefined },\n        { \"name\": \"PaySecure\", \"number\": 90, \"options\": undefined },\n        { \"name\": \"PayboxDirect\", \"number\": 91, \"options\": undefined },\n        { \"name\": \"Payeezy\", \"number\": 92, \"options\": undefined },\n        { \"name\": \"Payex\", \"number\": 93, \"options\": undefined },\n        { \"name\": \"PaymentExpress\", \"number\": 94, \"options\": undefined },\n        { \"name\": \"PAYMILL\", \"number\": 95, \"options\": undefined },\n        { \"name\": \"PayPalExpressCheckout\", \"number\": 96, \"options\": undefined },\n        { \"name\": \"PayPalExpressCheckoutUK\", \"number\": 97, \"options\": undefined },\n        { \"name\": \"PayPalPayflowPro\", \"number\": 98, \"options\": undefined },\n        { \"name\": \"PayPalPaymentsProUS\", \"number\": 99, \"options\": undefined },\n        { \"name\": \"PayPalPaymentsProUK\", \"number\": 100, \"options\": undefined },\n        { \"name\": \"PayPalWebsitePaymentsProCA\", \"number\": 101, \"options\": undefined },\n        { \"name\": \"PayPalExpressCheckoutforDigitalGoods\", \"number\": 102, \"options\": undefined },\n        { \"name\": \"Payscout\", \"number\": 103, \"options\": undefined },\n        { \"name\": \"Paystation\", \"number\": 104, \"options\": undefined },\n        { \"name\": \"PayWay\", \"number\": 105, \"options\": undefined },\n        { \"name\": \"PayUIndia\", \"number\": 106, \"options\": undefined },\n        { \"name\": \"PinPayments\", \"number\": 107, \"options\": undefined },\n        { \"name\": \"PlugnPay\", \"number\": 108, \"options\": undefined },\n        { \"name\": \"Psigate\", \"number\": 109, \"options\": undefined },\n        { \"name\": \"PSLPaymentSolutions\", \"number\": 110, \"options\": undefined },\n        { \"name\": \"QuickBooksMerchantServices\", \"number\": 111, \"options\": undefined },\n        { \"name\": \"QuickBooksPayments\", \"number\": 112, \"options\": undefined },\n        { \"name\": \"QuantumGateway\", \"number\": 113, \"options\": undefined },\n        { \"name\": \"QuickPay\", \"number\": 114, \"options\": undefined },\n        { \"name\": \"Qvalent\", \"number\": 115, \"options\": undefined },\n        { \"name\": \"Raven\", \"number\": 116, \"options\": undefined },\n        { \"name\": \"Realex\", \"number\": 117, \"options\": undefined },\n        { \"name\": \"Redsys\", \"number\": 118, \"options\": undefined },\n        { \"name\": \"S5\", \"number\": 119, \"options\": undefined },\n        { \"name\": \"SagePay\", \"number\": 120, \"options\": undefined },\n        { \"name\": \"SagePaymentSolutions\", \"number\": 121, \"options\": undefined },\n        { \"name\": \"SallieMae\", \"number\": 122, \"options\": undefined },\n        { \"name\": \"SecureNet\", \"number\": 123, \"options\": undefined },\n        { \"name\": \"SecurePay\", \"number\": 124, \"options\": undefined },\n        { \"name\": \"SecurePayTech\", \"number\": 125, \"options\": undefined },\n        { \"name\": \"SecurionPay\", \"number\": 126, \"options\": undefined },\n        { \"name\": \"SkipJack\", \"number\": 127, \"options\": undefined },\n        { \"name\": \"SoEasyPay\", \"number\": 128, \"options\": undefined },\n        { \"name\": \"Spreedly\", \"number\": 129, \"options\": undefined },\n        { \"name\": \"Stripe\", \"number\": 130, \"options\": undefined },\n        { \"name\": \"Swipe\", \"number\": 131, \"options\": undefined },\n        { \"name\": \"TNS\", \"number\": 132, \"options\": undefined },\n        { \"name\": \"TransactPro\", \"number\": 133, \"options\": undefined },\n        { \"name\": \"TransFirst\", \"number\": 134, \"options\": undefined },\n        { \"name\": \"Transnational\", \"number\": 135, \"options\": undefined },\n        { \"name\": \"Trexle\", \"number\": 136, \"options\": undefined },\n        { \"name\": \"TrustCommerce\", \"number\": 137, \"options\": undefined },\n        { \"name\": \"USAePay\", \"number\": 138, \"options\": undefined },\n        { \"name\": \"VancoPaymentSolutions\", \"number\": 139, \"options\": undefined },\n        { \"name\": \"Verifi\", \"number\": 140, \"options\": undefined },\n        { \"name\": \"ViaKLIX\", \"number\": 141, \"options\": undefined },\n        { \"name\": \"WebPay\", \"number\": 142, \"options\": undefined },\n        { \"name\": \"WePay\", \"number\": 143, \"options\": undefined },\n        { \"name\": \"Wirecard\", \"number\": 144, \"options\": undefined },\n        { \"name\": \"WorldpayGlobal\", \"number\": 145, \"options\": undefined },\n        { \"name\": \"WorldpayOnline\", \"number\": 146, \"options\": undefined },\n        { \"name\": \"WorldpayUS\", \"number\": 147, \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"PaymentIdType\",\n      \"value\": [{ \"name\": \"NO_IDENTIFIER_TYPE\", \"number\": 0, \"options\": undefined }, {\n        \"name\": \"TOKEN\",\n        \"number\": 1,\n        \"options\": undefined,\n      }, { \"name\": \"TRANSACTION_ID\", \"number\": 2, \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"service\": [{\n      \"name\": \"PaymentService\",\n      \"method\": [{\n        \"name\": \"SetupAuthorization\",\n        \"inputType\": \".io.restorecommerce.payment.SetupRequest\",\n        \"outputType\": \".io.restorecommerce.payment.SetupResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"SetupPurchase\",\n        \"inputType\": \".io.restorecommerce.payment.SetupRequest\",\n        \"outputType\": \".io.restorecommerce.payment.SetupResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Authorize\",\n        \"inputType\": \".io.restorecommerce.payment.PaymentRequest\",\n        \"outputType\": \".io.restorecommerce.payment.PaymentResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Purchase\",\n        \"inputType\": \".io.restorecommerce.payment.PaymentRequest\",\n        \"outputType\": \".io.restorecommerce.payment.PaymentResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Capture\",\n        \"inputType\": \".io.restorecommerce.payment.CaptureRequest\",\n        \"outputType\": \".io.restorecommerce.payment.PaymentResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [6, 0, 2, 0],\n        \"span\": [8, 2, 64],\n        \"leadingComments\": \" Wrapper for setup_authorization in ActiveMerchant\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0, 2, 1],\n        \"span\": [11, 2, 59],\n        \"leadingComments\": \" Wrapper for setup_purchase in ActiveMerchant\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0, 2, 2],\n        \"span\": [14, 2, 59],\n        \"leadingComments\":\n          \" Gets payment details by token or transaction. Only supported by PayPal Express Checkout.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0, 2, 3],\n        \"span\": [17, 2, 58],\n        \"leadingComments\":\n          \" Gets payment details by token or transaction. Only supported by PayPal Express Checkout.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0, 2, 4],\n        \"span\": [20, 2, 57],\n        \"leadingComments\": \" Can capture both cardless and standard authorization.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 0],\n        \"span\": [24, 0, 37, 1],\n        \"leadingComments\": \" Request object for setup calls\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 3],\n        \"span\": [51, 0, 54, 1],\n        \"leadingComments\": \" Response object for setup calls.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4],\n        \"span\": [57, 0, 65, 1],\n        \"leadingComments\": \" Request object for authorization or purchase call for cardless payment.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 5],\n        \"span\": [68, 0, 74, 1],\n        \"leadingComments\": \" Request object for capture call for both standard and cardless payments.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 8],\n        \"span\": [88, 0, 91, 1],\n        \"leadingComments\":\n          \" Unified response object for authorization, purchase and capture calls\\n for both standard and cardless payments.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 9],\n        \"span\": [94, 0, 101, 1],\n        \"leadingComments\": \" Used for building ActiveMerchant::Billing::CreditCard instance.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 10],\n        \"span\": [104, 0, 109, 1],\n        \"leadingComments\": \" Represents purchased item. Not all providers support this.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [5, 0],\n        \"span\": [112, 0, 260, 1],\n        \"leadingComments\": \" Possible service providers. Provider names must be exactly as in config.yml.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [5, 1],\n        \"span\": [263, 0, 267, 1],\n        \"leadingComments\": \" Possible payment identifiers.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.payment.Provider\": Provider,\n    \".io.restorecommerce.payment.PaymentIdType\": PaymentIdType,\n    \".io.restorecommerce.payment.SetupRequest\": SetupRequest,\n    \".io.restorecommerce.payment.SetupPayload\": SetupPayload,\n    \".io.restorecommerce.payment.SetupPayloadStatus\": SetupPayloadStatus,\n    \".io.restorecommerce.payment.SetupResponse\": SetupResponse,\n    \".io.restorecommerce.payment.PaymentRequest\": PaymentRequest,\n    \".io.restorecommerce.payment.CaptureRequest\": CaptureRequest,\n    \".io.restorecommerce.payment.PaymentPayload\": PaymentPayload,\n    \".io.restorecommerce.payment.PaymentPayloadStatus\": PaymentPayloadStatus,\n    \".io.restorecommerce.payment.PaymentResponse\": PaymentResponse,\n    \".io.restorecommerce.payment.PaymentCard\": PaymentCard,\n    \".io.restorecommerce.payment.Item\": Item,\n  },\n  dependencies: [protoMetadata1, protoMetadata2, protoMetadata3],\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/credential.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { Any, protoMetadata as protoMetadata3 } from \"../../google/protobuf/any\";\nimport { protoMetadata as protoMetadata4, Subject } from \"./auth\";\nimport { Meta, protoMetadata as protoMetadata2 } from \"./meta\";\nimport { protoMetadata as protoMetadata6 } from \"./options\";\nimport { DeleteRequest, DeleteResponse, protoMetadata as protoMetadata1, ReadRequest } from \"./resource_base\";\nimport { OperationStatus, protoMetadata as protoMetadata5, Status } from \"./status\";\n\nexport const protobufPackage = \"io.restorecommerce.credential\";\n\nexport interface Deleted {\n  id?: string | undefined;\n}\n\nexport interface CredentialList {\n  items?: Credential[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface CredentialListResponse {\n  items?: CredentialResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface CredentialResponse {\n  payload?: Credential | undefined;\n  status?: Status | undefined;\n}\n\nexport interface Credential {\n  id?: string | undefined;\n  meta?: Meta | undefined;\n  name?: string | undefined;\n  description?: string | undefined;\n  user?: string | undefined;\n  pass?:\n    | string\n    | undefined;\n  /** additional credentials as auth key or certificates etc */\n  credentials?: Any | undefined;\n}\n\nfunction createBaseDeleted(): Deleted {\n  return {};\n}\n\nexport const Deleted: MessageFns<Deleted> = {\n  encode(message: Deleted, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Deleted {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseDeleted();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Deleted {\n    return { id: isSet(object.id) ? globalThis.String(object.id) : undefined };\n  },\n\n  toJSON(message: Deleted): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Deleted>): Deleted {\n    return Deleted.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Deleted>): Deleted {\n    const message = createBaseDeleted();\n    message.id = object.id ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseCredentialList(): CredentialList {\n  return {};\n}\n\nexport const CredentialList: MessageFns<CredentialList> = {\n  encode(message: CredentialList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        Credential.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CredentialList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCredentialList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = Credential.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CredentialList {\n    return {\n      items: globalThis.Array.isArray(object?.items) ? object.items.map((e: any) => Credential.fromJSON(e)) : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: CredentialList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => Credential.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CredentialList>): CredentialList {\n    return CredentialList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CredentialList>): CredentialList {\n    const message = createBaseCredentialList();\n    message.items = object.items?.map((e) => Credential.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseCredentialListResponse(): CredentialListResponse {\n  return {};\n}\n\nexport const CredentialListResponse: MessageFns<CredentialListResponse> = {\n  encode(message: CredentialListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        CredentialResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CredentialListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCredentialListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = CredentialResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CredentialListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => CredentialResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: CredentialListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => CredentialResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CredentialListResponse>): CredentialListResponse {\n    return CredentialListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CredentialListResponse>): CredentialListResponse {\n    const message = createBaseCredentialListResponse();\n    message.items = object.items?.map((e) => CredentialResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseCredentialResponse(): CredentialResponse {\n  return {};\n}\n\nexport const CredentialResponse: MessageFns<CredentialResponse> = {\n  encode(message: CredentialResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      Credential.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CredentialResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCredentialResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = Credential.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CredentialResponse {\n    return {\n      payload: isSet(object.payload) ? Credential.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: CredentialResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = Credential.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CredentialResponse>): CredentialResponse {\n    return CredentialResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CredentialResponse>): CredentialResponse {\n    const message = createBaseCredentialResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? Credential.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseCredential(): Credential {\n  return {};\n}\n\nexport const Credential: MessageFns<Credential> = {\n  encode(message: Credential, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(18).fork()).join();\n    }\n    if (message.name !== undefined) {\n      writer.uint32(26).string(message.name);\n    }\n    if (message.description !== undefined) {\n      writer.uint32(34).string(message.description);\n    }\n    if (message.user !== undefined) {\n      writer.uint32(42).string(message.user);\n    }\n    if (message.pass !== undefined) {\n      writer.uint32(50).string(message.pass);\n    }\n    if (message.credentials !== undefined) {\n      Any.encode(message.credentials, writer.uint32(58).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Credential {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCredential();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.user = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.pass = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.credentials = Any.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Credential {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      description: isSet(object.description) ? globalThis.String(object.description) : undefined,\n      user: isSet(object.user) ? globalThis.String(object.user) : undefined,\n      pass: isSet(object.pass) ? globalThis.String(object.pass) : undefined,\n      credentials: isSet(object.credentials) ? Any.fromJSON(object.credentials) : undefined,\n    };\n  },\n\n  toJSON(message: Credential): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.description !== undefined) {\n      obj.description = message.description;\n    }\n    if (message.user !== undefined) {\n      obj.user = message.user;\n    }\n    if (message.pass !== undefined) {\n      obj.pass = message.pass;\n    }\n    if (message.credentials !== undefined) {\n      obj.credentials = Any.toJSON(message.credentials);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Credential>): Credential {\n    return Credential.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Credential>): Credential {\n    const message = createBaseCredential();\n    message.id = object.id ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.name = object.name ?? undefined;\n    message.description = object.description ?? undefined;\n    message.user = object.user ?? undefined;\n    message.pass = object.pass ?? undefined;\n    message.credentials = (object.credentials !== undefined && object.credentials !== null)\n      ? Any.fromPartial(object.credentials)\n      : undefined;\n    return message;\n  },\n};\n\n/** Microservice definition. */\nexport type CredentialServiceDefinition = typeof CredentialServiceDefinition;\nexport const CredentialServiceDefinition = {\n  name: \"CredentialService\",\n  fullName: \"io.restorecommerce.credential.CredentialService\",\n  methods: {\n    read: {\n      name: \"Read\",\n      requestType: ReadRequest,\n      requestStream: false,\n      responseType: CredentialListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    create: {\n      name: \"Create\",\n      requestType: CredentialList,\n      requestStream: false,\n      responseType: CredentialListResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n    update: {\n      name: \"Update\",\n      requestType: CredentialList,\n      requestStream: false,\n      responseType: CredentialListResponse,\n      responseStream: false,\n      options: {},\n    },\n    upsert: {\n      name: \"Upsert\",\n      requestType: CredentialList,\n      requestStream: false,\n      responseType: CredentialListResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface CredentialServiceImplementation<CallContextExt = {}> {\n  read(request: ReadRequest, context: CallContext & CallContextExt): Promise<DeepPartial<CredentialListResponse>>;\n  create(request: CredentialList, context: CallContext & CallContextExt): Promise<DeepPartial<CredentialListResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n  update(request: CredentialList, context: CallContext & CallContextExt): Promise<DeepPartial<CredentialListResponse>>;\n  upsert(request: CredentialList, context: CallContext & CallContextExt): Promise<DeepPartial<CredentialListResponse>>;\n}\n\nexport interface CredentialServiceClient<CallOptionsExt = {}> {\n  read(request: DeepPartial<ReadRequest>, options?: CallOptions & CallOptionsExt): Promise<CredentialListResponse>;\n  create(request: DeepPartial<CredentialList>, options?: CallOptions & CallOptionsExt): Promise<CredentialListResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n  update(request: DeepPartial<CredentialList>, options?: CallOptions & CallOptionsExt): Promise<CredentialListResponse>;\n  upsert(request: DeepPartial<CredentialList>, options?: CallOptions & CallOptionsExt): Promise<CredentialListResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/credential.proto\",\n    \"package\": \"io.restorecommerce.credential\",\n    \"dependency\": [\n      \"io/restorecommerce/resource_base.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"google/protobuf/any.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/options.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Deleted\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"CredentialList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.credential.Credential\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"CredentialListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.credential.CredentialResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"CredentialResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.credential.Credential\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Credential\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"name\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"description\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"description\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"user\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"user\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"pass\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"pass\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"credentials\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Any\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"credentials\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_name\", \"options\": undefined },\n        { \"name\": \"_description\", \"options\": undefined },\n        { \"name\": \"_user\", \"options\": undefined },\n        { \"name\": \"_pass\", \"options\": undefined },\n        { \"name\": \"_credentials\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [{\n      \"name\": \"CredentialService\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ReadRequest\",\n        \"outputType\": \".io.restorecommerce.credential.CredentialListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.credential.CredentialList\",\n        \"outputType\": \".io.restorecommerce.credential.CredentialListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.credential.CredentialList\",\n        \"outputType\": \".io.restorecommerce.credential.CredentialListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.credential.CredentialList\",\n        \"outputType\": \".io.restorecommerce.credential.CredentialListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [6, 0],\n        \"span\": [14, 0, 22, 1],\n        \"leadingComments\": \"\\n Microservice definition.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4, 2, 6],\n        \"span\": [52, 2, 47],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" additional credentials as auth key or certificates etc\\n\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.credential.Deleted\": Deleted,\n    \".io.restorecommerce.credential.CredentialList\": CredentialList,\n    \".io.restorecommerce.credential.CredentialListResponse\": CredentialListResponse,\n    \".io.restorecommerce.credential.CredentialResponse\": CredentialResponse,\n    \".io.restorecommerce.credential.Credential\": Credential,\n  },\n  dependencies: [protoMetadata1, protoMetadata2, protoMetadata3, protoMetadata4, protoMetadata5, protoMetadata6],\n  options: { services: { \"CredentialService\": { methods: { \"Read\": { \"is_query\": true } } } } },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/location.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { Any, protoMetadata as protoMetadata2 } from \"../../google/protobuf/any\";\nimport { protoMetadata as protoMetadata8 } from \"./address\";\nimport { protoMetadata as protoMetadata4, Subject } from \"./auth\";\nimport { Meta, protoMetadata as protoMetadata3 } from \"./meta\";\nimport { protoMetadata as protoMetadata6, Resolver } from \"./options\";\nimport { protoMetadata as protoMetadata7 } from \"./organization\";\nimport { DeleteRequest, DeleteResponse, protoMetadata as protoMetadata1, ReadRequest } from \"./resource_base\";\nimport { OperationStatus, protoMetadata as protoMetadata5, Status } from \"./status\";\n\nexport const protobufPackage = \"io.restorecommerce.location\";\n\nexport interface Deleted {\n  id?: string | undefined;\n}\n\nexport interface LocationList {\n  items?: Location[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface LocationListResponse {\n  items?: LocationResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface LocationResponse {\n  payload?: Location | undefined;\n  status?: Status | undefined;\n}\n\nexport interface Location {\n  /** Location ID, unique, key */\n  id?: string | undefined;\n  meta?:\n    | Meta\n    | undefined;\n  /** Location name */\n  name?: string | undefined;\n  description?:\n    | string\n    | undefined;\n  /** Organization to which this location is linked */\n  organizationId?:\n    | string\n    | undefined;\n  /** Location which may contain this location; may be null */\n  parentId?: string | undefined;\n  addressId?:\n    | string\n    | undefined;\n  /** additional data */\n  data?:\n    | Any\n    | undefined;\n  /** location type */\n  type?: string | undefined;\n}\n\nfunction createBaseDeleted(): Deleted {\n  return {};\n}\n\nexport const Deleted: MessageFns<Deleted> = {\n  encode(message: Deleted, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Deleted {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseDeleted();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Deleted {\n    return { id: isSet(object.id) ? globalThis.String(object.id) : undefined };\n  },\n\n  toJSON(message: Deleted): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Deleted>): Deleted {\n    return Deleted.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Deleted>): Deleted {\n    const message = createBaseDeleted();\n    message.id = object.id ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseLocationList(): LocationList {\n  return {};\n}\n\nexport const LocationList: MessageFns<LocationList> = {\n  encode(message: LocationList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        Location.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): LocationList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseLocationList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = Location.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): LocationList {\n    return {\n      items: globalThis.Array.isArray(object?.items) ? object.items.map((e: any) => Location.fromJSON(e)) : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: LocationList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => Location.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<LocationList>): LocationList {\n    return LocationList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<LocationList>): LocationList {\n    const message = createBaseLocationList();\n    message.items = object.items?.map((e) => Location.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseLocationListResponse(): LocationListResponse {\n  return {};\n}\n\nexport const LocationListResponse: MessageFns<LocationListResponse> = {\n  encode(message: LocationListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        LocationResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): LocationListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseLocationListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = LocationResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): LocationListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => LocationResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: LocationListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => LocationResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<LocationListResponse>): LocationListResponse {\n    return LocationListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<LocationListResponse>): LocationListResponse {\n    const message = createBaseLocationListResponse();\n    message.items = object.items?.map((e) => LocationResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseLocationResponse(): LocationResponse {\n  return {};\n}\n\nexport const LocationResponse: MessageFns<LocationResponse> = {\n  encode(message: LocationResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      Location.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): LocationResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseLocationResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = Location.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): LocationResponse {\n    return {\n      payload: isSet(object.payload) ? Location.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: LocationResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = Location.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<LocationResponse>): LocationResponse {\n    return LocationResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<LocationResponse>): LocationResponse {\n    const message = createBaseLocationResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? Location.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseLocation(): Location {\n  return {};\n}\n\nexport const Location: MessageFns<Location> = {\n  encode(message: Location, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(18).fork()).join();\n    }\n    if (message.name !== undefined) {\n      writer.uint32(26).string(message.name);\n    }\n    if (message.description !== undefined) {\n      writer.uint32(34).string(message.description);\n    }\n    if (message.organizationId !== undefined) {\n      writer.uint32(42).string(message.organizationId);\n    }\n    if (message.parentId !== undefined) {\n      writer.uint32(50).string(message.parentId);\n    }\n    if (message.addressId !== undefined) {\n      writer.uint32(66).string(message.addressId);\n    }\n    if (message.data !== undefined) {\n      Any.encode(message.data, writer.uint32(74).fork()).join();\n    }\n    if (message.type !== undefined) {\n      writer.uint32(82).string(message.type);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Location {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseLocation();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.organizationId = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.parentId = reader.string();\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.addressId = reader.string();\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.data = Any.decode(reader, reader.uint32());\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.type = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Location {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      description: isSet(object.description) ? globalThis.String(object.description) : undefined,\n      organizationId: isSet(object.organizationId) ? globalThis.String(object.organizationId) : undefined,\n      parentId: isSet(object.parentId) ? globalThis.String(object.parentId) : undefined,\n      addressId: isSet(object.addressId) ? globalThis.String(object.addressId) : undefined,\n      data: isSet(object.data) ? Any.fromJSON(object.data) : undefined,\n      type: isSet(object.type) ? globalThis.String(object.type) : undefined,\n    };\n  },\n\n  toJSON(message: Location): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.description !== undefined) {\n      obj.description = message.description;\n    }\n    if (message.organizationId !== undefined) {\n      obj.organizationId = message.organizationId;\n    }\n    if (message.parentId !== undefined) {\n      obj.parentId = message.parentId;\n    }\n    if (message.addressId !== undefined) {\n      obj.addressId = message.addressId;\n    }\n    if (message.data !== undefined) {\n      obj.data = Any.toJSON(message.data);\n    }\n    if (message.type !== undefined) {\n      obj.type = message.type;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Location>): Location {\n    return Location.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Location>): Location {\n    const message = createBaseLocation();\n    message.id = object.id ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.name = object.name ?? undefined;\n    message.description = object.description ?? undefined;\n    message.organizationId = object.organizationId ?? undefined;\n    message.parentId = object.parentId ?? undefined;\n    message.addressId = object.addressId ?? undefined;\n    message.data = (object.data !== undefined && object.data !== null) ? Any.fromPartial(object.data) : undefined;\n    message.type = object.type ?? undefined;\n    return message;\n  },\n};\n\n/** Microservice definition. */\nexport type LocationServiceDefinition = typeof LocationServiceDefinition;\nexport const LocationServiceDefinition = {\n  name: \"LocationService\",\n  fullName: \"io.restorecommerce.location.LocationService\",\n  methods: {\n    read: {\n      name: \"Read\",\n      requestType: ReadRequest,\n      requestStream: false,\n      responseType: LocationListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    create: {\n      name: \"Create\",\n      requestType: LocationList,\n      requestStream: false,\n      responseType: LocationListResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n    update: {\n      name: \"Update\",\n      requestType: LocationList,\n      requestStream: false,\n      responseType: LocationListResponse,\n      responseStream: false,\n      options: {},\n    },\n    upsert: {\n      name: \"Upsert\",\n      requestType: LocationList,\n      requestStream: false,\n      responseType: LocationListResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface LocationServiceImplementation<CallContextExt = {}> {\n  read(request: ReadRequest, context: CallContext & CallContextExt): Promise<DeepPartial<LocationListResponse>>;\n  create(request: LocationList, context: CallContext & CallContextExt): Promise<DeepPartial<LocationListResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n  update(request: LocationList, context: CallContext & CallContextExt): Promise<DeepPartial<LocationListResponse>>;\n  upsert(request: LocationList, context: CallContext & CallContextExt): Promise<DeepPartial<LocationListResponse>>;\n}\n\nexport interface LocationServiceClient<CallOptionsExt = {}> {\n  read(request: DeepPartial<ReadRequest>, options?: CallOptions & CallOptionsExt): Promise<LocationListResponse>;\n  create(request: DeepPartial<LocationList>, options?: CallOptions & CallOptionsExt): Promise<LocationListResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n  update(request: DeepPartial<LocationList>, options?: CallOptions & CallOptionsExt): Promise<LocationListResponse>;\n  upsert(request: DeepPartial<LocationList>, options?: CallOptions & CallOptionsExt): Promise<LocationListResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/location.proto\",\n    \"package\": \"io.restorecommerce.location\",\n    \"dependency\": [\n      \"io/restorecommerce/resource_base.proto\",\n      \"google/protobuf/any.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/options.proto\",\n      \"io/restorecommerce/organization.proto\",\n      \"io/restorecommerce/address.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Deleted\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"LocationList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.location.Location\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"LocationListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.location.LocationResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"LocationResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.location.Location\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Location\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"name\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"description\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"description\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"organization_id\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"organizationId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"parent_id\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"parentId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"address_id\",\n        \"number\": 8,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"addressId\",\n        \"options\": {\n          \"ctype\": 0,\n          \"packed\": false,\n          \"jstype\": 0,\n          \"lazy\": false,\n          \"deprecated\": false,\n          \"weak\": false,\n          \"uninterpretedOption\": [],\n        },\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"data\",\n        \"number\": 9,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Any\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 7,\n        \"jsonName\": \"data\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"type\",\n        \"number\": 10,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 8,\n        \"jsonName\": \"type\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_name\", \"options\": undefined },\n        { \"name\": \"_description\", \"options\": undefined },\n        { \"name\": \"_organization_id\", \"options\": undefined },\n        { \"name\": \"_parent_id\", \"options\": undefined },\n        { \"name\": \"_address_id\", \"options\": undefined },\n        { \"name\": \"_data\", \"options\": undefined },\n        { \"name\": \"_type\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [{\n      \"name\": \"LocationService\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ReadRequest\",\n        \"outputType\": \".io.restorecommerce.location.LocationListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.location.LocationList\",\n        \"outputType\": \".io.restorecommerce.location.LocationListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.location.LocationList\",\n        \"outputType\": \".io.restorecommerce.location.LocationListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.location.LocationList\",\n        \"outputType\": \".io.restorecommerce.location.LocationListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [3, 6],\n        \"span\": [12, 0, 47],\n        \"leadingComments\": \" Used by resolvers\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [6, 0],\n        \"span\": [18, 0, 26, 1],\n        \"leadingComments\": \"\\n Microservice definition.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4, 2, 0],\n        \"span\": [50, 2, 25],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Location ID, unique, key\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4, 2, 2],\n        \"span\": [52, 2, 27],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Location name\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4, 2, 4],\n        \"span\": [54, 2, 62, 4],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Organization to which this location is linked\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4, 2, 5],\n        \"span\": [63, 2, 71, 4],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \"  Location which may contain this location; may be null\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4, 2, 7],\n        \"span\": [81, 2, 40],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" additional data\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4, 2, 8],\n        \"span\": [82, 2, 28],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" location type\\n\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.location.Deleted\": Deleted,\n    \".io.restorecommerce.location.LocationList\": LocationList,\n    \".io.restorecommerce.location.LocationListResponse\": LocationListResponse,\n    \".io.restorecommerce.location.LocationResponse\": LocationResponse,\n    \".io.restorecommerce.location.Location\": Location,\n  },\n  dependencies: [\n    protoMetadata1,\n    protoMetadata2,\n    protoMetadata3,\n    protoMetadata4,\n    protoMetadata5,\n    protoMetadata6,\n    protoMetadata7,\n    protoMetadata8,\n  ],\n  options: {\n    messages: {\n      \"Location\": {\n        fields: {\n          \"organization_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"Ci0uaW8ucmVzdG9yZWNvbW1lcmNlLm9yZ2FuaXphdGlvbi5Pcmdhbml6YXRpb24SC21hc3Rlcl9kYXRhGgxvcmdhbml6YXRpb24iBFJlYWQqDG9yZ2FuaXphdGlvbg==\",\n                \"base64\",\n              ),\n            ),\n          },\n          \"parent_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CiUuaW8ucmVzdG9yZWNvbW1lcmNlLmxvY2F0aW9uLkxvY2F0aW9uEgttYXN0ZXJfZGF0YRoIbG9jYXRpb24iBFJlYWQqBnBhcmVudA==\",\n                \"base64\",\n              ),\n            ),\n          },\n          \"address_id\": {\n            \"resolver\": Resolver.decode(\n              Buffer.from(\n                \"CiMuaW8ucmVzdG9yZWNvbW1lcmNlLmFkZHJlc3MuQWRkcmVzcxILbWFzdGVyX2RhdGEaB2FkZHJlc3MiBFJlYWQqB2FkZHJlc3M=\",\n                \"base64\",\n              ),\n            ),\n          },\n        },\n      },\n    },\n    services: { \"LocationService\": { methods: { \"Read\": { \"is_query\": true } } } },\n  },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/unit_code.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { protoMetadata as protoMetadata3, Subject } from \"./auth\";\nimport { Meta, protoMetadata as protoMetadata2 } from \"./meta\";\nimport { protoMetadata as protoMetadata5 } from \"./options\";\nimport { DeleteRequest, DeleteResponse, protoMetadata as protoMetadata1, ReadRequest } from \"./resource_base\";\nimport { OperationStatus, protoMetadata as protoMetadata4, Status } from \"./status\";\n\nexport const protobufPackage = \"io.restorecommerce.unit_code\";\n\nexport enum StatusCode {\n  ADDED = \"ADDED\",\n  CHANGED_NAME = \"CHANGED_NAME\",\n  CHANGED_CHARACTERISTIC = \"CHANGED_CHARACTERISTIC\",\n  DEPRECATED = \"DEPRECATED\",\n  MARKED_AS_DELETED = \"MARKED_AS_DELETED\",\n  REINSTATED = \"REINSTATED\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function statusCodeFromJSON(object: any): StatusCode {\n  switch (object) {\n    case 0:\n    case \"ADDED\":\n      return StatusCode.ADDED;\n    case 1:\n    case \"CHANGED_NAME\":\n      return StatusCode.CHANGED_NAME;\n    case 2:\n    case \"CHANGED_CHARACTERISTIC\":\n      return StatusCode.CHANGED_CHARACTERISTIC;\n    case 3:\n    case \"DEPRECATED\":\n      return StatusCode.DEPRECATED;\n    case 4:\n    case \"MARKED_AS_DELETED\":\n      return StatusCode.MARKED_AS_DELETED;\n    case 5:\n    case \"REINSTATED\":\n      return StatusCode.REINSTATED;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return StatusCode.UNRECOGNIZED;\n  }\n}\n\nexport function statusCodeToJSON(object: StatusCode): string {\n  switch (object) {\n    case StatusCode.ADDED:\n      return \"ADDED\";\n    case StatusCode.CHANGED_NAME:\n      return \"CHANGED_NAME\";\n    case StatusCode.CHANGED_CHARACTERISTIC:\n      return \"CHANGED_CHARACTERISTIC\";\n    case StatusCode.DEPRECATED:\n      return \"DEPRECATED\";\n    case StatusCode.MARKED_AS_DELETED:\n      return \"MARKED_AS_DELETED\";\n    case StatusCode.REINSTATED:\n      return \"REINSTATED\";\n    case StatusCode.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function statusCodeToNumber(object: StatusCode): number {\n  switch (object) {\n    case StatusCode.ADDED:\n      return 0;\n    case StatusCode.CHANGED_NAME:\n      return 1;\n    case StatusCode.CHANGED_CHARACTERISTIC:\n      return 2;\n    case StatusCode.DEPRECATED:\n      return 3;\n    case StatusCode.MARKED_AS_DELETED:\n      return 4;\n    case StatusCode.REINSTATED:\n      return 5;\n    case StatusCode.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\nexport enum Sector {\n  UNKNOWN = \"UNKNOWN\",\n  ACOUSTICS = \"ACOUSTICS\",\n  ATOMIC_AND_NUCLEAR_PHYSICS = \"ATOMIC_AND_NUCLEAR_PHYSICS\",\n  CHARACTERISTIC_NUMBERS = \"CHARACTERISTIC_NUMBERS\",\n  ELECTRICITY_AND_MAGNETISM = \"ELECTRICITY_AND_MAGNETISM\",\n  HEAT = \"HEAT\",\n  LIGHT_AND_RELATED_ELECTROMAGNETIC_RADIATIONS = \"LIGHT_AND_RELATED_ELECTROMAGNETIC_RADIATIONS\",\n  MECHANICS = \"MECHANICS\",\n  MISCELLANEOUS = \"MISCELLANEOUS\",\n  NUCLEAR_REACTIONS_AND_IONIZING_RADIATIONS = \"NUCLEAR_REACTIONS_AND_IONIZING_RADIATIONS\",\n  PERIODIC_AND_RELATED_PHASES = \"PERIODIC_AND_RELATED_PHASES\",\n  PHYSICAL_CHEMISTRY_AND_MOLECULAR_PHYSICS = \"PHYSICAL_CHEMISTRY_AND_MOLECULAR_PHYSICS\",\n  SOLID_STATE_PHYSICS = \"SOLID_STATE_PHYSICS\",\n  SPACE_AND_TIME = \"SPACE_AND_TIME\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function sectorFromJSON(object: any): Sector {\n  switch (object) {\n    case 0:\n    case \"UNKNOWN\":\n      return Sector.UNKNOWN;\n    case 1:\n    case \"ACOUSTICS\":\n      return Sector.ACOUSTICS;\n    case 2:\n    case \"ATOMIC_AND_NUCLEAR_PHYSICS\":\n      return Sector.ATOMIC_AND_NUCLEAR_PHYSICS;\n    case 3:\n    case \"CHARACTERISTIC_NUMBERS\":\n      return Sector.CHARACTERISTIC_NUMBERS;\n    case 4:\n    case \"ELECTRICITY_AND_MAGNETISM\":\n      return Sector.ELECTRICITY_AND_MAGNETISM;\n    case 5:\n    case \"HEAT\":\n      return Sector.HEAT;\n    case 6:\n    case \"LIGHT_AND_RELATED_ELECTROMAGNETIC_RADIATIONS\":\n      return Sector.LIGHT_AND_RELATED_ELECTROMAGNETIC_RADIATIONS;\n    case 7:\n    case \"MECHANICS\":\n      return Sector.MECHANICS;\n    case 8:\n    case \"MISCELLANEOUS\":\n      return Sector.MISCELLANEOUS;\n    case 9:\n    case \"NUCLEAR_REACTIONS_AND_IONIZING_RADIATIONS\":\n      return Sector.NUCLEAR_REACTIONS_AND_IONIZING_RADIATIONS;\n    case 10:\n    case \"PERIODIC_AND_RELATED_PHASES\":\n      return Sector.PERIODIC_AND_RELATED_PHASES;\n    case 11:\n    case \"PHYSICAL_CHEMISTRY_AND_MOLECULAR_PHYSICS\":\n      return Sector.PHYSICAL_CHEMISTRY_AND_MOLECULAR_PHYSICS;\n    case 12:\n    case \"SOLID_STATE_PHYSICS\":\n      return Sector.SOLID_STATE_PHYSICS;\n    case 13:\n    case \"SPACE_AND_TIME\":\n      return Sector.SPACE_AND_TIME;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return Sector.UNRECOGNIZED;\n  }\n}\n\nexport function sectorToJSON(object: Sector): string {\n  switch (object) {\n    case Sector.UNKNOWN:\n      return \"UNKNOWN\";\n    case Sector.ACOUSTICS:\n      return \"ACOUSTICS\";\n    case Sector.ATOMIC_AND_NUCLEAR_PHYSICS:\n      return \"ATOMIC_AND_NUCLEAR_PHYSICS\";\n    case Sector.CHARACTERISTIC_NUMBERS:\n      return \"CHARACTERISTIC_NUMBERS\";\n    case Sector.ELECTRICITY_AND_MAGNETISM:\n      return \"ELECTRICITY_AND_MAGNETISM\";\n    case Sector.HEAT:\n      return \"HEAT\";\n    case Sector.LIGHT_AND_RELATED_ELECTROMAGNETIC_RADIATIONS:\n      return \"LIGHT_AND_RELATED_ELECTROMAGNETIC_RADIATIONS\";\n    case Sector.MECHANICS:\n      return \"MECHANICS\";\n    case Sector.MISCELLANEOUS:\n      return \"MISCELLANEOUS\";\n    case Sector.NUCLEAR_REACTIONS_AND_IONIZING_RADIATIONS:\n      return \"NUCLEAR_REACTIONS_AND_IONIZING_RADIATIONS\";\n    case Sector.PERIODIC_AND_RELATED_PHASES:\n      return \"PERIODIC_AND_RELATED_PHASES\";\n    case Sector.PHYSICAL_CHEMISTRY_AND_MOLECULAR_PHYSICS:\n      return \"PHYSICAL_CHEMISTRY_AND_MOLECULAR_PHYSICS\";\n    case Sector.SOLID_STATE_PHYSICS:\n      return \"SOLID_STATE_PHYSICS\";\n    case Sector.SPACE_AND_TIME:\n      return \"SPACE_AND_TIME\";\n    case Sector.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function sectorToNumber(object: Sector): number {\n  switch (object) {\n    case Sector.UNKNOWN:\n      return 0;\n    case Sector.ACOUSTICS:\n      return 1;\n    case Sector.ATOMIC_AND_NUCLEAR_PHYSICS:\n      return 2;\n    case Sector.CHARACTERISTIC_NUMBERS:\n      return 3;\n    case Sector.ELECTRICITY_AND_MAGNETISM:\n      return 4;\n    case Sector.HEAT:\n      return 5;\n    case Sector.LIGHT_AND_RELATED_ELECTROMAGNETIC_RADIATIONS:\n      return 6;\n    case Sector.MECHANICS:\n      return 7;\n    case Sector.MISCELLANEOUS:\n      return 8;\n    case Sector.NUCLEAR_REACTIONS_AND_IONIZING_RADIATIONS:\n      return 9;\n    case Sector.PERIODIC_AND_RELATED_PHASES:\n      return 10;\n    case Sector.PHYSICAL_CHEMISTRY_AND_MOLECULAR_PHYSICS:\n      return 11;\n    case Sector.SOLID_STATE_PHYSICS:\n      return 12;\n    case Sector.SPACE_AND_TIME:\n      return 13;\n    case Sector.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\nexport interface UnitCodeList {\n  items?: UnitCode[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface UnitCodeListResponse {\n  items?: UnitCodeResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface UnitCodeResponse {\n  payload?: UnitCode | undefined;\n  status?: Status | undefined;\n}\n\nexport interface UnitCode {\n  id?: string | undefined;\n  meta?: Meta | undefined;\n  status?: StatusCode | undefined;\n  commonCode?: string | undefined;\n  name?: string | undefined;\n  description?: string | undefined;\n  levelCategory?: string | undefined;\n  symbol?: string | undefined;\n  conversionFactor?: string | undefined;\n  groupNumber?: string | undefined;\n  sector?: Sector | undefined;\n  groupId?: string | undefined;\n  quantity?: string | undefined;\n}\n\nfunction createBaseUnitCodeList(): UnitCodeList {\n  return {};\n}\n\nexport const UnitCodeList: MessageFns<UnitCodeList> = {\n  encode(message: UnitCodeList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        UnitCode.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): UnitCodeList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseUnitCodeList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = UnitCode.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): UnitCodeList {\n    return {\n      items: globalThis.Array.isArray(object?.items) ? object.items.map((e: any) => UnitCode.fromJSON(e)) : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: UnitCodeList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => UnitCode.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<UnitCodeList>): UnitCodeList {\n    return UnitCodeList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<UnitCodeList>): UnitCodeList {\n    const message = createBaseUnitCodeList();\n    message.items = object.items?.map((e) => UnitCode.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseUnitCodeListResponse(): UnitCodeListResponse {\n  return {};\n}\n\nexport const UnitCodeListResponse: MessageFns<UnitCodeListResponse> = {\n  encode(message: UnitCodeListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        UnitCodeResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): UnitCodeListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseUnitCodeListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = UnitCodeResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): UnitCodeListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => UnitCodeResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: UnitCodeListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => UnitCodeResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<UnitCodeListResponse>): UnitCodeListResponse {\n    return UnitCodeListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<UnitCodeListResponse>): UnitCodeListResponse {\n    const message = createBaseUnitCodeListResponse();\n    message.items = object.items?.map((e) => UnitCodeResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseUnitCodeResponse(): UnitCodeResponse {\n  return {};\n}\n\nexport const UnitCodeResponse: MessageFns<UnitCodeResponse> = {\n  encode(message: UnitCodeResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      UnitCode.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): UnitCodeResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseUnitCodeResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = UnitCode.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): UnitCodeResponse {\n    return {\n      payload: isSet(object.payload) ? UnitCode.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: UnitCodeResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = UnitCode.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<UnitCodeResponse>): UnitCodeResponse {\n    return UnitCodeResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<UnitCodeResponse>): UnitCodeResponse {\n    const message = createBaseUnitCodeResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? UnitCode.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseUnitCode(): UnitCode {\n  return {};\n}\n\nexport const UnitCode: MessageFns<UnitCode> = {\n  encode(message: UnitCode, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(18).fork()).join();\n    }\n    if (message.status !== undefined) {\n      writer.uint32(24).int32(statusCodeToNumber(message.status));\n    }\n    if (message.commonCode !== undefined) {\n      writer.uint32(34).string(message.commonCode);\n    }\n    if (message.name !== undefined) {\n      writer.uint32(42).string(message.name);\n    }\n    if (message.description !== undefined) {\n      writer.uint32(50).string(message.description);\n    }\n    if (message.levelCategory !== undefined) {\n      writer.uint32(58).string(message.levelCategory);\n    }\n    if (message.symbol !== undefined) {\n      writer.uint32(66).string(message.symbol);\n    }\n    if (message.conversionFactor !== undefined) {\n      writer.uint32(74).string(message.conversionFactor);\n    }\n    if (message.groupNumber !== undefined) {\n      writer.uint32(82).string(message.groupNumber);\n    }\n    if (message.sector !== undefined) {\n      writer.uint32(88).int32(sectorToNumber(message.sector));\n    }\n    if (message.groupId !== undefined) {\n      writer.uint32(98).string(message.groupId);\n    }\n    if (message.quantity !== undefined) {\n      writer.uint32(106).string(message.quantity);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): UnitCode {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseUnitCode();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.status = statusCodeFromJSON(reader.int32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.commonCode = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.levelCategory = reader.string();\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.symbol = reader.string();\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.conversionFactor = reader.string();\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          message.groupNumber = reader.string();\n          continue;\n        }\n        case 11: {\n          if (tag !== 88) {\n            break;\n          }\n\n          message.sector = sectorFromJSON(reader.int32());\n          continue;\n        }\n        case 12: {\n          if (tag !== 98) {\n            break;\n          }\n\n          message.groupId = reader.string();\n          continue;\n        }\n        case 13: {\n          if (tag !== 106) {\n            break;\n          }\n\n          message.quantity = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): UnitCode {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      status: isSet(object.status) ? statusCodeFromJSON(object.status) : undefined,\n      commonCode: isSet(object.commonCode) ? globalThis.String(object.commonCode) : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      description: isSet(object.description) ? globalThis.String(object.description) : undefined,\n      levelCategory: isSet(object.levelCategory) ? globalThis.String(object.levelCategory) : undefined,\n      symbol: isSet(object.symbol) ? globalThis.String(object.symbol) : undefined,\n      conversionFactor: isSet(object.conversionFactor) ? globalThis.String(object.conversionFactor) : undefined,\n      groupNumber: isSet(object.groupNumber) ? globalThis.String(object.groupNumber) : undefined,\n      sector: isSet(object.sector) ? sectorFromJSON(object.sector) : undefined,\n      groupId: isSet(object.groupId) ? globalThis.String(object.groupId) : undefined,\n      quantity: isSet(object.quantity) ? globalThis.String(object.quantity) : undefined,\n    };\n  },\n\n  toJSON(message: UnitCode): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.status !== undefined) {\n      obj.status = statusCodeToJSON(message.status);\n    }\n    if (message.commonCode !== undefined) {\n      obj.commonCode = message.commonCode;\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.description !== undefined) {\n      obj.description = message.description;\n    }\n    if (message.levelCategory !== undefined) {\n      obj.levelCategory = message.levelCategory;\n    }\n    if (message.symbol !== undefined) {\n      obj.symbol = message.symbol;\n    }\n    if (message.conversionFactor !== undefined) {\n      obj.conversionFactor = message.conversionFactor;\n    }\n    if (message.groupNumber !== undefined) {\n      obj.groupNumber = message.groupNumber;\n    }\n    if (message.sector !== undefined) {\n      obj.sector = sectorToJSON(message.sector);\n    }\n    if (message.groupId !== undefined) {\n      obj.groupId = message.groupId;\n    }\n    if (message.quantity !== undefined) {\n      obj.quantity = message.quantity;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<UnitCode>): UnitCode {\n    return UnitCode.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<UnitCode>): UnitCode {\n    const message = createBaseUnitCode();\n    message.id = object.id ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.status = object.status ?? undefined;\n    message.commonCode = object.commonCode ?? undefined;\n    message.name = object.name ?? undefined;\n    message.description = object.description ?? undefined;\n    message.levelCategory = object.levelCategory ?? undefined;\n    message.symbol = object.symbol ?? undefined;\n    message.conversionFactor = object.conversionFactor ?? undefined;\n    message.groupNumber = object.groupNumber ?? undefined;\n    message.sector = object.sector ?? undefined;\n    message.groupId = object.groupId ?? undefined;\n    message.quantity = object.quantity ?? undefined;\n    return message;\n  },\n};\n\nexport type UnitCodeServiceDefinition = typeof UnitCodeServiceDefinition;\nexport const UnitCodeServiceDefinition = {\n  name: \"UnitCodeService\",\n  fullName: \"io.restorecommerce.unit_code.UnitCodeService\",\n  methods: {\n    read: {\n      name: \"Read\",\n      requestType: ReadRequest,\n      requestStream: false,\n      responseType: UnitCodeListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    create: {\n      name: \"Create\",\n      requestType: UnitCodeList,\n      requestStream: false,\n      responseType: UnitCodeListResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n    update: {\n      name: \"Update\",\n      requestType: UnitCodeList,\n      requestStream: false,\n      responseType: UnitCodeListResponse,\n      responseStream: false,\n      options: {},\n    },\n    upsert: {\n      name: \"Upsert\",\n      requestType: UnitCodeList,\n      requestStream: false,\n      responseType: UnitCodeListResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface UnitCodeServiceImplementation<CallContextExt = {}> {\n  read(request: ReadRequest, context: CallContext & CallContextExt): Promise<DeepPartial<UnitCodeListResponse>>;\n  create(request: UnitCodeList, context: CallContext & CallContextExt): Promise<DeepPartial<UnitCodeListResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n  update(request: UnitCodeList, context: CallContext & CallContextExt): Promise<DeepPartial<UnitCodeListResponse>>;\n  upsert(request: UnitCodeList, context: CallContext & CallContextExt): Promise<DeepPartial<UnitCodeListResponse>>;\n}\n\nexport interface UnitCodeServiceClient<CallOptionsExt = {}> {\n  read(request: DeepPartial<ReadRequest>, options?: CallOptions & CallOptionsExt): Promise<UnitCodeListResponse>;\n  create(request: DeepPartial<UnitCodeList>, options?: CallOptions & CallOptionsExt): Promise<UnitCodeListResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n  update(request: DeepPartial<UnitCodeList>, options?: CallOptions & CallOptionsExt): Promise<UnitCodeListResponse>;\n  upsert(request: DeepPartial<UnitCodeList>, options?: CallOptions & CallOptionsExt): Promise<UnitCodeListResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/unit_code.proto\",\n    \"package\": \"io.restorecommerce.unit_code\",\n    \"dependency\": [\n      \"io/restorecommerce/resource_base.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/options.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"UnitCodeList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.unit_code.UnitCode\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"UnitCodeListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.unit_code.UnitCodeResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"UnitCodeResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.unit_code.UnitCode\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"UnitCode\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".io.restorecommerce.unit_code.StatusCode\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"common_code\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"commonCode\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"name\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"description\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"description\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"level_category\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"levelCategory\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"symbol\",\n        \"number\": 8,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 7,\n        \"jsonName\": \"symbol\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"conversion_factor\",\n        \"number\": 9,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 8,\n        \"jsonName\": \"conversionFactor\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"group_number\",\n        \"number\": 10,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 9,\n        \"jsonName\": \"groupNumber\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"sector\",\n        \"number\": 11,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".io.restorecommerce.unit_code.Sector\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 10,\n        \"jsonName\": \"sector\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"group_id\",\n        \"number\": 12,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 11,\n        \"jsonName\": \"groupId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"quantity\",\n        \"number\": 13,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 12,\n        \"jsonName\": \"quantity\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_status\", \"options\": undefined },\n        { \"name\": \"_common_code\", \"options\": undefined },\n        { \"name\": \"_name\", \"options\": undefined },\n        { \"name\": \"_description\", \"options\": undefined },\n        { \"name\": \"_level_category\", \"options\": undefined },\n        { \"name\": \"_symbol\", \"options\": undefined },\n        { \"name\": \"_conversion_factor\", \"options\": undefined },\n        { \"name\": \"_group_number\", \"options\": undefined },\n        { \"name\": \"_sector\", \"options\": undefined },\n        { \"name\": \"_group_id\", \"options\": undefined },\n        { \"name\": \"_quantity\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [{\n      \"name\": \"StatusCode\",\n      \"value\": [\n        { \"name\": \"ADDED\", \"number\": 0, \"options\": undefined },\n        { \"name\": \"CHANGED_NAME\", \"number\": 1, \"options\": undefined },\n        { \"name\": \"CHANGED_CHARACTERISTIC\", \"number\": 2, \"options\": undefined },\n        { \"name\": \"DEPRECATED\", \"number\": 3, \"options\": undefined },\n        { \"name\": \"MARKED_AS_DELETED\", \"number\": 4, \"options\": undefined },\n        { \"name\": \"REINSTATED\", \"number\": 5, \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Sector\",\n      \"value\": [\n        { \"name\": \"UNKNOWN\", \"number\": 0, \"options\": undefined },\n        { \"name\": \"ACOUSTICS\", \"number\": 1, \"options\": undefined },\n        { \"name\": \"ATOMIC_AND_NUCLEAR_PHYSICS\", \"number\": 2, \"options\": undefined },\n        { \"name\": \"CHARACTERISTIC_NUMBERS\", \"number\": 3, \"options\": undefined },\n        { \"name\": \"ELECTRICITY_AND_MAGNETISM\", \"number\": 4, \"options\": undefined },\n        { \"name\": \"HEAT\", \"number\": 5, \"options\": undefined },\n        { \"name\": \"LIGHT_AND_RELATED_ELECTROMAGNETIC_RADIATIONS\", \"number\": 6, \"options\": undefined },\n        { \"name\": \"MECHANICS\", \"number\": 7, \"options\": undefined },\n        { \"name\": \"MISCELLANEOUS\", \"number\": 8, \"options\": undefined },\n        { \"name\": \"NUCLEAR_REACTIONS_AND_IONIZING_RADIATIONS\", \"number\": 9, \"options\": undefined },\n        { \"name\": \"PERIODIC_AND_RELATED_PHASES\", \"number\": 10, \"options\": undefined },\n        { \"name\": \"PHYSICAL_CHEMISTRY_AND_MOLECULAR_PHYSICS\", \"number\": 11, \"options\": undefined },\n        { \"name\": \"SOLID_STATE_PHYSICS\", \"number\": 12, \"options\": undefined },\n        { \"name\": \"SPACE_AND_TIME\", \"number\": 13, \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"service\": [{\n      \"name\": \"UnitCodeService\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ReadRequest\",\n        \"outputType\": \".io.restorecommerce.unit_code.UnitCodeListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.unit_code.UnitCodeList\",\n        \"outputType\": \".io.restorecommerce.unit_code.UnitCodeListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.unit_code.UnitCodeList\",\n        \"outputType\": \".io.restorecommerce.unit_code.UnitCodeListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.unit_code.UnitCodeList\",\n        \"outputType\": \".io.restorecommerce.unit_code.UnitCodeListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": { \"location\": [] },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.unit_code.StatusCode\": StatusCode,\n    \".io.restorecommerce.unit_code.Sector\": Sector,\n    \".io.restorecommerce.unit_code.UnitCodeList\": UnitCodeList,\n    \".io.restorecommerce.unit_code.UnitCodeListResponse\": UnitCodeListResponse,\n    \".io.restorecommerce.unit_code.UnitCodeResponse\": UnitCodeResponse,\n    \".io.restorecommerce.unit_code.UnitCode\": UnitCode,\n  },\n  dependencies: [protoMetadata1, protoMetadata2, protoMetadata3, protoMetadata4, protoMetadata5],\n  options: { services: { \"UnitCodeService\": { methods: { \"Read\": { \"is_query\": true } } } } },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/template.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { Attribute, protoMetadata as protoMetadata2 } from \"./attribute\";\nimport { protoMetadata as protoMetadata6, Subject } from \"./auth\";\nimport { File, protoMetadata as protoMetadata4 } from \"./file\";\nimport { Image, protoMetadata as protoMetadata3 } from \"./image\";\nimport { Meta, protoMetadata as protoMetadata5 } from \"./meta\";\nimport { protoMetadata as protoMetadata8 } from \"./options\";\nimport { DeleteRequest, DeleteResponse, protoMetadata as protoMetadata1, ReadRequest } from \"./resource_base\";\nimport { OperationStatus, protoMetadata as protoMetadata7, Status } from \"./status\";\n\nexport const protobufPackage = \"io.restorecommerce.template\";\n\nexport enum TemplateUseCase {\n  /** MISCELLANEOUS - may use attributes for use case identication */\n  MISCELLANEOUS = \"MISCELLANEOUS\",\n  INVOICE_PDF = \"INVOICE_PDF\",\n  INVOICE_EMAIL_BODY = \"INVOICE_EMAIL_BODY\",\n  INVOICE_EMAIL_SUBJECT = \"INVOICE_EMAIL_SUBJECT\",\n  INVITATION_EMAIL_BODY = \"INVITATION_EMAIL_BODY\",\n  INVITATION_EMAIL_SUBJECT = \"INVITATION_EMAIL_SUBJECT\",\n  REGISTRATION_EMAIL_BODY = \"REGISTRATION_EMAIL_BODY\",\n  REGISTRATION_EMAIL_SUBJECT = \"REGISTRATION_EMAIL_SUBJECT\",\n  CHANGE_PASSWORD_EMAIL_BODY = \"CHANGE_PASSWORD_EMAIL_BODY\",\n  CHANGE_PASSWORD_EMAIL_SUBJECT = \"CHANGE_PASSWORD_EMAIL_SUBJECT\",\n  ORDER_PRENDING_EMAIL = \"ORDER_PRENDING_EMAIL\",\n  ORDER_SUBMITTED_EMAIL = \"ORDER_SUBMITTED_EMAIL\",\n  ORDER_COMPLETION_EMAIL = \"ORDER_COMPLETION_EMAIL\",\n  ORDER_CANCELATION_EMAIL = \"ORDER_CANCELATION_EMAIL\",\n  ORDER_WITHDRAWN_EMAIL = \"ORDER_WITHDRAWN_EMAIL\",\n  ORDER_INVALID_EMAIL = \"ORDER_INVALID_EMAIL\",\n  FULFILLMENT_PENDING_EMAIL = \"FULFILLMENT_PENDING_EMAIL\",\n  FULFILLMENT_SUBMITTED_EMAIL = \"FULFILLMENT_SUBMITTED_EMAIL\",\n  FULFILLMENT_COMPLETION_EMAIL = \"FULFILLMENT_COMPLETION_EMAIL\",\n  FULFILLMENT_CANCELATION_EMAIL = \"FULFILLMENT_CANCELATION_EMAIL\",\n  FULFILLMENT_WITHDRAWN_EMAIL = \"FULFILLMENT_WITHDRAWN_EMAIL\",\n  FULFILLMENT_FAILED_EMAIL = \"FULFILLMENT_FAILED_EMAIL\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function templateUseCaseFromJSON(object: any): TemplateUseCase {\n  switch (object) {\n    case 0:\n    case \"MISCELLANEOUS\":\n      return TemplateUseCase.MISCELLANEOUS;\n    case 1:\n    case \"INVOICE_PDF\":\n      return TemplateUseCase.INVOICE_PDF;\n    case 2:\n    case \"INVOICE_EMAIL_BODY\":\n      return TemplateUseCase.INVOICE_EMAIL_BODY;\n    case 3:\n    case \"INVOICE_EMAIL_SUBJECT\":\n      return TemplateUseCase.INVOICE_EMAIL_SUBJECT;\n    case 4:\n    case \"INVITATION_EMAIL_BODY\":\n      return TemplateUseCase.INVITATION_EMAIL_BODY;\n    case 5:\n    case \"INVITATION_EMAIL_SUBJECT\":\n      return TemplateUseCase.INVITATION_EMAIL_SUBJECT;\n    case 6:\n    case \"REGISTRATION_EMAIL_BODY\":\n      return TemplateUseCase.REGISTRATION_EMAIL_BODY;\n    case 7:\n    case \"REGISTRATION_EMAIL_SUBJECT\":\n      return TemplateUseCase.REGISTRATION_EMAIL_SUBJECT;\n    case 8:\n    case \"CHANGE_PASSWORD_EMAIL_BODY\":\n      return TemplateUseCase.CHANGE_PASSWORD_EMAIL_BODY;\n    case 9:\n    case \"CHANGE_PASSWORD_EMAIL_SUBJECT\":\n      return TemplateUseCase.CHANGE_PASSWORD_EMAIL_SUBJECT;\n    case 10:\n    case \"ORDER_PRENDING_EMAIL\":\n      return TemplateUseCase.ORDER_PRENDING_EMAIL;\n    case 11:\n    case \"ORDER_SUBMITTED_EMAIL\":\n      return TemplateUseCase.ORDER_SUBMITTED_EMAIL;\n    case 12:\n    case \"ORDER_COMPLETION_EMAIL\":\n      return TemplateUseCase.ORDER_COMPLETION_EMAIL;\n    case 13:\n    case \"ORDER_CANCELATION_EMAIL\":\n      return TemplateUseCase.ORDER_CANCELATION_EMAIL;\n    case 14:\n    case \"ORDER_WITHDRAWN_EMAIL\":\n      return TemplateUseCase.ORDER_WITHDRAWN_EMAIL;\n    case 15:\n    case \"ORDER_INVALID_EMAIL\":\n      return TemplateUseCase.ORDER_INVALID_EMAIL;\n    case 16:\n    case \"FULFILLMENT_PENDING_EMAIL\":\n      return TemplateUseCase.FULFILLMENT_PENDING_EMAIL;\n    case 17:\n    case \"FULFILLMENT_SUBMITTED_EMAIL\":\n      return TemplateUseCase.FULFILLMENT_SUBMITTED_EMAIL;\n    case 18:\n    case \"FULFILLMENT_COMPLETION_EMAIL\":\n      return TemplateUseCase.FULFILLMENT_COMPLETION_EMAIL;\n    case 19:\n    case \"FULFILLMENT_CANCELATION_EMAIL\":\n      return TemplateUseCase.FULFILLMENT_CANCELATION_EMAIL;\n    case 20:\n    case \"FULFILLMENT_WITHDRAWN_EMAIL\":\n      return TemplateUseCase.FULFILLMENT_WITHDRAWN_EMAIL;\n    case 21:\n    case \"FULFILLMENT_FAILED_EMAIL\":\n      return TemplateUseCase.FULFILLMENT_FAILED_EMAIL;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return TemplateUseCase.UNRECOGNIZED;\n  }\n}\n\nexport function templateUseCaseToJSON(object: TemplateUseCase): string {\n  switch (object) {\n    case TemplateUseCase.MISCELLANEOUS:\n      return \"MISCELLANEOUS\";\n    case TemplateUseCase.INVOICE_PDF:\n      return \"INVOICE_PDF\";\n    case TemplateUseCase.INVOICE_EMAIL_BODY:\n      return \"INVOICE_EMAIL_BODY\";\n    case TemplateUseCase.INVOICE_EMAIL_SUBJECT:\n      return \"INVOICE_EMAIL_SUBJECT\";\n    case TemplateUseCase.INVITATION_EMAIL_BODY:\n      return \"INVITATION_EMAIL_BODY\";\n    case TemplateUseCase.INVITATION_EMAIL_SUBJECT:\n      return \"INVITATION_EMAIL_SUBJECT\";\n    case TemplateUseCase.REGISTRATION_EMAIL_BODY:\n      return \"REGISTRATION_EMAIL_BODY\";\n    case TemplateUseCase.REGISTRATION_EMAIL_SUBJECT:\n      return \"REGISTRATION_EMAIL_SUBJECT\";\n    case TemplateUseCase.CHANGE_PASSWORD_EMAIL_BODY:\n      return \"CHANGE_PASSWORD_EMAIL_BODY\";\n    case TemplateUseCase.CHANGE_PASSWORD_EMAIL_SUBJECT:\n      return \"CHANGE_PASSWORD_EMAIL_SUBJECT\";\n    case TemplateUseCase.ORDER_PRENDING_EMAIL:\n      return \"ORDER_PRENDING_EMAIL\";\n    case TemplateUseCase.ORDER_SUBMITTED_EMAIL:\n      return \"ORDER_SUBMITTED_EMAIL\";\n    case TemplateUseCase.ORDER_COMPLETION_EMAIL:\n      return \"ORDER_COMPLETION_EMAIL\";\n    case TemplateUseCase.ORDER_CANCELATION_EMAIL:\n      return \"ORDER_CANCELATION_EMAIL\";\n    case TemplateUseCase.ORDER_WITHDRAWN_EMAIL:\n      return \"ORDER_WITHDRAWN_EMAIL\";\n    case TemplateUseCase.ORDER_INVALID_EMAIL:\n      return \"ORDER_INVALID_EMAIL\";\n    case TemplateUseCase.FULFILLMENT_PENDING_EMAIL:\n      return \"FULFILLMENT_PENDING_EMAIL\";\n    case TemplateUseCase.FULFILLMENT_SUBMITTED_EMAIL:\n      return \"FULFILLMENT_SUBMITTED_EMAIL\";\n    case TemplateUseCase.FULFILLMENT_COMPLETION_EMAIL:\n      return \"FULFILLMENT_COMPLETION_EMAIL\";\n    case TemplateUseCase.FULFILLMENT_CANCELATION_EMAIL:\n      return \"FULFILLMENT_CANCELATION_EMAIL\";\n    case TemplateUseCase.FULFILLMENT_WITHDRAWN_EMAIL:\n      return \"FULFILLMENT_WITHDRAWN_EMAIL\";\n    case TemplateUseCase.FULFILLMENT_FAILED_EMAIL:\n      return \"FULFILLMENT_FAILED_EMAIL\";\n    case TemplateUseCase.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function templateUseCaseToNumber(object: TemplateUseCase): number {\n  switch (object) {\n    case TemplateUseCase.MISCELLANEOUS:\n      return 0;\n    case TemplateUseCase.INVOICE_PDF:\n      return 1;\n    case TemplateUseCase.INVOICE_EMAIL_BODY:\n      return 2;\n    case TemplateUseCase.INVOICE_EMAIL_SUBJECT:\n      return 3;\n    case TemplateUseCase.INVITATION_EMAIL_BODY:\n      return 4;\n    case TemplateUseCase.INVITATION_EMAIL_SUBJECT:\n      return 5;\n    case TemplateUseCase.REGISTRATION_EMAIL_BODY:\n      return 6;\n    case TemplateUseCase.REGISTRATION_EMAIL_SUBJECT:\n      return 7;\n    case TemplateUseCase.CHANGE_PASSWORD_EMAIL_BODY:\n      return 8;\n    case TemplateUseCase.CHANGE_PASSWORD_EMAIL_SUBJECT:\n      return 9;\n    case TemplateUseCase.ORDER_PRENDING_EMAIL:\n      return 10;\n    case TemplateUseCase.ORDER_SUBMITTED_EMAIL:\n      return 11;\n    case TemplateUseCase.ORDER_COMPLETION_EMAIL:\n      return 12;\n    case TemplateUseCase.ORDER_CANCELATION_EMAIL:\n      return 13;\n    case TemplateUseCase.ORDER_WITHDRAWN_EMAIL:\n      return 14;\n    case TemplateUseCase.ORDER_INVALID_EMAIL:\n      return 15;\n    case TemplateUseCase.FULFILLMENT_PENDING_EMAIL:\n      return 16;\n    case TemplateUseCase.FULFILLMENT_SUBMITTED_EMAIL:\n      return 17;\n    case TemplateUseCase.FULFILLMENT_COMPLETION_EMAIL:\n      return 18;\n    case TemplateUseCase.FULFILLMENT_CANCELATION_EMAIL:\n      return 19;\n    case TemplateUseCase.FULFILLMENT_WITHDRAWN_EMAIL:\n      return 20;\n    case TemplateUseCase.FULFILLMENT_FAILED_EMAIL:\n      return 21;\n    case TemplateUseCase.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\nexport interface TemplateList {\n  items?: Template[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface TemplateListResponse {\n  items?: TemplateResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface TemplateResponse {\n  payload?: Template | undefined;\n  status?: Status | undefined;\n}\n\nexport interface Localization {\n  /** locales suported by this file e.g. en, en_US, en_UK, ... */\n  locales?:\n    | string[]\n    | undefined;\n  /** JSON or CSV */\n  l10n?: File | undefined;\n}\n\nexport interface Template {\n  id?: string | undefined;\n  meta?: Meta | undefined;\n  name?: string | undefined;\n  description?:\n    | string\n    | undefined;\n  /** URN or ENUM to identify what this template is used for */\n  useCase?:\n    | string\n    | undefined;\n  /** sort number */\n  ordinal?:\n    | number\n    | undefined;\n  /** e.g. header, body, footer */\n  section?:\n    | string\n    | undefined;\n  /** e.g. text/html */\n  bodies?: File[] | undefined;\n  layouts?:\n    | File[]\n    | undefined;\n  /** e.g. application/css */\n  styles?: File[] | undefined;\n  images?: Image[] | undefined;\n  localizations?: Localization[] | undefined;\n  attributes?: Attribute[] | undefined;\n}\n\nfunction createBaseTemplateList(): TemplateList {\n  return {};\n}\n\nexport const TemplateList: MessageFns<TemplateList> = {\n  encode(message: TemplateList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        Template.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): TemplateList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseTemplateList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = Template.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): TemplateList {\n    return {\n      items: globalThis.Array.isArray(object?.items) ? object.items.map((e: any) => Template.fromJSON(e)) : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: TemplateList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => Template.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<TemplateList>): TemplateList {\n    return TemplateList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<TemplateList>): TemplateList {\n    const message = createBaseTemplateList();\n    message.items = object.items?.map((e) => Template.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseTemplateListResponse(): TemplateListResponse {\n  return {};\n}\n\nexport const TemplateListResponse: MessageFns<TemplateListResponse> = {\n  encode(message: TemplateListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        TemplateResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): TemplateListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseTemplateListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = TemplateResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): TemplateListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => TemplateResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: TemplateListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => TemplateResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<TemplateListResponse>): TemplateListResponse {\n    return TemplateListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<TemplateListResponse>): TemplateListResponse {\n    const message = createBaseTemplateListResponse();\n    message.items = object.items?.map((e) => TemplateResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseTemplateResponse(): TemplateResponse {\n  return {};\n}\n\nexport const TemplateResponse: MessageFns<TemplateResponse> = {\n  encode(message: TemplateResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      Template.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): TemplateResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseTemplateResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = Template.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): TemplateResponse {\n    return {\n      payload: isSet(object.payload) ? Template.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: TemplateResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = Template.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<TemplateResponse>): TemplateResponse {\n    return TemplateResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<TemplateResponse>): TemplateResponse {\n    const message = createBaseTemplateResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? Template.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseLocalization(): Localization {\n  return {};\n}\n\nexport const Localization: MessageFns<Localization> = {\n  encode(message: Localization, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.locales !== undefined && message.locales.length !== 0) {\n      for (const v of message.locales) {\n        writer.uint32(10).string(v!);\n      }\n    }\n    if (message.l10n !== undefined) {\n      File.encode(message.l10n, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Localization {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseLocalization();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.locales === undefined) {\n            message.locales = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.locales!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.l10n = File.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Localization {\n    return {\n      locales: globalThis.Array.isArray(object?.locales)\n        ? object.locales.map((e: any) => globalThis.String(e))\n        : undefined,\n      l10n: isSet(object.l10n) ? File.fromJSON(object.l10n) : undefined,\n    };\n  },\n\n  toJSON(message: Localization): unknown {\n    const obj: any = {};\n    if (message.locales?.length) {\n      obj.locales = message.locales;\n    }\n    if (message.l10n !== undefined) {\n      obj.l10n = File.toJSON(message.l10n);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Localization>): Localization {\n    return Localization.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Localization>): Localization {\n    const message = createBaseLocalization();\n    message.locales = object.locales?.map((e) => e) || undefined;\n    message.l10n = (object.l10n !== undefined && object.l10n !== null) ? File.fromPartial(object.l10n) : undefined;\n    return message;\n  },\n};\n\nfunction createBaseTemplate(): Template {\n  return {};\n}\n\nexport const Template: MessageFns<Template> = {\n  encode(message: Template, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(18).fork()).join();\n    }\n    if (message.name !== undefined) {\n      writer.uint32(26).string(message.name);\n    }\n    if (message.description !== undefined) {\n      writer.uint32(34).string(message.description);\n    }\n    if (message.useCase !== undefined) {\n      writer.uint32(42).string(message.useCase);\n    }\n    if (message.ordinal !== undefined) {\n      writer.uint32(48).uint32(message.ordinal);\n    }\n    if (message.section !== undefined) {\n      writer.uint32(58).string(message.section);\n    }\n    if (message.bodies !== undefined && message.bodies.length !== 0) {\n      for (const v of message.bodies) {\n        File.encode(v!, writer.uint32(66).fork()).join();\n      }\n    }\n    if (message.layouts !== undefined && message.layouts.length !== 0) {\n      for (const v of message.layouts) {\n        File.encode(v!, writer.uint32(74).fork()).join();\n      }\n    }\n    if (message.styles !== undefined && message.styles.length !== 0) {\n      for (const v of message.styles) {\n        File.encode(v!, writer.uint32(82).fork()).join();\n      }\n    }\n    if (message.images !== undefined && message.images.length !== 0) {\n      for (const v of message.images) {\n        Image.encode(v!, writer.uint32(90).fork()).join();\n      }\n    }\n    if (message.localizations !== undefined && message.localizations.length !== 0) {\n      for (const v of message.localizations) {\n        Localization.encode(v!, writer.uint32(98).fork()).join();\n      }\n    }\n    if (message.attributes !== undefined && message.attributes.length !== 0) {\n      for (const v of message.attributes) {\n        Attribute.encode(v!, writer.uint32(114).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Template {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseTemplate();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.useCase = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 48) {\n            break;\n          }\n\n          message.ordinal = reader.uint32();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.section = reader.string();\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          if (message.bodies === undefined) {\n            message.bodies = [];\n          }\n          const el = File.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.bodies!.push(el);\n          }\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          if (message.layouts === undefined) {\n            message.layouts = [];\n          }\n          const el = File.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.layouts!.push(el);\n          }\n          continue;\n        }\n        case 10: {\n          if (tag !== 82) {\n            break;\n          }\n\n          if (message.styles === undefined) {\n            message.styles = [];\n          }\n          const el = File.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.styles!.push(el);\n          }\n          continue;\n        }\n        case 11: {\n          if (tag !== 90) {\n            break;\n          }\n\n          if (message.images === undefined) {\n            message.images = [];\n          }\n          const el = Image.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.images!.push(el);\n          }\n          continue;\n        }\n        case 12: {\n          if (tag !== 98) {\n            break;\n          }\n\n          if (message.localizations === undefined) {\n            message.localizations = [];\n          }\n          const el = Localization.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.localizations!.push(el);\n          }\n          continue;\n        }\n        case 14: {\n          if (tag !== 114) {\n            break;\n          }\n\n          if (message.attributes === undefined) {\n            message.attributes = [];\n          }\n          const el = Attribute.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.attributes!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Template {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      description: isSet(object.description) ? globalThis.String(object.description) : undefined,\n      useCase: isSet(object.useCase) ? globalThis.String(object.useCase) : undefined,\n      ordinal: isSet(object.ordinal) ? globalThis.Number(object.ordinal) : undefined,\n      section: isSet(object.section) ? globalThis.String(object.section) : undefined,\n      bodies: globalThis.Array.isArray(object?.bodies) ? object.bodies.map((e: any) => File.fromJSON(e)) : undefined,\n      layouts: globalThis.Array.isArray(object?.layouts) ? object.layouts.map((e: any) => File.fromJSON(e)) : undefined,\n      styles: globalThis.Array.isArray(object?.styles) ? object.styles.map((e: any) => File.fromJSON(e)) : undefined,\n      images: globalThis.Array.isArray(object?.images) ? object.images.map((e: any) => Image.fromJSON(e)) : undefined,\n      localizations: globalThis.Array.isArray(object?.localizations)\n        ? object.localizations.map((e: any) => Localization.fromJSON(e))\n        : undefined,\n      attributes: globalThis.Array.isArray(object?.attributes)\n        ? object.attributes.map((e: any) => Attribute.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: Template): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.description !== undefined) {\n      obj.description = message.description;\n    }\n    if (message.useCase !== undefined) {\n      obj.useCase = message.useCase;\n    }\n    if (message.ordinal !== undefined) {\n      obj.ordinal = Math.round(message.ordinal);\n    }\n    if (message.section !== undefined) {\n      obj.section = message.section;\n    }\n    if (message.bodies?.length) {\n      obj.bodies = message.bodies.map((e) => File.toJSON(e));\n    }\n    if (message.layouts?.length) {\n      obj.layouts = message.layouts.map((e) => File.toJSON(e));\n    }\n    if (message.styles?.length) {\n      obj.styles = message.styles.map((e) => File.toJSON(e));\n    }\n    if (message.images?.length) {\n      obj.images = message.images.map((e) => Image.toJSON(e));\n    }\n    if (message.localizations?.length) {\n      obj.localizations = message.localizations.map((e) => Localization.toJSON(e));\n    }\n    if (message.attributes?.length) {\n      obj.attributes = message.attributes.map((e) => Attribute.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Template>): Template {\n    return Template.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Template>): Template {\n    const message = createBaseTemplate();\n    message.id = object.id ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.name = object.name ?? undefined;\n    message.description = object.description ?? undefined;\n    message.useCase = object.useCase ?? undefined;\n    message.ordinal = object.ordinal ?? undefined;\n    message.section = object.section ?? undefined;\n    message.bodies = object.bodies?.map((e) => File.fromPartial(e)) || undefined;\n    message.layouts = object.layouts?.map((e) => File.fromPartial(e)) || undefined;\n    message.styles = object.styles?.map((e) => File.fromPartial(e)) || undefined;\n    message.images = object.images?.map((e) => Image.fromPartial(e)) || undefined;\n    message.localizations = object.localizations?.map((e) => Localization.fromPartial(e)) || undefined;\n    message.attributes = object.attributes?.map((e) => Attribute.fromPartial(e)) || undefined;\n    return message;\n  },\n};\n\n/** Microservice definition. */\nexport type TemplateServiceDefinition = typeof TemplateServiceDefinition;\nexport const TemplateServiceDefinition = {\n  name: \"TemplateService\",\n  fullName: \"io.restorecommerce.template.TemplateService\",\n  methods: {\n    read: {\n      name: \"Read\",\n      requestType: ReadRequest,\n      requestStream: false,\n      responseType: TemplateListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    create: {\n      name: \"Create\",\n      requestType: TemplateList,\n      requestStream: false,\n      responseType: TemplateListResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n    update: {\n      name: \"Update\",\n      requestType: TemplateList,\n      requestStream: false,\n      responseType: TemplateListResponse,\n      responseStream: false,\n      options: {},\n    },\n    upsert: {\n      name: \"Upsert\",\n      requestType: TemplateList,\n      requestStream: false,\n      responseType: TemplateListResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface TemplateServiceImplementation<CallContextExt = {}> {\n  read(request: ReadRequest, context: CallContext & CallContextExt): Promise<DeepPartial<TemplateListResponse>>;\n  create(request: TemplateList, context: CallContext & CallContextExt): Promise<DeepPartial<TemplateListResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n  update(request: TemplateList, context: CallContext & CallContextExt): Promise<DeepPartial<TemplateListResponse>>;\n  upsert(request: TemplateList, context: CallContext & CallContextExt): Promise<DeepPartial<TemplateListResponse>>;\n}\n\nexport interface TemplateServiceClient<CallOptionsExt = {}> {\n  read(request: DeepPartial<ReadRequest>, options?: CallOptions & CallOptionsExt): Promise<TemplateListResponse>;\n  create(request: DeepPartial<TemplateList>, options?: CallOptions & CallOptionsExt): Promise<TemplateListResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n  update(request: DeepPartial<TemplateList>, options?: CallOptions & CallOptionsExt): Promise<TemplateListResponse>;\n  upsert(request: DeepPartial<TemplateList>, options?: CallOptions & CallOptionsExt): Promise<TemplateListResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/template.proto\",\n    \"package\": \"io.restorecommerce.template\",\n    \"dependency\": [\n      \"io/restorecommerce/resource_base.proto\",\n      \"io/restorecommerce/attribute.proto\",\n      \"io/restorecommerce/image.proto\",\n      \"io/restorecommerce/file.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/options.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"TemplateList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.template.Template\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"TemplateListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.template.TemplateResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"TemplateResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.template.Template\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Localization\",\n      \"field\": [{\n        \"name\": \"locales\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"locales\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"l10n\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.file.File\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"l10n\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_l10n\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Template\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"name\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"description\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"description\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"use_case\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"useCase\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"ordinal\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"ordinal\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"section\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"section\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"bodies\",\n        \"number\": 8,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.file.File\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"bodies\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"layouts\",\n        \"number\": 9,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.file.File\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"layouts\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"styles\",\n        \"number\": 10,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.file.File\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"styles\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"images\",\n        \"number\": 11,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.image.Image\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"images\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"localizations\",\n        \"number\": 12,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.template.Localization\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"localizations\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"attributes\",\n        \"number\": 14,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.attribute.Attribute\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"attributes\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_name\", \"options\": undefined },\n        { \"name\": \"_description\", \"options\": undefined },\n        { \"name\": \"_use_case\", \"options\": undefined },\n        { \"name\": \"_ordinal\", \"options\": undefined },\n        { \"name\": \"_section\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [{\n      \"name\": \"TemplateUseCase\",\n      \"value\": [\n        { \"name\": \"MISCELLANEOUS\", \"number\": 0, \"options\": undefined },\n        { \"name\": \"INVOICE_PDF\", \"number\": 1, \"options\": undefined },\n        { \"name\": \"INVOICE_EMAIL_BODY\", \"number\": 2, \"options\": undefined },\n        { \"name\": \"INVOICE_EMAIL_SUBJECT\", \"number\": 3, \"options\": undefined },\n        { \"name\": \"INVITATION_EMAIL_BODY\", \"number\": 4, \"options\": undefined },\n        { \"name\": \"INVITATION_EMAIL_SUBJECT\", \"number\": 5, \"options\": undefined },\n        { \"name\": \"REGISTRATION_EMAIL_BODY\", \"number\": 6, \"options\": undefined },\n        { \"name\": \"REGISTRATION_EMAIL_SUBJECT\", \"number\": 7, \"options\": undefined },\n        { \"name\": \"CHANGE_PASSWORD_EMAIL_BODY\", \"number\": 8, \"options\": undefined },\n        { \"name\": \"CHANGE_PASSWORD_EMAIL_SUBJECT\", \"number\": 9, \"options\": undefined },\n        { \"name\": \"ORDER_PRENDING_EMAIL\", \"number\": 10, \"options\": undefined },\n        { \"name\": \"ORDER_SUBMITTED_EMAIL\", \"number\": 11, \"options\": undefined },\n        { \"name\": \"ORDER_COMPLETION_EMAIL\", \"number\": 12, \"options\": undefined },\n        { \"name\": \"ORDER_CANCELATION_EMAIL\", \"number\": 13, \"options\": undefined },\n        { \"name\": \"ORDER_WITHDRAWN_EMAIL\", \"number\": 14, \"options\": undefined },\n        { \"name\": \"ORDER_INVALID_EMAIL\", \"number\": 15, \"options\": undefined },\n        { \"name\": \"FULFILLMENT_PENDING_EMAIL\", \"number\": 16, \"options\": undefined },\n        { \"name\": \"FULFILLMENT_SUBMITTED_EMAIL\", \"number\": 17, \"options\": undefined },\n        { \"name\": \"FULFILLMENT_COMPLETION_EMAIL\", \"number\": 18, \"options\": undefined },\n        { \"name\": \"FULFILLMENT_CANCELATION_EMAIL\", \"number\": 19, \"options\": undefined },\n        { \"name\": \"FULFILLMENT_WITHDRAWN_EMAIL\", \"number\": 20, \"options\": undefined },\n        { \"name\": \"FULFILLMENT_FAILED_EMAIL\", \"number\": 21, \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"service\": [{\n      \"name\": \"TemplateService\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ReadRequest\",\n        \"outputType\": \".io.restorecommerce.template.TemplateListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.template.TemplateList\",\n        \"outputType\": \".io.restorecommerce.template.TemplateListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.template.TemplateList\",\n        \"outputType\": \".io.restorecommerce.template.TemplateListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.template.TemplateList\",\n        \"outputType\": \".io.restorecommerce.template.TemplateListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [6, 0],\n        \"span\": [16, 0, 24, 1],\n        \"leadingComments\": \"\\n Microservice definition.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [5, 0, 2, 0],\n        \"span\": [27, 2, 20],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" may use attributes for use case identication\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 3, 2, 0],\n        \"span\": [69, 2, 30],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" locales suported by this file e.g. en, en_US, en_UK, ...\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 3, 2, 1],\n        \"span\": [70, 2, 49],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" JSON or CSV\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4, 2, 4],\n        \"span\": [78, 2, 31],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" URN or ENUM to identify what this template is used for\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4, 2, 5],\n        \"span\": [79, 2, 30],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" sort number\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4, 2, 6],\n        \"span\": [80, 2, 30],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" e.g. header, body, footer\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4, 2, 7],\n        \"span\": [81, 2, 51],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" e.g. text/html\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4, 2, 9],\n        \"span\": [83, 2, 52],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" e.g. application/css\\n\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.template.TemplateUseCase\": TemplateUseCase,\n    \".io.restorecommerce.template.TemplateList\": TemplateList,\n    \".io.restorecommerce.template.TemplateListResponse\": TemplateListResponse,\n    \".io.restorecommerce.template.TemplateResponse\": TemplateResponse,\n    \".io.restorecommerce.template.Localization\": Localization,\n    \".io.restorecommerce.template.Template\": Template,\n  },\n  dependencies: [\n    protoMetadata1,\n    protoMetadata2,\n    protoMetadata3,\n    protoMetadata4,\n    protoMetadata5,\n    protoMetadata6,\n    protoMetadata7,\n    protoMetadata8,\n  ],\n  options: { services: { \"TemplateService\": { methods: { \"Read\": { \"is_query\": true } } } } },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/command.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { protoMetadata as protoMetadata3, Subject } from \"./auth\";\nimport { Meta, protoMetadata as protoMetadata2 } from \"./meta\";\nimport { protoMetadata as protoMetadata5 } from \"./options\";\nimport { DeleteRequest, DeleteResponse, protoMetadata as protoMetadata1, ReadRequest } from \"./resource_base\";\nimport { OperationStatus, protoMetadata as protoMetadata4, Status } from \"./status\";\n\nexport const protobufPackage = \"io.restorecommerce.command\";\n\n/** command resource */\nexport interface Command {\n  id?: string | undefined;\n  meta?:\n    | Meta\n    | undefined;\n  /** command name */\n  name?:\n    | string\n    | undefined;\n  /** all possible parameters */\n  parameters?:\n    | CommandParameter[]\n    | undefined;\n  /** command description */\n  description?: string | undefined;\n}\n\nexport interface CommandParameter {\n  /** field name */\n  field?:\n    | string\n    | undefined;\n  /** field description */\n  description?:\n    | string\n    | undefined;\n  /** field's type */\n  type?:\n    | CommandParameter_ParameterType\n    | undefined;\n  /** dump properties in case of `object_value`` */\n  properties?: string | undefined;\n}\n\nexport enum CommandParameter_ParameterType {\n  boolean_value = \"boolean_value\",\n  object_value = \"object_value\",\n  array_value = \"array_value\",\n  number_value = \"number_value\",\n  string_value = \"string_value\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function commandParameter_ParameterTypeFromJSON(object: any): CommandParameter_ParameterType {\n  switch (object) {\n    case 0:\n    case \"boolean_value\":\n      return CommandParameter_ParameterType.boolean_value;\n    case 1:\n    case \"object_value\":\n      return CommandParameter_ParameterType.object_value;\n    case 2:\n    case \"array_value\":\n      return CommandParameter_ParameterType.array_value;\n    case 3:\n    case \"number_value\":\n      return CommandParameter_ParameterType.number_value;\n    case 4:\n    case \"string_value\":\n      return CommandParameter_ParameterType.string_value;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return CommandParameter_ParameterType.UNRECOGNIZED;\n  }\n}\n\nexport function commandParameter_ParameterTypeToJSON(object: CommandParameter_ParameterType): string {\n  switch (object) {\n    case CommandParameter_ParameterType.boolean_value:\n      return \"boolean_value\";\n    case CommandParameter_ParameterType.object_value:\n      return \"object_value\";\n    case CommandParameter_ParameterType.array_value:\n      return \"array_value\";\n    case CommandParameter_ParameterType.number_value:\n      return \"number_value\";\n    case CommandParameter_ParameterType.string_value:\n      return \"string_value\";\n    case CommandParameter_ParameterType.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function commandParameter_ParameterTypeToNumber(object: CommandParameter_ParameterType): number {\n  switch (object) {\n    case CommandParameter_ParameterType.boolean_value:\n      return 0;\n    case CommandParameter_ParameterType.object_value:\n      return 1;\n    case CommandParameter_ParameterType.array_value:\n      return 2;\n    case CommandParameter_ParameterType.number_value:\n      return 3;\n    case CommandParameter_ParameterType.string_value:\n      return 4;\n    case CommandParameter_ParameterType.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\nexport interface CommandList {\n  items?: Command[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface CommandListResponse {\n  items?: CommandResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface CommandResponse {\n  payload?: Command | undefined;\n  status?: Status | undefined;\n}\n\nfunction createBaseCommand(): Command {\n  return {};\n}\n\nexport const Command: MessageFns<Command> = {\n  encode(message: Command, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(18).fork()).join();\n    }\n    if (message.name !== undefined) {\n      writer.uint32(26).string(message.name);\n    }\n    if (message.parameters !== undefined && message.parameters.length !== 0) {\n      for (const v of message.parameters) {\n        CommandParameter.encode(v!, writer.uint32(34).fork()).join();\n      }\n    }\n    if (message.description !== undefined) {\n      writer.uint32(42).string(message.description);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Command {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCommand();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          if (message.parameters === undefined) {\n            message.parameters = [];\n          }\n          const el = CommandParameter.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.parameters!.push(el);\n          }\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Command {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      parameters: globalThis.Array.isArray(object?.parameters)\n        ? object.parameters.map((e: any) => CommandParameter.fromJSON(e))\n        : undefined,\n      description: isSet(object.description) ? globalThis.String(object.description) : undefined,\n    };\n  },\n\n  toJSON(message: Command): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.parameters?.length) {\n      obj.parameters = message.parameters.map((e) => CommandParameter.toJSON(e));\n    }\n    if (message.description !== undefined) {\n      obj.description = message.description;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Command>): Command {\n    return Command.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Command>): Command {\n    const message = createBaseCommand();\n    message.id = object.id ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.name = object.name ?? undefined;\n    message.parameters = object.parameters?.map((e) => CommandParameter.fromPartial(e)) || undefined;\n    message.description = object.description ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseCommandParameter(): CommandParameter {\n  return {};\n}\n\nexport const CommandParameter: MessageFns<CommandParameter> = {\n  encode(message: CommandParameter, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.field !== undefined) {\n      writer.uint32(10).string(message.field);\n    }\n    if (message.description !== undefined) {\n      writer.uint32(18).string(message.description);\n    }\n    if (message.type !== undefined) {\n      writer.uint32(24).int32(commandParameter_ParameterTypeToNumber(message.type));\n    }\n    if (message.properties !== undefined) {\n      writer.uint32(34).string(message.properties);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CommandParameter {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCommandParameter();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.field = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.type = commandParameter_ParameterTypeFromJSON(reader.int32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.properties = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CommandParameter {\n    return {\n      field: isSet(object.field) ? globalThis.String(object.field) : undefined,\n      description: isSet(object.description) ? globalThis.String(object.description) : undefined,\n      type: isSet(object.type) ? commandParameter_ParameterTypeFromJSON(object.type) : undefined,\n      properties: isSet(object.properties) ? globalThis.String(object.properties) : undefined,\n    };\n  },\n\n  toJSON(message: CommandParameter): unknown {\n    const obj: any = {};\n    if (message.field !== undefined) {\n      obj.field = message.field;\n    }\n    if (message.description !== undefined) {\n      obj.description = message.description;\n    }\n    if (message.type !== undefined) {\n      obj.type = commandParameter_ParameterTypeToJSON(message.type);\n    }\n    if (message.properties !== undefined) {\n      obj.properties = message.properties;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CommandParameter>): CommandParameter {\n    return CommandParameter.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CommandParameter>): CommandParameter {\n    const message = createBaseCommandParameter();\n    message.field = object.field ?? undefined;\n    message.description = object.description ?? undefined;\n    message.type = object.type ?? undefined;\n    message.properties = object.properties ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseCommandList(): CommandList {\n  return {};\n}\n\nexport const CommandList: MessageFns<CommandList> = {\n  encode(message: CommandList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        Command.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CommandList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCommandList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = Command.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CommandList {\n    return {\n      items: globalThis.Array.isArray(object?.items) ? object.items.map((e: any) => Command.fromJSON(e)) : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: CommandList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => Command.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CommandList>): CommandList {\n    return CommandList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CommandList>): CommandList {\n    const message = createBaseCommandList();\n    message.items = object.items?.map((e) => Command.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseCommandListResponse(): CommandListResponse {\n  return {};\n}\n\nexport const CommandListResponse: MessageFns<CommandListResponse> = {\n  encode(message: CommandListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        CommandResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CommandListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCommandListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = CommandResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CommandListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => CommandResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: CommandListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => CommandResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CommandListResponse>): CommandListResponse {\n    return CommandListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CommandListResponse>): CommandListResponse {\n    const message = createBaseCommandListResponse();\n    message.items = object.items?.map((e) => CommandResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseCommandResponse(): CommandResponse {\n  return {};\n}\n\nexport const CommandResponse: MessageFns<CommandResponse> = {\n  encode(message: CommandResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      Command.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CommandResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCommandResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = Command.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CommandResponse {\n    return {\n      payload: isSet(object.payload) ? Command.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: CommandResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = Command.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CommandResponse>): CommandResponse {\n    return CommandResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CommandResponse>): CommandResponse {\n    const message = createBaseCommandResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? Command.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nexport type CommandServiceDefinition = typeof CommandServiceDefinition;\nexport const CommandServiceDefinition = {\n  name: \"CommandService\",\n  fullName: \"io.restorecommerce.command.CommandService\",\n  methods: {\n    read: {\n      name: \"Read\",\n      requestType: ReadRequest,\n      requestStream: false,\n      responseType: CommandListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    create: {\n      name: \"Create\",\n      requestType: CommandList,\n      requestStream: false,\n      responseType: CommandListResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n    update: {\n      name: \"Update\",\n      requestType: CommandList,\n      requestStream: false,\n      responseType: CommandListResponse,\n      responseStream: false,\n      options: {},\n    },\n    upsert: {\n      name: \"Upsert\",\n      requestType: CommandList,\n      requestStream: false,\n      responseType: CommandListResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface CommandServiceImplementation<CallContextExt = {}> {\n  read(request: ReadRequest, context: CallContext & CallContextExt): Promise<DeepPartial<CommandListResponse>>;\n  create(request: CommandList, context: CallContext & CallContextExt): Promise<DeepPartial<CommandListResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n  update(request: CommandList, context: CallContext & CallContextExt): Promise<DeepPartial<CommandListResponse>>;\n  upsert(request: CommandList, context: CallContext & CallContextExt): Promise<DeepPartial<CommandListResponse>>;\n}\n\nexport interface CommandServiceClient<CallOptionsExt = {}> {\n  read(request: DeepPartial<ReadRequest>, options?: CallOptions & CallOptionsExt): Promise<CommandListResponse>;\n  create(request: DeepPartial<CommandList>, options?: CallOptions & CallOptionsExt): Promise<CommandListResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n  update(request: DeepPartial<CommandList>, options?: CallOptions & CallOptionsExt): Promise<CommandListResponse>;\n  upsert(request: DeepPartial<CommandList>, options?: CallOptions & CallOptionsExt): Promise<CommandListResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/command.proto\",\n    \"package\": \"io.restorecommerce.command\",\n    \"dependency\": [\n      \"io/restorecommerce/resource_base.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/options.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Command\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"name\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"parameters\",\n        \"number\": 4,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.command.CommandParameter\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"parameters\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"description\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"description\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }, { \"name\": \"_meta\", \"options\": undefined }, {\n        \"name\": \"_name\",\n        \"options\": undefined,\n      }, { \"name\": \"_description\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"CommandParameter\",\n      \"field\": [{\n        \"name\": \"field\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"field\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"description\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"description\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"type\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".io.restorecommerce.command.CommandParameter.ParameterType\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"type\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"properties\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"properties\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [{\n        \"name\": \"ParameterType\",\n        \"value\": [\n          { \"name\": \"boolean_value\", \"number\": 0, \"options\": undefined },\n          { \"name\": \"object_value\", \"number\": 1, \"options\": undefined },\n          { \"name\": \"array_value\", \"number\": 2, \"options\": undefined },\n          { \"name\": \"number_value\", \"number\": 3, \"options\": undefined },\n          { \"name\": \"string_value\", \"number\": 4, \"options\": undefined },\n        ],\n        \"options\": undefined,\n        \"reservedRange\": [],\n        \"reservedName\": [],\n      }],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_field\", \"options\": undefined }, { \"name\": \"_description\", \"options\": undefined }, {\n        \"name\": \"_type\",\n        \"options\": undefined,\n      }, { \"name\": \"_properties\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"CommandList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.command.Command\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"CommandListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.command.CommandResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"CommandResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.command.Command\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [{\n      \"name\": \"CommandService\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ReadRequest\",\n        \"outputType\": \".io.restorecommerce.command.CommandListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.command.CommandList\",\n        \"outputType\": \".io.restorecommerce.command.CommandListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.command.CommandList\",\n        \"outputType\": \".io.restorecommerce.command.CommandListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.command.CommandList\",\n        \"outputType\": \".io.restorecommerce.command.CommandListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [4, 0],\n        \"span\": [11, 0, 17, 1],\n        \"leadingComments\": \" command resource\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 0, 2, 2],\n        \"span\": [14, 2, 27],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" command name\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 0, 2, 3],\n        \"span\": [15, 2, 43],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" all possible parameters\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 0, 2, 4],\n        \"span\": [16, 2, 34],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" command description\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 1, 2, 0],\n        \"span\": [28, 2, 28],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \"  field name\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 1, 2, 1],\n        \"span\": [29, 2, 34],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" field description\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 1, 2, 2],\n        \"span\": [30, 2, 34],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" field's type\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 1, 2, 3],\n        \"span\": [31, 2, 33],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" dump properties in case of `object_value``\\n\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.command.Command\": Command,\n    \".io.restorecommerce.command.CommandParameter\": CommandParameter,\n    \".io.restorecommerce.command.CommandParameter.ParameterType\": CommandParameter_ParameterType,\n    \".io.restorecommerce.command.CommandList\": CommandList,\n    \".io.restorecommerce.command.CommandListResponse\": CommandListResponse,\n    \".io.restorecommerce.command.CommandResponse\": CommandResponse,\n  },\n  dependencies: [protoMetadata1, protoMetadata2, protoMetadata3, protoMetadata4, protoMetadata5],\n  options: { services: { \"CommandService\": { methods: { \"Read\": { \"is_query\": true } } } } },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/search.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { Any, protoMetadata as protoMetadata1 } from \"../../google/protobuf/any\";\nimport { protoMetadata as protoMetadata2, Subject } from \"./auth\";\nimport { protoMetadata as protoMetadata3 } from \"./options\";\n\nexport const protobufPackage = \"io.restorecommerce.search\";\n\nexport interface SearchRequest {\n  collection?: string | undefined;\n  text?: string | undefined;\n  acls?: string[] | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface SearchResponse {\n  data?: Any[] | undefined;\n}\n\nfunction createBaseSearchRequest(): SearchRequest {\n  return {};\n}\n\nexport const SearchRequest: MessageFns<SearchRequest> = {\n  encode(message: SearchRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.collection !== undefined) {\n      writer.uint32(10).string(message.collection);\n    }\n    if (message.text !== undefined) {\n      writer.uint32(18).string(message.text);\n    }\n    if (message.acls !== undefined && message.acls.length !== 0) {\n      for (const v of message.acls) {\n        writer.uint32(26).string(v!);\n      }\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(34).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): SearchRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseSearchRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.collection = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.text = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          if (message.acls === undefined) {\n            message.acls = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.acls!.push(el);\n          }\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): SearchRequest {\n    return {\n      collection: isSet(object.collection) ? globalThis.String(object.collection) : undefined,\n      text: isSet(object.text) ? globalThis.String(object.text) : undefined,\n      acls: globalThis.Array.isArray(object?.acls) ? object.acls.map((e: any) => globalThis.String(e)) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: SearchRequest): unknown {\n    const obj: any = {};\n    if (message.collection !== undefined) {\n      obj.collection = message.collection;\n    }\n    if (message.text !== undefined) {\n      obj.text = message.text;\n    }\n    if (message.acls?.length) {\n      obj.acls = message.acls;\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<SearchRequest>): SearchRequest {\n    return SearchRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<SearchRequest>): SearchRequest {\n    const message = createBaseSearchRequest();\n    message.collection = object.collection ?? undefined;\n    message.text = object.text ?? undefined;\n    message.acls = object.acls?.map((e) => e) || undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseSearchResponse(): SearchResponse {\n  return {};\n}\n\nexport const SearchResponse: MessageFns<SearchResponse> = {\n  encode(message: SearchResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.data !== undefined && message.data.length !== 0) {\n      for (const v of message.data) {\n        Any.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): SearchResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseSearchResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.data === undefined) {\n            message.data = [];\n          }\n          const el = Any.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.data!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): SearchResponse {\n    return { data: globalThis.Array.isArray(object?.data) ? object.data.map((e: any) => Any.fromJSON(e)) : undefined };\n  },\n\n  toJSON(message: SearchResponse): unknown {\n    const obj: any = {};\n    if (message.data?.length) {\n      obj.data = message.data.map((e) => Any.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<SearchResponse>): SearchResponse {\n    return SearchResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<SearchResponse>): SearchResponse {\n    const message = createBaseSearchResponse();\n    message.data = object.data?.map((e) => Any.fromPartial(e)) || undefined;\n    return message;\n  },\n};\n\n/** Service provides the CRUD operations */\nexport type SearchServiceDefinition = typeof SearchServiceDefinition;\nexport const SearchServiceDefinition = {\n  name: \"SearchService\",\n  fullName: \"io.restorecommerce.search.SearchService\",\n  methods: {\n    search: {\n      name: \"Search\",\n      requestType: SearchRequest,\n      requestStream: false,\n      responseType: SearchResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface SearchServiceImplementation<CallContextExt = {}> {\n  search(request: SearchRequest, context: CallContext & CallContextExt): Promise<DeepPartial<SearchResponse>>;\n}\n\nexport interface SearchServiceClient<CallOptionsExt = {}> {\n  search(request: DeepPartial<SearchRequest>, options?: CallOptions & CallOptionsExt): Promise<SearchResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/search.proto\",\n    \"package\": \"io.restorecommerce.search\",\n    \"dependency\": [\"google/protobuf/any.proto\", \"io/restorecommerce/auth.proto\", \"io/restorecommerce/options.proto\"],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"SearchRequest\",\n      \"field\": [{\n        \"name\": \"collection\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"collection\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"text\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"text\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"acls\",\n        \"number\": 3,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"acls\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_collection\", \"options\": undefined }, { \"name\": \"_text\", \"options\": undefined }, {\n        \"name\": \"_subject\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"SearchResponse\",\n      \"field\": [{\n        \"name\": \"data\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Any\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"data\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [{\n      \"name\": \"SearchService\",\n      \"method\": [{\n        \"name\": \"Search\",\n        \"inputType\": \".io.restorecommerce.search.SearchRequest\",\n        \"outputType\": \".io.restorecommerce.search.SearchResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [6, 0],\n        \"span\": [8, 0, 10, 1],\n        \"leadingComments\": \" Service provides the CRUD operations\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.search.SearchRequest\": SearchRequest,\n    \".io.restorecommerce.search.SearchResponse\": SearchResponse,\n  },\n  dependencies: [protoMetadata1, protoMetadata2, protoMetadata3],\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/rule.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { Attribute, protoMetadata as protoMetadata4 } from \"./attribute\";\nimport { protoMetadata as protoMetadata3, Subject } from \"./auth\";\nimport { FilterOp, protoMetadata as protoMetadata6 } from \"./filter\";\nimport { Meta, protoMetadata as protoMetadata2 } from \"./meta\";\nimport { protoMetadata as protoMetadata7 } from \"./options\";\nimport { DeleteRequest, DeleteResponse, protoMetadata as protoMetadata1, ReadRequest } from \"./resource_base\";\nimport { OperationStatus, protoMetadata as protoMetadata5, Status } from \"./status\";\n\nexport const protobufPackage = \"io.restorecommerce.rule\";\n\n/** Resulting effect from a Policy or Rule. */\nexport enum Effect {\n  PERMIT = \"PERMIT\",\n  DENY = \"DENY\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function effectFromJSON(object: any): Effect {\n  switch (object) {\n    case 0:\n    case \"PERMIT\":\n      return Effect.PERMIT;\n    case 1:\n    case \"DENY\":\n      return Effect.DENY;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return Effect.UNRECOGNIZED;\n  }\n}\n\nexport function effectToJSON(object: Effect): string {\n  switch (object) {\n    case Effect.PERMIT:\n      return \"PERMIT\";\n    case Effect.DENY:\n      return \"DENY\";\n    case Effect.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function effectToNumber(object: Effect): number {\n  switch (object) {\n    case Effect.PERMIT:\n      return 0;\n    case Effect.DENY:\n      return 1;\n    case Effect.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\n/** Target specified by a Rule or a Request. */\nexport interface Target {\n  subjects?: Attribute[] | undefined;\n  resources?: Attribute[] | undefined;\n  actions?: Attribute[] | undefined;\n}\n\nexport interface Rule {\n  id?: string | undefined;\n  meta?: Meta | undefined;\n  name?: string | undefined;\n  description?: string | undefined;\n  target?: Target | undefined;\n  contextQuery?:\n    | ContextQuery\n    | undefined;\n  /** JS code */\n  condition?: string | undefined;\n  effect?: Effect | undefined;\n  evaluationCacheable?: boolean | undefined;\n}\n\n/** used for `whatIsAllowed` / reverse queries */\nexport interface RuleRQ {\n  id?: string | undefined;\n  target?: Target | undefined;\n  effect?: Effect | undefined;\n  condition?: string | undefined;\n  contextQuery?: ContextQuery | undefined;\n  evaluationCacheable?: boolean | undefined;\n}\n\nexport interface RuleList {\n  items?: Rule[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface RuleListResponse {\n  items?: RuleResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface RuleResponse {\n  payload?: Rule | undefined;\n  status?: Status | undefined;\n}\n\n/**\n * Query to pull resources from an external service\n *  and append them to the request's context.\n * The retrieved data can then be passed onto the request's context\n */\nexport interface ContextQuery {\n  filters?: FilterOp[] | undefined;\n  query?: string | undefined;\n}\n\nfunction createBaseTarget(): Target {\n  return {};\n}\n\nexport const Target: MessageFns<Target> = {\n  encode(message: Target, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.subjects !== undefined && message.subjects.length !== 0) {\n      for (const v of message.subjects) {\n        Attribute.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.resources !== undefined && message.resources.length !== 0) {\n      for (const v of message.resources) {\n        Attribute.encode(v!, writer.uint32(18).fork()).join();\n      }\n    }\n    if (message.actions !== undefined && message.actions.length !== 0) {\n      for (const v of message.actions) {\n        Attribute.encode(v!, writer.uint32(26).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Target {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseTarget();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.subjects === undefined) {\n            message.subjects = [];\n          }\n          const el = Attribute.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.subjects!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          if (message.resources === undefined) {\n            message.resources = [];\n          }\n          const el = Attribute.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.resources!.push(el);\n          }\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          if (message.actions === undefined) {\n            message.actions = [];\n          }\n          const el = Attribute.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.actions!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Target {\n    return {\n      subjects: globalThis.Array.isArray(object?.subjects)\n        ? object.subjects.map((e: any) => Attribute.fromJSON(e))\n        : undefined,\n      resources: globalThis.Array.isArray(object?.resources)\n        ? object.resources.map((e: any) => Attribute.fromJSON(e))\n        : undefined,\n      actions: globalThis.Array.isArray(object?.actions)\n        ? object.actions.map((e: any) => Attribute.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: Target): unknown {\n    const obj: any = {};\n    if (message.subjects?.length) {\n      obj.subjects = message.subjects.map((e) => Attribute.toJSON(e));\n    }\n    if (message.resources?.length) {\n      obj.resources = message.resources.map((e) => Attribute.toJSON(e));\n    }\n    if (message.actions?.length) {\n      obj.actions = message.actions.map((e) => Attribute.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Target>): Target {\n    return Target.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Target>): Target {\n    const message = createBaseTarget();\n    message.subjects = object.subjects?.map((e) => Attribute.fromPartial(e)) || undefined;\n    message.resources = object.resources?.map((e) => Attribute.fromPartial(e)) || undefined;\n    message.actions = object.actions?.map((e) => Attribute.fromPartial(e)) || undefined;\n    return message;\n  },\n};\n\nfunction createBaseRule(): Rule {\n  return {};\n}\n\nexport const Rule: MessageFns<Rule> = {\n  encode(message: Rule, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(18).fork()).join();\n    }\n    if (message.name !== undefined) {\n      writer.uint32(26).string(message.name);\n    }\n    if (message.description !== undefined) {\n      writer.uint32(34).string(message.description);\n    }\n    if (message.target !== undefined) {\n      Target.encode(message.target, writer.uint32(42).fork()).join();\n    }\n    if (message.contextQuery !== undefined) {\n      ContextQuery.encode(message.contextQuery, writer.uint32(50).fork()).join();\n    }\n    if (message.condition !== undefined) {\n      writer.uint32(58).string(message.condition);\n    }\n    if (message.effect !== undefined) {\n      writer.uint32(64).int32(effectToNumber(message.effect));\n    }\n    if (message.evaluationCacheable !== undefined) {\n      writer.uint32(72).bool(message.evaluationCacheable);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Rule {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseRule();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.target = Target.decode(reader, reader.uint32());\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.contextQuery = ContextQuery.decode(reader, reader.uint32());\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.condition = reader.string();\n          continue;\n        }\n        case 8: {\n          if (tag !== 64) {\n            break;\n          }\n\n          message.effect = effectFromJSON(reader.int32());\n          continue;\n        }\n        case 9: {\n          if (tag !== 72) {\n            break;\n          }\n\n          message.evaluationCacheable = reader.bool();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Rule {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      description: isSet(object.description) ? globalThis.String(object.description) : undefined,\n      target: isSet(object.target) ? Target.fromJSON(object.target) : undefined,\n      contextQuery: isSet(object.contextQuery) ? ContextQuery.fromJSON(object.contextQuery) : undefined,\n      condition: isSet(object.condition) ? globalThis.String(object.condition) : undefined,\n      effect: isSet(object.effect) ? effectFromJSON(object.effect) : undefined,\n      evaluationCacheable: isSet(object.evaluationCacheable)\n        ? globalThis.Boolean(object.evaluationCacheable)\n        : undefined,\n    };\n  },\n\n  toJSON(message: Rule): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.description !== undefined) {\n      obj.description = message.description;\n    }\n    if (message.target !== undefined) {\n      obj.target = Target.toJSON(message.target);\n    }\n    if (message.contextQuery !== undefined) {\n      obj.contextQuery = ContextQuery.toJSON(message.contextQuery);\n    }\n    if (message.condition !== undefined) {\n      obj.condition = message.condition;\n    }\n    if (message.effect !== undefined) {\n      obj.effect = effectToJSON(message.effect);\n    }\n    if (message.evaluationCacheable !== undefined) {\n      obj.evaluationCacheable = message.evaluationCacheable;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Rule>): Rule {\n    return Rule.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Rule>): Rule {\n    const message = createBaseRule();\n    message.id = object.id ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.name = object.name ?? undefined;\n    message.description = object.description ?? undefined;\n    message.target = (object.target !== undefined && object.target !== null)\n      ? Target.fromPartial(object.target)\n      : undefined;\n    message.contextQuery = (object.contextQuery !== undefined && object.contextQuery !== null)\n      ? ContextQuery.fromPartial(object.contextQuery)\n      : undefined;\n    message.condition = object.condition ?? undefined;\n    message.effect = object.effect ?? undefined;\n    message.evaluationCacheable = object.evaluationCacheable ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseRuleRQ(): RuleRQ {\n  return {};\n}\n\nexport const RuleRQ: MessageFns<RuleRQ> = {\n  encode(message: RuleRQ, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.target !== undefined) {\n      Target.encode(message.target, writer.uint32(18).fork()).join();\n    }\n    if (message.effect !== undefined) {\n      writer.uint32(24).int32(effectToNumber(message.effect));\n    }\n    if (message.condition !== undefined) {\n      writer.uint32(34).string(message.condition);\n    }\n    if (message.contextQuery !== undefined) {\n      ContextQuery.encode(message.contextQuery, writer.uint32(42).fork()).join();\n    }\n    if (message.evaluationCacheable !== undefined) {\n      writer.uint32(48).bool(message.evaluationCacheable);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): RuleRQ {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseRuleRQ();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.target = Target.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.effect = effectFromJSON(reader.int32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.condition = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.contextQuery = ContextQuery.decode(reader, reader.uint32());\n          continue;\n        }\n        case 6: {\n          if (tag !== 48) {\n            break;\n          }\n\n          message.evaluationCacheable = reader.bool();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): RuleRQ {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      target: isSet(object.target) ? Target.fromJSON(object.target) : undefined,\n      effect: isSet(object.effect) ? effectFromJSON(object.effect) : undefined,\n      condition: isSet(object.condition) ? globalThis.String(object.condition) : undefined,\n      contextQuery: isSet(object.contextQuery) ? ContextQuery.fromJSON(object.contextQuery) : undefined,\n      evaluationCacheable: isSet(object.evaluationCacheable)\n        ? globalThis.Boolean(object.evaluationCacheable)\n        : undefined,\n    };\n  },\n\n  toJSON(message: RuleRQ): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.target !== undefined) {\n      obj.target = Target.toJSON(message.target);\n    }\n    if (message.effect !== undefined) {\n      obj.effect = effectToJSON(message.effect);\n    }\n    if (message.condition !== undefined) {\n      obj.condition = message.condition;\n    }\n    if (message.contextQuery !== undefined) {\n      obj.contextQuery = ContextQuery.toJSON(message.contextQuery);\n    }\n    if (message.evaluationCacheable !== undefined) {\n      obj.evaluationCacheable = message.evaluationCacheable;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<RuleRQ>): RuleRQ {\n    return RuleRQ.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<RuleRQ>): RuleRQ {\n    const message = createBaseRuleRQ();\n    message.id = object.id ?? undefined;\n    message.target = (object.target !== undefined && object.target !== null)\n      ? Target.fromPartial(object.target)\n      : undefined;\n    message.effect = object.effect ?? undefined;\n    message.condition = object.condition ?? undefined;\n    message.contextQuery = (object.contextQuery !== undefined && object.contextQuery !== null)\n      ? ContextQuery.fromPartial(object.contextQuery)\n      : undefined;\n    message.evaluationCacheable = object.evaluationCacheable ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseRuleList(): RuleList {\n  return {};\n}\n\nexport const RuleList: MessageFns<RuleList> = {\n  encode(message: RuleList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        Rule.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): RuleList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseRuleList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = Rule.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): RuleList {\n    return {\n      items: globalThis.Array.isArray(object?.items) ? object.items.map((e: any) => Rule.fromJSON(e)) : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: RuleList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => Rule.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<RuleList>): RuleList {\n    return RuleList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<RuleList>): RuleList {\n    const message = createBaseRuleList();\n    message.items = object.items?.map((e) => Rule.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseRuleListResponse(): RuleListResponse {\n  return {};\n}\n\nexport const RuleListResponse: MessageFns<RuleListResponse> = {\n  encode(message: RuleListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        RuleResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): RuleListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseRuleListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = RuleResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): RuleListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => RuleResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: RuleListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => RuleResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<RuleListResponse>): RuleListResponse {\n    return RuleListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<RuleListResponse>): RuleListResponse {\n    const message = createBaseRuleListResponse();\n    message.items = object.items?.map((e) => RuleResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseRuleResponse(): RuleResponse {\n  return {};\n}\n\nexport const RuleResponse: MessageFns<RuleResponse> = {\n  encode(message: RuleResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      Rule.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): RuleResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseRuleResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = Rule.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): RuleResponse {\n    return {\n      payload: isSet(object.payload) ? Rule.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: RuleResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = Rule.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<RuleResponse>): RuleResponse {\n    return RuleResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<RuleResponse>): RuleResponse {\n    const message = createBaseRuleResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? Rule.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseContextQuery(): ContextQuery {\n  return {};\n}\n\nexport const ContextQuery: MessageFns<ContextQuery> = {\n  encode(message: ContextQuery, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.filters !== undefined && message.filters.length !== 0) {\n      for (const v of message.filters) {\n        FilterOp.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.query !== undefined) {\n      writer.uint32(18).string(message.query);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ContextQuery {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseContextQuery();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.filters === undefined) {\n            message.filters = [];\n          }\n          const el = FilterOp.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.filters!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.query = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ContextQuery {\n    return {\n      filters: globalThis.Array.isArray(object?.filters)\n        ? object.filters.map((e: any) => FilterOp.fromJSON(e))\n        : undefined,\n      query: isSet(object.query) ? globalThis.String(object.query) : undefined,\n    };\n  },\n\n  toJSON(message: ContextQuery): unknown {\n    const obj: any = {};\n    if (message.filters?.length) {\n      obj.filters = message.filters.map((e) => FilterOp.toJSON(e));\n    }\n    if (message.query !== undefined) {\n      obj.query = message.query;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ContextQuery>): ContextQuery {\n    return ContextQuery.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ContextQuery>): ContextQuery {\n    const message = createBaseContextQuery();\n    message.filters = object.filters?.map((e) => FilterOp.fromPartial(e)) || undefined;\n    message.query = object.query ?? undefined;\n    return message;\n  },\n};\n\nexport type RuleServiceDefinition = typeof RuleServiceDefinition;\nexport const RuleServiceDefinition = {\n  name: \"RuleService\",\n  fullName: \"io.restorecommerce.rule.RuleService\",\n  methods: {\n    read: {\n      name: \"Read\",\n      requestType: ReadRequest,\n      requestStream: false,\n      responseType: RuleListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    create: {\n      name: \"Create\",\n      requestType: RuleList,\n      requestStream: false,\n      responseType: RuleListResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n    update: {\n      name: \"Update\",\n      requestType: RuleList,\n      requestStream: false,\n      responseType: RuleListResponse,\n      responseStream: false,\n      options: {},\n    },\n    upsert: {\n      name: \"Upsert\",\n      requestType: RuleList,\n      requestStream: false,\n      responseType: RuleListResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface RuleServiceImplementation<CallContextExt = {}> {\n  read(request: ReadRequest, context: CallContext & CallContextExt): Promise<DeepPartial<RuleListResponse>>;\n  create(request: RuleList, context: CallContext & CallContextExt): Promise<DeepPartial<RuleListResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n  update(request: RuleList, context: CallContext & CallContextExt): Promise<DeepPartial<RuleListResponse>>;\n  upsert(request: RuleList, context: CallContext & CallContextExt): Promise<DeepPartial<RuleListResponse>>;\n}\n\nexport interface RuleServiceClient<CallOptionsExt = {}> {\n  read(request: DeepPartial<ReadRequest>, options?: CallOptions & CallOptionsExt): Promise<RuleListResponse>;\n  create(request: DeepPartial<RuleList>, options?: CallOptions & CallOptionsExt): Promise<RuleListResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n  update(request: DeepPartial<RuleList>, options?: CallOptions & CallOptionsExt): Promise<RuleListResponse>;\n  upsert(request: DeepPartial<RuleList>, options?: CallOptions & CallOptionsExt): Promise<RuleListResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/rule.proto\",\n    \"package\": \"io.restorecommerce.rule\",\n    \"dependency\": [\n      \"io/restorecommerce/resource_base.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/attribute.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/filter.proto\",\n      \"io/restorecommerce/options.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Target\",\n      \"field\": [{\n        \"name\": \"subjects\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.attribute.Attribute\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"subjects\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"resources\",\n        \"number\": 2,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.attribute.Attribute\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"resources\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"actions\",\n        \"number\": 3,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.attribute.Attribute\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"actions\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Rule\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"name\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"description\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"description\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"target\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.rule.Target\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"target\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"context_query\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.rule.ContextQuery\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"contextQuery\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"condition\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"condition\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"effect\",\n        \"number\": 8,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".io.restorecommerce.rule.Effect\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 7,\n        \"jsonName\": \"effect\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"evaluation_cacheable\",\n        \"number\": 9,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 8,\n        \"jsonName\": \"evaluationCacheable\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_name\", \"options\": undefined },\n        { \"name\": \"_description\", \"options\": undefined },\n        { \"name\": \"_target\", \"options\": undefined },\n        { \"name\": \"_context_query\", \"options\": undefined },\n        { \"name\": \"_condition\", \"options\": undefined },\n        { \"name\": \"_effect\", \"options\": undefined },\n        { \"name\": \"_evaluation_cacheable\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"RuleRQ\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"target\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.rule.Target\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"target\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"effect\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".io.restorecommerce.rule.Effect\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"effect\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"condition\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"condition\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"context_query\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.rule.ContextQuery\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"contextQuery\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"evaluation_cacheable\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"evaluationCacheable\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_target\", \"options\": undefined },\n        { \"name\": \"_effect\", \"options\": undefined },\n        { \"name\": \"_condition\", \"options\": undefined },\n        { \"name\": \"_context_query\", \"options\": undefined },\n        { \"name\": \"_evaluation_cacheable\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"RuleList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.rule.Rule\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"RuleListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.rule.RuleResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"RuleResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.rule.Rule\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ContextQuery\",\n      \"field\": [{\n        \"name\": \"filters\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.filter.FilterOp\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"filters\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"query\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"query\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_query\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [{\n      \"name\": \"Effect\",\n      \"value\": [{ \"name\": \"PERMIT\", \"number\": 0, \"options\": undefined }, {\n        \"name\": \"DENY\",\n        \"number\": 1,\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"service\": [{\n      \"name\": \"RuleService\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ReadRequest\",\n        \"outputType\": \".io.restorecommerce.rule.RuleListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.rule.RuleList\",\n        \"outputType\": \".io.restorecommerce.rule.RuleListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.rule.RuleList\",\n        \"outputType\": \".io.restorecommerce.rule.RuleListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.rule.RuleList\",\n        \"outputType\": \".io.restorecommerce.rule.RuleListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [4, 0],\n        \"span\": [15, 0, 19, 1],\n        \"leadingComments\": \"*\\n Target specified by a Rule or a Request.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [5, 0],\n        \"span\": [24, 0, 27, 1],\n        \"leadingComments\": \"*\\n Resulting effect from a Policy or Rule.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 1, 2, 6],\n        \"span\": [36, 2, 32],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" JS code\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 2],\n        \"span\": [41, 0, 48, 1],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" used for `whatIsAllowed` / reverse queries\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 6],\n        \"span\": [70, 0, 73, 1],\n        \"leadingComments\":\n          \" Query to pull resources from an external service\\n  and append them to the request's context.\\n The retrieved data can then be passed onto the request's context\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.rule.Effect\": Effect,\n    \".io.restorecommerce.rule.Target\": Target,\n    \".io.restorecommerce.rule.Rule\": Rule,\n    \".io.restorecommerce.rule.RuleRQ\": RuleRQ,\n    \".io.restorecommerce.rule.RuleList\": RuleList,\n    \".io.restorecommerce.rule.RuleListResponse\": RuleListResponse,\n    \".io.restorecommerce.rule.RuleResponse\": RuleResponse,\n    \".io.restorecommerce.rule.ContextQuery\": ContextQuery,\n  },\n  dependencies: [\n    protoMetadata1,\n    protoMetadata2,\n    protoMetadata3,\n    protoMetadata4,\n    protoMetadata5,\n    protoMetadata6,\n    protoMetadata7,\n  ],\n  options: { services: { \"RuleService\": { methods: { \"Read\": { \"is_query\": true } } } } },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/policy.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { protoMetadata as protoMetadata4, Subject } from \"./auth\";\nimport { Meta, protoMetadata as protoMetadata2 } from \"./meta\";\nimport { protoMetadata as protoMetadata6 } from \"./options\";\nimport { DeleteRequest, DeleteResponse, protoMetadata as protoMetadata1, ReadRequest } from \"./resource_base\";\nimport {\n  Effect,\n  effectFromJSON,\n  effectToJSON,\n  effectToNumber,\n  protoMetadata as protoMetadata3,\n  RuleRQ,\n  Target,\n} from \"./rule\";\nimport { OperationStatus, protoMetadata as protoMetadata5, Status } from \"./status\";\n\nexport const protobufPackage = \"io.restorecommerce.policy\";\n\n/** A Policy is defined by a set of Rules. */\nexport interface Policy {\n  id?: string | undefined;\n  meta?: Meta | undefined;\n  name?: string | undefined;\n  description?:\n    | string\n    | undefined;\n  /** rule IDs */\n  rules?:\n    | string[]\n    | undefined;\n  /** general policy target */\n  target?: Target | undefined;\n  effect?: Effect | undefined;\n  combiningAlgorithm?: string | undefined;\n  evaluationCacheable?: boolean | undefined;\n}\n\nexport interface PolicyRQ {\n  id?: string | undefined;\n  target?: Target | undefined;\n  combiningAlgorithm?: string | undefined;\n  rules?: RuleRQ[] | undefined;\n  effect?: Effect | undefined;\n  hasRules?: boolean | undefined;\n  evaluationCacheable?: boolean | undefined;\n}\n\nexport interface PolicyList {\n  items?: Policy[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface PolicyListResponse {\n  items?: PolicyResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface PolicyResponse {\n  payload?: Policy | undefined;\n  status?: Status | undefined;\n}\n\nfunction createBasePolicy(): Policy {\n  return {};\n}\n\nexport const Policy: MessageFns<Policy> = {\n  encode(message: Policy, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(18).fork()).join();\n    }\n    if (message.name !== undefined) {\n      writer.uint32(26).string(message.name);\n    }\n    if (message.description !== undefined) {\n      writer.uint32(34).string(message.description);\n    }\n    if (message.rules !== undefined && message.rules.length !== 0) {\n      for (const v of message.rules) {\n        writer.uint32(42).string(v!);\n      }\n    }\n    if (message.target !== undefined) {\n      Target.encode(message.target, writer.uint32(50).fork()).join();\n    }\n    if (message.effect !== undefined) {\n      writer.uint32(56).int32(effectToNumber(message.effect));\n    }\n    if (message.combiningAlgorithm !== undefined) {\n      writer.uint32(66).string(message.combiningAlgorithm);\n    }\n    if (message.evaluationCacheable !== undefined) {\n      writer.uint32(72).bool(message.evaluationCacheable);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Policy {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePolicy();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          if (message.rules === undefined) {\n            message.rules = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.rules!.push(el);\n          }\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.target = Target.decode(reader, reader.uint32());\n          continue;\n        }\n        case 7: {\n          if (tag !== 56) {\n            break;\n          }\n\n          message.effect = effectFromJSON(reader.int32());\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.combiningAlgorithm = reader.string();\n          continue;\n        }\n        case 9: {\n          if (tag !== 72) {\n            break;\n          }\n\n          message.evaluationCacheable = reader.bool();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Policy {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      description: isSet(object.description) ? globalThis.String(object.description) : undefined,\n      rules: globalThis.Array.isArray(object?.rules) ? object.rules.map((e: any) => globalThis.String(e)) : undefined,\n      target: isSet(object.target) ? Target.fromJSON(object.target) : undefined,\n      effect: isSet(object.effect) ? effectFromJSON(object.effect) : undefined,\n      combiningAlgorithm: isSet(object.combiningAlgorithm) ? globalThis.String(object.combiningAlgorithm) : undefined,\n      evaluationCacheable: isSet(object.evaluationCacheable)\n        ? globalThis.Boolean(object.evaluationCacheable)\n        : undefined,\n    };\n  },\n\n  toJSON(message: Policy): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.description !== undefined) {\n      obj.description = message.description;\n    }\n    if (message.rules?.length) {\n      obj.rules = message.rules;\n    }\n    if (message.target !== undefined) {\n      obj.target = Target.toJSON(message.target);\n    }\n    if (message.effect !== undefined) {\n      obj.effect = effectToJSON(message.effect);\n    }\n    if (message.combiningAlgorithm !== undefined) {\n      obj.combiningAlgorithm = message.combiningAlgorithm;\n    }\n    if (message.evaluationCacheable !== undefined) {\n      obj.evaluationCacheable = message.evaluationCacheable;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Policy>): Policy {\n    return Policy.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Policy>): Policy {\n    const message = createBasePolicy();\n    message.id = object.id ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.name = object.name ?? undefined;\n    message.description = object.description ?? undefined;\n    message.rules = object.rules?.map((e) => e) || undefined;\n    message.target = (object.target !== undefined && object.target !== null)\n      ? Target.fromPartial(object.target)\n      : undefined;\n    message.effect = object.effect ?? undefined;\n    message.combiningAlgorithm = object.combiningAlgorithm ?? undefined;\n    message.evaluationCacheable = object.evaluationCacheable ?? undefined;\n    return message;\n  },\n};\n\nfunction createBasePolicyRQ(): PolicyRQ {\n  return {};\n}\n\nexport const PolicyRQ: MessageFns<PolicyRQ> = {\n  encode(message: PolicyRQ, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.target !== undefined) {\n      Target.encode(message.target, writer.uint32(18).fork()).join();\n    }\n    if (message.combiningAlgorithm !== undefined) {\n      writer.uint32(26).string(message.combiningAlgorithm);\n    }\n    if (message.rules !== undefined && message.rules.length !== 0) {\n      for (const v of message.rules) {\n        RuleRQ.encode(v!, writer.uint32(34).fork()).join();\n      }\n    }\n    if (message.effect !== undefined) {\n      writer.uint32(40).int32(effectToNumber(message.effect));\n    }\n    if (message.hasRules !== undefined) {\n      writer.uint32(48).bool(message.hasRules);\n    }\n    if (message.evaluationCacheable !== undefined) {\n      writer.uint32(56).bool(message.evaluationCacheable);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PolicyRQ {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePolicyRQ();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.target = Target.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.combiningAlgorithm = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          if (message.rules === undefined) {\n            message.rules = [];\n          }\n          const el = RuleRQ.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.rules!.push(el);\n          }\n          continue;\n        }\n        case 5: {\n          if (tag !== 40) {\n            break;\n          }\n\n          message.effect = effectFromJSON(reader.int32());\n          continue;\n        }\n        case 6: {\n          if (tag !== 48) {\n            break;\n          }\n\n          message.hasRules = reader.bool();\n          continue;\n        }\n        case 7: {\n          if (tag !== 56) {\n            break;\n          }\n\n          message.evaluationCacheable = reader.bool();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PolicyRQ {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      target: isSet(object.target) ? Target.fromJSON(object.target) : undefined,\n      combiningAlgorithm: isSet(object.combiningAlgorithm) ? globalThis.String(object.combiningAlgorithm) : undefined,\n      rules: globalThis.Array.isArray(object?.rules) ? object.rules.map((e: any) => RuleRQ.fromJSON(e)) : undefined,\n      effect: isSet(object.effect) ? effectFromJSON(object.effect) : undefined,\n      hasRules: isSet(object.hasRules) ? globalThis.Boolean(object.hasRules) : undefined,\n      evaluationCacheable: isSet(object.evaluationCacheable)\n        ? globalThis.Boolean(object.evaluationCacheable)\n        : undefined,\n    };\n  },\n\n  toJSON(message: PolicyRQ): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.target !== undefined) {\n      obj.target = Target.toJSON(message.target);\n    }\n    if (message.combiningAlgorithm !== undefined) {\n      obj.combiningAlgorithm = message.combiningAlgorithm;\n    }\n    if (message.rules?.length) {\n      obj.rules = message.rules.map((e) => RuleRQ.toJSON(e));\n    }\n    if (message.effect !== undefined) {\n      obj.effect = effectToJSON(message.effect);\n    }\n    if (message.hasRules !== undefined) {\n      obj.hasRules = message.hasRules;\n    }\n    if (message.evaluationCacheable !== undefined) {\n      obj.evaluationCacheable = message.evaluationCacheable;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PolicyRQ>): PolicyRQ {\n    return PolicyRQ.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PolicyRQ>): PolicyRQ {\n    const message = createBasePolicyRQ();\n    message.id = object.id ?? undefined;\n    message.target = (object.target !== undefined && object.target !== null)\n      ? Target.fromPartial(object.target)\n      : undefined;\n    message.combiningAlgorithm = object.combiningAlgorithm ?? undefined;\n    message.rules = object.rules?.map((e) => RuleRQ.fromPartial(e)) || undefined;\n    message.effect = object.effect ?? undefined;\n    message.hasRules = object.hasRules ?? undefined;\n    message.evaluationCacheable = object.evaluationCacheable ?? undefined;\n    return message;\n  },\n};\n\nfunction createBasePolicyList(): PolicyList {\n  return {};\n}\n\nexport const PolicyList: MessageFns<PolicyList> = {\n  encode(message: PolicyList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        Policy.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PolicyList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePolicyList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = Policy.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PolicyList {\n    return {\n      items: globalThis.Array.isArray(object?.items) ? object.items.map((e: any) => Policy.fromJSON(e)) : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: PolicyList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => Policy.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PolicyList>): PolicyList {\n    return PolicyList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PolicyList>): PolicyList {\n    const message = createBasePolicyList();\n    message.items = object.items?.map((e) => Policy.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBasePolicyListResponse(): PolicyListResponse {\n  return {};\n}\n\nexport const PolicyListResponse: MessageFns<PolicyListResponse> = {\n  encode(message: PolicyListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        PolicyResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PolicyListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePolicyListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = PolicyResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PolicyListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => PolicyResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: PolicyListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => PolicyResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PolicyListResponse>): PolicyListResponse {\n    return PolicyListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PolicyListResponse>): PolicyListResponse {\n    const message = createBasePolicyListResponse();\n    message.items = object.items?.map((e) => PolicyResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBasePolicyResponse(): PolicyResponse {\n  return {};\n}\n\nexport const PolicyResponse: MessageFns<PolicyResponse> = {\n  encode(message: PolicyResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      Policy.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PolicyResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePolicyResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = Policy.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PolicyResponse {\n    return {\n      payload: isSet(object.payload) ? Policy.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: PolicyResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = Policy.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PolicyResponse>): PolicyResponse {\n    return PolicyResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PolicyResponse>): PolicyResponse {\n    const message = createBasePolicyResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? Policy.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nexport type PolicyServiceDefinition = typeof PolicyServiceDefinition;\nexport const PolicyServiceDefinition = {\n  name: \"PolicyService\",\n  fullName: \"io.restorecommerce.policy.PolicyService\",\n  methods: {\n    read: {\n      name: \"Read\",\n      requestType: ReadRequest,\n      requestStream: false,\n      responseType: PolicyListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    create: {\n      name: \"Create\",\n      requestType: PolicyList,\n      requestStream: false,\n      responseType: PolicyListResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n    update: {\n      name: \"Update\",\n      requestType: PolicyList,\n      requestStream: false,\n      responseType: PolicyListResponse,\n      responseStream: false,\n      options: {},\n    },\n    upsert: {\n      name: \"Upsert\",\n      requestType: PolicyList,\n      requestStream: false,\n      responseType: PolicyListResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface PolicyServiceImplementation<CallContextExt = {}> {\n  read(request: ReadRequest, context: CallContext & CallContextExt): Promise<DeepPartial<PolicyListResponse>>;\n  create(request: PolicyList, context: CallContext & CallContextExt): Promise<DeepPartial<PolicyListResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n  update(request: PolicyList, context: CallContext & CallContextExt): Promise<DeepPartial<PolicyListResponse>>;\n  upsert(request: PolicyList, context: CallContext & CallContextExt): Promise<DeepPartial<PolicyListResponse>>;\n}\n\nexport interface PolicyServiceClient<CallOptionsExt = {}> {\n  read(request: DeepPartial<ReadRequest>, options?: CallOptions & CallOptionsExt): Promise<PolicyListResponse>;\n  create(request: DeepPartial<PolicyList>, options?: CallOptions & CallOptionsExt): Promise<PolicyListResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n  update(request: DeepPartial<PolicyList>, options?: CallOptions & CallOptionsExt): Promise<PolicyListResponse>;\n  upsert(request: DeepPartial<PolicyList>, options?: CallOptions & CallOptionsExt): Promise<PolicyListResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/policy.proto\",\n    \"package\": \"io.restorecommerce.policy\",\n    \"dependency\": [\n      \"io/restorecommerce/resource_base.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/rule.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/options.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Policy\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"name\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"description\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"description\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"rules\",\n        \"number\": 5,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"rules\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"target\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.rule.Target\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"target\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"effect\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".io.restorecommerce.rule.Effect\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"effect\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"combining_algorithm\",\n        \"number\": 8,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"combiningAlgorithm\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"evaluation_cacheable\",\n        \"number\": 9,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 7,\n        \"jsonName\": \"evaluationCacheable\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_name\", \"options\": undefined },\n        { \"name\": \"_description\", \"options\": undefined },\n        { \"name\": \"_target\", \"options\": undefined },\n        { \"name\": \"_effect\", \"options\": undefined },\n        { \"name\": \"_combining_algorithm\", \"options\": undefined },\n        { \"name\": \"_evaluation_cacheable\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"PolicyRQ\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"target\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.rule.Target\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"target\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"combining_algorithm\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"combiningAlgorithm\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"rules\",\n        \"number\": 4,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.rule.RuleRQ\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"rules\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"effect\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".io.restorecommerce.rule.Effect\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"effect\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"has_rules\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"hasRules\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"evaluation_cacheable\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"evaluationCacheable\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_target\", \"options\": undefined },\n        { \"name\": \"_combining_algorithm\", \"options\": undefined },\n        { \"name\": \"_effect\", \"options\": undefined },\n        { \"name\": \"_has_rules\", \"options\": undefined },\n        { \"name\": \"_evaluation_cacheable\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"PolicyList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.policy.Policy\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"PolicyListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.policy.PolicyResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"PolicyResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.policy.Policy\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [{\n      \"name\": \"PolicyService\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ReadRequest\",\n        \"outputType\": \".io.restorecommerce.policy.PolicyListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.policy.PolicyList\",\n        \"outputType\": \".io.restorecommerce.policy.PolicyListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.policy.PolicyList\",\n        \"outputType\": \".io.restorecommerce.policy.PolicyListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.policy.PolicyList\",\n        \"outputType\": \".io.restorecommerce.policy.PolicyListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [4, 0],\n        \"span\": [14, 0, 24, 1],\n        \"leadingComments\": \"*\\n A Policy is defined by a set of Rules.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 0, 2, 4],\n        \"span\": [19, 2, 28],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" rule IDs\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 0, 2, 5],\n        \"span\": [20, 2, 53],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" general policy target\\n\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.policy.Policy\": Policy,\n    \".io.restorecommerce.policy.PolicyRQ\": PolicyRQ,\n    \".io.restorecommerce.policy.PolicyList\": PolicyList,\n    \".io.restorecommerce.policy.PolicyListResponse\": PolicyListResponse,\n    \".io.restorecommerce.policy.PolicyResponse\": PolicyResponse,\n  },\n  dependencies: [protoMetadata1, protoMetadata2, protoMetadata3, protoMetadata4, protoMetadata5, protoMetadata6],\n  options: { services: { \"PolicyService\": { methods: { \"Read\": { \"is_query\": true } } } } },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/policy_set.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { protoMetadata as protoMetadata4, Subject } from \"./auth\";\nimport { Meta, protoMetadata as protoMetadata2 } from \"./meta\";\nimport { protoMetadata as protoMetadata7 } from \"./options\";\nimport { PolicyRQ, protoMetadata as protoMetadata3 } from \"./policy\";\nimport { DeleteRequest, DeleteResponse, protoMetadata as protoMetadata1, ReadRequest } from \"./resource_base\";\nimport { Effect, effectFromJSON, effectToJSON, effectToNumber, protoMetadata as protoMetadata5, Target } from \"./rule\";\nimport { OperationStatus, protoMetadata as protoMetadata6, Status } from \"./status\";\n\nexport const protobufPackage = \"io.restorecommerce.policy_set\";\n\nexport interface PolicySet {\n  id?: string | undefined;\n  meta?: Meta | undefined;\n  name?: string | undefined;\n  description?: string | undefined;\n  target?: Target | undefined;\n  combiningAlgorithm?:\n    | string\n    | undefined;\n  /** policy IDs */\n  policies?: string[] | undefined;\n}\n\nexport interface PolicySetList {\n  items?: PolicySet[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface PolicySetListResponse {\n  items?: PolicySetResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface PolicySetResponse {\n  payload?: PolicySet | undefined;\n  status?: Status | undefined;\n}\n\nexport interface PolicySetRQ {\n  id?: string | undefined;\n  target?: Target | undefined;\n  combiningAlgorithm?: string | undefined;\n  policies?: PolicyRQ[] | undefined;\n  effect?: Effect | undefined;\n}\n\nfunction createBasePolicySet(): PolicySet {\n  return {};\n}\n\nexport const PolicySet: MessageFns<PolicySet> = {\n  encode(message: PolicySet, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(18).fork()).join();\n    }\n    if (message.name !== undefined) {\n      writer.uint32(26).string(message.name);\n    }\n    if (message.description !== undefined) {\n      writer.uint32(34).string(message.description);\n    }\n    if (message.target !== undefined) {\n      Target.encode(message.target, writer.uint32(42).fork()).join();\n    }\n    if (message.combiningAlgorithm !== undefined) {\n      writer.uint32(50).string(message.combiningAlgorithm);\n    }\n    if (message.policies !== undefined && message.policies.length !== 0) {\n      for (const v of message.policies) {\n        writer.uint32(58).string(v!);\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PolicySet {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePolicySet();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.target = Target.decode(reader, reader.uint32());\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.combiningAlgorithm = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          if (message.policies === undefined) {\n            message.policies = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.policies!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PolicySet {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      description: isSet(object.description) ? globalThis.String(object.description) : undefined,\n      target: isSet(object.target) ? Target.fromJSON(object.target) : undefined,\n      combiningAlgorithm: isSet(object.combiningAlgorithm) ? globalThis.String(object.combiningAlgorithm) : undefined,\n      policies: globalThis.Array.isArray(object?.policies)\n        ? object.policies.map((e: any) => globalThis.String(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: PolicySet): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.description !== undefined) {\n      obj.description = message.description;\n    }\n    if (message.target !== undefined) {\n      obj.target = Target.toJSON(message.target);\n    }\n    if (message.combiningAlgorithm !== undefined) {\n      obj.combiningAlgorithm = message.combiningAlgorithm;\n    }\n    if (message.policies?.length) {\n      obj.policies = message.policies;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PolicySet>): PolicySet {\n    return PolicySet.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PolicySet>): PolicySet {\n    const message = createBasePolicySet();\n    message.id = object.id ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.name = object.name ?? undefined;\n    message.description = object.description ?? undefined;\n    message.target = (object.target !== undefined && object.target !== null)\n      ? Target.fromPartial(object.target)\n      : undefined;\n    message.combiningAlgorithm = object.combiningAlgorithm ?? undefined;\n    message.policies = object.policies?.map((e) => e) || undefined;\n    return message;\n  },\n};\n\nfunction createBasePolicySetList(): PolicySetList {\n  return {};\n}\n\nexport const PolicySetList: MessageFns<PolicySetList> = {\n  encode(message: PolicySetList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        PolicySet.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PolicySetList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePolicySetList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = PolicySet.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PolicySetList {\n    return {\n      items: globalThis.Array.isArray(object?.items) ? object.items.map((e: any) => PolicySet.fromJSON(e)) : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: PolicySetList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => PolicySet.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PolicySetList>): PolicySetList {\n    return PolicySetList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PolicySetList>): PolicySetList {\n    const message = createBasePolicySetList();\n    message.items = object.items?.map((e) => PolicySet.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBasePolicySetListResponse(): PolicySetListResponse {\n  return {};\n}\n\nexport const PolicySetListResponse: MessageFns<PolicySetListResponse> = {\n  encode(message: PolicySetListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        PolicySetResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PolicySetListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePolicySetListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = PolicySetResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PolicySetListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => PolicySetResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: PolicySetListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => PolicySetResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PolicySetListResponse>): PolicySetListResponse {\n    return PolicySetListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PolicySetListResponse>): PolicySetListResponse {\n    const message = createBasePolicySetListResponse();\n    message.items = object.items?.map((e) => PolicySetResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBasePolicySetResponse(): PolicySetResponse {\n  return {};\n}\n\nexport const PolicySetResponse: MessageFns<PolicySetResponse> = {\n  encode(message: PolicySetResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      PolicySet.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PolicySetResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePolicySetResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = PolicySet.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PolicySetResponse {\n    return {\n      payload: isSet(object.payload) ? PolicySet.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: PolicySetResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = PolicySet.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PolicySetResponse>): PolicySetResponse {\n    return PolicySetResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PolicySetResponse>): PolicySetResponse {\n    const message = createBasePolicySetResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? PolicySet.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBasePolicySetRQ(): PolicySetRQ {\n  return {};\n}\n\nexport const PolicySetRQ: MessageFns<PolicySetRQ> = {\n  encode(message: PolicySetRQ, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.target !== undefined) {\n      Target.encode(message.target, writer.uint32(18).fork()).join();\n    }\n    if (message.combiningAlgorithm !== undefined) {\n      writer.uint32(26).string(message.combiningAlgorithm);\n    }\n    if (message.policies !== undefined && message.policies.length !== 0) {\n      for (const v of message.policies) {\n        PolicyRQ.encode(v!, writer.uint32(34).fork()).join();\n      }\n    }\n    if (message.effect !== undefined) {\n      writer.uint32(40).int32(effectToNumber(message.effect));\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PolicySetRQ {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePolicySetRQ();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.target = Target.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.combiningAlgorithm = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          if (message.policies === undefined) {\n            message.policies = [];\n          }\n          const el = PolicyRQ.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.policies!.push(el);\n          }\n          continue;\n        }\n        case 5: {\n          if (tag !== 40) {\n            break;\n          }\n\n          message.effect = effectFromJSON(reader.int32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PolicySetRQ {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      target: isSet(object.target) ? Target.fromJSON(object.target) : undefined,\n      combiningAlgorithm: isSet(object.combiningAlgorithm) ? globalThis.String(object.combiningAlgorithm) : undefined,\n      policies: globalThis.Array.isArray(object?.policies)\n        ? object.policies.map((e: any) => PolicyRQ.fromJSON(e))\n        : undefined,\n      effect: isSet(object.effect) ? effectFromJSON(object.effect) : undefined,\n    };\n  },\n\n  toJSON(message: PolicySetRQ): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.target !== undefined) {\n      obj.target = Target.toJSON(message.target);\n    }\n    if (message.combiningAlgorithm !== undefined) {\n      obj.combiningAlgorithm = message.combiningAlgorithm;\n    }\n    if (message.policies?.length) {\n      obj.policies = message.policies.map((e) => PolicyRQ.toJSON(e));\n    }\n    if (message.effect !== undefined) {\n      obj.effect = effectToJSON(message.effect);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PolicySetRQ>): PolicySetRQ {\n    return PolicySetRQ.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PolicySetRQ>): PolicySetRQ {\n    const message = createBasePolicySetRQ();\n    message.id = object.id ?? undefined;\n    message.target = (object.target !== undefined && object.target !== null)\n      ? Target.fromPartial(object.target)\n      : undefined;\n    message.combiningAlgorithm = object.combiningAlgorithm ?? undefined;\n    message.policies = object.policies?.map((e) => PolicyRQ.fromPartial(e)) || undefined;\n    message.effect = object.effect ?? undefined;\n    return message;\n  },\n};\n\nexport type PolicySetServiceDefinition = typeof PolicySetServiceDefinition;\nexport const PolicySetServiceDefinition = {\n  name: \"PolicySetService\",\n  fullName: \"io.restorecommerce.policy_set.PolicySetService\",\n  methods: {\n    read: {\n      name: \"Read\",\n      requestType: ReadRequest,\n      requestStream: false,\n      responseType: PolicySetListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    create: {\n      name: \"Create\",\n      requestType: PolicySetList,\n      requestStream: false,\n      responseType: PolicySetListResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n    update: {\n      name: \"Update\",\n      requestType: PolicySetList,\n      requestStream: false,\n      responseType: PolicySetListResponse,\n      responseStream: false,\n      options: {},\n    },\n    upsert: {\n      name: \"Upsert\",\n      requestType: PolicySetList,\n      requestStream: false,\n      responseType: PolicySetListResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface PolicySetServiceImplementation<CallContextExt = {}> {\n  read(request: ReadRequest, context: CallContext & CallContextExt): Promise<DeepPartial<PolicySetListResponse>>;\n  create(request: PolicySetList, context: CallContext & CallContextExt): Promise<DeepPartial<PolicySetListResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n  update(request: PolicySetList, context: CallContext & CallContextExt): Promise<DeepPartial<PolicySetListResponse>>;\n  upsert(request: PolicySetList, context: CallContext & CallContextExt): Promise<DeepPartial<PolicySetListResponse>>;\n}\n\nexport interface PolicySetServiceClient<CallOptionsExt = {}> {\n  read(request: DeepPartial<ReadRequest>, options?: CallOptions & CallOptionsExt): Promise<PolicySetListResponse>;\n  create(request: DeepPartial<PolicySetList>, options?: CallOptions & CallOptionsExt): Promise<PolicySetListResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n  update(request: DeepPartial<PolicySetList>, options?: CallOptions & CallOptionsExt): Promise<PolicySetListResponse>;\n  upsert(request: DeepPartial<PolicySetList>, options?: CallOptions & CallOptionsExt): Promise<PolicySetListResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/policy_set.proto\",\n    \"package\": \"io.restorecommerce.policy_set\",\n    \"dependency\": [\n      \"io/restorecommerce/resource_base.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/policy.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/rule.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/options.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"PolicySet\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"name\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"description\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"description\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"target\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.rule.Target\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"target\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"combining_algorithm\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"combiningAlgorithm\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"policies\",\n        \"number\": 7,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"policies\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_name\", \"options\": undefined },\n        { \"name\": \"_description\", \"options\": undefined },\n        { \"name\": \"_target\", \"options\": undefined },\n        { \"name\": \"_combining_algorithm\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"PolicySetList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.policy_set.PolicySet\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"PolicySetListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.policy_set.PolicySetResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"PolicySetResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.policy_set.PolicySet\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"PolicySetRQ\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"target\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.rule.Target\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"target\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"combining_algorithm\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"combiningAlgorithm\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"policies\",\n        \"number\": 4,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.policy.PolicyRQ\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"policies\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"effect\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".io.restorecommerce.rule.Effect\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"effect\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }, { \"name\": \"_target\", \"options\": undefined }, {\n        \"name\": \"_combining_algorithm\",\n        \"options\": undefined,\n      }, { \"name\": \"_effect\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [{\n      \"name\": \"PolicySetService\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ReadRequest\",\n        \"outputType\": \".io.restorecommerce.policy_set.PolicySetListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.policy_set.PolicySetList\",\n        \"outputType\": \".io.restorecommerce.policy_set.PolicySetListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.policy_set.PolicySetList\",\n        \"outputType\": \".io.restorecommerce.policy_set.PolicySetListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.policy_set.PolicySetList\",\n        \"outputType\": \".io.restorecommerce.policy_set.PolicySetListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [4, 0, 2, 6],\n        \"span\": [19, 2, 31],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" policy IDs\\n\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.policy_set.PolicySet\": PolicySet,\n    \".io.restorecommerce.policy_set.PolicySetList\": PolicySetList,\n    \".io.restorecommerce.policy_set.PolicySetListResponse\": PolicySetListResponse,\n    \".io.restorecommerce.policy_set.PolicySetResponse\": PolicySetResponse,\n    \".io.restorecommerce.policy_set.PolicySetRQ\": PolicySetRQ,\n  },\n  dependencies: [\n    protoMetadata1,\n    protoMetadata2,\n    protoMetadata3,\n    protoMetadata4,\n    protoMetadata5,\n    protoMetadata6,\n    protoMetadata7,\n  ],\n  options: { services: { \"PolicySetService\": { methods: { \"Read\": { \"is_query\": true } } } } },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/access_control.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { Any, protoMetadata as protoMetadata1 } from \"../../google/protobuf/any\";\nimport { Attribute, protoMetadata as protoMetadata5 } from \"./attribute\";\nimport { protoMetadata as protoMetadata6 } from \"./options\";\nimport { PolicySetRQ, protoMetadata as protoMetadata3 } from \"./policy_set\";\nimport { protoMetadata as protoMetadata2, Target } from \"./rule\";\nimport { OperationStatus, protoMetadata as protoMetadata4 } from \"./status\";\n\nexport const protobufPackage = \"io.restorecommerce.access_control\";\n\nexport interface Request {\n  target?:\n    | Target\n    | undefined;\n  /**\n   * generic data structure which can be provided\n   * to a contextQuery (see io/restorecommerce/rule.proto)\n   */\n  context?: Context | undefined;\n}\n\nexport interface Context {\n  subject?: Any | undefined;\n  resources?: Any[] | undefined;\n  security?: Any | undefined;\n}\n\nexport interface Response {\n  decision?: Response_Decision | undefined;\n  obligations?: Attribute[] | undefined;\n  evaluationCacheable?: boolean | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport enum Response_Decision {\n  PERMIT = \"PERMIT\",\n  DENY = \"DENY\",\n  NOT_APPLICABLE = \"NOT_APPLICABLE\",\n  INDETERMINATE = \"INDETERMINATE\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function response_DecisionFromJSON(object: any): Response_Decision {\n  switch (object) {\n    case 0:\n    case \"PERMIT\":\n      return Response_Decision.PERMIT;\n    case 1:\n    case \"DENY\":\n      return Response_Decision.DENY;\n    case 2:\n    case \"NOT_APPLICABLE\":\n      return Response_Decision.NOT_APPLICABLE;\n    case 3:\n    case \"INDETERMINATE\":\n      return Response_Decision.INDETERMINATE;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return Response_Decision.UNRECOGNIZED;\n  }\n}\n\nexport function response_DecisionToJSON(object: Response_Decision): string {\n  switch (object) {\n    case Response_Decision.PERMIT:\n      return \"PERMIT\";\n    case Response_Decision.DENY:\n      return \"DENY\";\n    case Response_Decision.NOT_APPLICABLE:\n      return \"NOT_APPLICABLE\";\n    case Response_Decision.INDETERMINATE:\n      return \"INDETERMINATE\";\n    case Response_Decision.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function response_DecisionToNumber(object: Response_Decision): number {\n  switch (object) {\n    case Response_Decision.PERMIT:\n      return 0;\n    case Response_Decision.DENY:\n      return 1;\n    case Response_Decision.NOT_APPLICABLE:\n      return 2;\n    case Response_Decision.INDETERMINATE:\n      return 3;\n    case Response_Decision.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\nexport interface ReverseQuery {\n  policySets?: PolicySetRQ[] | undefined;\n  obligations?: Attribute[] | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nfunction createBaseRequest(): Request {\n  return {};\n}\n\nexport const Request: MessageFns<Request> = {\n  encode(message: Request, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.target !== undefined) {\n      Target.encode(message.target, writer.uint32(10).fork()).join();\n    }\n    if (message.context !== undefined) {\n      Context.encode(message.context, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Request {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.target = Target.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.context = Context.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Request {\n    return {\n      target: isSet(object.target) ? Target.fromJSON(object.target) : undefined,\n      context: isSet(object.context) ? Context.fromJSON(object.context) : undefined,\n    };\n  },\n\n  toJSON(message: Request): unknown {\n    const obj: any = {};\n    if (message.target !== undefined) {\n      obj.target = Target.toJSON(message.target);\n    }\n    if (message.context !== undefined) {\n      obj.context = Context.toJSON(message.context);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Request>): Request {\n    return Request.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Request>): Request {\n    const message = createBaseRequest();\n    message.target = (object.target !== undefined && object.target !== null)\n      ? Target.fromPartial(object.target)\n      : undefined;\n    message.context = (object.context !== undefined && object.context !== null)\n      ? Context.fromPartial(object.context)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseContext(): Context {\n  return {};\n}\n\nexport const Context: MessageFns<Context> = {\n  encode(message: Context, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.subject !== undefined) {\n      Any.encode(message.subject, writer.uint32(10).fork()).join();\n    }\n    if (message.resources !== undefined && message.resources.length !== 0) {\n      for (const v of message.resources) {\n        Any.encode(v!, writer.uint32(18).fork()).join();\n      }\n    }\n    if (message.security !== undefined) {\n      Any.encode(message.security, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Context {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseContext();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.subject = Any.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          if (message.resources === undefined) {\n            message.resources = [];\n          }\n          const el = Any.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.resources!.push(el);\n          }\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.security = Any.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Context {\n    return {\n      subject: isSet(object.subject) ? Any.fromJSON(object.subject) : undefined,\n      resources: globalThis.Array.isArray(object?.resources)\n        ? object.resources.map((e: any) => Any.fromJSON(e))\n        : undefined,\n      security: isSet(object.security) ? Any.fromJSON(object.security) : undefined,\n    };\n  },\n\n  toJSON(message: Context): unknown {\n    const obj: any = {};\n    if (message.subject !== undefined) {\n      obj.subject = Any.toJSON(message.subject);\n    }\n    if (message.resources?.length) {\n      obj.resources = message.resources.map((e) => Any.toJSON(e));\n    }\n    if (message.security !== undefined) {\n      obj.security = Any.toJSON(message.security);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Context>): Context {\n    return Context.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Context>): Context {\n    const message = createBaseContext();\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Any.fromPartial(object.subject)\n      : undefined;\n    message.resources = object.resources?.map((e) => Any.fromPartial(e)) || undefined;\n    message.security = (object.security !== undefined && object.security !== null)\n      ? Any.fromPartial(object.security)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseResponse(): Response {\n  return {};\n}\n\nexport const Response: MessageFns<Response> = {\n  encode(message: Response, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.decision !== undefined) {\n      writer.uint32(8).int32(response_DecisionToNumber(message.decision));\n    }\n    if (message.obligations !== undefined && message.obligations.length !== 0) {\n      for (const v of message.obligations) {\n        Attribute.encode(v!, writer.uint32(18).fork()).join();\n      }\n    }\n    if (message.evaluationCacheable !== undefined) {\n      writer.uint32(24).bool(message.evaluationCacheable);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(34).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Response {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.decision = response_DecisionFromJSON(reader.int32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          if (message.obligations === undefined) {\n            message.obligations = [];\n          }\n          const el = Attribute.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.obligations!.push(el);\n          }\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.evaluationCacheable = reader.bool();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Response {\n    return {\n      decision: isSet(object.decision) ? response_DecisionFromJSON(object.decision) : undefined,\n      obligations: globalThis.Array.isArray(object?.obligations)\n        ? object.obligations.map((e: any) => Attribute.fromJSON(e))\n        : undefined,\n      evaluationCacheable: isSet(object.evaluationCacheable)\n        ? globalThis.Boolean(object.evaluationCacheable)\n        : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: Response): unknown {\n    const obj: any = {};\n    if (message.decision !== undefined) {\n      obj.decision = response_DecisionToJSON(message.decision);\n    }\n    if (message.obligations?.length) {\n      obj.obligations = message.obligations.map((e) => Attribute.toJSON(e));\n    }\n    if (message.evaluationCacheable !== undefined) {\n      obj.evaluationCacheable = message.evaluationCacheable;\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Response>): Response {\n    return Response.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Response>): Response {\n    const message = createBaseResponse();\n    message.decision = object.decision ?? undefined;\n    message.obligations = object.obligations?.map((e) => Attribute.fromPartial(e)) || undefined;\n    message.evaluationCacheable = object.evaluationCacheable ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseReverseQuery(): ReverseQuery {\n  return {};\n}\n\nexport const ReverseQuery: MessageFns<ReverseQuery> = {\n  encode(message: ReverseQuery, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.policySets !== undefined && message.policySets.length !== 0) {\n      for (const v of message.policySets) {\n        PolicySetRQ.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.obligations !== undefined && message.obligations.length !== 0) {\n      for (const v of message.obligations) {\n        Attribute.encode(v!, writer.uint32(18).fork()).join();\n      }\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ReverseQuery {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseReverseQuery();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.policySets === undefined) {\n            message.policySets = [];\n          }\n          const el = PolicySetRQ.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.policySets!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          if (message.obligations === undefined) {\n            message.obligations = [];\n          }\n          const el = Attribute.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.obligations!.push(el);\n          }\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ReverseQuery {\n    return {\n      policySets: globalThis.Array.isArray(object?.policySets)\n        ? object.policySets.map((e: any) => PolicySetRQ.fromJSON(e))\n        : undefined,\n      obligations: globalThis.Array.isArray(object?.obligations)\n        ? object.obligations.map((e: any) => Attribute.fromJSON(e))\n        : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: ReverseQuery): unknown {\n    const obj: any = {};\n    if (message.policySets?.length) {\n      obj.policySets = message.policySets.map((e) => PolicySetRQ.toJSON(e));\n    }\n    if (message.obligations?.length) {\n      obj.obligations = message.obligations.map((e) => Attribute.toJSON(e));\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ReverseQuery>): ReverseQuery {\n    return ReverseQuery.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ReverseQuery>): ReverseQuery {\n    const message = createBaseReverseQuery();\n    message.policySets = object.policySets?.map((e) => PolicySetRQ.fromPartial(e)) || undefined;\n    message.obligations = object.obligations?.map((e) => Attribute.fromPartial(e)) || undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nexport type AccessControlServiceDefinition = typeof AccessControlServiceDefinition;\nexport const AccessControlServiceDefinition = {\n  name: \"AccessControlService\",\n  fullName: \"io.restorecommerce.access_control.AccessControlService\",\n  methods: {\n    isAllowed: {\n      name: \"IsAllowed\",\n      requestType: Request,\n      requestStream: false,\n      responseType: Response,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    whatIsAllowed: {\n      name: \"WhatIsAllowed\",\n      requestType: Request,\n      requestStream: false,\n      responseType: ReverseQuery,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n  },\n} as const;\n\nexport interface AccessControlServiceImplementation<CallContextExt = {}> {\n  isAllowed(request: Request, context: CallContext & CallContextExt): Promise<DeepPartial<Response>>;\n  whatIsAllowed(request: Request, context: CallContext & CallContextExt): Promise<DeepPartial<ReverseQuery>>;\n}\n\nexport interface AccessControlServiceClient<CallOptionsExt = {}> {\n  isAllowed(request: DeepPartial<Request>, options?: CallOptions & CallOptionsExt): Promise<Response>;\n  whatIsAllowed(request: DeepPartial<Request>, options?: CallOptions & CallOptionsExt): Promise<ReverseQuery>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/access_control.proto\",\n    \"package\": \"io.restorecommerce.access_control\",\n    \"dependency\": [\n      \"google/protobuf/any.proto\",\n      \"io/restorecommerce/rule.proto\",\n      \"io/restorecommerce/policy_set.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/attribute.proto\",\n      \"io/restorecommerce/options.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Request\",\n      \"field\": [{\n        \"name\": \"target\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.rule.Target\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"target\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"context\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.access_control.Context\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"context\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_target\", \"options\": undefined }, { \"name\": \"_context\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Context\",\n      \"field\": [{\n        \"name\": \"subject\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Any\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"resources\",\n        \"number\": 2,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Any\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"resources\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"security\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Any\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"security\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_subject\", \"options\": undefined }, { \"name\": \"_security\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Response\",\n      \"field\": [{\n        \"name\": \"decision\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".io.restorecommerce.access_control.Response.Decision\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"decision\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"obligations\",\n        \"number\": 2,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.attribute.Attribute\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"obligations\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"evaluation_cacheable\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"evaluationCacheable\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [{\n        \"name\": \"Decision\",\n        \"value\": [\n          { \"name\": \"PERMIT\", \"number\": 0, \"options\": undefined },\n          { \"name\": \"DENY\", \"number\": 1, \"options\": undefined },\n          { \"name\": \"NOT_APPLICABLE\", \"number\": 2, \"options\": undefined },\n          { \"name\": \"INDETERMINATE\", \"number\": 3, \"options\": undefined },\n        ],\n        \"options\": undefined,\n        \"reservedRange\": [],\n        \"reservedName\": [],\n      }],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_decision\", \"options\": undefined }, {\n        \"name\": \"_evaluation_cacheable\",\n        \"options\": undefined,\n      }, { \"name\": \"_operation_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ReverseQuery\",\n      \"field\": [{\n        \"name\": \"policy_sets\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.policy_set.PolicySetRQ\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"policySets\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"obligations\",\n        \"number\": 2,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.attribute.Attribute\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"obligations\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_operation_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [{\n      \"name\": \"AccessControlService\",\n      \"method\": [{\n        \"name\": \"IsAllowed\",\n        \"inputType\": \".io.restorecommerce.access_control.Request\",\n        \"outputType\": \".io.restorecommerce.access_control.Response\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"WhatIsAllowed\",\n        \"inputType\": \".io.restorecommerce.access_control.Request\",\n        \"outputType\": \".io.restorecommerce.access_control.ReverseQuery\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [4, 0, 2, 1],\n        \"span\": [19, 2, 31],\n        \"leadingComments\":\n          \" generic data structure which can be provided\\n to a contextQuery (see io/restorecommerce/rule.proto)\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.access_control.Request\": Request,\n    \".io.restorecommerce.access_control.Context\": Context,\n    \".io.restorecommerce.access_control.Response\": Response,\n    \".io.restorecommerce.access_control.Response.Decision\": Response_Decision,\n    \".io.restorecommerce.access_control.ReverseQuery\": ReverseQuery,\n  },\n  dependencies: [protoMetadata1, protoMetadata2, protoMetadata3, protoMetadata4, protoMetadata5, protoMetadata6],\n  options: {\n    services: {\n      \"AccessControlService\": { methods: { \"IsAllowed\": { \"is_query\": true }, \"WhatIsAllowed\": { \"is_query\": true } } },\n    },\n  },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/job.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { Any, protoMetadata as protoMetadata2 } from \"../../google/protobuf/any\";\nimport { protoMetadata as protoMetadata4, Subject } from \"./auth\";\nimport { Meta, protoMetadata as protoMetadata3 } from \"./meta\";\nimport { protoMetadata as protoMetadata6 } from \"./options\";\nimport { DeleteRequest, DeleteResponse, FieldFilter, protoMetadata as protoMetadata1 } from \"./resource_base\";\nimport { OperationStatus, protoMetadata as protoMetadata5, Status } from \"./status\";\n\nexport const protobufPackage = \"io.restorecommerce.job\";\n\n/**\n * A Kafka event.\n * Send when a job resource got deleted.\n */\nexport interface Deleted {\n  id?: string | undefined;\n}\n\n/** A list of jobs. */\nexport interface JobList {\n  items?: Job[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface JobListResponse {\n  items?: JobResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface JobResponse {\n  payload?: Job | undefined;\n  status?: Status | undefined;\n}\n\n/** A Job resource */\nexport interface Job {\n  /** Job ID */\n  id?:\n    | string\n    | undefined;\n  /** Job type */\n  type?:\n    | string\n    | undefined;\n  /** Job-specific data with variable payload */\n  data?:\n    | Data\n    | undefined;\n  /** Queue name to which the job should be added to */\n  queueName?:\n    | string\n    | undefined;\n  /** Used to specify the time at which the job is run */\n  when?:\n    | string\n    | undefined;\n  /** The job options */\n  options?: JobOptions | undefined;\n}\n\n/** Job Options */\nexport interface JobOptions {\n  /** Job priority */\n  priority?:\n    | JobOptions_Priority\n    | undefined;\n  /** Amount of possible failing runs until job fails */\n  attempts?:\n    | number\n    | undefined;\n  /** Delay settings between failed job runs */\n  backoff?:\n    | Backoff\n    | undefined;\n  /** The number of milliseconds after which the job should be fail with a timeout error */\n  timeout?:\n    | number\n    | undefined;\n  /** Used for periodic jobs */\n  repeat?:\n    | Repeat\n    | undefined;\n  /** To override the job ID - by default, the job ID is a unique generated by bull */\n  jobId?:\n    | string\n    | undefined;\n  /** If true, removes the job when it successfully completes */\n  removeOnComplete?: boolean | undefined;\n}\n\nexport enum JobOptions_Priority {\n  NORMAL = \"NORMAL\",\n  LOW = \"LOW\",\n  MEDIUM = \"MEDIUM\",\n  HIGH = \"HIGH\",\n  CRITICAL = \"CRITICAL\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function jobOptions_PriorityFromJSON(object: any): JobOptions_Priority {\n  switch (object) {\n    case 0:\n    case \"NORMAL\":\n      return JobOptions_Priority.NORMAL;\n    case 10:\n    case \"LOW\":\n      return JobOptions_Priority.LOW;\n    case -5:\n    case \"MEDIUM\":\n      return JobOptions_Priority.MEDIUM;\n    case -10:\n    case \"HIGH\":\n      return JobOptions_Priority.HIGH;\n    case -15:\n    case \"CRITICAL\":\n      return JobOptions_Priority.CRITICAL;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return JobOptions_Priority.UNRECOGNIZED;\n  }\n}\n\nexport function jobOptions_PriorityToJSON(object: JobOptions_Priority): string {\n  switch (object) {\n    case JobOptions_Priority.NORMAL:\n      return \"NORMAL\";\n    case JobOptions_Priority.LOW:\n      return \"LOW\";\n    case JobOptions_Priority.MEDIUM:\n      return \"MEDIUM\";\n    case JobOptions_Priority.HIGH:\n      return \"HIGH\";\n    case JobOptions_Priority.CRITICAL:\n      return \"CRITICAL\";\n    case JobOptions_Priority.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function jobOptions_PriorityToNumber(object: JobOptions_Priority): number {\n  switch (object) {\n    case JobOptions_Priority.NORMAL:\n      return 0;\n    case JobOptions_Priority.LOW:\n      return 10;\n    case JobOptions_Priority.MEDIUM:\n      return -5;\n    case JobOptions_Priority.HIGH:\n      return -10;\n    case JobOptions_Priority.CRITICAL:\n      return -15;\n    case JobOptions_Priority.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\nexport interface Repeat {\n  every?: number | undefined;\n  cron?: string | undefined;\n  startDate?: string | undefined;\n  endDate?: string | undefined;\n  count?:\n    | number\n    | undefined;\n  /** To override the job ID - by default, the job ID is a unique generated by bull */\n  jobId?:\n    | string\n    | undefined;\n  /** time zone */\n  tz?: string | undefined;\n}\n\n/** Data which is stored within a job instance */\nexport interface Data {\n  /** optional variable payload */\n  payload?: Any | undefined;\n  meta?:\n    | Meta\n    | undefined;\n  /** id of job creator */\n  subjectId?: string | undefined;\n}\n\n/**\n * A scheduled Job.\n * Emitted to Kafka by the scheduling service with event name 'queuedJob' and retreived by a service which processes this job.\n */\nexport interface ScheduledJob {\n  /** Job instance ID */\n  id?: string | undefined;\n  type?:\n    | string\n    | undefined;\n  /** Job-specific data with variable payload */\n  data?:\n    | Data\n    | undefined;\n  /** Type of schedule (ONCE, RECURR, etc) */\n  scheduleType?: string | undefined;\n}\n\n/**\n * A finished scheduled Job.\n * Emitted to Kafka by the service which processed the job with event name 'done' and retrieved by the scheduling service.\n */\nexport interface JobDone {\n  /** Job instance ID */\n  id?:\n    | string\n    | undefined;\n  /** Type of schedule (ONCE, RECURR, etc) */\n  scheduleType?:\n    | string\n    | undefined;\n  /** Whether to delete scheduled job */\n  deleteScheduled?:\n    | boolean\n    | undefined;\n  /** Job type */\n  type?: string | undefined;\n  result?: Any | undefined;\n}\n\n/**\n * A failed scheduled Job event from the Job Service.\n * Emitted to Kafka by the service which processed the Job and retrieved by the scheduling service.\n */\nexport interface JobFailed {\n  /** Job instance ID */\n  id?:\n    | string\n    | undefined;\n  /** Error message */\n  error?:\n    | string\n    | undefined;\n  /** Type of job ex: ONCE, RECURR etc. */\n  scheduleType?:\n    | string\n    | undefined;\n  /** Job type */\n  type?: string | undefined;\n}\n\n/** Delay between retries. */\nexport interface Backoff {\n  /** Time until retry in milliseconds */\n  delay?:\n    | number\n    | undefined;\n  /** Calculation of the delay */\n  type?: Backoff_Type | undefined;\n}\n\nexport enum Backoff_Type {\n  /** FIXED - Retry with the same delay */\n  FIXED = \"FIXED\",\n  /** EXPONENTIAL - Exponential delay increase between retries */\n  EXPONENTIAL = \"EXPONENTIAL\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function backoff_TypeFromJSON(object: any): Backoff_Type {\n  switch (object) {\n    case 0:\n    case \"FIXED\":\n      return Backoff_Type.FIXED;\n    case 1:\n    case \"EXPONENTIAL\":\n      return Backoff_Type.EXPONENTIAL;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return Backoff_Type.UNRECOGNIZED;\n  }\n}\n\nexport function backoff_TypeToJSON(object: Backoff_Type): string {\n  switch (object) {\n    case Backoff_Type.FIXED:\n      return \"FIXED\";\n    case Backoff_Type.EXPONENTIAL:\n      return \"EXPONENTIAL\";\n    case Backoff_Type.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function backoff_TypeToNumber(object: Backoff_Type): number {\n  switch (object) {\n    case Backoff_Type.FIXED:\n      return 0;\n    case Backoff_Type.EXPONENTIAL:\n      return 1;\n    case Backoff_Type.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\n/** Job-specific read request */\nexport interface JobReadRequest {\n  limit?: number | undefined;\n  sort?:\n    | JobReadRequest_SortOrder\n    | undefined;\n  /** Filter based on fieldName|operation, value|list */\n  filter?:\n    | JobFilter\n    | undefined;\n  /** Fields selector */\n  fields?: FieldFilter[] | undefined;\n  subject?: Subject | undefined;\n}\n\n/** only possible to sort jobs by creation date */\nexport enum JobReadRequest_SortOrder {\n  UNSORTED = \"UNSORTED\",\n  ASCENDING = \"ASCENDING\",\n  DESCENDING = \"DESCENDING\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function jobReadRequest_SortOrderFromJSON(object: any): JobReadRequest_SortOrder {\n  switch (object) {\n    case 0:\n    case \"UNSORTED\":\n      return JobReadRequest_SortOrder.UNSORTED;\n    case 1:\n    case \"ASCENDING\":\n      return JobReadRequest_SortOrder.ASCENDING;\n    case 2:\n    case \"DESCENDING\":\n      return JobReadRequest_SortOrder.DESCENDING;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return JobReadRequest_SortOrder.UNRECOGNIZED;\n  }\n}\n\nexport function jobReadRequest_SortOrderToJSON(object: JobReadRequest_SortOrder): string {\n  switch (object) {\n    case JobReadRequest_SortOrder.UNSORTED:\n      return \"UNSORTED\";\n    case JobReadRequest_SortOrder.ASCENDING:\n      return \"ASCENDING\";\n    case JobReadRequest_SortOrder.DESCENDING:\n      return \"DESCENDING\";\n    case JobReadRequest_SortOrder.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function jobReadRequest_SortOrderToNumber(object: JobReadRequest_SortOrder): number {\n  switch (object) {\n    case JobReadRequest_SortOrder.UNSORTED:\n      return 0;\n    case JobReadRequest_SortOrder.ASCENDING:\n      return 1;\n    case JobReadRequest_SortOrder.DESCENDING:\n      return 2;\n    case JobReadRequest_SortOrder.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\n/** filter */\nexport interface JobFilter {\n  jobIds?: string[] | undefined;\n  type?: string | undefined;\n}\n\nfunction createBaseDeleted(): Deleted {\n  return {};\n}\n\nexport const Deleted: MessageFns<Deleted> = {\n  encode(message: Deleted, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Deleted {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseDeleted();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Deleted {\n    return { id: isSet(object.id) ? globalThis.String(object.id) : undefined };\n  },\n\n  toJSON(message: Deleted): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Deleted>): Deleted {\n    return Deleted.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Deleted>): Deleted {\n    const message = createBaseDeleted();\n    message.id = object.id ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseJobList(): JobList {\n  return {};\n}\n\nexport const JobList: MessageFns<JobList> = {\n  encode(message: JobList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        Job.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): JobList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseJobList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = Job.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): JobList {\n    return {\n      items: globalThis.Array.isArray(object?.items) ? object.items.map((e: any) => Job.fromJSON(e)) : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: JobList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => Job.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<JobList>): JobList {\n    return JobList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<JobList>): JobList {\n    const message = createBaseJobList();\n    message.items = object.items?.map((e) => Job.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseJobListResponse(): JobListResponse {\n  return {};\n}\n\nexport const JobListResponse: MessageFns<JobListResponse> = {\n  encode(message: JobListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        JobResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): JobListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseJobListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = JobResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): JobListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => JobResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: JobListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => JobResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<JobListResponse>): JobListResponse {\n    return JobListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<JobListResponse>): JobListResponse {\n    const message = createBaseJobListResponse();\n    message.items = object.items?.map((e) => JobResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseJobResponse(): JobResponse {\n  return {};\n}\n\nexport const JobResponse: MessageFns<JobResponse> = {\n  encode(message: JobResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      Job.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): JobResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseJobResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = Job.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): JobResponse {\n    return {\n      payload: isSet(object.payload) ? Job.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: JobResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = Job.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<JobResponse>): JobResponse {\n    return JobResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<JobResponse>): JobResponse {\n    const message = createBaseJobResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? Job.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseJob(): Job {\n  return {};\n}\n\nexport const Job: MessageFns<Job> = {\n  encode(message: Job, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.type !== undefined) {\n      writer.uint32(18).string(message.type);\n    }\n    if (message.data !== undefined) {\n      Data.encode(message.data, writer.uint32(26).fork()).join();\n    }\n    if (message.queueName !== undefined) {\n      writer.uint32(34).string(message.queueName);\n    }\n    if (message.when !== undefined) {\n      writer.uint32(42).string(message.when);\n    }\n    if (message.options !== undefined) {\n      JobOptions.encode(message.options, writer.uint32(50).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Job {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseJob();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.type = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.data = Data.decode(reader, reader.uint32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.queueName = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.when = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.options = JobOptions.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Job {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      type: isSet(object.type) ? globalThis.String(object.type) : undefined,\n      data: isSet(object.data) ? Data.fromJSON(object.data) : undefined,\n      queueName: isSet(object.queueName) ? globalThis.String(object.queueName) : undefined,\n      when: isSet(object.when) ? globalThis.String(object.when) : undefined,\n      options: isSet(object.options) ? JobOptions.fromJSON(object.options) : undefined,\n    };\n  },\n\n  toJSON(message: Job): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.type !== undefined) {\n      obj.type = message.type;\n    }\n    if (message.data !== undefined) {\n      obj.data = Data.toJSON(message.data);\n    }\n    if (message.queueName !== undefined) {\n      obj.queueName = message.queueName;\n    }\n    if (message.when !== undefined) {\n      obj.when = message.when;\n    }\n    if (message.options !== undefined) {\n      obj.options = JobOptions.toJSON(message.options);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Job>): Job {\n    return Job.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Job>): Job {\n    const message = createBaseJob();\n    message.id = object.id ?? undefined;\n    message.type = object.type ?? undefined;\n    message.data = (object.data !== undefined && object.data !== null) ? Data.fromPartial(object.data) : undefined;\n    message.queueName = object.queueName ?? undefined;\n    message.when = object.when ?? undefined;\n    message.options = (object.options !== undefined && object.options !== null)\n      ? JobOptions.fromPartial(object.options)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseJobOptions(): JobOptions {\n  return {};\n}\n\nexport const JobOptions: MessageFns<JobOptions> = {\n  encode(message: JobOptions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.priority !== undefined) {\n      writer.uint32(104).int32(jobOptions_PriorityToNumber(message.priority));\n    }\n    if (message.attempts !== undefined) {\n      writer.uint32(112).uint32(message.attempts);\n    }\n    if (message.backoff !== undefined) {\n      Backoff.encode(message.backoff, writer.uint32(122).fork()).join();\n    }\n    if (message.timeout !== undefined) {\n      writer.uint32(128).uint32(message.timeout);\n    }\n    if (message.repeat !== undefined) {\n      Repeat.encode(message.repeat, writer.uint32(162).fork()).join();\n    }\n    if (message.jobId !== undefined) {\n      writer.uint32(170).string(message.jobId);\n    }\n    if (message.removeOnComplete !== undefined) {\n      writer.uint32(176).bool(message.removeOnComplete);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): JobOptions {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseJobOptions();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 13: {\n          if (tag !== 104) {\n            break;\n          }\n\n          message.priority = jobOptions_PriorityFromJSON(reader.int32());\n          continue;\n        }\n        case 14: {\n          if (tag !== 112) {\n            break;\n          }\n\n          message.attempts = reader.uint32();\n          continue;\n        }\n        case 15: {\n          if (tag !== 122) {\n            break;\n          }\n\n          message.backoff = Backoff.decode(reader, reader.uint32());\n          continue;\n        }\n        case 16: {\n          if (tag !== 128) {\n            break;\n          }\n\n          message.timeout = reader.uint32();\n          continue;\n        }\n        case 20: {\n          if (tag !== 162) {\n            break;\n          }\n\n          message.repeat = Repeat.decode(reader, reader.uint32());\n          continue;\n        }\n        case 21: {\n          if (tag !== 170) {\n            break;\n          }\n\n          message.jobId = reader.string();\n          continue;\n        }\n        case 22: {\n          if (tag !== 176) {\n            break;\n          }\n\n          message.removeOnComplete = reader.bool();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): JobOptions {\n    return {\n      priority: isSet(object.priority) ? jobOptions_PriorityFromJSON(object.priority) : undefined,\n      attempts: isSet(object.attempts) ? globalThis.Number(object.attempts) : undefined,\n      backoff: isSet(object.backoff) ? Backoff.fromJSON(object.backoff) : undefined,\n      timeout: isSet(object.timeout) ? globalThis.Number(object.timeout) : undefined,\n      repeat: isSet(object.repeat) ? Repeat.fromJSON(object.repeat) : undefined,\n      jobId: isSet(object.jobId) ? globalThis.String(object.jobId) : undefined,\n      removeOnComplete: isSet(object.removeOnComplete) ? globalThis.Boolean(object.removeOnComplete) : undefined,\n    };\n  },\n\n  toJSON(message: JobOptions): unknown {\n    const obj: any = {};\n    if (message.priority !== undefined) {\n      obj.priority = jobOptions_PriorityToJSON(message.priority);\n    }\n    if (message.attempts !== undefined) {\n      obj.attempts = Math.round(message.attempts);\n    }\n    if (message.backoff !== undefined) {\n      obj.backoff = Backoff.toJSON(message.backoff);\n    }\n    if (message.timeout !== undefined) {\n      obj.timeout = Math.round(message.timeout);\n    }\n    if (message.repeat !== undefined) {\n      obj.repeat = Repeat.toJSON(message.repeat);\n    }\n    if (message.jobId !== undefined) {\n      obj.jobId = message.jobId;\n    }\n    if (message.removeOnComplete !== undefined) {\n      obj.removeOnComplete = message.removeOnComplete;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<JobOptions>): JobOptions {\n    return JobOptions.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<JobOptions>): JobOptions {\n    const message = createBaseJobOptions();\n    message.priority = object.priority ?? undefined;\n    message.attempts = object.attempts ?? undefined;\n    message.backoff = (object.backoff !== undefined && object.backoff !== null)\n      ? Backoff.fromPartial(object.backoff)\n      : undefined;\n    message.timeout = object.timeout ?? undefined;\n    message.repeat = (object.repeat !== undefined && object.repeat !== null)\n      ? Repeat.fromPartial(object.repeat)\n      : undefined;\n    message.jobId = object.jobId ?? undefined;\n    message.removeOnComplete = object.removeOnComplete ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseRepeat(): Repeat {\n  return {};\n}\n\nexport const Repeat: MessageFns<Repeat> = {\n  encode(message: Repeat, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.every !== undefined) {\n      writer.uint32(8).uint32(message.every);\n    }\n    if (message.cron !== undefined) {\n      writer.uint32(18).string(message.cron);\n    }\n    if (message.startDate !== undefined) {\n      writer.uint32(26).string(message.startDate);\n    }\n    if (message.endDate !== undefined) {\n      writer.uint32(34).string(message.endDate);\n    }\n    if (message.count !== undefined) {\n      writer.uint32(40).uint32(message.count);\n    }\n    if (message.jobId !== undefined) {\n      writer.uint32(50).string(message.jobId);\n    }\n    if (message.tz !== undefined) {\n      writer.uint32(58).string(message.tz);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Repeat {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseRepeat();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.every = reader.uint32();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.cron = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.startDate = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.endDate = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 40) {\n            break;\n          }\n\n          message.count = reader.uint32();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.jobId = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.tz = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Repeat {\n    return {\n      every: isSet(object.every) ? globalThis.Number(object.every) : undefined,\n      cron: isSet(object.cron) ? globalThis.String(object.cron) : undefined,\n      startDate: isSet(object.startDate) ? globalThis.String(object.startDate) : undefined,\n      endDate: isSet(object.endDate) ? globalThis.String(object.endDate) : undefined,\n      count: isSet(object.count) ? globalThis.Number(object.count) : undefined,\n      jobId: isSet(object.jobId) ? globalThis.String(object.jobId) : undefined,\n      tz: isSet(object.tz) ? globalThis.String(object.tz) : undefined,\n    };\n  },\n\n  toJSON(message: Repeat): unknown {\n    const obj: any = {};\n    if (message.every !== undefined) {\n      obj.every = Math.round(message.every);\n    }\n    if (message.cron !== undefined) {\n      obj.cron = message.cron;\n    }\n    if (message.startDate !== undefined) {\n      obj.startDate = message.startDate;\n    }\n    if (message.endDate !== undefined) {\n      obj.endDate = message.endDate;\n    }\n    if (message.count !== undefined) {\n      obj.count = Math.round(message.count);\n    }\n    if (message.jobId !== undefined) {\n      obj.jobId = message.jobId;\n    }\n    if (message.tz !== undefined) {\n      obj.tz = message.tz;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Repeat>): Repeat {\n    return Repeat.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Repeat>): Repeat {\n    const message = createBaseRepeat();\n    message.every = object.every ?? undefined;\n    message.cron = object.cron ?? undefined;\n    message.startDate = object.startDate ?? undefined;\n    message.endDate = object.endDate ?? undefined;\n    message.count = object.count ?? undefined;\n    message.jobId = object.jobId ?? undefined;\n    message.tz = object.tz ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseData(): Data {\n  return {};\n}\n\nexport const Data: MessageFns<Data> = {\n  encode(message: Data, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      Any.encode(message.payload, writer.uint32(18).fork()).join();\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(26).fork()).join();\n    }\n    if (message.subjectId !== undefined) {\n      writer.uint32(34).string(message.subjectId);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Data {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseData();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.payload = Any.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.subjectId = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Data {\n    return {\n      payload: isSet(object.payload) ? Any.fromJSON(object.payload) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      subjectId: isSet(object.subjectId) ? globalThis.String(object.subjectId) : undefined,\n    };\n  },\n\n  toJSON(message: Data): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = Any.toJSON(message.payload);\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.subjectId !== undefined) {\n      obj.subjectId = message.subjectId;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Data>): Data {\n    return Data.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Data>): Data {\n    const message = createBaseData();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? Any.fromPartial(object.payload)\n      : undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.subjectId = object.subjectId ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseScheduledJob(): ScheduledJob {\n  return {};\n}\n\nexport const ScheduledJob: MessageFns<ScheduledJob> = {\n  encode(message: ScheduledJob, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.type !== undefined) {\n      writer.uint32(18).string(message.type);\n    }\n    if (message.data !== undefined) {\n      Data.encode(message.data, writer.uint32(26).fork()).join();\n    }\n    if (message.scheduleType !== undefined) {\n      writer.uint32(34).string(message.scheduleType);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ScheduledJob {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseScheduledJob();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.type = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.data = Data.decode(reader, reader.uint32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.scheduleType = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ScheduledJob {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      type: isSet(object.type) ? globalThis.String(object.type) : undefined,\n      data: isSet(object.data) ? Data.fromJSON(object.data) : undefined,\n      scheduleType: isSet(object.scheduleType) ? globalThis.String(object.scheduleType) : undefined,\n    };\n  },\n\n  toJSON(message: ScheduledJob): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.type !== undefined) {\n      obj.type = message.type;\n    }\n    if (message.data !== undefined) {\n      obj.data = Data.toJSON(message.data);\n    }\n    if (message.scheduleType !== undefined) {\n      obj.scheduleType = message.scheduleType;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ScheduledJob>): ScheduledJob {\n    return ScheduledJob.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ScheduledJob>): ScheduledJob {\n    const message = createBaseScheduledJob();\n    message.id = object.id ?? undefined;\n    message.type = object.type ?? undefined;\n    message.data = (object.data !== undefined && object.data !== null) ? Data.fromPartial(object.data) : undefined;\n    message.scheduleType = object.scheduleType ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseJobDone(): JobDone {\n  return {};\n}\n\nexport const JobDone: MessageFns<JobDone> = {\n  encode(message: JobDone, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.scheduleType !== undefined) {\n      writer.uint32(18).string(message.scheduleType);\n    }\n    if (message.deleteScheduled !== undefined) {\n      writer.uint32(24).bool(message.deleteScheduled);\n    }\n    if (message.type !== undefined) {\n      writer.uint32(34).string(message.type);\n    }\n    if (message.result !== undefined) {\n      Any.encode(message.result, writer.uint32(42).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): JobDone {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseJobDone();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.scheduleType = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.deleteScheduled = reader.bool();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.type = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.result = Any.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): JobDone {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      scheduleType: isSet(object.scheduleType) ? globalThis.String(object.scheduleType) : undefined,\n      deleteScheduled: isSet(object.deleteScheduled) ? globalThis.Boolean(object.deleteScheduled) : undefined,\n      type: isSet(object.type) ? globalThis.String(object.type) : undefined,\n      result: isSet(object.result) ? Any.fromJSON(object.result) : undefined,\n    };\n  },\n\n  toJSON(message: JobDone): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.scheduleType !== undefined) {\n      obj.scheduleType = message.scheduleType;\n    }\n    if (message.deleteScheduled !== undefined) {\n      obj.deleteScheduled = message.deleteScheduled;\n    }\n    if (message.type !== undefined) {\n      obj.type = message.type;\n    }\n    if (message.result !== undefined) {\n      obj.result = Any.toJSON(message.result);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<JobDone>): JobDone {\n    return JobDone.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<JobDone>): JobDone {\n    const message = createBaseJobDone();\n    message.id = object.id ?? undefined;\n    message.scheduleType = object.scheduleType ?? undefined;\n    message.deleteScheduled = object.deleteScheduled ?? undefined;\n    message.type = object.type ?? undefined;\n    message.result = (object.result !== undefined && object.result !== null)\n      ? Any.fromPartial(object.result)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseJobFailed(): JobFailed {\n  return {};\n}\n\nexport const JobFailed: MessageFns<JobFailed> = {\n  encode(message: JobFailed, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.error !== undefined) {\n      writer.uint32(18).string(message.error);\n    }\n    if (message.scheduleType !== undefined) {\n      writer.uint32(26).string(message.scheduleType);\n    }\n    if (message.type !== undefined) {\n      writer.uint32(34).string(message.type);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): JobFailed {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseJobFailed();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.error = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.scheduleType = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.type = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): JobFailed {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      error: isSet(object.error) ? globalThis.String(object.error) : undefined,\n      scheduleType: isSet(object.scheduleType) ? globalThis.String(object.scheduleType) : undefined,\n      type: isSet(object.type) ? globalThis.String(object.type) : undefined,\n    };\n  },\n\n  toJSON(message: JobFailed): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.error !== undefined) {\n      obj.error = message.error;\n    }\n    if (message.scheduleType !== undefined) {\n      obj.scheduleType = message.scheduleType;\n    }\n    if (message.type !== undefined) {\n      obj.type = message.type;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<JobFailed>): JobFailed {\n    return JobFailed.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<JobFailed>): JobFailed {\n    const message = createBaseJobFailed();\n    message.id = object.id ?? undefined;\n    message.error = object.error ?? undefined;\n    message.scheduleType = object.scheduleType ?? undefined;\n    message.type = object.type ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseBackoff(): Backoff {\n  return {};\n}\n\nexport const Backoff: MessageFns<Backoff> = {\n  encode(message: Backoff, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.delay !== undefined) {\n      writer.uint32(9).double(message.delay);\n    }\n    if (message.type !== undefined) {\n      writer.uint32(16).int32(backoff_TypeToNumber(message.type));\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Backoff {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseBackoff();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 9) {\n            break;\n          }\n\n          message.delay = reader.double();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.type = backoff_TypeFromJSON(reader.int32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Backoff {\n    return {\n      delay: isSet(object.delay) ? globalThis.Number(object.delay) : undefined,\n      type: isSet(object.type) ? backoff_TypeFromJSON(object.type) : undefined,\n    };\n  },\n\n  toJSON(message: Backoff): unknown {\n    const obj: any = {};\n    if (message.delay !== undefined) {\n      obj.delay = message.delay;\n    }\n    if (message.type !== undefined) {\n      obj.type = backoff_TypeToJSON(message.type);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Backoff>): Backoff {\n    return Backoff.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Backoff>): Backoff {\n    const message = createBaseBackoff();\n    message.delay = object.delay ?? undefined;\n    message.type = object.type ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseJobReadRequest(): JobReadRequest {\n  return {};\n}\n\nexport const JobReadRequest: MessageFns<JobReadRequest> = {\n  encode(message: JobReadRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.limit !== undefined) {\n      writer.uint32(8).uint32(message.limit);\n    }\n    if (message.sort !== undefined) {\n      writer.uint32(16).int32(jobReadRequest_SortOrderToNumber(message.sort));\n    }\n    if (message.filter !== undefined) {\n      JobFilter.encode(message.filter, writer.uint32(34).fork()).join();\n    }\n    if (message.fields !== undefined && message.fields.length !== 0) {\n      for (const v of message.fields) {\n        FieldFilter.encode(v!, writer.uint32(26).fork()).join();\n      }\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(42).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): JobReadRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseJobReadRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.limit = reader.uint32();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.sort = jobReadRequest_SortOrderFromJSON(reader.int32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.filter = JobFilter.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          if (message.fields === undefined) {\n            message.fields = [];\n          }\n          const el = FieldFilter.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.fields!.push(el);\n          }\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): JobReadRequest {\n    return {\n      limit: isSet(object.limit) ? globalThis.Number(object.limit) : undefined,\n      sort: isSet(object.sort) ? jobReadRequest_SortOrderFromJSON(object.sort) : undefined,\n      filter: isSet(object.filter) ? JobFilter.fromJSON(object.filter) : undefined,\n      fields: globalThis.Array.isArray(object?.fields)\n        ? object.fields.map((e: any) => FieldFilter.fromJSON(e))\n        : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: JobReadRequest): unknown {\n    const obj: any = {};\n    if (message.limit !== undefined) {\n      obj.limit = Math.round(message.limit);\n    }\n    if (message.sort !== undefined) {\n      obj.sort = jobReadRequest_SortOrderToJSON(message.sort);\n    }\n    if (message.filter !== undefined) {\n      obj.filter = JobFilter.toJSON(message.filter);\n    }\n    if (message.fields?.length) {\n      obj.fields = message.fields.map((e) => FieldFilter.toJSON(e));\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<JobReadRequest>): JobReadRequest {\n    return JobReadRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<JobReadRequest>): JobReadRequest {\n    const message = createBaseJobReadRequest();\n    message.limit = object.limit ?? undefined;\n    message.sort = object.sort ?? undefined;\n    message.filter = (object.filter !== undefined && object.filter !== null)\n      ? JobFilter.fromPartial(object.filter)\n      : undefined;\n    message.fields = object.fields?.map((e) => FieldFilter.fromPartial(e)) || undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseJobFilter(): JobFilter {\n  return {};\n}\n\nexport const JobFilter: MessageFns<JobFilter> = {\n  encode(message: JobFilter, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.jobIds !== undefined && message.jobIds.length !== 0) {\n      for (const v of message.jobIds) {\n        writer.uint32(10).string(v!);\n      }\n    }\n    if (message.type !== undefined) {\n      writer.uint32(18).string(message.type);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): JobFilter {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseJobFilter();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.jobIds === undefined) {\n            message.jobIds = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.jobIds!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.type = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): JobFilter {\n    return {\n      jobIds: globalThis.Array.isArray(object?.jobIds)\n        ? object.jobIds.map((e: any) => globalThis.String(e))\n        : undefined,\n      type: isSet(object.type) ? globalThis.String(object.type) : undefined,\n    };\n  },\n\n  toJSON(message: JobFilter): unknown {\n    const obj: any = {};\n    if (message.jobIds?.length) {\n      obj.jobIds = message.jobIds;\n    }\n    if (message.type !== undefined) {\n      obj.type = message.type;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<JobFilter>): JobFilter {\n    return JobFilter.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<JobFilter>): JobFilter {\n    const message = createBaseJobFilter();\n    message.jobIds = object.jobIds?.map((e) => e) || undefined;\n    message.type = object.type ?? undefined;\n    return message;\n  },\n};\n\n/**\n * The microservice for scheduling jobs.\n * Provides CRUD operations.\n */\nexport type JobServiceDefinition = typeof JobServiceDefinition;\nexport const JobServiceDefinition = {\n  name: \"JobService\",\n  fullName: \"io.restorecommerce.job.JobService\",\n  methods: {\n    read: {\n      name: \"Read\",\n      requestType: JobReadRequest,\n      requestStream: false,\n      responseType: JobListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    create: {\n      name: \"Create\",\n      requestType: JobList,\n      requestStream: false,\n      responseType: JobListResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n    update: {\n      name: \"Update\",\n      requestType: JobList,\n      requestStream: false,\n      responseType: JobListResponse,\n      responseStream: false,\n      options: {},\n    },\n    upsert: {\n      name: \"Upsert\",\n      requestType: JobList,\n      requestStream: false,\n      responseType: JobListResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface JobServiceImplementation<CallContextExt = {}> {\n  read(request: JobReadRequest, context: CallContext & CallContextExt): Promise<DeepPartial<JobListResponse>>;\n  create(request: JobList, context: CallContext & CallContextExt): Promise<DeepPartial<JobListResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n  update(request: JobList, context: CallContext & CallContextExt): Promise<DeepPartial<JobListResponse>>;\n  upsert(request: JobList, context: CallContext & CallContextExt): Promise<DeepPartial<JobListResponse>>;\n}\n\nexport interface JobServiceClient<CallOptionsExt = {}> {\n  read(request: DeepPartial<JobReadRequest>, options?: CallOptions & CallOptionsExt): Promise<JobListResponse>;\n  create(request: DeepPartial<JobList>, options?: CallOptions & CallOptionsExt): Promise<JobListResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n  update(request: DeepPartial<JobList>, options?: CallOptions & CallOptionsExt): Promise<JobListResponse>;\n  upsert(request: DeepPartial<JobList>, options?: CallOptions & CallOptionsExt): Promise<JobListResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/job.proto\",\n    \"package\": \"io.restorecommerce.job\",\n    \"dependency\": [\n      \"io/restorecommerce/resource_base.proto\",\n      \"google/protobuf/any.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/options.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Deleted\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"JobList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.job.Job\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"JobListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.job.JobResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"JobResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.job.Job\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Job\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"type\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"type\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"data\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.job.Data\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"data\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"queue_name\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"queueName\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"when\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"when\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"options\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.job.JobOptions\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"options\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_type\", \"options\": undefined },\n        { \"name\": \"_data\", \"options\": undefined },\n        { \"name\": \"_queue_name\", \"options\": undefined },\n        { \"name\": \"_when\", \"options\": undefined },\n        { \"name\": \"_options\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"JobOptions\",\n      \"field\": [{\n        \"name\": \"priority\",\n        \"number\": 13,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".io.restorecommerce.job.JobOptions.Priority\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"priority\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"attempts\",\n        \"number\": 14,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"attempts\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"backoff\",\n        \"number\": 15,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.job.Backoff\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"backoff\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"timeout\",\n        \"number\": 16,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"timeout\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"repeat\",\n        \"number\": 20,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.job.Repeat\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"repeat\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"jobId\",\n        \"number\": 21,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"jobId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"removeOnComplete\",\n        \"number\": 22,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"removeOnComplete\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [{\n        \"name\": \"Priority\",\n        \"value\": [\n          { \"name\": \"NORMAL\", \"number\": 0, \"options\": undefined },\n          { \"name\": \"LOW\", \"number\": 10, \"options\": undefined },\n          { \"name\": \"MEDIUM\", \"number\": -5, \"options\": undefined },\n          { \"name\": \"HIGH\", \"number\": -10, \"options\": undefined },\n          { \"name\": \"CRITICAL\", \"number\": -15, \"options\": undefined },\n        ],\n        \"options\": undefined,\n        \"reservedRange\": [],\n        \"reservedName\": [],\n      }],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_priority\", \"options\": undefined },\n        { \"name\": \"_attempts\", \"options\": undefined },\n        { \"name\": \"_backoff\", \"options\": undefined },\n        { \"name\": \"_timeout\", \"options\": undefined },\n        { \"name\": \"_repeat\", \"options\": undefined },\n        { \"name\": \"_jobId\", \"options\": undefined },\n        { \"name\": \"_removeOnComplete\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Repeat\",\n      \"field\": [{\n        \"name\": \"every\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"every\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"cron\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"cron\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"startDate\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"startDate\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"endDate\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"endDate\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"count\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"count\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"jobId\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"jobId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"tz\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"tz\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_every\", \"options\": undefined },\n        { \"name\": \"_cron\", \"options\": undefined },\n        { \"name\": \"_startDate\", \"options\": undefined },\n        { \"name\": \"_endDate\", \"options\": undefined },\n        { \"name\": \"_count\", \"options\": undefined },\n        { \"name\": \"_jobId\", \"options\": undefined },\n        { \"name\": \"_tz\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Data\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Any\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject_id\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"subjectId\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_meta\", \"options\": undefined }, {\n        \"name\": \"_subject_id\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ScheduledJob\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"type\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"type\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"data\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.job.Data\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"data\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"schedule_type\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"scheduleType\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }, { \"name\": \"_type\", \"options\": undefined }, {\n        \"name\": \"_data\",\n        \"options\": undefined,\n      }, { \"name\": \"_schedule_type\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"JobDone\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"schedule_type\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"scheduleType\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"delete_scheduled\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"deleteScheduled\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"type\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"type\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"result\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Any\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"result\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_schedule_type\", \"options\": undefined },\n        { \"name\": \"_delete_scheduled\", \"options\": undefined },\n        { \"name\": \"_type\", \"options\": undefined },\n        { \"name\": \"_result\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"JobFailed\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"error\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"error\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"schedule_type\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"scheduleType\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"type\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"type\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }, { \"name\": \"_error\", \"options\": undefined }, {\n        \"name\": \"_schedule_type\",\n        \"options\": undefined,\n      }, { \"name\": \"_type\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Backoff\",\n      \"field\": [{\n        \"name\": \"delay\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 1,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"delay\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"type\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".io.restorecommerce.job.Backoff.Type\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"type\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [{\n        \"name\": \"Type\",\n        \"value\": [{ \"name\": \"FIXED\", \"number\": 0, \"options\": undefined }, {\n          \"name\": \"EXPONENTIAL\",\n          \"number\": 1,\n          \"options\": undefined,\n        }],\n        \"options\": undefined,\n        \"reservedRange\": [],\n        \"reservedName\": [],\n      }],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_delay\", \"options\": undefined }, { \"name\": \"_type\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"JobReadRequest\",\n      \"field\": [{\n        \"name\": \"limit\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"limit\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"sort\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".io.restorecommerce.job.JobReadRequest.SortOrder\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"sort\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"filter\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.job.JobFilter\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"filter\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"fields\",\n        \"number\": 3,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.resourcebase.FieldFilter\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"fields\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [{\n        \"name\": \"SortOrder\",\n        \"value\": [{ \"name\": \"UNSORTED\", \"number\": 0, \"options\": undefined }, {\n          \"name\": \"ASCENDING\",\n          \"number\": 1,\n          \"options\": undefined,\n        }, { \"name\": \"DESCENDING\", \"number\": 2, \"options\": undefined }],\n        \"options\": undefined,\n        \"reservedRange\": [],\n        \"reservedName\": [],\n      }],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_limit\", \"options\": undefined }, { \"name\": \"_sort\", \"options\": undefined }, {\n        \"name\": \"_filter\",\n        \"options\": undefined,\n      }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"JobFilter\",\n      \"field\": [{\n        \"name\": \"job_ids\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"jobIds\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"type\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"type\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_type\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [{\n      \"name\": \"JobService\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.job.JobReadRequest\",\n        \"outputType\": \".io.restorecommerce.job.JobListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.job.JobList\",\n        \"outputType\": \".io.restorecommerce.job.JobListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.job.JobList\",\n        \"outputType\": \".io.restorecommerce.job.JobListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.job.JobList\",\n        \"outputType\": \".io.restorecommerce.job.JobListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [6, 0],\n        \"span\": [15, 0, 23, 1],\n        \"leadingComments\": \"*\\n The microservice for scheduling jobs.\\n Provides CRUD operations.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 0],\n        \"span\": [29, 0, 31, 1],\n        \"leadingComments\": \"*\\n A Kafka event.\\n Send when a job resource got deleted.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 1],\n        \"span\": [36, 0, 40, 1],\n        \"leadingComments\": \"*\\n A list of jobs.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4],\n        \"span\": [56, 0, 63, 1],\n        \"leadingComments\": \"*\\n A Job resource\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4, 2, 0],\n        \"span\": [57, 2, 25],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Job ID\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4, 2, 1],\n        \"span\": [58, 2, 27],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Job type\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4, 2, 2],\n        \"span\": [59, 2, 25],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Job-specific data with variable payload\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4, 2, 3],\n        \"span\": [60, 2, 33],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Queue name to which the job should be added to\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4, 2, 4],\n        \"span\": [61, 2, 27],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Used to specify the time at which the job is run\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 4, 2, 5],\n        \"span\": [62, 2, 34],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" The job options\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 5],\n        \"span\": [68, 0, 85, 1],\n        \"leadingComments\": \"*\\n Job Options\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 5, 2, 0],\n        \"span\": [77, 2, 34],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Job priority\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 5, 2, 1],\n        \"span\": [78, 2, 32],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Amount of possible failing runs until job fails\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 5, 2, 2],\n        \"span\": [79, 2, 32],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Delay settings between failed job runs\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 5, 2, 3],\n        \"span\": [80, 2, 31],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" The number of milliseconds after which the job should be fail with a timeout error\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 5, 2, 4],\n        \"span\": [82, 2, 30],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Used for periodic jobs\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 5, 2, 5],\n        \"span\": [83, 2, 29],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" To override the job ID - by default, the job ID is a unique generated by bull\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 5, 2, 6],\n        \"span\": [84, 2, 38],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" If true, removes the job when it successfully completes\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 6, 2, 5],\n        \"span\": [93, 2, 28],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" To override the job ID - by default, the job ID is a unique generated by bull\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 6, 2, 6],\n        \"span\": [94, 2, 25],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" time zone\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 7],\n        \"span\": [98, 0, 102, 1],\n        \"leadingComments\": \" Data which is stored within a job instance\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 7, 2, 0],\n        \"span\": [99, 2, 43],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" optional variable payload\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 7, 2, 2],\n        \"span\": [101, 2, 33],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" id of job creator\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 8],\n        \"span\": [108, 0, 113, 1],\n        \"leadingComments\":\n          \"*\\n A scheduled Job.\\n Emitted to Kafka by the scheduling service with event name 'queuedJob' and retreived by a service which processes this job.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 8, 2, 0],\n        \"span\": [109, 2, 25],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Job instance ID\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 8, 2, 2],\n        \"span\": [111, 2, 25],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Job-specific data with variable payload\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 8, 2, 3],\n        \"span\": [112, 2, 36],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Type of schedule (ONCE, RECURR, etc)\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 9],\n        \"span\": [119, 0, 125, 1],\n        \"leadingComments\":\n          \"*\\n A finished scheduled Job.\\n Emitted to Kafka by the service which processed the job with event name 'done' and retrieved by the scheduling service.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 9, 2, 0],\n        \"span\": [120, 2, 25],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Job instance ID\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 9, 2, 1],\n        \"span\": [121, 2, 36],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Type of schedule (ONCE, RECURR, etc)\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 9, 2, 2],\n        \"span\": [122, 2, 37],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Whether to delete scheduled job\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 9, 2, 3],\n        \"span\": [123, 2, 27],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Job type\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 10],\n        \"span\": [131, 0, 136, 1],\n        \"leadingComments\":\n          \"*\\n A failed scheduled Job event from the Job Service.\\n Emitted to Kafka by the service which processed the Job and retrieved by the scheduling service.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 10, 2, 0],\n        \"span\": [132, 2, 25],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Job instance ID\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 10, 2, 1],\n        \"span\": [133, 2, 28],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Error message\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 10, 2, 2],\n        \"span\": [134, 2, 36],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Type of job ex: ONCE, RECURR etc.\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 10, 2, 3],\n        \"span\": [135, 2, 27],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Job type\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 11],\n        \"span\": [141, 0, 148, 1],\n        \"leadingComments\": \"*\\n Delay between retries.\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 11, 4, 0, 2, 0],\n        \"span\": [143, 4, 14],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Retry with the same delay\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 11, 4, 0, 2, 1],\n        \"span\": [144, 4, 20],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Exponential delay increase between retries\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 11, 2, 0],\n        \"span\": [146, 2, 28],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Time until retry in milliseconds\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 11, 2, 1],\n        \"span\": [147, 2, 25],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Calculation of the delay\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 12],\n        \"span\": [151, 0, 167, 1],\n        \"leadingComments\": \" Job-specific read request\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 12, 4, 0],\n        \"span\": [154, 2, 158, 3],\n        \"leadingComments\": \" only possible to sort jobs by creation date\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 12, 2, 2],\n        \"span\": [162, 2, 32],\n        \"leadingComments\": \" Filter based on fieldName|operation, value|list\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 12, 2, 3],\n        \"span\": [165, 2, 66],\n        \"leadingComments\": \" Fields selector\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 13],\n        \"span\": [170, 0, 173, 1],\n        \"leadingComments\": \" filter\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.job.Deleted\": Deleted,\n    \".io.restorecommerce.job.JobList\": JobList,\n    \".io.restorecommerce.job.JobListResponse\": JobListResponse,\n    \".io.restorecommerce.job.JobResponse\": JobResponse,\n    \".io.restorecommerce.job.Job\": Job,\n    \".io.restorecommerce.job.JobOptions\": JobOptions,\n    \".io.restorecommerce.job.JobOptions.Priority\": JobOptions_Priority,\n    \".io.restorecommerce.job.Repeat\": Repeat,\n    \".io.restorecommerce.job.Data\": Data,\n    \".io.restorecommerce.job.ScheduledJob\": ScheduledJob,\n    \".io.restorecommerce.job.JobDone\": JobDone,\n    \".io.restorecommerce.job.JobFailed\": JobFailed,\n    \".io.restorecommerce.job.Backoff\": Backoff,\n    \".io.restorecommerce.job.Backoff.Type\": Backoff_Type,\n    \".io.restorecommerce.job.JobReadRequest\": JobReadRequest,\n    \".io.restorecommerce.job.JobReadRequest.SortOrder\": JobReadRequest_SortOrder,\n    \".io.restorecommerce.job.JobFilter\": JobFilter,\n  },\n  dependencies: [protoMetadata1, protoMetadata2, protoMetadata3, protoMetadata4, protoMetadata5, protoMetadata6],\n  options: { services: { \"JobService\": { methods: { \"Read\": { \"is_query\": true } } } } },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/notification.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { protoMetadata as protoMetadata3, Subject } from \"./auth\";\nimport { Meta, protoMetadata as protoMetadata2 } from \"./meta\";\nimport { protoMetadata as protoMetadata5 } from \"./options\";\nimport { DeleteRequest, DeleteResponse, protoMetadata as protoMetadata1, ReadRequest } from \"./resource_base\";\nimport { OperationStatus, protoMetadata as protoMetadata4, Status } from \"./status\";\n\nexport const protobufPackage = \"io.restorecommerce.notification\";\n\nexport interface Deleted {\n  id?: string | undefined;\n}\n\nexport interface NotificationList {\n  items?: Notification[] | undefined;\n  totalCount?: number | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface NotificationListResponse {\n  items?: NotificationResponse[] | undefined;\n  totalCount?: number | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface NotificationResponse {\n  payload?: Notification | undefined;\n  status?: Status | undefined;\n}\n\nexport interface Notification {\n  id?: string | undefined;\n  meta?: Meta | undefined;\n  name?: string | undefined;\n  description?: string | undefined;\n  notificationChannelIds?: string[] | undefined;\n  email?: string | undefined;\n  telephoneNumber?: string | undefined;\n  subjectTemplate?: string | undefined;\n  bodyTemplate?: string | undefined;\n  active?: boolean | undefined;\n}\n\nfunction createBaseDeleted(): Deleted {\n  return {};\n}\n\nexport const Deleted: MessageFns<Deleted> = {\n  encode(message: Deleted, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Deleted {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseDeleted();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Deleted {\n    return { id: isSet(object.id) ? globalThis.String(object.id) : undefined };\n  },\n\n  toJSON(message: Deleted): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Deleted>): Deleted {\n    return Deleted.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Deleted>): Deleted {\n    const message = createBaseDeleted();\n    message.id = object.id ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseNotificationList(): NotificationList {\n  return {};\n}\n\nexport const NotificationList: MessageFns<NotificationList> = {\n  encode(message: NotificationList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        Notification.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): NotificationList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseNotificationList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = Notification.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): NotificationList {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => Notification.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: NotificationList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => Notification.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<NotificationList>): NotificationList {\n    return NotificationList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<NotificationList>): NotificationList {\n    const message = createBaseNotificationList();\n    message.items = object.items?.map((e) => Notification.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseNotificationListResponse(): NotificationListResponse {\n  return {};\n}\n\nexport const NotificationListResponse: MessageFns<NotificationListResponse> = {\n  encode(message: NotificationListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        NotificationResponse.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.totalCount !== undefined) {\n      writer.uint32(16).uint32(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): NotificationListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseNotificationListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = NotificationResponse.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.totalCount = reader.uint32();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): NotificationListResponse {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => NotificationResponse.fromJSON(e))\n        : undefined,\n      totalCount: isSet(object.totalCount) ? globalThis.Number(object.totalCount) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: NotificationListResponse): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => NotificationResponse.toJSON(e));\n    }\n    if (message.totalCount !== undefined) {\n      obj.totalCount = Math.round(message.totalCount);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<NotificationListResponse>): NotificationListResponse {\n    return NotificationListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<NotificationListResponse>): NotificationListResponse {\n    const message = createBaseNotificationListResponse();\n    message.items = object.items?.map((e) => NotificationResponse.fromPartial(e)) || undefined;\n    message.totalCount = object.totalCount ?? undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseNotificationResponse(): NotificationResponse {\n  return {};\n}\n\nexport const NotificationResponse: MessageFns<NotificationResponse> = {\n  encode(message: NotificationResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      Notification.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): NotificationResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseNotificationResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = Notification.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): NotificationResponse {\n    return {\n      payload: isSet(object.payload) ? Notification.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: NotificationResponse): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = Notification.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<NotificationResponse>): NotificationResponse {\n    return NotificationResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<NotificationResponse>): NotificationResponse {\n    const message = createBaseNotificationResponse();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? Notification.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseNotification(): Notification {\n  return {};\n}\n\nexport const Notification: MessageFns<Notification> = {\n  encode(message: Notification, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.id !== undefined) {\n      writer.uint32(10).string(message.id);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(18).fork()).join();\n    }\n    if (message.name !== undefined) {\n      writer.uint32(26).string(message.name);\n    }\n    if (message.description !== undefined) {\n      writer.uint32(34).string(message.description);\n    }\n    if (message.notificationChannelIds !== undefined && message.notificationChannelIds.length !== 0) {\n      for (const v of message.notificationChannelIds) {\n        writer.uint32(42).string(v!);\n      }\n    }\n    if (message.email !== undefined) {\n      writer.uint32(50).string(message.email);\n    }\n    if (message.telephoneNumber !== undefined) {\n      writer.uint32(58).string(message.telephoneNumber);\n    }\n    if (message.subjectTemplate !== undefined) {\n      writer.uint32(66).string(message.subjectTemplate);\n    }\n    if (message.bodyTemplate !== undefined) {\n      writer.uint32(74).string(message.bodyTemplate);\n    }\n    if (message.active !== undefined) {\n      writer.uint32(80).bool(message.active);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Notification {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseNotification();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.id = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.name = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.description = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          if (message.notificationChannelIds === undefined) {\n            message.notificationChannelIds = [];\n          }\n          const el = reader.string();\n          if (el !== undefined) {\n            message.notificationChannelIds!.push(el);\n          }\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.email = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.telephoneNumber = reader.string();\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          message.subjectTemplate = reader.string();\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.bodyTemplate = reader.string();\n          continue;\n        }\n        case 10: {\n          if (tag !== 80) {\n            break;\n          }\n\n          message.active = reader.bool();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Notification {\n    return {\n      id: isSet(object.id) ? globalThis.String(object.id) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      name: isSet(object.name) ? globalThis.String(object.name) : undefined,\n      description: isSet(object.description) ? globalThis.String(object.description) : undefined,\n      notificationChannelIds: globalThis.Array.isArray(object?.notificationChannelIds)\n        ? object.notificationChannelIds.map((e: any) => globalThis.String(e))\n        : undefined,\n      email: isSet(object.email) ? globalThis.String(object.email) : undefined,\n      telephoneNumber: isSet(object.telephoneNumber) ? globalThis.String(object.telephoneNumber) : undefined,\n      subjectTemplate: isSet(object.subjectTemplate) ? globalThis.String(object.subjectTemplate) : undefined,\n      bodyTemplate: isSet(object.bodyTemplate) ? globalThis.String(object.bodyTemplate) : undefined,\n      active: isSet(object.active) ? globalThis.Boolean(object.active) : undefined,\n    };\n  },\n\n  toJSON(message: Notification): unknown {\n    const obj: any = {};\n    if (message.id !== undefined) {\n      obj.id = message.id;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.name !== undefined) {\n      obj.name = message.name;\n    }\n    if (message.description !== undefined) {\n      obj.description = message.description;\n    }\n    if (message.notificationChannelIds?.length) {\n      obj.notificationChannelIds = message.notificationChannelIds;\n    }\n    if (message.email !== undefined) {\n      obj.email = message.email;\n    }\n    if (message.telephoneNumber !== undefined) {\n      obj.telephoneNumber = message.telephoneNumber;\n    }\n    if (message.subjectTemplate !== undefined) {\n      obj.subjectTemplate = message.subjectTemplate;\n    }\n    if (message.bodyTemplate !== undefined) {\n      obj.bodyTemplate = message.bodyTemplate;\n    }\n    if (message.active !== undefined) {\n      obj.active = message.active;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Notification>): Notification {\n    return Notification.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Notification>): Notification {\n    const message = createBaseNotification();\n    message.id = object.id ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.name = object.name ?? undefined;\n    message.description = object.description ?? undefined;\n    message.notificationChannelIds = object.notificationChannelIds?.map((e) => e) || undefined;\n    message.email = object.email ?? undefined;\n    message.telephoneNumber = object.telephoneNumber ?? undefined;\n    message.subjectTemplate = object.subjectTemplate ?? undefined;\n    message.bodyTemplate = object.bodyTemplate ?? undefined;\n    message.active = object.active ?? undefined;\n    return message;\n  },\n};\n\n/** Message structure for Notification */\nexport type NotificationServiceDefinition = typeof NotificationServiceDefinition;\nexport const NotificationServiceDefinition = {\n  name: \"NotificationService\",\n  fullName: \"io.restorecommerce.notification.NotificationService\",\n  methods: {\n    read: {\n      name: \"Read\",\n      requestType: ReadRequest,\n      requestStream: false,\n      responseType: NotificationListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    create: {\n      name: \"Create\",\n      requestType: NotificationList,\n      requestStream: false,\n      responseType: NotificationListResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n    update: {\n      name: \"Update\",\n      requestType: NotificationList,\n      requestStream: false,\n      responseType: NotificationListResponse,\n      responseStream: false,\n      options: {},\n    },\n    upsert: {\n      name: \"Upsert\",\n      requestType: NotificationList,\n      requestStream: false,\n      responseType: NotificationListResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface NotificationServiceImplementation<CallContextExt = {}> {\n  read(request: ReadRequest, context: CallContext & CallContextExt): Promise<DeepPartial<NotificationListResponse>>;\n  create(\n    request: NotificationList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<NotificationListResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n  update(\n    request: NotificationList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<NotificationListResponse>>;\n  upsert(\n    request: NotificationList,\n    context: CallContext & CallContextExt,\n  ): Promise<DeepPartial<NotificationListResponse>>;\n}\n\nexport interface NotificationServiceClient<CallOptionsExt = {}> {\n  read(request: DeepPartial<ReadRequest>, options?: CallOptions & CallOptionsExt): Promise<NotificationListResponse>;\n  create(\n    request: DeepPartial<NotificationList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<NotificationListResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n  update(\n    request: DeepPartial<NotificationList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<NotificationListResponse>;\n  upsert(\n    request: DeepPartial<NotificationList>,\n    options?: CallOptions & CallOptionsExt,\n  ): Promise<NotificationListResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/notification.proto\",\n    \"package\": \"io.restorecommerce.notification\",\n    \"dependency\": [\n      \"io/restorecommerce/resource_base.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/options.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"Deleted\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_id\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"NotificationList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.notification.Notification\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"NotificationListResponse\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.notification.NotificationResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"total_count\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 13,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"totalCount\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_total_count\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"NotificationResponse\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.notification.Notification\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Notification\",\n      \"field\": [{\n        \"name\": \"id\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"id\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"name\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"name\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"description\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"description\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"notification_channel_ids\",\n        \"number\": 5,\n        \"label\": 3,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"notificationChannelIds\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"email\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"email\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"telephone_number\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"telephoneNumber\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"subject_template\",\n        \"number\": 8,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"subjectTemplate\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"body_template\",\n        \"number\": 9,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"bodyTemplate\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"active\",\n        \"number\": 10,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 7,\n        \"jsonName\": \"active\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"address_type\", \"options\": undefined },\n        { \"name\": \"_id\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_name\", \"options\": undefined },\n        { \"name\": \"_description\", \"options\": undefined },\n        { \"name\": \"_subject_template\", \"options\": undefined },\n        { \"name\": \"_body_template\", \"options\": undefined },\n        { \"name\": \"_active\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [{\n      \"name\": \"NotificationService\",\n      \"method\": [{\n        \"name\": \"Read\",\n        \"inputType\": \".io.restorecommerce.resourcebase.ReadRequest\",\n        \"outputType\": \".io.restorecommerce.notification.NotificationListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Create\",\n        \"inputType\": \".io.restorecommerce.notification.NotificationList\",\n        \"outputType\": \".io.restorecommerce.notification.NotificationListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.resourcebase.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Update\",\n        \"inputType\": \".io.restorecommerce.notification.NotificationList\",\n        \"outputType\": \".io.restorecommerce.notification.NotificationListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Upsert\",\n        \"inputType\": \".io.restorecommerce.notification.NotificationList\",\n        \"outputType\": \".io.restorecommerce.notification.NotificationListResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [6, 0],\n        \"span\": [11, 0, 19, 1],\n        \"leadingComments\": \" Message structure for Notification\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.notification.Deleted\": Deleted,\n    \".io.restorecommerce.notification.NotificationList\": NotificationList,\n    \".io.restorecommerce.notification.NotificationListResponse\": NotificationListResponse,\n    \".io.restorecommerce.notification.NotificationResponse\": NotificationResponse,\n    \".io.restorecommerce.notification.Notification\": Notification,\n  },\n  dependencies: [protoMetadata1, protoMetadata2, protoMetadata3, protoMetadata4, protoMetadata5],\n  options: { services: { \"NotificationService\": { methods: { \"Read\": { \"is_query\": true } } } } },\n};\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/ostorage.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { Any, protoMetadata as protoMetadata2 } from \"../../google/protobuf/any\";\nimport { Attribute, protoMetadata as protoMetadata5 } from \"./attribute\";\nimport { protoMetadata as protoMetadata4, Subject } from \"./auth\";\nimport { FilterOp, protoMetadata as protoMetadata1 } from \"./filter\";\nimport { Meta, protoMetadata as protoMetadata3 } from \"./meta\";\nimport { protoMetadata as protoMetadata8 } from \"./options\";\nimport { DeleteResponse, protoMetadata as protoMetadata7 } from \"./resource_base\";\nimport { OperationStatus, protoMetadata as protoMetadata6, Status } from \"./status\";\n\nexport const protobufPackage = \"io.restorecommerce.ostorage\";\n\nexport interface CopyRequestList {\n  items?: CopyRequestItem[] | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface CopyResponseList {\n  responses?: copyResponsePayloadWithStatus[] | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface copyResponsePayloadWithStatus {\n  payload?: CopyResponseItem | undefined;\n  status?: Status | undefined;\n}\n\nexport interface CopyRequestItem {\n  bucket?: string | undefined;\n  copySource?: string | undefined;\n  key?: string | undefined;\n  meta?: Meta | undefined;\n  options?: Options | undefined;\n}\n\nexport interface CopyResponseItem {\n  bucket?: string | undefined;\n  copySource?: string | undefined;\n  key?: string | undefined;\n  meta?: Meta | undefined;\n  options?: Options | undefined;\n}\n\nexport interface Options {\n  encoding?: string | undefined;\n  contentType?: string | undefined;\n  contentLanguage?: string | undefined;\n  contentDisposition?: string | undefined;\n  length?: number | undefined;\n  version?: string | undefined;\n  md5?: string | undefined;\n  tags?:\n    | Attribute[]\n    | undefined;\n  /** optional meta data ex: from and to dates */\n  data?: Any | undefined;\n}\n\nexport interface Object {\n  key?: string | undefined;\n  bucket?: string | undefined;\n  object?: Buffer | undefined;\n  meta?: Meta | undefined;\n  url?: string | undefined;\n  options?: Options | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface ObjectResponse {\n  response?: ObjectResponsePayloadWithStatus | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface ObjectResponsePayloadWithStatus {\n  payload?: ObjectResponsePayload | undefined;\n  status?: Status | undefined;\n}\n\nexport interface ObjectResponsePayload {\n  key?: string | undefined;\n  bucket?: string | undefined;\n  object?: Buffer | undefined;\n  meta?: Meta | undefined;\n  url?: string | undefined;\n  options?: Options | undefined;\n}\n\nexport interface GetRequest {\n  key?: string | undefined;\n  bucket?: string | undefined;\n  download?: boolean | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface ListResponse {\n  responses?: ObjectsDataWithPayloadStatus[] | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface ObjectsDataWithPayloadStatus {\n  payload?: ObjectData | undefined;\n  status?: Status | undefined;\n}\n\nexport interface ObjectData {\n  objectName?: string | undefined;\n  url?: string | undefined;\n  meta?: Meta | undefined;\n}\n\nexport interface DeleteRequest {\n  key?: string | undefined;\n  bucket?: string | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface PutResponse {\n  response?: PutResponseWithPayloadStatus | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface PutResponseWithPayloadStatus {\n  payload?: Response | undefined;\n  status?: Status | undefined;\n}\n\nexport interface Response {\n  url?: string | undefined;\n  bucket?: string | undefined;\n  key?: string | undefined;\n  meta?: Meta | undefined;\n  tags?:\n    | Attribute[]\n    | undefined;\n  /** file size of uploaded object */\n  length?: number | undefined;\n}\n\nexport interface ListRequest {\n  bucket?:\n    | string\n    | undefined;\n  /** Filter based on fieldName|operation, value|list */\n  filters?: FilterOp | undefined;\n  subject?: Subject | undefined;\n  maxKeys?: number | undefined;\n  prefix?: string | undefined;\n}\n\n/**\n * OstorageMessage is used for emitting\n * objectUploaded and objectDownloaded events\n */\nexport interface OstorageMessage {\n  key?: string | undefined;\n  bucket?: string | undefined;\n  metadata?: Any | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface MoveRequestList {\n  items?: MoveRequestItem[] | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface MoveRequestItem {\n  /** destination bucket name */\n  bucket?:\n    | string\n    | undefined;\n  /** source object with bucket name */\n  sourceObject?:\n    | string\n    | undefined;\n  /** destination key name */\n  key?: string | undefined;\n  meta?: Meta | undefined;\n  options?: Options | undefined;\n}\n\nexport interface MoveResponseList {\n  responses?: MoveResponsePayloadWithStatus[] | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface MoveResponsePayloadWithStatus {\n  payload?: MoveResponseItem | undefined;\n  status?: Status | undefined;\n}\n\nexport interface MoveResponseItem {\n  bucket?: string | undefined;\n  sourceObject?: string | undefined;\n  key?: string | undefined;\n  meta?: Meta | undefined;\n  options?: Options | undefined;\n}\n\nfunction createBaseCopyRequestList(): CopyRequestList {\n  return {};\n}\n\nexport const CopyRequestList: MessageFns<CopyRequestList> = {\n  encode(message: CopyRequestList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        CopyRequestItem.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CopyRequestList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCopyRequestList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = CopyRequestItem.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CopyRequestList {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => CopyRequestItem.fromJSON(e))\n        : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: CopyRequestList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => CopyRequestItem.toJSON(e));\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CopyRequestList>): CopyRequestList {\n    return CopyRequestList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CopyRequestList>): CopyRequestList {\n    const message = createBaseCopyRequestList();\n    message.items = object.items?.map((e) => CopyRequestItem.fromPartial(e)) || undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseCopyResponseList(): CopyResponseList {\n  return {};\n}\n\nexport const CopyResponseList: MessageFns<CopyResponseList> = {\n  encode(message: CopyResponseList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.responses !== undefined && message.responses.length !== 0) {\n      for (const v of message.responses) {\n        copyResponsePayloadWithStatus.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CopyResponseList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCopyResponseList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.responses === undefined) {\n            message.responses = [];\n          }\n          const el = copyResponsePayloadWithStatus.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.responses!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CopyResponseList {\n    return {\n      responses: globalThis.Array.isArray(object?.responses)\n        ? object.responses.map((e: any) => copyResponsePayloadWithStatus.fromJSON(e))\n        : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: CopyResponseList): unknown {\n    const obj: any = {};\n    if (message.responses?.length) {\n      obj.responses = message.responses.map((e) => copyResponsePayloadWithStatus.toJSON(e));\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CopyResponseList>): CopyResponseList {\n    return CopyResponseList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CopyResponseList>): CopyResponseList {\n    const message = createBaseCopyResponseList();\n    message.responses = object.responses?.map((e) => copyResponsePayloadWithStatus.fromPartial(e)) || undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBasecopyResponsePayloadWithStatus(): copyResponsePayloadWithStatus {\n  return {};\n}\n\nexport const copyResponsePayloadWithStatus: MessageFns<copyResponsePayloadWithStatus> = {\n  encode(message: copyResponsePayloadWithStatus, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      CopyResponseItem.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): copyResponsePayloadWithStatus {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasecopyResponsePayloadWithStatus();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = CopyResponseItem.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): copyResponsePayloadWithStatus {\n    return {\n      payload: isSet(object.payload) ? CopyResponseItem.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: copyResponsePayloadWithStatus): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = CopyResponseItem.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<copyResponsePayloadWithStatus>): copyResponsePayloadWithStatus {\n    return copyResponsePayloadWithStatus.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<copyResponsePayloadWithStatus>): copyResponsePayloadWithStatus {\n    const message = createBasecopyResponsePayloadWithStatus();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? CopyResponseItem.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseCopyRequestItem(): CopyRequestItem {\n  return {};\n}\n\nexport const CopyRequestItem: MessageFns<CopyRequestItem> = {\n  encode(message: CopyRequestItem, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.bucket !== undefined) {\n      writer.uint32(10).string(message.bucket);\n    }\n    if (message.copySource !== undefined) {\n      writer.uint32(18).string(message.copySource);\n    }\n    if (message.key !== undefined) {\n      writer.uint32(26).string(message.key);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(34).fork()).join();\n    }\n    if (message.options !== undefined) {\n      Options.encode(message.options, writer.uint32(42).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CopyRequestItem {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCopyRequestItem();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.bucket = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.copySource = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.key = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.options = Options.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CopyRequestItem {\n    return {\n      bucket: isSet(object.bucket) ? globalThis.String(object.bucket) : undefined,\n      copySource: isSet(object.copySource) ? globalThis.String(object.copySource) : undefined,\n      key: isSet(object.key) ? globalThis.String(object.key) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      options: isSet(object.options) ? Options.fromJSON(object.options) : undefined,\n    };\n  },\n\n  toJSON(message: CopyRequestItem): unknown {\n    const obj: any = {};\n    if (message.bucket !== undefined) {\n      obj.bucket = message.bucket;\n    }\n    if (message.copySource !== undefined) {\n      obj.copySource = message.copySource;\n    }\n    if (message.key !== undefined) {\n      obj.key = message.key;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.options !== undefined) {\n      obj.options = Options.toJSON(message.options);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CopyRequestItem>): CopyRequestItem {\n    return CopyRequestItem.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CopyRequestItem>): CopyRequestItem {\n    const message = createBaseCopyRequestItem();\n    message.bucket = object.bucket ?? undefined;\n    message.copySource = object.copySource ?? undefined;\n    message.key = object.key ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.options = (object.options !== undefined && object.options !== null)\n      ? Options.fromPartial(object.options)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseCopyResponseItem(): CopyResponseItem {\n  return {};\n}\n\nexport const CopyResponseItem: MessageFns<CopyResponseItem> = {\n  encode(message: CopyResponseItem, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.bucket !== undefined) {\n      writer.uint32(10).string(message.bucket);\n    }\n    if (message.copySource !== undefined) {\n      writer.uint32(18).string(message.copySource);\n    }\n    if (message.key !== undefined) {\n      writer.uint32(26).string(message.key);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(34).fork()).join();\n    }\n    if (message.options !== undefined) {\n      Options.encode(message.options, writer.uint32(42).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CopyResponseItem {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCopyResponseItem();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.bucket = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.copySource = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.key = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.options = Options.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CopyResponseItem {\n    return {\n      bucket: isSet(object.bucket) ? globalThis.String(object.bucket) : undefined,\n      copySource: isSet(object.copySource) ? globalThis.String(object.copySource) : undefined,\n      key: isSet(object.key) ? globalThis.String(object.key) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      options: isSet(object.options) ? Options.fromJSON(object.options) : undefined,\n    };\n  },\n\n  toJSON(message: CopyResponseItem): unknown {\n    const obj: any = {};\n    if (message.bucket !== undefined) {\n      obj.bucket = message.bucket;\n    }\n    if (message.copySource !== undefined) {\n      obj.copySource = message.copySource;\n    }\n    if (message.key !== undefined) {\n      obj.key = message.key;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.options !== undefined) {\n      obj.options = Options.toJSON(message.options);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CopyResponseItem>): CopyResponseItem {\n    return CopyResponseItem.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CopyResponseItem>): CopyResponseItem {\n    const message = createBaseCopyResponseItem();\n    message.bucket = object.bucket ?? undefined;\n    message.copySource = object.copySource ?? undefined;\n    message.key = object.key ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.options = (object.options !== undefined && object.options !== null)\n      ? Options.fromPartial(object.options)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseOptions(): Options {\n  return {};\n}\n\nexport const Options: MessageFns<Options> = {\n  encode(message: Options, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.encoding !== undefined) {\n      writer.uint32(10).string(message.encoding);\n    }\n    if (message.contentType !== undefined) {\n      writer.uint32(18).string(message.contentType);\n    }\n    if (message.contentLanguage !== undefined) {\n      writer.uint32(26).string(message.contentLanguage);\n    }\n    if (message.contentDisposition !== undefined) {\n      writer.uint32(34).string(message.contentDisposition);\n    }\n    if (message.length !== undefined) {\n      writer.uint32(40).int32(message.length);\n    }\n    if (message.version !== undefined) {\n      writer.uint32(50).string(message.version);\n    }\n    if (message.md5 !== undefined) {\n      writer.uint32(58).string(message.md5);\n    }\n    if (message.tags !== undefined && message.tags.length !== 0) {\n      for (const v of message.tags) {\n        Attribute.encode(v!, writer.uint32(66).fork()).join();\n      }\n    }\n    if (message.data !== undefined) {\n      Any.encode(message.data, writer.uint32(74).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Options {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOptions();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.encoding = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.contentType = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.contentLanguage = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.contentDisposition = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 40) {\n            break;\n          }\n\n          message.length = reader.int32();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.version = reader.string();\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.md5 = reader.string();\n          continue;\n        }\n        case 8: {\n          if (tag !== 66) {\n            break;\n          }\n\n          if (message.tags === undefined) {\n            message.tags = [];\n          }\n          const el = Attribute.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.tags!.push(el);\n          }\n          continue;\n        }\n        case 9: {\n          if (tag !== 74) {\n            break;\n          }\n\n          message.data = Any.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Options {\n    return {\n      encoding: isSet(object.encoding) ? globalThis.String(object.encoding) : undefined,\n      contentType: isSet(object.contentType) ? globalThis.String(object.contentType) : undefined,\n      contentLanguage: isSet(object.contentLanguage) ? globalThis.String(object.contentLanguage) : undefined,\n      contentDisposition: isSet(object.contentDisposition) ? globalThis.String(object.contentDisposition) : undefined,\n      length: isSet(object.length) ? globalThis.Number(object.length) : undefined,\n      version: isSet(object.version) ? globalThis.String(object.version) : undefined,\n      md5: isSet(object.md5) ? globalThis.String(object.md5) : undefined,\n      tags: globalThis.Array.isArray(object?.tags) ? object.tags.map((e: any) => Attribute.fromJSON(e)) : undefined,\n      data: isSet(object.data) ? Any.fromJSON(object.data) : undefined,\n    };\n  },\n\n  toJSON(message: Options): unknown {\n    const obj: any = {};\n    if (message.encoding !== undefined) {\n      obj.encoding = message.encoding;\n    }\n    if (message.contentType !== undefined) {\n      obj.contentType = message.contentType;\n    }\n    if (message.contentLanguage !== undefined) {\n      obj.contentLanguage = message.contentLanguage;\n    }\n    if (message.contentDisposition !== undefined) {\n      obj.contentDisposition = message.contentDisposition;\n    }\n    if (message.length !== undefined) {\n      obj.length = Math.round(message.length);\n    }\n    if (message.version !== undefined) {\n      obj.version = message.version;\n    }\n    if (message.md5 !== undefined) {\n      obj.md5 = message.md5;\n    }\n    if (message.tags?.length) {\n      obj.tags = message.tags.map((e) => Attribute.toJSON(e));\n    }\n    if (message.data !== undefined) {\n      obj.data = Any.toJSON(message.data);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Options>): Options {\n    return Options.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Options>): Options {\n    const message = createBaseOptions();\n    message.encoding = object.encoding ?? undefined;\n    message.contentType = object.contentType ?? undefined;\n    message.contentLanguage = object.contentLanguage ?? undefined;\n    message.contentDisposition = object.contentDisposition ?? undefined;\n    message.length = object.length ?? undefined;\n    message.version = object.version ?? undefined;\n    message.md5 = object.md5 ?? undefined;\n    message.tags = object.tags?.map((e) => Attribute.fromPartial(e)) || undefined;\n    message.data = (object.data !== undefined && object.data !== null) ? Any.fromPartial(object.data) : undefined;\n    return message;\n  },\n};\n\nfunction createBaseObject(): Object {\n  return {};\n}\n\nexport const Object: MessageFns<Object> = {\n  encode(message: Object, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.key !== undefined) {\n      writer.uint32(10).string(message.key);\n    }\n    if (message.bucket !== undefined) {\n      writer.uint32(18).string(message.bucket);\n    }\n    if (message.object !== undefined) {\n      writer.uint32(26).bytes(message.object);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(34).fork()).join();\n    }\n    if (message.url !== undefined) {\n      writer.uint32(42).string(message.url);\n    }\n    if (message.options !== undefined) {\n      Options.encode(message.options, writer.uint32(50).fork()).join();\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(58).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Object {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseObject();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.key = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.bucket = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.object = Buffer.from(reader.bytes());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.url = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.options = Options.decode(reader, reader.uint32());\n          continue;\n        }\n        case 7: {\n          if (tag !== 58) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Object {\n    return {\n      key: isSet(object.key) ? globalThis.String(object.key) : undefined,\n      bucket: isSet(object.bucket) ? globalThis.String(object.bucket) : undefined,\n      object: isSet(object.object) ? Buffer.from(bytesFromBase64(object.object)) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      url: isSet(object.url) ? globalThis.String(object.url) : undefined,\n      options: isSet(object.options) ? Options.fromJSON(object.options) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: Object): unknown {\n    const obj: any = {};\n    if (message.key !== undefined) {\n      obj.key = message.key;\n    }\n    if (message.bucket !== undefined) {\n      obj.bucket = message.bucket;\n    }\n    if (message.object !== undefined) {\n      obj.object = base64FromBytes(message.object);\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.url !== undefined) {\n      obj.url = message.url;\n    }\n    if (message.options !== undefined) {\n      obj.options = Options.toJSON(message.options);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Object>): Object {\n    return Object.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Object>): Object {\n    const message = createBaseObject();\n    message.key = object.key ?? undefined;\n    message.bucket = object.bucket ?? undefined;\n    message.object = object.object ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.url = object.url ?? undefined;\n    message.options = (object.options !== undefined && object.options !== null)\n      ? Options.fromPartial(object.options)\n      : undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseObjectResponse(): ObjectResponse {\n  return {};\n}\n\nexport const ObjectResponse: MessageFns<ObjectResponse> = {\n  encode(message: ObjectResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.response !== undefined) {\n      ObjectResponsePayloadWithStatus.encode(message.response, writer.uint32(10).fork()).join();\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ObjectResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseObjectResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.response = ObjectResponsePayloadWithStatus.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ObjectResponse {\n    return {\n      response: isSet(object.response) ? ObjectResponsePayloadWithStatus.fromJSON(object.response) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: ObjectResponse): unknown {\n    const obj: any = {};\n    if (message.response !== undefined) {\n      obj.response = ObjectResponsePayloadWithStatus.toJSON(message.response);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ObjectResponse>): ObjectResponse {\n    return ObjectResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ObjectResponse>): ObjectResponse {\n    const message = createBaseObjectResponse();\n    message.response = (object.response !== undefined && object.response !== null)\n      ? ObjectResponsePayloadWithStatus.fromPartial(object.response)\n      : undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseObjectResponsePayloadWithStatus(): ObjectResponsePayloadWithStatus {\n  return {};\n}\n\nexport const ObjectResponsePayloadWithStatus: MessageFns<ObjectResponsePayloadWithStatus> = {\n  encode(message: ObjectResponsePayloadWithStatus, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      ObjectResponsePayload.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ObjectResponsePayloadWithStatus {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseObjectResponsePayloadWithStatus();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = ObjectResponsePayload.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ObjectResponsePayloadWithStatus {\n    return {\n      payload: isSet(object.payload) ? ObjectResponsePayload.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: ObjectResponsePayloadWithStatus): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = ObjectResponsePayload.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ObjectResponsePayloadWithStatus>): ObjectResponsePayloadWithStatus {\n    return ObjectResponsePayloadWithStatus.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ObjectResponsePayloadWithStatus>): ObjectResponsePayloadWithStatus {\n    const message = createBaseObjectResponsePayloadWithStatus();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? ObjectResponsePayload.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseObjectResponsePayload(): ObjectResponsePayload {\n  return {};\n}\n\nexport const ObjectResponsePayload: MessageFns<ObjectResponsePayload> = {\n  encode(message: ObjectResponsePayload, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.key !== undefined) {\n      writer.uint32(10).string(message.key);\n    }\n    if (message.bucket !== undefined) {\n      writer.uint32(18).string(message.bucket);\n    }\n    if (message.object !== undefined) {\n      writer.uint32(26).bytes(message.object);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(34).fork()).join();\n    }\n    if (message.url !== undefined) {\n      writer.uint32(42).string(message.url);\n    }\n    if (message.options !== undefined) {\n      Options.encode(message.options, writer.uint32(50).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ObjectResponsePayload {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseObjectResponsePayload();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.key = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.bucket = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.object = Buffer.from(reader.bytes());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.url = reader.string();\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.options = Options.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ObjectResponsePayload {\n    return {\n      key: isSet(object.key) ? globalThis.String(object.key) : undefined,\n      bucket: isSet(object.bucket) ? globalThis.String(object.bucket) : undefined,\n      object: isSet(object.object) ? Buffer.from(bytesFromBase64(object.object)) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      url: isSet(object.url) ? globalThis.String(object.url) : undefined,\n      options: isSet(object.options) ? Options.fromJSON(object.options) : undefined,\n    };\n  },\n\n  toJSON(message: ObjectResponsePayload): unknown {\n    const obj: any = {};\n    if (message.key !== undefined) {\n      obj.key = message.key;\n    }\n    if (message.bucket !== undefined) {\n      obj.bucket = message.bucket;\n    }\n    if (message.object !== undefined) {\n      obj.object = base64FromBytes(message.object);\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.url !== undefined) {\n      obj.url = message.url;\n    }\n    if (message.options !== undefined) {\n      obj.options = Options.toJSON(message.options);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ObjectResponsePayload>): ObjectResponsePayload {\n    return ObjectResponsePayload.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ObjectResponsePayload>): ObjectResponsePayload {\n    const message = createBaseObjectResponsePayload();\n    message.key = object.key ?? undefined;\n    message.bucket = object.bucket ?? undefined;\n    message.object = object.object ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.url = object.url ?? undefined;\n    message.options = (object.options !== undefined && object.options !== null)\n      ? Options.fromPartial(object.options)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseGetRequest(): GetRequest {\n  return {};\n}\n\nexport const GetRequest: MessageFns<GetRequest> = {\n  encode(message: GetRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.key !== undefined) {\n      writer.uint32(10).string(message.key);\n    }\n    if (message.bucket !== undefined) {\n      writer.uint32(18).string(message.bucket);\n    }\n    if (message.download !== undefined) {\n      writer.uint32(24).bool(message.download);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(34).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): GetRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseGetRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.key = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.bucket = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.download = reader.bool();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): GetRequest {\n    return {\n      key: isSet(object.key) ? globalThis.String(object.key) : undefined,\n      bucket: isSet(object.bucket) ? globalThis.String(object.bucket) : undefined,\n      download: isSet(object.download) ? globalThis.Boolean(object.download) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: GetRequest): unknown {\n    const obj: any = {};\n    if (message.key !== undefined) {\n      obj.key = message.key;\n    }\n    if (message.bucket !== undefined) {\n      obj.bucket = message.bucket;\n    }\n    if (message.download !== undefined) {\n      obj.download = message.download;\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<GetRequest>): GetRequest {\n    return GetRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<GetRequest>): GetRequest {\n    const message = createBaseGetRequest();\n    message.key = object.key ?? undefined;\n    message.bucket = object.bucket ?? undefined;\n    message.download = object.download ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseListResponse(): ListResponse {\n  return {};\n}\n\nexport const ListResponse: MessageFns<ListResponse> = {\n  encode(message: ListResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.responses !== undefined && message.responses.length !== 0) {\n      for (const v of message.responses) {\n        ObjectsDataWithPayloadStatus.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ListResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseListResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.responses === undefined) {\n            message.responses = [];\n          }\n          const el = ObjectsDataWithPayloadStatus.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.responses!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ListResponse {\n    return {\n      responses: globalThis.Array.isArray(object?.responses)\n        ? object.responses.map((e: any) => ObjectsDataWithPayloadStatus.fromJSON(e))\n        : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: ListResponse): unknown {\n    const obj: any = {};\n    if (message.responses?.length) {\n      obj.responses = message.responses.map((e) => ObjectsDataWithPayloadStatus.toJSON(e));\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ListResponse>): ListResponse {\n    return ListResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ListResponse>): ListResponse {\n    const message = createBaseListResponse();\n    message.responses = object.responses?.map((e) => ObjectsDataWithPayloadStatus.fromPartial(e)) || undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseObjectsDataWithPayloadStatus(): ObjectsDataWithPayloadStatus {\n  return {};\n}\n\nexport const ObjectsDataWithPayloadStatus: MessageFns<ObjectsDataWithPayloadStatus> = {\n  encode(message: ObjectsDataWithPayloadStatus, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      ObjectData.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ObjectsDataWithPayloadStatus {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseObjectsDataWithPayloadStatus();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = ObjectData.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ObjectsDataWithPayloadStatus {\n    return {\n      payload: isSet(object.payload) ? ObjectData.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: ObjectsDataWithPayloadStatus): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = ObjectData.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ObjectsDataWithPayloadStatus>): ObjectsDataWithPayloadStatus {\n    return ObjectsDataWithPayloadStatus.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ObjectsDataWithPayloadStatus>): ObjectsDataWithPayloadStatus {\n    const message = createBaseObjectsDataWithPayloadStatus();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? ObjectData.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseObjectData(): ObjectData {\n  return {};\n}\n\nexport const ObjectData: MessageFns<ObjectData> = {\n  encode(message: ObjectData, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.objectName !== undefined) {\n      writer.uint32(10).string(message.objectName);\n    }\n    if (message.url !== undefined) {\n      writer.uint32(18).string(message.url);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ObjectData {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseObjectData();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.objectName = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.url = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ObjectData {\n    return {\n      objectName: isSet(object.objectName) ? globalThis.String(object.objectName) : undefined,\n      url: isSet(object.url) ? globalThis.String(object.url) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n    };\n  },\n\n  toJSON(message: ObjectData): unknown {\n    const obj: any = {};\n    if (message.objectName !== undefined) {\n      obj.objectName = message.objectName;\n    }\n    if (message.url !== undefined) {\n      obj.url = message.url;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ObjectData>): ObjectData {\n    return ObjectData.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ObjectData>): ObjectData {\n    const message = createBaseObjectData();\n    message.objectName = object.objectName ?? undefined;\n    message.url = object.url ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    return message;\n  },\n};\n\nfunction createBaseDeleteRequest(): DeleteRequest {\n  return {};\n}\n\nexport const DeleteRequest: MessageFns<DeleteRequest> = {\n  encode(message: DeleteRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.key !== undefined) {\n      writer.uint32(10).string(message.key);\n    }\n    if (message.bucket !== undefined) {\n      writer.uint32(18).string(message.bucket);\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): DeleteRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseDeleteRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.key = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.bucket = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): DeleteRequest {\n    return {\n      key: isSet(object.key) ? globalThis.String(object.key) : undefined,\n      bucket: isSet(object.bucket) ? globalThis.String(object.bucket) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: DeleteRequest): unknown {\n    const obj: any = {};\n    if (message.key !== undefined) {\n      obj.key = message.key;\n    }\n    if (message.bucket !== undefined) {\n      obj.bucket = message.bucket;\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<DeleteRequest>): DeleteRequest {\n    return DeleteRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<DeleteRequest>): DeleteRequest {\n    const message = createBaseDeleteRequest();\n    message.key = object.key ?? undefined;\n    message.bucket = object.bucket ?? undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBasePutResponse(): PutResponse {\n  return {};\n}\n\nexport const PutResponse: MessageFns<PutResponse> = {\n  encode(message: PutResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.response !== undefined) {\n      PutResponseWithPayloadStatus.encode(message.response, writer.uint32(10).fork()).join();\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PutResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePutResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.response = PutResponseWithPayloadStatus.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PutResponse {\n    return {\n      response: isSet(object.response) ? PutResponseWithPayloadStatus.fromJSON(object.response) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: PutResponse): unknown {\n    const obj: any = {};\n    if (message.response !== undefined) {\n      obj.response = PutResponseWithPayloadStatus.toJSON(message.response);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PutResponse>): PutResponse {\n    return PutResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PutResponse>): PutResponse {\n    const message = createBasePutResponse();\n    message.response = (object.response !== undefined && object.response !== null)\n      ? PutResponseWithPayloadStatus.fromPartial(object.response)\n      : undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBasePutResponseWithPayloadStatus(): PutResponseWithPayloadStatus {\n  return {};\n}\n\nexport const PutResponseWithPayloadStatus: MessageFns<PutResponseWithPayloadStatus> = {\n  encode(message: PutResponseWithPayloadStatus, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      Response.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PutResponseWithPayloadStatus {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePutResponseWithPayloadStatus();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = Response.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PutResponseWithPayloadStatus {\n    return {\n      payload: isSet(object.payload) ? Response.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: PutResponseWithPayloadStatus): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = Response.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PutResponseWithPayloadStatus>): PutResponseWithPayloadStatus {\n    return PutResponseWithPayloadStatus.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PutResponseWithPayloadStatus>): PutResponseWithPayloadStatus {\n    const message = createBasePutResponseWithPayloadStatus();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? Response.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseResponse(): Response {\n  return {};\n}\n\nexport const Response: MessageFns<Response> = {\n  encode(message: Response, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.url !== undefined) {\n      writer.uint32(10).string(message.url);\n    }\n    if (message.bucket !== undefined) {\n      writer.uint32(18).string(message.bucket);\n    }\n    if (message.key !== undefined) {\n      writer.uint32(26).string(message.key);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(34).fork()).join();\n    }\n    if (message.tags !== undefined && message.tags.length !== 0) {\n      for (const v of message.tags) {\n        Attribute.encode(v!, writer.uint32(42).fork()).join();\n      }\n    }\n    if (message.length !== undefined) {\n      writer.uint32(48).int32(message.length);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): Response {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.url = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.bucket = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.key = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          if (message.tags === undefined) {\n            message.tags = [];\n          }\n          const el = Attribute.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.tags!.push(el);\n          }\n          continue;\n        }\n        case 6: {\n          if (tag !== 48) {\n            break;\n          }\n\n          message.length = reader.int32();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): Response {\n    return {\n      url: isSet(object.url) ? globalThis.String(object.url) : undefined,\n      bucket: isSet(object.bucket) ? globalThis.String(object.bucket) : undefined,\n      key: isSet(object.key) ? globalThis.String(object.key) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      tags: globalThis.Array.isArray(object?.tags) ? object.tags.map((e: any) => Attribute.fromJSON(e)) : undefined,\n      length: isSet(object.length) ? globalThis.Number(object.length) : undefined,\n    };\n  },\n\n  toJSON(message: Response): unknown {\n    const obj: any = {};\n    if (message.url !== undefined) {\n      obj.url = message.url;\n    }\n    if (message.bucket !== undefined) {\n      obj.bucket = message.bucket;\n    }\n    if (message.key !== undefined) {\n      obj.key = message.key;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.tags?.length) {\n      obj.tags = message.tags.map((e) => Attribute.toJSON(e));\n    }\n    if (message.length !== undefined) {\n      obj.length = Math.round(message.length);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<Response>): Response {\n    return Response.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<Response>): Response {\n    const message = createBaseResponse();\n    message.url = object.url ?? undefined;\n    message.bucket = object.bucket ?? undefined;\n    message.key = object.key ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.tags = object.tags?.map((e) => Attribute.fromPartial(e)) || undefined;\n    message.length = object.length ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseListRequest(): ListRequest {\n  return {};\n}\n\nexport const ListRequest: MessageFns<ListRequest> = {\n  encode(message: ListRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.bucket !== undefined) {\n      writer.uint32(10).string(message.bucket);\n    }\n    if (message.filters !== undefined) {\n      FilterOp.encode(message.filters, writer.uint32(18).fork()).join();\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    if (message.maxKeys !== undefined) {\n      writer.uint32(32).int32(message.maxKeys);\n    }\n    if (message.prefix !== undefined) {\n      writer.uint32(42).string(message.prefix);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ListRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseListRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.bucket = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.filters = FilterOp.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 32) {\n            break;\n          }\n\n          message.maxKeys = reader.int32();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.prefix = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ListRequest {\n    return {\n      bucket: isSet(object.bucket) ? globalThis.String(object.bucket) : undefined,\n      filters: isSet(object.filters) ? FilterOp.fromJSON(object.filters) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n      maxKeys: isSet(object.maxKeys) ? globalThis.Number(object.maxKeys) : undefined,\n      prefix: isSet(object.prefix) ? globalThis.String(object.prefix) : undefined,\n    };\n  },\n\n  toJSON(message: ListRequest): unknown {\n    const obj: any = {};\n    if (message.bucket !== undefined) {\n      obj.bucket = message.bucket;\n    }\n    if (message.filters !== undefined) {\n      obj.filters = FilterOp.toJSON(message.filters);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    if (message.maxKeys !== undefined) {\n      obj.maxKeys = Math.round(message.maxKeys);\n    }\n    if (message.prefix !== undefined) {\n      obj.prefix = message.prefix;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ListRequest>): ListRequest {\n    return ListRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ListRequest>): ListRequest {\n    const message = createBaseListRequest();\n    message.bucket = object.bucket ?? undefined;\n    message.filters = (object.filters !== undefined && object.filters !== null)\n      ? FilterOp.fromPartial(object.filters)\n      : undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    message.maxKeys = object.maxKeys ?? undefined;\n    message.prefix = object.prefix ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseOstorageMessage(): OstorageMessage {\n  return {};\n}\n\nexport const OstorageMessage: MessageFns<OstorageMessage> = {\n  encode(message: OstorageMessage, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.key !== undefined) {\n      writer.uint32(10).string(message.key);\n    }\n    if (message.bucket !== undefined) {\n      writer.uint32(18).string(message.bucket);\n    }\n    if (message.metadata !== undefined) {\n      Any.encode(message.metadata, writer.uint32(26).fork()).join();\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(34).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OstorageMessage {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOstorageMessage();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.key = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.bucket = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.metadata = Any.decode(reader, reader.uint32());\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OstorageMessage {\n    return {\n      key: isSet(object.key) ? globalThis.String(object.key) : undefined,\n      bucket: isSet(object.bucket) ? globalThis.String(object.bucket) : undefined,\n      metadata: isSet(object.metadata) ? Any.fromJSON(object.metadata) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: OstorageMessage): unknown {\n    const obj: any = {};\n    if (message.key !== undefined) {\n      obj.key = message.key;\n    }\n    if (message.bucket !== undefined) {\n      obj.bucket = message.bucket;\n    }\n    if (message.metadata !== undefined) {\n      obj.metadata = Any.toJSON(message.metadata);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OstorageMessage>): OstorageMessage {\n    return OstorageMessage.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OstorageMessage>): OstorageMessage {\n    const message = createBaseOstorageMessage();\n    message.key = object.key ?? undefined;\n    message.bucket = object.bucket ?? undefined;\n    message.metadata = (object.metadata !== undefined && object.metadata !== null)\n      ? Any.fromPartial(object.metadata)\n      : undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseMoveRequestList(): MoveRequestList {\n  return {};\n}\n\nexport const MoveRequestList: MessageFns<MoveRequestList> = {\n  encode(message: MoveRequestList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.items !== undefined && message.items.length !== 0) {\n      for (const v of message.items) {\n        MoveRequestItem.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): MoveRequestList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseMoveRequestList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.items === undefined) {\n            message.items = [];\n          }\n          const el = MoveRequestItem.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.items!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): MoveRequestList {\n    return {\n      items: globalThis.Array.isArray(object?.items)\n        ? object.items.map((e: any) => MoveRequestItem.fromJSON(e))\n        : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: MoveRequestList): unknown {\n    const obj: any = {};\n    if (message.items?.length) {\n      obj.items = message.items.map((e) => MoveRequestItem.toJSON(e));\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<MoveRequestList>): MoveRequestList {\n    return MoveRequestList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<MoveRequestList>): MoveRequestList {\n    const message = createBaseMoveRequestList();\n    message.items = object.items?.map((e) => MoveRequestItem.fromPartial(e)) || undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseMoveRequestItem(): MoveRequestItem {\n  return {};\n}\n\nexport const MoveRequestItem: MessageFns<MoveRequestItem> = {\n  encode(message: MoveRequestItem, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.bucket !== undefined) {\n      writer.uint32(10).string(message.bucket);\n    }\n    if (message.sourceObject !== undefined) {\n      writer.uint32(18).string(message.sourceObject);\n    }\n    if (message.key !== undefined) {\n      writer.uint32(26).string(message.key);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(34).fork()).join();\n    }\n    if (message.options !== undefined) {\n      Options.encode(message.options, writer.uint32(42).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): MoveRequestItem {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseMoveRequestItem();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.bucket = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.sourceObject = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.key = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.options = Options.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): MoveRequestItem {\n    return {\n      bucket: isSet(object.bucket) ? globalThis.String(object.bucket) : undefined,\n      sourceObject: isSet(object.sourceObject) ? globalThis.String(object.sourceObject) : undefined,\n      key: isSet(object.key) ? globalThis.String(object.key) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      options: isSet(object.options) ? Options.fromJSON(object.options) : undefined,\n    };\n  },\n\n  toJSON(message: MoveRequestItem): unknown {\n    const obj: any = {};\n    if (message.bucket !== undefined) {\n      obj.bucket = message.bucket;\n    }\n    if (message.sourceObject !== undefined) {\n      obj.sourceObject = message.sourceObject;\n    }\n    if (message.key !== undefined) {\n      obj.key = message.key;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.options !== undefined) {\n      obj.options = Options.toJSON(message.options);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<MoveRequestItem>): MoveRequestItem {\n    return MoveRequestItem.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<MoveRequestItem>): MoveRequestItem {\n    const message = createBaseMoveRequestItem();\n    message.bucket = object.bucket ?? undefined;\n    message.sourceObject = object.sourceObject ?? undefined;\n    message.key = object.key ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.options = (object.options !== undefined && object.options !== null)\n      ? Options.fromPartial(object.options)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseMoveResponseList(): MoveResponseList {\n  return {};\n}\n\nexport const MoveResponseList: MessageFns<MoveResponseList> = {\n  encode(message: MoveResponseList, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.responses !== undefined && message.responses.length !== 0) {\n      for (const v of message.responses) {\n        MoveResponsePayloadWithStatus.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): MoveResponseList {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseMoveResponseList();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.responses === undefined) {\n            message.responses = [];\n          }\n          const el = MoveResponsePayloadWithStatus.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.responses!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): MoveResponseList {\n    return {\n      responses: globalThis.Array.isArray(object?.responses)\n        ? object.responses.map((e: any) => MoveResponsePayloadWithStatus.fromJSON(e))\n        : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: MoveResponseList): unknown {\n    const obj: any = {};\n    if (message.responses?.length) {\n      obj.responses = message.responses.map((e) => MoveResponsePayloadWithStatus.toJSON(e));\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<MoveResponseList>): MoveResponseList {\n    return MoveResponseList.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<MoveResponseList>): MoveResponseList {\n    const message = createBaseMoveResponseList();\n    message.responses = object.responses?.map((e) => MoveResponsePayloadWithStatus.fromPartial(e)) || undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseMoveResponsePayloadWithStatus(): MoveResponsePayloadWithStatus {\n  return {};\n}\n\nexport const MoveResponsePayloadWithStatus: MessageFns<MoveResponsePayloadWithStatus> = {\n  encode(message: MoveResponsePayloadWithStatus, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      MoveResponseItem.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): MoveResponsePayloadWithStatus {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseMoveResponsePayloadWithStatus();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = MoveResponseItem.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): MoveResponsePayloadWithStatus {\n    return {\n      payload: isSet(object.payload) ? MoveResponseItem.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: MoveResponsePayloadWithStatus): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = MoveResponseItem.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<MoveResponsePayloadWithStatus>): MoveResponsePayloadWithStatus {\n    return MoveResponsePayloadWithStatus.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<MoveResponsePayloadWithStatus>): MoveResponsePayloadWithStatus {\n    const message = createBaseMoveResponsePayloadWithStatus();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? MoveResponseItem.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseMoveResponseItem(): MoveResponseItem {\n  return {};\n}\n\nexport const MoveResponseItem: MessageFns<MoveResponseItem> = {\n  encode(message: MoveResponseItem, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.bucket !== undefined) {\n      writer.uint32(10).string(message.bucket);\n    }\n    if (message.sourceObject !== undefined) {\n      writer.uint32(18).string(message.sourceObject);\n    }\n    if (message.key !== undefined) {\n      writer.uint32(26).string(message.key);\n    }\n    if (message.meta !== undefined) {\n      Meta.encode(message.meta, writer.uint32(34).fork()).join();\n    }\n    if (message.options !== undefined) {\n      Options.encode(message.options, writer.uint32(42).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): MoveResponseItem {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseMoveResponseItem();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.bucket = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.sourceObject = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.key = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.meta = Meta.decode(reader, reader.uint32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.options = Options.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): MoveResponseItem {\n    return {\n      bucket: isSet(object.bucket) ? globalThis.String(object.bucket) : undefined,\n      sourceObject: isSet(object.sourceObject) ? globalThis.String(object.sourceObject) : undefined,\n      key: isSet(object.key) ? globalThis.String(object.key) : undefined,\n      meta: isSet(object.meta) ? Meta.fromJSON(object.meta) : undefined,\n      options: isSet(object.options) ? Options.fromJSON(object.options) : undefined,\n    };\n  },\n\n  toJSON(message: MoveResponseItem): unknown {\n    const obj: any = {};\n    if (message.bucket !== undefined) {\n      obj.bucket = message.bucket;\n    }\n    if (message.sourceObject !== undefined) {\n      obj.sourceObject = message.sourceObject;\n    }\n    if (message.key !== undefined) {\n      obj.key = message.key;\n    }\n    if (message.meta !== undefined) {\n      obj.meta = Meta.toJSON(message.meta);\n    }\n    if (message.options !== undefined) {\n      obj.options = Options.toJSON(message.options);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<MoveResponseItem>): MoveResponseItem {\n    return MoveResponseItem.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<MoveResponseItem>): MoveResponseItem {\n    const message = createBaseMoveResponseItem();\n    message.bucket = object.bucket ?? undefined;\n    message.sourceObject = object.sourceObject ?? undefined;\n    message.key = object.key ?? undefined;\n    message.meta = (object.meta !== undefined && object.meta !== null) ? Meta.fromPartial(object.meta) : undefined;\n    message.options = (object.options !== undefined && object.options !== null)\n      ? Options.fromPartial(object.options)\n      : undefined;\n    return message;\n  },\n};\n\nexport type ObjectServiceDefinition = typeof ObjectServiceDefinition;\nexport const ObjectServiceDefinition = {\n  name: \"ObjectService\",\n  fullName: \"io.restorecommerce.ostorage.ObjectService\",\n  methods: {\n    get: {\n      name: \"Get\",\n      requestType: GetRequest,\n      requestStream: false,\n      responseType: ObjectResponse,\n      responseStream: true,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    put: {\n      name: \"Put\",\n      requestType: Object,\n      requestStream: true,\n      responseType: PutResponse,\n      responseStream: false,\n      options: {},\n    },\n    delete: {\n      name: \"Delete\",\n      requestType: DeleteRequest,\n      requestStream: false,\n      responseType: DeleteResponse,\n      responseStream: false,\n      options: {},\n    },\n    list: {\n      name: \"List\",\n      requestType: ListRequest,\n      requestStream: false,\n      responseType: ListResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    copy: {\n      name: \"Copy\",\n      requestType: CopyRequestList,\n      requestStream: false,\n      responseType: CopyResponseList,\n      responseStream: false,\n      options: {},\n    },\n    move: {\n      name: \"Move\",\n      requestType: MoveRequestList,\n      requestStream: false,\n      responseType: MoveResponseList,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface ObjectServiceImplementation<CallContextExt = {}> {\n  get(\n    request: GetRequest,\n    context: CallContext & CallContextExt,\n  ): ServerStreamingMethodResult<DeepPartial<ObjectResponse>>;\n  put(request: AsyncIterable<Object>, context: CallContext & CallContextExt): Promise<DeepPartial<PutResponse>>;\n  delete(request: DeleteRequest, context: CallContext & CallContextExt): Promise<DeepPartial<DeleteResponse>>;\n  list(request: ListRequest, context: CallContext & CallContextExt): Promise<DeepPartial<ListResponse>>;\n  copy(request: CopyRequestList, context: CallContext & CallContextExt): Promise<DeepPartial<CopyResponseList>>;\n  move(request: MoveRequestList, context: CallContext & CallContextExt): Promise<DeepPartial<MoveResponseList>>;\n}\n\nexport interface ObjectServiceClient<CallOptionsExt = {}> {\n  get(request: DeepPartial<GetRequest>, options?: CallOptions & CallOptionsExt): AsyncIterable<ObjectResponse>;\n  put(request: AsyncIterable<DeepPartial<Object>>, options?: CallOptions & CallOptionsExt): Promise<PutResponse>;\n  delete(request: DeepPartial<DeleteRequest>, options?: CallOptions & CallOptionsExt): Promise<DeleteResponse>;\n  list(request: DeepPartial<ListRequest>, options?: CallOptions & CallOptionsExt): Promise<ListResponse>;\n  copy(request: DeepPartial<CopyRequestList>, options?: CallOptions & CallOptionsExt): Promise<CopyResponseList>;\n  move(request: DeepPartial<MoveRequestList>, options?: CallOptions & CallOptionsExt): Promise<MoveResponseList>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/ostorage.proto\",\n    \"package\": \"io.restorecommerce.ostorage\",\n    \"dependency\": [\n      \"io/restorecommerce/filter.proto\",\n      \"google/protobuf/any.proto\",\n      \"io/restorecommerce/meta.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/attribute.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/resource_base.proto\",\n      \"io/restorecommerce/options.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"CopyRequestList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.ostorage.CopyRequestItem\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"CopyResponseList\",\n      \"field\": [{\n        \"name\": \"responses\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.ostorage.copyResponsePayloadWithStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"responses\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_operation_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"copyResponsePayloadWithStatus\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.ostorage.CopyResponseItem\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"CopyRequestItem\",\n      \"field\": [{\n        \"name\": \"bucket\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"bucket\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"copySource\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"copySource\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"key\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"key\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"options\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.ostorage.Options\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"options\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_bucket\", \"options\": undefined },\n        { \"name\": \"_copySource\", \"options\": undefined },\n        { \"name\": \"_key\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_options\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"CopyResponseItem\",\n      \"field\": [{\n        \"name\": \"bucket\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"bucket\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"copySource\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"copySource\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"key\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"key\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"options\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.ostorage.Options\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"options\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_bucket\", \"options\": undefined },\n        { \"name\": \"_copySource\", \"options\": undefined },\n        { \"name\": \"_key\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_options\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Options\",\n      \"field\": [{\n        \"name\": \"encoding\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"encoding\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"content_type\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"contentType\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"content_language\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"contentLanguage\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"content_disposition\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"contentDisposition\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"length\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 5,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"length\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"version\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"version\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"md5\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"md5\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"tags\",\n        \"number\": 8,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.attribute.Attribute\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"tags\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"data\",\n        \"number\": 9,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Any\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 7,\n        \"jsonName\": \"data\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_encoding\", \"options\": undefined },\n        { \"name\": \"_content_type\", \"options\": undefined },\n        { \"name\": \"_content_language\", \"options\": undefined },\n        { \"name\": \"_content_disposition\", \"options\": undefined },\n        { \"name\": \"_length\", \"options\": undefined },\n        { \"name\": \"_version\", \"options\": undefined },\n        { \"name\": \"_md5\", \"options\": undefined },\n        { \"name\": \"_data\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Object\",\n      \"field\": [{\n        \"name\": \"key\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"key\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"bucket\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"bucket\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"object\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 12,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"object\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"url\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"url\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"options\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.ostorage.Options\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"options\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_key\", \"options\": undefined },\n        { \"name\": \"_bucket\", \"options\": undefined },\n        { \"name\": \"_object\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_url\", \"options\": undefined },\n        { \"name\": \"_options\", \"options\": undefined },\n        { \"name\": \"_subject\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ObjectResponse\",\n      \"field\": [{\n        \"name\": \"response\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.ostorage.ObjectResponsePayloadWithStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"response\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_response\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ObjectResponsePayloadWithStatus\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.ostorage.ObjectResponsePayload\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ObjectResponsePayload\",\n      \"field\": [{\n        \"name\": \"key\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"key\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"bucket\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"bucket\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"object\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 12,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"object\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"url\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"url\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"options\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.ostorage.Options\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"options\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_key\", \"options\": undefined },\n        { \"name\": \"_bucket\", \"options\": undefined },\n        { \"name\": \"_object\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_url\", \"options\": undefined },\n        { \"name\": \"_options\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"GetRequest\",\n      \"field\": [{\n        \"name\": \"key\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"key\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"bucket\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"bucket\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"download\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"download\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_key\", \"options\": undefined }, { \"name\": \"_bucket\", \"options\": undefined }, {\n        \"name\": \"_download\",\n        \"options\": undefined,\n      }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ListResponse\",\n      \"field\": [{\n        \"name\": \"responses\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.ostorage.ObjectsDataWithPayloadStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"responses\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_operation_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ObjectsDataWithPayloadStatus\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.ostorage.ObjectData\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ObjectData\",\n      \"field\": [{\n        \"name\": \"object_name\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"objectName\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"url\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"url\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_object_name\", \"options\": undefined }, { \"name\": \"_url\", \"options\": undefined }, {\n        \"name\": \"_meta\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"DeleteRequest\",\n      \"field\": [{\n        \"name\": \"key\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"key\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"bucket\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"bucket\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_key\", \"options\": undefined }, { \"name\": \"_bucket\", \"options\": undefined }, {\n        \"name\": \"_subject\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"PutResponse\",\n      \"field\": [{\n        \"name\": \"response\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.ostorage.PutResponseWithPayloadStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"response\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_response\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"PutResponseWithPayloadStatus\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.ostorage.Response\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"Response\",\n      \"field\": [{\n        \"name\": \"url\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"url\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"bucket\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"bucket\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"key\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"key\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"tags\",\n        \"number\": 5,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.attribute.Attribute\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"tags\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"length\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 5,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"length\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_url\", \"options\": undefined },\n        { \"name\": \"_bucket\", \"options\": undefined },\n        { \"name\": \"_key\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_length\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ListRequest\",\n      \"field\": [{\n        \"name\": \"bucket\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"bucket\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"filters\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.filter.FilterOp\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"filters\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"max_keys\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 5,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"maxKeys\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"prefix\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"prefix\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_bucket\", \"options\": undefined },\n        { \"name\": \"_filters\", \"options\": undefined },\n        { \"name\": \"_subject\", \"options\": undefined },\n        { \"name\": \"_max_keys\", \"options\": undefined },\n        { \"name\": \"_prefix\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"OstorageMessage\",\n      \"field\": [{\n        \"name\": \"key\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"key\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"bucket\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"bucket\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"metadata\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".google.protobuf.Any\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"metadata\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_key\", \"options\": undefined }, { \"name\": \"_bucket\", \"options\": undefined }, {\n        \"name\": \"_metadata\",\n        \"options\": undefined,\n      }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"MoveRequestList\",\n      \"field\": [{\n        \"name\": \"items\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.ostorage.MoveRequestItem\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"items\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"MoveRequestItem\",\n      \"field\": [{\n        \"name\": \"bucket\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"bucket\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"sourceObject\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"sourceObject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"key\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"key\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"options\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.ostorage.Options\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"options\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_bucket\", \"options\": undefined },\n        { \"name\": \"_sourceObject\", \"options\": undefined },\n        { \"name\": \"_key\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_options\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"MoveResponseList\",\n      \"field\": [{\n        \"name\": \"responses\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.ostorage.MoveResponsePayloadWithStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"responses\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_operation_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"MoveResponsePayloadWithStatus\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.ostorage.MoveResponseItem\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"MoveResponseItem\",\n      \"field\": [{\n        \"name\": \"bucket\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"bucket\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"sourceObject\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"sourceObject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"key\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"key\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.meta.Meta\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"meta\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"options\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.ostorage.Options\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"options\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_bucket\", \"options\": undefined },\n        { \"name\": \"_sourceObject\", \"options\": undefined },\n        { \"name\": \"_key\", \"options\": undefined },\n        { \"name\": \"_meta\", \"options\": undefined },\n        { \"name\": \"_options\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [{\n      \"name\": \"ObjectService\",\n      \"method\": [{\n        \"name\": \"Get\",\n        \"inputType\": \".io.restorecommerce.ostorage.GetRequest\",\n        \"outputType\": \".io.restorecommerce.ostorage.ObjectResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": true,\n      }, {\n        \"name\": \"Put\",\n        \"inputType\": \".io.restorecommerce.ostorage.Object\",\n        \"outputType\": \".io.restorecommerce.ostorage.PutResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": true,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Delete\",\n        \"inputType\": \".io.restorecommerce.ostorage.DeleteRequest\",\n        \"outputType\": \".io.restorecommerce.resourcebase.DeleteResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"List\",\n        \"inputType\": \".io.restorecommerce.ostorage.ListRequest\",\n        \"outputType\": \".io.restorecommerce.ostorage.ListResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Copy\",\n        \"inputType\": \".io.restorecommerce.ostorage.CopyRequestList\",\n        \"outputType\": \".io.restorecommerce.ostorage.CopyResponseList\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Move\",\n        \"inputType\": \".io.restorecommerce.ostorage.MoveRequestList\",\n        \"outputType\": \".io.restorecommerce.ostorage.MoveResponseList\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": {\n      \"location\": [{\n        \"path\": [4, 5, 2, 8],\n        \"span\": [66, 2, 40],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" optional meta data ex: from and to dates\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 17, 2, 5],\n        \"span\": [143, 2, 28],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" file size of uploaded object\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 18, 2, 1],\n        \"span\": [148, 2, 58],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" Filter based on fieldName|operation, value|list\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 19],\n        \"span\": [156, 0, 161, 1],\n        \"leadingComments\": \" OstorageMessage is used for emitting\\n objectUploaded and objectDownloaded events\\n\",\n        \"trailingComments\": \"\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 21, 2, 0],\n        \"span\": [169, 2, 29],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" destination bucket name\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 21, 2, 1],\n        \"span\": [170, 2, 35],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" source object with bucket name\\n\",\n        \"leadingDetachedComments\": [],\n      }, {\n        \"path\": [4, 21, 2, 2],\n        \"span\": [171, 2, 26],\n        \"leadingComments\": \"\",\n        \"trailingComments\": \" destination key name\\n\",\n        \"leadingDetachedComments\": [],\n      }],\n    },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.ostorage.CopyRequestList\": CopyRequestList,\n    \".io.restorecommerce.ostorage.CopyResponseList\": CopyResponseList,\n    \".io.restorecommerce.ostorage.copyResponsePayloadWithStatus\": copyResponsePayloadWithStatus,\n    \".io.restorecommerce.ostorage.CopyRequestItem\": CopyRequestItem,\n    \".io.restorecommerce.ostorage.CopyResponseItem\": CopyResponseItem,\n    \".io.restorecommerce.ostorage.Options\": Options,\n    \".io.restorecommerce.ostorage.Object\": Object,\n    \".io.restorecommerce.ostorage.ObjectResponse\": ObjectResponse,\n    \".io.restorecommerce.ostorage.ObjectResponsePayloadWithStatus\": ObjectResponsePayloadWithStatus,\n    \".io.restorecommerce.ostorage.ObjectResponsePayload\": ObjectResponsePayload,\n    \".io.restorecommerce.ostorage.GetRequest\": GetRequest,\n    \".io.restorecommerce.ostorage.ListResponse\": ListResponse,\n    \".io.restorecommerce.ostorage.ObjectsDataWithPayloadStatus\": ObjectsDataWithPayloadStatus,\n    \".io.restorecommerce.ostorage.ObjectData\": ObjectData,\n    \".io.restorecommerce.ostorage.DeleteRequest\": DeleteRequest,\n    \".io.restorecommerce.ostorage.PutResponse\": PutResponse,\n    \".io.restorecommerce.ostorage.PutResponseWithPayloadStatus\": PutResponseWithPayloadStatus,\n    \".io.restorecommerce.ostorage.Response\": Response,\n    \".io.restorecommerce.ostorage.ListRequest\": ListRequest,\n    \".io.restorecommerce.ostorage.OstorageMessage\": OstorageMessage,\n    \".io.restorecommerce.ostorage.MoveRequestList\": MoveRequestList,\n    \".io.restorecommerce.ostorage.MoveRequestItem\": MoveRequestItem,\n    \".io.restorecommerce.ostorage.MoveResponseList\": MoveResponseList,\n    \".io.restorecommerce.ostorage.MoveResponsePayloadWithStatus\": MoveResponsePayloadWithStatus,\n    \".io.restorecommerce.ostorage.MoveResponseItem\": MoveResponseItem,\n  },\n  dependencies: [\n    protoMetadata1,\n    protoMetadata2,\n    protoMetadata3,\n    protoMetadata4,\n    protoMetadata5,\n    protoMetadata6,\n    protoMetadata7,\n    protoMetadata8,\n  ],\n  options: {\n    services: { \"ObjectService\": { methods: { \"Get\": { \"is_query\": true }, \"List\": { \"is_query\": true } } } },\n  },\n};\n\nfunction bytesFromBase64(b64: string): Uint8Array {\n  return Uint8Array.from(globalThis.Buffer.from(b64, \"base64\"));\n}\n\nfunction base64FromBytes(arr: Uint8Array): string {\n  return globalThis.Buffer.from(arr).toString(\"base64\");\n}\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport type ServerStreamingMethodResult<Response> = { [Symbol.asyncIterator](): AsyncIterator<Response, void> };\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "/*!\n * copy-to - index.js\n * Copyright(c) 2014 dead_horse <dead_horse@qq.com>\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * slice() reference.\n */\n\nvar slice = Array.prototype.slice;\n\n/**\n * Expose copy\n *\n * ```\n * copy({foo: 'nar', hello: 'copy'}).to({hello: 'world'});\n * copy({foo: 'nar', hello: 'copy'}).toCover({hello: 'world'});\n * ```\n *\n * @param {Object} src\n * @return {Copy}\n */\n\nmodule.exports = Copy;\n\n\n/**\n * Copy\n * @param {Object} src\n * @param {Boolean} withAccess\n */\n\nfunction Copy(src, withAccess) {\n  if (!(this instanceof Copy)) return new Copy(src, withAccess);\n  this.src = src;\n  this._withAccess = withAccess;\n}\n\n/**\n * copy properties include getter and setter\n * @param {[type]} val [description]\n * @return {[type]} [description]\n */\n\nCopy.prototype.withAccess = function (w) {\n  this._withAccess = w !== false;\n  return this;\n};\n\n/**\n * pick keys in src\n *\n * @api: public\n */\n\nCopy.prototype.pick = function(keys) {\n  if (!Array.isArray(keys)) {\n    keys = slice.call(arguments);\n  }\n  if (keys.length) {\n    this.keys = keys;\n  }\n  return this;\n};\n\n/**\n * copy src to target,\n * do not cover any property target has\n * @param {Object} to\n *\n * @api: public\n */\n\nCopy.prototype.to = function(to) {\n  to = to || {};\n\n  if (!this.src) return to;\n  var keys = this.keys || Object.keys(this.src);\n\n  if (!this._withAccess) {\n    for (var i = 0; i < keys.length; i++) {\n      key = keys[i];\n      if (to[key] !== undefined) continue;\n      to[key] = this.src[key];\n    }\n    return to;\n  }\n\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (!notDefined(to, key)) continue;\n    var getter = this.src.__lookupGetter__(key);\n    var setter = this.src.__lookupSetter__(key);\n    if (getter) to.__defineGetter__(key, getter);\n    if (setter) to.__defineSetter__(key, setter);\n\n    if (!getter && !setter) {\n      to[key] = this.src[key];\n    }\n  }\n  return to;\n};\n\n/**\n * copy src to target,\n * override any property target has\n * @param {Object} to\n *\n * @api: public\n */\n\nCopy.prototype.toCover = function(to) {\n  var keys = this.keys || Object.keys(this.src);\n\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    delete to[key];\n    var getter = this.src.__lookupGetter__(key);\n    var setter = this.src.__lookupSetter__(key);\n    if (getter) to.__defineGetter__(key, getter);\n    if (setter) to.__defineSetter__(key, setter);\n\n    if (!getter && !setter) {\n      to[key] = this.src[key];\n    }\n  }\n};\n\nCopy.prototype.override = Copy.prototype.toCover;\n\n/**\n * append another object to src\n * @param {Obj} obj\n * @return {Copy}\n */\n\nCopy.prototype.and = function (obj) {\n  var src = {};\n  this.to(src);\n  this.src = obj;\n  this.to(src);\n  this.src = src;\n\n  return this;\n};\n\n/**\n * check obj[key] if not defiend\n * @param {Object} obj\n * @param {String} key\n * @return {Boolean}\n */\n\nfunction notDefined(obj, key) {\n  return obj[key] === undefined\n    && obj.__lookupGetter__(key) === undefined\n    && obj.__lookupSetter__(key) === undefined;\n}\n", "'use strict';\n\nconst parse = require('co-body');\nconst copy = require('copy-to');\nconst typeis = require('type-is');\n\n/**\n * @param [Object] opts\n *   - {String} jsonLimit default '1mb'\n *   - {String} formLimit default '56kb'\n *   - {string} encoding default 'utf-8'\n *   - {Object} extendTypes\n */\n\nmodule.exports = function(opts) {\n  opts = opts || {};\n  const {detectJSON} = opts;\n  const {onerror} = opts;\n\n  const enableTypes = opts.enableTypes || ['json', 'form'];\n  const enableForm = checkEnable(enableTypes, 'form');\n  const enableJson = checkEnable(enableTypes, 'json');\n  const enableText = checkEnable(enableTypes, 'text');\n  const enableXml = checkEnable(enableTypes, 'xml');\n\n  opts.detectJSON = undefined;\n  opts.onerror = undefined; // eslint-disable-line unicorn/prefer-add-event-listener\n\n  // force co-body return raw body\n  opts.returnRawBody = true;\n\n  // default json types\n  const jsonTypes = [\n    'application/json',\n    'application/json-patch+json',\n    'application/vnd.api+json',\n    'application/csp-report',\n    'application/scim+json'\n  ];\n\n  // default form types\n  const formTypes = ['application/x-www-form-urlencoded'];\n\n  // default text types\n  const textTypes = ['text/plain'];\n\n  // default xml types\n  const xmlTypes = ['text/xml', 'application/xml'];\n\n  const jsonOpts = formatOptions(opts, 'json');\n  const formOpts = formatOptions(opts, 'form');\n  const textOpts = formatOptions(opts, 'text');\n  const xmlOpts = formatOptions(opts, 'xml');\n\n  const extendTypes = opts.extendTypes || {};\n\n  extendType(jsonTypes, extendTypes.json);\n  extendType(formTypes, extendTypes.form);\n  extendType(textTypes, extendTypes.text);\n  extendType(xmlTypes, extendTypes.xml);\n\n  // eslint-disable-next-line func-names\n  return async function bodyParser(ctx, next) {\n    if (ctx.request.body !== undefined || ctx.disableBodyParser)\n      return await next(); // eslint-disable-line no-return-await\n    try {\n      const res = await parseBody(ctx);\n      ctx.request.body = 'parsed' in res ? res.parsed : {};\n      if (ctx.request.rawBody === undefined) ctx.request.rawBody = res.raw;\n    } catch (err) {\n      if (onerror) {\n        onerror(err, ctx);\n      } else {\n        throw err;\n      }\n    }\n\n    await next();\n  };\n\n  async function parseBody(ctx) {\n    if (\n      enableJson &&\n      ((detectJSON && detectJSON(ctx)) ||\n        isTypes(ctx.request.get('content-type'), jsonTypes))\n    ) {\n      return await parse.json(ctx, jsonOpts); // eslint-disable-line no-return-await\n    }\n\n    if (enableForm && ctx.request.is(formTypes)) {\n      return await parse.form(ctx, formOpts); // eslint-disable-line no-return-await\n    }\n\n    if (enableText && ctx.request.is(textTypes)) {\n      return (await parse.text(ctx, textOpts)) || '';\n    }\n\n    if (enableXml && ctx.request.is(xmlTypes)) {\n      return (await parse.text(ctx, xmlOpts)) || '';\n    }\n\n    return {};\n  }\n};\n\nfunction formatOptions(opts, type) {\n  const res = {};\n  copy(opts).to(res);\n  res.limit = opts[type + 'Limit'];\n  return res;\n}\n\nfunction extendType(original, extend) {\n  if (extend) {\n    if (!Array.isArray(extend)) {\n      extend = [extend];\n    }\n\n    extend.forEach(function(extend) {\n      original.push(extend);\n    });\n  }\n}\n\nfunction checkEnable(types, type) {\n  return types.includes(type);\n}\n\nfunction isTypes(contentTypeValue, types) {\n  if (typeof contentTypeValue === 'string') {\n    // trim extra semicolon\n    contentTypeValue = contentTypeValue.replace(/;$/, '');\n  }\n\n  return typeis.is(contentTypeValue, types);\n}\n", "// Code generated by protoc-gen-ts_proto. DO NOT EDIT.\n// versions:\n//   protoc-gen-ts_proto  v2.2.5\n//   protoc               v3.20.3\n// source: io/restorecommerce/pdf_rendering.proto\n\n/* eslint-disable */\nimport { BinaryReader, BinaryWriter } from \"@bufbuild/protobuf/wire\";\nimport type { CallContext, CallOptions } from \"nice-grpc-common\";\nimport { FileDescriptorProto as FileDescriptorProto1 } from \"ts-proto-descriptors\";\nimport { protoMetadata as protoMetadata1 } from \"../../google/protobuf/any\";\nimport { Empty, protoMetadata as protoMetadata2 } from \"../../google/protobuf/empty\";\nimport { protoMetadata as protoMetadata3, Subject } from \"./auth\";\nimport { protoMetadata as protoMetadata5 } from \"./options\";\nimport { OperationStatus, protoMetadata as protoMetadata4, Status } from \"./status\";\n\nexport const protobufPackage = \"io.restorecommerce.pdf_rendering\";\n\nexport interface RenderRequest {\n  individual?: IndividualRequest | undefined;\n  combined?: CombinedRequest | undefined;\n  subject?: Subject | undefined;\n}\n\nexport interface IndividualRequest {\n  data?: IndividualRequest_IndividualRequestData[] | undefined;\n}\n\nexport interface IndividualRequest_IndividualRequestData {\n  data?: RenderData | undefined;\n  output?: OutputOptions | undefined;\n}\n\nexport interface CombinedRequest {\n  data?: RenderData[] | undefined;\n  output?: OutputOptions | undefined;\n}\n\nexport interface RenderData {\n  source?: RenderSource | undefined;\n  options?: RenderOptions | undefined;\n}\n\nexport interface OutputOptions {\n  generatePdfa?: boolean | undefined;\n  metaData?: MetaData | undefined;\n  uploadOptions?: UploadOptions | undefined;\n}\n\nexport interface RenderOptions {\n  waitAfterLoadTime?: number | undefined;\n  puppeteerOptions?: PuppeteerOptions | undefined;\n}\n\nexport interface RenderSource {\n  url?: string | undefined;\n  html?: string | undefined;\n}\n\nexport interface UploadOptions {\n  bucket?: string | undefined;\n  key?: string | undefined;\n  contentDisposition?: string | undefined;\n}\n\nexport interface MetaData {\n  title?: string | undefined;\n  creator?: string | undefined;\n  producer?: string | undefined;\n}\n\nexport interface RenderingResponse {\n  individual?: IndividualResponse | undefined;\n  combined?: ResponsePayloadWithStatus | undefined;\n  operationStatus?: OperationStatus | undefined;\n}\n\nexport interface IndividualResponse {\n  RenderingResponse?: ResponsePayloadWithStatus[] | undefined;\n}\n\nexport interface ResponsePayloadWithStatus {\n  payload?: ResponsePayload | undefined;\n  status?: Status | undefined;\n}\n\nexport interface ResponsePayload {\n  pdf?: ResponsePdf | undefined;\n  uploadResult?: ResponseS3Upload | undefined;\n}\n\nexport interface ResponsePdf {\n  data?: Buffer | undefined;\n}\n\nexport interface ResponseS3Upload {\n  url?: string | undefined;\n  length?: number | undefined;\n}\n\nexport interface InfoResponse {\n  chrome?: InfoResponse_ChromeVersion | undefined;\n}\n\nexport interface InfoResponse_ChromeVersion {\n  protocolVersion?: string | undefined;\n  product?: string | undefined;\n  revision?: string | undefined;\n  userAgent?: string | undefined;\n  jsVersion?: string | undefined;\n}\n\nexport interface PuppeteerOptions {\n  pdfOptions?: PdfOptions | undefined;\n}\n\nexport interface PdfOptions {\n  landscape?: boolean | undefined;\n  displayHeaderFooter?: boolean | undefined;\n  printBackground?: boolean | undefined;\n  format?: PdfOptions_PaperFormat | undefined;\n  scale?: number | undefined;\n  paperWidth?: number | undefined;\n  paperHeight?: number | undefined;\n  marginTop?: number | undefined;\n  marginBottom?: number | undefined;\n  marginLeft?: number | undefined;\n  marginRight?: number | undefined;\n  pageRanges?: string | undefined;\n  ignoreInvalidPageRanges?: boolean | undefined;\n  headerTemplate?: string | undefined;\n  footerTemplate?: string | undefined;\n  preferCssPageSize?: boolean | undefined;\n}\n\nexport enum PdfOptions_PaperFormat {\n  A0 = \"A0\",\n  A1 = \"A1\",\n  A2 = \"A2\",\n  A3 = \"A3\",\n  A4 = \"A4\",\n  A5 = \"A5\",\n  A6 = \"A6\",\n  A7 = \"A7\",\n  LETTER = \"LETTER\",\n  LEGAL = \"LEGAL\",\n  TABLOID = \"TABLOID\",\n  UNRECOGNIZED = \"UNRECOGNIZED\",\n}\n\nexport function pdfOptions_PaperFormatFromJSON(object: any): PdfOptions_PaperFormat {\n  switch (object) {\n    case 0:\n    case \"A0\":\n      return PdfOptions_PaperFormat.A0;\n    case 1:\n    case \"A1\":\n      return PdfOptions_PaperFormat.A1;\n    case 2:\n    case \"A2\":\n      return PdfOptions_PaperFormat.A2;\n    case 3:\n    case \"A3\":\n      return PdfOptions_PaperFormat.A3;\n    case 4:\n    case \"A4\":\n      return PdfOptions_PaperFormat.A4;\n    case 5:\n    case \"A5\":\n      return PdfOptions_PaperFormat.A5;\n    case 6:\n    case \"A6\":\n      return PdfOptions_PaperFormat.A6;\n    case 7:\n    case \"A7\":\n      return PdfOptions_PaperFormat.A7;\n    case 8:\n    case \"LETTER\":\n      return PdfOptions_PaperFormat.LETTER;\n    case 9:\n    case \"LEGAL\":\n      return PdfOptions_PaperFormat.LEGAL;\n    case 10:\n    case \"TABLOID\":\n      return PdfOptions_PaperFormat.TABLOID;\n    case -1:\n    case \"UNRECOGNIZED\":\n    default:\n      return PdfOptions_PaperFormat.UNRECOGNIZED;\n  }\n}\n\nexport function pdfOptions_PaperFormatToJSON(object: PdfOptions_PaperFormat): string {\n  switch (object) {\n    case PdfOptions_PaperFormat.A0:\n      return \"A0\";\n    case PdfOptions_PaperFormat.A1:\n      return \"A1\";\n    case PdfOptions_PaperFormat.A2:\n      return \"A2\";\n    case PdfOptions_PaperFormat.A3:\n      return \"A3\";\n    case PdfOptions_PaperFormat.A4:\n      return \"A4\";\n    case PdfOptions_PaperFormat.A5:\n      return \"A5\";\n    case PdfOptions_PaperFormat.A6:\n      return \"A6\";\n    case PdfOptions_PaperFormat.A7:\n      return \"A7\";\n    case PdfOptions_PaperFormat.LETTER:\n      return \"LETTER\";\n    case PdfOptions_PaperFormat.LEGAL:\n      return \"LEGAL\";\n    case PdfOptions_PaperFormat.TABLOID:\n      return \"TABLOID\";\n    case PdfOptions_PaperFormat.UNRECOGNIZED:\n    default:\n      return \"UNRECOGNIZED\";\n  }\n}\n\nexport function pdfOptions_PaperFormatToNumber(object: PdfOptions_PaperFormat): number {\n  switch (object) {\n    case PdfOptions_PaperFormat.A0:\n      return 0;\n    case PdfOptions_PaperFormat.A1:\n      return 1;\n    case PdfOptions_PaperFormat.A2:\n      return 2;\n    case PdfOptions_PaperFormat.A3:\n      return 3;\n    case PdfOptions_PaperFormat.A4:\n      return 4;\n    case PdfOptions_PaperFormat.A5:\n      return 5;\n    case PdfOptions_PaperFormat.A6:\n      return 6;\n    case PdfOptions_PaperFormat.A7:\n      return 7;\n    case PdfOptions_PaperFormat.LETTER:\n      return 8;\n    case PdfOptions_PaperFormat.LEGAL:\n      return 9;\n    case PdfOptions_PaperFormat.TABLOID:\n      return 10;\n    case PdfOptions_PaperFormat.UNRECOGNIZED:\n    default:\n      return -1;\n  }\n}\n\nfunction createBaseRenderRequest(): RenderRequest {\n  return {};\n}\n\nexport const RenderRequest: MessageFns<RenderRequest> = {\n  encode(message: RenderRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.individual !== undefined) {\n      IndividualRequest.encode(message.individual, writer.uint32(10).fork()).join();\n    }\n    if (message.combined !== undefined) {\n      CombinedRequest.encode(message.combined, writer.uint32(18).fork()).join();\n    }\n    if (message.subject !== undefined) {\n      Subject.encode(message.subject, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): RenderRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseRenderRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.individual = IndividualRequest.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.combined = CombinedRequest.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.subject = Subject.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): RenderRequest {\n    return {\n      individual: isSet(object.individual) ? IndividualRequest.fromJSON(object.individual) : undefined,\n      combined: isSet(object.combined) ? CombinedRequest.fromJSON(object.combined) : undefined,\n      subject: isSet(object.subject) ? Subject.fromJSON(object.subject) : undefined,\n    };\n  },\n\n  toJSON(message: RenderRequest): unknown {\n    const obj: any = {};\n    if (message.individual !== undefined) {\n      obj.individual = IndividualRequest.toJSON(message.individual);\n    }\n    if (message.combined !== undefined) {\n      obj.combined = CombinedRequest.toJSON(message.combined);\n    }\n    if (message.subject !== undefined) {\n      obj.subject = Subject.toJSON(message.subject);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<RenderRequest>): RenderRequest {\n    return RenderRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<RenderRequest>): RenderRequest {\n    const message = createBaseRenderRequest();\n    message.individual = (object.individual !== undefined && object.individual !== null)\n      ? IndividualRequest.fromPartial(object.individual)\n      : undefined;\n    message.combined = (object.combined !== undefined && object.combined !== null)\n      ? CombinedRequest.fromPartial(object.combined)\n      : undefined;\n    message.subject = (object.subject !== undefined && object.subject !== null)\n      ? Subject.fromPartial(object.subject)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseIndividualRequest(): IndividualRequest {\n  return {};\n}\n\nexport const IndividualRequest: MessageFns<IndividualRequest> = {\n  encode(message: IndividualRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.data !== undefined && message.data.length !== 0) {\n      for (const v of message.data) {\n        IndividualRequest_IndividualRequestData.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): IndividualRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseIndividualRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.data === undefined) {\n            message.data = [];\n          }\n          const el = IndividualRequest_IndividualRequestData.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.data!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): IndividualRequest {\n    return {\n      data: globalThis.Array.isArray(object?.data)\n        ? object.data.map((e: any) => IndividualRequest_IndividualRequestData.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: IndividualRequest): unknown {\n    const obj: any = {};\n    if (message.data?.length) {\n      obj.data = message.data.map((e) => IndividualRequest_IndividualRequestData.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<IndividualRequest>): IndividualRequest {\n    return IndividualRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<IndividualRequest>): IndividualRequest {\n    const message = createBaseIndividualRequest();\n    message.data = object.data?.map((e) => IndividualRequest_IndividualRequestData.fromPartial(e)) || undefined;\n    return message;\n  },\n};\n\nfunction createBaseIndividualRequest_IndividualRequestData(): IndividualRequest_IndividualRequestData {\n  return {};\n}\n\nexport const IndividualRequest_IndividualRequestData: MessageFns<IndividualRequest_IndividualRequestData> = {\n  encode(message: IndividualRequest_IndividualRequestData, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.data !== undefined) {\n      RenderData.encode(message.data, writer.uint32(10).fork()).join();\n    }\n    if (message.output !== undefined) {\n      OutputOptions.encode(message.output, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): IndividualRequest_IndividualRequestData {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseIndividualRequest_IndividualRequestData();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.data = RenderData.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.output = OutputOptions.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): IndividualRequest_IndividualRequestData {\n    return {\n      data: isSet(object.data) ? RenderData.fromJSON(object.data) : undefined,\n      output: isSet(object.output) ? OutputOptions.fromJSON(object.output) : undefined,\n    };\n  },\n\n  toJSON(message: IndividualRequest_IndividualRequestData): unknown {\n    const obj: any = {};\n    if (message.data !== undefined) {\n      obj.data = RenderData.toJSON(message.data);\n    }\n    if (message.output !== undefined) {\n      obj.output = OutputOptions.toJSON(message.output);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<IndividualRequest_IndividualRequestData>): IndividualRequest_IndividualRequestData {\n    return IndividualRequest_IndividualRequestData.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<IndividualRequest_IndividualRequestData>): IndividualRequest_IndividualRequestData {\n    const message = createBaseIndividualRequest_IndividualRequestData();\n    message.data = (object.data !== undefined && object.data !== null)\n      ? RenderData.fromPartial(object.data)\n      : undefined;\n    message.output = (object.output !== undefined && object.output !== null)\n      ? OutputOptions.fromPartial(object.output)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseCombinedRequest(): CombinedRequest {\n  return {};\n}\n\nexport const CombinedRequest: MessageFns<CombinedRequest> = {\n  encode(message: CombinedRequest, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.data !== undefined && message.data.length !== 0) {\n      for (const v of message.data) {\n        RenderData.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    if (message.output !== undefined) {\n      OutputOptions.encode(message.output, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): CombinedRequest {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseCombinedRequest();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.data === undefined) {\n            message.data = [];\n          }\n          const el = RenderData.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.data!.push(el);\n          }\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.output = OutputOptions.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): CombinedRequest {\n    return {\n      data: globalThis.Array.isArray(object?.data) ? object.data.map((e: any) => RenderData.fromJSON(e)) : undefined,\n      output: isSet(object.output) ? OutputOptions.fromJSON(object.output) : undefined,\n    };\n  },\n\n  toJSON(message: CombinedRequest): unknown {\n    const obj: any = {};\n    if (message.data?.length) {\n      obj.data = message.data.map((e) => RenderData.toJSON(e));\n    }\n    if (message.output !== undefined) {\n      obj.output = OutputOptions.toJSON(message.output);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<CombinedRequest>): CombinedRequest {\n    return CombinedRequest.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<CombinedRequest>): CombinedRequest {\n    const message = createBaseCombinedRequest();\n    message.data = object.data?.map((e) => RenderData.fromPartial(e)) || undefined;\n    message.output = (object.output !== undefined && object.output !== null)\n      ? OutputOptions.fromPartial(object.output)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseRenderData(): RenderData {\n  return {};\n}\n\nexport const RenderData: MessageFns<RenderData> = {\n  encode(message: RenderData, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.source !== undefined) {\n      RenderSource.encode(message.source, writer.uint32(10).fork()).join();\n    }\n    if (message.options !== undefined) {\n      RenderOptions.encode(message.options, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): RenderData {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseRenderData();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.source = RenderSource.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.options = RenderOptions.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): RenderData {\n    return {\n      source: isSet(object.source) ? RenderSource.fromJSON(object.source) : undefined,\n      options: isSet(object.options) ? RenderOptions.fromJSON(object.options) : undefined,\n    };\n  },\n\n  toJSON(message: RenderData): unknown {\n    const obj: any = {};\n    if (message.source !== undefined) {\n      obj.source = RenderSource.toJSON(message.source);\n    }\n    if (message.options !== undefined) {\n      obj.options = RenderOptions.toJSON(message.options);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<RenderData>): RenderData {\n    return RenderData.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<RenderData>): RenderData {\n    const message = createBaseRenderData();\n    message.source = (object.source !== undefined && object.source !== null)\n      ? RenderSource.fromPartial(object.source)\n      : undefined;\n    message.options = (object.options !== undefined && object.options !== null)\n      ? RenderOptions.fromPartial(object.options)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseOutputOptions(): OutputOptions {\n  return {};\n}\n\nexport const OutputOptions: MessageFns<OutputOptions> = {\n  encode(message: OutputOptions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.generatePdfa !== undefined) {\n      writer.uint32(8).bool(message.generatePdfa);\n    }\n    if (message.metaData !== undefined) {\n      MetaData.encode(message.metaData, writer.uint32(18).fork()).join();\n    }\n    if (message.uploadOptions !== undefined) {\n      UploadOptions.encode(message.uploadOptions, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): OutputOptions {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseOutputOptions();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.generatePdfa = reader.bool();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.metaData = MetaData.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.uploadOptions = UploadOptions.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): OutputOptions {\n    return {\n      generatePdfa: isSet(object.generatePdfa) ? globalThis.Boolean(object.generatePdfa) : undefined,\n      metaData: isSet(object.metaData) ? MetaData.fromJSON(object.metaData) : undefined,\n      uploadOptions: isSet(object.uploadOptions) ? UploadOptions.fromJSON(object.uploadOptions) : undefined,\n    };\n  },\n\n  toJSON(message: OutputOptions): unknown {\n    const obj: any = {};\n    if (message.generatePdfa !== undefined) {\n      obj.generatePdfa = message.generatePdfa;\n    }\n    if (message.metaData !== undefined) {\n      obj.metaData = MetaData.toJSON(message.metaData);\n    }\n    if (message.uploadOptions !== undefined) {\n      obj.uploadOptions = UploadOptions.toJSON(message.uploadOptions);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<OutputOptions>): OutputOptions {\n    return OutputOptions.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<OutputOptions>): OutputOptions {\n    const message = createBaseOutputOptions();\n    message.generatePdfa = object.generatePdfa ?? undefined;\n    message.metaData = (object.metaData !== undefined && object.metaData !== null)\n      ? MetaData.fromPartial(object.metaData)\n      : undefined;\n    message.uploadOptions = (object.uploadOptions !== undefined && object.uploadOptions !== null)\n      ? UploadOptions.fromPartial(object.uploadOptions)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseRenderOptions(): RenderOptions {\n  return {};\n}\n\nexport const RenderOptions: MessageFns<RenderOptions> = {\n  encode(message: RenderOptions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.waitAfterLoadTime !== undefined) {\n      writer.uint32(40).int64(message.waitAfterLoadTime);\n    }\n    if (message.puppeteerOptions !== undefined) {\n      PuppeteerOptions.encode(message.puppeteerOptions, writer.uint32(50).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): RenderOptions {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseRenderOptions();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 5: {\n          if (tag !== 40) {\n            break;\n          }\n\n          message.waitAfterLoadTime = longToNumber(reader.int64());\n          continue;\n        }\n        case 6: {\n          if (tag !== 50) {\n            break;\n          }\n\n          message.puppeteerOptions = PuppeteerOptions.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): RenderOptions {\n    return {\n      waitAfterLoadTime: isSet(object.waitAfterLoadTime) ? globalThis.Number(object.waitAfterLoadTime) : undefined,\n      puppeteerOptions: isSet(object.puppeteerOptions) ? PuppeteerOptions.fromJSON(object.puppeteerOptions) : undefined,\n    };\n  },\n\n  toJSON(message: RenderOptions): unknown {\n    const obj: any = {};\n    if (message.waitAfterLoadTime !== undefined) {\n      obj.waitAfterLoadTime = Math.round(message.waitAfterLoadTime);\n    }\n    if (message.puppeteerOptions !== undefined) {\n      obj.puppeteerOptions = PuppeteerOptions.toJSON(message.puppeteerOptions);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<RenderOptions>): RenderOptions {\n    return RenderOptions.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<RenderOptions>): RenderOptions {\n    const message = createBaseRenderOptions();\n    message.waitAfterLoadTime = object.waitAfterLoadTime ?? undefined;\n    message.puppeteerOptions = (object.puppeteerOptions !== undefined && object.puppeteerOptions !== null)\n      ? PuppeteerOptions.fromPartial(object.puppeteerOptions)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseRenderSource(): RenderSource {\n  return {};\n}\n\nexport const RenderSource: MessageFns<RenderSource> = {\n  encode(message: RenderSource, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.url !== undefined) {\n      writer.uint32(10).string(message.url);\n    }\n    if (message.html !== undefined) {\n      writer.uint32(18).string(message.html);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): RenderSource {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseRenderSource();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.url = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.html = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): RenderSource {\n    return {\n      url: isSet(object.url) ? globalThis.String(object.url) : undefined,\n      html: isSet(object.html) ? globalThis.String(object.html) : undefined,\n    };\n  },\n\n  toJSON(message: RenderSource): unknown {\n    const obj: any = {};\n    if (message.url !== undefined) {\n      obj.url = message.url;\n    }\n    if (message.html !== undefined) {\n      obj.html = message.html;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<RenderSource>): RenderSource {\n    return RenderSource.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<RenderSource>): RenderSource {\n    const message = createBaseRenderSource();\n    message.url = object.url ?? undefined;\n    message.html = object.html ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseUploadOptions(): UploadOptions {\n  return {};\n}\n\nexport const UploadOptions: MessageFns<UploadOptions> = {\n  encode(message: UploadOptions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.bucket !== undefined) {\n      writer.uint32(10).string(message.bucket);\n    }\n    if (message.key !== undefined) {\n      writer.uint32(18).string(message.key);\n    }\n    if (message.contentDisposition !== undefined) {\n      writer.uint32(26).string(message.contentDisposition);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): UploadOptions {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseUploadOptions();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.bucket = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.key = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.contentDisposition = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): UploadOptions {\n    return {\n      bucket: isSet(object.bucket) ? globalThis.String(object.bucket) : undefined,\n      key: isSet(object.key) ? globalThis.String(object.key) : undefined,\n      contentDisposition: isSet(object.contentDisposition) ? globalThis.String(object.contentDisposition) : undefined,\n    };\n  },\n\n  toJSON(message: UploadOptions): unknown {\n    const obj: any = {};\n    if (message.bucket !== undefined) {\n      obj.bucket = message.bucket;\n    }\n    if (message.key !== undefined) {\n      obj.key = message.key;\n    }\n    if (message.contentDisposition !== undefined) {\n      obj.contentDisposition = message.contentDisposition;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<UploadOptions>): UploadOptions {\n    return UploadOptions.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<UploadOptions>): UploadOptions {\n    const message = createBaseUploadOptions();\n    message.bucket = object.bucket ?? undefined;\n    message.key = object.key ?? undefined;\n    message.contentDisposition = object.contentDisposition ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseMetaData(): MetaData {\n  return {};\n}\n\nexport const MetaData: MessageFns<MetaData> = {\n  encode(message: MetaData, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.title !== undefined) {\n      writer.uint32(10).string(message.title);\n    }\n    if (message.creator !== undefined) {\n      writer.uint32(18).string(message.creator);\n    }\n    if (message.producer !== undefined) {\n      writer.uint32(26).string(message.producer);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): MetaData {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseMetaData();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.title = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.creator = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.producer = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): MetaData {\n    return {\n      title: isSet(object.title) ? globalThis.String(object.title) : undefined,\n      creator: isSet(object.creator) ? globalThis.String(object.creator) : undefined,\n      producer: isSet(object.producer) ? globalThis.String(object.producer) : undefined,\n    };\n  },\n\n  toJSON(message: MetaData): unknown {\n    const obj: any = {};\n    if (message.title !== undefined) {\n      obj.title = message.title;\n    }\n    if (message.creator !== undefined) {\n      obj.creator = message.creator;\n    }\n    if (message.producer !== undefined) {\n      obj.producer = message.producer;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<MetaData>): MetaData {\n    return MetaData.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<MetaData>): MetaData {\n    const message = createBaseMetaData();\n    message.title = object.title ?? undefined;\n    message.creator = object.creator ?? undefined;\n    message.producer = object.producer ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseRenderingResponse(): RenderingResponse {\n  return {};\n}\n\nexport const RenderingResponse: MessageFns<RenderingResponse> = {\n  encode(message: RenderingResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.individual !== undefined) {\n      IndividualResponse.encode(message.individual, writer.uint32(10).fork()).join();\n    }\n    if (message.combined !== undefined) {\n      ResponsePayloadWithStatus.encode(message.combined, writer.uint32(18).fork()).join();\n    }\n    if (message.operationStatus !== undefined) {\n      OperationStatus.encode(message.operationStatus, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): RenderingResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseRenderingResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.individual = IndividualResponse.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.combined = ResponsePayloadWithStatus.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.operationStatus = OperationStatus.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): RenderingResponse {\n    return {\n      individual: isSet(object.individual) ? IndividualResponse.fromJSON(object.individual) : undefined,\n      combined: isSet(object.combined) ? ResponsePayloadWithStatus.fromJSON(object.combined) : undefined,\n      operationStatus: isSet(object.operationStatus) ? OperationStatus.fromJSON(object.operationStatus) : undefined,\n    };\n  },\n\n  toJSON(message: RenderingResponse): unknown {\n    const obj: any = {};\n    if (message.individual !== undefined) {\n      obj.individual = IndividualResponse.toJSON(message.individual);\n    }\n    if (message.combined !== undefined) {\n      obj.combined = ResponsePayloadWithStatus.toJSON(message.combined);\n    }\n    if (message.operationStatus !== undefined) {\n      obj.operationStatus = OperationStatus.toJSON(message.operationStatus);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<RenderingResponse>): RenderingResponse {\n    return RenderingResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<RenderingResponse>): RenderingResponse {\n    const message = createBaseRenderingResponse();\n    message.individual = (object.individual !== undefined && object.individual !== null)\n      ? IndividualResponse.fromPartial(object.individual)\n      : undefined;\n    message.combined = (object.combined !== undefined && object.combined !== null)\n      ? ResponsePayloadWithStatus.fromPartial(object.combined)\n      : undefined;\n    message.operationStatus = (object.operationStatus !== undefined && object.operationStatus !== null)\n      ? OperationStatus.fromPartial(object.operationStatus)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseIndividualResponse(): IndividualResponse {\n  return {};\n}\n\nexport const IndividualResponse: MessageFns<IndividualResponse> = {\n  encode(message: IndividualResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.RenderingResponse !== undefined && message.RenderingResponse.length !== 0) {\n      for (const v of message.RenderingResponse) {\n        ResponsePayloadWithStatus.encode(v!, writer.uint32(10).fork()).join();\n      }\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): IndividualResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseIndividualResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          if (message.RenderingResponse === undefined) {\n            message.RenderingResponse = [];\n          }\n          const el = ResponsePayloadWithStatus.decode(reader, reader.uint32());\n          if (el !== undefined) {\n            message.RenderingResponse!.push(el);\n          }\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): IndividualResponse {\n    return {\n      RenderingResponse: globalThis.Array.isArray(object?.RenderingResponse)\n        ? object.RenderingResponse.map((e: any) => ResponsePayloadWithStatus.fromJSON(e))\n        : undefined,\n    };\n  },\n\n  toJSON(message: IndividualResponse): unknown {\n    const obj: any = {};\n    if (message.RenderingResponse?.length) {\n      obj.RenderingResponse = message.RenderingResponse.map((e) => ResponsePayloadWithStatus.toJSON(e));\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<IndividualResponse>): IndividualResponse {\n    return IndividualResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<IndividualResponse>): IndividualResponse {\n    const message = createBaseIndividualResponse();\n    message.RenderingResponse = object.RenderingResponse?.map((e) => ResponsePayloadWithStatus.fromPartial(e)) ||\n      undefined;\n    return message;\n  },\n};\n\nfunction createBaseResponsePayloadWithStatus(): ResponsePayloadWithStatus {\n  return {};\n}\n\nexport const ResponsePayloadWithStatus: MessageFns<ResponsePayloadWithStatus> = {\n  encode(message: ResponsePayloadWithStatus, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.payload !== undefined) {\n      ResponsePayload.encode(message.payload, writer.uint32(10).fork()).join();\n    }\n    if (message.status !== undefined) {\n      Status.encode(message.status, writer.uint32(26).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ResponsePayloadWithStatus {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseResponsePayloadWithStatus();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.payload = ResponsePayload.decode(reader, reader.uint32());\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.status = Status.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ResponsePayloadWithStatus {\n    return {\n      payload: isSet(object.payload) ? ResponsePayload.fromJSON(object.payload) : undefined,\n      status: isSet(object.status) ? Status.fromJSON(object.status) : undefined,\n    };\n  },\n\n  toJSON(message: ResponsePayloadWithStatus): unknown {\n    const obj: any = {};\n    if (message.payload !== undefined) {\n      obj.payload = ResponsePayload.toJSON(message.payload);\n    }\n    if (message.status !== undefined) {\n      obj.status = Status.toJSON(message.status);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ResponsePayloadWithStatus>): ResponsePayloadWithStatus {\n    return ResponsePayloadWithStatus.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ResponsePayloadWithStatus>): ResponsePayloadWithStatus {\n    const message = createBaseResponsePayloadWithStatus();\n    message.payload = (object.payload !== undefined && object.payload !== null)\n      ? ResponsePayload.fromPartial(object.payload)\n      : undefined;\n    message.status = (object.status !== undefined && object.status !== null)\n      ? Status.fromPartial(object.status)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseResponsePayload(): ResponsePayload {\n  return {};\n}\n\nexport const ResponsePayload: MessageFns<ResponsePayload> = {\n  encode(message: ResponsePayload, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.pdf !== undefined) {\n      ResponsePdf.encode(message.pdf, writer.uint32(10).fork()).join();\n    }\n    if (message.uploadResult !== undefined) {\n      ResponseS3Upload.encode(message.uploadResult, writer.uint32(18).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ResponsePayload {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseResponsePayload();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.pdf = ResponsePdf.decode(reader, reader.uint32());\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.uploadResult = ResponseS3Upload.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ResponsePayload {\n    return {\n      pdf: isSet(object.pdf) ? ResponsePdf.fromJSON(object.pdf) : undefined,\n      uploadResult: isSet(object.uploadResult) ? ResponseS3Upload.fromJSON(object.uploadResult) : undefined,\n    };\n  },\n\n  toJSON(message: ResponsePayload): unknown {\n    const obj: any = {};\n    if (message.pdf !== undefined) {\n      obj.pdf = ResponsePdf.toJSON(message.pdf);\n    }\n    if (message.uploadResult !== undefined) {\n      obj.uploadResult = ResponseS3Upload.toJSON(message.uploadResult);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ResponsePayload>): ResponsePayload {\n    return ResponsePayload.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ResponsePayload>): ResponsePayload {\n    const message = createBaseResponsePayload();\n    message.pdf = (object.pdf !== undefined && object.pdf !== null) ? ResponsePdf.fromPartial(object.pdf) : undefined;\n    message.uploadResult = (object.uploadResult !== undefined && object.uploadResult !== null)\n      ? ResponseS3Upload.fromPartial(object.uploadResult)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseResponsePdf(): ResponsePdf {\n  return {};\n}\n\nexport const ResponsePdf: MessageFns<ResponsePdf> = {\n  encode(message: ResponsePdf, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.data !== undefined && message.data.length !== 0) {\n      writer.uint32(10).bytes(message.data);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ResponsePdf {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseResponsePdf();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.data = Buffer.from(reader.bytes());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ResponsePdf {\n    return { data: isSet(object.data) ? Buffer.from(bytesFromBase64(object.data)) : undefined };\n  },\n\n  toJSON(message: ResponsePdf): unknown {\n    const obj: any = {};\n    if (message.data !== undefined && message.data.length !== 0) {\n      obj.data = base64FromBytes(message.data);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ResponsePdf>): ResponsePdf {\n    return ResponsePdf.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ResponsePdf>): ResponsePdf {\n    const message = createBaseResponsePdf();\n    message.data = object.data ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseResponseS3Upload(): ResponseS3Upload {\n  return {};\n}\n\nexport const ResponseS3Upload: MessageFns<ResponseS3Upload> = {\n  encode(message: ResponseS3Upload, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.url !== undefined && message.url !== \"\") {\n      writer.uint32(10).string(message.url);\n    }\n    if (message.length !== undefined && message.length !== 0) {\n      writer.uint32(16).int32(message.length);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): ResponseS3Upload {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseResponseS3Upload();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.url = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.length = reader.int32();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): ResponseS3Upload {\n    return {\n      url: isSet(object.url) ? globalThis.String(object.url) : undefined,\n      length: isSet(object.length) ? globalThis.Number(object.length) : undefined,\n    };\n  },\n\n  toJSON(message: ResponseS3Upload): unknown {\n    const obj: any = {};\n    if (message.url !== undefined && message.url !== \"\") {\n      obj.url = message.url;\n    }\n    if (message.length !== undefined && message.length !== 0) {\n      obj.length = Math.round(message.length);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<ResponseS3Upload>): ResponseS3Upload {\n    return ResponseS3Upload.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<ResponseS3Upload>): ResponseS3Upload {\n    const message = createBaseResponseS3Upload();\n    message.url = object.url ?? undefined;\n    message.length = object.length ?? undefined;\n    return message;\n  },\n};\n\nfunction createBaseInfoResponse(): InfoResponse {\n  return {};\n}\n\nexport const InfoResponse: MessageFns<InfoResponse> = {\n  encode(message: InfoResponse, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.chrome !== undefined) {\n      InfoResponse_ChromeVersion.encode(message.chrome, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): InfoResponse {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseInfoResponse();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.chrome = InfoResponse_ChromeVersion.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): InfoResponse {\n    return { chrome: isSet(object.chrome) ? InfoResponse_ChromeVersion.fromJSON(object.chrome) : undefined };\n  },\n\n  toJSON(message: InfoResponse): unknown {\n    const obj: any = {};\n    if (message.chrome !== undefined) {\n      obj.chrome = InfoResponse_ChromeVersion.toJSON(message.chrome);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<InfoResponse>): InfoResponse {\n    return InfoResponse.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<InfoResponse>): InfoResponse {\n    const message = createBaseInfoResponse();\n    message.chrome = (object.chrome !== undefined && object.chrome !== null)\n      ? InfoResponse_ChromeVersion.fromPartial(object.chrome)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBaseInfoResponse_ChromeVersion(): InfoResponse_ChromeVersion {\n  return {};\n}\n\nexport const InfoResponse_ChromeVersion: MessageFns<InfoResponse_ChromeVersion> = {\n  encode(message: InfoResponse_ChromeVersion, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.protocolVersion !== undefined && message.protocolVersion !== \"\") {\n      writer.uint32(10).string(message.protocolVersion);\n    }\n    if (message.product !== undefined && message.product !== \"\") {\n      writer.uint32(18).string(message.product);\n    }\n    if (message.revision !== undefined && message.revision !== \"\") {\n      writer.uint32(26).string(message.revision);\n    }\n    if (message.userAgent !== undefined && message.userAgent !== \"\") {\n      writer.uint32(34).string(message.userAgent);\n    }\n    if (message.jsVersion !== undefined && message.jsVersion !== \"\") {\n      writer.uint32(42).string(message.jsVersion);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): InfoResponse_ChromeVersion {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBaseInfoResponse_ChromeVersion();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.protocolVersion = reader.string();\n          continue;\n        }\n        case 2: {\n          if (tag !== 18) {\n            break;\n          }\n\n          message.product = reader.string();\n          continue;\n        }\n        case 3: {\n          if (tag !== 26) {\n            break;\n          }\n\n          message.revision = reader.string();\n          continue;\n        }\n        case 4: {\n          if (tag !== 34) {\n            break;\n          }\n\n          message.userAgent = reader.string();\n          continue;\n        }\n        case 5: {\n          if (tag !== 42) {\n            break;\n          }\n\n          message.jsVersion = reader.string();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): InfoResponse_ChromeVersion {\n    return {\n      protocolVersion: isSet(object.protocolVersion) ? globalThis.String(object.protocolVersion) : undefined,\n      product: isSet(object.product) ? globalThis.String(object.product) : undefined,\n      revision: isSet(object.revision) ? globalThis.String(object.revision) : undefined,\n      userAgent: isSet(object.userAgent) ? globalThis.String(object.userAgent) : undefined,\n      jsVersion: isSet(object.jsVersion) ? globalThis.String(object.jsVersion) : undefined,\n    };\n  },\n\n  toJSON(message: InfoResponse_ChromeVersion): unknown {\n    const obj: any = {};\n    if (message.protocolVersion !== undefined && message.protocolVersion !== \"\") {\n      obj.protocolVersion = message.protocolVersion;\n    }\n    if (message.product !== undefined && message.product !== \"\") {\n      obj.product = message.product;\n    }\n    if (message.revision !== undefined && message.revision !== \"\") {\n      obj.revision = message.revision;\n    }\n    if (message.userAgent !== undefined && message.userAgent !== \"\") {\n      obj.userAgent = message.userAgent;\n    }\n    if (message.jsVersion !== undefined && message.jsVersion !== \"\") {\n      obj.jsVersion = message.jsVersion;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<InfoResponse_ChromeVersion>): InfoResponse_ChromeVersion {\n    return InfoResponse_ChromeVersion.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<InfoResponse_ChromeVersion>): InfoResponse_ChromeVersion {\n    const message = createBaseInfoResponse_ChromeVersion();\n    message.protocolVersion = object.protocolVersion ?? undefined;\n    message.product = object.product ?? undefined;\n    message.revision = object.revision ?? undefined;\n    message.userAgent = object.userAgent ?? undefined;\n    message.jsVersion = object.jsVersion ?? undefined;\n    return message;\n  },\n};\n\nfunction createBasePuppeteerOptions(): PuppeteerOptions {\n  return {};\n}\n\nexport const PuppeteerOptions: MessageFns<PuppeteerOptions> = {\n  encode(message: PuppeteerOptions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.pdfOptions !== undefined) {\n      PdfOptions.encode(message.pdfOptions, writer.uint32(10).fork()).join();\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PuppeteerOptions {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePuppeteerOptions();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 10) {\n            break;\n          }\n\n          message.pdfOptions = PdfOptions.decode(reader, reader.uint32());\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PuppeteerOptions {\n    return { pdfOptions: isSet(object.pdfOptions) ? PdfOptions.fromJSON(object.pdfOptions) : undefined };\n  },\n\n  toJSON(message: PuppeteerOptions): unknown {\n    const obj: any = {};\n    if (message.pdfOptions !== undefined) {\n      obj.pdfOptions = PdfOptions.toJSON(message.pdfOptions);\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PuppeteerOptions>): PuppeteerOptions {\n    return PuppeteerOptions.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PuppeteerOptions>): PuppeteerOptions {\n    const message = createBasePuppeteerOptions();\n    message.pdfOptions = (object.pdfOptions !== undefined && object.pdfOptions !== null)\n      ? PdfOptions.fromPartial(object.pdfOptions)\n      : undefined;\n    return message;\n  },\n};\n\nfunction createBasePdfOptions(): PdfOptions {\n  return {};\n}\n\nexport const PdfOptions: MessageFns<PdfOptions> = {\n  encode(message: PdfOptions, writer: BinaryWriter = new BinaryWriter()): BinaryWriter {\n    if (message.landscape !== undefined) {\n      writer.uint32(8).bool(message.landscape);\n    }\n    if (message.displayHeaderFooter !== undefined) {\n      writer.uint32(16).bool(message.displayHeaderFooter);\n    }\n    if (message.printBackground !== undefined) {\n      writer.uint32(24).bool(message.printBackground);\n    }\n    if (message.format !== undefined) {\n      writer.uint32(32).int32(pdfOptions_PaperFormatToNumber(message.format));\n    }\n    if (message.scale !== undefined) {\n      writer.uint32(45).float(message.scale);\n    }\n    if (message.paperWidth !== undefined) {\n      writer.uint32(53).float(message.paperWidth);\n    }\n    if (message.paperHeight !== undefined) {\n      writer.uint32(61).float(message.paperHeight);\n    }\n    if (message.marginTop !== undefined) {\n      writer.uint32(69).float(message.marginTop);\n    }\n    if (message.marginBottom !== undefined) {\n      writer.uint32(77).float(message.marginBottom);\n    }\n    if (message.marginLeft !== undefined) {\n      writer.uint32(85).float(message.marginLeft);\n    }\n    if (message.marginRight !== undefined) {\n      writer.uint32(93).float(message.marginRight);\n    }\n    if (message.pageRanges !== undefined) {\n      writer.uint32(98).string(message.pageRanges);\n    }\n    if (message.ignoreInvalidPageRanges !== undefined) {\n      writer.uint32(104).bool(message.ignoreInvalidPageRanges);\n    }\n    if (message.headerTemplate !== undefined) {\n      writer.uint32(114).string(message.headerTemplate);\n    }\n    if (message.footerTemplate !== undefined) {\n      writer.uint32(122).string(message.footerTemplate);\n    }\n    if (message.preferCssPageSize !== undefined) {\n      writer.uint32(128).bool(message.preferCssPageSize);\n    }\n    return writer;\n  },\n\n  decode(input: BinaryReader | Uint8Array, length?: number): PdfOptions {\n    const reader = input instanceof BinaryReader ? input : new BinaryReader(input);\n    let end = length === undefined ? reader.len : reader.pos + length;\n    const message = createBasePdfOptions();\n    while (reader.pos < end) {\n      const tag = reader.uint32();\n      switch (tag >>> 3) {\n        case 1: {\n          if (tag !== 8) {\n            break;\n          }\n\n          message.landscape = reader.bool();\n          continue;\n        }\n        case 2: {\n          if (tag !== 16) {\n            break;\n          }\n\n          message.displayHeaderFooter = reader.bool();\n          continue;\n        }\n        case 3: {\n          if (tag !== 24) {\n            break;\n          }\n\n          message.printBackground = reader.bool();\n          continue;\n        }\n        case 4: {\n          if (tag !== 32) {\n            break;\n          }\n\n          message.format = pdfOptions_PaperFormatFromJSON(reader.int32());\n          continue;\n        }\n        case 5: {\n          if (tag !== 45) {\n            break;\n          }\n\n          message.scale = reader.float();\n          continue;\n        }\n        case 6: {\n          if (tag !== 53) {\n            break;\n          }\n\n          message.paperWidth = reader.float();\n          continue;\n        }\n        case 7: {\n          if (tag !== 61) {\n            break;\n          }\n\n          message.paperHeight = reader.float();\n          continue;\n        }\n        case 8: {\n          if (tag !== 69) {\n            break;\n          }\n\n          message.marginTop = reader.float();\n          continue;\n        }\n        case 9: {\n          if (tag !== 77) {\n            break;\n          }\n\n          message.marginBottom = reader.float();\n          continue;\n        }\n        case 10: {\n          if (tag !== 85) {\n            break;\n          }\n\n          message.marginLeft = reader.float();\n          continue;\n        }\n        case 11: {\n          if (tag !== 93) {\n            break;\n          }\n\n          message.marginRight = reader.float();\n          continue;\n        }\n        case 12: {\n          if (tag !== 98) {\n            break;\n          }\n\n          message.pageRanges = reader.string();\n          continue;\n        }\n        case 13: {\n          if (tag !== 104) {\n            break;\n          }\n\n          message.ignoreInvalidPageRanges = reader.bool();\n          continue;\n        }\n        case 14: {\n          if (tag !== 114) {\n            break;\n          }\n\n          message.headerTemplate = reader.string();\n          continue;\n        }\n        case 15: {\n          if (tag !== 122) {\n            break;\n          }\n\n          message.footerTemplate = reader.string();\n          continue;\n        }\n        case 16: {\n          if (tag !== 128) {\n            break;\n          }\n\n          message.preferCssPageSize = reader.bool();\n          continue;\n        }\n      }\n      if ((tag & 7) === 4 || tag === 0) {\n        break;\n      }\n      reader.skip(tag & 7);\n    }\n    return message;\n  },\n\n  fromJSON(object: any): PdfOptions {\n    return {\n      landscape: isSet(object.landscape) ? globalThis.Boolean(object.landscape) : undefined,\n      displayHeaderFooter: isSet(object.displayHeaderFooter)\n        ? globalThis.Boolean(object.displayHeaderFooter)\n        : undefined,\n      printBackground: isSet(object.printBackground) ? globalThis.Boolean(object.printBackground) : undefined,\n      format: isSet(object.format) ? pdfOptions_PaperFormatFromJSON(object.format) : undefined,\n      scale: isSet(object.scale) ? globalThis.Number(object.scale) : undefined,\n      paperWidth: isSet(object.paperWidth) ? globalThis.Number(object.paperWidth) : undefined,\n      paperHeight: isSet(object.paperHeight) ? globalThis.Number(object.paperHeight) : undefined,\n      marginTop: isSet(object.marginTop) ? globalThis.Number(object.marginTop) : undefined,\n      marginBottom: isSet(object.marginBottom) ? globalThis.Number(object.marginBottom) : undefined,\n      marginLeft: isSet(object.marginLeft) ? globalThis.Number(object.marginLeft) : undefined,\n      marginRight: isSet(object.marginRight) ? globalThis.Number(object.marginRight) : undefined,\n      pageRanges: isSet(object.pageRanges) ? globalThis.String(object.pageRanges) : undefined,\n      ignoreInvalidPageRanges: isSet(object.ignoreInvalidPageRanges)\n        ? globalThis.Boolean(object.ignoreInvalidPageRanges)\n        : undefined,\n      headerTemplate: isSet(object.headerTemplate) ? globalThis.String(object.headerTemplate) : undefined,\n      footerTemplate: isSet(object.footerTemplate) ? globalThis.String(object.footerTemplate) : undefined,\n      preferCssPageSize: isSet(object.preferCssPageSize) ? globalThis.Boolean(object.preferCssPageSize) : undefined,\n    };\n  },\n\n  toJSON(message: PdfOptions): unknown {\n    const obj: any = {};\n    if (message.landscape !== undefined) {\n      obj.landscape = message.landscape;\n    }\n    if (message.displayHeaderFooter !== undefined) {\n      obj.displayHeaderFooter = message.displayHeaderFooter;\n    }\n    if (message.printBackground !== undefined) {\n      obj.printBackground = message.printBackground;\n    }\n    if (message.format !== undefined) {\n      obj.format = pdfOptions_PaperFormatToJSON(message.format);\n    }\n    if (message.scale !== undefined) {\n      obj.scale = message.scale;\n    }\n    if (message.paperWidth !== undefined) {\n      obj.paperWidth = message.paperWidth;\n    }\n    if (message.paperHeight !== undefined) {\n      obj.paperHeight = message.paperHeight;\n    }\n    if (message.marginTop !== undefined) {\n      obj.marginTop = message.marginTop;\n    }\n    if (message.marginBottom !== undefined) {\n      obj.marginBottom = message.marginBottom;\n    }\n    if (message.marginLeft !== undefined) {\n      obj.marginLeft = message.marginLeft;\n    }\n    if (message.marginRight !== undefined) {\n      obj.marginRight = message.marginRight;\n    }\n    if (message.pageRanges !== undefined) {\n      obj.pageRanges = message.pageRanges;\n    }\n    if (message.ignoreInvalidPageRanges !== undefined) {\n      obj.ignoreInvalidPageRanges = message.ignoreInvalidPageRanges;\n    }\n    if (message.headerTemplate !== undefined) {\n      obj.headerTemplate = message.headerTemplate;\n    }\n    if (message.footerTemplate !== undefined) {\n      obj.footerTemplate = message.footerTemplate;\n    }\n    if (message.preferCssPageSize !== undefined) {\n      obj.preferCssPageSize = message.preferCssPageSize;\n    }\n    return obj;\n  },\n\n  create(base?: DeepPartial<PdfOptions>): PdfOptions {\n    return PdfOptions.fromPartial(base ?? {});\n  },\n  fromPartial(object: DeepPartial<PdfOptions>): PdfOptions {\n    const message = createBasePdfOptions();\n    message.landscape = object.landscape ?? undefined;\n    message.displayHeaderFooter = object.displayHeaderFooter ?? undefined;\n    message.printBackground = object.printBackground ?? undefined;\n    message.format = object.format ?? undefined;\n    message.scale = object.scale ?? undefined;\n    message.paperWidth = object.paperWidth ?? undefined;\n    message.paperHeight = object.paperHeight ?? undefined;\n    message.marginTop = object.marginTop ?? undefined;\n    message.marginBottom = object.marginBottom ?? undefined;\n    message.marginLeft = object.marginLeft ?? undefined;\n    message.marginRight = object.marginRight ?? undefined;\n    message.pageRanges = object.pageRanges ?? undefined;\n    message.ignoreInvalidPageRanges = object.ignoreInvalidPageRanges ?? undefined;\n    message.headerTemplate = object.headerTemplate ?? undefined;\n    message.footerTemplate = object.footerTemplate ?? undefined;\n    message.preferCssPageSize = object.preferCssPageSize ?? undefined;\n    return message;\n  },\n};\n\nexport type PdfRenderingServiceDefinition = typeof PdfRenderingServiceDefinition;\nexport const PdfRenderingServiceDefinition = {\n  name: \"PdfRenderingService\",\n  fullName: \"io.restorecommerce.pdf_rendering.PdfRenderingService\",\n  methods: {\n    info: {\n      name: \"Info\",\n      requestType: Empty,\n      requestStream: false,\n      responseType: InfoResponse,\n      responseStream: false,\n      options: { _unknownFields: { 248008: [Buffer.from([1])] } },\n    },\n    render: {\n      name: \"Render\",\n      requestType: RenderRequest,\n      requestStream: false,\n      responseType: RenderingResponse,\n      responseStream: false,\n      options: {},\n    },\n  },\n} as const;\n\nexport interface PdfRenderingServiceImplementation<CallContextExt = {}> {\n  info(request: Empty, context: CallContext & CallContextExt): Promise<DeepPartial<InfoResponse>>;\n  render(request: RenderRequest, context: CallContext & CallContextExt): Promise<DeepPartial<RenderingResponse>>;\n}\n\nexport interface PdfRenderingServiceClient<CallOptionsExt = {}> {\n  info(request: DeepPartial<Empty>, options?: CallOptions & CallOptionsExt): Promise<InfoResponse>;\n  render(request: DeepPartial<RenderRequest>, options?: CallOptions & CallOptionsExt): Promise<RenderingResponse>;\n}\n\ntype ProtoMetaMessageOptions = {\n  options?: { [key: string]: any };\n  fields?: { [key: string]: { [key: string]: any } };\n  oneof?: { [key: string]: { [key: string]: any } };\n  nested?: { [key: string]: ProtoMetaMessageOptions };\n};\n\nexport interface ProtoMetadata {\n  fileDescriptor: FileDescriptorProto1;\n  references: { [key: string]: any };\n  dependencies?: ProtoMetadata[];\n  options?: {\n    options?: { [key: string]: any };\n    services?: {\n      [key: string]: { options?: { [key: string]: any }; methods?: { [key: string]: { [key: string]: any } } };\n    };\n    messages?: { [key: string]: ProtoMetaMessageOptions };\n    enums?: { [key: string]: { options?: { [key: string]: any }; values?: { [key: string]: { [key: string]: any } } } };\n  };\n}\n\nexport const protoMetadata: ProtoMetadata = {\n  fileDescriptor: {\n    \"name\": \"io/restorecommerce/pdf_rendering.proto\",\n    \"package\": \"io.restorecommerce.pdf_rendering\",\n    \"dependency\": [\n      \"google/protobuf/any.proto\",\n      \"google/protobuf/empty.proto\",\n      \"io/restorecommerce/auth.proto\",\n      \"io/restorecommerce/status.proto\",\n      \"io/restorecommerce/options.proto\",\n    ],\n    \"publicDependency\": [],\n    \"weakDependency\": [],\n    \"messageType\": [{\n      \"name\": \"RenderRequest\",\n      \"field\": [{\n        \"name\": \"individual\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.pdf_rendering.IndividualRequest\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"individual\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"combined\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.pdf_rendering.CombinedRequest\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"combined\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"subject\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.auth.Subject\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"subject\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"type\", \"options\": undefined }, { \"name\": \"_subject\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"IndividualRequest\",\n      \"field\": [{\n        \"name\": \"data\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.pdf_rendering.IndividualRequest.IndividualRequestData\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"data\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [{\n        \"name\": \"IndividualRequestData\",\n        \"field\": [{\n          \"name\": \"data\",\n          \"number\": 1,\n          \"label\": 1,\n          \"type\": 11,\n          \"typeName\": \".io.restorecommerce.pdf_rendering.RenderData\",\n          \"extendee\": \"\",\n          \"defaultValue\": \"\",\n          \"oneofIndex\": 0,\n          \"jsonName\": \"data\",\n          \"options\": undefined,\n          \"proto3Optional\": false,\n        }, {\n          \"name\": \"output\",\n          \"number\": 2,\n          \"label\": 1,\n          \"type\": 11,\n          \"typeName\": \".io.restorecommerce.pdf_rendering.OutputOptions\",\n          \"extendee\": \"\",\n          \"defaultValue\": \"\",\n          \"oneofIndex\": 0,\n          \"jsonName\": \"output\",\n          \"options\": undefined,\n          \"proto3Optional\": true,\n        }],\n        \"extension\": [],\n        \"nestedType\": [],\n        \"enumType\": [],\n        \"extensionRange\": [],\n        \"oneofDecl\": [{ \"name\": \"_output\", \"options\": undefined }],\n        \"options\": undefined,\n        \"reservedRange\": [],\n        \"reservedName\": [],\n      }],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"CombinedRequest\",\n      \"field\": [{\n        \"name\": \"data\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.pdf_rendering.RenderData\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"data\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"output\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.pdf_rendering.OutputOptions\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"output\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_output\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"RenderData\",\n      \"field\": [{\n        \"name\": \"source\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.pdf_rendering.RenderSource\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"source\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"options\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.pdf_rendering.RenderOptions\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"options\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_options\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"OutputOptions\",\n      \"field\": [{\n        \"name\": \"generate_pdfa\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"generatePdfa\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"meta_data\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.pdf_rendering.MetaData\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"metaData\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"upload_options\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.pdf_rendering.UploadOptions\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"uploadOptions\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_generate_pdfa\", \"options\": undefined },\n        { \"name\": \"_meta_data\", \"options\": undefined },\n        { \"name\": \"_upload_options\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"RenderOptions\",\n      \"field\": [{\n        \"name\": \"wait_after_load_time\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 3,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"waitAfterLoadTime\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"puppeteer_options\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.pdf_rendering.PuppeteerOptions\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"puppeteerOptions\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_wait_after_load_time\", \"options\": undefined }, {\n        \"name\": \"_puppeteer_options\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"RenderSource\",\n      \"field\": [{\n        \"name\": \"url\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"url\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"html\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"html\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"content\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"UploadOptions\",\n      \"field\": [{\n        \"name\": \"bucket\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"bucket\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"key\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"key\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"content_disposition\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"contentDisposition\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_bucket\", \"options\": undefined }, { \"name\": \"_key\", \"options\": undefined }, {\n        \"name\": \"_content_disposition\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"MetaData\",\n      \"field\": [{\n        \"name\": \"title\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"title\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"creator\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"creator\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"producer\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"producer\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_title\", \"options\": undefined }, { \"name\": \"_creator\", \"options\": undefined }, {\n        \"name\": \"_producer\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"RenderingResponse\",\n      \"field\": [{\n        \"name\": \"individual\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.pdf_rendering.IndividualResponse\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"individual\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"combined\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.pdf_rendering.ResponsePayloadWithStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"combined\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"operation_status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.OperationStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"operationStatus\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"response\", \"options\": undefined }, {\n        \"name\": \"_operation_status\",\n        \"options\": undefined,\n      }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"IndividualResponse\",\n      \"field\": [{\n        \"name\": \"RenderingResponse\",\n        \"number\": 1,\n        \"label\": 3,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.pdf_rendering.ResponsePayloadWithStatus\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"RenderingResponse\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ResponsePayloadWithStatus\",\n      \"field\": [{\n        \"name\": \"payload\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.pdf_rendering.ResponsePayload\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"payload\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"status\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.status.Status\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"status\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_payload\", \"options\": undefined }, { \"name\": \"_status\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ResponsePayload\",\n      \"field\": [{\n        \"name\": \"pdf\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.pdf_rendering.ResponsePdf\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"pdf\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"upload_result\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.pdf_rendering.ResponseS3Upload\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"uploadResult\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"response\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ResponsePdf\",\n      \"field\": [{\n        \"name\": \"data\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 12,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"data\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"ResponseS3Upload\",\n      \"field\": [{\n        \"name\": \"url\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"url\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }, {\n        \"name\": \"length\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 5,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"length\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"InfoResponse\",\n      \"field\": [{\n        \"name\": \"chrome\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.pdf_rendering.InfoResponse.ChromeVersion\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"chrome\",\n        \"options\": undefined,\n        \"proto3Optional\": false,\n      }],\n      \"extension\": [],\n      \"nestedType\": [{\n        \"name\": \"ChromeVersion\",\n        \"field\": [{\n          \"name\": \"protocol_version\",\n          \"number\": 1,\n          \"label\": 1,\n          \"type\": 9,\n          \"typeName\": \"\",\n          \"extendee\": \"\",\n          \"defaultValue\": \"\",\n          \"oneofIndex\": 0,\n          \"jsonName\": \"protocolVersion\",\n          \"options\": undefined,\n          \"proto3Optional\": false,\n        }, {\n          \"name\": \"product\",\n          \"number\": 2,\n          \"label\": 1,\n          \"type\": 9,\n          \"typeName\": \"\",\n          \"extendee\": \"\",\n          \"defaultValue\": \"\",\n          \"oneofIndex\": 0,\n          \"jsonName\": \"product\",\n          \"options\": undefined,\n          \"proto3Optional\": false,\n        }, {\n          \"name\": \"revision\",\n          \"number\": 3,\n          \"label\": 1,\n          \"type\": 9,\n          \"typeName\": \"\",\n          \"extendee\": \"\",\n          \"defaultValue\": \"\",\n          \"oneofIndex\": 0,\n          \"jsonName\": \"revision\",\n          \"options\": undefined,\n          \"proto3Optional\": false,\n        }, {\n          \"name\": \"user_agent\",\n          \"number\": 4,\n          \"label\": 1,\n          \"type\": 9,\n          \"typeName\": \"\",\n          \"extendee\": \"\",\n          \"defaultValue\": \"\",\n          \"oneofIndex\": 0,\n          \"jsonName\": \"userAgent\",\n          \"options\": undefined,\n          \"proto3Optional\": false,\n        }, {\n          \"name\": \"js_version\",\n          \"number\": 5,\n          \"label\": 1,\n          \"type\": 9,\n          \"typeName\": \"\",\n          \"extendee\": \"\",\n          \"defaultValue\": \"\",\n          \"oneofIndex\": 0,\n          \"jsonName\": \"jsVersion\",\n          \"options\": undefined,\n          \"proto3Optional\": false,\n        }],\n        \"extension\": [],\n        \"nestedType\": [],\n        \"enumType\": [],\n        \"extensionRange\": [],\n        \"oneofDecl\": [],\n        \"options\": undefined,\n        \"reservedRange\": [],\n        \"reservedName\": [],\n      }],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"PuppeteerOptions\",\n      \"field\": [{\n        \"name\": \"pdf_options\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 11,\n        \"typeName\": \".io.restorecommerce.pdf_rendering.PdfOptions\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"pdfOptions\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [],\n      \"extensionRange\": [],\n      \"oneofDecl\": [{ \"name\": \"_pdf_options\", \"options\": undefined }],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }, {\n      \"name\": \"PdfOptions\",\n      \"field\": [{\n        \"name\": \"landscape\",\n        \"number\": 1,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 0,\n        \"jsonName\": \"landscape\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"display_header_footer\",\n        \"number\": 2,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 1,\n        \"jsonName\": \"displayHeaderFooter\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"print_background\",\n        \"number\": 3,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 2,\n        \"jsonName\": \"printBackground\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"format\",\n        \"number\": 4,\n        \"label\": 1,\n        \"type\": 14,\n        \"typeName\": \".io.restorecommerce.pdf_rendering.PdfOptions.PaperFormat\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 3,\n        \"jsonName\": \"format\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"scale\",\n        \"number\": 5,\n        \"label\": 1,\n        \"type\": 2,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 4,\n        \"jsonName\": \"scale\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"paper_width\",\n        \"number\": 6,\n        \"label\": 1,\n        \"type\": 2,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 5,\n        \"jsonName\": \"paperWidth\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"paper_height\",\n        \"number\": 7,\n        \"label\": 1,\n        \"type\": 2,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 6,\n        \"jsonName\": \"paperHeight\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"margin_top\",\n        \"number\": 8,\n        \"label\": 1,\n        \"type\": 2,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 7,\n        \"jsonName\": \"marginTop\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"margin_bottom\",\n        \"number\": 9,\n        \"label\": 1,\n        \"type\": 2,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 8,\n        \"jsonName\": \"marginBottom\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"margin_left\",\n        \"number\": 10,\n        \"label\": 1,\n        \"type\": 2,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 9,\n        \"jsonName\": \"marginLeft\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"margin_right\",\n        \"number\": 11,\n        \"label\": 1,\n        \"type\": 2,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 10,\n        \"jsonName\": \"marginRight\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"page_ranges\",\n        \"number\": 12,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 11,\n        \"jsonName\": \"pageRanges\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"ignore_invalid_page_ranges\",\n        \"number\": 13,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 12,\n        \"jsonName\": \"ignoreInvalidPageRanges\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"header_template\",\n        \"number\": 14,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 13,\n        \"jsonName\": \"headerTemplate\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"footer_template\",\n        \"number\": 15,\n        \"label\": 1,\n        \"type\": 9,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 14,\n        \"jsonName\": \"footerTemplate\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }, {\n        \"name\": \"prefer_css_page_size\",\n        \"number\": 16,\n        \"label\": 1,\n        \"type\": 8,\n        \"typeName\": \"\",\n        \"extendee\": \"\",\n        \"defaultValue\": \"\",\n        \"oneofIndex\": 15,\n        \"jsonName\": \"preferCssPageSize\",\n        \"options\": undefined,\n        \"proto3Optional\": true,\n      }],\n      \"extension\": [],\n      \"nestedType\": [],\n      \"enumType\": [{\n        \"name\": \"PaperFormat\",\n        \"value\": [\n          { \"name\": \"A0\", \"number\": 0, \"options\": undefined },\n          { \"name\": \"A1\", \"number\": 1, \"options\": undefined },\n          { \"name\": \"A2\", \"number\": 2, \"options\": undefined },\n          { \"name\": \"A3\", \"number\": 3, \"options\": undefined },\n          { \"name\": \"A4\", \"number\": 4, \"options\": undefined },\n          { \"name\": \"A5\", \"number\": 5, \"options\": undefined },\n          { \"name\": \"A6\", \"number\": 6, \"options\": undefined },\n          { \"name\": \"A7\", \"number\": 7, \"options\": undefined },\n          { \"name\": \"LETTER\", \"number\": 8, \"options\": undefined },\n          { \"name\": \"LEGAL\", \"number\": 9, \"options\": undefined },\n          { \"name\": \"TABLOID\", \"number\": 10, \"options\": undefined },\n        ],\n        \"options\": undefined,\n        \"reservedRange\": [],\n        \"reservedName\": [],\n      }],\n      \"extensionRange\": [],\n      \"oneofDecl\": [\n        { \"name\": \"_landscape\", \"options\": undefined },\n        { \"name\": \"_display_header_footer\", \"options\": undefined },\n        { \"name\": \"_print_background\", \"options\": undefined },\n        { \"name\": \"_format\", \"options\": undefined },\n        { \"name\": \"_scale\", \"options\": undefined },\n        { \"name\": \"_paper_width\", \"options\": undefined },\n        { \"name\": \"_paper_height\", \"options\": undefined },\n        { \"name\": \"_margin_top\", \"options\": undefined },\n        { \"name\": \"_margin_bottom\", \"options\": undefined },\n        { \"name\": \"_margin_left\", \"options\": undefined },\n        { \"name\": \"_margin_right\", \"options\": undefined },\n        { \"name\": \"_page_ranges\", \"options\": undefined },\n        { \"name\": \"_ignore_invalid_page_ranges\", \"options\": undefined },\n        { \"name\": \"_header_template\", \"options\": undefined },\n        { \"name\": \"_footer_template\", \"options\": undefined },\n        { \"name\": \"_prefer_css_page_size\", \"options\": undefined },\n      ],\n      \"options\": undefined,\n      \"reservedRange\": [],\n      \"reservedName\": [],\n    }],\n    \"enumType\": [],\n    \"service\": [{\n      \"name\": \"PdfRenderingService\",\n      \"method\": [{\n        \"name\": \"Info\",\n        \"inputType\": \".google.protobuf.Empty\",\n        \"outputType\": \".io.restorecommerce.pdf_rendering.InfoResponse\",\n        \"options\": { \"deprecated\": false, \"idempotencyLevel\": 0, \"uninterpretedOption\": [] },\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }, {\n        \"name\": \"Render\",\n        \"inputType\": \".io.restorecommerce.pdf_rendering.RenderRequest\",\n        \"outputType\": \".io.restorecommerce.pdf_rendering.RenderingResponse\",\n        \"options\": undefined,\n        \"clientStreaming\": false,\n        \"serverStreaming\": false,\n      }],\n      \"options\": undefined,\n    }],\n    \"extension\": [],\n    \"options\": undefined,\n    \"sourceCodeInfo\": { \"location\": [] },\n    \"syntax\": \"proto3\",\n  },\n  references: {\n    \".io.restorecommerce.pdf_rendering.RenderRequest\": RenderRequest,\n    \".io.restorecommerce.pdf_rendering.IndividualRequest\": IndividualRequest,\n    \".io.restorecommerce.pdf_rendering.IndividualRequest.IndividualRequestData\":\n      IndividualRequest_IndividualRequestData,\n    \".io.restorecommerce.pdf_rendering.CombinedRequest\": CombinedRequest,\n    \".io.restorecommerce.pdf_rendering.RenderData\": RenderData,\n    \".io.restorecommerce.pdf_rendering.OutputOptions\": OutputOptions,\n    \".io.restorecommerce.pdf_rendering.RenderOptions\": RenderOptions,\n    \".io.restorecommerce.pdf_rendering.RenderSource\": RenderSource,\n    \".io.restorecommerce.pdf_rendering.UploadOptions\": UploadOptions,\n    \".io.restorecommerce.pdf_rendering.MetaData\": MetaData,\n    \".io.restorecommerce.pdf_rendering.RenderingResponse\": RenderingResponse,\n    \".io.restorecommerce.pdf_rendering.IndividualResponse\": IndividualResponse,\n    \".io.restorecommerce.pdf_rendering.ResponsePayloadWithStatus\": ResponsePayloadWithStatus,\n    \".io.restorecommerce.pdf_rendering.ResponsePayload\": ResponsePayload,\n    \".io.restorecommerce.pdf_rendering.ResponsePdf\": ResponsePdf,\n    \".io.restorecommerce.pdf_rendering.ResponseS3Upload\": ResponseS3Upload,\n    \".io.restorecommerce.pdf_rendering.InfoResponse\": InfoResponse,\n    \".io.restorecommerce.pdf_rendering.InfoResponse.ChromeVersion\": InfoResponse_ChromeVersion,\n    \".io.restorecommerce.pdf_rendering.PuppeteerOptions\": PuppeteerOptions,\n    \".io.restorecommerce.pdf_rendering.PdfOptions\": PdfOptions,\n    \".io.restorecommerce.pdf_rendering.PdfOptions.PaperFormat\": PdfOptions_PaperFormat,\n  },\n  dependencies: [protoMetadata1, protoMetadata2, protoMetadata3, protoMetadata4, protoMetadata5],\n  options: { services: { \"PdfRenderingService\": { methods: { \"Info\": { \"is_query\": true } } } } },\n};\n\nfunction bytesFromBase64(b64: string): Uint8Array {\n  return Uint8Array.from(globalThis.Buffer.from(b64, \"base64\"));\n}\n\nfunction base64FromBytes(arr: Uint8Array): string {\n  return globalThis.Buffer.from(arr).toString(\"base64\");\n}\n\ntype Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;\n\nexport type DeepPartial<T> = T extends Builtin ? T\n  : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>>\n  : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>>\n  : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]> }\n  : Partial<T>;\n\nfunction longToNumber(int64: { toString(): string }): number {\n  const num = globalThis.Number(int64.toString());\n  if (num > globalThis.Number.MAX_SAFE_INTEGER) {\n    throw new globalThis.Error(\"Value is larger than Number.MAX_SAFE_INTEGER\");\n  }\n  if (num < globalThis.Number.MIN_SAFE_INTEGER) {\n    throw new globalThis.Error(\"Value is smaller than Number.MIN_SAFE_INTEGER\");\n  }\n  return num;\n}\n\nfunction isSet(value: any): boolean {\n  return value !== null && value !== undefined;\n}\n\nexport interface MessageFns<T> {\n  encode(message: T, writer?: BinaryWriter): BinaryWriter;\n  decode(input: BinaryReader | Uint8Array, length?: number): T;\n  fromJSON(object: any): T;\n  toJSON(message: T): unknown;\n  create(base?: DeepPartial<T>): T;\n  fromPartial(object: DeepPartial<T>): T;\n}\n", "'use strict';\n\nconst BINARY_TYPES = ['nodebuffer', 'arraybuffer', 'fragments'];\nconst hasBlob = typeof Blob !== 'undefined';\n\nif (hasBlob) BINARY_TYPES.push('blob');\n\nmodule.exports = {\n  BINARY_TYPES,\n  CLOSE_TIMEOUT: 30000,\n  EMPTY_BUFFER: Buffer.alloc(0),\n  GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',\n  hasBlob,\n  kForOnEventAttribute: Symbol('kIsForOnEventAttribute'),\n  kListener: Symbol('kListener'),\n  kStatusCode: Symbol('status-code'),\n  kWebSocket: Symbol('websocket'),\n  NOOP: () => {}\n};\n", "'use strict';\n\nconst { EMPTY_BUFFER } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\n\n/**\n * Merges an array of buffers into a new buffer.\n *\n * @param {Buffer[]} list The array of buffers to concat\n * @param {Number} totalLength The total length of buffers in the list\n * @return {Buffer} The resulting buffer\n * @public\n */\nfunction concat(list, totalLength) {\n  if (list.length === 0) return EMPTY_BUFFER;\n  if (list.length === 1) return list[0];\n\n  const target = Buffer.allocUnsafe(totalLength);\n  let offset = 0;\n\n  for (let i = 0; i < list.length; i++) {\n    const buf = list[i];\n    target.set(buf, offset);\n    offset += buf.length;\n  }\n\n  if (offset < totalLength) {\n    return new FastBuffer(target.buffer, target.byteOffset, offset);\n  }\n\n  return target;\n}\n\n/**\n * Masks a buffer using the given mask.\n *\n * @param {Buffer} source The buffer to mask\n * @param {Buffer} mask The mask to use\n * @param {Buffer} output The buffer where to store the result\n * @param {Number} offset The offset at which to start writing\n * @param {Number} length The number of bytes to mask.\n * @public\n */\nfunction _mask(source, mask, output, offset, length) {\n  for (let i = 0; i < length; i++) {\n    output[offset + i] = source[i] ^ mask[i & 3];\n  }\n}\n\n/**\n * Unmasks a buffer using the given mask.\n *\n * @param {Buffer} buffer The buffer to unmask\n * @param {Buffer} mask The mask to use\n * @public\n */\nfunction _unmask(buffer, mask) {\n  for (let i = 0; i < buffer.length; i++) {\n    buffer[i] ^= mask[i & 3];\n  }\n}\n\n/**\n * Converts a buffer to an `ArrayBuffer`.\n *\n * @param {Buffer} buf The buffer to convert\n * @return {ArrayBuffer} Converted buffer\n * @public\n */\nfunction toArrayBuffer(buf) {\n  if (buf.length === buf.buffer.byteLength) {\n    return buf.buffer;\n  }\n\n  return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.length);\n}\n\n/**\n * Converts `data` to a `Buffer`.\n *\n * @param {*} data The data to convert\n * @return {Buffer} The buffer\n * @throws {TypeError}\n * @public\n */\nfunction toBuffer(data) {\n  toBuffer.readOnly = true;\n\n  if (Buffer.isBuffer(data)) return data;\n\n  let buf;\n\n  if (data instanceof ArrayBuffer) {\n    buf = new FastBuffer(data);\n  } else if (ArrayBuffer.isView(data)) {\n    buf = new FastBuffer(data.buffer, data.byteOffset, data.byteLength);\n  } else {\n    buf = Buffer.from(data);\n    toBuffer.readOnly = false;\n  }\n\n  return buf;\n}\n\nmodule.exports = {\n  concat,\n  mask: _mask,\n  toArrayBuffer,\n  toBuffer,\n  unmask: _unmask\n};\n\n/* istanbul ignore else  */\nif (!process.env.WS_NO_BUFFER_UTIL) {\n  try {\n    const bufferUtil = require('bufferutil');\n\n    module.exports.mask = function (source, mask, output, offset, length) {\n      if (length < 48) _mask(source, mask, output, offset, length);\n      else bufferUtil.mask(source, mask, output, offset, length);\n    };\n\n    module.exports.unmask = function (buffer, mask) {\n      if (buffer.length < 32) _unmask(buffer, mask);\n      else bufferUtil.unmask(buffer, mask);\n    };\n  } catch (e) {\n    // Continue regardless of the error.\n  }\n}\n", "'use strict';\n\nconst kDone = Symbol('kDone');\nconst kRun = Symbol('kRun');\n\n/**\n * A very simple job queue with adjustable concurrency. Adapted from\n * https://github.com/STRML/async-limiter\n */\nclass Limiter {\n  /**\n   * Creates a new `Limiter`.\n   *\n   * @param {Number} [concurrency=Infinity] The maximum number of jobs allowed\n   *     to run concurrently\n   */\n  constructor(concurrency) {\n    this[kDone] = () => {\n      this.pending--;\n      this[kRun]();\n    };\n    this.concurrency = concurrency || Infinity;\n    this.jobs = [];\n    this.pending = 0;\n  }\n\n  /**\n   * Adds a job to the queue.\n   *\n   * @param {Function} job The job to run\n   * @public\n   */\n  add(job) {\n    this.jobs.push(job);\n    this[kRun]();\n  }\n\n  /**\n   * Removes a job from the queue and runs it if possible.\n   *\n   * @private\n   */\n  [kRun]() {\n    if (this.pending === this.concurrency) return;\n\n    if (this.jobs.length) {\n      const job = this.jobs.shift();\n\n      this.pending++;\n      job(this[kDone]);\n    }\n  }\n}\n\nmodule.exports = Limiter;\n", "'use strict';\n\nconst zlib = require('zlib');\n\nconst bufferUtil = require('./buffer-util');\nconst Limiter = require('./limiter');\nconst { kStatusCode } = require('./constants');\n\nconst FastBuffer = Buffer[Symbol.species];\nconst TRAILER = Buffer.from([0x00, 0x00, 0xff, 0xff]);\nconst kPerMessageDeflate = Symbol('permessage-deflate');\nconst kTotalLength = Symbol('total-length');\nconst kCallback = Symbol('callback');\nconst kBuffers = Symbol('buffers');\nconst kError = Symbol('error');\n\n//\n// We limit zlib concurrency, which prevents severe memory fragmentation\n// as documented in https://github.com/nodejs/node/issues/8871#issuecomment-250915913\n// and https://github.com/websockets/ws/issues/1202\n//\n// Intentionally global; it's the global thread pool that's an issue.\n//\nlet zlibLimiter;\n\n/**\n * permessage-deflate implementation.\n */\nclass PerMessageDeflate {\n  /**\n   * Creates a PerMessageDeflate instance.\n   *\n   * @param {Object} [options] Configuration options\n   * @param {(Boolean|Number)} [options.clientMaxWindowBits] Advertise support\n   *     for, or request, a custom client window size\n   * @param {Boolean} [options.clientNoContextTakeover=false] Advertise/\n   *     acknowledge disabling of client context takeover\n   * @param {Number} [options.concurrencyLimit=10] The number of concurrent\n   *     calls to zlib\n   * @param {(Boolean|Number)} [options.serverMaxWindowBits] Request/confirm the\n   *     use of a custom server window size\n   * @param {Boolean} [options.serverNoContextTakeover=false] Request/accept\n   *     disabling of server context takeover\n   * @param {Number} [options.threshold=1024] Size (in bytes) below which\n   *     messages should not be compressed if context takeover is disabled\n   * @param {Object} [options.zlibDeflateOptions] Options to pass to zlib on\n   *     deflate\n   * @param {Object} [options.zlibInflateOptions] Options to pass to zlib on\n   *     inflate\n   * @param {Boolean} [isServer=false] Create the instance in either server or\n   *     client mode\n   * @param {Number} [maxPayload=0] The maximum allowed message length\n   */\n  constructor(options, isServer, maxPayload) {\n    this._maxPayload = maxPayload | 0;\n    this._options = options || {};\n    this._threshold =\n      this._options.threshold !== undefined ? this._options.threshold : 1024;\n    this._isServer = !!isServer;\n    this._deflate = null;\n    this._inflate = null;\n\n    this.params = null;\n\n    if (!zlibLimiter) {\n      const concurrency =\n        this._options.concurrencyLimit !== undefined\n          ? this._options.concurrencyLimit\n          : 10;\n      zlibLimiter = new Limiter(concurrency);\n    }\n  }\n\n  /**\n   * @type {String}\n   */\n  static get extensionName() {\n    return 'permessage-deflate';\n  }\n\n  /**\n   * Create an extension negotiation offer.\n   *\n   * @return {Object} Extension parameters\n   * @public\n   */\n  offer() {\n    const params = {};\n\n    if (this._options.serverNoContextTakeover) {\n      params.server_no_context_takeover = true;\n    }\n    if (this._options.clientNoContextTakeover) {\n      params.client_no_context_takeover = true;\n    }\n    if (this._options.serverMaxWindowBits) {\n      params.server_max_window_bits = this._options.serverMaxWindowBits;\n    }\n    if (this._options.clientMaxWindowBits) {\n      params.client_max_window_bits = this._options.clientMaxWindowBits;\n    } else if (this._options.clientMaxWindowBits == null) {\n      params.client_max_window_bits = true;\n    }\n\n    return params;\n  }\n\n  /**\n   * Accept an extension negotiation offer/response.\n   *\n   * @param {Array} configurations The extension negotiation offers/reponse\n   * @return {Object} Accepted configuration\n   * @public\n   */\n  accept(configurations) {\n    configurations = this.normalizeParams(configurations);\n\n    this.params = this._isServer\n      ? this.acceptAsServer(configurations)\n      : this.acceptAsClient(configurations);\n\n    return this.params;\n  }\n\n  /**\n   * Releases all resources used by the extension.\n   *\n   * @public\n   */\n  cleanup() {\n    if (this._inflate) {\n      this._inflate.close();\n      this._inflate = null;\n    }\n\n    if (this._deflate) {\n      const callback = this._deflate[kCallback];\n\n      this._deflate.close();\n      this._deflate = null;\n\n      if (callback) {\n        callback(\n          new Error(\n            'The deflate stream was closed while data was being processed'\n          )\n        );\n      }\n    }\n  }\n\n  /**\n   *  Accept an extension negotiation offer.\n   *\n   * @param {Array} offers The extension negotiation offers\n   * @return {Object} Accepted configuration\n   * @private\n   */\n  acceptAsServer(offers) {\n    const opts = this._options;\n    const accepted = offers.find((params) => {\n      if (\n        (opts.serverNoContextTakeover === false &&\n          params.server_no_context_takeover) ||\n        (params.server_max_window_bits &&\n          (opts.serverMaxWindowBits === false ||\n            (typeof opts.serverMaxWindowBits === 'number' &&\n              opts.serverMaxWindowBits > params.server_max_window_bits))) ||\n        (typeof opts.clientMaxWindowBits === 'number' &&\n          !params.client_max_window_bits)\n      ) {\n        return false;\n      }\n\n      return true;\n    });\n\n    if (!accepted) {\n      throw new Error('None of the extension offers can be accepted');\n    }\n\n    if (opts.serverNoContextTakeover) {\n      accepted.server_no_context_takeover = true;\n    }\n    if (opts.clientNoContextTakeover) {\n      accepted.client_no_context_takeover = true;\n    }\n    if (typeof opts.serverMaxWindowBits === 'number') {\n      accepted.server_max_window_bits = opts.serverMaxWindowBits;\n    }\n    if (typeof opts.clientMaxWindowBits === 'number') {\n      accepted.client_max_window_bits = opts.clientMaxWindowBits;\n    } else if (\n      accepted.client_max_window_bits === true ||\n      opts.clientMaxWindowBits === false\n    ) {\n      delete accepted.client_max_window_bits;\n    }\n\n    return accepted;\n  }\n\n  /**\n   * Accept the extension negotiation response.\n   *\n   * @param {Array} response The extension negotiation response\n   * @return {Object} Accepted configuration\n   * @private\n   */\n  acceptAsClient(response) {\n    const params = response[0];\n\n    if (\n      this._options.clientNoContextTakeover === false &&\n      params.client_no_context_takeover\n    ) {\n      throw new Error('Unexpected parameter \"client_no_context_takeover\"');\n    }\n\n    if (!params.client_max_window_bits) {\n      if (typeof this._options.clientMaxWindowBits === 'number') {\n        params.client_max_window_bits = this._options.clientMaxWindowBits;\n      }\n    } else if (\n      this._options.clientMaxWindowBits === false ||\n      (typeof this._options.clientMaxWindowBits === 'number' &&\n        params.client_max_window_bits > this._options.clientMaxWindowBits)\n    ) {\n      throw new Error(\n        'Unexpected or invalid parameter \"client_max_window_bits\"'\n      );\n    }\n\n    return params;\n  }\n\n  /**\n   * Normalize parameters.\n   *\n   * @param {Array} configurations The extension negotiation offers/reponse\n   * @return {Array} The offers/response with normalized parameters\n   * @private\n   */\n  normalizeParams(configurations) {\n    configurations.forEach((params) => {\n      Object.keys(params).forEach((key) => {\n        let value = params[key];\n\n        if (value.length > 1) {\n          throw new Error(`Parameter \"${key}\" must have only a single value`);\n        }\n\n        value = value[0];\n\n        if (key === 'client_max_window_bits') {\n          if (value !== true) {\n            const num = +value;\n            if (!Number.isInteger(num) || num < 8 || num > 15) {\n              throw new TypeError(\n                `Invalid value for parameter \"${key}\": ${value}`\n              );\n            }\n            value = num;\n          } else if (!this._isServer) {\n            throw new TypeError(\n              `Invalid value for parameter \"${key}\": ${value}`\n            );\n          }\n        } else if (key === 'server_max_window_bits') {\n          const num = +value;\n          if (!Number.isInteger(num) || num < 8 || num > 15) {\n            throw new TypeError(\n              `Invalid value for parameter \"${key}\": ${value}`\n            );\n          }\n          value = num;\n        } else if (\n          key === 'client_no_context_takeover' ||\n          key === 'server_no_context_takeover'\n        ) {\n          if (value !== true) {\n            throw new TypeError(\n              `Invalid value for parameter \"${key}\": ${value}`\n            );\n          }\n        } else {\n          throw new Error(`Unknown parameter \"${key}\"`);\n        }\n\n        params[key] = value;\n      });\n    });\n\n    return configurations;\n  }\n\n  /**\n   * Decompress data. Concurrency limited.\n   *\n   * @param {Buffer} data Compressed data\n   * @param {Boolean} fin Specifies whether or not this is the last fragment\n   * @param {Function} callback Callback\n   * @public\n   */\n  decompress(data, fin, callback) {\n    zlibLimiter.add((done) => {\n      this._decompress(data, fin, (err, result) => {\n        done();\n        callback(err, result);\n      });\n    });\n  }\n\n  /**\n   * Compress data. Concurrency limited.\n   *\n   * @param {(Buffer|String)} data Data to compress\n   * @param {Boolean} fin Specifies whether or not this is the last fragment\n   * @param {Function} callback Callback\n   * @public\n   */\n  compress(data, fin, callback) {\n    zlibLimiter.add((done) => {\n      this._compress(data, fin, (err, result) => {\n        done();\n        callback(err, result);\n      });\n    });\n  }\n\n  /**\n   * Decompress data.\n   *\n   * @param {Buffer} data Compressed data\n   * @param {Boolean} fin Specifies whether or not this is the last fragment\n   * @param {Function} callback Callback\n   * @private\n   */\n  _decompress(data, fin, callback) {\n    const endpoint = this._isServer ? 'client' : 'server';\n\n    if (!this._inflate) {\n      const key = `${endpoint}_max_window_bits`;\n      const windowBits =\n        typeof this.params[key] !== 'number'\n          ? zlib.Z_DEFAULT_WINDOWBITS\n          : this.params[key];\n\n      this._inflate = zlib.createInflateRaw({\n        ...this._options.zlibInflateOptions,\n        windowBits\n      });\n      this._inflate[kPerMessageDeflate] = this;\n      this._inflate[kTotalLength] = 0;\n      this._inflate[kBuffers] = [];\n      this._inflate.on('error', inflateOnError);\n      this._inflate.on('data', inflateOnData);\n    }\n\n    this._inflate[kCallback] = callback;\n\n    this._inflate.write(data);\n    if (fin) this._inflate.write(TRAILER);\n\n    this._inflate.flush(() => {\n      const err = this._inflate[kError];\n\n      if (err) {\n        this._inflate.close();\n        this._inflate = null;\n        callback(err);\n        return;\n      }\n\n      const data = bufferUtil.concat(\n        this._inflate[kBuffers],\n        this._inflate[kTotalLength]\n      );\n\n      if (this._inflate._readableState.endEmitted) {\n        this._inflate.close();\n        this._inflate = null;\n      } else {\n        this._inflate[kTotalLength] = 0;\n        this._inflate[kBuffers] = [];\n\n        if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n          this._inflate.reset();\n        }\n      }\n\n      callback(null, data);\n    });\n  }\n\n  /**\n   * Compress data.\n   *\n   * @param {(Buffer|String)} data Data to compress\n   * @param {Boolean} fin Specifies whether or not this is the last fragment\n   * @param {Function} callback Callback\n   * @private\n   */\n  _compress(data, fin, callback) {\n    const endpoint = this._isServer ? 'server' : 'client';\n\n    if (!this._deflate) {\n      const key = `${endpoint}_max_window_bits`;\n      const windowBits =\n        typeof this.params[key] !== 'number'\n          ? zlib.Z_DEFAULT_WINDOWBITS\n          : this.params[key];\n\n      this._deflate = zlib.createDeflateRaw({\n        ...this._options.zlibDeflateOptions,\n        windowBits\n      });\n\n      this._deflate[kTotalLength] = 0;\n      this._deflate[kBuffers] = [];\n\n      this._deflate.on('data', deflateOnData);\n    }\n\n    this._deflate[kCallback] = callback;\n\n    this._deflate.write(data);\n    this._deflate.flush(zlib.Z_SYNC_FLUSH, () => {\n      if (!this._deflate) {\n        //\n        // The deflate stream was closed while data was being processed.\n        //\n        return;\n      }\n\n      let data = bufferUtil.concat(\n        this._deflate[kBuffers],\n        this._deflate[kTotalLength]\n      );\n\n      if (fin) {\n        data = new FastBuffer(data.buffer, data.byteOffset, data.length - 4);\n      }\n\n      //\n      // Ensure that the callback will not be called again in\n      // `PerMessageDeflate#cleanup()`.\n      //\n      this._deflate[kCallback] = null;\n\n      this._deflate[kTotalLength] = 0;\n      this._deflate[kBuffers] = [];\n\n      if (fin && this.params[`${endpoint}_no_context_takeover`]) {\n        this._deflate.reset();\n      }\n\n      callback(null, data);\n    });\n  }\n}\n\nmodule.exports = PerMessageDeflate;\n\n/**\n * The listener of the `zlib.DeflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction deflateOnData(chunk) {\n  this[kBuffers].push(chunk);\n  this[kTotalLength] += chunk.length;\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction inflateOnData(chunk) {\n  this[kTotalLength] += chunk.length;\n\n  if (\n    this[kPerMessageDeflate]._maxPayload < 1 ||\n    this[kTotalLength] <= this[kPerMessageDeflate]._maxPayload\n  ) {\n    this[kBuffers].push(chunk);\n    return;\n  }\n\n  this[kError] = new RangeError('Max payload size exceeded');\n  this[kError].code = 'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH';\n  this[kError][kStatusCode] = 1009;\n  this.removeListener('data', inflateOnData);\n\n  //\n  // The choice to employ `zlib.reset()` over `zlib.close()` is dictated by the\n  // fact that in Node.js versions prior to 13.10.0, the callback for\n  // `zlib.flush()` is not called if `zlib.close()` is used. Utilizing\n  // `zlib.reset()` ensures that either the callback is invoked or an error is\n  // emitted.\n  //\n  this.reset();\n}\n\n/**\n * The listener of the `zlib.InflateRaw` stream `'error'` event.\n *\n * @param {Error} err The emitted error\n * @private\n */\nfunction inflateOnError(err) {\n  //\n  // There is no need to call `Zlib#close()` as the handle is automatically\n  // closed when an error is emitted.\n  //\n  this[kPerMessageDeflate]._inflate = null;\n\n  if (this[kError]) {\n    this[kCallback](this[kError]);\n    return;\n  }\n\n  err[kStatusCode] = 1007;\n  this[kCallback](err);\n}\n", "'use strict';\n\nconst { isUtf8 } = require('buffer');\n\nconst { hasBlob } = require('./constants');\n\n//\n// Allowed token characters:\n//\n// '!', '#', '$', '%', '&', ''', '*', '+', '-',\n// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'\n//\n// tokenChars[32] === 0 // ' '\n// tokenChars[33] === 1 // '!'\n// tokenChars[34] === 0 // '\"'\n// ...\n//\n// prettier-ignore\nconst tokenChars = [\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31\n  0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63\n  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127\n];\n\n/**\n * Checks if a status code is allowed in a close frame.\n *\n * @param {Number} code The status code\n * @return {Boolean} `true` if the status code is valid, else `false`\n * @public\n */\nfunction isValidStatusCode(code) {\n  return (\n    (code >= 1000 &&\n      code <= 1014 &&\n      code !== 1004 &&\n      code !== 1005 &&\n      code !== 1006) ||\n    (code >= 3000 && code <= 4999)\n  );\n}\n\n/**\n * Checks if a given buffer contains only correct UTF-8.\n * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by\n * Markus Kuhn.\n *\n * @param {Buffer} buf The buffer to check\n * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`\n * @public\n */\nfunction _isValidUTF8(buf) {\n  const len = buf.length;\n  let i = 0;\n\n  while (i < len) {\n    if ((buf[i] & 0x80) === 0) {\n      // 0xxxxxxx\n      i++;\n    } else if ((buf[i] & 0xe0) === 0xc0) {\n      // 110xxxxx 10xxxxxx\n      if (\n        i + 1 === len ||\n        (buf[i + 1] & 0xc0) !== 0x80 ||\n        (buf[i] & 0xfe) === 0xc0 // Overlong\n      ) {\n        return false;\n      }\n\n      i += 2;\n    } else if ((buf[i] & 0xf0) === 0xe0) {\n      // 1110xxxx 10xxxxxx 10xxxxxx\n      if (\n        i + 2 >= len ||\n        (buf[i + 1] & 0xc0) !== 0x80 ||\n        (buf[i + 2] & 0xc0) !== 0x80 ||\n        (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong\n        (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)\n      ) {\n        return false;\n      }\n\n      i += 3;\n    } else if ((buf[i] & 0xf8) === 0xf0) {\n      // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx\n      if (\n        i + 3 >= len ||\n        (buf[i + 1] & 0xc0) !== 0x80 ||\n        (buf[i + 2] & 0xc0) !== 0x80 ||\n        (buf[i + 3] & 0xc0) !== 0x80 ||\n        (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong\n        (buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||\n        buf[i] > 0xf4 // > U+10FFFF\n      ) {\n        return false;\n      }\n\n      i += 4;\n    } else {\n      return false;\n    }\n  }\n\n  return true;\n}\n\n/**\n * Determines whether a value is a `Blob`.\n *\n * @param {*} value The value to be tested\n * @return {Boolean} `true` if `value` is a `Blob`, else `false`\n * @private\n */\nfunction isBlob(value) {\n  return (\n    hasBlob &&\n    typeof value === 'object' &&\n    typeof value.arrayBuffer === 'function' &&\n    typeof value.type === 'string' &&\n    typeof value.stream === 'function' &&\n    (value[Symbol.toStringTag] === 'Blob' ||\n      value[Symbol.toStringTag] === 'File')\n  );\n}\n\nmodule.exports = {\n  isBlob,\n  isValidStatusCode,\n  isValidUTF8: _isValidUTF8,\n  tokenChars\n};\n\nif (isUtf8) {\n  module.exports.isValidUTF8 = function (buf) {\n    return buf.length < 24 ? _isValidUTF8(buf) : isUtf8(buf);\n  };\n} /* istanbul ignore else  */ else if (!process.env.WS_NO_UTF_8_VALIDATE) {\n  try {\n    const isValidUTF8 = require('utf-8-validate');\n\n    module.exports.isValidUTF8 = function (buf) {\n      return buf.length < 32 ? _isValidUTF8(buf) : isValidUTF8(buf);\n    };\n  } catch (e) {\n    // Continue regardless of the error.\n  }\n}\n", "'use strict';\n\nconst { Writable } = require('stream');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst {\n  BINARY_TYPES,\n  EMPTY_BUFFER,\n  kStatusCode,\n  kWebSocket\n} = require('./constants');\nconst { concat, toArrayBuffer, unmask } = require('./buffer-util');\nconst { isValidStatusCode, isValidUTF8 } = require('./validation');\n\nconst FastBuffer = Buffer[Symbol.species];\n\nconst GET_INFO = 0;\nconst GET_PAYLOAD_LENGTH_16 = 1;\nconst GET_PAYLOAD_LENGTH_64 = 2;\nconst GET_MASK = 3;\nconst GET_DATA = 4;\nconst INFLATING = 5;\nconst DEFER_EVENT = 6;\n\n/**\n * HyBi Receiver implementation.\n *\n * @extends Writable\n */\nclass Receiver extends Writable {\n  /**\n   * Creates a Receiver instance.\n   *\n   * @param {Object} [options] Options object\n   * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n   *     any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n   *     multiple times in the same tick\n   * @param {String} [options.binaryType=nodebuffer] The type for binary data\n   * @param {Object} [options.extensions] An object containing the negotiated\n   *     extensions\n   * @param {Boolean} [options.isServer=false] Specifies whether to operate in\n   *     client or server mode\n   * @param {Number} [options.maxPayload=0] The maximum allowed message length\n   * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n   *     not to skip UTF-8 validation for text and close messages\n   */\n  constructor(options = {}) {\n    super();\n\n    this._allowSynchronousEvents =\n      options.allowSynchronousEvents !== undefined\n        ? options.allowSynchronousEvents\n        : true;\n    this._binaryType = options.binaryType || BINARY_TYPES[0];\n    this._extensions = options.extensions || {};\n    this._isServer = !!options.isServer;\n    this._maxPayload = options.maxPayload | 0;\n    this._skipUTF8Validation = !!options.skipUTF8Validation;\n    this[kWebSocket] = undefined;\n\n    this._bufferedBytes = 0;\n    this._buffers = [];\n\n    this._compressed = false;\n    this._payloadLength = 0;\n    this._mask = undefined;\n    this._fragmented = 0;\n    this._masked = false;\n    this._fin = false;\n    this._opcode = 0;\n\n    this._totalPayloadLength = 0;\n    this._messageLength = 0;\n    this._fragments = [];\n\n    this._errored = false;\n    this._loop = false;\n    this._state = GET_INFO;\n  }\n\n  /**\n   * Implements `Writable.prototype._write()`.\n   *\n   * @param {Buffer} chunk The chunk of data to write\n   * @param {String} encoding The character encoding of `chunk`\n   * @param {Function} cb Callback\n   * @private\n   */\n  _write(chunk, encoding, cb) {\n    if (this._opcode === 0x08 && this._state == GET_INFO) return cb();\n\n    this._bufferedBytes += chunk.length;\n    this._buffers.push(chunk);\n    this.startLoop(cb);\n  }\n\n  /**\n   * Consumes `n` bytes from the buffered data.\n   *\n   * @param {Number} n The number of bytes to consume\n   * @return {Buffer} The consumed bytes\n   * @private\n   */\n  consume(n) {\n    this._bufferedBytes -= n;\n\n    if (n === this._buffers[0].length) return this._buffers.shift();\n\n    if (n < this._buffers[0].length) {\n      const buf = this._buffers[0];\n      this._buffers[0] = new FastBuffer(\n        buf.buffer,\n        buf.byteOffset + n,\n        buf.length - n\n      );\n\n      return new FastBuffer(buf.buffer, buf.byteOffset, n);\n    }\n\n    const dst = Buffer.allocUnsafe(n);\n\n    do {\n      const buf = this._buffers[0];\n      const offset = dst.length - n;\n\n      if (n >= buf.length) {\n        dst.set(this._buffers.shift(), offset);\n      } else {\n        dst.set(new Uint8Array(buf.buffer, buf.byteOffset, n), offset);\n        this._buffers[0] = new FastBuffer(\n          buf.buffer,\n          buf.byteOffset + n,\n          buf.length - n\n        );\n      }\n\n      n -= buf.length;\n    } while (n > 0);\n\n    return dst;\n  }\n\n  /**\n   * Starts the parsing loop.\n   *\n   * @param {Function} cb Callback\n   * @private\n   */\n  startLoop(cb) {\n    this._loop = true;\n\n    do {\n      switch (this._state) {\n        case GET_INFO:\n          this.getInfo(cb);\n          break;\n        case GET_PAYLOAD_LENGTH_16:\n          this.getPayloadLength16(cb);\n          break;\n        case GET_PAYLOAD_LENGTH_64:\n          this.getPayloadLength64(cb);\n          break;\n        case GET_MASK:\n          this.getMask();\n          break;\n        case GET_DATA:\n          this.getData(cb);\n          break;\n        case INFLATING:\n        case DEFER_EVENT:\n          this._loop = false;\n          return;\n      }\n    } while (this._loop);\n\n    if (!this._errored) cb();\n  }\n\n  /**\n   * Reads the first two bytes of a frame.\n   *\n   * @param {Function} cb Callback\n   * @private\n   */\n  getInfo(cb) {\n    if (this._bufferedBytes < 2) {\n      this._loop = false;\n      return;\n    }\n\n    const buf = this.consume(2);\n\n    if ((buf[0] & 0x30) !== 0x00) {\n      const error = this.createError(\n        RangeError,\n        'RSV2 and RSV3 must be clear',\n        true,\n        1002,\n        'WS_ERR_UNEXPECTED_RSV_2_3'\n      );\n\n      cb(error);\n      return;\n    }\n\n    const compressed = (buf[0] & 0x40) === 0x40;\n\n    if (compressed && !this._extensions[PerMessageDeflate.extensionName]) {\n      const error = this.createError(\n        RangeError,\n        'RSV1 must be clear',\n        true,\n        1002,\n        'WS_ERR_UNEXPECTED_RSV_1'\n      );\n\n      cb(error);\n      return;\n    }\n\n    this._fin = (buf[0] & 0x80) === 0x80;\n    this._opcode = buf[0] & 0x0f;\n    this._payloadLength = buf[1] & 0x7f;\n\n    if (this._opcode === 0x00) {\n      if (compressed) {\n        const error = this.createError(\n          RangeError,\n          'RSV1 must be clear',\n          true,\n          1002,\n          'WS_ERR_UNEXPECTED_RSV_1'\n        );\n\n        cb(error);\n        return;\n      }\n\n      if (!this._fragmented) {\n        const error = this.createError(\n          RangeError,\n          'invalid opcode 0',\n          true,\n          1002,\n          'WS_ERR_INVALID_OPCODE'\n        );\n\n        cb(error);\n        return;\n      }\n\n      this._opcode = this._fragmented;\n    } else if (this._opcode === 0x01 || this._opcode === 0x02) {\n      if (this._fragmented) {\n        const error = this.createError(\n          RangeError,\n          `invalid opcode ${this._opcode}`,\n          true,\n          1002,\n          'WS_ERR_INVALID_OPCODE'\n        );\n\n        cb(error);\n        return;\n      }\n\n      this._compressed = compressed;\n    } else if (this._opcode > 0x07 && this._opcode < 0x0b) {\n      if (!this._fin) {\n        const error = this.createError(\n          RangeError,\n          'FIN must be set',\n          true,\n          1002,\n          'WS_ERR_EXPECTED_FIN'\n        );\n\n        cb(error);\n        return;\n      }\n\n      if (compressed) {\n        const error = this.createError(\n          RangeError,\n          'RSV1 must be clear',\n          true,\n          1002,\n          'WS_ERR_UNEXPECTED_RSV_1'\n        );\n\n        cb(error);\n        return;\n      }\n\n      if (\n        this._payloadLength > 0x7d ||\n        (this._opcode === 0x08 && this._payloadLength === 1)\n      ) {\n        const error = this.createError(\n          RangeError,\n          `invalid payload length ${this._payloadLength}`,\n          true,\n          1002,\n          'WS_ERR_INVALID_CONTROL_PAYLOAD_LENGTH'\n        );\n\n        cb(error);\n        return;\n      }\n    } else {\n      const error = this.createError(\n        RangeError,\n        `invalid opcode ${this._opcode}`,\n        true,\n        1002,\n        'WS_ERR_INVALID_OPCODE'\n      );\n\n      cb(error);\n      return;\n    }\n\n    if (!this._fin && !this._fragmented) this._fragmented = this._opcode;\n    this._masked = (buf[1] & 0x80) === 0x80;\n\n    if (this._isServer) {\n      if (!this._masked) {\n        const error = this.createError(\n          RangeError,\n          'MASK must be set',\n          true,\n          1002,\n          'WS_ERR_EXPECTED_MASK'\n        );\n\n        cb(error);\n        return;\n      }\n    } else if (this._masked) {\n      const error = this.createError(\n        RangeError,\n        'MASK must be clear',\n        true,\n        1002,\n        'WS_ERR_UNEXPECTED_MASK'\n      );\n\n      cb(error);\n      return;\n    }\n\n    if (this._payloadLength === 126) this._state = GET_PAYLOAD_LENGTH_16;\n    else if (this._payloadLength === 127) this._state = GET_PAYLOAD_LENGTH_64;\n    else this.haveLength(cb);\n  }\n\n  /**\n   * Gets extended payload length (7+16).\n   *\n   * @param {Function} cb Callback\n   * @private\n   */\n  getPayloadLength16(cb) {\n    if (this._bufferedBytes < 2) {\n      this._loop = false;\n      return;\n    }\n\n    this._payloadLength = this.consume(2).readUInt16BE(0);\n    this.haveLength(cb);\n  }\n\n  /**\n   * Gets extended payload length (7+64).\n   *\n   * @param {Function} cb Callback\n   * @private\n   */\n  getPayloadLength64(cb) {\n    if (this._bufferedBytes < 8) {\n      this._loop = false;\n      return;\n    }\n\n    const buf = this.consume(8);\n    const num = buf.readUInt32BE(0);\n\n    //\n    // The maximum safe integer in JavaScript is 2^53 - 1. An error is returned\n    // if payload length is greater than this number.\n    //\n    if (num > Math.pow(2, 53 - 32) - 1) {\n      const error = this.createError(\n        RangeError,\n        'Unsupported WebSocket frame: payload length > 2^53 - 1',\n        false,\n        1009,\n        'WS_ERR_UNSUPPORTED_DATA_PAYLOAD_LENGTH'\n      );\n\n      cb(error);\n      return;\n    }\n\n    this._payloadLength = num * Math.pow(2, 32) + buf.readUInt32BE(4);\n    this.haveLength(cb);\n  }\n\n  /**\n   * Payload length has been read.\n   *\n   * @param {Function} cb Callback\n   * @private\n   */\n  haveLength(cb) {\n    if (this._payloadLength && this._opcode < 0x08) {\n      this._totalPayloadLength += this._payloadLength;\n      if (this._totalPayloadLength > this._maxPayload && this._maxPayload > 0) {\n        const error = this.createError(\n          RangeError,\n          'Max payload size exceeded',\n          false,\n          1009,\n          'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n        );\n\n        cb(error);\n        return;\n      }\n    }\n\n    if (this._masked) this._state = GET_MASK;\n    else this._state = GET_DATA;\n  }\n\n  /**\n   * Reads mask bytes.\n   *\n   * @private\n   */\n  getMask() {\n    if (this._bufferedBytes < 4) {\n      this._loop = false;\n      return;\n    }\n\n    this._mask = this.consume(4);\n    this._state = GET_DATA;\n  }\n\n  /**\n   * Reads data bytes.\n   *\n   * @param {Function} cb Callback\n   * @private\n   */\n  getData(cb) {\n    let data = EMPTY_BUFFER;\n\n    if (this._payloadLength) {\n      if (this._bufferedBytes < this._payloadLength) {\n        this._loop = false;\n        return;\n      }\n\n      data = this.consume(this._payloadLength);\n\n      if (\n        this._masked &&\n        (this._mask[0] | this._mask[1] | this._mask[2] | this._mask[3]) !== 0\n      ) {\n        unmask(data, this._mask);\n      }\n    }\n\n    if (this._opcode > 0x07) {\n      this.controlMessage(data, cb);\n      return;\n    }\n\n    if (this._compressed) {\n      this._state = INFLATING;\n      this.decompress(data, cb);\n      return;\n    }\n\n    if (data.length) {\n      //\n      // This message is not compressed so its length is the sum of the payload\n      // length of all fragments.\n      //\n      this._messageLength = this._totalPayloadLength;\n      this._fragments.push(data);\n    }\n\n    this.dataMessage(cb);\n  }\n\n  /**\n   * Decompresses data.\n   *\n   * @param {Buffer} data Compressed data\n   * @param {Function} cb Callback\n   * @private\n   */\n  decompress(data, cb) {\n    const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n    perMessageDeflate.decompress(data, this._fin, (err, buf) => {\n      if (err) return cb(err);\n\n      if (buf.length) {\n        this._messageLength += buf.length;\n        if (this._messageLength > this._maxPayload && this._maxPayload > 0) {\n          const error = this.createError(\n            RangeError,\n            'Max payload size exceeded',\n            false,\n            1009,\n            'WS_ERR_UNSUPPORTED_MESSAGE_LENGTH'\n          );\n\n          cb(error);\n          return;\n        }\n\n        this._fragments.push(buf);\n      }\n\n      this.dataMessage(cb);\n      if (this._state === GET_INFO) this.startLoop(cb);\n    });\n  }\n\n  /**\n   * Handles a data message.\n   *\n   * @param {Function} cb Callback\n   * @private\n   */\n  dataMessage(cb) {\n    if (!this._fin) {\n      this._state = GET_INFO;\n      return;\n    }\n\n    const messageLength = this._messageLength;\n    const fragments = this._fragments;\n\n    this._totalPayloadLength = 0;\n    this._messageLength = 0;\n    this._fragmented = 0;\n    this._fragments = [];\n\n    if (this._opcode === 2) {\n      let data;\n\n      if (this._binaryType === 'nodebuffer') {\n        data = concat(fragments, messageLength);\n      } else if (this._binaryType === 'arraybuffer') {\n        data = toArrayBuffer(concat(fragments, messageLength));\n      } else if (this._binaryType === 'blob') {\n        data = new Blob(fragments);\n      } else {\n        data = fragments;\n      }\n\n      if (this._allowSynchronousEvents) {\n        this.emit('message', data, true);\n        this._state = GET_INFO;\n      } else {\n        this._state = DEFER_EVENT;\n        setImmediate(() => {\n          this.emit('message', data, true);\n          this._state = GET_INFO;\n          this.startLoop(cb);\n        });\n      }\n    } else {\n      const buf = concat(fragments, messageLength);\n\n      if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n        const error = this.createError(\n          Error,\n          'invalid UTF-8 sequence',\n          true,\n          1007,\n          'WS_ERR_INVALID_UTF8'\n        );\n\n        cb(error);\n        return;\n      }\n\n      if (this._state === INFLATING || this._allowSynchronousEvents) {\n        this.emit('message', buf, false);\n        this._state = GET_INFO;\n      } else {\n        this._state = DEFER_EVENT;\n        setImmediate(() => {\n          this.emit('message', buf, false);\n          this._state = GET_INFO;\n          this.startLoop(cb);\n        });\n      }\n    }\n  }\n\n  /**\n   * Handles a control message.\n   *\n   * @param {Buffer} data Data to handle\n   * @return {(Error|RangeError|undefined)} A possible error\n   * @private\n   */\n  controlMessage(data, cb) {\n    if (this._opcode === 0x08) {\n      if (data.length === 0) {\n        this._loop = false;\n        this.emit('conclude', 1005, EMPTY_BUFFER);\n        this.end();\n      } else {\n        const code = data.readUInt16BE(0);\n\n        if (!isValidStatusCode(code)) {\n          const error = this.createError(\n            RangeError,\n            `invalid status code ${code}`,\n            true,\n            1002,\n            'WS_ERR_INVALID_CLOSE_CODE'\n          );\n\n          cb(error);\n          return;\n        }\n\n        const buf = new FastBuffer(\n          data.buffer,\n          data.byteOffset + 2,\n          data.length - 2\n        );\n\n        if (!this._skipUTF8Validation && !isValidUTF8(buf)) {\n          const error = this.createError(\n            Error,\n            'invalid UTF-8 sequence',\n            true,\n            1007,\n            'WS_ERR_INVALID_UTF8'\n          );\n\n          cb(error);\n          return;\n        }\n\n        this._loop = false;\n        this.emit('conclude', code, buf);\n        this.end();\n      }\n\n      this._state = GET_INFO;\n      return;\n    }\n\n    if (this._allowSynchronousEvents) {\n      this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n      this._state = GET_INFO;\n    } else {\n      this._state = DEFER_EVENT;\n      setImmediate(() => {\n        this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);\n        this._state = GET_INFO;\n        this.startLoop(cb);\n      });\n    }\n  }\n\n  /**\n   * Builds an error object.\n   *\n   * @param {function(new:Error|RangeError)} ErrorCtor The error constructor\n   * @param {String} message The error message\n   * @param {Boolean} prefix Specifies whether or not to add a default prefix to\n   *     `message`\n   * @param {Number} statusCode The status code\n   * @param {String} errorCode The exposed error code\n   * @return {(Error|RangeError)} The error\n   * @private\n   */\n  createError(ErrorCtor, message, prefix, statusCode, errorCode) {\n    this._loop = false;\n    this._errored = true;\n\n    const err = new ErrorCtor(\n      prefix ? `Invalid WebSocket frame: ${message}` : message\n    );\n\n    Error.captureStackTrace(err, this.createError);\n    err.code = errorCode;\n    err[kStatusCode] = statusCode;\n    return err;\n  }\n}\n\nmodule.exports = Receiver;\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex\" }] */\n\n'use strict';\n\nconst { Duplex } = require('stream');\nconst { randomFillSync } = require('crypto');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst { EMPTY_BUFFER, kWebSocket, NOOP } = require('./constants');\nconst { isBlob, isValidStatusCode } = require('./validation');\nconst { mask: applyMask, toBuffer } = require('./buffer-util');\n\nconst kByteLength = Symbol('kByteLength');\nconst maskBuffer = Buffer.alloc(4);\nconst RANDOM_POOL_SIZE = 8 * 1024;\nlet randomPool;\nlet randomPoolPointer = RANDOM_POOL_SIZE;\n\nconst DEFAULT = 0;\nconst DEFLATING = 1;\nconst GET_BLOB_DATA = 2;\n\n/**\n * HyBi Sender implementation.\n */\nclass Sender {\n  /**\n   * Creates a Sender instance.\n   *\n   * @param {Duplex} socket The connection socket\n   * @param {Object} [extensions] An object containing the negotiated extensions\n   * @param {Function} [generateMask] The function used to generate the masking\n   *     key\n   */\n  constructor(socket, extensions, generateMask) {\n    this._extensions = extensions || {};\n\n    if (generateMask) {\n      this._generateMask = generateMask;\n      this._maskBuffer = Buffer.alloc(4);\n    }\n\n    this._socket = socket;\n\n    this._firstFragment = true;\n    this._compress = false;\n\n    this._bufferedBytes = 0;\n    this._queue = [];\n    this._state = DEFAULT;\n    this.onerror = NOOP;\n    this[kWebSocket] = undefined;\n  }\n\n  /**\n   * Frames a piece of data according to the HyBi WebSocket protocol.\n   *\n   * @param {(Buffer|String)} data The data to frame\n   * @param {Object} options Options object\n   * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n   *     FIN bit\n   * @param {Function} [options.generateMask] The function used to generate the\n   *     masking key\n   * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n   *     `data`\n   * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n   *     key\n   * @param {Number} options.opcode The opcode\n   * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n   *     modified\n   * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n   *     RSV1 bit\n   * @return {(Buffer|String)[]} The framed data\n   * @public\n   */\n  static frame(data, options) {\n    let mask;\n    let merge = false;\n    let offset = 2;\n    let skipMasking = false;\n\n    if (options.mask) {\n      mask = options.maskBuffer || maskBuffer;\n\n      if (options.generateMask) {\n        options.generateMask(mask);\n      } else {\n        if (randomPoolPointer === RANDOM_POOL_SIZE) {\n          /* istanbul ignore else  */\n          if (randomPool === undefined) {\n            //\n            // This is lazily initialized because server-sent frames must not\n            // be masked so it may never be used.\n            //\n            randomPool = Buffer.alloc(RANDOM_POOL_SIZE);\n          }\n\n          randomFillSync(randomPool, 0, RANDOM_POOL_SIZE);\n          randomPoolPointer = 0;\n        }\n\n        mask[0] = randomPool[randomPoolPointer++];\n        mask[1] = randomPool[randomPoolPointer++];\n        mask[2] = randomPool[randomPoolPointer++];\n        mask[3] = randomPool[randomPoolPointer++];\n      }\n\n      skipMasking = (mask[0] | mask[1] | mask[2] | mask[3]) === 0;\n      offset = 6;\n    }\n\n    let dataLength;\n\n    if (typeof data === 'string') {\n      if (\n        (!options.mask || skipMasking) &&\n        options[kByteLength] !== undefined\n      ) {\n        dataLength = options[kByteLength];\n      } else {\n        data = Buffer.from(data);\n        dataLength = data.length;\n      }\n    } else {\n      dataLength = data.length;\n      merge = options.mask && options.readOnly && !skipMasking;\n    }\n\n    let payloadLength = dataLength;\n\n    if (dataLength >= 65536) {\n      offset += 8;\n      payloadLength = 127;\n    } else if (dataLength > 125) {\n      offset += 2;\n      payloadLength = 126;\n    }\n\n    const target = Buffer.allocUnsafe(merge ? dataLength + offset : offset);\n\n    target[0] = options.fin ? options.opcode | 0x80 : options.opcode;\n    if (options.rsv1) target[0] |= 0x40;\n\n    target[1] = payloadLength;\n\n    if (payloadLength === 126) {\n      target.writeUInt16BE(dataLength, 2);\n    } else if (payloadLength === 127) {\n      target[2] = target[3] = 0;\n      target.writeUIntBE(dataLength, 4, 6);\n    }\n\n    if (!options.mask) return [target, data];\n\n    target[1] |= 0x80;\n    target[offset - 4] = mask[0];\n    target[offset - 3] = mask[1];\n    target[offset - 2] = mask[2];\n    target[offset - 1] = mask[3];\n\n    if (skipMasking) return [target, data];\n\n    if (merge) {\n      applyMask(data, mask, target, offset, dataLength);\n      return [target];\n    }\n\n    applyMask(data, mask, data, 0, dataLength);\n    return [target, data];\n  }\n\n  /**\n   * Sends a close message to the other peer.\n   *\n   * @param {Number} [code] The status code component of the body\n   * @param {(String|Buffer)} [data] The message component of the body\n   * @param {Boolean} [mask=false] Specifies whether or not to mask the message\n   * @param {Function} [cb] Callback\n   * @public\n   */\n  close(code, data, mask, cb) {\n    let buf;\n\n    if (code === undefined) {\n      buf = EMPTY_BUFFER;\n    } else if (typeof code !== 'number' || !isValidStatusCode(code)) {\n      throw new TypeError('First argument must be a valid error code number');\n    } else if (data === undefined || !data.length) {\n      buf = Buffer.allocUnsafe(2);\n      buf.writeUInt16BE(code, 0);\n    } else {\n      const length = Buffer.byteLength(data);\n\n      if (length > 123) {\n        throw new RangeError('The message must not be greater than 123 bytes');\n      }\n\n      buf = Buffer.allocUnsafe(2 + length);\n      buf.writeUInt16BE(code, 0);\n\n      if (typeof data === 'string') {\n        buf.write(data, 2);\n      } else {\n        buf.set(data, 2);\n      }\n    }\n\n    const options = {\n      [kByteLength]: buf.length,\n      fin: true,\n      generateMask: this._generateMask,\n      mask,\n      maskBuffer: this._maskBuffer,\n      opcode: 0x08,\n      readOnly: false,\n      rsv1: false\n    };\n\n    if (this._state !== DEFAULT) {\n      this.enqueue([this.dispatch, buf, false, options, cb]);\n    } else {\n      this.sendFrame(Sender.frame(buf, options), cb);\n    }\n  }\n\n  /**\n   * Sends a ping message to the other peer.\n   *\n   * @param {*} data The message to send\n   * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n   * @param {Function} [cb] Callback\n   * @public\n   */\n  ping(data, mask, cb) {\n    let byteLength;\n    let readOnly;\n\n    if (typeof data === 'string') {\n      byteLength = Buffer.byteLength(data);\n      readOnly = false;\n    } else if (isBlob(data)) {\n      byteLength = data.size;\n      readOnly = false;\n    } else {\n      data = toBuffer(data);\n      byteLength = data.length;\n      readOnly = toBuffer.readOnly;\n    }\n\n    if (byteLength > 125) {\n      throw new RangeError('The data size must not be greater than 125 bytes');\n    }\n\n    const options = {\n      [kByteLength]: byteLength,\n      fin: true,\n      generateMask: this._generateMask,\n      mask,\n      maskBuffer: this._maskBuffer,\n      opcode: 0x09,\n      readOnly,\n      rsv1: false\n    };\n\n    if (isBlob(data)) {\n      if (this._state !== DEFAULT) {\n        this.enqueue([this.getBlobData, data, false, options, cb]);\n      } else {\n        this.getBlobData(data, false, options, cb);\n      }\n    } else if (this._state !== DEFAULT) {\n      this.enqueue([this.dispatch, data, false, options, cb]);\n    } else {\n      this.sendFrame(Sender.frame(data, options), cb);\n    }\n  }\n\n  /**\n   * Sends a pong message to the other peer.\n   *\n   * @param {*} data The message to send\n   * @param {Boolean} [mask=false] Specifies whether or not to mask `data`\n   * @param {Function} [cb] Callback\n   * @public\n   */\n  pong(data, mask, cb) {\n    let byteLength;\n    let readOnly;\n\n    if (typeof data === 'string') {\n      byteLength = Buffer.byteLength(data);\n      readOnly = false;\n    } else if (isBlob(data)) {\n      byteLength = data.size;\n      readOnly = false;\n    } else {\n      data = toBuffer(data);\n      byteLength = data.length;\n      readOnly = toBuffer.readOnly;\n    }\n\n    if (byteLength > 125) {\n      throw new RangeError('The data size must not be greater than 125 bytes');\n    }\n\n    const options = {\n      [kByteLength]: byteLength,\n      fin: true,\n      generateMask: this._generateMask,\n      mask,\n      maskBuffer: this._maskBuffer,\n      opcode: 0x0a,\n      readOnly,\n      rsv1: false\n    };\n\n    if (isBlob(data)) {\n      if (this._state !== DEFAULT) {\n        this.enqueue([this.getBlobData, data, false, options, cb]);\n      } else {\n        this.getBlobData(data, false, options, cb);\n      }\n    } else if (this._state !== DEFAULT) {\n      this.enqueue([this.dispatch, data, false, options, cb]);\n    } else {\n      this.sendFrame(Sender.frame(data, options), cb);\n    }\n  }\n\n  /**\n   * Sends a data message to the other peer.\n   *\n   * @param {*} data The message to send\n   * @param {Object} options Options object\n   * @param {Boolean} [options.binary=false] Specifies whether `data` is binary\n   *     or text\n   * @param {Boolean} [options.compress=false] Specifies whether or not to\n   *     compress `data`\n   * @param {Boolean} [options.fin=false] Specifies whether the fragment is the\n   *     last one\n   * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n   *     `data`\n   * @param {Function} [cb] Callback\n   * @public\n   */\n  send(data, options, cb) {\n    const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n    let opcode = options.binary ? 2 : 1;\n    let rsv1 = options.compress;\n\n    let byteLength;\n    let readOnly;\n\n    if (typeof data === 'string') {\n      byteLength = Buffer.byteLength(data);\n      readOnly = false;\n    } else if (isBlob(data)) {\n      byteLength = data.size;\n      readOnly = false;\n    } else {\n      data = toBuffer(data);\n      byteLength = data.length;\n      readOnly = toBuffer.readOnly;\n    }\n\n    if (this._firstFragment) {\n      this._firstFragment = false;\n      if (\n        rsv1 &&\n        perMessageDeflate &&\n        perMessageDeflate.params[\n          perMessageDeflate._isServer\n            ? 'server_no_context_takeover'\n            : 'client_no_context_takeover'\n        ]\n      ) {\n        rsv1 = byteLength >= perMessageDeflate._threshold;\n      }\n      this._compress = rsv1;\n    } else {\n      rsv1 = false;\n      opcode = 0;\n    }\n\n    if (options.fin) this._firstFragment = true;\n\n    const opts = {\n      [kByteLength]: byteLength,\n      fin: options.fin,\n      generateMask: this._generateMask,\n      mask: options.mask,\n      maskBuffer: this._maskBuffer,\n      opcode,\n      readOnly,\n      rsv1\n    };\n\n    if (isBlob(data)) {\n      if (this._state !== DEFAULT) {\n        this.enqueue([this.getBlobData, data, this._compress, opts, cb]);\n      } else {\n        this.getBlobData(data, this._compress, opts, cb);\n      }\n    } else if (this._state !== DEFAULT) {\n      this.enqueue([this.dispatch, data, this._compress, opts, cb]);\n    } else {\n      this.dispatch(data, this._compress, opts, cb);\n    }\n  }\n\n  /**\n   * Gets the contents of a blob as binary data.\n   *\n   * @param {Blob} blob The blob\n   * @param {Boolean} [compress=false] Specifies whether or not to compress\n   *     the data\n   * @param {Object} options Options object\n   * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n   *     FIN bit\n   * @param {Function} [options.generateMask] The function used to generate the\n   *     masking key\n   * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n   *     `data`\n   * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n   *     key\n   * @param {Number} options.opcode The opcode\n   * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n   *     modified\n   * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n   *     RSV1 bit\n   * @param {Function} [cb] Callback\n   * @private\n   */\n  getBlobData(blob, compress, options, cb) {\n    this._bufferedBytes += options[kByteLength];\n    this._state = GET_BLOB_DATA;\n\n    blob\n      .arrayBuffer()\n      .then((arrayBuffer) => {\n        if (this._socket.destroyed) {\n          const err = new Error(\n            'The socket was closed while the blob was being read'\n          );\n\n          //\n          // `callCallbacks` is called in the next tick to ensure that errors\n          // that might be thrown in the callbacks behave like errors thrown\n          // outside the promise chain.\n          //\n          process.nextTick(callCallbacks, this, err, cb);\n          return;\n        }\n\n        this._bufferedBytes -= options[kByteLength];\n        const data = toBuffer(arrayBuffer);\n\n        if (!compress) {\n          this._state = DEFAULT;\n          this.sendFrame(Sender.frame(data, options), cb);\n          this.dequeue();\n        } else {\n          this.dispatch(data, compress, options, cb);\n        }\n      })\n      .catch((err) => {\n        //\n        // `onError` is called in the next tick for the same reason that\n        // `callCallbacks` above is.\n        //\n        process.nextTick(onError, this, err, cb);\n      });\n  }\n\n  /**\n   * Dispatches a message.\n   *\n   * @param {(Buffer|String)} data The message to send\n   * @param {Boolean} [compress=false] Specifies whether or not to compress\n   *     `data`\n   * @param {Object} options Options object\n   * @param {Boolean} [options.fin=false] Specifies whether or not to set the\n   *     FIN bit\n   * @param {Function} [options.generateMask] The function used to generate the\n   *     masking key\n   * @param {Boolean} [options.mask=false] Specifies whether or not to mask\n   *     `data`\n   * @param {Buffer} [options.maskBuffer] The buffer used to store the masking\n   *     key\n   * @param {Number} options.opcode The opcode\n   * @param {Boolean} [options.readOnly=false] Specifies whether `data` can be\n   *     modified\n   * @param {Boolean} [options.rsv1=false] Specifies whether or not to set the\n   *     RSV1 bit\n   * @param {Function} [cb] Callback\n   * @private\n   */\n  dispatch(data, compress, options, cb) {\n    if (!compress) {\n      this.sendFrame(Sender.frame(data, options), cb);\n      return;\n    }\n\n    const perMessageDeflate = this._extensions[PerMessageDeflate.extensionName];\n\n    this._bufferedBytes += options[kByteLength];\n    this._state = DEFLATING;\n    perMessageDeflate.compress(data, options.fin, (_, buf) => {\n      if (this._socket.destroyed) {\n        const err = new Error(\n          'The socket was closed while data was being compressed'\n        );\n\n        callCallbacks(this, err, cb);\n        return;\n      }\n\n      this._bufferedBytes -= options[kByteLength];\n      this._state = DEFAULT;\n      options.readOnly = false;\n      this.sendFrame(Sender.frame(buf, options), cb);\n      this.dequeue();\n    });\n  }\n\n  /**\n   * Executes queued send operations.\n   *\n   * @private\n   */\n  dequeue() {\n    while (this._state === DEFAULT && this._queue.length) {\n      const params = this._queue.shift();\n\n      this._bufferedBytes -= params[3][kByteLength];\n      Reflect.apply(params[0], this, params.slice(1));\n    }\n  }\n\n  /**\n   * Enqueues a send operation.\n   *\n   * @param {Array} params Send operation parameters.\n   * @private\n   */\n  enqueue(params) {\n    this._bufferedBytes += params[3][kByteLength];\n    this._queue.push(params);\n  }\n\n  /**\n   * Sends a frame.\n   *\n   * @param {(Buffer | String)[]} list The frame to send\n   * @param {Function} [cb] Callback\n   * @private\n   */\n  sendFrame(list, cb) {\n    if (list.length === 2) {\n      this._socket.cork();\n      this._socket.write(list[0]);\n      this._socket.write(list[1], cb);\n      this._socket.uncork();\n    } else {\n      this._socket.write(list[0], cb);\n    }\n  }\n}\n\nmodule.exports = Sender;\n\n/**\n * Calls queued callbacks with an error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error to call the callbacks with\n * @param {Function} [cb] The first callback\n * @private\n */\nfunction callCallbacks(sender, err, cb) {\n  if (typeof cb === 'function') cb(err);\n\n  for (let i = 0; i < sender._queue.length; i++) {\n    const params = sender._queue[i];\n    const callback = params[params.length - 1];\n\n    if (typeof callback === 'function') callback(err);\n  }\n}\n\n/**\n * Handles a `Sender` error.\n *\n * @param {Sender} sender The `Sender` instance\n * @param {Error} err The error\n * @param {Function} [cb] The first pending callback\n * @private\n */\nfunction onError(sender, err, cb) {\n  callCallbacks(sender, err, cb);\n  sender.onerror(err);\n}\n", "'use strict';\n\nconst { kForOnEventAttribute, kListener } = require('./constants');\n\nconst kCode = Symbol('kCode');\nconst kData = Symbol('kData');\nconst kError = Symbol('kError');\nconst kMessage = Symbol('kMessage');\nconst kReason = Symbol('kReason');\nconst kTarget = Symbol('kTarget');\nconst kType = Symbol('kType');\nconst kWasClean = Symbol('kWasClean');\n\n/**\n * Class representing an event.\n */\nclass Event {\n  /**\n   * Create a new `Event`.\n   *\n   * @param {String} type The name of the event\n   * @throws {TypeError} If the `type` argument is not specified\n   */\n  constructor(type) {\n    this[kTarget] = null;\n    this[kType] = type;\n  }\n\n  /**\n   * @type {*}\n   */\n  get target() {\n    return this[kTarget];\n  }\n\n  /**\n   * @type {String}\n   */\n  get type() {\n    return this[kType];\n  }\n}\n\nObject.defineProperty(Event.prototype, 'target', { enumerable: true });\nObject.defineProperty(Event.prototype, 'type', { enumerable: true });\n\n/**\n * Class representing a close event.\n *\n * @extends Event\n */\nclass CloseEvent extends Event {\n  /**\n   * Create a new `CloseEvent`.\n   *\n   * @param {String} type The name of the event\n   * @param {Object} [options] A dictionary object that allows for setting\n   *     attributes via object members of the same name\n   * @param {Number} [options.code=0] The status code explaining why the\n   *     connection was closed\n   * @param {String} [options.reason=''] A human-readable string explaining why\n   *     the connection was closed\n   * @param {Boolean} [options.wasClean=false] Indicates whether or not the\n   *     connection was cleanly closed\n   */\n  constructor(type, options = {}) {\n    super(type);\n\n    this[kCode] = options.code === undefined ? 0 : options.code;\n    this[kReason] = options.reason === undefined ? '' : options.reason;\n    this[kWasClean] = options.wasClean === undefined ? false : options.wasClean;\n  }\n\n  /**\n   * @type {Number}\n   */\n  get code() {\n    return this[kCode];\n  }\n\n  /**\n   * @type {String}\n   */\n  get reason() {\n    return this[kReason];\n  }\n\n  /**\n   * @type {Boolean}\n   */\n  get wasClean() {\n    return this[kWasClean];\n  }\n}\n\nObject.defineProperty(CloseEvent.prototype, 'code', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'reason', { enumerable: true });\nObject.defineProperty(CloseEvent.prototype, 'wasClean', { enumerable: true });\n\n/**\n * Class representing an error event.\n *\n * @extends Event\n */\nclass ErrorEvent extends Event {\n  /**\n   * Create a new `ErrorEvent`.\n   *\n   * @param {String} type The name of the event\n   * @param {Object} [options] A dictionary object that allows for setting\n   *     attributes via object members of the same name\n   * @param {*} [options.error=null] The error that generated this event\n   * @param {String} [options.message=''] The error message\n   */\n  constructor(type, options = {}) {\n    super(type);\n\n    this[kError] = options.error === undefined ? null : options.error;\n    this[kMessage] = options.message === undefined ? '' : options.message;\n  }\n\n  /**\n   * @type {*}\n   */\n  get error() {\n    return this[kError];\n  }\n\n  /**\n   * @type {String}\n   */\n  get message() {\n    return this[kMessage];\n  }\n}\n\nObject.defineProperty(ErrorEvent.prototype, 'error', { enumerable: true });\nObject.defineProperty(ErrorEvent.prototype, 'message', { enumerable: true });\n\n/**\n * Class representing a message event.\n *\n * @extends Event\n */\nclass MessageEvent extends Event {\n  /**\n   * Create a new `MessageEvent`.\n   *\n   * @param {String} type The name of the event\n   * @param {Object} [options] A dictionary object that allows for setting\n   *     attributes via object members of the same name\n   * @param {*} [options.data=null] The message content\n   */\n  constructor(type, options = {}) {\n    super(type);\n\n    this[kData] = options.data === undefined ? null : options.data;\n  }\n\n  /**\n   * @type {*}\n   */\n  get data() {\n    return this[kData];\n  }\n}\n\nObject.defineProperty(MessageEvent.prototype, 'data', { enumerable: true });\n\n/**\n * This provides methods for emulating the `EventTarget` interface. It's not\n * meant to be used directly.\n *\n * @mixin\n */\nconst EventTarget = {\n  /**\n   * Register an event listener.\n   *\n   * @param {String} type A string representing the event type to listen for\n   * @param {(Function|Object)} handler The listener to add\n   * @param {Object} [options] An options object specifies characteristics about\n   *     the event listener\n   * @param {Boolean} [options.once=false] A `Boolean` indicating that the\n   *     listener should be invoked at most once after being added. If `true`,\n   *     the listener would be automatically removed when invoked.\n   * @public\n   */\n  addEventListener(type, handler, options = {}) {\n    for (const listener of this.listeners(type)) {\n      if (\n        !options[kForOnEventAttribute] &&\n        listener[kListener] === handler &&\n        !listener[kForOnEventAttribute]\n      ) {\n        return;\n      }\n    }\n\n    let wrapper;\n\n    if (type === 'message') {\n      wrapper = function onMessage(data, isBinary) {\n        const event = new MessageEvent('message', {\n          data: isBinary ? data : data.toString()\n        });\n\n        event[kTarget] = this;\n        callListener(handler, this, event);\n      };\n    } else if (type === 'close') {\n      wrapper = function onClose(code, message) {\n        const event = new CloseEvent('close', {\n          code,\n          reason: message.toString(),\n          wasClean: this._closeFrameReceived && this._closeFrameSent\n        });\n\n        event[kTarget] = this;\n        callListener(handler, this, event);\n      };\n    } else if (type === 'error') {\n      wrapper = function onError(error) {\n        const event = new ErrorEvent('error', {\n          error,\n          message: error.message\n        });\n\n        event[kTarget] = this;\n        callListener(handler, this, event);\n      };\n    } else if (type === 'open') {\n      wrapper = function onOpen() {\n        const event = new Event('open');\n\n        event[kTarget] = this;\n        callListener(handler, this, event);\n      };\n    } else {\n      return;\n    }\n\n    wrapper[kForOnEventAttribute] = !!options[kForOnEventAttribute];\n    wrapper[kListener] = handler;\n\n    if (options.once) {\n      this.once(type, wrapper);\n    } else {\n      this.on(type, wrapper);\n    }\n  },\n\n  /**\n   * Remove an event listener.\n   *\n   * @param {String} type A string representing the event type to remove\n   * @param {(Function|Object)} handler The listener to remove\n   * @public\n   */\n  removeEventListener(type, handler) {\n    for (const listener of this.listeners(type)) {\n      if (listener[kListener] === handler && !listener[kForOnEventAttribute]) {\n        this.removeListener(type, listener);\n        break;\n      }\n    }\n  }\n};\n\nmodule.exports = {\n  CloseEvent,\n  ErrorEvent,\n  Event,\n  EventTarget,\n  MessageEvent\n};\n\n/**\n * Call an event listener\n *\n * @param {(Function|Object)} listener The listener to call\n * @param {*} thisArg The value to use as `this`` when calling the listener\n * @param {Event} event The event to pass to the listener\n * @private\n */\nfunction callListener(listener, thisArg, event) {\n  if (typeof listener === 'object' && listener.handleEvent) {\n    listener.handleEvent.call(listener, event);\n  } else {\n    listener.call(thisArg, event);\n  }\n}\n", "'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Adds an offer to the map of extension offers or a parameter to the map of\n * parameters.\n *\n * @param {Object} dest The map of extension offers or parameters\n * @param {String} name The extension or parameter name\n * @param {(Object|Boolean|String)} elem The extension parameters or the\n *     parameter value\n * @private\n */\nfunction push(dest, name, elem) {\n  if (dest[name] === undefined) dest[name] = [elem];\n  else dest[name].push(elem);\n}\n\n/**\n * Parses the `Sec-WebSocket-Extensions` header into an object.\n *\n * @param {String} header The field value of the header\n * @return {Object} The parsed object\n * @public\n */\nfunction parse(header) {\n  const offers = Object.create(null);\n  let params = Object.create(null);\n  let mustUnescape = false;\n  let isEscaping = false;\n  let inQuotes = false;\n  let extensionName;\n  let paramName;\n  let start = -1;\n  let code = -1;\n  let end = -1;\n  let i = 0;\n\n  for (; i < header.length; i++) {\n    code = header.charCodeAt(i);\n\n    if (extensionName === undefined) {\n      if (end === -1 && tokenChars[code] === 1) {\n        if (start === -1) start = i;\n      } else if (\n        i !== 0 &&\n        (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n      ) {\n        if (end === -1 && start !== -1) end = i;\n      } else if (code === 0x3b /* ';' */ || code === 0x2c /* ',' */) {\n        if (start === -1) {\n          throw new SyntaxError(`Unexpected character at index ${i}`);\n        }\n\n        if (end === -1) end = i;\n        const name = header.slice(start, end);\n        if (code === 0x2c) {\n          push(offers, name, params);\n          params = Object.create(null);\n        } else {\n          extensionName = name;\n        }\n\n        start = end = -1;\n      } else {\n        throw new SyntaxError(`Unexpected character at index ${i}`);\n      }\n    } else if (paramName === undefined) {\n      if (end === -1 && tokenChars[code] === 1) {\n        if (start === -1) start = i;\n      } else if (code === 0x20 || code === 0x09) {\n        if (end === -1 && start !== -1) end = i;\n      } else if (code === 0x3b || code === 0x2c) {\n        if (start === -1) {\n          throw new SyntaxError(`Unexpected character at index ${i}`);\n        }\n\n        if (end === -1) end = i;\n        push(params, header.slice(start, end), true);\n        if (code === 0x2c) {\n          push(offers, extensionName, params);\n          params = Object.create(null);\n          extensionName = undefined;\n        }\n\n        start = end = -1;\n      } else if (code === 0x3d /* '=' */ && start !== -1 && end === -1) {\n        paramName = header.slice(start, i);\n        start = end = -1;\n      } else {\n        throw new SyntaxError(`Unexpected character at index ${i}`);\n      }\n    } else {\n      //\n      // The value of a quoted-string after unescaping must conform to the\n      // token ABNF, so only token characters are valid.\n      // Ref: https://tools.ietf.org/html/rfc6455#section-9.1\n      //\n      if (isEscaping) {\n        if (tokenChars[code] !== 1) {\n          throw new SyntaxError(`Unexpected character at index ${i}`);\n        }\n        if (start === -1) start = i;\n        else if (!mustUnescape) mustUnescape = true;\n        isEscaping = false;\n      } else if (inQuotes) {\n        if (tokenChars[code] === 1) {\n          if (start === -1) start = i;\n        } else if (code === 0x22 /* '\"' */ && start !== -1) {\n          inQuotes = false;\n          end = i;\n        } else if (code === 0x5c /* '\\' */) {\n          isEscaping = true;\n        } else {\n          throw new SyntaxError(`Unexpected character at index ${i}`);\n        }\n      } else if (code === 0x22 && header.charCodeAt(i - 1) === 0x3d) {\n        inQuotes = true;\n      } else if (end === -1 && tokenChars[code] === 1) {\n        if (start === -1) start = i;\n      } else if (start !== -1 && (code === 0x20 || code === 0x09)) {\n        if (end === -1) end = i;\n      } else if (code === 0x3b || code === 0x2c) {\n        if (start === -1) {\n          throw new SyntaxError(`Unexpected character at index ${i}`);\n        }\n\n        if (end === -1) end = i;\n        let value = header.slice(start, end);\n        if (mustUnescape) {\n          value = value.replace(/\\\\/g, '');\n          mustUnescape = false;\n        }\n        push(params, paramName, value);\n        if (code === 0x2c) {\n          push(offers, extensionName, params);\n          params = Object.create(null);\n          extensionName = undefined;\n        }\n\n        paramName = undefined;\n        start = end = -1;\n      } else {\n        throw new SyntaxError(`Unexpected character at index ${i}`);\n      }\n    }\n  }\n\n  if (start === -1 || inQuotes || code === 0x20 || code === 0x09) {\n    throw new SyntaxError('Unexpected end of input');\n  }\n\n  if (end === -1) end = i;\n  const token = header.slice(start, end);\n  if (extensionName === undefined) {\n    push(offers, token, params);\n  } else {\n    if (paramName === undefined) {\n      push(params, token, true);\n    } else if (mustUnescape) {\n      push(params, paramName, token.replace(/\\\\/g, ''));\n    } else {\n      push(params, paramName, token);\n    }\n    push(offers, extensionName, params);\n  }\n\n  return offers;\n}\n\n/**\n * Builds the `Sec-WebSocket-Extensions` header field value.\n *\n * @param {Object} extensions The map of extensions and parameters to format\n * @return {String} A string representing the given object\n * @public\n */\nfunction format(extensions) {\n  return Object.keys(extensions)\n    .map((extension) => {\n      let configurations = extensions[extension];\n      if (!Array.isArray(configurations)) configurations = [configurations];\n      return configurations\n        .map((params) => {\n          return [extension]\n            .concat(\n              Object.keys(params).map((k) => {\n                let values = params[k];\n                if (!Array.isArray(values)) values = [values];\n                return values\n                  .map((v) => (v === true ? k : `${k}=${v}`))\n                  .join('; ');\n              })\n            )\n            .join('; ');\n        })\n        .join(', ');\n    })\n    .join(', ');\n}\n\nmodule.exports = { format, parse };\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex|Readable$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst https = require('https');\nconst http = require('http');\nconst net = require('net');\nconst tls = require('tls');\nconst { randomBytes, createHash } = require('crypto');\nconst { Duplex, Readable } = require('stream');\nconst { URL } = require('url');\n\nconst PerMessageDeflate = require('./permessage-deflate');\nconst Receiver = require('./receiver');\nconst Sender = require('./sender');\nconst { isBlob } = require('./validation');\n\nconst {\n  BINARY_TYPES,\n  CLOSE_TIMEOUT,\n  EMPTY_BUFFER,\n  GUID,\n  kForOnEventAttribute,\n  kListener,\n  kStatusCode,\n  kWebSocket,\n  NOOP\n} = require('./constants');\nconst {\n  EventTarget: { addEventListener, removeEventListener }\n} = require('./event-target');\nconst { format, parse } = require('./extension');\nconst { toBuffer } = require('./buffer-util');\n\nconst kAborted = Symbol('kAborted');\nconst protocolVersions = [8, 13];\nconst readyStates = ['CONNECTING', 'OPEN', 'CLOSING', 'CLOSED'];\nconst subprotocolRegex = /^[!#$%&'*+\\-.0-9A-Z^_`|a-z~]+$/;\n\n/**\n * Class representing a WebSocket.\n *\n * @extends EventEmitter\n */\nclass WebSocket extends EventEmitter {\n  /**\n   * Create a new `WebSocket`.\n   *\n   * @param {(String|URL)} address The URL to which to connect\n   * @param {(String|String[])} [protocols] The subprotocols\n   * @param {Object} [options] Connection options\n   */\n  constructor(address, protocols, options) {\n    super();\n\n    this._binaryType = BINARY_TYPES[0];\n    this._closeCode = 1006;\n    this._closeFrameReceived = false;\n    this._closeFrameSent = false;\n    this._closeMessage = EMPTY_BUFFER;\n    this._closeTimer = null;\n    this._errorEmitted = false;\n    this._extensions = {};\n    this._paused = false;\n    this._protocol = '';\n    this._readyState = WebSocket.CONNECTING;\n    this._receiver = null;\n    this._sender = null;\n    this._socket = null;\n\n    if (address !== null) {\n      this._bufferedAmount = 0;\n      this._isServer = false;\n      this._redirects = 0;\n\n      if (protocols === undefined) {\n        protocols = [];\n      } else if (!Array.isArray(protocols)) {\n        if (typeof protocols === 'object' && protocols !== null) {\n          options = protocols;\n          protocols = [];\n        } else {\n          protocols = [protocols];\n        }\n      }\n\n      initAsClient(this, address, protocols, options);\n    } else {\n      this._autoPong = options.autoPong;\n      this._closeTimeout = options.closeTimeout;\n      this._isServer = true;\n    }\n  }\n\n  /**\n   * For historical reasons, the custom \"nodebuffer\" type is used by the default\n   * instead of \"blob\".\n   *\n   * @type {String}\n   */\n  get binaryType() {\n    return this._binaryType;\n  }\n\n  set binaryType(type) {\n    if (!BINARY_TYPES.includes(type)) return;\n\n    this._binaryType = type;\n\n    //\n    // Allow to change `binaryType` on the fly.\n    //\n    if (this._receiver) this._receiver._binaryType = type;\n  }\n\n  /**\n   * @type {Number}\n   */\n  get bufferedAmount() {\n    if (!this._socket) return this._bufferedAmount;\n\n    return this._socket._writableState.length + this._sender._bufferedBytes;\n  }\n\n  /**\n   * @type {String}\n   */\n  get extensions() {\n    return Object.keys(this._extensions).join();\n  }\n\n  /**\n   * @type {Boolean}\n   */\n  get isPaused() {\n    return this._paused;\n  }\n\n  /**\n   * @type {Function}\n   */\n  /* istanbul ignore next */\n  get onclose() {\n    return null;\n  }\n\n  /**\n   * @type {Function}\n   */\n  /* istanbul ignore next */\n  get onerror() {\n    return null;\n  }\n\n  /**\n   * @type {Function}\n   */\n  /* istanbul ignore next */\n  get onopen() {\n    return null;\n  }\n\n  /**\n   * @type {Function}\n   */\n  /* istanbul ignore next */\n  get onmessage() {\n    return null;\n  }\n\n  /**\n   * @type {String}\n   */\n  get protocol() {\n    return this._protocol;\n  }\n\n  /**\n   * @type {Number}\n   */\n  get readyState() {\n    return this._readyState;\n  }\n\n  /**\n   * @type {String}\n   */\n  get url() {\n    return this._url;\n  }\n\n  /**\n   * Set up the socket and the internal resources.\n   *\n   * @param {Duplex} socket The network socket between the server and client\n   * @param {Buffer} head The first packet of the upgraded stream\n   * @param {Object} options Options object\n   * @param {Boolean} [options.allowSynchronousEvents=false] Specifies whether\n   *     any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n   *     multiple times in the same tick\n   * @param {Function} [options.generateMask] The function used to generate the\n   *     masking key\n   * @param {Number} [options.maxPayload=0] The maximum allowed message size\n   * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n   *     not to skip UTF-8 validation for text and close messages\n   * @private\n   */\n  setSocket(socket, head, options) {\n    const receiver = new Receiver({\n      allowSynchronousEvents: options.allowSynchronousEvents,\n      binaryType: this.binaryType,\n      extensions: this._extensions,\n      isServer: this._isServer,\n      maxPayload: options.maxPayload,\n      skipUTF8Validation: options.skipUTF8Validation\n    });\n\n    const sender = new Sender(socket, this._extensions, options.generateMask);\n\n    this._receiver = receiver;\n    this._sender = sender;\n    this._socket = socket;\n\n    receiver[kWebSocket] = this;\n    sender[kWebSocket] = this;\n    socket[kWebSocket] = this;\n\n    receiver.on('conclude', receiverOnConclude);\n    receiver.on('drain', receiverOnDrain);\n    receiver.on('error', receiverOnError);\n    receiver.on('message', receiverOnMessage);\n    receiver.on('ping', receiverOnPing);\n    receiver.on('pong', receiverOnPong);\n\n    sender.onerror = senderOnError;\n\n    //\n    // These methods may not be available if `socket` is just a `Duplex`.\n    //\n    if (socket.setTimeout) socket.setTimeout(0);\n    if (socket.setNoDelay) socket.setNoDelay();\n\n    if (head.length > 0) socket.unshift(head);\n\n    socket.on('close', socketOnClose);\n    socket.on('data', socketOnData);\n    socket.on('end', socketOnEnd);\n    socket.on('error', socketOnError);\n\n    this._readyState = WebSocket.OPEN;\n    this.emit('open');\n  }\n\n  /**\n   * Emit the `'close'` event.\n   *\n   * @private\n   */\n  emitClose() {\n    if (!this._socket) {\n      this._readyState = WebSocket.CLOSED;\n      this.emit('close', this._closeCode, this._closeMessage);\n      return;\n    }\n\n    if (this._extensions[PerMessageDeflate.extensionName]) {\n      this._extensions[PerMessageDeflate.extensionName].cleanup();\n    }\n\n    this._receiver.removeAllListeners();\n    this._readyState = WebSocket.CLOSED;\n    this.emit('close', this._closeCode, this._closeMessage);\n  }\n\n  /**\n   * Start a closing handshake.\n   *\n   *          +----------+   +-----------+   +----------+\n   *     - - -|ws.close()|-->|close frame|-->|ws.close()|- - -\n   *    |     +----------+   +-----------+   +----------+     |\n   *          +----------+   +-----------+         |\n   * CLOSING  |ws.close()|<--|close frame|<--+-----+       CLOSING\n   *          +----------+   +-----------+   |\n   *    |           |                        |   +---+        |\n   *                +------------------------+-->|fin| - - - -\n   *    |         +---+                      |   +---+\n   *     - - - - -|fin|<---------------------+\n   *              +---+\n   *\n   * @param {Number} [code] Status code explaining why the connection is closing\n   * @param {(String|Buffer)} [data] The reason why the connection is\n   *     closing\n   * @public\n   */\n  close(code, data) {\n    if (this.readyState === WebSocket.CLOSED) return;\n    if (this.readyState === WebSocket.CONNECTING) {\n      const msg = 'WebSocket was closed before the connection was established';\n      abortHandshake(this, this._req, msg);\n      return;\n    }\n\n    if (this.readyState === WebSocket.CLOSING) {\n      if (\n        this._closeFrameSent &&\n        (this._closeFrameReceived || this._receiver._writableState.errorEmitted)\n      ) {\n        this._socket.end();\n      }\n\n      return;\n    }\n\n    this._readyState = WebSocket.CLOSING;\n    this._sender.close(code, data, !this._isServer, (err) => {\n      //\n      // This error is handled by the `'error'` listener on the socket. We only\n      // want to know if the close frame has been sent here.\n      //\n      if (err) return;\n\n      this._closeFrameSent = true;\n\n      if (\n        this._closeFrameReceived ||\n        this._receiver._writableState.errorEmitted\n      ) {\n        this._socket.end();\n      }\n    });\n\n    setCloseTimer(this);\n  }\n\n  /**\n   * Pause the socket.\n   *\n   * @public\n   */\n  pause() {\n    if (\n      this.readyState === WebSocket.CONNECTING ||\n      this.readyState === WebSocket.CLOSED\n    ) {\n      return;\n    }\n\n    this._paused = true;\n    this._socket.pause();\n  }\n\n  /**\n   * Send a ping.\n   *\n   * @param {*} [data] The data to send\n   * @param {Boolean} [mask] Indicates whether or not to mask `data`\n   * @param {Function} [cb] Callback which is executed when the ping is sent\n   * @public\n   */\n  ping(data, mask, cb) {\n    if (this.readyState === WebSocket.CONNECTING) {\n      throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n    }\n\n    if (typeof data === 'function') {\n      cb = data;\n      data = mask = undefined;\n    } else if (typeof mask === 'function') {\n      cb = mask;\n      mask = undefined;\n    }\n\n    if (typeof data === 'number') data = data.toString();\n\n    if (this.readyState !== WebSocket.OPEN) {\n      sendAfterClose(this, data, cb);\n      return;\n    }\n\n    if (mask === undefined) mask = !this._isServer;\n    this._sender.ping(data || EMPTY_BUFFER, mask, cb);\n  }\n\n  /**\n   * Send a pong.\n   *\n   * @param {*} [data] The data to send\n   * @param {Boolean} [mask] Indicates whether or not to mask `data`\n   * @param {Function} [cb] Callback which is executed when the pong is sent\n   * @public\n   */\n  pong(data, mask, cb) {\n    if (this.readyState === WebSocket.CONNECTING) {\n      throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n    }\n\n    if (typeof data === 'function') {\n      cb = data;\n      data = mask = undefined;\n    } else if (typeof mask === 'function') {\n      cb = mask;\n      mask = undefined;\n    }\n\n    if (typeof data === 'number') data = data.toString();\n\n    if (this.readyState !== WebSocket.OPEN) {\n      sendAfterClose(this, data, cb);\n      return;\n    }\n\n    if (mask === undefined) mask = !this._isServer;\n    this._sender.pong(data || EMPTY_BUFFER, mask, cb);\n  }\n\n  /**\n   * Resume the socket.\n   *\n   * @public\n   */\n  resume() {\n    if (\n      this.readyState === WebSocket.CONNECTING ||\n      this.readyState === WebSocket.CLOSED\n    ) {\n      return;\n    }\n\n    this._paused = false;\n    if (!this._receiver._writableState.needDrain) this._socket.resume();\n  }\n\n  /**\n   * Send a data message.\n   *\n   * @param {*} data The message to send\n   * @param {Object} [options] Options object\n   * @param {Boolean} [options.binary] Specifies whether `data` is binary or\n   *     text\n   * @param {Boolean} [options.compress] Specifies whether or not to compress\n   *     `data`\n   * @param {Boolean} [options.fin=true] Specifies whether the fragment is the\n   *     last one\n   * @param {Boolean} [options.mask] Specifies whether or not to mask `data`\n   * @param {Function} [cb] Callback which is executed when data is written out\n   * @public\n   */\n  send(data, options, cb) {\n    if (this.readyState === WebSocket.CONNECTING) {\n      throw new Error('WebSocket is not open: readyState 0 (CONNECTING)');\n    }\n\n    if (typeof options === 'function') {\n      cb = options;\n      options = {};\n    }\n\n    if (typeof data === 'number') data = data.toString();\n\n    if (this.readyState !== WebSocket.OPEN) {\n      sendAfterClose(this, data, cb);\n      return;\n    }\n\n    const opts = {\n      binary: typeof data !== 'string',\n      mask: !this._isServer,\n      compress: true,\n      fin: true,\n      ...options\n    };\n\n    if (!this._extensions[PerMessageDeflate.extensionName]) {\n      opts.compress = false;\n    }\n\n    this._sender.send(data || EMPTY_BUFFER, opts, cb);\n  }\n\n  /**\n   * Forcibly close the connection.\n   *\n   * @public\n   */\n  terminate() {\n    if (this.readyState === WebSocket.CLOSED) return;\n    if (this.readyState === WebSocket.CONNECTING) {\n      const msg = 'WebSocket was closed before the connection was established';\n      abortHandshake(this, this._req, msg);\n      return;\n    }\n\n    if (this._socket) {\n      this._readyState = WebSocket.CLOSING;\n      this._socket.destroy();\n    }\n  }\n}\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CONNECTING', {\n  enumerable: true,\n  value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} CONNECTING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CONNECTING', {\n  enumerable: true,\n  value: readyStates.indexOf('CONNECTING')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'OPEN', {\n  enumerable: true,\n  value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} OPEN\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'OPEN', {\n  enumerable: true,\n  value: readyStates.indexOf('OPEN')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSING', {\n  enumerable: true,\n  value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSING\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSING', {\n  enumerable: true,\n  value: readyStates.indexOf('CLOSING')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket\n */\nObject.defineProperty(WebSocket, 'CLOSED', {\n  enumerable: true,\n  value: readyStates.indexOf('CLOSED')\n});\n\n/**\n * @constant {Number} CLOSED\n * @memberof WebSocket.prototype\n */\nObject.defineProperty(WebSocket.prototype, 'CLOSED', {\n  enumerable: true,\n  value: readyStates.indexOf('CLOSED')\n});\n\n[\n  'binaryType',\n  'bufferedAmount',\n  'extensions',\n  'isPaused',\n  'protocol',\n  'readyState',\n  'url'\n].forEach((property) => {\n  Object.defineProperty(WebSocket.prototype, property, { enumerable: true });\n});\n\n//\n// Add the `onopen`, `onerror`, `onclose`, and `onmessage` attributes.\n// See https://html.spec.whatwg.org/multipage/comms.html#the-websocket-interface\n//\n['open', 'error', 'close', 'message'].forEach((method) => {\n  Object.defineProperty(WebSocket.prototype, `on${method}`, {\n    enumerable: true,\n    get() {\n      for (const listener of this.listeners(method)) {\n        if (listener[kForOnEventAttribute]) return listener[kListener];\n      }\n\n      return null;\n    },\n    set(handler) {\n      for (const listener of this.listeners(method)) {\n        if (listener[kForOnEventAttribute]) {\n          this.removeListener(method, listener);\n          break;\n        }\n      }\n\n      if (typeof handler !== 'function') return;\n\n      this.addEventListener(method, handler, {\n        [kForOnEventAttribute]: true\n      });\n    }\n  });\n});\n\nWebSocket.prototype.addEventListener = addEventListener;\nWebSocket.prototype.removeEventListener = removeEventListener;\n\nmodule.exports = WebSocket;\n\n/**\n * Initialize a WebSocket client.\n *\n * @param {WebSocket} websocket The client to initialize\n * @param {(String|URL)} address The URL to which to connect\n * @param {Array} protocols The subprotocols\n * @param {Object} [options] Connection options\n * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether any\n *     of the `'message'`, `'ping'`, and `'pong'` events can be emitted multiple\n *     times in the same tick\n * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n *     automatically send a pong in response to a ping\n * @param {Number} [options.closeTimeout=30000] Duration in milliseconds to wait\n *     for the closing handshake to finish after `websocket.close()` is called\n * @param {Function} [options.finishRequest] A function which can be used to\n *     customize the headers of each http request before it is sent\n * @param {Boolean} [options.followRedirects=false] Whether or not to follow\n *     redirects\n * @param {Function} [options.generateMask] The function used to generate the\n *     masking key\n * @param {Number} [options.handshakeTimeout] Timeout in milliseconds for the\n *     handshake request\n * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n *     size\n * @param {Number} [options.maxRedirects=10] The maximum number of redirects\n *     allowed\n * @param {String} [options.origin] Value of the `Origin` or\n *     `Sec-WebSocket-Origin` header\n * @param {(Boolean|Object)} [options.perMessageDeflate=true] Enable/disable\n *     permessage-deflate\n * @param {Number} [options.protocolVersion=13] Value of the\n *     `Sec-WebSocket-Version` header\n * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n *     not to skip UTF-8 validation for text and close messages\n * @private\n */\nfunction initAsClient(websocket, address, protocols, options) {\n  const opts = {\n    allowSynchronousEvents: true,\n    autoPong: true,\n    closeTimeout: CLOSE_TIMEOUT,\n    protocolVersion: protocolVersions[1],\n    maxPayload: 100 * 1024 * 1024,\n    skipUTF8Validation: false,\n    perMessageDeflate: true,\n    followRedirects: false,\n    maxRedirects: 10,\n    ...options,\n    socketPath: undefined,\n    hostname: undefined,\n    protocol: undefined,\n    timeout: undefined,\n    method: 'GET',\n    host: undefined,\n    path: undefined,\n    port: undefined\n  };\n\n  websocket._autoPong = opts.autoPong;\n  websocket._closeTimeout = opts.closeTimeout;\n\n  if (!protocolVersions.includes(opts.protocolVersion)) {\n    throw new RangeError(\n      `Unsupported protocol version: ${opts.protocolVersion} ` +\n        `(supported versions: ${protocolVersions.join(', ')})`\n    );\n  }\n\n  let parsedUrl;\n\n  if (address instanceof URL) {\n    parsedUrl = address;\n  } else {\n    try {\n      parsedUrl = new URL(address);\n    } catch (e) {\n      throw new SyntaxError(`Invalid URL: ${address}`);\n    }\n  }\n\n  if (parsedUrl.protocol === 'http:') {\n    parsedUrl.protocol = 'ws:';\n  } else if (parsedUrl.protocol === 'https:') {\n    parsedUrl.protocol = 'wss:';\n  }\n\n  websocket._url = parsedUrl.href;\n\n  const isSecure = parsedUrl.protocol === 'wss:';\n  const isIpcUrl = parsedUrl.protocol === 'ws+unix:';\n  let invalidUrlMessage;\n\n  if (parsedUrl.protocol !== 'ws:' && !isSecure && !isIpcUrl) {\n    invalidUrlMessage =\n      'The URL\\'s protocol must be one of \"ws:\", \"wss:\", ' +\n      '\"http:\", \"https:\", or \"ws+unix:\"';\n  } else if (isIpcUrl && !parsedUrl.pathname) {\n    invalidUrlMessage = \"The URL's pathname is empty\";\n  } else if (parsedUrl.hash) {\n    invalidUrlMessage = 'The URL contains a fragment identifier';\n  }\n\n  if (invalidUrlMessage) {\n    const err = new SyntaxError(invalidUrlMessage);\n\n    if (websocket._redirects === 0) {\n      throw err;\n    } else {\n      emitErrorAndClose(websocket, err);\n      return;\n    }\n  }\n\n  const defaultPort = isSecure ? 443 : 80;\n  const key = randomBytes(16).toString('base64');\n  const request = isSecure ? https.request : http.request;\n  const protocolSet = new Set();\n  let perMessageDeflate;\n\n  opts.createConnection =\n    opts.createConnection || (isSecure ? tlsConnect : netConnect);\n  opts.defaultPort = opts.defaultPort || defaultPort;\n  opts.port = parsedUrl.port || defaultPort;\n  opts.host = parsedUrl.hostname.startsWith('[')\n    ? parsedUrl.hostname.slice(1, -1)\n    : parsedUrl.hostname;\n  opts.headers = {\n    ...opts.headers,\n    'Sec-WebSocket-Version': opts.protocolVersion,\n    'Sec-WebSocket-Key': key,\n    Connection: 'Upgrade',\n    Upgrade: 'websocket'\n  };\n  opts.path = parsedUrl.pathname + parsedUrl.search;\n  opts.timeout = opts.handshakeTimeout;\n\n  if (opts.perMessageDeflate) {\n    perMessageDeflate = new PerMessageDeflate(\n      opts.perMessageDeflate !== true ? opts.perMessageDeflate : {},\n      false,\n      opts.maxPayload\n    );\n    opts.headers['Sec-WebSocket-Extensions'] = format({\n      [PerMessageDeflate.extensionName]: perMessageDeflate.offer()\n    });\n  }\n  if (protocols.length) {\n    for (const protocol of protocols) {\n      if (\n        typeof protocol !== 'string' ||\n        !subprotocolRegex.test(protocol) ||\n        protocolSet.has(protocol)\n      ) {\n        throw new SyntaxError(\n          'An invalid or duplicated subprotocol was specified'\n        );\n      }\n\n      protocolSet.add(protocol);\n    }\n\n    opts.headers['Sec-WebSocket-Protocol'] = protocols.join(',');\n  }\n  if (opts.origin) {\n    if (opts.protocolVersion < 13) {\n      opts.headers['Sec-WebSocket-Origin'] = opts.origin;\n    } else {\n      opts.headers.Origin = opts.origin;\n    }\n  }\n  if (parsedUrl.username || parsedUrl.password) {\n    opts.auth = `${parsedUrl.username}:${parsedUrl.password}`;\n  }\n\n  if (isIpcUrl) {\n    const parts = opts.path.split(':');\n\n    opts.socketPath = parts[0];\n    opts.path = parts[1];\n  }\n\n  let req;\n\n  if (opts.followRedirects) {\n    if (websocket._redirects === 0) {\n      websocket._originalIpc = isIpcUrl;\n      websocket._originalSecure = isSecure;\n      websocket._originalHostOrSocketPath = isIpcUrl\n        ? opts.socketPath\n        : parsedUrl.host;\n\n      const headers = options && options.headers;\n\n      //\n      // Shallow copy the user provided options so that headers can be changed\n      // without mutating the original object.\n      //\n      options = { ...options, headers: {} };\n\n      if (headers) {\n        for (const [key, value] of Object.entries(headers)) {\n          options.headers[key.toLowerCase()] = value;\n        }\n      }\n    } else if (websocket.listenerCount('redirect') === 0) {\n      const isSameHost = isIpcUrl\n        ? websocket._originalIpc\n          ? opts.socketPath === websocket._originalHostOrSocketPath\n          : false\n        : websocket._originalIpc\n          ? false\n          : parsedUrl.host === websocket._originalHostOrSocketPath;\n\n      if (!isSameHost || (websocket._originalSecure && !isSecure)) {\n        //\n        // Match curl 7.77.0 behavior and drop the following headers. These\n        // headers are also dropped when following a redirect to a subdomain.\n        //\n        delete opts.headers.authorization;\n        delete opts.headers.cookie;\n\n        if (!isSameHost) delete opts.headers.host;\n\n        opts.auth = undefined;\n      }\n    }\n\n    //\n    // Match curl 7.77.0 behavior and make the first `Authorization` header win.\n    // If the `Authorization` header is set, then there is nothing to do as it\n    // will take precedence.\n    //\n    if (opts.auth && !options.headers.authorization) {\n      options.headers.authorization =\n        'Basic ' + Buffer.from(opts.auth).toString('base64');\n    }\n\n    req = websocket._req = request(opts);\n\n    if (websocket._redirects) {\n      //\n      // Unlike what is done for the `'upgrade'` event, no early exit is\n      // triggered here if the user calls `websocket.close()` or\n      // `websocket.terminate()` from a listener of the `'redirect'` event. This\n      // is because the user can also call `request.destroy()` with an error\n      // before calling `websocket.close()` or `websocket.terminate()` and this\n      // would result in an error being emitted on the `request` object with no\n      // `'error'` event listeners attached.\n      //\n      websocket.emit('redirect', websocket.url, req);\n    }\n  } else {\n    req = websocket._req = request(opts);\n  }\n\n  if (opts.timeout) {\n    req.on('timeout', () => {\n      abortHandshake(websocket, req, 'Opening handshake has timed out');\n    });\n  }\n\n  req.on('error', (err) => {\n    if (req === null || req[kAborted]) return;\n\n    req = websocket._req = null;\n    emitErrorAndClose(websocket, err);\n  });\n\n  req.on('response', (res) => {\n    const location = res.headers.location;\n    const statusCode = res.statusCode;\n\n    if (\n      location &&\n      opts.followRedirects &&\n      statusCode >= 300 &&\n      statusCode < 400\n    ) {\n      if (++websocket._redirects > opts.maxRedirects) {\n        abortHandshake(websocket, req, 'Maximum redirects exceeded');\n        return;\n      }\n\n      req.abort();\n\n      let addr;\n\n      try {\n        addr = new URL(location, address);\n      } catch (e) {\n        const err = new SyntaxError(`Invalid URL: ${location}`);\n        emitErrorAndClose(websocket, err);\n        return;\n      }\n\n      initAsClient(websocket, addr, protocols, options);\n    } else if (!websocket.emit('unexpected-response', req, res)) {\n      abortHandshake(\n        websocket,\n        req,\n        `Unexpected server response: ${res.statusCode}`\n      );\n    }\n  });\n\n  req.on('upgrade', (res, socket, head) => {\n    websocket.emit('upgrade', res);\n\n    //\n    // The user may have closed the connection from a listener of the\n    // `'upgrade'` event.\n    //\n    if (websocket.readyState !== WebSocket.CONNECTING) return;\n\n    req = websocket._req = null;\n\n    const upgrade = res.headers.upgrade;\n\n    if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n      abortHandshake(websocket, socket, 'Invalid Upgrade header');\n      return;\n    }\n\n    const digest = createHash('sha1')\n      .update(key + GUID)\n      .digest('base64');\n\n    if (res.headers['sec-websocket-accept'] !== digest) {\n      abortHandshake(websocket, socket, 'Invalid Sec-WebSocket-Accept header');\n      return;\n    }\n\n    const serverProt = res.headers['sec-websocket-protocol'];\n    let protError;\n\n    if (serverProt !== undefined) {\n      if (!protocolSet.size) {\n        protError = 'Server sent a subprotocol but none was requested';\n      } else if (!protocolSet.has(serverProt)) {\n        protError = 'Server sent an invalid subprotocol';\n      }\n    } else if (protocolSet.size) {\n      protError = 'Server sent no subprotocol';\n    }\n\n    if (protError) {\n      abortHandshake(websocket, socket, protError);\n      return;\n    }\n\n    if (serverProt) websocket._protocol = serverProt;\n\n    const secWebSocketExtensions = res.headers['sec-websocket-extensions'];\n\n    if (secWebSocketExtensions !== undefined) {\n      if (!perMessageDeflate) {\n        const message =\n          'Server sent a Sec-WebSocket-Extensions header but no extension ' +\n          'was requested';\n        abortHandshake(websocket, socket, message);\n        return;\n      }\n\n      let extensions;\n\n      try {\n        extensions = parse(secWebSocketExtensions);\n      } catch (err) {\n        const message = 'Invalid Sec-WebSocket-Extensions header';\n        abortHandshake(websocket, socket, message);\n        return;\n      }\n\n      const extensionNames = Object.keys(extensions);\n\n      if (\n        extensionNames.length !== 1 ||\n        extensionNames[0] !== PerMessageDeflate.extensionName\n      ) {\n        const message = 'Server indicated an extension that was not requested';\n        abortHandshake(websocket, socket, message);\n        return;\n      }\n\n      try {\n        perMessageDeflate.accept(extensions[PerMessageDeflate.extensionName]);\n      } catch (err) {\n        const message = 'Invalid Sec-WebSocket-Extensions header';\n        abortHandshake(websocket, socket, message);\n        return;\n      }\n\n      websocket._extensions[PerMessageDeflate.extensionName] =\n        perMessageDeflate;\n    }\n\n    websocket.setSocket(socket, head, {\n      allowSynchronousEvents: opts.allowSynchronousEvents,\n      generateMask: opts.generateMask,\n      maxPayload: opts.maxPayload,\n      skipUTF8Validation: opts.skipUTF8Validation\n    });\n  });\n\n  if (opts.finishRequest) {\n    opts.finishRequest(req, websocket);\n  } else {\n    req.end();\n  }\n}\n\n/**\n * Emit the `'error'` and `'close'` events.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {Error} The error to emit\n * @private\n */\nfunction emitErrorAndClose(websocket, err) {\n  websocket._readyState = WebSocket.CLOSING;\n  //\n  // The following assignment is practically useless and is done only for\n  // consistency.\n  //\n  websocket._errorEmitted = true;\n  websocket.emit('error', err);\n  websocket.emitClose();\n}\n\n/**\n * Create a `net.Socket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {net.Socket} The newly created socket used to start the connection\n * @private\n */\nfunction netConnect(options) {\n  options.path = options.socketPath;\n  return net.connect(options);\n}\n\n/**\n * Create a `tls.TLSSocket` and initiate a connection.\n *\n * @param {Object} options Connection options\n * @return {tls.TLSSocket} The newly created socket used to start the connection\n * @private\n */\nfunction tlsConnect(options) {\n  options.path = undefined;\n\n  if (!options.servername && options.servername !== '') {\n    options.servername = net.isIP(options.host) ? '' : options.host;\n  }\n\n  return tls.connect(options);\n}\n\n/**\n * Abort the handshake and emit an error.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {(http.ClientRequest|net.Socket|tls.Socket)} stream The request to\n *     abort or the socket to destroy\n * @param {String} message The error message\n * @private\n */\nfunction abortHandshake(websocket, stream, message) {\n  websocket._readyState = WebSocket.CLOSING;\n\n  const err = new Error(message);\n  Error.captureStackTrace(err, abortHandshake);\n\n  if (stream.setHeader) {\n    stream[kAborted] = true;\n    stream.abort();\n\n    if (stream.socket && !stream.socket.destroyed) {\n      //\n      // On Node.js >= 14.3.0 `request.abort()` does not destroy the socket if\n      // called after the request completed. See\n      // https://github.com/websockets/ws/issues/1869.\n      //\n      stream.socket.destroy();\n    }\n\n    process.nextTick(emitErrorAndClose, websocket, err);\n  } else {\n    stream.destroy(err);\n    stream.once('error', websocket.emit.bind(websocket, 'error'));\n    stream.once('close', websocket.emitClose.bind(websocket));\n  }\n}\n\n/**\n * Handle cases where the `ping()`, `pong()`, or `send()` methods are called\n * when the `readyState` attribute is `CLOSING` or `CLOSED`.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @param {*} [data] The data to send\n * @param {Function} [cb] Callback\n * @private\n */\nfunction sendAfterClose(websocket, data, cb) {\n  if (data) {\n    const length = isBlob(data) ? data.size : toBuffer(data).length;\n\n    //\n    // The `_bufferedAmount` property is used only when the peer is a client and\n    // the opening handshake fails. Under these circumstances, in fact, the\n    // `setSocket()` method is not called, so the `_socket` and `_sender`\n    // properties are set to `null`.\n    //\n    if (websocket._socket) websocket._sender._bufferedBytes += length;\n    else websocket._bufferedAmount += length;\n  }\n\n  if (cb) {\n    const err = new Error(\n      `WebSocket is not open: readyState ${websocket.readyState} ` +\n        `(${readyStates[websocket.readyState]})`\n    );\n    process.nextTick(cb, err);\n  }\n}\n\n/**\n * The listener of the `Receiver` `'conclude'` event.\n *\n * @param {Number} code The status code\n * @param {Buffer} reason The reason for closing\n * @private\n */\nfunction receiverOnConclude(code, reason) {\n  const websocket = this[kWebSocket];\n\n  websocket._closeFrameReceived = true;\n  websocket._closeMessage = reason;\n  websocket._closeCode = code;\n\n  if (websocket._socket[kWebSocket] === undefined) return;\n\n  websocket._socket.removeListener('data', socketOnData);\n  process.nextTick(resume, websocket._socket);\n\n  if (code === 1005) websocket.close();\n  else websocket.close(code, reason);\n}\n\n/**\n * The listener of the `Receiver` `'drain'` event.\n *\n * @private\n */\nfunction receiverOnDrain() {\n  const websocket = this[kWebSocket];\n\n  if (!websocket.isPaused) websocket._socket.resume();\n}\n\n/**\n * The listener of the `Receiver` `'error'` event.\n *\n * @param {(RangeError|Error)} err The emitted error\n * @private\n */\nfunction receiverOnError(err) {\n  const websocket = this[kWebSocket];\n\n  if (websocket._socket[kWebSocket] !== undefined) {\n    websocket._socket.removeListener('data', socketOnData);\n\n    //\n    // On Node.js < 14.0.0 the `'error'` event is emitted synchronously. See\n    // https://github.com/websockets/ws/issues/1940.\n    //\n    process.nextTick(resume, websocket._socket);\n\n    websocket.close(err[kStatusCode]);\n  }\n\n  if (!websocket._errorEmitted) {\n    websocket._errorEmitted = true;\n    websocket.emit('error', err);\n  }\n}\n\n/**\n * The listener of the `Receiver` `'finish'` event.\n *\n * @private\n */\nfunction receiverOnFinish() {\n  this[kWebSocket].emitClose();\n}\n\n/**\n * The listener of the `Receiver` `'message'` event.\n *\n * @param {Buffer|ArrayBuffer|Buffer[])} data The message\n * @param {Boolean} isBinary Specifies whether the message is binary or not\n * @private\n */\nfunction receiverOnMessage(data, isBinary) {\n  this[kWebSocket].emit('message', data, isBinary);\n}\n\n/**\n * The listener of the `Receiver` `'ping'` event.\n *\n * @param {Buffer} data The data included in the ping frame\n * @private\n */\nfunction receiverOnPing(data) {\n  const websocket = this[kWebSocket];\n\n  if (websocket._autoPong) websocket.pong(data, !this._isServer, NOOP);\n  websocket.emit('ping', data);\n}\n\n/**\n * The listener of the `Receiver` `'pong'` event.\n *\n * @param {Buffer} data The data included in the pong frame\n * @private\n */\nfunction receiverOnPong(data) {\n  this[kWebSocket].emit('pong', data);\n}\n\n/**\n * Resume a readable stream\n *\n * @param {Readable} stream The readable stream\n * @private\n */\nfunction resume(stream) {\n  stream.resume();\n}\n\n/**\n * The `Sender` error event handler.\n *\n * @param {Error} The error\n * @private\n */\nfunction senderOnError(err) {\n  const websocket = this[kWebSocket];\n\n  if (websocket.readyState === WebSocket.CLOSED) return;\n  if (websocket.readyState === WebSocket.OPEN) {\n    websocket._readyState = WebSocket.CLOSING;\n    setCloseTimer(websocket);\n  }\n\n  //\n  // `socket.end()` is used instead of `socket.destroy()` to allow the other\n  // peer to finish sending queued data. There is no need to set a timer here\n  // because `CLOSING` means that it is already set or not needed.\n  //\n  this._socket.end();\n\n  if (!websocket._errorEmitted) {\n    websocket._errorEmitted = true;\n    websocket.emit('error', err);\n  }\n}\n\n/**\n * Set a timer to destroy the underlying raw socket of a WebSocket.\n *\n * @param {WebSocket} websocket The WebSocket instance\n * @private\n */\nfunction setCloseTimer(websocket) {\n  websocket._closeTimer = setTimeout(\n    websocket._socket.destroy.bind(websocket._socket),\n    websocket._closeTimeout\n  );\n}\n\n/**\n * The listener of the socket `'close'` event.\n *\n * @private\n */\nfunction socketOnClose() {\n  const websocket = this[kWebSocket];\n\n  this.removeListener('close', socketOnClose);\n  this.removeListener('data', socketOnData);\n  this.removeListener('end', socketOnEnd);\n\n  websocket._readyState = WebSocket.CLOSING;\n\n  //\n  // The close frame might not have been received or the `'end'` event emitted,\n  // for example, if the socket was destroyed due to an error. Ensure that the\n  // `receiver` stream is closed after writing any remaining buffered data to\n  // it. If the readable side of the socket is in flowing mode then there is no\n  // buffered data as everything has been already written. If instead, the\n  // socket is paused, any possible buffered data will be read as a single\n  // chunk.\n  //\n  if (\n    !this._readableState.endEmitted &&\n    !websocket._closeFrameReceived &&\n    !websocket._receiver._writableState.errorEmitted &&\n    this._readableState.length !== 0\n  ) {\n    const chunk = this.read(this._readableState.length);\n\n    websocket._receiver.write(chunk);\n  }\n\n  websocket._receiver.end();\n\n  this[kWebSocket] = undefined;\n\n  clearTimeout(websocket._closeTimer);\n\n  if (\n    websocket._receiver._writableState.finished ||\n    websocket._receiver._writableState.errorEmitted\n  ) {\n    websocket.emitClose();\n  } else {\n    websocket._receiver.on('error', receiverOnFinish);\n    websocket._receiver.on('finish', receiverOnFinish);\n  }\n}\n\n/**\n * The listener of the socket `'data'` event.\n *\n * @param {Buffer} chunk A chunk of data\n * @private\n */\nfunction socketOnData(chunk) {\n  if (!this[kWebSocket]._receiver.write(chunk)) {\n    this.pause();\n  }\n}\n\n/**\n * The listener of the socket `'end'` event.\n *\n * @private\n */\nfunction socketOnEnd() {\n  const websocket = this[kWebSocket];\n\n  websocket._readyState = WebSocket.CLOSING;\n  websocket._receiver.end();\n  this.end();\n}\n\n/**\n * The listener of the socket `'error'` event.\n *\n * @private\n */\nfunction socketOnError() {\n  const websocket = this[kWebSocket];\n\n  this.removeListener('error', socketOnError);\n  this.on('error', NOOP);\n\n  if (websocket) {\n    websocket._readyState = WebSocket.CLOSING;\n    this.destroy();\n  }\n}\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^WebSocket$\" }] */\n'use strict';\n\nconst WebSocket = require('./websocket');\nconst { Duplex } = require('stream');\n\n/**\n * Emits the `'close'` event on a stream.\n *\n * @param {Duplex} stream The stream.\n * @private\n */\nfunction emitClose(stream) {\n  stream.emit('close');\n}\n\n/**\n * The listener of the `'end'` event.\n *\n * @private\n */\nfunction duplexOnEnd() {\n  if (!this.destroyed && this._writableState.finished) {\n    this.destroy();\n  }\n}\n\n/**\n * The listener of the `'error'` event.\n *\n * @param {Error} err The error\n * @private\n */\nfunction duplexOnError(err) {\n  this.removeListener('error', duplexOnError);\n  this.destroy();\n  if (this.listenerCount('error') === 0) {\n    // Do not suppress the throwing behavior.\n    this.emit('error', err);\n  }\n}\n\n/**\n * Wraps a `WebSocket` in a duplex stream.\n *\n * @param {WebSocket} ws The `WebSocket` to wrap\n * @param {Object} [options] The options for the `Duplex` constructor\n * @return {Duplex} The duplex stream\n * @public\n */\nfunction createWebSocketStream(ws, options) {\n  let terminateOnDestroy = true;\n\n  const duplex = new Duplex({\n    ...options,\n    autoDestroy: false,\n    emitClose: false,\n    objectMode: false,\n    writableObjectMode: false\n  });\n\n  ws.on('message', function message(msg, isBinary) {\n    const data =\n      !isBinary && duplex._readableState.objectMode ? msg.toString() : msg;\n\n    if (!duplex.push(data)) ws.pause();\n  });\n\n  ws.once('error', function error(err) {\n    if (duplex.destroyed) return;\n\n    // Prevent `ws.terminate()` from being called by `duplex._destroy()`.\n    //\n    // - If the `'error'` event is emitted before the `'open'` event, then\n    //   `ws.terminate()` is a noop as no socket is assigned.\n    // - Otherwise, the error is re-emitted by the listener of the `'error'`\n    //   event of the `Receiver` object. The listener already closes the\n    //   connection by calling `ws.close()`. This allows a close frame to be\n    //   sent to the other peer. If `ws.terminate()` is called right after this,\n    //   then the close frame might not be sent.\n    terminateOnDestroy = false;\n    duplex.destroy(err);\n  });\n\n  ws.once('close', function close() {\n    if (duplex.destroyed) return;\n\n    duplex.push(null);\n  });\n\n  duplex._destroy = function (err, callback) {\n    if (ws.readyState === ws.CLOSED) {\n      callback(err);\n      process.nextTick(emitClose, duplex);\n      return;\n    }\n\n    let called = false;\n\n    ws.once('error', function error(err) {\n      called = true;\n      callback(err);\n    });\n\n    ws.once('close', function close() {\n      if (!called) callback(err);\n      process.nextTick(emitClose, duplex);\n    });\n\n    if (terminateOnDestroy) ws.terminate();\n  };\n\n  duplex._final = function (callback) {\n    if (ws.readyState === ws.CONNECTING) {\n      ws.once('open', function open() {\n        duplex._final(callback);\n      });\n      return;\n    }\n\n    // If the value of the `_socket` property is `null` it means that `ws` is a\n    // client websocket and the handshake failed. In fact, when this happens, a\n    // socket is never assigned to the websocket. Wait for the `'error'` event\n    // that will be emitted by the websocket.\n    if (ws._socket === null) return;\n\n    if (ws._socket._writableState.finished) {\n      callback();\n      if (duplex._readableState.endEmitted) duplex.destroy();\n    } else {\n      ws._socket.once('finish', function finish() {\n        // `duplex` is not destroyed here because the `'end'` event will be\n        // emitted on `duplex` after this `'finish'` event. The EOF signaling\n        // `null` chunk is, in fact, pushed when the websocket emits `'close'`.\n        callback();\n      });\n      ws.close();\n    }\n  };\n\n  duplex._read = function () {\n    if (ws.isPaused) ws.resume();\n  };\n\n  duplex._write = function (chunk, encoding, callback) {\n    if (ws.readyState === ws.CONNECTING) {\n      ws.once('open', function open() {\n        duplex._write(chunk, encoding, callback);\n      });\n      return;\n    }\n\n    ws.send(chunk, callback);\n  };\n\n  duplex.on('end', duplexOnEnd);\n  duplex.on('error', duplexOnError);\n  return duplex;\n}\n\nmodule.exports = createWebSocketStream;\n", "'use strict';\n\nconst { tokenChars } = require('./validation');\n\n/**\n * Parses the `Sec-WebSocket-Protocol` header into a set of subprotocol names.\n *\n * @param {String} header The field value of the header\n * @return {Set} The subprotocol names\n * @public\n */\nfunction parse(header) {\n  const protocols = new Set();\n  let start = -1;\n  let end = -1;\n  let i = 0;\n\n  for (i; i < header.length; i++) {\n    const code = header.charCodeAt(i);\n\n    if (end === -1 && tokenChars[code] === 1) {\n      if (start === -1) start = i;\n    } else if (\n      i !== 0 &&\n      (code === 0x20 /* ' ' */ || code === 0x09) /* '\\t' */\n    ) {\n      if (end === -1 && start !== -1) end = i;\n    } else if (code === 0x2c /* ',' */) {\n      if (start === -1) {\n        throw new SyntaxError(`Unexpected character at index ${i}`);\n      }\n\n      if (end === -1) end = i;\n\n      const protocol = header.slice(start, end);\n\n      if (protocols.has(protocol)) {\n        throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n      }\n\n      protocols.add(protocol);\n      start = end = -1;\n    } else {\n      throw new SyntaxError(`Unexpected character at index ${i}`);\n    }\n  }\n\n  if (start === -1 || end !== -1) {\n    throw new SyntaxError('Unexpected end of input');\n  }\n\n  const protocol = header.slice(start, i);\n\n  if (protocols.has(protocol)) {\n    throw new SyntaxError(`The \"${protocol}\" subprotocol is duplicated`);\n  }\n\n  protocols.add(protocol);\n  return protocols;\n}\n\nmodule.exports = { parse };\n", "/* eslint no-unused-vars: [\"error\", { \"varsIgnorePattern\": \"^Duplex$\", \"caughtErrors\": \"none\" }] */\n\n'use strict';\n\nconst EventEmitter = require('events');\nconst http = require('http');\nconst { Duplex } = require('stream');\nconst { createHash } = require('crypto');\n\nconst extension = require('./extension');\nconst PerMessageDeflate = require('./permessage-deflate');\nconst subprotocol = require('./subprotocol');\nconst WebSocket = require('./websocket');\nconst { CLOSE_TIMEOUT, GUID, kWebSocket } = require('./constants');\n\nconst keyRegex = /^[+/0-9A-Za-z]{22}==$/;\n\nconst RUNNING = 0;\nconst CLOSING = 1;\nconst CLOSED = 2;\n\n/**\n * Class representing a WebSocket server.\n *\n * @extends EventEmitter\n */\nclass WebSocketServer extends EventEmitter {\n  /**\n   * Create a `WebSocketServer` instance.\n   *\n   * @param {Object} options Configuration options\n   * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether\n   *     any of the `'message'`, `'ping'`, and `'pong'` events can be emitted\n   *     multiple times in the same tick\n   * @param {Boolean} [options.autoPong=true] Specifies whether or not to\n   *     automatically send a pong in response to a ping\n   * @param {Number} [options.backlog=511] The maximum length of the queue of\n   *     pending connections\n   * @param {Boolean} [options.clientTracking=true] Specifies whether or not to\n   *     track clients\n   * @param {Number} [options.closeTimeout=30000] Duration in milliseconds to\n   *     wait for the closing handshake to finish after `websocket.close()` is\n   *     called\n   * @param {Function} [options.handleProtocols] A hook to handle protocols\n   * @param {String} [options.host] The hostname where to bind the server\n   * @param {Number} [options.maxPayload=104857600] The maximum allowed message\n   *     size\n   * @param {Boolean} [options.noServer=false] Enable no server mode\n   * @param {String} [options.path] Accept only connections matching this path\n   * @param {(Boolean|Object)} [options.perMessageDeflate=false] Enable/disable\n   *     permessage-deflate\n   * @param {Number} [options.port] The port where to bind the server\n   * @param {(http.Server|https.Server)} [options.server] A pre-created HTTP/S\n   *     server to use\n   * @param {Boolean} [options.skipUTF8Validation=false] Specifies whether or\n   *     not to skip UTF-8 validation for text and close messages\n   * @param {Function} [options.verifyClient] A hook to reject connections\n   * @param {Function} [options.WebSocket=WebSocket] Specifies the `WebSocket`\n   *     class to use. It must be the `WebSocket` class or class that extends it\n   * @param {Function} [callback] A listener for the `listening` event\n   */\n  constructor(options, callback) {\n    super();\n\n    options = {\n      allowSynchronousEvents: true,\n      autoPong: true,\n      maxPayload: 100 * 1024 * 1024,\n      skipUTF8Validation: false,\n      perMessageDeflate: false,\n      handleProtocols: null,\n      clientTracking: true,\n      closeTimeout: CLOSE_TIMEOUT,\n      verifyClient: null,\n      noServer: false,\n      backlog: null, // use default (511 as implemented in net.js)\n      server: null,\n      host: null,\n      path: null,\n      port: null,\n      WebSocket,\n      ...options\n    };\n\n    if (\n      (options.port == null && !options.server && !options.noServer) ||\n      (options.port != null && (options.server || options.noServer)) ||\n      (options.server && options.noServer)\n    ) {\n      throw new TypeError(\n        'One and only one of the \"port\", \"server\", or \"noServer\" options ' +\n          'must be specified'\n      );\n    }\n\n    if (options.port != null) {\n      this._server = http.createServer((req, res) => {\n        const body = http.STATUS_CODES[426];\n\n        res.writeHead(426, {\n          'Content-Length': body.length,\n          'Content-Type': 'text/plain'\n        });\n        res.end(body);\n      });\n      this._server.listen(\n        options.port,\n        options.host,\n        options.backlog,\n        callback\n      );\n    } else if (options.server) {\n      this._server = options.server;\n    }\n\n    if (this._server) {\n      const emitConnection = this.emit.bind(this, 'connection');\n\n      this._removeListeners = addListeners(this._server, {\n        listening: this.emit.bind(this, 'listening'),\n        error: this.emit.bind(this, 'error'),\n        upgrade: (req, socket, head) => {\n          this.handleUpgrade(req, socket, head, emitConnection);\n        }\n      });\n    }\n\n    if (options.perMessageDeflate === true) options.perMessageDeflate = {};\n    if (options.clientTracking) {\n      this.clients = new Set();\n      this._shouldEmitClose = false;\n    }\n\n    this.options = options;\n    this._state = RUNNING;\n  }\n\n  /**\n   * Returns the bound address, the address family name, and port of the server\n   * as reported by the operating system if listening on an IP socket.\n   * If the server is listening on a pipe or UNIX domain socket, the name is\n   * returned as a string.\n   *\n   * @return {(Object|String|null)} The address of the server\n   * @public\n   */\n  address() {\n    if (this.options.noServer) {\n      throw new Error('The server is operating in \"noServer\" mode');\n    }\n\n    if (!this._server) return null;\n    return this._server.address();\n  }\n\n  /**\n   * Stop the server from accepting new connections and emit the `'close'` event\n   * when all existing connections are closed.\n   *\n   * @param {Function} [cb] A one-time listener for the `'close'` event\n   * @public\n   */\n  close(cb) {\n    if (this._state === CLOSED) {\n      if (cb) {\n        this.once('close', () => {\n          cb(new Error('The server is not running'));\n        });\n      }\n\n      process.nextTick(emitClose, this);\n      return;\n    }\n\n    if (cb) this.once('close', cb);\n\n    if (this._state === CLOSING) return;\n    this._state = CLOSING;\n\n    if (this.options.noServer || this.options.server) {\n      if (this._server) {\n        this._removeListeners();\n        this._removeListeners = this._server = null;\n      }\n\n      if (this.clients) {\n        if (!this.clients.size) {\n          process.nextTick(emitClose, this);\n        } else {\n          this._shouldEmitClose = true;\n        }\n      } else {\n        process.nextTick(emitClose, this);\n      }\n    } else {\n      const server = this._server;\n\n      this._removeListeners();\n      this._removeListeners = this._server = null;\n\n      //\n      // The HTTP/S server was created internally. Close it, and rely on its\n      // `'close'` event.\n      //\n      server.close(() => {\n        emitClose(this);\n      });\n    }\n  }\n\n  /**\n   * See if a given request should be handled by this server instance.\n   *\n   * @param {http.IncomingMessage} req Request object to inspect\n   * @return {Boolean} `true` if the request is valid, else `false`\n   * @public\n   */\n  shouldHandle(req) {\n    if (this.options.path) {\n      const index = req.url.indexOf('?');\n      const pathname = index !== -1 ? req.url.slice(0, index) : req.url;\n\n      if (pathname !== this.options.path) return false;\n    }\n\n    return true;\n  }\n\n  /**\n   * Handle a HTTP Upgrade request.\n   *\n   * @param {http.IncomingMessage} req The request object\n   * @param {Duplex} socket The network socket between the server and client\n   * @param {Buffer} head The first packet of the upgraded stream\n   * @param {Function} cb Callback\n   * @public\n   */\n  handleUpgrade(req, socket, head, cb) {\n    socket.on('error', socketOnError);\n\n    const key = req.headers['sec-websocket-key'];\n    const upgrade = req.headers.upgrade;\n    const version = +req.headers['sec-websocket-version'];\n\n    if (req.method !== 'GET') {\n      const message = 'Invalid HTTP method';\n      abortHandshakeOrEmitwsClientError(this, req, socket, 405, message);\n      return;\n    }\n\n    if (upgrade === undefined || upgrade.toLowerCase() !== 'websocket') {\n      const message = 'Invalid Upgrade header';\n      abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n      return;\n    }\n\n    if (key === undefined || !keyRegex.test(key)) {\n      const message = 'Missing or invalid Sec-WebSocket-Key header';\n      abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n      return;\n    }\n\n    if (version !== 13 && version !== 8) {\n      const message = 'Missing or invalid Sec-WebSocket-Version header';\n      abortHandshakeOrEmitwsClientError(this, req, socket, 400, message, {\n        'Sec-WebSocket-Version': '13, 8'\n      });\n      return;\n    }\n\n    if (!this.shouldHandle(req)) {\n      abortHandshake(socket, 400);\n      return;\n    }\n\n    const secWebSocketProtocol = req.headers['sec-websocket-protocol'];\n    let protocols = new Set();\n\n    if (secWebSocketProtocol !== undefined) {\n      try {\n        protocols = subprotocol.parse(secWebSocketProtocol);\n      } catch (err) {\n        const message = 'Invalid Sec-WebSocket-Protocol header';\n        abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n        return;\n      }\n    }\n\n    const secWebSocketExtensions = req.headers['sec-websocket-extensions'];\n    const extensions = {};\n\n    if (\n      this.options.perMessageDeflate &&\n      secWebSocketExtensions !== undefined\n    ) {\n      const perMessageDeflate = new PerMessageDeflate(\n        this.options.perMessageDeflate,\n        true,\n        this.options.maxPayload\n      );\n\n      try {\n        const offers = extension.parse(secWebSocketExtensions);\n\n        if (offers[PerMessageDeflate.extensionName]) {\n          perMessageDeflate.accept(offers[PerMessageDeflate.extensionName]);\n          extensions[PerMessageDeflate.extensionName] = perMessageDeflate;\n        }\n      } catch (err) {\n        const message =\n          'Invalid or unacceptable Sec-WebSocket-Extensions header';\n        abortHandshakeOrEmitwsClientError(this, req, socket, 400, message);\n        return;\n      }\n    }\n\n    //\n    // Optionally call external client verification handler.\n    //\n    if (this.options.verifyClient) {\n      const info = {\n        origin:\n          req.headers[`${version === 8 ? 'sec-websocket-origin' : 'origin'}`],\n        secure: !!(req.socket.authorized || req.socket.encrypted),\n        req\n      };\n\n      if (this.options.verifyClient.length === 2) {\n        this.options.verifyClient(info, (verified, code, message, headers) => {\n          if (!verified) {\n            return abortHandshake(socket, code || 401, message, headers);\n          }\n\n          this.completeUpgrade(\n            extensions,\n            key,\n            protocols,\n            req,\n            socket,\n            head,\n            cb\n          );\n        });\n        return;\n      }\n\n      if (!this.options.verifyClient(info)) return abortHandshake(socket, 401);\n    }\n\n    this.completeUpgrade(extensions, key, protocols, req, socket, head, cb);\n  }\n\n  /**\n   * Upgrade the connection to WebSocket.\n   *\n   * @param {Object} extensions The accepted extensions\n   * @param {String} key The value of the `Sec-WebSocket-Key` header\n   * @param {Set} protocols The subprotocols\n   * @param {http.IncomingMessage} req The request object\n   * @param {Duplex} socket The network socket between the server and client\n   * @param {Buffer} head The first packet of the upgraded stream\n   * @param {Function} cb Callback\n   * @throws {Error} If called more than once with the same socket\n   * @private\n   */\n  completeUpgrade(extensions, key, protocols, req, socket, head, cb) {\n    //\n    // Destroy the socket if the client has already sent a FIN packet.\n    //\n    if (!socket.readable || !socket.writable) return socket.destroy();\n\n    if (socket[kWebSocket]) {\n      throw new Error(\n        'server.handleUpgrade() was called more than once with the same ' +\n          'socket, possibly due to a misconfiguration'\n      );\n    }\n\n    if (this._state > RUNNING) return abortHandshake(socket, 503);\n\n    const digest = createHash('sha1')\n      .update(key + GUID)\n      .digest('base64');\n\n    const headers = [\n      'HTTP/1.1 101 Switching Protocols',\n      'Upgrade: websocket',\n      'Connection: Upgrade',\n      `Sec-WebSocket-Accept: ${digest}`\n    ];\n\n    const ws = new this.options.WebSocket(null, undefined, this.options);\n\n    if (protocols.size) {\n      //\n      // Optionally call external protocol selection handler.\n      //\n      const protocol = this.options.handleProtocols\n        ? this.options.handleProtocols(protocols, req)\n        : protocols.values().next().value;\n\n      if (protocol) {\n        headers.push(`Sec-WebSocket-Protocol: ${protocol}`);\n        ws._protocol = protocol;\n      }\n    }\n\n    if (extensions[PerMessageDeflate.extensionName]) {\n      const params = extensions[PerMessageDeflate.extensionName].params;\n      const value = extension.format({\n        [PerMessageDeflate.extensionName]: [params]\n      });\n      headers.push(`Sec-WebSocket-Extensions: ${value}`);\n      ws._extensions = extensions;\n    }\n\n    //\n    // Allow external modification/inspection of handshake headers.\n    //\n    this.emit('headers', headers, req);\n\n    socket.write(headers.concat('\\r\\n').join('\\r\\n'));\n    socket.removeListener('error', socketOnError);\n\n    ws.setSocket(socket, head, {\n      allowSynchronousEvents: this.options.allowSynchronousEvents,\n      maxPayload: this.options.maxPayload,\n      skipUTF8Validation: this.options.skipUTF8Validation\n    });\n\n    if (this.clients) {\n      this.clients.add(ws);\n      ws.on('close', () => {\n        this.clients.delete(ws);\n\n        if (this._shouldEmitClose && !this.clients.size) {\n          process.nextTick(emitClose, this);\n        }\n      });\n    }\n\n    cb(ws, req);\n  }\n}\n\nmodule.exports = WebSocketServer;\n\n/**\n * Add event listeners on an `EventEmitter` using a map of <event, listener>\n * pairs.\n *\n * @param {EventEmitter} server The event emitter\n * @param {Object.<String, Function>} map The listeners to add\n * @return {Function} A function that will remove the added listeners when\n *     called\n * @private\n */\nfunction addListeners(server, map) {\n  for (const event of Object.keys(map)) server.on(event, map[event]);\n\n  return function removeListeners() {\n    for (const event of Object.keys(map)) {\n      server.removeListener(event, map[event]);\n    }\n  };\n}\n\n/**\n * Emit a `'close'` event on an `EventEmitter`.\n *\n * @param {EventEmitter} server The event emitter\n * @private\n */\nfunction emitClose(server) {\n  server._state = CLOSED;\n  server.emit('close');\n}\n\n/**\n * Handle socket errors.\n *\n * @private\n */\nfunction socketOnError() {\n  this.destroy();\n}\n\n/**\n * Close the connection when preconditions are not fulfilled.\n *\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} [message] The HTTP response body\n * @param {Object} [headers] Additional HTTP response headers\n * @private\n */\nfunction abortHandshake(socket, code, message, headers) {\n  //\n  // The socket is writable unless the user destroyed or ended it before calling\n  // `server.handleUpgrade()` or in the `verifyClient` function, which is a user\n  // error. Handling this does not make much sense as the worst that can happen\n  // is that some of the data written by the user might be discarded due to the\n  // call to `socket.end()` below, which triggers an `'error'` event that in\n  // turn causes the socket to be destroyed.\n  //\n  message = message || http.STATUS_CODES[code];\n  headers = {\n    Connection: 'close',\n    'Content-Type': 'text/html',\n    'Content-Length': Buffer.byteLength(message),\n    ...headers\n  };\n\n  socket.once('finish', socket.destroy);\n\n  socket.end(\n    `HTTP/1.1 ${code} ${http.STATUS_CODES[code]}\\r\\n` +\n      Object.keys(headers)\n        .map((h) => `${h}: ${headers[h]}`)\n        .join('\\r\\n') +\n      '\\r\\n\\r\\n' +\n      message\n  );\n}\n\n/**\n * Emit a `'wsClientError'` event on a `WebSocketServer` if there is at least\n * one listener for it, otherwise call `abortHandshake()`.\n *\n * @param {WebSocketServer} server The WebSocket server\n * @param {http.IncomingMessage} req The request object\n * @param {Duplex} socket The socket of the upgrade request\n * @param {Number} code The HTTP response status code\n * @param {String} message The HTTP response body\n * @param {Object} [headers] The HTTP response headers\n * @private\n */\nfunction abortHandshakeOrEmitwsClientError(\n  server,\n  req,\n  socket,\n  code,\n  message,\n  headers\n) {\n  if (server.listenerCount('wsClientError')) {\n    const err = new Error(message);\n    Error.captureStackTrace(err, abortHandshakeOrEmitwsClientError);\n\n    server.emit('wsClientError', err, socket, req);\n  } else {\n    abortHandshake(socket, code, message, headers);\n  }\n}\n", "'use strict';\n\nfunction parseContentType(str) {\n  if (str.length === 0)\n    return;\n\n  const params = Object.create(null);\n  let i = 0;\n\n  // Parse type\n  for (; i < str.length; ++i) {\n    const code = str.charCodeAt(i);\n    if (TOKEN[code] !== 1) {\n      if (code !== 47/* '/' */ || i === 0)\n        return;\n      break;\n    }\n  }\n  // Check for type without subtype\n  if (i === str.length)\n    return;\n\n  const type = str.slice(0, i).toLowerCase();\n\n  // Parse subtype\n  const subtypeStart = ++i;\n  for (; i < str.length; ++i) {\n    const code = str.charCodeAt(i);\n    if (TOKEN[code] !== 1) {\n      // Make sure we have a subtype\n      if (i === subtypeStart)\n        return;\n\n      if (parseContentTypeParams(str, i, params) === undefined)\n        return;\n      break;\n    }\n  }\n  // Make sure we have a subtype\n  if (i === subtypeStart)\n    return;\n\n  const subtype = str.slice(subtypeStart, i).toLowerCase();\n\n  return { type, subtype, params };\n}\n\nfunction parseContentTypeParams(str, i, params) {\n  while (i < str.length) {\n    // Consume whitespace\n    for (; i < str.length; ++i) {\n      const code = str.charCodeAt(i);\n      if (code !== 32/* ' ' */ && code !== 9/* '\\t' */)\n        break;\n    }\n\n    // Ended on whitespace\n    if (i === str.length)\n      break;\n\n    // Check for malformed parameter\n    if (str.charCodeAt(i++) !== 59/* ';' */)\n      return;\n\n    // Consume whitespace\n    for (; i < str.length; ++i) {\n      const code = str.charCodeAt(i);\n      if (code !== 32/* ' ' */ && code !== 9/* '\\t' */)\n        break;\n    }\n\n    // Ended on whitespace (malformed)\n    if (i === str.length)\n      return;\n\n    let name;\n    const nameStart = i;\n    // Parse parameter name\n    for (; i < str.length; ++i) {\n      const code = str.charCodeAt(i);\n      if (TOKEN[code] !== 1) {\n        if (code !== 61/* '=' */)\n          return;\n        break;\n      }\n    }\n\n    // No value (malformed)\n    if (i === str.length)\n      return;\n\n    name = str.slice(nameStart, i);\n    ++i; // Skip over '='\n\n    // No value (malformed)\n    if (i === str.length)\n      return;\n\n    let value = '';\n    let valueStart;\n    if (str.charCodeAt(i) === 34/* '\"' */) {\n      valueStart = ++i;\n      let escaping = false;\n      // Parse quoted value\n      for (; i < str.length; ++i) {\n        const code = str.charCodeAt(i);\n        if (code === 92/* '\\\\' */) {\n          if (escaping) {\n            valueStart = i;\n            escaping = false;\n          } else {\n            value += str.slice(valueStart, i);\n            escaping = true;\n          }\n          continue;\n        }\n        if (code === 34/* '\"' */) {\n          if (escaping) {\n            valueStart = i;\n            escaping = false;\n            continue;\n          }\n          value += str.slice(valueStart, i);\n          break;\n        }\n        if (escaping) {\n          valueStart = i - 1;\n          escaping = false;\n        }\n        // Invalid unescaped quoted character (malformed)\n        if (QDTEXT[code] !== 1)\n          return;\n      }\n\n      // No end quote (malformed)\n      if (i === str.length)\n        return;\n\n      ++i; // Skip over double quote\n    } else {\n      valueStart = i;\n      // Parse unquoted value\n      for (; i < str.length; ++i) {\n        const code = str.charCodeAt(i);\n        if (TOKEN[code] !== 1) {\n          // No value (malformed)\n          if (i === valueStart)\n            return;\n          break;\n        }\n      }\n      value = str.slice(valueStart, i);\n    }\n\n    name = name.toLowerCase();\n    if (params[name] === undefined)\n      params[name] = value;\n  }\n\n  return params;\n}\n\nfunction parseDisposition(str, defDecoder) {\n  if (str.length === 0)\n    return;\n\n  const params = Object.create(null);\n  let i = 0;\n\n  for (; i < str.length; ++i) {\n    const code = str.charCodeAt(i);\n    if (TOKEN[code] !== 1) {\n      if (parseDispositionParams(str, i, params, defDecoder) === undefined)\n        return;\n      break;\n    }\n  }\n\n  const type = str.slice(0, i).toLowerCase();\n\n  return { type, params };\n}\n\nfunction parseDispositionParams(str, i, params, defDecoder) {\n  while (i < str.length) {\n    // Consume whitespace\n    for (; i < str.length; ++i) {\n      const code = str.charCodeAt(i);\n      if (code !== 32/* ' ' */ && code !== 9/* '\\t' */)\n        break;\n    }\n\n    // Ended on whitespace\n    if (i === str.length)\n      break;\n\n    // Check for malformed parameter\n    if (str.charCodeAt(i++) !== 59/* ';' */)\n      return;\n\n    // Consume whitespace\n    for (; i < str.length; ++i) {\n      const code = str.charCodeAt(i);\n      if (code !== 32/* ' ' */ && code !== 9/* '\\t' */)\n        break;\n    }\n\n    // Ended on whitespace (malformed)\n    if (i === str.length)\n      return;\n\n    let name;\n    const nameStart = i;\n    // Parse parameter name\n    for (; i < str.length; ++i) {\n      const code = str.charCodeAt(i);\n      if (TOKEN[code] !== 1) {\n        if (code === 61/* '=' */)\n          break;\n        return;\n      }\n    }\n\n    // No value (malformed)\n    if (i === str.length)\n      return;\n\n    let value = '';\n    let valueStart;\n    let charset;\n    //~ let lang;\n    name = str.slice(nameStart, i);\n    if (name.charCodeAt(name.length - 1) === 42/* '*' */) {\n      // Extended value\n\n      const charsetStart = ++i;\n      // Parse charset name\n      for (; i < str.length; ++i) {\n        const code = str.charCodeAt(i);\n        if (CHARSET[code] !== 1) {\n          if (code !== 39/* '\\'' */)\n            return;\n          break;\n        }\n      }\n\n      // Incomplete charset (malformed)\n      if (i === str.length)\n        return;\n\n      charset = str.slice(charsetStart, i);\n      ++i; // Skip over the '\\''\n\n      //~ const langStart = ++i;\n      // Parse language name\n      for (; i < str.length; ++i) {\n        const code = str.charCodeAt(i);\n        if (code === 39/* '\\'' */)\n          break;\n      }\n\n      // Incomplete language (malformed)\n      if (i === str.length)\n        return;\n\n      //~ lang = str.slice(langStart, i);\n      ++i; // Skip over the '\\''\n\n      // No value (malformed)\n      if (i === str.length)\n        return;\n\n      valueStart = i;\n\n      let encode = 0;\n      // Parse value\n      for (; i < str.length; ++i) {\n        const code = str.charCodeAt(i);\n        if (EXTENDED_VALUE[code] !== 1) {\n          if (code === 37/* '%' */) {\n            let hexUpper;\n            let hexLower;\n            if (i + 2 < str.length\n                && (hexUpper = HEX_VALUES[str.charCodeAt(i + 1)]) !== -1\n                && (hexLower = HEX_VALUES[str.charCodeAt(i + 2)]) !== -1) {\n              const byteVal = (hexUpper << 4) + hexLower;\n              value += str.slice(valueStart, i);\n              value += String.fromCharCode(byteVal);\n              i += 2;\n              valueStart = i + 1;\n              if (byteVal >= 128)\n                encode = 2;\n              else if (encode === 0)\n                encode = 1;\n              continue;\n            }\n            // '%' disallowed in non-percent encoded contexts (malformed)\n            return;\n          }\n          break;\n        }\n      }\n\n      value += str.slice(valueStart, i);\n      value = convertToUTF8(value, charset, encode);\n      if (value === undefined)\n        return;\n    } else {\n      // Non-extended value\n\n      ++i; // Skip over '='\n\n      // No value (malformed)\n      if (i === str.length)\n        return;\n\n      if (str.charCodeAt(i) === 34/* '\"' */) {\n        valueStart = ++i;\n        let escaping = false;\n        // Parse quoted value\n        for (; i < str.length; ++i) {\n          const code = str.charCodeAt(i);\n          if (code === 92/* '\\\\' */) {\n            if (escaping) {\n              valueStart = i;\n              escaping = false;\n            } else {\n              value += str.slice(valueStart, i);\n              escaping = true;\n            }\n            continue;\n          }\n          if (code === 34/* '\"' */) {\n            if (escaping) {\n              valueStart = i;\n              escaping = false;\n              continue;\n            }\n            value += str.slice(valueStart, i);\n            break;\n          }\n          if (escaping) {\n            valueStart = i - 1;\n            escaping = false;\n          }\n          // Invalid unescaped quoted character (malformed)\n          if (QDTEXT[code] !== 1)\n            return;\n        }\n\n        // No end quote (malformed)\n        if (i === str.length)\n          return;\n\n        ++i; // Skip over double quote\n      } else {\n        valueStart = i;\n        // Parse unquoted value\n        for (; i < str.length; ++i) {\n          const code = str.charCodeAt(i);\n          if (TOKEN[code] !== 1) {\n            // No value (malformed)\n            if (i === valueStart)\n              return;\n            break;\n          }\n        }\n        value = str.slice(valueStart, i);\n      }\n\n      value = defDecoder(value, 2);\n      if (value === undefined)\n        return;\n    }\n\n    name = name.toLowerCase();\n    if (params[name] === undefined)\n      params[name] = value;\n  }\n\n  return params;\n}\n\nfunction getDecoder(charset) {\n  let lc;\n  while (true) {\n    switch (charset) {\n      case 'utf-8':\n      case 'utf8':\n        return decoders.utf8;\n      case 'latin1':\n      case 'ascii': // TODO: Make these a separate, strict decoder?\n      case 'us-ascii':\n      case 'iso-8859-1':\n      case 'iso8859-1':\n      case 'iso88591':\n      case 'iso_8859-1':\n      case 'windows-1252':\n      case 'iso_8859-1:1987':\n      case 'cp1252':\n      case 'x-cp1252':\n        return decoders.latin1;\n      case 'utf16le':\n      case 'utf-16le':\n      case 'ucs2':\n      case 'ucs-2':\n        return decoders.utf16le;\n      case 'base64':\n        return decoders.base64;\n      default:\n        if (lc === undefined) {\n          lc = true;\n          charset = charset.toLowerCase();\n          continue;\n        }\n        return decoders.other.bind(charset);\n    }\n  }\n}\n\nconst decoders = {\n  utf8: (data, hint) => {\n    if (data.length === 0)\n      return '';\n    if (typeof data === 'string') {\n      // If `data` never had any percent-encoded bytes or never had any that\n      // were outside of the ASCII range, then we can safely just return the\n      // input since UTF-8 is ASCII compatible\n      if (hint < 2)\n        return data;\n\n      data = Buffer.from(data, 'latin1');\n    }\n    return data.utf8Slice(0, data.length);\n  },\n\n  latin1: (data, hint) => {\n    if (data.length === 0)\n      return '';\n    if (typeof data === 'string')\n      return data;\n    return data.latin1Slice(0, data.length);\n  },\n\n  utf16le: (data, hint) => {\n    if (data.length === 0)\n      return '';\n    if (typeof data === 'string')\n      data = Buffer.from(data, 'latin1');\n    return data.ucs2Slice(0, data.length);\n  },\n\n  base64: (data, hint) => {\n    if (data.length === 0)\n      return '';\n    if (typeof data === 'string')\n      data = Buffer.from(data, 'latin1');\n    return data.base64Slice(0, data.length);\n  },\n\n  other: (data, hint) => {\n    if (data.length === 0)\n      return '';\n    if (typeof data === 'string')\n      data = Buffer.from(data, 'latin1');\n    try {\n      const decoder = new TextDecoder(this);\n      return decoder.decode(data);\n    } catch {}\n  },\n};\n\nfunction convertToUTF8(data, charset, hint) {\n  const decode = getDecoder(charset);\n  if (decode)\n    return decode(data, hint);\n}\n\nfunction basename(path) {\n  if (typeof path !== 'string')\n    return '';\n  for (let i = path.length - 1; i >= 0; --i) {\n    switch (path.charCodeAt(i)) {\n      case 0x2F: // '/'\n      case 0x5C: // '\\'\n        path = path.slice(i + 1);\n        return (path === '..' || path === '.' ? '' : path);\n    }\n  }\n  return (path === '..' || path === '.' ? '' : path);\n}\n\nconst TOKEN = [\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,\n  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n];\n\nconst QDTEXT = [\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\n\nconst CHARSET = [\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 1, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,\n  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n];\n\nconst EXTENDED_VALUE = [\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,\n  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n];\n\n/* eslint-disable no-multi-spaces */\nconst HEX_VALUES = [\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n   0,  1,  2,  3,  4,  5,  6,  7,  8,  9, -1, -1, -1, -1, -1, -1,\n  -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n/* eslint-enable no-multi-spaces */\n\nmodule.exports = {\n  basename,\n  convertToUTF8,\n  getDecoder,\n  parseContentType,\n  parseDisposition,\n};\n", "'use strict';\n/*\n  Based heavily on the Streaming Boyer-Moore-Horspool C++ implementation\n  by Hongli Lai at: https://github.com/FooBarWidget/boyer-moore-horspool\n*/\nfunction memcmp(buf1, pos1, buf2, pos2, num) {\n  for (let i = 0; i < num; ++i) {\n    if (buf1[pos1 + i] !== buf2[pos2 + i])\n      return false;\n  }\n  return true;\n}\n\nclass SBMH {\n  constructor(needle, cb) {\n    if (typeof cb !== 'function')\n      throw new Error('Missing match callback');\n\n    if (typeof needle === 'string')\n      needle = Buffer.from(needle);\n    else if (!Buffer.isBuffer(needle))\n      throw new Error(`Expected Buffer for needle, got ${typeof needle}`);\n\n    const needleLen = needle.length;\n\n    this.maxMatches = Infinity;\n    this.matches = 0;\n\n    this._cb = cb;\n    this._lookbehindSize = 0;\n    this._needle = needle;\n    this._bufPos = 0;\n\n    this._lookbehind = Buffer.allocUnsafe(needleLen);\n\n    // Initialize occurrence table.\n    this._occ = [\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen, needleLen, needleLen,\n      needleLen, needleLen, needleLen, needleLen\n    ];\n\n    // Populate occurrence table with analysis of the needle, ignoring the last\n    // letter.\n    if (needleLen > 1) {\n      for (let i = 0; i < needleLen - 1; ++i)\n        this._occ[needle[i]] = needleLen - 1 - i;\n    }\n  }\n\n  reset() {\n    this.matches = 0;\n    this._lookbehindSize = 0;\n    this._bufPos = 0;\n  }\n\n  push(chunk, pos) {\n    let result;\n    if (!Buffer.isBuffer(chunk))\n      chunk = Buffer.from(chunk, 'latin1');\n    const chunkLen = chunk.length;\n    this._bufPos = pos || 0;\n    while (result !== chunkLen && this.matches < this.maxMatches)\n      result = feed(this, chunk);\n    return result;\n  }\n\n  destroy() {\n    const lbSize = this._lookbehindSize;\n    if (lbSize)\n      this._cb(false, this._lookbehind, 0, lbSize, false);\n    this.reset();\n  }\n}\n\nfunction feed(self, data) {\n  const len = data.length;\n  const needle = self._needle;\n  const needleLen = needle.length;\n\n  // Positive: points to a position in `data`\n  //           pos == 3 points to data[3]\n  // Negative: points to a position in the lookbehind buffer\n  //           pos == -2 points to lookbehind[lookbehindSize - 2]\n  let pos = -self._lookbehindSize;\n  const lastNeedleCharPos = needleLen - 1;\n  const lastNeedleChar = needle[lastNeedleCharPos];\n  const end = len - needleLen;\n  const occ = self._occ;\n  const lookbehind = self._lookbehind;\n\n  if (pos < 0) {\n    // Lookbehind buffer is not empty. Perform Boyer-Moore-Horspool\n    // search with character lookup code that considers both the\n    // lookbehind buffer and the current round's haystack data.\n    //\n    // Loop until\n    //   there is a match.\n    // or until\n    //   we've moved past the position that requires the\n    //   lookbehind buffer. In this case we switch to the\n    //   optimized loop.\n    // or until\n    //   the character to look at lies outside the haystack.\n    while (pos < 0 && pos <= end) {\n      const nextPos = pos + lastNeedleCharPos;\n      const ch = (nextPos < 0\n                  ? lookbehind[self._lookbehindSize + nextPos]\n                  : data[nextPos]);\n\n      if (ch === lastNeedleChar\n          && matchNeedle(self, data, pos, lastNeedleCharPos)) {\n        self._lookbehindSize = 0;\n        ++self.matches;\n        if (pos > -self._lookbehindSize)\n          self._cb(true, lookbehind, 0, self._lookbehindSize + pos, false);\n        else\n          self._cb(true, undefined, 0, 0, true);\n\n        return (self._bufPos = pos + needleLen);\n      }\n\n      pos += occ[ch];\n    }\n\n    // No match.\n\n    // There's too few data for Boyer-Moore-Horspool to run,\n    // so let's use a different algorithm to skip as much as\n    // we can.\n    // Forward pos until\n    //   the trailing part of lookbehind + data\n    //   looks like the beginning of the needle\n    // or until\n    //   pos == 0\n    while (pos < 0 && !matchNeedle(self, data, pos, len - pos))\n      ++pos;\n\n    if (pos < 0) {\n      // Cut off part of the lookbehind buffer that has\n      // been processed and append the entire haystack\n      // into it.\n      const bytesToCutOff = self._lookbehindSize + pos;\n\n      if (bytesToCutOff > 0) {\n        // The cut off data is guaranteed not to contain the needle.\n        self._cb(false, lookbehind, 0, bytesToCutOff, false);\n      }\n\n      self._lookbehindSize -= bytesToCutOff;\n      lookbehind.copy(lookbehind, 0, bytesToCutOff, self._lookbehindSize);\n      lookbehind.set(data, self._lookbehindSize);\n      self._lookbehindSize += len;\n\n      self._bufPos = len;\n      return len;\n    }\n\n    // Discard lookbehind buffer.\n    self._cb(false, lookbehind, 0, self._lookbehindSize, false);\n    self._lookbehindSize = 0;\n  }\n\n  pos += self._bufPos;\n\n  const firstNeedleChar = needle[0];\n\n  // Lookbehind buffer is now empty. Perform Boyer-Moore-Horspool\n  // search with optimized character lookup code that only considers\n  // the current round's haystack data.\n  while (pos <= end) {\n    const ch = data[pos + lastNeedleCharPos];\n\n    if (ch === lastNeedleChar\n        && data[pos] === firstNeedleChar\n        && memcmp(needle, 0, data, pos, lastNeedleCharPos)) {\n      ++self.matches;\n      if (pos > 0)\n        self._cb(true, data, self._bufPos, pos, true);\n      else\n        self._cb(true, undefined, 0, 0, true);\n\n      return (self._bufPos = pos + needleLen);\n    }\n\n    pos += occ[ch];\n  }\n\n  // There was no match. If there's trailing haystack data that we cannot\n  // match yet using the Boyer-Moore-Horspool algorithm (because the trailing\n  // data is less than the needle size) then match using a modified\n  // algorithm that starts matching from the beginning instead of the end.\n  // Whatever trailing data is left after running this algorithm is added to\n  // the lookbehind buffer.\n  while (pos < len) {\n    if (data[pos] !== firstNeedleChar\n        || !memcmp(data, pos, needle, 0, len - pos)) {\n      ++pos;\n      continue;\n    }\n    data.copy(lookbehind, 0, pos, len);\n    self._lookbehindSize = len - pos;\n    break;\n  }\n\n  // Everything until `pos` is guaranteed not to contain needle data.\n  if (pos > 0)\n    self._cb(false, data, self._bufPos, pos < len ? pos : len, true);\n\n  self._bufPos = len;\n  return len;\n}\n\nfunction matchNeedle(self, data, pos, len) {\n  const lb = self._lookbehind;\n  const lbSize = self._lookbehindSize;\n  const needle = self._needle;\n\n  for (let i = 0; i < len; ++i, ++pos) {\n    const ch = (pos < 0 ? lb[lbSize + pos] : data[pos]);\n    if (ch !== needle[i])\n      return false;\n  }\n  return true;\n}\n\nmodule.exports = SBMH;\n", "'use strict';\n\nconst { Readable, Writable } = require('stream');\n\nconst StreamSearch = require('streamsearch');\n\nconst {\n  basename,\n  convertToUTF8,\n  getDecoder,\n  parseContentType,\n  parseDisposition,\n} = require('../utils.js');\n\nconst BUF_CRLF = Buffer.from('\\r\\n');\nconst BUF_CR = Buffer.from('\\r');\nconst BUF_DASH = Buffer.from('-');\n\nfunction noop() {}\n\nconst MAX_HEADER_PAIRS = 2000; // From node\nconst MAX_HEADER_SIZE = 16 * 1024; // From node (its default value)\n\nconst HPARSER_NAME = 0;\nconst HPARSER_PRE_OWS = 1;\nconst HPARSER_VALUE = 2;\nclass HeaderParser {\n  constructor(cb) {\n    this.header = Object.create(null);\n    this.pairCount = 0;\n    this.byteCount = 0;\n    this.state = HPARSER_NAME;\n    this.name = '';\n    this.value = '';\n    this.crlf = 0;\n    this.cb = cb;\n  }\n\n  reset() {\n    this.header = Object.create(null);\n    this.pairCount = 0;\n    this.byteCount = 0;\n    this.state = HPARSER_NAME;\n    this.name = '';\n    this.value = '';\n    this.crlf = 0;\n  }\n\n  push(chunk, pos, end) {\n    let start = pos;\n    while (pos < end) {\n      switch (this.state) {\n        case HPARSER_NAME: {\n          let done = false;\n          for (; pos < end; ++pos) {\n            if (this.byteCount === MAX_HEADER_SIZE)\n              return -1;\n            ++this.byteCount;\n            const code = chunk[pos];\n            if (TOKEN[code] !== 1) {\n              if (code !== 58/* ':' */)\n                return -1;\n              this.name += chunk.latin1Slice(start, pos);\n              if (this.name.length === 0)\n                return -1;\n              ++pos;\n              done = true;\n              this.state = HPARSER_PRE_OWS;\n              break;\n            }\n          }\n          if (!done) {\n            this.name += chunk.latin1Slice(start, pos);\n            break;\n          }\n          // FALLTHROUGH\n        }\n        case HPARSER_PRE_OWS: {\n          // Skip optional whitespace\n          let done = false;\n          for (; pos < end; ++pos) {\n            if (this.byteCount === MAX_HEADER_SIZE)\n              return -1;\n            ++this.byteCount;\n            const code = chunk[pos];\n            if (code !== 32/* ' ' */ && code !== 9/* '\\t' */) {\n              start = pos;\n              done = true;\n              this.state = HPARSER_VALUE;\n              break;\n            }\n          }\n          if (!done)\n            break;\n          // FALLTHROUGH\n        }\n        case HPARSER_VALUE:\n          switch (this.crlf) {\n            case 0: // Nothing yet\n              for (; pos < end; ++pos) {\n                if (this.byteCount === MAX_HEADER_SIZE)\n                  return -1;\n                ++this.byteCount;\n                const code = chunk[pos];\n                if (FIELD_VCHAR[code] !== 1) {\n                  if (code !== 13/* '\\r' */)\n                    return -1;\n                  ++this.crlf;\n                  break;\n                }\n              }\n              this.value += chunk.latin1Slice(start, pos++);\n              break;\n            case 1: // Received CR\n              if (this.byteCount === MAX_HEADER_SIZE)\n                return -1;\n              ++this.byteCount;\n              if (chunk[pos++] !== 10/* '\\n' */)\n                return -1;\n              ++this.crlf;\n              break;\n            case 2: { // Received CR LF\n              if (this.byteCount === MAX_HEADER_SIZE)\n                return -1;\n              ++this.byteCount;\n              const code = chunk[pos];\n              if (code === 32/* ' ' */ || code === 9/* '\\t' */) {\n                // Folded value\n                start = pos;\n                this.crlf = 0;\n              } else {\n                if (++this.pairCount < MAX_HEADER_PAIRS) {\n                  this.name = this.name.toLowerCase();\n                  if (this.header[this.name] === undefined)\n                    this.header[this.name] = [this.value];\n                  else\n                    this.header[this.name].push(this.value);\n                }\n                if (code === 13/* '\\r' */) {\n                  ++this.crlf;\n                  ++pos;\n                } else {\n                  // Assume start of next header field name\n                  start = pos;\n                  this.crlf = 0;\n                  this.state = HPARSER_NAME;\n                  this.name = '';\n                  this.value = '';\n                }\n              }\n              break;\n            }\n            case 3: { // Received CR LF CR\n              if (this.byteCount === MAX_HEADER_SIZE)\n                return -1;\n              ++this.byteCount;\n              if (chunk[pos++] !== 10/* '\\n' */)\n                return -1;\n              // End of header\n              const header = this.header;\n              this.reset();\n              this.cb(header);\n              return pos;\n            }\n          }\n          break;\n      }\n    }\n\n    return pos;\n  }\n}\n\nclass FileStream extends Readable {\n  constructor(opts, owner) {\n    super(opts);\n    this.truncated = false;\n    this._readcb = null;\n    this.once('end', () => {\n      // We need to make sure that we call any outstanding _writecb() that is\n      // associated with this file so that processing of the rest of the form\n      // can continue. This may not happen if the file stream ends right after\n      // backpressure kicks in, so we force it here.\n      this._read();\n      if (--owner._fileEndsLeft === 0 && owner._finalcb) {\n        const cb = owner._finalcb;\n        owner._finalcb = null;\n        // Make sure other 'end' event handlers get a chance to be executed\n        // before busboy's 'finish' event is emitted\n        process.nextTick(cb);\n      }\n    });\n  }\n  _read(n) {\n    const cb = this._readcb;\n    if (cb) {\n      this._readcb = null;\n      cb();\n    }\n  }\n}\n\nconst ignoreData = {\n  push: (chunk, pos) => {},\n  destroy: () => {},\n};\n\nfunction callAndUnsetCb(self, err) {\n  const cb = self._writecb;\n  self._writecb = null;\n  if (err)\n    self.destroy(err);\n  else if (cb)\n    cb();\n}\n\nfunction nullDecoder(val, hint) {\n  return val;\n}\n\nclass Multipart extends Writable {\n  constructor(cfg) {\n    const streamOpts = {\n      autoDestroy: true,\n      emitClose: true,\n      highWaterMark: (typeof cfg.highWaterMark === 'number'\n                      ? cfg.highWaterMark\n                      : undefined),\n    };\n    super(streamOpts);\n\n    if (!cfg.conType.params || typeof cfg.conType.params.boundary !== 'string')\n      throw new Error('Multipart: Boundary not found');\n\n    const boundary = cfg.conType.params.boundary;\n    const paramDecoder = (typeof cfg.defParamCharset === 'string'\n                            && cfg.defParamCharset\n                          ? getDecoder(cfg.defParamCharset)\n                          : nullDecoder);\n    const defCharset = (cfg.defCharset || 'utf8');\n    const preservePath = cfg.preservePath;\n    const fileOpts = {\n      autoDestroy: true,\n      emitClose: true,\n      highWaterMark: (typeof cfg.fileHwm === 'number'\n                      ? cfg.fileHwm\n                      : undefined),\n    };\n\n    const limits = cfg.limits;\n    const fieldSizeLimit = (limits && typeof limits.fieldSize === 'number'\n                            ? limits.fieldSize\n                            : 1 * 1024 * 1024);\n    const fileSizeLimit = (limits && typeof limits.fileSize === 'number'\n                           ? limits.fileSize\n                           : Infinity);\n    const filesLimit = (limits && typeof limits.files === 'number'\n                        ? limits.files\n                        : Infinity);\n    const fieldsLimit = (limits && typeof limits.fields === 'number'\n                         ? limits.fields\n                         : Infinity);\n    const partsLimit = (limits && typeof limits.parts === 'number'\n                        ? limits.parts\n                        : Infinity);\n\n    let parts = -1; // Account for initial boundary\n    let fields = 0;\n    let files = 0;\n    let skipPart = false;\n\n    this._fileEndsLeft = 0;\n    this._fileStream = undefined;\n    this._complete = false;\n    let fileSize = 0;\n\n    let field;\n    let fieldSize = 0;\n    let partCharset;\n    let partEncoding;\n    let partType;\n    let partName;\n    let partTruncated = false;\n\n    let hitFilesLimit = false;\n    let hitFieldsLimit = false;\n\n    this._hparser = null;\n    const hparser = new HeaderParser((header) => {\n      this._hparser = null;\n      skipPart = false;\n\n      partType = 'text/plain';\n      partCharset = defCharset;\n      partEncoding = '7bit';\n      partName = undefined;\n      partTruncated = false;\n\n      let filename;\n      if (!header['content-disposition']) {\n        skipPart = true;\n        return;\n      }\n\n      const disp = parseDisposition(header['content-disposition'][0],\n                                    paramDecoder);\n      if (!disp || disp.type !== 'form-data') {\n        skipPart = true;\n        return;\n      }\n\n      if (disp.params) {\n        if (disp.params.name)\n          partName = disp.params.name;\n\n        if (disp.params['filename*'])\n          filename = disp.params['filename*'];\n        else if (disp.params.filename)\n          filename = disp.params.filename;\n\n        if (filename !== undefined && !preservePath)\n          filename = basename(filename);\n      }\n\n      if (header['content-type']) {\n        const conType = parseContentType(header['content-type'][0]);\n        if (conType) {\n          partType = `${conType.type}/${conType.subtype}`;\n          if (conType.params && typeof conType.params.charset === 'string')\n            partCharset = conType.params.charset.toLowerCase();\n        }\n      }\n\n      if (header['content-transfer-encoding'])\n        partEncoding = header['content-transfer-encoding'][0].toLowerCase();\n\n      if (partType === 'application/octet-stream' || filename !== undefined) {\n        // File\n\n        if (files === filesLimit) {\n          if (!hitFilesLimit) {\n            hitFilesLimit = true;\n            this.emit('filesLimit');\n          }\n          skipPart = true;\n          return;\n        }\n        ++files;\n\n        if (this.listenerCount('file') === 0) {\n          skipPart = true;\n          return;\n        }\n\n        fileSize = 0;\n        this._fileStream = new FileStream(fileOpts, this);\n        ++this._fileEndsLeft;\n        this.emit(\n          'file',\n          partName,\n          this._fileStream,\n          { filename,\n            encoding: partEncoding,\n            mimeType: partType }\n        );\n      } else {\n        // Non-file\n\n        if (fields === fieldsLimit) {\n          if (!hitFieldsLimit) {\n            hitFieldsLimit = true;\n            this.emit('fieldsLimit');\n          }\n          skipPart = true;\n          return;\n        }\n        ++fields;\n\n        if (this.listenerCount('field') === 0) {\n          skipPart = true;\n          return;\n        }\n\n        field = [];\n        fieldSize = 0;\n      }\n    });\n\n    let matchPostBoundary = 0;\n    const ssCb = (isMatch, data, start, end, isDataSafe) => {\nretrydata:\n      while (data) {\n        if (this._hparser !== null) {\n          const ret = this._hparser.push(data, start, end);\n          if (ret === -1) {\n            this._hparser = null;\n            hparser.reset();\n            this.emit('error', new Error('Malformed part header'));\n            break;\n          }\n          start = ret;\n        }\n\n        if (start === end)\n          break;\n\n        if (matchPostBoundary !== 0) {\n          if (matchPostBoundary === 1) {\n            switch (data[start]) {\n              case 45: // '-'\n                // Try matching '--' after boundary\n                matchPostBoundary = 2;\n                ++start;\n                break;\n              case 13: // '\\r'\n                // Try matching CR LF before header\n                matchPostBoundary = 3;\n                ++start;\n                break;\n              default:\n                matchPostBoundary = 0;\n            }\n            if (start === end)\n              return;\n          }\n\n          if (matchPostBoundary === 2) {\n            matchPostBoundary = 0;\n            if (data[start] === 45/* '-' */) {\n              // End of multipart data\n              this._complete = true;\n              this._bparser = ignoreData;\n              return;\n            }\n            // We saw something other than '-', so put the dash we consumed\n            // \"back\"\n            const writecb = this._writecb;\n            this._writecb = noop;\n            ssCb(false, BUF_DASH, 0, 1, false);\n            this._writecb = writecb;\n          } else if (matchPostBoundary === 3) {\n            matchPostBoundary = 0;\n            if (data[start] === 10/* '\\n' */) {\n              ++start;\n              if (parts >= partsLimit)\n                break;\n              // Prepare the header parser\n              this._hparser = hparser;\n              if (start === end)\n                break;\n              // Process the remaining data as a header\n              continue retrydata;\n            } else {\n              // We saw something other than LF, so put the CR we consumed\n              // \"back\"\n              const writecb = this._writecb;\n              this._writecb = noop;\n              ssCb(false, BUF_CR, 0, 1, false);\n              this._writecb = writecb;\n            }\n          }\n        }\n\n        if (!skipPart) {\n          if (this._fileStream) {\n            let chunk;\n            const actualLen = Math.min(end - start, fileSizeLimit - fileSize);\n            if (!isDataSafe) {\n              chunk = Buffer.allocUnsafe(actualLen);\n              data.copy(chunk, 0, start, start + actualLen);\n            } else {\n              chunk = data.slice(start, start + actualLen);\n            }\n\n            fileSize += chunk.length;\n            if (fileSize === fileSizeLimit) {\n              if (chunk.length > 0)\n                this._fileStream.push(chunk);\n              this._fileStream.emit('limit');\n              this._fileStream.truncated = true;\n              skipPart = true;\n            } else if (!this._fileStream.push(chunk)) {\n              if (this._writecb)\n                this._fileStream._readcb = this._writecb;\n              this._writecb = null;\n            }\n          } else if (field !== undefined) {\n            let chunk;\n            const actualLen = Math.min(\n              end - start,\n              fieldSizeLimit - fieldSize\n            );\n            if (!isDataSafe) {\n              chunk = Buffer.allocUnsafe(actualLen);\n              data.copy(chunk, 0, start, start + actualLen);\n            } else {\n              chunk = data.slice(start, start + actualLen);\n            }\n\n            fieldSize += actualLen;\n            field.push(chunk);\n            if (fieldSize === fieldSizeLimit) {\n              skipPart = true;\n              partTruncated = true;\n            }\n          }\n        }\n\n        break;\n      }\n\n      if (isMatch) {\n        matchPostBoundary = 1;\n\n        if (this._fileStream) {\n          // End the active file stream if the previous part was a file\n          this._fileStream.push(null);\n          this._fileStream = null;\n        } else if (field !== undefined) {\n          let data;\n          switch (field.length) {\n            case 0:\n              data = '';\n              break;\n            case 1:\n              data = convertToUTF8(field[0], partCharset, 0);\n              break;\n            default:\n              data = convertToUTF8(\n                Buffer.concat(field, fieldSize),\n                partCharset,\n                0\n              );\n          }\n          field = undefined;\n          fieldSize = 0;\n          this.emit(\n            'field',\n            partName,\n            data,\n            { nameTruncated: false,\n              valueTruncated: partTruncated,\n              encoding: partEncoding,\n              mimeType: partType }\n          );\n        }\n\n        if (++parts === partsLimit)\n          this.emit('partsLimit');\n      }\n    };\n    this._bparser = new StreamSearch(`\\r\\n--${boundary}`, ssCb);\n\n    this._writecb = null;\n    this._finalcb = null;\n\n    // Just in case there is no preamble\n    this.write(BUF_CRLF);\n  }\n\n  static detect(conType) {\n    return (conType.type === 'multipart' && conType.subtype === 'form-data');\n  }\n\n  _write(chunk, enc, cb) {\n    this._writecb = cb;\n    this._bparser.push(chunk, 0);\n    if (this._writecb)\n      callAndUnsetCb(this);\n  }\n\n  _destroy(err, cb) {\n    this._hparser = null;\n    this._bparser = ignoreData;\n    if (!err)\n      err = checkEndState(this);\n    const fileStream = this._fileStream;\n    if (fileStream) {\n      this._fileStream = null;\n      fileStream.destroy(err);\n    }\n    cb(err);\n  }\n\n  _final(cb) {\n    this._bparser.destroy();\n    if (!this._complete)\n      return cb(new Error('Unexpected end of form'));\n    if (this._fileEndsLeft)\n      this._finalcb = finalcb.bind(null, this, cb);\n    else\n      finalcb(this, cb);\n  }\n}\n\nfunction finalcb(self, cb, err) {\n  if (err)\n    return cb(err);\n  err = checkEndState(self);\n  cb(err);\n}\n\nfunction checkEndState(self) {\n  if (self._hparser)\n    return new Error('Malformed part header');\n  const fileStream = self._fileStream;\n  if (fileStream) {\n    self._fileStream = null;\n    fileStream.destroy(new Error('Unexpected end of file'));\n  }\n  if (!self._complete)\n    return new Error('Unexpected end of form');\n}\n\nconst TOKEN = [\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,\n  0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n];\n\nconst FIELD_VCHAR = [\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,\n  0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n  1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n];\n\nmodule.exports = Multipart;\n", "'use strict';\n\nconst { Writable } = require('stream');\n\nconst { getDecoder } = require('../utils.js');\n\nclass URLEncoded extends Writable {\n  constructor(cfg) {\n    const streamOpts = {\n      autoDestroy: true,\n      emitClose: true,\n      highWaterMark: (typeof cfg.highWaterMark === 'number'\n                      ? cfg.highWaterMark\n                      : undefined),\n    };\n    super(streamOpts);\n\n    let charset = (cfg.defCharset || 'utf8');\n    if (cfg.conType.params && typeof cfg.conType.params.charset === 'string')\n      charset = cfg.conType.params.charset;\n\n    this.charset = charset;\n\n    const limits = cfg.limits;\n    this.fieldSizeLimit = (limits && typeof limits.fieldSize === 'number'\n                           ? limits.fieldSize\n                           : 1 * 1024 * 1024);\n    this.fieldsLimit = (limits && typeof limits.fields === 'number'\n                        ? limits.fields\n                        : Infinity);\n    this.fieldNameSizeLimit = (\n      limits && typeof limits.fieldNameSize === 'number'\n      ? limits.fieldNameSize\n      : 100\n    );\n\n    this._inKey = true;\n    this._keyTrunc = false;\n    this._valTrunc = false;\n    this._bytesKey = 0;\n    this._bytesVal = 0;\n    this._fields = 0;\n    this._key = '';\n    this._val = '';\n    this._byte = -2;\n    this._lastPos = 0;\n    this._encode = 0;\n    this._decoder = getDecoder(charset);\n  }\n\n  static detect(conType) {\n    return (conType.type === 'application'\n            && conType.subtype === 'x-www-form-urlencoded');\n  }\n\n  _write(chunk, enc, cb) {\n    if (this._fields >= this.fieldsLimit)\n      return cb();\n\n    let i = 0;\n    const len = chunk.length;\n    this._lastPos = 0;\n\n    // Check if we last ended mid-percent-encoded byte\n    if (this._byte !== -2) {\n      i = readPctEnc(this, chunk, i, len);\n      if (i === -1)\n        return cb(new Error('Malformed urlencoded form'));\n      if (i >= len)\n        return cb();\n      if (this._inKey)\n        ++this._bytesKey;\n      else\n        ++this._bytesVal;\n    }\n\nmain:\n    while (i < len) {\n      if (this._inKey) {\n        // Parsing key\n\n        i = skipKeyBytes(this, chunk, i, len);\n\n        while (i < len) {\n          switch (chunk[i]) {\n            case 61: // '='\n              if (this._lastPos < i)\n                this._key += chunk.latin1Slice(this._lastPos, i);\n              this._lastPos = ++i;\n              this._key = this._decoder(this._key, this._encode);\n              this._encode = 0;\n              this._inKey = false;\n              continue main;\n            case 38: // '&'\n              if (this._lastPos < i)\n                this._key += chunk.latin1Slice(this._lastPos, i);\n              this._lastPos = ++i;\n              this._key = this._decoder(this._key, this._encode);\n              this._encode = 0;\n              if (this._bytesKey > 0) {\n                this.emit(\n                  'field',\n                  this._key,\n                  '',\n                  { nameTruncated: this._keyTrunc,\n                    valueTruncated: false,\n                    encoding: this.charset,\n                    mimeType: 'text/plain' }\n                );\n              }\n              this._key = '';\n              this._val = '';\n              this._keyTrunc = false;\n              this._valTrunc = false;\n              this._bytesKey = 0;\n              this._bytesVal = 0;\n              if (++this._fields >= this.fieldsLimit) {\n                this.emit('fieldsLimit');\n                return cb();\n              }\n              continue;\n            case 43: // '+'\n              if (this._lastPos < i)\n                this._key += chunk.latin1Slice(this._lastPos, i);\n              this._key += ' ';\n              this._lastPos = i + 1;\n              break;\n            case 37: // '%'\n              if (this._encode === 0)\n                this._encode = 1;\n              if (this._lastPos < i)\n                this._key += chunk.latin1Slice(this._lastPos, i);\n              this._lastPos = i + 1;\n              this._byte = -1;\n              i = readPctEnc(this, chunk, i + 1, len);\n              if (i === -1)\n                return cb(new Error('Malformed urlencoded form'));\n              if (i >= len)\n                return cb();\n              ++this._bytesKey;\n              i = skipKeyBytes(this, chunk, i, len);\n              continue;\n          }\n          ++i;\n          ++this._bytesKey;\n          i = skipKeyBytes(this, chunk, i, len);\n        }\n        if (this._lastPos < i)\n          this._key += chunk.latin1Slice(this._lastPos, i);\n      } else {\n        // Parsing value\n\n        i = skipValBytes(this, chunk, i, len);\n\n        while (i < len) {\n          switch (chunk[i]) {\n            case 38: // '&'\n              if (this._lastPos < i)\n                this._val += chunk.latin1Slice(this._lastPos, i);\n              this._lastPos = ++i;\n              this._inKey = true;\n              this._val = this._decoder(this._val, this._encode);\n              this._encode = 0;\n              if (this._bytesKey > 0 || this._bytesVal > 0) {\n                this.emit(\n                  'field',\n                  this._key,\n                  this._val,\n                  { nameTruncated: this._keyTrunc,\n                    valueTruncated: this._valTrunc,\n                    encoding: this.charset,\n                    mimeType: 'text/plain' }\n                );\n              }\n              this._key = '';\n              this._val = '';\n              this._keyTrunc = false;\n              this._valTrunc = false;\n              this._bytesKey = 0;\n              this._bytesVal = 0;\n              if (++this._fields >= this.fieldsLimit) {\n                this.emit('fieldsLimit');\n                return cb();\n              }\n              continue main;\n            case 43: // '+'\n              if (this._lastPos < i)\n                this._val += chunk.latin1Slice(this._lastPos, i);\n              this._val += ' ';\n              this._lastPos = i + 1;\n              break;\n            case 37: // '%'\n              if (this._encode === 0)\n                this._encode = 1;\n              if (this._lastPos < i)\n                this._val += chunk.latin1Slice(this._lastPos, i);\n              this._lastPos = i + 1;\n              this._byte = -1;\n              i = readPctEnc(this, chunk, i + 1, len);\n              if (i === -1)\n                return cb(new Error('Malformed urlencoded form'));\n              if (i >= len)\n                return cb();\n              ++this._bytesVal;\n              i = skipValBytes(this, chunk, i, len);\n              continue;\n          }\n          ++i;\n          ++this._bytesVal;\n          i = skipValBytes(this, chunk, i, len);\n        }\n        if (this._lastPos < i)\n          this._val += chunk.latin1Slice(this._lastPos, i);\n      }\n    }\n\n    cb();\n  }\n\n  _final(cb) {\n    if (this._byte !== -2)\n      return cb(new Error('Malformed urlencoded form'));\n    if (!this._inKey || this._bytesKey > 0 || this._bytesVal > 0) {\n      if (this._inKey)\n        this._key = this._decoder(this._key, this._encode);\n      else\n        this._val = this._decoder(this._val, this._encode);\n      this.emit(\n        'field',\n        this._key,\n        this._val,\n        { nameTruncated: this._keyTrunc,\n          valueTruncated: this._valTrunc,\n          encoding: this.charset,\n          mimeType: 'text/plain' }\n      );\n    }\n    cb();\n  }\n}\n\nfunction readPctEnc(self, chunk, pos, len) {\n  if (pos >= len)\n    return len;\n\n  if (self._byte === -1) {\n    // We saw a '%' but no hex characters yet\n    const hexUpper = HEX_VALUES[chunk[pos++]];\n    if (hexUpper === -1)\n      return -1;\n\n    if (hexUpper >= 8)\n      self._encode = 2; // Indicate high bits detected\n\n    if (pos < len) {\n      // Both hex characters are in this chunk\n      const hexLower = HEX_VALUES[chunk[pos++]];\n      if (hexLower === -1)\n        return -1;\n\n      if (self._inKey)\n        self._key += String.fromCharCode((hexUpper << 4) + hexLower);\n      else\n        self._val += String.fromCharCode((hexUpper << 4) + hexLower);\n\n      self._byte = -2;\n      self._lastPos = pos;\n    } else {\n      // Only one hex character was available in this chunk\n      self._byte = hexUpper;\n    }\n  } else {\n    // We saw only one hex character so far\n    const hexLower = HEX_VALUES[chunk[pos++]];\n    if (hexLower === -1)\n      return -1;\n\n    if (self._inKey)\n      self._key += String.fromCharCode((self._byte << 4) + hexLower);\n    else\n      self._val += String.fromCharCode((self._byte << 4) + hexLower);\n\n    self._byte = -2;\n    self._lastPos = pos;\n  }\n\n  return pos;\n}\n\nfunction skipKeyBytes(self, chunk, pos, len) {\n  // Skip bytes if we've truncated\n  if (self._bytesKey > self.fieldNameSizeLimit) {\n    if (!self._keyTrunc) {\n      if (self._lastPos < pos)\n        self._key += chunk.latin1Slice(self._lastPos, pos - 1);\n    }\n    self._keyTrunc = true;\n    for (; pos < len; ++pos) {\n      const code = chunk[pos];\n      if (code === 61/* '=' */ || code === 38/* '&' */)\n        break;\n      ++self._bytesKey;\n    }\n    self._lastPos = pos;\n  }\n\n  return pos;\n}\n\nfunction skipValBytes(self, chunk, pos, len) {\n  // Skip bytes if we've truncated\n  if (self._bytesVal > self.fieldSizeLimit) {\n    if (!self._valTrunc) {\n      if (self._lastPos < pos)\n        self._val += chunk.latin1Slice(self._lastPos, pos - 1);\n    }\n    self._valTrunc = true;\n    for (; pos < len; ++pos) {\n      if (chunk[pos] === 38/* '&' */)\n        break;\n      ++self._bytesVal;\n    }\n    self._lastPos = pos;\n  }\n\n  return pos;\n}\n\n/* eslint-disable no-multi-spaces */\nconst HEX_VALUES = [\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n   0,  1,  2,  3,  4,  5,  6,  7,  8,  9, -1, -1, -1, -1, -1, -1,\n  -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n];\n/* eslint-enable no-multi-spaces */\n\nmodule.exports = URLEncoded;\n", "'use strict';\n\nconst { parseContentType } = require('./utils.js');\n\nfunction getInstance(cfg) {\n  const headers = cfg.headers;\n  const conType = parseContentType(headers['content-type']);\n  if (!conType)\n    throw new Error('Malformed content type');\n\n  for (const type of TYPES) {\n    const matched = type.detect(conType);\n    if (!matched)\n      continue;\n\n    const instanceCfg = {\n      limits: cfg.limits,\n      headers,\n      conType,\n      highWaterMark: undefined,\n      fileHwm: undefined,\n      defCharset: undefined,\n      defParamCharset: undefined,\n      preservePath: false,\n    };\n    if (cfg.highWaterMark)\n      instanceCfg.highWaterMark = cfg.highWaterMark;\n    if (cfg.fileHwm)\n      instanceCfg.fileHwm = cfg.fileHwm;\n    instanceCfg.defCharset = cfg.defCharset;\n    instanceCfg.defParamCharset = cfg.defParamCharset;\n    instanceCfg.preservePath = cfg.preservePath;\n    return new type(instanceCfg);\n  }\n\n  throw new Error(`Unsupported content type: ${headers['content-type']}`);\n}\n\n// Note: types are explicitly listed here for easier bundling\n// See: https://github.com/mscdex/busboy/issues/121\nconst TYPES = [\n  require('./types/multipart'),\n  require('./types/urlencoded'),\n].filter(function(typemod) { return typeof typemod.detect === 'function'; });\n\nmodule.exports = (cfg) => {\n  if (typeof cfg !== 'object' || cfg === null)\n    cfg = {};\n\n  if (typeof cfg.headers !== 'object'\n      || cfg.headers === null\n      || typeof cfg.headers['content-type'] !== 'string') {\n    throw new Error('Missing Content-Type');\n  }\n\n  return getInstance(cfg);\n};\n", "(function (root, factory) {\n  'use strict'\n\n  /*istanbul ignore next:cant test*/\n  if (typeof module === 'object' && typeof module.exports === 'object') {\n    module.exports = factory()\n  } else if (typeof define === 'function' && define.amd) {\n    // AMD. Register as an anonymous module.\n    define([], factory)\n  } else {\n    // Browser globals\n    root.objectPath = factory()\n  }\n})(this, function () {\n  'use strict'\n\n  var toStr = Object.prototype.toString\n\n  function hasOwnProperty (obj, prop) {\n    if (obj == null) {\n      return false\n    }\n    //to handle objects with null prototypes (too edge case?)\n    return Object.prototype.hasOwnProperty.call(obj, prop)\n  }\n\n  function isEmpty (value) {\n    if (!value) {\n      return true\n    }\n    if (isArray(value) && value.length === 0) {\n      return true\n    } else if (typeof value !== 'string') {\n      for (var i in value) {\n        if (hasOwnProperty(value, i)) {\n          return false\n        }\n      }\n      return true\n    }\n    return false\n  }\n\n  function toString (type) {\n    return toStr.call(type)\n  }\n\n  function isObject (obj) {\n    return typeof obj === 'object' && toString(obj) === '[object Object]'\n  }\n\n  var isArray = Array.isArray || function (obj) {\n    /*istanbul ignore next:cant test*/\n    return toStr.call(obj) === '[object Array]'\n  }\n\n  function isBoolean (obj) {\n    return typeof obj === 'boolean' || toString(obj) === '[object Boolean]'\n  }\n\n  function getKey (key) {\n    var intKey = parseInt(key)\n    if (intKey.toString() === key) {\n      return intKey\n    }\n    return key\n  }\n\n  function factory (options) {\n    options = options || {}\n\n    var objectPath = function (obj) {\n      return Object.keys(objectPath).reduce(function (proxy, prop) {\n        if (prop === 'create') {\n          return proxy\n        }\n\n        /*istanbul ignore else*/\n        if (typeof objectPath[prop] === 'function') {\n          proxy[prop] = objectPath[prop].bind(objectPath, obj)\n        }\n\n        return proxy\n      }, {})\n    }\n\n    var hasShallowProperty\n    if (options.includeInheritedProps) {\n      hasShallowProperty = function () {\n        return true\n      }\n    } else {\n      hasShallowProperty = function (obj, prop) {\n        return (typeof prop === 'number' && Array.isArray(obj)) || hasOwnProperty(obj, prop)\n      }\n    }\n\n    function getShallowProperty (obj, prop) {\n      if (hasShallowProperty(obj, prop)) {\n        return obj[prop]\n      }\n    }\n\n    var getShallowPropertySafely\n    if (options.includeInheritedProps) {\n      getShallowPropertySafely = function (obj, currentPath) {\n        if (typeof currentPath !== 'string' && typeof currentPath !== 'number') {\n          currentPath = String(currentPath)\n        }\n        var currentValue = getShallowProperty(obj, currentPath)\n        if (currentPath === '__proto__' || currentPath === 'prototype' ||\n          (currentPath === 'constructor' && typeof currentValue === 'function')) {\n          throw new Error('For security reasons, object\\'s magic properties cannot be set')\n        }\n        return currentValue\n      }\n    } else {\n      getShallowPropertySafely = function (obj, currentPath) {\n        return getShallowProperty(obj, currentPath)\n      }\n    }\n\n    function set (obj, path, value, doNotReplace) {\n      if (typeof path === 'number') {\n        path = [path]\n      }\n      if (!path || path.length === 0) {\n        return obj\n      }\n      if (typeof path === 'string') {\n        return set(obj, path.split('.').map(getKey), value, doNotReplace)\n      }\n      var currentPath = path[0]\n      var currentValue = getShallowPropertySafely(obj, currentPath)\n      if (path.length === 1) {\n        if (currentValue === void 0 || !doNotReplace) {\n          obj[currentPath] = value\n        }\n        return currentValue\n      }\n\n      if (currentValue === void 0) {\n        //check if we assume an array\n        if (typeof path[1] === 'number') {\n          obj[currentPath] = []\n        } else {\n          obj[currentPath] = {}\n        }\n      }\n\n      return set(obj[currentPath], path.slice(1), value, doNotReplace)\n    }\n\n    objectPath.has = function (obj, path) {\n      if (typeof path === 'number') {\n        path = [path]\n      } else if (typeof path === 'string') {\n        path = path.split('.')\n      }\n\n      if (!path || path.length === 0) {\n        return !!obj\n      }\n\n      for (var i = 0; i < path.length; i++) {\n        var j = getKey(path[i])\n\n        if ((typeof j === 'number' && isArray(obj) && j < obj.length) ||\n          (options.includeInheritedProps ? (j in Object(obj)) : hasOwnProperty(obj, j))) {\n          obj = obj[j]\n        } else {\n          return false\n        }\n      }\n\n      return true\n    }\n\n    objectPath.ensureExists = function (obj, path, value) {\n      return set(obj, path, value, true)\n    }\n\n    objectPath.set = function (obj, path, value, doNotReplace) {\n      return set(obj, path, value, doNotReplace)\n    }\n\n    objectPath.insert = function (obj, path, value, at) {\n      var arr = objectPath.get(obj, path)\n      at = ~~at\n      if (!isArray(arr)) {\n        arr = []\n        objectPath.set(obj, path, arr)\n      }\n      arr.splice(at, 0, value)\n    }\n\n    objectPath.empty = function (obj, path) {\n      if (isEmpty(path)) {\n        return void 0\n      }\n      if (obj == null) {\n        return void 0\n      }\n\n      var value, i\n      if (!(value = objectPath.get(obj, path))) {\n        return void 0\n      }\n\n      if (typeof value === 'string') {\n        return objectPath.set(obj, path, '')\n      } else if (isBoolean(value)) {\n        return objectPath.set(obj, path, false)\n      } else if (typeof value === 'number') {\n        return objectPath.set(obj, path, 0)\n      } else if (isArray(value)) {\n        value.length = 0\n      } else if (isObject(value)) {\n        for (i in value) {\n          if (hasShallowProperty(value, i)) {\n            delete value[i]\n          }\n        }\n      } else {\n        return objectPath.set(obj, path, null)\n      }\n    }\n\n    objectPath.push = function (obj, path /*, values */) {\n      var arr = objectPath.get(obj, path)\n      if (!isArray(arr)) {\n        arr = []\n        objectPath.set(obj, path, arr)\n      }\n\n      arr.push.apply(arr, Array.prototype.slice.call(arguments, 2))\n    }\n\n    objectPath.coalesce = function (obj, paths, defaultValue) {\n      var value\n\n      for (var i = 0, len = paths.length; i < len; i++) {\n        if ((value = objectPath.get(obj, paths[i])) !== void 0) {\n          return value\n        }\n      }\n\n      return defaultValue\n    }\n\n    objectPath.get = function (obj, path, defaultValue) {\n      if (typeof path === 'number') {\n        path = [path]\n      }\n      if (!path || path.length === 0) {\n        return obj\n      }\n      if (obj == null) {\n        return defaultValue\n      }\n      if (typeof path === 'string') {\n        return objectPath.get(obj, path.split('.'), defaultValue)\n      }\n\n      var currentPath = getKey(path[0])\n      var nextObj = getShallowPropertySafely(obj, currentPath)\n      if (nextObj === void 0) {\n        return defaultValue\n      }\n\n      if (path.length === 1) {\n        return nextObj\n      }\n\n      return objectPath.get(obj[currentPath], path.slice(1), defaultValue)\n    }\n\n    objectPath.del = function del (obj, path) {\n      if (typeof path === 'number') {\n        path = [path]\n      }\n\n      if (obj == null) {\n        return obj\n      }\n\n      if (isEmpty(path)) {\n        return obj\n      }\n      if (typeof path === 'string') {\n        return objectPath.del(obj, path.split('.'))\n      }\n\n      var currentPath = getKey(path[0])\n      getShallowPropertySafely(obj, currentPath)\n      if (!hasShallowProperty(obj, currentPath)) {\n        return obj\n      }\n\n      if (path.length === 1) {\n        if (isArray(obj)) {\n          obj.splice(currentPath, 1)\n        } else {\n          delete obj[currentPath]\n        }\n      } else {\n        return objectPath.del(obj[currentPath], path.slice(1))\n      }\n\n      return obj\n    }\n\n    return objectPath\n  }\n\n  var mod = factory()\n  mod.create = factory\n  mod.withInheritedProps = factory({includeInheritedProps: true})\n  return mod\n})\n", "import { createServiceConfig } from '@restorecommerce/service-config';\nimport { createLogger } from '@restorecommerce/logger';\nimport {\n  createFacade,\n  reqResLogger,\n  resourceModule,\n  identityModule,\n  accessControlModule,\n  fulfillmentModule,\n  catalogModule,\n  indexingModule,\n  invoicingModule,\n  notificationModule,\n  orderingModule,\n  ostorageModule,\n  paymentModule,\n  schedulingModule\n} from './src/index.js';\n\nimport jwks from './test/jwks.json' with { type: 'json' };\n\nconst createTestFacade = () => {\n  const serviceConfig = createServiceConfig(process.cwd());\n\n  const logger = createLogger(serviceConfig.get('logger'));\n\n  return createFacade({\n    ...serviceConfig.get('facade'),\n    env: serviceConfig.get('NODE_ENV'),\n    logger,\n  })\n    .useModule(identityModule({\n      identitySrvClientConfig: serviceConfig.get('identity').client,\n      config: serviceConfig.get('identity'),\n      oidc: {\n        // remoteTokenService: new TokenServiceStub(),\n        client_id: 'TEST_CLIENT_ID',\n        client_secret: 'TEST_CLIENT_SECRET',\n        cookies: {\n          keys: ['TEST_COOKIE_SECRET']\n        },\n        issuer: 'http://localhost:5000',\n        redirect_uris: [\n          'http://localhost:5000/session',\n          'http://localhost:4200'\n        ],\n        post_logout_redirect_uris: [\n          'http://localhost:4200'\n        ],\n        jwks,\n      },\n      oauth: true\n    }))\n    .useModule(resourceModule({config: serviceConfig.get('master_data')}))\n    .useModule(accessControlModule({config: serviceConfig.get('access_control')}))\n    .useModule(fulfillmentModule({config: serviceConfig.get('fulfillment')}))\n    .useModule(catalogModule({config: serviceConfig.get('catalog')}))\n    .useModule(indexingModule({config: serviceConfig.get('indexing')}))\n    .useModule(invoicingModule({config: serviceConfig.get('invoicing')}))\n    .useModule(notificationModule({config: serviceConfig.get('notification')}))\n    .useModule(orderingModule({config: serviceConfig.get('ordering')}))\n    .useModule(ostorageModule({config: serviceConfig.get('ostorage')}))\n    .useModule(paymentModule({config: serviceConfig.get('payment')}))\n    .useModule(schedulingModule({config: serviceConfig.get('scheduling')}))\n    .useMiddleware(reqResLogger({logger}));\n};\n\nconst facade = createTestFacade();\n\nfacade.start();\n\n", "import { createLogger, type Logger } from '@restorecommerce/logger';\nimport { type Server, ServerResponse } from 'node:http';\n\nimport Koa from 'koa';\nimport { ApolloServer } from '@apollo/server';\nimport { koaMiddleware } from '@as-integrations/koa';\nimport { type AddressInfo } from 'node:net';\nimport { GraphQLSchema, printSchema } from 'graphql';\nimport { ApolloGateway, LocalGraphQLDataSource, RemoteGraphQLDataSource, IntrospectAndCompose } from '@apollo/gateway';\nimport { facadeStatusModule } from './modules/index.js';\nimport { type Facade, type FacadeBaseContext, type FacadeModule, type FacadeModuleBase, type FacadeModulesContext, FileUploadOptionsConfig } from './interfaces.js';\n\nimport { ApolloServerPluginDrainHttpServer } from '@apollo/server/plugin/drainHttpServer';\n\nimport { ApolloServerPluginLandingPageLocalDefault } from '@apollo/server/plugin/landingPage/default';\n\nimport { createServer } from 'node:http';\nimport { WebSocketServer } from 'ws';\n/* eslint-disable */\nimport { useServer } from 'graphql-ws/use/ws';\nimport { type Disposable } from 'graphql-ws';\nimport _ from 'lodash';\nimport { makeExecutableSchema } from '@graphql-tools/schema';\nimport { parse } from 'graphql';\nimport { mergeSubscribeIntoSchema } from './gql/protos/index.js';\nimport compose from 'koa-compose';\nimport { type KafkaProviderConfig } from '@restorecommerce/kafka-client';\nimport { setUseSubscriptions } from './gql/protos/utils.js';\nimport bodyParser from 'koa-bodyparser';\nimport cors from '@koa/cors';\nimport graphqlUploadKoa from 'graphql-upload/graphqlUploadKoa.mjs';\nimport Router from 'koa-router';\nimport { decomposeError } from './utils.js';\nimport { GraphQLResolverMap } from '@apollo/subgraph/dist/schema-helper/resolverMap.js';\n\nexport * from './modules/index.js';\nexport * from './middlewares/index.js';\nexport * from './interfaces.js';\nexport * from './utils.js';\nexport * from './gql/index.js';\n\ninterface RestoreCommerceFacadeImplConfig {\n  koa: Koa<any, any>;\n  logger: Logger;\n  port?: number;\n  hostname?: string;\n  env?: string;\n  kafka?: KafkaProviderConfig['kafka'];\n  fileUploadOptions?: FileUploadOptionsConfig['fileUploadOptions'];\n  jsonLimit?: string;\n  extraServices?: { name: string, url: string }[];\n}\n\ninterface FacadeApolloServiceMap {\n  [key: string]: {\n    url?: string;\n    schema?: GraphQLSchema;\n  };\n}\n\nexport class RestoreCommerceFacade<TModules extends FacadeModuleBase[] = []> implements Facade<TModules> {\n\n  private apolloServices: FacadeApolloServiceMap = {};\n  private allResolvers: GraphQLResolverMap<any> = {};\n\n  private _server?: Server;\n  private _gqlServer?: ApolloServer;\n  private _initialized = false;\n  readonly logger: Logger;\n  readonly port: number;\n  readonly hostname: string;\n  readonly koa: Koa<any, FacadeModulesContext<TModules>>;\n  readonly env: string;\n  readonly modules: FacadeModule[] = [];\n  readonly kafkaConfig?: KafkaProviderConfig['kafka'];\n  readonly fileUploadOptionsConfig?: FileUploadOptionsConfig['fileUploadOptions'];\n  readonly jsonLimit?: string;\n  readonly extraServices?: { name: string, url: string }[];\n\n  private startFns: Array<(() => Promise<void>)> = [];\n  private stopFns: Array<(() => Promise<void>)> = [];\n\n  constructor({ koa, logger, port, hostname, env, kafka, fileUploadOptions, jsonLimit, extraServices }: RestoreCommerceFacadeImplConfig) {\n    this.logger = logger;\n    this.port = port ?? 5000;\n    this.hostname = hostname ?? '127.0.0.1';\n    this.koa = koa;\n    this.env = env ?? 'development';\n    this.kafkaConfig = kafka;\n    this.fileUploadOptionsConfig = fileUploadOptions;\n    this.jsonLimit = jsonLimit ? jsonLimit : '50mb';\n    this.extraServices = extraServices;\n\n    setUseSubscriptions(!!kafka);\n  }\n\n  get server() {\n    return this._server;\n  }\n\n  get address(): AddressInfo | undefined {\n    const address = this._server?.address();\n    if (address && typeof address === 'object') {\n      return address;\n    }\n    return undefined;\n  }\n\n  get listening(): boolean {\n    return !!this._server && this._server.listening;\n  }\n\n  useMiddleware<TNewState extends object = {}, TNewContext extends object = {}>(middleware: Koa.Middleware<TNewState, TNewContext>) {\n    this.koa.use(middleware);\n    return this as any;\n  }\n\n  useModule<TNewModule extends FacadeModule>(module: TNewModule) {\n    this.logger.info(`Adding module: ${module.moduleName}`);\n    if (this.modules.some(m => module.moduleName === m.moduleName)) {\n      throw new Error(`module ${module.moduleName} already loaded`);\n    }\n    this.modules.push(module);\n    module(this as any);\n    return this as any;\n  }\n\n  supportsModule<TSupportedModule extends FacadeModuleBase<FacadeBaseContext>>(module: TSupportedModule): this is Facade<[TSupportedModule, ...TModules]> & Facade<[...TModules]> {\n    return this.modules.some(m => module.moduleName === m.moduleName);\n  }\n\n  addApolloService({ name, schema, url }: { name: string; schema: any; url: string }) {\n    this.logger.info(`Adding Apollo service: ${name}`);\n    if ('astNode' in schema) {\n      this.apolloServices[name] = { schema, url };\n    } else if ('federatedSchema' in schema && 'resolvers' in schema) {\n      this.apolloServices[name] = { schema: schema.federatedSchema, url };\n      this.allResolvers = _.merge(this.allResolvers, schema.resolvers);\n    }\n  }\n\n  onStart(fn: () => Promise<void>): void {\n    debugger;\n    this.startFns.push(fn);\n  }\n  onStop(fn: () => Promise<void>): void {\n    this.stopFns.push(fn);\n  }\n\n  private async runFnQueue(fns: (() => Promise<void>)[]) {\n    const _fns = [...fns];\n    const runQueue = async () => {\n      const fn = _fns.shift();\n      if (fn) {\n        try {\n          await fn();\n        } catch (error) {\n          this.logger.error('Error in start/stop function', error);\n        }\n        await runQueue();\n      }\n    };\n    await runQueue();\n  }\n\n  async start(): Promise<void> {\n    if (!this._initialized) {\n      this.runFnQueue(this.startFns);\n      await this.mountApolloServer();\n      this._initialized = true;\n    }\n    return new Promise<void>((resolve, reject) => {\n      try {\n        this.server?.listen(this.port, this.hostname, () => {\n          const address = this.address;\n          if (address) {\n            this.logger.info(`Service is listening on ${address.address}:${address.port}`);\n          } else {\n            this.logger.info(`Service is listening`);\n          }\n          resolve();\n        });\n      } catch (err) {\n        reject(err);\n      }\n    });\n  }\n\n  async stop(): Promise<void> {\n    return await new Promise<void>(async (resolve, reject) => {\n      await this.runFnQueue(this.stopFns);\n\n      await this._gqlServer?.stop().catch((error) => {\n        if (error) {\n          this.logger.error(`Error stopping GQLServer`, decomposeError(error));\n        } else {\n          this.logger.info(`GQLServer stopped`);\n          this._gqlServer = undefined;\n        }\n      });\n\n      if (this._server?.listening) {\n        this._server?.close((error) => {\n          if (error) {\n            this.logger.error(`Error stopping service`, decomposeError(error));\n            reject(error);\n          } else {\n            this.logger.info(`Service stopped`);\n            this._server = undefined;\n            resolve();\n          }\n        });\n      }\n      else {\n        resolve();\n      }\n    });\n  }\n\n  private async mountApolloServer() {\n    const serviceList = Object.keys(this.apolloServices).map(key => {\n      return {\n        name: key,\n        url: this.apolloServices[key].url ?? `local`,\n      };\n    });\n\n    if (this.extraServices) {\n      serviceList.push(...this.extraServices);\n    }\n\n    const plugin = {\n      disposables: new Array<Disposable>(),\n      async serverWillStart() {\n        return {\n          async drainServer() {\n            await Promise.allSettled(plugin.disposables?.map(\n              d => d?.dispose()\n            ));\n          },\n        };\n      },\n    };\n\n    const gateway = new ApolloGateway({\n      logger: this.logger,\n      // serviceList,\n      supergraphSdl: new IntrospectAndCompose({\n        subgraphs: serviceList\n      }),\n      debug: true,\n      buildService: ({ name, url }) => {\n        if (url !== 'local') {\n          return new RemoteGraphQLDataSource({\n            url,\n            willSendRequest({ request, context }): Promise<void> | void {\n              if (context?.authorization) {\n                request.http.headers.set('authorization', context.authorization);\n              } else if (context?.request?.header?.authorization) {\n                request.http.headers.set('authorization', context.request.header.authorization);\n              }\n            },\n          });\n        } else {\n          const schema = this.apolloServices[name]?.schema;\n          if (schema) {\n            return new LocalGraphQLDataSource(schema);\n          } else {\n            throw new Error('Invalid schema ' + name);\n          }\n        }\n      }\n    });\n\n    this._server = createServer(this.koa.callback());\n\n    const wsServer = new WebSocketServer({\n      server: this._server,\n      path: '/graphql',\n    });\n\n    gateway.onSchemaLoadOrUpdate(schemaContext => {\n      try {\n        const typeDefs = printSchema(new GraphQLSchema({\n          subscription: schemaContext.apiSchema.getSubscriptionType()\n        }));\n\n        const schema = makeExecutableSchema({\n          typeDefs: parse(typeDefs + `\n          type Query { sample: String }\n          `),\n          resolvers: {\n            Subscription: {\n              ...this.allResolvers?.Subscription\n            }\n          }\n        });\n\n        if ('Subscription' in this.allResolvers) {\n          mergeSubscribeIntoSchema(schema.getSubscriptionType(), this.allResolvers?.Subscription);\n        }\n\n        plugin.disposables.push(useServer({\n          schema,\n          context: async (ctx, message, args) => {\n            const newCtx = this.koa.createContext(ctx.extra.request, new ServerResponse(ctx.extra.request));\n            const fn = await (compose(this.koa.middleware) as any);\n            await fn(newCtx);\n            newCtx.kafkaConfig = this.kafkaConfig;\n            newCtx.logger = this.logger;\n            return newCtx;\n          },\n        }, wsServer));\n      }\n      catch (error) {\n        this.logger?.warn('Gateway onSchemaLoadOrUpdate:', decomposeError(error));\n      }\n    });\n\n    this._gqlServer = new ApolloServer({\n      gateway,\n      introspection: true,\n      allowBatchedHttpRequests: true,\n      plugins: [\n        ApolloServerPluginDrainHttpServer({ httpServer: this._server }),\n        ApolloServerPluginLandingPageLocalDefault({\n          embed: true\n        }),\n        plugin,\n      ],\n      includeStacktraceInErrorResponses: true,\n      formatError: (error) => {\n        this.logger.error('Error while processing request', { message: error.message });\n        this.logger.debug('Error while processing request', { error });\n        return {\n          message: error.message,\n          locations: error.locations,\n          stack: error\n        };\n      },\n    });\n\n    await this._gqlServer.start();\n\n    // set maxFile size and maximum files via Facade config of `createFacade`\n    const maxFileSize = this.fileUploadOptionsConfig?.maxFileSize ?? 10000000;\n    const maxFiles = this.fileUploadOptionsConfig?.maxFiles ?? 20;\n    this.koa.use(\n      graphqlUploadKoa({\n        maxFileSize,\n        maxFiles\n      })\n    );\n    this.koa.use(cors({\n      credentials: true,\n      origin: '*',\n      exposeHeaders: [\"x-jwt\"]\n    }));\n\n    const apolloGraphQLRouter = new Router();\n    apolloGraphQLRouter.use(bodyParser({ jsonLimit: this.jsonLimit }));\n    apolloGraphQLRouter.all('/graphql',\n      koaMiddleware(this._gqlServer as any, {\n        context: async ({ ctx }) => ctx,\n      })\n    );\n\n    this.koa.use(apolloGraphQLRouter.routes());\n  }\n}\n\nexport interface FacadeConfig {\n  port?: number;\n  logger?: Logger;\n  hostname?: string;\n  env?: string;\n  keys?: string[];\n  kafka?: KafkaProviderConfig['kafka'];\n  fileUploadOptions?: FileUploadOptionsConfig['fileUploadOptions'];\n  jsonLimit?: string;\n  extraServices?: { name: string, url: string }[];\n}\n\nexport const createFacade = (config: FacadeConfig): Facade => {\n  const koa = new Koa<any, any>();\n\n  if (config.env) {\n    koa.env = config.env;\n  }\n  if (config.keys) {\n    koa.keys = config.keys;\n  }\n\n  let loggerCfg: any;\n  if (config.logger) {\n    loggerCfg = config.logger;\n    loggerCfg.esTransformer = (msg: any) => {\n      msg.fields = JSON.stringify(msg.fields);\n      return msg;\n    };\n  }\n\n  const logger = loggerCfg ?? createLogger(loggerCfg);\n  koa.context.logger = logger;\n\n  return new RestoreCommerceFacade({\n    koa,\n    logger,\n    port: config.port,\n    hostname: config.hostname,\n    env: config.env,\n    kafka: config.kafka,\n    fileUploadOptions: config.fileUploadOptions,\n    jsonLimit: config.jsonLimit,\n    extraServices: config.extraServices\n  }).useModule(facadeStatusModule);\n};\n", "import mod from \"../lib/application.js\";\n\nexport default mod;\nexport const HttpError = mod.HttpError;\n", "import type { GatewayExecutor } from '@apollo/server-gateway-interface';\nimport { isNodeLike } from '@apollo/utils.isnodelike';\nimport {\n  InMemoryLRUCache,\n  PrefixingKeyValueCache,\n  type KeyValueCache,\n} from '@apollo/utils.keyvaluecache';\nimport type { Logger } from '@apollo/utils.logger';\nimport type { WithRequired } from '@apollo/utils.withrequired';\nimport { makeExecutableSchema } from '@graphql-tools/schema';\nimport resolvable, { type Resolvable } from './utils/resolvable.js';\nimport {\n  GraphQLError,\n  assertValidSchema,\n  print,\n  printSchema,\n  type validate,\n  type DocumentNode,\n  type ExecutionArgs,\n  type FormattedExecutionResult,\n  type GraphQLFieldResolver,\n  type GraphQLFormattedError,\n  type GraphQLSchema,\n  type ParseOptions,\n  type TypedQueryDocumentNode,\n  type ValidationRule,\n} from 'graphql';\nimport loglevel from 'loglevel';\nimport Negotiator from 'negotiator';\nimport { newCachePolicy } from './cachePolicy.js';\nimport { determineApolloConfig } from './determineApolloConfig.js';\nimport {\n  ensureError,\n  ensureGraphQLError,\n  normalizeAndFormatErrors,\n} from './errorNormalize.js';\nimport { ApolloServerErrorCode } from './errors/index.js';\nimport type { ApolloServerOptionsWithStaticSchema } from './externalTypes/constructor.js';\nimport type {\n  ExecuteOperationOptions,\n  LegacyExperimentalExecuteIncrementally,\n  VariableValues,\n} from './externalTypes/graphql.js';\nimport type {\n  ApolloConfig,\n  ApolloServerOptions,\n  ApolloServerPlugin,\n  BaseContext,\n  ContextThunk,\n  DocumentStore,\n  GraphQLRequest,\n  GraphQLRequestContext,\n  GraphQLResponse,\n  GraphQLServerContext,\n  GraphQLServerListener,\n  HTTPGraphQLHead,\n  HTTPGraphQLRequest,\n  HTTPGraphQLResponse,\n  LandingPage,\n  PersistedQueryOptions,\n} from './externalTypes/index.js';\nimport { runPotentiallyBatchedHttpQuery } from './httpBatching.js';\nimport type {\n  GraphQLExperimentalIncrementalExecutionResultsAlpha2,\n  GraphQLExperimentalIncrementalExecutionResultsAlpha9,\n} from './incrementalDeliveryPolyfill.js';\nimport { pluginIsInternal, type InternalPluginId } from './internalPlugin.js';\nimport {\n  preventCsrf,\n  recommendedCsrfPreventionRequestHeaders,\n} from './preventCsrf.js';\nimport { APQ_CACHE_PREFIX, processGraphQLRequest } from './requestPipeline.js';\nimport { newHTTPGraphQLHead, prettyJSONStringify } from './runHttpQuery.js';\nimport { HeaderMap } from './utils/HeaderMap.js';\nimport { UnreachableCaseError } from './utils/UnreachableCaseError.js';\nimport { computeCoreSchemaHash } from './utils/computeCoreSchemaHash.js';\nimport { isDefined } from './utils/isDefined.js';\nimport { SchemaManager } from './utils/schemaManager.js';\nimport {\n  NoIntrospection,\n  createMaxRecursiveSelectionsRule,\n  DEFAULT_MAX_RECURSIVE_SELECTIONS,\n} from './validationRules/index.js';\n\nexport type SchemaDerivedData = {\n  schema: GraphQLSchema;\n  // A store that, when enabled (default), will store the parsed and validated\n  // versions of operations in-memory, allowing subsequent parses/validates\n  // on the same operation to be executed immediately.\n  documentStore: DocumentStore | null;\n  // Prefix for keys in the DocumentStore if a custom one is provided (to\n  // separate the cache for different schema versions). This is vital to\n  // security so we do it explicitly so that\n  // PrefixingKeyValueCache.cacheDangerouslyDoesNotNeedPrefixesForIsolation\n  // doesn't affect it.\n  documentStoreKeyPrefix: string;\n};\n\ntype RunningServerState = {\n  schemaManager: SchemaManager;\n  landingPage: LandingPage | null;\n};\n\ntype ServerState =\n  | {\n      phase: 'initialized';\n      schemaManager: SchemaManager;\n    }\n  | {\n      phase: 'starting';\n      barrier: Resolvable<void>;\n      schemaManager: SchemaManager;\n      // This is set to true if you called\n      // startInBackgroundHandlingStartupErrorsByLoggingAndFailingAllRequests\n      // instead of start. The main purpose is that assertStarted allows you to\n      // still be in the starting phase if this is set. (This is the serverless\n      // use case.)\n      startedInBackground: boolean;\n    }\n  | {\n      phase: 'failed to start';\n      error: Error;\n    }\n  | ({\n      phase: 'started';\n      drainServers: (() => Promise<void>) | null;\n      toDispose: (() => Promise<void>)[];\n      toDisposeLast: (() => Promise<void>)[];\n    } & RunningServerState)\n  | ({\n      phase: 'draining';\n      barrier: Resolvable<void>;\n    } & RunningServerState)\n  | {\n      phase: 'stopping';\n      barrier: Resolvable<void>;\n    }\n  | {\n      phase: 'stopped';\n      stopError: Error | null;\n    };\n\nexport type ValidationOptions = NonNullable<Parameters<typeof validate>[3]>;\n\nexport interface ApolloServerInternals<TContext extends BaseContext> {\n  state: ServerState;\n  gatewayExecutor: GatewayExecutor | null;\n  dangerouslyDisableValidation?: boolean;\n  formatError?: (\n    formattedError: GraphQLFormattedError,\n    error: unknown,\n  ) => GraphQLFormattedError;\n  includeStacktraceInErrorResponses: boolean;\n  persistedQueries?: WithRequired<PersistedQueryOptions, 'cache'>;\n  nodeEnv: string;\n  allowBatchedHttpRequests: boolean;\n  apolloConfig: ApolloConfig;\n  plugins: ApolloServerPlugin<TContext>[];\n  parseOptions: ParseOptions;\n  validationOptions: ValidationOptions;\n  executionOptions?: ExecutionArgs['options'];\n  // `undefined` means we figure out what to do during _start (because\n  // the default depends on whether or not we used the background version\n  // of start).\n  stopOnTerminationSignals: boolean | undefined;\n  csrfPreventionRequestHeaders: string[] | null;\n\n  rootValue?: ((parsedQuery: DocumentNode) => unknown) | unknown;\n  validationRules: Array<ValidationRule>;\n  laterValidationRules?: Array<ValidationRule>;\n  hideSchemaDetailsFromClientErrors: boolean;\n  fieldResolver?: GraphQLFieldResolver<any, TContext>;\n  // TODO(AS6): remove this option.\n  status400ForVariableCoercionErrors?: boolean;\n  __testing_incrementalExecutionResults?:\n    | GraphQLExperimentalIncrementalExecutionResultsAlpha2\n    | GraphQLExperimentalIncrementalExecutionResultsAlpha9;\n  stringifyResult: (\n    value: FormattedExecutionResult,\n  ) => string | Promise<string>;\n  legacyExperimentalExecuteIncrementally?: LegacyExperimentalExecuteIncrementally;\n}\n\nfunction defaultLogger(): Logger {\n  const loglevelLogger = loglevel.getLogger('apollo-server');\n  loglevelLogger.setLevel(loglevel.levels.INFO);\n  return loglevelLogger;\n}\n\n// We really want to prevent this from being legal:\n//\n//     const s: ApolloServer<{}> =\n//       new ApolloServer<{importantContextField: boolean}>({ ... });\n//     s.executeOperation({query}, {contextValue: {}});\n//\n// ie, if you declare an ApolloServer whose context values must be of a certain\n// type, you can't assign it to a variable whose context values are less\n// constrained and then pass in a context value missing important fields.\n//\n// We also want this to be illegal:\n//\n//     const sBase = new ApolloServer<{}>({ ... });\n//     const s: ApolloServer<{importantContextField: boolean}> = sBase;\n//     s.addPlugin({async requestDidStart({contextValue: {importantContextField}}) { ... }})\n//     sBase.executeOperation({query}, {contextValue: {}});\n//\n// so you shouldn't be able to assign an ApolloServer to a variable whose\n// context values are more constrained, either. So we want to declare that\n// ApolloServer is *invariant* in TContext, which we do with `in out` (a\n// TypeScript 4.7 feature).\nexport class ApolloServer<in out TContext extends BaseContext = BaseContext> {\n  private internals: ApolloServerInternals<TContext>;\n\n  public readonly cache: KeyValueCache<string>;\n  public readonly logger: Logger;\n\n  constructor(config: ApolloServerOptions<TContext>) {\n    const nodeEnv = config.nodeEnv ?? process.env.NODE_ENV ?? '';\n\n    this.logger = config.logger ?? defaultLogger();\n\n    const apolloConfig = determineApolloConfig(config.apollo, this.logger);\n\n    const isDev = nodeEnv !== 'production';\n\n    if (\n      config.cache &&\n      config.cache !== 'bounded' &&\n      PrefixingKeyValueCache.prefixesAreUnnecessaryForIsolation(config.cache)\n    ) {\n      throw new Error(\n        'You cannot pass a cache returned from ' +\n          '`PrefixingKeyValueCache.cacheDangerouslyDoesNotNeedPrefixesForIsolation`' +\n          'to `new ApolloServer({ cache })`, because Apollo Server may use it for ' +\n          'multiple features whose cache keys must be distinct from each other.',\n      );\n    }\n\n    const state: ServerState = config.gateway\n      ? // ApolloServer has been initialized but we have not yet tried to load the\n        // schema from the gateway. That will wait until `start()` or\n        // `startInBackgroundHandlingStartupErrorsByLoggingAndFailingAllRequests()`\n        // is called. (These may be called by other helpers; for example,\n        // `standaloneServer` calls `start` for you inside its `listen` method,\n        // and a serverless framework integration would call\n        // startInBackgroundHandlingStartupErrorsByLoggingAndFailingAllRequests\n        // for you.)\n        {\n          phase: 'initialized',\n          schemaManager: new SchemaManager({\n            gateway: config.gateway,\n            apolloConfig,\n            schemaDerivedDataProvider: (schema) =>\n              ApolloServer.generateSchemaDerivedData(\n                schema,\n                config.documentStore,\n              ),\n            logger: this.logger,\n          }),\n        }\n      : // We construct the schema synchronously so that we can fail fast if the\n        // schema can't be constructed. (This used to be more important because we\n        // used to have a 'schema' field that was publicly accessible immediately\n        // after construction, though that field never actually worked with\n        // gateways.)\n        {\n          phase: 'initialized',\n          schemaManager: new SchemaManager({\n            apiSchema: ApolloServer.constructSchema(config),\n            schemaDerivedDataProvider: (schema) =>\n              ApolloServer.generateSchemaDerivedData(\n                schema,\n                config.documentStore,\n              ),\n            logger: this.logger,\n          }),\n        };\n\n    const introspectionEnabled = config.introspection ?? isDev;\n    const hideSchemaDetailsFromClientErrors =\n      config.hideSchemaDetailsFromClientErrors ?? false;\n\n    // We continue to allow 'bounded' for backwards-compatibility with the AS3.9\n    // API.\n    this.cache =\n      config.cache === undefined || config.cache === 'bounded'\n        ? new InMemoryLRUCache()\n        : config.cache;\n\n    // Check whether the recursive selections limit has been enabled (off by\n    // default), or whether a custom limit has been specified.\n    const maxRecursiveSelectionsRule =\n      config.maxRecursiveSelections === true\n        ? [createMaxRecursiveSelectionsRule(DEFAULT_MAX_RECURSIVE_SELECTIONS)]\n        : typeof config.maxRecursiveSelections === 'number'\n          ? [createMaxRecursiveSelectionsRule(config.maxRecursiveSelections)]\n          : [];\n\n    // If the recursive selections rule has been enabled, then run configured\n    // validations in a later validate() pass.\n    const validationRules = [\n      ...(introspectionEnabled ? [] : [NoIntrospection]),\n      ...maxRecursiveSelectionsRule,\n    ];\n    let laterValidationRules;\n    if (maxRecursiveSelectionsRule.length > 0) {\n      laterValidationRules = config.validationRules;\n    } else {\n      validationRules.push(...(config.validationRules ?? []));\n    }\n\n    // Note that we avoid calling methods on `this` before `this.internals` is assigned\n    // (thus a bunch of things being static methods above).\n    this.internals = {\n      formatError: config.formatError,\n      rootValue: config.rootValue,\n      validationRules,\n      laterValidationRules,\n      hideSchemaDetailsFromClientErrors,\n      dangerouslyDisableValidation:\n        config.dangerouslyDisableValidation ?? false,\n      validationOptions: config.validationOptions ?? {},\n      fieldResolver: config.fieldResolver,\n      includeStacktraceInErrorResponses:\n        config.includeStacktraceInErrorResponses ??\n        (nodeEnv !== 'production' && nodeEnv !== 'test'),\n      persistedQueries:\n        config.persistedQueries === false\n          ? undefined\n          : {\n              ...config.persistedQueries,\n              cache: new PrefixingKeyValueCache(\n                config.persistedQueries?.cache ?? this.cache,\n                APQ_CACHE_PREFIX,\n              ),\n            },\n      nodeEnv,\n      allowBatchedHttpRequests: config.allowBatchedHttpRequests ?? false,\n      apolloConfig,\n      // Note that more plugins can be added before `start()` with `addPlugin()`\n      // (eg, plugins that want to take this ApolloServer as an argument), and\n      // `start()` will call `addDefaultPlugins` to add default plugins.\n      plugins: config.plugins ?? [],\n      parseOptions: config.parseOptions ?? {},\n      executionOptions: config.executionOptions ?? {},\n      state,\n      stopOnTerminationSignals: config.stopOnTerminationSignals,\n\n      gatewayExecutor: null, // set by _start\n\n      csrfPreventionRequestHeaders:\n        config.csrfPrevention === true || config.csrfPrevention === undefined\n          ? recommendedCsrfPreventionRequestHeaders\n          : config.csrfPrevention === false\n            ? null\n            : (config.csrfPrevention.requestHeaders ??\n              recommendedCsrfPreventionRequestHeaders),\n      status400ForVariableCoercionErrors:\n        config.status400ForVariableCoercionErrors ?? true,\n      __testing_incrementalExecutionResults:\n        config.__testing_incrementalExecutionResults,\n      stringifyResult: config.stringifyResult ?? prettyJSONStringify,\n      legacyExperimentalExecuteIncrementally:\n        config.legacyExperimentalExecuteIncrementally,\n    };\n\n    this.warnAgainstDeprecatedConfigOptions(config);\n  }\n\n  private warnAgainstDeprecatedConfigOptions(\n    config: ApolloServerOptions<TContext>,\n  ) {\n    // TODO(AS6): this option goes away altogether. We should either update or remove this warning.\n    if ('status400ForVariableCoercionErrors' in config) {\n      if (config.status400ForVariableCoercionErrors === true) {\n        this.logger.warn(\n          'The `status400ForVariableCoercionErrors: true` configuration option is now the default behavior and has no effect in Apollo Server v5. You can safely remove this option from your configuration.',\n        );\n      } else {\n        this.logger.warn(\n          'The `status400ForVariableCoercionErrors: false` configuration option is deprecated and will be removed in Apollo Server v6. Apollo recommends removing any dependency on this behavior.',\n        );\n      }\n    }\n  }\n\n  // Awaiting a call to `start` ensures that a schema has been loaded and that\n  // all plugin `serverWillStart` hooks have been called. If either of these\n  // processes throw, `start` will (async) throw as well.\n  //\n  // If you're using `standaloneServer`, you don't need to call `start` yourself\n  // (in fact, it will throw if you do so); its `listen` method takes care of\n  // that for you.\n  //\n  // If instead you're using an integration package for a non-serverless\n  // framework (like Express), you must await a call to `start` immediately\n  // after creating your `ApolloServer`, before attaching it to your web\n  // framework and starting to accept requests. `start` should only be called\n  // once; if it throws and you'd like to retry, just create another\n  // `ApolloServer`. (Calling `start` was optional in Apollo Server 2, but in\n  // Apollo Server 3+ the functions like `expressMiddleware` use `assertStarted`\n  // to throw if `start` hasn't successfully completed.)\n  //\n  // Serverless integrations like Lambda do not support calling `start()`,\n  // because their lifecycle doesn't allow you to wait before assigning a\n  // handler or allowing the handler to be called. So they call\n  // `startInBackgroundHandlingStartupErrorsByLoggingAndFailingAllRequests()`\n  // instead, and don't really differentiate between startup failures and\n  // request failures. This is hopefully appropriate for a \"serverless\"\n  // framework. Serverless startup failures result in returning a redacted error\n  // to the end user and logging the more detailed error.\n  public async start(): Promise<void> {\n    return await this._start(false);\n  }\n\n  public startInBackgroundHandlingStartupErrorsByLoggingAndFailingAllRequests(): void {\n    this._start(true).catch((e) => this.logStartupError(e));\n  }\n\n  private async _start(startedInBackground: boolean): Promise<void> {\n    if (this.internals.state.phase !== 'initialized') {\n      // If we wanted we could make this error detectable and change\n      // `standaloneServer` to change the message to say not to call start() at\n      // all.\n      throw new Error(\n        `You should only call 'start()' or ` +\n          `'startInBackgroundHandlingStartupErrorsByLoggingAndFailingAllRequests()' ` +\n          `once on your ApolloServer.`,\n      );\n    }\n    const schemaManager = this.internals.state.schemaManager;\n    const barrier = resolvable();\n    this.internals.state = {\n      phase: 'starting',\n      barrier,\n      schemaManager,\n      startedInBackground,\n    };\n    try {\n      // Now that you can't call addPlugin any more, add default plugins like\n      // usage reporting if they're not already added.\n      await this.addDefaultPlugins();\n\n      const toDispose: (() => Promise<void>)[] = [];\n      const executor = await schemaManager.start();\n      if (executor) {\n        this.internals.gatewayExecutor = executor;\n      }\n      toDispose.push(async () => {\n        await schemaManager.stop();\n      });\n\n      const schemaDerivedData = schemaManager.getSchemaDerivedData();\n      const service: GraphQLServerContext = {\n        logger: this.logger,\n        cache: this.cache,\n        schema: schemaDerivedData.schema,\n        apollo: this.internals.apolloConfig,\n        startedInBackground,\n      };\n\n      const taggedServerListeners = (\n        await Promise.all(\n          this.internals.plugins.map(async (plugin) => ({\n            serverListener:\n              plugin.serverWillStart && (await plugin.serverWillStart(service)),\n            installedImplicitly:\n              isImplicitlyInstallablePlugin(plugin) &&\n              plugin.__internal_installed_implicitly__,\n          })),\n        )\n      ).filter(\n        (\n          maybeTaggedServerListener,\n        ): maybeTaggedServerListener is {\n          serverListener: GraphQLServerListener;\n          installedImplicitly: boolean;\n        } => typeof maybeTaggedServerListener.serverListener === 'object',\n      );\n\n      taggedServerListeners.forEach(\n        ({ serverListener: { schemaDidLoadOrUpdate } }) => {\n          if (schemaDidLoadOrUpdate) {\n            schemaManager.onSchemaLoadOrUpdate(schemaDidLoadOrUpdate);\n          }\n        },\n      );\n\n      const serverWillStops = taggedServerListeners\n        .map((l) => l.serverListener.serverWillStop)\n        .filter(isDefined);\n      if (serverWillStops.length) {\n        toDispose.push(async () => {\n          await Promise.all(\n            serverWillStops.map((serverWillStop) => serverWillStop()),\n          );\n        });\n      }\n\n      const drainServerCallbacks = taggedServerListeners\n        .map((l) => l.serverListener.drainServer)\n        .filter(isDefined);\n      const drainServers = drainServerCallbacks.length\n        ? async () => {\n            await Promise.all(\n              drainServerCallbacks.map((drainServer) => drainServer()),\n            );\n          }\n        : null;\n\n      // Find the renderLandingPage callback, if one is provided. If the user\n      // installed ApolloServerPluginLandingPageDisabled then there may be none\n      // found. On the other hand, if the user installed a landingPage plugin,\n      // then both the implicit installation of\n      // ApolloServerPluginLandingPage*Default and the other plugin will be\n      // found; we skip the implicit plugin.\n      let taggedServerListenersWithRenderLandingPage =\n        taggedServerListeners.filter((l) => l.serverListener.renderLandingPage);\n      if (taggedServerListenersWithRenderLandingPage.length > 1) {\n        taggedServerListenersWithRenderLandingPage =\n          taggedServerListenersWithRenderLandingPage.filter(\n            (l) => !l.installedImplicitly,\n          );\n      }\n      let landingPage: LandingPage | null = null;\n      if (taggedServerListenersWithRenderLandingPage.length > 1) {\n        throw Error('Only one plugin can implement renderLandingPage.');\n      } else if (taggedServerListenersWithRenderLandingPage.length) {\n        landingPage =\n          await taggedServerListenersWithRenderLandingPage[0].serverListener\n            .renderLandingPage!();\n      }\n\n      const toDisposeLast = this.maybeRegisterTerminationSignalHandlers(\n        ['SIGINT', 'SIGTERM'],\n        startedInBackground,\n      );\n\n      this.internals.state = {\n        phase: 'started',\n        schemaManager,\n        drainServers,\n        landingPage,\n        toDispose,\n        toDisposeLast,\n      };\n    } catch (maybeError: unknown) {\n      const error = ensureError(maybeError);\n\n      try {\n        await Promise.all(\n          this.internals.plugins.map(async (plugin) =>\n            plugin.startupDidFail?.({ error }),\n          ),\n        );\n      } catch (pluginError) {\n        this.logger.error(`startupDidFail hook threw: ${pluginError}`);\n      }\n\n      this.internals.state = {\n        phase: 'failed to start',\n        error,\n      };\n      throw error;\n    } finally {\n      barrier.resolve();\n    }\n  }\n\n  private maybeRegisterTerminationSignalHandlers(\n    signals: NodeJS.Signals[],\n    startedInBackground: boolean,\n  ): (() => Promise<void>)[] {\n    const toDisposeLast: (() => Promise<void>)[] = [];\n\n    // We handle signals if it was explicitly requested\n    // (stopOnTerminationSignals === true), or if we're in Node, not in a test,\n    // not in a serverless framework (which we guess based on whether they\n    // called\n    // startInBackgroundHandlingStartupErrorsByLoggingAndFailingAllRequests),\n    // and it wasn't explicitly turned off. (We only actually register the\n    // signal handlers once we've successfully started up, because there's\n    // nothing to stop otherwise.)\n    if (\n      this.internals.stopOnTerminationSignals === false ||\n      (this.internals.stopOnTerminationSignals === undefined &&\n        !(\n          isNodeLike &&\n          this.internals.nodeEnv !== 'test' &&\n          !startedInBackground\n        ))\n    ) {\n      return toDisposeLast;\n    }\n\n    let receivedSignal = false;\n    const signalHandler: NodeJS.SignalsListener = async (signal) => {\n      if (receivedSignal) {\n        // If we receive another SIGINT or SIGTERM while we're waiting\n        // for the server to stop, just ignore it.\n        return;\n      }\n      receivedSignal = true;\n      try {\n        await this.stop();\n      } catch (e) {\n        this.logger.error(`stop() threw during ${signal} shutdown`);\n        this.logger.error(e);\n        // Can't rely on the signal handlers being removed.\n        process.exit(1);\n      }\n      // Note: this.stop will call the toDisposeLast handlers below, so at\n      // this point this handler will have been removed and we can re-kill\n      // ourself to die with the appropriate signal exit status. this.stop\n      // takes care to call toDisposeLast last, so the signal handler isn't\n      // removed until after the rest of shutdown happens.\n      process.kill(process.pid, signal);\n    };\n\n    signals.forEach((signal) => {\n      process.on(signal, signalHandler);\n      toDisposeLast.push(async () => {\n        process.removeListener(signal, signalHandler);\n      });\n    });\n    return toDisposeLast;\n  }\n\n  // This method is called at the beginning of each GraphQL request by\n  // `executeHTTPGraphQLRequest` and `executeOperation`. Most of its logic is\n  // only helpful if you started the server in the background (ie, for\n  // serverless frameworks): unless you're in a serverless framework, you should\n  // have called `await server.start()` before the server got to the point of\n  // running GraphQL requests (`assertStarted` calls in the framework\n  // integrations verify that) and so the only cases for non-serverless\n  // frameworks that this should hit are 'started', 'stopping', and 'stopped'.\n  // But if you started the server in the background (with\n  // startInBackgroundHandlingStartupErrorsByLoggingAndFailingAllRequests), this\n  // lets the server wait until fully started before serving operations.\n  private async _ensureStarted(): Promise<RunningServerState> {\n    while (true) {\n      switch (this.internals.state.phase) {\n        case 'initialized':\n          // This error probably won't happen: serverless framework integrations\n          // should call\n          // `startInBackgroundHandlingStartupErrorsByLoggingAndFailingAllRequests`\n          // for you, and other frameworks call `assertStarted` before setting\n          // things up enough to make calling this function possible.\n          throw new Error(\n            'You need to call `server.start()` before using your Apollo Server.',\n          );\n        case 'starting':\n          await this.internals.state.barrier;\n          // continue the while loop\n          break;\n        case 'failed to start':\n          // First we log the error that prevented startup (which means it will\n          // get logged once for every GraphQL operation).\n          this.logStartupError(this.internals.state.error);\n          // Now make the operation itself fail.\n          // We intentionally do not re-throw actual startup error as it may contain\n          // implementation details and this error will propagate to the client.\n          throw new Error(\n            'This data graph is missing a valid configuration. More details may be available in the server logs.',\n          );\n        case 'started':\n        case 'draining': // We continue to run operations while draining.\n          return this.internals.state;\n        case 'stopping':\n        case 'stopped':\n          this.logger.warn(\n            'A GraphQL operation was received during server shutdown. The ' +\n              'operation will fail. Consider draining the HTTP server on shutdown; ' +\n              'see https://go.apollo.dev/s/drain for details.',\n          );\n          throw new Error(\n            `Cannot execute GraphQL operations ${\n              this.internals.state.phase === 'stopping'\n                ? 'while the server is stopping'\n                : 'after the server has stopped'\n            }.'`,\n          );\n        default:\n          throw new UnreachableCaseError(this.internals.state);\n      }\n    }\n  }\n\n  // Framework integrations should call this to ensure that you've properly\n  // started your server before you get anywhere close to actually listening for\n  // incoming requests.\n  //\n  // There's a special case that if you called\n  // `startInBackgroundHandlingStartupErrorsByLoggingAndFailingAllRequests` and\n  // it hasn't finished starting up yet, this works too. This is intended for\n  // cases like a serverless integration (say, Google Cloud Functions) that\n  // calls\n  // `startInBackgroundHandlingStartupErrorsByLoggingAndFailingAllRequests` for\n  // you and then immediately sets up an integration based on another middleware\n  // like `expressMiddleware` which calls this function. We'd like this to be\n  // OK, but we still want normal Express users to start their ApolloServer\n  // before setting up their HTTP server unless they know what they are doing\n  // well enough to call the function with the long name themselves.\n  public assertStarted(expressionForError: string) {\n    if (\n      this.internals.state.phase !== 'started' &&\n      this.internals.state.phase !== 'draining' &&\n      !(\n        this.internals.state.phase === 'starting' &&\n        this.internals.state.startedInBackground\n      )\n    ) {\n      throw new Error(\n        'You must `await server.start()` before calling `' +\n          expressionForError +\n          '`',\n      );\n    }\n  }\n\n  // Given an error that occurred during Apollo Server startup, log it with a\n  // helpful message. This should happen when you call\n  // `startInBackgroundHandlingStartupErrorsByLoggingAndFailingAllRequests` (ie,\n  // in serverless frameworks); with other frameworks, you must `await\n  // server.start()` which will throw the startup error directly instead of\n  // logging. This gets called both immediately when the startup error happens,\n  // and on all subsequent requests.\n  private logStartupError(err: Error) {\n    this.logger.error(\n      'An error occurred during Apollo Server startup. All GraphQL requests ' +\n        'will now fail. The startup error was: ' +\n        (err?.message || err),\n    );\n  }\n\n  private static constructSchema<TContext extends BaseContext>(\n    config: ApolloServerOptionsWithStaticSchema<TContext>,\n  ): GraphQLSchema {\n    if (config.schema) {\n      return config.schema;\n    }\n\n    const { typeDefs, resolvers } = config;\n    const augmentedTypeDefs = Array.isArray(typeDefs) ? typeDefs : [typeDefs];\n\n    // For convenience, we allow you to pass a few options that we pass through\n    // to a particular version of `@graphql-tools/schema`'s\n    // `makeExecutableSchema`. If you want to use more of this function's\n    // features or have more control over the version of the packages used, just\n    // call it yourself like `new ApolloServer({schema:\n    // makeExecutableSchema(...)})`.\n    return makeExecutableSchema({\n      typeDefs: augmentedTypeDefs,\n      resolvers,\n    });\n  }\n\n  private static generateSchemaDerivedData(\n    schema: GraphQLSchema,\n    // null means don't use a documentStore at all.\n    // missing/undefined means use the default (creating a new one each\n    // time).\n    // defined means wrap this one in a random prefix for each new schema.\n    providedDocumentStore: DocumentStore | null | undefined,\n  ): SchemaDerivedData {\n    // Instead of waiting for the first operation execution against the schema\n    // to find out if it's a valid schema or not, check right now. In the\n    // non-gateway case, if this throws then the `new ApolloServer` call will\n    // throw. In the gateway case if this throws then it will log a message and\n    // just not update the schema (although oddly the message will claim that\n    // the schema is updating).\n    assertValidSchema(schema);\n\n    return {\n      schema,\n      // The DocumentStore is schema-derived because we put documents in it\n      // after checking that they pass GraphQL validation against the schema and\n      // use this to skip validation as well as parsing. So we can't reuse the\n      // same DocumentStore for different schemas because that might make us\n      // treat invalid operations as valid. If we're using the default\n      // DocumentStore, then we just create it from scratch each time we get a\n      // new schema. If we're using a user-provided DocumentStore, then we use\n      // the schema hash as a prefix.\n      documentStore:\n        providedDocumentStore === undefined\n          ? new InMemoryLRUCache<DocumentNode>()\n          : providedDocumentStore,\n      documentStoreKeyPrefix: providedDocumentStore\n        ? `${computeCoreSchemaHash(printSchema(schema))}:`\n        : '',\n    };\n  }\n\n  public async stop() {\n    switch (this.internals.state.phase) {\n      case 'initialized':\n      case 'starting':\n      case 'failed to start':\n        throw Error(\n          'apolloServer.stop() should only be called after `await apolloServer.start()` has succeeded',\n        );\n\n      // Calling stop more than once should have the same result as the first time.\n      case 'stopped':\n        if (this.internals.state.stopError) {\n          throw this.internals.state.stopError;\n        }\n        return;\n\n      // Two parallel calls to stop; just wait for the other one to finish and\n      // do whatever it did.\n      case 'stopping':\n      case 'draining': {\n        await this.internals.state.barrier;\n        // The cast here is because TS doesn't understand that this.state can\n        // change during the await\n        // (https://github.com/microsoft/TypeScript/issues/9998).\n        const state = this.internals.state as ServerState;\n        if (state.phase !== 'stopped') {\n          throw Error(`Surprising post-stopping state ${state.phase}`);\n        }\n        if (state.stopError) {\n          throw state.stopError;\n        }\n        return;\n      }\n\n      case 'started':\n        // This is handled by the rest of the function.\n        break;\n\n      default:\n        throw new UnreachableCaseError(this.internals.state);\n    }\n\n    const barrier = resolvable();\n\n    const {\n      schemaManager,\n      drainServers,\n      landingPage,\n      toDispose,\n      toDisposeLast,\n    } = this.internals.state;\n\n    // Commit to stopping and start draining servers.\n    this.internals.state = {\n      phase: 'draining',\n      barrier,\n      schemaManager,\n      landingPage,\n    };\n\n    try {\n      await drainServers?.();\n\n      // Servers are drained. Prevent further operations from starting and call\n      // stop handlers.\n      this.internals.state = { phase: 'stopping', barrier };\n\n      // We run shutdown handlers in two phases because we don't want to turn\n      // off our signal listeners (ie, allow signals to kill the process) until\n      // we've done the important parts of shutdown like running serverWillStop\n      // handlers. (We can make this more generic later if it's helpful.)\n      await Promise.all([...toDispose].map((dispose) => dispose()));\n      await Promise.all([...toDisposeLast].map((dispose) => dispose()));\n    } catch (stopError) {\n      this.internals.state = {\n        phase: 'stopped',\n        stopError: stopError as Error,\n      };\n      barrier.resolve();\n      throw stopError;\n    }\n    this.internals.state = { phase: 'stopped', stopError: null };\n  }\n\n  private async addDefaultPlugins() {\n    const {\n      plugins,\n      apolloConfig,\n      nodeEnv,\n      hideSchemaDetailsFromClientErrors,\n    } = this.internals;\n    const isDev = nodeEnv !== 'production';\n\n    const alreadyHavePluginWithInternalId = (id: InternalPluginId) =>\n      plugins.some(\n        (p) => pluginIsInternal(p) && p.__internal_plugin_id__ === id,\n      );\n\n    // Make sure we're not trying to explicitly enable and disable the same\n    // feature. (Be careful: we are not trying to stop people from installing\n    // the same plugin twice if they have a use case for it, like two usage\n    // reporting plugins for different variants.)\n    //\n    // Note that this check doesn't work for the landing page plugin, because\n    // users can write their own landing page plugins and we don't know if a\n    // given plugin is a landing page plugin until the server has started.\n    const pluginsByInternalID = new Map<\n      InternalPluginId,\n      { sawDisabled: boolean; sawNonDisabled: boolean }\n    >();\n    for (const p of plugins) {\n      if (pluginIsInternal(p)) {\n        const id = p.__internal_plugin_id__;\n        if (!pluginsByInternalID.has(id)) {\n          pluginsByInternalID.set(id, {\n            sawDisabled: false,\n            sawNonDisabled: false,\n          });\n        }\n        const seen = pluginsByInternalID.get(id)!;\n        if (p.__is_disabled_plugin__) {\n          seen.sawDisabled = true;\n        } else {\n          seen.sawNonDisabled = true;\n        }\n\n        if (seen.sawDisabled && seen.sawNonDisabled) {\n          throw new Error(\n            `You have tried to install both ApolloServerPlugin${id} and ` +\n              `ApolloServerPlugin${id}Disabled in your server. Please choose ` +\n              `whether or not you want to disable the feature and install the ` +\n              `appropriate plugin for your use case.`,\n          );\n        }\n      }\n    }\n\n    // Special case: cache control is on unless you explicitly disable it.\n    {\n      if (!alreadyHavePluginWithInternalId('CacheControl')) {\n        const { ApolloServerPluginCacheControl } = await import(\n          './plugin/cacheControl/index.js'\n        );\n        plugins.push(ApolloServerPluginCacheControl());\n      }\n    }\n\n    // Special case: usage reporting is on by default (and first!) if you\n    // configure an API key.\n    {\n      const alreadyHavePlugin =\n        alreadyHavePluginWithInternalId('UsageReporting');\n      if (!alreadyHavePlugin && apolloConfig.key) {\n        if (apolloConfig.graphRef) {\n          // Keep this plugin first so it wraps everything. (Unfortunately despite\n          // the fact that the person who wrote this line also was the original\n          // author of the comment above in #1105, they don't quite understand why this was important.)\n          const { ApolloServerPluginUsageReporting } = await import(\n            './plugin/usageReporting/index.js'\n          );\n          plugins.unshift(\n            ApolloServerPluginUsageReporting({\n              __onlyIfSchemaIsNotSubgraph: true,\n            }),\n          );\n        } else {\n          this.logger.warn(\n            'You have specified an Apollo key but have not specified a graph ref; usage ' +\n              'reporting is disabled. To enable usage reporting, set the `APOLLO_GRAPH_REF` ' +\n              'environment variable to `your-graph-id@your-graph-variant`. To disable this ' +\n              'warning, install `ApolloServerPluginUsageReportingDisabled`.',\n          );\n        }\n      }\n    }\n\n    // Special case: schema reporting can be turned on via environment variable.\n    {\n      const alreadyHavePlugin =\n        alreadyHavePluginWithInternalId('SchemaReporting');\n      const enabledViaEnvVar = process.env.APOLLO_SCHEMA_REPORTING === 'true';\n      if (!alreadyHavePlugin && enabledViaEnvVar) {\n        if (apolloConfig.key) {\n          const { ApolloServerPluginSchemaReporting } = await import(\n            './plugin/schemaReporting/index.js'\n          );\n          plugins.push(ApolloServerPluginSchemaReporting());\n        } else {\n          throw new Error(\n            \"You've enabled schema reporting by setting the APOLLO_SCHEMA_REPORTING \" +\n              'environment variable to true, but you also need to provide your ' +\n              'Apollo API key, via the APOLLO_KEY environment ' +\n              'variable or via `new ApolloServer({apollo: {key})',\n          );\n        }\n      }\n    }\n\n    // Special case: inline tracing is on by default for federated schemas.\n    {\n      const alreadyHavePlugin = alreadyHavePluginWithInternalId('InlineTrace');\n      if (!alreadyHavePlugin) {\n        // If we haven't explicitly disabled inline tracing via\n        // ApolloServerPluginInlineTraceDisabled or explicitly installed our own\n        // ApolloServerPluginInlineTrace, we set up inline tracing in \"only if\n        // federated\" mode.  (This is slightly different than the\n        // pre-ApolloServerPluginInlineTrace where we would also avoid doing\n        // this if an API key was configured and log a warning.)\n        const { ApolloServerPluginInlineTrace } = await import(\n          './plugin/inlineTrace/index.js'\n        );\n        plugins.push(\n          ApolloServerPluginInlineTrace({ __onlyIfSchemaIsSubgraph: true }),\n        );\n      }\n    }\n\n    // Special case: If we're not in production, show our default landing page.\n    //\n    // This works a bit differently from the other implicitly installed plugins,\n    // which rely entirely on the __internal_plugin_id__ to decide whether the\n    // plugin takes effect. That's because we want third-party plugins to be\n    // able to provide a landing page that overrides the default landing page,\n    // without them having to know about __internal_plugin_id__. So unless we\n    // actively disable the default landing page with\n    // ApolloServerPluginLandingPageDisabled, we install the default landing\n    // page, but with a special flag that _start() uses to ignore it if some\n    // other plugin defines a renderLandingPage callback. (We can't just look\n    // now to see if the plugin defines renderLandingPage because we haven't run\n    // serverWillStart yet.)\n    const alreadyHavePlugin = alreadyHavePluginWithInternalId(\n      'LandingPageDisabled',\n    );\n    if (!alreadyHavePlugin) {\n      const {\n        ApolloServerPluginLandingPageLocalDefault,\n        ApolloServerPluginLandingPageProductionDefault,\n      } = await import('./plugin/landingPage/default/index.js');\n      const plugin: ApolloServerPlugin<TContext> = isDev\n        ? ApolloServerPluginLandingPageLocalDefault()\n        : ApolloServerPluginLandingPageProductionDefault();\n      if (!isImplicitlyInstallablePlugin(plugin)) {\n        throw Error(\n          'default landing page plugin should be implicitly installable?',\n        );\n      }\n      plugin.__internal_installed_implicitly__ = true;\n      plugins.push(plugin);\n    }\n\n    {\n      const alreadyHavePlugin =\n        alreadyHavePluginWithInternalId('DisableSuggestions');\n      if (hideSchemaDetailsFromClientErrors && !alreadyHavePlugin) {\n        const { ApolloServerPluginDisableSuggestions } = await import(\n          './plugin/disableSuggestions/index.js'\n        );\n        plugins.push(ApolloServerPluginDisableSuggestions());\n      }\n    }\n  }\n\n  public addPlugin(plugin: ApolloServerPlugin<TContext>) {\n    if (this.internals.state.phase !== 'initialized') {\n      throw new Error(\"Can't add plugins after the server has started\");\n    }\n    this.internals.plugins.push(plugin);\n  }\n\n  public async executeHTTPGraphQLRequest({\n    httpGraphQLRequest,\n    context,\n  }: {\n    httpGraphQLRequest: HTTPGraphQLRequest;\n    context: ContextThunk<TContext>;\n  }): Promise<HTTPGraphQLResponse> {\n    try {\n      let runningServerState;\n      try {\n        runningServerState = await this._ensureStarted();\n      } catch (error: unknown) {\n        // This is typically either the masked error from when background startup\n        // failed, or related to invoking this function before startup or\n        // during/after shutdown (due to lack of draining).\n        return await this.errorResponse(error, httpGraphQLRequest);\n      }\n\n      if (\n        runningServerState.landingPage &&\n        this.prefersHTML(httpGraphQLRequest)\n      ) {\n        let renderedHtml;\n        if (typeof runningServerState.landingPage.html === 'string') {\n          renderedHtml = runningServerState.landingPage.html;\n        } else {\n          try {\n            renderedHtml = await runningServerState.landingPage.html();\n          } catch (maybeError: unknown) {\n            const error = ensureError(maybeError);\n            this.logger.error(`Landing page \\`html\\` function threw: ${error}`);\n            return await this.errorResponse(error, httpGraphQLRequest);\n          }\n        }\n\n        return {\n          headers: new HeaderMap([['content-type', 'text/html']]),\n          body: {\n            kind: 'complete',\n            string: renderedHtml,\n          },\n        };\n      }\n\n      // If enabled, check to ensure that this request was preflighted before doing\n      // anything real (such as running the context function).\n      if (this.internals.csrfPreventionRequestHeaders) {\n        preventCsrf(\n          httpGraphQLRequest.headers,\n          this.internals.csrfPreventionRequestHeaders,\n        );\n      }\n\n      let contextValue: TContext;\n      try {\n        contextValue = await context();\n      } catch (maybeError: unknown) {\n        const error = ensureError(maybeError);\n        try {\n          await Promise.all(\n            this.internals.plugins.map(async (plugin) =>\n              plugin.contextCreationDidFail?.({\n                error,\n              }),\n            ),\n          );\n        } catch (pluginError) {\n          this.logger.error(\n            `contextCreationDidFail hook threw: ${pluginError}`,\n          );\n        }\n\n        // If some random function threw, add a helpful prefix when converting\n        // to GraphQLError. If it was already a GraphQLError, trust that the\n        // message was chosen thoughtfully and leave off the prefix.\n        return await this.errorResponse(\n          ensureGraphQLError(error, 'Context creation failed: '),\n          httpGraphQLRequest,\n        );\n      }\n\n      return await runPotentiallyBatchedHttpQuery(\n        this,\n        httpGraphQLRequest,\n        contextValue,\n        runningServerState.schemaManager.getSchemaDerivedData(),\n        this.internals,\n      );\n    } catch (maybeError_: unknown) {\n      const maybeError = maybeError_; // fixes inference because catch vars are not const\n      if (\n        maybeError instanceof GraphQLError &&\n        maybeError.extensions.code === ApolloServerErrorCode.BAD_REQUEST\n      ) {\n        try {\n          await Promise.all(\n            this.internals.plugins.map(async (plugin) =>\n              plugin.invalidRequestWasReceived?.({ error: maybeError }),\n            ),\n          );\n        } catch (pluginError) {\n          this.logger.error(\n            `invalidRequestWasReceived hook threw: ${pluginError}`,\n          );\n        }\n      }\n      return await this.errorResponse(maybeError, httpGraphQLRequest);\n    }\n  }\n\n  private async errorResponse(\n    error: unknown,\n    requestHead: HTTPGraphQLHead,\n  ): Promise<HTTPGraphQLResponse> {\n    const { formattedErrors, httpFromErrors } = normalizeAndFormatErrors(\n      [error],\n      {\n        includeStacktraceInErrorResponses:\n          this.internals.includeStacktraceInErrorResponses,\n        formatError: this.internals.formatError,\n      },\n    );\n\n    return {\n      status: httpFromErrors.status ?? 500,\n      headers: new HeaderMap([\n        ...httpFromErrors.headers,\n        [\n          'content-type',\n          // Note that we may change the default to\n          // 'application/graphql-response+json' by 2025 as encouraged by the\n          // graphql-over-http spec. It's maybe a bit bad for us to provide\n          // an application/json response if they send `accept: foo/bar`,\n          // but we're already providing some sort of bad request error, and\n          // it's probably more useful for them to fix the other error before\n          // they deal with the `accept` header.\n          chooseContentTypeForSingleResultResponse(requestHead) ??\n            MEDIA_TYPES.APPLICATION_JSON,\n        ],\n      ]),\n      body: {\n        kind: 'complete',\n        string: await this.internals.stringifyResult({\n          errors: formattedErrors,\n        }),\n      },\n    };\n  }\n\n  private prefersHTML(request: HTTPGraphQLRequest): boolean {\n    const acceptHeader = request.headers.get('accept');\n    return (\n      request.method === 'GET' &&\n      !!acceptHeader &&\n      new Negotiator({\n        headers: { accept: acceptHeader },\n      }).mediaType([\n        // We need it to actively prefer text/html over less browser-y types;\n        // eg, `accept: */*' should still go for JSON. Negotiator does tiebreak\n        // by the order in the list we provide, so we put text/html last.\n        MEDIA_TYPES.APPLICATION_JSON,\n        MEDIA_TYPES.APPLICATION_GRAPHQL_RESPONSE_JSON,\n        MEDIA_TYPES.MULTIPART_MIXED_EXPERIMENTAL_ALPHA_2,\n        MEDIA_TYPES.MULTIPART_MIXED_EXPERIMENTAL_ALPHA_9,\n        MEDIA_TYPES.MULTIPART_MIXED_NO_DEFER_SPEC,\n        MEDIA_TYPES.TEXT_HTML,\n      ]) === MEDIA_TYPES.TEXT_HTML\n    );\n  }\n\n  /**\n   * This method is primarily meant for testing: it allows you to execute a\n   * GraphQL operation via the request pipeline without going through the HTTP\n   * layer. Note that this means that any handling you do in your server at the\n   * HTTP level will not affect this call!\n   *\n   * For convenience, you can provide `request.query` either as a string or a\n   * DocumentNode, in case you choose to use the gql tag in your tests. This is\n   * just a convenience, not an optimization (we convert provided ASTs back into\n   * string).\n   *\n   * The second object is an optional options object which includes the optional\n   * `contextValue` object available in resolvers.\n   *\n   * You may specify the TData and TVariables generic types when calling this\n   * method; Apollo Server does not validate that the returned data actually\n   * matches the structure of TData. (Typically these types are created by a\n   * code generation tool.) Note that this does not enforce that `variables` is\n   * provided at all, just that it has the right type if provided.\n   */\n  public async executeOperation<\n    TData = Record<string, unknown>,\n    TVariables extends VariableValues = VariableValues,\n  >(\n    this: ApolloServer<BaseContext>,\n    request: Omit<GraphQLRequest<TVariables>, 'query'> & {\n      query?: string | DocumentNode | TypedQueryDocumentNode<TData, TVariables>;\n    },\n  ): Promise<GraphQLResponse<TData>>;\n  public async executeOperation<\n    TData = Record<string, unknown>,\n    TVariables extends VariableValues = VariableValues,\n  >(\n    request: Omit<GraphQLRequest<TVariables>, 'query'> & {\n      query?: string | DocumentNode | TypedQueryDocumentNode<TData, TVariables>;\n    },\n    options?: ExecuteOperationOptions<TContext>,\n  ): Promise<GraphQLResponse<TData>>;\n\n  async executeOperation<\n    TData = Record<string, unknown>,\n    TVariables extends VariableValues = VariableValues,\n  >(\n    request: Omit<GraphQLRequest<TVariables>, 'query'> & {\n      // We should consider supporting TypedDocumentNode from\n      // `@graphql-typed-document-node/core` as well, as it is more popular than\n      // the newer built-in type.\n      query?: string | DocumentNode | TypedQueryDocumentNode<TData, TVariables>;\n    },\n    options: ExecuteOperationOptions<TContext> = {},\n  ): Promise<GraphQLResponse<TData>> {\n    // Since this function is mostly for testing, you don't need to explicitly\n    // start your server before calling it. (That also means you can use it with\n    // `apollo-server` which doesn't support `start()`.)\n    if (this.internals.state.phase === 'initialized') {\n      await this.start();\n    }\n\n    const schemaDerivedData = (\n      await this._ensureStarted()\n    ).schemaManager.getSchemaDerivedData();\n\n    // For convenience, this function lets you pass either a string or an AST,\n    // but we normalize to string.\n    const graphQLRequest: GraphQLRequest = {\n      ...request,\n      query:\n        request.query && typeof request.query !== 'string'\n          ? print(request.query)\n          : request.query,\n    };\n\n    const response: GraphQLResponse = await internalExecuteOperation(\n      {\n        server: this,\n        graphQLRequest,\n        internals: this.internals,\n        schemaDerivedData,\n        sharedResponseHTTPGraphQLHead: null,\n      },\n      options,\n    );\n\n    // It's your job to set an appropriate TData (perhaps using codegen); we\n    // don't validate it.\n    return response as GraphQLResponse<TData>;\n  }\n}\n\n// Shared code between runHttpQuery (ie executeHTTPGraphQLRequest) and\n// executeOperation to set up a request context and invoke the request pipeline.\nexport async function internalExecuteOperation<TContext extends BaseContext>(\n  {\n    server,\n    graphQLRequest,\n    internals,\n    schemaDerivedData,\n    sharedResponseHTTPGraphQLHead,\n  }: {\n    server: ApolloServer<TContext>;\n    graphQLRequest: GraphQLRequest;\n    internals: ApolloServerInternals<TContext>;\n    schemaDerivedData: SchemaDerivedData;\n    sharedResponseHTTPGraphQLHead: HTTPGraphQLHead | null;\n  },\n  options: ExecuteOperationOptions<TContext>,\n): Promise<GraphQLResponse> {\n  const requestContext: GraphQLRequestContext<TContext> = {\n    logger: server.logger,\n    cache: server.cache,\n    schema: schemaDerivedData.schema,\n    request: graphQLRequest,\n    response: {\n      http: sharedResponseHTTPGraphQLHead ?? newHTTPGraphQLHead(),\n    },\n    // We clone the context because there are some assumptions that every operation\n    // execution has a brand new context object; specifically, in order to implement\n    // willResolveField we put a Symbol on the context that is specific to a particular\n    // request pipeline execution. We could avoid this if we had a better way of\n    // instrumenting execution.\n    //\n    // We don't want to do a deep clone here, because one of the main advantages of\n    // using batched HTTP requests is to share context across operations for a\n    // single request.\n    //\n    // The typecast here is safe, because the only way `contextValue` can be\n    // null-ish is if we used the `contextValue?: BaseContext` override, in\n    // which case TContext is BaseContext and {} is ok. (This does depend on\n    // the fact we've hackily forced the class to be contravariant in\n    // TContext.)\n    contextValue: cloneObject(options?.contextValue ?? ({} as TContext)),\n    metrics: {},\n    overallCachePolicy: newCachePolicy(),\n    requestIsBatched: sharedResponseHTTPGraphQLHead !== null,\n  };\n\n  try {\n    return await processGraphQLRequest(\n      schemaDerivedData,\n      server,\n      internals,\n      requestContext,\n    );\n  } catch (maybeError: unknown) {\n    // processGraphQLRequest throwing usually means that either there's a bug in\n    // Apollo Server or some plugin hook threw unexpectedly.\n    const error = ensureError(maybeError);\n    // If *these* hooks throw then we'll still get a 500 but won't mask its\n    // error.\n    await Promise.all(\n      internals.plugins.map(async (plugin) =>\n        plugin.unexpectedErrorProcessingRequest?.({\n          requestContext,\n          error,\n        }),\n      ),\n    );\n    // Mask unexpected error externally.\n    server.logger.error(`Unexpected error processing request: ${error}`);\n    throw new Error('Internal server error');\n  }\n}\n\n// Unlike InternalPlugins (where we can decide whether to install the default\n// plugin based on looking at which plugins are installed),\n// ImplicitlyInstallablePlugins (ie the default landing page plugin) can't\n// determine if they're needed until later in startup. Specifically, we can't\n// know if we've defined our own landing page until after serverWillStart\n// plugins have run.\nexport type ImplicitlyInstallablePlugin<TContext extends BaseContext> =\n  ApolloServerPlugin<TContext> & {\n    __internal_installed_implicitly__: boolean;\n  };\n\nexport function isImplicitlyInstallablePlugin<TContext extends BaseContext>(\n  p: ApolloServerPlugin<TContext>,\n): p is ImplicitlyInstallablePlugin<TContext> {\n  return '__internal_installed_implicitly__' in p;\n}\n\nexport const MEDIA_TYPES = {\n  APPLICATION_JSON: 'application/json; charset=utf-8',\n  APPLICATION_JSON_GRAPHQL_CALLBACK:\n    'application/json; callbackSpec=1.0; charset=utf-8',\n  APPLICATION_GRAPHQL_RESPONSE_JSON:\n    'application/graphql-response+json; charset=utf-8',\n  // We do *not* currently support this content-type; we will once incremental\n  // delivery is part of the official GraphQL spec.\n  MULTIPART_MIXED_NO_DEFER_SPEC: 'multipart/mixed',\n  MULTIPART_MIXED_EXPERIMENTAL_ALPHA_2: 'multipart/mixed; deferSpec=20220824',\n  // This references the spec stored at\n  // https://specs.apollo.dev/incremental/v0.2/\n  MULTIPART_MIXED_EXPERIMENTAL_ALPHA_9: 'multipart/mixed; incrementalSpec=v0.2',\n  TEXT_HTML: 'text/html',\n};\n\nexport function chooseContentTypeForSingleResultResponse(\n  head: HTTPGraphQLHead,\n): string | null {\n  const acceptHeader = head.headers.get('accept');\n  if (!acceptHeader) {\n    // Note that we may change the default to\n    // 'application/graphql-response+json' by 2025 as encouraged by the\n    // graphql-over-http spec.\n    return MEDIA_TYPES.APPLICATION_JSON;\n  } else {\n    const preferred = new Negotiator({\n      headers: { accept: head.headers.get('accept') },\n    }).mediaType([\n      MEDIA_TYPES.APPLICATION_JSON,\n      MEDIA_TYPES.APPLICATION_GRAPHQL_RESPONSE_JSON,\n      MEDIA_TYPES.APPLICATION_JSON_GRAPHQL_CALLBACK,\n    ]);\n    if (preferred) {\n      return preferred;\n    } else {\n      return null;\n    }\n  }\n}\n\nfunction cloneObject<T extends Object>(object: T): T {\n  return Object.assign(Object.create(Object.getPrototypeOf(object)), object);\n}\n", "import { getNamedType, isScalarType } from 'graphql';\nimport { forEachField } from '@graphql-tools/utils';\nexport function assertResolversPresent(schema, resolverValidationOptions = {}) {\n    const { requireResolversForArgs, requireResolversForNonScalar, requireResolversForAllFields } = resolverValidationOptions;\n    if (requireResolversForAllFields && (requireResolversForArgs || requireResolversForNonScalar)) {\n        throw new TypeError('requireResolversForAllFields takes precedence over the more specific assertions. ' +\n            'Please configure either requireResolversForAllFields or requireResolversForArgs / ' +\n            'requireResolversForNonScalar, but not a combination of them.');\n    }\n    forEachField(schema, (field, typeName, fieldName) => {\n        // requires a resolver for *every* field.\n        if (requireResolversForAllFields) {\n            expectResolver('requireResolversForAllFields', requireResolversForAllFields, field, typeName, fieldName);\n        }\n        // requires a resolver on every field that has arguments\n        if (requireResolversForArgs && field.args.length > 0) {\n            expectResolver('requireResolversForArgs', requireResolversForArgs, field, typeName, fieldName);\n        }\n        // requires a resolver on every field that returns a non-scalar type\n        if (requireResolversForNonScalar !== 'ignore' && !isScalarType(getNamedType(field.type))) {\n            expectResolver('requireResolversForNonScalar', requireResolversForNonScalar, field, typeName, fieldName);\n        }\n    });\n}\nfunction expectResolver(validator, behavior, field, typeName, fieldName) {\n    if (!field.resolve) {\n        const message = `Resolver missing for \"${typeName}.${fieldName}\".\nTo disable this validator, use:\n  resolverValidationOptions: {\n    ${validator}: 'ignore'\n  }`;\n        if (behavior === 'error') {\n            throw new Error(message);\n        }\n        if (behavior === 'warn') {\n            console.warn(message);\n        }\n        return;\n    }\n    if (typeof field.resolve !== 'function') {\n        throw new Error(`Resolver \"${typeName}.${fieldName}\" must be a function`);\n    }\n}\n", "import { parse } from 'graphql';\nconst URL_REGEXP = /^(https?|wss?|file):\\/\\//;\n/**\n * Checks if the given string is a valid URL.\n *\n * @param str - The string to validate as a URL\n * @returns A boolean indicating whether the string is a valid URL\n *\n * @remarks\n * This function first attempts to use the `URL.canParse` method if available.\n * If not, it falls back to creating a new `URL` object to validate the string.\n */\nexport function isUrl(str) {\n    if (typeof str !== 'string') {\n        return false;\n    }\n    if (!URL_REGEXP.test(str)) {\n        return false;\n    }\n    if (URL.canParse) {\n        return URL.canParse(str);\n    }\n    try {\n        const url = new URL(str);\n        return !!url;\n    }\n    catch (e) {\n        return false;\n    }\n}\nexport const asArray = (fns) => (Array.isArray(fns) ? fns : fns ? [fns] : []);\nconst invalidDocRegex = /\\.[a-z0-9]+$/i;\n/**\n * Determines if a given input is a valid GraphQL document string.\n *\n * @param str - The input to validate as a GraphQL document\n * @returns A boolean indicating whether the input is a valid GraphQL document string\n *\n * @remarks\n * This function performs several validation checks:\n * - Ensures the input is a string\n * - Filters out strings with invalid document extensions\n * - Excludes URLs\n * - Attempts to parse the string as a GraphQL document\n *\n * @throws {Error} If the document fails to parse and is empty except GraphQL comments\n */\nexport function isDocumentString(str) {\n    if (typeof str !== 'string') {\n        return false;\n    }\n    // XXX: is-valid-path or is-glob treat SDL as a valid path\n    // (`scalar Date` for example)\n    // this why checking the extension is fast enough\n    // and prevent from parsing the string in order to find out\n    // if the string is a SDL\n    if (invalidDocRegex.test(str) || isUrl(str)) {\n        return false;\n    }\n    try {\n        parse(str);\n        return true;\n    }\n    catch (e) {\n        if (!e.message.includes('EOF') &&\n            str.replace(/(\\#[^*]*)/g, '').trim() !== '' &&\n            str.includes(' ')) {\n            throw new Error(`Failed to parse the GraphQL document. ${e.message}\\n${str}`);\n        }\n    }\n    return false;\n}\nconst invalidPathRegex = /[\u2018\u201C!%^<>`\\n]/;\n/**\n * Checkes whether the `str` contains any path illegal characters.\n *\n * A string may sometimes look like a path but is not (like an SDL of a simple\n * GraphQL schema). To make sure we don't yield false-positives in such cases,\n * we disallow new lines in paths (even though most Unix systems support new\n * lines in file names).\n */\nexport function isValidPath(str) {\n    return typeof str === 'string' && !invalidPathRegex.test(str);\n}\nexport function compareStrings(a, b) {\n    if (String(a) < String(b)) {\n        return -1;\n    }\n    if (String(a) > String(b)) {\n        return 1;\n    }\n    return 0;\n}\nexport function nodeToString(a) {\n    let name;\n    if ('alias' in a) {\n        name = a.alias?.value;\n    }\n    if (name == null && 'name' in a) {\n        name = a.name?.value;\n    }\n    if (name == null) {\n        name = a.kind;\n    }\n    return name;\n}\nexport function compareNodes(a, b, customFn) {\n    const aStr = nodeToString(a);\n    const bStr = nodeToString(b);\n    if (typeof customFn === 'function') {\n        return customFn(aStr, bStr);\n    }\n    return compareStrings(aStr, bStr);\n}\nexport function isSome(input) {\n    return input != null;\n}\nexport function assertSome(input, message = 'Value should be something') {\n    if (input == null) {\n        throw new Error(message);\n    }\n}\n", "// Taken from graphql-js\n// https://github.com/graphql/graphql-js/blob/main/src/jsutils/inspect.ts\nconst MAX_RECURSIVE_DEPTH = 3;\n/**\n * Used to print values in error messages.\n */\nexport function inspect(value) {\n    return formatValue(value, []);\n}\nfunction formatValue(value, seenValues) {\n    switch (typeof value) {\n        case 'string':\n            return JSON.stringify(value);\n        case 'function':\n            return value.name ? `[function ${value.name}]` : '[function]';\n        case 'object':\n            return formatObjectValue(value, seenValues);\n        default:\n            return String(value);\n    }\n}\nfunction formatError(value) {\n    // eslint-disable-next-line no-constant-condition\n    if ((value.name = 'GraphQLError')) {\n        return value.toString();\n    }\n    return `${value.name}: ${value.message};\\n ${value.stack}`;\n}\nfunction formatObjectValue(value, previouslySeenValues) {\n    if (value === null) {\n        return 'null';\n    }\n    if (value instanceof Error) {\n        if (value.name === 'AggregateError') {\n            return (formatError(value) +\n                '\\n' +\n                formatArray(value.errors, previouslySeenValues));\n        }\n        return formatError(value);\n    }\n    if (previouslySeenValues.includes(value)) {\n        return '[Circular]';\n    }\n    const seenValues = [...previouslySeenValues, value];\n    if (isJSONable(value)) {\n        const jsonValue = value.toJSON();\n        // check for infinite recursion\n        if (jsonValue !== value) {\n            return typeof jsonValue === 'string' ? jsonValue : formatValue(jsonValue, seenValues);\n        }\n    }\n    else if (Array.isArray(value)) {\n        return formatArray(value, seenValues);\n    }\n    return formatObject(value, seenValues);\n}\nfunction isJSONable(value) {\n    return typeof value.toJSON === 'function';\n}\nfunction formatObject(object, seenValues) {\n    const entries = Object.entries(object);\n    if (entries.length === 0) {\n        return '{}';\n    }\n    if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n        return '[' + getObjectTag(object) + ']';\n    }\n    const properties = entries.map(([key, value]) => key + ': ' + formatValue(value, seenValues));\n    return '{ ' + properties.join(', ') + ' }';\n}\nfunction formatArray(array, seenValues) {\n    if (array.length === 0) {\n        return '[]';\n    }\n    if (seenValues.length > MAX_RECURSIVE_DEPTH) {\n        return '[Array]';\n    }\n    const len = array.length;\n    const items = [];\n    for (let i = 0; i < len; ++i) {\n        items.push(formatValue(array[i], seenValues));\n    }\n    return '[' + items.join(', ') + ']';\n}\nfunction getObjectTag(object) {\n    const tag = Object.prototype.toString\n        .call(object)\n        .replace(/^\\[object /, '')\n        .replace(/]$/, '');\n    if (tag === 'Object' && typeof object.constructor === 'function') {\n        const name = object.constructor.name;\n        if (typeof name === 'string' && name !== '') {\n            return name;\n        }\n    }\n    return tag;\n}\n", "export var MapperKind;\n(function (MapperKind) {\n    MapperKind[\"TYPE\"] = \"MapperKind.TYPE\";\n    MapperKind[\"SCALAR_TYPE\"] = \"MapperKind.SCALAR_TYPE\";\n    MapperKind[\"ENUM_TYPE\"] = \"MapperKind.ENUM_TYPE\";\n    MapperKind[\"COMPOSITE_TYPE\"] = \"MapperKind.COMPOSITE_TYPE\";\n    MapperKind[\"OBJECT_TYPE\"] = \"MapperKind.OBJECT_TYPE\";\n    MapperKind[\"INPUT_OBJECT_TYPE\"] = \"MapperKind.INPUT_OBJECT_TYPE\";\n    MapperKind[\"ABSTRACT_TYPE\"] = \"MapperKind.ABSTRACT_TYPE\";\n    MapperKind[\"UNION_TYPE\"] = \"MapperKind.UNION_TYPE\";\n    MapperKind[\"INTERFACE_TYPE\"] = \"MapperKind.INTERFACE_TYPE\";\n    MapperKind[\"ROOT_OBJECT\"] = \"MapperKind.ROOT_OBJECT\";\n    MapperKind[\"QUERY\"] = \"MapperKind.QUERY\";\n    MapperKind[\"MUTATION\"] = \"MapperKind.MUTATION\";\n    MapperKind[\"SUBSCRIPTION\"] = \"MapperKind.SUBSCRIPTION\";\n    MapperKind[\"DIRECTIVE\"] = \"MapperKind.DIRECTIVE\";\n    MapperKind[\"FIELD\"] = \"MapperKind.FIELD\";\n    MapperKind[\"COMPOSITE_FIELD\"] = \"MapperKind.COMPOSITE_FIELD\";\n    MapperKind[\"OBJECT_FIELD\"] = \"MapperKind.OBJECT_FIELD\";\n    MapperKind[\"ROOT_FIELD\"] = \"MapperKind.ROOT_FIELD\";\n    MapperKind[\"QUERY_ROOT_FIELD\"] = \"MapperKind.QUERY_ROOT_FIELD\";\n    MapperKind[\"MUTATION_ROOT_FIELD\"] = \"MapperKind.MUTATION_ROOT_FIELD\";\n    MapperKind[\"SUBSCRIPTION_ROOT_FIELD\"] = \"MapperKind.SUBSCRIPTION_ROOT_FIELD\";\n    MapperKind[\"INTERFACE_FIELD\"] = \"MapperKind.INTERFACE_FIELD\";\n    MapperKind[\"INPUT_OBJECT_FIELD\"] = \"MapperKind.INPUT_OBJECT_FIELD\";\n    MapperKind[\"ARGUMENT\"] = \"MapperKind.ARGUMENT\";\n    MapperKind[\"ENUM_VALUE\"] = \"MapperKind.ENUM_VALUE\";\n})(MapperKind || (MapperKind = {}));\n", "import { GraphQLEnumType, GraphQLInputObjectType, GraphQLInterfaceType, GraphQLList, GraphQLNonNull, GraphQLObjectType, GraphQLSchema, isEnumType, isInputObjectType, isInterfaceType, isLeafType, isListType, isNamedType, isNonNullType, isObjectType, isScalarType, isUnionType, Kind, } from 'graphql';\nimport { getObjectTypeFromTypeMap } from './getObjectTypeFromTypeMap.js';\nimport { MapperKind, } from './Interfaces.js';\nimport { rewireTypes } from './rewire.js';\nimport { parseInputValue, serializeInputValue } from './transformInputValue.js';\nexport function mapSchema(schema, schemaMapper = {}) {\n    const newTypeMap = mapArguments(mapFields(mapTypes(mapDefaultValues(mapEnumValues(mapTypes(mapDefaultValues(schema.getTypeMap(), schema, serializeInputValue), schema, schemaMapper, type => isLeafType(type)), schema, schemaMapper), schema, parseInputValue), schema, schemaMapper, type => !isLeafType(type)), schema, schemaMapper), schema, schemaMapper);\n    const originalDirectives = schema.getDirectives();\n    const newDirectives = mapDirectives(originalDirectives, schema, schemaMapper);\n    const { typeMap, directives } = rewireTypes(newTypeMap, newDirectives);\n    return new GraphQLSchema({\n        ...schema.toConfig(),\n        query: getObjectTypeFromTypeMap(typeMap, getObjectTypeFromTypeMap(newTypeMap, schema.getQueryType())),\n        mutation: getObjectTypeFromTypeMap(typeMap, getObjectTypeFromTypeMap(newTypeMap, schema.getMutationType())),\n        subscription: getObjectTypeFromTypeMap(typeMap, getObjectTypeFromTypeMap(newTypeMap, schema.getSubscriptionType())),\n        types: Object.values(typeMap),\n        directives,\n    });\n}\nconst builtinTypes = ['String', 'ID', 'Int', 'Float', 'Boolean'];\nfunction mapTypes(originalTypeMap, schema, schemaMapper, testFn = () => true) {\n    const newTypeMap = {};\n    for (const typeName in originalTypeMap) {\n        if (!typeName.startsWith('__') && !builtinTypes.includes(typeName)) {\n            const originalType = originalTypeMap[typeName];\n            if (originalType == null || !testFn(originalType)) {\n                newTypeMap[typeName] = originalType;\n                continue;\n            }\n            const typeMapper = getTypeMapper(schema, schemaMapper, typeName);\n            if (typeMapper == null) {\n                newTypeMap[typeName] = originalType;\n                continue;\n            }\n            const maybeNewType = typeMapper(originalType, schema);\n            if (maybeNewType === undefined) {\n                newTypeMap[typeName] = originalType;\n                continue;\n            }\n            newTypeMap[typeName] = maybeNewType;\n        }\n    }\n    return newTypeMap;\n}\nfunction mapEnumValues(originalTypeMap, schema, schemaMapper) {\n    const enumValueMapper = getEnumValueMapper(schemaMapper);\n    if (!enumValueMapper) {\n        return originalTypeMap;\n    }\n    return mapTypes(originalTypeMap, schema, {\n        [MapperKind.ENUM_TYPE]: type => {\n            const config = type.toConfig();\n            const originalEnumValueConfigMap = config.values;\n            const newEnumValueConfigMap = {};\n            for (const externalValue in originalEnumValueConfigMap) {\n                const originalEnumValueConfig = originalEnumValueConfigMap[externalValue];\n                const mappedEnumValue = enumValueMapper(originalEnumValueConfig, type.name, schema, externalValue);\n                if (mappedEnumValue === undefined) {\n                    newEnumValueConfigMap[externalValue] = originalEnumValueConfig;\n                }\n                else if (Array.isArray(mappedEnumValue)) {\n                    const [newExternalValue, newEnumValueConfig] = mappedEnumValue;\n                    newEnumValueConfigMap[newExternalValue] =\n                        newEnumValueConfig === undefined ? originalEnumValueConfig : newEnumValueConfig;\n                }\n                else if (mappedEnumValue !== null) {\n                    newEnumValueConfigMap[externalValue] = mappedEnumValue;\n                }\n            }\n            return correctASTNodes(new GraphQLEnumType({\n                ...config,\n                values: newEnumValueConfigMap,\n            }));\n        },\n    }, type => isEnumType(type));\n}\nfunction mapDefaultValues(originalTypeMap, schema, fn) {\n    const newTypeMap = mapArguments(originalTypeMap, schema, {\n        [MapperKind.ARGUMENT]: argumentConfig => {\n            if (argumentConfig.defaultValue === undefined) {\n                return argumentConfig;\n            }\n            const maybeNewType = getNewType(originalTypeMap, argumentConfig.type);\n            if (maybeNewType != null) {\n                return {\n                    ...argumentConfig,\n                    defaultValue: fn(maybeNewType, argumentConfig.defaultValue),\n                };\n            }\n        },\n    });\n    return mapFields(newTypeMap, schema, {\n        [MapperKind.INPUT_OBJECT_FIELD]: inputFieldConfig => {\n            if (inputFieldConfig.defaultValue === undefined) {\n                return inputFieldConfig;\n            }\n            const maybeNewType = getNewType(newTypeMap, inputFieldConfig.type);\n            if (maybeNewType != null) {\n                return {\n                    ...inputFieldConfig,\n                    defaultValue: fn(maybeNewType, inputFieldConfig.defaultValue),\n                };\n            }\n        },\n    });\n}\nfunction getNewType(newTypeMap, type) {\n    if (isListType(type)) {\n        const newType = getNewType(newTypeMap, type.ofType);\n        return newType != null ? new GraphQLList(newType) : null;\n    }\n    else if (isNonNullType(type)) {\n        const newType = getNewType(newTypeMap, type.ofType);\n        return newType != null ? new GraphQLNonNull(newType) : null;\n    }\n    else if (isNamedType(type)) {\n        const newType = newTypeMap[type.name];\n        return newType != null ? newType : null;\n    }\n    return null;\n}\nfunction mapFields(originalTypeMap, schema, schemaMapper) {\n    const newTypeMap = {};\n    for (const typeName in originalTypeMap) {\n        if (!typeName.startsWith('__')) {\n            const originalType = originalTypeMap[typeName];\n            if (!isObjectType(originalType) &&\n                !isInterfaceType(originalType) &&\n                !isInputObjectType(originalType)) {\n                newTypeMap[typeName] = originalType;\n                continue;\n            }\n            const fieldMapper = getFieldMapper(schema, schemaMapper, typeName);\n            if (fieldMapper == null) {\n                newTypeMap[typeName] = originalType;\n                continue;\n            }\n            const config = originalType.toConfig();\n            const originalFieldConfigMap = config.fields;\n            const newFieldConfigMap = {};\n            for (const fieldName in originalFieldConfigMap) {\n                const originalFieldConfig = originalFieldConfigMap[fieldName];\n                const mappedField = fieldMapper(originalFieldConfig, fieldName, typeName, schema);\n                if (mappedField === undefined) {\n                    newFieldConfigMap[fieldName] = originalFieldConfig;\n                }\n                else if (Array.isArray(mappedField)) {\n                    const [newFieldName, newFieldConfig] = mappedField;\n                    if (newFieldConfig.astNode != null) {\n                        newFieldConfig.astNode = {\n                            ...newFieldConfig.astNode,\n                            name: {\n                                ...newFieldConfig.astNode.name,\n                                value: newFieldName,\n                            },\n                        };\n                    }\n                    newFieldConfigMap[newFieldName] =\n                        newFieldConfig === undefined ? originalFieldConfig : newFieldConfig;\n                }\n                else if (mappedField !== null) {\n                    newFieldConfigMap[fieldName] = mappedField;\n                }\n            }\n            if (isObjectType(originalType)) {\n                newTypeMap[typeName] = correctASTNodes(new GraphQLObjectType({\n                    ...config,\n                    fields: newFieldConfigMap,\n                }));\n            }\n            else if (isInterfaceType(originalType)) {\n                newTypeMap[typeName] = correctASTNodes(new GraphQLInterfaceType({\n                    ...config,\n                    fields: newFieldConfigMap,\n                }));\n            }\n            else {\n                newTypeMap[typeName] = correctASTNodes(new GraphQLInputObjectType({\n                    ...config,\n                    fields: newFieldConfigMap,\n                }));\n            }\n        }\n    }\n    return newTypeMap;\n}\nfunction mapArguments(originalTypeMap, schema, schemaMapper) {\n    const newTypeMap = {};\n    for (const typeName in originalTypeMap) {\n        if (!typeName.startsWith('__')) {\n            const originalType = originalTypeMap[typeName];\n            if (!isObjectType(originalType) && !isInterfaceType(originalType)) {\n                newTypeMap[typeName] = originalType;\n                continue;\n            }\n            const argumentMapper = getArgumentMapper(schemaMapper);\n            if (argumentMapper == null) {\n                newTypeMap[typeName] = originalType;\n                continue;\n            }\n            const config = originalType.toConfig();\n            const originalFieldConfigMap = config.fields;\n            const newFieldConfigMap = {};\n            for (const fieldName in originalFieldConfigMap) {\n                const originalFieldConfig = originalFieldConfigMap[fieldName];\n                const originalArgumentConfigMap = originalFieldConfig.args;\n                if (originalArgumentConfigMap == null) {\n                    newFieldConfigMap[fieldName] = originalFieldConfig;\n                    continue;\n                }\n                const argumentNames = Object.keys(originalArgumentConfigMap);\n                if (!argumentNames.length) {\n                    newFieldConfigMap[fieldName] = originalFieldConfig;\n                    continue;\n                }\n                const newArgumentConfigMap = {};\n                for (const argumentName of argumentNames) {\n                    const originalArgumentConfig = originalArgumentConfigMap[argumentName];\n                    const mappedArgument = argumentMapper(originalArgumentConfig, fieldName, typeName, schema);\n                    if (mappedArgument === undefined) {\n                        newArgumentConfigMap[argumentName] = originalArgumentConfig;\n                    }\n                    else if (Array.isArray(mappedArgument)) {\n                        const [newArgumentName, newArgumentConfig] = mappedArgument;\n                        newArgumentConfigMap[newArgumentName] = newArgumentConfig;\n                    }\n                    else if (mappedArgument !== null) {\n                        newArgumentConfigMap[argumentName] = mappedArgument;\n                    }\n                }\n                newFieldConfigMap[fieldName] = {\n                    ...originalFieldConfig,\n                    args: newArgumentConfigMap,\n                };\n            }\n            if (isObjectType(originalType)) {\n                newTypeMap[typeName] = new GraphQLObjectType({\n                    ...config,\n                    fields: newFieldConfigMap,\n                });\n            }\n            else if (isInterfaceType(originalType)) {\n                newTypeMap[typeName] = new GraphQLInterfaceType({\n                    ...config,\n                    fields: newFieldConfigMap,\n                });\n            }\n            else {\n                newTypeMap[typeName] = new GraphQLInputObjectType({\n                    ...config,\n                    fields: newFieldConfigMap,\n                });\n            }\n        }\n    }\n    return newTypeMap;\n}\nfunction mapDirectives(originalDirectives, schema, schemaMapper) {\n    const directiveMapper = getDirectiveMapper(schemaMapper);\n    if (directiveMapper == null) {\n        return originalDirectives.slice();\n    }\n    const newDirectives = [];\n    for (const directive of originalDirectives) {\n        const mappedDirective = directiveMapper(directive, schema);\n        if (mappedDirective === undefined) {\n            newDirectives.push(directive);\n        }\n        else if (mappedDirective !== null) {\n            newDirectives.push(mappedDirective);\n        }\n    }\n    return newDirectives;\n}\nfunction getTypeSpecifiers(schema, typeName) {\n    const type = schema.getType(typeName);\n    const specifiers = [MapperKind.TYPE];\n    if (isObjectType(type)) {\n        specifiers.push(MapperKind.COMPOSITE_TYPE, MapperKind.OBJECT_TYPE);\n        if (typeName === schema.getQueryType()?.name) {\n            specifiers.push(MapperKind.ROOT_OBJECT, MapperKind.QUERY);\n        }\n        else if (typeName === schema.getMutationType()?.name) {\n            specifiers.push(MapperKind.ROOT_OBJECT, MapperKind.MUTATION);\n        }\n        else if (typeName === schema.getSubscriptionType()?.name) {\n            specifiers.push(MapperKind.ROOT_OBJECT, MapperKind.SUBSCRIPTION);\n        }\n    }\n    else if (isInputObjectType(type)) {\n        specifiers.push(MapperKind.INPUT_OBJECT_TYPE);\n    }\n    else if (isInterfaceType(type)) {\n        specifiers.push(MapperKind.COMPOSITE_TYPE, MapperKind.ABSTRACT_TYPE, MapperKind.INTERFACE_TYPE);\n    }\n    else if (isUnionType(type)) {\n        specifiers.push(MapperKind.COMPOSITE_TYPE, MapperKind.ABSTRACT_TYPE, MapperKind.UNION_TYPE);\n    }\n    else if (isEnumType(type)) {\n        specifiers.push(MapperKind.ENUM_TYPE);\n    }\n    else if (isScalarType(type)) {\n        specifiers.push(MapperKind.SCALAR_TYPE);\n    }\n    return specifiers;\n}\nfunction getTypeMapper(schema, schemaMapper, typeName) {\n    const specifiers = getTypeSpecifiers(schema, typeName);\n    let typeMapper;\n    const stack = [...specifiers];\n    while (!typeMapper && stack.length > 0) {\n        // It is safe to use the ! operator here as we check the length.\n        const next = stack.pop();\n        typeMapper = schemaMapper[next];\n    }\n    return typeMapper != null ? typeMapper : null;\n}\nfunction getFieldSpecifiers(schema, typeName) {\n    const type = schema.getType(typeName);\n    const specifiers = [MapperKind.FIELD];\n    if (isObjectType(type)) {\n        specifiers.push(MapperKind.COMPOSITE_FIELD, MapperKind.OBJECT_FIELD);\n        if (typeName === schema.getQueryType()?.name) {\n            specifiers.push(MapperKind.ROOT_FIELD, MapperKind.QUERY_ROOT_FIELD);\n        }\n        else if (typeName === schema.getMutationType()?.name) {\n            specifiers.push(MapperKind.ROOT_FIELD, MapperKind.MUTATION_ROOT_FIELD);\n        }\n        else if (typeName === schema.getSubscriptionType()?.name) {\n            specifiers.push(MapperKind.ROOT_FIELD, MapperKind.SUBSCRIPTION_ROOT_FIELD);\n        }\n    }\n    else if (isInterfaceType(type)) {\n        specifiers.push(MapperKind.COMPOSITE_FIELD, MapperKind.INTERFACE_FIELD);\n    }\n    else if (isInputObjectType(type)) {\n        specifiers.push(MapperKind.INPUT_OBJECT_FIELD);\n    }\n    return specifiers;\n}\nfunction getFieldMapper(schema, schemaMapper, typeName) {\n    const specifiers = getFieldSpecifiers(schema, typeName);\n    let fieldMapper;\n    const stack = [...specifiers];\n    while (!fieldMapper && stack.length > 0) {\n        // It is safe to use the ! operator here as we check the length.\n        const next = stack.pop();\n        // TODO: fix this as unknown cast\n        fieldMapper = schemaMapper[next];\n    }\n    return fieldMapper ?? null;\n}\nfunction getArgumentMapper(schemaMapper) {\n    const argumentMapper = schemaMapper[MapperKind.ARGUMENT];\n    return argumentMapper != null ? argumentMapper : null;\n}\nfunction getDirectiveMapper(schemaMapper) {\n    const directiveMapper = schemaMapper[MapperKind.DIRECTIVE];\n    return directiveMapper != null ? directiveMapper : null;\n}\nfunction getEnumValueMapper(schemaMapper) {\n    const enumValueMapper = schemaMapper[MapperKind.ENUM_VALUE];\n    return enumValueMapper != null ? enumValueMapper : null;\n}\nexport function correctASTNodes(type) {\n    if (isObjectType(type)) {\n        const config = type.toConfig();\n        if (config.astNode != null) {\n            const fields = [];\n            for (const fieldName in config.fields) {\n                const fieldConfig = config.fields[fieldName];\n                if (fieldConfig.astNode != null) {\n                    fields.push(fieldConfig.astNode);\n                }\n            }\n            config.astNode = {\n                ...config.astNode,\n                kind: Kind.OBJECT_TYPE_DEFINITION,\n                fields,\n            };\n        }\n        if (config.extensionASTNodes != null) {\n            config.extensionASTNodes = config.extensionASTNodes.map(node => ({\n                ...node,\n                kind: Kind.OBJECT_TYPE_EXTENSION,\n                fields: undefined,\n            }));\n        }\n        return new GraphQLObjectType(config);\n    }\n    else if (isInterfaceType(type)) {\n        const config = type.toConfig();\n        if (config.astNode != null) {\n            const fields = [];\n            for (const fieldName in config.fields) {\n                const fieldConfig = config.fields[fieldName];\n                if (fieldConfig.astNode != null) {\n                    fields.push(fieldConfig.astNode);\n                }\n            }\n            config.astNode = {\n                ...config.astNode,\n                kind: Kind.INTERFACE_TYPE_DEFINITION,\n                fields,\n            };\n        }\n        if (config.extensionASTNodes != null) {\n            config.extensionASTNodes = config.extensionASTNodes.map(node => ({\n                ...node,\n                kind: Kind.INTERFACE_TYPE_EXTENSION,\n                fields: undefined,\n            }));\n        }\n        return new GraphQLInterfaceType(config);\n    }\n    else if (isInputObjectType(type)) {\n        const config = type.toConfig();\n        if (config.astNode != null) {\n            const fields = [];\n            for (const fieldName in config.fields) {\n                const fieldConfig = config.fields[fieldName];\n                if (fieldConfig.astNode != null) {\n                    fields.push(fieldConfig.astNode);\n                }\n            }\n            config.astNode = {\n                ...config.astNode,\n                kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n                fields,\n            };\n        }\n        if (config.extensionASTNodes != null) {\n            config.extensionASTNodes = config.extensionASTNodes.map(node => ({\n                ...node,\n                kind: Kind.INPUT_OBJECT_TYPE_EXTENSION,\n                fields: undefined,\n            }));\n        }\n        return new GraphQLInputObjectType(config);\n    }\n    else if (isEnumType(type)) {\n        const config = type.toConfig();\n        if (config.astNode != null) {\n            const values = [];\n            for (const enumKey in config.values) {\n                const enumValueConfig = config.values[enumKey];\n                if (enumValueConfig.astNode != null) {\n                    values.push(enumValueConfig.astNode);\n                }\n            }\n            config.astNode = {\n                ...config.astNode,\n                values,\n            };\n        }\n        if (config.extensionASTNodes != null) {\n            config.extensionASTNodes = config.extensionASTNodes.map(node => ({\n                ...node,\n                values: undefined,\n            }));\n        }\n        return new GraphQLEnumType(config);\n    }\n    else {\n        return type;\n    }\n}\n", "import { isObjectType } from 'graphql';\nexport function getObjectTypeFromTypeMap(typeMap, type) {\n    if (type) {\n        const maybeObjectType = typeMap[type.name];\n        if (isObjectType(maybeObjectType)) {\n            return maybeObjectType;\n        }\n    }\n}\n", "import { GraphQLDirective, GraphQLEnumType, GraphQLInputObjectType, GraphQLInterfaceType, GraphQLList, GraphQLNonNull, GraphQLObjectType, GraphQLScalarType, GraphQLUnionType, isEnumType, isInputObjectType, isInterfaceType, isListType, isNamedType, isNonNullType, isObjectType, isScalarType, isSpecifiedDirective, isSpecifiedScalarType, isUnionType, } from 'graphql';\nimport { getBuiltInForStub, isNamedStub } from './stub.js';\nexport function rewireTypes(originalTypeMap, directives) {\n    const referenceTypeMap = Object.create(null);\n    for (const typeName in originalTypeMap) {\n        referenceTypeMap[typeName] = originalTypeMap[typeName];\n    }\n    const newTypeMap = Object.create(null);\n    for (const typeName in referenceTypeMap) {\n        const namedType = referenceTypeMap[typeName];\n        if (namedType == null || typeName.startsWith('__')) {\n            continue;\n        }\n        const newName = namedType.name;\n        if (newName.startsWith('__')) {\n            continue;\n        }\n        if (newTypeMap[newName] != null) {\n            console.warn(`Duplicate schema type name ${newName} found; keeping the existing one found in the schema`);\n            continue;\n        }\n        newTypeMap[newName] = namedType;\n    }\n    for (const typeName in newTypeMap) {\n        newTypeMap[typeName] = rewireNamedType(newTypeMap[typeName]);\n    }\n    const newDirectives = directives.map(directive => rewireDirective(directive));\n    return {\n        typeMap: newTypeMap,\n        directives: newDirectives,\n    };\n    function rewireDirective(directive) {\n        if (isSpecifiedDirective(directive)) {\n            return directive;\n        }\n        const directiveConfig = directive.toConfig();\n        directiveConfig.args = rewireArgs(directiveConfig.args);\n        return new GraphQLDirective(directiveConfig);\n    }\n    function rewireArgs(args) {\n        const rewiredArgs = {};\n        for (const argName in args) {\n            const arg = args[argName];\n            const rewiredArgType = rewireType(arg.type);\n            if (rewiredArgType != null) {\n                arg.type = rewiredArgType;\n                rewiredArgs[argName] = arg;\n            }\n        }\n        return rewiredArgs;\n    }\n    function rewireNamedType(type) {\n        if (isObjectType(type)) {\n            const config = type.toConfig();\n            const newConfig = {\n                ...config,\n                fields: () => rewireFields(config.fields),\n                interfaces: () => rewireNamedTypes(config.interfaces),\n            };\n            return new GraphQLObjectType(newConfig);\n        }\n        else if (isInterfaceType(type)) {\n            const config = type.toConfig();\n            const newConfig = {\n                ...config,\n                fields: () => rewireFields(config.fields),\n            };\n            if ('interfaces' in newConfig) {\n                newConfig.interfaces = () => rewireNamedTypes(config.interfaces);\n            }\n            return new GraphQLInterfaceType(newConfig);\n        }\n        else if (isUnionType(type)) {\n            const config = type.toConfig();\n            const newConfig = {\n                ...config,\n                types: () => rewireNamedTypes(config.types),\n            };\n            return new GraphQLUnionType(newConfig);\n        }\n        else if (isInputObjectType(type)) {\n            const config = type.toConfig();\n            const newConfig = {\n                ...config,\n                fields: () => rewireInputFields(config.fields),\n            };\n            return new GraphQLInputObjectType(newConfig);\n        }\n        else if (isEnumType(type)) {\n            const enumConfig = type.toConfig();\n            return new GraphQLEnumType(enumConfig);\n        }\n        else if (isScalarType(type)) {\n            if (isSpecifiedScalarType(type)) {\n                return type;\n            }\n            const scalarConfig = type.toConfig();\n            return new GraphQLScalarType(scalarConfig);\n        }\n        throw new Error(`Unexpected schema type: ${type}`);\n    }\n    function rewireFields(fields) {\n        const rewiredFields = {};\n        for (const fieldName in fields) {\n            const field = fields[fieldName];\n            const rewiredFieldType = rewireType(field.type);\n            if (rewiredFieldType != null && field.args) {\n                field.type = rewiredFieldType;\n                field.args = rewireArgs(field.args);\n                rewiredFields[fieldName] = field;\n            }\n        }\n        return rewiredFields;\n    }\n    function rewireInputFields(fields) {\n        const rewiredFields = {};\n        for (const fieldName in fields) {\n            const field = fields[fieldName];\n            const rewiredFieldType = rewireType(field.type);\n            if (rewiredFieldType != null) {\n                field.type = rewiredFieldType;\n                rewiredFields[fieldName] = field;\n            }\n        }\n        return rewiredFields;\n    }\n    function rewireNamedTypes(namedTypes) {\n        const rewiredTypes = [];\n        for (const namedType of namedTypes) {\n            const rewiredType = rewireType(namedType);\n            if (rewiredType != null) {\n                rewiredTypes.push(rewiredType);\n            }\n        }\n        return rewiredTypes;\n    }\n    function rewireType(type) {\n        if (isListType(type)) {\n            const rewiredType = rewireType(type.ofType);\n            return rewiredType != null ? new GraphQLList(rewiredType) : null;\n        }\n        else if (isNonNullType(type)) {\n            const rewiredType = rewireType(type.ofType);\n            return rewiredType != null ? new GraphQLNonNull(rewiredType) : null;\n        }\n        else if (isNamedType(type)) {\n            let rewiredType = referenceTypeMap[type.name];\n            if (rewiredType === undefined) {\n                rewiredType = isNamedStub(type) ? getBuiltInForStub(type) : rewireNamedType(type);\n                newTypeMap[rewiredType.name] = referenceTypeMap[type.name] = rewiredType;\n            }\n            return rewiredType != null ? newTypeMap[rewiredType.name] : null;\n        }\n        return null;\n    }\n}\n", "import { GraphQLBoolean, GraphQLFloat, GraphQLID, GraphQLInputObjectType, GraphQLInt, GraphQLInterfaceType, GraphQLList, GraphQLNonNull, GraphQLObjectType, GraphQLString, Kind, } from 'graphql';\nexport function createNamedStub(name, type) {\n    let constructor;\n    if (type === 'object') {\n        constructor = GraphQLObjectType;\n    }\n    else if (type === 'interface') {\n        constructor = GraphQLInterfaceType;\n    }\n    else {\n        constructor = GraphQLInputObjectType;\n    }\n    return new constructor({\n        name,\n        fields: {\n            _fake: {\n                type: GraphQLString,\n            },\n        },\n    });\n}\nexport function createStub(node, type) {\n    switch (node.kind) {\n        case Kind.LIST_TYPE:\n            return new GraphQLList(createStub(node.type, type));\n        case Kind.NON_NULL_TYPE:\n            return new GraphQLNonNull(createStub(node.type, type));\n        default:\n            if (type === 'output') {\n                return createNamedStub(node.name.value, 'object');\n            }\n            return createNamedStub(node.name.value, 'input');\n    }\n}\nexport function isNamedStub(type) {\n    if ('getFields' in type) {\n        const fields = type.getFields();\n        // eslint-disable-next-line no-unreachable-loop\n        for (const fieldName in fields) {\n            const field = fields[fieldName];\n            return field.name === '_fake';\n        }\n    }\n    return false;\n}\nexport function getBuiltInForStub(type) {\n    switch (type.name) {\n        case GraphQLInt.name:\n            return GraphQLInt;\n        case GraphQLFloat.name:\n            return GraphQLFloat;\n        case GraphQLString.name:\n            return GraphQLString;\n        case GraphQLBoolean.name:\n            return GraphQLBoolean;\n        case GraphQLID.name:\n            return GraphQLID;\n        default:\n            return type;\n    }\n}\n", "import { getNullableType, isInputObjectType, isLeafType, isListType, } from 'graphql';\nimport { asArray } from './helpers.js';\nexport function transformInputValue(type, value, inputLeafValueTransformer = null, inputObjectValueTransformer = null) {\n    if (value == null) {\n        return value;\n    }\n    const nullableType = getNullableType(type);\n    if (isLeafType(nullableType)) {\n        return inputLeafValueTransformer != null\n            ? inputLeafValueTransformer(nullableType, value)\n            : value;\n    }\n    else if (isListType(nullableType)) {\n        return asArray(value).map((listMember) => transformInputValue(nullableType.ofType, listMember, inputLeafValueTransformer, inputObjectValueTransformer));\n    }\n    else if (isInputObjectType(nullableType)) {\n        const fields = nullableType.getFields();\n        const newValue = {};\n        for (const key in value) {\n            const field = fields[key];\n            if (field != null) {\n                newValue[key] = transformInputValue(field.type, value[key], inputLeafValueTransformer, inputObjectValueTransformer);\n            }\n        }\n        return inputObjectValueTransformer != null\n            ? inputObjectValueTransformer(nullableType, newValue)\n            : newValue;\n    }\n    // unreachable, no other possible return value\n}\nexport function serializeInputValue(type, value) {\n    return transformInputValue(type, value, (t, v) => {\n        try {\n            return t.serialize(v);\n        }\n        catch {\n            return v;\n        }\n    });\n}\nexport function parseInputValue(type, value) {\n    return transformInputValue(type, value, (t, v) => {\n        try {\n            return t.parseValue(v);\n        }\n        catch {\n            return v;\n        }\n    });\n}\nexport function parseInputValueLiteral(type, value) {\n    return transformInputValue(type, value, (t, v) => t.parseLiteral(v, {}));\n}\n", "import { GraphQLList, GraphQLNonNull, isInputObjectType, isInterfaceType, isLeafType, isListType, isNamedType, isNonNullType, isObjectType, isUnionType, } from 'graphql';\n// Update any references to named schema types that disagree with the named\n// types found in schema.getTypeMap().\n//\n// healSchema and its callers (visitSchema/visitSchemaDirectives) all modify the schema in place.\n// Therefore, private variables (such as the stored implementation map and the proper root types)\n// are not updated.\n//\n// If this causes issues, the schema could be more aggressively healed as follows:\n//\n// healSchema(schema);\n// const config = schema.toConfig()\n// const healedSchema = new GraphQLSchema({\n//   ...config,\n//   query: schema.getType('<desired new root query type name>'),\n//   mutation: schema.getType('<desired new root mutation type name>'),\n//   subscription: schema.getType('<desired new root subscription type name>'),\n// });\n//\n// One can then also -- if necessary --  assign the correct private variables to the initial schema\n// as follows:\n// Object.assign(schema, healedSchema);\n//\n// These steps are not taken automatically to preserve backwards compatibility with graphql-tools v4.\n// See https://github.com/ardatan/graphql-tools/issues/1462\n//\n// They were briefly taken in v5, but can now be phased out as they were only required when other\n// areas of the codebase were using healSchema and visitSchema more extensively.\n//\nexport function healSchema(schema) {\n    healTypes(schema.getTypeMap(), schema.getDirectives());\n    return schema;\n}\nexport function healTypes(originalTypeMap, directives) {\n    const actualNamedTypeMap = Object.create(null);\n    // If any of the .name properties of the GraphQLNamedType objects in\n    // schema.getTypeMap() have changed, the keys of the type map need to\n    // be updated accordingly.\n    for (const typeName in originalTypeMap) {\n        const namedType = originalTypeMap[typeName];\n        if (namedType == null || typeName.startsWith('__')) {\n            continue;\n        }\n        const actualName = namedType.name;\n        if (actualName.startsWith('__')) {\n            continue;\n        }\n        if (actualNamedTypeMap[actualName] != null) {\n            console.warn(`Duplicate schema type name ${actualName} found; keeping the existing one found in the schema`);\n            continue;\n        }\n        actualNamedTypeMap[actualName] = namedType;\n        // Note: we are deliberately leaving namedType in the schema by its\n        // original name (which might be different from actualName), so that\n        // references by that name can be healed.\n    }\n    // Now add back every named type by its actual name.\n    for (const typeName in actualNamedTypeMap) {\n        const namedType = actualNamedTypeMap[typeName];\n        originalTypeMap[typeName] = namedType;\n    }\n    // Directive declaration argument types can refer to named types.\n    for (const decl of directives) {\n        decl.args = decl.args.filter(arg => {\n            arg.type = healType(arg.type);\n            return arg.type !== null;\n        });\n    }\n    for (const typeName in originalTypeMap) {\n        const namedType = originalTypeMap[typeName];\n        // Heal all named types, except for dangling references, kept only to redirect.\n        if (!typeName.startsWith('__') && typeName in actualNamedTypeMap) {\n            if (namedType != null) {\n                healNamedType(namedType);\n            }\n        }\n    }\n    for (const typeName in originalTypeMap) {\n        if (!typeName.startsWith('__') && !(typeName in actualNamedTypeMap)) {\n            delete originalTypeMap[typeName];\n        }\n    }\n    function healNamedType(type) {\n        if (isObjectType(type)) {\n            healFields(type);\n            healInterfaces(type);\n            return;\n        }\n        else if (isInterfaceType(type)) {\n            healFields(type);\n            if ('getInterfaces' in type) {\n                healInterfaces(type);\n            }\n            return;\n        }\n        else if (isUnionType(type)) {\n            healUnderlyingTypes(type);\n            return;\n        }\n        else if (isInputObjectType(type)) {\n            healInputFields(type);\n            return;\n        }\n        else if (isLeafType(type)) {\n            return;\n        }\n        throw new Error(`Unexpected schema type: ${type}`);\n    }\n    function healFields(type) {\n        const fieldMap = type.getFields();\n        for (const [key, field] of Object.entries(fieldMap)) {\n            field.args\n                .map(arg => {\n                arg.type = healType(arg.type);\n                return arg.type === null ? null : arg;\n            })\n                .filter(Boolean);\n            field.type = healType(field.type);\n            if (field.type === null) {\n                delete fieldMap[key];\n            }\n        }\n    }\n    function healInterfaces(type) {\n        if ('getInterfaces' in type) {\n            const interfaces = type.getInterfaces();\n            interfaces.push(...interfaces\n                .splice(0)\n                .map(iface => healType(iface))\n                .filter(Boolean));\n        }\n    }\n    function healInputFields(type) {\n        const fieldMap = type.getFields();\n        for (const [key, field] of Object.entries(fieldMap)) {\n            field.type = healType(field.type);\n            if (field.type === null) {\n                delete fieldMap[key];\n            }\n        }\n    }\n    function healUnderlyingTypes(type) {\n        const types = type.getTypes();\n        types.push(...types\n            .splice(0)\n            .map(t => healType(t))\n            .filter(Boolean));\n    }\n    function healType(type) {\n        // Unwrap the two known wrapper types\n        if (isListType(type)) {\n            const healedType = healType(type.ofType);\n            return healedType != null ? new GraphQLList(healedType) : null;\n        }\n        else if (isNonNullType(type)) {\n            const healedType = healType(type.ofType);\n            return healedType != null ? new GraphQLNonNull(healedType) : null;\n        }\n        else if (isNamedType(type)) {\n            // If a type annotation on a field or an argument or a union member is\n            // any `GraphQLNamedType` with a `name`, then it must end up identical\n            // to `schema.getType(name)`, since `schema.getTypeMap()` is the source\n            // of truth for all named schema types.\n            // Note that new types can still be simply added by adding a field, as\n            // the official type will be undefined, not null.\n            const officialType = originalTypeMap[type.name];\n            if (officialType && type !== officialType) {\n                return officialType;\n            }\n        }\n        return type;\n    }\n}\n", "import { getNamedType, isObjectType } from 'graphql';\nexport function forEachField(schema, fn) {\n    const typeMap = schema.getTypeMap();\n    for (const typeName in typeMap) {\n        const type = typeMap[typeName];\n        // TODO: maybe have an option to include these?\n        if (!getNamedType(type).name.startsWith('__') && isObjectType(type)) {\n            const fields = type.getFields();\n            for (const fieldName in fields) {\n                const field = fields[fieldName];\n                fn(field, typeName, fieldName);\n            }\n        }\n    }\n}\n", "import { getNamedType, isInputObjectType, isObjectType } from 'graphql';\nexport function forEachDefaultValue(schema, fn) {\n    const typeMap = schema.getTypeMap();\n    for (const typeName in typeMap) {\n        const type = typeMap[typeName];\n        if (!getNamedType(type).name.startsWith('__')) {\n            if (isObjectType(type)) {\n                const fields = type.getFields();\n                for (const fieldName in fields) {\n                    const field = fields[fieldName];\n                    for (const arg of field.args) {\n                        arg.defaultValue = fn(arg.type, arg.defaultValue);\n                    }\n                }\n            }\n            else if (isInputObjectType(type)) {\n                const fields = type.getFields();\n                for (const fieldName in fields) {\n                    const field = fields[fieldName];\n                    field.defaultValue = fn(field.type, field.defaultValue);\n                }\n            }\n        }\n    }\n}\n", "import { GraphQLEnumType, GraphQLInterfaceType, GraphQLObjectType, GraphQLScalarType, GraphQLUnionType, isEnumType, isInterfaceType, isObjectType, isScalarType, isSpecifiedScalarType, isUnionType, } from 'graphql';\nimport { forEachDefaultValue, forEachField, healSchema, MapperKind, mapSchema, parseInputValue, serializeInputValue, } from '@graphql-tools/utils';\nimport { checkForResolveTypeResolver } from './checkForResolveTypeResolver.js';\nimport { extendResolversFromInterfaces } from './extendResolversFromInterfaces.js';\nexport function addResolversToSchema({ schema, resolvers: inputResolvers, defaultFieldResolver, resolverValidationOptions = {}, inheritResolversFromInterfaces = false, updateResolversInPlace = false, }) {\n    const { requireResolversToMatchSchema = 'error', requireResolversForResolveType } = resolverValidationOptions;\n    const resolvers = inheritResolversFromInterfaces\n        ? extendResolversFromInterfaces(schema, inputResolvers)\n        : inputResolvers;\n    for (const typeName in resolvers) {\n        const resolverValue = resolvers[typeName];\n        const resolverType = typeof resolverValue;\n        if (resolverType !== 'object') {\n            throw new Error(`\"${typeName}\" defined in resolvers, but has invalid value \"${resolverValue}\". The resolver's value must be of type object.`);\n        }\n        const type = schema.getType(typeName);\n        if (type == null) {\n            const msg = `\"${typeName}\" defined in resolvers, but not in schema`;\n            if (requireResolversToMatchSchema && requireResolversToMatchSchema !== 'error') {\n                if (requireResolversToMatchSchema === 'warn') {\n                    console.warn(msg);\n                }\n                continue;\n            }\n            throw new Error(msg);\n        }\n        else if (isSpecifiedScalarType(type)) {\n            // allow -- without recommending -- overriding of specified scalar types\n            for (const fieldName in resolverValue) {\n                if (fieldName.startsWith('__')) {\n                    type[fieldName.substring(2)] = resolverValue[fieldName];\n                }\n                else {\n                    type[fieldName] = resolverValue[fieldName];\n                }\n            }\n        }\n        else if (isEnumType(type)) {\n            const values = type.getValues();\n            for (const fieldName in resolverValue) {\n                if (!fieldName.startsWith('__') &&\n                    !values.some(value => value.name === fieldName) &&\n                    requireResolversToMatchSchema &&\n                    requireResolversToMatchSchema !== 'ignore') {\n                    const msg = `${type.name}.${fieldName} was defined in resolvers, but not present within ${type.name}`;\n                    if (requireResolversToMatchSchema === 'error') {\n                        throw new Error(msg);\n                    }\n                    else {\n                        console.warn(msg);\n                    }\n                }\n            }\n        }\n        else if (isUnionType(type)) {\n            for (const fieldName in resolverValue) {\n                if (!fieldName.startsWith('__') &&\n                    requireResolversToMatchSchema &&\n                    requireResolversToMatchSchema !== 'ignore') {\n                    const msg = `${type.name}.${fieldName} was defined in resolvers, but ${type.name} is not an object or interface type`;\n                    if (requireResolversToMatchSchema === 'error') {\n                        throw new Error(msg);\n                    }\n                    else {\n                        console.warn(msg);\n                    }\n                }\n            }\n        }\n        else if (isObjectType(type) || isInterfaceType(type)) {\n            for (const fieldName in resolverValue) {\n                if (!fieldName.startsWith('__')) {\n                    const fields = type.getFields();\n                    const field = fields[fieldName];\n                    if (field == null) {\n                        // Field present in resolver but not in schema\n                        if (requireResolversToMatchSchema && requireResolversToMatchSchema !== 'ignore') {\n                            const msg = `${typeName}.${fieldName} defined in resolvers, but not in schema`;\n                            if (requireResolversToMatchSchema === 'error') {\n                                throw new Error(msg);\n                            }\n                            else {\n                                console.error(msg);\n                            }\n                        }\n                    }\n                    else {\n                        // Field present in both the resolver and schema\n                        const fieldResolve = resolverValue[fieldName];\n                        if (typeof fieldResolve !== 'function' && typeof fieldResolve !== 'object') {\n                            throw new Error(`Resolver ${typeName}.${fieldName} must be object or function`);\n                        }\n                    }\n                }\n            }\n        }\n    }\n    schema = updateResolversInPlace\n        ? addResolversToExistingSchema(schema, resolvers, defaultFieldResolver)\n        : createNewSchemaWithResolvers(schema, resolvers, defaultFieldResolver);\n    if (requireResolversForResolveType && requireResolversForResolveType !== 'ignore') {\n        checkForResolveTypeResolver(schema, requireResolversForResolveType);\n    }\n    return schema;\n}\nfunction addResolversToExistingSchema(schema, resolvers, defaultFieldResolver) {\n    const typeMap = schema.getTypeMap();\n    for (const typeName in resolvers) {\n        const type = schema.getType(typeName);\n        const resolverValue = resolvers[typeName];\n        if (isScalarType(type)) {\n            for (const fieldName in resolverValue) {\n                if (fieldName.startsWith('__')) {\n                    type[fieldName.substring(2)] = resolverValue[fieldName];\n                }\n                else if (fieldName === 'astNode' && type.astNode != null) {\n                    type.astNode = {\n                        ...type.astNode,\n                        description: resolverValue?.astNode?.description ??\n                            type.astNode.description,\n                        directives: (type.astNode.directives ?? []).concat(resolverValue?.astNode?.directives ?? []),\n                    };\n                }\n                else if (fieldName === 'extensionASTNodes' && type.extensionASTNodes != null) {\n                    type.extensionASTNodes = type.extensionASTNodes.concat(resolverValue?.extensionASTNodes ?? []);\n                }\n                else if (fieldName === 'extensions' &&\n                    type.extensions != null &&\n                    resolverValue.extensions != null) {\n                    type.extensions = Object.assign(Object.create(null), type.extensions, resolverValue.extensions);\n                }\n                else {\n                    type[fieldName] = resolverValue[fieldName];\n                }\n            }\n        }\n        else if (isEnumType(type)) {\n            const config = type.toConfig();\n            const enumValueConfigMap = config.values;\n            for (const fieldName in resolverValue) {\n                if (fieldName.startsWith('__')) {\n                    config[fieldName.substring(2)] = resolverValue[fieldName];\n                }\n                else if (fieldName === 'astNode' && config.astNode != null) {\n                    config.astNode = {\n                        ...config.astNode,\n                        description: resolverValue?.astNode?.description ??\n                            config.astNode.description,\n                        directives: (config.astNode.directives ?? []).concat(resolverValue?.astNode?.directives ?? []),\n                    };\n                }\n                else if (fieldName === 'extensionASTNodes' && config.extensionASTNodes != null) {\n                    config.extensionASTNodes = config.extensionASTNodes.concat(resolverValue?.extensionASTNodes ?? []);\n                }\n                else if (fieldName === 'extensions' &&\n                    type.extensions != null &&\n                    resolverValue.extensions != null) {\n                    type.extensions = Object.assign(Object.create(null), type.extensions, resolverValue.extensions);\n                }\n                else if (enumValueConfigMap[fieldName]) {\n                    enumValueConfigMap[fieldName].value = resolverValue[fieldName];\n                }\n            }\n            typeMap[typeName] = new GraphQLEnumType(config);\n        }\n        else if (isUnionType(type)) {\n            for (const fieldName in resolverValue) {\n                if (fieldName.startsWith('__')) {\n                    type[fieldName.substring(2)] = resolverValue[fieldName];\n                }\n            }\n        }\n        else if (isObjectType(type) || isInterfaceType(type)) {\n            for (const fieldName in resolverValue) {\n                if (fieldName.startsWith('__')) {\n                    // this is for isTypeOf and resolveType and all the other stuff.\n                    type[fieldName.substring(2)] = resolverValue[fieldName];\n                    continue;\n                }\n                const fields = type.getFields();\n                const field = fields[fieldName];\n                if (field != null) {\n                    const fieldResolve = resolverValue[fieldName];\n                    if (typeof fieldResolve === 'function') {\n                        // for convenience. Allows shorter syntax in resolver definition file\n                        field.resolve = fieldResolve.bind(resolverValue);\n                    }\n                    else {\n                        setFieldProperties(field, fieldResolve);\n                    }\n                }\n            }\n        }\n    }\n    // serialize all default values prior to healing fields with new scalar/enum types.\n    forEachDefaultValue(schema, serializeInputValue);\n    // schema may have new scalar/enum types that require healing\n    healSchema(schema);\n    // reparse all default values with new parsing functions.\n    forEachDefaultValue(schema, parseInputValue);\n    if (defaultFieldResolver != null) {\n        forEachField(schema, field => {\n            if (!field.resolve) {\n                field.resolve = defaultFieldResolver;\n            }\n        });\n    }\n    return schema;\n}\nfunction createNewSchemaWithResolvers(schema, resolvers, defaultFieldResolver) {\n    schema = mapSchema(schema, {\n        [MapperKind.SCALAR_TYPE]: type => {\n            const config = type.toConfig();\n            const resolverValue = resolvers[type.name];\n            if (!isSpecifiedScalarType(type) && resolverValue != null) {\n                for (const fieldName in resolverValue) {\n                    if (fieldName.startsWith('__')) {\n                        config[fieldName.substring(2)] = resolverValue[fieldName];\n                    }\n                    else if (fieldName === 'astNode' && config.astNode != null) {\n                        config.astNode = {\n                            ...config.astNode,\n                            description: resolverValue?.astNode?.description ??\n                                config.astNode.description,\n                            directives: (config.astNode.directives ?? []).concat(resolverValue?.astNode?.directives ?? []),\n                        };\n                    }\n                    else if (fieldName === 'extensionASTNodes' && config.extensionASTNodes != null) {\n                        config.extensionASTNodes = config.extensionASTNodes.concat(resolverValue?.extensionASTNodes ?? []);\n                    }\n                    else if (fieldName === 'extensions' &&\n                        config.extensions != null &&\n                        resolverValue.extensions != null) {\n                        config.extensions = Object.assign(Object.create(null), type.extensions, resolverValue.extensions);\n                    }\n                    else {\n                        config[fieldName] = resolverValue[fieldName];\n                    }\n                }\n                return new GraphQLScalarType(config);\n            }\n        },\n        [MapperKind.ENUM_TYPE]: type => {\n            const resolverValue = resolvers[type.name];\n            const config = type.toConfig();\n            const enumValueConfigMap = config.values;\n            if (resolverValue != null) {\n                for (const fieldName in resolverValue) {\n                    if (fieldName.startsWith('__')) {\n                        config[fieldName.substring(2)] = resolverValue[fieldName];\n                    }\n                    else if (fieldName === 'astNode' && config.astNode != null) {\n                        config.astNode = {\n                            ...config.astNode,\n                            description: resolverValue?.astNode?.description ??\n                                config.astNode.description,\n                            directives: (config.astNode.directives ?? []).concat(resolverValue?.astNode?.directives ?? []),\n                        };\n                    }\n                    else if (fieldName === 'extensionASTNodes' && config.extensionASTNodes != null) {\n                        config.extensionASTNodes = config.extensionASTNodes.concat(resolverValue?.extensionASTNodes ?? []);\n                    }\n                    else if (fieldName === 'extensions' &&\n                        config.extensions != null &&\n                        resolverValue.extensions != null) {\n                        config.extensions = Object.assign(Object.create(null), type.extensions, resolverValue.extensions);\n                    }\n                    else if (enumValueConfigMap[fieldName]) {\n                        enumValueConfigMap[fieldName].value = resolverValue[fieldName];\n                    }\n                }\n                return new GraphQLEnumType(config);\n            }\n        },\n        [MapperKind.UNION_TYPE]: type => {\n            const resolverValue = resolvers[type.name];\n            if (resolverValue != null) {\n                const config = type.toConfig();\n                if (resolverValue['__resolveType']) {\n                    config.resolveType = resolverValue['__resolveType'];\n                }\n                return new GraphQLUnionType(config);\n            }\n        },\n        [MapperKind.OBJECT_TYPE]: type => {\n            const resolverValue = resolvers[type.name];\n            if (resolverValue != null) {\n                const config = type.toConfig();\n                if (resolverValue['__isTypeOf']) {\n                    config.isTypeOf = resolverValue['__isTypeOf'];\n                }\n                return new GraphQLObjectType(config);\n            }\n        },\n        [MapperKind.INTERFACE_TYPE]: type => {\n            const resolverValue = resolvers[type.name];\n            if (resolverValue != null) {\n                const config = type.toConfig();\n                if (resolverValue['__resolveType']) {\n                    config.resolveType = resolverValue['__resolveType'];\n                }\n                return new GraphQLInterfaceType(config);\n            }\n        },\n        [MapperKind.COMPOSITE_FIELD]: (fieldConfig, fieldName, typeName) => {\n            const resolverValue = resolvers[typeName];\n            if (resolverValue != null) {\n                const fieldResolve = resolverValue[fieldName];\n                if (fieldResolve != null) {\n                    const newFieldConfig = { ...fieldConfig };\n                    if (typeof fieldResolve === 'function') {\n                        // for convenience. Allows shorter syntax in resolver definition file\n                        newFieldConfig.resolve = fieldResolve.bind(resolverValue);\n                    }\n                    else {\n                        setFieldProperties(newFieldConfig, fieldResolve);\n                    }\n                    return newFieldConfig;\n                }\n            }\n        },\n    });\n    if (defaultFieldResolver != null) {\n        schema = mapSchema(schema, {\n            [MapperKind.OBJECT_FIELD]: fieldConfig => ({\n                ...fieldConfig,\n                resolve: fieldConfig.resolve != null ? fieldConfig.resolve : defaultFieldResolver,\n            }),\n        });\n    }\n    return schema;\n}\nfunction setFieldProperties(field, propertiesObj) {\n    for (const propertyName in propertiesObj) {\n        field[propertyName] = propertiesObj[propertyName];\n    }\n}\n", "import { MapperKind, mapSchema } from '@graphql-tools/utils';\n// If we have any union or interface types throw if no there is no resolveType resolver\nexport function checkForResolveTypeResolver(schema, requireResolversForResolveType) {\n    mapSchema(schema, {\n        [MapperKind.ABSTRACT_TYPE]: type => {\n            if (!type.resolveType) {\n                const message = `Type \"${type.name}\" is missing a \"__resolveType\" resolver. Pass 'ignore' into ` +\n                    '\"resolverValidationOptions.requireResolversForResolveType\" to disable this error.';\n                if (requireResolversForResolveType === 'error') {\n                    throw new Error(message);\n                }\n                if (requireResolversForResolveType === 'warn') {\n                    console.warn(message);\n                }\n            }\n            return undefined;\n        },\n    });\n}\n", "export function extendResolversFromInterfaces(schema, resolvers) {\n    const extendedResolvers = {};\n    const typeMap = schema.getTypeMap();\n    for (const typeName in typeMap) {\n        const type = typeMap[typeName];\n        if ('getInterfaces' in type) {\n            extendedResolvers[typeName] = {};\n            for (const iFace of type.getInterfaces()) {\n                if (resolvers[iFace.name]) {\n                    for (const fieldName in resolvers[iFace.name]) {\n                        if (fieldName === '__isTypeOf' || !fieldName.startsWith('__')) {\n                            extendedResolvers[typeName][fieldName] = resolvers[iFace.name][fieldName];\n                        }\n                    }\n                }\n            }\n            const typeResolvers = resolvers[typeName];\n            extendedResolvers[typeName] = {\n                ...extendedResolvers[typeName],\n                ...typeResolvers,\n            };\n        }\n        else {\n            const typeResolvers = resolvers[typeName];\n            if (typeResolvers != null) {\n                extendedResolvers[typeName] = typeResolvers;\n            }\n        }\n    }\n    return extendedResolvers;\n}\n", "import { buildASTSchema, buildSchema, isSchema } from 'graphql';\nimport { applyExtensions, mergeResolvers, mergeTypeDefs } from '@graphql-tools/merge';\nimport { asArray } from '@graphql-tools/utils';\nimport { addResolversToSchema } from './addResolversToSchema.js';\nimport { assertResolversPresent } from './assertResolversPresent.js';\n/**\n * Builds a schema from the provided type definitions and resolvers.\n *\n * The type definitions are written using Schema Definition Language (SDL). They\n * can be provided as a string, a `DocumentNode`, a function, or an array of any\n * of these. If a function is provided, it will be passed no arguments and\n * should return an array of strings or `DocumentNode`s.\n *\n * Note: You can use GraphQL magic comment provide additional syntax\n * highlighting in your editor (with the appropriate editor plugin).\n *\n * ```js\n * const typeDefs = /* GraphQL *\\/ `\n *   type Query {\n *     posts: [Post]\n *     author(id: Int!): Author\n *   }\n * `;\n * ```\n *\n * The `resolvers` object should be a map of type names to nested object, which\n * themselves map the type's fields to their appropriate resolvers.\n * See the [Resolvers](/docs/resolvers) section of the documentation for more details.\n *\n * ```js\n * const resolvers = {\n *   Query: {\n *     posts: (obj, args, ctx, info) => getAllPosts(),\n *     author: (obj, args, ctx, info) => getAuthorById(args.id)\n *   }\n * };\n * ```\n *\n * Once you've defined both the `typeDefs` and `resolvers`, you can create your\n * schema:\n *\n * ```js\n * const schema = makeExecutableSchema({\n *   typeDefs,\n *   resolvers,\n * })\n * ```\n */\nexport function makeExecutableSchema({ typeDefs, resolvers = {}, resolverValidationOptions = {}, inheritResolversFromInterfaces = false, updateResolversInPlace = false, schemaExtensions, defaultFieldResolver, ...otherOptions }) {\n    // Validate and clean up arguments\n    if (typeof resolverValidationOptions !== 'object') {\n        throw new Error('Expected `resolverValidationOptions` to be an object');\n    }\n    if (!typeDefs) {\n        throw new Error('Must provide typeDefs');\n    }\n    let schema;\n    if (isSchema(typeDefs)) {\n        schema = typeDefs;\n    }\n    else if (otherOptions?.commentDescriptions) {\n        const mergedTypeDefs = mergeTypeDefs(typeDefs, {\n            ...otherOptions,\n            commentDescriptions: true,\n        });\n        schema = buildSchema(mergedTypeDefs, otherOptions);\n    }\n    else {\n        const mergedTypeDefs = mergeTypeDefs(typeDefs, otherOptions);\n        schema = buildASTSchema(mergedTypeDefs, otherOptions);\n    }\n    // We allow passing in an array of resolver maps, in which case we merge them\n    schema = addResolversToSchema({\n        schema,\n        resolvers: mergeResolvers(resolvers),\n        resolverValidationOptions,\n        inheritResolversFromInterfaces,\n        updateResolversInPlace,\n        defaultFieldResolver,\n    });\n    if (Object.keys(resolverValidationOptions).length > 0) {\n        assertResolversPresent(schema, resolverValidationOptions);\n    }\n    if (schemaExtensions) {\n        for (const schemaExtension of asArray(schemaExtensions)) {\n            applyExtensions(schema, schemaExtension);\n        }\n    }\n    return schema;\n}\n", "import { parse } from 'graphql';\nconst URL_REGEXP = /^(https?|wss?|file):\\/\\//;\n/**\n * Checks if the given string is a valid URL.\n *\n * @param str - The string to validate as a URL\n * @returns A boolean indicating whether the string is a valid URL\n *\n * @remarks\n * This function first attempts to use the `URL.canParse` method if available.\n * If not, it falls back to creating a new `URL` object to validate the string.\n */\nexport function isUrl(str) {\n    if (typeof str !== 'string') {\n        return false;\n    }\n    if (!URL_REGEXP.test(str)) {\n        return false;\n    }\n    if (URL.canParse) {\n        return URL.canParse(str);\n    }\n    try {\n        const url = new URL(str);\n        return !!url;\n    }\n    catch (e) {\n        return false;\n    }\n}\nexport const asArray = (fns) => (Array.isArray(fns) ? fns : fns ? [fns] : []);\nconst invalidDocRegex = /\\.[a-z0-9]+$/i;\n/**\n * Determines if a given input is a valid GraphQL document string.\n *\n * @param str - The input to validate as a GraphQL document\n * @returns A boolean indicating whether the input is a valid GraphQL document string\n *\n * @remarks\n * This function performs several validation checks:\n * - Ensures the input is a string\n * - Filters out strings with invalid document extensions\n * - Excludes URLs\n * - Attempts to parse the string as a GraphQL document\n *\n * @throws {Error} If the document fails to parse and is empty except GraphQL comments\n */\nexport function isDocumentString(str) {\n    if (typeof str !== 'string') {\n        return false;\n    }\n    // XXX: is-valid-path or is-glob treat SDL as a valid path\n    // (`scalar Date` for example)\n    // this why checking the extension is fast enough\n    // and prevent from parsing the string in order to find out\n    // if the string is a SDL\n    if (invalidDocRegex.test(str) || isUrl(str)) {\n        return false;\n    }\n    try {\n        parse(str);\n        return true;\n    }\n    catch (e) {\n        if (!e.message.includes('EOF') &&\n            str.replace(/(\\#[^*]*)/g, '').trim() !== '' &&\n            str.includes(' ')) {\n            throw new Error(`Failed to parse the GraphQL document. ${e.message}\\n${str}`);\n        }\n    }\n    return false;\n}\nconst invalidPathRegex = /[\u2018\u201C!%^<>`\\n]/;\n/**\n * Checkes whether the `str` contains any path illegal characters.\n *\n * A string may sometimes look like a path but is not (like an SDL of a simple\n * GraphQL schema). To make sure we don't yield false-positives in such cases,\n * we disallow new lines in paths (even though most Unix systems support new\n * lines in file names).\n */\nexport function isValidPath(str) {\n    return typeof str === 'string' && !invalidPathRegex.test(str);\n}\nexport function compareStrings(a, b) {\n    if (String(a) < String(b)) {\n        return -1;\n    }\n    if (String(a) > String(b)) {\n        return 1;\n    }\n    return 0;\n}\nexport function nodeToString(a) {\n    let name;\n    if ('alias' in a) {\n        name = a.alias?.value;\n    }\n    if (name == null && 'name' in a) {\n        name = a.name?.value;\n    }\n    if (name == null) {\n        name = a.kind;\n    }\n    return name;\n}\nexport function compareNodes(a, b, customFn) {\n    const aStr = nodeToString(a);\n    const bStr = nodeToString(b);\n    if (typeof customFn === 'function') {\n        return customFn(aStr, bStr);\n    }\n    return compareStrings(aStr, bStr);\n}\nexport function isSome(input) {\n    return input != null;\n}\nexport function assertSome(input, message = 'Value should be something') {\n    if (input == null) {\n        throw new Error(message);\n    }\n}\n", "import { valueFromAST, valueFromASTUntyped } from 'graphql';\nimport { getArgumentValues } from './getArgumentValues.js';\nimport { memoize1 } from './memoize.js';\nexport function getDirectiveExtensions(directableObj, schema, pathToDirectivesInExtensions = ['directives']) {\n    const directiveExtensions = {};\n    if (directableObj.extensions) {\n        let directivesInExtensions = directableObj.extensions;\n        for (const pathSegment of pathToDirectivesInExtensions) {\n            directivesInExtensions = directivesInExtensions?.[pathSegment];\n        }\n        if (directivesInExtensions != null) {\n            for (const directiveNameProp in directivesInExtensions) {\n                const directiveObjs = directivesInExtensions[directiveNameProp];\n                const directiveName = directiveNameProp;\n                if (Array.isArray(directiveObjs)) {\n                    for (const directiveObj of directiveObjs) {\n                        let existingDirectiveExtensions = directiveExtensions[directiveName];\n                        if (!existingDirectiveExtensions) {\n                            existingDirectiveExtensions = [];\n                            directiveExtensions[directiveName] = existingDirectiveExtensions;\n                        }\n                        existingDirectiveExtensions.push(directiveObj);\n                    }\n                }\n                else {\n                    let existingDirectiveExtensions = directiveExtensions[directiveName];\n                    if (!existingDirectiveExtensions) {\n                        existingDirectiveExtensions = [];\n                        directiveExtensions[directiveName] = existingDirectiveExtensions;\n                    }\n                    existingDirectiveExtensions.push(directiveObjs);\n                }\n            }\n        }\n    }\n    const memoizedStringify = memoize1(obj => JSON.stringify(obj));\n    const astNodes = [];\n    if (directableObj.astNode) {\n        astNodes.push(directableObj.astNode);\n    }\n    if (directableObj.extensionASTNodes) {\n        astNodes.push(...directableObj.extensionASTNodes);\n    }\n    for (const astNode of astNodes) {\n        if (astNode.directives?.length) {\n            for (const directive of astNode.directives) {\n                const directiveName = directive.name.value;\n                let existingDirectiveExtensions = directiveExtensions[directiveName];\n                if (!existingDirectiveExtensions) {\n                    existingDirectiveExtensions = [];\n                    directiveExtensions[directiveName] = existingDirectiveExtensions;\n                }\n                const directiveInSchema = schema?.getDirective(directiveName);\n                let value = {};\n                if (directiveInSchema) {\n                    value = getArgumentValues(directiveInSchema, directive);\n                }\n                if (directive.arguments) {\n                    for (const argNode of directive.arguments) {\n                        const argName = argNode.name.value;\n                        if (value[argName] == null) {\n                            const argInDirective = directiveInSchema?.args.find(arg => arg.name === argName);\n                            if (argInDirective) {\n                                value[argName] = valueFromAST(argNode.value, argInDirective.type);\n                            }\n                        }\n                        if (value[argName] == null) {\n                            value[argName] = valueFromASTUntyped(argNode.value);\n                        }\n                    }\n                }\n                if (astNodes.length > 0 && existingDirectiveExtensions.length > 0) {\n                    const valStr = memoizedStringify(value);\n                    if (existingDirectiveExtensions.some(val => memoizedStringify(val) === valStr)) {\n                        continue;\n                    }\n                }\n                existingDirectiveExtensions.push(value);\n            }\n        }\n    }\n    return directiveExtensions;\n}\n", "import { inspect } from 'cross-inspect';\nimport { isNonNullType, Kind, print, valueFromAST, } from 'graphql';\nimport { createGraphQLError } from './errors.js';\nimport { hasOwnProperty } from './jsutils.js';\n/**\n * Prepares an object map of argument values given a list of argument\n * definitions and list of argument AST nodes.\n *\n * Note: The returned value is a plain Object with a prototype, since it is\n * exposed to user code. Care should be taken to not pull values from the\n * Object prototype.\n */\nexport function getArgumentValues(def, node, variableValues = {}) {\n    const coercedValues = {};\n    const argumentNodes = node.arguments ?? [];\n    const argNodeMap = argumentNodes.reduce((prev, arg) => ({\n        ...prev,\n        [arg.name.value]: arg,\n    }), {});\n    for (const { name, type: argType, defaultValue } of def.args) {\n        const argumentNode = argNodeMap[name];\n        if (!argumentNode) {\n            if (defaultValue !== undefined) {\n                coercedValues[name] = defaultValue;\n            }\n            else if (isNonNullType(argType)) {\n                throw createGraphQLError(`Argument \"${name}\" of required type \"${inspect(argType)}\" ` + 'was not provided.', {\n                    nodes: [node],\n                });\n            }\n            continue;\n        }\n        const valueNode = argumentNode.value;\n        let isNull = valueNode.kind === Kind.NULL;\n        if (valueNode.kind === Kind.VARIABLE) {\n            const variableName = valueNode.name.value;\n            if (variableValues == null || !hasOwnProperty(variableValues, variableName)) {\n                if (defaultValue !== undefined) {\n                    coercedValues[name] = defaultValue;\n                }\n                else if (isNonNullType(argType)) {\n                    throw createGraphQLError(`Argument \"${name}\" of required type \"${inspect(argType)}\" ` +\n                        `was provided the variable \"$${variableName}\" which was not provided a runtime value.`, {\n                        nodes: [valueNode],\n                    });\n                }\n                continue;\n            }\n            isNull = variableValues[variableName] == null;\n        }\n        if (isNull && isNonNullType(argType)) {\n            throw createGraphQLError(`Argument \"${name}\" of non-null type \"${inspect(argType)}\" ` + 'must not be null.', {\n                nodes: [valueNode],\n            });\n        }\n        const coercedValue = valueFromAST(valueNode, argType, variableValues);\n        if (coercedValue === undefined) {\n            // Note: ValuesOfCorrectTypeRule validation should catch this before\n            // execution. This is a runtime check to ensure execution does not\n            // continue with an invalid argument value.\n            throw createGraphQLError(`Argument \"${name}\" has invalid value ${print(valueNode)}.`, {\n                nodes: [valueNode],\n            });\n        }\n        coercedValues[name] = coercedValue;\n    }\n    return coercedValues;\n}\n", "import { locatedError as _locatedError, GraphQLError, versionInfo } from 'graphql';\nconst possibleGraphQLErrorProperties = [\n    'message',\n    'locations',\n    'path',\n    'nodes',\n    'source',\n    'positions',\n    'originalError',\n    'name',\n    'stack',\n    'extensions',\n    'coordinate',\n];\nexport function isGraphQLErrorLike(error) {\n    return (error != null &&\n        typeof error === 'object' &&\n        Object.keys(error).every(key => possibleGraphQLErrorProperties.includes(key)));\n}\nexport function createGraphQLError(message, options) {\n    if (options?.originalError &&\n        !(options.originalError instanceof Error) &&\n        isGraphQLErrorLike(options.originalError)) {\n        options.originalError = createGraphQLError(options.originalError.message, options.originalError);\n    }\n    // To avoid type error on graphql <16, we have to use an any type here\n    const Constructor = GraphQLError;\n    const error = versionInfo.major >= 16\n        ? new Constructor(message, options)\n        : new Constructor(message, options?.nodes, options?.source, options?.positions, options?.path, options?.originalError, options?.extensions);\n    if (options?.coordinate && error.coordinate == null) {\n        Object.defineProperties(error, {\n            coordinate: { value: options.coordinate, enumerable: true, configurable: true },\n        });\n    }\n    return error;\n}\nexport function getSchemaCoordinate(error) {\n    return error.coordinate;\n}\nexport function locatedError(rawError, nodes, path, info) {\n    const error = _locatedError(rawError, nodes, path);\n    // `graphql` locatedError is only changing path and nodes if it is not already defined\n    if (!error.coordinate && info && error.coordinate == null) {\n        const coordinate = `${info.parentType.name}.${info.fieldName}`;\n        Object.defineProperties(error, {\n            coordinate: { value: coordinate, enumerable: true, configurable: true },\n        });\n    }\n    return error;\n}\nexport function relocatedError(originalError, path, info) {\n    return createGraphQLError(originalError.message, {\n        nodes: originalError.nodes,\n        source: originalError.source,\n        positions: originalError.positions,\n        path: path == null ? originalError.path : path,\n        originalError,\n        extensions: originalError.extensions,\n        coordinate: info ? `${info.parentType.name}.${info.fieldName}` : undefined,\n    });\n}\n", "import { handleMaybePromise, isPromise } from '@whatwg-node/promise-helpers';\nexport function isIterableObject(value) {\n    return value != null && typeof value === 'object' && Symbol.iterator in value;\n}\nexport function isObjectLike(value) {\n    return typeof value === 'object' && value !== null;\n}\nexport { isPromise };\nexport function promiseReduce(values, callbackFn, initialValue) {\n    let accumulator = initialValue;\n    for (const value of values) {\n        accumulator = handleMaybePromise(() => accumulator, resolved => callbackFn(resolved, value));\n    }\n    return accumulator;\n}\nexport function hasOwnProperty(obj, prop) {\n    return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n", "export function memoize1(fn) {\n    const memoize1cache = new WeakMap();\n    return function memoized(a1) {\n        const cachedValue = memoize1cache.get(a1);\n        if (cachedValue === undefined) {\n            const newValue = fn(a1);\n            memoize1cache.set(a1, newValue);\n            return newValue;\n        }\n        return cachedValue;\n    };\n}\nexport function memoize2(fn) {\n    const memoize2cache = new WeakMap();\n    return function memoized(a1, a2) {\n        let cache2 = memoize2cache.get(a1);\n        if (!cache2) {\n            cache2 = new WeakMap();\n            memoize2cache.set(a1, cache2);\n            const newValue = fn(a1, a2);\n            cache2.set(a2, newValue);\n            return newValue;\n        }\n        const cachedValue = cache2.get(a2);\n        if (cachedValue === undefined) {\n            const newValue = fn(a1, a2);\n            cache2.set(a2, newValue);\n            return newValue;\n        }\n        return cachedValue;\n    };\n}\nexport function memoize3(fn) {\n    const memoize3Cache = new WeakMap();\n    return function memoized(a1, a2, a3) {\n        let cache2 = memoize3Cache.get(a1);\n        if (!cache2) {\n            cache2 = new WeakMap();\n            memoize3Cache.set(a1, cache2);\n            const cache3 = new WeakMap();\n            cache2.set(a2, cache3);\n            const newValue = fn(a1, a2, a3);\n            cache3.set(a3, newValue);\n            return newValue;\n        }\n        let cache3 = cache2.get(a2);\n        if (!cache3) {\n            cache3 = new WeakMap();\n            cache2.set(a2, cache3);\n            const newValue = fn(a1, a2, a3);\n            cache3.set(a3, newValue);\n            return newValue;\n        }\n        const cachedValue = cache3.get(a3);\n        if (cachedValue === undefined) {\n            const newValue = fn(a1, a2, a3);\n            cache3.set(a3, newValue);\n            return newValue;\n        }\n        return cachedValue;\n    };\n}\nexport function memoize4(fn) {\n    const memoize4Cache = new WeakMap();\n    return function memoized(a1, a2, a3, a4) {\n        let cache2 = memoize4Cache.get(a1);\n        if (!cache2) {\n            cache2 = new WeakMap();\n            memoize4Cache.set(a1, cache2);\n            const cache3 = new WeakMap();\n            cache2.set(a2, cache3);\n            const cache4 = new WeakMap();\n            cache3.set(a3, cache4);\n            const newValue = fn(a1, a2, a3, a4);\n            cache4.set(a4, newValue);\n            return newValue;\n        }\n        let cache3 = cache2.get(a2);\n        if (!cache3) {\n            cache3 = new WeakMap();\n            cache2.set(a2, cache3);\n            const cache4 = new WeakMap();\n            cache3.set(a3, cache4);\n            const newValue = fn(a1, a2, a3, a4);\n            cache4.set(a4, newValue);\n            return newValue;\n        }\n        const cache4 = cache3.get(a3);\n        if (!cache4) {\n            const cache4 = new WeakMap();\n            cache3.set(a3, cache4);\n            const newValue = fn(a1, a2, a3, a4);\n            cache4.set(a4, newValue);\n            return newValue;\n        }\n        const cachedValue = cache4.get(a4);\n        if (cachedValue === undefined) {\n            const newValue = fn(a1, a2, a3, a4);\n            cache4.set(a4, newValue);\n            return newValue;\n        }\n        return cachedValue;\n    };\n}\nexport function memoize5(fn) {\n    const memoize5Cache = new WeakMap();\n    return function memoized(a1, a2, a3, a4, a5) {\n        let cache2 = memoize5Cache.get(a1);\n        if (!cache2) {\n            cache2 = new WeakMap();\n            memoize5Cache.set(a1, cache2);\n            const cache3 = new WeakMap();\n            cache2.set(a2, cache3);\n            const cache4 = new WeakMap();\n            cache3.set(a3, cache4);\n            const cache5 = new WeakMap();\n            cache4.set(a4, cache5);\n            const newValue = fn(a1, a2, a3, a4, a5);\n            cache5.set(a5, newValue);\n            return newValue;\n        }\n        let cache3 = cache2.get(a2);\n        if (!cache3) {\n            cache3 = new WeakMap();\n            cache2.set(a2, cache3);\n            const cache4 = new WeakMap();\n            cache3.set(a3, cache4);\n            const cache5 = new WeakMap();\n            cache4.set(a4, cache5);\n            const newValue = fn(a1, a2, a3, a4, a5);\n            cache5.set(a5, newValue);\n            return newValue;\n        }\n        let cache4 = cache3.get(a3);\n        if (!cache4) {\n            cache4 = new WeakMap();\n            cache3.set(a3, cache4);\n            const cache5 = new WeakMap();\n            cache4.set(a4, cache5);\n            const newValue = fn(a1, a2, a3, a4, a5);\n            cache5.set(a5, newValue);\n            return newValue;\n        }\n        let cache5 = cache4.get(a4);\n        if (!cache5) {\n            cache5 = new WeakMap();\n            cache4.set(a4, cache5);\n            const newValue = fn(a1, a2, a3, a4, a5);\n            cache5.set(a5, newValue);\n            return newValue;\n        }\n        const cachedValue = cache5.get(a5);\n        if (cachedValue === undefined) {\n            const newValue = fn(a1, a2, a3, a4, a5);\n            cache5.set(a5, newValue);\n            return newValue;\n        }\n        return cachedValue;\n    };\n}\nexport function memoize2of4(fn) {\n    const memoize2of4cache = new WeakMap();\n    return function memoized(a1, a2, a3, a4) {\n        let cache2 = memoize2of4cache.get(a1);\n        if (!cache2) {\n            cache2 = new WeakMap();\n            memoize2of4cache.set(a1, cache2);\n            const newValue = fn(a1, a2, a3, a4);\n            cache2.set(a2, newValue);\n            return newValue;\n        }\n        const cachedValue = cache2.get(a2);\n        if (cachedValue === undefined) {\n            const newValue = fn(a1, a2, a3, a4);\n            cache2.set(a2, newValue);\n            return newValue;\n        }\n        return cachedValue;\n    };\n}\nexport function memoize2of5(fn) {\n    const memoize2of4cache = new WeakMap();\n    return function memoized(a1, a2, a3, a4, a5) {\n        let cache2 = memoize2of4cache.get(a1);\n        if (!cache2) {\n            cache2 = new WeakMap();\n            memoize2of4cache.set(a1, cache2);\n            const newValue = fn(a1, a2, a3, a4, a5);\n            cache2.set(a2, newValue);\n            return newValue;\n        }\n        const cachedValue = cache2.get(a2);\n        if (cachedValue === undefined) {\n            const newValue = fn(a1, a2, a3, a4, a5);\n            cache2.set(a2, newValue);\n            return newValue;\n        }\n        return cachedValue;\n    };\n}\n", "import { getDirectiveExtensions } from './getDirectiveExtensions.js';\nexport function getDirectivesInExtensions(node, pathToDirectivesInExtensions = ['directives']) {\n    const directiveExtensions = getDirectiveExtensions(node, undefined, pathToDirectivesInExtensions);\n    return Object.entries(directiveExtensions)\n        .map(([directiveName, directiveArgsArr]) => directiveArgsArr?.map(directiveArgs => ({\n        name: directiveName,\n        args: directiveArgs,\n    })))\n        .flat(Infinity)\n        .filter(Boolean);\n}\nexport function getDirectiveInExtensions(node, directiveName, pathToDirectivesInExtensions = ['directives']) {\n    const directiveExtensions = getDirectiveExtensions(node, undefined, pathToDirectivesInExtensions);\n    return directiveExtensions[directiveName];\n}\nexport function getDirectives(schema, node, pathToDirectivesInExtensions = ['directives']) {\n    const directiveExtensions = getDirectiveExtensions(node, schema, pathToDirectivesInExtensions);\n    return Object.entries(directiveExtensions)\n        .map(([directiveName, directiveArgsArr]) => directiveArgsArr?.map(directiveArgs => ({\n        name: directiveName,\n        args: directiveArgs,\n    })))\n        .flat(Infinity)\n        .filter(Boolean);\n}\nexport function getDirective(schema, node, directiveName, pathToDirectivesInExtensions = ['directives']) {\n    const directiveExtensions = getDirectiveExtensions(node, schema, pathToDirectivesInExtensions);\n    return directiveExtensions[directiveName];\n}\n", "import { GraphQLDeprecatedDirective, isEnumType, isInputObjectType, isInterfaceType, isIntrospectionType, isObjectType, isScalarType, isSpecifiedDirective, isSpecifiedScalarType, isUnionType, Kind, print, specifiedDirectives, } from 'graphql';\nimport { astFromType } from './astFromType.js';\nimport { astFromValue } from './astFromValue.js';\nimport { astFromValueUntyped } from './astFromValueUntyped.js';\nimport { getDescriptionNode } from './descriptionFromObject.js';\nimport { getDirectivesInExtensions, } from './get-directives.js';\nimport { isSome } from './helpers.js';\nimport { getRootTypeMap } from './rootTypes.js';\nexport function getDocumentNodeFromSchema(schema, options = {}) {\n    const pathToDirectivesInExtensions = options.pathToDirectivesInExtensions;\n    const typesMap = schema.getTypeMap();\n    const schemaNode = astFromSchema(schema, pathToDirectivesInExtensions);\n    const definitions = schemaNode != null ? [schemaNode] : [];\n    const directives = schema.getDirectives();\n    for (const directive of directives) {\n        if (isSpecifiedDirective(directive)) {\n            continue;\n        }\n        definitions.push(astFromDirective(directive, schema, pathToDirectivesInExtensions));\n    }\n    for (const typeName in typesMap) {\n        const type = typesMap[typeName];\n        const isPredefinedScalar = isSpecifiedScalarType(type);\n        const isIntrospection = isIntrospectionType(type);\n        if (isPredefinedScalar || isIntrospection) {\n            continue;\n        }\n        if (isObjectType(type)) {\n            definitions.push(astFromObjectType(type, schema, pathToDirectivesInExtensions));\n        }\n        else if (isInterfaceType(type)) {\n            definitions.push(astFromInterfaceType(type, schema, pathToDirectivesInExtensions));\n        }\n        else if (isUnionType(type)) {\n            definitions.push(astFromUnionType(type, schema, pathToDirectivesInExtensions));\n        }\n        else if (isInputObjectType(type)) {\n            definitions.push(astFromInputObjectType(type, schema, pathToDirectivesInExtensions));\n        }\n        else if (isEnumType(type)) {\n            definitions.push(astFromEnumType(type, schema, pathToDirectivesInExtensions));\n        }\n        else if (isScalarType(type)) {\n            definitions.push(astFromScalarType(type, schema, pathToDirectivesInExtensions));\n        }\n        else {\n            throw new Error(`Unknown type ${type}.`);\n        }\n    }\n    return {\n        kind: Kind.DOCUMENT,\n        definitions,\n    };\n}\n// this approach uses the default schema printer rather than a custom solution, so may be more backwards compatible\n// currently does not allow customization of printSchema options having to do with comments.\nexport function printSchemaWithDirectives(schema, options = {}) {\n    const documentNode = getDocumentNodeFromSchema(schema, options);\n    return print(documentNode);\n}\nexport function astFromSchema(schema, pathToDirectivesInExtensions) {\n    const operationTypeMap = new Map([\n        ['query', undefined],\n        ['mutation', undefined],\n        ['subscription', undefined],\n    ]);\n    const nodes = [];\n    if (schema.astNode != null) {\n        nodes.push(schema.astNode);\n    }\n    if (schema.extensionASTNodes != null) {\n        for (const extensionASTNode of schema.extensionASTNodes) {\n            nodes.push(extensionASTNode);\n        }\n    }\n    for (const node of nodes) {\n        if (node.operationTypes) {\n            for (const operationTypeDefinitionNode of node.operationTypes) {\n                operationTypeMap.set(operationTypeDefinitionNode.operation, operationTypeDefinitionNode);\n            }\n        }\n    }\n    const rootTypeMap = getRootTypeMap(schema);\n    for (const [operationTypeNode, operationTypeDefinitionNode] of operationTypeMap) {\n        const rootType = rootTypeMap.get(operationTypeNode);\n        if (rootType != null) {\n            const rootTypeAST = astFromType(rootType);\n            if (operationTypeDefinitionNode != null) {\n                operationTypeDefinitionNode.type = rootTypeAST;\n            }\n            else {\n                operationTypeMap.set(operationTypeNode, {\n                    kind: Kind.OPERATION_TYPE_DEFINITION,\n                    operation: operationTypeNode,\n                    type: rootTypeAST,\n                });\n            }\n        }\n    }\n    const operationTypes = [...operationTypeMap.values()].filter(isSome);\n    const directives = getDirectiveNodes(schema, schema, pathToDirectivesInExtensions);\n    if (!operationTypes.length && !directives.length) {\n        return null;\n    }\n    const schemaNode = {\n        kind: operationTypes.length ? Kind.SCHEMA_DEFINITION : Kind.SCHEMA_EXTENSION,\n        operationTypes,\n        // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n        directives: directives,\n    };\n    const descriptionNode = getDescriptionNode(schema);\n    if (descriptionNode) {\n        schemaNode.description = descriptionNode;\n    }\n    return schemaNode;\n}\nexport function astFromDirective(directive, schema, pathToDirectivesInExtensions) {\n    return {\n        kind: Kind.DIRECTIVE_DEFINITION,\n        description: getDescriptionNode(directive),\n        name: {\n            kind: Kind.NAME,\n            value: directive.name,\n        },\n        arguments: directive.args?.map(arg => astFromArg(arg, schema, pathToDirectivesInExtensions)),\n        repeatable: directive.isRepeatable,\n        locations: directive.locations?.map(location => ({\n            kind: Kind.NAME,\n            value: location,\n        })) || [],\n    };\n}\nexport function getDirectiveNodes(entity, schema, pathToDirectivesInExtensions) {\n    let directiveNodesBesidesNativeDirectives = [];\n    const directivesInExtensions = getDirectivesInExtensions(entity, pathToDirectivesInExtensions);\n    let directives;\n    if (directivesInExtensions != null) {\n        directives = makeDirectiveNodes(schema, directivesInExtensions);\n    }\n    let deprecatedDirectiveNode = null;\n    let specifiedByDirectiveNode = null;\n    let oneOfDirectiveNode = null;\n    if (directives != null) {\n        directiveNodesBesidesNativeDirectives = directives.filter(directive => specifiedDirectives.every(specifiedDirective => specifiedDirective.name !== directive.name.value));\n        deprecatedDirectiveNode = directives.find(directive => directive.name.value === 'deprecated');\n        specifiedByDirectiveNode = directives.find(directive => directive.name.value === 'specifiedBy');\n        oneOfDirectiveNode = directives.find(directive => directive.name.value === 'oneOf');\n    }\n    if (entity.deprecationReason != null && deprecatedDirectiveNode == null) {\n        deprecatedDirectiveNode = makeDeprecatedDirective(entity.deprecationReason);\n    }\n    if (entity.specifiedByUrl != null ||\n        (entity.specifiedByURL != null && specifiedByDirectiveNode == null)) {\n        const specifiedByValue = entity.specifiedByUrl || entity.specifiedByURL;\n        const specifiedByArgs = {\n            url: specifiedByValue,\n        };\n        specifiedByDirectiveNode = makeDirectiveNode('specifiedBy', specifiedByArgs);\n    }\n    if (entity.isOneOf && oneOfDirectiveNode == null) {\n        oneOfDirectiveNode = makeDirectiveNode('oneOf');\n    }\n    if (deprecatedDirectiveNode != null) {\n        directiveNodesBesidesNativeDirectives.push(deprecatedDirectiveNode);\n    }\n    if (specifiedByDirectiveNode != null) {\n        directiveNodesBesidesNativeDirectives.push(specifiedByDirectiveNode);\n    }\n    if (oneOfDirectiveNode != null) {\n        directiveNodesBesidesNativeDirectives.push(oneOfDirectiveNode);\n    }\n    return directiveNodesBesidesNativeDirectives;\n}\nexport function astFromArg(arg, schema, pathToDirectivesInExtensions) {\n    return {\n        kind: Kind.INPUT_VALUE_DEFINITION,\n        description: getDescriptionNode(arg),\n        name: {\n            kind: Kind.NAME,\n            value: arg.name,\n        },\n        type: astFromType(arg.type),\n        // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n        defaultValue: arg.defaultValue !== undefined\n            ? (astFromValue(arg.defaultValue, arg.type) ?? undefined)\n            : undefined,\n        directives: getDirectiveNodes(arg, schema, pathToDirectivesInExtensions),\n    };\n}\nexport function astFromObjectType(type, schema, pathToDirectivesInExtensions) {\n    return {\n        kind: Kind.OBJECT_TYPE_DEFINITION,\n        description: getDescriptionNode(type),\n        name: {\n            kind: Kind.NAME,\n            value: type.name,\n        },\n        fields: Object.values(type.getFields()).map(field => astFromField(field, schema, pathToDirectivesInExtensions)),\n        interfaces: Object.values(type.getInterfaces()).map(iFace => astFromType(iFace)),\n        directives: getDirectiveNodes(type, schema, pathToDirectivesInExtensions),\n    };\n}\nexport function astFromInterfaceType(type, schema, pathToDirectivesInExtensions) {\n    const node = {\n        kind: Kind.INTERFACE_TYPE_DEFINITION,\n        description: getDescriptionNode(type),\n        name: {\n            kind: Kind.NAME,\n            value: type.name,\n        },\n        fields: Object.values(type.getFields()).map(field => astFromField(field, schema, pathToDirectivesInExtensions)),\n        directives: getDirectiveNodes(type, schema, pathToDirectivesInExtensions),\n    };\n    if ('getInterfaces' in type) {\n        node.interfaces = Object.values(type.getInterfaces()).map(iFace => astFromType(iFace));\n    }\n    return node;\n}\nexport function astFromUnionType(type, schema, pathToDirectivesInExtensions) {\n    return {\n        kind: Kind.UNION_TYPE_DEFINITION,\n        description: getDescriptionNode(type),\n        name: {\n            kind: Kind.NAME,\n            value: type.name,\n        },\n        // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n        directives: getDirectiveNodes(type, schema, pathToDirectivesInExtensions),\n        types: type.getTypes().map(type => astFromType(type)),\n    };\n}\nexport function astFromInputObjectType(type, schema, pathToDirectivesInExtensions) {\n    return {\n        kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n        description: getDescriptionNode(type),\n        name: {\n            kind: Kind.NAME,\n            value: type.name,\n        },\n        fields: Object.values(type.getFields()).map(field => astFromInputField(field, schema, pathToDirectivesInExtensions)),\n        // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n        directives: getDirectiveNodes(type, schema, pathToDirectivesInExtensions),\n    };\n}\nexport function astFromEnumType(type, schema, pathToDirectivesInExtensions) {\n    return {\n        kind: Kind.ENUM_TYPE_DEFINITION,\n        description: getDescriptionNode(type),\n        name: {\n            kind: Kind.NAME,\n            value: type.name,\n        },\n        values: Object.values(type.getValues()).map(value => astFromEnumValue(value, schema, pathToDirectivesInExtensions)),\n        // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n        directives: getDirectiveNodes(type, schema, pathToDirectivesInExtensions),\n    };\n}\nexport function astFromScalarType(type, schema, pathToDirectivesInExtensions) {\n    const directivesInExtensions = getDirectivesInExtensions(type, pathToDirectivesInExtensions);\n    const directives = makeDirectiveNodes(schema, directivesInExtensions);\n    const specifiedByValue = (type['specifiedByUrl'] ||\n        type['specifiedByURL']);\n    if (specifiedByValue &&\n        !directives.some(directiveNode => directiveNode.name.value === 'specifiedBy')) {\n        const specifiedByArgs = {\n            url: specifiedByValue,\n        };\n        directives.push(makeDirectiveNode('specifiedBy', specifiedByArgs));\n    }\n    return {\n        kind: Kind.SCALAR_TYPE_DEFINITION,\n        description: getDescriptionNode(type),\n        name: {\n            kind: Kind.NAME,\n            value: type.name,\n        },\n        // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n        directives: directives,\n    };\n}\nexport function astFromField(field, schema, pathToDirectivesInExtensions) {\n    return {\n        kind: Kind.FIELD_DEFINITION,\n        description: getDescriptionNode(field),\n        name: {\n            kind: Kind.NAME,\n            value: field.name,\n        },\n        arguments: field.args.map(arg => astFromArg(arg, schema, pathToDirectivesInExtensions)),\n        type: astFromType(field.type),\n        // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n        directives: getDirectiveNodes(field, schema, pathToDirectivesInExtensions),\n    };\n}\nexport function astFromInputField(field, schema, pathToDirectivesInExtensions) {\n    return {\n        kind: Kind.INPUT_VALUE_DEFINITION,\n        description: getDescriptionNode(field),\n        name: {\n            kind: Kind.NAME,\n            value: field.name,\n        },\n        type: astFromType(field.type),\n        // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n        directives: getDirectiveNodes(field, schema, pathToDirectivesInExtensions),\n        defaultValue: astFromValue(field.defaultValue, field.type) ?? undefined,\n    };\n}\nexport function astFromEnumValue(value, schema, pathToDirectivesInExtensions) {\n    return {\n        kind: Kind.ENUM_VALUE_DEFINITION,\n        description: getDescriptionNode(value),\n        name: {\n            kind: Kind.NAME,\n            value: value.name,\n        },\n        directives: getDirectiveNodes(value, schema, pathToDirectivesInExtensions),\n    };\n}\nexport function makeDeprecatedDirective(deprecationReason) {\n    return makeDirectiveNode('deprecated', { reason: deprecationReason }, GraphQLDeprecatedDirective);\n}\nexport function makeDirectiveNode(name, args, directive) {\n    const directiveArguments = [];\n    for (const argName in args) {\n        const argValue = args[argName];\n        let value;\n        if (directive != null) {\n            const arg = directive.args.find(arg => arg.name === argName);\n            if (arg) {\n                value = astFromValue(argValue, arg.type);\n            }\n        }\n        if (value == null) {\n            value = astFromValueUntyped(argValue);\n        }\n        if (value != null) {\n            directiveArguments.push({\n                kind: Kind.ARGUMENT,\n                name: {\n                    kind: Kind.NAME,\n                    value: argName,\n                },\n                value,\n            });\n        }\n    }\n    return {\n        kind: Kind.DIRECTIVE,\n        name: {\n            kind: Kind.NAME,\n            value: name,\n        },\n        arguments: directiveArguments,\n    };\n}\nexport function makeDirectiveNodes(schema, directiveValues) {\n    const directiveNodes = [];\n    for (const { name, args } of directiveValues) {\n        const directive = schema?.getDirective(name);\n        directiveNodes.push(makeDirectiveNode(name, args, directive));\n    }\n    return directiveNodes;\n}\n", "import { inspect } from 'cross-inspect';\nimport { isListType, isNonNullType, Kind } from 'graphql';\nexport function astFromType(type) {\n    if (isNonNullType(type)) {\n        const innerType = astFromType(type.ofType);\n        if (innerType.kind === Kind.NON_NULL_TYPE) {\n            throw new Error(`Invalid type node ${inspect(type)}. Inner type of non-null type cannot be a non-null type.`);\n        }\n        return {\n            kind: Kind.NON_NULL_TYPE,\n            type: innerType,\n        };\n    }\n    else if (isListType(type)) {\n        return {\n            kind: Kind.LIST_TYPE,\n            type: astFromType(type.ofType),\n        };\n    }\n    return {\n        kind: Kind.NAMED_TYPE,\n        name: {\n            kind: Kind.NAME,\n            value: type.name,\n        },\n    };\n}\n", "import { inspect } from 'cross-inspect';\nimport { isEnumType, isInputObjectType, isLeafType, isListType, isNonNullType, Kind, } from 'graphql';\nimport { astFromValueUntyped } from './astFromValueUntyped.js';\nimport { isIterableObject, isObjectLike } from './jsutils.js';\n/**\n * Produces a GraphQL Value AST given a JavaScript object.\n * Function will match JavaScript/JSON values to GraphQL AST schema format\n * by using suggested GraphQLInputType. For example:\n *\n *     astFromValue(\"value\", GraphQLString)\n *\n * A GraphQL type must be provided, which will be used to interpret different\n * JavaScript values.\n *\n * | JSON Value    | GraphQL Value        |\n * | ------------- | -------------------- |\n * | Object        | Input Object         |\n * | Array         | List                 |\n * | Boolean       | Boolean              |\n * | String        | String / Enum Value  |\n * | Number        | Int / Float          |\n * | BigInt        | Int                  |\n * | Unknown       | Enum Value           |\n * | null          | NullValue            |\n *\n */\nexport function astFromValue(value, type) {\n    if (isNonNullType(type)) {\n        const astValue = astFromValue(value, type.ofType);\n        if (astValue?.kind === Kind.NULL) {\n            return null;\n        }\n        return astValue;\n    }\n    // only explicit null, not undefined, NaN\n    if (value === null) {\n        return { kind: Kind.NULL };\n    }\n    // undefined\n    if (value === undefined) {\n        return null;\n    }\n    // Convert JavaScript array to GraphQL list. If the GraphQLType is a list, but\n    // the value is not an array, convert the value using the list's item type.\n    if (isListType(type)) {\n        const itemType = type.ofType;\n        if (isIterableObject(value)) {\n            const valuesNodes = [];\n            for (const item of value) {\n                const itemNode = astFromValue(item, itemType);\n                if (itemNode != null) {\n                    valuesNodes.push(itemNode);\n                }\n            }\n            return { kind: Kind.LIST, values: valuesNodes };\n        }\n        return astFromValue(value, itemType);\n    }\n    // Populate the fields of the input object by creating ASTs from each value\n    // in the JavaScript object according to the fields in the input type.\n    if (isInputObjectType(type)) {\n        if (!isObjectLike(value)) {\n            return null;\n        }\n        const fieldNodes = [];\n        for (const field of Object.values(type.getFields())) {\n            const fieldValue = astFromValue(value[field.name], field.type);\n            if (fieldValue) {\n                fieldNodes.push({\n                    kind: Kind.OBJECT_FIELD,\n                    name: { kind: Kind.NAME, value: field.name },\n                    value: fieldValue,\n                });\n            }\n        }\n        return { kind: Kind.OBJECT, fields: fieldNodes };\n    }\n    if (isLeafType(type)) {\n        // Since value is an internally represented value, it must be serialized\n        // to an externally represented value before converting into an AST.\n        const serialized = type.serialize(value);\n        if (serialized == null) {\n            return null;\n        }\n        if (isEnumType(type)) {\n            return { kind: Kind.ENUM, value: serialized };\n        }\n        // ID types can use Int literals.\n        if (type.name === 'ID' &&\n            typeof serialized === 'string' &&\n            integerStringRegExp.test(serialized)) {\n            return { kind: Kind.INT, value: serialized };\n        }\n        return astFromValueUntyped(serialized);\n    }\n    /* c8 ignore next 3 */\n    // Not reachable, all possible types have been considered.\n    console.assert(false, 'Unexpected input type: ' + inspect(type));\n}\n/**\n * IntValue:\n *   - NegativeSign? 0\n *   - NegativeSign? NonZeroDigit ( Digit+ )?\n */\nconst integerStringRegExp = /^-?(?:0|[1-9][0-9]*)$/;\n", "import { Kind } from 'graphql';\n/**\n * Produces a GraphQL Value AST given a JavaScript object.\n * Function will match JavaScript/JSON values to GraphQL AST schema format\n * by using the following mapping.\n *\n * | JSON Value    | GraphQL Value        |\n * | ------------- | -------------------- |\n * | Object        | Input Object         |\n * | Array         | List                 |\n * | Boolean       | Boolean              |\n * | String        | String               |\n * | Number        | Int / Float          |\n * | BigInt        | Int                  |\n * | null          | NullValue            |\n *\n */\nexport function astFromValueUntyped(value) {\n    // only explicit null, not undefined, NaN\n    if (value === null) {\n        return { kind: Kind.NULL };\n    }\n    // undefined\n    if (value === undefined) {\n        return null;\n    }\n    // Convert JavaScript array to GraphQL list. If the GraphQLType is a list, but\n    // the value is not an array, convert the value using the list's item type.\n    if (Array.isArray(value)) {\n        const valuesNodes = [];\n        for (const item of value) {\n            const itemNode = astFromValueUntyped(item);\n            if (itemNode != null) {\n                valuesNodes.push(itemNode);\n            }\n        }\n        return { kind: Kind.LIST, values: valuesNodes };\n    }\n    if (typeof value === 'object') {\n        if (value?.toJSON) {\n            return astFromValueUntyped(value.toJSON());\n        }\n        const fieldNodes = [];\n        for (const fieldName in value) {\n            const fieldValue = value[fieldName];\n            const ast = astFromValueUntyped(fieldValue);\n            if (ast) {\n                fieldNodes.push({\n                    kind: Kind.OBJECT_FIELD,\n                    name: { kind: Kind.NAME, value: fieldName },\n                    value: ast,\n                });\n            }\n        }\n        return { kind: Kind.OBJECT, fields: fieldNodes };\n    }\n    // Others serialize based on their corresponding JavaScript scalar types.\n    if (typeof value === 'boolean') {\n        return { kind: Kind.BOOLEAN, value };\n    }\n    if (typeof value === 'bigint') {\n        return { kind: Kind.INT, value: String(value) };\n    }\n    // JavaScript numbers can be Int or Float values.\n    if (typeof value === 'number' && isFinite(value)) {\n        const stringNum = String(value);\n        return integerStringRegExp.test(stringNum)\n            ? { kind: Kind.INT, value: stringNum }\n            : { kind: Kind.FLOAT, value: stringNum };\n    }\n    if (typeof value === 'string') {\n        return { kind: Kind.STRING, value };\n    }\n    throw new TypeError(`Cannot convert value to AST: ${value}.`);\n}\n/**\n * IntValue:\n *   - NegativeSign? 0\n *   - NegativeSign? NonZeroDigit ( Digit+ )?\n */\nconst integerStringRegExp = /^-?(?:0|[1-9][0-9]*)$/;\n", "import { Kind } from 'graphql';\nexport function getDescriptionNode(obj) {\n    if (obj.astNode?.description) {\n        return {\n            ...obj.astNode.description,\n            block: true,\n        };\n    }\n    if (obj.description) {\n        return {\n            kind: Kind.STRING,\n            value: obj.description,\n            block: true,\n        };\n    }\n}\n", "import { createGraphQLError } from './errors.js';\nimport { memoize1 } from './memoize.js';\nexport function getDefinedRootType(schema, operation, nodes) {\n    const rootTypeMap = getRootTypeMap(schema);\n    const rootType = rootTypeMap.get(operation);\n    if (rootType == null) {\n        throw createGraphQLError(`Schema is not configured to execute ${operation} operation.`, {\n            nodes,\n        });\n    }\n    return rootType;\n}\nexport const getRootTypeNames = memoize1(function getRootTypeNames(schema) {\n    const rootTypes = getRootTypes(schema);\n    return new Set([...rootTypes].map(type => type.name));\n});\nexport const getRootTypes = memoize1(function getRootTypes(schema) {\n    const rootTypeMap = getRootTypeMap(schema);\n    return new Set(rootTypeMap.values());\n});\nexport const getRootTypeMap = memoize1(function getRootTypeMap(schema) {\n    const rootTypeMap = new Map();\n    const queryType = schema.getQueryType();\n    if (queryType) {\n        rootTypeMap.set('query', queryType);\n    }\n    const mutationType = schema.getMutationType();\n    if (mutationType) {\n        rootTypeMap.set('mutation', mutationType);\n    }\n    const subscriptionType = schema.getSubscriptionType();\n    if (subscriptionType) {\n        rootTypeMap.set('subscription', subscriptionType);\n    }\n    return rootTypeMap;\n});\n", "import { TokenKind, visit, } from 'graphql';\nconst MAX_LINE_LENGTH = 80;\nlet commentsRegistry = {};\nexport function resetComments() {\n    commentsRegistry = {};\n}\nexport function collectComment(node) {\n    const entityName = node.name?.value;\n    if (entityName == null) {\n        return;\n    }\n    pushComment(node, entityName);\n    switch (node.kind) {\n        case 'EnumTypeDefinition':\n            if (node.values) {\n                for (const value of node.values) {\n                    pushComment(value, entityName, value.name.value);\n                }\n            }\n            break;\n        case 'ObjectTypeDefinition':\n        case 'InputObjectTypeDefinition':\n        case 'InterfaceTypeDefinition':\n            if (node.fields) {\n                for (const field of node.fields) {\n                    pushComment(field, entityName, field.name.value);\n                    if (isFieldDefinitionNode(field) && field.arguments) {\n                        for (const arg of field.arguments) {\n                            pushComment(arg, entityName, field.name.value, arg.name.value);\n                        }\n                    }\n                }\n            }\n            break;\n    }\n}\nexport function pushComment(node, entity, field, argument) {\n    const comment = getComment(node);\n    if (typeof comment !== 'string' || comment.length === 0) {\n        return;\n    }\n    const keys = [entity];\n    if (field) {\n        keys.push(field);\n        if (argument) {\n            keys.push(argument);\n        }\n    }\n    const path = keys.join('.');\n    if (!commentsRegistry[path]) {\n        commentsRegistry[path] = [];\n    }\n    commentsRegistry[path].push(comment);\n}\nexport function printComment(comment) {\n    return '\\n# ' + comment.replace(/\\n/g, '\\n# ');\n}\n/**\n * Copyright (c) 2015-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/**\n * NOTE: ==> This file has been modified just to add comments to the printed AST\n * This is a temp measure, we will move to using the original non modified printer.js ASAP.\n */\n/**\n * Given maybeArray, print an empty string if it is null or empty, otherwise\n * print all items together separated by separator if provided\n */\nfunction join(maybeArray, separator) {\n    return maybeArray ? maybeArray.filter(x => x).join(separator || '') : '';\n}\nfunction hasMultilineItems(maybeArray) {\n    return maybeArray?.some(str => str.includes('\\n')) ?? false;\n}\nfunction addDescription(cb) {\n    return (node, _key, _parent, path, ancestors) => {\n        const keys = [];\n        const parent = path.reduce((prev, key) => {\n            if (['fields', 'arguments', 'values'].includes(key) && prev.name) {\n                keys.push(prev.name.value);\n            }\n            return prev[key];\n        }, ancestors[0]);\n        const key = [...keys, parent?.name?.value].filter(Boolean).join('.');\n        const items = [];\n        if (node.kind.includes('Definition') && commentsRegistry[key]) {\n            items.push(...commentsRegistry[key]);\n        }\n        return join([...items.map(printComment), node.description, cb(node, _key, _parent, path, ancestors)], '\\n');\n    };\n}\nfunction indent(maybeString) {\n    return maybeString && `  ${maybeString.replace(/\\n/g, '\\n  ')}`;\n}\n/**\n * Given array, print each item on its own line, wrapped in an\n * indented \"{ }\" block.\n */\nfunction block(array) {\n    return array && array.length !== 0 ? `{\\n${indent(join(array, '\\n'))}\\n}` : '';\n}\n/**\n * If maybeString is not null or empty, then wrap with start and end, otherwise\n * print an empty string.\n */\nfunction wrap(start, maybeString, end) {\n    return maybeString ? start + maybeString + (end || '') : '';\n}\n/**\n * Print a block string in the indented block form by adding a leading and\n * trailing blank line. However, if a block string starts with whitespace and is\n * a single-line, adding a leading blank line would strip that whitespace.\n */\nfunction printBlockString(value, isDescription = false) {\n    const escaped = value.replace(/\\\\/g, '\\\\\\\\').replace(/\"\"\"/g, '\\\\\"\"\"');\n    return (value[0] === ' ' || value[0] === '\\t') && value.indexOf('\\n') === -1\n        ? `\"\"\"${escaped.replace(/\"$/, '\"\\n')}\"\"\"`\n        : `\"\"\"\\n${isDescription ? escaped : indent(escaped)}\\n\"\"\"`;\n}\nconst printDocASTReducer = {\n    Name: { leave: node => node.value },\n    Variable: { leave: node => '$' + node.name },\n    // Document\n    Document: {\n        leave: node => join(node.definitions, '\\n\\n'),\n    },\n    OperationDefinition: {\n        leave: node => {\n            const varDefs = wrap('(', join(node.variableDefinitions, ', '), ')');\n            const prefix = join([node.operation, join([node.name, varDefs]), join(node.directives, ' ')], ' ');\n            // the query short form.\n            return prefix + ' ' + node.selectionSet;\n        },\n    },\n    VariableDefinition: {\n        leave: ({ variable, type, defaultValue, directives }) => variable + ': ' + type + wrap(' = ', defaultValue) + wrap(' ', join(directives, ' ')),\n    },\n    SelectionSet: { leave: ({ selections }) => block(selections) },\n    Field: {\n        leave({ alias, name, arguments: args, directives, selectionSet }) {\n            const prefix = wrap('', alias, ': ') + name;\n            let argsLine = prefix + wrap('(', join(args, ', '), ')');\n            if (argsLine.length > MAX_LINE_LENGTH) {\n                argsLine = prefix + wrap('(\\n', indent(join(args, '\\n')), '\\n)');\n            }\n            return join([argsLine, join(directives, ' '), selectionSet], ' ');\n        },\n    },\n    Argument: { leave: ({ name, value }) => name + ': ' + value },\n    // Fragments\n    FragmentSpread: {\n        leave: ({ name, directives }) => '...' + name + wrap(' ', join(directives, ' ')),\n    },\n    InlineFragment: {\n        leave: ({ typeCondition, directives, selectionSet }) => join(['...', wrap('on ', typeCondition), join(directives, ' '), selectionSet], ' '),\n    },\n    FragmentDefinition: {\n        leave: ({ name, typeCondition, variableDefinitions, directives, selectionSet }) => \n        // Note: fragment variable definitions are experimental and may be changed\n        // or removed in the future.\n        `fragment ${name}${wrap('(', join(variableDefinitions, ', '), ')')} ` +\n            `on ${typeCondition} ${wrap('', join(directives, ' '), ' ')}` +\n            selectionSet,\n    },\n    // Value\n    IntValue: { leave: ({ value }) => value },\n    FloatValue: { leave: ({ value }) => value },\n    StringValue: {\n        leave: ({ value, block: isBlockString }) => {\n            if (isBlockString) {\n                return printBlockString(value);\n            }\n            return JSON.stringify(value);\n        },\n    },\n    BooleanValue: { leave: ({ value }) => (value ? 'true' : 'false') },\n    NullValue: { leave: () => 'null' },\n    EnumValue: { leave: ({ value }) => value },\n    ListValue: { leave: ({ values }) => '[' + join(values, ', ') + ']' },\n    ObjectValue: { leave: ({ fields }) => '{' + join(fields, ', ') + '}' },\n    ObjectField: { leave: ({ name, value }) => name + ': ' + value },\n    // Directive\n    Directive: {\n        leave: ({ name, arguments: args }) => '@' + name + wrap('(', join(args, ', '), ')'),\n    },\n    // Type\n    NamedType: { leave: ({ name }) => name },\n    ListType: { leave: ({ type }) => '[' + type + ']' },\n    NonNullType: { leave: ({ type }) => type + '!' },\n    // Type System Definitions\n    SchemaDefinition: {\n        leave: ({ directives, operationTypes }) => join(['schema', join(directives, ' '), block(operationTypes)], ' '),\n    },\n    OperationTypeDefinition: {\n        leave: ({ operation, type }) => operation + ': ' + type,\n    },\n    ScalarTypeDefinition: {\n        leave: ({ name, directives }) => join(['scalar', name, join(directives, ' ')], ' '),\n    },\n    ObjectTypeDefinition: {\n        leave: ({ name, interfaces, directives, fields }) => join([\n            'type',\n            name,\n            wrap('implements ', join(interfaces, ' & ')),\n            join(directives, ' '),\n            block(fields),\n        ], ' '),\n    },\n    FieldDefinition: {\n        leave: ({ name, arguments: args, type, directives }) => name +\n            (hasMultilineItems(args)\n                ? wrap('(\\n', indent(join(args, '\\n')), '\\n)')\n                : wrap('(', join(args, ', '), ')')) +\n            ': ' +\n            type +\n            wrap(' ', join(directives, ' ')),\n    },\n    InputValueDefinition: {\n        leave: ({ name, type, defaultValue, directives }) => join([name + ': ' + type, wrap('= ', defaultValue), join(directives, ' ')], ' '),\n    },\n    InterfaceTypeDefinition: {\n        leave: ({ name, interfaces, directives, fields }) => join([\n            'interface',\n            name,\n            wrap('implements ', join(interfaces, ' & ')),\n            join(directives, ' '),\n            block(fields),\n        ], ' '),\n    },\n    UnionTypeDefinition: {\n        leave: ({ name, directives, types }) => join(['union', name, join(directives, ' '), wrap('= ', join(types, ' | '))], ' '),\n    },\n    EnumTypeDefinition: {\n        leave: ({ name, directives, values }) => join(['enum', name, join(directives, ' '), block(values)], ' '),\n    },\n    EnumValueDefinition: {\n        leave: ({ name, directives }) => join([name, join(directives, ' ')], ' '),\n    },\n    InputObjectTypeDefinition: {\n        leave: ({ name, directives, fields }) => join(['input', name, join(directives, ' '), block(fields)], ' '),\n    },\n    DirectiveDefinition: {\n        leave: ({ name, arguments: args, repeatable, locations }) => 'directive @' +\n            name +\n            (hasMultilineItems(args)\n                ? wrap('(\\n', indent(join(args, '\\n')), '\\n)')\n                : wrap('(', join(args, ', '), ')')) +\n            (repeatable ? ' repeatable' : '') +\n            ' on ' +\n            join(locations, ' | '),\n    },\n    SchemaExtension: {\n        leave: ({ directives, operationTypes }) => join(['extend schema', join(directives, ' '), block(operationTypes)], ' '),\n    },\n    ScalarTypeExtension: {\n        leave: ({ name, directives }) => join(['extend scalar', name, join(directives, ' ')], ' '),\n    },\n    ObjectTypeExtension: {\n        leave: ({ name, interfaces, directives, fields }) => join([\n            'extend type',\n            name,\n            wrap('implements ', join(interfaces, ' & ')),\n            join(directives, ' '),\n            block(fields),\n        ], ' '),\n    },\n    InterfaceTypeExtension: {\n        leave: ({ name, interfaces, directives, fields }) => join([\n            'extend interface',\n            name,\n            wrap('implements ', join(interfaces, ' & ')),\n            join(directives, ' '),\n            block(fields),\n        ], ' '),\n    },\n    UnionTypeExtension: {\n        leave: ({ name, directives, types }) => join(['extend union', name, join(directives, ' '), wrap('= ', join(types, ' | '))], ' '),\n    },\n    EnumTypeExtension: {\n        leave: ({ name, directives, values }) => join(['extend enum', name, join(directives, ' '), block(values)], ' '),\n    },\n    InputObjectTypeExtension: {\n        leave: ({ name, directives, fields }) => join(['extend input', name, join(directives, ' '), block(fields)], ' '),\n    },\n};\nconst printDocASTReducerWithComments = Object.keys(printDocASTReducer).reduce((prev, key) => ({\n    ...prev,\n    [key]: {\n        leave: addDescription(printDocASTReducer[key].leave),\n    },\n}), {});\n/**\n * Converts an AST into a string, using one set of reasonable\n * formatting rules.\n */\nexport function printWithComments(ast) {\n    return visit(ast, printDocASTReducerWithComments);\n}\nfunction isFieldDefinitionNode(node) {\n    return node.kind === 'FieldDefinition';\n}\n// graphql < v13 and > v15 does not export getDescription\nexport function getDescription(node, options) {\n    if (node.description != null) {\n        return node.description.value;\n    }\n    if (options?.commentDescriptions) {\n        return getComment(node);\n    }\n}\nexport function getComment(node) {\n    const rawValue = getLeadingCommentBlock(node);\n    if (rawValue !== undefined) {\n        return dedentBlockStringValue(`\\n${rawValue}`);\n    }\n}\nexport function getLeadingCommentBlock(node) {\n    const loc = node.loc;\n    if (!loc) {\n        return;\n    }\n    const comments = [];\n    let token = loc.startToken.prev;\n    while (token != null &&\n        token.kind === TokenKind.COMMENT &&\n        token.next != null &&\n        token.prev != null &&\n        token.line + 1 === token.next.line &&\n        token.line !== token.prev.line) {\n        const value = String(token.value);\n        comments.push(value);\n        token = token.prev;\n    }\n    return comments.length > 0 ? comments.reverse().join('\\n') : undefined;\n}\nexport function dedentBlockStringValue(rawString) {\n    // Expand a block string's raw value into independent lines.\n    const lines = rawString.split(/\\r\\n|[\\n\\r]/g);\n    // Remove common indentation from all lines but first.\n    const commonIndent = getBlockStringIndentation(lines);\n    if (commonIndent !== 0) {\n        for (let i = 1; i < lines.length; i++) {\n            lines[i] = lines[i].slice(commonIndent);\n        }\n    }\n    // Remove leading and trailing blank lines.\n    while (lines.length > 0 && isBlank(lines[0])) {\n        lines.shift();\n    }\n    while (lines.length > 0 && isBlank(lines[lines.length - 1])) {\n        lines.pop();\n    }\n    // Return a string of the lines joined with U+000A.\n    return lines.join('\\n');\n}\n/**\n * @internal\n */\nexport function getBlockStringIndentation(lines) {\n    let commonIndent = null;\n    for (let i = 1; i < lines.length; i++) {\n        const line = lines[i];\n        const indent = leadingWhitespace(line);\n        if (indent === line.length) {\n            continue; // skip empty lines\n        }\n        if (commonIndent === null || indent < commonIndent) {\n            commonIndent = indent;\n            if (commonIndent === 0) {\n                break;\n            }\n        }\n    }\n    return commonIndent === null ? 0 : commonIndent;\n}\nfunction leadingWhitespace(str) {\n    let i = 0;\n    while (i < str.length && (str[i] === ' ' || str[i] === '\\t')) {\n        i++;\n    }\n    return i;\n}\nfunction isBlank(str) {\n    return leadingWhitespace(str) === str.length;\n}\n", "import { isSome } from './helpers.js';\nexport function mergeDeep(sources, respectPrototype = false, respectArrays = false, respectArrayLength = false) {\n    if (sources.length === 0) {\n        return;\n    }\n    if (sources.length === 1) {\n        return sources[0];\n    }\n    let expectedLength;\n    let allArrays = true;\n    const areArraysInTheSameLength = sources.every(source => {\n        if (Array.isArray(source)) {\n            if (expectedLength === undefined) {\n                expectedLength = source.length;\n                return true;\n            }\n            else if (expectedLength === source.length) {\n                return true;\n            }\n        }\n        else {\n            allArrays = false;\n        }\n        return false;\n    });\n    if (respectArrayLength && areArraysInTheSameLength) {\n        return new Array(expectedLength).fill(null).map((_, index) => mergeDeep(sources.map(source => source[index]), respectPrototype, respectArrays, respectArrayLength));\n    }\n    if (allArrays) {\n        return sources.flat(1);\n    }\n    let output;\n    let firstObjectSource;\n    if (respectPrototype) {\n        firstObjectSource = sources.find(source => isObject(source));\n        if (firstObjectSource) {\n            if (output == null) {\n                output = {};\n            }\n            Object.setPrototypeOf(output, Object.create(Object.getPrototypeOf(firstObjectSource)));\n        }\n    }\n    for (const source of sources) {\n        if (source == null) {\n            continue;\n        }\n        if (isObject(source)) {\n            if (firstObjectSource) {\n                const outputPrototype = Object.getPrototypeOf(output);\n                const sourcePrototype = Object.getPrototypeOf(source);\n                if (sourcePrototype) {\n                    for (const key of Object.getOwnPropertyNames(sourcePrototype)) {\n                        const descriptor = Object.getOwnPropertyDescriptor(sourcePrototype, key);\n                        if (isSome(descriptor)) {\n                            Object.defineProperty(outputPrototype, key, descriptor);\n                        }\n                    }\n                }\n            }\n            for (const key in source) {\n                if (output == null) {\n                    output = {};\n                }\n                if (key in output) {\n                    output[key] = mergeDeep([output[key], source[key]], respectPrototype, respectArrays, respectArrayLength);\n                }\n                else {\n                    output[key] = source[key];\n                }\n            }\n        }\n        else if (Array.isArray(source)) {\n            if (!Array.isArray(output)) {\n                output = source;\n            }\n            else {\n                output = mergeDeep([output, source], respectPrototype, respectArrays, respectArrayLength);\n            }\n        }\n        else {\n            output = source;\n        }\n    }\n    return output;\n}\nfunction isObject(item) {\n    return item && typeof item === 'object' && !Array.isArray(item);\n}\n", "import { Kind } from 'graphql';\nexport function isDocumentNode(object) {\n    return object && typeof object === 'object' && 'kind' in object && object.kind === Kind.DOCUMENT;\n}\n", "import { mergeDeep } from '@graphql-tools/utils';\n/**\n * Deep merges multiple resolver definition objects into a single definition.\n * @param resolversDefinitions Resolver definitions to be merged\n * @param options Additional options\n *\n * ```js\n * const { mergeResolvers } = require('@graphql-tools/merge');\n * const clientResolver = require('./clientResolver');\n * const productResolver = require('./productResolver');\n *\n * const resolvers = mergeResolvers([\n *  clientResolver,\n *  productResolver,\n * ]);\n * ```\n *\n * If you don't want to manually create the array of resolver objects, you can\n * also use this function along with loadFiles:\n *\n * ```js\n * const path = require('path');\n * const { mergeResolvers } = require('@graphql-tools/merge');\n * const { loadFilesSync } = require('@graphql-tools/load-files');\n *\n * const resolversArray = loadFilesSync(path.join(__dirname, './resolvers'));\n *\n * const resolvers = mergeResolvers(resolversArray)\n * ```\n */\nexport function mergeResolvers(resolversDefinitions, options) {\n    if (!resolversDefinitions ||\n        (Array.isArray(resolversDefinitions) && resolversDefinitions.length === 0)) {\n        return {};\n    }\n    if (!Array.isArray(resolversDefinitions)) {\n        return resolversDefinitions;\n    }\n    if (resolversDefinitions.length === 1) {\n        return resolversDefinitions[0] || {};\n    }\n    const resolvers = new Array();\n    for (let resolversDefinition of resolversDefinitions) {\n        if (Array.isArray(resolversDefinition)) {\n            resolversDefinition = mergeResolvers(resolversDefinition);\n        }\n        if (typeof resolversDefinition === 'object' && resolversDefinition) {\n            resolvers.push(resolversDefinition);\n        }\n    }\n    const result = mergeDeep(resolvers, true);\n    if (options?.exclusions) {\n        for (const exclusion of options.exclusions) {\n            const [typeName, fieldName] = exclusion.split('.');\n            if (['__proto__', 'constructor', 'prototype'].includes(typeName) ||\n                ['__proto__', 'constructor', 'prototype'].includes(fieldName)) {\n                continue;\n            }\n            if (!fieldName || fieldName === '*') {\n                delete result[typeName];\n            }\n            else if (result[typeName]) {\n                delete result[typeName][fieldName];\n            }\n        }\n    }\n    return result;\n}\n", "import { compareNodes, isSome } from '@graphql-tools/utils';\nexport function mergeArguments(args1, args2, config) {\n    const result = deduplicateArguments([...args2, ...args1].filter(isSome), config);\n    if (config && config.sort) {\n        result.sort(compareNodes);\n    }\n    return result;\n}\nfunction deduplicateArguments(args, config) {\n    return args.reduce((acc, current) => {\n        const dupIndex = acc.findIndex(arg => arg.name.value === current.name.value);\n        if (dupIndex === -1) {\n            return acc.concat([current]);\n        }\n        else if (!config?.reverseArguments) {\n            acc[dupIndex] = current;\n        }\n        return acc;\n    }, []);\n}\n", "import { Kind, } from 'graphql';\nfunction isRepeatableDirective(directive, directives, repeatableLinkImports) {\n    return !!(directives?.[directive.name.value]?.repeatable ??\n        repeatableLinkImports?.has(directive.name.value));\n}\nfunction nameAlreadyExists(name, namesArr) {\n    return namesArr.some(({ value }) => value === name.value);\n}\nfunction mergeArguments(a1, a2) {\n    const result = [];\n    for (const argument of [...a2, ...a1]) {\n        const existingIndex = result.findIndex(a => a.name.value === argument.name.value);\n        if (existingIndex === -1) {\n            result.push(argument);\n        }\n        else {\n            const existingArg = result[existingIndex];\n            if (existingArg.value.kind === 'ListValue') {\n                const source = existingArg.value.values;\n                const target = argument.value.values;\n                // merge values of two lists\n                existingArg.value = {\n                    ...existingArg.value,\n                    values: deduplicateLists(source, target, (targetVal, source) => {\n                        const value = targetVal.value;\n                        return !value || !source.some((sourceVal) => sourceVal.value === value);\n                    }),\n                };\n            }\n            else {\n                existingArg.value = argument.value;\n            }\n        }\n    }\n    return result;\n}\nconst matchValues = (a, b) => {\n    if (a.kind === b.kind) {\n        switch (a.kind) {\n            case Kind.LIST:\n                return (a.values.length === b.values.length &&\n                    a.values.every(aVal => b.values.find(bVal => matchValues(aVal, bVal))));\n            case Kind.VARIABLE:\n            case Kind.NULL:\n                return true;\n            case Kind.OBJECT:\n                return (a.fields.length === b.fields.length &&\n                    a.fields.every(aField => b.fields.find(bField => aField.name.value === bField.name.value && matchValues(aField.value, bField.value))));\n            default:\n                return a.value === b.value;\n        }\n    }\n    return false;\n};\nconst isLinkDirective = (directive) => directive.name.value === 'link';\nconst getLinkDirectiveURL = (directive) => {\n    const stringValue = isLinkDirective(directive)\n        ? directive.arguments?.find(arg => arg.name.value === 'url')?.value\n        : undefined;\n    return stringValue?.kind === 'StringValue' ? stringValue.value : undefined;\n};\nconst matchArguments = (a, b) => a.name.value === b.name.value && a.value.kind === b.value.kind && matchValues(a.value, b.value);\n/**\n * Check if a directive is an exact match of another directive based on their\n * arguments.\n */\nconst matchDirectives = (a, b) => {\n    const matched = a.name.value === b.name.value &&\n        (a.arguments === b.arguments ||\n            (a.arguments?.length === b.arguments?.length &&\n                a.arguments?.every(argA => b.arguments?.find(argB => matchArguments(argA, argB)))));\n    return !!matched;\n};\nexport function mergeDirectives(d1 = [], d2 = [], config, directives) {\n    const reverseOrder = config && config.reverseDirectives;\n    const asNext = reverseOrder ? d1 : d2;\n    const asFirst = reverseOrder ? d2 : d1;\n    const result = [];\n    for (const directive of [...asNext, ...asFirst]) {\n        if (isRepeatableDirective(directive, directives, config?.repeatableLinkImports)) {\n            // look for repeated, identical directives that come before this instance\n            // if those exist, return null so that this directive gets removed.\n            const exactDuplicate = result.find(d => matchDirectives(directive, d));\n            if (!exactDuplicate) {\n                result.push(directive);\n            }\n        }\n        else {\n            const firstAt = result.findIndex(d => d.name.value === directive.name.value);\n            if (firstAt === -1) {\n                // if did not find a directive with this name on the result set already\n                result.push(directive);\n            }\n            else {\n                if (isLinkDirective(directive) && isLinkDirective(result[firstAt])) {\n                    const url1 = getLinkDirectiveURL(directive);\n                    const url2 = getLinkDirectiveURL(result[firstAt]);\n                    // if both are link directives but with different urls, do not merge them\n                    if (url1 && url2 && url1 !== url2) {\n                        result.push(directive);\n                        continue;\n                    }\n                }\n                // if not repeatable and found directive with the same name already in the result set,\n                // then merge the arguments of the existing directive and the new directive\n                const mergedArguments = mergeArguments(directive.arguments ?? [], result[firstAt].arguments ?? []);\n                result[firstAt] = {\n                    ...result[firstAt],\n                    arguments: mergedArguments.length === 0 ? undefined : mergedArguments,\n                };\n            }\n        }\n    }\n    return result;\n}\nexport function mergeDirective(node, existingNode) {\n    if (existingNode) {\n        return {\n            ...node,\n            arguments: deduplicateLists(existingNode.arguments || [], node.arguments || [], (arg, existingArgs) => !nameAlreadyExists(arg.name, existingArgs.map(a => a.name))),\n            locations: [\n                ...existingNode.locations,\n                ...node.locations.filter(name => !nameAlreadyExists(name, existingNode.locations)),\n            ],\n        };\n    }\n    return node;\n}\nfunction deduplicateLists(source, target, filterFn) {\n    return source.concat(target.filter(val => filterFn(val, source)));\n}\n", "import { compareNodes } from '@graphql-tools/utils';\nimport { mergeDirectives } from './directives.js';\nexport function mergeEnumValues(first, second, config, directives) {\n    if (config?.consistentEnumMerge) {\n        const reversed = [];\n        if (first) {\n            reversed.push(...first);\n        }\n        first = second;\n        second = reversed;\n    }\n    const enumValueMap = new Map();\n    if (first) {\n        for (const firstValue of first) {\n            enumValueMap.set(firstValue.name.value, firstValue);\n        }\n    }\n    if (second) {\n        for (const secondValue of second) {\n            const enumValue = secondValue.name.value;\n            if (enumValueMap.has(enumValue)) {\n                const firstValue = enumValueMap.get(enumValue);\n                firstValue.description = secondValue.description || firstValue.description;\n                firstValue.directives = mergeDirectives(secondValue.directives, firstValue.directives, directives);\n            }\n            else {\n                enumValueMap.set(enumValue, secondValue);\n            }\n        }\n    }\n    const result = [...enumValueMap.values()];\n    if (config && config.sort) {\n        result.sort(compareNodes);\n    }\n    return result;\n}\n", "import { Kind, } from 'graphql';\nimport { mergeDirectives } from './directives.js';\nimport { mergeEnumValues } from './enum-values.js';\nexport function mergeEnum(e1, e2, config, directives) {\n    if (e2) {\n        return {\n            name: e1.name,\n            description: e1['description'] || e2['description'],\n            kind: config?.convertExtensions ||\n                e1.kind === 'EnumTypeDefinition' ||\n                e2.kind === 'EnumTypeDefinition'\n                ? 'EnumTypeDefinition'\n                : 'EnumTypeExtension',\n            loc: e1.loc,\n            directives: mergeDirectives(e1.directives, e2.directives, config, directives),\n            values: mergeEnumValues(e1.values, e2.values, config),\n        };\n    }\n    return config?.convertExtensions\n        ? {\n            ...e1,\n            kind: Kind.ENUM_TYPE_DEFINITION,\n        }\n        : e1;\n}\n", "import { Kind, Source } from 'graphql';\nexport function isStringTypes(types) {\n    return typeof types === 'string';\n}\nexport function isSourceTypes(types) {\n    return types instanceof Source;\n}\nexport function extractType(type) {\n    let visitedType = type;\n    while (visitedType.kind === Kind.LIST_TYPE || visitedType.kind === 'NonNullType') {\n        visitedType = visitedType.type;\n    }\n    return visitedType;\n}\nexport function isWrappingTypeNode(type) {\n    return type.kind !== Kind.NAMED_TYPE;\n}\nexport function isListTypeNode(type) {\n    return type.kind === Kind.LIST_TYPE;\n}\nexport function isNonNullTypeNode(type) {\n    return type.kind === Kind.NON_NULL_TYPE;\n}\nexport function printTypeNode(type) {\n    if (isListTypeNode(type)) {\n        return `[${printTypeNode(type.type)}]`;\n    }\n    if (isNonNullTypeNode(type)) {\n        return `${printTypeNode(type.type)}!`;\n    }\n    return type.name.value;\n}\nexport var CompareVal;\n(function (CompareVal) {\n    CompareVal[CompareVal[\"A_SMALLER_THAN_B\"] = -1] = \"A_SMALLER_THAN_B\";\n    CompareVal[CompareVal[\"A_EQUALS_B\"] = 0] = \"A_EQUALS_B\";\n    CompareVal[CompareVal[\"A_GREATER_THAN_B\"] = 1] = \"A_GREATER_THAN_B\";\n})(CompareVal || (CompareVal = {}));\nexport function defaultStringComparator(a, b) {\n    if (a == null && b == null) {\n        return CompareVal.A_EQUALS_B;\n    }\n    if (a == null) {\n        return CompareVal.A_SMALLER_THAN_B;\n    }\n    if (b == null) {\n        return CompareVal.A_GREATER_THAN_B;\n    }\n    if (a < b)\n        return CompareVal.A_SMALLER_THAN_B;\n    if (a > b)\n        return CompareVal.A_GREATER_THAN_B;\n    return CompareVal.A_EQUALS_B;\n}\n", "import { compareNodes } from '@graphql-tools/utils';\nimport { mergeArguments } from './arguments.js';\nimport { mergeDirectives } from './directives.js';\nimport { extractType, isListTypeNode, isNonNullTypeNode, isWrappingTypeNode, printTypeNode, } from './utils.js';\nfunction fieldAlreadyExists(fieldsArr, otherField) {\n    const resultIndex = fieldsArr.findIndex(field => field.name.value === otherField.name.value);\n    return [resultIndex > -1 ? fieldsArr[resultIndex] : null, resultIndex];\n}\nexport function mergeFields(type, f1, f2, config, directives) {\n    const result = [];\n    if (f2 != null) {\n        result.push(...f2);\n    }\n    if (f1 != null) {\n        for (const field of f1) {\n            const [existing, existingIndex] = fieldAlreadyExists(result, field);\n            if (existing && !config?.ignoreFieldConflicts) {\n                const newField = (config?.onFieldTypeConflict &&\n                    config.onFieldTypeConflict(existing, field, type, config?.throwOnConflict)) ||\n                    preventConflicts(type, existing, field, config?.throwOnConflict);\n                newField.arguments = mergeArguments(field['arguments'] || [], existing['arguments'] || [], config);\n                newField.directives = mergeDirectives(field.directives, existing.directives, config, directives);\n                newField.description = field.description || existing.description;\n                result[existingIndex] = newField;\n            }\n            else {\n                result.push(field);\n            }\n        }\n    }\n    if (config && config.sort) {\n        result.sort(compareNodes);\n    }\n    if (config && config.exclusions) {\n        const exclusions = config.exclusions;\n        return result.filter(field => !exclusions.includes(`${type.name.value}.${field.name.value}`));\n    }\n    return result;\n}\nfunction preventConflicts(type, a, b, ignoreNullability = false) {\n    const aType = printTypeNode(a.type);\n    const bType = printTypeNode(b.type);\n    if (aType !== bType) {\n        const t1 = extractType(a.type);\n        const t2 = extractType(b.type);\n        if (t1.name.value !== t2.name.value) {\n            throw new Error(`Field \"${b.name.value}\" already defined with a different type. Declared as \"${t1.name.value}\", but you tried to override with \"${t2.name.value}\"`);\n        }\n        if (!safeChangeForFieldType(a.type, b.type, !ignoreNullability)) {\n            throw new Error(`Field '${type.name.value}.${a.name.value}' changed type from '${aType}' to '${bType}'`);\n        }\n    }\n    if (isNonNullTypeNode(b.type) && !isNonNullTypeNode(a.type)) {\n        a.type = b.type;\n    }\n    return a;\n}\nfunction safeChangeForFieldType(oldType, newType, ignoreNullability = false) {\n    // both are named\n    if (!isWrappingTypeNode(oldType) && !isWrappingTypeNode(newType)) {\n        return oldType.toString() === newType.toString();\n    }\n    // new is non-null\n    if (isNonNullTypeNode(newType)) {\n        const ofType = isNonNullTypeNode(oldType) ? oldType.type : oldType;\n        return safeChangeForFieldType(ofType, newType.type);\n    }\n    // old is non-null\n    if (isNonNullTypeNode(oldType)) {\n        return safeChangeForFieldType(newType, oldType, ignoreNullability);\n    }\n    // old is list\n    if (isListTypeNode(oldType)) {\n        return ((isListTypeNode(newType) && safeChangeForFieldType(oldType.type, newType.type)) ||\n            (isNonNullTypeNode(newType) && safeChangeForFieldType(oldType, newType['type'])));\n    }\n    return false;\n}\n", "import { Kind, } from 'graphql';\nimport { mergeDirectives } from './directives.js';\nimport { mergeFields } from './fields.js';\nexport function mergeInputType(node, existingNode, config, directives) {\n    if (existingNode) {\n        try {\n            return {\n                name: node.name,\n                description: node['description'] || existingNode['description'],\n                kind: config?.convertExtensions ||\n                    node.kind === 'InputObjectTypeDefinition' ||\n                    existingNode.kind === 'InputObjectTypeDefinition'\n                    ? 'InputObjectTypeDefinition'\n                    : 'InputObjectTypeExtension',\n                loc: node.loc,\n                fields: mergeFields(node, node.fields, existingNode.fields, config),\n                directives: mergeDirectives(node.directives, existingNode.directives, config, directives),\n            };\n        }\n        catch (e) {\n            throw new Error(`Unable to merge GraphQL input type \"${node.name.value}\": ${e.message}`);\n        }\n    }\n    return config?.convertExtensions\n        ? {\n            ...node,\n            kind: Kind.INPUT_OBJECT_TYPE_DEFINITION,\n        }\n        : node;\n}\n", "import { Kind, } from 'graphql';\nimport { mergeDirectives } from './directives.js';\nimport { mergeFields } from './fields.js';\nimport { mergeNamedTypeArray } from './merge-named-type-array.js';\nexport function mergeInterface(node, existingNode, config, directives) {\n    if (existingNode) {\n        try {\n            return {\n                name: node.name,\n                description: node['description'] || existingNode['description'],\n                kind: config?.convertExtensions ||\n                    node.kind === 'InterfaceTypeDefinition' ||\n                    existingNode.kind === 'InterfaceTypeDefinition'\n                    ? 'InterfaceTypeDefinition'\n                    : 'InterfaceTypeExtension',\n                loc: node.loc,\n                fields: mergeFields(node, node.fields, existingNode.fields, config, directives),\n                directives: mergeDirectives(node.directives, existingNode.directives, config, directives),\n                interfaces: node['interfaces']\n                    ? mergeNamedTypeArray(node['interfaces'], existingNode['interfaces'], config)\n                    : undefined,\n            };\n        }\n        catch (e) {\n            throw new Error(`Unable to merge GraphQL interface \"${node.name.value}\": ${e.message}`);\n        }\n    }\n    return config?.convertExtensions\n        ? {\n            ...node,\n            kind: Kind.INTERFACE_TYPE_DEFINITION,\n        }\n        : node;\n}\n", "import { compareNodes } from '@graphql-tools/utils';\nfunction alreadyExists(arr, other) {\n    return !!arr.find(i => i.name.value === other.name.value);\n}\nexport function mergeNamedTypeArray(first = [], second = [], config = {}) {\n    const result = [...second, ...first.filter(d => !alreadyExists(second, d))];\n    if (config && config.sort) {\n        result.sort(compareNodes);\n    }\n    return result;\n}\n", "import { Kind, } from 'graphql';\nimport { collectComment } from '@graphql-tools/utils';\nimport { mergeDirective } from './directives.js';\nimport { mergeEnum } from './enum.js';\nimport { mergeInputType } from './input-type.js';\nimport { mergeInterface } from './interface.js';\nimport { mergeScalar } from './scalar.js';\nimport { mergeSchemaDefs } from './schema-def.js';\nimport { mergeType } from './type.js';\nimport { mergeUnion } from './union.js';\nexport const schemaDefSymbol = 'SCHEMA_DEF_SYMBOL';\nexport function isNamedDefinitionNode(definitionNode) {\n    return 'name' in definitionNode;\n}\nexport function mergeGraphQLNodes(nodes, config, directives = {}) {\n    const mergedResultMap = directives;\n    for (const nodeDefinition of nodes) {\n        if (isNamedDefinitionNode(nodeDefinition)) {\n            const name = nodeDefinition.name?.value;\n            if (config?.commentDescriptions) {\n                collectComment(nodeDefinition);\n            }\n            if (name == null) {\n                continue;\n            }\n            if (config?.exclusions?.includes(name + '.*') || config?.exclusions?.includes(name)) {\n                delete mergedResultMap[name];\n            }\n            else {\n                switch (nodeDefinition.kind) {\n                    case Kind.OBJECT_TYPE_DEFINITION:\n                    case Kind.OBJECT_TYPE_EXTENSION:\n                        mergedResultMap[name] = mergeType(nodeDefinition, mergedResultMap[name], config, directives);\n                        break;\n                    case Kind.ENUM_TYPE_DEFINITION:\n                    case Kind.ENUM_TYPE_EXTENSION:\n                        mergedResultMap[name] = mergeEnum(nodeDefinition, mergedResultMap[name], config, directives);\n                        break;\n                    case Kind.UNION_TYPE_DEFINITION:\n                    case Kind.UNION_TYPE_EXTENSION:\n                        mergedResultMap[name] = mergeUnion(nodeDefinition, mergedResultMap[name], config, directives);\n                        break;\n                    case Kind.SCALAR_TYPE_DEFINITION:\n                    case Kind.SCALAR_TYPE_EXTENSION:\n                        mergedResultMap[name] = mergeScalar(nodeDefinition, mergedResultMap[name], config, directives);\n                        break;\n                    case Kind.INPUT_OBJECT_TYPE_DEFINITION:\n                    case Kind.INPUT_OBJECT_TYPE_EXTENSION:\n                        mergedResultMap[name] = mergeInputType(nodeDefinition, mergedResultMap[name], config, directives);\n                        break;\n                    case Kind.INTERFACE_TYPE_DEFINITION:\n                    case Kind.INTERFACE_TYPE_EXTENSION:\n                        mergedResultMap[name] = mergeInterface(nodeDefinition, mergedResultMap[name], config, directives);\n                        break;\n                    case Kind.DIRECTIVE_DEFINITION:\n                        if (mergedResultMap[name]) {\n                            const isInheritedFromPrototype = name in {}; // i.e. toString\n                            if (isInheritedFromPrototype) {\n                                if (!isASTNode(mergedResultMap[name])) {\n                                    mergedResultMap[name] = undefined;\n                                }\n                            }\n                        }\n                        mergedResultMap[name] = mergeDirective(nodeDefinition, mergedResultMap[name]);\n                        break;\n                }\n            }\n        }\n        else if (nodeDefinition.kind === Kind.SCHEMA_DEFINITION ||\n            nodeDefinition.kind === Kind.SCHEMA_EXTENSION) {\n            mergedResultMap[schemaDefSymbol] = mergeSchemaDefs(nodeDefinition, mergedResultMap[schemaDefSymbol], config);\n        }\n    }\n    return mergedResultMap;\n}\nfunction isASTNode(node) {\n    return (node != null && typeof node === 'object' && 'kind' in node && typeof node.kind === 'string');\n}\n", "import { Kind, } from 'graphql';\nimport { mergeDirectives } from './directives.js';\nexport function mergeScalar(node, existingNode, config, directives) {\n    if (existingNode) {\n        return {\n            name: node.name,\n            description: node['description'] || existingNode['description'],\n            kind: config?.convertExtensions ||\n                node.kind === 'ScalarTypeDefinition' ||\n                existingNode.kind === 'ScalarTypeDefinition'\n                ? 'ScalarTypeDefinition'\n                : 'ScalarTypeExtension',\n            loc: node.loc,\n            directives: mergeDirectives(node.directives, existingNode.directives, config, directives),\n        };\n    }\n    return config?.convertExtensions\n        ? {\n            ...node,\n            kind: Kind.SCALAR_TYPE_DEFINITION,\n        }\n        : node;\n}\n", "import { Kind, } from 'graphql';\nimport { mergeDirectives } from './directives.js';\nexport const DEFAULT_OPERATION_TYPE_NAME_MAP = {\n    query: 'Query',\n    mutation: 'Mutation',\n    subscription: 'Subscription',\n};\nfunction mergeOperationTypes(opNodeList = [], existingOpNodeList = []) {\n    const finalOpNodeList = [];\n    for (const opNodeType in DEFAULT_OPERATION_TYPE_NAME_MAP) {\n        const opNode = opNodeList.find(n => n.operation === opNodeType) ||\n            existingOpNodeList.find(n => n.operation === opNodeType);\n        if (opNode) {\n            finalOpNodeList.push(opNode);\n        }\n    }\n    return finalOpNodeList;\n}\nexport function mergeSchemaDefs(node, existingNode, config, directives) {\n    if (existingNode) {\n        return {\n            kind: node.kind === Kind.SCHEMA_DEFINITION || existingNode.kind === Kind.SCHEMA_DEFINITION\n                ? Kind.SCHEMA_DEFINITION\n                : Kind.SCHEMA_EXTENSION,\n            description: node['description'] || existingNode['description'],\n            directives: mergeDirectives(node.directives, existingNode.directives, config, directives),\n            operationTypes: mergeOperationTypes(node.operationTypes, existingNode.operationTypes),\n        };\n    }\n    return (config?.convertExtensions\n        ? {\n            ...node,\n            kind: Kind.SCHEMA_DEFINITION,\n        }\n        : node);\n}\n", "import { Kind, } from 'graphql';\nimport { mergeDirectives } from './directives.js';\nimport { mergeFields } from './fields.js';\nimport { mergeNamedTypeArray } from './merge-named-type-array.js';\nexport function mergeType(node, existingNode, config, directives) {\n    if (existingNode) {\n        try {\n            return {\n                name: node.name,\n                description: node['description'] || existingNode['description'],\n                kind: config?.convertExtensions ||\n                    node.kind === 'ObjectTypeDefinition' ||\n                    existingNode.kind === 'ObjectTypeDefinition'\n                    ? 'ObjectTypeDefinition'\n                    : 'ObjectTypeExtension',\n                loc: node.loc,\n                fields: mergeFields(node, node.fields, existingNode.fields, config, directives),\n                directives: mergeDirectives(node.directives, existingNode.directives, config, directives),\n                interfaces: mergeNamedTypeArray(node.interfaces, existingNode.interfaces, config),\n            };\n        }\n        catch (e) {\n            throw new Error(`Unable to merge GraphQL type \"${node.name.value}\": ${e.message}`);\n        }\n    }\n    return config?.convertExtensions\n        ? {\n            ...node,\n            kind: Kind.OBJECT_TYPE_DEFINITION,\n        }\n        : node;\n}\n", "import { Kind, } from 'graphql';\nimport { mergeDirectives } from './directives.js';\nimport { mergeNamedTypeArray } from './merge-named-type-array.js';\nexport function mergeUnion(first, second, config, directives) {\n    if (second) {\n        return {\n            name: first.name,\n            description: first['description'] || second['description'],\n            // ConstXNode has been introduced in v16 but it is not compatible with XNode so we do `as any` for backwards compatibility\n            directives: mergeDirectives(first.directives, second.directives, config, directives),\n            kind: config?.convertExtensions ||\n                first.kind === 'UnionTypeDefinition' ||\n                second.kind === 'UnionTypeDefinition'\n                ? Kind.UNION_TYPE_DEFINITION\n                : Kind.UNION_TYPE_EXTENSION,\n            loc: first.loc,\n            types: mergeNamedTypeArray(first.types, second.types, config),\n        };\n    }\n    return config?.convertExtensions\n        ? {\n            ...first,\n            kind: Kind.UNION_TYPE_DEFINITION,\n        }\n        : first;\n}\n", "import { isDefinitionNode, isSchema, Kind, parse, } from 'graphql';\nimport { getDocumentNodeFromSchema, isDocumentNode, printWithComments, resetComments, } from '@graphql-tools/utils';\nimport { extractLinks, resolveImportName } from '../links.js';\nimport { mergeGraphQLNodes, schemaDefSymbol } from './merge-nodes.js';\nimport { DEFAULT_OPERATION_TYPE_NAME_MAP } from './schema-def.js';\nimport { defaultStringComparator, isSourceTypes, isStringTypes } from './utils.js';\nexport function mergeTypeDefs(typeSource, config) {\n    resetComments();\n    const doc = {\n        kind: Kind.DOCUMENT,\n        definitions: mergeGraphQLTypes(typeSource, {\n            useSchemaDefinition: true,\n            forceSchemaDefinition: false,\n            throwOnConflict: false,\n            commentDescriptions: false,\n            ...config,\n        }),\n    };\n    let result;\n    if (config?.commentDescriptions) {\n        result = printWithComments(doc);\n    }\n    else {\n        result = doc;\n    }\n    resetComments();\n    return result;\n}\nfunction visitTypeSources(typeSource, options, allDirectives = [], allNodes = [], visitedTypeSources = new Set(), repeatableLinkImports = new Set()) {\n    const addRepeatable = (name) => {\n        repeatableLinkImports.add(name);\n    };\n    if (typeSource && !visitedTypeSources.has(typeSource)) {\n        visitedTypeSources.add(typeSource);\n        if (typeof typeSource === 'function') {\n            visitTypeSources(typeSource(), options, allDirectives, allNodes, visitedTypeSources, repeatableLinkImports);\n        }\n        else if (Array.isArray(typeSource)) {\n            for (const type of typeSource) {\n                visitTypeSources(type, options, allDirectives, allNodes, visitedTypeSources, repeatableLinkImports);\n            }\n        }\n        else if (isSchema(typeSource)) {\n            const documentNode = getDocumentNodeFromSchema(typeSource, options);\n            visitTypeSources(documentNode.definitions, options, allDirectives, allNodes, visitedTypeSources, repeatableLinkImports);\n        }\n        else if (isStringTypes(typeSource) || isSourceTypes(typeSource)) {\n            const documentNode = parse(typeSource, options);\n            visitTypeSources(documentNode.definitions, options, allDirectives, allNodes, visitedTypeSources, repeatableLinkImports);\n        }\n        else if (typeof typeSource === 'object' && isDefinitionNode(typeSource)) {\n            const links = extractLinks({\n                definitions: [typeSource],\n                kind: Kind.DOCUMENT,\n            });\n            const federationUrl = 'https://specs.apollo.dev/federation';\n            const linkUrl = 'https://specs.apollo.dev/link';\n            /**\n             * Official Federated imports are special because they can be referenced without specifyin the import.\n             * To handle this case, we must prepare a list of all the possible valid usages to check against.\n             * Note that this versioning is not technically correct, since some definitions are after v2.0.\n             * But this is enough information to be comfortable not blocking the imports at this phase. It's\n             * the job of the composer to validate the versions.\n             * */\n            const federationLink = links.find(l => l.url.identity === federationUrl);\n            if (federationLink) {\n                addRepeatable(resolveImportName(federationLink, '@composeDirective'));\n                addRepeatable(resolveImportName(federationLink, '@key'));\n            }\n            const linkLink = links.find(l => l.url.identity === linkUrl);\n            if (linkLink) {\n                addRepeatable(resolveImportName(linkLink, '@link'));\n            }\n            if (typeSource.kind === Kind.DIRECTIVE_DEFINITION) {\n                allDirectives.push(typeSource);\n            }\n            else {\n                allNodes.push(typeSource);\n            }\n        }\n        else if (isDocumentNode(typeSource)) {\n            visitTypeSources(typeSource.definitions, options, allDirectives, allNodes, visitedTypeSources, repeatableLinkImports);\n        }\n        else {\n            throw new Error(`typeDefs must contain only strings, documents, schemas, or functions, got ${typeof typeSource}`);\n        }\n    }\n    return { allDirectives, allNodes, repeatableLinkImports };\n}\nexport function mergeGraphQLTypes(typeSource, config) {\n    resetComments();\n    const { allDirectives, allNodes, repeatableLinkImports } = visitTypeSources(typeSource, config);\n    const mergedDirectives = mergeGraphQLNodes(allDirectives, config);\n    config.repeatableLinkImports = repeatableLinkImports;\n    const mergedNodes = mergeGraphQLNodes(allNodes, config, mergedDirectives);\n    if (config?.useSchemaDefinition) {\n        // XXX: right now we don't handle multiple schema definitions\n        const schemaDef = mergedNodes[schemaDefSymbol] || {\n            kind: Kind.SCHEMA_DEFINITION,\n            operationTypes: [],\n        };\n        const operationTypes = schemaDef.operationTypes;\n        for (const opTypeDefNodeType in DEFAULT_OPERATION_TYPE_NAME_MAP) {\n            const opTypeDefNode = operationTypes.find(operationType => operationType.operation === opTypeDefNodeType);\n            if (!opTypeDefNode) {\n                const possibleRootTypeName = DEFAULT_OPERATION_TYPE_NAME_MAP[opTypeDefNodeType];\n                const existingPossibleRootType = mergedNodes[possibleRootTypeName];\n                if (existingPossibleRootType != null && existingPossibleRootType.name != null) {\n                    operationTypes.push({\n                        kind: Kind.OPERATION_TYPE_DEFINITION,\n                        type: {\n                            kind: Kind.NAMED_TYPE,\n                            name: existingPossibleRootType.name,\n                        },\n                        operation: opTypeDefNodeType,\n                    });\n                }\n            }\n        }\n        if (schemaDef?.operationTypes?.length != null && schemaDef.operationTypes.length > 0) {\n            mergedNodes[schemaDefSymbol] = schemaDef;\n        }\n    }\n    if (config?.forceSchemaDefinition && !mergedNodes[schemaDefSymbol]?.operationTypes?.length) {\n        mergedNodes[schemaDefSymbol] = {\n            kind: Kind.SCHEMA_DEFINITION,\n            operationTypes: [\n                {\n                    kind: Kind.OPERATION_TYPE_DEFINITION,\n                    operation: 'query',\n                    type: {\n                        kind: Kind.NAMED_TYPE,\n                        name: {\n                            kind: Kind.NAME,\n                            value: 'Query',\n                        },\n                    },\n                },\n            ],\n        };\n    }\n    const mergedNodeDefinitions = Object.values(mergedNodes);\n    if (config?.sort) {\n        const sortFn = typeof config.sort === 'function' ? config.sort : defaultStringComparator;\n        mergedNodeDefinitions.sort((a, b) => sortFn(a.name?.value, b.name?.value));\n    }\n    return mergedNodeDefinitions;\n}\n", "/**\n * A simplified, GraphQL v15 compatible version of\n * https://github.com/graphql-hive/federation-composition/blob/main/src/utils/link/index.ts\n * that does not provide the same safeguards or functionality, but still can determine the\n * correct name of an linked resource.\n */\nimport { Kind, } from 'graphql';\nfunction namespace(link) {\n    return link.as ?? link.url.name;\n}\nfunction defaultImport(link) {\n    const name = namespace(link);\n    return name && `@${name}`;\n}\nexport function resolveImportName(link, elementName) {\n    if (link.url.name && elementName === `@${link.url.name}`) {\n        // @note: default is a directive... So remove the `@`\n        return defaultImport(link).substring(1);\n    }\n    const imported = link.imports.find(i => i.name === elementName);\n    const resolvedName = imported?.as ?? imported?.name ?? namespaced(namespace(link), elementName);\n    // Strip the `@` prefix for directives because in all implementations of mapping or visiting a schema,\n    // directive names are not prefixed with `@`. The `@` is only for SDL.\n    return resolvedName.startsWith('@') ? resolvedName.substring(1) : resolvedName;\n}\nfunction namespaced(namespace, name) {\n    if (namespace?.length) {\n        if (name.startsWith('@')) {\n            return `@${namespace}__${name.substring(1)}`;\n        }\n        return `${namespace}__${name}`;\n    }\n    return name;\n}\nexport function extractLinks(typeDefs) {\n    let links = [];\n    for (const definition of typeDefs.definitions) {\n        if (definition.kind === Kind.SCHEMA_EXTENSION || definition.kind === Kind.SCHEMA_DEFINITION) {\n            const defLinks = definition.directives?.filter(directive => directive.name.value === 'link');\n            const parsedLinks = defLinks?.map(l => linkFromArgs(l.arguments ?? [])).filter(l => l !== undefined) ?? [];\n            links = links.concat(parsedLinks);\n            // Federation 1 support... Federation 1 uses \"@core\" instead of \"@link\", but behavior is similar enough that\n            //  it can be translated.\n            const defCores = definition.directives?.filter(({ name }) => name.value === 'core');\n            const coreLinks = defCores\n                ?.map(c => linkFromCoreArgs(c.arguments ?? []))\n                .filter(l => l !== undefined);\n            if (coreLinks) {\n                links = links.concat(...coreLinks);\n            }\n        }\n    }\n    return links;\n}\nfunction linkFromArgs(args) {\n    let url;\n    let imports = [];\n    let as;\n    for (const arg of args) {\n        switch (arg.name.value) {\n            case 'url': {\n                if (arg.value.kind === Kind.STRING) {\n                    url = parseFederationLinkUrl(arg.value.value);\n                }\n                break;\n            }\n            case 'import': {\n                imports = parseImportNode(arg.value);\n                break;\n            }\n            case 'as': {\n                if (arg.value.kind === Kind.STRING) {\n                    as = arg.value.value ?? undefined;\n                }\n                break;\n            }\n            default: {\n                // ignore. It's not the job of this package to validate. Federation should validate links.\n            }\n        }\n    }\n    if (url !== undefined) {\n        return {\n            url,\n            as,\n            imports,\n        };\n    }\n}\n/**\n * Supports federation 1\n */\nfunction linkFromCoreArgs(args) {\n    const feature = args.find(({ name, value }) => name.value === 'feature' && value.kind === Kind.STRING);\n    if (feature) {\n        const url = parseFederationLinkUrl(feature.value.value);\n        return {\n            url,\n            imports: [],\n        };\n    }\n}\nfunction parseImportNode(node) {\n    if (node.kind === Kind.LIST) {\n        const imports = node.values.map((v) => {\n            let namedImport;\n            if (v.kind === Kind.STRING) {\n                namedImport = { name: v.value };\n            }\n            else if (v.kind === Kind.OBJECT) {\n                let name = '';\n                let as;\n                for (const f of v.fields) {\n                    if (f.name.value === 'name') {\n                        if (f.value.kind === Kind.STRING) {\n                            name = f.value.value;\n                        }\n                    }\n                    else if (f.name.value === 'as') {\n                        if (f.value.kind === Kind.STRING) {\n                            as = f.value.value;\n                        }\n                    }\n                }\n                namedImport = { name, as };\n            }\n            return namedImport;\n        });\n        return imports.filter(i => i !== undefined);\n    }\n    return [];\n}\nconst VERSION_MATCH = /v(\\d{1,3})\\.(\\d{1,4})/i;\nfunction parseFederationLinkUrl(urlSource) {\n    const url = new URL(urlSource);\n    const parts = url.pathname.split('/').filter(Boolean);\n    const versionOrName = parts[parts.length - 1];\n    if (versionOrName) {\n        if (VERSION_MATCH.test(versionOrName)) {\n            const maybeName = parts[parts.length - 2];\n            return {\n                identity: url.origin + (maybeName ? `/${parts.slice(0, parts.length - 1).join('/')}` : ''),\n                name: maybeName ?? null,\n                version: versionOrName,\n            };\n        }\n        return {\n            identity: `${url.origin}/${parts.join('/')}`,\n            name: versionOrName,\n            version: null,\n        };\n    }\n    return {\n        identity: url.origin,\n        name: null,\n        version: null,\n    };\n}\n", "import { mergeDeep } from '@graphql-tools/utils';\nexport { extractExtensionsFromSchema } from '@graphql-tools/utils';\nexport function mergeExtensions(extensions) {\n    return mergeDeep(extensions, false, true);\n}\nfunction applyExtensionObject(obj, extensions) {\n    if (!obj || !extensions || extensions === obj.extensions) {\n        return;\n    }\n    if (!obj.extensions) {\n        obj.extensions = extensions;\n        return;\n    }\n    obj.extensions = mergeDeep([obj.extensions, extensions], false, true);\n}\nexport function applyExtensions(schema, extensions) {\n    applyExtensionObject(schema, extensions.schemaExtensions);\n    for (const [typeName, data] of Object.entries(extensions.types || {})) {\n        const type = schema.getType(typeName);\n        if (type) {\n            applyExtensionObject(type, data.extensions);\n            if (data.type === 'object' || data.type === 'interface') {\n                for (const [fieldName, fieldData] of Object.entries(data.fields)) {\n                    const field = type.getFields()[fieldName];\n                    if (field) {\n                        applyExtensionObject(field, fieldData.extensions);\n                        for (const [arg, argData] of Object.entries(fieldData.arguments)) {\n                            applyExtensionObject(field.args.find(a => a.name === arg), argData);\n                        }\n                    }\n                }\n            }\n            else if (data.type === 'input') {\n                for (const [fieldName, fieldData] of Object.entries(data.fields)) {\n                    const field = type.getFields()[fieldName];\n                    applyExtensionObject(field, fieldData.extensions);\n                }\n            }\n            else if (data.type === 'enum') {\n                for (const [valueName, valueData] of Object.entries(data.values)) {\n                    const value = type.getValue(valueName);\n                    applyExtensionObject(value, valueData);\n                }\n            }\n        }\n    }\n    return schema;\n}\n", "// Copyright 2019 Joseph Gentle\n\n// Permission to use, copy, modify, and / or distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\n// REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\n// FITNESS.IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\n//   INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\n// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\n// OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\n// PERFORMANCE OF THIS SOFTWARE.\n\nexport type Resolvable<T> = Promise<T> & {\n  resolve: (t: T) => void;\n  reject: (e: any) => void;\n};\n\nexport default <T = void>(): Resolvable<T> => {\n  let resolve: (val: T) => void;\n  let reject: (err: any) => void;\n  const promise = new Promise<T>((_resolve, _reject) => {\n    resolve = _resolve;\n    reject = _reject;\n  }) as Resolvable<T>;\n  promise.resolve = resolve!;\n  promise.reject = reject!;\n  return promise;\n};\n", "import { createHash } from '@apollo/utils.createhash';\nimport type { ApolloConfig, ApolloConfigInput } from './externalTypes/index.js';\nimport type { Logger } from '@apollo/utils.logger';\n\n// This function combines the `apollo` constructor argument and some environment\n// variables to come up with a full ApolloConfig.\nexport function determineApolloConfig(\n  input: ApolloConfigInput | undefined,\n  logger: Logger,\n): ApolloConfig {\n  const apolloConfig: ApolloConfig = {};\n\n  const {\n    APOLLO_KEY,\n    APOLLO_GRAPH_REF,\n    APOLLO_GRAPH_ID,\n    APOLLO_GRAPH_VARIANT,\n  } = process.env;\n\n  // Determine key.\n  if (input?.key) {\n    apolloConfig.key = input.key.trim();\n  } else if (APOLLO_KEY) {\n    apolloConfig.key = APOLLO_KEY.trim();\n  }\n  if ((input?.key ?? APOLLO_KEY) !== apolloConfig.key) {\n    logger.warn(\n      'The provided API key has unexpected leading or trailing whitespace. ' +\n        'Apollo Server will trim the key value before use.',\n    );\n  }\n\n  // Assert API key is a valid header value, since it's going to be used as one\n  // throughout.\n  if (apolloConfig.key) {\n    assertValidHeaderValue(apolloConfig.key);\n  }\n\n  // Determine key hash.\n  if (apolloConfig.key) {\n    apolloConfig.keyHash = createHash('sha512')\n      .update(apolloConfig.key)\n      .digest('hex');\n  }\n\n  // Determine graph ref, if provided together.\n  if (input?.graphRef) {\n    apolloConfig.graphRef = input.graphRef;\n  } else if (APOLLO_GRAPH_REF) {\n    apolloConfig.graphRef = APOLLO_GRAPH_REF;\n  }\n\n  // See if graph ID and variant were provided separately.\n  const graphId = input?.graphId ?? APOLLO_GRAPH_ID;\n  const graphVariant = input?.graphVariant ?? APOLLO_GRAPH_VARIANT;\n\n  if (apolloConfig.graphRef) {\n    if (graphId) {\n      throw new Error(\n        'Cannot specify both graph ref and graph ID. Please use ' +\n          '`apollo.graphRef` or `APOLLO_GRAPH_REF` without also setting the graph ID.',\n      );\n    }\n    if (graphVariant) {\n      throw new Error(\n        'Cannot specify both graph ref and graph variant. Please use ' +\n          '`apollo.graphRef` or `APOLLO_GRAPH_REF` without also setting the graph variant.',\n      );\n    }\n  } else if (graphId) {\n    // Graph ref is not specified, but the ID is. We can construct the ref\n    // from the ID and variant. Note that after this, we stop tracking the ID\n    // and variant, because Apollo Server 3 does not assume that all graph refs\n    // can be decomposed into ID and variant (except in the op reg plugin).\n    apolloConfig.graphRef = graphVariant\n      ? `${graphId}@${graphVariant}`\n      : graphId;\n  }\n\n  return apolloConfig;\n}\n\nfunction assertValidHeaderValue(value: string) {\n  // Ref: node-fetch@2.x `Headers` validation\n  // https://github.com/node-fetch/node-fetch/blob/9b9d45881e5ca68757077726b3c0ecf8fdca1f29/src/headers.js#L18\n  const invalidHeaderCharRegex = /[^\\t\\x20-\\x7e\\x80-\\xff]/g;\n  if (invalidHeaderCharRegex.test(value)) {\n    const invalidChars = value.match(invalidHeaderCharRegex)!;\n    throw new Error(\n      `The API key provided to Apollo Server contains characters which are invalid as HTTP header values. The following characters found in the key are invalid: ${invalidChars.join(\n        ', ',\n      )}. Valid header values may only contain ASCII visible characters. If you think there is an issue with your key, please contact Apollo support.`,\n    );\n  }\n}\n", "// The functions in this file are not part of Apollo Server's external API.\n\nimport {\n  GraphQLError,\n  type GraphQLErrorExtensions,\n  type GraphQLFormattedError,\n} from 'graphql';\nimport { ApolloServerErrorCode } from './errors/index.js';\nimport type { HTTPGraphQLHead } from './externalTypes/http.js';\nimport { mergeHTTPGraphQLHead, newHTTPGraphQLHead } from './runHttpQuery.js';\nimport { HeaderMap } from './utils/HeaderMap.js';\n\n// This function accepts any value that were thrown and convert it to GraphQLFormattedError.\n// It also add default extensions.code and copy stack trace onto an extension if requested.\n// Additionally, it returns an `HTTPGraphQLHead` created from combining the values of any\n// `HTTPGraphqlHead` objects found on `extensions.http` (the behavior when multiple errors\n// set a status code or set the same header should be treated as undefined); these extensions\n// are removed from the formatted error.\n//\n// This function should not throw.\nexport function normalizeAndFormatErrors(\n  errors: ReadonlyArray<unknown>,\n  options: {\n    formatError?: (\n      formattedError: GraphQLFormattedError,\n      error: unknown,\n    ) => GraphQLFormattedError;\n    includeStacktraceInErrorResponses?: boolean;\n  } = {},\n): {\n  formattedErrors: Array<GraphQLFormattedError>;\n  httpFromErrors: HTTPGraphQLHead;\n} {\n  const formatError = options.formatError ?? ((error) => error);\n  const httpFromErrors = newHTTPGraphQLHead();\n\n  return {\n    httpFromErrors,\n    formattedErrors: errors.map((error) => {\n      try {\n        return formatError(enrichError(error), error);\n      } catch (formattingError) {\n        if (options.includeStacktraceInErrorResponses) {\n          // includeStacktraceInErrorResponses is used in development\n          // so it will be helpful to show errors thrown by formatError hooks in that mode\n          return enrichError(formattingError);\n        } else {\n          // obscure error\n          return {\n            message: 'Internal server error',\n            extensions: { code: ApolloServerErrorCode.INTERNAL_SERVER_ERROR },\n          };\n        }\n      }\n    }),\n  };\n\n  function enrichError(maybeError: unknown): GraphQLFormattedError {\n    const graphqlError = ensureGraphQLError(maybeError);\n\n    const extensions: GraphQLErrorExtensions = {\n      ...graphqlError.extensions,\n      code:\n        graphqlError.extensions.code ??\n        ApolloServerErrorCode.INTERNAL_SERVER_ERROR,\n    };\n\n    if (isPartialHTTPGraphQLHead(extensions.http)) {\n      mergeHTTPGraphQLHead(httpFromErrors, {\n        headers: new HeaderMap(),\n        ...extensions.http,\n      });\n      delete extensions.http;\n    }\n\n    if (options.includeStacktraceInErrorResponses) {\n      // Note that if ensureGraphQLError created graphqlError from an\n      // originalError, graphqlError.stack will be the same as\n      // originalError.stack due to some special code in the GraphQLError\n      // constructor.\n      extensions.stacktrace = graphqlError.stack?.split('\\n');\n    }\n\n    return { ...graphqlError.toJSON(), extensions };\n  }\n}\n\nexport function ensureError(maybeError: unknown): Error {\n  return maybeError instanceof Error\n    ? maybeError\n    : new GraphQLError('Unexpected error value: ' + String(maybeError));\n}\n\nexport function ensureGraphQLError(\n  maybeError: unknown,\n  messagePrefixIfNotGraphQLError: string = '',\n): GraphQLError {\n  const error: Error = ensureError(maybeError);\n\n  return error instanceof GraphQLError\n    ? error\n    : new GraphQLError(messagePrefixIfNotGraphQLError + error.message, {\n        originalError: error,\n      });\n}\n\nfunction isPartialHTTPGraphQLHead(x: unknown): x is Partial<HTTPGraphQLHead> {\n  return (\n    !!x &&\n    typeof x === 'object' &&\n    (!('status' in x) || typeof (x as any).status === 'number') &&\n    (!('headers' in x) || (x as any).headers instanceof Map)\n  );\n}\n", "import { GraphQLError } from 'graphql';\n\nexport enum ApolloServerErrorCode {\n  INTERNAL_SERVER_ERROR = 'INTERNAL_SERVER_ERROR',\n  GRAPHQL_PARSE_FAILED = 'GRAPHQL_PARSE_FAILED',\n  GRAPHQL_VALIDATION_FAILED = 'GRAPHQL_VALIDATION_FAILED',\n  PERSISTED_QUERY_NOT_FOUND = 'PERSISTED_QUERY_NOT_FOUND',\n  PERSISTED_QUERY_NOT_SUPPORTED = 'PERSISTED_QUERY_NOT_SUPPORTED',\n  BAD_USER_INPUT = 'BAD_USER_INPUT',\n  OPERATION_RESOLUTION_FAILURE = 'OPERATION_RESOLUTION_FAILURE',\n  BAD_REQUEST = 'BAD_REQUEST',\n}\n\nexport enum ApolloServerValidationErrorCode {\n  INTROSPECTION_DISABLED = 'INTROSPECTION_DISABLED',\n  MAX_RECURSIVE_SELECTIONS_EXCEEDED = 'MAX_RECURSIVE_SELECTIONS_EXCEEDED',\n}\n\n/**\n * unwrapResolverError is a useful helper function for `formatError` hooks.\n * Errors thrown in resolvers are wrapped by graphql-js in a GraphQLError that\n * adds context such as the `path` to the field in the operation. If you'd like\n * to look directly at the original error thrown in the resolver (with whatever\n * data is on that error object, but without fields like `path`), you can use\n * this function. Note that other GraphQLErrors that contain `originalError`\n * (like parse errors) are not unwrapped by this function.\n */\nexport function unwrapResolverError(error: unknown): unknown {\n  if (error instanceof GraphQLError && error.path && error.originalError) {\n    return error.originalError;\n  }\n  return error;\n}\n", "import type {\n  BaseContext,\n  GraphQLExperimentalFormattedInitialIncrementalExecutionResultAlpha2,\n  GraphQLExperimentalFormattedInitialIncrementalExecutionResultAlpha9,\n  GraphQLExperimentalFormattedSubsequentIncrementalExecutionResultAlpha2,\n  GraphQLExperimentalFormattedSubsequentIncrementalExecutionResultAlpha9,\n  GraphQLRequest,\n  HTTPGraphQLHead,\n  HTTPGraphQLRequest,\n  HTTPGraphQLResponse,\n} from './externalTypes/index.js';\nimport {\n  type ApolloServer,\n  type ApolloServerInternals,\n  chooseContentTypeForSingleResultResponse,\n  internalExecuteOperation,\n  MEDIA_TYPES,\n  type SchemaDerivedData,\n} from './ApolloServer.js';\nimport { type FormattedExecutionResult, Kind } from 'graphql';\nimport { BadRequestError } from './internalErrorClasses.js';\nimport Negotiator from 'negotiator';\nimport { HeaderMap } from './utils/HeaderMap.js';\n\nfunction fieldIfString(\n  o: Record<string, unknown>,\n  fieldName: string,\n): string | undefined {\n  const value = o[fieldName];\n  if (typeof value === 'string') {\n    return value;\n  }\n  return undefined;\n}\n\nfunction searchParamIfSpecifiedOnce(\n  searchParams: URLSearchParams,\n  paramName: string,\n) {\n  const values = searchParams.getAll(paramName);\n  switch (values.length) {\n    case 0:\n      return undefined;\n    case 1:\n      return values[0];\n    default:\n      throw new BadRequestError(\n        `The '${paramName}' search parameter may only be specified once.`,\n      );\n  }\n}\n\nfunction jsonParsedSearchParamIfSpecifiedOnce(\n  searchParams: URLSearchParams,\n  fieldName: string,\n): Record<string, unknown> | undefined {\n  const value = searchParamIfSpecifiedOnce(searchParams, fieldName);\n  if (value === undefined) {\n    return undefined;\n  }\n  let hopefullyRecord;\n  try {\n    hopefullyRecord = JSON.parse(value);\n  } catch {\n    throw new BadRequestError(\n      `The ${fieldName} search parameter contains invalid JSON.`,\n    );\n  }\n  if (!isStringRecord(hopefullyRecord)) {\n    throw new BadRequestError(\n      `The ${fieldName} search parameter should contain a JSON-encoded object.`,\n    );\n  }\n  return hopefullyRecord;\n}\n\nfunction fieldIfRecord(\n  o: Record<string, unknown>,\n  fieldName: string,\n): Record<string, unknown> | undefined {\n  const value = o[fieldName];\n  if (isStringRecord(value)) {\n    return value;\n  }\n  return undefined;\n}\n\nfunction isStringRecord(o: unknown): o is Record<string, unknown> {\n  return (\n    !!o && typeof o === 'object' && !Buffer.isBuffer(o) && !Array.isArray(o)\n  );\n}\n\nfunction isNonEmptyStringRecord(o: unknown): o is Record<string, unknown> {\n  return isStringRecord(o) && Object.keys(o).length > 0;\n}\n\nfunction ensureQueryIsStringOrMissing(query: unknown) {\n  if (!query || typeof query === 'string') {\n    return;\n  }\n  // Check for a common error first.\n  if ((query as any).kind === Kind.DOCUMENT) {\n    throw new BadRequestError(\n      \"GraphQL queries must be strings. It looks like you're sending the \" +\n        'internal graphql-js representation of a parsed query in your ' +\n        'request instead of a request in the GraphQL query language. You ' +\n        'can convert an AST to a string using the `print` function from ' +\n        '`graphql`, or use a client like `apollo-client` which converts ' +\n        'the internal representation to a string for you.',\n    );\n  } else {\n    throw new BadRequestError('GraphQL queries must be strings.');\n  }\n}\n\nexport async function runHttpQuery<TContext extends BaseContext>({\n  server,\n  httpRequest,\n  contextValue,\n  schemaDerivedData,\n  internals,\n  sharedResponseHTTPGraphQLHead,\n}: {\n  server: ApolloServer<TContext>;\n  httpRequest: HTTPGraphQLRequest;\n  contextValue: TContext;\n  schemaDerivedData: SchemaDerivedData;\n  internals: ApolloServerInternals<TContext>;\n  sharedResponseHTTPGraphQLHead: HTTPGraphQLHead | null;\n}): Promise<HTTPGraphQLResponse> {\n  let graphQLRequest: GraphQLRequest;\n\n  switch (httpRequest.method) {\n    case 'POST': {\n      if (!isNonEmptyStringRecord(httpRequest.body)) {\n        throw new BadRequestError(\n          'POST body missing, invalid Content-Type, or JSON object has no keys.',\n        );\n      }\n\n      ensureQueryIsStringOrMissing(httpRequest.body.query);\n\n      if (typeof httpRequest.body.variables === 'string') {\n        throw new BadRequestError(\n          '`variables` in a POST body should be provided as an object, not a recursively JSON-encoded string.',\n        );\n      }\n\n      if (typeof httpRequest.body.extensions === 'string') {\n        throw new BadRequestError(\n          '`extensions` in a POST body should be provided as an object, not a recursively JSON-encoded string.',\n        );\n      }\n\n      if (\n        'extensions' in httpRequest.body &&\n        httpRequest.body.extensions !== null &&\n        !isStringRecord(httpRequest.body.extensions)\n      ) {\n        throw new BadRequestError(\n          '`extensions` in a POST body must be an object if provided.',\n        );\n      }\n\n      if (\n        'variables' in httpRequest.body &&\n        httpRequest.body.variables !== null &&\n        !isStringRecord(httpRequest.body.variables)\n      ) {\n        throw new BadRequestError(\n          '`variables` in a POST body must be an object if provided.',\n        );\n      }\n\n      if (\n        'operationName' in httpRequest.body &&\n        httpRequest.body.operationName !== null &&\n        typeof httpRequest.body.operationName !== 'string'\n      ) {\n        throw new BadRequestError(\n          '`operationName` in a POST body must be a string if provided.',\n        );\n      }\n\n      graphQLRequest = {\n        query: fieldIfString(httpRequest.body, 'query'),\n        operationName: fieldIfString(httpRequest.body, 'operationName'),\n        variables: fieldIfRecord(httpRequest.body, 'variables'),\n        extensions: fieldIfRecord(httpRequest.body, 'extensions'),\n        http: httpRequest,\n      };\n\n      break;\n    }\n\n    case 'GET': {\n      const searchParams = new URLSearchParams(httpRequest.search);\n\n      graphQLRequest = {\n        query: searchParamIfSpecifiedOnce(searchParams, 'query'),\n        operationName: searchParamIfSpecifiedOnce(\n          searchParams,\n          'operationName',\n        ),\n        variables: jsonParsedSearchParamIfSpecifiedOnce(\n          searchParams,\n          'variables',\n        ),\n        extensions: jsonParsedSearchParamIfSpecifiedOnce(\n          searchParams,\n          'extensions',\n        ),\n        http: httpRequest,\n      };\n\n      break;\n    }\n    default:\n      throw new BadRequestError(\n        'Apollo Server supports only GET/POST requests.',\n        {\n          extensions: {\n            http: {\n              status: 405,\n              headers: new HeaderMap([['allow', 'GET, POST']]),\n            },\n          },\n        },\n      );\n  }\n\n  const graphQLResponse = await internalExecuteOperation(\n    {\n      server,\n      graphQLRequest,\n      internals,\n      schemaDerivedData,\n      sharedResponseHTTPGraphQLHead,\n    },\n    { contextValue },\n  );\n\n  if (graphQLResponse.body.kind === 'single') {\n    if (!graphQLResponse.http.headers.get('content-type')) {\n      // If we haven't already set the content-type (via a plugin or something),\n      // decide which content-type to use based on the accept header.\n      const contentType = chooseContentTypeForSingleResultResponse(httpRequest);\n      if (contentType === null) {\n        throw new BadRequestError(\n          `An 'accept' header was provided for this request which does not accept ` +\n            `${MEDIA_TYPES.APPLICATION_JSON} or ${MEDIA_TYPES.APPLICATION_GRAPHQL_RESPONSE_JSON}`,\n          // Use 406 Not Accepted\n          { extensions: { http: { status: 406 } } },\n        );\n      }\n      graphQLResponse.http.headers.set('content-type', contentType);\n    }\n\n    return {\n      ...graphQLResponse.http,\n      body: {\n        kind: 'complete',\n        string: await internals.stringifyResult(\n          orderExecutionResultFields(graphQLResponse.body.singleResult),\n        ),\n      },\n    };\n  }\n\n  // Note that incremental delivery is not yet part of the official GraphQL\n  // spec. We are implementing a proposed version of the spec, and require\n  // clients to explicitly state `deferSpec=20220824`. Once incremental delivery\n  // has been added to the GraphQL spec, we will support `accept` headers\n  // without `deferSpec` as well (perhaps with slightly different behavior if\n  // anything has changed).\n  const acceptHeader = httpRequest.headers.get('accept');\n  const negotiator = new Negotiator({ headers: { accept: acceptHeader } });\n  const preferredMediaType = negotiator.mediaType([\n    // mediaType() will return the first one that matches, so if the client\n    // doesn't include the deferSpec parameter it will match this one here,\n    // which isn't good enough.\n    MEDIA_TYPES.MULTIPART_MIXED_NO_DEFER_SPEC,\n    MEDIA_TYPES.MULTIPART_MIXED_EXPERIMENTAL_ALPHA_9,\n    MEDIA_TYPES.MULTIPART_MIXED_EXPERIMENTAL_ALPHA_2,\n  ]);\n\n  if (\n    !acceptHeader ||\n    (preferredMediaType !== MEDIA_TYPES.MULTIPART_MIXED_EXPERIMENTAL_ALPHA_2 &&\n      preferredMediaType !== MEDIA_TYPES.MULTIPART_MIXED_EXPERIMENTAL_ALPHA_9)\n  ) {\n    // The client ran an operation that would yield multiple parts, but didn't\n    // specify `accept: multipart/mixed`. We return an error.\n    throw new BadRequestError(\n      'Apollo server received an operation that uses incremental delivery ' +\n        '(@defer or @stream), but the client does not accept multipart/mixed ' +\n        'HTTP responses. To enable incremental delivery support, add the HTTP ' +\n        `header 'Accept: ${MEDIA_TYPES.MULTIPART_MIXED_EXPERIMENTAL_ALPHA_9}' ` +\n        'if your client supports the current incremental format or ' +\n        `'Accept: ${MEDIA_TYPES.MULTIPART_MIXED_EXPERIMENTAL_ALPHA_2}' if your ` +\n        'client supports the legacy incremental format',\n      // Use 406 Not Accepted\n      { extensions: { http: { status: 406 } } },\n    );\n  }\n\n  graphQLResponse.http.headers.set(\n    'content-type',\n    `multipart/mixed; boundary=\"-\"; ${preferredMediaType.replace('multipart/mixed; ', '')}`,\n  );\n  return {\n    ...graphQLResponse.http,\n    body: {\n      kind: 'chunked',\n      asyncIterator: writeMultipartBody(\n        graphQLResponse.body.initialResult,\n        graphQLResponse.body.subsequentResults,\n      ),\n    },\n  };\n}\n\nasync function* writeMultipartBody(\n  initialResult:\n    | GraphQLExperimentalFormattedInitialIncrementalExecutionResultAlpha2\n    | GraphQLExperimentalFormattedInitialIncrementalExecutionResultAlpha9,\n  subsequentResults: AsyncIterable<\n    | GraphQLExperimentalFormattedSubsequentIncrementalExecutionResultAlpha2\n    | GraphQLExperimentalFormattedSubsequentIncrementalExecutionResultAlpha9\n  >,\n): AsyncGenerator<string> {\n  // Note: we assume in this function that every result other than the last has\n  // hasNext=true and the last has hasNext=false. That is, we choose which kind\n  // of delimiter to place at the end of each block based on the contents of the\n  // message, not the structure of the async iterator. This makes sense because\n  // we want to write the delimiter as soon as each block is done (so the client\n  // can parse it immediately) but we may not know whether a general async\n  // iterator is finished until we do async work.\n\n  yield `\\r\\n---\\r\\ncontent-type: application/json; charset=utf-8\\r\\n\\r\\n${JSON.stringify(\n    initialResult,\n  )}\\r\\n---${initialResult.hasNext ? '' : '--'}\\r\\n`;\n\n  for await (const result of subsequentResults) {\n    yield `content-type: application/json; charset=utf-8\\r\\n\\r\\n${JSON.stringify(\n      result,\n    )}\\r\\n---${result.hasNext ? '' : '--'}\\r\\n`;\n  }\n}\n\n// See https://github.com/facebook/graphql/pull/384 for why\n// errors comes first.\nfunction orderExecutionResultFields(\n  result: FormattedExecutionResult,\n): FormattedExecutionResult {\n  return {\n    errors: result.errors,\n    data: result.data,\n    extensions: result.extensions,\n  };\n}\n\n// The result of a curl does not appear well in the terminal, so we add an extra new line\nexport function prettyJSONStringify(value: FormattedExecutionResult) {\n  return JSON.stringify(value) + '\\n';\n}\n\nexport function newHTTPGraphQLHead(status?: number): HTTPGraphQLHead {\n  return {\n    status,\n    headers: new HeaderMap(),\n  };\n}\n\n// Updates `target` with status code and headers from `source`. For now let's\n// consider it undefined what happens if both have a status code set or both set\n// the same header.\nexport function mergeHTTPGraphQLHead(\n  target: HTTPGraphQLHead,\n  source: HTTPGraphQLHead,\n) {\n  if (source.status) {\n    target.status = source.status;\n  }\n  if (source.headers) {\n    for (const [name, value] of source.headers) {\n      // If source.headers contains non-lowercase header names, this will\n      // catch that case as long as target.headers is a HeaderMap.\n      target.headers.set(name, value);\n    }\n  }\n}\n", "import { GraphQLError, type GraphQLErrorOptions } from 'graphql';\nimport { ApolloServerErrorCode } from './errors/index.js';\nimport { newHTTPGraphQLHead } from './runHttpQuery.js';\nimport { HeaderMap } from './utils/HeaderMap.js';\n\n// These error classes are not part of Apollo Server's external API; the\n// ApolloServerErrorCode enum is (exported from `@apollo/server/errors`).\n\nclass GraphQLErrorWithCode extends GraphQLError {\n  constructor(\n    message: string,\n    code: ApolloServerErrorCode,\n    options?: GraphQLErrorOptions,\n  ) {\n    super(message, {\n      ...options,\n      extensions: { ...options?.extensions, code },\n    });\n    this.name = this.constructor.name;\n  }\n}\n\nexport class SyntaxError extends GraphQLErrorWithCode {\n  constructor(graphqlError: GraphQLError) {\n    super(graphqlError.message, ApolloServerErrorCode.GRAPHQL_PARSE_FAILED, {\n      source: graphqlError.source,\n      positions: graphqlError.positions,\n      extensions: { http: newHTTPGraphQLHead(400), ...graphqlError.extensions },\n      originalError: graphqlError,\n    });\n  }\n}\n\nexport class ValidationError extends GraphQLErrorWithCode {\n  constructor(graphqlError: GraphQLError) {\n    super(\n      graphqlError.message,\n      ApolloServerErrorCode.GRAPHQL_VALIDATION_FAILED,\n      {\n        nodes: graphqlError.nodes,\n        extensions: {\n          http: newHTTPGraphQLHead(400),\n          ...graphqlError.extensions,\n        },\n        originalError: graphqlError.originalError ?? graphqlError,\n      },\n    );\n  }\n}\n\n// Persisted query errors (especially \"not found\") need to be uncached, because\n// hopefully we're about to fill in the APQ cache and the same request will\n// succeed next time. We also want a 200 response to avoid any error handling\n// that may mask the contents of an error response. (Otherwise, the default\n// status code for a response with `errors` but no `data` (even null) is 400.)\nconst getPersistedQueryErrorHttp = () => ({\n  status: 200,\n  headers: new HeaderMap([\n    ['cache-control', 'private, no-cache, must-revalidate'],\n  ]),\n});\n\nexport class PersistedQueryNotFoundError extends GraphQLErrorWithCode {\n  constructor() {\n    super(\n      'PersistedQueryNotFound',\n      ApolloServerErrorCode.PERSISTED_QUERY_NOT_FOUND,\n      { extensions: { http: getPersistedQueryErrorHttp() } },\n    );\n  }\n}\n\nexport class PersistedQueryNotSupportedError extends GraphQLErrorWithCode {\n  constructor() {\n    super(\n      'PersistedQueryNotSupported',\n      ApolloServerErrorCode.PERSISTED_QUERY_NOT_SUPPORTED,\n      // Not super clear why we need this to be uncached (makes sense for\n      // PersistedQueryNotFoundError, because there we're about to fill the\n      // cache and make the next copy of the same request succeed) but we've\n      // been doing it for years so :shrug:\n      { extensions: { http: getPersistedQueryErrorHttp() } },\n    );\n  }\n}\n\nexport class UserInputError extends GraphQLErrorWithCode {\n  constructor(graphqlError: GraphQLError) {\n    super(graphqlError.message, ApolloServerErrorCode.BAD_USER_INPUT, {\n      nodes: graphqlError.nodes,\n      originalError: graphqlError.originalError ?? graphqlError,\n      extensions: graphqlError.extensions,\n    });\n  }\n}\n\nexport class OperationResolutionError extends GraphQLErrorWithCode {\n  constructor(graphqlError: GraphQLError) {\n    super(\n      graphqlError.message,\n      ApolloServerErrorCode.OPERATION_RESOLUTION_FAILURE,\n      {\n        nodes: graphqlError.nodes,\n        originalError: graphqlError.originalError ?? graphqlError,\n        extensions: {\n          http: newHTTPGraphQLHead(400),\n          ...graphqlError.extensions,\n        },\n      },\n    );\n  }\n}\n\nexport class BadRequestError extends GraphQLErrorWithCode {\n  constructor(message: string, options?: GraphQLErrorOptions) {\n    super(message, ApolloServerErrorCode.BAD_REQUEST, {\n      ...options,\n      // Default to 400 status code, but caller can override. (If caller just\n      // wants to override headers... well, they can't, sorry.)\n      extensions: { http: newHTTPGraphQLHead(400), ...options?.extensions },\n    });\n  }\n}\n", "export class HeaderMap extends Map<string, string> {\n  // In order for TypeScript to prevent a standard `Map` from being compatible\n  // with a `HeaderMap`, we need some additional property on the class.\n  // @ts-ignore (this is just unused)\n  private __identity = Symbol('HeaderMap');\n\n  override set(key: string, value: string): this {\n    return super.set(key.toLowerCase(), value);\n  }\n\n  override get(key: string) {\n    return super.get(key.toLowerCase());\n  }\n\n  override delete(key: string) {\n    return super.delete(key.toLowerCase());\n  }\n\n  override has(key: string) {\n    return super.has(key.toLowerCase());\n  }\n}\n", "import type {\n  BaseContext,\n  HTTPGraphQLRequest,\n  HTTPGraphQLResponse,\n} from './externalTypes/index.js';\nimport type {\n  ApolloServer,\n  ApolloServerInternals,\n  SchemaDerivedData,\n} from './ApolloServer';\nimport { newHTTPGraphQLHead, runHttpQuery } from './runHttpQuery.js';\nimport { BadRequestError } from './internalErrorClasses.js';\n\nasync function runBatchedHttpQuery<TContext extends BaseContext>({\n  server,\n  batchRequest,\n  body,\n  contextValue,\n  schemaDerivedData,\n  internals,\n}: {\n  server: ApolloServer<TContext>;\n  batchRequest: HTTPGraphQLRequest;\n  body: unknown[];\n  contextValue: TContext;\n  schemaDerivedData: SchemaDerivedData;\n  internals: ApolloServerInternals<TContext>;\n}): Promise<HTTPGraphQLResponse> {\n  if (body.length === 0) {\n    throw new BadRequestError('No operations found in request.');\n  }\n\n  // This single HTTPGraphQLHead is shared across all the operations in the\n  // batch. This means that any changes to response headers or status code from\n  // one operation can be immediately seen by other operations. Plugins that set\n  // response headers or status code can then choose to combine the data they\n  // are setting with data that may already be there from another operation as\n  // they choose.\n  const sharedResponseHTTPGraphQLHead = newHTTPGraphQLHead();\n  const responseBodies = await Promise.all(\n    body.map(async (bodyPiece: unknown) => {\n      const singleRequest: HTTPGraphQLRequest = {\n        ...batchRequest,\n        body: bodyPiece,\n      };\n\n      const response = await runHttpQuery({\n        server,\n        httpRequest: singleRequest,\n        contextValue,\n        schemaDerivedData,\n        internals,\n        sharedResponseHTTPGraphQLHead,\n      });\n\n      if (response.body.kind === 'chunked') {\n        throw Error(\n          'Incremental delivery is not implemented for batch requests',\n        );\n      }\n      return response.body.string;\n    }),\n  );\n  return {\n    ...sharedResponseHTTPGraphQLHead,\n    body: { kind: 'complete', string: `[${responseBodies.join(',')}]` },\n  };\n}\n\nexport async function runPotentiallyBatchedHttpQuery<\n  TContext extends BaseContext,\n>(\n  server: ApolloServer<TContext>,\n  httpGraphQLRequest: HTTPGraphQLRequest,\n  contextValue: TContext,\n  schemaDerivedData: SchemaDerivedData,\n  internals: ApolloServerInternals<TContext>,\n): Promise<HTTPGraphQLResponse> {\n  if (\n    !(\n      httpGraphQLRequest.method === 'POST' &&\n      Array.isArray(httpGraphQLRequest.body)\n    )\n  ) {\n    return await runHttpQuery({\n      server,\n      httpRequest: httpGraphQLRequest,\n      contextValue,\n      schemaDerivedData,\n      internals,\n      sharedResponseHTTPGraphQLHead: null,\n    });\n  }\n  if (internals.allowBatchedHttpRequests) {\n    return await runBatchedHttpQuery({\n      server,\n      batchRequest: httpGraphQLRequest,\n      body: httpGraphQLRequest.body as unknown[],\n      contextValue,\n      schemaDerivedData,\n      internals,\n    });\n  }\n  throw new BadRequestError('Operation batching disabled.');\n}\n", "import MIMEType from 'whatwg-mimetype';\nimport { BadRequestError } from './internalErrorClasses.js';\nimport type { HeaderMap } from './utils/HeaderMap.js';\n\n// Our recommended set of CSRF prevention headers. Operations that do not\n// provide a content-type such as `application/json` (in practice, this\n// means GET operations) must include at least one of these headers.\n// Apollo Client Web's default behavior is to always sends a\n// `content-type` even for `GET`, and Apollo iOS and Apollo Kotlin always\n// send `x-apollo-operation-name`. So if you set\n// `csrfPreventionRequestHeaders: true` then any `GET` operation from these\n// three client projects and any `POST` operation at all should work\n// successfully; if you need `GET`s from another kind of client to work,\n// just add `apollo-require-preflight: true` to their requests.\nexport const recommendedCsrfPreventionRequestHeaders = [\n  'x-apollo-operation-name',\n  'apollo-require-preflight',\n];\n\n// See https://fetch.spec.whatwg.org/#cors-safelisted-request-header\nconst NON_PREFLIGHTED_CONTENT_TYPES = [\n  'application/x-www-form-urlencoded',\n  'multipart/form-data',\n  'text/plain',\n];\n\n// We don't want random websites to be able to execute actual GraphQL operations\n// from a user's browser unless our CORS policy supports it. It's not good\n// enough just to ensure that the browser can't read the response from the\n// operation; we also want to prevent CSRF, where the attacker can cause side\n// effects with an operation or can measure the timing of a read operation. Our\n// goal is to ensure that we don't run the context function or execute the\n// GraphQL operation until the browser has evaluated the CORS policy, which\n// means we want all operations to be pre-flighted. We can do that by only\n// processing operations that have at least one header set that appears to be\n// manually set by the JS code rather than by the browser automatically.\n//\n// POST requests generally have a content-type `application/json`, which is\n// sufficient to trigger preflighting. So we take extra care with requests that\n// specify no content-type or that specify one of the three non-preflighted\n// content types. For those operations, we require (if this feature is enabled)\n// one of a set of specific headers to be set. By ensuring that every operation\n// either has a custom content-type or sets one of these headers, we know we\n// won't execute operations at the request of origins who our CORS policy will\n// block.\nexport function preventCsrf(\n  headers: HeaderMap,\n  csrfPreventionRequestHeaders: string[],\n) {\n  const contentType = headers.get('content-type');\n\n  // We have to worry about CSRF if it looks like this may have been a\n  // non-preflighted request. If we see a content-type header that is not one of\n  // the three CORS-safelisted MIME types (see\n  // https://fetch.spec.whatwg.org/#cors-safelisted-request-header) then we know\n  // it was preflighted and we don't have to worry.\n  if (contentType !== undefined) {\n    const contentTypeParsed = MIMEType.parse(contentType);\n    if (contentTypeParsed === null) {\n      // If we got null, then parsing the content-type failed... which is\n      // actually *ok* because that would lead to a preflight. (For example, the\n      // header is empty, or doesn't have a slash, or has bad characters.) The\n      // scary CSRF case is only if there's *not* an error. So it is actually\n      // fine for us to just `return` here. (That said, it would also be\n      // reasonable to reject such requests with provided yet unparsable\n      // Content-Type here.)\n      return;\n    }\n    if (!NON_PREFLIGHTED_CONTENT_TYPES.includes(contentTypeParsed.essence)) {\n      // We managed to parse a MIME type that was not one of the\n      // CORS-safelisted ones. (Probably application/json!) That means that if\n      // the client is a browser, the browser must have applied CORS\n      // preflighting and we don't have to worry about CSRF.\n      return;\n    }\n  }\n\n  // Either there was no content-type, or the content-type parsed properly as\n  // one of the three CORS-safelisted values. Let's look for another header that\n  // (if this was a browser) must have been set by the user's code and would\n  // have caused a preflight.\n  if (\n    csrfPreventionRequestHeaders.some((header) => {\n      const value = headers.get(header);\n      return value !== undefined && value.length > 0;\n    })\n  ) {\n    return;\n  }\n\n  throw new BadRequestError(\n    `This operation has been blocked as a potential Cross-Site Request Forgery ` +\n      `(CSRF). Please either specify a 'content-type' header (with a type that ` +\n      `is not one of ${NON_PREFLIGHTED_CONTENT_TYPES.join(', ')}) or provide ` +\n      `a non-empty value for one of the following headers: ${csrfPreventionRequestHeaders.join(\n        ', ',\n      )}\\n`,\n  );\n}\n", "import { createHash } from '@apollo/utils.createhash';\nimport {\n  specifiedRules,\n  getOperationAST,\n  GraphQLError,\n  validate,\n  parse,\n  Kind,\n  type ExecutionResult,\n} from 'graphql';\nimport {\n  symbolExecutionDispatcherWillResolveField,\n  enablePluginsForSchemaResolvers,\n  symbolUserFieldResolver,\n} from './utils/schemaInstrumentation.js';\nimport {\n  PersistedQueryNotSupportedError,\n  PersistedQueryNotFoundError,\n  UserInputError,\n  BadRequestError,\n  ValidationError,\n  SyntaxError,\n  OperationResolutionError,\n} from './internalErrorClasses.js';\nimport {\n  ensureError,\n  normalizeAndFormatErrors,\n  ensureGraphQLError,\n} from './errorNormalize.js';\nimport type {\n  GraphQLRequestContext,\n  GraphQLRequestContextDidResolveSource,\n  GraphQLRequestContextExecutionDidStart,\n  GraphQLRequestContextResponseForOperation,\n  GraphQLRequestContextDidResolveOperation,\n  GraphQLRequestContextParsingDidStart,\n  GraphQLRequestContextValidationDidStart,\n  GraphQLRequestContextWillSendResponse,\n  GraphQLRequestContextDidEncounterErrors,\n  GraphQLRequestExecutionListener,\n  BaseContext,\n  GraphQLResponse,\n  GraphQLExperimentalFormattedSubsequentIncrementalExecutionResultAlpha2,\n  GraphQLExperimentalFormattedSubsequentIncrementalExecutionResultAlpha9,\n} from './externalTypes/index.js';\n\nimport {\n  invokeDidStartHook,\n  invokeHooksUntilDefinedAndNonNull,\n  invokeSyncDidStartHook,\n} from './utils/invokeHooks.js';\n\nimport { makeGatewayGraphQLRequestContext } from './utils/makeGatewayGraphQLRequestContext.js';\n\nimport { mergeHTTPGraphQLHead, newHTTPGraphQLHead } from './runHttpQuery.js';\nimport {\n  MEDIA_TYPES,\n  type ApolloServer,\n  type ApolloServerInternals,\n  type SchemaDerivedData,\n} from './ApolloServer.js';\nimport { isDefined } from './utils/isDefined.js';\nimport type {\n  GraphQLRequestContextDidEncounterSubsequentErrors,\n  GraphQLRequestContextWillSendSubsequentPayload,\n} from './externalTypes/requestPipeline.js';\nimport {\n  executeIncrementally,\n  type GraphQLExperimentalSubsequentIncrementalExecutionResultAlpha9,\n  type GraphQLExperimentalInitialIncrementalExecutionResultAlpha2,\n  type GraphQLExperimentalInitialIncrementalExecutionResultAlpha9,\n  type GraphQLExperimentalSubsequentIncrementalExecutionResultAlpha2,\n} from './incrementalDeliveryPolyfill.js';\nimport { HeaderMap } from './utils/HeaderMap.js';\nimport Negotiator from 'negotiator';\n\nexport const APQ_CACHE_PREFIX = 'apq:';\n\nfunction computeQueryHash(query: string) {\n  return createHash('sha256').update(query).digest('hex');\n}\n\ntype Mutable<T> = { -readonly [P in keyof T]: T[P] };\n\n// Once GraphQL-JS v17 is released and we make a version of Apollo Server that\n// requires it, we can drop this hack, because it lets us break the `execute`\n// API into two steps and validate user input explicitly first.\nfunction isBadUserInputGraphQLError(error: GraphQLError): boolean {\n  return (\n    error.nodes?.length === 1 &&\n    error.nodes[0].kind === Kind.VARIABLE_DEFINITION &&\n    // GraphQL-JS v17 alpha wording\n    (error.message.startsWith(\n      `Variable \"$${error.nodes[0].variable.name.value}\" has invalid value`,\n    ) ||\n      // GraphQL-JS v16 wording\n      error.message.startsWith(\n        `Variable \"$${error.nodes[0].variable.name.value}\" got invalid value `,\n      ) ||\n      error.message.startsWith(\n        `Variable \"$${error.nodes[0].variable.name.value}\" of required type `,\n      ) ||\n      error.message.startsWith(\n        `Variable \"$${error.nodes[0].variable.name.value}\" of non-null type `,\n      ))\n  );\n}\n\n// This is \"semi-formatted\" because the initial result has not yet been\n// formatted but the subsequent results \"have been\" --- in the sense that they\n// are an async iterable that will format them as they come in.\ntype SemiFormattedExecuteIncrementallyResults =\n  | {\n      singleResult: ExecutionResult;\n    }\n  | {\n      initialResult: GraphQLExperimentalInitialIncrementalExecutionResultAlpha2;\n      subsequentResults: AsyncIterable<GraphQLExperimentalFormattedSubsequentIncrementalExecutionResultAlpha2>;\n    }\n  | {\n      initialResult: GraphQLExperimentalInitialIncrementalExecutionResultAlpha9;\n      subsequentResults: AsyncIterable<GraphQLExperimentalFormattedSubsequentIncrementalExecutionResultAlpha9>;\n    };\n\nexport async function processGraphQLRequest<TContext extends BaseContext>(\n  schemaDerivedData: SchemaDerivedData,\n  server: ApolloServer<TContext>,\n  internals: ApolloServerInternals<TContext>,\n  requestContext: Mutable<GraphQLRequestContext<TContext>>,\n): Promise<GraphQLResponse> {\n  const requestListeners = (\n    await Promise.all(\n      internals.plugins.map((p) => p.requestDidStart?.(requestContext)),\n    )\n  ).filter(isDefined);\n\n  const request = requestContext.request;\n\n  let { query, extensions } = request;\n\n  let queryHash: string;\n\n  requestContext.metrics.persistedQueryHit = false;\n  requestContext.metrics.persistedQueryRegister = false;\n\n  if (extensions?.persistedQuery) {\n    // It looks like we've received a persisted query. Check if we\n    // support them.\n    if (!internals.persistedQueries) {\n      return await sendErrorResponse([new PersistedQueryNotSupportedError()]);\n    } else if (extensions.persistedQuery.version !== 1) {\n      return await sendErrorResponse([\n        new GraphQLError('Unsupported persisted query version', {\n          extensions: { http: newHTTPGraphQLHead(400) },\n        }),\n      ]);\n    }\n\n    queryHash = extensions.persistedQuery.sha256Hash;\n\n    if (query === undefined) {\n      query = await internals.persistedQueries.cache.get(queryHash);\n      if (query) {\n        requestContext.metrics.persistedQueryHit = true;\n      } else {\n        return await sendErrorResponse([new PersistedQueryNotFoundError()]);\n      }\n    } else {\n      const computedQueryHash = computeQueryHash(query);\n\n      // The provided hash must exactly match the SHA-256 hash of\n      // the query string. This prevents hash hijacking, where a\n      // new and potentially malicious query is associated with\n      // an existing hash.\n      if (queryHash !== computedQueryHash) {\n        return await sendErrorResponse([\n          new GraphQLError('provided sha does not match query', {\n            extensions: { http: newHTTPGraphQLHead(400) },\n          }),\n        ]);\n      }\n\n      // We won't write to the persisted query cache until later.\n      // Deferring the writing gives plugins the ability to \"win\" from use of\n      // the cache, but also have their say in whether or not the cache is\n      // written to (by interrupting the request with an error).\n      requestContext.metrics.persistedQueryRegister = true;\n    }\n  } else if (query) {\n    queryHash = computeQueryHash(query);\n  } else {\n    return await sendErrorResponse([\n      new BadRequestError(\n        'GraphQL operations must contain a non-empty `query` or a `persistedQuery` extension.',\n      ),\n    ]);\n  }\n\n  requestContext.queryHash = queryHash;\n  requestContext.source = query;\n\n  // Let the plugins know that we now have a STRING of what we hope will\n  // parse and validate into a document we can execute on.  Unless we have\n  // retrieved this from our APQ cache, there's no guarantee that it is\n  // syntactically correct, so this string should not be trusted as a valid\n  // document until after it's parsed and validated.\n  await Promise.all(\n    requestListeners.map((l) =>\n      l.didResolveSource?.(\n        requestContext as GraphQLRequestContextDidResolveSource<TContext>,\n      ),\n    ),\n  );\n\n  // If we're configured with a document store (by default, we are), we'll\n  // utilize the operation's hash to lookup the AST from the previously\n  // parsed-and-validated operation.  Failure to retrieve anything from the\n  // cache just means we're committed to doing the parsing and validation.\n  if (schemaDerivedData.documentStore) {\n    try {\n      requestContext.document = await schemaDerivedData.documentStore.get(\n        schemaDerivedData.documentStoreKeyPrefix + queryHash,\n      );\n    } catch (err: unknown) {\n      server.logger.warn(\n        'An error occurred while attempting to read from the documentStore. ' +\n          ensureError(err).message,\n      );\n    }\n  }\n\n  // If we still don't have a document, we'll need to parse and validate it.\n  // With success, we'll attempt to save it into the store for future use.\n  if (!requestContext.document) {\n    const parsingDidEnd = await invokeDidStartHook(\n      requestListeners,\n      async (l) =>\n        l.parsingDidStart?.(\n          requestContext as GraphQLRequestContextParsingDidStart<TContext>,\n        ),\n    );\n\n    try {\n      requestContext.document = parse(query, internals.parseOptions);\n    } catch (syntaxMaybeError: unknown) {\n      const error = ensureError(syntaxMaybeError);\n      await parsingDidEnd(error);\n      return await sendErrorResponse([\n        new SyntaxError(ensureGraphQLError(error)),\n      ]);\n    }\n    await parsingDidEnd();\n\n    if (internals.dangerouslyDisableValidation !== true) {\n      const validationDidEnd = await invokeDidStartHook(\n        requestListeners,\n        async (l) =>\n          l.validationDidStart?.(\n            requestContext as GraphQLRequestContextValidationDidStart<TContext>,\n          ),\n      );\n\n      let validationErrors = validate(\n        schemaDerivedData.schema,\n        requestContext.document,\n        [...specifiedRules, ...internals.validationRules],\n        internals.validationOptions,\n      );\n      if (validationErrors.length === 0 && internals.laterValidationRules) {\n        validationErrors = validate(\n          schemaDerivedData.schema,\n          requestContext.document,\n          internals.laterValidationRules,\n        );\n      }\n\n      if (validationErrors.length === 0) {\n        await validationDidEnd();\n      } else {\n        await validationDidEnd(validationErrors);\n        return await sendErrorResponse(\n          validationErrors.map((error) => new ValidationError(error)),\n        );\n      }\n    }\n\n    if (schemaDerivedData.documentStore) {\n      // The underlying cache store behind the `documentStore` returns a\n      // `Promise` which is resolved (or rejected), eventually, based on the\n      // success or failure (respectively) of the cache save attempt.  While\n      // it's certainly possible to `await` this `Promise`, we don't care about\n      // whether or not it's successful at this point.  We'll instead proceed\n      // to serve the rest of the request and just hope that this works out.\n      // If it doesn't work, the next request will have another opportunity to\n      // try again.  Errors will surface as warnings, as appropriate.\n      //\n      // While it shouldn't normally be necessary to wrap this `Promise` in a\n      // `Promise.resolve` invocation, it seems that the underlying cache store\n      // is returning a non-native `Promise` (e.g. Bluebird, etc.).\n      Promise.resolve(\n        schemaDerivedData.documentStore.set(\n          schemaDerivedData.documentStoreKeyPrefix + queryHash,\n          requestContext.document,\n        ),\n      ).catch((err) =>\n        server.logger.warn(\n          'Could not store validated document. ' + err?.message || err,\n        ),\n      );\n    }\n  }\n\n  // TODO: If we want to guarantee an operation has been set when invoking\n  // `willExecuteOperation` and executionDidStart`, we need to throw an\n  // error here and not leave this to `buildExecutionContext` in\n  // `graphql-js`.\n  const operation = getOperationAST(\n    requestContext.document,\n    request.operationName,\n  );\n\n  requestContext.operation = operation || undefined;\n  // We'll set `operationName` to `null` for anonymous operations.\n  requestContext.operationName = operation?.name?.value || null;\n\n  // Special case: GET operations should only be queries (not mutations). We\n  // want to throw a particular HTTP error in that case. (This matters because\n  // it's generally how HTTP requests should work, and additionally it makes us\n  // less vulnerable to mutations running over CSRF, if you turn off our CSRF\n  // prevention feature.)\n  if (\n    request.http?.method === 'GET' &&\n    operation?.operation &&\n    operation.operation !== 'query'\n  ) {\n    return await sendErrorResponse([\n      new BadRequestError(\n        `GET requests only support query operations, not ${operation.operation} operations`,\n        {\n          extensions: {\n            http: { status: 405, headers: new HeaderMap([['allow', 'POST']]) },\n          },\n        },\n      ),\n    ]);\n  }\n\n  try {\n    await Promise.all(\n      requestListeners.map((l) =>\n        l.didResolveOperation?.(\n          requestContext as GraphQLRequestContextDidResolveOperation<TContext>,\n        ),\n      ),\n    );\n  } catch (err: unknown) {\n    // Note that we explicitly document throwing `GraphQLError`s from\n    // `didResolveOperation` as a good way to do validation that depends on the\n    // validated operation and the request context. (It will have status 500 by\n    // default.)\n    return await sendErrorResponse([ensureGraphQLError(err)]);\n  }\n\n  // Now that we've gone through the pre-execution phases of the request\n  // pipeline, and given plugins appropriate ability to object (by throwing\n  // an error) and not actually write, we'll write to the cache if it was\n  // determined earlier in the request pipeline that we should do so.\n  if (\n    requestContext.metrics.persistedQueryRegister &&\n    internals.persistedQueries\n  ) {\n    // While it shouldn't normally be necessary to wrap this `Promise` in a\n    // `Promise.resolve` invocation, it seems that the underlying cache store\n    // is returning a non-native `Promise` (e.g. Bluebird, etc.).\n    const ttl = internals.persistedQueries?.ttl;\n    Promise.resolve(\n      internals.persistedQueries.cache.set(\n        queryHash,\n        query,\n        // Explicitly checking for `undefined` which means \"not set\" vs 0 or\n        // null which means \"no TTL\".\n        ttl !== undefined\n          ? { ttl: internals.persistedQueries?.ttl }\n          : undefined,\n      ),\n    ).catch(server.logger.warn.bind(server.logger));\n  }\n\n  const responseFromPlugin = await invokeHooksUntilDefinedAndNonNull(\n    requestListeners,\n    async (l) =>\n      await l.responseForOperation?.(\n        requestContext as GraphQLRequestContextResponseForOperation<TContext>,\n      ),\n  );\n  if (responseFromPlugin !== null) {\n    requestContext.response.body = responseFromPlugin.body;\n    mergeHTTPGraphQLHead(requestContext.response.http, responseFromPlugin.http);\n  } else {\n    const executionListeners = (\n      await Promise.all(\n        requestListeners.map((l) =>\n          l.executionDidStart?.(\n            requestContext as GraphQLRequestContextExecutionDidStart<TContext>,\n          ),\n        ),\n      )\n    ).filter(isDefined);\n    executionListeners.reverse();\n\n    if (executionListeners.some((l) => l.willResolveField)) {\n      // Create a callback that will trigger the execution dispatcher's\n      // `willResolveField` hook.  We will attach this to the context on a\n      // symbol so it can be invoked by our `wrapField` method during execution.\n      const invokeWillResolveField: GraphQLRequestExecutionListener<TContext>['willResolveField'] =\n        (...args) =>\n          invokeSyncDidStartHook(executionListeners, (l) =>\n            l.willResolveField?.(...args),\n          );\n\n      Object.defineProperty(\n        requestContext.contextValue,\n        symbolExecutionDispatcherWillResolveField,\n        { value: invokeWillResolveField },\n      );\n\n      // If the user has provided a custom field resolver, we will attach\n      // it to the context so we can still invoke it after we've wrapped the\n      // fields with `wrapField` within `enablePluginsForSchemaResolvers` of\n      // the `schemaInstrumentation` module.\n      if (internals.fieldResolver) {\n        Object.defineProperty(\n          requestContext.contextValue,\n          symbolUserFieldResolver,\n          {\n            value: internals.fieldResolver,\n          },\n        );\n      }\n\n      // If the schema is already enabled, this is a no-op.  Otherwise, the\n      // schema will be augmented so it is able to invoke willResolveField. Note\n      // that if we never see a plugin with willResolveField then we will never\n      // need to instrument the schema, which might be a small performance gain.\n      // (For example, this can happen if you pass `fieldLevelInstrumentation:\n      // () => false` to the usage reporting plugin and disable the cache\n      // control plugin. We can consider changing the cache control plugin to\n      // have a \"static cache control only\" mode that doesn't use\n      // willResolveField too if this proves to be helpful in practice.)\n      enablePluginsForSchemaResolvers(schemaDerivedData.schema);\n    }\n\n    try {\n      const fullResult = await execute({\n        ...requestContext,\n        useLegacyIncremental:\n          new Negotiator({\n            headers: { accept: request.http?.headers.get('accept') },\n          }).mediaType([\n            MEDIA_TYPES.MULTIPART_MIXED_EXPERIMENTAL_ALPHA_9,\n            MEDIA_TYPES.MULTIPART_MIXED_EXPERIMENTAL_ALPHA_2,\n          ]) === MEDIA_TYPES.MULTIPART_MIXED_EXPERIMENTAL_ALPHA_2,\n      } as GraphQLRequestContextExecutionDidStart<TContext>);\n      const result =\n        'singleResult' in fullResult\n          ? fullResult.singleResult\n          : fullResult.initialResult;\n\n      // If we don't have an operation, there's no reason to go further. We know\n      // `result` will consist of one error (returned by `graphql-js`'s\n      // `buildExecutionContext`).\n      if (!requestContext.operation) {\n        if (!result.errors?.length) {\n          throw new Error(\n            'Unexpected error: Apollo Server did not resolve an operation but execute did not return errors',\n          );\n        }\n        throw new OperationResolutionError(result.errors[0]);\n      }\n\n      // The first thing that execution does is coerce the request's variables\n      // to the types declared in the operation, which can lead to errors if\n      // they are of the wrong type. It also makes sure that all non-null\n      // variables are required and get non-null values. If any of these things\n      // lead to errors, we change them into UserInputError so that their code\n      // doesn't end up being INTERNAL_SERVER_ERROR, since these are client\n      // errors. (But if the error already has a code, perhaps because the\n      // original error was thrown from a custom scalar parseValue, we leave it\n      // alone. We check that here instead of as part of\n      // isBadUserInputGraphQLError since perhaps that function will one day be\n      // changed to something we can get directly from graphql-js, but the\n      // `code` check is AS-specific.)\n      //\n      // This is hacky! Hopefully graphql-js will give us a way to separate\n      // variable resolution from execution later; see\n      // https://github.com/graphql/graphql-js/issues/3169\n      const resultErrors = result.errors?.map((e) => {\n        if (isBadUserInputGraphQLError(e) && e.extensions?.code == null) {\n          return new UserInputError(e);\n        }\n        return e;\n      });\n\n      if (resultErrors) {\n        await didEncounterErrors(resultErrors);\n      }\n\n      const { formattedErrors, httpFromErrors } = resultErrors\n        ? formatErrors(resultErrors)\n        : { formattedErrors: undefined, httpFromErrors: newHTTPGraphQLHead() };\n\n      // TODO(AS6): remove `status400ForVariableCoercionErrors`\n      if (\n        internals.status400ForVariableCoercionErrors &&\n        resultErrors?.length &&\n        result.data === undefined &&\n        !httpFromErrors.status\n      ) {\n        httpFromErrors.status = 400;\n      }\n\n      mergeHTTPGraphQLHead(requestContext.response.http, httpFromErrors);\n\n      if ('singleResult' in fullResult) {\n        requestContext.response.body = {\n          kind: 'single',\n          singleResult: {\n            ...result,\n            errors: formattedErrors,\n          },\n        };\n      } else {\n        requestContext.response.body = {\n          kind: 'incremental',\n          initialResult: {\n            ...fullResult.initialResult,\n            errors: formattedErrors,\n          },\n          subsequentResults: fullResult.subsequentResults,\n        };\n      }\n    } catch (executionMaybeError: unknown) {\n      const executionError = ensureError(executionMaybeError);\n      await Promise.all(\n        executionListeners.map((l) => l.executionDidEnd?.(executionError)),\n      );\n\n      return await sendErrorResponse([ensureGraphQLError(executionError)]);\n    }\n\n    await Promise.all(executionListeners.map((l) => l.executionDidEnd?.()));\n  }\n\n  await invokeWillSendResponse();\n  if (!requestContext.response.body) {\n    throw Error('got to end of processGraphQLRequest without setting body?');\n  }\n  return requestContext.response as GraphQLResponse; // cast checked on previous line\n\n  async function execute({\n    useLegacyIncremental,\n    ...requestContext\n  }: GraphQLRequestContextExecutionDidStart<TContext> & {\n    useLegacyIncremental?: boolean;\n  }): Promise<SemiFormattedExecuteIncrementallyResults> {\n    const { request, document } = requestContext;\n\n    if (internals.__testing_incrementalExecutionResults) {\n      return internals.__testing_incrementalExecutionResults;\n    } else if (internals.gatewayExecutor) {\n      const result = await internals.gatewayExecutor(\n        makeGatewayGraphQLRequestContext(requestContext, server, internals),\n      );\n      return { singleResult: result };\n    } else {\n      const resultOrResults = await executeIncrementally({\n        schema: schemaDerivedData.schema,\n        document,\n        rootValue:\n          typeof internals.rootValue === 'function'\n            ? internals.rootValue(document)\n            : internals.rootValue,\n        contextValue: requestContext.contextValue,\n        variableValues: request.variables,\n        operationName: request.operationName,\n        fieldResolver: internals.fieldResolver,\n        useLegacyIncremental,\n        options: internals.executionOptions,\n        legacyExperimentalExecuteIncrementally:\n          internals.legacyExperimentalExecuteIncrementally,\n      });\n      if ('initialResult' in resultOrResults) {\n        return {\n          initialResult: resultOrResults.initialResult,\n          subsequentResults:\n            'pending' in resultOrResults.initialResult\n              ? formatErrorsInSubsequentResultsAlpha9(\n                  resultOrResults.subsequentResults as AsyncIterable<GraphQLExperimentalInitialIncrementalExecutionResultAlpha9>,\n                )\n              : formatErrorsInSubsequentResultsAlpha2(\n                  resultOrResults.subsequentResults,\n                ),\n        };\n      } else {\n        return { singleResult: resultOrResults };\n      }\n    }\n  }\n\n  async function* formatErrorsInSubsequentResultsAlpha2(\n    results: AsyncIterable<GraphQLExperimentalSubsequentIncrementalExecutionResultAlpha2>,\n  ): AsyncIterable<GraphQLExperimentalFormattedSubsequentIncrementalExecutionResultAlpha2> {\n    for await (const result of results) {\n      const payload: GraphQLExperimentalFormattedSubsequentIncrementalExecutionResultAlpha2 =\n        result.incremental\n          ? {\n              ...result,\n              incremental: await seriesAsyncMap(\n                result.incremental,\n                async (incrementalResult) => {\n                  const { errors } = incrementalResult;\n                  if (errors) {\n                    await Promise.all(\n                      requestListeners.map((l) =>\n                        l.didEncounterSubsequentErrors?.(\n                          requestContext as GraphQLRequestContextDidEncounterSubsequentErrors<TContext>,\n                          errors,\n                        ),\n                      ),\n                    );\n\n                    return {\n                      ...incrementalResult,\n                      // Note that any `http` extensions in errors have no\n                      // effect, because we've already sent the status code\n                      // and response headers.\n                      errors: formatErrors(errors).formattedErrors,\n                    };\n                  }\n                  return incrementalResult;\n                },\n              ),\n            }\n          : result;\n\n      // Invoke hook, which is allowed to mutate payload if it really wants to.\n      await Promise.all(\n        requestListeners.map((l) =>\n          l.willSendSubsequentPayload?.(\n            requestContext as GraphQLRequestContextWillSendSubsequentPayload<TContext>,\n            payload,\n          ),\n        ),\n      );\n\n      yield payload;\n    }\n  }\n\n  async function* formatErrorsInSubsequentResultsAlpha9(\n    results: AsyncIterable<GraphQLExperimentalSubsequentIncrementalExecutionResultAlpha9>,\n  ): AsyncIterable<GraphQLExperimentalFormattedSubsequentIncrementalExecutionResultAlpha9> {\n    for await (const result of results) {\n      const payload: GraphQLExperimentalFormattedSubsequentIncrementalExecutionResultAlpha9 =\n        result.incremental\n          ? {\n              ...result,\n              incremental: await seriesAsyncMap(\n                result.incremental,\n                async (incrementalResult) => {\n                  const { errors } = incrementalResult;\n                  if (errors) {\n                    await Promise.all(\n                      requestListeners.map((l) =>\n                        l.didEncounterSubsequentErrors?.(\n                          requestContext as GraphQLRequestContextDidEncounterSubsequentErrors<TContext>,\n                          errors,\n                        ),\n                      ),\n                    );\n\n                    return {\n                      ...incrementalResult,\n                      // Note that any `http` extensions in errors have no\n                      // effect, because we've already sent the status code\n                      // and response headers.\n                      errors: formatErrors(errors).formattedErrors,\n                    };\n                  }\n                  return incrementalResult;\n                },\n              ),\n            }\n          : result;\n\n      if (result.completed) {\n        payload.completed = await seriesAsyncMap(\n          result.completed,\n          async (completedResult) => {\n            const { errors } = completedResult;\n\n            if (errors) {\n              await Promise.all(\n                requestListeners.map((l) =>\n                  l.didEncounterSubsequentErrors?.(\n                    requestContext as GraphQLRequestContextDidEncounterSubsequentErrors<TContext>,\n                    errors,\n                  ),\n                ),\n              );\n\n              return {\n                ...completedResult,\n                // Note that any `http` extensions in errors have no\n                // effect, because we've already sent the status code\n                // and response headers.\n                errors: formatErrors(errors).formattedErrors,\n              };\n            }\n\n            return completedResult;\n          },\n        );\n      }\n\n      // Invoke hook, which is allowed to mutate payload if it really wants to.\n      await Promise.all(\n        requestListeners.map((l) =>\n          l.willSendSubsequentPayload?.(\n            requestContext as GraphQLRequestContextWillSendSubsequentPayload<TContext>,\n            payload,\n          ),\n        ),\n      );\n\n      yield payload;\n    }\n  }\n\n  async function invokeWillSendResponse() {\n    await Promise.all(\n      requestListeners.map((l) =>\n        l.willSendResponse?.(\n          requestContext as GraphQLRequestContextWillSendResponse<TContext>,\n        ),\n      ),\n    );\n  }\n\n  // Note that we ensure that all calls to didEncounterErrors are followed by\n  // calls to willSendResponse. (The usage reporting plugin depends on this.)\n  async function didEncounterErrors(errors: ReadonlyArray<GraphQLError>) {\n    requestContext.errors = errors;\n\n    return await Promise.all(\n      requestListeners.map((l) =>\n        l.didEncounterErrors?.(\n          requestContext as GraphQLRequestContextDidEncounterErrors<TContext>,\n        ),\n      ),\n    );\n  }\n\n  // This function \"sends\" a response that contains errors and no data (not even\n  // `data: null`) because the pipeline does not make it to a successful\n  // `execute` call. (It is *not* called for execution that happens to return\n  // some errors.) In this case \"send\" means \"update requestContext.response and\n  // invoke willSendResponse hooks\".\n  //\n  // If any errors have `extensions.http` set, it sets the response's status code\n  // and errors from them.\n  //\n  // Then, if the HTTP status code is not yet set, it sets it to 500.\n  async function sendErrorResponse(\n    errors: ReadonlyArray<GraphQLError>,\n  ): Promise<GraphQLResponse> {\n    await didEncounterErrors(errors);\n\n    const { formattedErrors, httpFromErrors } = formatErrors(errors);\n\n    requestContext.response.body = {\n      kind: 'single',\n      singleResult: {\n        errors: formattedErrors,\n      },\n    };\n\n    mergeHTTPGraphQLHead(requestContext.response.http, httpFromErrors);\n\n    if (!requestContext.response.http.status) {\n      requestContext.response.http.status = 500;\n    }\n\n    await invokeWillSendResponse();\n\n    // cast safe because we assigned to `body` above\n    return requestContext.response as GraphQLResponse;\n  }\n\n  function formatErrors(\n    errors: ReadonlyArray<GraphQLError>,\n  ): ReturnType<typeof normalizeAndFormatErrors> {\n    return normalizeAndFormatErrors(errors, {\n      formatError: internals.formatError,\n      includeStacktraceInErrorResponses:\n        internals.includeStacktraceInErrorResponses,\n    });\n  }\n}\n\nasync function seriesAsyncMap<T, U>(\n  ts: readonly T[],\n  fn: (value: T) => Promise<U>,\n): Promise<U[]> {\n  const us: U[] = [];\n  for (const t of ts) {\n    const u = await fn(t);\n    us.push(u);\n  }\n  return us;\n}\n", "import {\n  type GraphQLSchema,\n  type GraphQLField,\n  getNamedType,\n  GraphQLObjectType,\n  type GraphQLFieldResolver,\n  defaultFieldResolver,\n} from 'graphql';\nimport type {\n  BaseContext,\n  GraphQLRequestExecutionListener,\n} from '../externalTypes/index.js';\n\nexport const symbolExecutionDispatcherWillResolveField = Symbol(\n  'apolloServerExecutionDispatcherWillResolveField',\n);\nexport const symbolUserFieldResolver = Symbol('apolloServerUserFieldResolver');\nconst symbolPluginsEnabled = Symbol('apolloServerPluginsEnabled');\n\nexport function enablePluginsForSchemaResolvers<TContext extends BaseContext>(\n  schema: GraphQLSchema & { [symbolPluginsEnabled]?: boolean },\n) {\n  if (pluginsEnabledForSchemaResolvers(schema)) {\n    return schema;\n  }\n  Object.defineProperty(schema, symbolPluginsEnabled, {\n    value: true,\n  });\n\n  const typeMap = schema.getTypeMap();\n  Object.values(typeMap).forEach((type) => {\n    if (\n      !getNamedType(type).name.startsWith('__') &&\n      type instanceof GraphQLObjectType\n    ) {\n      const fields = type.getFields();\n      Object.values(fields).forEach((field) => {\n        wrapField<TContext>(field);\n      });\n    }\n  });\n\n  return schema;\n}\n\nexport function pluginsEnabledForSchemaResolvers(\n  schema: GraphQLSchema & { [symbolPluginsEnabled]?: boolean },\n): boolean {\n  return !!schema[symbolPluginsEnabled];\n}\n\nfunction wrapField<TContext extends BaseContext>(\n  field: GraphQLField<any, any>,\n): void {\n  const originalFieldResolve = field.resolve;\n\n  field.resolve = (source, args, contextValue, info) => {\n    const willResolveField = contextValue?.[\n      symbolExecutionDispatcherWillResolveField\n    ] as\n      | GraphQLRequestExecutionListener<TContext>['willResolveField']\n      | undefined;\n\n    const userFieldResolver = contextValue?.[symbolUserFieldResolver] as\n      | GraphQLFieldResolver<any, any>\n      | undefined;\n\n    // The technique for implementing a  \"did resolve field\" is accomplished by\n    // returning a function from the `willResolveField` handler.  While there\n    // may be several callbacks, depending on the number of plugins which have\n    // implemented a `willResolveField` hook, this hook will call them all\n    // as dictated by the dispatcher.  We will call this when object\n    // resolution is complete.\n    const didResolveField =\n      typeof willResolveField === 'function' &&\n      willResolveField({ source, args, contextValue, info });\n\n    const fieldResolver =\n      originalFieldResolve || userFieldResolver || defaultFieldResolver;\n\n    try {\n      const result = fieldResolver(source, args, contextValue, info);\n\n      // Call the stack's handlers either immediately (if result is not a\n      // Promise) or once the Promise is done. Then return that same\n      // maybe-Promise value.\n      if (typeof didResolveField === 'function') {\n        whenResultIsFinished(result, didResolveField);\n      }\n      return result;\n    } catch (error) {\n      // Normally it's a bad sign to see an error both handled and\n      // re-thrown. But it is useful to allow extensions to track errors while\n      // still handling them in the normal GraphQL way.\n      if (typeof didResolveField === 'function') {\n        didResolveField(error as Error);\n      }\n      throw error;\n    }\n  };\n}\n\nfunction isPromise(x: any): boolean {\n  return x && typeof x.then === 'function';\n}\n\n// Given result (which may be a Promise or an array some of whose elements are\n// promises) Promises, set up 'callback' to be invoked when result is fully\n// resolved. (Unfortunately, this does not perfectly handle every possible\n// return value shape, such as arrays of arrays of Promises.)\nexport function whenResultIsFinished(\n  result: any,\n  callback: (err: Error | null, result?: any) => void,\n) {\n  if (isPromise(result)) {\n    result.then(\n      (r: any) => whenResultIsFinished(r, callback),\n      (err: Error) => callback(err),\n    );\n  } else if (Array.isArray(result)) {\n    if (result.some(isPromise)) {\n      Promise.all(result).then(\n        (r: any) => callback(null, r),\n        (err: Error) => callback(err),\n      );\n    } else {\n      callback(null, result);\n    }\n  } else {\n    callback(null, result);\n  }\n}\n", "export function isDefined<T>(t: T | undefined | null | void): t is T {\n  return t != null;\n}\n", "import { isDefined } from './isDefined.js';\n\ntype AsyncDidEndHook<TArgs extends any[]> = (...args: TArgs) => Promise<void>;\ntype SyncDidEndHook<TArgs extends any[]> = (...args: TArgs) => void;\n\nexport async function invokeDidStartHook<T, TEndHookArgs extends unknown[]>(\n  targets: T[],\n  hook: (t: T) => Promise<AsyncDidEndHook<TEndHookArgs> | undefined | void>,\n): Promise<AsyncDidEndHook<TEndHookArgs>> {\n  const didEndHooks = (\n    await Promise.all(targets.map((target) => hook(target)))\n  ).filter(isDefined);\n\n  didEndHooks.reverse();\n\n  return async (...args: TEndHookArgs) => {\n    for (const didEndHook of didEndHooks) {\n      didEndHook(...args);\n    }\n  };\n}\n\n// Almost all hooks are async, but as a special case, willResolveField is sync\n// due to performance concerns.\nexport function invokeSyncDidStartHook<T, TEndHookArgs extends unknown[]>(\n  targets: T[],\n  hook: (t: T) => SyncDidEndHook<TEndHookArgs> | undefined | void,\n): SyncDidEndHook<TEndHookArgs> {\n  const didEndHooks: SyncDidEndHook<TEndHookArgs>[] = targets\n    .map((target) => hook(target))\n    .filter(isDefined);\n\n  didEndHooks.reverse();\n\n  return (...args: TEndHookArgs) => {\n    for (const didEndHook of didEndHooks) {\n      didEndHook(...args);\n    }\n  };\n}\n\nexport async function invokeHooksUntilDefinedAndNonNull<T, TOut>(\n  targets: T[],\n  hook: (t: T) => Promise<TOut | null | undefined>,\n): Promise<TOut | null> {\n  for (const target of targets) {\n    const value = await hook(target);\n    if (value != null) {\n      return value;\n    }\n  }\n  return null;\n}\n", "import type {\n  GatewayGraphQLRequest,\n  GatewayGraphQLRequestContext,\n  GatewayGraphQLResponse,\n  GatewaySchemaHash,\n} from '@apollo/server-gateway-interface';\nimport type { FetcherHeaders } from '@apollo/utils.fetcher';\nimport type { ApolloServer, ApolloServerInternals } from '../ApolloServer';\nimport type {\n  BaseContext,\n  GraphQLRequestContextExecutionDidStart,\n} from '../externalTypes';\nimport type { HeaderMap } from './HeaderMap';\n\n// Apollo Gateway's API included `GraphQLRequestContext` from AS2/AS3.\n// Specifically, a request context is passed to the main executor method, which\n// it then exposes to user-configurable `GraphQLDataSource`s.\n// `GraphQLRequestContext` has changed in incompatible ways since AS4; for example,\n// we represent HTTP messages using our own data structures rather than Fetches,\n// and some fields have been removed because they relate to features that don't\n// exist any more.\n//\n// In general, the future of Apollo's development is in Apollo Router, not\n// Gateway. So rather than have a big transition where a new version of Gateway\n// supports AS5's GraphQLRequestContext instead of AS3's, we simply teach AS5\n// how to produce AS3-style GraphQLRequestContext objects specifically for use\n// by Gateway. We have changed Gateway to get its TS type definitions from a new\n// package rather than from AS3 itself, so that Gateway no longer needs to\n// depend on Apollo Server.\n//\n// This function turns an AS5 GraphQLRequestContext into a\n// GatewayGraphQLRequestContext (which is basically an AS3\n// GraphQLRequestContext).\n//\n// You might think that *after* invoking the executor, we would then need to\n// propagate any changes made by the gateway back onto the \"real\"\n// GraphQLRequestContext. It turns out that for each bit of data on the request\n// context, this is either unnecessary or impossible. (We don't need to support\n// use cases where people break type safe, eg by changing the values of readonly\n// fields.) Here's why:\n//\n// Many fields on GatewayGraphQLRequestContext are declared readonly and their\n// values are taken directly from the real GraphQLRequestContext. This means\n// that gateways should not change the field's value, and any mutations of the\n// object stored in the field (say, calling\n// `requestContext.overallCachePolicy.restrict`, as RemoteGraphQLDataSource\n// does) already take effect.\n//\n//  The only two fields not declared as readonly are `logger` and `debug`.\n//\n// Technically, a gateway implementation could set `requestContext.logger` to a\n// different Logger without breaking the TypeScript declarations. In AS5 we\n// don't actually have a requestContext.logger; we have `readonly\n// requestContext.server` and `readonly server.logger`. So there's not an easy\n// way for us to carry out this change: AS5 just doesn't let gateway or plugins\n// override the server's logger (and generally doesn't allow the logger to\n// change after the server is created), which seems like a simpler model. If it\n// turns out there is a real use case for the gateway to be able to change the\n// overall logger for the request as seen by plugins, we can fix that later.\n//\n// Similarly, it's not clear what the intended use case of mutating `debug` in\n// gateway would be. `debug` has now mostly changed into\n// `includeStacktraceInErrorResponses`. So perhaps this could be used to let you\n// decide whether or not to include the stacktrace on a per-operation basis...\n// but you can also use `formatError` or `didEncounterErrors` for this perhaps?\n// In any case, AS5 doesn't track `includeStacktraceInErrorResponses` on a\n// per-operation basis; if we find a use case for this we can add it later.\n//\n// So we'll just ignore changes to `logger` and `debug`.\n//\n// Next, there's `request`. We don't know of a use case for mutating the\n// *request* at execution time. If there was a real use case, we could add a\n// function that copies pieces back from the gateway `request` to the AS5\n// request, but we're not bothering to yet.\n//\n// Finally, there's `response`. Sure, the executor *could* mutate `response`.\n// But the main thing the executor is doing is *returning* a response, which\n// then semi-overwrites `requestContext.response` anyway. So it doesn't seem\n// like we need to support `executor` *also* overwriting response. Yet again, we\n// can fix this if it turns out it's necessary. (That said, the executor could\n// in theory write HTTP response headers or status, so we make sure to hook them\n// up directly to the appropriate data in the real GraphQLRequestContext.)\n//\n// So all in all, it looks like it's OK for this to be a \"one-way\" conversion.\nexport function makeGatewayGraphQLRequestContext<TContext extends BaseContext>(\n  newRequestContext: GraphQLRequestContextExecutionDidStart<TContext>,\n  server: ApolloServer<TContext>,\n  internals: ApolloServerInternals<TContext>,\n): GatewayGraphQLRequestContext {\n  const request: GatewayGraphQLRequest = {};\n  if ('query' in newRequestContext.request) {\n    request.query = newRequestContext.request.query;\n  }\n  if ('operationName' in newRequestContext.request) {\n    request.operationName = newRequestContext.request.operationName;\n  }\n  if ('variables' in newRequestContext.request) {\n    request.variables = newRequestContext.request.variables;\n  }\n  if ('extensions' in newRequestContext.request) {\n    request.extensions = newRequestContext.request.extensions;\n  }\n  if (newRequestContext.request.http) {\n    const newHttp = newRequestContext.request.http;\n    const needQuestion =\n      newHttp.search !== '' && !newHttp.search.startsWith('?');\n    request.http = {\n      method: newHttp.method,\n      // As of AS4, we no longer attempt to track complete URLs (just the search\n      // parameters used in GET requests). So we have to fake them for Gateway.\n      url: `https://unknown-url.invalid/${needQuestion ? '?' : ''}${\n        newHttp.search\n      }`,\n      headers: new FetcherHeadersForHeaderMap(newHttp.headers),\n    };\n  }\n\n  const response: GatewayGraphQLResponse = {\n    http: {\n      headers: new FetcherHeadersForHeaderMap(\n        newRequestContext.response.http.headers,\n      ),\n      get status() {\n        return newRequestContext.response.http.status;\n      },\n      set status(newStatus) {\n        newRequestContext.response.http.status = newStatus;\n      },\n    },\n    // We leave off `body` because it hasn't been set yet.\n  };\n\n  return {\n    request,\n    response,\n    logger: server.logger,\n    schema: newRequestContext.schema,\n    // For the sake of typechecking, we still provide this field, but we don't\n    // calculate it. If somebody really needs it in their gateway\n    // implementation, they're welcome to copy\n    // https://github.com/apollographql/apollo-server/blob/3f218e78/packages/apollo-server-core/src/utils/schemaHash.ts\n    // into their code.\n    schemaHash:\n      'schemaHash no longer exists since Apollo Server 4' as GatewaySchemaHash,\n    context: newRequestContext.contextValue,\n    cache: server.cache,\n    queryHash: newRequestContext.queryHash,\n    document: newRequestContext.document,\n    source: newRequestContext.source,\n    operationName: newRequestContext.operationName,\n    operation: newRequestContext.operation,\n    errors: newRequestContext.errors,\n    metrics: newRequestContext.metrics,\n    debug: internals.includeStacktraceInErrorResponses,\n    overallCachePolicy: newRequestContext.overallCachePolicy,\n    requestIsBatched: newRequestContext.requestIsBatched,\n  };\n}\n\n// An implementation of the W3C-style headers class used by Gateway (and AS3),\n// backed by AS5's HeaderMap. Changes are written directly to the HeaderMap, so\n// any concurrent writes to the underlying HeaderMap (eg from a plugin) can be\n// seen immediately by the gateway and vice versa.\nclass FetcherHeadersForHeaderMap implements FetcherHeaders {\n  constructor(private map: HeaderMap) {}\n  append(name: string, value: string) {\n    if (this.map.has(name)) {\n      this.map.set(name, this.map.get(name) + ', ' + value);\n    } else {\n      this.map.set(name, value);\n    }\n  }\n  delete(name: string) {\n    this.map.delete(name);\n  }\n  get(name: string): string | null {\n    return this.map.get(name) ?? null;\n  }\n  has(name: string): boolean {\n    return this.map.has(name);\n  }\n  set(name: string, value: string) {\n    this.map.set(name, value);\n  }\n  entries(): Iterator<[string, string]> {\n    return this.map.entries();\n  }\n  keys(): Iterator<string> {\n    return this.map.keys();\n  }\n  values(): Iterator<string> {\n    return this.map.values();\n  }\n  [Symbol.iterator](): Iterator<[string, string]> {\n    return this.map.entries();\n  }\n}\n", "import {\n  execute,\n  type ExecutionArgs,\n  type ExecutionResult,\n  type GraphQLError,\n} from 'graphql';\nimport { BadRequestError } from './internalErrorClasses.js';\nimport { MEDIA_TYPES } from './ApolloServer.js';\nimport { type LegacyExperimentalExecuteIncrementally } from './externalTypes/graphql.js';\n\n// This file \"polyfills\" graphql@17's experimentalExecuteIncrementally (by\n// returning a function that does not understand incremental directives if\n// you're using graphql@16). The types defined in this file are largely copied\n// from graphql-js.\n\ninterface ObjMap<T> {\n  [key: string]: T;\n}\n\n// 17.0.0-alpha.2\nexport interface GraphQLExperimentalInitialIncrementalExecutionResultAlpha2<\n  TData = ObjMap<unknown>,\n  TExtensions = ObjMap<unknown>,\n> extends ExecutionResult<TData, TExtensions> {\n  hasNext: boolean;\n  incremental?: ReadonlyArray<\n    GraphQLExperimentalIncrementalResultAlpha2<TData, TExtensions>\n  >;\n  extensions?: TExtensions;\n}\n\nexport interface GraphQLExperimentalSubsequentIncrementalExecutionResultAlpha2<\n  TData = ObjMap<unknown>,\n  TExtensions = ObjMap<unknown>,\n> {\n  hasNext: boolean;\n  incremental?: ReadonlyArray<\n    GraphQLExperimentalIncrementalResultAlpha2<TData, TExtensions>\n  >;\n  extensions?: TExtensions;\n}\n\ntype GraphQLExperimentalIncrementalResultAlpha2<\n  TData = ObjMap<unknown>,\n  TExtensions = ObjMap<unknown>,\n> =\n  | GraphQLExperimentalIncrementalDeferResultAlpha2<TData, TExtensions>\n  | GraphQLExperimentalIncrementalStreamResultAlpha2<TData, TExtensions>;\n\ninterface GraphQLExperimentalIncrementalDeferResultAlpha2<\n  TData = ObjMap<unknown>,\n  TExtensions = ObjMap<unknown>,\n> extends ExecutionResult<TData, TExtensions> {\n  path?: ReadonlyArray<string | number>;\n  label?: string;\n}\n\ninterface GraphQLExperimentalIncrementalStreamResultAlpha2<\n  TData = Array<unknown>,\n  TExtensions = ObjMap<unknown>,\n> {\n  errors?: ReadonlyArray<GraphQLError>;\n  items?: TData | null;\n  path?: ReadonlyArray<string | number>;\n  label?: string;\n  extensions?: TExtensions;\n}\n\nexport interface GraphQLExperimentalIncrementalExecutionResultsAlpha2<\n  TData = ObjMap<unknown>,\n  TExtensions = ObjMap<unknown>,\n> {\n  initialResult: GraphQLExperimentalInitialIncrementalExecutionResultAlpha2<\n    TData,\n    TExtensions\n  >;\n  subsequentResults: AsyncGenerator<\n    GraphQLExperimentalSubsequentIncrementalExecutionResultAlpha2<\n      TData,\n      TExtensions\n    >,\n    void,\n    void\n  >;\n}\n\n// 17.0.0-alpha.9\nexport interface GraphQLExperimentalInitialIncrementalExecutionResultAlpha9<\n  TData = ObjMap<unknown>,\n  TExtensions = ObjMap<unknown>,\n> extends ExecutionResult<TData, TExtensions> {\n  data: TData;\n  pending: ReadonlyArray<GraphQLExperimentalPendingResultAlpha9>;\n  hasNext: true;\n  extensions?: TExtensions;\n}\n\nexport interface GraphQLExperimentalSubsequentIncrementalExecutionResultAlpha9<\n  TData = ObjMap<unknown>,\n  TExtensions = ObjMap<unknown>,\n> {\n  pending?: ReadonlyArray<GraphQLExperimentalPendingResultAlpha9>;\n  incremental?: ReadonlyArray<\n    GraphQLExperimentalIncrementalResultAlpha9<TData, TExtensions>\n  >;\n  completed?: ReadonlyArray<GraphQLExperimentalCompletedResultAlpha9>;\n  hasNext: boolean;\n  extensions?: TExtensions;\n}\n\ninterface GraphQLExperimentalExecutionGroupResultAlpha9<\n  TData = ObjMap<unknown>,\n> {\n  errors?: ReadonlyArray<GraphQLError>;\n  data: TData;\n}\n\ninterface GraphQLExperimentalIncrementalDeferResultAlpha9<\n  TData = ObjMap<unknown>,\n  TExtensions = ObjMap<unknown>,\n> extends GraphQLExperimentalExecutionGroupResultAlpha9<TData> {\n  id: string;\n  subPath?: ReadonlyArray<string | number>;\n  extensions?: TExtensions;\n}\n\ninterface GraphQLExperimentalStreamItemsRecordResultAlpha9<\n  TData = ReadonlyArray<unknown>,\n> {\n  errors?: ReadonlyArray<GraphQLError>;\n  items: TData;\n}\n\ninterface GraphQLExperimentalIncrementalStreamResultAlpha9<\n  TData = ReadonlyArray<unknown>,\n  TExtensions = ObjMap<unknown>,\n> extends GraphQLExperimentalStreamItemsRecordResultAlpha9<TData> {\n  id: string;\n  subPath?: ReadonlyArray<string | number>;\n  extensions?: TExtensions;\n}\n\ntype GraphQLExperimentalIncrementalResultAlpha9<\n  TData = unknown,\n  TExtensions = ObjMap<unknown>,\n> =\n  | GraphQLExperimentalIncrementalDeferResultAlpha9<TData, TExtensions>\n  | GraphQLExperimentalIncrementalStreamResultAlpha9<TData, TExtensions>;\n\ninterface GraphQLExperimentalPendingResultAlpha9 {\n  id: string;\n  path: ReadonlyArray<string | number>;\n  label?: string;\n}\n\ninterface GraphQLExperimentalCompletedResultAlpha9 {\n  id: string;\n  errors?: ReadonlyArray<GraphQLError>;\n}\n\nexport interface GraphQLExperimentalIncrementalExecutionResultsAlpha9<\n  TInitial = ObjMap<unknown>,\n  TSubsequent = unknown,\n  TExtensions = ObjMap<unknown>,\n> {\n  initialResult: GraphQLExperimentalInitialIncrementalExecutionResultAlpha9<\n    TInitial,\n    TExtensions\n  >;\n  subsequentResults: AsyncGenerator<\n    GraphQLExperimentalSubsequentIncrementalExecutionResultAlpha9<\n      TSubsequent,\n      TExtensions\n    >,\n    void,\n    void\n  >;\n}\n\ntype PromiseOrValue<T> = Promise<T> | T;\n\n// This starts as undefined and is set to a function or null by running\n// tryToLoadGraphQL17(). If graphql-js 17 is installed, it is set to the\n// experimentalExecuteIncrementally function from that package; otherwise it is\n// set to null.\nlet graphqlExperimentalExecuteIncrementally:\n  | ((\n      args: ExecutionArgs,\n    ) => PromiseOrValue<\n      ExecutionResult | GraphQLExperimentalIncrementalExecutionResultsAlpha9\n    >)\n  | null\n  | undefined = undefined;\n\nasync function tryToLoadGraphQL17() {\n  if (graphqlExperimentalExecuteIncrementally !== undefined) {\n    return;\n  }\n\n  const graphql = await import('graphql');\n  if (\n    graphql.version === '17.0.0-alpha.9' &&\n    'experimentalExecuteIncrementally' in graphql\n  ) {\n    graphqlExperimentalExecuteIncrementally = (graphql as any)\n      .experimentalExecuteIncrementally;\n  } else {\n    graphqlExperimentalExecuteIncrementally = null;\n  }\n}\n\nexport async function executeIncrementally({\n  useLegacyIncremental,\n  legacyExperimentalExecuteIncrementally,\n  ...args\n}: ExecutionArgs & {\n  useLegacyIncremental?: boolean;\n  legacyExperimentalExecuteIncrementally:\n    | LegacyExperimentalExecuteIncrementally\n    | undefined;\n}): Promise<\n  | ExecutionResult\n  | GraphQLExperimentalIncrementalExecutionResultsAlpha2\n  | GraphQLExperimentalIncrementalExecutionResultsAlpha9\n> {\n  await tryToLoadGraphQL17();\n\n  if (useLegacyIncremental) {\n    if (legacyExperimentalExecuteIncrementally) {\n      return legacyExperimentalExecuteIncrementally(args);\n    }\n\n    // Only throw if the server supports incremental delivery with the new\n    // format, but not the legacy format. We don't want to accidentally send\n    // alpha.9 format when the client requested the legacy format.\n    if (graphqlExperimentalExecuteIncrementally) {\n      throw new BadRequestError(\n        'Apollo Server received an operation that uses incremental delivery ' +\n          '(@defer or @stream) with the legacy incremental format, but the server ' +\n          'does not support the legacy incremental delivery format. Add the HTTP ' +\n          `header: 'Accept: ${MEDIA_TYPES.MULTIPART_MIXED_EXPERIMENTAL_ALPHA_9}' ` +\n          'to use the current incremental delivery format',\n        // Use 406 Not Accepted\n        { extensions: { http: { status: 406 } } },\n      );\n    }\n  }\n\n  if (graphqlExperimentalExecuteIncrementally) {\n    return graphqlExperimentalExecuteIncrementally(args);\n  }\n  return execute(args);\n}\n", "import type { Logger } from '@apollo/utils.logger';\nimport type { GraphQLSchema } from 'graphql';\nimport type {\n  GatewayExecutor,\n  GatewayInterface,\n  GatewayUnsubscriber,\n} from '@apollo/server-gateway-interface';\nimport type { SchemaDerivedData } from '../ApolloServer.js';\nimport type {\n  ApolloConfig,\n  GraphQLSchemaContext,\n} from '../externalTypes/index.js';\n\ntype SchemaDerivedDataProvider = (\n  apiSchema: GraphQLSchema,\n) => SchemaDerivedData;\n\n/**\n * An async-safe class for tracking changes in schemas and schema-derived data.\n *\n * Specifically, as long as start() is called (and completes) before stop() is\n * called, any set of executions of public methods is linearizable.\n *\n * Note that linearizability in Javascript is trivial if all public methods are\n * non-async, but increasingly difficult to guarantee if public methods become\n * async. Accordingly, if you believe a public method should be async, think\n * carefully on whether it's worth the mental overhead. (E.g. if you wished that\n * a callback was async, consider instead resolving a Promise in a non-async\n * callback and having your async code wait on the Promise in setTimeout().)\n */\nexport class SchemaManager {\n  private readonly logger: Logger;\n  private readonly schemaDerivedDataProvider: SchemaDerivedDataProvider;\n  private readonly onSchemaLoadOrUpdateListeners = new Set<\n    (schemaContext: GraphQLSchemaContext) => void\n  >();\n  private isStopped = false;\n  private schemaDerivedData?: SchemaDerivedData;\n  private schemaContext?: GraphQLSchemaContext;\n\n  // For state that's specific to the mode of operation.\n  private readonly modeSpecificState:\n    | {\n        readonly mode: 'gateway';\n        readonly gateway: GatewayInterface;\n        readonly apolloConfig: ApolloConfig;\n        unsubscribeFromGateway?: GatewayUnsubscriber;\n      }\n    | {\n        readonly mode: 'schema';\n        readonly apiSchema: GraphQLSchema;\n        readonly schemaDerivedData: SchemaDerivedData;\n      };\n\n  constructor(\n    options: (\n      | { gateway: GatewayInterface; apolloConfig: ApolloConfig }\n      | { apiSchema: GraphQLSchema }\n    ) & {\n      logger: Logger;\n      schemaDerivedDataProvider: SchemaDerivedDataProvider;\n    },\n  ) {\n    this.logger = options.logger;\n    this.schemaDerivedDataProvider = options.schemaDerivedDataProvider;\n    if ('gateway' in options) {\n      this.modeSpecificState = {\n        mode: 'gateway',\n        gateway: options.gateway,\n        apolloConfig: options.apolloConfig,\n      };\n    } else {\n      this.modeSpecificState = {\n        mode: 'schema',\n        apiSchema: options.apiSchema,\n        // The caller of the constructor expects us to fail early if the schema\n        // given is invalid/has errors, so we call the provider here. We also\n        // pass the result to start(), as the provider can be expensive to call.\n        schemaDerivedData: options.schemaDerivedDataProvider(options.apiSchema),\n      };\n    }\n  }\n\n  /**\n   * Calling start() will:\n   * - Start gateway schema fetching (if a gateway was provided).\n   * - Initialize schema-derived data.\n   * - Synchronously notify onSchemaLoadOrUpdate() listeners of schema load, and\n   *   asynchronously notify them of schema updates.\n   * - If we started a gateway, returns the gateway's executor; otherwise null.\n   */\n  public async start(): Promise<GatewayExecutor | null> {\n    if (this.modeSpecificState.mode === 'gateway') {\n      const gateway = this.modeSpecificState.gateway;\n      if (gateway.onSchemaLoadOrUpdate) {\n        // Use onSchemaLoadOrUpdate, as it reports the core supergraph SDL and\n        // always reports the initial schema load.\n        this.modeSpecificState.unsubscribeFromGateway =\n          gateway.onSchemaLoadOrUpdate((schemaContext) => {\n            this.processSchemaLoadOrUpdateEvent(schemaContext);\n          });\n      } else {\n        throw new Error(\n          \"Unexpectedly couldn't find onSchemaLoadOrUpdate on gateway\",\n        );\n      }\n\n      const config = await this.modeSpecificState.gateway.load({\n        apollo: this.modeSpecificState.apolloConfig,\n      });\n\n      return config.executor;\n    } else {\n      this.processSchemaLoadOrUpdateEvent(\n        {\n          apiSchema: this.modeSpecificState.apiSchema,\n        },\n        this.modeSpecificState.schemaDerivedData,\n      );\n      return null;\n    }\n  }\n\n  /**\n   * Registers a listener for schema load/update events. Note that the latest\n   * event is buffered, i.e.\n   * - If registered before start(), this method will throw. (We have no need\n   *   for registration before start(), but this is easy enough to change.)\n   * - If registered after start() but before stop(), the callback will be first\n   *   called in this method (for whatever the current schema is), and then\n   *   later for updates.\n   * - If registered after stop(), the callback will never be called.\n   *\n   * For gateways, a core supergraph SDL will be provided to the callback.\n   *\n   * @param callback The listener to execute on schema load/updates.\n   */\n  public onSchemaLoadOrUpdate(\n    callback: (schemaContext: GraphQLSchemaContext) => void,\n  ): GatewayUnsubscriber {\n    if (!this.schemaContext) {\n      throw new Error('You must call start() before onSchemaLoadOrUpdate()');\n    }\n    if (!this.isStopped) {\n      try {\n        callback(this.schemaContext);\n      } catch (e) {\n        // Note that onSchemaLoadOrUpdate() is currently only called from\n        // ApolloServer._start(), so we throw here to alert the user early\n        // that their callback is failing.\n        throw new Error(\n          `An error was thrown from an 'onSchemaLoadOrUpdate' listener: ${\n            (e as Error).message\n          }`,\n        );\n      }\n    }\n    this.onSchemaLoadOrUpdateListeners.add(callback);\n\n    return () => {\n      this.onSchemaLoadOrUpdateListeners.delete(callback);\n    };\n  }\n\n  /**\n   * Get the schema-derived state for the current schema. This throws if called\n   * before start() is called.\n   */\n  public getSchemaDerivedData(): SchemaDerivedData {\n    if (!this.schemaDerivedData) {\n      throw new Error('You must call start() before getSchemaDerivedData()');\n    }\n    return this.schemaDerivedData;\n  }\n\n  /**\n   * Calling stop() will:\n   * - Stop gateway schema fetching (if a gateway was provided).\n   *   - Note that this specific step may not succeed if gateway is old.\n   * - Stop updating schema-derived data.\n   * - Stop notifying onSchemaLoadOrUpdate() listeners.\n   */\n  public async stop(): Promise<void> {\n    this.isStopped = true;\n    if (this.modeSpecificState.mode === 'gateway') {\n      this.modeSpecificState.unsubscribeFromGateway?.();\n      await this.modeSpecificState.gateway.stop?.();\n    }\n  }\n\n  private processSchemaLoadOrUpdateEvent(\n    schemaContext: GraphQLSchemaContext,\n    schemaDerivedData?: SchemaDerivedData,\n  ): void {\n    if (!this.isStopped) {\n      this.schemaDerivedData =\n        schemaDerivedData ??\n        this.schemaDerivedDataProvider(schemaContext.apiSchema);\n      this.schemaContext = schemaContext;\n      this.onSchemaLoadOrUpdateListeners.forEach((listener) => {\n        try {\n          listener(schemaContext);\n        } catch (e) {\n          this.logger.error(\n            \"An error was thrown from an 'onSchemaLoadOrUpdate' listener\",\n          );\n          this.logger.error(e);\n        }\n      });\n    }\n  }\n}\n", "import {\n  GraphQLError,\n  type ValidationRule,\n  type ValidationContext,\n} from 'graphql';\nimport { ApolloServerValidationErrorCode } from '../errors/index.js';\n\nexport const NoIntrospection: ValidationRule = (\n  context: ValidationContext,\n) => ({\n  Field(node) {\n    if (node.name.value === '__schema' || node.name.value === '__type') {\n      context.reportError(\n        new GraphQLError(\n          'GraphQL introspection is not allowed by Apollo Server, but the query contained __schema or __type. To enable introspection, pass introspection: true to ApolloServer in production',\n          {\n            nodes: [node],\n            extensions: {\n              validationErrorCode:\n                ApolloServerValidationErrorCode.INTROSPECTION_DISABLED,\n            },\n          },\n        ),\n      );\n    }\n  },\n});\n", "import {\n  GraphQLError,\n  type ValidationRule,\n  type ValidationContext,\n  type ASTVisitor,\n} from 'graphql';\nimport { ApolloServerValidationErrorCode } from '../errors/index.js';\n\nexport const DEFAULT_MAX_RECURSIVE_SELECTIONS = 10_000_000;\n\ninterface ExecutableDefinitionInfo {\n  selectionCount: number;\n  fragmentSpreads: Map<string, number>;\n}\n\nclass RecursiveSelectionValidationContext {\n  private readonly fragmentInfo: Map<string, ExecutableDefinitionInfo> =\n    new Map();\n  private readonly operationInfo: Map<string | null, ExecutableDefinitionInfo> =\n    new Map();\n  private currentFragment?: string;\n  private currentOperation?: string | null;\n  private readonly fragmentRecursiveSelectionCount: Map<string, number | null> =\n    new Map();\n\n  constructor(\n    private readonly selectionCountLimit: number,\n    private readonly context: ValidationContext,\n  ) {}\n\n  private getExecutionDefinitionInfo(): ExecutableDefinitionInfo | undefined {\n    if (this.currentFragment !== undefined) {\n      let entry = this.fragmentInfo.get(this.currentFragment);\n      if (!entry) {\n        entry = {\n          selectionCount: 0,\n          fragmentSpreads: new Map(),\n        };\n        this.fragmentInfo.set(this.currentFragment, entry);\n      }\n      return entry;\n    }\n    if (this.currentOperation !== undefined) {\n      let entry = this.operationInfo.get(this.currentOperation);\n      if (!entry) {\n        entry = {\n          selectionCount: 0,\n          fragmentSpreads: new Map(),\n        };\n        this.operationInfo.set(this.currentOperation, entry);\n      }\n      return entry;\n    }\n    return undefined;\n  }\n\n  processSelection(fragmentSpreadName?: string) {\n    const definitionInfo = this.getExecutionDefinitionInfo();\n    if (!definitionInfo) {\n      return;\n    }\n    definitionInfo.selectionCount++;\n    if (fragmentSpreadName !== undefined) {\n      let spreadCount =\n        (definitionInfo.fragmentSpreads.get(fragmentSpreadName) ?? 0) + 1;\n      definitionInfo.fragmentSpreads.set(fragmentSpreadName, spreadCount);\n    }\n  }\n\n  enterFragment(fragment: string) {\n    this.currentFragment = fragment;\n  }\n\n  leaveFragment() {\n    this.currentFragment = undefined;\n  }\n\n  enterOperation(operation: string | null) {\n    this.currentOperation = operation;\n  }\n\n  leaveOperation() {\n    this.currentOperation = undefined;\n  }\n\n  computeFragmentRecursiveSelectionsCount(fragment: string): number {\n    const cachedCount = this.fragmentRecursiveSelectionCount.get(fragment);\n    if (cachedCount === null) {\n      // We set \"fragmentRecursiveSelectionCount\" to \"null\" for a fragment when\n      // we're in the middle of recursing it, so if we encounter it when getting\n      // a fragment spread, that means we've reached a circular reference. We\n      // don't want to error here, as a separate GraphQL validation checks for\n      // this, so we instead pretend the fragment has zero selections.\n      return 0;\n    }\n    if (cachedCount !== undefined) {\n      return cachedCount;\n    }\n    this.fragmentRecursiveSelectionCount.set(fragment, null);\n    // If \"definitionInfo\" is \"undefined\", it means that the fragment spread\n    // refers to a named fragment that has zero selections or doesn't exist. We\n    // don't want to error here, as a separate GraphQL validation checks for\n    // this, so we instead pretend the fragment always has zero selections.\n    const definitionInfo = this.fragmentInfo.get(fragment);\n    let count = 0;\n    if (definitionInfo) {\n      count = definitionInfo.selectionCount;\n      for (const [fragment, spreadCount] of definitionInfo.fragmentSpreads) {\n        count +=\n          spreadCount * this.computeFragmentRecursiveSelectionsCount(fragment);\n      }\n    }\n    this.fragmentRecursiveSelectionCount.set(fragment, count);\n    return count;\n  }\n\n  private reportError(operation: string | null) {\n    const operationName = operation\n      ? `Operation \"${operation}\"`\n      : 'Anonymous operation';\n    this.context.reportError(\n      new GraphQLError(\n        `${operationName} recursively requests too many selections.`,\n        {\n          nodes: [],\n          extensions: {\n            validationErrorCode:\n              ApolloServerValidationErrorCode.MAX_RECURSIVE_SELECTIONS_EXCEEDED,\n          },\n        },\n      ),\n    );\n  }\n\n  checkLimitExceeded() {\n    for (const [operation, definitionInfo] of this.operationInfo) {\n      let count = definitionInfo.selectionCount;\n      for (const [fragment, spreadCount] of definitionInfo.fragmentSpreads) {\n        count +=\n          spreadCount * this.computeFragmentRecursiveSelectionsCount(fragment);\n      }\n      if (count > this.selectionCountLimit) {\n        this.reportError(operation);\n      }\n    }\n  }\n}\n\n/**\n * Creates a GraphQL validation rule that imposes a limit on the number of\n * recursive selections in an operation. This is the number of selections you\n * would encounter if named fragments were inserted inline whenever a fragment\n * spread referencing them were encountered.\n *\n * @param limit The maximum number of recursive selections in any operation.\n */\nexport function createMaxRecursiveSelectionsRule(\n  limit: number,\n): ValidationRule {\n  return (context: ValidationContext): ASTVisitor => {\n    const selectionContext = new RecursiveSelectionValidationContext(\n      limit,\n      context,\n    );\n    return {\n      Field() {\n        selectionContext.processSelection();\n      },\n      InlineFragment() {\n        selectionContext.processSelection();\n      },\n      FragmentSpread(node) {\n        selectionContext.processSelection(node.name.value);\n      },\n      FragmentDefinition: {\n        enter(node) {\n          selectionContext.enterFragment(node.name.value);\n        },\n        leave() {\n          selectionContext.leaveFragment();\n        },\n      },\n      OperationDefinition: {\n        enter(node) {\n          selectionContext.enterOperation(node.name?.value ?? null);\n        },\n        leave() {\n          selectionContext.leaveOperation();\n        },\n      },\n      Document: {\n        leave() {\n          selectionContext.checkLimitExceeded();\n        },\n      },\n    };\n  };\n}\n", "import {\n  type ExtractModuleContext,\n  type Facade,\n  type FacadeModule,\n  type FacadeModuleFactory,\n} from './interfaces.js';\n\nexport type FacadeModuleFactoryCb<TConfig, TModule extends FacadeModule> = (facade: Facade<[TModule]>, config: TConfig) => void;\n\nexport const createFacadeModuleFactory = <TConfig = any, TModule extends FacadeModule = FacadeModule>(moduleName: string, fn: FacadeModuleFactoryCb<TConfig, TModule>) => {\n  const facadeModuleFactory: FacadeModuleFactory<TConfig, ExtractModuleContext<TModule>> = (config) => {\n    const facadeModule = ((facade) => fn(facade, config)) as TModule;\n    facadeModule.moduleName = moduleName;\n    return facadeModule;\n  };\n  facadeModuleFactory.moduleName = moduleName;\n  return facadeModuleFactory;\n};\n\nexport type FacadeModuleCb<TModule extends FacadeModule> = (facade: Facade<[TModule]>) => void;\n\nexport const createFacadeModule = <TModule extends FacadeModule = FacadeModule>(moduleName: string, module: FacadeModuleCb<TModule>): TModule => {\n  const facadeModule = ((facade: any) => module(facade)) as TModule;\n  facadeModule.moduleName = moduleName;\n  return facadeModule;\n};\n\nexport const decomposeError = (error: any) => {\n  const { name, code, message, details, error_description, stack } = error;\n  return { name, code, message, details, error_description, stack };\n}", "import { buildSubgraphSchema } from '@apollo/subgraph';\nimport { parse } from 'graphql';\nimport { printSchema } from 'graphql';\nimport { resolvers } from './resolvers.js';\nimport { schema } from './schema.js';\n\n// TODO There is currently no way of building a federated schema from GraphQLSchema Object\n// See https://github.com/apollographql/apollo-server/pull/4310\nexport const FederatedExampleSchema = buildSubgraphSchema([{\n  typeDefs: parse(printSchema(schema)),\n  resolvers\n}]);\n", "import { type Resolvers  } from './schema.generated.js';\n\nexport const resolvers: Resolvers = {\n  Query: {\n\n    status: async (_: any, __: any, ctx: any) => ({\n      running: ctx.facade.listening\n    })\n  }\n};\n", "import { GraphQLObjectType, GraphQLSchema } from 'graphql';\nimport { FacadeStatusType } from './types.js';\n\nexport const FacadeStatusQueryType = new GraphQLObjectType({\n  name: 'Query',\n  description: 'The root of all queries',\n  fields: {\n    status: {\n      type: FacadeStatusType\n    },\n  }\n});\n\nexport const schema = new GraphQLSchema({\n  query: FacadeStatusQueryType,\n});\n", "import { GraphQLObjectType, GraphQLNonNull, GraphQLBoolean } from 'graphql';\n\n\nexport const FacadeStatusType = new GraphQLObjectType({\n  name: 'FacadeStatusType',\n  description: 'The facade status',\n  fields: {\n    running: {\n      type: new GraphQLNonNull(GraphQLBoolean)\n    },\n  },\n});\n", "import {  createFacadeModule } from '../../utils.js';\n\nimport { type FacadeStatusModule } from './interfaces.js';\nimport { FederatedExampleSchema } from './gql/index.js';\n\nexport const facadeStatusModule = createFacadeModule<FacadeStatusModule>('facade-status', (facade) => {\n  facade.addApolloService({\n    name: 'status',\n    schema: FederatedExampleSchema\n  });\n});\n", "import mount from 'koa-mount';\nimport { createFacadeModuleFactory } from '../../utils.js';\nimport { FederatedResourceSchema } from './gql/federation.js';\nimport { createOIDC } from './oidc/index.js';\nimport { type IdentityConfig, type IdentityModule } from './interfaces.js';\nimport { IdentitySrvGrpcClient } from './grpc/index.js';\nimport { createOAuth } from './oauth/oauth.js';\n\nexport { type OIDCConfig } from './oidc/index.js';\nexport type { IdentityModule, IdentityConfig, IdentityContext } from './interfaces.js';\n\nexport const identityModule = createFacadeModuleFactory<IdentityConfig, IdentityModule>('identity', (facade, config) => {\n  const identitySrvClient = new IdentitySrvGrpcClient(config.config.client.address, {\n    ...config.config.client,\n    logger: facade.logger,\n  });\n\n  if (config.oidc) {\n    const {provider, router} = createOIDC({\n      identitySrvClient,\n      env: facade.env,\n      logger: facade.logger,\n      config: config.oidc\n    });\n    facade.koa.use(router.routes());\n    facade.koa.use(mount(provider));\n  }\n\n  if (config.oauth) {\n    facade.koa.use(createOAuth().routes());\n  }\n\n  const identity = {\n    client: identitySrvClient\n  };\n\n  facade.koa.context.identitySrvClient = identitySrvClient;\n\n  facade.addApolloService({\n    name: 'identity',\n    schema: FederatedResourceSchema(config.config)\n  });\n\n  facade.koa.use(async (ctx, next) => {\n    ctx.identity = identity;\n    await next();\n  });\n});\n", "import { protoMetadata as metaPackageIoRestorecommerceUser } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/user.js';\nimport { protoMetadata as metaPackageIoRestorecommerceRole } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/role.js';\nimport { protoMetadata as metaPackageIoRestorecommerceAuthentication_log } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/authentication_log.js';\nimport { protoMetadata as metaPackageIoRestorecommerceToken } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/token.js';\nimport { protoMetadata as metaPackageIoRestorecommerceOauth } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/oauth.js';\nimport { type ProtoMetadata, registerPackagesRecursive } from '../../../gql/protos/index.js';\nimport { registerProtoMeta } from '@restorecommerce/kafka-client';\n\nexport const subServices: ProtoMetadata[] = [\n  metaPackageIoRestorecommerceUser,\n  metaPackageIoRestorecommerceRole,\n  metaPackageIoRestorecommerceAuthentication_log,\n  metaPackageIoRestorecommerceToken,\n  metaPackageIoRestorecommerceOauth,\n];\n\nexport const registerTypings = () => {\n  registerPackagesRecursive(...subServices);\n  registerProtoMeta(...subServices);\n};\n", "import { GraphQLResolverMap } from '@apollo/subgraph/dist/schema-helper/resolverMap.js';\nimport { type GrpcClientConfig } from '@restorecommerce/grpc-client';\nimport { type GraphQLSchema, type GraphQLFieldResolver, type GraphQLScalarType } from 'graphql';\nexport {\n  type ProtoMetadata,\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/resource_base.js';\n\nexport const authSubjectType = '.io.restorecommerce.auth.Subject';\n\nexport type ProtoMetaMessageOptions = {\n  options?: {\n    [key: string]: any;\n  };\n  fields?: {\n    [key: string]: {\n      [key: string]: any;\n    };\n  };\n  oneof?: {\n    [key: string]: {\n      [key: string]: any;\n    };\n  };\n  nested?: {\n    [key: string]: ProtoMetaMessageOptions;\n  };\n};\n\nexport interface BlackListWhiteListConfig {\n  whitelist?: string[];\n  blacklist?: string[];\n}\n\nexport interface MethodConfig {\n  methods?: BlackListWhiteListConfig;\n}\n\nexport interface ServiceConfig {\n  client: Omit<GrpcClientConfig, 'logger'> & { address: string };\n  [key: string]: any;\n}\n\nexport interface SubSpaceServiceConfig extends ServiceConfig {\n  root: boolean;\n}\n\nexport type ServiceClient<Context extends Pick<Context, Key>, Key extends keyof Context, T extends Record<string, any>> = {\n  [V in Key]: {\n    client: T;\n  };\n};\n\nexport type FederatedSchemaWithResolvers = {\n  federatedSchema: GraphQLSchema;\n  resolvers: GraphQLResolverMap<any>;\n};\n", "import {\n  GraphQLBoolean,\n  type GraphQLEnumTypeConfig,\n  type GraphQLEnumValueConfigMap,\n  type GraphQLFieldConfigMap,\n  GraphQLFloat,\n  type GraphQLInputFieldConfigMap,\n  type GraphQLInputObjectTypeConfig,\n  type GraphQLInputType,\n  GraphQLInt,\n  GraphQLList,\n  GraphQLNonNull,\n  type GraphQLNullableType,\n  GraphQLObjectType,\n  type GraphQLObjectTypeConfig,\n  type GraphQLOutputType,\n  GraphQLString,\n  GraphQLEnumType,\n  GraphQLInputObjectType,\n  GraphQLScalarType\n} from 'graphql';\n// import GraphQLUpload from 'graphql-upload/GraphQLUpload.js';\nimport GraphQLUpload from 'graphql-upload/GraphQLUpload.mjs';\nimport { capitalizeProtoName } from './utils.js';\nimport { authSubjectType, type ProtoMetadata, type ProtoMetaMessageOptions } from './types.js';\nimport {\n  type DescriptorProto,\n  type EnumDescriptorProto,\n  type FieldDescriptorProto, FieldDescriptorProto_Label,\n  FieldDescriptorProto_Type, type MethodDescriptorProto\n} from 'ts-proto-descriptors';\nimport type { Resolver } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/options.js';\n\nexport interface TypingData {\n  output: GraphQLObjectType | GraphQLEnumType | GraphQLScalarType;\n  input: GraphQLInputObjectType | GraphQLEnumType | GraphQLScalarType;\n  meta: DescriptorProto | EnumDescriptorProto;\n  processor?: any;\n}\n\nexport const registeredTypings = new Map<string, TypingData>();\n\nexport const scalarTypes = ['Boolean', 'Int', 'Float', 'String', 'ID', 'Upload'];\nconst typeNameAndNameSpaceMapping = new Map<string, string>();\nconst registeredEnumTypes: string[] = [];\nconst MapScalar = new GraphQLScalarType({\n  name: 'MapScalar',\n});\n\nconst GoogleProtobufAnyValue = new GraphQLScalarType({\n  name: 'GoogleProtobufAnyValue'\n});\n\nconst protobufAnyFields = {\n  typeUrl: {\n    type: GraphQLString\n  },\n  value: {\n    type: GoogleProtobufAnyValue\n  }\n};\n\nconst GoogleProtobufAny = new GraphQLObjectType({\n  name: 'GoogleProtobufAny',\n  fields: protobufAnyFields\n});\n\nexport const IGoogleProtobufAny = new GraphQLInputObjectType({\n  name: 'IGoogleProtobufAny',\n  fields: protobufAnyFields\n});\n\nconst DateTime = new GraphQLScalarType({\n  name: 'DateTime',\n  description: `A date-time string at UTC, such as 2007-12-03T10:15:30Z,\n                compliant with the date-time format outlined in section 5.6 of\n                the RFC 3339 profile of the ISO 8601 standard for representation\n                of dates and times using the Gregorian calendar.`,\n});\n\nconst IDateTime = new GraphQLScalarType({\n  name: 'IDateTime',\n  description: `A date-time string at UTC, such as 2007-12-03T10:15:30Z,\n                compliant with the date-time format outlined in section 5.6 of\n                the RFC 3339 profile of the ISO 8601 standard for representation\n                of dates and times using the Gregorian calendar.`,\n});\n\nconst googleProtobufAnyName = '.google.protobuf.Any';\nconst googleProtobufTimestampName = '.google.protobuf.Timestamp';\n\nconst Mutate = ['Create', 'Update', 'Upsert'];\nconst CRUD_TRAVERSAL_OP_NAMES = ['Cretae', 'Update', 'Upsert', 'Delete', 'Read', 'Traversal'];\n\nconst TodoScalar = new GraphQLScalarType({\n  name: 'TodoScalar',\n  serialize: () => {\n    throw Error('Not Implemented!');\n  },\n  parseValue: () => {\n    throw Error('Not Implemented!');\n  }\n});\n\nexport const clearRegistry = () => {\n  registeredTypings.clear();\n};\n\nexport const getRegisteredEnumTypings = (): string[] => {\n  return registeredEnumTypes;\n};\n\nexport const getNameSpaceTypeName = (typeName: string): string | undefined => {\n  return typeNameAndNameSpaceMapping.get(typeName);\n};\n\nexport const getTyping = (type: string): TypingData | undefined => {\n  return registeredTypings.get(type);\n};\n\n// Iterate through the object and collect list of all enum types with their keys / paths\nexport const recursiveEnumCheck = (typeName: string, enumMap: Map<string, string>, prevFieldName: string, traversedFields: string[]): Map<string, string> => {\n  if (!scalarTypes.includes(typeName)) {\n    if (typeName && typeName.startsWith('[') && typeName.endsWith('!]')) {\n      typeName = typeName.substring(1, typeName.length - 2);\n    }\n    const objectNameSpace = getNameSpaceTypeName(typeName);\n    if (objectNameSpace) {\n      const objectType = getTyping(objectNameSpace);\n      if (objectType?.input && (registeredEnumTypes.indexOf(objectType.input.toString()) > -1)) {\n        enumMap.set(objectType?.input.toString(), prevFieldName);\n        prevFieldName = '';\n      } else if (objectType?.input) {\n        // get nested fields from this object and check recursively\n        const gqlFields = (objectType.input as GraphQLInputObjectType).getFields();\n        if (gqlFields) {\n          const fieldNames = Object.keys(gqlFields);\n          for (let fieldName of fieldNames) {\n            let fieldType = gqlFields[fieldName].type.toString();\n            // if fieldType is not basic type, get the object and make recursive check till no more objects are found\n            if (scalarTypes.indexOf(fieldType) <= -1) {\n              // check if fieldName already exists in the traversedFields (to avoid circular reference for infinite loop)\n              if (traversedFields.indexOf(fieldName) <= -1) {\n                traversedFields.push(fieldName);\n              } else if (traversedFields.indexOf(fieldName) > -1) {\n                // skip loop as this GQL type is already traversed\n                continue;\n              }\n              recursiveEnumCheck(fieldType, enumMap, fieldName, traversedFields);\n            }\n          }\n        }\n      }\n    }\n  }\n  return enumMap;\n};\n\nconst resolveMeta = <T extends GraphQLOutputType | GraphQLInputType>(\n  key: string | undefined,\n  field: Pick<FieldDescriptorProto, 'type' | 'typeName' | 'label'>,\n  rootObjType: string,\n  objName: string | undefined,\n  input: boolean\n): T | null => {\n  let result: GraphQLNullableType;\n\n  switch (field.type) {\n    case FieldDescriptorProto_Type.TYPE_BOOL:\n      result = GraphQLBoolean;\n      break;\n    case FieldDescriptorProto_Type.TYPE_STRING:\n      result = GraphQLString;\n      break;\n    case FieldDescriptorProto_Type.TYPE_ENUM:\n    case FieldDescriptorProto_Type.TYPE_MESSAGE:\n      const objType = field.typeName!;\n\n      if (objType === googleProtobufAnyName) {\n        if (input) {\n          result = IGoogleProtobufAny;\n          break;\n        }\n        result = GoogleProtobufAny;\n        break;\n      }\n\n      if (objType === googleProtobufTimestampName) {\n        if (input) {\n          result = IDateTime;\n          break;\n        }\n        result = DateTime;\n        break;\n      }\n\n      if (!registeredTypings.has(objType)) {\n        throw new Error('Typing \\'' + objType + '\\' not registered for key \\'' + key + '\\' in object: ' + objName);\n      }\n\n      let typingData = registeredTypings.get(objType)!;\n      let mapEntry = false;\n      if ((typingData.meta as DescriptorProto).options) {\n        mapEntry = !!(typingData.meta as DescriptorProto).options?.mapEntry;\n      }\n\n      // TODO Actually unroll maps into entries\n      if (mapEntry) {\n        return MapScalar as any;\n      }\n\n      if (!input) {\n        result = typingData.output;\n        break;\n      }\n\n      if (objType === authSubjectType) {\n        return null;\n      }\n\n      result = typingData.input;\n      break;\n    case FieldDescriptorProto_Type.TYPE_BYTES:\n      if (input) {\n        // TODO Why can't it be nullable?\n        result = GraphQLUpload as any;\n        break;\n      }\n      // TODO Output Buffer\n      result = TodoScalar;\n      break;\n    case FieldDescriptorProto_Type.TYPE_INT32:\n    case FieldDescriptorProto_Type.TYPE_UINT32:\n    case FieldDescriptorProto_Type.TYPE_INT64:\n    case FieldDescriptorProto_Type.TYPE_UINT64:\n    case FieldDescriptorProto_Type.TYPE_SINT32:\n    case FieldDescriptorProto_Type.TYPE_SINT64:\n      result = GraphQLInt;\n      break;\n    case FieldDescriptorProto_Type.TYPE_DOUBLE:\n    case FieldDescriptorProto_Type.TYPE_FLOAT:\n    case FieldDescriptorProto_Type.TYPE_FIXED64:\n    case FieldDescriptorProto_Type.TYPE_FIXED32:\n    case FieldDescriptorProto_Type.TYPE_SFIXED32:\n    case FieldDescriptorProto_Type.TYPE_SFIXED64:\n      result = GraphQLFloat;\n      break;\n    default:\n      throw new Error('unknown typing type \\'' + field.type! + '\\' for key \\'' + key + '\\' in: ' + objName);\n  }\n\n  if (field.label === FieldDescriptorProto_Label.LABEL_REPEATED) {\n    result = new GraphQLList(new GraphQLNonNull(result));\n  }\n\n  if (field.label === FieldDescriptorProto_Label.LABEL_REQUIRED) {\n    result = new GraphQLNonNull(result);\n  }\n\n  return result as any;\n};\n\nconst ModeType = new GraphQLEnumType({\n  name: 'ModeType',\n  values: {\n    CREATE: {\n      value: 'CREATE'\n    },\n    UPDATE: {\n      value: 'UPDATE'\n    },\n    UPSERT: {\n      value: 'UPSERT'\n    },\n  }\n});\n\nexport const registerTyping = (\n  protoPackage: string,\n  message: DescriptorProto,\n  methodDef: MethodDescriptorProto[],\n  opts?: Omit<Readonly<GraphQLObjectTypeConfig<any, any>>, 'fields'>,\n  inputOpts?: Omit<Readonly<GraphQLInputObjectTypeConfig>, 'fields'>,\n  messageOptions?: ProtoMetaMessageOptions\n) => {\n  let insertMode = false;\n  let crudOperation = false;\n  const type = (protoPackage.startsWith('.') ? '' : '.') + protoPackage + '.' + message.name!;\n  if (methodDef && methodDef.length > 0) {\n    for (let method of methodDef) {\n      // if method def is Create, Read / Upsert and input types of method and message type are equal\n      // then update input type to include `mode` parameter\n      if ((Mutate.indexOf(method.name) > -1) && type === method.inputType) {\n        insertMode = true;\n      }\n      // add scope\n      if ((CRUD_TRAVERSAL_OP_NAMES.indexOf(method.name) > -1) && type === method.inputType) {\n        crudOperation = true;\n      }\n    }\n  }\n\n  if (type === googleProtobufAnyName) {\n    // Do not register any type\n    typeNameAndNameSpaceMapping.set(GoogleProtobufAny.name, type);\n    registeredTypings.set(type, {\n      output: GoogleProtobufAny,\n      input: IGoogleProtobufAny,\n      meta: message\n    });\n  }\n\n  if (type === googleProtobufTimestampName) {\n    typeNameAndNameSpaceMapping.set(DateTime.name, type);\n    registeredTypings.set(type, {\n      output: DateTime,\n      input: IDateTime,\n      meta: message\n    });\n  }\n\n  if (registeredTypings.has(type)) {\n    // TODO Log debug \"Typings for object are already registered\"\n    return;\n  }\n\n  const name = opts?.name || capitalizeProtoName(type);\n  const inputName = inputOpts?.name || 'I' + name;\n\n  const fields = (): GraphQLFieldConfigMap<any, any> => {\n    const result: GraphQLFieldConfigMap<any, any> = {};\n\n    message.field?.forEach(field => {\n      // TODO Union types\n      const resolvedMeta = resolveMeta<GraphQLOutputType>(field.jsonName!, field, type, name, false);\n\n      if (resolvedMeta !== null) {\n        result[field.jsonName!] = {\n          type: resolvedMeta\n        };\n      }\n\n      if (messageOptions && messageOptions.fields) {\n        if (field.name in messageOptions.fields) {\n          const data = messageOptions.fields[field.name].resolver as Resolver;\n          const resolved = resolveMeta(data.fieldName, {\n            type: FieldDescriptorProto_Type.TYPE_MESSAGE,\n            label: field.label,\n            typeName: data.targetType as string\n          }, type, name, false);\n          if (resolvedMeta !== null) {\n            result[data.fieldName!] = {\n              type: resolved as GraphQLOutputType\n            };\n          }\n        }\n      }\n    });\n\n    return result;\n  };\n\n  const inputFields = (): GraphQLInputFieldConfigMap => {\n    const result: GraphQLInputFieldConfigMap = {};\n\n    message.field?.forEach(field => {\n      // TODO Union types\n      const resolvedMeta = resolveMeta(field.jsonName!, field, type, name, true);\n\n      if (resolvedMeta !== null) {\n        result[field.jsonName!] = {\n          type: resolvedMeta as GraphQLInputType\n        };\n      }\n    });\n\n    if (insertMode) {\n      result['mode'] = {\n        type: ModeType\n      };\n    }\n    if (crudOperation) {\n      // add scope to all mutations / queries\n      if (!result.scope) {\n        result['scope'] = {\n          description: 'target scope',\n          type: GraphQLString\n        };\n      }\n    }\n    return result;\n  };\n\n  const resultObj = new GraphQLObjectType({\n    ...(opts || { name }),\n    fields,\n  });\n\n  const resultInputObj = new GraphQLInputObjectType({\n    ...(inputOpts || { name: inputName }),\n    fields: inputFields,\n  });\n\n  typeNameAndNameSpaceMapping.set(resultInputObj.name, type);\n  registeredTypings.set(type, {\n    output: resultObj,\n    input: resultInputObj,\n    meta: message\n  });\n};\n\nexport const registerEnumTyping = <T = { [key: string]: any }>(\n  protoPackage: string,\n  message: EnumDescriptorProto,\n  opts?: Omit<Readonly<GraphQLEnumTypeConfig>, 'values'>\n) => {\n  const type = (protoPackage.startsWith('.') ? '' : '.') + protoPackage + '.' + message.name!;\n  if (registeredTypings.has(type)) {\n    // TODO Log debug \"Typings for enum are already registered\"\n    return;\n  }\n\n  const values: GraphQLEnumValueConfigMap = {};\n\n  message.value?.forEach(entry => {\n    values[entry.name!] = {\n      value: entry.number!\n    };\n  });\n\n  const name = opts?.name || capitalizeProtoName(type);\n\n  const result = new GraphQLEnumType({\n    ...(opts || { name }),\n    values\n  });\n\n  registeredEnumTypes.push(name);\n  typeNameAndNameSpaceMapping.set(name, type);\n  registeredTypings.set(type, {\n    output: result,\n    input: result,\n    meta: message\n  });\n};\n\nconst registerMessageTypesRecursive = (\n  packageName: string,\n  methodDef: MethodDescriptorProto[],\n  options: ProtoMetadata['options'] | undefined,\n  ...types: DescriptorProto[]\n) => {\n  types.forEach(m => {\n    registerTyping(packageName, m, methodDef, undefined, undefined, options && options.messages && options.messages[m.name]);\n\n    if (m.enumType) {\n      m.enumType.forEach((enumType) => {\n        registerEnumTyping(packageName + '.' + m.name, enumType);\n      });\n    }\n\n    if (m.nestedType) {\n      registerMessageTypesRecursive(packageName + '.' + m.name, methodDef, options, ...m.nestedType);\n    }\n  });\n};\n\nexport const registerPackagesRecursive = (...protoMetadata: ProtoMetadata[]) => {\n  protoMetadata.forEach(meta => {\n    meta.dependencies && registerPackagesRecursive(...meta.dependencies);\n\n    meta.fileDescriptor.messageType && registerMessageTypesRecursive(\n      meta.fileDescriptor.package!,\n      meta.fileDescriptor.service[0]?.method,\n      meta.options,\n      ...meta.fileDescriptor.messageType\n    );\n\n    meta.fileDescriptor.enumType?.forEach((m) => {\n      registerEnumTyping(meta.fileDescriptor.package!, m);\n    });\n\n    Object.keys(meta.references).forEach(key => {\n      registeredTypings.get(key)!.processor = meta.references[key];\n    });\n  });\n};\n\n", "// @ts-check\n\nimport { GraphQLError, GraphQLScalarType } from \"graphql\";\n\nimport Upload from \"./Upload.mjs\";\n\n/** @typedef {import(\"./processRequest.mjs\").FileUpload} FileUpload */\n\n/**\n * A GraphQL scalar `Upload` that can be used in a\n * [`GraphQLSchema`](https://graphql.org/graphql-js/type/#graphqlschema). It\u2019s\n * value in resolvers is a promise that resolves\n * {@link FileUpload file upload details} for processing and storage.\n * @example\n * A schema built using the function\n * [`makeExecutableSchema`](https://www.graphql-tools.com/docs/api/modules/schema_src#makeexecutableschema)\n * from [`@graphql-tools/schema`](https://npm.im/@graphql-tools/schema):\n *\n * ```js\n * import { makeExecutableSchema } from \"@graphql-tools/schema/makeExecutableSchema\";\n * import GraphQLUpload from \"graphql-upload/GraphQLUpload.mjs\";\n *\n * const schema = makeExecutableSchema({\n *   typeDefs: `\n *     scalar Upload\n *   `,\n *   resolvers: {\n *     Upload: GraphQLUpload,\n *   },\n * });\n * ```\n * @example\n * A manually constructed schema with an image upload mutation:\n *\n * ```js\n * import { GraphQLBoolean, GraphQLObjectType, GraphQLSchema } from \"graphql\";\n * import GraphQLUpload from \"graphql-upload/GraphQLUpload.mjs\";\n *\n * const schema = new GraphQLSchema({\n *   mutation: new GraphQLObjectType({\n *     name: \"Mutation\",\n *     fields: {\n *       uploadImage: {\n *         description: \"Uploads an image.\",\n *         type: GraphQLBoolean,\n *         args: {\n *           image: {\n *             description: \"Image file.\",\n *             type: GraphQLUpload,\n *           },\n *         },\n *         async resolve(parent, { image }) {\n *           const { filename, mimetype, createReadStream } = await image;\n *           const stream = createReadStream();\n *           // Promisify the stream and store the file, then\u2026\n *           return true;\n *         },\n *       },\n *     },\n *   }),\n * });\n * ```\n * @example\n * In a [TypeScript](https://typescriptlang.org) module, how to import the type\n * for the {@link FileUpload file upload details} that the\n * {@linkcode GraphQLUpload} scalar resolver value promise resolves:\n *\n * ```ts\n * import type { FileUpload } from \"graphql-upload/processRequest.mjs\";\n * ```\n */\nconst GraphQLUpload = new GraphQLScalarType({\n  name: \"Upload\",\n  description: \"The `Upload` scalar type represents a file upload.\",\n  parseValue(value) {\n    if (value instanceof Upload) return value.promise;\n    throw new GraphQLError(\"Upload value invalid.\");\n  },\n  parseLiteral(node) {\n    throw new GraphQLError(\"Upload literal unsupported.\", { nodes: node });\n  },\n  serialize() {\n    throw new GraphQLError(\"Upload serialization unsupported.\");\n  },\n});\n\nexport default GraphQLUpload;\n", "// @ts-check\n\n/**\n * @import GraphQLUpload from \"./GraphQLUpload.mjs\"\n * @import processRequest, { FileUpload } from \"./processRequest.mjs\"\n */\n\n/**\n * A file expected to be uploaded as it was declared in the `map` field of a\n * [GraphQL multipart request](https://github.com/jaydenseric/graphql-multipart-request-spec).\n * The {@linkcode processRequest} function places references to an instance of\n * this class wherever the file is expected in the GraphQL operation. The scalar\n * {@linkcode GraphQLUpload} derives it\u2019s value from {@linkcode Upload.promise}.\n */\nexport default class Upload {\n  constructor() {\n    /**\n     * Promise that resolves file upload details. This should only be utilized\n     * by {@linkcode GraphQLUpload}.\n     * @type {Promise<FileUpload>}\n     */\n    this.promise = new Promise((resolve, reject) => {\n      /**\n       * Resolves the upload promise with the file upload details. This should\n       * only be utilized by {@linkcode processRequest}.\n       * @param {FileUpload} file File upload details.\n       */\n      this.resolve = (file) => {\n        /**\n         * The file upload details, available when the\n         * {@linkcode Upload.promise} resolves. This should only be utilized by\n         * {@linkcode processRequest}.\n         * @type {FileUpload | undefined}\n         */\n        this.file = file;\n\n        resolve(file);\n      };\n\n      /**\n       * Rejects the upload promise with an error. This should only be\n       * utilized by {@linkcode processRequest}.\n       * @param {Error} error Error instance.\n       */\n      this.reject = reject;\n    });\n\n    // Prevent errors crashing Node.js, see:\n    // https://github.com/nodejs/node/issues/20392\n    this.promise.catch(() => {});\n  }\n}\n", "import _ from 'lodash';\nimport { type GraphQLInputObjectType } from 'graphql';\nimport { type TypingData, scalarTypes, recursiveEnumCheck, getNameSpaceTypeName, getTyping } from './registry.js';\nimport { Resource } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/resource_base.js';\nimport { Subject } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/auth.js';\n\nexport const capitalizeProtoName = (name: string): string => {\n  return name.replace(/(?:\\.|^|_)(\\w)/g, v => v.toUpperCase()).replace(/[._]/g, '');\n};\n\n// converts camelcase entity name to snake case\nexport const convertyCamelToSnakeCase = (entity: string): string => {\n  return entity.replace(/(?:^|\\.?)([A-Z])/g, (x, y) => { return '_' + y.toLowerCase(); }).replace(/^_/, '');\n};\n\nexport const getKeys = (obj: any): string[] => {\n  const set = new Set<string>();\n  if (obj) {\n    const keys = Object.keys(obj);\n    for (const key of keys) {\n      if (typeof obj[key] === 'string') {\n        set.add(obj[key]);\n      } else if (Array.isArray(obj[key])) {\n        for (const value of obj[key]) {\n          set.add(value);\n        }\n      }\n    }\n  }\n  return Array.from(set);\n};\n\nexport const decodeBufferFields = (items: any[], bufferFields: string[]): any => {\n  if (bufferFields && bufferFields.length > 0 && items && items.length > 0) {\n    for (let item of items) {\n      if (item && item.payload) {\n        const existingBufferFields = _.intersection(Object.keys(item.payload), bufferFields);\n        for (let bufferField of existingBufferFields) {\n          if (item.payload[bufferField] && item.payload[bufferField].value && item.payload[bufferField].value instanceof Buffer) {\n            item.payload[bufferField].value = JSON.parse(item.payload[bufferField].value.toString());\n          }\n        }\n      }\n    }\n    return items;\n  } else {\n    return items;\n  }\n};\n\n/**\n * recursively find the id and updates the object with given value, this function\n * also takes care to handle if there is an array at any position in the path\n * @param id property of the object\n * @param val value to be updated in Object\n * @param obj Object\n */\nconst updateJSON = (id: string, value: any, obj: any) => {\n  for (const [k, v] of Object.entries(obj)) {\n    if (k === id) {\n      const foundObj = value.find((e: any) => e.name === obj[k]);\n      if (foundObj) {\n        obj[k] = foundObj.number;\n      }\n    } else if (typeof v === 'object') {\n      updateJSON(id, value, v);\n    }\n  }\n};\n\n/**\n * converts enum string values to integers reading from the inputTyping\n * @param TypingData input typing\n * @param req request object from which the enum strings to be replaced\n */\nexport const convertEnumToInt = (inputTyping: TypingData, req: any): any => {\n  let enumMap: Map<string, string> = new Map();\n  // enumMap populated with key as enum name space type and value as the path (to replace from request object)\n  if (inputTyping) {\n    const gqlInputObject = inputTyping.input;\n    const gqlFields = (gqlInputObject as GraphQLInputObjectType).getFields();\n    if (gqlFields) {\n      const fieldNames = Object.keys(gqlFields);\n      for (let fieldName of fieldNames) {\n        // gql fieldName from input is of format [IIoRestorecommerceResourcebaseSort!]\n        // below check is to remove `[` and `!]`\n        let fieldType = gqlFields[fieldName].type.toString();\n        if (fieldType.startsWith('[') && fieldType.endsWith('!]')) {\n          fieldType = fieldType.substring(1, fieldType.length - 2);\n        }\n        // if fieldType is not basic type, then check if its fieldType belongs to Enum\n        // if not get the object and make recursive check till no more objects are found\n        if (scalarTypes.indexOf(fieldType) <= -1) {\n          enumMap = recursiveEnumCheck(fieldType, enumMap, fieldName, []);\n        }\n      }\n    }\n  }\n\n  for (let [key, val] of enumMap) {\n    const enumNameSpace = getNameSpaceTypeName(key);\n    if (enumNameSpace && typeof enumNameSpace === 'string') {\n      const enumTyping = getTyping(enumNameSpace);\n      const enumIntMapping = (enumTyping?.meta as any).value;\n      if (enumIntMapping && _.isArray(enumIntMapping) && enumIntMapping.length > 0) {\n        // val refers to property name\n        updateJSON(val, enumIntMapping, req);\n      }\n    }\n  }\n  return req;\n};\n\nexport const capitalize = (s: string): string => {\n  return s.substring(0, 1).toUpperCase() + s.substring(1);\n};\n\nexport const snakeToCamel = (s: string): string => {\n  return s\n    .split('_')\n    .map((word, i) => {\n      if (i === 0) {\n        // if first symbol is \"_\" then skip it\n        return word ? word[0] + word.substring(1).toLowerCase() : '';\n      } else {\n        return capitalize(word.toLowerCase());\n      }\n    })\n    .join('');\n};\n\nexport const camelToSnake = (serviceName: string) => {\n  // convert camel case to snake case\n  serviceName = serviceName.replace(/(?:^|\\.?)([A-Z])/g, (x, y) => { return '_' + y.toLowerCase(); }).replace(/^_/, '');\n  return serviceName;\n};\n\nexport const getServiceName = (serviceName: string) => {\n  return serviceName.endsWith('Service') ? camelToSnake(serviceName.substr(0, serviceName.length - 7)) : camelToSnake(serviceName);\n};\n\nexport const camelCase = (s: string): string => s.substring(0, 1).toLowerCase() + s.substring(1);\n\nlet useSubscriptions = false;\nexport const setUseSubscriptions = (value: boolean) => useSubscriptions = value;\nexport const getUseSubscriptions = () => useSubscriptions;\n\nexport class LatentBuffer<T, TResult> {\n  private buffer?: Array<T>;\n  private promise?: Promise<TResult>;\n  private timeout?: NodeJS.Timeout;\n  constructor(\n    private readonly callback?: (buffer: Array<T>) => TResult,\n  ) {}\n\n  push(...items: T[]) {\n    this.buffer ??= [];\n    this.timeout?.refresh();\n    return this.buffer.push(...items);\n  }\n  \n  async await(latency = 50) {\n    this.promise ??= new Promise((resolve: (buffer: Array<T>) => void) => {\n      this.timeout ??= setTimeout(() => resolve(this.buffer), latency);\n    }).then(this.callback);\n    return await this.promise;\n  }\n\n  reset() {\n    this.buffer = undefined;\n    this.promise = undefined;\n    this.timeout = undefined;\n  }\n}\n\nexport class LatentResourceMapBuffer extends LatentBuffer<string, Promise<Map<string, Resource>>>{};\nexport interface ResolverContext {\n  subject: Subject,\n  latent: Record<string, LatentResourceMapBuffer>;\n  [key: string]: any;\n}", "import {\n  type GraphQLInputField,\n  GraphQLList,\n  GraphQLNonNull,\n  GraphQLObjectType,\n  type GraphQLOutputType,\n  GraphQLEnumType,\n  GraphQLInputObjectType,\n  type GraphQLInputType,\n  GraphQLScalarType,\n} from 'graphql';\nimport { type Readable } from 'node:stream';\nimport { type ServiceDescriptorProto } from 'ts-proto-descriptors';\nimport {\n  type ProtoMetadata,\n  type ServiceConfig,\n} from './types.js';\n\nexport const Mutate = ['Create', 'Update', 'Upsert'];\n\nexport const preProcessGQLInput = async (\n  data: any,\n  model: GraphQLInputObjectType | GraphQLEnumType | GraphQLInputField | GraphQLInputType\n): Promise<any> => {\n  if (data === null || data === undefined) {\n    return data;\n  }\n\n  if (model instanceof GraphQLEnumType) {\n    return data;\n  }\n\n  if (model instanceof GraphQLInputObjectType) {\n    if (model.name === 'IGoogleProtobufAny') {\n      // TODO Use encoded once resource base supports it\n      // const typing = getTyping(data.typeUrl);\n      // if (!typing) {\n      //   throw Error(`GoogleProtobufAny could not find input type: ${data.typeUrl}`);\n      // }\n      //\n      // const encoded = typing.processor.encode(typing.processor.fromPartial(data.value)).finish();\n\n      const encoded = Buffer.from(JSON.stringify(data.value));\n\n      return {\n        ...data,\n        value: encoded\n      };\n    } else {\n      const fields = model.getFields();\n      const converted = Object.assign({}, ...(await Promise.all(\n        Object.keys(fields).filter(\n          key => key in data\n        ).map(\n          async key => ({ [key]: await preProcessGQLInput(data[key], fields[key].type) })\n        )\n      )));\n      return {\n        ...data,\n        ...converted,\n      }\n    }\n  }\n\n  if (model instanceof GraphQLScalarType) {\n    if (model.name === 'IDateTime') {\n      return new Date(data);\n    }\n  }\n\n  if (model instanceof GraphQLNonNull) {\n    return await preProcessGQLInput(data, model.ofType);\n  }\n\n  if (model instanceof GraphQLList) {\n    return await Promise.all(\n      data.map(\n        (d: any) => preProcessGQLInput(d, model.ofType)\n      )\n    );\n  }\n\n  if (model instanceof GraphQLScalarType) {\n    switch (model.name) {\n      case 'Upload':\n        if (typeof data !== 'object') {\n          return Buffer.from(data.toString(), 'utf8');\n        }\n\n        let fileData = await data;\n        const upload = await fileData.promise;\n        const stream: Readable = upload.createReadStream();\n        return stream;\n    }\n  }\n\n  return data;\n};\n\nexport const postProcessGQLOutput = (data: any, model: GraphQLOutputType): any => {\n  if (data === null || data === undefined) {\n    return data;\n  }\n\n  if (model instanceof GraphQLEnumType) {\n    return data;\n  }\n\n  if (model instanceof GraphQLObjectType) {\n    if (model.name === 'GoogleProtobufAny') {\n      // TODO Use encoded once resource base supports it\n      const decoded = JSON.parse(data?.value?.toString());\n\n      return {\n        ...data,\n        value: decoded\n      };\n    } else {\n      const fields = model.getFields();\n      const converted = Object.assign({}, ...Object.keys(fields).filter(\n        key => key in data\n      ).map(\n        key => ({ [key]: postProcessGQLOutput(data[key], fields[key].type) })\n      ));\n      return {\n        ...data,\n        ...converted,\n      };\n    }\n  }\n\n  if (model instanceof GraphQLNonNull) {\n    return postProcessGQLOutput(data, model.ofType);\n  }\n\n  if (model instanceof GraphQLList) {\n    return data.map(\n      (d: any) => postProcessGQLOutput(d, model.ofType)\n    );\n  }\n\n  return data;\n};\n\nexport const getWhitelistBlacklistConfig = (\n  metaService: ServiceDescriptorProto,\n  config: ServiceConfig,\n  meta: ProtoMetadata,\n  entity: string\n): { queries: Set<string>; mutations: Set<string> } => {\n  const queryList: string[] = [];\n  if (meta.options && meta.options.services && meta.options!.services[metaService.name] && meta.options!.services[metaService.name].methods) {\n    const methods = meta.options!.services[metaService.name].methods!;\n    for (const key of Object.keys(methods)) {\n      if ('is_query' in methods[key] && methods[key]['is_query']) {\n        queryList.push(key);\n      }\n    }\n  }\n\n  const mut: Set<string> = new Set(metaService.method!.map(m => m.name!).filter(key => queryList.indexOf(key) < 0) as any);\n  const que: Set<string> = new Set(metaService.method!.map(m => m.name!).filter(key => queryList.indexOf(key) >= 0) as any);\n\n  if (config[entity]) {\n    if (config[entity]?.methods?.whitelist) {\n      const whitelist = new Set(config[entity].methods.whitelist);\n      mut.forEach(key => {\n        if (whitelist.has(key as any)) {\n          whitelist.delete(key as any);\n        } else {\n          mut.delete(key);\n        }\n      });\n\n      que.forEach(key => {\n        if (whitelist.has(key as any)) {\n          whitelist.delete(key as any);\n        } else {\n          que.delete(key);\n        }\n      });\n\n      if (whitelist.size > 0) {\n        // TODO Log error that whitelist contains methods that don't exist\n        console.error('Whitelist contains undefined methods:', whitelist);\n      }\n    } else if (config[entity]?.methods?.blacklist) {\n      const blacklist = new Set(config[entity].methods.blacklist);\n      mut.forEach(key => {\n        if (blacklist.has(key as any)) {\n          blacklist.delete(key as any);\n          mut.delete(key);\n        }\n      });\n\n      que.forEach(key => {\n        if (blacklist.has(key as any)) {\n          blacklist.delete(key as any);\n          que.delete(key);\n        }\n      });\n\n      if (blacklist.size > 0) {\n        // TODO Log error that blacklist contains methods that don't exist\n        console.error('Blacklist contains undefined methods:', blacklist);\n      }\n    }\n  }\n\n  if (Mutate.findIndex(val => mut.has(val)) > -1) {\n    mut.add('Mutate');\n  }\n\n  return {\n    mutations: mut,\n    queries: que\n  };\n};\n", "import {\n  type FederatedSchemaWithResolvers,\n  type ProtoMetadata,\n  type ServiceClient,\n  type SubSpaceServiceConfig\n} from './types.js';\nimport { buildSubgraphSchema } from '@apollo/subgraph';\nimport { parse } from 'graphql';\nimport { type GraphQLSchema, printSchema, GraphQLObjectType, GraphQLList, GraphQLScalarType } from 'graphql';\nimport { generateSubServiceResolvers } from './resolvers.js';\nimport { GraphQLResolverMap } from '@apollo/subgraph/dist/schema-helper/resolverMap.js';\n\nexport const buildFederatedSubscriptionSchema = <T, M extends Record<string, any>, CTX extends ServiceClient<CTX, keyof CTX, M>>(subServices: ProtoMetadata[], config: SubSpaceServiceConfig, namespace: string, schema: GraphQLSchema): FederatedSchemaWithResolvers => {\n  const resolvers: GraphQLResolverMap<any> = generateSubServiceResolvers(subServices, config, namespace);\n\n  // TODO There is currently no way of building a federated schema from GraphQLSchema Object\n  // See https://github.com/apollographql/apollo-server/pull/4310\n  const federatedSchema = buildSubgraphSchema([{\n    typeDefs: parse(printSchema(schema)),\n    resolvers\n  }]);\n\n  return {\n    federatedSchema,\n    resolvers\n  };\n};\n\nexport const mergeSubscribeIntoSchema = (schema: GraphQLObjectType | GraphQLList<any> | null | undefined, resolvers: GraphQLResolverMap<any>[string]) => {\n  if (!schema || !resolvers) {\n    return;\n  }\n\n  Object.entries(resolvers).forEach(([key, val]) => {\n    if (schema instanceof GraphQLList) {\n      mergeSubscribeIntoSchema(schema.ofType, val);\n      return;\n    }\n\n    const field = schema.getFields()[key];\n    if (!field) {\n      return;\n    }\n\n    if ('resolve' in val || 'subscribe' in val) {\n      field.subscribe = val['subscribe'] || field.subscribe;\n      field.resolve = val['resolve'] || field.resolve;\n      return;\n    }\n\n    const fieldType = field.type;\n    if (fieldType instanceof GraphQLScalarType) {\n      field.subscribe = val['subscribe'];\n    } else if (fieldType instanceof GraphQLObjectType) {\n      mergeSubscribeIntoSchema(fieldType, val);\n    }\n  });\n};\n", "import { type DescriptorProto, type ServiceDescriptorProto } from 'ts-proto-descriptors';\nimport { GraphQLFieldResolver, type GraphQLResolveInfo } from 'graphql';\nimport * as stream from 'node:stream';\nimport _ from 'lodash';\nimport { Metadata } from 'nice-grpc';\nimport {\n  type KafkaSubscription,\n  type Resolver\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/options.js';\nimport { ReadRequest } from '@restorecommerce/rc-grpc-clients';\nimport {\n  Filter_Operation,\n  Filter_ValueType\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/resource_base.js';\nimport { Events } from '@restorecommerce/kafka-client';\nimport { TenantRequest } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/user.js';\nimport {\n  Resource,\n  ResourceListResponse,\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/resource_base.js';\nimport {\n  authSubjectType,\n  type ProtoMetadata,\n  type ServiceClient,\n  type ServiceConfig,\n  type SubSpaceServiceConfig\n} from './types.js';\nimport { getTyping } from './registry.js';\nimport {\n  getWhitelistBlacklistConfig,\n  Mutate,\n  postProcessGQLOutput,\n  preProcessGQLInput,\n} from './graphql.js';\nimport {\n  camelCase,\n  capitalize,\n  decodeBufferFields,\n  getKeys,\n  snakeToCamel,\n  getUseSubscriptions,\n  getServiceName,\n  LatentResourceMapBuffer,\n  ResolverContext\n} from './utils.js';\nimport S2A from './stream-to-async-iterator.js';\nimport { IdentitySrvGrpcClient } from '../../modules/identity/grpc/index.js';\nimport { Subject } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/auth.js';\nimport { GraphQLResolverMap } from '@apollo/subgraph/dist/schema-helper/resolverMap.js';\n\nconst inputMethodType = new Map<string, string>();\n\nexport type ResolverFn<TResult, TParent, TContext, TArgs> = (\n  parent: TParent,\n  args: TArgs,\n  context: TContext,\n  info: GraphQLResolveInfo\n) => Promise<TResult> | TResult;\n\nexport type SubscribeResolverFn<TResult, TParent, TContext, TArgs> = (\n  parent: TParent,\n  args: TArgs,\n  context: TContext,\n  info: GraphQLResolveInfo\n) => AsyncGenerator<TResult>;\n\nconst streamToAsyncIterable = async function* (request: any, readableStreamKey: string): AsyncIterable<any> {\n  const readStream = _.clone(request[readableStreamKey]);\n  for await (const chunk of new S2A(readStream)) {\n    yield Object.assign({}, request, { [readableStreamKey]: chunk });\n  }\n};\n\nconst fetchUnauthenticatedUserToken = async (ctx: any, domain: string) => {\n  if (!('identity' in ctx)) {\n    return undefined;\n  }\n\n  const identityClient = ctx['identity'] as { client: IdentitySrvGrpcClient };\n  const response = await identityClient.client.user.getUnauthenticatedSubjectTokenForTenant(TenantRequest.fromPartial({\n    domain\n  }));\n\n  return response?.token;\n};\n\nexport const getGQLResolverFunctions = <\n    T extends Record<string, any>,\n    CTX extends ServiceClient<CTX, keyof CTX, T>,\n    SRV = any,\n    R = ResolverFn<any, any, ServiceClient<CTX, keyof CTX, T>, any>,\n    B extends keyof T = any, NS extends keyof CTX = any\n  > (\n    service: ServiceDescriptorProto,\n    key: NS,\n    serviceKey: B,\n    cfg: ServiceConfig\n  ): { [key in keyof SRV]: R } => {\n    if (!service.method) {\n      return {} as { [key in keyof SRV]: R };\n    }\n\n    return service.method.reduce((obj, method) => {\n\n      if ((cfg as any)[serviceKey]?.methods?.blacklist) {\n        const blacklistMethods = (cfg as any)[serviceKey]?.methods?.blacklist;\n        if (blacklistMethods.includes(method.name)) {\n          return {} as { [key in keyof SRV]: R };\n        }\n      }\n\n      const typing = getTyping(method.inputType!)!;\n      const outputTyping = getTyping(method.outputType!)!;\n\n      if (!typing) {\n        throw Error(`Method '${method.name}' could not find input type: ${method.inputType}`);\n      }\n\n      if (!outputTyping) {\n        throw Error(`Method '${method.name}' could not find output type: ${method.outputType}`);\n      }\n\n      if (!('fromPartial' in typing.processor)) {\n        throw Error(`Method ${method.name} input type '${method.inputType}' does not contain 'fromPartial' function`);\n      }\n\n      let subjectField: null | string = null;\n      if (typing) {\n        for (let field of (typing.meta as DescriptorProto).field) {\n          if (field.typeName === authSubjectType) {\n            subjectField = field.name;\n            break;\n          }\n        }\n      }\n\n      let methodName = method.name;\n      if (Mutate.indexOf(method.name) > -1) {\n        methodName = 'Mutate';\n      }\n\n      if (methodName in obj) {\n        return obj;\n      }\n\n      (obj as any)[methodName] = async (args: any, context: ServiceClient<CTX, keyof CTX, T>) => {\n        // remap namespace and serviceKey if given\n        key = cfg?.namespace ?? key;\n        serviceKey = cfg?.serviceKeyMap?.[serviceKey] ?? cfg?.serviceKey ?? serviceKey;\n        const client = context[key].client;\n        const service = client[serviceKey];\n        try {\n          const converted = await preProcessGQLInput(args.input, typing.input);\n          const scope = args?.input?.scope;\n\n          let req = typing.processor.fromPartial(converted);\n\n          req.subject = getTyping(authSubjectType)!.processor.fromPartial({});\n          if (subjectField !== null) {\n            const authToken = (context as any).request!.req.headers['authorization'];\n            if (authToken && authToken.startsWith('Bearer ')) {\n              req.subject.token = authToken.split(' ')[1];\n            }\n            if (scope) {\n              req.subject.scope = scope;\n            }\n          }\n\n          if (\n            cfg?.disableUnauthenticatedUserTenant?.toString() != 'true'\n            && !req.subject.token\n            && 'origin' in (context as any).request!.req.headers\n          ) {\n            req.subject.token = await fetchUnauthenticatedUserToken(context, (context as any).request!.req.headers['origin']);\n          }\n\n          let realMethod = method.name;\n          if (Mutate.indexOf(method.name) > -1) {\n            const mode = args?.input?.mode;\n            if (!mode) {\n              throw new Error('Please specify mode');\n            }\n            if (mode === 'CREATE') {\n              realMethod = 'Create';\n            } else if (mode === 'UPDATE') {\n              realMethod = 'Update';\n            } else if (mode === 'UPSERT') {\n              realMethod = 'Upsert';\n            }\n          }\n\n          const methodFunc = service[camelCase(realMethod)] ?? service[realMethod];\n          if (method.clientStreaming) {\n            const readableStreamKey = Object.keys(req).filter(\n              (key) => req[key] instanceof stream.Stream.Readable\n            );\n            if (readableStreamKey.length > 0) {\n              req = streamToAsyncIterable(req, readableStreamKey[0]);\n            }\n          }\n          const contextRequest = (context as any).req;\n          const rawResult = await methodFunc(req, {\n            metadata: Metadata({\n              headers: JSON.stringify(contextRequest.headers),\n              'origin-ip': contextRequest.client.address().address\n            })\n          });\n          const result = postProcessGQLOutput(rawResult, outputTyping.output);\n\n          const grpcClientConfig = cfg.client;\n          const bufferFields = getKeys((grpcClientConfig as any)?.bufferFields);\n          if (result instanceof stream.Readable) {\n            let operationStatus = { code: 0, message: '' };\n            let aggregatedResponse: any = await new Promise((resolve, reject) => {\n              let response: any = {};\n              let combinedChunks: any = {};\n              result.on('data', (chunk) => {\n                const chunkObj = _.cloneDeep(chunk);\n                if (!combinedChunks) {\n                  combinedChunks = chunk;\n                } else {\n                  Object.assign(combinedChunks, chunk);\n                }\n                const existingBufferFields = _.intersection(Object.keys(chunk), bufferFields);\n                for (let bufferField of existingBufferFields) {\n                  if (chunkObj[bufferField] && chunkObj[bufferField].value) {\n                    if (!response[bufferField]) {\n                      response[bufferField] = { value: [] };\n                    }\n                    if (response[bufferField] && response[bufferField].value && !Array.isArray(response[bufferField].value)) {\n                      response[bufferField].value = [];\n                    }\n                    let data = JSON.parse(chunkObj[bufferField].value.toString());\n                    if (Array.isArray(data)) {\n                      for (let dataObj of data) {\n                        response[bufferField].value.push(dataObj);\n                      }\n                    } else {\n                      response[bufferField].value.push(data);\n                    }\n                  }\n                }\n              });\n              result.on('error', (err) => {\n                console.error(err);\n                operationStatus.code = (err as any).code ? (err as any).code : 500;\n                operationStatus.message = err.message;\n              });\n              result.on('end', () => {\n                if (_.isEmpty(operationStatus.message)) {\n                  operationStatus.code = 200;\n                  operationStatus.message = 'success';\n                }\n                if (!_.isEmpty(response)) {\n                  resolve(response);\n                } else if (!_.isEmpty(combinedChunks)) {\n                  resolve(combinedChunks);\n                }\n              });\n            });\n            return { details: aggregatedResponse, operationStatus };\n          }\n\n          if ('items' in result) {\n            let items = decodeBufferFields(result.items, bufferFields);\n            return {\n              details: {\n                items, // items includes both payload and individual status\n                operationStatus: result.operationStatus // overall status\n              },\n            };\n          } else {\n            return {\n              details: decodeBufferFields([result], bufferFields)[0]\n            };\n          }\n        } catch (error: any) {\n          console.error(error);\n          return {\n            details: {\n              items: [],\n              operationStatus: {\n                code: error.code,\n                message: error.message\n              }\n            }\n          };\n        }\n      };\n      return obj;\n    }, {} as { [key in keyof SRV]: R });\n  };\n\ntype ResolverBaseOrSub =\n  ResolverFn<any, any, ServiceClient<any, any, any>, any>\n  | Map<string, ResolverFn<any, any, ServiceClient<any, any, any>, any>>;\nconst namespaceResolverRegistry = new Map<string, Map<boolean, Map<string, ResolverBaseOrSub>>>();\n\nconst subscriptionResolvers: Record<string, Record<string, {\n  resolve?: ResolverFn<any, any, ServiceClient<any, any, any>, any>;\n  subscribe: ResolverFn<any, any, any, any>;\n}>> = {};\n\nexport const registerResolverFunction = <T extends Record<string, any>, CTX extends ServiceClient<CTX, keyof CTX, T>> (\n  namespace: string,\n  name: string,\n  func: ResolverFn<any, any, ServiceClient<CTX, keyof CTX, T>, any>,\n  mutation = false,\n  subspace: string | undefined = undefined,\n  service?: ServiceDescriptorProto\n) => {\n  if (!namespaceResolverRegistry.has(namespace)) {\n    namespaceResolverRegistry.set(namespace, new Map());\n  }\n\n  if (!namespaceResolverRegistry.get(namespace)!.has(mutation)) {\n    namespaceResolverRegistry.get(namespace)!.set(mutation, new Map());\n  }\n\n  let space = namespaceResolverRegistry.get(namespace)!.get(mutation)!;\n  if (subspace) {\n    if (!space.has(subspace)) {\n      space.set(subspace, new Map());\n    }\n    space = space.get(subspace)! as Map<string, ResolverFn<any, any, ServiceClient<any, any, any>, any>>;\n  }\n\n  if (space.has(name)) {\n    if (subspace) {\n      throw new Error(`Namespace \"${namespace}\".\"${subspace}\" already contains a function: ${name} (mutation: ${mutation})`);\n    } else {\n      throw new Error(`Namespace \"${namespace}\" already contains a function: ${name} (mutation: ${mutation})`);\n    }\n  }\n  if (service) {\n    const key = [\n      namespace,\n      subspace,\n      name\n    ].filter(\n      s => s\n    ).join(\n      '.'\n    ).toLocaleLowerCase();\n    const value = service.method.find((m) => m.name === name);\n    if (key && value?.inputType) {\n      inputMethodType.set(key, value.inputType);\n    }\n  }\n  space.set(name, func);\n};\n\nexport const generateResolver = (...namespaces: string[]): GraphQLResolverMap<any> => {\n  const queryResolvers: any = {};\n  const mutationResolvers: any = {};\n  const subResolvers: any = {};\n\n  namespaces.forEach(ns => {\n    if (!namespaceResolverRegistry.has(ns)) {\n      throw new Error(`Namespace \"${ns}\" has no registered functions`);\n    }\n\n    if (namespaceResolverRegistry.get(ns)!.has(false)) {\n      const res: any = {};\n\n      namespaceResolverRegistry.get(ns)!.get(false)!.forEach((value, key) => {\n        if (value instanceof Map) {\n          res[key] = Object.fromEntries(value);\n        } else {\n          res[key] = value;\n        }\n      });\n\n      queryResolvers[ns] = () => res;\n    }\n\n    if (namespaceResolverRegistry.get(ns)!.has(true)) {\n      const res: any = {};\n\n      namespaceResolverRegistry.get(ns)!.get(true)!.forEach((value, key) => {\n        if (value instanceof Map) {\n          res[key] = Object.fromEntries(value);\n        } else {\n          res[key] = value;\n        }\n      });\n\n      mutationResolvers[ns] = () => res;\n    }\n\n    if (ns in subscriptionResolvers) {\n      for (let [k, v] of Object.entries(subscriptionResolvers[ns])) {\n        subResolvers[k] = v;\n      }\n    }\n  });\n\n  const resolvers: GraphQLResolverMap<any> = {};\n\n  if (Object.keys(queryResolvers).length > 0) {\n    resolvers.Query = queryResolvers;\n  }\n\n  if (Object.keys(mutationResolvers).length > 0) {\n    resolvers.Mutation = mutationResolvers;\n  }\n\n  if (Object.keys(subResolvers).length > 0) {\n    resolvers.Subscription = subResolvers;\n  }\n\n  return resolvers;\n};\n\nexport const generateSubServiceResolvers = <\n  M extends Record<string, any>,\n  CTX extends ServiceClient<CTX, keyof CTX, M>\n>(\n  subServices: ProtoMetadata[],\n  config: SubSpaceServiceConfig,\n  namespace: string,\n): GraphQLResolverMap<any> => {\n  subServices.forEach((meta) => {\n    meta.fileDescriptor.service.forEach(service => {\n      if (service.name) {\n        // strip Service from end of String for sub service name\n        const subName = getServiceName(service.name);\n        const { mutations, queries } = getWhitelistBlacklistConfig(service, config, meta, subName);\n\n        const func = getGQLResolverFunctions<M, CTX>(service, namespace, subName ?? namespace, config);\n\n        Object.keys(func).forEach(k => {\n          const regNamespace = config.root ? subName : namespace;\n          const regSubspace = config.root ? undefined : subName;\n          registerResolverFunction(regNamespace, k, func[k] as any, !queries.has(k) && mutations.has(k), regSubspace, service);\n        });\n      }\n    });\n\n    if (getUseSubscriptions()) {\n      Object.entries(meta.options?.messages || {}).forEach(([messageName, option]) => {\n        if (option.options && 'kafka_subscriber' in option.options) {\n          const kafkaSubscriber: KafkaSubscription = option.options.kafka_subscriber;\n          const fieldName = namespace + capitalize(kafkaSubscriber.plural as string);\n          const baseMessageName = meta.fileDescriptor.package + '.' + messageName;\n          const typing = getTyping('.' + baseMessageName);\n\n          if (typing) {\n            if (!(namespace in subscriptionResolvers)) {\n              subscriptionResolvers[namespace] = {};\n            }\n\n            subscriptionResolvers[namespace][fieldName] = {\n              subscribe: async (parent, args, context, info) => {\n                const action = args.action || 'CREATED';\n\n                let event = kafkaSubscriber.created as string;\n                switch (action) {\n                  case 'UPDATED':\n                    event = kafkaSubscriber.updated as string;\n                    break;\n                  case 'DELETED':\n                    event = kafkaSubscriber.deleted as string;\n                    break;\n                }\n\n                const events = new Events({\n                  provider: 'kafka',\n                  kafka: {\n                    ...context.kafkaConfig\n                  },\n                  [event]: {\n                    messageObject: baseMessageName\n                  }\n                }, context.logger);\n                await events.start();\n\n                const commandTopic = await events.topic(kafkaSubscriber.topic as string);\n\n                let deferred: {\n                  resolve: (done: boolean) => void;\n                  reject: (err: unknown) => void;\n                } | null = null;\n                const pending: { id: string }[] = [];\n\n                commandTopic.on(event as string, (message: { id: string }) => {\n                  pending.push({ id: message.id });\n                  deferred?.resolve(false);\n                });\n\n                return {\n                  [Symbol.asyncIterator]() {\n                    return this;\n                  },\n                  next: async () => {\n                    if (pending.length) {\n                      return { value: { [fieldName]: pending.shift()! } };\n                    }\n\n                    return (await new Promise<boolean>(\n                      (resolve, reject) => (deferred = { resolve, reject }),\n                    ))\n                      ? { done: true }\n                      : { value: { [fieldName]: pending.shift()! } };\n                  },\n                  throw: async (err: Error) => {\n                    throw err;\n                  },\n                  return: async () => {\n                    await events.stop();\n                    return { done: true };\n                  },\n                };\n              }\n            };\n          }\n        }\n      });\n    }\n  });\n\n  if (config.root) {\n    return generateResolver(...subServices.flatMap(\n      meta => meta.fileDescriptor.service.map(\n        service => service.name ? getServiceName(service.name) : undefined\n      ).filter(Boolean)\n    ));\n  }\n\n  const finalResolver = generateResolver(namespace);\n\n  subServices.forEach((meta) => {\n    meta.fileDescriptor.service.forEach(() => {\n      if (meta.options && meta.options.messages) {\n        for (const key of Object.keys(meta.options.messages)) {\n          const message = meta.options.messages[key];\n          if (message.fields) {\n            const typing = getTyping(`.${meta.fileDescriptor.package}.${key}`);\n            if (typing) {\n              const result: Record<string, GraphQLFieldResolver<any, ResolverContext, any, any>> = {};\n              for (const [fieldName, field] of Object.entries(message.fields)) {\n                if ('resolver' in field) {\n                  const fieldJsonName = snakeToCamel(fieldName);\n                  const resolver = field.resolver as Resolver;\n                  const limit = resolver.limit ?? config.limit ?? 1000;\n                  const latency = resolver.latency ?? config.latency ?? 100;\n                  resolver.targetService = config?.namespace ?? resolver.targetService;\n\n                  // TODO This creates an N+1 problem!\n                  result[resolver.fieldName] = async (parent: any, args: any, ctx: ResolverContext, info: any) => {\n                    if (!parent || !(fieldJsonName in parent) || parent[fieldJsonName] === undefined) {\n                      return undefined;\n                    }\n\n                    if (!ctx.subject) {\n                      ctx.subject = Subject.fromPartial({});\n                      const authToken = ctx.request!.req.headers.authorization;\n                      if (authToken?.startsWith('Bearer ')) {\n                        ctx.subject!.token = authToken.split(' ')[1];\n                      }\n                      else if (\n                        config?.disableUnauthenticatedUserTenant?.toString() !== 'true'\n                        && 'origin' in ctx.request!.req.headers\n                      ) {\n                        ctx.subject!.token = await fetchUnauthenticatedUserToken(ctx, ctx.request!.req.headers.origin);\n                      }\n                    }\n\n                    const client = ctx[resolver.targetService].client;\n                    const service = client[resolver.targetSubService];\n                    const ids: string[] = Array.isArray(parent[fieldJsonName]) ? parent[fieldJsonName] : [parent[fieldJsonName]];\n                    ctx.latent ??= {};\n                    ctx.latent[resolver.targetSubService] ??= new LatentResourceMapBuffer(\n                      async (ids) => {\n                        const map = new Map<string, Resource>();\n                        ids = Array.from(new Set(ids));\n                        // TODO Support custom input messages\n                        for (let i = 0; i < ids.length; i+=limit) {\n                          const slice = ids.slice(i, i+limit);\n                          const req = ReadRequest.fromPartial({\n                            filters: [{\n                              filters: [{\n                                field: 'id',\n                                operation: Filter_Operation.in,\n                                value: JSON.stringify(slice),\n                                type: Filter_ValueType.ARRAY\n                              }],\n                            }],\n                            limit: slice.length,\n                            subject: ctx.subject,\n                          } as ReadRequest);\n                          const methodFunc = service[camelCase(resolver.targetMethod)] ?? service[resolver.targetMethod];\n                          const resp: ResourceListResponse = await methodFunc(req);\n                          resp.items?.forEach(item => map.set(item.payload.id, item.payload));\n                        }\n                        return map;\n                      }\n                    );\n                    ctx.latent[resolver.targetSubService].push(...ids);\n                    const map = await ctx.latent[resolver.targetSubService].await(latency);\n                    ctx.latent[resolver.targetSubService].reset();\n                    if (Array.isArray(parent[fieldJsonName])) {\n                      return ids.map(id => map.get(id));\n                    }\n                    else if (ids.length) {\n                      return map.get(ids[0]);\n                    }\n                    else {\n                      return undefined;\n                    }\n                  };\n                }\n              }\n              finalResolver[typing.output.name] = result;\n            }\n          }\n        }\n      }\n    });\n  });\n\n  return finalResolver;\n};\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport type { LazyEvaluator } from \"./types/LazyEvaluator\";\nimport type { StrictFunction } from \"./types/StrictFunction\";\n\n/**\n * Use this helper function to build the data last implementation together with\n * a lazy implementation. Use this when you need to build your own purrying\n * logic when you want to decide between dataFirst and dataLast on something\n * that isn't the number of arguments provided. This is useful for implementing\n * functions with optional or variadic arguments.\n */\nexport function lazyDataLastImpl(\n  fn: StrictFunction,\n  args: readonly unknown[],\n  lazy?: (...args: any) => LazyEvaluator,\n  // TODO: We can probably provide better typing to the return type...\n): unknown {\n  // @ts-expect-error [ts2345] -- This error is accurate because we don't know\n  // anything about `fn` so can't ensure that we are passing the correct\n  // arguments to it, we just have to trust that the caller knows what they are\n  // doing.\n  const dataLast = (data: unknown): unknown => fn(data, ...args);\n\n  return lazy === undefined\n    ? dataLast\n    : Object.assign(dataLast, { lazy, lazyArgs: args });\n}\n", "/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { lazyDataLastImpl } from \"./internal/lazyDataLastImpl\";\nimport type { LazyEvaluator } from \"./internal/types/LazyEvaluator\";\nimport type { StrictFunction } from \"./internal/types/StrictFunction\";\n\n/**\n * Creates a function with `dataFirst` and `dataLast` signatures.\n *\n * `purry` is a dynamic function and it's not type safe. It should be wrapped by\n * a function that have proper typings. Refer to the example below for correct\n * usage.\n *\n * !IMPORTANT: functions that simply call `purry` and return the result (like\n * almost all functions in this library) should return `unknown` themselves if\n * an explicit return type is required. This is because we currently don't\n * provide a generic return type that is built from the input function, and\n * crafting one manually isn't worthwhile as we rely on function declaration\n * overloading to combine the types for dataFirst and dataLast invocations!\n *\n * @param fn - The function to purry.\n * @param args - The arguments.\n * @param lazy - A lazy version of the function to purry.\n * @signature R.purry(fn, args);\n * @example\n *    function _findIndex(array, fn) {\n *      for (let i = 0; i < array.length; i++) {\n *        if (fn(array[i])) {\n *          return i;\n *        }\n *      }\n *      return -1;\n *    }\n *\n *    // data-first\n *    function findIndex<T>(array: T[], fn: (item: T) => boolean): number;\n *\n *    // data-last\n *    function findIndex<T>(fn: (item: T) => boolean): (array: T[]) => number;\n *\n *    function findIndex(...args: unknown[]) {\n *      return R.purry(_findIndex, args);\n *    }\n * @category Function\n */\nexport function purry(\n  fn: StrictFunction,\n  args: readonly unknown[],\n  lazy?: (...args: any) => LazyEvaluator,\n): unknown {\n  const diff = fn.length - args.length;\n  if (diff === 0) {\n    // @ts-expect-error [ts2345] -- This error is accurate because we don't know\n    // anything about `fn` so can't ensure that we are passing the correct\n    // arguments to it, we just have to trust that the caller knows what they\n    // are doing.\n    return fn(...args);\n  }\n\n  if (diff === 1) {\n    return lazyDataLastImpl(fn, args, lazy);\n  }\n\n  throw new Error(\"Wrong number of arguments\");\n}\n", "/* eslint-disable @typescript-eslint/prefer-readonly-parameter-types --\n * The state needed to compute the clone is passed by reference via mutable\n * arrays.\n */\n\nimport { purry } from \"./purry\";\n\n/**\n * Creates a deep copy of the value. Supported types: [plain objects](#isPlainObject),\n * `Array`, `number`, `string`, `boolean`, `Date`, and `RegExp`. Functions are\n * assigned by reference rather than copied. Class instances or any other\n * built-in type that isn't mentioned above are not supported (but might\n * work).\n *\n * @param data - The object to clone.\n * @signature\n *   R.clone(data)\n * @example\n *   R.clone({foo: 'bar'}) // {foo: 'bar'}\n * @dataFirst\n * @category Object\n */\nexport function clone<T>(data: T): T;\n\n/**\n * Creates a deep copy of the value. Supported types: [plain objects](#isPlainObject),\n * `Array`, `number`, `string`, `boolean`, `Date`, and `RegExp`. Functions are\n * assigned by reference rather than copied. Class instances or any other\n * built-in type that isn't mentioned above are not supported (but might\n * work).\n *\n * @signature\n *   R.clone()(data)\n * @example\n *   R.pipe({foo: 'bar'}, R.clone()) // {foo: 'bar'}\n * @dataLast\n * @category Object\n */\nexport function clone(): <T>(data: T) => T;\n\nexport function clone(...args: readonly unknown[]): unknown {\n  return purry(cloneImplementation, args);\n}\n\nfunction cloneImplementation<T>(\n  value: T,\n  refFrom: unknown[] = [],\n  refTo: unknown[] = [],\n): T {\n  if (typeof value === \"function\") {\n    // Functions aren't cloned, we return the same instance.\n    return value;\n  }\n\n  if (typeof value !== \"object\" || value === null) {\n    // Only objects are interesting when cloning, everything else can use\n    // whatever JS does by default.\n    return structuredClone(value);\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n  const prototype = Object.getPrototypeOf(value);\n  if (\n    !Array.isArray(value) &&\n    // Keep this check in sync with the same check in the impl of\n    // `isPlainObject`.\n    prototype !== null &&\n    prototype !== Object.prototype\n  ) {\n    // Our cloning logic is only designed for plain objects and arrays; other\n    // object types (like `Date`, `RegExp`, `File`, and user-defined classes)\n    // wouldn't clone properly. We fallback to the native cloning for them.\n    return structuredClone(value);\n  }\n\n  // In order to support cyclic/self-referential structures, and to support\n  // functions _within_ objects, we need to have our own cloning logic.\n\n  // First we check if we've already cloned this value.\n  const idx = refFrom.indexOf(value);\n  if (idx !== -1) {\n    return refTo[idx] as T;\n  }\n  // And if we haven't, we add it to our list of seen values so that it is kept\n  // and clone the deep structure.\n  refFrom.push(value);\n  return Array.isArray(value)\n    ? deepCloneArray(value, refFrom, refTo)\n    : deepCloneObject(value, refFrom, refTo);\n}\n\nfunction deepCloneObject<T extends object>(\n  value: T,\n  refFrom: unknown[],\n  refTo: unknown[],\n): T {\n  const copiedValue: Record<PropertyKey, unknown> = {};\n\n  // It's important to first push the cloned ref so that it's index is kept in\n  // sync with the ref to the original value in refFrom.\n  refTo.push(copiedValue);\n\n  for (const [k, v] of Object.entries(value)) {\n    copiedValue[k] = cloneImplementation(v, refFrom, refTo);\n  }\n\n  return copiedValue as T;\n}\n\nfunction deepCloneArray<T extends readonly unknown[]>(\n  value: T,\n  refFrom: unknown[],\n  refTo: unknown[],\n): T {\n  const copiedValue: unknown[] = [];\n\n  // It's important to first push the cloned ref so that it's index is kept in\n  // sync with the ref to the original value in refFrom.\n  refTo.push(copiedValue);\n\n  for (const [index, item] of value.entries()) {\n    copiedValue[index] = cloneImplementation(item, refFrom, refTo);\n  }\n\n  return copiedValue as unknown as T;\n}\n", "import type { LazyResult } from \"./types/LazyResult\";\n\nconst EMPTY_PIPE = { done: true, hasNext: false } as const;\n\n/**\n * A singleton value for skipping an item in a lazy evaluator.\n */\nexport const SKIP_ITEM = { done: false, hasNext: false } as const;\n\n/**\n * A helper evaluator when we want to return an empty result. It memoizes both\n * the result and the evaluator itself to reduce memory usage.\n */\nexport const lazyEmptyEvaluator = <T>(): LazyResult<T> => EMPTY_PIPE;\n\n/**\n * A helper evaluator when we want to return a shallow clone of the input. It\n * memoizes both the evaluator itself to reduce memory usage.\n */\nexport const lazyIdentityEvaluator = <T>(value: T) =>\n  ({\n    hasNext: true,\n    next: value,\n    done: false,\n  }) as const;\n", "import type { Writable } from \"type-fest\";\nimport type { FilteredArray } from \"./internal/types/FilteredArray\";\nimport type { IterableContainer } from \"./internal/types/IterableContainer\";\nimport type { LazyEvaluator } from \"./internal/types/LazyEvaluator\";\nimport { SKIP_ITEM } from \"./internal/utilityEvaluators\";\nimport { purry } from \"./purry\";\n\n// When the predicate used for filter isn't refining (like a type-predicate) we\n// can narrow the result slightly if it's also trivial (it returns the same\n// result for all items). This is uncommon, but can be useful to \"short-circuit\"\n// the filter.\ntype NonRefinedFilteredArray<\n  T extends IterableContainer,\n  IsItemIncluded extends boolean,\n> = boolean extends IsItemIncluded\n  ? // We don't know which items of the array the predicate would allow in the\n    // output so we can only safely say that the result is an array with items\n    // from the input array.\n    // TODO: Theoretically we could build an output shape that would take into account the **order** of elements in the input array by reconstructing it with every single element in it either included or not, but this type can grow to a union of as much as 2^n options which might not be usable in practice.\n    T[number][]\n  : IsItemIncluded extends true\n    ? // If the predicate is always true we return a shallow copy of the array.\n      // If it was originally readonly we need to strip that away.\n      Writable<T>\n    : // If the predicate is always false we will always return an empty\n      // array.\n      [];\n\n/**\n * Creates a shallow copy of a portion of a given array, filtered down to just\n * the elements from the given array that pass the test implemented by the\n * provided function. Equivalent to `Array.prototype.filter`.\n *\n * @param data - The array to filter.\n * @param predicate - A function to execute for each element in the array. It\n * should return `true` to keep the element in the resulting array, and `false`\n * otherwise. A type-predicate can also be used to narrow the result.\n * @returns A shallow copy of the given array containing just the elements that\n * pass the test. If no elements pass the test, an empty array is returned.\n * @signature\n *    R.filter(data, predicate)\n * @example\n *    R.filter([1, 2, 3], x => x % 2 === 1) // => [1, 3]\n * @dataFirst\n * @lazy\n * @category Array\n */\nexport function filter<\n  T extends IterableContainer,\n  Condition extends T[number],\n>(\n  data: T,\n  predicate: (value: T[number], index: number, data: T) => value is Condition,\n): FilteredArray<T, Condition>;\nexport function filter<\n  T extends IterableContainer,\n  IsItemIncluded extends boolean,\n>(\n  data: T,\n  predicate: (value: T[number], index: number, data: T) => IsItemIncluded,\n): NonRefinedFilteredArray<T, IsItemIncluded>;\n\n/**\n * Creates a shallow copy of a portion of a given array, filtered down to just\n * the elements from the given array that pass the test implemented by the\n * provided function. Equivalent to `Array.prototype.filter`.\n *\n * @param predicate - A function to execute for each element in the array. It\n * should return `true` to keep the element in the resulting array, and `false`\n * otherwise.\n * @returns A shallow copy of the given array containing just the elements that\n * pass the test. If no elements pass the test, an empty array is returned.\n * @signature\n *    R.filter(predicate)(data)\n * @example\n *    R.pipe([1, 2, 3], R.filter(x => x % 2 === 1)) // => [1, 3]\n * @dataLast\n * @lazy\n * @category Array\n */\nexport function filter<\n  T extends IterableContainer,\n  Condition extends T[number],\n>(\n  predicate: (value: T[number], index: number, data: T) => value is Condition,\n): (data: T) => FilteredArray<T, Condition>;\nexport function filter<\n  T extends IterableContainer,\n  IsItemIncluded extends boolean,\n>(\n  predicate: (value: T[number], index: number, data: T) => IsItemIncluded,\n): (data: T) => NonRefinedFilteredArray<T, IsItemIncluded>;\n\nexport function filter(...args: readonly unknown[]): unknown {\n  return purry(filterImplementation, args, lazyImplementation);\n}\n\nconst filterImplementation = <T>(\n  data: readonly T[],\n  predicate: (value: T, index: number, array: readonly T[]) => boolean,\n): T[] => data.filter(predicate);\n\nconst lazyImplementation =\n  <T>(\n    predicate: (value: T, index: number, data: readonly T[]) => boolean,\n  ): LazyEvaluator<T> =>\n  (value, index, data) =>\n    predicate(value, index, data)\n      ? { done: false, hasNext: true, next: value }\n      : SKIP_ITEM;\n", "import type { NarrowedTo } from \"./internal/types/NarrowedTo\";\n\n/**\n * A function that checks if the passed parameter is an Array and narrows its type accordingly.\n *\n * @param data - The variable to check.\n * @returns True if the passed input is an Array, false otherwise.\n * @signature\n *    R.isArray(data)\n * @example\n *    R.isArray([5]) //=> true\n *    R.isArray([]) //=> true\n *    R.isArray('somethingElse') //=> false\n * @category Guard\n */\nexport function isArray<T>(\n  data: ArrayLike<unknown> | T,\n): data is NarrowedTo<T, readonly unknown[]> {\n  return Array.isArray(data);\n}\n", "import type { IsLiteral, IsUnion } from \"type-fest\";\nimport type { IterableContainer } from \"./internal/types/IterableContainer\";\n\n/**\n * A \"constant\" tuple is a type that has a single runtime value that can fulfil\n * it. This means that it doesn't have any variadic/rest/spread/array parts, and\n * that all it's values are singular (non-union) literals.\n *\n * We use this type to allow narrowing when checking against a set of values\n * defined as a const.\n *\n * @example\n *   type T1 = IsConstantTuple<[\"cat\", \"dog\", 3, true]>; // => true;\n *   type T2 = IsConstantTuple<[\"cat\" | \"dog\"]>; // false;\n *   type T2 = IsConstantTuple<[\"cat\", ...\"cat\"[]]>; // false;\n */\ntype IsConstantTuple<T extends IterableContainer> = T extends readonly []\n  ? true\n  : T extends readonly [infer Head, ...infer Rest]\n    ? IsUnion<Head> extends true\n      ? false\n      : IsConstantTuple<Rest>\n    : false;\n\n/**\n * There is no way to tell Typescript to only narrow the \"accepted\" side of a\n * type-predicate and so in many cases the negated side is also affected, this\n * results in over-narrowing in many cases, breaking typing. For this reason we\n * only want to use the type-predicate variant of `isIncludedIn` when we can\n * assume the result represents the expected types (closely enough). This is not\n * and ideal solution and we will still generate wrong types in some cases (see\n * tests), but it reduces the surface of this problem significantly, while still\n * keeping the utility of `isIncludedIn` for the common cases.\n *\n * TL;DR - The types are narrowable when: T is literal and S is a pure tuple, or\n * when T isn't a literal, but S is.\n *\n * @example\n *   const data = 1 as 1 | 2 | 3;\n *   const container = [] as (1 | 2)[];\n *   if (isIncludedIn(data, container)) {\n *     ... it makes sense to narrow data to `1 | 2` as the value `3` is not part\n *     ... of the typing of container, so will never result in being true.\n *   } else {\n *     ... but it doesn't make sense to narrow the value to 3 here, because 1\n *     ... and 2 are still valid values for data, when container doesn't include\n *     ... them **at runtime**.\n *     ... Typescript narrows the _rejected_ branch based on how it narrowed the\n *     ... _accepted_ clause, and we can't control that; because our input type\n *     ... is `1 | 2 | 3` and the accepted side is `1 | 2`, the rejected side is\n *     ... typed `Exclude<1 | 2 | 3, 1 | 2>`, which is `3`.\n *   }\n * }\n */\ntype IsNarrowable<T, S extends IterableContainer<T>> =\n  IsLiteral<T> extends true\n    ? // When T is literal (i.g. it isn't a primitive type like `string` or\n      // `number`) then the criteria for narrowing is that the container is a\n      // \"pure\" tuple because we *assume* that S represents a constant set of\n      // values, and that it's typing also represents it's runtime content 1-\n      // for-1. If S isn't a pure tuple it means we can't tell from the typing\n      // which of it's values are actually present in runtime so can't use them\n      // to narrow correctly.\n      IsConstantTuple<S>\n    : // When T isn't a literal type but the items in S are we can narrow the\n      // type because it won't affect the negated side (`Exclude<number, 3>`\n      // is still `number`).\n      IsLiteral<S[number]>;\n\n/**\n * Checks if the item is included in the container. This is a wrapper around\n * `Array.prototype.includes` and `Set.prototype.has` and thus relies on the\n * same equality checks that those functions do (which is reference equality,\n * e.g. `===`). In some cases the input's type is also narrowed to the\n * container's item types.\n *\n * Notice that unlike most functions, this function takes a generic item as it's\n * data and **an array** as it's parameter.\n *\n * @param data - The item that is checked.\n * @param container - The items that are checked against.\n * @returns `true` if the item is in the container, or `false` otherwise. In\n * cases the type of `data` is also narrowed down.\n * @signature\n *   R.isIncludedIn(data, container);\n * @example\n *   R.isIncludedIn(2, [1, 2, 3]); // => true\n *   R.isIncludedIn(4, [1, 2, 3]); // => false\n *\n *   const data = \"cat\" as \"cat\" | \"dog\" | \"mouse\";\n *   R.isIncludedIn(data, [\"cat\", \"dog\"] as const); // true (typed \"cat\" | \"dog\");\n * @dataFirst\n * @category Guard\n */\nexport function isIncludedIn<T, S extends IterableContainer<T>>(\n  data: T,\n  container: IsNarrowable<T, S> extends true ? S : never,\n): data is S[number];\nexport function isIncludedIn<T, S extends T>(\n  data: T,\n  container: IterableContainer<S>,\n): boolean;\n\n/**\n * Checks if the item is included in the container. This is a wrapper around\n * `Array.prototype.includes` and `Set.prototype.has` and thus relies on the\n * same equality checks that those functions do (which is reference equality,\n * e.g. `===`). In some cases the input's type is also narrowed to the\n * container's item types.\n *\n * Notice that unlike most functions, this function takes a generic item as it's\n * data and **an array** as it's parameter.\n *\n * @param container - The items that are checked against.\n * @returns `true` if the item is in the container, or `false` otherwise. In\n * cases the type of `data` is also narrowed down.\n * @signature\n *   R.isIncludedIn(container)(data);\n * @example\n *   R.pipe(2, R.isIncludedIn([1, 2, 3])); // => true\n *   R.pipe(4, R.isIncludedIn([1, 2, 3])); // => false\n *\n *   const data = \"cat\" as \"cat\" | \"dog\" | \"mouse\";\n *   R.pipe(\n *     data,\n *     R.isIncludedIn([\"cat\", \"dog\"] as const),\n *   ); // => true (typed \"cat\" | \"dog\");\n * @dataLast\n * @category Guard\n */\nexport function isIncludedIn<T, S extends IterableContainer<T>>(\n  container: IsNarrowable<T, S> extends true ? S : never,\n): (data: T) => data is S[number];\nexport function isIncludedIn<T, S extends T>(\n  container: IterableContainer<S>,\n): (data: T) => boolean;\n\nexport function isIncludedIn(\n  dataOrContainer: unknown,\n  container?: readonly unknown[],\n): unknown {\n  if (container === undefined) {\n    // === dataLast ===\n    // We don't use purry here because we can optimize the dataLast case by\n    // memoizing a set and accessing it in O(1) time instead of scanning the\n    // array **each time** (O(n)) each time.\n    const asSet = new Set(dataOrContainer as readonly unknown[]);\n    return (data: unknown) => asSet.has(data);\n  }\n\n  // === dataFirst ===\n  return container.includes(dataOrContainer);\n}\n", "import type { NarrowedTo } from \"./internal/types/NarrowedTo\";\n\n/**\n * A function that checks if the passed parameter is either `null` or\n * `undefined` and narrows its type accordingly.\n *\n * @param data - The variable to check.\n * @returns True if the passed input is either `null` or `undefined`, false\n * otherwise.\n * @signature\n *    R.isNullish(data)\n * @example\n *    R.isNullish(undefined) //=> true\n *    R.isNullish(null) //=> true\n *    R.isNullish('somethingElse') //=> false\n * @category Guard\n */\nexport function isNullish<T>(\n  data: T | null | undefined,\n): data is NarrowedTo<T, null | undefined> {\n  return data === null || data === undefined;\n}\n", "import type { NarrowedTo } from \"./internal/types/NarrowedTo\";\n\n/**\n * A function that checks if the passed parameter is a string and narrows its type accordingly.\n *\n * @param data - The variable to check.\n * @returns True if the passed input is a string, false otherwise.\n * @signature\n *    R.isString(data)\n * @example\n *    R.isString('string') //=> true\n *    R.isString(1) //=> false\n * @category Guard\n */\nexport function isString<T>(data: T | string): data is NarrowedTo<T, string> {\n  return typeof data === \"string\";\n}\n", "import type { EmptyObject, IsNever, KeysOfUnion, Writable } from \"type-fest\";\nimport type { IsBounded } from \"./internal/types/IsBounded\";\nimport type { IsBoundedRecord } from \"./internal/types/IsBoundedRecord\";\nimport type { PartitionByUnion } from \"./internal/types/PartitionByUnion\";\nimport type { TupleParts } from \"./internal/types/TupleParts\";\nimport { purry } from \"./purry\";\n\ntype PickFromArray<T, Keys extends readonly KeysOfUnion<T>[]> =\n  // Distribute unions for both object types and key arrays.\n  T extends unknown\n    ? Keys extends unknown\n      ? // When T is a union (or when Keys is empty) the picked props might\n        // not exist in some of its sub-types, e.g.,\n        //   `pick(... as { a: string } | { b: number }, ['a'])`,\n        // if we simply let the regular \"constructive\" logic run, the\n        // resulting type would be `{}` which doesn't behave like an empty\n        // object! instead, we want to use a more explicit *empty* type.\n        IsNever<Extract<Keys[number], keyof T>> extends true\n        ? EmptyObject\n        : // Remove `readonly` modifiers from picked props since we return a\n          // new, mutable, object. We don't wrap the result with `Simplify` to\n          // flatten it because `Writable` does the same thing implicitly.\n          Writable<\n            IsBoundedRecord<T> extends true\n              ? PickBoundedFromArray<T, Keys>\n              : PickUnbounded<T, Extract<Keys[number], keyof T>>\n          >\n      : never\n    : never;\n\n/**\n * Bounded records have bounded keys and result in a bounded output. The only\n * question left is whether to add the prop as-is, or make it optional. This\n * can be determined by the part of the keys array the prop is defined in, and\n * the way that element is defined: if the array contains a singular literal\n * key in either the required prefix or the suffix, we know that prop should be\n * picked as-is, otherwise, the key might not be present in the keys array so it\n * can only be picked optionally.\n */\ntype PickBoundedFromArray<T, Keys extends readonly KeysOfUnion<T>[]> =\n  // Literal keys in the prefix/suffix are guaranteed present.\n  Pick<\n    T,\n    // When T is a union the keys need to be narrowed to just those that are\n    // keys of the specific sub-type being built\n    Extract<\n      | PartitionByUnion<TupleParts<Keys>[\"required\"]>[\"singular\"]\n      | PartitionByUnion<TupleParts<Keys>[\"suffix\"]>[\"singular\"],\n      keyof T\n    >\n  > &\n    // Union keys, optional elements, and rest elements are optional.\n    Partial<\n      Pick<\n        T,\n        // When T is a union the keys need to be narrowed to just those that are\n        // keys of the specific sub-type being built.\n        Extract<\n          | PartitionByUnion<TupleParts<Keys>[\"required\"]>[\"union\"]\n          // TODO: the optional part of the keys array will always be empty because its impossible to provide the pick function with a tuple with optional elements; this is because optional elements are always implicitly `undefined` too; which breaks the constraint that all keys are keys of T (`undefined` is not a key of anything). We can lift this restriction by supporting `undefined` in the runtime and relaxing the type constraint to allow it, but this relaxed constraint enables a niche feature (optional tuple elements) at the expense of better type-safety for the more common cases of fixed tuples and arrays. Anyway... if we ever change it, this part of the output type will ensure the output is still correct:\n          | TupleParts<Keys>[\"optional\"][number]\n          | TupleParts<Keys>[\"item\"]\n          | PartitionByUnion<TupleParts<Keys>[\"suffix\"]>[\"union\"],\n          keyof T\n        >\n      >\n    >;\n\n/**\n * The built-in `Pick` is weird when it comes to picking bounded keys from\n * unbounded records. It reconstructs the output object regardless of the shape\n * of the input: `Pick<Record<string, \"world\">, \"hello\">` results in the type\n * `{ hello: \"world\" }`, but you'd expect it to be optional because we don't\n * know if the record contains a `hello` prop or not!\n *\n * !Important: We assume T is unbounded and don't test for it!\n *\n * See: https://www.typescriptlang.org/play/?#code/PTAEE0HsFcHIBNQFMAeAHJBjALqAGqNpKAEZKigAGA3qABZIA2jkA-AFygBEA7pAE6N4XUAF9KAGlLRcAQ0ayAzgChsATwz5QAXlAAFAJaYA1gB4ASlgHxTi7PwMA7AOZTeAoVwB8bhs0jeANzKIBSgAHqsykA.\n */\ntype PickUnbounded<T, Keys extends keyof T> =\n  IsBounded<Keys> extends true ? Partial<Pick<T, Keys>> : Pick<T, Keys>;\n\n/**\n * Creates an object composed of the picked `data` properties.\n *\n * @param keys - The property names.\n * @signature R.pick([prop1, prop2])(object)\n * @example\n *    R.pipe({ a: 1, b: 2, c: 3, d: 4 }, R.pick(['a', 'd'])) // => { a: 1, d: 4 }\n * @dataLast\n * @category Object\n */\nexport function pick<\n  T extends object,\n  const Keys extends readonly KeysOfUnion<T>[],\n>(keys: Keys): (data: T) => PickFromArray<T, Keys>;\n\n/**\n * Creates an object composed of the picked `data` properties.\n *\n * @param data - The target object.\n * @param keys - The property names.\n * @signature R.pick(object, [prop1, prop2])\n * @example\n *    R.pick({ a: 1, b: 2, c: 3, d: 4 }, ['a', 'd']) // => { a: 1, d: 4 }\n * @dataFirst\n * @category Object\n */\nexport function pick<\n  T extends object,\n  const Keys extends readonly KeysOfUnion<T>[],\n>(data: T, keys: Keys): PickFromArray<T, Keys>;\n\nexport function pick(...args: readonly unknown[]): unknown {\n  return purry(pickImplementation, args);\n}\n\nfunction pickImplementation<\n  T extends object,\n  Keys extends readonly (keyof T)[],\n>(object: T, keys: Keys): PickFromArray<T, Keys> {\n  const out: Partial<Pick<T, Keys[number]>> = {};\n  for (const key of keys) {\n    if (key in object) {\n      out[key] = object[key];\n    }\n  }\n  // @ts-expect-error [ts2322] - We build the type incrementally, there's no way to make typescript infer that we \"finished\" building the object and to treat it as such.\n  return out;\n}\n", "import { isNullish, isString } from 'remeda';\nimport { createLogger, Logger } from '@restorecommerce/logger';\nimport * as kafka from './provider/kafka/index.js';\nimport * as local from './provider/local/index.js';\nimport { EventProvider, Topic } from './interface.js';\n\ntype EventProvicerClass = new (config: any, logger: Logger, ...args: any[]) => EventProvider;\n\n/**\n * A key, value map containing event providers.\n * Event providers are registered with the register function.\n */\nconst eventProviders = {} as Record<string, EventProvicerClass>;\n\n/**\n * Register a event provider.\n *\n * @param  {string} name     Event provider identifier\n * @param  {constructor} provider Event provider constructor function\n */\nexport const registerEventProvider = (name: string, provider: EventProvicerClass): void => {\n  eventProviders[name] = provider;\n};\n\nregisterEventProvider(kafka.Name, kafka.Kafka);\nregisterEventProvider(local.Name, local.Local);\n\n/**\n * Events manages an event provider.\n */\nexport class Events {\n  config: any;\n  logger?: Logger;\n  provider: EventProvider;\n  /**\n   * @param [Object] config Event configuration.\n   * @param [Logger] logger\n   */\n  constructor(config?: any, logger?: Logger) {\n    // config\n    if (isNullish(config)) {\n      throw new Error('missing argument config');\n    }\n    this.config = config;\n\n    const loggerCfg = this.config?.logger;\n    if (loggerCfg) {\n      loggerCfg.esTransformer = (msg: any) => {\n        msg.fields = JSON.stringify(msg.fields);\n        return msg;\n      };\n    }\n\n    // logger\n    if (isNullish(logger)) {\n      if (isNullish(this.config.logger)) {\n        this.logger = createLogger();\n      } else {\n        this.logger = createLogger(loggerCfg);\n      }\n    } else {\n      this.logger = logger;\n    }\n\n    // provider\n    const providerName = this.config.provider;\n    if (isNullish(providerName)) {\n      this.logger?.error('config does not have event provider name', this.config);\n      throw new Error('config does not have event provider name');\n    }\n    const Provider = eventProviders[providerName];\n    if (isNullish(Provider)) {\n      throw new Error(`events provider ${providerName} is not registered`);\n    }\n    this.provider = new Provider(this.config, this.logger);\n  }\n\n  /**\n   * Start the provider.\n   * Allows sending and receiving events after this call.\n   * Suspends the function until the provider is started.\n   */\n  async start(): Promise<void> {\n    return await this.provider.start();\n  }\n\n  /**\n   * Stop the provider.\n   * No events will be received or can be send after this call.\n   * Suspends the function until the provider is stopped.\n   */\n  async stop(): Promise<void> {\n    return await this.provider.stop();\n  }\n\n  async delete(topics: string[]): Promise<void> {\n    return await this.provider.delete(topics);\n  }\n\n  async deleteAll(): Promise<void> {\n    return await this.provider.deleteAll();\n  }\n\n  /**\n   * Returns a topic from the provider.\n   *\n   * @param  {string} name Topic name\n   * @return {Topic}      Topic\n   */\n  topic(name: string, manualOffsetCommit?: boolean): Promise<Topic> {\n    if (isNullish(name)) {\n      throw new Error('missing argument name');\n    }\n    if (!isString(name)) {\n      throw new Error('argument name is not type of string');\n    }\n    return this.provider.topic(name, this.config, manualOffsetCommit || false);\n  }\n}\n", "import * as retry from 'retry';\nimport { isNullish, clone, isIncludedIn, filter, pick } from 'remeda';\nimport { EventEmitter } from 'events';\nimport * as async from 'async';\nimport { Logger } from '@restorecommerce/logger';\nimport {\n  Producer,\n  Consumer,\n  Admin,\n  ProduceResult,\n  type Message,\n  noopDeserializer,\n  noopSerializer,\n  ProducerOptions,\n  ConsumerOptions,\n  AdminOptions\n} from '@platformatic/kafka';\nimport { decodeMessage, encodeMessage } from '../../../protos.js';\nimport { EventProvider, Listener, Topic } from '../../interface.js'\nimport { decomposeError } from '../../../utils.js';\n\n/**\n * A Kafka topic.\n */\nexport class KafkaTopic implements Topic {\n  readonly emitter: EventEmitter;\n  readonly subscribed: string[];\n  waitQueue: any[];\n  currentOffset: bigint;\n  consumer: Consumer;\n  // message sync throttling attributes\n  asyncQueue: async.QueueObject<any>;\n  drainEvent: (context: Message, done: (err: any) => void) => void;\n  // default process one message at a time\n  asyncLimit = 1;\n  private subscribedToTopic: boolean;\n\n  /**\n   * Kafka topic.\n   * When the listener count for all events are zero, the consumer unsubscribes\n   * from the topic.\n   *\n   * @constructor\n   * @private\n   * @param {string} name Topic name\n   * @param provider\n   * @param config\n   */\n  constructor(\n    readonly name: string,\n    readonly provider: Kafka,\n    readonly config: KafkaProviderConfig,\n    readonly manualOffsetCommit = false,\n  ) {\n    this.emitter = new EventEmitter();\n    this.subscribed = [];\n    this.waitQueue = [];\n    this.currentOffset = 0n;\n  }\n\n  async createIfNotExists(): Promise<void> {\n    const topics = await this.provider.admin.listTopics();\n    if (!topics.includes(this.name)) {\n      return await new Promise((resolve, reject) => {\n        const operation = retry.operation({\n          retries: Number(this.config?.kafka?.retries ?? 10)\n        });\n        operation.attempt(async (attemptNo) => {\n          try {\n            await this.provider.admin.createTopics({\n              topics: [this.name]\n            });\n            this.provider.logger.info(`Topic ${this.name} created successfully, attempt no: ${attemptNo}`);\n            resolve();\n          }\n          catch (err: any) {\n            this.provider.logger.error(`Cannot create topic ${this.name}:`, decomposeError(err));\n            if (operation.retry(err)) {\n              this.provider.logger.info(`Retry creating Topic ${this.name}, attempt no: ${attemptNo}`);\n            }\n            else {\n              reject(err);\n            }\n          }\n        });\n      });\n    }\n    else {\n      this.provider.logger.debug(`Topic ${this.name} exists`);\n    }\n  }\n\n  /**\n   * Returns the number of listeners for the given event.\n   *\n   * @param  {string} eventName Name of the event\n   * @return {number}           Number of listeners\n   */\n  async listenerCount(eventName: string): Promise<number> {\n    if (isNullish(eventName)) {\n      throw new Error('missing argument eventName');\n    }\n    const listeners = this.emitter.listeners(eventName);\n    return listeners.length;\n  }\n\n  /**\n   * Returns whether or not any listeners exist for event.\n   *\n   * @param  {string}  eventName [description]\n   * @return {Boolean}           True when listeners exist, false if not.\n   */\n  async hasListeners(eventName: string): Promise<boolean> {\n    if (isNullish(eventName)) {\n      throw new Error('missing argument eventName');\n    }\n    const listeners = this.emitter.listeners(eventName);\n    return listeners.length > 0;\n  }\n\n  /**\n   * Remove the given listener from given event.\n   * If no eventName is provided, all listeners from all events will be removed.\n   * If no listener is provided, all listeners will be removed from the given event.\n   *\n   * @param  {string} eventName Name of the event\n   * @param  {function|generator} listener  Event listener\n   */\n  async removeListener(eventName: string, listener: Listener): Promise<void> {\n    this.provider.logger.verbose(`Removing listener from event ${eventName}`);\n    this.emitter.removeListener(eventName, listener);\n    const count = await this.listenerCount(eventName);\n    if (count === 0) {\n      await this.$unsubscribe(eventName);\n    }\n  }\n\n  /**\n   * Remove all listeners from given event.\n   * If no eventName is provided, all listeners from all events will be removed.\n   *\n   * @param  {string} eventName Name of the event\n   */\n  async removeAllListeners(eventName: string): Promise<void> {\n    this.provider.logger.verbose(`Removing all listeners from event ${eventName}`);\n    this.emitter.removeAllListeners(eventName);\n    const count = await this.listenerCount(eventName);\n    if (count === 0) {\n      await this.$unsubscribe(eventName);\n    }\n  }\n\n  /**\n   * Return the offset number of this topic.\n   *\n   * @param {bigint} time Use -1 for latest and 0 for earliest.\n   * @return {bigint} offset number\n   */\n  async $offset(time: bigint = -1n): Promise<bigint> {\n    try {\n      await this.initConsumerIfNotExists();\n      return await this.consumer.listOffsets({\n        topics: [this.name],\n        timestamp: time < 0n ? time : undefined,\n      }).then((r) => {\n        return r.get(this.name)[0];\n      })\n    }\n    catch (err: any) {\n      this.provider.logger.error('Error occurred retrieving topic offset:', decomposeError(err));\n      throw err;\n    }\n  }\n\n  /**\n   * Suspend the calling function until the Kafka client received a message with the offset.\n   * @param {bigint} offset Kafka message offset.\n   * @return {Promise} Thunk will be resolved when a message is received\n   * with the corresponding offset.\n   */\n  async $wait(offset: bigint): Promise<void> {\n    return new Promise((cb) => {\n      if (this.currentOffset >= offset) {\n        cb();\n        return;\n      }\n      this.waitQueue.push({ offset, cb });\n    });\n  }\n\n  /**\n   * Reset consumer, unsubscribes all the events on the topic and then\n   * subcribes again for same set of events\n   *\n   * @param {string[]} eventNames list of event names\n   * @param {bigint} offset The offset at which to restart from.\n   */\n  async $resetConsumer(eventNames: string[], offset: bigint): Promise<void> {\n    this.provider.logger.info('Event Names for consumer reset', eventNames);\n    if (eventNames && eventNames.length > 0) {\n      // since the consumer is set to undefined only when there is no more subscription\n      // need to unsubcribe all eventNames and then resubcribe at once\n      const eventNamesList = clone(eventNames);\n      // unsubscribe all events on consumer\n      for (const eventName of eventNamesList) {\n        await this.$unsubscribe(eventName);\n        this.provider.logger.info(`Unsubscribed event ${eventName}`);\n      }\n      // subscribe all events on consumer\n      for (const eventName of eventNamesList) {\n        await this.$subscribe(eventName, offset);\n        this.provider.logger.info(`Subscribed event ${eventName}`);\n      }\n    } else {\n      this.provider.logger.warn('Event names empty for consumer reset');\n    }\n  }\n\n  /**\n   * Force a committed offset reset.\n   *\n   * @param {string} eventName\n   * @param {bigint} offset The offset at which to restart from.\n   */\n  async $reset(eventName: string, offset: bigint): Promise<void> {\n    if (this.subscribed.includes(eventName)) {\n      await this.$unsubscribe(eventName);\n    }\n    await this.$subscribe(eventName, offset);\n  }\n\n  /**\n   * Unsubscribe from Kafka topic. Does not remove any listeners.\n   */\n  private async $unsubscribe(eventName: string): Promise<void> {\n    if (!isIncludedIn(eventName, this.subscribed)) {\n      return;\n    }\n    const index = this.subscribed.indexOf(eventName);\n    this.subscribed.splice(index, 1);\n  }\n\n  /**\n   * Filters subscribed messages among all received Kafka messages and then\n   * invokes $receive(event, msg, context);\n   * @return {function}\n   */\n  private makeDataHandler(context: Message): void {\n    const eventName = context.key.toString();\n    if (isIncludedIn(eventName, this.subscribed)) {\n      const logger = this.provider.logger;\n      try {\n        this.$receive(eventName, context.value, context);\n        // commit offset\n        const offset = context.offset;\n        this.filterWaitQueue(offset);\n        this.currentOffset = offset;\n        this.commit();\n      } catch (error: any) {\n        // do not commit offset\n        logger.error(`topic ${context.topic} error`, { code: error.code, message: error.message, stack: error.stack });\n        throw error;\n      }\n    }\n  }\n\n  private filterWaitQueue(offset: bigint | { offset: bigint }): void {\n    if (typeof offset === 'object') {\n      offset = offset.offset;\n    }\n    this.waitQueue = filter(this.waitQueue, (w) => {\n      if (w.offset <= offset) {\n        w.cb();\n        return false;\n      }\n      return true;\n    });\n  }\n\n  private async initConsumerIfNotExists(queue?: boolean): Promise<void> {\n    if (!this.consumer) {\n      this.consumer = await this.provider.newConsumer(`${this.provider.config.groupId}_${this.name}`);\n\n      try {\n        await this.consumer.connectToBrokers();\n        this.provider.logger.info(`Consumer for topic '${this.name}' connected`);\n      }\n      catch (err: any) {\n        this.provider.logger.error(`Consumer for topic '${this.name}' connection error`, decomposeError(err));\n        throw err;\n      }\n\n      // On receiving the message on Kafka consumer put the message to async Queue.\n      if (queue) {\n        // start drain process\n        this.drain();\n      }\n    }\n  }\n\n  /**\n   * Subscribe to the kafka topic.\n   *\n   * @param eventName\n   * @param offsetValue\n   * @param queue\n   **/\n  private async $subscribe(eventName: string, offsetValue: bigint, queue?: boolean): Promise<void> {\n    if (!this.subscribedToTopic) {\n      this.subscribedToTopic = true;\n      await this.initConsumerIfNotExists(queue);\n      this.consumer.consume({ // await consume takes ~3 seconds!\n        sessionTimeout: 10000,\n        heartbeatInterval: 500,\n        topics: [this.name],\n        mode: 'manual',\n        offsets: [{\n          topic: this.name,\n          partition: 0,\n          offset: BigInt(offsetValue)\n        }],\n      }).then(\n        stream => {\n        this.provider.logger.info(`Consumer for topic '${this.name}' subscribed`);\n        stream.on('data', (message) => {\n          if (queue) {\n            this.onMessageForQueue(message);\n          } else {\n            this.makeDataHandler(message);\n          }\n        });\n      },\n      (err: any) => {\n        this.subscribedToTopic = false;\n        this.provider.logger.error(`Consumer for topic '${this.name}' failed to run`, decomposeError(err));\n        throw err;\n      });\n    }\n\n    this.subscribed.push(eventName);\n  }\n\n  private onMessageForQueue(context: Message): void {\n    if (isIncludedIn(context.key.toString(), this.subscribed)) {\n      this.asyncQueue.push(context);\n    }\n  }\n\n  /**\n   * main reg. function, pass it a function to receive messages\n   * under flow control\n   */\n  private drain(): void {\n    this.drainEvent = (context: Message, done: (err: any) => void) => {\n      this.$receive(context.key.toString(), context.value, context);\n    };\n    this.startToReceiveMessages();\n  }\n\n  private startToReceiveMessages(): void {\n    this.asyncQueue = async.queue((message: Message, done) => {\n      if (this.drainEvent) {\n        setImmediate(() => {\n          this.drainEvent(message, (err) => {\n            if (err) {\n              done(err);\n            }\n          });\n          this.filterWaitQueue(message.offset);\n        });\n      } else {\n        this.provider.logger.error('No draining event was provided; discarding messages');\n        done();\n      }\n    }, this.asyncLimit);\n\n    (this.asyncQueue.drain as any)(() => {\n      // commit state first, before resuming\n      this.provider.logger.verbose('Committing offsets upon async queue drain');\n      this.commit();\n    });\n\n    this.provider.logger.info('Async queue draining started.');\n  }\n\n  private async commit(): Promise<void> {\n    // Check if manual offset commit is enabled\n    if (!this.manualOffsetCommit) {\n      return await this.commitCurrentOffsets().then(\n        () => {\n          this.provider.logger.verbose('Offsets committed successfully');\n        },\n        async (error: any) => {\n          this.provider.logger.warn('Failed to commit offsets, resuming anyway after:', decomposeError(error));\n          // Fix for kafkaJS onCrash issue for KafkaJSNonRetriableError, to reset the consumers\n          this.provider.logger.warn('Commit error name', { name: error.name });\n          this.provider.logger.warn('Commit error message', { message: error.message });\n          if ((error.name === 'KafkaJSNonRetriableError' || error.name === 'KafkaJSError') && error.message === 'The coordinator is not aware of this member') {\n            this.provider.logger.info('Reset Consumer connection due to KafkaJSNonRetriableError');\n            await this.$resetConsumer(this.subscribed, this.currentOffset);\n            this.provider.logger.info('Consumer connection reset successfully');\n          }\n        }\n      );\n    }\n  }\n\n  async commitCurrentOffsets(): Promise<void> {\n    try {\n      await this.consumer.commit({\n        offsets: [{\n          leaderEpoch: 0, // ?\n          topic: this.name,\n          offset: this.currentOffset,\n          partition: 0 // ?\n        }]\n      });\n    }\n    catch (err: any) {\n      this.provider.logger.error('Error committing offset', decomposeError(err));\n      throw err;\n    }\n  }\n\n  /**\n   * Manually commit the current offset.\n   */\n  async commitOffset(): Promise<void> {\n    try {\n      // Commit the current offset\n      await this.commitCurrentOffsets();\n      this.provider.logger.verbose('Offset committed manually');\n    } catch (error: any) {\n      this.provider.logger.error('Failed to commit offset manually', { code: error.code, message: error.message, stack: error.stack });\n      throw error;\n    }\n  }\n\n  /**\n   * Internal function for receiving event messages from Kafka and\n   * forwarding them to local listeners.\n   * @param {string} eventName\n   * @param {Object} message\n   * @param {Object} context\n   */\n  private $receive(eventName: string, message: any, context: Message): void {\n    // Decode message here and get the auto completion here\n    if (this.hasListeners(eventName)) {\n      let decodedMsg = this.provider.decodeObject(\n        this.config,\n        eventName,\n        message\n      );\n      if (decodedMsg) {\n        decodedMsg = pick(decodedMsg, Object.keys(decodedMsg)); // hack around messy protobuf.js object\n        this.provider.logger.debug(`kafka received event with topic ${context.topic} and event name ${eventName} at offset ${context.offset.toString(10)}`, { decodedMsg });\n        this.emitter.emit(\n          eventName,\n          decodedMsg,\n          context,\n          this.config,\n          eventName\n        );\n      }\n    }\n  }\n  \n  /**\n   * Listen to events.\n   * When the topic is not subscribed to a Kafka topic, a connection to Kafka is\n   * made and a group consumer subscribes to the Kafka topic with the name\n   * of this topic.\n   * NOTE When subscribing this call can take a bit. You can subscribe to a topic\n   * preemptively by calling $subscribe.\n   *\n   * @param  {string} eventName Event name\n   * @param  {function|generator} listener  Listener\n   * @param opts\n   */\n  async on(eventName: string, listener: Listener, opts: SubscriptionOptions = {}): Promise<void> {\n    let { startingOffset } = opts;\n    const { queue, forceOffset } = opts;\n    if (!(this.subscribed.includes(eventName))) {\n      if (isNullish(startingOffset) || (this.config.latestOffset && !forceOffset)) {\n        // override the startingOffset with the latestOffset from Kafka\n        // if above config is set\n        startingOffset = await this.$offset(-1n);\n      }\n      await this.$subscribe(eventName, BigInt(startingOffset), queue);\n    }\n    this.emitter.on(eventName, listener);\n  }\n\n  /**\n   * Send event messages.\n   *\n   * @param  {string} eventName Event name\n   * @param  {Object} message   Message\n   */\n  async emit(eventName: string, message: object): Promise<void> {\n    await this.provider.$send(this.name, eventName, message);\n  }\n\n  stop(): Promise<void> {\n    throw new Error('Method not implemented.');\n  }\n}\n\nexport interface KafkaProviderConfig {\n  kafka: ProducerOptions<Buffer, Buffer, Buffer, Buffer>\n    & ConsumerOptions<Buffer, Buffer, Buffer, Buffer>\n    & AdminOptions;\n  timeout: number;\n  groupId: string;\n  [key: string]: any;\n}\n\n/**\n * Events provider.\n */\nexport class Kafka implements EventProvider {\n  readonly topics: Record<string, KafkaTopic> = {};\n  private producer: Producer;\n  \n  admin: Admin;\n  producerConnected: boolean;\n  adminConnected: boolean;\n  commonOptions: KafkaProviderConfig['kafka'];\n\n  /**\n   * Kafka is a provider for Events.\n   *\n   * @constructor\n   * @see {@link Events}\n   * @param {object} config\n   * @param {object} logger\n   */\n  constructor(\n    readonly config: KafkaProviderConfig,\n    readonly logger: Logger\n  ) {\n    this.config = clone(config);\n  }\n\n  /**\n   * Start connects to kafka with a producer.\n   * Suspends the calling function until the producer is connected.\n   */\n  async start(): Promise<void> {\n    const operation = retry.operation({\n      forever: true,\n      maxTimeout: this.config?.timeout ?? 60000,\n      retries: Number(this.config?.kafka?.retries ?? 10),\n    });\n    return new Promise<void>((resolveRetry) => {\n      operation.attempt(async (attemptNo) => {\n        try {\n          this.commonOptions = {\n            serializers: {\n              key: noopSerializer,\n              value: noopSerializer,\n              headerKey: noopSerializer,\n              headerValue: noopSerializer,\n            },\n            deserializers: {\n              key: noopDeserializer,\n              value: noopDeserializer,\n              headerKey: noopDeserializer,\n              headerValue: noopDeserializer,\n            },\n            retries: 100,\n            retryDelay: 1000,\n            autocommit: false,\n            ...this.config.kafka,\n          };\n\n          // These are kept from migration of KafkaJS to Platformic lib\n          if ('brokers' in this.commonOptions) {\n            this.commonOptions['bootstrapBrokers'] = this.commonOptions['brokers'] as string[];\n          }\n\n          this.logger?.info(`[kafka-client] Connecting - attempt No: ${attemptNo}`);\n\n          this.producer = new Producer(this.commonOptions);\n          this.admin = new Admin(this.commonOptions);\n\n          // waiting for producer to be ready\n          await new Promise((resolveProducer, rejectProducer) => {\n            this.producer.on('client:broker:connect', () => {\n              this.producerConnected = true;\n              this.logger?.info('The Producer is ready.');\n            });\n\n            this.producer.on('client:broker:disconnect', (err: any) => {\n              this.producerConnected = false;\n              this.logger?.warn('The Producer has disconnected:', err);\n              rejectProducer(err);\n            });\n\n            this.producer.on('client:broker:failed', (err: any) => {\n              this.logger?.warn('The Producer connection failed:', err);\n              rejectProducer(err);\n            });\n\n            this.producer.connectToBrokers().then(() => {\n              resolveProducer(true);\n            }).catch((err: any) => {\n              rejectProducer(err);\n              this.logger?.warn('Producer connection error:', err);\n            });\n          }).then(() => {\n            this.admin.on('client:broker:connect', () => {\n              this.logger?.info('The Admin is ready.');\n              this.adminConnected = true;\n            });\n\n            this.admin.on('client:broker:disconnect', (err: any) => {\n              this.logger?.warn('The Admin connection failed:', err);\n              this.adminConnected = false\n            });\n\n            this.admin.on('client:broker:failed', (err: any) => {\n              this.logger?.warn('The Admin connection failed:', err);\n              throw err;\n            });\n\n            this.admin.connectToBrokers().then(() => {\n              resolveRetry();\n            }).catch(\n              (err: any) => {\n                this.logger?.warn('Admin connection error:', err);\n                throw err;\n              }\n            );\n          });\n        }\n        catch (err: any) {\n          operation.retry(err);\n          this.producer?.close();\n          this.logger?.info(`Retry initialize the Producer, attempt No: ${attemptNo}`);\n        }\n      });\n    });\n  }\n\n  /**\n   * Encode the given message object using protobuf.js.\n   *\n   * @param  {Object} msg\n   * @param  {string} messageObject\n   * @return {Object} buffer\n   */\n  private static encodeObject(msg: object, messageObject: string): Uint8Array {\n    return encodeMessage(msg, messageObject);\n  }\n\n  /**\n   * Decode the given message using protobuf.js.\n   * @param config\n   * @param eventName\n   * @param msg\n   */\n  decodeObject(config: KafkaProviderConfig, eventName: string, msg: any): any {\n    try {\n      return decodeMessage(msg, config[eventName].messageObject);\n    } catch (error: any) {\n      this.logger?.error(\n        `error on decoding message with event ${eventName}`,\n        { error }\n      );\n    }\n  }\n\n  /**\n   * Send a message event to a Kafka topic.\n   * A protobuf message is an instance of the google's protobuf generated class\n   *\n   * @param  {string} topicName\n   * @param  {string} eventName\n   * @param  {Object|Object[]} message\n   */\n  async $send(topicName: string, eventName: string, message: any): Promise<ProduceResult> {\n    try {\n      const messages = Array.isArray(message) ? message : [message];\n      const config = this.config;\n      const messageObject = config[eventName]?.messageObject;\n      if (!messageObject) {\n        throw new Error(`messageObject for event ${eventName} not configured!`);\n      }\n      const values: Message[] = messages?.map(\n        msg => {\n          const bufferObj = Kafka.encodeObject(msg, messageObject);\n          return {\n            topic: topicName,\n            key: Buffer.from(eventName),\n            value: Buffer.from(bufferObj),\n            partition: 0,\n            headers: {}\n          } as Message;\n        }\n      );\n      for (const msg of messages ?? []) {\n        if (config[eventName]?.omittedFields) {\n          const keys = config[eventName].omittedFields;\n          this.omitFields(keys, msg, config[eventName].enableLogging);\n        }\n      }\n      this.logger?.debug(`Sending event ${eventName} to topic ${topicName}`, { messages });\n      return await this.producer.send({\n        messages: values\n      }).then((data) => {\n        for (let i = 0; i < messages.length; i++) {\n          const msg = messages[i];\n          this.logger?.debug(`Sent event ${eventName} to topic ${topicName} at offset ${data.offsets[i].offset.toString(10)}`, msg);\n        }\n        return data;\n      });\n    } catch (error: any) {\n      const { message, details, stack } = error;\n      this.logger?.error(`Error on sending event ${eventName} to topic ${topicName}`, { message, details, stack });\n      throw error;\n    }\n  }\n\n  private omitFields(keys: string | string[], msg: any, enableLogging?: boolean): void {\n    const msgs = Array.isArray(msg) ? msg : [msg];\n    for (const key of keys) {\n      for (const msg of msgs) {\n        if (typeof key === 'string') {\n          if (enableLogging && msg[key] && msg[key].value) {\n            msg[key] = msg[key].value.toString();\n          } else if (enableLogging && msg[key] && Array.isArray(msg[key])) {\n            for (const eachMsg of msg[key]) {\n              msg[key] = eachMsg.value.toString();\n            }\n          } else {\n            delete msg[key];\n          }\n        } else if (typeof key === 'object') {\n          const prefixKey = Object.keys(key)[0];\n          this.omitFields(key[prefixKey], msg[prefixKey], enableLogging);\n        }\n      }\n    }\n  }\n\n  /**\n   * Returns a Kafka topic.\n   *\n   * @param  {string} topicName Topic name\n   * @param config\n   * @return {Topic} Kafka topic\n   */\n  async topic(topicName: string, config: KafkaProviderConfig): Promise<Topic> {\n    this.topics[topicName] ??= new KafkaTopic(topicName, this, config);\n    await this.topics[topicName].createIfNotExists();\n    return this.topics[topicName];\n  }\n\n  /**\n   * stops the connection to kafka.\n   * The calling function is suspended until the producer and\n   * all consumers from topics are disconnected.\n   */\n  async stop(): Promise<any> {\n    this.logger?.warn('Stopping Kafka. Ignore any following connection errors');\n\n    const errors: any[] = [];\n    if (this.producerConnected) {\n      await this.producer.close().catch((err: any) => {\n        this.logger?.warn('Error occurred stopping Kafka producer:', err);\n        errors.push(err);\n      });\n    }\n\n    if (this.adminConnected) {\n      await this.admin.close().catch((err: any) => {\n        this.logger?.warn('Error occurred stopping Kafka admin:', err);\n        errors.push(err);\n      });\n    }\n\n    for (const topic of Object.values(this.topics)) {\n      for (const eventName of topic.subscribed?.reverse() ?? []) {\n        await topic.removeAllListeners(eventName);\n      }\n    }\n\n    if (errors.length > 0) {\n      this.logger?.error('Errors when stopping Kafka client:', errors);\n      throw errors;\n    }\n  }\n\n  async delete(topics: string[]) {\n    try {\n      return await this.admin.deleteTopics({\n        topics,\n      });\n    }\n    finally {\n      for (const topic of topics) {\n        delete this.topics[topic];\n      }\n    }\n  }\n\n  async deleteAll() {\n    try {\n      return await this.admin.deleteTopics({\n        topics: Object.keys(this.topics),\n      });\n    }\n    finally {\n      for (const topic of Object.keys(this.topics)) {\n        delete this.topics[topic];\n      }\n    }\n  }\n\n  async newConsumer(groupId: string): Promise<Consumer> {\n    const consumer = new Consumer({\n      groupId: groupId,\n      ...this.commonOptions\n    });\n\n    consumer.on('client:broker:connect', (msg: any) => {\n      this.logger?.info('Consumer is ready.', msg);\n    });\n\n    consumer.on('client:broker:disconnect', (err: any) => {\n      this.logger?.warn('Consumer connection failed:', err);\n    });\n\n    consumer.on('client:broker:failed', (err: any) => {\n      this.logger?.warn('Consumer connection failed:', err);\n    });\n\n    consumer.on('client:broker:drain', (msg: any) => {\n      this.logger?.info('Consumer broker ready for requests:', msg);\n    });\n\n    consumer.on('client:metadata', (msg: any) => {\n      this.logger?.silly('Consumer broker metadata:', msg);\n    });\n\n    consumer.on('client:close', (msg: any) => {\n      this.logger?.warn('Consumer client closed:', msg);\n    });\n\n    consumer.on('consumer:group:join', (msg: any) => {\n      this.logger?.info('Consumer joining group:', msg);\n    });\n\n    consumer.on('consumer:group:leave', (msg: any) => {\n      this.logger?.info('Consumer leaving group:', msg);\n    });\n\n    consumer.on('consumer:group:rejoin', (msg: any) => {\n      this.logger?.warn('Consumer re-joining group:', msg);\n    });\n\n    consumer.on('consumer:group:rebalance', (msg: any) => {\n      this.logger?.warn('Consumer group rebalancing:', msg);\n    });\n\n    consumer.on('consumer:heartbeat:cancel', (err: any) => {\n      this.logger?.warn('Consumer heartbeat cancelled:', err);\n    });\n\n    consumer.on('consumer:heartbeat:error', (err: any) => {\n      this.logger?.error('Consumer heartbeat error:', err);\n    });\n\n    return consumer;\n  }\n}\n\n/**\n * Name of the event provider.\n */\nexport const Name = 'kafka';\n\nexport interface SubscriptionOptions {\n  startingOffset?: bigint;\n  queue?: boolean;\n  forceOffset?: boolean;\n}\n", "import { channel as simpleChannel, tracingChannel } from 'node:diagnostics_channel';\nexport const channelsNamespace = 'plt:kafka';\nlet operationId = 0n;\nexport function createDiagnosticContext(context) {\n    return { operationId: operationId++, ...context };\n}\nexport function notifyCreation(type, instance) {\n    instancesChannel.publish({ type, instance });\n}\nexport function createChannel(name) {\n    name = `${channelsNamespace}:${name}`;\n    const channel = simpleChannel(name);\n    channel.name = name;\n    return channel;\n}\nexport function createTracingChannel(name) {\n    name = `${channelsNamespace}:${name}`;\n    const channel = tracingChannel(name);\n    channel.name = name;\n    return channel;\n}\n// Generic channel for objects creation\nexport const instancesChannel = createChannel('instances');\n// Connection related channels\nexport const connectionsConnectsChannel = createTracingChannel('connections:connects');\nexport const connectionsApiChannel = createTracingChannel('connections:api');\nexport const connectionsPoolGetsChannel = createTracingChannel('connections:pool:get');\n// Base channels\nexport const baseApisChannel = createTracingChannel('base:apis');\nexport const baseMetadataChannel = createTracingChannel('base:metadata');\n// Admin channels\nexport const adminTopicsChannel = createTracingChannel('admin:topics');\nexport const adminGroupsChannel = createTracingChannel('admin:groups');\nexport const adminClientQuotasChannel = createTracingChannel('admin:clientQuotas');\nexport const adminLogDirsChannel = createTracingChannel('admin:logDirs');\n// Producer channels\nexport const producerInitIdempotentChannel = createTracingChannel('producer:initIdempotent');\nexport const producerSendsChannel = createTracingChannel('producer:sends');\n// Consumer channels\nexport const consumerGroupChannel = createTracingChannel('consumer:group');\nexport const consumerHeartbeatChannel = createTracingChannel('consumer:heartbeat');\nexport const consumerReceivesChannel = createTracingChannel('consumer:receives');\nexport const consumerFetchesChannel = createTracingChannel('consumer:fetches');\nexport const consumerConsumesChannel = createTracingChannel('consumer:consumes');\nexport const consumerCommitsChannel = createTracingChannel('consumer:commits');\nexport const consumerOffsetsChannel = createTracingChannel('consumer:offsets');\nexport const consumerLagChannel = createChannel('consumer:lag');\n", "// This is autogenerated from the generate:apis script, do not edit manually.\nexport const protocolAPIsByName = Object.freeze({\n    AddOffsetsToTxn: 25,\n    AddPartitionsToTxn: 24,\n    AddRaftVoter: 80,\n    AllocateProducerIds: 67,\n    AlterClientQuotas: 49,\n    AlterConfigs: 33,\n    AlterPartitionReassignments: 45,\n    AlterPartition: 56,\n    AlterReplicaLogDirs: 34,\n    AlterShareGroupOffsets: 91,\n    AlterUserScramCredentials: 51,\n    ApiVersions: 18,\n    AssignReplicasToDirs: 73,\n    BeginQuorumEpoch: 53,\n    BrokerHeartbeat: 63,\n    BrokerRegistration: 62,\n    ConsumerGroupDescribe: 69,\n    ConsumerGroupHeartbeat: 68,\n    ControlledShutdown: 7,\n    ControllerRegistration: 70,\n    CreateAcls: 30,\n    CreateDelegationToken: 38,\n    CreatePartitions: 37,\n    CreateTopics: 19,\n    DeleteAcls: 31,\n    DeleteGroups: 42,\n    DeleteRecords: 21,\n    DeleteShareGroupOffsets: 92,\n    DeleteShareGroupState: 86,\n    DeleteTopics: 20,\n    DescribeAcls: 29,\n    DescribeClientQuotas: 48,\n    DescribeCluster: 60,\n    DescribeConfigs: 32,\n    DescribeDelegationToken: 41,\n    DescribeGroups: 15,\n    DescribeLogDirs: 35,\n    DescribeProducers: 61,\n    DescribeQuorum: 55,\n    DescribeShareGroupOffsets: 90,\n    DescribeTopicPartitions: 75,\n    DescribeTransactions: 65,\n    DescribeUserScramCredentials: 50,\n    ElectLeaders: 43,\n    EndQuorumEpoch: 54,\n    EndTxn: 26,\n    Envelope: 58,\n    ExpireDelegationToken: 40,\n    Fetch: 1,\n    FetchSnapshot: 59,\n    FindCoordinator: 10,\n    GetTelemetrySubscriptions: 71,\n    Heartbeat: 12,\n    IncrementalAlterConfigs: 44,\n    InitProducerId: 22,\n    InitializeShareGroupState: 83,\n    JoinGroup: 11,\n    LeaderAndIsr: 4,\n    LeaveGroup: 13,\n    ListClientMetricsResources: 74,\n    ListGroups: 16,\n    ListOffsets: 2,\n    ListPartitionReassignments: 46,\n    ListTransactions: 66,\n    Metadata: 3,\n    OffsetCommit: 8,\n    OffsetDelete: 47,\n    OffsetFetch: 9,\n    OffsetForLeaderEpoch: 23,\n    Produce: 0,\n    PushTelemetry: 72,\n    ReadShareGroupState: 84,\n    ReadShareGroupStateSummary: 87,\n    RemoveRaftVoter: 81,\n    RenewDelegationToken: 39,\n    SaslAuthenticate: 36,\n    SaslHandshake: 17,\n    ShareAcknowledge: 79,\n    ShareFetch: 78,\n    ShareGroupDescribe: 77,\n    ShareGroupHeartbeat: 76,\n    StopReplica: 5,\n    StreamsGroupDescribe: 89,\n    StreamsGroupHeartbeat: 88,\n    SyncGroup: 14,\n    TxnOffsetCommit: 28,\n    UnregisterBroker: 64,\n    UpdateFeatures: 57,\n    UpdateMetadata: 6,\n    UpdateRaftVoter: 82,\n    Vote: 52,\n    WriteShareGroupState: 85,\n    WriteTxnMarkers: 27\n});\nexport const protocolAPIsById = Object.freeze({\n    0: 'Produce',\n    1: 'Fetch',\n    2: 'ListOffsets',\n    3: 'Metadata',\n    4: 'LeaderAndIsr',\n    5: 'StopReplica',\n    6: 'UpdateMetadata',\n    7: 'ControlledShutdown',\n    8: 'OffsetCommit',\n    9: 'OffsetFetch',\n    10: 'FindCoordinator',\n    11: 'JoinGroup',\n    12: 'Heartbeat',\n    13: 'LeaveGroup',\n    14: 'SyncGroup',\n    15: 'DescribeGroups',\n    16: 'ListGroups',\n    17: 'SaslHandshake',\n    18: 'ApiVersions',\n    19: 'CreateTopics',\n    20: 'DeleteTopics',\n    21: 'DeleteRecords',\n    22: 'InitProducerId',\n    23: 'OffsetForLeaderEpoch',\n    24: 'AddPartitionsToTxn',\n    25: 'AddOffsetsToTxn',\n    26: 'EndTxn',\n    27: 'WriteTxnMarkers',\n    28: 'TxnOffsetCommit',\n    29: 'DescribeAcls',\n    30: 'CreateAcls',\n    31: 'DeleteAcls',\n    32: 'DescribeConfigs',\n    33: 'AlterConfigs',\n    34: 'AlterReplicaLogDirs',\n    35: 'DescribeLogDirs',\n    36: 'SaslAuthenticate',\n    37: 'CreatePartitions',\n    38: 'CreateDelegationToken',\n    39: 'RenewDelegationToken',\n    40: 'ExpireDelegationToken',\n    41: 'DescribeDelegationToken',\n    42: 'DeleteGroups',\n    43: 'ElectLeaders',\n    44: 'IncrementalAlterConfigs',\n    45: 'AlterPartitionReassignments',\n    46: 'ListPartitionReassignments',\n    47: 'OffsetDelete',\n    48: 'DescribeClientQuotas',\n    49: 'AlterClientQuotas',\n    50: 'DescribeUserScramCredentials',\n    51: 'AlterUserScramCredentials',\n    52: 'Vote',\n    53: 'BeginQuorumEpoch',\n    54: 'EndQuorumEpoch',\n    55: 'DescribeQuorum',\n    56: 'AlterPartition',\n    57: 'UpdateFeatures',\n    58: 'Envelope',\n    59: 'FetchSnapshot',\n    60: 'DescribeCluster',\n    61: 'DescribeProducers',\n    62: 'BrokerRegistration',\n    63: 'BrokerHeartbeat',\n    64: 'UnregisterBroker',\n    65: 'DescribeTransactions',\n    66: 'ListTransactions',\n    67: 'AllocateProducerIds',\n    68: 'ConsumerGroupHeartbeat',\n    69: 'ConsumerGroupDescribe',\n    70: 'ControllerRegistration',\n    71: 'GetTelemetrySubscriptions',\n    72: 'PushTelemetry',\n    73: 'AssignReplicasToDirs',\n    74: 'ListClientMetricsResources',\n    75: 'DescribeTopicPartitions',\n    76: 'ShareGroupHeartbeat',\n    77: 'ShareGroupDescribe',\n    78: 'ShareFetch',\n    79: 'ShareAcknowledge',\n    80: 'AddRaftVoter',\n    81: 'RemoveRaftVoter',\n    82: 'UpdateRaftVoter',\n    83: 'InitializeShareGroupState',\n    84: 'ReadShareGroupState',\n    85: 'WriteShareGroupState',\n    86: 'DeleteShareGroupState',\n    87: 'ReadShareGroupStateSummary',\n    88: 'StreamsGroupHeartbeat',\n    89: 'StreamsGroupDescribe',\n    90: 'DescribeShareGroupOffsets',\n    91: 'AlterShareGroupOffsets',\n    92: 'DeleteShareGroupOffsets'\n});\n", "// This is autogenerated from the generate:errors script, do not edit manually.\nexport const protocolErrorsCodesById = {\n    0: 'NONE',\n    1: 'OFFSET_OUT_OF_RANGE',\n    2: 'CORRUPT_MESSAGE',\n    3: 'UNKNOWN_TOPIC_OR_PARTITION',\n    4: 'INVALID_FETCH_SIZE',\n    5: 'LEADER_NOT_AVAILABLE',\n    6: 'NOT_LEADER_OR_FOLLOWER',\n    7: 'REQUEST_TIMED_OUT',\n    8: 'BROKER_NOT_AVAILABLE',\n    9: 'REPLICA_NOT_AVAILABLE',\n    10: 'MESSAGE_TOO_LARGE',\n    11: 'STALE_CONTROLLER_EPOCH',\n    12: 'OFFSET_METADATA_TOO_LARGE',\n    13: 'NETWORK_EXCEPTION',\n    14: 'COORDINATOR_LOAD_IN_PROGRESS',\n    15: 'COORDINATOR_NOT_AVAILABLE',\n    16: 'NOT_COORDINATOR',\n    17: 'INVALID_TOPIC_EXCEPTION',\n    18: 'RECORD_LIST_TOO_LARGE',\n    19: 'NOT_ENOUGH_REPLICAS',\n    20: 'NOT_ENOUGH_REPLICAS_AFTER_APPEND',\n    21: 'INVALID_REQUIRED_ACKS',\n    22: 'ILLEGAL_GENERATION',\n    23: 'INCONSISTENT_GROUP_PROTOCOL',\n    24: 'INVALID_GROUP_ID',\n    25: 'UNKNOWN_MEMBER_ID',\n    26: 'INVALID_SESSION_TIMEOUT',\n    27: 'REBALANCE_IN_PROGRESS',\n    28: 'INVALID_COMMIT_OFFSET_SIZE',\n    29: 'TOPIC_AUTHORIZATION_FAILED',\n    30: 'GROUP_AUTHORIZATION_FAILED',\n    31: 'CLUSTER_AUTHORIZATION_FAILED',\n    32: 'INVALID_TIMESTAMP',\n    33: 'UNSUPPORTED_SASL_MECHANISM',\n    34: 'ILLEGAL_SASL_STATE',\n    35: 'UNSUPPORTED_VERSION',\n    36: 'TOPIC_ALREADY_EXISTS',\n    37: 'INVALID_PARTITIONS',\n    38: 'INVALID_REPLICATION_FACTOR',\n    39: 'INVALID_REPLICA_ASSIGNMENT',\n    40: 'INVALID_CONFIG',\n    41: 'NOT_CONTROLLER',\n    42: 'INVALID_REQUEST',\n    43: 'UNSUPPORTED_FOR_MESSAGE_FORMAT',\n    44: 'POLICY_VIOLATION',\n    45: 'OUT_OF_ORDER_SEQUENCE_NUMBER',\n    46: 'DUPLICATE_SEQUENCE_NUMBER',\n    47: 'INVALID_PRODUCER_EPOCH',\n    48: 'INVALID_TXN_STATE',\n    49: 'INVALID_PRODUCER_ID_MAPPING',\n    50: 'INVALID_TRANSACTION_TIMEOUT',\n    51: 'CONCURRENT_TRANSACTIONS',\n    52: 'TRANSACTION_COORDINATOR_FENCED',\n    53: 'TRANSACTIONAL_ID_AUTHORIZATION_FAILED',\n    54: 'SECURITY_DISABLED',\n    55: 'OPERATION_NOT_ATTEMPTED',\n    56: 'KAFKA_STORAGE_ERROR',\n    57: 'LOG_DIR_NOT_FOUND',\n    58: 'SASL_AUTHENTICATION_FAILED',\n    59: 'UNKNOWN_PRODUCER_ID',\n    60: 'REASSIGNMENT_IN_PROGRESS',\n    61: 'DELEGATION_TOKEN_AUTH_DISABLED',\n    62: 'DELEGATION_TOKEN_NOT_FOUND',\n    63: 'DELEGATION_TOKEN_OWNER_MISMATCH',\n    64: 'DELEGATION_TOKEN_REQUEST_NOT_ALLOWED',\n    65: 'DELEGATION_TOKEN_AUTHORIZATION_FAILED',\n    66: 'DELEGATION_TOKEN_EXPIRED',\n    67: 'INVALID_PRINCIPAL_TYPE',\n    68: 'NON_EMPTY_GROUP',\n    69: 'GROUP_ID_NOT_FOUND',\n    70: 'FETCH_SESSION_ID_NOT_FOUND',\n    71: 'INVALID_FETCH_SESSION_EPOCH',\n    72: 'LISTENER_NOT_FOUND',\n    73: 'TOPIC_DELETION_DISABLED',\n    74: 'FENCED_LEADER_EPOCH',\n    75: 'UNKNOWN_LEADER_EPOCH',\n    76: 'UNSUPPORTED_COMPRESSION_TYPE',\n    77: 'STALE_BROKER_EPOCH',\n    78: 'OFFSET_NOT_AVAILABLE',\n    79: 'MEMBER_ID_REQUIRED',\n    80: 'PREFERRED_LEADER_NOT_AVAILABLE',\n    81: 'GROUP_MAX_SIZE_REACHED',\n    82: 'FENCED_INSTANCE_ID',\n    83: 'ELIGIBLE_LEADERS_NOT_AVAILABLE',\n    84: 'ELECTION_NOT_NEEDED',\n    85: 'NO_REASSIGNMENT_IN_PROGRESS',\n    86: 'GROUP_SUBSCRIBED_TO_TOPIC',\n    87: 'INVALID_RECORD',\n    88: 'UNSTABLE_OFFSET_COMMIT',\n    89: 'THROTTLING_QUOTA_EXCEEDED',\n    90: 'PRODUCER_FENCED',\n    91: 'RESOURCE_NOT_FOUND',\n    92: 'DUPLICATE_RESOURCE',\n    93: 'UNACCEPTABLE_CREDENTIAL',\n    94: 'INCONSISTENT_VOTER_SET',\n    95: 'INVALID_UPDATE_VERSION',\n    96: 'FEATURE_UPDATE_FAILED',\n    97: 'PRINCIPAL_DESERIALIZATION_FAILURE',\n    98: 'SNAPSHOT_NOT_FOUND',\n    99: 'POSITION_OUT_OF_RANGE',\n    100: 'UNKNOWN_TOPIC_ID',\n    101: 'DUPLICATE_BROKER_REGISTRATION',\n    102: 'BROKER_ID_NOT_REGISTERED',\n    103: 'INCONSISTENT_TOPIC_ID',\n    104: 'INCONSISTENT_CLUSTER_ID',\n    105: 'TRANSACTIONAL_ID_NOT_FOUND',\n    106: 'FETCH_SESSION_TOPIC_ID_ERROR',\n    107: 'INELIGIBLE_REPLICA',\n    108: 'NEW_LEADER_ELECTED',\n    109: 'OFFSET_MOVED_TO_TIERED_STORAGE',\n    110: 'FENCED_MEMBER_EPOCH',\n    111: 'UNRELEASED_INSTANCE_ID',\n    112: 'UNSUPPORTED_ASSIGNOR',\n    113: 'STALE_MEMBER_EPOCH',\n    114: 'MISMATCHED_ENDPOINT_TYPE',\n    115: 'UNSUPPORTED_ENDPOINT_TYPE',\n    116: 'UNKNOWN_CONTROLLER_ID',\n    117: 'UNKNOWN_SUBSCRIPTION_ID',\n    118: 'TELEMETRY_TOO_LARGE',\n    119: 'INVALID_REGISTRATION',\n    120: 'TRANSACTION_ABORTABLE',\n    121: 'INVALID_RECORD_STATE',\n    122: 'SHARE_SESSION_NOT_FOUND',\n    123: 'INVALID_SHARE_SESSION_EPOCH',\n    124: 'FENCED_STATE_EPOCH',\n    125: 'INVALID_VOTER_KEY',\n    126: 'DUPLICATE_VOTER',\n    127: 'VOTER_NOT_FOUND',\n    '-1': 'UNKNOWN_SERVER_ERROR'\n};\nexport const protocolErrors = {\n    UNKNOWN_SERVER_ERROR: {\n        id: 'UNKNOWN_SERVER_ERROR',\n        code: -1,\n        canRetry: false,\n        message: 'The server experienced an unexpected error when processing the request.'\n    },\n    NONE: {\n        id: 'NONE',\n        code: 0,\n        canRetry: false,\n        message: ''\n    },\n    OFFSET_OUT_OF_RANGE: {\n        id: 'OFFSET_OUT_OF_RANGE',\n        code: 1,\n        canRetry: false,\n        message: 'The requested offset is not within the range of offsets maintained by the server.'\n    },\n    CORRUPT_MESSAGE: {\n        id: 'CORRUPT_MESSAGE',\n        code: 2,\n        canRetry: true,\n        message: 'This message has failed its CRC checksum, exceeds the valid size, has a null key for a compacted topic, or is otherwise corrupt.'\n    },\n    UNKNOWN_TOPIC_OR_PARTITION: {\n        id: 'UNKNOWN_TOPIC_OR_PARTITION',\n        code: 3,\n        canRetry: true,\n        message: 'This server does not host this topic-partition.'\n    },\n    INVALID_FETCH_SIZE: {\n        id: 'INVALID_FETCH_SIZE',\n        code: 4,\n        canRetry: false,\n        message: 'The requested fetch size is invalid.'\n    },\n    LEADER_NOT_AVAILABLE: {\n        id: 'LEADER_NOT_AVAILABLE',\n        code: 5,\n        canRetry: true,\n        message: 'There is no leader for this topic-partition as we are in the middle of a leadership election.'\n    },\n    NOT_LEADER_OR_FOLLOWER: {\n        id: 'NOT_LEADER_OR_FOLLOWER',\n        code: 6,\n        canRetry: true,\n        message: 'For requests intended only for the leader, this error indicates that the broker is not the current leader. For requests intended for any replica, this error indicates that the broker is not a replica of the topic partition.'\n    },\n    REQUEST_TIMED_OUT: {\n        id: 'REQUEST_TIMED_OUT',\n        code: 7,\n        canRetry: true,\n        message: 'The request timed out.'\n    },\n    BROKER_NOT_AVAILABLE: {\n        id: 'BROKER_NOT_AVAILABLE',\n        code: 8,\n        canRetry: false,\n        message: 'The broker is not available.'\n    },\n    REPLICA_NOT_AVAILABLE: {\n        id: 'REPLICA_NOT_AVAILABLE',\n        code: 9,\n        canRetry: true,\n        message: 'The replica is not available for the requested topic-partition. Produce/Fetch requests and other requests intended only for the leader or follower return NOT_LEADER_OR_FOLLOWER if the broker is not a replica of the topic-partition.'\n    },\n    MESSAGE_TOO_LARGE: {\n        id: 'MESSAGE_TOO_LARGE',\n        code: 10,\n        canRetry: false,\n        message: 'The request included a message larger than the max message size the server will accept.'\n    },\n    STALE_CONTROLLER_EPOCH: {\n        id: 'STALE_CONTROLLER_EPOCH',\n        code: 11,\n        canRetry: false,\n        message: 'The controller moved to another broker.'\n    },\n    OFFSET_METADATA_TOO_LARGE: {\n        id: 'OFFSET_METADATA_TOO_LARGE',\n        code: 12,\n        canRetry: false,\n        message: 'The metadata field of the offset request was too large.'\n    },\n    NETWORK_EXCEPTION: {\n        id: 'NETWORK_EXCEPTION',\n        code: 13,\n        canRetry: true,\n        message: 'The server disconnected before a response was received.'\n    },\n    COORDINATOR_LOAD_IN_PROGRESS: {\n        id: 'COORDINATOR_LOAD_IN_PROGRESS',\n        code: 14,\n        canRetry: true,\n        message: \"The coordinator is loading and hence can't process requests.\"\n    },\n    COORDINATOR_NOT_AVAILABLE: {\n        id: 'COORDINATOR_NOT_AVAILABLE',\n        code: 15,\n        canRetry: true,\n        message: 'The coordinator is not available.'\n    },\n    NOT_COORDINATOR: {\n        id: 'NOT_COORDINATOR',\n        code: 16,\n        canRetry: true,\n        message: 'This is not the correct coordinator.'\n    },\n    INVALID_TOPIC_EXCEPTION: {\n        id: 'INVALID_TOPIC_EXCEPTION',\n        code: 17,\n        canRetry: false,\n        message: 'The request attempted to perform an operation on an invalid topic.'\n    },\n    RECORD_LIST_TOO_LARGE: {\n        id: 'RECORD_LIST_TOO_LARGE',\n        code: 18,\n        canRetry: false,\n        message: 'The request included message batch larger than the configured segment size on the server.'\n    },\n    NOT_ENOUGH_REPLICAS: {\n        id: 'NOT_ENOUGH_REPLICAS',\n        code: 19,\n        canRetry: true,\n        message: 'Messages are rejected since there are fewer in-sync replicas than required.'\n    },\n    NOT_ENOUGH_REPLICAS_AFTER_APPEND: {\n        id: 'NOT_ENOUGH_REPLICAS_AFTER_APPEND',\n        code: 20,\n        canRetry: true,\n        message: 'Messages are written to the log, but to fewer in-sync replicas than required.'\n    },\n    INVALID_REQUIRED_ACKS: {\n        id: 'INVALID_REQUIRED_ACKS',\n        code: 21,\n        canRetry: false,\n        message: 'Produce request specified an invalid value for required acks.'\n    },\n    ILLEGAL_GENERATION: {\n        id: 'ILLEGAL_GENERATION',\n        code: 22,\n        canRetry: false,\n        message: 'Specified group generation id is not valid.'\n    },\n    INCONSISTENT_GROUP_PROTOCOL: {\n        id: 'INCONSISTENT_GROUP_PROTOCOL',\n        code: 23,\n        canRetry: false,\n        message: \"The group member's supported protocols are incompatible with those of existing members or first group member tried to join with empty protocol type or empty protocol list.\"\n    },\n    INVALID_GROUP_ID: {\n        id: 'INVALID_GROUP_ID',\n        code: 24,\n        canRetry: false,\n        message: 'The configured groupId is invalid.'\n    },\n    UNKNOWN_MEMBER_ID: {\n        id: 'UNKNOWN_MEMBER_ID',\n        code: 25,\n        canRetry: false,\n        message: 'The coordinator is not aware of this member.'\n    },\n    INVALID_SESSION_TIMEOUT: {\n        id: 'INVALID_SESSION_TIMEOUT',\n        code: 26,\n        canRetry: false,\n        message: 'The session timeout is not within the range allowed by the broker (as configured by group.min.session.timeout.ms and group.max.session.timeout.ms).'\n    },\n    REBALANCE_IN_PROGRESS: {\n        id: 'REBALANCE_IN_PROGRESS',\n        code: 27,\n        canRetry: false,\n        message: 'The group is rebalancing, so a rejoin is needed.'\n    },\n    INVALID_COMMIT_OFFSET_SIZE: {\n        id: 'INVALID_COMMIT_OFFSET_SIZE',\n        code: 28,\n        canRetry: false,\n        message: 'The committing offset data size is not valid.'\n    },\n    TOPIC_AUTHORIZATION_FAILED: {\n        id: 'TOPIC_AUTHORIZATION_FAILED',\n        code: 29,\n        canRetry: false,\n        message: 'Topic authorization failed.'\n    },\n    GROUP_AUTHORIZATION_FAILED: {\n        id: 'GROUP_AUTHORIZATION_FAILED',\n        code: 30,\n        canRetry: false,\n        message: 'Group authorization failed.'\n    },\n    CLUSTER_AUTHORIZATION_FAILED: {\n        id: 'CLUSTER_AUTHORIZATION_FAILED',\n        code: 31,\n        canRetry: false,\n        message: 'Cluster authorization failed.'\n    },\n    INVALID_TIMESTAMP: {\n        id: 'INVALID_TIMESTAMP',\n        code: 32,\n        canRetry: false,\n        message: 'The timestamp of the message is out of acceptable range.'\n    },\n    UNSUPPORTED_SASL_MECHANISM: {\n        id: 'UNSUPPORTED_SASL_MECHANISM',\n        code: 33,\n        canRetry: false,\n        message: 'The broker does not support the requested SASL mechanism.'\n    },\n    ILLEGAL_SASL_STATE: {\n        id: 'ILLEGAL_SASL_STATE',\n        code: 34,\n        canRetry: false,\n        message: 'Request is not valid given the current SASL state.'\n    },\n    UNSUPPORTED_VERSION: {\n        id: 'UNSUPPORTED_VERSION',\n        code: 35,\n        canRetry: false,\n        message: 'The version of API is not supported.'\n    },\n    TOPIC_ALREADY_EXISTS: {\n        id: 'TOPIC_ALREADY_EXISTS',\n        code: 36,\n        canRetry: false,\n        message: 'Topic with this name already exists.'\n    },\n    INVALID_PARTITIONS: {\n        id: 'INVALID_PARTITIONS',\n        code: 37,\n        canRetry: false,\n        message: 'Number of partitions is below 1.'\n    },\n    INVALID_REPLICATION_FACTOR: {\n        id: 'INVALID_REPLICATION_FACTOR',\n        code: 38,\n        canRetry: false,\n        message: 'Replication factor is below 1 or larger than the number of available brokers.'\n    },\n    INVALID_REPLICA_ASSIGNMENT: {\n        id: 'INVALID_REPLICA_ASSIGNMENT',\n        code: 39,\n        canRetry: false,\n        message: 'Replica assignment is invalid.'\n    },\n    INVALID_CONFIG: {\n        id: 'INVALID_CONFIG',\n        code: 40,\n        canRetry: false,\n        message: 'Configuration is invalid.'\n    },\n    NOT_CONTROLLER: {\n        id: 'NOT_CONTROLLER',\n        code: 41,\n        canRetry: true,\n        message: 'This is not the correct controller for this cluster.'\n    },\n    INVALID_REQUEST: {\n        id: 'INVALID_REQUEST',\n        code: 42,\n        canRetry: false,\n        message: 'This most likely occurs because of a request being malformed by the client library or the message was sent to an incompatible broker. See the broker logs for more details.'\n    },\n    UNSUPPORTED_FOR_MESSAGE_FORMAT: {\n        id: 'UNSUPPORTED_FOR_MESSAGE_FORMAT',\n        code: 43,\n        canRetry: false,\n        message: 'The message format version on the broker does not support the request.'\n    },\n    POLICY_VIOLATION: {\n        id: 'POLICY_VIOLATION',\n        code: 44,\n        canRetry: false,\n        message: 'Request parameters do not satisfy the configured policy.'\n    },\n    OUT_OF_ORDER_SEQUENCE_NUMBER: {\n        id: 'OUT_OF_ORDER_SEQUENCE_NUMBER',\n        code: 45,\n        canRetry: false,\n        message: 'The broker received an out of order sequence number.'\n    },\n    DUPLICATE_SEQUENCE_NUMBER: {\n        id: 'DUPLICATE_SEQUENCE_NUMBER',\n        code: 46,\n        canRetry: false,\n        message: 'The broker received a duplicate sequence number.'\n    },\n    INVALID_PRODUCER_EPOCH: {\n        id: 'INVALID_PRODUCER_EPOCH',\n        code: 47,\n        canRetry: false,\n        message: 'Producer attempted to produce with an old epoch.'\n    },\n    INVALID_TXN_STATE: {\n        id: 'INVALID_TXN_STATE',\n        code: 48,\n        canRetry: false,\n        message: 'The producer attempted a transactional operation in an invalid state.'\n    },\n    INVALID_PRODUCER_ID_MAPPING: {\n        id: 'INVALID_PRODUCER_ID_MAPPING',\n        code: 49,\n        canRetry: false,\n        message: 'The producer attempted to use a producer id which is not currently assigned to its transactional id.'\n    },\n    INVALID_TRANSACTION_TIMEOUT: {\n        id: 'INVALID_TRANSACTION_TIMEOUT',\n        code: 50,\n        canRetry: false,\n        message: 'The transaction timeout is larger than the maximum value allowed by the broker (as configured by transaction.max.timeout.ms).'\n    },\n    CONCURRENT_TRANSACTIONS: {\n        id: 'CONCURRENT_TRANSACTIONS',\n        code: 51,\n        canRetry: true,\n        message: 'The producer attempted to update a transaction while another concurrent operation on the same transaction was ongoing.'\n    },\n    TRANSACTION_COORDINATOR_FENCED: {\n        id: 'TRANSACTION_COORDINATOR_FENCED',\n        code: 52,\n        canRetry: false,\n        message: 'Indicates that the transaction coordinator sending a WriteTxnMarker is no longer the current coordinator for a given producer.'\n    },\n    TRANSACTIONAL_ID_AUTHORIZATION_FAILED: {\n        id: 'TRANSACTIONAL_ID_AUTHORIZATION_FAILED',\n        code: 53,\n        canRetry: false,\n        message: 'Transactional Id authorization failed.'\n    },\n    SECURITY_DISABLED: {\n        id: 'SECURITY_DISABLED',\n        code: 54,\n        canRetry: false,\n        message: 'Security features are disabled.'\n    },\n    OPERATION_NOT_ATTEMPTED: {\n        id: 'OPERATION_NOT_ATTEMPTED',\n        code: 55,\n        canRetry: false,\n        message: 'The broker did not attempt to execute this operation. This may happen for batched RPCs where some operations in the batch failed, causing the broker to respond without trying the rest.'\n    },\n    KAFKA_STORAGE_ERROR: {\n        id: 'KAFKA_STORAGE_ERROR',\n        code: 56,\n        canRetry: true,\n        message: 'Disk error when trying to access log file on the disk.'\n    },\n    LOG_DIR_NOT_FOUND: {\n        id: 'LOG_DIR_NOT_FOUND',\n        code: 57,\n        canRetry: false,\n        message: 'The user-specified log directory is not found in the broker config.'\n    },\n    SASL_AUTHENTICATION_FAILED: {\n        id: 'SASL_AUTHENTICATION_FAILED',\n        code: 58,\n        canRetry: false,\n        message: 'SASL authentication failed.'\n    },\n    UNKNOWN_PRODUCER_ID: {\n        id: 'UNKNOWN_PRODUCER_ID',\n        code: 59,\n        canRetry: false,\n        message: \"This exception is raised by the broker if it could not locate the producer metadata associated with the producerId in question. This could happen if, for instance, the producer's records were deleted because their retention time had elapsed. Once the last records of the producerId are removed, the producer's metadata is removed from the broker, and future appends by the producer will return this exception.\"\n    },\n    REASSIGNMENT_IN_PROGRESS: {\n        id: 'REASSIGNMENT_IN_PROGRESS',\n        code: 60,\n        canRetry: false,\n        message: 'A partition reassignment is in progress.'\n    },\n    DELEGATION_TOKEN_AUTH_DISABLED: {\n        id: 'DELEGATION_TOKEN_AUTH_DISABLED',\n        code: 61,\n        canRetry: false,\n        message: 'Delegation Token feature is not enabled.'\n    },\n    DELEGATION_TOKEN_NOT_FOUND: {\n        id: 'DELEGATION_TOKEN_NOT_FOUND',\n        code: 62,\n        canRetry: false,\n        message: 'Delegation Token is not found on server.'\n    },\n    DELEGATION_TOKEN_OWNER_MISMATCH: {\n        id: 'DELEGATION_TOKEN_OWNER_MISMATCH',\n        code: 63,\n        canRetry: false,\n        message: 'Specified Principal is not valid Owner/Renewer.'\n    },\n    DELEGATION_TOKEN_REQUEST_NOT_ALLOWED: {\n        id: 'DELEGATION_TOKEN_REQUEST_NOT_ALLOWED',\n        code: 64,\n        canRetry: false,\n        message: 'Delegation Token requests are not allowed on PLAINTEXT/1-way SSL channels and on delegation token authenticated channels.'\n    },\n    DELEGATION_TOKEN_AUTHORIZATION_FAILED: {\n        id: 'DELEGATION_TOKEN_AUTHORIZATION_FAILED',\n        code: 65,\n        canRetry: false,\n        message: 'Delegation Token authorization failed.'\n    },\n    DELEGATION_TOKEN_EXPIRED: {\n        id: 'DELEGATION_TOKEN_EXPIRED',\n        code: 66,\n        canRetry: false,\n        message: 'Delegation Token is expired.'\n    },\n    INVALID_PRINCIPAL_TYPE: {\n        id: 'INVALID_PRINCIPAL_TYPE',\n        code: 67,\n        canRetry: false,\n        message: 'Supplied principalType is not supported.'\n    },\n    NON_EMPTY_GROUP: {\n        id: 'NON_EMPTY_GROUP',\n        code: 68,\n        canRetry: false,\n        message: 'The group is not empty.'\n    },\n    GROUP_ID_NOT_FOUND: {\n        id: 'GROUP_ID_NOT_FOUND',\n        code: 69,\n        canRetry: false,\n        message: 'The group id does not exist.'\n    },\n    FETCH_SESSION_ID_NOT_FOUND: {\n        id: 'FETCH_SESSION_ID_NOT_FOUND',\n        code: 70,\n        canRetry: true,\n        message: 'The fetch session ID was not found.'\n    },\n    INVALID_FETCH_SESSION_EPOCH: {\n        id: 'INVALID_FETCH_SESSION_EPOCH',\n        code: 71,\n        canRetry: true,\n        message: 'The fetch session epoch is invalid.'\n    },\n    LISTENER_NOT_FOUND: {\n        id: 'LISTENER_NOT_FOUND',\n        code: 72,\n        canRetry: true,\n        message: 'There is no listener on the leader broker that matches the listener on which metadata request was processed.'\n    },\n    TOPIC_DELETION_DISABLED: {\n        id: 'TOPIC_DELETION_DISABLED',\n        code: 73,\n        canRetry: false,\n        message: 'Topic deletion is disabled.'\n    },\n    FENCED_LEADER_EPOCH: {\n        id: 'FENCED_LEADER_EPOCH',\n        code: 74,\n        canRetry: true,\n        message: 'The leader epoch in the request is older than the epoch on the broker.'\n    },\n    UNKNOWN_LEADER_EPOCH: {\n        id: 'UNKNOWN_LEADER_EPOCH',\n        code: 75,\n        canRetry: true,\n        message: 'The leader epoch in the request is newer than the epoch on the broker.'\n    },\n    UNSUPPORTED_COMPRESSION_TYPE: {\n        id: 'UNSUPPORTED_COMPRESSION_TYPE',\n        code: 76,\n        canRetry: false,\n        message: 'The requesting client does not support the compression type of given partition.'\n    },\n    STALE_BROKER_EPOCH: {\n        id: 'STALE_BROKER_EPOCH',\n        code: 77,\n        canRetry: false,\n        message: 'Broker epoch has changed.'\n    },\n    OFFSET_NOT_AVAILABLE: {\n        id: 'OFFSET_NOT_AVAILABLE',\n        code: 78,\n        canRetry: true,\n        message: 'The leader high watermark has not caught up from a recent leader election so the offsets cannot be guaranteed to be monotonically increasing.'\n    },\n    MEMBER_ID_REQUIRED: {\n        id: 'MEMBER_ID_REQUIRED',\n        code: 79,\n        canRetry: false,\n        message: 'The group member needs to have a valid member id before actually entering a consumer group.'\n    },\n    PREFERRED_LEADER_NOT_AVAILABLE: {\n        id: 'PREFERRED_LEADER_NOT_AVAILABLE',\n        code: 80,\n        canRetry: true,\n        message: 'The preferred leader was not available.'\n    },\n    GROUP_MAX_SIZE_REACHED: {\n        id: 'GROUP_MAX_SIZE_REACHED',\n        code: 81,\n        canRetry: false,\n        message: 'The consumer group has reached its max size.'\n    },\n    FENCED_INSTANCE_ID: {\n        id: 'FENCED_INSTANCE_ID',\n        code: 82,\n        canRetry: false,\n        message: 'The broker rejected this static consumer since another consumer with the same group.instance.id has registered with a different member.id.'\n    },\n    ELIGIBLE_LEADERS_NOT_AVAILABLE: {\n        id: 'ELIGIBLE_LEADERS_NOT_AVAILABLE',\n        code: 83,\n        canRetry: true,\n        message: 'Eligible topic partition leaders are not available.'\n    },\n    ELECTION_NOT_NEEDED: {\n        id: 'ELECTION_NOT_NEEDED',\n        code: 84,\n        canRetry: true,\n        message: 'Leader election not needed for topic partition.'\n    },\n    NO_REASSIGNMENT_IN_PROGRESS: {\n        id: 'NO_REASSIGNMENT_IN_PROGRESS',\n        code: 85,\n        canRetry: false,\n        message: 'No partition reassignment is in progress.'\n    },\n    GROUP_SUBSCRIBED_TO_TOPIC: {\n        id: 'GROUP_SUBSCRIBED_TO_TOPIC',\n        code: 86,\n        canRetry: false,\n        message: 'Deleting offsets of a topic is forbidden while the consumer group is actively subscribed to it.'\n    },\n    INVALID_RECORD: {\n        id: 'INVALID_RECORD',\n        code: 87,\n        canRetry: false,\n        message: 'This record has failed the validation on broker and hence will be rejected.'\n    },\n    UNSTABLE_OFFSET_COMMIT: {\n        id: 'UNSTABLE_OFFSET_COMMIT',\n        code: 88,\n        canRetry: true,\n        message: 'There are unstable offsets that need to be cleared.'\n    },\n    THROTTLING_QUOTA_EXCEEDED: {\n        id: 'THROTTLING_QUOTA_EXCEEDED',\n        code: 89,\n        canRetry: true,\n        message: 'The throttling quota has been exceeded.'\n    },\n    PRODUCER_FENCED: {\n        id: 'PRODUCER_FENCED',\n        code: 90,\n        canRetry: false,\n        message: 'There is a newer producer with the same transactionalId which fences the current one.'\n    },\n    RESOURCE_NOT_FOUND: {\n        id: 'RESOURCE_NOT_FOUND',\n        code: 91,\n        canRetry: false,\n        message: 'A request illegally referred to a resource that does not exist.'\n    },\n    DUPLICATE_RESOURCE: {\n        id: 'DUPLICATE_RESOURCE',\n        code: 92,\n        canRetry: false,\n        message: 'A request illegally referred to the same resource twice.'\n    },\n    UNACCEPTABLE_CREDENTIAL: {\n        id: 'UNACCEPTABLE_CREDENTIAL',\n        code: 93,\n        canRetry: false,\n        message: 'Requested credential would not meet criteria for acceptability.'\n    },\n    INCONSISTENT_VOTER_SET: {\n        id: 'INCONSISTENT_VOTER_SET',\n        code: 94,\n        canRetry: false,\n        message: 'Indicates that the either the sender or recipient of a voter-only request is not one of the expected voters.'\n    },\n    INVALID_UPDATE_VERSION: {\n        id: 'INVALID_UPDATE_VERSION',\n        code: 95,\n        canRetry: false,\n        message: 'The given update version was invalid.'\n    },\n    FEATURE_UPDATE_FAILED: {\n        id: 'FEATURE_UPDATE_FAILED',\n        code: 96,\n        canRetry: false,\n        message: 'Unable to update finalized features due to an unexpected server error.'\n    },\n    PRINCIPAL_DESERIALIZATION_FAILURE: {\n        id: 'PRINCIPAL_DESERIALIZATION_FAILURE',\n        code: 97,\n        canRetry: false,\n        message: 'Request principal deserialization failed during forwarding. This indicates an internal error on the broker cluster security setup.'\n    },\n    SNAPSHOT_NOT_FOUND: {\n        id: 'SNAPSHOT_NOT_FOUND',\n        code: 98,\n        canRetry: false,\n        message: 'Requested snapshot was not found.'\n    },\n    POSITION_OUT_OF_RANGE: {\n        id: 'POSITION_OUT_OF_RANGE',\n        code: 99,\n        canRetry: false,\n        message: 'Requested position is not greater than or equal to zero, and less than the size of the snapshot.'\n    },\n    UNKNOWN_TOPIC_ID: {\n        id: 'UNKNOWN_TOPIC_ID',\n        code: 100,\n        canRetry: true,\n        message: 'This server does not host this topic ID.'\n    },\n    DUPLICATE_BROKER_REGISTRATION: {\n        id: 'DUPLICATE_BROKER_REGISTRATION',\n        code: 101,\n        canRetry: false,\n        message: 'This broker ID is already in use.'\n    },\n    BROKER_ID_NOT_REGISTERED: {\n        id: 'BROKER_ID_NOT_REGISTERED',\n        code: 102,\n        canRetry: false,\n        message: 'The given broker ID was not registered.'\n    },\n    INCONSISTENT_TOPIC_ID: {\n        id: 'INCONSISTENT_TOPIC_ID',\n        code: 103,\n        canRetry: true,\n        message: \"The log's topic ID did not match the topic ID in the request.\"\n    },\n    INCONSISTENT_CLUSTER_ID: {\n        id: 'INCONSISTENT_CLUSTER_ID',\n        code: 104,\n        canRetry: false,\n        message: 'The clusterId in the request does not match that found on the server.'\n    },\n    TRANSACTIONAL_ID_NOT_FOUND: {\n        id: 'TRANSACTIONAL_ID_NOT_FOUND',\n        code: 105,\n        canRetry: false,\n        message: 'The transactionalId could not be found.'\n    },\n    FETCH_SESSION_TOPIC_ID_ERROR: {\n        id: 'FETCH_SESSION_TOPIC_ID_ERROR',\n        code: 106,\n        canRetry: true,\n        message: 'The fetch session encountered inconsistent topic ID usage.'\n    },\n    INELIGIBLE_REPLICA: {\n        id: 'INELIGIBLE_REPLICA',\n        code: 107,\n        canRetry: false,\n        message: 'The new ISR contains at least one ineligible replica.'\n    },\n    NEW_LEADER_ELECTED: {\n        id: 'NEW_LEADER_ELECTED',\n        code: 108,\n        canRetry: false,\n        message: 'The AlterPartition request successfully updated the partition state but the leader has changed.'\n    },\n    OFFSET_MOVED_TO_TIERED_STORAGE: {\n        id: 'OFFSET_MOVED_TO_TIERED_STORAGE',\n        code: 109,\n        canRetry: false,\n        message: 'The requested offset is moved to tiered storage.'\n    },\n    FENCED_MEMBER_EPOCH: {\n        id: 'FENCED_MEMBER_EPOCH',\n        code: 110,\n        canRetry: false,\n        message: 'The member epoch is fenced by the group coordinator. The member must abandon all its partitions and rejoin.'\n    },\n    UNRELEASED_INSTANCE_ID: {\n        id: 'UNRELEASED_INSTANCE_ID',\n        code: 111,\n        canRetry: false,\n        message: 'The instance ID is still used by another member in the consumer group. That member must leave first.'\n    },\n    UNSUPPORTED_ASSIGNOR: {\n        id: 'UNSUPPORTED_ASSIGNOR',\n        code: 112,\n        canRetry: false,\n        message: 'The assignor or its version range is not supported by the consumer group.'\n    },\n    STALE_MEMBER_EPOCH: {\n        id: 'STALE_MEMBER_EPOCH',\n        code: 113,\n        canRetry: false,\n        message: 'The member epoch is stale. The member must retry after receiving its updated member epoch via the ConsumerGroupHeartbeat API.'\n    },\n    MISMATCHED_ENDPOINT_TYPE: {\n        id: 'MISMATCHED_ENDPOINT_TYPE',\n        code: 114,\n        canRetry: false,\n        message: 'The request was sent to an endpoint of the wrong type.'\n    },\n    UNSUPPORTED_ENDPOINT_TYPE: {\n        id: 'UNSUPPORTED_ENDPOINT_TYPE',\n        code: 115,\n        canRetry: false,\n        message: 'This endpoint type is not supported yet.'\n    },\n    UNKNOWN_CONTROLLER_ID: {\n        id: 'UNKNOWN_CONTROLLER_ID',\n        code: 116,\n        canRetry: false,\n        message: 'This controller ID is not known.'\n    },\n    UNKNOWN_SUBSCRIPTION_ID: {\n        id: 'UNKNOWN_SUBSCRIPTION_ID',\n        code: 117,\n        canRetry: false,\n        message: 'Client sent a push telemetry request with an invalid or outdated subscription ID.'\n    },\n    TELEMETRY_TOO_LARGE: {\n        id: 'TELEMETRY_TOO_LARGE',\n        code: 118,\n        canRetry: false,\n        message: 'Client sent a push telemetry request larger than the maximum size the broker will accept.'\n    },\n    INVALID_REGISTRATION: {\n        id: 'INVALID_REGISTRATION',\n        code: 119,\n        canRetry: false,\n        message: 'The controller has considered the broker registration to be invalid.'\n    },\n    TRANSACTION_ABORTABLE: {\n        id: 'TRANSACTION_ABORTABLE',\n        code: 120,\n        canRetry: false,\n        message: 'The server encountered an error with the transaction. The client can abort the transaction to continue using this transactional ID.'\n    },\n    INVALID_RECORD_STATE: {\n        id: 'INVALID_RECORD_STATE',\n        code: 121,\n        canRetry: false,\n        message: 'The record state is invalid. The acknowledgement of delivery could not be completed.'\n    },\n    SHARE_SESSION_NOT_FOUND: {\n        id: 'SHARE_SESSION_NOT_FOUND',\n        code: 122,\n        canRetry: true,\n        message: 'The share session was not found.'\n    },\n    INVALID_SHARE_SESSION_EPOCH: {\n        id: 'INVALID_SHARE_SESSION_EPOCH',\n        code: 123,\n        canRetry: true,\n        message: 'The share session epoch is invalid.'\n    },\n    FENCED_STATE_EPOCH: {\n        id: 'FENCED_STATE_EPOCH',\n        code: 124,\n        canRetry: false,\n        message: 'The share coordinator rejected the request because the share-group state epoch did not match.'\n    },\n    INVALID_VOTER_KEY: {\n        id: 'INVALID_VOTER_KEY',\n        code: 125,\n        canRetry: false,\n        message: \"The voter key doesn't match the receiving replica's key.\"\n    },\n    DUPLICATE_VOTER: {\n        id: 'DUPLICATE_VOTER',\n        code: 126,\n        canRetry: false,\n        message: 'The voter is already part of the set of voters.'\n    },\n    VOTER_NOT_FOUND: {\n        id: 'VOTER_NOT_FOUND',\n        code: 127,\n        canRetry: false,\n        message: 'The voter is not part of the set of voters.'\n    }\n};\n", "import { protocolAPIsById } from \"./protocol/apis.js\";\nimport { protocolErrors, protocolErrorsCodesById } from \"./protocol/errors.js\";\nconst kGenericError = Symbol('plt.kafka.genericError');\nconst kMultipleErrors = Symbol('plt.kafka.multipleErrors');\nexport const ERROR_PREFIX = 'PLT_KFK_';\nexport const errorCodes = [\n    'PLT_KFK_AUTHENTICATION',\n    'PLT_KFK_MULTIPLE',\n    'PLT_KFK_NETWORK',\n    'PLT_KFK_OUT_OF_BOUNDS',\n    'PLT_KFK_PROTOCOL',\n    'PLT_KFK_RESPONSE',\n    'PLT_KFK_TIMEOUT',\n    'PLT_KFK_UNEXPECTED_CORRELATION_ID',\n    'PLT_KFK_UNFINISHED_WRITE_BUFFER',\n    'PLT_KFK_UNSUPPORTED_API',\n    'PLT_KFK_UNSUPPORTED_COMPRESSION',\n    'PLT_KFK_UNSUPPORTED',\n    'PLT_KFK_USER'\n];\nexport class GenericError extends Error {\n    code;\n    [kGenericError];\n    static isGenericError(error) {\n        return error[kGenericError] === true;\n    }\n    constructor(code, message, { cause, ...rest } = {}) {\n        super(message, cause ? { cause } : {});\n        this.code = code;\n        this[kGenericError] = true;\n        Reflect.defineProperty(this, 'message', { enumerable: true });\n        Reflect.defineProperty(this, 'code', { enumerable: true });\n        if ('stack' in this) {\n            Reflect.defineProperty(this, 'stack', { enumerable: true });\n        }\n        for (const [key, value] of Object.entries(rest)) {\n            Reflect.defineProperty(this, key, { value, enumerable: true });\n        }\n        Reflect.defineProperty(this, kGenericError, { value: true, enumerable: false });\n    }\n    findBy(property, value) {\n        if (this[property] === value) {\n            return this;\n        }\n        return null;\n    }\n}\nexport class MultipleErrors extends AggregateError {\n    code;\n    [kGenericError];\n    [kMultipleErrors];\n    static code = 'PLT_KFK_MULTIPLE';\n    static isGenericError(error) {\n        return error[kGenericError] === true;\n    }\n    static isMultipleErrors(error) {\n        return error[kMultipleErrors] === true;\n    }\n    constructor(message, errors, { cause, ...rest } = {}) {\n        super(errors, message, cause ? { cause } : {});\n        this.code = MultipleErrors.code;\n        this[kGenericError] = true;\n        this[kMultipleErrors] = true;\n        Reflect.defineProperty(this, 'message', { enumerable: true });\n        Reflect.defineProperty(this, 'code', { enumerable: true });\n        if ('stack' in this) {\n            Reflect.defineProperty(this, 'stack', { enumerable: true });\n        }\n        for (const [key, value] of Object.entries(rest)) {\n            Reflect.defineProperty(this, key, { value, enumerable: true });\n        }\n        Reflect.defineProperty(this, kGenericError, { value: true, enumerable: false });\n        Reflect.defineProperty(this, kMultipleErrors, { value: true, enumerable: false });\n    }\n    findBy(property, value) {\n        if (this[property] === value) {\n            return this;\n        }\n        for (const error of this.errors) {\n            if (error[property] === value) {\n                return error;\n            }\n            const found = error[kGenericError] ? error.findBy(property, value) : undefined;\n            if (found) {\n                return found;\n            }\n        }\n        return null;\n    }\n}\nexport * from \"./protocol/errors.js\";\nexport class AuthenticationError extends GenericError {\n    static code = 'PLT_KFK_AUTHENTICATION';\n    constructor(message, properties = {}) {\n        super(AuthenticationError.code, message, { canRetry: false, ...properties });\n    }\n}\nexport class NetworkError extends GenericError {\n    static code = 'PLT_KFK_NETWORK';\n    constructor(message, properties = {}) {\n        super(NetworkError.code, message, properties);\n    }\n}\nexport class ProtocolError extends GenericError {\n    static code = 'PLT_KFK_PROTOCOL';\n    constructor(codeOrId, properties = {}, response = undefined) {\n        const { id, code, message, canRetry } = protocolErrors[typeof codeOrId === 'number' ? protocolErrorsCodesById[codeOrId] : codeOrId];\n        super(ProtocolError.code, message, {\n            apiId: id,\n            apiCode: code,\n            canRetry,\n            hasStaleMetadata: ['UNKNOWN_TOPIC_OR_PARTITION', 'LEADER_NOT_AVAILABLE', 'NOT_LEADER_OR_FOLLOWER'].includes(id),\n            needsRejoin: ['MEMBER_ID_REQUIRED', 'UNKNOWN_MEMBER_ID', 'REBALANCE_IN_PROGRESS'].includes(id),\n            rebalanceInProgress: id === 'REBALANCE_IN_PROGRESS',\n            unknownMemberId: id === 'UNKNOWN_MEMBER_ID',\n            memberId: response?.memberId,\n            ...properties\n        });\n    }\n}\nexport class OutOfBoundsError extends GenericError {\n    static code = 'PLT_KFK_OUT_OF_BOUNDS';\n    constructor(message, properties = {}) {\n        super(OutOfBoundsError.code, message, { isOut: true, ...properties });\n    }\n}\nexport class ResponseError extends MultipleErrors {\n    static code = 'PLT_KFK_RESPONSE';\n    constructor(apiName, apiVersion, errors, response, properties = {}) {\n        super(`Received response with error while executing API ${protocolAPIsById[apiName]}(v${apiVersion})`, Object.entries(errors).map(([path, errorCode]) => new ProtocolError(errorCode, { path }, response)), {\n            ...properties,\n            response\n        });\n        this.code = ResponseError.code;\n    }\n}\nexport class TimeoutError extends GenericError {\n    static code = 'PLT_KFK_TIMEOUT';\n    constructor(message, properties = {}) {\n        super(NetworkError.code, message, properties);\n    }\n}\nexport class UnexpectedCorrelationIdError extends GenericError {\n    static code = 'PLT_KFK_UNEXPECTED_CORRELATION_ID';\n    constructor(message, properties = {}) {\n        super(UnexpectedCorrelationIdError.code, message, { canRetry: false, ...properties });\n    }\n}\nexport class UnfinishedWriteBufferError extends GenericError {\n    static code = 'PLT_KFK_UNFINISHED_WRITE_BUFFER';\n    constructor(message, properties = {}) {\n        super(UnfinishedWriteBufferError.code, message, { canRetry: false, ...properties });\n    }\n}\nexport class UnsupportedApiError extends GenericError {\n    static code = 'PLT_KFK_UNSUPPORTED_API';\n    constructor(message, properties = {}) {\n        super(UnsupportedApiError.code, message, { canRetry: false, ...properties });\n    }\n}\nexport class UnsupportedCompressionError extends GenericError {\n    static code = 'PLT_KFK_UNSUPPORTED_COMPRESSION';\n    constructor(message, properties = {}) {\n        super(UnsupportedCompressionError.code, message, { canRetry: false, ...properties });\n    }\n}\nexport class UnsupportedError extends GenericError {\n    static code = 'PLT_KFK_UNSUPPORTED';\n    constructor(message, properties = {}) {\n        super(UnsupportedError.code, message, { canRetry: false, ...properties });\n    }\n}\nexport class UserError extends GenericError {\n    static code = 'PLT_KFK_USER';\n    constructor(message, properties = {}) {\n        super(UserError.code, message, { canRetry: false, ...properties });\n    }\n}\n", "import { Ajv2020 } from 'ajv/dist/2020.js';\nimport debug from 'debug';\nimport { inspect } from 'node:util';\nexport { setTimeout as sleep } from 'node:timers/promises';\n/* c8 ignore start - Hard to test */\nfunction PromiseWithResolversPolyfill() {\n    let resolve;\n    let reject;\n    const promise = new Promise((_resolve, _reject) => {\n        resolve = _resolve;\n        reject = _reject;\n    });\n    // @ts-expect-error - resolve and reject are assigned in the promise constructor\n    return { promise, resolve, reject };\n}\nexport const PromiseWithResolvers = Promise.withResolvers\n    ? Promise.withResolvers.bind(Promise)\n    : PromiseWithResolversPolyfill;\n/* c8 ignore end */\nexport const ajv = new Ajv2020({ allErrors: true, coerceTypes: false, strict: true });\nexport const loggers = {\n    protocol: debug('plt:kafka:protocol'),\n    client: debug('plt:kafka:client'),\n    producer: debug('plt:kafka:producer'),\n    consumer: debug('plt:kafka:consumer'),\n    'consumer:heartbeat': debug('plt:kafka:consumer:heartbeat'),\n    admin: debug('plt:kafka:admin')\n};\nlet debugDumpLogger = console.error;\najv.addKeyword({\n    keyword: 'bigint',\n    validate(_, x) {\n        return typeof x === 'bigint';\n    },\n    error: {\n        message: 'must be bigint'\n    }\n});\najv.addKeyword({\n    keyword: 'map',\n    validate(_, x) {\n        return x instanceof Map;\n    },\n    error: {\n        message: 'must be Map'\n    }\n});\najv.addKeyword({\n    keyword: 'function',\n    validate(_, x) {\n        return typeof x === 'function';\n    },\n    error: {\n        message: 'must be function'\n    }\n});\najv.addKeyword({\n    keyword: 'buffer',\n    validate(_, x) {\n        return Buffer.isBuffer(x);\n    },\n    error: {\n        message: 'must be Buffer'\n    }\n});\najv.addKeyword({\n    keyword: 'gteProperty',\n    validate(property, current, _, context) {\n        const root = context?.parentData;\n        return current >= root[property];\n    },\n    error: {\n        message({ schema }) {\n            return `must be greater than or equal to $dataVar$/${schema}`;\n        }\n    }\n});\najv.addKeyword({\n    keyword: 'lteProperty',\n    validate(property, current, _, context) {\n        const root = context?.parentData;\n        return current < root[property];\n    },\n    error: {\n        message({ schema }) {\n            return `must be less than or equal to $dataVar$/${schema}`;\n        }\n    }\n});\najv.addKeyword({\n    keyword: 'enumeration', // This mimics the enum keyword but defines a custom error message\n    validate(property, current) {\n        return property.allowed.includes(current);\n    },\n    error: {\n        message({ schema }) {\n            return schema.errorMessage;\n        }\n    }\n});\nexport class NumericMap extends Map {\n    getWithDefault(key, fallback) {\n        return this.get(key) ?? fallback;\n    }\n    preIncrement(key, value, fallback) {\n        let existing = this.getWithDefault(key, fallback);\n        existing += value;\n        this.set(key, existing);\n        return existing;\n    }\n    postIncrement(key, value, fallback) {\n        const existing = this.getWithDefault(key, fallback);\n        this.set(key, existing + value);\n        return existing;\n    }\n}\nexport function niceJoin(array, lastSeparator = ' and ', separator = ', ') {\n    switch (array.length) {\n        case 0:\n            return '';\n        case 1:\n            return array[0];\n        case 2:\n            return array.join(lastSeparator);\n        default:\n            return array.slice(0, -1).join(separator) + lastSeparator + array.at(-1);\n    }\n}\nexport function listErrorMessage(type) {\n    return `should be one of ${niceJoin(type, ' or ')}`;\n}\nexport function enumErrorMessage(type, keysOnly = false) {\n    if (keysOnly) {\n        return `should be one of ${niceJoin(Object.keys(type), ' or ')}`;\n    }\n    return `should be one of ${niceJoin(Object.entries(type).map(([k, v]) => `${v} (${k})`), ' or ')}`;\n}\nexport function groupByProperty(entries, property) {\n    const buckets = Object.create(null);\n    for (let i = 0, len = entries.length; i < len; ++i) {\n        const e = entries[i];\n        const key = e[property];\n        (buckets[key] ||= []).push(e);\n    }\n    return Object.entries(buckets);\n}\nexport function humanize(label, buffer) {\n    const formatted = buffer\n        .toString('hex')\n        .replaceAll(/(.{4})/g, '$1 ')\n        .trim();\n    return `${label} (${buffer.length} bytes): ${formatted}`;\n}\nexport function setDebugDumpLogger(logger) {\n    debugDumpLogger = logger;\n}\nexport function debugDump(...values) {\n    debugDumpLogger(new Date().toISOString(), ...values.map(v => (typeof v === 'string' ? v : inspect(v, false, 10))));\n}\n", "import EventEmitter from 'node:events';\nimport { createPromisifiedCallback, kCallbackPromise, runConcurrentCallbacks } from \"../apis/callbacks.js\";\nimport { connectionsPoolGetsChannel, createDiagnosticContext, notifyCreation } from \"../diagnostic.js\";\nimport { MultipleErrors } from \"../errors.js\";\nimport { Connection, ConnectionStatuses } from \"./connection.js\";\nlet currentInstance = 0;\nexport class ConnectionPool extends EventEmitter {\n    #instanceId;\n    #clientId;\n    #closed;\n    // @ts-ignore This is used just for debugging\n    #ownerId;\n    #connections;\n    #connectionOptions;\n    constructor(clientId, connectionOptions = {}) {\n        super();\n        this.#closed = false;\n        this.#instanceId = currentInstance++;\n        this.#clientId = clientId;\n        this.#ownerId = connectionOptions.ownerId;\n        this.#connections = new Map();\n        this.#connectionOptions = connectionOptions;\n        notifyCreation('connection-pool', this);\n    }\n    get instanceId() {\n        return this.#instanceId;\n    }\n    get(broker, callback) {\n        if (!callback) {\n            callback = createPromisifiedCallback();\n        }\n        connectionsPoolGetsChannel.traceCallback(this.#get, 1, createDiagnosticContext({ connectionPool: this, broker, operation: 'get' }), this, broker, callback);\n        return callback[kCallbackPromise];\n    }\n    getFirstAvailable(brokers, callback) {\n        if (!callback) {\n            callback = createPromisifiedCallback();\n        }\n        connectionsPoolGetsChannel.traceCallback(this.#getFirstAvailable, 3, createDiagnosticContext({ connectionPool: this, brokers, operation: 'getFirstAvailable' }), this, brokers, 0, [], callback);\n        return callback[kCallbackPromise];\n    }\n    close(callback) {\n        if (!callback) {\n            callback = createPromisifiedCallback();\n        }\n        if (this.#closed || this.#connections.size === 0) {\n            this.#closed = true;\n            callback(null);\n            return callback[kCallbackPromise];\n        }\n        this.#closed = true;\n        runConcurrentCallbacks('Closing connections failed.', this.#connections, ([key, connection], cb) => {\n            connection.close(cb);\n            this.#connections.delete(key);\n        }, error => callback(error));\n        return callback[kCallbackPromise];\n    }\n    isActive() {\n        if (this.#connections.size === 0) {\n            return false;\n        }\n        return true;\n    }\n    isConnected() {\n        if (this.#connections.size === 0) {\n            return false;\n        }\n        for (const connection of this.#connections.values()) {\n            if (!connection.isConnected()) {\n                return false;\n            }\n        }\n        return true;\n    }\n    #get(broker, callback) {\n        if (this.#closed) {\n            callback(new Error('Connection pool is closed.'), undefined);\n            return;\n        }\n        const key = `${broker.host}:${broker.port}`;\n        const existing = this.#connections.get(key);\n        if (existing) {\n            if (existing.status !== ConnectionStatuses.CONNECTED) {\n                existing.ready(error => {\n                    if (error) {\n                        callback(error, undefined);\n                        return;\n                    }\n                    callback(null, existing);\n                });\n            }\n            else {\n                callback(null, existing);\n            }\n            return;\n        }\n        const connection = new Connection(this.#clientId, this.#connectionOptions);\n        this.#connections.set(key, connection);\n        const eventPayload = { broker, connection };\n        this.emit('connecting', eventPayload);\n        connection.connect(broker.host, broker.port, error => {\n            if (error) {\n                this.#connections.delete(key);\n                this.emit('failed', eventPayload);\n                callback(error, undefined);\n                return;\n            }\n            this.emit('connect', eventPayload);\n            callback(null, connection);\n        });\n        connection.on('sasl:handshake', mechanisms => {\n            this.emit('sasl:handshake', { ...eventPayload, mechanisms });\n        });\n        connection.on('sasl:authentication', authentication => {\n            this.emit('sasl:authentication', { ...eventPayload, authentication });\n        });\n        connection.on('sasl:authentication:extended', authentication => {\n            this.emit('sasl:authentication:extended', { ...eventPayload, authentication });\n        });\n        // Remove stale connections from the pool\n        connection.once('close', () => {\n            this.emit('disconnect', eventPayload);\n            this.#connections.delete(key);\n        });\n        connection.once('error', () => {\n            this.#connections.delete(key);\n        });\n        connection.on('drain', () => {\n            this.emit('drain', eventPayload);\n        });\n    }\n    #getFirstAvailable(brokers, current = 0, errors = [], callback) {\n        this.get(brokers[current], (error, connection) => {\n            if (error) {\n                errors.push(error);\n                if (current === brokers.length - 1) {\n                    callback(new MultipleErrors('Cannot connect to any broker.', errors), undefined);\n                    return;\n                }\n                this.#getFirstAvailable(brokers, current + 1, errors, callback);\n                return;\n            }\n            callback(null, connection);\n        });\n    }\n}\n", "import { MultipleErrors, TimeoutError } from \"../errors.js\";\nimport { PromiseWithResolvers } from \"../utils.js\";\nexport const kCallbackPromise = Symbol('plt.kafka.callbackPromise');\n// This is only meaningful for testing\nexport const kNoopCallbackReturnValue = Symbol('plt.kafka.noopCallbackReturnValue');\nexport const noopCallback = () => {\n    return Promise.resolve(kNoopCallbackReturnValue);\n};\nexport function createPromisifiedCallback() {\n    const { promise, resolve, reject } = PromiseWithResolvers();\n    function callback(error, payload) {\n        if (error) {\n            reject(error);\n        }\n        else {\n            resolve(payload);\n        }\n    }\n    callback[kCallbackPromise] = promise;\n    return callback;\n}\nexport function runConcurrentCallbacks(errorMessage, collection, operation, callback) {\n    let remaining = Array.isArray(collection) ? collection.length : collection.size;\n    let hasErrors = false;\n    const errors = Array.from(Array(remaining));\n    const results = Array.from(Array(remaining));\n    let i = 0;\n    function operationCallback(index, e, result) {\n        if (e) {\n            hasErrors = true;\n            errors[index] = e;\n        }\n        else {\n            results[index] = result;\n        }\n        remaining--;\n        if (remaining === 0) {\n            callback(hasErrors ? new MultipleErrors(errorMessage, errors) : null, results);\n        }\n    }\n    if (remaining === 0) {\n        callback(null, results);\n    }\n    for (const item of collection) {\n        operation(item, operationCallback.bind(null, i++));\n    }\n}\nexport function createTimeoutCallback(callback, timeout, errorMessage) {\n    let timeoutFired = false;\n    const timeoutHandle = setTimeout(() => {\n        timeoutFired = true;\n        callback(new TimeoutError(errorMessage), undefined);\n    }, timeout);\n    return (error, result) => {\n        if (timeoutFired) {\n            return;\n        }\n        clearTimeout(timeoutHandle);\n        callback(error, result);\n    };\n}\n", "import fastq from 'fastq';\nimport EventEmitter from 'node:events';\nimport { createConnection } from 'node:net';\nimport { connect as createTLSConnection } from 'node:tls';\nimport { createPromisifiedCallback, kCallbackPromise } from \"../apis/callbacks.js\";\nimport { allowedSASLMechanisms, SASLMechanisms } from \"../apis/enumerations.js\";\nimport { saslAuthenticateV2, saslHandshakeV1 } from \"../apis/index.js\";\nimport { connectionsApiChannel, connectionsConnectsChannel, createDiagnosticContext, notifyCreation } from \"../diagnostic.js\";\nimport { AuthenticationError, NetworkError, TimeoutError, UnexpectedCorrelationIdError, UserError } from \"../errors.js\";\nimport { protocolAPIsById } from \"../protocol/apis.js\";\nimport { EMPTY_OR_SINGLE_COMPACT_LENGTH_SIZE, INT32_SIZE } from \"../protocol/definitions.js\";\nimport { DynamicBuffer } from \"../protocol/dynamic-buffer.js\";\nimport { saslOAuthBearer, saslPlain, saslScramSha } from \"../protocol/index.js\";\nimport { Reader } from \"../protocol/reader.js\";\nimport { defaultCrypto } from \"../protocol/sasl/scram-sha.js\";\nimport { Writer } from \"../protocol/writer.js\";\nimport { loggers } from \"../utils.js\";\nexport const ConnectionStatuses = {\n    NONE: 'none',\n    CONNECTING: 'connecting',\n    AUTHENTICATING: 'authenticating',\n    CONNECTED: 'connected',\n    CLOSED: 'closed',\n    CLOSING: 'closing',\n    ERROR: 'error'\n};\nexport const defaultOptions = {\n    connectTimeout: 5000,\n    maxInflights: 5\n};\nlet currentInstance = 0;\nexport class Connection extends EventEmitter {\n    #host;\n    #port;\n    #options;\n    #status;\n    #instanceId;\n    #clientId;\n    // @ts-ignore This is used just for debugging\n    #ownerId;\n    #handleBackPressure;\n    #correlationId;\n    #nextMessage;\n    #afterDrainRequests;\n    #requestsQueue;\n    #inflightRequests;\n    #responseBuffer;\n    #responseReader;\n    #socket;\n    #socketMustBeDrained;\n    #reauthenticationTimeout;\n    constructor(clientId, options = {}) {\n        super();\n        this.setMaxListeners(0);\n        this.#instanceId = currentInstance++;\n        this.#options = Object.assign({}, defaultOptions, options);\n        this.#status = ConnectionStatuses.NONE;\n        this.#clientId = clientId;\n        this.#ownerId = options.ownerId;\n        this.#handleBackPressure = options.handleBackPressure ?? false;\n        this.#correlationId = 0;\n        this.#nextMessage = 0;\n        this.#afterDrainRequests = [];\n        this.#requestsQueue = fastq((op, cb) => op(cb), this.#options.maxInflights);\n        this.#inflightRequests = new Map();\n        this.#responseBuffer = new DynamicBuffer();\n        this.#responseReader = new Reader(this.#responseBuffer);\n        this.#socketMustBeDrained = false;\n        notifyCreation('connection', this);\n    }\n    get host() {\n        return this.#status === ConnectionStatuses.CONNECTED ? this.#host : undefined;\n    }\n    get port() {\n        return this.#status === ConnectionStatuses.CONNECTED ? this.#port : undefined;\n    }\n    get instanceId() {\n        return this.#instanceId;\n    }\n    get status() {\n        return this.#status;\n    }\n    get socket() {\n        return this.#socket;\n    }\n    isConnected() {\n        return this.#status === ConnectionStatuses.CONNECTED;\n    }\n    connect(host, port, callback) {\n        if (!callback) {\n            callback = createPromisifiedCallback();\n        }\n        const diagnosticContext = createDiagnosticContext({ connection: this, operation: 'connect', host, port });\n        connectionsConnectsChannel.start.publish(diagnosticContext);\n        try {\n            if (this.#status === ConnectionStatuses.CONNECTED) {\n                callback(null);\n                return callback[kCallbackPromise];\n            }\n            this.ready(callback);\n            if (this.#status === ConnectionStatuses.CONNECTING) {\n                return callback[kCallbackPromise];\n            }\n            this.#status = ConnectionStatuses.CONNECTING;\n            const connectionOptions = {\n                timeout: this.#options.connectTimeout\n            };\n            if (this.#options.tlsServerName) {\n                connectionOptions.servername =\n                    typeof this.#options.tlsServerName === 'string' ? this.#options.tlsServerName : host;\n            }\n            const connectionTimeoutHandler = () => {\n                const error = new TimeoutError(`Connection to ${host}:${port} timed out.`);\n                diagnosticContext.error = error;\n                this.#socket.destroy();\n                this.#status = ConnectionStatuses.ERROR;\n                connectionsConnectsChannel.error.publish(diagnosticContext);\n                connectionsConnectsChannel.asyncStart.publish(diagnosticContext);\n                this.emit('timeout', error);\n                this.emit('error', error);\n                connectionsConnectsChannel.asyncEnd.publish(diagnosticContext);\n            };\n            const connectionErrorHandler = (error) => {\n                this.#onConnectionError(host, port, diagnosticContext, error);\n            };\n            this.emit('connecting');\n            this.#host = host;\n            this.#port = port;\n            /* c8 ignore next 3 - TLS connection is not tested but we rely on Node.js tests */\n            this.#socket = this.#options.tls\n                ? createTLSConnection(port, host, { ...this.#options.tls, ...connectionOptions })\n                : createConnection({ ...connectionOptions, port, host });\n            this.#socket.setNoDelay(true);\n            this.#socket.once(this.#options.tls ? 'secureConnect' : 'connect', () => {\n                this.#socket.removeListener('timeout', connectionTimeoutHandler);\n                this.#socket.removeListener('error', connectionErrorHandler);\n                this.#socket.on('error', this.#onError.bind(this));\n                this.#socket.on('data', this.#onData.bind(this));\n                if (this.#handleBackPressure) {\n                    this.#socket.on('drain', this.#onDrain.bind(this));\n                }\n                this.#socket.on('close', this.#onClose.bind(this));\n                this.#socket.setTimeout(0);\n                if (this.#options.sasl) {\n                    this.#authenticate(host, port, diagnosticContext);\n                }\n                else {\n                    this.#onConnectionSucceed(diagnosticContext);\n                }\n            });\n            this.#socket.once('timeout', connectionTimeoutHandler);\n            this.#socket.once('error', connectionErrorHandler);\n        }\n        catch (error) {\n            this.#status = ConnectionStatuses.ERROR;\n            diagnosticContext.error = error;\n            connectionsConnectsChannel.error.publish(diagnosticContext);\n            throw error;\n        }\n        finally {\n            connectionsConnectsChannel.end.publish(diagnosticContext);\n        }\n        return callback[kCallbackPromise];\n    }\n    ready(callback) {\n        if (!callback) {\n            callback = createPromisifiedCallback();\n        }\n        const onConnect = () => {\n            this.removeListener('error', onError);\n            callback(null);\n        };\n        const onError = (error) => {\n            this.removeListener('connect', onConnect);\n            callback(error);\n        };\n        this.once('connect', onConnect);\n        this.once('error', onError);\n        this.emit('ready');\n        return callback[kCallbackPromise];\n    }\n    close(callback) {\n        if (!callback) {\n            callback = createPromisifiedCallback();\n        }\n        clearInterval(this.#reauthenticationTimeout);\n        if (this.#status === ConnectionStatuses.CLOSED ||\n            this.#status === ConnectionStatuses.ERROR ||\n            this.#status === ConnectionStatuses.NONE) {\n            callback(null);\n            return callback[kCallbackPromise];\n        }\n        else if (this.#status === ConnectionStatuses.CLOSING) {\n            this.once('close', () => {\n                callback(null);\n            });\n            return callback[kCallbackPromise];\n        }\n        // Ignore all disconnection errors\n        this.#socket.removeAllListeners('error');\n        this.#socket.once('error', () => { });\n        this.#socket.once('close', () => {\n            this.#status = ConnectionStatuses.CLOSED;\n            this.emit('close');\n            callback(null);\n        });\n        this.#status = ConnectionStatuses.CLOSING;\n        this.emit('closing');\n        this.#socket.end();\n        return callback[kCallbackPromise];\n    }\n    send(apiKey, apiVersion, createPayload, responseParser, hasRequestHeaderTaggedFields, hasResponseHeaderTaggedFields, callback) {\n        const correlationId = ++this.#correlationId;\n        const diagnostic = createDiagnosticContext({\n            connection: this,\n            operation: 'send',\n            apiKey,\n            apiVersion,\n            correlationId\n        });\n        const writer = Writer.create();\n        writer.appendInt16(apiKey).appendInt16(apiVersion).appendInt32(correlationId).appendString(this.#clientId, false);\n        if (hasRequestHeaderTaggedFields) {\n            writer.appendTaggedFields();\n        }\n        let payload;\n        try {\n            payload = createPayload();\n        }\n        catch (err) {\n            diagnostic.error = err;\n            connectionsApiChannel.error.publish(diagnostic);\n            throw err;\n        }\n        writer.appendFrom(payload).prependLength();\n        const request = {\n            correlationId,\n            apiKey,\n            apiVersion,\n            parser: responseParser,\n            payload: writer.buffer,\n            callback: null, // Will be set later\n            hasResponseHeaderTaggedFields,\n            noResponse: payload.context.noResponse ?? false,\n            diagnostic\n        };\n        this.#requestsQueue.push(fastQueueCallback => {\n            request.callback = fastQueueCallback;\n            if (this.#socketMustBeDrained) {\n                this.#afterDrainRequests.push(request);\n                return false;\n            }\n            return this.#sendRequest(request);\n        }, callback);\n    }\n    #authenticate(host, port, diagnosticContext) {\n        if (this.#status === ConnectionStatuses.CONNECTING) {\n            this.#status = ConnectionStatuses.AUTHENTICATING;\n        }\n        const { mechanism, username, password, token } = this.#options.sasl;\n        if (!allowedSASLMechanisms.includes(mechanism)) {\n            this.#onConnectionError(host, port, diagnosticContext, new UserError(`SASL mechanism ${mechanism} not supported.`));\n            return;\n        }\n        saslHandshakeV1.api(this, mechanism, (error, response) => {\n            if (error) {\n                this.#onConnectionError(host, port, diagnosticContext, new AuthenticationError('Cannot find a suitable SASL mechanism.', { cause: error }));\n                return;\n            }\n            this.emit('sasl:handshake', response.mechanisms);\n            const callback = this.#onSaslAuthenticate.bind(this, host, port, diagnosticContext);\n            if (mechanism === SASLMechanisms.PLAIN) {\n                saslPlain.authenticate(saslAuthenticateV2.api, this, username, password, callback);\n            }\n            else if (mechanism === SASLMechanisms.OAUTHBEARER) {\n                saslOAuthBearer.authenticate(saslAuthenticateV2.api, this, token, callback);\n            }\n            else {\n                saslScramSha.authenticate(saslAuthenticateV2.api, this, mechanism.substring(6), username, password, defaultCrypto, callback);\n            }\n        });\n    }\n    /*\n      Request => Size [Request Header v2] [payload]\n      Request Header v2 => request_api_key request_api_version correlation_id client_id TAG_BUFFER\n        request_api_key => INT16\n        request_api_version => INT16\n        correlation_id => INT32\n        client_id => NULLABLE_STRING\n    */\n    #sendRequest(request) {\n        connectionsApiChannel.start.publish(request.diagnostic);\n        try {\n            if (this.#status !== ConnectionStatuses.CONNECTED && this.#status !== ConnectionStatuses.AUTHENTICATING) {\n                request.callback(new NetworkError('Connection closed'), undefined);\n                return false;\n            }\n            if (!request.noResponse) {\n                this.#inflightRequests.set(request.correlationId, request);\n            }\n            let canWrite = this.#socket.write(request.payload);\n            if (!this.#handleBackPressure) {\n                canWrite = true;\n            }\n            if (!canWrite) {\n                this.#socketMustBeDrained = true;\n            }\n            if (request.noResponse) {\n                request.callback(null, canWrite);\n            }\n            loggers.protocol('Sending request.', {\n                apiKey: protocolAPIsById[request.apiKey],\n                correlationId: request.correlationId,\n                request\n            });\n            return canWrite;\n            /* c8 ignore next 8 - Hard to test */\n        }\n        catch (err) {\n            request.diagnostic.error = err;\n            connectionsApiChannel.error.publish(request.diagnostic);\n            throw err;\n        }\n        finally {\n            connectionsApiChannel.end.publish(request.diagnostic);\n        }\n    }\n    #onConnectionSucceed(diagnosticContext) {\n        this.#status = ConnectionStatuses.CONNECTED;\n        connectionsConnectsChannel.asyncStart.publish(diagnosticContext);\n        this.emit('connect');\n        connectionsConnectsChannel.asyncEnd.publish(diagnosticContext);\n    }\n    #onConnectionError(host, port, diagnosticContext, cause) {\n        const error = new NetworkError(`Connection to ${host}:${port} failed.`, { cause });\n        this.#status = ConnectionStatuses.ERROR;\n        clearTimeout(this.#reauthenticationTimeout);\n        diagnosticContext.error = error;\n        connectionsConnectsChannel.error.publish(diagnosticContext);\n        connectionsConnectsChannel.asyncStart.publish(diagnosticContext);\n        this.emit('error', error);\n        connectionsConnectsChannel.asyncEnd.publish(diagnosticContext);\n        this.#socket.end();\n    }\n    #onSaslAuthenticate(host, port, diagnosticContext, error, response) {\n        if (error) {\n            const protocolError = error.errors?.[0];\n            if (protocolError?.apiId === 'SASL_AUTHENTICATION_FAILED') {\n                error = new AuthenticationError('SASL authentication failed.', { cause: error });\n            }\n            this.#onConnectionError(host, port, diagnosticContext, error);\n            return;\n        }\n        if (this.#options.sasl.authBytesValidator) {\n            this.#options.sasl.authBytesValidator(response.authBytes, this.#onSaslAuthenticationValidation.bind(this, host, port, diagnosticContext, response.sessionLifetimeMs));\n        }\n        else {\n            this.#onSaslAuthenticationValidation(host, port, diagnosticContext, response.sessionLifetimeMs, null, response.authBytes);\n        }\n    }\n    #onSaslAuthenticationValidation(host, port, diagnosticContext, sessionLifetimeMs, error, authBytes) {\n        if (error) {\n            this.#onConnectionError(host, port, diagnosticContext, new AuthenticationError('SASL authentication failed.', { cause: error }));\n            return;\n        }\n        if (sessionLifetimeMs > 0) {\n            this.#reauthenticationTimeout = setTimeout(() => {\n                const diagnosticContext = createDiagnosticContext({\n                    connection: this,\n                    operation: 'reauthenticate',\n                    host,\n                    port\n                });\n                this.#authenticate(host, port, diagnosticContext);\n            }, Number(sessionLifetimeMs) * 0.8);\n        }\n        if (this.#status === ConnectionStatuses.CONNECTED) {\n            this.emit('sasl:authentication:extended', authBytes);\n        }\n        else {\n            this.emit('sasl:authentication', authBytes);\n            this.#onConnectionSucceed(diagnosticContext);\n        }\n    }\n    /*\n      Response Header v1 => correlation_id TAG_BUFFER\n        correlation_id => INT32\n    */\n    #onData(chunk) {\n        this.#responseBuffer.append(chunk);\n        // There is at least one message size to add\n        // Note that here the initial position is always 0\n        while (this.#responseBuffer.length > INT32_SIZE) {\n            if (this.#nextMessage < 1) {\n                this.#nextMessage = this.#responseReader.readInt32();\n            }\n            // Less data than the message size, wait for more data\n            if (this.#nextMessage > this.#responseBuffer.length - INT32_SIZE) {\n                break;\n            }\n            // Read the correlationId and get the handler\n            const correlationId = this.#responseReader.readInt32();\n            const request = this.#inflightRequests.get(correlationId);\n            if (!request) {\n                this.emit('error', new UnexpectedCorrelationIdError(`Received unexpected response with correlation_id=${correlationId}`, {\n                    raw: this.#responseReader.buffer.slice(0, this.#nextMessage + INT32_SIZE)\n                }));\n                return;\n            }\n            this.#inflightRequests.delete(correlationId);\n            const { apiKey, apiVersion, hasResponseHeaderTaggedFields, parser, callback } = request;\n            let deserialized;\n            let responseError = null;\n            try {\n                // Due to inconsistency in the wire protocol, the tag buffer in the header might have to be handled by the APIs\n                // For example: https://github.com/apache/kafka/blob/84caaa6e9da06435411510a81fa321d4f99c351f/clients/src/main/resources/common/message/ApiVersionsResponse.json#L24\n                if (hasResponseHeaderTaggedFields) {\n                    this.#responseReader.skip(EMPTY_OR_SINGLE_COMPACT_LENGTH_SIZE);\n                }\n                deserialized = parser(correlationId, apiKey, apiVersion, new Reader(this.#responseReader.buffer.subarray(this.#responseReader.position, this.#nextMessage + INT32_SIZE)));\n            }\n            catch (error) {\n                responseError = error;\n                // debugDump(Date.now() % 100000, 'received error', {\n                //   owner: this.#ownerId,\n                //   apiKey: protocolAPIsById[apiKey],\n                //   error\n                // })\n            }\n            finally {\n                this.#responseBuffer.consume(this.#nextMessage + INT32_SIZE);\n                this.#responseReader.position = 0;\n                this.#nextMessage = -1;\n            }\n            // debugDump(Date.now() % 100000, 'receive', {\n            //   owner: this.#ownerId,\n            //   apiKey: protocolAPIsById[apiKey],\n            //   correlationId\n            // })\n            loggers.protocol('Received response.', { apiKey: protocolAPIsById[apiKey], correlationId, request, deserialized });\n            if (responseError) {\n                request.diagnostic.error = responseError;\n                connectionsApiChannel.error.publish(request.diagnostic);\n            }\n            else {\n                request.diagnostic.result = deserialized;\n            }\n            connectionsApiChannel.asyncStart.publish(request.diagnostic);\n            callback(responseError, deserialized);\n            connectionsApiChannel.asyncEnd.publish(request.diagnostic);\n        }\n    }\n    #onDrain() {\n        // First of all, send all the requests that were waiting for the socket to drain\n        while (this.#afterDrainRequests.length) {\n            const request = this.#afterDrainRequests.shift();\n            // If no more request or  after sending the request the socket is blocked again, abort\n            if (!request || !this.#sendRequest(request)) {\n                return;\n            }\n        }\n        // Start getting requests again\n        this.#socketMustBeDrained = false;\n        this.emit('drain');\n    }\n    #onClose() {\n        this.#status = ConnectionStatuses.CLOSED;\n        this.emit('close');\n        const error = new NetworkError('Connection closed');\n        for (const request of this.#afterDrainRequests) {\n            if (!request.noResponse) {\n                request.callback(error, undefined);\n            }\n        }\n        for (const inflight of this.#inflightRequests.values()) {\n            inflight.callback(error, undefined);\n        }\n    }\n    #onError(error) {\n        clearTimeout(this.#reauthenticationTimeout);\n        this.emit('error', new NetworkError('Connection error', { cause: error }));\n    }\n}\n", "// SASL Authentication\nexport const SASLMechanisms = {\n    PLAIN: 'PLAIN',\n    SCRAM_SHA_256: 'SCRAM-SHA-256',\n    SCRAM_SHA_512: 'SCRAM-SHA-512',\n    OAUTHBEARER: 'OAUTHBEARER'\n};\nexport const allowedSASLMechanisms = Object.values(SASLMechanisms);\n// Metadata API\n// ./metadata/find-coordinator.ts\nexport const FindCoordinatorKeyTypes = { GROUP: 0, TRANSACTION: 1, SHARE: 2 };\n// Producer API\nexport const ProduceAcks = {\n    ALL: -1,\n    NO_RESPONSE: 0,\n    LEADER: 1\n};\nexport const allowedProduceAcks = Object.values(ProduceAcks);\n// Consumer API\nexport const GroupProtocols = { CLASSIC: 'classic', CONSUMER: 'consumer' };\nexport const allowedGroupProtocols = Object.values(GroupProtocols);\n// ./consumer/fetch.ts\nexport const FetchIsolationLevels = { READ_UNCOMMITTED: 0, READ_COMMITTED: 1 };\nexport const allowedFetchIsolationLevels = Object.values(FetchIsolationLevels);\nexport const ListOffsetTimestamps = { LATEST: -1n, EARLIEST: -2n };\n// Admin API\n// ./admin/*-acls.ts - See: https://cwiki.apache.org/confluence/display/KAFKA/KIP-140%3A+Add+administrative+RPCs+for+adding%2C+deleting%2C+and+listing+ACLs\nexport const ResourceTypes = {\n    UNKNOWN: 0,\n    ANY: 1,\n    TOPIC: 2,\n    GROUP: 3,\n    CLUSTER: 4,\n    TRANSACTIONAL_ID: 5,\n    DELEGATION_TOKEN: 6\n};\nexport const ResourcePatternTypes = { UNKNOWN: 0, ANY: 1, MATCH: 2, LITERAL: 3, PREFIXED: 4 };\nexport const AclOperations = {\n    UNKNOWN: 0,\n    ANY: 1,\n    ALL: 2,\n    READ: 3,\n    WRITE: 4,\n    CREATE: 5,\n    DELETE: 6,\n    ALTER: 7,\n    DESCRIBE: 8,\n    CLUSTER_ACTION: 9,\n    DESCRIBE_CONFIGS: 10,\n    ALTER_CONFIGS: 11,\n    IDEMPOTENT_WRITE: 12\n};\nexport const AclPermissionTypes = { UNKNOWN: 0, ANY: 1, DENY: 2, ALLOW: 3 };\n// ./admin/*-configs.ts\nexport const ConfigSources = {\n    UNKNOWN: 0,\n    TOPIC_CONFIG: 1,\n    DYNAMIC_BROKER_CONFIG: 2,\n    DYNAMIC_DEFAULT_BROKER_CONFIG: 3,\n    STATIC_BROKER_CONFIG: 4,\n    DEFAULT_CONFIG: 5,\n    DYNAMIC_BROKER_LOGGER_CONFIG: 6\n};\nexport const ConfigTypes = {\n    UNKNOWN: 0,\n    TOPIC: 2,\n    BROKER: 4,\n    BROKER_LOGGER: 8\n};\nexport const IncrementalAlterConfigTypes = { SET: 0, DELETE: 1, APPEND: 2, SUBTRACT: 3 };\n// ./admin/*-client-quotas.ts\nexport const ClientQuotaMatchTypes = { EXACT: 0, DEFAULT: 1, ANY: 2 };\nexport const ClientQuotaEntityTypes = { CLIENT_ID: 'client-id', USER: 'user' };\nexport const ClientQuotaKeys = {\n    PRODUCER_BYTE_RATE: 'producer_byte_rate',\n    CONSUMER_BYTE_RATE: 'consumer_byte_rate',\n    REQUEST_PERCENTAGE: 'request_percentage'\n};\n// ./admin/*-scram-credentials.ts\nexport const ScramMechanisms = { UNKNOWN: 0, SCRAM_SHA_256: 1, SCRAM_SHA_512: 2 };\n// ./admin/describe-cluster.ts\nexport const DescribeClusterEndpointTypes = { BROKERS: 1, CONTROLLERS: 2 };\n// ./admin/list-groups.ts\nexport const ConsumerGroupStates = ['PREPARING_REBALANCE', 'COMPLETING_REBALANCE', 'STABLE', 'DEAD', 'EMPTY'];\n// ./admin/list-transactions.ts\nexport const TransactionStates = [\n    'EMPTY',\n    'ONGOING',\n    'PREPARE_ABORT',\n    'COMMITTING',\n    'ABORTING',\n    'COMPLETE_COMMIT',\n    'COMPLETE_ABORT'\n];\n// ./admin/update-features.ts\nexport const FeatureUpgradeTypes = { UPGRADE: 1, SAFE_DOWNGRADE: 2, UNSAFE_DOWNGRADE: 3 };\n", "// Generics\nexport * from \"./callbacks.js\";\nexport * from \"./definitions.js\";\nexport * from \"./enumerations.js\";\n// Low-level APIs\nexport * from \"./admin/index.js\";\nexport * from \"./consumer/index.js\";\nexport * from \"./metadata/index.js\";\nexport * from \"./producer/index.js\";\nexport * from \"./security/index.js\";\nexport * from \"./telemetry/index.js\";\n", "import { promisify } from 'node:util';\nexport function createAPI(apiKey, apiVersion, createRequest, parseResponse, hasRequestHeaderTaggedFields = true, hasResponseHeaderTaggedFields = true) {\n    const api = function api(connection, ...args) {\n        const cb = typeof args[args.length - 1] === 'function' ? args.pop() : () => { };\n        connection.send(apiKey, apiVersion, () => createRequest(...args), parseResponse, hasRequestHeaderTaggedFields, hasResponseHeaderTaggedFields, cb);\n    };\n    api.async = promisify(api);\n    api.key = apiKey;\n    api.version = apiVersion;\n    return api;\n}\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  AlterClientQuotas Request (Version: 1) => [entries] validate_only TAG_BUFFER\n    entries => [entity] [ops] TAG_BUFFER\n      entity => entity_type entity_name TAG_BUFFER\n        entity_type => COMPACT_STRING\n        entity_name => COMPACT_NULLABLE_STRING\n      ops => key value remove TAG_BUFFER\n        key => COMPACT_STRING\n        value => FLOAT64\n        remove => BOOLEAN\n    validate_only => BOOLEAN\n*/\nexport function createRequest(entries, validateOnly) {\n    return Writer.create()\n        .appendArray(entries, (w, e) => {\n        w.appendArray(e.entities, (w, e) => {\n            w.appendString(e.entityType).appendString(e.entityName);\n        }).appendArray(e.ops, (w, o) => {\n            w.appendString(o.key)\n                .appendFloat64(o.value ?? 0)\n                .appendBoolean(o.remove);\n        });\n    })\n        .appendBoolean(validateOnly)\n        .appendTaggedFields();\n}\n/*\n  AlterClientQuotas Response (Version: 1) => throttle_time_ms [entries] TAG_BUFFER\n    throttle_time_ms => INT32\n    entries => error_code error_message [entity] TAG_BUFFER\n      error_code => INT16\n      error_message => COMPACT_NULLABLE_STRING\n      entity => entity_type entity_name TAG_BUFFER\n        entity_type => COMPACT_STRING\n        entity_name => COMPACT_NULLABLE_STRING\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        entries: reader.readArray((r, i) => {\n            const entry = {\n                errorCode: r.readInt16(),\n                errorMessage: r.readNullableString(),\n                entity: r.readArray(r => {\n                    return {\n                        entityType: r.readString(),\n                        entityName: r.readNullableString()\n                    };\n                })\n            };\n            if (entry.errorCode !== 0) {\n                errors.push([`/entries/${i}`, entry.errorCode]);\n            }\n            return entry;\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(49, 1, createRequest, parseResponse);\n", "export const INT8_SIZE = 1;\nexport const INT16_SIZE = 2;\nexport const INT32_SIZE = 4;\nexport const INT64_SIZE = 8;\nexport const UUID_SIZE = 16;\nexport const EMPTY_BUFFER = Buffer.alloc(0);\nexport const EMPTY_UUID = Buffer.alloc(UUID_SIZE);\n// Since it is serialized at either 0 (for nullable) or 1 (since length is stored as length + 1), it always uses a single byte\nexport const EMPTY_OR_SINGLE_COMPACT_LENGTH_SIZE = INT8_SIZE;\n// TODO(ShogunPanda): Tagged fields are not supported yet\nexport const EMPTY_TAGGED_FIELDS_BUFFER = Buffer.from([0]);\n", "export const MOST_SIGNIFICANT_BIT_FLAG = 0x80; // 128 or 1000 0000\nexport const MOST_SIGNIFICANT_BIT_FLAG_64 = 0x80n; // 128 or 1000 0000\nexport const LEAST_SIGNIFICANT_7_BITS = 0x7f; // 127 or 0111 1111\nexport const LEAST_SIGNIFICANT_7_BITS_64 = 0x7fn; // 127 or 0111 1111\n// This is used in varint to check if there are any other bits set after the first 7 bits,\n// which means it still needs more than a byte to represent the number in varint encoding\nexport const BITS_8PLUS_MASK = 0xffffffff - 0x7f;\nexport const BITS_8PLUS_MASK_64 = 0xffffffffn - 0x7fn;\nexport function intZigZagEncode(value) {\n    return (value << 1) ^ (value >> 31);\n}\nexport function intZigZagDecode(value) {\n    return (value >> 1) ^ -(value & 1);\n}\nexport function int64ZigZagEncode(value) {\n    return (value << 1n) ^ (value >> 31n);\n}\nexport function int64ZigZagDecode(value) {\n    return (value >> 1n) ^ -(value & 1n);\n}\nexport function sizeOfUnsignedVarInt(value) {\n    let bytes = 1;\n    while ((value & BITS_8PLUS_MASK) !== 0) {\n        bytes++;\n        value >>>= 7;\n    }\n    return bytes;\n}\nexport function sizeOfUnsignedVarInt64(value) {\n    let bytes = 1;\n    while ((value & BITS_8PLUS_MASK_64) !== 0n) {\n        bytes++;\n        value >>= 7n;\n    }\n    return bytes;\n}\n", "import { OutOfBoundsError } from \"../errors.js\";\nimport { EMPTY_BUFFER, INT16_SIZE, INT32_SIZE, INT64_SIZE, INT8_SIZE } from \"./definitions.js\";\nimport { BITS_8PLUS_MASK, BITS_8PLUS_MASK_64, int64ZigZagDecode, int64ZigZagEncode, intZigZagDecode, intZigZagEncode, LEAST_SIGNIFICANT_7_BITS, LEAST_SIGNIFICANT_7_BITS_64, MOST_SIGNIFICANT_BIT_FLAG, MOST_SIGNIFICANT_BIT_FLAG_64, sizeOfUnsignedVarInt, sizeOfUnsignedVarInt64 } from \"./varint.js\";\nconst instanceIdentifier = Symbol('plt.kafka.dynamicBuffer.instanceIdentifier');\nexport class DynamicBuffer {\n    buffers;\n    length;\n    #readBuffer; // This is used from the fixed length readers\n    [instanceIdentifier];\n    static isDynamicBuffer(target) {\n        return target?.[instanceIdentifier] === true;\n    }\n    constructor(buffers) {\n        this.buffers = [];\n        this.length = 0;\n        this.#readBuffer = Buffer.allocUnsafe(8);\n        this[instanceIdentifier] = true;\n        if (buffers) {\n            if (Buffer.isBuffer(buffers)) {\n                this.buffers.push(buffers);\n                this.length += buffers.length;\n            }\n            else {\n                for (const buffer of buffers) {\n                    this.buffers.push(buffer);\n                    this.length += buffer.length;\n                }\n            }\n        }\n    }\n    get buffer() {\n        if (this.buffers.length === 0) {\n            return EMPTY_BUFFER;\n        }\n        if (this.buffers.length === 1) {\n            return this.buffers[0];\n        }\n        return Buffer.concat(this.buffers, this.length);\n    }\n    append(buffer) {\n        this.buffers.push(buffer);\n        this.length += buffer.length;\n        return this;\n    }\n    prepend(buffer) {\n        this.buffers.unshift(buffer);\n        this.length += buffer.length;\n        return this;\n    }\n    appendFrom(DynamicBuffer) {\n        const buffers = DynamicBuffer.buffers;\n        for (let i = 0; i < buffers.length; i++) {\n            this.buffers.push(buffers[i]);\n        }\n        this.length += DynamicBuffer.length;\n        return this;\n    }\n    prependFrom(DynamicBuffer) {\n        const buffers = DynamicBuffer.buffers;\n        for (let i = buffers.length - 1; i >= 0; i--) {\n            this.buffers.unshift(buffers[i]);\n        }\n        this.length += DynamicBuffer.length;\n        return this;\n    }\n    subarray(start = 0, end) {\n        if (typeof end === 'undefined') {\n            end = this.length;\n        }\n        if (start < 0 || start > this.length || end > this.length) {\n            throw new OutOfBoundsError('Out of bounds.');\n        }\n        if (this.buffers.length === 0) {\n            return new DynamicBuffer(EMPTY_BUFFER);\n        }\n        else if (this.buffers.length === 1) {\n            return new DynamicBuffer(this.buffers[0].subarray(start, end));\n        }\n        let length = end - start;\n        let [startBuffer, current] = this.#findInitialBuffer(start);\n        start = startBuffer;\n        // The slice is in a single buffer\n        if (length <= this.buffers[current].length - start) {\n            return new DynamicBuffer(this.buffers[current].subarray(start, start + length));\n        }\n        // Copy all subarrays\n        const buffers = [];\n        while (length > 0) {\n            const currentEnd = Math.min(this.buffers[current].length - start, length);\n            buffers.push(this.buffers[current].subarray(start, start + currentEnd));\n            length -= currentEnd;\n            start = 0;\n            current++;\n        }\n        return new DynamicBuffer(buffers);\n    }\n    slice(start = 0, end) {\n        if (typeof end === 'undefined') {\n            end = this.length;\n        }\n        if (start < 0 || start > this.length || end > this.length) {\n            throw new OutOfBoundsError('Out of bounds.');\n        }\n        if (this.buffers.length === 0) {\n            return EMPTY_BUFFER;\n        }\n        else if (this.buffers.length === 1) {\n            return this.buffers[0].subarray(start, end);\n        }\n        let position = 0;\n        let length = end - start;\n        let [startBuffer, current] = this.#findInitialBuffer(start);\n        start = startBuffer;\n        // The slice is in a single buffer\n        if (length <= this.buffers[current].length - start) {\n            return this.buffers[current].slice(start, start + length);\n        }\n        // Copy all buffers\n        const buffer = Buffer.allocUnsafe(length);\n        while (length > 0) {\n            const currentEnd = Math.min(this.buffers[current].length - start, length);\n            this.buffers[current].copy(buffer, position, start, start + currentEnd);\n            position += currentEnd;\n            length -= currentEnd;\n            start = 0;\n            current++;\n        }\n        return buffer;\n    }\n    clone(deep = false) {\n        if (!deep) {\n            return new DynamicBuffer(this.buffers);\n        }\n        const buffers = [];\n        for (const buffer of this.buffers) {\n            buffers.push(buffer.slice());\n        }\n        return new DynamicBuffer(buffers);\n    }\n    consume(offset) {\n        if (offset < 0 || offset > this.length) {\n            throw new OutOfBoundsError('Out of bounds.');\n        }\n        if (offset === 0) {\n            return this;\n        }\n        const [start, current] = this.#findInitialBuffer(offset);\n        // Remove other arrays\n        if (current > 0) {\n            this.buffers.splice(0, current);\n        }\n        // Trim the new first array\n        if (start > 0) {\n            this.buffers[0] = this.buffers[0].subarray(start);\n        }\n        // Compute length again\n        this.length = 0;\n        for (const buffer of this.buffers) {\n            this.length += buffer.length;\n        }\n        return this;\n    }\n    toString(encoding = 'utf-8', start = 0, end) {\n        return this.slice(start, end).toString(encoding);\n    }\n    get(offset) {\n        if (offset < 0 || offset >= this.length) {\n            throw new OutOfBoundsError('Out of bounds.');\n        }\n        const [finalIndex, current] = this.#findInitialBuffer(offset);\n        return this.buffers[current][finalIndex];\n    }\n    readUInt8(offset = 0) {\n        if (offset < 0 || offset >= this.length) {\n            throw new OutOfBoundsError('Out of bounds.');\n        }\n        const [finalIndex, current] = this.#findInitialBuffer(offset);\n        this.#readBuffer[0] = this.buffers[current][finalIndex];\n        return this.#readBuffer.readUInt8(0);\n    }\n    readUInt16BE(offset = 0) {\n        this.#readMultiple(offset, 2);\n        return this.#readBuffer.readUInt16BE(0);\n    }\n    readUInt16LE(offset = 0) {\n        this.#readMultiple(offset, 2);\n        return this.#readBuffer.readUInt16LE(0);\n    }\n    readUInt32BE(offset = 0) {\n        this.#readMultiple(offset, 4);\n        return this.#readBuffer.readUInt32BE(0);\n    }\n    readUInt32LE(offset = 0) {\n        this.#readMultiple(offset, 4);\n        return this.#readBuffer.readUInt32LE(0);\n    }\n    readBigUInt64BE(offset = 0) {\n        this.#readMultiple(offset, 8);\n        return this.#readBuffer.readBigUInt64BE(0);\n    }\n    readBigUInt64LE(offset = 0) {\n        this.#readMultiple(offset, 8);\n        return this.#readBuffer.readBigUInt64LE(0);\n    }\n    readUnsignedVarInt(offset) {\n        let i = 0;\n        let byte;\n        let value = 0;\n        let read = 0;\n        if (offset < 0 || offset >= this.length) {\n            throw new OutOfBoundsError('Out of bounds.');\n        }\n        // Find the initial buffer\n        let [startOffset, current] = this.#findInitialBuffer(offset);\n        do {\n            byte = this.buffers[current][startOffset++];\n            read++;\n            if (startOffset >= this.buffers[current].length) {\n                current++;\n                startOffset = 0;\n            }\n            value += (byte & LEAST_SIGNIFICANT_7_BITS) << i;\n            i += 7;\n        } while (byte >= MOST_SIGNIFICANT_BIT_FLAG);\n        return [value, read];\n    }\n    readUnsignedVarInt64(offset) {\n        let i = 0n;\n        let byte;\n        let value = 0n;\n        let read = 0;\n        if (offset < 0 || offset >= this.length) {\n            throw new OutOfBoundsError('Out of bounds.');\n        }\n        // Find the initial buffer\n        let [startOffset, current] = this.#findInitialBuffer(offset);\n        do {\n            byte = BigInt(this.buffers[current][startOffset++]);\n            read++;\n            if (startOffset >= this.buffers[current].length) {\n                current++;\n                startOffset = 0;\n            }\n            value += (byte & LEAST_SIGNIFICANT_7_BITS_64) << i;\n            i += 7n;\n        } while (byte >= MOST_SIGNIFICANT_BIT_FLAG_64);\n        return [value, read];\n    }\n    readInt8(offset = 0) {\n        if (offset < 0 || offset >= this.length) {\n            throw new OutOfBoundsError('Out of bounds.');\n        }\n        const [finalIndex, current] = this.#findInitialBuffer(offset);\n        this.#readBuffer[0] = this.buffers[current][finalIndex];\n        return this.#readBuffer.readInt8(0);\n    }\n    readInt16BE(offset = 0) {\n        this.#readMultiple(offset, INT16_SIZE);\n        return this.#readBuffer.readInt16BE(0);\n    }\n    readInt16LE(offset = 0) {\n        this.#readMultiple(offset, INT16_SIZE);\n        return this.#readBuffer.readInt16LE(0);\n    }\n    readInt32BE(offset = 0) {\n        this.#readMultiple(offset, INT32_SIZE);\n        return this.#readBuffer.readInt32BE(0);\n    }\n    readInt32LE(offset = 0) {\n        this.#readMultiple(offset, INT32_SIZE);\n        return this.#readBuffer.readInt32LE(0);\n    }\n    readBigInt64BE(offset = 0) {\n        this.#readMultiple(offset, INT64_SIZE);\n        return this.#readBuffer.readBigInt64BE(0);\n    }\n    readBigInt64LE(offset = 0) {\n        this.#readMultiple(offset, INT64_SIZE);\n        return this.#readBuffer.readBigInt64LE(0);\n    }\n    readVarInt(offset) {\n        const [value, read] = this.readUnsignedVarInt(offset);\n        return [intZigZagDecode(value), read];\n    }\n    readVarInt64(offset) {\n        const [value, read] = this.readUnsignedVarInt64(offset);\n        return [int64ZigZagDecode(value), read];\n    }\n    readFloatBE(offset = 0) {\n        this.#readMultiple(offset, INT32_SIZE);\n        return this.#readBuffer.readFloatBE(0);\n    }\n    readFloatLE(offset = 0) {\n        this.#readMultiple(offset, INT32_SIZE);\n        return this.#readBuffer.readFloatLE(0);\n    }\n    readDoubleBE(offset = 0) {\n        this.#readMultiple(offset, INT64_SIZE);\n        return this.#readBuffer.readDoubleBE(0);\n    }\n    readDoubleLE(offset = 0) {\n        this.#readMultiple(offset, INT64_SIZE);\n        return this.#readBuffer.readDoubleLE(0);\n    }\n    writeUInt8(value, append = true) {\n        const buffer = Buffer.allocUnsafe(INT8_SIZE);\n        buffer.writeUInt8(value);\n        if (append) {\n            this.append(buffer);\n        }\n        else {\n            this.prepend(buffer);\n        }\n        return this;\n    }\n    writeUInt16BE(value, append = true) {\n        const buffer = Buffer.allocUnsafe(INT16_SIZE);\n        buffer.writeUInt16BE(value);\n        if (append) {\n            this.append(buffer);\n        }\n        else {\n            this.prepend(buffer);\n        }\n        return this;\n    }\n    writeUInt16LE(value, append = true) {\n        const buffer = Buffer.allocUnsafe(INT16_SIZE);\n        buffer.writeUInt16LE(value);\n        if (append) {\n            this.append(buffer);\n        }\n        else {\n            this.prepend(buffer);\n        }\n        return this;\n    }\n    writeUInt32BE(value, append = true) {\n        const buffer = Buffer.allocUnsafe(INT32_SIZE);\n        buffer.writeUInt32BE(value);\n        if (append) {\n            this.append(buffer);\n        }\n        else {\n            this.prepend(buffer);\n        }\n        return this;\n    }\n    writeUInt32LE(value, append = true) {\n        const buffer = Buffer.allocUnsafe(INT32_SIZE);\n        buffer.writeUInt32LE(value);\n        if (append) {\n            this.append(buffer);\n        }\n        else {\n            this.prepend(buffer);\n        }\n        return this;\n    }\n    writeBigUInt64BE(value, append = true) {\n        const buffer = Buffer.allocUnsafe(INT64_SIZE);\n        buffer.writeBigUInt64BE(value);\n        if (append) {\n            this.append(buffer);\n        }\n        else {\n            this.prepend(buffer);\n        }\n        return this;\n    }\n    writeBigUInt64LE(value, append = true) {\n        const buffer = Buffer.allocUnsafe(INT64_SIZE);\n        buffer.writeBigUInt64LE(value);\n        if (append) {\n            this.append(buffer);\n        }\n        else {\n            this.prepend(buffer);\n        }\n        return this;\n    }\n    writeUnsignedVarInt(value, append = true) {\n        const buffer = Buffer.allocUnsafe(sizeOfUnsignedVarInt(value));\n        let position = 0;\n        while ((value & BITS_8PLUS_MASK) !== 0) {\n            buffer.writeUInt8((value & LEAST_SIGNIFICANT_7_BITS) | MOST_SIGNIFICANT_BIT_FLAG, position);\n            position++;\n            value >>>= 7;\n        }\n        buffer.writeUInt8(value & LEAST_SIGNIFICANT_7_BITS, position);\n        if (append) {\n            this.append(buffer);\n        }\n        else {\n            this.prepend(buffer);\n        }\n    }\n    writeUnsignedVarInt64(value, append = true) {\n        const buffer = Buffer.allocUnsafe(sizeOfUnsignedVarInt64(value));\n        let position = 0;\n        while ((value & BITS_8PLUS_MASK_64) !== 0n) {\n            buffer.writeUInt8(Number((value & LEAST_SIGNIFICANT_7_BITS_64) | MOST_SIGNIFICANT_BIT_FLAG_64), position);\n            position++;\n            value >>= 7n;\n        }\n        buffer.writeUInt8(Number(value & LEAST_SIGNIFICANT_7_BITS_64), position);\n        if (append) {\n            this.append(buffer);\n        }\n        else {\n            this.prepend(buffer);\n        }\n    }\n    writeInt8(value, append = true) {\n        const buffer = Buffer.allocUnsafe(INT8_SIZE);\n        buffer.writeInt8(value);\n        if (append) {\n            this.append(buffer);\n        }\n        else {\n            this.prepend(buffer);\n        }\n        return this;\n    }\n    writeInt16BE(value, append = true) {\n        const buffer = Buffer.allocUnsafe(INT16_SIZE);\n        buffer.writeInt16BE(value);\n        if (append) {\n            this.append(buffer);\n        }\n        else {\n            this.prepend(buffer);\n        }\n        return this;\n    }\n    writeInt16LE(value, append = true) {\n        const buffer = Buffer.allocUnsafe(INT16_SIZE);\n        buffer.writeInt16LE(value);\n        if (append) {\n            this.append(buffer);\n        }\n        else {\n            this.prepend(buffer);\n        }\n        return this;\n    }\n    writeInt32BE(value, append = true) {\n        const buffer = Buffer.allocUnsafe(INT32_SIZE);\n        buffer.writeInt32BE(value);\n        if (append) {\n            this.append(buffer);\n        }\n        else {\n            this.prepend(buffer);\n        }\n        return this;\n    }\n    writeInt32LE(value, append = true) {\n        const buffer = Buffer.allocUnsafe(INT32_SIZE);\n        buffer.writeInt32LE(value);\n        if (append) {\n            this.append(buffer);\n        }\n        else {\n            this.prepend(buffer);\n        }\n        return this;\n    }\n    writeBigInt64BE(value, append = true) {\n        const buffer = Buffer.allocUnsafe(INT64_SIZE);\n        buffer.writeBigInt64BE(value);\n        if (append) {\n            this.append(buffer);\n        }\n        else {\n            this.prepend(buffer);\n        }\n        return this;\n    }\n    writeBigInt64LE(value, append = true) {\n        const buffer = Buffer.allocUnsafe(INT64_SIZE);\n        buffer.writeBigInt64LE(value);\n        if (append) {\n            this.append(buffer);\n        }\n        else {\n            this.prepend(buffer);\n        }\n        return this;\n    }\n    writeVarInt(value, append = true) {\n        this.writeUnsignedVarInt(intZigZagEncode(value), append);\n    }\n    writeVarInt64(value, append = true) {\n        this.writeUnsignedVarInt64(int64ZigZagEncode(value), append);\n    }\n    writeFloatBE(value, append = true) {\n        const buffer = Buffer.allocUnsafe(INT32_SIZE);\n        buffer.writeFloatBE(value);\n        if (append) {\n            this.append(buffer);\n        }\n        else {\n            this.prepend(buffer);\n        }\n        return this;\n    }\n    writeFloatLE(value, append = true) {\n        const buffer = Buffer.allocUnsafe(INT32_SIZE);\n        buffer.writeFloatLE(value);\n        if (append) {\n            this.append(buffer);\n        }\n        else {\n            this.prepend(buffer);\n        }\n        return this;\n    }\n    writeDoubleBE(value, append = true) {\n        const buffer = Buffer.allocUnsafe(INT64_SIZE);\n        buffer.writeDoubleBE(value);\n        if (append) {\n            this.append(buffer);\n        }\n        else {\n            this.prepend(buffer);\n        }\n        return this;\n    }\n    writeDoubleLE(value, append = true) {\n        const buffer = Buffer.allocUnsafe(INT64_SIZE);\n        buffer.writeDoubleLE(value);\n        if (append) {\n            this.append(buffer);\n        }\n        else {\n            this.prepend(buffer);\n        }\n        return this;\n    }\n    #findInitialBuffer(start) {\n        let current = 0;\n        // Find the initial buffer\n        while (start > 0 && start >= this.buffers[current].length) {\n            start -= this.buffers[current].length;\n            current++;\n        }\n        return [start, current];\n    }\n    #readMultiple(index, length) {\n        if (index < 0 || index + length > this.length) {\n            throw new OutOfBoundsError('Out of bounds.');\n        }\n        let [startOffset, current] = this.#findInitialBuffer(index);\n        for (let i = 0; i < length; i++) {\n            this.#readBuffer[i] = this.buffers[current][startOffset++];\n            if (startOffset === this.buffers[current].length) {\n                current++;\n                startOffset = 0;\n            }\n        }\n    }\n}\n", "import { humanize } from \"../utils.js\";\nimport { EMPTY_TAGGED_FIELDS_BUFFER, EMPTY_UUID } from \"./definitions.js\";\nimport { DynamicBuffer } from \"./dynamic-buffer.js\";\nconst instanceIdentifier = Symbol('plt.kafka.writer.instanceIdentifier');\nexport class Writer {\n    context;\n    #buffer;\n    [instanceIdentifier];\n    static isWriter(target) {\n        return target?.[instanceIdentifier] === true;\n    }\n    static create() {\n        return new Writer(new DynamicBuffer());\n    }\n    constructor(bl) {\n        this.#buffer = bl;\n        this.context = {};\n        this[instanceIdentifier] = true;\n    }\n    get buffer() {\n        return this.#buffer.buffer;\n    }\n    get buffers() {\n        return this.#buffer.buffers;\n    }\n    get dynamicBuffer() {\n        return this.#buffer;\n    }\n    get length() {\n        return this.#buffer.length;\n    }\n    inspect() {\n        return this.buffers.map((buffer, i) => humanize(`Buffer ${i}`, buffer)).join('\\n');\n    }\n    append(buffer) {\n        this.#buffer.append(buffer);\n        return this;\n    }\n    prepend(buffer) {\n        this.#buffer.prepend(buffer);\n        return this;\n    }\n    appendFrom(buffer) {\n        this.#buffer.appendFrom(buffer?.dynamicBuffer ?? buffer);\n        return this;\n    }\n    prependFrom(buffer) {\n        this.#buffer.prependFrom(buffer?.dynamicBuffer ?? buffer);\n        return this;\n    }\n    appendUnsignedInt8(value, append = true) {\n        this.#buffer.writeUInt8(value, append);\n        return this;\n    }\n    appendUnsignedInt16(value, append = true) {\n        this.#buffer.writeUInt16BE(value, append);\n        return this;\n    }\n    appendUnsignedInt32(value, append = true) {\n        this.#buffer.writeUInt32BE(value, append);\n        return this;\n    }\n    appendUnsignedInt64(value, append = true) {\n        this.#buffer.writeBigUInt64BE(value, append);\n        return this;\n    }\n    appendUnsignedVarInt(value, append = true) {\n        this.#buffer.writeUnsignedVarInt(value, append);\n        return this;\n    }\n    appendUnsignedVarInt64(value, append = true) {\n        this.#buffer.writeUnsignedVarInt64(value, append);\n        return this;\n    }\n    appendInt8(value, append = true) {\n        this.#buffer.writeInt8(value, append);\n        return this;\n    }\n    appendInt16(value, append = true) {\n        this.#buffer.writeInt16BE(value, append);\n        return this;\n    }\n    appendInt32(value, append = true) {\n        this.#buffer.writeInt32BE(value, append);\n        return this;\n    }\n    appendInt64(value, append = true) {\n        this.#buffer.writeBigInt64BE(value, append);\n        return this;\n    }\n    // In Kafka float is actually a double\n    appendFloat64(value, append = true) {\n        this.#buffer.writeDoubleBE(value, append);\n        return this;\n    }\n    appendVarInt(value, append = true) {\n        this.#buffer.writeVarInt(value, append);\n        return this;\n    }\n    appendVarInt64(value, append = true) {\n        this.#buffer.writeVarInt64(value, append);\n        return this;\n    }\n    appendBoolean(value) {\n        return this.appendUnsignedInt8(value ? 1 : 0);\n    }\n    appendString(value, compact = true, encoding = 'utf-8') {\n        if (value == null) {\n            return compact ? this.appendUnsignedVarInt(0) : this.appendInt16(-1);\n        }\n        const buffer = Buffer.from(value, encoding);\n        if (compact) {\n            this.appendUnsignedVarInt(buffer.length + 1);\n        }\n        else {\n            this.appendInt16(buffer.length);\n        }\n        if (buffer.length) {\n            this.#buffer.append(buffer);\n        }\n        return this;\n    }\n    appendUUID(value) {\n        if (value == null) {\n            return this.append(EMPTY_UUID);\n        }\n        const buffer = Buffer.from(value.replaceAll('-', ''), 'hex');\n        this.#buffer.append(buffer);\n        return this;\n    }\n    appendBytes(value, compact = true) {\n        if (value == null) {\n            return compact ? this.appendUnsignedVarInt(0) : this.appendInt32(-1);\n        }\n        if (compact) {\n            this.appendUnsignedVarInt(value.length + 1);\n        }\n        else {\n            this.appendInt32(value.length);\n        }\n        this.#buffer.append(value);\n        return this;\n    }\n    // Note that this does not follow the wire protocol specification and thus the length is not +1ed\n    appendVarIntBytes(value) {\n        if (value == null) {\n            return this.appendVarInt(0);\n        }\n        this.appendVarInt(value.length);\n        this.#buffer.append(value);\n        return this;\n    }\n    appendArray(value, entryWriter, compact = true, appendTrailingTaggedFields = true) {\n        if (value == null) {\n            return compact ? this.appendUnsignedVarInt(0) : this.appendInt32(-1);\n        }\n        const length = value.length;\n        if (compact) {\n            this.appendUnsignedVarInt(length + 1);\n        }\n        else {\n            this.appendInt32(length);\n        }\n        for (let i = 0; i < length; i++) {\n            entryWriter(this, value[i], i);\n            if (appendTrailingTaggedFields) {\n                this.appendTaggedFields();\n            }\n        }\n        return this;\n    }\n    appendMap(value, entryWriter, compact = true, appendTrailingTaggedFields = true) {\n        if (value == null) {\n            return compact ? this.appendUnsignedVarInt(0) : this.appendInt32(-1);\n        }\n        const length = value.size;\n        if (compact) {\n            this.appendUnsignedVarInt(length + 1);\n        }\n        else {\n            this.appendInt32(length);\n        }\n        let i = 0;\n        for (const entry of value) {\n            entryWriter(this, entry, i++);\n            if (appendTrailingTaggedFields) {\n                this.appendTaggedFields();\n            }\n        }\n        return this;\n    }\n    appendVarIntArray(value, entryWriter) {\n        if (value == null) {\n            return this.appendVarInt(0);\n        }\n        this.appendVarInt(value.length);\n        for (let i = 0; i < value.length; i++) {\n            entryWriter(this, value[i], i);\n        }\n        return this;\n    }\n    appendVarIntMap(value, entryWriter) {\n        if (value == null) {\n            return this.appendVarInt(0);\n        }\n        this.appendVarInt(value.size);\n        let i = 0;\n        for (const entry of value) {\n            entryWriter(this, entry, i++);\n        }\n        return this;\n    }\n    // TODO(ShogunPanda): Tagged fields are not supported yet\n    appendTaggedFields(_ = []) {\n        return this.append(EMPTY_TAGGED_FIELDS_BUFFER);\n    }\n    prependLength() {\n        return this.appendInt32(this.length, false);\n    }\n    prependVarIntLength() {\n        return this.appendVarInt(this.length, false);\n    }\n}\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  AlterConfigs Request (Version: 2) => [resources] validate_only TAG_BUFFER\n    resources => resource_type resource_name [configs] TAG_BUFFER\n      resource_type => INT8\n      resource_name => COMPACT_STRING\n      configs => name value TAG_BUFFER\n        name => COMPACT_STRING\n        value => COMPACT_NULLABLE_STRING\n    validate_only => BOOLEAN\n*/\nexport function createRequest(resources, validateOnly) {\n    return Writer.create()\n        .appendArray(resources, (w, r) => {\n        w.appendInt8(r.resourceType)\n            .appendString(r.resourceName)\n            .appendArray(r.configs, (w, r) => {\n            w.appendString(r.name).appendString(r.value);\n        });\n    })\n        .appendBoolean(validateOnly)\n        .appendTaggedFields();\n}\n/*\n  AlterConfigs Response (Version: 2) => throttle_time_ms [responses] TAG_BUFFER\n    throttle_time_ms => INT32\n    responses => error_code error_message resource_type resource_name TAG_BUFFER\n      error_code => INT16\n      error_message => COMPACT_NULLABLE_STRING\n      resource_type => INT8\n      resource_name => COMPACT_STRING\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        responses: reader.readArray((r, i) => {\n            const errorCode = r.readInt16();\n            if (errorCode !== 0) {\n                errors.push([`/responses/${i}`, errorCode]);\n            }\n            return {\n                errorCode,\n                errorMessage: r.readNullableString(),\n                resourceType: r.readInt8(),\n                resourceName: r.readString()\n            };\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(33, 2, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  AlterPartitionReassignments Request (Version: 0) => timeout_ms [topics] TAG_BUFFER\n    timeout_ms => INT32\n    topics => name [partitions] TAG_BUFFER\n      name => COMPACT_STRING\n      partitions => partition_index [replicas] TAG_BUFFER\n        partition_index => INT32\n        replicas => INT32\n*/\nexport function createRequest(timeoutMs, topics) {\n    return Writer.create()\n        .appendInt32(timeoutMs)\n        .appendArray(topics, (w, t) => {\n        w.appendString(t.name).appendArray(t.partitions, (w, p) => {\n            w.appendInt32(p.partitionIndex).appendArray(p.replicas, (w, r) => w.appendInt32(r), true, false);\n        });\n    })\n        .appendTaggedFields();\n}\n/*\n  AlterPartitionReassignments Response (Version: 0) => throttle_time_ms error_code error_message [responses] TAG_BUFFER\n    throttle_time_ms => INT32\n    error_code => INT16\n    error_message => COMPACT_NULLABLE_STRING\n    responses => name [partitions] TAG_BUFFER\n      name => COMPACT_STRING\n      partitions => partition_index error_code error_message TAG_BUFFER\n        partition_index => INT32\n        error_code => INT16\n        error_message => COMPACT_NULLABLE_STRING\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const throttleTimeMs = reader.readInt32();\n    const errorCode = reader.readInt16();\n    if (errorCode !== 0) {\n        errors.push(['', errorCode]);\n    }\n    const response = {\n        throttleTimeMs,\n        errorCode,\n        errorMessage: reader.readNullableString(),\n        responses: reader.readArray((r, i) => {\n            return {\n                name: r.readString(),\n                partitions: r.readArray((r, j) => {\n                    const partition = {\n                        partitionIndex: r.readInt32(),\n                        errorCode: r.readInt16(),\n                        errorMessage: r.readNullableString()\n                    };\n                    if (partition.errorCode !== 0) {\n                        errors.push([`responses/${i}/partitions/${j}`, partition.errorCode]);\n                    }\n                    return partition;\n                })\n            };\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(45, 0, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  AlterPartition Request (Version: 3) => broker_id broker_epoch [topics] TAG_BUFFER\n    broker_id => INT32\n    broker_epoch => INT64\n    topics => topic_id [partitions] TAG_BUFFER\n      topic_id => UUID\n      partitions => partition_index leader_epoch [new_isr_with_epochs] leader_recovery_state partition_epoch TAG_BUFFER\n        partition_index => INT32\n        leader_epoch => INT32\n        new_isr_with_epochs => broker_id broker_epoch TAG_BUFFER\n          broker_id => INT32\n          broker_epoch => INT64\n        leader_recovery_state => INT8\n        partition_epoch => INT32\n*/\nexport function createRequest(brokerId, brokerEpoch, topic) {\n    return Writer.create()\n        .appendInt32(brokerId)\n        .appendInt64(brokerEpoch)\n        .appendArray(topic, (w, t) => {\n        w.appendString(t.topicId).appendArray(t.partitions, (w, p) => {\n            w.appendInt32(p.partitionIndex)\n                .appendInt32(p.leaderEpoch)\n                .appendArray(p.newIsrWithEpochs, (w, n) => {\n                w.appendInt32(n.brokerId).appendInt64(n.brokerEpoch);\n            })\n                .appendInt8(p.leaderRecoveryState)\n                .appendInt32(p.partitionEpoch);\n        });\n    })\n        .appendTaggedFields();\n}\n/*\n  AlterPartition Response (Version: 3) => throttle_time_ms error_code [topics] TAG_BUFFER\n    throttle_time_ms => INT32\n    error_code => INT16\n    topics => topic_id [partitions] TAG_BUFFER\n      topic_id => UUID\n      partitions => partition_index error_code leader_id leader_epoch [isr] leader_recovery_state partition_epoch TAG_BUFFER\n        partition_index => INT32\n        error_code => INT16\n        leader_id => INT32\n        leader_epoch => INT32\n        isr => INT32\n        leader_recovery_state => INT8\n        partition_epoch => INT32\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const throttleTimeMs = reader.readInt32();\n    const errorCode = reader.readInt16();\n    if (errorCode !== 0) {\n        errors.push(['/', errorCode]);\n    }\n    const response = {\n        throttleTimeMs,\n        errorCode,\n        topics: reader.readArray((r, i) => {\n            return {\n                topicId: r.readString(),\n                partitions: r.readArray((r, j) => {\n                    const partition = {\n                        partitionIndex: r.readInt32(),\n                        errorCode: r.readInt16(),\n                        leaderId: r.readInt32(),\n                        leaderEpoch: r.readInt32(),\n                        isr: r.readInt32(),\n                        leaderRecoveryState: r.readInt8(),\n                        partitionEpoch: r.readInt32()\n                    };\n                    if (partition.errorCode !== 0) {\n                        errors.push([`/topics/${i}/partitions/${j}`, partition.errorCode]);\n                    }\n                    return partition;\n                })\n            };\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(56, 3, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  AlterReplicaLogDirs Request (Version: 2) => [dirs] TAG_BUFFER\n    dirs => path [topics] TAG_BUFFER\n      path => COMPACT_STRING\n      topics => name [partitions] TAG_BUFFER\n        name => COMPACT_STRING\n        partitions => INT32\n*/\nexport function createRequest(dirs) {\n    return Writer.create()\n        .appendArray(dirs, (w, d) => {\n        w.appendString(d.path).appendArray(d.topics, (w, t) => {\n            w.appendString(t.name).appendArray(t.partitions, (w, p) => w.appendInt32(p), true, false);\n        });\n    })\n        .appendTaggedFields();\n}\n/*\n  AlterReplicaLogDirs Response (Version: 2) => throttle_time_ms [results] TAG_BUFFER\n    throttle_time_ms => INT32\n    results => topic_name [partitions] TAG_BUFFER\n      topic_name => COMPACT_STRING\n      partitions => partition_index error_code TAG_BUFFER\n        partition_index => INT32\n        error_code => INT16\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        results: reader.readArray((r, i) => {\n            return {\n                topicName: r.readString(),\n                partitions: r.readArray((r, j) => {\n                    const partition = {\n                        partitionIndex: r.readInt32(),\n                        errorCode: r.readInt16()\n                    };\n                    if (partition.errorCode !== 0) {\n                        errors.push([`/results/${i}/partitions/${j}`, partition.errorCode]);\n                    }\n                    return partition;\n                })\n            };\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(34, 2, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  AlterUserScramCredentials Request (Version: 0) => [deletions] [upsertions] TAG_BUFFER\n    deletions => name mechanism TAG_BUFFER\n      name => COMPACT_STRING\n      mechanism => INT8\n    upsertions => name mechanism iterations salt salted_password TAG_BUFFER\n      name => COMPACT_STRING\n      mechanism => INT8\n      iterations => INT32\n      salt => COMPACT_BYTES\n      salted_password => COMPACT_BYTES\n*/\nexport function createRequest(deletions, upsertions) {\n    return Writer.create()\n        .appendArray(deletions, (w, d) => {\n        w.appendString(d.name).appendInt8(d.mechanism);\n    })\n        .appendArray(upsertions, (w, u) => {\n        w.appendString(u.name)\n            .appendInt8(u.mechanism)\n            .appendInt32(u.iterations)\n            .appendBytes(u.salt)\n            .appendBytes(u.saltedPassword);\n    })\n        .appendTaggedFields()\n        .appendTaggedFields();\n}\n/*\n  AlterUserScramCredentials Response (Version: 0) => throttle_time_ms [results] TAG_BUFFER\n    throttle_time_ms => INT32\n    results => user error_code error_message TAG_BUFFER\n      user => COMPACT_STRING\n      error_code => INT16\n      error_message => COMPACT_NULLABLE_STRING\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        results: reader.readArray((r, i) => {\n            const result = {\n                user: r.readString(),\n                errorCode: r.readInt16(),\n                errorMessage: r.readNullableString()\n            };\n            if (result.errorCode !== 0) {\n                errors.push([`/results/${i}`, result.errorCode]);\n            }\n            return result;\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(51, 0, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\nConsumerGroupDescribe Request (Version: 0) => [group_ids] include_authorized_operations TAG_BUFFER\n  group_ids => COMPACT_STRING\n  include_authorized_operations => BOOLEAN\n*/\nexport function createRequest(groupIds, includeAuthorizedOperations) {\n    return Writer.create()\n        .appendArray(groupIds, (w, r) => w.appendString(r), true, false)\n        .appendBoolean(includeAuthorizedOperations)\n        .appendTaggedFields();\n}\n/*\n  ConsumerGroupDescribe Response (Version: 0) => throttle_time_ms [groups] TAG_BUFFER\n    throttle_time_ms => INT32\n    groups => error_code error_message group_id group_state group_epoch assignment_epoch assignor_name [members] authorized_operations TAG_BUFFER\n      error_code => INT16\n      error_message => COMPACT_NULLABLE_STRING\n      group_id => COMPACT_STRING\n      group_state => COMPACT_STRING\n      group_epoch => INT32\n      assignment_epoch => INT32\n      assignor_name => COMPACT_STRING\n      members => member_id instance_id rack_id member_epoch client_id client_host [subscribed_topic_names] subscribed_topic_regex assignment target_assignment TAG_BUFFER\n        member_id => COMPACT_STRING\n        instance_id => COMPACT_NULLABLE_STRING\n        rack_id => COMPACT_NULLABLE_STRING\n        member_epoch => INT32\n        client_id => COMPACT_STRING\n        client_host => COMPACT_STRING\n        subscribed_topic_names => COMPACT_STRING\n        subscribed_topic_regex => COMPACT_NULLABLE_STRING\n        assignment => [topic_partitions] TAG_BUFFER\n          topic_partitions => topic_id topic_name [partitions] TAG_BUFFER\n            topic_id => UUID\n            topic_name => COMPACT_STRING\n            partitions => INT32\n        target_assignment => [topic_partitions] TAG_BUFFER\n          topic_partitions => topic_id topic_name [partitions] TAG_BUFFER\n            topic_id => UUID\n            topic_name => COMPACT_STRING\n            partitions => INT32\n      authorized_operations => INT32\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        groups: reader.readArray((r, i) => {\n            const errorCode = r.readInt16();\n            if (errorCode !== 0) {\n                errors.push([`/groups/${i}`, errorCode]);\n            }\n            return {\n                errorCode,\n                errorMessage: r.readNullableString(),\n                groupId: r.readString(),\n                groupState: r.readString(),\n                groupEpoch: r.readInt32(),\n                assignmentEpoch: r.readInt32(),\n                assignorName: r.readString(),\n                members: r.readArray(r => {\n                    return {\n                        memberId: r.readString(),\n                        instanceId: r.readNullableString(),\n                        rackId: r.readNullableString(),\n                        memberEpoch: r.readInt32(),\n                        clientId: r.readString(),\n                        clientHost: r.readString(),\n                        subscribedTopicNames: r.readString(),\n                        subscribedTopicRegex: r.readNullableString(),\n                        assignment: {\n                            topicPartitions: r.readArray(r => {\n                                return {\n                                    topicId: r.readUUID(),\n                                    topicName: r.readString(),\n                                    partitions: r.readArray(() => r.readInt32(), true, false)\n                                };\n                            })\n                        },\n                        targetAssignment: {\n                            topicPartitions: r.readArray(r => {\n                                return {\n                                    topicId: r.readUUID(),\n                                    topicName: r.readString(),\n                                    partitions: r.readArray(() => r.readInt32(), true, false)\n                                };\n                            })\n                        }\n                    };\n                }),\n                authorizedOperations: r.readInt32()\n            };\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(69, 0, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\nCreateAcls Request (Version: 3) => [creations] TAG_BUFFER\n  creations => resource_type resource_name resource_pattern_type principal host operation permission_type TAG_BUFFER\n    resource_type => INT8\n    resource_name => COMPACT_STRING\n    resource_pattern_type => INT8\n    principal => COMPACT_STRING\n    host => COMPACT_STRING\n    operation => INT8\n    permission_type => INT8\n*/\nexport function createRequest(creations) {\n    return Writer.create()\n        .appendArray(creations, (w, c) => {\n        w.appendInt8(c.resourceType)\n            .appendString(c.resourceName)\n            .appendInt8(c.resourcePatternType)\n            .appendString(c.principal)\n            .appendString(c.host)\n            .appendInt8(c.operation)\n            .appendInt8(c.permissionType);\n    })\n        .appendTaggedFields();\n}\n/*\nCreateAcls Response (Version: 3) => throttle_time_ms [results] TAG_BUFFER\n  throttle_time_ms => INT32\n  results => error_code error_message TAG_BUFFER\n    error_code => INT16\n    error_message => COMPACT_NULLABLE_STRING\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        results: reader.readArray((r, i) => {\n            const result = {\n                errorCode: r.readInt16(),\n                errorMessage: r.readNullableString()\n            };\n            if (result.errorCode !== 0) {\n                errors.push([`/results/${i}`, result.errorCode]);\n            }\n            return result;\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(30, 3, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  CreateDelegationToken Request (Version: 3) => owner_principal_type owner_principal_name [renewers] max_lifetime_ms TAG_BUFFER\n    owner_principal_type => COMPACT_NULLABLE_STRING\n    owner_principal_name => COMPACT_NULLABLE_STRING\n    renewers => principal_type principal_name TAG_BUFFER\n      principal_type => COMPACT_STRING\n      principal_name => COMPACT_STRING\n    max_lifetime_ms => INT64\n*/\nexport function createRequest(ownerPrincipalType, ownerPrincipalName, renewers, maxLifetimeMs) {\n    return Writer.create()\n        .appendString(ownerPrincipalType)\n        .appendString(ownerPrincipalName)\n        .appendArray(renewers, (w, r) => w.appendString(r.principalType).appendString(r.principalName))\n        .appendInt64(maxLifetimeMs)\n        .appendTaggedFields();\n}\n/*\n  CreateDelegationToken Response (Version: 3) => error_code principal_type principal_name token_requester_principal_type token_requester_principal_name issue_timestamp_ms expiry_timestamp_ms max_timestamp_ms token_id hmac throttle_time_ms TAG_BUFFER\n    error_code => INT16\n    principal_type => COMPACT_STRING\n    principal_name => COMPACT_STRING\n    token_requester_principal_type => COMPACT_STRING\n    token_requester_principal_name => COMPACT_STRING\n    issue_timestamp_ms => INT64\n    expiry_timestamp_ms => INT64\n    max_timestamp_ms => INT64\n    token_id => COMPACT_STRING\n    hmac => COMPACT_BYTES\n    throttle_time_ms => INT32\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const response = {\n        errorCode: reader.readInt16(),\n        principalType: reader.readString(),\n        principalName: reader.readString(),\n        tokenRequesterPrincipalType: reader.readString(),\n        tokenRequesterPrincipalName: reader.readString(),\n        issueTimestampMs: reader.readInt64(),\n        expiryTimestampMs: reader.readInt64(),\n        maxTimestampMs: reader.readInt64(),\n        tokenId: reader.readString(),\n        hmac: reader.readBytes(),\n        throttleTimeMs: reader.readInt32()\n    };\n    if (response.errorCode !== 0) {\n        throw new ResponseError(apiKey, apiVersion, { '': response.errorCode }, response);\n    }\n    return response;\n}\nexport const api = createAPI(38, 3, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  CreatePartitions Request (Version: 3) => [topics] timeout_ms validate_only TAG_BUFFER\n    topics => name count [assignments] TAG_BUFFER\n      name => COMPACT_STRING\n      count => INT32\n      assignments => [broker_ids] TAG_BUFFER\n        broker_ids => INT32\n    timeout_ms => INT32\n    validate_only => BOOLEAN\n*/\nexport function createRequest(topics, timeoutMs, validateOnly) {\n    return Writer.create()\n        .appendArray(topics, (w, t) => {\n        w.appendString(t.name)\n            .appendInt32(t.count)\n            .appendArray(t.assignments, (w, a) => w.appendArray(a.brokerIds, (w, b) => w.appendInt32(b), true, false));\n    })\n        .appendInt32(timeoutMs)\n        .appendBoolean(validateOnly)\n        .appendTaggedFields();\n}\n/*\n  CreatePartitions Response (Version: 3) => throttle_time_ms [results] TAG_BUFFER\n    throttle_time_ms => INT32\n    results => name error_code error_message TAG_BUFFER\n      name => COMPACT_STRING\n      error_code => INT16\n      error_message => COMPACT_NULLABLE_STRING\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        results: reader.readArray((r, i) => {\n            const result = {\n                name: r.readString(),\n                errorCode: r.readInt16(),\n                errorMessage: r.readNullableString()\n            };\n            if (result.errorCode !== 0) {\n                errors.push([`/results/${i}`, result.errorCode]);\n            }\n            return result;\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(37, 3, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  CreateTopics Request (Version: 7) => [topics] timeout_ms validate_only TAG_BUFFER\n    topics => name num_partitions replication_factor [assignments] [configs] TAG_BUFFER\n      name => COMPACT_STRING\n      num_partitions => INT32\n      replication_factor => INT16\n      assignments => partition_index [broker_ids] TAG_BUFFER\n        partition_index => INT32\n        broker_ids => INT32\n      configs => name value TAG_BUFFER\n        name => COMPACT_STRING\n        value => COMPACT_NULLABLE_STRING\n    timeout_ms => INT32\n    validate_only => BOOLEAN\n*/\nexport function createRequest(topics, timeoutMs, validateOnly) {\n    return Writer.create()\n        .appendArray(topics, (w, topic) => {\n        w.appendString(topic.name)\n            .appendInt32(topic.numPartitions)\n            .appendInt16(topic.replicationFactor)\n            .appendArray(topic.assignments, (w, assignment) => {\n            w.appendInt32(assignment.partitionIndex).appendArray(assignment.brokerIds, (w, b) => w.appendInt32(b), true, false);\n        })\n            .appendArray(topic.configs, (w, config) => {\n            w.appendString(config.name).appendString(config.value);\n        });\n    })\n        .appendInt32(timeoutMs)\n        .appendBoolean(validateOnly)\n        .appendTaggedFields();\n}\n/*\n  CreateTopics Response (Version: 7) => throttle_time_ms [topics] TAG_BUFFER\n    throttle_time_ms => INT32\n    topics => name topic_id error_code error_message num_partitions replication_factor [configs] TAG_BUFFER\n      name => COMPACT_STRING\n      topic_id => UUID\n      error_code => INT16\n      error_message => COMPACT_NULLABLE_STRING\n      num_partitions => INT32\n      replication_factor => INT16\n      configs => name value read_only config_source is_sensitive TAG_BUFFER\n        name => COMPACT_STRING\n        value => COMPACT_NULLABLE_STRING\n        read_only => BOOLEAN\n        config_source => INT8\n        is_sensitive => BOOLEAN\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        topics: reader.readArray((r, i) => {\n            const topic = {\n                name: r.readString(),\n                topicId: r.readUUID(),\n                errorCode: r.readInt16(),\n                errorMessage: r.readNullableString(),\n                numPartitions: r.readInt32(),\n                replicationFactor: r.readInt16(),\n                configs: r.readArray(r => {\n                    return {\n                        name: r.readString(),\n                        value: r.readNullableString(),\n                        readOnly: r.readBoolean(),\n                        configSource: r.readInt8(),\n                        isSensitive: r.readBoolean()\n                    };\n                })\n            };\n            if (topic.errorCode !== 0) {\n                errors.push([`/topics/${i}`, topic.errorCode]);\n            }\n            return topic;\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(19, 7, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  DeleteAcls Request (Version: 3) => [filters] TAG_BUFFER\n    filters => resource_type_filter resource_name_filter pattern_type_filter principal_filter host_filter operation permission_type TAG_BUFFER\n      resource_type_filter => INT8\n      resource_name_filter => COMPACT_NULLABLE_STRING\n      pattern_type_filter => INT8\n      principal_filter => COMPACT_NULLABLE_STRING\n      host_filter => COMPACT_NULLABLE_STRING\n      operation => INT8\n      permission_type => INT8\n*/\nexport function createRequest(filters) {\n    return Writer.create()\n        .appendArray(filters, (w, f) => {\n        w.appendInt8(f.resourceTypeFilter)\n            .appendString(f.resourceNameFilter)\n            .appendInt8(f.patternTypeFilter)\n            .appendString(f.principalFilter)\n            .appendString(f.hostFilter)\n            .appendInt8(f.operation)\n            .appendInt8(f.permissionType);\n    })\n        .appendTaggedFields();\n}\n/*\n  DeleteAcls Response (Version: 3) => throttle_time_ms [filter_results] TAG_BUFFER\n    throttle_time_ms => INT32\n    filter_results => error_code error_message [matching_acls] TAG_BUFFER\n      error_code => INT16\n      error_message => COMPACT_NULLABLE_STRING\n      matching_acls => error_code error_message resource_type resource_name pattern_type principal host operation permission_type TAG_BUFFER\n        error_code => INT16\n        error_message => COMPACT_NULLABLE_STRING\n        resource_type => INT8\n        resource_name => COMPACT_STRING\n        pattern_type => INT8\n        principal => COMPACT_STRING\n        host => COMPACT_STRING\n        operation => INT8\n        permission_type => INT8\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        filterResults: reader.readArray((r, i) => {\n            const errorCode = r.readInt16();\n            if (errorCode !== 0) {\n                errors.push([`/filter_results/${i}`, errorCode]);\n            }\n            return {\n                errorCode,\n                errorMessage: r.readNullableString(),\n                matchingAcls: r.readArray((r, j) => {\n                    const errorCode = r.readInt16();\n                    if (errorCode !== 0) {\n                        errors.push([`/filter_results/${i}/matching_acls/${j}`, errorCode]);\n                    }\n                    return {\n                        errorCode,\n                        errorMessage: r.readNullableString(),\n                        resourceType: r.readInt8(),\n                        resourceName: r.readString(),\n                        patternType: r.readInt8(),\n                        principal: r.readString(),\n                        host: r.readString(),\n                        operation: r.readInt8(),\n                        permissionType: r.readInt8()\n                    };\n                })\n            };\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(31, 3, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  DeleteGroups Request (Version: 2) => [groups_names] TAG_BUFFER\n    groups_names => COMPACT_STRING\n*/\nexport function createRequest(groupsNames) {\n    return Writer.create()\n        .appendArray(groupsNames, (w, r) => w.appendString(r), true, false)\n        .appendTaggedFields();\n}\n/*\n  DeleteGroups Response (Version: 2) => throttle_time_ms [results] TAG_BUFFER\n    throttle_time_ms => INT32\n    results => group_id error_code TAG_BUFFER\n      group_id => COMPACT_STRING\n      error_code => INT16\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        results: reader.readArray((r, i) => {\n            const group = {\n                groupId: r.readString(),\n                errorCode: r.readInt16()\n            };\n            if (group.errorCode !== 0) {\n                errors.push([`/results/${i}`, group.errorCode]);\n            }\n            return group;\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(42, 2, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  DeleteRecords Request (Version: 2) => [topics] timeout_ms TAG_BUFFER\n    topics => name [partitions] TAG_BUFFER\n      name => COMPACT_STRING\n      partitions => partition_index offset TAG_BUFFER\n        partition_index => INT32\n        offset => INT64\n    timeout_ms => INT32\n*/\nexport function createRequest(topics, timeoutMs) {\n    return Writer.create()\n        .appendArray(topics, (w, t) => {\n        w.appendString(t.name).appendArray(t.partitions, (w, p) => {\n            w.appendInt32(p.partitionIndex).appendInt64(p.offset);\n        });\n    })\n        .appendInt32(timeoutMs)\n        .appendTaggedFields();\n}\n/*\n  DeleteRecords Response (Version: 2) => throttle_time_ms [topics] TAG_BUFFER\n    throttle_time_ms => INT32\n    topics => name [partitions] TAG_BUFFER\n      name => COMPACT_STRING\n      partitions => partition_index low_watermark error_code TAG_BUFFER\n        partition_index => INT32\n        low_watermark => INT64\n        error_code => INT16\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        topics: reader.readArray((r, i) => {\n            return {\n                name: r.readString(),\n                partitions: r.readArray((r, j) => {\n                    const partition = {\n                        partitionIndex: r.readInt32(),\n                        lowWatermark: r.readInt64(),\n                        errorCode: r.readInt16()\n                    };\n                    if (partition.errorCode !== 0) {\n                        errors.push([`topics[${i}].partitions[${j}]`, partition.errorCode]);\n                    }\n                    return partition;\n                })\n            };\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(21, 2, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  DeleteTopics Request (Version: 6) => [topics] timeout_ms TAG_BUFFER\n    topics => name topic_id TAG_BUFFER\n      name => COMPACT_NULLABLE_STRING\n      topic_id => UUID\n    timeout_ms => INT32\n*/\nexport function createRequest(topics, timeoutMs) {\n    return Writer.create()\n        .appendArray(topics, (w, topic) => {\n        w.appendString(topic.name).appendUUID(topic.topicId);\n    })\n        .appendInt32(timeoutMs)\n        .appendTaggedFields();\n}\n/*\n  DeleteTopics Response (Version: 6) => throttle_time_ms [responses] TAG_BUFFER\n    throttle_time_ms => INT32\n    responses => name topic_id error_code error_message TAG_BUFFER\n      name => COMPACT_NULLABLE_STRING\n      topic_id => UUID\n      error_code => INT16\n      error_message => COMPACT_NULLABLE_STRING\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        responses: reader.readArray((r, i) => {\n            const topicResponse = {\n                name: r.readNullableString(),\n                topicId: r.readUUID(),\n                errorCode: r.readInt16(),\n                errorMessage: r.readNullableString()\n            };\n            if (topicResponse.errorCode !== 0) {\n                errors.push([`/responses/${i}`, topicResponse.errorCode]);\n            }\n            return topicResponse;\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(20, 6, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  DescribeAcls Request (Version: 3) => resource_type_filter resource_name_filter pattern_type_filter principal_filter host_filter operation permission_type TAG_BUFFER\n    resource_type_filter => INT8\n    resource_name_filter => COMPACT_NULLABLE_STRING\n    pattern_type_filter => INT8\n    principal_filter => COMPACT_NULLABLE_STRING\n    host_filter => COMPACT_NULLABLE_STRING\n    operation => INT8\n    permission_type => INT8\n*/\nexport function createRequest(resourceTypeFilter, resourceNameFilter, patternTypeFilter, principalFilter, hostFilter, operation, permissionType) {\n    return Writer.create()\n        .appendInt8(resourceTypeFilter)\n        .appendString(resourceNameFilter)\n        .appendInt8(patternTypeFilter)\n        .appendString(principalFilter)\n        .appendString(hostFilter)\n        .appendInt8(operation)\n        .appendInt8(permissionType)\n        .appendTaggedFields();\n}\n/*\nDescribeAcls Response (Version: 3) => throttle_time_ms error_code error_message [resources] TAG_BUFFER\n  throttle_time_ms => INT32\n  error_code => INT16\n  error_message => COMPACT_NULLABLE_STRING\n  resources => resource_type resource_name pattern_type [acls] TAG_BUFFER\n    resource_type => INT8\n    resource_name => COMPACT_STRING\n    pattern_type => INT8\n    acls => principal host operation permission_type TAG_BUFFER\n      principal => COMPACT_STRING\n      host => COMPACT_STRING\n      operation => INT8\n      permission_type => INT8\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        errorCode: reader.readInt16(),\n        errorMessage: reader.readNullableString(),\n        resources: reader.readArray(r => {\n            return {\n                resourceType: r.readInt8(),\n                resourceName: r.readString(),\n                patternType: r.readInt8(),\n                acls: r.readArray(r => {\n                    return {\n                        principal: r.readString(),\n                        host: r.readString(),\n                        operation: r.readInt8(),\n                        permissionType: r.readInt8()\n                    };\n                })\n            };\n        })\n    };\n    if (response.errorCode) {\n        throw new ResponseError(apiKey, apiVersion, { '': response.errorCode }, response);\n    }\n    return response;\n}\nexport const api = createAPI(29, 3, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  DescribeClientQuotas Request (Version: 1) => [components] strict TAG_BUFFER\n    components => entity_type match_type match TAG_BUFFER\n      entity_type => COMPACT_STRING\n      match_type => INT8\n      match => COMPACT_NULLABLE_STRING\n    strict => BOOLEAN\n*/\nexport function createRequest(components, strict) {\n    return Writer.create()\n        .appendArray(components, (w, c) => {\n        // @ts-ignore - TS complains that 'match' is not available in all variants of DescribeClientQuotasRequestComponent\n        w.appendString(c.entityType).appendInt8(c.matchType).appendString(c.match);\n    })\n        .appendBoolean(strict)\n        .appendTaggedFields();\n}\n/*\n  DescribeClientQuotas Response (Version: 1) => throttle_time_ms error_code error_message [entries] TAG_BUFFER\n    throttle_time_ms => INT32\n    error_code => INT16\n    error_message => COMPACT_NULLABLE_STRING\n    entries => [entity] [values] TAG_BUFFER\n      entity => entity_type entity_name TAG_BUFFER\n        entity_type => COMPACT_STRING\n        entity_name => COMPACT_NULLABLE_STRING\n      values => key value TAG_BUFFER\n        key => COMPACT_STRING\n        value => FLOAT64\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        errorCode: reader.readInt16(),\n        errorMessage: reader.readNullableString(),\n        entries: reader.readArray(r => {\n            return {\n                entity: r.readArray(r => {\n                    return { entityType: r.readString(), entityName: r.readNullableString() };\n                }),\n                values: r.readArray(r => {\n                    return {\n                        key: r.readString(),\n                        value: r.readFloat64()\n                    };\n                })\n            };\n        })\n    };\n    if (response.errorCode !== 0) {\n        throw new ResponseError(apiKey, apiVersion, { '': response.errorCode }, response);\n    }\n    return response;\n}\nexport const api = createAPI(48, 1, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  DescribeCluster Request (Version: 1) => include_cluster_authorized_operations endpoint_type TAG_BUFFER\n    include_cluster_authorized_operations => BOOLEAN\n    endpoint_type => INT8\n*/\nexport function createRequest(includeClusterAuthorizedOperations, endpointType) {\n    return Writer.create().appendBoolean(includeClusterAuthorizedOperations).appendInt8(endpointType).appendTaggedFields();\n}\n/*\n  DescribeCluster Response (Version: 1) => throttle_time_ms error_code error_message endpoint_type cluster_id controller_id [brokers] cluster_authorized_operations TAG_BUFFER\n    throttle_time_ms => INT32\n    error_code => INT16\n    error_message => COMPACT_NULLABLE_STRING\n    endpoint_type => INT8\n    cluster_id => COMPACT_STRING\n    controller_id => INT32\n    brokers => broker_id host port rack TAG_BUFFER\n      broker_id => INT32\n      host => COMPACT_STRING\n      port => INT32\n      rack => COMPACT_NULLABLE_STRING\n    cluster_authorized_operations => INT32\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        errorCode: reader.readInt16(),\n        errorMessage: reader.readNullableString(),\n        endpointType: reader.readInt8(),\n        clusterId: reader.readString(),\n        controllerId: reader.readInt32(),\n        brokers: reader.readArray(r => {\n            return {\n                brokerId: r.readInt32(),\n                host: r.readString(),\n                port: r.readInt32(),\n                rack: r.readNullableString()\n            };\n        }),\n        clusterAuthorizedOperations: reader.readInt32()\n    };\n    if (response.errorCode !== 0) {\n        throw new ResponseError(apiKey, apiVersion, { '': response.errorCode }, response);\n    }\n    return response;\n}\nexport const api = createAPI(60, 1, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  DescribeConfigs Request (Version: 4) => [resources] include_synonyms include_documentation TAG_BUFFER\n    resources => resource_type resource_name [configuration_keys] TAG_BUFFER\n      resource_type => INT8\n      resource_name => COMPACT_STRING\n      configuration_keys => COMPACT_STRING\n    include_synonyms => BOOLEAN\n    include_documentation => BOOLEAN\n*/\nexport function createRequest(resources, includeSynonyms, includeDocumentation) {\n    return Writer.create()\n        .appendArray(resources, (w, r) => {\n        w.appendInt8(r.resourceType)\n            .appendString(r.resourceName)\n            .appendArray(r.configurationKeys, (w, c) => w.appendString(c), true, false);\n    })\n        .appendBoolean(includeSynonyms)\n        .appendBoolean(includeDocumentation)\n        .appendTaggedFields();\n}\n/*\n  DescribeConfigs Response (Version: 4) => throttle_time_ms [results] TAG_BUFFER\n    throttle_time_ms => INT32\n    results => error_code error_message resource_type resource_name [configs] TAG_BUFFER\n      error_code => INT16\n      error_message => COMPACT_NULLABLE_STRING\n      resource_type => INT8\n      resource_name => COMPACT_STRING\n      configs => name value read_only config_source is_sensitive [synonyms] config_type documentation TAG_BUFFER\n        name => COMPACT_STRING\n        value => COMPACT_NULLABLE_STRING\n        read_only => BOOLEAN\n        config_source => INT8\n        is_sensitive => BOOLEAN\n        synonyms => name value source TAG_BUFFER\n          name => COMPACT_STRING\n          value => COMPACT_NULLABLE_STRING\n          source => INT8\n        config_type => INT8\n        documentation => COMPACT_NULLABLE_STRING\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        results: reader.readArray((r, i) => {\n            const errorCode = r.readInt16();\n            if (errorCode !== 0) {\n                errors.push([`/results/${i}`, errorCode]);\n            }\n            return {\n                errorCode,\n                errorMessage: r.readNullableString(),\n                resourceType: r.readInt8(),\n                resourceName: r.readString(),\n                configs: r.readArray(r => {\n                    return {\n                        name: r.readString(),\n                        value: r.readNullableString(),\n                        readOnly: r.readBoolean(),\n                        configSource: r.readInt8(),\n                        isSensitive: r.readBoolean(),\n                        synonyms: r.readArray(r => {\n                            return {\n                                name: r.readString(),\n                                value: r.readNullableString(),\n                                source: r.readInt8()\n                            };\n                        }, true, false),\n                        configType: r.readInt8(),\n                        documentation: r.readNullableString()\n                    };\n                })\n            };\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(32, 4, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  DescribeDelegationToken Request (Version: 3) => [owners] TAG_BUFFER\n    owners => principal_type principal_name TAG_BUFFER\n      principal_type => COMPACT_STRING\n      principal_name => COMPACT_STRING\n*/\nexport function createRequest(owners) {\n    return Writer.create()\n        .appendArray(owners, (w, r) => w.appendString(r.principalType).appendString(r.principalName))\n        .appendTaggedFields();\n}\n/*\nDescribeDelegationToken Response (Version: 3) => error_code [tokens] throttle_time_ms TAG_BUFFER\n  error_code => INT16\n  tokens => principal_type principal_name token_requester_principal_type token_requester_principal_name issue_timestamp expiry_timestamp max_timestamp token_id hmac [renewers] TAG_BUFFER\n    principal_type => COMPACT_STRING\n    principal_name => COMPACT_STRING\n    token_requester_principal_type => COMPACT_STRING\n    token_requester_principal_name => COMPACT_STRING\n    issue_timestamp => INT64\n    expiry_timestamp => INT64\n    max_timestamp => INT64\n    token_id => COMPACT_STRING\n    hmac => COMPACT_BYTES\n    renewers => principal_type principal_name TAG_BUFFER\n      principal_type => COMPACT_STRING\n      principal_name => COMPACT_STRING\n  throttle_time_ms => INT32\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const response = {\n        errorCode: reader.readInt16(),\n        tokens: reader.readArray(r => {\n            return {\n                principalType: r.readString(),\n                principalName: r.readString(),\n                tokenRequesterPrincipalType: r.readString(),\n                tokenRequesterPrincipalName: r.readString(),\n                issueTimestamp: r.readInt64(),\n                expiryTimestamp: r.readInt64(),\n                maxTimestamp: r.readInt64(),\n                tokenId: r.readString(),\n                hmac: r.readBytes(),\n                renewers: r.readArray(r => {\n                    return {\n                        principalType: r.readString(),\n                        principalName: r.readString()\n                    };\n                })\n            };\n        }),\n        throttleTimeMs: reader.readInt32()\n    };\n    if (response.errorCode !== 0) {\n        throw new ResponseError(apiKey, apiVersion, { '': response.errorCode }, response);\n    }\n    return response;\n}\nexport const api = createAPI(41, 3, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  DescribeGroups Request (Version: 5) => [groups] include_authorized_operations TAG_BUFFER\n    groups => COMPACT_STRING\n    include_authorized_operations => BOOLEAN\n*/\nexport function createRequest(groups, includeAuthorizedOperations) {\n    return Writer.create()\n        .appendArray(groups, (w, g) => w.appendString(g), true, false)\n        .appendBoolean(includeAuthorizedOperations)\n        .appendTaggedFields();\n}\n/*\nDescribeGroups Response (Version: 5) => throttle_time_ms [groups] TAG_BUFFER\n  throttle_time_ms => INT32\n  groups => error_code group_id group_state protocol_type protocol_data [members] authorized_operations TAG_BUFFER\n    error_code => INT16\n    group_id => COMPACT_STRING\n    group_state => COMPACT_STRING\n    protocol_type => COMPACT_STRING\n    protocol_data => COMPACT_STRING\n    members => member_id group_instance_id client_id client_host member_metadata member_assignment TAG_BUFFER\n      member_id => COMPACT_STRING\n      group_instance_id => COMPACT_NULLABLE_STRING\n      client_id => COMPACT_STRING\n      client_host => COMPACT_STRING\n      member_metadata => COMPACT_BYTES\n      member_assignment => COMPACT_BYTES\n    authorized_operations => INT32\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        groups: reader.readArray((r, i) => {\n            const group = {\n                errorCode: r.readInt16(),\n                groupId: r.readString(),\n                groupState: r.readString(),\n                protocolType: r.readString(),\n                protocolData: r.readString(),\n                members: r.readArray(r => {\n                    return {\n                        memberId: r.readString(),\n                        groupInstanceId: r.readNullableString(),\n                        clientId: r.readString(),\n                        clientHost: r.readString(),\n                        memberMetadata: r.readBytes(),\n                        memberAssignment: r.readBytes()\n                    };\n                }),\n                authorizedOperations: r.readInt32()\n            };\n            if (group.errorCode !== 0) {\n                errors.push([`/groups/${i}`, group.errorCode]);\n            }\n            return group;\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(15, 5, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  DescribeLogDirs Request (Version: 4) => [topics] TAG_BUFFER\n    topics => topic [partitions] TAG_BUFFER\n      topic => COMPACT_STRING\n      partitions => INT32\n*/\nexport function createRequest(topics) {\n    return Writer.create()\n        .appendArray(topics, (w, t) => {\n        w.appendString(t.name).appendArray(t.partitions, (w, p) => w.appendInt32(p), true, false);\n    })\n        .appendTaggedFields();\n}\n/*\n  DescribeLogDirs Response (Version: 4) => throttle_time_ms error_code [results] TAG_BUFFER\n    throttle_time_ms => INT32\n    error_code => INT16\n    results => error_code log_dir [topics] total_bytes usable_bytes TAG_BUFFER\n      error_code => INT16\n      log_dir => COMPACT_STRING\n      topics => name [partitions] TAG_BUFFER\n        name => COMPACT_STRING\n        partitions => partition_index partition_size offset_lag is_future_key TAG_BUFFER\n          partition_index => INT32\n          partition_size => INT64\n          offset_lag => INT64\n          is_future_key => BOOLEAN\n      total_bytes => INT64\n      usable_bytes => INT64\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const throttleTimeMs = reader.readInt32();\n    const errorCode = reader.readInt16();\n    if (errorCode !== 0) {\n        errors.push(['', errorCode]);\n    }\n    const response = {\n        throttleTimeMs,\n        errorCode,\n        results: reader.readArray((r, i) => {\n            const errorCode = r.readInt16();\n            if (errorCode !== 0) {\n                errors.push([`/results/${i}`, errorCode]);\n            }\n            return {\n                errorCode,\n                logDir: r.readString(),\n                topics: r.readArray(reader => {\n                    return {\n                        name: reader.readString(),\n                        partitions: reader.readArray(reader => {\n                            return {\n                                partitionIndex: reader.readInt32(),\n                                partitionSize: reader.readInt64(),\n                                offsetLag: reader.readInt64(),\n                                isFutureKey: reader.readBoolean()\n                            };\n                        })\n                    };\n                }),\n                totalBytes: r.readInt64(),\n                usableBytes: r.readInt64()\n            };\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(35, 4, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  DescribeProducers Request (Version: 0) => [topics] TAG_BUFFER\n    topics => name [partition_indexes] TAG_BUFFER\n      name => COMPACT_STRING\n      partition_indexes => INT32\n*/\nexport function createRequest(topics) {\n    return Writer.create()\n        .appendArray(topics, (w, t) => {\n        w.appendString(t.name).appendArray(t.partitionIndexes, (w, p) => w.appendInt32(p), true, false);\n    })\n        .appendTaggedFields();\n}\n/*\n  DescribeProducers Response (Version: 0) => throttle_time_ms [topics] TAG_BUFFER\n    throttle_time_ms => INT32\n    topics => name [partitions] TAG_BUFFER\n      name => COMPACT_STRING\n      partitions => partition_index error_code error_message [active_producers] TAG_BUFFER\n        partition_index => INT32\n        error_code => INT16\n        error_message => COMPACT_NULLABLE_STRING\n        active_producers => producer_id producer_epoch last_sequence last_timestamp coordinator_epoch current_txn_start_offset TAG_BUFFER\n          producer_id => INT64\n          producer_epoch => INT32\n          last_sequence => INT32\n          last_timestamp => INT64\n          coordinator_epoch => INT32\n          current_txn_start_offset => INT64\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        topics: reader.readArray(r => {\n            return {\n                name: r.readString(),\n                partitions: reader.readArray((r, i) => {\n                    const partition = {\n                        partitionIndex: r.readInt32(),\n                        errorCode: r.readInt16(),\n                        errorMessage: r.readNullableString(),\n                        activeProducers: r.readArray(r => {\n                            return {\n                                producerId: r.readInt64(),\n                                producerEpoch: r.readInt32(),\n                                lastSequence: r.readInt32(),\n                                lastTimestamp: r.readInt64(),\n                                coordinatorEpoch: r.readInt32(),\n                                currentTxnStartOffset: r.readInt64()\n                            };\n                        })\n                    };\n                    if (partition.errorCode !== 0) {\n                        errors.push([`/partitions/${i}`, partition.errorCode]);\n                    }\n                    return partition;\n                })\n            };\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(61, 0, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  DescribeQuorum Request (Version: 2) => [topics] TAG_BUFFER\n    topics => topic_name [partitions] TAG_BUFFER\n      topic_name => COMPACT_STRING\n      partitions => partition_index TAG_BUFFER\n        partition_index => INT32\n*/\nexport function createRequest(topics) {\n    return Writer.create()\n        .appendArray(topics, (w, t) => {\n        w.appendString(t.topicName).appendArray(t.partitions, (w, p) => {\n            w.appendInt32(p.partitionIndex);\n        });\n    })\n        .appendTaggedFields();\n}\n/*\n  DescribeQuorum Response (Version: 2) => error_code error_message [topics] [nodes] TAG_BUFFER\n    error_code => INT16\n    error_message => COMPACT_NULLABLE_STRING\n    topics => topic_name [partitions] TAG_BUFFER\n      topic_name => COMPACT_STRING\n      partitions => partition_index error_code error_message leader_id leader_epoch high_watermark [current_voters] [observers] TAG_BUFFER\n        partition_index => INT32\n        error_code => INT16\n        error_message => COMPACT_NULLABLE_STRING\n        leader_id => INT32\n        leader_epoch => INT32\n        high_watermark => INT64\n        current_voters => replica_id replica_directory_id log_end_offset last_fetch_timestamp last_caught_up_timestamp TAG_BUFFER\n          replica_id => INT32\n          replica_directory_id => UUID\n          log_end_offset => INT64\n          last_fetch_timestamp => INT64\n          last_caught_up_timestamp => INT64\n        observers => replica_id replica_directory_id log_end_offset last_fetch_timestamp last_caught_up_timestamp TAG_BUFFER\n          replica_id => INT32\n          replica_directory_id => UUID\n          log_end_offset => INT64\n          last_fetch_timestamp => INT64\n          last_caught_up_timestamp => INT64\n    nodes => node_id [listeners] TAG_BUFFER\n      node_id => INT32\n      listeners => name host port TAG_BUFFER\n        name => COMPACT_STRING\n        host => COMPACT_STRING\n        port => UINT16\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const errorCode = reader.readInt16();\n    if (errorCode !== 0) {\n        errors.push(['', errorCode]);\n    }\n    const response = {\n        errorCode,\n        errorMessage: reader.readNullableString(),\n        topics: reader.readArray((r, i) => {\n            return {\n                topicName: r.readString(),\n                partitions: r.readArray((r, j) => {\n                    const partition = {\n                        partitionIndex: r.readInt32(),\n                        errorCode: r.readInt16(),\n                        errorMessage: r.readNullableString(),\n                        leaderId: r.readInt32(),\n                        leaderEpoch: r.readInt32(),\n                        highWatermark: r.readInt64(),\n                        currentVoters: r.readArray(r => {\n                            return {\n                                replicaId: r.readInt32(),\n                                replicaDirectoryId: r.readUUID(),\n                                logEndOffset: r.readInt64(),\n                                lastFetchTimestamp: r.readInt64(),\n                                lastCaughtUpTimestamp: r.readInt64()\n                            };\n                        }),\n                        observers: r.readArray(r => {\n                            return {\n                                replicaId: r.readInt32(),\n                                replicaDirectoryId: r.readUUID(),\n                                logEndOffset: r.readInt64(),\n                                lastFetchTimestamp: r.readInt64(),\n                                lastCaughtUpTimestamp: r.readInt64()\n                            };\n                        })\n                    };\n                    if (partition.errorCode !== 0) {\n                        errors.push([`/topics/${i}/partitions/${j}`, partition.errorCode]);\n                    }\n                    return partition;\n                })\n            };\n        }),\n        nodes: reader.readArray(r => {\n            return {\n                nodeId: r.readInt32(),\n                listeners: r.readArray(r => {\n                    return {\n                        name: r.readString(),\n                        host: r.readString(),\n                        port: r.readUnsignedInt16()\n                    };\n                })\n            };\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(55, 2, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  DescribeTopicPartitions Request (Version: 0) => [topics] response_partition_limit cursor TAG_BUFFER\n    topics => name TAG_BUFFER\n      name => COMPACT_STRING\n    response_partition_limit => INT32\n    cursor => topic_name partition_index TAG_BUFFER\n      topic_name => COMPACT_STRING\n      partition_index => INT32\n*/\nexport function createRequest(topics, responsePartitionLimit, cursor) {\n    const writer = Writer.create()\n        .appendArray(topics, (w, t) => w.appendString(t.name))\n        .appendInt32(responsePartitionLimit);\n    if (cursor) {\n        writer.appendInt8(1).appendString(cursor.topicName).appendInt32(cursor.partitionIndex).appendTaggedFields();\n    }\n    else {\n        writer.appendInt8(-1);\n    }\n    return writer.appendTaggedFields();\n}\n/*\n  DescribeTopicPartitions Response (Version: 0) => throttle_time_ms [topics] next_cursor TAG_BUFFER\n    throttle_time_ms => INT32\n    topics => error_code name topic_id is_internal [partitions] topic_authorized_operations TAG_BUFFER\n      error_code => INT16\n      name => COMPACT_NULLABLE_STRING\n      topic_id => UUID\n      is_internal => BOOLEAN\n      partitions => error_code partition_index leader_id leader_epoch [replica_nodes] [isr_nodes] [eligible_leader_replicas] [last_known_elr] [offline_replicas] TAG_BUFFER\n        error_code => INT16\n        partition_index => INT32\n        leader_id => INT32\n        leader_epoch => INT32\n        replica_nodes => INT32\n        isr_nodes => INT32\n        eligible_leader_replicas => INT32\n        last_known_elr => INT32\n        offline_replicas => INT32\n      topic_authorized_operations => INT32\n    next_cursor => topic_name partition_index TAG_BUFFER\n      topic_name => COMPACT_STRING\n      partition_index => INT32\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        topics: reader.readArray((r, i) => {\n            const errorCode = r.readInt16();\n            if (errorCode !== 0) {\n                errors.push([`/topics/${i}`, errorCode]);\n            }\n            return {\n                errorCode,\n                name: r.readNullableString(),\n                topicId: r.readUUID(),\n                isInternal: r.readBoolean(),\n                partitions: r.readArray((r, j) => {\n                    const errorCode = r.readInt16();\n                    if (errorCode !== 0) {\n                        errors.push([`/topics/${i}/partitions/${j}`, errorCode]);\n                    }\n                    return {\n                        errorCode,\n                        partitionIndex: r.readInt32(),\n                        leaderId: r.readInt32(),\n                        leaderEpoch: r.readInt32(),\n                        replicaNodes: r.readArray(r => r.readInt32(), true, false),\n                        isrNodes: r.readArray(r => r.readInt32(), true, false),\n                        eligibleLeaderReplicas: r.readArray(r => r.readInt32(), true, false),\n                        lastKnownElr: r.readArray(r => r.readInt32(), true, false),\n                        offlineReplicas: r.readArray(r => r.readInt32(), true, false)\n                    };\n                }),\n                topicAuthorizedOperations: r.readInt32()\n            };\n        })\n    };\n    if (reader.readInt8() === 1) {\n        response.nextCursor = {\n            topicName: reader.readString(),\n            partitionIndex: reader.readInt32()\n        };\n    }\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(75, 0, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\nDescribeTransactions Request (Version: 0) => [transactional_ids] TAG_BUFFER\n  transactional_ids => COMPACT_STRING\n*/\nexport function createRequest(transactionalIds) {\n    return Writer.create()\n        .appendArray(transactionalIds, (w, t) => w.appendString(t), true, false)\n        .appendTaggedFields();\n}\n/*\nDescribeTransactions Response (Version: 0) => throttle_time_ms [transaction_states] TAG_BUFFER\n  throttle_time_ms => INT32\n  transaction_states => error_code transactional_id transaction_state transaction_timeout_ms transaction_start_time_ms producer_id producer_epoch [topics] TAG_BUFFER\n    error_code => INT16\n    transactional_id => COMPACT_STRING\n    transaction_state => COMPACT_STRING\n    transaction_timeout_ms => INT32\n    transaction_start_time_ms => INT64\n    producer_id => INT64\n    producer_epoch => INT16\n    topics => topic [partitions] TAG_BUFFER\n      topic => COMPACT_STRING\n      partitions => INT32\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        transactionStates: reader.readArray((r, i) => {\n            const state = {\n                errorCode: r.readInt16(),\n                transactionalId: r.readString(),\n                transactionState: r.readString(),\n                transactionTimeoutMs: r.readInt32(),\n                transactionStartTimeMs: r.readInt64(),\n                producerId: r.readInt64(),\n                producerEpoch: r.readInt16(),\n                topics: r.readArray(r => {\n                    return {\n                        topic: r.readString(),\n                        partitions: r.readArray(r => r.readInt32(), true, false)\n                    };\n                })\n            };\n            if (state.errorCode !== 0) {\n                errors.push([`/transaction_states/${i}`, state.errorCode]);\n            }\n            return state;\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(65, 0, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  DescribeUserScramCredentials Request (Version: 0) => [users] TAG_BUFFER\n    users => name TAG_BUFFER\n      name => COMPACT_STRING\n*/\nexport function createRequest(users) {\n    return Writer.create()\n        .appendArray(users, (w, u) => w.appendString(u.name))\n        .appendTaggedFields();\n}\n/*\n  DescribeUserScramCredentials Response (Version: 0) => throttle_time_ms error_code error_message [results] TAG_BUFFER\n    throttle_time_ms => INT32\n    error_code => INT16\n    error_message => COMPACT_NULLABLE_STRING\n    results => user error_code error_message [credential_infos] TAG_BUFFER\n      user => COMPACT_STRING\n      error_code => INT16\n      error_message => COMPACT_NULLABLE_STRING\n      credential_infos => mechanism iterations TAG_BUFFER\n        mechanism => INT8\n        iterations => INT32\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const throttleTimeMs = reader.readInt32();\n    const errorCode = reader.readInt16();\n    if (errorCode !== 0) {\n        errors.push(['', errorCode]);\n    }\n    const response = {\n        throttleTimeMs,\n        errorCode,\n        errorMessage: reader.readNullableString(),\n        results: reader.readArray((r, i) => {\n            const user = r.readString();\n            const errorCode = r.readInt16();\n            if (errorCode !== 0) {\n                errors.push([`/results/${i}`, errorCode]);\n            }\n            return {\n                user,\n                errorCode,\n                errorMessage: r.readNullableString(),\n                credentialInfos: r.readArray(r => {\n                    return {\n                        mechanism: r.readInt8(),\n                        iterations: r.readInt32()\n                    };\n                })\n            };\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(50, 0, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\nEnvelope Request (Version: 0) => request_data request_principal client_host_address TAG_BUFFER\n  request_data => COMPACT_BYTES\n  request_principal => COMPACT_NULLABLE_BYTES\n  client_host_address => COMPACT_BYTES\n*/\nexport function createRequest(requestData, requestPrincipal, clientHostAddress) {\n    return Writer.create()\n        .appendBytes(requestData)\n        .appendBytes(requestPrincipal)\n        .appendBytes(clientHostAddress)\n        .appendTaggedFields();\n}\n/*\nEnvelope Response (Version: 0) => response_data error_code TAG_BUFFER\n  response_data => COMPACT_NULLABLE_BYTES\n  error_code => INT16\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const response = {\n        responseData: reader.readNullableBytes(),\n        errorCode: reader.readInt16()\n    };\n    if (response.errorCode) {\n        throw new ResponseError(apiKey, apiVersion, { '': response.errorCode }, response);\n    }\n    return response;\n}\nexport const api = createAPI(58, 0, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  ExpireDelegationToken Request (Version: 2) => hmac expiry_time_period_ms TAG_BUFFER\n    hmac => COMPACT_BYTES\n    expiry_time_period_ms => INT64\n*/\nexport function createRequest(hmac, expiryTimePeriodMs) {\n    return Writer.create().appendBytes(hmac).appendInt64(expiryTimePeriodMs).appendTaggedFields();\n}\n/*\n  ExpireDelegationToken Response (Version: 2) => error_code expiry_timestamp_ms throttle_time_ms TAG_BUFFER\n    error_code => INT16\n    expiry_timestamp_ms => INT64\n    throttle_time_ms => INT32\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const response = {\n        errorCode: reader.readInt16(),\n        expiryTimestampMs: reader.readInt64(),\n        throttleTimeMs: reader.readInt32()\n    };\n    if (response.errorCode !== 0) {\n        throw new ResponseError(apiKey, apiVersion, { '': response.errorCode }, response);\n    }\n    return response;\n}\nexport const api = createAPI(40, 2, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  IncrementalAlterConfigs Request (Version: 1) => [resources] validate_only TAG_BUFFER\n    resources => resource_type resource_name [configs] TAG_BUFFER\n      resource_type => INT8\n      resource_name => COMPACT_STRING\n      configs => name config_operation value TAG_BUFFER\n        name => COMPACT_STRING\n        config_operation => INT8\n        value => COMPACT_NULLABLE_STRING\n    validate_only => BOOLEAN\n*/\nexport function createRequest(resources, validateOnly) {\n    return Writer.create()\n        .appendArray(resources, (w, r) => {\n        w.appendInt8(r.resourceType)\n            .appendString(r.resourceName)\n            .appendArray(r.configs, (w, r) => {\n            w.appendString(r.name).appendInt8(r.configOperation).appendString(r.value);\n        });\n    })\n        .appendBoolean(validateOnly)\n        .appendTaggedFields();\n}\n/*\n  IncrementalAlterConfigs Response (Version: 1) => throttle_time_ms [responses] TAG_BUFFER\n    throttle_time_ms => INT32\n    responses => error_code error_message resource_type resource_name TAG_BUFFER\n      error_code => INT16\n      error_message => COMPACT_NULLABLE_STRING\n      resource_type => INT8\n      resource_name => COMPACT_STRING\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        responses: reader.readArray((r, i) => {\n            const errorCode = r.readInt16();\n            if (errorCode !== 0) {\n                errors.push([`/responses/${i}`, errorCode]);\n            }\n            return {\n                errorCode,\n                errorMessage: r.readNullableString(),\n                resourceType: r.readInt8(),\n                resourceName: r.readString()\n            };\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(44, 1, createRequest, parseResponse);\n", "import { pascalCase } from 'scule';\nimport { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  ListGroups Request (Version: 4) => [states_filter] TAG_BUFFER\n    states_filter => COMPACT_STRING\n*/\nexport function createRequest(statesFilter) {\n    return Writer.create()\n        .appendArray(statesFilter, (w, s) => w.appendString(pascalCase(s, { normalize: true })), true, false)\n        .appendTaggedFields();\n}\n/*\n  ListGroups Response (Version: 4) => throttle_time_ms error_code [groups] TAG_BUFFER\n    throttle_time_ms => INT32\n    error_code => INT16\n    groups => group_id protocol_type group_state group_type TAG_BUFFER\n      group_id => COMPACT_STRING\n      protocol_type => COMPACT_STRING\n      group_state => COMPACT_STRING\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        errorCode: reader.readInt16(),\n        groups: reader.readArray(r => {\n            return {\n                groupId: r.readNullableString(),\n                protocolType: r.readString(),\n                groupState: r.readString()\n            };\n        })\n    };\n    if (response.errorCode !== 0) {\n        throw new ResponseError(apiKey, apiVersion, { '': response.errorCode }, response);\n    }\n    return response;\n}\nexport const api = createAPI(16, 4, createRequest, parseResponse);\n", "const NUMBER_CHAR_RE = /\\d/;\nconst STR_SPLITTERS = [\"-\", \"_\", \"/\", \".\"];\nfunction isUppercase(char = \"\") {\n  if (NUMBER_CHAR_RE.test(char)) {\n    return void 0;\n  }\n  return char !== char.toLowerCase();\n}\nfunction splitByCase(str, separators) {\n  const splitters = separators ?? STR_SPLITTERS;\n  const parts = [];\n  if (!str || typeof str !== \"string\") {\n    return parts;\n  }\n  let buff = \"\";\n  let previousUpper;\n  let previousSplitter;\n  for (const char of str) {\n    const isSplitter = splitters.includes(char);\n    if (isSplitter === true) {\n      parts.push(buff);\n      buff = \"\";\n      previousUpper = void 0;\n      continue;\n    }\n    const isUpper = isUppercase(char);\n    if (previousSplitter === false) {\n      if (previousUpper === false && isUpper === true) {\n        parts.push(buff);\n        buff = char;\n        previousUpper = isUpper;\n        continue;\n      }\n      if (previousUpper === true && isUpper === false && buff.length > 1) {\n        const lastChar = buff.at(-1);\n        parts.push(buff.slice(0, Math.max(0, buff.length - 1)));\n        buff = lastChar + char;\n        previousUpper = isUpper;\n        continue;\n      }\n    }\n    buff += char;\n    previousUpper = isUpper;\n    previousSplitter = isSplitter;\n  }\n  parts.push(buff);\n  return parts;\n}\nfunction upperFirst(str) {\n  return str ? str[0].toUpperCase() + str.slice(1) : \"\";\n}\nfunction lowerFirst(str) {\n  return str ? str[0].toLowerCase() + str.slice(1) : \"\";\n}\nfunction pascalCase(str, opts) {\n  return str ? (Array.isArray(str) ? str : splitByCase(str)).map((p) => upperFirst(opts?.normalize ? p.toLowerCase() : p)).join(\"\") : \"\";\n}\nfunction camelCase(str, opts) {\n  return lowerFirst(pascalCase(str || \"\", opts));\n}\nfunction kebabCase(str, joiner) {\n  return str ? (Array.isArray(str) ? str : splitByCase(str)).map((p) => p.toLowerCase()).join(joiner ?? \"-\") : \"\";\n}\nfunction snakeCase(str) {\n  return kebabCase(str || \"\", \"_\");\n}\nfunction flatCase(str) {\n  return kebabCase(str || \"\", \"\");\n}\nfunction trainCase(str, opts) {\n  return (Array.isArray(str) ? str : splitByCase(str)).filter(Boolean).map((p) => upperFirst(opts?.normalize ? p.toLowerCase() : p)).join(\"-\");\n}\nconst titleCaseExceptions = /^(a|an|and|as|at|but|by|for|if|in|is|nor|of|on|or|the|to|with)$/i;\nfunction titleCase(str, opts) {\n  return (Array.isArray(str) ? str : splitByCase(str)).filter(Boolean).map(\n    (p) => titleCaseExceptions.test(p) ? p.toLowerCase() : upperFirst(opts?.normalize ? p.toLowerCase() : p)\n  ).join(\" \");\n}\n\nexport { camelCase, flatCase, isUppercase, kebabCase, lowerFirst, pascalCase, snakeCase, splitByCase, titleCase, trainCase, upperFirst };\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  ListGroups Request (Version: 5) => [states_filter] [types_filter] TAG_BUFFER\n    states_filter => COMPACT_STRING\n    types_filter => COMPACT_STRING\n*/\nexport function createRequest(statesFilter, typesFilter) {\n    return Writer.create()\n        .appendArray(statesFilter, (w, s) => w.appendString(s), true, false)\n        .appendArray(typesFilter, (w, t) => w.appendString(t), true, false)\n        .appendTaggedFields();\n}\n/*\n  ListGroups Response (Version: 5) => throttle_time_ms error_code [groups] TAG_BUFFER\n    throttle_time_ms => INT32\n    error_code => INT16\n    groups => group_id protocol_type group_state group_type TAG_BUFFER\n      group_id => COMPACT_STRING\n      protocol_type => COMPACT_STRING\n      group_state => COMPACT_STRING\n      group_type => COMPACT_STRING\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        errorCode: reader.readInt16(),\n        groups: reader.readArray(r => {\n            return {\n                groupId: r.readNullableString(),\n                protocolType: r.readString(),\n                groupState: r.readString(),\n                groupType: r.readString()\n            };\n        })\n    };\n    if (response.errorCode !== 0) {\n        throw new ResponseError(apiKey, apiVersion, { '': response.errorCode }, response);\n    }\n    return response;\n}\nexport const api = createAPI(16, 5, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  ListPartitionReassignments Request (Version: 0) => timeout_ms [topics] TAG_BUFFER\n    timeout_ms => INT32\n    topics => name [partition_indexes] TAG_BUFFER\n      name => COMPACT_STRING\n      partition_indexes => INT32\n*/\nexport function createRequest(timeoutMs, topics) {\n    return Writer.create()\n        .appendInt32(timeoutMs)\n        .appendArray(topics, (w, t) => {\n        w.appendString(t.name).appendArray(t.partitionIndexes, (w, p) => w.appendInt32(p), true, false);\n    })\n        .appendTaggedFields();\n}\n/*\n  ListPartitionReassignments Response (Version: 0) => throttle_time_ms error_code error_message [topics] TAG_BUFFER\n    throttle_time_ms => INT32\n    error_code => INT16\n    error_message => COMPACT_NULLABLE_STRING\n    topics => name [partitions] TAG_BUFFER\n      name => COMPACT_STRING\n      partitions => partition_index [replicas] [adding_replicas] [removing_replicas] TAG_BUFFER\n        partition_index => INT32\n        replicas => INT32\n        adding_replicas => INT32\n        removing_replicas => INT32\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        errorCode: reader.readInt16(),\n        errorMessage: reader.readNullableString(),\n        topics: reader.readArray(r => {\n            return {\n                name: r.readString(),\n                partitions: r.readArray(r => {\n                    return {\n                        partitionIndex: r.readInt32(),\n                        replicas: r.readArray(r => r.readInt32(), true, false),\n                        addingReplicas: r.readArray(r => r.readInt32(), true, false),\n                        removingReplicas: r.readArray(r => r.readInt32(), true, false)\n                    };\n                })\n            };\n        })\n    };\n    if (response.errorCode !== 0) {\n        throw new ResponseError(apiKey, apiVersion, { '': response.errorCode }, response);\n    }\n    return response;\n}\nexport const api = createAPI(46, 0, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  ListTransactions Request (Version: 1) => [state_filters] [producer_id_filters] duration_filter TAG_BUFFER\n    state_filters => COMPACT_STRING\n    producer_id_filters => INT64\n    duration_filter => INT64\n*/\nexport function createRequest(stateFilters, producerIdFilters, durationFilter) {\n    return Writer.create()\n        .appendArray(stateFilters, (w, t) => w.appendString(t), true, false)\n        .appendArray(producerIdFilters, (w, p) => w.appendInt64(p), true, false)\n        .appendInt64(durationFilter)\n        .appendTaggedFields();\n}\n/*\n  ListTransactions Response (Version: 1) => throttle_time_ms error_code [unknown_state_filters] [transaction_states] TAG_BUFFER\n    throttle_time_ms => INT32\n    error_code => INT16\n    unknown_state_filters => COMPACT_STRING\n    transaction_states => transactional_id producer_id transaction_state TAG_BUFFER\n      transactional_id => COMPACT_STRING\n      producer_id => INT64\n      transaction_state => COMPACT_STRING\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        errorCode: reader.readInt16(),\n        unknownStateFilters: reader.readArray(r => r.readString(), true, false),\n        transactionStates: reader.readArray(r => {\n            return {\n                transactionalId: r.readString(),\n                producerId: r.readInt64(),\n                transactionState: r.readString()\n            };\n        })\n    };\n    if (response.errorCode !== 0) {\n        throw new ResponseError(apiKey, apiVersion, { '': response.errorCode }, response);\n    }\n    return response;\n}\nexport const api = createAPI(66, 1, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  OffsetDelete Request (Version: 0) => group_id [topics]\n    group_id => STRING\n    topics => name [partitions]\n      name => STRING\n      partitions => partition_index\n        partition_index => INT32\n*/\nexport function createRequest(groupId, topics) {\n    return Writer.create()\n        .appendString(groupId, false)\n        .appendArray(topics, (w, t) => {\n        w.appendString(t.name, false).appendArray(t.partitions, (w, p) => w.appendInt32(p.partitionIndex), false, false);\n    }, false, false);\n}\n/*\n  OffsetDelete Response (Version: 0) => error_code throttle_time_ms [topics]\n    error_code => INT16\n    throttle_time_ms => INT32\n    topics => name [partitions]\n      name => STRING\n      partitions => partition_index error_code\n        partition_index => INT32\n        error_code => INT16\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const errorCode = reader.readInt16();\n    if (errorCode !== 0) {\n        errors.push(['', errorCode]);\n    }\n    const response = {\n        errorCode,\n        throttleTimeMs: reader.readInt32(),\n        topics: reader.readArray((r, i) => {\n            return {\n                name: r.readString(),\n                partitions: r.readArray((r, j) => {\n                    const partition = {\n                        partitionIndex: r.readInt32(),\n                        errorCode: r.readInt16()\n                    };\n                    if (partition.errorCode !== 0) {\n                        errors.push([`/topics/${i}/partitions/${j}`, partition.errorCode]);\n                    }\n                    return partition;\n                })\n            };\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(47, 0, createRequest, parseResponse, false, false);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  RenewDelegationToken Request (Version: 2) => hmac renew_period_ms TAG_BUFFER\n    hmac => COMPACT_BYTES\n    renew_period_ms => INT64\n*/\nexport function createRequest(hmac, renewPeriodMs) {\n    return Writer.create().appendBytes(hmac).appendInt64(renewPeriodMs).appendTaggedFields();\n}\n/*\n  RenewDelegationToken Response (Version: 2) => error_code expiry_timestamp_ms throttle_time_ms TAG_BUFFER\n    error_code => INT16\n    expiry_timestamp_ms => INT64\n    throttle_time_ms => INT32\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const response = {\n        errorCode: reader.readInt16(),\n        expiryTimestampMs: reader.readInt64(),\n        throttleTimeMs: reader.readInt32()\n    };\n    if (response.errorCode !== 0) {\n        throw new ResponseError(apiKey, apiVersion, { '': response.errorCode }, response);\n    }\n    return response;\n}\nexport const api = createAPI(39, 2, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\nUnregisterBroker Request (Version: 0) => broker_id TAG_BUFFER\n  broker_id => INT32\n*/\nexport function createRequest(brokerId) {\n    return Writer.create().appendInt32(brokerId).appendTaggedFields();\n}\n/*\n  UnregisterBroker Response (Version: 0) => throttle_time_ms error_code error_message TAG_BUFFER\n    throttle_time_ms => INT32\n    error_code => INT16\n    error_message => COMPACT_NULLABLE_STRING\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        errorCode: reader.readInt16(),\n        errorMessage: reader.readNullableString()\n    };\n    if (response.errorCode !== 0) {\n        throw new ResponseError(apiKey, apiVersion, { '': response.errorCode }, response);\n    }\n    return response;\n}\nexport const api = createAPI(64, 0, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  UpdateFeatures Request (Version: 1) => timeout_ms [feature_updates] validate_only TAG_BUFFER\n    timeout_ms => INT32\n    feature_updates => feature max_version_level upgrade_type TAG_BUFFER\n      feature => COMPACT_STRING\n      max_version_level => INT16\n      upgrade_type => INT8\n    validate_only => BOOLEAN\n*/\nexport function createRequest(timeoutMs, featureUpdates, validateOnly) {\n    return Writer.create()\n        .appendInt32(timeoutMs)\n        .appendArray(featureUpdates, (w, f) => {\n        w.appendString(f.feature).appendInt16(f.maxVersionLevel).appendInt8(f.upgradeType);\n    })\n        .appendBoolean(validateOnly)\n        .appendTaggedFields();\n}\n/*\n  UpdateFeatures Response (Version: 1) => throttle_time_ms error_code error_message [results] TAG_BUFFER\n    throttle_time_ms => INT32\n    error_code => INT16\n    error_message => COMPACT_NULLABLE_STRING\n    results => feature error_code error_message TAG_BUFFER\n      feature => COMPACT_STRING\n      error_code => INT16\n      error_message => COMPACT_NULLABLE_STRING\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const throttleTimeMs = reader.readInt32();\n    const errorCode = reader.readInt16();\n    if (errorCode !== 0) {\n        errors.push(['', errorCode]);\n    }\n    const response = {\n        throttleTimeMs,\n        errorCode,\n        errorMessage: reader.readNullableString(),\n        results: reader.readArray((r, i) => {\n            const result = {\n                feature: r.readString(),\n                errorCode: r.readInt16(),\n                errorMessage: r.readNullableString()\n            };\n            if (result.errorCode !== 0) {\n                errors.push([`/results/${i}`, result.errorCode]);\n            }\n            return result;\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(57, 1, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  ConsumerGroupHeartbeat Request (Version: 0) => group_id member_id member_epoch instance_id rack_id rebalance_timeout_ms [subscribed_topic_names] server_assignor [topic_partitions] TAG_BUFFER\n    group_id => COMPACT_STRING\n    member_id => COMPACT_STRING\n    member_epoch => INT32\n    instance_id => COMPACT_NULLABLE_STRING\n    rack_id => COMPACT_NULLABLE_STRING\n    rebalance_timeout_ms => INT32\n    subscribed_topic_names => COMPACT_STRING\n    server_assignor => COMPACT_NULLABLE_STRING\n    topic_partitions => topic_id [partitions] TAG_BUFFER\n      topic_id => UUID\n      partitions => INT32\n*/\nexport function createRequest(groupId, memberId, memberEpoch, instanceId, rackId, rebalanceTimeoutMs, subscribedTopicNames, serverAssignor, topicPartitions) {\n    return Writer.create()\n        .appendString(groupId)\n        .appendString(memberId)\n        .appendInt32(memberEpoch)\n        .appendString(instanceId)\n        .appendString(rackId)\n        .appendInt32(rebalanceTimeoutMs)\n        .appendArray(subscribedTopicNames, (w, t) => w.appendString(t), true, false)\n        .appendString(serverAssignor)\n        .appendArray(topicPartitions, (w, t) => {\n        return w.appendUUID(t.topicId).appendArray(t.partitions, (w, p) => w.appendInt32(p), true, false);\n    })\n        .appendTaggedFields();\n}\n/*\n  ConsumerGroupHeartbeat Response (Version: 0) => throttle_time_ms error_code error_message member_id member_epoch heartbeat_interval_ms assignment TAG_BUFFER\n    throttle_time_ms => INT32\n    error_code => INT16\n    error_message => COMPACT_NULLABLE_STRING\n    member_id => COMPACT_NULLABLE_STRING\n    member_epoch => INT32\n    heartbeat_interval_ms => INT32\n    assignment => [topic_partitions] TAG_BUFFER\n      topic_partitions => topic_id [partitions] TAG_BUFFER\n        topic_id => UUID\n        partitions => INT32\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        errorCode: reader.readInt16(),\n        errorMessage: reader.readNullableString(),\n        memberId: reader.readNullableString(),\n        memberEpoch: reader.readInt32(),\n        heartbeatIntervalMs: reader.readInt32(),\n        assignment: reader.readNullableStruct(() => ({\n            topicPartitions: reader.readArray(r => {\n                return {\n                    topicId: r.readUUID(),\n                    partitions: r.readArray(r => r.readInt32(), true, false)\n                };\n            })\n        }))\n    };\n    if (response.errorCode !== 0) {\n        throw new ResponseError(apiKey, apiVersion, { '': response.errorCode }, response);\n    }\n    return response;\n}\nexport const api = createAPI(68, 0, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Reader } from \"../../protocol/reader.js\";\nimport { readRecordsBatches } from \"../../protocol/records.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  Fetch Request (Version: 15) => max_wait_ms min_bytes max_bytes isolation_level session_id session_epoch [topics] [forgotten_topics_data] rack_id TAG_BUFFER\n  max_wait_ms => INT32\n  min_bytes => INT32\n  max_bytes => INT32\n  isolation_level => INT8\n  session_id => INT32\n  session_epoch => INT32\n  topics => topic_id [partitions] TAG_BUFFER\n    topic_id => UUID\n    partitions => partition current_leader_epoch fetch_offset last_fetched_epoch log_start_offset partition_max_bytes TAG_BUFFER\n      partition => INT32\n      current_leader_epoch => INT32\n      fetch_offset => INT64\n      last_fetched_epoch => INT32\n      log_start_offset => INT64\n      partition_max_bytes => INT32\n  forgotten_topics_data => topic_id [partitions] TAG_BUFFER\n    topic_id => UUID\n    partitions => INT32\n  rack_id => COMPACT_STRING\n*/\nexport function createRequest(maxWaitMs, minBytes, maxBytes, isolationLevel, sessionId, sessionEpoch, topics, forgottenTopicsData, rackId) {\n    return Writer.create()\n        .appendInt32(maxWaitMs)\n        .appendInt32(minBytes)\n        .appendInt32(maxBytes)\n        .appendInt8(isolationLevel)\n        .appendInt32(sessionId)\n        .appendInt32(sessionEpoch)\n        .appendArray(topics, (w, t) => {\n        w.appendUUID(t.topicId).appendArray(t.partitions, (w, p) => {\n            w.appendInt32(p.partition)\n                .appendInt32(p.currentLeaderEpoch)\n                .appendInt64(p.fetchOffset)\n                .appendInt32(p.lastFetchedEpoch)\n                .appendInt64(-1n)\n                .appendInt32(p.partitionMaxBytes);\n        });\n    })\n        .appendArray(forgottenTopicsData, (w, t) => {\n        w.appendUUID(t.topic).appendArray(t.partitions, (w, p) => {\n            w.appendInt32(p);\n        }, true, false);\n    })\n        .appendString(rackId)\n        .appendTaggedFields();\n}\n/*\n  Fetch Response (Version: 15) => throttle_time_ms error_code session_id [responses] TAG_BUFFER\n    throttle_time_ms => INT32\n    error_code => INT16\n    session_id => INT32\n    responses => topic_id [partitions] TAG_BUFFER\n      topic_id => UUID\n      partitions => partition_index error_code high_watermark last_stable_offset log_start_offset [aborted_transactions] preferred_read_replica records TAG_BUFFER\n        partition_index => INT32\n        error_code => INT16\n        high_watermark => INT64\n        last_stable_offset => INT64\n        log_start_offset => INT64\n        aborted_transactions => producer_id first_offset TAG_BUFFER\n          producer_id => INT64\n          first_offset => INT64\n        preferred_read_replica => INT32\n        records => COMPACT_RECORDS\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const throttleTimeMs = reader.readInt32();\n    const errorCode = reader.readInt16();\n    if (errorCode !== 0) {\n        errors.push(['', errorCode]);\n    }\n    const response = {\n        throttleTimeMs,\n        errorCode,\n        sessionId: reader.readInt32(),\n        responses: reader.readArray((r, i) => {\n            return {\n                topicId: r.readUUID(),\n                partitions: r.readArray((r, j) => {\n                    const partition = {\n                        partitionIndex: r.readInt32(),\n                        errorCode: r.readInt16(),\n                        highWatermark: r.readInt64(),\n                        lastStableOffset: r.readInt64(),\n                        logStartOffset: r.readInt64(),\n                        abortedTransactions: r.readArray(r => {\n                            return {\n                                producerId: r.readInt64(),\n                                firstOffset: r.readInt64()\n                            };\n                        }),\n                        preferredReadReplica: r.readInt32()\n                    };\n                    if (partition.errorCode !== 0) {\n                        errors.push([`/responses/${i}/partitions/${j}`, partition.errorCode]);\n                    }\n                    // We need to reduce the size by one to follow the COMPACT_RECORDS specification.\n                    const recordsSize = r.readUnsignedVarInt() - 1;\n                    if (recordsSize > 0) {\n                        partition.records = readRecordsBatches(Reader.from(r.buffer.subarray(r.position, r.position + recordsSize)));\n                        r.skip(recordsSize);\n                    }\n                    return partition;\n                })\n            };\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(1, 15, createRequest, parseResponse);\n", "import { EMPTY_BUFFER, INT16_SIZE, INT32_SIZE, INT64_SIZE, INT8_SIZE, UUID_SIZE } from \"./definitions.js\";\nimport { DynamicBuffer } from \"./dynamic-buffer.js\";\nimport { Writer } from \"./writer.js\";\nconst instanceIdentifier = Symbol('plt.kafka.reader.instanceIdentifier');\nexport class Reader {\n    buffer;\n    position;\n    length;\n    [instanceIdentifier];\n    static isReader(target) {\n        return target?.[instanceIdentifier] === true;\n    }\n    static from(buffer) {\n        if (Writer.isWriter(buffer)) {\n            return new Reader(buffer.dynamicBuffer);\n        }\n        else if (Buffer.isBuffer(buffer)) {\n            buffer = new DynamicBuffer(buffer);\n        }\n        return new Reader(buffer);\n    }\n    constructor(buffer) {\n        this.buffer = buffer;\n        this.position = 0;\n        this.length = this.buffer.length;\n        this[instanceIdentifier] = true;\n    }\n    get remaining() {\n        return this.length - this.position;\n    }\n    reset(buffer) {\n        if (buffer) {\n            if (Buffer.isBuffer(buffer)) {\n                buffer = new DynamicBuffer(buffer);\n            }\n            this.buffer = buffer;\n        }\n        this.position = 0;\n    }\n    inspect() {\n        return this.buffer\n            .subarray(this.position)\n            .toString('hex')\n            .replaceAll(/(.{4})/g, '$1 ')\n            .trim();\n    }\n    skip(length) {\n        this.position += length;\n        return this;\n    }\n    peekUnsignedInt8(position) {\n        return this.buffer.readUInt8(position ?? this.position);\n    }\n    peekUnsignedInt16(position) {\n        return this.buffer.readUInt16BE(position ?? this.position);\n    }\n    peekUnsignedInt32(position) {\n        return this.buffer.readUInt32BE(position ?? this.position);\n    }\n    peekUnsignedInt64(position) {\n        return this.buffer.readBigUInt64BE(position ?? this.position);\n    }\n    peekUnsignedVarInt(position) {\n        return this.buffer.readUnsignedVarInt(position ?? this.position)[0];\n    }\n    peekUnsignedVarInt64(position) {\n        return this.buffer.readUnsignedVarInt64(position ?? this.position)[0];\n    }\n    peekInt8(position) {\n        return this.buffer.readInt8(position ?? this.position);\n    }\n    peekInt16(position) {\n        return this.buffer.readInt16BE(position ?? this.position);\n    }\n    peekInt32(position) {\n        return this.buffer.readInt32BE(position ?? this.position);\n    }\n    peekInt64(position) {\n        return this.buffer.readBigInt64BE(position ?? this.position);\n    }\n    peekFloat64(position) {\n        return this.buffer.readDoubleBE(position ?? this.position);\n    }\n    peekVarInt(position) {\n        return this.buffer.readVarInt(position ?? this.position)[0];\n    }\n    peekVarInt64(position) {\n        return this.buffer.readVarInt64(position ?? this.position)[0];\n    }\n    peekBoolean(position) {\n        return this.buffer.readInt8(position ?? this.position) === 1;\n    }\n    peekUUID(position) {\n        position ??= this.position;\n        return this.buffer.toString('hex', position, position + UUID_SIZE);\n    }\n    readUnsignedInt8() {\n        const value = this.peekUnsignedInt8();\n        this.position += INT8_SIZE;\n        return value;\n    }\n    readUnsignedInt16() {\n        const value = this.peekUnsignedInt16();\n        this.position += INT16_SIZE;\n        return value;\n    }\n    readUnsignedInt32() {\n        const value = this.peekUnsignedInt32();\n        this.position += INT32_SIZE;\n        return value;\n    }\n    readUnsignedInt64() {\n        const value = this.peekUnsignedInt64();\n        this.position += INT64_SIZE;\n        return value;\n    }\n    readUnsignedVarInt() {\n        const [value, read] = this.buffer.readUnsignedVarInt(this.position);\n        this.position += read;\n        return value;\n    }\n    readUnsignedVarInt64() {\n        const [value, read] = this.buffer.readUnsignedVarInt64(this.position);\n        this.position += read;\n        return value;\n    }\n    readInt8() {\n        const value = this.peekInt8();\n        this.position += INT8_SIZE;\n        return value;\n    }\n    readInt16() {\n        const value = this.peekInt16();\n        this.position += INT16_SIZE;\n        return value;\n    }\n    readInt32() {\n        const value = this.peekInt32();\n        this.position += INT32_SIZE;\n        return value;\n    }\n    readInt64() {\n        const value = this.peekInt64();\n        this.position += INT64_SIZE;\n        return value;\n    }\n    readFloat64() {\n        const value = this.peekFloat64();\n        this.position += INT64_SIZE;\n        return value;\n    }\n    readVarInt() {\n        const [value, read] = this.buffer.readVarInt(this.position);\n        this.position += read;\n        return value;\n    }\n    readVarInt64() {\n        const [value, read] = this.buffer.readVarInt64(this.position);\n        this.position += read;\n        return value;\n    }\n    readBoolean() {\n        const value = this.peekUnsignedInt8();\n        this.position += INT8_SIZE;\n        return value === 1;\n    }\n    readNullableString(compact = true, encoding = 'utf-8') {\n        let length;\n        if (compact) {\n            length = this.readUnsignedVarInt();\n            if (length === 0) {\n                return null;\n            }\n            length--;\n        }\n        else {\n            length = this.readInt16();\n            if (length === -1) {\n                return null;\n            }\n        }\n        const value = this.buffer.toString(encoding, this.position, this.position + length);\n        this.position += length;\n        return value;\n    }\n    readString(compact = true, encoding = 'utf-8') {\n        return this.readNullableString(compact, encoding) || '';\n    }\n    readUUID() {\n        const value = this.peekUUID();\n        this.position += UUID_SIZE;\n        return value.replace(/(.{8})(.{4})(.{4})(.{4})(.{12})/, '$1-$2-$3-$4-$5');\n    }\n    readNullableBytes(compact = true) {\n        let length;\n        if (compact) {\n            length = this.readUnsignedVarInt();\n            if (length === 0) {\n                return null;\n            }\n            length--;\n        }\n        else {\n            length = this.readInt32();\n            if (length === -1) {\n                return null;\n            }\n        }\n        const value = this.buffer.slice(this.position, this.position + length);\n        this.position += length;\n        return value;\n    }\n    readBytes(compact = true) {\n        return this.readNullableBytes(compact) || EMPTY_BUFFER;\n    }\n    readVarIntBytes() {\n        let length = this.readVarInt();\n        if (length === -1) {\n            length = 0;\n        }\n        const value = this.buffer.slice(this.position, this.position + length);\n        this.position += length;\n        return value;\n    }\n    readNullableArray(reader, compact = true, discardTrailingTaggedFields = true) {\n        let length;\n        if (compact) {\n            length = this.readUnsignedVarInt();\n            if (length === 0) {\n                return null;\n            }\n            length--;\n        }\n        else {\n            length = this.readInt32();\n            if (length === -1) {\n                return null;\n            }\n        }\n        const value = [];\n        for (let i = 0; i < length; i++) {\n            value.push(reader(this, i));\n            if (discardTrailingTaggedFields) {\n                this.readTaggedFields();\n            }\n        }\n        return value;\n    }\n    readNullableMap(reader, compact = true, discardTrailingTaggedFields = true) {\n        let length;\n        if (compact) {\n            length = this.readUnsignedVarInt();\n            if (length === 0) {\n                return null;\n            }\n            length--;\n        }\n        else {\n            length = this.readInt32();\n            if (length === -1) {\n                return null;\n            }\n        }\n        const map = new Map();\n        for (let i = 0; i < length; i++) {\n            const [key, value] = reader(this, i);\n            map.set(key, value);\n            if (discardTrailingTaggedFields) {\n                this.readTaggedFields();\n            }\n        }\n        return map;\n    }\n    readArray(reader, compact = true, discardTrailingTaggedFields = true) {\n        return this.readNullableArray(reader, compact, discardTrailingTaggedFields) || [];\n    }\n    readMap(reader, compact = true, discardTrailingTaggedFields = true) {\n        return this.readNullableMap(reader, compact, discardTrailingTaggedFields) ?? new Map();\n    }\n    readVarIntArray(reader) {\n        const length = this.readVarInt();\n        const value = [];\n        for (let i = 0; i < length; i++) {\n            value.push(reader(this, i));\n        }\n        return value;\n    }\n    readVarIntMap(reader) {\n        const length = this.readVarInt();\n        const map = new Map();\n        for (let i = 0; i < length; i++) {\n            const [key, value] = reader(this, i);\n            map.set(key, value);\n        }\n        return map;\n    }\n    readNullableStruct(reader) {\n        if (this.readInt8() === -1) {\n            return null;\n        }\n        return reader();\n    }\n    // TODO(ShogunPanda): Tagged fields are not supported yet\n    readTaggedFields() {\n        const length = this.readVarInt();\n        if (length > 0) {\n            this.skip(length);\n        }\n    }\n}\n", "import { createRequire } from 'node:module';\nimport zlib from 'node:zlib';\nimport { UnsupportedCompressionError } from \"../errors.js\";\nimport { DynamicBuffer } from \"./dynamic-buffer.js\";\nconst require = createRequire(\"file://\" + __filename);\nconst { zstdCompressSync, zstdDecompressSync, gzipSync, gunzipSync } = zlib;\nexport const CompressionAlgorithms = {\n    NONE: 'none',\n    GZIP: 'gzip',\n    SNAPPY: 'snappy',\n    LZ4: 'lz4',\n    ZSTD: 'zstd'\n};\nexport const allowedCompressionsAlgorithms = Object.values(CompressionAlgorithms);\nfunction ensureBuffer(data) {\n    return DynamicBuffer.isDynamicBuffer(data) ? data.slice() : data;\n}\nlet snappyCompressSync;\nlet snappyDecompressSync;\nlet lz4CompressFrameSync;\nlet lz4DecompressFrameSync;\nfunction loadSnappy() {\n    try {\n        const snappy = require('snappy');\n        snappyCompressSync = snappy.compressSync;\n        snappyDecompressSync = snappy.uncompressSync;\n        /* c8 ignore next 5 - In tests snappy is always available */\n    }\n    catch (e) {\n        throw new UnsupportedCompressionError('Cannot load snappy module, which is an optionalDependency. Please check your local installation.');\n    }\n}\nfunction loadLZ4() {\n    try {\n        const lz4 = require('lz4-napi');\n        lz4CompressFrameSync = lz4.compressFrameSync;\n        lz4DecompressFrameSync = lz4.decompressFrameSync;\n        /* c8 ignore next 5 - In tests lz4-napi is always available */\n    }\n    catch (e) {\n        throw new UnsupportedCompressionError('Cannot load lz4-napi module, which is an optionalDependency. Please check your local installation.');\n    }\n}\nexport const compressionsAlgorithms = {\n    /* c8 ignore next 8 - 'none' is actually never used but this is to please Typescript */\n    none: {\n        compressSync(data) {\n            return ensureBuffer(data);\n        },\n        decompressSync(data) {\n            return ensureBuffer(data);\n        },\n        bitmask: 0,\n        available: true\n    },\n    gzip: {\n        compressSync(data) {\n            return gzipSync(ensureBuffer(data));\n        },\n        decompressSync(data) {\n            return gunzipSync(ensureBuffer(data));\n        },\n        bitmask: 1,\n        available: true\n    },\n    snappy: {\n        compressSync(data) {\n            /* c8 ignore next 4 - In tests snappy is always available */\n            if (!snappyCompressSync) {\n                loadSnappy();\n            }\n            return snappyCompressSync(ensureBuffer(data));\n        },\n        decompressSync(data) {\n            /* c8 ignore next 4 - In tests snappy is always available */\n            if (!snappyDecompressSync) {\n                loadSnappy();\n            }\n            return snappyDecompressSync(ensureBuffer(data));\n        },\n        bitmask: 2,\n        available: true\n    },\n    lz4: {\n        compressSync(data) {\n            /* c8 ignore next 4 - In tests lz4-napi is always available */\n            if (!lz4CompressFrameSync) {\n                loadLZ4();\n            }\n            return lz4CompressFrameSync(ensureBuffer(data));\n        },\n        decompressSync(data) {\n            /* c8 ignore next 4 - In tests lz4-napi is always available */\n            if (!lz4DecompressFrameSync) {\n                loadLZ4();\n            }\n            return lz4DecompressFrameSync(ensureBuffer(data));\n        },\n        bitmask: 3,\n        available: true\n    },\n    zstd: {\n        /* c8 ignore next 7 - Tests are only run on Node.js versions that support zstd */\n        compressSync(data) {\n            if (!zstdCompressSync) {\n                throw new UnsupportedCompressionError('zstd is not supported in the current Node.js version');\n            }\n            return zstdCompressSync(ensureBuffer(data));\n        },\n        /* c8 ignore next 7 - Tests are only run on Node.js versions that support zstd */\n        decompressSync(data) {\n            if (!zstdCompressSync) {\n                throw new UnsupportedCompressionError('zstd is not supported in the current Node.js version');\n            }\n            return zstdDecompressSync(ensureBuffer(data));\n        },\n        bitmask: 4,\n        available: typeof zstdCompressSync === 'function'\n    }\n};\nexport const compressionsAlgorithmsByBitmask = Object.fromEntries(Object.values(compressionsAlgorithms).map(a => [a.bitmask, a]));\n", "// Based on the work from: https://github.com/tulios/kafkajs/blob/master/src/protocol/recordBatch/crc32C/crc32C.js\nimport { createRequire } from 'node:module';\nimport { DynamicBuffer } from \"./dynamic-buffer.js\";\n/* prettier-ignore */\nconst CRC = [\n    0x00000000, 0xf26b8303, 0xe13b70f7, 0x1350f3f4,\n    0xc79a971f, 0x35f1141c, 0x26a1e7e8, 0xd4ca64eb,\n    0x8ad958cf, 0x78b2dbcc, 0x6be22838, 0x9989ab3b,\n    0x4d43cfd0, 0xbf284cd3, 0xac78bf27, 0x5e133c24,\n    0x105ec76f, 0xe235446c, 0xf165b798, 0x030e349b,\n    0xd7c45070, 0x25afd373, 0x36ff2087, 0xc494a384,\n    0x9a879fa0, 0x68ec1ca3, 0x7bbcef57, 0x89d76c54,\n    0x5d1d08bf, 0xaf768bbc, 0xbc267848, 0x4e4dfb4b,\n    0x20bd8ede, 0xd2d60ddd, 0xc186fe29, 0x33ed7d2a,\n    0xe72719c1, 0x154c9ac2, 0x061c6936, 0xf477ea35,\n    0xaa64d611, 0x580f5512, 0x4b5fa6e6, 0xb93425e5,\n    0x6dfe410e, 0x9f95c20d, 0x8cc531f9, 0x7eaeb2fa,\n    0x30e349b1, 0xc288cab2, 0xd1d83946, 0x23b3ba45,\n    0xf779deae, 0x05125dad, 0x1642ae59, 0xe4292d5a,\n    0xba3a117e, 0x4851927d, 0x5b016189, 0xa96ae28a,\n    0x7da08661, 0x8fcb0562, 0x9c9bf696, 0x6ef07595,\n    0x417b1dbc, 0xb3109ebf, 0xa0406d4b, 0x522bee48,\n    0x86e18aa3, 0x748a09a0, 0x67dafa54, 0x95b17957,\n    0xcba24573, 0x39c9c670, 0x2a993584, 0xd8f2b687,\n    0x0c38d26c, 0xfe53516f, 0xed03a29b, 0x1f682198,\n    0x5125dad3, 0xa34e59d0, 0xb01eaa24, 0x42752927,\n    0x96bf4dcc, 0x64d4cecf, 0x77843d3b, 0x85efbe38,\n    0xdbfc821c, 0x2997011f, 0x3ac7f2eb, 0xc8ac71e8,\n    0x1c661503, 0xee0d9600, 0xfd5d65f4, 0x0f36e6f7,\n    0x61c69362, 0x93ad1061, 0x80fde395, 0x72966096,\n    0xa65c047d, 0x5437877e, 0x4767748a, 0xb50cf789,\n    0xeb1fcbad, 0x197448ae, 0x0a24bb5a, 0xf84f3859,\n    0x2c855cb2, 0xdeeedfb1, 0xcdbe2c45, 0x3fd5af46,\n    0x7198540d, 0x83f3d70e, 0x90a324fa, 0x62c8a7f9,\n    0xb602c312, 0x44694011, 0x5739b3e5, 0xa55230e6,\n    0xfb410cc2, 0x092a8fc1, 0x1a7a7c35, 0xe811ff36,\n    0x3cdb9bdd, 0xceb018de, 0xdde0eb2a, 0x2f8b6829,\n    0x82f63b78, 0x709db87b, 0x63cd4b8f, 0x91a6c88c,\n    0x456cac67, 0xb7072f64, 0xa457dc90, 0x563c5f93,\n    0x082f63b7, 0xfa44e0b4, 0xe9141340, 0x1b7f9043,\n    0xcfb5f4a8, 0x3dde77ab, 0x2e8e845f, 0xdce5075c,\n    0x92a8fc17, 0x60c37f14, 0x73938ce0, 0x81f80fe3,\n    0x55326b08, 0xa759e80b, 0xb4091bff, 0x466298fc,\n    0x1871a4d8, 0xea1a27db, 0xf94ad42f, 0x0b21572c,\n    0xdfeb33c7, 0x2d80b0c4, 0x3ed04330, 0xccbbc033,\n    0xa24bb5a6, 0x502036a5, 0x4370c551, 0xb11b4652,\n    0x65d122b9, 0x97baa1ba, 0x84ea524e, 0x7681d14d,\n    0x2892ed69, 0xdaf96e6a, 0xc9a99d9e, 0x3bc21e9d,\n    0xef087a76, 0x1d63f975, 0x0e330a81, 0xfc588982,\n    0xb21572c9, 0x407ef1ca, 0x532e023e, 0xa145813d,\n    0x758fe5d6, 0x87e466d5, 0x94b49521, 0x66df1622,\n    0x38cc2a06, 0xcaa7a905, 0xd9f75af1, 0x2b9cd9f2,\n    0xff56bd19, 0x0d3d3e1a, 0x1e6dcdee, 0xec064eed,\n    0xc38d26c4, 0x31e6a5c7, 0x22b65633, 0xd0ddd530,\n    0x0417b1db, 0xf67c32d8, 0xe52cc12c, 0x1747422f,\n    0x49547e0b, 0xbb3ffd08, 0xa86f0efc, 0x5a048dff,\n    0x8ecee914, 0x7ca56a17, 0x6ff599e3, 0x9d9e1ae0,\n    0xd3d3e1ab, 0x21b862a8, 0x32e8915c, 0xc083125f,\n    0x144976b4, 0xe622f5b7, 0xf5720643, 0x07198540,\n    0x590ab964, 0xab613a67, 0xb831c993, 0x4a5a4a90,\n    0x9e902e7b, 0x6cfbad78, 0x7fab5e8c, 0x8dc0dd8f,\n    0xe330a81a, 0x115b2b19, 0x020bd8ed, 0xf0605bee,\n    0x24aa3f05, 0xd6c1bc06, 0xc5914ff2, 0x37faccf1,\n    0x69e9f0d5, 0x9b8273d6, 0x88d28022, 0x7ab90321,\n    0xae7367ca, 0x5c18e4c9, 0x4f48173d, 0xbd23943e,\n    0xf36e6f75, 0x0105ec76, 0x12551f82, 0xe03e9c81,\n    0x34f4f86a, 0xc69f7b69, 0xd5cf889d, 0x27a40b9e,\n    0x79b737ba, 0x8bdcb4b9, 0x988c474d, 0x6ae7c44e,\n    0xbe2da0a5, 0x4c4623a6, 0x5f16d052, 0xad7d5351\n];\nexport function loadNativeCRC32C() {\n    try {\n        const require = createRequire(\"file://\" + __filename);\n        const { crc32c: nativeImplementation } = require('@node-rs/crc32');\n        return function nativeCRC32C(data) {\n            const bytes = DynamicBuffer.isDynamicBuffer(data)\n                ? data.buffer\n                : new Uint8Array(data);\n            return nativeImplementation(bytes);\n        };\n        /* c8 ignore next 3 - Hard to test */\n    }\n    catch (error) {\n        return null;\n    }\n}\nexport function jsCRC32C(data) {\n    const bytes = DynamicBuffer.isDynamicBuffer(data)\n        ? data.buffer\n        : new Uint8Array(data);\n    let crc = 0xffffffff;\n    for (let i = 0, len = bytes.length; i < len; ++i) {\n        crc = CRC[(crc ^ bytes[i]) & 0xff] ^ (crc >>> 8);\n    }\n    return (crc ^ 0xffffffff) >>> 0;\n}\n/* c8 ignore next - Hard to test */\nexport const crc32c = loadNativeCRC32C() ?? jsCRC32C;\n", "import { UnsupportedCompressionError } from \"../errors.js\";\nimport { compressionsAlgorithms, compressionsAlgorithmsByBitmask } from \"./compression.js\";\nimport { crc32c } from \"./crc32c.js\";\nimport { INT32_SIZE, INT64_SIZE } from \"./definitions.js\";\nimport { DynamicBuffer } from \"./dynamic-buffer.js\";\nimport { Reader } from \"./reader.js\";\nimport { Writer } from \"./writer.js\";\nconst CURRENT_RECORD_VERSION = 2;\nconst IS_TRANSACTIONAL = 0b10000; // Bit 4 set\nconst IS_COMPRESSED = 0b111; // Bits 0, 1 and/or 2 set\nconst BATCH_HEAD = INT64_SIZE + INT32_SIZE; // FirstOffset + Length\nexport const messageSchema = {\n    type: 'object',\n    properties: {\n        key: {\n            oneOf: [{ type: 'string' }, { buffer: true }]\n        },\n        value: {\n            oneOf: [{ type: 'string' }, { buffer: true }]\n        },\n        headers: {\n            // Note: we can't use oneOf here since a Map is also a 'object'. Thanks JS.\n            anyOf: [\n                {\n                    map: true\n                },\n                {\n                    type: 'object',\n                    additionalProperties: true\n                }\n            ]\n        },\n        topic: { type: 'string' },\n        partition: { type: 'integer' },\n        timestamp: { bigint: true }\n    },\n    required: ['value', 'topic'],\n    additionalProperties: true\n};\nexport function createRecord(message, offsetDelta, firstTimestamp) {\n    return Writer.create()\n        .appendInt8(0) // Attributes are unused for now\n        .appendVarInt64((message.timestamp ?? BigInt(Date.now())) - firstTimestamp)\n        .appendVarInt(offsetDelta)\n        .appendVarIntBytes(message.key)\n        .appendVarIntBytes(message.value)\n        .appendVarIntMap(message.headers, (w, [key, value]) => {\n        w.appendVarIntBytes(key).appendVarIntBytes(value);\n    })\n        .prependVarIntLength();\n}\nexport function readRecord(reader) {\n    return {\n        length: reader.readVarInt(),\n        attributes: reader.readInt8(),\n        timestampDelta: reader.readVarInt64(),\n        offsetDelta: reader.readVarInt(),\n        key: reader.readVarIntBytes(),\n        value: reader.readVarIntBytes(),\n        headers: reader.readVarIntArray(r => [r.readVarIntBytes(), r.readVarIntBytes()])\n    };\n}\nexport function createRecordsBatch(messages, options = {}) {\n    const now = BigInt(Date.now());\n    const firstTimestamp = messages[0].timestamp ?? now;\n    let maxTimestamp = firstTimestamp;\n    let buffer = new DynamicBuffer();\n    for (let i = 0; i < messages.length; i++) {\n        let ts = messages[i].timestamp ?? now;\n        /* c8 ignore next 3 - Hard to test */\n        if (typeof ts === 'number') {\n            ts = BigInt(ts);\n        }\n        messages[i].timestamp = ts;\n        if (ts > maxTimestamp)\n            maxTimestamp = ts;\n        const record = createRecord(messages[i], i, firstTimestamp);\n        buffer.appendFrom(record.dynamicBuffer);\n    }\n    let attributes = 0;\n    let firstSequence = 0;\n    if (options.sequences) {\n        const firstMessage = messages[0];\n        firstSequence = options.sequences.getWithDefault(`${firstMessage.topic}:${firstMessage.partition}`, 0);\n    }\n    // Set the transaction\n    if (options.transactionalId) {\n        attributes |= IS_TRANSACTIONAL;\n    }\n    // Set the compression, if any\n    if ((options.compression ?? 'none') !== 'none') {\n        const algorithm = compressionsAlgorithms[options.compression];\n        if (!algorithm) {\n            throw new UnsupportedCompressionError(`Unsupported compression algorithm ${options.compression}`);\n        }\n        attributes |= algorithm.bitmask;\n        const compressed = algorithm.compressSync(buffer.buffer);\n        buffer = new DynamicBuffer(compressed);\n    }\n    const writer = Writer.create()\n        // Phase 1: Prepare the message from Attributes (included) to the end\n        .appendInt16(attributes)\n        // LastOffsetDelta, FirstTimestamp and MaxTimestamp are extracted from the messages\n        .appendInt32(messages.length - 1)\n        .appendInt64(BigInt(firstTimestamp))\n        .appendInt64(BigInt(maxTimestamp))\n        .appendInt64(options.producerId ?? -1n)\n        .appendInt16(options.producerEpoch ?? 0)\n        .appendInt32(firstSequence)\n        .appendInt32(messages.length) // Number of records\n        .appendFrom(buffer);\n    // Phase 2: Prepend the PartitionLeaderEpoch, Magic and CRC, then the Length and firstOffset, in reverse order\n    return (writer\n        .appendUnsignedInt32(crc32c(writer.dynamicBuffer), false)\n        .appendInt8(CURRENT_RECORD_VERSION, false)\n        .appendInt32(options.partitionLeaderEpoch ?? 0, false)\n        .prependLength()\n        // FirstOffset is 0\n        .appendInt64(0n, false));\n}\n// TODO: Early bail out if there are not enough bytes to read all the records as it might be truncated\nexport function readRecordsBatch(reader) {\n    const initialPosition = reader.position;\n    const batch = {\n        firstOffset: reader.readInt64(),\n        length: reader.readInt32(),\n        partitionLeaderEpoch: reader.readInt32(),\n        magic: reader.readInt8(),\n        crc: reader.readUnsignedInt32(),\n        attributes: reader.readInt16(),\n        lastOffsetDelta: reader.readInt32(),\n        firstTimestamp: reader.readInt64(),\n        maxTimestamp: reader.readInt64(),\n        producerId: reader.readInt64(),\n        producerEpoch: reader.readInt16(),\n        firstSequence: reader.readInt32(),\n        records: []\n    };\n    const recordsLength = reader.readInt32();\n    const compression = batch.attributes & IS_COMPRESSED;\n    if (compression !== 0) {\n        const algorithm = compressionsAlgorithmsByBitmask[compression];\n        if (!algorithm) {\n            throw new UnsupportedCompressionError(`Unsupported compression algorithm with bitmask ${compression}`);\n        }\n        // The length of all headers immediately following Length up to the length of the Records array\n        const headersLength = reader.position - initialPosition - INT32_SIZE - INT64_SIZE;\n        const compressedDataLen = batch.length - headersLength;\n        const buffer = algorithm.decompressSync(reader.buffer.slice(reader.position, reader.position + compressedDataLen));\n        // Move the original reader to the end of the compressed data\n        reader.skip(compressedDataLen);\n        // Replace the reader with the decompressed buffer\n        reader = Reader.from(buffer);\n    }\n    for (let i = 0; i < recordsLength; i++) {\n        batch.records.push(readRecord(reader));\n    }\n    return batch;\n}\nexport function readRecordsBatches(reader) {\n    const batches = [];\n    while (reader.remaining >= BATCH_HEAD &&\n        reader.remaining - BATCH_HEAD >= reader.peekInt32(reader.position + INT64_SIZE)) {\n        batches.push(readRecordsBatch(reader));\n    }\n    return batches;\n}\n", "import { ResponseError } from \"../../errors.js\";\nimport { Reader } from \"../../protocol/reader.js\";\nimport { readRecordsBatches } from \"../../protocol/records.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  Fetch Request (Version: 16) => max_wait_ms min_bytes max_bytes isolation_level session_id session_epoch [topics] [forgotten_topics_data] rack_id TAG_BUFFER\n  max_wait_ms => INT32\n  min_bytes => INT32\n  max_bytes => INT32\n  isolation_level => INT8\n  session_id => INT32\n  session_epoch => INT32\n  topics => topic_id [partitions] TAG_BUFFER\n    topic_id => UUID\n    partitions => partition current_leader_epoch fetch_offset last_fetched_epoch log_start_offset partition_max_bytes TAG_BUFFER\n      partition => INT32\n      current_leader_epoch => INT32\n      fetch_offset => INT64\n      last_fetched_epoch => INT32\n      log_start_offset => INT64\n      partition_max_bytes => INT32\n  forgotten_topics_data => topic_id [partitions] TAG_BUFFER\n    topic_id => UUID\n    partitions => INT32\n  rack_id => COMPACT_STRING\n*/\nexport function createRequest(maxWaitMs, minBytes, maxBytes, isolationLevel, sessionId, sessionEpoch, topics, forgottenTopicsData, rackId) {\n    return Writer.create()\n        .appendInt32(maxWaitMs)\n        .appendInt32(minBytes)\n        .appendInt32(maxBytes)\n        .appendInt8(isolationLevel)\n        .appendInt32(sessionId)\n        .appendInt32(sessionEpoch)\n        .appendArray(topics, (w, t) => {\n        w.appendUUID(t.topicId).appendArray(t.partitions, (w, p) => {\n            w.appendInt32(p.partition)\n                .appendInt32(p.currentLeaderEpoch)\n                .appendInt64(p.fetchOffset)\n                .appendInt32(p.lastFetchedEpoch)\n                .appendInt64(-1n)\n                .appendInt32(p.partitionMaxBytes);\n        });\n    })\n        .appendArray(forgottenTopicsData, (w, t) => {\n        w.appendUUID(t.topic).appendArray(t.partitions, (w, p) => {\n            w.appendInt32(p);\n        }, true, false);\n    })\n        .appendString(rackId)\n        .appendTaggedFields();\n}\n/*\n  Fetch Response (Version: 16) => throttle_time_ms error_code session_id [responses] TAG_BUFFER\n    throttle_time_ms => INT32\n    error_code => INT16\n    session_id => INT32\n    responses => topic_id [partitions] TAG_BUFFER\n      topic_id => UUID\n      partitions => partition_index error_code high_watermark last_stable_offset log_start_offset [aborted_transactions] preferred_read_replica records TAG_BUFFER\n        partition_index => INT32\n        error_code => INT16\n        high_watermark => INT64\n        last_stable_offset => INT64\n        log_start_offset => INT64\n        aborted_transactions => producer_id first_offset TAG_BUFFER\n          producer_id => INT64\n          first_offset => INT64\n        preferred_read_replica => INT32\n        records => COMPACT_RECORDS\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const throttleTimeMs = reader.readInt32();\n    const errorCode = reader.readInt16();\n    if (errorCode !== 0) {\n        errors.push(['', errorCode]);\n    }\n    const response = {\n        throttleTimeMs,\n        errorCode,\n        sessionId: reader.readInt32(),\n        responses: reader.readArray((r, i) => {\n            return {\n                topicId: r.readUUID(),\n                partitions: r.readArray((r, j) => {\n                    const partition = {\n                        partitionIndex: r.readInt32(),\n                        errorCode: r.readInt16(),\n                        highWatermark: r.readInt64(),\n                        lastStableOffset: r.readInt64(),\n                        logStartOffset: r.readInt64(),\n                        abortedTransactions: r.readArray(r => {\n                            return {\n                                producerId: r.readInt64(),\n                                firstOffset: r.readInt64()\n                            };\n                        }),\n                        preferredReadReplica: r.readInt32()\n                    };\n                    if (partition.errorCode !== 0) {\n                        errors.push([`/responses/${i}/partitions/${j}`, partition.errorCode]);\n                    }\n                    // We need to reduce the size by one to follow the COMPACT_RECORDS specification.\n                    const recordsSize = r.readUnsignedVarInt() - 1;\n                    if (recordsSize > 0) {\n                        partition.records = readRecordsBatches(Reader.from(r.buffer.subarray(r.position, r.position + recordsSize)));\n                        r.skip(recordsSize);\n                    }\n                    return partition;\n                })\n            };\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(1, 16, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Reader } from \"../../protocol/reader.js\";\nimport { readRecordsBatches } from \"../../protocol/records.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  Fetch Request (Version: 17) => max_wait_ms min_bytes max_bytes isolation_level session_id session_epoch [topics] [forgotten_topics_data] rack_id TAG_BUFFER\n  max_wait_ms => INT32\n  min_bytes => INT32\n  max_bytes => INT32\n  isolation_level => INT8\n  session_id => INT32\n  session_epoch => INT32\n  topics => topic_id [partitions] TAG_BUFFER\n    topic_id => UUID\n    partitions => partition current_leader_epoch fetch_offset last_fetched_epoch log_start_offset partition_max_bytes TAG_BUFFER\n      partition => INT32\n      current_leader_epoch => INT32\n      fetch_offset => INT64\n      last_fetched_epoch => INT32\n      log_start_offset => INT64\n      partition_max_bytes => INT32\n  forgotten_topics_data => topic_id [partitions] TAG_BUFFER\n    topic_id => UUID\n    partitions => INT32\n  rack_id => COMPACT_STRING\n*/\nexport function createRequest(maxWaitMs, minBytes, maxBytes, isolationLevel, sessionId, sessionEpoch, topics, forgottenTopicsData, rackId) {\n    return Writer.create()\n        .appendInt32(maxWaitMs)\n        .appendInt32(minBytes)\n        .appendInt32(maxBytes)\n        .appendInt8(isolationLevel)\n        .appendInt32(sessionId)\n        .appendInt32(sessionEpoch)\n        .appendArray(topics, (w, t) => {\n        w.appendUUID(t.topicId).appendArray(t.partitions, (w, p) => {\n            w.appendInt32(p.partition)\n                .appendInt32(p.currentLeaderEpoch)\n                .appendInt64(p.fetchOffset)\n                .appendInt32(p.lastFetchedEpoch)\n                .appendInt64(-1n)\n                .appendInt32(p.partitionMaxBytes);\n        });\n    })\n        .appendArray(forgottenTopicsData, (w, t) => {\n        w.appendUUID(t.topic).appendArray(t.partitions, (w, p) => {\n            w.appendInt32(p);\n        }, true, false);\n    })\n        .appendString(rackId)\n        .appendTaggedFields();\n}\n/*\n  Fetch Response (Version: 17) => throttle_time_ms error_code session_id [responses] TAG_BUFFER\n    throttle_time_ms => INT32\n    error_code => INT16\n    session_id => INT32\n    responses => topic_id [partitions] TAG_BUFFER\n      topic_id => UUID\n      partitions => partition_index error_code high_watermark last_stable_offset log_start_offset [aborted_transactions] preferred_read_replica records TAG_BUFFER\n        partition_index => INT32\n        error_code => INT16\n        high_watermark => INT64\n        last_stable_offset => INT64\n        log_start_offset => INT64\n        aborted_transactions => producer_id first_offset TAG_BUFFER\n          producer_id => INT64\n          first_offset => INT64\n        preferred_read_replica => INT32\n        records => COMPACT_RECORDS\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const throttleTimeMs = reader.readInt32();\n    const errorCode = reader.readInt16();\n    if (errorCode !== 0) {\n        errors.push(['', errorCode]);\n    }\n    const response = {\n        throttleTimeMs,\n        errorCode,\n        sessionId: reader.readInt32(),\n        responses: reader.readArray((r, i) => {\n            return {\n                topicId: r.readUUID(),\n                partitions: r.readArray((r, j) => {\n                    const partition = {\n                        partitionIndex: r.readInt32(),\n                        errorCode: r.readInt16(),\n                        highWatermark: r.readInt64(),\n                        lastStableOffset: r.readInt64(),\n                        logStartOffset: r.readInt64(),\n                        abortedTransactions: r.readArray(r => {\n                            return {\n                                producerId: r.readInt64(),\n                                firstOffset: r.readInt64()\n                            };\n                        }),\n                        preferredReadReplica: r.readInt32()\n                    };\n                    if (partition.errorCode !== 0) {\n                        errors.push([`/responses/${i}/partitions/${j}`, partition.errorCode]);\n                    }\n                    // We need to reduce the size by one to follow the COMPACT_RECORDS specification.\n                    const recordsSize = r.readUnsignedVarInt() - 1;\n                    if (recordsSize > 0) {\n                        partition.records = readRecordsBatches(Reader.from(r.buffer.subarray(r.position, r.position + recordsSize)));\n                        r.skip(recordsSize);\n                    }\n                    return partition;\n                })\n            };\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(1, 17, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  Heartbeat Request (Version: 4) => group_id generation_id member_id group_instance_id TAG_BUFFER\n    group_id => COMPACT_STRING\n    generation_id => INT32\n    member_id => COMPACT_STRING\n    group_instance_id => COMPACT_NULLABLE_STRING\n*/\nexport function createRequest(groupId, generationId, memberId, groupInstanceId) {\n    return Writer.create()\n        .appendString(groupId)\n        .appendInt32(generationId)\n        .appendString(memberId)\n        .appendString(groupInstanceId)\n        .appendTaggedFields();\n}\n/*\n  Heartbeat Response (Version: 4) => throttle_time_ms error_code TAG_BUFFER\n    throttle_time_ms => INT32\n    error_code => INT16\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        errorCode: reader.readInt16()\n    };\n    if (response.errorCode !== 0) {\n        throw new ResponseError(apiKey, apiVersion, { '': response.errorCode }, response);\n    }\n    return response;\n}\nexport const api = createAPI(12, 4, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { EMPTY_BUFFER } from \"../../protocol/definitions.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  JoinGroup Request (Version: 9) => group_id session_timeout_ms rebalance_timeout_ms member_id group_instance_id protocol_type [protocols] reason TAG_BUFFER\n    group_id => COMPACT_STRING\n    session_timeout_ms => INT32\n    rebalance_timeout_ms => INT32\n    member_id => COMPACT_STRING\n    group_instance_id => COMPACT_NULLABLE_STRING\n    protocol_type => COMPACT_STRING\n    protocols => name metadata TAG_BUFFER\n      name => COMPACT_STRING\n      metadata => COMPACT_BYTES\n    reason => COMPACT_NULLABLE_STRING\n*/\nexport function createRequest(groupId, sessionTimeoutMs, rebalanceTimeoutMs, memberId, groupInstanceId, protocolType, protocols, reason) {\n    return Writer.create()\n        .appendString(groupId)\n        .appendInt32(sessionTimeoutMs)\n        .appendInt32(rebalanceTimeoutMs)\n        .appendString(memberId)\n        .appendString(groupInstanceId)\n        .appendString(protocolType)\n        .appendArray(protocols, (w, protocol) => {\n        w.appendString(protocol.name).appendBytes(protocol.metadata ? protocol.metadata : EMPTY_BUFFER);\n    })\n        .appendString(reason)\n        .appendTaggedFields();\n}\n/*\nJoinGroup Response (Version: 9) => throttle_time_ms error_code generation_id protocol_type protocol_name leader skip_assignment member_id [members] TAG_BUFFER\n  throttle_time_ms => INT32\n  error_code => INT16\n  generation_id => INT32\n  protocol_type => COMPACT_NULLABLE_STRING\n  protocol_name => COMPACT_NULLABLE_STRING\n  leader => COMPACT_STRING\n  skip_assignment => BOOLEAN\n  member_id => COMPACT_STRING\n  members => member_id group_instance_id metadata TAG_BUFFER\n    member_id => COMPACT_STRING\n    group_instance_id => COMPACT_NULLABLE_STRING\n    metadata => COMPACT_BYTES\n\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        errorCode: reader.readInt16(),\n        generationId: reader.readInt32(),\n        protocolType: reader.readNullableString(),\n        protocolName: reader.readNullableString(),\n        leader: reader.readString(),\n        skipAssignment: reader.readBoolean(),\n        memberId: reader.readNullableString(),\n        members: reader.readArray(r => {\n            return {\n                memberId: r.readString(),\n                groupInstanceId: r.readNullableString(),\n                metadata: r.readNullableBytes()\n            };\n        })\n    };\n    if (response.errorCode !== 0) {\n        throw new ResponseError(apiKey, apiVersion, { '': response.errorCode }, response);\n    }\n    return response;\n}\nexport const api = createAPI(11, 9, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  LeaveGroup Request (Version: 5) => group_id [members] TAG_BUFFER\n    group_id => COMPACT_STRING\n    members => member_id group_instance_id reason TAG_BUFFER\n      member_id => COMPACT_STRING\n      group_instance_id => COMPACT_NULLABLE_STRING\n      reason => COMPACT_NULLABLE_STRING\n*/\nexport function createRequest(groupId, members) {\n    return Writer.create()\n        .appendString(groupId)\n        .appendArray(members, (w, m) => {\n        w.appendString(m.memberId).appendString(m.groupInstanceId).appendString(m.reason);\n    })\n        .appendTaggedFields();\n}\n/*\n  LeaveGroup Response (Version: 5) => throttle_time_ms error_code [members] TAG_BUFFER\n    throttle_time_ms => INT32\n    error_code => INT16\n    members => member_id group_instance_id error_code TAG_BUFFER\n      member_id => COMPACT_STRING\n      group_instance_id => COMPACT_NULLABLE_STRING\n      error_code => INT16\n\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const throttleTimeMs = reader.readInt32();\n    const errorCode = reader.readInt16();\n    if (errorCode !== 0) {\n        errors.push(['', errorCode]);\n    }\n    const response = {\n        throttleTimeMs,\n        errorCode,\n        members: reader.readArray((r, i) => {\n            const member = {\n                memberId: r.readNullableString(),\n                groupInstanceId: r.readNullableString(),\n                errorCode: r.readInt16()\n            };\n            if (member.errorCode !== 0) {\n                errors.push([`/members/${i}`, member.errorCode]);\n            }\n            return member;\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(13, 5, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  ListOffsets Request (Version: 8) => replica_id isolation_level [topics] TAG_BUFFER\n    replica_id => INT32\n    isolation_level => INT8\n    topics => name [partitions] TAG_BUFFER\n      name => COMPACT_STRING\n      partitions => partition_index current_leader_epoch timestamp TAG_BUFFER\n        partition_index => INT32\n        current_leader_epoch => INT32\n        timestamp => INT64\n*/\nexport function createRequest(replica, isolationLevel, topics) {\n    return Writer.create()\n        .appendInt32(replica)\n        .appendInt8(isolationLevel)\n        .appendArray(topics, (w, topic) => {\n        w.appendString(topic.name).appendArray(topic.partitions, (w, partition) => {\n            w.appendInt32(partition.partitionIndex)\n                .appendInt32(partition.currentLeaderEpoch)\n                .appendInt64(partition.timestamp);\n        });\n    })\n        .appendTaggedFields();\n}\n/*\n  ListOffsets Response (Version: 8) => throttle_time_ms [topics] TAG_BUFFER\n    throttle_time_ms => INT32\n    topics => name [partitions] TAG_BUFFER\n      name => COMPACT_STRING\n      partitions => partition_index error_code timestamp offset leader_epoch TAG_BUFFER\n        partition_index => INT32\n        error_code => INT16\n        timestamp => INT64\n        offset => INT64\n        leader_epoch => INT32\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        topics: reader.readArray((r, i) => {\n            return {\n                name: r.readString(),\n                partitions: r.readArray((r, j) => {\n                    const partition = {\n                        partitionIndex: r.readInt32(),\n                        errorCode: r.readInt16(),\n                        timestamp: r.readInt64(),\n                        offset: r.readInt64(),\n                        leaderEpoch: r.readInt32()\n                    };\n                    if (partition.errorCode !== 0) {\n                        errors.push([`/topics/${i}/partitions/${j}`, partition.errorCode]);\n                    }\n                    return partition;\n                })\n            };\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(2, 8, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  ListOffsets Request (Version: 9) => replica_id isolation_level [topics] TAG_BUFFER\n    replica_id => INT32\n    isolation_level => INT8\n    topics => name [partitions] TAG_BUFFER\n      name => COMPACT_STRING\n      partitions => partition_index current_leader_epoch timestamp TAG_BUFFER\n        partition_index => INT32\n        current_leader_epoch => INT32\n        timestamp => INT64\n*/\nexport function createRequest(replica, isolationLevel, topics) {\n    return Writer.create()\n        .appendInt32(replica)\n        .appendInt8(isolationLevel)\n        .appendArray(topics, (w, topic) => {\n        w.appendString(topic.name).appendArray(topic.partitions, (w, partition) => {\n            w.appendInt32(partition.partitionIndex)\n                .appendInt32(partition.currentLeaderEpoch)\n                .appendInt64(partition.timestamp);\n        });\n    })\n        .appendTaggedFields();\n}\n/*\n  ListOffsets Response (Version: 9) => throttle_time_ms [topics] TAG_BUFFER\n    throttle_time_ms => INT32\n    topics => name [partitions] TAG_BUFFER\n      name => COMPACT_STRING\n      partitions => partition_index error_code timestamp offset leader_epoch TAG_BUFFER\n        partition_index => INT32\n        error_code => INT16\n        timestamp => INT64\n        offset => INT64\n        leader_epoch => INT32\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        topics: reader.readArray((r, i) => {\n            return {\n                name: r.readString(),\n                partitions: r.readArray((r, j) => {\n                    const partition = {\n                        partitionIndex: r.readInt32(),\n                        errorCode: r.readInt16(),\n                        timestamp: r.readInt64(),\n                        offset: r.readInt64(),\n                        leaderEpoch: r.readInt32()\n                    };\n                    if (partition.errorCode !== 0) {\n                        errors.push([`/topics/${i}/partitions/${j}`, partition.errorCode]);\n                    }\n                    return partition;\n                })\n            };\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(2, 9, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  OffsetCommit Request (Version: 8) => group_id generation_id_or_member_epoch member_id group_instance_id [topics] TAG_BUFFER\n    group_id => COMPACT_STRING\n    generation_id_or_member_epoch => INT32\n    member_id => COMPACT_STRING\n    group_instance_id => COMPACT_NULLABLE_STRING\n    topics => name [partitions] TAG_BUFFER\n      name => COMPACT_STRING\n      partitions => partition_index committed_offset committed_leader_epoch committed_metadata TAG_BUFFER\n        partition_index => INT32\n        committed_offset => INT64\n        committed_leader_epoch => INT32\n        committed_metadata => COMPACT_NULLABLE_STRING\n*/\nexport function createRequest(groupId, generationIdOrMemberEpoch, memberId, groupInstanceId, topics) {\n    return Writer.create()\n        .appendString(groupId)\n        .appendInt32(generationIdOrMemberEpoch)\n        .appendString(memberId)\n        .appendString(groupInstanceId)\n        .appendArray(topics, (w, t) => {\n        w.appendString(t.name).appendArray(t.partitions, (w, p) => {\n            w.appendInt32(p.partitionIndex)\n                .appendInt64(p.committedOffset)\n                .appendInt32(p.committedLeaderEpoch)\n                .appendString(p.committedMetadata);\n        });\n    })\n        .appendTaggedFields();\n}\n/*\n  OffsetCommit Response (Version: 8) => throttle_time_ms [topics] TAG_BUFFER\n    throttle_time_ms => INT32\n    topics => name [partitions] TAG_BUFFER\n      name => COMPACT_STRING\n      partitions => partition_index error_code TAG_BUFFER\n        partition_index => INT32\n        error_code => INT16\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        topics: reader.readArray((r, i) => {\n            return {\n                name: r.readString(),\n                partitions: r.readArray((r, j) => {\n                    const partition = {\n                        partitionIndex: r.readInt32(),\n                        errorCode: r.readInt16()\n                    };\n                    if (partition.errorCode !== 0) {\n                        errors.push([`/topics/${i}/partitions/${j}`, partition.errorCode]);\n                    }\n                    return partition;\n                })\n            };\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(8, 8, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  OffsetCommit Request (Version: 9) => group_id generation_id_or_member_epoch member_id group_instance_id [topics] TAG_BUFFER\n    group_id => COMPACT_STRING\n    generation_id_or_member_epoch => INT32\n    member_id => COMPACT_STRING\n    group_instance_id => COMPACT_NULLABLE_STRING\n    topics => name [partitions] TAG_BUFFER\n      name => COMPACT_STRING\n      partitions => partition_index committed_offset committed_leader_epoch committed_metadata TAG_BUFFER\n        partition_index => INT32\n        committed_offset => INT64\n        committed_leader_epoch => INT32\n        committed_metadata => COMPACT_NULLABLE_STRING\n*/\nexport function createRequest(groupId, generationIdOrMemberEpoch, memberId, groupInstanceId, topics) {\n    return Writer.create()\n        .appendString(groupId)\n        .appendInt32(generationIdOrMemberEpoch)\n        .appendString(memberId)\n        .appendString(groupInstanceId)\n        .appendArray(topics, (w, t) => {\n        w.appendString(t.name).appendArray(t.partitions, (w, p) => {\n            w.appendInt32(p.partitionIndex)\n                .appendInt64(p.committedOffset)\n                .appendInt32(p.committedLeaderEpoch)\n                .appendString(p.committedMetadata);\n        });\n    })\n        .appendTaggedFields();\n}\n/*\n  OffsetCommit Response (Version: 9) => throttle_time_ms [topics] TAG_BUFFER\n    throttle_time_ms => INT32\n    topics => name [partitions] TAG_BUFFER\n      name => COMPACT_STRING\n      partitions => partition_index error_code TAG_BUFFER\n        partition_index => INT32\n        error_code => INT16\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        topics: reader.readArray((r, i) => {\n            return {\n                name: r.readString(),\n                partitions: r.readArray((r, j) => {\n                    const partition = {\n                        partitionIndex: r.readInt32(),\n                        errorCode: r.readInt16()\n                    };\n                    if (partition.errorCode !== 0) {\n                        errors.push([`/topics/${i}/partitions/${j}`, partition.errorCode]);\n                    }\n                    return partition;\n                })\n            };\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(8, 9, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  OffsetFetch Request (Version: 8) => [groups] require_stable TAG_BUFFER\n    groups => group_id member_id member_epoch [topics] TAG_BUFFER\n      group_id => COMPACT_STRING\n      topics => name [partition_indexes] TAG_BUFFER\n        name => COMPACT_STRING\n        partition_indexes => INT32\n    require_stable => BOOLEAN\n\n  Note that OffsetFetchRequestGroup contains a memberId and memberEpoch fields, which is not used in version 8.\n*/\nexport function createRequest(groups, requireStable) {\n    return Writer.create()\n        .appendArray(groups, (w, g) => {\n        w.appendString(g.groupId).appendArray(g.topics, (w, t) => {\n            w.appendString(t.name).appendArray(t.partitionIndexes, (w, i) => w.appendInt32(i), true, false);\n        });\n    })\n        .appendBoolean(requireStable)\n        .appendTaggedFields();\n}\n/*\n  OffsetFetch Response (Version: 8) => throttle_time_ms [groups] TAG_BUFFER\n    throttle_time_ms => INT32\n    groups => group_id [topics] error_code TAG_BUFFER\n      group_id => COMPACT_STRING\n      topics => name [partitions] TAG_BUFFER\n        name => COMPACT_STRING\n        partitions => partition_index committed_offset committed_leader_epoch metadata error_code TAG_BUFFER\n          partition_index => INT32\n          committed_offset => INT64\n          committed_leader_epoch => INT32\n          metadata => COMPACT_NULLABLE_STRING\n          error_code => INT16\n      error_code => INT16\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        groups: reader.readArray((r, i) => {\n            const group = {\n                groupId: r.readString(),\n                topics: r.readArray((r, j) => {\n                    return {\n                        name: r.readString(),\n                        partitions: r.readArray((r, k) => {\n                            const partition = {\n                                partitionIndex: r.readInt32(),\n                                committedOffset: r.readInt64(),\n                                committedLeaderEpoch: r.readInt32(),\n                                metadata: r.readNullableString(),\n                                errorCode: r.readInt16()\n                            };\n                            if (partition.errorCode !== 0) {\n                                errors.push([`/groups/${i}/topics/${j}/partitions/${k}`, partition.errorCode]);\n                            }\n                            return partition;\n                        })\n                    };\n                }),\n                errorCode: r.readInt16()\n            };\n            if (group.errorCode !== 0) {\n                errors.push([`/groups/${i}`, group.errorCode]);\n            }\n            return group;\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(9, 8, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  OffsetFetch Request (Version: 9) => [groups] require_stable TAG_BUFFER\n    groups => group_id member_id member_epoch [topics] TAG_BUFFER\n      group_id => COMPACT_STRING\n      member_id => COMPACT_NULLABLE_STRING\n      member_epoch => INT32\n      topics => name [partition_indexes] TAG_BUFFER\n        name => COMPACT_STRING\n        partition_indexes => INT32\n    require_stable => BOOLEAN\n*/\nexport function createRequest(groups, requireStable) {\n    return Writer.create()\n        .appendArray(groups, (w, g) => {\n        w.appendString(g.groupId)\n            .appendString(g.memberId)\n            .appendInt32(g.memberEpoch)\n            .appendArray(g.topics, (w, t) => {\n            w.appendString(t.name).appendArray(t.partitionIndexes, (w, i) => w.appendInt32(i), true, false);\n        });\n    })\n        .appendBoolean(requireStable)\n        .appendTaggedFields();\n}\n/*\n  OffsetFetch Response (Version: 9) => throttle_time_ms [groups] TAG_BUFFER\n    throttle_time_ms => INT32\n    groups => group_id [topics] error_code TAG_BUFFER\n      group_id => COMPACT_STRING\n      topics => name [partitions] TAG_BUFFER\n        name => COMPACT_STRING\n        partitions => partition_index committed_offset committed_leader_epoch metadata error_code TAG_BUFFER\n          partition_index => INT32\n          committed_offset => INT64\n          committed_leader_epoch => INT32\n          metadata => COMPACT_NULLABLE_STRING\n          error_code => INT16\n      error_code => INT16\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        groups: reader.readArray((r, i) => {\n            const group = {\n                groupId: r.readString(),\n                topics: r.readArray((r, j) => {\n                    return {\n                        name: r.readString(),\n                        partitions: r.readArray((r, k) => {\n                            const partition = {\n                                partitionIndex: r.readInt32(),\n                                committedOffset: r.readInt64(),\n                                committedLeaderEpoch: r.readInt32(),\n                                metadata: r.readNullableString(),\n                                errorCode: r.readInt16()\n                            };\n                            if (partition.errorCode !== 0) {\n                                errors.push([`/groups/${i}/topics/${j}/partitions/${k}`, partition.errorCode]);\n                            }\n                            return partition;\n                        })\n                    };\n                }),\n                errorCode: r.readInt16()\n            };\n            if (group.errorCode !== 0) {\n                errors.push([`/groups/${i}`, group.errorCode]);\n            }\n            return group;\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(9, 9, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  SyncGroup Request (Version: 5) => group_id generation_id member_id group_instance_id protocol_type protocol_name [assignments] TAG_BUFFER\n    group_id => COMPACT_STRING\n    generation_id => INT32\n    member_id => COMPACT_STRING\n    group_instance_id => COMPACT_NULLABLE_STRING\n    protocol_type => COMPACT_NULLABLE_STRING\n    protocol_name => COMPACT_NULLABLE_STRING\n    assignments => member_id assignment TAG_BUFFER\n      member_id => COMPACT_STRING\n      assignment => COMPACT_BYTES\n\n*/\nexport function createRequest(groupId, generationId, memberId, groupInstanceId, protocolType, protocolName, assignments) {\n    return Writer.create()\n        .appendString(groupId)\n        .appendInt32(generationId)\n        .appendString(memberId)\n        .appendString(groupInstanceId)\n        .appendString(protocolType)\n        .appendString(protocolName)\n        .appendArray(assignments, (w, a) => w.appendString(a.memberId).appendBytes(a.assignment))\n        .appendTaggedFields();\n}\n/*\n  SyncGroup Response (Version: 5) => throttle_time_ms error_code protocol_type protocol_name assignment TAG_BUFFER\n    throttle_time_ms => INT32\n    error_code => INT16\n    protocol_type => COMPACT_NULLABLE_STRING\n    protocol_name => COMPACT_NULLABLE_STRING\n    assignment => COMPACT_BYTES\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        errorCode: reader.readInt16(),\n        protocolType: reader.readNullableString(),\n        protocolName: reader.readNullableString(),\n        assignment: reader.readBytes()\n    };\n    if (response.errorCode !== 0) {\n        throw new ResponseError(apiKey, apiVersion, { '': response.errorCode }, response);\n    }\n    return response;\n}\nexport const api = createAPI(14, 5, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { protocolAPIsById } from \"../../protocol/apis.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  ApiVersions Request (Version: 3) => client_software_name client_software_version TAG_BUFFER\n    client_software_name => COMPACT_STRING\n    client_software_version => COMPACT_STRING\n*/\nexport function createRequest(clientSoftwareName, clientSoftwareVersion) {\n    return Writer.create().appendString(clientSoftwareName).appendString(clientSoftwareVersion).appendTaggedFields();\n}\n/*\n  ApiVersions Response (Version: 3) => error_code [api_keys] throttle_time_ms TAG_BUFFER\n    error_code => INT16\n    api_keys => api_key min_version max_version TAG_BUFFER\n      api_key => INT16\n      min_version => INT16\n      max_version => INT16\n    throttle_time_ms => INT32\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const response = {\n        errorCode: reader.readInt16(),\n        apiKeys: reader.readArray(r => {\n            const apiKey = r.readInt16();\n            return {\n                apiKey,\n                name: protocolAPIsById[apiKey],\n                minVersion: r.readInt16(),\n                maxVersion: r.readInt16()\n            };\n        }),\n        throttleTimeMs: reader.readInt32()\n    };\n    if (response.errorCode !== 0) {\n        throw new ResponseError(apiKey, apiVersion, { '': response.errorCode }, response);\n    }\n    return response;\n}\nexport const api = createAPI(18, 3, createRequest, parseResponse, true, false);\n", "import { ResponseError } from \"../../errors.js\";\nimport { protocolAPIsById } from \"../../protocol/apis.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  ApiVersions Request (Version: 4) => client_software_name client_software_version TAG_BUFFER\n    client_software_name => COMPACT_STRING\n    client_software_version => COMPACT_STRING\n*/\nexport function createRequest(clientSoftwareName, clientSoftwareVersion) {\n    return Writer.create().appendString(clientSoftwareName).appendString(clientSoftwareVersion).appendTaggedFields();\n}\n/*\n  ApiVersions Response (Version: 4) => error_code [api_keys] throttle_time_ms TAG_BUFFER\n    error_code => INT16\n    api_keys => api_key min_version max_version TAG_BUFFER\n      api_key => INT16\n      min_version => INT16\n      max_version => INT16\n    throttle_time_ms => INT32\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const response = {\n        errorCode: reader.readInt16(),\n        apiKeys: reader.readArray(r => {\n            const apiKey = r.readInt16();\n            return {\n                apiKey,\n                name: protocolAPIsById[apiKey],\n                minVersion: r.readInt16(),\n                maxVersion: r.readInt16()\n            };\n        }),\n        throttleTimeMs: reader.readInt32()\n    };\n    if (response.errorCode !== 0) {\n        throw new ResponseError(apiKey, apiVersion, { '': response.errorCode }, response);\n    }\n    return response;\n}\nexport const api = createAPI(18, 4, createRequest, parseResponse, true, false);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  FindCoordinator Request (Version: 4) => key_type [coordinator_keys] TAG_BUFFER\n    key_type => INT8\n    coordinator_keys => COMPACT_STRING\n*/\nexport function createRequest(keyType, coordinatorKeys) {\n    return Writer.create()\n        .appendInt8(keyType)\n        .appendArray(coordinatorKeys, (w, k) => w.appendString(k), true, false)\n        .appendTaggedFields();\n}\n/*\n  FindCoordinator Response (Version: 4) => throttle_time_ms [coordinators] TAG_BUFFER\n    throttle_time_ms => INT32\n    coordinators => key node_id host port error_code error_message TAG_BUFFER\n      key => COMPACT_STRING\n      node_id => INT32\n      host => COMPACT_STRING\n      port => INT32\n      error_code => INT16\n      error_message => COMPACT_NULLABLE_STRING\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        coordinators: reader.readArray((r, i) => {\n            const coordinator = {\n                key: r.readString(),\n                nodeId: r.readInt32(),\n                host: r.readString(),\n                port: r.readInt32(),\n                errorCode: r.readInt16(),\n                errorMessage: r.readNullableString()\n            };\n            if (coordinator.errorCode !== 0) {\n                errors.push([`/coordinators/${i}`, coordinator.errorCode]);\n            }\n            return coordinator;\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(10, 4, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  FindCoordinator Request (Version: 5) => key_type [coordinator_keys] TAG_BUFFER\n    key_type => INT8\n    coordinator_keys => COMPACT_STRING\n*/\nexport function createRequest(keyType, coordinatorKeys) {\n    return Writer.create()\n        .appendInt8(keyType)\n        .appendArray(coordinatorKeys, (w, k) => w.appendString(k), true, false)\n        .appendTaggedFields();\n}\n/*\n  FindCoordinator Response (Version: 5) => throttle_time_ms [coordinators] TAG_BUFFER\n    throttle_time_ms => INT32\n    coordinators => key node_id host port error_code error_message TAG_BUFFER\n      key => COMPACT_STRING\n      node_id => INT32\n      host => COMPACT_STRING\n      port => INT32\n      error_code => INT16\n      error_message => COMPACT_NULLABLE_STRING\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        coordinators: reader.readArray((r, i) => {\n            const coordinator = {\n                key: r.readString(),\n                nodeId: r.readInt32(),\n                host: r.readString(),\n                port: r.readInt32(),\n                errorCode: r.readInt16(),\n                errorMessage: r.readNullableString()\n            };\n            if (coordinator.errorCode !== 0) {\n                errors.push([`/coordinators/${i}`, coordinator.errorCode]);\n            }\n            return coordinator;\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(10, 5, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  FindCoordinator Request (Version: 6) => key_type [coordinator_keys] TAG_BUFFER\n    key_type => INT8\n    coordinator_keys => COMPACT_STRING\n*/\nexport function createRequest(keyType, coordinatorKeys) {\n    return Writer.create()\n        .appendInt8(keyType)\n        .appendArray(coordinatorKeys, (w, k) => w.appendString(k), true, false)\n        .appendTaggedFields();\n}\n/*\n  FindCoordinator Response (Version: 6) => throttle_time_ms [coordinators] TAG_BUFFER\n    throttle_time_ms => INT32\n    coordinators => key node_id host port error_code error_message TAG_BUFFER\n      key => COMPACT_STRING\n      node_id => INT32\n      host => COMPACT_STRING\n      port => INT32\n      error_code => INT16\n      error_message => COMPACT_NULLABLE_STRING\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        coordinators: reader.readArray((r, i) => {\n            const coordinator = {\n                key: r.readString(),\n                nodeId: r.readInt32(),\n                host: r.readString(),\n                port: r.readInt32(),\n                errorCode: r.readInt16(),\n                errorMessage: r.readNullableString()\n            };\n            if (coordinator.errorCode !== 0) {\n                errors.push([`/coordinators/${i}`, coordinator.errorCode]);\n            }\n            return coordinator;\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(10, 6, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  Metadata Request (Version: 12) => [topics] allow_auto_topic_creation include_topic_authorized_operations TAG_BUFFER\n    topics => topic_id name TAG_BUFFER\n      topic_id => UUID\n      name => COMPACT_NULLABLE_STRING\n    allow_auto_topic_creation => BOOLEAN\n    include_topic_authorized_operations => BOOLEAN\n*/\nexport function createRequest(topics, allowAutoTopicCreation = false, includeTopicAuthorizedOperations = false) {\n    return Writer.create()\n        .appendArray(topics, (w, topic) => w.appendUUID(null).appendString(topic))\n        .appendBoolean(allowAutoTopicCreation)\n        .appendBoolean(includeTopicAuthorizedOperations)\n        .appendTaggedFields();\n}\n/*\n  Metadata Response (Version: 12) => throttle_time_ms [brokers] cluster_id controller_id [topics] TAG_BUFFER\n    throttle_time_ms => INT32\n    brokers => node_id host port rack TAG_BUFFER\n      node_id => INT32\n      host => COMPACT_STRING\n      port => INT32\n      rack => COMPACT_NULLABLE_STRING\n    cluster_id => COMPACT_NULLABLE_STRING\n    controller_id => INT32\n    topics => error_code name topic_id is_internal [partitions] topic_authorized_operations TAG_BUFFER\n      error_code => INT16\n      name => COMPACT_NULLABLE_STRING\n      topic_id => UUID\n      is_internal => BOOLEAN\n      partitions => error_code partition_index leader_id leader_epoch [replica_nodes] [isr_nodes] [offline_replicas] TAG_BUFFER\n        error_code => INT16\n        partition_index => INT32\n        leader_id => INT32\n        leader_epoch => INT32\n        replica_nodes => INT32\n        isr_nodes => INT32\n        offline_replicas => INT32\n      topic_authorized_operations => INT32\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        brokers: reader.readArray(r => {\n            return {\n                nodeId: r.readInt32(),\n                host: r.readString(),\n                port: r.readInt32(),\n                rack: r.readNullableString()\n            };\n        }),\n        clusterId: reader.readNullableString(),\n        controllerId: reader.readInt32(),\n        topics: reader.readArray((r, i) => {\n            const errorCode = r.readInt16();\n            if (errorCode !== 0) {\n                errors.push([`/topics/${i}`, errorCode]);\n            }\n            return {\n                errorCode,\n                name: r.readNullableString(),\n                topicId: r.readUUID(),\n                isInternal: r.readBoolean(),\n                partitions: r.readArray((r, j) => {\n                    const errorCode = r.readInt16();\n                    if (errorCode !== 0) {\n                        errors.push([`/topics/${i}/partitions/${j}`, errorCode]);\n                    }\n                    return {\n                        errorCode,\n                        partitionIndex: r.readInt32(),\n                        leaderId: r.readInt32(),\n                        leaderEpoch: r.readInt32(),\n                        replicaNodes: r.readArray(() => r.readInt32(), true, false),\n                        isrNodes: r.readArray(() => r.readInt32(), true, false),\n                        offlineReplicas: r.readArray(() => r.readInt32(), true, false)\n                    };\n                }),\n                topicAuthorizedOperations: reader.readInt32()\n            };\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(3, 12, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  AddOffsetsToTxn Request (Version: 4) => transactional_id producer_id producer_epoch group_id TAG_BUFFER\n    transactional_id => COMPACT_STRING\n    producer_id => INT64\n    producer_epoch => INT16\n    group_id => COMPACT_STRING\n*/\nexport function createRequest(transactionalId, producerId, producerEpoch, groupId) {\n    return Writer.create()\n        .appendString(transactionalId, true)\n        .appendInt64(producerId)\n        .appendInt16(producerEpoch)\n        .appendString(groupId, true)\n        .appendTaggedFields();\n}\n/*\n  AddOffsetsToTxn Response (Version: 4) => throttle_time_ms error_code TAG_BUFFER\n    throttle_time_ms => INT32\n    error_code => INT16\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        errorCode: reader.readInt16()\n    };\n    if (response.errorCode !== 0) {\n        throw new ResponseError(apiKey, apiVersion, { '': response.errorCode }, response);\n    }\n    return response;\n}\nexport const api = createAPI(25, 4, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  AddPartitionsToTxn Request (Version: 5) => [transactions] TAG_BUFFER\n    transactions => transactional_id producer_id producer_epoch verify_only [topics] TAG_BUFFER\n      transactional_id => COMPACT_STRING\n      producer_id => INT64\n      producer_epoch => INT16\n      verify_only => BOOLEAN\n      topics => name [partitions] TAG_BUFFER\n        name => COMPACT_STRING\n        partitions => INT32\n*/\nexport function createRequest(transactions) {\n    return Writer.create()\n        .appendArray(transactions, (w, transaction) => {\n        w.appendString(transaction.transactionalId)\n            .appendInt64(transaction.producerId)\n            .appendInt16(transaction.producerEpoch)\n            .appendBoolean(transaction.verifyOnly)\n            .appendArray(transaction.topics, (w, topic) => {\n            w.appendString(topic.name).appendArray(topic.partitions, (w, partition) => w.appendInt32(partition), true, false);\n        });\n    })\n        .appendTaggedFields();\n}\n/*\n  AddPartitionsToTxn Response (Version: 5) => throttle_time_ms error_code [results_by_transaction] TAG_BUFFER\n    throttle_time_ms => INT32\n    error_code => INT16\n    results_by_transaction => transactional_id [topic_results] TAG_BUFFER\n      transactional_id => COMPACT_STRING\n      topic_results => name [results_by_partition] TAG_BUFFER\n        name => COMPACT_STRING\n        results_by_partition => partition_index partition_error_code TAG_BUFFER\n          partition_index => INT32\n          partition_error_code => INT16\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const throttleTimeMs = reader.readInt32();\n    const errorCode = reader.readInt16();\n    if (errorCode !== 0) {\n        errors.push(['', errorCode]);\n    }\n    const response = {\n        throttleTimeMs,\n        errorCode,\n        resultsByTransaction: reader.readArray((r, i) => {\n            return {\n                transactionalId: r.readString(),\n                topicResults: r.readArray((r, j) => {\n                    return {\n                        name: r.readString(),\n                        resultsByPartition: r.readArray((r, k) => {\n                            const partition = {\n                                partitionIndex: r.readInt32(),\n                                partitionErrorCode: r.readInt16()\n                            };\n                            if (partition.partitionErrorCode !== 0) {\n                                errors.push([\n                                    `/results_by_transaction/${i}/topic_results/${j}/results_by_partitions/${k}`,\n                                    partition.partitionErrorCode\n                                ]);\n                            }\n                            return partition;\n                        })\n                    };\n                })\n            };\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(24, 5, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  EndTxn Request (Version: 4) => transactional_id producer_id producer_epoch committed TAG_BUFFER\n    transactional_id => COMPACT_STRING\n    producer_id => INT64\n    producer_epoch => INT16\n    committed => BOOLEAN\n*/\nexport function createRequest(transactionalId, producerId, producerEpoch, committed) {\n    return Writer.create()\n        .appendString(transactionalId, true)\n        .appendInt64(producerId)\n        .appendInt16(producerEpoch)\n        .appendBoolean(committed)\n        .appendTaggedFields();\n}\n/*\n  EndTxn Response (Version: 4) => throttle_time_ms error_code TAG_BUFFER\n    throttle_time_ms => INT32\n    error_code => INT16\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        errorCode: reader.readInt16()\n    };\n    if (response.errorCode !== 0) {\n        throw new ResponseError(apiKey, apiVersion, { '': response.errorCode }, response);\n    }\n    return response;\n}\nexport const api = createAPI(26, 4, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  InitProducerId Request (Version: 4) => transactional_id transaction_timeout_ms producer_id producer_epoch TAG_BUFFER\n    transactional_id => COMPACT_NULLABLE_STRING\n    transaction_timeout_ms => INT32\n    producer_id => INT64\n    producer_epoch => INT16\n*/\nexport function createRequest(transactionalId, transactionTimeoutMs, producerId, producerEpoch) {\n    return Writer.create()\n        .appendString(transactionalId, true)\n        .appendInt32(transactionTimeoutMs)\n        .appendInt64(producerId)\n        .appendInt16(producerEpoch)\n        .appendTaggedFields();\n}\n/*\n  InitProducerId Response (Version: 4) => throttle_time_ms error_code producer_id producer_epoch TAG_BUFFER\n    throttle_time_ms => INT32\n    error_code => INT16\n    producer_id => INT64\n    producer_epoch => INT16\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        errorCode: reader.readInt16(),\n        producerId: reader.readInt64(),\n        producerEpoch: reader.readInt16()\n    };\n    if (response.errorCode !== 0) {\n        throw new ResponseError(apiKey, apiVersion, { '': response.errorCode }, response);\n    }\n    return response;\n}\nexport const api = createAPI(22, 4, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  InitProducerId Request (Version: 5) => transactional_id transaction_timeout_ms producer_id producer_epoch TAG_BUFFER\n    transactional_id => COMPACT_NULLABLE_STRING\n    transaction_timeout_ms => INT32\n    producer_id => INT64\n    producer_epoch => INT16\n*/\nexport function createRequest(transactionalId, transactionTimeoutMs, producerId, producerEpoch) {\n    return Writer.create()\n        .appendString(transactionalId, true)\n        .appendInt32(transactionTimeoutMs)\n        .appendInt64(producerId)\n        .appendInt16(producerEpoch)\n        .appendTaggedFields();\n}\n/*\n  InitProducerId Response (Version: 5) => throttle_time_ms error_code producer_id producer_epoch TAG_BUFFER\n    throttle_time_ms => INT32\n    error_code => INT16\n    producer_id => INT64\n    producer_epoch => INT16\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        errorCode: reader.readInt16(),\n        producerId: reader.readInt64(),\n        producerEpoch: reader.readInt16()\n    };\n    if (response.errorCode !== 0) {\n        throw new ResponseError(apiKey, apiVersion, { '': response.errorCode }, response);\n    }\n    return response;\n}\nexport const api = createAPI(22, 5, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { createRecordsBatch } from \"../../protocol/records.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { groupByProperty } from \"../../utils.js\";\nimport { createAPI } from \"../definitions.js\";\nimport { ProduceAcks } from \"../enumerations.js\";\n/*\n  Produce Request (Version: 10) => transactional_id acks timeout_ms [topic_data] TAG_BUFFER\n    transactional_id => COMPACT_NULLABLE_STRING\n    acks => INT16\n    timeout_ms => INT32\n    topic_data => name [partition_data] TAG_BUFFER\n      name => COMPACT_STRING\n      partition_data => index records TAG_BUFFER\n        index => INT32\n        records => COMPACT_RECORDS\n*/\nexport function createRequest(acks = 1, timeout = 0, topicData, options = {}) {\n    // Normalize the messages\n    const now = BigInt(Date.now());\n    for (const message of topicData) {\n        if (typeof message.partition === 'undefined') {\n            message.partition = 0;\n        }\n        if (typeof message.timestamp === 'undefined') {\n            message.timestamp = now;\n        }\n    }\n    const writer = Writer.create()\n        .appendString(options.transactionalId)\n        .appendInt16(acks)\n        .appendInt32(timeout)\n        .appendArray(groupByProperty(topicData, 'topic'), (w, [topic, messages]) => {\n        w.appendString(topic).appendArray(groupByProperty(messages, 'partition'), (w, [partition, messages]) => {\n            const records = createRecordsBatch(messages, options);\n            w.appendInt32(partition)\n                .appendUnsignedVarInt(records.length + 1)\n                .appendFrom(records);\n        });\n    })\n        .appendTaggedFields();\n    if (acks === ProduceAcks.NO_RESPONSE) {\n        writer.context.noResponse = true;\n    }\n    return writer;\n}\n/*\n  Produce Response (Version: 10) => [responses] throttle_time_ms TAG_BUFFER\n    responses => name [partition_responses] TAG_BUFFER\n      name => COMPACT_STRING\n      partition_responses => index error_code base_offset log_append_time_ms log_start_offset [record_errors] error_message TAG_BUFFER\n        index => INT32\n        error_code => INT16\n        base_offset => INT64\n        log_append_time_ms => INT64\n        log_start_offset => INT64\n        record_errors => batch_index batch_index_error_message TAG_BUFFER\n          batch_index => INT32\n          batch_index_error_message => COMPACT_NULLABLE_STRING\n        error_message => COMPACT_NULLABLE_STRING\n    throttle_time_ms => INT32\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const response = {\n        responses: reader.readArray((r, i) => {\n            const topicResponse = {\n                name: r.readString(),\n                partitionResponses: r.readArray((r, j) => {\n                    const index = r.readInt32();\n                    const errorCode = r.readInt16();\n                    if (errorCode !== 0) {\n                        errors.push([`/responses/${i}/partition_responses/${j}`, errorCode]);\n                    }\n                    return {\n                        index,\n                        errorCode,\n                        baseOffset: r.readInt64(),\n                        logAppendTimeMs: r.readInt64(),\n                        logStartOffset: r.readInt64(),\n                        recordErrors: r.readArray((r, k) => {\n                            const recordError = {\n                                batchIndex: r.readInt32(),\n                                batchIndexErrorMessage: r.readNullableString()\n                            };\n                            if (recordError.batchIndexErrorMessage) {\n                                errors.push([`/responses/${i}/partition_responses/${j}/record_errors/${k}`, -1]);\n                            }\n                            return recordError;\n                        }),\n                        errorMessage: r.readNullableString()\n                    };\n                })\n            };\n            return topicResponse;\n        }),\n        throttleTimeMs: reader.readInt32()\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(0, 10, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { createRecordsBatch } from \"../../protocol/records.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { groupByProperty } from \"../../utils.js\";\nimport { createAPI } from \"../definitions.js\";\nimport { ProduceAcks } from \"../enumerations.js\";\n/*\n  Produce Request (Version: 11) => transactional_id acks timeout_ms [topic_data] TAG_BUFFER\n    transactional_id => COMPACT_NULLABLE_STRING\n    acks => INT16\n    timeout_ms => INT32\n    topic_data => name [partition_data] TAG_BUFFER\n      name => COMPACT_STRING\n      partition_data => index records TAG_BUFFER\n        index => INT32\n        records => COMPACT_RECORDS\n*/\nexport function createRequest(acks = 1, timeout = 0, topicData, options = {}) {\n    // Normalize the messages\n    const now = BigInt(Date.now());\n    for (const message of topicData) {\n        if (typeof message.partition === 'undefined') {\n            message.partition = 0;\n        }\n        if (typeof message.timestamp === 'undefined') {\n            message.timestamp = now;\n        }\n    }\n    const writer = Writer.create()\n        .appendString(options.transactionalId)\n        .appendInt16(acks)\n        .appendInt32(timeout)\n        .appendArray(groupByProperty(topicData, 'topic'), (w, [topic, messages]) => {\n        w.appendString(topic).appendArray(groupByProperty(messages, 'partition'), (w, [partition, messages]) => {\n            const records = createRecordsBatch(messages, options);\n            w.appendInt32(partition)\n                .appendUnsignedVarInt(records.length + 1)\n                .appendFrom(records);\n        });\n    })\n        .appendTaggedFields();\n    if (acks === ProduceAcks.NO_RESPONSE) {\n        writer.context.noResponse = true;\n    }\n    return writer;\n}\n/*\n  Produce Response (Version: 11) => [responses] throttle_time_ms TAG_BUFFER\n    responses => name [partition_responses] TAG_BUFFER\n      name => COMPACT_STRING\n      partition_responses => index error_code base_offset log_append_time_ms log_start_offset [record_errors] error_message TAG_BUFFER\n        index => INT32\n        error_code => INT16\n        base_offset => INT64\n        log_append_time_ms => INT64\n        log_start_offset => INT64\n        record_errors => batch_index batch_index_error_message TAG_BUFFER\n          batch_index => INT32\n          batch_index_error_message => COMPACT_NULLABLE_STRING\n        error_message => COMPACT_NULLABLE_STRING\n    throttle_time_ms => INT32\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const response = {\n        responses: reader.readArray((r, i) => {\n            const topicResponse = {\n                name: r.readString(),\n                partitionResponses: r.readArray((r, j) => {\n                    const index = r.readInt32();\n                    const errorCode = r.readInt16();\n                    if (errorCode !== 0) {\n                        errors.push([`/responses/${i}/partition_responses/${j}`, errorCode]);\n                    }\n                    return {\n                        index,\n                        errorCode,\n                        baseOffset: r.readInt64(),\n                        logAppendTimeMs: r.readInt64(),\n                        logStartOffset: r.readInt64(),\n                        recordErrors: r.readArray((r, k) => {\n                            const recordError = {\n                                batchIndex: r.readInt32(),\n                                batchIndexErrorMessage: r.readNullableString()\n                            };\n                            if (recordError.batchIndexErrorMessage) {\n                                errors.push([`/responses/${i}/partition_responses/${j}/record_errors/${k}`, -1]);\n                            }\n                            return recordError;\n                        }),\n                        errorMessage: r.readNullableString()\n                    };\n                })\n            };\n            return topicResponse;\n        }),\n        throttleTimeMs: reader.readInt32()\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(0, 11, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { createRecordsBatch } from \"../../protocol/records.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { groupByProperty } from \"../../utils.js\";\nimport { createAPI } from \"../definitions.js\";\nimport { ProduceAcks } from \"../enumerations.js\";\n/*\n  Produce Request (Version: 9) => transactional_id acks timeout_ms [topic_data] TAG_BUFFER\n    transactional_id => COMPACT_NULLABLE_STRING\n    acks => INT16\n    timeout_ms => INT32\n    topic_data => name [partition_data] TAG_BUFFER\n      name => COMPACT_STRING\n      partition_data => index records TAG_BUFFER\n        index => INT32\n        records => COMPACT_RECORDS\n*/\nexport function createRequest(acks = 1, timeout = 0, topicData, options = {}) {\n    // Normalize the messages\n    const now = BigInt(Date.now());\n    for (const message of topicData) {\n        if (typeof message.partition === 'undefined') {\n            message.partition = 0;\n        }\n        if (typeof message.timestamp === 'undefined') {\n            message.timestamp = now;\n        }\n    }\n    const writer = Writer.create()\n        .appendString(options.transactionalId)\n        .appendInt16(acks)\n        .appendInt32(timeout)\n        .appendArray(groupByProperty(topicData, 'topic'), (w, [topic, messages]) => {\n        w.appendString(topic).appendArray(groupByProperty(messages, 'partition'), (w, [partition, messages]) => {\n            const records = createRecordsBatch(messages, options);\n            w.appendInt32(partition)\n                .appendUnsignedVarInt(records.length + 1)\n                .appendFrom(records);\n        });\n    })\n        .appendTaggedFields();\n    if (acks === ProduceAcks.NO_RESPONSE) {\n        writer.context.noResponse = true;\n    }\n    return writer;\n}\n/*\n  Produce Response (Version: 9) => [responses] throttle_time_ms TAG_BUFFER\n    responses => name [partition_responses] TAG_BUFFER\n      name => COMPACT_STRING\n      partition_responses => index error_code base_offset log_append_time_ms log_start_offset [record_errors] error_message TAG_BUFFER\n        index => INT32\n        error_code => INT16\n        base_offset => INT64\n        log_append_time_ms => INT64\n        log_start_offset => INT64\n        record_errors => batch_index batch_index_error_message TAG_BUFFER\n          batch_index => INT32\n          batch_index_error_message => COMPACT_NULLABLE_STRING\n        error_message => COMPACT_NULLABLE_STRING\n    throttle_time_ms => INT32\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const response = {\n        responses: reader.readArray((r, i) => {\n            const topicResponse = {\n                name: r.readString(),\n                partitionResponses: r.readArray((r, j) => {\n                    const index = r.readInt32();\n                    const errorCode = r.readInt16();\n                    if (errorCode !== 0) {\n                        errors.push([`/responses/${i}/partition_responses/${j}`, errorCode]);\n                    }\n                    return {\n                        index,\n                        errorCode,\n                        baseOffset: r.readInt64(),\n                        logAppendTimeMs: r.readInt64(),\n                        logStartOffset: r.readInt64(),\n                        recordErrors: r.readArray((r, k) => {\n                            const recordError = {\n                                batchIndex: r.readInt32(),\n                                batchIndexErrorMessage: r.readNullableString()\n                            };\n                            if (recordError.batchIndexErrorMessage) {\n                                errors.push([`/responses/${i}/partition_responses/${j}/record_errors/${k}`, -1]);\n                            }\n                            return recordError;\n                        }),\n                        errorMessage: r.readNullableString()\n                    };\n                })\n            };\n            return topicResponse;\n        }),\n        throttleTimeMs: reader.readInt32()\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(0, 9, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  TxnOffsetCommit Request (Version: 4) => transactional_id group_id producer_id producer_epoch generation_id member_id group_instance_id [topics] TAG_BUFFER\n    transactional_id => COMPACT_STRING\n    group_id => COMPACT_STRING\n    producer_id => INT64\n    producer_epoch => INT16\n    generation_id => INT32\n    member_id => COMPACT_STRING\n    group_instance_id => COMPACT_NULLABLE_STRING\n    topics => name [partitions] TAG_BUFFER\n      name => COMPACT_STRING\n      partitions => partition_index committed_offset committed_leader_epoch committed_metadata TAG_BUFFER\n        partition_index => INT32\n        committed_offset => INT64\n        committed_leader_epoch => INT32\n        committed_metadata => COMPACT_NULLABLE_STRING\n*/\nexport function createRequest(transactionalId, groupId, producerId, producerEpoch, generationId, memberId, groupInstanceId, topics) {\n    return Writer.create()\n        .appendString(transactionalId, true)\n        .appendString(groupId, true)\n        .appendInt64(producerId)\n        .appendInt16(producerEpoch)\n        .appendInt32(generationId)\n        .appendString(memberId, true)\n        .appendString(groupInstanceId, true)\n        .appendArray(topics, (w, t) => {\n        w.appendString(t.name, true).appendArray(t.partitions, (w, p) => {\n            w.appendInt32(p.partitionIndex)\n                .appendInt64(p.committedOffset)\n                .appendInt32(p.committedLeaderEpoch)\n                .appendString(p.committedMetadata, true);\n        });\n    })\n        .appendTaggedFields();\n}\n/*\n  TxnOffsetCommit Response (Version: 4) => throttle_time_ms [topics] TAG_BUFFER\n    throttle_time_ms => INT32\n    topics => name [partitions] TAG_BUFFER\n      name => COMPACT_STRING\n      partitions => partition_index error_code TAG_BUFFER\n        partition_index => INT32\n        error_code => INT16\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        topics: reader.readArray((r, i) => {\n            return {\n                name: r.readString(),\n                partitions: r.readArray((r, j) => {\n                    const partition = {\n                        partitionIndex: r.readInt32(),\n                        errorCode: r.readInt16()\n                    };\n                    if (partition.errorCode !== 0) {\n                        errors.push([`/topics/${i}/partitions/${j}`, partition.errorCode]);\n                    }\n                    return partition;\n                })\n            };\n        })\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(28, 4, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  SaslAuthenticate Request (Version: 2) => auth_bytes TAG_BUFFER\n    auth_bytes => COMPACT_BYTES\n*/\nexport function createRequest(authBytes) {\n    return Writer.create().appendBytes(authBytes).appendTaggedFields();\n}\n/*\n  SaslAuthenticate Response (Version: 2) => error_code error_message auth_bytes session_lifetime_ms TAG_BUFFER\n    error_code => INT16\n    error_message => COMPACT_NULLABLE_STRING\n    auth_bytes => COMPACT_BYTES\n    session_lifetime_ms => INT64\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const response = {\n        errorCode: reader.readInt16(),\n        errorMessage: reader.readNullableString(),\n        authBytes: reader.readBytes(),\n        sessionLifetimeMs: reader.readInt64()\n    };\n    if (response.errorCode !== 0) {\n        throw new ResponseError(apiKey, apiVersion, { '': response.errorCode }, response);\n    }\n    return response;\n}\nexport const api = createAPI(36, 2, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  SaslHandshake Request (Version: 1) => mechanism\n    mechanism => STRING\n*/\nexport function createRequest(mechanism) {\n    return Writer.create().appendString(mechanism, false);\n}\n/*\n  SaslHandshake Response (Version: 1) => error_code [mechanisms]\n    error_code => INT16\n    mechanisms => STRING\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const response = {\n        errorCode: reader.readInt16(),\n        mechanisms: reader.readArray(r => {\n            return r.readString(false);\n        }, false, false)\n    };\n    if (response.errorCode !== 0) {\n        throw new ResponseError(apiKey, apiVersion, { '': response.errorCode }, response);\n    }\n    return response;\n}\nexport const api = createAPI(17, 1, createRequest, parseResponse, false, false);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  GetTelemetrySubscriptions Request (Version: 0) => client_instance_id TAG_BUFFER\n    client_instance_id => UUID\n*/\nexport function createRequest(clientInstanceId) {\n    return Writer.create().appendUUID(clientInstanceId).appendTaggedFields();\n}\n/*\n  GetTelemetrySubscriptions Response (Version: 0) => throttle_time_ms error_code client_instance_id subscription_id [accepted_compression_types] push_interval_ms telemetry_max_bytes delta_temporality [requested_metrics] TAG_BUFFER\n    throttle_time_ms => INT32\n    error_code => INT16\n    client_instance_id => UUID\n    subscription_id => INT32\n    accepted_compression_types => INT8\n    push_interval_ms => INT32\n    telemetry_max_bytes => INT32\n    delta_temporality => BOOLEAN\n    requested_metrics => COMPACT_STRING\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const errors = [];\n    const throttleTimeMs = reader.readInt32();\n    const errorCode = reader.readInt16();\n    if (errorCode !== 0) {\n        errors.push(['', errorCode]);\n    }\n    const response = {\n        throttleTimeMs,\n        errorCode,\n        clientInstanceId: reader.readUUID(),\n        subscriptionId: reader.readInt32(),\n        acceptedCompressionTypes: reader.readArray(r => r.readInt8(), true, false),\n        pushIntervalMs: reader.readInt32(),\n        telemetryMaxBytes: reader.readInt32(),\n        deltaTemporality: reader.readBoolean(),\n        requestedMetrics: reader.readArray(r => r.readString(), true, false)\n    };\n    if (errors.length) {\n        throw new ResponseError(apiKey, apiVersion, Object.fromEntries(errors), response);\n    }\n    return response;\n}\nexport const api = createAPI(71, 0, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  ListClientMetricsResources Request (Version: 0) => TAG_BUFFER\n*/\nexport function createRequest() {\n    return Writer.create().appendTaggedFields();\n}\n/*\nListClientMetricsResources Response (Version: 0) => throttle_time_ms error_code [client_metrics_resources] TAG_BUFFER\n  throttle_time_ms => INT32\n  error_code => INT16\n  client_metrics_resources => name TAG_BUFFER\n    name => COMPACT_STRING\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        errorCode: reader.readInt16(),\n        clientMetricsResources: reader.readArray(r => {\n            return {\n                name: r.readString()\n            };\n        })\n    };\n    if (response.errorCode !== 0) {\n        throw new ResponseError(apiKey, apiVersion, { '': response.errorCode }, response);\n    }\n    return response;\n}\nexport const api = createAPI(74, 0, createRequest, parseResponse);\n", "import { ResponseError } from \"../../errors.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { createAPI } from \"../definitions.js\";\n/*\n  PushTelemetry Request (Version: 0) => client_instance_id subscription_id terminating compression_type metrics TAG_BUFFER\n    client_instance_id => UUID\n    subscription_id => INT32\n    terminating => BOOLEAN\n    compression_type => INT8\n    metrics => COMPACT_BYTES\n*/\nexport function createRequest(clientInstanceId, subscriptionId, terminating, compressionType, metrics) {\n    return Writer.create()\n        .appendUUID(clientInstanceId)\n        .appendInt32(subscriptionId)\n        .appendBoolean(terminating)\n        .appendInt8(compressionType)\n        .appendBytes(metrics)\n        .appendTaggedFields();\n}\n/*\n  PushTelemetry Response (Version: 0) => throttle_time_ms error_code TAG_BUFFER\n    throttle_time_ms => INT32\n    error_code => INT16\n*/\nexport function parseResponse(_correlationId, apiKey, apiVersion, reader) {\n    const response = {\n        throttleTimeMs: reader.readInt32(),\n        errorCode: reader.readInt16()\n    };\n    if (response.errorCode !== 0) {\n        throw new ResponseError(apiKey, apiVersion, { '': response.errorCode }, response);\n    }\n    return response;\n}\nexport const api = createAPI(72, 0, createRequest, parseResponse);\n", "/**\n * Mnemonist Library Endpoint (ESM)\n * =================================\n *\n * Exporting every data structure through a unified endpoint.\n */\nimport * as set from './set.js';\nimport {default as FibonacciHeap} from './fibonacci-heap.js';\nconst MinFibonacciHeap = FibonacciHeap.MinFibonacciHeap;\nconst MaxFibonacciHeap = FibonacciHeap.MaxFibonacciHeap;\nimport {default as Heap} from './heap.js';\nconst MinHeap = Heap.MinHeap;\nconst MaxHeap = Heap.MaxHeap;\nimport {default as SuffixArray} from './suffix-array.js';\nconst GeneralizedSuffixArray = SuffixArray.GeneralizedSuffixArray;\nimport {default as Vector} from './vector.js';\nconst Uint8Vector = Vector.Uint8Vector;\nconst Uint8ClampedVector = Vector.Uint8ClampedVector;\nconst Int8Vector = Vector.Int8Vector;\nconst Uint16Vector = Vector.Uint16Vector;\nconst Int16Vector = Vector.Int16Vector;\nconst Uint32Vector = Vector.Uint32Vector;\nconst Int32Vector = Vector.Int32Vector;\nconst Float32Vector = Vector.Float32Vector;\nconst Float64Vector = Vector.Float64Vector;\nconst PointerVector = Vector.PointerVector;\n\nexport {default as BiMap} from './bi-map.js';\nexport {default as BitSet} from './bit-set.js';\nexport {default as BitVector} from './bit-vector.js';\nexport {default as BloomFilter} from './bloom-filter.js';\nexport {default as BKTree} from './bk-tree.js';\nexport {default as CircularBuffer} from './circular-buffer.js';\nexport {default as DefaultMap} from './default-map.js';\nexport {default as DefaultWeakMap} from './default-weak-map.js';\nexport {default as FixedDeque} from './fixed-deque.js';\nexport {default as StaticDisjointSet} from './static-disjoint-set.js';\nexport {FibonacciHeap, MinFibonacciHeap, MaxFibonacciHeap};\nexport {default as FixedReverseHeap} from './fixed-reverse-heap.js';\nexport {default as FuzzyMap} from './fuzzy-map.js';\nexport {default as FuzzyMultiMap} from './fuzzy-multi-map.js';\nexport {default as HashedArrayTree} from './hashed-array-tree.js';\nexport {Heap, MinHeap, MaxHeap};\nexport {default as StaticIntervalTree} from './static-interval-tree.js';\nexport {default as InvertedIndex} from './inverted-index.js';\nexport {default as KDTree} from './kd-tree.js';\nexport {default as LinkedList} from './linked-list.js';\nexport {default as LRUCache} from './lru-cache.js';\nexport {default as LRUCacheWithDelete} from './lru-cache-with-delete.js';\nexport {default as LRUMap} from './lru-map.js';\nexport {default as LRUMapWithDelete} from './lru-map-with-delete.js';\nexport {default as MultiMap} from './multi-map.js';\nexport {default as MultiSet} from './multi-set.js';\nexport {default as PassjoinIndex} from './passjoin-index.js';\nexport {default as Queue} from './queue.js';\nexport {default as FixedStack} from './fixed-stack.js';\nexport {default as Stack} from './stack.js';\nexport {SuffixArray, GeneralizedSuffixArray};\nexport {set};\nexport {default as SparseQueueSet} from './sparse-queue-set.js';\nexport {default as SparseMap} from './sparse-map.js';\nexport {default as SparseSet} from './sparse-set.js';\nexport {default as SymSpell} from './symspell.js';\nexport {default as Trie} from './trie.js';\nexport {default as TrieMap} from './trie-map.js';\nexport {Vector, Uint8Vector, Uint8ClampedVector, Int8Vector, Uint16Vector, Int16Vector, Uint32Vector, Int32Vector, Float32Vector, Float64Vector, PointerVector};\nexport {default as VPTree} from './vp-tree.js';\n", "import { LRUCache } from 'mnemonist';\n// This is a Javascript port of\n// https://github.com/apache/kafka/blob/trunk/clients/src/main/java/org/apache/kafka/common/utils/Utils.java#L492\n// 'm' and 'r' are mixing constants generated offline. They're not really 'magic', they just happen to work well.\nconst seed = 0x9747b28cn;\nconst m = 0x5bd1e995n;\nconst r = 24;\nconst cache = new LRUCache(1000);\nconst tail = Buffer.alloc(4);\nfunction tripleRightShift(num, bits) {\n    return BigInt(Number(BigInt.asIntN(32, num)) >>> bits);\n}\nexport function murmur2(data, useCache = false) {\n    let key;\n    if (typeof data === 'string') {\n        if (useCache) {\n            key = data;\n            const existing = key ? cache.get(key) : undefined;\n            if (existing) {\n                return existing;\n            }\n        }\n        data = Buffer.from(data);\n    }\n    const length = data.length;\n    // Initialize the hash to a random value\n    let h = seed ^ BigInt(length);\n    let i = 0;\n    while (i < length - 3) {\n        let k = BigInt(data.readInt32LE(i));\n        i += 4;\n        k *= m;\n        k ^= tripleRightShift(k, r);\n        k *= m;\n        h *= m;\n        h ^= k;\n    }\n    // Read the last few bytes of the input array\n    // If this becomes an hot-path, consider to optimize it further and avoid copying\n    if (length % 4 > 0) {\n        data.copy(tail, 0, length - (length % 4));\n        h ^= BigInt(tail.readInt32LE(0));\n        tail.fill(0);\n        h *= m;\n    }\n    // Perform the final mixing\n    h ^= tripleRightShift(h, 13);\n    h *= m;\n    h ^= tripleRightShift(h, 15);\n    const hash = Number(BigInt.asIntN(32, h));\n    if (key !== undefined) {\n        cache.set(key, hash);\n    }\n    return hash;\n}\n", "import { createPromisifiedCallback, kCallbackPromise } from \"../../apis/callbacks.js\";\nimport { AuthenticationError } from \"../../errors.js\";\nimport { getCredential } from \"./credential-provider.js\";\nexport function jwtValidateAuthenticationBytes(authBytes, callback) {\n    let authData = {};\n    try {\n        if (authBytes.length > 0) {\n            authData = JSON.parse(authBytes.toString('utf-8'));\n        }\n        /* c8 ignore next 8  - Hard to test */\n    }\n    catch (e) {\n        callback(new AuthenticationError('Invalid authBytes in SASL/OAUTHBEARER response', { authBytes }), undefined);\n        return;\n    }\n    if (authData.status === 'invalid_token') {\n        callback(new AuthenticationError('Invalid SASL/OAUTHBEARER token.', { authData }), undefined);\n    }\n    callback(null, authBytes);\n}\nexport function authenticate(authenticateAPI, connection, tokenOrProvider, callback) {\n    if (!callback) {\n        callback = createPromisifiedCallback();\n    }\n    getCredential('SASL/OAUTHBEARER token', tokenOrProvider, (error, token) => {\n        if (error) {\n            return callback(error, undefined);\n        }\n        authenticateAPI(connection, Buffer.from(`n,,\\x01auth=Bearer ${token}\\x01\\x01`), callback);\n    });\n    return callback[kCallbackPromise];\n}\n", "import { AuthenticationError } from \"../../errors.js\";\nexport function getCredential(label, credentialOrProvider, callback) {\n    if (typeof credentialOrProvider === 'string') {\n        callback(null, credentialOrProvider);\n        return;\n    }\n    else if (typeof credentialOrProvider !== 'function') {\n        callback(new AuthenticationError(`The ${label} should be a string or a function.`), undefined);\n        return;\n    }\n    try {\n        const credential = credentialOrProvider();\n        if (typeof credential === 'string') {\n            callback(null, credential);\n            return;\n        }\n        else if (typeof credential?.then !== 'function') {\n            callback(new AuthenticationError(`The ${label} provider should return a string or a promise that resolves to a string.`), undefined);\n            return;\n        }\n        credential\n            .then(token => {\n            if (typeof token !== 'string') {\n                process.nextTick(callback, new AuthenticationError(`The ${label} provider should resolve to a string.`), undefined);\n                return;\n            }\n            process.nextTick(callback, null, token);\n        })\n            .catch(error => {\n            process.nextTick(callback, new AuthenticationError(`The ${label} provider threw an error.`, { cause: error }));\n        });\n    }\n    catch (error) {\n        callback(new AuthenticationError(`The ${label} provider threw an error.`, { cause: error }), undefined);\n    }\n}\n", "import { createPromisifiedCallback, kCallbackPromise } from \"../../apis/callbacks.js\";\nimport { getCredential } from \"./credential-provider.js\";\nexport function authenticate(authenticateAPI, connection, usernameProvider, passwordProvider, callback) {\n    if (!callback) {\n        callback = createPromisifiedCallback();\n    }\n    getCredential('SASL/PLAIN username', usernameProvider, (error, username) => {\n        if (error) {\n            return callback(error, undefined);\n        }\n        getCredential('SASL/PLAIN password', passwordProvider, (error, password) => {\n            if (error) {\n                return callback(error, undefined);\n            }\n            authenticateAPI(connection, Buffer.from(['', username, password].join('\\0')), callback);\n        });\n    });\n    return callback[kCallbackPromise];\n}\n", "import { createHash, createHmac, pbkdf2Sync, randomBytes } from 'node:crypto';\nimport { createPromisifiedCallback, kCallbackPromise } from \"../../apis/callbacks.js\";\nimport { AuthenticationError } from \"../../errors.js\";\nimport { getCredential } from \"./credential-provider.js\";\nconst GS2_HEADER = 'n,,';\nconst GS2_HEADER_BASE64 = Buffer.from(GS2_HEADER).toString('base64');\nconst HMAC_CLIENT_KEY = 'Client Key';\nconst HMAC_SERVER_KEY = 'Server Key';\nconst PARAMETERS_PARSER = /([^=]+)=(.+)/;\nexport const ScramAlgorithms = {\n    'SHA-256': {\n        keyLength: 32,\n        algorithm: 'sha256',\n        minIterations: 4096\n    },\n    'SHA-512': {\n        keyLength: 64,\n        algorithm: 'sha512',\n        minIterations: 4096\n    }\n};\nexport function createNonce() {\n    return randomBytes(16).toString('base64url');\n}\nexport function sanitizeString(str) {\n    return str.replaceAll('=', '=3D').replace(',', '=2C');\n}\nexport function parseParameters(data) {\n    const original = data.toString('utf-8');\n    return {\n        __original: original,\n        ...Object.fromEntries(original.split(',').map(param => param.match(PARAMETERS_PARSER).slice(1, 3)))\n    };\n}\n// h, hi, hmac and xor, are defined in https://datatracker.ietf.org/doc/html/rfc5802#section-2.2\nexport function h(definition, data) {\n    return createHash(definition.algorithm).update(data).digest();\n}\nexport function hi(definition, password, salt, iterations) {\n    return pbkdf2Sync(password, salt, iterations, definition.keyLength, definition.algorithm);\n}\nexport function hmac(definition, key, data) {\n    return createHmac(definition.algorithm, key).update(data).digest();\n}\nexport function xor(a, b) {\n    if (a.byteLength !== b.byteLength) {\n        throw new AuthenticationError('Buffers must have the same length.');\n    }\n    const result = Buffer.allocUnsafe(a.length);\n    for (let i = 0; i < a.length; i++) {\n        result[i] = a[i] ^ b[i];\n    }\n    return result;\n}\nexport const defaultCrypto = {\n    h,\n    hi,\n    hmac,\n    xor\n};\nfunction performAuthentication(connection, algorithm, definition, authenticateAPI, crypto, username, password, callback) {\n    const { h, hi, hmac, xor } = crypto;\n    const clientNonce = createNonce();\n    const clientFirstMessageBare = `n=${sanitizeString(username)},r=${clientNonce}`;\n    // First of all, send the first message\n    authenticateAPI(connection, Buffer.from(`${GS2_HEADER}${clientFirstMessageBare}`), (error, firstResponse) => {\n        if (error) {\n            callback(new AuthenticationError('SASL authentication failed.', { cause: error }), undefined);\n            return;\n        }\n        const firstData = parseParameters(firstResponse.authBytes);\n        // Extract some parameters\n        const salt = Buffer.from(firstData.s, 'base64');\n        const iterations = parseInt(firstData.i, 10);\n        const serverNonce = firstData.r;\n        const serverFirstMessage = firstData.__original;\n        // Validate response\n        if (!serverNonce.startsWith(clientNonce)) {\n            callback(new AuthenticationError('Server nonce does not start with client nonce.'), undefined);\n            return;\n        }\n        else if (definition.minIterations > iterations) {\n            callback(new AuthenticationError(`Algorithm ${algorithm} requires at least ${definition.minIterations} iterations, while ${iterations} were requested.`), undefined);\n            return;\n        }\n        // SaltedPassword  := Hi(Normalize(password), salt, i)\n        // ClientKey       := HMAC(SaltedPassword, \"Client Key\")\n        // StoredKey       := H(ClientKey)\n        // AuthMessage     := ClientFirstMessageBare + \",\" ServerFirstMessage + \",\" + ClientFinalMessageWithoutProof\n        // ClientSignature := HMAC(StoredKey, AuthMessage)\n        // ClientProof     := ClientKey XOR ClientSignature\n        // ServerKey       := HMAC(SaltedPassword, \"Server Key\")\n        // ServerSignature := HMAC(ServerKey, AuthMessage)\n        const saltedPassword = hi(definition, password, salt, iterations);\n        const clientKey = hmac(definition, saltedPassword, HMAC_CLIENT_KEY);\n        const storedKey = h(definition, clientKey);\n        const clientFinalMessageWithoutProof = `c=${GS2_HEADER_BASE64},r=${serverNonce}`;\n        const authMessage = `${clientFirstMessageBare},${serverFirstMessage},${clientFinalMessageWithoutProof}`;\n        const clientSignature = hmac(definition, storedKey, authMessage);\n        const clientProof = xor(clientKey, clientSignature);\n        const serverKey = hmac(definition, saltedPassword, HMAC_SERVER_KEY);\n        const serverSignature = hmac(definition, serverKey, authMessage);\n        authenticateAPI(connection, Buffer.from(`${clientFinalMessageWithoutProof},p=${clientProof.toString('base64')}`), (error, lastResponse) => {\n            if (error) {\n                callback(new AuthenticationError('SASL authentication failed.', { cause: error }), undefined);\n                return;\n            }\n            // Send the last message to the server\n            const lastData = parseParameters(lastResponse.authBytes);\n            if (lastData.e) {\n                callback(new AuthenticationError(lastData.e), undefined);\n                return;\n            }\n            else if (lastData.v !== serverSignature.toString('base64')) {\n                callback(new AuthenticationError('Invalid server signature.'), undefined);\n                return;\n            }\n            callback(null, lastResponse);\n        });\n    });\n}\nexport function authenticate(authenticateAPI, connection, algorithm, usernameProvider, passwordProvider, crypto = defaultCrypto, callback) {\n    if (!callback) {\n        callback = createPromisifiedCallback();\n    }\n    const definition = ScramAlgorithms[algorithm];\n    if (!definition) {\n        throw new AuthenticationError(`Unsupported SCRAM algorithm ${algorithm}`);\n    }\n    getCredential(`SASL/SCRAM-${algorithm} username`, usernameProvider, (error, username) => {\n        if (error) {\n            return callback(error, undefined);\n        }\n        getCredential(`SASL/SCRAM-${algorithm} password`, passwordProvider, (error, password) => {\n            if (error) {\n                return callback(error, undefined);\n            }\n            performAuthentication(connection, algorithm, definition, authenticateAPI, crypto, username, password, callback);\n        });\n    });\n    return callback[kCallbackPromise];\n}\n", "export function parseBroker(broker, defaultPort = 9092) {\n    if (typeof broker === 'string') {\n        if (broker.includes(':')) {\n            const [host, port] = broker.split(':');\n            return { host, port: Number(port) };\n        }\n        else {\n            return { host: broker, port: defaultPort };\n        }\n    }\n    return broker;\n}\n", "export function stringSerializer(data) {\n    if (typeof data !== 'string') {\n        return undefined;\n    }\n    return Buffer.from(data, 'utf-8');\n}\nexport function stringDeserializer(data) {\n    if (!Buffer.isBuffer(data)) {\n        return undefined;\n    }\n    return data.toString('utf-8');\n}\nexport function jsonSerializer(data) {\n    return Buffer.from(JSON.stringify(data), 'utf-8');\n}\nexport function jsonDeserializer(data) {\n    if (!Buffer.isBuffer(data)) {\n        return undefined;\n    }\n    return JSON.parse(data.toString('utf-8'));\n}\nexport function serializersFrom(serializer) {\n    return {\n        key: serializer,\n        value: serializer,\n        headerKey: serializer,\n        headerValue: serializer\n    };\n}\nexport function deserializersFrom(deserializer) {\n    return {\n        key: deserializer,\n        value: deserializer,\n        headerKey: deserializer,\n        headerValue: deserializer\n    };\n}\nexport const serdeProperties = {\n    type: 'object',\n    properties: {\n        key: { function: true },\n        value: { function: true },\n        headerKey: { function: true },\n        headerValue: { function: true }\n    },\n    additionalProperties: false\n};\nexport const stringSerializers = serializersFrom(stringSerializer);\nexport const stringDeserializers = deserializersFrom(stringDeserializer);\n", "import { EventEmitter } from 'node:events';\nimport { createPromisifiedCallback, kCallbackPromise, runConcurrentCallbacks } from \"../../apis/callbacks.js\";\nimport * as apis from \"../../apis/index.js\";\nimport { api as apiVersionsV3 } from \"../../apis/metadata/api-versions-v3.js\";\nimport { baseApisChannel, baseMetadataChannel, createDiagnosticContext, notifyCreation } from \"../../diagnostic.js\";\nimport { MultipleErrors, NetworkError, UnsupportedApiError, UserError } from \"../../errors.js\";\nimport { ConnectionPool } from \"../../network/connection-pool.js\";\nimport { parseBroker } from \"../../network/utils.js\";\nimport { kInstance } from \"../../symbols.js\";\nimport { ajv, debugDump, loggers } from \"../../utils.js\";\nimport { baseOptionsValidator, clientSoftwareName, clientSoftwareVersion, defaultBaseOptions, defaultPort, metadataOptionsValidator } from \"./options.js\";\nexport const kClientId = Symbol('plt.kafka.base.clientId');\nexport const kBootstrapBrokers = Symbol('plt.kafka.base.bootstrapBrokers');\nexport const kApis = Symbol('plt.kafka.base.apis');\nexport const kGetApi = Symbol('plt.kafka.base.getApi');\nexport const kGetConnection = Symbol('plt.kafka.base.getConnection');\nexport const kGetBootstrapConnection = Symbol('plt.kafka.base.getBootstrapConnection');\nexport const kOptions = Symbol('plt.kafka.base.options');\nexport const kConnections = Symbol('plt.kafka.base.connections');\nexport const kFetchConnections = Symbol('plt.kafka.base.fetchCnnections');\nexport const kCreateConnectionPool = Symbol('plt.kafka.base.createConnectionPool');\nexport const kClosed = Symbol('plt.kafka.base.closed');\nexport const kListApis = Symbol('plt.kafka.base.listApis');\nexport const kMetadata = Symbol('plt.kafka.base.metadata');\nexport const kCheckNotClosed = Symbol('plt.kafka.base.checkNotClosed');\nexport const kClearMetadata = Symbol('plt.kafka.base.clearMetadata');\nexport const kPerformWithRetry = Symbol('plt.kafka.base.performWithRetry');\nexport const kPerformDeduplicated = Symbol('plt.kafka.base.performDeduplicated');\nexport const kValidateOptions = Symbol('plt.kafka.base.validateOptions');\nexport const kInspect = Symbol('plt.kafka.base.inspect');\nexport const kFormatValidationErrors = Symbol('plt.kafka.base.formatValidationErrors');\nexport const kPrometheus = Symbol('plt.kafka.base.prometheus');\nexport const kClientType = Symbol('plt.kafka.base.clientType');\nexport const kAfterCreate = Symbol('plt.kafka.base.afterCreate');\nlet currentInstance = 0;\nexport class Base extends EventEmitter {\n    // This is declared using a symbol (a.k.a protected/friend) to make it available in ConnectionPool and MessagesStream\n    [kInstance];\n    // General status - Use symbols rather than JS private property to make them \"protected\" as in C++\n    [kClientId];\n    [kClientType];\n    [kBootstrapBrokers];\n    [kApis];\n    [kOptions];\n    [kConnections];\n    [kClosed];\n    [kPrometheus];\n    #metadata;\n    #inflightDeduplications;\n    constructor(options) {\n        super();\n        this.setMaxListeners(0);\n        this[kClientType] = 'base';\n        this[kInstance] = currentInstance++;\n        this[kApis] = [];\n        // Validate options\n        this[kOptions] = Object.assign({}, defaultBaseOptions, options);\n        if (typeof this[kOptions].retries === 'boolean') {\n            this[kOptions].retries = this[kOptions].retries ? Number.POSITIVE_INFINITY : 0;\n        }\n        this[kValidateOptions](this[kOptions], baseOptionsValidator, '/options');\n        this[kClientId] = options.clientId;\n        // Initialize bootstrap brokers\n        this[kBootstrapBrokers] = [];\n        for (const broker of options.bootstrapBrokers) {\n            this[kBootstrapBrokers].push(parseBroker(broker, defaultPort));\n        }\n        // Initialize main connection pool\n        this[kConnections] = this[kCreateConnectionPool]();\n        this[kClosed] = false;\n        this.#inflightDeduplications = new Map();\n        // Initialize metrics\n        if (options.metrics) {\n            this[kPrometheus] = options.metrics;\n        }\n    }\n    get instanceId() {\n        return this[kInstance];\n    }\n    get clientId() {\n        return this[kClientId];\n    }\n    get closed() {\n        return this[kClosed] === true;\n    }\n    get type() {\n        return this[kClientType];\n    }\n    emitWithDebug(section, name, ...args) {\n        if (!section) {\n            return this.emit(name, ...args);\n        }\n        loggers[section]?.({ event: name, payload: args });\n        return this.emit(`${section}:${name}`, ...args);\n    }\n    close(callback) {\n        if (!callback) {\n            callback = createPromisifiedCallback();\n        }\n        this[kClosed] = true;\n        this.emitWithDebug('client', 'close');\n        this[kConnections].close(callback);\n        return callback[kCallbackPromise];\n    }\n    listApis(callback) {\n        if (!callback) {\n            callback = createPromisifiedCallback();\n        }\n        baseApisChannel.traceCallback(this[kListApis], 0, createDiagnosticContext({ client: this, operation: 'listApis' }), this, callback);\n        return callback[kCallbackPromise];\n    }\n    metadata(options, callback) {\n        if (!callback) {\n            callback = createPromisifiedCallback();\n        }\n        const validationError = this[kValidateOptions](options, metadataOptionsValidator, '/options', false);\n        if (validationError) {\n            callback(validationError, undefined);\n            return callback[kCallbackPromise];\n        }\n        baseMetadataChannel.traceCallback(this[kMetadata], 1, createDiagnosticContext({ client: this, operation: 'metadata' }), this, options, callback);\n        return callback[kCallbackPromise];\n    }\n    connectToBrokers(nodeIds, callback) {\n        if (!callback) {\n            callback = createPromisifiedCallback();\n        }\n        // Fetch the metadata\n        this[kMetadata]({ topics: [] }, (error, metadata) => {\n            if (error) {\n                callback(error, undefined);\n                return;\n            }\n            let nodes = [];\n            if (nodeIds?.length) {\n                for (const node of nodeIds) {\n                    if (metadata.brokers.has(node)) {\n                        nodes.push(node);\n                    }\n                }\n            }\n            else {\n                nodes = Array.from(metadata.brokers.keys());\n            }\n            runConcurrentCallbacks('Connecting to brokers failed.', nodes, (nodeId, concurrentCallback) => {\n                this[kGetConnection](metadata.brokers.get(nodeId), (error, connection) => {\n                    if (error) {\n                        concurrentCallback(error, undefined);\n                        return;\n                    }\n                    concurrentCallback(null, [nodeId, connection]);\n                });\n            }, (error, connections) => {\n                if (error) {\n                    callback(error, undefined);\n                    return;\n                }\n                return callback(null, new Map(connections));\n            });\n        });\n        return callback[kCallbackPromise];\n    }\n    isActive() {\n        if (this[kClosed]) {\n            return false;\n        }\n        return true;\n    }\n    isConnected() {\n        if (this[kClosed]) {\n            return false;\n        }\n        return this[kConnections].isConnected();\n    }\n    [kCreateConnectionPool]() {\n        const pool = new ConnectionPool(this[kClientId], {\n            ownerId: this[kInstance],\n            ...this[kOptions]\n        });\n        this.#forwardEvents(pool, [\n            'connect',\n            'disconnect',\n            'failed',\n            'drain',\n            'sasl:handshake',\n            'sasl:authentication',\n            'sasl:authentication:extended'\n        ]);\n        return pool;\n    }\n    [kListApis](callback) {\n        this[kPerformDeduplicated]('listApis', deduplicateCallback => {\n            this[kPerformWithRetry]('listApis', retryCallback => {\n                this[kGetBootstrapConnection]((error, connection) => {\n                    if (error) {\n                        retryCallback(error, undefined);\n                        return;\n                    }\n                    // We use V3 to be able to get APIS from Kafka 2.4.0+\n                    apiVersionsV3(connection, clientSoftwareName, clientSoftwareVersion, retryCallback);\n                });\n            }, (error, metadata) => {\n                if (error) {\n                    deduplicateCallback(error, undefined);\n                    return;\n                }\n                deduplicateCallback(null, metadata.apiKeys);\n            }, 0);\n        }, callback);\n    }\n    [kMetadata](options, callback) {\n        const expiralDate = Date.now() - (options.metadataMaxAge ?? this[kOptions].metadataMaxAge);\n        let topicsToFetch = [];\n        // Determine which topics we need to fetch\n        if (!this.#metadata || options.forceUpdate) {\n            topicsToFetch = options.topics;\n        }\n        else {\n            for (const topic of options.topics) {\n                const existingTopic = this.#metadata.topics.get(topic);\n                if (!existingTopic || existingTopic.lastUpdate < expiralDate) {\n                    topicsToFetch.push(topic);\n                }\n            }\n        }\n        // All topics are already up-to-date, simply return them\n        if (this.#metadata && !topicsToFetch.length && !options.forceUpdate) {\n            callback(null, {\n                ...this.#metadata,\n                topics: new Map(options.topics.map(topic => [topic, this.#metadata.topics.get(topic)]))\n            });\n            return;\n        }\n        const autocreateTopics = options.autocreateTopics ?? this[kOptions].autocreateTopics;\n        this[kPerformDeduplicated](\n        // Unique key to avoid mixing callbacks\n        `metadata-${options.topics.sort().join(',')}-${autocreateTopics}-${options.forceUpdate}`, deduplicateCallback => {\n            this[kPerformWithRetry]('metadata', retryCallback => {\n                this[kGetBootstrapConnection]((error, connection) => {\n                    if (error) {\n                        retryCallback(error, undefined);\n                        return;\n                    }\n                    this[kGetApi]('Metadata', (error, api) => {\n                        if (error) {\n                            retryCallback(error, undefined);\n                            return;\n                        }\n                        api(connection, topicsToFetch, autocreateTopics, true, retryCallback);\n                    });\n                });\n            }, (error, metadata) => {\n                if (error) {\n                    const hasStaleMetadata = error.findBy('hasStaleMetadata', true);\n                    // Stale metadata, we need to fetch everything again\n                    if (hasStaleMetadata) {\n                        this[kClearMetadata]();\n                        topicsToFetch = options.topics;\n                    }\n                    deduplicateCallback(error, undefined);\n                    return;\n                }\n                const lastUpdate = Date.now();\n                if (!this.#metadata) {\n                    this.#metadata = {\n                        id: metadata.clusterId,\n                        brokers: new Map(),\n                        topics: new Map(),\n                        lastUpdate\n                    };\n                }\n                else {\n                    this.#metadata.lastUpdate = lastUpdate;\n                }\n                const brokers = new Map();\n                // This should never change, but we act defensively here\n                for (const broker of metadata.brokers) {\n                    const { host, port } = broker;\n                    brokers.set(broker.nodeId, { host, port });\n                }\n                this.#metadata.brokers = brokers;\n                // Update all the topics in the cache\n                for (const { name, topicId: id, partitions: rawPartitions, isInternal } of metadata.topics) {\n                    /* c8 ignore next 3 - Sometimes internal topics might be returned by Kafka */\n                    if (isInternal) {\n                        continue;\n                    }\n                    const partitions = [];\n                    for (const rawPartition of rawPartitions.sort((a, b) => a.partitionIndex - b.partitionIndex)) {\n                        partitions[rawPartition.partitionIndex] = {\n                            leader: rawPartition.leaderId,\n                            leaderEpoch: rawPartition.leaderEpoch,\n                            replicas: rawPartition.replicaNodes\n                        };\n                    }\n                    this.#metadata.topics.set(name, { id, partitions, partitionsCount: rawPartitions.length, lastUpdate });\n                }\n                // Now build the object to return\n                const updatedMetadata = {\n                    ...this.#metadata,\n                    topics: new Map(options.topics.map(topic => [topic, this.#metadata.topics.get(topic)]))\n                };\n                this.emitWithDebug('client', 'metadata', updatedMetadata);\n                deduplicateCallback(null, updatedMetadata);\n            }, 0);\n        }, callback);\n    }\n    [kCheckNotClosed](callback) {\n        if (this[kClosed]) {\n            const error = new NetworkError('Client is closed.', { closed: true, instance: this[kInstance] });\n            callback(error, undefined);\n            return true;\n        }\n        return false;\n    }\n    [kClearMetadata]() {\n        this.#metadata = undefined;\n    }\n    [kPerformWithRetry](operationId, operation, callback, attempt = 0, errors = [], shouldSkipRetry) {\n        const retries = this[kOptions].retries;\n        this.emitWithDebug('client', 'performWithRetry', operationId, attempt, retries);\n        operation((error, result) => {\n            if (error) {\n                const genericError = error;\n                const retriable = genericError.findBy?.('code', NetworkError.code) || genericError.findBy?.('canRetry', true);\n                errors.push(error);\n                if (attempt < retries && retriable && !shouldSkipRetry?.(error)) {\n                    this.emitWithDebug('client', 'performWithRetry:retry', operationId, attempt, retries);\n                    function onClose() {\n                        clearTimeout(timeout);\n                        errors.push(new UserError(`Client closed while retrying ${operationId}.`));\n                        callback(new MultipleErrors(`${operationId} failed ${attempt + 1} times.`, errors), undefined);\n                    }\n                    const timeout = setTimeout(() => {\n                        this.removeListener('client:close', onClose);\n                        this[kPerformWithRetry](operationId, operation, callback, attempt + 1, errors, shouldSkipRetry);\n                    }, this[kOptions].retryDelay);\n                    this.once('client:close', onClose);\n                }\n                else {\n                    if (attempt === 0) {\n                        callback(error, undefined);\n                        return;\n                    }\n                    callback(new MultipleErrors(`${operationId} failed ${attempt + 1} times.`, errors), undefined);\n                }\n                return;\n            }\n            callback(null, result);\n        });\n        return callback[kCallbackPromise];\n    }\n    [kPerformDeduplicated](operationId, operation, callback) {\n        let inflights = this.#inflightDeduplications.get(operationId);\n        if (!inflights) {\n            inflights = [];\n            this.#inflightDeduplications.set(operationId, inflights);\n        }\n        inflights.push(callback);\n        if (inflights.length === 1) {\n            this.emitWithDebug('client', 'performDeduplicated', operationId);\n            operation((error, result) => {\n                this.#inflightDeduplications.set(operationId, []);\n                for (const cb of inflights) {\n                    cb(error, result);\n                }\n                inflights = [];\n            });\n        }\n        return callback[kCallbackPromise];\n    }\n    [kGetApi](name, callback) {\n        // Make sure we have APIs informations\n        if (!this[kApis].length) {\n            this[kListApis]((error, apis) => {\n                if (error) {\n                    callback(error, undefined);\n                    return;\n                }\n                this[kApis] = apis;\n                this[kGetApi](name, callback);\n            });\n            return;\n        }\n        const api = this[kApis].find(api => api.name === name);\n        if (!api) {\n            callback(new UnsupportedApiError(`Unsupported API ${name}.`), undefined);\n            return;\n        }\n        const { minVersion, maxVersion } = api;\n        // Starting from the highest version, we need to find the first one that is supported\n        for (let i = maxVersion; i >= minVersion; i--) {\n            const apiName = (name.slice(0, 1).toLowerCase() + name.slice(1) + 'V' + i);\n            const candidate = apis[apiName];\n            if (candidate) {\n                callback(null, candidate.api);\n                return;\n            }\n        }\n        callback(new UnsupportedApiError(`No usable implementation found for API ${name}.`, { minVersion, maxVersion }), undefined);\n    }\n    [kGetConnection](broker, callback) {\n        this[kConnections].get(broker, callback);\n    }\n    [kGetBootstrapConnection](callback) {\n        this[kConnections].getFirstAvailable(this[kBootstrapBrokers], callback);\n    }\n    [kValidateOptions](target, validator, targetName, throwOnErrors = true) {\n        if (!this[kOptions].strict) {\n            return null;\n        }\n        const valid = validator(target);\n        if (!valid) {\n            const error = new UserError(this[kFormatValidationErrors](validator, targetName));\n            if (throwOnErrors) {\n                throw error;\n            }\n            return error;\n        }\n        return null;\n    }\n    /* c8 ignore next 3 -- This is a private API used to debug during development */\n    [kInspect](...args) {\n        debugDump(`client:${this[kInstance]}`, ...args);\n    }\n    [kFormatValidationErrors](validator, targetName) {\n        return ajv.errorsText(validator.errors, { dataVar: '$dataVar$' }).replaceAll('$dataVar$', targetName) + '.';\n    }\n    [kAfterCreate](type) {\n        this[kClientType] = type;\n        notifyCreation(type, this);\n    }\n    #forwardEvents(source, events) {\n        for (const event of events) {\n            source.on(event, (...args) => {\n                this.emitWithDebug('client', `broker:${event}`, ...args);\n            });\n        }\n    }\n}\n", "// IMPORTANT: Never export this file in index.ts - The symbols are meant to be private\nexport const kInstance = Symbol('plt.kafka.base.instance');\nexport const kRefreshOffsetsAndFetch = Symbol('plt.kafka.messagesStream.refreshOffsetsAndFetch');\nexport const kAutocommit = Symbol('plt.kafka.messagesStream.autocommit');\n", "export const name = \"@platformatic/kafka\";\nexport const version = \"1.20.0\";\n", "import { allowedSASLMechanisms } from \"../../apis/enumerations.js\";\nimport { ajv } from \"../../utils.js\";\nimport { version } from \"../../version.js\";\n// Note: clientSoftwareName can only contain alphanumeric characters, hyphens and dots\nexport const clientSoftwareName = 'platformatic-kafka';\nexport const clientSoftwareVersion = version;\nexport const idProperty = { type: 'string', pattern: '^\\\\S+$' };\nexport const topicWithPartitionAndOffsetProperties = {\n    topic: idProperty,\n    partition: { type: 'number', minimum: 0 },\n    offset: { bigint: true }\n};\nexport const baseOptionsSchema = {\n    type: 'object',\n    properties: {\n        clientId: idProperty,\n        bootstrapBrokers: {\n            oneOf: [\n                { type: 'array', items: { type: 'string' } },\n                {\n                    type: 'array',\n                    items: {\n                        type: 'object',\n                        properties: { host: { type: 'string' }, port: { type: 'number', minimum: 0, maximum: 65535 } }\n                    }\n                }\n            ]\n        },\n        timeout: { type: 'number', minimum: 0 },\n        connectTimeout: { type: 'number', minimum: 0 },\n        retries: { oneOf: [{ type: 'number', minimum: 0 }, { type: 'boolean' }] },\n        retryDelay: { type: 'number', minimum: 0 },\n        maxInflights: { type: 'number', minimum: 0 },\n        handleBackPressure: { type: 'boolean', default: false },\n        tls: { type: 'object', additionalProperties: true }, // No validation as they come from Node.js\n        tlsServerName: { oneOf: [{ type: 'boolean' }, { type: 'string' }] },\n        sasl: {\n            type: 'object',\n            properties: {\n                mechanism: { type: 'string', enum: allowedSASLMechanisms },\n                username: { oneOf: [{ type: 'string' }, { function: true }] },\n                password: { oneOf: [{ type: 'string' }, { function: true }] },\n                token: { oneOf: [{ type: 'string' }, { function: true }] },\n                authBytesValidator: { function: true }\n            },\n            required: ['mechanism'],\n            additionalProperties: false\n        },\n        metadataMaxAge: { type: 'number', minimum: 0 },\n        autocreateTopics: { type: 'boolean' },\n        strict: { type: 'boolean' },\n        metrics: { type: 'object', additionalProperties: true }\n    },\n    required: ['clientId', 'bootstrapBrokers'],\n    additionalProperties: true\n};\nexport const metadataOptionsSchema = {\n    type: 'object',\n    properties: {\n        topics: { type: 'array', items: idProperty },\n        autocreateTopics: { type: 'boolean' },\n        forceUpdate: { type: 'boolean' },\n        metadataMaxAge: { type: 'number', minimum: 0 }\n    },\n    required: ['topics'],\n    additionalProperties: false\n};\nexport const baseOptionsValidator = ajv.compile(baseOptionsSchema);\nexport const metadataOptionsValidator = ajv.compile(metadataOptionsSchema);\nexport const defaultPort = 9092;\nexport const defaultBaseOptions = {\n    connectTimeout: 5000,\n    maxInflights: 5,\n    timeout: 5000,\n    retries: 3,\n    retryDelay: 1000,\n    metadataMaxAge: 5000, // 5 seconds\n    autocreateTopics: false,\n    strict: false\n};\n", "import { ClientQuotaMatchTypes, ConsumerGroupStates } from \"../../apis/enumerations.js\";\nimport { ajv, listErrorMessage } from \"../../utils.js\";\nimport { idProperty } from \"../base/options.js\";\nexport const groupsProperties = {\n    groups: {\n        type: 'array',\n        items: idProperty,\n        minItems: 1\n    }\n};\nexport const createTopicOptionsSchema = {\n    type: 'object',\n    properties: {\n        topics: { type: 'array', items: idProperty },\n        partitions: { type: 'number' },\n        replicas: { type: 'number' },\n        assignments: {\n            type: 'array',\n            items: {\n                type: 'object',\n                properties: {\n                    partition: { type: 'number', minimum: 0 },\n                    brokers: { type: 'array', items: { type: 'number' }, minItems: 1 }\n                },\n                required: ['partition', 'brokers'],\n                additionalProperties: false\n            },\n            minItems: 1\n        }\n    },\n    required: ['topics'],\n    additionalProperties: false\n};\nexport const listTopicOptionsSchema = {\n    type: 'object',\n    properties: {\n        includeInternals: { type: 'boolean', default: false }\n    },\n    additionalProperties: false\n};\nexport const deleteTopicOptionsSchema = {\n    type: 'object',\n    properties: {\n        topics: { type: 'array', items: idProperty }\n    },\n    required: ['topics'],\n    additionalProperties: false\n};\nexport const listGroupsOptionsSchema = {\n    type: 'object',\n    properties: {\n        states: {\n            type: 'array',\n            items: {\n                type: 'string',\n                enumeration: {\n                    allowed: ConsumerGroupStates,\n                    errorMessage: listErrorMessage(ConsumerGroupStates)\n                }\n            },\n            minItems: 0\n        },\n        types: {\n            type: 'array',\n            items: idProperty,\n            minItems: 0\n        }\n    },\n    additionalProperties: false\n};\nexport const describeGroupsOptionsSchema = {\n    type: 'object',\n    properties: {\n        ...groupsProperties,\n        includeAuthorizedOperations: { type: 'boolean' }\n    },\n    required: ['groups'],\n    additionalProperties: false\n};\nexport const deleteGroupsOptionsSchema = {\n    type: 'object',\n    properties: groupsProperties,\n    required: ['groups'],\n    additionalProperties: false\n};\nexport const describeClientQuotasOptionsSchema = {\n    type: 'object',\n    properties: {\n        components: {\n            type: 'array',\n            items: {\n                type: 'object',\n                properties: {\n                    entityType: { type: 'string', minLength: 1 },\n                    matchType: { type: 'number', enum: Object.values(ClientQuotaMatchTypes) },\n                    match: { type: 'string' }\n                },\n                required: ['entityType', 'matchType'],\n                additionalProperties: false\n            },\n            minItems: 1\n        },\n        strict: { type: 'boolean' }\n    },\n    required: ['components'],\n    additionalProperties: false\n};\nexport const alterClientQuotasOptionsSchema = {\n    type: 'object',\n    properties: {\n        entries: {\n            type: 'array',\n            items: {\n                type: 'object',\n                properties: {\n                    entities: {\n                        type: 'array',\n                        items: {\n                            type: 'object',\n                            properties: {\n                                entityType: { type: 'string', minLength: 1 },\n                                entityName: { type: ['string', 'null'] }\n                            },\n                            required: ['entityType'],\n                            additionalProperties: false\n                        },\n                        minItems: 1\n                    },\n                    ops: {\n                        type: 'array',\n                        items: {\n                            oneOf: [\n                                {\n                                    type: 'object',\n                                    properties: {\n                                        key: { type: 'string', minLength: 1 },\n                                        value: { type: 'number' },\n                                        remove: { type: 'boolean', const: false }\n                                    },\n                                    required: ['key', 'value', 'remove'],\n                                    additionalProperties: false\n                                },\n                                {\n                                    type: 'object',\n                                    properties: {\n                                        key: { type: 'string', minLength: 1 },\n                                        remove: { type: 'boolean', const: true }\n                                    },\n                                    required: ['key', 'remove'],\n                                    additionalProperties: false\n                                }\n                            ]\n                        },\n                        minItems: 1\n                    }\n                },\n                required: ['entities', 'ops'],\n                additionalProperties: false\n            },\n            minItems: 1\n        },\n        validateOnly: { type: 'boolean' }\n    },\n    required: ['entries'],\n    additionalProperties: false\n};\nexport const describeLogDirsOptionsSchema = {\n    type: 'object',\n    properties: {\n        topics: {\n            type: 'array',\n            items: {\n                type: 'object',\n                properties: {\n                    name: { type: 'string', minLength: 1 },\n                    partitions: {\n                        type: 'array',\n                        items: { type: 'number', minimum: 0 },\n                        minItems: 1\n                    }\n                },\n                required: ['name', 'partitions'],\n                additionalProperties: false\n            },\n            minItems: 1\n        }\n    },\n    required: ['topics'],\n    additionalProperties: false\n};\nexport const createTopicsOptionsValidator = ajv.compile(createTopicOptionsSchema);\nexport const listTopicsOptionsValidator = ajv.compile(listTopicOptionsSchema);\nexport const deleteTopicsOptionsValidator = ajv.compile(deleteTopicOptionsSchema);\nexport const listGroupsOptionsValidator = ajv.compile(listGroupsOptionsSchema);\nexport const describeGroupsOptionsValidator = ajv.compile(describeGroupsOptionsSchema);\nexport const deleteGroupsOptionsValidator = ajv.compile(deleteGroupsOptionsSchema);\nexport const describeClientQuotasOptionsValidator = ajv.compile(describeClientQuotasOptionsSchema);\nexport const alterClientQuotasOptionsValidator = ajv.compile(alterClientQuotasOptionsSchema);\nexport const describeLogDirsOptionsValidator = ajv.compile(describeLogDirsOptionsSchema);\n", "import { createPromisifiedCallback, kCallbackPromise, runConcurrentCallbacks } from \"../../apis/callbacks.js\";\nimport { FindCoordinatorKeyTypes } from \"../../apis/enumerations.js\";\nimport { adminClientQuotasChannel, adminGroupsChannel, adminLogDirsChannel, adminTopicsChannel, createDiagnosticContext } from \"../../diagnostic.js\";\nimport { MultipleErrors } from \"../../errors.js\";\nimport { Reader } from \"../../protocol/reader.js\";\nimport { Base, kAfterCreate, kCheckNotClosed, kGetApi, kGetBootstrapConnection, kGetConnection, kMetadata, kOptions, kPerformDeduplicated, kPerformWithRetry, kValidateOptions } from \"../base/base.js\";\nimport { alterClientQuotasOptionsValidator, createTopicsOptionsValidator, deleteGroupsOptionsValidator, deleteTopicsOptionsValidator, describeClientQuotasOptionsValidator, describeGroupsOptionsValidator, describeLogDirsOptionsValidator, listGroupsOptionsValidator, listTopicsOptionsValidator } from \"./options.js\";\nexport class Admin extends Base {\n    constructor(options) {\n        super(options);\n        this[kAfterCreate]('admin');\n    }\n    listTopics(options, callback) {\n        if (!callback) {\n            callback = createPromisifiedCallback();\n        }\n        if (this[kCheckNotClosed](callback)) {\n            return callback[kCallbackPromise];\n        }\n        if (!options) {\n            options = {};\n        }\n        const validationError = this[kValidateOptions](options, listTopicsOptionsValidator, '/options', false);\n        if (validationError) {\n            callback(validationError, undefined);\n            return callback[kCallbackPromise];\n        }\n        adminTopicsChannel.traceCallback(this.#listTopics, 1, createDiagnosticContext({ client: this, operation: 'listTopics', options }), this, options, callback);\n        return callback[kCallbackPromise];\n    }\n    createTopics(options, callback) {\n        if (!callback) {\n            callback = createPromisifiedCallback();\n        }\n        if (this[kCheckNotClosed](callback)) {\n            return callback[kCallbackPromise];\n        }\n        const validationError = this[kValidateOptions](options, createTopicsOptionsValidator, '/options', false);\n        if (validationError) {\n            callback(validationError, undefined);\n            return callback[kCallbackPromise];\n        }\n        adminTopicsChannel.traceCallback(this.#createTopics, 1, createDiagnosticContext({ client: this, operation: 'createTopics', options }), this, options, callback);\n        return callback[kCallbackPromise];\n    }\n    deleteTopics(options, callback) {\n        if (!callback) {\n            callback = createPromisifiedCallback();\n        }\n        if (this[kCheckNotClosed](callback)) {\n            return callback[kCallbackPromise];\n        }\n        const validationError = this[kValidateOptions](options, deleteTopicsOptionsValidator, '/options', false);\n        if (validationError) {\n            callback(validationError, undefined);\n            return callback[kCallbackPromise];\n        }\n        adminTopicsChannel.traceCallback(this.#deleteTopics, 1, createDiagnosticContext({ client: this, operation: 'deleteTopics', options }), this, options, callback);\n        return callback[kCallbackPromise];\n    }\n    listGroups(options, callback) {\n        if (!callback) {\n            callback = createPromisifiedCallback();\n        }\n        if (this[kCheckNotClosed](callback)) {\n            return callback[kCallbackPromise];\n        }\n        if (!options) {\n            options = {};\n        }\n        const validationError = this[kValidateOptions](options, listGroupsOptionsValidator, '/options', false);\n        if (validationError) {\n            callback(validationError, undefined);\n            return callback[kCallbackPromise];\n        }\n        options.types ??= ['classic'];\n        adminGroupsChannel.traceCallback(this.#listGroups, 1, createDiagnosticContext({ client: this, operation: 'listGroups', options }), this, options, callback);\n        return callback[kCallbackPromise];\n    }\n    describeGroups(options, callback) {\n        if (!callback) {\n            callback = createPromisifiedCallback();\n        }\n        if (this[kCheckNotClosed](callback)) {\n            return callback[kCallbackPromise];\n        }\n        const validationError = this[kValidateOptions](options, describeGroupsOptionsValidator, '/options', false);\n        if (validationError) {\n            callback(validationError, undefined);\n            return callback[kCallbackPromise];\n        }\n        adminGroupsChannel.traceCallback(this.#describeGroups, 1, createDiagnosticContext({ client: this, operation: 'describeGroups', options }), this, options, callback);\n        return callback[kCallbackPromise];\n    }\n    deleteGroups(options, callback) {\n        if (!callback) {\n            callback = createPromisifiedCallback();\n        }\n        if (this[kCheckNotClosed](callback)) {\n            return callback[kCallbackPromise];\n        }\n        const validationError = this[kValidateOptions](options, deleteGroupsOptionsValidator, '/options', false);\n        if (validationError) {\n            callback(validationError, undefined);\n            return callback[kCallbackPromise];\n        }\n        adminGroupsChannel.traceCallback(this.#deleteGroups, 1, createDiagnosticContext({ client: this, operation: 'deleteGroups', options }), this, options, callback);\n        return callback[kCallbackPromise];\n    }\n    describeClientQuotas(options, callback) {\n        if (!callback) {\n            callback = createPromisifiedCallback();\n        }\n        if (this[kCheckNotClosed](callback)) {\n            return callback[kCallbackPromise];\n        }\n        const validationError = this[kValidateOptions](options, describeClientQuotasOptionsValidator, '/options', false);\n        if (validationError) {\n            callback(validationError, undefined);\n            return callback[kCallbackPromise];\n        }\n        adminClientQuotasChannel.traceCallback(this.#describeClientQuotas, 1, createDiagnosticContext({ client: this, operation: 'describeClientQuotas', options }), this, options, callback);\n        return callback[kCallbackPromise];\n    }\n    alterClientQuotas(options, callback) {\n        if (!callback) {\n            callback = createPromisifiedCallback();\n        }\n        if (this[kCheckNotClosed](callback)) {\n            return callback[kCallbackPromise];\n        }\n        const validationError = this[kValidateOptions](options, alterClientQuotasOptionsValidator, '/options', false);\n        if (validationError) {\n            callback(validationError, undefined);\n            return callback[kCallbackPromise];\n        }\n        adminClientQuotasChannel.traceCallback(this.#alterClientQuotas, 1, createDiagnosticContext({ client: this, operation: 'alterClientQuotas', options }), this, options, callback);\n        return callback[kCallbackPromise];\n    }\n    describeLogDirs(options, callback) {\n        if (!callback) {\n            callback = createPromisifiedCallback();\n        }\n        /* c8 ignore next 3 - Hard to test */\n        if (this[kCheckNotClosed](callback)) {\n            return callback[kCallbackPromise];\n        }\n        const validationError = this[kValidateOptions](options, describeLogDirsOptionsValidator, '/options', false);\n        if (validationError) {\n            callback(validationError, undefined);\n            return callback[kCallbackPromise];\n        }\n        adminLogDirsChannel.traceCallback(this.#describeLogDirs, 1, createDiagnosticContext({ client: this, operation: 'describeLogDirs', options }), this, options, callback);\n        return callback[kCallbackPromise];\n    }\n    #listTopics(options, callback) {\n        const includeInternals = options.includeInternals ?? false;\n        this[kPerformDeduplicated]('metadata', deduplicateCallback => {\n            this[kPerformWithRetry]('metadata', retryCallback => {\n                this[kGetBootstrapConnection]((error, connection) => {\n                    if (error) {\n                        retryCallback(error, undefined);\n                        return;\n                    }\n                    this[kGetApi]('Metadata', (error, api) => {\n                        if (error) {\n                            retryCallback(error, undefined);\n                            return;\n                        }\n                        api(connection, null, false, false, retryCallback);\n                    });\n                });\n            }, (error, metadata) => {\n                if (error) {\n                    deduplicateCallback(error, undefined);\n                    return;\n                }\n                const topics = new Set();\n                for (const { name, isInternal } of metadata.topics) {\n                    /* c8 ignore next 3 - Sometimes internal topics might be returned by Kafka */\n                    if (isInternal && !includeInternals) {\n                        continue;\n                    }\n                    topics.add(name);\n                }\n                deduplicateCallback(null, Array.from(topics).sort());\n            }, 0);\n        }, callback);\n    }\n    #createTopics(options, callback) {\n        const numPartitions = options.partitions ?? 1;\n        const replicationFactor = options.replicas ?? 1;\n        const assignments = [];\n        const configs = options.configs ?? [];\n        for (const { partition, brokers } of options.assignments ?? []) {\n            assignments.push({ partitionIndex: partition, brokerIds: brokers });\n        }\n        const requests = [];\n        for (const topic of options.topics) {\n            requests.push({\n                name: topic,\n                numPartitions,\n                replicationFactor,\n                assignments,\n                configs\n            });\n        }\n        this[kPerformDeduplicated]('createTopics', deduplicateCallback => {\n            this[kPerformWithRetry]('createTopics', retryCallback => {\n                this[kGetBootstrapConnection]((error, connection) => {\n                    if (error) {\n                        retryCallback(error, undefined);\n                        return;\n                    }\n                    this[kGetApi]('CreateTopics', (error, api) => {\n                        if (error) {\n                            retryCallback(error, undefined);\n                            return;\n                        }\n                        api(connection, requests, this[kOptions].timeout, false, retryCallback);\n                    });\n                });\n            }, (error, response) => {\n                if (error) {\n                    deduplicateCallback(error, undefined);\n                    return;\n                }\n                const created = [];\n                for (const { name, topicId: id, numPartitions: partitions, replicationFactor: replicas, configs } of response.topics) {\n                    const configuration = {};\n                    for (const { name, value } of configs) {\n                        configuration[name] = value;\n                    }\n                    created.push({ id, name, partitions, replicas, configuration });\n                }\n                deduplicateCallback(null, created);\n            }, 0);\n        }, callback);\n    }\n    #deleteTopics(options, callback) {\n        this[kPerformDeduplicated]('deleteTopics', deduplicateCallback => {\n            this[kPerformWithRetry]('deleteTopics', retryCallback => {\n                this[kGetBootstrapConnection]((error, connection) => {\n                    if (error) {\n                        retryCallback(error, undefined);\n                        return;\n                    }\n                    const requests = [];\n                    for (const topic of options.topics) {\n                        requests.push({ name: topic });\n                    }\n                    this[kGetApi]('DeleteTopics', (error, api) => {\n                        if (error) {\n                            retryCallback(error, undefined);\n                            return;\n                        }\n                        api(connection, requests, this[kOptions].timeout, retryCallback);\n                    });\n                });\n            }, deduplicateCallback, 0);\n        }, error => callback(error));\n    }\n    #listGroups(options, callback) {\n        // Find all the brokers in the cluster\n        this[kMetadata]({ topics: [] }, (error, metadata) => {\n            if (error) {\n                callback(error, undefined);\n                return;\n            }\n            runConcurrentCallbacks('Listing groups failed.', metadata.brokers, ([, broker], concurrentCallback) => {\n                this[kGetConnection](broker, (error, connection) => {\n                    if (error) {\n                        concurrentCallback(error, undefined);\n                        return;\n                    }\n                    this[kPerformWithRetry]('listGroups', retryCallback => {\n                        this[kGetApi]('ListGroups', (error, api) => {\n                            if (error) {\n                                retryCallback(error, undefined);\n                                return;\n                            }\n                            /* c8 ignore next 5 */\n                            if (api.version === 4) {\n                                api(connection, options.states ?? [], retryCallback);\n                            }\n                            else {\n                                api(connection, options.states ?? [], options.types, retryCallback);\n                            }\n                        });\n                    }, concurrentCallback, 0);\n                });\n            }, (error, results) => {\n                if (error) {\n                    callback(error, undefined);\n                    return;\n                }\n                const groups = new Map();\n                for (const result of results) {\n                    for (const raw of result.groups) {\n                        groups.set(raw.groupId, {\n                            id: raw.groupId,\n                            state: raw.groupState.toUpperCase(),\n                            groupType: raw.groupType,\n                            protocolType: raw.protocolType\n                        });\n                    }\n                }\n                callback(null, groups);\n            });\n        });\n    }\n    #describeGroups(options, callback) {\n        this[kMetadata]({ topics: [] }, (error, metadata) => {\n            if (error) {\n                callback(error, undefined);\n                return;\n            }\n            this.#findGroupCoordinator(options.groups, (error, response) => {\n                if (error) {\n                    callback(error, undefined);\n                    return;\n                }\n                // Group the groups by coordinator\n                const coordinators = new Map();\n                for (const { key: group, nodeId: node } of response.coordinators) {\n                    let coordinator = coordinators.get(node);\n                    if (!coordinator) {\n                        coordinator = [];\n                        coordinators.set(node, coordinator);\n                    }\n                    coordinator.push(group);\n                }\n                runConcurrentCallbacks('Describing groups failed.', coordinators, ([node, groups], concurrentCallback) => {\n                    this[kGetConnection](metadata.brokers.get(node), (error, connection) => {\n                        if (error) {\n                            concurrentCallback(error, undefined);\n                            return;\n                        }\n                        this[kPerformWithRetry]('describeGroups', retryCallback => {\n                            this[kGetApi]('DescribeGroups', (error, api) => {\n                                if (error) {\n                                    retryCallback(error, undefined);\n                                    return;\n                                }\n                                api(connection, groups, options.includeAuthorizedOperations ?? false, retryCallback);\n                            });\n                        }, concurrentCallback, 0);\n                    });\n                }, (error, results) => {\n                    if (error) {\n                        callback(error, undefined);\n                        return;\n                    }\n                    const groups = new Map();\n                    for (const result of results) {\n                        for (const raw of result.groups) {\n                            const group = {\n                                id: raw.groupId,\n                                state: raw.groupState.toUpperCase(),\n                                protocolType: raw.protocolType,\n                                protocol: raw.protocolData,\n                                members: new Map(),\n                                authorizedOperations: raw.authorizedOperations\n                            };\n                            for (const member of raw.members) {\n                                const reader = Reader.from(member.memberMetadata);\n                                let memberMetadata;\n                                let memberAssignments;\n                                if (reader.remaining > 0) {\n                                    memberMetadata = {\n                                        version: reader.readInt16(),\n                                        topics: reader.readArray(r => r.readString(false), false, false),\n                                        metadata: reader.readBytes(false)\n                                    };\n                                    reader.reset(member.memberAssignment);\n                                    reader.skip(2); // Ignore Version information\n                                    memberAssignments = reader.readMap(r => {\n                                        const topic = r.readString(false);\n                                        return [topic, { topic, partitions: reader.readArray(r => r.readInt32(), false, false) }];\n                                    }, false, false);\n                                    reader.readBytes(); // Ignore the user data\n                                }\n                                group.members.set(member.memberId, {\n                                    id: member.memberId,\n                                    groupInstanceId: member.groupInstanceId,\n                                    clientId: member.clientId,\n                                    clientHost: member.clientHost,\n                                    metadata: memberMetadata,\n                                    assignments: memberAssignments\n                                });\n                            }\n                            groups.set(group.id, group);\n                        }\n                    }\n                    callback(null, groups);\n                });\n            });\n        });\n    }\n    #deleteGroups(options, callback) {\n        this[kMetadata]({ topics: [] }, (error, metadata) => {\n            if (error) {\n                callback(error);\n                return;\n            }\n            this.#findGroupCoordinator(options.groups, (error, response) => {\n                if (error) {\n                    callback(error);\n                    return;\n                }\n                // Group the groups by coordinator\n                const coordinators = new Map();\n                for (const { key: group, nodeId: node } of response.coordinators) {\n                    let coordinator = coordinators.get(node);\n                    if (!coordinator) {\n                        coordinator = [];\n                        coordinators.set(node, coordinator);\n                    }\n                    coordinator.push(group);\n                }\n                runConcurrentCallbacks('Deleting groups failed.', coordinators, ([node, groups], concurrentCallback) => {\n                    this[kGetConnection](metadata.brokers.get(node), (error, connection) => {\n                        if (error) {\n                            concurrentCallback(error, undefined);\n                            return;\n                        }\n                        this[kPerformWithRetry]('deleteGroups', retryCallback => {\n                            this[kGetApi]('DeleteGroups', (error, api) => {\n                                if (error) {\n                                    retryCallback(error, undefined);\n                                    return;\n                                }\n                                api(connection, groups, retryCallback);\n                            });\n                        }, concurrentCallback, 0);\n                    });\n                }, error => callback(error));\n            });\n        });\n    }\n    #findGroupCoordinator(groups, callback) {\n        this[kPerformWithRetry]('findGroupCoordinator', retryCallback => {\n            this[kGetBootstrapConnection]((error, connection) => {\n                if (error) {\n                    retryCallback(error, undefined);\n                    return;\n                }\n                this[kGetApi]('FindCoordinator', (error, api) => {\n                    if (error) {\n                        retryCallback(error, undefined);\n                        return;\n                    }\n                    api(connection, FindCoordinatorKeyTypes.GROUP, groups, retryCallback);\n                });\n            });\n        }, (error, response) => {\n            if (error) {\n                callback(error, undefined);\n                return;\n            }\n            callback(null, response);\n        }, 0);\n    }\n    #describeClientQuotas(options, callback) {\n        this[kPerformWithRetry]('describeClientQuotas', retryCallback => {\n            this[kGetBootstrapConnection]((error, connection) => {\n                if (error) {\n                    retryCallback(error, undefined);\n                    return;\n                }\n                this[kGetApi]('DescribeClientQuotas', (error, api) => {\n                    if (error) {\n                        retryCallback(error, undefined);\n                        return;\n                    }\n                    api(connection, options.components, options.strict ?? false, retryCallback);\n                });\n            });\n        }, (error, response) => {\n            if (error) {\n                callback(new MultipleErrors('Describing client quotas failed.', [error]), undefined);\n                return;\n            }\n            callback(null, response.entries);\n        }, 0);\n    }\n    #alterClientQuotas(options, callback) {\n        this[kPerformWithRetry]('alterClientQuotas', retryCallback => {\n            this[kGetBootstrapConnection]((error, connection) => {\n                if (error) {\n                    retryCallback(error, undefined);\n                    return;\n                }\n                this[kGetApi]('AlterClientQuotas', (error, api) => {\n                    if (error) {\n                        retryCallback(error, undefined);\n                        return;\n                    }\n                    api(connection, options.entries, options.validateOnly ?? false, retryCallback);\n                });\n            });\n        }, (error, response) => {\n            if (error) {\n                callback(new MultipleErrors('Altering client quotas failed.', [error]), undefined);\n                return;\n            }\n            callback(null, response.entries);\n        }, 0);\n    }\n    #describeLogDirs(options, callback) {\n        this[kMetadata]({ topics: [] }, (error, metadata) => {\n            /* c8 ignore next 4 - Hard to test */\n            if (error) {\n                callback(error, undefined);\n                return;\n            }\n            runConcurrentCallbacks('Describing log dirs failed.', metadata.brokers, ([id, broker], concurrentCallback) => {\n                this[kGetConnection](broker, (error, connection) => {\n                    if (error) {\n                        concurrentCallback(error, undefined);\n                        return;\n                    }\n                    this[kPerformWithRetry]('describeLogDirs', retryCallback => {\n                        this[kGetApi]('DescribeLogDirs', (error, api) => {\n                            if (error) {\n                                retryCallback(error, undefined);\n                                return;\n                            }\n                            api(connection, options.topics, retryCallback);\n                        });\n                    }, (error, response) => {\n                        if (error) {\n                            concurrentCallback(error, undefined);\n                            return;\n                        }\n                        concurrentCallback(null, {\n                            broker: id,\n                            throttleTimeMs: response.throttleTimeMs,\n                            results: response.results.map(result => ({\n                                logDir: result.logDir,\n                                topics: result.topics,\n                                totalBytes: result.totalBytes,\n                                usableBytes: result.usableBytes\n                            }))\n                        });\n                    }, 0);\n                });\n            }, callback);\n        });\n    }\n}\n", "// Interfaces to make the package compatible with prom-client\nexport function ensureMetric(metrics, type, name, help) {\n    let metric = metrics.registry.getSingleMetric(name);\n    const labels = Object.keys(metrics.labels ?? {});\n    if (!metric) {\n        metric = new metrics.client[type]({\n            name,\n            help,\n            registers: [metrics.registry],\n            labelNames: labels\n        });\n    }\n    else {\n        // @ts-expect-error Overriding internal API\n        metric.labelNames = metric.sortedLabelNames = Array.from(new Set([...metric.labelNames, ...labels])).sort();\n    }\n    return metric.labels(metrics.labels ?? {});\n}\n", "import { Readable } from 'node:stream';\nimport { createPromisifiedCallback, kCallbackPromise, noopCallback } from \"../../apis/callbacks.js\";\nimport { ListOffsetTimestamps } from \"../../apis/enumerations.js\";\nimport { consumerReceivesChannel, createDiagnosticContext, notifyCreation } from \"../../diagnostic.js\";\nimport { UserError } from \"../../errors.js\";\nimport { kAutocommit, kInstance, kRefreshOffsetsAndFetch } from \"../../symbols.js\";\nimport { kInspect, kPrometheus } from \"../base/base.js\";\nimport { ensureMetric } from \"../metrics.js\";\nimport { defaultConsumerOptions } from \"./options.js\";\nimport { MessagesStreamFallbackModes, MessagesStreamModes } from \"./types.js\";\n// Don't move this function as being in the same file will enable V8 to remove.\n// For futher info, ask Matteo.\n/* c8 ignore next 3 - Fallback deserializer, nothing to really test */\nexport function noopDeserializer(data) {\n    return data;\n}\nexport function defaultCorruptedMessageHandler() {\n    return true;\n}\nlet currentInstance = 0;\nexport class MessagesStream extends Readable {\n    #consumer;\n    #mode;\n    #fallbackMode;\n    #paused;\n    #fetches;\n    #maxFetches;\n    #options;\n    #topics;\n    #offsetsToFetch;\n    #offsetsToCommit;\n    #offsetsCommitted;\n    #inflightNodes;\n    #keyDeserializer;\n    #valueDeserializer;\n    #headerKeyDeserializer;\n    #headerValueDeserializer;\n    #autocommitEnabled;\n    #autocommitInterval;\n    #autocommitInflight;\n    #shouldClose;\n    #closeCallbacks;\n    #metricsConsumedMessages;\n    #corruptedMessageHandler;\n    [kInstance];\n    constructor(consumer, options) {\n        const { autocommit, mode, fallbackMode, maxFetches, offsets, deserializers, onCorruptedMessage, \n        // The options below are only destructured to avoid being part of structuredClone below\n        partitionAssigner: _partitionAssigner, ...otherOptions } = options;\n        if (offsets && mode !== MessagesStreamModes.MANUAL) {\n            throw new UserError('Cannot specify offsets when the stream mode is not MANUAL.');\n        }\n        if (!offsets && mode === MessagesStreamModes.MANUAL) {\n            throw new UserError('Must specify offsets when the stream mode is MANUAL.');\n        }\n        /* c8 ignore next - Unless is initialized directly, highWaterMark is always defined */\n        super({\n            objectMode: true,\n            highWaterMark: maxFetches ?? options.highWaterMark ?? defaultConsumerOptions.highWaterMark\n        });\n        this[kInstance] = currentInstance++;\n        this.#consumer = consumer;\n        this.#mode = mode ?? MessagesStreamModes.LATEST;\n        this.#fallbackMode = fallbackMode ?? MessagesStreamFallbackModes.LATEST;\n        this.#offsetsToCommit = new Map();\n        this.#offsetsCommitted = new Map();\n        this.#paused = false;\n        this.#fetches = 0;\n        this.#maxFetches = maxFetches ?? 0;\n        this.#topics = structuredClone(options.topics);\n        this.#inflightNodes = new Set();\n        this.#keyDeserializer = deserializers?.key ?? noopDeserializer;\n        this.#valueDeserializer = deserializers?.value ?? noopDeserializer;\n        this.#headerKeyDeserializer = deserializers?.headerKey ?? noopDeserializer;\n        this.#headerValueDeserializer = deserializers?.headerValue ?? noopDeserializer;\n        this.#autocommitEnabled = !!options.autocommit;\n        this.#autocommitInflight = false;\n        this.#shouldClose = false;\n        this.#closeCallbacks = [];\n        this.#corruptedMessageHandler = onCorruptedMessage ?? defaultCorruptedMessageHandler;\n        // Restore offsets\n        this.#offsetsToFetch = new Map();\n        if (offsets) {\n            for (const { topic, partition, offset } of offsets) {\n                this.#offsetsToFetch.set(`${topic}:${partition}`, offset);\n            }\n        }\n        // Clone the rest of the options so the user can never mutate them\n        this.#options = structuredClone(otherOptions);\n        // Start the autocommit interval\n        if (typeof autocommit === 'number' && autocommit > 0) {\n            this.#autocommitInterval = setInterval(this[kAutocommit].bind(this), autocommit);\n        }\n        else {\n            this.#autocommitInterval = null;\n        }\n        // When the consumer joins a group, we need to fetch again as the assignments\n        // will have changed so we may have gone from last  with no assignments to\n        // having some.\n        this.#consumer.on('consumer:group:join', () => {\n            this.#offsetsCommitted.clear();\n            this.#refreshOffsets((error) => {\n                /* c8 ignore next 4 - Hard to test */\n                if (error) {\n                    this.destroy(error);\n                    return;\n                }\n                this.#fetch();\n            });\n        });\n        if (consumer[kPrometheus]) {\n            this.#metricsConsumedMessages = ensureMetric(consumer[kPrometheus], 'Counter', 'kafka_consumed_messages', 'Number of consumed Kafka messages');\n        }\n        notifyCreation('messages-stream', this);\n    }\n    get offsetsToFetch() {\n        return this.#offsetsToFetch;\n    }\n    get offsetsToCommit() {\n        return this.#offsetsToCommit;\n    }\n    get offsetsCommitted() {\n        return this.#offsetsCommitted;\n    }\n    // TODO: This is deprecated alias, remove in future major version\n    get committedOffsets() {\n        return this.#offsetsCommitted;\n    }\n    close(callback) {\n        if (!callback) {\n            callback = createPromisifiedCallback();\n        }\n        if (this.closed || this.destroyed) {\n            callback(null);\n            return callback[kCallbackPromise];\n        }\n        this.#closeCallbacks.push(callback);\n        if (this.#shouldClose) {\n            this.#invokeCloseCallbacks(null);\n            return callback[kCallbackPromise];\n        }\n        this.#shouldClose = true;\n        this.push(null);\n        if (this.#autocommitInterval) {\n            clearInterval(this.#autocommitInterval);\n        }\n        if (this.readableFlowing === null || this.isPaused()) {\n            this.removeAllListeners('data');\n            this.removeAllListeners('readable');\n            this.resume();\n        }\n        /* c8 ignore next 3 - Hard to test */\n        this.once('error', (error) => {\n            callback(error);\n        });\n        this.once('close', () => {\n            // We have offsets that were enqueued to be committed. Perform the operation\n            if (this.#offsetsToCommit.size > 0) {\n                this[kAutocommit]();\n            }\n            // We have offsets that are being committed. These are awaited despite of the force parameters\n            if (this.#autocommitInflight) {\n                this.once('autocommit', error => {\n                    this.#invokeCloseCallbacks(error);\n                });\n                return;\n            }\n            this.#invokeCloseCallbacks(null);\n        });\n        return callback[kCallbackPromise];\n    }\n    isActive() {\n        if (this.#shouldClose || this.closed || this.destroyed) {\n            return false;\n        }\n        return this.#consumer.isActive();\n    }\n    isConnected() {\n        if (this.#shouldClose || this.closed || this.destroyed) {\n            return false;\n        }\n        return this.#consumer.isConnected();\n    }\n    resume() {\n        this.#paused = false;\n        return super.resume();\n    }\n    // We want to track if the stream is paused explicitly by the user, while isPaused from Node.js can also\n    // be true if the stream is paused because there is no consumer.\n    pause() {\n        this.#paused = true;\n        return super.pause();\n    }\n    /* c8 ignore next 3 - Only forwards to Node.js implementation - Inserted here to please Typescript */\n    addListener(event, listener) {\n        return super.addListener(event, listener);\n    }\n    /* c8 ignore next 3 - Only forwards to Node.js implementation - Inserted here to please Typescript */\n    on(event, listener) {\n        return super.on(event, listener);\n    }\n    /* c8 ignore next 3 - Only forwards to Node.js implementation - Inserted here to please Typescript */\n    once(event, listener) {\n        return super.once(event, listener);\n    }\n    /* c8 ignore next 3 - Only forwards to Node.js implementation - Inserted here to please Typescript */\n    prependListener(event, listener) {\n        return super.prependListener(event, listener);\n    }\n    /* c8 ignore next 3 - Only forwards to Node.js implementation - Inserted here to please Typescript */\n    prependOnceListener(event, listener) {\n        return super.prependOnceListener(event, listener);\n    }\n    [Symbol.asyncIterator]() {\n        return super[Symbol.asyncIterator]();\n    }\n    _construct(callback) {\n        this.#refreshOffsets(callback);\n    }\n    _destroy(error, callback) {\n        if (this.#autocommitInterval) {\n            clearInterval(this.#autocommitInterval);\n        }\n        callback(error);\n    }\n    _read() {\n        this.#fetch();\n    }\n    #fetch() {\n        /* c8 ignore next 4 - Hard to test */\n        if (this.#shouldClose || this.closed || this.destroyed) {\n            this.push(null);\n            return;\n        }\n        // No need to fetch if nobody is consuming the data\n        if (this.readableFlowing === null || this.#paused) {\n            return;\n        }\n        this.#consumer.metadata({ topics: this.#consumer.topics.current }, (error, metadata) => {\n            if (error) {\n                this.emit('fetch');\n                // The stream has been closed, ignore any error\n                /* c8 ignore next 4 - Hard to test */\n                if (this.#shouldClose || this.closed || this.destroyed) {\n                    this.push(null);\n                    return;\n                }\n                this.destroy(error);\n                return;\n            }\n            /* c8 ignore next 5 - Hard to test */\n            if (this.#shouldClose || this.closed || this.destroyed) {\n                this.emit('fetch');\n                this.push(null);\n                return;\n            }\n            const requests = new Map();\n            const topicIds = new Map();\n            // Group topic-partitions by the destination broker\n            const requestedOffsets = new Map();\n            for (const topic of this.#topics) {\n                const assignment = this.#assignmentsForTopic(topic);\n                // This consumer has no assignment for the topic, continue\n                if (!assignment) {\n                    continue;\n                }\n                const partitions = assignment.partitions;\n                for (const partition of partitions) {\n                    const leader = metadata.topics.get(topic).partitions[partition].leader;\n                    if (this.#inflightNodes.has(leader)) {\n                        continue;\n                    }\n                    let leaderRequests = requests.get(leader);\n                    if (!leaderRequests) {\n                        leaderRequests = [];\n                        requests.set(leader, leaderRequests);\n                    }\n                    const topicId = metadata.topics.get(topic).id;\n                    topicIds.set(topicId, topic);\n                    const fetchOffset = this.#offsetsToFetch.get(`${topic}:${partition}`);\n                    requestedOffsets.set(`${topic}:${partition}`, fetchOffset);\n                    leaderRequests.push({\n                        topicId,\n                        partitions: [\n                            {\n                                partition,\n                                fetchOffset,\n                                partitionMaxBytes: this.#options.maxBytes,\n                                currentLeaderEpoch: -1,\n                                lastFetchedEpoch: -1\n                            }\n                        ]\n                    });\n                }\n            }\n            for (const [leader, leaderRequests] of requests) {\n                this.#inflightNodes.add(leader);\n                this.#consumer.fetch({ ...this.#options, node: leader, topics: leaderRequests }, (error, response) => {\n                    this.#inflightNodes.delete(leader);\n                    this.emit('fetch');\n                    if (error) {\n                        // The stream has been closed, ignore the error\n                        /* c8 ignore next 4 - Hard to test */\n                        if (this.#shouldClose || this.closed || this.destroyed) {\n                            this.push(null);\n                            return;\n                        }\n                        this.destroy(error);\n                        return;\n                    }\n                    if (this.#shouldClose || this.closed || this.destroyed) {\n                        // When it's the last inflight, we finally close the stream.\n                        // This is done to avoid the user exiting from consmuming metrics like for-await and still see the process up.\n                        if (this.#inflightNodes.size === 0) {\n                            this.push(null);\n                        }\n                        return;\n                    }\n                    this.#pushRecords(metadata, topicIds, response, requestedOffsets);\n                    if (this.#maxFetches > 0 && ++this.#fetches >= this.#maxFetches) {\n                        this.push(null);\n                    }\n                });\n            }\n        });\n    }\n    #pushRecords(metadata, topicIds, response, requestedOffsets) {\n        const autocommit = this.#autocommitEnabled;\n        let canPush = true;\n        const keyDeserializer = this.#keyDeserializer;\n        const valueDeserializer = this.#valueDeserializer;\n        const headerKeyDeserializer = this.#headerKeyDeserializer;\n        const headerValueDeserializer = this.#headerValueDeserializer;\n        let diagnosticContext;\n        // Parse results\n        for (const topicResponse of response.responses) {\n            const topic = topicIds.get(topicResponse.topicId);\n            for (const { records: recordsBatches, partitionIndex: partition } of topicResponse.partitions) {\n                if (!recordsBatches) {\n                    continue;\n                }\n                for (const batch of recordsBatches) {\n                    const firstTimestamp = batch.firstTimestamp;\n                    const firstOffset = batch.firstOffset;\n                    const leaderEpoch = metadata.topics.get(topic).partitions[partition].leaderEpoch;\n                    for (const record of batch.records) {\n                        const offset = batch.firstOffset + BigInt(record.offsetDelta);\n                        if (offset < requestedOffsets.get(`${topic}:${partition}`)) {\n                            // Thi is a duplicate message, ignore it\n                            continue;\n                        }\n                        diagnosticContext = createDiagnosticContext({\n                            client: this.#consumer,\n                            stream: this,\n                            operation: 'receive',\n                            raw: record\n                        });\n                        consumerReceivesChannel.start.publish(diagnosticContext);\n                        const commit = autocommit ? noopCallback : this.#commit.bind(this, topic, partition, offset, leaderEpoch);\n                        try {\n                            const headers = new Map();\n                            for (const [headerKey, headerValue] of record.headers) {\n                                headers.set(headerKeyDeserializer(headerKey), headerValueDeserializer(headerValue));\n                            }\n                            const key = keyDeserializer(record.key, headers);\n                            const value = valueDeserializer(record.value, headers);\n                            this.#metricsConsumedMessages?.inc();\n                            const message = {\n                                key,\n                                value,\n                                headers,\n                                topic,\n                                partition,\n                                timestamp: firstTimestamp + record.timestampDelta,\n                                offset,\n                                commit\n                            };\n                            diagnosticContext.result = message;\n                            consumerReceivesChannel.asyncStart.publish(diagnosticContext);\n                            canPush = this.push(message);\n                            consumerReceivesChannel.asyncEnd.publish(diagnosticContext);\n                        }\n                        catch (error) {\n                            const shouldDestroy = this.#corruptedMessageHandler(record, topic, partition, firstTimestamp, firstOffset, commit);\n                            if (shouldDestroy) {\n                                diagnosticContext.error = error;\n                                consumerReceivesChannel.error.publish(diagnosticContext);\n                                this.destroy(new UserError('Failed to deserialize a message.', { cause: error }));\n                                return;\n                            }\n                        }\n                        finally {\n                            consumerReceivesChannel.end.publish(diagnosticContext);\n                        }\n                    }\n                    if (batch === recordsBatches[recordsBatches.length - 1]) {\n                        // Track the last read offset\n                        const lastOffset = batch.firstOffset + BigInt(batch.lastOffsetDelta);\n                        this.#offsetsToFetch.set(`${topic}:${partition}`, lastOffset + 1n);\n                        // Autocommit if needed\n                        if (autocommit) {\n                            this.#offsetsToCommit.set(`${topic}:${partition}`, { topic, partition, offset: lastOffset, leaderEpoch });\n                        }\n                    }\n                }\n            }\n        }\n        if (this.#autocommitEnabled && !this.#autocommitInterval) {\n            this[kAutocommit]();\n        }\n        if (canPush) {\n            process.nextTick(() => {\n                this.#fetch();\n            });\n        }\n    }\n    #updateCommittedOffset(topic, partition, offset) {\n        const key = `${topic}:${partition}`;\n        const previous = this.#offsetsCommitted.get(key);\n        if (typeof previous === 'undefined' || previous < offset) {\n            this.#offsetsCommitted.set(key, offset);\n        }\n    }\n    // This could optimized to only schedule once per tick on a topic-partition and only commit the latest offset\n    #commit(topic, partition, offset, leaderEpoch, callback) {\n        if (!callback) {\n            callback = createPromisifiedCallback();\n        }\n        this.#consumer.commit({ offsets: [{ topic, partition, offset, leaderEpoch }] }, error => {\n            /* c8 ignore next 4 - Hard to test */\n            if (error) {\n                callback(error);\n                return;\n            }\n            this.#updateCommittedOffset(topic, partition, offset);\n            callback(null);\n        });\n        return callback[kCallbackPromise];\n    }\n    [kAutocommit]() {\n        if (this.#offsetsToCommit.size === 0) {\n            return;\n        }\n        this.#autocommitInflight = true;\n        const offsets = Array.from(this.#offsetsToCommit.values());\n        this.#offsetsToCommit.clear();\n        this.#consumer.commit({ offsets }, error => {\n            this.#autocommitInflight = false;\n            if (error) {\n                this.emit('autocommit', error);\n                this.destroy(error);\n                return;\n            }\n            for (const { topic, partition, offset } of offsets) {\n                this.#updateCommittedOffset(topic, partition, offset);\n            }\n            this.emit('autocommit', null, offsets);\n        });\n    }\n    #refreshOffsets(callback) {\n        /* c8 ignore next 4 - Hard to test */\n        if (this.#topics.length === 0) {\n            callback(null);\n            return;\n        }\n        // List topic offsets\n        this.#consumer.listOffsets({\n            topics: this.#topics,\n            timestamp: this.#mode === MessagesStreamModes.EARLIEST ||\n                (this.#mode !== MessagesStreamModes.LATEST && this.#fallbackMode === MessagesStreamFallbackModes.EARLIEST)\n                ? ListOffsetTimestamps.EARLIEST\n                : ListOffsetTimestamps.LATEST\n        }, (error, offsets) => {\n            if (error) {\n                /* c8 ignore next 4 - Hard to test */\n                if (this.#shouldClose || this.closed || this.destroyed) {\n                    callback(null);\n                    return;\n                }\n                callback(error);\n                return;\n            }\n            if (this.#mode !== MessagesStreamModes.COMMITTED) {\n                this.#assignOffsets(offsets, new Map(), callback);\n                return;\n            }\n            // Now restore group offsets\n            const topics = [];\n            for (const topic of this.#topics) {\n                const assignment = this.#assignmentsForTopic(topic);\n                if (!assignment) {\n                    continue;\n                }\n                topics.push(assignment);\n            }\n            if (!topics.length) {\n                this.#assignOffsets(offsets, new Map(), callback);\n                return;\n            }\n            this.#consumer.listCommittedOffsets({ topics }, (error, commits) => {\n                if (error) {\n                    /* c8 ignore next 4 - Hard to test */\n                    if (this.#shouldClose || this.closed || this.destroyed) {\n                        callback(null);\n                        return;\n                    }\n                    callback(error);\n                    return;\n                }\n                this.#assignOffsets(offsets, commits, callback);\n            });\n        });\n    }\n    [kRefreshOffsetsAndFetch]() {\n        this.#refreshOffsets(() => {\n            this.#fetch();\n        });\n    }\n    #assignOffsets(offsets, commits, callback) {\n        for (const [topic, partitions] of offsets) {\n            for (let i = 0; i < partitions.length; i++) {\n                if (!this.#offsetsToFetch.has(`${topic}:${i}`)) {\n                    this.#offsetsToFetch.set(`${topic}:${i}`, partitions[i]);\n                }\n            }\n        }\n        for (const [topic, partitions] of commits) {\n            for (let i = 0; i < partitions.length; i++) {\n                const offset = partitions[i];\n                if (offset >= 0n) {\n                    this.#offsetsToFetch.set(`${topic}:${i}`, offset + 1n);\n                }\n                else if (this.#fallbackMode === MessagesStreamFallbackModes.FAIL) {\n                    callback(new UserError(`Topic ${topic} has no committed offset on partition ${i} for group ${this.#consumer.groupId}.`, { topic, partition: i, groupId: this.#consumer.groupId }));\n                    return;\n                }\n            }\n        }\n        // Rebuild the list of offsetsCommitted (which is used for consumer lag) out of the offsets to fetch\n        for (const topic of this.#topics) {\n            const assignment = this.#assignmentsForTopic(topic);\n            // This consumer has no assignment for the topic, continue\n            if (!assignment) {\n                continue;\n            }\n            const partitions = assignment.partitions;\n            for (const partition of partitions) {\n                const committed = this.#offsetsToFetch.get(`${topic}:${partition}`);\n                this.#offsetsCommitted.set(`${topic}:${partition}`, committed - 1n);\n            }\n        }\n        this.emit('offsets');\n        callback(null);\n    }\n    #assignmentsForTopic(topic) {\n        return this.#consumer.assignments?.find(assignment => assignment.topic === topic);\n    }\n    #invokeCloseCallbacks(error) {\n        for (const callback of this.#closeCallbacks) {\n            callback(error);\n        }\n        this.#closeCallbacks = [];\n    }\n    /* c8 ignore next 3 - This is a private API used to debug during development */\n    [kInspect](...args) {\n        this.#consumer[kInspect](...args);\n    }\n}\n", "export const MessagesStreamModes = {\n    LATEST: 'latest',\n    EARLIEST: 'earliest',\n    COMMITTED: 'committed',\n    MANUAL: 'manual'\n};\nexport const allowedMessagesStreamModes = Object.values(MessagesStreamModes);\nexport const MessagesStreamFallbackModes = {\n    LATEST: 'latest',\n    EARLIEST: 'earliest',\n    FAIL: 'fail'\n};\nexport const allowedMessagesStreamFallbackModes = Object.values(MessagesStreamFallbackModes);\n", "import { allowedFetchIsolationLevels, allowedGroupProtocols } from \"../../apis/enumerations.js\";\nimport { ajv } from \"../../utils.js\";\nimport { idProperty, topicWithPartitionAndOffsetProperties } from \"../base/options.js\";\nimport { serdeProperties } from \"../serde.js\";\nimport { allowedMessagesStreamFallbackModes, allowedMessagesStreamModes } from \"./types.js\";\nexport const groupOptionsProperties = {\n    sessionTimeout: { type: 'number', minimum: 0 },\n    rebalanceTimeout: { type: 'number', minimum: 0 },\n    heartbeatInterval: { type: 'number', minimum: 0 },\n    groupProtocol: { type: 'string', enum: allowedGroupProtocols },\n    groupRemoteAssignor: { type: 'string' },\n    protocols: {\n        type: 'array',\n        items: {\n            type: 'object',\n            properties: {\n                name: idProperty,\n                version: { type: 'number', minimum: 0 },\n                topics: {\n                    type: 'array',\n                    items: { type: 'string' }\n                },\n                metadata: { oneOf: [{ type: 'string' }, { buffer: true }] }\n            }\n        }\n    },\n    partitionAssigner: { function: true }\n};\nexport const groupOptionsAdditionalValidations = {\n    rebalanceTimeout: {\n        properties: {\n            rebalanceTimeout: {\n                type: 'number',\n                minimum: 0,\n                gteProperty: 'sessionTimeout'\n            }\n        }\n    },\n    heartbeatInterval: {\n        properties: {\n            heartbeatInterval: {\n                type: 'number',\n                minimum: 0,\n                allOf: [\n                    {\n                        lteProperty: 'sessionTimeout'\n                    },\n                    {\n                        lteProperty: 'rebalanceTimeout'\n                    }\n                ]\n            }\n        }\n    }\n};\nexport const consumeOptionsProperties = {\n    autocommit: { oneOf: [{ type: 'boolean' }, { type: 'number', minimum: 100 }] },\n    minBytes: { type: 'number', minimum: 0 },\n    maxBytes: { type: 'number', minimum: 0 },\n    maxWaitTime: { type: 'number', minimum: 0 },\n    isolationLevel: { type: 'string', enum: allowedFetchIsolationLevels },\n    deserializers: serdeProperties,\n    highWaterMark: { type: 'number', minimum: 1 }\n};\nexport const groupOptionsSchema = {\n    type: 'object',\n    properties: groupOptionsProperties,\n    additionalProperties: true // This is needed as we might forward options from consume\n};\nexport const consumeOptionsSchema = {\n    type: 'object',\n    properties: {\n        topics: { type: 'array', items: idProperty },\n        mode: { type: 'string', enum: allowedMessagesStreamModes },\n        fallbackMode: { type: 'string', enum: allowedMessagesStreamFallbackModes },\n        maxFetches: { type: 'number', minimum: 0, default: 0 },\n        offsets: {\n            type: 'array',\n            items: {\n                type: 'object',\n                properties: topicWithPartitionAndOffsetProperties,\n                required: ['topic', 'partition', 'offset'],\n                additionalProperties: false\n            }\n        },\n        onCorruptedMessage: { function: true },\n        ...groupOptionsProperties,\n        ...consumeOptionsProperties\n    },\n    required: ['topics'],\n    additionalProperties: false\n};\nexport const consumerOptionsSchema = {\n    type: 'object',\n    properties: {\n        groupId: idProperty,\n        ...groupOptionsProperties,\n        ...consumeOptionsProperties\n    },\n    required: ['groupId'],\n    additionalProperties: true\n};\nexport const fetchOptionsSchema = {\n    type: 'object',\n    properties: {\n        node: { type: 'number', minimum: 0 },\n        topics: {\n            type: 'array',\n            items: {\n                type: 'object',\n                properties: {\n                    topicId: { type: 'string' },\n                    partitions: {\n                        type: 'array',\n                        items: {\n                            type: 'object',\n                            properties: {\n                                partition: { type: 'integer' },\n                                currentLeaderEpoch: { type: 'integer' },\n                                fetchOffset: { bigint: true },\n                                lastFetchedEpoch: { type: 'integer' },\n                                partitionMaxBytes: { type: 'integer' }\n                            },\n                            required: ['partition', 'currentLeaderEpoch', 'fetchOffset', 'lastFetchedEpoch', 'partitionMaxBytes']\n                        }\n                    }\n                },\n                required: ['topicId', 'partitions']\n            }\n        },\n        ...groupOptionsProperties,\n        ...consumeOptionsProperties\n    },\n    required: ['node', 'topics'],\n    additionalProperties: false\n};\nexport const commitOptionsSchema = {\n    type: 'object',\n    properties: {\n        offsets: {\n            type: 'array',\n            items: {\n                type: 'object',\n                properties: {\n                    ...topicWithPartitionAndOffsetProperties,\n                    leaderEpoch: { type: 'integer' }\n                },\n                required: ['topic', 'partition', 'offset', 'leaderEpoch'],\n                additionalProperties: false\n            }\n        }\n    },\n    required: ['offsets'],\n    additionalProperties: false\n};\nexport const listCommitsOptionsSchema = {\n    type: 'object',\n    properties: {\n        topics: {\n            type: 'array',\n            items: {\n                type: 'object',\n                properties: {\n                    topic: idProperty,\n                    partitions: {\n                        type: 'array',\n                        items: {\n                            type: 'number',\n                            minimum: 0\n                        }\n                    }\n                },\n                required: ['topic', 'partitions'],\n                additionalProperties: false\n            }\n        }\n    },\n    required: ['topics'],\n    additionalProperties: false\n};\nexport const listOffsetsOptionsSchema = {\n    type: 'object',\n    properties: {\n        topics: { type: 'array', items: idProperty },\n        partitions: {\n            type: 'object',\n            additionalProperties: {\n                type: 'array',\n                items: { type: 'number', minimum: 0 }\n            }\n        },\n        isolationLevel: { type: 'string', enum: allowedFetchIsolationLevels },\n        timestamp: { bigint: true }\n    },\n    required: ['topics'],\n    additionalProperties: false\n};\nexport const getLagOptionsSchema = {\n    type: 'object',\n    properties: {\n        topics: { type: 'array', items: idProperty },\n        partitions: {\n            type: 'object',\n            additionalProperties: {\n                type: 'array',\n                items: { type: 'number', minimum: 0 }\n            }\n        }\n    },\n    required: ['topics'],\n    additionalProperties: false\n};\nexport const groupOptionsValidator = ajv.compile({\n    ...groupOptionsSchema,\n    dependentSchemas: groupOptionsAdditionalValidations\n});\nexport const groupIdAndOptionsValidator = ajv.compile({\n    type: 'object',\n    properties: {\n        groupId: idProperty,\n        ...groupOptionsProperties\n    },\n    required: ['groupId'],\n    additionalProperties: true,\n    dependentSchemas: groupOptionsAdditionalValidations\n});\nexport const consumeOptionsValidator = ajv.compile(consumeOptionsSchema);\nexport const consumerOptionsValidator = ajv.compile(consumerOptionsSchema);\nexport const fetchOptionsValidator = ajv.compile(fetchOptionsSchema);\nexport const commitOptionsValidator = ajv.compile(commitOptionsSchema);\nexport const listCommitsOptionsValidator = ajv.compile(listCommitsOptionsSchema);\nexport const listOffsetsOptionsValidator = ajv.compile(listOffsetsOptionsSchema);\nexport const getLagOptionsValidator = ajv.compile(getLagOptionsSchema);\nexport const defaultConsumerOptions = {\n    autocommit: true,\n    sessionTimeout: 60_000, // One minute\n    rebalanceTimeout: 102_000, // Two minutes,\n    heartbeatInterval: 3000,\n    protocols: [{ name: 'roundrobin', version: 1 }],\n    minBytes: 1,\n    maxBytes: 1_048_576 * 10, // 10 MB\n    maxWaitTime: 5_000,\n    isolationLevel: 'READ_COMMITTED',\n    highWaterMark: 1024\n};\n", "export function roundRobinAssigner(_current, members, topics, metadata) {\n    const membersSize = members.size;\n    const assignments = [];\n    // Flat the list of members and subscribed topics\n    for (const memberId of members.keys()) {\n        assignments.push({ memberId, assignments: new Map() });\n    }\n    // Assign topic-partitions in round robin\n    let currentMember = 0;\n    for (const topic of topics) {\n        const partitionsCount = metadata.topics.get(topic).partitionsCount;\n        for (let i = 0; i < partitionsCount; i++) {\n            const member = assignments[currentMember++ % membersSize];\n            let topicAssignments = member.assignments.get(topic);\n            if (!topicAssignments) {\n                topicAssignments = { topic, partitions: [] };\n                member.assignments.set(topic, topicAssignments);\n            }\n            topicAssignments?.partitions.push(i);\n        }\n    }\n    return assignments;\n}\n", "export class TopicsMap extends Map {\n    #current = [];\n    #metric;\n    get current() {\n        return this.#current;\n    }\n    clear() {\n        for (const k of this.keys()) {\n            this.untrack(k);\n        }\n        super.clear();\n    }\n    track(topic) {\n        let updated = false;\n        let existing = this.get(topic);\n        if (typeof existing === 'undefined') {\n            existing = 0;\n            updated = true;\n        }\n        this.set(topic, existing + 1);\n        if (existing === 0) {\n            this.#metric?.inc();\n        }\n        if (updated) {\n            this.#updateCurrentList();\n        }\n        return updated;\n    }\n    trackAll(...topics) {\n        const updated = [];\n        for (const topic of topics.flat()) {\n            updated.push(this.track(topic));\n        }\n        return updated;\n    }\n    untrack(topic) {\n        const existing = this.get(topic);\n        if (existing === 1) {\n            this.delete(topic);\n            this.#updateCurrentList();\n            this.#metric?.dec();\n            return true;\n        }\n        else if (typeof existing === 'number') {\n            this.set(topic, existing - 1);\n        }\n        return false;\n    }\n    untrackAll(...topics) {\n        const updated = [];\n        for (const topic of topics.flat()) {\n            updated.push(this.untrack(topic));\n        }\n        return updated;\n    }\n    setMetric(metric) {\n        this.#metric = metric;\n    }\n    #updateCurrentList() {\n        this.#current = Array.from(this.keys());\n    }\n}\n", "import { createPromisifiedCallback, createTimeoutCallback, kCallbackPromise, runConcurrentCallbacks } from \"../../apis/callbacks.js\";\nimport { FetchIsolationLevels, FindCoordinatorKeyTypes } from \"../../apis/enumerations.js\";\nimport { consumerCommitsChannel, consumerConsumesChannel, consumerFetchesChannel, consumerGroupChannel, consumerHeartbeatChannel, consumerLagChannel, consumerOffsetsChannel, createDiagnosticContext } from \"../../diagnostic.js\";\nimport { protocolErrors, UserError } from \"../../errors.js\";\nimport { INT32_SIZE } from \"../../protocol/definitions.js\";\nimport { Reader } from \"../../protocol/reader.js\";\nimport { Writer } from \"../../protocol/writer.js\";\nimport { kAutocommit, kRefreshOffsetsAndFetch } from \"../../symbols.js\";\nimport { Base, kAfterCreate, kCheckNotClosed, kClearMetadata, kClosed, kCreateConnectionPool, kFetchConnections, kFormatValidationErrors, kGetApi, kGetBootstrapConnection, kGetConnection, kMetadata, kOptions, kPerformDeduplicated, kPerformWithRetry, kPrometheus, kValidateOptions } from \"../base/base.js\";\nimport { defaultBaseOptions } from \"../base/options.js\";\nimport { ensureMetric } from \"../metrics.js\";\nimport { MessagesStream } from \"./messages-stream.js\";\nimport { commitOptionsValidator, consumeOptionsValidator, consumerOptionsValidator, defaultConsumerOptions, fetchOptionsValidator, getLagOptionsValidator, groupIdAndOptionsValidator, groupOptionsValidator, listCommitsOptionsValidator, listOffsetsOptionsValidator } from \"./options.js\";\nimport { roundRobinAssigner } from \"./partitions-assigners.js\";\nimport { TopicsMap } from \"./topics-map.js\";\nexport class Consumer extends Base {\n    groupId;\n    generationId;\n    memberId;\n    topics;\n    assignments;\n    #assignments;\n    #members;\n    #membershipActive;\n    #isLeader;\n    #protocol;\n    #coordinatorId;\n    #heartbeatInterval;\n    #lastHeartbeatIntervalMs;\n    #lastHeartbeat;\n    #useConsumerGroupProtocol;\n    #memberEpoch;\n    #groupRemoteAssignor;\n    #streams;\n    #lagMonitoring;\n    /*\n      The following requests are blocking in Kafka:\n  \n      FetchRequest (soprattutto con maxWaitMs)\n      JoinGroupRequest\n      SyncGroupRequest\n      OffsetCommitRequest\n      ProduceRequest\n      ListOffsetsRequest\n      ListGroupsRequest\n      DescribeGroupsRequest\n  \n      In order to avoid consumer group problems, we separate FetchRequest only on a separate connection.\n    */\n    [kFetchConnections];\n    // Metrics\n    #metricActiveStreams;\n    #metricLags;\n    constructor(options) {\n        super(options);\n        this[kOptions] = Object.assign({}, defaultBaseOptions, defaultConsumerOptions, options);\n        this[kValidateOptions](options, consumerOptionsValidator, '/options');\n        this.groupId = options.groupId;\n        this.generationId = 0;\n        this.memberId = null;\n        this.topics = new TopicsMap();\n        this.assignments = null;\n        this.#assignments = [];\n        this.#members = new Map();\n        this.#membershipActive = false;\n        this.#isLeader = false;\n        this.#protocol = null;\n        this.#coordinatorId = null;\n        this.#heartbeatInterval = null;\n        this.#lastHeartbeatIntervalMs = 0;\n        this.#lastHeartbeat = null;\n        this.#streams = new Set();\n        this.#lagMonitoring = null;\n        this.#memberEpoch = 0;\n        this.#useConsumerGroupProtocol = this[kOptions].groupProtocol === 'consumer';\n        this.#groupRemoteAssignor = this[kOptions].groupRemoteAssignor ?? null;\n        this.#validateGroupOptions(this[kOptions], groupIdAndOptionsValidator);\n        // Initialize connection pool\n        this[kFetchConnections] = this[kCreateConnectionPool]();\n        if (this[kPrometheus]) {\n            ensureMetric(this[kPrometheus], 'Gauge', 'kafka_consumers', 'Number of active Kafka consumers').inc();\n            this.#metricActiveStreams = ensureMetric(this[kPrometheus], 'Gauge', 'kafka_consumers_streams', 'Number of active Kafka consumers streams');\n            this.topics.setMetric(ensureMetric(this[kPrometheus], 'Gauge', 'kafka_consumers_topics', 'Number of topics being consumed'));\n            this.#metricLags = ensureMetric(this[kPrometheus], 'Histogram', 'kafka_consumers_lags', 'Lag of active Kafka consumers');\n        }\n        this[kAfterCreate]('consumer');\n    }\n    get streamsCount() {\n        return this.#streams.size;\n    }\n    get lastHeartbeat() {\n        return this.#lastHeartbeat;\n    }\n    close(force, callback) {\n        if (typeof force === 'function') {\n            callback = force;\n            force = false;\n        }\n        if (!callback) {\n            callback = createPromisifiedCallback();\n        }\n        if (this[kClosed]) {\n            callback(null);\n            return callback[kCallbackPromise];\n        }\n        this[kClosed] = true;\n        clearTimeout(this.#lagMonitoring);\n        let closer;\n        if (this.#useConsumerGroupProtocol) {\n            closer = this.#leaveGroupConsumerProtocol.bind(this);\n        }\n        else if (this.#membershipActive) {\n            closer = this.#leaveGroupClassicProtocol.bind(this);\n        }\n        else {\n            closer = function noopCloser(_, callback) {\n                callback(null);\n            };\n        }\n        closer(force, error => {\n            if (error) {\n                this[kClosed] = false;\n                callback(error);\n                return;\n            }\n            this[kFetchConnections].close(error => {\n                if (error) {\n                    this[kClosed] = false;\n                    callback(error);\n                    return;\n                }\n                super.close(error => {\n                    if (error) {\n                        this[kClosed] = false;\n                        callback(error);\n                        return;\n                    }\n                    this.topics.clear();\n                    if (this[kPrometheus]) {\n                        ensureMetric(this[kPrometheus], 'Gauge', 'kafka_consumers', 'Number of active Kafka consumers').dec();\n                    }\n                    callback(null);\n                });\n            });\n        });\n        return callback[kCallbackPromise];\n    }\n    isActive() {\n        const baseReady = super.isActive();\n        if (!baseReady) {\n            return false;\n        }\n        if (this.#useConsumerGroupProtocol) {\n            return !!this.memberId && this.#memberEpoch >= 0;\n        }\n        // We consider the group ready if we have a groupId, a memberId and heartbeat interval\n        return this.#membershipActive && Boolean(this.groupId) && Boolean(this.memberId) && this.#heartbeatInterval !== null;\n    }\n    consume(options, callback) {\n        if (!callback) {\n            callback = createPromisifiedCallback();\n        }\n        if (this[kCheckNotClosed](callback)) {\n            return callback[kCallbackPromise];\n        }\n        const validationError = this[kValidateOptions](options, consumeOptionsValidator, '/options', false);\n        if (validationError) {\n            callback(validationError, undefined);\n            return callback[kCallbackPromise];\n        }\n        options.autocommit ??= this[kOptions].autocommit ?? true;\n        options.maxBytes ??= this[kOptions].maxBytes;\n        options.deserializers = Object.assign({}, options.deserializers, this[kOptions].deserializers);\n        options.highWaterMark ??= this[kOptions].highWaterMark;\n        this.#consume(options, callback);\n        return callback[kCallbackPromise];\n    }\n    fetch(options, callback) {\n        if (!callback) {\n            callback = createPromisifiedCallback();\n        }\n        if (this[kCheckNotClosed](callback)) {\n            return callback[kCallbackPromise];\n        }\n        const validationError = this[kValidateOptions](options, fetchOptionsValidator, '/options', false);\n        if (validationError) {\n            callback(validationError, undefined);\n            return callback[kCallbackPromise];\n        }\n        consumerFetchesChannel.traceCallback(this.#fetch, 1, createDiagnosticContext({ client: this, operation: 'fetch', options }), this, options, callback);\n        return callback[kCallbackPromise];\n    }\n    commit(options, callback) {\n        if (!callback) {\n            callback = createPromisifiedCallback();\n        }\n        if (this[kCheckNotClosed](callback)) {\n            return callback[kCallbackPromise];\n        }\n        const validationError = this[kValidateOptions](options, commitOptionsValidator, '/options', false);\n        if (validationError) {\n            callback(validationError);\n            return callback[kCallbackPromise];\n        }\n        consumerCommitsChannel.traceCallback(this.#commit, 1, createDiagnosticContext({ client: this, operation: 'commit', options }), this, options, callback);\n        return callback[kCallbackPromise];\n    }\n    listOffsets(options, callback) {\n        if (!callback) {\n            callback = createPromisifiedCallback();\n        }\n        if (this[kCheckNotClosed](callback)) {\n            return callback[kCallbackPromise];\n        }\n        const validationError = this[kValidateOptions](options, listOffsetsOptionsValidator, '/options', false);\n        if (validationError) {\n            callback(validationError, undefined);\n            return callback[kCallbackPromise];\n        }\n        consumerOffsetsChannel.traceCallback(this.#listOffsets, 2, createDiagnosticContext({ client: this, operation: 'listOffsets', options }), this, false, options, callback);\n        return callback[kCallbackPromise];\n    }\n    listOffsetsWithTimestamps(options, callback) {\n        if (!callback) {\n            callback = createPromisifiedCallback();\n        }\n        if (this[kCheckNotClosed](callback)) {\n            return callback[kCallbackPromise];\n        }\n        const validationError = this[kValidateOptions](options, listOffsetsOptionsValidator, '/options', false);\n        if (validationError) {\n            callback(validationError, undefined);\n            return callback[kCallbackPromise];\n        }\n        consumerOffsetsChannel.traceCallback(this.#listOffsets, 2, createDiagnosticContext({ client: this, operation: 'listOffsets', options }), this, true, options, callback);\n        return callback[kCallbackPromise];\n    }\n    listCommittedOffsets(options, callback) {\n        if (!callback) {\n            callback = createPromisifiedCallback();\n        }\n        if (this[kCheckNotClosed](callback)) {\n            return callback[kCallbackPromise];\n        }\n        const validationError = this[kValidateOptions](options, listCommitsOptionsValidator, '/options', false);\n        if (validationError) {\n            callback(validationError, undefined);\n            return callback[kCallbackPromise];\n        }\n        consumerOffsetsChannel.traceCallback(this.#listCommittedOffsets, 1, createDiagnosticContext({ client: this, operation: 'listCommittedOffsets', options }), this, options, callback);\n        return callback[kCallbackPromise];\n    }\n    getLag(options, callback) {\n        if (!callback) {\n            callback = createPromisifiedCallback();\n        }\n        if (this[kCheckNotClosed](callback)) {\n            return callback[kCallbackPromise];\n        }\n        const validationError = this[kValidateOptions](options, getLagOptionsValidator, '/options', false);\n        if (validationError) {\n            callback(validationError, undefined);\n            return callback[kCallbackPromise];\n        }\n        this.listOffsets(options, (error, offsets) => {\n            if (error) {\n                this.emit('consumer:lag:error', error);\n                callback(error, undefined);\n                return;\n            }\n            // Now gather the last committed offsets from each stream\n            const committeds = new Map();\n            for (const stream of this.#streams) {\n                for (const [topic, offset] of stream.offsetsCommitted) {\n                    committeds.set(topic, offset);\n                }\n            }\n            // Build the lag map back. A -1n denotes that the consumer is not assigned to a certain partition\n            const lag = new Map();\n            for (const [topic, partitions] of offsets) {\n                const toInclude = new Set(options.partitions?.[topic] ?? []);\n                const hasPartitionsFilter = toInclude.size > 0;\n                const partitionLags = [];\n                for (let i = 0; i < partitions.length; i++) {\n                    if (hasPartitionsFilter && !toInclude.has(i)) {\n                        partitionLags.push(-2n);\n                        continue;\n                    }\n                    const latest = partitions[i];\n                    const committed = committeds.get(`${topic}:${i}`);\n                    // If the consumer is not assigned to this partition, we return -1n.\n                    // Otherwise we compute the lag as latest - committed - 1. The -1 is because latest is the offset of the next message to be produced.\n                    partitionLags.push(typeof committed === 'undefined' ? -1n : latest - committed - 1n);\n                }\n                lag.set(topic, partitionLags);\n            }\n            // Publish to the diagnostic channel\n            consumerLagChannel.publish({ client: this, lag });\n            // Publish to the metric if available\n            if (this.#metricLags) {\n                for (const partitions of lag.values()) {\n                    for (const l of partitions) {\n                        if (l >= 0n) {\n                            this.#metricLags.observe(Number(l));\n                        }\n                    }\n                }\n            }\n            this.emit('consumer:lag', lag);\n            callback(null, lag);\n        });\n        return callback[kCallbackPromise];\n    }\n    startLagMonitoring(options, interval) {\n        const validationError = this[kValidateOptions](options, getLagOptionsValidator, '/options', false);\n        if (validationError) {\n            throw validationError;\n        }\n        this.#lagMonitoring = setTimeout(() => {\n            this.getLag(options, () => this.#lagMonitoring.refresh());\n        }, interval);\n    }\n    stopLagMonitoring() {\n        clearTimeout(this.#lagMonitoring);\n    }\n    findGroupCoordinator(callback) {\n        if (!callback) {\n            callback = createPromisifiedCallback();\n        }\n        if (this[kCheckNotClosed](callback)) {\n            return callback[kCallbackPromise];\n        }\n        if (this.#coordinatorId) {\n            callback(null, this.#coordinatorId);\n            return callback[kCallbackPromise];\n        }\n        this.#findGroupCoordinator(callback);\n        return callback[kCallbackPromise];\n    }\n    joinGroup(options, callback) {\n        if (!callback) {\n            callback = createPromisifiedCallback();\n        }\n        if (this[kCheckNotClosed](callback)) {\n            return callback[kCallbackPromise];\n        }\n        if (this.#useConsumerGroupProtocol) {\n            callback(null, '');\n            return callback[kCallbackPromise];\n        }\n        const validationError = this[kValidateOptions](options, groupOptionsValidator, '/options', false);\n        if (validationError) {\n            callback(validationError, undefined);\n            return callback[kCallbackPromise];\n        }\n        options.sessionTimeout ??= this[kOptions].sessionTimeout;\n        options.rebalanceTimeout ??= this[kOptions].rebalanceTimeout;\n        options.heartbeatInterval ??= this[kOptions].heartbeatInterval;\n        options.protocols ??= this[kOptions].protocols;\n        this.#validateGroupOptions(options);\n        this.#membershipActive = true;\n        this.#joinGroup(options, callback);\n        return callback[kCallbackPromise];\n    }\n    leaveGroup(force, callback) {\n        if (typeof force === 'function') {\n            callback = force;\n            force = false;\n        }\n        if (!callback) {\n            callback = createPromisifiedCallback();\n        }\n        if (this[kCheckNotClosed](callback)) {\n            return callback[kCallbackPromise];\n        }\n        if (this.#useConsumerGroupProtocol) {\n            callback(null);\n            return callback[kCallbackPromise];\n        }\n        this.#membershipActive = false;\n        this.#leaveGroupClassicProtocol(force, error => {\n            if (error) {\n                this.#membershipActive = true;\n                callback(error);\n                return;\n            }\n            this.#lastHeartbeat = null;\n            callback(null);\n        });\n        return callback[kCallbackPromise];\n    }\n    #consume(options, callback) {\n        consumerConsumesChannel.traceCallback(this.#performConsume, 2, createDiagnosticContext({ client: this, operation: 'consume', options }), this, options, true, callback);\n    }\n    #fetch(options, callback) {\n        this[kPerformWithRetry]('fetch', retryCallback => {\n            this[kMetadata]({ topics: this.topics.current }, (error, metadata) => {\n                if (error) {\n                    retryCallback(error, undefined);\n                    return;\n                }\n                const broker = metadata.brokers.get(options.node);\n                if (!broker) {\n                    retryCallback(new UserError(`Cannot find broker with node id ${options.node}`), undefined);\n                    return;\n                }\n                this[kFetchConnections].get(broker, (error, connection) => {\n                    if (error) {\n                        retryCallback(error, undefined);\n                        return;\n                    }\n                    this[kGetApi]('Fetch', (error, api) => {\n                        if (error) {\n                            retryCallback(error, undefined);\n                            return;\n                        }\n                        api(connection, options.maxWaitTime ?? this[kOptions].maxWaitTime, options.minBytes ?? this[kOptions].minBytes, options.maxBytes ?? this[kOptions].maxBytes, FetchIsolationLevels[options.isolationLevel ?? this[kOptions].isolationLevel], 0, 0, options.topics, [], '', retryCallback);\n                    });\n                });\n            });\n        }, callback, 0);\n    }\n    #commit(options, callback) {\n        this.#performGroupOperation('commit', (connection, groupCallback) => {\n            const topics = new Map();\n            for (const { topic, partition, offset, leaderEpoch } of options.offsets) {\n                let topicOffsets = topics.get(topic);\n                if (!topicOffsets) {\n                    topicOffsets = { name: topic, partitions: [] };\n                    topics.set(topic, topicOffsets);\n                }\n                topicOffsets.partitions.push({\n                    partitionIndex: partition,\n                    committedOffset: offset,\n                    committedLeaderEpoch: leaderEpoch,\n                    committedMetadata: null\n                });\n            }\n            this[kGetApi]('OffsetCommit', (error, api) => {\n                if (error) {\n                    groupCallback(error, undefined);\n                    return;\n                }\n                api(connection, this.groupId, this.#useConsumerGroupProtocol ? this.#memberEpoch : this.generationId, this.memberId, null, Array.from(topics.values()), groupCallback);\n            });\n        }, error => {\n            callback(error);\n        });\n    }\n    #listOffsets(withTimestamps, options, callback) {\n        let topics = options.topics;\n        if (!topics || topics.length === 0) {\n            topics = this.topics.current;\n        }\n        this[kMetadata]({ topics }, (error, metadata) => {\n            if (error) {\n                callback(error, undefined);\n                return;\n            }\n            const requests = new Map();\n            for (const name of topics) {\n                const topic = metadata.topics.get(name);\n                const toInclude = new Set(options.partitions?.[name] ?? []);\n                const hasPartitionsFilter = toInclude.size > 0;\n                for (let i = 0; i < topic.partitionsCount; i++) {\n                    if (hasPartitionsFilter && !toInclude.delete(i)) {\n                        continue;\n                    }\n                    const partition = topic.partitions[i];\n                    const { leader, leaderEpoch } = partition;\n                    let leaderRequests = requests.get(leader);\n                    if (!leaderRequests) {\n                        leaderRequests = new Map();\n                        requests.set(leader, leaderRequests);\n                    }\n                    let topicRequests = leaderRequests.get(name);\n                    if (!topicRequests) {\n                        topicRequests = { name, partitions: [] };\n                        leaderRequests.set(name, topicRequests);\n                    }\n                    topicRequests.partitions.push({\n                        partitionIndex: i,\n                        currentLeaderEpoch: leaderEpoch,\n                        timestamp: options.timestamp ?? -1n\n                    });\n                }\n                if (toInclude.size > 0) {\n                    callback(new UserError(`Specified partition(s) not found in topic ${name}`), undefined);\n                    return;\n                }\n            }\n            runConcurrentCallbacks('Listing offsets failed.', requests, ([leader, requests], concurrentCallback) => {\n                this[kPerformWithRetry]('listOffsets', retryCallback => {\n                    this[kGetConnection](metadata.brokers.get(leader), (error, connection) => {\n                        if (error) {\n                            retryCallback(error, undefined);\n                            return;\n                        }\n                        this[kGetApi]('ListOffsets', (error, api) => {\n                            if (error) {\n                                retryCallback(error, undefined);\n                                return;\n                            }\n                            api(connection, -1, FetchIsolationLevels[options.isolationLevel ?? this[kOptions].isolationLevel], Array.from(requests.values()), retryCallback);\n                        });\n                    });\n                }, concurrentCallback, 0);\n            }, (error, responses) => {\n                if (error) {\n                    callback(this.#handleMetadataError(error), undefined);\n                    return;\n                }\n                let offsets = new Map();\n                if (withTimestamps) {\n                    offsets = new Map();\n                    for (const response of responses) {\n                        for (const { name: topic, partitions } of response.topics) {\n                            let topicOffsets = offsets.get(topic);\n                            if (!topicOffsets) {\n                                topicOffsets = new Map();\n                                offsets.set(topic, topicOffsets);\n                            }\n                            for (const { partitionIndex: index, offset, timestamp } of partitions) {\n                                topicOffsets.set(index, { offset, timestamp });\n                            }\n                        }\n                    }\n                }\n                else {\n                    offsets = new Map();\n                    for (const response of responses) {\n                        for (const { name: topic, partitions } of response.topics) {\n                            let topicOffsets = offsets.get(topic);\n                            if (!topicOffsets) {\n                                topicOffsets = Array(metadata.topics.get(topic).partitionsCount);\n                                offsets.set(topic, topicOffsets);\n                            }\n                            for (const { partitionIndex: index, offset } of partitions) {\n                                topicOffsets[index] = offset;\n                            }\n                        }\n                    }\n                }\n                callback(null, offsets);\n            });\n        });\n    }\n    #listCommittedOffsets(options, callback) {\n        const topics = [];\n        for (const { topic: name, partitions } of options.topics) {\n            topics.push({ name, partitionIndexes: partitions });\n        }\n        this.#performGroupOperation('listCommits', (connection, groupCallback) => {\n            this[kGetApi]('OffsetFetch', (error, api) => {\n                if (error) {\n                    groupCallback(error, undefined);\n                    return;\n                }\n                api(connection, [\n                    {\n                        groupId: this.groupId,\n                        memberId: this.memberId,\n                        memberEpoch: this.#useConsumerGroupProtocol ? this.#memberEpoch : -1,\n                        topics\n                    }\n                ], false, groupCallback);\n            });\n        }, (error, response) => {\n            if (error) {\n                callback(this.#handleMetadataError(error), undefined);\n                return;\n            }\n            const committed = new Map();\n            for (const responseGroup of response.groups) {\n                for (const responseTopic of responseGroup.topics) {\n                    const topic = responseTopic.name;\n                    const partitions = Array(responseTopic.partitions.length);\n                    for (const { partitionIndex: index, committedOffset } of responseTopic.partitions) {\n                        partitions[index] = committedOffset;\n                    }\n                    committed.set(topic, partitions);\n                }\n            }\n            callback(null, committed);\n        });\n    }\n    #findGroupCoordinator(callback) {\n        if (this.#coordinatorId) {\n            callback(null, this.#coordinatorId);\n            return;\n        }\n        consumerGroupChannel.traceCallback(this.#performFindGroupCoordinator, 0, createDiagnosticContext({ client: this, operation: 'findGroupCoordinator' }), this, callback);\n    }\n    #joinGroup(options, callback) {\n        consumerGroupChannel.traceCallback(this.#performJoinGroup, 1, createDiagnosticContext({ client: this, operation: 'joinGroup', options }), this, options, callback);\n    }\n    #leaveGroupClassicProtocol(force, callback) {\n        consumerGroupChannel.traceCallback(this.#performLeaveGroup, 1, createDiagnosticContext({ client: this, operation: 'leaveGroup', force }), this, force, callback);\n    }\n    #syncGroup(partitionsAssigner, callback) {\n        consumerGroupChannel.traceCallback(this.#performSyncGroup, 2, createDiagnosticContext({ client: this, operation: 'syncGroup' }), this, partitionsAssigner, null, callback);\n    }\n    #heartbeat(options) {\n        const eventPayload = { groupId: this.groupId, memberId: this.memberId, generationId: this.generationId };\n        consumerHeartbeatChannel.traceCallback((this.#performDeduplicateGroupOperaton), 2, createDiagnosticContext({ client: this, operation: 'heartbeat' }), this, 'heartbeat', (connection, groupCallback) => {\n            // We have left the group in the meanwhile, abort\n            if (!this.#membershipActive) {\n                this.emitWithDebug('consumer:heartbeat', 'cancel', eventPayload);\n                return;\n            }\n            this.emitWithDebug('consumer:heartbeat', 'start', eventPayload);\n            this[kGetApi]('Heartbeat', (error, api) => {\n                if (error) {\n                    groupCallback(error, undefined);\n                    return;\n                }\n                api(connection, this.groupId, this.generationId, this.memberId, null, groupCallback);\n            });\n        }, error => {\n            // The heartbeat has been aborted elsewhere, ignore the response\n            if (this.#heartbeatInterval === null || !this.#membershipActive) {\n                this.emitWithDebug('consumer:heartbeat', 'cancel', eventPayload);\n                return;\n            }\n            if (error) {\n                this.#cancelHeartbeat();\n                if (this.#getRejoinError(error)) {\n                    this[kPerformWithRetry]('rejoinGroup', retryCallback => {\n                        this.#joinGroup(options, retryCallback);\n                    }, error => {\n                        if (error) {\n                            this.emitWithDebug(null, 'error', error);\n                        }\n                        this.emitWithDebug('consumer', 'rejoin');\n                    }, 0);\n                    return;\n                }\n                this.emitWithDebug('consumer:heartbeat', 'error', { ...eventPayload, error });\n                // Note that here we purposely do not return, since it was not a group related problem we schedule another heartbeat\n            }\n            else {\n                this.#lastHeartbeat = new Date();\n                this.emitWithDebug('consumer:heartbeat', 'end', eventPayload);\n            }\n            this.#heartbeatInterval?.refresh();\n        });\n    }\n    #cancelHeartbeat() {\n        clearTimeout(this.#heartbeatInterval);\n        this.#heartbeatInterval = null;\n    }\n    #consumerGroupHeartbeat(options, callback) {\n        options.rebalanceTimeout ??= this[kOptions].rebalanceTimeout;\n        consumerHeartbeatChannel.traceCallback(this.#performConsumerGroupHeartbeat, 1, createDiagnosticContext({ client: this, operation: 'consumerGroupHeartbeat' }), this, options, callback);\n    }\n    #performConsumerGroupHeartbeat(options, callback) {\n        this.#performGroupOperation('consumerGroupHeartbeat', (connection, groupCallback) => {\n            this.emitWithDebug('consumer:heartbeat', 'start');\n            this[kGetApi]('ConsumerGroupHeartbeat', (error, api) => {\n                if (error) {\n                    groupCallback(error, undefined);\n                    return;\n                }\n                const timeoutCallback = createTimeoutCallback(groupCallback, this[kOptions].timeout, 'Heartbeat timeout.');\n                api(connection, this.groupId, this.memberId || '', this.#memberEpoch, null, // instanceId\n                null, // rackId\n                options.rebalanceTimeout, this.topics.current, this.#groupRemoteAssignor, this.#assignments, timeoutCallback);\n            });\n        }, (error, response) => {\n            if (this[kClosed]) {\n                this.emitWithDebug('consumer:heartbeat', 'end');\n                callback(null);\n                return;\n            }\n            if (error) {\n                this.#cancelHeartbeat();\n                this.emitWithDebug('consumer:heartbeat', 'error', { error });\n                const fenced = error.response?.errorCode === protocolErrors.FENCED_MEMBER_EPOCH.code;\n                if (fenced) {\n                    this.#assignments = [];\n                    this.assignments = [];\n                    this.#memberEpoch = 0;\n                    this.#consumerGroupHeartbeat(options, () => { });\n                    callback(error);\n                    return;\n                }\n                this.#heartbeatInterval = setTimeout(() => {\n                    this.#consumerGroupHeartbeat(options, () => { });\n                }, this.#lastHeartbeatIntervalMs || 1000);\n                callback(error);\n                return;\n            }\n            this.#lastHeartbeat = new Date();\n            this.#memberEpoch = response.memberEpoch;\n            if (response.memberId) {\n                const changed = this.memberId !== response.memberId;\n                this.memberId = response.memberId;\n                if (changed) {\n                    this.memberId = response.memberId;\n                    this.#consumerGroupHeartbeat(options, () => { });\n                    this.emitWithDebug('consumer:heartbeat', 'end');\n                    callback(null);\n                    return;\n                }\n            }\n            if (response.heartbeatIntervalMs > 0) {\n                this.#cancelHeartbeat();\n                this.#lastHeartbeatIntervalMs = response.heartbeatIntervalMs;\n                this.#heartbeatInterval = setTimeout(() => {\n                    this.#consumerGroupHeartbeat(options, () => { });\n                }, response.heartbeatIntervalMs);\n            }\n            const newAssignments = response.assignment?.topicPartitions;\n            if (newAssignments) {\n                this.#revokePartitions(newAssignments);\n                this.#assignPartitions(newAssignments);\n            }\n            this.emitWithDebug('consumer:heartbeat', 'end');\n            callback(null);\n        });\n    }\n    #diffAssignments(A, B) {\n        const result = [];\n        for (const a of A) {\n            const b = B.find(tp => tp.topicId === a.topicId);\n            if (!b) {\n                result.push(a);\n            }\n            else {\n                const diff = a.partitions.filter(partition => !b.partitions.includes(partition));\n                if (diff.length > 0) {\n                    result.push({ topicId: a.topicId, partitions: diff });\n                }\n            }\n        }\n        return result;\n    }\n    #revokePartitions(newAssignment) {\n        const toRevoke = this.#diffAssignments(this.#assignments, newAssignment);\n        if (toRevoke.length === 0) {\n            return;\n        }\n        for (const stream of this.#streams) {\n            stream.pause();\n            stream[kAutocommit]();\n        }\n        this.#updateAssignments(newAssignment, error => {\n            for (const stream of this.#streams) {\n                stream.resume();\n            }\n            /* c8 ignore next 3 - Hard to test */\n            if (error) {\n                return;\n            }\n            this.#cancelHeartbeat();\n            this.#consumerGroupHeartbeat(this[kOptions], () => { });\n        });\n    }\n    #assignPartitions(newAssignment) {\n        const toAssign = this.#diffAssignments(newAssignment, this.#assignments);\n        if (toAssign.length === 0) {\n            return;\n        }\n        this.#updateAssignments(newAssignment, error => {\n            if (error) {\n                return;\n            }\n            this.#cancelHeartbeat();\n            this.#consumerGroupHeartbeat(this[kOptions], () => { });\n            for (const stream of this.#streams) {\n                // 3. Refresh partition offsets\n                stream[kRefreshOffsetsAndFetch]();\n            }\n        });\n    }\n    #updateAssignments(newAssignments, callback) {\n        this[kMetadata]({ topics: this.topics.current }, (error, metadata) => {\n            if (error) {\n                callback(error);\n                return;\n            }\n            const topicIdToTopic = new Map();\n            for (const [topic, topicMetadata] of metadata.topics) {\n                topicIdToTopic.set(topicMetadata.id, topic);\n            }\n            const assignments = newAssignments.map(tp => ({\n                topic: topicIdToTopic.get(tp.topicId),\n                partitions: tp.partitions\n            }));\n            this.#assignments = newAssignments;\n            this.assignments = assignments;\n            callback(null);\n        });\n    }\n    #joinGroupConsumerProtocol(options, callback) {\n        this.#memberEpoch = 0;\n        this.#assignments = [];\n        this.#membershipActive = true;\n        this.#consumerGroupHeartbeat(options, err => {\n            if (this.memberId) {\n                this.emitWithDebug('consumer', 'group:join', { groupId: this.groupId, memberId: this.memberId });\n            }\n            callback(err);\n        });\n    }\n    #leaveGroupConsumerProtocol(_, callback) {\n        // Leave by sending a heartbeat with memberEpoch = -1\n        this.#cancelHeartbeat();\n        this.#performDeduplicateGroupOperaton('leaveGroupConsumerProtocol', (connection, groupCallback) => {\n            this[kGetApi]('ConsumerGroupHeartbeat', (error, api) => {\n                if (error) {\n                    groupCallback(error, undefined);\n                    return;\n                }\n                api(connection, this.groupId, this.memberId, -1, // memberEpoch = -1 signals leave\n                null, // instanceId\n                null, // rackId\n                0, // rebalanceTimeout\n                [], // subscribedTopicNames\n                this.#groupRemoteAssignor, [], // topicPartitions\n                groupCallback);\n            });\n        }, _error => {\n            this.emitWithDebug('consumer', 'group:leave', { groupId: this.groupId, memberId: this.memberId });\n            this.memberId = null;\n            this.#memberEpoch = -1;\n            this.#assignments = [];\n            this.assignments = [];\n            callback(null);\n        });\n    }\n    #performConsume(options, trackTopics, callback) {\n        // Subscribe all topics\n        let joinNeeded = this.memberId === null;\n        if (trackTopics) {\n            for (const topic of options.topics) {\n                if (this.topics.track(topic)) {\n                    joinNeeded = true;\n                }\n            }\n        }\n        // If we need to (re)join the group, do that first and then try again\n        if (joinNeeded) {\n            if (this.#useConsumerGroupProtocol) {\n                this.#joinGroupConsumerProtocol(options, error => {\n                    if (error) {\n                        callback(error, undefined);\n                        return;\n                    }\n                    this.#performConsume(options, false, callback);\n                });\n                return;\n            }\n            // Classic consumer protocol join\n            this.joinGroup(options, error => {\n                if (error) {\n                    callback(error, undefined);\n                    return;\n                }\n                this.#performConsume(options, false, callback);\n            });\n            return;\n        }\n        // Create the stream and start consuming\n        const stream = new MessagesStream(this, options);\n        this.#streams.add(stream);\n        this.#metricActiveStreams?.inc();\n        stream.once('close', () => {\n            this.#metricActiveStreams?.dec();\n            this.topics.untrackAll(...options.topics);\n            this.#streams.delete(stream);\n        });\n        callback(null, stream);\n    }\n    #performFindGroupCoordinator(callback) {\n        this[kPerformDeduplicated]('findGroupCoordinator', deduplicateCallback => {\n            this[kPerformWithRetry]('findGroupCoordinator', retryCallback => {\n                this[kGetBootstrapConnection]((error, connection) => {\n                    if (error) {\n                        retryCallback(error, undefined);\n                        return;\n                    }\n                    this[kGetApi]('FindCoordinator', (error, api) => {\n                        if (error) {\n                            retryCallback(error, undefined);\n                            return;\n                        }\n                        api(connection, FindCoordinatorKeyTypes.GROUP, [this.groupId], retryCallback);\n                    });\n                });\n            }, (error, response) => {\n                if (error) {\n                    deduplicateCallback(error, undefined);\n                    return;\n                }\n                const groupInfo = response.coordinators.find(coordinator => coordinator.key === this.groupId);\n                this.#coordinatorId = groupInfo.nodeId;\n                deduplicateCallback(null, this.#coordinatorId);\n            }, 0);\n        }, callback);\n    }\n    #performJoinGroup(options, callback) {\n        if (!this.#membershipActive) {\n            callback(null, undefined);\n            return;\n        }\n        this.#cancelHeartbeat();\n        const protocols = [];\n        for (const protocol of options.protocols) {\n            protocols.push({\n                name: protocol.name,\n                metadata: this.#encodeProtocolSubscriptionMetadata(protocol, this.topics.current)\n            });\n        }\n        this.#performDeduplicateGroupOperaton('joinGroup', (connection, groupCallback) => {\n            this[kGetApi]('JoinGroup', (error, api) => {\n                if (error) {\n                    groupCallback(error, undefined);\n                    return;\n                }\n                api(connection, this.groupId, options.sessionTimeout, options.rebalanceTimeout, this.memberId ?? '', null, 'consumer', protocols, '', groupCallback);\n            });\n        }, (error, response) => {\n            if (!this.#membershipActive) {\n                callback(null, undefined);\n                return;\n            }\n            if (error) {\n                if (this.#getRejoinError(error)) {\n                    this.#performJoinGroup(options, callback);\n                    return;\n                }\n                callback(error, undefined);\n                return;\n            }\n            this.generationId = response.generationId;\n            this.#isLeader = response.leader === this.memberId;\n            this.#protocol = response.protocolName;\n            this.#members = new Map();\n            for (const member of response.members) {\n                this.#members.set(member.memberId, this.#decodeProtocolSubscriptionMetadata(member.memberId, member.metadata));\n            }\n            // Send a syncGroup request\n            this.#syncGroup(options.partitionAssigner, (error, response) => {\n                if (!this.#membershipActive) {\n                    callback(null, undefined);\n                    return;\n                }\n                if (error) {\n                    if (this.#getRejoinError(error)) {\n                        this.#performJoinGroup(options, callback);\n                        return;\n                    }\n                    callback(error, undefined);\n                    return;\n                }\n                this.assignments = response;\n                this.#cancelHeartbeat();\n                this.#heartbeatInterval = setTimeout(() => {\n                    this.#heartbeat(options);\n                }, options.heartbeatInterval);\n                this.emitWithDebug('consumer', 'group:join', {\n                    groupId: this.groupId,\n                    memberId: this.memberId,\n                    generationId: this.generationId,\n                    isLeader: this.#isLeader,\n                    assignments: this.assignments\n                });\n                callback(null, this.memberId);\n            });\n        });\n    }\n    #performLeaveGroup(force, callback) {\n        if (!this.memberId) {\n            callback(null);\n            return;\n        }\n        // Remove streams that might have been exited in the meanwhile\n        for (const stream of this.#streams) {\n            if (stream.closed || stream.destroyed) {\n                this.#streams.delete(stream);\n            }\n        }\n        if (this.#streams.size) {\n            if (!force) {\n                callback(new UserError('Cannot leave group while consuming messages.'));\n                return;\n            }\n            runConcurrentCallbacks('Closing streams failed.', this.#streams, (stream, concurrentCallback) => {\n                stream.close(concurrentCallback);\n            }, error => {\n                if (error) {\n                    callback(error);\n                    return;\n                }\n                // All streams are closed, try the operation again without force\n                this.#performLeaveGroup(false, callback);\n            });\n            return;\n        }\n        this.#cancelHeartbeat();\n        this.#performDeduplicateGroupOperaton('leaveGroup', (connection, groupCallback) => {\n            this[kGetApi]('LeaveGroup', (error, api) => {\n                if (error) {\n                    groupCallback(error, undefined);\n                    return;\n                }\n                api(connection, this.groupId, [{ memberId: this.memberId }], groupCallback);\n            });\n        }, error => {\n            if (error) {\n                const unknownMemberError = error.findBy?.('unknownMemberId', true);\n                // This is to avoid throwing an error if a group join was cancelled.\n                if (!unknownMemberError) {\n                    callback(error);\n                    return;\n                }\n            }\n            this.emitWithDebug('consumer', 'group:leave', {\n                groupId: this.groupId,\n                memberId: this.memberId,\n                generationId: this.generationId\n            });\n            this.memberId = null;\n            this.generationId = 0;\n            this.assignments = null;\n            callback(null);\n        });\n    }\n    #performSyncGroup(partitionsAssigner, assignments, callback) {\n        if (!this.#membershipActive) {\n            callback(null, []);\n            return;\n        }\n        if (!Array.isArray(assignments)) {\n            if (this.#isLeader) {\n                // Get all the metadata for  the topics the consumer are listening to, then compute the assignments\n                const topicsSubscriptions = new Map();\n                for (const subscription of this.#members.values()) {\n                    for (const topic of subscription.topics) {\n                        let topicSubscriptions = topicsSubscriptions.get(topic);\n                        if (!topicSubscriptions) {\n                            topicSubscriptions = [];\n                            topicsSubscriptions.set(topic, topicSubscriptions);\n                        }\n                        topicSubscriptions.push(subscription);\n                    }\n                }\n                this[kMetadata]({ topics: Array.from(topicsSubscriptions.keys()) }, (error, metadata) => {\n                    if (error) {\n                        callback(this.#handleMetadataError(error), undefined);\n                        return;\n                    }\n                    this.#performSyncGroup(partitionsAssigner, this.#createAssignments(partitionsAssigner, metadata), callback);\n                });\n                return;\n            }\n            else {\n                // Non leader simply do not send any assignments and wait\n                assignments = [];\n            }\n        }\n        this.#performDeduplicateGroupOperaton('syncGroup', (connection, groupCallback) => {\n            this[kGetApi]('SyncGroup', (error, api) => {\n                if (error) {\n                    groupCallback(error, undefined);\n                    return;\n                }\n                api(connection, this.groupId, this.generationId, this.memberId, null, 'consumer', this.#protocol, assignments, groupCallback);\n            });\n        }, (error, response) => {\n            if (!this.#membershipActive) {\n                callback(null, undefined);\n                return;\n            }\n            if (error) {\n                callback(error, undefined);\n                return;\n            }\n            callback(error, this.#decodeProtocolAssignment(response.assignment));\n        });\n    }\n    #performDeduplicateGroupOperaton(operationId, operation, callback) {\n        return this[kPerformDeduplicated](operationId, deduplicateCallback => {\n            this.#performGroupOperation(operationId, operation, deduplicateCallback);\n        }, callback);\n    }\n    #performGroupOperation(operationId, operation, callback) {\n        this.#findGroupCoordinator((error, coordinatorId) => {\n            if (error) {\n                callback(error, undefined);\n                return;\n            }\n            this[kMetadata]({ topics: this.topics.current }, (error, metadata) => {\n                if (error) {\n                    callback(this.#handleMetadataError(error), undefined);\n                    return;\n                }\n                this[kPerformWithRetry](operationId, retryCallback => {\n                    this[kGetConnection](metadata.brokers.get(coordinatorId), (error, connection) => {\n                        if (error) {\n                            retryCallback(error, undefined);\n                            return;\n                        }\n                        operation(connection, retryCallback);\n                    });\n                }, callback);\n            });\n        });\n    }\n    #validateGroupOptions(options, validator) {\n        validator ??= groupOptionsValidator;\n        const valid = validator(options);\n        if (!valid) {\n            throw new UserError(this[kFormatValidationErrors](validator, '/options'));\n        }\n    }\n    /*\n      The following two methods follow:\n      https://github.com/apache/kafka/blob/trunk/clients/src/main/resources/common/message/ConsumerProtocolSubscription.json\n    */\n    #encodeProtocolSubscriptionMetadata(metadata, topics) {\n        return Writer.create()\n            .appendInt16(metadata.version)\n            .appendArray(topics, (w, t) => w.appendString(t, false), false, false)\n            .appendBytes(typeof metadata.metadata === 'string' ? Buffer.from(metadata.metadata) : metadata.metadata, false)\n            .buffer;\n    }\n    #decodeProtocolSubscriptionMetadata(memberId, buffer) {\n        const reader = Reader.from(buffer);\n        return {\n            memberId,\n            version: reader.readInt16(),\n            topics: reader.readArray(r => r.readString(false), false, false),\n            metadata: reader.readBytes(false)\n        };\n    }\n    /*\n      The following two methods follow:\n      https://github.com/apache/kafka/blob/trunk/clients/src/main/resources/common/message/ConsumerProtocolAssignment.json\n    */\n    #encodeProtocolAssignment(assignments) {\n        return Writer.create()\n            .appendInt16(0) // Version information\n            .appendArray(assignments, (w, { topic, partitions }) => {\n            w.appendString(topic, false).appendArray(partitions, (w, a) => w.appendInt32(a), false, false);\n        }, false, false)\n            .appendInt32(0).buffer; // No user data\n    }\n    #decodeProtocolAssignment(buffer) {\n        const reader = Reader.from(buffer);\n        reader.skip(2); // Ignore Version information\n        if (reader.remaining < INT32_SIZE) {\n            return [];\n        }\n        return reader.readArray(r => {\n            return {\n                topic: r.readString(false),\n                partitions: r.readArray(r => r.readInt32(), false, false)\n            };\n        }, false, false);\n    }\n    #createAssignments(partitionsAssigner, metadata) {\n        const partitionTracker = new Map();\n        // First of all, layout topics-partitions in a list\n        for (const [topic, partitions] of metadata.topics) {\n            partitionTracker.set(topic, { next: 0, max: partitions.partitionsCount });\n        }\n        // We are the only member of the group, assign all partitions to us\n        const membersSize = this.#members.size;\n        if (membersSize === 1) {\n            const assignments = [];\n            for (const topic of this.topics.current) {\n                const partitionsCount = metadata.topics.get(topic).partitionsCount;\n                const partitions = [];\n                for (let i = 0; i < partitionsCount; i++) {\n                    partitions.push(i);\n                }\n                assignments.push({ topic, partitions });\n            }\n            return [{ memberId: this.memberId, assignment: this.#encodeProtocolAssignment(assignments) }];\n        }\n        const encodedAssignments = [];\n        partitionsAssigner ??= this[kOptions].partitionAssigner ?? roundRobinAssigner;\n        for (const member of partitionsAssigner(this.memberId, this.#members, new Set(this.topics.current), metadata)) {\n            encodedAssignments.push({\n                memberId: member.memberId,\n                assignment: this.#encodeProtocolAssignment(Array.from(member.assignments.values()))\n            });\n        }\n        return encodedAssignments;\n    }\n    #getRejoinError(error) {\n        const protocolError = error.findBy?.('needsRejoin', true);\n        if (!protocolError) {\n            return null;\n        }\n        if (protocolError.rebalanceInProgress) {\n            this.emitWithDebug('consumer', 'group:rebalance', { groupId: this.groupId });\n        }\n        if (protocolError.unknownMemberId) {\n            this.memberId = null;\n        }\n        else if (protocolError.memberId && !this.memberId) {\n            this.memberId = protocolError.memberId;\n        }\n        // This is only used in testing\n        if (protocolError.cancelMembership) {\n            this.#membershipActive = false;\n        }\n        return protocolError;\n    }\n    #handleMetadataError(error) {\n        if (error && error?.findBy('hasStaleMetadata', true)) {\n            this[kClearMetadata]();\n        }\n        return error;\n    }\n}\n", "import { allowedProduceAcks, ProduceAcks } from \"../../apis/enumerations.js\";\nimport { allowedCompressionsAlgorithms, compressionsAlgorithms } from \"../../protocol/compression.js\";\nimport { messageSchema } from \"../../protocol/records.js\";\nimport { ajv, enumErrorMessage } from \"../../utils.js\";\nimport { serdeProperties } from \"../serde.js\";\nexport const produceOptionsProperties = {\n    producerId: { bigint: true },\n    producerEpoch: { type: 'number' },\n    idempotent: { type: 'boolean' },\n    acks: {\n        type: 'number',\n        enumeration: {\n            allowed: allowedProduceAcks,\n            errorMessage: enumErrorMessage(ProduceAcks)\n        }\n    },\n    compression: {\n        type: 'string',\n        enumeration: {\n            allowed: allowedCompressionsAlgorithms,\n            errorMessage: enumErrorMessage(compressionsAlgorithms)\n        }\n    },\n    partitioner: { function: true },\n    autocreateTopics: { type: 'boolean' },\n    repeatOnStaleMetadata: { type: 'boolean' }\n};\nexport const produceOptionsSchema = {\n    type: 'object',\n    properties: produceOptionsProperties,\n    additionalProperties: false\n};\nexport const produceOptionsValidator = ajv.compile(produceOptionsSchema);\nexport const producerOptionsValidator = ajv.compile({\n    type: 'object',\n    properties: {\n        ...produceOptionsProperties,\n        serializers: serdeProperties\n    },\n    additionalProperties: true\n});\nexport const sendOptionsSchema = {\n    type: 'object',\n    properties: {\n        messages: { type: 'array', items: messageSchema },\n        ...produceOptionsProperties\n    },\n    required: ['messages'],\n    additionalProperties: false\n};\nexport const sendOptionsValidator = ajv.compile(sendOptionsSchema);\n", "import { createPromisifiedCallback, kCallbackPromise, runConcurrentCallbacks } from \"../../apis/callbacks.js\";\nimport { ProduceAcks } from \"../../apis/enumerations.js\";\nimport { createDiagnosticContext, producerInitIdempotentChannel, producerSendsChannel } from \"../../diagnostic.js\";\nimport { UserError } from \"../../errors.js\";\nimport { murmur2 } from \"../../protocol/murmur2.js\";\nimport { NumericMap } from \"../../utils.js\";\nimport { Base, kAfterCreate, kCheckNotClosed, kClearMetadata, kClosed, kGetApi, kGetBootstrapConnection, kGetConnection, kMetadata, kOptions, kPerformDeduplicated, kPerformWithRetry, kPrometheus, kValidateOptions } from \"../base/base.js\";\nimport { ensureMetric } from \"../metrics.js\";\nimport { produceOptionsValidator, producerOptionsValidator, sendOptionsValidator } from \"./options.js\";\n// Don't move this function as being in the same file will enable V8 to remove.\n// For futher info, ask Matteo.\nexport function noopSerializer(data) {\n    return data;\n}\nexport class Producer extends Base {\n    #partitionsRoundRobin;\n    // These two values should be serializable and loadable in the constructor in order to restore\n    // the idempotent producer status.\n    #producerInfo;\n    #sequences;\n    #keySerializer;\n    #valueSerializer;\n    #headerKeySerializer;\n    #headerValueSerializer;\n    #metricsProducedMessages;\n    constructor(options) {\n        if (options.idempotent) {\n            options.maxInflights = 1;\n            options.acks = ProduceAcks.ALL;\n            options.retries = Number.MAX_SAFE_INTEGER;\n        }\n        else {\n            options.idempotent = false;\n        }\n        options.repeatOnStaleMetadata ??= true;\n        super(options);\n        this.#partitionsRoundRobin = new NumericMap();\n        this.#sequences = new NumericMap();\n        this.#keySerializer = options.serializers?.key ?? noopSerializer;\n        this.#valueSerializer = options.serializers?.value ?? noopSerializer;\n        this.#headerKeySerializer = options.serializers?.headerKey ?? noopSerializer;\n        this.#headerValueSerializer = options.serializers?.headerValue ?? noopSerializer;\n        this[kValidateOptions](options, producerOptionsValidator, '/options');\n        if (this[kPrometheus]) {\n            ensureMetric(this[kPrometheus], 'Gauge', 'kafka_producers', 'Number of active Kafka producers').inc();\n            this.#metricsProducedMessages = ensureMetric(this[kPrometheus], 'Counter', 'kafka_produced_messages', 'Number of produced Kafka messages');\n        }\n        this[kAfterCreate]('producer');\n    }\n    get producerId() {\n        return this.#producerInfo?.producerId;\n    }\n    get producerEpoch() {\n        return this.#producerInfo?.producerEpoch;\n    }\n    close(callback) {\n        if (!callback) {\n            callback = createPromisifiedCallback();\n        }\n        if (this[kClosed]) {\n            callback(null);\n            return callback[kCallbackPromise];\n        }\n        this[kClosed] = true;\n        super.close(error => {\n            if (error) {\n                this[kClosed] = false;\n                callback(error);\n                return;\n            }\n            if (this[kPrometheus]) {\n                ensureMetric(this[kPrometheus], 'Gauge', 'kafka_producers', 'Number of active Kafka producers').dec();\n            }\n            callback(null);\n        });\n        return callback[kCallbackPromise];\n    }\n    initIdempotentProducer(options, callback) {\n        if (!callback) {\n            callback = createPromisifiedCallback();\n        }\n        if (this[kCheckNotClosed](callback)) {\n            return callback[kCallbackPromise];\n        }\n        const validationError = this[kValidateOptions](options, produceOptionsValidator, '/options', false);\n        if (validationError) {\n            callback(validationError, undefined);\n            return callback[kCallbackPromise];\n        }\n        producerInitIdempotentChannel.traceCallback(this.#initIdempotentProducer, 1, createDiagnosticContext({ client: this, operation: 'initIdempotentProducer', options }), this, options, callback);\n        return callback[kCallbackPromise];\n    }\n    send(options, callback) {\n        if (!callback) {\n            callback = createPromisifiedCallback();\n        }\n        if (this[kCheckNotClosed](callback)) {\n            return callback[kCallbackPromise];\n        }\n        const validationError = this[kValidateOptions](options, sendOptionsValidator, '/options', false);\n        if (validationError) {\n            callback(validationError, undefined);\n            return callback[kCallbackPromise];\n        }\n        producerSendsChannel.traceCallback(this.#send, 1, createDiagnosticContext({ client: this, operation: 'send', options }), this, options, callback);\n        return callback[kCallbackPromise];\n    }\n    #initIdempotentProducer(options, callback) {\n        this[kPerformDeduplicated]('initProducerId', deduplicateCallback => {\n            this[kPerformWithRetry]('initProducerId', retryCallback => {\n                this[kGetBootstrapConnection]((error, connection) => {\n                    if (error) {\n                        retryCallback(error, undefined);\n                        return;\n                    }\n                    this[kGetApi]('InitProducerId', (error, api) => {\n                        if (error) {\n                            retryCallback(error, undefined);\n                            return;\n                        }\n                        api(connection, null, this[kOptions].timeout, options.producerId ?? this[kOptions].producerId ?? 0n, options.producerEpoch ?? this[kOptions].producerEpoch ?? 0, retryCallback);\n                    });\n                });\n            }, (error, response) => {\n                if (error) {\n                    deduplicateCallback(error, undefined);\n                    return;\n                }\n                this.#producerInfo = { producerId: response.producerId, producerEpoch: response.producerEpoch };\n                deduplicateCallback(null, this.#producerInfo);\n            }, 0);\n        }, callback);\n    }\n    #send(options, callback) {\n        options.idempotent ??= this[kOptions].idempotent;\n        options.repeatOnStaleMetadata ??= this[kOptions].repeatOnStaleMetadata;\n        options.partitioner ??= this[kOptions].partitioner;\n        const { idempotent, partitioner } = options;\n        if (idempotent) {\n            options.acks ??= ProduceAcks.ALL;\n        }\n        else {\n            options.acks ??= ProduceAcks.LEADER;\n        }\n        // We still need to initialize the producerId\n        if (idempotent) {\n            if (!this.#producerInfo) {\n                const { messages, ...initOptions } = options;\n                this.initIdempotentProducer(initOptions, error => {\n                    if (error) {\n                        callback(error, undefined);\n                        return;\n                    }\n                    this.#send(options, callback);\n                });\n                return;\n            }\n            if (typeof options.producerId !== 'undefined' || typeof options.producerEpoch !== 'undefined') {\n                callback(new UserError('Cannot specify producerId or producerEpoch when using idempotent producer.'), undefined);\n                return;\n            }\n            if (options.acks !== ProduceAcks.ALL) {\n                callback(new UserError('Idempotent producer requires acks to be ALL (-1).'), undefined);\n                return;\n            }\n        }\n        const produceOptions = {\n            compression: options.compression ?? this[kOptions].compression,\n            producerId: idempotent ? this.#producerInfo.producerId : options.producerId,\n            producerEpoch: idempotent ? this.#producerInfo.producerEpoch : options.producerEpoch,\n            sequences: idempotent ? this.#sequences : undefined\n        };\n        // Build messages records out of messages\n        const topics = new Set();\n        const messages = [];\n        for (const message of options.messages) {\n            const topic = message.topic;\n            let headers = new Map();\n            const serializedHeaders = new Map();\n            if (message.headers) {\n                headers =\n                    message.headers instanceof Map\n                        ? message.headers\n                        : new Map(Object.entries(message.headers));\n                for (const [key, value] of headers) {\n                    serializedHeaders.set(this.#headerKeySerializer(key), this.#headerValueSerializer(value));\n                }\n            }\n            const key = this.#keySerializer(message.key, headers);\n            const value = this.#valueSerializer(message.value, headers);\n            let partition = 0;\n            if (typeof message.partition !== 'number') {\n                if (partitioner) {\n                    partition = partitioner(message);\n                }\n                else if (key) {\n                    partition = murmur2(key) >>> 0;\n                }\n                else {\n                    // Use the roundrobin\n                    partition = this.#partitionsRoundRobin.postIncrement(topic, 1, 0);\n                }\n            }\n            else {\n                partition = message.partition;\n            }\n            topics.add(topic);\n            messages.push({\n                key,\n                value,\n                headers: serializedHeaders,\n                topic,\n                partition,\n                timestamp: message.timestamp\n            });\n        }\n        this.#performSend(Array.from(topics), messages, options, produceOptions, callback);\n    }\n    #performSend(topics, messages, sendOptions, produceOptions, callback) {\n        // Get the metadata with the topic/partitions informations\n        this[kMetadata]({ topics, autocreateTopics: sendOptions.autocreateTopics }, (error, metadata) => {\n            if (error) {\n                callback(error, undefined);\n                return;\n            }\n            const messagesByDestination = new Map();\n            // Track the number of messages per partition so we can update the sequence number\n            const messagesPerPartition = new NumericMap();\n            // Normalize the partition of all messages, then enqueue them to their destination\n            for (const message of messages) {\n                message.partition %= metadata.topics.get(message.topic).partitionsCount;\n                const { topic, partition } = message;\n                const leader = metadata.topics.get(topic).partitions[partition].leader;\n                let destination = messagesByDestination.get(leader);\n                if (!destination) {\n                    destination = [];\n                    messagesByDestination.set(leader, destination);\n                }\n                const messagePartitionKey = `${message.topic}:${partition}`;\n                messagesPerPartition.postIncrement(messagePartitionKey, 1, 0);\n                destination.push(message);\n            }\n            // Track nodes so that we can get their ID for delayed write reporting\n            const nodes = [];\n            runConcurrentCallbacks('Producing messages failed.', messagesByDestination, ([destination, destinationMessages], concurrentCallback) => {\n                nodes.push(destination);\n                this.#performSingleDestinationSend(topics, destinationMessages, this[kOptions].timeout, sendOptions.acks, sendOptions.autocreateTopics, sendOptions.repeatOnStaleMetadata, produceOptions, concurrentCallback);\n            }, (error, apiResults) => {\n                if (error) {\n                    callback(error, undefined);\n                    return;\n                }\n                this.#metricsProducedMessages?.inc(messages.length);\n                const results = {};\n                if (sendOptions.acks === ProduceAcks.NO_RESPONSE) {\n                    const unwritableNodes = [];\n                    for (let i = 0; i < apiResults.length; i++) {\n                        if (apiResults[i] === false) {\n                            unwritableNodes.push(nodes[i]);\n                        }\n                    }\n                    results.unwritableNodes = unwritableNodes;\n                }\n                else {\n                    const topics = [];\n                    for (const result of apiResults) {\n                        for (const { name, partitionResponses } of result.responses) {\n                            for (const partitionResponse of partitionResponses) {\n                                topics.push({\n                                    topic: name,\n                                    partition: partitionResponse.index,\n                                    offset: partitionResponse.baseOffset\n                                });\n                                const partitionKey = `${name}:${partitionResponse.index}`;\n                                this.#sequences.postIncrement(partitionKey, messagesPerPartition.get(partitionKey), 0);\n                            }\n                        }\n                        results.offsets = topics;\n                    }\n                }\n                callback(null, results);\n            });\n        });\n    }\n    #performSingleDestinationSend(topics, messages, timeout, acks, autocreateTopics, repeatOnStaleMetadata, produceOptions, callback) {\n        // Get the metadata with the topic/partitions informations\n        this[kMetadata]({ topics, autocreateTopics }, (error, metadata) => {\n            if (error) {\n                callback(error, undefined);\n                return;\n            }\n            const { topic, partition } = messages[0];\n            const leader = metadata.topics.get(topic).partitions[partition].leader;\n            this[kPerformWithRetry]('produce', retryCallback => {\n                this[kGetConnection](metadata.brokers.get(leader), (error, connection) => {\n                    if (error) {\n                        retryCallback(error, undefined);\n                        return;\n                    }\n                    this[kGetApi]('Produce', (error, api) => {\n                        if (error) {\n                            retryCallback(error, undefined);\n                            return;\n                        }\n                        api(connection, acks, timeout, messages, produceOptions, retryCallback);\n                    });\n                });\n            }, (error, results) => {\n                if (error) {\n                    // If the last error was due to stale metadata, we retry the operation with this set of messages\n                    // since the partition is already set, it should attempt on the new destination\n                    const hasStaleMetadata = error.findBy('hasStaleMetadata', true);\n                    if (hasStaleMetadata && repeatOnStaleMetadata) {\n                        this[kClearMetadata]();\n                        this.#performSingleDestinationSend(topics, messages, timeout, acks, autocreateTopics, false, produceOptions, callback);\n                        return;\n                    }\n                    callback(error, undefined);\n                    return;\n                }\n                callback(error, results);\n            }, 0, [], (error) => {\n                return repeatOnStaleMetadata && !!error.findBy('hasStaleMetadata', true);\n            });\n        });\n    }\n}\n", "import { Writer, Reader } from 'protobufjs';\nimport { DeepPartial } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/resource_base.js';\n\ntype MessageType<T = any> = {\n  encode(message: T, writer?: Writer): Writer;\n  decode(input: Reader | Uint8Array, length?: number): T;\n  fromPartial(input: DeepPartial<T>): T;\n};\n\nexport interface ProtoMetadata {\n  references: {\n    [key: string]: MessageType;\n  };\n}\n\nconst objectRegistry = new Map<string, MessageType>();\n\nexport const registerProtoMeta = (...protoMeta: ProtoMetadata[]) => {\n  protoMeta.forEach(proto => {\n    Object.entries(proto.references).forEach(([reference, message]) => {\n      objectRegistry.set(reference, message);\n    });\n  });\n};\n\nconst getMessage = (messageObject: string): MessageType => {\n  if (!messageObject.startsWith('.')) {\n    messageObject = '.' + messageObject;\n  }\n\n  if (!objectRegistry.has(messageObject)) {\n    throw new Error('Proto registry does not contain message definition for: ' + messageObject);\n  }\n\n  return objectRegistry.get(messageObject);\n};\n\nexport const encodeMessage = <T = any>(message: T, messageObject: string): Uint8Array => {\n  return getMessage(messageObject).encode(getMessage(messageObject).fromPartial(message)).finish();\n};\n\nexport const decodeMessage = <T = any>(message: Reader | Uint8Array, messageObject: string): T => {\n  return getMessage(messageObject).decode(message);\n};\n\nexport { DeepPartial };", "\nexport const decomposeError = (error: any) => {\n  const { code, message, details, stack } = error;\n  return { code, message, details, stack };\n}", "import { isNullish, isArray } from 'remeda';\nimport { Logger } from '@restorecommerce/logger';\nimport { EventProvider, Topic } from '../../interface.js';\n\ninterface EventData {\n  listeners: ((bufferObj: any, context: any, config: any, eventName: string) => Promise<void>)[];\n  messages: any[];\n}\n\n/**\n * Topic handles listening and sending events to a specific topic.\n */\nexport class LocalTopic implements Topic {\n  event: Record<string, EventData>;\n  name: string;\n  logger: Logger;\n  config: any;\n  subscribed: any;\n  emitter: any;\n  provider: any;\n\n  /**\n   * @param {string} topicName\n   * @param {Logger} logger\n   */\n  constructor(topicName: string, logger: Logger, config: any) {\n    this.event = {};\n    this.name = topicName;\n    this.logger = logger;\n    this.config = config;\n  }\n  $reset(eventName: string, offset: bigint): Promise<void> {\n    throw new Error('Method not implemented.');\n  }\n  $resetConsumer(eventNames: string[], offset: bigint): Promise<void> {\n    throw new Error('Method not implemented.');\n  }\n  commitCurrentOffsets(): Promise<void> {\n    throw new Error('Method not implemented.');\n  }\n  $wait(arg0: bigint): Promise<void> {\n    throw new Error('Method not implemented.');\n  }\n  $offset(arg0: bigint): Promise<bigint> {\n    throw new Error('Method not implemented.');\n  }\n\n  /**\n   * Listen to eventName events with listener.\n   *\n   * @param {string} eventName Identification name of the event.\n   * @param {function} listener Event listener.\n   */\n  async on(eventName: string, listener: any): Promise<any> {\n    if (isNullish(this.event[eventName])) {\n      this.event[eventName] = {\n        listeners: [],\n        messages: [],\n      };\n    }\n    this.event[eventName].listeners.push(listener);\n  }\n\n  /**\n   * Encode the given message object using protobufjs (pbjs).\n   *\n   * @param  {Object} msg\n   * @param  {string} messageObject\n   * @return {Object} buffer\n   */\n  async encodeObject(msg: object, messageObject: string): Promise<any> {\n    return msg;\n  }\n\n  /**\n   * Send message to listeners listening to eventName events.\n   *\n   * @param {string} eventName Identification name of the event.\n   * @param {object} message Event message which is send to all listeners.\n   */\n  async emit(eventName: string, message: any | any[]): Promise<void> {\n    const e = this.event[eventName];\n    if (isNullish(e)) {\n      return;\n    }\n    e.messages ??= [];\n    const currentOffset = e.messages.length;\n    const messages = isArray(message) ? message : [message];\n    e.messages.push(...messages);\n    const listeners = e.listeners ?? [];\n    const logger = this.logger;\n    const messageObject = this.config[eventName].messageObject;\n    for (const listener of listeners) {\n      for (let j = 0; j < messages.length; j += 1) {\n        const context = {\n          offset: currentOffset + j,\n          topic: this.name,\n          logger,\n        };\n\n        const msg = messages[j];\n        const bufferObj = await this.encodeObject(msg, messageObject);\n\n        await listener(bufferObj, context, this.config, eventName);\n      }\n    }\n  }\n\n  /**\n   * Number of listener which are listening to eventName event.\n   * @param {string} eventName Identification name of the event.\n   * @return {number} Number of listeners.\n   */\n  async listenerCount(eventName: string): Promise<number> {\n    const e = this.event[eventName];\n    if (isNullish(e)) {\n      return 0;\n    }\n    return e.listeners.length;\n  }\n\n  /**\n   * Is a listener listening to eventName event.\n   * @param {string} eventName Identification name of the event.\n   * @return {boolean} True if any listener is listening, otherwise false.\n   */\n  async hasListeners(eventName: string): Promise<boolean> {\n    const e = this.event[eventName];\n    if (isNullish(e)) {\n      return false;\n    }\n    return e.listeners.length > 0;\n  }\n\n  /**\n   * Remove listener from eventName event.\n   * @param {string} eventName Identification name of the event.\n   * @param {function} listener Listener function.\n   */\n  async removeListener(eventName: string, listener: any): Promise<any> {\n    const e = this.event[eventName];\n    if (isNullish(e)) {\n      return;\n    }\n    const index = e.listeners.indexOf(listener);\n    if (!index) {\n      e.listeners.splice(index, 1);\n    }\n  }\n\n  /**\n   * Remove all listener listening to eventName event.\n   * @param {string} eventName Identification name of the event.\n   */\n  async removeAllListeners(eventName: string) {\n    delete this.event[eventName];\n  }\n\n  /**\n   * Stop everything\n   */\n  async stop() {\n    this.event = {};\n  }\n}\n\n/**\n * Local is a events provider.\n * It uses in-process communication\n * and does not support sending events to other processes or hosts.\n */\nexport class Local implements EventProvider {\n  config: any;\n  logger: Logger;\n  topics: Record<string, Topic>;\n  admin: any;\n\n  constructor(config: any, logger: Logger) {\n    this.topics = {};\n    this.logger = logger;\n    this.config = config;\n  }\n\n  /**\n   * Return topicName topic.\n   * @param {string} topicName The identification name of the topic.\n   * @return {Topic}\n   */\n  async topic(topicName: string, config: any): Promise<any> {\n    if (this.topics[topicName]) {\n      return this.topics[topicName];\n    }\n    this.topics[topicName] = new LocalTopic(topicName, this.logger, config);\n    return this.topics[topicName];\n  }\n\n  /**\n   * Initialize the event provider.\n   */\n  async start(): Promise<void> {\n    if (isNullish(this.topics)) {\n      this.topics = {};\n    }\n  }\n\n  /**\n   * Stop the event provider and all event communication.\n   */\n  async stop(): Promise<void> {\n    await Promise.allSettled(\n      Object.values(this.topics).map((topic) => {\n        topic.stop();\n      })\n    )\n  };\n\n  async delete(topics: string[]): Promise<void> {\n    for (const topic of topics) {\n      delete this.topics[topic];\n    }\n  }\n\n  async deleteAll(): Promise<void> {\n    this.topics = {};\n  }\n}\n\n/**\n * Name of the event provider.\n */\nexport const Name = 'local';\n", "// The MIT License (MIT)\n\n// Copyright (c) 2022 Paul Sanchez\n\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\n// NOTE: Typescipt and ESM yields \"S2A This expression is not constructable\"\n\nimport { Readable } from 'node:stream';\n\nconst NOT_READABLE: unique symbol = Symbol('not readable');\nconst READABLE: unique symbol = Symbol('readable');\nconst ENDED: unique symbol = Symbol('ended');\nconst ERRORED: unique symbol = Symbol('errored');\nconst STATES = {\n  notReadable: NOT_READABLE,\n  readable: READABLE,\n  ended: ENDED,\n  errored: ERRORED,\n} as const;\ntype States = typeof STATES[keyof typeof STATES];\n\n/*\n * A contract for a promise that requires a clean up\n * function be called after the promise finishes.\n */\ntype ClosablePromise<T> = {\n  promise: Promise<T>;\n  close: () => void;\n};\n\nexport type StreamToAsyncIteratorOptions = {\n  /** The size of each read from the stream for each iteration */\n  size?: number;\n};\n\n/**\n * Wraps a stream into an object that can be used as an async iterator.\n *\n * This will keep a stream in a paused state, and will only read from the stream on each\n * iteration. A size can be supplied to set an explicit call to `stream.read([size])` in\n * the options for each iteration.\n */\nexport default class StreamToAsyncIterator<T = unknown>\nimplements AsyncIterableIterator<T>\n{\n  /** The underlying readable stream */\n  private _stream: Readable;\n  /** Contains stream's error when stream has error'ed out */\n  private _error: Error | undefined;\n  /** The current state of the iterator (not readable, readable, ended, errored) */\n  private _state: States = STATES.notReadable;\n  private _size: number | undefined;\n  /** The rejections of promises to call when stream errors out */\n  private _rejections: Set<(err: Error) => void> = new Set();\n  get closed() {\n    return this._state === STATES.ended;\n  }\n\n  constructor(stream: Readable, { size }: StreamToAsyncIteratorOptions = {}) {\n    this._stream = stream;\n    this._size = size;\n\n    const bindMethods = ['_handleStreamEnd', '_handleStreamError'] as const;\n    for (const method of bindMethods) {\n      Object.defineProperty(this, method, {\n        configurable: true,\n        writable: true,\n        value: this[method].bind(this),\n      });\n    }\n\n\n    stream.once('error', this._handleStreamError);\n\n    stream.once('end', this._handleStreamEnd);\n  }\n\n  [Symbol.asyncIterator]() {\n    return this;\n  }\n\n  /**\n     * Returns the next iteration of data. Rejects if the stream errored out.\n     */\n  async next(): Promise<IteratorResult<T, void>> {\n    switch (this._state) {\n      case STATES.notReadable: {\n        let untilReadable;\n        let untilEnd;\n        try {\n          untilReadable = this._untilReadable();\n          untilEnd = this._untilEnd();\n          await Promise.race([\n            untilReadable.promise,\n            untilEnd.promise,\n          ]);\n        } finally {\n          // need to clean up any hanging event listeners\n          if (untilReadable != null) {\n            untilReadable.close();\n          }\n          if (untilEnd != null) {\n            untilEnd.close();\n          }\n        }\n        return this.next();\n      }\n      case STATES.ended: {\n        this.close();\n        return { done: true, value: undefined };\n      }\n      case STATES.errored: {\n        this.close();\n        throw this._error;\n      }\n      case STATES.readable: {\n        // stream.read returns null if not readable or when stream has ended\n        // todo: Could add a way to ensure data-type/shape of reads to make this type safe\n\n        const data: T = this._size\n          ? this._stream.read(this._size)\n          : this._stream.read();\n\n        if (data !== null) {\n          return { done: false, value: data };\n        } else {\n          // we're no longer readable, need to find out what state we're in\n          this._state = STATES.notReadable;\n          // need to let event loop run to fill stream buffer\n          await new Promise(setImmediate);\n          return this.next();\n        }\n      }\n    }\n  }\n\n  /**\n     * Waits until the stream is readable. Rejects if the stream errored out.\n     * @returns Promise when stream is readable\n     */\n  private _untilReadable(): ClosablePromise<void> {\n    // let is used here instead of const because the exact reference is\n    // required to remove it, this is why it is not a curried function that\n    // accepts resolve & reject as parameters.\n    let handleReadable: (() => void) | undefined = undefined;\n\n    const promise = new Promise<void>((resolve, reject) => {\n      handleReadable = () => {\n        this._state = STATES.readable;\n        this._rejections.delete(reject);\n        resolve();\n      };\n\n      this._stream.once('readable', handleReadable);\n      this._rejections.add(reject);\n    });\n\n    const cleanup = () => {\n      if (handleReadable != null) {\n        this._stream.removeListener('readable', handleReadable);\n      }\n    };\n\n    return { close: cleanup, promise };\n  }\n\n  /**\n     * Waits until the stream is ended. Rejects if the stream errored out.\n     * @returns Promise when stream is finished\n     */\n  private _untilEnd(): ClosablePromise<void> {\n    let handleEnd: (() => void) | undefined = undefined;\n\n    const promise = new Promise<void>((resolve, reject) => {\n      handleEnd = () => {\n        this._state = STATES.ended;\n        this._rejections.delete(reject);\n        resolve();\n      };\n\n      this._stream.once('end', handleEnd);\n      this._rejections.add(reject);\n    });\n\n    const cleanup = () => {\n      if (handleEnd != null) {\n        this._stream.removeListener('end', handleEnd);\n      }\n    };\n\n    return { close: cleanup, promise };\n  }\n\n  return(): Promise<IteratorResult<T, void>> {\n    this._state = STATES.ended;\n    return this.next();\n  }\n\n  throw(err?: Error): Promise<IteratorResult<T, void>> {\n    this._error = err;\n    this._state = STATES.errored;\n    return this.next();\n  }\n\n  /**\n     * Destroy the stream\n     * @param err An optional error to pass to the stream for an error event\n     */\n  close(err?: Error) {\n\n    this._stream.removeListener('end', this._handleStreamEnd);\n\n    this._stream.removeListener('error', this._handleStreamError);\n\n    this._state = STATES.ended;\n    this._stream.destroy(err);\n  }\n\n  private _handleStreamError(err: Error) {\n    this._error = err;\n    this._state = STATES.errored;\n    for (const reject of this._rejections) {\n      reject(err);\n    }\n  }\n\n  private _handleStreamEnd() {\n    this._state = STATES.ended;\n  }\n}", "import { type MethodDescriptorProto, type ServiceDescriptorProto } from 'ts-proto-descriptors';\nimport { type ProtoMetadata, type ServiceConfig, type SubSpaceServiceConfig } from './types.js';\nimport {\n  GraphQLSchema,\n  GraphQLNonNull,\n  GraphQLObjectType,\n  GraphQLString,\n  type ThunkObjMap,\n  GraphQLEnumType,\n  type GraphQLFieldConfig,\n  type GraphQLFieldConfigArgumentMap,\n  type GraphQLFieldConfigMap\n} from 'graphql';\nimport { getWhitelistBlacklistConfig, Mutate } from './graphql.js';\nimport { capitalize, capitalizeProtoName, getUseSubscriptions, getServiceName } from './utils.js';\nimport { getTyping } from './registry.js';\n\nconst typeCache = new Map<string, GraphQLObjectType>();\n\nconst subscriptionAction = new GraphQLEnumType({\n  name: 'SubscriptionAction',\n  values: {\n    CREATED: {value: 'CREATED'},\n    UPDATED: {value: 'UPDATED'},\n    DELETED: {value: 'DELETED'}\n  }\n});\n\nconst subscriptionInput: GraphQLFieldConfigArgumentMap = {\n  action: {\n    type: subscriptionAction\n  }\n};\n\nconst subscriptionOutput = new GraphQLObjectType({\n  name: 'SubscriptionOutput',\n  fields: {\n    id: {\n      type: GraphQLString\n    }\n  }\n});\n\nexport const getGQLSchema = <TSource, TContext>\n(method: MethodDescriptorProto): GraphQLFieldConfig<TSource, TContext> => {\n  const fields: any = {};\n\n  const responseTyping = getTyping(method.outputType!);\n  if (!responseTyping) {\n    throw Error('Method doesn\\'t have registered typings: ' + method.outputType!);\n  }\n\n  if (method.outputType! !== '.google.protobuf.Empty') {\n    fields['details'] = {\n      type: responseTyping.output,\n    };\n  }\n\n  const outName = 'Proto' + capitalizeProtoName(method.outputType!);\n\n  let out = typeCache.get(outName);\n  if (!out) {\n    out = new GraphQLObjectType({\n      name: outName,\n      fields,\n    });\n    typeCache.set(outName, out);\n  }\n\n  const typing = getTyping(method.inputType!);\n  if (!typing) {\n    throw Error('Method doesn\\'t have registered typings: ' + method.inputType!);\n  }\n\n  return {\n    type: out,\n    args: method.inputType! === '.google.protobuf.Empty' ? undefined : {\n      input: {\n        type: new GraphQLNonNull(typing.input!)\n      }\n    }\n  };\n};\n\nexport const getGQLSchemas = <TSource, TContext>(service: ServiceDescriptorProto): GraphQLFieldConfigMap<TSource, TContext> => {\n  return service.method?.reduce((obj, method) => {\n    obj[method.name!] = getGQLSchema(method);\n    return obj;\n  }, {} as any);\n};\n\ntype SchemaBaseOrSub =\n  ThunkObjMap<GraphQLFieldConfig<any, any>>\n  | Map<string, ThunkObjMap<GraphQLFieldConfig<any, any>>>;\nconst namespaceResolverSchemaRegistry = new Map<string, Map<boolean, Map<string, SchemaBaseOrSub>>>();\n\nconst subscriptionFields: Record<string, GraphQLFieldConfigMap<any, GraphQLFieldConfig<any, any>>> = {};\n\nexport const registerResolverSchema = (namespace: string, name: string, schema: SchemaBaseOrSub, mutation = false, subspace: string | undefined = undefined, config: ServiceConfig) => {\n  if (!namespaceResolverSchemaRegistry.has(namespace)) {\n    namespaceResolverSchemaRegistry.set(namespace, new Map());\n  }\n\n  if ( subspace && (config as any)[subspace]) {\n    const blacklistMethods = (config as any)[subspace].methods.blacklist;\n    if (blacklistMethods.includes(name)) {\n      return;\n    }\n  }\n\n  if (!namespaceResolverSchemaRegistry.get(namespace)!.has(mutation)) {\n    namespaceResolverSchemaRegistry.get(namespace)!.set(mutation, new Map());\n  }\n\n  let space = namespaceResolverSchemaRegistry.get(namespace)!.get(mutation)!;\n  if (subspace) {\n    if (!space.has(subspace)) {\n      space.set(subspace, new Map());\n    }\n    space = space.get(subspace)! as Map<string, ThunkObjMap<GraphQLFieldConfig<any, any>>>;\n  }\n\n  if (space.has(name)) {\n    if (subspace) {\n      throw new Error(`Namespace \"${namespace}\".\"${subspace}\" already contains a schema: ${name} (mutation: ${mutation})`);\n    } else {\n      throw new Error(`Namespace \"${namespace}\" already contains a schema: ${name} (mutation: ${mutation})`);\n    }\n  }\n\n  // register create, update and upsert with Mutate\n  if (Mutate.indexOf(name) > -1) {\n    name = 'Mutate';\n  }\n  space.set(name, schema);\n};\n\nexport const generateSchema = (setup: { prefix: string; namespace: string }[]) => {\n  const queryFields: GraphQLFieldConfigMap<any, any> = {};\n  const mutationFields: GraphQLFieldConfigMap<any, any> = {};\n  const subFields: GraphQLFieldConfigMap<any, any> = {};\n\n  setup.forEach(s => {\n    if (!namespaceResolverSchemaRegistry.has(s.namespace)) {\n      throw new Error(`Namespace \"${s.namespace}\" has no registered schemas`);\n    }\n\n    if (namespaceResolverSchemaRegistry.get(s.namespace)!.has(false)) {\n      const fields: GraphQLFieldConfigMap<any, any> = {};\n\n      namespaceResolverSchemaRegistry.get(s.namespace)!.get(false)!.forEach((value, key) => {\n        if (value instanceof Map) {\n          const capitalName = capitalizeProtoName(key);\n          fields[key] = {\n            type: new GraphQLNonNull(new GraphQLObjectType({\n              name: s.prefix + capitalName + 'Query',\n              fields: Object.fromEntries(value) as unknown as GraphQLFieldConfigMap<any, any>,\n            }))\n          };\n        } else {\n          fields[key] = value as any;\n        }\n      });\n\n      queryFields[s.namespace] = {\n        type: new GraphQLNonNull(new GraphQLObjectType({\n          name: s.prefix + 'Query',\n          fields\n        }))\n      };\n    }\n\n    if (namespaceResolverSchemaRegistry.get(s.namespace)!.has(true)) {\n      const fields: GraphQLFieldConfigMap<any, any> = {};\n\n      namespaceResolverSchemaRegistry.get(s.namespace)!.get(true)!.forEach((value, key) => {\n        if (value instanceof Map) {\n          const capitalName = capitalizeProtoName(key);\n          fields[key] = {\n            type: new GraphQLNonNull(new GraphQLObjectType({\n              name: s.prefix + capitalName + 'Mutation',\n              fields: Object.fromEntries(value) as unknown as GraphQLFieldConfigMap<any, any>,\n            }))\n          };\n        } else {\n          fields[key] = value as any;\n        }\n      });\n\n      mutationFields[s.namespace] = {\n        type: new GraphQLNonNull(new GraphQLObjectType({\n          name: s.prefix + 'Mutation',\n          fields\n        }))\n      };\n    }\n\n    if (s.namespace in subscriptionFields) {\n      for (let [k, v] of Object.entries(subscriptionFields[s.namespace])) {\n        subFields[k] = v;\n      }\n    }\n  });\n\n  const config: any = {};\n\n  if (Object.keys(queryFields).length > 0) {\n    config.query = new GraphQLObjectType({\n      name: 'Query',\n      fields: queryFields\n    });\n  }\n\n  if (Object.keys(mutationFields).length > 0) {\n    config.mutation = new GraphQLObjectType({\n      name: 'Mutation',\n      fields: mutationFields\n    });\n  }\n\n  if (Object.keys(subFields).length > 0) {\n    config.subscription = new GraphQLObjectType({\n      name: 'Subscription',\n      fields: subFields\n    });\n  }\n\n  return new GraphQLSchema({\n    ...config,\n  });\n};\n\nexport const generateSubServiceSchemas = (subServices: ProtoMetadata[], config: SubSpaceServiceConfig, namespace: string, prefix: string): GraphQLSchema => {\n  subServices.forEach((meta) => {\n    meta.fileDescriptor.service.forEach(service => {\n      if (service.name) {\n        const subName = getServiceName(service.name);\n        const {mutations, queries} = getWhitelistBlacklistConfig(service, config, meta, subName);\n\n        const schemas = getGQLSchemas(service);\n\n        Object.keys(schemas).forEach(key => {\n          registerResolverSchema(config.root ? subName : namespace, key, schemas[key] as any, !queries.has(key) && mutations.has(key), config.root ? undefined : subName, config);\n        });\n      }\n    });\n\n    if (getUseSubscriptions()) {\n      Object.entries(meta.options?.messages || {}).forEach(([messageName, option]) => {\n        if (option.options && 'kafka_subscriber' in option.options) {\n          const fieldName = namespace + capitalize(option.options.kafka_subscriber.plural);\n          const typing = getTyping('.' + meta.fileDescriptor.package + '.' + messageName);\n\n          if (typing) {\n            if (!(namespace in subscriptionFields)) {\n              subscriptionFields[namespace] = {};\n            }\n\n            subscriptionFields[namespace][fieldName] = {\n              // TODO Implement user lookup\n              // type: typing?.output!,\n              type: subscriptionOutput,\n              args: subscriptionInput\n            };\n          }\n        }\n      });\n    }\n  });\n\n  if (config.root) {\n    return generateSchema(subServices.flatMap(meta => {\n      return meta.fileDescriptor.service.map(service => {\n        if (service.name) {\n          const subName = getServiceName(service.name);\n\n          return ({\n            prefix: prefix + subName.substring(0, 1).toUpperCase() + subName.substring(1).toLowerCase(),\n            namespace: subName\n          } as any);\n        }\n        return undefined;\n      }).filter(Boolean);\n    }));\n  }\n\n  return generateSchema([{prefix, namespace}]);\n};\n", "import { type GrpcClientConfig } from '@restorecommerce/grpc-client';\nimport { type FacadeContext, type FacadeModule } from '../../interfaces.js';\nimport { type OIDCConfig } from './oidc/index.js';\nimport { type ServiceConfig } from '../../gql/protos/index.js';\nimport { type IdentitySrvGrpcClient } from './grpc/index.js';\n\nexport interface IdentityServiceConfig extends ServiceConfig {\n  root: boolean;\n}\n\nexport interface IdentityConfig  {\n  config: IdentityServiceConfig;\n  identitySrvClientConfig: GrpcClientConfig;\n  oidc?: OIDCConfig;\n  oauth?: boolean;\n}\n\nexport interface IdentityContext extends FacadeContext {\n  identity: {\n    client: IdentitySrvGrpcClient;\n  };\n}\n\nexport type IdentityModule = FacadeModule<IdentityContext>;\n\nexport const namespace = 'identity';\n", "import { registerTypings, subServices } from './types.js';\nimport { generateSubServiceSchemas } from '../../../gql/protos/index.js';\nimport { namespace, type IdentityServiceConfig } from '../interfaces.js';\n\nregisterTypings();\n\nexport const schema = (cfg: IdentityServiceConfig) => generateSubServiceSchemas(subServices, cfg, namespace, 'Identity');\n", "import { schema } from './schema.js';\nimport { type IdentityServiceConfig, namespace } from '../interfaces.js';\nimport { buildFederatedSubscriptionSchema } from '../../../gql/protos/index.js';\nimport { subServices } from './types.js';\n\nexport const FederatedResourceSchema = (cfg: IdentityServiceConfig) => buildFederatedSubscriptionSchema(subServices, cfg, namespace, schema(cfg));\n", "const SET_BOLD_YELLOW_TEXT = '\\x1b[33;1m';\nconst SET_BOLD_RED_TEXT = '\\x1b[31;1m';\nconst RESET_ALL_ATTRIBUTES = '\\x1b[0m';\n\nlet stdout;\nif (globalThis.process?.stdout?.isTTY) {\n  stdout = (str) => `${SET_BOLD_YELLOW_TEXT}${str}${RESET_ALL_ATTRIBUTES}`;\n}\n\nlet stderr;\nif (globalThis.process?.stderr?.isTTY) {\n  stderr = (str) => `${SET_BOLD_RED_TEXT}${str}${RESET_ALL_ATTRIBUTES}`;\n}\n\nexport function info(str) {\n  const notice = `oidc-provider NOTICE: ${str}`;\n  console.info(stdout ? stdout(notice) : notice); // eslint-disable-line no-console\n}\n\nexport function warn(str) {\n  const warning = `oidc-provider WARNING: ${str}`;\n  console.warn(stderr ? stderr(warning) : warning); // eslint-disable-line no-console\n}\n", "import { strict as assert } from 'node:assert';\nimport * as util from 'node:util';\n\nimport QuickLRU from 'quick-lru';\nimport Koa from 'koa';\n\nimport Configuration from './helpers/configuration.js';\nimport * as instance from './helpers/weak_cache.js';\nimport inititalizeKeyStore from './helpers/initialize_keystore.js';\nimport initializeAdapter from './helpers/initialize_adapter.js';\nimport initializeApp from './helpers/initialize_app.js';\nimport initializeClients from './helpers/initialize_clients.js';\nimport ResourceServer from './helpers/resource_server.js';\nimport { isWebUri } from './helpers/valid_url.js';\nimport epochTime from './helpers/epoch_time.js';\nimport getClaims from './helpers/claims.js';\nimport getContext from './helpers/oidc_context.js';\nimport { SessionNotFound, OIDCProviderError } from './helpers/errors.js';\nimport * as models from './models/index.js';\nimport ServerChallenge from './helpers/challenge.js';\nimport als from './helpers/als.js';\n\nexport class Provider extends Koa {\n  #AccessToken;\n\n  #AuthorizationCode;\n\n  #BaseToken;\n\n  #Claims;\n\n  #Client;\n\n  #ClientCredentials;\n\n  #DeviceCode;\n\n  #BackchannelAuthenticationRequest;\n\n  #Grant;\n\n  #IdToken;\n\n  #InitialAccessToken;\n\n  #Interaction;\n\n  #mountPath;\n\n  #OIDCContext;\n\n  #PushedAuthorizationRequest;\n\n  #RefreshToken;\n\n  #RegistrationAccessToken;\n\n  #ReplayDetection;\n\n  #Session;\n\n  #exec;\n\n  #int = {\n    dynamicClients: new QuickLRU({ maxSize: 100 }),\n  };\n\n  constructor(issuer, setup) {\n    assert(issuer, 'first argument must be the Issuer Identifier, i.e. https://op.example.com');\n    assert.equal(typeof issuer, 'string', 'Issuer Identifier must be a string');\n    assert(isWebUri(issuer), 'Issuer Identifier must be a valid web uri');\n\n    const {\n      pathname, host, protocol, search, hash, href,\n    } = new URL(issuer);\n    assert(host, 'Issuer Identifier must have a host component');\n    assert(protocol, 'Issuer Identifier must have an URI scheme component');\n    assert(!search && !href.endsWith('?'), 'Issuer Identifier must not have a query component');\n    assert(!hash && !href.endsWith('#'), 'Issuer Identifier must not have a fragment component');\n\n    super();\n\n    this.issuer = issuer;\n\n    const configuration = new Configuration(setup);\n    instance.set(this, this.#int);\n\n    this.#int.configuration = configuration;\n    this.#int.features = configuration.features;\n\n    if (Array.isArray(configuration.cookies.keys)) {\n      if (configuration.cookies.keys.length) {\n        this.keys = configuration.cookies.keys;\n      }\n    } else if (configuration.cookies.keys) {\n      this.keys = configuration.cookies.keys;\n    }\n\n    if (\n      configuration.features.dPoP.enabled\n      && configuration.features.dPoP.nonceSecret !== undefined\n    ) {\n      try {\n        this.#int.DPoPNonces = new ServerChallenge(configuration.features.dPoP.nonceSecret, 'DPoP');\n      } catch (cause) {\n        throw new TypeError('features.dPoP.nonceSecret secret must be a 32-byte Buffer instance', { cause });\n      }\n    }\n\n    if (configuration.features.attestClientAuth.enabled) {\n      try {\n        this.#int.AttestChallenges = new ServerChallenge(\n          configuration.features.attestClientAuth.challengeSecret,\n          'OAuth-Client-Attestation-PoP',\n        );\n      } catch (cause) {\n        throw new TypeError('features.attestClientAuth.challengeSecret secret must be a 32-byte Buffer instance', { cause });\n      }\n    }\n\n    this.#int.responseModes = new Map();\n    this.#int.grantTypeHandlers = new Map();\n    this.#int.grantTypeDupes = new Map();\n    this.#int.grantTypeParams = new Map([[undefined, new Set()]]);\n    this.#int.BaseModel = models.getBaseModel(this);\n\n    this.#mountPath = pathname.endsWith('/') ? pathname.slice(0, -1) : pathname;\n\n    initializeAdapter.call(this, configuration.adapter);\n\n    inititalizeKeyStore.call(this, configuration.jwks);\n    delete configuration.jwks;\n\n    this.#exec = initializeApp.call(this);\n    Koa.prototype.use.call(this, this.#exec);\n\n    initializeClients.call(this, configuration.clients);\n    delete configuration.clients;\n  }\n\n  urlFor(name, opt) {\n    return new URL(this.pathFor(name, opt), this.issuer).href;\n  }\n\n  registerGrantType(name, handler, params, dupes) {\n    this.#int.configuration.grantTypes.add(name);\n\n    const { grantTypeHandlers, grantTypeParams, grantTypeDupes } = this.#int;\n\n    const grantParams = new Set(['grant_type']);\n    grantTypeHandlers.set(name, handler);\n\n    if (dupes && typeof dupes === 'string') {\n      grantTypeDupes.set(name, new Set([dupes]));\n    } else if (dupes && (Array.isArray(dupes) || dupes instanceof Set)) {\n      grantTypeDupes.set(name, new Set(dupes));\n    }\n\n    if (params && typeof params === 'string') {\n      grantParams.add(params);\n    } else if (params && (Array.isArray(params) || params instanceof Set)) {\n      params.forEach(Set.prototype.add.bind(grantParams));\n    }\n\n    grantTypeParams.set(name, grantParams);\n    grantParams.forEach(Set.prototype.add.bind(grantTypeParams.get(undefined)));\n  }\n\n  cookieName(type) {\n    const name = this.#int.configuration.cookies.names[type];\n    if (!name) {\n      throw new Error(`cookie name for type ${type} is not configured`);\n    }\n    return name;\n  }\n\n  registerResponseMode(name, handler) {\n    const { responseModes } = this.#int;\n    if (!responseModes.has(name)) {\n      responseModes.set(name, handler.bind(this));\n    }\n  }\n\n  pathFor(name, { mountPath = this.#mountPath, ...opts } = {}) {\n    const routerUrl = this.#int.router.url(name, opts);\n\n    if (routerUrl instanceof Error) {\n      throw routerUrl;\n    }\n\n    return [mountPath, routerUrl].join('');\n  }\n\n  /**\n   * @name interactionResult\n   * @api public\n   */\n  async interactionResult(req, res, result, { mergeWithLastSubmission = true } = {}) {\n    const interaction = await this.#getInteraction.call(this, req, res);\n\n    if (mergeWithLastSubmission && !('error' in result)) {\n      interaction.result = { ...interaction.lastSubmission, ...result };\n    } else {\n      interaction.result = result;\n    }\n\n    await interaction.save(interaction.exp - epochTime());\n\n    return interaction.returnTo;\n  }\n\n  /**\n   * @name interactionFinished\n   * @api public\n   */\n  async interactionFinished(req, res, result, { mergeWithLastSubmission = true } = {}) {\n    const returnTo = await this.interactionResult(req, res, result, { mergeWithLastSubmission });\n\n    res.statusCode = 303; // eslint-disable-line no-param-reassign\n    res.setHeader('Location', returnTo);\n    res.setHeader('Content-Length', '0');\n    res.end();\n  }\n\n  /**\n   * @name interactionDetails\n   * @api public\n   */\n  async interactionDetails(req, res) {\n    return this.#getInteraction.call(this, req, res);\n  }\n\n  async backchannelResult(request, result, {\n    acr,\n    amr,\n    authTime,\n    sessionUid,\n    expiresWithSession,\n    sid,\n    rar,\n  } = {}) {\n    if (typeof request === 'string' && request) {\n      // eslint-disable-next-line no-param-reassign\n      request = await this.BackchannelAuthenticationRequest.find(request, {\n        ignoreExpiration: true,\n      });\n      if (!request) {\n        throw new Error('BackchannelAuthenticationRequest not found');\n      }\n    } else if (!(request instanceof this.BackchannelAuthenticationRequest)) {\n      throw new TypeError('invalid \"request\" argument');\n    }\n\n    const client = await this.Client.find(request.clientId);\n    if (!client) {\n      throw new Error('Client not found');\n    }\n\n    if (typeof result === 'string' && result) {\n      // eslint-disable-next-line no-param-reassign\n      result = await this.Grant.find(result);\n      if (!result) {\n        throw new Error('Grant not found');\n      }\n    }\n\n    switch (true) {\n      case result instanceof this.Grant:\n        if (request.clientId !== result.clientId) {\n          throw new Error('client mismatch');\n        }\n\n        if (request.accountId !== result.accountId) {\n          throw new Error('accountId mismatch');\n        }\n\n        Object.assign(request, {\n          grantId: result.jti,\n          acr,\n          amr,\n          authTime,\n          sessionUid,\n          expiresWithSession,\n          sid,\n          rar,\n        });\n        break;\n      case result instanceof OIDCProviderError:\n        Object.assign(request, {\n          error: result.error,\n          error_description: result.error_description,\n        });\n        break;\n      default:\n        throw new TypeError('invalid \"result\" argument');\n    }\n\n    await request.save();\n\n    if (client.backchannelTokenDeliveryMode === 'ping') {\n      await client.backchannelPing(request);\n    }\n  }\n\n  get OIDCContext() {\n    this.#OIDCContext ||= getContext(this);\n    return this.#OIDCContext;\n  }\n\n  get Claims() {\n    this.#Claims ||= getClaims(this);\n    return this.#Claims;\n  }\n\n  get BaseToken() {\n    this.#BaseToken ||= models.getBaseToken(this);\n    return this.#BaseToken;\n  }\n\n  get IdToken() {\n    this.#IdToken ||= models.getIdToken(this);\n    return this.#IdToken;\n  }\n\n  get Client() {\n    this.#Client ||= models.getClient(this);\n    return this.#Client;\n  }\n\n  get Grant() {\n    this.#Grant ||= models.getGrant(this);\n    return this.#Grant;\n  }\n\n  get Session() {\n    this.#Session ||= models.getSession(this);\n    return this.#Session;\n  }\n\n  get Interaction() {\n    this.#Interaction ||= models.getInteraction(this);\n    return this.#Interaction;\n  }\n\n  get AccessToken() {\n    this.#AccessToken ||= models.getAccessToken(this);\n    return this.#AccessToken;\n  }\n\n  get AuthorizationCode() {\n    this.#AuthorizationCode ||= models.getAuthorizationCode(this);\n    return this.#AuthorizationCode;\n  }\n\n  get RefreshToken() {\n    this.#RefreshToken ||= models.getRefreshToken(this);\n    return this.#RefreshToken;\n  }\n\n  get ClientCredentials() {\n    this.#ClientCredentials ||= models.getClientCredentials(this);\n    return this.#ClientCredentials;\n  }\n\n  get InitialAccessToken() {\n    this.#InitialAccessToken ||= models.getInitialAccessToken(this);\n    return this.#InitialAccessToken;\n  }\n\n  get RegistrationAccessToken() {\n    this.#RegistrationAccessToken ||= models.getRegistrationAccessToken(this);\n    return this.#RegistrationAccessToken;\n  }\n\n  get DeviceCode() {\n    this.#DeviceCode ||= models.getDeviceCode(this);\n    return this.#DeviceCode;\n  }\n\n  get BackchannelAuthenticationRequest() {\n    this.#BackchannelAuthenticationRequest ||= models.getBackchannelAuthenticationRequest(this);\n    return this.#BackchannelAuthenticationRequest;\n  }\n\n  get PushedAuthorizationRequest() {\n    this.#PushedAuthorizationRequest ||= models.getPushedAuthorizationRequest(this);\n    return this.#PushedAuthorizationRequest;\n  }\n\n  get ReplayDetection() {\n    this.#ReplayDetection ||= models.getReplayDetection(this);\n    return this.#ReplayDetection;\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  get ResourceServer() { return ResourceServer; }\n\n  async #getInteraction(req, res) {\n    const ctx = this.createContext(req, res);\n    const id = ctx.cookies.get(\n      this.cookieName('interaction'),\n      this.#int.configuration.cookies.short,\n    );\n    if (!id) {\n      throw new SessionNotFound('interaction session id cookie not found');\n    }\n    const interaction = await this.Interaction.find(id);\n    if (!interaction) {\n      throw new SessionNotFound('interaction session not found');\n    }\n\n    if (interaction.session?.uid) {\n      const session = await this.Session.findByUid(interaction.session.uid);\n      if (!session) {\n        throw new SessionNotFound('session not found');\n      }\n      if (interaction.session.accountId !== session.accountId) {\n        throw new SessionNotFound('session principal changed');\n      }\n    }\n\n    return interaction;\n  }\n\n  use(fn) {\n    Koa.prototype.use.call(this, fn);\n    this.middleware.splice(this.middleware.indexOf(this.#exec), 0, this.middleware.pop());\n    return this;\n  }\n\n  // eslint-disable-next-line class-methods-use-this\n  get [Symbol.toStringTag]() {\n    return 'Provider';\n  }\n\n  toJSON() {\n    return { issuer: this.issuer };\n  }\n\n  inspect() {\n    return `[${this[Symbol.toStringTag]} ${this.issuer}]`;\n  }\n\n  static get ctx() {\n    return als.getStore();\n  }\n}\n\nObject.defineProperty(Provider.prototype, 'app', {\n  get: util.deprecate(function app() {\n    return this;\n  }, '.app getter is deprecated. The Provider instance is now the Koa app itself'),\n});\n", "export default class QuickLRU extends Map {\n\t#size = 0;\n\t#cache = new Map();\n\t#oldCache = new Map();\n\t#maxSize;\n\t#maxAge;\n\t#onEviction;\n\n\tconstructor(options = {}) {\n\t\tsuper();\n\n\t\tif (!(options.maxSize && options.maxSize > 0)) {\n\t\t\tthrow new TypeError('`maxSize` must be a number greater than 0');\n\t\t}\n\n\t\tif (typeof options.maxAge === 'number' && options.maxAge === 0) {\n\t\t\tthrow new TypeError('`maxAge` must be a number greater than 0');\n\t\t}\n\n\t\tthis.#maxSize = options.maxSize;\n\t\tthis.#maxAge = options.maxAge || Number.POSITIVE_INFINITY;\n\t\tthis.#onEviction = options.onEviction;\n\t}\n\n\t// For tests.\n\tget __oldCache() {\n\t\treturn this.#oldCache;\n\t}\n\n\t#emitEvictions(cache) {\n\t\tif (typeof this.#onEviction !== 'function') {\n\t\t\treturn;\n\t\t}\n\n\t\tfor (const [key, item] of cache) {\n\t\t\tthis.#onEviction(key, item.value);\n\t\t}\n\t}\n\n\t#deleteIfExpired(key, item) {\n\t\tif (typeof item.expiry === 'number' && item.expiry <= Date.now()) {\n\t\t\tif (typeof this.#onEviction === 'function') {\n\t\t\t\tthis.#onEviction(key, item.value);\n\t\t\t}\n\n\t\t\treturn this.delete(key);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t#getOrDeleteIfExpired(key, item) {\n\t\tconst deleted = this.#deleteIfExpired(key, item);\n\t\tif (deleted === false) {\n\t\t\treturn item.value;\n\t\t}\n\t}\n\n\t#getItemValue(key, item) {\n\t\treturn item.expiry ? this.#getOrDeleteIfExpired(key, item) : item.value;\n\t}\n\n\t#peek(key, cache) {\n\t\tconst item = cache.get(key);\n\t\treturn this.#getItemValue(key, item);\n\t}\n\n\t#set(key, value) {\n\t\tthis.#cache.set(key, value);\n\t\tthis.#size++;\n\n\t\tif (this.#size >= this.#maxSize) {\n\t\t\tthis.#size = 0;\n\t\t\tthis.#emitEvictions(this.#oldCache);\n\t\t\tthis.#oldCache = this.#cache;\n\t\t\tthis.#cache = new Map();\n\t\t}\n\t}\n\n\t#moveToRecent(key, item) {\n\t\tthis.#oldCache.delete(key);\n\t\tthis.#set(key, item);\n\t}\n\n\t* #entriesAscending() {\n\t\tfor (const item of this.#oldCache) {\n\t\t\tconst [key, value] = item;\n\t\t\tif (!this.#cache.has(key)) {\n\t\t\t\tconst deleted = this.#deleteIfExpired(key, value);\n\t\t\t\tif (deleted === false) {\n\t\t\t\t\tyield item;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (const item of this.#cache) {\n\t\t\tconst [key, value] = item;\n\t\t\tconst deleted = this.#deleteIfExpired(key, value);\n\t\t\tif (deleted === false) {\n\t\t\t\tyield item;\n\t\t\t}\n\t\t}\n\t}\n\n\tget(key) {\n\t\tif (this.#cache.has(key)) {\n\t\t\tconst item = this.#cache.get(key);\n\t\t\treturn this.#getItemValue(key, item);\n\t\t}\n\n\t\tif (this.#oldCache.has(key)) {\n\t\t\tconst item = this.#oldCache.get(key);\n\t\t\tif (this.#deleteIfExpired(key, item) === false) {\n\t\t\t\tthis.#moveToRecent(key, item);\n\t\t\t\treturn item.value;\n\t\t\t}\n\t\t}\n\t}\n\n\tset(key, value, {maxAge = this.#maxAge} = {}) {\n\t\tconst expiry = typeof maxAge === 'number' && maxAge !== Number.POSITIVE_INFINITY\n\t\t\t? (Date.now() + maxAge)\n\t\t\t: undefined;\n\n\t\tif (this.#cache.has(key)) {\n\t\t\tthis.#cache.set(key, {\n\t\t\t\tvalue,\n\t\t\t\texpiry,\n\t\t\t});\n\t\t} else {\n\t\t\tthis.#set(key, {value, expiry});\n\t\t}\n\n\t\treturn this;\n\t}\n\n\thas(key) {\n\t\tif (this.#cache.has(key)) {\n\t\t\treturn !this.#deleteIfExpired(key, this.#cache.get(key));\n\t\t}\n\n\t\tif (this.#oldCache.has(key)) {\n\t\t\treturn !this.#deleteIfExpired(key, this.#oldCache.get(key));\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tpeek(key) {\n\t\tif (this.#cache.has(key)) {\n\t\t\treturn this.#peek(key, this.#cache);\n\t\t}\n\n\t\tif (this.#oldCache.has(key)) {\n\t\t\treturn this.#peek(key, this.#oldCache);\n\t\t}\n\t}\n\n\texpiresIn(key) {\n\t\tconst item = this.#cache.get(key) ?? this.#oldCache.get(key);\n\t\tif (item) {\n\t\t\treturn item.expiry ? item.expiry - Date.now() : Number.POSITIVE_INFINITY;\n\t\t}\n\t}\n\n\tdelete(key) {\n\t\tconst deleted = this.#cache.delete(key);\n\t\tif (deleted) {\n\t\t\tthis.#size--;\n\t\t}\n\n\t\treturn this.#oldCache.delete(key) || deleted;\n\t}\n\n\tclear() {\n\t\tthis.#cache.clear();\n\t\tthis.#oldCache.clear();\n\t\tthis.#size = 0;\n\t}\n\n\tresize(newSize) {\n\t\tif (!(newSize && newSize > 0)) {\n\t\t\tthrow new TypeError('`maxSize` must be a number greater than 0');\n\t\t}\n\n\t\tconst items = [...this.#entriesAscending()];\n\t\tconst removeCount = items.length - newSize;\n\t\tif (removeCount < 0) {\n\t\t\tthis.#cache = new Map(items);\n\t\t\tthis.#oldCache = new Map();\n\t\t\tthis.#size = items.length;\n\t\t} else {\n\t\t\tif (removeCount > 0) {\n\t\t\t\tthis.#emitEvictions(items.slice(0, removeCount));\n\t\t\t}\n\n\t\t\tthis.#oldCache = new Map(items.slice(removeCount));\n\t\t\tthis.#cache = new Map();\n\t\t\tthis.#size = 0;\n\t\t}\n\n\t\tthis.#maxSize = newSize;\n\t}\n\n\tevict(count = 1) {\n\t\tconst requested = Number(count);\n\t\tif (!requested || requested <= 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst items = [...this.#entriesAscending()];\n\t\tconst evictCount = Math.trunc(Math.min(requested, Math.max(items.length - 1, 0)));\n\t\tif (evictCount <= 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#emitEvictions(items.slice(0, evictCount));\n\t\tthis.#oldCache = new Map(items.slice(evictCount));\n\t\tthis.#cache = new Map();\n\t\tthis.#size = 0;\n\t}\n\n\t* keys() {\n\t\tfor (const [key] of this) {\n\t\t\tyield key;\n\t\t}\n\t}\n\n\t* values() {\n\t\tfor (const [, value] of this) {\n\t\t\tyield value;\n\t\t}\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tfor (const item of this.#cache) {\n\t\t\tconst [key, value] = item;\n\t\t\tconst deleted = this.#deleteIfExpired(key, value);\n\t\t\tif (deleted === false) {\n\t\t\t\tyield [key, value.value];\n\t\t\t}\n\t\t}\n\n\t\tfor (const item of this.#oldCache) {\n\t\t\tconst [key, value] = item;\n\t\t\tif (!this.#cache.has(key)) {\n\t\t\t\tconst deleted = this.#deleteIfExpired(key, value);\n\t\t\t\tif (deleted === false) {\n\t\t\t\t\tyield [key, value.value];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t* entriesDescending() {\n\t\tlet items = [...this.#cache];\n\t\tfor (let i = items.length - 1; i >= 0; --i) {\n\t\t\tconst item = items[i];\n\t\t\tconst [key, value] = item;\n\t\t\tconst deleted = this.#deleteIfExpired(key, value);\n\t\t\tif (deleted === false) {\n\t\t\t\tyield [key, value.value];\n\t\t\t}\n\t\t}\n\n\t\titems = [...this.#oldCache];\n\t\tfor (let i = items.length - 1; i >= 0; --i) {\n\t\t\tconst item = items[i];\n\t\t\tconst [key, value] = item;\n\t\t\tif (!this.#cache.has(key)) {\n\t\t\t\tconst deleted = this.#deleteIfExpired(key, value);\n\t\t\t\tif (deleted === false) {\n\t\t\t\t\tyield [key, value.value];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t* entriesAscending() {\n\t\tfor (const [key, value] of this.#entriesAscending()) {\n\t\t\tyield [key, value.value];\n\t\t}\n\t}\n\n\tget size() {\n\t\tif (!this.#size) {\n\t\t\treturn this.#oldCache.size;\n\t\t}\n\n\t\tlet oldCacheSize = 0;\n\t\tfor (const key of this.#oldCache.keys()) {\n\t\t\tif (!this.#cache.has(key)) {\n\t\t\t\toldCacheSize++;\n\t\t\t}\n\t\t}\n\n\t\treturn Math.min(this.#size + oldCacheSize, this.#maxSize);\n\t}\n\n\tget maxSize() {\n\t\treturn this.#maxSize;\n\t}\n\n\tget maxAge() {\n\t\treturn this.#maxAge;\n\t}\n\n\tentries() {\n\t\treturn this.entriesAscending();\n\t}\n\n\tforEach(callbackFunction, thisArgument = this) {\n\t\tfor (const [key, value] of this.entriesAscending()) {\n\t\t\tcallbackFunction.call(thisArgument, value, key, this);\n\t\t}\n\t}\n\n\tget [Symbol.toStringTag]() {\n\t\treturn 'QuickLRU';\n\t}\n\n\ttoString() {\n\t\treturn `QuickLRU(${this.size}/${this.maxSize})`;\n\t}\n\n\t[Symbol.for('nodejs.util.inspect.custom')]() {\n\t\treturn this.toString();\n\t}\n}\n", "import mod from \"../lib/application.js\";\n\nexport default mod;\nexport const HttpError = mod.HttpError;\n", "export default [\n  'acr_values',\n  // 'claims', // added conditionally depending on feature flag\n  'claims_locales',\n  'client_id',\n  'code_challenge',\n  'code_challenge_method',\n  'display',\n  'id_token_hint',\n  'login_hint',\n  'max_age',\n  'nonce',\n  'prompt',\n  'redirect_uri',\n  'registration',\n  'request',\n  'request_uri',\n  'response_mode',\n  'response_type',\n  'scope',\n  'state',\n  'ui_locales',\n];\n", "export default {\n  keys: [\n    {\n      alg: 'RS256',\n      d: 'VEZOsY07JTFzGTqv6cC2Y32vsfChind2I_TTuvV225_-0zrSej3XLRg8iE_u0-3GSgiGi4WImmTwmEgLo4Qp3uEcxCYbt4NMJC7fwT2i3dfRZjtZ4yJwFl0SIj8TgfQ8ptwZbFZUlcHGXZIr4nL8GXyQT0CK8wy4COfmymHrrUoyfZA154ql_OsoiupSUCRcKVvZj2JHL2KILsq_sh_l7g2dqAN8D7jYfJ58MkqlknBMa2-zi5I0-1JUOwztVNml_zGrp27UbEU60RqV3GHjoqwI6m01U7K0a8Q_SQAKYGqgepbAYOA-P4_TLl5KC4-WWBZu_rVfwgSENwWNEhw8oQ',\n      dp: 'E1Y-SN4bQqX7kP-bNgZ_gEv-pixJ5F_EGocHKfS56jtzRqQdTurrk4jIVpI-ZITA88lWAHxjD-OaoJUh9Jupd_lwD5Si80PyVxOMI2xaGQiF0lbKJfD38Sh8frRpgelZVaK_gm834B6SLfxKdNsP04DsJqGKktODF_fZeaGFPH0',\n      dq: 'F90JPxevQYOlAgEH0TUt1-3_hyxY6cfPRU2HQBaahyWrtCWpaOzenKZnvGFZdg-BuLVKjCchq3G_70OLE-XDP_ol0UTJmDTT-WyuJQdEMpt_WFF9yJGoeIu8yohfeLatU-67ukjghJ0s9CBzNE_LrGEV6Cup3FXywpSYZAV3iqc',\n      e: 'AQAB',\n      kid: 'keystore-CHANGE-ME',\n      kty: 'RSA',\n      n: 'xwQ72P9z9OYshiQ-ntDYaPnnfwG6u9JAdLMZ5o0dmjlcyrvwQRdoFIKPnO65Q8mh6F_LDSxjxa2Yzo_wdjhbPZLjfUJXgCzm54cClXzT5twzo7lzoAfaJlkTsoZc2HFWqmcri0BuzmTFLZx2Q7wYBm0pXHmQKF0V-C1O6NWfd4mfBhbM-I1tHYSpAMgarSm22WDMDx-WWI7TEzy2QhaBVaENW9BKaKkJklocAZCxk18WhR0fckIGiWiSM5FcU1PY2jfGsTmX505Ub7P5Dz75Ygqrutd5tFrcqyPAtPTFDk8X1InxkkUwpP3nFU5o50DGhwQolGYKPGtQ-ZtmbOfcWQ',\n      p: '5wC6nY6Ev5FqcLPCqn9fC6R9KUuBej6NaAVOKW7GXiOJAq2WrileGKfMc9kIny20zW3uWkRLm-O-3Yzze1zFpxmqvsvCxZ5ERVZ6leiNXSu3tez71ZZwp0O9gys4knjrI-9w46l_vFuRtjL6XEeFfHEZFaNJpz-lcnb3w0okrbM',\n      q: '3I1qeEDslZFB8iNfpKAdWtz_Wzm6-jayT_V6aIvhvMj5mnU-Xpj75zLPQSGa9wunMlOoZW9w1wDO1FVuDhwzeOJaTm-Ds0MezeC4U6nVGyyDHb4CUA3ml2tzt4yLrqGYMT7XbADSvuWYADHw79OFjEi4T3s3tJymhaBvy1ulv8M',\n      qi: 'wSbXte9PcPtr788e713KHQ4waE26CzoXx-JNOgN0iqJMN6C4_XJEX-cSvCZDf4rh7xpXN6SGLVd5ibIyDJi7bbi5EQ5AXjazPbLBjRthcGXsIuZ3AtQyR0CEWNSdM7EyM5TRdyZQ9kftfz9nI03guW3iKKASETqX2vh0Z8XRjyU',\n      use: 'sig',\n    },\n  ],\n};\n", "const RECOGNIZED_METADATA = [\n  'application_type',\n  'client_id_issued_at',\n  'client_id',\n  'client_name',\n  'client_secret_expires_at',\n  'client_secret',\n  'client_uri',\n  'contacts',\n  'default_acr_values',\n  'default_max_age',\n  'grant_types',\n  'id_token_signed_response_alg',\n  'initiate_login_uri',\n  'jwks_uri',\n  'jwks',\n  'logo_uri',\n  'policy_uri',\n  'redirect_uris',\n  'require_auth_time',\n  'response_types',\n  'response_modes',\n  'scope',\n  'sector_identifier_uri',\n  'subject_type',\n  'token_endpoint_auth_method',\n  'tos_uri',\n];\n\nconst DEFAULTS = {\n  application_type: 'web',\n  authorization_signed_response_alg: 'RS256',\n  backchannel_logout_session_required: false,\n  backchannel_user_code_parameter: false,\n  grant_types: ['authorization_code'],\n  id_token_signed_response_alg: 'RS256',\n  introspection_signed_response_alg: 'RS256',\n  post_logout_redirect_uris: [],\n  require_auth_time: false,\n  require_pushed_authorization_requests: false,\n  require_signed_request_object: false,\n  dpop_bound_access_tokens: false,\n  response_types: ['code'],\n  subject_type: 'public',\n  tls_client_certificate_bound_access_tokens: false,\n  token_endpoint_auth_method: 'client_secret_basic',\n  authorization_details_types: [],\n};\n\nconst REQUIRED = [\n  'client_id',\n  // 'client_secret', => validated elsewhere and only needed somewhen\n  // 'redirect_uris', => validated elsewhere and handled elsewhere\n];\n\nconst BOOL = [\n  'backchannel_logout_session_required',\n  'backchannel_user_code_parameter',\n  'dpop_bound_access_tokens',\n  'require_auth_time',\n  'require_pushed_authorization_requests',\n  'require_signed_request_object',\n  'tls_client_certificate_bound_access_tokens',\n  'use_mtls_endpoint_aliases',\n];\n\nconst ARYS = [\n  'contacts',\n  'default_acr_values',\n  'grant_types',\n  'post_logout_redirect_uris',\n  'redirect_uris',\n  'response_types',\n  'response_modes',\n  'authorization_details_types',\n];\n\nconst STRING = [\n  'application_type',\n  'authorization_encrypted_response_alg',\n  'authorization_encrypted_response_enc',\n  'authorization_signed_response_alg',\n  'backchannel_authentication_request_signing_alg',\n  'backchannel_client_notification_endpoint',\n  'backchannel_logout_uri',\n  'backchannel_token_delivery_mode',\n  'client_id',\n  'client_name',\n  'client_secret',\n  'client_uri',\n  'id_token_encrypted_response_alg',\n  'id_token_encrypted_response_enc',\n  'id_token_signed_response_alg',\n  'initiate_login_uri',\n  'introspection_encrypted_response_alg',\n  'introspection_encrypted_response_enc',\n  'introspection_signed_response_alg',\n  'jwks_uri',\n  'logo_uri',\n  'policy_uri',\n  'request_object_encryption_alg',\n  'request_object_encryption_enc',\n  'request_object_signing_alg',\n  'scope',\n  'sector_identifier_uri',\n  'subject_type',\n  'tls_client_auth_san_dns',\n  'tls_client_auth_san_email',\n  'tls_client_auth_san_ip',\n  'tls_client_auth_san_uri',\n  'tls_client_auth_subject_dn',\n  'token_endpoint_auth_method',\n  'tos_uri',\n  'userinfo_encrypted_response_alg',\n  'userinfo_encrypted_response_enc',\n  'userinfo_signed_response_alg',\n\n  // in arrays\n  'contacts',\n  'default_acr_values',\n  'grant_types',\n  'post_logout_redirect_uris',\n  'redirect_uris',\n  'response_types',\n  'response_modes',\n  'authorization_details_types',\n];\n\nconst WHEN = {\n  authorization_encrypted_response_enc: ['authorization_encrypted_response_alg', 'A128CBC-HS256'],\n  id_token_encrypted_response_enc: ['id_token_encrypted_response_alg', 'A128CBC-HS256'],\n  introspection_encrypted_response_enc: ['introspection_encrypted_response_alg', 'A128CBC-HS256'],\n  request_object_encryption_enc: ['request_object_encryption_alg', 'A128CBC-HS256'],\n  userinfo_encrypted_response_enc: ['userinfo_encrypted_response_alg', 'A128CBC-HS256'],\n\n  id_token_encrypted_response_alg: ['id_token_signed_response_alg'],\n  userinfo_encrypted_response_alg: ['userinfo_signed_response_alg'],\n  introspection_encrypted_response_alg: ['introspection_signed_response_alg'],\n  authorization_encrypted_response_alg: ['authorization_signed_response_alg'],\n};\n\nconst WEB_URI = [\n  'backchannel_client_notification_endpoint',\n  'backchannel_logout_uri',\n  'client_uri',\n  'initiate_login_uri',\n  'jwks_uri',\n  'logo_uri',\n  'policy_uri',\n  'sector_identifier_uri',\n  'tos_uri',\n];\n\nconst HTTPS_URI = [\n  'backchannel_client_notification_endpoint',\n  'initiate_login_uri',\n  'sector_identifier_uri',\n];\n\nconst LOOPBACKS = new Set(['localhost', '127.0.0.1', '[::1]']);\n\nconst ENUM = {\n  application_type: () => ['native', 'web'],\n};\n\nexport const noVSCHAR = /[^\\x20-\\x7E]/;\n// const noNQCHAR = /[^\\x21\\x23-\\x5B\\x5D-\\x7E]/;\n// const noNQSCHAR = /[^\\x20-\\x21\\x23-\\x5B\\x5D-\\x7E]/;\n\nconst SYNTAX = {\n  client_id: noVSCHAR,\n  client_secret: noVSCHAR,\n};\n\nconst CHOICES = {\n  authorization_encrypted_response_alg: 'authorization_encryption_alg_values_supported',\n  authorization_encrypted_response_enc: 'authorization_encryption_enc_values_supported',\n  authorization_signed_response_alg: 'authorization_signing_alg_values_supported',\n  backchannel_authentication_request_signing_alg: 'backchannel_authentication_request_signing_alg_values_supported',\n  id_token_encrypted_response_alg: 'id_token_encryption_alg_values_supported',\n  id_token_encrypted_response_enc: 'id_token_encryption_enc_values_supported',\n  id_token_signed_response_alg: 'id_token_signing_alg_values_supported',\n  introspection_encrypted_response_alg: 'introspection_encryption_alg_values_supported',\n  introspection_encrypted_response_enc: 'introspection_encryption_enc_values_supported',\n  introspection_signed_response_alg: 'introspection_signing_alg_values_supported',\n  request_object_encryption_alg: 'request_object_encryption_alg_values_supported',\n  request_object_encryption_enc: 'request_object_encryption_enc_values_supported',\n  request_object_signing_alg: 'request_object_signing_alg_values_supported',\n  subject_type: 'subject_types_supported',\n  token_endpoint_auth_method: 'token_endpoint_auth_methods_supported',\n  token_endpoint_auth_signing_alg: 'token_endpoint_auth_signing_alg_values_supported',\n  userinfo_encrypted_response_alg: 'userinfo_encryption_alg_values_supported',\n  userinfo_encrypted_response_enc: 'userinfo_encryption_enc_values_supported',\n  userinfo_signed_response_alg: 'userinfo_signing_alg_values_supported',\n};\n\nexport {\n  ARYS,\n  BOOL,\n  DEFAULTS,\n  ENUM,\n  HTTPS_URI,\n  LOOPBACKS,\n  RECOGNIZED_METADATA,\n  REQUIRED,\n  STRING,\n  SYNTAX,\n  WEB_URI,\n  WHEN,\n  CHOICES,\n};\n", "const signingAlgValues = [\n  'HS256', 'HS384', 'HS512',\n  'RS256', 'RS384', 'RS512',\n  'PS256', 'PS384', 'PS512',\n  'ES256', 'ES384', 'ES512',\n  'Ed25519', 'EdDSA',\n];\n\nconst version = globalThis.process?.version?.substring(1).split('.').map((i) => parseInt(i, 10));\n\nif (version[0] > 24 || (version[0] === 24 && version[1] >= 7)) {\n  signingAlgValues.push('ML-DSA-44', 'ML-DSA-65', 'ML-DSA-87');\n}\n\nconst encryptionAlgValues = [\n  // asymmetric\n  'RSA-OAEP',\n  'RSA-OAEP-256', 'RSA-OAEP-384', 'RSA-OAEP-512',\n  'ECDH-ES', 'ECDH-ES+A128KW', 'ECDH-ES+A192KW', 'ECDH-ES+A256KW',\n  // symmetric\n  'A128GCMKW', 'A192GCMKW', 'A256GCMKW', 'A128KW', 'A192KW', 'A256KW',\n  // direct\n  'dir',\n];\n\nconst encryptionEncValues = [\n  'A128CBC-HS256', 'A128GCM', 'A192CBC-HS384', 'A192GCM', 'A256CBC-HS512', 'A256GCM',\n];\n\nexport const clientAuthSigningAlgValues = [...signingAlgValues];\nexport const idTokenSigningAlgValues = [...signingAlgValues];\nexport const requestObjectSigningAlgValues = [...signingAlgValues];\nexport const userinfoSigningAlgValues = [...signingAlgValues];\nexport const introspectionSigningAlgValues = [...signingAlgValues];\nexport const authorizationSigningAlgValues = [...signingAlgValues];\nexport const idTokenEncryptionAlgValues = [...encryptionAlgValues];\nexport const requestObjectEncryptionAlgValues = [...encryptionAlgValues];\nexport const userinfoEncryptionAlgValues = [...encryptionAlgValues];\nexport const introspectionEncryptionAlgValues = [...encryptionAlgValues];\nexport const authorizationEncryptionAlgValues = [...encryptionAlgValues];\nexport const idTokenEncryptionEncValues = [...encryptionEncValues];\nexport const requestObjectEncryptionEncValues = [...encryptionEncValues];\nexport const userinfoEncryptionEncValues = [...encryptionEncValues];\nexport const introspectionEncryptionEncValues = [...encryptionEncValues];\nexport const authorizationEncryptionEncValues = [...encryptionEncValues];\nexport const dPoPSigningAlgValues = [...signingAlgValues].filter((alg) => !alg.startsWith('HS'));\nexport const attestSigningAlgValues = [...signingAlgValues].filter((alg) => !alg.startsWith('HS'));\n", "import PARAM_LIST from './param_list.js';\nimport DEV_KEYSTORE from './dev_keystore.js';\nimport * as CLIENT_ATTRIBUTES from './client_attributes.js';\nimport * as JWA from './jwa.js';\n\nexport const PUSHED_REQUEST_URN = 'urn:ietf:params:oauth:request_uri:';\n\nexport {\n  CLIENT_ATTRIBUTES,\n  DEV_KEYSTORE,\n  JWA,\n  PARAM_LIST,\n};\n", "export default (a) => !!a && a.constructor === Object;\n", "export default (array, predicate) => {\n  const remove = [];\n  array.forEach((value, index) => {\n    if (predicate(value, index, array)) {\n      remove.unshift(index);\n    }\n  });\n  remove.forEach((i) => array.splice(i, 1));\n};\n", "/* eslint-disable no-param-reassign, no-continue */\n\nimport isPlainObject from './is_plain_object.js';\n\nfunction merge(target, ...sources) {\n  for (const source of sources) {\n    if (!isPlainObject(source)) {\n      continue;\n    }\n    for (const [key, value] of Object.entries(source)) {\n      if (key === '__proto__' || key === 'constructor') {\n        continue;\n      }\n      if (isPlainObject(target[key]) && isPlainObject(value)) {\n        target[key] = merge(target[key], value);\n      } else if (typeof value !== 'undefined') {\n        target[key] = value;\n      }\n    }\n  }\n\n  return target;\n}\n\nexport default merge;\n", "export default (object = {}, ...properties) => {\n  const result = {};\n  properties.forEach((property) => {\n    if (Object.prototype.hasOwnProperty.call(object, property)) {\n      result[property] = object[property];\n    }\n  });\n\n  return result;\n};\n", "import isPlainObject from './is_plain_object.js';\n\nexport default (object, path, value) => {\n  const properties = path.split('.');\n  if (properties.includes('__proto__') || properties.includes('constructor')) {\n    throw new TypeError('__proto__ and constructor cannot be set');\n  }\n  let current = object;\n  properties.forEach((property, i) => {\n    if (i + 1 === properties.length) {\n      current[property] = value;\n    } else if (!(property in current) || !isPlainObject(current[property])) {\n      current[property] = {};\n    }\n\n    current = current[property];\n  });\n};\n", "const conjunction = new Intl.ListFormat('en', { type: 'conjunction' });\nconst disjunction = new Intl.ListFormat('en', { type: 'disjunction' });\n\nconst formatter = {\n  format(iterable, { type }) {\n    if (type === 'conjunction') {\n      return conjunction.format(iterable);\n    }\n\n    return disjunction.format(iterable);\n  },\n};\n\nexport function formatList(list, { type = 'conjunction' } = {}) {\n  return formatter.format(list.map((w) => `'${w}'`), { type });\n}\n\nexport function pluralize(word, count) {\n  if (count === 1) {\n    return word;\n  }\n\n  return `${word}s`;\n}\n", "/* eslint-disable no-shadow */\n/* eslint-disable no-unused-vars */\n\nimport * as crypto from 'node:crypto';\n\nimport * as attention from './attention.js';\nimport nanoid from './nanoid.js';\nimport { base as defaultPolicy } from './interaction_policy/index.js';\nimport htmlSafe from './html_safe.js';\nimport * as errors from './errors.js';\n\nconst warned = new Set();\nfunction shouldChange(name, msg) {\n  if (!warned.has(name)) {\n    warned.add(name);\n    attention.info(`default ${name} function called, you SHOULD change it in order to ${msg}.`);\n  }\n}\nfunction mustChange(name, msg) {\n  if (!warned.has(name)) {\n    warned.add(name);\n    attention.warn(`default ${name} function called, you MUST change it in order to ${msg}.`);\n  }\n}\n\nfunction clientBasedCORS(ctx, origin, client) {\n  shouldChange('clientBasedCORS', 'control allowed CORS Origins based on the client making a CORS request');\n  if (ctx.oidc.route === 'userinfo' || client.clientAuthMethod === 'none') {\n    return client.redirectUris.some((uri) => URL.parse(uri)?.origin === origin);\n  }\n  return false;\n}\n\nfunction getCertificate(ctx) {\n  mustChange('features.mTLS.getCertificate', 'retrieve the PEM-formatted client certificate from the request context');\n  throw new Error('features.mTLS.getCertificate function not configured');\n}\n\nfunction certificateAuthorized(ctx) {\n  mustChange('features.mTLS.certificateAuthorized', 'determine if the client certificate is verified and comes from a trusted CA');\n  throw new Error('features.mTLS.certificateAuthorized function not configured');\n}\n\nfunction certificateSubjectMatches(ctx, property, expected) {\n  mustChange('features.mTLS.certificateSubjectMatches', 'verify that the tls_client_auth_* registered client property value matches the certificate one');\n  throw new Error('features.mTLS.certificateSubjectMatches function not configured');\n}\n\nfunction deviceInfo(ctx) {\n  return {\n    ip: ctx.ip,\n    ua: ctx.get('user-agent'),\n  };\n}\n\nfunction fetch(url, options) {\n  /* eslint-disable no-param-reassign */\n  options.signal = AbortSignal.timeout(2500);\n  options.headers = new Headers(options.headers);\n  options.headers.set('user-agent', ''); // removes the user-agent header in Node's global fetch()\n  // eslint-disable-next-line no-undef\n  return globalThis.fetch(url, options);\n  /* eslint-enable no-param-reassign */\n}\n\nasync function userCodeInputSource(ctx, form, out, err) {\n  // @param ctx - koa request context\n  // @param form - form source (id=\"op.deviceInputForm\") to be embedded in the page and submitted\n  //   by the End-User.\n  // @param out - if an error is returned the out object contains details that are fit to be\n  //   rendered, i.e. does not include internal error messages\n  // @param err - error object with an optional userCode property passed when the form is being\n  //   re-rendered due to code missing/invalid/expired\n  shouldChange('features.deviceFlow.userCodeInputSource', 'customize the look of the user code input page');\n  let msg;\n  if (err && (err.userCode || err.name === 'NoCodeError')) {\n    msg = '<p class=\"red\">The code you entered is incorrect. Try again</p>';\n  } else if (err && err.name === 'AbortedError') {\n    msg = '<p class=\"red\">The Sign-in request was interrupted</p>';\n  } else if (err) {\n    msg = '<p class=\"red\">There was an error processing your request</p>';\n  } else {\n    msg = '<p>Enter the code displayed on your device</p>';\n  }\n  ctx.body = `<!DOCTYPE html>\n    <html>\n    <head>\n      <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n      <meta charset=\"utf-8\">\n      <title>Sign-in</title>\n      <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n      <meta http-equiv=\"x-ua-compatible\" content=\"ie=edge\">\n      <style>\n        @import url(https://fonts.googleapis.com/css?family=Roboto:400,100);h1,h1+p{font-weight:100;text-align:center}body{font-family:Roboto,sans-serif;margin-top:25px;margin-bottom:25px}.container{padding:0 40px 10px;width:274px;background-color:#F7F7F7;margin:0 auto 10px;border-radius:2px;box-shadow:0 2px 2px rgba(0,0,0,.3);overflow:hidden}h1{font-size:2.3em}p.red{color:#d50000}input[type=email],input[type=password],input[type=text]{height:44px;font-size:16px;width:100%;margin-bottom:10px;-webkit-appearance:none;background:#fff;border:1px solid #d9d9d9;border-top:1px solid silver;padding:0 8px;box-sizing:border-box;-moz-box-sizing:border-box}[type=submit]{width:100%;display:block;margin-bottom:10px;position:relative;text-align:center;font-size:14px;font-family:Arial,sans-serif;font-weight:700;height:36px;padding:0 8px;border:0;color:#fff;text-shadow:0 1px rgba(0,0,0,.1);background-color:#4d90fe;cursor:pointer}[type=submit]:hover{border:0;text-shadow:0 1px rgba(0,0,0,.3);background-color:#357ae8}input[type=text]{text-transform:uppercase;text-align: center}input[type=text]::placeholder{text-transform: none}\n      </style>\n    </head>\n    <body>\n      <div class=\"container\">\n        <h1>Sign-in</h1>\n        ${msg}\n        ${form}\n        <button type=\"submit\" form=\"op.deviceInputForm\">Continue</button>\n      </div>\n    </body>\n    </html>`;\n}\n\nfunction requireNonce(ctx) {\n  return false;\n}\n\nasync function getAttestationSignaturePublicKey(ctx, iss, header, client) {\n  // @param ctx - koa request context\n  // @param iss - Issuer Identifier from the Client Attestation JWT\n  // @param header - Protected Header of the Client Attestation JWT\n  // @param client - client making the request\n  mustChange('features.attestClientAuth.getAttestationSignaturePublicKey', 'be able to verify the Client Attestation JWT signature');\n  throw new Error('features.attestClientAuth.getAttestationSignaturePublicKey not implemented');\n}\n\nasync function assertAttestationJwtAndPop(ctx, attestation, pop, client) {\n  // @param ctx - koa request context\n  // @param attestation - verified and parsed Attestation JWT\n  //        attestation.protectedHeader - parsed protected header object\n  //        attestation.payload - parsed protected header object\n  //        attestation.key - CryptoKey that verified the Attestation JWT signature\n  // @param pop - verified and parsed Attestation JWT PoP\n  //        pop.protectedHeader - parsed protected header object\n  //        pop.payload - parsed protected header object\n  //        pop.key - CryptoKey that verified the Attestation JWT PoP signature\n  // @param client - client making the request\n}\n\nasync function userCodeConfirmSource(ctx, form, client, deviceInfo, userCode) {\n  // @param ctx - koa request context\n  // @param form - form source (id=\"op.deviceConfirmForm\") to be embedded in the page and\n  //   submitted by the End-User.\n  // @param deviceInfo - device information from the device_authorization_endpoint call\n  // @param userCode - formatted user code by the configured mask\n  shouldChange('features.deviceFlow.userCodeConfirmSource', 'customize the look of the user code confirmation page');\n  ctx.body = `<!DOCTYPE html>\n    <html>\n    <head>\n      <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n      <meta charset=\"utf-8\">\n      <title>Device Login Confirmation</title>\n      <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n      <style>\n        @import url(https://fonts.googleapis.com/css?family=Roboto:400,100);.help,h1,h1+p{text-align:center}h1,h1+p{font-weight:100}body{font-family:Roboto,sans-serif;margin-top:25px;margin-bottom:25px}.container{padding:0 40px 10px;width:274px;background-color:#f7f7f7;margin:0 auto 10px;border-radius:2px;box-shadow:0 2px 2px rgba(0,0,0,.3);overflow:hidden}h1{font-size:2.3em}button[autofocus]{width:100%;display:block;margin-bottom:10px;position:relative;font-size:14px;font-family:Arial,sans-serif;font-weight:700;height:36px;padding:0 8px;border:0;color:#fff;text-shadow:0 1px rgba(0,0,0,.1);background-color:#4d90fe;cursor:pointer}button[autofocus]:hover{border:0;text-shadow:0 1px rgba(0,0,0,.3);background-color:#357ae8}button[name=abort]{background:0 0!important;border:none;padding:0!important;font:inherit;cursor:pointer}a,button[name=abort]{text-decoration:none;color:#666;font-weight:400;display:inline-block;opacity:.6}.help{width:100%;font-size:12px}code{font-size:2em}\n      </style>\n    </head>\n    <body>\n      <div class=\"container\">\n        <h1>Confirm Device</h1>\n        <p>\n          <strong>${ctx.oidc.client.clientName || ctx.oidc.client.clientId}</strong>\n          <br/><br/>\n          The following code should be displayed on your device<br/><br/>\n          <code>${userCode}</code>\n          <br/><br/>\n          <small>If you did not initiate this action, the code does not match or are unaware of such device in your possession please close this window or click abort.</small>\n        </p>\n        ${form}\n        <button autofocus type=\"submit\" form=\"op.deviceConfirmForm\">Continue</button>\n        <div class=\"help\">\n          <button type=\"submit\" form=\"op.deviceConfirmForm\" value=\"yes\" name=\"abort\">[ Abort ]</button>\n        </div>\n      </div>\n    </body>\n    </html>`;\n}\n\nasync function successSource(ctx) {\n  // @param ctx - koa request context\n  shouldChange('features.deviceFlow.successSource', 'customize the look of the device code success page');\n  ctx.body = `<!DOCTYPE html>\n    <html>\n    <head>\n      <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n      <meta charset=\"utf-8\">\n      <title>Sign-in Success</title>\n      <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n      <style>\n        @import url(https://fonts.googleapis.com/css?family=Roboto:400,100);h1,h1+p{font-weight:100;text-align:center}body{font-family:Roboto,sans-serif;margin-top:25px;margin-bottom:25px}.container{padding:0 40px 10px;width:274px;background-color:#F7F7F7;margin:0 auto 10px;border-radius:2px;box-shadow:0 2px 2px rgba(0,0,0,.3);overflow:hidden}h1{font-size:2.3em}\n      </style>\n    </head>\n    <body>\n      <div class=\"container\">\n        <h1>Sign-in Success</h1>\n        <p>Your sign-in ${ctx.oidc.client.clientName ? `with ${ctx.oidc.client.clientName}` : ''} was successful, you can now close this page.</p>\n      </div>\n    </body>\n    </html>`;\n}\n\nasync function introspectionAllowedPolicy(ctx, client, token) {\n  // @param ctx - koa request context\n  // @param client - authenticated client making the request\n  // @param token - token being introspected\n  shouldChange('features.introspection.allowedPolicy', 'to check whether the caller is authorized to receive the introspection response');\n\n  if (\n    client.clientAuthMethod === 'none'\n    && token.clientId !== ctx.oidc.client.clientId\n  ) {\n    return false;\n  }\n\n  return true;\n}\n\nasync function revocationAllowedPolicy(ctx, client, token) {\n  // @param ctx - koa request context\n  // @param client - authenticated client making the request\n  // @param token - token being revoked\n  shouldChange('features.revocation.allowedPolicy', 'to check whether the caller is authorized to revoke the token');\n\n  if (token.clientId !== client.clientId) {\n    if (client.clientAuthMethod === 'none') {\n      // do not revoke but respond as success to disallow guessing valid tokens\n      return false;\n    }\n\n    throw new errors.InvalidRequest('client is not authorized to revoke the presented token');\n  }\n\n  return true;\n}\n\nfunction idFactory(ctx) {\n  return nanoid();\n}\n\nasync function secretFactory(ctx) {\n  return crypto.randomBytes(64).toString('base64url');\n}\n\nasync function defaultResource(ctx, client, oneOf) {\n  // @param ctx - koa request context\n  // @param client - client making the request\n  // @param oneOf {string[]} - The authorization server needs to select **one** of the values provided.\n  //                           Default is that the array is provided so that the request will fail.\n  //                           This argument is only provided when called during\n  //                           Authorization Code / Refresh Token / Device Code exchanges.\n\n  if (oneOf) return oneOf;\n  return undefined;\n}\n\nasync function useGrantedResource(ctx, model) {\n  // @param ctx - koa request context\n  // @param model - depending on the request's grant_type this can be either an AuthorizationCode, BackchannelAuthenticationRequest,\n  //                RefreshToken, or DeviceCode model instance.\n  return false;\n}\n\nasync function getResourceServerInfo(ctx, resourceIndicator, client) {\n  // @param ctx - koa request context\n  // @param resourceIndicator - resource indicator value either requested or resolved by the defaultResource helper.\n  // @param client - client making the request\n  mustChange('features.resourceIndicators.getResourceServerInfo', 'to provide details about the Resource Server identified by the Resource Indicator');\n  throw new errors.InvalidTarget();\n}\n\nasync function extraTokenClaims(ctx, token) {\n  return undefined;\n}\n\nasync function expiresWithSession(ctx, code) {\n  return !code.scopes.has('offline_access');\n}\n\nasync function issueRefreshToken(ctx, client, code) {\n  return (\n    client.grantTypeAllowed('refresh_token')\n    && code.scopes.has('offline_access')\n  );\n}\n\nfunction pkceRequired(ctx, client) {\n  // All public clients MUST use PKCE as per\n  // https://www.rfc-editor.org/rfc/rfc9700.html#section-2.1.1-2.1\n  if (client.clientAuthMethod === 'none') {\n    return true;\n  }\n\n  const fapiProfile = ctx.oidc.isFapi('2.0', '1.0 Final');\n\n  // FAPI 2.0 as per\n  // https://openid.net/specs/fapi-security-profile-2_0-final.html#section-5.3.2.2-2.5\n  if (fapiProfile === '2.0') {\n    return true;\n  }\n\n  // FAPI 1.0 Advanced as per\n  // https://openid.net/specs/openid-financial-api-part-2-1_0-final.html#authorization-server\n  if (fapiProfile === '1.0 Final' && ctx.oidc.route === 'pushed_authorization_request') {\n    return true;\n  }\n\n  // In all other cases use of PKCE is RECOMMENDED as per\n  // https://www.rfc-editor.org/rfc/rfc9700.html#section-2.1.1-2.2\n  // but the server doesn't force them to.\n  return false;\n}\n\nasync function pairwiseIdentifier(ctx, accountId, client) {\n  mustChange('pairwiseIdentifier', 'provide an implementation for pairwise identifiers');\n  throw new Error('pairwiseIdentifier not implemented');\n}\n\nfunction AccessTokenTTL(ctx, token, client) {\n  shouldChange('ttl.AccessToken', 'define the expiration for AccessToken artifacts');\n  return token.resourceServer?.accessTokenTTL || 60 * 60; // 1 hour in seconds\n}\n\nfunction AuthorizationCodeTTL(ctx, code, client) {\n  return 60; // 1 minute in seconds\n}\n\nfunction ClientCredentialsTTL(ctx, token, client) {\n  shouldChange('ttl.ClientCredentials', 'define the expiration for ClientCredentials artifacts');\n  return token.resourceServer?.accessTokenTTL || 10 * 60; // 10 minutes in seconds\n}\n\nfunction DeviceCodeTTL(ctx, deviceCode, client) {\n  shouldChange('ttl.DeviceCode', 'define the expiration for DeviceCode artifacts');\n  return 10 * 60; // 10 minutes in seconds\n}\n\nfunction BackchannelAuthenticationRequestTTL(ctx, request, client) {\n  shouldChange('ttl.BackchannelAuthenticationRequest', 'define the expiration for BackchannelAuthenticationRequest artifacts');\n  if (ctx?.oidc?.params.requested_expiry) {\n    return Math.min(10 * 60, +ctx.oidc.params.requested_expiry); // 10 minutes in seconds or requested_expiry, whichever is shorter\n  }\n\n  return 10 * 60; // 10 minutes in seconds\n}\n\nfunction IdTokenTTL(ctx, token, client) {\n  shouldChange('ttl.IdToken', 'define the expiration for IdToken artifacts');\n  return 60 * 60; // 1 hour in seconds\n}\n\nfunction RefreshTokenTTL(ctx, token, client) {\n  shouldChange('ttl.RefreshToken', 'define the expiration for RefreshToken artifacts');\n  if (\n    ctx?.oidc?.entities.RotatedRefreshToken\n    && client.applicationType === 'web'\n    && client.clientAuthMethod === 'none'\n    && !token.isSenderConstrained()\n  ) {\n    // Non-Sender Constrained SPA RefreshTokens do not have infinite expiration through rotation\n    return ctx.oidc.entities.RotatedRefreshToken.remainingTTL;\n  }\n\n  return 14 * 24 * 60 * 60; // 14 days in seconds\n}\n\nfunction InteractionTTL(ctx, interaction) {\n  shouldChange('ttl.Interaction', 'define the expiration for Interaction artifacts');\n  return 60 * 60; // 1 hour in seconds\n}\n\nfunction SessionTTL(ctx, session) {\n  shouldChange('ttl.Session', 'define the expiration for Session artifacts');\n  return 14 * 24 * 60 * 60; // 14 days in seconds\n}\n\nfunction GrantTTL(ctx, grant, client) {\n  shouldChange('ttl.Grant', 'define the expiration for Grant artifacts');\n  return 14 * 24 * 60 * 60; // 14 days in seconds\n}\n\nfunction extraClientMetadataValidator(ctx, key, value, metadata) {\n  // @param ctx - koa request context (only provided when a client is being constructed during\n  //              Client Registration Request or Client Update Request\n  // @param key - the client metadata property name\n  // @param value - the property value\n  // @param metadata - the current accumulated client metadata\n  // @param ctx - koa request context (only provided when a client is being constructed during\n  //              Client Registration Request or Client Update Request\n}\n\nasync function postLogoutSuccessSource(ctx) {\n  // @param ctx - koa request context\n  shouldChange('features.rpInitiatedLogout.postLogoutSuccessSource', 'customize the look of the default post logout success page');\n  const display = ctx.oidc.client?.clientName || ctx.oidc.client?.clientId;\n  ctx.body = `<!DOCTYPE html>\n    <html>\n    <head>\n      <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n      <meta charset=\"utf-8\">\n      <title>Sign-out Success</title>\n      <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n      <style>\n        @import url(https://fonts.googleapis.com/css?family=Roboto:400,100);h1,h1+p{font-weight:100;text-align:center}body{font-family:Roboto,sans-serif;margin-top:25px;margin-bottom:25px}.container{padding:0 40px 10px;width:274px;background-color:#F7F7F7;margin:0 auto 10px;border-radius:2px;box-shadow:0 2px 2px rgba(0,0,0,.3);overflow:hidden}h1{font-size:2.3em}\n      </style>\n    </head>\n    <body>\n      <div class=\"container\">\n        <h1>Sign-out Success</h1>\n        <p>Your sign-out ${display ? `with ${display}` : ''} was successful.</p>\n      </div>\n    </body>\n    </html>`;\n}\n\nasync function logoutSource(ctx, form) {\n  // @param ctx - koa request context\n  // @param form - form source (id=\"op.logoutForm\") to be embedded in the page and submitted by\n  //   the End-User\n  shouldChange('features.rpInitiatedLogout.logoutSource', 'customize the look of the logout page');\n  ctx.body = `<!DOCTYPE html>\n    <html>\n    <head>\n      <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n      <meta charset=\"utf-8\">\n      <title>Logout Request</title>\n      <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n      <style>\n        @import url(https://fonts.googleapis.com/css?family=Roboto:400,100);button,h1{text-align:center}h1{font-weight:100;font-size:1.3em}body{font-family:Roboto,sans-serif;margin-top:25px;margin-bottom:25px}.container{padding:0 40px 10px;width:274px;background-color:#F7F7F7;margin:0 auto 10px;border-radius:2px;box-shadow:0 2px 2px rgba(0,0,0,.3);overflow:hidden}button{font-size:14px;font-family:Arial,sans-serif;font-weight:700;height:36px;padding:0 8px;width:100%;display:block;margin-bottom:10px;position:relative;border:0;color:#fff;text-shadow:0 1px rgba(0,0,0,.1);background-color:#4d90fe;cursor:pointer}button:hover{border:0;text-shadow:0 1px rgba(0,0,0,.3);background-color:#357ae8}\n      </style>\n    </head>\n    <body>\n      <div class=\"container\">\n        <h1>Do you want to sign-out from ${ctx.host}?</h1>\n        ${form}\n        <button autofocus type=\"submit\" form=\"op.logoutForm\" value=\"yes\" name=\"logout\">Yes, sign me out</button>\n        <button type=\"submit\" form=\"op.logoutForm\">No, stay signed in</button>\n      </div>\n    </body>\n    </html>`;\n}\n\nasync function renderError(ctx, out, error) {\n  shouldChange('renderError', 'customize the look of the error page');\n  ctx.type = 'html';\n  ctx.body = `<!DOCTYPE html>\n    <html>\n    <head>\n      <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n      <meta charset=\"utf-8\">\n      <title>oops! something went wrong</title>\n      <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n      <style>\n        @import url(https://fonts.googleapis.com/css?family=Roboto:400,100);h1{font-weight:100;text-align:center;font-size:2.3em}body{font-family:Roboto,sans-serif;margin-top:25px;margin-bottom:25px}.container{padding:0 40px 10px;width:274px;background-color:#F7F7F7;margin:0 auto 10px;border-radius:2px;box-shadow:0 2px 2px rgba(0,0,0,.3);overflow:hidden}pre{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word;margin:0 0 0 1em;text-indent:-1em}\n      </style>\n    </head>\n    <body>\n      <div class=\"container\">\n        <h1>oops! something went wrong</h1>\n        ${Object.entries(out).map(([key, value]) => `<pre><strong>${key}</strong>: ${htmlSafe(value)}</pre>`).join('')}\n      </div>\n    </body>\n    </html>`;\n}\n\nasync function interactionsUrl(ctx, interaction) {\n  return `/interaction/${interaction.uid}`;\n}\n\nasync function findAccount(ctx, sub, token) {\n  // @param ctx - koa request context\n  // @param sub {string} - account identifier (subject)\n  // @param token - is a reference to the token used for which a given account is being loaded,\n  //   is undefined in scenarios where claims are returned from authorization endpoint\n  mustChange('findAccount', 'use your own account model');\n  return {\n    accountId: sub,\n    // @param use {string} - can either be \"id_token\" or \"userinfo\", depending on\n    //   where the specific claims are intended to be put in\n    // @param scope {string} - the intended scope, while oidc-provider will mask\n    //   claims depending on the scope automatically you might want to skip\n    //   loading some claims from external resources or through db projection etc. based on this\n    //   detail or not return them in ID Tokens but only UserInfo and so on\n    // @param claims {object} - the part of the claims authorization parameter for either\n    //   \"id_token\" or \"userinfo\" (depends on the \"use\" param)\n    // @param rejected {Array[String]} - claim names that were rejected by the end-user, you might\n    //   want to skip loading some claims from external resources or through db projection\n    async claims(use, scope, claims, rejected) {\n      return { sub };\n    },\n  };\n}\n\nfunction rotateRefreshToken(ctx) {\n  const { RefreshToken: refreshToken, Client: client } = ctx.oidc.entities;\n\n  // cap the maximum amount of time a refresh token can be\n  // rotated for up to 1 year, afterwards its TTL is final\n  if (refreshToken.totalLifetime() >= 365.25 * 24 * 60 * 60) {\n    return false;\n  }\n\n  // rotate non sender-constrained public client refresh tokens\n  if (\n    client.clientAuthMethod === 'none'\n    && !refreshToken.isSenderConstrained()\n  ) {\n    return true;\n  }\n\n  // rotate if the token is nearing expiration (it's beyond 70% of its lifetime)\n  return refreshToken.ttlPercentagePassed() >= 70;\n}\n\nasync function loadExistingGrant(ctx) {\n  const grantId = ctx.oidc.result?.consent?.grantId\n    || ctx.oidc.session.grantIdFor(ctx.oidc.client.clientId);\n\n  if (grantId) {\n    return ctx.oidc.provider.Grant.find(grantId);\n  }\n  return undefined;\n}\n\nfunction revokeGrantPolicy(ctx) {\n  if (ctx.oidc.route === 'revocation' && ctx.oidc.entities.AccessToken) {\n    return false;\n  }\n  return true;\n}\n\nfunction sectorIdentifierUriValidate(client) {\n  // @param client - the Client instance\n  return true;\n}\n\nasync function processLoginHintToken(ctx, loginHintToken) {\n  // @param ctx - koa request context\n  // @param loginHintToken - string value of the login_hint_token parameter\n  mustChange('features.ciba.processLoginHintToken', 'process the login_hint_token parameter and return the accountId value to use for processsing the request');\n  throw new Error('features.ciba.processLoginHintToken not implemented');\n}\n\nasync function processLoginHint(ctx, loginHint) {\n  // @param ctx - koa request context\n  // @param loginHint - string value of the login_hint parameter\n  mustChange('features.ciba.processLoginHint', 'process the login_hint parameter and return the accountId value to use for processsing the request');\n  throw new Error('features.ciba.processLoginHint not implemented');\n}\n\nasync function verifyUserCode(ctx, account, userCode) {\n  // @param ctx - koa request context\n  // @param account -\n  // @param userCode - string value of the user_code parameter, when not provided it is undefined\n  mustChange('features.ciba.verifyUserCode', 'verify the user_code parameter is present when required and verify its value');\n  throw new Error('features.ciba.verifyUserCode not implemented');\n}\n\nasync function validateBindingMessage(ctx, bindingMessage) {\n  // @param ctx - koa request context\n  // @param bindingMessage - string value of the binding_message parameter, when not provided it is undefined\n  shouldChange('features.ciba.validateBindingMessage', 'verify the binding_message parameter is present when required and verify its value');\n  if (bindingMessage?.match(/^[a-zA-Z0-9-._+/!?#]{1,20}$/) === null) {\n    throw new errors.InvalidBindingMessage(\n      'the binding_message value, when provided, needs to be 1 - 20 characters in length and use only a basic set of characters (matching the regex: ^[a-zA-Z0-9-._+/!?#]{1,20}$ )',\n    );\n  }\n}\n\nasync function validateRequestContext(ctx, requestContext) {\n  // @param ctx - koa request context\n  // @param requestContext - string value of the request_context parameter, when not provided it is undefined\n  mustChange('features.ciba.validateRequestContext', 'verify the request_context parameter is present when required and verify its value');\n  throw new Error('features.ciba.validateRequestContext not implemented');\n}\n\nasync function triggerAuthenticationDevice(ctx, request, account, client) {\n  // @param ctx - koa request context\n  // @param request - the BackchannelAuthenticationRequest instance\n  // @param account - the account object retrieved by findAccount\n  // @param client - the Client instance\n  mustChange('features.ciba.triggerAuthenticationDevice', \"to trigger the authentication and authorization process on end-user's Authentication Device\");\n  throw new Error('features.ciba.triggerAuthenticationDevice not implemented');\n}\n\nasync function assertClaimsParameter(ctx, claims, client) {\n  // @param ctx - koa request context\n  // @param claims - parsed claims parameter\n  // @param client - the Client instance\n}\n\nasync function assertJwtClientAuthClaimsAndHeader(ctx, claims, header, client) {\n  // @param ctx - koa request context\n  // @param claims - parsed JWT Client Authentication Assertion Claims Set as object\n  // @param header - parsed JWT Client Authentication Assertion Headers as object\n  // @param client - the Client instance\n\n  if (ctx.oidc.isFapi('2.0') && claims.aud !== ctx.oidc.issuer) {\n    throw new errors.InvalidClientAuth(\n      'audience (aud) must equal the issuer identifier url',\n    );\n  }\n}\n\nasync function assertJwtClaimsAndHeader(ctx, claims, header, client) {\n  // @param ctx - koa request context\n  // @param claims - parsed Request Object JWT Claims Set as object\n  // @param header - parsed Request Object JWT Headers as object\n  // @param client - the Client instance\n\n  const requiredClaims = [];\n  const fapiProfile = ctx.oidc.isFapi('1.0 Final', '2.0');\n\n  if (fapiProfile) {\n    requiredClaims.push('exp', 'aud', 'nbf');\n  }\n\n  if (ctx.oidc.route === 'backchannel_authentication') {\n    requiredClaims.push('exp', 'iat', 'nbf', 'jti');\n  }\n\n  for (const claim of new Set(requiredClaims)) {\n    if (claims[claim] === undefined) {\n      throw new errors.InvalidRequestObject(\n        `Request Object is missing the '${claim}' claim`,\n      );\n    }\n  }\n\n  if (fapiProfile) {\n    const diff = claims.exp - claims.nbf;\n    if (Math.sign(diff) !== 1 || diff > 3600) {\n      throw new errors.InvalidRequestObject(\n        \"Request Object 'exp' claim too far from 'nbf' claim\",\n      );\n    }\n  }\n}\n\nfunction makeDefaults() {\n  const defaults = {\n    /*\n     * acrValues\n     *\n     * description: An array of strings representing the Authentication Context Class References\n     *   that this authorization server supports.\n     */\n    acrValues: [],\n\n    /*\n     * adapter\n     *\n     * description: Specifies the storage adapter implementation for persisting authorization server\n     *   state. The default implementation provides a basic in-memory adapter suitable for development\n     *   and testing purposes only. When this process is restarted, all stored information will be lost.\n     *   Production deployments MUST provide a custom adapter implementation that persists data to\n     *   external storage (e.g., database, Redis, etc.).\n     *\n     * The adapter constructor will be instantiated for each model type when first accessed.\n     *\n     * see: [The expected interface](/example/my_adapter.js)\n     * see: [Example MongoDB adapter implementation](https://github.com/panva/node-oidc-provider/discussions/1308)\n     * see: [Example Redis adapter implementation](https://github.com/panva/node-oidc-provider/discussions/1309)\n     * see: [Example Redis w/ JSON Adapter](https://github.com/panva/node-oidc-provider/discussions/1310)\n     * see: [Default in-memory adapter implementation](/lib/adapters/memory_adapter.js)\n     * see: [Community Contributed Adapter Archive](https://github.com/panva/node-oidc-provider/discussions/1311)\n     *\n     * @nodefault\n     */\n    adapter: undefined,\n\n    /*\n     * claims\n     *\n     * description: Describes the claims that this authorization server may be able to supply values for.\n     *\n     * It is used to achieve two different things related to claims:\n     * - which additional claims are available to RPs (configure as `{ claimName: null }`)\n     * - which claims fall under what scope (configure `{ scopeName: ['claim', 'another-claim'] }`)\n     *\n     * see: [Configuring OpenID Connect 1.0 Standard Claims](https://github.com/panva/node-oidc-provider/discussions/1299)\n     */\n    claims: {\n      acr: null,\n      sid: null,\n      auth_time: null,\n      iss: null,\n      openid: ['sub'],\n    },\n\n    /*\n     * clientBasedCORS\n     *\n     * description: Specifies a function that determines whether Cross-Origin Resource Sharing (CORS)\n     *   requests shall be permitted based on the requesting client. This function\n     *   is invoked for each CORS preflight and actual request to evaluate the client's authorization\n     *   to access the authorization server from the specified origin.\n     *\n     * see: [Configuring Client Metadata-based CORS Origin allow list](https://github.com/panva/node-oidc-provider/discussions/1298)\n     */\n    clientBasedCORS,\n\n    /*\n     * clients\n     *\n     * description: An array of client metadata objects representing statically configured OAuth 2.0\n     *   and OpenID Connect clients. These clients are persistent, do not expire, and remain available\n     *   throughout the authorization server's lifetime. For dynamic client discovery, the authorization\n     *   server will invoke the adapter's `find` method when encountering unregistered client identifiers.\n     *\n     * To restrict the authorization server to only statically configured clients and disable dynamic\n     *   registration, configure the adapter to return falsy values for client lookup operations\n     *   (e.g., `return Promise.resolve()`).\n     *\n     * Each client's metadata shall be validated according to the specifications in which the respective\n     *   properties are defined.\n     *\n     * example: Available Metadata.\n     *\n     * application_type, client_id, client_name, client_secret, client_uri, contacts,\n     * default_acr_values, default_max_age, grant_types, id_token_signed_response_alg,\n     * initiate_login_uri, jwks, jwks_uri, logo_uri, policy_uri, post_logout_redirect_uris,\n     * redirect_uris, require_auth_time, response_types, response_modes, scope, sector_identifier_uri,\n     * subject_type, token_endpoint_auth_method, tos_uri, userinfo_signed_response_alg\n     *\n     * <br/><br/>The following metadata is available but may not be recognized depending on this\n     * authorization server's configuration.<br/><br/>\n     *\n     * authorization_encrypted_response_alg, authorization_encrypted_response_enc,\n     * authorization_signed_response_alg, backchannel_logout_session_required, backchannel_logout_uri,\n     * id_token_encrypted_response_alg,\n     * id_token_encrypted_response_enc, introspection_encrypted_response_alg,\n     * introspection_encrypted_response_enc, introspection_signed_response_alg,\n     * request_object_encryption_alg, request_object_encryption_enc, request_object_signing_alg,\n     * tls_client_auth_san_dns, tls_client_auth_san_email, tls_client_auth_san_ip,\n     * tls_client_auth_san_uri, tls_client_auth_subject_dn,\n     * tls_client_certificate_bound_access_tokens,\n     * use_mtls_endpoint_aliases, token_endpoint_auth_signing_alg,\n     * userinfo_encrypted_response_alg, userinfo_encrypted_response_enc\n     *\n     */\n    clients: [],\n\n    /*\n     * clientDefaults\n     *\n     * description: Specifies default client metadata values that shall be applied when properties\n     *   are not explicitly provided during Dynamic Client Registration or for statically configured\n     *   clients. This configuration allows override of the authorization server's built-in default\n     *   values for any supported client metadata property.\n     *\n     * example: Changing the default client token_endpoint_auth_method.\n     *\n     * To change the default client token_endpoint_auth_method, configure `clientDefaults` to be an\n     * object like so:\n     *\n     * ```js\n     * {\n     *   token_endpoint_auth_method: 'client_secret_post'\n     * }\n     * ```\n     * example: Changing the default client response type to `code id_token`.\n     *\n     * To change the default client response_types, configure `clientDefaults` to be an\n     * object like so:\n     *\n     * ```js\n     * {\n     *   response_types: ['code id_token'],\n     *   grant_types: ['authorization_code', 'implicit'],\n     * }\n     * ```\n     *\n     */\n    clientDefaults: {\n      grant_types: ['authorization_code'],\n      id_token_signed_response_alg: 'RS256',\n      response_types: ['code'],\n      token_endpoint_auth_method: 'client_secret_basic',\n    },\n\n    /*\n     * clockTolerance\n     *\n     * description: Specifies the maximum acceptable clock skew tolerance (in seconds) for validating\n     *   time-sensitive operations, including JWT validation for Request Objects, DPoP Proofs, and\n     *   other timestamp-based security mechanisms.\n     *\n     * recommendation: This value should be kept as small as possible while accommodating expected\n     *   clock drift between the authorization server and client systems.\n     */\n    clockTolerance: 15,\n\n    /*\n     * conformIdTokenClaims\n     *\n     * title: ID Token only contains End-User claims when the requested `response_type` is `id_token`\n     *\n     * description: [`OIDC Core 1.0` - Requesting Claims using Scope Values](https://openid.net/specs/openid-connect-core-1_0-errata2.html#ScopeClaims)\n     * defines that claims requested using the `scope` parameter are only returned from the UserInfo\n     * Endpoint unless the `response_type` is `id_token`.\n     *\n     * Despite this configuration, the ID Token always includes claims requested using the `scope`\n     * parameter when the userinfo endpoint is disabled, or when issuing an Access Token not applicable\n     * for access to the userinfo endpoint.\n     *\n     */\n    conformIdTokenClaims: true,\n\n    /*\n     * loadExistingGrant\n     *\n     * description: Helper function invoked to load existing authorization grants that may be used\n     *   to resolve an Authorization Request without requiring additional end-user interaction.\n     *   The default implementation attempts to load grants based on the interaction result's\n     *   `consent.grantId` property, falling back to the existing grantId for the requesting client\n     *   in the current session.\n     */\n    loadExistingGrant,\n\n    /*\n     * allowOmittingSingleRegisteredRedirectUri\n     *\n     * title: Redirect URI Parameter Omission for Single Registered URI\n     *\n     * description: Specifies whether clients may omit the `redirect_uri` parameter in authorization\n     *   requests when only a single redirect URI is registered in their client metadata. When enabled,\n     *   the authorization server shall automatically use the sole registered redirect URI for clients\n     *   that have exactly one URI configured.\n     *\n     * When disabled, all authorization requests MUST explicitly include the `redirect_uri` parameter\n     *   regardless of the number of registered redirect URIs.\n     */\n    allowOmittingSingleRegisteredRedirectUri: true,\n\n    /*\n     * acceptQueryParamAccessTokens\n     *\n     * description: Controls whether access tokens may be transmitted via URI query parameters.\n     *   Several OAuth 2.0 and OpenID Connect profiles require that access tokens be transmitted\n     *   exclusively via the Authorization header. When set to false, the authorization server\n     *   shall reject requests attempting to transmit access tokens via query parameters.\n     *\n     */\n    acceptQueryParamAccessTokens: false,\n\n    /*\n     * cookies\n     *\n     * description: Configuration for HTTP cookies used to maintain User-Agent state throughout\n     *   the authorization flow. These settings conform to the\n     *   [cookies module interface specification](https://github.com/pillarjs/cookies/tree/0.9.1?tab=readme-ov-file#cookiessetname--values--options).\n     *   The `maxAge` and `expires` properties are ignored; cookie lifetimes are instead controlled\n     *   via the `ttl.Session` and `ttl.Interaction` configuration parameters.\n     * @nodefault\n     */\n    cookies: {\n      /*\n       * cookies.names\n       *\n       * description: Specifies the HTTP cookie names used for state management during the\n       *   authorization flow.\n       */\n      names: {\n        session: '_session', // used for main session reference\n        interaction: '_interaction', // used by the interactions for interaction session reference\n        resume: '_interaction_resume', // used when interactions resume authorization for interaction session reference\n      },\n\n      /*\n       * cookies.long\n       *\n       * description: Options for long-term cookies.\n       */\n      long: {\n        httpOnly: true, // cookies are not readable by client-side JavaScript\n        sameSite: 'lax',\n      },\n\n      /*\n       * cookies.short\n       *\n       * description: Options for short-term cookies.\n       */\n      short: {\n        httpOnly: true, // cookies are not readable by client-side JavaScript\n        sameSite: 'lax',\n      },\n\n      /*\n       * cookies.keys\n       *\n       * description: [Keygrip](https://www.npmjs.com/package/keygrip) signing keys used for cookie\n       *   signing to prevent tampering. You may also pass your own KeyGrip instance.\n       *\n       * recommendation: Rotate regularly (by prepending new keys) with a reasonable interval and keep\n       *   a reasonable history of keys to allow for returning user session cookies to still be valid\n       *   and re-signed.\n       *\n       * @skip\n       */\n      keys: [],\n    },\n\n    /*\n     * discovery\n     *\n     * description: Pass additional properties to this object to extend the discovery document.\n     */\n    discovery: {\n      claim_types_supported: ['normal'],\n      claims_locales_supported: undefined,\n      display_values_supported: undefined,\n      op_policy_uri: undefined,\n      op_tos_uri: undefined,\n      service_documentation: undefined,\n      ui_locales_supported: undefined,\n    },\n\n    /*\n     * extraParams\n     *\n     * description: Specifies additional parameters that shall be recognized by the authorization,\n     *   device authorization, backchannel authentication, and pushed authorization request endpoints.\n     *   These extended parameters become available in `ctx.oidc.params` and are passed to interaction\n     *   session details for processing.\n     *\n     * This configuration accepts either an iterable object (array or Set of strings) for simple\n     *   parameter registration, or a plain object with string properties representing parameter names\n     *   and values being validation functions (synchronous or asynchronous) for the corresponding\n     *   parameter values.\n     *\n     * Parameter validators are executed regardless of the parameter's presence or value, enabling\n     *   validation of parameter presence as well as assignment of default values. When the value\n     *   is `null` or `undefined`, the parameter is registered without validation constraints.\n     *\n     * Note: These validators execute during the final phase of the request validation process.\n     *   Modifications to other parameters (such as assigning default values) will not trigger\n     *   re-validation of the entire request.\n     *\n     * example: Registering an extra `origin` parameter with its validator.\n     *\n     * ```js\n     * import { errors } from 'oidc-provider';\n     *\n     * const extraParams = {\n     *   async origin(ctx, value, client) {\n     *     // @param ctx - koa request context\n     *     // @param value - the `origin` parameter value (string or undefined)\n     *     // @param client - client making the request\n     *\n     *     if (hasDefaultOrigin(client)) {\n     *       // assign default\n     *       ctx.oidc.params.origin ||= value ||= getDefaultOrigin(client);\n     *     }\n     *\n     *     if (!value && requiresOrigin(ctx, client)) {\n     *       // reject when missing but required\n     *       throw new errors.InvalidRequest('\"origin\" is required for this request')\n     *     }\n     *\n     *     if (!allowedOrigin(value, client)) {\n     *       // reject when not allowed\n     *       throw new errors.InvalidRequest('requested \"origin\" is not allowed for this client')\n     *     }\n     *   }\n     * }\n     * ```\n     */\n    extraParams: [],\n\n    /*\n     * features\n     *\n     * description: Specifies the authorization server feature capabilities that shall be enabled\n     *   or disabled. This configuration controls the availability of optional OAuth 2.0 and\n     *   OpenID Connect extensions, experimental specifications, and proprietary enhancements.\n     *\n     * Certain features may be designated as experimental implementations. When experimental\n     *   features are enabled, the authorization server will emit warnings to indicate that\n     *   breaking changes may occur in future releases. These changes will be published as\n     *   minor version updates of the oidc-provider module.\n     *\n     * To suppress experimental feature warnings and ensure configuration validation against\n     *   breaking changes, implementations shall acknowledge the specific experimental feature\n     *   version using the acknowledgment mechanism demonstrated in the example below. When\n     *   an unacknowledged breaking change is detected, the authorization server configuration\n     *   will throw an error during instantiation.\n     *\n     * example: Acknowledging an experimental feature.\n     *\n     * ```js\n     * import * as oidc from 'oidc-provider'\n     *\n     * new oidc.Provider('http://localhost:3000', {\n     *   features: {\n     *     webMessageResponseMode: {\n     *       enabled: true,\n     *     },\n     *   },\n     * });\n     *\n     * // The above code produces this NOTICE\n     * // NOTICE: The following experimental features are enabled and their implemented version not acknowledged\n     * // NOTICE:   - OAuth 2.0 Web Message Response Mode - draft 01 (Acknowledging this feature's implemented version can be done with the value 'individual-draft-01')\n     * // NOTICE: Breaking changes between experimental feature updates may occur and these will be published as MINOR semver oidc-provider updates.\n     * // NOTICE: You may disable this notice and be warned when breaking updates occur by acknowledging the current experiment's version. See the documentation for more details.\n     *\n     * new oidc.Provider('http://localhost:3000', {\n     *   features: {\n     *     webMessageResponseMode: {\n     *       enabled: true,\n     *       ack: 'individual-draft-01',\n     *     },\n     *   },\n     * });\n     * // No more NOTICE, at this point if the experimental was updated and contained no breaking\n     * // changes, you're good to go, still no NOTICE, your code is safe to run.\n     *\n     * // Now lets assume you upgrade oidc-provider version and it includes a breaking change in\n     * // this experimental feature\n     * new oidc.Provider('http://localhost:3000', {\n     *   features: {\n     *     webMessageResponseMode: {\n     *       enabled: true,\n     *       ack: 'individual-draft-01',\n     *     },\n     *   },\n     * });\n     * // Thrown:\n     * // Error: An unacknowledged version of an experimental feature is included in this oidc-provider version.\n     * ```\n     * @nodefault\n     */\n    features: {\n      /*\n       * features.devInteractions\n       *\n       * description: Enables development-only interaction views that provide pre-built user\n       *   interface components for rapid prototyping and testing of authorization flows. These\n       *   views accept any username (used as the subject claim value) and any password for\n       *   authentication, bypassing production-grade security controls.\n       *\n       * Production deployments MUST disable this feature and implement proper end-user\n       *   authentication and authorization mechanisms. These development views MUST NOT\n       *   be used in production environments as they provide no security guarantees and\n       *   accept arbitrary credentials.\n       */\n      devInteractions: { enabled: true },\n\n      /*\n       * features.dPoP\n       *\n       * title: [`RFC9449`](https://www.rfc-editor.org/rfc/rfc9449.html) - OAuth 2.0 Demonstration of Proof-of-Possession at the Application Layer (`DPoP`)\n       *\n       * description: Enables sender-constraining of OAuth 2.0 tokens through application-level\n       *   proof-of-possession mechanisms.\n       */\n      dPoP: {\n        enabled: true,\n\n        /**\n         * features.dPoP.nonceSecret\n         *\n         * description: Specifies the cryptographic secret value used for generating server-provided\n         *   DPoP nonces. When provided, this value MUST be a 32-byte length\n         *   Buffer instance to ensure sufficient entropy for secure nonce generation.\n         */\n        nonceSecret: undefined,\n        /**\n         * features.dPoP.requireNonce\n         *\n         * description: Specifies a function that determines whether a DPoP nonce shall be required\n         *   for proof-of-possession validation in the current request context. This function is\n         *   invoked during DPoP proof validation to enforce nonce requirements based on\n         *   authorization server policy.\n         */\n        requireNonce,\n        /**\n         * features.dPoP.allowReplay\n         *\n         * description: Specifies whether DPoP Proof replay shall be permitted by the\n         *   authorization server. When set to false, the server enforces strict replay protection\n         *   by rejecting previously used DPoP proofs, enhancing security against replay attacks.\n         */\n        allowReplay: false,\n      },\n\n      /*\n       * features.backchannelLogout\n       *\n       * title: [`OIDC Back-Channel Logout 1.0`](https://openid.net/specs/openid-connect-backchannel-1_0-final.html)\n       *\n       * description: Specifies whether Back-Channel Logout capabilities shall be enabled. When\n       *   enabled, the authorization server shall support propagating end-user logouts initiated\n       *   by relying parties to clients that were involved throughout the lifetime of the\n       *   terminated session.\n       */\n      backchannelLogout: { enabled: false },\n\n      /*\n       * features.ciba\n       *\n       * title: [OIDC Client Initiated Backchannel Authentication Flow (`CIBA`)](https://openid.net/specs/openid-client-initiated-backchannel-authentication-core-1_0-final.html)\n       *\n       * description: Enables Core `CIBA` Flow, when combined with `features.fapi` and\n       *   `features.requestObjects.enabled` enables\n       *   [Financial-grade API: Client Initiated Backchannel Authentication Profile - Implementers Draft 01](https://openid.net/specs/openid-financial-api-ciba-ID1.html)\n       *   as well.\n       *\n       */\n      ciba: {\n        enabled: false,\n\n        /*\n         * features.ciba.deliveryModes\n         *\n         * description: Specifies the token delivery modes supported by this authorization server.\n         *   The following delivery modes are defined:\n         *   - `poll` - Client polls the token endpoint for completion\n         *   - `ping` - Authorization server notifies client of completion via HTTP callback\n         *\n         */\n        deliveryModes: ['poll'],\n\n        /*\n         * features.ciba.triggerAuthenticationDevice\n         *\n         * description: Specifies a helper function that shall be invoked to initiate authentication\n         *   and authorization processes on the end-user's Authentication Device as defined in the\n         *   CIBA specification. This function is executed after accepting the backchannel\n         *   authentication request but before transmitting the response to the requesting client.\n         *\n         * Upon successful end-user authentication, implementations shall use `provider.backchannelResult()`\n         *   to complete the Consumption Device login process.\n         *\n         * example: `provider.backchannelResult()` method.\n         *\n         * `backchannelResult` is a method on the Provider prototype, it returns a `Promise` with no fulfillment value.\n         *\n         * ```js\n         * import * as oidc from 'oidc-provider';\n         * const provider = new oidc.Provider(...);\n         * await provider.backchannelResult(...);\n         * ```\n         *\n         * `backchannelResult(request, result[, options]);`\n         * - `request` BackchannelAuthenticationRequest - BackchannelAuthenticationRequest instance.\n         * - `result` Grant | OIDCProviderError - instance of a persisted Grant model or an OIDCProviderError (all exported by errors).\n         * - `options.acr?`: string - Authentication Context Class Reference value that identifies the Authentication Context Class that the authentication performed satisfied.\n         * - `options.amr?`: string[] - Identifiers for authentication methods used in the authentication.\n         * - `options.authTime?`: number - Time when the end-user authentication occurred.\n         *\n         */\n        triggerAuthenticationDevice,\n\n        /*\n         * features.ciba.validateBindingMessage\n         *\n         * description: Specifies a helper function that shall be invoked to validate the\n         *   `binding_message` parameter according to authorization server policy. This function\n         *   MUST reject invalid binding messages by throwing appropriate error instances.\n         *\n         * recommendation: Use `throw new errors.InvalidBindingMessage('validation error message')`\n         *   when the binding_message violates authorization server policy.\n         * recommendation: Use `return undefined` when a binding_message is not required by policy\n         *   and was not provided in the request.\n         *\n         */\n        validateBindingMessage,\n\n        /*\n         * features.ciba.validateRequestContext\n         *\n         * description: Specifies a helper function that shall be invoked to validate the\n         *   `request_context` parameter according to authorization server policy. This function\n         *   MUST enforce policy requirements for request context validation and reject\n         *   non-compliant requests.\n         *\n         * recommendation: Use `throw new errors.InvalidRequest('validation error message')`\n         *   when the request_context is required by policy but missing or invalid.\n         * recommendation: Use `return undefined` when a request_context is not required by policy\n         *   and was not provided in the request.\n         *\n         */\n        validateRequestContext,\n\n        /*\n         * features.ciba.processLoginHintToken\n         *\n         * description: Specifies a helper function that shall be invoked to process the\n         *   `login_hint_token` parameter and extract the corresponding accountId value for\n         *   request processing. This function MUST validate token expiration and format\n         *   according to authorization server policy.\n         *\n         * recommendation: Use `throw new errors.ExpiredLoginHintToken('validation error message')`\n         *   when the login_hint_token has expired.\n         * recommendation: Use `throw new errors.InvalidRequest('validation error message')`\n         *   when the login_hint_token format or content is invalid.\n         * recommendation: Use `return undefined` when the accountId cannot be determined\n         *   from the provided login_hint_token.\n         *\n         */\n        processLoginHintToken,\n\n        /*\n         * features.ciba.processLoginHint\n         *\n         * description: Specifies a helper function that shall be invoked to process the\n         *   `login_hint` parameter and extract the corresponding accountId value for\n         *   request processing. This function MUST validate the hint format and content\n         *   according to authorization server policy.\n         *\n         * recommendation: Use `throw new errors.InvalidRequest('validation error message')`\n         *   when the login_hint format or content is invalid.\n         * recommendation: Use `return undefined` when the accountId cannot be determined\n         *   from the provided login_hint.\n         *\n         */\n        processLoginHint,\n\n        /*\n         * features.ciba.verifyUserCode\n         *\n         * description: Specifies a helper function that shall be invoked to verify the presence\n         *   and validity of the `user_code` parameter when required by authorization server policy.\n         *\n         * recommendation: Use `throw new errors.MissingUserCode('validation error message')`\n         *   when user_code is required by policy but was not provided.\n         * recommendation: Use `throw new errors.InvalidUserCode('validation error message')`\n         *   when the provided user_code value is invalid or does not meet policy requirements.\n         * recommendation: Use `return undefined` when no user_code was provided and it is not\n         *   required by authorization server policy.\n         *\n         */\n        verifyUserCode,\n      },\n\n      /*\n       * features.mTLS\n       *\n       * title: [`RFC8705`](https://www.rfc-editor.org/rfc/rfc8705.html) - OAuth 2.0 Mutual TLS Client Authentication and Certificate Bound Access Tokens (`MTLS`)\n       *\n       * description: Specifies whether Mutual TLS capabilities shall be enabled.\n       * The authorization server supports three distinct features that require separate configuration\n       * settings within this feature's configuration object. Implementations MUST provide\n       * deployment-specific helper functions for certificate validation and processing operations.\n       *\n       */\n      mTLS: {\n        enabled: false,\n\n        /*\n         * features.mTLS.certificateBoundAccessTokens\n         *\n         * description: Specifies whether Certificate-Bound Access Tokens shall be enabled as\n         *   defined in RFC 8705 sections 3 and 4. When enabled, the authorization server shall\n         *   expose the client's `tls_client_certificate_bound_access_tokens` metadata property\n         *   for mutual TLS certificate binding functionality.\n         */\n        certificateBoundAccessTokens: false,\n\n        /*\n         * features.mTLS.selfSignedTlsClientAuth\n         *\n         * description: Specifies whether Self-Signed Certificate Mutual TLS client authentication\n         *   shall be enabled as defined in RFC 8705 section 2.2. When enabled, the authorization\n         *   server shall support the `self_signed_tls_client_auth` authentication method within\n         *   the server's `clientAuthMethods` configuration.\n         */\n        selfSignedTlsClientAuth: false,\n\n        /*\n         * features.mTLS.tlsClientAuth\n         *\n         * description: Specifies whether PKI Mutual TLS client authentication shall be enabled\n         *   as defined in RFC 8705 section 2.1. When enabled, the authorization server shall\n         *   support the `tls_client_auth` authentication method within the server's\n         *   `clientAuthMethods` configuration.\n         */\n        tlsClientAuth: false,\n\n        /*\n         * features.mTLS.getCertificate\n         *\n         * description: Specifies a helper function that shall be invoked to retrieve the client\n         *   certificate used in the current request. This function MUST return either a\n         *   `crypto.X509Certificate` instance or a PEM-formatted string representation of\n         *   the client certificate for mutual TLS processing.\n         */\n        getCertificate,\n\n        /*\n         * features.mTLS.certificateAuthorized\n         *\n         * description: Specifies a helper function that shall be invoked to determine whether\n         *   the client certificate used in the request is verified and originates from a trusted\n         *   Certificate Authority for the requesting client. This function MUST return a boolean\n         *   value indicating certificate authorization status. This validation is exclusively\n         *   used for the `tls_client_auth` client authentication method.\n         */\n        certificateAuthorized,\n\n        /*\n         * features.mTLS.certificateSubjectMatches\n         *\n         * description: Specifies a helper function that shall be invoked to determine whether\n         *   the client certificate subject used in the request matches the registered client\n         *   property according to authorization server policy. This function MUST return a\n         *   boolean value indicating subject matching status. This validation is exclusively\n         *   used for the `tls_client_auth` client authentication method.\n         */\n        certificateSubjectMatches,\n      },\n\n      /*\n       * features.attestClientAuth\n       *\n       * title: [`draft-ietf-oauth-attestation-based-client-auth-06`](https://www.ietf.org/archive/id/draft-ietf-oauth-attestation-based-client-auth-06.html) - OAuth 2.0 Attestation-Based Client Authentication\n       *\n       * description: Specifies whether Attestation-Based Client Authentication capabilities\n       *   shall be enabled. When enabled, the\n       *   authorization server shall support the `attest_jwt_client_auth` authentication\n       *   method within the server's `clientAuthMethods` configuration. This mechanism\n       *   enables Client Instances to authenticate using a Client Attestation JWT issued\n       *   by a trusted Client Attester and a corresponding Client Attestation Proof-of-Possession\n       *   JWT generated by the Client Instance.\n       *\n       */\n      attestClientAuth: {\n        ack: undefined,\n        enabled: false,\n\n        /**\n         * features.attestClientAuth.challengeSecret\n         *\n         * description: Specifies the cryptographic secret value used for generating server-provided\n         *   challenges. This value MUST be a 32-byte length\n         *   Buffer instance to ensure sufficient entropy for secure challenge generation.\n         */\n        challengeSecret: undefined,\n\n        /**\n         * features.attestClientAuth.getAttestationSignaturePublicKey\n         *\n         * description: Specifies a helper function that shall be invoked to verify the issuer\n         *   identifier of a Client Attestation JWT and retrieve the public key used for signature\n         *   verification. At the point of this function's invocation, only the\n         *   JWT format has been validated; no cryptographic or claims verification has occurred.\n         *\n         * The function MUST return a public key in one of the supported formats: CryptoKey,\n         *   KeyObject, or JSON Web Key (JWK) representation. The authorization server shall\n         *   use this key to verify the Client Attestation JWT signature.\n         *\n         * example: Fetching attester public keys from the attester's hosted JWKS\n         *\n         * ```js\n         * import * as jose from 'jose';\n         *\n         * const attesters = new Map(Object.entries({\n         *   'https://attester.example.com': jose.createRemoteJWKSet(new URL('https://attester.example.com/jwks')),\n         * }));\n         *\n         * function getAttestationSignaturePublicKey(ctx, iss, header, client) {\n         *   if (attesters.has(iss)) return attesters.get(iss)(header);\n         *   throw new Error('unsupported oauth-client-attestation issuer');\n         * }\n         * ```\n         */\n        getAttestationSignaturePublicKey,\n\n        /**\n         * features.attestClientAuth.assertAttestationJwtAndPop\n         *\n         * description: Specifies a helper function that shall be invoked to perform additional\n         *   validation of the Client Attestation JWT and Client Attestation Proof-of-Possession\n         *   JWT beyond the specification requirements. This enables enforcement of extension\n         *   profiles, deployment-specific policies, or additional security constraints.\n         *\n         * At the point of invocation, both JWTs have undergone signature verification and\n         *   standard validity claim validation. The function may throw errors to reject\n         *   non-compliant attestations\n         *   or return successfully to indicate acceptance of the client authentication attempt.\n         */\n        assertAttestationJwtAndPop,\n      },\n\n      /*\n       * features.claimsParameter\n       *\n       * title: [`OIDC Core 1.0`](https://openid.net/specs/openid-connect-core-1_0-errata2.html#ClaimsParameter) - Requesting Claims using the \"claims\" Request Parameter\n       *\n       * description: Specifies whether the `claims` request parameter shall be enabled for\n       *   authorization requests.\n       *   When enabled, the authorization server shall accept and process\n       *   the `claims` parameter to enable fine-grained control over which claims are\n       *   returned in ID Tokens and from the UserInfo Endpoint.\n       *\n       */\n      claimsParameter: {\n        enabled: false,\n\n        /**\n         * features.claimsParameter.assertClaimsParameter\n         *\n         * description: Specifies a helper function that shall be invoked to perform additional\n         *   validation of the `claims` parameter. This function enables enforcement of\n         *   deployment-specific policies, security constraints, or extended claim validation\n         *   logic according to authorization server requirements.\n         *\n         * The function may throw errors to reject non-compliant claims requests or return\n         *   successfully to indicate acceptance of the claims parameter content.\n         */\n        assertClaimsParameter,\n      },\n\n      /*\n       * features.clientCredentials\n       *\n       * title: [`RFC6749`](https://www.rfc-editor.org/rfc/rfc6749.html#section-1.3.4) - Client Credentials\n       *\n       * description: Specifies whether the Client Credentials grant type shall be enabled.\n       *   When enabled, the authorization server\n       *   shall accept `grant_type=client_credentials` requests at the token endpoint,\n       *   allowing clients to obtain access tokens.\n       */\n      clientCredentials: { enabled: false },\n\n      /*\n       * features.deviceFlow\n       *\n       * title: [`RFC8628`](https://www.rfc-editor.org/rfc/rfc8628.html) - OAuth 2.0 Device Authorization Grant (`Device Flow`)\n       *\n       * description: Specifies whether the OAuth 2.0 Device Authorization Grant shall be enabled.\n       *   When enabled, the authorization server shall support the device\n       *   authorization flow, enabling OAuth clients on input-constrained devices to obtain\n       *   user authorization by directing the user to perform the authorization flow on a\n       *   secondary device with richer input and display capabilities.\n       */\n      deviceFlow: {\n        enabled: false,\n\n        /*\n         * features.deviceFlow.charset\n         *\n         * description: Specifies the character set used for generating user codes in the device\n         *   authorization flow. This configuration determines the alphabet from which user codes\n         *   are constructed. Supported values include:\n         *   - `base-20` - Uses characters BCDFGHJKLMNPQRSTVWXZ (excludes easily confused characters)\n         *   - `digits` - Uses characters 0123456789 (numeric only)\n         */\n        charset: 'base-20',\n\n        /*\n         * features.deviceFlow.mask\n         *\n         * description: Specifies the template pattern used for generating user codes in the device\n         *   authorization flow. The authorization server shall replace `*` characters with random\n         *   characters from the configured charset, while `-` (dash) and ` ` (space) characters\n         *   may be included for enhanced readability. Refer to RFC 8628\n         *   for guidance on minimal recommended entropy requirements for user code generation.\n         */\n        mask: '****-****',\n\n        /*\n         * features.deviceFlow.deviceInfo\n         *\n         * description: Specifies a helper function that shall be invoked to extract device-specific\n         *   information from device authorization endpoint requests. The extracted information\n         *   becomes available during the end-user confirmation screen to assist users in verifying\n         *   that the authorization request originated from a device in their possession. This\n         *   enhances security by enabling users to confirm device identity before granting authorization.\n         */\n        deviceInfo,\n        /*\n         * features.deviceFlow.userCodeInputSource\n         *\n         * description: Specifies the HTML source that shall be rendered when the device flow\n         *   feature displays a user code input prompt to the User-Agent. This template is\n         *   presented during the device authorization flow when the authorization server\n         *   requires the end-user to enter a device-generated user code for verification.\n         */\n        userCodeInputSource,\n\n        /*\n         * features.deviceFlow.userCodeConfirmSource\n         *\n         * description: Specifies the HTML source that shall be rendered when the device flow\n         *   feature displays a confirmation prompt to the User-Agent. This template is\n         *   presented after successful user code validation to confirm the authorization\n         *   request before proceeding with the device authorization flow.\n         */\n        userCodeConfirmSource,\n\n        /*\n         * features.deviceFlow.successSource\n         *\n         * description: Specifies the HTML source that shall be rendered when the device flow\n         *   feature displays a success page to the User-Agent. This template is presented\n         *   upon successful completion of the device authorization flow to inform the\n         *   end-user that authorization has been granted to the requesting device.\n         */\n        successSource,\n      },\n\n      /*\n       * features.encryption\n       *\n       * description: Specifies whether encryption capabilities shall be enabled.\n       *   When enabled, the authorization server shall support accepting and issuing encrypted\n       *   tokens involved in its other enabled capabilities.\n       */\n      encryption: { enabled: false },\n\n      /*\n       * features.fapi\n       *\n       * title: FAPI Security Profiles (`FAPI`)\n       *\n       * description: Specifies whether FAPI Security Profile capabilities shall be\n       *   enabled. When enabled, the authorization server shall implement additional security\n       *   behaviors defined in FAPI specifications that cannot be achieved through other\n       *   configuration options.\n       */\n      fapi: {\n        enabled: false,\n        /*\n         * features.fapi.profile\n         *\n         * description: Specifies the FAPI profile version that shall be applied for security\n         *   policy enforcement. The authorization server shall implement the behaviors defined\n         *   in the selected profile specification. Supported values include:\n         *\n         * - '2.0' - The authorization server shall implement behaviors from [FAPI 2.0 Security Profile](https://openid.net/specs/fapi-security-profile-2_0-final.html)\n         * - '1.0 Final' - The authorization server shall implement behaviors from [FAPI 1.0 Security Profile - Part 2: Advanced](https://openid.net/specs/openid-financial-api-part-2-1_0-final.html)\n         * - Function - A function that shall be invoked with arguments `(ctx, client)` to determine\n         *   the profile contextually. The function shall return one of the supported profile values\n         *   or undefined when FAPI behaviors should be ignored for the current request context.\n         */\n        profile: undefined,\n      },\n\n      /*\n       * features.rpInitiatedLogout\n       *\n       * title: [`OIDC RP-Initiated Logout 1.0`](https://openid.net/specs/openid-connect-rpinitiated-1_0-final.html)\n       *\n       * description: Specifies whether RP-Initiated Logout capabilities shall be enabled. When\n       *   enabled, the authorization server shall support logout requests initiated by relying\n       *   parties, allowing clients to request termination of end-user sessions.\n       */\n      rpInitiatedLogout: {\n        enabled: true,\n\n        /*\n         * features.rpInitiatedLogout.postLogoutSuccessSource\n         *\n         * description: Specifies the HTML source that shall be rendered when an RP-Initiated\n         *   Logout request concludes successfully but no `post_logout_redirect_uri` was provided\n         *   by the requesting client. This template shall be presented to inform the end-user\n         *   that the logout operation has completed successfully and provide appropriate\n         *   post-logout guidance.\n         */\n        postLogoutSuccessSource,\n\n        /*\n         * features.rpInitiatedLogout.logoutSource\n         *\n         * description: Specifies the HTML source that shall be rendered when RP-Initiated Logout\n         *   displays a confirmation prompt to the User-Agent. This template shall be presented\n         *   to request explicit end-user confirmation before proceeding with the logout operation,\n         *   ensuring user awareness and consent for session termination.\n         */\n        logoutSource,\n      },\n\n      /*\n       * features.introspection\n       *\n       * title: [`RFC7662`](https://www.rfc-editor.org/rfc/rfc7662.html) - OAuth 2.0 Token Introspection\n       *\n       * description: Specifies whether OAuth 2.0 Token Introspection capabilities shall be enabled.\n       *   When enabled, the authorization server shall expose a token introspection endpoint that\n       *   allows authorized clients and resource servers to query the metadata and status of\n       *   the following token types:\n       *   - Opaque access tokens\n       *   - Refresh tokens\n       *\n       */\n      introspection: {\n        enabled: false,\n\n        /*\n         * features.introspection.allowedPolicy\n         *\n         * description: Specifies a helper function that shall be invoked to determine whether\n         *   the requesting client or resource server is authorized to introspect the specified\n         *   token. This function enables enforcement of fine-grained access control policies\n         *   for token introspection operations according to authorization server security requirements.\n         */\n        allowedPolicy: introspectionAllowedPolicy,\n      },\n\n      /*\n       * features.jwtIntrospection\n       *\n       * title: [`RFC9701`](https://www.rfc-editor.org/rfc/rfc9701.html) - JWT Response for OAuth Token Introspection\n       *\n       * description: Specifies whether JWT-formatted token introspection responses shall be enabled.\n       *   When enabled, the authorization server shall support issuing introspection responses\n       *   as JSON Web Tokens, providing enhanced security and integrity protection for token\n       *   metadata transmission between authorized parties.\n       */\n      jwtIntrospection: { enabled: false },\n\n      /*\n       * features.jwtResponseModes\n       *\n       * title: [JWT Secured Authorization Response Mode (`JARM`)](https://openid.net/specs/oauth-v2-jarm-errata1.html)\n       *\n       * description: Specifies whether JWT Secured Authorization Response Mode capabilities shall\n       *   be enabled. When enabled, the authorization server shall support encoding authorization\n       *   responses as JSON Web Tokens, providing cryptographic protection and integrity\n       *   assurance for authorization response parameters.\n       */\n      jwtResponseModes: { enabled: false },\n\n      /*\n       * features.pushedAuthorizationRequests\n       *\n       * title: [`RFC9126`](https://www.rfc-editor.org/rfc/rfc9126.html) - OAuth 2.0 Pushed Authorization Requests (`PAR`)\n       *\n       * description: Specifies whether Pushed Authorization Request capabilities shall be enabled.\n       *   When enabled, the authorization server shall expose a pushed authorization request endpoint\n       *   that allows clients to lodge authorization request parameters at the authorization\n       *   server prior to redirecting end-users to the authorization endpoint,\n       *   enhancing security by removing the need to transmit parameters via query string parameters.\n       */\n      pushedAuthorizationRequests: {\n        enabled: true,\n\n        /*\n         * features.pushedAuthorizationRequests.requirePushedAuthorizationRequests\n         *\n         * description: Specifies whether PAR usage shall be mandatory for all authorization\n         *   requests as an authorization server security policy. When enabled, the authorization\n         *   server shall reject authorization endpoint requests that do not utilize the pushed\n         *   authorization request mechanism.\n         */\n        requirePushedAuthorizationRequests: false,\n\n        /*\n         * features.pushedAuthorizationRequests.allowUnregisteredRedirectUris\n         *\n         * description: Specifies whether unregistered redirect_uri values shall be permitted\n         *   for authenticated clients using PAR that do not utilize a sector_identifier_uri.\n         *   This configuration enables dynamic redirect URI specification within the security\n         *   constraints of the pushed authorization request mechanism.\n         */\n        allowUnregisteredRedirectUris: false,\n      },\n\n      /*\n       * features.registration\n       *\n       * title: [`OIDC Dynamic Client Registration 1.0`](https://openid.net/specs/openid-connect-registration-1_0-errata2.html) and [`RFC7591`](https://www.rfc-editor.org/rfc/rfc7591.html) - OAuth 2.0 Dynamic Client Registration Protocol\n       *\n       * description: Specifies whether Dynamic Client Registration capabilities shall be enabled.\n       *   When enabled, the authorization server shall expose a client registration endpoint\n       *   that allows clients to dynamically register themselves with the authorization server\n       *   at runtime, enabling automated client onboarding and configuration management.\n       */\n      registration: {\n        enabled: false,\n\n        /*\n         * features.registration.initialAccessToken\n         *\n         * description: Specifies whether the registration endpoint shall require an initial\n         *   access token as authorization for client registration requests. This configuration\n         *   controls access to the dynamic registration functionality. Supported values include:\n         *   - `string` - The authorization server shall validate the provided bearer token\n         *     against this static initial access token value\n         *   - `boolean` - When true, the authorization server shall require adapter-backed\n         *     initial access tokens; when false, registration requests are processed without\n         *     initial access tokens.\n         *\n         * example: To add an adapter backed initial access token and retrive its value.\n         *\n         * ```js\n         * new (provider.InitialAccessToken)({}).save().then(console.log);\n         * ```\n         */\n        initialAccessToken: false,\n\n        /*\n         * features.registration.policies\n         *\n         * description: Specifies registration and registration management policies that shall be\n         *   applied to client metadata properties during dynamic registration operations. Policies\n         *   are synchronous or asynchronous functions assigned to Initial Access Tokens that\n         *   execute before standard client property validations. Multiple policies may be assigned\n         *   to an Initial Access Token, and by default, the same policies shall transfer to the\n         *   Registration Access Token. Policy functions may throw errors to reject registration\n         *   requests or modify the client properties object before validation.\n         *\n         * example: To define registration and registration management policies.\n         *\n         * To define policy functions configure `features.registration` to be an object like so:\n         *\n         * ```js\n         * {\n         *   enabled: true,\n         *   initialAccessToken: true, // to enable adapter-backed initial access tokens\n         *   policies: {\n         *     'my-policy': function (ctx, properties) {\n         *       // @param ctx - koa request context\n         *       // @param properties - the client properties which are about to be validated\n         *\n         *       // example of setting a default\n         *       if (!('client_name' in properties)) {\n         *         properties.client_name = generateRandomClientName();\n         *       }\n         *\n         *       // example of forcing a value\n         *       properties.userinfo_signed_response_alg = 'RS256';\n         *\n         *       // example of throwing a validation error\n         *       if (someCondition(ctx, properties)) {\n         *         throw new errors.InvalidClientMetadata('validation error message');\n         *       }\n         *     },\n         *     'my-policy-2': async function (ctx, properties) {},\n         *   },\n         * }\n         * ```\n         *\n         * An Initial Access Token with those policies being executed (one by one in that order) is\n         * created like so\n         * ```js\n         * new (provider.InitialAccessToken)({ policies: ['my-policy', 'my-policy-2'] }).save().then(console.log);\n         * ```\n         *\n         * recommendation: Referenced policies MUST always be present when encountered on a token; an AssertionError\n         * will be thrown inside the request context if a policy is not found, resulting in a 500 Server Error.\n         *\n         * recommendation: The same policies will be assigned to the Registration Access Token after a successful\n         * validation. If you wish to assign different policies to the Registration Access Token:\n         * ```js\n         * // inside your final ran policy\n         * ctx.oidc.entities.RegistrationAccessToken.policies = ['update-policy'];\n         * ```\n         */\n        policies: undefined,\n\n        /*\n         * features.registration.idFactory\n         *\n         * description: Specifies a helper function that shall be invoked to generate random\n         *   client identifiers during dynamic client registration operations. This function\n         *   enables customization of client identifier generation according to authorization\n         *   server requirements and conventions.\n         */\n        idFactory,\n\n        /*\n         * features.registration.secretFactory\n         *\n         * description: Specifies a helper function that shall be invoked to generate random\n         *   client secrets during dynamic client registration operations. This function\n         *   enables customization of client secret generation according to authorization\n         *   server security requirements and entropy specifications.\n         */\n        secretFactory,\n\n        /*\n         * features.registration.issueRegistrationAccessToken\n         *\n         * description: Specifies whether a registration access token shall be issued upon\n         *   successful client registration. This configuration determines if clients receive\n         *   tokens for subsequent registration management operations. Supported values include:\n         *   - `true` - Registration access tokens shall be issued for all successful registrations\n         *   - `false` - Registration access tokens shall not be issued\n         *   - Function - A function that shall be invoked to dynamically determine token issuance\n         *     based on request context and authorization server policy\n         *\n         * example: To determine if a registration access token should be issued dynamically.\n         *\n         * ```js\n         * // @param ctx - koa request context\n         * async issueRegistrationAccessToken(ctx) {\n         *   return policyImplementation(ctx)\n         * }\n         * ```\n         */\n        issueRegistrationAccessToken: true,\n      },\n\n      /*\n       * features.registrationManagement\n       *\n       * title: [`RFC7592`](https://www.rfc-editor.org/rfc/rfc7592.html) - OAuth 2.0 Dynamic Client Registration Management Protocol\n       *\n       * description: Specifies whether Dynamic Client Registration Management capabilities shall be enabled.\n       *   When enabled, the authorization server shall expose Update and Delete operations as defined in RFC 7592,\n       *   allowing clients to modify or remove their registration entries using Registration Access Tokens\n       *   for client lifecycle management operations.\n       */\n      registrationManagement: {\n        enabled: false,\n\n        /*\n         * features.registrationManagement.rotateRegistrationAccessToken\n         *\n         * description: Specifies whether registration access token rotation shall be enabled as a security\n         *   policy for client registration management operations. When token rotation is active, the\n         *   authorization server shall discard the current Registration Access Token upon successful\n         *   update operations and issue a new token, returning it to the client with the Registration\n         *   Update Response.\n         *\n         *   Supported values include:\n         *   - `false` - Registration access tokens shall not be rotated and remain valid after use\n         *   - `true` - Registration access tokens shall be rotated when used for management operations\n         *   - Function - A function that shall be invoked to dynamically determine whether rotation\n         *     should occur based on request context and authorization server policy\n         *\n         * example: Dynamic token rotation policy implementation.\n         *\n         * ```js\n         * {\n         *   features: {\n         *     registrationManagement: {\n         *       enabled: true,\n         *       async rotateRegistrationAccessToken(ctx) {\n         *         // return tokenRecentlyRotated(ctx.oidc.entities.RegistrationAccessToken);\n         *         // or\n         *         // return customClientBasedPolicy(ctx.oidc.entities.Client);\n         *       }\n         *     }\n         *   }\n         * }\n         * ```\n         */\n        rotateRegistrationAccessToken: true,\n      },\n\n      /*\n       * features.richAuthorizationRequests\n       *\n       * title: [`RFC9396`](https://www.rfc-editor.org/rfc/rfc9396.html) - OAuth 2.0 Rich Authorization Requests\n       *\n       * description: Specifies whether Rich Authorization Request capabilities shall be enabled.\n       *   When enabled, the authorization server shall support the `authorization_details` parameter\n       *   at the authorization and token endpoints to enable issuing Access Tokens with fine-grained\n       *   authorization data and enhanced authorization scope control.\n       */\n      richAuthorizationRequests: {\n        enabled: false,\n        ack: undefined,\n        /**\n         * features.richAuthorizationRequests.types\n         *\n         * description: Specifies the authorization details type identifiers that shall be supported\n         *   by the authorization server. Each type identifier MUST have an associated validation\n         *   function that defines the required structure and constraints for authorization details\n         *   of that specific type according to authorization server policy.\n         *\n         * example: Authorization details type validation for tax data access.\n         *\n         * ```js\n         * import { z } from 'zod'\n         *\n         * const TaxData = z\n         *   .object({\n         *     duration_of_access: z.number().int().positive(),\n         *     locations: z\n         *       .array(\n         *         z.literal('https://taxservice.govehub.no.example.com'),\n         *       )\n         *       .length(1),\n         *     actions: z\n         *       .array(z.literal('read_tax_declaration'))\n         *       .length(1),\n         *     periods: z\n         *       .array(\n         *         z.coerce\n         *           .number()\n         *           .max(new Date().getFullYear() - 1)\n         *           .min(1997),\n         *       )\n         *       .min(1),\n         *     tax_payer_id: z.string().min(1),\n         *   })\n         *   .strict()\n         *\n         * const configuration = {\n         *   features: {\n         *     richAuthorizationRequests: {\n         *       enabled: true,\n         *       // ...\n         *       types: {\n         *         tax_data: {\n         *           validate(ctx, detail, client) {\n         *             const { success: valid, error } =\n         *               TaxData.parse(detail)\n         *             if (!valid) {\n         *               throw new InvalidAuthorizationDetails()\n         *             }\n         *           },\n         *         },\n         *       },\n         *     },\n         *   },\n         * }\n         * ```\n         */\n        types: {},\n        /*\n         * features.richAuthorizationRequests.rarForAuthorizationCode\n         *\n         * description: Specifies a helper function that shall be invoked to transform the requested\n         *   and granted Rich Authorization Request details for storage in the authorization code.\n         *   This function enables filtering and processing of authorization details according to\n         *   authorization server policy before code persistence. The function shall return an\n         *   array of authorization details or undefined.\n         */\n        rarForAuthorizationCode(ctx) {\n          // decision points:\n          // - ctx.oidc.client\n          // - ctx.oidc.resourceServers\n          // - ctx.oidc.params.authorization_details (unparsed authorization_details from the authorization request)\n          // - ctx.oidc.grant.rar (authorization_details granted)\n          mustChange('features.richAuthorizationRequests.rarForAuthorizationCode', 'transform the requested and granted RAR details to be passed in the authorization code');\n          throw new Error(\n            'features.richAuthorizationRequests.rarForAuthorizationCode not implemented',\n          );\n        },\n        /*\n         * features.richAuthorizationRequests.rarForCodeResponse\n         *\n         * description: Specifies a helper function that shall be invoked to transform the requested\n         *   and granted Rich Authorization Request details for inclusion in the Access Token Response\n         *   as authorization_details and assignment to the issued Access Token during the authorization code grant.\n         *   This function enables\n         *   resource-specific filtering and transformation of authorization details according to\n         *   token endpoint policy. The function shall return an array of authorization details or undefined.\n         */\n        rarForCodeResponse(ctx, resourceServer) {\n          // decision points:\n          // - ctx.oidc.client\n          // - resourceServer\n          // - ctx.oidc.authorizationCode.rar (previously returned from rarForAuthorizationCode)\n          // - ctx.oidc.params.authorization_details (unparsed authorization_details from the body params in the Access Token Request)\n          // - ctx.oidc.grant.rar (authorization_details granted)\n          mustChange('features.richAuthorizationRequests.rarForCodeResponse', 'transform the requested and granted RAR details to be returned in the Access Token Response as authorization_details as well as assigned to the issued Access Token');\n          throw new Error(\n            'features.richAuthorizationRequests.rarForCodeResponse not implemented',\n          );\n        },\n        /*\n         * features.richAuthorizationRequests.rarForBackchannelResponse\n         *\n         * description: Specifies a helper function that shall be invoked to transform the requested\n         *   and granted Rich Authorization Request details for inclusion in the Access Token Response\n         *   as authorization_details and assignment to the issued Access Token during the ciba grant.\n         *   This function enables\n         *   resource-specific filtering and transformation of authorization details according to\n         *   token endpoint policy. The function shall return an array of authorization details or undefined.\n         */\n        rarForBackchannelResponse(ctx, resourceServer) {\n          // decision points:\n          // - ctx.oidc.client\n          // - resourceServer\n          // - ctx.oidc.entities.BackchannelAuthenticationRequest.rar (the rar applied during await provider.backchannelResult())\n          // - ctx.oidc.entities.BackchannelAuthenticationRequest.params.authorization_details (the original backchannel authentication request authorization_details object)\n          // - ctx.oidc.params.authorization_details (unparsed authorization_details from the body params in the Access Token Request)\n          // - ctx.oidc.grant.rar (authorization_details granted)\n          mustChange('features.richAuthorizationRequests.rarForBackchannelResponse', 'transform the requested and granted RAR details to be returned in the Access Token Response as authorization_details as well as assigned to the issued Access Token');\n          throw new Error(\n            'features.richAuthorizationRequests.rarForBackchannelResponse not implemented',\n          );\n        },\n        /*\n         * features.richAuthorizationRequests.rarForRefreshTokenResponse\n         *\n         * description: Specifies a helper function that shall be invoked to transform the requested\n         *   and granted Rich Authorization Request details for inclusion in the Access Token Response\n         *   during refresh token exchanges as authorization_details and assignment to the newly issued\n         *   Access Token. This function enables resource-specific processing of previously granted\n         *   authorization details according to refresh token policy. The function shall return an\n         *   array of authorization details or undefined.\n         */\n        rarForRefreshTokenResponse(ctx, resourceServer) {\n          // decision points:\n          // - ctx.oidc.client\n          // - resourceServer\n          // - ctx.oidc.refreshToken.rar (previously returned from rarForAuthorizationCode and later assigned to the refresh token)\n          // - ctx.oidc.params.authorization_details (unparsed authorization_details from the body params in the Access Token Request)\n          // - ctx.oidc.grant.rar\n          mustChange('features.richAuthorizationRequests.rarForRefreshTokenResponse', 'transform the requested and granted RAR details to be returned in the Access Token Response as authorization_details as well as assigned to the issued Access Token');\n          throw new Error(\n            'features.richAuthorizationRequests.rarForRefreshTokenResponse not implemented',\n          );\n        },\n        /*\n         * features.richAuthorizationRequests.rarForIntrospectionResponse\n         *\n         * description: Specifies a helper function that shall be invoked to transform the token's\n         *   stored Rich Authorization Request details for inclusion in the Token Introspection Response.\n         *   This function enables filtering and processing of authorization details according to\n         *   introspection endpoint policy and requesting party authorization. The function shall\n         *   return an array of authorization details or undefined.\n         */\n        rarForIntrospectionResponse(ctx, token) {\n          // decision points:\n          // - ctx.oidc.client\n          // - token.kind\n          // - token.rar\n          // - ctx.oidc.grant.rar\n          mustChange('features.richAuthorizationRequests.rarForIntrospectionResponse', 'transform the token\\'s stored RAR details to be returned in the Introspection Response');\n          throw new Error(\n            'features.richAuthorizationRequests.rarForIntrospectionResponse not implemented',\n          );\n        },\n      },\n\n      /*\n       * features.resourceIndicators\n       *\n       * title: [`RFC8707`](https://www.rfc-editor.org/rfc/rfc8707.html) - Resource Indicators for OAuth 2.0\n       *\n       * description: Specifies whether Resource Indicator capabilities shall be enabled. When\n       *   enabled, the authorization server shall support the `resource` parameter at the\n       *   authorization and token endpoints to enable issuing Access Tokens for specific\n       *   Resource Servers (APIs) with enhanced audience control and scope management.\n       *\n       * The authorization server implements the following resource indicator processing rules:\n       * - Multiple resource parameters may be present during Authorization Code Flow,\n       * Device Authorization Grant, and Backchannel Authentication Requests,\n       * but only a single audience for an Access Token is permitted.\n       * - Authorization and Authentication Requests that result in an Access Token being issued by the\n       * Authorization Endpoint MUST only contain a single resource (or one MUST be resolved using the\n       * `defaultResource` helper).\n       * - Client Credentials grant MUST only contain a single resource parameter.\n       * - During Authorization Code / Refresh Token / Device Code / Backchannel Authentication Request\n       * exchanges, if the exchanged code/token does not include the `'openid'` scope and only has a single\n       * resource then the resource parameter may be omitted - an Access Token for the single resource is\n       * returned.\n       * - During Authorization Code / Refresh Token / Device Code / Backchannel Authentication Request\n       * exchanges, if the exchanged code/token does not include the `'openid'` scope and has multiple\n       * resources then the resource parameter MUST be provided (or one MUST be resolved using the\n       * `defaultResource` helper).\n       * An Access Token for the provided/resolved resource is returned.\n       * - (with userinfo endpoint enabled and useGrantedResource helper returning falsy)\n       * During Authorization Code / Refresh Token / Device Code\n       * exchanges, if the exchanged code/token includes the `'openid'` scope and no resource\n       * parameter is present - an Access Token for the UserInfo Endpoint is returned.\n       * - (with userinfo endpoint enabled and useGrantedResource helper returning truthy)\n       * During Authorization Code / Refresh Token / Device Code\n       * exchanges, even if the exchanged code/token includes the `'openid'` scope and only has a single\n       * resource then the resource parameter may be omitted - an Access Token for the single resource\n       * is returned.\n       * - (with userinfo endpoint disabled) During Authorization Code / Refresh Token / Device Code\n       * exchanges, if the exchanged code/token includes the `'openid'` scope and only has a single\n       * resource then the resource parameter may be omitted - an Access Token for the single resource\n       * is returned.\n       * - Issued Access Tokens shall always only contain scopes that are defined on the respective Resource\n       * Server (returned from `features.resourceIndicators.getResourceServerInfo`).\n       */\n      resourceIndicators: {\n        enabled: true,\n\n        /*\n         * features.resourceIndicators.defaultResource\n         *\n         * description: Specifies a helper function that shall be invoked to determine the default\n         *   resource indicator for a request when none is provided by the client during the\n         *   authorization request or when multiple resources are provided/resolved and only a\n         *   single one is required during an Access Token Request. This function enables\n         *   authorization server policy-based resource selection according to deployment requirements.\n         */\n        defaultResource,\n\n        /*\n         * features.resourceIndicators.useGrantedResource\n         *\n         * description: Specifies a helper function that shall be invoked to determine whether\n         *   an already granted resource indicator should be used without being explicitly\n         *   requested by the client during the Token Endpoint request. This function enables\n         *   flexible resource selection policies for token issuance operations.\n         *\n         * recommendation: Use `return true` when it's allowed for a client to skip providing the \"resource\"\n         *                 parameter at the Token Endpoint.\n         * recommendation: Use `return false` (default) when it's required for a client to explicitly\n         *                 provide a \"resource\" parameter at the Token Endpoint or when other indication\n         *                 dictates an Access Token for the UserInfo Endpoint should be returned.\n         */\n        useGrantedResource,\n\n        /*\n         * features.resourceIndicators.getResourceServerInfo\n         *\n         * description: Specifies a helper function that shall be invoked to load information about\n         *   a Resource Server (API) and determine whether the client is authorized to request\n         *   scopes for that particular resource. This function enables resource-specific scope\n         *   validation and Access Token configuration according to authorization server policy.\n         *\n         * recommendation: Only allow client's pre-registered resource values. To pre-register these\n         *   you shall use the `extraClientMetadata` configuration option to define a custom metadata\n         *   and use that to implement your policy using this function.\n         *\n         * example: Resource Server Definition.\n         *\n         * ```js\n         * {\n         *   // REQUIRED\n         *   // available scope values (space-delimited string)\n         *   scope: string,\n         *\n         *   // OPTIONAL\n         *   // \"aud\" (Audience) value to use\n         *   // Default is the resource indicator value will be used as token audience\n         *   audience?: string,\n         *\n         *   // OPTIONAL\n         *   // Issued Token TTL\n         *   // Default is - see `ttl` configuration\n         *   accessTokenTTL?: number,\n         *\n         *   // Issued Token Format\n         *   // Default is - opaque\n         *   accessTokenFormat?: 'opaque' | 'jwt',\n         *\n         *   // JWT Access Token Format (when accessTokenFormat is 'jwt')\n         *   // Default is `{ sign: { alg: 'RS256' }, encrypt: false }`\n         *   // Tokens may be signed, signed and then encrypted, or just encrypted JWTs.\n         *   jwt?: {\n         *     // Tokens will be signed\n         *     sign?:\n         *      | {\n         *          alg?: string, // 'PS256' | 'PS384' | 'PS512' | 'ES256' | 'ES384' | 'ES512' | 'Ed25519' | 'RS256' | 'RS384' | 'RS512' | 'EdDSA' | 'ML-DSA-44' | 'ML-DSA-65' | 'ML-DSA-87'\n         *          kid?: string, // OPTIONAL `kid` to aid in signing key selection\n         *        }\n         *      | {\n         *          alg: string, // 'HS256' | 'HS384' | 'HS512'\n         *          key: CryptoKey | KeyObject | Buffer, // shared symmetric secret to sign the JWT token with\n         *          kid?: string, // OPTIONAL `kid` JOSE Header Parameter to put in the token's JWS Header\n         *        },\n         *     // Tokens will be encrypted\n         *     encrypt?: {\n         *       alg: string, // 'dir' | 'RSA-OAEP' | 'RSA-OAEP-256' | 'RSA-OAEP-384' | 'RSA-OAEP-512' | 'ECDH-ES' | 'ECDH-ES+A128KW' | 'ECDH-ES+A192KW' | 'ECDH-ES+A256KW' | 'A128KW' | 'A192KW' | 'A256KW' | 'A128GCMKW' | 'A192GCMKW' | 'A256GCMKW'\n         *       enc: string, // 'A128CBC-HS256' | 'A128GCM' | 'A192CBC-HS384' | 'A192GCM' | 'A256CBC-HS512' | 'A256GCM'\n         *       key: CryptoKey | KeyObject | Buffer, // public key or shared symmetric secret to encrypt the JWT token with\n         *       kid?: string, // OPTIONAL `kid` JOSE Header Parameter to put in the token's JWE Header\n         *     }\n         *   }\n         * }\n         * ```\n         *\n         * example: Resource Server (API) with two scopes, an expected audience value, an Access Token TTL and a JWT Access Token Format.\n         *\n         * ```js\n         * {\n         *   scope: 'api:read api:write',\n         *   audience: 'resource-server-audience-value',\n         *   accessTokenTTL: 2 * 60 * 60, // 2 hours\n         *   accessTokenFormat: 'jwt',\n         *   jwt: {\n         *     sign: { alg: 'ES256' },\n         *   },\n         * }\n         * ```\n         *\n         * example: Resource Server (API) with two scopes and a symmetrically encrypted JWT Access Token Format.\n         *\n         * ```js\n         * {\n         *   scope: 'api:read api:write',\n         *   accessTokenFormat: 'jwt',\n         *   jwt: {\n         *     sign: false,\n         *     encrypt: {\n         *       alg: 'dir',\n         *       enc: 'A128CBC-HS256',\n         *       key: Buffer.from('f40dd9591646bebcb9c32aed02f5e610c2d15e1d38cde0c1fe14a55cf6bfe2d9', 'hex')\n         *     },\n         *   }\n         * }\n         * ```\n         */\n        getResourceServerInfo,\n      },\n\n      /*\n       * features.requestObjects\n       *\n       * title: [`OIDC Core 1.0`](https://openid.net/specs/openid-connect-core-1_0-errata2.html#RequestObject) and [`RFC9101`](https://www.rfc-editor.org/rfc/rfc9101.html#name-passing-a-request-object-by) - Passing a Request Object by Value (`JAR`)\n       *\n       * description: Specifies whether Request Object capabilities shall be enabled. When enabled,\n       *   the authorization server shall support the use and validation of the `request` parameter\n       *   for conveying authorization request parameters as JSON Web Tokens, providing enhanced\n       *   security and integrity protection for authorization requests.\n       */\n      requestObjects: {\n        enabled: false,\n\n        /*\n         * features.requestObjects.requireSignedRequestObject\n         *\n         * description: Specifies whether the use of signed request objects shall be mandatory for\n         *   all authorization requests as an authorization server security policy. When enabled,\n         *   the authorization server shall reject authorization requests that do not include a\n         *   signed Request Object JWT.\n         */\n        requireSignedRequestObject: false,\n\n        /**\n         * features.requestObjects.assertJwtClaimsAndHeader\n         *\n         * description: Specifies a helper function that shall be invoked to perform additional\n         *   validation of the Request Object JWT Claims Set and Header beyond the standard\n         *   JAR specification requirements. This function enables enforcement of deployment-specific\n         *   policies, security constraints, or extended validation logic according to authorization\n         *   server requirements.\n         */\n        assertJwtClaimsAndHeader,\n      },\n\n      /*\n       * features.rpMetadataChoices\n       *\n       * title: [`OIDC Relying Party Metadata Choices 1.0 - Implementers Draft 01`](https://openid.net/specs/openid-connect-rp-metadata-choices-1_0-ID1.html)\n       *\n       * description: Specifies whether Relying Party Metadata Choices capabilities shall be enabled.\n       *   When enabled, the authorization server shall support the following multi-valued input\n       *   parameters metadata from the Relying Party Metadata Choices draft, provided that their\n       *   underlying feature is also enabled:\n       *\n       * - subject_types_supported\n       * - id_token_signing_alg_values_supported\n       * - id_token_encryption_alg_values_supported\n       * - id_token_encryption_enc_values_supported\n       * - userinfo_signing_alg_values_supported\n       * - userinfo_encryption_alg_values_supported\n       * - userinfo_encryption_enc_values_supported\n       * - request_object_signing_alg_values_supported\n       * - request_object_encryption_alg_values_supported\n       * - request_object_encryption_enc_values_supported\n       * - token_endpoint_auth_methods_supported\n       * - token_endpoint_auth_signing_alg_values_supported\n       * - introspection_signing_alg_values_supported\n       * - introspection_encryption_alg_values_supported\n       * - introspection_encryption_enc_values_supported\n       * - authorization_signing_alg_values_supported\n       * - authorization_encryption_alg_values_supported\n       * - authorization_encryption_enc_values_supported\n       * - backchannel_authentication_request_signing_alg_values_supported\n       */\n      rpMetadataChoices: { enabled: false, ack: undefined },\n\n      /*\n       * features.revocation\n       *\n       * title: [`RFC7009`](https://www.rfc-editor.org/rfc/rfc7009.html) - OAuth 2.0 Token Revocation\n       *\n       * description: Specifies whether Token Revocation capabilities shall be enabled. When enabled,\n       *   the authorization server shall expose a token revocation endpoint that allows authorized\n       *   clients and resource servers to notify the authorization server that a particular token\n       *   is no longer needed. This feature supports revocation of the following token types:\n       *   - Opaque access tokens\n       *   - Refresh tokens\n       *\n       */\n      revocation: {\n        enabled: false,\n\n        /*\n         * features.revocation.allowedPolicy\n         *\n         * description: Specifies a helper function that shall be invoked to determine whether\n         *   the requesting client or resource server is authorized to revoke the specified token.\n         *   This function enables enforcement of fine-grained access control policies for token\n         *   revocation operations according to authorization server security requirements.\n         */\n        allowedPolicy: revocationAllowedPolicy,\n      },\n\n      /*\n       * features.userinfo\n       *\n       * title: [`OIDC Core 1.0`](https://openid.net/specs/openid-connect-core-1_0-errata2.html#UserInfo) - UserInfo Endpoint\n       *\n       * description: Specifies whether the UserInfo Endpoint shall be enabled. When enabled,\n       *   the authorization server shall expose a UserInfo endpoint that returns claims about\n       *   the authenticated end-user. Access to this endpoint requires an opaque Access Token\n       *   with at least `openid` scope that does not have a Resource Server audience.\n       */\n      userinfo: { enabled: true },\n\n      /*\n       * features.jwtUserinfo\n       *\n       * title: [`OIDC Core 1.0`](https://openid.net/specs/openid-connect-core-1_0-errata2.html#UserInfo) - JWT UserInfo Endpoint Responses\n       *\n       * description: Specifies whether JWT-formatted UserInfo endpoint responses shall be enabled.\n       *   When enabled, the authorization server shall support returning UserInfo responses as\n       *   signed and/or encrypted JSON Web Tokens, providing enhanced security and integrity\n       *   protection for end-user claims transmission. This feature shall also enable the\n       *   relevant client metadata parameters for configuring JWT signing and/or encryption\n       *   algorithms according to client requirements.\n       */\n      jwtUserinfo: { enabled: false },\n\n      /*\n       * features.webMessageResponseMode\n       *\n       * title: [draft-sakimura-oauth-wmrm-01](https://tools.ietf.org/html/draft-sakimura-oauth-wmrm-01) - OAuth 2.0 Web Message Response Mode\n       *\n       * description: Specifies whether Web Message Response Mode capabilities shall be enabled.\n       *   When enabled, the authorization server shall support the `web_message` response mode\n       *   for returning authorization responses via HTML5 Web Messaging. The implementation\n       *   shall support only Simple Mode operation; authorization requests containing Relay Mode\n       *   parameters will be rejected.\n       *\n       * recommendation: Although a general advise to use a `helmet` (e.g. for [express](https://www.npmjs.com/package/helmet),\n       * [koa](https://www.npmjs.com/package/koa-helmet)) it is especially advised for your interaction\n       * views routes if Web Message Response Mode is enabled in your deployment. You will have to experiment\n       * with removal of the Cross-Origin-Embedder-Policy and Cross-Origin-Opener-Policy headers at various\n       * endpoints throughout the authorization request end-user journey to finalize this feature.\n       */\n      webMessageResponseMode: { enabled: false, ack: undefined },\n\n      /*\n       * features.externalSigningSupport\n       *\n       * title: External Signing Support\n       *\n       * description: Specifies whether external signing capabilities shall be enabled. When enabled,\n       *   the authorization server shall support the use of `ExternalSigningKey` class instances\n       *   in place of private JWK entries within the `jwks.keys` configuration array. This feature\n       *   enables Digital Signature Algorithm operations (such as PS256, ES256, or other supported\n       *   algorithms) to be performed by external cryptographic services, including Key Management\n       *   Services (KMS) and Hardware Security Modules (HSM), providing enhanced security for\n       *   private key material through externalized signing operations.\n       *\n       * see: [KMS integration with AWS Key Management Service](https://github.com/panva/node-oidc-provider/discussions/1316)\n       */\n      externalSigningSupport: { enabled: false, ack: undefined },\n    },\n\n    /*\n     * extraTokenClaims\n     *\n     * description: Specifies a helper function that shall be invoked to add additional claims\n     *   to Access Tokens during the token issuance process. For opaque Access Tokens, the\n     *   returned claims shall be stored in the authorization server storage under the `extra`\n     *   property and shall be returned by the introspection endpoint as top-level claims.\n     *   For JWT-formatted Access Tokens, the returned claims shall be included as top-level\n     *   claims within the JWT payload. Claims returned by this function will not overwrite\n     *   pre-existing top-level claims in the token.\n     *\n     * example: To add an arbitrary claim to an Access Token.\n     *\n     * ```js\n     * {\n     *   async extraTokenClaims(ctx, token) {\n     *     return {\n     *       'urn:idp:example:foo': 'bar',\n     *     };\n     *   }\n     * }\n     * ```\n     */\n    extraTokenClaims,\n\n    formats: {\n      /*\n       * formats.bitsOfOpaqueRandomness\n       *\n       * description: Specifies the entropy configuration for opaque token generation. The value\n       *   shall be an integer (or a function returning an integer) that determines the\n       *   cryptographic strength of generated opaque tokens. The resulting opaque token length\n       *   shall be calculated as `Math.ceil(i / Math.log2(n))` where `i` is the specified\n       *   bit count and `n` is the number of symbols in the encoding alphabet (64 characters\n       *   in the base64url character set used by this implementation).\n       *\n       * example: To have e.g. Refresh Tokens values longer than Access Tokens.\n       *\n       * ```js\n       * function bitsOfOpaqueRandomness(ctx, token) {\n       *   if (token.kind === 'RefreshToken') {\n       *     return 384;\n       *   }\n       *\n       *   return 256;\n       * }\n       * ```\n       */\n      bitsOfOpaqueRandomness: 256,\n\n      /*\n       * formats.customizers\n       *\n       * description: Specifies customizer functions that shall be invoked immediately before\n       *   issuing structured Access Tokens to enable modification of token headers and payload\n       *   claims according to authorization server policy. These functions shall be called\n       *   during the token formatting process to apply deployment-specific customizations\n       *   to the token structure before signing.\n       *\n       * example: To push additional headers and payload claims to a `jwt` format Access Token.\n       *\n       * ```js\n       * {\n       *   customizers: {\n       *     async jwt(ctx, token, jwt) {\n       *       jwt.header = { foo: 'bar' };\n       *       jwt.payload.foo = 'bar';\n       *     }\n       *   }\n       * }\n       * ```\n       */\n      customizers: {\n        jwt: undefined,\n      },\n    },\n\n    /*\n     * expiresWithSession\n     *\n     * description: Specifies a helper function that shall be invoked to determine whether\n     *   authorization codes, device codes, or authorization-endpoint-returned opaque access\n     *   tokens shall be bound to the end-user session. When session binding is enabled, this\n     *   policy shall be applied to all opaque tokens issued from the authorization code, device\n     *   code, or subsequent refresh token exchanges. When artifacts are session-bound, their\n     *   originating session will be loaded by its unique identifier every time the artifacts\n     *   are encountered. Session-bound artifacts shall be effectively revoked when the end-user\n     *   logs out, providing automatic cleanup of token state upon session termination.\n     */\n    expiresWithSession,\n\n    /*\n     * issueRefreshToken\n     *\n     * description: Specifies a helper function that shall be invoked to determine whether\n     *   a refresh token shall be issued during token endpoint operations. This function\n     *   enables policy-based control over refresh token issuance according to authorization\n     *   server requirements, client capabilities, and granted scope values.\n     *\n     * example: To always issue a refresh token (cont.)\n     *\n     * (cont.) if a client has the grant allowed and scope includes offline_access or the client is a\n     * public web client doing code flow. Configure `issueRefreshToken` like so\n     *\n     * ```js\n     * async issueRefreshToken(ctx, client, code) {\n     *   if (!client.grantTypeAllowed('refresh_token')) {\n     *     return false;\n     *   }\n     *\n     *   return code.scopes.has('offline_access') || (client.applicationType === 'web' && client.clientAuthMethod === 'none');\n     * }\n     * ```\n     */\n    issueRefreshToken,\n\n    /*\n     * jwks\n     *\n     * description: Specifies the JSON Web Key Set that shall be used by the authorization server\n     *   for cryptographic signing and decryption operations. The key set MUST be provided in\n     *   [JWK Set format](https://www.rfc-editor.org/rfc/rfc7517.html#section-5) as defined in\n     *   RFC 7517. All keys within the set MUST be private keys.\n     *\n     * Supported key types include:\n     *\n     * - RSA\n     * - OKP (Ed25519 and X25519 sub types)\n     * - EC (P-256, P-384, and P-521 curves)\n     *\n     * recommendation: Be sure to follow best practices for distributing private keying material and secrets\n     * for your respective target deployment environment.\n     *\n     * recommendation: The following action order is recommended when rotating signing keys on a distributed\n     * deployment with rolling reloads in place.\n     *\n     * 1. push new keys at the very end of the \"keys\" array in your JWKS, this means the keys will become\n     *    available for verification should they be encountered but not yet used for signing\n     * 2. reload all your processes\n     * 3. move your new key to the very front of the \"keys\" array in your JWKS, this means the key will be\n     *    used for signing after reload\n     * 4. reload all your processes\n     *\n     * @nodefault\n     *\n     */\n    jwks: undefined,\n\n    /*\n     * responseTypes\n     *\n     * description: Specifies the response_type values supported by this authorization server.\n     *   In accordance with RFC 9700 (OAuth 2.0 Security Best Current Practice), the default\n     *   configuration excludes response types that result in access tokens being issued directly\n     *   by the authorization endpoint.\n     *\n     * example: Supported values list.\n     *\n     * These are values defined in [`OIDC Core 1.0`](https://openid.net/specs/openid-connect-core-1_0-errata2.html#Authentication)\n     * and [OAuth 2.0 Multiple Response Type Encoding Practices](https://openid.net/specs/oauth-v2-multiple-response-types-1_0-final.html)\n     * ```js\n     * [\n     *   'code',\n     *   'id_token', 'id_token token',\n     *   'code id_token', 'code token', 'code id_token token',\n     *   'none',\n     * ]\n     * ```\n     */\n    responseTypes: ['code id_token', 'code', 'id_token', 'none'],\n\n    /*\n     * pkce\n     *\n     * title: [`RFC7636`](https://www.rfc-editor.org/rfc/rfc7636.html) - Proof Key for Code Exchange (`PKCE`)\n     *\n     * description: `PKCE` configuration such as policy check on the required use of `PKCE`.\n     *\n     * @nodefault\n     */\n    pkce: {\n      /*\n       * pkce.required\n       *\n       * description: Configures if and when the authorization server requires clients to use `PKCE`. This helper is called\n       * whenever an authorization request lacks the code_challenge parameter.\n       * Return:\n       *   - `false` to allow the request to continue without `PKCE`\n       *   - `true` to abort the request\n       */\n      required: pkceRequired,\n    },\n\n    /*\n     * routes\n     *\n     * description: Defines the URL path mappings for authorization server endpoints.\n     *   All route values are relative and shall begin with a forward slash (\"/\") character.\n     */\n    routes: {\n      authorization: '/auth',\n      backchannel_authentication: '/backchannel',\n      code_verification: '/device',\n      challenge: '/challenge',\n      device_authorization: '/device/auth',\n      end_session: '/session/end',\n      introspection: '/token/introspection',\n      jwks: '/jwks',\n      pushed_authorization_request: '/request',\n      registration: '/reg',\n      revocation: '/token/revocation',\n      token: '/token',\n      userinfo: '/me',\n    },\n\n    /*\n     * scopes\n     *\n     * description: Specifies additional OAuth 2.0 scope values that this authorization server\n     *   shall support and advertise in its discovery document. Resource Server-specific\n     *   scopes shall be configured via the `features.resourceIndicators` mechanism.\n     */\n    scopes: ['openid', 'offline_access'],\n\n    /*\n     * subjectTypes\n     *\n     * description: Specifies the array of Subject Identifier types that this authorization server\n     *   shall support for end-user identification purposes. When only `pairwise` is supported,\n     *   it shall become the default `subject_type` client metadata value. Supported identifier\n     *   types shall include:\n     *   - `public` - provides the same subject identifier value to all clients\n     *   - `pairwise` - provides a unique subject identifier value per client to enhance privacy\n     */\n    subjectTypes: ['public'],\n\n    /*\n     * pairwiseIdentifier\n     *\n     * description: Specifies a helper function that shall be invoked to generate pairwise subject\n     *   identifier values for ID Tokens and UserInfo responses, as specified in OpenID Connect\n     *   Core 1.0. This function enables privacy-preserving subject identifier generation that\n     *   provides unique identifiers per client while maintaining consistent identification for\n     *   the same end-user across requests to the same client.\n     *\n     * recommendation: Implementations should employ memoization or caching mechanisms when\n     *   this function may be invoked multiple times with identical arguments within a single request.\n     */\n    pairwiseIdentifier,\n\n    /*\n     * clientAuthMethods\n     *\n     * description: Specifies the client authentication methods that this authorization server\n     *   shall support for authenticating clients at the token endpoint and other authenticated\n     *   endpoints.\n     *\n     * example: Supported values list.\n     *\n     * ```js\n     * [\n     *   'none',\n     *   'client_secret_basic', 'client_secret_post',\n     *   'client_secret_jwt', 'private_key_jwt',\n     *   'tls_client_auth', 'self_signed_tls_client_auth', // these methods are only available when features.mTLS is configured\n     * ]\n     * ```\n     */\n    clientAuthMethods: [\n      'client_secret_basic',\n      'client_secret_jwt',\n      'client_secret_post',\n      'private_key_jwt',\n      'none',\n    ],\n\n    /*\n     * ttl\n     *\n     * description: Specifies the Time-To-Live (TTL) values that shall be applied to various\n     *   artifacts within the authorization server. TTL values may be specified\n     *   as either a numeric value (in seconds) or a synchronous function that returns a\n     *   numeric value based on the current request context and authorization server policy.\n     *\n     * recommendation: Token TTL values should be set to the minimum duration necessary for\n     *   the intended use case to minimize security exposure.\n     *\n     * recommendation: For refresh tokens requiring extended lifetimes, consider utilizing the\n     *   `rotateRefreshToken` configuration option, which extends effective token lifetime through\n     *   rotation rather than extended initial TTL values.\n     *\n     * example: To resolve a ttl on runtime for each new token.\n     *\n     * Configure `ttl` for a given token type with a function like so, this must return a value, not a\n     * Promise.\n     *\n     * ```js\n     * {\n     *   ttl: {\n     *     AccessToken(ctx, token, client) {\n     *       // return a Number (in seconds) for the given token (first argument), the associated client is\n     *       // passed as a second argument\n     *       // Tip: if the values are entirely client based memoize the results\n     *       return resolveTTLfor(token, client);\n     *     },\n     *   },\n     * }\n     * ```\n     */\n    ttl: {\n      AccessToken: AccessTokenTTL,\n      AuthorizationCode: AuthorizationCodeTTL,\n      BackchannelAuthenticationRequest: BackchannelAuthenticationRequestTTL,\n      ClientCredentials: ClientCredentialsTTL,\n      DeviceCode: DeviceCodeTTL,\n      Grant: GrantTTL,\n      IdToken: IdTokenTTL,\n      Interaction: InteractionTTL,\n      RefreshToken: RefreshTokenTTL,\n      Session: SessionTTL,\n    },\n\n    /*\n     * extraClientMetadata\n     *\n     * description: Specifies the configuration for custom client metadata properties that shall\n     *   be supported by the authorization server for client registration and metadata validation purposes.\n     *   This configuration enables extension of standard OAuth 2.0 and OpenID Connect client\n     *   metadata with deployment-specific properties. Existing standards-defined properties are snakeCased on\n     *   a Client instance (e.g. `client.redirectUris`), while new properties defined by this\n     *   configuration shall be available with their names verbatim (e.g.\n     *   `client['urn:example:client:my-property']`).\n     * @nodefault\n     */\n    extraClientMetadata: {\n      /*\n       * extraClientMetadata.properties\n       *\n       * description: Specifies an array of property names that clients shall be allowed to have\n       *   defined within their client metadata during registration and management operations.\n       *   Each property name listed here extends the standard client metadata schema according\n       *   to authorization server policy.\n       */\n      properties: [],\n      /*\n       * extraClientMetadata.validator\n       *\n       * description: Specifies a validator function that shall be executed in order once for every\n       *   property defined in `extraClientMetadata.properties`, regardless of its value or presence\n       *   in the client metadata passed during registration or update operations. The function MUST\n       *   be synchronous; async validators or functions returning Promise shall be rejected during\n       *   runtime. To modify the current client metadata values (for the current key or any other)\n       *   simply modify the passed in `metadata` argument within the validator function.\n       */\n      validator: extraClientMetadataValidator,\n    },\n\n    /*\n     * renderError\n     *\n     * description: Specifies a function that shall be invoked to present error responses to the\n     *   User-Agent during authorization server operations. This function enables customization\n     *   of error presentation according to deployment-specific user interface requirements.\n     */\n    renderError,\n\n    /*\n     * revokeGrantPolicy\n     *\n     * description: Specifies a helper function that shall be invoked to determine whether an\n     *   underlying Grant entry shall be revoked in addition to the specific token or code being\n     *   processed. This function enables enforcement of grant revocation policies according to\n     *   authorization server security requirements. The function is invoked in the following\n     *   contexts:\n     * - RP-Initiated Logout\n     * - Opaque Access Token Revocation\n     * - Refresh Token Revocation\n     * - Authorization Code re-use\n     * - Device Code re-use\n     * - Backchannel Authentication Request re-use\n     * - Rotated Refresh Token re-use\n     */\n    revokeGrantPolicy,\n\n    /*\n     * sectorIdentifierUriValidate\n     *\n     * description: Specifies a function that shall be invoked to determine whether the\n     *   sectorIdentifierUri of a client being loaded, registered, or updated should be fetched\n     *   and its contents validated against the client metadata.\n     */\n    sectorIdentifierUriValidate,\n\n    /*\n     * interactions\n     *\n     * description: Specifies the configuration for interaction policy and end-user redirection\n     *   that shall be applied to determine that user interaction\n     *   is required during the authorization process. This configuration enables customization\n     *   of authentication and consent flows according to deployment-specific requirements.\n     *\n     * @nodefault\n     */\n    interactions: {\n      /*\n       * interactions.policy\n       *\n       * description: Specifies the structure of Prompts and their associated checks that shall\n       *   be applied during authorization request processing. The policy is formed by Prompt\n       *   and Check class instances that define the conditions under which user interaction\n       *   is required. The default policy implementation provides a fresh instance that can\n       *   be customized, and the relevant classes are exported for configuration purposes.\n       *\n       * example: default interaction policy description.\n       *\n       * The default interaction policy consists of two available prompts, login and consent\n       *\n       * <br/><br/>\n       *\n       * - `login` does the following checks:\n       *   - no_session - checks that there's an established session, an authenticated end-user\n       *   - max_age - processes the max_age parameter (when the session's auth_time is too old it requires login)\n       *   - id_token_hint - processes the id_token_hint parameter (when the end-user sub differs it requires login)\n       *   - claims_id_token_sub_value - processes the claims parameter `sub` (when the `claims` parameter requested sub differs it requires login)\n       *   - essential_acrs - processes the claims parameter `acr` (when the current acr is not amongst the `claims` parameter essential `acr.values` it requires login)\n       *   - essential_acr - processes the claims parameter `acr` (when the current acr is not equal to the `claims` parameter essential `acr.value` it requires login)\n       *\n       * <br/><br/>\n       *\n       * - `consent` does the following checks:\n       *   - native_client_prompt - native clients always require re-consent\n       *   - op_scopes_missing - requires consent when the requested scope includes scope values previously not requested\n       *   - op_claims_missing - requires consent when the requested claims parameter includes claims previously not requested\n       *   - rs_scopes_missing - requires consent when the requested resource indicated scope values include scopes previously not requested\n       *\n       * <br/><br/>\n       *\n       * These checks are the best practice for various privacy and security reasons.\n       *\n       * example: disabling default consent checks.\n       *\n       * You may be required to skip (silently accept) some of the consent checks, while it is\n       * discouraged there are valid reasons to do that, for instance in some first-party scenarios or\n       * going with pre-existing, previously granted, consents. To simply silenty \"accept\"\n       * first-party/resource indicated scopes or pre-agreed-upon claims use the `loadExistingGrant`\n       * configuration helper function, in there you may just instantiate (and save!) a grant for the\n       * current clientId and accountId values.\n       *\n       * example: modifying the default interaction policy.\n       *\n       * ```js\n       * import { interactionPolicy } from 'oidc-provider';\n       * const { Prompt, Check, base } = interactionPolicy;\n       *\n       * const basePolicy = base()\n       *\n       * // basePolicy.get(name) => returns a Prompt instance by its name\n       * // basePolicy.remove(name) => removes a Prompt instance by its name\n       * // basePolicy.add(prompt, index) => adds a Prompt instance to a specific index, default is add the prompt as the last one\n       *\n       * // prompt.checks.get(reason) => returns a Check instance by its reason\n       * // prompt.checks.remove(reason) => removes a Check instance by its reason\n       * // prompt.checks.add(check, index) => adds a Check instance to a specific index, default is add the check as the last one\n       * ```\n       */\n      policy: defaultPolicy(),\n\n      /*\n       * interactions.url\n       *\n       * description: Specifies a function that shall be invoked to determine the destination URL\n       *   for redirecting the User-Agent when user interaction is required during authorization\n       *   processing. This function enables customization of the interaction endpoint location\n       *   and may return both absolute and relative URLs according to deployment requirements.\n       */\n      url: interactionsUrl,\n    },\n\n    /*\n     * findAccount\n     *\n     * description: Specifies a function that shall be invoked to load an account and retrieve\n     *   its available claims during authorization server operations. This function enables\n     *   the authorization server to resolve end-user account information based on the provided\n     *   account identifier. The function MUST return a Promise that resolves to an account\n     *   object containing an `accountId` property and a `claims()` method that returns an\n     *   object with claims corresponding to the claims supported by the issuer. The `claims()`\n     *   method may also return a Promise that shall be resolved or rejected according to\n     *   account availability and authorization server policy.\n     */\n    findAccount,\n\n    /*\n     * rotateRefreshToken\n     *\n     * description: Specifies the refresh token rotation policy that shall be applied by the\n     *   authorization server when refresh tokens are used.\n     *   This configuration determines whether and under what conditions refresh tokens shall\n     *   be rotated. Supported values\n     *   include:\n     *   - `false` - refresh tokens shall not be rotated and their initial expiration date is final\n     *   - `true` - refresh tokens shall be rotated when used, with the current token marked as\n     *     consumed and a new one issued with new TTL; when a consumed refresh token is\n     *     encountered an error shall be returned and the whole token chain (grant) is revoked\n     *   - `function` - a function returning true/false that shall be invoked to determine\n     *     whether rotation should occur based on request context and authorization server policy\n     *\n     * <br/><br/>\n     *\n     * The default configuration value implements a sensible refresh token rotation policy that:\n     *   - only allows refresh tokens to be rotated (have their TTL prolonged by issuing a new one) for one year\n     *   - otherwise always rotates public client tokens that are not sender-constrained\n     *   - otherwise only rotates tokens if they're being used close to their expiration (>= 70% TTL passed)\n     */\n    rotateRefreshToken,\n\n    /*\n     * enabledJWA\n     *\n     * description: Specifies the JSON Web Algorithm (JWA) values supported by this authorization\n     *   server for various cryptographic operations, as defined in RFC 7518 and related specifications.\n     * @nodefault\n     */\n    enabledJWA: {\n      /*\n       * enabledJWA.clientAuthSigningAlgValues\n       *\n       * description: JWS \"alg\" Algorithm values the authorization server supports for signed JWT Client Authentication\n       * (`private_key_jwt` and `client_secret_jwt`)\n       *\n       * example: Supported values list.\n       *\n       * ```js\n       * [\n       *   'RS256', 'RS384', 'RS512',\n       *   'PS256', 'PS384', 'PS512',\n       *   'ES256', 'ES384', 'ES512',\n       *   'Ed25519', 'EdDSA',\n       *   'ML-DSA-44', 'ML-DSA-65', 'ML-DSA-87', // available in Node.js >= 24.7.0\n       *   'HS256', 'HS384', 'HS512',\n       * ]\n       * ```\n       */\n      clientAuthSigningAlgValues: [\n        'HS256',\n        'RS256',\n        'PS256',\n        'ES256',\n        'Ed25519',\n        'EdDSA',\n      ],\n\n      /*\n       * enabledJWA.idTokenSigningAlgValues\n       *\n       * description: JWS \"alg\" Algorithm values the authorization server supports to sign ID Tokens with.\n       *\n       * example: Supported values list.\n       *\n       * ```js\n       * [\n       *   'RS256', 'RS384', 'RS512',\n       *   'PS256', 'PS384', 'PS512',\n       *   'ES256', 'ES384', 'ES512',\n       *   'Ed25519', 'EdDSA',\n       *   'ML-DSA-44', 'ML-DSA-65', 'ML-DSA-87', // available in Node.js >= 24.7.0\n       *   'HS256', 'HS384', 'HS512',\n       * ]\n       * ```\n       */\n      idTokenSigningAlgValues: ['RS256', 'PS256', 'ES256', 'Ed25519', 'EdDSA'],\n\n      /*\n       * enabledJWA.requestObjectSigningAlgValues\n       *\n       * description: JWS \"alg\" Algorithm values the authorization server supports to receive signed Request Objects (`JAR`) with\n       *\n       * example: Supported values list.\n       *\n       * ```js\n       * [\n       *   'RS256', 'RS384', 'RS512',\n       *   'PS256', 'PS384', 'PS512',\n       *   'ES256', 'ES384', 'ES512',\n       *   'Ed25519', 'EdDSA',\n       *   'ML-DSA-44', 'ML-DSA-65', 'ML-DSA-87', // available in Node.js >= 24.7.0\n       *   'HS256', 'HS384', 'HS512',\n       * ]\n       * ```\n       */\n      requestObjectSigningAlgValues: [\n        'HS256',\n        'RS256',\n        'PS256',\n        'ES256',\n        'Ed25519',\n        'EdDSA',\n      ],\n\n      /*\n       * enabledJWA.userinfoSigningAlgValues\n       *\n       * description: JWS \"alg\" Algorithm values the authorization server supports to sign UserInfo responses with\n       *\n       * example: Supported values list.\n       *\n       * ```js\n       * [\n       *   'RS256', 'RS384', 'RS512',\n       *   'PS256', 'PS384', 'PS512',\n       *   'ES256', 'ES384', 'ES512',\n       *   'Ed25519', 'EdDSA',\n       *   'ML-DSA-44', 'ML-DSA-65', 'ML-DSA-87', // available in Node.js >= 24.7.0\n       *   'HS256', 'HS384', 'HS512',\n       * ]\n       * ```\n       */\n      userinfoSigningAlgValues: ['RS256', 'PS256', 'ES256', 'Ed25519', 'EdDSA'],\n\n      /*\n       * enabledJWA.introspectionSigningAlgValues\n       *\n       * description: JWS \"alg\" Algorithm values the authorization server supports to sign JWT Introspection responses with\n       *\n       * example: Supported values list.\n       *\n       * ```js\n       * [\n       *   'RS256', 'RS384', 'RS512',\n       *   'PS256', 'PS384', 'PS512',\n       *   'ES256', 'ES384', 'ES512',\n       *   'Ed25519', 'EdDSA',\n       *   'ML-DSA-44', 'ML-DSA-65', 'ML-DSA-87', // available in Node.js >= 24.7.0\n       *   'HS256', 'HS384', 'HS512',\n       * ]\n       * ```\n       */\n      introspectionSigningAlgValues: [\n        'RS256',\n        'PS256',\n        'ES256',\n        'Ed25519',\n        'EdDSA',\n      ],\n\n      /*\n       * enabledJWA.authorizationSigningAlgValues\n       *\n       * description: JWS \"alg\" Algorithm values the authorization server supports to sign JWT Authorization Responses (`JARM`) with\n       *\n       * example: Supported values list.\n       *\n       * ```js\n       * [\n       *   'RS256', 'RS384', 'RS512',\n       *   'PS256', 'PS384', 'PS512',\n       *   'ES256', 'ES384', 'ES512',\n       *   'Ed25519', 'EdDSA',\n       *   'ML-DSA-44', 'ML-DSA-65', 'ML-DSA-87', // available in Node.js >= 24.7.0\n       *   'HS256', 'HS384', 'HS512',\n       * ]\n       * ```\n       */\n      authorizationSigningAlgValues: [\n        'RS256',\n        'PS256',\n        'ES256',\n        'Ed25519',\n        'EdDSA',\n      ],\n\n      /*\n       * enabledJWA.idTokenEncryptionAlgValues\n       *\n       * description: JWE \"alg\" Algorithm values the authorization server supports for ID Token encryption\n       *\n       * example: Supported values list.\n       *\n       * ```js\n       * [\n       *   // asymmetric RSAES based\n       *   'RSA-OAEP', 'RSA-OAEP-256', 'RSA-OAEP-384', 'RSA-OAEP-512',\n       *   // asymmetric ECDH-ES based\n       *   'ECDH-ES', 'ECDH-ES+A128KW', 'ECDH-ES+A192KW', 'ECDH-ES+A256KW',\n       *   // symmetric AES key wrapping\n       *   'A128KW', 'A192KW', 'A256KW', 'A128GCMKW', 'A192GCMKW', 'A256GCMKW',\n       *   // direct encryption\n       *   'dir',\n       * ]\n       * ```\n       */\n      idTokenEncryptionAlgValues: [\n        'A128KW',\n        'A256KW',\n        'ECDH-ES',\n        'RSA-OAEP',\n        'RSA-OAEP-256',\n        'dir',\n      ],\n\n      /*\n       * enabledJWA.requestObjectEncryptionAlgValues\n       *\n       * description: JWE \"alg\" Algorithm values the authorization server supports to receive encrypted Request Objects (`JAR`) with\n       *\n       * example: Supported values list.\n       *\n       * ```js\n       * [\n       *   // asymmetric RSAES based\n       *   'RSA-OAEP', 'RSA-OAEP-256', 'RSA-OAEP-384', 'RSA-OAEP-512',\n       *   // asymmetric ECDH-ES based\n       *   'ECDH-ES', 'ECDH-ES+A128KW', 'ECDH-ES+A192KW', 'ECDH-ES+A256KW',\n       *   // symmetric AES key wrapping\n       *   'A128KW', 'A192KW', 'A256KW', 'A128GCMKW', 'A192GCMKW', 'A256GCMKW',\n       *   // direct encryption\n       *   'dir',\n       * ]\n       * ```\n       */\n      requestObjectEncryptionAlgValues: [\n        'A128KW',\n        'A256KW',\n        'ECDH-ES',\n        'RSA-OAEP',\n        'RSA-OAEP-256',\n        'dir',\n      ],\n\n      /*\n       * enabledJWA.userinfoEncryptionAlgValues\n       *\n       * description: JWE \"alg\" Algorithm values the authorization server supports for UserInfo Response encryption\n       *\n       * example: Supported values list.\n       *\n       * ```js\n       * [\n       *   // asymmetric RSAES based\n       *   'RSA-OAEP', 'RSA-OAEP-256', 'RSA-OAEP-384', 'RSA-OAEP-512',\n       *   // asymmetric ECDH-ES based\n       *   'ECDH-ES', 'ECDH-ES+A128KW', 'ECDH-ES+A192KW', 'ECDH-ES+A256KW',\n       *   // symmetric AES key wrapping\n       *   'A128KW', 'A192KW', 'A256KW', 'A128GCMKW', 'A192GCMKW', 'A256GCMKW',\n       *   // direct encryption\n       *   'dir',\n       * ]\n       * ```\n       */\n      userinfoEncryptionAlgValues: [\n        'A128KW',\n        'A256KW',\n        'ECDH-ES',\n        'RSA-OAEP',\n        'RSA-OAEP-256',\n        'dir',\n      ],\n\n      /*\n       * enabledJWA.introspectionEncryptionAlgValues\n       *\n       * description: JWE \"alg\" Algorithm values the authorization server supports for JWT Introspection response\n       * encryption\n       *\n       * example: Supported values list.\n       *\n       * ```js\n       * [\n       *   // asymmetric RSAES based\n       *   'RSA-OAEP', 'RSA-OAEP-256', 'RSA-OAEP-384', 'RSA-OAEP-512',\n       *   // asymmetric ECDH-ES based\n       *   'ECDH-ES', 'ECDH-ES+A128KW', 'ECDH-ES+A192KW', 'ECDH-ES+A256KW',\n       *   // symmetric AES key wrapping\n       *   'A128KW', 'A192KW', 'A256KW', 'A128GCMKW', 'A192GCMKW', 'A256GCMKW',\n       *   // direct encryption\n       *   'dir',\n       * ]\n       * ```\n       */\n      introspectionEncryptionAlgValues: [\n        'A128KW',\n        'A256KW',\n        'ECDH-ES',\n        'RSA-OAEP',\n        'RSA-OAEP-256',\n        'dir',\n      ],\n\n      /*\n       * enabledJWA.authorizationEncryptionAlgValues\n       *\n       * description: JWE \"alg\" Algorithm values the authorization server supports for JWT Authorization response (`JARM`)\n       * encryption\n       *\n       * example: Supported values list.\n       *\n       * ```js\n       * [\n       *   // asymmetric RSAES based\n       *   'RSA-OAEP', 'RSA-OAEP-256', 'RSA-OAEP-384', 'RSA-OAEP-512',\n       *   // asymmetric ECDH-ES based\n       *   'ECDH-ES', 'ECDH-ES+A128KW', 'ECDH-ES+A192KW', 'ECDH-ES+A256KW',\n       *   // symmetric AES key wrapping\n       *   'A128KW', 'A192KW', 'A256KW', 'A128GCMKW', 'A192GCMKW', 'A256GCMKW',\n       *   // direct encryption\n       *   'dir',\n       * ]\n       * ```\n       */\n      authorizationEncryptionAlgValues: [\n        'A128KW',\n        'A256KW',\n        'ECDH-ES',\n        'RSA-OAEP',\n        'RSA-OAEP-256',\n        'dir',\n      ],\n\n      /*\n       * enabledJWA.idTokenEncryptionEncValues\n       *\n       * description: JWE \"enc\" Content Encryption Algorithm values the authorization server supports to encrypt ID Tokens with\n       *\n       * example: Supported values list.\n       *\n       * ```js\n       * [\n       *   'A128CBC-HS256', 'A128GCM', 'A192CBC-HS384', 'A192GCM', 'A256CBC-HS512', 'A256GCM',\n       * ]\n       * ```\n       */\n      idTokenEncryptionEncValues: [\n        'A128CBC-HS256',\n        'A128GCM',\n        'A256CBC-HS512',\n        'A256GCM',\n      ],\n\n      /*\n       * enabledJWA.requestObjectEncryptionEncValues\n       *\n       * description: JWE \"enc\" Content Encryption Algorithm values the authorization server supports to decrypt Request Objects (`JAR`) with\n       *\n       * example: Supported values list.\n       *\n       * ```js\n       * [\n       *   'A128CBC-HS256', 'A128GCM', 'A192CBC-HS384', 'A192GCM', 'A256CBC-HS512', 'A256GCM',\n       * ]\n       * ```\n       */\n      requestObjectEncryptionEncValues: [\n        'A128CBC-HS256',\n        'A128GCM',\n        'A256CBC-HS512',\n        'A256GCM',\n      ],\n\n      /*\n       * enabledJWA.userinfoEncryptionEncValues\n       *\n       * description: JWE \"enc\" Content Encryption Algorithm values the authorization server supports to encrypt UserInfo responses with\n       *\n       * example: Supported values list.\n       *\n       * ```js\n       * [\n       *   'A128CBC-HS256', 'A128GCM', 'A192CBC-HS384', 'A192GCM', 'A256CBC-HS512', 'A256GCM',\n       * ]\n       * ```\n       */\n      userinfoEncryptionEncValues: [\n        'A128CBC-HS256',\n        'A128GCM',\n        'A256CBC-HS512',\n        'A256GCM',\n      ],\n\n      /*\n       * enabledJWA.introspectionEncryptionEncValues\n       *\n       * description: JWE \"enc\" Content Encryption Algorithm values the authorization server supports to encrypt JWT Introspection responses with\n       *\n       * example: Supported values list.\n       *\n       * ```js\n       * [\n       *   'A128CBC-HS256', 'A128GCM', 'A192CBC-HS384', 'A192GCM', 'A256CBC-HS512', 'A256GCM',\n       * ]\n       * ```\n       */\n      introspectionEncryptionEncValues: [\n        'A128CBC-HS256',\n        'A128GCM',\n        'A256CBC-HS512',\n        'A256GCM',\n      ],\n\n      /*\n       * enabledJWA.authorizationEncryptionEncValues\n       *\n       * description: JWE \"enc\" Content Encryption Algorithm values the authorization server supports to encrypt JWT Authorization Responses (`JARM`) with\n       *\n       * example: Supported values list.\n       *\n       * ```js\n       * [\n       *   'A128CBC-HS256', 'A128GCM', 'A192CBC-HS384', 'A192GCM', 'A256CBC-HS512', 'A256GCM',\n       * ]\n       * ```\n       */\n      authorizationEncryptionEncValues: [\n        'A128CBC-HS256',\n        'A128GCM',\n        'A256CBC-HS512',\n        'A256GCM',\n      ],\n\n      /*\n       * enabledJWA.dPoPSigningAlgValues\n       *\n       * description: JWS \"alg\" Algorithm values the authorization server supports to verify signed DPoP proof JWTs with\n       *\n       * example: Supported values list.\n       *\n       * ```js\n       * [\n       *   'RS256', 'RS384', 'RS512',\n       *   'PS256', 'PS384', 'PS512',\n       *   'ES256', 'ES384', 'ES512',\n       *   'Ed25519', 'EdDSA',\n       *   'ML-DSA-44', 'ML-DSA-65', 'ML-DSA-87', // available in Node.js >= 24.7.0\n       * ]\n       * ```\n       */\n      dPoPSigningAlgValues: ['ES256', 'Ed25519', 'EdDSA'],\n\n      /*\n       * enabledJWA.attestSigningAlgValues\n       *\n       * description: JWS \"alg\" Algorithm values the authorization server supports to verify signed Client Attestation and Client Attestation PoP JWTs with\n       *\n       * example: Supported values list.\n       *\n       * ```js\n       * [\n       *   'RS256', 'RS384', 'RS512',\n       *   'PS256', 'PS384', 'PS512',\n       *   'ES256', 'ES384', 'ES512',\n       *   'Ed25519', 'EdDSA',\n       *   'ML-DSA-44', 'ML-DSA-65', 'ML-DSA-87', // available in Node.js >= 24.7.0\n       * ]\n       * ```\n       */\n      attestSigningAlgValues: ['ES256', 'Ed25519', 'EdDSA'],\n    },\n\n    /*\n     * assertJwtClientAuthClaimsAndHeader\n     *\n     * description: Specifies a helper function that shall be invoked to perform additional\n     *   validation of JWT Client Authentication assertion Claims Set and Header beyond the\n     *   requirements mandated by the specification. This function enables enforcement of\n     *   deployment-specific security policies and extended validation logic for `private_key_jwt`\n     *   and `client_secret_jwt` client authentication methods according to authorization\n     *   server requirements.\n     */\n    assertJwtClientAuthClaimsAndHeader,\n\n    /*\n     * fetch\n     *\n     * description: Specifies a function that shall be invoked whenever the authorization server\n     *   needs to make calls to external HTTPS resources. The interface and expected return\n     *   value shall conform to the [Fetch API specification](https://fetch.spec.whatwg.org/)\n     *   [`fetch()`](https://developer.mozilla.org/en-US/docs/Web/API/Window/fetch) standard.\n     *   The default implementation uses a timeout of 2500ms and does not send a user-agent header.\n     *\n     * example: To change the request's timeout.\n     *\n     * To change all request's timeout configure the fetch as a function like so:\n     *\n     * ```js\n     *  {\n     *    fetch(url, options) {\n     *      options.signal = AbortSignal.timeout(5000);\n     *      return globalThis.fetch(url, options);\n     *    }\n     *  }\n     * ```\n     */\n    fetch,\n\n    /*\n     * enableHttpPostMethods\n     *\n     * description: Specifies whether HTTP POST method support shall be enabled at the\n     *   Authorization Endpoint and the Logout Endpoint (if enabled). When enabled, the\n     *   authorization server shall accept POST requests at these endpoints in addition\n     *   to the standard GET requests. This configuration may only be used when the\n     *   `cookies.long.sameSite` configuration value is `none`.\n     */\n    enableHttpPostMethods: false,\n  };\n\n  return defaults;\n}\n\nexport default makeDefaults;\nexport const defaults = makeDefaults();\n", "import { webcrypto as crypto } from 'node:crypto'\nimport { urlAlphabet as scopedUrlAlphabet } from './url-alphabet/index.js'\nexport { urlAlphabet } from './url-alphabet/index.js'\nconst POOL_SIZE_MULTIPLIER = 128\nlet pool, poolOffset\nfunction fillPool(bytes) {\n  if (!pool || pool.length < bytes) {\n    pool = Buffer.allocUnsafe(bytes * POOL_SIZE_MULTIPLIER)\n    crypto.getRandomValues(pool)\n    poolOffset = 0\n  } else if (poolOffset + bytes > pool.length) {\n    crypto.getRandomValues(pool)\n    poolOffset = 0\n  }\n  poolOffset += bytes\n}\nexport function random(bytes) {\n  fillPool((bytes |= 0))\n  return pool.subarray(poolOffset - bytes, poolOffset)\n}\nexport function customRandom(alphabet, defaultSize, getRandom) {\n  let mask = (2 << (31 - Math.clz32((alphabet.length - 1) | 1))) - 1\n  let step = Math.ceil((1.6 * mask * defaultSize) / alphabet.length)\n  return (size = defaultSize) => {\n    if (!size) return ''\n    let id = ''\n    while (true) {\n      let bytes = getRandom(step)\n      let i = step\n      while (i--) {\n        id += alphabet[bytes[i] & mask] || ''\n        if (id.length >= size) return id\n      }\n    }\n  }\n}\nexport function customAlphabet(alphabet, size = 21) {\n  return customRandom(alphabet, size, random)\n}\nexport function nanoid(size = 21) {\n  fillPool((size |= 0))\n  let id = ''\n  for (let i = poolOffset - size; i < poolOffset; i++) {\n    id += scopedUrlAlphabet[pool[i] & 63]\n  }\n  return id\n}\n", "export const urlAlphabet =\n  'useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict'\n", "import { customAlphabet, urlAlphabet } from 'nanoid';\n\nconst nanoid = customAlphabet(urlAlphabet, 43);\n\nexport default nanoid;\n", "/* eslint-disable no-param-reassign */\n\nclass Check {\n  constructor(reason, description, error, check = () => {}, details = () => {}) {\n    if (typeof error === 'function') {\n      details = check;\n      check = error;\n      error = undefined;\n    }\n    this.reason = reason;\n    this.description = description;\n    this.error = error;\n    this.details = details;\n    this.check = check;\n  }\n}\n\nCheck.REQUEST_PROMPT = true;\nCheck.NO_NEED_TO_PROMPT = false;\n\nexport default Check;\n", "/* eslint-disable no-param-reassign */\n\nimport Check from './check.js';\n\nclass Prompt {\n  // eslint-disable-next-line default-param-last\n  constructor({ name, requestable = false } = {}, details, ...checks) {\n    if (typeof requestable !== 'boolean') {\n      throw new Error('requestable argument must be provided as Boolean');\n    }\n\n    if (details instanceof Check) {\n      checks.unshift(details);\n      details = () => {};\n    }\n\n    if (typeof details === 'undefined') {\n      details = () => {};\n    }\n\n    let error;\n    switch (name) {\n      case 'none':\n        throw new Error('prompt none is special, cannot be registered like this');\n      case 'login':\n      case 'consent':\n        error = `${name}_required`;\n        break;\n      case 'select_account':\n        error = 'account_selection_required';\n        break;\n      default:\n        error = 'interaction_required';\n    }\n\n    checks.forEach((check) => {\n      if (check.error === undefined) {\n        check.error = error;\n      }\n    });\n\n    if (requestable) {\n      checks.unshift(new Check(`${name}_prompt`, `${name} prompt was not resolved`, error, (ctx) => {\n        const { oidc } = ctx;\n        if (oidc.prompts.has(name) && oidc.promptPending(name)) {\n          return true;\n        }\n\n        return false;\n      }));\n    }\n\n    this.name = name;\n    this.requestable = requestable;\n    this.details = details;\n    this.checks = checks;\n\n    Object.defineProperties(this.checks, {\n      get: {\n        value(reason) {\n          if (typeof reason !== 'string') {\n            throw new TypeError('reason must be a string');\n          }\n          return this.find((p) => p.reason === reason);\n        },\n      },\n      remove: {\n        value(reason) {\n          if (typeof reason !== 'string') {\n            throw new TypeError('reason must be a string');\n          }\n          const i = this.findIndex((p) => p.reason === reason);\n          this.splice(i, 1);\n        },\n      },\n      clear: {\n        value() {\n          while (this.length) {\n            this.splice(0, 1);\n          }\n        },\n      },\n      add: {\n        value(check, i = this.length) {\n          if (!(check instanceof Check)) {\n            throw new TypeError('argument must be an instance of Check');\n          }\n          this.splice(i, 0, check);\n        },\n      },\n    });\n  }\n}\n\nexport default Prompt;\n", "/* eslint-disable camelcase */\n/* eslint-disable max-classes-per-file */\n\nimport upperFirst from './_/upper_first.js';\nimport camelCase from './_/camel_case.js';\n\nexport class OIDCProviderError extends Error {\n  allow_redirect = true;\n\n  constructor(status, message) {\n    super(message);\n    this.name = this.constructor.name;\n    this.message = message;\n    this.error = message;\n    this.status = status;\n    this.statusCode = status;\n    this.expose = status < 500;\n  }\n}\n\nexport class CustomOIDCProviderError extends OIDCProviderError {\n  constructor(message, description) {\n    super(400, message);\n    Error.captureStackTrace(this, this.constructor);\n    Object.assign(this, { error_description: description });\n  }\n}\n\nexport class InvalidToken extends OIDCProviderError {\n  error_description = 'invalid token provided';\n\n  constructor(detail) {\n    super(401, 'invalid_token');\n    Error.captureStackTrace(this, this.constructor);\n    Object.assign(this, { error_detail: detail });\n  }\n}\n\nexport class InvalidClientMetadata extends OIDCProviderError {\n  constructor(description, detail) {\n    const message = description.startsWith('redirect_uris')\n      ? 'invalid_redirect_uri' : 'invalid_client_metadata';\n    super(400, message);\n    Error.captureStackTrace(this, this.constructor);\n    Object.assign(this, { error_description: description, error_detail: detail });\n  }\n}\n\nexport class InvalidScope extends OIDCProviderError {\n  constructor(description, scope, detail) {\n    super(400, 'invalid_scope');\n    Error.captureStackTrace(this, this.constructor);\n    Object.assign(this, { scope, error_description: description, error_detail: detail });\n  }\n}\n\nexport class InsufficientScope extends OIDCProviderError {\n  constructor(description, scope, detail) {\n    super(403, 'insufficient_scope');\n    Error.captureStackTrace(this, this.constructor);\n    Object.assign(this, { scope, error_description: description, error_detail: detail });\n  }\n}\n\nexport class InvalidRequest extends OIDCProviderError {\n  constructor(description, code, detail) {\n    super(code ?? 400, 'invalid_request');\n    Error.captureStackTrace(this, this.constructor);\n    Object.assign(this, { error_description: description || 'request is invalid', error_detail: detail, expose: true });\n  }\n}\n\nexport class SessionNotFound extends InvalidRequest {}\n\nexport class InvalidClientAuth extends OIDCProviderError {\n  error_description = 'client authentication failed';\n\n  constructor(detail) {\n    super(401, 'invalid_client');\n    Error.captureStackTrace(this, this.constructor);\n    Object.assign(this, { error_detail: detail });\n  }\n}\n\nexport class InvalidGrant extends OIDCProviderError {\n  error_description = 'grant request is invalid';\n\n  constructor(detail) {\n    super(400, 'invalid_grant');\n    Error.captureStackTrace(this, this.constructor);\n    Object.assign(this, { error_detail: detail });\n  }\n}\n\nexport class InvalidRedirectUri extends OIDCProviderError {\n  error_description = 'redirect_uri did not match any of the client\\'s registered redirect_uris';\n\n  allow_redirect = false;\n\n  constructor() {\n    super(400, 'invalid_redirect_uri');\n    Error.captureStackTrace(this, this.constructor);\n  }\n}\n\nfunction E(message, errorDescription) {\n  const klassName = upperFirst(camelCase(message));\n  const klass = class extends OIDCProviderError {\n    error_description = errorDescription;\n\n    constructor(description, detail) {\n      super(400, message);\n      Error.captureStackTrace(this, this.constructor);\n\n      if (description) {\n        this.error_description = description;\n      }\n\n      if (detail) {\n        this.error_detail = detail;\n      }\n    }\n  };\n  Object.defineProperty(klass, 'name', { value: klassName });\n  return klass;\n}\n\nexport const AccessDenied = E('access_denied');\nexport const AuthorizationPending = E('authorization_pending', 'authorization request is still pending as the end-user hasn\\'t yet completed the user interaction steps');\nexport const ConsentRequired = E('consent_required');\nexport const ExpiredLoginHintToken = E('expired_login_hint_token');\nexport const ExpiredToken = E('expired_token');\nexport const InteractionRequired = E('interaction_required');\nexport const InvalidBindingMessage = E('invalid_binding_message');\nexport const InvalidAuthorizationDetails = E('invalid_authorization_details');\nexport const InvalidClient = E('invalid_client');\nexport const InvalidDpopProof = E('invalid_dpop_proof');\nexport const InvalidRequestObject = E('invalid_request_object');\nexport const InvalidRequestUri = E('invalid_request_uri');\nexport const InvalidSoftwareStatement = E('invalid_software_statement');\nexport const InvalidTarget = E('invalid_target', 'resource indicator is missing, or unknown');\nexport const InvalidUserCode = E('invalid_user_code');\nexport const LoginRequired = E('login_required');\nexport const MissingUserCode = E('missing_user_code');\nexport const RegistrationNotSupported = E('registration_not_supported');\nexport const RequestNotSupported = E('request_not_supported');\nexport const RequestUriNotSupported = E('request_uri_not_supported');\nexport const SlowDown = E('slow_down', 'you are polling too quickly and should back off at a reasonable rate');\nexport const TemporarilyUnavailable = E('temporarily_unavailable');\nexport const TransactionFailed = E('transaction_failed');\nexport const UnapprovedSoftwareStatement = E('unapproved_software_statement');\nexport const UnauthorizedClient = E('unauthorized_client');\nexport const UnknownUserId = E('unknown_user_id');\nexport const UnmetAuthenticationRequirements = E('unmet_authentication_requirements');\nexport const UnsupportedGrantType = E('unsupported_grant_type', 'unsupported grant_type requested');\nexport const UnsupportedResponseMode = E('unsupported_response_mode', 'unsupported response_mode requested');\nexport const UnsupportedResponseType = E('unsupported_response_type', 'unsupported response_type requested');\nexport const UseDpopNonce = E('use_dpop_nonce');\nexport const UnsupportedTokenType = E('unsupported_token_type');\nexport const UseAttestationChallenge = E('use_attestation_challenge');\nexport const InvalidClientAttestation = E('invalid_client_attestation');\n", "export default (str = '') => `${str.charAt(0).toUpperCase()}${str.slice(1)}`;\n", "export default (str = '') => str.replace(/(_\\w)/g, (x) => x.replace('_', '').toUpperCase());\n", "const map = new WeakMap();\n\nexport function get(ctx) {\n  return map.get(ctx);\n}\n\nexport function set(ctx, value) {\n  return map.set(ctx, value);\n}\n\nexport default get;\n", "/* eslint-disable camelcase */\n\nimport * as errors from '../../errors.js';\nimport instance from '../../weak_cache.js';\nimport Prompt from '../prompt.js';\nimport Check from '../check.js';\n\nexport default () => new Prompt(\n  { name: 'login', requestable: true },\n\n  (ctx) => {\n    const { oidc } = ctx;\n\n    return {\n      ...(oidc.params.max_age === undefined ? undefined : { max_age: oidc.params.max_age }),\n      ...(oidc.params.login_hint === undefined\n        ? undefined\n        : { login_hint: oidc.params.login_hint }),\n      ...(oidc.params.id_token_hint === undefined\n        ? undefined\n        : { id_token_hint: oidc.params.id_token_hint }),\n    };\n  },\n\n  new Check('no_session', 'End-User authentication is required', (ctx) => {\n    const { oidc } = ctx;\n    if (oidc.session.accountId) {\n      return Check.NO_NEED_TO_PROMPT;\n    }\n\n    return Check.REQUEST_PROMPT;\n  }),\n\n  new Check('max_age', 'End-User authentication could not be obtained', (ctx) => {\n    const { oidc } = ctx;\n    if (oidc.params.max_age === undefined) {\n      return Check.NO_NEED_TO_PROMPT;\n    }\n\n    if (!oidc.session.accountId) {\n      return Check.REQUEST_PROMPT;\n    }\n\n    if (oidc.session.past(oidc.params.max_age) && (!ctx.oidc.result || !ctx.oidc.result.login)) {\n      return Check.REQUEST_PROMPT;\n    }\n\n    return Check.NO_NEED_TO_PROMPT;\n  }),\n\n  new Check(\n    'id_token_hint',\n    'id_token_hint and authenticated subject do not match',\n    async (ctx) => {\n      const { oidc } = ctx;\n      if (oidc.entities.IdTokenHint === undefined) {\n        return Check.NO_NEED_TO_PROMPT;\n      }\n\n      const { payload } = oidc.entities.IdTokenHint;\n\n      let sub = oidc.session.accountId;\n      if (sub === undefined) {\n        return Check.REQUEST_PROMPT;\n      }\n\n      if (oidc.client.subjectType === 'pairwise') {\n        sub = await instance(oidc.provider).configuration.pairwiseIdentifier(\n          ctx,\n          sub,\n          oidc.client,\n        );\n      }\n\n      if (payload.sub !== sub) {\n        return Check.REQUEST_PROMPT;\n      }\n\n      return Check.NO_NEED_TO_PROMPT;\n    },\n  ),\n\n  new Check(\n    'claims_id_token_sub_value',\n    'requested subject could not be obtained',\n    async (ctx) => {\n      const { oidc } = ctx;\n\n      if (\n        !oidc.claims.id_token\n          || !oidc.claims.id_token.sub\n          || !('value' in oidc.claims.id_token.sub)\n      ) {\n        return Check.NO_NEED_TO_PROMPT;\n      }\n\n      let sub = oidc.session.accountId;\n      if (sub === undefined) {\n        return Check.REQUEST_PROMPT;\n      }\n\n      if (oidc.client.subjectType === 'pairwise') {\n        sub = await instance(oidc.provider).configuration.pairwiseIdentifier(\n          ctx,\n          sub,\n          oidc.client,\n        );\n      }\n\n      if (oidc.claims.id_token.sub.value !== sub) {\n        return Check.REQUEST_PROMPT;\n      }\n\n      return Check.NO_NEED_TO_PROMPT;\n    },\n    ({ oidc }) => ({ sub: oidc.claims.id_token.sub }),\n  ),\n\n  new Check(\n    'essential_acrs',\n    'none of the requested ACRs could not be obtained',\n    (ctx) => {\n      const { oidc } = ctx;\n      const request = oidc.claims?.id_token?.acr ?? {};\n\n      if (!request?.essential || !request?.values) {\n        return Check.NO_NEED_TO_PROMPT;\n      }\n\n      if (!Array.isArray(oidc.claims.id_token.acr.values)) {\n        throw new errors.InvalidRequest('invalid claims.id_token.acr.values type');\n      }\n\n      if (request.values.includes(oidc.acr)) {\n        return Check.NO_NEED_TO_PROMPT;\n      }\n\n      return Check.REQUEST_PROMPT;\n    },\n    ({ oidc }) => ({ acr: oidc.claims.id_token.acr }),\n  ),\n\n  new Check(\n    'essential_acr',\n    'requested ACR could not be obtained',\n    (ctx) => {\n      const { oidc } = ctx;\n      const request = oidc.claims?.id_token?.acr ?? {};\n\n      if (!request?.essential || !request?.value) {\n        return Check.NO_NEED_TO_PROMPT;\n      }\n\n      if (request.value === oidc.acr) {\n        return Check.NO_NEED_TO_PROMPT;\n      }\n\n      return Check.REQUEST_PROMPT;\n    },\n    ({ oidc }) => ({ acr: oidc.claims.id_token.acr }),\n  ),\n);\n", "/* eslint-disable no-unused-expressions */\n/* eslint-disable camelcase */\n\nimport Prompt from '../prompt.js';\nimport Check from '../check.js';\n\nconst missingOIDCScope = Symbol();\nconst missingOIDCClaims = Symbol();\nconst missingResourceScopes = Symbol();\n\nexport default () => new Prompt(\n  { name: 'consent', requestable: true },\n\n  new Check('native_client_prompt', 'native clients require End-User interaction', 'interaction_required', (ctx) => {\n    const { oidc } = ctx;\n    if (\n      oidc.client.applicationType === 'native'\n      && oidc.params.response_type !== 'none'\n      && (!oidc.result?.consent)\n    ) {\n      return Check.REQUEST_PROMPT;\n    }\n\n    return Check.NO_NEED_TO_PROMPT;\n  }),\n\n  new Check('op_scopes_missing', 'requested scopes not granted', (ctx) => {\n    const { oidc } = ctx;\n    const encounteredScopes = new Set(oidc.grant.getOIDCScopeEncountered().split(' '));\n\n    let missing;\n    for (const scope of oidc.requestParamOIDCScopes) {\n      if (!encounteredScopes.has(scope)) {\n        missing ||= [];\n        missing.push(scope);\n      }\n    }\n\n    if (missing?.length) {\n      ctx.oidc[missingOIDCScope] = missing;\n      return Check.REQUEST_PROMPT;\n    }\n\n    return Check.NO_NEED_TO_PROMPT;\n  }, ({ oidc }) => ({ missingOIDCScope: oidc[missingOIDCScope] })),\n\n  new Check('op_claims_missing', 'requested claims not granted', (ctx) => {\n    const { oidc } = ctx;\n    const encounteredClaims = new Set(oidc.grant.getOIDCClaimsEncountered());\n\n    let missing;\n    for (const claim of oidc.requestParamClaims) {\n      if (!encounteredClaims.has(claim) && !['sub', 'sid', 'auth_time', 'acr', 'amr', 'iss'].includes(claim)) {\n        missing ||= [];\n        missing.push(claim);\n      }\n    }\n\n    if (missing?.length) {\n      ctx.oidc[missingOIDCClaims] = missing;\n      return Check.REQUEST_PROMPT;\n    }\n\n    return Check.NO_NEED_TO_PROMPT;\n  }, ({ oidc }) => ({ missingOIDCClaims: oidc[missingOIDCClaims] })),\n\n  // checks resource server scopes\n  new Check('rs_scopes_missing', 'requested scopes not granted', (ctx) => {\n    const { oidc } = ctx;\n\n    let missing;\n\n    for (const [indicator, resourceServer] of Object.entries(ctx.oidc.resourceServers)) {\n      const encounteredScopes = new Set(oidc.grant.getResourceScopeEncountered(indicator).split(' '));\n      const requestedScopes = ctx.oidc.requestParamScopes;\n      const availableScopes = resourceServer.scopes;\n\n      for (const scope of requestedScopes) {\n        if (availableScopes.has(scope) && !encounteredScopes.has(scope)) {\n          missing ||= {};\n          missing[indicator] ||= [];\n          missing[indicator].push(scope);\n        }\n      }\n    }\n\n    if (missing && Object.keys(missing).length) {\n      ctx.oidc[missingResourceScopes] = missing;\n      return Check.REQUEST_PROMPT;\n    }\n\n    return Check.NO_NEED_TO_PROMPT;\n  }, ({ oidc }) => ({ missingResourceScopes: oidc[missingResourceScopes] })),\n\n  // checks authorization_details\n  new Check('rar_prompt', 'authorization_details were requested', (ctx) => {\n    const { oidc } = ctx;\n\n    if (oidc.params.authorization_details && !oidc.result?.consent) {\n      return Check.REQUEST_PROMPT;\n    }\n\n    return Check.NO_NEED_TO_PROMPT;\n  }, ({ oidc }) => ({ rar: JSON.parse(oidc.params.authorization_details) })),\n);\n", "import Check from './check.js';\nimport Prompt from './prompt.js';\nimport login from './prompts/login.js';\nimport consent from './prompts/consent.js';\n\nconst base = () => {\n  const DEFAULT = [];\n\n  DEFAULT.get = function getPrompt(name) {\n    if (typeof name !== 'string') {\n      throw new TypeError('name must be a string');\n    }\n    return this.find((p) => p.name === name);\n  };\n\n  DEFAULT.remove = function removePrompt(name) {\n    if (typeof name !== 'string') {\n      throw new TypeError('name must be a string');\n    }\n    const i = this.findIndex((p) => p.name === name);\n    this.splice(i, 1);\n  };\n\n  DEFAULT.clear = function clearAll() {\n    while (this.length) {\n      this.splice(0, 1);\n    }\n  };\n\n  DEFAULT.add = function addPrompt(prompt, i = this.length) {\n    if (!(prompt instanceof Prompt)) {\n      throw new TypeError('argument must be an instance of Prompt');\n    }\n    this.splice(i, 0, prompt);\n  };\n\n  DEFAULT.add(login());\n  DEFAULT.add(consent());\n\n  return DEFAULT;\n};\n\nexport { Check, Prompt, base };\n", "export default function htmlSafe(input) {\n  if (typeof input === 'number' && Number.isFinite(input)) {\n    return `${input}`;\n  }\n\n  if (typeof input === 'string') {\n    return input.replace(/&/g, '&amp;')\n      .replace(/</g, '&lt;')\n      .replace(/>/g, '&gt;')\n      .replace(/\"/g, '&quot;')\n      .replace(/'/g, '&#39;');\n  }\n\n  if (typeof input === 'boolean') {\n    return input.toString();\n  }\n\n  return '';\n}\n", "export const STABLE = new Set([\n  'backchannelLogout',\n  'ciba',\n  'claimsParameter',\n  'clientCredentials',\n  'deviceFlow',\n  'devInteractions',\n  'dPoP',\n  'encryption',\n  'fapi',\n  'introspection',\n  'jwtResponseModes',\n  'jwtIntrospection',\n  'jwtUserinfo',\n  'mTLS',\n  'pushedAuthorizationRequests',\n  'registration',\n  'registrationManagement',\n  'requestObjects',\n  'resourceIndicators',\n  'revocation',\n  'rpInitiatedLogout',\n  'userinfo',\n]);\n\nexport const EXPERIMENTS = new Map(Object.entries({\n  richAuthorizationRequests: {\n    name: 'OAuth 2.0 Rich Authorization Requests',\n    version: ['experimental-01'],\n  },\n  webMessageResponseMode: {\n    name: 'OAuth 2.0 Web Message Response Mode - draft 01',\n    version: ['individual-draft-01'],\n  },\n  externalSigningSupport: {\n    name: 'External Signing Key Support',\n    version: ['experimental-01'],\n  },\n  rpMetadataChoices: {\n    name: 'OpenID Connect Relying Party Metadata Choices',\n    version: ['draft-02'],\n  },\n  attestClientAuth: {\n    name: 'OAuth 2.0 Attestation-Based Client Authentication',\n    version: 'draft-06',\n  },\n}));\n", "import { JWA } from '../consts/index.js';\n\nimport isPlainObject from './_/is_plain_object.js';\nimport remove from './_/remove.js';\nimport merge from './_/merge.js';\nimport pick from './_/pick.js';\nimport set from './_/set.js';\nimport * as formatters from './formatters.js';\nimport getDefaults from './defaults.js';\nimport { STABLE, EXPERIMENTS } from './features.js';\nimport * as attention from './attention.js';\n\nfunction featuresTypeErrorCheck({ features }) {\n  for (const value of Object.values(features)) {\n    if (typeof value === 'boolean') {\n      throw new TypeError('Features are not enabled/disabled with a boolean value. See the documentation for more details.');\n    }\n  }\n}\n\nfunction filterHS(alg) {\n  return alg.startsWith('HS');\n}\n\nfunction filterAsymmetricSig(alg) {\n  switch (alg.slice(0, 2)) {\n    case 'ML': // ML-DSA-*, ML-KEM-*\n    case 'RS': // RS\\d{3}, RSA-OAEP\n    case 'PS': // PS\\d{3}\n    case 'ES': // ECDSA\n    case 'EC': // ECDH\n    case 'Ed': // Ed*\n    case 'X2': // X25519\n    case 'X4': // X448\n      return true;\n    default:\n      return false;\n  }\n}\n\nconst supportedResponseTypes = new Set(['none', 'code', 'id_token', 'token']);\nconst fapiProfiles = new Set(['1.0 Final', '2.0']);\n\nclass Configuration {\n  #defaults = getDefaults();\n\n  constructor(config) {\n    Object.assign(this, merge({}, this.#defaults, pick(config, ...Object.keys(this.#defaults))));\n\n    featuresTypeErrorCheck(this);\n\n    this.logDraftNotice();\n\n    this.registerExtraParamsValidations();\n    this.ensureSets();\n\n    this.checkResponseTypes();\n    this.checkAllowedJWA();\n    this.checkFapiProfile();\n    this.collectScopes();\n    this.collectPrompts();\n    this.unpackArrayClaims();\n    this.ensureOpenIdSub();\n    this.removeAcrIfEmpty();\n    this.collectClaims();\n    this.defaultSigAlg();\n    this.collectGrantTypes();\n    this.checkSubjectTypes();\n    this.checkDependantFeatures();\n    this.checkDeviceFlow();\n    this.checkAuthMethods();\n    this.checkTTL();\n    this.checkCibaDeliveryModes();\n    this.checkRichAuthorizationRequests();\n    this.checkPostMethods();\n\n    delete this.cookies.long.maxAge;\n    delete this.cookies.long.expires;\n    delete this.cookies.short.maxAge;\n    delete this.cookies.short.expires;\n\n    // release #defaults\n    this.#defaults = undefined;\n  }\n\n  checkRichAuthorizationRequests() {\n    if (this.features.richAuthorizationRequests.enabled) {\n      if (!isPlainObject(this.features.richAuthorizationRequests.types)) {\n        throw new TypeError('features.richAuthorizationRequests.types must be an object');\n      }\n\n      for (const [k, v] of Object.entries(this.features.richAuthorizationRequests.types)) {\n        if (!isPlainObject(v)) {\n          throw new TypeError('features.richAuthorizationRequests.types attribute values must be objects');\n        }\n        if (typeof v.validate !== 'function' || !['Function', 'AsyncFunction'].includes(v.validate.constructor.name)) {\n          throw new TypeError(`features.richAuthorizationRequests.types['${k}'].validate must be a function`);\n        }\n      }\n    }\n  }\n\n  registerExtraParamsValidations() {\n    if (!isPlainObject(this.extraParams)) {\n      return;\n    }\n\n    this.extraParamsValidations = Object.entries(this.extraParams).map(([key, value]) => {\n      if (value == null) {\n        return undefined;\n      }\n\n      if (typeof value !== 'function' || !['Function', 'AsyncFunction'].includes(value.constructor.name)) {\n        throw new TypeError(`invalid extraParams.${key} type, it must be a function, null, or undefined`);\n      }\n\n      return [key, value];\n    }).filter(Boolean);\n\n    this.extraParams = new Set(Object.keys(this.extraParams));\n  }\n\n  ensureSets() {\n    for (const [obj, props] of [\n      [this, ['scopes', 'subjectTypes', 'extraParams', 'acrValues', 'clientAuthMethods']],\n      [this.features.ciba, ['deliveryModes']],\n    ]) {\n      for (const prop of props) {\n        if (!(obj[prop] instanceof Set)) {\n          if (!Array.isArray(obj[prop])) {\n            throw new TypeError(`${prop} must be an Array or Set`);\n          }\n          const setValue = new Set(obj[prop]);\n          set(obj, prop, setValue);\n        }\n      }\n    }\n  }\n\n  checkResponseTypes() {\n    const types = new Set();\n\n    this.responseTypes.forEach((type) => {\n      const parsed = new Set(type.split(' '));\n\n      if (\n        (parsed.has('none') && parsed.size !== 1)\n        || (parsed.has('token') && parsed.size === 1)\n        || ![...parsed].every(Set.prototype.has.bind(supportedResponseTypes))\n      ) {\n        throw new TypeError(`unsupported response type: ${type}`);\n      }\n\n      types.add([...parsed].sort().join(' '));\n    });\n\n    this.responseTypes = [...types];\n  }\n\n  collectGrantTypes() {\n    this.grantTypes = new Set();\n\n    this.responseTypes.forEach((responseType) => {\n      if (responseType.includes('token')) {\n        this.grantTypes.add('implicit');\n      }\n      if (responseType.includes('code')) {\n        this.grantTypes.add('authorization_code');\n      }\n    });\n\n    if (this.scopes.has('offline_access') || this.issueRefreshToken !== this.#defaults.issueRefreshToken) {\n      this.grantTypes.add('refresh_token');\n    }\n\n    if (this.features.clientCredentials.enabled) {\n      this.grantTypes.add('client_credentials');\n    }\n\n    if (this.features.deviceFlow.enabled) {\n      this.grantTypes.add('urn:ietf:params:oauth:grant-type:device_code');\n    }\n\n    if (this.features.ciba.enabled) {\n      this.grantTypes.add('urn:openid:params:grant-type:ciba');\n    }\n  }\n\n  collectScopes() {\n    const claimDefinedScopes = [];\n    Object.entries(this.claims).forEach(([key, value]) => {\n      if (isPlainObject(value) || Array.isArray(value)) {\n        claimDefinedScopes.push(key);\n      }\n    });\n    claimDefinedScopes.forEach((scope) => {\n      if (typeof scope === 'string' && !this.scopes.has(scope)) {\n        this.scopes.add(scope);\n      }\n    });\n  }\n\n  collectPrompts() {\n    this.prompts = new Set(['none']);\n    this.interactions.policy.forEach(({ name, requestable }) => {\n      if (requestable) {\n        this.prompts.add(name);\n      }\n    });\n  }\n\n  unpackArrayClaims() {\n    Object.entries(this.claims).forEach(([key, value]) => {\n      if (Array.isArray(value)) {\n        this.claims[key] = value.reduce((accumulator, claim) => {\n          const scope = accumulator;\n          scope[claim] = null;\n          return scope;\n        }, {});\n      }\n    });\n  }\n\n  ensureOpenIdSub() {\n    if (!Object.keys(this.claims.openid).includes('sub')) {\n      this.claims.openid.sub = null;\n    }\n  }\n\n  removeAcrIfEmpty() {\n    if (!this.acrValues.size) {\n      delete this.claims.acr;\n    }\n  }\n\n  collectClaims() {\n    const claims = new Set();\n    this.scopes.forEach((scope) => {\n      if (scope in this.claims) {\n        Object.keys(this.claims[scope]).forEach(Set.prototype.add.bind(claims));\n      }\n    });\n\n    Object.entries(this.claims).forEach(([key, value]) => {\n      if (value === null) claims.add(key);\n    });\n\n    this.claimsSupported = claims;\n  }\n\n  checkAllowedJWA() {\n    Object.entries(this.enabledJWA).forEach(([key, value]) => {\n      if (!JWA[key]) {\n        throw new TypeError(`invalid property enabledJWA.${key} provided`);\n      }\n\n      if (!Array.isArray(value)) {\n        throw new TypeError(`invalid type for enabledJWA.${key} provided, expected Array`);\n      }\n\n      value.forEach((alg) => {\n        if (!JWA[key].includes(alg)) {\n          throw new TypeError(`unsupported enabledJWA.${key} algorithm provided`);\n        }\n      });\n    });\n  }\n\n  setAlgs(prop, values, ...features) {\n    if (features.length === 0 || features.every((enabled) => !!enabled)) {\n      this[prop] = values;\n    } else {\n      this[prop] = [];\n    }\n  }\n\n  defaultSigAlg() {\n    const allowList = this.enabledJWA;\n\n    const enabled = {\n      encryption: this.features.encryption.enabled,\n      requestObjects: this.features.requestObjects.enabled,\n      jwtUserinfo: this.features.jwtUserinfo.enabled,\n      jwtIntrospection: this.features.jwtIntrospection.enabled,\n      jwtResponseModes: this.features.jwtResponseModes.enabled,\n      dPoP: this.features.dPoP.enabled,\n      attestClientAuth: this.features.attestClientAuth.enabled,\n    };\n\n    this.setAlgs('idTokenSigningAlgValues', allowList.idTokenSigningAlgValues.filter(filterHS));\n    this.setAlgs('idTokenEncryptionAlgValues', allowList.idTokenEncryptionAlgValues.slice());\n    this.setAlgs('idTokenEncryptionEncValues', allowList.idTokenEncryptionEncValues.slice(), enabled.encryption);\n\n    this.setAlgs('requestObjectSigningAlgValues', allowList.requestObjectSigningAlgValues.slice(), enabled.requestObjects);\n    this.setAlgs('requestObjectEncryptionAlgValues', allowList.requestObjectEncryptionAlgValues.filter(RegExp.prototype.test.bind(/^(A|dir$)/)), enabled.encryption, enabled.requestObjects);\n    this.setAlgs('requestObjectEncryptionEncValues', allowList.requestObjectEncryptionEncValues.slice(), enabled.encryption, enabled.requestObjects);\n\n    this.setAlgs('userinfoSigningAlgValues', allowList.userinfoSigningAlgValues.filter(filterHS), enabled.jwtUserinfo);\n    this.setAlgs('userinfoEncryptionAlgValues', allowList.userinfoEncryptionAlgValues.slice(), enabled.jwtUserinfo, enabled.encryption);\n    this.setAlgs('userinfoEncryptionEncValues', allowList.userinfoEncryptionEncValues.slice(), enabled.jwtUserinfo, enabled.encryption);\n\n    this.setAlgs('introspectionSigningAlgValues', allowList.introspectionSigningAlgValues.filter(filterHS), enabled.jwtIntrospection);\n    this.setAlgs('introspectionEncryptionAlgValues', allowList.introspectionEncryptionAlgValues.slice(), enabled.jwtIntrospection, enabled.encryption);\n    this.setAlgs('introspectionEncryptionEncValues', allowList.introspectionEncryptionEncValues.slice(), enabled.jwtIntrospection, enabled.encryption);\n\n    this.setAlgs('authorizationSigningAlgValues', allowList.authorizationSigningAlgValues.filter(filterHS), enabled.jwtResponseModes);\n    this.setAlgs('authorizationEncryptionAlgValues', allowList.authorizationEncryptionAlgValues.slice(), enabled.jwtResponseModes, enabled.encryption);\n    this.setAlgs('authorizationEncryptionEncValues', allowList.authorizationEncryptionEncValues.slice(), enabled.jwtResponseModes, enabled.encryption);\n\n    this.setAlgs('dPoPSigningAlgValues', allowList.dPoPSigningAlgValues.slice(), enabled.dPoP);\n    this.setAlgs('attestSigningAlgValues', allowList.attestSigningAlgValues.slice(), enabled.attestClientAuth);\n\n    this.clientAuthSigningAlgValues = this.enabledJWA.clientAuthSigningAlgValues;\n\n    if (!this.clientAuthMethods.has('client_secret_jwt')) {\n      remove(this.clientAuthSigningAlgValues, filterHS);\n    } else if (!this.clientAuthSigningAlgValues.find(filterHS)) {\n      this.clientAuthMethods.delete('client_secret_jwt');\n    }\n\n    if (!this.clientAuthMethods.has('private_key_jwt')) {\n      remove(this.clientAuthSigningAlgValues, filterAsymmetricSig);\n    } else if (!this.clientAuthSigningAlgValues.find(filterAsymmetricSig)) {\n      this.clientAuthMethods.delete('private_key_jwt');\n    }\n\n    if (!this.clientAuthSigningAlgValues.length) {\n      this.clientAuthSigningAlgValues = undefined;\n    }\n  }\n\n  checkSubjectTypes() {\n    if (!this.subjectTypes.size) {\n      throw new TypeError('subjectTypes must not be empty');\n    }\n\n    this.subjectTypes.forEach((type) => {\n      if (!['public', 'pairwise'].includes(type)) {\n        throw new TypeError('only public and pairwise subjectTypes are supported');\n      }\n    });\n  }\n\n  checkCibaDeliveryModes() {\n    const modes = this.features.ciba.deliveryModes;\n    if (!modes.size) {\n      throw new TypeError('features.ciba.deliveryModes must not be empty');\n    }\n\n    for (const mode of modes) {\n      if (!['ping', 'poll'].includes(mode)) {\n        throw new TypeError('only poll and ping CIBA delivery modes are supported');\n      }\n    }\n  }\n\n  checkDependantFeatures() {\n    const { features } = this;\n\n    if (features.jwtIntrospection.enabled && !features.introspection.enabled) {\n      throw new TypeError('jwtIntrospection is only available in conjuction with introspection');\n    }\n\n    if (features.jwtUserinfo.enabled && !features.userinfo.enabled) {\n      throw new TypeError('jwtUserinfo is only available in conjuction with userinfo');\n    }\n\n    if (features.registrationManagement.enabled && !features.registration.enabled) {\n      throw new TypeError('registrationManagement is only available in conjuction with registration');\n    }\n\n    if (\n      (features.registration.enabled && features.registration.policies)\n      && !features.registration.initialAccessToken\n    ) {\n      throw new TypeError('registration policies are only available in conjuction with adapter-backed initial access tokens');\n    }\n\n    if (features.richAuthorizationRequests.enabled && !features.resourceIndicators.enabled) {\n      throw new TypeError('richAuthorizationRequests is only available in conjuction with enabled resourceIndicators');\n    }\n  }\n\n  checkTTL() {\n    Object.entries(this.ttl).forEach(([key, value]) => {\n      let valid = false;\n      switch (typeof value) {\n        case 'function':\n          if (value.constructor.toString() === 'function Function() { [native code] }') {\n            valid = true;\n          }\n          break;\n        case 'number':\n          if (Number.isSafeInteger(value) && value > 0) {\n            valid = true;\n          }\n          break;\n        case 'undefined': // does not expire\n          valid = true;\n          break;\n        default:\n      }\n\n      if (!valid) {\n        throw new TypeError(`ttl.${key} must be a positive integer or a regular function returning one`);\n      }\n    });\n  }\n\n  checkFapiProfile() {\n    if (!this.features.fapi.enabled) {\n      this.features.fapi.profile = () => undefined;\n    } else if (typeof this.features.fapi.profile === 'function') {\n      const helper = this.features.fapi.profile;\n      this.features.fapi.profile = (...args) => {\n        const profile = helper(...args);\n        if (profile && !fapiProfiles.has(profile)) {\n          throw new TypeError(`'profile' must be ${formatters.formatList([...fapiProfiles], { type: 'disjunction' })}`);\n        }\n        return profile || undefined;\n      };\n    } else if (!fapiProfiles.has(this.features.fapi.profile)) {\n      throw new TypeError(`'profile' must be ${formatters.formatList([...fapiProfiles], { type: 'disjunction' })}`);\n    } else {\n      const value = this.features.fapi.profile;\n      this.features.fapi.profile = () => value;\n    }\n  }\n\n  checkPostMethods() {\n    if (this.enableHttpPostMethods && this.cookies.long.sameSite?.toLowerCase() !== 'none') {\n      throw new TypeError('HTTP POST Method support requires that cookies.long.sameSite is set to none');\n    }\n  }\n\n  checkAuthMethods() {\n    const authMethods = new Set([\n      'none',\n      'client_secret_basic',\n      'client_secret_jwt',\n      'client_secret_post',\n      'private_key_jwt',\n    ]);\n\n    if (this.features.mTLS.enabled && this.features.mTLS.tlsClientAuth) {\n      authMethods.add('tls_client_auth');\n    }\n\n    if (this.features.mTLS.enabled && this.features.mTLS.selfSignedTlsClientAuth) {\n      authMethods.add('self_signed_tls_client_auth');\n    }\n\n    if (this.features.attestClientAuth.enabled) {\n      authMethods.add('attest_jwt_client_auth');\n    }\n\n    if (this.clientAuthMethods) {\n      this.clientAuthMethods.forEach((method) => {\n        if (!authMethods.has(method)) {\n          throw new TypeError(`only supported clientAuthMethods are ${formatters.formatList([...authMethods])}`);\n        }\n      });\n    }\n  }\n\n  checkDeviceFlow() {\n    if (this.features.deviceFlow.enabled) {\n      if (this.features.deviceFlow.charset !== undefined) {\n        if (!['base-20', 'digits'].includes(this.features.deviceFlow.charset)) {\n          throw new TypeError('only supported charsets are \"base-20\" and \"digits\"');\n        }\n      }\n      if (!/^[-* ]*$/.test(this.features.deviceFlow.mask)) {\n        throw new TypeError('mask can only contain asterisk(\"*\"), hyphen-minus(\"-\") and space(\" \") characters');\n      }\n    }\n  }\n\n  logDraftNotice() {\n    const ENABLED_EXPERIMENTS = new Set();\n    let throwExperiment = false;\n\n    Object.entries(this.features).forEach(([flag, { enabled, ack }]) => {\n      const { features: recognizedFeatures } = getDefaults();\n      if (!(flag in recognizedFeatures)) {\n        throw new TypeError(`Unknown feature configuration: ${flag}`);\n      }\n\n      const experimental = EXPERIMENTS.get(flag);\n      if (\n        experimental\n        && enabled && !STABLE.has(flag)\n        && (\n          Array.isArray(experimental.version)\n            ? !experimental.version.includes(ack) : ack !== experimental.version\n        )\n      ) {\n        if (typeof ack !== 'undefined') {\n          throwExperiment = true;\n        }\n        ENABLED_EXPERIMENTS.add(flag);\n      }\n\n      if (enabled && !experimental && ack !== undefined) {\n        throw new TypeError(`${flag} feature is now stable, the ack ${ack} is no longer valid. Check the stable feature's configuration for any breaking changes.`);\n      }\n    });\n\n    if (ENABLED_EXPERIMENTS.size) {\n      attention.info('The following experimental features are enabled and their implemented version not acknowledged');\n      ENABLED_EXPERIMENTS.forEach((experimental) => {\n        const { name } = EXPERIMENTS.get(experimental);\n        let { version } = EXPERIMENTS.get(experimental);\n\n        if (Array.isArray(version)) {\n          version = version[version.length - 1];\n        }\n\n        attention.info(`  - ${name} (Acknowledging this feature's implemented version can be done with the value '${version}')`);\n      });\n      attention.info('Breaking changes between experimental feature updates may occur and these will be published as MINOR semver oidc-provider updates.');\n      attention.info(\"You may disable this notice and be warned when breaking updates occur by acknowledging the current experiment's version. See the documentation for more details.\");\n\n      if (throwExperiment) {\n        throw new TypeError('An unacknowledged version of an experimental feature is included in this oidc-provider version.');\n      }\n    }\n  }\n}\n\nexport default Configuration;\n", "import { strict as assert } from 'node:assert';\nimport * as crypto from 'node:crypto';\n\nimport { DEV_KEYSTORE } from '../consts/index.js';\n\nimport * as attention from './attention.js';\nimport instance from './weak_cache.js';\nimport KeyStore, { ExternalSigningKey } from './keystore.js';\n\nconst calculateKid = (jwk) => {\n  let components;\n\n  switch (jwk.kty) {\n    case 'RSA':\n      components = {\n        e: jwk.e, kty: 'RSA', n: jwk.n,\n      };\n      break;\n    case 'EC':\n      components = {\n        crv: jwk.crv, kty: 'EC', x: jwk.x, y: jwk.y,\n      };\n      break;\n    case 'OKP':\n      components = {\n        crv: jwk.crv, kty: 'OKP', x: jwk.x,\n      };\n      break;\n    case 'AKP':\n      components = {\n        alg: jwk.alg, kty: 'AKP', pub: jwk.pub,\n      };\n      break;\n    default:\n      return undefined;\n  }\n\n  return crypto.hash('sha256', JSON.stringify(components), 'base64url');\n};\nconst KEY_TYPES = new Set(['RSA', 'EC', 'OKP', 'AKP']);\n\nconst jwkSignatureAlgorithms = (jwk) => {\n  if (jwk.use !== 'sig' && jwk.use !== undefined) {\n    return [];\n  }\n\n  let available;\n\n  switch (jwk.kty) {\n    case 'RSA':\n      available = ['PS256', 'PS384', 'PS512', 'RS256', 'RS384', 'RS512'];\n      break;\n    case 'EC':\n      switch (jwk.crv) {\n        case 'P-256':\n          available = ['ES256'];\n          break;\n        case 'P-384':\n          available = ['ES384'];\n          break;\n        case 'P-521':\n          available = ['ES512'];\n          break;\n        default:\n      }\n      break;\n    case 'OKP':\n      switch (jwk.crv) {\n        case 'Ed25519':\n          available = ['EdDSA', 'Ed25519'];\n          break;\n        default:\n      }\n      break;\n    case 'AKP':\n      switch (jwk.alg) {\n        case 'ML-DSA-44':\n        case 'ML-DSA-65':\n        case 'ML-DSA-87':\n          available = [jwk.alg];\n          break;\n        default:\n      }\n      break;\n    default:\n  }\n\n  if (jwk.alg) {\n    if (available && available.includes(jwk.alg)) {\n      return [jwk.alg];\n    }\n    return [];\n  }\n\n  return available || [];\n};\n\nconst jwkEncryptionAlgorithms = (jwk) => {\n  if (jwk.use !== 'enc' && jwk.use !== undefined) {\n    return [];\n  }\n\n  let available;\n\n  switch (jwk.kty) {\n    case 'RSA':\n      available = ['RSA-OAEP', 'RSA-OAEP-256', 'RSA-OAEP-384', 'RSA-OAEP-512'];\n      break;\n    case 'EC':\n      switch (jwk.crv) {\n        case 'P-256':\n        case 'P-384':\n        case 'P-521':\n          available = ['ECDH-ES', 'ECDH-ES+A128KW', 'ECDH-ES+A192KW', 'ECDH-ES+A256KW'];\n          break;\n        default:\n      }\n      break;\n    case 'OKP':\n      switch (jwk.crv) {\n        case 'X25519':\n          available = ['ECDH-ES', 'ECDH-ES+A128KW', 'ECDH-ES+A192KW', 'ECDH-ES+A256KW'];\n          break;\n        default:\n      }\n      break;\n    default:\n  }\n\n  if (jwk.alg) {\n    if (available && available.includes(jwk.alg)) {\n      return [jwk.alg];\n    }\n    return [];\n  }\n\n  return available || [];\n};\n\nfunction checkString(value, property, i) {\n  assert(typeof value === 'string' && value, `jwks.keys[${i}].${property} configuration must be a non-empty string`);\n}\n\nfunction isExternal(key) {\n  return key instanceof ExternalSigningKey;\n}\n\nfunction registerKey(input, i, keystore, kids) {\n  const { configuration, features } = instance(this);\n\n  let key;\n  if (isExternal(input)) {\n    assert(features.externalSigningSupport.enabled, 'features.externalSigningSupport must be enabled for ExternalSigningKey support');\n    key = input;\n  } else {\n    key = structuredClone(input);\n  }\n  assert(KEY_TYPES.has(key.kty), `only RSA, EC, OKP, or AKP keys should be part of jwks configuration (index ${i})`);\n  key.kid ??= calculateKid(key);\n  checkString(key.kid, 'kid', i);\n\n  assert(!kids.has(key.kid), 'jwks.keys configuration must not contain duplicate \"kid\" values');\n  kids.add(key.kid);\n\n  switch (key.kty) {\n    case 'AKP':\n      checkString(key.alg, 'alg', i);\n      checkString(key.pub, 'pub', i);\n      if (!(key instanceof ExternalSigningKey)) {\n        checkString(key.priv, 'priv', i);\n      }\n      break;\n    case 'OKP':\n      checkString(key.crv, 'crv', i);\n      checkString(key.x, 'x', i);\n      if (!(key instanceof ExternalSigningKey)) {\n        checkString(key.d, 'd', i);\n      }\n      break;\n    case 'EC':\n      checkString(key.crv, 'crv', i);\n      checkString(key.x, 'x', i);\n      checkString(key.y, 'y', i);\n      if (!(key instanceof ExternalSigningKey)) {\n        checkString(key.d, 'd', i);\n      }\n      break;\n    case 'RSA':\n      checkString(key.e, 'e', i);\n      checkString(key.n, 'n', i);\n      if (!(key instanceof ExternalSigningKey)) {\n        checkString(key.d, 'd', i);\n        checkString(key.p, 'p', i);\n        checkString(key.q, 'q', i);\n        checkString(key.dp, 'dp', i);\n        checkString(key.dq, 'dq', i);\n        checkString(key.qi, 'qi', i);\n      }\n      break;\n    default:\n      throw new Error('unreachable');\n  }\n\n  if (key instanceof ExternalSigningKey) {\n    assert(key.use === 'sig', `jwks.keys[${i}] configuration \"use\" must be \"sig\"`);\n  }\n\n  if (key.key_ops !== undefined) {\n    assert(Array.isArray(key.key_ops) && key.key_ops.length && key.key_ops.every((x) => typeof x === 'string' && x), `jwks.keys[${i}].key_ops configuration must be an array of strings`);\n  }\n\n  if (key.x5c !== undefined) {\n    assert(Array.isArray(key.x5c) && key.x5c.length && key.x5c.every((x) => typeof x === 'string' && x), `jwks.keys[${i}].x5c configuration must be an array of strings`);\n  }\n\n  let encryptionAlgs;\n  if (features.encryption.enabled) {\n    encryptionAlgs = jwkEncryptionAlgorithms(key);\n\n    [\n      // 'idTokenEncryptionAlgValues',\n      'requestObjectEncryptionAlgValues',\n      // 'userinfoEncryptionAlgValues',\n    ].forEach((prop) => {\n      configuration[prop] = [...new Set([...configuration[prop], ...encryptionAlgs])]\n        .filter((v) => configuration.enabledJWA[prop].includes(v));\n    });\n  }\n\n  const signingAlgs = jwkSignatureAlgorithms(key);\n  [\n    'idTokenSigningAlgValues',\n    // 'requestObjectSigningAlgValues' uses client's keystore\n    // 'tokenEndpointAuthSigningAlgValues' uses client's keystore\n    'userinfoSigningAlgValues',\n    'introspectionSigningAlgValues',\n    'authorizationSigningAlgValues',\n  ].forEach((prop) => {\n    configuration[prop] = [...new Set([...configuration[prop], ...signingAlgs])]\n      .filter((v) => configuration.enabledJWA[prop].includes(v));\n  });\n\n  const combined = signingAlgs.concat(encryptionAlgs).filter(Boolean);\n\n  /* eslint-disable no-param-reassign */\n  if (combined.length === 1 && key.alg !== combined[0]) {\n    [key.alg] = combined;\n  }\n\n  if (isExternal(key) && combined.length > 1) {\n    checkString(key.alg, 'alg', i);\n  }\n\n  if (encryptionAlgs?.length && !signingAlgs.length && key.use !== 'enc') {\n    key.use = 'enc';\n  } else if (signingAlgs.length && !encryptionAlgs?.length && key.use !== 'sig') {\n    key.use = 'sig';\n  }\n\n  if (!Array.isArray(key.x5c) || !key.x5c.length) {\n    delete key.x5c;\n  }\n\n  assert(combined.length, `jwks.keys[${i}] is of no use given the other configuration, remove it`);\n  keystore.add(key);\n  /* eslint-enable */\n}\n\nexport default function initialize(jwks) {\n  if (jwks === undefined) {\n    // eslint-disable-next-line no-param-reassign\n    jwks = structuredClone(DEV_KEYSTORE);\n    /* eslint-disable no-multi-str */\n    attention.warn('a quick start development-only signing keys are used, you are expected to \\\nprovide your own in the configuration \"jwks\" property');\n    /* eslint-enable */\n  }\n\n  const keystore = new KeyStore();\n  const kids = new Set();\n\n  try {\n    if (!Array.isArray(jwks.keys)) {\n      throw new Error();\n    }\n    // eslint-disable-next-line no-plusplus\n    for (let i = 0; i < jwks.keys.length; i++) {\n      registerKey.call(this, jwks.keys[i], i, keystore, kids);\n    }\n  } catch (err) {\n    throw new Error(err.message || 'keystore must be a JSON Web Key Set formatted object', { cause: err });\n  }\n\n  instance(this).keystore = keystore;\n  const keys = [...keystore].map((key) => ({\n    kty: key.kty,\n    use: key.use,\n    key_ops: key.key_ops ? [...key.key_ops] : undefined,\n    kid: key.kid,\n    alg: key.alg,\n    crv: key.crv,\n    e: key.e,\n    n: key.n,\n    x: key.x,\n    x5c: key.x5c ? [...key.x5c] : undefined,\n    y: key.y,\n    pub: key.pub,\n  }));\n  instance(this).jwks = { keys };\n}\n", "/* eslint-disable class-methods-use-this, max-classes-per-file, no-plusplus */\n\nexport class ExternalSigningKey {\n  #publicJwk;\n\n  #kid;\n\n  #alg;\n\n  get kid() {\n    return this.#kid;\n  }\n\n  set kid(value) {\n    this.#kid = value;\n  }\n\n  get alg() {\n    return this.#alg;\n  }\n\n  set alg(value) {\n    this.#alg = value;\n  }\n\n  get use() {\n    return 'sig';\n  }\n\n  #ensurePublicJwk() {\n    this.#publicJwk ||= this.keyObject().export({ format: 'jwk' });\n  }\n\n  get kty() {\n    this.#ensurePublicJwk();\n    return this.#publicJwk.kty;\n  }\n\n  get pub() {\n    this.#ensurePublicJwk();\n    return this.#publicJwk.pub;\n  }\n\n  get e() {\n    this.#ensurePublicJwk();\n    return this.#publicJwk.e;\n  }\n\n  get n() {\n    this.#ensurePublicJwk();\n    return this.#publicJwk.n;\n  }\n\n  get x() {\n    this.#ensurePublicJwk();\n    return this.#publicJwk.x;\n  }\n\n  get y() {\n    this.#ensurePublicJwk();\n    return this.#publicJwk.y;\n  }\n\n  get crv() {\n    this.#ensurePublicJwk();\n    return this.#publicJwk.crv;\n  }\n\n  get key_ops() {\n    return undefined;\n  }\n\n  get x5c() {\n    return undefined;\n  }\n\n  keyObject() {\n    throw new Error('not implemented');\n  }\n\n  sign() {\n    throw new Error('not implemented');\n  }\n}\n\nconst keyscore = (key, { alg, use }) => {\n  let score = 0;\n\n  if (alg && key.alg) {\n    score++;\n  }\n\n  if (use && key.use) {\n    score++;\n  }\n\n  return score;\n};\n\nconst getKtyFromJWSAlg = (alg) => {\n  switch (alg.substring(0, 2)) {\n    case 'RS':\n    case 'PS': return 'RSA';\n    case 'HS': return 'oct';\n    case 'ES': return 'EC';\n    case 'Ed': return 'OKP';\n    case 'ML': return 'AKP';\n    default:\n      throw new Error();\n  }\n};\n\nconst getCrvFromJWSAlg = (alg) => {\n  switch (alg) {\n    case 'ES256': return 'P-256';\n    case 'ES384': return 'P-384';\n    case 'ES512': return 'P-521';\n    case 'EdDSA':\n    case 'Ed25519': return 'Ed25519';\n    default:\n      return undefined;\n  }\n};\n\nconst getKtyFromJWEAlg = (alg, epk) => {\n  switch (alg[0]) {\n    case 'A': return 'oct';\n    case 'R': return 'RSA';\n    case 'E': {\n      if (epk) {\n        return epk.crv.startsWith('X') ? 'OKP' : 'EC';\n      }\n\n      return ['OKP', 'EC'];\n    }\n    default:\n      throw new Error();\n  }\n};\n\nconst selectForDSA = Symbol();\nconst selectForEncDec = Symbol();\nconst filter = Symbol();\n\nfunction stripPrivate(jwk) {\n  const {\n    d, p, q, dp, dq, qi, oth, priv, ...pub\n  } = jwk;\n  return pub;\n}\n\nclass KeyStore {\n  #keys;\n\n  #cachedPub;\n\n  constructor(keys = []) {\n    this.#keys = keys;\n  }\n\n  [selectForDSA](options, operation) {\n    const {\n      alg,\n      kid,\n      kty = getKtyFromJWSAlg(alg),\n      crv = getCrvFromJWSAlg(alg),\n    } = options;\n\n    const scoring = { alg, use: 'sig' };\n\n    return this[filter]((jwk) => {\n      let candidate = jwk.kty === kty;\n\n      if (candidate && typeof kid === 'string') {\n        candidate = kid === jwk.kid;\n      }\n\n      if (candidate && (typeof jwk.alg === 'string' || kty === 'AKP')) {\n        candidate = alg === jwk.alg;\n      }\n\n      if (candidate && typeof jwk.use === 'string') {\n        candidate = jwk.use === 'sig';\n      }\n\n      if (candidate && crv) {\n        candidate = jwk.crv === crv;\n      }\n\n      if (candidate && Array.isArray(jwk.key_ops)) {\n        candidate = jwk.key_ops.includes(operation);\n      }\n\n      return candidate;\n    }, scoring);\n  }\n\n  selectForVerify(options) {\n    return this[selectForDSA](options, 'verify');\n  }\n\n  selectForSign(options) {\n    return this[selectForDSA](options, 'sign');\n  }\n\n  [selectForEncDec](options, operation) {\n    const {\n      alg,\n      kid,\n      epk,\n      kty = getKtyFromJWEAlg(alg, epk),\n    } = options;\n\n    const scoring = { alg, use: 'enc' };\n\n    return this[filter]((jwk) => {\n      let candidate = Array.isArray(kty) ? kty.includes(jwk.kty) : jwk.kty === kty;\n\n      if (candidate && kid !== undefined) {\n        candidate = kid === jwk.kid;\n      }\n\n      if (candidate && jwk.alg !== undefined) {\n        candidate = alg === jwk.alg;\n      }\n\n      if (candidate && jwk.use !== undefined) {\n        candidate = jwk.use === 'enc';\n      }\n\n      if (candidate && epk) {\n        candidate = epk.crv === jwk.crv;\n      }\n\n      if (candidate && Array.isArray(jwk.key_ops)) {\n        switch (kty) {\n          case 'RSA': {\n            candidate = jwk.key_ops.includes(operation);\n            break;\n          }\n          case 'EC':\n          case 'OKP': {\n            if (operation === 'decrypt') candidate = jwk.key_ops.includes('deriveBits');\n            break;\n          }\n          default:\n        }\n      }\n\n      return candidate;\n    }, scoring);\n  }\n\n  selectForDecrypt(options) {\n    return this[selectForEncDec](options, 'decrypt');\n  }\n\n  selectForEncrypt(options) {\n    return this[selectForEncDec](options, 'encrypt');\n  }\n\n  [filter](selector, scoring) {\n    return this.#keys\n      .filter(selector)\n      .sort((first, second) => keyscore(second, scoring) - keyscore(first, scoring));\n  }\n\n  add(key) {\n    this.#keys.push(key);\n  }\n\n  clear() {\n    this.#keys = [];\n  }\n\n  getKeyObject(input, getPublic = false) {\n    if (input instanceof ExternalSigningKey) {\n      return getPublic ? input.keyObject() : input;\n    }\n\n    if (input.kty === 'oct' || (!input.d && !input.priv) || !getPublic) {\n      return input;\n    }\n\n    this.#cachedPub ||= new WeakMap();\n\n    if (!this.#cachedPub.has(input)) {\n      this.#cachedPub.set(input, stripPrivate(input));\n    }\n\n    return this.#cachedPub.get(input);\n  }\n\n  * [Symbol.iterator]() {\n    for (const key of this.#keys) {\n      yield key;\n    }\n  }\n}\n\nexport default KeyStore;\n", "import * as util from 'node:util';\n\nimport MemoryAdapter from '../adapters/memory_adapter.js';\n\nimport instance from './weak_cache.js';\nimport * as attention from './attention.js';\nimport isConstructable from './type_validators.js';\n\nexport default function initializeAdapter(adapter = MemoryAdapter) {\n  if (adapter === MemoryAdapter) {\n    attention.warn('a quick start development-only in-memory adapter is used, you MUST change it in'\n    + ' order to not lose all stateful provider data upon restart and to be able to share these'\n    + ' between processes');\n  } else {\n    const constructable = isConstructable(adapter);\n    const executable = typeof adapter === 'function' && !util.types.isAsyncFunction(adapter);\n\n    if (!constructable && !executable) {\n      throw new Error('Expected \"adapter\" to be a constructor or a factory function, provide a valid adapter in Provider config.');\n    }\n  }\n\n  instance(this).Adapter = adapter;\n}\n", "export default (date = Date.now()) => Math.floor(date / 1000);\n", "import QuickLRU from 'quick-lru';\n\nimport epochTime from '../helpers/epoch_time.js';\n\nlet storage = new QuickLRU({ maxSize: 1000 });\n\nfunction grantKeyFor(id) {\n  return `grant:${id}`;\n}\n\nfunction sessionUidKeyFor(id) {\n  return `sessionUid:${id}`;\n}\n\nfunction userCodeKeyFor(userCode) {\n  return `userCode:${userCode}`;\n}\n\nconst grantable = new Set([\n  'AccessToken',\n  'AuthorizationCode',\n  'RefreshToken',\n  'DeviceCode',\n  'BackchannelAuthenticationRequest',\n]);\n\nclass MemoryAdapter {\n  constructor(model) {\n    this.model = model;\n  }\n\n  key(id) {\n    return `${this.model}:${id}`;\n  }\n\n  async destroy(id) {\n    const key = this.key(id);\n    storage.delete(key);\n  }\n\n  async consume(id) {\n    storage.get(this.key(id)).consumed = epochTime();\n  }\n\n  async find(id) {\n    return storage.get(this.key(id));\n  }\n\n  async findByUid(uid) {\n    const id = storage.get(sessionUidKeyFor(uid));\n    return this.find(id);\n  }\n\n  async findByUserCode(userCode) {\n    const id = storage.get(userCodeKeyFor(userCode));\n    return this.find(id);\n  }\n\n  async upsert(id, payload, expiresIn) {\n    const key = this.key(id);\n\n    if (this.model === 'Session') {\n      storage.set(sessionUidKeyFor(payload.uid), id, expiresIn * 1000);\n    }\n\n    const { grantId, userCode } = payload;\n    if (grantable.has(this.model) && grantId) {\n      const grantKey = grantKeyFor(grantId);\n      const grant = storage.get(grantKey);\n      if (!grant) {\n        storage.set(grantKey, [key]);\n      } else {\n        grant.push(key);\n      }\n    }\n\n    if (userCode) {\n      storage.set(userCodeKeyFor(userCode), id, expiresIn * 1000);\n    }\n\n    storage.set(key, payload, expiresIn * 1000);\n  }\n\n  async revokeByGrantId(grantId) { // eslint-disable-line class-methods-use-this\n    const grantKey = grantKeyFor(grantId);\n    const grant = storage.get(grantKey);\n    if (grant) {\n      grant.forEach((token) => storage.delete(token));\n      storage.delete(grantKey);\n    }\n  }\n}\n\nexport default MemoryAdapter;\nexport function setStorage(store) { storage = store; }\n", "const hasPrototype = (target) => target.prototype !== null && typeof target.prototype === 'object';\n\nconst isContructor = (fn) => fn.constructor instanceof Function\n  && fn.constructor.name !== undefined;\n\nexport default (constructable) => constructable instanceof Function\n      && hasPrototype(constructable)\n      && isContructor(constructable.constructor);\n", "import { strict as assert } from 'node:assert';\n\nimport Router from '@koa/router';\n\nimport devInteractions from '../actions/interaction.js';\nimport cors from '../shared/cors.js';\nimport * as grants from '../actions/grants/index.js';\nimport * as responseModes from '../response_modes/index.js';\nimport error from '../shared/error_handler.js';\nimport getAuthError from '../shared/authorization_error_handler.js';\nimport {\n  getAuthorization, userinfo, getToken, jwks, registration, getRevocation,\n  getIntrospection, discovery, endSession, codeVerification, challenge,\n} from '../actions/index.js';\n\nimport als from './als.js';\nimport instance from './weak_cache.js';\n\nexport default function initializeApp() {\n  const { configuration, features } = instance(this);\n  const maxAge = 3600;\n  function exposeHeaders({\n    dpop = features.dPoP.enabled && features.dPoP.nonceSecret,\n    attest = features.attestClientAuth.enabled,\n    wwwAuth = true,\n  } = {}) {\n    return [\n      dpop ? 'DPoP-Nonce' : undefined,\n      attest ? 'OAuth-Client-Attestation-Challenge' : undefined,\n      wwwAuth ? 'WWW-Authenticate' : undefined,\n    ].filter(Boolean);\n  }\n\n  const CORS = {\n    open: cors({ allowMethods: 'GET', maxAge }),\n    challenge: cors({ allowMethods: 'POST', maxAge, exposeHeaders: exposeHeaders({ wwwAuth: false }) }),\n    userinfo: cors({\n      allowMethods: 'GET,POST', clientBased: true, maxAge, exposeHeaders: exposeHeaders({ attest: false }),\n    }),\n    client: cors({\n      allowMethods: 'POST', clientBased: true, maxAge, exposeHeaders: exposeHeaders({ dpop: false }),\n    }),\n    clientWithDPoP: cors({\n      allowMethods: 'POST', clientBased: true, maxAge, exposeHeaders: exposeHeaders(),\n    }),\n    respond: () => {},\n  };\n\n  const router = new Router();\n  instance(this).router = router;\n\n  const ensureOIDC = async (ctx, next) => {\n    let oidcCtx;\n    Object.defineProperty(ctx, 'oidc', {\n      get: () => {\n        oidcCtx ||= new this.OIDCContext(ctx);\n        return oidcCtx;\n      },\n    });\n    return als.run(ctx, () => next());\n  };\n\n  const routeMap = new Map();\n  function normalizeRoute(name, route, ...stack) {\n    assert(typeof name === 'string' && name.charAt(0) !== '/', `invalid route name ${name}`);\n    assert(typeof route === 'string' && route.charAt(0) === '/', `invalid route ${route}`);\n    route = route.replace(/\\/\\//g, '/'); // eslint-disable-line no-param-reassign\n    stack.forEach((middleware) => assert.equal(typeof middleware, 'function'), 'invalid middleware');\n    routeMap.set(name, route);\n    return route;\n  }\n  async function ensureSessionSave(ctx, next) {\n    try {\n      await next();\n    } finally {\n      if (ctx.oidc.session?.touched && !ctx.oidc.session.destroyed) {\n        await ctx.oidc.session.persist();\n      }\n    }\n  }\n\n  const get = (name, route, ...stack) => {\n    route = normalizeRoute(name, route, ...stack); // eslint-disable-line no-param-reassign\n    router.get(name, route, ensureOIDC, ensureSessionSave, ...stack);\n  };\n  const post = (name, route, ...stack) => {\n    route = normalizeRoute(name, route, ...stack); // eslint-disable-line no-param-reassign\n    router.post(name, route, ensureOIDC, ensureSessionSave, ...stack);\n  };\n  const del = (name, route, ...stack) => {\n    route = normalizeRoute(name, route, ...stack); // eslint-disable-line no-param-reassign\n    router.delete(name, route, ensureOIDC, ...stack);\n  };\n  const put = (name, route, ...stack) => {\n    route = normalizeRoute(name, route, ...stack); // eslint-disable-line no-param-reassign\n    router.put(name, route, ensureOIDC, ...stack);\n  };\n  const options = (name, route, ...stack) => {\n    route = normalizeRoute(name, route, ...stack); // eslint-disable-line no-param-reassign\n    router.options(name, route, ensureOIDC, ...stack);\n  };\n\n  const { routes, enableHttpPostMethods } = configuration;\n\n  for (const { handler, parameters, grantType } of Object.values(grants)) {\n    const { grantTypeHandlers } = instance(this);\n    if (configuration.grantTypes.has(grantType) && !grantTypeHandlers.has(grantType)) {\n      let dupes;\n      if (features.resourceIndicators.enabled) {\n        parameters.add('resource');\n        dupes = new Set(['resource']);\n      }\n      if (features.richAuthorizationRequests.enabled) {\n        parameters.add('authorization_details');\n      }\n      this.registerGrantType(grantType, handler, parameters, dupes);\n    }\n  }\n\n  ['query', 'fragment', 'form_post'].forEach((mode) => {\n    this.registerResponseMode(mode, responseModes[mode]);\n  });\n\n  if (features.webMessageResponseMode.enabled) {\n    this.registerResponseMode('web_message', responseModes.webMessage);\n  }\n\n  if (features.jwtResponseModes.enabled) {\n    this.registerResponseMode('jwt', responseModes.jwt);\n\n    ['query', 'fragment', 'form_post'].forEach((mode) => {\n      this.registerResponseMode(`${mode}.jwt`, responseModes.jwt);\n    });\n\n    if (features.webMessageResponseMode.enabled) {\n      this.registerResponseMode('web_message.jwt', responseModes.jwt);\n    }\n  }\n\n  const authorization = getAuthorization(this, 'authorization');\n  const authError = getAuthError(this);\n  get('authorization', routes.authorization, authError, ...authorization);\n  if (enableHttpPostMethods) {\n    post('authorization', routes.authorization, authError, ...authorization);\n  }\n\n  const resume = getAuthorization(this, 'resume');\n  get('resume', `${routes.authorization}/:uid`, authError, ...resume);\n\n  if (features.userinfo.enabled) {\n    get('userinfo', routes.userinfo, CORS.userinfo, error(this, 'userinfo.error'), ...userinfo);\n    post('userinfo', routes.userinfo, CORS.userinfo, error(this, 'userinfo.error'), ...userinfo);\n    options('cors.userinfo', routes.userinfo, CORS.userinfo, CORS.respond);\n  }\n\n  const token = getToken(this);\n  post('token', routes.token, error(this, 'grant.error'), CORS.clientWithDPoP, ...token);\n  options('cors.token', routes.token, CORS.clientWithDPoP, CORS.respond);\n\n  get('jwks', routes.jwks, CORS.open, error(this, 'jwks.error'), jwks);\n  options('cors.jwks', routes.jwks, CORS.open, CORS.respond);\n\n  const oauthDiscoveryRoute = '/.well-known/oauth-authorization-server';\n  get('discovery', oauthDiscoveryRoute, CORS.open, error(this, 'discovery.error'), discovery);\n  options('cors.discovery', oauthDiscoveryRoute, CORS.open, CORS.respond);\n\n  const openidDiscoveryRoute = '/.well-known/openid-configuration';\n  get('discovery', openidDiscoveryRoute, CORS.open, error(this, 'discovery.error'), discovery);\n  options('cors.discovery', openidDiscoveryRoute, CORS.open, CORS.respond);\n\n  if (features.attestClientAuth.enabled) {\n    post('challenge', routes.challenge, error(this, 'challenge.error'), CORS.challenge, ...challenge);\n    options('cors.challenge', routes.challenge, CORS.challenge, CORS.respond);\n  }\n\n  if (features.registration.enabled) {\n    const clientRoute = `${routes.registration}/:clientId`;\n\n    post('registration', routes.registration, error(this, 'registration_create.error'), ...registration.post);\n    get('client', clientRoute, error(this, 'registration_read.error'), ...registration.get);\n\n    if (features.registrationManagement.enabled) {\n      put('client_update', clientRoute, error(this, 'registration_update.error'), ...registration.put);\n      del('client_delete', clientRoute, error(this, 'registration_delete.error'), ...registration.del);\n    }\n  }\n\n  if (features.revocation.enabled) {\n    const revocation = getRevocation(this);\n    post('revocation', routes.revocation, error(this, 'revocation.error'), CORS.client, ...revocation);\n    options('cors.revocation', routes.revocation, CORS.client, CORS.respond);\n  }\n\n  if (features.introspection.enabled) {\n    const introspection = getIntrospection(this);\n    post('introspection', routes.introspection, error(this, 'introspection.error'), CORS.client, ...introspection);\n    options('cors.introspection', routes.introspection, CORS.client, CORS.respond);\n  }\n\n  post('end_session_confirm', `${routes.end_session}/confirm`, error(this, 'end_session_confirm.error'), ...endSession.confirm);\n\n  if (features.rpInitiatedLogout.enabled) {\n    if (enableHttpPostMethods) {\n      post('end_session', routes.end_session, error(this, 'end_session.error'), ...endSession.init);\n    }\n    get('end_session', routes.end_session, error(this, 'end_session.error'), ...endSession.init);\n    get('end_session_success', `${routes.end_session}/success`, error(this, 'end_session_success.error'), ...endSession.success);\n  }\n\n  if (features.deviceFlow.enabled) {\n    const deviceAuthorization = getAuthorization(this, 'device_authorization');\n    post('device_authorization', routes.device_authorization, error(this, 'device_authorization.error'), CORS.client, ...deviceAuthorization);\n    options('cors.device_authorization', routes.device_authorization, CORS.client, CORS.respond);\n\n    const postCodeVerification = getAuthorization(this, 'code_verification');\n    get('code_verification', routes.code_verification, error(this, 'code_verification.error'), ...codeVerification.get);\n    post('code_verification', routes.code_verification, error(this, 'code_verification.error'), ...codeVerification.post, ...postCodeVerification);\n\n    const deviceResume = getAuthorization(this, 'device_resume');\n    get('device_resume', `${routes.code_verification}/:uid`, error(this, 'device_resume.error'), ...deviceResume);\n  }\n\n  if (features.pushedAuthorizationRequests.enabled) {\n    const pushedAuthorizationRequests = getAuthorization(this, 'pushed_authorization_request');\n    post('pushed_authorization_request', routes.pushed_authorization_request, error(this, 'pushed_authorization_request.error'), CORS.clientWithDPoP, ...pushedAuthorizationRequests);\n    options('cors.pushed_authorization_request', routes.pushed_authorization_request, CORS.clientWithDPoP, CORS.respond);\n  }\n\n  if (features.ciba.enabled) {\n    const ciba = getAuthorization(this, 'backchannel_authentication');\n    post('backchannel_authentication', routes.backchannel_authentication, error(this, 'backchannel_authentication.error'), ...ciba);\n  }\n\n  if (features.devInteractions.enabled) {\n    const interaction = devInteractions(this);\n\n    get('interaction', '/interaction/:uid', error(this), ...interaction.render);\n    post('submit', '/interaction/:uid', error(this), ...interaction.submit);\n    get('abort', '/interaction/:uid/abort', error(this), ...interaction.abort);\n  }\n\n  return router.routes();\n}\n", "// src/utils/parameter-match.ts\nimport createHttpError from \"http-errors\";\nfunction createParameterValidationMiddleware(parameterName, pattern, options = {}) {\n  if (!(pattern instanceof RegExp)) {\n    throw new TypeError(\"pattern must be a RegExp instance\");\n  }\n  const matcher = new RegExp(pattern.source, pattern.flags);\n  const createDefaultHttpError = (message) => {\n    const httpError = createHttpError(options.status ?? 400, message);\n    if (options.expose !== void 0) {\n      httpError.expose = options.expose;\n    }\n    return httpError;\n  };\n  const validateValue = (value) => {\n    if (matcher.global || matcher.sticky) {\n      matcher.lastIndex = 0;\n    }\n    if (matcher.test(value)) {\n      return;\n    }\n    if (options.createError) {\n      throw options.createError(parameterName, value);\n    }\n    throw createDefaultHttpError(\n      options.message ?? `Invalid value for parameter \"${parameterName}\": \"${value}\"`\n    );\n  };\n  const middleware = async (argument1, argument2, argument3) => {\n    if (typeof argument1 !== \"string\") {\n      const context = argument1;\n      const next2 = argument2;\n      const parameterValue = context.params && parameterName in context.params ? context.params[parameterName] : void 0;\n      if (typeof parameterValue !== \"string\") {\n        throw createDefaultHttpError(\n          options.message ?? `Missing required parameter \"${parameterName}\" in route params`\n        );\n      }\n      validateValue(parameterValue);\n      return next2();\n    }\n    const value = argument1;\n    const next = argument3;\n    validateValue(value);\n    return next();\n  };\n  return middleware;\n}\n\n// src/router.ts\nimport compose from \"koa-compose\";\nimport HttpError from \"http-errors\";\n\n// src/layer.ts\nimport { parse as parseUrl, format as formatUrl } from \"url\";\n\n// src/utils/path-to-regexp-wrapper.ts\nimport { pathToRegexp, compile, parse } from \"path-to-regexp\";\nfunction compilePathToRegexp(path, options = {}) {\n  const normalizedOptions = { ...options };\n  if (\"strict\" in normalizedOptions && !(\"trailing\" in normalizedOptions)) {\n    normalizedOptions.trailing = normalizedOptions.strict !== true;\n    delete normalizedOptions.strict;\n  }\n  delete normalizedOptions.pathAsRegExp;\n  delete normalizedOptions.ignoreCaptures;\n  delete normalizedOptions.prefix;\n  const { regexp, keys } = pathToRegexp(path, normalizedOptions);\n  return { regexp, keys };\n}\nfunction compilePath(path, options = {}) {\n  return compile(path, options);\n}\nfunction parsePath(path, options) {\n  return parse(path, options);\n}\nfunction normalizeLayerOptionsToPathToRegexp(options = {}) {\n  const normalized = {\n    sensitive: options.sensitive,\n    end: options.end,\n    strict: options.strict,\n    trailing: options.trailing\n  };\n  if (\"strict\" in normalized && !(\"trailing\" in normalized)) {\n    normalized.trailing = normalized.strict !== true;\n    delete normalized.strict;\n  }\n  for (const key of Object.keys(normalized)) {\n    if (normalized[key] === void 0) {\n      delete normalized[key];\n    }\n  }\n  return normalized;\n}\n\n// src/utils/safe-decode-uri-components.ts\nfunction safeDecodeURIComponent(text) {\n  try {\n    return decodeURIComponent(text);\n  } catch {\n    return text;\n  }\n}\n\n// src/layer.ts\nvar Layer = class {\n  opts;\n  name;\n  methods;\n  paramNames;\n  stack;\n  path;\n  regexp;\n  /**\n   * Initialize a new routing Layer with given `method`, `path`, and `middleware`.\n   *\n   * @param path - Path string or regular expression\n   * @param methods - Array of HTTP verbs\n   * @param middleware - Layer callback/middleware or series of\n   * @param opts - Layer options\n   * @private\n   */\n  constructor(path, methods, middleware, options = {}) {\n    this.opts = options;\n    this.name = this.opts.name || void 0;\n    this.methods = this._normalizeHttpMethods(methods);\n    this.stack = this._normalizeAndValidateMiddleware(\n      middleware,\n      methods,\n      path\n    );\n    this.path = path;\n    this.paramNames = [];\n    this._configurePathMatching();\n  }\n  /**\n   * Normalize HTTP methods and add automatic HEAD support for GET\n   * @private\n   */\n  _normalizeHttpMethods(methods) {\n    const normalizedMethods = [];\n    for (const method of methods) {\n      const upperMethod = method.toUpperCase();\n      normalizedMethods.push(upperMethod);\n      if (upperMethod === \"GET\") {\n        normalizedMethods.unshift(\"HEAD\");\n      }\n    }\n    return normalizedMethods;\n  }\n  /**\n   * Normalize middleware to array and validate all are functions\n   * @private\n   */\n  _normalizeAndValidateMiddleware(middleware, methods, path) {\n    const middlewareArray = Array.isArray(middleware) ? middleware : [middleware];\n    for (const middlewareFunction of middlewareArray) {\n      const middlewareType = typeof middlewareFunction;\n      if (middlewareType !== \"function\") {\n        const routeIdentifier = this.opts.name || path;\n        throw new Error(\n          `${methods.toString()} \\`${routeIdentifier}\\`: \\`middleware\\` must be a function, not \\`${middlewareType}\\``\n        );\n      }\n    }\n    return middlewareArray;\n  }\n  /**\n   * Configure path matching regexp and parameters\n   * @private\n   */\n  _configurePathMatching() {\n    if (this.opts.pathAsRegExp === true) {\n      this.regexp = this.path instanceof RegExp ? this.path : new RegExp(this.path);\n    } else if (this.path) {\n      this._configurePathToRegexp();\n    }\n  }\n  /**\n   * Configure path-to-regexp for string paths\n   * @private\n   */\n  _configurePathToRegexp() {\n    const options = normalizeLayerOptionsToPathToRegexp(this.opts);\n    const { regexp, keys } = compilePathToRegexp(this.path, options);\n    this.regexp = regexp;\n    this.paramNames = keys;\n  }\n  /**\n   * Returns whether request `path` matches route.\n   *\n   * @param path - Request path\n   * @returns Whether path matches\n   * @private\n   */\n  match(path) {\n    return this.regexp.test(path);\n  }\n  /**\n   * Returns map of URL parameters for given `path` and `paramNames`.\n   *\n   * @param _path - Request path (not used, kept for API compatibility)\n   * @param captures - Captured values from regexp\n   * @param existingParams - Existing params to merge with\n   * @returns Parameter map\n   * @private\n   */\n  params(_path, captures, existingParameters = {}) {\n    const parameterValues = { ...existingParameters };\n    for (const [captureIndex, capturedValue] of captures.entries()) {\n      const parameterDefinition = this.paramNames[captureIndex];\n      if (parameterDefinition && capturedValue && capturedValue.length > 0) {\n        const parameterName = parameterDefinition.name;\n        parameterValues[parameterName] = safeDecodeURIComponent(capturedValue);\n      }\n    }\n    return parameterValues;\n  }\n  /**\n   * Returns array of regexp url path captures.\n   *\n   * @param path - Request path\n   * @returns Array of captured values\n   * @private\n   */\n  captures(path) {\n    if (this.opts.ignoreCaptures) {\n      return [];\n    }\n    const match = path.match(this.regexp);\n    return match ? match.slice(1) : [];\n  }\n  /**\n   * Generate URL for route using given `params`.\n   *\n   * @example\n   *\n   * ```javascript\n   * const route = new Layer('/users/:id', ['GET'], fn);\n   *\n   * route.url({ id: 123 }); // => \"/users/123\"\n   * ```\n   *\n   * @param args - URL parameters (various formats supported)\n   * @returns Generated URL\n   * @throws Error if route path is a RegExp (cannot generate URL from RegExp)\n   * @private\n   */\n  url(...arguments_) {\n    if (this.path instanceof RegExp) {\n      throw new TypeError(\n        \"Cannot generate URL for routes defined with RegExp paths. Use string paths with named parameters instead.\"\n      );\n    }\n    const { params, options } = this._parseUrlArguments(arguments_);\n    const cleanPath = this.path.replaceAll(\"(.*)\", \"\");\n    const pathCompiler = compilePath(cleanPath, {\n      encode: encodeURIComponent,\n      ...options\n    });\n    const parameterReplacements = this._buildParamReplacements(\n      params,\n      cleanPath\n    );\n    const generatedUrl = pathCompiler(parameterReplacements);\n    if (options && options.query) {\n      return this._addQueryString(generatedUrl, options.query);\n    }\n    return generatedUrl;\n  }\n  /**\n   * Parse url() arguments into params and options\n   * Supports multiple call signatures:\n   * - url({ id: 1 })\n   * - url(1, 2, 3)\n   * - url({ query: {...} })\n   * - url({ id: 1 }, { query: {...} })\n   * @private\n   */\n  _parseUrlArguments(allArguments) {\n    let parameters = allArguments[0] ?? {};\n    let options = allArguments[1];\n    if (typeof parameters !== \"object\" || parameters === null) {\n      const argumentsList = [...allArguments];\n      const lastArgument = argumentsList.at(-1);\n      if (typeof lastArgument === \"object\" && lastArgument !== null) {\n        options = lastArgument;\n        parameters = argumentsList.slice(0, -1);\n      } else {\n        parameters = argumentsList;\n      }\n    } else if (parameters && !options) {\n      const parameterKeys = Object.keys(parameters);\n      const isOnlyOptions = parameterKeys.length === 1 && parameterKeys[0] === \"query\";\n      if (isOnlyOptions) {\n        options = parameters;\n        parameters = {};\n      } else if (\"query\" in parameters && parameters.query) {\n        const { query, ...restParameters } = parameters;\n        options = { query };\n        parameters = restParameters;\n      }\n    }\n    return { params: parameters, options };\n  }\n  /**\n   * Build parameter replacements for URL generation\n   * @private\n   */\n  _buildParamReplacements(parameters, cleanPath) {\n    const { tokens } = parsePath(cleanPath);\n    const hasNamedParameters = tokens.some(\n      (token) => \"name\" in token && token.name\n    );\n    const parameterReplacements = {};\n    if (Array.isArray(parameters)) {\n      let parameterIndex = 0;\n      for (const token of tokens) {\n        if (\"name\" in token && token.name) {\n          parameterReplacements[token.name] = String(\n            parameters[parameterIndex++]\n          );\n        }\n      }\n    } else if (hasNamedParameters && typeof parameters === \"object\" && !(\"query\" in parameters)) {\n      for (const [parameterName, parameterValue] of Object.entries(\n        parameters\n      )) {\n        parameterReplacements[parameterName] = String(parameterValue);\n      }\n    }\n    return parameterReplacements;\n  }\n  /**\n   * Add query string to URL\n   * @private\n   */\n  _addQueryString(baseUrl, query) {\n    const parsed = parseUrl(baseUrl);\n    const urlObject = {\n      ...parsed,\n      query: parsed.query ?? void 0\n    };\n    if (typeof query === \"string\") {\n      urlObject.search = query;\n      urlObject.query = void 0;\n    } else {\n      urlObject.search = void 0;\n      urlObject.query = query;\n    }\n    return formatUrl(urlObject);\n  }\n  /**\n   * Run validations on route named parameters.\n   *\n   * @example\n   *\n   * ```javascript\n   * router\n   *   .param('user', function (id, ctx, next) {\n   *     ctx.user = users[id];\n   *     if (!ctx.user) return ctx.status = 404;\n   *     next();\n   *   })\n   *   .get('/users/:user', function (ctx, next) {\n   *     ctx.body = ctx.user;\n   *   });\n   * ```\n   *\n   * @param paramName - Parameter name\n   * @param paramHandler - Middleware function\n   * @returns This layer instance\n   * @private\n   */\n  param(parameterName, parameterHandler) {\n    const middlewareStack = this.stack;\n    const routeParameterNames = this.paramNames;\n    const parameterMiddleware = this._createParamMiddleware(\n      parameterName,\n      parameterHandler\n    );\n    const parameterNamesList = routeParameterNames.map(\n      (parameterDefinition) => parameterDefinition.name\n    );\n    const parameterPosition = parameterNamesList.indexOf(parameterName);\n    if (parameterPosition !== -1) {\n      this._insertParamMiddleware(\n        middlewareStack,\n        parameterMiddleware,\n        parameterNamesList,\n        parameterPosition\n      );\n    }\n    return this;\n  }\n  /**\n   * Create param middleware with deduplication tracking\n   * @private\n   */\n  _createParamMiddleware(parameterName, parameterHandler) {\n    const middleware = ((context, next) => {\n      if (!context._matchedParams) {\n        context._matchedParams = /* @__PURE__ */ new WeakMap();\n      }\n      if (context._matchedParams.has(parameterHandler)) {\n        return next();\n      }\n      context._matchedParams.set(parameterHandler, true);\n      return parameterHandler(context.params[parameterName], context, next);\n    });\n    middleware.param = parameterName;\n    middleware._originalFn = parameterHandler;\n    return middleware;\n  }\n  /**\n   * Insert param middleware at the correct position in the stack\n   * @private\n   */\n  _insertParamMiddleware(middlewareStack, parameterMiddleware, parameterNamesList, currentParameterPosition) {\n    let inserted = false;\n    for (let stackIndex = 0; stackIndex < middlewareStack.length; stackIndex++) {\n      const existingMiddleware = middlewareStack[stackIndex];\n      if (!existingMiddleware.param) {\n        middlewareStack.splice(stackIndex, 0, parameterMiddleware);\n        inserted = true;\n        break;\n      }\n      const existingParameterPosition = parameterNamesList.indexOf(\n        existingMiddleware.param\n      );\n      if (existingParameterPosition > currentParameterPosition) {\n        middlewareStack.splice(stackIndex, 0, parameterMiddleware);\n        inserted = true;\n        break;\n      }\n    }\n    if (!inserted) {\n      middlewareStack.push(parameterMiddleware);\n    }\n  }\n  /**\n   * Prefix route path.\n   *\n   * @param prefixPath - Prefix to prepend\n   * @returns This layer instance\n   * @private\n   */\n  setPrefix(prefixPath) {\n    if (!this.path) {\n      return this;\n    }\n    if (this.path instanceof RegExp) {\n      return this;\n    }\n    this.path = this._applyPrefix(prefixPath);\n    this._reconfigurePathMatching(prefixPath);\n    return this;\n  }\n  /**\n   * Apply prefix to the current path\n   * @private\n   */\n  _applyPrefix(prefixPath) {\n    const isRootPath = this.path === \"/\";\n    const isStrictMode = this.opts.strict === true;\n    const prefixHasParameters = prefixPath.includes(\":\");\n    const pathIsRawRegex = this.opts.pathAsRegExp === true && typeof this.path === \"string\";\n    if (prefixHasParameters && pathIsRawRegex) {\n      const currentPath = this.path;\n      if (currentPath === String.raw`(?:\\/|$)` || currentPath === String.raw`(?:\\\\\\/|$)`) {\n        this.path = \"{/*rest}\";\n        this.opts.pathAsRegExp = false;\n      }\n    }\n    if (isRootPath && !isStrictMode) {\n      return prefixPath;\n    }\n    return `${prefixPath}${this.path}`;\n  }\n  /**\n   * Reconfigure path matching after prefix is applied\n   * @private\n   */\n  _reconfigurePathMatching(prefixPath) {\n    const treatAsRegExp = this.opts.pathAsRegExp === true;\n    const prefixHasParameters = prefixPath && prefixPath.includes(\":\");\n    if (prefixHasParameters && treatAsRegExp) {\n      const options = normalizeLayerOptionsToPathToRegexp(this.opts);\n      const { regexp, keys } = compilePathToRegexp(\n        this.path,\n        options\n      );\n      this.regexp = regexp;\n      this.paramNames = keys;\n      this.opts.pathAsRegExp = false;\n    } else if (treatAsRegExp) {\n      const pathString = this.path;\n      const anchoredPattern = pathString.startsWith(\"^\") ? pathString : `^${pathString}`;\n      this.regexp = this.path instanceof RegExp ? this.path : new RegExp(anchoredPattern);\n    } else {\n      const options = normalizeLayerOptionsToPathToRegexp(this.opts);\n      const { regexp, keys } = compilePathToRegexp(\n        this.path,\n        options\n      );\n      this.regexp = regexp;\n      this.paramNames = keys;\n    }\n  }\n};\n\n// src/utils/http-methods.ts\nimport http from \"http\";\nfunction getAllHttpMethods() {\n  return http.METHODS.map((method) => method.toLowerCase());\n}\nvar COMMON_HTTP_METHODS = [\n  \"get\",\n  \"post\",\n  \"put\",\n  \"patch\",\n  \"delete\",\n  \"del\",\n  \"head\",\n  \"options\"\n];\n\n// src/utils/parameter-helpers.ts\nfunction normalizeParameterMiddleware(parameterMiddleware) {\n  if (!parameterMiddleware) {\n    return [];\n  }\n  if (Array.isArray(parameterMiddleware)) {\n    return parameterMiddleware;\n  }\n  return [parameterMiddleware];\n}\nfunction applyParameterMiddlewareToRoute(route, parameterName, parameterMiddleware) {\n  const middlewareList = normalizeParameterMiddleware(\n    parameterMiddleware\n  );\n  for (const middleware of middlewareList) {\n    route.param(parameterName, middleware);\n  }\n}\nfunction applyAllParameterMiddleware(route, parametersObject) {\n  const parameterNames = Object.keys(parametersObject);\n  for (const parameterName of parameterNames) {\n    const parameterMiddleware = parametersObject[parameterName];\n    applyParameterMiddlewareToRoute(\n      route,\n      parameterName,\n      parameterMiddleware\n    );\n  }\n}\n\n// src/utils/path-helpers.ts\nfunction hasPathParameters(path, options = {}) {\n  if (!path) {\n    return false;\n  }\n  const { keys } = compilePathToRegexp(path, options);\n  return keys.length > 0;\n}\nfunction determineMiddlewarePath(explicitPath, hasPrefixParameters) {\n  if (explicitPath !== void 0) {\n    if (typeof explicitPath === \"string\") {\n      if (explicitPath === \"\") {\n        return {\n          path: \"{/*rest}\",\n          pathAsRegExp: false\n        };\n      }\n      if (explicitPath === \"/\") {\n        return {\n          path: \"/\",\n          pathAsRegExp: false\n        };\n      }\n      return {\n        path: explicitPath,\n        pathAsRegExp: false\n      };\n    }\n    return {\n      path: explicitPath,\n      pathAsRegExp: true\n    };\n  }\n  if (hasPrefixParameters) {\n    return {\n      path: \"{/*rest}\",\n      pathAsRegExp: false\n    };\n  }\n  return {\n    path: String.raw`(?:\\/|$)`,\n    pathAsRegExp: true\n  };\n}\n\n// src/utils/debug.ts\nimport debugModule from \"debug\";\nvar debug = debugModule(\"koa-router\");\n\n// src/router.ts\nvar httpMethods = getAllHttpMethods();\nvar RouterImplementation = class {\n  opts;\n  methods;\n  exclusive;\n  params;\n  stack;\n  host;\n  /**\n   * Create a new router.\n   *\n   * @example\n   *\n   * Basic usage:\n   *\n   * ```javascript\n   * const Koa = require('koa');\n   * const Router = require('@koa/router');\n   *\n   * const app = new Koa();\n   * const router = new Router();\n   *\n   * router.get('/', (ctx, next) => {\n   *   // ctx.router available\n   * });\n   *\n   * app\n   *   .use(router.routes())\n   *   .use(router.allowedMethods());\n   * ```\n   *\n   * @alias module:koa-router\n   * @param opts - Router options\n   * @constructor\n   */\n  constructor(options = {}) {\n    this.opts = options;\n    this.methods = this.opts.methods || [\n      \"HEAD\",\n      \"OPTIONS\",\n      \"GET\",\n      \"PUT\",\n      \"PATCH\",\n      \"POST\",\n      \"DELETE\"\n    ];\n    this.exclusive = Boolean(this.opts.exclusive);\n    this.params = {};\n    this.stack = [];\n    this.host = this.opts.host;\n  }\n  /**\n   * Generate URL from url pattern and given `params`.\n   *\n   * @example\n   *\n   * ```javascript\n   * const url = Router.url('/users/:id', {id: 1});\n   * // => \"/users/1\"\n   * ```\n   *\n   * @param path - URL pattern\n   * @param args - URL parameters\n   * @returns Generated URL\n   */\n  static url(path, ...arguments_) {\n    const temporaryLayer = new Layer(path, [], () => {\n    });\n    return temporaryLayer.url(...arguments_);\n  }\n  use(...middleware) {\n    let explicitPath;\n    if (this._isPathArray(middleware[0])) {\n      return this._useWithPathArray(middleware);\n    }\n    const hasExplicitPath = this._hasExplicitPath(middleware[0]);\n    if (hasExplicitPath) {\n      explicitPath = middleware.shift();\n    }\n    if (middleware.length === 0) {\n      throw new Error(\n        \"You must provide at least one middleware function to router.use()\"\n      );\n    }\n    for (const currentMiddleware of middleware) {\n      if (this._isNestedRouter(currentMiddleware)) {\n        this._mountNestedRouter(\n          currentMiddleware,\n          explicitPath\n        );\n      } else {\n        this._registerMiddleware(\n          currentMiddleware,\n          explicitPath,\n          hasExplicitPath\n        );\n      }\n    }\n    return this;\n  }\n  /**\n   * Check if first argument is an array of paths (all elements must be strings)\n   * @private\n   */\n  _isPathArray(firstArgument) {\n    return Array.isArray(firstArgument) && firstArgument.length > 0 && firstArgument.every((item) => typeof item === \"string\");\n  }\n  /**\n   * Check if first argument is an explicit path (string or RegExp)\n   * Empty string counts as explicit path to enable param capture\n   * @private\n   */\n  _hasExplicitPath(firstArgument) {\n    return typeof firstArgument === \"string\" || firstArgument instanceof RegExp;\n  }\n  /**\n   * Check if middleware contains a nested router\n   * @private\n   */\n  _isNestedRouter(middleware) {\n    return typeof middleware === \"function\" && \"router\" in middleware && middleware.router !== void 0;\n  }\n  /**\n   * Apply middleware to multiple paths\n   * @private\n   */\n  _useWithPathArray(middleware) {\n    const pathArray = middleware[0];\n    const remainingMiddleware = middleware.slice(1);\n    for (const singlePath of pathArray) {\n      Reflect.apply(this.use, this, [singlePath, ...remainingMiddleware]);\n    }\n    return this;\n  }\n  /**\n   * Mount a nested router\n   * @private\n   */\n  _mountNestedRouter(middlewareWithRouter, mountPath) {\n    const nestedRouter = middlewareWithRouter.router;\n    const clonedRouter = this._cloneRouter(nestedRouter);\n    const mountPathHasParameters = mountPath && typeof mountPath === \"string\" && hasPathParameters(mountPath, this.opts);\n    for (let routeIndex = 0; routeIndex < clonedRouter.stack.length; routeIndex++) {\n      const nestedLayer = clonedRouter.stack[routeIndex];\n      const clonedLayer = this._cloneLayer(nestedLayer);\n      if (mountPath && typeof mountPath === \"string\") {\n        clonedLayer.setPrefix(mountPath);\n      }\n      if (this.opts.prefix) {\n        clonedLayer.setPrefix(this.opts.prefix);\n      }\n      if (clonedLayer.methods.length === 0 && mountPathHasParameters) {\n        clonedLayer.opts.ignoreCaptures = false;\n      }\n      this.stack.push(clonedLayer);\n      clonedRouter.stack[routeIndex] = clonedLayer;\n    }\n    if (this.params) {\n      this._applyParamMiddlewareToRouter(clonedRouter);\n    }\n  }\n  /**\n   * Clone a router instance\n   * @private\n   */\n  _cloneRouter(sourceRouter) {\n    return Object.assign(\n      Object.create(Object.getPrototypeOf(sourceRouter)),\n      sourceRouter,\n      {\n        stack: [...sourceRouter.stack]\n      }\n    );\n  }\n  /**\n   * Clone a layer instance (deep clone to avoid shared references)\n   * @private\n   */\n  _cloneLayer(sourceLayer) {\n    const cloned = Object.assign(\n      Object.create(Object.getPrototypeOf(sourceLayer)),\n      sourceLayer,\n      {\n        // Deep clone arrays and objects to avoid shared references\n        stack: [...sourceLayer.stack],\n        methods: [...sourceLayer.methods],\n        paramNames: [...sourceLayer.paramNames],\n        opts: { ...sourceLayer.opts }\n      }\n    );\n    return cloned;\n  }\n  /**\n   * Apply this router's param middleware to a nested router\n   * @private\n   */\n  _applyParamMiddlewareToRouter(targetRouter) {\n    const parameterNames = Object.keys(this.params);\n    for (const parameterName of parameterNames) {\n      const parameterMiddleware = this.params[parameterName];\n      applyParameterMiddlewareToRoute(\n        targetRouter,\n        parameterName,\n        parameterMiddleware\n      );\n    }\n  }\n  /**\n   * Register regular middleware (not nested router)\n   * @private\n   */\n  _registerMiddleware(middleware, explicitPath, hasExplicitPath) {\n    const prefixHasParameters = hasPathParameters(\n      this.opts.prefix || \"\",\n      this.opts\n    );\n    const effectiveExplicitPath = (() => {\n      if (explicitPath !== void 0) return explicitPath;\n      if (prefixHasParameters) return \"\";\n      return;\n    })();\n    const effectiveHasExplicitPath = hasExplicitPath || explicitPath === void 0 && prefixHasParameters;\n    const { path: middlewarePath, pathAsRegExp } = determineMiddlewarePath(\n      effectiveExplicitPath,\n      prefixHasParameters\n    );\n    let finalPath = middlewarePath;\n    let usePathToRegexp = pathAsRegExp;\n    const isRootPath = effectiveHasExplicitPath && middlewarePath === \"/\";\n    if (effectiveHasExplicitPath && typeof middlewarePath === \"string\") {\n      finalPath = middlewarePath;\n      usePathToRegexp = false;\n    }\n    this.register(finalPath, [], middleware, {\n      end: isRootPath,\n      ignoreCaptures: !effectiveHasExplicitPath && !prefixHasParameters,\n      pathAsRegExp: usePathToRegexp\n    });\n  }\n  /**\n   * Set the path prefix for a Router instance that was already initialized.\n   * Note: Calling this method multiple times will replace the prefix, not stack them.\n   *\n   * @example\n   *\n   * ```javascript\n   * router.prefix('/things/:thing_id')\n   * ```\n   *\n   * @param prefixPath - Prefix string\n   * @returns This router instance\n   */\n  prefix(prefixPath) {\n    const normalizedPrefix = prefixPath.replace(/\\/$/, \"\");\n    const previousPrefix = this.opts.prefix || \"\";\n    this.opts.prefix = normalizedPrefix;\n    for (const route of this.stack) {\n      if (previousPrefix && typeof route.path === \"string\" && route.path.startsWith(previousPrefix)) {\n        route.path = route.path.slice(previousPrefix.length) || \"/\";\n      }\n      route.setPrefix(normalizedPrefix);\n    }\n    return this;\n  }\n  /**\n   * Returns router middleware which dispatches a route matching the request.\n   *\n   * @returns Router middleware\n   */\n  middleware() {\n    const dispatchMiddleware = function(context, next) {\n      debug(\"%s %s\", context.method, context.path);\n      if (!this.matchHost(context.host)) {\n        return next();\n      }\n      const requestPath = this._getRequestPath(context);\n      const matchResult = this.match(requestPath, context.method);\n      this._storeMatchedRoutes(context, matchResult);\n      context.router = this;\n      if (!matchResult.route) {\n        return next();\n      }\n      const matchedLayers = matchResult.pathAndMethod;\n      this._setMatchedRouteInfo(context, matchedLayers);\n      const middlewareChain = this._buildMiddlewareChain(\n        matchedLayers,\n        requestPath\n      );\n      return compose(middlewareChain)(\n        context,\n        next\n      );\n    }.bind(this);\n    dispatchMiddleware.router = this;\n    return dispatchMiddleware;\n  }\n  /**\n   * Get the request path to use for routing\n   * @private\n   */\n  _getRequestPath(context) {\n    const context_ = context;\n    return this.opts.routerPath || context_.newRouterPath || context_.path || context_.routerPath || \"\";\n  }\n  /**\n   * Store matched routes on context\n   * @private\n   */\n  _storeMatchedRoutes(context, matchResult) {\n    const context_ = context;\n    if (context_.matched) {\n      context_.matched.push(...matchResult.path);\n    } else {\n      context_.matched = matchResult.path;\n    }\n  }\n  /**\n   * Set matched route information on context\n   * @private\n   */\n  _setMatchedRouteInfo(context, matchedLayers) {\n    const context_ = context;\n    const routeLayer = matchedLayers.toReversed().find((layer) => layer.methods.length > 0);\n    if (routeLayer) {\n      context_._matchedRoute = routeLayer.path;\n      if (routeLayer.name) {\n        context_._matchedRouteName = routeLayer.name;\n      }\n    }\n  }\n  /**\n   * Build middleware chain from matched layers\n   * @private\n   */\n  _buildMiddlewareChain(matchedLayers, requestPath) {\n    const layersToExecute = this.opts.exclusive ? [matchedLayers.at(-1)].filter(\n      (layer) => layer !== void 0\n    ) : matchedLayers;\n    const middlewareChain = [];\n    for (const layer of layersToExecute) {\n      middlewareChain.push(\n        (context, next) => {\n          const routerContext = context;\n          routerContext.captures = layer.captures(requestPath);\n          routerContext.request.params = layer.params(\n            requestPath,\n            routerContext.captures || [],\n            routerContext.params\n          );\n          routerContext.params = routerContext.request.params;\n          routerContext.routerPath = layer.path;\n          routerContext.routerName = layer.name || void 0;\n          routerContext._matchedRoute = layer.path;\n          if (layer.name) {\n            routerContext._matchedRouteName = layer.name;\n          }\n          return next();\n        },\n        ...layer.stack\n      );\n    }\n    return middlewareChain;\n  }\n  routes() {\n    return this.middleware();\n  }\n  /**\n   * Returns separate middleware for responding to `OPTIONS` requests with\n   * an `Allow` header containing the allowed methods, as well as responding\n   * with `405 Method Not Allowed` and `501 Not Implemented` as appropriate.\n   *\n   * @example\n   *\n   * ```javascript\n   * const Koa = require('koa');\n   * const Router = require('@koa/router');\n   *\n   * const app = new Koa();\n   * const router = new Router();\n   *\n   * app.use(router.routes());\n   * app.use(router.allowedMethods());\n   * ```\n   *\n   * **Example with [Boom](https://github.com/hapijs/boom)**\n   *\n   * ```javascript\n   * const Koa = require('koa');\n   * const Router = require('@koa/router');\n   * const Boom = require('boom');\n   *\n   * const app = new Koa();\n   * const router = new Router();\n   *\n   * app.use(router.routes());\n   * app.use(router.allowedMethods({\n   *   throw: true,\n   *   notImplemented: () => new Boom.notImplemented(),\n   *   methodNotAllowed: () => new Boom.methodNotAllowed()\n   * }));\n   * ```\n   *\n   * @param options - Options object\n   * @returns Middleware function\n   */\n  allowedMethods(options = {}) {\n    const implementedMethods = this.methods;\n    return (context, next) => {\n      const routerContext = context;\n      return next().then(() => {\n        if (!this._shouldProcessAllowedMethods(routerContext)) {\n          return;\n        }\n        const matchedRoutes = routerContext.matched || [];\n        const allowedMethods = this._collectAllowedMethods(matchedRoutes);\n        const allowedMethodsList = Object.keys(allowedMethods);\n        const requestMethod = context.method.toUpperCase();\n        if (!implementedMethods.includes(requestMethod)) {\n          this._handleNotImplemented(\n            routerContext,\n            allowedMethodsList,\n            options\n          );\n          return;\n        }\n        if (requestMethod === \"OPTIONS\" && allowedMethodsList.length > 0) {\n          this._handleOptionsRequest(routerContext, allowedMethodsList);\n          return;\n        }\n        if (allowedMethodsList.length > 0 && !allowedMethods[requestMethod]) {\n          this._handleMethodNotAllowed(\n            routerContext,\n            allowedMethodsList,\n            options\n          );\n        }\n      });\n    };\n  }\n  /**\n   * Check if we should process allowed methods\n   * @private\n   */\n  _shouldProcessAllowedMethods(context) {\n    return !!(context.matched && (!context.status || context.status === 404));\n  }\n  /**\n   * Collect all allowed methods from matched routes\n   * @private\n   */\n  _collectAllowedMethods(matchedRoutes) {\n    const allowedMethods = {};\n    for (const route of matchedRoutes) {\n      for (const method of route.methods) {\n        allowedMethods[method] = method;\n      }\n    }\n    return allowedMethods;\n  }\n  /**\n   * Handle 501 Not Implemented response\n   * @private\n   */\n  _handleNotImplemented(context, allowedMethodsList, options) {\n    if (options.throw) {\n      const error = typeof options.notImplemented === \"function\" ? options.notImplemented() : new HttpError.NotImplemented();\n      throw error;\n    }\n    context.status = 501;\n    context.set(\"Allow\", allowedMethodsList.join(\", \"));\n  }\n  /**\n   * Handle OPTIONS request\n   * @private\n   */\n  _handleOptionsRequest(context, allowedMethodsList) {\n    context.status = 200;\n    context.body = \"\";\n    context.set(\"Allow\", allowedMethodsList.join(\", \"));\n  }\n  /**\n   * Handle 405 Method Not Allowed response\n   * @private\n   */\n  _handleMethodNotAllowed(context, allowedMethodsList, options) {\n    if (options.throw) {\n      const error = typeof options.methodNotAllowed === \"function\" ? options.methodNotAllowed() : new HttpError.MethodNotAllowed();\n      throw error;\n    }\n    context.status = 405;\n    context.set(\"Allow\", allowedMethodsList.join(\", \"));\n  }\n  all(...arguments_) {\n    let name;\n    let path;\n    let middleware;\n    if (arguments_.length >= 2 && (typeof arguments_[1] === \"string\" || arguments_[1] instanceof RegExp)) {\n      name = arguments_[0];\n      path = arguments_[1];\n      middleware = arguments_.slice(2);\n    } else {\n      name = void 0;\n      path = arguments_[0];\n      middleware = arguments_.slice(1);\n    }\n    if (typeof path !== \"string\" && !(path instanceof RegExp) && (!Array.isArray(path) || path.length === 0))\n      throw new Error(\"You have to provide a path when adding an all handler\");\n    const routeOptions = {\n      name,\n      pathAsRegExp: path instanceof RegExp\n    };\n    this.register(path, httpMethods, middleware, {\n      ...this.opts,\n      ...routeOptions\n    });\n    return this;\n  }\n  /**\n   * Redirect `source` to `destination` URL with optional 30x status `code`.\n   *\n   * Both `source` and `destination` can be route names.\n   *\n   * ```javascript\n   * router.redirect('/login', 'sign-in');\n   * ```\n   *\n   * This is equivalent to:\n   *\n   * ```javascript\n   * router.all('/login', ctx => {\n   *   ctx.redirect('/sign-in');\n   *   ctx.status = 301;\n   * });\n   * ```\n   *\n   * @param source - URL or route name\n   * @param destination - URL or route name\n   * @param code - HTTP status code (default: 301)\n   * @returns This router instance\n   */\n  redirect(source, destination, code) {\n    let resolvedSource = source;\n    let resolvedDestination = destination;\n    if (typeof source === \"symbol\" || typeof source === \"string\" && source[0] !== \"/\") {\n      const sourceUrl = this.url(source);\n      if (sourceUrl instanceof Error) throw sourceUrl;\n      resolvedSource = sourceUrl;\n    }\n    if (typeof destination === \"symbol\" || typeof destination === \"string\" && destination[0] !== \"/\" && !destination.includes(\"://\")) {\n      const destinationUrl = this.url(destination);\n      if (destinationUrl instanceof Error) throw destinationUrl;\n      resolvedDestination = destinationUrl;\n    }\n    const result = this.all(\n      resolvedSource,\n      (context) => {\n        context.redirect(resolvedDestination);\n        context.status = code || 301;\n      }\n    );\n    return result;\n  }\n  /**\n   * Create and register a route.\n   *\n   * @param path - Path string\n   * @param methods - Array of HTTP verbs\n   * @param middleware - Middleware functions\n   * @param additionalOptions - Additional options\n   * @returns Created layer\n   * @private\n   */\n  register(path, methods, middleware, additionalOptions = {}) {\n    const mergedOptions = { ...this.opts, ...additionalOptions };\n    if (Array.isArray(path)) {\n      return this._registerMultiplePaths(\n        path,\n        methods,\n        middleware,\n        mergedOptions\n      );\n    }\n    const routeLayer = this._createRouteLayer(\n      path,\n      methods,\n      middleware,\n      mergedOptions\n    );\n    if (this.opts.prefix) {\n      routeLayer.setPrefix(this.opts.prefix);\n    }\n    applyAllParameterMiddleware(routeLayer, this.params);\n    this.stack.push(routeLayer);\n    debug(\"defined route %s %s\", routeLayer.methods, routeLayer.path);\n    return routeLayer;\n  }\n  /**\n   * Register multiple paths with the same configuration\n   * @private\n   */\n  _registerMultiplePaths(pathArray, methods, middleware, options) {\n    for (const singlePath of pathArray) {\n      this.register.call(this, singlePath, methods, middleware, options);\n    }\n    return this;\n  }\n  /**\n   * Create a route layer with given configuration\n   * @private\n   */\n  _createRouteLayer(path, methods, middleware, options) {\n    return new Layer(path, methods, middleware, {\n      end: options.end === false ? options.end : true,\n      name: options.name,\n      sensitive: options.sensitive || false,\n      strict: options.strict || false,\n      prefix: options.prefix || \"\",\n      ignoreCaptures: options.ignoreCaptures,\n      pathAsRegExp: options.pathAsRegExp\n    });\n  }\n  /**\n   * Lookup route with given `name`.\n   *\n   * @param name - Route name\n   * @returns Matched layer or false\n   */\n  route(name) {\n    const matchingRoute = this.stack.find((route) => route.name === name);\n    return matchingRoute || false;\n  }\n  /**\n   * Generate URL for route. Takes a route name and map of named `params`.\n   *\n   * @example\n   *\n   * ```javascript\n   * router.get('user', '/users/:id', (ctx, next) => {\n   *   // ...\n   * });\n   *\n   * router.url('user', 3);\n   * // => \"/users/3\"\n   *\n   * router.url('user', { id: 3 });\n   * // => \"/users/3\"\n   *\n   * router.use((ctx, next) => {\n   *   // redirect to named route\n   *   ctx.redirect(ctx.router.url('sign-in'));\n   * })\n   *\n   * router.url('user', { id: 3 }, { query: { limit: 1 } });\n   * // => \"/users/3?limit=1\"\n   *\n   * router.url('user', { id: 3 }, { query: \"limit=1\" });\n   * // => \"/users/3?limit=1\"\n   * ```\n   *\n   * @param name - Route name\n   * @param args - URL parameters\n   * @returns Generated URL or Error\n   */\n  url(name, ...arguments_) {\n    const route = this.route(name);\n    if (route) return route.url(...arguments_);\n    return new Error(`No route found for name: ${String(name)}`);\n  }\n  /**\n   * Match given `path` and return corresponding routes.\n   *\n   * @param path - Request path\n   * @param method - HTTP method\n   * @returns Match result with matched layers\n   * @private\n   */\n  match(path, method) {\n    const matchResult = {\n      path: [],\n      pathAndMethod: [],\n      route: false\n    };\n    const normalizedMethod = method.toUpperCase();\n    for (const layer of this.stack) {\n      debug(\"test %s %s\", layer.path, layer.regexp);\n      if (layer.match(path)) {\n        matchResult.path.push(layer);\n        const isMiddleware = layer.methods.length === 0;\n        const matchesMethod = layer.methods.includes(normalizedMethod);\n        if (isMiddleware || matchesMethod) {\n          matchResult.pathAndMethod.push(layer);\n          if (layer.methods.length > 0) {\n            matchResult.route = true;\n          }\n        }\n      }\n    }\n    return matchResult;\n  }\n  /**\n   * Match given `input` to allowed host\n   * @param input - Host to check\n   * @returns Whether host matches\n   */\n  matchHost(input) {\n    const { host } = this;\n    if (!host) {\n      return true;\n    }\n    if (!input) {\n      return false;\n    }\n    if (typeof host === \"string\") {\n      return input === host;\n    }\n    if (Array.isArray(host)) {\n      return host.includes(input);\n    }\n    if (host instanceof RegExp) {\n      return host.test(input);\n    }\n    return false;\n  }\n  /**\n   * Run middleware for named route parameters. Useful for auto-loading or\n   * validation.\n   *\n   * @example\n   *\n   * ```javascript\n   * router\n   *   .param('user', (id, ctx, next) => {\n   *     ctx.user = users[id];\n   *     if (!ctx.user) return ctx.status = 404;\n   *     return next();\n   *   })\n   *   .get('/users/:user', ctx => {\n   *     ctx.body = ctx.user;\n   *   })\n   *   .get('/users/:user/friends', ctx => {\n   *     return ctx.user.getFriends().then(function(friends) {\n   *       ctx.body = friends;\n   *     });\n   *   })\n   *   // /users/3 => {\"id\": 3, \"name\": \"Alex\"}\n   *   // /users/3/friends => [{\"id\": 4, \"name\": \"TJ\"}]\n   * ```\n   *\n   * @param param - Parameter name\n   * @param middleware - Parameter middleware\n   * @returns This router instance\n   */\n  param(parameter, middleware) {\n    if (!this.params[parameter]) {\n      this.params[parameter] = [];\n    }\n    if (!Array.isArray(this.params[parameter])) {\n      this.params[parameter] = [\n        this.params[parameter]\n      ];\n    }\n    this.params[parameter].push(middleware);\n    for (const route of this.stack) {\n      route.param(parameter, middleware);\n    }\n    return this;\n  }\n  /**\n   * Helper method for registering HTTP verb routes\n   * @internal - Used by dynamically added HTTP methods\n   */\n  _registerMethod(method, ...arguments_) {\n    let name;\n    let path;\n    let middleware;\n    if (arguments_.length >= 2 && (typeof arguments_[1] === \"string\" || arguments_[1] instanceof RegExp)) {\n      name = arguments_[0];\n      path = arguments_[1];\n      middleware = arguments_.slice(2);\n    } else {\n      name = void 0;\n      path = arguments_[0];\n      middleware = arguments_.slice(1);\n    }\n    if (typeof path !== \"string\" && !(path instanceof RegExp) && (!Array.isArray(path) || path.length === 0))\n      throw new Error(\n        `You have to provide a path when adding a ${method} handler`\n      );\n    const options = {\n      name,\n      pathAsRegExp: path instanceof RegExp\n    };\n    this.register(path, [method], middleware, {\n      ...this.opts,\n      ...options\n    });\n    return this;\n  }\n  get(...arguments_) {\n    return this._registerMethod(\"get\", ...arguments_);\n  }\n  post(...arguments_) {\n    return this._registerMethod(\"post\", ...arguments_);\n  }\n  put(...arguments_) {\n    return this._registerMethod(\"put\", ...arguments_);\n  }\n  patch(...arguments_) {\n    return this._registerMethod(\"patch\", ...arguments_);\n  }\n  delete(...arguments_) {\n    return this._registerMethod(\"delete\", ...arguments_);\n  }\n  del(...arguments_) {\n    return this.delete.apply(\n      this,\n      arguments_\n    );\n  }\n  head(...arguments_) {\n    return this._registerMethod(\"head\", ...arguments_);\n  }\n  options(...arguments_) {\n    return this._registerMethod(\"options\", ...arguments_);\n  }\n};\nvar Router = RouterImplementation;\nvar router_default = Router;\nfor (const httpMethod of httpMethods) {\n  const isAlreadyDefined = COMMON_HTTP_METHODS.includes(httpMethod) || httpMethod in RouterImplementation.prototype;\n  if (!isAlreadyDefined) {\n    Object.defineProperty(RouterImplementation.prototype, httpMethod, {\n      value: function(...arguments_) {\n        return this._registerMethod(httpMethod, ...arguments_);\n      },\n      writable: true,\n      configurable: true,\n      enumerable: false\n    });\n  }\n}\nexport {\n  Router,\n  createParameterValidationMiddleware,\n  router_default as default\n};\n", "import { strict as assert } from 'node:assert';\nimport * as querystring from 'node:querystring';\nimport { inspect } from 'node:util';\n\nimport * as attention from '../helpers/attention.js';\nimport { urlencoded as parseBody } from '../shared/selective_body.js';\nimport * as views from '../views/index.js';\nimport instance from '../helpers/weak_cache.js';\nimport noCache from '../shared/no_cache.js';\nimport { defaults } from '../helpers/defaults.js';\n\nconst { interactions: { url: defaultInteractionUri } } = defaults;\nconst keys = new Set();\nconst dbg = (obj) => querystring.stringify(Object.entries(obj).reduce((acc, [key, value]) => {\n  keys.add(key);\n  acc[key] = inspect(value, { depth: null });\n  return acc;\n}, {}), '<br/>', ': ', {\n  encodeURIComponent(value) { return keys.has(value) ? `<strong>${value}</strong>` : value; },\n});\n\nexport default function devInteractions(provider) {\n  /* eslint-disable no-multi-str */\n  attention.warn('a quick start development-only feature devInteractions is enabled, \\\nyou are expected to disable these interactions and provide your own');\n\n  const configuration = instance(provider).configuration.interactions;\n\n  if (configuration.url !== defaultInteractionUri) {\n    attention.warn('you\\'ve configured your own interactions.url but devInteractions are still enabled, \\\nyour configuration is not in effect');\n  }\n  /* eslint-enable */\n\n  configuration.url = (ctx, interaction) => new URL(ctx.oidc.urlFor('interaction', { uid: interaction.uid })).pathname;\n\n  return {\n    render: [\n      noCache,\n      async function interactionRender(ctx) {\n        const {\n          uid, prompt, params, session,\n        } = await provider.interactionDetails(ctx.req, ctx.res);\n        const client = await provider.Client.find(params.client_id);\n\n        let view;\n        let title;\n\n        switch (prompt.name) {\n          case 'login':\n            view = 'login';\n            title = 'Sign-in';\n            break;\n          case 'consent':\n            view = 'interaction';\n            title = 'Authorize';\n            break;\n          default:\n            ctx.throw(501, 'not implemented');\n        }\n\n        const locals = {\n          client,\n          uid,\n          abortUrl: ctx.oidc.urlFor('abort', { uid }),\n          submitUrl: ctx.oidc.urlFor('submit', { uid }),\n          details: prompt.details,\n          prompt: prompt.name,\n          params,\n          title,\n          session: session ? dbg(session) : undefined,\n          dbg: {\n            params: dbg(params),\n            prompt: dbg(prompt),\n          },\n        };\n\n        locals.body = views[view](locals);\n\n        ctx.type = 'html';\n        ctx.body = views.layout(locals);\n      },\n    ],\n    abort: [\n      noCache,\n      function interactionAbort(ctx) {\n        const result = {\n          error: 'access_denied',\n          error_description: 'End-User aborted interaction',\n        };\n\n        return provider.interactionFinished(ctx.req, ctx.res, result, {\n          mergeWithLastSubmission: false,\n        });\n      },\n    ],\n    submit: [\n      noCache,\n      parseBody,\n      async function interactionSubmit(ctx) {\n        const {\n          prompt: { name, details }, grantId, session, params,\n        } = await provider.interactionDetails(ctx.req, ctx.res);\n        switch (ctx.oidc.body.prompt) { // eslint-disable-line default-case\n          case 'login': {\n            assert.equal(name, 'login');\n            await provider.interactionFinished(ctx.req, ctx.res, {\n              login: { accountId: ctx.oidc.body.login },\n            }, { mergeWithLastSubmission: false });\n            break;\n          }\n          case 'consent': {\n            assert.equal(name, 'consent');\n\n            let grant;\n            if (grantId) {\n              // we'll be modifying existing grant in existing session\n              grant = await provider.Grant.find(grantId);\n            } else {\n              // we're establishing a new grant\n              grant = new provider.Grant({\n                accountId: session.accountId,\n                clientId: params.client_id,\n              });\n            }\n\n            if (details.missingOIDCScope) {\n              grant.addOIDCScope(details.missingOIDCScope.join(' '));\n            }\n            if (details.missingOIDCClaims) {\n              grant.addOIDCClaims(details.missingOIDCClaims);\n            }\n            if (details.missingResourceScopes) {\n              for (const [indicator, scope] of Object.entries(details.missingResourceScopes)) {\n                grant.addResourceScope(indicator, scope.join(' '));\n              }\n            }\n            const result = { consent: { grantId: await grant.save() } };\n            await provider.interactionFinished(ctx.req, ctx.res, result, {\n              mergeWithLastSubmission: true,\n            });\n            break;\n          }\n          default:\n            ctx.throw(501, 'not implemented');\n        }\n      },\n    ],\n  };\n}\n", "import * as querystring from 'node:querystring';\n\nimport raw from 'raw-body';\n\nimport * as attention from '../helpers/attention.js';\nimport { InvalidRequest } from '../helpers/errors.js';\n\nlet warned;\n\nasync function selectiveBody(cty, ctx, next) {\n  if (ctx.is(cty)) {\n    try {\n      let usedFallback;\n      const body = await (() => {\n        if (ctx.req.readable) {\n          return raw(ctx.req, {\n            length: ctx.request.length,\n            limit: '56kb',\n            encoding: ctx.charset,\n          });\n        }\n        if (!warned) {\n          warned = true;\n          /* eslint-disable no-multi-str */\n          attention.warn('already parsed request body detected, having upstream middleware parser \\\nis not recommended, resolving to use req.body or request.body instead');\n          /* eslint-enable */\n        }\n        usedFallback = true;\n        return ctx.req.body || ctx.request.body;\n      })();\n\n      if (body instanceof Buffer || typeof body === 'string') {\n        if (cty === 'application/json') {\n          ctx.oidc.body = JSON.parse(body);\n        } else {\n          ctx.oidc.body = querystring.parse(body.toString());\n        }\n      } else if (usedFallback && cty === 'application/x-www-form-urlencoded') {\n        // get rid of possible upstream parsers that parse querystring with objects, arrays, etc\n        ctx.oidc.body = querystring.parse(querystring.stringify(body));\n      } else {\n        ctx.oidc.body = body;\n      }\n    } catch (err) {\n      throw new InvalidRequest('failed to parse the request body');\n    }\n\n    await next();\n  } else if (ctx.get('content-type')) {\n    throw new InvalidRequest(`only ${cty} content-type bodies are supported on ${ctx.method} ${ctx.path}`);\n  } else {\n    ctx.oidc.body = {};\n    await next();\n  }\n}\n\nexport default selectiveBody;\nexport const json = selectiveBody.bind(undefined, 'application/json');\nexport const urlencoded = selectiveBody.bind(undefined, 'application/x-www-form-urlencoded');\n", "import { Eta } from 'eta/core'; // eslint-disable-line import/no-unresolved\n\nimport layoutTemplate from './layout.js';\nimport loginTemplate from './login.js';\nimport interactionTemplate from './interaction.js';\n\nlet eta;\n\nexport const interaction = (locals) => {\n  eta ||= new Eta();\n  return eta.render(interactionTemplate, locals);\n};\n\nexport const layout = (locals) => {\n  eta ||= new Eta();\n  return eta.render(layoutTemplate, locals);\n};\n\nexport const login = (locals) => {\n  eta ||= new Eta();\n  return eta.render(loginTemplate, locals);\n};\n", "export class EtaError extends Error {\n  constructor(message: string) {\n    super(message);\n    this.name = \"Eta Error\";\n  }\n}\n\nexport class EtaParseError extends EtaError {\n  constructor(message: string) {\n    super(message);\n    this.name = \"EtaParser Error\";\n  }\n}\n\nexport class EtaRuntimeError extends EtaError {\n  constructor(message: string) {\n    super(message);\n    this.name = \"EtaRuntime Error\";\n  }\n}\n\nexport class EtaFileResolutionError extends EtaError {\n  constructor(message: string) {\n    super(message);\n    this.name = \"EtaFileResolution Error\";\n  }\n}\n\nexport class EtaNameResolutionError extends EtaError {\n  constructor(message: string) {\n    super(message);\n    this.name = \"EtaNameResolution Error\";\n  }\n}\n\n/**\n * Throws an EtaError with a nicely formatted error and message showing where in the template the error occurred.\n */\n\nexport function ParseErr(message: string, str: string, indx: number): never {\n  const whitespace = str.slice(0, indx).split(/\\n/);\n\n  const lineNo = whitespace.length;\n  const colNo = whitespace[lineNo - 1].length + 1;\n  message +=\n    \" at line \" +\n    lineNo +\n    \" col \" +\n    colNo +\n    \":\\n\\n\" +\n    \"  \" +\n    str.split(/\\n/)[lineNo - 1] +\n    \"\\n\" +\n    \"  \" +\n    Array(colNo).join(\" \") +\n    \"^\";\n  throw new EtaParseError(message);\n}\n\nexport function RuntimeErr(\n  originalError: Error,\n  str: string,\n  lineNo: number,\n  path: string,\n): never {\n  // code gratefully taken from https://github.com/mde/ejs and adapted\n\n  const lines = str.split(\"\\n\");\n  const start = Math.max(lineNo - 3, 0);\n  const end = Math.min(lines.length, lineNo + 3);\n  const filename = path;\n  // Error context\n  const context = lines\n    .slice(start, end)\n    .map((line, i) => {\n      const curr = i + start + 1;\n      return (curr === lineNo ? \" >> \" : \"    \") + curr + \"| \" + line;\n    })\n    .join(\"\\n\");\n\n  const header = filename\n    ? filename + \":\" + lineNo + \"\\n\"\n    : \"line \" + lineNo + \"\\n\";\n\n  const err = new EtaRuntimeError(\n    header + context + \"\\n\\n\" + originalError.message,\n  );\n\n  err.name = originalError.name; // the original name (e.g. ReferenceError) may be useful\n  err.cause = originalError;\n\n  throw err;\n}\n", "import type { EtaConfig, Options } from \"./config.ts\";\nimport { EtaParseError } from \"./err.ts\";\nimport type { Eta } from \"./internal.ts\";\n\nexport type TemplateFunction = (\n  this: Eta,\n  data?: object,\n  options?: Partial<Options>,\n) => string;\n/* END TYPES */\n\n/* istanbul ignore next */\nconst AsyncFunction = (async () => {}).constructor;\n\n/**\n * Takes a template string and returns a template function that can be called with (data, config)\n *\n * @param str - The template string\n * @param config - A custom configuration object (optional)\n */\n\nexport function compile(\n  this: Eta,\n  str: string,\n  options?: Partial<Options>,\n): TemplateFunction {\n  const config: EtaConfig = this.config;\n\n  /* ASYNC HANDLING */\n  // code gratefully taken from https://github.com/mde/ejs and adapted\n  const ctor = options?.async\n    ? (AsyncFunction as FunctionConstructor)\n    : Function;\n  /* END ASYNC HANDLING */\n\n  try {\n    return new ctor(\n      config.varName,\n      \"options\",\n      this.compileToString.call(this, str, options),\n    ) as TemplateFunction; // eslint-disable-line no-new-func\n  } catch (e) {\n    if (e instanceof SyntaxError) {\n      throw new EtaParseError(\n        \"Bad template syntax\\n\\n\" +\n          e.message +\n          \"\\n\" +\n          Array(e.message.length + 1).join(\"=\") +\n          \"\\n\" +\n          this.compileToString.call(this, str, options) +\n          \"\\n\", // This will put an extra newline before the callstack for extra readability\n      );\n    } else {\n      throw e;\n    }\n  }\n}\n", "import type { Options } from \"./config.ts\";\nimport type { Eta } from \"./internal.ts\";\nimport type { AstObject } from \"./parse.ts\";\n\n/**\n * Compiles a template string to a function string. Most often users just use `compile()`, which calls `compileToString` and creates a new function using the result\n */\n\nexport function compileToString(\n  this: Eta,\n  str: string,\n  options?: Partial<Options>,\n): string {\n  const config = this.config;\n  const isAsync = options?.async;\n\n  const compileBody = this.compileBody;\n\n  const buffer: Array<AstObject> = this.parse.call(this, str);\n\n  // note: when the include function passes through options, the only parameter that matters is the filepath parameter\n  let res = `${config.functionHeader}\nlet include = (__eta_t, __eta_d) => this.render(__eta_t, {...${config.varName}, ...(__eta_d ?? {})}, options);\nlet includeAsync = (__eta_t, __eta_d) => this.renderAsync(__eta_t, {...${config.varName}, ...(__eta_d ?? {})}, options);\n\nlet __eta = {res: \"\", e: this.config.escapeFunction, f: this.config.filterFunction${\n    config.debug\n      ? ', line: 1, templateStr: \"' +\n        str.replace(/\\\\|\"/g, \"\\\\$&\").replace(/\\r\\n|\\n|\\r/g, \"\\\\n\") +\n        '\"'\n      : \"\"\n  }};\n\nfunction layout(path, data) {\n  __eta.layout = path;\n  __eta.layoutData = data;\n}${config.debug ? \"try {\" : \"\"}${\n    config.useWith ? \"with(\" + config.varName + \"||{}){\" : \"\"\n  }\n\nfunction ${config.outputFunctionName}(s){__eta.res+=s;}\n\n${compileBody.call(this, buffer)}\nif (__eta.layout) {\n  __eta.res = ${\n    isAsync ? \"await includeAsync\" : \"include\"\n  } (__eta.layout, {...${\n    config.varName\n  }, body: __eta.res, ...__eta.layoutData});\n}\n${config.useWith ? \"}\" : \"\"}${\n  config.debug\n    ? \"} catch (e) { this.RuntimeErr(e, __eta.templateStr, __eta.line, options.filepath) }\"\n    : \"\"\n}\nreturn __eta.res;\n`;\n\n  if (config.plugins) {\n    for (let i = 0; i < config.plugins.length; i++) {\n      const plugin = config.plugins[i];\n      if (plugin.processFnString) {\n        res = plugin.processFnString(res, config);\n      }\n    }\n  }\n\n  return res;\n}\n\n/**\n * Loops through the AST generated by `parse` and transform each item into JS calls\n *\n * **Example**\n *\n * ```js\n * let templateAST = ['Hi ', { val: 'it.name', t: 'i' }]\n * compileBody.call(Eta, templateAST)\n * // => \"__eta.res+='Hi '\\n__eta.res+=__eta.e(it.name)\\n\"\n * ```\n */\n\nexport function compileBody(this: Eta, buff: Array<AstObject>): string {\n  const config = this.config;\n\n  let i = 0;\n  const buffLength = buff.length;\n  let returnStr = \"\";\n\n  for (i; i < buffLength; i++) {\n    const currentBlock = buff[i];\n    if (typeof currentBlock === \"string\") {\n      const str = currentBlock;\n\n      // we know string exists\n      returnStr += \"__eta.res+='\" + str + \"'\\n\";\n    } else {\n      const type = currentBlock.t; // \"r\", \"e\", or \"i\"\n      let content = currentBlock.val || \"\";\n\n      if (config.debug) returnStr += \"__eta.line=\" + currentBlock.lineNo + \"\\n\";\n\n      if (type === \"r\") {\n        // raw\n\n        if (config.autoFilter) {\n          content = \"__eta.f(\" + content + \")\";\n        }\n\n        returnStr += \"__eta.res+=\" + content + \"\\n\";\n      } else if (type === \"i\") {\n        // interpolate\n\n        if (config.autoFilter) {\n          content = \"__eta.f(\" + content + \")\";\n        }\n\n        if (config.autoEscape) {\n          content = \"__eta.e(\" + content + \")\";\n        }\n\n        returnStr += \"__eta.res+=\" + content + \"\\n\";\n      } else if (type === \"e\") {\n        // execute\n        returnStr += content + \"\\n\";\n      }\n    }\n  }\n\n  return returnStr;\n}\n", "import type { EtaConfig } from \"./config.ts\";\n\n/**\n * Takes a string within a template and trims it, based on the preceding tag's whitespace control and `config.autoTrim`\n */\n\nexport function trimWS(\n  str: string,\n  config: EtaConfig,\n  wsLeft: string | false,\n  wsRight?: string | false,\n): string {\n  let leftTrim: string | false;\n  let rightTrim: string | false;\n\n  if (Array.isArray(config.autoTrim)) {\n    // Slightly confusing,\n    // but _}} will trim the left side of the following string\n    leftTrim = config.autoTrim[1];\n    rightTrim = config.autoTrim[0];\n  } else {\n    leftTrim = rightTrim = config.autoTrim;\n  }\n\n  if (wsLeft || wsLeft === false) {\n    leftTrim = wsLeft;\n  }\n\n  if (wsRight || wsRight === false) {\n    rightTrim = wsRight;\n  }\n\n  if (!rightTrim && !leftTrim) {\n    return str;\n  }\n\n  if (leftTrim === \"slurp\" && rightTrim === \"slurp\") {\n    return str.trim();\n  }\n\n  if (leftTrim === \"_\" || leftTrim === \"slurp\") {\n    // full slurp\n    str = str.trimStart();\n  } else if (leftTrim === \"-\" || leftTrim === \"nl\") {\n    // nl trim\n    str = str.replace(/^(?:\\r\\n|\\n|\\r)/, \"\");\n  }\n\n  if (rightTrim === \"_\" || rightTrim === \"slurp\") {\n    // full slurp\n    str = str.trimEnd();\n  } else if (rightTrim === \"-\" || rightTrim === \"nl\") {\n    // nl trim\n    str = str.replace(/(?:\\r\\n|\\n|\\r)$/, \"\");\n  }\n\n  return str;\n}\n\n/**\n * A map of special HTML characters to their XML-escaped equivalents\n */\n\nconst escMap: { [key: string]: string } = {\n  \"&\": \"&amp;\",\n  \"<\": \"&lt;\",\n  \">\": \"&gt;\",\n  '\"': \"&quot;\",\n  \"'\": \"&#39;\",\n};\n\nfunction replaceChar(s: string): string {\n  return escMap[s];\n}\n\n/**\n * XML-escapes an input value after converting it to a string\n *\n * @param str - Input value (usually a string)\n * @returns XML-escaped string\n */\n\nexport function XMLEscape(str: unknown): string {\n  // To deal with XSS. Based on Escape implementations of Mustache.JS and Marko, then customized.\n  const newStr = String(str);\n  if (/[&<>\"']/.test(newStr)) {\n    return newStr.replace(/[&<>\"']/g, replaceChar);\n  } else {\n    return newStr;\n  }\n}\n", "import type { AstObject } from \"./parse.ts\";\nimport { XMLEscape } from \"./utils.ts\";\n\ntype trimConfig = \"nl\" | \"slurp\" | false;\n\nexport interface Options {\n  /** Compile to async function */\n  async?: boolean;\n\n  /** Absolute path to template file */\n  filepath?: string;\n}\n\nexport interface EtaConfig {\n  /** Whether or not to automatically XML-escape interpolations. Default true */\n  autoEscape: boolean;\n\n  /** Apply a filter function defined on the class to every interpolation or raw interpolation */\n  autoFilter: boolean;\n\n  /** Configure automatic whitespace trimming. Default `[false, 'nl']` */\n  autoTrim: trimConfig | [trimConfig, trimConfig];\n\n  /** Whether or not to cache templates if `name` or `filename` is passed */\n  cache: boolean;\n\n  /** Holds cache of resolved filepaths. Set to `false` to disable. */\n  cacheFilepaths: boolean;\n\n  /** Whether to pretty-format error messages (introduces runtime penalties) */\n  debug: boolean;\n\n  /** Function to XML-sanitize interpolations */\n  escapeFunction: (str: unknown) => string;\n\n  /** Function applied to all interpolations when autoFilter is true */\n  filterFunction: (val: unknown) => string;\n\n  /** Name of the function that can be used in template code to output text to the result (like EJS's `outputFunctionName`). */\n  outputFunctionName: string;\n\n  /** Raw JS code inserted in the template function. Useful for declaring global variables for user templates */\n  functionHeader: string;\n\n  /** Parsing options */\n  parse: {\n    /** Which prefix to use for evaluation. Default `\"\"`, does not support `\"-\"` or `\"_\"` */\n    exec: string;\n\n    /** Which prefix to use for interpolation. Default `\"=\"`, does not support `\"-\"` or `\"_\"` */\n    interpolate: string;\n\n    /** Which prefix to use for raw interpolation. Default `\"~\"`, does not support `\"-\"` or `\"_\"` */\n    raw: string;\n  };\n\n  /** Array of plugins */\n  plugins: Array<{\n    processFnString?: (fnString: string, env?: EtaConfig) => string;\n    processAST?: (ast: AstObject[], env?: EtaConfig) => AstObject[];\n    processTemplate?: (fnString: string, env?: EtaConfig) => string;\n  }>;\n\n  /** Remove empty lines and whitespace between lines */\n  rmWhitespace: boolean;\n\n  /** Delimiters: by default `['<%', '%>']` */\n  tags: [string, string];\n\n  /** Make data available on the global object instead of varName */\n  useWith: boolean;\n\n  /** Name of the data object. Default `it` */\n  varName: string;\n\n  /** Directory that contains templates */\n  views?: string;\n\n  /** Control template file extension defaults. Default `.eta` */\n  defaultExtension?: string;\n}\n\n/* END TYPES */\n\n/** Eta's base (global) configuration */\nconst defaultConfig: EtaConfig = {\n  autoEscape: true,\n  autoFilter: false,\n  autoTrim: [false, \"nl\"],\n  cache: false,\n  cacheFilepaths: true,\n  debug: false,\n  escapeFunction: XMLEscape,\n  // default filter function (not used unless enables) just stringifies the input\n  filterFunction: (val) => String(val),\n  outputFunctionName: \"output\",\n  functionHeader: \"\",\n  parse: {\n    exec: \"\",\n    interpolate: \"=\",\n    raw: \"~\",\n  },\n  plugins: [],\n  rmWhitespace: false,\n  tags: [\"<%\", \"%>\"],\n  useWith: false,\n  varName: \"it\",\n  defaultExtension: \".eta\",\n};\n\nexport { defaultConfig };\n", "import { ParseErr } from \"./err.ts\";\nimport type { Eta } from \"./internal.ts\";\nimport { trimWS } from \"./utils.ts\";\n\nexport type TagType = \"r\" | \"e\" | \"i\" | \"\";\n\nexport interface TemplateObject {\n  t: TagType;\n  val: string;\n  lineNo?: number;\n}\n\nexport type AstObject = string | TemplateObject;\n\n/* END TYPES */\n\nconst templateLitReg =\n  /`(?:\\\\[\\s\\S]|\\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})*}|(?!\\${)[^\\\\`])*`/g;\n\nconst singleQuoteReg = /'(?:\\\\[\\s\\w\"'\\\\`]|[^\\n\\r'\\\\])*?'/g;\n\nconst doubleQuoteReg = /\"(?:\\\\[\\s\\w\"'\\\\`]|[^\\n\\r\"\\\\])*?\"/g;\n\n/** Escape special regular expression characters inside a string */\n\nfunction escapeRegExp(string: string) {\n  // From MDN\n  return string.replace(/[.*+\\-?^${}()|[\\]\\\\]/g, \"\\\\$&\"); // $& means the whole matched string\n}\n\nfunction getLineNo(str: string, index: number) {\n  return str.slice(0, index).split(\"\\n\").length;\n}\n\nexport function parse(this: Eta, str: string): Array<AstObject> {\n  const config = this.config;\n\n  let buffer: Array<AstObject> = [];\n  let trimLeftOfNextStr: string | false = false;\n  let lastIndex = 0;\n  const parseOptions = config.parse;\n\n  if (config.plugins) {\n    for (let i = 0; i < config.plugins.length; i++) {\n      const plugin = config.plugins[i];\n      if (plugin.processTemplate) {\n        str = plugin.processTemplate(str, config);\n      }\n    }\n  }\n\n  /* Adding for EJS compatibility */\n  if (config.rmWhitespace) {\n    // Code taken directly from EJS\n    // Have to use two separate replaces here as `^` and `$` operators don't\n    // work well with `\\r` and empty lines don't work well with the `m` flag.\n    // Essentially, this replaces the whitespace at the beginning and end of\n    // each line and removes multiple newlines.\n    str = str.replace(/[\\r\\n]+/g, \"\\n\").replace(/^\\s+|\\s+$/gm, \"\");\n  }\n  /* End rmWhitespace option */\n\n  templateLitReg.lastIndex = 0;\n  singleQuoteReg.lastIndex = 0;\n  doubleQuoteReg.lastIndex = 0;\n\n  function pushString(strng: string, shouldTrimRightOfString?: string | false) {\n    if (strng) {\n      // if string is truthy it must be of type 'string'\n\n      strng = trimWS(\n        strng,\n        config,\n        trimLeftOfNextStr, // this will only be false on the first str, the next ones will be null or undefined\n        shouldTrimRightOfString,\n      );\n\n      if (strng) {\n        // replace \\ with \\\\, ' with \\'\n        // we're going to convert all CRLF to LF so it doesn't take more than one replace\n\n        strng = strng.replace(/\\\\|'/g, \"\\\\$&\").replace(/\\r\\n|\\n|\\r/g, \"\\\\n\");\n\n        buffer.push(strng);\n      }\n    }\n  }\n\n  const prefixes = [\n    parseOptions.exec,\n    parseOptions.interpolate,\n    parseOptions.raw,\n  ].reduce((accumulator, prefix) => {\n    if (accumulator && prefix) {\n      return accumulator + \"|\" + escapeRegExp(prefix);\n    } else if (prefix) {\n      // accumulator is falsy\n      return escapeRegExp(prefix);\n    } else {\n      // prefix and accumulator are both falsy\n      return accumulator;\n    }\n  }, \"\");\n\n  const parseOpenReg = new RegExp(\n    escapeRegExp(config.tags[0]) + \"(-|_)?\\\\s*(\" + prefixes + \")?\\\\s*\",\n    \"g\",\n  );\n\n  const parseCloseReg = new RegExp(\n    \"'|\\\"|`|\\\\/\\\\*|(\\\\s*(-|_)?\" + escapeRegExp(config.tags[1]) + \")\",\n    \"g\",\n  );\n\n  let m: RegExpExecArray | null;\n\n  // biome-ignore lint/suspicious/noAssignInExpressions: this is performant\n  while ((m = parseOpenReg.exec(str))) {\n    const precedingString = str.slice(lastIndex, m.index);\n\n    lastIndex = m[0].length + m.index;\n\n    const wsLeft = m[1];\n    const prefix = m[2] || \"\"; // by default either ~, =, or empty\n\n    pushString(precedingString, wsLeft);\n\n    parseCloseReg.lastIndex = lastIndex;\n    let closeTag: RegExpExecArray | null;\n    let currentObj: AstObject | false = false;\n\n    // biome-ignore lint/suspicious/noAssignInExpressions: this is performant\n    while ((closeTag = parseCloseReg.exec(str))) {\n      if (closeTag[1]) {\n        const content = str.slice(lastIndex, closeTag.index);\n\n        parseOpenReg.lastIndex = lastIndex = parseCloseReg.lastIndex;\n\n        trimLeftOfNextStr = closeTag[2];\n\n        const currentType: TagType =\n          prefix === parseOptions.exec\n            ? \"e\"\n            : prefix === parseOptions.raw\n              ? \"r\"\n              : prefix === parseOptions.interpolate\n                ? \"i\"\n                : \"\";\n\n        currentObj = { t: currentType, val: content };\n        break;\n      } else {\n        const char = closeTag[0];\n        if (char === \"/*\") {\n          const commentCloseInd = str.indexOf(\"*/\", parseCloseReg.lastIndex);\n\n          if (commentCloseInd === -1) {\n            ParseErr(\"unclosed comment\", str, closeTag.index);\n          }\n          parseCloseReg.lastIndex = commentCloseInd;\n        } else if (char === \"'\") {\n          singleQuoteReg.lastIndex = closeTag.index;\n\n          const singleQuoteMatch = singleQuoteReg.exec(str);\n          if (singleQuoteMatch) {\n            parseCloseReg.lastIndex = singleQuoteReg.lastIndex;\n          } else {\n            ParseErr(\"unclosed string\", str, closeTag.index);\n          }\n        } else if (char === '\"') {\n          doubleQuoteReg.lastIndex = closeTag.index;\n          const doubleQuoteMatch = doubleQuoteReg.exec(str);\n\n          if (doubleQuoteMatch) {\n            parseCloseReg.lastIndex = doubleQuoteReg.lastIndex;\n          } else {\n            ParseErr(\"unclosed string\", str, closeTag.index);\n          }\n        } else if (char === \"`\") {\n          templateLitReg.lastIndex = closeTag.index;\n          const templateLitMatch = templateLitReg.exec(str);\n          if (templateLitMatch) {\n            parseCloseReg.lastIndex = templateLitReg.lastIndex;\n          } else {\n            ParseErr(\"unclosed string\", str, closeTag.index);\n          }\n        }\n      }\n    }\n    if (currentObj) {\n      if (config.debug) {\n        currentObj.lineNo = getLineNo(str, m.index);\n      }\n      buffer.push(currentObj);\n    } else {\n      ParseErr(\"unclosed tag\", str, m.index);\n    }\n  }\n\n  pushString(str.slice(lastIndex, str.length), false);\n\n  if (config.plugins) {\n    for (let i = 0; i < config.plugins.length; i++) {\n      const plugin = config.plugins[i];\n      if (plugin.processAST) {\n        buffer = plugin.processAST(buffer, config);\n      }\n    }\n  }\n\n  return buffer;\n}\n", "import type { TemplateFunction } from \"./compile.ts\";\n\n/* TYPES */\nimport type { Options } from \"./config.ts\";\nimport { EtaNameResolutionError } from \"./err.ts\";\nimport type { Eta } from \"./internal.ts\";\n\n/* END TYPES */\n\nfunction handleCache(\n  this: Eta,\n  template: string,\n  options: Partial<Options>,\n): TemplateFunction {\n  const templateStore = options?.async\n    ? this.templatesAsync\n    : this.templatesSync;\n\n  if (this.resolvePath && this.readFile && !template.startsWith(\"@\")) {\n    const templatePath = options.filepath as string;\n\n    const cachedTemplate = templateStore.get(templatePath);\n\n    if (this.config.cache && cachedTemplate) {\n      return cachedTemplate;\n    } else {\n      const templateString = this.readFile(templatePath);\n\n      const templateFn = this.compile(templateString, options);\n\n      if (this.config.cache) templateStore.define(templatePath, templateFn);\n\n      return templateFn;\n    }\n  } else {\n    const cachedTemplate = templateStore.get(template);\n\n    if (cachedTemplate) {\n      return cachedTemplate;\n    } else {\n      throw new EtaNameResolutionError(`Failed to get template '${template}'`);\n    }\n  }\n}\n\nexport function render<T extends object>(\n  this: Eta,\n  template: string | TemplateFunction, // template name or template function\n  data: T,\n  meta?: { filepath: string },\n): string {\n  let templateFn: TemplateFunction;\n  const options = { ...meta, async: false };\n\n  if (typeof template === \"string\") {\n    if (this.resolvePath && this.readFile && !template.startsWith(\"@\")) {\n      options.filepath = this.resolvePath(template, options);\n    }\n\n    templateFn = handleCache.call(this, template, options);\n  } else {\n    templateFn = template;\n  }\n\n  const res = templateFn.call(this, data, options);\n\n  return res;\n}\n\nexport function renderAsync<T extends object>(\n  this: Eta,\n  template: string | TemplateFunction, // template name or template function\n  data: T,\n  meta?: { filepath: string },\n): Promise<string> {\n  let templateFn: TemplateFunction;\n  const options = { ...meta, async: true };\n\n  if (typeof template === \"string\") {\n    if (this.resolvePath && this.readFile && !template.startsWith(\"@\")) {\n      options.filepath = this.resolvePath(template, options);\n    }\n\n    templateFn = handleCache.call(this, template, options);\n  } else {\n    templateFn = template;\n  }\n\n  const res = templateFn.call(this, data, options);\n\n  // Return a promise\n  return Promise.resolve(res);\n}\n\nexport function renderString<T extends object>(\n  this: Eta,\n  template: string,\n  data: T,\n): string {\n  const templateFn = this.compile(template, { async: false });\n\n  return render.call(this, templateFn, data);\n}\n\nexport function renderStringAsync<T extends object>(\n  this: Eta,\n  template: string,\n  data: T,\n): Promise<string> {\n  const templateFn = this.compile(template, { async: true });\n\n  return renderAsync.call(this, templateFn, data);\n}\n", "/**\n * Handles storage and accessing of values\n *\n * In this case, we use it to store compiled template functions\n * Indexed by their `name` or `filename`\n */\n\nexport class Cacher<T> {\n  constructor(private cache: Record<string, T>) {}\n  define(key: string, val: T): void {\n    this.cache[key] = val;\n  }\n  get(key: string): T {\n    return this.cache[key];\n  }\n  remove(key: string): void {\n    delete this.cache[key];\n  }\n  reset(): void {\n    this.cache = {};\n  }\n  load(cacheObj: Record<string, T>): void {\n    this.cache = { ...this.cache, ...cacheObj };\n  }\n}\n", "import type { TemplateFunction } from \"./compile.ts\";\nimport { compile } from \"./compile.ts\";\nimport { compileBody, compileToString } from \"./compile-string.ts\";\nimport type { EtaConfig, Options } from \"./config.ts\";\nimport { defaultConfig } from \"./config.ts\";\nimport { EtaError, RuntimeErr } from \"./err.ts\";\nimport { parse } from \"./parse.ts\";\nimport {\n  render,\n  renderAsync,\n  renderString,\n  renderStringAsync,\n} from \"./render.ts\";\nimport { Cacher } from \"./storage.ts\";\n\nexport class Eta {\n  constructor(customConfig?: Partial<EtaConfig>) {\n    if (customConfig) {\n      this.config = { ...defaultConfig, ...customConfig };\n    } else {\n      this.config = { ...defaultConfig };\n    }\n  }\n\n  config: EtaConfig;\n\n  RuntimeErr = RuntimeErr;\n\n  compile = compile;\n  compileToString = compileToString;\n  compileBody = compileBody;\n  parse = parse;\n  render = render;\n  renderAsync = renderAsync;\n  renderString = renderString;\n  renderStringAsync = renderStringAsync;\n\n  filepathCache: Record<string, string> = {};\n  templatesSync: Cacher<TemplateFunction> = new Cacher<TemplateFunction>({});\n  templatesAsync: Cacher<TemplateFunction> = new Cacher<TemplateFunction>({});\n\n  // resolvePath takes a relative path from the \"views\" directory\n  resolvePath:\n    | null\n    | ((this: Eta, template: string, options?: Partial<Options>) => string) =\n    null;\n  readFile: null | ((this: Eta, path: string) => string) = null;\n\n  // METHODS\n\n  configure(customConfig: Partial<EtaConfig>) {\n    this.config = { ...this.config, ...customConfig };\n  }\n\n  withConfig(customConfig: Partial<EtaConfig>): this & { config: EtaConfig } {\n    return { ...this, config: { ...this.config, ...customConfig } };\n  }\n\n  loadTemplate(\n    name: string,\n    template: string | TemplateFunction, // template string or template function\n    options?: { async: boolean },\n  ): void {\n    if (typeof template === \"string\") {\n      const templates = options?.async\n        ? this.templatesAsync\n        : this.templatesSync;\n\n      templates.define(name, this.compile(template, options));\n    } else {\n      let templates = this.templatesSync;\n\n      if (template.constructor.name === \"AsyncFunction\" || options?.async) {\n        templates = this.templatesAsync;\n      }\n\n      templates.define(name, template);\n    }\n  }\n}\n\n// for instance checking against thrown errors\nexport { EtaError };\n", "import { Eta as EtaCore } from \"./internal.ts\";\n\nexport type { TemplateFunction } from \"./compile.ts\";\nexport type { EtaConfig, Options } from \"./config.ts\";\nexport {\n  EtaError,\n  EtaFileResolutionError,\n  EtaNameResolutionError,\n  EtaParseError,\n  EtaRuntimeError,\n} from \"./err.ts\";\n\nexport class Eta extends EtaCore {}\n", "export const source = `<!DOCTYPE html>\n<html >\n  <head>\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n    <meta charset=\"utf-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n    <title>Sign-in</title>\n    <style>\n      @import url(https://fonts.googleapis.com/css?family=Roboto:400,100);\n\n      body {\n        font-family: 'Roboto', sans-serif;\n        margin-top: 25px;\n        margin-bottom: 25px;\n      }\n\n      .login-card {\n        padding: 40px;\n        padding-top: 0px;\n        padding-bottom: 10px;\n        width: 274px;\n        background-color: #F7F7F7;\n        margin: 0 auto 10px;\n        border-radius: 2px;\n        box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);\n        overflow: hidden;\n      }\n\n      .login-card + .login-card {\n        padding-top: 10px;\n      }\n\n      .login-card h1 {\n        font-weight: 100;\n        text-align: center;\n        font-size: 2.3em;\n      }\n\n      .login-card [type=submit] {\n        width: 100%;\n        display: block;\n        margin-bottom: 10px;\n        position: relative;\n      }\n\n      .login-card input[type=text], input[type=email], input[type=password] {\n        height: 44px;\n        font-size: 16px;\n        width: 100%;\n        margin-bottom: 10px;\n        -webkit-appearance: none;\n        background: #fff;\n        border: 1px solid #d9d9d9;\n        border-top: 1px solid #c0c0c0;\n        padding: 0 8px;\n        box-sizing: border-box;\n        -moz-box-sizing: border-box;\n      }\n\n      .login {\n        text-align: center;\n        font-size: 14px;\n        font-family: 'Arial', sans-serif;\n        font-weight: 700;\n        height: 36px;\n        padding: 0 8px;\n      }\n\n      .login-submit {\n        border: 0px;\n        color: #fff;\n        text-shadow: 0 1px rgba(0,0,0,0.1);\n        background-color: #4d90fe;\n      }\n\n      .login-card a {\n        text-decoration: none;\n        color: #666;\n        font-weight: 400;\n        text-align: center;\n        display: inline-block;\n        opacity: 0.6;\n      }\n\n      .login-help {\n        width: 100%;\n        text-align: center;\n        font-size: 12px;\n      }\n\n      .login-client-image img {\n        margin-bottom: 20px;\n        display: block;\n        margin-left: auto;\n        margin-right: auto;\n        width: 20%;\n      }\n\n      .login-card input[type=checkbox] {\n        margin-bottom: 10px;\n      }\n\n      .login-card label {\n        color: #999;\n      }\n\n      .grant-debug {\n        text-align: center;\n        font-family: Fixed, monospace;\n        width: 100%;\n        font-size: 12px;\n        color: #999;\n      }\n\n      .grant-debug div {\n        padding-top: 10px;\n      }\n\n      ul {\n        font-weight: 100;\n        padding-left: 1em;\n        list-style-type: circle;\n      }\n\n      li + ul, ul + li, li + li {\n        padding-top: 0.3em;\n      }\n\n      li > pre {\n        font-size: 12px;\n        font-family: Fixed, monospace;\n        margin: 0px;\n      }\n\n      button {\n        cursor: pointer;\n      }\n    </style>\n  </head>\n  <body>\n    <div class=\"login-card\">\n      <h1><%= it.title %></h1>\n      <%~ it.body %>\n      <div class=\"login-help\">\n        <a href=\"<%= it.abortUrl %>\">[ Cancel ]</a>\n        <% if (it.client.tosUri) { %>\n          <a href=\"<%= it.client.tosUri %>\">[ Terms of Service ]</a>\n        <% } %>\n        <% if (it.client.policyUri) { %>\n          <a href=\"<%= it.client.policyUri %>\">[ Privacy Policy ]</a>\n        <% } %>\n      </div>\n    </div>\n    <div class=\"grant-debug\">\n      <details>\n        <summary style=\"text-align: center;\">(Click to expand) DEBUG information</summary>\n        <div>\n          <strong>uid</strong>: <%= it.uid %>\n        </div>\n\n        <% if (it.session) { %>\n        <div>\n          SESSION <br>\n         ========= <br>\n          <%~ it.session %>\n        </div>\n        <% } %>\n\n        <div>\n          PARAMS <br>\n         ======== <br>\n          <%~ it.dbg.params %>\n        </div>\n\n        <div>\n          PROMPT <br>\n         ======== <br>\n          <%~ it.dbg.prompt %>\n        </div>\n      </details>\n    </div>\n  </body>\n</html>`;\n\n/* eslint-disable */\nexport default function layout(it, options) {\n  let include = (template, data) => this.render(template, data, options);\n  let includeAsync = (template, data) => this.renderAsync(template, data, options);\n\n  let __eta = { res: \"\", e: this.config.escapeFunction, f: this.config.filterFunction };\n\n  function layout(path, data) {\n    __eta.layout = path;\n    __eta.layoutData = data;\n  }\n\n  __eta.res +=\n    '<!DOCTYPE html>\\n<html >\\n  <head>\\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\\n    <meta charset=\"utf-8\">\\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\\n    <title>Sign-in</title>\\n    <style>\\n      @import url(https://fonts.googleapis.com/css?family=Roboto:400,100);\\n\\n      body {\\n        font-family: \\'Roboto\\', sans-serif;\\n        margin-top: 25px;\\n        margin-bottom: 25px;\\n      }\\n\\n      .login-card {\\n        padding: 40px;\\n        padding-top: 0px;\\n        padding-bottom: 10px;\\n        width: 274px;\\n        background-color: #F7F7F7;\\n        margin: 0 auto 10px;\\n        border-radius: 2px;\\n        box-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);\\n        overflow: hidden;\\n      }\\n\\n      .login-card + .login-card {\\n        padding-top: 10px;\\n      }\\n\\n      .login-card h1 {\\n        font-weight: 100;\\n        text-align: center;\\n        font-size: 2.3em;\\n      }\\n\\n      .login-card [type=submit] {\\n        width: 100%;\\n        display: block;\\n        margin-bottom: 10px;\\n        position: relative;\\n      }\\n\\n      .login-card input[type=text], input[type=email], input[type=password] {\\n        height: 44px;\\n        font-size: 16px;\\n        width: 100%;\\n        margin-bottom: 10px;\\n        -webkit-appearance: none;\\n        background: #fff;\\n        border: 1px solid #d9d9d9;\\n        border-top: 1px solid #c0c0c0;\\n        padding: 0 8px;\\n        box-sizing: border-box;\\n        -moz-box-sizing: border-box;\\n      }\\n\\n      .login {\\n        text-align: center;\\n        font-size: 14px;\\n        font-family: \\'Arial\\', sans-serif;\\n        font-weight: 700;\\n        height: 36px;\\n        padding: 0 8px;\\n      }\\n\\n      .login-submit {\\n        border: 0px;\\n        color: #fff;\\n        text-shadow: 0 1px rgba(0,0,0,0.1);\\n        background-color: #4d90fe;\\n      }\\n\\n      .login-card a {\\n        text-decoration: none;\\n        color: #666;\\n        font-weight: 400;\\n        text-align: center;\\n        display: inline-block;\\n        opacity: 0.6;\\n      }\\n\\n      .login-help {\\n        width: 100%;\\n        text-align: center;\\n        font-size: 12px;\\n      }\\n\\n      .login-client-image img {\\n        margin-bottom: 20px;\\n        display: block;\\n        margin-left: auto;\\n        margin-right: auto;\\n        width: 20%;\\n      }\\n\\n      .login-card input[type=checkbox] {\\n        margin-bottom: 10px;\\n      }\\n\\n      .login-card label {\\n        color: #999;\\n      }\\n\\n      .grant-debug {\\n        text-align: center;\\n        font-family: Fixed, monospace;\\n        width: 100%;\\n        font-size: 12px;\\n        color: #999;\\n      }\\n\\n      .grant-debug div {\\n        padding-top: 10px;\\n      }\\n\\n      ul {\\n        font-weight: 100;\\n        padding-left: 1em;\\n        list-style-type: circle;\\n      }\\n\\n      li + ul, ul + li, li + li {\\n        padding-top: 0.3em;\\n      }\\n\\n      li > pre {\\n        font-size: 12px;\\n        font-family: Fixed, monospace;\\n        margin: 0px;\\n      }\\n\\n      button {\\n        cursor: pointer;\\n      }\\n    </style>\\n  </head>\\n  <body>\\n    <div class=\"login-card\">\\n      <h1>';\n  __eta.res += __eta.e(it.title);\n  __eta.res += \"</h1>\\n      \";\n  __eta.res += it.body;\n  __eta.res += '      <div class=\"login-help\">\\n        <a href=\"';\n  __eta.res += __eta.e(it.abortUrl);\n  __eta.res += '\">[ Cancel ]</a>\\n        ';\n  if (it.client.tosUri) {\n    __eta.res += '          <a href=\"';\n    __eta.res += __eta.e(it.client.tosUri);\n    __eta.res += '\">[ Terms of Service ]</a>\\n        ';\n  }\n  __eta.res += \"        \";\n  if (it.client.policyUri) {\n    __eta.res += '          <a href=\"';\n    __eta.res += __eta.e(it.client.policyUri);\n    __eta.res += '\">[ Privacy Policy ]</a>\\n        ';\n  }\n  __eta.res +=\n    '      </div>\\n    </div>\\n    <div class=\"grant-debug\">\\n      <details>\\n        <summary style=\"text-align: center;\">(Click to expand) DEBUG information</summary>\\n        <div>\\n          <strong>uid</strong>: ';\n  __eta.res += __eta.e(it.uid);\n  __eta.res += \"        </div>\\n\\n        \";\n  if (it.session) {\n    __eta.res += \"        <div>\\n          SESSION <br>\\n         ========= <br>\\n          \";\n    __eta.res += it.session;\n    __eta.res += \"        </div>\\n        \";\n  }\n  __eta.res += \"\\n        <div>\\n          PARAMS <br>\\n         ======== <br>\\n          \";\n  __eta.res += it.dbg.params;\n  __eta.res +=\n    \"        </div>\\n\\n        <div>\\n          PROMPT <br>\\n         ======== <br>\\n          \";\n  __eta.res += it.dbg.prompt;\n  __eta.res += \"        </div>\\n      </details>\\n    </div>\\n  </body>\\n</html>\";\n\n  if (__eta.layout) {\n    __eta.res = include(__eta.layout, { ...it, body: __eta.res, ...__eta.layoutData });\n  }\n\n  return __eta.res;\n}\n", "export const source = `<form autocomplete=\"off\" action=\"<%= it.submitUrl %>\" method=\"post\">\n  <input type=\"hidden\" name=\"prompt\" value=\"login\"/>\n  <input required type=\"text\" name=\"login\" placeholder=\"Enter any login\" <% if (!it.params.login_hint) { %>autofocus=\"on\"<% } else { %> value=\"<%= it.params.login_hint %>\" <% } %>>\n  <input required type=\"password\" name=\"password\" placeholder=\"and password\" <% if (it.params.login_hint) { %>autofocus=\"on\"<% } %>>\n\n  <button type=\"submit\" class=\"login login-submit\">Sign-in</button>\n</form>`;\n\n/* eslint-disable */\nexport default function login(it, options) {\n  let include = (template, data) => this.render(template, data, options);\n  let includeAsync = (template, data) => this.renderAsync(template, data, options);\n\n  let __eta = { res: \"\", e: this.config.escapeFunction, f: this.config.filterFunction };\n\n  function layout(path, data) {\n    __eta.layout = path;\n    __eta.layoutData = data;\n  }\n\n  __eta.res += '<form autocomplete=\"off\" action=\"';\n  __eta.res += __eta.e(it.submitUrl);\n  __eta.res +=\n    '\" method=\"post\">\\n  <input type=\"hidden\" name=\"prompt\" value=\"login\"/>\\n  <input required type=\"text\" name=\"login\" placeholder=\"Enter any login\" ';\n  if (!it.params.login_hint) {\n    __eta.res += 'autofocus=\"on\"';\n  } else {\n    __eta.res += ' value=\"';\n    __eta.res += __eta.e(it.params.login_hint);\n    __eta.res += '\" ';\n  }\n  __eta.res += '>\\n  <input required type=\"password\" name=\"password\" placeholder=\"and password\" ';\n  if (it.params.login_hint) {\n    __eta.res += 'autofocus=\"on\"';\n  }\n  __eta.res += '>\\n\\n  <button type=\"submit\" class=\"login login-submit\">Sign-in</button>\\n</form>';\n\n  if (__eta.layout) {\n    __eta.res = include(__eta.layout, { ...it, body: __eta.res, ...__eta.layoutData });\n  }\n\n  return __eta.res;\n}\n", "export const source = `<div class=\"login-client-image\">\n  <% if (it.client.logoUri) { %><img src=\"<%= it.client.logoUri %>\"><% } %>\n</div>\n\n<ul>\n<% if ([it.details.missingOIDCScope, it.details.missingOIDCClaims, it.details.missingResourceScopes, it.details.rar].filter(Boolean).length === 0) { %>\n  <li>the client is asking you to confirm previously given authorization</li>\n<% } %>\n\n<% let missingOIDCScope = new Set(it.details.missingOIDCScope); missingOIDCScope.delete('openid'); missingOIDCScope.delete('offline_access') %>\n<% if (missingOIDCScope.size) { %>\n  <li>scopes:</li>\n  <ul>\n    <% missingOIDCScope.forEach((scope) => { %>\n      <li><%= scope %></li>\n    <% }) %>\n  </ul>\n<% } %>\n\n<% let missingOIDCClaims = new Set(it.details.missingOIDCClaims); ['sub', 'sid', 'auth_time', 'acr', 'amr', 'iss'].forEach(Set.prototype.delete.bind(missingOIDCClaims)) %>\n<% if (missingOIDCClaims.size) { %>\n  <li>claims:</li>\n  <ul>\n    <% missingOIDCClaims.forEach((claim) => { %>\n      <li><%= claim %></li>\n    <% }) %>\n  </ul>\n<% } %>\n\n<% let missingResourceScopes = it.details.missingResourceScopes %>\n<% if (missingResourceScopes) { %>\n  <% for (const [indicator, scopes] of Object.entries(it.details.missingResourceScopes)) { %>\n    <li><%= indicator %>:</li>\n    <ul>\n      <% scopes.forEach((scope) => { %>\n        <li><%= scope %></li>\n      <% }) %>\n    </ul>\n  <% } %>\n<% } %>\n\n<% let rar = it.details.rar %>\n<% if (rar) { %>\n  <li>authorization_details:</li>\n  <ul>\n    <% for (const { type, ...detail } of it.details.rar) { %>\n      <li><pre><%= JSON.stringify({ type, ...detail }, null, 4) %></pre></li>\n    <% } %>\n  </ul>\n<% } %>\n\n<% if (it.params.scope?.includes('offline_access')) { %>\n  <li>\n  the client is asking to have offline access to this authorization\n    <% if ((!it.details.missingOIDCScope) || !it.details.missingOIDCScope.includes('offline_access')) { %>\n      (which you've previously granted)\n    <% } %>\n  </li>\n<% } %>\n\n</ul>\n\n<form autocomplete=\"off\" action=\"<%= it.submitUrl %>\" method=\"post\">\n  <input type=\"hidden\" name=\"prompt\" value=\"consent\"/>\n  <button autofocus type=\"submit\" class=\"login login-submit\">Continue</button>\n</form>\n`;\n\n/* eslint-disable */\nexport default function interaction(it, options) {\n  let include = (template, data) => this.render(template, data, options);\n  let includeAsync = (template, data) => this.renderAsync(template, data, options);\n\n  let __eta = { res: \"\", e: this.config.escapeFunction, f: this.config.filterFunction };\n\n  function layout(path, data) {\n    __eta.layout = path;\n    __eta.layoutData = data;\n  }\n\n  __eta.res += '<div class=\"login-client-image\">\\n  ';\n  if (it.client.logoUri) {\n    __eta.res += '<img src=\"';\n    __eta.res += __eta.e(it.client.logoUri);\n    __eta.res += '\">';\n  }\n  __eta.res += \"</div>\\n\\n<ul>\\n\";\n  if (\n    [\n      it.details.missingOIDCScope,\n      it.details.missingOIDCClaims,\n      it.details.missingResourceScopes,\n      it.details.rar,\n    ].filter(Boolean).length === 0\n  ) {\n    __eta.res += \"  <li>the client is asking you to confirm previously given authorization</li>\\n\";\n  }\n  __eta.res += \"\\n\";\n  let missingOIDCScope = new Set(it.details.missingOIDCScope);\n  missingOIDCScope.delete(\"openid\");\n  missingOIDCScope.delete(\"offline_access\");\n  if (missingOIDCScope.size) {\n    __eta.res += \"  <li>scopes:</li>\\n  <ul>\\n    \";\n    missingOIDCScope.forEach((scope) => {\n      __eta.res += \"      <li>\";\n      __eta.res += __eta.e(scope);\n      __eta.res += \"</li>\\n    \";\n    });\n    __eta.res += \"  </ul>\\n\";\n  }\n  __eta.res += \"\\n\";\n  let missingOIDCClaims = new Set(it.details.missingOIDCClaims);\n  [\"sub\", \"sid\", \"auth_time\", \"acr\", \"amr\", \"iss\"].forEach(\n    Set.prototype.delete.bind(missingOIDCClaims)\n  );\n  if (missingOIDCClaims.size) {\n    __eta.res += \"  <li>claims:</li>\\n  <ul>\\n    \";\n    missingOIDCClaims.forEach((claim) => {\n      __eta.res += \"      <li>\";\n      __eta.res += __eta.e(claim);\n      __eta.res += \"</li>\\n    \";\n    });\n    __eta.res += \"  </ul>\\n\";\n  }\n  __eta.res += \"\\n\";\n  let missingResourceScopes = it.details.missingResourceScopes;\n  if (missingResourceScopes) {\n    __eta.res += \"  \";\n    for (const [indicator, scopes] of Object.entries(it.details.missingResourceScopes)) {\n      __eta.res += \"    <li>\";\n      __eta.res += __eta.e(indicator);\n      __eta.res += \":</li>\\n    <ul>\\n      \";\n      scopes.forEach((scope) => {\n        __eta.res += \"        <li>\";\n        __eta.res += __eta.e(scope);\n        __eta.res += \"</li>\\n      \";\n      });\n      __eta.res += \"    </ul>\\n  \";\n    }\n  }\n  __eta.res += \"\\n\";\n  let rar = it.details.rar;\n  if (rar) {\n    __eta.res += \"  <li>authorization_details:</li>\\n  <ul>\\n    \";\n    for (const { type, ...detail } of it.details.rar) {\n      __eta.res += \"      <li><pre>\";\n      __eta.res += __eta.e(JSON.stringify({ type, ...detail }, null, 4));\n      __eta.res += \"</pre></li>\\n    \";\n    }\n    __eta.res += \"  </ul>\\n\";\n  }\n  __eta.res += \"\\n\";\n  if (it.params.scope?.includes(\"offline_access\")) {\n    __eta.res +=\n      \"  <li>\\n  the client is asking to have offline access to this authorization\\n    \";\n    if (!it.details.missingOIDCScope || !it.details.missingOIDCScope.includes(\"offline_access\")) {\n      __eta.res += \"      (which you've previously granted)\\n    \";\n    }\n    __eta.res += \"  </li>\\n\";\n  }\n  __eta.res += '\\n</ul>\\n\\n<form autocomplete=\"off\" action=\"';\n  __eta.res += __eta.e(it.submitUrl);\n  __eta.res +=\n    '\" method=\"post\">\\n  <input type=\"hidden\" name=\"prompt\" value=\"consent\"/>\\n  <button autofocus type=\"submit\" class=\"login login-submit\">Continue</button>\\n</form>\\n';\n\n  if (__eta.layout) {\n    __eta.res = include(__eta.layout, { ...it, body: __eta.res, ...__eta.layoutData });\n  }\n\n  return __eta.res;\n}\n", "export default async function noCache(ctx, next) {\n  ctx.set('cache-control', 'no-store');\n  await next();\n}\n", "import cors from '@koa/cors';\n\nimport { InvalidRequest } from '../helpers/errors.js';\nimport instance from '../helpers/weak_cache.js';\n\nfunction checkClientCORS(ctx, client) {\n  const origin = ctx.get('Origin');\n  const { clientBasedCORS } = instance(ctx.oidc.provider).configuration;\n\n  const allowed = clientBasedCORS(ctx, origin, client);\n\n  if (typeof allowed !== 'boolean') {\n    throw new Error('clientBasedCORS helper must be a synchronous function returning a Boolean');\n  }\n\n  if (!allowed) {\n    ctx.remove('Access-Control-Allow-Origin');\n    throw new InvalidRequest(`origin ${origin} not allowed for client: ${client.clientId}`);\n  }\n}\n\nexport default ({ clientBased = false, ...options }) => {\n  const builtin = cors({\n    keepHeadersOnError: false,\n    origin(ctx) {\n      return ctx.get('Origin') || '*';\n    },\n    ...options,\n  });\n\n  return async (ctx, next) => {\n    const headers = Object.keys(ctx.response.headers);\n\n    // ignore built in CORS handling since the developer wants to do it their way\n    if (headers.find((x) => x.toLowerCase().startsWith('access-control-'))) {\n      return next();\n    }\n\n    ctx.vary('Origin');\n    // preflights or generally available (e.g. discovery) -> CORS is allowed\n    if (ctx.method === 'OPTIONS' || !clientBased || !ctx.get('Origin')) {\n      return builtin(ctx, next);\n    }\n\n    ctx.oidc.once('assign.client', checkClientCORS);\n\n    return builtin(ctx, next);\n  };\n};\n", "/* eslint-disable camelcase, import/export */\n\nexport * as authorization_code from './authorization_code.js';\nexport * as client_credentials from './client_credentials.js';\nexport * as refresh_token from './refresh_token.js';\nexport * as device_code from './device_code.js';\nexport * as ciba from './ciba.js';\n", "import { InvalidGrant } from '../../helpers/errors.js';\nimport presence from '../../helpers/validate_presence.js';\nimport instance from '../../helpers/weak_cache.js';\nimport checkPKCE from '../../helpers/pkce.js';\nimport revoke from '../../helpers/revoke.js';\nimport filterClaims from '../../helpers/filter_claims.js';\nimport dpopValidate, { CHALLENGE_OK_WINDOW } from '../../helpers/validate_dpop.js';\nimport resolveResource from '../../helpers/resolve_resource.js';\nimport epochTime from '../../helpers/epoch_time.js';\nimport checkRar from '../../shared/check_rar.js';\nimport getCtxAccountClaims from '../../helpers/account_claims.js';\nimport { setRefreshTokenBindings } from '../../helpers/set_rt_bindings.js';\nimport { checkAttestBinding } from '../../helpers/check_attest_binding.js';\n\nconst gty = 'authorization_code';\n\nexport const handler = async function authorizationCodeHandler(ctx) {\n  const {\n    findAccount,\n    issueRefreshToken,\n    allowOmittingSingleRegisteredRedirectUri,\n    conformIdTokenClaims,\n    features: {\n      userinfo,\n      mTLS: { getCertificate },\n      resourceIndicators,\n      richAuthorizationRequests,\n      dPoP: { allowReplay },\n    },\n  } = instance(ctx.oidc.provider).configuration;\n\n  if (allowOmittingSingleRegisteredRedirectUri && ctx.oidc.params.redirect_uri === undefined) {\n    // It is permitted to omit the redirect_uri if only ONE is registered on the client\n    const { 0: uri, length } = ctx.oidc.client.redirectUris;\n    if (uri && length === 1) {\n      ctx.oidc.params.redirect_uri = uri;\n    }\n  }\n\n  presence(ctx, 'code', 'redirect_uri');\n\n  const dPoP = await dpopValidate(ctx);\n\n  const code = await ctx.oidc.provider.AuthorizationCode.find(ctx.oidc.params.code, {\n    ignoreExpiration: true,\n  });\n\n  if (!code) {\n    throw new InvalidGrant('authorization code not found');\n  }\n\n  if (code.clientId !== ctx.oidc.client.clientId) {\n    throw new InvalidGrant('client mismatch');\n  }\n\n  if (code.isExpired) {\n    throw new InvalidGrant('authorization code is expired');\n  }\n\n  const grant = await ctx.oidc.provider.Grant.find(code.grantId, {\n    ignoreExpiration: true,\n  });\n\n  if (!grant) {\n    throw new InvalidGrant('grant not found');\n  }\n\n  if (grant.isExpired) {\n    throw new InvalidGrant('grant is expired');\n  }\n\n  checkPKCE(ctx.oidc.params.code_verifier, code.codeChallenge, code.codeChallengeMethod);\n\n  let cert;\n  if (ctx.oidc.client.tlsClientCertificateBoundAccessTokens) {\n    cert = getCertificate(ctx);\n    if (!cert) {\n      throw new InvalidGrant('mutual TLS client certificate not provided');\n    }\n  }\n\n  if (!dPoP && ctx.oidc.client.dpopBoundAccessTokens) {\n    throw new InvalidGrant('DPoP proof JWT not provided');\n  }\n\n  if (grant.clientId !== ctx.oidc.client.clientId) {\n    throw new InvalidGrant('client mismatch');\n  }\n\n  if (code.redirectUri !== ctx.oidc.params.redirect_uri) {\n    throw new InvalidGrant('authorization code redirect_uri mismatch');\n  }\n\n  if (ctx.oidc.client.clientAuthMethod === 'attest_jwt_client_auth' && code.attestationJkt) {\n    await checkAttestBinding(ctx, code);\n  }\n\n  if (code.consumed) {\n    await revoke(ctx, code.grantId);\n    throw new InvalidGrant('authorization code already consumed');\n  }\n\n  await code.consume();\n\n  ctx.oidc.entity('AuthorizationCode', code);\n  ctx.oidc.entity('Grant', grant);\n\n  const account = await findAccount(ctx, code.accountId, code);\n\n  if (!account) {\n    throw new InvalidGrant('authorization code invalid (referenced account not found)');\n  }\n\n  if (code.accountId !== grant.accountId) {\n    throw new InvalidGrant('accountId mismatch');\n  }\n\n  ctx.oidc.entity('Account', account);\n\n  const {\n    AccessToken, IdToken, RefreshToken, ReplayDetection,\n  } = ctx.oidc.provider;\n\n  const at = new AccessToken({\n    accountId: account.accountId,\n    client: ctx.oidc.client,\n    expiresWithSession: code.expiresWithSession,\n    grantId: code.grantId,\n    gty,\n    sessionUid: code.sessionUid,\n    sid: code.sid,\n  });\n\n  if (ctx.oidc.client.tlsClientCertificateBoundAccessTokens) {\n    at.setThumbprint('x5t', cert);\n  }\n\n  if (code.dpopJkt && !dPoP) {\n    throw new InvalidGrant('missing DPoP proof JWT');\n  }\n\n  if (dPoP) {\n    if (!allowReplay) {\n      const unique = await ReplayDetection.unique(\n        ctx.oidc.client.clientId,\n        dPoP.jti,\n        epochTime() + CHALLENGE_OK_WINDOW,\n      );\n\n      ctx.assert(unique, new InvalidGrant('DPoP proof JWT Replay detected'));\n    }\n\n    if (code.dpopJkt && code.dpopJkt !== dPoP.thumbprint) {\n      throw new InvalidGrant('DPoP proof key thumbprint does not match dpop_jkt');\n    }\n\n    at.setThumbprint('jkt', dPoP.thumbprint);\n  }\n\n  await checkRar(ctx, () => {});\n  const resource = await resolveResource(ctx, code, { userinfo, resourceIndicators });\n\n  if (resource) {\n    const resourceServerInfo = await resourceIndicators\n      .getResourceServerInfo(ctx, resource, ctx.oidc.client);\n    at.resourceServer = new ctx.oidc.provider.ResourceServer(resource, resourceServerInfo);\n    at.scope = grant.getResourceScopeFiltered(resource, code.scopes);\n  } else {\n    at.claims = code.claims;\n    at.scope = grant.getOIDCScopeFiltered(code.scopes);\n  }\n\n  if (richAuthorizationRequests.enabled && at.resourceServer) {\n    at.rar = await richAuthorizationRequests.rarForCodeResponse(ctx, at.resourceServer);\n  }\n\n  ctx.oidc.entity('AccessToken', at);\n  const accessToken = await at.save();\n\n  let refreshToken;\n  if (await issueRefreshToken(ctx, ctx.oidc.client, code)) {\n    const rt = new RefreshToken({\n      accountId: account.accountId,\n      acr: code.acr,\n      amr: code.amr,\n      authTime: code.authTime,\n      claims: code.claims,\n      client: ctx.oidc.client,\n      expiresWithSession: code.expiresWithSession,\n      grantId: code.grantId,\n      gty,\n      nonce: code.nonce,\n      resource: code.resource,\n      rotations: 0,\n      scope: code.scope,\n      sessionUid: code.sessionUid,\n      sid: code.sid,\n      rar: code.rar,\n    });\n\n    await setRefreshTokenBindings(ctx, at, rt);\n\n    ctx.oidc.entity('RefreshToken', rt);\n    refreshToken = await rt.save();\n  }\n\n  let idToken;\n  if (code.scopes.has('openid')) {\n    const claims = filterClaims(code.claims, 'id_token', grant);\n    const rejected = grant.getRejectedOIDCClaims();\n    const token = new IdToken({\n      ...await getCtxAccountClaims(ctx, 'id_token', code.scope, claims, rejected),\n      acr: code.acr,\n      amr: code.amr,\n      auth_time: code.authTime,\n    }, { ctx });\n\n    if (conformIdTokenClaims && userinfo.enabled && !at.aud) {\n      token.scope = 'openid';\n    } else {\n      token.scope = grant.getOIDCScopeFiltered(code.scopes);\n    }\n\n    token.mask = claims;\n    token.rejected = rejected;\n\n    token.set('nonce', code.nonce);\n    token.set('sid', code.sid);\n\n    idToken = await token.issue({ use: 'idtoken' });\n  }\n\n  ctx.body = {\n    access_token: accessToken,\n    expires_in: at.expiration,\n    id_token: idToken,\n    refresh_token: refreshToken,\n    scope: code.scope ? at.scope : (at.scope || undefined),\n    token_type: at.tokenType,\n    authorization_details: at.rar,\n  };\n};\n\nexport const parameters = new Set(['code', 'code_verifier', 'redirect_uri']);\n\nexport const grantType = gty;\n", "import * as formatters from './formatters.js';\nimport { InvalidRequest } from './errors.js';\n\nexport default function validatePresence(ctx, ...required) {\n  const { params } = ctx.oidc;\n  const missing = required.map((param) => {\n    if (params[param] === undefined) {\n      return param;\n    }\n\n    return undefined;\n  }).filter(Boolean);\n\n  if (missing.length) {\n    throw new InvalidRequest(`missing required ${formatters.pluralize('parameter', missing.length)} ${formatters.formatList(missing)}`);\n  }\n}\n", "import * as crypto from 'node:crypto';\n\nimport { InvalidGrant } from './errors.js';\nimport checkFormat from './pkce_format.js';\nimport constantEquals from './constant_equals.js';\n\nexport default function checkPKCE(verifier, challenge, method) {\n  if (verifier) {\n    checkFormat(verifier, 'code_verifier');\n  }\n\n  if (verifier || challenge) {\n    try {\n      let expected = verifier;\n      if (!expected) throw new Error();\n\n      if (method === 'S256') {\n        expected = crypto.hash('sha256', expected, 'base64url');\n      } else {\n        throw new Error();\n      }\n\n      if (!constantEquals(challenge, expected)) {\n        throw new Error();\n      }\n    } catch (err) {\n      throw new InvalidGrant('PKCE verification failed');\n    }\n  }\n}\n", "import { InvalidRequest } from './errors.js';\n\nconst check = /[^\\w.\\-~]/;\n\nexport default (input, param) => {\n  if (input.length < 43) {\n    throw new InvalidRequest(`${param} must be a string with a minimum length of 43 characters`);\n  }\n\n  if (input.length > 128) {\n    throw new InvalidRequest(`${param} must be a string with a maximum length of 128 characters`);\n  }\n\n  if (check.test(input)) {\n    throw new InvalidRequest(`${param} contains invalid characters`);\n  }\n};\n", "import { timingSafeEqual } from 'node:crypto';\n\nfunction paddedBuffer(string, length) {\n  const buffer = Buffer.alloc(length, undefined, 'utf8');\n  buffer.write(string);\n  return buffer;\n}\n\nfunction constantEquals(a, b, minComp = 0) {\n  if (!Number.isSafeInteger(minComp)) {\n    throw new TypeError('minComp must be an Integer');\n  }\n  if (typeof a !== 'string' || typeof b !== 'string') {\n    throw new TypeError('arguments must be strings');\n  }\n  const length = Math.max(a.length, b.length, minComp);\n  return timingSafeEqual(paddedBuffer(a, length), paddedBuffer(b, length));\n}\n\nexport default constantEquals;\n", "import instance from './weak_cache.js';\n\nexport default async function revoke(ctx, grantId) {\n  const { oidc: { client, provider } } = ctx;\n  const { grantTypes, revokeGrantPolicy } = instance(provider).configuration;\n  const refreshToken = client ? client.grantTypeAllowed('refresh_token') : grantTypes.has('refresh_token');\n  const authorizationCode = client ? client.grantTypeAllowed('authorization_code') : grantTypes.has('authorization_code');\n  const deviceCode = client ? client.grantTypeAllowed('urn:ietf:params:oauth:grant-type:device_code') : grantTypes.has('urn:ietf:params:oauth:grant-type:device_code');\n  const backchannelAuthenticationRequest = client ? client.grantTypeAllowed('urn:openid:params:grant-type:ciba') : grantTypes.has('urn:openid:params:grant-type:ciba');\n\n  const revokeGrant = await revokeGrantPolicy(ctx);\n\n  await Promise.all(\n    [\n      provider.AccessToken,\n      refreshToken ? provider.RefreshToken : undefined,\n      authorizationCode ? provider.AuthorizationCode : undefined,\n      deviceCode ? provider.DeviceCode : undefined,\n      backchannelAuthenticationRequest ? provider.BackchannelAuthenticationRequest : undefined,\n    ]\n      .map((model) => model && model.revokeByGrantId(grantId))\n      .concat(revokeGrant ? provider.Grant.adapter.destroy(grantId) : undefined),\n  );\n  if (revokeGrant) {\n    ctx.oidc.provider.emit('grant.revoked', ctx, grantId);\n  }\n}\n", "export default (source, target, grant) => {\n  const claims = { ...(source?.[target]) };\n  const requested = Object.keys(claims);\n  const granted = new Set(grant.getOIDCClaimsFiltered(new Set(requested)));\n\n  for (const claim of requested) {\n    // eslint-disable-next-line no-continue\n    if (['sub', 'sid', 'auth_time', 'acr', 'amr', 'iss'].includes(claim)) continue;\n    if (!granted.has(claim)) {\n      delete claims[claim];\n    }\n  }\n  return claims;\n};\n", "import * as crypto from 'node:crypto';\n\nimport {\n  jwtVerify,\n  EmbeddedJWK,\n  calculateJwkThumbprint,\n} from 'jose';\n\nimport { InvalidDpopProof, UseDpopNonce } from './errors.js';\nimport instance from './weak_cache.js';\nimport epochTime from './epoch_time.js';\nimport { CHALLENGE_OK_WINDOW } from './challenge.js';\n\nexport { CHALLENGE_OK_WINDOW };\n\nconst weakMap = new WeakMap();\n\nexport default async (ctx, accessToken) => {\n  if (weakMap.has(ctx)) {\n    return weakMap.get(ctx);\n  }\n\n  const {\n    features: { dPoP: dPoPConfig },\n    dPoPSigningAlgValues,\n  } = instance(ctx.oidc.provider).configuration;\n\n  if (!dPoPConfig.enabled) {\n    return undefined;\n  }\n\n  const proof = ctx.get('DPoP');\n\n  if (!proof) {\n    return undefined;\n  }\n\n  const { DPoPNonces } = instance(ctx.oidc.provider);\n\n  const requireNonce = dPoPConfig.requireNonce(ctx);\n  if (typeof requireNonce !== 'boolean') {\n    throw new Error('features.dPoP.requireNonce must return a boolean');\n  }\n  if (requireNonce && !DPoPNonces) {\n    throw new Error('features.dPoP.nonceSecret configuration is missing');\n  }\n\n  const nextNonce = DPoPNonces?.nextChallenge();\n  let payload;\n  let protectedHeader;\n  try {\n    ({ protectedHeader, payload } = await jwtVerify(proof, EmbeddedJWK, { algorithms: dPoPSigningAlgValues, typ: 'dpop+jwt' }));\n\n    if (typeof payload.iat !== 'number' || !payload.iat) {\n      throw new InvalidDpopProof('DPoP proof must have a iat number property');\n    }\n\n    if (typeof payload.jti !== 'string' || !payload.jti) {\n      throw new InvalidDpopProof('DPoP proof must have a jti string property');\n    }\n\n    if (payload.nonce !== undefined && typeof payload.nonce !== 'string') {\n      throw new InvalidDpopProof('DPoP proof nonce must be a string');\n    }\n\n    if (!payload.nonce) {\n      const now = epochTime();\n      const diff = Math.abs(now - payload.iat);\n      if (diff > CHALLENGE_OK_WINDOW) {\n        if (nextNonce) {\n          ctx.set('dpop-nonce', nextNonce);\n          throw new UseDpopNonce('DPoP proof iat is not recent enough, use a DPoP nonce instead');\n        }\n        throw new InvalidDpopProof('DPoP proof iat is not recent enough');\n      }\n    } else if (!DPoPNonces) {\n      throw new InvalidDpopProof('DPoP nonces are not supported');\n    }\n\n    if (payload.htm !== ctx.method) {\n      throw new InvalidDpopProof('DPoP proof htm mismatch');\n    }\n\n    {\n      const expected = new URL(ctx.oidc.urlFor(ctx.oidc.route)).href;\n      const actual = URL.parse(payload.htu);\n      if (!actual) return false;\n      actual.hash = '';\n      actual.search = '';\n\n      if (actual?.href !== expected) {\n        throw new InvalidDpopProof('DPoP proof htu mismatch');\n      }\n    }\n\n    if (accessToken) {\n      const ath = crypto.hash('sha256', accessToken, 'base64url');\n      if (payload.ath !== ath) {\n        throw new InvalidDpopProof('DPoP proof ath mismatch');\n      }\n    }\n  } catch (err) {\n    if (err instanceof InvalidDpopProof || err instanceof UseDpopNonce) {\n      throw err;\n    }\n    throw new InvalidDpopProof('invalid DPoP key binding', err.message);\n  }\n\n  if (!payload.nonce && requireNonce) {\n    ctx.set('dpop-nonce', nextNonce);\n    throw new UseDpopNonce('nonce is required in the DPoP proof');\n  }\n\n  if (payload.nonce && !DPoPNonces.checkChallenge(payload.nonce)) {\n    ctx.set('dpop-nonce', nextNonce);\n    throw new UseDpopNonce('invalid nonce in DPoP proof');\n  }\n\n  if (payload.nonce !== nextNonce) {\n    ctx.set('dpop-nonce', nextNonce);\n  }\n\n  const thumbprint = await calculateJwkThumbprint(protectedHeader.jwk);\n\n  const result = { thumbprint, jti: payload.jti, iat: payload.iat };\n  weakMap.set(ctx, result);\n\n  return result;\n};\n", "export const encoder = new TextEncoder();\nexport const decoder = new TextDecoder();\nconst MAX_INT32 = 2 ** 32;\nexport function concat(...buffers) {\n    const size = buffers.reduce((acc, { length }) => acc + length, 0);\n    const buf = new Uint8Array(size);\n    let i = 0;\n    for (const buffer of buffers) {\n        buf.set(buffer, i);\n        i += buffer.length;\n    }\n    return buf;\n}\nfunction writeUInt32BE(buf, value, offset) {\n    if (value < 0 || value >= MAX_INT32) {\n        throw new RangeError(`value must be >= 0 and <= ${MAX_INT32 - 1}. Received ${value}`);\n    }\n    buf.set([value >>> 24, value >>> 16, value >>> 8, value & 0xff], offset);\n}\nexport function uint64be(value) {\n    const high = Math.floor(value / MAX_INT32);\n    const low = value % MAX_INT32;\n    const buf = new Uint8Array(8);\n    writeUInt32BE(buf, high, 0);\n    writeUInt32BE(buf, low, 4);\n    return buf;\n}\nexport function uint32be(value) {\n    const buf = new Uint8Array(4);\n    writeUInt32BE(buf, value);\n    return buf;\n}\nexport function encode(string) {\n    const bytes = new Uint8Array(string.length);\n    for (let i = 0; i < string.length; i++) {\n        const code = string.charCodeAt(i);\n        if (code > 127) {\n            throw new TypeError('non-ASCII string encountered in encode()');\n        }\n        bytes[i] = code;\n    }\n    return bytes;\n}\n", "export function encodeBase64(input) {\n    if (Uint8Array.prototype.toBase64) {\n        return input.toBase64();\n    }\n    const CHUNK_SIZE = 0x8000;\n    const arr = [];\n    for (let i = 0; i < input.length; i += CHUNK_SIZE) {\n        arr.push(String.fromCharCode.apply(null, input.subarray(i, i + CHUNK_SIZE)));\n    }\n    return btoa(arr.join(''));\n}\nexport function decodeBase64(encoded) {\n    if (Uint8Array.fromBase64) {\n        return Uint8Array.fromBase64(encoded);\n    }\n    const binary = atob(encoded);\n    const bytes = new Uint8Array(binary.length);\n    for (let i = 0; i < binary.length; i++) {\n        bytes[i] = binary.charCodeAt(i);\n    }\n    return bytes;\n}\n", "import { encoder, decoder } from '../lib/buffer_utils.js';\nimport { encodeBase64, decodeBase64 } from '../lib/base64.js';\nexport function decode(input) {\n    if (Uint8Array.fromBase64) {\n        return Uint8Array.fromBase64(typeof input === 'string' ? input : decoder.decode(input), {\n            alphabet: 'base64url',\n        });\n    }\n    let encoded = input;\n    if (encoded instanceof Uint8Array) {\n        encoded = decoder.decode(encoded);\n    }\n    encoded = encoded.replace(/-/g, '+').replace(/_/g, '/');\n    try {\n        return decodeBase64(encoded);\n    }\n    catch {\n        throw new TypeError('The input to be decoded is not correctly encoded.');\n    }\n}\nexport function encode(input) {\n    let unencoded = input;\n    if (typeof unencoded === 'string') {\n        unencoded = encoder.encode(unencoded);\n    }\n    if (Uint8Array.prototype.toBase64) {\n        return unencoded.toBase64({ alphabet: 'base64url', omitPadding: true });\n    }\n    return encodeBase64(unencoded).replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\n}\n", "export class JOSEError extends Error {\n    static code = 'ERR_JOSE_GENERIC';\n    code = 'ERR_JOSE_GENERIC';\n    constructor(message, options) {\n        super(message, options);\n        this.name = this.constructor.name;\n        Error.captureStackTrace?.(this, this.constructor);\n    }\n}\nexport class JWTClaimValidationFailed extends JOSEError {\n    static code = 'ERR_JWT_CLAIM_VALIDATION_FAILED';\n    code = 'ERR_JWT_CLAIM_VALIDATION_FAILED';\n    claim;\n    reason;\n    payload;\n    constructor(message, payload, claim = 'unspecified', reason = 'unspecified') {\n        super(message, { cause: { claim, reason, payload } });\n        this.claim = claim;\n        this.reason = reason;\n        this.payload = payload;\n    }\n}\nexport class JWTExpired extends JOSEError {\n    static code = 'ERR_JWT_EXPIRED';\n    code = 'ERR_JWT_EXPIRED';\n    claim;\n    reason;\n    payload;\n    constructor(message, payload, claim = 'unspecified', reason = 'unspecified') {\n        super(message, { cause: { claim, reason, payload } });\n        this.claim = claim;\n        this.reason = reason;\n        this.payload = payload;\n    }\n}\nexport class JOSEAlgNotAllowed extends JOSEError {\n    static code = 'ERR_JOSE_ALG_NOT_ALLOWED';\n    code = 'ERR_JOSE_ALG_NOT_ALLOWED';\n}\nexport class JOSENotSupported extends JOSEError {\n    static code = 'ERR_JOSE_NOT_SUPPORTED';\n    code = 'ERR_JOSE_NOT_SUPPORTED';\n}\nexport class JWEDecryptionFailed extends JOSEError {\n    static code = 'ERR_JWE_DECRYPTION_FAILED';\n    code = 'ERR_JWE_DECRYPTION_FAILED';\n    constructor(message = 'decryption operation failed', options) {\n        super(message, options);\n    }\n}\nexport class JWEInvalid extends JOSEError {\n    static code = 'ERR_JWE_INVALID';\n    code = 'ERR_JWE_INVALID';\n}\nexport class JWSInvalid extends JOSEError {\n    static code = 'ERR_JWS_INVALID';\n    code = 'ERR_JWS_INVALID';\n}\nexport class JWTInvalid extends JOSEError {\n    static code = 'ERR_JWT_INVALID';\n    code = 'ERR_JWT_INVALID';\n}\nexport class JWKInvalid extends JOSEError {\n    static code = 'ERR_JWK_INVALID';\n    code = 'ERR_JWK_INVALID';\n}\nexport class JWKSInvalid extends JOSEError {\n    static code = 'ERR_JWKS_INVALID';\n    code = 'ERR_JWKS_INVALID';\n}\nexport class JWKSNoMatchingKey extends JOSEError {\n    static code = 'ERR_JWKS_NO_MATCHING_KEY';\n    code = 'ERR_JWKS_NO_MATCHING_KEY';\n    constructor(message = 'no applicable key found in the JSON Web Key Set', options) {\n        super(message, options);\n    }\n}\nexport class JWKSMultipleMatchingKeys extends JOSEError {\n    [Symbol.asyncIterator];\n    static code = 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';\n    code = 'ERR_JWKS_MULTIPLE_MATCHING_KEYS';\n    constructor(message = 'multiple matching keys found in the JSON Web Key Set', options) {\n        super(message, options);\n    }\n}\nexport class JWKSTimeout extends JOSEError {\n    static code = 'ERR_JWKS_TIMEOUT';\n    code = 'ERR_JWKS_TIMEOUT';\n    constructor(message = 'request timed out', options) {\n        super(message, options);\n    }\n}\nexport class JWSSignatureVerificationFailed extends JOSEError {\n    static code = 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';\n    code = 'ERR_JWS_SIGNATURE_VERIFICATION_FAILED';\n    constructor(message = 'signature verification failed', options) {\n        super(message, options);\n    }\n}\n", "import { JOSENotSupported } from '../util/errors.js';\nexport function bitLength(alg) {\n    switch (alg) {\n        case 'A128GCM':\n        case 'A128GCMKW':\n        case 'A192GCM':\n        case 'A192GCMKW':\n        case 'A256GCM':\n        case 'A256GCMKW':\n            return 96;\n        case 'A128CBC-HS256':\n        case 'A192CBC-HS384':\n        case 'A256CBC-HS512':\n            return 128;\n        default:\n            throw new JOSENotSupported(`Unsupported JWE Algorithm: ${alg}`);\n    }\n}\nexport const generateIv = (alg) => crypto.getRandomValues(new Uint8Array(bitLength(alg) >> 3));\n", "import { JWEInvalid } from '../util/errors.js';\nimport { bitLength } from './iv.js';\nexport function checkIvLength(enc, iv) {\n    if (iv.length << 3 !== bitLength(enc)) {\n        throw new JWEInvalid('Invalid Initialization Vector length');\n    }\n}\n", "import { JWEInvalid } from '../util/errors.js';\nexport function checkCekLength(cek, expected) {\n    const actual = cek.byteLength << 3;\n    if (actual !== expected) {\n        throw new JWEInvalid(`Invalid Content Encryption Key length. Expected ${expected} bits, got ${actual} bits`);\n    }\n}\n", "const unusable = (name, prop = 'algorithm.name') => new TypeError(`CryptoKey does not support this operation, its ${prop} must be ${name}`);\nconst isAlgorithm = (algorithm, name) => algorithm.name === name;\nfunction getHashLength(hash) {\n    return parseInt(hash.name.slice(4), 10);\n}\nfunction getNamedCurve(alg) {\n    switch (alg) {\n        case 'ES256':\n            return 'P-256';\n        case 'ES384':\n            return 'P-384';\n        case 'ES512':\n            return 'P-521';\n        default:\n            throw new Error('unreachable');\n    }\n}\nfunction checkUsage(key, usage) {\n    if (usage && !key.usages.includes(usage)) {\n        throw new TypeError(`CryptoKey does not support this operation, its usages must include ${usage}.`);\n    }\n}\nexport function checkSigCryptoKey(key, alg, usage) {\n    switch (alg) {\n        case 'HS256':\n        case 'HS384':\n        case 'HS512': {\n            if (!isAlgorithm(key.algorithm, 'HMAC'))\n                throw unusable('HMAC');\n            const expected = parseInt(alg.slice(2), 10);\n            const actual = getHashLength(key.algorithm.hash);\n            if (actual !== expected)\n                throw unusable(`SHA-${expected}`, 'algorithm.hash');\n            break;\n        }\n        case 'RS256':\n        case 'RS384':\n        case 'RS512': {\n            if (!isAlgorithm(key.algorithm, 'RSASSA-PKCS1-v1_5'))\n                throw unusable('RSASSA-PKCS1-v1_5');\n            const expected = parseInt(alg.slice(2), 10);\n            const actual = getHashLength(key.algorithm.hash);\n            if (actual !== expected)\n                throw unusable(`SHA-${expected}`, 'algorithm.hash');\n            break;\n        }\n        case 'PS256':\n        case 'PS384':\n        case 'PS512': {\n            if (!isAlgorithm(key.algorithm, 'RSA-PSS'))\n                throw unusable('RSA-PSS');\n            const expected = parseInt(alg.slice(2), 10);\n            const actual = getHashLength(key.algorithm.hash);\n            if (actual !== expected)\n                throw unusable(`SHA-${expected}`, 'algorithm.hash');\n            break;\n        }\n        case 'Ed25519':\n        case 'EdDSA': {\n            if (!isAlgorithm(key.algorithm, 'Ed25519'))\n                throw unusable('Ed25519');\n            break;\n        }\n        case 'ML-DSA-44':\n        case 'ML-DSA-65':\n        case 'ML-DSA-87': {\n            if (!isAlgorithm(key.algorithm, alg))\n                throw unusable(alg);\n            break;\n        }\n        case 'ES256':\n        case 'ES384':\n        case 'ES512': {\n            if (!isAlgorithm(key.algorithm, 'ECDSA'))\n                throw unusable('ECDSA');\n            const expected = getNamedCurve(alg);\n            const actual = key.algorithm.namedCurve;\n            if (actual !== expected)\n                throw unusable(expected, 'algorithm.namedCurve');\n            break;\n        }\n        default:\n            throw new TypeError('CryptoKey does not support this operation');\n    }\n    checkUsage(key, usage);\n}\nexport function checkEncCryptoKey(key, alg, usage) {\n    switch (alg) {\n        case 'A128GCM':\n        case 'A192GCM':\n        case 'A256GCM': {\n            if (!isAlgorithm(key.algorithm, 'AES-GCM'))\n                throw unusable('AES-GCM');\n            const expected = parseInt(alg.slice(1, 4), 10);\n            const actual = key.algorithm.length;\n            if (actual !== expected)\n                throw unusable(expected, 'algorithm.length');\n            break;\n        }\n        case 'A128KW':\n        case 'A192KW':\n        case 'A256KW': {\n            if (!isAlgorithm(key.algorithm, 'AES-KW'))\n                throw unusable('AES-KW');\n            const expected = parseInt(alg.slice(1, 4), 10);\n            const actual = key.algorithm.length;\n            if (actual !== expected)\n                throw unusable(expected, 'algorithm.length');\n            break;\n        }\n        case 'ECDH': {\n            switch (key.algorithm.name) {\n                case 'ECDH':\n                case 'X25519':\n                    break;\n                default:\n                    throw unusable('ECDH or X25519');\n            }\n            break;\n        }\n        case 'PBES2-HS256+A128KW':\n        case 'PBES2-HS384+A192KW':\n        case 'PBES2-HS512+A256KW':\n            if (!isAlgorithm(key.algorithm, 'PBKDF2'))\n                throw unusable('PBKDF2');\n            break;\n        case 'RSA-OAEP':\n        case 'RSA-OAEP-256':\n        case 'RSA-OAEP-384':\n        case 'RSA-OAEP-512': {\n            if (!isAlgorithm(key.algorithm, 'RSA-OAEP'))\n                throw unusable('RSA-OAEP');\n            const expected = parseInt(alg.slice(9), 10) || 1;\n            const actual = getHashLength(key.algorithm.hash);\n            if (actual !== expected)\n                throw unusable(`SHA-${expected}`, 'algorithm.hash');\n            break;\n        }\n        default:\n            throw new TypeError('CryptoKey does not support this operation');\n    }\n    checkUsage(key, usage);\n}\n", "function message(msg, actual, ...types) {\n    types = types.filter(Boolean);\n    if (types.length > 2) {\n        const last = types.pop();\n        msg += `one of type ${types.join(', ')}, or ${last}.`;\n    }\n    else if (types.length === 2) {\n        msg += `one of type ${types[0]} or ${types[1]}.`;\n    }\n    else {\n        msg += `of type ${types[0]}.`;\n    }\n    if (actual == null) {\n        msg += ` Received ${actual}`;\n    }\n    else if (typeof actual === 'function' && actual.name) {\n        msg += ` Received function ${actual.name}`;\n    }\n    else if (typeof actual === 'object' && actual != null) {\n        if (actual.constructor?.name) {\n            msg += ` Received an instance of ${actual.constructor.name}`;\n        }\n    }\n    return msg;\n}\nexport const invalidKeyInput = (actual, ...types) => message('Key must be ', actual, ...types);\nexport const withAlg = (alg, actual, ...types) => message(`Key for the ${alg} algorithm must be `, actual, ...types);\n", "export function assertCryptoKey(key) {\n    if (!isCryptoKey(key)) {\n        throw new Error('CryptoKey instance expected');\n    }\n}\nexport const isCryptoKey = (key) => {\n    if (key?.[Symbol.toStringTag] === 'CryptoKey')\n        return true;\n    try {\n        return key instanceof CryptoKey;\n    }\n    catch {\n        return false;\n    }\n};\nexport const isKeyObject = (key) => key?.[Symbol.toStringTag] === 'KeyObject';\nexport const isKeyLike = (key) => isCryptoKey(key) || isKeyObject(key);\n", "import { concat, uint64be } from './buffer_utils.js';\nimport { checkIvLength } from './check_iv_length.js';\nimport { checkCekLength } from './check_cek_length.js';\nimport { JOSENotSupported, JWEDecryptionFailed, JWEInvalid } from '../util/errors.js';\nimport { checkEncCryptoKey } from './crypto_key.js';\nimport { invalidKeyInput } from './invalid_key_input.js';\nimport { isCryptoKey } from './is_key_like.js';\nasync function timingSafeEqual(a, b) {\n    if (!(a instanceof Uint8Array)) {\n        throw new TypeError('First argument must be a buffer');\n    }\n    if (!(b instanceof Uint8Array)) {\n        throw new TypeError('Second argument must be a buffer');\n    }\n    const algorithm = { name: 'HMAC', hash: 'SHA-256' };\n    const key = (await crypto.subtle.generateKey(algorithm, false, ['sign']));\n    const aHmac = new Uint8Array(await crypto.subtle.sign(algorithm, key, a));\n    const bHmac = new Uint8Array(await crypto.subtle.sign(algorithm, key, b));\n    let out = 0;\n    let i = -1;\n    while (++i < 32) {\n        out |= aHmac[i] ^ bHmac[i];\n    }\n    return out === 0;\n}\nasync function cbcDecrypt(enc, cek, ciphertext, iv, tag, aad) {\n    if (!(cek instanceof Uint8Array)) {\n        throw new TypeError(invalidKeyInput(cek, 'Uint8Array'));\n    }\n    const keySize = parseInt(enc.slice(1, 4), 10);\n    const encKey = await crypto.subtle.importKey('raw', cek.subarray(keySize >> 3), 'AES-CBC', false, ['decrypt']);\n    const macKey = await crypto.subtle.importKey('raw', cek.subarray(0, keySize >> 3), {\n        hash: `SHA-${keySize << 1}`,\n        name: 'HMAC',\n    }, false, ['sign']);\n    const macData = concat(aad, iv, ciphertext, uint64be(aad.length << 3));\n    const expectedTag = new Uint8Array((await crypto.subtle.sign('HMAC', macKey, macData)).slice(0, keySize >> 3));\n    let macCheckPassed;\n    try {\n        macCheckPassed = await timingSafeEqual(tag, expectedTag);\n    }\n    catch {\n    }\n    if (!macCheckPassed) {\n        throw new JWEDecryptionFailed();\n    }\n    let plaintext;\n    try {\n        plaintext = new Uint8Array(await crypto.subtle.decrypt({ iv: iv, name: 'AES-CBC' }, encKey, ciphertext));\n    }\n    catch {\n    }\n    if (!plaintext) {\n        throw new JWEDecryptionFailed();\n    }\n    return plaintext;\n}\nasync function gcmDecrypt(enc, cek, ciphertext, iv, tag, aad) {\n    let encKey;\n    if (cek instanceof Uint8Array) {\n        encKey = await crypto.subtle.importKey('raw', cek, 'AES-GCM', false, ['decrypt']);\n    }\n    else {\n        checkEncCryptoKey(cek, enc, 'decrypt');\n        encKey = cek;\n    }\n    try {\n        return new Uint8Array(await crypto.subtle.decrypt({\n            additionalData: aad,\n            iv: iv,\n            name: 'AES-GCM',\n            tagLength: 128,\n        }, encKey, concat(ciphertext, tag)));\n    }\n    catch {\n        throw new JWEDecryptionFailed();\n    }\n}\nexport async function decrypt(enc, cek, ciphertext, iv, tag, aad) {\n    if (!isCryptoKey(cek) && !(cek instanceof Uint8Array)) {\n        throw new TypeError(invalidKeyInput(cek, 'CryptoKey', 'KeyObject', 'Uint8Array', 'JSON Web Key'));\n    }\n    if (!iv) {\n        throw new JWEInvalid('JWE Initialization Vector missing');\n    }\n    if (!tag) {\n        throw new JWEInvalid('JWE Authentication Tag missing');\n    }\n    checkIvLength(enc, iv);\n    switch (enc) {\n        case 'A128CBC-HS256':\n        case 'A192CBC-HS384':\n        case 'A256CBC-HS512':\n            if (cek instanceof Uint8Array)\n                checkCekLength(cek, parseInt(enc.slice(-3), 10));\n            return cbcDecrypt(enc, cek, ciphertext, iv, tag, aad);\n        case 'A128GCM':\n        case 'A192GCM':\n        case 'A256GCM':\n            if (cek instanceof Uint8Array)\n                checkCekLength(cek, parseInt(enc.slice(1, 4), 10));\n            return gcmDecrypt(enc, cek, ciphertext, iv, tag, aad);\n        default:\n            throw new JOSENotSupported('Unsupported JWE Content Encryption Algorithm');\n    }\n}\n", "export function isDisjoint(...headers) {\n    const sources = headers.filter(Boolean);\n    if (sources.length === 0 || sources.length === 1) {\n        return true;\n    }\n    let acc;\n    for (const header of sources) {\n        const parameters = Object.keys(header);\n        if (!acc || acc.size === 0) {\n            acc = new Set(parameters);\n            continue;\n        }\n        for (const parameter of parameters) {\n            if (acc.has(parameter)) {\n                return false;\n            }\n            acc.add(parameter);\n        }\n    }\n    return true;\n}\n", "const isObjectLike = (value) => typeof value === 'object' && value !== null;\nexport function isObject(input) {\n    if (!isObjectLike(input) || Object.prototype.toString.call(input) !== '[object Object]') {\n        return false;\n    }\n    if (Object.getPrototypeOf(input) === null) {\n        return true;\n    }\n    let proto = input;\n    while (Object.getPrototypeOf(proto) !== null) {\n        proto = Object.getPrototypeOf(proto);\n    }\n    return Object.getPrototypeOf(input) === proto;\n}\n", "import { checkEncCryptoKey } from './crypto_key.js';\nfunction checkKeySize(key, alg) {\n    if (key.algorithm.length !== parseInt(alg.slice(1, 4), 10)) {\n        throw new TypeError(`Invalid key size for alg: ${alg}`);\n    }\n}\nfunction getCryptoKey(key, alg, usage) {\n    if (key instanceof Uint8Array) {\n        return crypto.subtle.importKey('raw', key, 'AES-KW', true, [usage]);\n    }\n    checkEncCryptoKey(key, alg, usage);\n    return key;\n}\nexport async function wrap(alg, key, cek) {\n    const cryptoKey = await getCryptoKey(key, alg, 'wrapKey');\n    checkKeySize(cryptoKey, alg);\n    const cryptoKeyCek = await crypto.subtle.importKey('raw', cek, { hash: 'SHA-256', name: 'HMAC' }, true, ['sign']);\n    return new Uint8Array(await crypto.subtle.wrapKey('raw', cryptoKeyCek, cryptoKey, 'AES-KW'));\n}\nexport async function unwrap(alg, key, encryptedKey) {\n    const cryptoKey = await getCryptoKey(key, alg, 'unwrapKey');\n    checkKeySize(cryptoKey, alg);\n    const cryptoKeyCek = await crypto.subtle.unwrapKey('raw', encryptedKey, cryptoKey, 'AES-KW', { hash: 'SHA-256', name: 'HMAC' }, true, ['sign']);\n    return new Uint8Array(await crypto.subtle.exportKey('raw', cryptoKeyCek));\n}\n", "export async function digest(algorithm, data) {\n    const subtleDigest = `SHA-${algorithm.slice(-3)}`;\n    return new Uint8Array(await crypto.subtle.digest(subtleDigest, data));\n}\n", "import { encode, concat, uint32be } from './buffer_utils.js';\nimport { checkEncCryptoKey } from './crypto_key.js';\nimport { digest } from './digest.js';\nfunction lengthAndInput(input) {\n    return concat(uint32be(input.length), input);\n}\nasync function concatKdf(Z, L, OtherInfo) {\n    const dkLen = L >> 3;\n    const hashLen = 32;\n    const reps = Math.ceil(dkLen / hashLen);\n    const dk = new Uint8Array(reps * hashLen);\n    for (let i = 1; i <= reps; i++) {\n        const hashInput = new Uint8Array(4 + Z.length + OtherInfo.length);\n        hashInput.set(uint32be(i), 0);\n        hashInput.set(Z, 4);\n        hashInput.set(OtherInfo, 4 + Z.length);\n        const hashResult = await digest('sha256', hashInput);\n        dk.set(hashResult, (i - 1) * hashLen);\n    }\n    return dk.slice(0, dkLen);\n}\nexport async function deriveKey(publicKey, privateKey, algorithm, keyLength, apu = new Uint8Array(), apv = new Uint8Array()) {\n    checkEncCryptoKey(publicKey, 'ECDH');\n    checkEncCryptoKey(privateKey, 'ECDH', 'deriveBits');\n    const algorithmID = lengthAndInput(encode(algorithm));\n    const partyUInfo = lengthAndInput(apu);\n    const partyVInfo = lengthAndInput(apv);\n    const suppPubInfo = uint32be(keyLength);\n    const suppPrivInfo = new Uint8Array();\n    const otherInfo = concat(algorithmID, partyUInfo, partyVInfo, suppPubInfo, suppPrivInfo);\n    const Z = new Uint8Array(await crypto.subtle.deriveBits({\n        name: publicKey.algorithm.name,\n        public: publicKey,\n    }, privateKey, getEcdhBitLength(publicKey)));\n    return concatKdf(Z, keyLength, otherInfo);\n}\nfunction getEcdhBitLength(publicKey) {\n    if (publicKey.algorithm.name === 'X25519') {\n        return 256;\n    }\n    return (Math.ceil(parseInt(publicKey.algorithm.namedCurve.slice(-3), 10) / 8) << 3);\n}\nexport function allowed(key) {\n    switch (key.algorithm.namedCurve) {\n        case 'P-256':\n        case 'P-384':\n        case 'P-521':\n            return true;\n        default:\n            return key.algorithm.name === 'X25519';\n    }\n}\n", "import { encode as b64u } from '../util/base64url.js';\nimport * as aeskw from './aeskw.js';\nimport { checkEncCryptoKey } from './crypto_key.js';\nimport { concat, encode } from './buffer_utils.js';\nimport { JWEInvalid } from '../util/errors.js';\nfunction getCryptoKey(key, alg) {\n    if (key instanceof Uint8Array) {\n        return crypto.subtle.importKey('raw', key, 'PBKDF2', false, [\n            'deriveBits',\n        ]);\n    }\n    checkEncCryptoKey(key, alg, 'deriveBits');\n    return key;\n}\nconst concatSalt = (alg, p2sInput) => concat(encode(alg), Uint8Array.of(0x00), p2sInput);\nasync function deriveKey(p2s, alg, p2c, key) {\n    if (!(p2s instanceof Uint8Array) || p2s.length < 8) {\n        throw new JWEInvalid('PBES2 Salt Input must be 8 or more octets');\n    }\n    const salt = concatSalt(alg, p2s);\n    const keylen = parseInt(alg.slice(13, 16), 10);\n    const subtleAlg = {\n        hash: `SHA-${alg.slice(8, 11)}`,\n        iterations: p2c,\n        name: 'PBKDF2',\n        salt,\n    };\n    const cryptoKey = await getCryptoKey(key, alg);\n    return new Uint8Array(await crypto.subtle.deriveBits(subtleAlg, cryptoKey, keylen));\n}\nexport async function wrap(alg, key, cek, p2c = 2048, p2s = crypto.getRandomValues(new Uint8Array(16))) {\n    const derived = await deriveKey(p2s, alg, p2c, key);\n    const encryptedKey = await aeskw.wrap(alg.slice(-6), derived, cek);\n    return { encryptedKey, p2c, p2s: b64u(p2s) };\n}\nexport async function unwrap(alg, key, encryptedKey, p2c, p2s) {\n    const derived = await deriveKey(p2s, alg, p2c, key);\n    return aeskw.unwrap(alg.slice(-6), derived, encryptedKey);\n}\n", "export function checkKeyLength(alg, key) {\n    if (alg.startsWith('RS') || alg.startsWith('PS')) {\n        const { modulusLength } = key.algorithm;\n        if (typeof modulusLength !== 'number' || modulusLength < 2048) {\n            throw new TypeError(`${alg} requires key modulusLength to be 2048 bits or larger`);\n        }\n    }\n}\n", "import { checkEncCryptoKey } from './crypto_key.js';\nimport { checkKeyLength } from './check_key_length.js';\nimport { JOSENotSupported } from '../util/errors.js';\nconst subtleAlgorithm = (alg) => {\n    switch (alg) {\n        case 'RSA-OAEP':\n        case 'RSA-OAEP-256':\n        case 'RSA-OAEP-384':\n        case 'RSA-OAEP-512':\n            return 'RSA-OAEP';\n        default:\n            throw new JOSENotSupported(`alg ${alg} is not supported either by JOSE or your javascript runtime`);\n    }\n};\nexport async function encrypt(alg, key, cek) {\n    checkEncCryptoKey(key, alg, 'encrypt');\n    checkKeyLength(alg, key);\n    return new Uint8Array(await crypto.subtle.encrypt(subtleAlgorithm(alg), key, cek));\n}\nexport async function decrypt(alg, key, encryptedKey) {\n    checkEncCryptoKey(key, alg, 'decrypt');\n    checkKeyLength(alg, key);\n    return new Uint8Array(await crypto.subtle.decrypt(subtleAlgorithm(alg), key, encryptedKey));\n}\n", "import { JOSENotSupported } from '../util/errors.js';\nexport function cekLength(alg) {\n    switch (alg) {\n        case 'A128GCM':\n            return 128;\n        case 'A192GCM':\n            return 192;\n        case 'A256GCM':\n        case 'A128CBC-HS256':\n            return 256;\n        case 'A192CBC-HS384':\n            return 384;\n        case 'A256CBC-HS512':\n            return 512;\n        default:\n            throw new JOSENotSupported(`Unsupported JWE Algorithm: ${alg}`);\n    }\n}\nexport const generateCek = (alg) => crypto.getRandomValues(new Uint8Array(cekLength(alg) >> 3));\n", "import { JOSENotSupported } from '../util/errors.js';\nfunction subtleMapping(jwk) {\n    let algorithm;\n    let keyUsages;\n    switch (jwk.kty) {\n        case 'AKP': {\n            switch (jwk.alg) {\n                case 'ML-DSA-44':\n                case 'ML-DSA-65':\n                case 'ML-DSA-87':\n                    algorithm = { name: jwk.alg };\n                    keyUsages = jwk.priv ? ['sign'] : ['verify'];\n                    break;\n                default:\n                    throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n            }\n            break;\n        }\n        case 'RSA': {\n            switch (jwk.alg) {\n                case 'PS256':\n                case 'PS384':\n                case 'PS512':\n                    algorithm = { name: 'RSA-PSS', hash: `SHA-${jwk.alg.slice(-3)}` };\n                    keyUsages = jwk.d ? ['sign'] : ['verify'];\n                    break;\n                case 'RS256':\n                case 'RS384':\n                case 'RS512':\n                    algorithm = { name: 'RSASSA-PKCS1-v1_5', hash: `SHA-${jwk.alg.slice(-3)}` };\n                    keyUsages = jwk.d ? ['sign'] : ['verify'];\n                    break;\n                case 'RSA-OAEP':\n                case 'RSA-OAEP-256':\n                case 'RSA-OAEP-384':\n                case 'RSA-OAEP-512':\n                    algorithm = {\n                        name: 'RSA-OAEP',\n                        hash: `SHA-${parseInt(jwk.alg.slice(-3), 10) || 1}`,\n                    };\n                    keyUsages = jwk.d ? ['decrypt', 'unwrapKey'] : ['encrypt', 'wrapKey'];\n                    break;\n                default:\n                    throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n            }\n            break;\n        }\n        case 'EC': {\n            switch (jwk.alg) {\n                case 'ES256':\n                    algorithm = { name: 'ECDSA', namedCurve: 'P-256' };\n                    keyUsages = jwk.d ? ['sign'] : ['verify'];\n                    break;\n                case 'ES384':\n                    algorithm = { name: 'ECDSA', namedCurve: 'P-384' };\n                    keyUsages = jwk.d ? ['sign'] : ['verify'];\n                    break;\n                case 'ES512':\n                    algorithm = { name: 'ECDSA', namedCurve: 'P-521' };\n                    keyUsages = jwk.d ? ['sign'] : ['verify'];\n                    break;\n                case 'ECDH-ES':\n                case 'ECDH-ES+A128KW':\n                case 'ECDH-ES+A192KW':\n                case 'ECDH-ES+A256KW':\n                    algorithm = { name: 'ECDH', namedCurve: jwk.crv };\n                    keyUsages = jwk.d ? ['deriveBits'] : [];\n                    break;\n                default:\n                    throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n            }\n            break;\n        }\n        case 'OKP': {\n            switch (jwk.alg) {\n                case 'Ed25519':\n                case 'EdDSA':\n                    algorithm = { name: 'Ed25519' };\n                    keyUsages = jwk.d ? ['sign'] : ['verify'];\n                    break;\n                case 'ECDH-ES':\n                case 'ECDH-ES+A128KW':\n                case 'ECDH-ES+A192KW':\n                case 'ECDH-ES+A256KW':\n                    algorithm = { name: jwk.crv };\n                    keyUsages = jwk.d ? ['deriveBits'] : [];\n                    break;\n                default:\n                    throw new JOSENotSupported('Invalid or unsupported JWK \"alg\" (Algorithm) Parameter value');\n            }\n            break;\n        }\n        default:\n            throw new JOSENotSupported('Invalid or unsupported JWK \"kty\" (Key Type) Parameter value');\n    }\n    return { algorithm, keyUsages };\n}\nexport async function jwkToKey(jwk) {\n    if (!jwk.alg) {\n        throw new TypeError('\"alg\" argument is required when \"jwk.alg\" is not present');\n    }\n    const { algorithm, keyUsages } = subtleMapping(jwk);\n    const keyData = { ...jwk };\n    if (keyData.kty !== 'AKP') {\n        delete keyData.alg;\n    }\n    delete keyData.use;\n    return crypto.subtle.importKey('jwk', keyData, algorithm, jwk.ext ?? (jwk.d || jwk.priv ? false : true), jwk.key_ops ?? keyUsages);\n}\n", "import { decode as decodeBase64URL } from '../util/base64url.js';\nimport { fromSPKI, fromPKCS8, fromX509 } from '../lib/asn1.js';\nimport { jwkToKey } from '../lib/jwk_to_key.js';\nimport { JOSENotSupported } from '../util/errors.js';\nimport { isObject } from '../lib/is_object.js';\nexport async function importSPKI(spki, alg, options) {\n    if (typeof spki !== 'string' || spki.indexOf('-----BEGIN PUBLIC KEY-----') !== 0) {\n        throw new TypeError('\"spki\" must be SPKI formatted string');\n    }\n    return fromSPKI(spki, alg, options);\n}\nexport async function importX509(x509, alg, options) {\n    if (typeof x509 !== 'string' || x509.indexOf('-----BEGIN CERTIFICATE-----') !== 0) {\n        throw new TypeError('\"x509\" must be X.509 formatted string');\n    }\n    return fromX509(x509, alg, options);\n}\nexport async function importPKCS8(pkcs8, alg, options) {\n    if (typeof pkcs8 !== 'string' || pkcs8.indexOf('-----BEGIN PRIVATE KEY-----') !== 0) {\n        throw new TypeError('\"pkcs8\" must be PKCS#8 formatted string');\n    }\n    return fromPKCS8(pkcs8, alg, options);\n}\nexport async function importJWK(jwk, alg, options) {\n    if (!isObject(jwk)) {\n        throw new TypeError('JWK must be an object');\n    }\n    let ext;\n    alg ??= jwk.alg;\n    ext ??= options?.extractable ?? jwk.ext;\n    switch (jwk.kty) {\n        case 'oct':\n            if (typeof jwk.k !== 'string' || !jwk.k) {\n                throw new TypeError('missing \"k\" (Key Value) Parameter value');\n            }\n            return decodeBase64URL(jwk.k);\n        case 'RSA':\n            if ('oth' in jwk && jwk.oth !== undefined) {\n                throw new JOSENotSupported('RSA JWK \"oth\" (Other Primes Info) Parameter value is not supported');\n            }\n            return jwkToKey({ ...jwk, alg, ext });\n        case 'AKP': {\n            if (typeof jwk.alg !== 'string' || !jwk.alg) {\n                throw new TypeError('missing \"alg\" (Algorithm) Parameter value');\n            }\n            if (alg !== undefined && alg !== jwk.alg) {\n                throw new TypeError('JWK alg and alg option value mismatch');\n            }\n            return jwkToKey({ ...jwk, ext });\n        }\n        case 'EC':\n        case 'OKP':\n            return jwkToKey({ ...jwk, alg, ext });\n        default:\n            throw new JOSENotSupported('Unsupported \"kty\" (Key Type) Parameter value');\n    }\n}\n", "import { concat, uint64be } from './buffer_utils.js';\nimport { checkIvLength } from './check_iv_length.js';\nimport { checkCekLength } from './check_cek_length.js';\nimport { checkEncCryptoKey } from './crypto_key.js';\nimport { invalidKeyInput } from './invalid_key_input.js';\nimport { generateIv } from './iv.js';\nimport { JOSENotSupported } from '../util/errors.js';\nimport { isCryptoKey } from './is_key_like.js';\nasync function cbcEncrypt(enc, plaintext, cek, iv, aad) {\n    if (!(cek instanceof Uint8Array)) {\n        throw new TypeError(invalidKeyInput(cek, 'Uint8Array'));\n    }\n    const keySize = parseInt(enc.slice(1, 4), 10);\n    const encKey = await crypto.subtle.importKey('raw', cek.subarray(keySize >> 3), 'AES-CBC', false, ['encrypt']);\n    const macKey = await crypto.subtle.importKey('raw', cek.subarray(0, keySize >> 3), {\n        hash: `SHA-${keySize << 1}`,\n        name: 'HMAC',\n    }, false, ['sign']);\n    const ciphertext = new Uint8Array(await crypto.subtle.encrypt({\n        iv: iv,\n        name: 'AES-CBC',\n    }, encKey, plaintext));\n    const macData = concat(aad, iv, ciphertext, uint64be(aad.length << 3));\n    const tag = new Uint8Array((await crypto.subtle.sign('HMAC', macKey, macData)).slice(0, keySize >> 3));\n    return { ciphertext, tag, iv };\n}\nasync function gcmEncrypt(enc, plaintext, cek, iv, aad) {\n    let encKey;\n    if (cek instanceof Uint8Array) {\n        encKey = await crypto.subtle.importKey('raw', cek, 'AES-GCM', false, ['encrypt']);\n    }\n    else {\n        checkEncCryptoKey(cek, enc, 'encrypt');\n        encKey = cek;\n    }\n    const encrypted = new Uint8Array(await crypto.subtle.encrypt({\n        additionalData: aad,\n        iv: iv,\n        name: 'AES-GCM',\n        tagLength: 128,\n    }, encKey, plaintext));\n    const tag = encrypted.slice(-16);\n    const ciphertext = encrypted.slice(0, -16);\n    return { ciphertext, tag, iv };\n}\nexport async function encrypt(enc, plaintext, cek, iv, aad) {\n    if (!isCryptoKey(cek) && !(cek instanceof Uint8Array)) {\n        throw new TypeError(invalidKeyInput(cek, 'CryptoKey', 'KeyObject', 'Uint8Array', 'JSON Web Key'));\n    }\n    if (iv) {\n        checkIvLength(enc, iv);\n    }\n    else {\n        iv = generateIv(enc);\n    }\n    switch (enc) {\n        case 'A128CBC-HS256':\n        case 'A192CBC-HS384':\n        case 'A256CBC-HS512':\n            if (cek instanceof Uint8Array) {\n                checkCekLength(cek, parseInt(enc.slice(-3), 10));\n            }\n            return cbcEncrypt(enc, plaintext, cek, iv, aad);\n        case 'A128GCM':\n        case 'A192GCM':\n        case 'A256GCM':\n            if (cek instanceof Uint8Array) {\n                checkCekLength(cek, parseInt(enc.slice(1, 4), 10));\n            }\n            return gcmEncrypt(enc, plaintext, cek, iv, aad);\n        default:\n            throw new JOSENotSupported('Unsupported JWE Content Encryption Algorithm');\n    }\n}\n", "import { encrypt } from './encrypt.js';\nimport { decrypt } from './decrypt.js';\nimport { encode as b64u } from '../util/base64url.js';\nexport async function wrap(alg, key, cek, iv) {\n    const jweAlgorithm = alg.slice(0, 7);\n    const wrapped = await encrypt(jweAlgorithm, cek, key, iv, new Uint8Array());\n    return {\n        encryptedKey: wrapped.ciphertext,\n        iv: b64u(wrapped.iv),\n        tag: b64u(wrapped.tag),\n    };\n}\nexport async function unwrap(alg, key, encryptedKey, iv, tag) {\n    const jweAlgorithm = alg.slice(0, 7);\n    return decrypt(jweAlgorithm, key, encryptedKey, iv, tag, new Uint8Array());\n}\n", "import * as aeskw from './aeskw.js';\nimport * as ecdhes from './ecdhes.js';\nimport * as pbes2kw from './pbes2kw.js';\nimport * as rsaes from './rsaes.js';\nimport { decode as b64u } from '../util/base64url.js';\nimport { JOSENotSupported, JWEInvalid } from '../util/errors.js';\nimport { cekLength } from '../lib/cek.js';\nimport { importJWK } from '../key/import.js';\nimport { isObject } from './is_object.js';\nimport { unwrap as aesGcmKw } from './aesgcmkw.js';\nimport { assertCryptoKey } from './is_key_like.js';\nexport async function decryptKeyManagement(alg, key, encryptedKey, joseHeader, options) {\n    switch (alg) {\n        case 'dir': {\n            if (encryptedKey !== undefined)\n                throw new JWEInvalid('Encountered unexpected JWE Encrypted Key');\n            return key;\n        }\n        case 'ECDH-ES':\n            if (encryptedKey !== undefined)\n                throw new JWEInvalid('Encountered unexpected JWE Encrypted Key');\n        case 'ECDH-ES+A128KW':\n        case 'ECDH-ES+A192KW':\n        case 'ECDH-ES+A256KW': {\n            if (!isObject(joseHeader.epk))\n                throw new JWEInvalid(`JOSE Header \"epk\" (Ephemeral Public Key) missing or invalid`);\n            assertCryptoKey(key);\n            if (!ecdhes.allowed(key))\n                throw new JOSENotSupported('ECDH with the provided key is not allowed or not supported by your javascript runtime');\n            const epk = await importJWK(joseHeader.epk, alg);\n            assertCryptoKey(epk);\n            let partyUInfo;\n            let partyVInfo;\n            if (joseHeader.apu !== undefined) {\n                if (typeof joseHeader.apu !== 'string')\n                    throw new JWEInvalid(`JOSE Header \"apu\" (Agreement PartyUInfo) invalid`);\n                try {\n                    partyUInfo = b64u(joseHeader.apu);\n                }\n                catch {\n                    throw new JWEInvalid('Failed to base64url decode the apu');\n                }\n            }\n            if (joseHeader.apv !== undefined) {\n                if (typeof joseHeader.apv !== 'string')\n                    throw new JWEInvalid(`JOSE Header \"apv\" (Agreement PartyVInfo) invalid`);\n                try {\n                    partyVInfo = b64u(joseHeader.apv);\n                }\n                catch {\n                    throw new JWEInvalid('Failed to base64url decode the apv');\n                }\n            }\n            const sharedSecret = await ecdhes.deriveKey(epk, key, alg === 'ECDH-ES' ? joseHeader.enc : alg, alg === 'ECDH-ES' ? cekLength(joseHeader.enc) : parseInt(alg.slice(-5, -2), 10), partyUInfo, partyVInfo);\n            if (alg === 'ECDH-ES')\n                return sharedSecret;\n            if (encryptedKey === undefined)\n                throw new JWEInvalid('JWE Encrypted Key missing');\n            return aeskw.unwrap(alg.slice(-6), sharedSecret, encryptedKey);\n        }\n        case 'RSA-OAEP':\n        case 'RSA-OAEP-256':\n        case 'RSA-OAEP-384':\n        case 'RSA-OAEP-512': {\n            if (encryptedKey === undefined)\n                throw new JWEInvalid('JWE Encrypted Key missing');\n            assertCryptoKey(key);\n            return rsaes.decrypt(alg, key, encryptedKey);\n        }\n        case 'PBES2-HS256+A128KW':\n        case 'PBES2-HS384+A192KW':\n        case 'PBES2-HS512+A256KW': {\n            if (encryptedKey === undefined)\n                throw new JWEInvalid('JWE Encrypted Key missing');\n            if (typeof joseHeader.p2c !== 'number')\n                throw new JWEInvalid(`JOSE Header \"p2c\" (PBES2 Count) missing or invalid`);\n            const p2cLimit = options?.maxPBES2Count || 10_000;\n            if (joseHeader.p2c > p2cLimit)\n                throw new JWEInvalid(`JOSE Header \"p2c\" (PBES2 Count) out is of acceptable bounds`);\n            if (typeof joseHeader.p2s !== 'string')\n                throw new JWEInvalid(`JOSE Header \"p2s\" (PBES2 Salt) missing or invalid`);\n            let p2s;\n            try {\n                p2s = b64u(joseHeader.p2s);\n            }\n            catch {\n                throw new JWEInvalid('Failed to base64url decode the p2s');\n            }\n            return pbes2kw.unwrap(alg, key, encryptedKey, joseHeader.p2c, p2s);\n        }\n        case 'A128KW':\n        case 'A192KW':\n        case 'A256KW': {\n            if (encryptedKey === undefined)\n                throw new JWEInvalid('JWE Encrypted Key missing');\n            return aeskw.unwrap(alg, key, encryptedKey);\n        }\n        case 'A128GCMKW':\n        case 'A192GCMKW':\n        case 'A256GCMKW': {\n            if (encryptedKey === undefined)\n                throw new JWEInvalid('JWE Encrypted Key missing');\n            if (typeof joseHeader.iv !== 'string')\n                throw new JWEInvalid(`JOSE Header \"iv\" (Initialization Vector) missing or invalid`);\n            if (typeof joseHeader.tag !== 'string')\n                throw new JWEInvalid(`JOSE Header \"tag\" (Authentication Tag) missing or invalid`);\n            let iv;\n            try {\n                iv = b64u(joseHeader.iv);\n            }\n            catch {\n                throw new JWEInvalid('Failed to base64url decode the iv');\n            }\n            let tag;\n            try {\n                tag = b64u(joseHeader.tag);\n            }\n            catch {\n                throw new JWEInvalid('Failed to base64url decode the tag');\n            }\n            return aesGcmKw(alg, key, encryptedKey, iv, tag);\n        }\n        default: {\n            throw new JOSENotSupported('Invalid or unsupported \"alg\" (JWE Algorithm) header value');\n        }\n    }\n}\n", "import { JOSENotSupported, JWEInvalid, JWSInvalid } from '../util/errors.js';\nexport function validateCrit(Err, recognizedDefault, recognizedOption, protectedHeader, joseHeader) {\n    if (joseHeader.crit !== undefined && protectedHeader?.crit === undefined) {\n        throw new Err('\"crit\" (Critical) Header Parameter MUST be integrity protected');\n    }\n    if (!protectedHeader || protectedHeader.crit === undefined) {\n        return new Set();\n    }\n    if (!Array.isArray(protectedHeader.crit) ||\n        protectedHeader.crit.length === 0 ||\n        protectedHeader.crit.some((input) => typeof input !== 'string' || input.length === 0)) {\n        throw new Err('\"crit\" (Critical) Header Parameter MUST be an array of non-empty strings when present');\n    }\n    let recognized;\n    if (recognizedOption !== undefined) {\n        recognized = new Map([...Object.entries(recognizedOption), ...recognizedDefault.entries()]);\n    }\n    else {\n        recognized = recognizedDefault;\n    }\n    for (const parameter of protectedHeader.crit) {\n        if (!recognized.has(parameter)) {\n            throw new JOSENotSupported(`Extension Header Parameter \"${parameter}\" is not recognized`);\n        }\n        if (joseHeader[parameter] === undefined) {\n            throw new Err(`Extension Header Parameter \"${parameter}\" is missing`);\n        }\n        if (recognized.get(parameter) && protectedHeader[parameter] === undefined) {\n            throw new Err(`Extension Header Parameter \"${parameter}\" MUST be integrity protected`);\n        }\n    }\n    return new Set(protectedHeader.crit);\n}\n", "export function validateAlgorithms(option, algorithms) {\n    if (algorithms !== undefined &&\n        (!Array.isArray(algorithms) || algorithms.some((s) => typeof s !== 'string'))) {\n        throw new TypeError(`\"${option}\" option must be an array of strings`);\n    }\n    if (!algorithms) {\n        return undefined;\n    }\n    return new Set(algorithms);\n}\n", "import { isObject } from './is_object.js';\nexport const isJWK = (key) => isObject(key) && typeof key.kty === 'string';\nexport const isPrivateJWK = (key) => key.kty !== 'oct' &&\n    ((key.kty === 'AKP' && typeof key.priv === 'string') || typeof key.d === 'string');\nexport const isPublicJWK = (key) => key.kty !== 'oct' && key.d === undefined && key.priv === undefined;\nexport const isSecretJWK = (key) => key.kty === 'oct' && typeof key.k === 'string';\n", "import { isJWK } from './is_jwk.js';\nimport { decode } from '../util/base64url.js';\nimport { jwkToKey } from './jwk_to_key.js';\nimport { isCryptoKey, isKeyObject } from './is_key_like.js';\nlet cache;\nconst handleJWK = async (key, jwk, alg, freeze = false) => {\n    cache ||= new WeakMap();\n    let cached = cache.get(key);\n    if (cached?.[alg]) {\n        return cached[alg];\n    }\n    const cryptoKey = await jwkToKey({ ...jwk, alg });\n    if (freeze)\n        Object.freeze(key);\n    if (!cached) {\n        cache.set(key, { [alg]: cryptoKey });\n    }\n    else {\n        cached[alg] = cryptoKey;\n    }\n    return cryptoKey;\n};\nconst handleKeyObject = (keyObject, alg) => {\n    cache ||= new WeakMap();\n    let cached = cache.get(keyObject);\n    if (cached?.[alg]) {\n        return cached[alg];\n    }\n    const isPublic = keyObject.type === 'public';\n    const extractable = isPublic ? true : false;\n    let cryptoKey;\n    if (keyObject.asymmetricKeyType === 'x25519') {\n        switch (alg) {\n            case 'ECDH-ES':\n            case 'ECDH-ES+A128KW':\n            case 'ECDH-ES+A192KW':\n            case 'ECDH-ES+A256KW':\n                break;\n            default:\n                throw new TypeError('given KeyObject instance cannot be used for this algorithm');\n        }\n        cryptoKey = keyObject.toCryptoKey(keyObject.asymmetricKeyType, extractable, isPublic ? [] : ['deriveBits']);\n    }\n    if (keyObject.asymmetricKeyType === 'ed25519') {\n        if (alg !== 'EdDSA' && alg !== 'Ed25519') {\n            throw new TypeError('given KeyObject instance cannot be used for this algorithm');\n        }\n        cryptoKey = keyObject.toCryptoKey(keyObject.asymmetricKeyType, extractable, [\n            isPublic ? 'verify' : 'sign',\n        ]);\n    }\n    switch (keyObject.asymmetricKeyType) {\n        case 'ml-dsa-44':\n        case 'ml-dsa-65':\n        case 'ml-dsa-87': {\n            if (alg !== keyObject.asymmetricKeyType.toUpperCase()) {\n                throw new TypeError('given KeyObject instance cannot be used for this algorithm');\n            }\n            cryptoKey = keyObject.toCryptoKey(keyObject.asymmetricKeyType, extractable, [\n                isPublic ? 'verify' : 'sign',\n            ]);\n        }\n    }\n    if (keyObject.asymmetricKeyType === 'rsa') {\n        let hash;\n        switch (alg) {\n            case 'RSA-OAEP':\n                hash = 'SHA-1';\n                break;\n            case 'RS256':\n            case 'PS256':\n            case 'RSA-OAEP-256':\n                hash = 'SHA-256';\n                break;\n            case 'RS384':\n            case 'PS384':\n            case 'RSA-OAEP-384':\n                hash = 'SHA-384';\n                break;\n            case 'RS512':\n            case 'PS512':\n            case 'RSA-OAEP-512':\n                hash = 'SHA-512';\n                break;\n            default:\n                throw new TypeError('given KeyObject instance cannot be used for this algorithm');\n        }\n        if (alg.startsWith('RSA-OAEP')) {\n            return keyObject.toCryptoKey({\n                name: 'RSA-OAEP',\n                hash,\n            }, extractable, isPublic ? ['encrypt'] : ['decrypt']);\n        }\n        cryptoKey = keyObject.toCryptoKey({\n            name: alg.startsWith('PS') ? 'RSA-PSS' : 'RSASSA-PKCS1-v1_5',\n            hash,\n        }, extractable, [isPublic ? 'verify' : 'sign']);\n    }\n    if (keyObject.asymmetricKeyType === 'ec') {\n        const nist = new Map([\n            ['prime256v1', 'P-256'],\n            ['secp384r1', 'P-384'],\n            ['secp521r1', 'P-521'],\n        ]);\n        const namedCurve = nist.get(keyObject.asymmetricKeyDetails?.namedCurve);\n        if (!namedCurve) {\n            throw new TypeError('given KeyObject instance cannot be used for this algorithm');\n        }\n        if (alg === 'ES256' && namedCurve === 'P-256') {\n            cryptoKey = keyObject.toCryptoKey({\n                name: 'ECDSA',\n                namedCurve,\n            }, extractable, [isPublic ? 'verify' : 'sign']);\n        }\n        if (alg === 'ES384' && namedCurve === 'P-384') {\n            cryptoKey = keyObject.toCryptoKey({\n                name: 'ECDSA',\n                namedCurve,\n            }, extractable, [isPublic ? 'verify' : 'sign']);\n        }\n        if (alg === 'ES512' && namedCurve === 'P-521') {\n            cryptoKey = keyObject.toCryptoKey({\n                name: 'ECDSA',\n                namedCurve,\n            }, extractable, [isPublic ? 'verify' : 'sign']);\n        }\n        if (alg.startsWith('ECDH-ES')) {\n            cryptoKey = keyObject.toCryptoKey({\n                name: 'ECDH',\n                namedCurve,\n            }, extractable, isPublic ? [] : ['deriveBits']);\n        }\n    }\n    if (!cryptoKey) {\n        throw new TypeError('given KeyObject instance cannot be used for this algorithm');\n    }\n    if (!cached) {\n        cache.set(keyObject, { [alg]: cryptoKey });\n    }\n    else {\n        cached[alg] = cryptoKey;\n    }\n    return cryptoKey;\n};\nexport async function normalizeKey(key, alg) {\n    if (key instanceof Uint8Array) {\n        return key;\n    }\n    if (isCryptoKey(key)) {\n        return key;\n    }\n    if (isKeyObject(key)) {\n        if (key.type === 'secret') {\n            return key.export();\n        }\n        if ('toCryptoKey' in key && typeof key.toCryptoKey === 'function') {\n            try {\n                return handleKeyObject(key, alg);\n            }\n            catch (err) {\n                if (err instanceof TypeError) {\n                    throw err;\n                }\n            }\n        }\n        let jwk = key.export({ format: 'jwk' });\n        return handleJWK(key, jwk, alg);\n    }\n    if (isJWK(key)) {\n        if (key.k) {\n            return decode(key.k);\n        }\n        return handleJWK(key, key, alg, true);\n    }\n    throw new Error('unreachable');\n}\n", "import { withAlg as invalidKeyInput } from './invalid_key_input.js';\nimport { isKeyLike } from './is_key_like.js';\nimport * as jwk from './is_jwk.js';\nconst tag = (key) => key?.[Symbol.toStringTag];\nconst jwkMatchesOp = (alg, key, usage) => {\n    if (key.use !== undefined) {\n        let expected;\n        switch (usage) {\n            case 'sign':\n            case 'verify':\n                expected = 'sig';\n                break;\n            case 'encrypt':\n            case 'decrypt':\n                expected = 'enc';\n                break;\n        }\n        if (key.use !== expected) {\n            throw new TypeError(`Invalid key for this operation, its \"use\" must be \"${expected}\" when present`);\n        }\n    }\n    if (key.alg !== undefined && key.alg !== alg) {\n        throw new TypeError(`Invalid key for this operation, its \"alg\" must be \"${alg}\" when present`);\n    }\n    if (Array.isArray(key.key_ops)) {\n        let expectedKeyOp;\n        switch (true) {\n            case usage === 'sign' || usage === 'verify':\n            case alg === 'dir':\n            case alg.includes('CBC-HS'):\n                expectedKeyOp = usage;\n                break;\n            case alg.startsWith('PBES2'):\n                expectedKeyOp = 'deriveBits';\n                break;\n            case /^A\\d{3}(?:GCM)?(?:KW)?$/.test(alg):\n                if (!alg.includes('GCM') && alg.endsWith('KW')) {\n                    expectedKeyOp = usage === 'encrypt' ? 'wrapKey' : 'unwrapKey';\n                }\n                else {\n                    expectedKeyOp = usage;\n                }\n                break;\n            case usage === 'encrypt' && alg.startsWith('RSA'):\n                expectedKeyOp = 'wrapKey';\n                break;\n            case usage === 'decrypt':\n                expectedKeyOp = alg.startsWith('RSA') ? 'unwrapKey' : 'deriveBits';\n                break;\n        }\n        if (expectedKeyOp && key.key_ops?.includes?.(expectedKeyOp) === false) {\n            throw new TypeError(`Invalid key for this operation, its \"key_ops\" must include \"${expectedKeyOp}\" when present`);\n        }\n    }\n    return true;\n};\nconst symmetricTypeCheck = (alg, key, usage) => {\n    if (key instanceof Uint8Array)\n        return;\n    if (jwk.isJWK(key)) {\n        if (jwk.isSecretJWK(key) && jwkMatchesOp(alg, key, usage))\n            return;\n        throw new TypeError(`JSON Web Key for symmetric algorithms must have JWK \"kty\" (Key Type) equal to \"oct\" and the JWK \"k\" (Key Value) present`);\n    }\n    if (!isKeyLike(key)) {\n        throw new TypeError(invalidKeyInput(alg, key, 'CryptoKey', 'KeyObject', 'JSON Web Key', 'Uint8Array'));\n    }\n    if (key.type !== 'secret') {\n        throw new TypeError(`${tag(key)} instances for symmetric algorithms must be of type \"secret\"`);\n    }\n};\nconst asymmetricTypeCheck = (alg, key, usage) => {\n    if (jwk.isJWK(key)) {\n        switch (usage) {\n            case 'decrypt':\n            case 'sign':\n                if (jwk.isPrivateJWK(key) && jwkMatchesOp(alg, key, usage))\n                    return;\n                throw new TypeError(`JSON Web Key for this operation must be a private JWK`);\n            case 'encrypt':\n            case 'verify':\n                if (jwk.isPublicJWK(key) && jwkMatchesOp(alg, key, usage))\n                    return;\n                throw new TypeError(`JSON Web Key for this operation must be a public JWK`);\n        }\n    }\n    if (!isKeyLike(key)) {\n        throw new TypeError(invalidKeyInput(alg, key, 'CryptoKey', 'KeyObject', 'JSON Web Key'));\n    }\n    if (key.type === 'secret') {\n        throw new TypeError(`${tag(key)} instances for asymmetric algorithms must not be of type \"secret\"`);\n    }\n    if (key.type === 'public') {\n        switch (usage) {\n            case 'sign':\n                throw new TypeError(`${tag(key)} instances for asymmetric algorithm signing must be of type \"private\"`);\n            case 'decrypt':\n                throw new TypeError(`${tag(key)} instances for asymmetric algorithm decryption must be of type \"private\"`);\n        }\n    }\n    if (key.type === 'private') {\n        switch (usage) {\n            case 'verify':\n                throw new TypeError(`${tag(key)} instances for asymmetric algorithm verifying must be of type \"public\"`);\n            case 'encrypt':\n                throw new TypeError(`${tag(key)} instances for asymmetric algorithm encryption must be of type \"public\"`);\n        }\n    }\n};\nexport function checkKeyType(alg, key, usage) {\n    switch (alg.substring(0, 2)) {\n        case 'A1':\n        case 'A2':\n        case 'di':\n        case 'HS':\n        case 'PB':\n            symmetricTypeCheck(alg, key, usage);\n            break;\n        default:\n            asymmetricTypeCheck(alg, key, usage);\n    }\n}\n", "import { decode as b64u } from '../../util/base64url.js';\nimport { decrypt } from '../../lib/decrypt.js';\nimport { JOSEAlgNotAllowed, JOSENotSupported, JWEInvalid } from '../../util/errors.js';\nimport { isDisjoint } from '../../lib/is_disjoint.js';\nimport { isObject } from '../../lib/is_object.js';\nimport { decryptKeyManagement } from '../../lib/decrypt_key_management.js';\nimport { decoder, concat, encode } from '../../lib/buffer_utils.js';\nimport { generateCek } from '../../lib/cek.js';\nimport { validateCrit } from '../../lib/validate_crit.js';\nimport { validateAlgorithms } from '../../lib/validate_algorithms.js';\nimport { normalizeKey } from '../../lib/normalize_key.js';\nimport { checkKeyType } from '../../lib/check_key_type.js';\nexport async function flattenedDecrypt(jwe, key, options) {\n    if (!isObject(jwe)) {\n        throw new JWEInvalid('Flattened JWE must be an object');\n    }\n    if (jwe.protected === undefined && jwe.header === undefined && jwe.unprotected === undefined) {\n        throw new JWEInvalid('JOSE Header missing');\n    }\n    if (jwe.iv !== undefined && typeof jwe.iv !== 'string') {\n        throw new JWEInvalid('JWE Initialization Vector incorrect type');\n    }\n    if (typeof jwe.ciphertext !== 'string') {\n        throw new JWEInvalid('JWE Ciphertext missing or incorrect type');\n    }\n    if (jwe.tag !== undefined && typeof jwe.tag !== 'string') {\n        throw new JWEInvalid('JWE Authentication Tag incorrect type');\n    }\n    if (jwe.protected !== undefined && typeof jwe.protected !== 'string') {\n        throw new JWEInvalid('JWE Protected Header incorrect type');\n    }\n    if (jwe.encrypted_key !== undefined && typeof jwe.encrypted_key !== 'string') {\n        throw new JWEInvalid('JWE Encrypted Key incorrect type');\n    }\n    if (jwe.aad !== undefined && typeof jwe.aad !== 'string') {\n        throw new JWEInvalid('JWE AAD incorrect type');\n    }\n    if (jwe.header !== undefined && !isObject(jwe.header)) {\n        throw new JWEInvalid('JWE Shared Unprotected Header incorrect type');\n    }\n    if (jwe.unprotected !== undefined && !isObject(jwe.unprotected)) {\n        throw new JWEInvalid('JWE Per-Recipient Unprotected Header incorrect type');\n    }\n    let parsedProt;\n    if (jwe.protected) {\n        try {\n            const protectedHeader = b64u(jwe.protected);\n            parsedProt = JSON.parse(decoder.decode(protectedHeader));\n        }\n        catch {\n            throw new JWEInvalid('JWE Protected Header is invalid');\n        }\n    }\n    if (!isDisjoint(parsedProt, jwe.header, jwe.unprotected)) {\n        throw new JWEInvalid('JWE Protected, JWE Unprotected Header, and JWE Per-Recipient Unprotected Header Parameter names must be disjoint');\n    }\n    const joseHeader = {\n        ...parsedProt,\n        ...jwe.header,\n        ...jwe.unprotected,\n    };\n    validateCrit(JWEInvalid, new Map(), options?.crit, parsedProt, joseHeader);\n    if (joseHeader.zip !== undefined) {\n        throw new JOSENotSupported('JWE \"zip\" (Compression Algorithm) Header Parameter is not supported.');\n    }\n    const { alg, enc } = joseHeader;\n    if (typeof alg !== 'string' || !alg) {\n        throw new JWEInvalid('missing JWE Algorithm (alg) in JWE Header');\n    }\n    if (typeof enc !== 'string' || !enc) {\n        throw new JWEInvalid('missing JWE Encryption Algorithm (enc) in JWE Header');\n    }\n    const keyManagementAlgorithms = options && validateAlgorithms('keyManagementAlgorithms', options.keyManagementAlgorithms);\n    const contentEncryptionAlgorithms = options &&\n        validateAlgorithms('contentEncryptionAlgorithms', options.contentEncryptionAlgorithms);\n    if ((keyManagementAlgorithms && !keyManagementAlgorithms.has(alg)) ||\n        (!keyManagementAlgorithms && alg.startsWith('PBES2'))) {\n        throw new JOSEAlgNotAllowed('\"alg\" (Algorithm) Header Parameter value not allowed');\n    }\n    if (contentEncryptionAlgorithms && !contentEncryptionAlgorithms.has(enc)) {\n        throw new JOSEAlgNotAllowed('\"enc\" (Encryption Algorithm) Header Parameter value not allowed');\n    }\n    let encryptedKey;\n    if (jwe.encrypted_key !== undefined) {\n        try {\n            encryptedKey = b64u(jwe.encrypted_key);\n        }\n        catch {\n            throw new JWEInvalid('Failed to base64url decode the encrypted_key');\n        }\n    }\n    let resolvedKey = false;\n    if (typeof key === 'function') {\n        key = await key(parsedProt, jwe);\n        resolvedKey = true;\n    }\n    checkKeyType(alg === 'dir' ? enc : alg, key, 'decrypt');\n    const k = await normalizeKey(key, alg);\n    let cek;\n    try {\n        cek = await decryptKeyManagement(alg, k, encryptedKey, joseHeader, options);\n    }\n    catch (err) {\n        if (err instanceof TypeError || err instanceof JWEInvalid || err instanceof JOSENotSupported) {\n            throw err;\n        }\n        cek = generateCek(enc);\n    }\n    let iv;\n    let tag;\n    if (jwe.iv !== undefined) {\n        try {\n            iv = b64u(jwe.iv);\n        }\n        catch {\n            throw new JWEInvalid('Failed to base64url decode the iv');\n        }\n    }\n    if (jwe.tag !== undefined) {\n        try {\n            tag = b64u(jwe.tag);\n        }\n        catch {\n            throw new JWEInvalid('Failed to base64url decode the tag');\n        }\n    }\n    const protectedHeader = jwe.protected !== undefined ? encode(jwe.protected) : new Uint8Array();\n    let additionalData;\n    if (jwe.aad !== undefined) {\n        additionalData = concat(protectedHeader, encode('.'), encode(jwe.aad));\n    }\n    else {\n        additionalData = protectedHeader;\n    }\n    let ciphertext;\n    try {\n        ciphertext = b64u(jwe.ciphertext);\n    }\n    catch {\n        throw new JWEInvalid('Failed to base64url decode the ciphertext');\n    }\n    const plaintext = await decrypt(enc, cek, ciphertext, iv, tag, additionalData);\n    const result = { plaintext };\n    if (jwe.protected !== undefined) {\n        result.protectedHeader = parsedProt;\n    }\n    if (jwe.aad !== undefined) {\n        try {\n            result.additionalAuthenticatedData = b64u(jwe.aad);\n        }\n        catch {\n            throw new JWEInvalid('Failed to base64url decode the aad');\n        }\n    }\n    if (jwe.unprotected !== undefined) {\n        result.sharedUnprotectedHeader = jwe.unprotected;\n    }\n    if (jwe.header !== undefined) {\n        result.unprotectedHeader = jwe.header;\n    }\n    if (resolvedKey) {\n        return { ...result, key: k };\n    }\n    return result;\n}\n", "import { flattenedDecrypt } from '../flattened/decrypt.js';\nimport { JWEInvalid } from '../../util/errors.js';\nimport { decoder } from '../../lib/buffer_utils.js';\nexport async function compactDecrypt(jwe, key, options) {\n    if (jwe instanceof Uint8Array) {\n        jwe = decoder.decode(jwe);\n    }\n    if (typeof jwe !== 'string') {\n        throw new JWEInvalid('Compact JWE must be a string or Uint8Array');\n    }\n    const { 0: protectedHeader, 1: encryptedKey, 2: iv, 3: ciphertext, 4: tag, length, } = jwe.split('.');\n    if (length !== 5) {\n        throw new JWEInvalid('Invalid Compact JWE');\n    }\n    const decrypted = await flattenedDecrypt({\n        ciphertext,\n        iv: iv || undefined,\n        protected: protectedHeader,\n        tag: tag || undefined,\n        encrypted_key: encryptedKey || undefined,\n    }, key, options);\n    const result = { plaintext: decrypted.plaintext, protectedHeader: decrypted.protectedHeader };\n    if (typeof key === 'function') {\n        return { ...result, key: decrypted.key };\n    }\n    return result;\n}\n", "export const unprotected = Symbol();\n", "import { invalidKeyInput } from './invalid_key_input.js';\nimport { encode as b64u } from '../util/base64url.js';\nimport { isCryptoKey, isKeyObject } from './is_key_like.js';\nexport async function keyToJWK(key) {\n    if (isKeyObject(key)) {\n        if (key.type === 'secret') {\n            key = key.export();\n        }\n        else {\n            return key.export({ format: 'jwk' });\n        }\n    }\n    if (key instanceof Uint8Array) {\n        return {\n            kty: 'oct',\n            k: b64u(key),\n        };\n    }\n    if (!isCryptoKey(key)) {\n        throw new TypeError(invalidKeyInput(key, 'CryptoKey', 'KeyObject', 'Uint8Array'));\n    }\n    if (!key.extractable) {\n        throw new TypeError('non-extractable CryptoKey cannot be exported as a JWK');\n    }\n    const { ext, key_ops, alg, use, ...jwk } = await crypto.subtle.exportKey('jwk', key);\n    if (jwk.kty === 'AKP') {\n        ;\n        jwk.alg = alg;\n    }\n    return jwk;\n}\n", "import { toSPKI as exportPublic, toPKCS8 as exportPrivate } from '../lib/asn1.js';\nimport { keyToJWK } from '../lib/key_to_jwk.js';\nexport async function exportSPKI(key) {\n    return exportPublic(key);\n}\nexport async function exportPKCS8(key) {\n    return exportPrivate(key);\n}\nexport async function exportJWK(key) {\n    return keyToJWK(key);\n}\n", "import * as aeskw from './aeskw.js';\nimport * as ecdhes from './ecdhes.js';\nimport * as pbes2kw from './pbes2kw.js';\nimport * as rsaes from './rsaes.js';\nimport { encode as b64u } from '../util/base64url.js';\nimport { normalizeKey } from './normalize_key.js';\nimport { generateCek, cekLength } from '../lib/cek.js';\nimport { JOSENotSupported } from '../util/errors.js';\nimport { exportJWK } from '../key/export.js';\nimport { wrap as aesGcmKw } from './aesgcmkw.js';\nimport { assertCryptoKey } from './is_key_like.js';\nexport async function encryptKeyManagement(alg, enc, key, providedCek, providedParameters = {}) {\n    let encryptedKey;\n    let parameters;\n    let cek;\n    switch (alg) {\n        case 'dir': {\n            cek = key;\n            break;\n        }\n        case 'ECDH-ES':\n        case 'ECDH-ES+A128KW':\n        case 'ECDH-ES+A192KW':\n        case 'ECDH-ES+A256KW': {\n            assertCryptoKey(key);\n            if (!ecdhes.allowed(key)) {\n                throw new JOSENotSupported('ECDH with the provided key is not allowed or not supported by your javascript runtime');\n            }\n            const { apu, apv } = providedParameters;\n            let ephemeralKey;\n            if (providedParameters.epk) {\n                ephemeralKey = (await normalizeKey(providedParameters.epk, alg));\n            }\n            else {\n                ephemeralKey = (await crypto.subtle.generateKey(key.algorithm, true, ['deriveBits'])).privateKey;\n            }\n            const { x, y, crv, kty } = await exportJWK(ephemeralKey);\n            const sharedSecret = await ecdhes.deriveKey(key, ephemeralKey, alg === 'ECDH-ES' ? enc : alg, alg === 'ECDH-ES' ? cekLength(enc) : parseInt(alg.slice(-5, -2), 10), apu, apv);\n            parameters = { epk: { x, crv, kty } };\n            if (kty === 'EC')\n                parameters.epk.y = y;\n            if (apu)\n                parameters.apu = b64u(apu);\n            if (apv)\n                parameters.apv = b64u(apv);\n            if (alg === 'ECDH-ES') {\n                cek = sharedSecret;\n                break;\n            }\n            cek = providedCek || generateCek(enc);\n            const kwAlg = alg.slice(-6);\n            encryptedKey = await aeskw.wrap(kwAlg, sharedSecret, cek);\n            break;\n        }\n        case 'RSA-OAEP':\n        case 'RSA-OAEP-256':\n        case 'RSA-OAEP-384':\n        case 'RSA-OAEP-512': {\n            cek = providedCek || generateCek(enc);\n            assertCryptoKey(key);\n            encryptedKey = await rsaes.encrypt(alg, key, cek);\n            break;\n        }\n        case 'PBES2-HS256+A128KW':\n        case 'PBES2-HS384+A192KW':\n        case 'PBES2-HS512+A256KW': {\n            cek = providedCek || generateCek(enc);\n            const { p2c, p2s } = providedParameters;\n            ({ encryptedKey, ...parameters } = await pbes2kw.wrap(alg, key, cek, p2c, p2s));\n            break;\n        }\n        case 'A128KW':\n        case 'A192KW':\n        case 'A256KW': {\n            cek = providedCek || generateCek(enc);\n            encryptedKey = await aeskw.wrap(alg, key, cek);\n            break;\n        }\n        case 'A128GCMKW':\n        case 'A192GCMKW':\n        case 'A256GCMKW': {\n            cek = providedCek || generateCek(enc);\n            const { iv } = providedParameters;\n            ({ encryptedKey, ...parameters } = await aesGcmKw(alg, key, cek, iv));\n            break;\n        }\n        default: {\n            throw new JOSENotSupported('Invalid or unsupported \"alg\" (JWE Algorithm) header value');\n        }\n    }\n    return { cek, encryptedKey, parameters };\n}\n", "import { encode as b64u } from '../../util/base64url.js';\nimport { unprotected } from '../../lib/private_symbols.js';\nimport { encrypt } from '../../lib/encrypt.js';\nimport { encryptKeyManagement } from '../../lib/encrypt_key_management.js';\nimport { JOSENotSupported, JWEInvalid } from '../../util/errors.js';\nimport { isDisjoint } from '../../lib/is_disjoint.js';\nimport { concat, encode } from '../../lib/buffer_utils.js';\nimport { validateCrit } from '../../lib/validate_crit.js';\nimport { normalizeKey } from '../../lib/normalize_key.js';\nimport { checkKeyType } from '../../lib/check_key_type.js';\nexport class FlattenedEncrypt {\n    #plaintext;\n    #protectedHeader;\n    #sharedUnprotectedHeader;\n    #unprotectedHeader;\n    #aad;\n    #cek;\n    #iv;\n    #keyManagementParameters;\n    constructor(plaintext) {\n        if (!(plaintext instanceof Uint8Array)) {\n            throw new TypeError('plaintext must be an instance of Uint8Array');\n        }\n        this.#plaintext = plaintext;\n    }\n    setKeyManagementParameters(parameters) {\n        if (this.#keyManagementParameters) {\n            throw new TypeError('setKeyManagementParameters can only be called once');\n        }\n        this.#keyManagementParameters = parameters;\n        return this;\n    }\n    setProtectedHeader(protectedHeader) {\n        if (this.#protectedHeader) {\n            throw new TypeError('setProtectedHeader can only be called once');\n        }\n        this.#protectedHeader = protectedHeader;\n        return this;\n    }\n    setSharedUnprotectedHeader(sharedUnprotectedHeader) {\n        if (this.#sharedUnprotectedHeader) {\n            throw new TypeError('setSharedUnprotectedHeader can only be called once');\n        }\n        this.#sharedUnprotectedHeader = sharedUnprotectedHeader;\n        return this;\n    }\n    setUnprotectedHeader(unprotectedHeader) {\n        if (this.#unprotectedHeader) {\n            throw new TypeError('setUnprotectedHeader can only be called once');\n        }\n        this.#unprotectedHeader = unprotectedHeader;\n        return this;\n    }\n    setAdditionalAuthenticatedData(aad) {\n        this.#aad = aad;\n        return this;\n    }\n    setContentEncryptionKey(cek) {\n        if (this.#cek) {\n            throw new TypeError('setContentEncryptionKey can only be called once');\n        }\n        this.#cek = cek;\n        return this;\n    }\n    setInitializationVector(iv) {\n        if (this.#iv) {\n            throw new TypeError('setInitializationVector can only be called once');\n        }\n        this.#iv = iv;\n        return this;\n    }\n    async encrypt(key, options) {\n        if (!this.#protectedHeader && !this.#unprotectedHeader && !this.#sharedUnprotectedHeader) {\n            throw new JWEInvalid('either setProtectedHeader, setUnprotectedHeader, or sharedUnprotectedHeader must be called before #encrypt()');\n        }\n        if (!isDisjoint(this.#protectedHeader, this.#unprotectedHeader, this.#sharedUnprotectedHeader)) {\n            throw new JWEInvalid('JWE Protected, JWE Shared Unprotected and JWE Per-Recipient Header Parameter names must be disjoint');\n        }\n        const joseHeader = {\n            ...this.#protectedHeader,\n            ...this.#unprotectedHeader,\n            ...this.#sharedUnprotectedHeader,\n        };\n        validateCrit(JWEInvalid, new Map(), options?.crit, this.#protectedHeader, joseHeader);\n        if (joseHeader.zip !== undefined) {\n            throw new JOSENotSupported('JWE \"zip\" (Compression Algorithm) Header Parameter is not supported.');\n        }\n        const { alg, enc } = joseHeader;\n        if (typeof alg !== 'string' || !alg) {\n            throw new JWEInvalid('JWE \"alg\" (Algorithm) Header Parameter missing or invalid');\n        }\n        if (typeof enc !== 'string' || !enc) {\n            throw new JWEInvalid('JWE \"enc\" (Encryption Algorithm) Header Parameter missing or invalid');\n        }\n        let encryptedKey;\n        if (this.#cek && (alg === 'dir' || alg === 'ECDH-ES')) {\n            throw new TypeError(`setContentEncryptionKey cannot be called with JWE \"alg\" (Algorithm) Header ${alg}`);\n        }\n        checkKeyType(alg === 'dir' ? enc : alg, key, 'encrypt');\n        let cek;\n        {\n            let parameters;\n            const k = await normalizeKey(key, alg);\n            ({ cek, encryptedKey, parameters } = await encryptKeyManagement(alg, enc, k, this.#cek, this.#keyManagementParameters));\n            if (parameters) {\n                if (options && unprotected in options) {\n                    if (!this.#unprotectedHeader) {\n                        this.setUnprotectedHeader(parameters);\n                    }\n                    else {\n                        this.#unprotectedHeader = { ...this.#unprotectedHeader, ...parameters };\n                    }\n                }\n                else if (!this.#protectedHeader) {\n                    this.setProtectedHeader(parameters);\n                }\n                else {\n                    this.#protectedHeader = { ...this.#protectedHeader, ...parameters };\n                }\n            }\n        }\n        let additionalData;\n        let protectedHeaderS;\n        let protectedHeaderB;\n        let aadMember;\n        if (this.#protectedHeader) {\n            protectedHeaderS = b64u(JSON.stringify(this.#protectedHeader));\n            protectedHeaderB = encode(protectedHeaderS);\n        }\n        else {\n            protectedHeaderS = '';\n            protectedHeaderB = new Uint8Array();\n        }\n        if (this.#aad) {\n            aadMember = b64u(this.#aad);\n            const aadMemberBytes = encode(aadMember);\n            additionalData = concat(protectedHeaderB, encode('.'), aadMemberBytes);\n        }\n        else {\n            additionalData = protectedHeaderB;\n        }\n        const { ciphertext, tag, iv } = await encrypt(enc, this.#plaintext, cek, this.#iv, additionalData);\n        const jwe = {\n            ciphertext: b64u(ciphertext),\n        };\n        if (iv) {\n            jwe.iv = b64u(iv);\n        }\n        if (tag) {\n            jwe.tag = b64u(tag);\n        }\n        if (encryptedKey) {\n            jwe.encrypted_key = b64u(encryptedKey);\n        }\n        if (aadMember) {\n            jwe.aad = aadMember;\n        }\n        if (this.#protectedHeader) {\n            jwe.protected = protectedHeaderS;\n        }\n        if (this.#sharedUnprotectedHeader) {\n            jwe.unprotected = this.#sharedUnprotectedHeader;\n        }\n        if (this.#unprotectedHeader) {\n            jwe.header = this.#unprotectedHeader;\n        }\n        return jwe;\n    }\n}\n", "import { JOSENotSupported } from '../util/errors.js';\nexport function subtleAlgorithm(alg, algorithm) {\n    const hash = `SHA-${alg.slice(-3)}`;\n    switch (alg) {\n        case 'HS256':\n        case 'HS384':\n        case 'HS512':\n            return { hash, name: 'HMAC' };\n        case 'PS256':\n        case 'PS384':\n        case 'PS512':\n            return { hash, name: 'RSA-PSS', saltLength: parseInt(alg.slice(-3), 10) >> 3 };\n        case 'RS256':\n        case 'RS384':\n        case 'RS512':\n            return { hash, name: 'RSASSA-PKCS1-v1_5' };\n        case 'ES256':\n        case 'ES384':\n        case 'ES512':\n            return { hash, name: 'ECDSA', namedCurve: algorithm.namedCurve };\n        case 'Ed25519':\n        case 'EdDSA':\n            return { name: 'Ed25519' };\n        case 'ML-DSA-44':\n        case 'ML-DSA-65':\n        case 'ML-DSA-87':\n            return { name: alg };\n        default:\n            throw new JOSENotSupported(`alg ${alg} is not supported either by JOSE or your javascript runtime`);\n    }\n}\n", "import { checkSigCryptoKey } from './crypto_key.js';\nimport { invalidKeyInput } from './invalid_key_input.js';\nexport async function getSigKey(alg, key, usage) {\n    if (key instanceof Uint8Array) {\n        if (!alg.startsWith('HS')) {\n            throw new TypeError(invalidKeyInput(key, 'CryptoKey', 'KeyObject', 'JSON Web Key'));\n        }\n        return crypto.subtle.importKey('raw', key, { hash: `SHA-${alg.slice(-3)}`, name: 'HMAC' }, false, [usage]);\n    }\n    checkSigCryptoKey(key, alg, usage);\n    return key;\n}\n", "import { subtleAlgorithm } from './subtle_dsa.js';\nimport { checkKeyLength } from './check_key_length.js';\nimport { getSigKey } from './get_sign_verify_key.js';\nexport async function verify(alg, key, signature, data) {\n    const cryptoKey = await getSigKey(alg, key, 'verify');\n    checkKeyLength(alg, cryptoKey);\n    const algorithm = subtleAlgorithm(alg, cryptoKey.algorithm);\n    try {\n        return await crypto.subtle.verify(algorithm, cryptoKey, signature, data);\n    }\n    catch {\n        return false;\n    }\n}\n", "import { decode as b64u } from '../../util/base64url.js';\nimport { verify } from '../../lib/verify.js';\nimport { JOSEAlgNotAllowed, JWSInvalid, JWSSignatureVerificationFailed } from '../../util/errors.js';\nimport { concat, encoder, decoder, encode } from '../../lib/buffer_utils.js';\nimport { isDisjoint } from '../../lib/is_disjoint.js';\nimport { isObject } from '../../lib/is_object.js';\nimport { checkKeyType } from '../../lib/check_key_type.js';\nimport { validateCrit } from '../../lib/validate_crit.js';\nimport { validateAlgorithms } from '../../lib/validate_algorithms.js';\nimport { normalizeKey } from '../../lib/normalize_key.js';\nexport async function flattenedVerify(jws, key, options) {\n    if (!isObject(jws)) {\n        throw new JWSInvalid('Flattened JWS must be an object');\n    }\n    if (jws.protected === undefined && jws.header === undefined) {\n        throw new JWSInvalid('Flattened JWS must have either of the \"protected\" or \"header\" members');\n    }\n    if (jws.protected !== undefined && typeof jws.protected !== 'string') {\n        throw new JWSInvalid('JWS Protected Header incorrect type');\n    }\n    if (jws.payload === undefined) {\n        throw new JWSInvalid('JWS Payload missing');\n    }\n    if (typeof jws.signature !== 'string') {\n        throw new JWSInvalid('JWS Signature missing or incorrect type');\n    }\n    if (jws.header !== undefined && !isObject(jws.header)) {\n        throw new JWSInvalid('JWS Unprotected Header incorrect type');\n    }\n    let parsedProt = {};\n    if (jws.protected) {\n        try {\n            const protectedHeader = b64u(jws.protected);\n            parsedProt = JSON.parse(decoder.decode(protectedHeader));\n        }\n        catch {\n            throw new JWSInvalid('JWS Protected Header is invalid');\n        }\n    }\n    if (!isDisjoint(parsedProt, jws.header)) {\n        throw new JWSInvalid('JWS Protected and JWS Unprotected Header Parameter names must be disjoint');\n    }\n    const joseHeader = {\n        ...parsedProt,\n        ...jws.header,\n    };\n    const extensions = validateCrit(JWSInvalid, new Map([['b64', true]]), options?.crit, parsedProt, joseHeader);\n    let b64 = true;\n    if (extensions.has('b64')) {\n        b64 = parsedProt.b64;\n        if (typeof b64 !== 'boolean') {\n            throw new JWSInvalid('The \"b64\" (base64url-encode payload) Header Parameter must be a boolean');\n        }\n    }\n    const { alg } = joseHeader;\n    if (typeof alg !== 'string' || !alg) {\n        throw new JWSInvalid('JWS \"alg\" (Algorithm) Header Parameter missing or invalid');\n    }\n    const algorithms = options && validateAlgorithms('algorithms', options.algorithms);\n    if (algorithms && !algorithms.has(alg)) {\n        throw new JOSEAlgNotAllowed('\"alg\" (Algorithm) Header Parameter value not allowed');\n    }\n    if (b64) {\n        if (typeof jws.payload !== 'string') {\n            throw new JWSInvalid('JWS Payload must be a string');\n        }\n    }\n    else if (typeof jws.payload !== 'string' && !(jws.payload instanceof Uint8Array)) {\n        throw new JWSInvalid('JWS Payload must be a string or an Uint8Array instance');\n    }\n    let resolvedKey = false;\n    if (typeof key === 'function') {\n        key = await key(parsedProt, jws);\n        resolvedKey = true;\n    }\n    checkKeyType(alg, key, 'verify');\n    const data = concat(jws.protected !== undefined ? encode(jws.protected) : new Uint8Array(), encode('.'), typeof jws.payload === 'string'\n        ? b64\n            ? encode(jws.payload)\n            : encoder.encode(jws.payload)\n        : jws.payload);\n    let signature;\n    try {\n        signature = b64u(jws.signature);\n    }\n    catch {\n        throw new JWSInvalid('Failed to base64url decode the signature');\n    }\n    const k = await normalizeKey(key, alg);\n    const verified = await verify(alg, k, signature, data);\n    if (!verified) {\n        throw new JWSSignatureVerificationFailed();\n    }\n    let payload;\n    if (b64) {\n        try {\n            payload = b64u(jws.payload);\n        }\n        catch {\n            throw new JWSInvalid('Failed to base64url decode the payload');\n        }\n    }\n    else if (typeof jws.payload === 'string') {\n        payload = encoder.encode(jws.payload);\n    }\n    else {\n        payload = jws.payload;\n    }\n    const result = { payload };\n    if (jws.protected !== undefined) {\n        result.protectedHeader = parsedProt;\n    }\n    if (jws.header !== undefined) {\n        result.unprotectedHeader = jws.header;\n    }\n    if (resolvedKey) {\n        return { ...result, key: k };\n    }\n    return result;\n}\n", "import { flattenedVerify } from '../flattened/verify.js';\nimport { JWSInvalid } from '../../util/errors.js';\nimport { decoder } from '../../lib/buffer_utils.js';\nexport async function compactVerify(jws, key, options) {\n    if (jws instanceof Uint8Array) {\n        jws = decoder.decode(jws);\n    }\n    if (typeof jws !== 'string') {\n        throw new JWSInvalid('Compact JWS must be a string or Uint8Array');\n    }\n    const { 0: protectedHeader, 1: payload, 2: signature, length } = jws.split('.');\n    if (length !== 3) {\n        throw new JWSInvalid('Invalid Compact JWS');\n    }\n    const verified = await flattenedVerify({ payload, protected: protectedHeader, signature }, key, options);\n    const result = { payload: verified.payload, protectedHeader: verified.protectedHeader };\n    if (typeof key === 'function') {\n        return { ...result, key: verified.key };\n    }\n    return result;\n}\n", "import { JWTClaimValidationFailed, JWTExpired, JWTInvalid } from '../util/errors.js';\nimport { encoder, decoder } from './buffer_utils.js';\nimport { isObject } from './is_object.js';\nconst epoch = (date) => Math.floor(date.getTime() / 1000);\nconst minute = 60;\nconst hour = minute * 60;\nconst day = hour * 24;\nconst week = day * 7;\nconst year = day * 365.25;\nconst REGEX = /^(\\+|\\-)? ?(\\d+|\\d+\\.\\d+) ?(seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)(?: (ago|from now))?$/i;\nexport function secs(str) {\n    const matched = REGEX.exec(str);\n    if (!matched || (matched[4] && matched[1])) {\n        throw new TypeError('Invalid time period format');\n    }\n    const value = parseFloat(matched[2]);\n    const unit = matched[3].toLowerCase();\n    let numericDate;\n    switch (unit) {\n        case 'sec':\n        case 'secs':\n        case 'second':\n        case 'seconds':\n        case 's':\n            numericDate = Math.round(value);\n            break;\n        case 'minute':\n        case 'minutes':\n        case 'min':\n        case 'mins':\n        case 'm':\n            numericDate = Math.round(value * minute);\n            break;\n        case 'hour':\n        case 'hours':\n        case 'hr':\n        case 'hrs':\n        case 'h':\n            numericDate = Math.round(value * hour);\n            break;\n        case 'day':\n        case 'days':\n        case 'd':\n            numericDate = Math.round(value * day);\n            break;\n        case 'week':\n        case 'weeks':\n        case 'w':\n            numericDate = Math.round(value * week);\n            break;\n        default:\n            numericDate = Math.round(value * year);\n            break;\n    }\n    if (matched[1] === '-' || matched[4] === 'ago') {\n        return -numericDate;\n    }\n    return numericDate;\n}\nfunction validateInput(label, input) {\n    if (!Number.isFinite(input)) {\n        throw new TypeError(`Invalid ${label} input`);\n    }\n    return input;\n}\nconst normalizeTyp = (value) => {\n    if (value.includes('/')) {\n        return value.toLowerCase();\n    }\n    return `application/${value.toLowerCase()}`;\n};\nconst checkAudiencePresence = (audPayload, audOption) => {\n    if (typeof audPayload === 'string') {\n        return audOption.includes(audPayload);\n    }\n    if (Array.isArray(audPayload)) {\n        return audOption.some(Set.prototype.has.bind(new Set(audPayload)));\n    }\n    return false;\n};\nexport function validateClaimsSet(protectedHeader, encodedPayload, options = {}) {\n    let payload;\n    try {\n        payload = JSON.parse(decoder.decode(encodedPayload));\n    }\n    catch {\n    }\n    if (!isObject(payload)) {\n        throw new JWTInvalid('JWT Claims Set must be a top-level JSON object');\n    }\n    const { typ } = options;\n    if (typ &&\n        (typeof protectedHeader.typ !== 'string' ||\n            normalizeTyp(protectedHeader.typ) !== normalizeTyp(typ))) {\n        throw new JWTClaimValidationFailed('unexpected \"typ\" JWT header value', payload, 'typ', 'check_failed');\n    }\n    const { requiredClaims = [], issuer, subject, audience, maxTokenAge } = options;\n    const presenceCheck = [...requiredClaims];\n    if (maxTokenAge !== undefined)\n        presenceCheck.push('iat');\n    if (audience !== undefined)\n        presenceCheck.push('aud');\n    if (subject !== undefined)\n        presenceCheck.push('sub');\n    if (issuer !== undefined)\n        presenceCheck.push('iss');\n    for (const claim of new Set(presenceCheck.reverse())) {\n        if (!(claim in payload)) {\n            throw new JWTClaimValidationFailed(`missing required \"${claim}\" claim`, payload, claim, 'missing');\n        }\n    }\n    if (issuer &&\n        !(Array.isArray(issuer) ? issuer : [issuer]).includes(payload.iss)) {\n        throw new JWTClaimValidationFailed('unexpected \"iss\" claim value', payload, 'iss', 'check_failed');\n    }\n    if (subject && payload.sub !== subject) {\n        throw new JWTClaimValidationFailed('unexpected \"sub\" claim value', payload, 'sub', 'check_failed');\n    }\n    if (audience &&\n        !checkAudiencePresence(payload.aud, typeof audience === 'string' ? [audience] : audience)) {\n        throw new JWTClaimValidationFailed('unexpected \"aud\" claim value', payload, 'aud', 'check_failed');\n    }\n    let tolerance;\n    switch (typeof options.clockTolerance) {\n        case 'string':\n            tolerance = secs(options.clockTolerance);\n            break;\n        case 'number':\n            tolerance = options.clockTolerance;\n            break;\n        case 'undefined':\n            tolerance = 0;\n            break;\n        default:\n            throw new TypeError('Invalid clockTolerance option type');\n    }\n    const { currentDate } = options;\n    const now = epoch(currentDate || new Date());\n    if ((payload.iat !== undefined || maxTokenAge) && typeof payload.iat !== 'number') {\n        throw new JWTClaimValidationFailed('\"iat\" claim must be a number', payload, 'iat', 'invalid');\n    }\n    if (payload.nbf !== undefined) {\n        if (typeof payload.nbf !== 'number') {\n            throw new JWTClaimValidationFailed('\"nbf\" claim must be a number', payload, 'nbf', 'invalid');\n        }\n        if (payload.nbf > now + tolerance) {\n            throw new JWTClaimValidationFailed('\"nbf\" claim timestamp check failed', payload, 'nbf', 'check_failed');\n        }\n    }\n    if (payload.exp !== undefined) {\n        if (typeof payload.exp !== 'number') {\n            throw new JWTClaimValidationFailed('\"exp\" claim must be a number', payload, 'exp', 'invalid');\n        }\n        if (payload.exp <= now - tolerance) {\n            throw new JWTExpired('\"exp\" claim timestamp check failed', payload, 'exp', 'check_failed');\n        }\n    }\n    if (maxTokenAge) {\n        const age = now - payload.iat;\n        const max = typeof maxTokenAge === 'number' ? maxTokenAge : secs(maxTokenAge);\n        if (age - tolerance > max) {\n            throw new JWTExpired('\"iat\" claim timestamp check failed (too far in the past)', payload, 'iat', 'check_failed');\n        }\n        if (age < 0 - tolerance) {\n            throw new JWTClaimValidationFailed('\"iat\" claim timestamp check failed (it should be in the past)', payload, 'iat', 'check_failed');\n        }\n    }\n    return payload;\n}\nexport class JWTClaimsBuilder {\n    #payload;\n    constructor(payload) {\n        if (!isObject(payload)) {\n            throw new TypeError('JWT Claims Set MUST be an object');\n        }\n        this.#payload = structuredClone(payload);\n    }\n    data() {\n        return encoder.encode(JSON.stringify(this.#payload));\n    }\n    get iss() {\n        return this.#payload.iss;\n    }\n    set iss(value) {\n        this.#payload.iss = value;\n    }\n    get sub() {\n        return this.#payload.sub;\n    }\n    set sub(value) {\n        this.#payload.sub = value;\n    }\n    get aud() {\n        return this.#payload.aud;\n    }\n    set aud(value) {\n        this.#payload.aud = value;\n    }\n    set jti(value) {\n        this.#payload.jti = value;\n    }\n    set nbf(value) {\n        if (typeof value === 'number') {\n            this.#payload.nbf = validateInput('setNotBefore', value);\n        }\n        else if (value instanceof Date) {\n            this.#payload.nbf = validateInput('setNotBefore', epoch(value));\n        }\n        else {\n            this.#payload.nbf = epoch(new Date()) + secs(value);\n        }\n    }\n    set exp(value) {\n        if (typeof value === 'number') {\n            this.#payload.exp = validateInput('setExpirationTime', value);\n        }\n        else if (value instanceof Date) {\n            this.#payload.exp = validateInput('setExpirationTime', epoch(value));\n        }\n        else {\n            this.#payload.exp = epoch(new Date()) + secs(value);\n        }\n    }\n    set iat(value) {\n        if (value === undefined) {\n            this.#payload.iat = epoch(new Date());\n        }\n        else if (value instanceof Date) {\n            this.#payload.iat = validateInput('setIssuedAt', epoch(value));\n        }\n        else if (typeof value === 'string') {\n            this.#payload.iat = validateInput('setIssuedAt', epoch(new Date()) + secs(value));\n        }\n        else {\n            this.#payload.iat = validateInput('setIssuedAt', value);\n        }\n    }\n}\n", "import { compactVerify } from '../jws/compact/verify.js';\nimport { validateClaimsSet } from '../lib/jwt_claims_set.js';\nimport { JWTInvalid } from '../util/errors.js';\nexport async function jwtVerify(jwt, key, options) {\n    const verified = await compactVerify(jwt, key, options);\n    if (verified.protectedHeader.crit?.includes('b64') && verified.protectedHeader.b64 === false) {\n        throw new JWTInvalid('JWTs MUST NOT use unencoded payload');\n    }\n    const payload = validateClaimsSet(verified.protectedHeader, verified.payload, options);\n    const result = { payload, protectedHeader: verified.protectedHeader };\n    if (typeof key === 'function') {\n        return { ...result, key: verified.key };\n    }\n    return result;\n}\n", "import { FlattenedEncrypt } from '../flattened/encrypt.js';\nexport class CompactEncrypt {\n    #flattened;\n    constructor(plaintext) {\n        this.#flattened = new FlattenedEncrypt(plaintext);\n    }\n    setContentEncryptionKey(cek) {\n        this.#flattened.setContentEncryptionKey(cek);\n        return this;\n    }\n    setInitializationVector(iv) {\n        this.#flattened.setInitializationVector(iv);\n        return this;\n    }\n    setProtectedHeader(protectedHeader) {\n        this.#flattened.setProtectedHeader(protectedHeader);\n        return this;\n    }\n    setKeyManagementParameters(parameters) {\n        this.#flattened.setKeyManagementParameters(parameters);\n        return this;\n    }\n    async encrypt(key, options) {\n        const jwe = await this.#flattened.encrypt(key, options);\n        return [jwe.protected, jwe.encrypted_key, jwe.iv, jwe.ciphertext, jwe.tag].join('.');\n    }\n}\n", "import { subtleAlgorithm } from './subtle_dsa.js';\nimport { checkKeyLength } from './check_key_length.js';\nimport { getSigKey } from './get_sign_verify_key.js';\nexport async function sign(alg, key, data) {\n    const cryptoKey = await getSigKey(alg, key, 'sign');\n    checkKeyLength(alg, cryptoKey);\n    const signature = await crypto.subtle.sign(subtleAlgorithm(alg, cryptoKey.algorithm), cryptoKey, data);\n    return new Uint8Array(signature);\n}\n", "import { encode as b64u } from '../../util/base64url.js';\nimport { sign } from '../../lib/sign.js';\nimport { isDisjoint } from '../../lib/is_disjoint.js';\nimport { JWSInvalid } from '../../util/errors.js';\nimport { concat, encode } from '../../lib/buffer_utils.js';\nimport { checkKeyType } from '../../lib/check_key_type.js';\nimport { validateCrit } from '../../lib/validate_crit.js';\nimport { normalizeKey } from '../../lib/normalize_key.js';\nexport class FlattenedSign {\n    #payload;\n    #protectedHeader;\n    #unprotectedHeader;\n    constructor(payload) {\n        if (!(payload instanceof Uint8Array)) {\n            throw new TypeError('payload must be an instance of Uint8Array');\n        }\n        this.#payload = payload;\n    }\n    setProtectedHeader(protectedHeader) {\n        if (this.#protectedHeader) {\n            throw new TypeError('setProtectedHeader can only be called once');\n        }\n        this.#protectedHeader = protectedHeader;\n        return this;\n    }\n    setUnprotectedHeader(unprotectedHeader) {\n        if (this.#unprotectedHeader) {\n            throw new TypeError('setUnprotectedHeader can only be called once');\n        }\n        this.#unprotectedHeader = unprotectedHeader;\n        return this;\n    }\n    async sign(key, options) {\n        if (!this.#protectedHeader && !this.#unprotectedHeader) {\n            throw new JWSInvalid('either setProtectedHeader or setUnprotectedHeader must be called before #sign()');\n        }\n        if (!isDisjoint(this.#protectedHeader, this.#unprotectedHeader)) {\n            throw new JWSInvalid('JWS Protected and JWS Unprotected Header Parameter names must be disjoint');\n        }\n        const joseHeader = {\n            ...this.#protectedHeader,\n            ...this.#unprotectedHeader,\n        };\n        const extensions = validateCrit(JWSInvalid, new Map([['b64', true]]), options?.crit, this.#protectedHeader, joseHeader);\n        let b64 = true;\n        if (extensions.has('b64')) {\n            b64 = this.#protectedHeader.b64;\n            if (typeof b64 !== 'boolean') {\n                throw new JWSInvalid('The \"b64\" (base64url-encode payload) Header Parameter must be a boolean');\n            }\n        }\n        const { alg } = joseHeader;\n        if (typeof alg !== 'string' || !alg) {\n            throw new JWSInvalid('JWS \"alg\" (Algorithm) Header Parameter missing or invalid');\n        }\n        checkKeyType(alg, key, 'sign');\n        let payloadS;\n        let payloadB;\n        if (b64) {\n            payloadS = b64u(this.#payload);\n            payloadB = encode(payloadS);\n        }\n        else {\n            payloadB = this.#payload;\n            payloadS = '';\n        }\n        let protectedHeaderString;\n        let protectedHeaderBytes;\n        if (this.#protectedHeader) {\n            protectedHeaderString = b64u(JSON.stringify(this.#protectedHeader));\n            protectedHeaderBytes = encode(protectedHeaderString);\n        }\n        else {\n            protectedHeaderString = '';\n            protectedHeaderBytes = new Uint8Array();\n        }\n        const data = concat(protectedHeaderBytes, encode('.'), payloadB);\n        const k = await normalizeKey(key, alg);\n        const signature = await sign(alg, k, data);\n        const jws = {\n            signature: b64u(signature),\n            payload: payloadS,\n        };\n        if (this.#unprotectedHeader) {\n            jws.header = this.#unprotectedHeader;\n        }\n        if (this.#protectedHeader) {\n            jws.protected = protectedHeaderString;\n        }\n        return jws;\n    }\n}\n", "import { FlattenedSign } from '../flattened/sign.js';\nexport class CompactSign {\n    #flattened;\n    constructor(payload) {\n        this.#flattened = new FlattenedSign(payload);\n    }\n    setProtectedHeader(protectedHeader) {\n        this.#flattened.setProtectedHeader(protectedHeader);\n        return this;\n    }\n    async sign(key, options) {\n        const jws = await this.#flattened.sign(key, options);\n        if (jws.payload === undefined) {\n            throw new TypeError('use the flattened module for creating JWS with b64: false');\n        }\n        return `${jws.protected}.${jws.payload}.${jws.signature}`;\n    }\n}\n", "import { digest } from '../lib/digest.js';\nimport { encode as b64u } from '../util/base64url.js';\nimport { JOSENotSupported, JWKInvalid } from '../util/errors.js';\nimport { encode } from '../lib/buffer_utils.js';\nimport { isKeyLike } from '../lib/is_key_like.js';\nimport { isJWK } from '../lib/is_jwk.js';\nimport { exportJWK } from '../key/export.js';\nimport { invalidKeyInput } from '../lib/invalid_key_input.js';\nconst check = (value, description) => {\n    if (typeof value !== 'string' || !value) {\n        throw new JWKInvalid(`${description} missing or invalid`);\n    }\n};\nexport async function calculateJwkThumbprint(key, digestAlgorithm) {\n    let jwk;\n    if (isJWK(key)) {\n        jwk = key;\n    }\n    else if (isKeyLike(key)) {\n        jwk = await exportJWK(key);\n    }\n    else {\n        throw new TypeError(invalidKeyInput(key, 'CryptoKey', 'KeyObject', 'JSON Web Key'));\n    }\n    digestAlgorithm ??= 'sha256';\n    if (digestAlgorithm !== 'sha256' &&\n        digestAlgorithm !== 'sha384' &&\n        digestAlgorithm !== 'sha512') {\n        throw new TypeError('digestAlgorithm must one of \"sha256\", \"sha384\", or \"sha512\"');\n    }\n    let components;\n    switch (jwk.kty) {\n        case 'AKP':\n            check(jwk.alg, '\"alg\" (Algorithm) Parameter');\n            check(jwk.pub, '\"pub\" (Public key) Parameter');\n            components = { alg: jwk.alg, kty: jwk.kty, pub: jwk.pub };\n            break;\n        case 'EC':\n            check(jwk.crv, '\"crv\" (Curve) Parameter');\n            check(jwk.x, '\"x\" (X Coordinate) Parameter');\n            check(jwk.y, '\"y\" (Y Coordinate) Parameter');\n            components = { crv: jwk.crv, kty: jwk.kty, x: jwk.x, y: jwk.y };\n            break;\n        case 'OKP':\n            check(jwk.crv, '\"crv\" (Subtype of Key Pair) Parameter');\n            check(jwk.x, '\"x\" (Public Key) Parameter');\n            components = { crv: jwk.crv, kty: jwk.kty, x: jwk.x };\n            break;\n        case 'RSA':\n            check(jwk.e, '\"e\" (Exponent) Parameter');\n            check(jwk.n, '\"n\" (Modulus) Parameter');\n            components = { e: jwk.e, kty: jwk.kty, n: jwk.n };\n            break;\n        case 'oct':\n            check(jwk.k, '\"k\" (Key Value) Parameter');\n            components = { k: jwk.k, kty: jwk.kty };\n            break;\n        default:\n            throw new JOSENotSupported('\"kty\" (Key Type) Parameter missing or unsupported');\n    }\n    const data = encode(JSON.stringify(components));\n    return b64u(await digest(digestAlgorithm, data));\n}\nexport async function calculateJwkThumbprintUri(key, digestAlgorithm) {\n    digestAlgorithm ??= 'sha256';\n    const thumbprint = await calculateJwkThumbprint(key, digestAlgorithm);\n    return `urn:ietf:params:oauth:jwk-thumbprint:sha-${digestAlgorithm.slice(-3)}:${thumbprint}`;\n}\n", "import { importJWK } from '../key/import.js';\nimport { isObject } from '../lib/is_object.js';\nimport { JWSInvalid } from '../util/errors.js';\nexport async function EmbeddedJWK(protectedHeader, token) {\n    const joseHeader = {\n        ...protectedHeader,\n        ...token?.header,\n    };\n    if (!isObject(joseHeader.jwk)) {\n        throw new JWSInvalid('\"jwk\" (JSON Web Key) Header Parameter must be a JSON object');\n    }\n    const key = await importJWK({ ...joseHeader.jwk, ext: true }, joseHeader.alg);\n    if (key instanceof Uint8Array || key.type !== 'public') {\n        throw new JWSInvalid('\"jwk\" (JSON Web Key) Header Parameter must be a public key');\n    }\n    return key;\n}\n", "import * as b64u from '../util/base64url.js';\nimport { decoder } from '../lib/buffer_utils.js';\nimport { JWTInvalid } from '../util/errors.js';\nimport { validateClaimsSet, JWTClaimsBuilder } from '../lib/jwt_claims_set.js';\nexport class UnsecuredJWT {\n    #jwt;\n    constructor(payload = {}) {\n        this.#jwt = new JWTClaimsBuilder(payload);\n    }\n    encode() {\n        const header = b64u.encode(JSON.stringify({ alg: 'none' }));\n        const payload = b64u.encode(this.#jwt.data());\n        return `${header}.${payload}.`;\n    }\n    setIssuer(issuer) {\n        this.#jwt.iss = issuer;\n        return this;\n    }\n    setSubject(subject) {\n        this.#jwt.sub = subject;\n        return this;\n    }\n    setAudience(audience) {\n        this.#jwt.aud = audience;\n        return this;\n    }\n    setJti(jwtId) {\n        this.#jwt.jti = jwtId;\n        return this;\n    }\n    setNotBefore(input) {\n        this.#jwt.nbf = input;\n        return this;\n    }\n    setExpirationTime(input) {\n        this.#jwt.exp = input;\n        return this;\n    }\n    setIssuedAt(input) {\n        this.#jwt.iat = input;\n        return this;\n    }\n    static decode(jwt, options) {\n        if (typeof jwt !== 'string') {\n            throw new JWTInvalid('Unsecured JWT must be a string');\n        }\n        const { 0: encodedHeader, 1: encodedPayload, 2: signature, length } = jwt.split('.');\n        if (length !== 3 || signature !== '') {\n            throw new JWTInvalid('Invalid Unsecured JWT');\n        }\n        let header;\n        try {\n            header = JSON.parse(decoder.decode(b64u.decode(encodedHeader)));\n            if (header.alg !== 'none')\n                throw new Error();\n        }\n        catch {\n            throw new JWTInvalid('Invalid Unsecured JWT');\n        }\n        const payload = validateClaimsSet(header, b64u.decode(encodedPayload), options);\n        return { payload, header };\n    }\n}\n", "import { decode as b64u } from './base64url.js';\nimport { decoder } from '../lib/buffer_utils.js';\nimport { isObject } from '../lib/is_object.js';\nexport function decodeProtectedHeader(token) {\n    let protectedB64u;\n    if (typeof token === 'string') {\n        const parts = token.split('.');\n        if (parts.length === 3 || parts.length === 5) {\n            ;\n            [protectedB64u] = parts;\n        }\n    }\n    else if (typeof token === 'object' && token) {\n        if ('protected' in token) {\n            protectedB64u = token.protected;\n        }\n        else {\n            throw new TypeError('Token does not contain a Protected Header');\n        }\n    }\n    try {\n        if (typeof protectedB64u !== 'string' || !protectedB64u) {\n            throw new Error();\n        }\n        const result = JSON.parse(decoder.decode(b64u(protectedB64u)));\n        if (!isObject(result)) {\n            throw new Error();\n        }\n        return result;\n    }\n    catch {\n        throw new TypeError('Invalid Token or Protected Header formatting');\n    }\n}\n", "import { decode as b64u } from './base64url.js';\nimport { decoder } from '../lib/buffer_utils.js';\nimport { isObject } from '../lib/is_object.js';\nimport { JWTInvalid } from './errors.js';\nexport function decodeJwt(jwt) {\n    if (typeof jwt !== 'string')\n        throw new JWTInvalid('JWTs must use Compact JWS serialization, JWT must be a string');\n    const { 1: payload, length } = jwt.split('.');\n    if (length === 5)\n        throw new JWTInvalid('Only JWTs using Compact JWS serialization can be decoded');\n    if (length !== 3)\n        throw new JWTInvalid('Invalid JWT');\n    if (!payload)\n        throw new JWTInvalid('JWTs must contain a payload');\n    let decoded;\n    try {\n        decoded = b64u(payload);\n    }\n    catch {\n        throw new JWTInvalid('Failed to base64url decode the payload');\n    }\n    let result;\n    try {\n        result = JSON.parse(decoder.decode(decoded));\n    }\n    catch {\n        throw new JWTInvalid('Failed to parse the decoded payload as JSON');\n    }\n    if (!isObject(result))\n        throw new JWTInvalid('Invalid JWT Claims Set');\n    return result;\n}\n", "/* eslint-disable no-plusplus, no-bitwise, no-param-reassign */\n\nimport { hkdfSync } from 'node:crypto';\n\nimport * as base64url from './base64url.js';\n\nfunction sixfourbeify(value) {\n  const buf = Buffer.alloc(8);\n  for (let i = buf.length - 1; i >= 0; i--) {\n    buf[i] = value & 0xff;\n    value >>= 8;\n  }\n\n  return buf;\n}\n\nfunction compute(secret, info, step) {\n  return base64url.encodeBuffer(\n    Buffer.from(\n      hkdfSync('sha256', secret, sixfourbeify(step), info, 32),\n    ),\n  );\n}\n\nfunction compare(server, client) {\n  let result = 0;\n\n  if (server.length !== client.length) {\n    result = 1;\n    client = server;\n  }\n\n  for (let i = 0; i < server.length; i++) {\n    result |= server.charCodeAt(i) ^ client.charCodeAt(i);\n  }\n\n  return result;\n}\n\nconst STEP = 60;\nexport const CHALLENGE_OK_WINDOW = STEP * 5;\n\nexport default class ServerChallenge {\n  #counter;\n\n  #info;\n\n  #secret;\n\n  #prevprev;\n\n  #prev;\n\n  #now;\n\n  #next;\n\n  #nextnext;\n\n  constructor(secret, info) {\n    if (!Buffer.isBuffer(secret) || secret.byteLength !== 32) {\n      throw new TypeError('Challenge secret must be a 32-byte Buffer instance');\n    }\n\n    if (typeof info !== 'string' || !info.length) {\n      throw new TypeError('Challenge info must be a non-empty string');\n    }\n\n    this.#info = info;\n    this.#secret = Uint8Array.prototype.slice.call(secret);\n    this.#counter = Math.floor(Date.now() / 1000 / STEP);\n\n    [this.#prevprev, this.#prev, this.#now, this.#next, this.#nextnext] = [\n      this.#counter - 2,\n      this.#counter - 1,\n      this.#counter,\n      this.#counter + 1,\n      this.#counter++ + 2,\n    ].map(compute.bind(undefined, this.#secret, this.#info));\n\n    setInterval(() => {\n      [\n        this.#prevprev,\n        this.#prev,\n        this.#now,\n        this.#next,\n        this.#nextnext,\n      ] = [\n        this.#prev,\n        this.#now,\n        this.#next,\n        this.#nextnext,\n        compute(this.#secret, this.#info, this.#counter++ + 2),\n      ];\n    }, STEP * 1000).unref();\n  }\n\n  nextChallenge() {\n    return this.#next;\n  }\n\n  checkChallenge(challenge) {\n    let result = 0;\n\n    for (const server of [this.#prevprev, this.#prev, this.#now, this.#next, this.#nextnext]) {\n      result ^= compare(server, challenge);\n    }\n\n    return result === 0;\n  }\n}\n", "export function encode(input, encoding = 'utf8') {\n  return Buffer.from(input, encoding).toString('base64url');\n}\n\nexport function encodeBuffer(buf) {\n  return Buffer.prototype.base64urlSlice.call(buf);\n}\n\nexport function decode(input) {\n  return Buffer.from(input, 'base64').toString('utf8');\n}\n", "import { InvalidTarget } from './errors.js';\n\nexport default async (ctx, model, config, scopes = model.scopes) => {\n  let resource;\n  if (config.resourceIndicators.enabled) {\n    // eslint-disable-next-line default-case\n    switch (true) {\n      case !!ctx.oidc.params.resource:\n        resource = ctx.oidc.params.resource;\n        break;\n      case !model.resource:\n      case Array.isArray(model.resource) && model.resource.length === 0:\n        break;\n      case model.resource && !!(await config.resourceIndicators.useGrantedResource(ctx, model)):\n      case !ctx.oidc.params.resource && (!config.userinfo.enabled || !scopes.has('openid')):\n        resource = model.resource;\n        break;\n    }\n\n    if (Array.isArray(resource)) {\n      resource = await config.resourceIndicators.defaultResource(ctx, ctx.oidc.client, resource);\n    }\n\n    if (Array.isArray(resource)) {\n      throw new InvalidTarget('only a single resource indicator value must be requested/resolved during Access Token Request');\n    }\n\n    if (resource && !model.resourceIndicators.has(resource)) {\n      throw new InvalidTarget();\n    }\n  }\n  return resource;\n};\n", "import { InvalidAuthorizationDetails, InvalidRequest } from '../helpers/errors.js';\nimport instance from '../helpers/weak_cache.js';\nimport isPlainObject from '../helpers/_/is_plain_object.js';\n\nexport default async function checkRar(ctx, next) {\n  const { params, client } = ctx.oidc;\n\n  if (params.authorization_details !== undefined) {\n    const { richAuthorizationRequests } = instance(ctx.oidc.provider).features;\n\n    if (richAuthorizationRequests.enabled) {\n      if (\n        params.response_type?.split(' ').includes('code') === false\n        || params.response_type?.split(' ').includes('token')\n        || params.response_type === 'none'\n      ) {\n        throw new InvalidRequest('authorization_details parameter is not supported for this response_type');\n      }\n\n      let details;\n\n      try {\n        details = JSON.parse(params.authorization_details);\n      } catch (err) {\n        throw new InvalidRequest('could not parse the authorization_details parameter JSON');\n      }\n\n      if (!Array.isArray(details)) {\n        throw new InvalidRequest('authorization_details parameter should be a JSON array');\n      }\n\n      if (!details.length) {\n        params.authorization_details = undefined;\n        return next();\n      }\n\n      let i = 0;\n      for (const detail of details) {\n        if (!isPlainObject(detail)) {\n          throw new InvalidRequest('authorization_details parameter members should be a JSON object');\n        }\n\n        if (typeof detail.type !== 'string' || !detail.type.length) {\n          throw new InvalidAuthorizationDetails(`authorization_details parameter members' type attribute must be a non-empty string (authorization details index ${i})`);\n        }\n\n        const config = richAuthorizationRequests.types[detail.type];\n        if (!config) {\n          throw new InvalidAuthorizationDetails(`unsupported authorization details type value (authorization details index ${i})`);\n        }\n\n        if (client.authorizationDetailsTypes?.includes(detail.type) === false) {\n          throw new InvalidAuthorizationDetails(`authorization details type '${detail.type}' is not allowed for this client`);\n        }\n\n        // check common data fields\n        for (const field of ['locations', 'actions', 'datatypes', 'privileges']) {\n          if (field in detail && (!Array.isArray(detail[field]) || detail[field].some((value) => typeof value !== 'string' || !value.length))) {\n            throw new InvalidAuthorizationDetails(`'${field}' must be an array of non-empty strings (authorization details index ${i})`);\n          }\n        }\n        if ('identifier' in detail && (typeof detail.identifier !== 'string' || !detail.identifier.length)) {\n          throw new InvalidAuthorizationDetails(`'identifier' must be a non-empty string (authorization details index ${i})`);\n        }\n\n        await config.validate(ctx, detail, client);\n\n        // eslint-disable-next-line no-plusplus\n        i++;\n      }\n    }\n  }\n\n  return next();\n}\n", "export default async function getCtxAccountClaims(ctx, use, scope, claims, rejected) {\n  return {\n    ...await ctx.oidc.account.claims(use, scope, claims, rejected),\n    sub: ctx.oidc.account.accountId,\n  };\n}\n", "/* eslint-disable no-param-reassign */\n\nexport async function setRefreshTokenBindings(ctx, at, rt) {\n  switch (ctx.oidc.client.clientAuthMethod) {\n    case 'none':\n      if (at.jkt) {\n        rt.jkt = at.jkt;\n      }\n\n      if (at['x5t#S256']) {\n        rt['x5t#S256'] = at['x5t#S256'];\n      }\n      break;\n    case 'attest_jwt_client_auth': {\n      await rt.setAttestBinding(ctx);\n      break;\n    }\n    default:\n      break;\n  }\n}\n", "import * as jose from 'jose';\n\nimport { InvalidGrant } from './errors.js';\n\nexport async function checkAttestBinding(ctx, model) {\n  const { cnf: { jwk } } = jose.decodeJwt(ctx.get('oauth-client-attestation'));\n  if (model.attestationJkt !== await jose.calculateJwkThumbprint(jwk)) {\n    throw new InvalidGrant('oauth-client-attestation instance public key mismatch');\n  }\n}\n", "import instance from '../../helpers/weak_cache.js';\nimport {\n  InvalidGrant, InvalidTarget, InvalidScope, InvalidRequest,\n} from '../../helpers/errors.js';\nimport dpopValidate, { CHALLENGE_OK_WINDOW } from '../../helpers/validate_dpop.js';\nimport checkResource from '../../shared/check_resource.js';\nimport epochTime from '../../helpers/epoch_time.js';\n\nexport const handler = async function clientCredentialsHandler(ctx) {\n  const { client } = ctx.oidc;\n  const { ClientCredentials, ReplayDetection } = ctx.oidc.provider;\n  const {\n    features: {\n      mTLS: { getCertificate },\n      dPoP: { allowReplay },\n    },\n    scopes: statics,\n  } = instance(ctx.oidc.provider).configuration;\n\n  const dPoP = await dpopValidate(ctx);\n\n  if (ctx.oidc.params.authorization_details) {\n    throw new InvalidRequest('authorization_details is unsupported for this grant_type');\n  }\n\n  await checkResource(ctx, () => {});\n\n  const scopes = [...new Set(ctx.oidc.params.scope?.split(' '))];\n\n  if (client.scope) {\n    const allowList = new Set(client.scope.split(' '));\n\n    for (const scope of scopes.filter(Set.prototype.has.bind(statics))) {\n      if (!allowList.has(scope)) {\n        throw new InvalidScope('requested scope is not allowed', scope);\n      }\n    }\n  }\n\n  const token = new ClientCredentials({\n    client,\n    scope: scopes.join(' ') || undefined,\n  });\n\n  const { 0: resourceServer, length } = Object.values(ctx.oidc.resourceServers);\n  if (resourceServer) {\n    if (length !== 1) {\n      throw new InvalidTarget('only a single resource indicator value is supported for this grant type');\n    }\n    token.resourceServer = resourceServer;\n    token.scope = scopes.filter(Set.prototype.has.bind(new Set(resourceServer.scope.split(' ')))).join(' ') || undefined;\n  }\n\n  if (client.tlsClientCertificateBoundAccessTokens) {\n    const cert = getCertificate(ctx);\n\n    if (!cert) {\n      throw new InvalidGrant('mutual TLS client certificate not provided');\n    }\n    token.setThumbprint('x5t', cert);\n  }\n\n  if (dPoP) {\n    if (!allowReplay) {\n      const unique = await ReplayDetection.unique(\n        client.clientId,\n        dPoP.jti,\n        epochTime() + CHALLENGE_OK_WINDOW,\n      );\n\n      ctx.assert(unique, new InvalidGrant('DPoP proof JWT Replay detected'));\n    }\n\n    token.setThumbprint('jkt', dPoP.thumbprint);\n  } else if (ctx.oidc.client.dpopBoundAccessTokens) {\n    throw new InvalidGrant('DPoP proof JWT not provided');\n  }\n\n  ctx.oidc.entity('ClientCredentials', token);\n  const value = await token.save();\n\n  ctx.body = {\n    access_token: value,\n    expires_in: token.expiration,\n    token_type: token.tokenType,\n    scope: token.scope || undefined,\n  };\n};\n\nexport const parameters = new Set(['scope']);\n\nexport const grantType = 'client_credentials';\n", "/* eslint-disable no-underscore-dangle */\nimport instance from '../helpers/weak_cache.js';\nimport { InvalidTarget } from '../helpers/errors.js';\n\nconst filterStatics = (ctx) => {\n  if (ctx.oidc.params.scope && !ctx.oidc.params.resource) {\n    ctx.oidc.params.scope = [...ctx.oidc.requestParamOIDCScopes].join(' ');\n  }\n};\n\nfunction emptyResource(params) {\n  return !params.resource || (Array.isArray(params.resource) && !params.resource.length);\n}\n\nexport default async function checkResource(ctx, next) {\n  const {\n    oidc: {\n      params,\n      provider,\n      client,\n      resourceServers,\n    },\n  } = ctx;\n\n  const {\n    defaultResource,\n    enabled,\n    getResourceServerInfo,\n  } = instance(provider).features.resourceIndicators;\n\n  if (!enabled) {\n    filterStatics(ctx);\n    return next();\n  }\n\n  if (params.resource === undefined) {\n    params.resource = await defaultResource(ctx, client);\n\n    if (params.authorization_details && emptyResource(params)) {\n      throw new InvalidTarget('resource indicator must be provided or defaulted to when Rich Authorization Requests are used');\n    }\n  }\n\n  if (params.scope && emptyResource(params)) {\n    filterStatics(ctx);\n    return next();\n  }\n\n  let { resource } = params;\n\n  if (params.resource === undefined) {\n    return next();\n  }\n\n  if (!Array.isArray(params.resource)) {\n    resource = [resource];\n  }\n\n  for (const identifier of resource) {\n    const href = URL.parse(identifier)?.href;\n\n    if (!href) {\n      throw new InvalidTarget('resource indicator must be an absolute URI');\n    }\n\n    // NOTE: we don't check for new URL() => search of hash because of an edge case\n    // new URL('https://example.com?#') => search and hash are empty, seems like an inconsistent validation\n    if (href.includes('#')) {\n      throw new InvalidTarget('resource indicator must not contain a fragment component');\n    }\n\n    const resourceServer = await getResourceServerInfo(ctx, identifier, client);\n    resourceServers[identifier] = new ctx.oidc.provider.ResourceServer(identifier, resourceServer);\n  }\n\n  return next();\n}\n", "import difference from '../../helpers/_/difference.js';\nimport { InvalidRequest, InvalidGrant, InvalidScope } from '../../helpers/errors.js';\nimport presence from '../../helpers/validate_presence.js';\nimport instance from '../../helpers/weak_cache.js';\nimport revoke from '../../helpers/revoke.js';\nimport certificateThumbprint from '../../helpers/certificate_thumbprint.js';\nimport * as formatters from '../../helpers/formatters.js';\nimport filterClaims from '../../helpers/filter_claims.js';\nimport dpopValidate, { CHALLENGE_OK_WINDOW } from '../../helpers/validate_dpop.js';\nimport resolveResource from '../../helpers/resolve_resource.js';\nimport epochTime from '../../helpers/epoch_time.js';\nimport checkRar from '../../shared/check_rar.js';\nimport getCtxAccountClaims from '../../helpers/account_claims.js';\nimport { checkAttestBinding } from '../../helpers/check_attest_binding.js';\n\nimport { gty as deviceCodeGty } from './device_code.js';\n\nfunction rarSupported(token) {\n  const [origin] = token.gty.split(' ');\n  return origin !== deviceCodeGty;\n}\n\nconst gty = 'refresh_token';\n\nexport const handler = async function refreshTokenHandler(ctx) {\n  presence(ctx, 'refresh_token');\n\n  const {\n    findAccount,\n    conformIdTokenClaims,\n    rotateRefreshToken,\n    features: {\n      userinfo,\n      mTLS: { getCertificate },\n      dPoP: { allowReplay },\n      resourceIndicators,\n      richAuthorizationRequests,\n    },\n  } = instance(ctx.oidc.provider).configuration;\n\n  const {\n    RefreshToken, AccessToken, IdToken, ReplayDetection,\n  } = ctx.oidc.provider;\n  const { client } = ctx.oidc;\n\n  const dPoP = await dpopValidate(ctx);\n\n  let refreshTokenValue = ctx.oidc.params.refresh_token;\n  let refreshToken = await RefreshToken.find(refreshTokenValue, { ignoreExpiration: true });\n\n  if (!refreshToken) {\n    throw new InvalidGrant('refresh token not found');\n  }\n\n  if (refreshToken.clientId !== client.clientId) {\n    throw new InvalidGrant('client mismatch');\n  }\n\n  if (refreshToken.isExpired) {\n    throw new InvalidGrant('refresh token is expired');\n  }\n\n  let cert;\n  if (client.tlsClientCertificateBoundAccessTokens || refreshToken['x5t#S256']) {\n    cert = getCertificate(ctx);\n    if (!cert) {\n      throw new InvalidGrant('mutual TLS client certificate not provided');\n    }\n  }\n\n  if (!dPoP && ctx.oidc.client.dpopBoundAccessTokens) {\n    throw new InvalidGrant('DPoP proof JWT not provided');\n  }\n\n  if (refreshToken['x5t#S256'] && refreshToken['x5t#S256'] !== certificateThumbprint(cert)) {\n    throw new InvalidGrant('failed x5t#S256 verification');\n  }\n\n  const grant = await ctx.oidc.provider.Grant.find(refreshToken.grantId, {\n    ignoreExpiration: true,\n  });\n\n  if (!grant) {\n    throw new InvalidGrant('grant not found');\n  }\n\n  if (grant.isExpired) {\n    throw new InvalidGrant('grant is expired');\n  }\n\n  if (grant.clientId !== client.clientId) {\n    throw new InvalidGrant('client mismatch');\n  }\n\n  if (ctx.oidc.params.scope) {\n    const missing = difference([...ctx.oidc.requestParamScopes], [...refreshToken.scopes]);\n\n    if (missing.length !== 0) {\n      throw new InvalidScope(`refresh token missing requested ${formatters.pluralize('scope', missing.length)}`, missing.join(' '));\n    }\n  }\n\n  if (dPoP && !allowReplay) {\n    const unique = await ReplayDetection.unique(\n      client.clientId,\n      dPoP.jti,\n      epochTime() + CHALLENGE_OK_WINDOW,\n    );\n\n    ctx.assert(unique, new InvalidGrant('DPoP proof JWT Replay detected'));\n  }\n\n  if (refreshToken.jkt && (!dPoP || refreshToken.jkt !== dPoP.thumbprint)) {\n    throw new InvalidGrant('failed jkt verification');\n  }\n\n  if (ctx.oidc.client.clientAuthMethod === 'attest_jwt_client_auth') {\n    await checkAttestBinding(ctx, refreshToken);\n  }\n\n  ctx.oidc.entity('RefreshToken', refreshToken);\n  ctx.oidc.entity('Grant', grant);\n\n  const account = await findAccount(ctx, refreshToken.accountId, refreshToken);\n\n  if (!account) {\n    throw new InvalidGrant('refresh token invalid (referenced account not found)');\n  }\n\n  if (refreshToken.accountId !== grant.accountId) {\n    throw new InvalidGrant('accountId mismatch');\n  }\n\n  ctx.oidc.entity('Account', account);\n\n  if (refreshToken.consumed) {\n    await Promise.all([\n      refreshToken.destroy(),\n      revoke(ctx, refreshToken.grantId),\n    ]);\n    throw new InvalidGrant('refresh token already used');\n  }\n\n  if (ctx.oidc.params.authorization_details && !rarSupported(refreshToken)) {\n    throw new InvalidRequest('authorization_details is unsupported for this refresh token');\n  }\n\n  if (\n    rotateRefreshToken === true\n    || (typeof rotateRefreshToken === 'function' && await rotateRefreshToken(ctx))\n  ) {\n    await refreshToken.consume();\n    ctx.oidc.entity('RotatedRefreshToken', refreshToken);\n\n    refreshToken = new RefreshToken({\n      accountId: refreshToken.accountId,\n      acr: refreshToken.acr,\n      amr: refreshToken.amr,\n      authTime: refreshToken.authTime,\n      claims: refreshToken.claims,\n      client,\n      expiresWithSession: refreshToken.expiresWithSession,\n      iiat: refreshToken.iiat,\n      grantId: refreshToken.grantId,\n      gty: refreshToken.gty,\n      nonce: refreshToken.nonce,\n      resource: refreshToken.resource,\n      rotations: typeof refreshToken.rotations === 'number' ? refreshToken.rotations + 1 : 1,\n      scope: refreshToken.scope,\n      sessionUid: refreshToken.sessionUid,\n      sid: refreshToken.sid,\n      rar: refreshToken.rar,\n      'x5t#S256': refreshToken['x5t#S256'],\n      jkt: refreshToken.jkt,\n      attestationJkt: refreshToken.attestationJkt,\n    });\n\n    if (refreshToken.gty && !refreshToken.gty.endsWith(gty)) {\n      refreshToken.gty = `${refreshToken.gty} ${gty}`;\n    }\n\n    ctx.oidc.entity('RefreshToken', refreshToken);\n    refreshTokenValue = await refreshToken.save();\n  }\n\n  const at = new AccessToken({\n    accountId: account.accountId,\n    client,\n    expiresWithSession: refreshToken.expiresWithSession,\n    grantId: refreshToken.grantId,\n    gty: refreshToken.gty,\n    sessionUid: refreshToken.sessionUid,\n    sid: refreshToken.sid,\n  });\n\n  if (client.tlsClientCertificateBoundAccessTokens) {\n    at.setThumbprint('x5t', cert);\n  }\n\n  if (dPoP) {\n    at.setThumbprint('jkt', dPoP.thumbprint);\n  }\n\n  if (at.gty && !at.gty.endsWith(gty)) {\n    at.gty = `${at.gty} ${gty}`;\n  }\n\n  const scope = ctx.oidc.params.scope ? ctx.oidc.requestParamScopes : refreshToken.scopes;\n  await checkRar(ctx, () => {});\n  const resource = await resolveResource(\n    ctx,\n    refreshToken,\n    { userinfo, resourceIndicators },\n    scope,\n  );\n\n  if (resource) {\n    const resourceServerInfo = await resourceIndicators\n      .getResourceServerInfo(ctx, resource, ctx.oidc.client);\n    at.resourceServer = new ctx.oidc.provider.ResourceServer(resource, resourceServerInfo);\n    at.scope = grant.getResourceScopeFiltered(\n      resource,\n      [...scope].filter(Set.prototype.has.bind(at.resourceServer.scopes)),\n    );\n  } else {\n    at.claims = refreshToken.claims;\n    at.scope = grant.getOIDCScopeFiltered(scope);\n  }\n\n  if (richAuthorizationRequests.enabled && at.resourceServer) {\n    at.rar = await richAuthorizationRequests.rarForRefreshTokenResponse(ctx, at.resourceServer);\n  }\n\n  ctx.oidc.entity('AccessToken', at);\n  const accessToken = await at.save();\n\n  let idToken;\n  if (scope.has('openid')) {\n    const claims = filterClaims(refreshToken.claims, 'id_token', grant);\n    const rejected = grant.getRejectedOIDCClaims();\n    const token = new IdToken(({\n      ...await getCtxAccountClaims(ctx, 'id_token', [...scope].join(' '), claims, rejected),\n      acr: refreshToken.acr,\n      amr: refreshToken.amr,\n      auth_time: refreshToken.authTime,\n    }), { ctx });\n\n    if (conformIdTokenClaims && userinfo.enabled && !at.aud) {\n      token.scope = 'openid';\n    } else {\n      token.scope = grant.getOIDCScopeFiltered(scope);\n    }\n    token.mask = claims;\n    token.rejected = rejected;\n\n    token.set('nonce', refreshToken.nonce);\n    token.set('sid', refreshToken.sid);\n\n    idToken = await token.issue({ use: 'idtoken' });\n  }\n\n  ctx.body = {\n    access_token: accessToken,\n    expires_in: at.expiration,\n    id_token: idToken,\n    refresh_token: refreshTokenValue,\n    scope: refreshToken.scope ? at.scope : (at.scope || undefined),\n    token_type: at.tokenType,\n    authorization_details: at.rar,\n  };\n};\n\nexport const parameters = new Set(['refresh_token', 'scope']);\n\nexport const grantType = gty;\n", "export default (array, values) => array.filter((value) => values.indexOf(value) === -1);\n", "import * as crypto from 'node:crypto';\n\nexport default function certThumbprint(cert) {\n  let data;\n  if (cert instanceof crypto.X509Certificate) {\n    data = cert.raw;\n  } else {\n    data = Buffer.from(\n      cert.replace(/(?:-----(?:BEGIN|END) CERTIFICATE-----|\\s|=)/g, ''),\n      'base64',\n    );\n  }\n\n  return crypto.hash('sha256', data, 'base64url');\n}\n", "import upperFirst from '../../helpers/_/upper_first.js';\nimport camelCase from '../../helpers/_/camel_case.js';\nimport * as errors from '../../helpers/errors.js';\nimport presence from '../../helpers/validate_presence.js';\nimport instance from '../../helpers/weak_cache.js';\nimport filterClaims from '../../helpers/filter_claims.js';\nimport revoke from '../../helpers/revoke.js';\nimport dpopValidate, { CHALLENGE_OK_WINDOW } from '../../helpers/validate_dpop.js';\nimport resolveResource from '../../helpers/resolve_resource.js';\nimport epochTime from '../../helpers/epoch_time.js';\nimport getCtxAccountClaims from '../../helpers/account_claims.js';\nimport { setRefreshTokenBindings } from '../../helpers/set_rt_bindings.js';\nimport { checkAttestBinding } from '../../helpers/check_attest_binding.js';\n\nconst {\n  AuthorizationPending,\n  ExpiredToken,\n  InvalidGrant,\n} = errors;\n\nexport const gty = 'device_code';\n\nexport const handler = async function deviceCodeHandler(ctx) {\n  presence(ctx, 'device_code');\n\n  if (ctx.oidc.params.authorization_details) {\n    throw new errors.InvalidRequest('authorization_details is unsupported for this grant_type');\n  }\n\n  const {\n    findAccount,\n    issueRefreshToken,\n    conformIdTokenClaims,\n    features: {\n      userinfo,\n      mTLS: { getCertificate },\n      dPoP: { allowReplay },\n      resourceIndicators,\n    },\n  } = instance(ctx.oidc.provider).configuration;\n\n  const dPoP = await dpopValidate(ctx);\n\n  const code = await ctx.oidc.provider.DeviceCode.find(ctx.oidc.params.device_code, {\n    ignoreExpiration: true,\n  });\n\n  if (!code) {\n    throw new InvalidGrant('device code not found');\n  }\n\n  if (code.clientId !== ctx.oidc.client.clientId) {\n    throw new InvalidGrant('client mismatch');\n  }\n\n  if (ctx.oidc.client.clientAuthMethod === 'attest_jwt_client_auth') {\n    await checkAttestBinding(ctx, code);\n  }\n\n  let cert;\n  if (ctx.oidc.client.tlsClientCertificateBoundAccessTokens) {\n    cert = getCertificate(ctx);\n    if (!cert) {\n      throw new InvalidGrant('mutual TLS client certificate not provided');\n    }\n  }\n\n  if (!dPoP && ctx.oidc.client.dpopBoundAccessTokens) {\n    throw new InvalidGrant('DPoP proof JWT not provided');\n  }\n\n  if (code.isExpired) {\n    throw new ExpiredToken('device code is expired');\n  }\n\n  if (!code.accountId && !code.error) {\n    throw new AuthorizationPending();\n  }\n\n  if (code.consumed) {\n    await revoke(ctx, code.grantId);\n    throw new InvalidGrant('device code already consumed');\n  }\n\n  await code.consume();\n\n  if (code.error) {\n    const className = upperFirst(camelCase(code.error));\n    if (errors[className]) {\n      throw new errors[className](code.errorDescription);\n    }\n    throw new errors.CustomOIDCProviderError(code.error, code.errorDescription);\n  }\n\n  const grant = await ctx.oidc.provider.Grant.find(code.grantId, {\n    ignoreExpiration: true,\n  });\n\n  if (!grant) {\n    throw new InvalidGrant('grant not found');\n  }\n\n  if (grant.isExpired) {\n    throw new InvalidGrant('grant is expired');\n  }\n\n  if (grant.clientId !== ctx.oidc.client.clientId) {\n    throw new InvalidGrant('client mismatch');\n  }\n\n  ctx.oidc.entity('DeviceCode', code);\n  ctx.oidc.entity('Grant', grant);\n\n  const account = await findAccount(ctx, code.accountId, code);\n\n  if (!account) {\n    throw new InvalidGrant('device code invalid (referenced account not found)');\n  }\n\n  if (code.accountId !== grant.accountId) {\n    throw new InvalidGrant('accountId mismatch');\n  }\n\n  ctx.oidc.entity('Account', account);\n\n  const {\n    AccessToken, IdToken, RefreshToken, ReplayDetection,\n  } = ctx.oidc.provider;\n\n  const at = new AccessToken({\n    accountId: account.accountId,\n    client: ctx.oidc.client,\n    expiresWithSession: code.expiresWithSession,\n    grantId: code.grantId,\n    gty,\n    sessionUid: code.sessionUid,\n    sid: code.sid,\n  });\n\n  if (ctx.oidc.client.tlsClientCertificateBoundAccessTokens) {\n    at.setThumbprint('x5t', cert);\n  }\n\n  if (dPoP) {\n    if (!allowReplay) {\n      const unique = await ReplayDetection.unique(\n        ctx.oidc.client.clientId,\n        dPoP.jti,\n        epochTime() + CHALLENGE_OK_WINDOW,\n      );\n\n      ctx.assert(unique, new InvalidGrant('DPoP proof JWT Replay detected'));\n    }\n\n    at.setThumbprint('jkt', dPoP.thumbprint);\n  }\n\n  const resource = await resolveResource(ctx, code, { userinfo, resourceIndicators });\n\n  if (resource) {\n    const resourceServerInfo = await resourceIndicators\n      .getResourceServerInfo(ctx, resource, ctx.oidc.client);\n    at.resourceServer = new ctx.oidc.provider.ResourceServer(resource, resourceServerInfo);\n    at.scope = grant.getResourceScopeFiltered(resource, code.scopes);\n  } else {\n    at.claims = code.claims;\n    at.scope = grant.getOIDCScopeFiltered(code.scopes);\n  }\n\n  ctx.oidc.entity('AccessToken', at);\n  const accessToken = await at.save();\n\n  let refreshToken;\n  if (await issueRefreshToken(ctx, ctx.oidc.client, code)) {\n    const rt = new RefreshToken({\n      accountId: account.accountId,\n      acr: code.acr,\n      amr: code.amr,\n      authTime: code.authTime,\n      claims: code.claims,\n      client: ctx.oidc.client,\n      expiresWithSession: code.expiresWithSession,\n      grantId: code.grantId,\n      gty,\n      nonce: code.nonce,\n      resource: code.resource,\n      rotations: 0,\n      scope: code.scope,\n      sessionUid: code.sessionUid,\n      sid: code.sid,\n    });\n\n    await setRefreshTokenBindings(ctx, at, rt);\n\n    ctx.oidc.entity('RefreshToken', rt);\n    refreshToken = await rt.save();\n  }\n\n  let idToken;\n  if (code.scopes.has('openid')) {\n    const claims = filterClaims(code.claims, 'id_token', grant);\n    const rejected = grant.getRejectedOIDCClaims();\n    const token = new IdToken({\n      ...await getCtxAccountClaims(ctx, 'id_token', code.scope, claims, rejected),\n      ...{\n        acr: code.acr,\n        amr: code.amr,\n        auth_time: code.authTime,\n      },\n    }, { ctx });\n\n    if (conformIdTokenClaims && userinfo.enabled && !at.aud) {\n      token.scope = 'openid';\n    } else {\n      token.scope = grant.getOIDCScopeFiltered(code.scopes);\n    }\n\n    token.mask = claims;\n    token.rejected = rejected;\n\n    token.set('nonce', code.nonce);\n    token.set('sid', code.sid);\n\n    idToken = await token.issue({ use: 'idtoken' });\n  }\n\n  ctx.body = {\n    access_token: accessToken,\n    expires_in: at.expiration,\n    id_token: idToken,\n    refresh_token: refreshToken,\n    scope: code.scope ? at.scope : (at.scope || undefined),\n    token_type: at.tokenType,\n  };\n};\n\nexport const parameters = new Set(['device_code']);\n\nexport const grantType = 'urn:ietf:params:oauth:grant-type:device_code';\n", "import upperFirst from '../../helpers/_/upper_first.js';\nimport camelCase from '../../helpers/_/camel_case.js';\nimport * as errors from '../../helpers/errors.js';\nimport presence from '../../helpers/validate_presence.js';\nimport instance from '../../helpers/weak_cache.js';\nimport filterClaims from '../../helpers/filter_claims.js';\nimport revoke from '../../helpers/revoke.js';\nimport dpopValidate, { CHALLENGE_OK_WINDOW } from '../../helpers/validate_dpop.js';\nimport resolveResource from '../../helpers/resolve_resource.js';\nimport epochTime from '../../helpers/epoch_time.js';\nimport getCtxAccountClaims from '../../helpers/account_claims.js';\nimport { setRefreshTokenBindings } from '../../helpers/set_rt_bindings.js';\nimport { checkAttestBinding } from '../../helpers/check_attest_binding.js';\nimport checkRar from '../../shared/check_rar.js';\n\nconst {\n  AuthorizationPending,\n  ExpiredToken,\n  InvalidGrant,\n} = errors;\n\nexport const gty = 'ciba';\n\nexport const handler = async function cibaHandler(ctx) {\n  presence(ctx, 'auth_req_id');\n\n  const {\n    findAccount,\n    issueRefreshToken,\n    conformIdTokenClaims,\n    features: {\n      userinfo,\n      mTLS: { getCertificate },\n      dPoP: { allowReplay },\n      resourceIndicators,\n      richAuthorizationRequests,\n    },\n  } = instance(ctx.oidc.provider).configuration;\n\n  const dPoP = await dpopValidate(ctx);\n\n  const request = await ctx.oidc.provider.BackchannelAuthenticationRequest.find(\n    ctx.oidc.params.auth_req_id,\n    { ignoreExpiration: true },\n  );\n\n  if (!request) {\n    throw new InvalidGrant('backchannel authentication request not found');\n  }\n\n  if (request.clientId !== ctx.oidc.client.clientId) {\n    throw new InvalidGrant('client mismatch');\n  }\n\n  let cert;\n  if (ctx.oidc.client.tlsClientCertificateBoundAccessTokens) {\n    cert = getCertificate(ctx);\n    if (!cert) {\n      throw new InvalidGrant('mutual TLS client certificate not provided');\n    }\n  }\n\n  if (!dPoP && ctx.oidc.client.dpopBoundAccessTokens) {\n    throw new InvalidGrant('DPoP proof JWT not provided');\n  }\n\n  if (request.isExpired) {\n    throw new ExpiredToken('backchannel authentication request is expired');\n  }\n\n  if (!request.grantId && !request.error) {\n    throw new AuthorizationPending();\n  }\n\n  if (ctx.oidc.client.clientAuthMethod === 'attest_jwt_client_auth') {\n    await checkAttestBinding(ctx, request);\n  }\n\n  if (request.consumed) {\n    await revoke(ctx, request.grantId);\n    throw new InvalidGrant('backchannel authentication request already consumed');\n  }\n\n  await request.consume();\n\n  if (request.error) {\n    const className = upperFirst(camelCase(request.error));\n    if (errors[className]) {\n      throw new errors[className](request.errorDescription);\n    }\n    throw new errors.CustomOIDCProviderError(request.error, request.errorDescription);\n  }\n\n  const grant = await ctx.oidc.provider.Grant.find(request.grantId, {\n    ignoreExpiration: true,\n  });\n\n  if (!grant) {\n    throw new InvalidGrant('grant not found');\n  }\n\n  if (grant.isExpired) {\n    throw new InvalidGrant('grant is expired');\n  }\n\n  if (grant.clientId !== ctx.oidc.client.clientId) {\n    throw new InvalidGrant('client mismatch');\n  }\n\n  ctx.oidc.entity('BackchannelAuthenticationRequest', request);\n  ctx.oidc.entity('Grant', grant);\n\n  const account = await findAccount(ctx, request.accountId, request);\n\n  if (!account) {\n    throw new InvalidGrant('backchannel authentication request invalid (referenced account not found)');\n  }\n\n  if (request.accountId !== grant.accountId) {\n    throw new InvalidGrant('accountId mismatch');\n  }\n\n  ctx.oidc.entity('Account', account);\n\n  const {\n    AccessToken, IdToken, RefreshToken, ReplayDetection,\n  } = ctx.oidc.provider;\n\n  const at = new AccessToken({\n    accountId: account.accountId,\n    client: ctx.oidc.client,\n    expiresWithSession: request.expiresWithSession,\n    grantId: request.grantId,\n    gty,\n    sessionUid: request.sessionUid,\n    sid: request.sid,\n  });\n\n  if (ctx.oidc.client.tlsClientCertificateBoundAccessTokens) {\n    at.setThumbprint('x5t', cert);\n  }\n\n  if (dPoP) {\n    if (!allowReplay) {\n      const unique = await ReplayDetection.unique(\n        ctx.oidc.client.clientId,\n        dPoP.jti,\n        epochTime() + CHALLENGE_OK_WINDOW,\n      );\n\n      ctx.assert(unique, new InvalidGrant('DPoP proof JWT Replay detected'));\n    }\n\n    at.setThumbprint('jkt', dPoP.thumbprint);\n  }\n\n  await checkRar(ctx, () => {});\n  const resource = await resolveResource(ctx, request, { userinfo, resourceIndicators });\n\n  if (resource) {\n    const resourceServerInfo = await resourceIndicators\n      .getResourceServerInfo(ctx, resource, ctx.oidc.client);\n    at.resourceServer = new ctx.oidc.provider.ResourceServer(resource, resourceServerInfo);\n    at.scope = grant.getResourceScopeFiltered(resource, request.scopes);\n  } else {\n    at.claims = request.claims;\n    at.scope = grant.getOIDCScopeFiltered(request.scopes);\n  }\n\n  if (richAuthorizationRequests.enabled && at.resourceServer) {\n    at.rar = await richAuthorizationRequests.rarForBackchannelResponse(ctx, at.resourceServer);\n  }\n\n  ctx.oidc.entity('AccessToken', at);\n  const accessToken = await at.save();\n\n  let refreshToken;\n  if (await issueRefreshToken(ctx, ctx.oidc.client, request)) {\n    const rt = new RefreshToken({\n      accountId: account.accountId,\n      acr: request.acr,\n      amr: request.amr,\n      authTime: request.authTime,\n      claims: request.claims,\n      client: ctx.oidc.client,\n      expiresWithSession: request.expiresWithSession,\n      grantId: request.grantId,\n      gty,\n      nonce: request.nonce,\n      resource: request.resource,\n      rotations: 0,\n      scope: request.scope,\n      sessionUid: request.sessionUid,\n      sid: request.sid,\n      rar: request.rar,\n    });\n\n    await setRefreshTokenBindings(ctx, at, rt);\n\n    ctx.oidc.entity('RefreshToken', rt);\n    refreshToken = await rt.save();\n  }\n\n  let idToken;\n  if (request.scopes.has('openid')) {\n    const claims = filterClaims(request.claims, 'id_token', grant);\n    const rejected = grant.getRejectedOIDCClaims();\n    const token = new IdToken({\n      ...await getCtxAccountClaims(ctx, 'id_token', request.scope, claims, rejected),\n      ...{\n        acr: request.acr,\n        amr: request.amr,\n        auth_time: request.authTime,\n      },\n    }, { ctx });\n\n    if (conformIdTokenClaims && userinfo.enabled && !at.aud) {\n      token.scope = 'openid';\n    } else {\n      token.scope = grant.getOIDCScopeFiltered(request.scopes);\n    }\n\n    token.mask = claims;\n    token.rejected = rejected;\n\n    token.set('nonce', request.nonce);\n    token.set('sid', request.sid);\n\n    idToken = await token.issue({ use: 'idtoken' });\n  }\n\n  ctx.body = {\n    access_token: accessToken,\n    expires_in: at.expiration,\n    id_token: idToken,\n    refresh_token: refreshToken,\n    scope: request.scope ? at.scope : (at.scope || undefined),\n    token_type: at.tokenType,\n    authorization_details: at.rar,\n  };\n};\n\nexport const parameters = new Set(['auth_req_id']);\n\nexport const grantType = 'urn:openid:params:grant-type:ciba';\n", "/* eslint-disable camelcase */\n\nimport form_post from './form_post.js';\nimport fragment from './fragment.js';\nimport query from './query.js';\nimport jwt from './jwt.js';\nimport webMessage from './web_message.js';\n\nexport {\n  form_post,\n  fragment,\n  query,\n  jwt,\n  webMessage,\n};\n", "import * as crypto from 'node:crypto';\n\nexport default function pushScriptSrcSha(ctx, script) {\n  const csp = ctx.response.get('content-security-policy');\n  if (csp) {\n    const directives = csp.split(';').reduce((acc, directive) => {\n      const [name, ...values] = directive.trim().split(/\\s+/g);\n      acc[name] = values;\n      return acc;\n    }, {});\n\n    if (directives['script-src']) {\n      const digest = crypto.hash('sha256', script, 'base64');\n      directives['script-src'].push(`'sha256-${digest}'`);\n\n      const replaced = Object.entries(directives).map(([name, values]) => [name, ...values].join(' ')).join(';');\n      ctx.set('content-security-policy', replaced);\n    }\n  }\n  return script;\n}\n", "import htmlSafe from '../helpers/html_safe.js';\nimport pushInlineSha from '../helpers/script_src_sha.js';\n\nconst statusCodes = new Set([200, 400, 500]);\n\nexport default function formPost(ctx, action, inputs) {\n  ctx.type = 'html';\n\n  if (!statusCodes.has(ctx.status)) {\n    ctx.status = 'error' in inputs ? 400 : 200;\n  }\n\n  const formInputs = Object.entries(inputs)\n    .map(([key, value]) => `<input type=\"hidden\" name=\"${key}\" value=\"${htmlSafe(value)}\"/>`)\n    .join('\\n');\n\n  ctx.body = `<!DOCTYPE html>\n<html>\n<head>\n  <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n  <title>Submitting Callback</title>\n  <script>${pushInlineSha(ctx, `\n    document.addEventListener('DOMContentLoaded', function () { document.forms[0].submit() });\n  `)}</script>\n</head>\n<body>\n  <form method=\"post\" action=\"${htmlSafe(action)}\">\n    ${formInputs}\n    <noscript>\n      Your browser does not support JavaScript or you've disabled it.<br/>\n      <button autofocus type=\"submit\">Continue</button>\n    </noscript>\n  </form>\n</body>\n</html>`;\n}\n", "export default function redirectUri(uri, payload, mode) {\n  const parsed = new URL(uri);\n\n  switch (mode) {\n    case 'fragment':\n      parsed.hash = new URLSearchParams(payload).toString();\n      break;\n    default:\n      for (const [k, v] of Object.entries(payload)) {\n        parsed.searchParams.set(k, v);\n      }\n      break;\n  }\n\n  return parsed.href;\n}\n", "import formatUri from '../helpers/redirect_uri.js';\n\nexport default (ctx, redirectUri, payload) => {\n  const uri = formatUri(redirectUri, payload, 'fragment');\n  ctx.status = 303;\n  ctx.redirect(uri);\n};\n", "import formatUri from '../helpers/redirect_uri.js';\n\nexport default (ctx, redirectUri, payload) => {\n  const uri = formatUri(redirectUri, payload, 'query');\n  ctx.status = 303;\n  ctx.redirect(uri);\n};\n", "import jsesc from 'jsesc';\n\nimport pushInlineSha from '../helpers/script_src_sha.js';\n\nconst statusCodes = new Set([200, 400, 500]);\n\nexport default function webMessage(ctx, redirectUri, response) {\n  ctx.type = 'html';\n\n  if (!statusCodes.has(ctx.status)) {\n    ctx.status = 'error' in response ? 400 : 200;\n  }\n\n  ctx.response.remove('x-frame-options');\n  const csp = ctx.response.get('content-security-policy');\n  if (csp?.includes('frame-ancestors')) {\n    ctx.set('content-security-policy', csp.split(';')\n      .filter((directive) => !directive.includes('frame-ancestors'))\n      .join(';'));\n  }\n\n  const data = jsesc({\n    response,\n    redirect_uri: redirectUri,\n  }, { json: true, isScriptContext: true });\n\n  ctx.body = `<!DOCTYPE html>\n<html>\n<head>\n  <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n  <title>Web Message Response</title>\n</head>\n<body>\n  <script>${pushInlineSha(ctx, `\n    (function(win, doc) {\n      var data = ${data};\n\n      var response = data.response;\n      var redirect_uri = data.redirect_uri;\n\n      var authorization_response = { type: 'authorization_response', response: response };\n\n      var respond = function (target, origin) {\n        doc.scripts[0].parentElement.removeChild(doc.scripts[0]);\n        target.postMessage(authorization_response, origin);\n        win.close();\n      };\n\n      var mainWin = win.opener || win.parent;\n      respond(mainWin, redirect_uri);\n    })(this, this.document);\n  `)}</script>\n</body>\n</html>`;\n}\n", "/* eslint-disable camelcase */\nimport query from './query.js';\nimport fragment from './fragment.js';\nimport form_post from './form_post.js';\nimport web_message from './web_message.js';\n\nconst modes = {\n  query,\n  fragment,\n  form_post,\n  web_message,\n};\n\nconst RENDER_MODES = new Set(['form_post', 'web_message']);\n\nexport default async function jwtResponseModes(ctx, redirectUri, payload) {\n  const { params } = ctx.oidc;\n\n  let mode;\n  if (params.response_mode === 'jwt') {\n    if (typeof params.response_type === 'string' && params.response_type.includes('token')) {\n      mode = 'fragment';\n    } else {\n      mode = 'query';\n    }\n  } else {\n    ([mode] = params.response_mode.split('.'));\n  }\n\n  const { IdToken } = this;\n  const token = new IdToken({}, { ctx });\n  token.extra = payload;\n\n  const response = await token.issue({ use: 'authorization' });\n\n  if (RENDER_MODES.has(mode)) {\n    if ('error' in payload && payload.error !== 'server_error') {\n      ctx.status = 400;\n    }\n  }\n\n  return modes[mode](ctx, redirectUri, { response });\n}\n", "import * as crypto from 'node:crypto';\n\nimport debug from 'debug';\n\nimport instance from '../helpers/weak_cache.js';\nimport * as formHtml from '../helpers/user_code_form.js';\nimport { ReRenderError } from '../helpers/re_render_errors.js';\nimport errOut from '../helpers/err_out.js';\n\nconst debugError = debug('oidc-provider:error');\nconst serverError = debug('oidc-provider:server_error');\nconst serverErrorTrace = debug('oidc-provider:server_error:trace');\n\nconst userInputRoutes = new Set(['code_verification', 'device_resume']);\n\nexport default function getErrorHandler(provider, eventName) {\n  return async function errorHandler(ctx, next) {\n    const {\n      features: { deviceFlow: { charset, userCodeInputSource } },\n    } = instance(provider).configuration;\n\n    try {\n      await next();\n    } catch (err) {\n      const out = errOut(err);\n      ctx.status = err.statusCode || 500;\n\n      if (err.expose && !(err instanceof ReRenderError)) {\n        debugError('path=%s method=%s error=%o detail=%s', ctx.path, ctx.method, out, err.error_detail);\n      } else if (!(err instanceof ReRenderError)) {\n        serverError('path=%s method=%s error=%o', ctx.path, ctx.method, err);\n        serverErrorTrace(err);\n      }\n\n      if (ctx.oidc?.session && userInputRoutes.has(ctx.oidc.route)) {\n        const secret = crypto.randomBytes(24).toString('hex');\n        ctx.oidc.session.state = { secret };\n\n        await userCodeInputSource(ctx, formHtml.input(ctx.oidc.urlFor('code_verification'), secret, err.userCode, charset), out, err);\n        if (err instanceof ReRenderError) { // render without emit\n          return;\n        }\n      } else if (ctx.accepts('json', 'html') === 'html') {\n        // this ^^ makes */* requests respond with json (curl, xhr, request libraries), while in\n        // browser requests end up rendering the html error instead\n        const { renderError } = instance(provider).configuration;\n        await renderError(ctx, out, err);\n      } else {\n        ctx.body = out;\n      }\n\n      if (out.error === 'server_error') {\n        provider.emit('server_error', ctx, err);\n      } else if (eventName) {\n        provider.emit(eventName, ctx, err);\n      }\n    }\n  };\n}\n", "import htmlSafe from './html_safe.js';\n\nexport function input(action, csrfToken, code, charset) {\n  const attributes = charset === 'digits' ? 'pattern=\"[0-9]*\" inputmode=\"numeric\" ' : '';\n\n  return `<form id=\"op.deviceInputForm\" novalidate method=\"post\" action=\"${action}\">\n  <input type=\"hidden\" name=\"xsrf\" value=\"${csrfToken}\"/>\n  <input\n    ${code ? `value=\"${htmlSafe(code)}\" ` : ''}${attributes}type=\"text\" name=\"user_code\" placeholder=\"Enter code\" onfocus=\"this.select(); this.onfocus = undefined;\" autofocus autocomplete=\"off\"></input>\n  </form>`;\n}\n\nexport function confirm(action, csrfToken, code) {\n  return `<form id=\"op.deviceConfirmForm\" method=\"post\" action=\"${action}\">\n<input type=\"hidden\" name=\"xsrf\" value=\"${csrfToken}\"/>\n<input type=\"hidden\" name=\"user_code\" value=\"${htmlSafe(code)}\"/>\n<input type=\"hidden\" name=\"confirm\" value=\"yes\"/>\n</form>`;\n}\n", "/* eslint-disable max-classes-per-file */\n\nexport class ReRenderError extends Error {\n  constructor(message, userCode) {\n    super(message);\n    if (userCode) this.userCode = userCode;\n    this.message = message;\n    this.name = this.constructor.name;\n    this.status = 200;\n    this.statusCode = 200;\n    this.expose = true;\n    Error.captureStackTrace(this, this.constructor);\n  }\n}\nexport class NotFoundError extends ReRenderError {\n  constructor(userCode) {\n    super('the code was not found', userCode);\n  }\n}\nexport class ExpiredError extends ReRenderError {\n  constructor(userCode) {\n    super('the code has expired', userCode);\n  }\n}\nexport class AbortedError extends ReRenderError {\n  constructor() {\n    super('the interaction was aborted');\n  }\n}\nexport class AlreadyUsedError extends ReRenderError {\n  constructor(userCode) {\n    super('code has already been used', userCode);\n  }\n}\nexport class NoCodeError extends ReRenderError {\n  constructor() {\n    super('no code submitted');\n  }\n}\n", "export default ({\n  expose, message, error_description: description, scope,\n}, state) => {\n  if (expose) {\n    return {\n      error: message,\n      ...(description !== undefined ? { error_description: description } : undefined),\n      ...(scope !== undefined ? { scope } : undefined),\n      ...(state !== undefined ? { state } : undefined),\n    };\n  }\n  return {\n    error: 'server_error',\n    error_description: 'oops! something went wrong',\n    ...(state ? { state } : undefined),\n  };\n};\n", "import debug from 'debug';\n\nimport { InvalidRedirectUri } from '../helpers/errors.js';\nimport instance from '../helpers/weak_cache.js';\nimport errOut from '../helpers/err_out.js';\nimport resolveResponseMode from '../helpers/resolve_response_mode.js';\nimport oneRedirectUriClients from '../actions/authorization/one_redirect_uri_clients.js';\n\nconst debugError = debug('oidc-provider:authentication:error');\nconst serverError = debug('oidc-provider:server_error');\nconst serverErrorTrace = debug('oidc-provider:server_error:trace');\n\nexport default (provider) => {\n  const AD_ACTA_CHECKS = Object.entries({\n    redirect_uri: {\n      Err: InvalidRedirectUri,\n      method: 'redirectUriAllowed',\n      check: 'redirectUriCheckPerformed',\n      recovery: oneRedirectUriClients,\n    },\n  });\n\n  function getOutAndEmit(ctx, err, state) {\n    const out = { ...errOut(err, state), iss: ctx.oidc.provider.issuer };\n\n    if (err.expose) {\n      provider.emit('authorization.error', ctx, err);\n      debugError('%o', out);\n    } else {\n      provider.emit('server_error', ctx, err);\n      serverError('path=%s method=%s error=%o', ctx.path, ctx.method, err);\n      serverErrorTrace(err);\n    }\n\n    return out;\n  }\n\n  function safe(param) {\n    if (param && typeof param === 'string') {\n      return param;\n    }\n    return undefined;\n  }\n\n  return async function authorizationErrorHandler(ctx, next) {\n    try {\n      await next();\n    } catch (caught) {\n      let err = caught;\n      ctx.status = err.statusCode || 500;\n      const { oidc } = ctx;\n\n      const { params = (ctx.method === 'POST' ? oidc.body : ctx.query) || {} } = oidc;\n\n      if (!oidc.client && safe(params.client_id) && !ctx.oidc.noclient) {\n        try {\n          oidc.entity('Client', await provider.Client.find(safe(params.client_id)));\n        } catch (e) {}\n      }\n\n      for (const [param, {\n        Err, check, flag, method, recovery,\n      }] of AD_ACTA_CHECKS) {\n        if (\n          (!flag || instance(provider).configuration[flag])\n          && !(err instanceof Err) && oidc.client\n          && !oidc[check]\n        ) {\n          if (recovery && !safe(params[param])) {\n            recovery(ctx, () => {});\n          }\n\n          if (safe(params[param]) && !oidc.client[method](params[param])) {\n            getOutAndEmit(ctx, caught, safe(params.state));\n            err = new Err();\n            ctx.status = err.statusCode;\n            break;\n          }\n        }\n      }\n\n      const out = getOutAndEmit(ctx, err, safe(params.state));\n\n      // in case redirect_uri or client could not be verified no successful\n      // response should happen, render instead\n      if (\n        !safe(params.client_id)\n        || (safe(params.client_id) && !oidc.client)\n        || !safe(params.redirect_uri)\n        || !err.allow_redirect\n      ) {\n        const { renderError } = instance(provider).configuration;\n        await renderError(ctx, out, err);\n      } else {\n        let mode = safe(params.response_mode);\n        if (!instance(provider).responseModes.has(mode)) {\n          mode = resolveResponseMode(safe(params.response_type));\n        }\n        const handler = instance(provider).responseModes.get(mode);\n        await handler(ctx, safe(params.redirect_uri), out);\n      }\n    }\n  };\n};\n", "export default function resolve(responseType) {\n  return typeof responseType === 'string' && responseType.includes('token') ? 'fragment' : 'query';\n}\n\nexport function isFrontChannel(responseType) {\n  return resolve(responseType) === 'fragment';\n}\n", "import instance from '../../helpers/weak_cache.js';\n\n/*\n * If no redirect_uri is provided and client only pre-registered one unique value it is assumed\n * to be the requested redirect_uri and used as if it was explicitly provided;\n */\nexport default function oneRedirectUriClients(ctx, next) {\n  if (!instance(ctx.oidc.provider).configuration.allowOmittingSingleRegisteredRedirectUri || ctx.oidc.isFapi('2.0')) {\n    return next();\n  }\n\n  const { params, client } = ctx.oidc;\n\n  if (params.redirect_uri === undefined && client.redirectUris.length === 1) {\n    ctx.oidc.redirectUriCheckPerformed = true;\n    [params.redirect_uri] = client.redirectUris;\n  }\n\n  return next();\n}\n", "import bodyParser from './selective_body.js';\n\nexport default async function parseBodyIfPost(cty, ctx, next) {\n  if (ctx.method === 'POST') {\n    await bodyParser(cty, ctx, next);\n  } else {\n    await next();\n  }\n}\n", "import { InvalidRequest } from '../helpers/errors.js';\nimport * as formatters from '../helpers/formatters.js';\n\nfunction exceptMap([key, value]) {\n  if (Array.isArray(value) && !this.has(key)) {\n    return key;\n  }\n  return undefined;\n}\n\nfunction onlyMap([key, value]) {\n  if (Array.isArray(value) && this.has(key)) {\n    return key;\n  }\n  return undefined;\n}\n\nfunction defaultMap([key, value]) {\n  return Array.isArray(value) ? key : undefined;\n}\n\n// eslint-disable-next-line default-param-last\nexport default function rejectDupes({ except, only } = {}, ctx, next) {\n  let mapFn;\n\n  if (except) {\n    mapFn = exceptMap.bind(except);\n  } else if (only) {\n    mapFn = onlyMap.bind(only);\n  } else {\n    mapFn = defaultMap;\n  }\n\n  const dupes = Object.entries(ctx.oidc.params).map(mapFn);\n\n  if (dupes.some(Boolean)) {\n    const params = dupes.filter(Boolean);\n    params.forEach((param) => {\n      ctx.oidc.params[param] = undefined;\n    });\n    throw new InvalidRequest(`${formatters.formatList(params)} ${formatters.pluralize('parameter', params.length)} must not be provided twice`);\n  }\n\n  return next();\n}\n", "import { strict as assert } from 'node:assert';\n\nimport omitBy from './_/omit_by.js';\n\nconst cache = new WeakMap();\n\nexport default function getParams(allowList) {\n  if (!cache.has(allowList)) {\n    assert(allowList, 'allowList must be present');\n\n    const klass = class Params {\n      constructor(params) {\n        allowList.forEach((prop) => {\n          this[prop] = params[prop] || undefined;\n        });\n      }\n\n      toPlainObject() {\n        return omitBy({ ...this }, (val) => typeof val === 'undefined');\n      }\n    };\n\n    cache.set(allowList, klass);\n  }\n\n  return cache.get(allowList);\n}\n", "/* eslint-disable no-param-reassign */\n\nexport default (object, predicate) => {\n  Object.entries(object).forEach(([key, value]) => {\n    if (predicate(value, key)) {\n      delete object[key];\n    }\n  });\n\n  return object;\n};\n", "import Params from '../helpers/params.js';\n\nexport default function assembleParams(allowList, ctx, next) {\n  const params = ctx.method === 'POST' ? ctx.oidc.body : ctx.query;\n  ctx.oidc.params = new (Params(allowList))(params);\n  return next();\n}\n", "import instance from '../helpers/weak_cache.js';\n\nexport default async function sessionHandler(ctx, next) {\n  ctx.oidc.session = new Proxy(await ctx.oidc.provider.Session.get(ctx), {\n    set(obj, prop, value) {\n      switch (prop) {\n        case 'touched':\n          Reflect.defineProperty(obj, 'touched', { writable: true, value });\n          break;\n        case 'destroyed':\n          Reflect.defineProperty(obj, 'destroyed', { configurable: false, writable: true, value });\n          Reflect.defineProperty(obj, 'touched', { configurable: false, writable: false, value: false });\n          break;\n        case 'accountId':\n          if (typeof value !== 'string' || !value) {\n            throw new TypeError(`accountId must be a non-empty string, got: ${typeof value}`);\n          }\n        default: // eslint-disable-line no-fallthrough\n          Reflect.set(obj, prop, value);\n          Reflect.defineProperty(obj, 'touched', { writable: true, value: true });\n      }\n\n      return true;\n    },\n  });\n\n  try {\n    await next();\n  } finally {\n    const sessionCookieName = ctx.oidc.provider.cookieName('session');\n    const longRegExp = new RegExp(`^${sessionCookieName}(?:\\\\.sig)?=`);\n\n    // refresh the session duration\n    if ((!ctx.oidc.session.new || ctx.oidc.session.touched) && !ctx.oidc.session.destroyed) {\n      let ttl = instance(ctx.oidc.provider).configuration.ttl.Session;\n\n      if (typeof ttl === 'function') {\n        ttl = ttl(ctx, ctx.oidc.session);\n      }\n\n      ctx.oidc.cookies.set(\n        sessionCookieName,\n        ctx.oidc.session.id,\n        instance(ctx.oidc.provider).configuration.cookies.long,\n      );\n      await ctx.oidc.session.save(ttl);\n    }\n\n    let setCookie = ctx.response.get('set-cookie');\n    if (setCookie) {\n      if (typeof setCookie === 'string') {\n        setCookie = [setCookie];\n      }\n      setCookie.forEach((cookie, index, ary) => {\n        /* eslint-disable no-param-reassign */\n        if (\n          !cookie.includes('expires=Thu, 01 Jan 1970')\n          && cookie.match(longRegExp)\n          && !ctx.oidc.session.transient\n          && ctx.oidc.session.exp\n        ) {\n          ary[index] += `; expires=${new Date(ctx.oidc.session.exp * 1000).toUTCString()}`;\n        }\n        /* eslint-enable */\n      });\n    }\n  }\n}\n", "import omitBy from './_/omit_by.js';\n\nexport default function appendWWWAuthenticate(ctx, scheme, fields) {\n  const parameters = Object.entries(omitBy(fields, (v) => v === undefined))\n    .map(([key, val]) => `${key}=\"${val.replace(/\\\\/g, '\\\\\\\\').replace(/\"/g, '\\\\\"')}\"`)\n    .join(', ');\n\n  ctx.append('WWW-Authenticate', `${scheme} ${parameters}`);\n}\n", "import {\n  CompactEncrypt,\n  CompactSign,\n  compactDecrypt,\n  compactVerify,\n  decodeJwt,\n  decodeProtectedHeader,\n  errors,\n} from 'jose';\n\nimport { ExternalSigningKey } from './keystore.js';\nimport * as base64url from './base64url.js';\nimport epochTime from './epoch_time.js';\n\nconst { JWEDecryptionFailed, JWKSNoMatchingKey, JWSSignatureVerificationFailed } = errors;\n\nfunction verifyAudience({ aud }, expected) {\n  if (Array.isArray(aud)) {\n    const match = aud.some((actual) => actual === expected);\n    if (!match) throw new Error(`jwt audience missing ${expected}`);\n  } else if (aud !== expected) {\n    throw new Error(`jwt audience missing ${expected}`);\n  }\n}\n\nexport async function sign(payload, key, alg, options = {}) {\n  const protectedHeader = {\n    alg,\n    typ: options.typ,\n    ...options.fields,\n  };\n  const timestamp = epochTime();\n\n  const iat = options.noIat ? undefined : timestamp;\n\n  Object.assign(payload, {\n    aud: options.audience !== undefined ? options.audience : payload.aud,\n    exp: options.expiresIn !== undefined ? timestamp + options.expiresIn : payload.exp,\n    iat: payload.iat !== undefined ? payload.iat : iat,\n    iss: options.issuer !== undefined ? options.issuer : payload.iss,\n    sub: options.subject !== undefined ? options.subject : payload.sub,\n  });\n\n  if (key instanceof ExternalSigningKey) {\n    const parts = [\n      base64url.encode(JSON.stringify(protectedHeader)),\n      base64url.encode(JSON.stringify(payload)),\n    ];\n    const data = Buffer.from(parts.join('.'));\n    parts.push(base64url.encodeBuffer(await key.sign(data)));\n    return parts.join('.');\n  }\n\n  return new CompactSign(Buffer.from(JSON.stringify(payload)))\n    .setProtectedHeader(protectedHeader)\n    .sign(key);\n}\n\nexport function decode(input) {\n  let jwt;\n\n  if (Buffer.isBuffer(input)) {\n    jwt = input.toString('utf8');\n  } else if (typeof input !== 'string') {\n    throw new TypeError('invalid JWT.decode input type');\n  } else {\n    jwt = input;\n  }\n\n  const { 0: protectedHeader, 1: payload, length } = jwt.split('.');\n\n  if (length !== 3) {\n    throw new TypeError('invalid JWT.decode input');\n  }\n\n  return {\n    header: JSON.parse(base64url.decode(protectedHeader)),\n    payload: JSON.parse(base64url.decode(payload)),\n  };\n}\n\nexport function header(jwt) {\n  return JSON.parse(base64url.decode(jwt.toString().split('.')[0]));\n}\n\nexport function assertPayload(payload, {\n  clockTolerance = 0, audience, ignoreExpiration,\n  ignoreAzp, ignoreIssued, ignoreNotBefore, issuer,\n  subject = false,\n} = {}) {\n  const timestamp = epochTime();\n\n  if (typeof payload !== 'object') throw new Error('payload is not of JWT type (JSON serialized object)');\n\n  if (payload.nbf !== undefined && !ignoreNotBefore) {\n    if (typeof payload.nbf !== 'number') throw new Error('invalid nbf value');\n    if (payload.nbf > timestamp + clockTolerance) throw new Error('jwt not active yet');\n  }\n\n  if (payload.iat !== undefined && !ignoreIssued) {\n    if (typeof payload.iat !== 'number') throw new Error('invalid iat value');\n    if (payload.exp === undefined && payload.iat > timestamp + clockTolerance) {\n      throw new Error('jwt issued in the future');\n    }\n  }\n\n  if (payload.exp !== undefined && !ignoreExpiration) {\n    if (typeof payload.exp !== 'number') throw new Error('invalid exp value');\n    if (timestamp - clockTolerance >= payload.exp) throw new Error('jwt expired');\n  }\n\n  if (payload.jti !== undefined && typeof payload.jti !== 'string') {\n    throw new Error('invalid jti value');\n  }\n\n  if (payload.iss !== undefined && typeof payload.iss !== 'string') {\n    throw new Error('invalid iss value');\n  }\n\n  if (subject && typeof payload.sub !== 'string') {\n    throw new Error('invalid sub value');\n  }\n\n  if (audience) {\n    verifyAudience(\n      payload,\n      audience,\n      !ignoreAzp,\n    );\n  }\n\n  if (issuer && payload.iss !== issuer) throw new Error('jwt issuer invalid');\n}\n\nexport async function verify(jwt, keystore, options = {}) {\n  let verified;\n  let protectedHeader;\n  try {\n    protectedHeader = decodeProtectedHeader(jwt);\n\n    const keys = keystore.selectForVerify({ alg: protectedHeader.alg, kid: protectedHeader.kid });\n    if (keys.length === 0) {\n      throw new JWKSNoMatchingKey();\n    } else {\n      for (const key of keys) {\n        try {\n          verified = await compactVerify(\n            jwt,\n            await keystore.getKeyObject(key, true),\n            { algorithms: options.algorithm ? [options.algorithm] : undefined },\n          );\n        } catch {}\n      }\n    }\n\n    if (!verified) {\n      throw new JWSSignatureVerificationFailed();\n    }\n  } catch (err) {\n    if (typeof keystore.fresh !== 'function' || keystore.fresh()) {\n      throw err;\n    }\n\n    await keystore.refresh();\n    // eslint-disable-next-line prefer-rest-params\n    return verify(...arguments);\n  }\n\n  const payload = decodeJwt(jwt);\n  assertPayload(payload, options);\n\n  return { payload, header: protectedHeader };\n}\n\nexport async function encrypt(cleartext, key, {\n  enc, alg, fields,\n} = {}) {\n  const protectedHeader = {\n    alg, enc, ...fields,\n  };\n\n  return new CompactEncrypt(Buffer.from(cleartext))\n    .setProtectedHeader(protectedHeader)\n    .encrypt(key);\n}\n\nexport async function decrypt(jwe, keystore) {\n  const protectedHeader = decodeProtectedHeader(jwe);\n\n  const keys = keystore.selectForDecrypt({ alg: protectedHeader.alg === 'dir' ? protectedHeader.enc : protectedHeader.alg, kid: protectedHeader.kid, epk: protectedHeader.epk });\n  let decrypted;\n  if (keys.length === 0) {\n    throw new JWKSNoMatchingKey();\n  } else {\n    for (const key of keys) {\n      try {\n        decrypted = await compactDecrypt(jwe, keystore.getKeyObject(key));\n      } catch {}\n    }\n  }\n\n  if (!decrypted) {\n    throw new JWEDecryptionFailed();\n  }\n\n  return Buffer.from(decrypted.plaintext);\n}\n", "import { InvalidClientAuth } from '../helpers/errors.js';\nimport instance from '../helpers/weak_cache.js';\nimport * as JWT from '../helpers/jwt.js';\n\nexport default async function jwtClientAuth(ctx, keystore, filter) {\n  const {\n    clockTolerance,\n    assertJwtClientAuthClaimsAndHeader,\n    clientAuthSigningAlgValues,\n  } = instance(ctx.oidc.provider).configuration;\n\n  const acceptedAud = ctx.oidc.clientJwtAuthExpectedAudience();\n  const { header, payload } = JWT.decode(ctx.oidc.params.client_assertion);\n\n  if (ctx.oidc.client.clientAuthSigningAlg) {\n    if (header.alg !== ctx.oidc.client.clientAuthSigningAlg) {\n      throw new InvalidClientAuth('alg mismatch');\n    }\n  } else {\n    const algorithms = clientAuthSigningAlgValues.filter(filter);\n    if (!algorithms.includes(header.alg)) {\n      throw new InvalidClientAuth('alg mismatch');\n    }\n  }\n\n  if (!payload.exp) {\n    throw new InvalidClientAuth('expiration must be specified in the client_assertion JWT');\n  }\n\n  if (!payload.jti) {\n    throw new InvalidClientAuth('unique jti (JWT ID) must be provided in the client_assertion JWT');\n  }\n\n  if (!payload.iss) {\n    throw new InvalidClientAuth('iss (JWT issuer) must be provided in the client_assertion JWT');\n  }\n\n  if (payload.iss !== ctx.oidc.client.clientId) {\n    throw new InvalidClientAuth('iss (JWT issuer) must be the client_id');\n  }\n\n  if (!payload.aud) {\n    throw new InvalidClientAuth('aud (JWT audience) must be provided in the client_assertion JWT');\n  }\n\n  if (Array.isArray(payload.aud)) {\n    if (!payload.aud.some((aud) => acceptedAud.has(aud))) {\n      throw new InvalidClientAuth('list of audience (aud) must include the endpoint url, issuer identifier or token endpoint url');\n    }\n  } else if (!acceptedAud.has(payload.aud)) {\n    throw new InvalidClientAuth('audience (aud) must equal the endpoint url, issuer identifier or token endpoint url');\n  }\n\n  try {\n    await JWT.verify(ctx.oidc.params.client_assertion, keystore, {\n      clockTolerance,\n      ignoreAzp: true,\n    });\n  } catch (err) {\n    throw new InvalidClientAuth(err.message);\n  }\n\n  await assertJwtClientAuthClaimsAndHeader(\n    ctx,\n    structuredClone(payload),\n    structuredClone(header),\n    ctx.oidc.client,\n  );\n\n  const unique = await ctx.oidc.provider.ReplayDetection.unique(\n    payload.iss,\n    payload.jti,\n    payload.exp + clockTolerance,\n  );\n\n  if (!unique) {\n    throw new InvalidClientAuth('client assertion tokens must only be used once');\n  }\n}\n", "import * as jose from 'jose';\n\nimport { InvalidClientAuth, UseAttestationChallenge } from '../helpers/errors.js';\nimport instance from '../helpers/weak_cache.js';\nimport { CHALLENGE_OK_WINDOW } from '../helpers/challenge.js';\nimport epochTime from '../helpers/epoch_time.js';\n\nexport default async function attestationClientAuth(ctx) {\n  const {\n    configuration: {\n      clockTolerance,\n      features: { attestClientAuth },\n      attestSigningAlgValues,\n    },\n    AttestChallenges,\n  } = instance(ctx.oidc.provider);\n\n  const nextChallenge = AttestChallenges.nextChallenge();\n\n  const attestation = ctx.get('oauth-client-attestation');\n  let verifiedAttestation;\n  try {\n    verifiedAttestation = await jose.jwtVerify(\n      attestation,\n      async (header) => {\n        const payload = jose.decodeJwt(attestation);\n        if (typeof payload.iss !== 'string') {\n          throw new Error('iss must be a string');\n        }\n        const key = await attestClientAuth.getAttestationSignaturePublicKey(\n          ctx,\n          payload.iss,\n          header,\n          ctx.oidc.client,\n        );\n        return key;\n      },\n      {\n        algorithms: attestSigningAlgValues,\n        requiredClaims: ['iss', 'sub', 'exp', 'cnf'],\n        typ: 'oauth-client-attestation+jwt',\n        clockTolerance,\n        subject: ctx.oidc.client.clientId,\n      },\n    );\n    if (verifiedAttestation.key.type !== 'public') {\n      throw new Error('the resolved key must be a public key');\n    }\n    if (\n      typeof verifiedAttestation.payload.cnf?.jwk?.kty !== 'string'\n      || verifiedAttestation.payload.cnf?.jwk?.d !== undefined\n      || verifiedAttestation.payload.cnf?.jwk?.priv !== undefined\n      || verifiedAttestation.payload.cnf?.jwk?.k !== undefined\n    ) {\n      throw new Error('invalid cnf.jwk');\n    }\n  } catch (err) {\n    throw new InvalidClientAuth(`failed to validate oauth-client-attestation: ${err.message}`);\n  }\n\n  const pop = ctx.get('oauth-client-attestation-pop');\n  if (!pop) {\n    throw new InvalidClientAuth('oauth-client-attestation-pop missing');\n  }\n  let verifiedPoP;\n  try {\n    verifiedPoP = await jose.jwtVerify(\n      pop,\n      async (header) => jose.importJWK(verifiedAttestation.payload.cnf.jwk, header.alg),\n      {\n        algorithms: attestSigningAlgValues,\n        requiredClaims: ['iss', 'aud', 'jti'], // challenge is checked later\n        typ: 'oauth-client-attestation-pop+jwt',\n        clockTolerance,\n        issuer: ctx.oidc.client.clientId,\n        audience: ctx.oidc.issuer,\n      },\n    );\n    if (typeof verifiedPoP.payload.aud !== 'string') {\n      throw new Error('aud must be a string');\n    }\n  } catch (err) {\n    throw new InvalidClientAuth(`failed to validate oauth-client-attestation-pop: ${err.message}`);\n  }\n\n  await attestClientAuth.assertAttestationJwtAndPop(\n    ctx,\n    verifiedAttestation,\n    verifiedPoP,\n    ctx.oidc.client,\n  );\n\n  const unique = await ctx.oidc.provider.ReplayDetection.unique(\n    verifiedPoP.payload.iss,\n    verifiedPoP.payload.jti,\n    epochTime() + CHALLENGE_OK_WINDOW,\n  );\n\n  if (!unique) {\n    throw new InvalidClientAuth('oauth-client-attestation-pop tokens must only be used once');\n  }\n\n  if (typeof verifiedPoP.payload.challenge !== 'string' || !AttestChallenges.checkChallenge(verifiedPoP.payload.challenge)) {\n    ctx.set('oauth-client-attestation-challenge', nextChallenge);\n    throw new UseAttestationChallenge();\n  }\n\n  if (verifiedPoP.payload.challenge !== nextChallenge) {\n    ctx.set('oauth-client-attestation-challenge', nextChallenge);\n  }\n}\n", "import { InvalidRequest, InvalidClientAuth } from '../helpers/errors.js';\nimport appendWWWAuthenticate from '../helpers/append_www_authenticate.js';\nimport * as JWT from '../helpers/jwt.js';\nimport instance from '../helpers/weak_cache.js';\nimport certificateThumbprint from '../helpers/certificate_thumbprint.js';\nimport { noVSCHAR } from '../consts/client_attributes.js';\n\nimport rejectDupes from './reject_dupes.js';\nimport jwtClientAuth from './jwt_client_auth.js';\nimport attestClientAuth from './attest_client_auth.js';\n\nconst assertionType = 'urn:ietf:params:oauth:client-assertion-type:jwt-bearer';\n\n// see https://tools.ietf.org/html/rfc6749#appendix-B\nfunction decodeAuthToken(token) {\n  const authToken = decodeURIComponent(token.replace(/\\+/g, '%20'));\n  if (noVSCHAR.test(authToken)) {\n    throw new Error('invalid character found');\n  }\n  return authToken;\n}\n\nexport default function clientAuthentication(provider) {\n  const authParams = new Set(['client_id']);\n  const { configuration, features } = instance(provider);\n\n  configuration.clientAuthMethods.forEach((method) => {\n    switch (method) {\n      case 'client_secret_post':\n        authParams.add('client_secret');\n        break;\n      case 'client_secret_jwt':\n      case 'private_key_jwt':\n        authParams.add('client_assertion');\n        authParams.add('client_assertion_type');\n        break;\n      default:\n    }\n  });\n\n  authParams.forEach(Set.prototype.add.bind(instance(provider).grantTypeParams.get(undefined)));\n\n  return {\n    params: authParams,\n    middleware: [\n      rejectDupes.bind(undefined, { only: authParams }),\n      async function setWWWAuthenticateHeader(ctx, next) {\n        try {\n          await next();\n        } catch (err) {\n          if (err.statusCode === 401 && ctx.headers.authorization !== undefined) {\n            appendWWWAuthenticate(ctx, 'Basic', {\n              realm: provider.issuer,\n              error: err.message,\n              error_description: err.error_description,\n            });\n          }\n          throw err;\n        }\n      },\n      async function authenticateClient(ctx, next) {\n        let methods;\n        let clientId;\n        let clientSecret;\n\n        const setClientId = (value) => {\n          if (clientId !== undefined && value !== clientId) {\n            throw new InvalidRequest('client_id mismatch');\n          }\n          clientId = value;\n        };\n\n        const { length } = [\n          ctx.headers.authorization,\n          ctx.headers['oauth-client-attestation'],\n          ctx.oidc.params.client_assertion,\n          ctx.oidc.params.client_secret,\n        ].filter(Boolean);\n\n        if (length > 1) {\n          throw new InvalidRequest('client authentication must only be provided using one mechanism');\n        }\n\n        if (ctx.oidc.params.client_id !== undefined) {\n          setClientId(ctx.oidc.params.client_id);\n        }\n\n        if (ctx.oidc.params.client_secret) {\n          clientSecret = ctx.oidc.params.client_secret;\n          methods = ['client_secret_basic', 'client_secret_post'];\n        } else if (ctx.headers.authorization !== undefined) {\n          const parts = ctx.headers.authorization.split(' ');\n          if (parts.length !== 2 || parts[0].toLowerCase() !== 'basic') {\n            throw new InvalidRequest('invalid authorization header value format');\n          }\n\n          const basic = Buffer.from(parts[1], 'base64').toString('utf8');\n          const i = basic.indexOf(':');\n\n          if (i === -1) {\n            throw new InvalidRequest('invalid authorization header value format');\n          }\n\n          let basicClientId;\n          try {\n            basicClientId = decodeAuthToken(basic.slice(0, i));\n            clientSecret = decodeAuthToken(basic.slice(i + 1));\n          } catch (err) {\n            throw new InvalidRequest('client_id and client_secret in the authorization header are not properly encoded');\n          }\n\n          setClientId(basicClientId);\n\n          if (!clientSecret) {\n            throw new InvalidRequest('client_secret must be provided in the Authorization header');\n          }\n\n          methods = ['client_secret_basic', 'client_secret_post'];\n        } else if (ctx.headers['oauth-client-attestation'] !== undefined) {\n          let sub;\n          try {\n            ({ payload: { sub } } = JWT.decode(ctx.headers['oauth-client-attestation']));\n          } catch (err) {\n            throw new InvalidRequest('invalid OAuth-Client-Attestation format');\n          }\n\n          if (!sub) {\n            throw new InvalidClientAuth('sub (JWT subject) must be provided in the OAuth-Client-Attestation JWT');\n          }\n\n          setClientId(sub);\n          methods = ['attest_jwt_client_auth'];\n        } else if (ctx.oidc.params.client_assertion !== undefined) {\n          let sub;\n          try {\n            ({ payload: { sub } } = JWT.decode(ctx.oidc.params.client_assertion));\n          } catch (err) {\n            throw new InvalidRequest('invalid client_assertion format');\n          }\n\n          if (!sub) {\n            throw new InvalidClientAuth('sub (JWT subject) must be provided in the client_assertion JWT');\n          }\n\n          if (ctx.oidc.params.client_assertion_type === undefined) {\n            throw new InvalidRequest('client_assertion_type must be provided');\n          }\n\n          if (ctx.oidc.params.client_assertion_type !== assertionType) {\n            throw new InvalidRequest(`client_assertion_type must have value ${assertionType}`);\n          }\n\n          setClientId(sub);\n          methods = ['client_secret_jwt', 'private_key_jwt'];\n        } else {\n          methods = ['none', 'tls_client_auth', 'self_signed_tls_client_auth'];\n        }\n\n        if (!clientId) {\n          throw new InvalidRequest('no client authentication mechanism provided');\n        }\n\n        const client = await provider.Client.find(clientId);\n\n        if (!client) {\n          throw new InvalidClientAuth('client not found');\n        }\n\n        ctx.oidc.entity('Client', client);\n\n        if (methods?.includes(ctx.oidc.client.clientAuthMethod) !== true) {\n          throw new InvalidClientAuth('the provided authentication mechanism does not match the registered client authentication method');\n        }\n\n        switch (ctx.oidc.client.clientAuthMethod) { // eslint-disable-line default-case\n          case 'none':\n            break;\n\n          case 'client_secret_basic':\n          case 'client_secret_post': {\n            ctx.oidc.client.checkClientSecretExpiration('could not authenticate the client - its client secret is expired');\n            const matches = await ctx.oidc.client.compareClientSecret(clientSecret);\n            if (!matches) {\n              throw new InvalidClientAuth('invalid secret provided');\n            }\n\n            break;\n          }\n\n          case 'client_secret_jwt':\n            ctx.oidc.client.checkClientSecretExpiration('could not authenticate the client - its client secret used for the client_assertion is expired');\n            await jwtClientAuth(ctx, ctx.oidc.client.symmetricKeyStore, (alg) => alg.startsWith('HS'));\n\n            break;\n\n          case 'private_key_jwt':\n            await jwtClientAuth(ctx, ctx.oidc.client.asymmetricKeyStore, (alg) => !alg.startsWith('HS'));\n\n            break;\n\n          case 'tls_client_auth': {\n            const {\n              getCertificate, certificateAuthorized, certificateSubjectMatches,\n            } = features.mTLS;\n\n            const cert = getCertificate(ctx);\n\n            if (!cert) {\n              throw new InvalidClientAuth('client certificate was not provided');\n            }\n\n            if (!certificateAuthorized(ctx)) {\n              throw new InvalidClientAuth('client certificate was not verified');\n            }\n\n            for (const [prop, key] of Object.entries({\n              tlsClientAuthSubjectDn: 'tls_client_auth_subject_dn',\n              tlsClientAuthSanDns: 'tls_client_auth_san_dns',\n              tlsClientAuthSanIp: 'tls_client_auth_san_ip',\n              tlsClientAuthSanEmail: 'tls_client_auth_san_email',\n              tlsClientAuthSanUri: 'tls_client_auth_san_uri',\n            })) {\n              const value = ctx.oidc.client[prop];\n              if (value) {\n                if (!certificateSubjectMatches(ctx, key, value)) {\n                  throw new InvalidClientAuth('certificate subject value does not match the registered one');\n                }\n                break;\n              }\n            }\n\n            break;\n          }\n          case 'self_signed_tls_client_auth': {\n            const { getCertificate } = features.mTLS;\n            const cert = getCertificate(ctx);\n\n            if (!cert) {\n              throw new InvalidClientAuth('client certificate was not provided');\n            }\n\n            await ctx.oidc.client.asymmetricKeyStore.refresh();\n            const expected = certificateThumbprint(cert);\n            const match = [...ctx.oidc.client.asymmetricKeyStore].find(({ 'x5t#S256': actual }) => actual === expected);\n\n            if (!match) {\n              throw new InvalidClientAuth('unregistered client certificate provided');\n            }\n\n            break;\n          }\n          case 'attest_jwt_client_auth': {\n            await attestClientAuth(ctx);\n\n            break;\n          }\n        }\n\n        await next();\n      },\n    ],\n  };\n}\n", "import presence from '../../helpers/validate_presence.js';\nimport { InvalidClient } from '../../helpers/errors.js';\n\n/*\n * Checks client_id\n */\nexport default async function checkClient(ctx, next) {\n  presence(ctx, 'client_id');\n\n  const client = await ctx.oidc.provider.Client.find(ctx.oidc.params.client_id);\n\n  if (!client) {\n    // there's no point in checking again in authorization error handler\n    ctx.oidc.noclient = true;\n    throw new InvalidClient('client is invalid', 'client not found');\n  }\n\n  ctx.oidc.entity('Client', client);\n\n  return next();\n}\n", "import { InvalidRequest, UnsupportedResponseMode } from '../../helpers/errors.js';\nimport instance from '../../helpers/weak_cache.js';\nimport { isFrontChannel } from '../../helpers/resolve_response_mode.js';\n\n/*\n * Resolves and assigns params.response_mode if it was not explicitly requested. Validates id_token\n * and token containing responses do not use response_mode query.\n */\nexport default function checkResponseMode(ctx, next) {\n  const { params, client } = ctx.oidc;\n\n  const frontChannel = isFrontChannel(params.response_type);\n\n  const mode = ctx.oidc.responseMode;\n\n  if (\n    mode !== undefined\n    && !instance(ctx.oidc.provider).responseModes.has(mode)\n  ) {\n    params.response_mode = undefined;\n    throw new UnsupportedResponseMode();\n  }\n\n  if (!ctx.oidc.client.responseModeAllowed(mode, params.response_type, ctx.oidc.fapiProfile)) {\n    throw new InvalidRequest('requested response_mode is not allowed for this client or request');\n  }\n\n  const JWT = /jwt/.test(mode);\n\n  if (\n    mode !== undefined && JWT\n    && (\n      /^HS/.test(client.authorizationSignedResponseAlg)\n      || /^(A|dir$)/.test(client.authorizationEncryptedResponseAlg)\n    )\n  ) {\n    try {\n      client.checkClientSecretExpiration('client secret is expired, cannot issue a JWT Authorization response');\n    } catch (err) {\n      const [explicit] = mode === 'jwt' ? [undefined] : mode.split('.');\n      params.response_mode = explicit || undefined;\n      throw err;\n    }\n  }\n\n  const msg = 'requested response_mode is not allowed for the requested response_type';\n  if (mode === 'query' && frontChannel) {\n    throw new InvalidRequest(msg);\n  } else if (mode === 'query.jwt' && frontChannel && !client.authorizationEncryptedResponseAlg) {\n    throw new InvalidRequest(`${msg} unless encrypted`);\n  }\n\n  return next();\n}\n", "import { InvalidRequest, RequestNotSupported, RequestUriNotSupported } from '../../helpers/errors.js';\nimport instance from '../../helpers/weak_cache.js';\n\n/*\n * Rejects request and request_uri parameters when not supported. Also rejects wmrm's relay mode.\n */\nexport default function rejectUnsupported(ctx, next) {\n  const {\n    requestObjects,\n    pushedAuthorizationRequests,\n    webMessageResponseMode,\n  } = instance(ctx.oidc.provider).features;\n  const { params } = ctx.oidc;\n\n  if (params.request !== undefined && !requestObjects.enabled) {\n    throw new RequestNotSupported();\n  }\n\n  if (\n    params.request_uri !== undefined\n    && (ctx.oidc.route !== 'authorization' || !pushedAuthorizationRequests.enabled)\n  ) {\n    throw new RequestUriNotSupported();\n  }\n\n  if (webMessageResponseMode.enabled && params.response_mode?.includes('web_message') && params.web_message_uri) {\n    const error = new InvalidRequest('Web Message Response Mode Relay Mode is not supported');\n    error.allow_redirect = false;\n    throw error;\n  }\n\n  return next();\n}\n", "import { RegistrationNotSupported } from '../../helpers/errors.js';\n\n/*\n * Rejects registration parameter as not supported.\n */\nexport default function rejectRegistration(ctx, next) {\n  if (ctx.oidc.params.registration !== undefined) {\n    throw new RegistrationNotSupported();\n  }\n\n  return next();\n}\n", "import presence from '../../helpers/validate_presence.js';\n\n/*\n * Validates presence of mandatory OAuth2.0 parameters response_type, client_id and scope.\n */\nexport default function oauthRequired(ctx, next) {\n  // Validate: required oauth params\n  presence(ctx, 'response_type', 'client_id');\n\n  return next();\n}\n", "import { InvalidRequest } from '../../helpers/errors.js';\n\n/*\n * Rejects when request and request_uri are used together.\n */\nexport default function rejectRequestAndUri(ctx, next) {\n  if (ctx.oidc.params.request !== undefined && ctx.oidc.params.request_uri !== undefined) {\n    throw new InvalidRequest('request and request_uri parameters MUST NOT be used together');\n  }\n\n  return next();\n}\n", "import { InvalidRequestUri, RequestUriNotSupported } from '../../helpers/errors.js';\nimport instance from '../../helpers/weak_cache.js';\nimport { PUSHED_REQUEST_URN } from '../../consts/index.js';\n\nimport rejectRequestAndUri from './reject_request_and_uri.js';\n\n/*\n * Validates request_uri is a PAR one when PAR is enabled and loads it. Throws\n */\nexport default async function loadPushedAuthorizationRequest(ctx, next) {\n  const { pushedAuthorizationRequests } = instance(ctx.oidc.provider).features;\n  const { params, provider: { PushedAuthorizationRequest } } = ctx.oidc;\n\n  rejectRequestAndUri(ctx, () => {});\n\n  if (params.request_uri !== undefined) {\n    if (pushedAuthorizationRequests.enabled && params.request_uri.startsWith(PUSHED_REQUEST_URN)) {\n      if (!URL.canParse(params.request_uri)) {\n        throw new InvalidRequestUri('invalid request_uri');\n      }\n      const [, id] = params.request_uri.split(PUSHED_REQUEST_URN);\n      const pushedAuthorizationRequest = await PushedAuthorizationRequest.find(id, {\n        ignoreExpiration: true,\n      });\n      if (!pushedAuthorizationRequest?.isValid) {\n        throw new InvalidRequestUri('request_uri is invalid, expired, or was already used');\n      }\n      ctx.oidc.entity('PushedAuthorizationRequest', pushedAuthorizationRequest);\n      params.request = pushedAuthorizationRequest.request;\n    } else {\n      throw new RequestUriNotSupported();\n    }\n  }\n\n  return next();\n}\n", "import * as JWT from '../../helpers/jwt.js';\nimport instance from '../../helpers/weak_cache.js';\nimport { InvalidRequest, InvalidRequestObject, OIDCProviderError } from '../../helpers/errors.js';\nimport isPlainObject from '../../helpers/_/is_plain_object.js';\n\n/*\n * Decrypts and validates the content of provided request parameter and replaces the parameters\n * provided via OAuth2.0 authorization request with these\n */\nexport default async function processRequestObject(PARAM_LIST, rejectDupesMiddleware, ctx, next) {\n  const { params, client, route } = ctx.oidc;\n\n  const pushedRequestObject = 'PushedAuthorizationRequest' in ctx.oidc.entities;\n  if (client.requirePushedAuthorizationRequests && route !== 'pushed_authorization_request' && !pushedRequestObject) {\n    throw new InvalidRequest('Pushed Authorization Request must be used');\n  }\n\n  const isBackchannelAuthentication = route === 'backchannel_authentication';\n  const { configuration, features } = instance(ctx.oidc.provider);\n\n  if (\n    params.request === undefined\n    && (\n      client.requireSignedRequestObject\n      || (client.backchannelAuthenticationRequestSigningAlg && isBackchannelAuthentication)\n    )\n  ) {\n    throw new InvalidRequest('Request Object must be used by this client');\n  }\n\n  if (params.request === undefined) {\n    return next();\n  }\n\n  let trusted = false; // signed or encrypted by client confidential material\n\n  if (features.encryption.enabled && params.request.split('.').length === 5) {\n    if (isBackchannelAuthentication) {\n      throw new InvalidRequest('Encrypted Request Objects are not supported by CIBA');\n    }\n\n    try {\n      const header = JWT.header(params.request);\n\n      if (!configuration.requestObjectEncryptionAlgValues.includes(header.alg)) {\n        throw new TypeError('unsupported encrypted request alg');\n      }\n      if (!configuration.requestObjectEncryptionEncValues.includes(header.enc)) {\n        throw new TypeError('unsupported encrypted request enc');\n      }\n\n      let decrypted;\n      if (/^(A|dir$)/.test(header.alg)) {\n        client.checkClientSecretExpiration('could not decrypt the Request Object - the client secret used for its encryption is expired', 'invalid_request_object');\n        decrypted = await JWT.decrypt(params.request, client.symmetricKeyStore);\n        trusted = true;\n      } else {\n        decrypted = await JWT.decrypt(params.request, instance(ctx.oidc.provider).keystore);\n      }\n\n      params.request = decrypted.toString('utf8');\n\n      if (ctx.oidc.body) {\n        ctx.oidc.body.request = params.request;\n      }\n    } catch (err) {\n      if (err instanceof OIDCProviderError) {\n        throw err;\n      }\n\n      throw new InvalidRequestObject('could not decrypt request object', err.message);\n    }\n  }\n\n  let decoded;\n\n  try {\n    decoded = JWT.decode(params.request);\n  } catch (err) {\n    throw new InvalidRequestObject('could not parse Request Object', err.message);\n  }\n\n  const { payload, header: { alg } } = decoded;\n\n  const request = Object.entries(payload).reduce((acc, [key, value]) => {\n    if (PARAM_LIST.has(key)) {\n      if (key === 'claims' && isPlainObject(value)) {\n        acc[key] = JSON.stringify(value);\n      } else if (key === 'authorization_details' && Array.isArray(value)) {\n        acc[key] = JSON.stringify(value);\n      } else if (Array.isArray(value)) {\n        acc[key] = value;\n      } else if (typeof value !== 'string') {\n        acc[key] = String(value);\n      } else {\n        acc[key] = value;\n      }\n    }\n\n    return acc;\n  }, {});\n\n  rejectDupesMiddleware({ oidc: { params: request } }, () => {});\n\n  const original = {};\n  for (const param of ['state', 'response_mode', 'response_type']) {\n    original[param] = params[param];\n    if (request[param] !== undefined) {\n      params[param] = request[param];\n    }\n  }\n\n  if (request.request !== undefined || request.request_uri !== undefined) {\n    throw new InvalidRequestObject('Request Object must not contain request or request_uri properties');\n  }\n\n  if (\n    original.response_type\n    && request.response_type !== undefined\n    && request.response_type !== original.response_type\n  ) {\n    throw new InvalidRequestObject('request response_type must equal the one in request parameters');\n  }\n\n  if (\n    params.client_id\n    && request.client_id !== undefined\n    && request.client_id !== params.client_id\n  ) {\n    throw new InvalidRequestObject('request client_id must equal the one in request parameters');\n  }\n\n  if (route === 'pushed_authorization_request') {\n    if (request.client_id !== ctx.oidc.client.clientId) {\n      throw new InvalidRequestObject('request client_id must equal the authenticated client\\'s client_id');\n    }\n  }\n\n  if (request.client_id !== undefined && request.client_id !== client.clientId) {\n    throw new InvalidRequestObject('request client_id mismatch');\n  }\n\n  if (!pushedRequestObject && !configuration.requestObjectSigningAlgValues.includes(alg)) {\n    throw new InvalidRequestObject('unsupported signed request alg');\n  }\n\n  const prop = isBackchannelAuthentication ? 'backchannelAuthenticationRequestSigningAlg' : 'requestObjectSigningAlg';\n  if (!pushedRequestObject && client[prop] && alg !== client[prop]) {\n    throw new InvalidRequestObject('the preregistered alg must be used in request or request_uri');\n  }\n\n  const opts = {\n    issuer: client.clientId,\n    audience: ctx.oidc.issuer,\n    clockTolerance: configuration.clockTolerance,\n    ignoreAzp: true,\n  };\n\n  try {\n    JWT.assertPayload(payload, opts);\n  } catch (err) {\n    throw new InvalidRequestObject('Request Object claims are invalid', err.message);\n  }\n\n  await features.requestObjects.assertJwtClaimsAndHeader(\n    ctx,\n    structuredClone(decoded.payload),\n    structuredClone(decoded.header),\n    client,\n  );\n\n  if (pushedRequestObject) {\n    ({ trusted } = pushedRequestObject);\n  } else {\n    try {\n      if (alg.startsWith('HS')) {\n        client.checkClientSecretExpiration('could not validate the Request Object - the client secret used for its signature is expired', 'invalid_request_object');\n        await JWT.verify(params.request, client.symmetricKeyStore, opts);\n      } else {\n        await JWT.verify(params.request, client.asymmetricKeyStore, opts);\n      }\n      trusted = true;\n    } catch (err) {\n      if (err instanceof OIDCProviderError) {\n        throw err;\n      }\n\n      throw new InvalidRequestObject('could not validate Request Object', err.message);\n    }\n  }\n\n  if (trusted) {\n    ctx.oidc.trusted = Object.keys(request);\n  }\n\n  params.request = undefined;\n\n  Object.keys(params).forEach((key) => {\n    if (key in request) {\n      // use value from Request Object\n      params[key] = request[key];\n    } else {\n      // ignore all OAuth 2.0 parameters outside of Request Object\n      params[key] = undefined;\n    }\n  });\n\n  if (pushedRequestObject && ctx.oidc.entities.PushedAuthorizationRequest.dpopJkt) {\n    params.dpop_jkt = ctx.oidc.entities.PushedAuthorizationRequest.dpopJkt;\n    ctx.oidc.trusted?.push('dpop_jkt');\n  }\n\n  return next();\n}\n", "import presence from '../../helpers/validate_presence.js';\n\n/*\n * Validates presence of redirect_uri and conditionally nonce if specific implicit or hybrid flow\n * are used.\n * Validates that openid scope is present is OpenID Connect specific parameters are provided.\n */\nexport default function oidcRequired(ctx, next) {\n  const { params } = ctx.oidc;\n\n  const required = new Set(['redirect_uri']);\n\n  // Check for nonce if implicit or hybrid flow responding with id_token issued by the authorization\n  // endpoint\n  if (typeof params.response_type === 'string' && params.response_type.includes('id_token')) {\n    required.add('nonce');\n  }\n\n  // TODO: move this to a new helper function\n  if (ctx.oidc.isFapi('1.0 Final')) {\n    required.add(ctx.oidc.requestParamScopes.has('openid') ? 'nonce' : 'state');\n  }\n\n  presence(ctx, ...required);\n\n  return next();\n}\n", "import presence from '../../helpers/validate_presence.js';\n\nexport default function oidcRequired(ctx, next) {\n  const required = new Set(['scope']);\n\n  if (ctx.oidc.client.backchannelTokenDeliveryMode !== 'poll') {\n    required.add('client_notification_token');\n  }\n\n  presence(ctx, ...required);\n\n  return next();\n}\n", "import { InvalidRequest } from '../../helpers/errors.js';\nimport instance from '../../helpers/weak_cache.js';\n\n/*\n * Checks that all requested prompts are supported and validates prompt none is not combined with\n * other prompts\n */\nexport default function checkPrompt(ctx, next) {\n  if (ctx.oidc.params.prompt !== undefined) {\n    const { prompts } = ctx.oidc;\n    const supported = instance(ctx.oidc.provider).configuration.prompts;\n\n    for (const prompt of prompts) {\n      if (!supported.has(prompt)) {\n        throw new InvalidRequest('unsupported prompt value requested');\n      }\n    }\n\n    if (prompts.has('none') && prompts.size !== 1) {\n      throw new InvalidRequest('prompt none must only be used alone');\n    }\n  }\n\n  return next();\n}\n", "import { InvalidRequest } from '../../helpers/errors.js';\n\n/*\n * Validates the max_age parameter and handles max_age=0 to prompt=login translation\n */\nexport default function checkMaxAge(ctx, next) {\n  if (ctx.oidc.params.max_age !== undefined) {\n    const maxAge = +ctx.oidc.params.max_age;\n\n    if (!Number.isSafeInteger(maxAge) || Math.sign(maxAge) === -1) {\n      throw new InvalidRequest('invalid max_age parameter value');\n    }\n\n    if (maxAge === 0) {\n      const { prompts } = ctx.oidc;\n      ctx.oidc.params.max_age = undefined;\n      if (!prompts.has('login')) {\n        prompts.add('login');\n        ctx.oidc.params.prompt = [...prompts].join(' ');\n      }\n    }\n  }\n\n  return next();\n}\n", "import { InvalidRequest, OIDCProviderError } from '../../helpers/errors.js';\n\n/*\n * Validates the incoming id_token_hint\n */\nexport default async function checkIdTokenHint(ctx, next) {\n  const { oidc } = ctx;\n  if (oidc.params.id_token_hint !== undefined) {\n    let idTokenHint;\n    try {\n      idTokenHint = await oidc.provider.IdToken.validate(oidc.params.id_token_hint, oidc.client);\n    } catch (err) {\n      if (err instanceof OIDCProviderError) {\n        throw err;\n      }\n\n      throw new InvalidRequest('could not validate id_token_hint', undefined, err.message);\n    }\n    ctx.oidc.entity('IdTokenHint', idTokenHint);\n  }\n\n  return next();\n}\n", "import { InvalidScope } from '../../helpers/errors.js';\nimport instance from '../../helpers/weak_cache.js';\n\n/*\n * Validates that all requested scopes are supported by the provider, and that offline_access prompt\n * is requested together with consent prompt\n */\nexport default async function checkScope(PARAM_LIST, ctx, next) {\n  const { scopes: statics } = instance(ctx.oidc.provider).configuration;\n  const { prompts, client } = ctx.oidc;\n\n  const scopes = [...new Set(ctx.oidc.params.scope?.split(' '))];\n\n  const responseType = ctx.oidc.params.response_type;\n\n  /*\n   * Upon receipt of a scope parameter containing the offline_access value, the Authorization Server\n   *\n   * MUST ensure that the prompt parameter contains consent\n   * MUST ignore the offline_access request unless the Client is using a response_type value that\n   *  would result in an Authorization Code being returned,\n   *\n   * Furthermore no offline_access will be granted if the client doesn't have the grant allowed\n   */\n\n  if (scopes.includes('offline_access')) {\n    if (\n      (PARAM_LIST.has('response_type') && !responseType.includes('code'))\n      || (PARAM_LIST.has('prompt') && !prompts.has('consent'))\n      || !client.grantTypeAllowed('refresh_token')\n    ) {\n      scopes.splice(scopes.indexOf('offline_access'), 1);\n    }\n  }\n\n  if (scopes.length) {\n    ctx.oidc.params.scope = scopes.join(' ');\n  } else {\n    ctx.oidc.params.scope = undefined;\n  }\n\n  if (client.scope) {\n    const allowList = new Set(client.scope.split(' '));\n\n    for (const scope of scopes.filter(Set.prototype.has.bind(statics))) {\n      if (!allowList.has(scope)) {\n        throw new InvalidScope('requested scope is not allowed', scope);\n      }\n    }\n  }\n\n  return next();\n}\n", "import instance from '../../helpers/weak_cache.js';\nimport {\n  UnsupportedResponseType,\n  InvalidRequest,\n} from '../../helpers/errors.js';\n\n/*\n * Validates requested response_type is supported by the provided and allowed in the client\n * configuration\n */\nexport default function checkResponseType(ctx, next) {\n  const { params } = ctx.oidc;\n  const supported = instance(ctx.oidc.provider).configuration.responseTypes;\n\n  params.response_type = [...new Set(params.response_type.split(' '))].sort().join(' ');\n\n  if (!supported.includes(params.response_type)) {\n    throw new UnsupportedResponseType();\n  }\n\n  if (!ctx.oidc.client.responseTypeAllowed(params.response_type)) {\n    throw new InvalidRequest('requested response_type is not allowed for this client');\n  }\n\n  return next();\n}\n", "import { InvalidRedirectUri, InvalidRequest } from '../../helpers/errors.js';\nimport instance from '../../helpers/weak_cache.js';\n\nfunction allowUnregisteredUri(ctx) {\n  const { pushedAuthorizationRequests } = instance(ctx.oidc.provider).features;\n\n  return (ctx.oidc.route === 'pushed_authorization_request' || ('PushedAuthorizationRequest' in ctx.oidc.entities))\n    && pushedAuthorizationRequests.allowUnregisteredRedirectUris\n    && ctx.oidc.client.sectorIdentifierUri === undefined\n    && ctx.oidc.client.clientAuthMethod !== 'none';\n}\n\nfunction validateUnregisteredUri(ctx) {\n  const { redirectUris: validator } = ctx.oidc.provider.Client.Schema.prototype;\n\n  validator.call({\n    ...ctx.oidc.client.metadata(),\n    invalidate(detail) {\n      throw new InvalidRequest(detail.replace('redirect_uris', 'redirect_uri'));\n    },\n  }, [ctx.oidc.params.redirect_uri]);\n\n  return true;\n}\n\n/*\n * Checks that provided redirect_uri is allowed\n */\nexport default function checkRedirectUri(ctx, next) {\n  if (!ctx.oidc.client.redirectUriAllowed(ctx.oidc.params.redirect_uri)) {\n    if (!allowUnregisteredUri(ctx)) {\n      throw new InvalidRedirectUri();\n    }\n\n    validateUnregisteredUri(ctx);\n  }\n\n  ctx.oidc.redirectUriCheckPerformed = true;\n\n  return next();\n}\n", "/*\n * assign max_age and acr_values if it is not provided explictly but is configured with default\n * values on the client\n */\nexport default function assignDefaults(ctx, next) {\n  const { params, client } = ctx.oidc;\n\n  if (!params.acr_values && client.defaultAcrValues) {\n    params.acr_values = client.defaultAcrValues.join(' ');\n  }\n\n  if (params.max_age === undefined && client.defaultMaxAge !== undefined) {\n    params.max_age = client.defaultMaxAge.toString();\n  }\n\n  return next();\n}\n", "import { InvalidRequest } from '../../helpers/errors.js';\nimport instance from '../../helpers/weak_cache.js';\nimport isPlainObject from '../../helpers/_/is_plain_object.js';\n\n/*\n * If claims parameter is provided and supported handles its validation\n * - should not be combined with rt none\n * - should be JSON serialized object with id_token or userinfo properties as objects\n * - claims.userinfo should not be used if authorization result is not access_token\n *\n * Merges requested claims with auth_time as requested if max_age is provided or require_auth_time\n * is configured for the client.\n *\n * Merges requested claims with acr as requested if acr_values is provided\n */\nexport default async function checkClaims(ctx, next) {\n  const { params } = ctx.oidc;\n\n  if (params.claims !== undefined) {\n    const { claimsParameter, userinfo } = instance(ctx.oidc.provider).features;\n\n    if (claimsParameter.enabled) {\n      if (params.response_type === 'none') {\n        throw new InvalidRequest('claims parameter should not be combined with response_type none');\n      }\n\n      let claims;\n\n      try {\n        claims = JSON.parse(params.claims);\n      } catch (err) {\n        throw new InvalidRequest('could not parse the claims parameter JSON');\n      }\n\n      if (!isPlainObject(claims)) {\n        throw new InvalidRequest('claims parameter should be a JSON object');\n      }\n\n      if (claims.userinfo === undefined && claims.id_token === undefined) {\n        throw new InvalidRequest('claims parameter should have userinfo or id_token properties');\n      }\n\n      if (claims.userinfo !== undefined && !isPlainObject(claims.userinfo)) {\n        throw new InvalidRequest('claims.userinfo should be an object');\n      }\n\n      if (claims.id_token !== undefined && !isPlainObject(claims.id_token)) {\n        throw new InvalidRequest('claims.id_token should be an object');\n      }\n\n      if (claims.userinfo && !userinfo.enabled) {\n        throw new InvalidRequest('claims.userinfo should not be used since userinfo endpoint is not supported');\n      }\n\n      if (params.response_type === 'id_token' && claims.userinfo) {\n        throw new InvalidRequest('claims.userinfo should not be used if access_token is not issued');\n      }\n\n      await claimsParameter.assertClaimsParameter?.(\n        ctx,\n        claims,\n        ctx.oidc.client,\n      );\n    }\n  }\n\n  return next();\n}\n", "import merge from '../../helpers/_/merge.js';\nimport instance from '../../helpers/weak_cache.js';\n\n/*\n * Merges requested claims with auth_time as requested if max_age is provided or require_auth_time\n * is configured for the client.\n *\n * Merges requested claims with acr as requested if acr_values is provided\n */\nexport default function assignClaims(ctx, next) {\n  const { params } = ctx.oidc;\n\n  if (params.claims !== undefined && instance(ctx.oidc.provider).features.claimsParameter.enabled) {\n    ctx.oidc.claims = JSON.parse(params.claims);\n  }\n\n  if (params.max_age !== undefined || ctx.oidc.client.requireAuthTime || ctx.oidc.prompts.has('login')) {\n    merge(ctx.oidc.claims, { id_token: { auth_time: { essential: true } } });\n  }\n\n  const acrValues = params.acr_values;\n\n  if (acrValues) {\n    merge(ctx.oidc.claims, { id_token: { acr: { values: acrValues.split(' ') } } });\n  }\n\n  return next();\n}\n", "import instance from '../../helpers/weak_cache.js';\n\n/*\n * Loads the End-User's account referenced by the session.\n */\nexport default async function loadAccount(ctx, next) {\n  const { accountId } = ctx.oidc.session;\n\n  if (accountId) {\n    const account = await instance(ctx.oidc.provider).configuration.findAccount(ctx, accountId);\n    ctx.oidc.entity('Account', account);\n  }\n\n  return next();\n}\n", "import instance from '../../helpers/weak_cache.js';\n\n/*\n * Load or establish a new Grant object when the user is known.\n */\nexport default async function loadGrant(ctx, next) {\n  const { loadExistingGrant } = instance(ctx.oidc.provider).configuration;\n  if (ctx.oidc.account) {\n    let grant = await loadExistingGrant(ctx);\n    if (grant) {\n      if (grant.accountId !== ctx.oidc.account.accountId) {\n        throw new Error('accountId mismatch');\n      }\n      if (grant.clientId !== ctx.oidc.client.clientId) {\n        throw new Error('clientId mismatch');\n      }\n      ctx.oidc.session.ensureClientContainer(ctx.oidc.params.client_id);\n      ctx.oidc.session.grantIdFor(ctx.oidc.params.client_id, grant.jti);\n    } else {\n      grant = new ctx.oidc.provider.Grant({\n        accountId: ctx.oidc.account.accountId,\n        clientId: ctx.oidc.client.clientId,\n      });\n    }\n    ctx.oidc.entity('Grant', grant);\n  }\n\n  return next();\n}\n", "import upperFirst from '../../helpers/_/upper_first.js';\nimport camelCase from '../../helpers/_/camel_case.js';\nimport * as errors from '../../helpers/errors.js';\nimport instance from '../../helpers/weak_cache.js';\nimport nanoid from '../../helpers/nanoid.js';\n\nexport default async function interactions(resumeRouteName, ctx, next) {\n  const { oidc } = ctx;\n  let failedCheck;\n  let prompt;\n\n  const { policy, url: interactionUrl } = instance(oidc.provider).configuration.interactions;\n\n  for (const { name, checks, details: promptDetails } of policy) {\n    let results = (await Promise.all([...checks].map(async ({\n      reason, description, error, details, check,\n    }) => {\n      if (await check(ctx)) {\n        return {\n          [reason]: { error, description, details: await details(ctx) },\n        };\n      }\n\n      return undefined;\n    }))).filter(Boolean);\n\n    if (results.length) {\n      results = Object.assign({}, ...results);\n      prompt = {\n        name,\n        reasons: Object.keys(results),\n        details: Object.assign(\n          {},\n          await promptDetails(ctx),\n          ...Object.values(results).map((r) => r.details),\n        ),\n      };\n\n      const [[, { error, description }]] = Object.entries(results);\n      failedCheck = {\n        error: error || 'interaction_required',\n        error_description: description || 'interaction is required from the end-user',\n      };\n      break;\n    }\n  }\n\n  // no interaction requested\n  if (!prompt) {\n    // check there's an accountId to continue\n    if (!oidc.session.accountId) {\n      throw new errors.AccessDenied(undefined, 'authorization request resolved without requesting interactions but no account id was resolved');\n    }\n\n    // check there's something granted to continue\n    // if only claims parameter is used then it must be combined with openid scope anyway\n    // when no scope parameter was provided and none is injected by the AS policy access is\n    // denied rather then issuing a code/token without scopes\n    if (\n      !oidc.grant.getOIDCScopeFiltered(oidc.requestParamOIDCScopes)\n      && Object.keys(ctx.oidc.resourceServers)\n        .every(\n          (resource) => !oidc.grant.getResourceScopeFiltered(resource, oidc.requestParamScopes),\n        )\n      && !oidc.params.authorization_details\n    ) {\n      throw new errors.AccessDenied(undefined, 'authorization request resolved without requesting interactions but no scope was granted');\n    }\n\n    oidc.provider.emit('authorization.accepted', ctx);\n    await next();\n    return;\n  }\n\n  // if interaction needed but prompt=none => throw;\n  try {\n    if (oidc.promptPending('none')) {\n      const className = upperFirst(camelCase(failedCheck.error));\n      if (errors[className]) {\n        throw new errors[className](failedCheck.error_description);\n      }\n      throw new errors.CustomOIDCProviderError(failedCheck.error, failedCheck.error_description);\n    }\n  } catch (err) {\n    const code = /^(code|device)_/.test(oidc.route) ? 400 : 303;\n    err.status = code;\n    err.statusCode = code;\n    err.expose = true;\n    throw err;\n  }\n\n  const uid = nanoid();\n\n  const cookieOptions = instance(oidc.provider).configuration.cookies.short;\n  const returnTo = oidc.urlFor(resumeRouteName, {\n    uid,\n  });\n\n  const interactionSession = new oidc.provider.Interaction(uid, {\n    returnTo,\n    prompt,\n    lastSubmission: oidc.result,\n    accountId: oidc.session.accountId,\n    params: oidc.params.toPlainObject(),\n    trusted: oidc.trusted,\n    session: oidc.session,\n    grant: oidc.grant,\n    cid: oidc.entities.Interaction?.cid || nanoid(),\n    deviceCode: oidc.deviceCode?.jti,\n    parJti: oidc.entities.PushedAuthorizationRequest?.jti || oidc.entities.Interaction?.parJti,\n  });\n\n  let ttl = instance(ctx.oidc.provider).configuration.ttl.Interaction;\n\n  if (typeof ttl === 'function') {\n    ttl = ttl(ctx, interactionSession);\n  }\n\n  await interactionSession.save(ttl);\n  ctx.oidc.entity('Interaction', interactionSession);\n\n  const destination = await interactionUrl(ctx, interactionSession);\n\n  ctx.cookies.set(\n    oidc.provider.cookieName('interaction'),\n    uid,\n    {\n      path: new URL(destination, ctx.oidc.issuer).pathname,\n      ...cookieOptions,\n      maxAge: ttl * 1000,\n    },\n  );\n\n  ctx.cookies.set(\n    oidc.provider.cookieName('resume'),\n    uid,\n    {\n      ...cookieOptions,\n      path: new URL(returnTo).pathname,\n      domain: undefined,\n      httpOnly: true,\n      maxAge: ttl * 1000,\n    },\n  );\n\n  oidc.provider.emit('interaction.started', ctx, prompt);\n  ctx.status = 303;\n  ctx.redirect(destination);\n}\n", "export default (grant, requestParamScopes, resourceServers) => {\n  const combinedScope = new Set();\n\n  grant.getOIDCScopeFiltered(requestParamScopes)\n    .split(' ')\n    .filter(Boolean)\n    .forEach(Set.prototype.add.bind(combinedScope));\n\n  for (const resourceServer of Object.values(resourceServers)) {\n    grant.getResourceScopeFiltered(resourceServer.identifier(), requestParamScopes)\n      .split(' ')\n      .filter(Boolean)\n      .forEach(Set.prototype.add.bind(combinedScope));\n  }\n\n  return combinedScope;\n};\n", "import { InvalidTarget } from './errors.js';\nimport instance from './weak_cache.js';\nimport filterClaims from './filter_claims.js';\nimport combinedScope from './combined_scope.js';\nimport getCtxAccountClaims from './account_claims.js';\n\nasync function tokenHandler(ctx) {\n  const { accountId } = ctx.oidc.session;\n\n  const token = new ctx.oidc.provider.AccessToken({\n    accountId,\n    client: ctx.oidc.client,\n    grantId: ctx.oidc.session.grantIdFor(ctx.oidc.client.clientId),\n    gty: 'implicit',\n    sessionUid: ctx.oidc.session.uid,\n    sid: ctx.oidc.session.sidFor(ctx.oidc.client.clientId),\n  });\n\n  const {\n    expiresWithSession,\n    features: { resourceIndicators },\n  } = instance(ctx.oidc.provider).configuration;\n\n  let { resource } = ctx.oidc.params;\n\n  if (Array.isArray(resource)) {\n    resource = await resourceIndicators.defaultResource(ctx, ctx.oidc.client, resource);\n  }\n\n  if (Array.isArray(resource)) {\n    throw new InvalidTarget('only a single resource indicator value must be requested/resolved during Access Token Request');\n  }\n\n  const { grant } = ctx.oidc;\n\n  if (resource) {\n    const resourceServer = ctx.oidc.resourceServers[resource];\n    if (!resourceServer) throw new InvalidTarget();\n    token.resourceServer = resourceServer;\n    token.scope = grant.getResourceScopeFiltered(resource, ctx.oidc.requestParamScopes);\n  } else {\n    token.claims = ctx.oidc.claims;\n    token.scope = grant.getOIDCScopeFiltered(ctx.oidc.requestParamOIDCScopes);\n  }\n\n  if (!token.resourceServer || token.resourceServer.accessTokenFormat === 'opaque') {\n    if (await expiresWithSession(ctx, token)) {\n      token.expiresWithSession = true;\n    } else {\n      ctx.oidc.session.authorizationFor(ctx.oidc.client.clientId).persistsLogout = true;\n    }\n  }\n\n  ctx.oidc.entity('AccessToken', token);\n\n  const result = {\n    access_token: await token.save(),\n    expires_in: token.expiration,\n    token_type: token.tokenType,\n    scope: token.scope,\n  };\n\n  return result;\n}\n\nasync function codeHandler(ctx) {\n  const {\n    expiresWithSession,\n    features: {\n      richAuthorizationRequests,\n    },\n  } = instance(ctx.oidc.provider).configuration;\n\n  const { grant } = ctx.oidc;\n\n  const scopeSet = combinedScope(grant, ctx.oidc.requestParamScopes, ctx.oidc.resourceServers);\n\n  const code = new ctx.oidc.provider.AuthorizationCode({\n    accountId: ctx.oidc.session.accountId,\n    acr: ctx.oidc.acr,\n    amr: ctx.oidc.amr,\n    authTime: ctx.oidc.session.authTime(),\n    claims: ctx.oidc.claims,\n    client: ctx.oidc.client,\n    codeChallenge: ctx.oidc.params.code_challenge,\n    codeChallengeMethod: ctx.oidc.params.code_challenge_method,\n    grantId: ctx.oidc.session.grantIdFor(ctx.oidc.client.clientId),\n    nonce: ctx.oidc.params.nonce,\n    redirectUri: ctx.oidc.params.redirect_uri,\n    resource: Object.keys(ctx.oidc.resourceServers),\n    scope: [...scopeSet].join(' '),\n    sessionUid: ctx.oidc.session.uid,\n    dpopJkt: ctx.oidc.params.dpop_jkt,\n  });\n\n  if (ctx.oidc.entities.PushedAuthorizationRequest?.attestationJkt) {\n    code.attestationJkt = ctx.oidc.entities.PushedAuthorizationRequest.attestationJkt;\n  }\n\n  if (richAuthorizationRequests.enabled) {\n    code.rar = await richAuthorizationRequests.rarForAuthorizationCode(ctx);\n  }\n\n  if (Object.keys(code.claims).length === 0) {\n    delete code.claims;\n  }\n\n  // eslint-disable-next-line default-case\n  switch (code.resource.length) {\n    case 0:\n      delete code.resource;\n      break;\n    case 1:\n      [code.resource] = code.resource;\n      break;\n  }\n\n  if (await expiresWithSession(ctx, code)) {\n    code.expiresWithSession = true;\n  } else {\n    ctx.oidc.session.authorizationFor(ctx.oidc.client.clientId).persistsLogout = true;\n  }\n\n  if (ctx.oidc.client.includeSid() || (ctx.oidc.claims.id_token && 'sid' in ctx.oidc.claims.id_token)) {\n    code.sid = ctx.oidc.session.sidFor(ctx.oidc.client.clientId);\n  }\n\n  ctx.oidc.entity('AuthorizationCode', code);\n\n  return { code: await code.save() };\n}\n\nasync function idTokenHandler(ctx) {\n  const claims = filterClaims(ctx.oidc.claims, 'id_token', ctx.oidc.grant);\n  const rejected = ctx.oidc.grant.getRejectedOIDCClaims();\n  const scope = ctx.oidc.grant.getOIDCScopeFiltered(ctx.oidc.requestParamScopes);\n  const idToken = new ctx.oidc.provider.IdToken({\n    ...await getCtxAccountClaims(ctx, 'id_token', scope, claims, rejected),\n    acr: ctx.oidc.acr,\n    amr: ctx.oidc.amr,\n    auth_time: ctx.oidc.session.authTime(),\n  }, { ctx });\n\n  const {\n    conformIdTokenClaims, features: { userinfo },\n  } = instance(ctx.oidc.provider).configuration;\n\n  if (conformIdTokenClaims && userinfo.enabled && ctx.oidc.params.response_type !== 'id_token' && !ctx.oidc.params.resource) {\n    idToken.scope = 'openid';\n  } else {\n    idToken.scope = scope;\n  }\n\n  idToken.mask = claims;\n  idToken.rejected = rejected;\n\n  idToken.set('nonce', ctx.oidc.params.nonce);\n\n  if (ctx.oidc.client.includeSid() || (ctx.oidc.claims.id_token && 'sid' in ctx.oidc.claims.id_token)) {\n    idToken.set('sid', ctx.oidc.session.sidFor(ctx.oidc.client.clientId));\n  }\n\n  return { id_token: idToken };\n}\n\n/*\n * Resolves each requested response type to a single response object. If one of the hybrid\n * response types is used an appropriate _hash is also pushed on to the id_token.\n */\nexport default async function processResponseTypes(ctx) {\n  const responses = ctx.oidc.params.response_type.split(' ');\n  const response = Object.assign({}, ...await Promise.all(responses.map((responseType) => {\n    switch (responseType) {\n      case 'code':\n        return codeHandler(ctx);\n      case 'token':\n        return tokenHandler(ctx);\n      case 'id_token':\n        return idTokenHandler(ctx);\n      default:\n        return {};\n    }\n  })));\n\n  if ('id_token' in response) {\n    if ('access_token' in response) {\n      response.id_token.set('at_hash', response.access_token);\n    }\n\n    if ('code' in response) {\n      response.id_token.set('c_hash', response.code);\n    }\n\n    if (ctx.oidc.params.state && ctx.oidc.isFapi('1.0 Final')) {\n      response.id_token.set('s_hash', ctx.oidc.params.state);\n    }\n\n    response.id_token = await response.id_token.issue({ use: 'idtoken' });\n  }\n\n  return response;\n}\n", "import instance from '../../helpers/weak_cache.js';\nimport { InvalidRequestUri } from '../../helpers/errors.js';\nimport processResponseTypes from '../../helpers/process_response_types.js';\n\n/*\n * Based on the authorization request response mode either redirects with parameters in query or\n * fragment or renders auto-submitting form with the response members as hidden fields.\n *\n * If session management is supported stores User-Agent readable cookie with the session stated\n * used by the OP iframe to detect session state changes.\n *\n * @emits: authorization.success\n */\nexport default async function respond(ctx) {\n  let pushedAuthorizationRequest = ctx.oidc.entities.PushedAuthorizationRequest;\n\n  if (!pushedAuthorizationRequest && ctx.oidc.entities.Interaction?.parJti) {\n    pushedAuthorizationRequest = await ctx.oidc.provider.PushedAuthorizationRequest.find(\n      ctx.oidc.entities.Interaction.parJti,\n      { ignoreExpiration: true },\n    );\n  }\n\n  if (pushedAuthorizationRequest?.consumed) {\n    throw new InvalidRequestUri('request_uri is invalid, expired, or was already used');\n  }\n  await pushedAuthorizationRequest?.consume();\n\n  const out = await processResponseTypes(ctx);\n\n  const { oidc: { params } } = ctx;\n\n  if (params.state !== undefined) {\n    out.state = params.state;\n  }\n\n  const { responseMode } = ctx.oidc;\n  if (!out.id_token && !responseMode.includes('jwt')) {\n    out.iss = ctx.oidc.provider.issuer;\n  }\n\n  ctx.oidc.provider.emit('authorization.success', ctx, out);\n\n  const handler = instance(ctx.oidc.provider).responseModes.get(responseMode);\n  await handler(ctx, params.redirect_uri, out);\n}\n", "import { InvalidRequest } from '../../helpers/errors.js';\nimport instance from '../../helpers/weak_cache.js';\nimport checkFormat from '../../helpers/pkce_format.js';\n\n/*\n * - assign default code_challenge_method if a code_challenge is provided\n * - check presence of code code_challenge if code_challenge_method is provided\n * - enforce PKCE use for native clients using hybrid or code flow\n */\nexport default function checkPKCE(ctx, next) {\n  const { params } = ctx.oidc;\n  const { pkce } = instance(ctx.oidc.provider).configuration;\n\n  if (!params.code_challenge_method && params.code_challenge) {\n    throw new InvalidRequest('code_challenge_method must be provided');\n  }\n\n  if (params.code_challenge_method) {\n    if (params.code_challenge_method !== 'S256') {\n      throw new InvalidRequest('not supported value of code_challenge_method');\n    }\n\n    if (!params.code_challenge) {\n      throw new InvalidRequest('code_challenge must be provided with code_challenge_method');\n    }\n  }\n\n  if (params.response_type.includes('code')) {\n    if (!params.code_challenge) {\n      if (pkce.required(ctx, ctx.oidc.client)) {\n        throw new InvalidRequest('Authorization Server policy requires PKCE to be used for this request');\n      }\n    }\n  }\n\n  if (params.code_challenge !== undefined) {\n    checkFormat(params.code_challenge, 'code_challenge');\n  }\n\n  return next();\n}\n", "const resumeRoutes = new Set(['resume', 'device_resume']);\n\nexport default function interactionEmit(ctx, next) {\n  if (resumeRoutes.has(ctx.oidc.route)) {\n    ctx.oidc.provider.emit('interaction.ended', ctx);\n  }\n\n  return next();\n}\n", "import upperFirst from '../../helpers/_/upper_first.js';\nimport camelCase from '../../helpers/_/camel_case.js';\nimport nanoid from '../../helpers/nanoid.js';\nimport * as errors from '../../helpers/errors.js';\nimport instance from '../../helpers/weak_cache.js';\nimport Params from '../../helpers/params.js';\nimport formPost from '../../response_modes/form_post.js';\nimport epochTime from '../../helpers/epoch_time.js';\n\nexport default async function resumeAction(allowList, resumeRouteName, ctx, next) {\n  const cookieOptions = instance(ctx.oidc.provider).configuration.cookies.short;\n\n  const cookieId = ctx.cookies.get(\n    ctx.oidc.provider.cookieName('resume'),\n    cookieOptions,\n  );\n\n  if (!cookieId) {\n    throw new errors.SessionNotFound('authorization request has expired');\n  }\n\n  const interactionSession = await ctx.oidc.provider.Interaction.find(cookieId);\n  if (!interactionSession) {\n    throw new errors.SessionNotFound('interaction session not found');\n  }\n  ctx.oidc.entity('Interaction', interactionSession);\n\n  if (cookieId !== interactionSession.uid) {\n    throw new errors.SessionNotFound('authorization session and cookie identifier mismatch');\n  }\n\n  const {\n    result,\n    params: storedParams = {},\n    trusted = [],\n    session: originSession,\n  } = interactionSession;\n\n  const { session } = ctx.oidc;\n\n  if (originSession?.uid && originSession.uid !== session.uid) {\n    throw new errors.SessionNotFound('interaction session and authentication session mismatch');\n  }\n\n  if (\n    result?.login\n    && session.accountId\n    && session.accountId !== result.login.accountId\n  ) {\n    if (interactionSession.session?.uid) {\n      delete interactionSession.session.uid;\n      await interactionSession.save(interactionSession.exp - epochTime());\n    }\n\n    session.state = {\n      secret: nanoid(),\n      clientId: storedParams.client_id,\n      postLogoutRedirectUri: ctx.oidc.urlFor(ctx.oidc.route, ctx.params),\n    };\n\n    formPost(ctx, ctx.oidc.urlFor('end_session_confirm'), {\n      xsrf: session.state.secret,\n      logout: 'yes',\n    });\n\n    return;\n  }\n\n  await interactionSession.destroy();\n\n  const params = new (Params(allowList))(storedParams);\n  ctx.oidc.params = params;\n  ctx.oidc.trusted = trusted;\n  ctx.oidc.redirectUriCheckPerformed = true;\n\n  const clearOpts = {\n    ...cookieOptions,\n    path: new URL(ctx.oidc.urlFor(resumeRouteName, { uid: interactionSession.uid })).pathname,\n  };\n  ctx.cookies.set(\n    ctx.oidc.provider.cookieName('resume'),\n    null,\n    clearOpts,\n  );\n\n  if (result?.error) {\n    const className = upperFirst(camelCase(result.error));\n    if (errors[className]) {\n      throw new errors[className](result.error_description);\n    }\n    throw new errors.CustomOIDCProviderError(result.error, result.error_description);\n  }\n\n  if (result?.login) {\n    const {\n      remember = true, accountId, ts: loginTs, amr, acr,\n    } = result.login;\n\n    session.loginAccount({\n      accountId, loginTs, amr, acr, transient: !remember,\n    });\n  }\n\n  ctx.oidc.result = result;\n\n  if (!session.new) {\n    session.resetIdentifier();\n  }\n\n  await next();\n}\n", "import { InvalidRequest } from '../../helpers/errors.js';\n\nexport default function checkClientGrantType({ oidc: { route, client } }, next) {\n  let grantType;\n  switch (route) {\n    case 'device_authorization':\n      grantType = 'urn:ietf:params:oauth:grant-type:device_code';\n      break;\n    case 'backchannel_authentication':\n      grantType = 'urn:openid:params:grant-type:ciba';\n      break;\n    default:\n      throw new Error('not implemented');\n  }\n\n  if (!client.grantTypeAllowed(grantType)) {\n    throw new InvalidRequest(`${grantType} is not allowed for this client`);\n  }\n\n  return next();\n}\n", "import { InvalidRequest } from '../../helpers/errors.js';\n\nconst GATED_CLIENT = Object.entries({\n  defaultAcrValues: 'default_acr_values',\n  defaultMaxAge: 'default_max_age',\n  requireAuthTime: 'require_auth_time',\n});\n\nconst GATED = [\n  'acr_values',\n  'claims',\n  'claims_locales',\n  'id_token_hint',\n  'max_age',\n  'nonce',\n];\n\n/*\n * Validates that openid scope is requested when openid specific parameters are provided\n */\nexport default function checkOpenIdScope(PARAM_LIST, ctx, next) {\n  if (ctx.oidc.params.scope?.split(' ').includes('openid')) {\n    return next();\n  }\n\n  if (PARAM_LIST.has('response_type') && ctx.oidc.params.response_type.includes('id_token')) {\n    throw new InvalidRequest('openid scope must be requested for this response_type');\n  }\n\n  GATED_CLIENT.forEach(([prop, msg]) => {\n    if (ctx.oidc.client[prop]) {\n      throw new InvalidRequest(`openid scope must be requested for clients with ${msg}`);\n    }\n  });\n\n  GATED.forEach((param) => {\n    if (ctx.oidc.params[param] !== undefined) {\n      throw new InvalidRequest(`openid scope must be requested when using the ${param} parameter`);\n    }\n  });\n\n  if (ctx.oidc.route === 'backchannel_authentication') {\n    throw new InvalidRequest('openid scope must be requested for this request');\n  }\n\n  return next();\n}\n", "import { customAlphabet } from 'nanoid';\n\nconst CHARSETS = {\n  'base-20': 'BCDFGHJKLMNPQRSTVWXZ',\n  digits: '0123456789',\n};\n\nexport function generate(charset, mask) {\n  const length = mask.split('*').length - 1;\n  if (typeof CHARSETS[charset] !== 'function') {\n    CHARSETS[charset] = customAlphabet(CHARSETS[charset]);\n  }\n  const generated = CHARSETS[charset](length).split('');\n  return mask.split('').map((p) => {\n    if (p === '*') {\n      return generated.shift();\n    }\n\n    return p;\n  }).join('');\n}\n\nexport function denormalize(normalized, mask) {\n  const chars = normalized.split('');\n  return mask.split('').map((p) => {\n    if (p === '*') {\n      return chars.shift();\n    }\n\n    return p;\n  }).join('');\n}\n\nexport function normalize(input) {\n  return input\n    .replace(/[a-z]/g, (char) => char.toUpperCase())\n    .replace(/\\W/g, () => '');\n}\n", "import { generate, normalize } from '../../helpers/user_codes.js';\nimport instance from '../../helpers/weak_cache.js';\n\nexport default async function deviceAuthorizationResponse(ctx) {\n  const { charset, mask, deviceInfo } = instance(ctx.oidc.provider).features.deviceFlow;\n  const userCode = generate(charset, mask);\n\n  const dc = new ctx.oidc.provider.DeviceCode({\n    client: ctx.oidc.client,\n    deviceInfo: deviceInfo(ctx),\n    params: ctx.oidc.params.toPlainObject(),\n    userCode: normalize(userCode),\n  });\n\n  if (ctx.oidc.client.clientAuthMethod === 'attest_jwt_client_auth') {\n    await dc.setAttestBinding(ctx);\n  }\n\n  ctx.oidc.entity('DeviceCode', dc);\n  ctx.body = {\n    device_code: await dc.save(),\n    user_code: userCode,\n    verification_uri: ctx.oidc.urlFor('code_verification'),\n    verification_uri_complete: ctx.oidc.urlFor('code_verification', {\n      query: { user_code: userCode },\n    }),\n    expires_in: dc.expiration,\n  };\n\n  ctx.oidc.provider.emit('device_authorization.success', ctx, ctx.body);\n}\n", "export default function deviceAuthorizationResponse(ctx, next) {\n  if (!ctx.oidc.body.client_id) {\n    ctx.oidc.body.client_id = ctx.oidc.client.clientId;\n  }\n  return next();\n}\n", "import Params from '../../helpers/params.js';\nimport {\n  NotFoundError, ExpiredError, AlreadyUsedError,\n} from '../../helpers/re_render_errors.js';\n\nexport default async function deviceUserFlow(allowList, ctx, next) {\n  if (ctx.oidc.route === 'device_resume') {\n    const code = await ctx.oidc.provider.DeviceCode.find(\n      ctx.oidc.entities.Interaction.deviceCode,\n      { ignoreExpiration: true, ignoreSessionBinding: true },\n    );\n\n    if (!code) {\n      throw new NotFoundError();\n    }\n\n    if (code.isExpired) {\n      throw new ExpiredError();\n    }\n\n    if (code.error || code.accountId) {\n      throw new AlreadyUsedError();\n    }\n\n    ctx.oidc.entity('DeviceCode', code);\n  } else {\n    ctx.oidc.params = new (Params(allowList))(ctx.oidc.deviceCode.params);\n  }\n\n  await next();\n}\n", "import { AccessDenied } from '../../helpers/errors.js';\nimport errOut from '../../helpers/err_out.js';\nimport {\n  ReRenderError, AbortedError,\n} from '../../helpers/re_render_errors.js';\n\nexport default async function deviceUserFlowErrors(ctx, next) {\n  try {\n    await next();\n  } catch (err) {\n    if (!(err instanceof ReRenderError)) {\n      const out = errOut(err);\n\n      let code = ctx.oidc.deviceCode;\n\n      if (!code && ctx.oidc.entities.Interaction?.deviceCode) {\n        code = await ctx.oidc.provider.DeviceCode.find(\n          ctx.oidc.entities.Interaction.deviceCode,\n          { ignoreExpiration: true, ignoreSessionBinding: true },\n        );\n      }\n\n      if (code) {\n        Object.assign(code, {\n          error: out.error,\n          errorDescription: out.error_description,\n        });\n        await code.save();\n        if (err instanceof AccessDenied) {\n          throw new AbortedError();\n        }\n      }\n    }\n\n    throw err;\n  }\n}\n", "import instance from '../../helpers/weak_cache.js';\nimport combinedScope from '../../helpers/combined_scope.js';\n\nexport default async function deviceVerificationResponse(ctx) {\n  const { configuration, features } = instance(ctx.oidc.provider);\n  const code = ctx.oidc.deviceCode;\n\n  const scopeSet = combinedScope(\n    ctx.oidc.grant,\n    ctx.oidc.requestParamScopes,\n    ctx.oidc.resourceServers,\n  );\n\n  Object.assign(code, {\n    accountId: ctx.oidc.session.accountId,\n    acr: ctx.oidc.acr,\n    amr: ctx.oidc.amr,\n    authTime: ctx.oidc.session.authTime(),\n    claims: ctx.oidc.claims,\n    grantId: ctx.oidc.session.grantIdFor(ctx.oidc.client.clientId),\n    scope: [...scopeSet].join(' '),\n    sessionUid: ctx.oidc.session.uid,\n    resource: Object.keys(ctx.oidc.resourceServers),\n  });\n\n  if (Object.keys(code.claims).length === 0) {\n    delete code.claims;\n  }\n\n  // eslint-disable-next-line default-case\n  switch (code.resource.length) {\n    case 0:\n      delete code.resource;\n      break;\n    case 1:\n      [code.resource] = code.resource;\n      break;\n  }\n\n  if (await configuration.expiresWithSession(ctx, code)) {\n    code.expiresWithSession = true;\n  } else {\n    ctx.oidc.session.authorizationFor(ctx.oidc.client.clientId).persistsLogout = true;\n  }\n\n  if (ctx.oidc.client.includeSid() || (ctx.oidc.claims.id_token && 'sid' in ctx.oidc.claims.id_token)) {\n    code.sid = ctx.oidc.session.sidFor(ctx.oidc.client.clientId);\n  }\n\n  await code.save();\n\n  await features.deviceFlow.successSource(ctx);\n\n  ctx.oidc.provider.emit('authorization.success', ctx);\n}\n", "import { InvalidRedirectUri } from '../../helpers/errors.js';\n\n/*\n * Remaps the Pushed Authorization Request Endpoint errors thrown in downstream middlewares.\n */\nexport default async function requestObjectRemapErrors(ctx, next) {\n  return next().catch((err) => {\n    if (err instanceof InvalidRedirectUri) {\n      Object.assign(err, {\n        message: 'invalid_request',\n        error: 'invalid_request',\n      });\n    }\n\n    throw err;\n  });\n}\n", "import { InvalidRequestObject } from '../../helpers/errors.js';\n\n/*\n * Remaps the Backchannel Authentication Endpoint errors thrown in downstream middlewares.\n */\nexport default async function requestObjectRemapErrors(ctx, next) {\n  return next().catch((err) => {\n    if (err instanceof InvalidRequestObject) {\n      Object.assign(err, {\n        message: 'invalid_request',\n        error: 'invalid_request',\n      });\n    }\n\n    throw err;\n  });\n}\n", "/*\n * Makes sure that\n * - unauthenticated clients send the JAR Request Object\n * - either JAR or plain request is provided\n * - request_uri is not used\n */\nexport default function stripOutsideJarParams(ctx, next) {\n  const JAR = !!ctx.oidc.params.request;\n\n  for (const [param, value] of Object.entries(ctx.oidc.params)) {\n    if (value !== undefined) {\n      if (JAR && (param !== 'client_id' && param !== 'request')) {\n        ctx.oidc.params[param] = undefined;\n      }\n    }\n  }\n\n  return next();\n}\n", "import { UnsecuredJWT } from 'jose';\n\nimport { PUSHED_REQUEST_URN } from '../../consts/index.js';\nimport epochTime from '../../helpers/epoch_time.js';\nimport * as JWT from '../../helpers/jwt.js';\n\nconst MAX_TTL = 60;\n\nexport default async function pushedAuthorizationRequestResponse(ctx) {\n  let request;\n  let ttl;\n  let dpopJkt;\n  const now = epochTime();\n  if (ctx.oidc.body.request) {\n    ({ request } = ctx.oidc.body);\n    const { payload: { exp, dpop_jkt: thumbprint } } = JWT.decode(request);\n    ttl = exp - now;\n\n    if (!Number.isInteger(ttl) || ttl > MAX_TTL) {\n      ttl = MAX_TTL;\n    }\n    dpopJkt = thumbprint || ctx.oidc.params.dpop_jkt;\n  } else {\n    ttl = MAX_TTL;\n    const payload = { ...ctx.oidc.params };\n\n    if (payload.claims) {\n      payload.claims = JSON.parse(payload.claims);\n    }\n\n    if (payload.authorization_details) {\n      payload.authorization_details = JSON.parse(payload.authorization_details);\n    }\n\n    request = new UnsecuredJWT(payload)\n      .setIssuedAt(now)\n      .setIssuer(ctx.oidc.client.clientId)\n      .setAudience(ctx.oidc.issuer)\n      .setExpirationTime(now + MAX_TTL)\n      .setNotBefore(now)\n      .encode();\n    dpopJkt = ctx.oidc.params.dpop_jkt;\n  }\n\n  const requestObject = new ctx.oidc.provider.PushedAuthorizationRequest({\n    request,\n    dpopJkt,\n    trusted: ctx.oidc.client.clientAuthMethod !== 'none' || !!ctx.oidc.trusted?.length,\n  });\n\n  if (ctx.oidc.client.clientAuthMethod === 'attest_jwt_client_auth') {\n    await requestObject.setAttestBinding(ctx);\n  }\n\n  const id = await requestObject.save(ttl);\n\n  ctx.oidc.entity('PushedAuthorizationRequest', requestObject);\n\n  ctx.status = 201;\n  ctx.body = {\n    expires_in: ttl,\n    request_uri: `${PUSHED_REQUEST_URN}${id}`,\n  };\n  ctx.oidc.provider.emit('pushed_authorization_request.success', ctx, ctx.oidc.client);\n}\n", "import { InvalidRequest, UnknownUserId } from '../../helpers/errors.js';\nimport omitBy from '../../helpers/_/omit_by.js';\nimport instance from '../../helpers/weak_cache.js';\n\nimport checkIdTokenHint from './check_id_token_hint.js';\n\nexport default async function cibaLoadAccount(ctx, next) {\n  const mechanisms = omitBy({\n    login_hint_token: ctx.oidc.params.login_hint_token,\n    id_token_hint: ctx.oidc.params.id_token_hint,\n    login_hint: ctx.oidc.params.login_hint,\n  }, (value) => typeof value !== 'string' || !value);\n\n  let mechanism;\n  let length;\n  let value;\n\n  try {\n    ({ 0: [mechanism, value], length } = Object.entries(mechanisms));\n  } catch (err) {}\n\n  if (!length) {\n    throw new InvalidRequest('missing one of required parameters login_hint_token, id_token_hint, or login_hint');\n  } else if (length !== 1) {\n    throw new InvalidRequest('only one of required parameters login_hint_token, id_token_hint, or login_hint must be provided');\n  }\n\n  const { findAccount, features } = instance(ctx.oidc.provider).configuration;\n  const { ciba } = features;\n\n  let accountId;\n  // eslint-disable-next-line default-case\n  switch (mechanism) {\n    case 'id_token_hint':\n      await checkIdTokenHint(ctx, () => {});\n      ({ payload: { sub: accountId } } = ctx.oidc.entities.IdTokenHint);\n      break;\n    case 'login_hint_token':\n      accountId = await ciba.processLoginHintToken(ctx, value);\n      break;\n    case 'login_hint':\n      accountId = await ciba.processLoginHint(ctx, value);\n      break;\n  }\n\n  if (!accountId) {\n    throw new UnknownUserId('could not identify end-user');\n  }\n  const account = await findAccount(ctx, accountId);\n  if (!account) {\n    throw new UnknownUserId('could not identify end-user');\n  }\n  ctx.oidc.entity('Account', account);\n\n  await ciba.verifyUserCode(ctx, account, value);\n\n  return next();\n}\n", "import { InvalidRequest } from '../../helpers/errors.js';\n\n/*\n * Validates the requested_expiry parameter\n */\nexport default function checkRequestedExpiry(ctx, next) {\n  if (ctx.oidc.params.requested_expiry !== undefined) {\n    const requestedExpiry = +ctx.oidc.params.requested_expiry;\n\n    if (!Number.isSafeInteger(requestedExpiry) || Math.sign(requestedExpiry) !== 1) {\n      throw new InvalidRequest('invalid requested_expiry parameter value');\n    }\n  }\n\n  return next();\n}\n", "import instance from '../../helpers/weak_cache.js';\n\nexport default async function backchannelRequestResponse(ctx) {\n  const { BackchannelAuthenticationRequest } = ctx.oidc.provider;\n  const { ciba } = instance(ctx.oidc.provider).features;\n\n  const request = new BackchannelAuthenticationRequest({\n    accountId: ctx.oidc.account.accountId,\n    claims: ctx.oidc.claims,\n    client: ctx.oidc.client,\n    nonce: ctx.oidc.params.nonce,\n    params: ctx.oidc.params.toPlainObject(),\n    resource: Object.keys(ctx.oidc.resourceServers),\n    scope: [...ctx.oidc.requestParamScopes].join(' '),\n  });\n\n  if (ctx.oidc.client.clientAuthMethod === 'attest_jwt_client_auth') {\n    await request.setAttestBinding(ctx);\n  }\n\n  // eslint-disable-next-line default-case\n  switch (request.resource.length) {\n    case 0:\n      delete request.resource;\n      break;\n    case 1:\n      [request.resource] = request.resource;\n      break;\n  }\n\n  ctx.oidc.entity('BackchannelAuthenticationRequest', request);\n\n  const id = await request.save();\n\n  ctx.body = {\n    expires_in: request.expiration,\n    auth_req_id: id,\n  };\n\n  await ciba.triggerAuthenticationDevice(ctx, request, ctx.oidc.account, ctx.oidc.client);\n}\n", "import instance from '../../helpers/weak_cache.js';\n\nexport default async function checkCibaContext(ctx, next) {\n  const { ciba } = instance(ctx.oidc.provider).features;\n\n  await Promise.all([\n    ciba.validateRequestContext(ctx, ctx.oidc.params.request_context),\n    ciba.validateBindingMessage(ctx, ctx.oidc.params.binding_message),\n  ]);\n\n  return next();\n}\n", "import { InvalidRequest } from '../../helpers/errors.js';\nimport dpopValidate, { CHALLENGE_OK_WINDOW } from '../../helpers/validate_dpop.js';\nimport epochTime from '../../helpers/epoch_time.js';\nimport instance from '../../helpers/weak_cache.js';\n\n/*\n * Validates dpop_jkt equals the used DPoP proof thumbprint\n * when provided, otherwise defaults dpop_jkt to it.\n */\nexport default async function checkDpopJkt(ctx, next) {\n  const { params } = ctx.oidc;\n\n  const dPoP = await dpopValidate(ctx);\n  if (dPoP) {\n    const { allowReplay } = instance(ctx.oidc.provider).features.dPoP;\n    if (!allowReplay) {\n      const { ReplayDetection } = ctx.oidc.provider;\n      const unique = await ReplayDetection.unique(\n        ctx.oidc.client.clientId,\n        dPoP.jti,\n        epochTime() + CHALLENGE_OK_WINDOW,\n      );\n\n      ctx.assert(unique, new InvalidRequest('DPoP proof JWT Replay detected'));\n    }\n\n    if (params.dpop_jkt && params.dpop_jkt !== dPoP.thumbprint) {\n      throw new InvalidRequest('DPoP proof key thumbprint does not match dpop_jkt');\n    } else if (!params.dpop_jkt) {\n      params.dpop_jkt = dPoP.thumbprint;\n    }\n  }\n\n  return next();\n}\n", "import instance from '../../helpers/weak_cache.js';\n\n/*\n * Executes registered extraParams validators.\n */\nexport default async function checkExtraParams(ctx, next) {\n  const { extraParamsValidations } = instance(ctx.oidc.provider).configuration;\n\n  if (!extraParamsValidations) {\n    return next();\n  }\n\n  for (const [param, validator] of extraParamsValidations) {\n    await validator(ctx, ctx.oidc.params[param], ctx.oidc.client);\n  }\n\n  return next();\n}\n", "import { InvalidRequest } from '../../helpers/errors.js';\n\nexport default async function unsupportedRar(ctx, next) {\n  if (ctx.oidc.params.authorization_details !== undefined) {\n    throw new InvalidRequest(`authorization_details is unsupported at the ${ctx.oidc.route}_endpoint`);\n  }\n\n  return next();\n}\n", "import noCache from '../../shared/no_cache.js';\nimport bodyParser from '../../shared/conditional_body.js';\nimport rejectDupes from '../../shared/reject_dupes.js';\nimport paramsMiddleware from '../../shared/assemble_params.js';\nimport sessionMiddleware from '../../shared/session.js';\nimport instance from '../../helpers/weak_cache.js';\nimport { PARAM_LIST } from '../../consts/index.js';\nimport checkRar from '../../shared/check_rar.js';\nimport checkResource from '../../shared/check_resource.js';\nimport getClientAuth from '../../shared/client_auth.js';\n\nimport checkClient from './check_client.js';\nimport checkResponseMode from './check_response_mode.js';\nimport rejectUnsupported from './reject_unsupported.js';\nimport rejectRegistration from './reject_registration.js';\nimport oauthRequired from './oauth_required.js';\nimport oneRedirectUriClients from './one_redirect_uri_clients.js';\nimport loadPushedAuthorizationRequest from './load_pushed_authorization_request.js';\nimport processRequestObject from './process_request_object.js';\nimport oidcRequired from './oidc_required.js';\nimport cibaRequired from './ciba_required.js';\nimport checkPrompt from './check_prompt.js';\nimport checkMaxAge from './check_max_age.js';\nimport checkIdTokenHint from './check_id_token_hint.js';\nimport checkScope from './check_scope.js';\nimport checkResponseType from './check_response_type.js';\nimport checkRedirectUri from './check_redirect_uri.js';\nimport assignDefaults from './assign_defaults.js';\nimport checkClaims from './check_claims.js';\nimport assignClaims from './assign_claims.js';\nimport loadAccount from './load_account.js';\nimport loadGrant from './load_grant.js';\nimport interactions from './interactions.js';\nimport respond from './respond.js';\nimport checkPKCE from './check_pkce.js';\nimport interactionEmit from './interaction_emit.js';\nimport getResume from './resume.js';\nimport checkClientGrantType from './check_client_grant_type.js';\nimport checkOpenidScope from './check_openid_scope.js';\nimport deviceAuthorizationResponse from './device_authorization_response.js';\nimport authenticatedClientId from './authenticated_client_id.js';\nimport deviceUserFlow from './device_user_flow.js';\nimport deviceUserFlowErrors from './device_user_flow_errors.js';\nimport deviceUserFlowResponse from './device_user_flow_response.js';\nimport pushedAuthorizationRequestRemapErrors from './pushed_authorization_request_remap_errors.js';\nimport backchannelRequestRemapErrors from './backchannel_request_remap_errors.js';\nimport stripOutsideJarParams from './strip_outside_jar_params.js';\nimport pushedAuthorizationRequestResponse from './pushed_authorization_request_response.js';\nimport cibaLoadAccount from './ciba_load_account.js';\nimport checkRequestedExpiry from './check_requested_expiry.js';\nimport backchannelRequestResponse from './backchannel_request_response.js';\nimport checkCibaContext from './check_ciba_context.js';\nimport checkDpopJkt from './check_dpop_jkt.js';\nimport checkExtraParams from './check_extra_params.js';\nimport unsupportedRar from './unsupported_rar.js';\n\nconst A = 'authorization';\nconst R = 'resume';\nconst DA = 'device_authorization';\nconst CV = 'code_verification';\nconst DR = 'device_resume';\nconst PAR = 'pushed_authorization_request';\nconst BA = 'backchannel_authentication';\n\nconst authRequired = new Set([DA, PAR, BA]);\n\nconst parseBody = bodyParser.bind(undefined, 'application/x-www-form-urlencoded');\n\nexport default function authorizationAction(provider, endpoint) {\n  const {\n    features: {\n      claimsParameter,\n      dPoP,\n      resourceIndicators,\n      richAuthorizationRequests,\n      webMessageResponseMode,\n    },\n    extraParams,\n  } = instance(provider).configuration;\n\n  const allowList = new Set(PARAM_LIST);\n\n  if (webMessageResponseMode.enabled) {\n    allowList.add('web_message_uri'); // adding it just so that it can be rejected when detected\n  }\n\n  if (claimsParameter.enabled) {\n    allowList.add('claims');\n  }\n\n  let rejectDupesMiddleware = rejectDupes.bind(undefined, {});\n  if (resourceIndicators.enabled) {\n    allowList.add('resource');\n    rejectDupesMiddleware = rejectDupes.bind(undefined, { except: new Set(['resource']) });\n  }\n\n  if (richAuthorizationRequests.enabled) {\n    allowList.add('authorization_details');\n  }\n\n  extraParams.forEach(Set.prototype.add.bind(allowList));\n\n  if ([DA, CV, DR, BA].includes(endpoint)) {\n    allowList.delete('web_message_uri');\n    allowList.delete('response_type');\n    allowList.delete('response_mode');\n    allowList.delete('code_challenge_method');\n    allowList.delete('code_challenge');\n    allowList.delete('state');\n    allowList.delete('redirect_uri');\n    allowList.delete('prompt');\n  }\n\n  if (endpoint === BA) {\n    allowList.add('client_notification_token');\n    allowList.add('login_hint_token');\n    allowList.add('binding_message');\n    allowList.add('user_code');\n    allowList.add('request_context');\n    allowList.add('requested_expiry');\n  }\n\n  if (dPoP && [A, R, PAR].includes(endpoint)) {\n    allowList.add('dpop_jkt');\n  }\n\n  const stack = [];\n\n  const use = (middleware, ...only) => {\n    if (only.includes(endpoint)) {\n      stack.push(middleware());\n    }\n  };\n  const returnTo = /^(code|device)_/.test(endpoint) ? 'device_resume' : 'resume';\n\n  /* eslint-disable no-multi-spaces, space-in-parens, function-paren-newline */\n  use(() => noCache,                                        A, DA, R, CV, DR, PAR, BA);\n  use(() => sessionMiddleware,                              A,     R,     DR         );\n  use(() => deviceUserFlowErrors,                                     CV, DR         );\n  use(() => getResume.bind(undefined, allowList, returnTo),        R,     DR         );\n  use(() => deviceUserFlow.bind(undefined, allowList),                CV, DR         );\n  use(() => parseBody,                                      A, DA,            PAR, BA);\n  if (authRequired.has(endpoint)) {\n    const { params: authParams, middleware: clientAuth } = getClientAuth(provider);\n    use(() => paramsMiddleware.bind(undefined, authParams),    DA,            PAR, BA);\n    for (const clientAuthMiddlware of clientAuth) {\n      use(() => clientAuthMiddlware,                           DA,            PAR, BA);\n    }\n  }\n  use(() => authenticatedClientId,                             DA,                 BA);\n  use(() => paramsMiddleware.bind(undefined, allowList),    A, DA,            PAR, BA);\n  use(() => rejectDupesMiddleware,                          A, DA,            PAR, BA);\n  use(() => rejectUnsupported,                              A, DA,            PAR, BA);\n  use(() => stripOutsideJarParams,                                            PAR, BA);\n  use(() => checkClient,                                    A, DA, R, CV, DR         );\n  use(() => checkClientGrantType,                              DA,                 BA);\n  use(() => pushedAuthorizationRequestRemapErrors,                            PAR    );\n  use(() => backchannelRequestRemapErrors,                                         BA);\n  use(() => loadPushedAuthorizationRequest,                 A                        );\n  use(() => processRequestObject.bind(\n    undefined, allowList, rejectDupesMiddleware,\n  ),                                                        A, DA,            PAR, BA);\n  use(() => checkResponseMode,                              A,                PAR    );\n  use(() => oneRedirectUriClients,                          A,                PAR    );\n  use(() => oauthRequired,                                  A,                PAR    );\n  use(() => rejectRegistration,                             A, DA,            PAR, BA);\n  use(() => checkResponseType,                              A,                PAR    );\n  use(() => oidcRequired,                                   A,                PAR    );\n  use(() => cibaRequired,                                                          BA);\n  use(() => assignDefaults,                                 A, DA,                 BA);\n  use(() => checkPrompt,                                    A,                PAR    );\n  use(() => checkScope.bind(undefined, allowList),          A, DA,            PAR, BA);\n  use(() => checkOpenidScope.bind(undefined, allowList),    A, DA,            PAR, BA);\n  use(() => checkRedirectUri,                               A,                PAR    );\n  use(() => checkPKCE,                                      A,                PAR    );\n  use(() => checkClaims,                                    A, DA,            PAR, BA);\n  use(() => unsupportedRar,                                    DA                    );\n  use(() => checkRar,                                       A,                PAR, BA);\n  use(() => checkResource,                                  A, DA, R, CV, DR, PAR, BA);\n  use(() => checkMaxAge,                                    A, DA,            PAR, BA);\n  use(() => checkRequestedExpiry,                                                  BA);\n  use(() => checkCibaContext,                                                      BA);\n  use(() => checkIdTokenHint,                               A, DA,            PAR    );\n  use(() => checkDpopJkt,                                                     PAR    );\n  use(() => checkExtraParams,                               A, DA,            PAR, BA);\n  use(() => interactionEmit,                                     A,     R, CV, DR    );\n  use(() => assignClaims,                                   A,     R, CV, DR,      BA);\n  use(() => cibaLoadAccount,                                                       BA);\n  use(() => loadAccount,                                    A,     R, CV, DR         );\n  use(() => loadGrant,                                      A,     R, CV, DR         );\n  use(() => interactions.bind(undefined, returnTo),         A,     R, CV, DR         );\n  use(() => respond,                                        A,     R                 );\n  use(() => deviceAuthorizationResponse,                       DA                    );\n  use(() => deviceUserFlowResponse,                                   CV, DR         );\n  use(() => pushedAuthorizationRequestResponse,                               PAR    );\n  use(() => backchannelRequestResponse,                                            BA);\n  /* eslint-enable no-multi-spaces, space-in-parens, function-paren-newline */\n\n  return stack;\n}\n", "import difference from '../helpers/_/difference.js';\nimport appendWWWAuthenticate from '../helpers/append_www_authenticate.js';\nimport bodyParser from '../shared/conditional_body.js';\nimport rejectDupes from '../shared/reject_dupes.js';\nimport paramsMiddleware from '../shared/assemble_params.js';\nimport noCache from '../shared/no_cache.js';\nimport certificateThumbprint from '../helpers/certificate_thumbprint.js';\nimport instance from '../helpers/weak_cache.js';\nimport filterClaims from '../helpers/filter_claims.js';\nimport dpopValidate, { CHALLENGE_OK_WINDOW } from '../helpers/validate_dpop.js';\nimport epochTime from '../helpers/epoch_time.js';\nimport {\n  InvalidToken, InsufficientScope, InvalidDpopProof, UseDpopNonce,\n} from '../helpers/errors.js';\nimport getCtxAccountClaims from '../helpers/account_claims.js';\n\nconst PARAM_LIST = new Set([\n  'scope',\n  'access_token',\n]);\n\nconst parseBody = bodyParser.bind(undefined, 'application/x-www-form-urlencoded');\n\nexport default [\n  noCache,\n\n  async function setWWWAuthenticateHeader(ctx, next) {\n    try {\n      await next();\n    } catch (err) {\n      if (err.expose) {\n        const { dPoP } = instance(ctx.oidc.provider).features;\n        if (err.error_description === 'no access token provided') {\n          appendWWWAuthenticate(ctx, 'Bearer', {\n            realm: ctx.oidc.issuer,\n            scope: err.scope,\n          });\n          if (dPoP.enabled) {\n            appendWWWAuthenticate(ctx, 'DPoP', {\n              realm: ctx.oidc.issuer,\n              scope: err.scope,\n              algs: instance(ctx.oidc.provider).configuration.dPoPSigningAlgValues.join(' '),\n            });\n          }\n        } else {\n          let scheme;\n\n          if (/dpop/i.test(err.error_description) || ctx.oidc.accessToken?.jkt || (dPoP.enabled && ctx.get('DPoP'))) {\n            scheme = 'DPoP';\n          } else {\n            scheme = 'Bearer';\n          }\n\n          if (err instanceof InvalidDpopProof || err instanceof UseDpopNonce) {\n            // eslint-disable-next-line no-multi-assign\n            err.status = err.statusCode = 401;\n          }\n\n          appendWWWAuthenticate(ctx, scheme, {\n            realm: ctx.oidc.issuer,\n            error: err.message,\n            error_description: err.error_description,\n            scope: err.scope,\n            ...(scheme === 'DPoP' ? {\n              algs: instance(ctx.oidc.provider).configuration.dPoPSigningAlgValues.join(' '),\n            } : undefined),\n          });\n        }\n      }\n      throw err;\n    }\n  },\n\n  parseBody,\n  paramsMiddleware.bind(undefined, PARAM_LIST),\n  rejectDupes.bind(undefined, {}),\n\n  async function validateAccessToken(ctx, next) {\n    const accessTokenValue = ctx.oidc.getAccessToken({ acceptDPoP: true });\n\n    const dPoP = await dpopValidate(ctx, accessTokenValue);\n\n    const accessToken = await ctx.oidc.provider.AccessToken.find(accessTokenValue);\n\n    ctx.assert(accessToken, new InvalidToken('access token not found'));\n\n    ctx.oidc.entity('AccessToken', accessToken);\n\n    const { scopes } = accessToken;\n    if (!scopes.size || !scopes.has('openid')) {\n      throw new InsufficientScope('access token missing openid scope', 'openid');\n    }\n\n    if (accessToken['x5t#S256']) {\n      const { getCertificate } = instance(ctx.oidc.provider).features.mTLS;\n      const cert = getCertificate(ctx);\n      if (!cert || accessToken['x5t#S256'] !== certificateThumbprint(cert)) {\n        throw new InvalidToken('failed x5t#S256 verification');\n      }\n    }\n\n    if (dPoP) {\n      const { allowReplay } = instance(ctx.oidc.provider).features.dPoP;\n\n      if (!allowReplay) {\n        const unique = await ctx.oidc.provider.ReplayDetection.unique(\n          accessToken.clientId,\n          dPoP.jti,\n          epochTime() + CHALLENGE_OK_WINDOW,\n        );\n\n        ctx.assert(unique, new InvalidToken('DPoP proof JWT Replay detected'));\n      }\n\n      if (!accessToken.jkt) {\n        throw new InvalidToken('access token is not sender-constrained but proof of possession was provided');\n      }\n    }\n\n    if (accessToken.jkt && (!dPoP || accessToken.jkt !== dPoP.thumbprint)) {\n      throw new InvalidToken('failed jkt verification');\n    }\n\n    await next();\n  },\n\n  function validateAudience(ctx, next) {\n    const { oidc: { entities: { AccessToken: accessToken } } } = ctx;\n\n    if (accessToken.aud !== undefined) {\n      throw new InvalidToken('token audience prevents accessing the userinfo endpoint');\n    }\n\n    return next();\n  },\n\n  async function validateScope(ctx, next) {\n    if (ctx.oidc.params.scope) {\n      const missing = difference(ctx.oidc.params.scope.split(' '), [...ctx.oidc.accessToken.scopes]);\n\n      if (missing.length !== 0) {\n        throw new InsufficientScope('access token missing requested scope', missing.join(' '));\n      }\n    }\n    await next();\n  },\n\n  async function loadClient(ctx, next) {\n    const client = await ctx.oidc.provider.Client.find(ctx.oidc.accessToken.clientId);\n    ctx.assert(client, new InvalidToken('associated client not found'));\n\n    ctx.oidc.entity('Client', client);\n\n    await next();\n  },\n\n  async function loadAccount(ctx, next) {\n    const account = await instance(ctx.oidc.provider).configuration.findAccount(\n      ctx,\n      ctx.oidc.accessToken.accountId,\n      ctx.oidc.accessToken,\n    );\n\n    ctx.assert(account, new InvalidToken('associated account not found'));\n    ctx.oidc.entity('Account', account);\n\n    await next();\n  },\n\n  async function loadGrant(ctx, next) {\n    const grant = await ctx.oidc.provider.Grant.find(ctx.oidc.accessToken.grantId, {\n      ignoreExpiration: true,\n    });\n\n    if (!grant) {\n      throw new InvalidToken('grant not found');\n    }\n\n    if (grant.isExpired) {\n      throw new InvalidToken('grant is expired');\n    }\n\n    if (grant.clientId !== ctx.oidc.accessToken.clientId) {\n      throw new InvalidToken('clientId mismatch');\n    }\n\n    if (grant.accountId !== ctx.oidc.accessToken.accountId) {\n      throw new InvalidToken('accountId mismatch');\n    }\n\n    ctx.oidc.entity('Grant', grant);\n\n    await next();\n  },\n\n  async function respond(ctx) {\n    const claims = filterClaims(ctx.oidc.accessToken.claims, 'userinfo', ctx.oidc.grant);\n    const rejected = ctx.oidc.grant.getRejectedOIDCClaims();\n    const scope = ctx.oidc.grant.getOIDCScopeFiltered(new Set((ctx.oidc.params.scope || ctx.oidc.accessToken.scope).split(' ')));\n    const { client } = ctx.oidc;\n\n    if (client.userinfoSignedResponseAlg || client.userinfoEncryptedResponseAlg) {\n      const token = new ctx.oidc.provider.IdToken(\n        await getCtxAccountClaims(ctx, 'userinfo', scope, claims, rejected),\n        { ctx },\n      );\n\n      token.scope = scope;\n      token.mask = claims;\n      token.rejected = rejected;\n\n      ctx.body = await token.issue({\n        expiresAt: ctx.oidc.accessToken.exp,\n        use: 'userinfo',\n      });\n      ctx.type = 'application/jwt; charset=utf-8';\n    } else {\n      const mask = new ctx.oidc.provider.Claims(\n        await getCtxAccountClaims(ctx, 'userinfo', scope, claims, rejected),\n        { ctx },\n      );\n\n      mask.scope(scope);\n      mask.mask(claims);\n      mask.rejected(rejected);\n\n      ctx.body = await mask.result();\n    }\n  },\n];\n", "import presence from '../helpers/validate_presence.js';\nimport instance from '../helpers/weak_cache.js';\nimport { UnsupportedGrantType, InvalidRequest } from '../helpers/errors.js';\nimport noCache from '../shared/no_cache.js';\nimport getClientAuth from '../shared/client_auth.js';\nimport { urlencoded as parseBody } from '../shared/selective_body.js';\nimport rejectDupes from '../shared/reject_dupes.js';\nimport paramsMiddleware from '../shared/assemble_params.js';\n\nconst grantTypeSet = new Set(['grant_type']);\n\nexport default function tokenAction(provider) {\n  const { params: authParams, middleware: clientAuth } = getClientAuth(provider);\n  const { grantTypeParams } = instance(provider);\n\n  return [\n    noCache,\n    parseBody,\n    paramsMiddleware.bind(undefined, grantTypeParams.get(undefined)),\n    ...clientAuth,\n\n    rejectDupes.bind(undefined, { only: grantTypeSet }),\n\n    async function stripGrantIrrelevantParams(ctx, next) {\n      const grantParams = grantTypeParams.get(ctx.oidc.params.grant_type);\n      if (grantParams) {\n        Object.keys(ctx.oidc.params).forEach((key) => {\n          if (!(authParams.has(key) || grantParams.has(key))) {\n            delete ctx.oidc.params[key];\n          }\n        });\n      }\n      await next();\n    },\n\n    async function supportedGrantTypeCheck(ctx, next) {\n      presence(ctx, 'grant_type');\n\n      const supported = instance(provider).configuration.grantTypes;\n\n      if (!supported.has(ctx.oidc.params.grant_type) || ctx.oidc.params.grant_type === 'implicit') {\n        throw new UnsupportedGrantType();\n      }\n\n      await next();\n    },\n\n    async function allowedGrantTypeCheck(ctx, next) {\n      if (!ctx.oidc.client.grantTypeAllowed(ctx.oidc.params.grant_type)) {\n        throw new InvalidRequest('requested grant type is not allowed for this client');\n      }\n\n      await next();\n    },\n\n    async function rejectDupesOptionalExcept(ctx, next) {\n      const { grantTypeDupes } = instance(provider);\n      const grantType = ctx.oidc.params.grant_type;\n      if (grantTypeDupes.has(grantType)) {\n        return rejectDupes({ except: grantTypeDupes.get(grantType) }, ctx, next);\n      }\n      return rejectDupes({}, ctx, next);\n    },\n\n    async function callTokenHandler(ctx) {\n      const grantType = ctx.oidc.params.grant_type;\n\n      const { grantTypeHandlers } = instance(provider);\n\n      await grantTypeHandlers.get(grantType)(ctx);\n      provider.emit('grant.success', ctx);\n    },\n  ];\n}\n", "import instance from '../helpers/weak_cache.js';\n\nexport default function renderJWKS(ctx) {\n  const { keys } = instance(ctx.oidc.provider).jwks;\n  ctx.body = { keys };\n  ctx.type = 'application/jwk-set+json; charset=utf-8';\n}\n", "import omitBy from '../helpers/_/omit_by.js';\nimport constantEquals from '../helpers/constant_equals.js';\nimport noCache from '../shared/no_cache.js';\nimport { json as parseBody } from '../shared/selective_body.js';\nimport epochTime from '../helpers/epoch_time.js';\nimport { InvalidToken, InvalidRequest } from '../helpers/errors.js';\nimport instance from '../helpers/weak_cache.js';\nimport appendWWWAuthenticate from '../helpers/append_www_authenticate.js';\nimport addClient from '../helpers/add_client.js';\n\nconst FORBIDDEN = [\n  'registration_access_token',\n  'registration_client_uri',\n  'client_secret_expires_at',\n  'client_id_issued_at',\n];\n\nasync function validateRegistrationAccessToken(ctx, next) {\n  try {\n    const regAccessToken = await ctx.oidc.provider.RegistrationAccessToken.find(\n      ctx.oidc.getAccessToken(),\n    );\n    ctx.assert(regAccessToken, new InvalidToken('registration access token not found'));\n\n    const client = await ctx.oidc.provider.Client.find(ctx.params.clientId);\n\n    if (client?.clientId !== regAccessToken.clientId) {\n      await regAccessToken.destroy();\n      throw new InvalidToken('client mismatch');\n    }\n\n    ctx.oidc.entity('Client', client);\n    ctx.oidc.entity('RegistrationAccessToken', regAccessToken);\n  } catch (err) {\n    if (err.expose) {\n      if (err.error_description === 'no access token provided') {\n        appendWWWAuthenticate(ctx, 'Bearer', {\n          realm: ctx.oidc.issuer,\n          scope: err.scope,\n        });\n      } else {\n        appendWWWAuthenticate(ctx, 'Bearer', {\n          realm: ctx.oidc.issuer,\n          error: err.message,\n          error_description: err.error_description,\n        });\n      }\n    }\n    throw err;\n  }\n\n  await next();\n}\n\nexport const post = [\n  noCache,\n  parseBody,\n  async function validateInitialAccessToken(ctx, next) {\n    try {\n      const { oidc: { provider } } = ctx;\n      const { initialAccessToken } = instance(provider).features.registration;\n      switch (initialAccessToken && typeof initialAccessToken) {\n        case 'boolean': {\n          const iat = await provider.InitialAccessToken.find(ctx.oidc.getAccessToken());\n          ctx.assert(iat, new InvalidToken('initial access token not found'));\n          ctx.oidc.entity('InitialAccessToken', iat);\n          break;\n        }\n        case 'string': {\n          const valid = constantEquals(\n            initialAccessToken,\n            ctx.oidc.getAccessToken(),\n            1000,\n          );\n          ctx.assert(valid, new InvalidToken('invalid initial access token value'));\n          break;\n        }\n        default:\n      }\n    } catch (err) {\n      if (err.expose) {\n        if (err.error_description === 'no access token provided') {\n          appendWWWAuthenticate(ctx, 'Bearer', {\n            realm: ctx.oidc.issuer,\n            scope: err.scope,\n          });\n        } else {\n          appendWWWAuthenticate(ctx, 'Bearer', {\n            realm: ctx.oidc.issuer,\n            error: err.message,\n            error_description: err.error_description,\n          });\n        }\n      }\n      throw err;\n    }\n\n    await next();\n  },\n  async function registrationResponse(ctx) {\n    const { oidc: { provider } } = ctx;\n    const {\n      idFactory, secretFactory, issueRegistrationAccessToken,\n    } = instance(provider).features.registration;\n    const properties = {};\n    const clientId = idFactory(ctx);\n\n    let rat;\n\n    if (\n      issueRegistrationAccessToken === true\n      || (typeof issueRegistrationAccessToken === 'function' && issueRegistrationAccessToken(ctx))\n    ) {\n      rat = new provider.RegistrationAccessToken({ clientId });\n      ctx.oidc.entity('RegistrationAccessToken', rat);\n    }\n\n    Object.assign(properties, ctx.oidc.body, {\n      client_id: clientId,\n      client_id_issued_at: epochTime(),\n    });\n\n    const { Client } = provider;\n    const secretRequired = Client.needsSecret(properties);\n\n    if (secretRequired) {\n      Object.assign(properties, {\n        client_secret: await secretFactory(ctx),\n        client_secret_expires_at: 0,\n      });\n    } else {\n      delete properties.client_secret;\n      delete properties.client_secret_expires_at;\n    }\n\n    if (\n      ctx.oidc.entities.InitialAccessToken?.policies\n    ) {\n      const { policies } = ctx.oidc.entities.InitialAccessToken;\n      const implementations = instance(provider).features.registration.policies;\n      for (const policy of policies) {\n        await implementations[policy](ctx, properties);\n      }\n\n      if (rat && !('policies' in rat)) {\n        rat.policies = policies;\n      }\n    }\n\n    const client = await addClient(provider, properties, { store: true, ctx });\n    ctx.oidc.entity('Client', client);\n\n    ctx.body = client.metadata();\n\n    if (rat) {\n      Object.assign(ctx.body, {\n        registration_client_uri: ctx.oidc.urlFor('client', {\n          clientId: properties.client_id,\n        }),\n        registration_access_token: await rat.save(),\n      });\n    }\n\n    ctx.status = 201;\n\n    provider.emit('registration_create.success', ctx, client);\n  },\n];\n\nexport const get = [\n  noCache,\n  validateRegistrationAccessToken,\n\n  async function clientReadResponse(ctx) {\n    if (ctx.oidc.client.noManage) {\n      throw new InvalidRequest('client does not have permission to read its record', 403);\n    }\n\n    ctx.body = ctx.oidc.client.metadata();\n\n    Object.assign(ctx.body, {\n      registration_access_token: ctx.oidc.getAccessToken(),\n      registration_client_uri: ctx.oidc.urlFor('client', {\n        clientId: ctx.params.clientId,\n      }),\n    });\n  },\n];\n\nexport const put = [\n  noCache,\n  validateRegistrationAccessToken,\n  parseBody,\n\n  async function forbiddenFields(ctx, next) {\n    const hit = FORBIDDEN.find((field) => ctx.oidc.body[field] !== undefined);\n    ctx.assert(!hit, new InvalidRequest(`request MUST NOT include the ${hit} field`));\n    await next();\n  },\n\n  async function equalChecks(ctx, next) {\n    ctx.assert(ctx.oidc.body.client_id === ctx.oidc.client.clientId, new InvalidRequest('provided client_id does not match the authenticated client\\'s one'));\n\n    if ('client_secret' in ctx.oidc.body) {\n      const clientSecretValid = constantEquals(\n        typeof ctx.oidc.body.client_secret === 'string' ? ctx.oidc.body.client_secret : '',\n        ctx.oidc.client.clientSecret || '',\n        1000,\n      );\n\n      ctx.assert(clientSecretValid, new InvalidRequest('provided client_secret does not match the authenticated client\\'s one'));\n    }\n\n    await next();\n  },\n\n  async function clientUpdateResponse(ctx) {\n    if (ctx.oidc.client.noManage) {\n      throw new InvalidRequest('client does not have permission to update its record', 403);\n    }\n\n    const properties = omitBy({\n      client_id: ctx.oidc.client.clientId,\n      client_id_issued_at: ctx.oidc.client.clientIdIssuedAt,\n      ...ctx.oidc.body,\n    }, (value) => value === null || value === '');\n\n    const { oidc: { provider } } = ctx;\n    const { secretFactory } = instance(provider).features.registration;\n\n    const secretRequired = !ctx.oidc.client.clientSecret\n      && provider.Client.needsSecret(properties);\n\n    if (secretRequired) {\n      Object.assign(properties, {\n        client_secret: await secretFactory(ctx),\n        client_secret_expires_at: 0,\n      });\n    } else {\n      Object.assign(properties, {\n        client_secret: ctx.oidc.client.clientSecret,\n        client_secret_expires_at: ctx.oidc.client.clientSecretExpiresAt,\n      });\n    }\n\n    if (ctx.oidc.entities.RegistrationAccessToken.policies) {\n      const { policies } = ctx.oidc.entities.RegistrationAccessToken;\n      const implementations = instance(provider).features.registration.policies;\n      for (const policy of policies) {\n        await implementations[policy](ctx, properties);\n      }\n    }\n\n    const client = await addClient(provider, properties, { store: true, ctx });\n\n    ctx.body = client.metadata();\n\n    Object.assign(ctx.body, {\n      registration_access_token: ctx.oidc.getAccessToken(),\n      registration_client_uri: ctx.oidc.urlFor('client', {\n        clientId: ctx.params.clientId,\n      }),\n    });\n\n    const management = instance(provider).features.registrationManagement;\n    if (\n      management.rotateRegistrationAccessToken === true\n      || (typeof management.rotateRegistrationAccessToken === 'function' && await management.rotateRegistrationAccessToken(ctx))\n    ) {\n      ctx.oidc.entity('RotatedRegistrationAccessToken', ctx.oidc.entities.RegistrationAccessToken);\n      const rat = new provider.RegistrationAccessToken({\n        client: ctx.oidc.client,\n        policies: ctx.oidc.entities.RegistrationAccessToken.policies,\n      });\n\n      await ctx.oidc.registrationAccessToken.destroy();\n\n      ctx.oidc.entity('RegistrationAccessToken', rat);\n      ctx.body.registration_access_token = await rat.save();\n    }\n\n    provider.emit('registration_update.success', ctx, ctx.oidc.client);\n  },\n];\n\nexport const del = [\n  noCache,\n  validateRegistrationAccessToken,\n\n  async function clientRemoveResponse(ctx) {\n    if (ctx.oidc.client.noManage) {\n      throw new InvalidRequest('client does not have permission to delete its record', 403);\n    }\n\n    const { oidc: { provider } } = ctx;\n\n    await provider.Client.adapter.destroy(ctx.oidc.client.clientId);\n    await ctx.oidc.entities.RegistrationAccessToken.destroy();\n\n    ctx.status = 204;\n\n    provider.emit('registration_delete.success', ctx, ctx.oidc.client);\n  },\n];\n", "import { STATUS_CODES } from 'node:http';\n\nimport instance from './weak_cache.js';\nimport { InvalidClientMetadata } from './errors.js';\n\nexport default async function sectorValidate(provider, client) {\n  if (!instance(provider).configuration.sectorIdentifierUriValidate(client)) {\n    return;\n  }\n\n  /**\n   * @type typeof fetch\n   */\n  const request = instance(provider).configuration.fetch;\n  const response = await request(new URL(client.sectorIdentifierUri).href, {\n    method: 'GET',\n    headers: {\n      accept: 'application/json',\n    },\n  }).catch((err) => {\n    throw new InvalidClientMetadata('could not load sector_identifier_uri response', err.message);\n  });\n\n  if (response.status !== 200) {\n    throw new InvalidClientMetadata(`unexpected sector_identifier_uri response status code, expected 200 OK, got ${response.status} ${STATUS_CODES[response.status]}`);\n  }\n\n  let body;\n  try {\n    body = await response.json();\n  } catch (err) {\n    throw new InvalidClientMetadata('failed to parse sector_identifier_uri JSON response', err.message);\n  }\n\n  try {\n    if (!Array.isArray(body)) throw new Error('sector_identifier_uri must return single JSON array');\n    if (client.responseTypes.length) {\n      const match = client.redirectUris.every((uri) => body.includes(uri));\n      if (!match) throw new Error('all registered redirect_uris must be included in the sector_identifier_uri response');\n    }\n\n    if (\n      client.grantTypes.includes('urn:openid:params:grant-type:ciba')\n      || client.grantTypes.includes('urn:ietf:params:oauth:grant-type:device_code')\n    ) {\n      if (!body.includes(client.jwksUri)) throw new Error(\"client's jwks_uri must be included in the sector_identifier_uri response\");\n    }\n  } catch (err) {\n    throw new InvalidClientMetadata(err.message);\n  }\n}\n", "import sectorValidate from './sector_validate.js';\n\nexport default async function add(provider, metadata, { ctx, store = false } = {}) {\n  const client = new provider.Client(metadata, ctx); // eslint-disable-line no-use-before-define\n\n  if (client.sectorIdentifierUri !== undefined) {\n    await sectorValidate(provider, client);\n  }\n\n  if (store) {\n    await provider.Client.adapter.upsert(client.clientId, client.metadata());\n  }\n  return client;\n}\n", "import { decodeProtectedHeader } from 'jose';\n\nimport { UnsupportedTokenType } from '../helpers/errors.js';\n\nexport default async function rejectStructuredTokens(ctx, next) {\n  const { params } = ctx.oidc;\n\n  let tokenIsJWT;\n  try {\n    tokenIsJWT = !!decodeProtectedHeader(params.token);\n  } catch {}\n\n  if (tokenIsJWT) {\n    throw new UnsupportedTokenType(`Structured JWT Tokens cannot be ${ctx.oidc.route === 'revocation' ? 'revoked' : 'introspected'} via the ${ctx.oidc.route}_endpoint`);\n  }\n\n  return next();\n}\n", "import presence from '../helpers/validate_presence.js';\nimport instance from '../helpers/weak_cache.js';\nimport getClientAuth from '../shared/client_auth.js';\nimport { urlencoded as parseBody } from '../shared/selective_body.js';\nimport rejectDupes from '../shared/reject_dupes.js';\nimport paramsMiddleware from '../shared/assemble_params.js';\nimport rejectStructuredTokens from '../shared/reject_structured_tokens.js';\nimport revoke from '../helpers/revoke.js';\nimport { checkAttestBinding } from '../helpers/check_attest_binding.js';\n\nconst revokeable = new Set(['AccessToken', 'ClientCredentials', 'RefreshToken']);\n\nexport default function revocationAction(provider) {\n  const { params: authParams, middleware: clientAuth } = getClientAuth(provider);\n  const PARAM_LIST = new Set(['token', 'token_type_hint', ...authParams]);\n  const { grantTypeHandlers, configuration } = instance(provider);\n  const {\n    features: {\n      revocation: { allowedPolicy },\n    },\n  } = configuration;\n\n  function getAccessToken(token) {\n    return provider.AccessToken.find(token);\n  }\n\n  function getClientCredentials(token) {\n    if (!grantTypeHandlers.has('client_credentials')) {\n      return undefined;\n    }\n    return provider.ClientCredentials.find(token);\n  }\n\n  function getRefreshToken(token) {\n    if (!grantTypeHandlers.has('refresh_token')) {\n      return undefined;\n    }\n    return provider.RefreshToken.find(token);\n  }\n\n  function findResult(results) {\n    return results.find((found) => !!found);\n  }\n\n  return [\n    parseBody,\n    paramsMiddleware.bind(undefined, PARAM_LIST),\n    ...clientAuth,\n    rejectDupes.bind(undefined, {}),\n\n    async function validateTokenPresence(ctx, next) {\n      presence(ctx, 'token');\n      await next();\n    },\n\n    rejectStructuredTokens,\n\n    async function renderTokenResponse(ctx, next) {\n      ctx.status = 200;\n      ctx.body = '';\n      await next();\n    },\n\n    async function revokeToken(ctx) {\n      const { params } = ctx.oidc;\n\n      let token;\n      switch (params.token_type_hint) {\n        case 'access_token':\n        case 'urn:ietf:params:oauth:token-type:access_token':\n          token = await Promise.all([\n            getAccessToken(params.token),\n            getClientCredentials(params.token),\n          ])\n            .then(findResult)\n            .then((result) => result || getRefreshToken(params.token));\n          break;\n        case 'refresh_token':\n        case 'urn:ietf:params:oauth:token-type:refresh_token':\n          token = await getRefreshToken(params.token)\n            .then((result) => result || Promise.all([\n              getAccessToken(params.token),\n              getClientCredentials(params.token),\n            ]).then(findResult));\n          break;\n        default:\n          token = await Promise.all([\n            getAccessToken(params.token),\n            getClientCredentials(params.token),\n            getRefreshToken(params.token),\n          ]).then(findResult);\n      }\n\n      if (!token) return;\n\n      if (revokeable.has(token.kind)) {\n        ctx.oidc.entity(token.kind, token);\n      } else {\n        return;\n      }\n\n      if (\n        token.kind === 'RefreshToken'\n        && ctx.oidc.client.clientId === token.clientId\n        && ctx.oidc.client.clientAuthMethod === 'attest_jwt_client_auth'\n      ) {\n        try {\n          await checkAttestBinding(ctx, token);\n        } catch {\n          return;\n        }\n      }\n\n      if (!(await allowedPolicy(ctx, ctx.oidc.client, token))) {\n        return;\n      }\n\n      await token.destroy();\n\n      if (token.kind === 'RefreshToken' || token.kind === 'AccessToken') {\n        await revoke(ctx, token.grantId);\n      }\n    },\n  ];\n}\n", "import presence from '../helpers/validate_presence.js';\nimport getClientAuth from '../shared/client_auth.js';\nimport noCache from '../shared/no_cache.js';\nimport instance from '../helpers/weak_cache.js';\nimport { urlencoded as parseBody } from '../shared/selective_body.js';\nimport rejectDupes from '../shared/reject_dupes.js';\nimport paramsMiddleware from '../shared/assemble_params.js';\nimport { InvalidRequest } from '../helpers/errors.js';\nimport rejectStructuredTokens from '../shared/reject_structured_tokens.js';\nimport { checkAttestBinding } from '../helpers/check_attest_binding.js';\n\nconst introspectable = new Set(['AccessToken', 'ClientCredentials', 'RefreshToken']);\nconst JWT = 'application/token-introspection+jwt';\n\nexport default function introspectionAction(provider) {\n  const { params: authParams, middleware: clientAuth } = getClientAuth(provider);\n  const PARAM_LIST = new Set(['token', 'token_type_hint', ...authParams]);\n  const { configuration } = instance(provider);\n  const {\n    pairwiseIdentifier,\n    features: {\n      introspection: { allowedPolicy },\n      jwtIntrospection,\n      richAuthorizationRequests,\n    },\n  } = configuration;\n  const { grantTypeHandlers } = instance(provider);\n  const {\n    IdToken, AccessToken, ClientCredentials, RefreshToken, Client,\n  } = provider;\n\n  function getAccessToken(token) {\n    return AccessToken.find(token);\n  }\n\n  function getClientCredentials(token) {\n    if (!grantTypeHandlers.has('client_credentials')) {\n      return undefined;\n    }\n    return ClientCredentials.find(token);\n  }\n\n  function getRefreshToken(token) {\n    if (!grantTypeHandlers.has('refresh_token')) {\n      return undefined;\n    }\n    return RefreshToken.find(token);\n  }\n\n  function findResult(results) {\n    return results.find((found) => !!found);\n  }\n\n  return [\n    noCache,\n    parseBody,\n    paramsMiddleware.bind(undefined, PARAM_LIST),\n    ...clientAuth,\n    rejectDupes.bind(undefined, {}),\n\n    async function validateTokenPresence(ctx, next) {\n      presence(ctx, 'token');\n      await next();\n    },\n\n    rejectStructuredTokens,\n\n    async function jwtIntrospectionResponse(ctx, next) {\n      if (jwtIntrospection.enabled) {\n        const { client } = ctx.oidc;\n\n        const {\n          introspectionEncryptedResponseAlg: encrypt,\n          introspectionSignedResponseAlg: sign,\n        } = client;\n\n        const accepts = ctx.accepts('json', JWT);\n        if (encrypt && accepts !== JWT) {\n          throw new InvalidRequest(`introspection must be requested with Accept: ${JWT} for this client`);\n        }\n\n        await next();\n\n        if ((encrypt || sign) && accepts === JWT) {\n          const token = new IdToken({}, { ctx });\n          token.extra = {\n            token_introspection: ctx.body,\n            aud: ctx.body.aud,\n          };\n\n          ctx.body = await token.issue({ use: 'introspection' });\n          ctx.type = 'application/token-introspection+jwt; charset=utf-8';\n        }\n      } else {\n        await next();\n      }\n    },\n\n    async function renderTokenResponse(ctx) {\n      const { params } = ctx.oidc;\n\n      ctx.body = { active: false };\n\n      let token;\n      switch (params.token_type_hint) {\n        case 'access_token':\n        case 'urn:ietf:params:oauth:token-type:access_token':\n          token = await Promise.all([\n            getAccessToken(params.token),\n            getClientCredentials(params.token),\n          ])\n            .then(findResult)\n            .then((result) => result || getRefreshToken(params.token));\n          break;\n        case 'refresh_token':\n        case 'urn:ietf:params:oauth:token-type:refresh_token':\n          token = await getRefreshToken(params.token)\n            .then((result) => result || Promise.all([\n              getAccessToken(params.token),\n              getClientCredentials(params.token),\n            ]).then(findResult));\n          break;\n        default:\n          token = await Promise.all([\n            getAccessToken(params.token),\n            getClientCredentials(params.token),\n            getRefreshToken(params.token),\n          ]).then(findResult);\n      }\n\n      if (!token?.isValid) {\n        return;\n      }\n\n      if (token.grantId) {\n        const grant = await ctx.oidc.provider.Grant.find(token.grantId, {\n          ignoreExpiration: true,\n        });\n\n        if (!grant) return;\n        if (grant.isExpired) return;\n        if (grant.clientId !== token.clientId) return;\n        if (grant.accountId !== token.accountId) return;\n\n        ctx.oidc.entity('Grant', grant);\n      }\n\n      if (introspectable.has(token.kind)) {\n        ctx.oidc.entity(token.kind, token);\n      } else {\n        return;\n      }\n\n      if (\n        token.kind === 'RefreshToken'\n        && ctx.oidc.client.clientId === token.clientId\n        && ctx.oidc.client.clientAuthMethod === 'attest_jwt_client_auth'\n      ) {\n        try {\n          await checkAttestBinding(ctx, token);\n        } catch {\n          return;\n        }\n      }\n\n      if (!(await allowedPolicy(ctx, ctx.oidc.client, token))) {\n        return;\n      }\n\n      if (token.accountId) {\n        ctx.body.sub = token.accountId;\n        if (token.clientId !== ctx.oidc.client.clientId) {\n          const client = await Client.find(token.clientId);\n          if (client.subjectType === 'pairwise') {\n            ctx.body.sub = await pairwiseIdentifier(ctx, ctx.body.sub, client);\n          }\n        } else if (ctx.oidc.client.subjectType === 'pairwise') {\n          ctx.body.sub = await pairwiseIdentifier(ctx, ctx.body.sub, ctx.oidc.client);\n        }\n      }\n\n      Object.assign(ctx.body, {\n        ...token.extra,\n        active: true,\n        client_id: token.clientId,\n        exp: token.exp,\n        iat: token.iat,\n        sid: token.sid,\n        iss: provider.issuer,\n        jti: token.jti !== params.token ? token.jti : undefined,\n        aud: token.aud,\n        authorization_details: token.rar\n          ? await richAuthorizationRequests.rarForIntrospectionResponse(ctx, token) : undefined,\n        scope: token.scope || undefined,\n        cnf: token.isSenderConstrained() ? {} : undefined,\n        token_type: token.kind !== 'RefreshToken' ? token.tokenType : undefined,\n      });\n\n      if (token['x5t#S256']) {\n        ctx.body.cnf['x5t#S256'] = token['x5t#S256'];\n      }\n\n      if (token.jkt) {\n        ctx.body.cnf.jkt = token.jkt;\n      }\n    },\n  ];\n}\n", "/* eslint-disable no-continue, no-param-reassign */\n\nimport isPlainObject from './is_plain_object.js';\n\nfunction defaults(deep, target, ...sources) {\n  for (const source of sources) {\n    if (!isPlainObject(source)) {\n      continue;\n    }\n    for (const [key, value] of Object.entries(source)) {\n      if (key === '__proto__' || key === 'constructor') {\n        continue;\n      }\n      if (typeof target[key] === 'undefined' && typeof value !== 'undefined') {\n        target[key] = value;\n      }\n\n      if (deep && isPlainObject(target[key]) && isPlainObject(value)) {\n        defaults(true, target[key], value);\n      }\n    }\n  }\n\n  return target;\n}\n\nexport default defaults.bind(undefined, false);\nexport const deep = defaults.bind(undefined, true);\n", "/* eslint-disable max-len */\n\nimport defaults from '../helpers/_/defaults.js';\nimport instance from '../helpers/weak_cache.js';\n\nexport default function discovery(ctx) {\n  const { configuration, features } = instance(ctx.oidc.provider);\n\n  ctx.body = {\n    acr_values_supported: configuration.acrValues.size ? [...configuration.acrValues] : undefined,\n    authorization_endpoint: ctx.oidc.urlFor('authorization'),\n    device_authorization_endpoint: features.deviceFlow.enabled\n      ? ctx.oidc.urlFor('device_authorization')\n      : undefined,\n    claims_parameter_supported: features.claimsParameter.enabled,\n    claims_supported: [...configuration.claimsSupported],\n    code_challenge_methods_supported: ['S256'],\n    end_session_endpoint: features.rpInitiatedLogout.enabled\n      ? ctx.oidc.urlFor('end_session')\n      : undefined,\n    grant_types_supported: [...configuration.grantTypes],\n    issuer: ctx.oidc.issuer,\n    jwks_uri: ctx.oidc.urlFor('jwks'),\n    registration_endpoint: features.registration.enabled\n      ? ctx.oidc.urlFor('registration')\n      : undefined,\n    authorization_response_iss_parameter_supported: true,\n    response_modes_supported: ['form_post', 'fragment', 'query'],\n    response_types_supported: configuration.responseTypes,\n    scopes_supported: [...configuration.scopes],\n    subject_types_supported: [...configuration.subjectTypes],\n    token_endpoint_auth_methods_supported: [...configuration.clientAuthMethods],\n    token_endpoint_auth_signing_alg_values_supported: configuration.clientAuthSigningAlgValues,\n    token_endpoint: ctx.oidc.urlFor('token'),\n  };\n\n  const { pushedAuthorizationRequests, requestObjects, richAuthorizationRequests } = features;\n\n  ctx.body.id_token_signing_alg_values_supported = configuration.idTokenSigningAlgValues;\n  if (features.encryption.enabled) {\n    ctx.body.id_token_encryption_alg_values_supported = configuration.idTokenEncryptionAlgValues;\n    ctx.body.id_token_encryption_enc_values_supported = configuration.idTokenEncryptionEncValues;\n  }\n\n  if (pushedAuthorizationRequests.enabled) {\n    ctx.body.pushed_authorization_request_endpoint = ctx.oidc.urlFor(\n      'pushed_authorization_request',\n    );\n    ctx.body.require_pushed_authorization_requests = pushedAuthorizationRequests.requirePushedAuthorizationRequests ? true : undefined;\n  }\n\n  ctx.body.request_uri_parameter_supported = false;\n  if (requestObjects.enabled) {\n    ctx.body.request_parameter_supported = true;\n    ctx.body.request_object_signing_alg_values_supported = configuration.requestObjectSigningAlgValues;\n    ctx.body.require_signed_request_object = requestObjects.requireSignedRequestObject\n      ? true\n      : undefined;\n\n    if (features.encryption.enabled) {\n      ctx.body.request_object_encryption_alg_values_supported = configuration.requestObjectEncryptionAlgValues;\n      ctx.body.request_object_encryption_enc_values_supported = configuration.requestObjectEncryptionEncValues;\n    }\n  }\n\n  if (features.userinfo.enabled) {\n    ctx.body.userinfo_endpoint = ctx.oidc.urlFor('userinfo');\n    if (features.jwtUserinfo.enabled) {\n      ctx.body.userinfo_signing_alg_values_supported = configuration.userinfoSigningAlgValues;\n      if (features.encryption.enabled) {\n        ctx.body.userinfo_encryption_alg_values_supported = configuration.userinfoEncryptionAlgValues;\n        ctx.body.userinfo_encryption_enc_values_supported = configuration.userinfoEncryptionEncValues;\n      }\n    }\n  }\n\n  if (features.webMessageResponseMode.enabled) {\n    ctx.body.response_modes_supported.push('web_message');\n  }\n\n  if (features.jwtResponseModes.enabled) {\n    ctx.body.response_modes_supported.push('jwt');\n\n    ctx.body.response_modes_supported.push('query.jwt');\n    ctx.body.response_modes_supported.push('fragment.jwt');\n    ctx.body.response_modes_supported.push('form_post.jwt');\n\n    if (features.webMessageResponseMode.enabled) {\n      ctx.body.response_modes_supported.push('web_message.jwt');\n    }\n\n    ctx.body.authorization_signing_alg_values_supported = configuration.authorizationSigningAlgValues;\n\n    if (features.encryption.enabled) {\n      ctx.body.authorization_encryption_alg_values_supported = configuration.authorizationEncryptionAlgValues;\n      ctx.body.authorization_encryption_enc_values_supported = configuration.authorizationEncryptionEncValues;\n    }\n  }\n\n  if (features.introspection.enabled) {\n    ctx.body.introspection_endpoint = ctx.oidc.urlFor('introspection');\n  }\n\n  if (features.jwtIntrospection.enabled) {\n    ctx.body.introspection_signing_alg_values_supported = configuration.introspectionSigningAlgValues;\n    if (features.encryption.enabled) {\n      ctx.body.introspection_encryption_alg_values_supported = configuration.introspectionEncryptionAlgValues;\n      ctx.body.introspection_encryption_enc_values_supported = configuration.introspectionEncryptionEncValues;\n    }\n  }\n\n  if (features.dPoP.enabled) {\n    ctx.body.dpop_signing_alg_values_supported = configuration.dPoPSigningAlgValues;\n  }\n\n  if (features.revocation.enabled) {\n    ctx.body.revocation_endpoint = ctx.oidc.urlFor('revocation');\n  }\n\n  if (features.backchannelLogout.enabled) {\n    ctx.body.backchannel_logout_supported = true;\n    ctx.body.backchannel_logout_session_supported = true;\n  }\n\n  if (features.mTLS.enabled && features.mTLS.certificateBoundAccessTokens) {\n    ctx.body.tls_client_certificate_bound_access_tokens = true;\n  }\n\n  if (features.ciba.enabled) {\n    ctx.body.backchannel_authentication_endpoint = ctx.oidc.urlFor('backchannel_authentication');\n    ctx.body.backchannel_token_delivery_modes_supported = [...features.ciba.deliveryModes];\n    ctx.body.backchannel_user_code_parameter_supported = true;\n    ctx.body.backchannel_authentication_request_signing_alg_values_supported = requestObjects.enabled\n      ? configuration.requestObjectSigningAlgValues.filter((alg) => !alg.startsWith('HS'))\n      : undefined;\n  }\n\n  if (richAuthorizationRequests.enabled) {\n    ctx.body.authorization_details_types_supported = Object.keys(richAuthorizationRequests.types);\n  }\n\n  if (features.attestClientAuth.enabled) {\n    ctx.body.challenge_endpoint = ctx.oidc.urlFor('challenge');\n  }\n\n  defaults(ctx.body, configuration.discovery);\n}\n", "import instance from '../helpers/weak_cache.js';\nimport noCache from '../shared/no_cache.js';\n\nexport default [\n  noCache,\n  function challenge(ctx) {\n    const { DPoPNonces, AttestChallenges } = instance(ctx.oidc.provider);\n\n    ctx.body = {};\n\n    const nextNonce = DPoPNonces?.nextChallenge();\n    if (nextNonce) {\n      ctx.set('dpop-nonce', nextNonce);\n    }\n\n    const nextChallenge = AttestChallenges?.nextChallenge();\n    if (nextChallenge) {\n      ctx.set('oauth-client-attestation-challenge', nextChallenge);\n      ctx.body.attestation_challenge = nextChallenge;\n    }\n  },\n];\n", "import * as crypto from 'node:crypto';\n\nimport { InvalidClient, InvalidRequest, OIDCProviderError } from '../helpers/errors.js';\nimport * as JWT from '../helpers/jwt.js';\nimport redirectUri from '../helpers/redirect_uri.js';\nimport instance from '../helpers/weak_cache.js';\nimport rejectDupes from '../shared/reject_dupes.js';\nimport bodyParser from '../shared/conditional_body.js';\nimport paramsMiddleware from '../shared/assemble_params.js';\nimport sessionMiddleware from '../shared/session.js';\nimport revoke from '../helpers/revoke.js';\nimport noCache from '../shared/no_cache.js';\nimport formPost from '../response_modes/form_post.js';\n\nconst parseBody = bodyParser.bind(undefined, 'application/x-www-form-urlencoded');\n\nexport const init = [\n  noCache,\n  sessionMiddleware,\n  parseBody,\n  paramsMiddleware.bind(undefined, new Set(['id_token_hint', 'post_logout_redirect_uri', 'state', 'ui_locales', 'client_id', 'logout_hint'])),\n  rejectDupes.bind(undefined, {}),\n\n  async function endSessionChecks(ctx, next) {\n    const { params } = ctx.oidc;\n\n    let client;\n    if (params.id_token_hint) {\n      try {\n        const idTokenHint = JWT.decode(params.id_token_hint);\n        ctx.oidc.entity('IdTokenHint', idTokenHint);\n      } catch (err) {\n        throw new InvalidRequest('could not decode id_token_hint', undefined, err.message);\n      }\n      const { payload: { aud: clientId } } = ctx.oidc.entities.IdTokenHint;\n\n      if (params.client_id && params.client_id !== clientId) {\n        throw new InvalidRequest('client_id does not match the provided id_token_hint');\n      }\n      client = await ctx.oidc.provider.Client.find(clientId);\n      if (!client) {\n        throw new InvalidClient('unrecognized id_token_hint audience', 'client not found');\n      }\n      try {\n        await ctx.oidc.provider.IdToken.validate(params.id_token_hint, client);\n      } catch (err) {\n        if (err instanceof OIDCProviderError) {\n          throw err;\n        }\n\n        throw new InvalidRequest('could not validate id_token_hint', undefined, err.message);\n      }\n      ctx.oidc.entity('Client', client);\n    } else if (params.client_id) {\n      client = await ctx.oidc.provider.Client.find(params.client_id);\n      if (!client) {\n        throw new InvalidClient('client is invalid', 'client not found');\n      }\n      ctx.oidc.entity('Client', client);\n    }\n\n    if (client && params.post_logout_redirect_uri !== undefined) {\n      if (!client.postLogoutRedirectUriAllowed(params.post_logout_redirect_uri)) {\n        throw new InvalidRequest('post_logout_redirect_uri not registered');\n      }\n    } else if (params.post_logout_redirect_uri !== undefined) {\n      params.post_logout_redirect_uri = undefined;\n    }\n\n    await next();\n  },\n\n  async function renderLogout(ctx) {\n    // TODO: generic xsrf middleware to remove this\n    const secret = crypto.randomBytes(24).toString('hex');\n\n    ctx.oidc.session.state = {\n      secret,\n      clientId: ctx.oidc.client ? ctx.oidc.client.clientId : undefined,\n      state: ctx.oidc.params.state,\n      postLogoutRedirectUri: ctx.oidc.params.post_logout_redirect_uri,\n    };\n\n    const action = ctx.oidc.urlFor('end_session_confirm');\n\n    if (ctx.oidc.session.accountId) {\n      ctx.type = 'html';\n      ctx.status = 200;\n\n      const formHtml = `<form id=\"op.logoutForm\" method=\"post\" action=\"${action}\"><input type=\"hidden\" name=\"xsrf\" value=\"${secret}\"/></form>`;\n      await instance(ctx.oidc.provider).features.rpInitiatedLogout.logoutSource(ctx, formHtml);\n    } else {\n      formPost(ctx, action, {\n        xsrf: secret,\n        logout: 'yes',\n      });\n    }\n  },\n];\n\nexport const confirm = [\n  noCache,\n  sessionMiddleware,\n  parseBody,\n  paramsMiddleware.bind(undefined, new Set(['xsrf', 'logout'])),\n  rejectDupes.bind(undefined, {}),\n\n  async function checkLogoutToken(ctx, next) {\n    if (!ctx.oidc.session.state) {\n      throw new InvalidRequest('could not find logout details');\n    }\n    if (ctx.oidc.session.state.secret !== ctx.oidc.params.xsrf) {\n      throw new InvalidRequest('xsrf token invalid');\n    }\n    await next();\n  },\n\n  async function endSession(ctx) {\n    const { oidc: { session, params } } = ctx;\n    const { state } = session;\n\n    const {\n      features: { backchannelLogout },\n      cookies: { long: opts },\n    } = instance(ctx.oidc.provider).configuration;\n\n    if (backchannelLogout.enabled) {\n      const clientIds = Object.keys(session.authorizations || {});\n\n      const back = [];\n\n      for (const clientId of clientIds) {\n        if (params.logout || clientId === state.clientId) {\n          const client = await ctx.oidc.provider.Client.find(clientId);\n          if (client) {\n            const sid = session.sidFor(client.clientId);\n            if (client.backchannelLogoutUri) {\n              const { accountId } = session;\n              back.push(client.backchannelLogout(accountId, sid)\n                .then(() => {\n                  ctx.oidc.provider.emit('backchannel.success', ctx, client, accountId, sid);\n                }, (err) => {\n                  ctx.oidc.provider.emit('backchannel.error', ctx, err, client, accountId, sid);\n                }));\n            }\n          }\n        }\n      }\n\n      await Promise.all(back);\n    }\n\n    if (state.clientId) {\n      ctx.oidc.entity('Client', await ctx.oidc.provider.Client.find(state.clientId));\n    }\n\n    if (params.logout) {\n      if (session.authorizations) {\n        await Promise.all(\n          Object.entries(session.authorizations).map(async ([clientId, { grantId }]) => {\n            // Drop the grants without offline_access\n            // Note: tokens that don't get dropped due to offline_access having being added\n            // later will still not work, as such they will be orphaned until their TTL hits\n            if (grantId && !session.authorizationFor(clientId).persistsLogout) {\n              await revoke(ctx, grantId);\n            }\n          }),\n        );\n      }\n\n      await session.destroy();\n\n      ctx.cookies.set(\n        ctx.oidc.provider.cookieName('session'),\n        null,\n        opts,\n      );\n    } else if (state.clientId) {\n      const grantId = session.grantIdFor(state.clientId);\n      if (grantId && !session.authorizationFor(state.clientId).persistsLogout) {\n        await revoke(ctx, grantId);\n        ctx.oidc.provider.emit('grant.revoked', ctx, grantId);\n      }\n      session.state = undefined;\n      if (session.authorizations) {\n        delete session.authorizations[state.clientId];\n      }\n      session.resetIdentifier();\n    }\n\n    const usePostLogoutUri = state.postLogoutRedirectUri;\n    const forwardClientId = !usePostLogoutUri && !params.logout && state.clientId;\n    const uri = redirectUri(\n      usePostLogoutUri ? state.postLogoutRedirectUri : ctx.oidc.urlFor('end_session_success'),\n      {\n        ...(usePostLogoutUri && state.state != null\n          ? { state: state.state } : undefined), // != intended\n        ...(forwardClientId ? { client_id: state.clientId } : undefined),\n      },\n    );\n\n    ctx.oidc.provider.emit('end_session.success', ctx);\n\n    ctx.status = 303;\n    ctx.redirect(uri);\n  },\n];\n\nexport const success = [\n  noCache,\n  paramsMiddleware.bind(undefined, new Set(['client_id'])),\n  async function postLogoutSuccess(ctx) {\n    if (ctx.oidc.params.client_id) {\n      const client = await ctx.oidc.provider.Client.find(ctx.oidc.params.client_id);\n      if (!client) {\n        throw new InvalidClient('client is invalid', 'client not found');\n      }\n      ctx.oidc.entity('Client', client);\n    }\n    await instance(ctx.oidc.provider).features.rpInitiatedLogout.postLogoutSuccessSource(ctx);\n  },\n];\n", "import * as crypto from 'node:crypto';\n\nimport sessionMiddleware from '../shared/session.js';\nimport paramsMiddleware from '../shared/assemble_params.js';\nimport bodyParser from '../shared/conditional_body.js';\nimport rejectDupes from '../shared/reject_dupes.js';\nimport instance from '../helpers/weak_cache.js';\nimport { InvalidClient, InvalidRequest } from '../helpers/errors.js';\nimport * as formHtml from '../helpers/user_code_form.js';\nimport formPost from '../response_modes/form_post.js';\nimport { normalize, denormalize } from '../helpers/user_codes.js';\nimport {\n  NoCodeError, NotFoundError, ExpiredError, AlreadyUsedError, AbortedError,\n} from '../helpers/re_render_errors.js';\n\nconst parseBody = bodyParser.bind(undefined, 'application/x-www-form-urlencoded');\n\nexport const get = [\n  sessionMiddleware,\n  paramsMiddleware.bind(undefined, new Set(['user_code'])),\n  async function renderCodeVerification(ctx) {\n    const { charset, userCodeInputSource } = instance(ctx.oidc.provider).features.deviceFlow;\n\n    // TODO: generic xsrf middleware to remove this\n    const secret = crypto.randomBytes(24).toString('hex');\n    ctx.oidc.session.state = { secret };\n\n    const action = ctx.oidc.urlFor('code_verification');\n    if (ctx.oidc.params.user_code) {\n      formPost(ctx, action, {\n        xsrf: secret,\n        user_code: ctx.oidc.params.user_code,\n      });\n    } else {\n      await userCodeInputSource(ctx, formHtml.input(action, secret, undefined, charset));\n    }\n  },\n];\n\nexport const post = [\n  sessionMiddleware,\n  parseBody,\n  paramsMiddleware.bind(undefined, new Set(['xsrf', 'user_code', 'confirm', 'abort'])),\n  rejectDupes.bind(undefined, {}),\n\n  async function codeVerificationCSRF(ctx, next) {\n    if (!ctx.oidc.session.state) {\n      throw new InvalidRequest('could not find device form details');\n    }\n    if (ctx.oidc.session.state.secret !== ctx.oidc.params.xsrf) {\n      throw new InvalidRequest('xsrf token invalid');\n    }\n    await next();\n  },\n\n  async function loadDeviceCodeByUserInput(ctx, next) {\n    const { userCodeConfirmSource, mask } = instance(ctx.oidc.provider).features.deviceFlow;\n    const { user_code: userCode, confirm, abort } = ctx.oidc.params;\n\n    if (!userCode) {\n      throw new NoCodeError();\n    }\n\n    const normalized = normalize(userCode);\n    const code = await ctx.oidc.provider.DeviceCode.findByUserCode(\n      normalized,\n      { ignoreExpiration: true },\n    );\n\n    if (!code) {\n      throw new NotFoundError(userCode);\n    }\n\n    if (code.isExpired) {\n      throw new ExpiredError(userCode);\n    }\n\n    if (code.error || code.accountId || code.inFlight) {\n      throw new AlreadyUsedError(userCode);\n    }\n\n    ctx.oidc.entity('DeviceCode', code);\n\n    if (abort) {\n      Object.assign(code, {\n        error: 'access_denied',\n        errorDescription: 'End-User aborted interaction',\n      });\n\n      await code.save();\n      throw new AbortedError();\n    }\n\n    if (!confirm) {\n      const client = await ctx.oidc.provider.Client.find(code.clientId);\n      if (!client) {\n        throw new InvalidClient('client is invalid', 'client not found');\n      }\n      ctx.oidc.entity('Client', client);\n\n      const action = ctx.oidc.urlFor('code_verification');\n      await userCodeConfirmSource(\n        ctx,\n        formHtml.confirm(action, ctx.oidc.session.state.secret, userCode),\n        client,\n        code.deviceInfo,\n        denormalize(normalized, mask),\n      );\n      return;\n    }\n\n    code.inFlight = true;\n    await code.save();\n\n    await next();\n  },\n\n  function cleanup(ctx, next) {\n    ctx.oidc.session.state = undefined;\n    return next();\n  },\n];\n", "import { AsyncLocalStorage } from 'node:async_hooks';\n\nexport default new AsyncLocalStorage();\n", "import instance from './weak_cache.js';\nimport isPlainObject from './_/is_plain_object.js';\nimport { InvalidClientMetadata } from './errors.js';\n\nexport default function initializeClients(clients = []) {\n  let staticClients;\n\n  for (const metadata of clients) {\n    if (!isPlainObject(metadata) || !metadata.client_id) {\n      throw new InvalidClientMetadata('client_id is mandatory property for statically configured clients');\n    }\n\n    if (staticClients?.has(metadata.client_id)) {\n      throw new InvalidClientMetadata('client_id must be unique amongst statically configured clients');\n    }\n\n    staticClients ||= new Map();\n    staticClients.set(metadata.client_id, structuredClone(metadata));\n  }\n\n  if (staticClients) {\n    instance(this).staticClients = staticClients;\n  }\n}\n", "/* eslint-disable no-underscore-dangle */\n\nexport default class ResourceServer {\n  constructor(identifier, data) {\n    this._identifier = identifier;\n    this.audience = data.audience;\n    this.scope = data.scope;\n    this.accessTokenTTL = data.accessTokenTTL;\n    this.accessTokenFormat = data.accessTokenFormat;\n    this.jwt = data.jwt;\n  }\n\n  get scopes() {\n    return new Set(this.scope?.split(' '));\n  }\n\n  identifier() {\n    return this._identifier;\n  }\n}\n", "export function isHttpsUri(uri) {\n  return URL.parse(uri)?.protocol === 'https:';\n}\n\nexport function isWebUri(uri) {\n  const protocol = URL.parse(uri)?.protocol;\n  return protocol === 'https:' || protocol === 'http:';\n}\n", "import instance from './weak_cache.js';\nimport pick from './_/pick.js';\nimport merge from './_/merge.js';\nimport isPlainObject from './_/is_plain_object.js';\n\nexport default function getClaims(provider) {\n  const {\n    claims: claimConfig, claimsSupported, pairwiseIdentifier,\n  } = instance(provider).configuration;\n\n  return class Claims {\n    constructor(available, { ctx, client = ctx ? ctx.oidc.client : undefined }) {\n      if (!isPlainObject(available)) {\n        throw new TypeError('expected claims to be an object, are you sure claims() method resolves with or returns one?');\n      }\n      if (!(client instanceof provider.Client)) {\n        throw new TypeError('second argument must be a Client instance');\n      }\n      this.available = available;\n      this.client = client;\n      this.ctx = ctx;\n      this.filter = {};\n    }\n\n    scope(value = '') {\n      if (Object.keys(this.filter).length) {\n        throw new Error('scope cannot be assigned after mask has been set');\n      }\n      value.split(' ').forEach((scope) => {\n        this.mask(claimConfig[scope]);\n      });\n      return this;\n    }\n\n    mask(value) {\n      merge(this.filter, value);\n    }\n\n    rejected(value = []) {\n      value.forEach((claim) => {\n        delete this.filter[claim];\n      });\n    }\n\n    async result() {\n      const { available } = this;\n      const include = Object.entries(this.filter)\n        .map(([key, value]) => {\n          if (value === null || isPlainObject(value)) {\n            return key;\n          }\n\n          return undefined;\n        })\n        .filter((key) => key && claimsSupported.has(key));\n\n      const claims = pick(available, ...include);\n\n      if (available._claim_names && available._claim_sources) {\n        claims._claim_names = pick(available._claim_names, ...include);\n        claims._claim_sources = pick(\n          available._claim_sources,\n          ...Object.values(claims._claim_names),\n        );\n\n        if (!Object.keys(claims._claim_names).length) {\n          delete claims._claim_names;\n          delete claims._claim_sources;\n        }\n      }\n\n      if (this.client.subjectType === 'pairwise' && claims.sub) {\n        claims.sub = await pairwiseIdentifier(this.ctx, claims.sub, this.client);\n      }\n\n      return claims;\n    }\n  };\n}\n", "/* eslint-disable max-classes-per-file */\nimport * as events from 'node:events';\n\nimport isPlainObject from './_/is_plain_object.js';\nimport omitBy from './_/omit_by.js';\nimport { InvalidRequest, InvalidToken } from './errors.js';\nimport instance from './weak_cache.js';\nimport resolveResponseMode from './resolve_response_mode.js';\n\nconst COOKIES = Symbol();\n\nclass NoAccessTokenProvided extends InvalidToken {\n  constructor() {\n    super();\n    // eslint-disable-next-line no-multi-assign\n    this.error_detail = this.error_description = 'no access token provided';\n  }\n}\n\nexport default function getContext(provider) {\n  const {\n    acceptQueryParamAccessTokens,\n    features: {\n      dPoP: dPoPConfig,\n      fapi,\n    },\n    scopes: oidcScopes,\n  } = instance(provider).configuration;\n\n  class OIDCContext extends events.EventEmitter {\n    #requestParamClaims = null;\n\n    #accessToken = null;\n\n    #fapiProfile = null;\n\n    constructor(ctx) {\n      super();\n      this.ctx = ctx;\n      this.route = ctx._matchedRouteName;\n      this.redirectUriCheckPerformed = false;\n      this.entities = {};\n      this.claims = {};\n      this.resourceServers = {};\n    }\n\n    get cookies() {\n      if (!this[COOKIES]) {\n        this[COOKIES] = provider.createContext(this.ctx.req, this.ctx.res).cookies;\n        this[COOKIES].secure = !this[COOKIES].secure && this.ctx.secure\n          ? true : this[COOKIES].secure;\n      }\n\n      return this[COOKIES];\n    }\n\n    get fapiProfile() {\n      if (this.#fapiProfile === null) {\n        this.#fapiProfile = fapi.profile(this.ctx, this.client);\n      }\n\n      return this.#fapiProfile;\n    }\n\n    isFapi(...oneOf) {\n      const i = oneOf.indexOf(this.fapiProfile);\n      return i !== -1 ? oneOf[i] : undefined;\n    }\n\n    get issuer() { // eslint-disable-line class-methods-use-this\n      return provider.issuer;\n    }\n\n    get provider() { // eslint-disable-line class-methods-use-this\n      return provider;\n    }\n\n    entity(key, value) {\n      this.entities[key] = value;\n\n      if (key === 'Client') {\n        this.emit('assign.client', this.ctx, value);\n      }\n    }\n\n    urlFor(name, opt) {\n      const { originalUrl } = this.ctx.req;\n      const mountPath = originalUrl?.substring(0, originalUrl?.indexOf(this.ctx.request.url))\n        || this.ctx.mountPath // koa-mount\n        || this.ctx.req.baseUrl // expressApp.use('/op', provider.callback());\n        || ''; // no mount\n\n      return new URL(provider.pathFor(name, { mountPath, ...opt }), this.ctx.href).href;\n    }\n\n    promptPending(name) {\n      if (this.ctx.oidc.route.endsWith('resume')) {\n        const should = new Set([...this.prompts]);\n        Object.keys(this.result || {}).forEach(Set.prototype.delete.bind(should));\n\n        return should.has(name);\n      }\n\n      // first pass\n      return this.prompts.has(name);\n    }\n\n    get requestParamClaims() {\n      if (this.#requestParamClaims) {\n        return this.#requestParamClaims;\n      }\n      const requestParamClaims = new Set();\n\n      if (this.params.claims) {\n        const {\n          userinfo, id_token: idToken,\n        } = JSON.parse(this.params.claims);\n\n        const claims = instance(provider).configuration.claimsSupported;\n        if (userinfo) {\n          Object.entries(userinfo).forEach(([claim, value]) => {\n            if (claims.has(claim) && (value === null || isPlainObject(value))) {\n              requestParamClaims.add(claim);\n            }\n          });\n        }\n\n        if (idToken) {\n          Object.entries(idToken).forEach(([claim, value]) => {\n            if (claims.has(claim) && (value === null || isPlainObject(value))) {\n              requestParamClaims.add(claim);\n            }\n          });\n        }\n      }\n\n      this.#requestParamClaims = requestParamClaims;\n\n      return requestParamClaims;\n    }\n\n    clientJwtAuthExpectedAudience() {\n      return new Set([this.issuer, this.urlFor('token'), this.urlFor(this.route)]);\n    }\n\n    get requestParamScopes() {\n      return new Set(this.params.scope?.split(' '));\n    }\n\n    get requestParamOIDCScopes() {\n      return new Set(this.params.scope?.split(' ').filter(Set.prototype.has.bind(oidcScopes)));\n    }\n\n    resolvedClaims() {\n      const rejected = this.session.rejectedClaimsFor(this.params.client_id);\n      const claims = structuredClone(this.claims);\n      claims.rejected = [...rejected];\n\n      return claims;\n    }\n\n    get responseMode() {\n      if (typeof this.params.response_mode === 'string') {\n        return this.params.response_mode;\n      }\n\n      if (this.params.response_type !== undefined) {\n        return resolveResponseMode(this.params.response_type);\n      }\n\n      return undefined;\n    }\n\n    get acr() {\n      return this.session.acr;\n    }\n\n    get amr() {\n      return this.session.amr;\n    }\n\n    get prompts() {\n      return new Set(this.params.prompt ? this.params.prompt.split(' ') : []);\n    }\n\n    get registrationAccessToken() {\n      return this.entities.RegistrationAccessToken;\n    }\n\n    get deviceCode() {\n      return this.entities.DeviceCode;\n    }\n\n    get authorizationCode() {\n      return this.entities.AuthorizationCode;\n    }\n\n    get refreshToken() {\n      return this.entities.RefreshToken;\n    }\n\n    get accessToken() {\n      return this.entities.AccessToken;\n    }\n\n    get account() {\n      return this.entities.Account;\n    }\n\n    get client() {\n      return this.entities.Client;\n    }\n\n    get grant() {\n      return this.entities.Grant;\n    }\n\n    getAccessToken({\n      acceptDPoP = false, acceptQueryParam = acceptQueryParamAccessTokens && !fapi.enabled,\n    } = {}) {\n      if (this.#accessToken) {\n        return this.#accessToken;\n      }\n\n      const { ctx } = this;\n      const mechanisms = omitBy({\n        body: ctx.is('application/x-www-form-urlencoded') && ctx.oidc.body?.access_token,\n        header: ctx.headers.authorization,\n        query: ctx.query.access_token,\n      }, (value) => typeof value !== 'string' || !value);\n\n      let mechanism;\n      let length;\n      let token;\n\n      try {\n        ({ 0: [mechanism, token], length } = Object.entries(mechanisms));\n      } catch (err) {}\n\n      if (!length) {\n        throw new NoAccessTokenProvided();\n      }\n\n      if (length > 1) {\n        throw new InvalidRequest('access token must only be provided using one mechanism');\n      }\n\n      if (!acceptQueryParam && mechanism === 'query') {\n        throw new InvalidRequest('access tokens must not be provided via query parameter');\n      }\n\n      const dpop = acceptDPoP && dPoPConfig.enabled && ctx.get('DPoP');\n\n      if (mechanism === 'header') {\n        const header = token;\n        const { 0: scheme, 1: value, length: parts } = header.split(' ');\n\n        if (parts !== 2) {\n          throw new InvalidRequest('invalid authorization header value format');\n        }\n\n        if (dpop && scheme.toLowerCase() !== 'dpop') {\n          throw new InvalidRequest('authorization header scheme must be `DPoP` when DPoP is used');\n        } else if (!dpop && scheme.toLowerCase() === 'dpop') {\n          throw new InvalidRequest('`DPoP` header not provided');\n        } else if (!dpop && scheme.toLowerCase() !== 'bearer') {\n          throw new InvalidRequest('authorization header scheme must be `Bearer`');\n        }\n\n        token = value;\n      }\n\n      if (dpop && mechanism !== 'header') {\n        throw new InvalidRequest('`DPoP` tokens must be provided via an authorization header');\n      }\n\n      this.#accessToken = token;\n\n      return token;\n    }\n  }\n\n  return OIDCContext;\n}\n", "export default function apply(mixins) {\n  const klass = mixins.pop();\n  return mixins.reduce((mixed, mixin) => mixin(mixed), klass);\n}\n", "export default (object, predicate) => {\n  const result = {};\n  Object.entries(object).forEach(([key, value]) => {\n    if (predicate(value, key)) {\n      result[key] = value;\n    }\n  });\n\n  return result;\n};\n", "import pickBy from '../../helpers/_/pick_by.js';\nimport { assertPayload } from '../../helpers/jwt.js';\nimport epochTime from '../../helpers/epoch_time.js';\nimport instance from '../../helpers/weak_cache.js';\nimport nanoid from '../../helpers/nanoid.js';\nimport als from '../../helpers/als.js';\n\nconst withExtra = new Set(['AccessToken', 'ClientCredentials']);\nconst bitsPerSymbol = Math.log2(64);\nconst tokenLength = (i) => Math.ceil(i / bitsPerSymbol);\n\nexport default (provider) => ({\n  generateTokenId() {\n    let length;\n    if (this.kind !== 'PushedAuthorizationRequest') {\n      const { bitsOfOpaqueRandomness } = instance(provider).configuration.formats;\n      if (typeof bitsOfOpaqueRandomness === 'function') {\n        length = tokenLength(bitsOfOpaqueRandomness(als.getStore(), this));\n      } else {\n        length = tokenLength(bitsOfOpaqueRandomness);\n      }\n    }\n    return nanoid(length);\n  },\n  async getValueAndPayload() {\n    const { configuration } = instance(provider);\n    const now = epochTime();\n    const exp = this.exp || now + this.expiration;\n    const payload = {\n      iat: this.iat || epochTime(),\n      ...(exp ? { exp } : undefined),\n      ...pickBy(\n        this,\n        (val, key) => this.constructor.IN_PAYLOAD.includes(key) && typeof val !== 'undefined',\n      ),\n    };\n\n    if (withExtra.has(this.kind)) {\n      // eslint-disable-next-line no-multi-assign\n      payload.extra = this.extra = await configuration.extraTokenClaims(als.getStore(), this);\n    }\n\n    return { value: this.jti, payload };\n  },\n  async verify(stored, { ignoreExpiration } = {}) {\n    // checks that legacy tokens aren't accepted as opaque when their jti is passed\n    if (('jwt' in stored) || ('jwt-ietf' in stored) || ('paseto' in stored)) throw new TypeError();\n    if (('format' in stored) && stored.format !== 'opaque') throw new TypeError();\n\n    const { configuration } = instance(provider);\n    assertPayload(stored, {\n      ignoreExpiration,\n      clockTolerance: configuration.clockTolerance,\n    });\n\n    return stored;\n  },\n});\n", "import * as crypto from 'node:crypto';\n\nimport * as JWT from '../../helpers/jwt.js';\nimport instance from '../../helpers/weak_cache.js';\nimport nanoid from '../../helpers/nanoid.js';\nimport als from '../../helpers/als.js';\n\nexport default (provider, { opaque }) => {\n  async function getResourceServerConfig(token) {\n    const { keystore, configuration } = instance(provider);\n    const { clientDefaults: { id_token_signed_response_alg: defaultAlg } } = configuration;\n\n    let sign;\n    let encrypt;\n\n    {\n      let alg;\n      let key;\n      let kid;\n\n      if (token.resourceServer) {\n        if (token.resourceServer.jwt?.sign) {\n          ({ alg = defaultAlg, key, kid } = token.resourceServer.jwt.sign);\n        } else if (\n          !token.resourceServer.jwt\n          || (!token.resourceServer.jwt.sign && !token.resourceServer.jwt.encrypt)\n        ) {\n          alg = defaultAlg;\n        }\n      }\n\n      if (alg === 'none') {\n        throw new Error('JWT Access Tokens may not use JWS algorithm \"none\"');\n      } else if (alg) {\n        if (alg.startsWith('HS')) {\n          if (!key) {\n            throw new Error('missing jwt.sign.key Resource Server configuration');\n          }\n          if (!(key instanceof crypto.KeyObject || key instanceof CryptoKey)) {\n            key = crypto.createSecretKey(key);\n          }\n          if (key.type !== 'secret') {\n            throw new Error('jwt.sign.key Resource Server configuration must be a secret (symmetric) key');\n          }\n        } else {\n          [key] = keystore.selectForVerify({ alg, use: 'sig', kid });\n          if (!key) {\n            throw new Error('resolved Resource Server jwt configuration has no corresponding key in the provider\\'s keystore');\n          }\n          kid = key.kid;\n          key = keystore.getKeyObject(key);\n        }\n        if (kid !== undefined && typeof kid !== 'string') {\n          throw new Error('jwt.sign.kid must be a string when provided');\n        }\n        sign = { alg, key, kid };\n      }\n    }\n\n    if (token.resourceServer?.jwt?.encrypt) {\n      const { alg, enc, kid } = token.resourceServer.jwt.encrypt;\n      let { key } = token.resourceServer.jwt.encrypt;\n\n      if (!alg) {\n        throw new Error('missing jwt.encrypt.alg Resource Server configuration');\n      }\n      if (!enc) {\n        throw new Error('missing jwt.encrypt.enc Resource Server configuration');\n      }\n      if (!key) {\n        throw new Error('missing jwt.encrypt.key Resource Server configuration');\n      }\n\n      if (!(key instanceof crypto.KeyObject || key instanceof CryptoKey) && /^(A|dir$)/.test(alg)) {\n        key = crypto.createSecretKey(key);\n      }\n\n      if (key.type === 'private') throw new Error('jwt.encrypt.key Resource Server configuration must be a secret (symmetric) or a public key');\n      if (key.type === 'public' && !sign) throw new Error('missing jwt.sign Resource Server configuration');\n\n      if (kid !== undefined && typeof kid !== 'string') {\n        throw new Error('jwt.encrypt.kid must be a string when provided');\n      }\n      encrypt = {\n        alg, enc, key, kid,\n      };\n    }\n\n    return { sign, encrypt };\n  }\n\n  return {\n    generateTokenId() {\n      return nanoid();\n    },\n    async getValueAndPayload() {\n      const { payload } = await opaque.getValueAndPayload.call(this);\n      const {\n        aud, jti, iat, exp, scope, clientId, 'x5t#S256': x5t, jkt, extra, rar,\n      } = payload;\n      let { accountId: sub } = payload;\n\n      if (sub) {\n        const { client } = this;\n        if (client?.clientId !== clientId) {\n          throw new TypeError('clientId and client mismatch');\n        }\n        if (client.subjectType === 'pairwise') {\n          const { pairwiseIdentifier } = instance(provider).configuration;\n          sub = await pairwiseIdentifier(als.getStore(), sub, client);\n        }\n      }\n\n      const tokenPayload = {\n        ...extra,\n        jti,\n        sub: sub || clientId,\n        iat,\n        exp,\n        authorization_details: rar,\n        scope: scope || undefined,\n        client_id: clientId,\n        iss: provider.issuer,\n        aud,\n        ...(x5t || jkt ? { cnf: {} } : undefined),\n      };\n\n      if (x5t) {\n        tokenPayload.cnf['x5t#S256'] = x5t;\n      }\n      if (jkt) {\n        tokenPayload.cnf.jkt = jkt;\n      }\n\n      const structuredToken = {\n        header: undefined,\n        payload: tokenPayload,\n      };\n\n      const customizer = instance(provider).configuration.formats.customizers.jwt;\n      if (customizer) {\n        await customizer(als.getStore(), this, structuredToken);\n      }\n\n      if (!structuredToken.payload.aud) {\n        throw new Error('JWT Access Tokens must contain an audience, for Access Tokens without audience (only usable at the userinfo_endpoint) use an opaque format');\n      }\n\n      const config = await getResourceServerConfig(this);\n\n      let signed;\n      if (config.sign) {\n        signed = await JWT.sign(structuredToken.payload, config.sign.key, config.sign.alg, {\n          typ: 'at+jwt',\n          fields: { kid: config.sign.kid, ...structuredToken.header },\n        });\n      }\n\n      if (config.sign && config.encrypt) {\n        const encrypted = await JWT.encrypt(signed, config.encrypt.key, {\n          fields: {\n            kid: config.encrypt.kid,\n            iss: provider.issuer,\n            aud: structuredToken.payload.aud,\n            cty: 'at+jwt',\n          },\n          enc: config.encrypt.enc,\n          alg: config.encrypt.alg,\n        });\n\n        return { value: encrypted };\n      }\n\n      if (config.sign) {\n        return { value: signed };\n      }\n\n      if (config.encrypt) {\n        const cleartext = JSON.stringify(structuredToken.payload);\n        const encrypted = await JWT.encrypt(cleartext, config.encrypt.key, {\n          fields: {\n            kid: config.encrypt.kid,\n            iss: provider.issuer,\n            aud: structuredToken.payload.aud,\n            typ: 'at+jwt',\n            ...structuredToken.header,\n          },\n          enc: config.encrypt.enc,\n          alg: config.encrypt.alg,\n        });\n\n        return { value: encrypted };\n      }\n\n      throw new Error('invalid Resource Server jwt configuration');\n    },\n  };\n};\n", "import instance from '../../helpers/weak_cache.js';\nimport als from '../../helpers/als.js';\n\nexport default (provider, formats) => ({\n  generateTokenId(...args) {\n    const resolver = instance(provider).dynamic[this.constructor.name];\n    const format = resolver(als.getStore(), this);\n    if (!formats[format] || format === 'dynamic') {\n      throw new Error('invalid format resolved');\n    }\n    this.format = format;\n    return formats[format].generateTokenId.apply(this, args);\n  },\n  async getValueAndPayload(...args) {\n    const { format } = this;\n    if (!formats[format] || format === 'dynamic') {\n      throw new Error('invalid format resolved');\n    }\n    return formats[format].getValueAndPayload.apply(this, args);\n  },\n});\n", "import opaque from './opaque.js';\nimport jwt from './jwt.js';\nimport dynamic from './dynamic.js';\n\nexport default (provider) => {\n  const result = {\n    opaque: opaque(provider), // no dependencies\n  };\n\n  result.jwt = jwt(provider, result); // depends on opaque\n  result.dynamic = dynamic(provider, result); // depends on all\n\n  return result;\n};\n", "import instance from '../../helpers/weak_cache.js';\nimport formatsGenerator from '../formats/index.js';\n\nconst DEFAULT = 'opaque';\n\nfunction AccessTokenFormat(ctx, token) {\n  return token.resourceServer?.accessTokenFormat ?? 'opaque';\n}\n\nexport default (provider, type, superclass) => {\n  const formats = formatsGenerator(provider);\n\n  let FORMAT;\n  if (type === 'AccessToken' || type === 'ClientCredentials') {\n    FORMAT = AccessTokenFormat;\n  } else {\n    FORMAT = DEFAULT;\n  }\n\n  if (FORMAT !== DEFAULT || type === 'base') {\n    const dynamic = typeof FORMAT === 'function';\n    if (!dynamic) {\n      if (!formats[FORMAT]) throw new TypeError(`unsupported format specified (${FORMAT})`);\n      if (FORMAT === 'dynamic') throw new TypeError('dynamic format must be configured as a function');\n    }\n\n    const {\n      generateTokenId,\n      getValueAndPayload,\n    } = formats[dynamic ? 'dynamic' : FORMAT];\n\n    const klass = class extends superclass {};\n    klass.prototype.generateTokenId = generateTokenId;\n    klass.prototype.getValueAndPayload = getValueAndPayload;\n    klass.prototype.constructor.verify = formats.opaque.verify;\n\n    if (dynamic) {\n      instance(provider).dynamic ||= {};\n      instance(provider).dynamic[type] = FORMAT;\n    }\n\n    return klass;\n  }\n\n  return superclass;\n};\n", "export default (superclass) => class extends superclass {\n  static get IN_PAYLOAD() {\n    return [\n      ...super.IN_PAYLOAD,\n      'gty',\n    ];\n  }\n};\n", "export default (superclass) => class extends superclass {\n  static async revokeByGrantId(grantId) {\n    await this.adapter.revokeByGrantId(grantId);\n  }\n\n  static get IN_PAYLOAD() {\n    return [\n      ...super.IN_PAYLOAD,\n      'grantId',\n    ];\n  }\n};\n", "import { InvalidRequest } from '../../helpers/errors.js';\nimport certificateThumbprint from '../../helpers/certificate_thumbprint.js';\n\nconst x5t = 'x5t#S256';\nconst jkt = 'jkt';\n\nexport default (superclass) => class extends superclass {\n  static get IN_PAYLOAD() {\n    return [\n      ...super.IN_PAYLOAD,\n      x5t,\n      jkt,\n    ];\n  }\n\n  setThumbprint(prop, input) {\n    switch (prop) {\n      case 'x5t':\n        if (this[jkt]) {\n          throw new InvalidRequest('multiple proof-of-posession mechanisms are not allowed');\n        }\n        this[x5t] = certificateThumbprint(input);\n        break;\n      case 'jkt':\n        if (this[x5t]) {\n          throw new InvalidRequest('multiple proof-of-posession mechanisms are not allowed');\n        }\n        this[jkt] = input;\n        break;\n      default:\n        throw new Error('unsupported');\n    }\n  }\n\n  isSenderConstrained() {\n    if (this[jkt] || this[x5t]) {\n      return true;\n    }\n\n    return false;\n  }\n\n  get tokenType() {\n    if (this[jkt]) {\n      return 'DPoP';\n    }\n\n    return 'Bearer';\n  }\n};\n", "export default (provider) => (superclass) => class extends superclass {\n  static get IN_PAYLOAD() {\n    return [\n      ...super.IN_PAYLOAD,\n      'sessionUid',\n      'expiresWithSession',\n    ];\n  }\n\n  static async find(...args) {\n    const token = await super.find(...args);\n\n    const ignoreSessionBinding = args[1] && args[1].ignoreSessionBinding === true;\n\n    if (!token?.expiresWithSession || ignoreSessionBinding) {\n      return token;\n    }\n\n    const session = await provider.Session.findByUid(token.sessionUid);\n\n    // related session was not found\n    if (!session) {\n      return undefined;\n    }\n\n    // token and session principal are now different\n    if (token.accountId !== session.accountId) {\n      return undefined;\n    }\n\n    // token and session grantId are now different\n    if (token.grantId !== session.grantIdFor(token.clientId)) {\n      return undefined;\n    }\n\n    return token;\n  }\n};\n", "import { InvalidTarget } from '../../helpers/errors.js';\n\nexport default (superclass) => class extends superclass {\n  setAudience(audience) {\n    if (Array.isArray(audience)) {\n      if (audience.length === 0) {\n        return;\n      }\n      if (audience.length > 1) {\n        throw new InvalidTarget('only a single audience value is supported');\n      }\n\n      // eslint-disable-next-line no-param-reassign\n      [audience] = audience;\n    } else if (typeof audience !== 'string' || !audience) {\n      throw new InvalidTarget();\n    }\n\n    this.aud = audience;\n  }\n};\n", "import apply from './mixins/apply.js';\nimport hasFormat from './mixins/has_format.js';\nimport hasGrantType from './mixins/has_grant_type.js';\nimport hasGrantId from './mixins/has_grant_id.js';\nimport isSenderConstrained from './mixins/is_sender_constrained.js';\nimport isSessionBound from './mixins/is_session_bound.js';\nimport setAudience from './mixins/set_audience.js';\n\nexport default (provider) => class AccessToken extends apply([\n  hasGrantType,\n  hasGrantId,\n  isSenderConstrained,\n  isSessionBound(provider),\n  setAudience,\n  hasFormat(provider, 'AccessToken', provider.BaseToken),\n]) {\n  static get IN_PAYLOAD() {\n    return [\n      ...super.IN_PAYLOAD,\n\n      'accountId',\n      'aud',\n      'rar',\n      'claims',\n      'extra',\n      'grantId',\n      'scope',\n      'sid',\n    ];\n  }\n};\n", "export default (superclass) => class extends superclass {\n  static get IN_PAYLOAD() {\n    return [\n      ...super.IN_PAYLOAD,\n      'consumed',\n    ];\n  }\n\n  async consume() {\n    await this.adapter.consume(this.jti);\n    this.emit('consumed');\n  }\n\n  get isValid() {\n    return !this.consumed && !this.isExpired;\n  }\n};\n", "import * as jose from 'jose';\n\nexport default (superclass) => class extends superclass {\n  static get IN_PAYLOAD() {\n    return [\n      ...super.IN_PAYLOAD,\n      'attestationJkt',\n    ];\n  }\n\n  async setAttestBinding(ctx) {\n    const { cnf: { jwk } } = jose.decodeJwt(ctx.get('oauth-client-attestation'));\n    this.attestationJkt = await jose.calculateJwkThumbprint(jwk);\n  }\n};\n", "export default (superclass) => class extends superclass {\n  static get IN_PAYLOAD() {\n    return [\n      ...super.IN_PAYLOAD,\n      'accountId',\n      'acr',\n      'amr',\n      'authTime',\n      'claims',\n      'nonce',\n      'resource',\n      'scope',\n      'sid',\n    ];\n  }\n};\n", "export default (superclass) => class extends superclass {\n  static get IN_PAYLOAD() {\n    return [\n      ...super.IN_PAYLOAD,\n      'codeChallenge',\n      'codeChallengeMethod',\n    ];\n  }\n};\n", "import apply from './mixins/apply.js';\nimport consumable from './mixins/consumable.js';\nimport hasFormat from './mixins/has_format.js';\nimport hasGrantId from './mixins/has_grant_id.js';\nimport isAttestationConstrained from './mixins/is_attestation_constrained.js';\nimport isSessionBound from './mixins/is_session_bound.js';\nimport storesAuth from './mixins/stores_auth.js';\nimport storesPKCE from './mixins/stores_pkce.js';\n\nexport default (provider) => class AuthorizationCode extends apply([\n  consumable,\n  isSessionBound(provider),\n  hasGrantId,\n  isAttestationConstrained,\n  storesAuth,\n  storesPKCE,\n  hasFormat(provider, 'AuthorizationCode', provider.BaseToken),\n]) {\n  static get IN_PAYLOAD() {\n    return [\n      ...super.IN_PAYLOAD,\n      'redirectUri',\n      'dpopJkt',\n      'rar',\n    ];\n  }\n};\n", "export default (str = '') => str.replace(/([A-Z][a-z])/g, (x) => `_${x}`.toLowerCase()).replace(/^_+/, '');\n", "/* eslint-disable max-classes-per-file */\n\nimport snakeCase from '../helpers/_/snake_case.js';\nimport epochTime from '../helpers/epoch_time.js';\nimport pickBy from '../helpers/_/pick_by.js';\nimport instance from '../helpers/weak_cache.js';\nimport isConstructable from '../helpers/type_validators.js';\n\nimport hasFormat from './mixins/has_format.js';\n\nconst IN_PAYLOAD = [\n  'iat',\n  'exp',\n  'jti',\n  'kind',\n];\n\nconst adapterCache = new WeakMap();\n\nexport default function getBaseModel(provider) {\n  function adapter(ctx) {\n    const obj = typeof ctx === 'function' ? ctx : ctx.constructor;\n\n    if (!adapterCache.has(obj)) {\n      if (isConstructable(instance(provider).Adapter)) {\n        adapterCache.set(obj, new (instance(provider).Adapter)(obj.name));\n      } else {\n        adapterCache.set(obj, instance(provider).Adapter(obj.name));\n      }\n    }\n\n    return adapterCache.get(obj);\n  }\n\n  class Class {\n    constructor({ jti, kind, ...payload } = {}) {\n      Object.assign(this, pickBy(\n        payload,\n        (val, key) => this.constructor.IN_PAYLOAD.includes(key),\n      ));\n\n      if (kind && kind !== this.constructor.name) {\n        throw new TypeError('kind mismatch');\n      }\n\n      this.kind = kind || this.constructor.name;\n      this.jti = jti;\n    }\n\n    static instantiate(payload) {\n      return new this(payload);\n    }\n\n    async save(ttl) {\n      if (!this.jti) {\n        this.jti = this.generateTokenId();\n      }\n\n      // this is true for all BaseToken descendants\n      if (typeof this.constructor.expiresIn !== 'function') {\n        this.exp = epochTime() + ttl;\n      }\n\n      const { value, payload } = await this.getValueAndPayload();\n\n      if (payload) {\n        await this.adapter.upsert(this.jti, payload, ttl);\n        this.emit('saved');\n      } else {\n        this.emit('issued');\n      }\n\n      return value;\n    }\n\n    async destroy() {\n      await this.adapter.destroy(this.jti);\n      this.emit('destroyed');\n    }\n\n    static get adapter() {\n      return adapter(this);\n    }\n\n    get adapter() {\n      return adapter(this);\n    }\n\n    static get IN_PAYLOAD() { return IN_PAYLOAD; }\n\n    static async find(value, { ignoreExpiration = false } = {}) {\n      if (typeof value !== 'string') {\n        return undefined;\n      }\n\n      const stored = await this.adapter.find(value);\n      if (!stored) {\n        return undefined;\n      }\n\n      try {\n        const payload = await this.verify(stored, { ignoreExpiration });\n\n        return this.instantiate(payload);\n      } catch (err) {\n        return undefined;\n      }\n    }\n\n    emit(eventName) {\n      provider.emit(`${snakeCase(this.kind)}.${eventName}`, this);\n    }\n\n    /*\n     * ttlPercentagePassed\n     * returns a Number (0 to 100) with the value being percentage of the token's ttl already\n     * passed. The higher the percentage the older the token is. At 0 the token is fresh, at a 100\n     * it is expired.\n     */\n    ttlPercentagePassed() {\n      const now = epochTime();\n      const percentage = Math.floor(100 * ((now - this.iat) / (this.exp - this.iat)));\n      return Math.max(Math.min(100, percentage), 0);\n    }\n\n    get isValid() { return !this.isExpired; }\n\n    get isExpired() { return this.exp <= epochTime(); }\n\n    get remainingTTL() {\n      if (!this.exp) {\n        return this.expiration;\n      }\n      return this.exp - epochTime();\n    }\n  }\n\n  class BaseModel extends hasFormat(provider, 'base', Class) {}\n\n  return BaseModel;\n}\n", "import instance from '../helpers/weak_cache.js';\nimport als from '../helpers/als.js';\n\nexport default function getBaseToken(provider) {\n  class BaseToken extends instance(provider).BaseModel {\n    #client;\n\n    #resourceServer;\n\n    constructor({\n      client, resourceServer, expiresIn, ...rest\n    } = {}) {\n      super(rest);\n      if (typeof client !== 'undefined') {\n        this.client = client;\n      }\n      if (typeof resourceServer !== 'undefined') {\n        this.resourceServer = resourceServer;\n      }\n      if (typeof expiresIn !== 'undefined') {\n        this.expiresIn = expiresIn;\n      }\n    }\n\n    set client(client) {\n      this.clientId = client.clientId;\n      this.#client = client;\n    }\n\n    get client() {\n      return this.#client;\n    }\n\n    set resourceServer(resourceServer) {\n      this.setAudience(resourceServer.audience || resourceServer.identifier());\n      this.#resourceServer = resourceServer;\n    }\n\n    get resourceServer() {\n      return this.#resourceServer;\n    }\n\n    static expiresIn(...args) {\n      const ttl = instance(provider).configuration.ttl[this.name];\n\n      if (typeof ttl === 'number') {\n        return ttl;\n      }\n\n      if (typeof ttl === 'function') {\n        return ttl(...args);\n      }\n\n      return undefined;\n    }\n\n    async save() {\n      return super.save(this.remainingTTL);\n    }\n\n    static get IN_PAYLOAD() {\n      return [\n        ...super.IN_PAYLOAD,\n        'clientId',\n      ];\n    }\n\n    get expiration() {\n      if (!this.expiresIn) {\n        this.expiresIn = this.constructor.expiresIn(als.getStore(), this, this.#client);\n      }\n\n      return this.expiresIn;\n    }\n\n    get scopes() {\n      return new Set(this.scope?.split(' '));\n    }\n\n    get resourceIndicators() {\n      return new Set(Array.isArray(this.resource) ? this.resource : [this.resource]);\n    }\n  }\n\n  return BaseToken;\n}\n", "/* eslint-disable max-classes-per-file */\nimport * as crypto from 'node:crypto';\nimport { STATUS_CODES } from 'node:http';\n\nimport KeyStore from '../helpers/keystore.js';\nimport snakeCase from '../helpers/_/snake_case.js';\nimport mapKeys from '../helpers/_/map_keys.js';\nimport camelCase from '../helpers/_/camel_case.js';\nimport isPlainObject from '../helpers/_/is_plain_object.js';\nimport * as base64url from '../helpers/base64url.js';\nimport nanoid from '../helpers/nanoid.js';\nimport epochTime from '../helpers/epoch_time.js';\nimport isConstructable from '../helpers/type_validators.js';\nimport instance from '../helpers/weak_cache.js';\nimport constantEquals from '../helpers/constant_equals.js';\nimport { InvalidClient, InvalidClientMetadata } from '../helpers/errors.js';\nimport certificateThumbprint from '../helpers/certificate_thumbprint.js';\nimport sectorIdentifier from '../helpers/sector_identifier.js';\nimport { LOOPBACKS } from '../consts/client_attributes.js';\nimport sectorValidate from '../helpers/sector_validate.js';\nimport addClient from '../helpers/add_client.js';\nimport getSchema from '../helpers/client_schema.js';\n\n// intentionally ignore x5t#S256 so that they are left to be calculated by the library\nconst EC_CURVES = new Set(['P-256', 'P-384', 'P-521']);\nconst OKP_SUBTYPES = new Set(['Ed25519', 'X25519']);\n\nconst validateJWKS = (jwks) => {\n  if (jwks !== undefined) {\n    if (!Array.isArray(jwks?.keys) || !jwks.keys.every(isPlainObject)) {\n      throw new InvalidClientMetadata('client JSON Web Key Set is invalid');\n    }\n  }\n};\n\nconst nonSecretAuthMethods = new Set([\n  'private_key_jwt',\n  'none',\n  'tls_client_auth',\n  'self_signed_tls_client_auth',\n  'attest_jwt_client_auth',\n]);\nconst clientEncryptions = [\n  'id_token_encrypted_response_alg',\n  'request_object_encryption_alg',\n  'userinfo_encrypted_response_alg',\n  'introspection_encrypted_response_alg',\n  'authorization_encrypted_response_alg',\n];\nconst signAlgAttributes = [\n  'id_token_signed_response_alg',\n  'request_object_signing_alg',\n  'token_endpoint_auth_signing_alg',\n  'userinfo_signed_response_alg',\n  'introspection_signed_response_alg',\n  'authorization_signed_response_alg',\n];\n\nfunction isSymmetricAlg(prop) {\n  const value = this[prop];\n  return /^(A|dir$)/.test(value);\n}\n\nfunction isHmac(prop) {\n  const value = this[prop];\n  return /^HS/.test(value);\n}\n\nfunction checkJWK(jwk) {\n  try {\n    if (!(isPlainObject(jwk))) throw new Error();\n    if (!(typeof jwk.kty === 'string' && jwk.kty)) throw new Error();\n\n    switch (jwk.kty) {\n      case 'EC':\n        if (!(typeof jwk.crv === 'string' && jwk.crv)) throw new Error();\n        if (!EC_CURVES.has(jwk.crv)) return undefined;\n        if (!(typeof jwk.x === 'string' && jwk.x)) throw new Error();\n        if (!(typeof jwk.y === 'string' && jwk.y)) throw new Error();\n        if (jwk.d !== undefined) throw new Error();\n        break;\n      case 'OKP':\n        if (!(typeof jwk.crv === 'string' && jwk.crv)) throw new Error();\n        if (!OKP_SUBTYPES.has(jwk.crv)) return undefined;\n        if (!(typeof jwk.x === 'string' && jwk.x)) throw new Error();\n        if (jwk.d !== undefined) throw new Error();\n        break;\n      case 'AKP':\n        if (!(typeof jwk.alg === 'string' && jwk.alg)) throw new Error();\n        if (!(typeof jwk.pub === 'string' && jwk.pub)) throw new Error();\n        if (jwk.priv !== undefined) throw new Error();\n        break;\n      case 'RSA':\n        if (!(typeof jwk.e === 'string' && jwk.e)) throw new Error();\n        if (!(typeof jwk.n === 'string' && jwk.n)) throw new Error();\n        if (jwk.d !== undefined) throw new Error();\n        break;\n      case 'oct':\n        throw new Error();\n      default:\n        return undefined;\n    }\n\n    if (!(jwk.alg === undefined || (typeof jwk.alg === 'string' && jwk.alg))) throw new Error();\n    if (!(jwk.kid === undefined || (typeof jwk.kid === 'string' && jwk.kid))) throw new Error();\n    if (!(jwk.use === undefined || (typeof jwk.use === 'string' && jwk.use))) throw new Error();\n    if (!(jwk.x5c === undefined || (Array.isArray(jwk.x5c) && jwk.x5c.every((x) => typeof x === 'string' && x)))) throw new Error();\n  } catch {\n    throw new InvalidClientMetadata('client JSON Web Key Set is invalid');\n  }\n\n  return jwk;\n}\n\nfunction deriveEncryptionKey(secret, length) {\n  const digest = length <= 32 ? 'sha256' : length <= 48 ? 'sha384' : length <= 64 ? 'sha512' : false; // eslint-disable-line no-nested-ternary\n  if (!digest) {\n    throw new Error('unsupported symmetric encryption key derivation');\n  }\n  return crypto.hash(digest, secret, 'buffer').subarray(0, length);\n}\n\nexport default function getClient(provider) {\n  class ClientKeyStore extends KeyStore {\n    #client;\n\n    #provider = provider;\n\n    constructor(clientInstance) {\n      super();\n\n      this.#client = clientInstance;\n    }\n\n    get client() {\n      return this.#client;\n    }\n\n    get provider() {\n      return this.#provider;\n    }\n\n    get jwksUri() {\n      return this.client?.jwksUri;\n    }\n\n    fresh() {\n      if (!this.jwksUri) return true;\n      const now = epochTime();\n      return !!this.freshUntil && this.freshUntil > now;\n    }\n\n    stale() {\n      return !this.fresh();\n    }\n\n    add(key) {\n      if (this.client.clientAuthMethod === 'self_signed_tls_client_auth' && Array.isArray(key.x5c) && key.x5c.length) {\n        // eslint-disable-next-line no-param-reassign\n        key['x5t#S256'] = certificateThumbprint(key.x5c[0]);\n      }\n      super.add(key);\n    }\n\n    async refresh() {\n      if (this.fresh()) return;\n\n      if (!this.lock) {\n        this.lock = (async () => {\n          /**\n           * @type typeof fetch\n           */\n          const request = instance(provider).configuration.fetch;\n          const response = await request(new URL(this.jwksUri).href, {\n            method: 'GET',\n            headers: {\n              Accept: 'application/json',\n            },\n          });\n\n          const body = await response.json();\n          const { headers, status } = response;\n\n          // min refetch in 60 seconds unless cache headers say a longer response ttl\n          const freshUntil = [epochTime() + 60];\n\n          if (headers.has('expires')) {\n            freshUntil.push(epochTime(Date.parse(headers.get('expires'))));\n          }\n\n          if (headers.has('cache-control') && /max-age=(\\d+)/.test(headers.get('cache-control'))) {\n            const maxAge = parseInt(RegExp.$1, 10);\n            freshUntil.push(epochTime() + maxAge);\n          }\n\n          this.freshUntil = Math.max(...freshUntil.filter(Boolean));\n\n          if (status !== 200) {\n            throw new Error(`unexpected jwks_uri response status code, expected 200 OK, got ${status} ${STATUS_CODES[status]}`);\n          }\n\n          validateJWKS(body);\n\n          this.clear();\n          body.keys\n            .map(checkJWK)\n            .filter(Boolean)\n            .forEach(ClientKeyStore.prototype.add.bind(this));\n\n          delete this.lock;\n        })().catch((err) => {\n          delete this.lock;\n          throw new InvalidClientMetadata('client JSON Web Key Set failed to be refreshed', err.error_description || err.message);\n        });\n      }\n\n      await this.lock;\n    }\n  }\n\n  function buildAsymmetricKeyStore(client) {\n    Object.defineProperty(client, 'asymmetricKeyStore', {\n      configurable: true,\n      get() {\n        const keystore = new ClientKeyStore(this);\n        Object.defineProperty(this, 'asymmetricKeyStore', {\n          configurable: false,\n          value: keystore,\n        });\n\n        return this.asymmetricKeyStore;\n      },\n    });\n  }\n\n  function buildSymmetricKeyStore(client) {\n    const { configuration } = instance(provider);\n    Object.defineProperty(client, 'symmetricKeyStore', {\n      configurable: false,\n      value: new KeyStore(),\n    });\n\n    const algs = new Set();\n\n    if (client.clientSecret) {\n      if (client.clientAuthMethod === 'client_secret_jwt') {\n        if (client.clientAuthSigningAlg) {\n          algs.add(client.clientAuthSigningAlg);\n        } else {\n          configuration.clientAuthSigningAlgValues?.forEach(Set.prototype.add.bind(algs));\n        }\n      }\n\n      [\n        'introspectionSignedResponseAlg',\n        'userinfoSignedResponseAlg',\n        'authorizationSignedResponseAlg',\n        'idTokenSignedResponseAlg',\n        'requestObjectSigningAlg',\n      ].forEach((prop) => {\n        algs.add(client[prop]);\n      });\n\n      if (!client.requestObjectSigningAlg) {\n        configuration.requestObjectSigningAlgValues.forEach(Set.prototype.add.bind(algs));\n      }\n\n      configuration.requestObjectEncryptionAlgValues.forEach(Set.prototype.add.bind(algs));\n\n      if (configuration.requestObjectEncryptionAlgValues.includes('dir')) {\n        configuration.requestObjectEncryptionEncValues.forEach(Set.prototype.add.bind(algs));\n      }\n\n      [\n        'idTokenEncryptedResponse',\n        'userinfoEncryptedResponse',\n        'introspectionEncryptedResponse',\n        'authorizationEncryptedResponse',\n      ].forEach((prop) => {\n        algs.add(client[`${prop}Alg`]);\n        if (client[`${prop}Alg`] === 'dir') {\n          algs.add(client[`${prop}Enc`]);\n        }\n      });\n\n      algs.delete(undefined);\n\n      for (const alg of algs) {\n        if (!(\n          alg.startsWith('HS')\n          || /^A(\\d{3})(?:GCM)?KW$/.test(alg)\n          || /^A(\\d{3})(?:GCM|CBC-HS(\\d{3}))$/.test(alg)\n        )) {\n          algs.delete(alg);\n        }\n      }\n\n      for (const alg of algs) {\n        if (alg.startsWith('HS')) {\n          client.symmetricKeyStore.add({\n            alg, use: 'sig', kty: 'oct', k: base64url.encode(client.clientSecret),\n          });\n        } else if (/^A(\\d{3})(?:GCM)?KW$/.test(alg)) {\n          const len = parseInt(RegExp.$1, 10) / 8;\n          client.symmetricKeyStore.add({\n            alg, use: 'enc', kty: 'oct', k: deriveEncryptionKey(client.clientSecret, len).toString('base64url'),\n          });\n        } else if (/^A(\\d{3})(?:GCM|CBC-HS(\\d{3}))$/.test(alg)) {\n          const len = parseInt(RegExp.$2 || RegExp.$1, 10) / 8;\n          client.symmetricKeyStore.add({\n            alg, use: 'enc', kty: 'oct', k: deriveEncryptionKey(client.clientSecret, len).toString('base64url'),\n          });\n        }\n      }\n    }\n  }\n\n  class Client {\n    #sectorIdentifier = null;\n\n    static #Schema = getSchema(provider);\n\n    static #adapter;\n\n    constructor(metadata, ctx) {\n      const schema = new Client.Schema(metadata, ctx);\n\n      Object.assign(this, mapKeys(schema, (value, key) => {\n        if (!instance(provider).RECOGNIZED_METADATA.includes(key)) {\n          return key;\n        }\n\n        return camelCase(key);\n      }));\n\n      buildAsymmetricKeyStore(this);\n      buildSymmetricKeyStore(this);\n\n      validateJWKS(this.jwks);\n\n      if (this.jwks) {\n        this.jwks.keys\n          .map(checkJWK)\n          .filter(Boolean)\n          .forEach(ClientKeyStore.prototype.add.bind(this.asymmetricKeyStore));\n      }\n    }\n\n    static get adapter() {\n      this.#adapter ||= isConstructable(instance(provider).Adapter)\n        ? new (instance(provider).Adapter)('Client')\n        : instance(provider).Adapter('Client');\n      return this.#adapter;\n    }\n\n    async backchannelPing(backchannelAuthenticationRequest) {\n      if (\n        !this.backchannelClientNotificationEndpoint\n        || this.backchannelTokenDeliveryMode !== 'ping'\n        || !backchannelAuthenticationRequest\n        || !backchannelAuthenticationRequest.jti\n        || backchannelAuthenticationRequest.kind !== 'BackchannelAuthenticationRequest'\n        || !backchannelAuthenticationRequest.params.client_notification_token\n      ) {\n        throw new TypeError();\n      }\n\n      /**\n       * @type typeof fetch\n       */\n      const request = instance(provider).configuration.fetch;\n      return request(new URL(this.backchannelClientNotificationEndpoint).href, {\n        method: 'POST',\n        headers: {\n          authorization: `Bearer ${backchannelAuthenticationRequest.params.client_notification_token}`,\n          'content-type': 'application/json',\n        },\n        body: JSON.stringify({ auth_req_id: backchannelAuthenticationRequest.jti }),\n      }).then((response) => {\n        const { status } = response;\n        if (status !== 204 && status !== 200) {\n          const error = new Error(`expected 204 No Content from ${this.backchannelClientNotificationEndpoint}, got: ${status} ${STATUS_CODES[status]}`);\n          error.response = response;\n          throw error;\n        }\n      });\n    }\n\n    async backchannelLogout(sub, sid) {\n      const logoutToken = new provider.IdToken({ sub }, { client: this, ctx: undefined });\n      logoutToken.mask = { sub: null };\n      logoutToken.set('events', {\n        'http://schemas.openid.net/event/backchannel-logout': {},\n      });\n      logoutToken.set('jti', nanoid());\n\n      if (this.backchannelLogoutSessionRequired) {\n        logoutToken.set('sid', sid);\n      }\n\n      /**\n       * @type typeof fetch\n       */\n      const request = instance(provider).configuration.fetch;\n      return request(new URL(this.backchannelLogoutUri).href, {\n        method: 'POST',\n        headers: {\n          'content-type': 'application/x-www-form-urlencoded',\n        },\n        body: new URLSearchParams({ logout_token: await logoutToken.issue({ use: 'logout' }) }),\n      }).then((response) => {\n        const { status } = response;\n        if (status !== 200 && status !== 204) {\n          const error = new Error(`expected 200 OK from ${this.backchannelLogoutUri}, got: ${status} ${STATUS_CODES[status]}`);\n          error.response = response;\n          throw error;\n        }\n      });\n    }\n\n    responseTypeAllowed(type) {\n      return this.responseTypes.includes(type);\n    }\n\n    // eslint-disable-next-line no-unused-vars\n    responseModeAllowed(responseMode, responseType, fapiProfile) {\n      if (fapiProfile === '1.0 Final' && !responseType.includes('id_token') && !responseMode.includes('jwt')) {\n        return false;\n      }\n\n      return this.responseModes?.includes(responseMode) !== false;\n    }\n\n    grantTypeAllowed(type) {\n      return this.grantTypes.includes(type);\n    }\n\n    #redirectAllowed(value, allowedUris) {\n      const parsed = URL.parse(value);\n      if (!parsed) return false;\n\n      const match = allowedUris.find((allowed) => URL.parse(allowed)?.href === parsed.href);\n      if (\n        !!match\n        || this.applicationType !== 'native'\n        || parsed.protocol !== 'http:'\n        || !LOOPBACKS.has(parsed.hostname)\n      ) {\n        return !!match;\n      }\n\n      parsed.port = '';\n\n      return !!allowedUris\n        .find((allowed) => {\n          const registered = URL.parse(allowed);\n          if (!registered) return false;\n          registered.port = '';\n          return parsed.href === registered.href;\n        });\n    }\n\n    redirectUriAllowed(value) {\n      return this.#redirectAllowed(value, this.redirectUris);\n    }\n\n    postLogoutRedirectUriAllowed(value) {\n      return this.#redirectAllowed(value, this.postLogoutRedirectUris);\n    }\n\n    static async validate(metadata) {\n      const client = new Client(metadata);\n\n      if (client.sectorIdentifierUri !== undefined) {\n        await sectorValidate(provider, client);\n      }\n    }\n\n    metadata() {\n      return mapKeys(this, (value, key) => {\n        const snaked = snakeCase(key);\n        if (!instance(provider).RECOGNIZED_METADATA.includes(snaked)) {\n          return key;\n        }\n\n        return snaked;\n      });\n    }\n\n    get sectorIdentifier() {\n      if (this.#sectorIdentifier === null) {\n        this.#sectorIdentifier = sectorIdentifier(this);\n      }\n\n      return this.#sectorIdentifier;\n    }\n\n    includeSid() {\n      return this.backchannelLogoutUri && this.backchannelLogoutSessionRequired;\n    }\n\n    compareClientSecret(actual) {\n      return constantEquals(this.clientSecret, actual, 1000);\n    }\n\n    checkClientSecretExpiration(message, errorOverride) {\n      if (!this.clientSecretExpiresAt) {\n        return;\n      }\n\n      const { clockTolerance } = instance(provider).configuration;\n\n      if (epochTime() - clockTolerance >= this.clientSecretExpiresAt) {\n        const err = new InvalidClient(message, `client_id ${this.clientId} client_secret expired at ${this.clientSecretExpiresAt}`);\n        if (errorOverride) {\n          err.error = errorOverride;\n          err.message = errorOverride;\n        }\n        throw err;\n      }\n    }\n\n    get clientAuthMethod() {\n      return this.tokenEndpointAuthMethod;\n    }\n\n    get clientAuthSigningAlg() {\n      return this.tokenEndpointAuthSigningAlg;\n    }\n\n    static async find(id) {\n      if (typeof id !== 'string' || !id.length) {\n        return undefined;\n      }\n\n      const { staticClients, dynamicClients } = instance(provider);\n\n      const cached = staticClients?.get(id);\n      if (cached) {\n        if (!(cached instanceof Client)) {\n          const client = new Client(cached);\n          if (client.sectorIdentifierUri !== undefined) {\n            await sectorValidate(provider, client);\n          }\n          Object.defineProperty(client, 'noManage', { value: true });\n          staticClients.set(id, client);\n          return client;\n        }\n\n        return cached;\n      }\n\n      const properties = await this.adapter.find(id);\n\n      if (!properties) {\n        return undefined;\n      }\n\n      const propHash = crypto.hash('sha256', JSON.stringify(properties), 'base64url');\n      let client = dynamicClients.get(propHash);\n\n      if (!client) {\n        client = await addClient(provider, properties, { store: false });\n        dynamicClients.set(propHash, client);\n      }\n\n      return client;\n    }\n\n    static needsSecret(metadata) {\n      if (!nonSecretAuthMethods.has(metadata.token_endpoint_auth_method)) {\n        return true;\n      }\n\n      if (signAlgAttributes.some(isHmac, metadata)) {\n        return true;\n      }\n\n      if (clientEncryptions.some(isSymmetricAlg, metadata)) {\n        return true;\n      }\n\n      return false;\n    }\n\n    static get Schema() {\n      return this.#Schema;\n    }\n  }\n\n  return Client;\n}\n", "export default (object, iteratee) => {\n  const result = {};\n\n  Object.entries(object).forEach(([key, value]) => {\n    result[iteratee(value, key, object)] = value;\n  });\n\n  return result;\n};\n", "import { InvalidClientMetadata } from './errors.js';\n\nexport default (client) => {\n  if (client.subjectType === 'pairwise') {\n    if (!client.sectorIdentifierUri) {\n      switch (true) {\n        case client.responseTypes.length !== 0:\n          return new URL(client.redirectUris[0]).host;\n        case client.grantTypes.includes('urn:openid:params:grant-type:ciba'):\n        case client.grantTypes.includes('urn:ietf:params:oauth:grant-type:device_code'):\n          return new URL(client.jwksUri).host;\n        default:\n          throw new InvalidClientMetadata('could not determine a sector identifier');\n      }\n    }\n  }\n\n  return client.sectorIdentifierUri ? new URL(client.sectorIdentifierUri).host : undefined;\n};\n", "import { CLIENT_ATTRIBUTES } from '../consts/index.js';\n\nimport * as validUrl from './valid_url.js';\nimport { InvalidClientMetadata } from './errors.js';\nimport sectorIdentifier from './sector_identifier.js';\nimport instance from './weak_cache.js';\nimport * as formatters from './formatters.js';\nimport pick from './_/pick.js';\nimport omitBy from './_/omit_by.js';\n\nconst W3CEmailRegExp = /^[a-zA-Z0-9.!#$%&\u2019*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$/;\nconst needsJwks = {\n  jwe: /^(RSA|ECDH)/,\n  jws: /^(?:(?:P|E|R)S(?:256|384|512)|Ed(?:DSA|25519)|ML-DSA-(?:44|65|87))$/,\n};\nconst {\n  ARYS,\n  BOOL,\n  ENUM: ENUMS,\n  HTTPS_URI,\n  LOOPBACKS,\n  REQUIRED,\n  STRING,\n  SYNTAX,\n  WEB_URI,\n  WHEN,\n} = CLIENT_ATTRIBUTES;\n\nfunction isUndefined(value) {\n  return value === undefined;\n}\n\nexport default function getSchema(provider) {\n  const { configuration, features } = instance(provider);\n  const { scopes } = configuration;\n\n  const RECOGNIZED_METADATA = structuredClone(CLIENT_ATTRIBUTES.RECOGNIZED_METADATA);\n  const DEFAULTS = structuredClone(CLIENT_ATTRIBUTES.DEFAULTS);\n  const DEFAULT_CONFIGURATION = structuredClone(configuration.clientDefaults);\n  Object.assign(DEFAULTS, DEFAULT_CONFIGURATION);\n\n  if (configuration.subjectTypes.size === 1 && configuration.subjectTypes.has('pairwise')) {\n    DEFAULTS.subject_type = 'pairwise';\n  }\n\n  if (features.mTLS.enabled && features.mTLS.tlsClientAuth) {\n    RECOGNIZED_METADATA.push(\n      'tls_client_auth_subject_dn',\n      'tls_client_auth_san_dns',\n      'tls_client_auth_san_uri',\n      'tls_client_auth_san_ip',\n      'tls_client_auth_san_email',\n      'use_mtls_endpoint_aliases',\n    );\n  }\n\n  if (configuration.clientAuthSigningAlgValues) {\n    RECOGNIZED_METADATA.push('token_endpoint_auth_signing_alg');\n  }\n\n  if (features.jwtUserinfo.enabled) {\n    RECOGNIZED_METADATA.push('userinfo_signed_response_alg');\n  }\n\n  if (features.introspection.enabled) {\n    if (features.jwtIntrospection.enabled) {\n      RECOGNIZED_METADATA.push('introspection_signed_response_alg');\n\n      if (features.encryption.enabled) {\n        RECOGNIZED_METADATA.push(\n          'introspection_encrypted_response_alg',\n          'introspection_encrypted_response_enc',\n        );\n      }\n    }\n  }\n\n  if (features.rpInitiatedLogout.enabled) {\n    RECOGNIZED_METADATA.push('post_logout_redirect_uris');\n  }\n\n  if (features.backchannelLogout.enabled) {\n    RECOGNIZED_METADATA.push(\n      'backchannel_logout_session_required',\n      'backchannel_logout_uri',\n    );\n  }\n\n  if (\n    features.requestObjects.enabled\n  ) {\n    RECOGNIZED_METADATA.push(\n      'request_object_signing_alg',\n      'require_signed_request_object',\n    );\n    if (features.encryption.enabled) {\n      RECOGNIZED_METADATA.push(\n        'request_object_encryption_alg',\n        'request_object_encryption_enc',\n      );\n    }\n  }\n\n  if (features.pushedAuthorizationRequests.enabled) {\n    RECOGNIZED_METADATA.push('require_pushed_authorization_requests');\n  }\n\n  if (features.encryption.enabled) {\n    RECOGNIZED_METADATA.push(\n      'id_token_encrypted_response_alg',\n      'id_token_encrypted_response_enc',\n    );\n    if (features.jwtUserinfo.enabled) {\n      RECOGNIZED_METADATA.push(\n        'userinfo_encrypted_response_alg',\n        'userinfo_encrypted_response_enc',\n      );\n    }\n  }\n\n  if (features.jwtResponseModes.enabled) {\n    RECOGNIZED_METADATA.push('authorization_signed_response_alg');\n    if (features.encryption.enabled) {\n      RECOGNIZED_METADATA.push(\n        'authorization_encrypted_response_alg',\n        'authorization_encrypted_response_enc',\n      );\n    }\n  }\n\n  if (features.mTLS.enabled && features.mTLS.certificateBoundAccessTokens) {\n    RECOGNIZED_METADATA.push('tls_client_certificate_bound_access_tokens');\n  }\n\n  if (features.ciba.enabled) {\n    RECOGNIZED_METADATA.push(\n      'backchannel_token_delivery_mode',\n      'backchannel_user_code_parameter',\n      'backchannel_client_notification_endpoint',\n    );\n    if (features.requestObjects.enabled) {\n      RECOGNIZED_METADATA.push('backchannel_authentication_request_signing_alg');\n    }\n  }\n\n  if (features.dPoP.enabled) {\n    RECOGNIZED_METADATA.push('dpop_bound_access_tokens');\n  }\n\n  if (features.richAuthorizationRequests.enabled) {\n    RECOGNIZED_METADATA.push('authorization_details_types');\n  }\n\n  let CHOICES = {};\n\n  if (features.rpMetadataChoices.enabled) {\n    CHOICES = Object.fromEntries(Object.entries(CLIENT_ATTRIBUTES.CHOICES)\n      .filter(([key]) => RECOGNIZED_METADATA.includes(key)));\n    RECOGNIZED_METADATA.push(...Object.values(CHOICES));\n  }\n\n  instance(provider).RECOGNIZED_METADATA = RECOGNIZED_METADATA;\n\n  const ENUM = {\n    ...ENUMS,\n    default_acr_values: () => configuration.acrValues,\n    grant_types: () => configuration.grantTypes,\n    id_token_encrypted_response_alg: () => configuration.idTokenEncryptionAlgValues,\n    id_token_encrypted_response_enc: () => configuration.idTokenEncryptionEncValues,\n    id_token_signed_response_alg: () => configuration.idTokenSigningAlgValues,\n    request_object_signing_alg: () => configuration.requestObjectSigningAlgValues,\n    backchannel_token_delivery_mode: () => features.ciba.deliveryModes,\n    backchannel_authentication_request_signing_alg: () => configuration.requestObjectSigningAlgValues.filter((alg) => !alg.startsWith('HS')),\n    request_object_encryption_alg: () => configuration.requestObjectEncryptionAlgValues,\n    request_object_encryption_enc: () => configuration.requestObjectEncryptionEncValues,\n    response_types: () => configuration.responseTypes,\n    response_modes: () => [...instance(provider).responseModes.keys()],\n    subject_type: () => configuration.subjectTypes,\n    authorization_details_types:\n      () => Object.keys(features.richAuthorizationRequests.types),\n    token_endpoint_auth_method: (metadata) => {\n      if (metadata.subject_type === 'pairwise') {\n        for (const grant of ['urn:ietf:params:oauth:grant-type:device_code', 'urn:openid:params:grant-type:ciba']) {\n          if (metadata.grant_types.includes(grant) && !['private_key_jwt', 'self_signed_tls_client_auth'].includes(metadata.token_endpoint_auth_method)) {\n            metadata.invalidate(`pairwise ${grant} clients must utilize private_key_jwt or self_signed_tls_client_auth token endpoint authentication methods`);\n          }\n        }\n      }\n\n      return configuration.clientAuthMethods;\n    },\n    token_endpoint_auth_signing_alg: ({ token_endpoint_auth_method: method }) => {\n      switch (method) {\n        case 'private_key_jwt':\n          return configuration.clientAuthSigningAlgValues.filter((x) => !x.startsWith('HS'));\n        case 'client_secret_jwt':\n          return configuration.clientAuthSigningAlgValues.filter((x) => x.startsWith('HS'));\n        default:\n          return [];\n      }\n    },\n    userinfo_encrypted_response_alg: () => configuration.userinfoEncryptionAlgValues,\n    userinfo_encrypted_response_enc: () => configuration.userinfoEncryptionEncValues,\n    userinfo_signed_response_alg: () => configuration.userinfoSigningAlgValues,\n    introspection_encrypted_response_alg: () => configuration.introspectionEncryptionAlgValues,\n    introspection_encrypted_response_enc: () => configuration.introspectionEncryptionEncValues,\n    introspection_signed_response_alg: () => configuration.introspectionSigningAlgValues,\n    authorization_encrypted_response_alg: () => configuration.authorizationEncryptionAlgValues,\n    authorization_encrypted_response_enc: () => configuration.authorizationEncryptionEncValues,\n    authorization_signed_response_alg: () => configuration.authorizationSigningAlgValues,\n  };\n\n  class Schema {\n    constructor(\n      metadata,\n      ctx,\n      processCustomMetadata = !!configuration.extraClientMetadata.properties.length,\n    ) {\n      this.#initialize(metadata);\n\n      if (processCustomMetadata) {\n        this.processCustomMetadata(ctx);\n        this.#initialize(this);\n      }\n\n      this.ensureStripUnrecognized();\n      this.ensureStripChoices();\n    }\n\n    #initialize(metadata) {\n      Object.assign(\n        this,\n        omitBy(\n          pick(DEFAULTS, ...RECOGNIZED_METADATA),\n          (value, key) => isUndefined(value)\n            || (key in CHOICES && metadata[CHOICES[key]] !== undefined),\n        ),\n        omitBy(\n          pick(metadata, ...RECOGNIZED_METADATA, ...configuration.extraClientMetadata.properties),\n          isUndefined,\n        ),\n      );\n\n      this.choices();\n      this.required();\n      this.booleans();\n      this.whens();\n      this.arrays();\n      this.strings();\n      this.syntax();\n      this.normalizeResponseTypes();\n      this.enums();\n      this.webUris();\n      this.scopes();\n      this.postLogoutRedirectUris();\n      this.redirectUris();\n      this.checkContacts();\n      this.jarPolicy();\n      this.parPolicy();\n\n      // max_age and client_secret_expires_at format\n      ['default_max_age', 'client_secret_expires_at'].forEach((prop) => {\n        if (this[prop] !== undefined) {\n          if (!Number.isSafeInteger(this[prop]) || Math.sign(this[prop]) === -1) {\n            this.invalidate(`${prop} must be a non-negative integer`);\n          }\n        }\n      });\n\n      const responseTypes = new Set(this.response_types.map((rt) => rt.split(' ')).flat());\n\n      if (this.grant_types.some((type) => ['authorization_code', 'implicit'].includes(type)) && !this.response_types.length) {\n        this.invalidate('response_types must contain members');\n      }\n\n      if (responseTypes.size && !this.redirect_uris.length) {\n        const { pushedAuthorizationRequests: par } = features;\n        if (\n          !par.enabled\n          || !par.allowUnregisteredRedirectUris\n          || !this.require_pushed_authorization_requests\n          || this.token_endpoint_auth_method === 'none'\n          || this.sector_identifier_uri\n        ) {\n          this.invalidate('redirect_uris must contain members');\n        }\n      }\n\n      if (responseTypes.size && this.response_modes?.length === 0) {\n        this.invalidate('response_modes must contain members');\n      }\n\n      if (responseTypes.has('code') && !this.grant_types.includes('authorization_code')) {\n        this.invalidate(\"grant_types must contain 'authorization_code' when code is amongst response_types\");\n      }\n\n      if (responseTypes.has('token') || responseTypes.has('id_token')) {\n        if (!this.grant_types.includes('implicit')) {\n          this.invalidate(\"grant_types must contain 'implicit' when 'id_token' or 'token' are amongst response_types\");\n        }\n      }\n\n      {\n        const { 0: pop, length } = [\n          'tls_client_certificate_bound_access_tokens',\n          'dpop_bound_access_tokens',\n        ].filter((conf) => this[conf]);\n\n        if (length > 1) {\n          this.invalidate('only one proof of possession mechanism can be made required at a time');\n        }\n\n        if (length !== 0 && responseTypes.has('token')) {\n          this.invalidate(`response_types must not include \"token\" when ${pop} is used`);\n        }\n      }\n\n      {\n        const { length } = [\n          this.tls_client_auth_san_dns,\n          this.tls_client_auth_san_email,\n          this.tls_client_auth_san_ip,\n          this.tls_client_auth_san_uri,\n          this.tls_client_auth_subject_dn,\n        ].filter(Boolean);\n\n        if (this.token_endpoint_auth_method === 'tls_client_auth') {\n          if (length === 0) {\n            this.invalidate('tls_client_auth requires one of the certificate subject value parameters');\n          }\n\n          if (length !== 1) {\n            this.invalidate('only one tls_client_auth certificate subject value must be provided');\n          }\n        } else {\n          this.#unset('tls_client_auth_san_dns');\n          this.#unset('tls_client_auth_san_email');\n          this.#unset('tls_client_auth_san_ip');\n          this.#unset('tls_client_auth_san_uri');\n          this.#unset('tls_client_auth_subject_dn');\n        }\n      }\n\n      // SECTOR IDENTIFIER VALIDATION\n      sectorIdentifier(this);\n\n      if (this.jwks !== undefined && this.jwks_uri !== undefined) {\n        this.invalidate('jwks and jwks_uri must not be used at the same time');\n      }\n    }\n\n    choices() {\n      for (const [target, choice] of Object.entries(CHOICES)) {\n        if (this[choice] !== undefined) {\n          if (!Array.isArray(this[choice])) {\n            this.invalidate(`${choice} must be an array`);\n          }\n          const choices = new Set(this[choice]);\n\n          if (this[target] !== undefined && !choices.has(this[target])) {\n            this.invalidate(`${choice} must include the value of provided ${target}`);\n          }\n\n          const only = ENUM[target](this);\n\n          // test the options in the following order:\n          // - explicit value (if provided)\n          // - ...rest\n          const options = new Set();\n          if (this[target]) {\n            options.add(this[target]);\n          }\n          for (const value of choices) {\n            if (typeof value !== 'string' || !value.length) {\n              this.invalidate(`${choice} must only contain strings`);\n            }\n            options.add(value);\n          }\n\n          for (const option of options) {\n            try {\n              this[target] = option;\n              this.#enum(target, only);\n              break;\n            } catch {\n              this.#unset(target);\n            }\n          }\n\n          if (!this[target]) {\n            this.invalidate(`${choice} includes no supported values`);\n          }\n        }\n      }\n    }\n\n    invalidate(message, code) { // eslint-disable-line class-methods-use-this, no-unused-vars\n      throw new InvalidClientMetadata(message);\n    }\n\n    required() {\n      const checked = REQUIRED.slice();\n      if (provider.Client.needsSecret(this)) {\n        checked.push('client_secret');\n      }\n\n      if (Array.isArray(this.response_types) && this.response_types.length) {\n        checked.push('redirect_uris');\n      } else if (this.redirect_uris === undefined) {\n        this.redirect_uris = [];\n      }\n\n      if (Array.isArray(this.grant_types) && this.grant_types.includes('urn:openid:params:grant-type:ciba')) {\n        checked.push('backchannel_token_delivery_mode');\n        if (this.backchannel_token_delivery_mode !== 'poll') {\n          checked.push('backchannel_client_notification_endpoint');\n        }\n\n        if (this.subject_type === 'pairwise') {\n          checked.push('jwks_uri');\n          if (Array.isArray(this.response_types) && this.response_types.length) {\n            checked.push('sector_identifier_uri');\n          }\n        }\n      }\n\n      if (this.subject_type === 'pairwise') {\n        if (\n          Array.isArray(this.grant_types)\n          && this.grant_types.includes('urn:ietf:params:oauth:grant-type:device_code')\n        ) {\n          checked.push('jwks_uri');\n          if (Array.isArray(this.response_types) && this.response_types.length) {\n            checked.push('sector_identifier_uri');\n          }\n        }\n\n        if (\n          Array.isArray(this.response_types)\n          && this.response_types.length\n          && Array.isArray(this.redirect_uris)\n          && new Set(this.redirect_uris.map((uri) => new URL(uri).host)).size > 1\n        ) {\n          checked.push('sector_identifier_uri');\n        }\n      }\n\n      checked.forEach((prop) => {\n        if (!this[prop]) {\n          this.invalidate(`${prop} is mandatory property`);\n        }\n      });\n\n      const requireJwks = ['private_key_jwt', 'self_signed_tls_client_auth'].includes(this.token_endpoint_auth_method)\n        || (needsJwks.jws.test(this.request_object_signing_alg))\n        || (needsJwks.jws.test(this.backchannel_authentication_request_signing_alg))\n        || (needsJwks.jwe.test(this.id_token_encrypted_response_alg))\n        || (needsJwks.jwe.test(this.userinfo_encrypted_response_alg))\n        || (needsJwks.jwe.test(this.introspection_encrypted_response_alg))\n        || (needsJwks.jwe.test(this.authorization_encrypted_response_alg));\n\n      if (requireJwks && !this.jwks && !this.jwks_uri) {\n        this.invalidate('jwks or jwks_uri is mandatory for this client');\n      }\n    }\n\n    strings() {\n      STRING.forEach((prop) => {\n        if (this[prop] !== undefined) {\n          const isAry = ARYS.includes(prop);\n          (isAry ? this[prop] : [this[prop]]).forEach((val) => {\n            if (typeof val !== 'string' || !val.length) {\n              this.invalidate(isAry\n                ? `${prop} must only contain strings`\n                : `${prop} must be a non-empty string if provided`);\n            }\n          });\n        }\n      });\n    }\n\n    webUris() {\n      WEB_URI.forEach((prop) => {\n        if (this[prop] !== undefined) {\n          const isAry = ARYS.includes(prop);\n          (isAry ? this[prop] : [this[prop]]).forEach((val) => {\n            const method = HTTPS_URI.includes(prop) ? 'isHttpsUri' : 'isWebUri';\n            const type = method === 'isWebUri' ? 'web' : 'https';\n            if (!validUrl[method](val)) {\n              this.invalidate(isAry\n                ? `${prop} must only contain ${type} uris`\n                : `${prop} must be a ${type} uri`);\n            }\n          });\n        }\n      });\n    }\n\n    arrays() {\n      ARYS.forEach((prop) => {\n        if (this[prop] !== undefined) {\n          if (!Array.isArray(this[prop])) {\n            this.invalidate(`${prop} must be an array`);\n          }\n          this[prop] = [...new Set(this[prop])];\n        }\n      });\n    }\n\n    booleans() {\n      BOOL.forEach((prop) => {\n        if (this[prop] !== undefined) {\n          if (typeof this[prop] !== 'boolean') {\n            this.invalidate(`${prop} must be a boolean`);\n          }\n        }\n      });\n    }\n\n    whens() {\n      Object.entries(WHEN).forEach(([when, [property, value]]) => {\n        if (this[when] !== undefined && this[property] === undefined) {\n          this.invalidate(`${property} is mandatory property when ${when} is provided`);\n        }\n\n        if (value && this[when] === undefined && this[property] !== undefined) {\n          this[when] = value;\n        }\n      });\n    }\n\n    enums() {\n      Object.entries(ENUM).forEach(([prop, fn]) => {\n        const only = fn(this);\n\n        if (this[prop] !== undefined) {\n          this.#enum(prop, only);\n        }\n      });\n    }\n\n    #enum(prop, only) {\n      const isAry = ARYS.includes(prop);\n      let length;\n      let method;\n      if (only instanceof Set) {\n        ({ size: length } = only);\n        method = 'has';\n      } else {\n        ({ length } = only);\n        method = 'includes';\n      }\n\n      if (isAry && !this[prop].every((val) => only[method](val))) {\n        if (length) {\n          this.invalidate(`${prop} can only contain ${formatters.formatList([...only], { type: 'disjunction' })}`);\n        } else {\n          this.invalidate(`${prop} must be empty (no values are allowed)`);\n        }\n      } else if (!isAry && !only[method](this[prop])) {\n        if (length) {\n          this.invalidate(`${prop} must be ${formatters.formatList([...only], { type: 'disjunction' })}`);\n        } else {\n          this.invalidate(`${prop} must not be provided (no values are allowed)`);\n        }\n      }\n    }\n\n    normalizeResponseTypes() {\n      this.response_types = this.response_types.map((type) => [...new Set(type.split(' '))].sort().join(' '));\n    }\n\n    postLogoutRedirectUris() {\n      if (this.post_logout_redirect_uris) {\n        this.redirectUris(this.post_logout_redirect_uris, 'post_logout_redirect_uris');\n      }\n    }\n\n    redirectUris(uris = this.redirect_uris, label = 'redirect_uris') {\n      uris.forEach((redirectUri) => {\n        const parsed = URL.parse(redirectUri);\n        if (!parsed) {\n          this.invalidate(`${label} must only contain valid uris`);\n        }\n\n        const { hostname, protocol, hash } = parsed;\n\n        if (hash) {\n          this.invalidate(`${label} must not contain fragments`);\n        }\n\n        switch (this.application_type) { // eslint-disable-line default-case\n          case 'web': {\n            if (!['https:', 'http:'].includes(protocol)) {\n              this.invalidate(`${label} must only contain web uris`);\n            }\n\n            if (this.grant_types.includes('implicit')) {\n              if (protocol === 'http:') {\n                this.invalidate(`${label} for web clients using implicit flow MUST only register URLs using the https scheme`, 'implicit-force-https');\n              }\n\n              if (hostname === 'localhost') {\n                this.invalidate(`${label} for web clients using implicit flow must not be using localhost`, 'implicit-forbid-localhost');\n              }\n            }\n            break;\n          }\n          case 'native': {\n            switch (protocol) {\n              case 'http:': // Loopback Interface Redirection\n                if (!LOOPBACKS.has(hostname)) {\n                  this.invalidate(`${label} for native clients using http as a protocol can only use loopback addresses as hostnames`);\n                }\n                break;\n              case 'https:': // Claimed HTTPS URI Redirection\n                if (LOOPBACKS.has(hostname)) {\n                  this.invalidate(`${label} for native clients using claimed HTTPS URIs must not be using ${hostname} as hostname`);\n                }\n                break;\n              default: // Private-use URI Scheme Redirection\n                if (!protocol.includes('.')) {\n                  this.invalidate(`${label} for native clients using Custom URI scheme should use reverse domain name based scheme`);\n                }\n            }\n            break;\n          }\n        }\n      });\n    }\n\n    checkContacts() {\n      if (this.contacts) {\n        this.contacts.forEach((contact) => {\n          if (!W3CEmailRegExp.test(contact)) {\n            this.invalidate('contacts can only contain email addresses');\n          }\n        });\n      }\n    }\n\n    processCustomMetadata(ctx) {\n      configuration.extraClientMetadata.properties.forEach((prop) => {\n        configuration.extraClientMetadata.validator(ctx, prop, this[prop], this);\n      });\n    }\n\n    parPolicy() {\n      const par = features.pushedAuthorizationRequests;\n      if (par.enabled && par.requirePushedAuthorizationRequests) {\n        this.require_pushed_authorization_requests = true;\n      }\n    }\n\n    jarPolicy() {\n      if (features.requestObjects.enabled && features.requestObjects.requireSignedRequestObject) {\n        this.require_signed_request_object = true;\n      }\n    }\n\n    ensureStripUnrecognized() {\n      const allowed = [...RECOGNIZED_METADATA, ...configuration.extraClientMetadata.properties];\n      Object.keys(this).forEach((prop) => {\n        if (!allowed.includes(prop)) {\n          this.#unset(prop);\n        }\n      });\n    }\n\n    ensureStripChoices() {\n      Object.values(CHOICES).forEach(this.#unset, this);\n    }\n\n    #unset(prop) {\n      delete this[prop];\n    }\n\n    scopes() {\n      if (this.scope) {\n        const parsed = new Set(this.scope.split(' '));\n        parsed.forEach((scope) => {\n          if (!scopes.has(scope)) {\n            this.invalidate('scope must only contain Authorization Server supported scope values');\n          }\n        });\n        this.scope = [...parsed].join(' ');\n      }\n    }\n\n    syntax() {\n      for (const [prop, regexp] of Object.entries(SYNTAX)) {\n        if (regexp.exec(this[prop])) {\n          this.invalidate(`invalid ${prop} value`);\n        }\n      }\n    }\n  }\n\n  return Schema;\n}\n", "import setAudience from './mixins/set_audience.js';\nimport hasFormat from './mixins/has_format.js';\nimport isSenderConstrained from './mixins/is_sender_constrained.js';\nimport apply from './mixins/apply.js';\n\nexport default (provider) => class ClientCredentials extends apply([\n  setAudience,\n  isSenderConstrained,\n  hasFormat(provider, 'ClientCredentials', provider.BaseToken),\n]) {\n  static get IN_PAYLOAD() {\n    return [\n      ...super.IN_PAYLOAD,\n      'aud',\n      'extra',\n      'scope',\n    ];\n  }\n};\n", "import constantEquals from '../helpers/constant_equals.js';\n\nimport apply from './mixins/apply.js';\nimport consumable from './mixins/consumable.js';\nimport hasFormat from './mixins/has_format.js';\nimport hasGrantId from './mixins/has_grant_id.js';\nimport isAttestationConstrained from './mixins/is_attestation_constrained.js';\nimport isSessionBound from './mixins/is_session_bound.js';\nimport storesAuth from './mixins/stores_auth.js';\n\nexport default (provider) => class DeviceCode extends apply([\n  consumable,\n  hasGrantId,\n  isAttestationConstrained,\n  isSessionBound(provider),\n  storesAuth,\n  hasFormat(provider, 'DeviceCode', provider.BaseToken),\n]) {\n  static async findByUserCode(userCode, { ignoreExpiration = false } = {}) {\n    const stored = await this.adapter.findByUserCode(userCode);\n    if (!stored) return undefined;\n    try {\n      const payload = await this.verify(stored, { ignoreExpiration });\n      if (!constantEquals(userCode, payload.userCode)) {\n        return undefined;\n      }\n      return this.instantiate(payload);\n    } catch (err) {\n      return undefined;\n    }\n  }\n\n  static get IN_PAYLOAD() {\n    return [\n      ...super.IN_PAYLOAD,\n      'error',\n      'errorDescription',\n      'params',\n      'userCode',\n      'inFlight',\n      'deviceInfo',\n    ];\n  }\n};\n", "import apply from './mixins/apply.js';\nimport consumable from './mixins/consumable.js';\nimport hasFormat from './mixins/has_format.js';\nimport hasGrantId from './mixins/has_grant_id.js';\nimport isAttestationConstrained from './mixins/is_attestation_constrained.js';\nimport isSessionBound from './mixins/is_session_bound.js';\nimport storesAuth from './mixins/stores_auth.js';\n\nexport default (provider) => class BackchannelAuthenticationRequest extends apply([\n  consumable,\n  hasGrantId,\n  isAttestationConstrained,\n  isSessionBound(provider),\n  storesAuth,\n  hasFormat(provider, 'BackchannelAuthenticationRequest', provider.BaseToken),\n]) {\n  static get IN_PAYLOAD() {\n    return [\n      ...super.IN_PAYLOAD,\n      'error',\n      'errorDescription',\n      'params',\n      'rar',\n    ];\n  }\n};\n", "/* eslint-disable no-unused-expressions */\nimport { format } from 'node:util';\nimport * as crypto from 'node:crypto';\n\nimport merge from '../helpers/_/merge.js';\nimport epochTime from '../helpers/epoch_time.js';\nimport * as JWT from '../helpers/jwt.js';\nimport { InvalidClientMetadata } from '../helpers/errors.js';\nimport instance from '../helpers/weak_cache.js';\nimport isPlainObject from '../helpers/_/is_plain_object.js';\n\nconst hashes = ['at_hash', 'c_hash', 's_hash'];\n\nfunction getHashArgs(alg) {\n  switch (alg) {\n    case 'RS256':\n    case 'PS256':\n    case 'ES256':\n    case 'HS256':\n      return 'sha256';\n    case 'RS384':\n    case 'PS384':\n    case 'ES384':\n    case 'HS384':\n      return 'sha384';\n    case 'RS512':\n    case 'PS512':\n    case 'ES512':\n    case 'HS512':\n    case 'Ed25519':\n    case 'EdDSA': // alias for Ed25519, Ed448 is not supported\n      return 'sha512';\n    case 'ML-DSA-44':\n    case 'ML-DSA-65':\n    case 'ML-DSA-87':\n      return ['shake256', { outputLength: 64 }];\n    default:\n      throw new Error('not implemented');\n  }\n}\n\nconst messages = {\n  sig: {\n    idtoken: 'client secret is expired - cannot issue an ID Token (%s)',\n    logout: 'client secret is expired - cannot issue a Logout Token (%s)',\n    userinfo: 'client secret is expired - cannot respond with %s JWT UserInfo response',\n    introspection: 'client secret is expired - cannot respond with %s JWT Introspection response',\n  },\n  enc: {\n    idtoken: 'client secret is expired - cannot issue an encrypted ID Token (%s)',\n    logout: 'client secret is expired - cannot issue an encrypted Logout Token (%s)',\n    userinfo: 'client secret is expired - cannot respond with %s encrypted JWT UserInfo response',\n    introspection: 'client secret is expired - cannot respond with %s encrypted JWT Introspection response',\n  },\n};\n\nexport default function getIdToken(provider) {\n  return class IdToken {\n    constructor(available, { ctx, client = ctx ? ctx.oidc.client : undefined }) {\n      if (!isPlainObject(available)) {\n        throw new TypeError('expected claims to be an object, are you sure claims() method resolves with or returns one?');\n      }\n      this.extra = {};\n      this.available = available;\n      this.client = client;\n      this.ctx = ctx;\n    }\n\n    static expiresIn(...args) {\n      const ttl = instance(provider).configuration.ttl[this.name];\n\n      if (typeof ttl === 'number') {\n        return ttl;\n      }\n\n      return ttl(...args);\n    }\n\n    set(key, value) { this.extra[key] = value; }\n\n    async payload() {\n      const mask = new provider.Claims(this.available, { ctx: this.ctx, client: this.client });\n\n      mask.scope(this.scope);\n      mask.mask(this.mask);\n      mask.rejected(this.rejected);\n\n      return merge({}, await mask.result(), this.extra);\n    }\n\n    async issue({ use, expiresAt = null } = {}) {\n      const { client } = this;\n      const expiresIn = expiresAt ? expiresAt - epochTime() : undefined;\n      let alg;\n\n      const payload = await this.payload();\n      let signOptions;\n      let encryption;\n\n      switch (use) {\n        case 'idtoken':\n          alg = client.idTokenSignedResponseAlg;\n          signOptions = {\n            audience: client.clientId,\n            expiresIn: (expiresIn || this.constructor.expiresIn(this.ctx, this, client)),\n            issuer: provider.issuer,\n            subject: payload.sub,\n          };\n          encryption = {\n            alg: client.idTokenEncryptedResponseAlg,\n            enc: client.idTokenEncryptedResponseEnc,\n          };\n          break;\n        case 'logout':\n          alg = client.idTokenSignedResponseAlg;\n          signOptions = {\n            audience: client.clientId,\n            issuer: provider.issuer,\n            subject: payload.sub,\n            typ: 'logout+jwt',\n            expiresIn: 120,\n          };\n          encryption = {\n            alg: client.idTokenEncryptedResponseAlg,\n            enc: client.idTokenEncryptedResponseEnc,\n          };\n          break;\n        case 'userinfo':\n          alg = client.userinfoSignedResponseAlg;\n          signOptions = {\n            audience: client.clientId,\n            issuer: provider.issuer,\n            subject: payload.sub,\n            expiresIn,\n          };\n          encryption = {\n            alg: client.userinfoEncryptedResponseAlg,\n            enc: client.userinfoEncryptedResponseEnc,\n          };\n          break;\n        case 'introspection':\n          alg = client.introspectionSignedResponseAlg;\n          signOptions = {\n            audience: client.clientId,\n            issuer: provider.issuer,\n            typ: 'token-introspection+jwt',\n          };\n          encryption = {\n            alg: client.introspectionEncryptedResponseAlg,\n            enc: client.introspectionEncryptedResponseEnc,\n          };\n          break;\n        case 'authorization':\n          alg = client.authorizationSignedResponseAlg;\n          signOptions = {\n            audience: client.clientId,\n            expiresIn: 120,\n            issuer: provider.issuer,\n            noIat: true,\n          };\n          encryption = {\n            alg: client.authorizationEncryptedResponseAlg,\n            enc: client.authorizationEncryptedResponseEnc,\n          };\n          break;\n        default:\n          throw new TypeError('invalid use option');\n      }\n\n      const signed = await (async () => {\n        if (typeof alg !== 'string') {\n          throw new Error();\n        }\n        let jwk;\n        let key;\n        if (alg.startsWith('HS')) {\n          if (use !== 'authorization') { // handled in checkResponseMode\n            client.checkClientSecretExpiration(format(messages.sig[use], alg));\n          }\n          [jwk] = client.symmetricKeyStore.selectForSign({ alg, use: 'sig' });\n          key = client.symmetricKeyStore.getKeyObject(jwk);\n        } else {\n          [jwk] = instance(provider).keystore.selectForSign({ alg, use: 'sig' });\n          key = instance(provider).keystore.getKeyObject(jwk);\n        }\n\n        if (use === 'idtoken') {\n          const digest = getHashArgs(alg);\n          for (const claim of hashes) {\n            if (payload[claim]) {\n              const hash = typeof digest === 'string'\n                ? crypto.hash(digest, payload[claim], 'buffer')\n                : crypto.createHash(...digest).update(payload[claim]).digest();\n              payload[claim] = hash.subarray(0, hash.byteLength / 2).toString('base64url');\n            }\n          }\n        }\n\n        if (jwk) {\n          signOptions.fields = { kid: jwk.kid };\n        }\n\n        return JWT.sign(payload, key, alg, signOptions);\n      })();\n\n      if (!encryption.enc) {\n        return signed;\n      }\n\n      if (/^(A|dir$)/.test(encryption.alg)) {\n        if (use !== 'authorization') { // handled in checkResponseMode\n          client.checkClientSecretExpiration(format(messages.enc[use], encryption.alg));\n        }\n      }\n\n      let jwk;\n      let encryptionKey;\n      if (encryption.alg === 'dir') {\n        [jwk] = client.symmetricKeyStore.selectForEncrypt({ alg: encryption.enc, use: 'enc' });\n        jwk && (encryptionKey = client.symmetricKeyStore.getKeyObject(jwk, true));\n      } else if (encryption.alg.startsWith('A')) {\n        [jwk] = client.symmetricKeyStore.selectForEncrypt({ alg: encryption.alg, use: 'enc' });\n        jwk && (encryptionKey = client.symmetricKeyStore.getKeyObject(jwk, true));\n      } else {\n        await client.asymmetricKeyStore.refresh();\n        [jwk] = client.asymmetricKeyStore.selectForEncrypt({ alg: encryption.alg, use: 'enc' });\n        jwk && (encryptionKey = client.asymmetricKeyStore.getKeyObject(jwk, true));\n      }\n\n      if (!encryptionKey) {\n        throw new InvalidClientMetadata(`no suitable encryption key found (${encryption.alg})`);\n      }\n\n      const { kid } = jwk;\n\n      return JWT.encrypt(signed, encryptionKey, {\n        enc: encryption.enc,\n        alg: encryption.alg,\n        fields: {\n          cty: 'JWT',\n          kid,\n          iss: signOptions.issuer,\n          aud: signOptions.audience,\n        },\n      });\n    }\n\n    static async validate(jwt, client) {\n      const alg = client.idTokenSignedResponseAlg;\n\n      let keyOrStore;\n      if (alg.startsWith('HS')) {\n        client.checkClientSecretExpiration('client secret is expired - cannot validate ID Token Hint');\n        keyOrStore = client.symmetricKeyStore;\n      } else {\n        keyOrStore = instance(provider).keystore;\n      }\n\n      const opts = {\n        ignoreExpiration: true,\n        audience: client.clientId,\n        issuer: provider.issuer,\n        clockTolerance: instance(provider).configuration.clockTolerance,\n        algorithm: alg,\n        subject: true,\n      };\n\n      return JWT.verify(jwt, keyOrStore, opts);\n    }\n  };\n}\n", "import instance from '../../helpers/weak_cache.js';\n\nfunction validate(provider, policies) {\n  if (!Array.isArray(policies)) {\n    throw new TypeError('policies must be an array');\n  }\n  if (!policies.length) {\n    throw new TypeError('policies must not be empty');\n  }\n  policies.forEach((policy) => {\n    if (typeof policy !== 'string') {\n      throw new TypeError('policies must be strings');\n    }\n    if (!instance(provider).features.registration.policies[policy]) {\n      throw new TypeError(`policy ${policy} not configured`);\n    }\n  });\n}\n\nexport default (provider) => (superclass) => class extends superclass {\n  async save() {\n    if (typeof this.policies !== 'undefined') validate(provider, this.policies);\n    return super.save();\n  }\n\n  static async find(...args) {\n    const result = await super.find(...args);\n    if (result && typeof result.policies !== 'undefined') validate(provider, result.policies);\n    return result;\n  }\n\n  static get IN_PAYLOAD() {\n    return [\n      ...super.IN_PAYLOAD,\n      'policies',\n    ];\n  }\n};\n", "import apply from './mixins/apply.js';\nimport hasFormat from './mixins/has_format.js';\nimport hasPolicies from './mixins/has_policies.js';\n\nexport default (provider) => class InitialAccessToken extends apply([\n  hasPolicies(provider),\n  hasFormat(provider, 'InitialAccessToken', provider.BaseToken),\n]) {\n  static get IN_PAYLOAD() {\n    return super.IN_PAYLOAD.filter((v) => v !== 'clientId');\n  }\n};\n", "import instance from '../helpers/weak_cache.js';\nimport epochTime from '../helpers/epoch_time.js';\n\nimport hasFormat from './mixins/has_format.js';\n\nexport default (provider) => class Interaction extends hasFormat(provider, 'Interaction', instance(provider).BaseModel) {\n  constructor(jti, payload) {\n    if (arguments.length === 2) {\n      if (payload.session instanceof instance(provider).BaseModel) {\n        const { session } = payload;\n        Object.assign(payload, session.accountId ? {\n          session: {\n            accountId: session.accountId,\n            ...(session.uid ? { uid: session.uid } : undefined),\n            ...(session.jti ? { cookie: session.jti } : undefined),\n            ...(session.acr ? { acr: session.acr } : undefined),\n            ...(session.amr ? { amr: session.amr } : undefined),\n          },\n        } : { session: undefined });\n      }\n\n      if (payload.grant instanceof instance(provider).BaseModel) {\n        const { grant } = payload;\n        if (grant.jti) {\n          Object.assign(payload, { grantId: grant.jti });\n        }\n      }\n\n      super({ jti, ...payload });\n    } else {\n      super(jti);\n    }\n  }\n\n  get uid() {\n    return this.jti;\n  }\n\n  set uid(value) {\n    this.jti = value;\n  }\n\n  async save(ttl) {\n    if (typeof ttl !== 'number') {\n      throw new TypeError('\"ttl\" argument must be a number');\n    }\n    return super.save(ttl);\n  }\n\n  async persist() {\n    if (typeof this.exp !== 'number') {\n      throw new TypeError('persist can only be called on previously persisted Interactions');\n    }\n    return this.save(this.exp - epochTime());\n  }\n\n  static get IN_PAYLOAD() {\n    return [\n      ...super.IN_PAYLOAD,\n      'session',\n      'params',\n      'prompt',\n      'result',\n      'returnTo',\n      'trusted',\n      'grantId',\n      'lastSubmission',\n      'deviceCode',\n      'cid',\n      'parJti',\n    ];\n  }\n};\n", "import instance from '../helpers/weak_cache.js';\n\nimport apply from './mixins/apply.js';\nimport hasFormat from './mixins/has_format.js';\nimport consumable from './mixins/consumable.js';\nimport isAttestationConstrained from './mixins/is_attestation_constrained.js';\n\nexport default (provider) => class PushedAuthorizationRequest extends apply([\n  consumable,\n  isAttestationConstrained,\n  hasFormat(provider, 'PushedAuthorizationRequest', instance(provider).BaseModel),\n]) {\n  static get IN_PAYLOAD() {\n    return [\n      ...super.IN_PAYLOAD,\n      'request',\n      'dpopJkt',\n      'trusted',\n    ];\n  }\n};\n", "import epochTime from '../helpers/epoch_time.js';\n\nimport apply from './mixins/apply.js';\nimport consumable from './mixins/consumable.js';\nimport hasFormat from './mixins/has_format.js';\nimport hasGrantId from './mixins/has_grant_id.js';\nimport hasGrantType from './mixins/has_grant_type.js';\nimport isSenderConstrained from './mixins/is_sender_constrained.js';\nimport isAttestationConstrained from './mixins/is_attestation_constrained.js';\nimport isSessionBound from './mixins/is_session_bound.js';\nimport storesAuth from './mixins/stores_auth.js';\n\nexport default (provider) => class RefreshToken extends apply([\n  consumable,\n  hasGrantType,\n  hasGrantId,\n  isSenderConstrained,\n  isAttestationConstrained,\n  isSessionBound(provider),\n  storesAuth,\n  hasFormat(provider, 'RefreshToken', provider.BaseToken),\n]) {\n  constructor(...args) {\n    super(...args);\n    if (!this.iiat) {\n      this.iiat = this.iat || epochTime();\n    }\n  }\n\n  static get IN_PAYLOAD() {\n    return [\n      ...super.IN_PAYLOAD,\n\n      'rar',\n      'rotations',\n      'iiat',\n    ];\n  }\n\n  /*\n   * totalLifetime()\n   * number of seconds since the very first refresh token chain iat\n   */\n  totalLifetime() {\n    return epochTime() - this.iiat;\n  }\n};\n", "import apply from './mixins/apply.js';\nimport hasFormat from './mixins/has_format.js';\nimport hasPolicies from './mixins/has_policies.js';\n\nexport default (provider) => class RegistrationAccessToken extends apply([\n  hasPolicies(provider),\n  hasFormat(provider, 'RegistrationAccessToken', provider.BaseToken),\n]) {};\n", "import * as crypto from 'node:crypto';\n\nimport instance from '../helpers/weak_cache.js';\nimport epochTime from '../helpers/epoch_time.js';\n\nimport hasFormat from './mixins/has_format.js';\n\nexport default (provider) => class ReplayDetection extends hasFormat(provider, 'ReplayDetection', instance(provider).BaseModel) {\n  static get IN_PAYLOAD() {\n    return [\n      ...super.IN_PAYLOAD,\n      'iss',\n    ];\n  }\n\n  static async unique(iss, jti, exp) {\n    const id = crypto.hash('sha256', `${iss}${jti}`, 'base64url');\n\n    const found = await this.find(id);\n\n    if (found) {\n      return false;\n    }\n\n    const inst = this.instantiate({ jti: id, iss });\n\n    await inst.save(exp - epochTime());\n\n    return true;\n  }\n};\n", "/* eslint-disable prefer-rest-params */\n\nimport nanoid from '../helpers/nanoid.js';\nimport epochTime from '../helpers/epoch_time.js';\nimport instance from '../helpers/weak_cache.js';\n\nimport hasFormat from './mixins/has_format.js';\n\nexport default (provider) => class Session extends hasFormat(provider, 'Session', instance(provider).BaseModel) {\n  constructor(payload) {\n    super(payload);\n    if (!payload) {\n      Object.defineProperty(this, 'new', { value: true });\n    }\n    this.uid = this.uid || nanoid();\n    this.jti = this.jti || nanoid();\n  }\n\n  get id() {\n    return this.jti;\n  }\n\n  set id(value) {\n    this.jti = value;\n  }\n\n  static get IN_PAYLOAD() {\n    return [\n      ...super.IN_PAYLOAD,\n      'uid',\n      'acr',\n      'amr',\n      'accountId',\n      'loginTs',\n      'transient',\n      'state',\n      'authorizations',\n    ];\n  }\n\n  static async findByUid(uid) {\n    const stored = await this.adapter.findByUid(uid);\n    if (!stored) {\n      return undefined;\n    }\n    try {\n      const payload = await this.verify(stored);\n      return this.instantiate(payload);\n    } catch (err) {\n      return undefined;\n    }\n  }\n\n  static async get(ctx) {\n    const cookies = ctx.oidc\n      ? ctx.oidc.cookies : provider.createContext(ctx.req, ctx.res).cookies;\n    cookies.secure = !cookies.secure && ctx.secure ? true : cookies.secure;\n\n    // is there supposed to be a session bound? generate if not\n    const cookieSessionId = cookies.get(\n      provider.cookieName('session'),\n      instance(provider).configuration.cookies.long,\n    );\n\n    let session;\n\n    if (cookieSessionId) {\n      session = await this.find(cookieSessionId);\n    }\n\n    if (!session) {\n      if (cookieSessionId) {\n        // underlying session was removed since we have a session id in cookie, let's assign an\n        // empty data so that session.new is not true and cookie will get written even if nothing\n        // gets written to it\n        session = this.instantiate({});\n      } else {\n        session = this.instantiate();\n      }\n    }\n\n    if (ctx.oidc instanceof provider.OIDCContext) {\n      ctx.oidc.entity('Session', session);\n    }\n\n    return session;\n  }\n\n  async save(ttl) {\n    if (typeof ttl !== 'number') {\n      throw new TypeError('\"ttl\" argument must be a number');\n    }\n    // one by one adapter ops to allow for uid to have a unique index\n    if (this.oldId) {\n      await this.adapter.destroy(this.oldId);\n    }\n\n    const result = await super.save(ttl);\n\n    this.touched = false;\n\n    return result;\n  }\n\n  async persist() {\n    if (typeof this.exp !== 'number') {\n      throw new TypeError('persist can only be called on previously persisted Sessions');\n    }\n    return this.save(this.exp - epochTime());\n  }\n\n  async destroy() {\n    await super.destroy();\n    this.destroyed = true;\n  }\n\n  resetIdentifier() {\n    this.oldId = this.id;\n    this.id = nanoid();\n    this.touched = true;\n  }\n\n  authTime() {\n    return this.loginTs;\n  }\n\n  past(age) {\n    const maxAge = +age;\n\n    if (this.loginTs) {\n      return epochTime() - this.loginTs > maxAge;\n    }\n\n    return true;\n  }\n\n  authorizationFor(clientId) {\n    // the call will not set, let's not modify the session object\n    if (arguments.length === 1 && !this.authorizations) {\n      return {};\n    }\n\n    this.authorizations = this.authorizations || {};\n    if (!this.authorizations[clientId]) {\n      this.authorizations[clientId] = {};\n    }\n\n    return this.authorizations[clientId];\n  }\n\n  sidFor(clientId, value) {\n    const authorization = this.authorizationFor(...arguments);\n\n    if (value) {\n      authorization.sid = value;\n      return undefined;\n    }\n\n    return authorization.sid;\n  }\n\n  grantIdFor(clientId, value) {\n    const authorization = this.authorizationFor(...arguments);\n\n    if (value) {\n      authorization.grantId = value;\n      return undefined;\n    }\n\n    return authorization.grantId;\n  }\n\n  ensureClientContainer(clientId) {\n    if (!this.sidFor(clientId)) {\n      this.sidFor(clientId, nanoid());\n    }\n  }\n\n  loginAccount(details) {\n    const {\n      transient = false, accountId, loginTs = epochTime(), amr, acr,\n    } = details;\n\n    Object.assign(\n      this,\n      {\n        accountId, loginTs, amr, acr,\n      },\n      transient ? { transient: true } : undefined,\n    );\n  }\n};\n", "/* eslint-disable no-unused-expressions */\n/* eslint-disable no-param-reassign */\n\nimport apply from './mixins/apply.js';\nimport hasFormat from './mixins/has_format.js';\n\nconst NON_REJECTABLE_CLAIMS = new Set(['sub', 'sid', 'auth_time', 'acr', 'amr', 'iss']);\n\nexport default (provider) => class Grant extends apply([\n  hasFormat(provider, 'Grant', provider.BaseToken),\n]) {\n  static get IN_PAYLOAD() {\n    return [\n      'accountId',\n      'clientId',\n      'resources',\n      'openid',\n      'rejected',\n      'rar',\n      ...super.IN_PAYLOAD,\n    ];\n  }\n\n  clean() {\n    if (\n      this.openid\n      && (!this.openid.scope && (!this.openid.claims || this.openid.claims.length === 0))\n    ) {\n      delete this.openid;\n    }\n\n    if (this.resources) {\n      for (const [identifier, value] of Object.entries(this.resources)) {\n        if (!value) {\n          delete this.resources[identifier];\n        }\n      }\n      if (Object.keys(this.resources).length === 0) {\n        delete this.resources;\n      }\n    }\n  }\n\n  async save(...args) {\n    this.clean();\n    if (this.rejected) this.clean.call(this.rejected);\n\n    return super.save(...args);\n  }\n\n  getOIDCScope() {\n    if (this.openid?.scope) {\n      if (this.rejected) {\n        const rejected = this.getOIDCScope.call(this.rejected).split(' ');\n        const granted = new Set(this.openid.scope.split(' '));\n        for (const scope of rejected) {\n          if (scope !== 'openid') {\n            granted.delete(scope);\n          }\n        }\n        return [...granted].join(' ');\n      }\n      return this.openid.scope;\n    }\n    return '';\n  }\n\n  getRejectedOIDCScope() {\n    this.rejected ||= {};\n    return this.getOIDCScope.call(this.rejected);\n  }\n\n  getOIDCScopeFiltered(filter) {\n    if (Array.isArray(filter)) {\n      filter = new Set(filter);\n    } else if (!(filter instanceof Set)) {\n      throw new TypeError('\"filter\" must be an instance of Set');\n    }\n    const granted = this.getOIDCScope().split(' ');\n    return granted.filter(Set.prototype.has.bind(filter)).join(' ');\n  }\n\n  addOIDCScope(scope) {\n    if (scope instanceof Set) {\n      scope = [...scope].join(' ');\n    } else if (Array.isArray(scope)) {\n      scope = scope.join(' ');\n    } else if (typeof scope !== 'string') {\n      throw new TypeError('\"scope\" must be a string');\n    }\n    this.openid ||= {};\n    if (this.openid.scope) {\n      this.openid.scope = [...new Set([...this.openid.scope.split(' '), ...scope.split(' ')])].join(' ');\n    } else {\n      this.openid.scope = scope;\n    }\n  }\n\n  rejectOIDCScope(...args) {\n    this.rejected ||= {};\n    this.addOIDCScope.call(this.rejected, ...args);\n  }\n\n  getOIDCScopeEncountered() {\n    const granted = this.getOIDCScope().split(' ');\n    const rejected = this.getRejectedOIDCScope().split(' ');\n    return granted.concat(rejected).join(' ');\n  }\n\n  getResourceScope(resource) {\n    if (typeof resource !== 'string') {\n      throw new TypeError('\"resource\" must be a string');\n    }\n    if (this.resources?.[resource]) {\n      if (this.rejected) {\n        const rejected = this.getResourceScope.call(this.rejected, resource).split(' ');\n        const granted = new Set(this.resources[resource].split(' '));\n        for (const scope of rejected) {\n          granted.delete(scope);\n        }\n        return [...granted].join(' ');\n      }\n      return this.resources[resource];\n    }\n    return '';\n  }\n\n  getRejectedResourceScope(...args) {\n    this.rejected ||= {};\n    return this.getResourceScope.call(this.rejected, ...args);\n  }\n\n  getResourceScopeFiltered(resource, filter) {\n    if (typeof resource !== 'string') {\n      throw new TypeError('\"resource\" must be a string');\n    }\n    if (Array.isArray(filter)) {\n      filter = new Set(filter);\n    } else if (!(filter instanceof Set)) {\n      throw new TypeError('\"filter\" must be an instance of Set');\n    }\n    const granted = this.getResourceScope(resource).split(' ');\n    return granted.filter(Set.prototype.has.bind(filter)).join(' ');\n  }\n\n  addResourceScope(resource, scope) {\n    if (typeof resource !== 'string') {\n      throw new TypeError('\"resource\" must be a string');\n    }\n    if (scope instanceof Set) {\n      scope = [...scope].join(' ');\n    } else if (Array.isArray(scope)) {\n      scope = scope.join(' ');\n    } else if (typeof scope !== 'string') {\n      throw new TypeError('\"scope\" must be a string');\n    }\n    this.resources ||= {};\n    if (this.resources[resource]) {\n      this.resources[resource] = [...new Set([...this.resources[resource].split(' '), ...scope.split(' ')])].join(' ');\n    } else {\n      this.resources[resource] = scope;\n    }\n  }\n\n  rejectResourceScope(...args) {\n    this.rejected ||= {};\n    this.addResourceScope.call(this.rejected, ...args);\n  }\n\n  getResourceScopeEncountered(resource) {\n    if (typeof resource !== 'string') {\n      throw new TypeError('\"resource\" must be a string');\n    }\n    const granted = this.getResourceScope(resource).split(' ');\n    const rejected = this.getRejectedResourceScope(resource).split(' ');\n    return granted.concat(rejected).join(' ');\n  }\n\n  getOIDCClaims() {\n    if (this.openid?.claims) {\n      if (this.rejected) {\n        const rejected = this.getOIDCClaims.call(this.rejected);\n        const granted = new Set(this.openid.claims);\n        for (const claim of rejected) {\n          if (!NON_REJECTABLE_CLAIMS.has(claim)) {\n            granted.delete(claim);\n          }\n        }\n        return [...granted];\n      }\n      return this.openid.claims;\n    }\n    return [];\n  }\n\n  getRejectedOIDCClaims() {\n    this.rejected ||= {};\n    return this.getOIDCClaims.call(this.rejected);\n  }\n\n  getOIDCClaimsFiltered(filter) {\n    if (Array.isArray(filter)) {\n      filter = new Set(filter);\n    } else if (!(filter instanceof Set)) {\n      throw new TypeError('\"filter\" must be an instance of Set');\n    }\n    const granted = this.getOIDCClaims();\n    return granted.filter(Set.prototype.has.bind(filter));\n  }\n\n  addOIDCClaims(claims) {\n    if (claims instanceof Set) {\n      claims = [...claims];\n    } else if (!Array.isArray(claims)) {\n      throw new TypeError('\"claims\" must be an array');\n    }\n    if (claims.some((claim) => typeof claim !== 'string')) {\n      throw new TypeError('\"claims\" must be an array of strings');\n    }\n    this.openid ||= {};\n    if (this.openid.claims) {\n      this.openid.claims = [...new Set([...this.openid.claims, ...claims])];\n    } else {\n      this.openid.claims = claims;\n    }\n  }\n\n  rejectOIDCClaims(...args) {\n    this.rejected ||= {};\n    this.addOIDCClaims.call(this.rejected, ...args);\n  }\n\n  getOIDCClaimsEncountered() {\n    const granted = this.getOIDCClaims();\n    const rejected = this.getRejectedOIDCClaims();\n    return granted.concat(rejected);\n  }\n\n  addRar(detail) {\n    this.rar ||= [];\n    this.rar.push(detail);\n  }\n};\n", "/* eslint-disable import/first */\n// eslint-disable-next-line import/order\nimport * as attention from './helpers/attention.js';\n\nconst deno = typeof Deno !== 'undefined';\nconst bun = typeof Bun !== 'undefined';\nconst workerd = typeof navigator !== 'undefined' && navigator.userAgent === 'Cloudflare-Workers';\n\nconst minimal = 'Jod';\nconst release = globalThis.process?.release;\nif (!release?.lts || release?.lts.charCodeAt(0) < minimal.charCodeAt(0) || deno || bun || workerd) {\n  attention.warn('Unsupported runtime. Use Node.js v22.x LTS, or a later LTS release.');\n}\n\nimport { Provider } from './provider.js';\nimport * as errors from './helpers/errors.js';\nimport * as interactionPolicy from './helpers/interaction_policy/index.js';\n\nexport default Provider;\nexport { errors, interactionPolicy, Provider };\nexport { ExternalSigningKey } from './helpers/keystore.js';\n", "import type KoaRouter from 'koa-router';\nimport Router from 'koa-router';\nimport { koaBody } from 'koa-body';\nimport { type InteractionResults, type Provider  } from 'oidc-provider';\nimport { type Logger } from '@restorecommerce/logger';\nimport { type IdentityContext } from '../interfaces.js';\nimport { OIDCTemplateEngine } from './templates.js';\nimport { type OIDCError, type OIDCHbsTemplates, type OIDCBodyLoginFn } from './interfaces.js';\n\nexport interface CreateOIDCRouterArgs {\n  logger: Logger;\n  provider: Provider;\n  env?: string;\n  templates?: OIDCHbsTemplates;\n  loginFn: OIDCBodyLoginFn;\n}\n\nexport const createOIDCRouter = ({logger, loginFn, provider, env, templates }: CreateOIDCRouterArgs): KoaRouter<{}, IdentityContext> => {\n\n  const dev = env === 'development';\n\n  const tplEngine = new OIDCTemplateEngine(templates, logger);\n\n  const router = new Router() as KoaRouter<{}, IdentityContext>;\n\n  router.get('/interaction/:uid', async (ctx, next) => {\n    const {\n      uid, prompt, params, session,\n    } = await provider.interactionDetails(ctx.req, ctx.res);\n    const client = await provider.Client.find((params as any).client_id);\n\n    switch (prompt.name) {\n      case 'login': {\n        ctx.type = 'html';\n        ctx.body = await tplEngine.login({\n          title: 'Login',\n          dev,\n          uid,\n          dbg: {\n            params,\n            prompt,\n            session\n          }\n        });\n        return;\n      }\n      case 'consent': {\n        logger.debug('consent', prompt.details);\n\n        const { prompt: { name, details } } = await provider.interactionDetails(ctx.req, ctx.res);\n\n        const consent: any = {};\n        consent.rejectedScopes = [];\n\n        // replace = false means previously rejected scopes and claims remain rejected\n        // changing this to true will remove those rejections in favour of just what you rejected above\n        consent.replace = false;\n        const result = { consent };\n        return provider.interactionFinished(ctx.req, ctx.res, result, {\n          mergeWithLastSubmission: true,\n        });\n\n        // ctx.type = 'html';\n        // ctx.body = await tplEngine.consent({\n        //   title: 'Authorize',\n        //   dev,\n        //   uid,\n        //   details: prompt.details,\n        //   dbg: {\n        //     params,\n        //     prompt,\n        //     session\n        //   }\n        // });\n        // return;\n      }\n      default:\n        return next();\n    }\n  });\n\n  // router.post('/interaction/:uid/confirm', bodyParser({\n  //   text: false, json: false\n  // }), async (ctx) => {\n  //   const { prompt: { name, details } } = await provider.interactionDetails(ctx.req, ctx.res);\n\n  //   const consent: any = {};\n  //   consent.rejectedScopes = [];\n\n  //   // replace = false means previously rejected scopes and claims remain rejected\n  //   // changing this to true will remove those rejections in favour of just what you rejected above\n  //   consent.replace = false;\n  //   const result = { consent };\n  //   return provider.interactionFinished(ctx.req, ctx.res, result, {\n  //     mergeWithLastSubmission: true,\n  //   });\n  // });\n\n  router.post('/interaction/:uid/login', koaBody({\n    text: false, json: false\n  }), async (ctx) => {\n    const { prompt, uid, params, session } = await provider.interactionDetails(ctx.req, ctx.res);\n\n    if (prompt.name !== 'login') {\n      throw new Error('INVALID_PROMPT');\n    }\n\n    const render = async ({error, identifier, remember}: {error?: OIDCError; identifier?: string; remember?: boolean} = {}) => {\n      ctx.response.type = 'html';\n      ctx.response.body = await tplEngine.login({\n        title: 'Login',\n        uid,\n        identifier,\n        remember,\n        error: error ?? {\n          key: 'ERROR',\n          message: 'Error'\n        },\n        dev,\n        dbg: {\n          params,\n          prompt,\n          session\n        }\n      });\n      return;\n    };\n\n    const body = typeof ctx.request.body === 'object' && ctx.request.body ? ctx.request.body : undefined;\n\n    if (!body) {\n      logger.error('OIDC login invalid body', body);\n\n      return render();\n    }\n    const { error, user, identifier, remember } = await loginFn(ctx, body);\n\n    if (error || !user) {\n      logger.error('OIDC login callback error', error);\n      return render({\n        error,\n        identifier,\n        remember\n      });\n    }\n\n    if (!user) {\n      return render({\n        error: {\n          key: 'INVALID_IDENTIFIER_OR_PASSWORD',\n          message: 'Invalid identifier or password'\n        },\n        identifier,\n        remember\n      });\n    }\n\n    const result: InteractionResults = {\n      select_account: {}, // make sure its skipped by the interaction policy since we just logged in\n      login: {\n        remember,\n        accountId: user.id as any,\n      },\n      meta: {}\n    };\n\n    return provider.interactionFinished(ctx.req, ctx.res, result, {\n      mergeWithLastSubmission: false,\n    });\n  });\n\n  router.get('/interaction/:uid/abort', async (ctx) => {\n    const result: InteractionResults = {\n      error: 'access_denied',\n      error_description: 'End-User aborted interaction',\n    };\n\n    return provider.interactionFinished(ctx.req, ctx.res, result, {\n      mergeWithLastSubmission: false,\n    });\n  });\n\n  // router.get('/session', async (ctx) => {\n  //   const _ctx = provider.app.createContext(ctx.req, ctx.res);\n  //   // const session = await provider.Session.get(_ctx)\n  //   const x = new provider.OIDCContext(ctx)\n\n  //   // new provider.OIDCContext(ctx)\n\n  //   ctx.response.body = {\n  //     ats: x.getAccessToken(),\n  //     at: provider.AccessToken.find(x.getAccessToken()),\n  //     // session\n  //   };\n  // });\n\n  return router;\n};;\n", null, "export * as core from \"../core/index.js\";\nexport * from \"./schemas.js\";\nexport * from \"./checks.js\";\nexport * from \"./errors.js\";\nexport * from \"./parse.js\";\nexport * from \"./compat.js\";\n// zod-specified\nimport { config } from \"../core/index.js\";\nimport en from \"../locales/en.js\";\nconfig(en());\nexport { globalRegistry, registry, config, $output, $input, $brand, clone, regexes, treeifyError, prettifyError, formatError, flattenError, TimePrecision, util, NEVER, } from \"../core/index.js\";\nexport { toJSONSchema } from \"../core/json-schema-processors.js\";\nexport { fromJSONSchema } from \"./from-json-schema.js\";\nexport * as locales from \"../locales/index.js\";\n// iso\n// must be exported from top-level\n// https://github.com/colinhacks/zod/issues/4491\nexport { ZodISODateTime, ZodISODate, ZodISOTime, ZodISODuration } from \"./iso.js\";\nexport * as iso from \"./iso.js\";\nexport * as coerce from \"./coerce.js\";\n", "export * from \"./core.js\";\nexport * from \"./parse.js\";\nexport * from \"./errors.js\";\nexport * from \"./schemas.js\";\nexport * from \"./checks.js\";\nexport * from \"./versions.js\";\nexport * as util from \"./util.js\";\nexport * as regexes from \"./regexes.js\";\nexport * as locales from \"../locales/index.js\";\nexport * from \"./registries.js\";\nexport * from \"./doc.js\";\nexport * from \"./api.js\";\nexport * from \"./to-json-schema.js\";\nexport { toJSONSchema } from \"./json-schema-processors.js\";\nexport { JSONSchemaGenerator } from \"./json-schema-generator.js\";\nexport * as JSONSchema from \"./json-schema.js\";\n", "/** A special constant with type `never` */\nexport const NEVER = Object.freeze({\n    status: \"aborted\",\n});\nexport /*@__NO_SIDE_EFFECTS__*/ function $constructor(name, initializer, params) {\n    function init(inst, def) {\n        if (!inst._zod) {\n            Object.defineProperty(inst, \"_zod\", {\n                value: {\n                    def,\n                    constr: _,\n                    traits: new Set(),\n                },\n                enumerable: false,\n            });\n        }\n        if (inst._zod.traits.has(name)) {\n            return;\n        }\n        inst._zod.traits.add(name);\n        initializer(inst, def);\n        // support prototype modifications\n        const proto = _.prototype;\n        const keys = Object.keys(proto);\n        for (let i = 0; i < keys.length; i++) {\n            const k = keys[i];\n            if (!(k in inst)) {\n                inst[k] = proto[k].bind(inst);\n            }\n        }\n    }\n    // doesn't work if Parent has a constructor with arguments\n    const Parent = params?.Parent ?? Object;\n    class Definition extends Parent {\n    }\n    Object.defineProperty(Definition, \"name\", { value: name });\n    function _(def) {\n        var _a;\n        const inst = params?.Parent ? new Definition() : this;\n        init(inst, def);\n        (_a = inst._zod).deferred ?? (_a.deferred = []);\n        for (const fn of inst._zod.deferred) {\n            fn();\n        }\n        return inst;\n    }\n    Object.defineProperty(_, \"init\", { value: init });\n    Object.defineProperty(_, Symbol.hasInstance, {\n        value: (inst) => {\n            if (params?.Parent && inst instanceof params.Parent)\n                return true;\n            return inst?._zod?.traits?.has(name);\n        },\n    });\n    Object.defineProperty(_, \"name\", { value: name });\n    return _;\n}\n//////////////////////////////   UTILITIES   ///////////////////////////////////////\nexport const $brand = Symbol(\"zod_brand\");\nexport class $ZodAsyncError extends Error {\n    constructor() {\n        super(`Encountered Promise during synchronous parse. Use .parseAsync() instead.`);\n    }\n}\nexport class $ZodEncodeError extends Error {\n    constructor(name) {\n        super(`Encountered unidirectional transform during encode: ${name}`);\n        this.name = \"ZodEncodeError\";\n    }\n}\nexport const globalConfig = {};\nexport function config(newConfig) {\n    if (newConfig)\n        Object.assign(globalConfig, newConfig);\n    return globalConfig;\n}\n", "// functions\nexport function assertEqual(val) {\n    return val;\n}\nexport function assertNotEqual(val) {\n    return val;\n}\nexport function assertIs(_arg) { }\nexport function assertNever(_x) {\n    throw new Error(\"Unexpected value in exhaustive check\");\n}\nexport function assert(_) { }\nexport function getEnumValues(entries) {\n    const numericValues = Object.values(entries).filter((v) => typeof v === \"number\");\n    const values = Object.entries(entries)\n        .filter(([k, _]) => numericValues.indexOf(+k) === -1)\n        .map(([_, v]) => v);\n    return values;\n}\nexport function joinValues(array, separator = \"|\") {\n    return array.map((val) => stringifyPrimitive(val)).join(separator);\n}\nexport function jsonStringifyReplacer(_, value) {\n    if (typeof value === \"bigint\")\n        return value.toString();\n    return value;\n}\nexport function cached(getter) {\n    const set = false;\n    return {\n        get value() {\n            if (!set) {\n                const value = getter();\n                Object.defineProperty(this, \"value\", { value });\n                return value;\n            }\n            throw new Error(\"cached value already set\");\n        },\n    };\n}\nexport function nullish(input) {\n    return input === null || input === undefined;\n}\nexport function cleanRegex(source) {\n    const start = source.startsWith(\"^\") ? 1 : 0;\n    const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n    return source.slice(start, end);\n}\nexport function floatSafeRemainder(val, step) {\n    const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n    const stepString = step.toString();\n    let stepDecCount = (stepString.split(\".\")[1] || \"\").length;\n    if (stepDecCount === 0 && /\\d?e-\\d?/.test(stepString)) {\n        const match = stepString.match(/\\d?e-(\\d?)/);\n        if (match?.[1]) {\n            stepDecCount = Number.parseInt(match[1]);\n        }\n    }\n    const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n    const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n    const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n    return (valInt % stepInt) / 10 ** decCount;\n}\nconst EVALUATING = Symbol(\"evaluating\");\nexport function defineLazy(object, key, getter) {\n    let value = undefined;\n    Object.defineProperty(object, key, {\n        get() {\n            if (value === EVALUATING) {\n                // Circular reference detected, return undefined to break the cycle\n                return undefined;\n            }\n            if (value === undefined) {\n                value = EVALUATING;\n                value = getter();\n            }\n            return value;\n        },\n        set(v) {\n            Object.defineProperty(object, key, {\n                value: v,\n                // configurable: true,\n            });\n            // object[key] = v;\n        },\n        configurable: true,\n    });\n}\nexport function objectClone(obj) {\n    return Object.create(Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj));\n}\nexport function assignProp(target, prop, value) {\n    Object.defineProperty(target, prop, {\n        value,\n        writable: true,\n        enumerable: true,\n        configurable: true,\n    });\n}\nexport function mergeDefs(...defs) {\n    const mergedDescriptors = {};\n    for (const def of defs) {\n        const descriptors = Object.getOwnPropertyDescriptors(def);\n        Object.assign(mergedDescriptors, descriptors);\n    }\n    return Object.defineProperties({}, mergedDescriptors);\n}\nexport function cloneDef(schema) {\n    return mergeDefs(schema._zod.def);\n}\nexport function getElementAtPath(obj, path) {\n    if (!path)\n        return obj;\n    return path.reduce((acc, key) => acc?.[key], obj);\n}\nexport function promiseAllObject(promisesObj) {\n    const keys = Object.keys(promisesObj);\n    const promises = keys.map((key) => promisesObj[key]);\n    return Promise.all(promises).then((results) => {\n        const resolvedObj = {};\n        for (let i = 0; i < keys.length; i++) {\n            resolvedObj[keys[i]] = results[i];\n        }\n        return resolvedObj;\n    });\n}\nexport function randomString(length = 10) {\n    const chars = \"abcdefghijklmnopqrstuvwxyz\";\n    let str = \"\";\n    for (let i = 0; i < length; i++) {\n        str += chars[Math.floor(Math.random() * chars.length)];\n    }\n    return str;\n}\nexport function esc(str) {\n    return JSON.stringify(str);\n}\nexport function slugify(input) {\n    return input\n        .toLowerCase()\n        .trim()\n        .replace(/[^\\w\\s-]/g, \"\")\n        .replace(/[\\s_-]+/g, \"-\")\n        .replace(/^-+|-+$/g, \"\");\n}\nexport const captureStackTrace = (\"captureStackTrace\" in Error ? Error.captureStackTrace : (..._args) => { });\nexport function isObject(data) {\n    return typeof data === \"object\" && data !== null && !Array.isArray(data);\n}\nexport const allowsEval = cached(() => {\n    // @ts-ignore\n    if (typeof navigator !== \"undefined\" && navigator?.userAgent?.includes(\"Cloudflare\")) {\n        return false;\n    }\n    try {\n        const F = Function;\n        new F(\"\");\n        return true;\n    }\n    catch (_) {\n        return false;\n    }\n});\nexport function isPlainObject(o) {\n    if (isObject(o) === false)\n        return false;\n    // modified constructor\n    const ctor = o.constructor;\n    if (ctor === undefined)\n        return true;\n    if (typeof ctor !== \"function\")\n        return true;\n    // modified prototype\n    const prot = ctor.prototype;\n    if (isObject(prot) === false)\n        return false;\n    // ctor doesn't have static `isPrototypeOf`\n    if (Object.prototype.hasOwnProperty.call(prot, \"isPrototypeOf\") === false) {\n        return false;\n    }\n    return true;\n}\nexport function shallowClone(o) {\n    if (isPlainObject(o))\n        return { ...o };\n    if (Array.isArray(o))\n        return [...o];\n    return o;\n}\nexport function numKeys(data) {\n    let keyCount = 0;\n    for (const key in data) {\n        if (Object.prototype.hasOwnProperty.call(data, key)) {\n            keyCount++;\n        }\n    }\n    return keyCount;\n}\nexport const getParsedType = (data) => {\n    const t = typeof data;\n    switch (t) {\n        case \"undefined\":\n            return \"undefined\";\n        case \"string\":\n            return \"string\";\n        case \"number\":\n            return Number.isNaN(data) ? \"nan\" : \"number\";\n        case \"boolean\":\n            return \"boolean\";\n        case \"function\":\n            return \"function\";\n        case \"bigint\":\n            return \"bigint\";\n        case \"symbol\":\n            return \"symbol\";\n        case \"object\":\n            if (Array.isArray(data)) {\n                return \"array\";\n            }\n            if (data === null) {\n                return \"null\";\n            }\n            if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n                return \"promise\";\n            }\n            if (typeof Map !== \"undefined\" && data instanceof Map) {\n                return \"map\";\n            }\n            if (typeof Set !== \"undefined\" && data instanceof Set) {\n                return \"set\";\n            }\n            if (typeof Date !== \"undefined\" && data instanceof Date) {\n                return \"date\";\n            }\n            // @ts-ignore\n            if (typeof File !== \"undefined\" && data instanceof File) {\n                return \"file\";\n            }\n            return \"object\";\n        default:\n            throw new Error(`Unknown data type: ${t}`);\n    }\n};\nexport const propertyKeyTypes = new Set([\"string\", \"number\", \"symbol\"]);\nexport const primitiveTypes = new Set([\"string\", \"number\", \"bigint\", \"boolean\", \"symbol\", \"undefined\"]);\nexport function escapeRegex(str) {\n    return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n// zod-specific utils\nexport function clone(inst, def, params) {\n    const cl = new inst._zod.constr(def ?? inst._zod.def);\n    if (!def || params?.parent)\n        cl._zod.parent = inst;\n    return cl;\n}\nexport function normalizeParams(_params) {\n    const params = _params;\n    if (!params)\n        return {};\n    if (typeof params === \"string\")\n        return { error: () => params };\n    if (params?.message !== undefined) {\n        if (params?.error !== undefined)\n            throw new Error(\"Cannot specify both `message` and `error` params\");\n        params.error = params.message;\n    }\n    delete params.message;\n    if (typeof params.error === \"string\")\n        return { ...params, error: () => params.error };\n    return params;\n}\nexport function createTransparentProxy(getter) {\n    let target;\n    return new Proxy({}, {\n        get(_, prop, receiver) {\n            target ?? (target = getter());\n            return Reflect.get(target, prop, receiver);\n        },\n        set(_, prop, value, receiver) {\n            target ?? (target = getter());\n            return Reflect.set(target, prop, value, receiver);\n        },\n        has(_, prop) {\n            target ?? (target = getter());\n            return Reflect.has(target, prop);\n        },\n        deleteProperty(_, prop) {\n            target ?? (target = getter());\n            return Reflect.deleteProperty(target, prop);\n        },\n        ownKeys(_) {\n            target ?? (target = getter());\n            return Reflect.ownKeys(target);\n        },\n        getOwnPropertyDescriptor(_, prop) {\n            target ?? (target = getter());\n            return Reflect.getOwnPropertyDescriptor(target, prop);\n        },\n        defineProperty(_, prop, descriptor) {\n            target ?? (target = getter());\n            return Reflect.defineProperty(target, prop, descriptor);\n        },\n    });\n}\nexport function stringifyPrimitive(value) {\n    if (typeof value === \"bigint\")\n        return value.toString() + \"n\";\n    if (typeof value === \"string\")\n        return `\"${value}\"`;\n    return `${value}`;\n}\nexport function optionalKeys(shape) {\n    return Object.keys(shape).filter((k) => {\n        return shape[k]._zod.optin === \"optional\" && shape[k]._zod.optout === \"optional\";\n    });\n}\nexport const NUMBER_FORMAT_RANGES = {\n    safeint: [Number.MIN_SAFE_INTEGER, Number.MAX_SAFE_INTEGER],\n    int32: [-2147483648, 2147483647],\n    uint32: [0, 4294967295],\n    float32: [-3.4028234663852886e38, 3.4028234663852886e38],\n    float64: [-Number.MAX_VALUE, Number.MAX_VALUE],\n};\nexport const BIGINT_FORMAT_RANGES = {\n    int64: [/* @__PURE__*/ BigInt(\"-9223372036854775808\"), /* @__PURE__*/ BigInt(\"9223372036854775807\")],\n    uint64: [/* @__PURE__*/ BigInt(0), /* @__PURE__*/ BigInt(\"18446744073709551615\")],\n};\nexport function pick(schema, mask) {\n    const currDef = schema._zod.def;\n    const checks = currDef.checks;\n    const hasChecks = checks && checks.length > 0;\n    if (hasChecks) {\n        throw new Error(\".pick() cannot be used on object schemas containing refinements\");\n    }\n    const def = mergeDefs(schema._zod.def, {\n        get shape() {\n            const newShape = {};\n            for (const key in mask) {\n                if (!(key in currDef.shape)) {\n                    throw new Error(`Unrecognized key: \"${key}\"`);\n                }\n                if (!mask[key])\n                    continue;\n                newShape[key] = currDef.shape[key];\n            }\n            assignProp(this, \"shape\", newShape); // self-caching\n            return newShape;\n        },\n        checks: [],\n    });\n    return clone(schema, def);\n}\nexport function omit(schema, mask) {\n    const currDef = schema._zod.def;\n    const checks = currDef.checks;\n    const hasChecks = checks && checks.length > 0;\n    if (hasChecks) {\n        throw new Error(\".omit() cannot be used on object schemas containing refinements\");\n    }\n    const def = mergeDefs(schema._zod.def, {\n        get shape() {\n            const newShape = { ...schema._zod.def.shape };\n            for (const key in mask) {\n                if (!(key in currDef.shape)) {\n                    throw new Error(`Unrecognized key: \"${key}\"`);\n                }\n                if (!mask[key])\n                    continue;\n                delete newShape[key];\n            }\n            assignProp(this, \"shape\", newShape); // self-caching\n            return newShape;\n        },\n        checks: [],\n    });\n    return clone(schema, def);\n}\nexport function extend(schema, shape) {\n    if (!isPlainObject(shape)) {\n        throw new Error(\"Invalid input to extend: expected a plain object\");\n    }\n    const checks = schema._zod.def.checks;\n    const hasChecks = checks && checks.length > 0;\n    if (hasChecks) {\n        // Only throw if new shape overlaps with existing shape\n        // Use getOwnPropertyDescriptor to check key existence without accessing values\n        const existingShape = schema._zod.def.shape;\n        for (const key in shape) {\n            if (Object.getOwnPropertyDescriptor(existingShape, key) !== undefined) {\n                throw new Error(\"Cannot overwrite keys on object schemas containing refinements. Use `.safeExtend()` instead.\");\n            }\n        }\n    }\n    const def = mergeDefs(schema._zod.def, {\n        get shape() {\n            const _shape = { ...schema._zod.def.shape, ...shape };\n            assignProp(this, \"shape\", _shape); // self-caching\n            return _shape;\n        },\n    });\n    return clone(schema, def);\n}\nexport function safeExtend(schema, shape) {\n    if (!isPlainObject(shape)) {\n        throw new Error(\"Invalid input to safeExtend: expected a plain object\");\n    }\n    const def = mergeDefs(schema._zod.def, {\n        get shape() {\n            const _shape = { ...schema._zod.def.shape, ...shape };\n            assignProp(this, \"shape\", _shape); // self-caching\n            return _shape;\n        },\n    });\n    return clone(schema, def);\n}\nexport function merge(a, b) {\n    const def = mergeDefs(a._zod.def, {\n        get shape() {\n            const _shape = { ...a._zod.def.shape, ...b._zod.def.shape };\n            assignProp(this, \"shape\", _shape); // self-caching\n            return _shape;\n        },\n        get catchall() {\n            return b._zod.def.catchall;\n        },\n        checks: [], // delete existing checks\n    });\n    return clone(a, def);\n}\nexport function partial(Class, schema, mask) {\n    const currDef = schema._zod.def;\n    const checks = currDef.checks;\n    const hasChecks = checks && checks.length > 0;\n    if (hasChecks) {\n        throw new Error(\".partial() cannot be used on object schemas containing refinements\");\n    }\n    const def = mergeDefs(schema._zod.def, {\n        get shape() {\n            const oldShape = schema._zod.def.shape;\n            const shape = { ...oldShape };\n            if (mask) {\n                for (const key in mask) {\n                    if (!(key in oldShape)) {\n                        throw new Error(`Unrecognized key: \"${key}\"`);\n                    }\n                    if (!mask[key])\n                        continue;\n                    // if (oldShape[key]!._zod.optin === \"optional\") continue;\n                    shape[key] = Class\n                        ? new Class({\n                            type: \"optional\",\n                            innerType: oldShape[key],\n                        })\n                        : oldShape[key];\n                }\n            }\n            else {\n                for (const key in oldShape) {\n                    // if (oldShape[key]!._zod.optin === \"optional\") continue;\n                    shape[key] = Class\n                        ? new Class({\n                            type: \"optional\",\n                            innerType: oldShape[key],\n                        })\n                        : oldShape[key];\n                }\n            }\n            assignProp(this, \"shape\", shape); // self-caching\n            return shape;\n        },\n        checks: [],\n    });\n    return clone(schema, def);\n}\nexport function required(Class, schema, mask) {\n    const def = mergeDefs(schema._zod.def, {\n        get shape() {\n            const oldShape = schema._zod.def.shape;\n            const shape = { ...oldShape };\n            if (mask) {\n                for (const key in mask) {\n                    if (!(key in shape)) {\n                        throw new Error(`Unrecognized key: \"${key}\"`);\n                    }\n                    if (!mask[key])\n                        continue;\n                    // overwrite with non-optional\n                    shape[key] = new Class({\n                        type: \"nonoptional\",\n                        innerType: oldShape[key],\n                    });\n                }\n            }\n            else {\n                for (const key in oldShape) {\n                    // overwrite with non-optional\n                    shape[key] = new Class({\n                        type: \"nonoptional\",\n                        innerType: oldShape[key],\n                    });\n                }\n            }\n            assignProp(this, \"shape\", shape); // self-caching\n            return shape;\n        },\n    });\n    return clone(schema, def);\n}\n// invalid_type | too_big | too_small | invalid_format | not_multiple_of | unrecognized_keys | invalid_union | invalid_key | invalid_element | invalid_value | custom\nexport function aborted(x, startIndex = 0) {\n    if (x.aborted === true)\n        return true;\n    for (let i = startIndex; i < x.issues.length; i++) {\n        if (x.issues[i]?.continue !== true) {\n            return true;\n        }\n    }\n    return false;\n}\nexport function prefixIssues(path, issues) {\n    return issues.map((iss) => {\n        var _a;\n        (_a = iss).path ?? (_a.path = []);\n        iss.path.unshift(path);\n        return iss;\n    });\n}\nexport function unwrapMessage(message) {\n    return typeof message === \"string\" ? message : message?.message;\n}\nexport function finalizeIssue(iss, ctx, config) {\n    const full = { ...iss, path: iss.path ?? [] };\n    // for backwards compatibility\n    if (!iss.message) {\n        const message = unwrapMessage(iss.inst?._zod.def?.error?.(iss)) ??\n            unwrapMessage(ctx?.error?.(iss)) ??\n            unwrapMessage(config.customError?.(iss)) ??\n            unwrapMessage(config.localeError?.(iss)) ??\n            \"Invalid input\";\n        full.message = message;\n    }\n    // delete (full as any).def;\n    delete full.inst;\n    delete full.continue;\n    if (!ctx?.reportInput) {\n        delete full.input;\n    }\n    return full;\n}\nexport function getSizableOrigin(input) {\n    if (input instanceof Set)\n        return \"set\";\n    if (input instanceof Map)\n        return \"map\";\n    // @ts-ignore\n    if (input instanceof File)\n        return \"file\";\n    return \"unknown\";\n}\nexport function getLengthableOrigin(input) {\n    if (Array.isArray(input))\n        return \"array\";\n    if (typeof input === \"string\")\n        return \"string\";\n    return \"unknown\";\n}\nexport function parsedType(data) {\n    const t = typeof data;\n    switch (t) {\n        case \"number\": {\n            return Number.isNaN(data) ? \"nan\" : \"number\";\n        }\n        case \"object\": {\n            if (data === null) {\n                return \"null\";\n            }\n            if (Array.isArray(data)) {\n                return \"array\";\n            }\n            const obj = data;\n            if (obj && Object.getPrototypeOf(obj) !== Object.prototype && \"constructor\" in obj && obj.constructor) {\n                return obj.constructor.name;\n            }\n        }\n    }\n    return t;\n}\nexport function issue(...args) {\n    const [iss, input, inst] = args;\n    if (typeof iss === \"string\") {\n        return {\n            message: iss,\n            code: \"custom\",\n            input,\n            inst,\n        };\n    }\n    return { ...iss };\n}\nexport function cleanEnum(obj) {\n    return Object.entries(obj)\n        .filter(([k, _]) => {\n        // return true if NaN, meaning it's not a number, thus a string key\n        return Number.isNaN(Number.parseInt(k, 10));\n    })\n        .map((el) => el[1]);\n}\n// Codec utility functions\nexport function base64ToUint8Array(base64) {\n    const binaryString = atob(base64);\n    const bytes = new Uint8Array(binaryString.length);\n    for (let i = 0; i < binaryString.length; i++) {\n        bytes[i] = binaryString.charCodeAt(i);\n    }\n    return bytes;\n}\nexport function uint8ArrayToBase64(bytes) {\n    let binaryString = \"\";\n    for (let i = 0; i < bytes.length; i++) {\n        binaryString += String.fromCharCode(bytes[i]);\n    }\n    return btoa(binaryString);\n}\nexport function base64urlToUint8Array(base64url) {\n    const base64 = base64url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n    const padding = \"=\".repeat((4 - (base64.length % 4)) % 4);\n    return base64ToUint8Array(base64 + padding);\n}\nexport function uint8ArrayToBase64url(bytes) {\n    return uint8ArrayToBase64(bytes).replace(/\\+/g, \"-\").replace(/\\//g, \"_\").replace(/=/g, \"\");\n}\nexport function hexToUint8Array(hex) {\n    const cleanHex = hex.replace(/^0x/, \"\");\n    if (cleanHex.length % 2 !== 0) {\n        throw new Error(\"Invalid hex string length\");\n    }\n    const bytes = new Uint8Array(cleanHex.length / 2);\n    for (let i = 0; i < cleanHex.length; i += 2) {\n        bytes[i / 2] = Number.parseInt(cleanHex.slice(i, i + 2), 16);\n    }\n    return bytes;\n}\nexport function uint8ArrayToHex(bytes) {\n    return Array.from(bytes)\n        .map((b) => b.toString(16).padStart(2, \"0\"))\n        .join(\"\");\n}\n// instanceof\nexport class Class {\n    constructor(..._args) { }\n}\n", "import { $constructor } from \"./core.js\";\nimport * as util from \"./util.js\";\nconst initializer = (inst, def) => {\n    inst.name = \"$ZodError\";\n    Object.defineProperty(inst, \"_zod\", {\n        value: inst._zod,\n        enumerable: false,\n    });\n    Object.defineProperty(inst, \"issues\", {\n        value: def,\n        enumerable: false,\n    });\n    inst.message = JSON.stringify(def, util.jsonStringifyReplacer, 2);\n    Object.defineProperty(inst, \"toString\", {\n        value: () => inst.message,\n        enumerable: false,\n    });\n};\nexport const $ZodError = $constructor(\"$ZodError\", initializer);\nexport const $ZodRealError = $constructor(\"$ZodError\", initializer, { Parent: Error });\nexport function flattenError(error, mapper = (issue) => issue.message) {\n    const fieldErrors = {};\n    const formErrors = [];\n    for (const sub of error.issues) {\n        if (sub.path.length > 0) {\n            fieldErrors[sub.path[0]] = fieldErrors[sub.path[0]] || [];\n            fieldErrors[sub.path[0]].push(mapper(sub));\n        }\n        else {\n            formErrors.push(mapper(sub));\n        }\n    }\n    return { formErrors, fieldErrors };\n}\nexport function formatError(error, mapper = (issue) => issue.message) {\n    const fieldErrors = { _errors: [] };\n    const processError = (error) => {\n        for (const issue of error.issues) {\n            if (issue.code === \"invalid_union\" && issue.errors.length) {\n                issue.errors.map((issues) => processError({ issues }));\n            }\n            else if (issue.code === \"invalid_key\") {\n                processError({ issues: issue.issues });\n            }\n            else if (issue.code === \"invalid_element\") {\n                processError({ issues: issue.issues });\n            }\n            else if (issue.path.length === 0) {\n                fieldErrors._errors.push(mapper(issue));\n            }\n            else {\n                let curr = fieldErrors;\n                let i = 0;\n                while (i < issue.path.length) {\n                    const el = issue.path[i];\n                    const terminal = i === issue.path.length - 1;\n                    if (!terminal) {\n                        curr[el] = curr[el] || { _errors: [] };\n                    }\n                    else {\n                        curr[el] = curr[el] || { _errors: [] };\n                        curr[el]._errors.push(mapper(issue));\n                    }\n                    curr = curr[el];\n                    i++;\n                }\n            }\n        }\n    };\n    processError(error);\n    return fieldErrors;\n}\nexport function treeifyError(error, mapper = (issue) => issue.message) {\n    const result = { errors: [] };\n    const processError = (error, path = []) => {\n        var _a, _b;\n        for (const issue of error.issues) {\n            if (issue.code === \"invalid_union\" && issue.errors.length) {\n                // regular union error\n                issue.errors.map((issues) => processError({ issues }, issue.path));\n            }\n            else if (issue.code === \"invalid_key\") {\n                processError({ issues: issue.issues }, issue.path);\n            }\n            else if (issue.code === \"invalid_element\") {\n                processError({ issues: issue.issues }, issue.path);\n            }\n            else {\n                const fullpath = [...path, ...issue.path];\n                if (fullpath.length === 0) {\n                    result.errors.push(mapper(issue));\n                    continue;\n                }\n                let curr = result;\n                let i = 0;\n                while (i < fullpath.length) {\n                    const el = fullpath[i];\n                    const terminal = i === fullpath.length - 1;\n                    if (typeof el === \"string\") {\n                        curr.properties ?? (curr.properties = {});\n                        (_a = curr.properties)[el] ?? (_a[el] = { errors: [] });\n                        curr = curr.properties[el];\n                    }\n                    else {\n                        curr.items ?? (curr.items = []);\n                        (_b = curr.items)[el] ?? (_b[el] = { errors: [] });\n                        curr = curr.items[el];\n                    }\n                    if (terminal) {\n                        curr.errors.push(mapper(issue));\n                    }\n                    i++;\n                }\n            }\n        }\n    };\n    processError(error);\n    return result;\n}\n/** Format a ZodError as a human-readable string in the following form.\n *\n * From\n *\n * ```ts\n * ZodError {\n *   issues: [\n *     {\n *       expected: 'string',\n *       code: 'invalid_type',\n *       path: [ 'username' ],\n *       message: 'Invalid input: expected string'\n *     },\n *     {\n *       expected: 'number',\n *       code: 'invalid_type',\n *       path: [ 'favoriteNumbers', 1 ],\n *       message: 'Invalid input: expected number'\n *     }\n *   ];\n * }\n * ```\n *\n * to\n *\n * ```\n * username\n *   \u2716 Expected number, received string at \"username\n * favoriteNumbers[0]\n *   \u2716 Invalid input: expected number\n * ```\n */\nexport function toDotPath(_path) {\n    const segs = [];\n    const path = _path.map((seg) => (typeof seg === \"object\" ? seg.key : seg));\n    for (const seg of path) {\n        if (typeof seg === \"number\")\n            segs.push(`[${seg}]`);\n        else if (typeof seg === \"symbol\")\n            segs.push(`[${JSON.stringify(String(seg))}]`);\n        else if (/[^\\w$]/.test(seg))\n            segs.push(`[${JSON.stringify(seg)}]`);\n        else {\n            if (segs.length)\n                segs.push(\".\");\n            segs.push(seg);\n        }\n    }\n    return segs.join(\"\");\n}\nexport function prettifyError(error) {\n    const lines = [];\n    // sort by path length\n    const issues = [...error.issues].sort((a, b) => (a.path ?? []).length - (b.path ?? []).length);\n    // Process each issue\n    for (const issue of issues) {\n        lines.push(`\u2716 ${issue.message}`);\n        if (issue.path?.length)\n            lines.push(`  \u2192 at ${toDotPath(issue.path)}`);\n    }\n    // Convert Map to formatted string\n    return lines.join(\"\\n\");\n}\n", "import * as core from \"./core.js\";\nimport * as errors from \"./errors.js\";\nimport * as util from \"./util.js\";\nexport const _parse = (_Err) => (schema, value, _ctx, _params) => {\n    const ctx = _ctx ? Object.assign(_ctx, { async: false }) : { async: false };\n    const result = schema._zod.run({ value, issues: [] }, ctx);\n    if (result instanceof Promise) {\n        throw new core.$ZodAsyncError();\n    }\n    if (result.issues.length) {\n        const e = new (_params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n        util.captureStackTrace(e, _params?.callee);\n        throw e;\n    }\n    return result.value;\n};\nexport const parse = /* @__PURE__*/ _parse(errors.$ZodRealError);\nexport const _parseAsync = (_Err) => async (schema, value, _ctx, params) => {\n    const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };\n    let result = schema._zod.run({ value, issues: [] }, ctx);\n    if (result instanceof Promise)\n        result = await result;\n    if (result.issues.length) {\n        const e = new (params?.Err ?? _Err)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())));\n        util.captureStackTrace(e, params?.callee);\n        throw e;\n    }\n    return result.value;\n};\nexport const parseAsync = /* @__PURE__*/ _parseAsync(errors.$ZodRealError);\nexport const _safeParse = (_Err) => (schema, value, _ctx) => {\n    const ctx = _ctx ? { ..._ctx, async: false } : { async: false };\n    const result = schema._zod.run({ value, issues: [] }, ctx);\n    if (result instanceof Promise) {\n        throw new core.$ZodAsyncError();\n    }\n    return result.issues.length\n        ? {\n            success: false,\n            error: new (_Err ?? errors.$ZodError)(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n        }\n        : { success: true, data: result.value };\n};\nexport const safeParse = /* @__PURE__*/ _safeParse(errors.$ZodRealError);\nexport const _safeParseAsync = (_Err) => async (schema, value, _ctx) => {\n    const ctx = _ctx ? Object.assign(_ctx, { async: true }) : { async: true };\n    let result = schema._zod.run({ value, issues: [] }, ctx);\n    if (result instanceof Promise)\n        result = await result;\n    return result.issues.length\n        ? {\n            success: false,\n            error: new _Err(result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n        }\n        : { success: true, data: result.value };\n};\nexport const safeParseAsync = /* @__PURE__*/ _safeParseAsync(errors.$ZodRealError);\nexport const _encode = (_Err) => (schema, value, _ctx) => {\n    const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n    return _parse(_Err)(schema, value, ctx);\n};\nexport const encode = /* @__PURE__*/ _encode(errors.$ZodRealError);\nexport const _decode = (_Err) => (schema, value, _ctx) => {\n    return _parse(_Err)(schema, value, _ctx);\n};\nexport const decode = /* @__PURE__*/ _decode(errors.$ZodRealError);\nexport const _encodeAsync = (_Err) => async (schema, value, _ctx) => {\n    const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n    return _parseAsync(_Err)(schema, value, ctx);\n};\nexport const encodeAsync = /* @__PURE__*/ _encodeAsync(errors.$ZodRealError);\nexport const _decodeAsync = (_Err) => async (schema, value, _ctx) => {\n    return _parseAsync(_Err)(schema, value, _ctx);\n};\nexport const decodeAsync = /* @__PURE__*/ _decodeAsync(errors.$ZodRealError);\nexport const _safeEncode = (_Err) => (schema, value, _ctx) => {\n    const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n    return _safeParse(_Err)(schema, value, ctx);\n};\nexport const safeEncode = /* @__PURE__*/ _safeEncode(errors.$ZodRealError);\nexport const _safeDecode = (_Err) => (schema, value, _ctx) => {\n    return _safeParse(_Err)(schema, value, _ctx);\n};\nexport const safeDecode = /* @__PURE__*/ _safeDecode(errors.$ZodRealError);\nexport const _safeEncodeAsync = (_Err) => async (schema, value, _ctx) => {\n    const ctx = _ctx ? Object.assign(_ctx, { direction: \"backward\" }) : { direction: \"backward\" };\n    return _safeParseAsync(_Err)(schema, value, ctx);\n};\nexport const safeEncodeAsync = /* @__PURE__*/ _safeEncodeAsync(errors.$ZodRealError);\nexport const _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {\n    return _safeParseAsync(_Err)(schema, value, _ctx);\n};\nexport const safeDecodeAsync = /* @__PURE__*/ _safeDecodeAsync(errors.$ZodRealError);\n", "import * as util from \"./util.js\";\nexport const cuid = /^[cC][^\\s-]{8,}$/;\nexport const cuid2 = /^[0-9a-z]+$/;\nexport const ulid = /^[0-9A-HJKMNP-TV-Za-hjkmnp-tv-z]{26}$/;\nexport const xid = /^[0-9a-vA-V]{20}$/;\nexport const ksuid = /^[A-Za-z0-9]{27}$/;\nexport const nanoid = /^[a-zA-Z0-9_-]{21}$/;\n/** ISO 8601-1 duration regex. Does not support the 8601-2 extensions like negative durations or fractional/negative components. */\nexport const duration = /^P(?:(\\d+W)|(?!.*W)(?=\\d|T\\d)(\\d+Y)?(\\d+M)?(\\d+D)?(T(?=\\d)(\\d+H)?(\\d+M)?(\\d+([.,]\\d+)?S)?)?)$/;\n/** Implements ISO 8601-2 extensions like explicit +- prefixes, mixing weeks with other units, and fractional/negative components. */\nexport const extendedDuration = /^[-+]?P(?!$)(?:(?:[-+]?\\d+Y)|(?:[-+]?\\d+[.,]\\d+Y$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:(?:[-+]?\\d+W)|(?:[-+]?\\d+[.,]\\d+W$))?(?:(?:[-+]?\\d+D)|(?:[-+]?\\d+[.,]\\d+D$))?(?:T(?=[\\d+-])(?:(?:[-+]?\\d+H)|(?:[-+]?\\d+[.,]\\d+H$))?(?:(?:[-+]?\\d+M)|(?:[-+]?\\d+[.,]\\d+M$))?(?:[-+]?\\d+(?:[.,]\\d+)?S)?)??$/;\n/** A regex for any UUID-like identifier: 8-4-4-4-12 hex pattern */\nexport const guid = /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$/;\n/** Returns a regex for validating an RFC 9562/4122 UUID.\n *\n * @param version Optionally specify a version 1-8. If no version is specified, all versions are supported. */\nexport const uuid = (version) => {\n    if (!version)\n        return /^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/;\n    return new RegExp(`^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-${version}[0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12})$`);\n};\nexport const uuid4 = /*@__PURE__*/ uuid(4);\nexport const uuid6 = /*@__PURE__*/ uuid(6);\nexport const uuid7 = /*@__PURE__*/ uuid(7);\n/** Practical email validation */\nexport const email = /^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$/;\n/** Equivalent to the HTML5 input[type=email] validation implemented by browsers. Source: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/email */\nexport const html5Email = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n/** The classic emailregex.com regex for RFC 5322-compliant emails */\nexport const rfc5322Email = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n/** A loose regex that allows Unicode characters, enforces length limits, and that's about it. */\nexport const unicodeEmail = /^[^\\s@\"]{1,64}@[^\\s@]{1,255}$/u;\nexport const idnEmail = unicodeEmail;\nexport const browserEmail = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emoji = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nexport function emoji() {\n    return new RegExp(_emoji, \"u\");\n}\nexport const ipv4 = /^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/;\nexport const ipv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:))$/;\nexport const mac = (delimiter) => {\n    const escapedDelim = util.escapeRegex(delimiter ?? \":\");\n    return new RegExp(`^(?:[0-9A-F]{2}${escapedDelim}){5}[0-9A-F]{2}$|^(?:[0-9a-f]{2}${escapedDelim}){5}[0-9a-f]{2}$`);\n};\nexport const cidrv4 = /^((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\/([0-9]|[1-2][0-9]|3[0-2])$/;\nexport const cidrv6 = /^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|::|([0-9a-fA-F]{1,4})?::([0-9a-fA-F]{1,4}:?){0,6})\\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nexport const base64 = /^$|^(?:[0-9a-zA-Z+/]{4})*(?:(?:[0-9a-zA-Z+/]{2}==)|(?:[0-9a-zA-Z+/]{3}=))?$/;\nexport const base64url = /^[A-Za-z0-9_-]*$/;\n// based on https://stackoverflow.com/questions/106179/regular-expression-to-match-dns-hostname-or-ip-address\n// export const hostname: RegExp = /^([a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+$/;\nexport const hostname = /^(?=.{1,253}\\.?$)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[-0-9a-zA-Z]{0,61}[0-9a-zA-Z])?)*\\.?$/;\nexport const domain = /^([a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$/;\n// https://blog.stevenlevithan.com/archives/validate-phone-number#r4-3 (regex sans spaces)\n// E.164: leading digit must be 1-9; total digits (excluding '+') between 7-15\nexport const e164 = /^\\+[1-9]\\d{6,14}$/;\n// const dateSource = `((\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\\\d|30)|(02)-(0[1-9]|1\\\\d|2[0-8])))`;\nconst dateSource = `(?:(?:\\\\d\\\\d[2468][048]|\\\\d\\\\d[13579][26]|\\\\d\\\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\\\d|30)|(?:02)-(?:0[1-9]|1\\\\d|2[0-8])))`;\nexport const date = /*@__PURE__*/ new RegExp(`^${dateSource}$`);\nfunction timeSource(args) {\n    const hhmm = `(?:[01]\\\\d|2[0-3]):[0-5]\\\\d`;\n    const regex = typeof args.precision === \"number\"\n        ? args.precision === -1\n            ? `${hhmm}`\n            : args.precision === 0\n                ? `${hhmm}:[0-5]\\\\d`\n                : `${hhmm}:[0-5]\\\\d\\\\.\\\\d{${args.precision}}`\n        : `${hhmm}(?::[0-5]\\\\d(?:\\\\.\\\\d+)?)?`;\n    return regex;\n}\nexport function time(args) {\n    return new RegExp(`^${timeSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetime(args) {\n    const time = timeSource({ precision: args.precision });\n    const opts = [\"Z\"];\n    if (args.local)\n        opts.push(\"\");\n    // if (args.offset) opts.push(`([+-]\\\\d{2}:\\\\d{2})`);\n    if (args.offset)\n        opts.push(`([+-](?:[01]\\\\d|2[0-3]):[0-5]\\\\d)`);\n    const timeRegex = `${time}(?:${opts.join(\"|\")})`;\n    return new RegExp(`^${dateSource}T(?:${timeRegex})$`);\n}\nexport const string = (params) => {\n    const regex = params ? `[\\\\s\\\\S]{${params?.minimum ?? 0},${params?.maximum ?? \"\"}}` : `[\\\\s\\\\S]*`;\n    return new RegExp(`^${regex}$`);\n};\nexport const bigint = /^-?\\d+n?$/;\nexport const integer = /^-?\\d+$/;\nexport const number = /^-?\\d+(?:\\.\\d+)?$/;\nexport const boolean = /^(?:true|false)$/i;\nconst _null = /^null$/i;\nexport { _null as null };\nconst _undefined = /^undefined$/i;\nexport { _undefined as undefined };\n// regex for string with no uppercase letters\nexport const lowercase = /^[^A-Z]*$/;\n// regex for string with no lowercase letters\nexport const uppercase = /^[^a-z]*$/;\n// regex for hexadecimal strings (any length)\nexport const hex = /^[0-9a-fA-F]*$/;\n// Hash regexes for different algorithms and encodings\n// Helper function to create base64 regex with exact length and padding\nfunction fixedBase64(bodyLength, padding) {\n    return new RegExp(`^[A-Za-z0-9+/]{${bodyLength}}${padding}$`);\n}\n// Helper function to create base64url regex with exact length (no padding)\nfunction fixedBase64url(length) {\n    return new RegExp(`^[A-Za-z0-9_-]{${length}}$`);\n}\n// MD5 (16 bytes): base64 = 24 chars total (22 + \"==\")\nexport const md5_hex = /^[0-9a-fA-F]{32}$/;\nexport const md5_base64 = /*@__PURE__*/ fixedBase64(22, \"==\");\nexport const md5_base64url = /*@__PURE__*/ fixedBase64url(22);\n// SHA1 (20 bytes): base64 = 28 chars total (27 + \"=\")\nexport const sha1_hex = /^[0-9a-fA-F]{40}$/;\nexport const sha1_base64 = /*@__PURE__*/ fixedBase64(27, \"=\");\nexport const sha1_base64url = /*@__PURE__*/ fixedBase64url(27);\n// SHA256 (32 bytes): base64 = 44 chars total (43 + \"=\")\nexport const sha256_hex = /^[0-9a-fA-F]{64}$/;\nexport const sha256_base64 = /*@__PURE__*/ fixedBase64(43, \"=\");\nexport const sha256_base64url = /*@__PURE__*/ fixedBase64url(43);\n// SHA384 (48 bytes): base64 = 64 chars total (no padding)\nexport const sha384_hex = /^[0-9a-fA-F]{96}$/;\nexport const sha384_base64 = /*@__PURE__*/ fixedBase64(64, \"\");\nexport const sha384_base64url = /*@__PURE__*/ fixedBase64url(64);\n// SHA512 (64 bytes): base64 = 88 chars total (86 + \"==\")\nexport const sha512_hex = /^[0-9a-fA-F]{128}$/;\nexport const sha512_base64 = /*@__PURE__*/ fixedBase64(86, \"==\");\nexport const sha512_base64url = /*@__PURE__*/ fixedBase64url(86);\n", "// import { $ZodType } from \"./schemas.js\";\nimport * as core from \"./core.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nexport const $ZodCheck = /*@__PURE__*/ core.$constructor(\"$ZodCheck\", (inst, def) => {\n    var _a;\n    inst._zod ?? (inst._zod = {});\n    inst._zod.def = def;\n    (_a = inst._zod).onattach ?? (_a.onattach = []);\n});\nconst numericOriginMap = {\n    number: \"number\",\n    bigint: \"bigint\",\n    object: \"date\",\n};\nexport const $ZodCheckLessThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckLessThan\", (inst, def) => {\n    $ZodCheck.init(inst, def);\n    const origin = numericOriginMap[typeof def.value];\n    inst._zod.onattach.push((inst) => {\n        const bag = inst._zod.bag;\n        const curr = (def.inclusive ? bag.maximum : bag.exclusiveMaximum) ?? Number.POSITIVE_INFINITY;\n        if (def.value < curr) {\n            if (def.inclusive)\n                bag.maximum = def.value;\n            else\n                bag.exclusiveMaximum = def.value;\n        }\n    });\n    inst._zod.check = (payload) => {\n        if (def.inclusive ? payload.value <= def.value : payload.value < def.value) {\n            return;\n        }\n        payload.issues.push({\n            origin,\n            code: \"too_big\",\n            maximum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n            input: payload.value,\n            inclusive: def.inclusive,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckGreaterThan = /*@__PURE__*/ core.$constructor(\"$ZodCheckGreaterThan\", (inst, def) => {\n    $ZodCheck.init(inst, def);\n    const origin = numericOriginMap[typeof def.value];\n    inst._zod.onattach.push((inst) => {\n        const bag = inst._zod.bag;\n        const curr = (def.inclusive ? bag.minimum : bag.exclusiveMinimum) ?? Number.NEGATIVE_INFINITY;\n        if (def.value > curr) {\n            if (def.inclusive)\n                bag.minimum = def.value;\n            else\n                bag.exclusiveMinimum = def.value;\n        }\n    });\n    inst._zod.check = (payload) => {\n        if (def.inclusive ? payload.value >= def.value : payload.value > def.value) {\n            return;\n        }\n        payload.issues.push({\n            origin,\n            code: \"too_small\",\n            minimum: typeof def.value === \"object\" ? def.value.getTime() : def.value,\n            input: payload.value,\n            inclusive: def.inclusive,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckMultipleOf = \n/*@__PURE__*/ core.$constructor(\"$ZodCheckMultipleOf\", (inst, def) => {\n    $ZodCheck.init(inst, def);\n    inst._zod.onattach.push((inst) => {\n        var _a;\n        (_a = inst._zod.bag).multipleOf ?? (_a.multipleOf = def.value);\n    });\n    inst._zod.check = (payload) => {\n        if (typeof payload.value !== typeof def.value)\n            throw new Error(\"Cannot mix number and bigint in multiple_of check.\");\n        const isMultiple = typeof payload.value === \"bigint\"\n            ? payload.value % def.value === BigInt(0)\n            : util.floatSafeRemainder(payload.value, def.value) === 0;\n        if (isMultiple)\n            return;\n        payload.issues.push({\n            origin: typeof payload.value,\n            code: \"not_multiple_of\",\n            divisor: def.value,\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckNumberFormat\", (inst, def) => {\n    $ZodCheck.init(inst, def); // no format checks\n    def.format = def.format || \"float64\";\n    const isInt = def.format?.includes(\"int\");\n    const origin = isInt ? \"int\" : \"number\";\n    const [minimum, maximum] = util.NUMBER_FORMAT_RANGES[def.format];\n    inst._zod.onattach.push((inst) => {\n        const bag = inst._zod.bag;\n        bag.format = def.format;\n        bag.minimum = minimum;\n        bag.maximum = maximum;\n        if (isInt)\n            bag.pattern = regexes.integer;\n    });\n    inst._zod.check = (payload) => {\n        const input = payload.value;\n        if (isInt) {\n            if (!Number.isInteger(input)) {\n                // invalid_format issue\n                // payload.issues.push({\n                //   expected: def.format,\n                //   format: def.format,\n                //   code: \"invalid_format\",\n                //   input,\n                //   inst,\n                // });\n                // invalid_type issue\n                payload.issues.push({\n                    expected: origin,\n                    format: def.format,\n                    code: \"invalid_type\",\n                    continue: false,\n                    input,\n                    inst,\n                });\n                return;\n                // not_multiple_of issue\n                // payload.issues.push({\n                //   code: \"not_multiple_of\",\n                //   origin: \"number\",\n                //   input,\n                //   inst,\n                //   divisor: 1,\n                // });\n            }\n            if (!Number.isSafeInteger(input)) {\n                if (input > 0) {\n                    // too_big\n                    payload.issues.push({\n                        input,\n                        code: \"too_big\",\n                        maximum: Number.MAX_SAFE_INTEGER,\n                        note: \"Integers must be within the safe integer range.\",\n                        inst,\n                        origin,\n                        inclusive: true,\n                        continue: !def.abort,\n                    });\n                }\n                else {\n                    // too_small\n                    payload.issues.push({\n                        input,\n                        code: \"too_small\",\n                        minimum: Number.MIN_SAFE_INTEGER,\n                        note: \"Integers must be within the safe integer range.\",\n                        inst,\n                        origin,\n                        inclusive: true,\n                        continue: !def.abort,\n                    });\n                }\n                return;\n            }\n        }\n        if (input < minimum) {\n            payload.issues.push({\n                origin: \"number\",\n                input,\n                code: \"too_small\",\n                minimum,\n                inclusive: true,\n                inst,\n                continue: !def.abort,\n            });\n        }\n        if (input > maximum) {\n            payload.issues.push({\n                origin: \"number\",\n                input,\n                code: \"too_big\",\n                maximum,\n                inclusive: true,\n                inst,\n                continue: !def.abort,\n            });\n        }\n    };\n});\nexport const $ZodCheckBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckBigIntFormat\", (inst, def) => {\n    $ZodCheck.init(inst, def); // no format checks\n    const [minimum, maximum] = util.BIGINT_FORMAT_RANGES[def.format];\n    inst._zod.onattach.push((inst) => {\n        const bag = inst._zod.bag;\n        bag.format = def.format;\n        bag.minimum = minimum;\n        bag.maximum = maximum;\n    });\n    inst._zod.check = (payload) => {\n        const input = payload.value;\n        if (input < minimum) {\n            payload.issues.push({\n                origin: \"bigint\",\n                input,\n                code: \"too_small\",\n                minimum: minimum,\n                inclusive: true,\n                inst,\n                continue: !def.abort,\n            });\n        }\n        if (input > maximum) {\n            payload.issues.push({\n                origin: \"bigint\",\n                input,\n                code: \"too_big\",\n                maximum,\n                inclusive: true,\n                inst,\n                continue: !def.abort,\n            });\n        }\n    };\n});\nexport const $ZodCheckMaxSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxSize\", (inst, def) => {\n    var _a;\n    $ZodCheck.init(inst, def);\n    (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n        const val = payload.value;\n        return !util.nullish(val) && val.size !== undefined;\n    });\n    inst._zod.onattach.push((inst) => {\n        const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n        if (def.maximum < curr)\n            inst._zod.bag.maximum = def.maximum;\n    });\n    inst._zod.check = (payload) => {\n        const input = payload.value;\n        const size = input.size;\n        if (size <= def.maximum)\n            return;\n        payload.issues.push({\n            origin: util.getSizableOrigin(input),\n            code: \"too_big\",\n            maximum: def.maximum,\n            inclusive: true,\n            input,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckMinSize = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinSize\", (inst, def) => {\n    var _a;\n    $ZodCheck.init(inst, def);\n    (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n        const val = payload.value;\n        return !util.nullish(val) && val.size !== undefined;\n    });\n    inst._zod.onattach.push((inst) => {\n        const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n        if (def.minimum > curr)\n            inst._zod.bag.minimum = def.minimum;\n    });\n    inst._zod.check = (payload) => {\n        const input = payload.value;\n        const size = input.size;\n        if (size >= def.minimum)\n            return;\n        payload.issues.push({\n            origin: util.getSizableOrigin(input),\n            code: \"too_small\",\n            minimum: def.minimum,\n            inclusive: true,\n            input,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckSizeEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckSizeEquals\", (inst, def) => {\n    var _a;\n    $ZodCheck.init(inst, def);\n    (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n        const val = payload.value;\n        return !util.nullish(val) && val.size !== undefined;\n    });\n    inst._zod.onattach.push((inst) => {\n        const bag = inst._zod.bag;\n        bag.minimum = def.size;\n        bag.maximum = def.size;\n        bag.size = def.size;\n    });\n    inst._zod.check = (payload) => {\n        const input = payload.value;\n        const size = input.size;\n        if (size === def.size)\n            return;\n        const tooBig = size > def.size;\n        payload.issues.push({\n            origin: util.getSizableOrigin(input),\n            ...(tooBig ? { code: \"too_big\", maximum: def.size } : { code: \"too_small\", minimum: def.size }),\n            inclusive: true,\n            exact: true,\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckMaxLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMaxLength\", (inst, def) => {\n    var _a;\n    $ZodCheck.init(inst, def);\n    (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n        const val = payload.value;\n        return !util.nullish(val) && val.length !== undefined;\n    });\n    inst._zod.onattach.push((inst) => {\n        const curr = (inst._zod.bag.maximum ?? Number.POSITIVE_INFINITY);\n        if (def.maximum < curr)\n            inst._zod.bag.maximum = def.maximum;\n    });\n    inst._zod.check = (payload) => {\n        const input = payload.value;\n        const length = input.length;\n        if (length <= def.maximum)\n            return;\n        const origin = util.getLengthableOrigin(input);\n        payload.issues.push({\n            origin,\n            code: \"too_big\",\n            maximum: def.maximum,\n            inclusive: true,\n            input,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckMinLength = /*@__PURE__*/ core.$constructor(\"$ZodCheckMinLength\", (inst, def) => {\n    var _a;\n    $ZodCheck.init(inst, def);\n    (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n        const val = payload.value;\n        return !util.nullish(val) && val.length !== undefined;\n    });\n    inst._zod.onattach.push((inst) => {\n        const curr = (inst._zod.bag.minimum ?? Number.NEGATIVE_INFINITY);\n        if (def.minimum > curr)\n            inst._zod.bag.minimum = def.minimum;\n    });\n    inst._zod.check = (payload) => {\n        const input = payload.value;\n        const length = input.length;\n        if (length >= def.minimum)\n            return;\n        const origin = util.getLengthableOrigin(input);\n        payload.issues.push({\n            origin,\n            code: \"too_small\",\n            minimum: def.minimum,\n            inclusive: true,\n            input,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckLengthEquals = /*@__PURE__*/ core.$constructor(\"$ZodCheckLengthEquals\", (inst, def) => {\n    var _a;\n    $ZodCheck.init(inst, def);\n    (_a = inst._zod.def).when ?? (_a.when = (payload) => {\n        const val = payload.value;\n        return !util.nullish(val) && val.length !== undefined;\n    });\n    inst._zod.onattach.push((inst) => {\n        const bag = inst._zod.bag;\n        bag.minimum = def.length;\n        bag.maximum = def.length;\n        bag.length = def.length;\n    });\n    inst._zod.check = (payload) => {\n        const input = payload.value;\n        const length = input.length;\n        if (length === def.length)\n            return;\n        const origin = util.getLengthableOrigin(input);\n        const tooBig = length > def.length;\n        payload.issues.push({\n            origin,\n            ...(tooBig ? { code: \"too_big\", maximum: def.length } : { code: \"too_small\", minimum: def.length }),\n            inclusive: true,\n            exact: true,\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCheckStringFormat\", (inst, def) => {\n    var _a, _b;\n    $ZodCheck.init(inst, def);\n    inst._zod.onattach.push((inst) => {\n        const bag = inst._zod.bag;\n        bag.format = def.format;\n        if (def.pattern) {\n            bag.patterns ?? (bag.patterns = new Set());\n            bag.patterns.add(def.pattern);\n        }\n    });\n    if (def.pattern)\n        (_a = inst._zod).check ?? (_a.check = (payload) => {\n            def.pattern.lastIndex = 0;\n            if (def.pattern.test(payload.value))\n                return;\n            payload.issues.push({\n                origin: \"string\",\n                code: \"invalid_format\",\n                format: def.format,\n                input: payload.value,\n                ...(def.pattern ? { pattern: def.pattern.toString() } : {}),\n                inst,\n                continue: !def.abort,\n            });\n        });\n    else\n        (_b = inst._zod).check ?? (_b.check = () => { });\n});\nexport const $ZodCheckRegex = /*@__PURE__*/ core.$constructor(\"$ZodCheckRegex\", (inst, def) => {\n    $ZodCheckStringFormat.init(inst, def);\n    inst._zod.check = (payload) => {\n        def.pattern.lastIndex = 0;\n        if (def.pattern.test(payload.value))\n            return;\n        payload.issues.push({\n            origin: \"string\",\n            code: \"invalid_format\",\n            format: \"regex\",\n            input: payload.value,\n            pattern: def.pattern.toString(),\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckLowerCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckLowerCase\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.lowercase);\n    $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckUpperCase = /*@__PURE__*/ core.$constructor(\"$ZodCheckUpperCase\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.uppercase);\n    $ZodCheckStringFormat.init(inst, def);\n});\nexport const $ZodCheckIncludes = /*@__PURE__*/ core.$constructor(\"$ZodCheckIncludes\", (inst, def) => {\n    $ZodCheck.init(inst, def);\n    const escapedRegex = util.escapeRegex(def.includes);\n    const pattern = new RegExp(typeof def.position === \"number\" ? `^.{${def.position}}${escapedRegex}` : escapedRegex);\n    def.pattern = pattern;\n    inst._zod.onattach.push((inst) => {\n        const bag = inst._zod.bag;\n        bag.patterns ?? (bag.patterns = new Set());\n        bag.patterns.add(pattern);\n    });\n    inst._zod.check = (payload) => {\n        if (payload.value.includes(def.includes, def.position))\n            return;\n        payload.issues.push({\n            origin: \"string\",\n            code: \"invalid_format\",\n            format: \"includes\",\n            includes: def.includes,\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckStartsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckStartsWith\", (inst, def) => {\n    $ZodCheck.init(inst, def);\n    const pattern = new RegExp(`^${util.escapeRegex(def.prefix)}.*`);\n    def.pattern ?? (def.pattern = pattern);\n    inst._zod.onattach.push((inst) => {\n        const bag = inst._zod.bag;\n        bag.patterns ?? (bag.patterns = new Set());\n        bag.patterns.add(pattern);\n    });\n    inst._zod.check = (payload) => {\n        if (payload.value.startsWith(def.prefix))\n            return;\n        payload.issues.push({\n            origin: \"string\",\n            code: \"invalid_format\",\n            format: \"starts_with\",\n            prefix: def.prefix,\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckEndsWith = /*@__PURE__*/ core.$constructor(\"$ZodCheckEndsWith\", (inst, def) => {\n    $ZodCheck.init(inst, def);\n    const pattern = new RegExp(`.*${util.escapeRegex(def.suffix)}$`);\n    def.pattern ?? (def.pattern = pattern);\n    inst._zod.onattach.push((inst) => {\n        const bag = inst._zod.bag;\n        bag.patterns ?? (bag.patterns = new Set());\n        bag.patterns.add(pattern);\n    });\n    inst._zod.check = (payload) => {\n        if (payload.value.endsWith(def.suffix))\n            return;\n        payload.issues.push({\n            origin: \"string\",\n            code: \"invalid_format\",\n            format: \"ends_with\",\n            suffix: def.suffix,\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\n///////////////////////////////////\n/////    $ZodCheckProperty    /////\n///////////////////////////////////\nfunction handleCheckPropertyResult(result, payload, property) {\n    if (result.issues.length) {\n        payload.issues.push(...util.prefixIssues(property, result.issues));\n    }\n}\nexport const $ZodCheckProperty = /*@__PURE__*/ core.$constructor(\"$ZodCheckProperty\", (inst, def) => {\n    $ZodCheck.init(inst, def);\n    inst._zod.check = (payload) => {\n        const result = def.schema._zod.run({\n            value: payload.value[def.property],\n            issues: [],\n        }, {});\n        if (result instanceof Promise) {\n            return result.then((result) => handleCheckPropertyResult(result, payload, def.property));\n        }\n        handleCheckPropertyResult(result, payload, def.property);\n        return;\n    };\n});\nexport const $ZodCheckMimeType = /*@__PURE__*/ core.$constructor(\"$ZodCheckMimeType\", (inst, def) => {\n    $ZodCheck.init(inst, def);\n    const mimeSet = new Set(def.mime);\n    inst._zod.onattach.push((inst) => {\n        inst._zod.bag.mime = def.mime;\n    });\n    inst._zod.check = (payload) => {\n        if (mimeSet.has(payload.value.type))\n            return;\n        payload.issues.push({\n            code: \"invalid_value\",\n            values: def.mime,\n            input: payload.value.type,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCheckOverwrite = /*@__PURE__*/ core.$constructor(\"$ZodCheckOverwrite\", (inst, def) => {\n    $ZodCheck.init(inst, def);\n    inst._zod.check = (payload) => {\n        payload.value = def.tx(payload.value);\n    };\n});\n", "export class Doc {\n    constructor(args = []) {\n        this.content = [];\n        this.indent = 0;\n        if (this)\n            this.args = args;\n    }\n    indented(fn) {\n        this.indent += 1;\n        fn(this);\n        this.indent -= 1;\n    }\n    write(arg) {\n        if (typeof arg === \"function\") {\n            arg(this, { execution: \"sync\" });\n            arg(this, { execution: \"async\" });\n            return;\n        }\n        const content = arg;\n        const lines = content.split(\"\\n\").filter((x) => x);\n        const minIndent = Math.min(...lines.map((x) => x.length - x.trimStart().length));\n        const dedented = lines.map((x) => x.slice(minIndent)).map((x) => \" \".repeat(this.indent * 2) + x);\n        for (const line of dedented) {\n            this.content.push(line);\n        }\n    }\n    compile() {\n        const F = Function;\n        const args = this?.args;\n        const content = this?.content ?? [``];\n        const lines = [...content.map((x) => `  ${x}`)];\n        // console.log(lines.join(\"\\n\"));\n        return new F(...args, lines.join(\"\\n\"));\n    }\n}\n", "export const version = {\n    major: 4,\n    minor: 3,\n    patch: 6,\n};\n", "import * as checks from \"./checks.js\";\nimport * as core from \"./core.js\";\nimport { Doc } from \"./doc.js\";\nimport { parse, parseAsync, safeParse, safeParseAsync } from \"./parse.js\";\nimport * as regexes from \"./regexes.js\";\nimport * as util from \"./util.js\";\nimport { version } from \"./versions.js\";\nexport const $ZodType = /*@__PURE__*/ core.$constructor(\"$ZodType\", (inst, def) => {\n    var _a;\n    inst ?? (inst = {});\n    inst._zod.def = def; // set _def property\n    inst._zod.bag = inst._zod.bag || {}; // initialize _bag object\n    inst._zod.version = version;\n    const checks = [...(inst._zod.def.checks ?? [])];\n    // if inst is itself a checks.$ZodCheck, run it as a check\n    if (inst._zod.traits.has(\"$ZodCheck\")) {\n        checks.unshift(inst);\n    }\n    for (const ch of checks) {\n        for (const fn of ch._zod.onattach) {\n            fn(inst);\n        }\n    }\n    if (checks.length === 0) {\n        // deferred initializer\n        // inst._zod.parse is not yet defined\n        (_a = inst._zod).deferred ?? (_a.deferred = []);\n        inst._zod.deferred?.push(() => {\n            inst._zod.run = inst._zod.parse;\n        });\n    }\n    else {\n        const runChecks = (payload, checks, ctx) => {\n            let isAborted = util.aborted(payload);\n            let asyncResult;\n            for (const ch of checks) {\n                if (ch._zod.def.when) {\n                    const shouldRun = ch._zod.def.when(payload);\n                    if (!shouldRun)\n                        continue;\n                }\n                else if (isAborted) {\n                    continue;\n                }\n                const currLen = payload.issues.length;\n                const _ = ch._zod.check(payload);\n                if (_ instanceof Promise && ctx?.async === false) {\n                    throw new core.$ZodAsyncError();\n                }\n                if (asyncResult || _ instanceof Promise) {\n                    asyncResult = (asyncResult ?? Promise.resolve()).then(async () => {\n                        await _;\n                        const nextLen = payload.issues.length;\n                        if (nextLen === currLen)\n                            return;\n                        if (!isAborted)\n                            isAborted = util.aborted(payload, currLen);\n                    });\n                }\n                else {\n                    const nextLen = payload.issues.length;\n                    if (nextLen === currLen)\n                        continue;\n                    if (!isAborted)\n                        isAborted = util.aborted(payload, currLen);\n                }\n            }\n            if (asyncResult) {\n                return asyncResult.then(() => {\n                    return payload;\n                });\n            }\n            return payload;\n        };\n        const handleCanaryResult = (canary, payload, ctx) => {\n            // abort if the canary is aborted\n            if (util.aborted(canary)) {\n                canary.aborted = true;\n                return canary;\n            }\n            // run checks first, then\n            const checkResult = runChecks(payload, checks, ctx);\n            if (checkResult instanceof Promise) {\n                if (ctx.async === false)\n                    throw new core.$ZodAsyncError();\n                return checkResult.then((checkResult) => inst._zod.parse(checkResult, ctx));\n            }\n            return inst._zod.parse(checkResult, ctx);\n        };\n        inst._zod.run = (payload, ctx) => {\n            if (ctx.skipChecks) {\n                return inst._zod.parse(payload, ctx);\n            }\n            if (ctx.direction === \"backward\") {\n                // run canary\n                // initial pass (no checks)\n                const canary = inst._zod.parse({ value: payload.value, issues: [] }, { ...ctx, skipChecks: true });\n                if (canary instanceof Promise) {\n                    return canary.then((canary) => {\n                        return handleCanaryResult(canary, payload, ctx);\n                    });\n                }\n                return handleCanaryResult(canary, payload, ctx);\n            }\n            // forward\n            const result = inst._zod.parse(payload, ctx);\n            if (result instanceof Promise) {\n                if (ctx.async === false)\n                    throw new core.$ZodAsyncError();\n                return result.then((result) => runChecks(result, checks, ctx));\n            }\n            return runChecks(result, checks, ctx);\n        };\n    }\n    // Lazy initialize ~standard to avoid creating objects for every schema\n    util.defineLazy(inst, \"~standard\", () => ({\n        validate: (value) => {\n            try {\n                const r = safeParse(inst, value);\n                return r.success ? { value: r.data } : { issues: r.error?.issues };\n            }\n            catch (_) {\n                return safeParseAsync(inst, value).then((r) => (r.success ? { value: r.data } : { issues: r.error?.issues }));\n            }\n        },\n        vendor: \"zod\",\n        version: 1,\n    }));\n});\nexport { clone } from \"./util.js\";\nexport const $ZodString = /*@__PURE__*/ core.$constructor(\"$ZodString\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.pattern = [...(inst?._zod.bag?.patterns ?? [])].pop() ?? regexes.string(inst._zod.bag);\n    inst._zod.parse = (payload, _) => {\n        if (def.coerce)\n            try {\n                payload.value = String(payload.value);\n            }\n            catch (_) { }\n        if (typeof payload.value === \"string\")\n            return payload;\n        payload.issues.push({\n            expected: \"string\",\n            code: \"invalid_type\",\n            input: payload.value,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodStringFormat\", (inst, def) => {\n    // check initialization must come first\n    checks.$ZodCheckStringFormat.init(inst, def);\n    $ZodString.init(inst, def);\n});\nexport const $ZodGUID = /*@__PURE__*/ core.$constructor(\"$ZodGUID\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.guid);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodUUID = /*@__PURE__*/ core.$constructor(\"$ZodUUID\", (inst, def) => {\n    if (def.version) {\n        const versionMap = {\n            v1: 1,\n            v2: 2,\n            v3: 3,\n            v4: 4,\n            v5: 5,\n            v6: 6,\n            v7: 7,\n            v8: 8,\n        };\n        const v = versionMap[def.version];\n        if (v === undefined)\n            throw new Error(`Invalid UUID version: \"${def.version}\"`);\n        def.pattern ?? (def.pattern = regexes.uuid(v));\n    }\n    else\n        def.pattern ?? (def.pattern = regexes.uuid());\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodEmail = /*@__PURE__*/ core.$constructor(\"$ZodEmail\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.email);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodURL = /*@__PURE__*/ core.$constructor(\"$ZodURL\", (inst, def) => {\n    $ZodStringFormat.init(inst, def);\n    inst._zod.check = (payload) => {\n        try {\n            // Trim whitespace from input\n            const trimmed = payload.value.trim();\n            // @ts-ignore\n            const url = new URL(trimmed);\n            if (def.hostname) {\n                def.hostname.lastIndex = 0;\n                if (!def.hostname.test(url.hostname)) {\n                    payload.issues.push({\n                        code: \"invalid_format\",\n                        format: \"url\",\n                        note: \"Invalid hostname\",\n                        pattern: def.hostname.source,\n                        input: payload.value,\n                        inst,\n                        continue: !def.abort,\n                    });\n                }\n            }\n            if (def.protocol) {\n                def.protocol.lastIndex = 0;\n                if (!def.protocol.test(url.protocol.endsWith(\":\") ? url.protocol.slice(0, -1) : url.protocol)) {\n                    payload.issues.push({\n                        code: \"invalid_format\",\n                        format: \"url\",\n                        note: \"Invalid protocol\",\n                        pattern: def.protocol.source,\n                        input: payload.value,\n                        inst,\n                        continue: !def.abort,\n                    });\n                }\n            }\n            // Set the output value based on normalize flag\n            if (def.normalize) {\n                // Use normalized URL\n                payload.value = url.href;\n            }\n            else {\n                // Preserve the original input (trimmed)\n                payload.value = trimmed;\n            }\n            return;\n        }\n        catch (_) {\n            payload.issues.push({\n                code: \"invalid_format\",\n                format: \"url\",\n                input: payload.value,\n                inst,\n                continue: !def.abort,\n            });\n        }\n    };\n});\nexport const $ZodEmoji = /*@__PURE__*/ core.$constructor(\"$ZodEmoji\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.emoji());\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodNanoID = /*@__PURE__*/ core.$constructor(\"$ZodNanoID\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.nanoid);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID = /*@__PURE__*/ core.$constructor(\"$ZodCUID\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.cuid);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCUID2 = /*@__PURE__*/ core.$constructor(\"$ZodCUID2\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.cuid2);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodULID = /*@__PURE__*/ core.$constructor(\"$ZodULID\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.ulid);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodXID = /*@__PURE__*/ core.$constructor(\"$ZodXID\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.xid);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodKSUID = /*@__PURE__*/ core.$constructor(\"$ZodKSUID\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.ksuid);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODateTime = /*@__PURE__*/ core.$constructor(\"$ZodISODateTime\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.datetime(def));\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODate = /*@__PURE__*/ core.$constructor(\"$ZodISODate\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.date);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISOTime = /*@__PURE__*/ core.$constructor(\"$ZodISOTime\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.time(def));\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodISODuration = /*@__PURE__*/ core.$constructor(\"$ZodISODuration\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.duration);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodIPv4 = /*@__PURE__*/ core.$constructor(\"$ZodIPv4\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.ipv4);\n    $ZodStringFormat.init(inst, def);\n    inst._zod.bag.format = `ipv4`;\n});\nexport const $ZodIPv6 = /*@__PURE__*/ core.$constructor(\"$ZodIPv6\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.ipv6);\n    $ZodStringFormat.init(inst, def);\n    inst._zod.bag.format = `ipv6`;\n    inst._zod.check = (payload) => {\n        try {\n            // @ts-ignore\n            new URL(`http://[${payload.value}]`);\n            // return;\n        }\n        catch {\n            payload.issues.push({\n                code: \"invalid_format\",\n                format: \"ipv6\",\n                input: payload.value,\n                inst,\n                continue: !def.abort,\n            });\n        }\n    };\n});\nexport const $ZodMAC = /*@__PURE__*/ core.$constructor(\"$ZodMAC\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.mac(def.delimiter));\n    $ZodStringFormat.init(inst, def);\n    inst._zod.bag.format = `mac`;\n});\nexport const $ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv4\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.cidrv4);\n    $ZodStringFormat.init(inst, def);\n});\nexport const $ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"$ZodCIDRv6\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.cidrv6); // not used for validation\n    $ZodStringFormat.init(inst, def);\n    inst._zod.check = (payload) => {\n        const parts = payload.value.split(\"/\");\n        try {\n            if (parts.length !== 2)\n                throw new Error();\n            const [address, prefix] = parts;\n            if (!prefix)\n                throw new Error();\n            const prefixNum = Number(prefix);\n            if (`${prefixNum}` !== prefix)\n                throw new Error();\n            if (prefixNum < 0 || prefixNum > 128)\n                throw new Error();\n            // @ts-ignore\n            new URL(`http://[${address}]`);\n        }\n        catch {\n            payload.issues.push({\n                code: \"invalid_format\",\n                format: \"cidrv6\",\n                input: payload.value,\n                inst,\n                continue: !def.abort,\n            });\n        }\n    };\n});\n//////////////////////////////   ZodBase64   //////////////////////////////\nexport function isValidBase64(data) {\n    if (data === \"\")\n        return true;\n    if (data.length % 4 !== 0)\n        return false;\n    try {\n        // @ts-ignore\n        atob(data);\n        return true;\n    }\n    catch {\n        return false;\n    }\n}\nexport const $ZodBase64 = /*@__PURE__*/ core.$constructor(\"$ZodBase64\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.base64);\n    $ZodStringFormat.init(inst, def);\n    inst._zod.bag.contentEncoding = \"base64\";\n    inst._zod.check = (payload) => {\n        if (isValidBase64(payload.value))\n            return;\n        payload.issues.push({\n            code: \"invalid_format\",\n            format: \"base64\",\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\n//////////////////////////////   ZodBase64   //////////////////////////////\nexport function isValidBase64URL(data) {\n    if (!regexes.base64url.test(data))\n        return false;\n    const base64 = data.replace(/[-_]/g, (c) => (c === \"-\" ? \"+\" : \"/\"));\n    const padded = base64.padEnd(Math.ceil(base64.length / 4) * 4, \"=\");\n    return isValidBase64(padded);\n}\nexport const $ZodBase64URL = /*@__PURE__*/ core.$constructor(\"$ZodBase64URL\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.base64url);\n    $ZodStringFormat.init(inst, def);\n    inst._zod.bag.contentEncoding = \"base64url\";\n    inst._zod.check = (payload) => {\n        if (isValidBase64URL(payload.value))\n            return;\n        payload.issues.push({\n            code: \"invalid_format\",\n            format: \"base64url\",\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodE164 = /*@__PURE__*/ core.$constructor(\"$ZodE164\", (inst, def) => {\n    def.pattern ?? (def.pattern = regexes.e164);\n    $ZodStringFormat.init(inst, def);\n});\n//////////////////////////////   ZodJWT   //////////////////////////////\nexport function isValidJWT(token, algorithm = null) {\n    try {\n        const tokensParts = token.split(\".\");\n        if (tokensParts.length !== 3)\n            return false;\n        const [header] = tokensParts;\n        if (!header)\n            return false;\n        // @ts-ignore\n        const parsedHeader = JSON.parse(atob(header));\n        if (\"typ\" in parsedHeader && parsedHeader?.typ !== \"JWT\")\n            return false;\n        if (!parsedHeader.alg)\n            return false;\n        if (algorithm && (!(\"alg\" in parsedHeader) || parsedHeader.alg !== algorithm))\n            return false;\n        return true;\n    }\n    catch {\n        return false;\n    }\n}\nexport const $ZodJWT = /*@__PURE__*/ core.$constructor(\"$ZodJWT\", (inst, def) => {\n    $ZodStringFormat.init(inst, def);\n    inst._zod.check = (payload) => {\n        if (isValidJWT(payload.value, def.alg))\n            return;\n        payload.issues.push({\n            code: \"invalid_format\",\n            format: \"jwt\",\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"$ZodCustomStringFormat\", (inst, def) => {\n    $ZodStringFormat.init(inst, def);\n    inst._zod.check = (payload) => {\n        if (def.fn(payload.value))\n            return;\n        payload.issues.push({\n            code: \"invalid_format\",\n            format: def.format,\n            input: payload.value,\n            inst,\n            continue: !def.abort,\n        });\n    };\n});\nexport const $ZodNumber = /*@__PURE__*/ core.$constructor(\"$ZodNumber\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.pattern = inst._zod.bag.pattern ?? regexes.number;\n    inst._zod.parse = (payload, _ctx) => {\n        if (def.coerce)\n            try {\n                payload.value = Number(payload.value);\n            }\n            catch (_) { }\n        const input = payload.value;\n        if (typeof input === \"number\" && !Number.isNaN(input) && Number.isFinite(input)) {\n            return payload;\n        }\n        const received = typeof input === \"number\"\n            ? Number.isNaN(input)\n                ? \"NaN\"\n                : !Number.isFinite(input)\n                    ? \"Infinity\"\n                    : undefined\n            : undefined;\n        payload.issues.push({\n            expected: \"number\",\n            code: \"invalid_type\",\n            input,\n            inst,\n            ...(received ? { received } : {}),\n        });\n        return payload;\n    };\n});\nexport const $ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"$ZodNumberFormat\", (inst, def) => {\n    checks.$ZodCheckNumberFormat.init(inst, def);\n    $ZodNumber.init(inst, def); // no format checks\n});\nexport const $ZodBoolean = /*@__PURE__*/ core.$constructor(\"$ZodBoolean\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.pattern = regexes.boolean;\n    inst._zod.parse = (payload, _ctx) => {\n        if (def.coerce)\n            try {\n                payload.value = Boolean(payload.value);\n            }\n            catch (_) { }\n        const input = payload.value;\n        if (typeof input === \"boolean\")\n            return payload;\n        payload.issues.push({\n            expected: \"boolean\",\n            code: \"invalid_type\",\n            input,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodBigInt = /*@__PURE__*/ core.$constructor(\"$ZodBigInt\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.pattern = regexes.bigint;\n    inst._zod.parse = (payload, _ctx) => {\n        if (def.coerce)\n            try {\n                payload.value = BigInt(payload.value);\n            }\n            catch (_) { }\n        if (typeof payload.value === \"bigint\")\n            return payload;\n        payload.issues.push({\n            expected: \"bigint\",\n            code: \"invalid_type\",\n            input: payload.value,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"$ZodBigIntFormat\", (inst, def) => {\n    checks.$ZodCheckBigIntFormat.init(inst, def);\n    $ZodBigInt.init(inst, def); // no format checks\n});\nexport const $ZodSymbol = /*@__PURE__*/ core.$constructor(\"$ZodSymbol\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, _ctx) => {\n        const input = payload.value;\n        if (typeof input === \"symbol\")\n            return payload;\n        payload.issues.push({\n            expected: \"symbol\",\n            code: \"invalid_type\",\n            input,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodUndefined = /*@__PURE__*/ core.$constructor(\"$ZodUndefined\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.pattern = regexes.undefined;\n    inst._zod.values = new Set([undefined]);\n    inst._zod.optin = \"optional\";\n    inst._zod.optout = \"optional\";\n    inst._zod.parse = (payload, _ctx) => {\n        const input = payload.value;\n        if (typeof input === \"undefined\")\n            return payload;\n        payload.issues.push({\n            expected: \"undefined\",\n            code: \"invalid_type\",\n            input,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodNull = /*@__PURE__*/ core.$constructor(\"$ZodNull\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.pattern = regexes.null;\n    inst._zod.values = new Set([null]);\n    inst._zod.parse = (payload, _ctx) => {\n        const input = payload.value;\n        if (input === null)\n            return payload;\n        payload.issues.push({\n            expected: \"null\",\n            code: \"invalid_type\",\n            input,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodAny = /*@__PURE__*/ core.$constructor(\"$ZodAny\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload) => payload;\n});\nexport const $ZodUnknown = /*@__PURE__*/ core.$constructor(\"$ZodUnknown\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload) => payload;\n});\nexport const $ZodNever = /*@__PURE__*/ core.$constructor(\"$ZodNever\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, _ctx) => {\n        payload.issues.push({\n            expected: \"never\",\n            code: \"invalid_type\",\n            input: payload.value,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodVoid = /*@__PURE__*/ core.$constructor(\"$ZodVoid\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, _ctx) => {\n        const input = payload.value;\n        if (typeof input === \"undefined\")\n            return payload;\n        payload.issues.push({\n            expected: \"void\",\n            code: \"invalid_type\",\n            input,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodDate = /*@__PURE__*/ core.$constructor(\"$ZodDate\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, _ctx) => {\n        if (def.coerce) {\n            try {\n                payload.value = new Date(payload.value);\n            }\n            catch (_err) { }\n        }\n        const input = payload.value;\n        const isDate = input instanceof Date;\n        const isValidDate = isDate && !Number.isNaN(input.getTime());\n        if (isValidDate)\n            return payload;\n        payload.issues.push({\n            expected: \"date\",\n            code: \"invalid_type\",\n            input,\n            ...(isDate ? { received: \"Invalid Date\" } : {}),\n            inst,\n        });\n        return payload;\n    };\n});\nfunction handleArrayResult(result, final, index) {\n    if (result.issues.length) {\n        final.issues.push(...util.prefixIssues(index, result.issues));\n    }\n    final.value[index] = result.value;\n}\nexport const $ZodArray = /*@__PURE__*/ core.$constructor(\"$ZodArray\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, ctx) => {\n        const input = payload.value;\n        if (!Array.isArray(input)) {\n            payload.issues.push({\n                expected: \"array\",\n                code: \"invalid_type\",\n                input,\n                inst,\n            });\n            return payload;\n        }\n        payload.value = Array(input.length);\n        const proms = [];\n        for (let i = 0; i < input.length; i++) {\n            const item = input[i];\n            const result = def.element._zod.run({\n                value: item,\n                issues: [],\n            }, ctx);\n            if (result instanceof Promise) {\n                proms.push(result.then((result) => handleArrayResult(result, payload, i)));\n            }\n            else {\n                handleArrayResult(result, payload, i);\n            }\n        }\n        if (proms.length) {\n            return Promise.all(proms).then(() => payload);\n        }\n        return payload; //handleArrayResultsAsync(parseResults, final);\n    };\n});\nfunction handlePropertyResult(result, final, key, input, isOptionalOut) {\n    if (result.issues.length) {\n        // For optional-out schemas, ignore errors on absent keys\n        if (isOptionalOut && !(key in input)) {\n            return;\n        }\n        final.issues.push(...util.prefixIssues(key, result.issues));\n    }\n    if (result.value === undefined) {\n        if (key in input) {\n            final.value[key] = undefined;\n        }\n    }\n    else {\n        final.value[key] = result.value;\n    }\n}\nfunction normalizeDef(def) {\n    const keys = Object.keys(def.shape);\n    for (const k of keys) {\n        if (!def.shape?.[k]?._zod?.traits?.has(\"$ZodType\")) {\n            throw new Error(`Invalid element at key \"${k}\": expected a Zod schema`);\n        }\n    }\n    const okeys = util.optionalKeys(def.shape);\n    return {\n        ...def,\n        keys,\n        keySet: new Set(keys),\n        numKeys: keys.length,\n        optionalKeys: new Set(okeys),\n    };\n}\nfunction handleCatchall(proms, input, payload, ctx, def, inst) {\n    const unrecognized = [];\n    // iterate over input keys\n    const keySet = def.keySet;\n    const _catchall = def.catchall._zod;\n    const t = _catchall.def.type;\n    const isOptionalOut = _catchall.optout === \"optional\";\n    for (const key in input) {\n        if (keySet.has(key))\n            continue;\n        if (t === \"never\") {\n            unrecognized.push(key);\n            continue;\n        }\n        const r = _catchall.run({ value: input[key], issues: [] }, ctx);\n        if (r instanceof Promise) {\n            proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, isOptionalOut)));\n        }\n        else {\n            handlePropertyResult(r, payload, key, input, isOptionalOut);\n        }\n    }\n    if (unrecognized.length) {\n        payload.issues.push({\n            code: \"unrecognized_keys\",\n            keys: unrecognized,\n            input,\n            inst,\n        });\n    }\n    if (!proms.length)\n        return payload;\n    return Promise.all(proms).then(() => {\n        return payload;\n    });\n}\nexport const $ZodObject = /*@__PURE__*/ core.$constructor(\"$ZodObject\", (inst, def) => {\n    // requires cast because technically $ZodObject doesn't extend\n    $ZodType.init(inst, def);\n    // const sh = def.shape;\n    const desc = Object.getOwnPropertyDescriptor(def, \"shape\");\n    if (!desc?.get) {\n        const sh = def.shape;\n        Object.defineProperty(def, \"shape\", {\n            get: () => {\n                const newSh = { ...sh };\n                Object.defineProperty(def, \"shape\", {\n                    value: newSh,\n                });\n                return newSh;\n            },\n        });\n    }\n    const _normalized = util.cached(() => normalizeDef(def));\n    util.defineLazy(inst._zod, \"propValues\", () => {\n        const shape = def.shape;\n        const propValues = {};\n        for (const key in shape) {\n            const field = shape[key]._zod;\n            if (field.values) {\n                propValues[key] ?? (propValues[key] = new Set());\n                for (const v of field.values)\n                    propValues[key].add(v);\n            }\n        }\n        return propValues;\n    });\n    const isObject = util.isObject;\n    const catchall = def.catchall;\n    let value;\n    inst._zod.parse = (payload, ctx) => {\n        value ?? (value = _normalized.value);\n        const input = payload.value;\n        if (!isObject(input)) {\n            payload.issues.push({\n                expected: \"object\",\n                code: \"invalid_type\",\n                input,\n                inst,\n            });\n            return payload;\n        }\n        payload.value = {};\n        const proms = [];\n        const shape = value.shape;\n        for (const key of value.keys) {\n            const el = shape[key];\n            const isOptionalOut = el._zod.optout === \"optional\";\n            const r = el._zod.run({ value: input[key], issues: [] }, ctx);\n            if (r instanceof Promise) {\n                proms.push(r.then((r) => handlePropertyResult(r, payload, key, input, isOptionalOut)));\n            }\n            else {\n                handlePropertyResult(r, payload, key, input, isOptionalOut);\n            }\n        }\n        if (!catchall) {\n            return proms.length ? Promise.all(proms).then(() => payload) : payload;\n        }\n        return handleCatchall(proms, input, payload, ctx, _normalized.value, inst);\n    };\n});\nexport const $ZodObjectJIT = /*@__PURE__*/ core.$constructor(\"$ZodObjectJIT\", (inst, def) => {\n    // requires cast because technically $ZodObject doesn't extend\n    $ZodObject.init(inst, def);\n    const superParse = inst._zod.parse;\n    const _normalized = util.cached(() => normalizeDef(def));\n    const generateFastpass = (shape) => {\n        const doc = new Doc([\"shape\", \"payload\", \"ctx\"]);\n        const normalized = _normalized.value;\n        const parseStr = (key) => {\n            const k = util.esc(key);\n            return `shape[${k}]._zod.run({ value: input[${k}], issues: [] }, ctx)`;\n        };\n        doc.write(`const input = payload.value;`);\n        const ids = Object.create(null);\n        let counter = 0;\n        for (const key of normalized.keys) {\n            ids[key] = `key_${counter++}`;\n        }\n        // A: preserve key order {\n        doc.write(`const newResult = {};`);\n        for (const key of normalized.keys) {\n            const id = ids[key];\n            const k = util.esc(key);\n            const schema = shape[key];\n            const isOptionalOut = schema?._zod?.optout === \"optional\";\n            doc.write(`const ${id} = ${parseStr(key)};`);\n            if (isOptionalOut) {\n                // For optional-out schemas, ignore errors on absent keys\n                doc.write(`\n        if (${id}.issues.length) {\n          if (${k} in input) {\n            payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n              ...iss,\n              path: iss.path ? [${k}, ...iss.path] : [${k}]\n            })));\n          }\n        }\n        \n        if (${id}.value === undefined) {\n          if (${k} in input) {\n            newResult[${k}] = undefined;\n          }\n        } else {\n          newResult[${k}] = ${id}.value;\n        }\n        \n      `);\n            }\n            else {\n                doc.write(`\n        if (${id}.issues.length) {\n          payload.issues = payload.issues.concat(${id}.issues.map(iss => ({\n            ...iss,\n            path: iss.path ? [${k}, ...iss.path] : [${k}]\n          })));\n        }\n        \n        if (${id}.value === undefined) {\n          if (${k} in input) {\n            newResult[${k}] = undefined;\n          }\n        } else {\n          newResult[${k}] = ${id}.value;\n        }\n        \n      `);\n            }\n        }\n        doc.write(`payload.value = newResult;`);\n        doc.write(`return payload;`);\n        const fn = doc.compile();\n        return (payload, ctx) => fn(shape, payload, ctx);\n    };\n    let fastpass;\n    const isObject = util.isObject;\n    const jit = !core.globalConfig.jitless;\n    const allowsEval = util.allowsEval;\n    const fastEnabled = jit && allowsEval.value; // && !def.catchall;\n    const catchall = def.catchall;\n    let value;\n    inst._zod.parse = (payload, ctx) => {\n        value ?? (value = _normalized.value);\n        const input = payload.value;\n        if (!isObject(input)) {\n            payload.issues.push({\n                expected: \"object\",\n                code: \"invalid_type\",\n                input,\n                inst,\n            });\n            return payload;\n        }\n        if (jit && fastEnabled && ctx?.async === false && ctx.jitless !== true) {\n            // always synchronous\n            if (!fastpass)\n                fastpass = generateFastpass(def.shape);\n            payload = fastpass(payload, ctx);\n            if (!catchall)\n                return payload;\n            return handleCatchall([], input, payload, ctx, value, inst);\n        }\n        return superParse(payload, ctx);\n    };\n});\nfunction handleUnionResults(results, final, inst, ctx) {\n    for (const result of results) {\n        if (result.issues.length === 0) {\n            final.value = result.value;\n            return final;\n        }\n    }\n    const nonaborted = results.filter((r) => !util.aborted(r));\n    if (nonaborted.length === 1) {\n        final.value = nonaborted[0].value;\n        return nonaborted[0];\n    }\n    final.issues.push({\n        code: \"invalid_union\",\n        input: final.value,\n        inst,\n        errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n    });\n    return final;\n}\nexport const $ZodUnion = /*@__PURE__*/ core.$constructor(\"$ZodUnion\", (inst, def) => {\n    $ZodType.init(inst, def);\n    util.defineLazy(inst._zod, \"optin\", () => def.options.some((o) => o._zod.optin === \"optional\") ? \"optional\" : undefined);\n    util.defineLazy(inst._zod, \"optout\", () => def.options.some((o) => o._zod.optout === \"optional\") ? \"optional\" : undefined);\n    util.defineLazy(inst._zod, \"values\", () => {\n        if (def.options.every((o) => o._zod.values)) {\n            return new Set(def.options.flatMap((option) => Array.from(option._zod.values)));\n        }\n        return undefined;\n    });\n    util.defineLazy(inst._zod, \"pattern\", () => {\n        if (def.options.every((o) => o._zod.pattern)) {\n            const patterns = def.options.map((o) => o._zod.pattern);\n            return new RegExp(`^(${patterns.map((p) => util.cleanRegex(p.source)).join(\"|\")})$`);\n        }\n        return undefined;\n    });\n    const single = def.options.length === 1;\n    const first = def.options[0]._zod.run;\n    inst._zod.parse = (payload, ctx) => {\n        if (single) {\n            return first(payload, ctx);\n        }\n        let async = false;\n        const results = [];\n        for (const option of def.options) {\n            const result = option._zod.run({\n                value: payload.value,\n                issues: [],\n            }, ctx);\n            if (result instanceof Promise) {\n                results.push(result);\n                async = true;\n            }\n            else {\n                if (result.issues.length === 0)\n                    return result;\n                results.push(result);\n            }\n        }\n        if (!async)\n            return handleUnionResults(results, payload, inst, ctx);\n        return Promise.all(results).then((results) => {\n            return handleUnionResults(results, payload, inst, ctx);\n        });\n    };\n});\nfunction handleExclusiveUnionResults(results, final, inst, ctx) {\n    const successes = results.filter((r) => r.issues.length === 0);\n    if (successes.length === 1) {\n        final.value = successes[0].value;\n        return final;\n    }\n    if (successes.length === 0) {\n        // No matches - same as regular union\n        final.issues.push({\n            code: \"invalid_union\",\n            input: final.value,\n            inst,\n            errors: results.map((result) => result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config()))),\n        });\n    }\n    else {\n        // Multiple matches - exclusive union failure\n        final.issues.push({\n            code: \"invalid_union\",\n            input: final.value,\n            inst,\n            errors: [],\n            inclusive: false,\n        });\n    }\n    return final;\n}\nexport const $ZodXor = /*@__PURE__*/ core.$constructor(\"$ZodXor\", (inst, def) => {\n    $ZodUnion.init(inst, def);\n    def.inclusive = false;\n    const single = def.options.length === 1;\n    const first = def.options[0]._zod.run;\n    inst._zod.parse = (payload, ctx) => {\n        if (single) {\n            return first(payload, ctx);\n        }\n        let async = false;\n        const results = [];\n        for (const option of def.options) {\n            const result = option._zod.run({\n                value: payload.value,\n                issues: [],\n            }, ctx);\n            if (result instanceof Promise) {\n                results.push(result);\n                async = true;\n            }\n            else {\n                results.push(result);\n            }\n        }\n        if (!async)\n            return handleExclusiveUnionResults(results, payload, inst, ctx);\n        return Promise.all(results).then((results) => {\n            return handleExclusiveUnionResults(results, payload, inst, ctx);\n        });\n    };\n});\nexport const $ZodDiscriminatedUnion = \n/*@__PURE__*/\ncore.$constructor(\"$ZodDiscriminatedUnion\", (inst, def) => {\n    def.inclusive = false;\n    $ZodUnion.init(inst, def);\n    const _super = inst._zod.parse;\n    util.defineLazy(inst._zod, \"propValues\", () => {\n        const propValues = {};\n        for (const option of def.options) {\n            const pv = option._zod.propValues;\n            if (!pv || Object.keys(pv).length === 0)\n                throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(option)}\"`);\n            for (const [k, v] of Object.entries(pv)) {\n                if (!propValues[k])\n                    propValues[k] = new Set();\n                for (const val of v) {\n                    propValues[k].add(val);\n                }\n            }\n        }\n        return propValues;\n    });\n    const disc = util.cached(() => {\n        const opts = def.options;\n        const map = new Map();\n        for (const o of opts) {\n            const values = o._zod.propValues?.[def.discriminator];\n            if (!values || values.size === 0)\n                throw new Error(`Invalid discriminated union option at index \"${def.options.indexOf(o)}\"`);\n            for (const v of values) {\n                if (map.has(v)) {\n                    throw new Error(`Duplicate discriminator value \"${String(v)}\"`);\n                }\n                map.set(v, o);\n            }\n        }\n        return map;\n    });\n    inst._zod.parse = (payload, ctx) => {\n        const input = payload.value;\n        if (!util.isObject(input)) {\n            payload.issues.push({\n                code: \"invalid_type\",\n                expected: \"object\",\n                input,\n                inst,\n            });\n            return payload;\n        }\n        const opt = disc.value.get(input?.[def.discriminator]);\n        if (opt) {\n            return opt._zod.run(payload, ctx);\n        }\n        if (def.unionFallback) {\n            return _super(payload, ctx);\n        }\n        // no matching discriminator\n        payload.issues.push({\n            code: \"invalid_union\",\n            errors: [],\n            note: \"No matching discriminator\",\n            discriminator: def.discriminator,\n            input,\n            path: [def.discriminator],\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodIntersection = /*@__PURE__*/ core.$constructor(\"$ZodIntersection\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, ctx) => {\n        const input = payload.value;\n        const left = def.left._zod.run({ value: input, issues: [] }, ctx);\n        const right = def.right._zod.run({ value: input, issues: [] }, ctx);\n        const async = left instanceof Promise || right instanceof Promise;\n        if (async) {\n            return Promise.all([left, right]).then(([left, right]) => {\n                return handleIntersectionResults(payload, left, right);\n            });\n        }\n        return handleIntersectionResults(payload, left, right);\n    };\n});\nfunction mergeValues(a, b) {\n    // const aType = parse.t(a);\n    // const bType = parse.t(b);\n    if (a === b) {\n        return { valid: true, data: a };\n    }\n    if (a instanceof Date && b instanceof Date && +a === +b) {\n        return { valid: true, data: a };\n    }\n    if (util.isPlainObject(a) && util.isPlainObject(b)) {\n        const bKeys = Object.keys(b);\n        const sharedKeys = Object.keys(a).filter((key) => bKeys.indexOf(key) !== -1);\n        const newObj = { ...a, ...b };\n        for (const key of sharedKeys) {\n            const sharedValue = mergeValues(a[key], b[key]);\n            if (!sharedValue.valid) {\n                return {\n                    valid: false,\n                    mergeErrorPath: [key, ...sharedValue.mergeErrorPath],\n                };\n            }\n            newObj[key] = sharedValue.data;\n        }\n        return { valid: true, data: newObj };\n    }\n    if (Array.isArray(a) && Array.isArray(b)) {\n        if (a.length !== b.length) {\n            return { valid: false, mergeErrorPath: [] };\n        }\n        const newArray = [];\n        for (let index = 0; index < a.length; index++) {\n            const itemA = a[index];\n            const itemB = b[index];\n            const sharedValue = mergeValues(itemA, itemB);\n            if (!sharedValue.valid) {\n                return {\n                    valid: false,\n                    mergeErrorPath: [index, ...sharedValue.mergeErrorPath],\n                };\n            }\n            newArray.push(sharedValue.data);\n        }\n        return { valid: true, data: newArray };\n    }\n    return { valid: false, mergeErrorPath: [] };\n}\nfunction handleIntersectionResults(result, left, right) {\n    // Track which side(s) report each key as unrecognized\n    const unrecKeys = new Map();\n    let unrecIssue;\n    for (const iss of left.issues) {\n        if (iss.code === \"unrecognized_keys\") {\n            unrecIssue ?? (unrecIssue = iss);\n            for (const k of iss.keys) {\n                if (!unrecKeys.has(k))\n                    unrecKeys.set(k, {});\n                unrecKeys.get(k).l = true;\n            }\n        }\n        else {\n            result.issues.push(iss);\n        }\n    }\n    for (const iss of right.issues) {\n        if (iss.code === \"unrecognized_keys\") {\n            for (const k of iss.keys) {\n                if (!unrecKeys.has(k))\n                    unrecKeys.set(k, {});\n                unrecKeys.get(k).r = true;\n            }\n        }\n        else {\n            result.issues.push(iss);\n        }\n    }\n    // Report only keys unrecognized by BOTH sides\n    const bothKeys = [...unrecKeys].filter(([, f]) => f.l && f.r).map(([k]) => k);\n    if (bothKeys.length && unrecIssue) {\n        result.issues.push({ ...unrecIssue, keys: bothKeys });\n    }\n    if (util.aborted(result))\n        return result;\n    const merged = mergeValues(left.value, right.value);\n    if (!merged.valid) {\n        throw new Error(`Unmergable intersection. Error path: ` + `${JSON.stringify(merged.mergeErrorPath)}`);\n    }\n    result.value = merged.data;\n    return result;\n}\nexport const $ZodTuple = /*@__PURE__*/ core.$constructor(\"$ZodTuple\", (inst, def) => {\n    $ZodType.init(inst, def);\n    const items = def.items;\n    inst._zod.parse = (payload, ctx) => {\n        const input = payload.value;\n        if (!Array.isArray(input)) {\n            payload.issues.push({\n                input,\n                inst,\n                expected: \"tuple\",\n                code: \"invalid_type\",\n            });\n            return payload;\n        }\n        payload.value = [];\n        const proms = [];\n        const reversedIndex = [...items].reverse().findIndex((item) => item._zod.optin !== \"optional\");\n        const optStart = reversedIndex === -1 ? 0 : items.length - reversedIndex;\n        if (!def.rest) {\n            const tooBig = input.length > items.length;\n            const tooSmall = input.length < optStart - 1;\n            if (tooBig || tooSmall) {\n                payload.issues.push({\n                    ...(tooBig\n                        ? { code: \"too_big\", maximum: items.length, inclusive: true }\n                        : { code: \"too_small\", minimum: items.length }),\n                    input,\n                    inst,\n                    origin: \"array\",\n                });\n                return payload;\n            }\n        }\n        let i = -1;\n        for (const item of items) {\n            i++;\n            if (i >= input.length)\n                if (i >= optStart)\n                    continue;\n            const result = item._zod.run({\n                value: input[i],\n                issues: [],\n            }, ctx);\n            if (result instanceof Promise) {\n                proms.push(result.then((result) => handleTupleResult(result, payload, i)));\n            }\n            else {\n                handleTupleResult(result, payload, i);\n            }\n        }\n        if (def.rest) {\n            const rest = input.slice(items.length);\n            for (const el of rest) {\n                i++;\n                const result = def.rest._zod.run({\n                    value: el,\n                    issues: [],\n                }, ctx);\n                if (result instanceof Promise) {\n                    proms.push(result.then((result) => handleTupleResult(result, payload, i)));\n                }\n                else {\n                    handleTupleResult(result, payload, i);\n                }\n            }\n        }\n        if (proms.length)\n            return Promise.all(proms).then(() => payload);\n        return payload;\n    };\n});\nfunction handleTupleResult(result, final, index) {\n    if (result.issues.length) {\n        final.issues.push(...util.prefixIssues(index, result.issues));\n    }\n    final.value[index] = result.value;\n}\nexport const $ZodRecord = /*@__PURE__*/ core.$constructor(\"$ZodRecord\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, ctx) => {\n        const input = payload.value;\n        if (!util.isPlainObject(input)) {\n            payload.issues.push({\n                expected: \"record\",\n                code: \"invalid_type\",\n                input,\n                inst,\n            });\n            return payload;\n        }\n        const proms = [];\n        const values = def.keyType._zod.values;\n        if (values) {\n            payload.value = {};\n            const recordKeys = new Set();\n            for (const key of values) {\n                if (typeof key === \"string\" || typeof key === \"number\" || typeof key === \"symbol\") {\n                    recordKeys.add(typeof key === \"number\" ? key.toString() : key);\n                    const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n                    if (result instanceof Promise) {\n                        proms.push(result.then((result) => {\n                            if (result.issues.length) {\n                                payload.issues.push(...util.prefixIssues(key, result.issues));\n                            }\n                            payload.value[key] = result.value;\n                        }));\n                    }\n                    else {\n                        if (result.issues.length) {\n                            payload.issues.push(...util.prefixIssues(key, result.issues));\n                        }\n                        payload.value[key] = result.value;\n                    }\n                }\n            }\n            let unrecognized;\n            for (const key in input) {\n                if (!recordKeys.has(key)) {\n                    unrecognized = unrecognized ?? [];\n                    unrecognized.push(key);\n                }\n            }\n            if (unrecognized && unrecognized.length > 0) {\n                payload.issues.push({\n                    code: \"unrecognized_keys\",\n                    input,\n                    inst,\n                    keys: unrecognized,\n                });\n            }\n        }\n        else {\n            payload.value = {};\n            for (const key of Reflect.ownKeys(input)) {\n                if (key === \"__proto__\")\n                    continue;\n                let keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n                if (keyResult instanceof Promise) {\n                    throw new Error(\"Async schemas not supported in object keys currently\");\n                }\n                // Numeric string fallback: if key is a numeric string and failed, retry with Number(key)\n                // This handles z.number(), z.literal([1, 2, 3]), and unions containing numeric literals\n                const checkNumericKey = typeof key === \"string\" && regexes.number.test(key) && keyResult.issues.length;\n                if (checkNumericKey) {\n                    const retryResult = def.keyType._zod.run({ value: Number(key), issues: [] }, ctx);\n                    if (retryResult instanceof Promise) {\n                        throw new Error(\"Async schemas not supported in object keys currently\");\n                    }\n                    if (retryResult.issues.length === 0) {\n                        keyResult = retryResult;\n                    }\n                }\n                if (keyResult.issues.length) {\n                    if (def.mode === \"loose\") {\n                        // Pass through unchanged\n                        payload.value[key] = input[key];\n                    }\n                    else {\n                        // Default \"strict\" behavior: error on invalid key\n                        payload.issues.push({\n                            code: \"invalid_key\",\n                            origin: \"record\",\n                            issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n                            input: key,\n                            path: [key],\n                            inst,\n                        });\n                    }\n                    continue;\n                }\n                const result = def.valueType._zod.run({ value: input[key], issues: [] }, ctx);\n                if (result instanceof Promise) {\n                    proms.push(result.then((result) => {\n                        if (result.issues.length) {\n                            payload.issues.push(...util.prefixIssues(key, result.issues));\n                        }\n                        payload.value[keyResult.value] = result.value;\n                    }));\n                }\n                else {\n                    if (result.issues.length) {\n                        payload.issues.push(...util.prefixIssues(key, result.issues));\n                    }\n                    payload.value[keyResult.value] = result.value;\n                }\n            }\n        }\n        if (proms.length) {\n            return Promise.all(proms).then(() => payload);\n        }\n        return payload;\n    };\n});\nexport const $ZodMap = /*@__PURE__*/ core.$constructor(\"$ZodMap\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, ctx) => {\n        const input = payload.value;\n        if (!(input instanceof Map)) {\n            payload.issues.push({\n                expected: \"map\",\n                code: \"invalid_type\",\n                input,\n                inst,\n            });\n            return payload;\n        }\n        const proms = [];\n        payload.value = new Map();\n        for (const [key, value] of input) {\n            const keyResult = def.keyType._zod.run({ value: key, issues: [] }, ctx);\n            const valueResult = def.valueType._zod.run({ value: value, issues: [] }, ctx);\n            if (keyResult instanceof Promise || valueResult instanceof Promise) {\n                proms.push(Promise.all([keyResult, valueResult]).then(([keyResult, valueResult]) => {\n                    handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n                }));\n            }\n            else {\n                handleMapResult(keyResult, valueResult, payload, key, input, inst, ctx);\n            }\n        }\n        if (proms.length)\n            return Promise.all(proms).then(() => payload);\n        return payload;\n    };\n});\nfunction handleMapResult(keyResult, valueResult, final, key, input, inst, ctx) {\n    if (keyResult.issues.length) {\n        if (util.propertyKeyTypes.has(typeof key)) {\n            final.issues.push(...util.prefixIssues(key, keyResult.issues));\n        }\n        else {\n            final.issues.push({\n                code: \"invalid_key\",\n                origin: \"map\",\n                input,\n                inst,\n                issues: keyResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n            });\n        }\n    }\n    if (valueResult.issues.length) {\n        if (util.propertyKeyTypes.has(typeof key)) {\n            final.issues.push(...util.prefixIssues(key, valueResult.issues));\n        }\n        else {\n            final.issues.push({\n                origin: \"map\",\n                code: \"invalid_element\",\n                input,\n                inst,\n                key: key,\n                issues: valueResult.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n            });\n        }\n    }\n    final.value.set(keyResult.value, valueResult.value);\n}\nexport const $ZodSet = /*@__PURE__*/ core.$constructor(\"$ZodSet\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, ctx) => {\n        const input = payload.value;\n        if (!(input instanceof Set)) {\n            payload.issues.push({\n                input,\n                inst,\n                expected: \"set\",\n                code: \"invalid_type\",\n            });\n            return payload;\n        }\n        const proms = [];\n        payload.value = new Set();\n        for (const item of input) {\n            const result = def.valueType._zod.run({ value: item, issues: [] }, ctx);\n            if (result instanceof Promise) {\n                proms.push(result.then((result) => handleSetResult(result, payload)));\n            }\n            else\n                handleSetResult(result, payload);\n        }\n        if (proms.length)\n            return Promise.all(proms).then(() => payload);\n        return payload;\n    };\n});\nfunction handleSetResult(result, final) {\n    if (result.issues.length) {\n        final.issues.push(...result.issues);\n    }\n    final.value.add(result.value);\n}\nexport const $ZodEnum = /*@__PURE__*/ core.$constructor(\"$ZodEnum\", (inst, def) => {\n    $ZodType.init(inst, def);\n    const values = util.getEnumValues(def.entries);\n    const valuesSet = new Set(values);\n    inst._zod.values = valuesSet;\n    inst._zod.pattern = new RegExp(`^(${values\n        .filter((k) => util.propertyKeyTypes.has(typeof k))\n        .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o.toString()))\n        .join(\"|\")})$`);\n    inst._zod.parse = (payload, _ctx) => {\n        const input = payload.value;\n        if (valuesSet.has(input)) {\n            return payload;\n        }\n        payload.issues.push({\n            code: \"invalid_value\",\n            values,\n            input,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodLiteral = /*@__PURE__*/ core.$constructor(\"$ZodLiteral\", (inst, def) => {\n    $ZodType.init(inst, def);\n    if (def.values.length === 0) {\n        throw new Error(\"Cannot create literal schema with no valid values\");\n    }\n    const values = new Set(def.values);\n    inst._zod.values = values;\n    inst._zod.pattern = new RegExp(`^(${def.values\n        .map((o) => (typeof o === \"string\" ? util.escapeRegex(o) : o ? util.escapeRegex(o.toString()) : String(o)))\n        .join(\"|\")})$`);\n    inst._zod.parse = (payload, _ctx) => {\n        const input = payload.value;\n        if (values.has(input)) {\n            return payload;\n        }\n        payload.issues.push({\n            code: \"invalid_value\",\n            values: def.values,\n            input,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodFile = /*@__PURE__*/ core.$constructor(\"$ZodFile\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, _ctx) => {\n        const input = payload.value;\n        // @ts-ignore\n        if (input instanceof File)\n            return payload;\n        payload.issues.push({\n            expected: \"file\",\n            code: \"invalid_type\",\n            input,\n            inst,\n        });\n        return payload;\n    };\n});\nexport const $ZodTransform = /*@__PURE__*/ core.$constructor(\"$ZodTransform\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, ctx) => {\n        if (ctx.direction === \"backward\") {\n            throw new core.$ZodEncodeError(inst.constructor.name);\n        }\n        const _out = def.transform(payload.value, payload);\n        if (ctx.async) {\n            const output = _out instanceof Promise ? _out : Promise.resolve(_out);\n            return output.then((output) => {\n                payload.value = output;\n                return payload;\n            });\n        }\n        if (_out instanceof Promise) {\n            throw new core.$ZodAsyncError();\n        }\n        payload.value = _out;\n        return payload;\n    };\n});\nfunction handleOptionalResult(result, input) {\n    if (result.issues.length && input === undefined) {\n        return { issues: [], value: undefined };\n    }\n    return result;\n}\nexport const $ZodOptional = /*@__PURE__*/ core.$constructor(\"$ZodOptional\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.optin = \"optional\";\n    inst._zod.optout = \"optional\";\n    util.defineLazy(inst._zod, \"values\", () => {\n        return def.innerType._zod.values ? new Set([...def.innerType._zod.values, undefined]) : undefined;\n    });\n    util.defineLazy(inst._zod, \"pattern\", () => {\n        const pattern = def.innerType._zod.pattern;\n        return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)})?$`) : undefined;\n    });\n    inst._zod.parse = (payload, ctx) => {\n        if (def.innerType._zod.optin === \"optional\") {\n            const result = def.innerType._zod.run(payload, ctx);\n            if (result instanceof Promise)\n                return result.then((r) => handleOptionalResult(r, payload.value));\n            return handleOptionalResult(result, payload.value);\n        }\n        if (payload.value === undefined) {\n            return payload;\n        }\n        return def.innerType._zod.run(payload, ctx);\n    };\n});\nexport const $ZodExactOptional = /*@__PURE__*/ core.$constructor(\"$ZodExactOptional\", (inst, def) => {\n    // Call parent init - inherits optin/optout = \"optional\"\n    $ZodOptional.init(inst, def);\n    // Override values/pattern to NOT add undefined\n    util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n    util.defineLazy(inst._zod, \"pattern\", () => def.innerType._zod.pattern);\n    // Override parse to just delegate (no undefined handling)\n    inst._zod.parse = (payload, ctx) => {\n        return def.innerType._zod.run(payload, ctx);\n    };\n});\nexport const $ZodNullable = /*@__PURE__*/ core.$constructor(\"$ZodNullable\", (inst, def) => {\n    $ZodType.init(inst, def);\n    util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n    util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n    util.defineLazy(inst._zod, \"pattern\", () => {\n        const pattern = def.innerType._zod.pattern;\n        return pattern ? new RegExp(`^(${util.cleanRegex(pattern.source)}|null)$`) : undefined;\n    });\n    util.defineLazy(inst._zod, \"values\", () => {\n        return def.innerType._zod.values ? new Set([...def.innerType._zod.values, null]) : undefined;\n    });\n    inst._zod.parse = (payload, ctx) => {\n        // Forward direction (decode): allow null to pass through\n        if (payload.value === null)\n            return payload;\n        return def.innerType._zod.run(payload, ctx);\n    };\n});\nexport const $ZodDefault = /*@__PURE__*/ core.$constructor(\"$ZodDefault\", (inst, def) => {\n    $ZodType.init(inst, def);\n    // inst._zod.qin = \"true\";\n    inst._zod.optin = \"optional\";\n    util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n    inst._zod.parse = (payload, ctx) => {\n        if (ctx.direction === \"backward\") {\n            return def.innerType._zod.run(payload, ctx);\n        }\n        // Forward direction (decode): apply defaults for undefined input\n        if (payload.value === undefined) {\n            payload.value = def.defaultValue;\n            /**\n             * $ZodDefault returns the default value immediately in forward direction.\n             * It doesn't pass the default value into the validator (\"prefault\"). There's no reason to pass the default value through validation. The validity of the default is enforced by TypeScript statically. Otherwise, it's the responsibility of the user to ensure the default is valid. In the case of pipes with divergent in/out types, you can specify the default on the `in` schema of your ZodPipe to set a \"prefault\" for the pipe.   */\n            return payload;\n        }\n        // Forward direction: continue with default handling\n        const result = def.innerType._zod.run(payload, ctx);\n        if (result instanceof Promise) {\n            return result.then((result) => handleDefaultResult(result, def));\n        }\n        return handleDefaultResult(result, def);\n    };\n});\nfunction handleDefaultResult(payload, def) {\n    if (payload.value === undefined) {\n        payload.value = def.defaultValue;\n    }\n    return payload;\n}\nexport const $ZodPrefault = /*@__PURE__*/ core.$constructor(\"$ZodPrefault\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.optin = \"optional\";\n    util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n    inst._zod.parse = (payload, ctx) => {\n        if (ctx.direction === \"backward\") {\n            return def.innerType._zod.run(payload, ctx);\n        }\n        // Forward direction (decode): apply prefault for undefined input\n        if (payload.value === undefined) {\n            payload.value = def.defaultValue;\n        }\n        return def.innerType._zod.run(payload, ctx);\n    };\n});\nexport const $ZodNonOptional = /*@__PURE__*/ core.$constructor(\"$ZodNonOptional\", (inst, def) => {\n    $ZodType.init(inst, def);\n    util.defineLazy(inst._zod, \"values\", () => {\n        const v = def.innerType._zod.values;\n        return v ? new Set([...v].filter((x) => x !== undefined)) : undefined;\n    });\n    inst._zod.parse = (payload, ctx) => {\n        const result = def.innerType._zod.run(payload, ctx);\n        if (result instanceof Promise) {\n            return result.then((result) => handleNonOptionalResult(result, inst));\n        }\n        return handleNonOptionalResult(result, inst);\n    };\n});\nfunction handleNonOptionalResult(payload, inst) {\n    if (!payload.issues.length && payload.value === undefined) {\n        payload.issues.push({\n            code: \"invalid_type\",\n            expected: \"nonoptional\",\n            input: payload.value,\n            inst,\n        });\n    }\n    return payload;\n}\nexport const $ZodSuccess = /*@__PURE__*/ core.$constructor(\"$ZodSuccess\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, ctx) => {\n        if (ctx.direction === \"backward\") {\n            throw new core.$ZodEncodeError(\"ZodSuccess\");\n        }\n        const result = def.innerType._zod.run(payload, ctx);\n        if (result instanceof Promise) {\n            return result.then((result) => {\n                payload.value = result.issues.length === 0;\n                return payload;\n            });\n        }\n        payload.value = result.issues.length === 0;\n        return payload;\n    };\n});\nexport const $ZodCatch = /*@__PURE__*/ core.$constructor(\"$ZodCatch\", (inst, def) => {\n    $ZodType.init(inst, def);\n    util.defineLazy(inst._zod, \"optin\", () => def.innerType._zod.optin);\n    util.defineLazy(inst._zod, \"optout\", () => def.innerType._zod.optout);\n    util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n    inst._zod.parse = (payload, ctx) => {\n        if (ctx.direction === \"backward\") {\n            return def.innerType._zod.run(payload, ctx);\n        }\n        // Forward direction (decode): apply catch logic\n        const result = def.innerType._zod.run(payload, ctx);\n        if (result instanceof Promise) {\n            return result.then((result) => {\n                payload.value = result.value;\n                if (result.issues.length) {\n                    payload.value = def.catchValue({\n                        ...payload,\n                        error: {\n                            issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n                        },\n                        input: payload.value,\n                    });\n                    payload.issues = [];\n                }\n                return payload;\n            });\n        }\n        payload.value = result.value;\n        if (result.issues.length) {\n            payload.value = def.catchValue({\n                ...payload,\n                error: {\n                    issues: result.issues.map((iss) => util.finalizeIssue(iss, ctx, core.config())),\n                },\n                input: payload.value,\n            });\n            payload.issues = [];\n        }\n        return payload;\n    };\n});\nexport const $ZodNaN = /*@__PURE__*/ core.$constructor(\"$ZodNaN\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, _ctx) => {\n        if (typeof payload.value !== \"number\" || !Number.isNaN(payload.value)) {\n            payload.issues.push({\n                input: payload.value,\n                inst,\n                expected: \"nan\",\n                code: \"invalid_type\",\n            });\n            return payload;\n        }\n        return payload;\n    };\n});\nexport const $ZodPipe = /*@__PURE__*/ core.$constructor(\"$ZodPipe\", (inst, def) => {\n    $ZodType.init(inst, def);\n    util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n    util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n    util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n    util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n    inst._zod.parse = (payload, ctx) => {\n        if (ctx.direction === \"backward\") {\n            const right = def.out._zod.run(payload, ctx);\n            if (right instanceof Promise) {\n                return right.then((right) => handlePipeResult(right, def.in, ctx));\n            }\n            return handlePipeResult(right, def.in, ctx);\n        }\n        const left = def.in._zod.run(payload, ctx);\n        if (left instanceof Promise) {\n            return left.then((left) => handlePipeResult(left, def.out, ctx));\n        }\n        return handlePipeResult(left, def.out, ctx);\n    };\n});\nfunction handlePipeResult(left, next, ctx) {\n    if (left.issues.length) {\n        // prevent further checks\n        left.aborted = true;\n        return left;\n    }\n    return next._zod.run({ value: left.value, issues: left.issues }, ctx);\n}\nexport const $ZodCodec = /*@__PURE__*/ core.$constructor(\"$ZodCodec\", (inst, def) => {\n    $ZodType.init(inst, def);\n    util.defineLazy(inst._zod, \"values\", () => def.in._zod.values);\n    util.defineLazy(inst._zod, \"optin\", () => def.in._zod.optin);\n    util.defineLazy(inst._zod, \"optout\", () => def.out._zod.optout);\n    util.defineLazy(inst._zod, \"propValues\", () => def.in._zod.propValues);\n    inst._zod.parse = (payload, ctx) => {\n        const direction = ctx.direction || \"forward\";\n        if (direction === \"forward\") {\n            const left = def.in._zod.run(payload, ctx);\n            if (left instanceof Promise) {\n                return left.then((left) => handleCodecAResult(left, def, ctx));\n            }\n            return handleCodecAResult(left, def, ctx);\n        }\n        else {\n            const right = def.out._zod.run(payload, ctx);\n            if (right instanceof Promise) {\n                return right.then((right) => handleCodecAResult(right, def, ctx));\n            }\n            return handleCodecAResult(right, def, ctx);\n        }\n    };\n});\nfunction handleCodecAResult(result, def, ctx) {\n    if (result.issues.length) {\n        // prevent further checks\n        result.aborted = true;\n        return result;\n    }\n    const direction = ctx.direction || \"forward\";\n    if (direction === \"forward\") {\n        const transformed = def.transform(result.value, result);\n        if (transformed instanceof Promise) {\n            return transformed.then((value) => handleCodecTxResult(result, value, def.out, ctx));\n        }\n        return handleCodecTxResult(result, transformed, def.out, ctx);\n    }\n    else {\n        const transformed = def.reverseTransform(result.value, result);\n        if (transformed instanceof Promise) {\n            return transformed.then((value) => handleCodecTxResult(result, value, def.in, ctx));\n        }\n        return handleCodecTxResult(result, transformed, def.in, ctx);\n    }\n}\nfunction handleCodecTxResult(left, value, nextSchema, ctx) {\n    // Check if transform added any issues\n    if (left.issues.length) {\n        left.aborted = true;\n        return left;\n    }\n    return nextSchema._zod.run({ value, issues: left.issues }, ctx);\n}\nexport const $ZodReadonly = /*@__PURE__*/ core.$constructor(\"$ZodReadonly\", (inst, def) => {\n    $ZodType.init(inst, def);\n    util.defineLazy(inst._zod, \"propValues\", () => def.innerType._zod.propValues);\n    util.defineLazy(inst._zod, \"values\", () => def.innerType._zod.values);\n    util.defineLazy(inst._zod, \"optin\", () => def.innerType?._zod?.optin);\n    util.defineLazy(inst._zod, \"optout\", () => def.innerType?._zod?.optout);\n    inst._zod.parse = (payload, ctx) => {\n        if (ctx.direction === \"backward\") {\n            return def.innerType._zod.run(payload, ctx);\n        }\n        const result = def.innerType._zod.run(payload, ctx);\n        if (result instanceof Promise) {\n            return result.then(handleReadonlyResult);\n        }\n        return handleReadonlyResult(result);\n    };\n});\nfunction handleReadonlyResult(payload) {\n    payload.value = Object.freeze(payload.value);\n    return payload;\n}\nexport const $ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"$ZodTemplateLiteral\", (inst, def) => {\n    $ZodType.init(inst, def);\n    const regexParts = [];\n    for (const part of def.parts) {\n        if (typeof part === \"object\" && part !== null) {\n            // is Zod schema\n            if (!part._zod.pattern) {\n                // if (!source)\n                throw new Error(`Invalid template literal part, no pattern found: ${[...part._zod.traits].shift()}`);\n            }\n            const source = part._zod.pattern instanceof RegExp ? part._zod.pattern.source : part._zod.pattern;\n            if (!source)\n                throw new Error(`Invalid template literal part: ${part._zod.traits}`);\n            const start = source.startsWith(\"^\") ? 1 : 0;\n            const end = source.endsWith(\"$\") ? source.length - 1 : source.length;\n            regexParts.push(source.slice(start, end));\n        }\n        else if (part === null || util.primitiveTypes.has(typeof part)) {\n            regexParts.push(util.escapeRegex(`${part}`));\n        }\n        else {\n            throw new Error(`Invalid template literal part: ${part}`);\n        }\n    }\n    inst._zod.pattern = new RegExp(`^${regexParts.join(\"\")}$`);\n    inst._zod.parse = (payload, _ctx) => {\n        if (typeof payload.value !== \"string\") {\n            payload.issues.push({\n                input: payload.value,\n                inst,\n                expected: \"string\",\n                code: \"invalid_type\",\n            });\n            return payload;\n        }\n        inst._zod.pattern.lastIndex = 0;\n        if (!inst._zod.pattern.test(payload.value)) {\n            payload.issues.push({\n                input: payload.value,\n                inst,\n                code: \"invalid_format\",\n                format: def.format ?? \"template_literal\",\n                pattern: inst._zod.pattern.source,\n            });\n            return payload;\n        }\n        return payload;\n    };\n});\nexport const $ZodFunction = /*@__PURE__*/ core.$constructor(\"$ZodFunction\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._def = def;\n    inst._zod.def = def;\n    inst.implement = (func) => {\n        if (typeof func !== \"function\") {\n            throw new Error(\"implement() must be called with a function\");\n        }\n        return function (...args) {\n            const parsedArgs = inst._def.input ? parse(inst._def.input, args) : args;\n            const result = Reflect.apply(func, this, parsedArgs);\n            if (inst._def.output) {\n                return parse(inst._def.output, result);\n            }\n            return result;\n        };\n    };\n    inst.implementAsync = (func) => {\n        if (typeof func !== \"function\") {\n            throw new Error(\"implementAsync() must be called with a function\");\n        }\n        return async function (...args) {\n            const parsedArgs = inst._def.input ? await parseAsync(inst._def.input, args) : args;\n            const result = await Reflect.apply(func, this, parsedArgs);\n            if (inst._def.output) {\n                return await parseAsync(inst._def.output, result);\n            }\n            return result;\n        };\n    };\n    inst._zod.parse = (payload, _ctx) => {\n        if (typeof payload.value !== \"function\") {\n            payload.issues.push({\n                code: \"invalid_type\",\n                expected: \"function\",\n                input: payload.value,\n                inst,\n            });\n            return payload;\n        }\n        // Check if output is a promise type to determine if we should use async implementation\n        const hasPromiseOutput = inst._def.output && inst._def.output._zod.def.type === \"promise\";\n        if (hasPromiseOutput) {\n            payload.value = inst.implementAsync(payload.value);\n        }\n        else {\n            payload.value = inst.implement(payload.value);\n        }\n        return payload;\n    };\n    inst.input = (...args) => {\n        const F = inst.constructor;\n        if (Array.isArray(args[0])) {\n            return new F({\n                type: \"function\",\n                input: new $ZodTuple({\n                    type: \"tuple\",\n                    items: args[0],\n                    rest: args[1],\n                }),\n                output: inst._def.output,\n            });\n        }\n        return new F({\n            type: \"function\",\n            input: args[0],\n            output: inst._def.output,\n        });\n    };\n    inst.output = (output) => {\n        const F = inst.constructor;\n        return new F({\n            type: \"function\",\n            input: inst._def.input,\n            output,\n        });\n    };\n    return inst;\n});\nexport const $ZodPromise = /*@__PURE__*/ core.$constructor(\"$ZodPromise\", (inst, def) => {\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, ctx) => {\n        return Promise.resolve(payload.value).then((inner) => def.innerType._zod.run({ value: inner, issues: [] }, ctx));\n    };\n});\nexport const $ZodLazy = /*@__PURE__*/ core.$constructor(\"$ZodLazy\", (inst, def) => {\n    $ZodType.init(inst, def);\n    // let _innerType!: any;\n    // util.defineLazy(def, \"getter\", () => {\n    //   if (!_innerType) {\n    //     _innerType = def.getter();\n    //   }\n    //   return () => _innerType;\n    // });\n    util.defineLazy(inst._zod, \"innerType\", () => def.getter());\n    util.defineLazy(inst._zod, \"pattern\", () => inst._zod.innerType?._zod?.pattern);\n    util.defineLazy(inst._zod, \"propValues\", () => inst._zod.innerType?._zod?.propValues);\n    util.defineLazy(inst._zod, \"optin\", () => inst._zod.innerType?._zod?.optin ?? undefined);\n    util.defineLazy(inst._zod, \"optout\", () => inst._zod.innerType?._zod?.optout ?? undefined);\n    inst._zod.parse = (payload, ctx) => {\n        const inner = inst._zod.innerType;\n        return inner._zod.run(payload, ctx);\n    };\n});\nexport const $ZodCustom = /*@__PURE__*/ core.$constructor(\"$ZodCustom\", (inst, def) => {\n    checks.$ZodCheck.init(inst, def);\n    $ZodType.init(inst, def);\n    inst._zod.parse = (payload, _) => {\n        return payload;\n    };\n    inst._zod.check = (payload) => {\n        const input = payload.value;\n        const r = def.fn(input);\n        if (r instanceof Promise) {\n            return r.then((r) => handleRefineResult(r, payload, input, inst));\n        }\n        handleRefineResult(r, payload, input, inst);\n        return;\n    };\n});\nfunction handleRefineResult(result, payload, input, inst) {\n    if (!result) {\n        const _iss = {\n            code: \"custom\",\n            input,\n            inst, // incorporates params.error into issue reporting\n            path: [...(inst._zod.def.path ?? [])], // incorporates params.error into issue reporting\n            continue: !inst._zod.def.abort,\n            // params: inst._zod.def.params,\n        };\n        if (inst._zod.def.params)\n            _iss.params = inst._zod.def.params;\n        payload.issues.push(util.issue(_iss));\n    }\n}\n", "export { default as ar } from \"./ar.js\";\nexport { default as az } from \"./az.js\";\nexport { default as be } from \"./be.js\";\nexport { default as bg } from \"./bg.js\";\nexport { default as ca } from \"./ca.js\";\nexport { default as cs } from \"./cs.js\";\nexport { default as da } from \"./da.js\";\nexport { default as de } from \"./de.js\";\nexport { default as en } from \"./en.js\";\nexport { default as eo } from \"./eo.js\";\nexport { default as es } from \"./es.js\";\nexport { default as fa } from \"./fa.js\";\nexport { default as fi } from \"./fi.js\";\nexport { default as fr } from \"./fr.js\";\nexport { default as frCA } from \"./fr-CA.js\";\nexport { default as he } from \"./he.js\";\nexport { default as hu } from \"./hu.js\";\nexport { default as hy } from \"./hy.js\";\nexport { default as id } from \"./id.js\";\nexport { default as is } from \"./is.js\";\nexport { default as it } from \"./it.js\";\nexport { default as ja } from \"./ja.js\";\nexport { default as ka } from \"./ka.js\";\nexport { default as kh } from \"./kh.js\";\nexport { default as km } from \"./km.js\";\nexport { default as ko } from \"./ko.js\";\nexport { default as lt } from \"./lt.js\";\nexport { default as mk } from \"./mk.js\";\nexport { default as ms } from \"./ms.js\";\nexport { default as nl } from \"./nl.js\";\nexport { default as no } from \"./no.js\";\nexport { default as ota } from \"./ota.js\";\nexport { default as ps } from \"./ps.js\";\nexport { default as pl } from \"./pl.js\";\nexport { default as pt } from \"./pt.js\";\nexport { default as ru } from \"./ru.js\";\nexport { default as sl } from \"./sl.js\";\nexport { default as sv } from \"./sv.js\";\nexport { default as ta } from \"./ta.js\";\nexport { default as th } from \"./th.js\";\nexport { default as tr } from \"./tr.js\";\nexport { default as ua } from \"./ua.js\";\nexport { default as uk } from \"./uk.js\";\nexport { default as ur } from \"./ur.js\";\nexport { default as uz } from \"./uz.js\";\nexport { default as vi } from \"./vi.js\";\nexport { default as zhCN } from \"./zh-CN.js\";\nexport { default as zhTW } from \"./zh-TW.js\";\nexport { default as yo } from \"./yo.js\";\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"\u062D\u0631\u0641\", verb: \"\u0623\u0646 \u064A\u062D\u0648\u064A\" },\n        file: { unit: \"\u0628\u0627\u064A\u062A\", verb: \"\u0623\u0646 \u064A\u062D\u0648\u064A\" },\n        array: { unit: \"\u0639\u0646\u0635\u0631\", verb: \"\u0623\u0646 \u064A\u062D\u0648\u064A\" },\n        set: { unit: \"\u0639\u0646\u0635\u0631\", verb: \"\u0623\u0646 \u064A\u062D\u0648\u064A\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"\u0645\u062F\u062E\u0644\",\n        email: \"\u0628\u0631\u064A\u062F \u0625\u0644\u0643\u062A\u0631\u0648\u0646\u064A\",\n        url: \"\u0631\u0627\u0628\u0637\",\n        emoji: \"\u0625\u064A\u0645\u0648\u062C\u064A\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"\u062A\u0627\u0631\u064A\u062E \u0648\u0648\u0642\u062A \u0628\u0645\u0639\u064A\u0627\u0631 ISO\",\n        date: \"\u062A\u0627\u0631\u064A\u062E \u0628\u0645\u0639\u064A\u0627\u0631 ISO\",\n        time: \"\u0648\u0642\u062A \u0628\u0645\u0639\u064A\u0627\u0631 ISO\",\n        duration: \"\u0645\u062F\u0629 \u0628\u0645\u0639\u064A\u0627\u0631 ISO\",\n        ipv4: \"\u0639\u0646\u0648\u0627\u0646 IPv4\",\n        ipv6: \"\u0639\u0646\u0648\u0627\u0646 IPv6\",\n        cidrv4: \"\u0645\u062F\u0649 \u0639\u0646\u0627\u0648\u064A\u0646 \u0628\u0635\u064A\u063A\u0629 IPv4\",\n        cidrv6: \"\u0645\u062F\u0649 \u0639\u0646\u0627\u0648\u064A\u0646 \u0628\u0635\u064A\u063A\u0629 IPv6\",\n        base64: \"\u0646\u064E\u0635 \u0628\u062A\u0631\u0645\u064A\u0632 base64-encoded\",\n        base64url: \"\u0646\u064E\u0635 \u0628\u062A\u0631\u0645\u064A\u0632 base64url-encoded\",\n        json_string: \"\u0646\u064E\u0635 \u0639\u0644\u0649 \u0647\u064A\u0626\u0629 JSON\",\n        e164: \"\u0631\u0642\u0645 \u0647\u0627\u062A\u0641 \u0628\u0645\u0639\u064A\u0627\u0631 E.164\",\n        jwt: \"JWT\",\n        template_literal: \"\u0645\u062F\u062E\u0644\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 instanceof ${issue.expected}\u060C \u0648\u0644\u0643\u0646 \u062A\u0645 \u0625\u062F\u062E\u0627\u0644 ${received}`;\n                }\n                return `\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 ${expected}\u060C \u0648\u0644\u0643\u0646 \u062A\u0645 \u0625\u062F\u062E\u0627\u0644 ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `\u0645\u062F\u062E\u0644\u0627\u062A \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\u0629: \u064A\u0641\u062A\u0631\u0636 \u0625\u062F\u062E\u0627\u0644 ${util.stringifyPrimitive(issue.values[0])}`;\n                return `\u0627\u062E\u062A\u064A\u0627\u0631 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062A\u0648\u0642\u0639 \u0627\u0646\u062A\u0642\u0627\u0621 \u0623\u062D\u062F \u0647\u0630\u0647 \u0627\u0644\u062E\u064A\u0627\u0631\u0627\u062A: ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return ` \u0623\u0643\u0628\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0623\u0646 \u062A\u0643\u0648\u0646 ${issue.origin ?? \"\u0627\u0644\u0642\u064A\u0645\u0629\"} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"\u0639\u0646\u0635\u0631\"}`;\n                return `\u0623\u0643\u0628\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0623\u0646 \u062A\u0643\u0648\u0646 ${issue.origin ?? \"\u0627\u0644\u0642\u064A\u0645\u0629\"} ${adj} ${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `\u0623\u0635\u063A\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0644\u0640 ${issue.origin} \u0623\u0646 \u064A\u0643\u0648\u0646 ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `\u0623\u0635\u063A\u0631 \u0645\u0646 \u0627\u0644\u0644\u0627\u0632\u0645: \u064A\u0641\u062A\u0631\u0636 \u0644\u0640 ${issue.origin} \u0623\u0646 \u064A\u0643\u0648\u0646 ${adj} ${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0628\u062F\u0623 \u0628\u0640 \"${issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0646\u062A\u0647\u064A \u0628\u0640 \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u062A\u0636\u0645\u0651\u064E\u0646 \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `\u0646\u064E\u0635 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0637\u0627\u0628\u0642 \u0627\u0644\u0646\u0645\u0637 ${_issue.pattern}`;\n                return `${FormatDictionary[_issue.format] ?? issue.format} \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644`;\n            }\n            case \"not_multiple_of\":\n                return `\u0631\u0642\u0645 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644: \u064A\u062C\u0628 \u0623\u0646 \u064A\u0643\u0648\u0646 \u0645\u0646 \u0645\u0636\u0627\u0639\u0641\u0627\u062A ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `\u0645\u0639\u0631\u0641${issue.keys.length > 1 ? \"\u0627\u062A\" : \"\"} \u063A\u0631\u064A\u0628${issue.keys.length > 1 ? \"\u0629\" : \"\"}: ${util.joinValues(issue.keys, \"\u060C \")}`;\n            case \"invalid_key\":\n                return `\u0645\u0639\u0631\u0641 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644 \u0641\u064A ${issue.origin}`;\n            case \"invalid_union\":\n                return \"\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\";\n            case \"invalid_element\":\n                return `\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644 \u0641\u064A ${issue.origin}`;\n            default:\n                return \"\u0645\u062F\u062E\u0644 \u063A\u064A\u0631 \u0645\u0642\u0628\u0648\u0644\";\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"simvol\", verb: \"olmal\u0131d\u0131r\" },\n        file: { unit: \"bayt\", verb: \"olmal\u0131d\u0131r\" },\n        array: { unit: \"element\", verb: \"olmal\u0131d\u0131r\" },\n        set: { unit: \"element\", verb: \"olmal\u0131d\u0131r\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"input\",\n        email: \"email address\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO datetime\",\n        date: \"ISO date\",\n        time: \"ISO time\",\n        duration: \"ISO duration\",\n        ipv4: \"IPv4 address\",\n        ipv6: \"IPv6 address\",\n        cidrv4: \"IPv4 range\",\n        cidrv6: \"IPv6 range\",\n        base64: \"base64-encoded string\",\n        base64url: \"base64url-encoded string\",\n        json_string: \"JSON string\",\n        e164: \"E.164 number\",\n        jwt: \"JWT\",\n        template_literal: \"input\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Yanl\u0131\u015F d\u0259y\u0259r: g\u00F6zl\u0259nil\u0259n instanceof ${issue.expected}, daxil olan ${received}`;\n                }\n                return `Yanl\u0131\u015F d\u0259y\u0259r: g\u00F6zl\u0259nil\u0259n ${expected}, daxil olan ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Yanl\u0131\u015F d\u0259y\u0259r: g\u00F6zl\u0259nil\u0259n ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Yanl\u0131\u015F se\u00E7im: a\u015Fa\u011F\u0131dak\u0131lardan biri olmal\u0131d\u0131r: ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `\u00C7ox b\u00F6y\u00FCk: g\u00F6zl\u0259nil\u0259n ${issue.origin ?? \"d\u0259y\u0259r\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"element\"}`;\n                return `\u00C7ox b\u00F6y\u00FCk: g\u00F6zl\u0259nil\u0259n ${issue.origin ?? \"d\u0259y\u0259r\"} ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `\u00C7ox ki\u00E7ik: g\u00F6zl\u0259nil\u0259n ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                return `\u00C7ox ki\u00E7ik: g\u00F6zl\u0259nil\u0259n ${issue.origin} ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Yanl\u0131\u015F m\u0259tn: \"${_issue.prefix}\" il\u0259 ba\u015Flamal\u0131d\u0131r`;\n                if (_issue.format === \"ends_with\")\n                    return `Yanl\u0131\u015F m\u0259tn: \"${_issue.suffix}\" il\u0259 bitm\u0259lidir`;\n                if (_issue.format === \"includes\")\n                    return `Yanl\u0131\u015F m\u0259tn: \"${_issue.includes}\" daxil olmal\u0131d\u0131r`;\n                if (_issue.format === \"regex\")\n                    return `Yanl\u0131\u015F m\u0259tn: ${_issue.pattern} \u015Fablonuna uy\u011Fun olmal\u0131d\u0131r`;\n                return `Yanl\u0131\u015F ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Yanl\u0131\u015F \u0259d\u0259d: ${issue.divisor} il\u0259 b\u00F6l\u00FCn\u0259 bil\u0259n olmal\u0131d\u0131r`;\n            case \"unrecognized_keys\":\n                return `Tan\u0131nmayan a\u00E7ar${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `${issue.origin} daxilind\u0259 yanl\u0131\u015F a\u00E7ar`;\n            case \"invalid_union\":\n                return \"Yanl\u0131\u015F d\u0259y\u0259r\";\n            case \"invalid_element\":\n                return `${issue.origin} daxilind\u0259 yanl\u0131\u015F d\u0259y\u0259r`;\n            default:\n                return `Yanl\u0131\u015F d\u0259y\u0259r`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nfunction getBelarusianPlural(count, one, few, many) {\n    const absCount = Math.abs(count);\n    const lastDigit = absCount % 10;\n    const lastTwoDigits = absCount % 100;\n    if (lastTwoDigits >= 11 && lastTwoDigits <= 19) {\n        return many;\n    }\n    if (lastDigit === 1) {\n        return one;\n    }\n    if (lastDigit >= 2 && lastDigit <= 4) {\n        return few;\n    }\n    return many;\n}\nconst error = () => {\n    const Sizable = {\n        string: {\n            unit: {\n                one: \"\u0441\u0456\u043C\u0432\u0430\u043B\",\n                few: \"\u0441\u0456\u043C\u0432\u0430\u043B\u044B\",\n                many: \"\u0441\u0456\u043C\u0432\u0430\u043B\u0430\u045E\",\n            },\n            verb: \"\u043C\u0435\u0446\u044C\",\n        },\n        array: {\n            unit: {\n                one: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\",\n                few: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B\",\n                many: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u045E\",\n            },\n            verb: \"\u043C\u0435\u0446\u044C\",\n        },\n        set: {\n            unit: {\n                one: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\",\n                few: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u044B\",\n                many: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\u045E\",\n            },\n            verb: \"\u043C\u0435\u0446\u044C\",\n        },\n        file: {\n            unit: {\n                one: \"\u0431\u0430\u0439\u0442\",\n                few: \"\u0431\u0430\u0439\u0442\u044B\",\n                many: \"\u0431\u0430\u0439\u0442\u0430\u045E\",\n            },\n            verb: \"\u043C\u0435\u0446\u044C\",\n        },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"\u0443\u0432\u043E\u0434\",\n        email: \"email \u0430\u0434\u0440\u0430\u0441\",\n        url: \"URL\",\n        emoji: \"\u044D\u043C\u043E\u0434\u0437\u0456\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO \u0434\u0430\u0442\u0430 \u0456 \u0447\u0430\u0441\",\n        date: \"ISO \u0434\u0430\u0442\u0430\",\n        time: \"ISO \u0447\u0430\u0441\",\n        duration: \"ISO \u043F\u0440\u0430\u0446\u044F\u0433\u043B\u0430\u0441\u0446\u044C\",\n        ipv4: \"IPv4 \u0430\u0434\u0440\u0430\u0441\",\n        ipv6: \"IPv6 \u0430\u0434\u0440\u0430\u0441\",\n        cidrv4: \"IPv4 \u0434\u044B\u044F\u043F\u0430\u0437\u043E\u043D\",\n        cidrv6: \"IPv6 \u0434\u044B\u044F\u043F\u0430\u0437\u043E\u043D\",\n        base64: \"\u0440\u0430\u0434\u043E\u043A \u0443 \u0444\u0430\u0440\u043C\u0430\u0446\u0435 base64\",\n        base64url: \"\u0440\u0430\u0434\u043E\u043A \u0443 \u0444\u0430\u0440\u043C\u0430\u0446\u0435 base64url\",\n        json_string: \"JSON \u0440\u0430\u0434\u043E\u043A\",\n        e164: \"\u043D\u0443\u043C\u0430\u0440 E.164\",\n        jwt: \"JWT\",\n        template_literal: \"\u0443\u0432\u043E\u0434\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"\u043B\u0456\u043A\",\n        array: \"\u043C\u0430\u0441\u0456\u045E\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u045E\u0441\u044F instanceof ${issue.expected}, \u0430\u0442\u0440\u044B\u043C\u0430\u043D\u0430 ${received}`;\n                }\n                return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u045E\u0441\u044F ${expected}, \u0430\u0442\u0440\u044B\u043C\u0430\u043D\u0430 ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F ${util.stringifyPrimitive(issue.values[0])}`;\n                return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0432\u0430\u0440\u044B\u044F\u043D\u0442: \u0447\u0430\u043A\u0430\u045E\u0441\u044F \u0430\u0434\u0437\u0456\u043D \u0437 ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    const maxValue = Number(issue.maximum);\n                    const unit = getBelarusianPlural(maxValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n                    return `\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u0432\u044F\u043B\u0456\u043A\u0456: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue.origin ?? \"\u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435\"} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 ${sizing.verb} ${adj}${issue.maximum.toString()} ${unit}`;\n                }\n                return `\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u0432\u044F\u043B\u0456\u043A\u0456: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue.origin ?? \"\u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435\"} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 \u0431\u044B\u0446\u044C ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    const minValue = Number(issue.minimum);\n                    const unit = getBelarusianPlural(minValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n                    return `\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u043C\u0430\u043B\u044B: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue.origin} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 ${sizing.verb} ${adj}${issue.minimum.toString()} ${unit}`;\n                }\n                return `\u0417\u0430\u043D\u0430\u0434\u0442\u0430 \u043C\u0430\u043B\u044B: \u0447\u0430\u043A\u0430\u043B\u0430\u0441\u044F, \u0448\u0442\u043E ${issue.origin} \u043F\u0430\u0432\u0456\u043D\u043D\u0430 \u0431\u044B\u0446\u044C ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u043F\u0430\u0447\u044B\u043D\u0430\u0446\u0446\u0430 \u0437 \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0437\u0430\u043A\u0430\u043D\u0447\u0432\u0430\u0446\u0446\u0430 \u043D\u0430 \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0437\u043C\u044F\u0448\u0447\u0430\u0446\u044C \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u0440\u0430\u0434\u043E\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0430\u0434\u043F\u0430\u0432\u044F\u0434\u0430\u0446\u044C \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${_issue.pattern}`;\n                return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u043B\u0456\u043A: \u043F\u0430\u0432\u0456\u043D\u0435\u043D \u0431\u044B\u0446\u044C \u043A\u0440\u0430\u0442\u043D\u044B\u043C ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `\u041D\u0435\u0440\u0430\u0441\u043F\u0430\u0437\u043D\u0430\u043D\u044B ${issue.keys.length > 1 ? \"\u043A\u043B\u044E\u0447\u044B\" : \"\u043A\u043B\u044E\u0447\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u043A\u043B\u044E\u0447 \u0443 ${issue.origin}`;\n            case \"invalid_union\":\n                return \"\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434\";\n            case \"invalid_element\":\n                return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u0430\u0435 \u0437\u043D\u0430\u0447\u044D\u043D\u043D\u0435 \u045E ${issue.origin}`;\n            default:\n                return `\u041D\u044F\u043F\u0440\u0430\u0432\u0456\u043B\u044C\u043D\u044B \u045E\u0432\u043E\u0434`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"\u0441\u0438\u043C\u0432\u043E\u043B\u0430\", verb: \"\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430\" },\n        file: { unit: \"\u0431\u0430\u0439\u0442\u0430\", verb: \"\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430\" },\n        array: { unit: \"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430\", verb: \"\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430\" },\n        set: { unit: \"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430\", verb: \"\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"\u0432\u0445\u043E\u0434\",\n        email: \"\u0438\u043C\u0435\u0439\u043B \u0430\u0434\u0440\u0435\u0441\",\n        url: \"URL\",\n        emoji: \"\u0435\u043C\u043E\u0434\u0436\u0438\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO \u0432\u0440\u0435\u043C\u0435\",\n        date: \"ISO \u0434\u0430\u0442\u0430\",\n        time: \"ISO \u0432\u0440\u0435\u043C\u0435\",\n        duration: \"ISO \u043F\u0440\u043E\u0434\u044A\u043B\u0436\u0438\u0442\u0435\u043B\u043D\u043E\u0441\u0442\",\n        ipv4: \"IPv4 \u0430\u0434\u0440\u0435\u0441\",\n        ipv6: \"IPv6 \u0430\u0434\u0440\u0435\u0441\",\n        cidrv4: \"IPv4 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\",\n        cidrv6: \"IPv6 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\",\n        base64: \"base64-\u043A\u043E\u0434\u0438\u0440\u0430\u043D \u043D\u0438\u0437\",\n        base64url: \"base64url-\u043A\u043E\u0434\u0438\u0440\u0430\u043D \u043D\u0438\u0437\",\n        json_string: \"JSON \u043D\u0438\u0437\",\n        e164: \"E.164 \u043D\u043E\u043C\u0435\u0440\",\n        jwt: \"JWT\",\n        template_literal: \"\u0432\u0445\u043E\u0434\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"\u0447\u0438\u0441\u043B\u043E\",\n        array: \"\u043C\u0430\u0441\u0438\u0432\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D instanceof ${issue.expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D ${received}`;\n                }\n                return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D ${expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434: \u043E\u0447\u0430\u043A\u0432\u0430\u043D ${util.stringifyPrimitive(issue.values[0])}`;\n                return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430 \u043E\u043F\u0446\u0438\u044F: \u043E\u0447\u0430\u043A\u0432\u0430\u043D\u043E \u0435\u0434\u043D\u043E \u043E\u0442 ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `\u0422\u0432\u044A\u0440\u0434\u0435 \u0433\u043E\u043B\u044F\u043C\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${issue.origin ?? \"\u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442\"} \u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430 ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0430\"}`;\n                return `\u0422\u0432\u044A\u0440\u0434\u0435 \u0433\u043E\u043B\u044F\u043C\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${issue.origin ?? \"\u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442\"} \u0434\u0430 \u0431\u044A\u0434\u0435 ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `\u0422\u0432\u044A\u0440\u0434\u0435 \u043C\u0430\u043B\u043A\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${issue.origin} \u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430 ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `\u0422\u0432\u044A\u0440\u0434\u0435 \u043C\u0430\u043B\u043A\u043E: \u043E\u0447\u0430\u043A\u0432\u0430 \u0441\u0435 ${issue.origin} \u0434\u0430 \u0431\u044A\u0434\u0435 ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0437\u0430\u043F\u043E\u0447\u0432\u0430 \u0441 \"${_issue.prefix}\"`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0437\u0430\u0432\u044A\u0440\u0448\u0432\u0430 \u0441 \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0432\u043A\u043B\u044E\u0447\u0432\u0430 \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043D\u0438\u0437: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0441\u044A\u0432\u043F\u0430\u0434\u0430 \u0441 ${_issue.pattern}`;\n                let invalid_adj = \"\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D\";\n                if (_issue.format === \"emoji\")\n                    invalid_adj = \"\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E\";\n                if (_issue.format === \"datetime\")\n                    invalid_adj = \"\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E\";\n                if (_issue.format === \"date\")\n                    invalid_adj = \"\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430\";\n                if (_issue.format === \"time\")\n                    invalid_adj = \"\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E\";\n                if (_issue.format === \"duration\")\n                    invalid_adj = \"\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430\";\n                return `${invalid_adj} ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u043E \u0447\u0438\u0441\u043B\u043E: \u0442\u0440\u044F\u0431\u0432\u0430 \u0434\u0430 \u0431\u044A\u0434\u0435 \u043A\u0440\u0430\u0442\u043D\u043E \u043D\u0430 ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `\u041D\u0435\u0440\u0430\u0437\u043F\u043E\u0437\u043D\u0430\u0442${issue.keys.length > 1 ? \"\u0438\" : \"\"} \u043A\u043B\u044E\u0447${issue.keys.length > 1 ? \"\u043E\u0432\u0435\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u043A\u043B\u044E\u0447 \u0432 ${issue.origin}`;\n            case \"invalid_union\":\n                return \"\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434\";\n            case \"invalid_element\":\n                return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u0430 \u0441\u0442\u043E\u0439\u043D\u043E\u0441\u0442 \u0432 ${issue.origin}`;\n            default:\n                return `\u041D\u0435\u0432\u0430\u043B\u0438\u0434\u0435\u043D \u0432\u0445\u043E\u0434`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"car\u00E0cters\", verb: \"contenir\" },\n        file: { unit: \"bytes\", verb: \"contenir\" },\n        array: { unit: \"elements\", verb: \"contenir\" },\n        set: { unit: \"elements\", verb: \"contenir\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"entrada\",\n        email: \"adre\u00E7a electr\u00F2nica\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"data i hora ISO\",\n        date: \"data ISO\",\n        time: \"hora ISO\",\n        duration: \"durada ISO\",\n        ipv4: \"adre\u00E7a IPv4\",\n        ipv6: \"adre\u00E7a IPv6\",\n        cidrv4: \"rang IPv4\",\n        cidrv6: \"rang IPv6\",\n        base64: \"cadena codificada en base64\",\n        base64url: \"cadena codificada en base64url\",\n        json_string: \"cadena JSON\",\n        e164: \"n\u00FAmero E.164\",\n        jwt: \"JWT\",\n        template_literal: \"entrada\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Tipus inv\u00E0lid: s'esperava instanceof ${issue.expected}, s'ha rebut ${received}`;\n                }\n                return `Tipus inv\u00E0lid: s'esperava ${expected}, s'ha rebut ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Valor inv\u00E0lid: s'esperava ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Opci\u00F3 inv\u00E0lida: s'esperava una de ${util.joinValues(issue.values, \" o \")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"com a m\u00E0xim\" : \"menys de\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Massa gran: s'esperava que ${issue.origin ?? \"el valor\"} contingu\u00E9s ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"elements\"}`;\n                return `Massa gran: s'esperava que ${issue.origin ?? \"el valor\"} fos ${adj} ${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \"com a m\u00EDnim\" : \"m\u00E9s de\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Massa petit: s'esperava que ${issue.origin} contingu\u00E9s ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Massa petit: s'esperava que ${issue.origin} fos ${adj} ${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `Format inv\u00E0lid: ha de comen\u00E7ar amb \"${_issue.prefix}\"`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `Format inv\u00E0lid: ha d'acabar amb \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Format inv\u00E0lid: ha d'incloure \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Format inv\u00E0lid: ha de coincidir amb el patr\u00F3 ${_issue.pattern}`;\n                return `Format inv\u00E0lid per a ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `N\u00FAmero inv\u00E0lid: ha de ser m\u00FAltiple de ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Clau${issue.keys.length > 1 ? \"s\" : \"\"} no reconeguda${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Clau inv\u00E0lida a ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Entrada inv\u00E0lida\"; // Could also be \"Tipus d'uni\u00F3 inv\u00E0lid\" but \"Entrada inv\u00E0lida\" is more general\n            case \"invalid_element\":\n                return `Element inv\u00E0lid a ${issue.origin}`;\n            default:\n                return `Entrada inv\u00E0lida`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"znak\u016F\", verb: \"m\u00EDt\" },\n        file: { unit: \"bajt\u016F\", verb: \"m\u00EDt\" },\n        array: { unit: \"prvk\u016F\", verb: \"m\u00EDt\" },\n        set: { unit: \"prvk\u016F\", verb: \"m\u00EDt\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"regul\u00E1rn\u00ED v\u00FDraz\",\n        email: \"e-mailov\u00E1 adresa\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"datum a \u010Das ve form\u00E1tu ISO\",\n        date: \"datum ve form\u00E1tu ISO\",\n        time: \"\u010Das ve form\u00E1tu ISO\",\n        duration: \"doba trv\u00E1n\u00ED ISO\",\n        ipv4: \"IPv4 adresa\",\n        ipv6: \"IPv6 adresa\",\n        cidrv4: \"rozsah IPv4\",\n        cidrv6: \"rozsah IPv6\",\n        base64: \"\u0159et\u011Bzec zak\u00F3dovan\u00FD ve form\u00E1tu base64\",\n        base64url: \"\u0159et\u011Bzec zak\u00F3dovan\u00FD ve form\u00E1tu base64url\",\n        json_string: \"\u0159et\u011Bzec ve form\u00E1tu JSON\",\n        e164: \"\u010D\u00EDslo E.164\",\n        jwt: \"JWT\",\n        template_literal: \"vstup\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"\u010D\u00EDslo\",\n        string: \"\u0159et\u011Bzec\",\n        function: \"funkce\",\n        array: \"pole\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Neplatn\u00FD vstup: o\u010Dek\u00E1v\u00E1no instanceof ${issue.expected}, obdr\u017Eeno ${received}`;\n                }\n                return `Neplatn\u00FD vstup: o\u010Dek\u00E1v\u00E1no ${expected}, obdr\u017Eeno ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Neplatn\u00FD vstup: o\u010Dek\u00E1v\u00E1no ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Neplatn\u00E1 mo\u017Enost: o\u010Dek\u00E1v\u00E1na jedna z hodnot ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Hodnota je p\u0159\u00EDli\u0161 velk\u00E1: ${issue.origin ?? \"hodnota\"} mus\u00ED m\u00EDt ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"prvk\u016F\"}`;\n                }\n                return `Hodnota je p\u0159\u00EDli\u0161 velk\u00E1: ${issue.origin ?? \"hodnota\"} mus\u00ED b\u00FDt ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Hodnota je p\u0159\u00EDli\u0161 mal\u00E1: ${issue.origin ?? \"hodnota\"} mus\u00ED m\u00EDt ${adj}${issue.minimum.toString()} ${sizing.unit ?? \"prvk\u016F\"}`;\n                }\n                return `Hodnota je p\u0159\u00EDli\u0161 mal\u00E1: ${issue.origin ?? \"hodnota\"} mus\u00ED b\u00FDt ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Neplatn\u00FD \u0159et\u011Bzec: mus\u00ED za\u010D\u00EDnat na \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `Neplatn\u00FD \u0159et\u011Bzec: mus\u00ED kon\u010Dit na \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Neplatn\u00FD \u0159et\u011Bzec: mus\u00ED obsahovat \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Neplatn\u00FD \u0159et\u011Bzec: mus\u00ED odpov\u00EDdat vzoru ${_issue.pattern}`;\n                return `Neplatn\u00FD form\u00E1t ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Neplatn\u00E9 \u010D\u00EDslo: mus\u00ED b\u00FDt n\u00E1sobkem ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Nezn\u00E1m\u00E9 kl\u00ED\u010De: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Neplatn\u00FD kl\u00ED\u010D v ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Neplatn\u00FD vstup\";\n            case \"invalid_element\":\n                return `Neplatn\u00E1 hodnota v ${issue.origin}`;\n            default:\n                return `Neplatn\u00FD vstup`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"tegn\", verb: \"havde\" },\n        file: { unit: \"bytes\", verb: \"havde\" },\n        array: { unit: \"elementer\", verb: \"indeholdt\" },\n        set: { unit: \"elementer\", verb: \"indeholdt\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"input\",\n        email: \"e-mailadresse\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO dato- og klokkesl\u00E6t\",\n        date: \"ISO-dato\",\n        time: \"ISO-klokkesl\u00E6t\",\n        duration: \"ISO-varighed\",\n        ipv4: \"IPv4-omr\u00E5de\",\n        ipv6: \"IPv6-omr\u00E5de\",\n        cidrv4: \"IPv4-spektrum\",\n        cidrv6: \"IPv6-spektrum\",\n        base64: \"base64-kodet streng\",\n        base64url: \"base64url-kodet streng\",\n        json_string: \"JSON-streng\",\n        e164: \"E.164-nummer\",\n        jwt: \"JWT\",\n        template_literal: \"input\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        string: \"streng\",\n        number: \"tal\",\n        boolean: \"boolean\",\n        array: \"liste\",\n        object: \"objekt\",\n        set: \"s\u00E6t\",\n        file: \"fil\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Ugyldigt input: forventede instanceof ${issue.expected}, fik ${received}`;\n                }\n                return `Ugyldigt input: forventede ${expected}, fik ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Ugyldig v\u00E6rdi: forventede ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Ugyldigt valg: forventede en af f\u00F8lgende ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                const origin = TypeDictionary[issue.origin] ?? issue.origin;\n                if (sizing)\n                    return `For stor: forventede ${origin ?? \"value\"} ${sizing.verb} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"elementer\"}`;\n                return `For stor: forventede ${origin ?? \"value\"} havde ${adj} ${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                const origin = TypeDictionary[issue.origin] ?? issue.origin;\n                if (sizing) {\n                    return `For lille: forventede ${origin} ${sizing.verb} ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `For lille: forventede ${origin} havde ${adj} ${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Ugyldig streng: skal starte med \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `Ugyldig streng: skal ende med \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Ugyldig streng: skal indeholde \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Ugyldig streng: skal matche m\u00F8nsteret ${_issue.pattern}`;\n                return `Ugyldig ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Ugyldigt tal: skal v\u00E6re deleligt med ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `${issue.keys.length > 1 ? \"Ukendte n\u00F8gler\" : \"Ukendt n\u00F8gle\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Ugyldig n\u00F8gle i ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Ugyldigt input: matcher ingen af de tilladte typer\";\n            case \"invalid_element\":\n                return `Ugyldig v\u00E6rdi i ${issue.origin}`;\n            default:\n                return `Ugyldigt input`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"Zeichen\", verb: \"zu haben\" },\n        file: { unit: \"Bytes\", verb: \"zu haben\" },\n        array: { unit: \"Elemente\", verb: \"zu haben\" },\n        set: { unit: \"Elemente\", verb: \"zu haben\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"Eingabe\",\n        email: \"E-Mail-Adresse\",\n        url: \"URL\",\n        emoji: \"Emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO-Datum und -Uhrzeit\",\n        date: \"ISO-Datum\",\n        time: \"ISO-Uhrzeit\",\n        duration: \"ISO-Dauer\",\n        ipv4: \"IPv4-Adresse\",\n        ipv6: \"IPv6-Adresse\",\n        cidrv4: \"IPv4-Bereich\",\n        cidrv6: \"IPv6-Bereich\",\n        base64: \"Base64-codierter String\",\n        base64url: \"Base64-URL-codierter String\",\n        json_string: \"JSON-String\",\n        e164: \"E.164-Nummer\",\n        jwt: \"JWT\",\n        template_literal: \"Eingabe\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"Zahl\",\n        array: \"Array\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Ung\u00FCltige Eingabe: erwartet instanceof ${issue.expected}, erhalten ${received}`;\n                }\n                return `Ung\u00FCltige Eingabe: erwartet ${expected}, erhalten ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Ung\u00FCltige Eingabe: erwartet ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Ung\u00FCltige Option: erwartet eine von ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Zu gro\u00DF: erwartet, dass ${issue.origin ?? \"Wert\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"Elemente\"} hat`;\n                return `Zu gro\u00DF: erwartet, dass ${issue.origin ?? \"Wert\"} ${adj}${issue.maximum.toString()} ist`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Zu klein: erwartet, dass ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} hat`;\n                }\n                return `Zu klein: erwartet, dass ${issue.origin} ${adj}${issue.minimum.toString()} ist`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Ung\u00FCltiger String: muss mit \"${_issue.prefix}\" beginnen`;\n                if (_issue.format === \"ends_with\")\n                    return `Ung\u00FCltiger String: muss mit \"${_issue.suffix}\" enden`;\n                if (_issue.format === \"includes\")\n                    return `Ung\u00FCltiger String: muss \"${_issue.includes}\" enthalten`;\n                if (_issue.format === \"regex\")\n                    return `Ung\u00FCltiger String: muss dem Muster ${_issue.pattern} entsprechen`;\n                return `Ung\u00FCltig: ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Ung\u00FCltige Zahl: muss ein Vielfaches von ${issue.divisor} sein`;\n            case \"unrecognized_keys\":\n                return `${issue.keys.length > 1 ? \"Unbekannte Schl\u00FCssel\" : \"Unbekannter Schl\u00FCssel\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Ung\u00FCltiger Schl\u00FCssel in ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Ung\u00FCltige Eingabe\";\n            case \"invalid_element\":\n                return `Ung\u00FCltiger Wert in ${issue.origin}`;\n            default:\n                return `Ung\u00FCltige Eingabe`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"characters\", verb: \"to have\" },\n        file: { unit: \"bytes\", verb: \"to have\" },\n        array: { unit: \"items\", verb: \"to have\" },\n        set: { unit: \"items\", verb: \"to have\" },\n        map: { unit: \"entries\", verb: \"to have\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"input\",\n        email: \"email address\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO datetime\",\n        date: \"ISO date\",\n        time: \"ISO time\",\n        duration: \"ISO duration\",\n        ipv4: \"IPv4 address\",\n        ipv6: \"IPv6 address\",\n        mac: \"MAC address\",\n        cidrv4: \"IPv4 range\",\n        cidrv6: \"IPv6 range\",\n        base64: \"base64-encoded string\",\n        base64url: \"base64url-encoded string\",\n        json_string: \"JSON string\",\n        e164: \"E.164 number\",\n        jwt: \"JWT\",\n        template_literal: \"input\",\n    };\n    // type names: missing keys = do not translate (use raw value via ?? fallback)\n    const TypeDictionary = {\n        // Compatibility: \"nan\" -> \"NaN\" for display\n        nan: \"NaN\",\n        // All other type names omitted - they fall back to raw values via ?? operator\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                return `Invalid input: expected ${expected}, received ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Invalid input: expected ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Invalid option: expected one of ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Too big: expected ${issue.origin ?? \"value\"} to have ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"}`;\n                return `Too big: expected ${issue.origin ?? \"value\"} to be ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Too small: expected ${issue.origin} to have ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Too small: expected ${issue.origin} to be ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `Invalid string: must start with \"${_issue.prefix}\"`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `Invalid string: must end with \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Invalid string: must include \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Invalid string: must match pattern ${_issue.pattern}`;\n                return `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Invalid number: must be a multiple of ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Unrecognized key${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Invalid key in ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Invalid input\";\n            case \"invalid_element\":\n                return `Invalid value in ${issue.origin}`;\n            default:\n                return `Invalid input`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"karaktrojn\", verb: \"havi\" },\n        file: { unit: \"bajtojn\", verb: \"havi\" },\n        array: { unit: \"elementojn\", verb: \"havi\" },\n        set: { unit: \"elementojn\", verb: \"havi\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"enigo\",\n        email: \"retadreso\",\n        url: \"URL\",\n        emoji: \"emo\u011Dio\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO-datotempo\",\n        date: \"ISO-dato\",\n        time: \"ISO-tempo\",\n        duration: \"ISO-da\u016Dro\",\n        ipv4: \"IPv4-adreso\",\n        ipv6: \"IPv6-adreso\",\n        cidrv4: \"IPv4-rango\",\n        cidrv6: \"IPv6-rango\",\n        base64: \"64-ume kodita karaktraro\",\n        base64url: \"URL-64-ume kodita karaktraro\",\n        json_string: \"JSON-karaktraro\",\n        e164: \"E.164-nombro\",\n        jwt: \"JWT\",\n        template_literal: \"enigo\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"nombro\",\n        array: \"tabelo\",\n        null: \"senvalora\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Nevalida enigo: atendi\u011Dis instanceof ${issue.expected}, ricevi\u011Dis ${received}`;\n                }\n                return `Nevalida enigo: atendi\u011Dis ${expected}, ricevi\u011Dis ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Nevalida enigo: atendi\u011Dis ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Nevalida opcio: atendi\u011Dis unu el ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Tro granda: atendi\u011Dis ke ${issue.origin ?? \"valoro\"} havu ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementojn\"}`;\n                return `Tro granda: atendi\u011Dis ke ${issue.origin ?? \"valoro\"} havu ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Tro malgranda: atendi\u011Dis ke ${issue.origin} havu ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Tro malgranda: atendi\u011Dis ke ${issue.origin} estu ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Nevalida karaktraro: devas komenci\u011Di per \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `Nevalida karaktraro: devas fini\u011Di per \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Nevalida karaktraro: devas inkluzivi \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Nevalida karaktraro: devas kongrui kun la modelo ${_issue.pattern}`;\n                return `Nevalida ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Nevalida nombro: devas esti oblo de ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Nekonata${issue.keys.length > 1 ? \"j\" : \"\"} \u015Dlosilo${issue.keys.length > 1 ? \"j\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Nevalida \u015Dlosilo en ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Nevalida enigo\";\n            case \"invalid_element\":\n                return `Nevalida valoro en ${issue.origin}`;\n            default:\n                return `Nevalida enigo`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"caracteres\", verb: \"tener\" },\n        file: { unit: \"bytes\", verb: \"tener\" },\n        array: { unit: \"elementos\", verb: \"tener\" },\n        set: { unit: \"elementos\", verb: \"tener\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"entrada\",\n        email: \"direcci\u00F3n de correo electr\u00F3nico\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"fecha y hora ISO\",\n        date: \"fecha ISO\",\n        time: \"hora ISO\",\n        duration: \"duraci\u00F3n ISO\",\n        ipv4: \"direcci\u00F3n IPv4\",\n        ipv6: \"direcci\u00F3n IPv6\",\n        cidrv4: \"rango IPv4\",\n        cidrv6: \"rango IPv6\",\n        base64: \"cadena codificada en base64\",\n        base64url: \"URL codificada en base64\",\n        json_string: \"cadena JSON\",\n        e164: \"n\u00FAmero E.164\",\n        jwt: \"JWT\",\n        template_literal: \"entrada\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        string: \"texto\",\n        number: \"n\u00FAmero\",\n        boolean: \"booleano\",\n        array: \"arreglo\",\n        object: \"objeto\",\n        set: \"conjunto\",\n        file: \"archivo\",\n        date: \"fecha\",\n        bigint: \"n\u00FAmero grande\",\n        symbol: \"s\u00EDmbolo\",\n        undefined: \"indefinido\",\n        null: \"nulo\",\n        function: \"funci\u00F3n\",\n        map: \"mapa\",\n        record: \"registro\",\n        tuple: \"tupla\",\n        enum: \"enumeraci\u00F3n\",\n        union: \"uni\u00F3n\",\n        literal: \"literal\",\n        promise: \"promesa\",\n        void: \"vac\u00EDo\",\n        never: \"nunca\",\n        unknown: \"desconocido\",\n        any: \"cualquiera\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Entrada inv\u00E1lida: se esperaba instanceof ${issue.expected}, recibido ${received}`;\n                }\n                return `Entrada inv\u00E1lida: se esperaba ${expected}, recibido ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Entrada inv\u00E1lida: se esperaba ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Opci\u00F3n inv\u00E1lida: se esperaba una de ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                const origin = TypeDictionary[issue.origin] ?? issue.origin;\n                if (sizing)\n                    return `Demasiado grande: se esperaba que ${origin ?? \"valor\"} tuviera ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementos\"}`;\n                return `Demasiado grande: se esperaba que ${origin ?? \"valor\"} fuera ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                const origin = TypeDictionary[issue.origin] ?? issue.origin;\n                if (sizing) {\n                    return `Demasiado peque\u00F1o: se esperaba que ${origin} tuviera ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Demasiado peque\u00F1o: se esperaba que ${origin} fuera ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Cadena inv\u00E1lida: debe comenzar con \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `Cadena inv\u00E1lida: debe terminar en \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Cadena inv\u00E1lida: debe incluir \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Cadena inv\u00E1lida: debe coincidir con el patr\u00F3n ${_issue.pattern}`;\n                return `Inv\u00E1lido ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `N\u00FAmero inv\u00E1lido: debe ser m\u00FAltiplo de ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Llave${issue.keys.length > 1 ? \"s\" : \"\"} desconocida${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Llave inv\u00E1lida en ${TypeDictionary[issue.origin] ?? issue.origin}`;\n            case \"invalid_union\":\n                return \"Entrada inv\u00E1lida\";\n            case \"invalid_element\":\n                return `Valor inv\u00E1lido en ${TypeDictionary[issue.origin] ?? issue.origin}`;\n            default:\n                return `Entrada inv\u00E1lida`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"\u06A9\u0627\u0631\u0627\u06A9\u062A\u0631\", verb: \"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F\" },\n        file: { unit: \"\u0628\u0627\u06CC\u062A\", verb: \"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F\" },\n        array: { unit: \"\u0622\u06CC\u062A\u0645\", verb: \"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F\" },\n        set: { unit: \"\u0622\u06CC\u062A\u0645\", verb: \"\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"\u0648\u0631\u0648\u062F\u06CC\",\n        email: \"\u0622\u062F\u0631\u0633 \u0627\u06CC\u0645\u06CC\u0644\",\n        url: \"URL\",\n        emoji: \"\u0627\u06CC\u0645\u0648\u062C\u06CC\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"\u062A\u0627\u0631\u06CC\u062E \u0648 \u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648\",\n        date: \"\u062A\u0627\u0631\u06CC\u062E \u0627\u06CC\u0632\u0648\",\n        time: \"\u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648\",\n        duration: \"\u0645\u062F\u062A \u0632\u0645\u0627\u0646 \u0627\u06CC\u0632\u0648\",\n        ipv4: \"IPv4 \u0622\u062F\u0631\u0633\",\n        ipv6: \"IPv6 \u0622\u062F\u0631\u0633\",\n        cidrv4: \"IPv4 \u062F\u0627\u0645\u0646\u0647\",\n        cidrv6: \"IPv6 \u062F\u0627\u0645\u0646\u0647\",\n        base64: \"base64-encoded \u0631\u0634\u062A\u0647\",\n        base64url: \"base64url-encoded \u0631\u0634\u062A\u0647\",\n        json_string: \"JSON \u0631\u0634\u062A\u0647\",\n        e164: \"E.164 \u0639\u062F\u062F\",\n        jwt: \"JWT\",\n        template_literal: \"\u0648\u0631\u0648\u062F\u06CC\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"\u0639\u062F\u062F\",\n        array: \"\u0622\u0631\u0627\u06CC\u0647\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A instanceof ${issue.expected} \u0645\u06CC\u200C\u0628\u0648\u062F\u060C ${received} \u062F\u0631\u06CC\u0627\u0641\u062A \u0634\u062F`;\n                }\n                return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A ${expected} \u0645\u06CC\u200C\u0628\u0648\u062F\u060C ${received} \u062F\u0631\u06CC\u0627\u0641\u062A \u0634\u062F`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1) {\n                    return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A ${util.stringifyPrimitive(issue.values[0])} \u0645\u06CC\u200C\u0628\u0648\u062F`;\n                }\n                return `\u06AF\u0632\u06CC\u0646\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0645\u06CC\u200C\u0628\u0627\u06CC\u0633\u062A \u06CC\u06A9\u06CC \u0627\u0632 ${util.joinValues(issue.values, \"|\")} \u0645\u06CC\u200C\u0628\u0648\u062F`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `\u062E\u06CC\u0644\u06CC \u0628\u0632\u0631\u06AF: ${issue.origin ?? \"\u0645\u0642\u062F\u0627\u0631\"} \u0628\u0627\u06CC\u062F ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u0639\u0646\u0635\u0631\"} \u0628\u0627\u0634\u062F`;\n                }\n                return `\u062E\u06CC\u0644\u06CC \u0628\u0632\u0631\u06AF: ${issue.origin ?? \"\u0645\u0642\u062F\u0627\u0631\"} \u0628\u0627\u06CC\u062F ${adj}${issue.maximum.toString()} \u0628\u0627\u0634\u062F`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `\u062E\u06CC\u0644\u06CC \u06A9\u0648\u0686\u06A9: ${issue.origin} \u0628\u0627\u06CC\u062F ${adj}${issue.minimum.toString()} ${sizing.unit} \u0628\u0627\u0634\u062F`;\n                }\n                return `\u062E\u06CC\u0644\u06CC \u06A9\u0648\u0686\u06A9: ${issue.origin} \u0628\u0627\u06CC\u062F ${adj}${issue.minimum.toString()} \u0628\u0627\u0634\u062F`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 \"${_issue.prefix}\" \u0634\u0631\u0648\u0639 \u0634\u0648\u062F`;\n                }\n                if (_issue.format === \"ends_with\") {\n                    return `\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 \"${_issue.suffix}\" \u062A\u0645\u0627\u0645 \u0634\u0648\u062F`;\n                }\n                if (_issue.format === \"includes\") {\n                    return `\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0634\u0627\u0645\u0644 \"${_issue.includes}\" \u0628\u0627\u0634\u062F`;\n                }\n                if (_issue.format === \"regex\") {\n                    return `\u0631\u0634\u062A\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0628\u0627 \u0627\u0644\u06AF\u0648\u06CC ${_issue.pattern} \u0645\u0637\u0627\u0628\u0642\u062A \u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F`;\n                }\n                return `${FormatDictionary[_issue.format] ?? issue.format} \u0646\u0627\u0645\u0639\u062A\u0628\u0631`;\n            }\n            case \"not_multiple_of\":\n                return `\u0639\u062F\u062F \u0646\u0627\u0645\u0639\u062A\u0628\u0631: \u0628\u0627\u06CC\u062F \u0645\u0636\u0631\u0628 ${issue.divisor} \u0628\u0627\u0634\u062F`;\n            case \"unrecognized_keys\":\n                return `\u06A9\u0644\u06CC\u062F${issue.keys.length > 1 ? \"\u0647\u0627\u06CC\" : \"\"} \u0646\u0627\u0634\u0646\u0627\u0633: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `\u06A9\u0644\u06CC\u062F \u0646\u0627\u0634\u0646\u0627\u0633 \u062F\u0631 ${issue.origin}`;\n            case \"invalid_union\":\n                return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631`;\n            case \"invalid_element\":\n                return `\u0645\u0642\u062F\u0627\u0631 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u062F\u0631 ${issue.origin}`;\n            default:\n                return `\u0648\u0631\u0648\u062F\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"merkki\u00E4\", subject: \"merkkijonon\" },\n        file: { unit: \"tavua\", subject: \"tiedoston\" },\n        array: { unit: \"alkiota\", subject: \"listan\" },\n        set: { unit: \"alkiota\", subject: \"joukon\" },\n        number: { unit: \"\", subject: \"luvun\" },\n        bigint: { unit: \"\", subject: \"suuren kokonaisluvun\" },\n        int: { unit: \"\", subject: \"kokonaisluvun\" },\n        date: { unit: \"\", subject: \"p\u00E4iv\u00E4m\u00E4\u00E4r\u00E4n\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"s\u00E4\u00E4nn\u00F6llinen lauseke\",\n        email: \"s\u00E4hk\u00F6postiosoite\",\n        url: \"URL-osoite\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO-aikaleima\",\n        date: \"ISO-p\u00E4iv\u00E4m\u00E4\u00E4r\u00E4\",\n        time: \"ISO-aika\",\n        duration: \"ISO-kesto\",\n        ipv4: \"IPv4-osoite\",\n        ipv6: \"IPv6-osoite\",\n        cidrv4: \"IPv4-alue\",\n        cidrv6: \"IPv6-alue\",\n        base64: \"base64-koodattu merkkijono\",\n        base64url: \"base64url-koodattu merkkijono\",\n        json_string: \"JSON-merkkijono\",\n        e164: \"E.164-luku\",\n        jwt: \"JWT\",\n        template_literal: \"templaattimerkkijono\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Virheellinen tyyppi: odotettiin instanceof ${issue.expected}, oli ${received}`;\n                }\n                return `Virheellinen tyyppi: odotettiin ${expected}, oli ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Virheellinen sy\u00F6te: t\u00E4ytyy olla ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Virheellinen valinta: t\u00E4ytyy olla yksi seuraavista: ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Liian suuri: ${sizing.subject} t\u00E4ytyy olla ${adj}${issue.maximum.toString()} ${sizing.unit}`.trim();\n                }\n                return `Liian suuri: arvon t\u00E4ytyy olla ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Liian pieni: ${sizing.subject} t\u00E4ytyy olla ${adj}${issue.minimum.toString()} ${sizing.unit}`.trim();\n                }\n                return `Liian pieni: arvon t\u00E4ytyy olla ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Virheellinen sy\u00F6te: t\u00E4ytyy alkaa \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `Virheellinen sy\u00F6te: t\u00E4ytyy loppua \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Virheellinen sy\u00F6te: t\u00E4ytyy sis\u00E4lt\u00E4\u00E4 \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\") {\n                    return `Virheellinen sy\u00F6te: t\u00E4ytyy vastata s\u00E4\u00E4nn\u00F6llist\u00E4 lauseketta ${_issue.pattern}`;\n                }\n                return `Virheellinen ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Virheellinen luku: t\u00E4ytyy olla luvun ${issue.divisor} monikerta`;\n            case \"unrecognized_keys\":\n                return `${issue.keys.length > 1 ? \"Tuntemattomat avaimet\" : \"Tuntematon avain\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return \"Virheellinen avain tietueessa\";\n            case \"invalid_union\":\n                return \"Virheellinen unioni\";\n            case \"invalid_element\":\n                return \"Virheellinen arvo joukossa\";\n            default:\n                return `Virheellinen sy\u00F6te`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"caract\u00E8res\", verb: \"avoir\" },\n        file: { unit: \"octets\", verb: \"avoir\" },\n        array: { unit: \"\u00E9l\u00E9ments\", verb: \"avoir\" },\n        set: { unit: \"\u00E9l\u00E9ments\", verb: \"avoir\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"entr\u00E9e\",\n        email: \"adresse e-mail\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"date et heure ISO\",\n        date: \"date ISO\",\n        time: \"heure ISO\",\n        duration: \"dur\u00E9e ISO\",\n        ipv4: \"adresse IPv4\",\n        ipv6: \"adresse IPv6\",\n        cidrv4: \"plage IPv4\",\n        cidrv6: \"plage IPv6\",\n        base64: \"cha\u00EEne encod\u00E9e en base64\",\n        base64url: \"cha\u00EEne encod\u00E9e en base64url\",\n        json_string: \"cha\u00EEne JSON\",\n        e164: \"num\u00E9ro E.164\",\n        jwt: \"JWT\",\n        template_literal: \"entr\u00E9e\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"nombre\",\n        array: \"tableau\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Entr\u00E9e invalide : instanceof ${issue.expected} attendu, ${received} re\u00E7u`;\n                }\n                return `Entr\u00E9e invalide : ${expected} attendu, ${received} re\u00E7u`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Entr\u00E9e invalide : ${util.stringifyPrimitive(issue.values[0])} attendu`;\n                return `Option invalide : une valeur parmi ${util.joinValues(issue.values, \"|\")} attendue`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Trop grand : ${issue.origin ?? \"valeur\"} doit ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u00E9l\u00E9ment(s)\"}`;\n                return `Trop grand : ${issue.origin ?? \"valeur\"} doit \u00EAtre ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Trop petit : ${issue.origin} doit ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Trop petit : ${issue.origin} doit \u00EAtre ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Cha\u00EEne invalide : doit commencer par \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `Cha\u00EEne invalide : doit se terminer par \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Cha\u00EEne invalide : doit inclure \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Cha\u00EEne invalide : doit correspondre au mod\u00E8le ${_issue.pattern}`;\n                return `${FormatDictionary[_issue.format] ?? issue.format} invalide`;\n            }\n            case \"not_multiple_of\":\n                return `Nombre invalide : doit \u00EAtre un multiple de ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Cl\u00E9${issue.keys.length > 1 ? \"s\" : \"\"} non reconnue${issue.keys.length > 1 ? \"s\" : \"\"} : ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Cl\u00E9 invalide dans ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Entr\u00E9e invalide\";\n            case \"invalid_element\":\n                return `Valeur invalide dans ${issue.origin}`;\n            default:\n                return `Entr\u00E9e invalide`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"caract\u00E8res\", verb: \"avoir\" },\n        file: { unit: \"octets\", verb: \"avoir\" },\n        array: { unit: \"\u00E9l\u00E9ments\", verb: \"avoir\" },\n        set: { unit: \"\u00E9l\u00E9ments\", verb: \"avoir\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"entr\u00E9e\",\n        email: \"adresse courriel\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"date-heure ISO\",\n        date: \"date ISO\",\n        time: \"heure ISO\",\n        duration: \"dur\u00E9e ISO\",\n        ipv4: \"adresse IPv4\",\n        ipv6: \"adresse IPv6\",\n        cidrv4: \"plage IPv4\",\n        cidrv6: \"plage IPv6\",\n        base64: \"cha\u00EEne encod\u00E9e en base64\",\n        base64url: \"cha\u00EEne encod\u00E9e en base64url\",\n        json_string: \"cha\u00EEne JSON\",\n        e164: \"num\u00E9ro E.164\",\n        jwt: \"JWT\",\n        template_literal: \"entr\u00E9e\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Entr\u00E9e invalide : attendu instanceof ${issue.expected}, re\u00E7u ${received}`;\n                }\n                return `Entr\u00E9e invalide : attendu ${expected}, re\u00E7u ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Entr\u00E9e invalide : attendu ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Option invalide : attendu l'une des valeurs suivantes ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"\u2264\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Trop grand : attendu que ${issue.origin ?? \"la valeur\"} ait ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n                return `Trop grand : attendu que ${issue.origin ?? \"la valeur\"} soit ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \"\u2265\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Trop petit : attendu que ${issue.origin} ait ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Trop petit : attendu que ${issue.origin} soit ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `Cha\u00EEne invalide : doit commencer par \"${_issue.prefix}\"`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `Cha\u00EEne invalide : doit se terminer par \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Cha\u00EEne invalide : doit inclure \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Cha\u00EEne invalide : doit correspondre au motif ${_issue.pattern}`;\n                return `${FormatDictionary[_issue.format] ?? issue.format} invalide`;\n            }\n            case \"not_multiple_of\":\n                return `Nombre invalide : doit \u00EAtre un multiple de ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Cl\u00E9${issue.keys.length > 1 ? \"s\" : \"\"} non reconnue${issue.keys.length > 1 ? \"s\" : \"\"} : ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Cl\u00E9 invalide dans ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Entr\u00E9e invalide\";\n            case \"invalid_element\":\n                return `Valeur invalide dans ${issue.origin}`;\n            default:\n                return `Entr\u00E9e invalide`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    // Hebrew labels + grammatical gender\n    const TypeNames = {\n        string: { label: \"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA\", gender: \"f\" },\n        number: { label: \"\u05DE\u05E1\u05E4\u05E8\", gender: \"m\" },\n        boolean: { label: \"\u05E2\u05E8\u05DA \u05D1\u05D5\u05DC\u05D9\u05D0\u05E0\u05D9\", gender: \"m\" },\n        bigint: { label: \"BigInt\", gender: \"m\" },\n        date: { label: \"\u05EA\u05D0\u05E8\u05D9\u05DA\", gender: \"m\" },\n        array: { label: \"\u05DE\u05E2\u05E8\u05DA\", gender: \"m\" },\n        object: { label: \"\u05D0\u05D5\u05D1\u05D9\u05D9\u05E7\u05D8\", gender: \"m\" },\n        null: { label: \"\u05E2\u05E8\u05DA \u05E8\u05D9\u05E7 (null)\", gender: \"m\" },\n        undefined: { label: \"\u05E2\u05E8\u05DA \u05DC\u05D0 \u05DE\u05D5\u05D2\u05D3\u05E8 (undefined)\", gender: \"m\" },\n        symbol: { label: \"\u05E1\u05D9\u05DE\u05D1\u05D5\u05DC (Symbol)\", gender: \"m\" },\n        function: { label: \"\u05E4\u05D5\u05E0\u05E7\u05E6\u05D9\u05D4\", gender: \"f\" },\n        map: { label: \"\u05DE\u05E4\u05D4 (Map)\", gender: \"f\" },\n        set: { label: \"\u05E7\u05D1\u05D5\u05E6\u05D4 (Set)\", gender: \"f\" },\n        file: { label: \"\u05E7\u05D5\u05D1\u05E5\", gender: \"m\" },\n        promise: { label: \"Promise\", gender: \"m\" },\n        NaN: { label: \"NaN\", gender: \"m\" },\n        unknown: { label: \"\u05E2\u05E8\u05DA \u05DC\u05D0 \u05D9\u05D3\u05D5\u05E2\", gender: \"m\" },\n        value: { label: \"\u05E2\u05E8\u05DA\", gender: \"m\" },\n    };\n    // Sizing units for size-related messages + localized origin labels\n    const Sizable = {\n        string: { unit: \"\u05EA\u05D5\u05D5\u05D9\u05DD\", shortLabel: \"\u05E7\u05E6\u05E8\", longLabel: \"\u05D0\u05E8\u05D5\u05DA\" },\n        file: { unit: \"\u05D1\u05D9\u05D9\u05D8\u05D9\u05DD\", shortLabel: \"\u05E7\u05D8\u05DF\", longLabel: \"\u05D2\u05D3\u05D5\u05DC\" },\n        array: { unit: \"\u05E4\u05E8\u05D9\u05D8\u05D9\u05DD\", shortLabel: \"\u05E7\u05D8\u05DF\", longLabel: \"\u05D2\u05D3\u05D5\u05DC\" },\n        set: { unit: \"\u05E4\u05E8\u05D9\u05D8\u05D9\u05DD\", shortLabel: \"\u05E7\u05D8\u05DF\", longLabel: \"\u05D2\u05D3\u05D5\u05DC\" },\n        number: { unit: \"\", shortLabel: \"\u05E7\u05D8\u05DF\", longLabel: \"\u05D2\u05D3\u05D5\u05DC\" }, // no unit\n    };\n    // Helpers \u2014 labels, articles, and verbs\n    const typeEntry = (t) => (t ? TypeNames[t] : undefined);\n    const typeLabel = (t) => {\n        const e = typeEntry(t);\n        if (e)\n            return e.label;\n        // fallback: show raw string if unknown\n        return t ?? TypeNames.unknown.label;\n    };\n    const withDefinite = (t) => `\u05D4${typeLabel(t)}`;\n    const verbFor = (t) => {\n        const e = typeEntry(t);\n        const gender = e?.gender ?? \"m\";\n        return gender === \"f\" ? \"\u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05D9\u05D5\u05EA\" : \"\u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA\";\n    };\n    const getSizing = (origin) => {\n        if (!origin)\n            return null;\n        return Sizable[origin] ?? null;\n    };\n    const FormatDictionary = {\n        regex: { label: \"\u05E7\u05DC\u05D8\", gender: \"m\" },\n        email: { label: \"\u05DB\u05EA\u05D5\u05D1\u05EA \u05D0\u05D9\u05DE\u05D9\u05D9\u05DC\", gender: \"f\" },\n        url: { label: \"\u05DB\u05EA\u05D5\u05D1\u05EA \u05E8\u05E9\u05EA\", gender: \"f\" },\n        emoji: { label: \"\u05D0\u05D9\u05DE\u05D5\u05D2'\u05D9\", gender: \"m\" },\n        uuid: { label: \"UUID\", gender: \"m\" },\n        nanoid: { label: \"nanoid\", gender: \"m\" },\n        guid: { label: \"GUID\", gender: \"m\" },\n        cuid: { label: \"cuid\", gender: \"m\" },\n        cuid2: { label: \"cuid2\", gender: \"m\" },\n        ulid: { label: \"ULID\", gender: \"m\" },\n        xid: { label: \"XID\", gender: \"m\" },\n        ksuid: { label: \"KSUID\", gender: \"m\" },\n        datetime: { label: \"\u05EA\u05D0\u05E8\u05D9\u05DA \u05D5\u05D6\u05DE\u05DF ISO\", gender: \"m\" },\n        date: { label: \"\u05EA\u05D0\u05E8\u05D9\u05DA ISO\", gender: \"m\" },\n        time: { label: \"\u05D6\u05DE\u05DF ISO\", gender: \"m\" },\n        duration: { label: \"\u05DE\u05E9\u05DA \u05D6\u05DE\u05DF ISO\", gender: \"m\" },\n        ipv4: { label: \"\u05DB\u05EA\u05D5\u05D1\u05EA IPv4\", gender: \"f\" },\n        ipv6: { label: \"\u05DB\u05EA\u05D5\u05D1\u05EA IPv6\", gender: \"f\" },\n        cidrv4: { label: \"\u05D8\u05D5\u05D5\u05D7 IPv4\", gender: \"m\" },\n        cidrv6: { label: \"\u05D8\u05D5\u05D5\u05D7 IPv6\", gender: \"m\" },\n        base64: { label: \"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D1\u05D1\u05E1\u05D9\u05E1 64\", gender: \"f\" },\n        base64url: { label: \"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D1\u05D1\u05E1\u05D9\u05E1 64 \u05DC\u05DB\u05EA\u05D5\u05D1\u05D5\u05EA \u05E8\u05E9\u05EA\", gender: \"f\" },\n        json_string: { label: \"\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA JSON\", gender: \"f\" },\n        e164: { label: \"\u05DE\u05E1\u05E4\u05E8 E.164\", gender: \"m\" },\n        jwt: { label: \"JWT\", gender: \"m\" },\n        ends_with: { label: \"\u05E7\u05DC\u05D8\", gender: \"m\" },\n        includes: { label: \"\u05E7\u05DC\u05D8\", gender: \"m\" },\n        lowercase: { label: \"\u05E7\u05DC\u05D8\", gender: \"m\" },\n        starts_with: { label: \"\u05E7\u05DC\u05D8\", gender: \"m\" },\n        uppercase: { label: \"\u05E7\u05DC\u05D8\", gender: \"m\" },\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                // Expected type: show without definite article for clearer Hebrew\n                const expectedKey = issue.expected;\n                const expected = TypeDictionary[expectedKey ?? \"\"] ?? typeLabel(expectedKey);\n                // Received: show localized label if known, otherwise constructor/raw\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? TypeNames[receivedType]?.label ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA instanceof ${issue.expected}, \u05D4\u05EA\u05E7\u05D1\u05DC ${received}`;\n                }\n                return `\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${expected}, \u05D4\u05EA\u05E7\u05D1\u05DC ${received}`;\n            }\n            case \"invalid_value\": {\n                if (issue.values.length === 1) {\n                    return `\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D4\u05E2\u05E8\u05DA \u05D7\u05D9\u05D9\u05D1 \u05DC\u05D4\u05D9\u05D5\u05EA ${util.stringifyPrimitive(issue.values[0])}`;\n                }\n                // Join values with proper Hebrew formatting\n                const stringified = issue.values.map((v) => util.stringifyPrimitive(v));\n                if (issue.values.length === 2) {\n                    return `\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D4\u05D0\u05E4\u05E9\u05E8\u05D5\u05D9\u05D5\u05EA \u05D4\u05DE\u05EA\u05D0\u05D9\u05DE\u05D5\u05EA \u05D4\u05DF ${stringified[0]} \u05D0\u05D5 ${stringified[1]}`;\n                }\n                // For 3+ values: \"a\", \"b\" \u05D0\u05D5 \"c\"\n                const lastValue = stringified[stringified.length - 1];\n                const restValues = stringified.slice(0, -1).join(\", \");\n                return `\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D4\u05D0\u05E4\u05E9\u05E8\u05D5\u05D9\u05D5\u05EA \u05D4\u05DE\u05EA\u05D0\u05D9\u05DE\u05D5\u05EA \u05D4\u05DF ${restValues} \u05D0\u05D5 ${lastValue}`;\n            }\n            case \"too_big\": {\n                const sizing = getSizing(issue.origin);\n                const subject = withDefinite(issue.origin ?? \"value\");\n                if (issue.origin === \"string\") {\n                    // Special handling for strings - more natural Hebrew\n                    return `${sizing?.longLabel ?? \"\u05D0\u05E8\u05D5\u05DA\"} \u05DE\u05D3\u05D9: ${subject} \u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05DB\u05D9\u05DC ${issue.maximum.toString()} ${sizing?.unit ?? \"\"} ${issue.inclusive ? \"\u05D0\u05D5 \u05E4\u05D7\u05D5\u05EA\" : \"\u05DC\u05DB\u05DC \u05D4\u05D9\u05D5\u05EA\u05E8\"}`.trim();\n                }\n                if (issue.origin === \"number\") {\n                    // Natural Hebrew for numbers\n                    const comparison = issue.inclusive ? `\u05E7\u05D8\u05DF \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC-${issue.maximum}` : `\u05E7\u05D8\u05DF \u05DE-${issue.maximum}`;\n                    return `\u05D2\u05D3\u05D5\u05DC \u05DE\u05D3\u05D9: ${subject} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${comparison}`;\n                }\n                if (issue.origin === \"array\" || issue.origin === \"set\") {\n                    // Natural Hebrew for arrays and sets\n                    const verb = issue.origin === \"set\" ? \"\u05E6\u05E8\u05D9\u05DB\u05D4\" : \"\u05E6\u05E8\u05D9\u05DA\";\n                    const comparison = issue.inclusive\n                        ? `${issue.maximum} ${sizing?.unit ?? \"\"} \u05D0\u05D5 \u05E4\u05D7\u05D5\u05EA`\n                        : `\u05E4\u05D7\u05D5\u05EA \u05DE-${issue.maximum} ${sizing?.unit ?? \"\"}`;\n                    return `\u05D2\u05D3\u05D5\u05DC \u05DE\u05D3\u05D9: ${subject} ${verb} \u05DC\u05D4\u05DB\u05D9\u05DC ${comparison}`.trim();\n                }\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const be = verbFor(issue.origin ?? \"value\");\n                if (sizing?.unit) {\n                    return `${sizing.longLabel} \u05DE\u05D3\u05D9: ${subject} ${be} ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n                }\n                return `${sizing?.longLabel ?? \"\u05D2\u05D3\u05D5\u05DC\"} \u05DE\u05D3\u05D9: ${subject} ${be} ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const sizing = getSizing(issue.origin);\n                const subject = withDefinite(issue.origin ?? \"value\");\n                if (issue.origin === \"string\") {\n                    // Special handling for strings - more natural Hebrew\n                    return `${sizing?.shortLabel ?? \"\u05E7\u05E6\u05E8\"} \u05DE\u05D3\u05D9: ${subject} \u05E6\u05E8\u05D9\u05DB\u05D4 \u05DC\u05D4\u05DB\u05D9\u05DC ${issue.minimum.toString()} ${sizing?.unit ?? \"\"} ${issue.inclusive ? \"\u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8\" : \"\u05DC\u05E4\u05D7\u05D5\u05EA\"}`.trim();\n                }\n                if (issue.origin === \"number\") {\n                    // Natural Hebrew for numbers\n                    const comparison = issue.inclusive ? `\u05D2\u05D3\u05D5\u05DC \u05D0\u05D5 \u05E9\u05D5\u05D5\u05D4 \u05DC-${issue.minimum}` : `\u05D2\u05D3\u05D5\u05DC \u05DE-${issue.minimum}`;\n                    return `\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${subject} \u05E6\u05E8\u05D9\u05DA \u05DC\u05D4\u05D9\u05D5\u05EA ${comparison}`;\n                }\n                if (issue.origin === \"array\" || issue.origin === \"set\") {\n                    // Natural Hebrew for arrays and sets\n                    const verb = issue.origin === \"set\" ? \"\u05E6\u05E8\u05D9\u05DB\u05D4\" : \"\u05E6\u05E8\u05D9\u05DA\";\n                    // Special case for singular (minimum === 1)\n                    if (issue.minimum === 1 && issue.inclusive) {\n                        const singularPhrase = issue.origin === \"set\" ? \"\u05DC\u05E4\u05D7\u05D5\u05EA \u05E4\u05E8\u05D9\u05D8 \u05D0\u05D7\u05D3\" : \"\u05DC\u05E4\u05D7\u05D5\u05EA \u05E4\u05E8\u05D9\u05D8 \u05D0\u05D7\u05D3\";\n                        return `\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${subject} ${verb} \u05DC\u05D4\u05DB\u05D9\u05DC ${singularPhrase}`;\n                    }\n                    const comparison = issue.inclusive\n                        ? `${issue.minimum} ${sizing?.unit ?? \"\"} \u05D0\u05D5 \u05D9\u05D5\u05EA\u05E8`\n                        : `\u05D9\u05D5\u05EA\u05E8 \u05DE-${issue.minimum} ${sizing?.unit ?? \"\"}`;\n                    return `\u05E7\u05D8\u05DF \u05DE\u05D3\u05D9: ${subject} ${verb} \u05DC\u05D4\u05DB\u05D9\u05DC ${comparison}`.trim();\n                }\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const be = verbFor(issue.origin ?? \"value\");\n                if (sizing?.unit) {\n                    return `${sizing.shortLabel} \u05DE\u05D3\u05D9: ${subject} ${be} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `${sizing?.shortLabel ?? \"\u05E7\u05D8\u05DF\"} \u05DE\u05D3\u05D9: ${subject} ${be} ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                // These apply to strings \u2014 use feminine grammar + \u05D4\u05F3 \u05D4\u05D9\u05D3\u05D9\u05E2\u05D4\n                if (_issue.format === \"starts_with\")\n                    return `\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05EA\u05D7\u05D9\u05DC \u05D1 \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05E1\u05EA\u05D9\u05D9\u05DD \u05D1 \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05DB\u05DC\u05D5\u05DC \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `\u05D4\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA \u05D7\u05D9\u05D9\u05D1\u05EA \u05DC\u05D4\u05EA\u05D0\u05D9\u05DD \u05DC\u05EA\u05D1\u05E0\u05D9\u05EA ${_issue.pattern}`;\n                // Handle gender agreement for formats\n                const nounEntry = FormatDictionary[_issue.format];\n                const noun = nounEntry?.label ?? _issue.format;\n                const gender = nounEntry?.gender ?? \"m\";\n                const adjective = gender === \"f\" ? \"\u05EA\u05E7\u05D9\u05E0\u05D4\" : \"\u05EA\u05E7\u05D9\u05DF\";\n                return `${noun} \u05DC\u05D0 ${adjective}`;\n            }\n            case \"not_multiple_of\":\n                return `\u05DE\u05E1\u05E4\u05E8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF: \u05D7\u05D9\u05D9\u05D1 \u05DC\u05D4\u05D9\u05D5\u05EA \u05DE\u05DB\u05E4\u05DC\u05D4 \u05E9\u05DC ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `\u05DE\u05E4\u05EA\u05D7${issue.keys.length > 1 ? \"\u05D5\u05EA\" : \"\"} \u05DC\u05D0 \u05DE\u05D6\u05D5\u05D4${issue.keys.length > 1 ? \"\u05D9\u05DD\" : \"\u05D4\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\": {\n                return `\u05E9\u05D3\u05D4 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF \u05D1\u05D0\u05D5\u05D1\u05D9\u05D9\u05E7\u05D8`;\n            }\n            case \"invalid_union\":\n                return \"\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF\";\n            case \"invalid_element\": {\n                const place = withDefinite(issue.origin ?? \"array\");\n                return `\u05E2\u05E8\u05DA \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF \u05D1${place}`;\n            }\n            default:\n                return `\u05E7\u05DC\u05D8 \u05DC\u05D0 \u05EA\u05E7\u05D9\u05DF`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"karakter\", verb: \"legyen\" },\n        file: { unit: \"byte\", verb: \"legyen\" },\n        array: { unit: \"elem\", verb: \"legyen\" },\n        set: { unit: \"elem\", verb: \"legyen\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"bemenet\",\n        email: \"email c\u00EDm\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO id\u0151b\u00E9lyeg\",\n        date: \"ISO d\u00E1tum\",\n        time: \"ISO id\u0151\",\n        duration: \"ISO id\u0151intervallum\",\n        ipv4: \"IPv4 c\u00EDm\",\n        ipv6: \"IPv6 c\u00EDm\",\n        cidrv4: \"IPv4 tartom\u00E1ny\",\n        cidrv6: \"IPv6 tartom\u00E1ny\",\n        base64: \"base64-k\u00F3dolt string\",\n        base64url: \"base64url-k\u00F3dolt string\",\n        json_string: \"JSON string\",\n        e164: \"E.164 sz\u00E1m\",\n        jwt: \"JWT\",\n        template_literal: \"bemenet\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"sz\u00E1m\",\n        array: \"t\u00F6mb\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `\u00C9rv\u00E9nytelen bemenet: a v\u00E1rt \u00E9rt\u00E9k instanceof ${issue.expected}, a kapott \u00E9rt\u00E9k ${received}`;\n                }\n                return `\u00C9rv\u00E9nytelen bemenet: a v\u00E1rt \u00E9rt\u00E9k ${expected}, a kapott \u00E9rt\u00E9k ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `\u00C9rv\u00E9nytelen bemenet: a v\u00E1rt \u00E9rt\u00E9k ${util.stringifyPrimitive(issue.values[0])}`;\n                return `\u00C9rv\u00E9nytelen opci\u00F3: valamelyik \u00E9rt\u00E9k v\u00E1rt ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `T\u00FAl nagy: ${issue.origin ?? \"\u00E9rt\u00E9k\"} m\u00E9rete t\u00FAl nagy ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elem\"}`;\n                return `T\u00FAl nagy: a bemeneti \u00E9rt\u00E9k ${issue.origin ?? \"\u00E9rt\u00E9k\"} t\u00FAl nagy: ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `T\u00FAl kicsi: a bemeneti \u00E9rt\u00E9k ${issue.origin} m\u00E9rete t\u00FAl kicsi ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `T\u00FAl kicsi: a bemeneti \u00E9rt\u00E9k ${issue.origin} t\u00FAl kicsi ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `\u00C9rv\u00E9nytelen string: \"${_issue.prefix}\" \u00E9rt\u00E9kkel kell kezd\u0151dnie`;\n                if (_issue.format === \"ends_with\")\n                    return `\u00C9rv\u00E9nytelen string: \"${_issue.suffix}\" \u00E9rt\u00E9kkel kell v\u00E9gz\u0151dnie`;\n                if (_issue.format === \"includes\")\n                    return `\u00C9rv\u00E9nytelen string: \"${_issue.includes}\" \u00E9rt\u00E9ket kell tartalmaznia`;\n                if (_issue.format === \"regex\")\n                    return `\u00C9rv\u00E9nytelen string: ${_issue.pattern} mint\u00E1nak kell megfelelnie`;\n                return `\u00C9rv\u00E9nytelen ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `\u00C9rv\u00E9nytelen sz\u00E1m: ${issue.divisor} t\u00F6bbsz\u00F6r\u00F6s\u00E9nek kell lennie`;\n            case \"unrecognized_keys\":\n                return `Ismeretlen kulcs${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `\u00C9rv\u00E9nytelen kulcs ${issue.origin}`;\n            case \"invalid_union\":\n                return \"\u00C9rv\u00E9nytelen bemenet\";\n            case \"invalid_element\":\n                return `\u00C9rv\u00E9nytelen \u00E9rt\u00E9k: ${issue.origin}`;\n            default:\n                return `\u00C9rv\u00E9nytelen bemenet`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nfunction getArmenianPlural(count, one, many) {\n    return Math.abs(count) === 1 ? one : many;\n}\nfunction withDefiniteArticle(word) {\n    if (!word)\n        return \"\";\n    const vowels = [\"\u0561\", \"\u0565\", \"\u0568\", \"\u056B\", \"\u0578\", \"\u0578\u0582\", \"\u0585\"];\n    const lastChar = word[word.length - 1];\n    return word + (vowels.includes(lastChar) ? \"\u0576\" : \"\u0568\");\n}\nconst error = () => {\n    const Sizable = {\n        string: {\n            unit: {\n                one: \"\u0576\u0577\u0561\u0576\",\n                many: \"\u0576\u0577\u0561\u0576\u0576\u0565\u0580\",\n            },\n            verb: \"\u0578\u0582\u0576\u0565\u0576\u0561\u056C\",\n        },\n        file: {\n            unit: {\n                one: \"\u0562\u0561\u0575\u0569\",\n                many: \"\u0562\u0561\u0575\u0569\u0565\u0580\",\n            },\n            verb: \"\u0578\u0582\u0576\u0565\u0576\u0561\u056C\",\n        },\n        array: {\n            unit: {\n                one: \"\u057F\u0561\u0580\u0580\",\n                many: \"\u057F\u0561\u0580\u0580\u0565\u0580\",\n            },\n            verb: \"\u0578\u0582\u0576\u0565\u0576\u0561\u056C\",\n        },\n        set: {\n            unit: {\n                one: \"\u057F\u0561\u0580\u0580\",\n                many: \"\u057F\u0561\u0580\u0580\u0565\u0580\",\n            },\n            verb: \"\u0578\u0582\u0576\u0565\u0576\u0561\u056C\",\n        },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"\u0574\u0578\u0582\u057F\u0584\",\n        email: \"\u0567\u056C. \u0570\u0561\u057D\u0581\u0565\",\n        url: \"URL\",\n        emoji: \"\u0567\u0574\u0578\u057B\u056B\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO \u0561\u0574\u057D\u0561\u0569\u056B\u057E \u0587 \u056A\u0561\u0574\",\n        date: \"ISO \u0561\u0574\u057D\u0561\u0569\u056B\u057E\",\n        time: \"ISO \u056A\u0561\u0574\",\n        duration: \"ISO \u057F\u0587\u0578\u0572\u0578\u0582\u0569\u0575\u0578\u0582\u0576\",\n        ipv4: \"IPv4 \u0570\u0561\u057D\u0581\u0565\",\n        ipv6: \"IPv6 \u0570\u0561\u057D\u0581\u0565\",\n        cidrv4: \"IPv4 \u0574\u056B\u057B\u0561\u056F\u0561\u0575\u0584\",\n        cidrv6: \"IPv6 \u0574\u056B\u057B\u0561\u056F\u0561\u0575\u0584\",\n        base64: \"base64 \u0571\u0587\u0561\u0579\u0561\u0583\u0578\u057E \u057F\u0578\u0572\",\n        base64url: \"base64url \u0571\u0587\u0561\u0579\u0561\u0583\u0578\u057E \u057F\u0578\u0572\",\n        json_string: \"JSON \u057F\u0578\u0572\",\n        e164: \"E.164 \u0570\u0561\u0574\u0561\u0580\",\n        jwt: \"JWT\",\n        template_literal: \"\u0574\u0578\u0582\u057F\u0584\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"\u0569\u056B\u057E\",\n        array: \"\u0566\u0561\u0576\u0563\u057E\u0561\u056E\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 instanceof ${issue.expected}, \u057D\u057F\u0561\u0581\u057E\u0565\u056C \u0567 ${received}`;\n                }\n                return `\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 ${expected}, \u057D\u057F\u0561\u0581\u057E\u0565\u056C \u0567 ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 ${util.stringifyPrimitive(issue.values[1])}`;\n                return `\u054D\u056D\u0561\u056C \u057F\u0561\u0580\u0562\u0565\u0580\u0561\u056F\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567\u0580 \u0570\u0565\u057F\u0587\u0575\u0561\u056C\u0576\u0565\u0580\u056B\u0581 \u0574\u0565\u056F\u0568\u055D ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    const maxValue = Number(issue.maximum);\n                    const unit = getArmenianPlural(maxValue, sizing.unit.one, sizing.unit.many);\n                    return `\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0574\u0565\u056E \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${withDefiniteArticle(issue.origin ?? \"\u0561\u0580\u056A\u0565\u0584\")} \u056F\u0578\u0582\u0576\u0565\u0576\u0561 ${adj}${issue.maximum.toString()} ${unit}`;\n                }\n                return `\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0574\u0565\u056E \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${withDefiniteArticle(issue.origin ?? \"\u0561\u0580\u056A\u0565\u0584\")} \u056C\u056B\u0576\u056B ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    const minValue = Number(issue.minimum);\n                    const unit = getArmenianPlural(minValue, sizing.unit.one, sizing.unit.many);\n                    return `\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0583\u0578\u0584\u0580 \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${withDefiniteArticle(issue.origin)} \u056F\u0578\u0582\u0576\u0565\u0576\u0561 ${adj}${issue.minimum.toString()} ${unit}`;\n                }\n                return `\u0549\u0561\u0583\u0561\u0566\u0561\u0576\u0581 \u0583\u0578\u0584\u0580 \u0561\u0580\u056A\u0565\u0584\u2024 \u057D\u057A\u0561\u057D\u057E\u0578\u0582\u0574 \u0567, \u0578\u0580 ${withDefiniteArticle(issue.origin)} \u056C\u056B\u0576\u056B ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u057D\u056F\u057D\u057E\u056B \"${_issue.prefix}\"-\u0578\u057E`;\n                if (_issue.format === \"ends_with\")\n                    return `\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0561\u057E\u0561\u0580\u057F\u057E\u056B \"${_issue.suffix}\"-\u0578\u057E`;\n                if (_issue.format === \"includes\")\n                    return `\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u057A\u0561\u0580\u0578\u0582\u0576\u0561\u056F\u056B \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `\u054D\u056D\u0561\u056C \u057F\u0578\u0572\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0570\u0561\u0574\u0561\u057A\u0561\u057F\u0561\u057D\u056D\u0561\u0576\u056B ${_issue.pattern} \u0571\u0587\u0561\u0579\u0561\u0583\u056B\u0576`;\n                return `\u054D\u056D\u0561\u056C ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `\u054D\u056D\u0561\u056C \u0569\u056B\u057E\u2024 \u057A\u0565\u057F\u0584 \u0567 \u0562\u0561\u0566\u0574\u0561\u057A\u0561\u057F\u056B\u056F \u056C\u056B\u0576\u056B ${issue.divisor}-\u056B`;\n            case \"unrecognized_keys\":\n                return `\u0549\u0573\u0561\u0576\u0561\u0579\u057E\u0561\u056E \u0562\u0561\u0576\u0561\u056C\u056B${issue.keys.length > 1 ? \"\u0576\u0565\u0580\" : \"\"}. ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `\u054D\u056D\u0561\u056C \u0562\u0561\u0576\u0561\u056C\u056B ${withDefiniteArticle(issue.origin)}-\u0578\u0582\u0574`;\n            case \"invalid_union\":\n                return \"\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574\";\n            case \"invalid_element\":\n                return `\u054D\u056D\u0561\u056C \u0561\u0580\u056A\u0565\u0584 ${withDefiniteArticle(issue.origin)}-\u0578\u0582\u0574`;\n            default:\n                return `\u054D\u056D\u0561\u056C \u0574\u0578\u0582\u057F\u0584\u0561\u0563\u0580\u0578\u0582\u0574`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"karakter\", verb: \"memiliki\" },\n        file: { unit: \"byte\", verb: \"memiliki\" },\n        array: { unit: \"item\", verb: \"memiliki\" },\n        set: { unit: \"item\", verb: \"memiliki\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"input\",\n        email: \"alamat email\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"tanggal dan waktu format ISO\",\n        date: \"tanggal format ISO\",\n        time: \"jam format ISO\",\n        duration: \"durasi format ISO\",\n        ipv4: \"alamat IPv4\",\n        ipv6: \"alamat IPv6\",\n        cidrv4: \"rentang alamat IPv4\",\n        cidrv6: \"rentang alamat IPv6\",\n        base64: \"string dengan enkode base64\",\n        base64url: \"string dengan enkode base64url\",\n        json_string: \"string JSON\",\n        e164: \"angka E.164\",\n        jwt: \"JWT\",\n        template_literal: \"input\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Input tidak valid: diharapkan instanceof ${issue.expected}, diterima ${received}`;\n                }\n                return `Input tidak valid: diharapkan ${expected}, diterima ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Input tidak valid: diharapkan ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Pilihan tidak valid: diharapkan salah satu dari ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Terlalu besar: diharapkan ${issue.origin ?? \"value\"} memiliki ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elemen\"}`;\n                return `Terlalu besar: diharapkan ${issue.origin ?? \"value\"} menjadi ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Terlalu kecil: diharapkan ${issue.origin} memiliki ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Terlalu kecil: diharapkan ${issue.origin} menjadi ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `String tidak valid: harus dimulai dengan \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `String tidak valid: harus berakhir dengan \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `String tidak valid: harus menyertakan \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `String tidak valid: harus sesuai pola ${_issue.pattern}`;\n                return `${FormatDictionary[_issue.format] ?? issue.format} tidak valid`;\n            }\n            case \"not_multiple_of\":\n                return `Angka tidak valid: harus kelipatan dari ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Kunci tidak dikenali ${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Kunci tidak valid di ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Input tidak valid\";\n            case \"invalid_element\":\n                return `Nilai tidak valid di ${issue.origin}`;\n            default:\n                return `Input tidak valid`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"stafi\", verb: \"a\u00F0 hafa\" },\n        file: { unit: \"b\u00E6ti\", verb: \"a\u00F0 hafa\" },\n        array: { unit: \"hluti\", verb: \"a\u00F0 hafa\" },\n        set: { unit: \"hluti\", verb: \"a\u00F0 hafa\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"gildi\",\n        email: \"netfang\",\n        url: \"vefsl\u00F3\u00F0\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO dagsetning og t\u00EDmi\",\n        date: \"ISO dagsetning\",\n        time: \"ISO t\u00EDmi\",\n        duration: \"ISO t\u00EDmalengd\",\n        ipv4: \"IPv4 address\",\n        ipv6: \"IPv6 address\",\n        cidrv4: \"IPv4 range\",\n        cidrv6: \"IPv6 range\",\n        base64: \"base64-encoded strengur\",\n        base64url: \"base64url-encoded strengur\",\n        json_string: \"JSON strengur\",\n        e164: \"E.164 t\u00F6lugildi\",\n        jwt: \"JWT\",\n        template_literal: \"gildi\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"n\u00FAmer\",\n        array: \"fylki\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Rangt gildi: \u00DE\u00FA sl\u00F3st inn ${received} \u00FEar sem \u00E1 a\u00F0 vera instanceof ${issue.expected}`;\n                }\n                return `Rangt gildi: \u00DE\u00FA sl\u00F3st inn ${received} \u00FEar sem \u00E1 a\u00F0 vera ${expected}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Rangt gildi: gert r\u00E1\u00F0 fyrir ${util.stringifyPrimitive(issue.values[0])}`;\n                return `\u00D3gilt val: m\u00E1 vera eitt af eftirfarandi ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Of st\u00F3rt: gert er r\u00E1\u00F0 fyrir a\u00F0 ${issue.origin ?? \"gildi\"} hafi ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"hluti\"}`;\n                return `Of st\u00F3rt: gert er r\u00E1\u00F0 fyrir a\u00F0 ${issue.origin ?? \"gildi\"} s\u00E9 ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Of l\u00EDti\u00F0: gert er r\u00E1\u00F0 fyrir a\u00F0 ${issue.origin} hafi ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Of l\u00EDti\u00F0: gert er r\u00E1\u00F0 fyrir a\u00F0 ${issue.origin} s\u00E9 ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `\u00D3gildur strengur: ver\u00F0ur a\u00F0 byrja \u00E1 \"${_issue.prefix}\"`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `\u00D3gildur strengur: ver\u00F0ur a\u00F0 enda \u00E1 \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `\u00D3gildur strengur: ver\u00F0ur a\u00F0 innihalda \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `\u00D3gildur strengur: ver\u00F0ur a\u00F0 fylgja mynstri ${_issue.pattern}`;\n                return `Rangt ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `R\u00F6ng tala: ver\u00F0ur a\u00F0 vera margfeldi af ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `\u00D3\u00FEekkt ${issue.keys.length > 1 ? \"ir lyklar\" : \"ur lykill\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Rangur lykill \u00ED ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Rangt gildi\";\n            case \"invalid_element\":\n                return `Rangt gildi \u00ED ${issue.origin}`;\n            default:\n                return `Rangt gildi`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"caratteri\", verb: \"avere\" },\n        file: { unit: \"byte\", verb: \"avere\" },\n        array: { unit: \"elementi\", verb: \"avere\" },\n        set: { unit: \"elementi\", verb: \"avere\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"input\",\n        email: \"indirizzo email\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"data e ora ISO\",\n        date: \"data ISO\",\n        time: \"ora ISO\",\n        duration: \"durata ISO\",\n        ipv4: \"indirizzo IPv4\",\n        ipv6: \"indirizzo IPv6\",\n        cidrv4: \"intervallo IPv4\",\n        cidrv6: \"intervallo IPv6\",\n        base64: \"stringa codificata in base64\",\n        base64url: \"URL codificata in base64\",\n        json_string: \"stringa JSON\",\n        e164: \"numero E.164\",\n        jwt: \"JWT\",\n        template_literal: \"input\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"numero\",\n        array: \"vettore\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Input non valido: atteso instanceof ${issue.expected}, ricevuto ${received}`;\n                }\n                return `Input non valido: atteso ${expected}, ricevuto ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Input non valido: atteso ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Opzione non valida: atteso uno tra ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Troppo grande: ${issue.origin ?? \"valore\"} deve avere ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementi\"}`;\n                return `Troppo grande: ${issue.origin ?? \"valore\"} deve essere ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Troppo piccolo: ${issue.origin} deve avere ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Troppo piccolo: ${issue.origin} deve essere ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Stringa non valida: deve iniziare con \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `Stringa non valida: deve terminare con \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Stringa non valida: deve includere \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Stringa non valida: deve corrispondere al pattern ${_issue.pattern}`;\n                return `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Numero non valido: deve essere un multiplo di ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Chiav${issue.keys.length > 1 ? \"i\" : \"e\"} non riconosciut${issue.keys.length > 1 ? \"e\" : \"a\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Chiave non valida in ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Input non valido\";\n            case \"invalid_element\":\n                return `Valore non valido in ${issue.origin}`;\n            default:\n                return `Input non valido`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"\u6587\u5B57\", verb: \"\u3067\u3042\u308B\" },\n        file: { unit: \"\u30D0\u30A4\u30C8\", verb: \"\u3067\u3042\u308B\" },\n        array: { unit: \"\u8981\u7D20\", verb: \"\u3067\u3042\u308B\" },\n        set: { unit: \"\u8981\u7D20\", verb: \"\u3067\u3042\u308B\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"\u5165\u529B\u5024\",\n        email: \"\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\",\n        url: \"URL\",\n        emoji: \"\u7D75\u6587\u5B57\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO\u65E5\u6642\",\n        date: \"ISO\u65E5\u4ED8\",\n        time: \"ISO\u6642\u523B\",\n        duration: \"ISO\u671F\u9593\",\n        ipv4: \"IPv4\u30A2\u30C9\u30EC\u30B9\",\n        ipv6: \"IPv6\u30A2\u30C9\u30EC\u30B9\",\n        cidrv4: \"IPv4\u7BC4\u56F2\",\n        cidrv6: \"IPv6\u7BC4\u56F2\",\n        base64: \"base64\u30A8\u30F3\u30B3\u30FC\u30C9\u6587\u5B57\u5217\",\n        base64url: \"base64url\u30A8\u30F3\u30B3\u30FC\u30C9\u6587\u5B57\u5217\",\n        json_string: \"JSON\u6587\u5B57\u5217\",\n        e164: \"E.164\u756A\u53F7\",\n        jwt: \"JWT\",\n        template_literal: \"\u5165\u529B\u5024\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"\u6570\u5024\",\n        array: \"\u914D\u5217\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `\u7121\u52B9\u306A\u5165\u529B: instanceof ${issue.expected}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F\u304C\u3001${received}\u304C\u5165\u529B\u3055\u308C\u307E\u3057\u305F`;\n                }\n                return `\u7121\u52B9\u306A\u5165\u529B: ${expected}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F\u304C\u3001${received}\u304C\u5165\u529B\u3055\u308C\u307E\u3057\u305F`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `\u7121\u52B9\u306A\u5165\u529B: ${util.stringifyPrimitive(issue.values[0])}\u304C\u671F\u5F85\u3055\u308C\u307E\u3057\u305F`;\n                return `\u7121\u52B9\u306A\u9078\u629E: ${util.joinValues(issue.values, \"\u3001\")}\u306E\u3044\u305A\u308C\u304B\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"\u4EE5\u4E0B\u3067\u3042\u308B\" : \"\u3088\u308A\u5C0F\u3055\u3044\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `\u5927\u304D\u3059\u304E\u308B\u5024: ${issue.origin ?? \"\u5024\"}\u306F${issue.maximum.toString()}${sizing.unit ?? \"\u8981\u7D20\"}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n                return `\u5927\u304D\u3059\u304E\u308B\u5024: ${issue.origin ?? \"\u5024\"}\u306F${issue.maximum.toString()}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \"\u4EE5\u4E0A\u3067\u3042\u308B\" : \"\u3088\u308A\u5927\u304D\u3044\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `\u5C0F\u3055\u3059\u304E\u308B\u5024: ${issue.origin}\u306F${issue.minimum.toString()}${sizing.unit}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n                return `\u5C0F\u3055\u3059\u304E\u308B\u5024: ${issue.origin}\u306F${issue.minimum.toString()}${adj}\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `\u7121\u52B9\u306A\u6587\u5B57\u5217: \"${_issue.prefix}\"\u3067\u59CB\u307E\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n                if (_issue.format === \"ends_with\")\n                    return `\u7121\u52B9\u306A\u6587\u5B57\u5217: \"${_issue.suffix}\"\u3067\u7D42\u308F\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n                if (_issue.format === \"includes\")\n                    return `\u7121\u52B9\u306A\u6587\u5B57\u5217: \"${_issue.includes}\"\u3092\u542B\u3080\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n                if (_issue.format === \"regex\")\n                    return `\u7121\u52B9\u306A\u6587\u5B57\u5217: \u30D1\u30BF\u30FC\u30F3${_issue.pattern}\u306B\u4E00\u81F4\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n                return `\u7121\u52B9\u306A${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `\u7121\u52B9\u306A\u6570\u5024: ${issue.divisor}\u306E\u500D\u6570\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059`;\n            case \"unrecognized_keys\":\n                return `\u8A8D\u8B58\u3055\u308C\u3066\u3044\u306A\u3044\u30AD\u30FC${issue.keys.length > 1 ? \"\u7FA4\" : \"\"}: ${util.joinValues(issue.keys, \"\u3001\")}`;\n            case \"invalid_key\":\n                return `${issue.origin}\u5185\u306E\u7121\u52B9\u306A\u30AD\u30FC`;\n            case \"invalid_union\":\n                return \"\u7121\u52B9\u306A\u5165\u529B\";\n            case \"invalid_element\":\n                return `${issue.origin}\u5185\u306E\u7121\u52B9\u306A\u5024`;\n            default:\n                return `\u7121\u52B9\u306A\u5165\u529B`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"\u10E1\u10D8\u10DB\u10D1\u10DD\u10DA\u10DD\", verb: \"\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1\" },\n        file: { unit: \"\u10D1\u10D0\u10D8\u10E2\u10D8\", verb: \"\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1\" },\n        array: { unit: \"\u10D4\u10DA\u10D4\u10DB\u10D4\u10DC\u10E2\u10D8\", verb: \"\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1\" },\n        set: { unit: \"\u10D4\u10DA\u10D4\u10DB\u10D4\u10DC\u10E2\u10D8\", verb: \"\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"\u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0\",\n        email: \"\u10D4\u10DA-\u10E4\u10DD\u10E1\u10E2\u10D8\u10E1 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8\",\n        url: \"URL\",\n        emoji: \"\u10D4\u10DB\u10DD\u10EF\u10D8\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"\u10D7\u10D0\u10E0\u10D8\u10E6\u10D8-\u10D3\u10E0\u10DD\",\n        date: \"\u10D7\u10D0\u10E0\u10D8\u10E6\u10D8\",\n        time: \"\u10D3\u10E0\u10DD\",\n        duration: \"\u10EE\u10D0\u10DC\u10D2\u10E0\u10EB\u10DA\u10D8\u10D5\u10DD\u10D1\u10D0\",\n        ipv4: \"IPv4 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8\",\n        ipv6: \"IPv6 \u10DB\u10D8\u10E1\u10D0\u10DB\u10D0\u10E0\u10D7\u10D8\",\n        cidrv4: \"IPv4 \u10D3\u10D8\u10D0\u10DE\u10D0\u10D6\u10DD\u10DC\u10D8\",\n        cidrv6: \"IPv6 \u10D3\u10D8\u10D0\u10DE\u10D0\u10D6\u10DD\u10DC\u10D8\",\n        base64: \"base64-\u10D9\u10DD\u10D3\u10D8\u10E0\u10D4\u10D1\u10E3\u10DA\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8\",\n        base64url: \"base64url-\u10D9\u10DD\u10D3\u10D8\u10E0\u10D4\u10D1\u10E3\u10DA\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8\",\n        json_string: \"JSON \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8\",\n        e164: \"E.164 \u10DC\u10DD\u10DB\u10D4\u10E0\u10D8\",\n        jwt: \"JWT\",\n        template_literal: \"\u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"\u10E0\u10D8\u10EA\u10EE\u10D5\u10D8\",\n        string: \"\u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8\",\n        boolean: \"\u10D1\u10E3\u10DA\u10D4\u10D0\u10DC\u10D8\",\n        function: \"\u10E4\u10E3\u10DC\u10E5\u10EA\u10D8\u10D0\",\n        array: \"\u10DB\u10D0\u10E1\u10D8\u10D5\u10D8\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 instanceof ${issue.expected}, \u10DB\u10D8\u10E6\u10D4\u10D1\u10E3\u10DA\u10D8 ${received}`;\n                }\n                return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${expected}, \u10DB\u10D8\u10E6\u10D4\u10D1\u10E3\u10DA\u10D8 ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${util.stringifyPrimitive(issue.values[0])}`;\n                return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D5\u10D0\u10E0\u10D8\u10D0\u10DC\u10E2\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8\u10D0 \u10D4\u10E0\u10D7-\u10D4\u10E0\u10D7\u10D8 ${util.joinValues(issue.values, \"|\")}-\u10D3\u10D0\u10DC`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10D3\u10D8\u10D3\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${issue.origin ?? \"\u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit}`;\n                return `\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10D3\u10D8\u10D3\u10D8: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${issue.origin ?? \"\u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0\"} \u10D8\u10E7\u10DD\u10E1 ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10DE\u10D0\u10E2\u10D0\u10E0\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `\u10D6\u10D4\u10D3\u10DB\u10D4\u10E2\u10D0\u10D3 \u10DE\u10D0\u10E2\u10D0\u10E0\u10D0: \u10DB\u10DD\u10E1\u10D0\u10DA\u10DD\u10D3\u10DC\u10D4\u10DA\u10D8 ${issue.origin} \u10D8\u10E7\u10DD\u10E1 ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10D8\u10EC\u10E7\u10D4\u10D1\u10DD\u10D3\u10D4\u10E1 \"${_issue.prefix}\"-\u10D8\u10D7`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10DB\u10D7\u10D0\u10D5\u10E0\u10D3\u10D4\u10D1\u10DD\u10D3\u10D4\u10E1 \"${_issue.suffix}\"-\u10D8\u10D7`;\n                if (_issue.format === \"includes\")\n                    return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1 \"${_issue.includes}\"-\u10E1`;\n                if (_issue.format === \"regex\")\n                    return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E1\u10E2\u10E0\u10D8\u10DC\u10D2\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D4\u10E1\u10D0\u10D1\u10D0\u10DB\u10D4\u10D1\u10DD\u10D3\u10D4\u10E1 \u10E8\u10D0\u10D1\u10DA\u10DD\u10DC\u10E1 ${_issue.pattern}`;\n                return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E0\u10D8\u10EA\u10EE\u10D5\u10D8: \u10E3\u10DC\u10D3\u10D0 \u10D8\u10E7\u10DD\u10E1 ${issue.divisor}-\u10D8\u10E1 \u10EF\u10D4\u10E0\u10D0\u10D3\u10D8`;\n            case \"unrecognized_keys\":\n                return `\u10E3\u10EA\u10DC\u10DD\u10D1\u10D8 \u10D2\u10D0\u10E1\u10D0\u10E6\u10D4\u10D1${issue.keys.length > 1 ? \"\u10D4\u10D1\u10D8\" : \"\u10D8\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10D2\u10D0\u10E1\u10D0\u10E6\u10D4\u10D1\u10D8 ${issue.origin}-\u10E8\u10D8`;\n            case \"invalid_union\":\n                return \"\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0\";\n            case \"invalid_element\":\n                return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10DB\u10DC\u10D8\u10E8\u10D5\u10DC\u10D4\u10DA\u10DD\u10D1\u10D0 ${issue.origin}-\u10E8\u10D8`;\n            default:\n                return `\u10D0\u10E0\u10D0\u10E1\u10EC\u10DD\u10E0\u10D8 \u10E8\u10D4\u10E7\u10D5\u10D0\u10DC\u10D0`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"\u178F\u17BD\u17A2\u1780\u17D2\u179F\u179A\", verb: \"\u1782\u17BD\u179A\u1798\u17B6\u1793\" },\n        file: { unit: \"\u1794\u17C3\", verb: \"\u1782\u17BD\u179A\u1798\u17B6\u1793\" },\n        array: { unit: \"\u1792\u17B6\u178F\u17BB\", verb: \"\u1782\u17BD\u179A\u1798\u17B6\u1793\" },\n        set: { unit: \"\u1792\u17B6\u178F\u17BB\", verb: \"\u1782\u17BD\u179A\u1798\u17B6\u1793\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\",\n        email: \"\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793\u17A2\u17CA\u17B8\u1798\u17C2\u179B\",\n        url: \"URL\",\n        emoji: \"\u179F\u1789\u17D2\u1789\u17B6\u17A2\u17B6\u179A\u1798\u17D2\u1798\u178E\u17CD\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"\u1780\u17B6\u179B\u1794\u179A\u17B7\u1785\u17D2\u1786\u17C1\u1791 \u1793\u17B7\u1784\u1798\u17C9\u17C4\u1784 ISO\",\n        date: \"\u1780\u17B6\u179B\u1794\u179A\u17B7\u1785\u17D2\u1786\u17C1\u1791 ISO\",\n        time: \"\u1798\u17C9\u17C4\u1784 ISO\",\n        duration: \"\u179A\u1799\u17C8\u1796\u17C1\u179B ISO\",\n        ipv4: \"\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv4\",\n        ipv6: \"\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv6\",\n        cidrv4: \"\u178A\u17C2\u1793\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv4\",\n        cidrv6: \"\u178A\u17C2\u1793\u17A2\u17B6\u179F\u1799\u178A\u17D2\u178B\u17B6\u1793 IPv6\",\n        base64: \"\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u17A2\u17CA\u17B7\u1780\u17BC\u178A base64\",\n        base64url: \"\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u17A2\u17CA\u17B7\u1780\u17BC\u178A base64url\",\n        json_string: \"\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A JSON\",\n        e164: \"\u179B\u17C1\u1781 E.164\",\n        jwt: \"JWT\",\n        template_literal: \"\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"\u179B\u17C1\u1781\",\n        array: \"\u17A2\u17B6\u179A\u17C1 (Array)\",\n        null: \"\u1782\u17D2\u1798\u17B6\u1793\u178F\u1798\u17D2\u179B\u17C3 (null)\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A instanceof ${issue.expected} \u1794\u17C9\u17BB\u1793\u17D2\u178F\u17C2\u1791\u1791\u17BD\u179B\u1794\u17B6\u1793 ${received}`;\n                }\n                return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${expected} \u1794\u17C9\u17BB\u1793\u17D2\u178F\u17C2\u1791\u1791\u17BD\u179B\u1794\u17B6\u1793 ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1794\u1789\u17D2\u1785\u17BC\u179B\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${util.stringifyPrimitive(issue.values[0])}`;\n                return `\u1787\u1798\u17D2\u179A\u17BE\u179F\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1787\u17B6\u1798\u17BD\u1799\u1780\u17D2\u1793\u17BB\u1784\u1785\u17C6\u178E\u17C4\u1798 ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `\u1792\u17C6\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue.origin ?? \"\u178F\u1798\u17D2\u179B\u17C3\"} ${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"\u1792\u17B6\u178F\u17BB\"}`;\n                return `\u1792\u17C6\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue.origin ?? \"\u178F\u1798\u17D2\u179B\u17C3\"} ${adj} ${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `\u178F\u17BC\u1785\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue.origin} ${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `\u178F\u17BC\u1785\u1796\u17C1\u1780\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1780\u17B6\u179A ${issue.origin} ${adj} ${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1785\u17B6\u1794\u17CB\u1795\u17D2\u178F\u17BE\u1798\u178A\u17C4\u1799 \"${_issue.prefix}\"`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1794\u1789\u17D2\u1785\u1794\u17CB\u178A\u17C4\u1799 \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u1798\u17B6\u1793 \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `\u1781\u17D2\u179F\u17C2\u17A2\u1780\u17D2\u179F\u179A\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u178F\u17C2\u1795\u17D2\u1782\u17BC\u1795\u17D2\u1782\u1784\u1793\u17B9\u1784\u1791\u1798\u17D2\u179A\u1784\u17CB\u178A\u17C2\u179B\u1794\u17B6\u1793\u1780\u17C6\u178E\u178F\u17CB ${_issue.pattern}`;\n                return `\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `\u179B\u17C1\u1781\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u17D6 \u178F\u17D2\u179A\u17BC\u179C\u178F\u17C2\u1787\u17B6\u1796\u17A0\u17BB\u1782\u17BB\u178E\u1793\u17C3 ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `\u179A\u1780\u1783\u17BE\u1789\u179F\u17C4\u1798\u17B7\u1793\u179F\u17D2\u1782\u17B6\u179B\u17CB\u17D6 ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `\u179F\u17C4\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u1793\u17C5\u1780\u17D2\u1793\u17BB\u1784 ${issue.origin}`;\n            case \"invalid_union\":\n                return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C`;\n            case \"invalid_element\":\n                return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C\u1793\u17C5\u1780\u17D2\u1793\u17BB\u1784 ${issue.origin}`;\n            default:\n                return `\u1791\u17B7\u1793\u17D2\u1793\u1793\u17D0\u1799\u1798\u17B7\u1793\u178F\u17D2\u179A\u17B9\u1798\u178F\u17D2\u179A\u17BC\u179C`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import km from \"./km.js\";\n/** @deprecated Use `km` instead. */\nexport default function () {\n    return km();\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"\uBB38\uC790\", verb: \"to have\" },\n        file: { unit: \"\uBC14\uC774\uD2B8\", verb: \"to have\" },\n        array: { unit: \"\uAC1C\", verb: \"to have\" },\n        set: { unit: \"\uAC1C\", verb: \"to have\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"\uC785\uB825\",\n        email: \"\uC774\uBA54\uC77C \uC8FC\uC18C\",\n        url: \"URL\",\n        emoji: \"\uC774\uBAA8\uC9C0\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO \uB0A0\uC9DC\uC2DC\uAC04\",\n        date: \"ISO \uB0A0\uC9DC\",\n        time: \"ISO \uC2DC\uAC04\",\n        duration: \"ISO \uAE30\uAC04\",\n        ipv4: \"IPv4 \uC8FC\uC18C\",\n        ipv6: \"IPv6 \uC8FC\uC18C\",\n        cidrv4: \"IPv4 \uBC94\uC704\",\n        cidrv6: \"IPv6 \uBC94\uC704\",\n        base64: \"base64 \uC778\uCF54\uB529 \uBB38\uC790\uC5F4\",\n        base64url: \"base64url \uC778\uCF54\uB529 \uBB38\uC790\uC5F4\",\n        json_string: \"JSON \uBB38\uC790\uC5F4\",\n        e164: \"E.164 \uBC88\uD638\",\n        jwt: \"JWT\",\n        template_literal: \"\uC785\uB825\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `\uC798\uBABB\uB41C \uC785\uB825: \uC608\uC0C1 \uD0C0\uC785\uC740 instanceof ${issue.expected}, \uBC1B\uC740 \uD0C0\uC785\uC740 ${received}\uC785\uB2C8\uB2E4`;\n                }\n                return `\uC798\uBABB\uB41C \uC785\uB825: \uC608\uC0C1 \uD0C0\uC785\uC740 ${expected}, \uBC1B\uC740 \uD0C0\uC785\uC740 ${received}\uC785\uB2C8\uB2E4`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `\uC798\uBABB\uB41C \uC785\uB825: \uAC12\uC740 ${util.stringifyPrimitive(issue.values[0])} \uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4`;\n                return `\uC798\uBABB\uB41C \uC635\uC158: ${util.joinValues(issue.values, \"\uB610\uB294 \")} \uC911 \uD558\uB098\uC5EC\uC57C \uD569\uB2C8\uB2E4`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"\uC774\uD558\" : \"\uBBF8\uB9CC\";\n                const suffix = adj === \"\uBBF8\uB9CC\" ? \"\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4\" : \"\uC5EC\uC57C \uD569\uB2C8\uB2E4\";\n                const sizing = getSizing(issue.origin);\n                const unit = sizing?.unit ?? \"\uC694\uC18C\";\n                if (sizing)\n                    return `${issue.origin ?? \"\uAC12\"}\uC774 \uB108\uBB34 \uD07D\uB2C8\uB2E4: ${issue.maximum.toString()}${unit} ${adj}${suffix}`;\n                return `${issue.origin ?? \"\uAC12\"}\uC774 \uB108\uBB34 \uD07D\uB2C8\uB2E4: ${issue.maximum.toString()} ${adj}${suffix}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \"\uC774\uC0C1\" : \"\uCD08\uACFC\";\n                const suffix = adj === \"\uC774\uC0C1\" ? \"\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4\" : \"\uC5EC\uC57C \uD569\uB2C8\uB2E4\";\n                const sizing = getSizing(issue.origin);\n                const unit = sizing?.unit ?? \"\uC694\uC18C\";\n                if (sizing) {\n                    return `${issue.origin ?? \"\uAC12\"}\uC774 \uB108\uBB34 \uC791\uC2B5\uB2C8\uB2E4: ${issue.minimum.toString()}${unit} ${adj}${suffix}`;\n                }\n                return `${issue.origin ?? \"\uAC12\"}\uC774 \uB108\uBB34 \uC791\uC2B5\uB2C8\uB2E4: ${issue.minimum.toString()} ${adj}${suffix}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: \"${_issue.prefix}\"(\uC73C)\uB85C \uC2DC\uC791\uD574\uC57C \uD569\uB2C8\uB2E4`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: \"${_issue.suffix}\"(\uC73C)\uB85C \uB05D\uB098\uC57C \uD569\uB2C8\uB2E4`;\n                if (_issue.format === \"includes\")\n                    return `\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: \"${_issue.includes}\"\uC744(\uB97C) \uD3EC\uD568\uD574\uC57C \uD569\uB2C8\uB2E4`;\n                if (_issue.format === \"regex\")\n                    return `\uC798\uBABB\uB41C \uBB38\uC790\uC5F4: \uC815\uADDC\uC2DD ${_issue.pattern} \uD328\uD134\uACFC \uC77C\uCE58\uD574\uC57C \uD569\uB2C8\uB2E4`;\n                return `\uC798\uBABB\uB41C ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `\uC798\uBABB\uB41C \uC22B\uC790: ${issue.divisor}\uC758 \uBC30\uC218\uC5EC\uC57C \uD569\uB2C8\uB2E4`;\n            case \"unrecognized_keys\":\n                return `\uC778\uC2DD\uD560 \uC218 \uC5C6\uB294 \uD0A4: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `\uC798\uBABB\uB41C \uD0A4: ${issue.origin}`;\n            case \"invalid_union\":\n                return `\uC798\uBABB\uB41C \uC785\uB825`;\n            case \"invalid_element\":\n                return `\uC798\uBABB\uB41C \uAC12: ${issue.origin}`;\n            default:\n                return `\uC798\uBABB\uB41C \uC785\uB825`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst capitalizeFirstCharacter = (text) => {\n    return text.charAt(0).toUpperCase() + text.slice(1);\n};\nfunction getUnitTypeFromNumber(number) {\n    const abs = Math.abs(number);\n    const last = abs % 10;\n    const last2 = abs % 100;\n    if ((last2 >= 11 && last2 <= 19) || last === 0)\n        return \"many\";\n    if (last === 1)\n        return \"one\";\n    return \"few\";\n}\nconst error = () => {\n    const Sizable = {\n        string: {\n            unit: {\n                one: \"simbolis\",\n                few: \"simboliai\",\n                many: \"simboli\u0173\",\n            },\n            verb: {\n                smaller: {\n                    inclusive: \"turi b\u016Bti ne ilgesn\u0117 kaip\",\n                    notInclusive: \"turi b\u016Bti trumpesn\u0117 kaip\",\n                },\n                bigger: {\n                    inclusive: \"turi b\u016Bti ne trumpesn\u0117 kaip\",\n                    notInclusive: \"turi b\u016Bti ilgesn\u0117 kaip\",\n                },\n            },\n        },\n        file: {\n            unit: {\n                one: \"baitas\",\n                few: \"baitai\",\n                many: \"bait\u0173\",\n            },\n            verb: {\n                smaller: {\n                    inclusive: \"turi b\u016Bti ne didesnis kaip\",\n                    notInclusive: \"turi b\u016Bti ma\u017Eesnis kaip\",\n                },\n                bigger: {\n                    inclusive: \"turi b\u016Bti ne ma\u017Eesnis kaip\",\n                    notInclusive: \"turi b\u016Bti didesnis kaip\",\n                },\n            },\n        },\n        array: {\n            unit: {\n                one: \"element\u0105\",\n                few: \"elementus\",\n                many: \"element\u0173\",\n            },\n            verb: {\n                smaller: {\n                    inclusive: \"turi tur\u0117ti ne daugiau kaip\",\n                    notInclusive: \"turi tur\u0117ti ma\u017Eiau kaip\",\n                },\n                bigger: {\n                    inclusive: \"turi tur\u0117ti ne ma\u017Eiau kaip\",\n                    notInclusive: \"turi tur\u0117ti daugiau kaip\",\n                },\n            },\n        },\n        set: {\n            unit: {\n                one: \"element\u0105\",\n                few: \"elementus\",\n                many: \"element\u0173\",\n            },\n            verb: {\n                smaller: {\n                    inclusive: \"turi tur\u0117ti ne daugiau kaip\",\n                    notInclusive: \"turi tur\u0117ti ma\u017Eiau kaip\",\n                },\n                bigger: {\n                    inclusive: \"turi tur\u0117ti ne ma\u017Eiau kaip\",\n                    notInclusive: \"turi tur\u0117ti daugiau kaip\",\n                },\n            },\n        },\n    };\n    function getSizing(origin, unitType, inclusive, targetShouldBe) {\n        const result = Sizable[origin] ?? null;\n        if (result === null)\n            return result;\n        return {\n            unit: result.unit[unitType],\n            verb: result.verb[targetShouldBe][inclusive ? \"inclusive\" : \"notInclusive\"],\n        };\n    }\n    const FormatDictionary = {\n        regex: \"\u012Fvestis\",\n        email: \"el. pa\u0161to adresas\",\n        url: \"URL\",\n        emoji: \"jaustukas\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO data ir laikas\",\n        date: \"ISO data\",\n        time: \"ISO laikas\",\n        duration: \"ISO trukm\u0117\",\n        ipv4: \"IPv4 adresas\",\n        ipv6: \"IPv6 adresas\",\n        cidrv4: \"IPv4 tinklo prefiksas (CIDR)\",\n        cidrv6: \"IPv6 tinklo prefiksas (CIDR)\",\n        base64: \"base64 u\u017Ekoduota eilut\u0117\",\n        base64url: \"base64url u\u017Ekoduota eilut\u0117\",\n        json_string: \"JSON eilut\u0117\",\n        e164: \"E.164 numeris\",\n        jwt: \"JWT\",\n        template_literal: \"\u012Fvestis\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"skai\u010Dius\",\n        bigint: \"sveikasis skai\u010Dius\",\n        string: \"eilut\u0117\",\n        boolean: \"login\u0117 reik\u0161m\u0117\",\n        undefined: \"neapibr\u0117\u017Eta reik\u0161m\u0117\",\n        function: \"funkcija\",\n        symbol: \"simbolis\",\n        array: \"masyvas\",\n        object: \"objektas\",\n        null: \"nulin\u0117 reik\u0161m\u0117\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Gautas tipas ${received}, o tik\u0117tasi - instanceof ${issue.expected}`;\n                }\n                return `Gautas tipas ${received}, o tik\u0117tasi - ${expected}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Privalo b\u016Bti ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Privalo b\u016Bti vienas i\u0161 ${util.joinValues(issue.values, \"|\")} pasirinkim\u0173`;\n            case \"too_big\": {\n                const origin = TypeDictionary[issue.origin] ?? issue.origin;\n                const sizing = getSizing(issue.origin, getUnitTypeFromNumber(Number(issue.maximum)), issue.inclusive ?? false, \"smaller\");\n                if (sizing?.verb)\n                    return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reik\u0161m\u0117\")} ${sizing.verb} ${issue.maximum.toString()} ${sizing.unit ?? \"element\u0173\"}`;\n                const adj = issue.inclusive ? \"ne didesnis kaip\" : \"ma\u017Eesnis kaip\";\n                return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reik\u0161m\u0117\")} turi b\u016Bti ${adj} ${issue.maximum.toString()} ${sizing?.unit}`;\n            }\n            case \"too_small\": {\n                const origin = TypeDictionary[issue.origin] ?? issue.origin;\n                const sizing = getSizing(issue.origin, getUnitTypeFromNumber(Number(issue.minimum)), issue.inclusive ?? false, \"bigger\");\n                if (sizing?.verb)\n                    return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reik\u0161m\u0117\")} ${sizing.verb} ${issue.minimum.toString()} ${sizing.unit ?? \"element\u0173\"}`;\n                const adj = issue.inclusive ? \"ne ma\u017Eesnis kaip\" : \"didesnis kaip\";\n                return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reik\u0161m\u0117\")} turi b\u016Bti ${adj} ${issue.minimum.toString()} ${sizing?.unit}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `Eilut\u0117 privalo prasid\u0117ti \"${_issue.prefix}\"`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `Eilut\u0117 privalo pasibaigti \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Eilut\u0117 privalo \u012Ftraukti \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Eilut\u0117 privalo atitikti ${_issue.pattern}`;\n                return `Neteisingas ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Skai\u010Dius privalo b\u016Bti ${issue.divisor} kartotinis.`;\n            case \"unrecognized_keys\":\n                return `Neatpa\u017Eint${issue.keys.length > 1 ? \"i\" : \"as\"} rakt${issue.keys.length > 1 ? \"ai\" : \"as\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return \"Rastas klaidingas raktas\";\n            case \"invalid_union\":\n                return \"Klaidinga \u012Fvestis\";\n            case \"invalid_element\": {\n                const origin = TypeDictionary[issue.origin] ?? issue.origin;\n                return `${capitalizeFirstCharacter(origin ?? issue.origin ?? \"reik\u0161m\u0117\")} turi klaiding\u0105 \u012Fvest\u012F`;\n            }\n            default:\n                return \"Klaidinga \u012Fvestis\";\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"\u0437\u043D\u0430\u0446\u0438\", verb: \"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442\" },\n        file: { unit: \"\u0431\u0430\u0458\u0442\u0438\", verb: \"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442\" },\n        array: { unit: \"\u0441\u0442\u0430\u0432\u043A\u0438\", verb: \"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442\" },\n        set: { unit: \"\u0441\u0442\u0430\u0432\u043A\u0438\", verb: \"\u0434\u0430 \u0438\u043C\u0430\u0430\u0442\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"\u0432\u043D\u0435\u0441\",\n        email: \"\u0430\u0434\u0440\u0435\u0441\u0430 \u043D\u0430 \u0435-\u043F\u043E\u0448\u0442\u0430\",\n        url: \"URL\",\n        emoji: \"\u0435\u043C\u043E\u045F\u0438\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO \u0434\u0430\u0442\u0443\u043C \u0438 \u0432\u0440\u0435\u043C\u0435\",\n        date: \"ISO \u0434\u0430\u0442\u0443\u043C\",\n        time: \"ISO \u0432\u0440\u0435\u043C\u0435\",\n        duration: \"ISO \u0432\u0440\u0435\u043C\u0435\u0442\u0440\u0430\u0435\u045A\u0435\",\n        ipv4: \"IPv4 \u0430\u0434\u0440\u0435\u0441\u0430\",\n        ipv6: \"IPv6 \u0430\u0434\u0440\u0435\u0441\u0430\",\n        cidrv4: \"IPv4 \u043E\u043F\u0441\u0435\u0433\",\n        cidrv6: \"IPv6 \u043E\u043F\u0441\u0435\u0433\",\n        base64: \"base64-\u0435\u043D\u043A\u043E\u0434\u0438\u0440\u0430\u043D\u0430 \u043D\u0438\u0437\u0430\",\n        base64url: \"base64url-\u0435\u043D\u043A\u043E\u0434\u0438\u0440\u0430\u043D\u0430 \u043D\u0438\u0437\u0430\",\n        json_string: \"JSON \u043D\u0438\u0437\u0430\",\n        e164: \"E.164 \u0431\u0440\u043E\u0458\",\n        jwt: \"JWT\",\n        template_literal: \"\u0432\u043D\u0435\u0441\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"\u0431\u0440\u043E\u0458\",\n        array: \"\u043D\u0438\u0437\u0430\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 instanceof ${issue.expected}, \u043F\u0440\u0438\u043C\u0435\u043D\u043E ${received}`;\n                }\n                return `\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${expected}, \u043F\u0440\u0438\u043C\u0435\u043D\u043E ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Invalid input: expected ${util.stringifyPrimitive(issue.values[0])}`;\n                return `\u0413\u0440\u0435\u0448\u0430\u043D\u0430 \u043E\u043F\u0446\u0438\u0458\u0430: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 \u0435\u0434\u043D\u0430 ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u0433\u043E\u043B\u0435\u043C: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue.origin ?? \"\u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442\u0430\"} \u0434\u0430 \u0438\u043C\u0430 ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0438\"}`;\n                return `\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u0433\u043E\u043B\u0435\u043C: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue.origin ?? \"\u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442\u0430\"} \u0434\u0430 \u0431\u0438\u0434\u0435 ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u043C\u0430\u043B: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue.origin} \u0434\u0430 \u0438\u043C\u0430 ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `\u041F\u0440\u0435\u043C\u043D\u043E\u0433\u0443 \u043C\u0430\u043B: \u0441\u0435 \u043E\u0447\u0435\u043A\u0443\u0432\u0430 ${issue.origin} \u0434\u0430 \u0431\u0438\u0434\u0435 ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0437\u0430\u043F\u043E\u0447\u043D\u0443\u0432\u0430 \u0441\u043E \"${_issue.prefix}\"`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0437\u0430\u0432\u0440\u0448\u0443\u0432\u0430 \u0441\u043E \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0432\u043A\u043B\u0443\u0447\u0443\u0432\u0430 \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `\u041D\u0435\u0432\u0430\u0436\u0435\u0447\u043A\u0430 \u043D\u0438\u0437\u0430: \u043C\u043E\u0440\u0430 \u0434\u0430 \u043E\u0434\u0433\u043E\u0430\u0440\u0430 \u043D\u0430 \u043F\u0430\u0442\u0435\u0440\u043D\u043E\u0442 ${_issue.pattern}`;\n                return `Invalid ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `\u0413\u0440\u0435\u0448\u0435\u043D \u0431\u0440\u043E\u0458: \u043C\u043E\u0440\u0430 \u0434\u0430 \u0431\u0438\u0434\u0435 \u0434\u0435\u043B\u0438\u0432 \u0441\u043E ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `${issue.keys.length > 1 ? \"\u041D\u0435\u043F\u0440\u0435\u043F\u043E\u0437\u043D\u0430\u0435\u043D\u0438 \u043A\u043B\u0443\u0447\u0435\u0432\u0438\" : \"\u041D\u0435\u043F\u0440\u0435\u043F\u043E\u0437\u043D\u0430\u0435\u043D \u043A\u043B\u0443\u0447\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `\u0413\u0440\u0435\u0448\u0435\u043D \u043A\u043B\u0443\u0447 \u0432\u043E ${issue.origin}`;\n            case \"invalid_union\":\n                return \"\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441\";\n            case \"invalid_element\":\n                return `\u0413\u0440\u0435\u0448\u043D\u0430 \u0432\u0440\u0435\u0434\u043D\u043E\u0441\u0442 \u0432\u043E ${issue.origin}`;\n            default:\n                return `\u0413\u0440\u0435\u0448\u0435\u043D \u0432\u043D\u0435\u0441`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"aksara\", verb: \"mempunyai\" },\n        file: { unit: \"bait\", verb: \"mempunyai\" },\n        array: { unit: \"elemen\", verb: \"mempunyai\" },\n        set: { unit: \"elemen\", verb: \"mempunyai\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"input\",\n        email: \"alamat e-mel\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"tarikh masa ISO\",\n        date: \"tarikh ISO\",\n        time: \"masa ISO\",\n        duration: \"tempoh ISO\",\n        ipv4: \"alamat IPv4\",\n        ipv6: \"alamat IPv6\",\n        cidrv4: \"julat IPv4\",\n        cidrv6: \"julat IPv6\",\n        base64: \"string dikodkan base64\",\n        base64url: \"string dikodkan base64url\",\n        json_string: \"string JSON\",\n        e164: \"nombor E.164\",\n        jwt: \"JWT\",\n        template_literal: \"input\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"nombor\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Input tidak sah: dijangka instanceof ${issue.expected}, diterima ${received}`;\n                }\n                return `Input tidak sah: dijangka ${expected}, diterima ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Input tidak sah: dijangka ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Pilihan tidak sah: dijangka salah satu daripada ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Terlalu besar: dijangka ${issue.origin ?? \"nilai\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elemen\"}`;\n                return `Terlalu besar: dijangka ${issue.origin ?? \"nilai\"} adalah ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Terlalu kecil: dijangka ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Terlalu kecil: dijangka ${issue.origin} adalah ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `String tidak sah: mesti bermula dengan \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `String tidak sah: mesti berakhir dengan \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `String tidak sah: mesti mengandungi \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `String tidak sah: mesti sepadan dengan corak ${_issue.pattern}`;\n                return `${FormatDictionary[_issue.format] ?? issue.format} tidak sah`;\n            }\n            case \"not_multiple_of\":\n                return `Nombor tidak sah: perlu gandaan ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Kunci tidak dikenali: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Kunci tidak sah dalam ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Input tidak sah\";\n            case \"invalid_element\":\n                return `Nilai tidak sah dalam ${issue.origin}`;\n            default:\n                return `Input tidak sah`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"tekens\", verb: \"heeft\" },\n        file: { unit: \"bytes\", verb: \"heeft\" },\n        array: { unit: \"elementen\", verb: \"heeft\" },\n        set: { unit: \"elementen\", verb: \"heeft\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"invoer\",\n        email: \"emailadres\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO datum en tijd\",\n        date: \"ISO datum\",\n        time: \"ISO tijd\",\n        duration: \"ISO duur\",\n        ipv4: \"IPv4-adres\",\n        ipv6: \"IPv6-adres\",\n        cidrv4: \"IPv4-bereik\",\n        cidrv6: \"IPv6-bereik\",\n        base64: \"base64-gecodeerde tekst\",\n        base64url: \"base64 URL-gecodeerde tekst\",\n        json_string: \"JSON string\",\n        e164: \"E.164-nummer\",\n        jwt: \"JWT\",\n        template_literal: \"invoer\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"getal\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Ongeldige invoer: verwacht instanceof ${issue.expected}, ontving ${received}`;\n                }\n                return `Ongeldige invoer: verwacht ${expected}, ontving ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Ongeldige invoer: verwacht ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Ongeldige optie: verwacht \u00E9\u00E9n van ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                const longName = issue.origin === \"date\" ? \"laat\" : issue.origin === \"string\" ? \"lang\" : \"groot\";\n                if (sizing)\n                    return `Te ${longName}: verwacht dat ${issue.origin ?? \"waarde\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementen\"} ${sizing.verb}`;\n                return `Te ${longName}: verwacht dat ${issue.origin ?? \"waarde\"} ${adj}${issue.maximum.toString()} is`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                const shortName = issue.origin === \"date\" ? \"vroeg\" : issue.origin === \"string\" ? \"kort\" : \"klein\";\n                if (sizing) {\n                    return `Te ${shortName}: verwacht dat ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} ${sizing.verb}`;\n                }\n                return `Te ${shortName}: verwacht dat ${issue.origin} ${adj}${issue.minimum.toString()} is`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `Ongeldige tekst: moet met \"${_issue.prefix}\" beginnen`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `Ongeldige tekst: moet op \"${_issue.suffix}\" eindigen`;\n                if (_issue.format === \"includes\")\n                    return `Ongeldige tekst: moet \"${_issue.includes}\" bevatten`;\n                if (_issue.format === \"regex\")\n                    return `Ongeldige tekst: moet overeenkomen met patroon ${_issue.pattern}`;\n                return `Ongeldig: ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Ongeldig getal: moet een veelvoud van ${issue.divisor} zijn`;\n            case \"unrecognized_keys\":\n                return `Onbekende key${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Ongeldige key in ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Ongeldige invoer\";\n            case \"invalid_element\":\n                return `Ongeldige waarde in ${issue.origin}`;\n            default:\n                return `Ongeldige invoer`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"tegn\", verb: \"\u00E5 ha\" },\n        file: { unit: \"bytes\", verb: \"\u00E5 ha\" },\n        array: { unit: \"elementer\", verb: \"\u00E5 inneholde\" },\n        set: { unit: \"elementer\", verb: \"\u00E5 inneholde\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"input\",\n        email: \"e-postadresse\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO dato- og klokkeslett\",\n        date: \"ISO-dato\",\n        time: \"ISO-klokkeslett\",\n        duration: \"ISO-varighet\",\n        ipv4: \"IPv4-omr\u00E5de\",\n        ipv6: \"IPv6-omr\u00E5de\",\n        cidrv4: \"IPv4-spekter\",\n        cidrv6: \"IPv6-spekter\",\n        base64: \"base64-enkodet streng\",\n        base64url: \"base64url-enkodet streng\",\n        json_string: \"JSON-streng\",\n        e164: \"E.164-nummer\",\n        jwt: \"JWT\",\n        template_literal: \"input\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"tall\",\n        array: \"liste\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Ugyldig input: forventet instanceof ${issue.expected}, fikk ${received}`;\n                }\n                return `Ugyldig input: forventet ${expected}, fikk ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Ugyldig verdi: forventet ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Ugyldig valg: forventet en av ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `For stor(t): forventet ${issue.origin ?? \"value\"} til \u00E5 ha ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementer\"}`;\n                return `For stor(t): forventet ${issue.origin ?? \"value\"} til \u00E5 ha ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `For lite(n): forventet ${issue.origin} til \u00E5 ha ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `For lite(n): forventet ${issue.origin} til \u00E5 ha ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Ugyldig streng: m\u00E5 starte med \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `Ugyldig streng: m\u00E5 ende med \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Ugyldig streng: m\u00E5 inneholde \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Ugyldig streng: m\u00E5 matche m\u00F8nsteret ${_issue.pattern}`;\n                return `Ugyldig ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Ugyldig tall: m\u00E5 v\u00E6re et multiplum av ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `${issue.keys.length > 1 ? \"Ukjente n\u00F8kler\" : \"Ukjent n\u00F8kkel\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Ugyldig n\u00F8kkel i ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Ugyldig input\";\n            case \"invalid_element\":\n                return `Ugyldig verdi i ${issue.origin}`;\n            default:\n                return `Ugyldig input`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"harf\", verb: \"olmal\u0131d\u0131r\" },\n        file: { unit: \"bayt\", verb: \"olmal\u0131d\u0131r\" },\n        array: { unit: \"unsur\", verb: \"olmal\u0131d\u0131r\" },\n        set: { unit: \"unsur\", verb: \"olmal\u0131d\u0131r\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"giren\",\n        email: \"epostag\u00E2h\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO heng\u00E2m\u0131\",\n        date: \"ISO tarihi\",\n        time: \"ISO zaman\u0131\",\n        duration: \"ISO m\u00FCddeti\",\n        ipv4: \"IPv4 ni\u015F\u00E2n\u0131\",\n        ipv6: \"IPv6 ni\u015F\u00E2n\u0131\",\n        cidrv4: \"IPv4 menzili\",\n        cidrv6: \"IPv6 menzili\",\n        base64: \"base64-\u015Fifreli metin\",\n        base64url: \"base64url-\u015Fifreli metin\",\n        json_string: \"JSON metin\",\n        e164: \"E.164 say\u0131s\u0131\",\n        jwt: \"JWT\",\n        template_literal: \"giren\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"numara\",\n        array: \"saf\",\n        null: \"gayb\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `F\u00E2sit giren: umulan instanceof ${issue.expected}, al\u0131nan ${received}`;\n                }\n                return `F\u00E2sit giren: umulan ${expected}, al\u0131nan ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `F\u00E2sit giren: umulan ${util.stringifyPrimitive(issue.values[0])}`;\n                return `F\u00E2sit tercih: m\u00FBteberler ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Fazla b\u00FCy\u00FCk: ${issue.origin ?? \"value\"}, ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elements\"} sahip olmal\u0131yd\u0131.`;\n                return `Fazla b\u00FCy\u00FCk: ${issue.origin ?? \"value\"}, ${adj}${issue.maximum.toString()} olmal\u0131yd\u0131.`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Fazla k\u00FC\u00E7\u00FCk: ${issue.origin}, ${adj}${issue.minimum.toString()} ${sizing.unit} sahip olmal\u0131yd\u0131.`;\n                }\n                return `Fazla k\u00FC\u00E7\u00FCk: ${issue.origin}, ${adj}${issue.minimum.toString()} olmal\u0131yd\u0131.`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `F\u00E2sit metin: \"${_issue.prefix}\" ile ba\u015Flamal\u0131.`;\n                if (_issue.format === \"ends_with\")\n                    return `F\u00E2sit metin: \"${_issue.suffix}\" ile bitmeli.`;\n                if (_issue.format === \"includes\")\n                    return `F\u00E2sit metin: \"${_issue.includes}\" ihtiv\u00E2 etmeli.`;\n                if (_issue.format === \"regex\")\n                    return `F\u00E2sit metin: ${_issue.pattern} nak\u015F\u0131na uymal\u0131.`;\n                return `F\u00E2sit ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `F\u00E2sit say\u0131: ${issue.divisor} kat\u0131 olmal\u0131yd\u0131.`;\n            case \"unrecognized_keys\":\n                return `Tan\u0131nmayan anahtar ${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `${issue.origin} i\u00E7in tan\u0131nmayan anahtar var.`;\n            case \"invalid_union\":\n                return \"Giren tan\u0131namad\u0131.\";\n            case \"invalid_element\":\n                return `${issue.origin} i\u00E7in tan\u0131nmayan k\u0131ymet var.`;\n            default:\n                return `K\u0131ymet tan\u0131namad\u0131.`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"\u062A\u0648\u06A9\u064A\", verb: \"\u0648\u0644\u0631\u064A\" },\n        file: { unit: \"\u0628\u0627\u06CC\u067C\u0633\", verb: \"\u0648\u0644\u0631\u064A\" },\n        array: { unit: \"\u062A\u0648\u06A9\u064A\", verb: \"\u0648\u0644\u0631\u064A\" },\n        set: { unit: \"\u062A\u0648\u06A9\u064A\", verb: \"\u0648\u0644\u0631\u064A\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"\u0648\u0631\u0648\u062F\u064A\",\n        email: \"\u0628\u0631\u06CC\u069A\u0646\u0627\u0644\u06CC\u06A9\",\n        url: \"\u06CC\u0648 \u0622\u0631 \u0627\u0644\",\n        emoji: \"\u0627\u06CC\u0645\u0648\u062C\u064A\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"\u0646\u06CC\u067C\u0647 \u0627\u0648 \u0648\u062E\u062A\",\n        date: \"\u0646\u06D0\u067C\u0647\",\n        time: \"\u0648\u062E\u062A\",\n        duration: \"\u0645\u0648\u062F\u0647\",\n        ipv4: \"\u062F IPv4 \u067E\u062A\u0647\",\n        ipv6: \"\u062F IPv6 \u067E\u062A\u0647\",\n        cidrv4: \"\u062F IPv4 \u0633\u0627\u062D\u0647\",\n        cidrv6: \"\u062F IPv6 \u0633\u0627\u062D\u0647\",\n        base64: \"base64-encoded \u0645\u062A\u0646\",\n        base64url: \"base64url-encoded \u0645\u062A\u0646\",\n        json_string: \"JSON \u0645\u062A\u0646\",\n        e164: \"\u062F E.164 \u0634\u0645\u06D0\u0631\u0647\",\n        jwt: \"JWT\",\n        template_literal: \"\u0648\u0631\u0648\u062F\u064A\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"\u0639\u062F\u062F\",\n        array: \"\u0627\u0631\u06D0\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F instanceof ${issue.expected} \u0648\u0627\u06CC, \u0645\u06AB\u0631 ${received} \u062A\u0631\u0644\u0627\u0633\u0647 \u0634\u0648`;\n                }\n                return `\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F ${expected} \u0648\u0627\u06CC, \u0645\u06AB\u0631 ${received} \u062A\u0631\u0644\u0627\u0633\u0647 \u0634\u0648`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1) {\n                    return `\u0646\u0627\u0633\u0645 \u0648\u0631\u0648\u062F\u064A: \u0628\u0627\u06CC\u062F ${util.stringifyPrimitive(issue.values[0])} \u0648\u0627\u06CC`;\n                }\n                return `\u0646\u0627\u0633\u0645 \u0627\u0646\u062A\u062E\u0627\u0628: \u0628\u0627\u06CC\u062F \u06CC\u0648 \u0644\u0647 ${util.joinValues(issue.values, \"|\")} \u0685\u062E\u0647 \u0648\u0627\u06CC`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `\u0689\u06CC\u0631 \u0644\u0648\u06CC: ${issue.origin ?? \"\u0627\u0631\u0632\u069A\u062A\"} \u0628\u0627\u06CC\u062F ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u0639\u0646\u0635\u0631\u0648\u0646\u0647\"} \u0648\u0644\u0631\u064A`;\n                }\n                return `\u0689\u06CC\u0631 \u0644\u0648\u06CC: ${issue.origin ?? \"\u0627\u0631\u0632\u069A\u062A\"} \u0628\u0627\u06CC\u062F ${adj}${issue.maximum.toString()} \u0648\u064A`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `\u0689\u06CC\u0631 \u06A9\u0648\u0686\u0646\u06CC: ${issue.origin} \u0628\u0627\u06CC\u062F ${adj}${issue.minimum.toString()} ${sizing.unit} \u0648\u0644\u0631\u064A`;\n                }\n                return `\u0689\u06CC\u0631 \u06A9\u0648\u0686\u0646\u06CC: ${issue.origin} \u0628\u0627\u06CC\u062F ${adj}${issue.minimum.toString()} \u0648\u064A`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F \"${_issue.prefix}\" \u0633\u0631\u0647 \u067E\u06CC\u0644 \u0634\u064A`;\n                }\n                if (_issue.format === \"ends_with\") {\n                    return `\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F \"${_issue.suffix}\" \u0633\u0631\u0647 \u067E\u0627\u06CC \u062A\u0647 \u0648\u0631\u0633\u064A\u0696\u064A`;\n                }\n                if (_issue.format === \"includes\") {\n                    return `\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \"${_issue.includes}\" \u0648\u0644\u0631\u064A`;\n                }\n                if (_issue.format === \"regex\") {\n                    return `\u0646\u0627\u0633\u0645 \u0645\u062A\u0646: \u0628\u0627\u06CC\u062F \u062F ${_issue.pattern} \u0633\u0631\u0647 \u0645\u0637\u0627\u0628\u0642\u062A \u0648\u0644\u0631\u064A`;\n                }\n                return `${FormatDictionary[_issue.format] ?? issue.format} \u0646\u0627\u0633\u0645 \u062F\u06CC`;\n            }\n            case \"not_multiple_of\":\n                return `\u0646\u0627\u0633\u0645 \u0639\u062F\u062F: \u0628\u0627\u06CC\u062F \u062F ${issue.divisor} \u0645\u0636\u0631\u0628 \u0648\u064A`;\n            case \"unrecognized_keys\":\n                return `\u0646\u0627\u0633\u0645 ${issue.keys.length > 1 ? \"\u06A9\u0644\u06CC\u0689\u0648\u0646\u0647\" : \"\u06A9\u0644\u06CC\u0689\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `\u0646\u0627\u0633\u0645 \u06A9\u0644\u06CC\u0689 \u067E\u0647 ${issue.origin} \u06A9\u06D0`;\n            case \"invalid_union\":\n                return `\u0646\u0627\u0633\u0645\u0647 \u0648\u0631\u0648\u062F\u064A`;\n            case \"invalid_element\":\n                return `\u0646\u0627\u0633\u0645 \u0639\u0646\u0635\u0631 \u067E\u0647 ${issue.origin} \u06A9\u06D0`;\n            default:\n                return `\u0646\u0627\u0633\u0645\u0647 \u0648\u0631\u0648\u062F\u064A`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"znak\u00F3w\", verb: \"mie\u0107\" },\n        file: { unit: \"bajt\u00F3w\", verb: \"mie\u0107\" },\n        array: { unit: \"element\u00F3w\", verb: \"mie\u0107\" },\n        set: { unit: \"element\u00F3w\", verb: \"mie\u0107\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"wyra\u017Cenie\",\n        email: \"adres email\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"data i godzina w formacie ISO\",\n        date: \"data w formacie ISO\",\n        time: \"godzina w formacie ISO\",\n        duration: \"czas trwania ISO\",\n        ipv4: \"adres IPv4\",\n        ipv6: \"adres IPv6\",\n        cidrv4: \"zakres IPv4\",\n        cidrv6: \"zakres IPv6\",\n        base64: \"ci\u0105g znak\u00F3w zakodowany w formacie base64\",\n        base64url: \"ci\u0105g znak\u00F3w zakodowany w formacie base64url\",\n        json_string: \"ci\u0105g znak\u00F3w w formacie JSON\",\n        e164: \"liczba E.164\",\n        jwt: \"JWT\",\n        template_literal: \"wej\u015Bcie\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"liczba\",\n        array: \"tablica\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano instanceof ${issue.expected}, otrzymano ${received}`;\n                }\n                return `Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano ${expected}, otrzymano ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Nieprawid\u0142owe dane wej\u015Bciowe: oczekiwano ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Nieprawid\u0142owa opcja: oczekiwano jednej z warto\u015Bci ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Za du\u017Ca warto\u015B\u0107: oczekiwano, \u017Ce ${issue.origin ?? \"warto\u015B\u0107\"} b\u0119dzie mie\u0107 ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"element\u00F3w\"}`;\n                }\n                return `Zbyt du\u017C(y/a/e): oczekiwano, \u017Ce ${issue.origin ?? \"warto\u015B\u0107\"} b\u0119dzie wynosi\u0107 ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Za ma\u0142a warto\u015B\u0107: oczekiwano, \u017Ce ${issue.origin ?? \"warto\u015B\u0107\"} b\u0119dzie mie\u0107 ${adj}${issue.minimum.toString()} ${sizing.unit ?? \"element\u00F3w\"}`;\n                }\n                return `Zbyt ma\u0142(y/a/e): oczekiwano, \u017Ce ${issue.origin ?? \"warto\u015B\u0107\"} b\u0119dzie wynosi\u0107 ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Nieprawid\u0142owy ci\u0105g znak\u00F3w: musi zaczyna\u0107 si\u0119 od \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `Nieprawid\u0142owy ci\u0105g znak\u00F3w: musi ko\u0144czy\u0107 si\u0119 na \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Nieprawid\u0142owy ci\u0105g znak\u00F3w: musi zawiera\u0107 \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Nieprawid\u0142owy ci\u0105g znak\u00F3w: musi odpowiada\u0107 wzorcowi ${_issue.pattern}`;\n                return `Nieprawid\u0142ow(y/a/e) ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Nieprawid\u0142owa liczba: musi by\u0107 wielokrotno\u015Bci\u0105 ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Nierozpoznane klucze${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Nieprawid\u0142owy klucz w ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Nieprawid\u0142owe dane wej\u015Bciowe\";\n            case \"invalid_element\":\n                return `Nieprawid\u0142owa warto\u015B\u0107 w ${issue.origin}`;\n            default:\n                return `Nieprawid\u0142owe dane wej\u015Bciowe`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"caracteres\", verb: \"ter\" },\n        file: { unit: \"bytes\", verb: \"ter\" },\n        array: { unit: \"itens\", verb: \"ter\" },\n        set: { unit: \"itens\", verb: \"ter\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"padr\u00E3o\",\n        email: \"endere\u00E7o de e-mail\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"data e hora ISO\",\n        date: \"data ISO\",\n        time: \"hora ISO\",\n        duration: \"dura\u00E7\u00E3o ISO\",\n        ipv4: \"endere\u00E7o IPv4\",\n        ipv6: \"endere\u00E7o IPv6\",\n        cidrv4: \"faixa de IPv4\",\n        cidrv6: \"faixa de IPv6\",\n        base64: \"texto codificado em base64\",\n        base64url: \"URL codificada em base64\",\n        json_string: \"texto JSON\",\n        e164: \"n\u00FAmero E.164\",\n        jwt: \"JWT\",\n        template_literal: \"entrada\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"n\u00FAmero\",\n        null: \"nulo\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Tipo inv\u00E1lido: esperado instanceof ${issue.expected}, recebido ${received}`;\n                }\n                return `Tipo inv\u00E1lido: esperado ${expected}, recebido ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Entrada inv\u00E1lida: esperado ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Op\u00E7\u00E3o inv\u00E1lida: esperada uma das ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Muito grande: esperado que ${issue.origin ?? \"valor\"} tivesse ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementos\"}`;\n                return `Muito grande: esperado que ${issue.origin ?? \"valor\"} fosse ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Muito pequeno: esperado que ${issue.origin} tivesse ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Muito pequeno: esperado que ${issue.origin} fosse ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Texto inv\u00E1lido: deve come\u00E7ar com \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `Texto inv\u00E1lido: deve terminar com \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Texto inv\u00E1lido: deve incluir \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Texto inv\u00E1lido: deve corresponder ao padr\u00E3o ${_issue.pattern}`;\n                return `${FormatDictionary[_issue.format] ?? issue.format} inv\u00E1lido`;\n            }\n            case \"not_multiple_of\":\n                return `N\u00FAmero inv\u00E1lido: deve ser m\u00FAltiplo de ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Chave${issue.keys.length > 1 ? \"s\" : \"\"} desconhecida${issue.keys.length > 1 ? \"s\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Chave inv\u00E1lida em ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Entrada inv\u00E1lida\";\n            case \"invalid_element\":\n                return `Valor inv\u00E1lido em ${issue.origin}`;\n            default:\n                return `Campo inv\u00E1lido`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nfunction getRussianPlural(count, one, few, many) {\n    const absCount = Math.abs(count);\n    const lastDigit = absCount % 10;\n    const lastTwoDigits = absCount % 100;\n    if (lastTwoDigits >= 11 && lastTwoDigits <= 19) {\n        return many;\n    }\n    if (lastDigit === 1) {\n        return one;\n    }\n    if (lastDigit >= 2 && lastDigit <= 4) {\n        return few;\n    }\n    return many;\n}\nconst error = () => {\n    const Sizable = {\n        string: {\n            unit: {\n                one: \"\u0441\u0438\u043C\u0432\u043E\u043B\",\n                few: \"\u0441\u0438\u043C\u0432\u043E\u043B\u0430\",\n                many: \"\u0441\u0438\u043C\u0432\u043E\u043B\u043E\u0432\",\n            },\n            verb: \"\u0438\u043C\u0435\u0442\u044C\",\n        },\n        file: {\n            unit: {\n                one: \"\u0431\u0430\u0439\u0442\",\n                few: \"\u0431\u0430\u0439\u0442\u0430\",\n                many: \"\u0431\u0430\u0439\u0442\",\n            },\n            verb: \"\u0438\u043C\u0435\u0442\u044C\",\n        },\n        array: {\n            unit: {\n                one: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\",\n                few: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\",\n                many: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432\",\n            },\n            verb: \"\u0438\u043C\u0435\u0442\u044C\",\n        },\n        set: {\n            unit: {\n                one: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\",\n                few: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u0430\",\n                many: \"\u044D\u043B\u0435\u043C\u0435\u043D\u0442\u043E\u0432\",\n            },\n            verb: \"\u0438\u043C\u0435\u0442\u044C\",\n        },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"\u0432\u0432\u043E\u0434\",\n        email: \"email \u0430\u0434\u0440\u0435\u0441\",\n        url: \"URL\",\n        emoji: \"\u044D\u043C\u043E\u0434\u0437\u0438\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO \u0434\u0430\u0442\u0430 \u0438 \u0432\u0440\u0435\u043C\u044F\",\n        date: \"ISO \u0434\u0430\u0442\u0430\",\n        time: \"ISO \u0432\u0440\u0435\u043C\u044F\",\n        duration: \"ISO \u0434\u043B\u0438\u0442\u0435\u043B\u044C\u043D\u043E\u0441\u0442\u044C\",\n        ipv4: \"IPv4 \u0430\u0434\u0440\u0435\u0441\",\n        ipv6: \"IPv6 \u0430\u0434\u0440\u0435\u0441\",\n        cidrv4: \"IPv4 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\",\n        cidrv6: \"IPv6 \u0434\u0438\u0430\u043F\u0430\u0437\u043E\u043D\",\n        base64: \"\u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 base64\",\n        base64url: \"\u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 base64url\",\n        json_string: \"JSON \u0441\u0442\u0440\u043E\u043A\u0430\",\n        e164: \"\u043D\u043E\u043C\u0435\u0440 E.164\",\n        jwt: \"JWT\",\n        template_literal: \"\u0432\u0432\u043E\u0434\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"\u0447\u0438\u0441\u043B\u043E\",\n        array: \"\u043C\u0430\u0441\u0441\u0438\u0432\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C instanceof ${issue.expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043E ${received}`;\n                }\n                return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C ${expected}, \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043E ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0432\u043E\u0434: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C ${util.stringifyPrimitive(issue.values[0])}`;\n                return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u0432\u0430\u0440\u0438\u0430\u043D\u0442: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C \u043E\u0434\u043D\u043E \u0438\u0437 ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    const maxValue = Number(issue.maximum);\n                    const unit = getRussianPlural(maxValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n                    return `\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u0431\u043E\u043B\u044C\u0448\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${issue.origin ?? \"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\"} \u0431\u0443\u0434\u0435\u0442 \u0438\u043C\u0435\u0442\u044C ${adj}${issue.maximum.toString()} ${unit}`;\n                }\n                return `\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u0431\u043E\u043B\u044C\u0448\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${issue.origin ?? \"\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\"} \u0431\u0443\u0434\u0435\u0442 ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    const minValue = Number(issue.minimum);\n                    const unit = getRussianPlural(minValue, sizing.unit.one, sizing.unit.few, sizing.unit.many);\n                    return `\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${issue.origin} \u0431\u0443\u0434\u0435\u0442 \u0438\u043C\u0435\u0442\u044C ${adj}${issue.minimum.toString()} ${unit}`;\n                }\n                return `\u0421\u043B\u0438\u0448\u043A\u043E\u043C \u043C\u0430\u043B\u0435\u043D\u044C\u043A\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435: \u043E\u0436\u0438\u0434\u0430\u043B\u043E\u0441\u044C, \u0447\u0442\u043E ${issue.origin} \u0431\u0443\u0434\u0435\u0442 ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u043D\u0430\u0447\u0438\u043D\u0430\u0442\u044C\u0441\u044F \u0441 \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0437\u0430\u043A\u0430\u043D\u0447\u0438\u0432\u0430\u0442\u044C\u0441\u044F \u043D\u0430 \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0441\u043E\u0434\u0435\u0440\u0436\u0430\u0442\u044C \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `\u041D\u0435\u0432\u0435\u0440\u043D\u0430\u044F \u0441\u0442\u0440\u043E\u043A\u0430: \u0434\u043E\u043B\u0436\u043D\u0430 \u0441\u043E\u043E\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u043E\u0432\u0430\u0442\u044C \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${_issue.pattern}`;\n                return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `\u041D\u0435\u0432\u0435\u0440\u043D\u043E\u0435 \u0447\u0438\u0441\u043B\u043E: \u0434\u043E\u043B\u0436\u043D\u043E \u0431\u044B\u0442\u044C \u043A\u0440\u0430\u0442\u043D\u044B\u043C ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `\u041D\u0435\u0440\u0430\u0441\u043F\u043E\u0437\u043D\u0430\u043D\u043D${issue.keys.length > 1 ? \"\u044B\u0435\" : \"\u044B\u0439\"} \u043A\u043B\u044E\u0447${issue.keys.length > 1 ? \"\u0438\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0439 \u043A\u043B\u044E\u0447 \u0432 ${issue.origin}`;\n            case \"invalid_union\":\n                return \"\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0435 \u0432\u0445\u043E\u0434\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435\";\n            case \"invalid_element\":\n                return `\u041D\u0435\u0432\u0435\u0440\u043D\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u0432 ${issue.origin}`;\n            default:\n                return `\u041D\u0435\u0432\u0435\u0440\u043D\u044B\u0435 \u0432\u0445\u043E\u0434\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"znakov\", verb: \"imeti\" },\n        file: { unit: \"bajtov\", verb: \"imeti\" },\n        array: { unit: \"elementov\", verb: \"imeti\" },\n        set: { unit: \"elementov\", verb: \"imeti\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"vnos\",\n        email: \"e-po\u0161tni naslov\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO datum in \u010Das\",\n        date: \"ISO datum\",\n        time: \"ISO \u010Das\",\n        duration: \"ISO trajanje\",\n        ipv4: \"IPv4 naslov\",\n        ipv6: \"IPv6 naslov\",\n        cidrv4: \"obseg IPv4\",\n        cidrv6: \"obseg IPv6\",\n        base64: \"base64 kodiran niz\",\n        base64url: \"base64url kodiran niz\",\n        json_string: \"JSON niz\",\n        e164: \"E.164 \u0161tevilka\",\n        jwt: \"JWT\",\n        template_literal: \"vnos\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"\u0161tevilo\",\n        array: \"tabela\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Neveljaven vnos: pri\u010Dakovano instanceof ${issue.expected}, prejeto ${received}`;\n                }\n                return `Neveljaven vnos: pri\u010Dakovano ${expected}, prejeto ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Neveljaven vnos: pri\u010Dakovano ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Neveljavna mo\u017Enost: pri\u010Dakovano eno izmed ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Preveliko: pri\u010Dakovano, da bo ${issue.origin ?? \"vrednost\"} imelo ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"elementov\"}`;\n                return `Preveliko: pri\u010Dakovano, da bo ${issue.origin ?? \"vrednost\"} ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Premajhno: pri\u010Dakovano, da bo ${issue.origin} imelo ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Premajhno: pri\u010Dakovano, da bo ${issue.origin} ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `Neveljaven niz: mora se za\u010Deti z \"${_issue.prefix}\"`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `Neveljaven niz: mora se kon\u010Dati z \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Neveljaven niz: mora vsebovati \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Neveljaven niz: mora ustrezati vzorcu ${_issue.pattern}`;\n                return `Neveljaven ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Neveljavno \u0161tevilo: mora biti ve\u010Dkratnik ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Neprepoznan${issue.keys.length > 1 ? \"i klju\u010Di\" : \" klju\u010D\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Neveljaven klju\u010D v ${issue.origin}`;\n            case \"invalid_union\":\n                return \"Neveljaven vnos\";\n            case \"invalid_element\":\n                return `Neveljavna vrednost v ${issue.origin}`;\n            default:\n                return \"Neveljaven vnos\";\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"tecken\", verb: \"att ha\" },\n        file: { unit: \"bytes\", verb: \"att ha\" },\n        array: { unit: \"objekt\", verb: \"att inneh\u00E5lla\" },\n        set: { unit: \"objekt\", verb: \"att inneh\u00E5lla\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"regulj\u00E4rt uttryck\",\n        email: \"e-postadress\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO-datum och tid\",\n        date: \"ISO-datum\",\n        time: \"ISO-tid\",\n        duration: \"ISO-varaktighet\",\n        ipv4: \"IPv4-intervall\",\n        ipv6: \"IPv6-intervall\",\n        cidrv4: \"IPv4-spektrum\",\n        cidrv6: \"IPv6-spektrum\",\n        base64: \"base64-kodad str\u00E4ng\",\n        base64url: \"base64url-kodad str\u00E4ng\",\n        json_string: \"JSON-str\u00E4ng\",\n        e164: \"E.164-nummer\",\n        jwt: \"JWT\",\n        template_literal: \"mall-literal\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"antal\",\n        array: \"lista\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Ogiltig inmatning: f\u00F6rv\u00E4ntat instanceof ${issue.expected}, fick ${received}`;\n                }\n                return `Ogiltig inmatning: f\u00F6rv\u00E4ntat ${expected}, fick ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Ogiltig inmatning: f\u00F6rv\u00E4ntat ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Ogiltigt val: f\u00F6rv\u00E4ntade en av ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `F\u00F6r stor(t): f\u00F6rv\u00E4ntade ${issue.origin ?? \"v\u00E4rdet\"} att ha ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"element\"}`;\n                }\n                return `F\u00F6r stor(t): f\u00F6rv\u00E4ntat ${issue.origin ?? \"v\u00E4rdet\"} att ha ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `F\u00F6r lite(t): f\u00F6rv\u00E4ntade ${issue.origin ?? \"v\u00E4rdet\"} att ha ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `F\u00F6r lite(t): f\u00F6rv\u00E4ntade ${issue.origin ?? \"v\u00E4rdet\"} att ha ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `Ogiltig str\u00E4ng: m\u00E5ste b\u00F6rja med \"${_issue.prefix}\"`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `Ogiltig str\u00E4ng: m\u00E5ste sluta med \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Ogiltig str\u00E4ng: m\u00E5ste inneh\u00E5lla \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Ogiltig str\u00E4ng: m\u00E5ste matcha m\u00F6nstret \"${_issue.pattern}\"`;\n                return `Ogiltig(t) ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Ogiltigt tal: m\u00E5ste vara en multipel av ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `${issue.keys.length > 1 ? \"Ok\u00E4nda nycklar\" : \"Ok\u00E4nd nyckel\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Ogiltig nyckel i ${issue.origin ?? \"v\u00E4rdet\"}`;\n            case \"invalid_union\":\n                return \"Ogiltig input\";\n            case \"invalid_element\":\n                return `Ogiltigt v\u00E4rde i ${issue.origin ?? \"v\u00E4rdet\"}`;\n            default:\n                return `Ogiltig input`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"\u0B8E\u0BB4\u0BC1\u0BA4\u0BCD\u0BA4\u0BC1\u0B95\u0BCD\u0B95\u0BB3\u0BCD\", verb: \"\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD\" },\n        file: { unit: \"\u0BAA\u0BC8\u0B9F\u0BCD\u0B9F\u0BC1\u0B95\u0BB3\u0BCD\", verb: \"\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD\" },\n        array: { unit: \"\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD\", verb: \"\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD\" },\n        set: { unit: \"\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD\", verb: \"\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"\u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1\",\n        email: \"\u0BAE\u0BBF\u0BA9\u0BCD\u0BA9\u0B9E\u0BCD\u0B9A\u0BB2\u0BCD \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO \u0BA4\u0BC7\u0BA4\u0BBF \u0BA8\u0BC7\u0BB0\u0BAE\u0BCD\",\n        date: \"ISO \u0BA4\u0BC7\u0BA4\u0BBF\",\n        time: \"ISO \u0BA8\u0BC7\u0BB0\u0BAE\u0BCD\",\n        duration: \"ISO \u0B95\u0BBE\u0BB2 \u0B85\u0BB3\u0BB5\u0BC1\",\n        ipv4: \"IPv4 \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF\",\n        ipv6: \"IPv6 \u0BAE\u0BC1\u0B95\u0BB5\u0BB0\u0BBF\",\n        cidrv4: \"IPv4 \u0BB5\u0BB0\u0BAE\u0BCD\u0BAA\u0BC1\",\n        cidrv6: \"IPv6 \u0BB5\u0BB0\u0BAE\u0BCD\u0BAA\u0BC1\",\n        base64: \"base64-encoded \u0B9A\u0BB0\u0BAE\u0BCD\",\n        base64url: \"base64url-encoded \u0B9A\u0BB0\u0BAE\u0BCD\",\n        json_string: \"JSON \u0B9A\u0BB0\u0BAE\u0BCD\",\n        e164: \"E.164 \u0B8E\u0BA3\u0BCD\",\n        jwt: \"JWT\",\n        template_literal: \"input\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"\u0B8E\u0BA3\u0BCD\",\n        array: \"\u0B85\u0BA3\u0BBF\",\n        null: \"\u0BB5\u0BC6\u0BB1\u0BC1\u0BAE\u0BC8\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 instanceof ${issue.expected}, \u0BAA\u0BC6\u0BB1\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${received}`;\n                }\n                return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${expected}, \u0BAA\u0BC6\u0BB1\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${util.stringifyPrimitive(issue.values[0])}`;\n                return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BB5\u0BBF\u0BB0\u0BC1\u0BAA\u0BCD\u0BAA\u0BAE\u0BCD: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${util.joinValues(issue.values, \"|\")} \u0B87\u0BB2\u0BCD \u0B92\u0BA9\u0BCD\u0BB1\u0BC1`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `\u0BAE\u0BBF\u0B95 \u0BAA\u0BC6\u0BB0\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${issue.origin ?? \"\u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u0B89\u0BB1\u0BC1\u0BAA\u0BCD\u0BAA\u0BC1\u0B95\u0BB3\u0BCD\"} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;\n                }\n                return `\u0BAE\u0BBF\u0B95 \u0BAA\u0BC6\u0BB0\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${issue.origin ?? \"\u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1\"} ${adj}${issue.maximum.toString()} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `\u0BAE\u0BBF\u0B95\u0B9A\u0BCD \u0B9A\u0BBF\u0BB1\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`; //\n                }\n                return `\u0BAE\u0BBF\u0B95\u0B9A\u0BCD \u0B9A\u0BBF\u0BB1\u0BBF\u0BAF\u0BA4\u0BC1: \u0B8E\u0BA4\u0BBF\u0BB0\u0BCD\u0BAA\u0BBE\u0BB0\u0BCD\u0B95\u0BCD\u0B95\u0BAA\u0BCD\u0BAA\u0B9F\u0BCD\u0B9F\u0BA4\u0BC1 ${issue.origin} ${adj}${issue.minimum.toString()} \u0B86\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: \"${_issue.prefix}\" \u0B87\u0BB2\u0BCD \u0BA4\u0BCA\u0B9F\u0B99\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;\n                if (_issue.format === \"ends_with\")\n                    return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: \"${_issue.suffix}\" \u0B87\u0BB2\u0BCD \u0BAE\u0BC1\u0B9F\u0BBF\u0BB5\u0B9F\u0BC8\u0BAF \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;\n                if (_issue.format === \"includes\")\n                    return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: \"${_issue.includes}\" \u0B90 \u0B89\u0BB3\u0BCD\u0BB3\u0B9F\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;\n                if (_issue.format === \"regex\")\n                    return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B9A\u0BB0\u0BAE\u0BCD: ${_issue.pattern} \u0BAE\u0BC1\u0BB1\u0BC8\u0BAA\u0BBE\u0B9F\u0BCD\u0B9F\u0BC1\u0B9F\u0BA9\u0BCD \u0BAA\u0BCA\u0BB0\u0BC1\u0BA8\u0BCD\u0BA4 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;\n                return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B8E\u0BA3\u0BCD: ${issue.divisor} \u0B87\u0BA9\u0BCD \u0BAA\u0BB2\u0BAE\u0BBE\u0B95 \u0B87\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD`;\n            case \"unrecognized_keys\":\n                return `\u0B85\u0B9F\u0BC8\u0BAF\u0BBE\u0BB3\u0BAE\u0BCD \u0BA4\u0BC6\u0BB0\u0BBF\u0BAF\u0BBE\u0BA4 \u0BB5\u0BBF\u0B9A\u0BC8${issue.keys.length > 1 ? \"\u0B95\u0BB3\u0BCD\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `${issue.origin} \u0B87\u0BB2\u0BCD \u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BB5\u0BBF\u0B9A\u0BC8`;\n            case \"invalid_union\":\n                return \"\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1\";\n            case \"invalid_element\":\n                return `${issue.origin} \u0B87\u0BB2\u0BCD \u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0BAE\u0BA4\u0BBF\u0BAA\u0BCD\u0BAA\u0BC1`;\n            default:\n                return `\u0BA4\u0BB5\u0BB1\u0BBE\u0BA9 \u0B89\u0BB3\u0BCD\u0BB3\u0BC0\u0B9F\u0BC1`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"\u0E15\u0E31\u0E27\u0E2D\u0E31\u0E01\u0E29\u0E23\", verb: \"\u0E04\u0E27\u0E23\u0E21\u0E35\" },\n        file: { unit: \"\u0E44\u0E1A\u0E15\u0E4C\", verb: \"\u0E04\u0E27\u0E23\u0E21\u0E35\" },\n        array: { unit: \"\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\", verb: \"\u0E04\u0E27\u0E23\u0E21\u0E35\" },\n        set: { unit: \"\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\", verb: \"\u0E04\u0E27\u0E23\u0E21\u0E35\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E17\u0E35\u0E48\u0E1B\u0E49\u0E2D\u0E19\",\n        email: \"\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48\u0E2D\u0E35\u0E40\u0E21\u0E25\",\n        url: \"URL\",\n        emoji: \"\u0E2D\u0E34\u0E42\u0E21\u0E08\u0E34\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO\",\n        date: \"\u0E27\u0E31\u0E19\u0E17\u0E35\u0E48\u0E41\u0E1A\u0E1A ISO\",\n        time: \"\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO\",\n        duration: \"\u0E0A\u0E48\u0E27\u0E07\u0E40\u0E27\u0E25\u0E32\u0E41\u0E1A\u0E1A ISO\",\n        ipv4: \"\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48 IPv4\",\n        ipv6: \"\u0E17\u0E35\u0E48\u0E2D\u0E22\u0E39\u0E48 IPv6\",\n        cidrv4: \"\u0E0A\u0E48\u0E27\u0E07 IP \u0E41\u0E1A\u0E1A IPv4\",\n        cidrv6: \"\u0E0A\u0E48\u0E27\u0E07 IP \u0E41\u0E1A\u0E1A IPv6\",\n        base64: \"\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A Base64\",\n        base64url: \"\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A Base64 \u0E2A\u0E33\u0E2B\u0E23\u0E31\u0E1A URL\",\n        json_string: \"\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E41\u0E1A\u0E1A JSON\",\n        e164: \"\u0E40\u0E1A\u0E2D\u0E23\u0E4C\u0E42\u0E17\u0E23\u0E28\u0E31\u0E1E\u0E17\u0E4C\u0E23\u0E30\u0E2B\u0E27\u0E48\u0E32\u0E07\u0E1B\u0E23\u0E30\u0E40\u0E17\u0E28 (E.164)\",\n        jwt: \"\u0E42\u0E17\u0E40\u0E04\u0E19 JWT\",\n        template_literal: \"\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E17\u0E35\u0E48\u0E1B\u0E49\u0E2D\u0E19\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"\u0E15\u0E31\u0E27\u0E40\u0E25\u0E02\",\n        array: \"\u0E2D\u0E32\u0E23\u0E4C\u0E40\u0E23\u0E22\u0E4C (Array)\",\n        null: \"\u0E44\u0E21\u0E48\u0E21\u0E35\u0E04\u0E48\u0E32 (null)\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `\u0E1B\u0E23\u0E30\u0E40\u0E20\u0E17\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 instanceof ${issue.expected} \u0E41\u0E15\u0E48\u0E44\u0E14\u0E49\u0E23\u0E31\u0E1A ${received}`;\n                }\n                return `\u0E1B\u0E23\u0E30\u0E40\u0E20\u0E17\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 ${expected} \u0E41\u0E15\u0E48\u0E44\u0E14\u0E49\u0E23\u0E31\u0E1A ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `\u0E04\u0E48\u0E32\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19 ${util.stringifyPrimitive(issue.values[0])}`;\n                return `\u0E15\u0E31\u0E27\u0E40\u0E25\u0E37\u0E2D\u0E01\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E04\u0E27\u0E23\u0E40\u0E1B\u0E47\u0E19\u0E2B\u0E19\u0E36\u0E48\u0E07\u0E43\u0E19 ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"\u0E44\u0E21\u0E48\u0E40\u0E01\u0E34\u0E19\" : \"\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `\u0E40\u0E01\u0E34\u0E19\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue.origin ?? \"\u0E04\u0E48\u0E32\"} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue.maximum.toString()} ${sizing.unit ?? \"\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23\"}`;\n                return `\u0E40\u0E01\u0E34\u0E19\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue.origin ?? \"\u0E04\u0E48\u0E32\"} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \"\u0E2D\u0E22\u0E48\u0E32\u0E07\u0E19\u0E49\u0E2D\u0E22\" : \"\u0E21\u0E32\u0E01\u0E01\u0E27\u0E48\u0E32\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue.origin} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `\u0E19\u0E49\u0E2D\u0E22\u0E01\u0E27\u0E48\u0E32\u0E01\u0E33\u0E2B\u0E19\u0E14: ${issue.origin} \u0E04\u0E27\u0E23\u0E21\u0E35${adj} ${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E02\u0E36\u0E49\u0E19\u0E15\u0E49\u0E19\u0E14\u0E49\u0E27\u0E22 \"${_issue.prefix}\"`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E25\u0E07\u0E17\u0E49\u0E32\u0E22\u0E14\u0E49\u0E27\u0E22 \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21\u0E15\u0E49\u0E2D\u0E07\u0E21\u0E35 \"${_issue.includes}\" \u0E2D\u0E22\u0E39\u0E48\u0E43\u0E19\u0E02\u0E49\u0E2D\u0E04\u0E27\u0E32\u0E21`;\n                if (_issue.format === \"regex\")\n                    return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E15\u0E49\u0E2D\u0E07\u0E15\u0E23\u0E07\u0E01\u0E31\u0E1A\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E17\u0E35\u0E48\u0E01\u0E33\u0E2B\u0E19\u0E14 ${_issue.pattern}`;\n                return `\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `\u0E15\u0E31\u0E27\u0E40\u0E25\u0E02\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E15\u0E49\u0E2D\u0E07\u0E40\u0E1B\u0E47\u0E19\u0E08\u0E33\u0E19\u0E27\u0E19\u0E17\u0E35\u0E48\u0E2B\u0E32\u0E23\u0E14\u0E49\u0E27\u0E22 ${issue.divisor} \u0E44\u0E14\u0E49\u0E25\u0E07\u0E15\u0E31\u0E27`;\n            case \"unrecognized_keys\":\n                return `\u0E1E\u0E1A\u0E04\u0E35\u0E22\u0E4C\u0E17\u0E35\u0E48\u0E44\u0E21\u0E48\u0E23\u0E39\u0E49\u0E08\u0E31\u0E01: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `\u0E04\u0E35\u0E22\u0E4C\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07\u0E43\u0E19 ${issue.origin}`;\n            case \"invalid_union\":\n                return \"\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07: \u0E44\u0E21\u0E48\u0E15\u0E23\u0E07\u0E01\u0E31\u0E1A\u0E23\u0E39\u0E1B\u0E41\u0E1A\u0E1A\u0E22\u0E39\u0E40\u0E19\u0E35\u0E22\u0E19\u0E17\u0E35\u0E48\u0E01\u0E33\u0E2B\u0E19\u0E14\u0E44\u0E27\u0E49\";\n            case \"invalid_element\":\n                return `\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07\u0E43\u0E19 ${issue.origin}`;\n            default:\n                return `\u0E02\u0E49\u0E2D\u0E21\u0E39\u0E25\u0E44\u0E21\u0E48\u0E16\u0E39\u0E01\u0E15\u0E49\u0E2D\u0E07`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"karakter\", verb: \"olmal\u0131\" },\n        file: { unit: \"bayt\", verb: \"olmal\u0131\" },\n        array: { unit: \"\u00F6\u011Fe\", verb: \"olmal\u0131\" },\n        set: { unit: \"\u00F6\u011Fe\", verb: \"olmal\u0131\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"girdi\",\n        email: \"e-posta adresi\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO tarih ve saat\",\n        date: \"ISO tarih\",\n        time: \"ISO saat\",\n        duration: \"ISO s\u00FCre\",\n        ipv4: \"IPv4 adresi\",\n        ipv6: \"IPv6 adresi\",\n        cidrv4: \"IPv4 aral\u0131\u011F\u0131\",\n        cidrv6: \"IPv6 aral\u0131\u011F\u0131\",\n        base64: \"base64 ile \u015Fifrelenmi\u015F metin\",\n        base64url: \"base64url ile \u015Fifrelenmi\u015F metin\",\n        json_string: \"JSON dizesi\",\n        e164: \"E.164 say\u0131s\u0131\",\n        jwt: \"JWT\",\n        template_literal: \"\u015Eablon dizesi\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Ge\u00E7ersiz de\u011Fer: beklenen instanceof ${issue.expected}, al\u0131nan ${received}`;\n                }\n                return `Ge\u00E7ersiz de\u011Fer: beklenen ${expected}, al\u0131nan ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Ge\u00E7ersiz de\u011Fer: beklenen ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Ge\u00E7ersiz se\u00E7enek: a\u015Fa\u011F\u0131dakilerden biri olmal\u0131: ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `\u00C7ok b\u00FCy\u00FCk: beklenen ${issue.origin ?? \"de\u011Fer\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u00F6\u011Fe\"}`;\n                return `\u00C7ok b\u00FCy\u00FCk: beklenen ${issue.origin ?? \"de\u011Fer\"} ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `\u00C7ok k\u00FC\u00E7\u00FCk: beklenen ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                return `\u00C7ok k\u00FC\u00E7\u00FCk: beklenen ${issue.origin} ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Ge\u00E7ersiz metin: \"${_issue.prefix}\" ile ba\u015Flamal\u0131`;\n                if (_issue.format === \"ends_with\")\n                    return `Ge\u00E7ersiz metin: \"${_issue.suffix}\" ile bitmeli`;\n                if (_issue.format === \"includes\")\n                    return `Ge\u00E7ersiz metin: \"${_issue.includes}\" i\u00E7ermeli`;\n                if (_issue.format === \"regex\")\n                    return `Ge\u00E7ersiz metin: ${_issue.pattern} desenine uymal\u0131`;\n                return `Ge\u00E7ersiz ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Ge\u00E7ersiz say\u0131: ${issue.divisor} ile tam b\u00F6l\u00FCnebilmeli`;\n            case \"unrecognized_keys\":\n                return `Tan\u0131nmayan anahtar${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `${issue.origin} i\u00E7inde ge\u00E7ersiz anahtar`;\n            case \"invalid_union\":\n                return \"Ge\u00E7ersiz de\u011Fer\";\n            case \"invalid_element\":\n                return `${issue.origin} i\u00E7inde ge\u00E7ersiz de\u011Fer`;\n            default:\n                return `Ge\u00E7ersiz de\u011Fer`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"\u0441\u0438\u043C\u0432\u043E\u043B\u0456\u0432\", verb: \"\u043C\u0430\u0442\u0438\u043C\u0435\" },\n        file: { unit: \"\u0431\u0430\u0439\u0442\u0456\u0432\", verb: \"\u043C\u0430\u0442\u0438\u043C\u0435\" },\n        array: { unit: \"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432\", verb: \"\u043C\u0430\u0442\u0438\u043C\u0435\" },\n        set: { unit: \"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432\", verb: \"\u043C\u0430\u0442\u0438\u043C\u0435\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"\u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456\",\n        email: \"\u0430\u0434\u0440\u0435\u0441\u0430 \u0435\u043B\u0435\u043A\u0442\u0440\u043E\u043D\u043D\u043E\u0457 \u043F\u043E\u0448\u0442\u0438\",\n        url: \"URL\",\n        emoji: \"\u0435\u043C\u043E\u0434\u0437\u0456\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"\u0434\u0430\u0442\u0430 \u0442\u0430 \u0447\u0430\u0441 ISO\",\n        date: \"\u0434\u0430\u0442\u0430 ISO\",\n        time: \"\u0447\u0430\u0441 ISO\",\n        duration: \"\u0442\u0440\u0438\u0432\u0430\u043B\u0456\u0441\u0442\u044C ISO\",\n        ipv4: \"\u0430\u0434\u0440\u0435\u0441\u0430 IPv4\",\n        ipv6: \"\u0430\u0434\u0440\u0435\u0441\u0430 IPv6\",\n        cidrv4: \"\u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D IPv4\",\n        cidrv6: \"\u0434\u0456\u0430\u043F\u0430\u0437\u043E\u043D IPv6\",\n        base64: \"\u0440\u044F\u0434\u043E\u043A \u0443 \u043A\u043E\u0434\u0443\u0432\u0430\u043D\u043D\u0456 base64\",\n        base64url: \"\u0440\u044F\u0434\u043E\u043A \u0443 \u043A\u043E\u0434\u0443\u0432\u0430\u043D\u043D\u0456 base64url\",\n        json_string: \"\u0440\u044F\u0434\u043E\u043A JSON\",\n        e164: \"\u043D\u043E\u043C\u0435\u0440 E.164\",\n        jwt: \"JWT\",\n        template_literal: \"\u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"\u0447\u0438\u0441\u043B\u043E\",\n        array: \"\u043C\u0430\u0441\u0438\u0432\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F instanceof ${issue.expected}, \u043E\u0442\u0440\u0438\u043C\u0430\u043D\u043E ${received}`;\n                }\n                return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F ${expected}, \u043E\u0442\u0440\u0438\u043C\u0430\u043D\u043E ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F ${util.stringifyPrimitive(issue.values[0])}`;\n                return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0430 \u043E\u043F\u0446\u0456\u044F: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F \u043E\u0434\u043D\u0435 \u0437 ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue.origin ?? \"\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u0435\u043B\u0435\u043C\u0435\u043D\u0442\u0456\u0432\"}`;\n                return `\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u0432\u0435\u043B\u0438\u043A\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue.origin ?? \"\u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F\"} \u0431\u0443\u0434\u0435 ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u043C\u0430\u043B\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `\u0417\u0430\u043D\u0430\u0434\u0442\u043E \u043C\u0430\u043B\u0435: \u043E\u0447\u0456\u043A\u0443\u0454\u0442\u044C\u0441\u044F, \u0449\u043E ${issue.origin} \u0431\u0443\u0434\u0435 ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u043F\u043E\u0447\u0438\u043D\u0430\u0442\u0438\u0441\u044F \u0437 \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u0437\u0430\u043A\u0456\u043D\u0447\u0443\u0432\u0430\u0442\u0438\u0441\u044F \u043D\u0430 \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u043C\u0456\u0441\u0442\u0438\u0442\u0438 \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u0440\u044F\u0434\u043E\u043A: \u043F\u043E\u0432\u0438\u043D\u0435\u043D \u0432\u0456\u0434\u043F\u043E\u0432\u0456\u0434\u0430\u0442\u0438 \u0448\u0430\u0431\u043B\u043E\u043D\u0443 ${_issue.pattern}`;\n                return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0435 \u0447\u0438\u0441\u043B\u043E: \u043F\u043E\u0432\u0438\u043D\u043D\u043E \u0431\u0443\u0442\u0438 \u043A\u0440\u0430\u0442\u043D\u0438\u043C ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `\u041D\u0435\u0440\u043E\u0437\u043F\u0456\u0437\u043D\u0430\u043D\u0438\u0439 \u043A\u043B\u044E\u0447${issue.keys.length > 1 ? \"\u0456\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0438\u0439 \u043A\u043B\u044E\u0447 \u0443 ${issue.origin}`;\n            case \"invalid_union\":\n                return \"\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456\";\n            case \"invalid_element\":\n                return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u043D\u044F \u0443 ${issue.origin}`;\n            default:\n                return `\u041D\u0435\u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0456 \u0432\u0445\u0456\u0434\u043D\u0456 \u0434\u0430\u043D\u0456`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import uk from \"./uk.js\";\n/** @deprecated Use `uk` instead. */\nexport default function () {\n    return uk();\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"\u062D\u0631\u0648\u0641\", verb: \"\u06C1\u0648\u0646\u0627\" },\n        file: { unit: \"\u0628\u0627\u0626\u0679\u0633\", verb: \"\u06C1\u0648\u0646\u0627\" },\n        array: { unit: \"\u0622\u0626\u0679\u0645\u0632\", verb: \"\u06C1\u0648\u0646\u0627\" },\n        set: { unit: \"\u0622\u0626\u0679\u0645\u0632\", verb: \"\u06C1\u0648\u0646\u0627\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"\u0627\u0646 \u067E\u0679\",\n        email: \"\u0627\u06CC \u0645\u06CC\u0644 \u0627\u06CC\u0688\u0631\u06CC\u0633\",\n        url: \"\u06CC\u0648 \u0622\u0631 \u0627\u06CC\u0644\",\n        emoji: \"\u0627\u06CC\u0645\u0648\u062C\u06CC\",\n        uuid: \"\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC\",\n        uuidv4: \"\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC \u0648\u06CC 4\",\n        uuidv6: \"\u06CC\u0648 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC \u0648\u06CC 6\",\n        nanoid: \"\u0646\u06CC\u0646\u0648 \u0622\u0626\u06CC \u0688\u06CC\",\n        guid: \"\u062C\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC\",\n        cuid: \"\u0633\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC\",\n        cuid2: \"\u0633\u06CC \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC 2\",\n        ulid: \"\u06CC\u0648 \u0627\u06CC\u0644 \u0622\u0626\u06CC \u0688\u06CC\",\n        xid: \"\u0627\u06CC\u06A9\u0633 \u0622\u0626\u06CC \u0688\u06CC\",\n        ksuid: \"\u06A9\u06D2 \u0627\u06CC\u0633 \u06CC\u0648 \u0622\u0626\u06CC \u0688\u06CC\",\n        datetime: \"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0688\u06CC\u0679 \u0679\u0627\u0626\u0645\",\n        date: \"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u062A\u0627\u0631\u06CC\u062E\",\n        time: \"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0648\u0642\u062A\",\n        duration: \"\u0622\u0626\u06CC \u0627\u06CC\u0633 \u0627\u0648 \u0645\u062F\u062A\",\n        ipv4: \"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 4 \u0627\u06CC\u0688\u0631\u06CC\u0633\",\n        ipv6: \"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 6 \u0627\u06CC\u0688\u0631\u06CC\u0633\",\n        cidrv4: \"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 4 \u0631\u06CC\u0646\u062C\",\n        cidrv6: \"\u0622\u0626\u06CC \u067E\u06CC \u0648\u06CC 6 \u0631\u06CC\u0646\u062C\",\n        base64: \"\u0628\u06CC\u0633 64 \u0627\u0646 \u06A9\u0648\u0688\u0688 \u0633\u0679\u0631\u0646\u06AF\",\n        base64url: \"\u0628\u06CC\u0633 64 \u06CC\u0648 \u0622\u0631 \u0627\u06CC\u0644 \u0627\u0646 \u06A9\u0648\u0688\u0688 \u0633\u0679\u0631\u0646\u06AF\",\n        json_string: \"\u062C\u06D2 \u0627\u06CC\u0633 \u0627\u0648 \u0627\u06CC\u0646 \u0633\u0679\u0631\u0646\u06AF\",\n        e164: \"\u0627\u06CC 164 \u0646\u0645\u0628\u0631\",\n        jwt: \"\u062C\u06D2 \u0688\u0628\u0644\u06CC\u0648 \u0679\u06CC\",\n        template_literal: \"\u0627\u0646 \u067E\u0679\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"\u0646\u0645\u0628\u0631\",\n        array: \"\u0622\u0631\u06D2\",\n        null: \"\u0646\u0644\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: instanceof ${issue.expected} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627\u060C ${received} \u0645\u0648\u0635\u0648\u0644 \u06C1\u0648\u0627`;\n                }\n                return `\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: ${expected} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627\u060C ${received} \u0645\u0648\u0635\u0648\u0644 \u06C1\u0648\u0627`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679: ${util.stringifyPrimitive(issue.values[0])} \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`;\n                return `\u063A\u0644\u0637 \u0622\u067E\u0634\u0646: ${util.joinValues(issue.values, \"|\")} \u0645\u06CC\u06BA \u0633\u06D2 \u0627\u06CC\u06A9 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `\u0628\u06C1\u062A \u0628\u0691\u0627: ${issue.origin ?? \"\u0648\u06CC\u0644\u06CC\u0648\"} \u06A9\u06D2 ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u0639\u0646\u0627\u0635\u0631\"} \u06C1\u0648\u0646\u06D2 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u06D2`;\n                return `\u0628\u06C1\u062A \u0628\u0691\u0627: ${issue.origin ?? \"\u0648\u06CC\u0644\u06CC\u0648\"} \u06A9\u0627 ${adj}${issue.maximum.toString()} \u06C1\u0648\u0646\u0627 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `\u0628\u06C1\u062A \u0686\u06BE\u0648\u0679\u0627: ${issue.origin} \u06A9\u06D2 ${adj}${issue.minimum.toString()} ${sizing.unit} \u06C1\u0648\u0646\u06D2 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u06D2`;\n                }\n                return `\u0628\u06C1\u062A \u0686\u06BE\u0648\u0679\u0627: ${issue.origin} \u06A9\u0627 ${adj}${issue.minimum.toString()} \u06C1\u0648\u0646\u0627 \u0645\u062A\u0648\u0642\u0639 \u062A\u06BE\u0627`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: \"${_issue.prefix}\" \u0633\u06D2 \u0634\u0631\u0648\u0639 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: \"${_issue.suffix}\" \u067E\u0631 \u062E\u062A\u0645 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;\n                if (_issue.format === \"includes\")\n                    return `\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: \"${_issue.includes}\" \u0634\u0627\u0645\u0644 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;\n                if (_issue.format === \"regex\")\n                    return `\u063A\u0644\u0637 \u0633\u0679\u0631\u0646\u06AF: \u067E\u06CC\u0679\u0631\u0646 ${_issue.pattern} \u0633\u06D2 \u0645\u06CC\u0686 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;\n                return `\u063A\u0644\u0637 ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `\u063A\u0644\u0637 \u0646\u0645\u0628\u0631: ${issue.divisor} \u06A9\u0627 \u0645\u0636\u0627\u0639\u0641 \u06C1\u0648\u0646\u0627 \u0686\u0627\u06C1\u06CC\u06D2`;\n            case \"unrecognized_keys\":\n                return `\u063A\u06CC\u0631 \u062A\u0633\u0644\u06CC\u0645 \u0634\u062F\u06C1 \u06A9\u06CC${issue.keys.length > 1 ? \"\u0632\" : \"\"}: ${util.joinValues(issue.keys, \"\u060C \")}`;\n            case \"invalid_key\":\n                return `${issue.origin} \u0645\u06CC\u06BA \u063A\u0644\u0637 \u06A9\u06CC`;\n            case \"invalid_union\":\n                return \"\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679\";\n            case \"invalid_element\":\n                return `${issue.origin} \u0645\u06CC\u06BA \u063A\u0644\u0637 \u0648\u06CC\u0644\u06CC\u0648`;\n            default:\n                return `\u063A\u0644\u0637 \u0627\u0646 \u067E\u0679`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"belgi\", verb: \"bo\u2018lishi kerak\" },\n        file: { unit: \"bayt\", verb: \"bo\u2018lishi kerak\" },\n        array: { unit: \"element\", verb: \"bo\u2018lishi kerak\" },\n        set: { unit: \"element\", verb: \"bo\u2018lishi kerak\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"kirish\",\n        email: \"elektron pochta manzili\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO sana va vaqti\",\n        date: \"ISO sana\",\n        time: \"ISO vaqt\",\n        duration: \"ISO davomiylik\",\n        ipv4: \"IPv4 manzil\",\n        ipv6: \"IPv6 manzil\",\n        mac: \"MAC manzil\",\n        cidrv4: \"IPv4 diapazon\",\n        cidrv6: \"IPv6 diapazon\",\n        base64: \"base64 kodlangan satr\",\n        base64url: \"base64url kodlangan satr\",\n        json_string: \"JSON satr\",\n        e164: \"E.164 raqam\",\n        jwt: \"JWT\",\n        template_literal: \"kirish\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"raqam\",\n        array: \"massiv\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `Noto\u2018g\u2018ri kirish: kutilgan instanceof ${issue.expected}, qabul qilingan ${received}`;\n                }\n                return `Noto\u2018g\u2018ri kirish: kutilgan ${expected}, qabul qilingan ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `Noto\u2018g\u2018ri kirish: kutilgan ${util.stringifyPrimitive(issue.values[0])}`;\n                return `Noto\u2018g\u2018ri variant: quyidagilardan biri kutilgan ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Juda katta: kutilgan ${issue.origin ?? \"qiymat\"} ${adj}${issue.maximum.toString()} ${sizing.unit} ${sizing.verb}`;\n                return `Juda katta: kutilgan ${issue.origin ?? \"qiymat\"} ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Juda kichik: kutilgan ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit} ${sizing.verb}`;\n                }\n                return `Juda kichik: kutilgan ${issue.origin} ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Noto\u2018g\u2018ri satr: \"${_issue.prefix}\" bilan boshlanishi kerak`;\n                if (_issue.format === \"ends_with\")\n                    return `Noto\u2018g\u2018ri satr: \"${_issue.suffix}\" bilan tugashi kerak`;\n                if (_issue.format === \"includes\")\n                    return `Noto\u2018g\u2018ri satr: \"${_issue.includes}\" ni o\u2018z ichiga olishi kerak`;\n                if (_issue.format === \"regex\")\n                    return `Noto\u2018g\u2018ri satr: ${_issue.pattern} shabloniga mos kelishi kerak`;\n                return `Noto\u2018g\u2018ri ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `Noto\u2018g\u2018ri raqam: ${issue.divisor} ning karralisi bo\u2018lishi kerak`;\n            case \"unrecognized_keys\":\n                return `Noma\u2019lum kalit${issue.keys.length > 1 ? \"lar\" : \"\"}: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `${issue.origin} dagi kalit noto\u2018g\u2018ri`;\n            case \"invalid_union\":\n                return \"Noto\u2018g\u2018ri kirish\";\n            case \"invalid_element\":\n                return `${issue.origin} da noto\u2018g\u2018ri qiymat`;\n            default:\n                return `Noto\u2018g\u2018ri kirish`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"k\u00FD t\u1EF1\", verb: \"c\u00F3\" },\n        file: { unit: \"byte\", verb: \"c\u00F3\" },\n        array: { unit: \"ph\u1EA7n t\u1EED\", verb: \"c\u00F3\" },\n        set: { unit: \"ph\u1EA7n t\u1EED\", verb: \"c\u00F3\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"\u0111\u1EA7u v\u00E0o\",\n        email: \"\u0111\u1ECBa ch\u1EC9 email\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ng\u00E0y gi\u1EDD ISO\",\n        date: \"ng\u00E0y ISO\",\n        time: \"gi\u1EDD ISO\",\n        duration: \"kho\u1EA3ng th\u1EDDi gian ISO\",\n        ipv4: \"\u0111\u1ECBa ch\u1EC9 IPv4\",\n        ipv6: \"\u0111\u1ECBa ch\u1EC9 IPv6\",\n        cidrv4: \"d\u1EA3i IPv4\",\n        cidrv6: \"d\u1EA3i IPv6\",\n        base64: \"chu\u1ED7i m\u00E3 h\u00F3a base64\",\n        base64url: \"chu\u1ED7i m\u00E3 h\u00F3a base64url\",\n        json_string: \"chu\u1ED7i JSON\",\n        e164: \"s\u1ED1 E.164\",\n        jwt: \"JWT\",\n        template_literal: \"\u0111\u1EA7u v\u00E0o\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"s\u1ED1\",\n        array: \"m\u1EA3ng\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `\u0110\u1EA7u v\u00E0o kh\u00F4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i instanceof ${issue.expected}, nh\u1EADn \u0111\u01B0\u1EE3c ${received}`;\n                }\n                return `\u0110\u1EA7u v\u00E0o kh\u00F4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i ${expected}, nh\u1EADn \u0111\u01B0\u1EE3c ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `\u0110\u1EA7u v\u00E0o kh\u00F4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i ${util.stringifyPrimitive(issue.values[0])}`;\n                return `T\u00F9y ch\u1ECDn kh\u00F4ng h\u1EE3p l\u1EC7: mong \u0111\u1EE3i m\u1ED9t trong c\u00E1c gi\u00E1 tr\u1ECB ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `Qu\u00E1 l\u1EDBn: mong \u0111\u1EE3i ${issue.origin ?? \"gi\u00E1 tr\u1ECB\"} ${sizing.verb} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"ph\u1EA7n t\u1EED\"}`;\n                return `Qu\u00E1 l\u1EDBn: mong \u0111\u1EE3i ${issue.origin ?? \"gi\u00E1 tr\u1ECB\"} ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `Qu\u00E1 nh\u1ECF: mong \u0111\u1EE3i ${issue.origin} ${sizing.verb} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `Qu\u00E1 nh\u1ECF: mong \u0111\u1EE3i ${issue.origin} ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `Chu\u1ED7i kh\u00F4ng h\u1EE3p l\u1EC7: ph\u1EA3i b\u1EAFt \u0111\u1EA7u b\u1EB1ng \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `Chu\u1ED7i kh\u00F4ng h\u1EE3p l\u1EC7: ph\u1EA3i k\u1EBFt th\u00FAc b\u1EB1ng \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `Chu\u1ED7i kh\u00F4ng h\u1EE3p l\u1EC7: ph\u1EA3i bao g\u1ED3m \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `Chu\u1ED7i kh\u00F4ng h\u1EE3p l\u1EC7: ph\u1EA3i kh\u1EDBp v\u1EDBi m\u1EABu ${_issue.pattern}`;\n                return `${FormatDictionary[_issue.format] ?? issue.format} kh\u00F4ng h\u1EE3p l\u1EC7`;\n            }\n            case \"not_multiple_of\":\n                return `S\u1ED1 kh\u00F4ng h\u1EE3p l\u1EC7: ph\u1EA3i l\u00E0 b\u1ED9i s\u1ED1 c\u1EE7a ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `Kh\u00F3a kh\u00F4ng \u0111\u01B0\u1EE3c nh\u1EADn d\u1EA1ng: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `Kh\u00F3a kh\u00F4ng h\u1EE3p l\u1EC7 trong ${issue.origin}`;\n            case \"invalid_union\":\n                return \"\u0110\u1EA7u v\u00E0o kh\u00F4ng h\u1EE3p l\u1EC7\";\n            case \"invalid_element\":\n                return `Gi\u00E1 tr\u1ECB kh\u00F4ng h\u1EE3p l\u1EC7 trong ${issue.origin}`;\n            default:\n                return `\u0110\u1EA7u v\u00E0o kh\u00F4ng h\u1EE3p l\u1EC7`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"\u5B57\u7B26\", verb: \"\u5305\u542B\" },\n        file: { unit: \"\u5B57\u8282\", verb: \"\u5305\u542B\" },\n        array: { unit: \"\u9879\", verb: \"\u5305\u542B\" },\n        set: { unit: \"\u9879\", verb: \"\u5305\u542B\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"\u8F93\u5165\",\n        email: \"\u7535\u5B50\u90AE\u4EF6\",\n        url: \"URL\",\n        emoji: \"\u8868\u60C5\u7B26\u53F7\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO\u65E5\u671F\u65F6\u95F4\",\n        date: \"ISO\u65E5\u671F\",\n        time: \"ISO\u65F6\u95F4\",\n        duration: \"ISO\u65F6\u957F\",\n        ipv4: \"IPv4\u5730\u5740\",\n        ipv6: \"IPv6\u5730\u5740\",\n        cidrv4: \"IPv4\u7F51\u6BB5\",\n        cidrv6: \"IPv6\u7F51\u6BB5\",\n        base64: \"base64\u7F16\u7801\u5B57\u7B26\u4E32\",\n        base64url: \"base64url\u7F16\u7801\u5B57\u7B26\u4E32\",\n        json_string: \"JSON\u5B57\u7B26\u4E32\",\n        e164: \"E.164\u53F7\u7801\",\n        jwt: \"JWT\",\n        template_literal: \"\u8F93\u5165\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"\u6570\u5B57\",\n        array: \"\u6570\u7EC4\",\n        null: \"\u7A7A\u503C(null)\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B instanceof ${issue.expected}\uFF0C\u5B9E\u9645\u63A5\u6536 ${received}`;\n                }\n                return `\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B ${expected}\uFF0C\u5B9E\u9645\u63A5\u6536 ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `\u65E0\u6548\u8F93\u5165\uFF1A\u671F\u671B ${util.stringifyPrimitive(issue.values[0])}`;\n                return `\u65E0\u6548\u9009\u9879\uFF1A\u671F\u671B\u4EE5\u4E0B\u4E4B\u4E00 ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `\u6570\u503C\u8FC7\u5927\uFF1A\u671F\u671B ${issue.origin ?? \"\u503C\"} ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u4E2A\u5143\u7D20\"}`;\n                return `\u6570\u503C\u8FC7\u5927\uFF1A\u671F\u671B ${issue.origin ?? \"\u503C\"} ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `\u6570\u503C\u8FC7\u5C0F\uFF1A\u671F\u671B ${issue.origin} ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `\u6570\u503C\u8FC7\u5C0F\uFF1A\u671F\u671B ${issue.origin} ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u4EE5 \"${_issue.prefix}\" \u5F00\u5934`;\n                if (_issue.format === \"ends_with\")\n                    return `\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u4EE5 \"${_issue.suffix}\" \u7ED3\u5C3E`;\n                if (_issue.format === \"includes\")\n                    return `\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u5305\u542B \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `\u65E0\u6548\u5B57\u7B26\u4E32\uFF1A\u5FC5\u987B\u6EE1\u8DB3\u6B63\u5219\u8868\u8FBE\u5F0F ${_issue.pattern}`;\n                return `\u65E0\u6548${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `\u65E0\u6548\u6570\u5B57\uFF1A\u5FC5\u987B\u662F ${issue.divisor} \u7684\u500D\u6570`;\n            case \"unrecognized_keys\":\n                return `\u51FA\u73B0\u672A\u77E5\u7684\u952E(key): ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `${issue.origin} \u4E2D\u7684\u952E(key)\u65E0\u6548`;\n            case \"invalid_union\":\n                return \"\u65E0\u6548\u8F93\u5165\";\n            case \"invalid_element\":\n                return `${issue.origin} \u4E2D\u5305\u542B\u65E0\u6548\u503C(value)`;\n            default:\n                return `\u65E0\u6548\u8F93\u5165`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"\u5B57\u5143\", verb: \"\u64C1\u6709\" },\n        file: { unit: \"\u4F4D\u5143\u7D44\", verb: \"\u64C1\u6709\" },\n        array: { unit: \"\u9805\u76EE\", verb: \"\u64C1\u6709\" },\n        set: { unit: \"\u9805\u76EE\", verb: \"\u64C1\u6709\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"\u8F38\u5165\",\n        email: \"\u90F5\u4EF6\u5730\u5740\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"ISO \u65E5\u671F\u6642\u9593\",\n        date: \"ISO \u65E5\u671F\",\n        time: \"ISO \u6642\u9593\",\n        duration: \"ISO \u671F\u9593\",\n        ipv4: \"IPv4 \u4F4D\u5740\",\n        ipv6: \"IPv6 \u4F4D\u5740\",\n        cidrv4: \"IPv4 \u7BC4\u570D\",\n        cidrv6: \"IPv6 \u7BC4\u570D\",\n        base64: \"base64 \u7DE8\u78BC\u5B57\u4E32\",\n        base64url: \"base64url \u7DE8\u78BC\u5B57\u4E32\",\n        json_string: \"JSON \u5B57\u4E32\",\n        e164: \"E.164 \u6578\u503C\",\n        jwt: \"JWT\",\n        template_literal: \"\u8F38\u5165\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA instanceof ${issue.expected}\uFF0C\u4F46\u6536\u5230 ${received}`;\n                }\n                return `\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA ${expected}\uFF0C\u4F46\u6536\u5230 ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `\u7121\u6548\u7684\u8F38\u5165\u503C\uFF1A\u9810\u671F\u70BA ${util.stringifyPrimitive(issue.values[0])}`;\n                return `\u7121\u6548\u7684\u9078\u9805\uFF1A\u9810\u671F\u70BA\u4EE5\u4E0B\u5176\u4E2D\u4E4B\u4E00 ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `\u6578\u503C\u904E\u5927\uFF1A\u9810\u671F ${issue.origin ?? \"\u503C\"} \u61C9\u70BA ${adj}${issue.maximum.toString()} ${sizing.unit ?? \"\u500B\u5143\u7D20\"}`;\n                return `\u6578\u503C\u904E\u5927\uFF1A\u9810\u671F ${issue.origin ?? \"\u503C\"} \u61C9\u70BA ${adj}${issue.maximum.toString()}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing) {\n                    return `\u6578\u503C\u904E\u5C0F\uFF1A\u9810\u671F ${issue.origin} \u61C9\u70BA ${adj}${issue.minimum.toString()} ${sizing.unit}`;\n                }\n                return `\u6578\u503C\u904E\u5C0F\uFF1A\u9810\u671F ${issue.origin} \u61C9\u70BA ${adj}${issue.minimum.toString()}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\") {\n                    return `\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u4EE5 \"${_issue.prefix}\" \u958B\u982D`;\n                }\n                if (_issue.format === \"ends_with\")\n                    return `\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u4EE5 \"${_issue.suffix}\" \u7D50\u5C3E`;\n                if (_issue.format === \"includes\")\n                    return `\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u5305\u542B \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `\u7121\u6548\u7684\u5B57\u4E32\uFF1A\u5FC5\u9808\u7B26\u5408\u683C\u5F0F ${_issue.pattern}`;\n                return `\u7121\u6548\u7684 ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `\u7121\u6548\u7684\u6578\u5B57\uFF1A\u5FC5\u9808\u70BA ${issue.divisor} \u7684\u500D\u6578`;\n            case \"unrecognized_keys\":\n                return `\u7121\u6CD5\u8B58\u5225\u7684\u9375\u503C${issue.keys.length > 1 ? \"\u5011\" : \"\"}\uFF1A${util.joinValues(issue.keys, \"\u3001\")}`;\n            case \"invalid_key\":\n                return `${issue.origin} \u4E2D\u6709\u7121\u6548\u7684\u9375\u503C`;\n            case \"invalid_union\":\n                return \"\u7121\u6548\u7684\u8F38\u5165\u503C\";\n            case \"invalid_element\":\n                return `${issue.origin} \u4E2D\u6709\u7121\u6548\u7684\u503C`;\n            default:\n                return `\u7121\u6548\u7684\u8F38\u5165\u503C`;\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "import * as util from \"../core/util.js\";\nconst error = () => {\n    const Sizable = {\n        string: { unit: \"\u00E0mi\", verb: \"n\u00ED\" },\n        file: { unit: \"bytes\", verb: \"n\u00ED\" },\n        array: { unit: \"nkan\", verb: \"n\u00ED\" },\n        set: { unit: \"nkan\", verb: \"n\u00ED\" },\n    };\n    function getSizing(origin) {\n        return Sizable[origin] ?? null;\n    }\n    const FormatDictionary = {\n        regex: \"\u1EB9\u0300r\u1ECD \u00ECb\u00E1w\u1ECDl\u00E9\",\n        email: \"\u00E0d\u00EDr\u1EB9\u0301s\u00EC \u00ECm\u1EB9\u0301l\u00EC\",\n        url: \"URL\",\n        emoji: \"emoji\",\n        uuid: \"UUID\",\n        uuidv4: \"UUIDv4\",\n        uuidv6: \"UUIDv6\",\n        nanoid: \"nanoid\",\n        guid: \"GUID\",\n        cuid: \"cuid\",\n        cuid2: \"cuid2\",\n        ulid: \"ULID\",\n        xid: \"XID\",\n        ksuid: \"KSUID\",\n        datetime: \"\u00E0k\u00F3k\u00F2 ISO\",\n        date: \"\u1ECDj\u1ECD\u0301 ISO\",\n        time: \"\u00E0k\u00F3k\u00F2 ISO\",\n        duration: \"\u00E0k\u00F3k\u00F2 t\u00F3 p\u00E9 ISO\",\n        ipv4: \"\u00E0d\u00EDr\u1EB9\u0301s\u00EC IPv4\",\n        ipv6: \"\u00E0d\u00EDr\u1EB9\u0301s\u00EC IPv6\",\n        cidrv4: \"\u00E0gb\u00E8gb\u00E8 IPv4\",\n        cidrv6: \"\u00E0gb\u00E8gb\u00E8 IPv6\",\n        base64: \"\u1ECD\u0300r\u1ECD\u0300 t\u00ED a k\u1ECD\u0301 n\u00ED base64\",\n        base64url: \"\u1ECD\u0300r\u1ECD\u0300 base64url\",\n        json_string: \"\u1ECD\u0300r\u1ECD\u0300 JSON\",\n        e164: \"n\u1ECD\u0301mb\u00E0 E.164\",\n        jwt: \"JWT\",\n        template_literal: \"\u1EB9\u0300r\u1ECD \u00ECb\u00E1w\u1ECDl\u00E9\",\n    };\n    const TypeDictionary = {\n        nan: \"NaN\",\n        number: \"n\u1ECD\u0301mb\u00E0\",\n        array: \"akop\u1ECD\",\n    };\n    return (issue) => {\n        switch (issue.code) {\n            case \"invalid_type\": {\n                const expected = TypeDictionary[issue.expected] ?? issue.expected;\n                const receivedType = util.parsedType(issue.input);\n                const received = TypeDictionary[receivedType] ?? receivedType;\n                if (/^[A-Z]/.test(issue.expected)) {\n                    return `\u00CCb\u00E1w\u1ECDl\u00E9 a\u1E63\u00EC\u1E63e: a n\u00ED l\u00E1ti fi instanceof ${issue.expected}, \u00E0m\u1ECD\u0300 a r\u00ED ${received}`;\n                }\n                return `\u00CCb\u00E1w\u1ECDl\u00E9 a\u1E63\u00EC\u1E63e: a n\u00ED l\u00E1ti fi ${expected}, \u00E0m\u1ECD\u0300 a r\u00ED ${received}`;\n            }\n            case \"invalid_value\":\n                if (issue.values.length === 1)\n                    return `\u00CCb\u00E1w\u1ECDl\u00E9 a\u1E63\u00EC\u1E63e: a n\u00ED l\u00E1ti fi ${util.stringifyPrimitive(issue.values[0])}`;\n                return `\u00C0\u1E63\u00E0y\u00E0n a\u1E63\u00EC\u1E63e: yan \u1ECD\u0300kan l\u00E1ra ${util.joinValues(issue.values, \"|\")}`;\n            case \"too_big\": {\n                const adj = issue.inclusive ? \"<=\" : \"<\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `T\u00F3 p\u1ECD\u0300 j\u00F9: a n\u00ED l\u00E1ti j\u1EB9\u0301 p\u00E9 ${issue.origin ?? \"iye\"} ${sizing.verb} ${adj}${issue.maximum} ${sizing.unit}`;\n                return `T\u00F3 p\u1ECD\u0300 j\u00F9: a n\u00ED l\u00E1ti j\u1EB9\u0301 ${adj}${issue.maximum}`;\n            }\n            case \"too_small\": {\n                const adj = issue.inclusive ? \">=\" : \">\";\n                const sizing = getSizing(issue.origin);\n                if (sizing)\n                    return `K\u00E9r\u00E9 ju: a n\u00ED l\u00E1ti j\u1EB9\u0301 p\u00E9 ${issue.origin} ${sizing.verb} ${adj}${issue.minimum} ${sizing.unit}`;\n                return `K\u00E9r\u00E9 ju: a n\u00ED l\u00E1ti j\u1EB9\u0301 ${adj}${issue.minimum}`;\n            }\n            case \"invalid_format\": {\n                const _issue = issue;\n                if (_issue.format === \"starts_with\")\n                    return `\u1ECC\u0300r\u1ECD\u0300 a\u1E63\u00EC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 b\u1EB9\u0300r\u1EB9\u0300 p\u1EB9\u0300l\u00FA \"${_issue.prefix}\"`;\n                if (_issue.format === \"ends_with\")\n                    return `\u1ECC\u0300r\u1ECD\u0300 a\u1E63\u00EC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 par\u00ED p\u1EB9\u0300l\u00FA \"${_issue.suffix}\"`;\n                if (_issue.format === \"includes\")\n                    return `\u1ECC\u0300r\u1ECD\u0300 a\u1E63\u00EC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 n\u00ED \"${_issue.includes}\"`;\n                if (_issue.format === \"regex\")\n                    return `\u1ECC\u0300r\u1ECD\u0300 a\u1E63\u00EC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 b\u00E1 \u00E0p\u1EB9\u1EB9r\u1EB9 mu ${_issue.pattern}`;\n                return `A\u1E63\u00EC\u1E63e: ${FormatDictionary[_issue.format] ?? issue.format}`;\n            }\n            case \"not_multiple_of\":\n                return `N\u1ECD\u0301mb\u00E0 a\u1E63\u00EC\u1E63e: gb\u1ECD\u0301d\u1ECD\u0300 j\u1EB9\u0301 \u00E8y\u00E0 p\u00EDp\u00EDn ti ${issue.divisor}`;\n            case \"unrecognized_keys\":\n                return `B\u1ECDt\u00ECn\u00EC \u00E0\u00ECm\u1ECD\u0300: ${util.joinValues(issue.keys, \", \")}`;\n            case \"invalid_key\":\n                return `B\u1ECDt\u00ECn\u00EC a\u1E63\u00EC\u1E63e n\u00EDn\u00FA ${issue.origin}`;\n            case \"invalid_union\":\n                return \"\u00CCb\u00E1w\u1ECDl\u00E9 a\u1E63\u00EC\u1E63e\";\n            case \"invalid_element\":\n                return `Iye a\u1E63\u00EC\u1E63e n\u00EDn\u00FA ${issue.origin}`;\n            default:\n                return \"\u00CCb\u00E1w\u1ECDl\u00E9 a\u1E63\u00EC\u1E63e\";\n        }\n    };\n};\nexport default function () {\n    return {\n        localeError: error(),\n    };\n}\n", "var _a;\nexport const $output = Symbol(\"ZodOutput\");\nexport const $input = Symbol(\"ZodInput\");\nexport class $ZodRegistry {\n    constructor() {\n        this._map = new WeakMap();\n        this._idmap = new Map();\n    }\n    add(schema, ..._meta) {\n        const meta = _meta[0];\n        this._map.set(schema, meta);\n        if (meta && typeof meta === \"object\" && \"id\" in meta) {\n            this._idmap.set(meta.id, schema);\n        }\n        return this;\n    }\n    clear() {\n        this._map = new WeakMap();\n        this._idmap = new Map();\n        return this;\n    }\n    remove(schema) {\n        const meta = this._map.get(schema);\n        if (meta && typeof meta === \"object\" && \"id\" in meta) {\n            this._idmap.delete(meta.id);\n        }\n        this._map.delete(schema);\n        return this;\n    }\n    get(schema) {\n        // return this._map.get(schema) as any;\n        // inherit metadata\n        const p = schema._zod.parent;\n        if (p) {\n            const pm = { ...(this.get(p) ?? {}) };\n            delete pm.id; // do not inherit id\n            const f = { ...pm, ...this._map.get(schema) };\n            return Object.keys(f).length ? f : undefined;\n        }\n        return this._map.get(schema);\n    }\n    has(schema) {\n        return this._map.has(schema);\n    }\n}\n// registries\nexport function registry() {\n    return new $ZodRegistry();\n}\n(_a = globalThis).__zod_globalRegistry ?? (_a.__zod_globalRegistry = registry());\nexport const globalRegistry = globalThis.__zod_globalRegistry;\n", "import * as checks from \"./checks.js\";\nimport * as registries from \"./registries.js\";\nimport * as schemas from \"./schemas.js\";\nimport * as util from \"./util.js\";\n// @__NO_SIDE_EFFECTS__\nexport function _string(Class, params) {\n    return new Class({\n        type: \"string\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedString(Class, params) {\n    return new Class({\n        type: \"string\",\n        coerce: true,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _email(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"email\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _guid(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"guid\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuid(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"uuid\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv4(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"uuid\",\n        check: \"string_format\",\n        abort: false,\n        version: \"v4\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv6(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"uuid\",\n        check: \"string_format\",\n        abort: false,\n        version: \"v6\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uuidv7(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"uuid\",\n        check: \"string_format\",\n        abort: false,\n        version: \"v7\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _url(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"url\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _emoji(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"emoji\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nanoid(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"nanoid\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cuid(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"cuid\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cuid2(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"cuid2\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ulid(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"ulid\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _xid(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"xid\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ksuid(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"ksuid\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ipv4(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"ipv4\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _ipv6(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"ipv6\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _mac(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"mac\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cidrv4(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"cidrv4\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _cidrv6(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"cidrv6\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _base64(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"base64\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _base64url(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"base64url\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _e164(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"e164\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _jwt(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"jwt\",\n        check: \"string_format\",\n        abort: false,\n        ...util.normalizeParams(params),\n    });\n}\nexport const TimePrecision = {\n    Any: null,\n    Minute: -1,\n    Second: 0,\n    Millisecond: 3,\n    Microsecond: 6,\n};\n// @__NO_SIDE_EFFECTS__\nexport function _isoDateTime(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"datetime\",\n        check: \"string_format\",\n        offset: false,\n        local: false,\n        precision: null,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoDate(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"date\",\n        check: \"string_format\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoTime(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"time\",\n        check: \"string_format\",\n        precision: null,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _isoDuration(Class, params) {\n    return new Class({\n        type: \"string\",\n        format: \"duration\",\n        check: \"string_format\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _number(Class, params) {\n    return new Class({\n        type: \"number\",\n        checks: [],\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedNumber(Class, params) {\n    return new Class({\n        type: \"number\",\n        coerce: true,\n        checks: [],\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int(Class, params) {\n    return new Class({\n        type: \"number\",\n        check: \"number_format\",\n        abort: false,\n        format: \"safeint\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _float32(Class, params) {\n    return new Class({\n        type: \"number\",\n        check: \"number_format\",\n        abort: false,\n        format: \"float32\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _float64(Class, params) {\n    return new Class({\n        type: \"number\",\n        check: \"number_format\",\n        abort: false,\n        format: \"float64\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int32(Class, params) {\n    return new Class({\n        type: \"number\",\n        check: \"number_format\",\n        abort: false,\n        format: \"int32\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uint32(Class, params) {\n    return new Class({\n        type: \"number\",\n        check: \"number_format\",\n        abort: false,\n        format: \"uint32\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _boolean(Class, params) {\n    return new Class({\n        type: \"boolean\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedBoolean(Class, params) {\n    return new Class({\n        type: \"boolean\",\n        coerce: true,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _bigint(Class, params) {\n    return new Class({\n        type: \"bigint\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedBigint(Class, params) {\n    return new Class({\n        type: \"bigint\",\n        coerce: true,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _int64(Class, params) {\n    return new Class({\n        type: \"bigint\",\n        check: \"bigint_format\",\n        abort: false,\n        format: \"int64\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uint64(Class, params) {\n    return new Class({\n        type: \"bigint\",\n        check: \"bigint_format\",\n        abort: false,\n        format: \"uint64\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _symbol(Class, params) {\n    return new Class({\n        type: \"symbol\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _undefined(Class, params) {\n    return new Class({\n        type: \"undefined\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _null(Class, params) {\n    return new Class({\n        type: \"null\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _any(Class) {\n    return new Class({\n        type: \"any\",\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _unknown(Class) {\n    return new Class({\n        type: \"unknown\",\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _never(Class, params) {\n    return new Class({\n        type: \"never\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _void(Class, params) {\n    return new Class({\n        type: \"void\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _date(Class, params) {\n    return new Class({\n        type: \"date\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _coercedDate(Class, params) {\n    return new Class({\n        type: \"date\",\n        coerce: true,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nan(Class, params) {\n    return new Class({\n        type: \"nan\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lt(value, params) {\n    return new checks.$ZodCheckLessThan({\n        check: \"less_than\",\n        ...util.normalizeParams(params),\n        value,\n        inclusive: false,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lte(value, params) {\n    return new checks.$ZodCheckLessThan({\n        check: \"less_than\",\n        ...util.normalizeParams(params),\n        value,\n        inclusive: true,\n    });\n}\nexport { \n/** @deprecated Use `z.lte()` instead. */\n_lte as _max, };\n// @__NO_SIDE_EFFECTS__\nexport function _gt(value, params) {\n    return new checks.$ZodCheckGreaterThan({\n        check: \"greater_than\",\n        ...util.normalizeParams(params),\n        value,\n        inclusive: false,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _gte(value, params) {\n    return new checks.$ZodCheckGreaterThan({\n        check: \"greater_than\",\n        ...util.normalizeParams(params),\n        value,\n        inclusive: true,\n    });\n}\nexport { \n/** @deprecated Use `z.gte()` instead. */\n_gte as _min, };\n// @__NO_SIDE_EFFECTS__\nexport function _positive(params) {\n    return _gt(0, params);\n}\n// negative\n// @__NO_SIDE_EFFECTS__\nexport function _negative(params) {\n    return _lt(0, params);\n}\n// nonpositive\n// @__NO_SIDE_EFFECTS__\nexport function _nonpositive(params) {\n    return _lte(0, params);\n}\n// nonnegative\n// @__NO_SIDE_EFFECTS__\nexport function _nonnegative(params) {\n    return _gte(0, params);\n}\n// @__NO_SIDE_EFFECTS__\nexport function _multipleOf(value, params) {\n    return new checks.$ZodCheckMultipleOf({\n        check: \"multiple_of\",\n        ...util.normalizeParams(params),\n        value,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _maxSize(maximum, params) {\n    return new checks.$ZodCheckMaxSize({\n        check: \"max_size\",\n        ...util.normalizeParams(params),\n        maximum,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _minSize(minimum, params) {\n    return new checks.$ZodCheckMinSize({\n        check: \"min_size\",\n        ...util.normalizeParams(params),\n        minimum,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _size(size, params) {\n    return new checks.$ZodCheckSizeEquals({\n        check: \"size_equals\",\n        ...util.normalizeParams(params),\n        size,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _maxLength(maximum, params) {\n    const ch = new checks.$ZodCheckMaxLength({\n        check: \"max_length\",\n        ...util.normalizeParams(params),\n        maximum,\n    });\n    return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _minLength(minimum, params) {\n    return new checks.$ZodCheckMinLength({\n        check: \"min_length\",\n        ...util.normalizeParams(params),\n        minimum,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _length(length, params) {\n    return new checks.$ZodCheckLengthEquals({\n        check: \"length_equals\",\n        ...util.normalizeParams(params),\n        length,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _regex(pattern, params) {\n    return new checks.$ZodCheckRegex({\n        check: \"string_format\",\n        format: \"regex\",\n        ...util.normalizeParams(params),\n        pattern,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lowercase(params) {\n    return new checks.$ZodCheckLowerCase({\n        check: \"string_format\",\n        format: \"lowercase\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _uppercase(params) {\n    return new checks.$ZodCheckUpperCase({\n        check: \"string_format\",\n        format: \"uppercase\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _includes(includes, params) {\n    return new checks.$ZodCheckIncludes({\n        check: \"string_format\",\n        format: \"includes\",\n        ...util.normalizeParams(params),\n        includes,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _startsWith(prefix, params) {\n    return new checks.$ZodCheckStartsWith({\n        check: \"string_format\",\n        format: \"starts_with\",\n        ...util.normalizeParams(params),\n        prefix,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _endsWith(suffix, params) {\n    return new checks.$ZodCheckEndsWith({\n        check: \"string_format\",\n        format: \"ends_with\",\n        ...util.normalizeParams(params),\n        suffix,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _property(property, schema, params) {\n    return new checks.$ZodCheckProperty({\n        check: \"property\",\n        property,\n        schema,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _mime(types, params) {\n    return new checks.$ZodCheckMimeType({\n        check: \"mime_type\",\n        mime: types,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _overwrite(tx) {\n    return new checks.$ZodCheckOverwrite({\n        check: \"overwrite\",\n        tx,\n    });\n}\n// normalize\n// @__NO_SIDE_EFFECTS__\nexport function _normalize(form) {\n    return _overwrite((input) => input.normalize(form));\n}\n// trim\n// @__NO_SIDE_EFFECTS__\nexport function _trim() {\n    return _overwrite((input) => input.trim());\n}\n// toLowerCase\n// @__NO_SIDE_EFFECTS__\nexport function _toLowerCase() {\n    return _overwrite((input) => input.toLowerCase());\n}\n// toUpperCase\n// @__NO_SIDE_EFFECTS__\nexport function _toUpperCase() {\n    return _overwrite((input) => input.toUpperCase());\n}\n// slugify\n// @__NO_SIDE_EFFECTS__\nexport function _slugify() {\n    return _overwrite((input) => util.slugify(input));\n}\n// @__NO_SIDE_EFFECTS__\nexport function _array(Class, element, params) {\n    return new Class({\n        type: \"array\",\n        element,\n        // get element() {\n        //   return element;\n        // },\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _union(Class, options, params) {\n    return new Class({\n        type: \"union\",\n        options,\n        ...util.normalizeParams(params),\n    });\n}\nexport function _xor(Class, options, params) {\n    return new Class({\n        type: \"union\",\n        options,\n        inclusive: false,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _discriminatedUnion(Class, discriminator, options, params) {\n    return new Class({\n        type: \"union\",\n        options,\n        discriminator,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _intersection(Class, left, right) {\n    return new Class({\n        type: \"intersection\",\n        left,\n        right,\n    });\n}\n// export function _tuple(\n//   Class: util.SchemaClass<schemas.$ZodTuple>,\n//   items: [],\n//   params?: string | $ZodTupleParams\n// ): schemas.$ZodTuple<[], null>;\n// @__NO_SIDE_EFFECTS__\nexport function _tuple(Class, items, _paramsOrRest, _params) {\n    const hasRest = _paramsOrRest instanceof schemas.$ZodType;\n    const params = hasRest ? _params : _paramsOrRest;\n    const rest = hasRest ? _paramsOrRest : null;\n    return new Class({\n        type: \"tuple\",\n        items,\n        rest,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _record(Class, keyType, valueType, params) {\n    return new Class({\n        type: \"record\",\n        keyType,\n        valueType,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _map(Class, keyType, valueType, params) {\n    return new Class({\n        type: \"map\",\n        keyType,\n        valueType,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _set(Class, valueType, params) {\n    return new Class({\n        type: \"set\",\n        valueType,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _enum(Class, values, params) {\n    const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n    // if (Array.isArray(values)) {\n    //   for (const value of values) {\n    //     entries[value] = value;\n    //   }\n    // } else {\n    //   Object.assign(entries, values);\n    // }\n    // const entries: util.EnumLike = {};\n    // for (const val of values) {\n    //   entries[val] = val;\n    // }\n    return new Class({\n        type: \"enum\",\n        entries,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function _nativeEnum(Class, entries, params) {\n    return new Class({\n        type: \"enum\",\n        entries,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _literal(Class, value, params) {\n    return new Class({\n        type: \"literal\",\n        values: Array.isArray(value) ? value : [value],\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _file(Class, params) {\n    return new Class({\n        type: \"file\",\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _transform(Class, fn) {\n    return new Class({\n        type: \"transform\",\n        transform: fn,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _optional(Class, innerType) {\n    return new Class({\n        type: \"optional\",\n        innerType,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nullable(Class, innerType) {\n    return new Class({\n        type: \"nullable\",\n        innerType,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _default(Class, innerType, defaultValue) {\n    return new Class({\n        type: \"default\",\n        innerType,\n        get defaultValue() {\n            return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n        },\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _nonoptional(Class, innerType, params) {\n    return new Class({\n        type: \"nonoptional\",\n        innerType,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _success(Class, innerType) {\n    return new Class({\n        type: \"success\",\n        innerType,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _catch(Class, innerType, catchValue) {\n    return new Class({\n        type: \"catch\",\n        innerType,\n        catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _pipe(Class, in_, out) {\n    return new Class({\n        type: \"pipe\",\n        in: in_,\n        out,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _readonly(Class, innerType) {\n    return new Class({\n        type: \"readonly\",\n        innerType,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _templateLiteral(Class, parts, params) {\n    return new Class({\n        type: \"template_literal\",\n        parts,\n        ...util.normalizeParams(params),\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _lazy(Class, getter) {\n    return new Class({\n        type: \"lazy\",\n        getter,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _promise(Class, innerType) {\n    return new Class({\n        type: \"promise\",\n        innerType,\n    });\n}\n// @__NO_SIDE_EFFECTS__\nexport function _custom(Class, fn, _params) {\n    const norm = util.normalizeParams(_params);\n    norm.abort ?? (norm.abort = true); // default to abort:false\n    const schema = new Class({\n        type: \"custom\",\n        check: \"custom\",\n        fn: fn,\n        ...norm,\n    });\n    return schema;\n}\n// same as _custom but defaults to abort:false\n// @__NO_SIDE_EFFECTS__\nexport function _refine(Class, fn, _params) {\n    const schema = new Class({\n        type: \"custom\",\n        check: \"custom\",\n        fn: fn,\n        ...util.normalizeParams(_params),\n    });\n    return schema;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _superRefine(fn) {\n    const ch = _check((payload) => {\n        payload.addIssue = (issue) => {\n            if (typeof issue === \"string\") {\n                payload.issues.push(util.issue(issue, payload.value, ch._zod.def));\n            }\n            else {\n                // for Zod 3 backwards compatibility\n                const _issue = issue;\n                if (_issue.fatal)\n                    _issue.continue = false;\n                _issue.code ?? (_issue.code = \"custom\");\n                _issue.input ?? (_issue.input = payload.value);\n                _issue.inst ?? (_issue.inst = ch);\n                _issue.continue ?? (_issue.continue = !ch._zod.def.abort); // abort is always undefined, so this is always true...\n                payload.issues.push(util.issue(_issue));\n            }\n        };\n        return fn(payload.value, payload);\n    });\n    return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _check(fn, params) {\n    const ch = new checks.$ZodCheck({\n        check: \"custom\",\n        ...util.normalizeParams(params),\n    });\n    ch._zod.check = fn;\n    return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function describe(description) {\n    const ch = new checks.$ZodCheck({ check: \"describe\" });\n    ch._zod.onattach = [\n        (inst) => {\n            const existing = registries.globalRegistry.get(inst) ?? {};\n            registries.globalRegistry.add(inst, { ...existing, description });\n        },\n    ];\n    ch._zod.check = () => { }; // no-op check\n    return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function meta(metadata) {\n    const ch = new checks.$ZodCheck({ check: \"meta\" });\n    ch._zod.onattach = [\n        (inst) => {\n            const existing = registries.globalRegistry.get(inst) ?? {};\n            registries.globalRegistry.add(inst, { ...existing, ...metadata });\n        },\n    ];\n    ch._zod.check = () => { }; // no-op check\n    return ch;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _stringbool(Classes, _params) {\n    const params = util.normalizeParams(_params);\n    let truthyArray = params.truthy ?? [\"true\", \"1\", \"yes\", \"on\", \"y\", \"enabled\"];\n    let falsyArray = params.falsy ?? [\"false\", \"0\", \"no\", \"off\", \"n\", \"disabled\"];\n    if (params.case !== \"sensitive\") {\n        truthyArray = truthyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n        falsyArray = falsyArray.map((v) => (typeof v === \"string\" ? v.toLowerCase() : v));\n    }\n    const truthySet = new Set(truthyArray);\n    const falsySet = new Set(falsyArray);\n    const _Codec = Classes.Codec ?? schemas.$ZodCodec;\n    const _Boolean = Classes.Boolean ?? schemas.$ZodBoolean;\n    const _String = Classes.String ?? schemas.$ZodString;\n    const stringSchema = new _String({ type: \"string\", error: params.error });\n    const booleanSchema = new _Boolean({ type: \"boolean\", error: params.error });\n    const codec = new _Codec({\n        type: \"pipe\",\n        in: stringSchema,\n        out: booleanSchema,\n        transform: ((input, payload) => {\n            let data = input;\n            if (params.case !== \"sensitive\")\n                data = data.toLowerCase();\n            if (truthySet.has(data)) {\n                return true;\n            }\n            else if (falsySet.has(data)) {\n                return false;\n            }\n            else {\n                payload.issues.push({\n                    code: \"invalid_value\",\n                    expected: \"stringbool\",\n                    values: [...truthySet, ...falsySet],\n                    input: payload.value,\n                    inst: codec,\n                    continue: false,\n                });\n                return {};\n            }\n        }),\n        reverseTransform: ((input, _payload) => {\n            if (input === true) {\n                return truthyArray[0] || \"true\";\n            }\n            else {\n                return falsyArray[0] || \"false\";\n            }\n        }),\n        error: params.error,\n    });\n    return codec;\n}\n// @__NO_SIDE_EFFECTS__\nexport function _stringFormat(Class, format, fnOrRegex, _params = {}) {\n    const params = util.normalizeParams(_params);\n    const def = {\n        ...util.normalizeParams(_params),\n        check: \"string_format\",\n        type: \"string\",\n        format,\n        fn: typeof fnOrRegex === \"function\" ? fnOrRegex : (val) => fnOrRegex.test(val),\n        ...params,\n    };\n    if (fnOrRegex instanceof RegExp) {\n        def.pattern = fnOrRegex;\n    }\n    const inst = new Class(def);\n    return inst;\n}\n", "import { globalRegistry } from \"./registries.js\";\n// function initializeContext<T extends schemas.$ZodType>(inputs: JSONSchemaGeneratorParams<T>): ToJSONSchemaContext<T> {\n//   return {\n//     processor: inputs.processor,\n//     metadataRegistry: inputs.metadata ?? globalRegistry,\n//     target: inputs.target ?? \"draft-2020-12\",\n//     unrepresentable: inputs.unrepresentable ?? \"throw\",\n//   };\n// }\nexport function initializeContext(params) {\n    // Normalize target: convert old non-hyphenated versions to hyphenated versions\n    let target = params?.target ?? \"draft-2020-12\";\n    if (target === \"draft-4\")\n        target = \"draft-04\";\n    if (target === \"draft-7\")\n        target = \"draft-07\";\n    return {\n        processors: params.processors ?? {},\n        metadataRegistry: params?.metadata ?? globalRegistry,\n        target,\n        unrepresentable: params?.unrepresentable ?? \"throw\",\n        override: params?.override ?? (() => { }),\n        io: params?.io ?? \"output\",\n        counter: 0,\n        seen: new Map(),\n        cycles: params?.cycles ?? \"ref\",\n        reused: params?.reused ?? \"inline\",\n        external: params?.external ?? undefined,\n    };\n}\nexport function process(schema, ctx, _params = { path: [], schemaPath: [] }) {\n    var _a;\n    const def = schema._zod.def;\n    // check for schema in seens\n    const seen = ctx.seen.get(schema);\n    if (seen) {\n        seen.count++;\n        // check if cycle\n        const isCycle = _params.schemaPath.includes(schema);\n        if (isCycle) {\n            seen.cycle = _params.path;\n        }\n        return seen.schema;\n    }\n    // initialize\n    const result = { schema: {}, count: 1, cycle: undefined, path: _params.path };\n    ctx.seen.set(schema, result);\n    // custom method overrides default behavior\n    const overrideSchema = schema._zod.toJSONSchema?.();\n    if (overrideSchema) {\n        result.schema = overrideSchema;\n    }\n    else {\n        const params = {\n            ..._params,\n            schemaPath: [..._params.schemaPath, schema],\n            path: _params.path,\n        };\n        if (schema._zod.processJSONSchema) {\n            schema._zod.processJSONSchema(ctx, result.schema, params);\n        }\n        else {\n            const _json = result.schema;\n            const processor = ctx.processors[def.type];\n            if (!processor) {\n                throw new Error(`[toJSONSchema]: Non-representable type encountered: ${def.type}`);\n            }\n            processor(schema, ctx, _json, params);\n        }\n        const parent = schema._zod.parent;\n        if (parent) {\n            // Also set ref if processor didn't (for inheritance)\n            if (!result.ref)\n                result.ref = parent;\n            process(parent, ctx, params);\n            ctx.seen.get(parent).isParent = true;\n        }\n    }\n    // metadata\n    const meta = ctx.metadataRegistry.get(schema);\n    if (meta)\n        Object.assign(result.schema, meta);\n    if (ctx.io === \"input\" && isTransforming(schema)) {\n        // examples/defaults only apply to output type of pipe\n        delete result.schema.examples;\n        delete result.schema.default;\n    }\n    // set prefault as default\n    if (ctx.io === \"input\" && result.schema._prefault)\n        (_a = result.schema).default ?? (_a.default = result.schema._prefault);\n    delete result.schema._prefault;\n    // pulling fresh from ctx.seen in case it was overwritten\n    const _result = ctx.seen.get(schema);\n    return _result.schema;\n}\nexport function extractDefs(ctx, schema\n// params: EmitParams\n) {\n    // iterate over seen map;\n    const root = ctx.seen.get(schema);\n    if (!root)\n        throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n    // Track ids to detect duplicates across different schemas\n    const idToSchema = new Map();\n    for (const entry of ctx.seen.entries()) {\n        const id = ctx.metadataRegistry.get(entry[0])?.id;\n        if (id) {\n            const existing = idToSchema.get(id);\n            if (existing && existing !== entry[0]) {\n                throw new Error(`Duplicate schema id \"${id}\" detected during JSON Schema conversion. Two different schemas cannot share the same id when converted together.`);\n            }\n            idToSchema.set(id, entry[0]);\n        }\n    }\n    // returns a ref to the schema\n    // defId will be empty if the ref points to an external schema (or #)\n    const makeURI = (entry) => {\n        // comparing the seen objects because sometimes\n        // multiple schemas map to the same seen object.\n        // e.g. lazy\n        // external is configured\n        const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n        if (ctx.external) {\n            const externalId = ctx.external.registry.get(entry[0])?.id; // ?? \"__shared\";// `__schema${ctx.counter++}`;\n            // check if schema is in the external registry\n            const uriGenerator = ctx.external.uri ?? ((id) => id);\n            if (externalId) {\n                return { ref: uriGenerator(externalId) };\n            }\n            // otherwise, add to __shared\n            const id = entry[1].defId ?? entry[1].schema.id ?? `schema${ctx.counter++}`;\n            entry[1].defId = id; // set defId so it will be reused if needed\n            return { defId: id, ref: `${uriGenerator(\"__shared\")}#/${defsSegment}/${id}` };\n        }\n        if (entry[1] === root) {\n            return { ref: \"#\" };\n        }\n        // self-contained schema\n        const uriPrefix = `#`;\n        const defUriPrefix = `${uriPrefix}/${defsSegment}/`;\n        const defId = entry[1].schema.id ?? `__schema${ctx.counter++}`;\n        return { defId, ref: defUriPrefix + defId };\n    };\n    // stored cached version in `def` property\n    // remove all properties, set $ref\n    const extractToDef = (entry) => {\n        // if the schema is already a reference, do not extract it\n        if (entry[1].schema.$ref) {\n            return;\n        }\n        const seen = entry[1];\n        const { ref, defId } = makeURI(entry);\n        seen.def = { ...seen.schema };\n        // defId won't be set if the schema is a reference to an external schema\n        // or if the schema is the root schema\n        if (defId)\n            seen.defId = defId;\n        // wipe away all properties except $ref\n        const schema = seen.schema;\n        for (const key in schema) {\n            delete schema[key];\n        }\n        schema.$ref = ref;\n    };\n    // throw on cycles\n    // break cycles\n    if (ctx.cycles === \"throw\") {\n        for (const entry of ctx.seen.entries()) {\n            const seen = entry[1];\n            if (seen.cycle) {\n                throw new Error(\"Cycle detected: \" +\n                    `#/${seen.cycle?.join(\"/\")}/<root>` +\n                    '\\n\\nSet the `cycles` parameter to `\"ref\"` to resolve cyclical schemas with defs.');\n            }\n        }\n    }\n    // extract schemas into $defs\n    for (const entry of ctx.seen.entries()) {\n        const seen = entry[1];\n        // convert root schema to # $ref\n        if (schema === entry[0]) {\n            extractToDef(entry); // this has special handling for the root schema\n            continue;\n        }\n        // extract schemas that are in the external registry\n        if (ctx.external) {\n            const ext = ctx.external.registry.get(entry[0])?.id;\n            if (schema !== entry[0] && ext) {\n                extractToDef(entry);\n                continue;\n            }\n        }\n        // extract schemas with `id` meta\n        const id = ctx.metadataRegistry.get(entry[0])?.id;\n        if (id) {\n            extractToDef(entry);\n            continue;\n        }\n        // break cycles\n        if (seen.cycle) {\n            // any\n            extractToDef(entry);\n            continue;\n        }\n        // extract reused schemas\n        if (seen.count > 1) {\n            if (ctx.reused === \"ref\") {\n                extractToDef(entry);\n                // biome-ignore lint:\n                continue;\n            }\n        }\n    }\n}\nexport function finalize(ctx, schema) {\n    const root = ctx.seen.get(schema);\n    if (!root)\n        throw new Error(\"Unprocessed schema. This is a bug in Zod.\");\n    // flatten refs - inherit properties from parent schemas\n    const flattenRef = (zodSchema) => {\n        const seen = ctx.seen.get(zodSchema);\n        // already processed\n        if (seen.ref === null)\n            return;\n        const schema = seen.def ?? seen.schema;\n        const _cached = { ...schema };\n        const ref = seen.ref;\n        seen.ref = null; // prevent infinite recursion\n        if (ref) {\n            flattenRef(ref);\n            const refSeen = ctx.seen.get(ref);\n            const refSchema = refSeen.schema;\n            // merge referenced schema into current\n            if (refSchema.$ref && (ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\")) {\n                // older drafts can't combine $ref with other properties\n                schema.allOf = schema.allOf ?? [];\n                schema.allOf.push(refSchema);\n            }\n            else {\n                Object.assign(schema, refSchema);\n            }\n            // restore child's own properties (child wins)\n            Object.assign(schema, _cached);\n            const isParentRef = zodSchema._zod.parent === ref;\n            // For parent chain, child is a refinement - remove parent-only properties\n            if (isParentRef) {\n                for (const key in schema) {\n                    if (key === \"$ref\" || key === \"allOf\")\n                        continue;\n                    if (!(key in _cached)) {\n                        delete schema[key];\n                    }\n                }\n            }\n            // When ref was extracted to $defs, remove properties that match the definition\n            if (refSchema.$ref && refSeen.def) {\n                for (const key in schema) {\n                    if (key === \"$ref\" || key === \"allOf\")\n                        continue;\n                    if (key in refSeen.def && JSON.stringify(schema[key]) === JSON.stringify(refSeen.def[key])) {\n                        delete schema[key];\n                    }\n                }\n            }\n        }\n        // If parent was extracted (has $ref), propagate $ref to this schema\n        // This handles cases like: readonly().meta({id}).describe()\n        // where processor sets ref to innerType but parent should be referenced\n        const parent = zodSchema._zod.parent;\n        if (parent && parent !== ref) {\n            // Ensure parent is processed first so its def has inherited properties\n            flattenRef(parent);\n            const parentSeen = ctx.seen.get(parent);\n            if (parentSeen?.schema.$ref) {\n                schema.$ref = parentSeen.schema.$ref;\n                // De-duplicate with parent's definition\n                if (parentSeen.def) {\n                    for (const key in schema) {\n                        if (key === \"$ref\" || key === \"allOf\")\n                            continue;\n                        if (key in parentSeen.def && JSON.stringify(schema[key]) === JSON.stringify(parentSeen.def[key])) {\n                            delete schema[key];\n                        }\n                    }\n                }\n            }\n        }\n        // execute overrides\n        ctx.override({\n            zodSchema: zodSchema,\n            jsonSchema: schema,\n            path: seen.path ?? [],\n        });\n    };\n    for (const entry of [...ctx.seen.entries()].reverse()) {\n        flattenRef(entry[0]);\n    }\n    const result = {};\n    if (ctx.target === \"draft-2020-12\") {\n        result.$schema = \"https://json-schema.org/draft/2020-12/schema\";\n    }\n    else if (ctx.target === \"draft-07\") {\n        result.$schema = \"http://json-schema.org/draft-07/schema#\";\n    }\n    else if (ctx.target === \"draft-04\") {\n        result.$schema = \"http://json-schema.org/draft-04/schema#\";\n    }\n    else if (ctx.target === \"openapi-3.0\") {\n        // OpenAPI 3.0 schema objects should not include a $schema property\n    }\n    else {\n        // Arbitrary string values are allowed but won't have a $schema property set\n    }\n    if (ctx.external?.uri) {\n        const id = ctx.external.registry.get(schema)?.id;\n        if (!id)\n            throw new Error(\"Schema is missing an `id` property\");\n        result.$id = ctx.external.uri(id);\n    }\n    Object.assign(result, root.def ?? root.schema);\n    // build defs object\n    const defs = ctx.external?.defs ?? {};\n    for (const entry of ctx.seen.entries()) {\n        const seen = entry[1];\n        if (seen.def && seen.defId) {\n            defs[seen.defId] = seen.def;\n        }\n    }\n    // set definitions in result\n    if (ctx.external) {\n    }\n    else {\n        if (Object.keys(defs).length > 0) {\n            if (ctx.target === \"draft-2020-12\") {\n                result.$defs = defs;\n            }\n            else {\n                result.definitions = defs;\n            }\n        }\n    }\n    try {\n        // this \"finalizes\" this schema and ensures all cycles are removed\n        // each call to finalize() is functionally independent\n        // though the seen map is shared\n        const finalized = JSON.parse(JSON.stringify(result));\n        Object.defineProperty(finalized, \"~standard\", {\n            value: {\n                ...schema[\"~standard\"],\n                jsonSchema: {\n                    input: createStandardJSONSchemaMethod(schema, \"input\", ctx.processors),\n                    output: createStandardJSONSchemaMethod(schema, \"output\", ctx.processors),\n                },\n            },\n            enumerable: false,\n            writable: false,\n        });\n        return finalized;\n    }\n    catch (_err) {\n        throw new Error(\"Error converting schema to JSON.\");\n    }\n}\nfunction isTransforming(_schema, _ctx) {\n    const ctx = _ctx ?? { seen: new Set() };\n    if (ctx.seen.has(_schema))\n        return false;\n    ctx.seen.add(_schema);\n    const def = _schema._zod.def;\n    if (def.type === \"transform\")\n        return true;\n    if (def.type === \"array\")\n        return isTransforming(def.element, ctx);\n    if (def.type === \"set\")\n        return isTransforming(def.valueType, ctx);\n    if (def.type === \"lazy\")\n        return isTransforming(def.getter(), ctx);\n    if (def.type === \"promise\" ||\n        def.type === \"optional\" ||\n        def.type === \"nonoptional\" ||\n        def.type === \"nullable\" ||\n        def.type === \"readonly\" ||\n        def.type === \"default\" ||\n        def.type === \"prefault\") {\n        return isTransforming(def.innerType, ctx);\n    }\n    if (def.type === \"intersection\") {\n        return isTransforming(def.left, ctx) || isTransforming(def.right, ctx);\n    }\n    if (def.type === \"record\" || def.type === \"map\") {\n        return isTransforming(def.keyType, ctx) || isTransforming(def.valueType, ctx);\n    }\n    if (def.type === \"pipe\") {\n        return isTransforming(def.in, ctx) || isTransforming(def.out, ctx);\n    }\n    if (def.type === \"object\") {\n        for (const key in def.shape) {\n            if (isTransforming(def.shape[key], ctx))\n                return true;\n        }\n        return false;\n    }\n    if (def.type === \"union\") {\n        for (const option of def.options) {\n            if (isTransforming(option, ctx))\n                return true;\n        }\n        return false;\n    }\n    if (def.type === \"tuple\") {\n        for (const item of def.items) {\n            if (isTransforming(item, ctx))\n                return true;\n        }\n        if (def.rest && isTransforming(def.rest, ctx))\n            return true;\n        return false;\n    }\n    return false;\n}\n/**\n * Creates a toJSONSchema method for a schema instance.\n * This encapsulates the logic of initializing context, processing, extracting defs, and finalizing.\n */\nexport const createToJSONSchemaMethod = (schema, processors = {}) => (params) => {\n    const ctx = initializeContext({ ...params, processors });\n    process(schema, ctx);\n    extractDefs(ctx, schema);\n    return finalize(ctx, schema);\n};\nexport const createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) => {\n    const { libraryOptions, target } = params ?? {};\n    const ctx = initializeContext({ ...(libraryOptions ?? {}), target, io, processors });\n    process(schema, ctx);\n    extractDefs(ctx, schema);\n    return finalize(ctx, schema);\n};\n", "import { extractDefs, finalize, initializeContext, process, } from \"./to-json-schema.js\";\nimport { getEnumValues } from \"./util.js\";\nconst formatMap = {\n    guid: \"uuid\",\n    url: \"uri\",\n    datetime: \"date-time\",\n    json_string: \"json-string\",\n    regex: \"\", // do not set\n};\n// ==================== SIMPLE TYPE PROCESSORS ====================\nexport const stringProcessor = (schema, ctx, _json, _params) => {\n    const json = _json;\n    json.type = \"string\";\n    const { minimum, maximum, format, patterns, contentEncoding } = schema._zod\n        .bag;\n    if (typeof minimum === \"number\")\n        json.minLength = minimum;\n    if (typeof maximum === \"number\")\n        json.maxLength = maximum;\n    // custom pattern overrides format\n    if (format) {\n        json.format = formatMap[format] ?? format;\n        if (json.format === \"\")\n            delete json.format; // empty format is not valid\n        // JSON Schema format: \"time\" requires a full time with offset or Z\n        // z.iso.time() does not include timezone information, so format: \"time\" should never be used\n        if (format === \"time\") {\n            delete json.format;\n        }\n    }\n    if (contentEncoding)\n        json.contentEncoding = contentEncoding;\n    if (patterns && patterns.size > 0) {\n        const regexes = [...patterns];\n        if (regexes.length === 1)\n            json.pattern = regexes[0].source;\n        else if (regexes.length > 1) {\n            json.allOf = [\n                ...regexes.map((regex) => ({\n                    ...(ctx.target === \"draft-07\" || ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\"\n                        ? { type: \"string\" }\n                        : {}),\n                    pattern: regex.source,\n                })),\n            ];\n        }\n    }\n};\nexport const numberProcessor = (schema, ctx, _json, _params) => {\n    const json = _json;\n    const { minimum, maximum, format, multipleOf, exclusiveMaximum, exclusiveMinimum } = schema._zod.bag;\n    if (typeof format === \"string\" && format.includes(\"int\"))\n        json.type = \"integer\";\n    else\n        json.type = \"number\";\n    if (typeof exclusiveMinimum === \"number\") {\n        if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n            json.minimum = exclusiveMinimum;\n            json.exclusiveMinimum = true;\n        }\n        else {\n            json.exclusiveMinimum = exclusiveMinimum;\n        }\n    }\n    if (typeof minimum === \"number\") {\n        json.minimum = minimum;\n        if (typeof exclusiveMinimum === \"number\" && ctx.target !== \"draft-04\") {\n            if (exclusiveMinimum >= minimum)\n                delete json.minimum;\n            else\n                delete json.exclusiveMinimum;\n        }\n    }\n    if (typeof exclusiveMaximum === \"number\") {\n        if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n            json.maximum = exclusiveMaximum;\n            json.exclusiveMaximum = true;\n        }\n        else {\n            json.exclusiveMaximum = exclusiveMaximum;\n        }\n    }\n    if (typeof maximum === \"number\") {\n        json.maximum = maximum;\n        if (typeof exclusiveMaximum === \"number\" && ctx.target !== \"draft-04\") {\n            if (exclusiveMaximum <= maximum)\n                delete json.maximum;\n            else\n                delete json.exclusiveMaximum;\n        }\n    }\n    if (typeof multipleOf === \"number\")\n        json.multipleOf = multipleOf;\n};\nexport const booleanProcessor = (_schema, _ctx, json, _params) => {\n    json.type = \"boolean\";\n};\nexport const bigintProcessor = (_schema, ctx, _json, _params) => {\n    if (ctx.unrepresentable === \"throw\") {\n        throw new Error(\"BigInt cannot be represented in JSON Schema\");\n    }\n};\nexport const symbolProcessor = (_schema, ctx, _json, _params) => {\n    if (ctx.unrepresentable === \"throw\") {\n        throw new Error(\"Symbols cannot be represented in JSON Schema\");\n    }\n};\nexport const nullProcessor = (_schema, ctx, json, _params) => {\n    if (ctx.target === \"openapi-3.0\") {\n        json.type = \"string\";\n        json.nullable = true;\n        json.enum = [null];\n    }\n    else {\n        json.type = \"null\";\n    }\n};\nexport const undefinedProcessor = (_schema, ctx, _json, _params) => {\n    if (ctx.unrepresentable === \"throw\") {\n        throw new Error(\"Undefined cannot be represented in JSON Schema\");\n    }\n};\nexport const voidProcessor = (_schema, ctx, _json, _params) => {\n    if (ctx.unrepresentable === \"throw\") {\n        throw new Error(\"Void cannot be represented in JSON Schema\");\n    }\n};\nexport const neverProcessor = (_schema, _ctx, json, _params) => {\n    json.not = {};\n};\nexport const anyProcessor = (_schema, _ctx, _json, _params) => {\n    // empty schema accepts anything\n};\nexport const unknownProcessor = (_schema, _ctx, _json, _params) => {\n    // empty schema accepts anything\n};\nexport const dateProcessor = (_schema, ctx, _json, _params) => {\n    if (ctx.unrepresentable === \"throw\") {\n        throw new Error(\"Date cannot be represented in JSON Schema\");\n    }\n};\nexport const enumProcessor = (schema, _ctx, json, _params) => {\n    const def = schema._zod.def;\n    const values = getEnumValues(def.entries);\n    // Number enums can have both string and number values\n    if (values.every((v) => typeof v === \"number\"))\n        json.type = \"number\";\n    if (values.every((v) => typeof v === \"string\"))\n        json.type = \"string\";\n    json.enum = values;\n};\nexport const literalProcessor = (schema, ctx, json, _params) => {\n    const def = schema._zod.def;\n    const vals = [];\n    for (const val of def.values) {\n        if (val === undefined) {\n            if (ctx.unrepresentable === \"throw\") {\n                throw new Error(\"Literal `undefined` cannot be represented in JSON Schema\");\n            }\n            else {\n                // do not add to vals\n            }\n        }\n        else if (typeof val === \"bigint\") {\n            if (ctx.unrepresentable === \"throw\") {\n                throw new Error(\"BigInt literals cannot be represented in JSON Schema\");\n            }\n            else {\n                vals.push(Number(val));\n            }\n        }\n        else {\n            vals.push(val);\n        }\n    }\n    if (vals.length === 0) {\n        // do nothing (an undefined literal was stripped)\n    }\n    else if (vals.length === 1) {\n        const val = vals[0];\n        json.type = val === null ? \"null\" : typeof val;\n        if (ctx.target === \"draft-04\" || ctx.target === \"openapi-3.0\") {\n            json.enum = [val];\n        }\n        else {\n            json.const = val;\n        }\n    }\n    else {\n        if (vals.every((v) => typeof v === \"number\"))\n            json.type = \"number\";\n        if (vals.every((v) => typeof v === \"string\"))\n            json.type = \"string\";\n        if (vals.every((v) => typeof v === \"boolean\"))\n            json.type = \"boolean\";\n        if (vals.every((v) => v === null))\n            json.type = \"null\";\n        json.enum = vals;\n    }\n};\nexport const nanProcessor = (_schema, ctx, _json, _params) => {\n    if (ctx.unrepresentable === \"throw\") {\n        throw new Error(\"NaN cannot be represented in JSON Schema\");\n    }\n};\nexport const templateLiteralProcessor = (schema, _ctx, json, _params) => {\n    const _json = json;\n    const pattern = schema._zod.pattern;\n    if (!pattern)\n        throw new Error(\"Pattern not found in template literal\");\n    _json.type = \"string\";\n    _json.pattern = pattern.source;\n};\nexport const fileProcessor = (schema, _ctx, json, _params) => {\n    const _json = json;\n    const file = {\n        type: \"string\",\n        format: \"binary\",\n        contentEncoding: \"binary\",\n    };\n    const { minimum, maximum, mime } = schema._zod.bag;\n    if (minimum !== undefined)\n        file.minLength = minimum;\n    if (maximum !== undefined)\n        file.maxLength = maximum;\n    if (mime) {\n        if (mime.length === 1) {\n            file.contentMediaType = mime[0];\n            Object.assign(_json, file);\n        }\n        else {\n            Object.assign(_json, file); // shared props at root\n            _json.anyOf = mime.map((m) => ({ contentMediaType: m })); // only contentMediaType differs\n        }\n    }\n    else {\n        Object.assign(_json, file);\n    }\n};\nexport const successProcessor = (_schema, _ctx, json, _params) => {\n    json.type = \"boolean\";\n};\nexport const customProcessor = (_schema, ctx, _json, _params) => {\n    if (ctx.unrepresentable === \"throw\") {\n        throw new Error(\"Custom types cannot be represented in JSON Schema\");\n    }\n};\nexport const functionProcessor = (_schema, ctx, _json, _params) => {\n    if (ctx.unrepresentable === \"throw\") {\n        throw new Error(\"Function types cannot be represented in JSON Schema\");\n    }\n};\nexport const transformProcessor = (_schema, ctx, _json, _params) => {\n    if (ctx.unrepresentable === \"throw\") {\n        throw new Error(\"Transforms cannot be represented in JSON Schema\");\n    }\n};\nexport const mapProcessor = (_schema, ctx, _json, _params) => {\n    if (ctx.unrepresentable === \"throw\") {\n        throw new Error(\"Map cannot be represented in JSON Schema\");\n    }\n};\nexport const setProcessor = (_schema, ctx, _json, _params) => {\n    if (ctx.unrepresentable === \"throw\") {\n        throw new Error(\"Set cannot be represented in JSON Schema\");\n    }\n};\n// ==================== COMPOSITE TYPE PROCESSORS ====================\nexport const arrayProcessor = (schema, ctx, _json, params) => {\n    const json = _json;\n    const def = schema._zod.def;\n    const { minimum, maximum } = schema._zod.bag;\n    if (typeof minimum === \"number\")\n        json.minItems = minimum;\n    if (typeof maximum === \"number\")\n        json.maxItems = maximum;\n    json.type = \"array\";\n    json.items = process(def.element, ctx, { ...params, path: [...params.path, \"items\"] });\n};\nexport const objectProcessor = (schema, ctx, _json, params) => {\n    const json = _json;\n    const def = schema._zod.def;\n    json.type = \"object\";\n    json.properties = {};\n    const shape = def.shape;\n    for (const key in shape) {\n        json.properties[key] = process(shape[key], ctx, {\n            ...params,\n            path: [...params.path, \"properties\", key],\n        });\n    }\n    // required keys\n    const allKeys = new Set(Object.keys(shape));\n    const requiredKeys = new Set([...allKeys].filter((key) => {\n        const v = def.shape[key]._zod;\n        if (ctx.io === \"input\") {\n            return v.optin === undefined;\n        }\n        else {\n            return v.optout === undefined;\n        }\n    }));\n    if (requiredKeys.size > 0) {\n        json.required = Array.from(requiredKeys);\n    }\n    // catchall\n    if (def.catchall?._zod.def.type === \"never\") {\n        // strict\n        json.additionalProperties = false;\n    }\n    else if (!def.catchall) {\n        // regular\n        if (ctx.io === \"output\")\n            json.additionalProperties = false;\n    }\n    else if (def.catchall) {\n        json.additionalProperties = process(def.catchall, ctx, {\n            ...params,\n            path: [...params.path, \"additionalProperties\"],\n        });\n    }\n};\nexport const unionProcessor = (schema, ctx, json, params) => {\n    const def = schema._zod.def;\n    // Exclusive unions (inclusive === false) use oneOf (exactly one match) instead of anyOf (one or more matches)\n    // This includes both z.xor() and discriminated unions\n    const isExclusive = def.inclusive === false;\n    const options = def.options.map((x, i) => process(x, ctx, {\n        ...params,\n        path: [...params.path, isExclusive ? \"oneOf\" : \"anyOf\", i],\n    }));\n    if (isExclusive) {\n        json.oneOf = options;\n    }\n    else {\n        json.anyOf = options;\n    }\n};\nexport const intersectionProcessor = (schema, ctx, json, params) => {\n    const def = schema._zod.def;\n    const a = process(def.left, ctx, {\n        ...params,\n        path: [...params.path, \"allOf\", 0],\n    });\n    const b = process(def.right, ctx, {\n        ...params,\n        path: [...params.path, \"allOf\", 1],\n    });\n    const isSimpleIntersection = (val) => \"allOf\" in val && Object.keys(val).length === 1;\n    const allOf = [\n        ...(isSimpleIntersection(a) ? a.allOf : [a]),\n        ...(isSimpleIntersection(b) ? b.allOf : [b]),\n    ];\n    json.allOf = allOf;\n};\nexport const tupleProcessor = (schema, ctx, _json, params) => {\n    const json = _json;\n    const def = schema._zod.def;\n    json.type = \"array\";\n    const prefixPath = ctx.target === \"draft-2020-12\" ? \"prefixItems\" : \"items\";\n    const restPath = ctx.target === \"draft-2020-12\" ? \"items\" : ctx.target === \"openapi-3.0\" ? \"items\" : \"additionalItems\";\n    const prefixItems = def.items.map((x, i) => process(x, ctx, {\n        ...params,\n        path: [...params.path, prefixPath, i],\n    }));\n    const rest = def.rest\n        ? process(def.rest, ctx, {\n            ...params,\n            path: [...params.path, restPath, ...(ctx.target === \"openapi-3.0\" ? [def.items.length] : [])],\n        })\n        : null;\n    if (ctx.target === \"draft-2020-12\") {\n        json.prefixItems = prefixItems;\n        if (rest) {\n            json.items = rest;\n        }\n    }\n    else if (ctx.target === \"openapi-3.0\") {\n        json.items = {\n            anyOf: prefixItems,\n        };\n        if (rest) {\n            json.items.anyOf.push(rest);\n        }\n        json.minItems = prefixItems.length;\n        if (!rest) {\n            json.maxItems = prefixItems.length;\n        }\n    }\n    else {\n        json.items = prefixItems;\n        if (rest) {\n            json.additionalItems = rest;\n        }\n    }\n    // length\n    const { minimum, maximum } = schema._zod.bag;\n    if (typeof minimum === \"number\")\n        json.minItems = minimum;\n    if (typeof maximum === \"number\")\n        json.maxItems = maximum;\n};\nexport const recordProcessor = (schema, ctx, _json, params) => {\n    const json = _json;\n    const def = schema._zod.def;\n    json.type = \"object\";\n    // For looseRecord with regex patterns, use patternProperties\n    // This correctly represents \"only validate keys matching the pattern\" semantics\n    // and composes well with allOf (intersections)\n    const keyType = def.keyType;\n    const keyBag = keyType._zod.bag;\n    const patterns = keyBag?.patterns;\n    if (def.mode === \"loose\" && patterns && patterns.size > 0) {\n        // Use patternProperties for looseRecord with regex patterns\n        const valueSchema = process(def.valueType, ctx, {\n            ...params,\n            path: [...params.path, \"patternProperties\", \"*\"],\n        });\n        json.patternProperties = {};\n        for (const pattern of patterns) {\n            json.patternProperties[pattern.source] = valueSchema;\n        }\n    }\n    else {\n        // Default behavior: use propertyNames + additionalProperties\n        if (ctx.target === \"draft-07\" || ctx.target === \"draft-2020-12\") {\n            json.propertyNames = process(def.keyType, ctx, {\n                ...params,\n                path: [...params.path, \"propertyNames\"],\n            });\n        }\n        json.additionalProperties = process(def.valueType, ctx, {\n            ...params,\n            path: [...params.path, \"additionalProperties\"],\n        });\n    }\n    // Add required for keys with discrete values (enum, literal, etc.)\n    const keyValues = keyType._zod.values;\n    if (keyValues) {\n        const validKeyValues = [...keyValues].filter((v) => typeof v === \"string\" || typeof v === \"number\");\n        if (validKeyValues.length > 0) {\n            json.required = validKeyValues;\n        }\n    }\n};\nexport const nullableProcessor = (schema, ctx, json, params) => {\n    const def = schema._zod.def;\n    const inner = process(def.innerType, ctx, params);\n    const seen = ctx.seen.get(schema);\n    if (ctx.target === \"openapi-3.0\") {\n        seen.ref = def.innerType;\n        json.nullable = true;\n    }\n    else {\n        json.anyOf = [inner, { type: \"null\" }];\n    }\n};\nexport const nonoptionalProcessor = (schema, ctx, _json, params) => {\n    const def = schema._zod.def;\n    process(def.innerType, ctx, params);\n    const seen = ctx.seen.get(schema);\n    seen.ref = def.innerType;\n};\nexport const defaultProcessor = (schema, ctx, json, params) => {\n    const def = schema._zod.def;\n    process(def.innerType, ctx, params);\n    const seen = ctx.seen.get(schema);\n    seen.ref = def.innerType;\n    json.default = JSON.parse(JSON.stringify(def.defaultValue));\n};\nexport const prefaultProcessor = (schema, ctx, json, params) => {\n    const def = schema._zod.def;\n    process(def.innerType, ctx, params);\n    const seen = ctx.seen.get(schema);\n    seen.ref = def.innerType;\n    if (ctx.io === \"input\")\n        json._prefault = JSON.parse(JSON.stringify(def.defaultValue));\n};\nexport const catchProcessor = (schema, ctx, json, params) => {\n    const def = schema._zod.def;\n    process(def.innerType, ctx, params);\n    const seen = ctx.seen.get(schema);\n    seen.ref = def.innerType;\n    let catchValue;\n    try {\n        catchValue = def.catchValue(undefined);\n    }\n    catch {\n        throw new Error(\"Dynamic catch values are not supported in JSON Schema\");\n    }\n    json.default = catchValue;\n};\nexport const pipeProcessor = (schema, ctx, _json, params) => {\n    const def = schema._zod.def;\n    const innerType = ctx.io === \"input\" ? (def.in._zod.def.type === \"transform\" ? def.out : def.in) : def.out;\n    process(innerType, ctx, params);\n    const seen = ctx.seen.get(schema);\n    seen.ref = innerType;\n};\nexport const readonlyProcessor = (schema, ctx, json, params) => {\n    const def = schema._zod.def;\n    process(def.innerType, ctx, params);\n    const seen = ctx.seen.get(schema);\n    seen.ref = def.innerType;\n    json.readOnly = true;\n};\nexport const promiseProcessor = (schema, ctx, _json, params) => {\n    const def = schema._zod.def;\n    process(def.innerType, ctx, params);\n    const seen = ctx.seen.get(schema);\n    seen.ref = def.innerType;\n};\nexport const optionalProcessor = (schema, ctx, _json, params) => {\n    const def = schema._zod.def;\n    process(def.innerType, ctx, params);\n    const seen = ctx.seen.get(schema);\n    seen.ref = def.innerType;\n};\nexport const lazyProcessor = (schema, ctx, _json, params) => {\n    const innerType = schema._zod.innerType;\n    process(innerType, ctx, params);\n    const seen = ctx.seen.get(schema);\n    seen.ref = innerType;\n};\n// ==================== ALL PROCESSORS ====================\nexport const allProcessors = {\n    string: stringProcessor,\n    number: numberProcessor,\n    boolean: booleanProcessor,\n    bigint: bigintProcessor,\n    symbol: symbolProcessor,\n    null: nullProcessor,\n    undefined: undefinedProcessor,\n    void: voidProcessor,\n    never: neverProcessor,\n    any: anyProcessor,\n    unknown: unknownProcessor,\n    date: dateProcessor,\n    enum: enumProcessor,\n    literal: literalProcessor,\n    nan: nanProcessor,\n    template_literal: templateLiteralProcessor,\n    file: fileProcessor,\n    success: successProcessor,\n    custom: customProcessor,\n    function: functionProcessor,\n    transform: transformProcessor,\n    map: mapProcessor,\n    set: setProcessor,\n    array: arrayProcessor,\n    object: objectProcessor,\n    union: unionProcessor,\n    intersection: intersectionProcessor,\n    tuple: tupleProcessor,\n    record: recordProcessor,\n    nullable: nullableProcessor,\n    nonoptional: nonoptionalProcessor,\n    default: defaultProcessor,\n    prefault: prefaultProcessor,\n    catch: catchProcessor,\n    pipe: pipeProcessor,\n    readonly: readonlyProcessor,\n    promise: promiseProcessor,\n    optional: optionalProcessor,\n    lazy: lazyProcessor,\n};\nexport function toJSONSchema(input, params) {\n    if (\"_idmap\" in input) {\n        // Registry case\n        const registry = input;\n        const ctx = initializeContext({ ...params, processors: allProcessors });\n        const defs = {};\n        // First pass: process all schemas to build the seen map\n        for (const entry of registry._idmap.entries()) {\n            const [_, schema] = entry;\n            process(schema, ctx);\n        }\n        const schemas = {};\n        const external = {\n            registry,\n            uri: params?.uri,\n            defs,\n        };\n        // Update the context with external configuration\n        ctx.external = external;\n        // Second pass: emit each schema\n        for (const entry of registry._idmap.entries()) {\n            const [key, schema] = entry;\n            extractDefs(ctx, schema);\n            schemas[key] = finalize(ctx, schema);\n        }\n        if (Object.keys(defs).length > 0) {\n            const defsSegment = ctx.target === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n            schemas.__shared = {\n                [defsSegment]: defs,\n            };\n        }\n        return { schemas };\n    }\n    // Single schema case\n    const ctx = initializeContext({ ...params, processors: allProcessors });\n    process(input, ctx);\n    extractDefs(ctx, input);\n    return finalize(ctx, input);\n}\n", "import { allProcessors } from \"./json-schema-processors.js\";\nimport { extractDefs, finalize, initializeContext, process, } from \"./to-json-schema.js\";\n/**\n * Legacy class-based interface for JSON Schema generation.\n * This class wraps the new functional implementation to provide backward compatibility.\n *\n * @deprecated Use the `toJSONSchema` function instead for new code.\n *\n * @example\n * ```typescript\n * // Legacy usage (still supported)\n * const gen = new JSONSchemaGenerator({ target: \"draft-07\" });\n * gen.process(schema);\n * const result = gen.emit(schema);\n *\n * // Preferred modern usage\n * const result = toJSONSchema(schema, { target: \"draft-07\" });\n * ```\n */\nexport class JSONSchemaGenerator {\n    /** @deprecated Access via ctx instead */\n    get metadataRegistry() {\n        return this.ctx.metadataRegistry;\n    }\n    /** @deprecated Access via ctx instead */\n    get target() {\n        return this.ctx.target;\n    }\n    /** @deprecated Access via ctx instead */\n    get unrepresentable() {\n        return this.ctx.unrepresentable;\n    }\n    /** @deprecated Access via ctx instead */\n    get override() {\n        return this.ctx.override;\n    }\n    /** @deprecated Access via ctx instead */\n    get io() {\n        return this.ctx.io;\n    }\n    /** @deprecated Access via ctx instead */\n    get counter() {\n        return this.ctx.counter;\n    }\n    set counter(value) {\n        this.ctx.counter = value;\n    }\n    /** @deprecated Access via ctx instead */\n    get seen() {\n        return this.ctx.seen;\n    }\n    constructor(params) {\n        // Normalize target for internal context\n        let normalizedTarget = params?.target ?? \"draft-2020-12\";\n        if (normalizedTarget === \"draft-4\")\n            normalizedTarget = \"draft-04\";\n        if (normalizedTarget === \"draft-7\")\n            normalizedTarget = \"draft-07\";\n        this.ctx = initializeContext({\n            processors: allProcessors,\n            target: normalizedTarget,\n            ...(params?.metadata && { metadata: params.metadata }),\n            ...(params?.unrepresentable && { unrepresentable: params.unrepresentable }),\n            ...(params?.override && { override: params.override }),\n            ...(params?.io && { io: params.io }),\n        });\n    }\n    /**\n     * Process a schema to prepare it for JSON Schema generation.\n     * This must be called before emit().\n     */\n    process(schema, _params = { path: [], schemaPath: [] }) {\n        return process(schema, this.ctx, _params);\n    }\n    /**\n     * Emit the final JSON Schema after processing.\n     * Must call process() first.\n     */\n    emit(schema, _params) {\n        // Apply emit params to the context\n        if (_params) {\n            if (_params.cycles)\n                this.ctx.cycles = _params.cycles;\n            if (_params.reused)\n                this.ctx.reused = _params.reused;\n            if (_params.external)\n                this.ctx.external = _params.external;\n        }\n        extractDefs(this.ctx, schema);\n        const result = finalize(this.ctx, schema);\n        // Strip ~standard property to match old implementation's return type\n        const { \"~standard\": _, ...plainResult } = result;\n        return plainResult;\n    }\n}\n", "export {};\n", "import * as core from \"../core/index.js\";\nimport { util } from \"../core/index.js\";\nimport * as processors from \"../core/json-schema-processors.js\";\nimport { createStandardJSONSchemaMethod, createToJSONSchemaMethod } from \"../core/to-json-schema.js\";\nimport * as checks from \"./checks.js\";\nimport * as iso from \"./iso.js\";\nimport * as parse from \"./parse.js\";\nexport const ZodType = /*@__PURE__*/ core.$constructor(\"ZodType\", (inst, def) => {\n    core.$ZodType.init(inst, def);\n    Object.assign(inst[\"~standard\"], {\n        jsonSchema: {\n            input: createStandardJSONSchemaMethod(inst, \"input\"),\n            output: createStandardJSONSchemaMethod(inst, \"output\"),\n        },\n    });\n    inst.toJSONSchema = createToJSONSchemaMethod(inst, {});\n    inst.def = def;\n    inst.type = def.type;\n    Object.defineProperty(inst, \"_def\", { value: def });\n    // base methods\n    inst.check = (...checks) => {\n        return inst.clone(util.mergeDefs(def, {\n            checks: [\n                ...(def.checks ?? []),\n                ...checks.map((ch) => typeof ch === \"function\" ? { _zod: { check: ch, def: { check: \"custom\" }, onattach: [] } } : ch),\n            ],\n        }), {\n            parent: true,\n        });\n    };\n    inst.with = inst.check;\n    inst.clone = (def, params) => core.clone(inst, def, params);\n    inst.brand = () => inst;\n    inst.register = ((reg, meta) => {\n        reg.add(inst, meta);\n        return inst;\n    });\n    // parsing\n    inst.parse = (data, params) => parse.parse(inst, data, params, { callee: inst.parse });\n    inst.safeParse = (data, params) => parse.safeParse(inst, data, params);\n    inst.parseAsync = async (data, params) => parse.parseAsync(inst, data, params, { callee: inst.parseAsync });\n    inst.safeParseAsync = async (data, params) => parse.safeParseAsync(inst, data, params);\n    inst.spa = inst.safeParseAsync;\n    // encoding/decoding\n    inst.encode = (data, params) => parse.encode(inst, data, params);\n    inst.decode = (data, params) => parse.decode(inst, data, params);\n    inst.encodeAsync = async (data, params) => parse.encodeAsync(inst, data, params);\n    inst.decodeAsync = async (data, params) => parse.decodeAsync(inst, data, params);\n    inst.safeEncode = (data, params) => parse.safeEncode(inst, data, params);\n    inst.safeDecode = (data, params) => parse.safeDecode(inst, data, params);\n    inst.safeEncodeAsync = async (data, params) => parse.safeEncodeAsync(inst, data, params);\n    inst.safeDecodeAsync = async (data, params) => parse.safeDecodeAsync(inst, data, params);\n    // refinements\n    inst.refine = (check, params) => inst.check(refine(check, params));\n    inst.superRefine = (refinement) => inst.check(superRefine(refinement));\n    inst.overwrite = (fn) => inst.check(checks.overwrite(fn));\n    // wrappers\n    inst.optional = () => optional(inst);\n    inst.exactOptional = () => exactOptional(inst);\n    inst.nullable = () => nullable(inst);\n    inst.nullish = () => optional(nullable(inst));\n    inst.nonoptional = (params) => nonoptional(inst, params);\n    inst.array = () => array(inst);\n    inst.or = (arg) => union([inst, arg]);\n    inst.and = (arg) => intersection(inst, arg);\n    inst.transform = (tx) => pipe(inst, transform(tx));\n    inst.default = (def) => _default(inst, def);\n    inst.prefault = (def) => prefault(inst, def);\n    // inst.coalesce = (def, params) => coalesce(inst, def, params);\n    inst.catch = (params) => _catch(inst, params);\n    inst.pipe = (target) => pipe(inst, target);\n    inst.readonly = () => readonly(inst);\n    // meta\n    inst.describe = (description) => {\n        const cl = inst.clone();\n        core.globalRegistry.add(cl, { description });\n        return cl;\n    };\n    Object.defineProperty(inst, \"description\", {\n        get() {\n            return core.globalRegistry.get(inst)?.description;\n        },\n        configurable: true,\n    });\n    inst.meta = (...args) => {\n        if (args.length === 0) {\n            return core.globalRegistry.get(inst);\n        }\n        const cl = inst.clone();\n        core.globalRegistry.add(cl, args[0]);\n        return cl;\n    };\n    // helpers\n    inst.isOptional = () => inst.safeParse(undefined).success;\n    inst.isNullable = () => inst.safeParse(null).success;\n    inst.apply = (fn) => fn(inst);\n    return inst;\n});\n/** @internal */\nexport const _ZodString = /*@__PURE__*/ core.$constructor(\"_ZodString\", (inst, def) => {\n    core.$ZodString.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.stringProcessor(inst, ctx, json, params);\n    const bag = inst._zod.bag;\n    inst.format = bag.format ?? null;\n    inst.minLength = bag.minimum ?? null;\n    inst.maxLength = bag.maximum ?? null;\n    // validations\n    inst.regex = (...args) => inst.check(checks.regex(...args));\n    inst.includes = (...args) => inst.check(checks.includes(...args));\n    inst.startsWith = (...args) => inst.check(checks.startsWith(...args));\n    inst.endsWith = (...args) => inst.check(checks.endsWith(...args));\n    inst.min = (...args) => inst.check(checks.minLength(...args));\n    inst.max = (...args) => inst.check(checks.maxLength(...args));\n    inst.length = (...args) => inst.check(checks.length(...args));\n    inst.nonempty = (...args) => inst.check(checks.minLength(1, ...args));\n    inst.lowercase = (params) => inst.check(checks.lowercase(params));\n    inst.uppercase = (params) => inst.check(checks.uppercase(params));\n    // transforms\n    inst.trim = () => inst.check(checks.trim());\n    inst.normalize = (...args) => inst.check(checks.normalize(...args));\n    inst.toLowerCase = () => inst.check(checks.toLowerCase());\n    inst.toUpperCase = () => inst.check(checks.toUpperCase());\n    inst.slugify = () => inst.check(checks.slugify());\n});\nexport const ZodString = /*@__PURE__*/ core.$constructor(\"ZodString\", (inst, def) => {\n    core.$ZodString.init(inst, def);\n    _ZodString.init(inst, def);\n    inst.email = (params) => inst.check(core._email(ZodEmail, params));\n    inst.url = (params) => inst.check(core._url(ZodURL, params));\n    inst.jwt = (params) => inst.check(core._jwt(ZodJWT, params));\n    inst.emoji = (params) => inst.check(core._emoji(ZodEmoji, params));\n    inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n    inst.uuid = (params) => inst.check(core._uuid(ZodUUID, params));\n    inst.uuidv4 = (params) => inst.check(core._uuidv4(ZodUUID, params));\n    inst.uuidv6 = (params) => inst.check(core._uuidv6(ZodUUID, params));\n    inst.uuidv7 = (params) => inst.check(core._uuidv7(ZodUUID, params));\n    inst.nanoid = (params) => inst.check(core._nanoid(ZodNanoID, params));\n    inst.guid = (params) => inst.check(core._guid(ZodGUID, params));\n    inst.cuid = (params) => inst.check(core._cuid(ZodCUID, params));\n    inst.cuid2 = (params) => inst.check(core._cuid2(ZodCUID2, params));\n    inst.ulid = (params) => inst.check(core._ulid(ZodULID, params));\n    inst.base64 = (params) => inst.check(core._base64(ZodBase64, params));\n    inst.base64url = (params) => inst.check(core._base64url(ZodBase64URL, params));\n    inst.xid = (params) => inst.check(core._xid(ZodXID, params));\n    inst.ksuid = (params) => inst.check(core._ksuid(ZodKSUID, params));\n    inst.ipv4 = (params) => inst.check(core._ipv4(ZodIPv4, params));\n    inst.ipv6 = (params) => inst.check(core._ipv6(ZodIPv6, params));\n    inst.cidrv4 = (params) => inst.check(core._cidrv4(ZodCIDRv4, params));\n    inst.cidrv6 = (params) => inst.check(core._cidrv6(ZodCIDRv6, params));\n    inst.e164 = (params) => inst.check(core._e164(ZodE164, params));\n    // iso\n    inst.datetime = (params) => inst.check(iso.datetime(params));\n    inst.date = (params) => inst.check(iso.date(params));\n    inst.time = (params) => inst.check(iso.time(params));\n    inst.duration = (params) => inst.check(iso.duration(params));\n});\nexport function string(params) {\n    return core._string(ZodString, params);\n}\nexport const ZodStringFormat = /*@__PURE__*/ core.$constructor(\"ZodStringFormat\", (inst, def) => {\n    core.$ZodStringFormat.init(inst, def);\n    _ZodString.init(inst, def);\n});\nexport const ZodEmail = /*@__PURE__*/ core.$constructor(\"ZodEmail\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodEmail.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function email(params) {\n    return core._email(ZodEmail, params);\n}\nexport const ZodGUID = /*@__PURE__*/ core.$constructor(\"ZodGUID\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodGUID.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function guid(params) {\n    return core._guid(ZodGUID, params);\n}\nexport const ZodUUID = /*@__PURE__*/ core.$constructor(\"ZodUUID\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodUUID.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function uuid(params) {\n    return core._uuid(ZodUUID, params);\n}\nexport function uuidv4(params) {\n    return core._uuidv4(ZodUUID, params);\n}\n// ZodUUIDv6\nexport function uuidv6(params) {\n    return core._uuidv6(ZodUUID, params);\n}\n// ZodUUIDv7\nexport function uuidv7(params) {\n    return core._uuidv7(ZodUUID, params);\n}\nexport const ZodURL = /*@__PURE__*/ core.$constructor(\"ZodURL\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodURL.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function url(params) {\n    return core._url(ZodURL, params);\n}\nexport function httpUrl(params) {\n    return core._url(ZodURL, {\n        protocol: /^https?$/,\n        hostname: core.regexes.domain,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodEmoji = /*@__PURE__*/ core.$constructor(\"ZodEmoji\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodEmoji.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function emoji(params) {\n    return core._emoji(ZodEmoji, params);\n}\nexport const ZodNanoID = /*@__PURE__*/ core.$constructor(\"ZodNanoID\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodNanoID.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function nanoid(params) {\n    return core._nanoid(ZodNanoID, params);\n}\nexport const ZodCUID = /*@__PURE__*/ core.$constructor(\"ZodCUID\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodCUID.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function cuid(params) {\n    return core._cuid(ZodCUID, params);\n}\nexport const ZodCUID2 = /*@__PURE__*/ core.$constructor(\"ZodCUID2\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodCUID2.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function cuid2(params) {\n    return core._cuid2(ZodCUID2, params);\n}\nexport const ZodULID = /*@__PURE__*/ core.$constructor(\"ZodULID\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodULID.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function ulid(params) {\n    return core._ulid(ZodULID, params);\n}\nexport const ZodXID = /*@__PURE__*/ core.$constructor(\"ZodXID\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodXID.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function xid(params) {\n    return core._xid(ZodXID, params);\n}\nexport const ZodKSUID = /*@__PURE__*/ core.$constructor(\"ZodKSUID\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodKSUID.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function ksuid(params) {\n    return core._ksuid(ZodKSUID, params);\n}\nexport const ZodIPv4 = /*@__PURE__*/ core.$constructor(\"ZodIPv4\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodIPv4.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function ipv4(params) {\n    return core._ipv4(ZodIPv4, params);\n}\nexport const ZodMAC = /*@__PURE__*/ core.$constructor(\"ZodMAC\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodMAC.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function mac(params) {\n    return core._mac(ZodMAC, params);\n}\nexport const ZodIPv6 = /*@__PURE__*/ core.$constructor(\"ZodIPv6\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodIPv6.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function ipv6(params) {\n    return core._ipv6(ZodIPv6, params);\n}\nexport const ZodCIDRv4 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv4\", (inst, def) => {\n    core.$ZodCIDRv4.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function cidrv4(params) {\n    return core._cidrv4(ZodCIDRv4, params);\n}\nexport const ZodCIDRv6 = /*@__PURE__*/ core.$constructor(\"ZodCIDRv6\", (inst, def) => {\n    core.$ZodCIDRv6.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function cidrv6(params) {\n    return core._cidrv6(ZodCIDRv6, params);\n}\nexport const ZodBase64 = /*@__PURE__*/ core.$constructor(\"ZodBase64\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodBase64.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function base64(params) {\n    return core._base64(ZodBase64, params);\n}\nexport const ZodBase64URL = /*@__PURE__*/ core.$constructor(\"ZodBase64URL\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodBase64URL.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function base64url(params) {\n    return core._base64url(ZodBase64URL, params);\n}\nexport const ZodE164 = /*@__PURE__*/ core.$constructor(\"ZodE164\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodE164.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function e164(params) {\n    return core._e164(ZodE164, params);\n}\nexport const ZodJWT = /*@__PURE__*/ core.$constructor(\"ZodJWT\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodJWT.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function jwt(params) {\n    return core._jwt(ZodJWT, params);\n}\nexport const ZodCustomStringFormat = /*@__PURE__*/ core.$constructor(\"ZodCustomStringFormat\", (inst, def) => {\n    // ZodStringFormat.init(inst, def);\n    core.$ZodCustomStringFormat.init(inst, def);\n    ZodStringFormat.init(inst, def);\n});\nexport function stringFormat(format, fnOrRegex, _params = {}) {\n    return core._stringFormat(ZodCustomStringFormat, format, fnOrRegex, _params);\n}\nexport function hostname(_params) {\n    return core._stringFormat(ZodCustomStringFormat, \"hostname\", core.regexes.hostname, _params);\n}\nexport function hex(_params) {\n    return core._stringFormat(ZodCustomStringFormat, \"hex\", core.regexes.hex, _params);\n}\nexport function hash(alg, params) {\n    const enc = params?.enc ?? \"hex\";\n    const format = `${alg}_${enc}`;\n    const regex = core.regexes[format];\n    if (!regex)\n        throw new Error(`Unrecognized hash format: ${format}`);\n    return core._stringFormat(ZodCustomStringFormat, format, regex, params);\n}\nexport const ZodNumber = /*@__PURE__*/ core.$constructor(\"ZodNumber\", (inst, def) => {\n    core.$ZodNumber.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.numberProcessor(inst, ctx, json, params);\n    inst.gt = (value, params) => inst.check(checks.gt(value, params));\n    inst.gte = (value, params) => inst.check(checks.gte(value, params));\n    inst.min = (value, params) => inst.check(checks.gte(value, params));\n    inst.lt = (value, params) => inst.check(checks.lt(value, params));\n    inst.lte = (value, params) => inst.check(checks.lte(value, params));\n    inst.max = (value, params) => inst.check(checks.lte(value, params));\n    inst.int = (params) => inst.check(int(params));\n    inst.safe = (params) => inst.check(int(params));\n    inst.positive = (params) => inst.check(checks.gt(0, params));\n    inst.nonnegative = (params) => inst.check(checks.gte(0, params));\n    inst.negative = (params) => inst.check(checks.lt(0, params));\n    inst.nonpositive = (params) => inst.check(checks.lte(0, params));\n    inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params));\n    inst.step = (value, params) => inst.check(checks.multipleOf(value, params));\n    // inst.finite = (params) => inst.check(core.finite(params));\n    inst.finite = () => inst;\n    const bag = inst._zod.bag;\n    inst.minValue =\n        Math.max(bag.minimum ?? Number.NEGATIVE_INFINITY, bag.exclusiveMinimum ?? Number.NEGATIVE_INFINITY) ?? null;\n    inst.maxValue =\n        Math.min(bag.maximum ?? Number.POSITIVE_INFINITY, bag.exclusiveMaximum ?? Number.POSITIVE_INFINITY) ?? null;\n    inst.isInt = (bag.format ?? \"\").includes(\"int\") || Number.isSafeInteger(bag.multipleOf ?? 0.5);\n    inst.isFinite = true;\n    inst.format = bag.format ?? null;\n});\nexport function number(params) {\n    return core._number(ZodNumber, params);\n}\nexport const ZodNumberFormat = /*@__PURE__*/ core.$constructor(\"ZodNumberFormat\", (inst, def) => {\n    core.$ZodNumberFormat.init(inst, def);\n    ZodNumber.init(inst, def);\n});\nexport function int(params) {\n    return core._int(ZodNumberFormat, params);\n}\nexport function float32(params) {\n    return core._float32(ZodNumberFormat, params);\n}\nexport function float64(params) {\n    return core._float64(ZodNumberFormat, params);\n}\nexport function int32(params) {\n    return core._int32(ZodNumberFormat, params);\n}\nexport function uint32(params) {\n    return core._uint32(ZodNumberFormat, params);\n}\nexport const ZodBoolean = /*@__PURE__*/ core.$constructor(\"ZodBoolean\", (inst, def) => {\n    core.$ZodBoolean.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.booleanProcessor(inst, ctx, json, params);\n});\nexport function boolean(params) {\n    return core._boolean(ZodBoolean, params);\n}\nexport const ZodBigInt = /*@__PURE__*/ core.$constructor(\"ZodBigInt\", (inst, def) => {\n    core.$ZodBigInt.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.bigintProcessor(inst, ctx, json, params);\n    inst.gte = (value, params) => inst.check(checks.gte(value, params));\n    inst.min = (value, params) => inst.check(checks.gte(value, params));\n    inst.gt = (value, params) => inst.check(checks.gt(value, params));\n    inst.gte = (value, params) => inst.check(checks.gte(value, params));\n    inst.min = (value, params) => inst.check(checks.gte(value, params));\n    inst.lt = (value, params) => inst.check(checks.lt(value, params));\n    inst.lte = (value, params) => inst.check(checks.lte(value, params));\n    inst.max = (value, params) => inst.check(checks.lte(value, params));\n    inst.positive = (params) => inst.check(checks.gt(BigInt(0), params));\n    inst.negative = (params) => inst.check(checks.lt(BigInt(0), params));\n    inst.nonpositive = (params) => inst.check(checks.lte(BigInt(0), params));\n    inst.nonnegative = (params) => inst.check(checks.gte(BigInt(0), params));\n    inst.multipleOf = (value, params) => inst.check(checks.multipleOf(value, params));\n    const bag = inst._zod.bag;\n    inst.minValue = bag.minimum ?? null;\n    inst.maxValue = bag.maximum ?? null;\n    inst.format = bag.format ?? null;\n});\nexport function bigint(params) {\n    return core._bigint(ZodBigInt, params);\n}\nexport const ZodBigIntFormat = /*@__PURE__*/ core.$constructor(\"ZodBigIntFormat\", (inst, def) => {\n    core.$ZodBigIntFormat.init(inst, def);\n    ZodBigInt.init(inst, def);\n});\n// int64\nexport function int64(params) {\n    return core._int64(ZodBigIntFormat, params);\n}\n// uint64\nexport function uint64(params) {\n    return core._uint64(ZodBigIntFormat, params);\n}\nexport const ZodSymbol = /*@__PURE__*/ core.$constructor(\"ZodSymbol\", (inst, def) => {\n    core.$ZodSymbol.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.symbolProcessor(inst, ctx, json, params);\n});\nexport function symbol(params) {\n    return core._symbol(ZodSymbol, params);\n}\nexport const ZodUndefined = /*@__PURE__*/ core.$constructor(\"ZodUndefined\", (inst, def) => {\n    core.$ZodUndefined.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.undefinedProcessor(inst, ctx, json, params);\n});\nfunction _undefined(params) {\n    return core._undefined(ZodUndefined, params);\n}\nexport { _undefined as undefined };\nexport const ZodNull = /*@__PURE__*/ core.$constructor(\"ZodNull\", (inst, def) => {\n    core.$ZodNull.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.nullProcessor(inst, ctx, json, params);\n});\nfunction _null(params) {\n    return core._null(ZodNull, params);\n}\nexport { _null as null };\nexport const ZodAny = /*@__PURE__*/ core.$constructor(\"ZodAny\", (inst, def) => {\n    core.$ZodAny.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.anyProcessor(inst, ctx, json, params);\n});\nexport function any() {\n    return core._any(ZodAny);\n}\nexport const ZodUnknown = /*@__PURE__*/ core.$constructor(\"ZodUnknown\", (inst, def) => {\n    core.$ZodUnknown.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.unknownProcessor(inst, ctx, json, params);\n});\nexport function unknown() {\n    return core._unknown(ZodUnknown);\n}\nexport const ZodNever = /*@__PURE__*/ core.$constructor(\"ZodNever\", (inst, def) => {\n    core.$ZodNever.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.neverProcessor(inst, ctx, json, params);\n});\nexport function never(params) {\n    return core._never(ZodNever, params);\n}\nexport const ZodVoid = /*@__PURE__*/ core.$constructor(\"ZodVoid\", (inst, def) => {\n    core.$ZodVoid.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.voidProcessor(inst, ctx, json, params);\n});\nfunction _void(params) {\n    return core._void(ZodVoid, params);\n}\nexport { _void as void };\nexport const ZodDate = /*@__PURE__*/ core.$constructor(\"ZodDate\", (inst, def) => {\n    core.$ZodDate.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.dateProcessor(inst, ctx, json, params);\n    inst.min = (value, params) => inst.check(checks.gte(value, params));\n    inst.max = (value, params) => inst.check(checks.lte(value, params));\n    const c = inst._zod.bag;\n    inst.minDate = c.minimum ? new Date(c.minimum) : null;\n    inst.maxDate = c.maximum ? new Date(c.maximum) : null;\n});\nexport function date(params) {\n    return core._date(ZodDate, params);\n}\nexport const ZodArray = /*@__PURE__*/ core.$constructor(\"ZodArray\", (inst, def) => {\n    core.$ZodArray.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.arrayProcessor(inst, ctx, json, params);\n    inst.element = def.element;\n    inst.min = (minLength, params) => inst.check(checks.minLength(minLength, params));\n    inst.nonempty = (params) => inst.check(checks.minLength(1, params));\n    inst.max = (maxLength, params) => inst.check(checks.maxLength(maxLength, params));\n    inst.length = (len, params) => inst.check(checks.length(len, params));\n    inst.unwrap = () => inst.element;\n});\nexport function array(element, params) {\n    return core._array(ZodArray, element, params);\n}\n// .keyof\nexport function keyof(schema) {\n    const shape = schema._zod.def.shape;\n    return _enum(Object.keys(shape));\n}\nexport const ZodObject = /*@__PURE__*/ core.$constructor(\"ZodObject\", (inst, def) => {\n    core.$ZodObjectJIT.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.objectProcessor(inst, ctx, json, params);\n    util.defineLazy(inst, \"shape\", () => {\n        return def.shape;\n    });\n    inst.keyof = () => _enum(Object.keys(inst._zod.def.shape));\n    inst.catchall = (catchall) => inst.clone({ ...inst._zod.def, catchall: catchall });\n    inst.passthrough = () => inst.clone({ ...inst._zod.def, catchall: unknown() });\n    inst.loose = () => inst.clone({ ...inst._zod.def, catchall: unknown() });\n    inst.strict = () => inst.clone({ ...inst._zod.def, catchall: never() });\n    inst.strip = () => inst.clone({ ...inst._zod.def, catchall: undefined });\n    inst.extend = (incoming) => {\n        return util.extend(inst, incoming);\n    };\n    inst.safeExtend = (incoming) => {\n        return util.safeExtend(inst, incoming);\n    };\n    inst.merge = (other) => util.merge(inst, other);\n    inst.pick = (mask) => util.pick(inst, mask);\n    inst.omit = (mask) => util.omit(inst, mask);\n    inst.partial = (...args) => util.partial(ZodOptional, inst, args[0]);\n    inst.required = (...args) => util.required(ZodNonOptional, inst, args[0]);\n});\nexport function object(shape, params) {\n    const def = {\n        type: \"object\",\n        shape: shape ?? {},\n        ...util.normalizeParams(params),\n    };\n    return new ZodObject(def);\n}\n// strictObject\nexport function strictObject(shape, params) {\n    return new ZodObject({\n        type: \"object\",\n        shape,\n        catchall: never(),\n        ...util.normalizeParams(params),\n    });\n}\n// looseObject\nexport function looseObject(shape, params) {\n    return new ZodObject({\n        type: \"object\",\n        shape,\n        catchall: unknown(),\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodUnion = /*@__PURE__*/ core.$constructor(\"ZodUnion\", (inst, def) => {\n    core.$ZodUnion.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params);\n    inst.options = def.options;\n});\nexport function union(options, params) {\n    return new ZodUnion({\n        type: \"union\",\n        options: options,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodXor = /*@__PURE__*/ core.$constructor(\"ZodXor\", (inst, def) => {\n    ZodUnion.init(inst, def);\n    core.$ZodXor.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.unionProcessor(inst, ctx, json, params);\n    inst.options = def.options;\n});\n/** Creates an exclusive union (XOR) where exactly one option must match.\n * Unlike regular unions that succeed when any option matches, xor fails if\n * zero or more than one option matches the input. */\nexport function xor(options, params) {\n    return new ZodXor({\n        type: \"union\",\n        options: options,\n        inclusive: false,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodDiscriminatedUnion = /*@__PURE__*/ core.$constructor(\"ZodDiscriminatedUnion\", (inst, def) => {\n    ZodUnion.init(inst, def);\n    core.$ZodDiscriminatedUnion.init(inst, def);\n});\nexport function discriminatedUnion(discriminator, options, params) {\n    // const [options, params] = args;\n    return new ZodDiscriminatedUnion({\n        type: \"union\",\n        options,\n        discriminator,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodIntersection = /*@__PURE__*/ core.$constructor(\"ZodIntersection\", (inst, def) => {\n    core.$ZodIntersection.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.intersectionProcessor(inst, ctx, json, params);\n});\nexport function intersection(left, right) {\n    return new ZodIntersection({\n        type: \"intersection\",\n        left: left,\n        right: right,\n    });\n}\nexport const ZodTuple = /*@__PURE__*/ core.$constructor(\"ZodTuple\", (inst, def) => {\n    core.$ZodTuple.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.tupleProcessor(inst, ctx, json, params);\n    inst.rest = (rest) => inst.clone({\n        ...inst._zod.def,\n        rest: rest,\n    });\n});\nexport function tuple(items, _paramsOrRest, _params) {\n    const hasRest = _paramsOrRest instanceof core.$ZodType;\n    const params = hasRest ? _params : _paramsOrRest;\n    const rest = hasRest ? _paramsOrRest : null;\n    return new ZodTuple({\n        type: \"tuple\",\n        items: items,\n        rest,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodRecord = /*@__PURE__*/ core.$constructor(\"ZodRecord\", (inst, def) => {\n    core.$ZodRecord.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.recordProcessor(inst, ctx, json, params);\n    inst.keyType = def.keyType;\n    inst.valueType = def.valueType;\n});\nexport function record(keyType, valueType, params) {\n    return new ZodRecord({\n        type: \"record\",\n        keyType,\n        valueType: valueType,\n        ...util.normalizeParams(params),\n    });\n}\n// type alksjf = core.output<core.$ZodRecordKey>;\nexport function partialRecord(keyType, valueType, params) {\n    const k = core.clone(keyType);\n    k._zod.values = undefined;\n    return new ZodRecord({\n        type: \"record\",\n        keyType: k,\n        valueType: valueType,\n        ...util.normalizeParams(params),\n    });\n}\nexport function looseRecord(keyType, valueType, params) {\n    return new ZodRecord({\n        type: \"record\",\n        keyType,\n        valueType: valueType,\n        mode: \"loose\",\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodMap = /*@__PURE__*/ core.$constructor(\"ZodMap\", (inst, def) => {\n    core.$ZodMap.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.mapProcessor(inst, ctx, json, params);\n    inst.keyType = def.keyType;\n    inst.valueType = def.valueType;\n    inst.min = (...args) => inst.check(core._minSize(...args));\n    inst.nonempty = (params) => inst.check(core._minSize(1, params));\n    inst.max = (...args) => inst.check(core._maxSize(...args));\n    inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function map(keyType, valueType, params) {\n    return new ZodMap({\n        type: \"map\",\n        keyType: keyType,\n        valueType: valueType,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodSet = /*@__PURE__*/ core.$constructor(\"ZodSet\", (inst, def) => {\n    core.$ZodSet.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.setProcessor(inst, ctx, json, params);\n    inst.min = (...args) => inst.check(core._minSize(...args));\n    inst.nonempty = (params) => inst.check(core._minSize(1, params));\n    inst.max = (...args) => inst.check(core._maxSize(...args));\n    inst.size = (...args) => inst.check(core._size(...args));\n});\nexport function set(valueType, params) {\n    return new ZodSet({\n        type: \"set\",\n        valueType: valueType,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodEnum = /*@__PURE__*/ core.$constructor(\"ZodEnum\", (inst, def) => {\n    core.$ZodEnum.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.enumProcessor(inst, ctx, json, params);\n    inst.enum = def.entries;\n    inst.options = Object.values(def.entries);\n    const keys = new Set(Object.keys(def.entries));\n    inst.extract = (values, params) => {\n        const newEntries = {};\n        for (const value of values) {\n            if (keys.has(value)) {\n                newEntries[value] = def.entries[value];\n            }\n            else\n                throw new Error(`Key ${value} not found in enum`);\n        }\n        return new ZodEnum({\n            ...def,\n            checks: [],\n            ...util.normalizeParams(params),\n            entries: newEntries,\n        });\n    };\n    inst.exclude = (values, params) => {\n        const newEntries = { ...def.entries };\n        for (const value of values) {\n            if (keys.has(value)) {\n                delete newEntries[value];\n            }\n            else\n                throw new Error(`Key ${value} not found in enum`);\n        }\n        return new ZodEnum({\n            ...def,\n            checks: [],\n            ...util.normalizeParams(params),\n            entries: newEntries,\n        });\n    };\n});\nfunction _enum(values, params) {\n    const entries = Array.isArray(values) ? Object.fromEntries(values.map((v) => [v, v])) : values;\n    return new ZodEnum({\n        type: \"enum\",\n        entries,\n        ...util.normalizeParams(params),\n    });\n}\nexport { _enum as enum };\n/** @deprecated This API has been merged into `z.enum()`. Use `z.enum()` instead.\n *\n * ```ts\n * enum Colors { red, green, blue }\n * z.enum(Colors);\n * ```\n */\nexport function nativeEnum(entries, params) {\n    return new ZodEnum({\n        type: \"enum\",\n        entries,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodLiteral = /*@__PURE__*/ core.$constructor(\"ZodLiteral\", (inst, def) => {\n    core.$ZodLiteral.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.literalProcessor(inst, ctx, json, params);\n    inst.values = new Set(def.values);\n    Object.defineProperty(inst, \"value\", {\n        get() {\n            if (def.values.length > 1) {\n                throw new Error(\"This schema contains multiple valid literal values. Use `.values` instead.\");\n            }\n            return def.values[0];\n        },\n    });\n});\nexport function literal(value, params) {\n    return new ZodLiteral({\n        type: \"literal\",\n        values: Array.isArray(value) ? value : [value],\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodFile = /*@__PURE__*/ core.$constructor(\"ZodFile\", (inst, def) => {\n    core.$ZodFile.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.fileProcessor(inst, ctx, json, params);\n    inst.min = (size, params) => inst.check(core._minSize(size, params));\n    inst.max = (size, params) => inst.check(core._maxSize(size, params));\n    inst.mime = (types, params) => inst.check(core._mime(Array.isArray(types) ? types : [types], params));\n});\nexport function file(params) {\n    return core._file(ZodFile, params);\n}\nexport const ZodTransform = /*@__PURE__*/ core.$constructor(\"ZodTransform\", (inst, def) => {\n    core.$ZodTransform.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.transformProcessor(inst, ctx, json, params);\n    inst._zod.parse = (payload, _ctx) => {\n        if (_ctx.direction === \"backward\") {\n            throw new core.$ZodEncodeError(inst.constructor.name);\n        }\n        payload.addIssue = (issue) => {\n            if (typeof issue === \"string\") {\n                payload.issues.push(util.issue(issue, payload.value, def));\n            }\n            else {\n                // for Zod 3 backwards compatibility\n                const _issue = issue;\n                if (_issue.fatal)\n                    _issue.continue = false;\n                _issue.code ?? (_issue.code = \"custom\");\n                _issue.input ?? (_issue.input = payload.value);\n                _issue.inst ?? (_issue.inst = inst);\n                // _issue.continue ??= true;\n                payload.issues.push(util.issue(_issue));\n            }\n        };\n        const output = def.transform(payload.value, payload);\n        if (output instanceof Promise) {\n            return output.then((output) => {\n                payload.value = output;\n                return payload;\n            });\n        }\n        payload.value = output;\n        return payload;\n    };\n});\nexport function transform(fn) {\n    return new ZodTransform({\n        type: \"transform\",\n        transform: fn,\n    });\n}\nexport const ZodOptional = /*@__PURE__*/ core.$constructor(\"ZodOptional\", (inst, def) => {\n    core.$ZodOptional.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params);\n    inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function optional(innerType) {\n    return new ZodOptional({\n        type: \"optional\",\n        innerType: innerType,\n    });\n}\nexport const ZodExactOptional = /*@__PURE__*/ core.$constructor(\"ZodExactOptional\", (inst, def) => {\n    core.$ZodExactOptional.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.optionalProcessor(inst, ctx, json, params);\n    inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function exactOptional(innerType) {\n    return new ZodExactOptional({\n        type: \"optional\",\n        innerType: innerType,\n    });\n}\nexport const ZodNullable = /*@__PURE__*/ core.$constructor(\"ZodNullable\", (inst, def) => {\n    core.$ZodNullable.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.nullableProcessor(inst, ctx, json, params);\n    inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nullable(innerType) {\n    return new ZodNullable({\n        type: \"nullable\",\n        innerType: innerType,\n    });\n}\n// nullish\nexport function nullish(innerType) {\n    return optional(nullable(innerType));\n}\nexport const ZodDefault = /*@__PURE__*/ core.$constructor(\"ZodDefault\", (inst, def) => {\n    core.$ZodDefault.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.defaultProcessor(inst, ctx, json, params);\n    inst.unwrap = () => inst._zod.def.innerType;\n    inst.removeDefault = inst.unwrap;\n});\nexport function _default(innerType, defaultValue) {\n    return new ZodDefault({\n        type: \"default\",\n        innerType: innerType,\n        get defaultValue() {\n            return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n        },\n    });\n}\nexport const ZodPrefault = /*@__PURE__*/ core.$constructor(\"ZodPrefault\", (inst, def) => {\n    core.$ZodPrefault.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.prefaultProcessor(inst, ctx, json, params);\n    inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function prefault(innerType, defaultValue) {\n    return new ZodPrefault({\n        type: \"prefault\",\n        innerType: innerType,\n        get defaultValue() {\n            return typeof defaultValue === \"function\" ? defaultValue() : util.shallowClone(defaultValue);\n        },\n    });\n}\nexport const ZodNonOptional = /*@__PURE__*/ core.$constructor(\"ZodNonOptional\", (inst, def) => {\n    core.$ZodNonOptional.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.nonoptionalProcessor(inst, ctx, json, params);\n    inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function nonoptional(innerType, params) {\n    return new ZodNonOptional({\n        type: \"nonoptional\",\n        innerType: innerType,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodSuccess = /*@__PURE__*/ core.$constructor(\"ZodSuccess\", (inst, def) => {\n    core.$ZodSuccess.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.successProcessor(inst, ctx, json, params);\n    inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function success(innerType) {\n    return new ZodSuccess({\n        type: \"success\",\n        innerType: innerType,\n    });\n}\nexport const ZodCatch = /*@__PURE__*/ core.$constructor(\"ZodCatch\", (inst, def) => {\n    core.$ZodCatch.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.catchProcessor(inst, ctx, json, params);\n    inst.unwrap = () => inst._zod.def.innerType;\n    inst.removeCatch = inst.unwrap;\n});\nfunction _catch(innerType, catchValue) {\n    return new ZodCatch({\n        type: \"catch\",\n        innerType: innerType,\n        catchValue: (typeof catchValue === \"function\" ? catchValue : () => catchValue),\n    });\n}\nexport { _catch as catch };\nexport const ZodNaN = /*@__PURE__*/ core.$constructor(\"ZodNaN\", (inst, def) => {\n    core.$ZodNaN.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.nanProcessor(inst, ctx, json, params);\n});\nexport function nan(params) {\n    return core._nan(ZodNaN, params);\n}\nexport const ZodPipe = /*@__PURE__*/ core.$constructor(\"ZodPipe\", (inst, def) => {\n    core.$ZodPipe.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.pipeProcessor(inst, ctx, json, params);\n    inst.in = def.in;\n    inst.out = def.out;\n});\nexport function pipe(in_, out) {\n    return new ZodPipe({\n        type: \"pipe\",\n        in: in_,\n        out: out,\n        // ...util.normalizeParams(params),\n    });\n}\nexport const ZodCodec = /*@__PURE__*/ core.$constructor(\"ZodCodec\", (inst, def) => {\n    ZodPipe.init(inst, def);\n    core.$ZodCodec.init(inst, def);\n});\nexport function codec(in_, out, params) {\n    return new ZodCodec({\n        type: \"pipe\",\n        in: in_,\n        out: out,\n        transform: params.decode,\n        reverseTransform: params.encode,\n    });\n}\nexport const ZodReadonly = /*@__PURE__*/ core.$constructor(\"ZodReadonly\", (inst, def) => {\n    core.$ZodReadonly.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.readonlyProcessor(inst, ctx, json, params);\n    inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function readonly(innerType) {\n    return new ZodReadonly({\n        type: \"readonly\",\n        innerType: innerType,\n    });\n}\nexport const ZodTemplateLiteral = /*@__PURE__*/ core.$constructor(\"ZodTemplateLiteral\", (inst, def) => {\n    core.$ZodTemplateLiteral.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.templateLiteralProcessor(inst, ctx, json, params);\n});\nexport function templateLiteral(parts, params) {\n    return new ZodTemplateLiteral({\n        type: \"template_literal\",\n        parts,\n        ...util.normalizeParams(params),\n    });\n}\nexport const ZodLazy = /*@__PURE__*/ core.$constructor(\"ZodLazy\", (inst, def) => {\n    core.$ZodLazy.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.lazyProcessor(inst, ctx, json, params);\n    inst.unwrap = () => inst._zod.def.getter();\n});\nexport function lazy(getter) {\n    return new ZodLazy({\n        type: \"lazy\",\n        getter: getter,\n    });\n}\nexport const ZodPromise = /*@__PURE__*/ core.$constructor(\"ZodPromise\", (inst, def) => {\n    core.$ZodPromise.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.promiseProcessor(inst, ctx, json, params);\n    inst.unwrap = () => inst._zod.def.innerType;\n});\nexport function promise(innerType) {\n    return new ZodPromise({\n        type: \"promise\",\n        innerType: innerType,\n    });\n}\nexport const ZodFunction = /*@__PURE__*/ core.$constructor(\"ZodFunction\", (inst, def) => {\n    core.$ZodFunction.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.functionProcessor(inst, ctx, json, params);\n});\nexport function _function(params) {\n    return new ZodFunction({\n        type: \"function\",\n        input: Array.isArray(params?.input) ? tuple(params?.input) : (params?.input ?? array(unknown())),\n        output: params?.output ?? unknown(),\n    });\n}\nexport { _function as function };\nexport const ZodCustom = /*@__PURE__*/ core.$constructor(\"ZodCustom\", (inst, def) => {\n    core.$ZodCustom.init(inst, def);\n    ZodType.init(inst, def);\n    inst._zod.processJSONSchema = (ctx, json, params) => processors.customProcessor(inst, ctx, json, params);\n});\n// custom checks\nexport function check(fn) {\n    const ch = new core.$ZodCheck({\n        check: \"custom\",\n        // ...util.normalizeParams(params),\n    });\n    ch._zod.check = fn;\n    return ch;\n}\nexport function custom(fn, _params) {\n    return core._custom(ZodCustom, fn ?? (() => true), _params);\n}\nexport function refine(fn, _params = {}) {\n    return core._refine(ZodCustom, fn, _params);\n}\n// superRefine\nexport function superRefine(fn) {\n    return core._superRefine(fn);\n}\n// Re-export describe and meta from core\nexport const describe = core.describe;\nexport const meta = core.meta;\nfunction _instanceof(cls, params = {}) {\n    const inst = new ZodCustom({\n        type: \"custom\",\n        check: \"custom\",\n        fn: (data) => data instanceof cls,\n        abort: true,\n        ...util.normalizeParams(params),\n    });\n    inst._zod.bag.Class = cls;\n    // Override check to emit invalid_type instead of custom\n    inst._zod.check = (payload) => {\n        if (!(payload.value instanceof cls)) {\n            payload.issues.push({\n                code: \"invalid_type\",\n                expected: cls.name,\n                input: payload.value,\n                inst,\n                path: [...(inst._zod.def.path ?? [])],\n            });\n        }\n    };\n    return inst;\n}\nexport { _instanceof as instanceof };\n// stringbool\nexport const stringbool = (...args) => core._stringbool({\n    Codec: ZodCodec,\n    Boolean: ZodBoolean,\n    String: ZodString,\n}, ...args);\nexport function json(params) {\n    const jsonSchema = lazy(() => {\n        return union([string(params), number(), boolean(), _null(), array(jsonSchema), record(string(), jsonSchema)]);\n    });\n    return jsonSchema;\n}\n// preprocess\n// /** @deprecated Use `z.pipe()` and `z.transform()` instead. */\nexport function preprocess(fn, schema) {\n    return pipe(transform(fn), schema);\n}\n", "export { _lt as lt, _lte as lte, _gt as gt, _gte as gte, _positive as positive, _negative as negative, _nonpositive as nonpositive, _nonnegative as nonnegative, _multipleOf as multipleOf, _maxSize as maxSize, _minSize as minSize, _size as size, _maxLength as maxLength, _minLength as minLength, _length as length, _regex as regex, _lowercase as lowercase, _uppercase as uppercase, _includes as includes, _startsWith as startsWith, _endsWith as endsWith, _property as property, _mime as mime, _overwrite as overwrite, _normalize as normalize, _trim as trim, _toLowerCase as toLowerCase, _toUpperCase as toUpperCase, _slugify as slugify, } from \"../core/index.js\";\n", "import * as core from \"../core/index.js\";\nimport * as schemas from \"./schemas.js\";\nexport const ZodISODateTime = /*@__PURE__*/ core.$constructor(\"ZodISODateTime\", (inst, def) => {\n    core.$ZodISODateTime.init(inst, def);\n    schemas.ZodStringFormat.init(inst, def);\n});\nexport function datetime(params) {\n    return core._isoDateTime(ZodISODateTime, params);\n}\nexport const ZodISODate = /*@__PURE__*/ core.$constructor(\"ZodISODate\", (inst, def) => {\n    core.$ZodISODate.init(inst, def);\n    schemas.ZodStringFormat.init(inst, def);\n});\nexport function date(params) {\n    return core._isoDate(ZodISODate, params);\n}\nexport const ZodISOTime = /*@__PURE__*/ core.$constructor(\"ZodISOTime\", (inst, def) => {\n    core.$ZodISOTime.init(inst, def);\n    schemas.ZodStringFormat.init(inst, def);\n});\nexport function time(params) {\n    return core._isoTime(ZodISOTime, params);\n}\nexport const ZodISODuration = /*@__PURE__*/ core.$constructor(\"ZodISODuration\", (inst, def) => {\n    core.$ZodISODuration.init(inst, def);\n    schemas.ZodStringFormat.init(inst, def);\n});\nexport function duration(params) {\n    return core._isoDuration(ZodISODuration, params);\n}\n", "import * as core from \"../core/index.js\";\nimport { $ZodError } from \"../core/index.js\";\nimport * as util from \"../core/util.js\";\nconst initializer = (inst, issues) => {\n    $ZodError.init(inst, issues);\n    inst.name = \"ZodError\";\n    Object.defineProperties(inst, {\n        format: {\n            value: (mapper) => core.formatError(inst, mapper),\n            // enumerable: false,\n        },\n        flatten: {\n            value: (mapper) => core.flattenError(inst, mapper),\n            // enumerable: false,\n        },\n        addIssue: {\n            value: (issue) => {\n                inst.issues.push(issue);\n                inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n            },\n            // enumerable: false,\n        },\n        addIssues: {\n            value: (issues) => {\n                inst.issues.push(...issues);\n                inst.message = JSON.stringify(inst.issues, util.jsonStringifyReplacer, 2);\n            },\n            // enumerable: false,\n        },\n        isEmpty: {\n            get() {\n                return inst.issues.length === 0;\n            },\n            // enumerable: false,\n        },\n    });\n    // Object.defineProperty(inst, \"isEmpty\", {\n    //   get() {\n    //     return inst.issues.length === 0;\n    //   },\n    // });\n};\nexport const ZodError = core.$constructor(\"ZodError\", initializer);\nexport const ZodRealError = core.$constructor(\"ZodError\", initializer, {\n    Parent: Error,\n});\n// /** @deprecated Use `z.core.$ZodErrorMapCtx` instead. */\n// export type ErrorMapCtx = core.$ZodErrorMapCtx;\n", "import * as core from \"../core/index.js\";\nimport { ZodRealError } from \"./errors.js\";\nexport const parse = /* @__PURE__ */ core._parse(ZodRealError);\nexport const parseAsync = /* @__PURE__ */ core._parseAsync(ZodRealError);\nexport const safeParse = /* @__PURE__ */ core._safeParse(ZodRealError);\nexport const safeParseAsync = /* @__PURE__ */ core._safeParseAsync(ZodRealError);\n// Codec functions\nexport const encode = /* @__PURE__ */ core._encode(ZodRealError);\nexport const decode = /* @__PURE__ */ core._decode(ZodRealError);\nexport const encodeAsync = /* @__PURE__ */ core._encodeAsync(ZodRealError);\nexport const decodeAsync = /* @__PURE__ */ core._decodeAsync(ZodRealError);\nexport const safeEncode = /* @__PURE__ */ core._safeEncode(ZodRealError);\nexport const safeDecode = /* @__PURE__ */ core._safeDecode(ZodRealError);\nexport const safeEncodeAsync = /* @__PURE__ */ core._safeEncodeAsync(ZodRealError);\nexport const safeDecodeAsync = /* @__PURE__ */ core._safeDecodeAsync(ZodRealError);\n", "// Zod 3 compat layer\nimport * as core from \"../core/index.js\";\n/** @deprecated Use the raw string literal codes instead, e.g. \"invalid_type\". */\nexport const ZodIssueCode = {\n    invalid_type: \"invalid_type\",\n    too_big: \"too_big\",\n    too_small: \"too_small\",\n    invalid_format: \"invalid_format\",\n    not_multiple_of: \"not_multiple_of\",\n    unrecognized_keys: \"unrecognized_keys\",\n    invalid_union: \"invalid_union\",\n    invalid_key: \"invalid_key\",\n    invalid_element: \"invalid_element\",\n    invalid_value: \"invalid_value\",\n    custom: \"custom\",\n};\nexport { $brand, config } from \"../core/index.js\";\n/** @deprecated Use `z.config(params)` instead. */\nexport function setErrorMap(map) {\n    core.config({\n        customError: map,\n    });\n}\n/** @deprecated Use `z.config()` instead. */\nexport function getErrorMap() {\n    return core.config().customError;\n}\n/** @deprecated Do not use. Stub definition, only included for zod-to-json-schema compatibility. */\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n", "import { globalRegistry } from \"../core/registries.js\";\nimport * as _checks from \"./checks.js\";\nimport * as _iso from \"./iso.js\";\nimport * as _schemas from \"./schemas.js\";\n// Local z object to avoid circular dependency with ../index.js\nconst z = {\n    ..._schemas,\n    ..._checks,\n    iso: _iso,\n};\n// Keys that are recognized and handled by the conversion logic\nconst RECOGNIZED_KEYS = new Set([\n    // Schema identification\n    \"$schema\",\n    \"$ref\",\n    \"$defs\",\n    \"definitions\",\n    // Core schema keywords\n    \"$id\",\n    \"id\",\n    \"$comment\",\n    \"$anchor\",\n    \"$vocabulary\",\n    \"$dynamicRef\",\n    \"$dynamicAnchor\",\n    // Type\n    \"type\",\n    \"enum\",\n    \"const\",\n    // Composition\n    \"anyOf\",\n    \"oneOf\",\n    \"allOf\",\n    \"not\",\n    // Object\n    \"properties\",\n    \"required\",\n    \"additionalProperties\",\n    \"patternProperties\",\n    \"propertyNames\",\n    \"minProperties\",\n    \"maxProperties\",\n    // Array\n    \"items\",\n    \"prefixItems\",\n    \"additionalItems\",\n    \"minItems\",\n    \"maxItems\",\n    \"uniqueItems\",\n    \"contains\",\n    \"minContains\",\n    \"maxContains\",\n    // String\n    \"minLength\",\n    \"maxLength\",\n    \"pattern\",\n    \"format\",\n    // Number\n    \"minimum\",\n    \"maximum\",\n    \"exclusiveMinimum\",\n    \"exclusiveMaximum\",\n    \"multipleOf\",\n    // Already handled metadata\n    \"description\",\n    \"default\",\n    // Content\n    \"contentEncoding\",\n    \"contentMediaType\",\n    \"contentSchema\",\n    // Unsupported (error-throwing)\n    \"unevaluatedItems\",\n    \"unevaluatedProperties\",\n    \"if\",\n    \"then\",\n    \"else\",\n    \"dependentSchemas\",\n    \"dependentRequired\",\n    // OpenAPI\n    \"nullable\",\n    \"readOnly\",\n]);\nfunction detectVersion(schema, defaultTarget) {\n    const $schema = schema.$schema;\n    if ($schema === \"https://json-schema.org/draft/2020-12/schema\") {\n        return \"draft-2020-12\";\n    }\n    if ($schema === \"http://json-schema.org/draft-07/schema#\") {\n        return \"draft-7\";\n    }\n    if ($schema === \"http://json-schema.org/draft-04/schema#\") {\n        return \"draft-4\";\n    }\n    // Use defaultTarget if provided, otherwise default to draft-2020-12\n    return defaultTarget ?? \"draft-2020-12\";\n}\nfunction resolveRef(ref, ctx) {\n    if (!ref.startsWith(\"#\")) {\n        throw new Error(\"External $ref is not supported, only local refs (#/...) are allowed\");\n    }\n    const path = ref.slice(1).split(\"/\").filter(Boolean);\n    // Handle root reference \"#\"\n    if (path.length === 0) {\n        return ctx.rootSchema;\n    }\n    const defsKey = ctx.version === \"draft-2020-12\" ? \"$defs\" : \"definitions\";\n    if (path[0] === defsKey) {\n        const key = path[1];\n        if (!key || !ctx.defs[key]) {\n            throw new Error(`Reference not found: ${ref}`);\n        }\n        return ctx.defs[key];\n    }\n    throw new Error(`Reference not found: ${ref}`);\n}\nfunction convertBaseSchema(schema, ctx) {\n    // Handle unsupported features\n    if (schema.not !== undefined) {\n        // Special case: { not: {} } represents never\n        if (typeof schema.not === \"object\" && Object.keys(schema.not).length === 0) {\n            return z.never();\n        }\n        throw new Error(\"not is not supported in Zod (except { not: {} } for never)\");\n    }\n    if (schema.unevaluatedItems !== undefined) {\n        throw new Error(\"unevaluatedItems is not supported\");\n    }\n    if (schema.unevaluatedProperties !== undefined) {\n        throw new Error(\"unevaluatedProperties is not supported\");\n    }\n    if (schema.if !== undefined || schema.then !== undefined || schema.else !== undefined) {\n        throw new Error(\"Conditional schemas (if/then/else) are not supported\");\n    }\n    if (schema.dependentSchemas !== undefined || schema.dependentRequired !== undefined) {\n        throw new Error(\"dependentSchemas and dependentRequired are not supported\");\n    }\n    // Handle $ref\n    if (schema.$ref) {\n        const refPath = schema.$ref;\n        if (ctx.refs.has(refPath)) {\n            return ctx.refs.get(refPath);\n        }\n        if (ctx.processing.has(refPath)) {\n            // Circular reference - use lazy\n            return z.lazy(() => {\n                if (!ctx.refs.has(refPath)) {\n                    throw new Error(`Circular reference not resolved: ${refPath}`);\n                }\n                return ctx.refs.get(refPath);\n            });\n        }\n        ctx.processing.add(refPath);\n        const resolved = resolveRef(refPath, ctx);\n        const zodSchema = convertSchema(resolved, ctx);\n        ctx.refs.set(refPath, zodSchema);\n        ctx.processing.delete(refPath);\n        return zodSchema;\n    }\n    // Handle enum\n    if (schema.enum !== undefined) {\n        const enumValues = schema.enum;\n        // Special case: OpenAPI 3.0 null representation { type: \"string\", nullable: true, enum: [null] }\n        if (ctx.version === \"openapi-3.0\" &&\n            schema.nullable === true &&\n            enumValues.length === 1 &&\n            enumValues[0] === null) {\n            return z.null();\n        }\n        if (enumValues.length === 0) {\n            return z.never();\n        }\n        if (enumValues.length === 1) {\n            return z.literal(enumValues[0]);\n        }\n        // Check if all values are strings\n        if (enumValues.every((v) => typeof v === \"string\")) {\n            return z.enum(enumValues);\n        }\n        // Mixed types - use union of literals\n        const literalSchemas = enumValues.map((v) => z.literal(v));\n        if (literalSchemas.length < 2) {\n            return literalSchemas[0];\n        }\n        return z.union([literalSchemas[0], literalSchemas[1], ...literalSchemas.slice(2)]);\n    }\n    // Handle const\n    if (schema.const !== undefined) {\n        return z.literal(schema.const);\n    }\n    // Handle type\n    const type = schema.type;\n    if (Array.isArray(type)) {\n        // Expand type array into anyOf union\n        const typeSchemas = type.map((t) => {\n            const typeSchema = { ...schema, type: t };\n            return convertBaseSchema(typeSchema, ctx);\n        });\n        if (typeSchemas.length === 0) {\n            return z.never();\n        }\n        if (typeSchemas.length === 1) {\n            return typeSchemas[0];\n        }\n        return z.union(typeSchemas);\n    }\n    if (!type) {\n        // No type specified - empty schema (any)\n        return z.any();\n    }\n    let zodSchema;\n    switch (type) {\n        case \"string\": {\n            let stringSchema = z.string();\n            // Apply format using .check() with Zod format functions\n            if (schema.format) {\n                const format = schema.format;\n                // Map common formats to Zod check functions\n                if (format === \"email\") {\n                    stringSchema = stringSchema.check(z.email());\n                }\n                else if (format === \"uri\" || format === \"uri-reference\") {\n                    stringSchema = stringSchema.check(z.url());\n                }\n                else if (format === \"uuid\" || format === \"guid\") {\n                    stringSchema = stringSchema.check(z.uuid());\n                }\n                else if (format === \"date-time\") {\n                    stringSchema = stringSchema.check(z.iso.datetime());\n                }\n                else if (format === \"date\") {\n                    stringSchema = stringSchema.check(z.iso.date());\n                }\n                else if (format === \"time\") {\n                    stringSchema = stringSchema.check(z.iso.time());\n                }\n                else if (format === \"duration\") {\n                    stringSchema = stringSchema.check(z.iso.duration());\n                }\n                else if (format === \"ipv4\") {\n                    stringSchema = stringSchema.check(z.ipv4());\n                }\n                else if (format === \"ipv6\") {\n                    stringSchema = stringSchema.check(z.ipv6());\n                }\n                else if (format === \"mac\") {\n                    stringSchema = stringSchema.check(z.mac());\n                }\n                else if (format === \"cidr\") {\n                    stringSchema = stringSchema.check(z.cidrv4());\n                }\n                else if (format === \"cidr-v6\") {\n                    stringSchema = stringSchema.check(z.cidrv6());\n                }\n                else if (format === \"base64\") {\n                    stringSchema = stringSchema.check(z.base64());\n                }\n                else if (format === \"base64url\") {\n                    stringSchema = stringSchema.check(z.base64url());\n                }\n                else if (format === \"e164\") {\n                    stringSchema = stringSchema.check(z.e164());\n                }\n                else if (format === \"jwt\") {\n                    stringSchema = stringSchema.check(z.jwt());\n                }\n                else if (format === \"emoji\") {\n                    stringSchema = stringSchema.check(z.emoji());\n                }\n                else if (format === \"nanoid\") {\n                    stringSchema = stringSchema.check(z.nanoid());\n                }\n                else if (format === \"cuid\") {\n                    stringSchema = stringSchema.check(z.cuid());\n                }\n                else if (format === \"cuid2\") {\n                    stringSchema = stringSchema.check(z.cuid2());\n                }\n                else if (format === \"ulid\") {\n                    stringSchema = stringSchema.check(z.ulid());\n                }\n                else if (format === \"xid\") {\n                    stringSchema = stringSchema.check(z.xid());\n                }\n                else if (format === \"ksuid\") {\n                    stringSchema = stringSchema.check(z.ksuid());\n                }\n                // Note: json-string format is not currently supported by Zod\n                // Custom formats are ignored - keep as plain string\n            }\n            // Apply constraints\n            if (typeof schema.minLength === \"number\") {\n                stringSchema = stringSchema.min(schema.minLength);\n            }\n            if (typeof schema.maxLength === \"number\") {\n                stringSchema = stringSchema.max(schema.maxLength);\n            }\n            if (schema.pattern) {\n                // JSON Schema patterns are not implicitly anchored (match anywhere in string)\n                stringSchema = stringSchema.regex(new RegExp(schema.pattern));\n            }\n            zodSchema = stringSchema;\n            break;\n        }\n        case \"number\":\n        case \"integer\": {\n            let numberSchema = type === \"integer\" ? z.number().int() : z.number();\n            // Apply constraints\n            if (typeof schema.minimum === \"number\") {\n                numberSchema = numberSchema.min(schema.minimum);\n            }\n            if (typeof schema.maximum === \"number\") {\n                numberSchema = numberSchema.max(schema.maximum);\n            }\n            if (typeof schema.exclusiveMinimum === \"number\") {\n                numberSchema = numberSchema.gt(schema.exclusiveMinimum);\n            }\n            else if (schema.exclusiveMinimum === true && typeof schema.minimum === \"number\") {\n                numberSchema = numberSchema.gt(schema.minimum);\n            }\n            if (typeof schema.exclusiveMaximum === \"number\") {\n                numberSchema = numberSchema.lt(schema.exclusiveMaximum);\n            }\n            else if (schema.exclusiveMaximum === true && typeof schema.maximum === \"number\") {\n                numberSchema = numberSchema.lt(schema.maximum);\n            }\n            if (typeof schema.multipleOf === \"number\") {\n                numberSchema = numberSchema.multipleOf(schema.multipleOf);\n            }\n            zodSchema = numberSchema;\n            break;\n        }\n        case \"boolean\": {\n            zodSchema = z.boolean();\n            break;\n        }\n        case \"null\": {\n            zodSchema = z.null();\n            break;\n        }\n        case \"object\": {\n            const shape = {};\n            const properties = schema.properties || {};\n            const requiredSet = new Set(schema.required || []);\n            // Convert properties - mark optional ones\n            for (const [key, propSchema] of Object.entries(properties)) {\n                const propZodSchema = convertSchema(propSchema, ctx);\n                // If not in required array, make it optional\n                shape[key] = requiredSet.has(key) ? propZodSchema : propZodSchema.optional();\n            }\n            // Handle propertyNames\n            if (schema.propertyNames) {\n                const keySchema = convertSchema(schema.propertyNames, ctx);\n                const valueSchema = schema.additionalProperties && typeof schema.additionalProperties === \"object\"\n                    ? convertSchema(schema.additionalProperties, ctx)\n                    : z.any();\n                // Case A: No properties (pure record)\n                if (Object.keys(shape).length === 0) {\n                    zodSchema = z.record(keySchema, valueSchema);\n                    break;\n                }\n                // Case B: With properties (intersection of object and looseRecord)\n                const objectSchema = z.object(shape).passthrough();\n                const recordSchema = z.looseRecord(keySchema, valueSchema);\n                zodSchema = z.intersection(objectSchema, recordSchema);\n                break;\n            }\n            // Handle patternProperties\n            if (schema.patternProperties) {\n                // patternProperties: keys matching pattern must satisfy corresponding schema\n                // Use loose records so non-matching keys pass through\n                const patternProps = schema.patternProperties;\n                const patternKeys = Object.keys(patternProps);\n                const looseRecords = [];\n                for (const pattern of patternKeys) {\n                    const patternValue = convertSchema(patternProps[pattern], ctx);\n                    const keySchema = z.string().regex(new RegExp(pattern));\n                    looseRecords.push(z.looseRecord(keySchema, patternValue));\n                }\n                // Build intersection: object schema + all pattern property records\n                const schemasToIntersect = [];\n                if (Object.keys(shape).length > 0) {\n                    // Use passthrough so patternProperties can validate additional keys\n                    schemasToIntersect.push(z.object(shape).passthrough());\n                }\n                schemasToIntersect.push(...looseRecords);\n                if (schemasToIntersect.length === 0) {\n                    zodSchema = z.object({}).passthrough();\n                }\n                else if (schemasToIntersect.length === 1) {\n                    zodSchema = schemasToIntersect[0];\n                }\n                else {\n                    // Chain intersections: (A & B) & C & D ...\n                    let result = z.intersection(schemasToIntersect[0], schemasToIntersect[1]);\n                    for (let i = 2; i < schemasToIntersect.length; i++) {\n                        result = z.intersection(result, schemasToIntersect[i]);\n                    }\n                    zodSchema = result;\n                }\n                break;\n            }\n            // Handle additionalProperties\n            // In JSON Schema, additionalProperties defaults to true (allow any extra properties)\n            // In Zod, objects strip unknown keys by default, so we need to handle this explicitly\n            const objectSchema = z.object(shape);\n            if (schema.additionalProperties === false) {\n                // Strict mode - no extra properties allowed\n                zodSchema = objectSchema.strict();\n            }\n            else if (typeof schema.additionalProperties === \"object\") {\n                // Extra properties must match the specified schema\n                zodSchema = objectSchema.catchall(convertSchema(schema.additionalProperties, ctx));\n            }\n            else {\n                // additionalProperties is true or undefined - allow any extra properties (passthrough)\n                zodSchema = objectSchema.passthrough();\n            }\n            break;\n        }\n        case \"array\": {\n            // TODO: uniqueItems is not supported\n            // TODO: contains/minContains/maxContains are not supported\n            // Check if this is a tuple (prefixItems or items as array)\n            const prefixItems = schema.prefixItems;\n            const items = schema.items;\n            if (prefixItems && Array.isArray(prefixItems)) {\n                // Tuple with prefixItems (draft-2020-12)\n                const tupleItems = prefixItems.map((item) => convertSchema(item, ctx));\n                const rest = items && typeof items === \"object\" && !Array.isArray(items)\n                    ? convertSchema(items, ctx)\n                    : undefined;\n                if (rest) {\n                    zodSchema = z.tuple(tupleItems).rest(rest);\n                }\n                else {\n                    zodSchema = z.tuple(tupleItems);\n                }\n                // Apply minItems/maxItems constraints to tuples\n                if (typeof schema.minItems === \"number\") {\n                    zodSchema = zodSchema.check(z.minLength(schema.minItems));\n                }\n                if (typeof schema.maxItems === \"number\") {\n                    zodSchema = zodSchema.check(z.maxLength(schema.maxItems));\n                }\n            }\n            else if (Array.isArray(items)) {\n                // Tuple with items array (draft-7)\n                const tupleItems = items.map((item) => convertSchema(item, ctx));\n                const rest = schema.additionalItems && typeof schema.additionalItems === \"object\"\n                    ? convertSchema(schema.additionalItems, ctx)\n                    : undefined; // additionalItems: false means no rest, handled by default tuple behavior\n                if (rest) {\n                    zodSchema = z.tuple(tupleItems).rest(rest);\n                }\n                else {\n                    zodSchema = z.tuple(tupleItems);\n                }\n                // Apply minItems/maxItems constraints to tuples\n                if (typeof schema.minItems === \"number\") {\n                    zodSchema = zodSchema.check(z.minLength(schema.minItems));\n                }\n                if (typeof schema.maxItems === \"number\") {\n                    zodSchema = zodSchema.check(z.maxLength(schema.maxItems));\n                }\n            }\n            else if (items !== undefined) {\n                // Regular array\n                const element = convertSchema(items, ctx);\n                let arraySchema = z.array(element);\n                // Apply constraints\n                if (typeof schema.minItems === \"number\") {\n                    arraySchema = arraySchema.min(schema.minItems);\n                }\n                if (typeof schema.maxItems === \"number\") {\n                    arraySchema = arraySchema.max(schema.maxItems);\n                }\n                zodSchema = arraySchema;\n            }\n            else {\n                // No items specified - array of any\n                zodSchema = z.array(z.any());\n            }\n            break;\n        }\n        default:\n            throw new Error(`Unsupported type: ${type}`);\n    }\n    // Apply metadata\n    if (schema.description) {\n        zodSchema = zodSchema.describe(schema.description);\n    }\n    if (schema.default !== undefined) {\n        zodSchema = zodSchema.default(schema.default);\n    }\n    return zodSchema;\n}\nfunction convertSchema(schema, ctx) {\n    if (typeof schema === \"boolean\") {\n        return schema ? z.any() : z.never();\n    }\n    // Convert base schema first (ignoring composition keywords)\n    let baseSchema = convertBaseSchema(schema, ctx);\n    const hasExplicitType = schema.type || schema.enum !== undefined || schema.const !== undefined;\n    // Process composition keywords LAST (they can appear together)\n    // Handle anyOf - wrap base schema with union\n    if (schema.anyOf && Array.isArray(schema.anyOf)) {\n        const options = schema.anyOf.map((s) => convertSchema(s, ctx));\n        const anyOfUnion = z.union(options);\n        baseSchema = hasExplicitType ? z.intersection(baseSchema, anyOfUnion) : anyOfUnion;\n    }\n    // Handle oneOf - exclusive union (exactly one must match)\n    if (schema.oneOf && Array.isArray(schema.oneOf)) {\n        const options = schema.oneOf.map((s) => convertSchema(s, ctx));\n        const oneOfUnion = z.xor(options);\n        baseSchema = hasExplicitType ? z.intersection(baseSchema, oneOfUnion) : oneOfUnion;\n    }\n    // Handle allOf - wrap base schema with intersection\n    if (schema.allOf && Array.isArray(schema.allOf)) {\n        if (schema.allOf.length === 0) {\n            baseSchema = hasExplicitType ? baseSchema : z.any();\n        }\n        else {\n            let result = hasExplicitType ? baseSchema : convertSchema(schema.allOf[0], ctx);\n            const startIdx = hasExplicitType ? 0 : 1;\n            for (let i = startIdx; i < schema.allOf.length; i++) {\n                result = z.intersection(result, convertSchema(schema.allOf[i], ctx));\n            }\n            baseSchema = result;\n        }\n    }\n    // Handle nullable (OpenAPI 3.0)\n    if (schema.nullable === true && ctx.version === \"openapi-3.0\") {\n        baseSchema = z.nullable(baseSchema);\n    }\n    // Handle readOnly\n    if (schema.readOnly === true) {\n        baseSchema = z.readonly(baseSchema);\n    }\n    // Collect metadata: core schema keywords and unrecognized keys\n    const extraMeta = {};\n    // Core schema keywords that should be captured as metadata\n    const coreMetadataKeys = [\"$id\", \"id\", \"$comment\", \"$anchor\", \"$vocabulary\", \"$dynamicRef\", \"$dynamicAnchor\"];\n    for (const key of coreMetadataKeys) {\n        if (key in schema) {\n            extraMeta[key] = schema[key];\n        }\n    }\n    // Content keywords - store as metadata\n    const contentMetadataKeys = [\"contentEncoding\", \"contentMediaType\", \"contentSchema\"];\n    for (const key of contentMetadataKeys) {\n        if (key in schema) {\n            extraMeta[key] = schema[key];\n        }\n    }\n    // Unrecognized keys (custom metadata)\n    for (const key of Object.keys(schema)) {\n        if (!RECOGNIZED_KEYS.has(key)) {\n            extraMeta[key] = schema[key];\n        }\n    }\n    if (Object.keys(extraMeta).length > 0) {\n        ctx.registry.add(baseSchema, extraMeta);\n    }\n    return baseSchema;\n}\n/**\n * Converts a JSON Schema to a Zod schema. This function should be considered semi-experimental. It's behavior is liable to change. */\nexport function fromJSONSchema(schema, params) {\n    // Handle boolean schemas\n    if (typeof schema === \"boolean\") {\n        return schema ? z.any() : z.never();\n    }\n    const version = detectVersion(schema, params?.defaultTarget);\n    const defs = (schema.$defs || schema.definitions || {});\n    const ctx = {\n        version,\n        defs,\n        refs: new Map(),\n        processing: new Set(),\n        rootSchema: schema,\n        registry: params?.registry ?? globalRegistry,\n    };\n    return convertSchema(schema, ctx);\n}\n", "import * as core from \"../core/index.js\";\nimport * as schemas from \"./schemas.js\";\nexport function string(params) {\n    return core._coercedString(schemas.ZodString, params);\n}\nexport function number(params) {\n    return core._coercedNumber(schemas.ZodNumber, params);\n}\nexport function boolean(params) {\n    return core._coercedBoolean(schemas.ZodBoolean, params);\n}\nexport function bigint(params) {\n    return core._coercedBigint(schemas.ZodBigInt, params);\n}\nexport function date(params) {\n    return core._coercedDate(schemas.ZodDate, params);\n}\n", null, null, "/* eslint-disable no-underscore-dangle */\n\nimport fs from 'node:fs';\nimport crypto from 'node:crypto';\nimport { EventEmitter } from 'node:events';\n\nclass PersistentFile extends EventEmitter {\n  constructor({ filepath, newFilename, originalFilename, mimetype, hashAlgorithm }) {\n    super();\n\n    this.lastModifiedDate = null;\n    Object.assign(this, { filepath, newFilename, originalFilename, mimetype, hashAlgorithm });\n\n    this.size = 0;\n    this._writeStream = null;\n\n    if (typeof this.hashAlgorithm === 'string') {\n      this.hash = crypto.createHash(this.hashAlgorithm);\n    } else {\n      this.hash = null;\n    }\n  }\n\n  open() {\n    this._writeStream = fs.createWriteStream(this.filepath);\n    this._writeStream.on('error', (err) => {\n      this.emit('error', err);\n    });\n  }\n\n  toJSON() {\n    const json = {\n      size: this.size,\n      filepath: this.filepath,\n      newFilename: this.newFilename,\n      mimetype: this.mimetype,\n      mtime: this.lastModifiedDate,\n      length: this.length,\n      originalFilename: this.originalFilename,\n    };\n    if (this.hash && this.hash !== '') {\n      json.hash = this.hash;\n    }\n    return json;\n  }\n\n  toString() {\n    return `PersistentFile: ${this.newFilename}, Original: ${this.originalFilename}, Path: ${this.filepath}`;\n  }\n\n  write(buffer, cb) {\n    if (this.hash) {\n      this.hash.update(buffer);\n    }\n\n    if (this._writeStream.closed) {\n      cb();\n      return;\n    }\n\n    this._writeStream.write(buffer, () => {\n      this.lastModifiedDate = new Date();\n      this.size += buffer.length;\n      this.emit('progress', this.size);\n      cb();\n    });\n  }\n\n  end(cb) {\n    if (this.hash) {\n      this.hash = this.hash.digest('hex');\n    }\n    this._writeStream.end(() => {\n      this.emit('end');\n      cb();\n    });\n  }\n\n  destroy() {\n    this._writeStream.destroy();\n    const filepath = this.filepath; \n    setTimeout(function () {\n        fs.unlink(filepath, () => {});\n    }, 1)\n  }\n}\n\nexport default PersistentFile;\n", "/* eslint-disable no-underscore-dangle */\n\nimport { createHash } from 'node:crypto';\nimport { EventEmitter } from 'node:events';\n\nclass VolatileFile extends EventEmitter {\n  constructor({ filepath, newFilename, originalFilename, mimetype, hashAlgorithm, createFileWriteStream }) {\n    super();\n\n    this.lastModifiedDate = null;\n    Object.assign(this, { filepath, newFilename, originalFilename, mimetype, hashAlgorithm, createFileWriteStream });\n\n    this.size = 0;\n    this._writeStream = null;\n\n    if (typeof this.hashAlgorithm === 'string') {\n      this.hash = createHash(this.hashAlgorithm);\n    } else {\n      this.hash = null;\n    }\n  }\n\n  open() {\n    this._writeStream = this.createFileWriteStream(this);\n    this._writeStream.on('error', (err) => {\n      this.emit('error', err);\n    });\n  }\n\n  destroy() {\n    this._writeStream.destroy();\n  }\n\n  toJSON() {\n    const json = {\n      size: this.size,\n      newFilename: this.newFilename,\n      length: this.length,\n      originalFilename: this.originalFilename,\n      mimetype: this.mimetype,\n    };\n    if (this.hash && this.hash !== '') {\n      json.hash = this.hash;\n    }\n    return json;\n  }\n\n  toString() {\n    return `VolatileFile: ${this.originalFilename}`;\n  }\n\n  write(buffer, cb) {\n    if (this.hash) {\n      this.hash.update(buffer);\n    }\n\n    if (this._writeStream.closed || this._writeStream.destroyed) {\n      cb();\n      return;\n    }\n\n    this._writeStream.write(buffer, () => {\n      this.size += buffer.length;\n      this.emit('progress', this.size);\n      cb();\n    });\n  }\n\n  end(cb) {\n    if (this.hash) {\n      this.hash = this.hash.digest('hex');\n    }\n    this._writeStream.end(() => {\n      this.emit('end');\n      cb();\n    });\n  }\n}\n\nexport default VolatileFile;\n", "/* eslint-disable class-methods-use-this */\n/* eslint-disable no-underscore-dangle */\n\nimport { init as cuid2init } from '@paralleldrive/cuid2';\nimport dezalgo from 'dezalgo';\nimport { EventEmitter } from 'node:events';\nimport fsPromises from 'node:fs/promises';\nimport os from 'node:os';\nimport path from 'node:path';\nimport { StringDecoder } from 'node:string_decoder';\nimport once from 'once';\nimport FormidableError, * as errors from './FormidableError.js';\nimport PersistentFile from './PersistentFile.js';\nimport VolatileFile from './VolatileFile.js';\nimport DummyParser from './parsers/Dummy.js';\nimport MultipartParser from './parsers/Multipart.js';\nimport { json, multipart, octetstream, querystring } from './plugins/index.js';\n\nconst CUID2_FINGERPRINT = `${process.env.NODE_ENV}-${os.platform()}-${os.hostname()}`\nconst createId = cuid2init({ length: 25, fingerprint: CUID2_FINGERPRINT.toLowerCase() });\n\nconst DEFAULT_OPTIONS = {\n  maxFields: 1000,\n  maxFieldsSize: 20 * 1024 * 1024,\n  maxFiles: Infinity,\n  maxFileSize: 200 * 1024 * 1024,\n  maxTotalFileSize: undefined,\n  minFileSize: 1,\n  allowEmptyFiles: false,\n  createDirsFromUploads: false,\n  keepExtensions: false,\n  encoding: 'utf-8',\n  hashAlgorithm: false,\n  uploadDir: os.tmpdir(),\n  enabledPlugins: [octetstream, querystring, multipart, json],\n  fileWriteStreamHandler: null,\n  defaultInvalidName: 'invalid-name',\n  filter(_part) {\n    return true;\n  },\n  filename: undefined,\n};\n\nfunction hasOwnProp(obj, key) {\n  return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\n\nconst decorateForceSequential = function (promiseCreator) {\n  /* forces a function that returns a promise to be sequential\n  useful for fs  for example */\n  let lastPromise = Promise.resolve();\n  return async function (...x) {\n      const promiseWeAreWaitingFor = lastPromise;\n      let currentPromise;\n      let callback;\n      // we need to change lastPromise before await anything,\n      // otherwise 2 calls might wait the same thing\n      lastPromise = new Promise(function (resolve) {\n          callback = resolve;\n      });\n      await promiseWeAreWaitingFor;\n      currentPromise = promiseCreator(...x);\n      currentPromise.then(callback).catch(callback);\n      return currentPromise;\n  };\n};\n\nconst createNecessaryDirectoriesAsync = decorateForceSequential(function (filePath) {\n  const directoryname = path.dirname(filePath);\n  return fsPromises.mkdir(directoryname, { recursive: true });\n});\n\nconst invalidExtensionChar = (c) => {\n  const code = c.charCodeAt(0);\n  return !(\n    code === 46 || // .\n    (code >= 48 && code <= 57) ||\n    (code >= 65 && code <= 90) ||\n    (code >= 97 && code <= 122)\n  );\n};\n\nclass IncomingForm extends EventEmitter {\n  constructor(options = {}) {\n    super();\n\n    this.options = { ...DEFAULT_OPTIONS, ...options };\n    if (!this.options.maxTotalFileSize) {\n      this.options.maxTotalFileSize = this.options.maxFileSize\n    }\n\n    const dir = path.resolve(\n      this.options.uploadDir || this.options.uploaddir || os.tmpdir(),\n    );\n\n    this.uploaddir = dir;\n    this.uploadDir = dir;\n\n    // initialize with null\n    [\n      'error',\n      'headers',\n      'type',\n      'bytesExpected',\n      'bytesReceived',\n      '_parser',\n      'req',\n    ].forEach((key) => {\n      this[key] = null;\n    });\n\n    this._setUpRename();\n\n    this._flushing = 0;\n    this._fieldsSize = 0;\n    this._totalFileSize = 0;\n    this._plugins = [];\n    this.openedFiles = [];\n\n    this.options.enabledPlugins = []\n      .concat(this.options.enabledPlugins)\n      .filter(Boolean);\n\n    if (this.options.enabledPlugins.length === 0) {\n      throw new FormidableError(\n        'expect at least 1 enabled builtin plugin, see options.enabledPlugins',\n        errors.missingPlugin,\n      );\n    }\n\n    this.options.enabledPlugins.forEach((plugin) => {\n      this.use(plugin);\n    });\n\n    this._setUpMaxFields();\n    this._setUpMaxFiles();\n    this.ended = undefined;\n    this.type = undefined;\n  }\n\n  use(plugin) {\n    if (typeof plugin !== 'function') {\n      throw new FormidableError(\n        '.use: expect `plugin` to be a function',\n        errors.pluginFunction,\n      );\n    }\n    this._plugins.push(plugin.bind(this));\n    return this;\n  }\n\n  pause () {\n    try {\n      this.req.pause();\n    } catch (err) {\n      // the stream was destroyed\n      if (!this.ended) {\n        // before it was completed, crash & burn\n        this._error(err);\n      }\n      return false;\n    }\n    return true;\n  }\n\n  resume () {\n    try {\n      this.req.resume();\n    } catch (err) {\n      // the stream was destroyed\n      if (!this.ended) {\n        // before it was completed, crash & burn\n        this._error(err);\n      }\n      return false;\n    }\n\n    return true;\n  }\n\n  // returns a promise if no callback is provided\n  async parse(req, cb) {\n    this.req = req;\n    let promise;\n\n    // Setup callback first, so we don't miss anything from data events emitted immediately.\n    if (!cb) {\n      let resolveRef;\n      let rejectRef;\n      promise = new Promise((resolve, reject) => {\n        resolveRef = resolve;\n        rejectRef = reject;\n      });\n      cb = (err, fields, files) => {\n        if (err) {\n          rejectRef(err);\n        } else {\n          resolveRef([fields, files]);\n        }\n      }\n    }\n    const callback = once(dezalgo(cb));\n    this.fields = {};\n    const files = {};\n\n    this.on('field', (name, value) => {\n      if (this.type === 'multipart' || this.type === 'urlencoded') {\n        if (!hasOwnProp(this.fields, name)) {\n          this.fields[name] = [value];\n        } else {\n          this.fields[name].push(value);\n        }\n      } else {\n        this.fields[name] = value;\n      }\n    });\n    this.on('file', (name, file) => {\n      if (!hasOwnProp(files, name)) {\n        files[name] = [file];\n      } else {\n        files[name].push(file);\n      }\n    });\n    this.on('error', (err) => {\n      callback(err, this.fields, files);\n    });\n    this.on('end', () => {\n      callback(null, this.fields, files);\n    });\n\n    // Parse headers and setup the parser, ready to start listening for data.\n    await this.writeHeaders(req.headers);\n\n    // Start listening for data.\n    req\n      .on('error', (err) => {\n        this._error(err);\n      })\n      .on('aborted', () => {\n        this.emit('aborted');\n        this._error(new FormidableError('Request aborted', errors.aborted));\n      })\n      .on('data', (buffer) => {\n        try {\n          this.write(buffer);\n        } catch (err) {\n          this._error(err);\n        }\n      })\n      .on('end', () => {\n        if (this.error) {\n          return;\n        }\n        if (this._parser) {\n          this._parser.end();\n        }\n      });\n    if (promise) {\n      return promise;\n    }\n    return this;\n  }\n\n  async writeHeaders(headers) {\n    this.headers = headers;\n    this._parseContentLength();\n    await this._parseContentType();\n\n    if (!this._parser) {\n      this._error(\n        new FormidableError(\n          'no parser found',\n          errors.noParser,\n          415, // Unsupported Media Type\n        ),\n      );\n      return;\n    }\n\n    this._parser.once('error', (error) => {\n      this._error(error);\n    });\n  }\n\n  write(buffer) {\n    if (this.error) {\n      return null;\n    }\n    if (!this._parser) {\n      this._error(\n        new FormidableError('uninitialized parser', errors.uninitializedParser),\n      );\n      return null;\n    }\n\n    this.bytesReceived += buffer.length;\n    this.emit('progress', this.bytesReceived, this.bytesExpected);\n\n    this._parser.write(buffer);\n\n    return this.bytesReceived;\n  }\n\n  onPart(part) {\n    // this method can be overwritten by the user\n    return this._handlePart(part);\n  }\n\n  async _handlePart(part) {\n    if (part.originalFilename && typeof part.originalFilename !== 'string') {\n      this._error(\n        new FormidableError(\n          `the part.originalFilename should be string when it exists`,\n          errors.filenameNotString,\n        ),\n      );\n      return;\n    }\n\n    // This MUST check exactly for undefined. You can not change it to !part.originalFilename.\n\n    // todo: uncomment when switch tests to Jest\n    // console.log(part);\n\n    // ? NOTE(@tunnckocore): no it can be any falsey value, it most probably depends on what's returned\n    // from somewhere else. Where recently I changed the return statements\n    // and such thing because code style\n    // ? NOTE(@tunnckocore): or even better, if there is no mimetype, then it's for sure a field\n    // ? NOTE(@tunnckocore): originalFilename is an empty string when a field?\n    if (!part.mimetype) {\n      let value = '';\n      const decoder = new StringDecoder(\n        part.transferEncoding || this.options.encoding,\n      );\n\n      part.on('data', (buffer) => {\n        this._fieldsSize += buffer.length;\n        if (this._fieldsSize > this.options.maxFieldsSize) {\n          this._error(\n            new FormidableError(\n              `options.maxFieldsSize (${this.options.maxFieldsSize} bytes) exceeded, received ${this._fieldsSize} bytes of field data`,\n              errors.maxFieldsSizeExceeded,\n              413, // Payload Too Large\n            ),\n          );\n          return;\n        }\n        value += decoder.write(buffer);\n      });\n\n      part.on('end', () => {\n        this.emit('field', part.name, value);\n      });\n      return;\n    }\n\n    if (!this.options.filter(part)) {\n      return;\n    }\n\n    this._flushing += 1;\n\n    let fileSize = 0;\n    const newFilename = this._getNewName(part);\n    const filepath = this._joinDirectoryName(newFilename);\n    const file = await this._newFile({\n      newFilename,\n      filepath,\n      originalFilename: part.originalFilename,\n      mimetype: part.mimetype,\n    });\n    file.on('error', (err) => {\n      this._error(err);\n    });\n    this.emit('fileBegin', part.name, file);\n\n    file.open();\n    this.openedFiles.push(file);\n\n    part.on('data', (buffer) => {\n      this._totalFileSize += buffer.length;\n      fileSize += buffer.length;\n\n      if (this._totalFileSize > this.options.maxTotalFileSize) {\n        this._error(\n          new FormidableError(\n            `options.maxTotalFileSize (${this.options.maxTotalFileSize} bytes) exceeded, received ${this._totalFileSize} bytes of file data`,\n            errors.biggerThanTotalMaxFileSize,\n            413,\n          ),\n        );\n        return;\n      }\n      if (buffer.length === 0) {\n        return;\n      }\n      this.pause();\n      file.write(buffer, () => {\n        this.resume();\n      });\n    });\n\n    part.on('end', () => {\n      if (!this.options.allowEmptyFiles && fileSize === 0) {\n        this._error(\n          new FormidableError(\n            `options.allowEmptyFiles is false, file size should be greater than 0`,\n            errors.noEmptyFiles,\n            400,\n          ),\n        );\n        return;\n      }\n      if (fileSize < this.options.minFileSize) {\n        this._error(\n          new FormidableError(\n            `options.minFileSize (${this.options.minFileSize} bytes) inferior, received ${fileSize} bytes of file data`,\n            errors.smallerThanMinFileSize,\n            400,\n          ),\n        );\n        return;\n      }\n      if (fileSize > this.options.maxFileSize) {\n        this._error(\n          new FormidableError(\n            `options.maxFileSize (${this.options.maxFileSize} bytes), received ${fileSize} bytes of file data`,\n            errors.biggerThanMaxFileSize,\n            413,\n          ),\n        );\n        return;\n      }\n\n      file.end(() => {\n        this._flushing -= 1;\n        this.emit('file', part.name, file);\n        this._maybeEnd();\n      });\n    });\n  }\n\n  // eslint-disable-next-line max-statements\n  async _parseContentType() {\n    if (this.bytesExpected === 0) {\n      this._parser = new DummyParser(this, this.options);\n      return;\n    }\n\n    if (!this.headers['content-type']) {\n      this._error(\n        new FormidableError(\n          'bad content-type header, no content-type',\n          errors.missingContentType,\n          400,\n        ),\n      );\n      return;\n    }\n\n\n    new DummyParser(this, this.options);\n\n    const results = [];\n    await Promise.all(this._plugins.map(async (plugin, idx) => {\n      let pluginReturn = null;\n      try {\n        pluginReturn = await plugin(this, this.options) || this;\n      } catch (err) {\n        // directly throw from the `form.parse` method;\n        // there is no other better way, except a handle through options\n        const error = new FormidableError(\n          `plugin on index ${idx} failed with: ${err.message}`,\n          errors.pluginFailed,\n          500,\n        );\n        error.idx = idx;\n        throw error;\n      }\n      Object.assign(this, pluginReturn);\n\n      // todo: use Set/Map and pass plugin name instead of the `idx` index\n      this.emit('plugin', idx, pluginReturn);\n    }));\n    this.emit('pluginsResults', results);\n  }\n\n  _error(err, eventName = 'error') {\n    if (this.error || this.ended) {\n      return;\n    }\n\n    this.req = null;\n    this.error = err;\n    this.emit(eventName, err);\n\n    this.openedFiles.forEach((file) => {\n      file.destroy();\n    });\n  }\n\n  _parseContentLength() {\n    this.bytesReceived = 0;\n    if (this.headers['content-length']) {\n      this.bytesExpected = parseInt(this.headers['content-length'], 10);\n    } else if (this.headers['transfer-encoding'] === undefined) {\n      this.bytesExpected = 0;\n    }\n\n    if (this.bytesExpected !== null) {\n      this.emit('progress', this.bytesReceived, this.bytesExpected);\n    }\n  }\n\n  _newParser() {\n    return new MultipartParser(this.options);\n  }\n\n  async _newFile({ filepath, originalFilename, mimetype, newFilename }) {\n    if (this.options.fileWriteStreamHandler) {\n      return new VolatileFile({\n        newFilename,\n        filepath,\n        originalFilename,\n        mimetype,\n        createFileWriteStream: this.options.fileWriteStreamHandler,\n        hashAlgorithm: this.options.hashAlgorithm,\n      });\n    }\n    if (this.options.createDirsFromUploads) {\n      try {\n        await createNecessaryDirectoriesAsync(filepath);\n      } catch (errorCreatingDir) {\n        this._error(new FormidableError(\n          `cannot create directory`,\n          errors.cannotCreateDir,\n          409,\n        ));\n      }\n    }\n    return new PersistentFile({\n      newFilename,\n      filepath,\n      originalFilename,\n      mimetype,\n      hashAlgorithm: this.options.hashAlgorithm,\n    });\n  }\n\n  _getFileName(headerValue) {\n    // matches either a quoted-string or a token (RFC 2616 section 19.5.1)\n    const m = headerValue.match(\n      /\\bfilename=(\"(.*?)\"|([^()<>{}[\\]@,;:\"?=\\s/\\t]+))($|;\\s)/i,\n    );\n    if (!m) return null;\n\n    const match = m[2] || m[3] || '';\n    let originalFilename = match.substr(match.lastIndexOf('\\\\') + 1);\n    originalFilename = originalFilename.replace(/%22/g, '\"');\n    originalFilename = originalFilename.replace(/&#([\\d]{4});/g, (_, code) =>\n      String.fromCharCode(code),\n    );\n\n    return originalFilename;\n  }\n\n  // able to get composed extension with multiple dots\n  // \"a.b.c\" -> \".b.c\"\n  // as opposed to path.extname -> \".c\"\n  _getExtension(str) {\n    if (!str) {\n      return '';\n    }\n\n    const basename = path.basename(str);\n    const firstDot = basename.indexOf('.');\n    const lastDot = basename.lastIndexOf('.');\n    let rawExtname = path.extname(basename);\n\n    if (firstDot !== lastDot) {\n      rawExtname =  basename.slice(firstDot);\n    }\n\n    let filtered;\n    const firstInvalidIndex = Array.from(rawExtname).findIndex(invalidExtensionChar);\n    if (firstInvalidIndex === -1) {\n      filtered = rawExtname;\n    } else {\n      filtered = rawExtname.substring(0, firstInvalidIndex);\n    }\n    if (filtered === '.') {\n      return '';\n    }\n    return filtered;\n  }\n\n  _joinDirectoryName(name) {\n    const newPath = path.join(this.uploadDir, name);\n\n    // prevent directory traversal attacks\n    if (!newPath.startsWith(this.uploadDir)) {\n      return path.join(this.uploadDir, this.options.defaultInvalidName);\n    }\n\n    return newPath;\n  }\n\n  _setUpRename() {\n    const hasRename = typeof this.options.filename === 'function';\n    if (hasRename) {\n      this._getNewName = (part) => {\n        let ext = '';\n        let name = this.options.defaultInvalidName;\n        if (part.originalFilename) {\n          // can be null\n          ({ ext, name } = path.parse(part.originalFilename));\n          if (this.options.keepExtensions !== true) {\n            ext = '';\n          }\n        }\n        return this.options.filename.call(this, name, ext, part, this);\n      };\n    } else {\n      this._getNewName = (part) => {\n        const name = createId();\n\n        if (part && this.options.keepExtensions) {\n          const originalFilename =\n            typeof part === 'string' ? part : part.originalFilename;\n          return `${name}${this._getExtension(originalFilename)}`;\n        }\n\n        return name;\n      };\n    }\n  }\n\n  _setUpMaxFields() {\n    if (this.options.maxFields !== Infinity) {\n      let fieldsCount = 0;\n      this.on('field', () => {\n        fieldsCount += 1;\n        if (fieldsCount > this.options.maxFields) {\n          this._error(\n            new FormidableError(\n              `options.maxFields (${this.options.maxFields}) exceeded`,\n              errors.maxFieldsExceeded,\n              413,\n            ),\n          );\n        }\n      });\n    }\n  }\n\n  _setUpMaxFiles() {\n    if (this.options.maxFiles !== Infinity) {\n      let fileCount = 0;\n      this.on('fileBegin', () => {\n        fileCount += 1;\n        if (fileCount > this.options.maxFiles) {\n          this._error(\n            new FormidableError(\n              `options.maxFiles (${this.options.maxFiles}) exceeded`,\n              errors.maxFilesExceeded,\n              413,\n            ),\n          );\n        }\n      });\n    }\n  }\n\n  _maybeEnd() {\n    if (!this.ended || this._flushing || this.error) {\n      return;\n    }\n    this.req = null;\n    this.emit('end');\n  }\n}\n\nexport default IncomingForm;\nexport { DEFAULT_OPTIONS };\n", "const missingPlugin = 1000;\nconst pluginFunction = 1001;\nconst aborted = 1002;\nconst noParser = 1003;\nconst uninitializedParser = 1004;\nconst filenameNotString = 1005;\nconst maxFieldsSizeExceeded = 1006;\nconst maxFieldsExceeded = 1007;\nconst smallerThanMinFileSize = 1008;\nconst biggerThanTotalMaxFileSize = 1009;\nconst noEmptyFiles = 1010;\nconst missingContentType = 1011;\nconst malformedMultipart = 1012;\nconst missingMultipartBoundary = 1013;\nconst unknownTransferEncoding = 1014;\nconst maxFilesExceeded = 1015;\nconst biggerThanMaxFileSize = 1016;\nconst pluginFailed = 1017;\nconst cannotCreateDir = 1018;\n\nconst FormidableError = class extends Error {\n  constructor(message, internalCode, httpCode = 500) {\n    super(message);\n    this.code = internalCode;\n    this.httpCode = httpCode;\n  }\n};\n\nexport {\n  missingPlugin,\n  pluginFunction,\n  aborted,\n  noParser,\n  uninitializedParser,\n  filenameNotString,\n  maxFieldsSizeExceeded,\n  maxFieldsExceeded,\n  maxFilesExceeded,\n  smallerThanMinFileSize,\n  biggerThanMaxFileSize,\n  noEmptyFiles,\n  missingContentType,\n  malformedMultipart,\n  missingMultipartBoundary,\n  unknownTransferEncoding,\n  biggerThanTotalMaxFileSize,\n  pluginFailed,\n  cannotCreateDir,\n};\n\nexport default FormidableError;\n", "/* eslint-disable no-underscore-dangle */\n\nimport { Transform } from 'node:stream';\n\nclass DummyParser extends Transform {\n  constructor(incomingForm, options = {}) {\n    super();\n    this.globalOptions = { ...options };\n    this.incomingForm = incomingForm;\n  }\n\n  _flush(callback) {\n    this.incomingForm.ended = true;\n    this.incomingForm._maybeEnd();\n    callback();\n  }\n}\n\nexport default DummyParser;\n", "/* eslint-disable no-fallthrough */\n/* eslint-disable no-bitwise */\n/* eslint-disable no-plusplus */\n/* eslint-disable no-underscore-dangle */\n\nimport { Transform } from 'node:stream';\nimport * as errors from '../FormidableError.js';\nimport FormidableError from '../FormidableError.js';\n\nlet s = 0;\nconst STATE = {\n  PARSER_UNINITIALIZED: s++,\n  START: s++,\n  START_BOUNDARY: s++,\n  HEADER_FIELD_START: s++,\n  HEADER_FIELD: s++,\n  HEADER_VALUE_START: s++,\n  HEADER_VALUE: s++,\n  HEADER_VALUE_ALMOST_DONE: s++,\n  HEADERS_ALMOST_DONE: s++,\n  PART_DATA_START: s++,\n  PART_DATA: s++,\n  PART_END: s++,\n  END: s++,\n};\n\nlet f = 1;\nconst FBOUNDARY = { PART_BOUNDARY: f, LAST_BOUNDARY: (f *= 2) };\n\nconst LF = 10;\nconst CR = 13;\nconst SPACE = 32;\nconst HYPHEN = 45;\nconst COLON = 58;\nconst A = 97;\nconst Z = 122;\n\nfunction lower(c) {\n  return c | 0x20;\n}\n\nexport const STATES = {};\n\nObject.keys(STATE).forEach((stateName) => {\n  STATES[stateName] = STATE[stateName];\n});\n\nclass MultipartParser extends Transform {\n  constructor(options = {}) {\n    super({ readableObjectMode: true });\n    this.boundary = null;\n    this.boundaryChars = null;\n    this.lookbehind = null;\n    this.bufferLength = 0;\n    this.state = STATE.PARSER_UNINITIALIZED;\n\n    this.globalOptions = { ...options };\n    this.index = null;\n    this.flags = 0;\n  }\n\n  _endUnexpected() {\n    return new FormidableError(\n      `MultipartParser.end(): stream ended unexpectedly: ${this.explain()}`,\n      errors.malformedMultipart,\n      400,\n    );\n  }\n\n  _flush(done) {\n    if (\n      (this.state === STATE.HEADER_FIELD_START && this.index === 0) ||\n      (this.state === STATE.PART_DATA && this.index === this.boundary.length)\n    ) {\n      this._handleCallback('partEnd');\n      this._handleCallback('end');\n      done();\n    } else if (this.state !== STATE.END) {\n      done(this._endUnexpected());\n    } else {\n      done();\n    }\n  }\n\n  initWithBoundary(str) {\n    this.boundary = Buffer.from(`\\r\\n--${str}`);\n    this.lookbehind = Buffer.alloc(this.boundary.length + 8);\n    this.state = STATE.START;\n    this.boundaryChars = {};\n\n    for (let i = 0; i < this.boundary.length; i++) {\n      this.boundaryChars[this.boundary[i]] = true;\n    }\n  }\n\n  // eslint-disable-next-line max-params\n  _handleCallback(name, buf, start, end) {\n    if (start !== undefined && start === end) {\n      return;\n    }\n    this.push({ name, buffer: buf, start, end });\n  }\n\n  // eslint-disable-next-line max-statements\n  _transform(buffer, _, done) {\n    let i = 0;\n    let prevIndex = this.index;\n    let { index, state, flags } = this;\n    const { lookbehind, boundary, boundaryChars } = this;\n    const boundaryLength = boundary.length;\n    const boundaryEnd = boundaryLength - 1;\n    this.bufferLength = buffer.length;\n    let c = null;\n    let cl = null;\n\n    const setMark = (name, idx) => {\n      this[`${name}Mark`] = typeof idx === 'number' ? idx : i;\n    };\n\n    const clearMarkSymbol = (name) => {\n      delete this[`${name}Mark`];\n    };\n\n    const dataCallback = (name, shouldClear) => {\n      const markSymbol = `${name}Mark`;\n      if (!(markSymbol in this)) {\n        return;\n      }\n\n      if (!shouldClear) {\n        this._handleCallback(name, buffer, this[markSymbol], buffer.length);\n        setMark(name, 0);\n      } else {\n        this._handleCallback(name, buffer, this[markSymbol], i);\n        clearMarkSymbol(name);\n      }\n    };\n\n    for (i = 0; i < this.bufferLength; i++) {\n      c = buffer[i];\n      switch (state) {\n        case STATE.PARSER_UNINITIALIZED:\n          done(this._endUnexpected());\n          return;\n        case STATE.START:\n          index = 0;\n          state = STATE.START_BOUNDARY;\n        case STATE.START_BOUNDARY:\n          if (index === boundary.length - 2) {\n            if (c === HYPHEN) {\n              flags |= FBOUNDARY.LAST_BOUNDARY;\n            } else if (c !== CR) {\n              done(this._endUnexpected());\n              return;\n            }\n            index++;\n            break;\n          } else if (index - 1 === boundary.length - 2) {\n            if (flags & FBOUNDARY.LAST_BOUNDARY && c === HYPHEN) {\n              this._handleCallback('end');\n              state = STATE.END;\n              flags = 0;\n            } else if (!(flags & FBOUNDARY.LAST_BOUNDARY) && c === LF) {\n              index = 0;\n              this._handleCallback('partBegin');\n              state = STATE.HEADER_FIELD_START;\n            } else {\n              done(this._endUnexpected());\n              return;\n            }\n            break;\n          }\n\n          if (c !== boundary[index + 2]) {\n            index = -2;\n          }\n          if (c === boundary[index + 2]) {\n            index++;\n          }\n          break;\n        case STATE.HEADER_FIELD_START:\n          state = STATE.HEADER_FIELD;\n          setMark('headerField');\n          index = 0;\n        case STATE.HEADER_FIELD:\n          if (c === CR) {\n            clearMarkSymbol('headerField');\n            state = STATE.HEADERS_ALMOST_DONE;\n            break;\n          }\n\n          index++;\n          if (c === HYPHEN) {\n            break;\n          }\n\n          if (c === COLON) {\n            if (index === 1) {\n              // empty header field\n              done(this._endUnexpected());\n              return;\n            }\n            dataCallback('headerField', true);\n            state = STATE.HEADER_VALUE_START;\n            break;\n          }\n\n          cl = lower(c);\n          if (cl < A || cl > Z) {\n            done(this._endUnexpected());\n            return;\n          }\n          break;\n        case STATE.HEADER_VALUE_START:\n          if (c === SPACE) {\n            break;\n          }\n\n          setMark('headerValue');\n          state = STATE.HEADER_VALUE;\n        case STATE.HEADER_VALUE:\n          if (c === CR) {\n            dataCallback('headerValue', true);\n            this._handleCallback('headerEnd');\n            state = STATE.HEADER_VALUE_ALMOST_DONE;\n          }\n          break;\n        case STATE.HEADER_VALUE_ALMOST_DONE:\n          if (c !== LF) {\n            done(this._endUnexpected());\nreturn;\n          }\n          state = STATE.HEADER_FIELD_START;\n          break;\n        case STATE.HEADERS_ALMOST_DONE:\n          if (c !== LF) {\n            done(this._endUnexpected());\n            return;\n          }\n\n          this._handleCallback('headersEnd');\n          state = STATE.PART_DATA_START;\n          break;\n        case STATE.PART_DATA_START:\n          state = STATE.PART_DATA;\n          setMark('partData');\n        case STATE.PART_DATA:\n          prevIndex = index;\n\n          if (index === 0) {\n            // boyer-moore derived algorithm to safely skip non-boundary data\n            i += boundaryEnd;\n            while (i < this.bufferLength && !(buffer[i] in boundaryChars)) {\n              i += boundaryLength;\n            }\n            i -= boundaryEnd;\n            c = buffer[i];\n          }\n\n          if (index < boundary.length) {\n            if (boundary[index] === c) {\n              if (index === 0) {\n                dataCallback('partData', true);\n              }\n              index++;\n            } else {\n              index = 0;\n            }\n          } else if (index === boundary.length) {\n            index++;\n            if (c === CR) {\n              // CR = part boundary\n              flags |= FBOUNDARY.PART_BOUNDARY;\n            } else if (c === HYPHEN) {\n              // HYPHEN = end boundary\n              flags |= FBOUNDARY.LAST_BOUNDARY;\n            } else {\n              index = 0;\n            }\n          } else if (index - 1 === boundary.length) {\n            if (flags & FBOUNDARY.PART_BOUNDARY) {\n              index = 0;\n              if (c === LF) {\n                // unset the PART_BOUNDARY flag\n                flags &= ~FBOUNDARY.PART_BOUNDARY;\n                this._handleCallback('partEnd');\n                this._handleCallback('partBegin');\n                state = STATE.HEADER_FIELD_START;\n                break;\n              }\n            } else if (flags & FBOUNDARY.LAST_BOUNDARY) {\n              if (c === HYPHEN) {\n                this._handleCallback('partEnd');\n                this._handleCallback('end');\n                state = STATE.END;\n                flags = 0;\n              } else {\n                index = 0;\n              }\n            } else {\n              index = 0;\n            }\n          }\n\n          if (index > 0) {\n            // when matching a possible boundary, keep a lookbehind reference\n            // in case it turns out to be a false lead\n            lookbehind[index - 1] = c;\n          } else if (prevIndex > 0) {\n            // if our boundary turned out to be rubbish, the captured lookbehind\n            // belongs to partData\n            this._handleCallback('partData', lookbehind, 0, prevIndex);\n            prevIndex = 0;\n            setMark('partData');\n\n            // reconsider the current character even so it interrupted the sequence\n            // it could be the beginning of a new sequence\n            i--;\n          }\n\n          break;\n        case STATE.END:\n          break;\n        default:\n          done(this._endUnexpected());\n          return;\n      }\n    }\n\n    dataCallback('headerField');\n    dataCallback('headerValue');\n    dataCallback('partData');\n\n    this.index = index;\n    this.state = state;\n    this.flags = flags;\n\n    done();\n    return this.bufferLength;\n  }\n\n  explain() {\n    return `state = ${MultipartParser.stateToString(this.state)}`;\n  }\n}\n\n// eslint-disable-next-line consistent-return\nMultipartParser.stateToString = (stateNumber) => {\n  // eslint-disable-next-line no-restricted-syntax, guard-for-in\n  for (const stateName in STATE) {\n    const number = STATE[stateName];\n    if (number === stateNumber) return stateName;\n  }\n};\n\nexport default Object.assign(MultipartParser, { STATES });\n", "import { PassThrough } from 'node:stream';\n\nclass OctetStreamParser extends PassThrough {\n  constructor(options = {}) {\n    super();\n    this.globalOptions = { ...options };\n  }\n}\n\nexport default OctetStreamParser;\n", "/* eslint-disable no-underscore-dangle */\n\nimport OctetStreamParser from '../parsers/OctetStream.js';\n\nexport const octetStreamType = 'octet-stream';\n// the `options` is also available through the `options` / `formidable.options`\nexport default async function plugin(formidable, options) {\n  // the `this` context is always formidable, as the first argument of a plugin\n  // but this allows us to customize/test each plugin\n\n  /* istanbul ignore next */\n  const self = this || formidable;\n\n  if (/octet-stream/i.test(self.headers['content-type'])) {\n    await init.call(self, self, options);\n  }\n  return self;\n}\n\n// Note that it's a good practice (but it's up to you) to use the `this.options` instead\n// of the passed `options` (second) param, because when you decide\n// to test the plugin you can pass custom `this` context to it (and so `this.options`)\nasync function init(_self, _opts) {\n  this.type = octetStreamType;\n  const originalFilename = this.headers['x-file-name'];\n  const mimetype = this.headers['content-type'];\n\n  const thisPart = {\n    originalFilename,\n    mimetype,\n  };\n  const newFilename = this._getNewName(thisPart);\n  const filepath = this._joinDirectoryName(newFilename);\n  const file = await this._newFile({\n    newFilename,\n    filepath,\n    originalFilename,\n    mimetype,\n  });\n\n  this.emit('fileBegin', originalFilename, file);\n  file.open();\n  this.openedFiles.push(file);\n  this._flushing += 1;\n\n  this._parser = new OctetStreamParser(this.options);\n\n  // Keep track of writes that haven't finished so we don't emit the file before it's done being written\n  let outstandingWrites = 0;\n\n  this._parser.on('data', (buffer) => {\n    this.pause();\n    outstandingWrites += 1;\n\n    file.write(buffer, () => {\n      outstandingWrites -= 1;\n      this.resume();\n\n      if (this.ended) {\n        this._parser.emit('doneWritingFile');\n      }\n    });\n  });\n\n  this._parser.on('end', () => {\n    this._flushing -= 1;\n    this.ended = true;\n\n    const done = () => {\n      file.end(() => {\n        this.emit('file', 'file', file);\n        this._maybeEnd();\n      });\n    };\n\n    if (outstandingWrites === 0) {\n      done();\n    } else {\n      this._parser.once('doneWritingFile', done);\n    }\n  });\n\n  return this;\n}\n", "/* eslint-disable no-underscore-dangle */\n\nimport { Transform } from 'node:stream';\n\n// This is a buffering parser, have a look at StreamingQuerystring.js for a streaming parser\nclass QuerystringParser extends Transform {\n  constructor(options = {}) {\n    super({ readableObjectMode: true });\n    this.globalOptions = { ...options };\n    this.buffer = '';\n    this.bufferLength = 0;\n  }\n\n  _transform(buffer, encoding, callback) {\n    this.buffer += buffer.toString('ascii');\n    this.bufferLength = this.buffer.length;\n    callback();\n  }\n\n  _flush(callback) {\n    const fields = new URLSearchParams(this.buffer);\n    for (const [key, value] of fields) {\n      this.push({\n        key,\n        value,\n      });\n    }\n    this.buffer = '';\n    callback();\n  }\n}\n\nexport default QuerystringParser;\n", "/* eslint-disable no-underscore-dangle */\n\n\nimport QuerystringParser from '../parsers/Querystring.js';\n\nexport const querystringType = 'urlencoded';\n// the `options` is also available through the `this.options` / `formidable.options`\nexport default function plugin(formidable, options) {\n  // the `this` context is always formidable, as the first argument of a plugin\n  // but this allows us to customize/test each plugin\n\n  /* istanbul ignore next */\n  const self = this || formidable;\n\n  if (/urlencoded/i.test(self.headers['content-type'])) {\n    init.call(self, self, options);\n  }\n  return self;\n};\n\n// Note that it's a good practice (but it's up to you) to use the `this.options` instead\n// of the passed `options` (second) param, because when you decide\n// to test the plugin you can pass custom `this` context to it (and so `this.options`)\nfunction init(_self, _opts) {\n  this.type = querystringType;\n\n  const parser = new QuerystringParser(this.options);\n\n  parser.on('data', ({ key, value }) => {\n    this.emit('field', key, value);\n  });\n\n  parser.once('end', () => {\n    this.ended = true;\n    this._maybeEnd();\n  });\n\n  this._parser = parser;\n\n  return this;\n}\n", "/* eslint-disable no-underscore-dangle */\n\nimport { Stream } from 'node:stream';\nimport MultipartParser from '../parsers/Multipart.js';\nimport * as errors from '../FormidableError.js';\nimport FormidableError from '../FormidableError.js';\n\nexport const multipartType = 'multipart';\n// the `options` is also available through the `options` / `formidable.options`\nexport default function plugin(formidable, options) {\n  // the `this` context is always formidable, as the first argument of a plugin\n  // but this allows us to customize/test each plugin\n\n  /* istanbul ignore next */\n  const self = this || formidable;\n\n  // NOTE: we (currently) support both multipart/form-data and multipart/related\n  const multipart = /multipart/i.test(self.headers['content-type']);\n\n  if (multipart) {\n    const m = self.headers['content-type'].match(\n      /boundary=(?:\"([^\"]+)\"|([^;]+))/i,\n    );\n    if (m) {\n      const initMultipart = createInitMultipart(m[1] || m[2]);\n      initMultipart.call(self, self, options); // lgtm [js/superfluous-trailing-arguments]\n    } else {\n      const err = new FormidableError(\n        'bad content-type header, no multipart boundary',\n        errors.missingMultipartBoundary,\n        400,\n      );\n      self._error(err);\n    }\n  }\n  return self;\n}\n\n// Note that it's a good practice (but it's up to you) to use the `this.options` instead\n// of the passed `options` (second) param, because when you decide\n// to test the plugin you can pass custom `this` context to it (and so `this.options`)\nfunction createInitMultipart(boundary) {\n  return function initMultipart() {\n    this.type = multipartType;\n\n    const parser = new MultipartParser(this.options);\n    let headerField;\n    let headerValue;\n    let part;\n\n    parser.initWithBoundary(boundary);\n\n    // eslint-disable-next-line max-statements, consistent-return\n    parser.on('data', async ({ name, buffer, start, end }) => {\n      if (name === 'partBegin') {\n        part = new Stream();\n        part.readable = true;\n        part.headers = {};\n        part.name = null;\n        part.originalFilename = null;\n        part.mimetype = null;\n\n        part.transferEncoding = this.options.encoding;\n        part.transferBuffer = '';\n\n        headerField = '';\n        headerValue = '';\n      } else if (name === 'headerField') {\n        headerField += buffer.toString(this.options.encoding, start, end);\n      } else if (name === 'headerValue') {\n        headerValue += buffer.toString(this.options.encoding, start, end);\n      } else if (name === 'headerEnd') {\n        headerField = headerField.toLowerCase();\n        part.headers[headerField] = headerValue;\n\n        // matches either a quoted-string or a token (RFC 2616 section 19.5.1)\n        const m = headerValue.match(\n          // eslint-disable-next-line no-useless-escape\n          /\\bname=(\"([^\"]*)\"|([^\\(\\)<>@,;:\\\\\"\\/\\[\\]\\?=\\{\\}\\s\\t/]+))/i,\n        );\n        if (headerField === 'content-disposition') {\n          if (m) {\n            part.name = m[2] || m[3] || '';\n          }\n\n          part.originalFilename = this._getFileName(headerValue);\n        } else if (headerField === 'content-type') {\n          part.mimetype = headerValue;\n        } else if (headerField === 'content-transfer-encoding') {\n          part.transferEncoding = headerValue.toLowerCase();\n        }\n\n        headerField = '';\n        headerValue = '';\n      } else if (name === 'headersEnd') {\n        switch (part.transferEncoding) {\n          case 'binary':\n          case '7bit':\n          case '8bit':\n          case 'utf-8': {\n            const dataPropagation = (ctx) => {\n              if (ctx.name === 'partData') {\n                part.emit('data', ctx.buffer.slice(ctx.start, ctx.end));\n              }\n            };\n            const dataStopPropagation = (ctx) => {\n              if (ctx.name === 'partEnd') {\n                part.emit('end');\n                parser.off('data', dataPropagation);\n                parser.off('data', dataStopPropagation);\n              }\n            };\n            parser.on('data', dataPropagation);\n            parser.on('data', dataStopPropagation);\n            break;\n          }\n          case 'base64': {\n            const dataPropagation = (ctx) => {\n              if (ctx.name === 'partData') {\n                part.transferBuffer += ctx.buffer\n                  .slice(ctx.start, ctx.end)\n                  .toString('ascii');\n\n                /*\n                  four bytes (chars) in base64 converts to three bytes in binary\n                  encoding. So we should always work with a number of bytes that\n                  can be divided by 4, it will result in a number of bytes that\n                  can be divided vy 3.\n                  */\n                const offset = parseInt(part.transferBuffer.length / 4, 10) * 4;\n                part.emit(\n                  'data',\n                  Buffer.from(\n                    part.transferBuffer.substring(0, offset),\n                    'base64',\n                  ),\n                );\n                part.transferBuffer = part.transferBuffer.substring(offset);\n              }\n            };\n            const dataStopPropagation = (ctx) => {\n              if (ctx.name === 'partEnd') {\n                part.emit('data', Buffer.from(part.transferBuffer, 'base64'));\n                part.emit('end');\n                parser.off('data', dataPropagation);\n                parser.off('data', dataStopPropagation);\n              }\n            };\n            parser.on('data', dataPropagation);\n            parser.on('data', dataStopPropagation);\n            break;\n          }\n          default:\n            return this._error(\n              new FormidableError(\n                'unknown transfer-encoding',\n                errors.unknownTransferEncoding,\n                501,\n              ),\n            );\n        }\n        this._parser.pause();\n        await this.onPart(part);\n        this._parser.resume();\n      } else if (name === 'end') {\n        this.ended = true;\n        this._maybeEnd();\n      }\n    });\n\n    this._parser = parser;\n  };\n}\n", "/* eslint-disable no-underscore-dangle */\n\nimport { Transform } from 'node:stream';\n\nclass JSONParser extends Transform {\n  constructor(options = {}) {\n    super({ readableObjectMode: true });\n    this.chunks = [];\n    this.globalOptions = { ...options };\n  }\n\n  _transform(chunk, encoding, callback) {\n    this.chunks.push(String(chunk)); // todo consider using a string decoder\n    callback();\n  }\n\n  _flush(callback) {\n    try {\n      const fields = JSON.parse(this.chunks.join(''));\n      this.push(fields);\n    } catch (e) {\n      callback(e);\n      return;\n    }\n    this.chunks = null;\n    callback();\n  }\n}\n\nexport default JSONParser;\n", "/* eslint-disable no-underscore-dangle */\n\nimport JSONParser from '../parsers/JSON.js';\n\nexport const jsonType = 'json';\n// the `options` is also available through the `this.options` / `formidable.options`\nexport default function plugin(formidable, options) {\n  // the `this` context is always formidable, as the first argument of a plugin\n  // but this allows us to customize/test each plugin\n\n  /* istanbul ignore next */\n  const self = this || formidable;\n\n  if (/json/i.test(self.headers['content-type'])) {\n    init.call(self, self, options);\n  }\n\n  return self;\n};\n\n// Note that it's a good practice (but it's up to you) to use the `this.options` instead\n// of the passed `options` (second) param, because when you decide\n// to test the plugin you can pass custom `this` context to it (and so `this.options`)\nfunction init(_self, _opts) {\n  this.type = jsonType;\n\n  const parser = new JSONParser(this.options);\n\n  parser.on('data', (fields) => {\n    this.fields = fields;\n  });\n\n  parser.once('end', () => {\n    this.ended = true;\n    this._maybeEnd();\n  });\n\n  this._parser = parser;\n}\n", "import PersistentFile from './PersistentFile.js';\nimport VolatileFile from './VolatileFile.js';\nimport Formidable, { DEFAULT_OPTIONS } from './Formidable.js';\n\n\n\n// make it available without requiring the `new` keyword\n// if you want it access `const formidable.IncomingForm` as v1\nconst formidable = (...args) => new Formidable(...args);\nconst {enabledPlugins} = DEFAULT_OPTIONS;\n\nexport default formidable;\nexport {\n  PersistentFile as File,\n  PersistentFile,\n  VolatileFile,\n  Formidable,\n  // alias\n  Formidable as IncomingForm,\n\n  // as named\n  formidable,\n\n\n  // misc\n  DEFAULT_OPTIONS as defaultOptions,\n  enabledPlugins,  \n};\n\nexport * from './parsers/index.js';\nexport * from './plugins/index.js';\nexport * as errors from './FormidableError.js';", null, null, null, null, "import path from 'node:path';\nimport fs from 'node:fs';\nimport hbs from 'handlebars';\nimport { Logger } from '@restorecommerce/logger';\nimport { type OIDCHbsTemplates } from './interfaces.js';\n\nexport interface OIDCTemplateError {\n  key: string;\n  message?: string;\n}\n\nexport interface OIDCTemplateContext {\n  title: string;\n  error?: OIDCTemplateError;\n  dev: boolean;\n  dbg: {\n    session?: any;\n    params?: any;\n    prompt?: any;\n  };\n}\n\nexport interface OIDCTemplateConsentContext extends OIDCTemplateContext {\n  uid: string;\n  details?: any;\n}\n\nexport interface OIDCTemplateLoginContext extends OIDCTemplateContext {\n  uid: string;\n  identifier?: string;\n  remember?: boolean;\n}\n\nhbs.registerHelper('json', (object) => {\n  return `<pre>${JSON.stringify(object, null, 2)}</pre>`;\n});\n\nexport class OIDCTemplateEngine {\n  private layoutHbs?: HandlebarsTemplateDelegate<any>;\n  private loginHbs?: HandlebarsTemplateDelegate<OIDCTemplateLoginContext>;\n  private consentHbs?: HandlebarsTemplateDelegate<OIDCTemplateConsentContext>;\n\n  constructor(\n    private templates?: OIDCHbsTemplates,\n    private logger?: Logger,\n  ) { }\n\n  async load(target: string) {\n    const template = this.templates?.[target];\n    if (template) {\n      this.logger?.info(`OIDC: Loading template ${template}`);\n      const layout = await new Promise<string>((resolve, reject) => {\n        fs.readFile(\n          path.resolve(template),\n          (err, data) => err ? reject(err) : resolve(data.toString())\n        );\n      });\n      return hbs.compile(layout);\n    }\n    else {\n      const msg = `OIDC: 'odic.template.${target}' not configured!`;\n      this.logger?.warn(msg);\n      throw new Error(msg);\n    }\n  }\n\n  async layout(context: OIDCTemplateContext & { body: string }) {\n    this.layoutHbs ??= await this.load('layout');\n    return this.layoutHbs(context);\n  }\n\n  async login(context: OIDCTemplateLoginContext) {\n    this.loginHbs ??= await this.load('login');\n    return this.loginHbs(context);\n  }\n\n  async consent(context: OIDCTemplateConsentContext) {\n    this.consentHbs ??= await this.load('consent');\n    return this.consentHbs(context);\n  }\n\n}\n", "import { type Adapter, type AdapterConstructor, type AdapterPayload } from 'oidc-provider';\nimport { Logger } from '@restorecommerce/logger';\nimport { Subject } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/auth.js';\nimport { type TokenServiceClient as tokenService } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/token.js';\nimport { InMemoryAdapter } from './in-memory-adapter.js';\nimport { marshallProtobufAny, unmarshallProtobufAny } from './utils.js';\n\nconst delegateToRemoteService = (type: string) => ['AccessToken', 'RefreshToken'].includes(type);\n\n\nexport function createIdentityServiceAdapterClass(remoteTokenService: tokenService, logger: Logger, localTokenServiceFactory?: (type: string) => Adapter): AdapterConstructor {\n  return class IdentityServiceAdapter implements Adapter {\n\n    private localTokenService: Adapter;\n\n    constructor(public type: string) {\n      this.localTokenService = localTokenServiceFactory ? localTokenServiceFactory(type) : new InMemoryAdapter(type);\n    }\n\n    async consume(id: string): Promise<undefined | void> {\n      logger.verbose(`Consuming ${this.type} token ${id}`);\n      if (delegateToRemoteService(this.type)) {\n        try {\n          await remoteTokenService.consume({\n            id,\n            type: this.type,\n            subject: undefined\n          });\n        } catch (error) {\n          logger.error(`Error consuming ${this.type} token ${id}`, error);\n        }\n      } else {\n        await this.localTokenService.consume(id);\n      }\n    }\n\n    async destroy(id: string): Promise<void | undefined> {\n      logger.verbose(`Destroying ${this.type} token ${id}`);\n      if (delegateToRemoteService(this.type)) {\n        try {\n          await remoteTokenService.destroy({\n            id,\n            type: this.type,\n            subject: Subject.fromPartial({ token: id })\n          });\n        } catch (error) {\n          logger.error(`Error destroying ${this.type} token ${id}`, error);\n        }\n      } else {\n        await this.localTokenService.destroy(id);\n      }\n    }\n\n    async find(id: string): Promise<void | undefined | AdapterPayload> {\n      logger.verbose(`Finding ${this.type} token ${id}`);\n      if (delegateToRemoteService(this.type)) {\n        try {\n          let response: any = await remoteTokenService.find({\n            id,\n            type: this.type,\n            subject: Subject.fromPartial({ token: id })\n          });\n          let tokenResponse: AdapterPayload | undefined;\n          if (response) {\n            tokenResponse = unmarshallProtobufAny(response);\n            if (tokenResponse) {\n              // oidc-provider expects \"exp\" to be in epochTime in seconds\n              tokenResponse.exp = tokenResponse?.exp ? Math.floor(new Date(tokenResponse?.exp)?.getTime() / 1000) : undefined;\n            }\n          }\n          return tokenResponse;\n        } catch (error) {\n          logger.error(`Error finding ${this.type} token ${id}`, error);\n          return undefined;\n        }\n      } else {\n        return await this.localTokenService.find(id);\n      }\n    }\n\n    async findByUid(uid: string): Promise<void | undefined | AdapterPayload> {\n      logger.verbose(`Finding by Uid ${uid}`);\n      return await this.localTokenService.findByUid(uid);\n    }\n\n    // Not needed. DeviceFlow only\n    async findByUserCode(userCode: string): Promise<void | undefined | AdapterPayload> {\n      logger.error('Finding br UserCode is unsupported', this.type, ...arguments);\n      throw new Error('UNSUPPORTED');\n    }\n\n    async upsert(id: string, payload: AdapterPayload, expiresIn: number): Promise<undefined | void> {\n      logger.info(`Upserting ${this.type} token ${id}`, payload);\n\n      if (delegateToRemoteService(this.type)) {\n        try {\n          await remoteTokenService.upsert({\n            expiresIn: new Date(Date.now() + (1000 * expiresIn)),\n            id,\n            payload: marshallProtobufAny(payload),\n            type: this.type,\n            subject: undefined\n          });\n        } catch (error) {\n          logger.error(`Error upserting ${this.type} token ${id}`, error);\n        }\n      } else {\n        return this.localTokenService.upsert(id, payload, expiresIn * 1000);\n      }\n    }\n\n    async revokeByGrantId(grantId: string): Promise<void | undefined> {\n      logger.error(`Revoking grant id ${this.type} token ${grantId}`);\n      await this.localTokenService.revokeByGrantId(grantId);\n\n      if (delegateToRemoteService(this.type)) {\n        try {\n          await remoteTokenService.revokeByGrantId({\n            grantId,\n            subject: Subject.fromPartial({ token: grantId })\n          });\n        } catch (error) {\n          logger.error(`Error revoking grant id ${grantId}`, error);\n        }\n      }\n    }\n  };\n}\n", "import { type Adapter, type AdapterPayload } from 'oidc-provider';\nimport { LRUCache } from 'lru-cache';\nimport { epochTime } from './utils.js';\n\nexport class InMemoryAdapter implements Adapter {\n\n  constructor(private type: string) { }\n\n  private tokenStorage = new LRUCache<string, AdapterPayload>({ max: 1000 });\n  private sessionStorage = new LRUCache<string, string>({ max: 1000 });\n  private grantIdStorage = new LRUCache<string, string[]>({ max: 1000 });\n\n  private key(id: string) {\n    return `${this.type}:${id}`;\n  }\n\n  async upsert(id: string, payload: AdapterPayload, expiresIn: number): Promise<void | undefined> {\n    const key = this.key(id);\n\n    if (this.type === 'Session' && payload.uid) {\n      this.sessionStorage.set(payload.uid, id, {\n        ttl: expiresIn * 1000\n      });\n    }\n\n    const { grantId, userCode } = payload;\n    if (grantId) {\n      this.grantIdStorage.set(grantId, [key]);\n      const grant = this.grantIdStorage.get(grantId);\n      if (!grant) {\n        this.grantIdStorage.set(grantId, [key]);\n      } else {\n        grant.push(key);\n      }\n    }\n\n    if (userCode) {\n      throw 'UNSUPPORTED';\n    }\n    this.tokenStorage.set(key, payload, {\n      ttl: expiresIn * 1000\n    });\n  }\n\n  findByUserCode(userCode: string): Promise<void | AdapterPayload | undefined> {\n    throw new Error('UNSUPPORTED');\n  }\n\n  async find(id: string): Promise<void | AdapterPayload | undefined> {\n    return this.tokenStorage.get(this.key(id));\n\n  }\n  async findByUid(uid: string): Promise<void | AdapterPayload | undefined> {\n    const id = await this.sessionStorage.get(uid);\n    return id ? this.find(id) : undefined;\n  }\n  async consume(id: string): Promise<void | undefined> {\n    const payload = this.tokenStorage.get(this.key(id));\n    if (payload) {\n      payload.consumed = epochTime();\n    }\n  }\n  async destroy(id: string): Promise<void | undefined> {\n    this.tokenStorage.delete(this.key(id));\n  }\n  async revokeByGrantId(grantId: string): Promise<void | undefined> {\n    const grant = this.grantIdStorage.get(grantId);\n    if (grant) {\n      grant.forEach((token: string) => this.tokenStorage.delete(token));\n      this.grantIdStorage.delete(grantId);\n    }\n  }\n}", "import { type AdapterPayload } from 'oidc-provider';\nimport { customAlphabet } from 'nanoid';\nimport { type Any } from '@restorecommerce/rc-grpc-clients';\n\nexport const epochTime = (date = Date.now()) => Math.floor(date / 1000);\n\nexport const unmarshallProtobufAny = (msg: Any): AdapterPayload | undefined => {\n  if(msg?.value) {\n    return JSON.parse(msg.value.toString());\n  }\n};\n\nexport const marshallProtobufAny = (payload: AdapterPayload): Any => {\n  return {\n    typeUrl: '',\n    value: Buffer.from(JSON.stringify(payload))\n  };\n};\n\nconst generate = customAlphabet('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-', 21);\n\nexport const nanoid = (): string => {\n  return generate();\n};\n", "import {\n  type UserServiceClient as userService,\n  LoginRequest,\n  FindRequest,\n  type User\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/user.js';\nimport { type OIDCBodyLoginFn, type AuthUserKeyWhitelist, type AuthUser, type OIDCLoginFn, type OIDCBodyLoginCredentials } from './interfaces.js';\n\nconst KEY_WHITELIST: Array<AuthUserKeyWhitelist> = [\n  'id',\n  'name',\n  'email',\n  'localeId',\n  'timezoneId',\n  'roleAssociations',\n  'firstName',\n  'lastName',\n  'defaultScope',\n  'tokens'\n];\n\nconst pick = (obj: User, keys: (keyof User)[]): Pick<User, keyof User> => {\n  const ret: any = {};\n  keys.forEach(key => {\n    ret[key] = obj[key];\n  });\n  return ret;\n};\n\nexport const loginUser: OIDCLoginFn = async (ctx, identifier, password, remember) => {\n  if (!identifier || !password) {\n    return {\n      identifier,\n      remember,\n      error: {\n        key: 'MISSING_IDENTIFIER_OR_PASSWORD',\n        message: 'Missing identifier or password'\n      }\n    };\n  }\n\n  try {\n    const result = await ctx.identitySrvClient.user.login(LoginRequest.fromPartial({\n      identifier,\n      password,\n    }));\n\n    if (!result || !result.payload || result.status.code !== 200) {\n      return {\n        error: {\n          key: 'INVALID_IDENTIFIER_OR_PASSWORD',\n          message: 'Invalid identifier or password'\n        }\n      };\n    }\n    return {\n      user: pick(result.payload, KEY_WHITELIST),\n      identifier,\n      remember\n    };\n  } catch (error: any) {\n    return {\n      error: {\n        key: 'ERROR',\n        message: error?.toString() ?? 'Error'\n      }\n    };\n  }\n};\n\nexport const loginUserBody: OIDCBodyLoginFn = async (ctx, body) => {\n  const identifier = typeof body?.identifier === 'string' ? body.identifier : undefined;\n  const password = typeof body?.password === 'string' ? body.password : undefined;\n  const remember = !!(body?.remember);\n  return loginUser(ctx, identifier, password, remember);\n};\n\nexport const loginUserCredentials: OIDCBodyLoginCredentials = async (ctx, credentials) => {\n  return loginUser(ctx, credentials.identifier, credentials.password || credentials.token);\n};\n\nexport const findUserById = async (service: userService, id: string): Promise<AuthUser> => {\n  const result = await service.find(FindRequest.fromPartial({\n    id,\n  }));\n\n  if (!result?.items || result.items.length === 0) {\n    throw new Error('USER_NOT_FOUND');\n  }\n\n  const user = result.items[0].payload;\n\n  if (!user) {\n    throw new Error('USER_NOT_FOUND');\n  }\n\n  return pick(user, KEY_WHITELIST);\n};\n", "import { randomUUID } from 'crypto';\nimport { UAParser } from 'ua-parser-js';\nimport * as requestIp from 'request-ip';\nimport { ClaimsParameter, KoaContextWithOIDC } from 'oidc-provider';\nimport {\n  AuthenticationLog,\n  AuthenticationLogList,\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/authentication_log.js';\nimport { Subject } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/auth.js';\nimport { Logger } from '@restorecommerce/logger';\nimport {\n  type TokenResponseBody,\n  InvalidPasswordGrant,\n  type OIDCPasswordGrantTypeConfig,\n  type LoginFnResponse,\n} from './interfaces.js';\nimport { nanoid, epochTime } from './utils.js';\nimport { decomposeError } from '../../../utils.js';\n\nexport const registerPasswordGrantType = (config: OIDCPasswordGrantTypeConfig, logger?: Logger) => {\n  const performPasswordGrant = async (ctx: KoaContextWithOIDC, clientId: string, identifier: string, password: string, key: string): Promise<TokenResponseBody> => {\n    const client = await ctx.oidc.provider.Client.find(clientId);\n\n    let account: LoginFnResponse;\n    try {\n      let user = {\n        identifier,\n        [key]: password\n      };\n      account = await config.authenticate(ctx as any, user);\n    } catch (err: any) {\n      if (err.details && err.details.includes(':')) {\n        err.details = err.details.split(':')[1].trim();\n      }\n      throw new InvalidPasswordGrant(err.details);\n    }\n\n    if (!account || !account.user) {\n      if (account.error && account.error.message) {\n        throw new InvalidPasswordGrant('invalid credentials provided: ' + account.error.message);\n      }\n\n      throw new InvalidPasswordGrant('invalid credentials provided');\n    }\n\n    delete account.user.tokens;\n    const expiresIn = config.tokenExpiration || 86400;\n    const tokenName = randomUUID().replace(/-/g, '');\n    const claims: ClaimsParameter = {\n      id_token: {\n        sub: {\n          essential: true,\n          value: account.user.id,\n        },\n        token_name: {\n          essential: true,\n          value: tokenName,\n        },\n        user: {\n          data: account.user,\n        }\n      },\n    };\n\n    const {AccessToken} = ctx.oidc.provider;\n    // for interactive login (to update user data in arangodb with token name)\n    const defaultScope = account.user.defaultScope;\n\n    const at = new AccessToken({\n      gty: 'password',\n      scope: 'openid',\n      accountId: account.user.id,\n      claims: claims,\n      client,\n      grantId: (ctx.oidc as any).uid,\n      expiresWithSession: false,\n      expiresIn,\n    });\n    ctx.oidc.entity('AccessToken', at);\n    const accessToken = await at.save();\n    const last_access = account.user?.lastAccess ? new Date(account.user.lastAccess) : undefined;\n\n    const generateIdToken = async (ctx: KoaContextWithOIDC, clientId: string, expiresIn: number, claims: ClaimsParameter): Promise<string> => {\n      const client = await ctx.oidc.provider.Client.find(clientId);\n      ctx.oidc.entity('Client', client);\n      const {IdToken} = ctx.oidc.provider;\n      const jti = nanoid();\n      const exp = epochTime() + expiresIn;\n      const token = new IdToken(\n        {...claims},\n        {ctx}\n      );\n\n      token.set('jti', jti);\n      token.set('scope', 'openid profile');\n      return await token.issue({use: 'idtoken', expiresAt: exp});\n    };\n\n    const idToken = await generateIdToken(ctx, clientId, expiresIn, claims);\n    logger?.debug('ID Token granted:', idToken);\n    return {\n      access_token: accessToken,\n      id_token: idToken,\n      expires_in: new Date((epochTime() + at.expiration) * 1000),\n      last_login: new Date(),\n      token_type: at.tokenType,\n      scope: 'openid',\n      token_name: tokenName,\n      default_scope: defaultScope,\n      last_access\n    };\n  };\n\n  config.provider.registerGrantType(\n    'password',\n    async (ctx: KoaContextWithOIDC, next: () => Promise<any>) => {\n      try {\n        const {body, client} = ctx.oidc;\n        ctx.type = 'json';\n        let passwordValue;\n        let key = 'password';\n        if (body.password) {\n          passwordValue = body.password;\n        } else if (body.token) {\n          passwordValue = body.token;\n          key = 'token';\n        }\n        const req = ctx.request;\n        let os: string, agentName: string;\n        const agent = new UAParser(req.headers['user-agent']);\n        if (agent) {\n          os = agent.getOS().toString();\n          agentName = agent.getUA();\n        }\n\n        const resp_body = await performPasswordGrant(ctx, client.clientId, (body as any).identifier, passwordValue, key);\n        ctx.body = resp_body;\n        const token_name = resp_body.token_name;\n        const token = resp_body.access_token;\n        const scope = resp_body.default_scope;\n        let ipv4_address: string, ipv6_address: string;\n        const clientIP = requestIp.getClientIp(req.req);\n        if (clientIP && clientIP.includes('.')) {\n          ipv4_address = clientIP;\n        } else if (clientIP && clientIP.includes(':')) {\n          ipv6_address = clientIP;\n        }\n\n        const authLogItem = AuthenticationLog.fromPartial({\n          ipv4Address: ipv4_address,\n          ipv6Address: ipv6_address,\n          operatingSystem: os,\n          userAgent: agentName,\n          date: new Date(),\n          activity: 'login',\n          tokenName: token_name\n        });\n\n        try {\n          await config.authLogService?.create(AuthenticationLogList.fromPartial({\n            items: [authLogItem],\n            subject: Subject.fromPartial({token, scope}) as Subject\n          }));\n        }\n        catch (error: any) {\n          logger?.warn('AuthenticationLog:', decomposeError(error));\n        }\n        await next?.();\n      } catch (ex: any) {\n        if (ex instanceof InvalidPasswordGrant) {\n          logger?.warn('OIDC:', decomposeError(ex));\n          ctx.status = 401;\n          ctx.type = 'json';\n          ctx.body = {\n            error: ex.error,\n            error_description: ex.error_description,\n          };\n        } else {\n          logger?.error('OIDC:', decomposeError(ex));\n          ctx.status = 400;\n          ctx.body = {\n            error: 'bad_request',\n            error_description: 'Bad request'\n          };\n        }\n      }\n    },\n    ['identifier', 'password'],\n    [],\n  );\n};\n", "// Generated ESM version of ua-parser-js\n// DO NOT EDIT THIS FILE!\n// Source: /src/main/ua-parser.js\n\n/////////////////////////////////////////////////////////////////////////////////\n/* UAParser.js v2.0.9\n   Copyright \u00A9 2012-2026 Faisal Salman <f@faisalman.com>\n   AGPLv3 License *//*\n   Detect Browser, Engine, OS, CPU, and Device type/model from User-Agent data.\n   Supports browser & node.js environment. \n   Demo   : https://uaparser.dev\n   Source : https://github.com/faisalman/ua-parser-js */\n/////////////////////////////////////////////////////////////////////////////////\n\n/* jshint esversion: 6 */ \n/* globals window */\n\n\n    \n    //////////////\n    // Constants\n    /////////////\n\n    var LIBVERSION  = '2.0.9',\n        UA_MAX_LENGTH = 500,\n        USER_AGENT  = 'user-agent',\n        EMPTY       = '',\n        UNKNOWN     = '?',\n        TYPEOF = {\n            FUNCTION    : 'function',\n            OBJECT      : 'object',\n            STRING      : 'string',\n            UNDEFINED   : 'undefined'\n        },\n\n        // properties\n        BROWSER     = 'browser',\n        CPU         = 'cpu',\n        DEVICE      = 'device',\n        ENGINE      = 'engine',\n        OS          = 'os',\n        RESULT      = 'result',\n\n        NAME        = 'name',\n        TYPE        = 'type',\n        VENDOR      = 'vendor',\n        VERSION     = 'version',\n        ARCHITECTURE= 'architecture',\n        MAJOR       = 'major',\n        MODEL       = 'model',\n\n        // device types\n        CONSOLE     = 'console',\n        MOBILE      = 'mobile',\n        TABLET      = 'tablet',\n        SMARTTV     = 'smarttv',\n        WEARABLE    = 'wearable',\n        XR          = 'xr',\n        EMBEDDED    = 'embedded',\n\n        // browser types\n        FETCHER     = 'fetcher',\n        INAPP       = 'inapp',\n\n        // client hints\n        BRANDS      = 'brands',\n        FORMFACTORS = 'formFactors',\n        FULLVERLIST = 'fullVersionList',\n        PLATFORM    = 'platform',\n        PLATFORMVER = 'platformVersion',\n        BITNESS     = 'bitness',\n        CH          = 'sec-ch-ua',\n        CH_FULL_VER_LIST= CH + '-full-version-list',\n        CH_ARCH         = CH + '-arch',\n        CH_BITNESS      = CH + '-' + BITNESS,\n        CH_FORM_FACTORS = CH + '-form-factors',\n        CH_MOBILE       = CH + '-' + MOBILE,\n        CH_MODEL        = CH + '-' + MODEL,\n        CH_PLATFORM     = CH + '-' + PLATFORM,\n        CH_PLATFORM_VER = CH_PLATFORM + '-version',\n        CH_ALL_VALUES   = [BRANDS, FULLVERLIST, MOBILE, MODEL, PLATFORM, PLATFORMVER, ARCHITECTURE, FORMFACTORS, BITNESS],\n\n        // device vendors\n        AMAZON      = 'Amazon',\n        APPLE       = 'Apple',\n        ASUS        = 'ASUS',\n        BLACKBERRY  = 'BlackBerry',\n        GOOGLE      = 'Google',\n        HUAWEI      = 'Huawei',\n        LENOVO      = 'Lenovo',\n        HONOR       = 'Honor',\n        LG          = 'LG',\n        MICROSOFT   = 'Microsoft',\n        MOTOROLA    = 'Motorola',\n        NVIDIA      = 'Nvidia',\n        ONEPLUS     = 'OnePlus',\n        OPPO        = 'OPPO',\n        SAMSUNG     = 'Samsung',\n        SHARP       = 'Sharp',\n        SONY        = 'Sony',\n        XIAOMI      = 'Xiaomi',\n        ZEBRA       = 'Zebra',\n\n        // browsers\n        CHROME      = 'Chrome',\n        CHROMIUM    = 'Chromium',\n        CHROMECAST  = 'Chromecast',\n        EDGE        = 'Edge',\n        FIREFOX     = 'Firefox',\n        OPERA       = 'Opera',\n        FACEBOOK    = 'Facebook',\n        SOGOU       = 'Sogou',\n\n        PREFIX_MOBILE  = 'Mobile ',\n        SUFFIX_BROWSER = ' Browser',\n\n        // os\n        WINDOWS     = 'Windows';\n   \n    var isWindow            = typeof window !== TYPEOF.UNDEFINED,\n        NAVIGATOR           = (isWindow && window.navigator) ? \n                                window.navigator : \n                                undefined,\n        NAVIGATOR_UADATA    = (NAVIGATOR && NAVIGATOR.userAgentData) ? \n                                NAVIGATOR.userAgentData : \n                                undefined;\n\n    ///////////\n    // Helper\n    //////////\n\n    var extend = function (defaultRgx, extensions) {\n            var mergedRgx = {};\n            var extraRgx = extensions;\n            if (!isExtensions(extensions)) {\n                extraRgx = {};\n                for (var i in extensions) {\n                    for (var j in extensions[i]) {\n                        extraRgx[j] = extensions[i][j].concat(extraRgx[j] ? extraRgx[j] : []);\n                    }\n                }\n            }\n            for (var k in defaultRgx) {\n                mergedRgx[k] = extraRgx[k] && extraRgx[k].length % 2 === 0 ? extraRgx[k].concat(defaultRgx[k]) : defaultRgx[k];\n            }\n            return mergedRgx;\n        },\n        enumerize = function (arr) {\n            var enums = {};\n            for (var i=0; i<arr.length; i++) {\n                enums[arr[i].toUpperCase()] = arr[i];\n            }\n            return enums;\n        },\n        has = function (str1, str2) {\n            if (typeof str1 === TYPEOF.OBJECT && str1.length > 0) {\n                for (var i in str1) {\n                    if (lowerize(str2) == lowerize(str1[i])) return true;\n                }\n                return false;\n            }\n            return isString(str1) ? lowerize(str2) == lowerize(str1) : false;\n        },\n        isExtensions = function (obj, deep) {\n            for (var prop in obj) {\n                return /^(browser|cpu|device|engine|os)$/.test(prop) || (deep ? isExtensions(obj[prop]) : false);\n            }\n        },\n        isString = function (val) {\n            return typeof val === TYPEOF.STRING;\n        },\n        itemListToArray = function (header) {\n            if (!header) return undefined;\n            var arr = [];\n            var tokens = strip(/\\\\?\\\"/g, header).split(',');\n            for (var i = 0; i < tokens.length; i++) {\n                if (tokens[i].indexOf(';') > -1) {\n                    var token = trim(tokens[i]).split(';v=');\n                    arr[i] = { brand : token[0], version : token[1] };\n                } else {\n                    arr[i] = trim(tokens[i]);\n                }\n            }\n            return arr;\n        },\n        lowerize = function (str) {\n            return isString(str) ? str.toLowerCase() : str;\n        },\n        majorize = function (version) {\n            return isString(version) ? strip(/[^\\d\\.]/g, version).split('.')[0] : undefined;\n        },\n        setProps = function (arr) {\n            for (var i in arr) {\n                if (!arr.hasOwnProperty(i)) continue;\n\n                var propName = arr[i];\n                if (typeof propName == TYPEOF.OBJECT && propName.length == 2) {\n                    this[propName[0]] = propName[1];\n                } else {\n                    this[propName] = undefined;\n                }\n            }\n            return this;\n        },\n        strip = function (pattern, str) {\n            return isString(str) ? str.replace(pattern, EMPTY) : str;\n        },\n        stripQuotes = function (str) {\n            return strip(/\\\\?\\\"/g, str); \n        },\n        trim = function (str, len) {\n            str = strip(/^\\s\\s*/, String(str));\n            return typeof len === TYPEOF.UNDEFINED ? str : str.substring(0, len);\n    };\n\n    ///////////////\n    // Map helper\n    //////////////\n\n    var rgxMapper = function (ua, arrays) {\n\n            if(!ua || !arrays) return;\n\n            var i = 0, j, k, p, q, matches, match;\n\n            // loop through all regexes maps\n            while (i < arrays.length && !matches) {\n\n                var regex = arrays[i],       // even sequence (0,2,4,..)\n                    props = arrays[i + 1];   // odd sequence (1,3,5,..)\n                j = k = 0;\n\n                // try matching uastring with regexes\n                while (j < regex.length && !matches) {\n\n                    if (!regex[j]) { break; }\n                    matches = regex[j++].exec(ua);\n\n                    if (!!matches) {\n                        for (p = 0; p < props.length; p++) {\n                            match = matches[++k];\n                            q = props[p];\n                            // check if given property is actually array\n                            if (typeof q === TYPEOF.OBJECT && q.length > 0) {\n                                if (q.length === 2) {\n                                    if (typeof q[1] == TYPEOF.FUNCTION) {\n                                        // assign modified match\n                                        this[q[0]] = q[1].call(this, match);\n                                    } else {\n                                        // assign given value, ignore regex match\n                                        this[q[0]] = q[1];\n                                    }\n                                } else if (q.length >= 3) {\n                                    // Check whether q[1] FUNCTION or REGEX\n                                    if (typeof q[1] === TYPEOF.FUNCTION && !(q[1].exec && q[1].test)) {\n                                        if (q.length > 3) {\n                                            this[q[0]] = match ? q[1].apply(this, q.slice(2)) : undefined;\n                                        } else {\n                                            // call function (usually string mapper)\n                                            this[q[0]] = match ? q[1].call(this, match, q[2]) : undefined;\n                                        }\n                                    } else {\n                                        if (q.length == 3) {\n                                            // sanitize match using given regex\n                                            this[q[0]] = match ? match.replace(q[1], q[2]) : undefined;\n                                        } else if (q.length == 4) {\n                                            this[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined;\n                                        } else if (q.length > 4) {\n                                            this[q[0]] = match ? q[3].apply(this, [match.replace(q[1], q[2])].concat(q.slice(4))) : undefined;\n                                        }\n                                    }\n                                }\n                            } else {\n                                this[q] = match ? match : undefined;\n                            }\n                        }\n                    }\n                }\n                i += 2;\n            }\n        },\n\n        strMapper = function (str, map) {\n\n            for (var i in map) {\n                // check if current value is array\n                if (typeof map[i] === TYPEOF.OBJECT && map[i].length > 0) {\n                    for (var j = 0; j < map[i].length; j++) {\n                        if (has(map[i][j], str)) {\n                            return (i === UNKNOWN) ? undefined : i;\n                        }\n                    }\n                } else if (has(map[i], str)) {\n                    return (i === UNKNOWN) ? undefined : i;\n                }\n            }\n            return map.hasOwnProperty('*') ? map['*'] : str;\n    };\n\n    ///////////////\n    // String map\n    //////////////\n\n    var windowsVersionMap = {\n            'ME'    : '4.90',\n            'NT 3.51': '3.51',\n            'NT 4.0': '4.0',\n            '2000'  : ['5.0', '5.01'],\n            'XP'    : ['5.1', '5.2'],\n            'Vista' : '6.0',\n            '7'     : '6.1',\n            '8'     : '6.2',\n            '8.1'   : '6.3',\n            '10'    : ['6.4', '10.0'],\n            'NT'    : ''\n        },\n        \n        formFactorsMap = {\n            'embedded'  : 'Automotive',\n            'mobile'    : 'Mobile',\n            'tablet'    : ['Tablet', 'EInk'],\n            'smarttv'   : 'TV',\n            'wearable'  : 'Watch',\n            'xr'        : ['VR', 'XR'],\n            '?'         : ['Desktop', 'Unknown'],\n            '*'         : undefined\n        },\n\n        browserHintsMap = {\n            'Chrome'        : 'Google Chrome',\n            'Edge'          : 'Microsoft Edge',\n            'Edge WebView2' : 'Microsoft Edge WebView2',\n            'Chrome WebView': 'Android WebView',\n            'Chrome Headless':'HeadlessChrome',\n            'Huawei Browser': 'HuaweiBrowser',\n            'MIUI Browser'  : 'Miui Browser',\n            'Opera Mobi'    : 'OperaMobile',\n            'Yandex'        : 'YaBrowser'\n    };\n\n    //////////////\n    // Regex map\n    /////////////\n\n    var defaultRegexes = {\n\n        browser : [[\n\n            // Most common regardless engine\n            /\\b(?:crmo|crios)\\/([\\w\\.]+)/i                                      // Chrome for Android/iOS\n            ], [VERSION, [NAME, PREFIX_MOBILE + 'Chrome']], [\n            /webview.+edge\\/([\\w\\.]+)/i                                         // Microsoft Edge\n            ], [VERSION, [NAME, EDGE+' WebView']], [\n            /edg(?:e|ios|a)?\\/([\\w\\.]+)/i                                       \n            ], [VERSION, [NAME, 'Edge']], [\n\n            // Presto based\n            /(opera mini)\\/([-\\w\\.]+)/i,                                        // Opera Mini\n            /(opera [mobiletab]{3,6})\\b.+version\\/([-\\w\\.]+)/i,                 // Opera Mobi/Tablet\n            /(opera)(?:.+version\\/|[\\/ ]+)([\\w\\.]+)/i                           // Opera\n            ], [NAME, VERSION], [\n            /opios[\\/ ]+([\\w\\.]+)/i                                             // Opera mini on iphone >= 8.0\n            ], [VERSION, [NAME, OPERA+' Mini']], [\n            /\\bop(?:rg)?x\\/([\\w\\.]+)/i                                          // Opera GX\n            ], [VERSION, [NAME, OPERA+' GX']], [\n            /\\bopr\\/([\\w\\.]+)/i                                                 // Opera Webkit\n            ], [VERSION, [NAME, OPERA]], [\n\n            // Mixed\n            /\\bb[ai]*d(?:uhd|[ub]*[aekoprswx]{5,6})[\\/ ]?([\\w\\.]+)/i            // Baidu\n            ], [VERSION, [NAME, 'Baidu']], [\n            /\\b(?:mxbrowser|mxios|myie2)\\/?([-\\w\\.]*)\\b/i                       // Maxthon\n            ], [VERSION, [NAME, 'Maxthon']], [\n            /(kindle)\\/([\\w\\.]+)/i,                                             // Kindle\n            /(lunascape|maxthon|netfront|jasmine|blazer|sleipnir)[\\/ ]?([\\w\\.]*)/i,      \n                                                                                // Lunascape/Maxthon/Netfront/Jasmine/Blazer/Sleipnir\n            // Trident based\n            /(avant|iemobile|slim(?:browser|boat|jet))[\\/ ]?([\\d\\.]*)/i,        // Avant/IEMobile/SlimBrowser/SlimBoat/Slimjet\n            /(?:ms|\\()(ie) ([\\w\\.]+)/i,                                         // Internet Explorer\n\n            // Blink/Webkit/KHTML based                                         // Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron/Iridium/PhantomJS/Bowser/QupZilla/Falkon/LG Browser/Otter/qutebrowser/Dooble/Palemoon/HiBrowser\n            /(atlas|flock|rockmelt|midori|epiphany|silk|skyfire|bolt|iron|vivaldi|iridium|phantomjs|bowser|qupzilla|falkon|rekonq|puffin|whale(?!.+naver)|qqbrowserlite|duckduckgo|klar|helio|(?=comodo_)?dragon|otter|dooble|(?:hi|lg |ovi|qute)browser|palemoon)\\/v?([-\\w\\.]+)/i,\n                                                                                // Atlas/Rekonq/Puffin/Whale/QQBrowserLite/QQ//Vivaldi/DuckDuckGo/Klar/Helio/Dragon\n            /(brave)(?: chrome)?\\/([\\d\\.]+)/i,                                  // Brave\n            /(aloha|heytap|ovi|115|surf|qwant)browser\\/([\\d\\.]+)/i,             // Aloha/HeyTap/Ovi/115/Surf\n            /(qwant)(?:ios|mobile)\\/([\\d\\.]+)/i,                                // Qwant\n            /(ecosia|weibo)(?:__| \\w+@)([\\d\\.]+)/i                              // Ecosia/Weibo\n            ], [NAME, VERSION], [\n            /quark(?:pc)?\\/([-\\w\\.]+)/i                                         // Quark\n            ], [VERSION, [NAME, 'Quark']], [\n            /\\bddg\\/([\\w\\.]+)/i                                                 // DuckDuckGo\n            ], [VERSION, [NAME, 'DuckDuckGo']], [\n            /(?:\\buc? ?browser|(?:juc.+)ucweb)[\\/ ]?([\\w\\.]+)/i                 // UCBrowser\n            ], [VERSION, [NAME, 'UCBrowser']], [\n            /microm.+\\bqbcore\\/([\\w\\.]+)/i,                                     // WeChat Desktop for Windows Built-in Browser\n            /\\bqbcore\\/([\\w\\.]+).+microm/i,\n            /micromessenger\\/([\\w\\.]+)/i                                        // WeChat\n            ], [VERSION, [NAME, 'WeChat']], [\n            /konqueror\\/([\\w\\.]+)/i                                             // Konqueror\n            ], [VERSION, [NAME, 'Konqueror']], [\n            /trident.+rv[: ]([\\w\\.]{1,9})\\b.+like gecko/i                       // IE11\n            ], [VERSION, [NAME, 'IE']], [\n            /ya(?:search)?browser\\/([\\w\\.]+)/i                                  // Yandex\n            ], [VERSION, [NAME, 'Yandex']], [\n            /slbrowser\\/([\\w\\.]+)/i                                             // Smart Lenovo Browser\n            ], [VERSION, [NAME, 'Smart ' + LENOVO + SUFFIX_BROWSER]], [\n            /(av(?:ast|g|ira))\\/([\\w\\.]+)/i                                     // Avast/AVG/Avira Secure Browser\n            ], [[NAME, /(.+)/, '$1 Secure' + SUFFIX_BROWSER], VERSION], [\n            /norton\\/([\\w\\.]+)/i                                                // Norton Private Browser\n            ], [VERSION, [NAME, 'Norton Private' + SUFFIX_BROWSER]], [\n            /\\bfocus\\/([\\w\\.]+)/i                                               // Firefox Focus\n            ], [VERSION, [NAME, FIREFOX+' Focus']], [\n            / mms\\/([\\w\\.]+)$/i                                                 // Opera Neon\n            ], [VERSION, [NAME, OPERA+' Neon']], [\n            / opt\\/([\\w\\.]+)$/i                                                 // Opera Touch\n            ], [VERSION, [NAME, OPERA+' Touch']], [\n            /coc_coc\\w+\\/([\\w\\.]+)/i                                            // Coc Coc Browser\n            ], [VERSION, [NAME, 'Coc Coc']], [\n            /dolfin\\/([\\w\\.]+)/i                                                // Dolphin\n            ], [VERSION, [NAME, 'Dolphin']], [\n            /coast\\/([\\w\\.]+)/i                                                 // Opera Coast\n            ], [VERSION, [NAME, OPERA+' Coast']], [\n            /miuibrowser\\/([\\w\\.]+)/i                                           // MIUI Browser\n            ], [VERSION, [NAME, 'MIUI' + SUFFIX_BROWSER]], [\n            /fxios\\/([\\w\\.-]+)/i                                                // Firefox for iOS\n            ], [VERSION, [NAME, PREFIX_MOBILE + FIREFOX]], [\n            /\\bqihoobrowser\\/?([\\w\\.]*)/i                                       // 360\n            ], [VERSION, [NAME, '360']], [\n            /\\b(qq)\\/([\\w\\.]+)/i                                                // QQ\n            ], [[NAME, /(.+)/, '$1Browser'], VERSION], [\n            /(oculus|sailfish|huawei|vivo|pico)browser\\/([\\w\\.]+)/i\n            ], [[NAME, /(.+)/, '$1' + SUFFIX_BROWSER], VERSION], [              // Oculus/Sailfish/HuaweiBrowser/VivoBrowser/PicoBrowser\n            /samsungbrowser\\/([\\w\\.]+)/i                                        // Samsung Internet\n            ], [VERSION, [NAME, SAMSUNG + ' Internet']], [\n            /metasr[\\/ ]?([\\d\\.]+)/i                                            // Sogou Explorer\n            ], [VERSION, [NAME, SOGOU + ' Explorer']], [\n            /(sogou)mo\\w+\\/([\\d\\.]+)/i                                          // Sogou Mobile\n            ], [[NAME, SOGOU + ' Mobile'], VERSION], [\n            /(electron)\\/([\\w\\.]+) safari/i,                                    // Electron-based App\n            /(tesla)(?: qtcarbrowser|\\/(20\\d\\d\\.[-\\w\\.]+))/i,                   // Tesla\n            /m?(qqbrowser|2345(?=browser|chrome|explorer))\\w*[\\/ ]?v?([\\w\\.]+)/i   // QQ/2345\n            ], [NAME, VERSION], [\n            /(lbbrowser|luakit|rekonq|steam(?= (clie|tenf|gameo)))/i            // LieBao Browser/Luakit/Rekonq/Steam\n            ], [NAME], [\n            /ome\\/([\\w\\.]+).+(iron(?= saf)|360(?=[es]e$))/i                     // Iron / 360\n            ], [VERSION, NAME], [\n\n            // WebView\n            /((?:fban\\/fbios|fb_iab\\/fb4a)(?!.+fbav)|;fbav\\/([\\w\\.]+);)/i       // Facebook App for iOS & Android\n            ], [[NAME, FACEBOOK], VERSION, [TYPE, INAPP]], [\n            /(kakao(?:talk|story))[\\/ ]([\\w\\.]+)/i,                             // Kakao App\n            /(naver)\\(.*?(\\d+\\.[\\w\\.]+).*\\)/i,                                  // Naver InApp\n            /(daum)apps[\\/ ]([\\w\\.]+)/i,                                        // Daum App\n            /safari (line)\\/([\\w\\.]+)/i,                                        // Line App for iOS\n            /\\b(line)\\/([\\w\\.]+)\\/iab/i,                                        // Line App for Android\n            /(alipay)client\\/([\\w\\.]+)/i,                                       // Alipay\n            /(twitter)(?:and| f.+e\\/([\\w\\.]+))/i,                               // Twitter\n            /(bing)(?:web|sapphire)\\/([\\w\\.]+)/i,                               // Bing\n            /(instagram|snapchat|klarna)[\\/ ]([-\\w\\.]+)/i                       // Instagram/Snapchat/Klarna\n            ], [NAME, VERSION, [TYPE, INAPP]], [\n            /\\bgsa\\/([\\w\\.]+) .*safari\\//i                                      // Google Search Appliance on iOS\n            ], [VERSION, [NAME, 'GSA'], [TYPE, INAPP]], [\n            /(?:musical_ly|trill)(?:.+app_?version\\/|_)([\\w\\.]+)/i              // TikTok\n            ], [VERSION, [NAME, 'TikTok'], [TYPE, INAPP]], [\n            /\\[(linkedin)app\\]/i                                                // LinkedIn App for iOS & Android\n            ], [NAME, [TYPE, INAPP]], [\n            /(zalo(?:app)?)[\\/\\sa-z]*([\\w\\.-]+)/i                               // Zalo \n            ], [[NAME, /(.+)/, 'Zalo'], VERSION, [TYPE, INAPP]], [\n\n            /(chromium)[\\/ ]([-\\w\\.]+)/i                                        // Chromium\n            ], [NAME, VERSION], [\n\n            /ome-(lighthouse)$/i                                                // Chrome Lighthouse\n            ], [NAME, [TYPE, FETCHER]], [\n\n            /headlesschrome(?:\\/([\\w\\.]+)| )/i                                  // Chrome Headless\n            ], [VERSION, [NAME, CHROME+' Headless']], [\n\n            /wv\\).+chrome\\/([\\w\\.]+).+edgw\\//i                                  // Edge WebView2\n            ], [VERSION, [NAME, EDGE+' WebView2']], [\n\n            / wv\\).+(chrome)\\/([\\w\\.]+)/i                                       // Chrome WebView\n            ], [[NAME, CHROME+' WebView'], VERSION], [\n\n            /droid.+ version\\/([\\w\\.]+)\\b.+(?:mobile safari|safari)/i           // Android Browser\n            ], [VERSION, [NAME, 'Android' + SUFFIX_BROWSER]], [\n\n            /chrome\\/([\\w\\.]+) mobile/i                                         // Chrome Mobile\n            ], [VERSION, [NAME, PREFIX_MOBILE + 'Chrome']], [\n\n            /(chrome|omniweb|arora|[tizenoka]{5} ?browser)\\/v?([\\w\\.]+)/i       // Chrome/OmniWeb/Arora/Tizen/Nokia\n            ], [NAME, VERSION], [\n\n            /version\\/([\\w\\.\\,]+) .*mobile(?:\\/\\w+ | ?)safari/i                 // Safari Mobile\n            ], [VERSION, [NAME, PREFIX_MOBILE + 'Safari']], [\n            /iphone .*mobile(?:\\/\\w+ | ?)safari/i\n            ], [[NAME, PREFIX_MOBILE + 'Safari']], [\n            /version\\/([\\w\\.\\,]+) .*(safari)/i                                  // Safari\n            ], [VERSION, NAME], [\n            /webkit.+?(mobile ?safari|safari)(\\/[\\w\\.]+)/i                      // Safari < 3.0\n            ], [NAME, [VERSION, '1']], [\n\n            /(webkit|khtml)\\/([\\w\\.]+)/i\n            ], [NAME, VERSION], [\n\n            // Gecko based\n            /(?:mobile|tablet);.*(firefox)\\/([\\w\\.-]+)/i                        // Firefox Mobile\n            ], [[NAME, PREFIX_MOBILE + FIREFOX], VERSION], [\n            /(navigator|netscape\\d?)\\/([-\\w\\.]+)/i                              // Netscape\n            ], [[NAME, 'Netscape'], VERSION], [\n            /(wolvic|librewolf)\\/([\\w\\.]+)/i                                    // Wolvic/LibreWolf\n            ], [NAME, VERSION], [\n            /mobile vr; rv:([\\w\\.]+)\\).+firefox/i                               // Firefox Reality\n            ], [VERSION, [NAME, FIREFOX+' Reality']], [\n            /ekiohf.+(flow)\\/([\\w\\.]+)/i,                                       // Flow\n            /(swiftfox)/i,                                                      // Swiftfox\n            /(icedragon|iceweasel|camino|chimera|fennec|maemo browser|minimo|conkeror)[\\/ ]?([\\w\\.\\+]+)/i,\n                                                                                // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror\n            /(seamonkey|k-meleon|icecat|iceape|firebird|phoenix|basilisk|waterfox)\\/([-\\w\\.]+)$/i,\n                                                                                // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix\n            /(firefox)\\/([\\w\\.]+)/i,                                            // Other Firefox-based\n            /(mozilla)\\/([\\w\\.]+(?= .+rv\\:.+gecko\\/\\d+)|[0-4][\\w\\.]+(?!.+compatible))/i, // Mozilla\n\n            // Other\n            /(amaya|dillo|doris|icab|ladybird|lynx|mosaic|netsurf|obigo|polaris|w3m|(?:go|ice|up)[\\. ]?browser)[-\\/ ]?v?([\\w\\.]+)/i,\n                                                                                // Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/Obigo/Mosaic/Go/ICE/UP.Browser/Ladybird\n            /\\b(links) \\(([\\w\\.]+)/i                                            // Links\n            ], [NAME, [VERSION, /_/g, '.']], [\n            \n            /(cobalt)\\/([\\w\\.]+)/i                                              // Cobalt\n            ], [NAME, [VERSION, /[^\\d\\.]+./, EMPTY]]\n        ],\n\n        cpu : [[\n\n            /\\b((amd|x|x86[-_]?|wow|win)64)\\b/i                                 // AMD64 (x64)\n            ], [[ARCHITECTURE, 'amd64']], [\n\n            /(ia32(?=;))/i,                                                     // IA32 (quicktime)\n            /\\b((i[346]|x)86)(pc)?\\b/i                                          // IA32 (x86)\n            ], [[ARCHITECTURE, 'ia32']], [\n\n            /\\b(aarch64|arm(v?[89]e?l?|_?64))\\b/i                               // ARM64\n            ], [[ARCHITECTURE, 'arm64']], [\n\n            /\\b(arm(v[67])?ht?n?[fl]p?)\\b/i                                     // ARMHF\n            ], [[ARCHITECTURE, 'armhf']], [\n\n            // PocketPC mistakenly identified as PowerPC\n            /( (ce|mobile); ppc;|\\/[\\w\\.]+arm\\b)/i\n            ], [[ARCHITECTURE, 'arm']], [\n\n            / sun4\\w[;\\)]/i                                                     // SPARC\n            ], [[ARCHITECTURE, 'sparc']], [\n                                                                                // IA64, 68K, ARM/64, AVR/32, IRIX/64, MIPS/64, SPARC/64, PA-RISC\n            /\\b(avr32|ia64(?=;)|68k(?=\\))|\\barm(?=v([1-7]|[5-7]1)l?|;|eabi)|(irix|mips|sparc)(64)?\\b|pa-risc)/i,\n            /((ppc|powerpc)(64)?)( mac|;|\\))/i,                                 // PowerPC\n            /(?:osf1|[freopnt]{3,4}bsd) (alpha)/i                               // Alpha\n            ], [[ARCHITECTURE, /ower/, EMPTY, lowerize]], [\n            /mc680.0/i\n            ], [[ARCHITECTURE, '68k']], [\n            /winnt.+\\[axp/i\n            ], [[ARCHITECTURE, 'alpha']]\n        ],\n\n        device : [[\n\n            //////////////////////////\n            // MOBILES & TABLETS\n            /////////////////////////\n\n            // Samsung\n            /\\b(sch-i[89]0\\d|shw-m380s|sm-[ptx]\\w{2,4}|gt-[pn]\\d{2,4}|sgh-t8[56]9|nexus 10)/i\n            ], [MODEL, [VENDOR, SAMSUNG], [TYPE, TABLET]], [\n            /\\b((?:s[cgp]h|gt|sm)-(?![lr])\\w+|sc[g-]?[\\d]+a?|galaxy nexus)/i,\n            /samsung[- ]((?!sm-[lr]|browser)[-\\w]+)/i,\n            /sec-(sgh\\w+)/i\n            ], [MODEL, [VENDOR, SAMSUNG], [TYPE, MOBILE]], [\n\n            // Apple\n            /(?:\\/|\\()(ip(?:hone|od)[\\w, ]*)[\\/\\);]/i                           // iPod/iPhone\n            ], [MODEL, [VENDOR, APPLE], [TYPE, MOBILE]], [\n            /\\b(?:ios|apple\\w+)\\/.+[\\(\\/](ipad)/i,                              // iPad\n            /\\b(ipad)[\\d,]*[;\\] ].+(mac |i(pad)?)os/i\n            ], [MODEL, [VENDOR, APPLE], [TYPE, TABLET]], [\n            /(macintosh);/i\n            ], [MODEL, [VENDOR, APPLE]], [\n\n            // Sharp\n            /\\b(sh-?[altvz]?\\d\\d[a-ekm]?)/i\n            ], [MODEL, [VENDOR, SHARP], [TYPE, MOBILE]], [\n\n            // Honor\n            /\\b((?:brt|eln|hey2?|gdi|jdn)-a?[lnw]09|(?:ag[rm]3?|jdn2|kob2)-a?[lw]0[09]hn)(?: bui|\\)|;)/i\n            ], [MODEL, [VENDOR, HONOR], [TYPE, TABLET]], [\n            /honor([-\\w ]+)[;\\)]/i\n            ], [MODEL, [VENDOR, HONOR], [TYPE, MOBILE]], [\n\n            // Huawei\n            /\\b((?:ag[rs][2356]?k?|bah[234]?|bg[2o]|bt[kv]|cmr|cpn|db[ry]2?|jdn2|got|kob2?k?|mon|pce|scm|sht?|[tw]gr|vrd)-[ad]?[lw][0125][09]b?|605hw|bg2-u03|(?:gem|fdr|m2|ple|t1)-[7a]0[1-4][lu]|t1-a2[13][lw]|mediapad[\\w\\. ]*(?= bui|\\)))\\b(?!.+d\\/s)/i\n            ], [MODEL, [VENDOR, HUAWEI], [TYPE, TABLET]], [\n            /(?:huawei) ?([-\\w ]+)[;\\)]/i,\n            /\\b(nexus 6p|\\w{2,4}e?-[atu]?[ln][\\dx][\\dc][adnt]?)\\b(?!.+d\\/s)/i\n            ], [MODEL, [VENDOR, HUAWEI], [TYPE, MOBILE]], [\n\n            // Xiaomi\n            /oid[^\\)]+; (2[\\dbc]{4}(182|283|rp\\w{2})[cgl]|m2105k81a?c)(?: bui|\\))/i,\n            /\\b(?:xiao)?((?:red)?mi[-_ ]?pad[\\w- ]*)(?: bui|\\))/i               // Mi Pad tablets\n            ],[[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, TABLET]], [\n\n            /\\b; (\\w+) build\\/hm\\1/i,                                           // Xiaomi Hongmi 'numeric' models\n            /\\b(hm[-_ ]?note?[_ ]?(?:\\d\\w)?) bui/i,                             // Xiaomi Hongmi\n                                                                                // Xiaomi Redmi / POCO / Black Shark / Qin\n            /oid[^\\)]+; (redmi[\\-_ ]?(?:note|k)?[\\w_ ]+|m?[12]\\d[01]\\d\\w{3,6}|poco[\\w ]+|(shark )?\\w{3}-[ah]0|qin ?[1-3](s\\+|ultra| pro)?)( bui|; wv|\\))/i,\n                                                                                // Xiaomi Mi\n            /\\b(mi[-_ ]?(?:a\\d|one|one[_ ]plus|note|max|cc)?[_ ]?(?:\\d{0,2}\\w?)[_ ]?(?:plus|se|lite|pro)?( 5g|lte)?)(?: bui|\\))/i,\n            / ([\\w ]+) miui\\/v?\\d/i\n            ], [[MODEL, /_/g, ' '], [VENDOR, XIAOMI], [TYPE, MOBILE]], [\n\n            // OnePlus\n            /droid.+; (cph2[3-6]\\d[13579]|((gm|hd)19|(ac|be|in|kb)20|(d[en]|eb|le|mt)21|ne22)[0-2]\\d|p[g-l]\\w[1m]10)\\b/i,\n            /(?:one)?(?:plus)? (a\\d0\\d\\d)(?: b|\\))/i\n            ], [MODEL, [VENDOR, ONEPLUS], [TYPE, MOBILE]], [\n\n            // OPPO\n            /; (\\w+) bui.+ oppo/i,\n            /\\b(cph[12]\\d{3}|p(?:af|c[al]|d\\w|e[ar])[mt]\\d0|x9007|a101op)\\b/i\n            ], [MODEL, [VENDOR, OPPO], [TYPE, MOBILE]], [\n            /\\b(opd2(\\d{3}a?))(?: bui|\\))/i\n            ], [MODEL, [VENDOR, strMapper, { 'OnePlus' : ['203', '304', '403', '404', '413', '415'], '*' : OPPO }], [TYPE, TABLET]], [\n\n            // BLU\n            /(vivo (5r?|6|8l?|go|one|s|x[il]?[2-4]?)[\\w\\+ ]*)(?: bui|\\))/i  // Vivo series\n            ], [MODEL, [VENDOR, 'BLU'], [TYPE, MOBILE]], [    \n\n            // Vivo\n            /; vivo (\\w+)(?: bui|\\))/i,\n            /\\b(v[12]\\d{3}\\w?[at])(?: bui|;)/i\n            ], [MODEL, [VENDOR, 'Vivo'], [TYPE, MOBILE]], [\n\n            // Realme\n            /\\b(rmx[1-3]\\d{3})(?: bui|;|\\))/i\n            ], [MODEL, [VENDOR, 'Realme'], [TYPE, MOBILE]], [\n\n            // Lenovo\n            /(ideatab[-\\w ]+|602lv|d-42a|a101lv|a2109a|a3500-hv|s[56]000|pb-6505[my]|tb-?x?\\d{3,4}(?:f[cu]|xu|[av])|yt\\d?-[jx]?\\d+[lfmx])( bui|;|\\)|\\/)/i,\n            /lenovo ?(b[68]0[08]0-?[hf]?|tab(?:[\\w- ]+?)|tb[\\w-]{6,7})( bui|;|\\)|\\/)/i\n            ], [MODEL, [VENDOR, LENOVO], [TYPE, TABLET]], [            \n            /lenovo[-_ ]?([-\\w ]+?)(?: bui|\\)|\\/)/i\n            ], [MODEL, [VENDOR, LENOVO], [TYPE, MOBILE]], [\n\n            // Motorola\n            /\\b(milestone|droid(?:[2-4x]| (?:bionic|x2|pro|razr))?:?( 4g)?)\\b[\\w ]+build\\//i,\n            /\\bmot(?:orola)?[- ]([\\w\\s]+)(\\)| bui)/i,\n            /((?:moto(?! 360)[-\\w\\(\\) ]+|xt\\d{3,4}[cgkosw\\+]?[-\\d]*|nexus 6)(?= bui|\\)))/i\n            ], [MODEL, [VENDOR, MOTOROLA], [TYPE, MOBILE]], [\n            /\\b(mz60\\d|xoom[2 ]{0,2}) build\\//i\n            ], [MODEL, [VENDOR, MOTOROLA], [TYPE, TABLET]], [\n\n            // LG\n            /\\b(?:lg)?([vl]k\\-?\\d{3}) bui| 3\\.[-\\w; ]{10}lg?-([06cv9]{3,4})/i\n            ], [MODEL, [VENDOR, LG], [TYPE, TABLET]], [\n            /(lm(?:-?f100[nv]?|-[\\w\\.]+)(?= bui|\\))|nexus [45])/i,\n            /\\blg[-e;\\/ ]+(?!.*(?:browser|netcast|android tv|watch|webos))(\\w+)/i,\n            /\\blg-?([\\d\\w]+) bui/i\n            ], [MODEL, [VENDOR, LG], [TYPE, MOBILE]], [\n\n            // Nokia\n            /(nokia) (t[12][01])/i\n            ], [VENDOR, MODEL, [TYPE, TABLET]], [\n            /(?:maemo|nokia).*(n900|lumia \\d+|rm-\\d+)/i,\n            /nokia[-_ ]?(([-\\w\\. ]*?))( bui|\\)|;|\\/)/i\n            ], [[MODEL, /_/g, ' '], [TYPE, MOBILE], [VENDOR, 'Nokia']], [\n\n            // Google\n            /(pixel (c|tablet))\\b/i                                             // Google Pixel C/Tablet\n            ], [MODEL, [VENDOR, GOOGLE], [TYPE, TABLET]], [\n                                                                                // Google Pixel\n            /droid.+;(?: google)? (g(01[13]a|020[aem]|025[jn]|1b60|1f8f|2ybb|4s1m|576d|5nz6|8hhn|8vou|a02099|c15s|d1yq|e2ae|ec77|gh2x|kv4x|p4bc|pj41|r83y|tt9q|ur25|wvk6)|pixel[\\d ]*a?( pro)?( xl)?( fold)?( \\(5g\\))?)( bui|\\))/i\n            ], [MODEL, [VENDOR, GOOGLE], [TYPE, MOBILE]], [\n            /(google) (pixelbook( go)?)/i\n            ], [VENDOR, MODEL], [\n\n            // Sony\n            /droid.+; (a?\\d[0-2]{2}so|[c-g]\\d{4}|so[-gl]\\w+|xq-\\w\\w\\d\\d)(?= bui|\\).+chrome\\/(?![1-6]{0,1}\\d\\.))/i\n            ], [MODEL, [VENDOR, SONY], [TYPE, MOBILE]], [\n            /sony tablet [ps]/i,\n            /\\b(?:sony)?sgp\\w+(?: bui|\\))/i\n            ], [[MODEL, 'Xperia Tablet'], [VENDOR, SONY], [TYPE, TABLET]], [\n\n            // Amazon\n            /(alexa)webm/i,\n            /(kf[a-z]{2}wi|aeo(?!bc)\\w\\w)( bui|\\))/i,                           // Kindle Fire without Silk / Echo Show\n            /(kf[a-z]+)( bui|\\)).+silk\\//i                                      // Kindle Fire HD\n            ], [MODEL, [VENDOR, AMAZON], [TYPE, TABLET]], [\n            /((?:sd|kf)[0349hijorstuw]+)( bui|\\)).+silk\\//i                     // Fire Phone\n            ], [[MODEL, /(.+)/g, 'Fire Phone $1'], [VENDOR, AMAZON], [TYPE, MOBILE]], [\n\n            // BlackBerry\n            /(playbook);[-\\w\\),; ]+(rim)/i                                      // BlackBerry PlayBook\n            ], [MODEL, VENDOR, [TYPE, TABLET]], [\n            /\\b((?:bb[a-f]|st[hv])100-\\d)/i,\n            /(?:blackberry|\\(bb10;) (\\w+)/i\n            ], [MODEL, [VENDOR, BLACKBERRY], [TYPE, MOBILE]], [\n\n            // Asus\n            /(?:\\b|asus_)(transfo[prime ]{4,10} \\w+|eeepc|slider \\w+|nexus 7|padfone|p00[cj])/i\n            ], [MODEL, [VENDOR, ASUS], [TYPE, TABLET]], [\n            / (z[bes]6[027][012][km][ls]|zenfone \\d\\w?)\\b/i\n            ], [MODEL, [VENDOR, ASUS], [TYPE, MOBILE]], [\n\n            // HTC\n            /(nexus 9)/i                                                        // HTC Nexus 9\n            ], [MODEL, [VENDOR, 'HTC'], [TYPE, TABLET]], [\n            /(htc)[-;_ ]{1,2}([\\w ]+(?=\\)| bui)|\\w+)/i,                         // HTC\n\n            // ZTE\n            /(zte)[- ]([\\w ]+?)(?: bui|\\/|\\))/i,\n            /(alcatel|geeksphone|nexian|panasonic(?!(?:;|\\.))|sony(?!-bra))[-_ ]?([-\\w]*)/i         // Alcatel/GeeksPhone/Nexian/Panasonic/Sony\n            ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [\n\n            // TCL\n            /tcl (xess p17aa)/i,\n            /droid [\\w\\.]+; ((?:8[14]9[16]|9(?:0(?:48|60|8[01])|1(?:3[27]|66)|2(?:6[69]|9[56])|466))[gqswx])(_\\w(\\w|\\w\\w))?(\\)| bui)/i\n            ], [MODEL, [VENDOR, 'TCL'], [TYPE, TABLET]], [\n            /droid [\\w\\.]+; (418(?:7d|8v)|5087z|5102l|61(?:02[dh]|25[adfh]|27[ai]|56[dh]|59k|65[ah])|a509dl|t(?:43(?:0w|1[adepqu])|50(?:6d|7[adju])|6(?:09dl|10k|12b|71[efho]|76[hjk])|7(?:66[ahju]|67[hw]|7[045][bh]|71[hk]|73o|76[ho]|79w|81[hks]?|82h|90[bhsy]|99b)|810[hs]))(_\\w(\\w|\\w\\w))?(\\)| bui)/i\n            ], [MODEL, [VENDOR, 'TCL'], [TYPE, MOBILE]], [\n\n            // itel\n            /(itel) ((\\w+))/i\n            ], [[VENDOR, lowerize], MODEL, [TYPE, strMapper, { 'tablet' : ['p10001l', 'w7001'], '*' : 'mobile' }]], [\n\n            // Acer\n            /droid.+; ([ab][1-7]-?[0178a]\\d\\d?)/i\n            ], [MODEL, [VENDOR, 'Acer'], [TYPE, TABLET]], [\n\n            // Meizu\n            /droid.+; (m[1-5] note) bui/i,\n            /\\bmz-([-\\w]{2,})/i\n            ], [MODEL, [VENDOR, 'Meizu'], [TYPE, MOBILE]], [\n                \n            // Ulefone\n            /; ((?:power )?armor(?:[\\w ]{0,8}))(?: bui|\\))/i\n            ], [MODEL, [VENDOR, 'Ulefone'], [TYPE, MOBILE]], [\n\n            // Energizer\n            /; (energy ?\\w+)(?: bui|\\))/i,\n            /; energizer ([\\w ]+)(?: bui|\\))/i\n            ], [MODEL, [VENDOR, 'Energizer'], [TYPE, MOBILE]], [\n\n            // Cat\n            /; cat (b35);/i,\n            /; (b15q?|s22 flip|s48c|s62 pro)(?: bui|\\))/i\n            ], [MODEL, [VENDOR, 'Cat'], [TYPE, MOBILE]], [\n\n            // Smartfren\n            /((?:new )?andromax[\\w- ]+)(?: bui|\\))/i\n            ], [MODEL, [VENDOR, 'Smartfren'], [TYPE, MOBILE]], [\n\n            // Nothing\n            /droid.+; (a(in)?(0(15|59|6[35])|142)p?)/i\n            ], [MODEL, [VENDOR, 'Nothing'], [TYPE, MOBILE]], [\n\n            // Archos\n            /; (x67 5g|tikeasy \\w+|ac[1789]\\d\\w+)( b|\\))/i,\n            /archos ?(5|gamepad2?|([\\w ]*[t1789]|hello) ?\\d+[\\w ]*)( b|\\))/i\n            ], [MODEL, [VENDOR, 'Archos'], [TYPE, TABLET]], [\n            /archos ([\\w ]+)( b|\\))/i,\n            /; (ac[3-6]\\d\\w{2,8})( b|\\))/i \n            ], [MODEL, [VENDOR, 'Archos'], [TYPE, MOBILE]], [\n\n            // HMD\n            /; (n159v)/i\n            ], [MODEL, [VENDOR, 'HMD'], [TYPE, MOBILE]], [\n\n            // MIXED\n            /(imo) (tab \\w+)/i,                                                 // IMO\n            /(infinix|tecno) (x1101b?|p904|dp(7c|8d|10a)( pro)?|p70[1-3]a?|p904|t1101)/i                     // Infinix XPad / Tecno\n            ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n            /(blackberry|benq|palm(?=\\-)|sonyericsson|acer|asus(?! zenw)|dell|jolla|meizu|motorola|polytron|tecno|micromax|advan)[-_ ]?([-\\w]*)/i,\n                                                                                // BlackBerry/BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Meizu/Motorola/Polytron/Tecno/Micromax/Advan\n                                                                                // BLU/HMD/IMO/Infinix/Lava/OnePlus/TCL/Wiko\n            /; (blu|hmd|imo|infinix|lava|oneplus|tcl|wiko)[_ ]([\\w\\+ ]+?)(?: bui|\\)|; r)/i,\n            /(hp) ([\\w ]+\\w)/i,                                                 // HP iPAQ\n            /(microsoft); (lumia[\\w ]+)/i,                                      // Microsoft Lumia\n            /(oppo) ?([\\w ]+) bui/i,                                            // OPPO\n            /(hisense) ([ehv][\\w ]+)\\)/i,                                       // Hisense\n            /droid[^;]+; (philips)[_ ]([sv-x][\\d]{3,4}[xz]?)/i                  // Philips\n            ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n\n            /(kobo)\\s(ereader|touch)/i,                                         // Kobo\n            /(hp).+(touchpad(?!.+tablet)|tablet)/i,                             // HP TouchPad\n            /(kindle)\\/([\\w\\.]+)/i                                              // Kindle\n            ], [VENDOR, MODEL, [TYPE, TABLET]], [\n\n            /(surface duo)/i                                                    // Surface Duo\n            ], [MODEL, [VENDOR, MICROSOFT], [TYPE, TABLET]], [\n            /droid [\\d\\.]+; (fp\\du?)(?: b|\\))/i                                 // Fairphone\n            ], [MODEL, [VENDOR, 'Fairphone'], [TYPE, MOBILE]], [\n            /((?:tegranote|shield t(?!.+d tv))[\\w- ]*?)(?: b|\\))/i              // Nvidia Tablets\n            ], [MODEL, [VENDOR, NVIDIA], [TYPE, TABLET]], [\n            /(sprint) (\\w+)/i                                                   // Sprint Phones\n            ], [VENDOR, MODEL, [TYPE, MOBILE]], [\n            /(kin\\.[onetw]{3})/i                                                // Microsoft Kin\n            ], [[MODEL, /\\./g, ' '], [VENDOR, MICROSOFT], [TYPE, MOBILE]], [\n            /droid.+; ([c6]+|et5[16]|mc[239][23]x?|vc8[03]x?)\\)/i               // Zebra\n            ], [MODEL, [VENDOR, ZEBRA], [TYPE, TABLET]], [\n            /droid.+; (ec30|ps20|tc[2-8]\\d[kx])\\)/i\n            ], [MODEL, [VENDOR, ZEBRA], [TYPE, MOBILE]], [\n\n            ///////////////////\n            // SMARTTVS\n            ///////////////////\n\n            /(philips)[\\w ]+tv/i,                                               // Philips\n            /smart-tv.+(samsung)/i                                              // Samsung\n            ], [VENDOR, [TYPE, SMARTTV]], [\n            /hbbtv.+maple;(\\d+)/i\n            ], [[MODEL, /^/, 'SmartTV'], [VENDOR, SAMSUNG], [TYPE, SMARTTV]], [\n            /(vizio)(?: |.+model\\/)(\\w+-\\w+)/i,                                 // Vizio\n            /tcast.+(lg)e?. ([-\\w]+)/i                                          // LG SmartTV\n            ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n            /(nux; netcast.+smarttv|lg (netcast\\.tv-201\\d|android tv))/i\n            ], [[VENDOR, LG], [TYPE, SMARTTV]], [\n            /(apple) ?tv/i                                                      // Apple TV\n            ], [VENDOR, [MODEL, APPLE+' TV'], [TYPE, SMARTTV]], [\n            /crkey.*devicetype\\/chromecast/i                                    // Google Chromecast Third Generation\n            ], [[MODEL, CHROMECAST+' Third Generation'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n            /crkey.*devicetype\\/([^/]*)/i                                       // Google Chromecast with specific device type\n            ], [[MODEL, /^/, 'Chromecast '], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n            /fuchsia.*crkey/i                                                   // Google Chromecast Nest Hub\n            ], [[MODEL, CHROMECAST+' Nest Hub'], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n            /crkey/i                                                            // Google Chromecast, Linux-based or unknown\n            ], [[MODEL, CHROMECAST], [VENDOR, GOOGLE], [TYPE, SMARTTV]], [\n            /(portaltv)/i                                                       // Facebook Portal TV\n            ], [MODEL, [VENDOR, FACEBOOK], [TYPE, SMARTTV]], [\n            /droid.+aft(\\w+)( bui|\\))/i                                         // Fire TV\n            ], [MODEL, [VENDOR, AMAZON], [TYPE, SMARTTV]], [\n            /(shield \\w+ tv)/i                                                  // Nvidia Shield TV\n            ], [MODEL, [VENDOR, NVIDIA], [TYPE, SMARTTV]], [\n            /\\(dtv[\\);].+(aquos)/i,\n            /(aquos-tv[\\w ]+)\\)/i                                               // Sharp\n            ], [MODEL, [VENDOR, SHARP], [TYPE, SMARTTV]],[\n            /(bravia[\\w ]+)( bui|\\))/i                                          // Sony\n            ], [MODEL, [VENDOR, SONY], [TYPE, SMARTTV]], [\n            /(mi(tv|box)-?\\w+) bui/i                                            // Xiaomi\n            ], [MODEL, [VENDOR, XIAOMI], [TYPE, SMARTTV]], [\n            /Hbbtv.*(technisat) (.*);/i                                         // TechniSAT\n            ], [VENDOR, MODEL, [TYPE, SMARTTV]], [\n            /\\b(roku)[\\dx]*[\\)\\/]((?:dvp-)?[\\d\\.]*)/i,                          // Roku\n            /hbbtv\\/\\d+\\.\\d+\\.\\d+ +\\([\\w\\+ ]*; *([\\w\\d][^;]*);([^;]*)/i         // HbbTV devices\n            ], [[VENDOR, /.+\\/(\\w+)/, '$1', strMapper, {'LG':'lge'}], [MODEL, trim], [TYPE, SMARTTV]], [\n\n            ///////////////////\n            // CONSOLES\n            ///////////////////\n\n            /(playstation \\w+)/i                                                // Playstation\n            ], [MODEL, [VENDOR, SONY], [TYPE, CONSOLE]], [\n            /\\b(xbox(?: one)?(?!; xbox))[\\); ]/i                                // Microsoft Xbox\n            ], [MODEL, [VENDOR, MICROSOFT], [TYPE, CONSOLE]], [\n            /(ouya)/i,                                                          // Ouya\n            /(nintendo) (\\w+)/i,                                                // Nintendo\n            /(retroid) (pocket ([^\\)]+))/i,                                     // Retroid Pocket\n            /(valve).+(steam deck)/i,\n            /droid.+; ((shield|rgcube|gr0006))( bui|\\))/i                       // Nvidia Portable/Anbernic/Logitech\n            ], [[VENDOR, strMapper, { 'Nvidia': 'Shield', 'Anbernic': 'RGCUBE', 'Logitech': 'GR0006' }], MODEL, [TYPE, CONSOLE]], [\n\n            ///////////////////\n            // WEARABLES\n            ///////////////////\n\n            /\\b(sm-[lr]\\d\\d[0156][fnuw]?s?|gear live)\\b/i                       // Samsung Galaxy Watch\n            ], [MODEL, [VENDOR, SAMSUNG], [TYPE, WEARABLE]], [\n            /((pebble))app/i,                                                   // Pebble\n            /(asus|google|lg|oppo|xiaomi) ((pixel |zen)?watch[\\w ]*)( bui|\\))/i // Asus ZenWatch / LG Watch / Pixel Watch / Xiaomi Watch\n            ], [VENDOR, MODEL, [TYPE, WEARABLE]], [\n            /(ow(?:19|20)?we?[1-3]{1,3})/i                                      // Oppo Watch\n            ], [MODEL, [VENDOR, OPPO], [TYPE, WEARABLE]], [\n            /(watch)(?: ?os[,\\/]|\\d,\\d\\/)[\\d\\.]+/i                              // Apple Watch\n            ], [MODEL, [VENDOR, APPLE], [TYPE, WEARABLE]], [\n            /(opwwe\\d{3})/i                                                     // OnePlus Watch\n            ], [MODEL, [VENDOR, ONEPLUS], [TYPE, WEARABLE]], [\n            /(moto 360)/i                                                       // Motorola 360\n            ], [MODEL, [VENDOR, MOTOROLA], [TYPE, WEARABLE]], [\n            /(smartwatch 3)/i                                                   // Sony SmartWatch\n            ], [MODEL, [VENDOR, SONY], [TYPE, WEARABLE]], [\n            /(g watch r)/i                                                      // LG G Watch R\n            ], [MODEL, [VENDOR, LG], [TYPE, WEARABLE]], [\n            /droid.+; (wt63?0{2,3})\\)/i\n            ], [MODEL, [VENDOR, ZEBRA], [TYPE, WEARABLE]], [\n\n            ///////////////////\n            // XR\n            ///////////////////\n\n            /droid.+; (glass) \\d/i                                              // Google Glass\n            ], [MODEL, [VENDOR, GOOGLE], [TYPE, XR]], [\n            /(pico) ([\\w ]+) os\\d/i                                             // Pico\n            ], [VENDOR, MODEL, [TYPE, XR]], [\n            /(quest( \\d| pro)?s?).+vr/i                                         // Meta Quest\n            ], [MODEL, [VENDOR, FACEBOOK], [TYPE, XR]], [\n            /mobile vr; rv.+firefox/i                                           // Unidentifiable VR device using Firefox Reality / Wolvic\n            ], [[TYPE, XR]], [\n\n            ///////////////////\n            // EMBEDDED\n            ///////////////////\n\n            /(tesla)(?: qtcarbrowser|\\/[-\\w\\.]+)/i                              // Tesla\n            ], [VENDOR, [TYPE, EMBEDDED]], [\n            /(aeobc)\\b/i                                                        // Echo Dot\n            ], [MODEL, [VENDOR, AMAZON], [TYPE, EMBEDDED]], [\n            /(homepod).+mac os/i                                                // Apple HomePod\n            ], [MODEL, [VENDOR, APPLE], [TYPE, EMBEDDED]], [\n            /windows iot/i                                                      // Unidentifiable embedded device using Windows IoT\n            ], [[TYPE, EMBEDDED]], [\n\n            ////////////////////\n            // MIXED (GENERIC)\n            ///////////////////\n\n            /droid.+; ([\\w- ]+) (4k|android|smart|google)[- ]?tv/i              // Unidentifiable SmartTV\n            ], [MODEL, [TYPE, SMARTTV]], [\n            /\\b((4k|android|smart|opera)[- ]?tv|tv; rv:|large screen[\\w ]+safari)\\b/i\n            ], [[TYPE, SMARTTV]], [\n            /droid .+?; ([^;]+?)(?: bui|; wv\\)|\\) applew|; hmsc).+?(mobile|vr|\\d) safari/i\n            ], [MODEL, [TYPE, strMapper, { 'mobile' : 'Mobile', 'xr' : 'VR', '*' : TABLET }]], [\n            /\\b((tablet|tab)[;\\/]|focus\\/\\d(?!.+mobile))/i                      // Unidentifiable Tablet\n            ], [[TYPE, TABLET]], [\n            /(phone|mobile(?:[;\\/]| [ \\w\\/\\.]*safari)|pda(?=.+windows ce))/i    // Unidentifiable Mobile\n            ], [[TYPE, MOBILE]], [\n            /droid .+?; ([\\w\\. -]+)( bui|\\))/i                                  // Generic Android Device\n            ], [MODEL, [VENDOR, 'Generic']]\n        ],\n\n        engine : [[\n\n            /windows.+ edge\\/([\\w\\.]+)/i                                       // EdgeHTML\n            ], [VERSION, [NAME, EDGE+'HTML']], [\n\n            /(arkweb)\\/([\\w\\.]+)/i                                              // ArkWeb\n            ], [NAME, VERSION], [\n\n            /webkit\\/537\\.36.+chrome\\/(?!27)([\\w\\.]+)/i                         // Blink\n            ], [VERSION, [NAME, 'Blink']], [\n\n            /(presto)\\/([\\w\\.]+)/i,                                             // Presto\n            /(webkit|trident|netfront|netsurf|amaya|lynx|w3m|goanna|servo)\\/([\\w\\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m/Goanna/Servo\n            /ekioh(flow)\\/([\\w\\.]+)/i,                                          // Flow\n            /(khtml|tasman|links|dillo)[\\/ ]\\(?([\\w\\.]+)/i,                     // KHTML/Tasman/Links/Dillo\n            /(icab)[\\/ ]([23]\\.[\\d\\.]+)/i,                                      // iCab\n\n            /\\b(libweb)/i                                                       // LibWeb\n            ], [NAME, VERSION], [\n            /ladybird\\//i\n            ], [[NAME, 'LibWeb']], [\n\n            /rv\\:([\\w\\.]{1,9})\\b.+(gecko)/i                                     // Gecko\n            ], [VERSION, NAME]\n        ],\n\n        os : [[\n\n            // Windows\n            /(windows nt) (6\\.[23]); arm/i                                      // Windows RT\n            ], [[NAME, /N/, 'R'], [VERSION, strMapper, windowsVersionMap]], [\n            /(windows (?:phone|mobile|iot))(?: os)?[\\/ ]?([\\d\\.]*( se)?)/i,     // Windows IoT/Mobile/Phone\n                                                                                // Windows NT/3.1/95/98/ME/2000/XP/Vista/7/8/8.1/10/11\n            /(windows)[\\/ ](1[01]|2000|3\\.1|7|8(\\.1)?|9[58]|me|server 20\\d\\d( r2)?|vista|xp)/i\n            ], [NAME, VERSION], [\n            /windows nt ?([\\d\\.\\)]*)(?!.+xbox)/i,\n            /\\bwin(?=3| ?9|n)(?:nt| 9x )?([\\d\\.;]*)/i\n            ], [[VERSION, /(;|\\))/g, '', strMapper, windowsVersionMap], [NAME, WINDOWS]], [\n            /(windows ce)\\/?([\\d\\.]*)/i                                         // Windows CE\n            ], [NAME, VERSION], [\n\n            // iOS/macOS\n            /[adehimnop]{4,7}\\b(?:.*os ([\\w]+) like mac|; opera)/i,             // iOS\n            /(?:ios;fbsv|ios(?=.+ip(?:ad|hone)|.+apple ?tv)|ip(?:ad|hone)(?: |.+i(?:pad)?)os|apple ?tv.+ios)[\\/ ]([\\w\\.]+)/i,\n            /\\btvos ?([\\w\\.]+)/i,\n            /cfnetwork\\/.+darwin/i\n            ], [[VERSION, /_/g, '.'], [NAME, 'iOS']], [\n            /(mac os x) ?([\\w\\. ]*)/i,\n            /(macintosh|mac_powerpc\\b)(?!.+(haiku|morphos))/i                   // Mac OS\n            ], [[NAME, 'macOS'], [VERSION, /_/g, '.']], [\n\n            // Google Chromecast\n            /android ([\\d\\.]+).*crkey/i                                         // Google Chromecast, Android-based\n            ], [VERSION, [NAME, CHROMECAST + ' Android']], [\n            /fuchsia.*crkey\\/([\\d\\.]+)/i                                        // Google Chromecast, Fuchsia-based\n            ], [VERSION, [NAME, CHROMECAST + ' Fuchsia']], [\n            /crkey\\/([\\d\\.]+).*devicetype\\/smartspeaker/i                       // Google Chromecast, Linux-based Smart Speaker\n            ], [VERSION, [NAME, CHROMECAST + ' SmartSpeaker']], [\n            /linux.*crkey\\/([\\d\\.]+)/i                                          // Google Chromecast, Legacy Linux-based\n            ], [VERSION, [NAME, CHROMECAST + ' Linux']], [\n            /crkey\\/([\\d\\.]+)/i                                                 // Google Chromecast, unknown\n            ], [VERSION, [NAME, CHROMECAST]], [\n\n            // Mobile OSes\n            /droid ([\\w\\.]+)\\b.+(android[- ]x86)/i                              // Android-x86\n            ], [VERSION, NAME], [                                               \n            /(ubuntu) ([\\w\\.]+) like android/i                                  // Ubuntu Touch\n            ], [[NAME, /(.+)/, '$1 Touch'], VERSION], [\n            /(harmonyos)[\\/ ]?([\\d\\.]*)/i,                                      // HarmonyOS\n                                                                                // Android/Blackberry/WebOS/QNX/Bada/RIM/KaiOS/Maemo/MeeGo/S40/Sailfish OS/OpenHarmony/Tizen\n            /(android|bada|blackberry|kaios|maemo|meego|openharmony|qnx|rim tablet os|sailfish|series40|symbian|tizen)\\w*[-\\/\\.; ]?([\\d\\.]*)/i\n            ], [NAME, VERSION], [\n            /\\(bb(10);/i                                                        // BlackBerry 10\n            ], [VERSION, [NAME, BLACKBERRY]], [\n            /(?:symbian ?os|symbos|s60(?=;)|series ?60)[-\\/ ]?([\\w\\.]*)/i       // Symbian\n            ], [VERSION, [NAME, 'Symbian']], [\n            /mozilla\\/[\\d\\.]+ \\((?:mobile[;\\w ]*|tablet|tv|[^\\)]*(?:viera|lg(?:l25|-d300)|alcatel ?o.+|y300-f1)); rv:([\\w\\.]+)\\).+gecko\\//i // Firefox OS\n            ], [VERSION, [NAME, FIREFOX+' OS']], [\n            /\\b(?:hp)?wos(?:browser)?\\/([\\w\\.]+)/i,                             // WebOS\n            /webos(?:[ \\/]?|\\.tv-20(?=2[2-9]))(\\d[\\d\\.]*)/i\n            ], [VERSION, [NAME, 'webOS']], [\n            /web0s;.+?(?:chr[o0]me|safari)\\/(\\d+)/i\n                                                                                // https://webostv.developer.lge.com/develop/specifications/web-api-and-web-engine\n            ], [[VERSION, strMapper, {'25':'120','24':'108','23':'94','22':'87','6':'79','5':'68','4':'53','3':'38','2':'538','1':'537','*':'TV'}], [NAME, 'webOS']], [                   \n            /watch(?: ?os[,\\/ ]|\\d,\\d\\/)([\\d\\.]+)/i                              // watchOS\n            ], [VERSION, [NAME, 'watchOS']], [\n\n            // Google ChromeOS\n            /cros [\\w]+(?:\\)| ([\\w\\.]+)\\b)/i                                    // Chromium OS\n            ], [VERSION, [NAME, 'Chrome OS']],[\n\n            // Smart TVs\n            /kepler ([\\w\\.]+); (aft|aeo)/i                                      // Vega OS\n            ], [VERSION, [NAME, 'Vega OS']],[\n            /(netrange)mmh/i,                                                   // Netrange\n            /(nettv)\\/(\\d+\\.[\\w\\.]+)/i,                                         // NetTV\n\n            // Console\n            /(nintendo|playstation) (\\w+)/i,                                    // Nintendo/Playstation\n            /(xbox); +xbox ([^\\);]+)/i,                                         // Microsoft Xbox (360, One, X, S, Series X, Series S)\n            /(pico) .+os([\\w\\.]+)/i,                                            // Pico\n\n            // Other\n            /\\b(joli|palm)\\b ?(?:os)?\\/?([\\w\\.]*)/i,                            // Joli/Palm\n            /linux.+(mint)[\\/\\(\\) ]?([\\w\\.]*)/i,                                // Mint\n            /(mageia|vectorlinux|fuchsia|arcaos|arch(?= ?linux))[;l ]([\\d\\.]*)/i,  // Mageia/VectorLinux/Fuchsia/ArcaOS/Arch\n            /([kxln]?ubuntu|debian|suse|opensuse|gentoo|slackware|fedora|mandriva|centos|pclinuxos|red ?hat|zenwalk|linpus|raspbian|plan 9|minix|risc os|contiki|deepin|manjaro|elementary os|sabayon|linspire|knoppix)(?: gnu[\\/ ]linux)?(?: enterprise)?(?:[- ]linux)?(?:-gnu)?[-\\/ ]?(?!chrom|package)([-\\w\\.]*)/i,\n                                                                                // Ubuntu/Debian/SUSE/Gentoo/Slackware/Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus/Raspbian/Plan9/Minix/RISCOS/Contiki/Deepin/Manjaro/elementary/Sabayon/Linspire/Knoppix\n            /((?:open)?solaris)[-\\/ ]?([\\w\\.]*)/i,                              // Solaris\n            /\\b(aix)[; ]([1-9\\.]{0,4})/i,                                       // AIX\n            /(hurd|linux|morphos)(?: (?:arm|x86|ppc)\\w*| ?)([\\w\\.]*)/i,         // Hurd/Linux/MorphOS\n            /(gnu) ?([\\w\\.]*)/i,                                                // GNU\n            /\\b([-frentopcghs]{0,5}bsd|dragonfly)[\\/ ]?(?!amd|[ix346]{1,2}86)([\\w\\.]*)/i, // FreeBSD/NetBSD/OpenBSD/PC-BSD/GhostBSD/DragonFly\n            /(haiku) ?(r\\d)?/i                                                  // Haiku\n            ], [NAME, VERSION], [\n            /(sunos) ?([\\d\\.]*)/i                                               // Solaris\n            ], [[NAME, 'Solaris'], VERSION], [\n            /\\b(beos|os\\/2|amigaos|openvms|hp-ux|serenityos)/i,                 // BeOS/OS2/AmigaOS/OpenVMS/HP-UX/SerenityOS\n            /(unix) ?([\\w\\.]*)/i                                                // UNIX\n            ], [NAME, VERSION]\n        ]\n    };\n\n    /////////////////\n    // Factories\n    ////////////////\n\n    var defaultProps = (function () {\n            var props = { init : {}, isIgnore : {}, isIgnoreRgx : {}, toString : {}};\n            setProps.call(props.init, [\n                [BROWSER, [NAME, VERSION, MAJOR, TYPE]],\n                [CPU, [ARCHITECTURE]],\n                [DEVICE, [TYPE, MODEL, VENDOR]],\n                [ENGINE, [NAME, VERSION]],\n                [OS, [NAME, VERSION]]\n            ]);\n            setProps.call(props.isIgnore, [\n                [BROWSER, [VERSION, MAJOR]],\n                [ENGINE, [VERSION]],\n                [OS, [VERSION]]\n            ]);\n            setProps.call(props.isIgnoreRgx, [\n                [BROWSER, / ?browser$/i],\n                [OS, / ?os$/i]\n            ]);\n            setProps.call(props.toString, [\n                [BROWSER, [NAME, VERSION]],\n                [CPU, [ARCHITECTURE]],\n                [DEVICE, [VENDOR, MODEL]],\n                [ENGINE, [NAME, VERSION]],\n                [OS, [NAME, VERSION]]\n            ]);\n            return props;\n    })();\n\n    var createIData = function (item, itemType) {\n\n        var init_props = defaultProps.init[itemType],\n            is_ignoreProps = defaultProps.isIgnore[itemType] || 0,\n            is_ignoreRgx = defaultProps.isIgnoreRgx[itemType] || 0,\n            toString_props = defaultProps.toString[itemType] || 0;\n\n        function IData () {\n            setProps.call(this, init_props);\n        }\n\n        IData.prototype.getItem = function () {\n            return item;\n        };\n\n        IData.prototype.withClientHints = function () {\n\n            // nodejs / non-client-hints browsers\n            if (!NAVIGATOR_UADATA) {\n                return item\n                        .parseCH()\n                        .get();\n            }\n\n            // browsers based on chromium 85+\n            return NAVIGATOR_UADATA\n                    .getHighEntropyValues(CH_ALL_VALUES)\n                    .then(function (res) {\n                        return item\n                                .setCH(new UACHData(res, false))\n                                .parseCH()\n                                .get();\n            });\n        };\n\n        IData.prototype.withFeatureCheck = function () {\n            return item.detectFeature().get();\n        };\n\n        if (itemType != RESULT) {\n            IData.prototype.is = function (strToCheck) {\n                var is = false;\n                for (var i in this) {\n                    if (this.hasOwnProperty(i) && !has(is_ignoreProps, i) && lowerize(is_ignoreRgx ? strip(is_ignoreRgx, this[i]) : this[i]) == lowerize(is_ignoreRgx ? strip(is_ignoreRgx, strToCheck) : strToCheck)) {\n                        is = true;\n                        if (strToCheck != TYPEOF.UNDEFINED) break;\n                    } else if (strToCheck == TYPEOF.UNDEFINED && is) {\n                        is = !is;\n                        break;\n                    }\n                }\n                return is;\n            };\n            IData.prototype.toString = function () {\n                var str = EMPTY;\n                for (var i in toString_props) {\n                    if (typeof(this[toString_props[i]]) !== TYPEOF.UNDEFINED) {\n                        str += (str ? ' ' : EMPTY) + this[toString_props[i]];\n                    }\n                }\n                return str || TYPEOF.UNDEFINED;\n            };\n        }\n\n        IData.prototype.then = function (cb) { \n            var that = this;\n            var IDataResolve = function () {\n                for (var prop in that) {\n                    if (that.hasOwnProperty(prop)) {\n                        this[prop] = that[prop];\n                    }\n                }\n            };\n            IDataResolve.prototype = {\n                is : IData.prototype.is,\n                toString : IData.prototype.toString,\n                withClientHints : IData.prototype.withClientHints,\n                withFeatureCheck : IData.prototype.withFeatureCheck\n            };\n            var resolveData = new IDataResolve();\n            cb(resolveData);\n            return resolveData;\n        };\n\n        return new IData();\n    };\n\n    /////////////////\n    // Constructor\n    ////////////////\n\n    function UACHData (uach, isHttpUACH) {\n        uach = uach || {};\n        setProps.call(this, CH_ALL_VALUES);\n        if (isHttpUACH) {\n            setProps.call(this, [\n                [BRANDS, itemListToArray(uach[CH])],\n                [FULLVERLIST, itemListToArray(uach[CH_FULL_VER_LIST])],\n                [MOBILE, /\\?1/.test(uach[CH_MOBILE])],\n                [MODEL, stripQuotes(uach[CH_MODEL])],\n                [PLATFORM, stripQuotes(uach[CH_PLATFORM])],\n                [PLATFORMVER, stripQuotes(uach[CH_PLATFORM_VER])],\n                [ARCHITECTURE, stripQuotes(uach[CH_ARCH])],\n                [FORMFACTORS, itemListToArray(uach[CH_FORM_FACTORS])],\n                [BITNESS, stripQuotes(uach[CH_BITNESS])]\n            ]);\n        } else {\n            for (var prop in uach) {\n                if(this.hasOwnProperty(prop) && typeof uach[prop] !== TYPEOF.UNDEFINED) this[prop] = uach[prop];\n            }\n        }\n    }\n\n    function UAItem (itemType, ua, rgxMap, uaCH) {\n        setProps.call(this, [\n            ['itemType', itemType],\n            ['ua', ua],\n            ['uaCH', uaCH],\n            ['rgxMap', rgxMap],\n            ['data', createIData(this, itemType)]\n        ]);\n        return this;\n    }\n\n    UAItem.prototype.get = function (prop) {\n        if (!prop) return this.data;\n        return this.data.hasOwnProperty(prop) ? this.data[prop] : undefined;\n    };\n\n    UAItem.prototype.set = function (prop, val) {\n        this.data[prop] = val;\n        return this;\n    };\n\n    UAItem.prototype.setCH = function (ch) {\n        this.uaCH = ch;\n        return this;\n    };\n\n    UAItem.prototype.detectFeature = function () {\n        if (NAVIGATOR && NAVIGATOR.userAgent == this.ua) {\n            switch (this.itemType) {\n                case BROWSER:\n                    // Brave-specific detection\n                    if (NAVIGATOR.brave && typeof NAVIGATOR.brave.isBrave == TYPEOF.FUNCTION) {\n                        this.set(NAME, 'Brave');\n                    }\n                    break;\n                case DEVICE:\n                    // Chrome-specific detection: check for 'mobile' value of navigator.userAgentData\n                    if (!this.get(TYPE) && NAVIGATOR_UADATA && NAVIGATOR_UADATA[MOBILE]) {\n                        this.set(TYPE, MOBILE);\n                    }\n                    // iPadOS-specific detection: identified as Mac, but has some iOS-only properties\n                    if (this.get(MODEL) == 'Macintosh' && NAVIGATOR && typeof NAVIGATOR.standalone !== TYPEOF.UNDEFINED && NAVIGATOR.maxTouchPoints && NAVIGATOR.maxTouchPoints > 2) {\n                        this.set(MODEL, 'iPad')\n                            .set(TYPE, TABLET);\n                    }\n                    break;\n                case OS:\n                    // Chrome-specific detection: check for 'platform' value of navigator.userAgentData\n                    if (!this.get(NAME) && NAVIGATOR_UADATA && NAVIGATOR_UADATA[PLATFORM]) {\n                        this.set(NAME, NAVIGATOR_UADATA[PLATFORM]);\n                    }\n                    break;\n                case RESULT:\n                    var data = this.data;\n                    var detect = function (itemType) {\n                        return data[itemType]\n                                .getItem()\n                                .detectFeature()\n                                .get();\n                    };\n                    this.set(BROWSER, detect(BROWSER))\n                        .set(CPU, detect(CPU))\n                        .set(DEVICE, detect(DEVICE))\n                        .set(ENGINE, detect(ENGINE))\n                        .set(OS, detect(OS));\n            }\n        }\n        return this;\n    };\n\n    UAItem.prototype.parseUA = function () {\n        if (this.itemType != RESULT) {\n            rgxMapper.call(this.data, this.ua, this.rgxMap);\n        }\n        switch (this.itemType) {\n            case BROWSER:\n                this.set(MAJOR, majorize(this.get(VERSION)));\n                break;\n            case OS:\n                if (this.get(NAME) == 'iOS' && this.get(VERSION) == '18.6') {\n                    // Based on the assumption that iOS version is tightly coupled with Safari version\n                    var realVersion = /\\) Version\\/([\\d\\.]+)/.exec(this.ua); // Get Safari version\n                    if (realVersion && parseInt(realVersion[1].substring(0,2), 10) >= 26) {\n                        this.set(VERSION, realVersion[1]);  // Set as iOS version\n                    }\n                }\n                break;\n        }\n        return this;\n    };\n\n    UAItem.prototype.parseCH = function () {\n        var uaCH = this.uaCH,\n            rgxMap = this.rgxMap;\n\n        switch (this.itemType) {\n            case BROWSER:\n            case ENGINE:\n                var brands = uaCH[FULLVERLIST] || uaCH[BRANDS], prevName;\n                if (brands) {\n                    for (var i=0; i<brands.length; i++) {\n                        var brandName = brands[i].brand || brands[i],\n                            brandVersion = brands[i].version;\n                        if (this.itemType == BROWSER && \n                            !/not.a.brand/i.test(brandName) && \n                            (!prevName || \n                                (/Chrom/.test(prevName) && brandName != CHROMIUM) || \n                                (prevName == EDGE && /WebView2/.test(brandName))\n                            )) {\n                                brandName = strMapper(brandName, browserHintsMap);\n                                prevName = this.get(NAME);\n                                if (!(prevName && !/Chrom/.test(prevName) && /Chrom/.test(brandName))) {\n                                    this.set(NAME, brandName)\n                                        .set(VERSION, brandVersion)\n                                        .set(MAJOR, majorize(brandVersion));\n                                }\n                                prevName = brandName;\n                        }\n                        if (this.itemType == ENGINE && brandName == CHROMIUM) {\n                            this.set(VERSION, brandVersion);\n                        }\n                    }\n                }\n                break;\n            case CPU:\n                var archName = uaCH[ARCHITECTURE];\n                if (archName) {\n                    if (archName && uaCH[BITNESS] == '64') archName += '64';\n                    rgxMapper.call(this.data, archName + ';', rgxMap);\n                }\n                break;\n            case DEVICE:\n                if (uaCH[MOBILE]) {\n                    this.set(TYPE, MOBILE);\n                }\n                if (uaCH[MODEL]) {\n                    this.set(MODEL, uaCH[MODEL]);\n                    if (!this.get(TYPE) || !this.get(VENDOR)) {\n                        var reParse = {};\n                        rgxMapper.call(reParse, 'droid 9; ' + uaCH[MODEL] + ')', rgxMap);\n                        if (!this.get(TYPE) && !!reParse.type) {\n                            this.set(TYPE, reParse.type);\n                        }\n                        if (!this.get(VENDOR) && !!reParse.vendor) {\n                            this.set(VENDOR, reParse.vendor);\n                        }\n                    }\n                }\n                if (uaCH[FORMFACTORS]) {\n                    var ff;\n                    if (typeof uaCH[FORMFACTORS] !== 'string') {\n                        var idx = 0;\n                        while (!ff && idx < uaCH[FORMFACTORS].length) {\n                            ff = strMapper(uaCH[FORMFACTORS][idx++], formFactorsMap);\n                        }\n                    } else {\n                        ff = strMapper(uaCH[FORMFACTORS], formFactorsMap);\n                    }\n                    this.set(TYPE, ff);\n                }\n                break;\n            case OS:\n                var osName = uaCH[PLATFORM];\n                if(osName) {\n                    var osVersion = uaCH[PLATFORMVER];\n                    if (osName == WINDOWS) osVersion = (parseInt(majorize(osVersion), 10) >= 13 ? '11' : '10');\n                    this.set(NAME, osName)\n                        .set(VERSION, osVersion);\n                }\n                // Xbox-Specific Detection\n                if (this.get(NAME) == WINDOWS && uaCH[MODEL] == 'Xbox') {\n                    this.set(NAME, 'Xbox')\n                        .set(VERSION, undefined);\n                }           \n                break;\n            case RESULT:\n                var data = this.data;\n                var parse = function (itemType) {\n                    return data[itemType]\n                            .getItem()\n                            .setCH(uaCH)\n                            .parseCH()\n                            .get();\n                };\n                this.set(BROWSER, parse(BROWSER))\n                    .set(CPU, parse(CPU))\n                    .set(DEVICE, parse(DEVICE))\n                    .set(ENGINE, parse(ENGINE))\n                    .set(OS, parse(OS));\n        }\n        return this;\n    };\n\n    function UAParser (ua, extensions, headers) {\n\n        if (typeof ua === TYPEOF.OBJECT) {\n            if (isExtensions(ua, true)) {\n                if (typeof extensions === TYPEOF.OBJECT) {\n                    headers = extensions;               // case UAParser(extensions, headers)           \n                }\n                extensions = ua;                        // case UAParser(extensions)\n            } else {\n                headers = ua;                           // case UAParser(headers)\n                extensions = undefined;\n            }\n            ua = undefined;\n        } else if (typeof ua === TYPEOF.STRING && !isExtensions(extensions, true)) {\n            headers = extensions;                       // case UAParser(ua, headers)\n            extensions = undefined;\n        }\n\n        if (headers) {\n            if (typeof headers.append === TYPEOF.FUNCTION) {\n                // Convert Headers object into a plain object\n                var kv = {};\n                headers.forEach(function (v, k) { kv[String(k).toLowerCase()] = v; });\n                headers = kv;\n            } else {\n                // Normalize headers field name into lowercase\n                var normalized = {};\n                for (var header in headers) {\n                    if (headers.hasOwnProperty(header)) {\n                        normalized[String(header).toLowerCase()] = headers[header];\n                    }\n                }\n                headers = normalized;\n            }\n        }\n        \n        if (!(this instanceof UAParser)) {\n            return new UAParser(ua, extensions, headers).getResult();\n        }\n\n        var userAgent = typeof ua === TYPEOF.STRING ? ua :                                       // Passed user-agent string\n                                (headers && headers[USER_AGENT] ? headers[USER_AGENT] :     // User-Agent from passed headers\n                                ((NAVIGATOR && NAVIGATOR.userAgent) ? NAVIGATOR.userAgent : // navigator.userAgent\n                                    EMPTY)),                                                // empty string\n\n            httpUACH = new UACHData(headers, true),\n            regexMap = extensions ? \n                        extend(defaultRegexes, extensions) : \n                        defaultRegexes,\n\n            createItemFunc = function (itemType) {\n                if (itemType == RESULT) {\n                    return function () {\n                        return new UAItem(itemType, userAgent, regexMap, httpUACH)\n                                    .set('ua', userAgent)\n                                    .set(BROWSER, this.getBrowser())\n                                    .set(CPU, this.getCPU())\n                                    .set(DEVICE, this.getDevice())\n                                    .set(ENGINE, this.getEngine())\n                                    .set(OS, this.getOS())\n                                    .get();\n                    };\n                } else {\n                    return function () {\n                        return new UAItem(itemType, userAgent, regexMap[itemType], httpUACH)\n                                    .parseUA()\n                                    .get();\n                    };\n                }\n            };\n            \n        // public methods\n        setProps.call(this, [\n            ['getBrowser', createItemFunc(BROWSER)],\n            ['getCPU', createItemFunc(CPU)],\n            ['getDevice', createItemFunc(DEVICE)],\n            ['getEngine', createItemFunc(ENGINE)],\n            ['getOS', createItemFunc(OS)],\n            ['getResult', createItemFunc(RESULT)],\n            ['getUA', function () { return userAgent; }],\n            ['setUA', function (ua) {\n                if (isString(ua)) userAgent = trim(ua, UA_MAX_LENGTH);\n                return this;\n            }]\n        ])\n        .setUA(userAgent);\n\n        return this;\n    }\n\n    UAParser.VERSION = LIBVERSION;\n    UAParser.BROWSER =  enumerize([NAME, VERSION, MAJOR, TYPE]);\n    UAParser.CPU = enumerize([ARCHITECTURE]);\n    UAParser.DEVICE = enumerize([MODEL, VENDOR, TYPE, CONSOLE, MOBILE, SMARTTV, TABLET, WEARABLE, EMBEDDED]);\n    UAParser.ENGINE = UAParser.OS = enumerize([NAME, VERSION]);\n\n    export {UAParser};", "import { AccountClaims, type Adapter, errors } from 'oidc-provider';\nimport type Provider from 'oidc-provider';\nimport { type IdentityContext } from '../interfaces.js';\nimport { type AuthenticationLogServiceClient as authLogService } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/authentication_log.js';\nimport { type TokenServiceClient as tokenService } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/token.js';\nimport { type User } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/user.js';\n\nexport interface OIDCHbsTemplates {\n  login?: string;\n  layout?: string;\n  consent?: string;\n}\n\nexport interface OIDCConfig {\n  remoteTokenService?: tokenService;\n  localTokenServiceFactory?: (type: string) => Adapter;\n  loginFn?: OIDCBodyLoginFn;\n  issuer: string;\n  jwks: any;\n  client_id: string;\n  client_secret: string;\n  cookies: {\n    keys: string[];\n  };\n  templates?: OIDCHbsTemplates;\n  redirect_uris: string[];\n  post_logout_redirect_uris: string[];\n}\n\nexport interface OIDCError {\n  key: string;\n  message?: string;\n}\n\nexport type UserKey = keyof User;\n\nexport type AuthUserKeyWhitelist =\n  'id' |\n  'name' |\n  'email' |\n  'localeId' |\n  'timezoneId' |\n  'roleAssociations' |\n  'firstName' |\n  'lastName' |\n  'defaultScope' |\n  'tokens' |\n  'lastAccess';\n\nexport type AuthUser = Pick<User, AuthUserKeyWhitelist>;\n\nexport interface LoginFnResponse {\n  user?: AuthUser;\n  error?: OIDCError;\n  identifier?: string;\n  remember?: boolean;\n}\n\nexport type OIDCBodyLoginFn = (ctx: IdentityContext, body: any) => Promise<LoginFnResponse>;\n\nexport type OIDCBodyLoginCredentials = (ctx: IdentityContext, credentials: UserCredentials) => Promise<LoginFnResponse>;\n\nexport type OIDCLoginFn = (ctx: IdentityContext, identifier?: string, password?: string, remember?: boolean) => Promise<LoginFnResponse>;\n\nexport interface UserCredentials {\n  identifier: string;\n  password?: string;\n  token?: string;\n}\n\nexport interface OIDCPasswordGrantTypeConfig {\n  provider: Provider;\n  authenticate: OIDCBodyLoginCredentials;\n  tokenExpiration?: number;\n  authLogService: authLogService;\n}\n\nexport interface TokenResponseBody {\n  access_token?: string;\n  id_token?: string;\n  expires_in?: Date;\n  last_login?: Date;\n  token_type?: string;\n  scope?: string;\n  subject_id?: string;\n  token_name?: string;\n  default_scope?: string;\n  last_access?: Date;\n}\n\nexport class InvalidPasswordGrant extends errors.InvalidGrant {\n  constructor(detail: string) {\n    super('invalid_password_grant');\n    Object.assign(this, {error_description: detail, error_detail: detail});\n  }\n}\n\n\nexport interface Claims extends AccountClaims {\n  data: AuthUser;\n  [key: string]: any;\n}\n", "import Provider from 'oidc-provider';\nimport { type Logger } from '@restorecommerce/logger';\nimport { type IdentityContext } from '../interfaces.js';\nimport type { OIDCConfig } from './interfaces.js';\nimport { createOIDCRouter } from './router.js';\nimport { createIdentityServiceAdapterClass } from './adapter.js';\nimport { findUserById, loginUserBody, loginUserCredentials } from './user.js';\nimport { type IdentitySrvGrpcClient } from '../grpc/index.js';\nimport { registerPasswordGrantType } from './password-grant.js';\n\nexport type { OIDCConfig };\nexport { createOIDCRouter, type CreateOIDCRouterArgs } from './router.js';\n\nexport interface CreateOIDCArgs {\n  logger: Logger;\n  identitySrvClient: IdentitySrvGrpcClient;\n  config: OIDCConfig;\n  env: string;\n}\n\nexport function createOIDC({\n  identitySrvClient,\n  env,\n  logger,\n  config: {\n    loginFn,\n    post_logout_redirect_uris,\n    localTokenServiceFactory,\n    remoteTokenService,\n    cookies,\n    redirect_uris,\n    client_id,\n    client_secret,\n    issuer,\n    jwks,\n    templates\n  }\n}: CreateOIDCArgs) {\n  const adapterClass = createIdentityServiceAdapterClass(remoteTokenService ?? identitySrvClient.token, logger, localTokenServiceFactory);\n  const provider = new Provider(issuer, {\n    adapter: adapterClass,\n    clients: [{\n      post_logout_redirect_uris,\n      client_id,\n      client_secret,\n      id_token_signed_response_alg: 'RS256',\n      grant_types: ['refresh_token', 'authorization_code', 'password'],\n      redirect_uris,\n      scopes: ['openid', 'offline_access'],\n      response_types: [\n        'code'\n      ],\n      token_endpoint_auth_method: 'client_secret_basic',\n    }],\n    // issueRefreshToken:  async (ctx, client, code) => {\n    //   // Always issue refresh token\n    //   return client.grantTypeAllowed('refresh_token');\n    // },\n    jwks,\n    ttl: {\n      Session: (1 * 24 * 60 * 60) * 1000\n    },\n    cookies: {\n      long: {signed: false}, // 1 day in ms\n      short: {signed: false},\n      keys: cookies.keys,\n    },\n    // oidc-provider only looks up the accounts by their ID when it has to read the claims,\n    // passing it our Account model method is sufficient, it should return a Promise that resolves\n    // with an object with accountId property and a claims method.\n    findAccount: async (ctx: any, id: string) => {\n      try {\n        const userService = (ctx as IdentityContext)?.identitySrvClient?.user;\n        return {\n          accountId: id,\n          claims: async (use: any, scope: any) => {\n            try {\n              const user = await findUserById(userService, id);\n              logger.debug('User found:', user);\n              return {\n                sub: id,\n                data: user\n              };\n            } catch (error: any) {\n              const { code, message, stack } = error;\n              logger.error('OIDC findAccount claims error', { code, message, stack });\n              return {\n                sub: id,\n                data: {\n                  id,\n                }\n              };\n            }\n          },\n        };\n      } catch (error: any) {\n        const { code, message, stack } = error;\n        logger.error('OIDC findAccount error', { code, message, stack });\n      }\n    },\n    claims: {\n      acr: null,\n      sid: null,\n      auth_time: null,\n      iss: null,\n      openid: ['sub', 'data'],\n    },\n    responseTypes: [\n      'code',\n      'id_token',\n      'id_token token',\n      'code id_token',\n      'code token',\n      'code id_token token',\n      'none',\n    ],\n    // let's tell oidc-provider where our own interactions will be\n    // setting a nested route is just good practice so that users\n    // don't run into weird issues with multiple interactions open\n    // at a time.\n    interactions: {\n      url: (ctx: any) => `/interaction/${(ctx.oidc as any).uid}`,\n    },\n    features: {\n      introspection: {\n        enabled: true\n      },\n      revocation: {\n        enabled: true\n      },\n      devInteractions: {\n        enabled: false // env === 'development'\n      },\n    },\n    clientBasedCORS: () => true\n  });\n\n  // Disabled due to playground being disabled\n  // provider.use(helmet());\n\n  const router = createOIDCRouter({\n    loginFn: loginFn ?? loginUserBody,\n    templates,\n    logger,\n    provider,\n    env,\n  });\n\n  registerPasswordGrantType({\n    authLogService: identitySrvClient.authentication_log,\n    authenticate: loginUserCredentials,\n    provider\n  }, logger);\n\n  // Disable forbidding redirect to http/localhost in dev mode\n  if (env === 'development') {\n    const proto = (provider.Client as any)?.Schema?.prototype;\n    if (proto) {\n      const {invalidate: orig} = proto;\n      proto.invalidate = function invalidate(message: string, code: string) {\n        if (code === 'implicit-force-https' || code === 'implicit-forbid-localhost') {\n          return;\n        }\n        orig.call(this, message);\n      };\n    }\n  }\n\n  return {\n    provider,\n    router,\n  };\n}\n", "import { RestoreCommerceGrpcClient } from '@restorecommerce/rc-grpc-clients';\nimport {\n  type UserServiceClient,\n  UserServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/user.js';\nimport {\n  type RoleServiceClient,\n  RoleServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/role.js';\nimport {\n  type AuthenticationLogServiceClient,\n  AuthenticationLogServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/authentication_log.js';\nimport {\n  type TokenServiceClient,\n  TokenServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/token.js';\nimport {\n  type OAuthServiceClient,\n  OAuthServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/oauth.js';\nimport { type GrpcClientConfig } from '@restorecommerce/grpc-client';\n\nexport class IdentitySrvGrpcClient extends RestoreCommerceGrpcClient {\n\n  readonly user: UserServiceClient;\n  readonly role: RoleServiceClient;\n  readonly authentication_log: AuthenticationLogServiceClient;\n  readonly token: TokenServiceClient;\n  readonly o_auth: OAuthServiceClient;\n\n  constructor(address: string, cfg: GrpcClientConfig) {\n    super(address, cfg);\n\n    this.user = this.createClient(cfg, UserServiceDefinition, this.channel);\n    this.role = this.createClient(cfg, RoleServiceDefinition, this.channel);\n    this.authentication_log = this.createClient(cfg, AuthenticationLogServiceDefinition, this.channel);\n    this.token = this.createClient(cfg, TokenServiceDefinition, this.channel);\n    this.o_auth = this.createClient(cfg, OAuthServiceDefinition, this.channel);\n  }\n\n}\n", "import type KoaRouter from 'koa-router';\nimport { readFile } from 'node:fs';\nimport { resolve as resolvePath } from 'node:path';\nimport * as jose from 'jose';\nimport Router from 'koa-router';\nimport { koaBody as bodyParser } from 'koa-body';\nimport hbs from 'handlebars';\nimport {\n  RegisterRequest,\n  type User,\n  UserType\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/user.js';\nimport { type IdentityContext } from '../interfaces.js';\nimport { type IdentitySrvGrpcClient } from '../grpc/index.js';\nimport { marshallProtobufAny } from '../oidc/utils.js';\nimport { randomUUID } from 'node:crypto';\n\nconst upsertUserToken = async (ids: IdentitySrvGrpcClient, accountId: string | undefined): Promise<string> => {\n  const token = new jose.UnsecuredJWT({})\n    .setIssuedAt()\n    .setExpirationTime('30d')\n    .encode();\n\n  // 1 Month\n  const expiresIn = new Date(Date.now() + (1000 * 60 * 60 * 24 * 30));\n\n  await ids.token.upsert({\n    id: randomUUID().replace(/-/g, ''),\n    type: 'access_token',\n    expiresIn,\n    payload: marshallProtobufAny({\n      accountId,\n      exp: expiresIn.getTime(),\n      jti: token\n    })\n  });\n\n  return token;\n};\n\nlet layoutHbs: HandlebarsTemplateDelegate;\nexport const layout = async (context: { body: string; title: string }) => {\n  if (!layoutHbs) {\n    const layoutTpl = await new Promise<string>((resolve, reject) => {\n      readFile(resolvePath(__dirname, 'views/layout.hbs'), (err, data) => err ? reject(err) : resolve(data.toString()));\n    });\n    layoutHbs = hbs.compile(layoutTpl);\n  }\n  return layoutHbs(context);\n};\n\nlet registerHbs: HandlebarsTemplateDelegate;\nexport const register = async (email: string) => {\n  if (!registerHbs) {\n    const registerTpl = await new Promise<string>((resolve, reject) => {\n      readFile(resolvePath(__dirname, 'views/register.hbs'), (err, data) => err ? reject(err) : resolve(data.toString()));\n    });\n    registerHbs = hbs.compile(registerTpl);\n  }\n\n  return layout({\n    title: 'Register',\n    body: registerHbs({email})\n  });\n};\n\nlet loginHbs: HandlebarsTemplateDelegate;\nexport const login = async (links: any) => {\n  if (!loginHbs) {\n    const loginTpl = await new Promise<string>((resolve, reject) => {\n      readFile(resolvePath(__dirname, 'views/login.hbs'), (err, data) => err ? reject(err) : resolve(data.toString()));\n    });\n    loginHbs = hbs.compile(loginTpl);\n  }\n\n  return layout({\n    title: 'Login',\n    body: loginHbs({links})\n  });\n};\n\nlet accountHbs: HandlebarsTemplateDelegate;\nexport const account = async (user: User) => {\n  if (!accountHbs) {\n    const accountTpl = await new Promise<string>((resolve, reject) => {\n      readFile(resolvePath(__dirname, 'views/account.hbs'), (err, data) => err ? reject(err) : resolve(data.toString()));\n    });\n    accountHbs = hbs.compile(accountTpl);\n  }\n\n  return layout({\n    title: 'Account',\n    body: accountHbs({user})\n  });\n};\n\n\nexport const createOAuth = (): KoaRouter<{}, IdentityContext> => {\n  const router = new Router() as KoaRouter<{}, IdentityContext>;\n\n  router.use(bodyParser({multipart: true}));\n\n  router.get('/oauth2-login', async (ctx, next) => {\n    ctx.type = 'html';\n    ctx.body = await login((await ctx.identitySrvClient.oauth.generateLinks({})).links);\n    return next();\n  });\n\n  router.get('/oauth2-logout', async (ctx, next) => {\n    ctx.cookies.set('token', undefined);\n    ctx.status = 303;\n    ctx.redirect('/oauth2-login');\n    ctx.body = 'Redirecting to login page';\n    return next();\n  });\n\n  router.get('/oauth2-urls', async (ctx, next) => {\n    ctx.body = (await ctx.identitySrvClient.oauth.generateLinks({})).links;\n    return next();\n  });\n\n  router.get('/oauth2-account', async (ctx, next) => {\n    const token = ctx.cookies.get('token');\n    if (!token) {\n      ctx.body = 'user not logged in';\n      return next();\n    }\n\n    const ids = ctx.identitySrvClient as IdentitySrvGrpcClient;\n\n    const user = await ids.user.findByToken({\n      token\n    });\n\n    if (!user?.payload) {\n      ctx.body = 'user not logged in';\n      return next();\n    }\n\n    ctx.type = 'html';\n    ctx.body = await account(user.payload);\n    return next();\n  });\n\n  router.post('/oauth2-register', async (ctx, next) => {\n    const ids = ctx.identitySrvClient as IdentitySrvGrpcClient;\n    const body: any = ctx.request.body;\n\n    const user = await ids.user.register(RegisterRequest.fromPartial({\n      email: body.email,\n      name: body.username,\n      firstName: body.first_name,\n      lastName: body.last_name,\n      password: body.password,\n      userType: UserType.INDIVIDUAL_USER,\n      guest: false,\n    }));\n\n    if (user.payload) {\n      const token = await upsertUserToken(ids, user.payload.id);\n      ctx.cookies.set('token', token);\n\n      ctx.status = 303;\n      ctx.redirect('/oauth2-account');\n      ctx.body = 'Redirecting to account page';\n      return next();\n    }\n\n    if (user.status) {\n      ctx.body = user.status.message;\n    }\n\n    return next();\n  });\n\n  router.get('/oauth2/:service', async (ctx, next) => {\n    const ids = ctx.identitySrvClient as IdentitySrvGrpcClient;\n    const user = await ids.o_auth.exchangeCode({\n      service: ctx.params.service,\n      code: ctx.request.query.code?.toString(),\n      state: ctx.request.query.state?.toString()\n    });\n\n    if (!user.user || !user.user.payload || !user.token || user.user.status?.code !== 200) {\n      ctx.type = 'html';\n      ctx.body = await register(user.email || '');\n      return next();\n    }\n\n    ctx.cookies.set('token', user.token.token);\n\n    ctx.status = 303;\n    ctx.redirect('/oauth2-account');\n    ctx.body = 'Redirecting to account page';\n    return next();\n  });\n\n  return router;\n};\n", "import { protoMetadata as metaPackageIoRestorecommerceOrdering } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/order.js';\nimport { type ProtoMetadata, registerPackagesRecursive } from '../../../gql/protos/index.js';\nimport { registerProtoMeta } from '@restorecommerce/kafka-client';\n\nexport const subServices: ProtoMetadata[] = [\n  metaPackageIoRestorecommerceOrdering\n];\n\nexport const registerTypings = () => {\n  registerPackagesRecursive(...subServices);\n  registerProtoMeta(...subServices);\n};\n", "import { type OrderingSrvGrpcClient } from './grpc/index.js';\nimport { type ServiceConfig } from '../../gql/protos/index.js';\nimport { type FacadeModule, type FacadeContext } from '../../interfaces.js';\n\nexport interface OrderingServiceConfig extends ServiceConfig {\n  root: boolean;\n}\n\nexport interface OrderingConfig {\n  config: OrderingServiceConfig;\n}\n\nexport interface OrderingContext extends FacadeContext {\n  ordering: {\n    client: OrderingSrvGrpcClient;\n  };\n}\n\nexport type OrderingModule = FacadeModule<OrderingContext>;\n\nexport const namespace = 'ordering';\n", "import { registerTypings, subServices } from './types.js';\nimport { generateSubServiceSchemas } from '../../../gql/protos/index.js';\nimport { namespace, type OrderingServiceConfig } from '../interfaces.js';\n\nregisterTypings();\n\nexport const schema = (cfg: OrderingServiceConfig) => generateSubServiceSchemas(subServices, cfg, namespace, 'Ordering');\n", "import { schema } from './schema.js';\nimport { namespace, type OrderingServiceConfig } from '../interfaces.js';\nimport { buildFederatedSubscriptionSchema } from '../../../gql/protos/index.js';\nimport { subServices } from './types.js';\n\nexport const FederatedOrderingSchema = (cfg: OrderingServiceConfig) => buildFederatedSubscriptionSchema(subServices, cfg, namespace, schema(cfg));\n", "import { RestoreCommerceGrpcClient } from '@restorecommerce/rc-grpc-clients';\nimport {\n  type OrderServiceClient,\n  OrderServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/order.js';\nimport { type GrpcClientConfig } from '@restorecommerce/grpc-client';\n\nexport class OrderingSrvGrpcClient extends RestoreCommerceGrpcClient {\n\n  readonly order: OrderServiceClient;\n\n  constructor(address: string, cfg: GrpcClientConfig) {\n    super(address, cfg);\n\n    this.order = this.createClient(cfg, OrderServiceDefinition, this.channel);\n  }\n\n}\n", "import { FederatedOrderingSchema } from './gql/federation.js';\nimport { namespace, type OrderingConfig, type OrderingModule } from './interfaces.js';\nimport { OrderingSrvGrpcClient } from './grpc/index.js';\nimport { createFacadeModuleFactory } from '../../utils.js';\n\nexport const orderingModule = createFacadeModuleFactory<OrderingConfig, OrderingModule>(namespace, (facade, config) => {\n  const ordering = {\n    client: new OrderingSrvGrpcClient(config.config.client.address, {\n      ...config.config.client,\n      logger: facade.logger,\n    })\n  };\n\n  facade.addApolloService({\n    name: namespace,\n    schema: FederatedOrderingSchema(config.config)\n  });\n\n  facade.koa.use(async (ctx, next) => {\n    ctx.ordering = ordering;\n    await next();\n  });\n});\n", "import { protoMetadata as metaPackageIoRestorecommercePayment } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/payment.js';\nimport { type ProtoMetadata, registerPackagesRecursive } from '../../../gql/protos/index.js';\nimport { registerProtoMeta } from '@restorecommerce/kafka-client';\n\nexport const subServices: ProtoMetadata[] = [\n  metaPackageIoRestorecommercePayment\n];\n\nexport const registerTypings = () => {\n  registerPackagesRecursive(...subServices);\n  registerProtoMeta(...subServices);\n};\n", "import { type PaymentSrvGrpcClient } from './grpc/index.js';\nimport { type ServiceConfig } from '../../gql/protos/index.js';\nimport { type FacadeModule, type FacadeContext } from '../../interfaces.js';\n\nexport interface PaymentServiceConfig extends ServiceConfig {\n  root: boolean;\n}\n\nexport interface PaymentConfig {\n  config: PaymentServiceConfig;\n}\n\nexport interface PaymentContext extends FacadeContext {\n  payment: {\n    client: PaymentSrvGrpcClient;\n  };\n}\n\nexport type PaymentModule = FacadeModule<PaymentContext>;\n\nexport const namespace = 'payment';\n", "import { registerTypings, subServices } from './types.js';\nimport { generateSubServiceSchemas } from '../../../gql/protos/index.js';\nimport { namespace, type PaymentServiceConfig } from '../interfaces.js';\n\nregisterTypings();\n\nexport const schema = (cfg: PaymentServiceConfig) => generateSubServiceSchemas(subServices, cfg, namespace, 'Payment');\n", "import { schema } from './schema.js';\nimport { buildFederatedSubscriptionSchema } from '../../../gql/protos/index.js';\nimport { namespace, type PaymentServiceConfig } from '../interfaces.js';\nimport { subServices } from './types.js';\n\nexport const FederatedPaymentSchema = (cfg: PaymentServiceConfig) => buildFederatedSubscriptionSchema(subServices, cfg, namespace, schema(cfg));\n", "import { RestoreCommerceGrpcClient } from '@restorecommerce/rc-grpc-clients';\nimport {\n  type PaymentServiceClient,\n  PaymentServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/payment.js';\nimport { type GrpcClientConfig } from '@restorecommerce/grpc-client';\n\nexport class PaymentSrvGrpcClient extends RestoreCommerceGrpcClient {\n\n  readonly service: PaymentServiceClient;\n\n  constructor(address: string, cfg: GrpcClientConfig) {\n    super(address, cfg);\n\n    this.service = this.createClient(cfg, PaymentServiceDefinition, this.channel);\n  }\n\n}\n", "import { FederatedPaymentSchema } from './gql/federation.js';\nimport { namespace, type PaymentConfig, type PaymentModule } from './interfaces.js';\nimport { PaymentSrvGrpcClient } from './grpc/index.js';\nimport { createFacadeModuleFactory } from '../../utils.js';\n\nexport const paymentModule = createFacadeModuleFactory<PaymentConfig, PaymentModule>(namespace, (facade, config) => {\n  const payment = {\n    client: new PaymentSrvGrpcClient(config.config.client.address, {\n      ...config.config.client,\n      logger: facade.logger,\n    })\n  };\n\n  facade.addApolloService({\n    name: namespace,\n    schema: FederatedPaymentSchema(config.config)\n  });\n\n  facade.koa.use(async (ctx, next) => {\n    ctx.payment = payment;\n    await next();\n  });\n});\n", "import { protoMetadata as metaPackageIoRestorecommerceAddress } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/address.js';\nimport { protoMetadata as metaPackageIoRestorecommerceCountry } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/country.js';\nimport { protoMetadata as metaPackageIoRestorecommerceTimezone } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/timezone.js';\nimport { protoMetadata as metaPackageIoRestorecommerceContactPointType } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/contact_point_type.js';\nimport { protoMetadata as metaPackageIoRestorecommerceCustomer } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/customer.js';\nimport { protoMetadata as metaPackageIoRestorecommerceContactPoint } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/contact_point.js';\nimport { protoMetadata as metaPackageIoRestorecommerceCredential } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/credential.js';\nimport { protoMetadata as metaPackageIoRestorecommerceLocale } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/locale.js';\nimport { protoMetadata as metaPackageIoRestorecommerceLocation } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/location.js';\nimport { protoMetadata as metaPackageIoRestorecommerceOrganization } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/organization.js';\nimport { protoMetadata as metaPackageIoRestorecommerceShop } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/shop.js';\nimport { protoMetadata as metaPackageIoRestorecommerceTax } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/tax.js';\nimport { protoMetadata as metaPackageIoRestorecommerceTaxType } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/tax_type.js';\nimport { protoMetadata as metaPackageIoRestorecommerceUnitCode } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/unit_code.js';\nimport { protoMetadata as metaPackageIoRestorecommerceTemplate } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/template.js';\nimport { protoMetadata as metaPackageIoRestorecommerceSetting } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/setting.js';\nimport { protoMetadata as metaPackageIoRestorecommerceCommand } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/command.js';\nimport { protoMetadata as metaPackageIoRestorecommerceCurrency } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/currency.js';\nimport { type ProtoMetadata, registerPackagesRecursive } from '../../../gql/protos/index.js';\nimport { registerProtoMeta } from '@restorecommerce/kafka-client';\n\nexport const subServices: ProtoMetadata[] = [\n  metaPackageIoRestorecommerceAddress,\n  metaPackageIoRestorecommerceCountry,\n  metaPackageIoRestorecommerceTimezone,\n  metaPackageIoRestorecommerceContactPointType,\n  metaPackageIoRestorecommerceCustomer,\n  metaPackageIoRestorecommerceContactPoint,\n  metaPackageIoRestorecommerceCredential,\n  metaPackageIoRestorecommerceLocale,\n  metaPackageIoRestorecommerceLocation,\n  metaPackageIoRestorecommerceOrganization,\n  metaPackageIoRestorecommerceShop,\n  metaPackageIoRestorecommerceTaxType,\n  metaPackageIoRestorecommerceTax,\n  metaPackageIoRestorecommerceUnitCode,\n  metaPackageIoRestorecommerceTemplate,\n  metaPackageIoRestorecommerceSetting,\n  metaPackageIoRestorecommerceCommand,\n  metaPackageIoRestorecommerceCurrency\n];\n\nexport const registerTypings = () => {\n  registerPackagesRecursive(...subServices);\n  registerProtoMeta(...subServices);\n};\n", "import { type ResourceSrvGrpcClient } from './grpc/index.js';\nimport { type ServiceConfig } from '../../gql/protos/index.js';\nimport { type FacadeModule, type FacadeContext } from '../../interfaces.js';\n\nexport interface ResourceServiceConfig extends ServiceConfig {\n  root: boolean;\n}\n\nexport interface ResourceConfig {\n  config: ResourceServiceConfig;\n}\n\nexport interface ResourceContext extends FacadeContext {\n  master_data: {\n    client: ResourceSrvGrpcClient;\n  };\n}\n\nexport type ResourceModule = FacadeModule<ResourceContext>;\n\nexport const namespace = 'master_data';\n", "import { registerTypings, subServices } from './types.js';\nimport { generateSubServiceSchemas } from '../../../gql/protos/index.js';\nimport { namespace, type ResourceServiceConfig } from '../interfaces.js';\n\nregisterTypings();\n\nexport const schema = (cfg: ResourceServiceConfig) => generateSubServiceSchemas(subServices, cfg, namespace, 'Resource');\n", "import { schema } from './schema.js';\nimport { namespace, type ResourceServiceConfig } from '../interfaces.js';\nimport { buildFederatedSubscriptionSchema } from '../../../gql/protos/index.js';\nimport { subServices } from './types.js';\n\nexport const FederatedResourceSchema = (cfg: ResourceServiceConfig) => buildFederatedSubscriptionSchema(subServices, cfg, namespace, schema(cfg));\n", "import { RestoreCommerceGrpcClient } from '@restorecommerce/rc-grpc-clients';\nimport {\n  type AddressServiceClient,\n  AddressServiceDefinition,\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/address.js';\nimport {\n  type CountryServiceClient,\n  CountryServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/country.js';\nimport {\n  type TimezoneServiceClient,\n  TimezoneServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/timezone.js';\nimport {\n  type ContactPointTypeServiceClient,\n  ContactPointTypeServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/contact_point_type.js';\nimport {\n  type CustomerServiceClient,\n  CustomerServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/customer.js';\nimport {\n  type ContactPointServiceClient,\n  ContactPointServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/contact_point.js';\nimport {\n  type LocaleServiceClient,\n  LocaleServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/locale.js';\nimport {\n  type LocationServiceClient,\n  LocationServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/location.js';\nimport {\n  type OrganizationServiceClient,\n  OrganizationServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/organization.js';\nimport {\n  type ShopServiceClient,\n  ShopServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/shop.js';\nimport {\n  type TaxServiceClient,\n  TaxServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/tax.js';\nimport {\n  type TaxTypeServiceClient,\n  TaxTypeServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/tax_type.js';\nimport {\n  type UnitCodeServiceClient,\n  UnitCodeServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/unit_code.js';\nimport {\n  type TemplateServiceClient,\n  TemplateServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/template.js';\nimport {\n  type CredentialServiceClient,\n  CredentialServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/credential.js';\nimport {\n  type CurrencyServiceClient,\n  CurrencyServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/currency.js';\nimport {\n  type SettingServiceClient,\n  SettingServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/setting.js';\nimport {\n  CommandServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/command.js';\nimport { type GrpcClientConfig } from '@restorecommerce/grpc-client';\n\nexport class ResourceSrvGrpcClient extends RestoreCommerceGrpcClient {\n  readonly address: AddressServiceClient;\n  readonly country: CountryServiceClient;\n  readonly timezone: TimezoneServiceClient;\n  readonly contact_point_type: ContactPointTypeServiceClient;\n  readonly customer: CustomerServiceClient;\n  readonly credential: CredentialServiceClient;\n  readonly currency: CurrencyServiceClient;\n  readonly contact_point: ContactPointServiceClient;\n  readonly locale: LocaleServiceClient;\n  readonly location: LocationServiceClient;\n  readonly organization: OrganizationServiceClient;\n  readonly shop: ShopServiceClient;\n  readonly tax: TaxServiceClient;\n  readonly tax_type: TaxTypeServiceClient;\n  readonly unit_code: UnitCodeServiceClient;\n  readonly template: TemplateServiceClient;\n  readonly setting: SettingServiceClient;\n  readonly command: any = undefined;\n\n  constructor(address: string, cfg: GrpcClientConfig) {\n    super(address, cfg);\n\n    this.address = this.createClient(cfg, AddressServiceDefinition, this.channel);\n    this.country = this.createClient(cfg, CountryServiceDefinition, this.channel);\n    this.timezone = this.createClient(cfg, TimezoneServiceDefinition, this.channel);\n    this.contact_point_type = this.createClient(cfg, ContactPointTypeServiceDefinition, this.channel);\n    this.customer = this.createClient(cfg, CustomerServiceDefinition, this.channel);\n    this.contact_point = this.createClient(cfg, ContactPointServiceDefinition, this.channel);\n    this.locale = this.createClient(cfg, LocaleServiceDefinition, this.channel);\n    this.location = this.createClient(cfg, LocationServiceDefinition, this.channel);\n    this.organization = this.createClient(cfg, OrganizationServiceDefinition, this.channel);\n    this.shop = this.createClient(cfg, ShopServiceDefinition, this.channel);\n    this.tax = this.createClient(cfg, TaxServiceDefinition, this.channel);\n    this.tax_type = this.createClient(cfg, TaxTypeServiceDefinition, this.channel);\n    this.unit_code = this.createClient(cfg, UnitCodeServiceDefinition, this.channel);\n    this.template = this.createClient(cfg, TemplateServiceDefinition, this.channel);\n    this.credential = this.createClient(cfg, CredentialServiceDefinition, this.channel);\n    this.currency = this.createClient(cfg, CurrencyServiceDefinition, this.channel);\n    this.setting = this.createClient(cfg, SettingServiceDefinition, this.channel);\n    this.command = this.createClient(cfg, CommandServiceDefinition, this.channel);\n  }\n\n}\n", "import { FederatedResourceSchema } from './gql/federation.js';\nimport { namespace, type ResourceConfig, type ResourceModule } from './interfaces.js';\nimport { ResourceSrvGrpcClient } from './grpc/index.js';\nimport { createFacadeModuleFactory } from '../../utils.js';\n\nexport const resourceModule = createFacadeModuleFactory<ResourceConfig, ResourceModule>(namespace, (facade, config) => {\n  const resource = {\n    client: new ResourceSrvGrpcClient(\n      config.config.client.address,\n      {\n        ...config.config.client,\n        logger: facade.logger,\n      }\n    )\n  };\n\n  facade.addApolloService({\n    name: namespace,\n    schema: FederatedResourceSchema(config.config)\n  });\n\n  facade.koa.use(async (ctx, next) => {\n    ctx.master_data = resource;\n    await next();\n  });\n});\n", "import { protoMetadata as metaPackageIoRestorecommerceProduct } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/product.js';\nimport { protoMetadata as metaPackageIoRestorecommerceProduct_prototype } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/product_prototype.js';\nimport { protoMetadata as metaPackageIoRestorecommerceProduct_category } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/product_category.js';\nimport { protoMetadata as metaPackageIoRestorecommercePrice_group } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/price_group.js';\nimport { protoMetadata as metaPackageIoRestorecommerceManufacturer } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/manufacturer.js';\nimport { type ProtoMetadata, registerPackagesRecursive } from '../../../gql/protos/index.js';\nimport { registerProtoMeta } from '@restorecommerce/kafka-client';\n\nexport const subServices: ProtoMetadata[] = [\n  metaPackageIoRestorecommerceProduct,\n  metaPackageIoRestorecommerceProduct_prototype,\n  metaPackageIoRestorecommerceProduct_category,\n  metaPackageIoRestorecommercePrice_group,\n  metaPackageIoRestorecommerceManufacturer\n];\n\nexport const registerTypings = () => {\n  registerPackagesRecursive(...subServices);\n  registerProtoMeta(...subServices);\n};\n", "import { type CatalogSrvGrpcClient } from './grpc/index.js';\nimport { type ServiceConfig } from '../../gql/protos/index.js';\nimport { type FacadeModule, type FacadeContext } from '../../interfaces.js';\n\nexport interface CatalogServiceConfig extends ServiceConfig {\n  root: boolean;\n}\n\nexport interface CatalogConfig {\n  config: CatalogServiceConfig;\n}\n\nexport interface CatalogContext extends FacadeContext {\n  catalog: {\n    client: CatalogSrvGrpcClient;\n  };\n}\n\nexport type CatalogModule = FacadeModule<CatalogContext>;\n\nexport const namespace = 'catalog';\n", "import { registerTypings, subServices } from './types.js';\nimport { generateSubServiceSchemas } from '../../../gql/protos/index.js';\nimport { namespace, type CatalogServiceConfig } from '../interfaces.js';\n\nregisterTypings();\n\nexport const schema = (cfg: CatalogServiceConfig) => generateSubServiceSchemas(subServices, cfg, namespace, 'Catalog');\n", "import { schema } from './schema.js';\nimport { type CatalogServiceConfig, namespace } from '../interfaces.js';\nimport { buildFederatedSubscriptionSchema } from '../../../gql/protos/index.js';\nimport { subServices } from './types.js';\n\nexport const FederatedCatalogSchema = (cfg: CatalogServiceConfig) => buildFederatedSubscriptionSchema(subServices, cfg, namespace, schema(cfg));\n", "import { RestoreCommerceGrpcClient } from '@restorecommerce/rc-grpc-clients';\nimport {\n  type ProductServiceClient,\n  ProductServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/product.js';\nimport {\n  type ProductPrototypeServiceClient,\n  ProductPrototypeServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/product_prototype.js';\nimport {\n  type ProductCategoryServiceClient,\n  ProductCategoryServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/product_category.js';\nimport {\n  type PriceGroupServiceClient,\n  PriceGroupServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/price_group.js';\nimport {\n  type ManufacturerServiceClient,\n  ManufacturerServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/manufacturer.js';\nimport { type GrpcClientConfig } from '@restorecommerce/grpc-client';\n\nexport class CatalogSrvGrpcClient extends RestoreCommerceGrpcClient {\n\n  readonly product: ProductServiceClient;\n  readonly product_prototype: ProductPrototypeServiceClient;\n  readonly product_category: ProductCategoryServiceClient;\n  readonly price_group: PriceGroupServiceClient;\n  readonly manufacturer: ManufacturerServiceClient;\n\n  constructor(address: string, cfg: GrpcClientConfig) {\n    super(address, cfg);\n\n    this.product = this.createClient(cfg, ProductServiceDefinition, this.channel);\n    this.product_prototype = this.createClient(cfg, ProductPrototypeServiceDefinition, this.channel);\n    this.product_category = this.createClient(cfg, ProductCategoryServiceDefinition, this.channel);\n    this.price_group = this.createClient(cfg, PriceGroupServiceDefinition, this.channel);\n    this.manufacturer = this.createClient(cfg, ManufacturerServiceDefinition, this.channel);\n  }\n\n}\n", "import { FederatedCatalogSchema } from './gql/federation.js';\nimport { namespace, type CatalogConfig, type CatalogModule } from './interfaces.js';\nimport { CatalogSrvGrpcClient } from './grpc/index.js';\nimport { createFacadeModuleFactory } from '../../utils.js';\n\nexport const catalogModule = createFacadeModuleFactory<CatalogConfig, CatalogModule>(namespace, (facade, config) => {\n  const catalog = {\n    client: new CatalogSrvGrpcClient(config.config.client.address, {\n      ...config.config.client,\n      logger: facade.logger,\n    })\n  };\n\n  facade.addApolloService({\n    name: namespace,\n    schema: FederatedCatalogSchema(config.config)\n  });\n\n  facade.koa.use(async (ctx, next) => {\n    ctx.catalog = catalog;\n    await next();\n  });\n});\n", "import { protoMetadata as metaPackageIoRestorecommerceInvoicing } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/invoice.js';\nimport { type ProtoMetadata, registerPackagesRecursive } from '../../../gql/protos/index.js';\nimport { registerProtoMeta } from '@restorecommerce/kafka-client';\n\nexport const subServices: ProtoMetadata[] = [\n  metaPackageIoRestorecommerceInvoicing\n];\n\nexport const registerTypings = () => {\n  registerPackagesRecursive(...subServices);\n  registerProtoMeta(...subServices);\n};\n", "import { type InvoicingSrvGrpcClient } from './grpc/index.js';\nimport { type ServiceConfig } from '../../gql/protos/index.js';\nimport { type FacadeModule, type FacadeContext } from '../../interfaces.js';\n\nexport interface InvoicingServiceConfig extends ServiceConfig {\n  root: boolean;\n}\n\nexport interface InvoicingConfig {\n  config: InvoicingServiceConfig;\n}\n\nexport interface InvoicingContext extends FacadeContext {\n  invoicing: {\n    client: InvoicingSrvGrpcClient;\n  };\n}\n\nexport type InvoicingModule = FacadeModule<InvoicingContext>;\n\nexport const namespace = 'invoicing';\n", "import { registerTypings, subServices } from './types.js';\nimport { generateSubServiceSchemas } from '../../../gql/protos/index.js';\nimport { namespace, type InvoicingServiceConfig } from '../interfaces.js';\n\nregisterTypings();\n\nexport const schema = (cfg: InvoicingServiceConfig) => generateSubServiceSchemas(subServices, cfg, namespace, 'Invoicing');\n", "import { schema } from './schema.js';\nimport { namespace, type InvoicingServiceConfig } from '../interfaces.js';\nimport { buildFederatedSubscriptionSchema } from '../../../gql/protos/index.js';\nimport { subServices } from './types.js';\n\nexport const FederatedInvoicingSchema = (cfg: InvoicingServiceConfig) => buildFederatedSubscriptionSchema(subServices, cfg, namespace, schema(cfg));\n", "import { RestoreCommerceGrpcClient } from '@restorecommerce/rc-grpc-clients';\nimport {\n  type InvoiceServiceClient,\n  InvoiceServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/invoice.js';\nimport { type GrpcClientConfig } from '@restorecommerce/grpc-client';\n\nexport class InvoicingSrvGrpcClient extends RestoreCommerceGrpcClient {\n\n  readonly invoice: InvoiceServiceClient;\n\n  constructor(address: string, cfg: GrpcClientConfig) {\n    super(address, cfg);\n\n    this.invoice = this.createClient(cfg, InvoiceServiceDefinition, this.channel);\n  }\n\n}\n", "import { FederatedInvoicingSchema } from './gql/federation.js';\nimport { namespace, type InvoicingConfig, type InvoicingModule } from './interfaces.js';\nimport { InvoicingSrvGrpcClient } from './grpc/index.js';\nimport { createFacadeModuleFactory } from '../../utils.js';\n\nexport const invoicingModule = createFacadeModuleFactory<InvoicingConfig, InvoicingModule>(namespace, (facade, config) => {\n  const invoicing = {\n    client: new InvoicingSrvGrpcClient(config.config.client.address, {\n      ...config.config.client,\n      logger: facade.logger,\n    })\n  };\n\n  facade.addApolloService({\n    name: namespace,\n    schema: FederatedInvoicingSchema(config.config)\n  });\n\n  facade.koa.use(async (ctx, next) => {\n    ctx.invoicing = invoicing;\n    await next();\n  });\n});\n", "import { protoMetadata as metaPackageIoRestorecommerceFulfillment } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/fulfillment.js';\nimport { protoMetadata as metaPackageIoRestorecommerceFulfillmentCourier } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/fulfillment_courier.js';\nimport { protoMetadata as metaPackageIoRestorecommerceFulfillmentProduct } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/fulfillment_product.js';\nimport { type ProtoMetadata, registerPackagesRecursive } from '../../../gql/protos/index.js';\nimport { registerProtoMeta } from '@restorecommerce/kafka-client';\n\nexport const subServices: ProtoMetadata[] = [\n  metaPackageIoRestorecommerceFulfillment,\n  metaPackageIoRestorecommerceFulfillmentCourier,\n  metaPackageIoRestorecommerceFulfillmentProduct\n];\n\nexport const registerTypings = () => {\n  registerPackagesRecursive(...subServices);\n  registerProtoMeta(...subServices);\n};\n", "import { type FulfillmentSrvGrpcClient } from './grpc/index.js';\nimport { type ServiceConfig } from '../../gql/protos/index.js';\nimport { type FacadeModule, type FacadeContext } from '../../interfaces.js';\n\nexport interface FulfillmentServiceConfig extends ServiceConfig {\n  root: boolean;\n}\n\nexport interface FulfillmentConfig {\n  config: FulfillmentServiceConfig;\n}\n\nexport interface FulfillmentContext extends FacadeContext {\n  access_control: {\n    client: FulfillmentSrvGrpcClient;\n  };\n}\n\nexport type FulfillmentModule = FacadeModule<FulfillmentContext>;\n\nexport const namespace = 'fulfillment';\n", "import { registerTypings, subServices } from './types.js';\nimport { generateSubServiceSchemas } from '../../../gql/protos/index.js';\nimport { namespace, type FulfillmentServiceConfig } from '../interfaces.js';\n\nregisterTypings();\n\nexport const schema = (cfg: FulfillmentServiceConfig) => generateSubServiceSchemas(subServices, cfg, namespace, 'Fulfillment');\n", "import { schema } from './schema.js';\nimport { type FulfillmentServiceConfig, namespace } from '../interfaces.js';\nimport { buildFederatedSubscriptionSchema } from '../../../gql/protos/index.js';\nimport { subServices } from './types.js';\n\nexport const FederatedFulfillmentSchema = (cfg: FulfillmentServiceConfig) => buildFederatedSubscriptionSchema(subServices, cfg, namespace, schema(cfg));\n", "import { RestoreCommerceGrpcClient } from '@restorecommerce/rc-grpc-clients';\nimport {\n  type FulfillmentServiceClient,\n  FulfillmentServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/fulfillment.js';\nimport {\n  type FulfillmentCourierServiceClient,\n  FulfillmentCourierServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/fulfillment_courier.js';\nimport {\n  type FulfillmentProductServiceClient,\n  FulfillmentProductServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/fulfillment_product.js';\nimport { type GrpcClientConfig } from '@restorecommerce/grpc-client';\n\nexport class FulfillmentSrvGrpcClient extends RestoreCommerceGrpcClient {\n\n  readonly fulfillment: FulfillmentServiceClient;\n  readonly fulfillment_courier: FulfillmentCourierServiceClient;\n  readonly fulfillment_product: FulfillmentProductServiceClient;\n\n  constructor(address: string, cfg: GrpcClientConfig) {\n    super(address, cfg);\n\n    this.fulfillment = this.createClient(cfg, FulfillmentServiceDefinition, this.channel);\n    this.fulfillment_courier = this.createClient(cfg, FulfillmentCourierServiceDefinition, this.channel);\n    this.fulfillment_product = this.createClient(cfg, FulfillmentProductServiceDefinition, this.channel);\n  }\n\n}\n", "import { FederatedFulfillmentSchema } from './gql/federation.js';\nimport { namespace, type FulfillmentConfig, type FulfillmentModule } from './interfaces.js';\nimport { FulfillmentSrvGrpcClient } from './grpc/index.js';\nimport { createFacadeModuleFactory } from '../../utils.js';\n\nexport const fulfillmentModule = createFacadeModuleFactory<FulfillmentConfig, FulfillmentModule>(namespace, (facade, config) => {\n  const fulfillment = {\n    client: new FulfillmentSrvGrpcClient(config.config.client.address, {\n      ...config.config.client,\n      logger: facade.logger,\n    })\n  };\n\n  facade.addApolloService({\n    name: namespace,\n    schema: FederatedFulfillmentSchema(config.config)\n  });\n\n  facade.koa.use(async (ctx, next) => {\n    ctx.fulfillment = fulfillment;\n    await next();\n  });\n});\n", "import { protoMetadata } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/search.js';\nimport { type ProtoMetadata, registerPackagesRecursive } from '../../../gql/protos/index.js';\nimport { registerProtoMeta } from '@restorecommerce/kafka-client';\n\nexport const subServices: ProtoMetadata[] = [\n  protoMetadata\n];\n\nexport const registerTypings = () => {\n  registerPackagesRecursive(...subServices);\n  registerProtoMeta(...subServices);\n};\n", "import { type IndexingSrvGrpcClient } from './grpc/index.js';\nimport { type SubSpaceServiceConfig } from '../../gql/protos/index.js';\nimport { type FacadeModule, type FacadeContext } from '../../interfaces.js';\n\nexport interface IndexingConfig {\n  config: SubSpaceServiceConfig;\n}\n\nexport interface IndexingContext extends FacadeContext {\n  indexing: {\n    client: IndexingSrvGrpcClient;\n  };\n}\n\nexport type IndexingModule = FacadeModule<IndexingContext>;\n\nexport const namespace = 'indexing';\n", "import { registerTypings, subServices } from './types.js';\nimport { generateSubServiceSchemas, type SubSpaceServiceConfig } from '../../../gql/protos/index.js';\nimport { namespace } from '../interfaces.js';\n\nregisterTypings();\n\nexport const schema = (cfg: SubSpaceServiceConfig) => generateSubServiceSchemas(subServices, cfg, namespace, 'Indexing');\n", "import { protoMetadata as metaPackageIoRestorecommercePolicy } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/policy.js';\nimport { protoMetadata as metaPackageIoRestorecommerceRule } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/rule.js';\nimport { protoMetadata as metaPackageIoRestorecommercePolicy_set } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/policy_set.js';\nimport { protoMetadata as metaPackageIoRestorecommerceAccess_control } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/access_control.js';\nimport { type ProtoMetadata, registerPackagesRecursive } from '../../../gql/protos/index.js';\nimport { registerProtoMeta } from '@restorecommerce/kafka-client';\n\nexport const subServices: ProtoMetadata[] = [\n  metaPackageIoRestorecommerceAccess_control,\n  metaPackageIoRestorecommercePolicy,\n  metaPackageIoRestorecommerceRule,\n  metaPackageIoRestorecommercePolicy_set\n];\n\nexport const registerTypings = () => {\n  registerPackagesRecursive(...subServices);\n  registerProtoMeta(...subServices);\n};\n", "import { schema } from './schema.js';\nimport {\n  buildFederatedSubscriptionSchema,\n  type SubSpaceServiceConfig\n} from '../../../gql/protos/index.js';\nimport { namespace } from '../interfaces.js';\nimport { subServices } from '../../access-control/gql/types.js';\n\nexport const FederatedIndexingSchema = (cfg: SubSpaceServiceConfig) => buildFederatedSubscriptionSchema(subServices, cfg, namespace, schema(cfg));\n", "import { RestoreCommerceGrpcClient } from '@restorecommerce/rc-grpc-clients';\nimport {\n  type SearchServiceClient,\n  SearchServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/search.js';\nimport { type GrpcClientConfig } from '@restorecommerce/grpc-client';\n\nexport class IndexingSrvGrpcClient extends RestoreCommerceGrpcClient {\n\n  readonly search: SearchServiceClient;\n\n  constructor(address: string, cfg: GrpcClientConfig) {\n    super(address, cfg);\n\n    this.search = this.createClient(cfg, SearchServiceDefinition, this.channel);\n  }\n\n}\n", "import { FederatedIndexingSchema } from './gql/federation.js';\nimport { namespace, type IndexingConfig, type IndexingModule } from './interfaces.js';\nimport { IndexingSrvGrpcClient } from './grpc/index.js';\nimport { createFacadeModuleFactory } from '../../utils.js';\n\nexport const indexingModule = createFacadeModuleFactory<IndexingConfig, IndexingModule>(namespace, (facade, config) => {\n  const indexing = {\n    client: new IndexingSrvGrpcClient(config.config.client.address, {\n      ...config.config.client,\n      logger: facade.logger,\n    })\n  };\n\n  facade.addApolloService({\n    name: namespace,\n    schema: FederatedIndexingSchema(config.config)\n  });\n\n  facade.koa.use(async (ctx, next) => {\n    ctx.indexing = indexing;\n    await next();\n  });\n});\n", "import { protoMetadata as metaPackageIoRestorecommerceScheduling } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/job.js';\nimport { type ProtoMetadata, registerPackagesRecursive } from '../../../gql/protos/index.js';\nimport { registerProtoMeta } from '@restorecommerce/kafka-client';\n\nexport const subServices: ProtoMetadata[] = [\n  metaPackageIoRestorecommerceScheduling\n];\n\nexport const registerTypings = () => {\n  registerPackagesRecursive(...subServices);\n  registerProtoMeta(...subServices);\n};\n", "import { type SchedulingSrvGrpcClient } from './grpc/index.js';\nimport { type ServiceConfig } from '../../gql/protos/index.js';\nimport { type FacadeModule, type FacadeContext } from '../../interfaces.js';\n\nexport interface SchedulingServiceConfig extends ServiceConfig {\n  root: boolean;\n}\n\nexport interface SchedulingConfig {\n  config: SchedulingServiceConfig;\n}\n\nexport interface SchedulingContext extends FacadeContext {\n  scheduling: {\n    client: SchedulingSrvGrpcClient;\n  };\n}\n\nexport type SchedulingModule = FacadeModule<SchedulingContext>;\n\nexport const namespace = 'scheduling';\n", "import { registerTypings, subServices } from './types.js';\nimport { generateSubServiceSchemas,  } from '../../../gql/protos/index.js';\nimport { namespace, type SchedulingServiceConfig } from '../interfaces.js';\n\nregisterTypings();\n\nexport const schema = (cfg: SchedulingServiceConfig) => generateSubServiceSchemas(subServices, cfg, namespace, 'Scheduling');\n", "import { schema } from './schema.js';\nimport { namespace, type SchedulingServiceConfig } from '../interfaces.js';\nimport { buildFederatedSubscriptionSchema } from '../../../gql/protos/index.js';\nimport { subServices } from './types.js';\n\nexport const FederatedSchedulingSchema = (cfg: SchedulingServiceConfig) => buildFederatedSubscriptionSchema(subServices, cfg, namespace, schema(cfg));\n", "import { RestoreCommerceGrpcClient } from '@restorecommerce/rc-grpc-clients';\nimport {\n  type JobServiceClient,\n  JobServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/job.js';\nimport { type GrpcClientConfig } from '@restorecommerce/grpc-client';\n\nexport class SchedulingSrvGrpcClient extends RestoreCommerceGrpcClient {\n\n  readonly job: JobServiceClient;\n\n  constructor(address: string, cfg: GrpcClientConfig) {\n    super(address, cfg);\n\n    this.job = this.createClient(cfg, JobServiceDefinition, this.channel);\n  }\n\n}\n", "import { FederatedSchedulingSchema } from './gql/federation.js';\nimport { namespace, type SchedulingConfig, type SchedulingModule } from './interfaces.js';\nimport { SchedulingSrvGrpcClient } from './grpc/index.js';\nimport { createFacadeModuleFactory } from '../../utils.js';\n\nexport const schedulingModule = createFacadeModuleFactory<SchedulingConfig, SchedulingModule>(namespace, (facade, config) => {\n  const scheduling = {\n    client: new SchedulingSrvGrpcClient(config.config.client.address, {\n      ...config.config.client,\n      logger: facade.logger,\n    })\n  };\n\n  facade.addApolloService({\n    name: namespace,\n    schema: FederatedSchedulingSchema(config.config)\n  });\n\n  facade.koa.use(async (ctx, next) => {\n    ctx.scheduling = scheduling;\n    await next();\n  });\n});\n", "import { protoMetadata as metaPackageIoRestorecommerceNotification } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/notification.js';\nimport { type ProtoMetadata, registerPackagesRecursive } from '../../../gql/protos/index.js';\nimport { registerProtoMeta } from '@restorecommerce/kafka-client';\n\nexport const subServices: ProtoMetadata [] = [\n  metaPackageIoRestorecommerceNotification\n];\n\nexport const registerTypings = () => {\n  registerPackagesRecursive(...subServices);\n  registerProtoMeta(...subServices);\n};\n", "import { type NotificationSrvGrpcClient } from './grpc/index.js';\nimport { type ServiceConfig } from '../../gql/protos/index.js';\nimport { type FacadeModule, type FacadeContext } from '../../interfaces.js';\n\nexport interface NotificationServiceConfig extends ServiceConfig {\n  root: boolean;\n}\n\nexport interface NotificationConfig {\n  config: NotificationServiceConfig;\n}\n\nexport interface NotificationContext extends FacadeContext {\n  notification: {\n    client: NotificationSrvGrpcClient;\n  };\n}\n\nexport type NotificationModule = FacadeModule<NotificationContext>;\n\nexport const namespace = 'notification';\n", "import { registerTypings, subServices } from './types.js';\nimport { generateSubServiceSchemas } from '../../../gql/protos/index.js';\nimport { namespace, type NotificationServiceConfig } from '../interfaces.js';\n\nregisterTypings();\n\nexport const schema = (cfg: NotificationServiceConfig) => generateSubServiceSchemas(subServices, cfg, namespace, 'Notification');\n", "import { schema } from './schema.js';\nimport { namespace, type NotificationServiceConfig } from '../interfaces.js';\nimport { buildFederatedSubscriptionSchema } from '../../../gql/protos/index.js';\nimport { subServices } from './types.js';\n\nexport const FederatedNotificationSchema = (cfg: NotificationServiceConfig) => buildFederatedSubscriptionSchema(subServices, cfg, namespace, schema(cfg));\n", "import { RestoreCommerceGrpcClient } from '@restorecommerce/rc-grpc-clients';\nimport {\n  type NotificationServiceClient,\n  NotificationServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/notification.js';\nimport { type GrpcClientConfig } from '@restorecommerce/grpc-client';\n\nexport class NotificationSrvGrpcClient extends RestoreCommerceGrpcClient {\n\n  readonly service: NotificationServiceClient;\n\n  constructor(address: string, cfg: GrpcClientConfig) {\n    super(address, cfg);\n\n    this.service = this.createClient(cfg, NotificationServiceDefinition, this.channel);\n  }\n\n}\n", "import { FederatedNotificationSchema } from './gql/federation.js';\nimport { namespace, type NotificationConfig, type NotificationModule } from './interfaces.js';\nimport { NotificationSrvGrpcClient } from './grpc/index.js';\nimport { createFacadeModuleFactory } from '../../utils.js';\n\nexport const notificationModule = createFacadeModuleFactory<NotificationConfig, NotificationModule>(namespace, (facade, config) => {\n  const notification = {\n    client: new NotificationSrvGrpcClient(config.config.client.address, {\n      ...config.config.client,\n      logger: facade.logger,\n    })\n  };\n\n  facade.addApolloService({\n    name: namespace,\n    schema: FederatedNotificationSchema(config.config)\n  });\n\n  facade.koa.use(async (ctx, next) => {\n    ctx.notification = notification;\n    await next();\n  });\n});\n", "import { type AccessControlSrvGrpcClient } from './grpc/index.js';\nimport { type SubSpaceServiceConfig } from '../../gql/protos/index.js';\nimport { type FacadeModule, type FacadeContext } from '../../interfaces.js';\n\nexport interface AccessControlServiceConfig extends SubSpaceServiceConfig {\n}\n\nexport interface AccessControlConfig {\n  config: AccessControlServiceConfig;\n}\n\nexport interface AccessControlContext extends FacadeContext {\n  access_control: {\n    client: AccessControlSrvGrpcClient;\n  };\n}\n\nexport type AccessControlModule = FacadeModule<AccessControlContext>;\n\nexport const namespace = 'access_control';\n", "import { registerTypings, subServices } from './types.js';\nimport { generateSubServiceSchemas, } from '../../../gql/protos/index.js';\nimport { namespace, type AccessControlServiceConfig } from '../interfaces.js';\n\nregisterTypings();\n\nexport const schema = (cfg: AccessControlServiceConfig) => generateSubServiceSchemas(subServices, cfg, namespace, 'AccessControl');\n\n", "import { schema } from './schema.js';\nimport { type AccessControlServiceConfig, namespace } from '../interfaces.js';\nimport { buildFederatedSubscriptionSchema } from '../../../gql/protos/index.js';\nimport { subServices } from './types.js';\n\nexport const FederatedAccessControlSchema = (cfg: AccessControlServiceConfig) => buildFederatedSubscriptionSchema(subServices, cfg, namespace, schema(cfg));\n", "import { RestoreCommerceGrpcClient } from '@restorecommerce/rc-grpc-clients';\nimport {\n  type AccessControlServiceClient,\n  AccessControlServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/access_control.js';\nimport {\n  type PolicyServiceClient,\n  PolicyServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/policy.js';\nimport {\n  type RuleServiceClient,\n  RuleServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/rule.js';\nimport {\n  type PolicySetServiceClient,\n  PolicySetServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/policy_set.js';\nimport { type GrpcClientConfig } from '@restorecommerce/grpc-client';\n\nexport class AccessControlSrvGrpcClient extends RestoreCommerceGrpcClient {\n\n  readonly access_control: AccessControlServiceClient;\n  readonly policy: PolicyServiceClient;\n  readonly rule: RuleServiceClient;\n  readonly policy_set: PolicySetServiceClient;\n\n  constructor(address: string, cfg: GrpcClientConfig) {\n    super(address, cfg);\n\n    this.access_control = this.createClient(cfg, AccessControlServiceDefinition, this.channel);\n    this.policy = this.createClient(cfg, PolicyServiceDefinition, this.channel);\n    this.rule = this.createClient(cfg, RuleServiceDefinition, this.channel);\n    this.policy_set = this.createClient(cfg, PolicySetServiceDefinition, this.channel);\n  }\n\n}\n", "import { FederatedAccessControlSchema } from './gql/federation.js';\nimport { namespace, type AccessControlConfig, type AccessControlModule } from './interfaces.js';\nimport { AccessControlSrvGrpcClient } from './grpc/index.js';\nimport { createFacadeModuleFactory } from '../../utils.js';\n\nexport const accessControlModule = createFacadeModuleFactory<AccessControlConfig, AccessControlModule>(namespace, (facade, config) => {\n  const accessControl = {\n    client: new AccessControlSrvGrpcClient(config.config.client.address, {\n      ...config.config.client,\n      logger: facade.logger,\n    })\n  };\n\n  facade.addApolloService({\n    name: namespace,\n    schema: FederatedAccessControlSchema(config.config)\n  });\n\n  facade.koa.use(async (ctx, next) => {\n    ctx.access_control = accessControl;\n    await next();\n  });\n});\n", "import { protoMetadata as metaPackageIoRestorecommerceOstorage } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/ostorage.js';\nimport { type ProtoMetadata, registerPackagesRecursive } from '../../../gql/protos/index.js';\nimport { registerProtoMeta } from '@restorecommerce/kafka-client';\n\nexport const subServices: ProtoMetadata[] = [\n  metaPackageIoRestorecommerceOstorage\n];\n\nexport const registerTypings = () => {\n  registerPackagesRecursive(...subServices);\n  registerProtoMeta(...subServices);\n};\n", "import { type OstorageSrvGrpcClient } from './grpc/index.js';\nimport { type FacadeModule, type FacadeContext } from '../../interfaces.js';\nimport { type ServiceConfig } from '../../gql/protos/index.js';\n\nexport interface OstorageServiceConfig extends ServiceConfig {\n  root: boolean;\n  endpoint: string;\n}\n\nexport interface OstorageConfig {\n  config: OstorageServiceConfig;\n}\n\nexport interface OstorageContext extends FacadeContext {\n  ostorage: {\n    client: OstorageSrvGrpcClient;\n  };\n}\n\nexport type OstorageModule = FacadeModule<OstorageContext>;\n\nexport const namespace = 'ostorage';\n", "import { registerTypings, subServices } from './types.js';\nimport { generateSubServiceSchemas,  } from '../../../gql/protos/index.js';\nimport { namespace, type OstorageServiceConfig } from '../interfaces.js';\n\nregisterTypings();\n\nexport const schema = (cfg: OstorageServiceConfig) => generateSubServiceSchemas(subServices, cfg, namespace, 'Ostorage');\n", "import { schema } from './schema.js';\nimport { buildFederatedSubscriptionSchema } from '../../../gql/protos/index.js';\nimport { namespace, type OstorageServiceConfig } from '../interfaces.js';\nimport { subServices } from './types.js';\n\nexport const FederatedOstorageSchema = (cfg: OstorageServiceConfig) => buildFederatedSubscriptionSchema(subServices, cfg, namespace, schema(cfg));\n", "import { RestoreCommerceGrpcClient } from '@restorecommerce/rc-grpc-clients';\nimport {\n  type ObjectServiceClient,\n  ObjectServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/ostorage.js';\nimport { type GrpcClientConfig } from '@restorecommerce/grpc-client';\n\nexport class OstorageSrvGrpcClient extends RestoreCommerceGrpcClient {\n\n  readonly ostorage: ObjectServiceClient;\n\n  constructor(address: string, cfg: GrpcClientConfig) {\n    super(address, cfg);\n\n    this.ostorage = this.createClient(cfg, ObjectServiceDefinition, this.channel);\n  }\n\n}\n", "import { Transform } from 'node:stream';\nimport intoStream from 'into-stream';\nimport pkg from 'lodash';\nimport { createServiceConfig } from '@restorecommerce/service-config';\nimport { createLogger } from '@restorecommerce/logger';\nconst { isEmpty } = pkg;\n\nconst cfg = createServiceConfig(process.cwd());\nconst loggerCfg = cfg.get('logger');\nif (loggerCfg) {\n  loggerCfg.esTransformer = (msg: any) => {\n    msg.fields = JSON.stringify(msg.fields);\n    return msg;\n  };\n}\n\nlet logger = createLogger(loggerCfg);\n\nconst dlQueryParamExist = (ctx: any): boolean => {\n  // check if URL contains query parameter 'dl'\n  let filePath, hostName;\n  if (ctx && ctx.request && ctx.request.url) {\n    filePath = ctx.request.url;\n  }\n  if (ctx && ctx.request && ctx.request.header\n    && ctx.request.header.host) {\n    hostName = ctx.request.header.host;\n  }\n  const completeUrl = 'http://' + hostName + filePath;\n  const reqURL = new URL(completeUrl);\n  return reqURL.searchParams.has('dl');\n};\n\nexport const handleGetFile = async (bucket: string, key: string, ctx: any, client: any): Promise<any> => {\n  try {\n    let download = false;\n    download = dlQueryParamExist(ctx);\n    // get the target orgKey from the ostorage meta and set it before making ACS request\n    let req: any = { bucket, key, download };\n    logger.debug('Received download request', { bucket, key });\n    const ostorageSrv = client['ostorage'];\n    req = { bucket, key, download, subject: ctx.subject };\n    let grpcGetStream = await ostorageSrv.get(req);\n    const readStream = intoStream.object(grpcGetStream);\n    let streamData: any = {\n      key: '', object: {}, url: '', options: {}\n    };\n    readStream.on('error', (err: any) => {\n      if (err.message.includes('NotFound')) {\n        err.code = 404;\n      } else if (err.message.includes('PermissionDenied')) {\n        err.code = 403;\n      } else {\n        err.code = 500;\n      }\n      ctx.response.status = err.code;\n      logger.error('Error streaming request', { message: err.message, code: err.code });\n      ctx.res.end(err.message);\n    });\n\n    readStream.on('end', (data: any) => {\n      ctx.response.status = 200;\n      logger.info(`File ${key} download completed successfully from bucket ${bucket}`);\n    });\n\n\n    const transformGrpcObjToBuffer = () => {\n      return new Transform({\n        objectMode: true,\n        transform: (chunk, _, done) => {\n          // set options if its not set already\n          if (isEmpty(streamData.options)) {\n            streamData.options = chunk.response?.payload?.options;\n            // set Last-Modified\n            if (chunk?.response?.payload?.meta?.modified) {\n              ctx.response.set('Last-Modified', chunk?.response?.payload?.meta?.modified);\n            }\n            if (!streamData.options) {\n              logger.silly(`File ${key} from bucket ${bucket} does have empty options`, streamData.options);\n            } else {\n              // set response headers on ctx response received from ostorage-srv\n              let {\n                encoding,\n                content_type,\n                content_language,\n                content_disposition,\n                length,\n                version,\n                md5\n              } = streamData.options;\n              if (encoding) {\n                ctx.response.set('Content-Encoding', encoding);\n              }\n              if (content_type) {\n                ctx.response.set('Content-Type', content_type);\n              }\n              if (content_language) {\n                ctx.response.set('Content-Language', content_language);\n              }\n              const name = streamData.key;\n              if (content_disposition) {\n                ctx.response.set('Content-Disposition', `${content_disposition};filename=${name}`);\n              }\n              if (length) {\n                ctx.response.set('Content-Length', length);\n              }\n              if (version) {\n                ctx.response.set('ETag', version);\n              }\n              if (md5) {\n                ctx.response.set('Content-MD5', md5);\n              }\n            }\n          }\n          // object buffer\n          if (chunk.response?.status?.code && chunk.response?.status.code != 200) {\n            ctx.response.status = chunk.response.status.code;\n            logger.error('Error streaming request', { message: chunk.response });\n            ctx.res.end(chunk.response.status.message);\n          }\n          done(null, chunk?.response?.payload?.object);\n        }\n      });\n    };\n\n    // assigning the grpcStream object through transform to Koa ctx response\n    ctx.response.body = readStream.pipe(transformGrpcObjToBuffer());\n    if (streamData.error && streamData.error.message) {\n      ctx.response.status = 404;\n      ctx.response.body = 'Object does not exist';\n      return;\n    }\n    return ctx.response;\n  } catch (error) {\n    logger.error(`Error downloading file ${key}`, { code: (error as any).code, message: (error as any).message, stack: (error as any).stack });\n    ctx.response.body = (error as any).message;\n    ctx.response.status = Number.isInteger((error as any).code) ? (error as any).code : 500;\n    return ctx.response;\n  }\n};", "import {Readable as ReadableStream} from 'node:stream';\n\nfunction baseIntoStream(isObjectMode, input) {\n\tif (input === undefined || input === null) {\n\t\tthrow new TypeError('Input should not be undefined or null.');\n\t}\n\n\tasync function * reader() {\n\t\tlet value = await input;\n\n\t\tif (!value) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tvalue = [...value];\n\t\t}\n\n\t\t// Convert ArrayBuffer/TypedArray to Uint8Array\n\t\tif (!isObjectMode && (value instanceof ArrayBuffer || ArrayBuffer.isView(value))) {\n\t\t\tvalue = new Uint8Array(value);\n\t\t}\n\n\t\tconst convertElement = element => {\n\t\t\tif (isObjectMode) {\n\t\t\t\treturn element;\n\t\t\t}\n\n\t\t\tif (ArrayBuffer.isView(element)) {\n\t\t\t\treturn new Uint8Array(element);\n\t\t\t}\n\n\t\t\tif (typeof element === 'number') {\n\t\t\t\treturn new Uint8Array([element]);\n\t\t\t}\n\n\t\t\treturn element;\n\t\t};\n\n\t\t// Handle iterables\n\t\tif (typeof value !== 'string' && !ArrayBuffer.isView(value) && value?.[Symbol.iterator]) {\n\t\t\tfor (const element of value) {\n\t\t\t\tyield convertElement(element);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\t// Handle async iterables\n\t\tif (value?.[Symbol.asyncIterator]) {\n\t\t\tfor await (const element of value) {\n\t\t\t\tyield convertElement(await element);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tyield value;\n\t}\n\n\treturn ReadableStream.from(reader(), {objectMode: isObjectMode});\n}\n\nconst intoStream = baseIntoStream.bind(undefined, false);\n\nexport default intoStream;\n\nintoStream.object = baseIntoStream.bind(undefined, true);\n", "import { FederatedOstorageSchema } from './gql/federation.js';\nimport { namespace, OstorageConfig, OstorageModule } from './interfaces.js';\nimport { OstorageSrvGrpcClient } from './grpc/index.js';\nimport { createFacadeModuleFactory } from '../../utils.js';\nimport { handleGetFile } from './objectDownloadReqHandler.js';\nimport Router, { RouterContext } from 'koa-router';\nimport bodyParser from 'koa-bodyparser';\nimport { Subject } from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/auth.js';\n\nexport const ostorageModule = createFacadeModuleFactory<OstorageConfig, OstorageModule>(namespace, (facade, config) => {\n  const ostorage = {\n    client: new OstorageSrvGrpcClient(config.config.client.address, {\n      ...config.config.client,\n      logger: facade.logger,\n    })\n  };\n\n  facade.addApolloService({\n    name: namespace,\n    schema: FederatedOstorageSchema(config.config)\n  });\n\n  const router = new Router();\n  const endpoint = config.config.endpoint ?? 'storage';\n  const route = new RegExp(`^\\/${endpoint}\\/([^/]+)\\/(.+)`, 'i');\n\n  router.use(bodyParser());\n  router.get(endpoint, route, async (ctx: RouterContext<any, {subject?: Subject}>, next: any) => {\n    const authToken = ctx.request.header['authorization'];\n    if (authToken?.startsWith('Bearer ')) {\n      const token = authToken.split(' ')[1];\n      ctx.subject = { token };\n    }\n\n    const match = ctx.req.url.match(route);\n    const bucket = match[1];\n    const key = match[2];\n    await handleGetFile(bucket, key, ctx, ostorage.client);\n    return ctx.response;\n  });\n\n  facade.koa.use(router.routes());\n  facade.koa.use(router.allowedMethods());\n  facade.koa.use(async (ctx, next) => {\n    ctx.ostorage = ostorage;\n    await next();\n  });\n\n});\n", "import {\n  protoMetadata as metaPackageIoRestorecommercePdfRendering\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/pdf_rendering.js';\nimport { type ProtoMetadata, registerPackagesRecursive } from '../../../gql/protos/index.js';\nimport { registerProtoMeta } from '@restorecommerce/kafka-client';\n\nexport const subServices: ProtoMetadata[] = [\n  metaPackageIoRestorecommercePdfRendering\n];\n\nexport const registerTypings = () => {\n  registerPackagesRecursive(...subServices);\n  registerProtoMeta(...subServices);\n};\n", "import { type PdfRenderingSrvGrpcClient } from './grpc/index.js';\nimport { type ServiceConfig } from '../../gql/protos/index.js';\nimport { type FacadeModule, type FacadeContext } from '../../interfaces.js';\n\nexport interface PdfRenderingServiceConfig extends ServiceConfig {\n  root: boolean;\n}\n\nexport interface PdfRenderingConfig {\n  config: PdfRenderingServiceConfig;\n}\n\nexport interface PdfRenderingContext extends FacadeContext {\n  pdfRendering: {\n    client: PdfRenderingSrvGrpcClient;\n  };\n}\n\nexport type PdfRenderingModule = FacadeModule<PdfRenderingContext>;\n\nexport const namespace = 'pdfRendering';\n", "import { registerTypings, subServices } from './types.js';\nimport { generateSubServiceSchemas } from '../../../gql/protos/index.js';\nimport { namespace, type PdfRenderingServiceConfig } from '../interfaces.js';\n\nregisterTypings();\n\nexport const schema = (cfg: PdfRenderingServiceConfig) => generateSubServiceSchemas(subServices, cfg, namespace, 'PdfRendering');\n", "import { schema } from './schema.js';\nimport { namespace, type PdfRenderingServiceConfig } from '../interfaces.js';\nimport { buildFederatedSubscriptionSchema } from '../../../gql/protos/index.js';\nimport { subServices } from './types.js';\n\nexport const FederatedPdfRenderingSchema = (cfg: PdfRenderingServiceConfig) => buildFederatedSubscriptionSchema(subServices, cfg, namespace, schema(cfg));\n", "import { RestoreCommerceGrpcClient } from '@restorecommerce/rc-grpc-clients';\nimport {\n  type PdfRenderingServiceClient,\n  PdfRenderingServiceDefinition\n} from '@restorecommerce/rc-grpc-clients/dist/generated/io/restorecommerce/pdf_rendering.js';\nimport { type GrpcClientConfig } from '@restorecommerce/grpc-client';\n\nexport class PdfRenderingSrvGrpcClient extends RestoreCommerceGrpcClient {\n\n  readonly pdf_rendering: PdfRenderingServiceClient;\n\n  constructor(address: string, cfg: GrpcClientConfig) {\n    super(address, cfg);\n\n    this.pdf_rendering = this.createClient(cfg, PdfRenderingServiceDefinition, this.channel);\n  }\n\n}\n", "import { FederatedPdfRenderingSchema } from './gql/federation.js';\nimport { namespace, type PdfRenderingConfig, type PdfRenderingModule } from './interfaces.js';\nimport { PdfRenderingSrvGrpcClient } from './grpc/index.js';\nimport { createFacadeModuleFactory } from '../../utils.js';\n\nexport const pdfRenderingModule = createFacadeModuleFactory<PdfRenderingConfig, PdfRenderingModule>(namespace, (facade, config) => {\n  const pdfRendering = {\n    client: new PdfRenderingSrvGrpcClient(config.config.client.address, {\n      ...config.config.client,\n      logger: facade.logger,\n    })\n  };\n\n  facade.addApolloService({\n    name: namespace,\n    schema: FederatedPdfRenderingSchema(config.config)\n  });\n\n  facade.koa.use(async (ctx, next) => {\n    ctx.pdfRendering = pdfRendering;\n    await next();\n  });\n});\n", "// This file is adapted from the stoppable npm package:\n// https://github.com/hunterloftis/stoppable\n//\n// We've ported it to TypeScript and simplified the API and fixed some bugs.\n// Here's the license of the original code:\n//\n// The MIT License (MIT)\n//\n// Copyright (c) 2017 Hunter Loftis <hunter@hunterloftis.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to deal\n// in the Software without restriction, including without limitation the rights\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n// copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n// THE SOFTWARE.\n\nimport type http from 'http';\nimport https from 'https';\nimport type { Socket } from 'net';\n\nexport class Stopper {\n  private requestCountPerSocket = new Map<Socket, number>();\n  private stopped = false;\n\n  constructor(private server: http.Server | https.Server) {\n    // Keep a number in requestCountPerSocket for each current connection.\n    server.on(\n      server instanceof https.Server ? 'secureConnection' : 'connection',\n      (socket: Socket) => {\n        this.requestCountPerSocket.set(socket, 0);\n        socket.once('close', () => this.requestCountPerSocket.delete(socket));\n      },\n    );\n\n    // Track how many HTTP requests are active on the socket.\n    server.on(\n      'request',\n      (req: http.IncomingMessage, res: http.ServerResponse) => {\n        this.requestCountPerSocket.set(\n          req.socket,\n          (this.requestCountPerSocket.get(req.socket) ?? 0) + 1,\n        );\n        res.once('finish', () => {\n          const pending = (this.requestCountPerSocket.get(req.socket) ?? 0) - 1;\n          this.requestCountPerSocket.set(req.socket, pending);\n          // If we're in the process of stopping and it's gone idle, close the\n          // socket.\n          if (this.stopped && pending === 0) {\n            req.socket.end();\n          }\n        });\n      },\n    );\n  }\n\n  async stop(hardDestroyAbortSignal?: AbortSignal): Promise<boolean> {\n    let gracefully = true;\n\n    // In the off-chance that we are calling `stop` directly from within the\n    // HTTP server's request handler (and so we haven't gotten to the\n    // `connection` event yet), wait a moment so that `connection` can be called\n    // and this request can actually count.\n    await new Promise<void>((resolve) => setImmediate(resolve));\n    this.stopped = true;\n\n    // When told to, hard-destroy everything.\n    const onAbort = () => {\n      gracefully = false;\n      this.requestCountPerSocket.forEach((_, socket) => socket.end());\n      // (FYI, this setImmediate was cargo-culted from the original\n      // implementation, but we don't understand why it's here.)\n      setImmediate(() => {\n        this.requestCountPerSocket.forEach((_, socket) => socket.destroy());\n      });\n    };\n    hardDestroyAbortSignal?.addEventListener('abort', onAbort);\n\n    // Close the server and create a Promise that resolves when all connections\n    // are closed. Note that we ignore any error from `close` here.\n    const closePromise = new Promise<void>((resolve) =>\n      this.server.close(() => {\n        hardDestroyAbortSignal?.removeEventListener('abort', onAbort);\n        resolve();\n      }),\n    );\n\n    // Immediately close any idle sockets.\n    this.requestCountPerSocket.forEach((requests, socket) => {\n      if (requests === 0) socket.end();\n    });\n\n    // Wait for all connections to be closed.\n    await closePromise;\n\n    return gracefully;\n  }\n}\n", "import type http from 'http';\nimport type { ApolloServerPlugin } from '../../externalTypes/index.js';\nimport { Stopper } from './stoppable.js';\n\n/**\n * Options for ApolloServerPluginDrainHttpServer.\n */\nexport interface ApolloServerPluginDrainHttpServerOptions {\n  /**\n   * The http.Server (or https.Server, etc) to drain. Required.\n   */\n  httpServer: http.Server;\n  /**\n   * How long to wait before forcefully closing non-idle connections.\n   * Defaults to 10_000 (ten seconds).\n   */\n  stopGracePeriodMillis?: number;\n}\n\n/**\n * This plugin is used with frameworks built on Node's http.Server\n * (`startStandaloneServer`, Express, etc) to drain your HTTP server on\n * shutdown. See\n * https://www.apollographql.com/docs/apollo-server/api/plugin/drain-http-server/\n * for details.\n */\nexport function ApolloServerPluginDrainHttpServer(\n  options: ApolloServerPluginDrainHttpServerOptions,\n): ApolloServerPlugin {\n  const stopper = new Stopper(options.httpServer);\n  return {\n    async serverWillStart() {\n      return {\n        async drainServer() {\n          const stopGracePeriodMillis = options.stopGracePeriodMillis ?? 10_000;\n          const signal = AbortSignal.timeout(stopGracePeriodMillis);\n          await stopper.stop(signal);\n        },\n      };\n    },\n  };\n}\n", "import createWebSocketStream from './lib/stream.js';\nimport Receiver from './lib/receiver.js';\nimport Sender from './lib/sender.js';\nimport WebSocket from './lib/websocket.js';\nimport WebSocketServer from './lib/websocket-server.js';\n\nexport { createWebSocketStream, Receiver, Sender, WebSocket, WebSocketServer };\nexport default WebSocket;\n", "function extendedTypeof(val) {\n  if (val === null) {\n    return \"null\";\n  }\n  if (Array.isArray(val)) {\n    return \"array\";\n  }\n  return typeof val;\n}\nfunction isObject(val) {\n  return extendedTypeof(val) === \"object\";\n}\nfunction isAsyncIterable(val) {\n  return typeof Object(val)[Symbol.asyncIterator] === \"function\";\n}\nfunction isAsyncGenerator(val) {\n  return isObject(val) && typeof Object(val)[Symbol.asyncIterator] === \"function\" && typeof val.return === \"function\";\n}\nfunction areGraphQLFormattedErrors(obj) {\n  return Array.isArray(obj) && // must be at least one error\n  obj.length > 0 && // error has at least a message\n  obj.every((ob) => \"message\" in ob);\n}\nfunction limitCloseReason(reason, whenTooLong) {\n  return reason.length < 124 ? reason : whenTooLong;\n}\n\nconst GRAPHQL_TRANSPORT_WS_PROTOCOL = \"graphql-transport-ws\";\nconst DEPRECATED_GRAPHQL_WS_PROTOCOL = \"graphql-ws\";\nvar CloseCode = /* @__PURE__ */ ((CloseCode2) => {\n  CloseCode2[CloseCode2[\"InternalServerError\"] = 4500] = \"InternalServerError\";\n  CloseCode2[CloseCode2[\"InternalClientError\"] = 4005] = \"InternalClientError\";\n  CloseCode2[CloseCode2[\"BadRequest\"] = 4400] = \"BadRequest\";\n  CloseCode2[CloseCode2[\"BadResponse\"] = 4004] = \"BadResponse\";\n  CloseCode2[CloseCode2[\"Unauthorized\"] = 4401] = \"Unauthorized\";\n  CloseCode2[CloseCode2[\"Forbidden\"] = 4403] = \"Forbidden\";\n  CloseCode2[CloseCode2[\"SubprotocolNotAcceptable\"] = 4406] = \"SubprotocolNotAcceptable\";\n  CloseCode2[CloseCode2[\"ConnectionInitialisationTimeout\"] = 4408] = \"ConnectionInitialisationTimeout\";\n  CloseCode2[CloseCode2[\"ConnectionAcknowledgementTimeout\"] = 4504] = \"ConnectionAcknowledgementTimeout\";\n  CloseCode2[CloseCode2[\"SubscriberAlreadyExists\"] = 4409] = \"SubscriberAlreadyExists\";\n  CloseCode2[CloseCode2[\"TooManyInitialisationRequests\"] = 4429] = \"TooManyInitialisationRequests\";\n  return CloseCode2;\n})(CloseCode || {});\nvar MessageType = /* @__PURE__ */ ((MessageType2) => {\n  MessageType2[\"ConnectionInit\"] = \"connection_init\";\n  MessageType2[\"ConnectionAck\"] = \"connection_ack\";\n  MessageType2[\"Ping\"] = \"ping\";\n  MessageType2[\"Pong\"] = \"pong\";\n  MessageType2[\"Subscribe\"] = \"subscribe\";\n  MessageType2[\"Next\"] = \"next\";\n  MessageType2[\"Error\"] = \"error\";\n  MessageType2[\"Complete\"] = \"complete\";\n  return MessageType2;\n})(MessageType || {});\nfunction validateMessage(val) {\n  if (!isObject(val)) {\n    throw new Error(\n      `Message is expected to be an object, but got ${extendedTypeof(val)}`\n    );\n  }\n  if (!val.type) {\n    throw new Error(`Message is missing the 'type' property`);\n  }\n  if (typeof val.type !== \"string\") {\n    throw new Error(\n      `Message is expects the 'type' property to be a string, but got ${extendedTypeof(\n        val.type\n      )}`\n    );\n  }\n  switch (val.type) {\n    case \"connection_init\" /* ConnectionInit */:\n    case \"connection_ack\" /* ConnectionAck */:\n    case \"ping\" /* Ping */:\n    case \"pong\" /* Pong */: {\n      if (val.payload != null && !isObject(val.payload)) {\n        throw new Error(\n          `\"${val.type}\" message expects the 'payload' property to be an object or nullish or missing, but got \"${val.payload}\"`\n        );\n      }\n      break;\n    }\n    case \"subscribe\" /* Subscribe */: {\n      if (typeof val.id !== \"string\") {\n        throw new Error(\n          `\"${val.type}\" message expects the 'id' property to be a string, but got ${extendedTypeof(\n            val.id\n          )}`\n        );\n      }\n      if (!val.id) {\n        throw new Error(\n          `\"${val.type}\" message requires a non-empty 'id' property`\n        );\n      }\n      if (!isObject(val.payload)) {\n        throw new Error(\n          `\"${val.type}\" message expects the 'payload' property to be an object, but got ${extendedTypeof(\n            val.payload\n          )}`\n        );\n      }\n      if (typeof val.payload.query !== \"string\") {\n        throw new Error(\n          `\"${val.type}\" message payload expects the 'query' property to be a string, but got ${extendedTypeof(\n            val.payload.query\n          )}`\n        );\n      }\n      if (val.payload.variables != null && !isObject(val.payload.variables)) {\n        throw new Error(\n          `\"${val.type}\" message payload expects the 'variables' property to be a an object or nullish or missing, but got ${extendedTypeof(\n            val.payload.variables\n          )}`\n        );\n      }\n      if (val.payload.operationName != null && extendedTypeof(val.payload.operationName) !== \"string\") {\n        throw new Error(\n          `\"${val.type}\" message payload expects the 'operationName' property to be a string or nullish or missing, but got ${extendedTypeof(\n            val.payload.operationName\n          )}`\n        );\n      }\n      if (val.payload.extensions != null && !isObject(val.payload.extensions)) {\n        throw new Error(\n          `\"${val.type}\" message payload expects the 'extensions' property to be a an object or nullish or missing, but got ${extendedTypeof(\n            val.payload.extensions\n          )}`\n        );\n      }\n      break;\n    }\n    case \"next\" /* Next */: {\n      if (typeof val.id !== \"string\") {\n        throw new Error(\n          `\"${val.type}\" message expects the 'id' property to be a string, but got ${extendedTypeof(\n            val.id\n          )}`\n        );\n      }\n      if (!val.id) {\n        throw new Error(\n          `\"${val.type}\" message requires a non-empty 'id' property`\n        );\n      }\n      if (!isObject(val.payload)) {\n        throw new Error(\n          `\"${val.type}\" message expects the 'payload' property to be an object, but got ${extendedTypeof(\n            val.payload\n          )}`\n        );\n      }\n      break;\n    }\n    case \"error\" /* Error */: {\n      if (typeof val.id !== \"string\") {\n        throw new Error(\n          `\"${val.type}\" message expects the 'id' property to be a string, but got ${extendedTypeof(\n            val.id\n          )}`\n        );\n      }\n      if (!val.id) {\n        throw new Error(\n          `\"${val.type}\" message requires a non-empty 'id' property`\n        );\n      }\n      if (!areGraphQLFormattedErrors(val.payload)) {\n        throw new Error(\n          `\"${val.type}\" message expects the 'payload' property to be an array of GraphQL errors, but got ${JSON.stringify(\n            val.payload\n          )}`\n        );\n      }\n      break;\n    }\n    case \"complete\" /* Complete */: {\n      if (typeof val.id !== \"string\") {\n        throw new Error(\n          `\"${val.type}\" message expects the 'id' property to be a string, but got ${extendedTypeof(\n            val.id\n          )}`\n        );\n      }\n      if (!val.id) {\n        throw new Error(\n          `\"${val.type}\" message requires a non-empty 'id' property`\n        );\n      }\n      break;\n    }\n    default:\n      throw new Error(`Invalid message 'type' property \"${val.type}\"`);\n  }\n  return val;\n}\nfunction parseMessage(data, reviver) {\n  return validateMessage(\n    typeof data === \"string\" ? JSON.parse(data, reviver) : data\n  );\n}\nfunction stringifyMessage(msg, replacer) {\n  validateMessage(msg);\n  return JSON.stringify(msg, replacer);\n}\n\nexport { CloseCode as C, DEPRECATED_GRAPHQL_WS_PROTOCOL as D, GRAPHQL_TRANSPORT_WS_PROTOCOL as G, MessageType as M, isAsyncGenerator as a, isAsyncIterable as b, isObject as i, limitCloseReason as l, parseMessage as p, stringifyMessage as s, validateMessage as v };\n", "import { parse, validate, getOperationAST, GraphQLError, subscribe, execute, versionInfo } from 'graphql';\nimport { G as GRAPHQL_TRANSPORT_WS_PROTOCOL, C as CloseCode, p as parseMessage, M as MessageType, a as isAsyncGenerator, b as isAsyncIterable, s as stringifyMessage, i as isObject } from './common-CGW11Fyb.js';\n\nfunction makeServer(options) {\n  const {\n    schema,\n    context,\n    roots,\n    validate: validate$1,\n    execute: execute$1,\n    subscribe: subscribe$1,\n    connectionInitWaitTimeout = 3e3,\n    // 3 seconds\n    onConnect,\n    onDisconnect,\n    onClose,\n    onSubscribe,\n    onOperation,\n    onNext,\n    onError,\n    onComplete,\n    jsonMessageReviver: reviver,\n    jsonMessageReplacer: replacer\n  } = options;\n  return {\n    opened(socket, extra) {\n      const ctx = {\n        connectionInitReceived: false,\n        acknowledged: false,\n        subscriptions: {},\n        extra\n      };\n      if (socket.protocol !== GRAPHQL_TRANSPORT_WS_PROTOCOL) {\n        socket.close(\n          CloseCode.SubprotocolNotAcceptable,\n          \"Subprotocol not acceptable\"\n        );\n        return async (code, reason) => {\n          await onClose?.(ctx, code, reason);\n        };\n      }\n      const connectionInitWait = connectionInitWaitTimeout > 0 && isFinite(connectionInitWaitTimeout) ? setTimeout(() => {\n        if (!ctx.connectionInitReceived)\n          socket.close(\n            CloseCode.ConnectionInitialisationTimeout,\n            \"Connection initialisation timeout\"\n          );\n      }, connectionInitWaitTimeout) : null;\n      socket.onMessage(async function onMessage(data) {\n        let message;\n        try {\n          message = parseMessage(data, reviver);\n        } catch (err) {\n          return socket.close(CloseCode.BadRequest, \"Invalid message received\");\n        }\n        switch (message.type) {\n          case MessageType.ConnectionInit: {\n            if (ctx.connectionInitReceived)\n              return socket.close(\n                CloseCode.TooManyInitialisationRequests,\n                \"Too many initialisation requests\"\n              );\n            ctx.connectionInitReceived = true;\n            if (isObject(message.payload))\n              ctx.connectionParams = message.payload;\n            const permittedOrPayload = await onConnect?.(ctx);\n            if (permittedOrPayload === false)\n              return socket.close(CloseCode.Forbidden, \"Forbidden\");\n            ctx.acknowledged = true;\n            await socket.send(\n              stringifyMessage(\n                isObject(permittedOrPayload) ? {\n                  type: MessageType.ConnectionAck,\n                  payload: permittedOrPayload\n                } : {\n                  type: MessageType.ConnectionAck\n                  // payload is completely absent if not provided\n                },\n                replacer\n              )\n            );\n            return;\n          }\n          case MessageType.Ping: {\n            if (socket.onPing)\n              return await socket.onPing(message.payload);\n            await socket.send(\n              stringifyMessage(\n                message.payload ? { type: MessageType.Pong, payload: message.payload } : {\n                  type: MessageType.Pong\n                  // payload is completely absent if not provided\n                }\n              )\n            );\n            return;\n          }\n          case MessageType.Pong:\n            return await socket.onPong?.(message.payload);\n          case MessageType.Subscribe: {\n            if (!ctx.acknowledged)\n              return socket.close(CloseCode.Unauthorized, \"Unauthorized\");\n            const { id, payload } = message;\n            if (id in ctx.subscriptions)\n              return socket.close(\n                CloseCode.SubscriberAlreadyExists,\n                `Subscriber for ${id} already exists`\n              );\n            ctx.subscriptions[id] = null;\n            const emit = {\n              next: async (result, { id: id2, payload: payload2 }, args) => {\n                const { errors, ...resultWithoutErrors } = result;\n                const maybeResult = await onNext?.(\n                  ctx,\n                  id2,\n                  payload2,\n                  args,\n                  result\n                );\n                await socket.send(\n                  stringifyMessage(\n                    {\n                      id: id2,\n                      type: MessageType.Next,\n                      payload: maybeResult || {\n                        ...resultWithoutErrors,\n                        // omit errors completely if not defined\n                        ...errors ? { errors: errors.map((e) => e.toJSON()) } : {}\n                      }\n                    },\n                    replacer\n                  )\n                );\n              },\n              error: async (errors, { id: id2, payload: payload2 }) => {\n                const maybeErrors = await onError?.(ctx, id2, payload2, errors);\n                await socket.send(\n                  stringifyMessage(\n                    {\n                      id: id2,\n                      type: MessageType.Error,\n                      payload: maybeErrors || errors.map((e) => e.toJSON())\n                    },\n                    replacer\n                  )\n                );\n              },\n              complete: async (notifyClient, { id: id2, payload: payload2 }) => {\n                await onComplete?.(ctx, id2, payload2);\n                if (notifyClient)\n                  await socket.send(\n                    stringifyMessage(\n                      {\n                        id: id2,\n                        type: MessageType.Complete\n                      },\n                      replacer\n                    )\n                  );\n              }\n            };\n            try {\n              let execArgs;\n              const maybeExecArgsOrErrors = await onSubscribe?.(\n                ctx,\n                message.id,\n                message.payload\n              );\n              if (maybeExecArgsOrErrors) {\n                if (areGraphQLErrors(maybeExecArgsOrErrors))\n                  return id in ctx.subscriptions ? await emit.error(maybeExecArgsOrErrors, message) : void 0;\n                else if (Array.isArray(maybeExecArgsOrErrors))\n                  throw new Error(\n                    \"Invalid return value from onSubscribe hook, expected an array of GraphQLError objects\"\n                  );\n                execArgs = maybeExecArgsOrErrors;\n              } else {\n                if (!schema)\n                  throw new Error(\"The GraphQL schema is not provided\");\n                const args = {\n                  operationName: payload.operationName,\n                  document: parse(payload.query),\n                  variableValues: payload.variables\n                };\n                execArgs = {\n                  ...args,\n                  schema: typeof schema === \"function\" ? await schema(ctx, id, payload, args) : schema\n                };\n                const validationErrors = (validate$1 ?? validate)(\n                  execArgs.schema,\n                  execArgs.document\n                );\n                if (validationErrors.length > 0)\n                  return id in ctx.subscriptions ? await emit.error(validationErrors, message) : void 0;\n              }\n              const operationAST = getOperationAST(\n                execArgs.document,\n                execArgs.operationName\n              );\n              if (!operationAST)\n                return id in ctx.subscriptions ? await emit.error(\n                  [new GraphQLError(\"Unable to identify operation\")],\n                  message\n                ) : void 0;\n              if (!(\"rootValue\" in execArgs))\n                execArgs.rootValue = roots?.[operationAST.operation];\n              if (!(\"contextValue\" in execArgs))\n                execArgs.contextValue = typeof context === \"function\" ? await context(ctx, id, payload, execArgs) : context;\n              let operationResult;\n              if (operationAST.operation === \"subscription\")\n                operationResult = await (subscribe$1 ?? subscribe)(\n                  execArgs\n                );\n              else\n                operationResult = await (execute$1 ?? execute)(execArgs);\n              const maybeResult = await onOperation?.(\n                ctx,\n                id,\n                payload,\n                execArgs,\n                operationResult\n              );\n              if (maybeResult) operationResult = maybeResult;\n              if (isAsyncIterable(operationResult)) {\n                if (!(id in ctx.subscriptions)) {\n                  if (isAsyncGenerator(operationResult))\n                    operationResult.return(void 0);\n                } else {\n                  ctx.subscriptions[id] = operationResult;\n                  try {\n                    for await (const result of operationResult) {\n                      await emit.next(result, message, execArgs);\n                    }\n                  } catch (err) {\n                    const originalError = err instanceof Error ? err : new Error(String(err));\n                    await emit.error(\n                      [\n                        versionInfo.major >= 16 ? new GraphQLError(\n                          originalError.message,\n                          // @ts-ignore graphql@15 and less dont have the second arg as object (version is ensured by versionInfo.major check above)\n                          { originalError }\n                        ) : (\n                          // versionInfo.major <= 15\n                          new GraphQLError(\n                            originalError.message,\n                            null,\n                            null,\n                            null,\n                            null,\n                            originalError\n                          )\n                        )\n                      ],\n                      message\n                    );\n                  }\n                }\n              } else {\n                if (id in ctx.subscriptions)\n                  await emit.next(operationResult, message, execArgs);\n              }\n              await emit.complete(id in ctx.subscriptions, message);\n            } finally {\n              delete ctx.subscriptions[id];\n            }\n            return;\n          }\n          case MessageType.Complete: {\n            const subscription = ctx.subscriptions[message.id];\n            delete ctx.subscriptions[message.id];\n            if (isAsyncGenerator(subscription))\n              await subscription.return(void 0);\n            return;\n          }\n          default:\n            throw new Error(\n              `Unexpected message of type ${message.type} received`\n            );\n        }\n      });\n      return async (code, reason) => {\n        if (connectionInitWait) clearTimeout(connectionInitWait);\n        const subs = { ...ctx.subscriptions };\n        ctx.subscriptions = {};\n        await Promise.all(\n          Object.values(subs).filter(isAsyncGenerator).map((sub) => sub.return(void 0))\n        );\n        if (ctx.acknowledged) await onDisconnect?.(ctx, code, reason);\n        await onClose?.(ctx, code, reason);\n      };\n    }\n  };\n}\nfunction handleProtocols(protocols) {\n  switch (true) {\n    case (protocols instanceof Set && protocols.has(GRAPHQL_TRANSPORT_WS_PROTOCOL)):\n    case (Array.isArray(protocols) && protocols.includes(GRAPHQL_TRANSPORT_WS_PROTOCOL)):\n    case (typeof protocols === \"string\" && protocols.split(\",\").map((p) => p.trim()).includes(GRAPHQL_TRANSPORT_WS_PROTOCOL)):\n      return GRAPHQL_TRANSPORT_WS_PROTOCOL;\n    default:\n      return false;\n  }\n}\nfunction areGraphQLErrors(obj) {\n  return Array.isArray(obj) && // must be at least one error\n  obj.length > 0 && // error has at least a message\n  obj.every((ob) => ob instanceof GraphQLError);\n}\n\nexport { areGraphQLErrors as a, handleProtocols as h, makeServer as m };\n", "import { C as CloseCode, l as limitCloseReason, D as DEPRECATED_GRAPHQL_WS_PROTOCOL } from '../common-CGW11Fyb.js';\nimport { m as makeServer, h as handleProtocols } from '../server-3ewaJSjp.js';\nimport 'graphql';\n\nfunction useServer(options, ws, keepAlive = 12e3) {\n  const isProd = process.env.NODE_ENV === \"production\";\n  const server = makeServer(options);\n  ws.options.handleProtocols = handleProtocols;\n  ws.once(\"error\", (err) => {\n    console.error(\n      \"Internal error emitted on the WebSocket server. Please check your implementation.\",\n      err\n    );\n    let firstErr = null;\n    for (const client of ws.clients) {\n      try {\n        client.close(\n          CloseCode.InternalServerError,\n          isProd ? \"Internal server error\" : limitCloseReason(\n            err instanceof Error ? err.message : String(err),\n            \"Internal server error\"\n          )\n        );\n      } catch (err2) {\n        firstErr = firstErr ?? err2;\n      }\n    }\n    if (firstErr) throw firstErr;\n  });\n  ws.on(\"connection\", (socket, request) => {\n    socket.once(\"error\", (err) => {\n      console.error(\n        \"Internal error emitted on a WebSocket socket. Please check your implementation.\",\n        err\n      );\n      socket.close(\n        CloseCode.InternalServerError,\n        isProd ? \"Internal server error\" : limitCloseReason(\n          err instanceof Error ? err.message : String(err),\n          \"Internal server error\"\n        )\n      );\n    });\n    let pongWait = null;\n    const pingInterval = keepAlive > 0 && isFinite(keepAlive) ? setInterval(() => {\n      if (socket.readyState === socket.OPEN) {\n        pongWait = setTimeout(() => {\n          socket.terminate();\n        }, keepAlive);\n        socket.once(\"pong\", () => {\n          if (pongWait) {\n            clearTimeout(pongWait);\n            pongWait = null;\n          }\n        });\n        socket.ping();\n      }\n    }, keepAlive) : null;\n    const closed = server.opened(\n      {\n        protocol: socket.protocol,\n        send: (data) => new Promise((resolve, reject) => {\n          if (socket.readyState !== socket.OPEN) return resolve();\n          socket.send(data, (err) => err ? reject(err) : resolve());\n        }),\n        close: (code, reason) => socket.close(code, reason),\n        onMessage: (cb) => socket.on(\"message\", async (event) => {\n          try {\n            await cb(String(event));\n          } catch (err) {\n            console.error(\n              \"Internal error occurred during message handling. Please check your implementation.\",\n              err\n            );\n            socket.close(\n              CloseCode.InternalServerError,\n              isProd ? \"Internal server error\" : limitCloseReason(\n                err instanceof Error ? err.message : String(err),\n                \"Internal server error\"\n              )\n            );\n          }\n        })\n      },\n      { socket, request }\n    );\n    socket.once(\"close\", (code, reason) => {\n      if (pongWait) clearTimeout(pongWait);\n      if (pingInterval) clearInterval(pingInterval);\n      if (!isProd && code === CloseCode.SubprotocolNotAcceptable && socket.protocol === DEPRECATED_GRAPHQL_WS_PROTOCOL)\n        console.warn(\n          `Client provided the unsupported and deprecated subprotocol \"${socket.protocol}\" used by subscriptions-transport-ws.Please see https://www.apollographql.com/docs/apollo-server/data/subscriptions/#switching-from-subscriptions-transport-ws.`\n        );\n      closed(code, String(reason));\n    });\n  });\n  return {\n    dispose: async () => {\n      for (const client of ws.clients) {\n        client.close(1001, \"Going away\");\n      }\n      ws.removeAllListeners();\n      await new Promise((resolve, reject) => {\n        ws.close((err) => err ? reject(err) : resolve());\n      });\n    }\n  };\n}\n\nexport { useServer };\n", "// @ts-check\n\n/**\n * @import { IncomingMessage, ServerResponse } from \"node:http\"\n * @import { Readable } from \"node:stream\"\n * @import { ReadStreamOptions } from \"fs-capacitor\"\n * @import { ObjectPathBound } from \"object-path\"\n * @import GraphQLUpload from \"./GraphQLUpload.mjs\"\n */\n\nimport busboy from \"busboy\";\nimport { WriteStream } from \"fs-capacitor\";\nimport createError from \"http-errors\";\nimport objectPath from \"object-path\";\n\nimport GRAPHQL_MULTIPART_REQUEST_SPEC_URL from \"./GRAPHQL_MULTIPART_REQUEST_SPEC_URL.mjs\";\nimport ignoreStream from \"./ignoreStream.mjs\";\nimport Upload from \"./Upload.mjs\";\n\n/**\n * Processes an incoming\n * [GraphQL multipart request](https://github.com/jaydenseric/graphql-multipart-request-spec).\n * It parses the `operations` and `map` fields to create an {@linkcode Upload}\n * instance for each expected file upload, placing references wherever the file\n * is expected in the GraphQL operation for the {@linkcode GraphQLUpload} scalar\n * to derive it\u2019s value. Errors are created with\n * [`http-errors`](https://npm.im/http-errors) to assist in sending responses\n * with appropriate HTTP status codes. Used to create custom middleware.\n * @type {ProcessRequestFunction}\n */\nexport default function processRequest(\n  request,\n  response,\n  {\n    maxFieldSize = 1000000, // 1 MB\n    maxFileSize = Infinity,\n    maxFiles = Infinity,\n  } = {},\n) {\n  return new Promise((resolve, reject) => {\n    /** @type {boolean} */\n    let released;\n\n    /** @type {Error} */\n    let exitError;\n\n    /**\n     * @type {{ [key: string]: unknown } | Array<\n     *   { [key: string]: unknown }\n     * >}\n     */\n    let operations;\n\n    /**\n     * @type {ObjectPathBound<\n     *   { [key: string]: unknown } | Array<{ [key: string]: unknown }>\n     * >}\n     */\n    let operationsPath;\n\n    /** @type {Map<string, Upload>} */\n    let map;\n\n    const parser = busboy({\n      headers: request.headers,\n      defParamCharset: \"utf8\",\n      limits: {\n        fieldSize: maxFieldSize,\n        fields: 2, // Only operations and map.\n        fileSize: maxFileSize,\n        files: maxFiles,\n      },\n    });\n\n    /**\n     * Exits request processing with an error. Successive calls have no effect.\n     * @param {Error} error Error instance.\n     * @param {boolean} [isParserError] Is the error from the parser.\n     */\n    function exit(error, isParserError = false) {\n      if (exitError) return;\n\n      exitError = error;\n\n      if (map)\n        for (const upload of map.values())\n          if (!upload.file) upload.reject(exitError);\n\n      // If the error came from the parser, don\u2019t cause it to be emitted again.\n      isParserError ? parser.destroy() : parser.destroy(exitError);\n\n      request.unpipe(parser);\n\n      // With a sufficiently large request body, subsequent events in the same\n      // event frame cause the stream to pause after the parser is destroyed. To\n      // ensure that the request resumes, the call to .resume() is scheduled for\n      // later in the event loop.\n      setImmediate(() => {\n        request.resume();\n      });\n\n      reject(exitError);\n    }\n\n    parser.on(\"field\", (fieldName, value, { valueTruncated }) => {\n      if (valueTruncated)\n        return exit(\n          createError(\n            413,\n            `The \u2018${fieldName}\u2019 multipart field value exceeds the ${maxFieldSize} byte size limit.`,\n          ),\n        );\n\n      switch (fieldName) {\n        case \"operations\":\n          try {\n            operations = JSON.parse(value);\n          } catch {\n            return exit(\n              createError(\n                400,\n                `Invalid JSON in the \u2018operations\u2019 multipart field (${GRAPHQL_MULTIPART_REQUEST_SPEC_URL}).`,\n              ),\n            );\n          }\n\n          // `operations` should be an object or an array. Note that arrays\n          // and `null` have an `object` type.\n          if (typeof operations !== \"object\" || !operations)\n            return exit(\n              createError(\n                400,\n                `Invalid type for the \u2018operations\u2019 multipart field (${GRAPHQL_MULTIPART_REQUEST_SPEC_URL}).`,\n              ),\n            );\n\n          operationsPath = objectPath(operations);\n\n          break;\n        case \"map\": {\n          if (!operations)\n            return exit(\n              createError(\n                400,\n                `Misordered multipart fields; \u2018map\u2019 should follow \u2018operations\u2019 (${GRAPHQL_MULTIPART_REQUEST_SPEC_URL}).`,\n              ),\n            );\n\n          let parsedMap;\n          try {\n            parsedMap = JSON.parse(value);\n          } catch {\n            return exit(\n              createError(\n                400,\n                `Invalid JSON in the \u2018map\u2019 multipart field (${GRAPHQL_MULTIPART_REQUEST_SPEC_URL}).`,\n              ),\n            );\n          }\n\n          // `map` should be an object.\n          if (\n            typeof parsedMap !== \"object\" ||\n            !parsedMap ||\n            Array.isArray(parsedMap)\n          )\n            return exit(\n              createError(\n                400,\n                `Invalid type for the \u2018map\u2019 multipart field (${GRAPHQL_MULTIPART_REQUEST_SPEC_URL}).`,\n              ),\n            );\n\n          const mapEntries = Object.entries(parsedMap);\n\n          // Check max files is not exceeded, even though the number of files\n          // to parse might not match the map provided by the client.\n          if (mapEntries.length > maxFiles)\n            return exit(\n              createError(413, `${maxFiles} max file uploads exceeded.`),\n            );\n\n          map = new Map();\n          for (const [fieldName, paths] of mapEntries) {\n            if (!Array.isArray(paths))\n              return exit(\n                createError(\n                  400,\n                  `Invalid type for the \u2018map\u2019 multipart field entry key \u2018${fieldName}\u2019 array (${GRAPHQL_MULTIPART_REQUEST_SPEC_URL}).`,\n                ),\n              );\n\n            map.set(fieldName, new Upload());\n\n            for (const [index, path] of paths.entries()) {\n              if (typeof path !== \"string\")\n                return exit(\n                  createError(\n                    400,\n                    `Invalid type for the \u2018map\u2019 multipart field entry key \u2018${fieldName}\u2019 array index \u2018${index}\u2019 value (${GRAPHQL_MULTIPART_REQUEST_SPEC_URL}).`,\n                  ),\n                );\n\n              try {\n                operationsPath.set(path, map.get(fieldName));\n              } catch {\n                return exit(\n                  createError(\n                    400,\n                    `Invalid object path for the \u2018map\u2019 multipart field entry key \u2018${fieldName}\u2019 array index \u2018${index}\u2019 value \u2018${path}\u2019 (${GRAPHQL_MULTIPART_REQUEST_SPEC_URL}).`,\n                  ),\n                );\n              }\n            }\n          }\n\n          resolve(operations);\n        }\n      }\n    });\n\n    parser.on(\n      \"file\",\n      (fieldName, stream, { filename, encoding, mimeType: mimetype }) => {\n        if (!map) {\n          ignoreStream(stream);\n          return exit(\n            createError(\n              400,\n              `Misordered multipart fields; files should follow \u2018map\u2019 (${GRAPHQL_MULTIPART_REQUEST_SPEC_URL}).`,\n            ),\n          );\n        }\n\n        const upload = map.get(fieldName);\n\n        if (!upload) {\n          // The file is extraneous. As the rest can still be processed, just\n          // ignore it and don\u2019t exit with an error.\n          ignoreStream(stream);\n          return;\n        }\n\n        /** @type {Error} */\n        let fileError;\n\n        const capacitor = new WriteStream();\n\n        capacitor.on(\"error\", () => {\n          stream.unpipe();\n          stream.resume();\n        });\n\n        stream.on(\"limit\", () => {\n          fileError = createError(\n            413,\n            `File truncated as it exceeds the ${maxFileSize} byte size limit.`,\n          );\n          stream.unpipe();\n          capacitor.destroy(fileError);\n        });\n\n        stream.on(\"error\", (error) => {\n          fileError = error;\n          stream.unpipe();\n          capacitor.destroy(fileError);\n        });\n\n        /** @type {FileUpload} */\n        const file = {\n          filename,\n          mimetype,\n          encoding,\n          createReadStream(options) {\n            const error = fileError || (released ? exitError : null);\n            if (error) throw error;\n            return capacitor.createReadStream(options);\n          },\n          capacitor,\n        };\n\n        Object.defineProperty(file, \"capacitor\", {\n          enumerable: false,\n          configurable: false,\n          writable: false,\n        });\n\n        stream.pipe(capacitor);\n        upload.resolve(file);\n      },\n    );\n\n    parser.once(\"filesLimit\", () =>\n      exit(createError(413, `${maxFiles} max file uploads exceeded.`)),\n    );\n\n    parser.once(\"finish\", () => {\n      request.unpipe(parser);\n      request.resume();\n\n      if (!operations)\n        return exit(\n          createError(\n            400,\n            `Missing multipart field \u2018operations\u2019 (${GRAPHQL_MULTIPART_REQUEST_SPEC_URL}).`,\n          ),\n        );\n\n      if (!map)\n        return exit(\n          createError(\n            400,\n            `Missing multipart field \u2018map\u2019 (${GRAPHQL_MULTIPART_REQUEST_SPEC_URL}).`,\n          ),\n        );\n\n      for (const upload of map.values())\n        if (!upload.file)\n          upload.reject(createError(400, \"File missing in the request.\"));\n    });\n\n    // Use the `on` method instead of `once` as in edge cases the same parser\n    // could have multiple `error` events and all must be handled to prevent the\n    // Node.js process exiting with an error. One edge case is if there is a\n    // malformed part header as well as an unexpected end of the form.\n    parser.on(\"error\", (/** @type {Error} */ error) => {\n      exit(error, true);\n    });\n\n    response.once(\"close\", () => {\n      released = true;\n\n      if (map)\n        for (const upload of map.values())\n          if (upload.file)\n            // Release resources and clean up temporary files.\n            upload.file.capacitor.release();\n    });\n\n    request.once(\"close\", () => {\n      if (!request.readableEnded)\n        exit(\n          createError(\n            499,\n            \"Request disconnected during file upload stream parsing.\",\n          ),\n        );\n    });\n\n    request.pipe(parser);\n  });\n}\n\n/**\n * File upload details that are only available after the file\u2019s field in the\n * [GraphQL multipart request](https://github.com/jaydenseric/graphql-multipart-request-spec)\n * has begun streaming in.\n * @typedef {object} FileUpload\n * @property {string} filename File name.\n * @property {string} mimetype File MIME type. Provided by the client and can\u2019t\n *   be trusted.\n * @property {string} encoding File stream transfer encoding.\n * @property {WriteStream} capacitor A private implementation detail that\n *   shouldn\u2019t be used outside\n *   [`graphql-upload`](https://npm.im/graphql-upload).\n * @property {FileUploadCreateReadStream} createReadStream Creates a\n *   [Node.js readable stream](https://nodejs.org/api/stream.html#readable-streams)\n *   of the file\u2019s contents, for processing and storage.\n */\n\n/**\n * Creates a\n * [Node.js readable stream](https://nodejs.org/api/stream.html#readable-streams)\n * of an {@link FileUpload uploading file\u2019s} contents, for processing and\n * storage. Multiple calls create independent streams. Throws if called after\n * all resolvers have resolved, or after an error has interrupted the request.\n * @callback FileUploadCreateReadStream\n * @param {FileUploadCreateReadStreamOptions} [options] Options.\n * @returns {Readable}\n *   [Node.js readable stream](https://nodejs.org/api/stream.html#readable-streams)\n *   of the file\u2019s contents.\n * @see [Node.js `Readable` stream constructor docs](https://nodejs.org/api/stream.html#new-streamreadableoptions).\n * @see [Node.js stream backpressure guide](https://nodejs.org/en/docs/guides/backpressuring-in-streams).\n */\n\n/**\n * {@linkcode FileUploadCreateReadStream} options.\n * @typedef {object} FileUploadCreateReadStreamOptions\n * @property {ReadStreamOptions[\"encoding\"]} [encoding] Specify an encoding for\n *   the [`data`](https://nodejs.org/api/stream.html#event-data) chunks to be\n *   strings (without splitting multi-byte characters across chunks) instead of\n *   Node.js [`Buffer`](https://nodejs.org/api/buffer.html#buffer) instances.\n *   Supported values depend on the\n *   [`Buffer` implementation](https://github.com/nodejs/node/blob/v18.1.0/lib/buffer.js#L590-L680)\n *   and include `utf8`, `ucs2`, `utf16le`, `latin1`, `ascii`, `base64`,\n *   `base64url`, or `hex`. Defaults to `utf8`.\n * @property {ReadStreamOptions[\"highWaterMark\"]} [highWaterMark] Maximum number\n *   of bytes to store in the internal buffer before ceasing to read from the\n *   underlying resource. Defaults to the Node.js default high water mark for\n *   non object mode streams.\n */\n\n/**\n * Processes an incoming\n * [GraphQL multipart request](https://github.com/jaydenseric/graphql-multipart-request-spec).\n * @callback ProcessRequestFunction\n * @param {IncomingMessage} request\n *   [Node.js HTTP server request instance](https://nodejs.org/api/http.html#http_class_http_incomingmessage).\n * @param {ServerResponse} response\n *   [Node.js HTTP server response instance](https://nodejs.org/api/http.html#http_class_http_serverresponse).\n * @param {ProcessRequestOptions} [options] Options.\n * @returns {Promise<\n *   { [key: string]: unknown } | Array<{ [key: string]: unknown }>\n * >} GraphQL operation or batch of operations for a GraphQL server to consume\n *   (usually as the request body). A GraphQL operation typically has the\n *   properties `query` and `variables`.\n */\n\n/**\n * {@linkcode ProcessRequestFunction} options.\n * @typedef {object} ProcessRequestOptions\n * @property {number} [maxFieldSize] Maximum allowed non file multipart form\n *   field size in bytes; enough for your queries. Defaults to `1000000` (1 MB).\n * @property {number} [maxFileSize] Maximum allowed file size in bytes. Defaults\n *   to `Infinity`.\n * @property {number} [maxFiles] Maximum allowed number of files. Defaults to\n *   `Infinity`.\n */\n", null, "// @ts-check\n\n/**\n * [GraphQL multipart request spec](https://github.com/jaydenseric/graphql-multipart-request-spec)\n * URL. Useful for error messages, etc.\n */\nconst GRAPHQL_MULTIPART_REQUEST_SPEC_URL =\n  \"https://github.com/jaydenseric/graphql-multipart-request-spec\";\n\nexport default GRAPHQL_MULTIPART_REQUEST_SPEC_URL;\n", "// @ts-check\n\n/** @import { Readable } from \"node:stream\" */\n\n/**\n * Safely ignores a Node.js readable stream.\n * @param {Readable} stream Node.js readable stream.\n */\nexport default function ignoreStream(stream) {\n  // Prevent an unhandled error from crashing the process.\n  stream.on(\"error\", () => {});\n\n  // Waste the stream.\n  stream.resume();\n}\n", "// @ts-check\n\n/**\n * @import { Next, ParameterizedContext } from \"koa\"\n * @import {\n *   ProcessRequestFunction,\n *   ProcessRequestOptions,\n * } from \"./processRequest.mjs\"\n */\n\nimport defaultProcessRequest from \"./processRequest.mjs\";\n\n/**\n * Creates [Koa](https://koajs.com) middleware that processes incoming\n * [GraphQL multipart requests](https://github.com/jaydenseric/graphql-multipart-request-spec)\n * using {@linkcode processRequest}, ignoring non multipart requests. It sets\n * the request `body` to be similar to a conventional GraphQL POST request for\n * following GraphQL middleware to consume.\n * @param {ProcessRequestOptions & {\n *   processRequest?: ProcessRequestFunction,\n * }} options Options.\n * @returns Koa middleware.\n * @example\n * Basic [`graphql-api-koa`](https://npm.im/graphql-api-koa) setup:\n *\n * ```js\n * import errorHandler from \"graphql-api-koa/errorHandler.mjs\";\n * import execute from \"graphql-api-koa/execute.mjs\";\n * import graphqlUploadKoa from \"graphql-upload/graphqlUploadKoa.mjs\";\n * import Koa from \"koa\";\n * import bodyParser from \"koa-bodyparser\";\n *\n * import schema from \"./schema.mjs\";\n *\n * new Koa()\n *   .use(errorHandler())\n *   .use(bodyParser())\n *   .use(graphqlUploadKoa({ maxFileSize: 10000000, maxFiles: 10 }))\n *   .use(execute({ schema }))\n *   .listen(3000);\n * ```\n */\nexport default function graphqlUploadKoa({\n  processRequest = defaultProcessRequest,\n  ...processRequestOptions\n} = {}) {\n  /**\n   * [Koa](https://koajs.com) middleware that processes incoming\n   * [GraphQL multipart requests](https://github.com/jaydenseric/graphql-multipart-request-spec)\n   * using {@linkcode processRequest}, ignoring non multipart requests. It sets\n   * the request `body` to be similar to a conventional GraphQL POST request for\n   * following GraphQL middleware to consume.\n   * @param {ParameterizedContext} ctx Koa context.\n   * @param {Next} next Invokes the next middleware.\n   */\n  async function graphqlUploadKoaMiddleware(ctx, next) {\n    if (ctx.request.is(\"multipart/form-data\")) {\n      const requestEnd = new Promise((resolve) => ctx.req.on(\"end\", resolve));\n\n      try {\n        // @ts-ignore This is conventional.\n        ctx.request.body = await processRequest(\n          ctx.req,\n          ctx.res,\n          processRequestOptions,\n        );\n        await next();\n      } finally {\n        await requestEnd;\n      }\n    } else await next();\n  }\n\n  return graphqlUploadKoaMiddleware;\n}\n", "import _debug from 'debug';\nimport type * as koa from 'koa';\nimport { type Logger, createLogger } from '@restorecommerce/logger';\n\nconst debug = _debug('@restorecommerce/koa-req-res-logger');\n\nexport interface ReqResLoggerOptions {\n  logger?: Logger;\n  logGraphQL?: boolean;\n  logGraphQLVariables?: boolean;\n  logResBody?: boolean;\n}\n\nconst getGraphQLData = (opts: ReqResLoggerOptions, body: any) => {\n  if (typeof body !== 'object' || !body) {\n    return;\n  }\n\n  const line = {};\n  if ('operationName' in body) {\n    Object.assign(line, { operationName: body.operationName });\n  }\n  if ('query' in body) {\n    Object.assign(line, { query: body.query });\n  }\n  if (opts.logGraphQLVariables === true && 'variables' in body) {\n    Object.assign(line, { variables: body.variables });\n  }\n  return line;\n};\n\n/**\n Middleware that logs incoming request and outgoing response\n @param {Object} [options] - middleware options\n @returns {Middleware}\n */\nexport const reqResLogger = (opts: ReqResLoggerOptions) => {\n\n  let loggerCfg: any;\n  if (opts.logger) {\n    loggerCfg = opts.logger;\n    loggerCfg.esTransformer = (msg: any) => {\n      msg.fields = JSON.stringify(msg.fields);\n      return msg;\n    };\n  }\n\n  const logger = loggerCfg ?? createLogger(loggerCfg);\n\n  const fn: koa.Middleware = async (ctx, next) => {\n\n    const request = ctx.request as koa.Request & {body: any};\n\n    debug('yield middleware: %s', reqResLogger.name);\n\n    const start = Date.now();\n    const reqLog = {\n      method: ctx.request.method,\n      url: ctx.request.url,\n      header: ctx.request.header\n    };\n\n    if (opts.logGraphQL === true && request.body) {\n      const graphQLData = getGraphQLData(opts, request.body);\n      if (graphQLData && Object.keys(graphQLData).length > 0) {\n        Object.assign(reqLog, {\n          graphql: graphQLData\n        });\n      }\n    }\n\n    // Log incoming request during downstream processing\n    logger.verbose('Request', reqLog);\n    // Call next middleware in stack\n    await next();\n    const delta = Math.ceil(Date.now() - start);\n\n    // Log outgoing response during upstream\n    // Generally only response successful request\n    // Error will be handled in the Koa.js error handler\n    // The response body and procTime are not logged\n    const resLog = {\n      procTime: delta,\n      status: ctx.response.status,\n      header: ctx.response.header\n    };\n\n    if (opts.logGraphQL === true && !('graphql' in reqLog) && request.body) {\n      const graphQLData = getGraphQLData(opts, request.body);\n      if (graphQLData && Object.keys(graphQLData).length > 0) {\n        Object.assign(resLog, {\n          graphql: graphQLData\n        });\n      }\n    }\n\n    if (opts.logResBody === true) {\n      Object.assign(resLog, { body: ctx.body });\n    }\n    // `procTime` is in millisecond\n    logger.verbose('Response', resLog);\n  };\n\n  return fn;\n};\n", "import {\n  GraphQLObjectType, GraphQLInputObjectType, GraphQLString,\n  GraphQLEnumType, GraphQLList, GraphQLNonNull\n} from 'graphql';\n\n\n// export const AccessControlnputTargetType = new GraphQLInputObjectType({\n//   name: 'AccessControlnputTargetType',\n//   description: 'Generic command resource.',\n//   fields: () => ({\n//     subject: {\n//       type: new GraphQLList(InputAttribute),\n//       description: 'Entity requesting access.',\n//     },\n//     resources: {\n//       type: new GraphQLList(InputAttribute),\n//       description: 'Targeted resources',\n//     },\n//     action: {\n//       type: new GraphQLList(InputAttribute),\n//       description: 'Targeted action',\n//     },\n//   }),\n// });\n\nexport const AccessControlEffectType = new GraphQLEnumType({\n  name: 'AccessControlEffect',\n  description: 'Effect resulting from a rule, policy or policy set',\n  values: {\n    PERMIT: {\n      value: 'PERMIT',\n      description: 'Permit operation',\n    },\n    DENY: {\n      value: 'DENY',\n      description: 'Deny operation',\n    },\n  }\n});\n\nexport const AccessControlDecisionType = new GraphQLEnumType({\n  name: 'AccessControlDecision',\n  description: 'Decision from an access control response',\n  values: {\n    PERMIT: {\n      value: 'PERMIT',\n      description: 'Permit operation',\n    },\n    DENY: {\n      value: 'DENY',\n      description: 'Deny operation',\n    },\n    INDETERMINATE: {\n      value: 'INDETERMINATE',\n      description: 'Indeterminate result (no targets are applicable to request)',\n    }\n  }\n});\n\n\nexport const AttributeType = new GraphQLObjectType({\n  name: 'Attribute',\n  description: 'An ID-value attribute',\n  fields: () => ({\n    id: {\n      type: new GraphQLNonNull(GraphQLString),\n      description: 'Attribute ID'\n    },\n    value: {\n      type: new GraphQLNonNull(GraphQLString),\n      description: 'Attribute value'\n    }\n  })\n});\n\nexport const AttributeInputType = new GraphQLInputObjectType({\n  name: 'InputAttribute',\n  description: 'Attribute from a Target property',\n  fields: () => ({\n    id: {\n      type: new GraphQLNonNull(GraphQLString),\n      description: 'Attribute ID',\n    },\n    value: {\n      type: new GraphQLNonNull(GraphQLString),\n      description: 'Attribute value'\n    }\n  })\n});\n\n\nexport const AccessControlTargetType = new GraphQLObjectType({\n  name: 'AccessControlTarget',\n  description: 'Generic command resource.',\n  fields: () => ({\n    subject: {\n      type: new GraphQLList(AttributeType),\n      description: 'Entity requesting access.',\n    },\n    resources: {\n      type: new GraphQLList(AttributeType),\n      description: 'Targeted resources',\n    },\n    action: {\n      type: new GraphQLList(AttributeType),\n      description: 'Targeted action',\n    },\n  }),\n});\n", "import { GraphQLScalarType, Kind } from 'graphql';\n\nexport const DateType = new GraphQLScalarType({\n  name: 'Date',\n  description: 'Date custom scalar type',\n  parseValue: (value: any) => {\n    if (value === 0) {\n      return null;\n    }\n    return new Date(value);\n  },\n  serialize: (value: any) => {\n    // This is the object received back from the DB\n    if (value === 0) {\n      return null;\n    }\n    return new Date(value);\n  },\n  parseLiteral: (ast): any => {\n    if (ast.kind === Kind.STRING) {\n      if (ast.value === '0') {\n        return null;\n      }\n      return (new Date(ast.value)).getTime();\n    }\n    return null;\n  },\n});\n", "import {\n  GraphQLInputObjectType, GraphQLString,\n  GraphQLEnumType, GraphQLNonNull\n} from 'graphql';\n\n\nconst FilterOperationEnumType = new GraphQLEnumType({\n  name: 'FilterOperationEnumType',\n  description: 'Filters the fields based on the operation specified',\n  values: {\n    lt: {\n      value: 'lt',\n      description: 'Filter fields lesser than the the specified value',\n    },\n    lte: {\n      value: 'lte',\n      description: 'Filter fields lesser than or equal to the the specified value',\n    },\n    gt: {\n      value: 'gt',\n      description: 'Filter fields greater than the the specified value',\n    },\n    gte: {\n      value: 'gte',\n      description: 'Filter fields greater than or equal to the the specified value',\n    },\n    eq: {\n      value: 'eq',\n      description: 'Filter fields exactly equal to the the specified value',\n    },\n    isEmpty: {\n      value: 'isEmpty',\n      description: 'Filter fields exactly equal to the the specified value',\n    },\n  }\n});\n\nconst FilterFieldValueEnumType = new GraphQLEnumType({\n  name: 'FilterFieldValueEnumType',\n  description: '',\n  values: {\n    STRING: {\n      value: 'string'\n    },\n    BOOLEAN: {\n      value: 'boolean'\n    },\n    NUMBER: {\n      value: 'number'\n    },\n    DATE: {\n      value: 'date'\n    }\n  }\n});\n\nexport const FilterOptionsInputType = new GraphQLInputObjectType({\n  name: 'FilterOptionsInputType',\n  description: 'Filter options',\n  fields: {\n    field: {\n      type: new GraphQLNonNull(GraphQLString),\n      description: 'Field names based on which the filtering needs to be done',\n    },\n    operation: {\n      type: new GraphQLNonNull(FilterOperationEnumType),\n      description: 'Filter Operation options',\n    },\n    value: {\n      type: new GraphQLNonNull(GraphQLString),\n      description: 'Field value',\n    },\n    type: {\n      type: FilterFieldValueEnumType,\n      description: 'Value type (optional, default is STRING)',\n      defaultValue: 'string'\n    }\n  }\n});\n", "import {\n  GraphQLObjectType, GraphQLString,\n  GraphQLList, GraphQLNonNull\n} from 'graphql';\nimport { DateType } from './DateType.js';\nimport { AttributeType } from './AccessControlTypes.js';\n\nexport const MetaType = new GraphQLObjectType({\n  name: 'MetaType',\n  description: 'Meta info common to all resources',\n  fields: () => ({\n    created: {\n      type: new GraphQLNonNull(DateType),\n      description: 'Creation timestamp',\n    },\n    modified: {\n      type: new GraphQLNonNull(DateType),\n      description: 'Last-modification timestamp',\n    },\n    modified_by: {\n      type: GraphQLString,\n      description: 'UUID from last User who modified the resource',\n    },\n    owner: {\n      type: new GraphQLList(new GraphQLNonNull(AttributeType)),\n      description: 'A list of attributes describing the owner\\'s entities',\n    }\n  }),\n});\n\n\n", "import {\n  GraphQLInputObjectType, GraphQLString\n} from 'graphql';\n\nexport const ScopeInputType = new GraphQLInputObjectType({\n  name: 'ScopeInputType',\n  description: 'A role scope',\n  fields: () => ({\n    entity: {\n      type: GraphQLString,\n    },\n    instance: {\n      type: GraphQLString,\n    }\n  }),\n});\n", "import { GraphQLInputObjectType, GraphQLString, GraphQLEnumType, GraphQLNonNull } from 'graphql';\n\nexport const SortEnumType = new GraphQLEnumType({\n  name: 'SortEnumType',\n  description: 'Sorts the fields in either Ascending or Descending order',\n  values: {\n    ASC: {\n      value: 'asc',\n      description: 'Sort in Ascending order',\n    },\n    DESC: {\n      value: 'desc',\n      description: 'Sort in Descending order',\n    },\n  }\n});\n\nexport const SortInputType =  new GraphQLInputObjectType({\n  name: 'SortInputType',\n  description: 'For sotring based on fileds',\n  fields: () => ({\n    field: {\n      type: new GraphQLNonNull(GraphQLString),\n      description: 'Field names to be sorted on',\n    },\n    order: {\n      type: SortEnumType,\n      description: 'Sorting Options',\n      defaultValue: 'asc'\n    },\n  }),\n});\n", "import { GraphQLObjectType, GraphQLString, GraphQLNonNull, GraphQLInt } from 'graphql';\n\nexport const OperationStatusType = new GraphQLObjectType({\n  name: 'StatusType',\n  description: 'Objects with error returned for GraphQL operations',\n  fields: () => ({\n    code: {\n      type: new GraphQLNonNull(GraphQLInt),\n      description: 'Status code',\n    },\n    message: {\n      type: GraphQLString,\n      description: 'Status message description',\n    }\n  }),\n});\n\n", "{\n  \"keys\": [\n    {\n      \"crv\": \"P-256\",\n      \"x\": \"LvkpGkSqBj42-JT6IPAXDnMImUYHE2OHVxr1y7xHb9s\",\n      \"y\": \"da606U2Egy_EpP0Y4uinF0gGWFkYfEQPRHWxf-1TZkw\",\n      \"d\": \"El7YVgpPfAFRZm7tVCuUHHaRr5ofAXqDTWWYxBG8go0\",\n      \"kty\": \"EC\",\n      \"kid\": \"liFgkSaAc7Gn016hExbfJpMSV4HTIN2ddkR9yB_7Kn4\",\n      \"use\": \"sig\"\n    },\n    {\n      \"crv\": \"Ed25519\",\n      \"x\": \"orhD-nzhu3BWBMhMJdUEotaoFit_0_WI7bUHzbmBqTc\",\n      \"d\": \"73REG9l-07vbuW2pCBMwym-C0u36kXNRYMR8d2Gg4Xc\",\n      \"kty\": \"OKP\",\n      \"kid\": \"ljb-8cJWwjqrBvCzO7SawCiM8KW8ZdwKTSybTNnDhKA\",\n      \"use\": \"sig\"\n    },\n    {\n      \"e\": \"AQAB\",\n      \"n\": \"sR3TjTAhQViMi34FJamgd8HDCbqws0l17NpC8148gHlSVck3Ek4_piWv7SBRdFEaDxxinCcmni_Zt51j_oTNs6Zr6pVGGu7ait7tkMnAu7EDhv78Vk1f9ikU-Gan03AJCgn7dvXC3RJHzOv3AHebKGnGFojk9n9eogFE93ZYqtOqTHjrn7Lawz-g0KQ5CZenFNRepX5WKn2QDth9-C21zkWkHIAl2_thv3U3Cz_y66Ov-fHXOiBLDSxb8ZOcqkD8_mrKA5dBtignkBNGF13Zf3HSy9e-F318GNMWOqKE58Myjm86r2Hs1njGblXa3fo64ucHvBTpwyN-JUn3lLOgtQ\",\n      \"d\": \"IwDaBlU0vU1auVa2fbMAW6qXeRzEPyqNe7nG8YH2Qw23D-0sTRnZymQ4WIzCjFJa7BGYC3RRVYHvbTJVyL9GR_Lj8QB_UmNSHY_hM3Qr-uwI3m0WQZgZFvUXh-AB2u-RWcKPR_tZ_4bVWdJohlcc-ueslleHqI-TjEDj-GQTMe8-1kzIukZe1c8SWAgJqEFbUZJZ0_SfGzjOxFXqZMrHgIJ4tzcskecgr9j74XyocyKqz7gEUlRCaze-rAqxjexDHTOE__dmzTCNmJR7Sj1dlfvSWnh-Tf8IfVTBBE_KvcZutoKgsEomI4fZnAO8F7X17Qn2GoQi1ynWn5myfk3LIQ\",\n      \"p\": \"1UAx4VV7Z85gP0uLkmicne1X6AshovdKUwsPXU8GfFJ6eSQdngQXtu-d3xsBqlcl8lmAWgjMoEDif6qwp3VNyEjedVmYGiEj26N4YO8SOuR0n0TDrerMoqXuIHz250qiWxgo0BFnbrmvfkvukCunOHqH44QQKI4rcOwvUuvXp1c\",\n      \"q\": \"1J9CeU9z1G91b5xLDvvXYznf2uLQEZojs_quHSDoXXhvHdAQ3V2-7oIrjItZwi4f20565YHMseyAsQjgKL4V0G5DE5tcyZETlFJlDpxYHVpyhXgAH9vI6fcjm-gH-lJQMIuYVvPIZh-sFe7oeb-5XHpmWl3D-hDTGENgLPYEbNM\",\n      \"dp\": \"FdIVyIror7yMWK2wQHD35akNn67T6EsJjenJzrBxZ3NBGPg7F5ovmwZ1zwiCaR21wlCqM4xG8_bvtkSPAvOb2-yo5rUePT463xShEroj0WbjEBEHPNqTyejUrvpagVw_tLaKJpBBVzEk5fV7GcF9wOe40-0FgkDZ7Rod1YxQas0\",\n      \"dq\": \"Fg-wRgYIbrJh7QK6hwN6hcEriPqfvDPSIIqSJlOTyJ8GaIF-PnnLpdO70QlkdtFyXL734XhmVM_FSpkxKQkQGmBWdWJZblCvR2SFN87hFaqc11xsJuIXJq-N8k9RBJgl2eOiGuOQl4gRwvTXCkrqYL4SgK3Z98hnHs1e3UtpiiE\",\n      \"qi\": \"Kw-BETk2ATglJsBJW2GQA_2oBmRGsX6OdYdmFtSogcSu5FPvrtzMOQ8zbAZF7k41NnC-cyKcWF66CYiNyZB_ScsXco0pqSDNA9FMaVYXIuLqGP0T53nViOkyaQxRk2Rd7ze8I2dSQa_3r7z7B-JM8G3nMmvUC86fIsFnvvxIwdk\",\n      \"kty\": \"RSA\",\n      \"kid\": \"A3wg_PDQau34B1c3mit_D6dSdV4aLf2zVehB2Bw49g8\",\n      \"use\": \"sig\"\n    }\n  ]\n}\n"],
  "mappings": "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CAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IAEAC,IACAC,IAEAC,IACAC,IACAC,IACAC,IACAC,IACAC,IAEAC,IAEAC,IAEAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IAEAC,IAEAC,IAEAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IAEAC,IAEAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IAEAC,IAEAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IASOC,IAOAC,IAOAC,IAOAC,IAOAC,IASAC,IASAC,IASAC,IASAC,IAOAC,IAOAC,IAOAC,IAUAC,IAOAC,IAOAC,IAQAC,IAQAC,IAQAC,IAOAC,IAOAC,IASAC,IAOAC,IAOAC,IAOAC,IAwBAC,IAOAC,IAOAC,IAOAC,IAOAC,IAOAC,IAOAC,IAOAC,IAOAC,IAOAC,IASAC,IASAC,IASAC,IAOAC,IAOAC,IAOAC,IAOAC,IAOAC,IAOAC,IAOAC,IAOAC,IAOAC,IAQAC,IAOAC,IAOAC,IAOAC,IAOAC,IAOAC,IAOAC,IAOAC,IAOAC,IAOAC,IAOAC,IAOAC,IAOAC,IAOAC,IAOAC,IASAC,IAOAC,IASAC,IAOAC,IAOAC,IASAC,IAOAC,IAOAC,IAQAC,IAQAC,IAQAC,IAUAC,IAOAC,IAmBAC,IAOAC,IAOAC,IAQAC,IAQAC,IAQAC,IAQAC,IAQAC,IAOAC,IAOAC,IAQAC,IAOAC,IAOAC,IAQAC,IAQAC,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B,IACXjB,IAOWkB,IACXjB,IAOWkB,IACXjB,IAOWkB,IACXjB,IAOWkB,IACXjB,IAOWkB,IACXjB,IAOWkB,IACXjB,IAOWkB,IACXjB,IAOWkB,IACXjB,IAOWkB,IACXjB,IAOWkB,IACXjB,IAOWkB,IACXjB,IAOWkB,IACXjB,IAiEWkB,IAAmD,CAC9D,GAAIlC,IACJ,UAAWC,IACX,QAASC,IACT,iBAAkBC,IAClB,kBAAmBC,IACnB,UAAWC,IACX,eAAgBC,IAChB,kBAAmBC,IACnB,mBAAoBC,IACpB,oBAAqBC,IACrB,QAASC,IACT,aAAcC,IACd,cAAeC,IACf,SAAUC,IACV,YAAaC,IACb,UAAWC,IACX,gBAAiBC,KAWbmB,IAA6B,OAC7BC,IAAiC,WAO1BC,IAAyBF,IAOzBG,IAA6BF,IAoB7BG,IACGI,GAAkC,CAC9CR,IACAC,IACD,ICx5HH,IAAAQ,IAAAC,GAAA,KAoBAC,QCpBA,IA4BMC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IAOOC,IAOAC,IAOAC,IASAC,IASAC,IAOAC,IAOAC,IAOAC,IAOAC,IAOAC,IAOAC,IAOAC,IASAC,IASAC,IAOAC,IASAC,IAOAC,IAOAC,IAOAC,IAOAC,IAOAC,IAOAC,IASAC,IASAC,IASAC,IASAC,IAsBAC,IAiBAC,IASAC,IASAC,IAO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IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACD,EAUGmF,IAAwC,gBACxCC,IAA8B,MAC9BC,IAAgC,QAChCC,IAA8B,MAOvBC,IACXJ,IAOWK,IAA0BJ,IAO1BK,IAA4BJ,IAO5BK,IAA0BJ,IA0B1BK,IACGuG,GAAoC,CAChD/G,IACAC,IACAC,IACAC,IACD,EAYGM,IAA4C,oBAC5CC,IAA2C,mBAC3CC,IAAkC,UAClCC,IAAkC,UAClCC,IAAkC,UAClCC,IAAqC,aACrCC,IAAgD,wBAChDC,IAAmC,WACnCC,IACJ,4BACIC,IAAoC,YACpCC,IAA0C,kBAC1CC,IAA4C,oBAC5CC,IAA6C,qBAC7CC,IAAwC,gBACxCC,IAAgD,wBAChDC,IAA8C,sBAC9CC,IAAyC,iBASlCC,IACXjB,IASWkB,IACXjB,IASWkB,IAA8BjB,IAS9BkB,IAA8BjB,IAS9BkB,IAA8BjB,IAS9BkB,IACXjB,IASWkB,IACXjB,IASWkB,IAA+BjB,IAS/BkB,IACXjB,IASWkB,IAAgCjB,IAShCkB,IACXjB,IASWkB,IACXjB,IASWkB,IACXjB,IASWkB,IACXjB,IASWkB,IACXjB,IASWkB,IACXjB,IASWkB,IACXjB,IAmEWkB,IACGoE,GAAoC,CAChDtG,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACAC,IACD,EAUGmB,IAAiC,MACjCC,IAAqC,UAO9BC,IAA6BF,IAO7BG,IACXF,IAoBWG,IACG+D,GAAuC,CACnDnE,IACAC,IACD,EAUGI,IAA2B,QAC3BC,IAA2B,QAC3BC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SACH,MAAO,aACT,IAAK,qBACL,IAAK,WACL,IAAK,aACL,IAAK,aACL,IAAK,YACL,IAAK,WACL,IAAK,aACL,IAAK,kBACH,MAAO,aACT,IAAK,SACL,IAAK,WACL,IAAK,cACL,IAAK,cACL,IAAK,mBACL,IAAK,WACL,IAAK,aACL,IAAK,eACL,IAAK,eACL,IAAK,aACL,IAAK,YACL,IAAK,WACL,IAAK,aACL,IAAK,kBACH,MAAO,aACT,IAAK,kBACL,IAAK,WACL,IAAK,WACL,IAAK,QACL,IAAK,SACL,IAAK,aACL,IAAK,aACL,IAAK,YACL,IAAK,WACL,IAAK,aACL,IAAK,kBACL,IAAK,eACH,MAAO,aACT,IAAK,cACL,IAAK,mBACL,IAAK,SACL,IAAK,aACL,IAAK,eACL,IAAK,aACL,IAAK,YACL,IAAK,WACL,IAAK,aACL,IAAK,kBACL,IAAK,SACH,MAAO,aACT,IAAK,cACL,IAAK,eACL,IAAK,UACH,MAAO,eACT,IAAK,cACL,IAAK,cACL,IAAK,aACL,IAAK,aACL,IAAK,YACL,IAAK,KACL,IAAK,SACH,MAAO,cACT,IAAK,cACL,IAAK,aACL,IAAK,YACH,MAAO,cACT,IAAK,cACL,IAAK,aACL,IAAK,YACH,MAAO,cACT,IAAK,cACL,IAAK,cACL,IAAK,aACL,IAAK,YACL,IAAK,cACL,IAAK,KACH,MAAO,cACT,IAAK,cACH,MAAO,cACT,IAAK,UACL,IAAK,MACL,IAAK,OACL,IAAK,SACL,IAAK,SACH,MAAO,SACT,IAAK,UACL,IAAK,SACH,MAAO,SACT,IAAK,cACL,IAAK,MACL,IAAK,YACL,IAAK,cACH,MAAO,YACT,IAAK,cACL,IAAK,aACL,IAAK,YACL,IAAK,UACL,IAAK,cACH,MAAO,cACT,IAAK,SACL,IAAK,eACL,IAAK,WACH,MAAO,eACT,IAAK,SACL,IAAK,eACL,IAAK,WACH,MAAO,eACT,IAAK,iBACL,IAAK,QACL,IAAK,SACL,IAAK,QACL,IAAK,cACL,IAAK,SACL,IAAK,aACL,IAAK,aACL,IAAK,YACL,IAAK,WACL,IAAK,aACL,IAAK,kBACL,IAAK,KACL,IAAK,SACL,IAAK,WACL,IAAK,eACL,IAAK,WACH,MAAO,eACT,IAAK,SACL,IAAK,eACL,IAAK,WACH,MAAO,eACT,IAAK,SACL,IAAK,cACL,IAAK,aACL,IAAK,aACL,IAAK,YACL,IAAK,WACL,IAAK,aACL,IAAK,kBACL,IAAK,KACL,IAAK,SACL,IAAK,eACL,IAAK,WACH,MAAO,eACT,IAAK,SACL,IAAK,eACL,IAAK,WACH,MAAO,eACT,IAAK,SACL,IAAK,eACL,IAAK,WACH,MAAO,eACT,IAAK,SACL,IAAK,eACL,IAAK,WACH,MAAO,eACT,IAAK,SACL,IAAK,eACL,IAAK,WACH,MAAO,eACT,IAAK,iBACL,IAAK,kBACH,MAAO,iBACT,IAAK,UACL,IAAK,WACL,IAAK,kBACL,IAAK,SACL,IAAK,UACL,IAAK,aACL,IAAK,MACL,IAAK,YACL,IAAK,QACH,MAAO,MACT,IAAK,UACH,MAAO,UACT,IAAK,OACL,IAAK,aACL,IAAK,UACL,IAAK,SACL,IAAK,WACH,MAAO,OACT,IAAK,sBACL,IAAK,SACL,IAAK,WACH,MAAO,SACT,IAAK,cACL,IAAK,cACH,MAAO,cACT,IAAK,aACL,IAAK,QACL,IAAK,WACL,IAAK,YACL,IAAK,YACL,IAAK,OACL,IAAK,cACL,IAAK,SACH,MAAO,YACT,IAAK,UACL,IAAK,gBACL,IAAK,SACL,IAAK,aACL,IAAK,SACL,IAAK,iBACL,IAAK,iBACL,IAAK,UACL,IAAK,WACL,IAAK,cACH,MAAO,SACT,IAAK,cACL,IAAK,aACL,IAAK,cACL,IAAK,kBACL,IAAK,cACL,IAAK,cACH,MAAO,cACT,IAAK,cACL,IAAK,WACH,MAAO,WACT,IAAK,YACL,IAAK,kBACL,IAAK,QACL,IAAK,UACL,IAAK,cACL,IAAK,SACL,IAAK,WACH,MAAO,WACT,IAAK,iBACH,MAAO,iBACT,QAAS,MAAO,SAClB,CACF,CAvRSC,EAAAF,IAAA,eAyRTD,IAAO,QAAU,CACf,YAAAC,GACF,ICjSA,IAAAG,IAAAC,EAAA,CAAAC,IAAAC,MAAA,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,CAC3C,MAAO,EACT,CAAC,EACDA,IAAQ,YAAcC,IAMtB,SAASA,IAAYC,EAAK,CACxB,MAAO,IAAIA,EAAI,QAAQC,IAAeC,GAAe,CAAC,GACxD,CAFSC,EAAAJ,IAAA,eAIT,IAAME,IAAgB,gCAEtB,SAASC,IAAgBF,EAAK,CAC5B,OAAOI,IAAgBJ,EAAI,WAAW,CAAC,CAAC,CAC1C,CAFSG,EAAAD,IAAA,mBAIT,IAAME,IAAkB,CACtB,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,MACA,MACA,MACA,UACA,MACA,MACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,GACA,GACA,MACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,OACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,GACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,SACF,ICtLA,IAAAC,GAAAC,EAAAC,IAAA,cAEA,OAAO,eAAeA,GAAS,aAAc,CAC3C,MAAO,EACT,CAAC,EACDA,GAAQ,MAAQ,OAChBA,GAAQ,qBAAuBC,IAC/BD,GAAQ,WAAaE,IACrBF,GAAQ,M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CAwET,SAASE,IACPpB,EACAO,EACAF,EACAJ,EACAE,EACAkB,EACAQ,EACAC,EACA,CAMA,GAJID,IAAkBC,GAKpB3B,EAAsB,IACpB0B,EACAC,EACAT,CACF,EAEA,OAGFlB,EAAsB,IAAI0B,EAAeC,EAAeT,CAAoB,EAC5E,IAAMU,EAAY/B,EAAQ,YAAY6B,CAAa,EAC7CG,EAAYhC,EAAQ,YAAY8B,CAAa,EAEnD,GAAI,CAACC,GAAa,CAACC,EACjB,OAGF,GAAM,CAACC,EAAWC,CAAwB,EACxCR,IACE1B,EACAK,EACA0B,CACF,EACI,CAACP,EAAWW,CAAwB,EACxCT,IACE1B,EACAK,EACA2B,CACF,EAGFL,IACE3B,EACAO,EACAF,EACAJ,EACAE,EACAkB,EACAY,EACAT,CACF,EAGA,QAAWY,KAA2BD,EACpCf,IACEpB,EACAO,EACAF,EACAJ,EACAE,EACAkB,EACAQ,EACAO,CACF,EAIF,QAAWC,KAA2BH,EACpCd,IACEpB,EACAO,EACAF,EACAJ,EACAE,EACAkB,EACAgB,EACAP,CACF,CAEJ,CArFS/B,EAAAqB,IAAA,oCAyFT,SAASkB,IACPtC,EACAK,EACAJ,EACAE,EACAkB,EACAkB,EACAC,EACAC,EACAC,EACA,CACA,IAAMnC,EAAY,CAAC,EACb,CAAC0B,EAAWU,CAAc,EAAI5B,IAClCf,EACAK,EACAkC,EACAC,CACF,EACM,CAAChB,EAAWoB,CAAc,EAAI7B,IAClCf,EACAK,EACAoC,EACAC,CACF,EAEAf,IACE3B,EACAO,EACAF,EACAJ,EACAE,EACAkB,EACAY,EACAT,CACF,EAGA,QAAWM,KAAiBc,EAC1B1B,IACElB,EACAO,EACAF,EACAJ,EACAE,EACAkB,EACAY,EACAH,CACF,EAIF,QAAWD,KAAiBc,EAC1BzB,IACElB,EACAO,EACAF,EACAJ,EACAE,EACAkB,EACAG,EACAK,CACF,EAKF,QAAWA,KAAiBc,EAC1B,QAAWb,KAAiBc,EAC1BxB,IACEpB,EACAO,EACAF,EACAJ,EACAE,EACAkB,EACAQ,EACAC,CACF,EAIJ,OAAOvB,CACT,CAlFSR,EA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K,WACV,KAAK,GAAK,WACV,KAAK,GAAK,WACV,KAAK,GAAK,WACV,KAAK,GAAK,WAEH,IACR,EAEAA,IAAO,UAAU,MAAQ,UAAY,CACpC,IAAIE,EAAIJ,IAAO,YAAY,EAAE,EAE7B,OAAAI,EAAE,aAAa,KAAK,GAAI,CAAC,EACzBA,EAAE,aAAa,KAAK,GAAI,CAAC,EACzBA,EAAE,aAAa,KAAK,GAAI,CAAC,EACzBA,EAAE,aAAa,KAAK,GAAI,EAAE,EAC1BA,EAAE,aAAa,KAAK,GAAI,EAAE,EAC1BA,EAAE,aAAa,KAAK,GAAI,EAAE,EAC1BA,EAAE,aAAa,KAAK,GAAI,EAAE,EAEnBA,CACR,EAEAR,IAAO,QAAUM,MCtDjB,IAAAG,IAAAC,EAAA,CAAAC,IAAAC,MAAA,cAEA,IAAIC,IAAW,KACXC,IAAO,KACPC,IAAS,KAAuB,OAEhCC,IAAI,CACP,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,UACA,UACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,UACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,UACA,UACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,UACA,WACA,WACA,WACA,WACA,UACA,WACA,UACA,WACA,UACA,WACA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,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,YAAY,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,YAAY,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,YAAY,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,YAAY,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,YAAY,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,YAAY,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,EAAE,OAAO,EAAE,CAAC,CAAC,IAAK,GAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,GAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,uBAAuB,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,uBAAuB,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,GAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,KAAM,IAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,IAAI,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,KAAM,IAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAM,IAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,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yBAAyB,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,yBAAyB,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,KAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,MAAM,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,OAAO,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,OAAO,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,OAAO,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,OAAO,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,OAAO,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,OAAO,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,OAAO,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,OAAO,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,OAAO,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAO,IAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,yBAAyB,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,IAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,MAAO,KAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,GAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,MAA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AAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,CACrB,EACA,GACA,EACF,EACMsC,GACJ,sbACIC,GAAWvC,GACf,CACE,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,CACrB,EACA,GACA,EACF,EACMwC,GACJ,uwGACIC,GAAWzC,GACf,CACE,OACA,OACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,CACrB,EACA,GACA,EACF,EACM0C,GAAW,uFACXC,GAAW3C,GACf,CACE,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,QACF,EACA,GACA,EACF,EACM4C,GACJ,uuHACIC,GAAW7C,GACf,CACE,CAAC,IAAK,GAAG,EACT,CAAC,OAAQ,MAAM,EACf,CAAC,OAAQ,MAAM,EACf,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,EACnB,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,CAAC,SAAU,QAAQ,CACrB,EACA,GACA,EACF,EACM8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ACX,KAAQ,WACR,KAAQ,uBACR,GAAM,CACR,EACA,QAAW,CACT,KAAQ,iBACR,GAAM,CACR,EACA,cAAiB,CACf,KAAQ,WACR,KAAQ,gBACR,GAAM,CACR,EACA,aAAgB,CACd,KAAQ,WACR,KAAQ,SACR,GAAM,EACR,EACA,WAAc,CACZ,KAAQ,mBACR,GAAM,EACR,CACF,EACA,OAAU,CACR,eAAkB,CAChB,OAAU,CACR,MAAS,CACP,KAAQ,QACR,GAAM,CACR,EACA,IAAO,CACL,KAAQ,QACR,GAAM,CACR,EACA,QAAW,CACT,KAAQ,wBACR,GAAM,CACR,CACF,CACF,EACA,cAAiB,CACf,OAAU,CACR,MAAS,CACP,KAAQ,QACR,GAAM,CACR,EACA,IAAO,CACL,KAAQ,QACR,GAAM,CACR,CACF,CACF,CACF,CACF,EACA,sBAAyB,CACvB,QAAW,SACX,OAAU,CACR,oBAAuB,CACrB,KAAQ,WACR,KAAQ,sBACR,GAAM,GACR,EACA,YAAe,CACb,KAAQ,WACR,KAAQ,cACR,GAAM,EACN,QAAW,CACT,UAAa,kBACf,CACF,EACA,SAAY,CACV,KAAQ,aACR,GAAM,EACR,EACA,aAAgB,CACd,KAAQ,oBACR,GAAM,EACN,QAAW,CACT,QAAW,aACX,UAAa,kBACf,CACF,CACF,EACA,WAAc,CACZ,CACE,IACA,SACF,CACF,EACA,OAAU,CACR,YAAe,CACb,OAAU,CACR,OAAU,CACR,KAAQ,QACR,GAAM,CACR,EACA,SAAY,CACV,KAAQ,SACR,GAAM,CACR,EACA,KAAQ,CACN,KAAQ,SACR,GAAM,CACR,EACA,SAAY,CACV,KAAQ,OACR,GAAM,CACR,EACA,SAAY,CACV,KAAQ,OACR,GAAM,CACR,CACF,EACA,SAAY,CACV,CACE,EACA,CACF,CACF,CACF,EACA,kBAAqB,CACnB,OAAU,CACR,YAAe,EACf,WAAc,CAChB,CACF,CACF,CACF,EACA,qBAAwB,CACtB,QAAW,SACX,OAAU,CACR,KAAQ,CACN,KAAQ,SACR,GAAM,CACR,EACA,OAAU,CACR,KAAQ,QACR,GAAM,CACR,EACA,MAAS,CACP,KAA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A,aAAgB,CACd,KAAQ,SACR,GAAM,EACR,EACA,qBAAwB,CACtB,KAAQ,SACR,GAAM,EACR,EACA,YAAe,CACb,KAAQ,SACR,GAAM,EACR,EACA,SAAY,CACV,KAAQ,aACR,GAAM,EACR,EACA,oBAAuB,CACrB,KAAQ,WACR,KAAQ,sBACR,GAAM,GACR,CACF,EACA,WAAc,CACZ,CACE,IACA,SACF,CACF,EACA,SAAY,CACV,CACE,GACA,EACF,EACA,CACE,GACA,EACF,EACA,sBACF,EACA,OAAU,CACR,aAAgB,CACd,OAAU,CACR,MAAS,EACT,UAAa,EACb,aAAgB,CAClB,CACF,CACF,CACF,EACA,eAAkB,CAChB,QAAW,SACX,OAAU,CACR,qBAAwB,CACtB,KAAQ,OACR,GAAM,CACR,EACA,6BAAgC,CAC9B,KAAQ,OACR,GAAM,CACR,EACA,WAAc,CACZ,KAAQ,OACR,GAAM,CACR,EACA,SAAY,CACV,KAAQ,OACR,GAAM,CACR,EACA,mCAAsC,CACpC,KAAQ,OACR,GAAM,GACN,QAAW,CACT,WAAc,EAChB,CACF,EACA,SAAY,CACV,KAAQ,aACR,GAAM,EACR,EACA,oBAAuB,CACrB,KAAQ,WACR,KAAQ,sBACR,GAAM,GACR,CACF,EACA,WAAc,CACZ,CACE,IACA,SACF,CACF,EACA,SAAY,CACV,CACE,EACA,CACF,EACA,CACE,EACA,CACF,EACA,CACE,EACA,CACF,EACA,CACE,EACA,CACF,EACA,CACE,EACA,CACF,CACF,CACF,EACA,aAAgB,CACd,QAAW,SACX,OAAU,CACR,MAAS,CACP,KAAQ,QACR,GAAM,EACN,QAAW,CACT,QAAW,QACb,CACF,EACA,OAAU,CACR,KAAQ,OACR,GAAM,CACR,EACA,OAAU,CACR,KAAQ,SACR,GAAM,EACN,QAAW,CACT,QAAW,WACb,CACF,EACA,KAAQ,CACN,KAAQ,OACR,GAAM,CACR,EACA,eAAkB,CAChB,KAAQ,OACR,GAAM,EACR,EACA,WAAc,CACZ,KAAQ,OACR,GAAM,CACR,EACA,KAAQ,CACN,KAAQ,OACR,GAAM,GACN,QAAW,CACT,WAAc,EAChB,CACF,EACA,YAAe,CACb,KAAQ,OACR,GAAM,EACR,EACA,UAAa,CACX,KAAQ,kBACR,GAAM,EACR,EACA,QAAW,CACT,KAAQ,WACR,KAAQ,mBACR,GAAM,EACR,EACA,gBAAmB,CACjB,KAAQ,WACR,KAAQ,iBACR,GAAM,EACR,EACA,SAAY,CACV,KAAQ,aACR,GAAM,EACR,EACA,eAAkB,CAChB,KAAQ,iBACR,GAAM,EACR,EACA,oBAAuB,CACrB,KAAQ,WACR,KAAQ,sBACR,GAAM,GACR,CACF,EACA,WAAc,CACZ,CACE,IACA,SACF,CACF,EACA,SAAY,CACV,CACE,EACA,CACF,EACA,CACE,GACA,EACF,CACF,EACA,OAAU,CACR,MAAS,CACP,OAAU,CACR,OAAU,EACV,KAAQ,EACR,aAAgB,CAClB,CACF,EACA,OAAU,CACR,OAAU,CACR,UAAa,EACb,UAAa,EACb,UAAa,CACf,CACF,EACA,gBAAmB,CACjB,OAAU,CACR,kBAAqB,EACrB,kBAAqB,EACrB,iBAAoB,CACtB,CACF,EACA,iBAAoB,CAClB,OAAU,CACR,oBAAuB,EACvB,iBAAoB,EACpB,4BAA+B,EAC/B,oBAAuB,EACvB,kBAAqB,EACrB,kBAAqB,EACrB,iBAAoB,EACpB,uBAA0B,EAC1B,oBAAuB,EACvB,mBAAsB,CACxB,CACF,EACA,eAAkB,CAChB,OAAU,CACR,QAAW,CACT,KAAQ,UACR,GAAM,CACR,EACA,MAAS,CACP,KAAQ,SACR,GAAM,CACR,CACF,CACF,EACA,eAAkB,CAChB,OAAU,CACR,kBAAqB,CACnB,KAAQ,UACR,GAAM,CACR,EACA,kBAAqB,CACnB,KAAQ,UACR,GAAM,CACR,EACA,mBAAsB,CACpB,KAAQ,SACR,GAAM,CACR,EACA,eAAkB,CAChB,KAAQ,UACR,GAAM,CACR,CACF,CACF,CACF,CACF,EACA,aAAgB,CACd,QAAW,SACX,OAAU,CACR,SAAY,CACV,KAAQ,aACR,GAAM,CACR,EACA,oBAAuB,CACrB,KAAQ,WACR,KAAQ,sBACR,GAAM,GACR,CACF,EACA,WAAc,CACZ,CACE,IACA,SACF,CACF,CACF,EACA,YAAe,CACb,QAAW,SACX,OAAU,CACR,WAAc,CACZ,KAAQ,OACR,GAAM,CACR,EACA,WAAc,CACZ,KAAQ,OACR,GAAM,CACR,EACA,mCAAsC,CACpC,KAAQ,OACR,GAAM,EACN,QAAW,CACT,WAAc,EAChB,CACF,EACA,SAAY,CACV,KAAQ,aACR,GAAM,CACR,EACA,oBAAuB,CACrB,KAAQ,WACR,KAAQ,sBACR,GAAM,GACR,CACF,EACA,WAAc,CACZ,CACE,IACA,SACF,CACF,EACA,SAAY,CACV,CACE,EACA,CACF,CACF,CACF,EACA,iBAAoB,CAClB,QAAW,SACX,OAAU,CACR,WAAc,CACZ,KAAQ,OACR,GAAM,CACR,EACA,SAAY,CACV,KAAQ,aACR,GAAM,CACR,EACA,YAAe,CACb,KAAQ,OACR,GAAM,CACR,EACA,eAAkB,CAChB,KAAQ,8BACR,GAAM,CACR,EACA,oBAAuB,CACrB,KAAQ,WACR,KAAQ,sBACR,GAAM,GACR,CACF,EACA,WAAc,CACZ,CACE,IACA,SACF,CACF,CACF,EACA,eAAkB,CAChB,QAAW,SACX,OAAU,CACR,SAAY,CACV,KAAQ,aACR,GAAM,EACR,EACA,WAAc,CACZ,KAAQ,OACR,GAAM,EACR,EACA,oBAAuB,CACrB,KAAQ,WACR,KAAQ,sBACR,GAAM,GACR,CACF,EACA,WAAc,CACZ,CACE,IACA,SACF,CACF,CACF,EACA,cAAiB,CACf,QAAW,SACX,OAAU,CACR,WAAc,CACZ,KAAQ,OACR,GAAM,EACR,EACA,iBAAoB,CAClB,KAAQ,mBACR,GAAM,GACN,QAAW,CACT,QAAW,qBACb,CACF,EACA,SAAY,CACV,KAAQ,aACR,GAAM,EACR,EACA,oBAAuB,CACrB,KAAQ,WACR,KAAQ,sBACR,GAAM,GACR,CACF,EACA,WAAc,CACZ,CACE,IACA,SACF,CACF,EACA,OAAU,CACR,iBAAoB,CAClB,OAAU,CACR,oBAAuB,EACvB,gBAAmB,EACnB,WAAc,CAChB,CACF,CACF,CACF,EACA,oBAAuB,CACrB,QAAW,SACX,OAAU,CACR,KAAQ,CACN,KAAQ,WACR,KAAQ,WACR,GAAM,CACR,EACA,gBAAmB,CACjB,KAAQ,SACR,GAAM,CACR,EACA,iBAAoB,CAClB,KAAQ,SACR,GAAM,CACR,EACA,iBAAoB,CAClB,KAAQ,QACR,GAAM,CACR,EACA,YAAe,CACb,KAAQ,SACR,GAAM,CACR,EACA,YAAe,CACb,KAAQ,QACR,GAAM,CACR,EACA,eAAkB,CAChB,KAAQ,SACR,GAAM,CACR,CACF,EACA,OAAU,CACR,SAAY,CACV,OAAU,CACR,SAAY,CACV,KAAQ,WACR,KAAQ,SACR,GAAM,CACR,EACA,YAAe,CACb,KAAQ,WACR,KAAQ,OACR,GAAM,CACR,CACF,CACF,CACF,CACF,EACA,WAAc,CACZ,QAAW,SACX,OAAU,CACR,cAAiB,CACf,KAAQ,gBACR,GAAM,EACN,QAAW,CACT,UAAa,oBACb,QAAW,mBACX,qCAAsC,eACtC,2BAA4B,eAC5B,yBAA0B,UAC5B,CACF,EACA,SAAY,CACV,KAAQ,WACR,GAAM,EACN,QAAW,CACT,UAAa,oBACb,QAAW,mBACX,qCAAsC,eACtC,2BAA4B,iBAC5B,yBAA0B,MAC5B,CACF,EACA,sBAAyB,CACvB,KAAQ,wBACR,GAAM,EACN,QAAW,CACT,UAAa,oBACb,QAAW,mBACX,qCAAsC,eACtC,2BAA4B,iBAC5B,yBAA0B,QAC5B,CACF,EACA,eAAkB,CAChB,KAAQ,iBACR,GAAM,EACN,QAAW,CACT,UAAa,oBACb,QAAW,mBACX,qCAAsC,eACtC,2BAA4B,iBAC5B,yBAA0B,QAC5B,CACF,EACA,gBAAmB,CACjB,KAAQ,kBACR,GAAM,EACN,QAAW,CACT,UAAa,oBACb,QAAW,mBACX,qCAAsC,eACtC,2BAA4B,iBAC5B,yBAA0B,iBAC5B,CACF,EACA,WAAc,CACZ,KAAQ,aACR,GAAM,EACN,QAAW,CACT,UAAa,oBACb,QAAW,mBACX,qCAAsC,eACtC,2BAA4B,iBAC5B,yBAA0B,OAC5B,CACF,EACA,mBAAsB,CACpB,KAAQ,qBACR,GAAM,EACN,QAAW,CACT,UAAa,mBACb,QAAW,qBACX,qCAAsC,eACtC,2BAA4B,eAC5B,yBAA0B,WAC5B,CACF,EACA,wBAA2B,CACzB,KAAQ,4CACR,GAAM,EACN,QAAW,CACT,UAAa,mBACb,QAAW,mBACX,qCAAsC,eACtC,2BAA4B,eAC5B,yBAA0B,kBAC5B,CACF,CACF,EACA,WAAc,CACZ,CACE,IACA,IACF,EACA,CACE,KACA,IACF,EACA,CACE,IACA,GACF,CACF,EACA,SAAY,CACV,CACE,IACA,GACF,CACF,EACA,OAAU,CACR,cAAiB,CACf,OAAU,CACR,uBAA0B,EAC1B,SAAY,EACZ,SAAY,EACZ,gBAAmB,CACrB,CACF,EACA,SAAY,CACV,OAAU,CACR,kBAAqB,EACrB,KAAQ,EACR,OAAU,CACZ,CACF,EACA,sBAAyB,CACvB,OAAU,CACR,gCAAmC,EACnC,OAAU,EACV,SAAY,CACd,CACF,EACA,eAAkB,CAChB,OAAU,CACR,wBAA2B,EAC3B,OAAU,EACV,KAAQ,CACV,CACF,EACA,gBAAmB,CACjB,OAAU,CACR,yBAA4B,EAC5B,gBAAmB,EACnB,UAAa,CACf,CACF,EACA,WAAc,CACZ,OAAU,CACR,oBAAuB,EACvB,MAAS,EACT,mBAAsB,CACxB,CACF,EACA,mBAAsB,CACpB,OAAU,CACR,6BAAgC,EAChC,UAAa,EACb,aAAgB,CAClB,CACF,EACA,kBAAqB,CACnB,OAAU,CAAC,EACX,SAAY,CACV,CACE,EACA,SACF,CACF,EACA,OAAU,CACR,wBAA2B,CACzB,OAAU,CACR,kCAAqC,EACrC,WAAc,EACd,iBAAoB,EACpB,UAAa,EACb,OAAU,CACZ,CACF,CACF,CACF,CACF,CACF,EACA,mBAAsB,CACpB,QAAW,SACX,OAAU,CACR,SAAY,CACV,KAAQ,WACR,KAAQ,2BACR,GAAM,CACR,EACA,eAAkB,CAChB,KAAQ,UACR,GAAM,CACR,EACA,eAAkB,CAChB,KAAQ,UACR,GAAM,CACR,CACF,EACA,OAAU,CACR,yBAA4B,CAC1B,OAAU,CACR,QAAW,CACT,KAAQ,UACR,GAAM,CACR,EACA,oBAAuB,CACrB,KAAQ,aACR,GAAM,CACR,EACA,cA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,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,oTAAqD,EAC7D,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,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,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,EAAE,QAAU,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM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EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,CACxG,IChLA,IAAAC,IAAAC,EAAA,CAAAC,IAAAC,MAAA,CAAAA,IAAA,SACA,CAAC,OAAO,mRAAuD,EAC/D,CAAC,OAAO,0KAAkC,EAC1C,CAAC,OAAO,+aAAkF,EAC1F,CAAC,OAAO,SAAI,EAAE,qWAAuE,EACrF,CAAC,OAAO,8EAAgB,EACxB,CAAC,OAAO,oBAAM,EACd,CAAC,OAAO,QAAG,EACX,CAAC,OAAO,0BAAM,EACd,CAAC,OAAO,uTAAsD,EAC9D,CAAC,OAAO,sCAAQ,EAChB,CAAC,OAAO,0BAAM,EACd,CAAC,OAAO,uBAAM,EACd,CAAC,OAAO,6EAAgB,EACxB,CAAC,OAAO,oBAAK,EACb,CAAC,OAAO,0WAAgE,EACxE,CAAC,OAAO,iBAAK,EACb,CAAC,OAAO,oQAAwD,EAChE,CAAC,OAAO,sIAA6B,EACrC,CAAC,OAAO,uEAAgB,EACxB,CAAC,OAAO,sFAAoB,EAC5B,CAAC,OAAO,sCAAS,EACjB,CAAC,OAAO,iEAAe,EACvB,CAAC,OAAO,4FAAmB,EAC3B,CAAC,OAAO,sCAAU,EAClB,CAAC,OAAO,uHAA0B,EAClC,CAAC,OAAO,+LAA2C,EACnD,CAAC,OAAO,6EAAkB,EAC1B,CAAC,OAAO,uKAAqC,EAC7C,CAAC,OAAO,+UAAuE,EAC/E,CAAC,OAAO,yaAAmF,EAC3F,CAAC,OAAO,uNAAyC,EACjD,CAAC,OAAO,+aAAkF,EAC1F,CAAC,OAAO,sCAAS,EACjB,CAAC,OAAO,8MAAuC,EAC/C,CAAC,OAAO,0BAAM,EACd,CAAC,OAAO,iKAAgC,EACxC,CAAC,OAAO,gLAAmC,EAC3C,CAAC,OAAO,WAAI,EACZ,CAAC,OAAO,2YAAwE,EAChF,CAAC,OAAO,kkBAAoG,EAC5G,CAAC,OAAO,kbAAmF,EAC3F,CAAC,OAAO,2qBAAuI,EAC/I,CAAC,OAAO,2bAAsF,EAC9F,CAAC,OAAO,ypBAAiI,EACzI,CAAC,OAAO,ydAAgG,EACxG,CAAC,OAAO,4pBAAkI,EAC1I,CAAC,OAAO,ocAAyF,EACjG,CAAC,OAAO,8qBAAwI,EAChJ,CAAC,OAAO,qeAAoG,EAC5G,CAAC,OAAO,ypBAAiI,EACzI,CAAC,OAAO,4dAAiG,EACzG,CAAC,OAAO,ysBAAiJ,EACzJ,CAAC,OAAO,0cAA2F,EACnG,CAAC,OAAO,wqBAAsI,EAC9I,CAAC,OAAO,ydAAgG,EACxG,CAAC,OAAO,mpBAA+H,EACvI,CAAC,OAAO,icAAwF,EAChG,CAAC,OAAO,kqBAAoI,EAC5I,CAAC,OAAO,keAAmG,EAC3G,CAAC,OAAO,urBAA2I,EACnJ,CAAC,OAAO,4dAAiG,EACzG,CAAC,OAAO,smBAAgH,EACxH,CAAC,OAAO,+XAAkE,EAC1E,CAAC,OAAO,yjBAAiG,EACzG,CAAC,OAAO,+XAAkE,EAC1E,CAAC,OAAO,+sBAAmJ,EAC3J,CAAC,OAAO,0QAAyD,EACjE,CAAC,OAAO,+OAAoD,EAC5D,CAAC,OAAO,svBAAgK,EACxK,CAAC,OAAO,qeAAoG,EAC5G,CAAC,OAAO,wtBAAsJ,EAC9J,CAAC,OAAO,ofAAyG,EACjH,CAAC,OAAO,kqBAAoI,EAC5I,CAAC,OAAO,ocAAyF,EACjG,CAAC,OAAO,yFAAoB,EAC5B,CAAC,OAAO,8JAA+B,EACvC,CAAC,OAAO,qVAAoE,EAC5E,CAAC,OAAO,0EAAgB,EACxB,CAAC,OAAO,8GAAwB,EAChC,CAAC,OAAO,2SAAqD,EAC7D,CAAC,OAAO,6EAAe,EACvB,CAAC,OAAO,oBAAK,EACb,CAAC,OAAO,qGAAqB,EAC7B,CAAC,OAAO,kDAAW,EACnB,CAAC,OAAO,2GAAoB,EAC5B,CAAC,OAAO,oEAAa,EACrB,CAAC,OAAO,oBAAK,EACb,CAAC,OAAO,6BAAO,EACf,CAAC,OAAO,kGAAmB,EAC3B,CAAC,OAAO,sIAA0B,EAClC,CAAC,OAAO,oBAAM,EACd,CAAC,OAAO,iBAAK,EACb,CAAC,OAAO,4CAAS,EACjB,CAAC,OAAO,+FAAkB,EAC1B,CAAC,OAAO,6EAAe,EACvB,CAAC,OAAO,gCAAQ,EAChB,CAAC,OAAO,kDAAW,EACnB,CAAC,OAAO,QAAG,EACX,CAAC,OAAO,gOAAyC,EACjD,CAAC,OAAO,mFAAgB,EACxB,CAAC,OAAO,sOAAiD,EACzD,CAAC,OAAO,SAAI,GAAG,QAAG,EAClB,CAAC,OAAO,SAAI,EAAE,SAAI,EAAE,SAAI,EAAE,uPAA4C,EAAE,EACxE,CAAC,OAAO,SAAI,GAAG,0BAAM,EACrB,CAAC,OAAO,SAAI,GAAG,SAAI,EAAE,eAAK,CAAC,EAC3B,CAAC,OAAO,SAAI,GAAG,eAAK,GAAG,8DAAa,EACpC,CAAC,OAAO,6BAAO,EACf,CAAC,OAAO,gOAAuC,EAC/C,CAAC,OAAO,4DAAY,EACpB,CAAC,OAAO,QAAG,EACX,CAAC,OAAO,keAAmG,EAC3G,CAAC,OAAO,8nBAAwH,EAChI,CAAC,OAAO,kbAAmF,EAC3F,CAAC,OAAO,+pBAAmI,EAC3I,CAAC,OAAO,icAAwF,EAChG,CAAC,OAAO,2qBAAuI,EAC/I,CAAC,OAAO,ucAA0F,EAClG,CAAC,OAAO,qqBAAqI,EAC7I,CAAC,OAAO,qbAAoF,EAC5F,CAAC,OAAO,4pBAAkI,CAC1I,ICzHA,IAAAC,IAAAC,EAAA,CAAAC,IAAAC,MAAA,cAMAA,IAAO,QAAU,CAkCf,SAAU,CACR,KAAM,QACN,MAAOC,EAAA,UAAY,CAAE,MAAO,MAAkC,EAAvD,SACP,UAAW,CAAE,OAAU,GAAM,SAAU,GAAK,EAC5C,eAAgB,CAAC,CAAE,KAAM,MAAQ,GAAI,KAAO,CAAC,CAC/C,EACA,WAAY,WACZ,QAAS,WACT,KAAM,WACN,WAAY,WACZ,MAAO,WACP,MAAO,WACP,WAAY,WACZ,MAAO,WACP,IAAK,WACL,MAAO,WAEP,MAAO,CACL,KAAM,QACN,MAAOA,EAAA,UAAY,CAAE,MAAO,MAA+B,EAApD,SACP,UAAW,CAAE,OAAU,GAAM,SAAU,GAAK,CAC9C,EAWA,OAAQ,QACR,SAAU,QACV,WAAY,QACZ,SAAU,QACV,gBAAiB,QACjB,MAAO,QAGP,WAAY,QACZ,MAAO,QACP,IAAK,QACL,MAAO,CACL,KAAM,QACN,MAAOA,EAAA,UAAY,CAAE,MAAO,MAA+B,EAApD,QACT,EAGA,IAAK,CACH,KAAM,QACN,MAAOA,EAAA,UAAY,CAAE,MAAO,OAA+B,OAAO,KAAkC,CAAE,EAA/F,QACT,EACA,KAAM,MACN,QAAS,MAOT,QAAS,CACP,KAAM,QACN,MAAOA,EAAA,UAAY,CAAE,MAAO,OAA+B,OAAO,KAAkC,CAAE,EAA/F,SACP,QAASA,EAAA,UAAY,CAAE,MAAO,MAAwC,EAA7D,WACT,eAAgB,CAAC,GAAI,EACrB,UAAW,CAAE,SAAK,KAAO,CAC3B,EAEA,QAAS,UAIT,WAAY,QACZ,MAAO,QACP,IAAK,QACL,MAAO,CACL,KAAM,QACN,MAAOA,EAAA,UAAY,CAAE,MAAO,MAA+B,EAApD,QACT,EAEA,QAAS,QACT,cAAe,QACf,MAAO,QACP,SAAU,QACV,OAAQ,QACR,YAAa,QACb,YAAa,QACb,QAAS,QAyBT,WAAY,QACZ,MAAO,QACP,IAAK,QACL,MAAO,CACL,KAAM,QACN,MAAOA,EAAA,UAAY,CAAE,MAAO,MAA+B,EAApD,QACT,EAGA,KAAM,YACN,UAAW,CACT,KAAM,QACN,MAAOA,EAAA,UAAY,CAAE,MAAO,OAA+B,OAAO,KAAmC,CAAE,EAAhG,SACP,eAAgB,CAId,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MACxF,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChG,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChG,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAChG,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,MAGxE,MAAQ,MAAQ,MAAQ,MAAQ,MAAQ,KAC1C,CACF,EAEA,OAAQ,YACR,OAAQ,YACR,OAAQ,WACV,ICxLA,IAAAC,IAAAC,EAAA,CAAAC,IAAAC,MAAA,cAEA,IAAIC,IAAe,MAIfC,IAAU,CACZ,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACF,EAGA,IAASC,IAAI,EAAGA,IAAID,IAAQ,OAAQC,MAC9BH,IAASE,IAAQC,GAAC,EACtBF,IAAaF,IAASC,GAAM,EADxB,IAAAA,IADGG,MCnBT,IAAAC,IAAAC,EAAA,CAAAC,IAAAC,MAAA,cAEA,IAAIC,IAAS,KAAwB,OAIrCD,IAAO,QAAU,SAAUE,EAAc,CACvC,IAAIC,EAAYD,EAAa,UAI7B,SAASE,EAAwBC,EAAMC,EAAS,CAC9C,KAAK,KAAOD,EACZC,EAAUA,GAAW,CAAC,EACtBA,EAAQ,cAAgB,GACxBH,EAAU,KAAK,KAAMG,CAAO,CAC9B,CALSC,EAAAH,EAAA,0BAOTA,EAAuB,UAAY,OAAO,OAAOD,EAAU,UAAW,CACpE,YAAa,CAAE,MAAOC,CAAuB,CAC/C,CAAC,EAEDA,EAAuB,UAAU,WAAa,SAAUI,EAAOC,EAAUC,EAAM,CAC7E,GAAI,OAAOF,GAAU,SACnB,OAAOE,EAAK,IAAI,MAAM,mDAAmD,CAAC,EAG5E,GAAI,CACF,IAAIC,EAAM,KAAK,KAAK,MAAMH,CAAK,EAC3BG,GAAOA,EAAI,QAAQ,KAAK,KAAKA,CAAG,EACpCD,EAAK,CACP,OAASE,EAAG,CACVF,EAAKE,CAAC,CACR,CACF,EAEAR,EAAuB,UAAU,OAAS,SAAUM,EAAM,CACxD,GAAI,CACF,IAAIC,EAAM,KAAK,KAAK,IAAI,EACpBA,GAAOA,EAAI,QAAQ,KAAK,KAAKA,CAAG,EACpCD,EAAK,CACP,OAASE,EAAG,CACVF,EAAKE,CAAC,CACR,CACF,EAEAR,EAAuB,UAAU,QAAU,SAAUS,EAAI,CACvD,IAAIC,EAAS,CAAC,EACd,YAAK,GAAG,QAASD,CAAE,EACnB,KAAK,GAAG,OAAQ,SAAUL,EAAO,CAAEM,EAAO,KAAKN,CAAK,CAAE,CAAC,EACvD,KAAK,GAAG,MAAO,UAAY,CACzBK,EAAG,KAAMZ,IAAO,OAAOa,CAAM,CAAC,CAChC,CAAC,EACM,IACT,EAIA,SAASC,EAAwBV,EAAMC,EAAS,CAC9C,KAAK,KAAOD,EACZC,EAAUA,GAAW,CAAC,EACtBA,EAAQ,SAAW,KAAK,SAAW,OACnCH,EAAU,KAAK,KAAMG,CAAO,CAC9B,CALS,OAAAC,EAAAQ,EAAA,0BAOTA,EAAuB,UAAY,OAAO,OAAOZ,EAAU,UAAW,CACpE,YAAa,CAAE,MAAOY,CAAuB,CAC/C,CAAC,EAEDA,EAAuB,UAAU,WAAa,SAAUP,EAAOC,EAAUC,EAAM,CAC7E,GAAI,CAACT,IAAO,SAASO,CAAK,GAAK,EAAEA,aAAiB,YAAe,OAAOE,EAAK,IAAI,MAAM,mDAAmD,CAAC,EAC3I,GAAI,CACF,IAAIC,EAAM,KAAK,KAAK,MAAMH,CAAK,EAC3BG,GAAOA,EAAI,QAAQ,KAAK,KAAKA,EAAK,KAAK,QAAQ,EACnDD,EAAK,CACP,OAASE,EAAG,CACVF,EAAKE,CAAC,CACR,CACF,EAEAG,EAAuB,UAAU,OAAS,SAAUL,EAAM,CACxD,GAAI,CACF,IAAIC,EAAM,KAAK,KAAK,IAAI,EACpBA,GAAOA,EAAI,QAAQ,KAAK,KAAKA,EAAK,KAAK,QAAQ,EACnDD,EAAK,CACP,OAASE,EAAG,CACVF,EAAKE,CAAC,CACR,CACF,EAEAG,EAAuB,UAAU,QAAU,SAAUF,EAAI,CACvD,IAAIF,EAAM,GACV,YAAK,GAAG,QAASE,CAAE,EACnB,KAAK,GAAG,OAAQ,SAAUL,EAAO,CAAEG,GAAOH,CAAM,CAAC,EACjD,KAAK,GAAG,MAAO,UAAY,CACzBK,EAAG,KAAMF,CAAG,CACd,CAAC,EACM,IACT,EAEO,CACL,uBAAwBP,EACxB,uBAAwBW,CAC1B,CACF,ICxGA,IAAAC,IAAAC,EAAA,CAAAC,IAAAC,KAAA,cAEA,IAAIC,IAAS,KAAwB,OAEjCC,IAAc,MACdC,IAAe,MAKnBH,GAAO,QAAQ,UAAY,KAG3BA,GAAO,QAAQ,mBAAqB,SACpCA,GAAO,QAAQ,sBAAwB,IAGvCA,GAAO,QAAQ,OAASI,EAAA,SAAiBC,EAAKC,EAAUC,EAAS,CAC/DF,EAAM,IAAMA,GAAO,IAEnB,IAAIG,EAAUR,GAAO,QAAQ,WAAWM,EAAUC,CAAO,EAErDE,EAAMD,EAAQ,MAAMH,CAAG,EACvBK,EAAQF,EAAQ,IAAI,EAExB,OAAQE,GAASA,EAAM,OAAS,EAAKT,IAAO,OAAO,CAACQ,EAAKC,CAAK,CAAC,EAAID,CACrE,EATwB,UAWxBT,GAAO,QAAQ,OAASI,EAAA,SAAiBO,EAAKL,EAAUC,EAAS,CAC3D,OAAOI,GAAQ,WACZX,GAAO,QAAQ,oBAClB,QAAQ,MAAM,0IAA0I,EACxJA,GAAO,QAAQ,kBAAoB,IAGrCW,EAAMV,IAAO,KAAK,IAAMU,GAAO,IAAK,QAAQ,GAG9C,IAAIC,EAAUZ,GAAO,QAAQ,WAAWM,EAAUC,CAAO,EAErDE,EAAMG,EAAQ,MAAMD,CAAG,EACvBD,EAAQE,EAAQ,IAAI,EAExB,OAAOF,EAASD,EAAMC,EAASD,CACjC,EAhBwB,UAkBxBT,GAAO,QAAQ,eAAiBI,EAAA,SAAyBS,EAAK,CAC5D,GAAI,CACF,OAAAb,GAAO,QAAQ,SAASa,CAAG,EACpB,EACT,MAAY,CACV,MAAO,EACT,CACF,EAPgC,kBAUhCb,GAAO,QAAQ,WAAaA,GAAO,QAAQ,OAC3CA,GAAO,QAAQ,aAAeA,GAAO,QAAQ,OAG7CA,GAAO,QAAQ,gBAAkB,CAAE,UAAW,IAAK,EAEnDA,GAAO,QAAQ,SAAWI,EAAA,SAAmBE,EAAU,CACrD,GAAI,CAACN,GAAO,QAAQ,UAAW,CAC7B,IAAIc,EAAM,MAEVd,GAAO,QAAQ,UAAY,CAAE,UAAW,IAAK,EAC7CG,IAAaH,GAAO,QAAQ,UAAWc,CAAG,CAC5C,CAOA,QAJID,EAAMb,GAAO,QAAQ,sBAAsBM,CAAQ,EAGnDS,EAAe,CAAC,IACP,CACX,IAAIC,EAAQhB,GAAO,QAAQ,gBAAgBa,CAAG,EAE9C,GAAIG,EAAS,OAAOA,EAEpB,IAAIC,EAAWjB,GAAO,QAAQ,UAAUa,CAAG,EAE3C,OAAQ,OAAOI,EAAU,CACvB,IAAK,SACHJ,EAAMI,EACN,MAEF,IAAK,SACH,QAASC,KAAOD,EAAYF,EAAaG,CAAG,EAAID,EAASC,CAAG,EAEvDH,EAAa,eAAgBA,EAAa,aAAeF,GAE9DA,EAAMI,EAAS,KACf,MAEF,IAAK,WACH,OAAKF,EAAa,eAAgBA,EAAa,aAAeF,GAK9DG,EAAQ,IAAIC,EAASF,EAAcf,GAAO,OAAO,EAEjDA,GAAO,QAAQ,gBAAgBe,EAAa,YAAY,EAAIC,EACrDA,EAET,QACE,MAAM,IAAI,MAAM,6BAA+BV,EAAW,oBAAsBO,EAAM,IAAI,CAC9F,CACF,CACF,EAhD0B,YAkD1Bb,GAAO,QAAQ,sBAAwB,SAAUM,EAAU,CAEzD,OAAQ,GAAKA,GAAU,YAAY,EAAE,QAAQ,qBAAsB,EAAE,CACvE,EAEAN,GAAO,QAAQ,WAAaI,EAAA,SAAqBE,EAAUC,EAAS,CAClE,IAAIS,EAAQhB,GAAO,QAAQ,SAASM,CAAQ,EACxCE,EAAU,IAAIQ,EAAM,QAAQT,EAASS,CAAK,EAE9C,OAAIA,EAAM,UAAYT,GAAWA,EAAQ,SAAUC,EAAU,IAAIN,IAAY,WAAWM,EAASD,CAAO,GAEjGC,CACT,EAP4B,cAS5BR,GAAO,QAAQ,WAAaI,EAAA,SAAqBE,EAAUC,EAAS,CAClE,IAAIS,EAAQhB,GAAO,QAAQ,SAASM,CAAQ,EACxCM,EAAU,IAAII,EAAM,QAAQT,EAASS,CAAK,EAE9C,OAAIA,EAAM,UAAY,EAAET,GAAWA,EAAQ,WAAa,MAAUK,EAAU,IAAIV,IAAY,SAASU,EAASL,CAAO,GAE9GK,CACT,EAP4B,cAc5BZ,GAAO,QAAQ,mBAAqBI,EAAA,SAA6Be,EAAc,CAC7E,GAAI,CAAAnB,GAAO,QAAQ,gBAGnB,KAAIoB,EAAU,MAAqBD,CAAY,EAG/CnB,GAAO,QAAQ,uBAAyBoB,EAAQ,uBAChDpB,GAAO,QAAQ,uBAAyBoB,EAAQ,uBAGhDpB,GAAO,QAAQ,aAAeI,EAAA,SAAuBE,EAAUC,EAAS,CACtE,OAAO,IAAIP,GAAO,QAAQ,uBAAuBA,GAAO,QAAQ,WAAWM,EAAUC,CAAO,EAAGA,CAAO,CACxG,EAF8B,gBAI9BP,GAAO,QAAQ,aAAeI,EAAA,SAAuBE,EAAUC,EAAS,CACtE,OAAO,IAAIP,GAAO,QAAQ,uBAAuBA,GAAO,QAAQ,WAAWM,EAAUC,CAAO,EAAGA,CAAO,CACxG,EAF8B,gBAI9BP,GAAO,QAAQ,gBAAkB,GACnC,EApBoC,sBAuBpC,IAAImB,IACJ,GAAI,CACFA,IAAe,QAAQ,QAAQ,CACjC,MAAY,CAAC,CAETA,KAAgBA,IAAa,UAC/BnB,GAAO,QAAQ,mBAAmBmB,GAAY,EAG9CnB,GAAO,QAAQ,aAAeA,GAAO,QAAQ,aAAe,UAAY,CACtE,MAAM,IAAI,MAAM,yGAAyG,CAC3H,IC9KF,IAAAqB,IAAAC,EAAA,CAAAC,IAAAC,MAAA,cAaAA,IAAO,QAAUC,IAOjB,SAASC,IAAqBC,EAAQ,CAGpC,QAFIC,EAAYD,EAAO,UAAU,MAAM,EAE9BE,EAAI,EAAGA,EAAID,EAAU,OAAQC,IACpC,GAAID,EAAUC,CAAC,EAAE,OAAS,SACxB,MAAO,GAIX,MAAO,EACT,CAVSC,EAAAJ,IAAA,wBAmBT,SAASD,IAAOE,EAAQ,CACtB,GAAI,CAACA,EACH,MAAM,IAAI,UAAU,6BAA6B,EAGnD,GAAI,OAAOA,EAAO,QAAW,WAAY,CAEvCA,EAAO,OAAO,EACd,MACF,CAGA,GAAKD,IAAqBC,CAAM,EAOhC,QAHII,EACAH,EAAYD,EAAO,UAAU,OAAO,EAE/B,EAAI,EAAG,EAAIC,EAAU,OAAQ,IACpCG,EAAWH,EAAU,CAAC,EAElB,EAAAG,EAAS,OAAS,WAAaA,EAAS,OAAS,YAKrDA,EAAS,KAAKJ,CAAM,CAExB,CA7BSG,EAAAL,IAAA,YCvCT,IAAAO,IAAAC,EAAA,CAAAC,IAAAC,MAAA,cAcA,IAAIC,IAAaC,IAAqB,EAClCC,IAAQ,MACRC,GAAc,MACdC,IAAQ,MACRC,IAAS,MAObN,IAAO,QAAUO,IAOjB,IAAIC,IAAgC,6BASpC,SAASC,IAAYC,EAAU,CAC7B,GAAI,CAACA,EAAU,OAAO,KAEtB,GAAI,CACF,OAAOL,IAAM,WAAWK,CAAQ,CAClC,OAAS,EAAG,CAEV,MAAKF,IAA8B,KAAK,EAAE,OAAO,EAG3CJ,GAAY,IAAK,iCAAkC,CACvD,SAAUM,EACV,KAAM,sBACR,CAAC,EANyD,CAO5D,CACF,CAfSC,EAAAF,IAAA,cA0BT,SAASF,IAAYK,EAAQC,EAASC,EAAU,CAC9C,IAAIC,EAAOD,EACPE,EAAOH,GAAW,CAAC,EAGvB,GAAID,IAAW,OACb,MAAM,IAAI,UAAU,6BAA6B,EAC5C,GAAI,OAAOA,GAAW,UAAYA,IAAW,MAAQ,OAAOA,EAAO,IAAO,WAC/E,MAAM,IAAI,UAAU,kCAAkC,EAgBxD,IAbIC,IAAY,IAAQ,OAAOA,GAAY,YAEzCG,EAAO,CACL,SAAUH,CACZ,GAGE,OAAOA,GAAY,aACrBE,EAAOF,EACPG,EAAO,CAAC,GAIND,IAAS,QAAa,OAAOA,GAAS,WACxC,MAAM,IAAI,UAAU,sCAAsC,EAI5D,GAAI,CAACA,GAAQ,CAAC,OAAO,QACnB,MAAM,IAAI,UAAU,+BAA+B,EAIrD,IAAIL,EAAWM,EAAK,WAAa,GAC7BA,EAAK,SACL,QAGAC,EAAQd,IAAM,MAAMa,EAAK,KAAK,EAG9BE,EAASF,EAAK,QAAU,MAAQ,CAAC,MAAMA,EAAK,MAAM,EAClD,SAASA,EAAK,OAAQ,EAAE,EACxB,KAEJ,OAAID,EAEKI,IAAWP,EAAQF,EAAUQ,EAAQD,EAAOG,IAAKL,CAAI,CAAC,EAGxD,IAAI,QAAQJ,EAAA,SAAmBU,EAASC,EAAQ,CACrDH,IAAWP,EAAQF,EAAUQ,EAAQD,EAAON,EAAA,SAAiBY,EAAKC,EAAK,CACrE,GAAID,EAAK,OAAOD,EAAOC,CAAG,EAC1BF,EAAQG,CAAG,CACb,EAH4C,SAG3C,CACH,EALmB,WAKlB,CACH,CAzDSb,EAAAJ,IAAA,cAkET,SAASkB,IAAMb,EAAQ,CAErBN,IAAOM,CAAM,EAGT,OAAOA,EAAO,OAAU,YAC1BA,EAAO,MAAM,CAEjB,CARSD,EAAAc,IAAA,QAqBT,SAASN,IAAYP,EAAQF,EAAUQ,EAAQD,EAAOH,EAAU,CAC9D,IAAIY,EAAW,GACXC,EAAO,GAKX,GAAIV,IAAU,MAAQC,IAAW,MAAQA,EAASD,EAChD,OAAOF,EAAKX,GAAY,IAAK,2BAA4B,CACvD,SAAUc,EACV,OAAQA,EACR,MAAOD,EACP,KAAM,kBACR,CAAC,CAAC,EAQJ,IAAIW,EAAQhB,EAAO,eACnB,GAAIA,EAAO,UAAagB,IAAUA,EAAM,UAAYA,EAAM,SAExD,OAAOb,EAAKX,GAAY,IAAK,oCAAqC,CAChE,KAAM,qBACR,CAAC,CAAC,EAGJ,GAAI,OAAOQ,EAAO,SAAa,KAAe,CAACA,EAAO,SACpD,OAAOG,EAAKX,GAAY,IAAK,yBAA0B,CACrD,KAAM,qBACR,CAAC,CAAC,EAGJ,IAAIyB,EAAW,EACXC,EAEJ,GAAI,CACFA,EAAUrB,IAAWC,CAAQ,CAC/B,OAASa,EAAK,CACZ,OAAOR,EAAKQ,CAAG,CACjB,CAEA,IAAIQ,EAASD,EACT,GACA,CAAC,EAGLlB,EAAO,GAAG,UAAWoB,CAAS,EAC9BpB,EAAO,GAAG,QAASqB,CAAO,EAC1BrB,EAAO,GAAG,OAAQsB,CAAM,EACxBtB,EAAO,GAAG,MAAOuB,CAAK,EACtBvB,EAAO,GAAG,QAASuB,CAAK,EAGxBR,EAAO,GAEP,SAASZ,GAAQ,CAIf,QAHIqB,EAAO,IAAI,MAAM,UAAU,MAAM,EAG5BC,EAAI,EAAGA,EAAID,EAAK,OAAQC,IAC/BD,EAAKC,CAAC,EAAI,UAAUA,CAAC,EAIvBX,EAAW,GAEPC,EACF,QAAQ,SAASW,CAAc,EAE/BA,EAAe,EAGjB,SAASA,GAAkB,CACzBL,EAAQ,EAEJG,EAAK,CAAC,GAERX,IAAKb,CAAM,EAGbE,EAAS,MAAM,KAAMsB,CAAI,CAC3B,CATSzB,EAAA2B,EAAA,iBAUX,CA3BS3B,EAAAI,EAAA,QA6BT,SAASiB,GAAa,CAChBN,GAEJX,EAAKX,GAAY,IAAK,kBAAmB,CACvC,KAAM,eACN,SAAUc,EACV,OAAQA,EACR,SAAUW,EACV,KAAM,iBACR,CAAC,CAAC,CACJ,CAVSlB,EAAAqB,EAAA,aAYT,SAASE,EAAQK,EAAO,CAClBb,IAEJG,GAAYU,EAAM,OAEdtB,IAAU,MAAQY,EAAWZ,EAC/BF,EAAKX,GAAY,IAAK,2BAA4B,CAChD,MAAOa,EACP,SAAUY,EACV,KAAM,kBACR,CAAC,CAAC,EACOC,EACTC,GAAUD,EAAQ,MAAMS,CAAK,EAE7BR,EAAO,KAAKQ,CAAK,EAErB,CAhBS5B,EAAAuB,EAAA,UAkBT,SAASC,EAAOZ,EAAK,CACnB,GAAI,CAAAG,EACJ,IAAIH,EAAK,OAAOR,EAAKQ,CAAG,EAExB,GAAIL,IAAW,MAAQW,IAAaX,EAClCH,EAAKX,GAAY,IAAK,4CAA6C,CACjE,SAAUc,EACV,OAAQA,EACR,SAAUW,EACV,KAAM,sBACR,CAAC,CAAC,MACG,CACL,IAAIW,EAASV,EACTC,GAAUD,EAAQ,IAAI,GAAK,IAC3B,OAAO,OAAOC,CAAM,EACxBhB,EAAK,KAAMyB,CAAM,CACnB,EACF,CAjBS7B,EAAAwB,EAAA,SAmBT,SAASF,GAAW,CAClBF,EAAS,KAETnB,EAAO,eAAe,UAAWoB,CAAS,EAC1CpB,EAAO,eAAe,OAAQsB,CAAM,EACpCtB,EAAO,eAAe,MAAOuB,CAAK,EAClCvB,EAAO,eAAe,QAASuB,CAAK,EACpCvB,EAAO,eAAe,QAASqB,CAAO,CACxC,CARStB,EAAAsB,EAAA,UASX,CAjJStB,EAAAQ,IAAA,cAwJT,SAASjB,KAAwB,CAC/B,GAAI,CACF,MAAO,SAAQ,aAAa,CAC9B,MAAY,CACV,MAAO,CAAC,CACV,CACF,CANSS,EAAAT,IAAA,wBAcT,SAASkB,IAAMqB,EAAI,CACjB,IAAIC,EAQJ,OALIzC,IAAW,gBACbyC,EAAM,IAAIzC,IAAW,cAAcwC,EAAG,MAAQ,oBAAoB,GAIhE,CAACC,GAAO,CAACA,EAAI,gBACRD,EAIFC,EAAI,gBAAgB,KAAKA,EAAKD,EAAI,IAAI,CAC/C,CAfS9B,EAAAS,IAAA,UChUT,IAAAuB,IAAAC,EAAA,CAAAC,IAAAC,MAAA,KAAMC,IAAO,MAqBbD,IAAO,QAAU,SAASE,EAAS,CAMjC,OAAAA,EAAU,CACR,GANe,CACf,aAAc,iCACd,cAAe,EACjB,EAIE,GAAGA,CACL,EAEI,MAAM,QAAQA,EAAQ,aAAa,IACrCA,EAAQ,cAAgBA,EAAQ,cAAc,KAAK,GAAG,GAGpD,MAAM,QAAQA,EAAQ,YAAY,IACpCA,EAAQ,aAAeA,EAAQ,aAAa,KAAK,GAAG,GAGlD,MAAM,QAAQA,EAAQ,YAAY,IACpCA,EAAQ,aAAeA,EAAQ,aAAa,KAAK,GAAG,GAGlDA,EAAQ,SACVA,EAAQ,OAAS,OAAOA,EAAQ,MAAM,GAGxCA,EAAQ,mBAAqBA,EAAQ,qBAAuB,QAAa,CAAC,CAACA,EAAQ,mBAE5EC,EAAA,eAAoBC,EAAKC,EAAM,CAGpC,IAAMC,EAAgBF,EAAI,IAAI,QAAQ,EAItCA,EAAI,KAAK,QAAQ,EAEjB,IAAIG,EACJ,GAAI,OAAOL,EAAQ,QAAW,YAE5B,GADAK,EAAS,MAAML,EAAQ,OAAOE,CAAG,EAC7B,CAACG,EACH,OAAO,MAAMF,EAAK,OAGpBE,EAASL,EAAQ,QAAU,IAG7B,IAAIM,EACA,OAAON,EAAQ,aAAgB,WACjCM,EAAc,MAAMN,EAAQ,YAAYE,CAAG,EAE3CI,EAAc,CAAC,CAACN,EAAQ,YAGtBM,GAAeD,IAAW,MAC5BA,EAASD,GAGX,IAAMG,EAAa,CAAC,EAEpB,SAASC,EAAIC,EAAKC,EAAO,CACvBR,EAAI,IAAIO,EAAKC,CAAK,EAClBH,EAAWE,CAAG,EAAIC,CACpB,CAEA,GALST,EAAAO,EAAA,OAKLN,EAAI,SAAW,UAAW,CAiB5B,GAfAM,EAAI,8BAA+BH,CAAM,EAErCC,IAAgB,IAClBE,EAAI,mCAAoC,MAAM,EAG5CR,EAAQ,eACVQ,EAAI,gCAAiCR,EAAQ,aAAa,EAGxDA,EAAQ,gBACVQ,EAAI,6BAA8B,aAAa,EAC/CA,EAAI,+BAAgC,cAAc,GAGhD,CAACR,EAAQ,mBACX,OAAO,MAAMG,EAAK,EAEpB,GAAI,CACF,OAAO,MAAMA,EAAK,CACpB,OAASQ,EAAK,CACZ,IAAMC,EAAgBD,EAAI,SAAW,CAAC,EAChCE,EAAiBd,IAAK,OAAOa,EAAc,MAAQA,EAAc,MAAQ,GAAI,QAAQ,EAC3F,aAAOA,EAAc,KAErBD,EAAI,QAAU,CACZ,GAAGC,EACH,GAAGL,EACE,KAAMM,CACb,EACMF,CACR,CACF,KAAO,CAML,GAAI,CAACT,EAAI,IAAI,+BAA+B,EAE1C,OAAO,MAAMC,EAAK,EAGpBD,EAAI,IAAI,8BAA+BG,CAAM,EAEzCC,IAAgB,IAClBJ,EAAI,IAAI,mCAAoC,MAAM,EAGhDF,EAAQ,QACVE,EAAI,IAAI,yBAA0BF,EAAQ,MAAM,EAG9CA,EAAQ,sBAAwBE,EAAI,IAAI,wCAAwC,GAClFA,EAAI,IAAI,uCAAwC,MAAM,EAGpDF,EAAQ,cACVE,EAAI,IAAI,+BAAgCF,EAAQ,YAAY,EAG1DA,EAAQ,gBACVQ,EAAI,6BAA8B,aAAa,EAC/CA,EAAI,+BAAgC,cAAc,GAGpD,IAAIM,EAAed,EAAQ,aACtBc,IACHA,EAAeZ,EAAI,IAAI,gCAAgC,GAErDY,GACFZ,EAAI,IAAI,+BAAgCY,CAAY,EAGtDZ,EAAI,OAAS,GACf,CACF,EAnHO,OAoHT,ICtKA,IAAAa,IAAAC,EAAA,CAAAC,IAAAC,MAAA,cAEA,IAAMC,IAAS,CAAC,EACVC,IAAiBD,IAAO,eACxBE,IAASC,EAAA,CAACH,EAAQI,IAAa,CACpC,QAAWC,KAAOL,EACbC,IAAe,KAAKD,EAAQK,CAAG,GAClCD,EAASC,EAAKL,EAAOK,CAAG,CAAC,CAG5B,EANe,UAQTC,IAASH,EAAA,CAACI,EAAaC,KACvBA,GAGLN,IAAOM,EAAQ,CAACH,EAAKI,IAAU,CAC9BF,EAAYF,CAAG,EAAII,CACpB,CAAC,EACMF,GAPO,UAUTG,IAAUP,EAAA,CAACQ,EAAOP,IAAa,CACpC,IAAMQ,EAASD,EAAM,OACjBE,EAAQ,GACZ,KAAO,EAAEA,EAAQD,GAChBR,EAASO,EAAME,CAAK,CAAC,CAEvB,EANgB,WAQVC,IAAgBX,EAACY,GACf,OAAS,OAASA,GAAK,MAAM,EAAE,EADjB,iBAIhBC,IAAcb,EAAA,CAACc,EAAMC,IAAc,CACxC,IAAIF,EAAcC,EAAK,SAAS,EAAE,EAClC,OAAIC,EAAkBF,EACfA,EAAY,YAAY,CAChC,EAJoB,eAMdG,IAAWnB,IAAO,SAClBoB,IAAU,MAAM,QAChBC,IAAWlB,EAACM,GACV,OAAO,QAAW,YAAc,OAAO,SAASA,CAAK,EAD5C,YAGXa,IAAWnB,EAACM,GAEVU,IAAS,KAAKV,CAAK,GAAK,kBAFf,YAIXc,IAAWpB,EAACM,GACV,OAAOA,GAAS,UACtBU,IAAS,KAAKV,CAAK,GAAK,kBAFT,YAIXe,IAAWrB,EAACM,GACV,OAAOA,GAAS,UACtBU,IAAS,KAAKV,CAAK,GAAK,kBAFT,YAIXgB,IAAWtB,EAACM,GACT,OAAOA,GAAS,SADR,YAGXiB,IAAavB,EAACM,GACZ,OAAOA,GAAS,WADL,cAGbkB,IAAQxB,EAACM,GACPU,IAAS,KAAKV,CAAK,GAAK,eADlB,SAGRmB,IAAQzB,EAACM,GACPU,IAAS,KAAKV,CAAK,GAAK,eADlB,SAORoB,IAAgB,CACrB,KAAM,OACN,KAAM,MACN,KAAM,MACN,KAAM,MACN,KAAM,MACN,IAAM,KAGP,EACMC,IAAoB,iBAEpBC,IAAa,QACbC,IAAkB,0DAElBC,IAAwB,kEACxBC,IAAsB,mFAEtBC,GAAQhC,EAAA,CAACiC,EAAUC,IAAY,CACpC,IAAMC,EAAsBnC,EAAA,IAAM,CACjCoC,EAAYC,EACZ,EAAEH,EAAQ,YACVG,EAASH,EAAQ,OAAO,OAAOA,EAAQ,WAAW,CACnD,EAJ4B,uBAMtBI,EAAW,CAChB,iBAAoB,GACpB,QAAW,GACX,gBAAmB,GACnB,OAAU,SACV,KAAQ,GACR,IAAO,GACP,KAAQ,GACR,QAAW,GACX,aAAgB,GAChB,QAAW,UACX,OAAU,IACV,YAAe,EACf,YAAe,GACf,YAAe,EAChB,EACMC,EAAOL,GAAWA,EAAQ,KAC5BK,IACHD,EAAS,OAAS,SAClBA,EAAS,KAAO,IAEjBJ,EAAU/B,IAAOmC,EAAUJ,CAAO,EAEjCA,EAAQ,QAAU,UAClBA,EAAQ,QAAU,UAClBA,EAAQ,QAAU,aAElBA,EAAQ,OAAS,UAElB,IAAMM,EAAQN,EAAQ,QAAU,SAC/B,IACCA,EAAQ,QAAU,WAClB,IACA,IAEIO,EAAUP,EAAQ,QAClBQ,EAAeR,EAAQ,aACzBG,EAASH,EAAQ,OAAO,OAAOA,EAAQ,WAAW,EAClDE,EAAY,GACVO,EAAUT,EAAQ,YAClBU,EAAUV,EAAQ,YAClBW,EAAUJ,EAAU,GAAK;AAAA,EAC3BK,EACAC,EAAU,GACRC,EAAgBd,EAAQ,SAAW,SACnCe,EAAgBf,EAAQ,SAAW,QACnCgB,EAAgBhB,EAAQ,SAAW,UACnCiB,EAAgBjB,EAAQ,SAAW,cAMzC,GAJIK,GAAQN,GAAYV,IAAWU,EAAS,MAAM,IACjDA,EAAWA,EAAS,OAAO,GAGxB,CAACb,IAASa,CAAQ,EAAG,CACxB,GAAIT,IAAMS,CAAQ,EACjB,OAAIA,EAAS,MAAQ,EACb,aAEHQ,IACJP,EAAQ,YAAc,GACtBA,EAAQ,YAAc,IAEhB,WAAaF,GAAM,MAAM,KAAKC,CAAQ,EAAGC,CAAO,EAAI,KAE5D,GAAIT,IAAMQ,CAAQ,EACjB,OAAIA,EAAS,MAAQ,EACb,YAED,WAAaD,GAAM,MAAM,KAAKC,CAAQ,EAAGC,CAAO,EAAI,IAE5D,GAAIhB,IAASe,CAAQ,EACpB,OAAIA,EAAS,QAAU,EACf,kBAED,eAAiBD,GAAM,MAAM,KAAKC,CAAQ,EAAGC,CAAO,EAAI,IAEhE,GAAIjB,IAAQgB,CAAQ,EAoBnB,OAnBAa,EAAS,CAAC,EACVZ,EAAQ,KAAO,GACXS,IACHT,EAAQ,YAAc,GACtBA,EAAQ,YAAc,IAElBU,GACJT,EAAoB,EAErB5B,IAAQ0B,EAAW3B,GAAU,CAC5ByC,EAAU,GACNH,IACHV,EAAQ,YAAc,IAEvBY,EAAO,MACLL,GAAWG,EAAU,GAAKP,GAC3BL,GAAM1B,EAAO4B,CAAO,CACrB,CACD,CAAC,EACGa,EACI,KAEJH,EACI,IAAME,EAAO,KAAK,IAAI,EAAI,IAE3B,IAAMD,EAAUC,EAAO,KAAK,IAAMD,CAAO,EAAIA,GAClDJ,EAAU,GAAKL,GAAa,IACxB,GAAIf,IAASY,CAAQ,GAAKX,IAASW,CAAQ,EAAG,CACpD,GAAIM,EAMH,OAAO,KAAK,UAAU,OAAON,CAAQ,CAAC,EAGpC,IAAIa,EACP,GAAII,EACHJ,EAAS,OAAOb,CAAQ,UACdkB,EAAe,CACzB,IAAItC,EAAcoB,EAAS,SAAS,EAAE,EACjCS,IACJ7B,EAAcA,EAAY,YAAY,GAEvCiC,EAAS,KAAOjC,CACjB,MAAWmC,EACVF,EAAS,KAAOb,EAAS,SAAS,CAAC,EACzBgB,IACVH,EAAS,KAAOb,EAAS,SAAS,CAAC,GAGjC,OAAIX,IAASW,CAAQ,EACZa,EAAS,IAEXA,CACX,KAAO,QAAIxB,IAASW,CAAQ,EACvBM,EAII,KAAK,UAAU,OAAON,CAAQ,CAAC,EAE7BA,EAAW,IACRd,IAASc,CAAQ,GAS9Ba,EAAS,CAAC,EACVZ,EAAQ,KAAO,GACfC,EAAoB,EACpBpC,IAAOkC,EAAU,CAAC/B,EAAKI,IAAU,CAChCyC,EAAU,GACVD,EAAO,MACLL,EAAU,GAAKJ,GAChBL,GAAM9B,EAAKgC,CAAO,EAAI,KACrBO,EAAU,GAAK,KAChBT,GAAM1B,EAAO4B,CAAO,CACrB,CACD,CAAC,EACGa,EACI,KAED,IAAMF,EAAUC,EAAO,KAAK,IAAMD,CAAO,EAAIA,GAClDJ,EAAU,GAAKL,GAAa,KAxB1BG,EAII,KAAK,UAAUN,CAAQ,GAAK,OAE7B,OAAOA,CAAQ,CAoBxB,CAEA,IAAMmB,EAAQlB,EAAQ,iBAAmBJ,IAAwBC,IACjE,OAAAe,EAASb,EAAS,QAAQmB,EAAO,CAACC,EAAMC,EAAMC,EAAMC,EAAW9C,EAAO+C,IAAW,CAChF,GAAIH,EAAM,CACT,GAAIpB,EAAQ,QAAS,OAAOoB,EAC5B,IAAMI,EAAQJ,EAAK,WAAW,CAAC,EACzBK,EAASL,EAAK,WAAW,CAAC,EAChC,GAAIpB,EAAQ,IAAK,CAEhB,IAAM0B,GAAaF,EAAQ,OAAU,KAAQC,EAAS,MAAS,MAE/D,MAAO,OADK9C,IAAY+C,EAAWlB,CAAY,EACzB,GACvB,CACA,OAAO/B,IAAcE,IAAY6C,EAAOhB,CAAY,CAAC,EAAI/B,IAAcE,IAAY8C,EAAQjB,CAAY,CAAC,CACzG,CAEA,GAAIa,EACH,OAAO5C,IAAcE,IAAY0C,EAAK,WAAW,CAAC,EAAGb,CAAY,CAAC,EAGnE,GACCW,GAAQ,MACR,CAACd,GACD,CAACX,IAAW,KAAK6B,EAAO,OAAO/C,EAAQ,CAAC,CAAC,EAEzC,MAAO,MAGR,GAAI8C,EACH,OAAIA,GAAahB,GAASN,EAAQ,iBAC1B,KAAOsB,EAERA,EAGR,GAAI7B,IAAkB,KAAK0B,CAAI,EAE9B,OAAO3B,IAAc2B,CAAI,EAG1B,GAAInB,EAAQ,SAAW,CAACL,IAAgB,KAAKwB,CAAI,EAChD,OAAOA,EAGR,IAAMzC,EAAMC,IAAYwC,EAAK,WAAW,CAAC,EAAGX,CAAY,EACxD,OAAIH,GAAQ3B,EAAI,OAAS,EACjBD,IAAcC,CAAG,EAGlB,OAAS,KAAOA,GAAK,MAAM,EAAE,CACrC,CAAC,EAEG4B,GAAS,MACZM,EAASA,EAAO,QAAQ,QAAS,MAAM,GAEpCZ,EAAQ,kBAEXY,EAASA,EACP,QAAQ,sBAAuB,QAAQ,EACvC,QAAQ,QAASP,EAAO,aAAe,UAAU,GAEhDL,EAAQ,OACXY,EAASN,EAAQM,EAASN,GAEpBM,CACR,EAjPc,SAmPdd,GAAM,QAAU,QAEhBpC,IAAO,QAAUoC,KChVjB,IAAA6B,IAAAC,EAAA,CAAAC,IAAAC,MAAA,CAAAA,IAAA,SACE,MAAO,WACP,MAAO,sBACP,MAAO,aACP,MAAO,cACP,MAAO,KACP,MAAO,UACP,MAAO,WACP,MAAO,gCACP,MAAO,aACP,MAAO,gBACP,MAAO,kBACP,MAAO,eACP,MAAO,mBACP,MAAO,UACP,MAAO,mBACP,MAAO,oBACP,MAAO,QACP,MAAO,YACP,MAAO,eACP,MAAO,YACP,MAAO,qBACP,MAAO,qBACP,MAAO,cACP,MAAO,eACP,MAAO,mBACP,MAAO,YACP,MAAO,YACP,MAAO,qBACP,MAAO,iBACP,MAAO,gCACP,MAAO,kBACP,MAAO,WACP,MAAO,OACP,MAAO,kBACP,MAAO,sBACP,MAAO,oBACP,MAAO,eACP,MAAO,yBACP,MAAO,wBACP,MAAO,qBACP,MAAO,eACP,MAAO,sBACP,MAAO,uBACP,MAAO,SACP,MAAO,oBACP,MAAO,YACP,MAAO,mBACP,MAAO,wBACP,MAAO,oBACP,MAAO,kCACP,MAAO,gCACP,MAAO,wBACP,MAAO,kBACP,MAAO,cACP,MAAO,sBACP,MAAO,kBACP,MAAO,6BACP,MAAO,0BACP,MAAO,uBACP,MAAO,gBACP,MAAO,2BACP,MAAO,eACP,MAAO,iCACT,IChEA,IAAAC,IAAAC,EAAA,CAAAC,IAAAC,MAAA,cAcA,IAAIC,IAAQ,MAOZD,IAAO,QAAUE,GAGjBA,GAAO,QAAUD,IAGjBC,GAAO,KAAOC,IAA6BF,GAAK,EAGhDC,GAAO,MAAQE,IAAqBH,GAAK,EAGzCC,GAAO,SAAW,CAChB,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,EACP,EAGAA,GAAO,MAAQ,CACb,IAAK,GACL,IAAK,GACL,IAAK,EACP,EAGAA,GAAO,MAAQ,CACb,IAAK,GACL,IAAK,GACL,IAAK,EACP,EAOA,SAASC,IAA8BF,EAAO,CAC5C,IAAII,EAAM,CAAC,EAEX,cAAO,KAAKJ,CAAK,EAAE,QAAQK,EAAA,SAAsBC,EAAM,CACrD,IAAIC,EAAUP,EAAMM,CAAI,EACpBL,EAAS,OAAOK,CAAI,EAGxBF,EAAIG,EAAQ,YAAY,CAAC,EAAIN,CAC/B,EAN2B,cAM1B,EAEMG,CACT,CAZSC,EAAAH,IAAA,gCAmBT,SAASC,IAAsBH,EAAO,CACpC,OAAO,OAAO,KAAKA,CAAK,EAAE,IAAIK,EAAA,SAAkBC,EAAM,CACpD,OAAO,OAAOA,CAAI,CACpB,EAF8B,UAE7B,CACH,CAJSD,EAAAF,IAAA,wBAWT,SAASK,IAAeD,EAAS,CAC/B,IAAIE,EAAMF,EAAQ,YAAY,EAE9B,GAAI,CAAC,OAAO,UAAU,eAAe,KAAKN,GAAO,KAAMQ,CAAG,EACxD,MAAM,IAAI,MAAM,4BAA8BF,EAAU,GAAG,EAG7D,OAAON,GAAO,KAAKQ,CAAG,CACxB,CARSJ,EAAAG,IAAA,iBAeT,SAASE,IAAkBJ,EAAM,CAC/B,GAAI,CAAC,OAAO,UAAU,eAAe,KAAKL,GAAO,QAASK,CAAI,EAC5D,MAAM,IAAI,MAAM,wBAA0BA,CAAI,EAGhD,OAAOL,GAAO,QAAQK,CAAI,CAC5B,CANSD,EAAAK,IAAA,oBAsBT,SAAST,GAAQK,EAAM,CACrB,GAAI,OAAOA,GAAS,SAClB,OAAOI,IAAiBJ,CAAI,EAG9B,GAAI,OAAOA,GAAS,SAClB,MAAM,IAAI,UAAU,iCAAiC,EAIvD,IAAIK,EAAI,SAASL,EAAM,EAAE,EACzB,OAAK,MAAMK,CAAC,EAILH,IAAcF,CAAI,EAHhBI,IAAiBC,CAAC,CAI7B,CAhBSN,EAAAJ,GAAA,YCjIT,IAAAW,IAAAC,EAAA,CAAAC,IAAAC,KAAA,cAcA,IAAIC,IAAY,KAAgB,aAAa,EACzCC,IAAiB,KACjBC,GAAW,MACXC,IAAW,KACXC,IAAe,KAOnBL,GAAO,QAAUM,IACjBN,GAAO,QAAQ,UAAYO,IAA2B,EACtDP,GAAO,QAAQ,YAAcQ,IAA0BR,GAAO,QAAQ,SAAS,EAG/ES,IAA2BT,GAAO,QAASG,GAAS,MAAOH,GAAO,QAAQ,SAAS,EAOnF,SAASU,IAAWC,EAAQ,CAC1B,MAAO,EAAO,OAAOA,CAAM,EAAE,OAAO,CAAC,EAAI,KAC3C,CAFSC,EAAAF,IAAA,aAWT,SAASJ,KAAe,CAMtB,QAJIO,EACAC,EACAH,EAAS,IACTI,EAAQ,CAAC,EACJC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IAAK,CACzC,IAAIC,EAAM,UAAUD,CAAC,EACjBE,EAAO,OAAOD,EAClB,GAAIC,IAAS,UAAYD,aAAe,MACtCJ,EAAMI,EACNN,EAASE,EAAI,QAAUA,EAAI,YAAcF,UAChCO,IAAS,UAAYF,IAAM,EACpCL,EAASM,UACAC,IAAS,SAClBJ,EAAMG,UACGC,IAAS,SAClBH,EAAQE,MAER,OAAM,IAAI,UAAU,cAAgBD,EAAI,GAAK,qBAAuBE,CAAI,CAE5E,CAEI,OAAOP,GAAW,WAAaA,EAAS,KAAOA,GAAU,MAC3DV,IAAU,yDAAyD,GAGjE,OAAOU,GAAW,UACnB,CAACR,GAAS,QAAQQ,CAAM,IAAMA,EAAS,KAAOA,GAAU,QACzDA,EAAS,KAIX,IAAIQ,EAAYb,IAAYK,CAAM,GAAKL,IAAYI,IAAUC,CAAM,CAAC,EAE/DE,IAEHA,EAAMM,EACF,IAAIA,EAAUL,CAAG,EACjB,IAAI,MAAMA,GAAOX,GAAS,QAAQQ,CAAM,CAAC,EAC7C,MAAM,kBAAkBE,EAAKP,GAAW,IAGtC,CAACa,GAAa,EAAEN,aAAeM,IAAcN,EAAI,SAAWF,KAE9DE,EAAI,OAASF,EAAS,IACtBE,EAAI,OAASA,EAAI,WAAaF,GAGhC,QAASS,KAAOL,EACVK,IAAQ,UAAYA,IAAQ,eAC9BP,EAAIO,CAAG,EAAIL,EAAMK,CAAG,GAIxB,OAAOP,CACT,CAxDSD,EAAAN,IAAA,eA+DT,SAASC,KAA8B,CACrC,SAASY,GAAa,CACpB,MAAM,IAAI,UAAU,iCAAiC,CACvD,CAFS,OAAAP,EAAAO,EAAA,aAITf,IAASe,EAAW,KAAK,EAElBA,CACT,CARSP,EAAAL,IAAA,8BAeT,SAASc,IAA8BF,EAAWG,EAAMC,EAAM,CAC5D,IAAIC,EAAYC,IAAYH,CAAI,EAEhC,SAASI,EAAaC,EAAS,CAE7B,IAAIb,EAAMa,GAA4BxB,GAAS,QAAQoB,CAAI,EACvDV,EAAM,IAAI,MAAMC,CAAG,EAGvB,aAAM,kBAAkBD,EAAKa,CAAW,EAGxCxB,IAAeW,EAAKa,EAAY,SAAS,EAGzC,OAAO,eAAeb,EAAK,UAAW,CACpC,WAAY,GACZ,aAAc,GACd,MAAOC,EACP,SAAU,EACZ,CAAC,EAGD,OAAO,eAAeD,EAAK,OAAQ,CACjC,WAAY,GACZ,aAAc,GACd,MAAOW,EACP,SAAU,EACZ,CAAC,EAEMX,CACT,CA5BS,OAAAD,EAAAc,EAAA,eA8BTtB,IAASsB,EAAaP,CAAS,EAC/BS,IAASF,EAAaF,CAAS,EAE/BE,EAAY,UAAU,OAASH,EAC/BG,EAAY,UAAU,WAAaH,EACnCG,EAAY,UAAU,OAAS,GAExBA,CACT,CAzCSd,EAAAS,IAAA,gCAgDT,SAASb,IAA2BW,EAAW,CAC7C,OAAOP,EAAA,SAAsBiB,EAAK,CAChC,MAAI,CAACA,GAAO,OAAOA,GAAQ,SAClB,GAGLA,aAAeV,EACV,GAGFU,aAAe,OACpB,OAAOA,EAAI,QAAW,WACtB,OAAOA,EAAI,YAAe,UAAYA,EAAI,SAAWA,EAAI,UAC7D,EAZO,cAaT,CAdSjB,EAAAJ,IAAA,6BAqBT,SAASsB,IAA8BX,EAAWG,EAAMC,EAAM,CAC5D,IAAIC,EAAYC,IAAYH,CAAI,EAEhC,SAASS,EAAaJ,EAAS,CAE7B,IAAIb,EAAMa,GAA4BxB,GAAS,QAAQoB,CAAI,EACvDV,EAAM,IAAI,MAAMC,CAAG,EAGvB,aAAM,kBAAkBD,EAAKkB,CAAW,EAGxC7B,IAAeW,EAAKkB,EAAY,SAAS,EAGzC,OAAO,eAAelB,EAAK,UAAW,CACpC,WAAY,GACZ,aAAc,GACd,MAAOC,EACP,SAAU,EACZ,CAAC,EAGD,OAAO,eAAeD,EAAK,OAAQ,CACjC,WAAY,GACZ,aAAc,GACd,MAAOW,EACP,SAAU,EACZ,CAAC,EAEMX,CACT,CA5BS,OAAAD,EAAAmB,EAAA,eA8BT3B,IAAS2B,EAAaZ,CAAS,EAC/BS,IAASG,EAAaP,CAAS,EAE/BO,EAAY,UAAU,OAASR,EAC/BQ,EAAY,UAAU,WAAaR,EACnCQ,EAAY,UAAU,OAAS,GAExBA,CACT,CAzCSnB,EAAAkB,IAAA,gCAgDT,SAASF,IAAUI,EAAMV,EAAM,CAC7B,IAAIW,EAAO,OAAO,yBAAyBD,EAAM,MAAM,EAEnDC,GAAQA,EAAK,eACfA,EAAK,MAAQX,EACb,OAAO,eAAeU,EAAM,OAAQC,CAAI,EAE5C,CAPSrB,EAAAgB,IAAA,YAcT,SAASnB,IAA4BV,EAASmC,EAAOf,EAAW,CAC9De,EAAM,QAAQtB,EAAA,SAAsBW,EAAM,CACxC,IAAIY,EACAb,EAAOjB,IAAaF,GAAS,QAAQoB,CAAI,CAAC,EAE9C,OAAQb,IAAUa,CAAI,EAAG,CACvB,IAAK,KACHY,EAAYd,IAA6BF,EAAWG,EAAMC,CAAI,EAC9D,MACF,IAAK,KACHY,EAAYL,IAA6BX,EAAWG,EAAMC,CAAI,EAC9D,KACJ,CAEIY,IAEFpC,EAAQwB,CAAI,EAAIY,EAChBpC,EAAQuB,CAAI,EAAIa,EAEpB,EAlBc,cAkBb,CACH,CApBSvB,EAAAH,IAAA,8BA2BT,SAASgB,IAAaH,EAAM,CAC1B,OAAOA,EAAK,OAAO,EAAE,IAAM,QACvBA,EAAO,QACPA,CACN,CAJSV,EAAAa,IAAA,gIChGTW,GAAA,MAAAC,IAmHAD,GAAA,QAAAE,IAgIAF,GAAA,MAAAG,IAiCAH,GAAA,aAAAI,IA8KAJ,GAAA,UAAAK,IA9nBA,IAAMC,IAAoB,IACpBC,IAAaC,EAACC,GAAkBA,EAAnB,cACbC,IAAW,sBACXC,IAAc,oCAkFdC,IAA2C,CAE/C,IAAK,IACL,IAAK,IAEL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,KAMP,SAASC,IAAWC,EAAW,CAC7B,OAAOA,EAAI,QAAQ,qBAAsB,MAAM,CACjD,CAFSN,EAAAK,IAAA,cAOT,SAASE,GAAOD,EAAW,CACzB,OAAOA,EAAI,QAAQ,uBAAwB,MAAM,CACnD,CAFSN,EAAAO,GAAA,UAsDT,IAAaC,IAAb,KAAsB,OAAA,CAAAR,EAAA,kBACpB,YACkBS,EACAC,EAAqB,CADrB,KAAA,OAAAD,EACA,KAAA,aAAAC,CACf,GAJLlB,GAAA,UAAAgB,IAUA,IAAaG,GAAb,cAA+B,SAAS,OAAA,CAAAX,EAAA,kBACtC,YACEY,EACgBF,EAAgC,CAEhD,IAAIG,EAAOD,EACPF,IAAcG,GAAQ,KAAKH,CAAY,IAC3CG,GAAQ,qDACR,MAAMA,CAAI,EALM,KAAA,aAAAH,CAMlB,GATFlB,GAAA,UAAAmB,GAeA,SAAgBlB,IAAMa,EAAaQ,EAAwB,CAAA,EAAE,CAC3D,GAAM,CAAE,WAAAC,EAAahB,GAAU,EAAKe,EAC9BE,EAAQ,CAAC,GAAGV,CAAG,EACfG,EAA0B,CAAA,EAC5BQ,EAAQ,EACRC,EAAM,EAEV,SAASC,GAAI,CACX,IAAIlB,EAAQ,GAEZ,GAAIC,IAAS,KAAKc,EAAMC,CAAK,CAAC,EAC5B,GACEhB,GAASe,EAAMC,GAAO,QACfd,IAAY,KAAKa,EAAMC,CAAK,CAAC,WAC7BD,EAAMC,CAAK,IAAM,IAAK,CAC/B,IAAIG,EAAaH,EAEjB,KAAOA,IAAUD,EAAM,QAAQ,CAC7B,GAAIA,EAAMC,CAAK,IAAM,IAAK,CACxBA,IACAG,EAAa,EACb,KACF,CAGIJ,EAAMC,CAAK,IAAM,MAAMA,IAE3BhB,GAASe,EAAMC,CAAK,CACtB,CAEA,GAAIG,EACF,MAAM,IAAIT,GAAU,+BAA+BS,CAAU,GAAId,CAAG,CAExE,CAEA,GAAI,CAACL,EACH,MAAM,IAAIU,GAAU,mCAAmCM,CAAK,GAAIX,CAAG,EAGrE,OAAOL,CACT,CAEA,IAnCSD,EAAAmB,EAAA,QAmCFF,EAAQD,EAAM,QAAQ,CAC3B,IAAMf,EAAQe,EAAMC,CAAK,EACnBI,EAAOjB,IAAcH,CAAK,EAE5BoB,EACFZ,EAAO,KAAK,CAAE,KAAAY,EAAM,MAAOJ,IAAS,MAAAhB,CAAK,CAAE,EAClCA,IAAU,KACnBQ,EAAO,KAAK,CAAE,KAAM,SAAU,MAAOQ,IAAS,MAAOD,EAAMC,GAAO,CAAC,CAAE,EAC5DhB,IAAU,IACnBQ,EAAO,KAAK,CAAE,KAAM,QAAS,MAAOQ,IAAS,MAAOE,EAAI,CAAE,CAAE,EACnDlB,IAAU,IACnBQ,EAAO,KAAK,CAAE,KAAM,WAAY,MAAOQ,IAAS,MAAOE,EAAI,CAAE,CAAE,EAE/DV,EAAO,KAAK,CAAE,KAAM,OAAQ,MAAOQ,IAAS,MAAAhB,CAAK,CAAE,CAEvD,CAEAQ,EAAO,KAAK,CAAE,KAAM,MAAO,MAAAQ,EAAO,MAAO,EAAE,CAAE,EAE7C,SAASK,EAAaC,EAAkB,CACtC,IAAMC,EAAkB,CAAA,EAExB,OAAa,CACX,IAAMC,EAAQhB,EAAOS,GAAK,EAC1B,GAAIO,EAAM,OAASF,EAAS,MAE5B,GAAIE,EAAM,OAAS,QAAUA,EAAM,OAAS,SAAU,CACpD,IAAIC,EAAOD,EAAM,MACbE,EAAMlB,EAAOS,CAAG,EAEpB,KAAOS,EAAI,OAAS,QAAUA,EAAI,OAAS,UACzCD,GAAQC,EAAI,MACZA,EAAMlB,EAAO,EAAES,CAAG,EAGpBM,EAAO,KAAK,CACV,KAAM,OACN,MAAOT,EAAWW,CAAI,EACvB,EACD,QACF,CAEA,GAAID,EAAM,OAAS,SAAWA,EAAM,OAAS,WAAY,CACvDD,EAAO,KAAK,CACV,KAAMC,EAAM,KACZ,KAAMA,EAAM,MACb,EACD,QACF,CAEA,GAAIA,EAAM,OAAS,IAAK,CACtBD,EAAO,KAAK,CACV,KAAM,QACN,OAAQF,EAAa,GAAG,EACzB,EACD,QACF,CAEA,MAAM,IAAIX,GACR,cAAcc,EAAM,IAAI,aAAaA,EAAM,KAAK,cAAcF,CAAO,GACrEjB,CAAG,CAEP,CAEA,OAAOkB,CACT,CA9CS,OAAAxB,EAAAsB,EAAA,gBAgDF,IAAId,IAAUc,EAAa,KAAK,EAAGhB,CAAG,CAC/C,CA9GgBN,EAAAP,IAAA,SAmHhB,SAAgBC,IACdgC,EACAZ,EAAyC,CAAA,EAAE,CAE3C,GAAM,CAAE,OAAAc,EAAS,mBAAoB,UAAAC,EAAY/B,GAAiB,EAChEgB,EACIgB,EAAO,OAAOJ,GAAS,SAAWA,EAAOjC,IAAMiC,EAAMZ,CAAO,EAC5DiB,EAAKC,IAAiBF,EAAK,OAAQD,EAAWD,CAAM,EAE1D,OAAO5B,EAAA,SAAciC,EAAY,CAAA,EAAO,CACtC,GAAM,CAACP,EAAM,GAAGQ,CAAO,EAAIH,EAAGE,CAAM,EACpC,GAAIC,EAAQ,OACV,MAAM,IAAI,UAAU,uBAAuBA,EAAQ,KAAK,IAAI,CAAC,EAAE,EAEjE,OAAOR,CACT,EANO,OAOT,CAhBgB1B,EAAAN,IAAA,WAqBhB,SAASsC,IACPvB,EACAoB,EACAD,EAAsB,CAEtB,IAAMO,EAAW1B,EAAO,IAAKgB,GAC3BW,IAAgBX,EAAOI,EAAWD,CAAM,CAAC,EAG3C,OAAQE,GAAmB,CACzB,IAAMO,EAAmB,CAAC,EAAE,EAE5B,QAAWC,KAAWH,EAAU,CAC9B,GAAM,CAAClC,EAAO,GAAGsC,CAAM,EAAID,EAAQR,CAAI,EACvCO,EAAO,CAAC,GAAKpC,EACboC,EAAO,KAAK,GAAGE,CAAM,CACvB,CAEA,OAAOF,CACT,CACF,CApBSrC,EAAAgC,IAAA,oBAyBT,SAASI,IACPX,EACAI,EACAD,EAAsB,CAEtB,GAAIH,EAAM,OAAS,OAAQ,MAAO,IAAM,CAACA,EAAM,KAAK,EAEpD,GAAIA,EAAM,OAAS,QAAS,CAC1B,IAAMM,EAAKC,IAAiBP,EAAM,OAAQI,EAAWD,CAAM,EAE3D,OAAQE,GAAQ,CACd,GAAM,CAAC7B,EAAO,GAAGiC,CAAO,EAAIH,EAAGD,CAAI,EACnC,OAAKI,EAAQ,OACN,CAAC,EAAE,EADkB,CAACjC,CAAK,CAEpC,CACF,CAEA,IAAMuC,EAAcZ,GAAU7B,IAE9B,OAAI0B,EAAM,OAAS,YAAcG,IAAW,GAClCE,GAAQ,CACd,IAAM7B,EAAQ6B,EAAKL,EAAM,IAAI,EAC7B,GAAIxB,GAAS,KAAM,MAAO,CAAC,GAAIwB,EAAM,IAAI,EAEzC,GAAI,CAAC,MAAM,QAAQxB,CAAK,GAAKA,EAAM,SAAW,EAC5C,MAAM,IAAI,UAAU,aAAawB,EAAM,IAAI,2BAA2B,EAGxE,MAAO,CACLxB,EACG,IAAI,CAACA,EAAOgB,IAAS,CACpB,GAAI,OAAOhB,GAAU,SACnB,MAAM,IAAI,UACR,aAAawB,EAAM,IAAI,IAAIR,CAAK,kBAAkB,EAItD,OAAOuB,EAAYvC,CAAK,CAC1B,CAAC,EACA,KAAK4B,CAAS,EAErB,EAGMC,GAAQ,CACd,IAAM7B,EAAQ6B,EAAKL,EAAM,IAAI,EAC7B,GAAIxB,GAAS,KAAM,MAAO,CAAC,GAAIwB,EAAM,IAAI,EAEzC,GAAI,OAAOxB,GAAU,SACnB,MAAM,IAAI,UAAU,aAAawB,EAAM,IAAI,kBAAkB,EAG/D,MAAO,CAACe,EAAYvC,CAAK,CAAC,CAC5B,CACF,CAtDSD,EAAAoC,IAAA,mBAkFT,SAAgBzC,IACd+B,EACAZ,EAAuC,CAAA,EAAE,CAEzC,GAAM,CAAE,OAAA2B,EAAS,mBAAoB,UAAAZ,EAAY/B,GAAiB,EAChEgB,EACI,CAAE,OAAA4B,EAAQ,KAAAC,CAAI,EAAK/C,IAAa8B,EAAMZ,CAAO,EAE7C8B,EAAWD,EAAK,IAAKE,GACrBJ,IAAW,GAAc1C,IACzB8C,EAAI,OAAS,QAAgBJ,EACzBxC,GAAkBA,EAAM,MAAM4B,CAAS,EAAE,IAAIY,CAAM,CAC5D,EAED,OAAOzC,EAAA,SAAe8C,EAAa,CACjC,IAAMC,EAAIL,EAAO,KAAKI,CAAK,EAC3B,GAAI,CAACC,EAAG,MAAO,GAEf,IAAMrB,EAAOqB,EAAE,CAAC,EACVd,EAAS,OAAO,OAAO,IAAI,EAEjC,QAASe,EAAI,EAAGA,EAAID,EAAE,OAAQC,IAAK,CACjC,GAAID,EAAEC,CAAC,IAAM,OAAW,SAExB,IAAMH,EAAMF,EAAKK,EAAI,CAAC,EAChBC,EAAUL,EAASI,EAAI,CAAC,EAC9Bf,EAAOY,EAAI,IAAI,EAAII,EAAQF,EAAEC,CAAC,CAAC,CACjC,CAEA,MAAO,CAAE,KAAAtB,EAAM,OAAAO,CAAM,CACvB,EAhBO,QAiBT,CA/BgBjC,EAAAL,IAAA,SAiChB,SAAgBC,IACd8B,EACAZ,EAA8C,CAAA,EAAE,CAEhD,GAAM,CACJ,UAAAe,EAAY/B,IACZ,IAAAoD,EAAM,GACN,UAAAC,EAAY,GACZ,SAAAC,EAAW,EAAI,EACbtC,EACE6B,EAAa,CAAA,EACbU,EAAQF,EAAY,GAAK,IACzBG,EAAoB,CAAA,EAE1B,QAAWR,KAASS,IAAa7B,EAAM,CAAA,CAAE,EAAG,CAC1C,IAAMI,EAAO,OAAOgB,GAAU,SAAWA,EAAQrD,IAAMqD,EAAOhC,CAAO,EACrE,QAAWL,KAAU+C,IAAQ1B,EAAK,OAAQ,EAAG,CAAA,CAAE,EAC7CwB,EAAQ,KAAKG,IAAehD,EAAQoB,EAAWc,EAAMb,EAAK,YAAY,CAAC,CAE3E,CAEA,IAAI4B,EAAU,OAAOJ,EAAQ,KAAK,GAAG,CAAC,IACtC,OAAIF,IAAUM,GAAW,MAAMnD,GAAOsB,CAAS,CAAC,OAChD6B,GAAWR,EAAM,IAAM,MAAM3C,GAAOsB,CAAS,CAAC,MAGvC,CAAE,OADM,IAAI,OAAO6B,EAASL,CAAK,EACvB,KAAAV,CAAI,CACvB,CA3BgB3C,EAAAJ,IAAA,gBAgChB,SAAS2D,IAAaI,EAAsBC,EAAY,CACtD,GAAI,MAAM,QAAQD,CAAK,EACrB,QAAWE,KAAKF,EAAOJ,IAAaM,EAAGD,CAAI,OAE3CA,EAAK,KAAKD,CAAK,EAEjB,OAAOC,CACT,CAPS5D,EAAAuD,IAAA,gBAiBT,SAAUC,IACR/C,EACAQ,EACA2C,EAAiB,CAEjB,GAAI3C,IAAUR,EAAO,OACnB,OAAO,MAAMmD,EAGf,IAAMnC,EAAQhB,EAAOQ,CAAK,EAE1B,GAAIQ,EAAM,OAAS,QACjB,QAAWqC,KAAON,IAAQ/B,EAAM,OAAQ,EAAGmC,EAAK,MAAK,CAAE,EACrD,MAAOJ,IAAQ/C,EAAQQ,EAAQ,EAAG6C,CAAG,OAGvCF,EAAK,KAAKnC,CAAK,EAGjB,MAAO+B,IAAQ/C,EAAQQ,EAAQ,EAAG2C,CAAI,CACxC,CApBU5D,EAAAwD,IAAA,WAyBV,SAASC,IACPhD,EACAoB,EACAc,EACAjC,EAAgC,CAEhC,IAAI2B,EAAS,GACT0B,EAAY,GACZC,EAAqB,GAEzB,QAAWvC,KAAShB,EAAQ,CAC1B,GAAIgB,EAAM,OAAS,OAAQ,CACzBY,GAAU9B,GAAOkB,EAAM,KAAK,EAC5BsC,GAAatC,EAAM,MACnBuC,IAAAA,EAAuBvC,EAAM,MAAM,SAASI,CAAS,GACrD,QACF,CAEA,GAAIJ,EAAM,OAAS,SAAWA,EAAM,OAAS,WAAY,CACvD,GAAI,CAACuC,GAAsB,CAACD,EAC1B,MAAM,IAAIpD,GACR,wBAAwBc,EAAM,IAAI,KAAKA,EAAM,IAAI,GACjDf,CAAY,EAIZe,EAAM,OAAS,QACjBY,GAAU,IAAI4B,IAAOpC,EAAWmC,EAAqB,GAAKD,CAAS,CAAC,KAEpE1B,GAAU,cAGZM,EAAK,KAAKlB,CAAK,EACfsC,EAAY,GACZC,EAAqB,GACrB,QACF,CACF,CAEA,OAAO3B,CACT,CAxCSrC,EAAAyD,IAAA,kBA6CT,SAASQ,IAAOpC,EAAmBkC,EAAiB,CAClD,OAAIA,EAAU,OAAS,EACjBlC,EAAU,OAAS,EAAU,KAAKtB,GAAOsB,EAAYkC,CAAS,CAAC,IAC5D,SAASxD,GAAOsB,CAAS,CAAC,MAAMtB,GAAOwD,CAAS,CAAC,KAEtDlC,EAAU,OAAS,EACd,SAAStB,GAAOwD,CAAS,CAAC,MAAMxD,GAAOsB,CAAS,CAAC,KAEnD,SAAStB,GAAOwD,CAAS,CAAC,IAAIxD,GAAOsB,CAAS,CAAC,YACxD,CATS7B,EAAAiE,IAAA,UAcT,SAASC,IAAgBzD,EAAe,CACtC,IAAIR,EAAQ,GACR+C,EAAI,EAER,SAAS7B,EAAKlB,EAAa,CAEzB,OADekE,IAAWlE,CAAK,GAAKmE,IAAe3D,EAAOuC,CAAC,CAAC,EAC5C/C,EAAQ,KAAK,UAAUA,CAAK,CAC9C,CAEA,IALSD,EAAAmB,EAAA,QAKF6B,EAAIvC,EAAO,QAAQ,CACxB,IAAMgB,EAAQhB,EAAOuC,GAAG,EAExB,GAAIvB,EAAM,OAAS,OAAQ,CACzBxB,GAASI,IAAWoB,EAAM,KAAK,EAC/B,QACF,CAEA,GAAIA,EAAM,OAAS,QAAS,CAC1BxB,GAAS,IAAIiE,IAAgBzC,EAAM,MAAM,CAAC,IAC1C,QACF,CAEA,GAAIA,EAAM,OAAS,QAAS,CAC1BxB,GAAS,IAAIkB,EAAKM,EAAM,IAAI,CAAC,GAC7B,QACF,CAEA,GAAIA,EAAM,OAAS,WAAY,CAC7BxB,GAAS,IAAIkB,EAAKM,EAAM,IAAI,CAAC,GAC7B,QACF,CAEA,MAAM,IAAI,UAAU,uBAAwBA,EAAc,IAAI,EAAE,CAClE,CAEA,OAAOxB,CACT,CApCSD,EAAAkE,IAAA,mBAyCT,SAAgBrE,IAAUiC,EAAe,CACvC,OAAOoC,IAAgBpC,EAAK,MAAM,CACpC,CAFgB9B,EAAAH,IAAA,aAOhB,SAASsE,IAAWhD,EAAY,CAC9B,GAAM,CAACkD,EAAO,GAAGC,CAAI,EAAInD,EACzB,OAAOjB,IAAS,KAAKmE,CAAK,GAAKC,EAAK,MAAOC,GAASpE,IAAY,KAAKoE,CAAI,CAAC,CAC5E,CAHSvE,EAAAmE,IAAA,cAQT,SAASC,IAAe3C,EAAwB,CAC9C,OAAIA,GAASA,EAAM,OAAS,OAAe,CAACtB,IAAY,KAAKsB,EAAM,MAAM,CAAC,CAAC,EACpE,EACT,CAHSzB,EAAAoE,IAAA,oBC7oBT,IAAAI,IAAAC,EAAA,CAAAC,IAAAC,MAAA,IAAM,CAAE,MAAOC,IAAU,OAAQC,GAAU,EAAI,QAAQ,UAAU,EAE3D,CAAE,aAAAC,IAAc,QAAAC,IAAS,MAAAC,GAAM,EAAI,MAEzCL,IAAO,QAAU,KAAY,CAJ7B,MAI6B,CAAAM,EAAA,cAe3B,YAAYC,EAAMC,EAASC,EAAYC,EAAO,CAAC,EAAG,CAChD,KAAK,KAAOA,EACZ,KAAK,KAAO,KAAK,KAAK,MAAQ,KAC9B,KAAK,QAAU,CAAC,EAChB,QAAWC,KAAUH,EAAS,CAC5B,IAAMI,EAAI,KAAK,QAAQ,KAAKD,EAAO,YAAY,CAAC,EAC5C,KAAK,QAAQC,EAAI,CAAC,IAAM,OAAO,KAAK,QAAQ,QAAQ,MAAM,CAChE,CAEA,KAAK,MAAQ,MAAM,QAAQH,CAAU,EAAIA,EAAa,CAACA,CAAU,EAEjE,QAASI,EAAI,EAAGA,EAAI,KAAK,MAAM,OAAQA,IAAK,CAE1C,IAAMC,EAAO,OADF,KAAK,MAAMD,CAAC,EAEvB,GAAIC,IAAS,WACX,MAAM,IAAI,MACR,GAAGN,EAAQ,SAAS,CAAC,MACnB,KAAK,KAAK,MAAQD,CACpB,gDAAgDO,CAAI,IACtD,CACJ,CAKA,GAHA,KAAK,KAAOP,EACZ,KAAK,WAAa,CAAC,EAEf,KAAK,KAAK,eAAiB,GAC7B,KAAK,OAAS,IAAI,OAAOA,CAAI,UACpB,KAAK,KAAM,CAChB,WAAY,KAAK,OAEnB,KAAK,KAAK,SAAW,KAAK,KAAK,SAAW,IAG5C,GAAM,CAAE,OAAAQ,EAAQ,KAAAC,CAAK,EAAIb,IAAa,KAAK,KAAM,KAAK,IAAI,EAC1D,KAAK,OAASY,EACd,KAAK,WAAaC,CACpB,CACF,CASA,MAAMT,EAAM,CACV,OAAO,KAAK,OAAO,KAAKA,CAAI,CAC9B,CAWA,OAAOA,EAAMU,EAAUC,EAAS,CAAC,EAAG,CAClC,QAASC,EAAMF,EAAS,OAAQJ,EAAI,EAAGA,EAAIM,EAAKN,IAC9C,GAAI,KAAK,WAAWA,CAAC,EAAG,CACtB,IAAMO,EAAIH,EAASJ,CAAC,EAChBO,GAAKA,EAAE,OAAS,IAClBF,EAAO,KAAK,WAAWL,CAAC,EAAE,IAAI,EAAIO,GAAIC,IAAuBD,CAAC,EAClE,CAGF,OAAOF,CACT,CASA,SAASX,EAAM,CACb,OAAO,KAAK,KAAK,eAAiB,CAAC,EAAIA,EAAK,MAAM,KAAK,MAAM,EAAE,MAAM,CAAC,CACxE,CAiBA,IAAIW,EAAQI,EAAS,CACnB,IAAIC,EAAOL,EACLM,EAAM,KAAK,KAAK,QAAQ,YAAa,EAAE,EAEzC,OAAON,GAAW,WACpBK,EAAO,MAAM,UAAU,MAAM,KAAK,SAAS,EACvC,OAAOA,EAAKA,EAAK,OAAS,CAAC,GAAM,WACnCD,EAAUC,EAAKA,EAAK,OAAS,CAAC,EAC9BA,EAAOA,EAAK,MAAM,EAAG,EAAE,IAI3B,IAAME,EAASrB,IAAQoB,EAAK,CAAE,OAAQ,mBAAoB,GAAGF,CAAQ,CAAC,EAClEI,EACE,CAAE,OAAAC,CAAO,EAAItB,IAAMmB,CAAG,EACxBI,EAAU,CAAC,EAEf,GAAI,MAAM,QAAQL,CAAI,EACpB,QAASJ,EAAMQ,EAAO,OAAQd,EAAI,EAAGgB,EAAI,EAAGhB,EAAIM,EAAKN,IAC/Cc,EAAOd,CAAC,EAAE,OACZe,EAAQD,EAAOd,CAAC,EAAE,IAAI,EAAIU,EAAKM,GAAG,QAG7BF,EAAO,KAAMG,GAAUA,EAAM,IAAI,EAC1CF,EAAUV,EACAI,IACVA,EAAUJ,GAGZ,OAAW,CAACa,EAAKC,CAAK,IAAK,OAAO,QAAQJ,CAAO,EAC/CA,EAAQG,CAAG,EAAI,OAAOC,CAAK,EAK7B,OAFAN,EAAWD,EAAOG,CAAO,EAErBN,GAAWA,EAAQ,OACrBI,EAAWzB,IAASyB,CAAQ,EACxB,OAAOJ,EAAQ,OAAU,SAC3BI,EAAS,OAASJ,EAAQ,OAE1BI,EAAS,OAAS,OAClBA,EAAS,MAAQJ,EAAQ,OAGpBpB,IAAUwB,CAAQ,GAGpBA,CACT,CAwBA,MAAMO,EAAOC,EAAI,CACf,GAAM,CAAE,MAAAC,CAAM,EAAI,KACZjB,EAAS,KAAK,WACdT,EAAaH,EAAA,SAAU8B,EAAKC,EAAM,CACtC,OAAOH,EAAG,KAAK,KAAME,EAAI,OAAOH,CAAK,EAAGG,EAAKC,CAAI,CACnD,EAFmB,cAInB5B,EAAW,MAAQwB,EAEnB,IAAMK,EAAQpB,EAAO,IAAI,SAAUqB,EAAG,CACpC,OAAOA,EAAE,IACX,CAAC,EAEKC,EAAIF,EAAM,QAAQL,CAAK,EAC7B,OAAIO,EAAI,IAENL,EAAM,KAAK,CAACD,EAAIrB,IAAM,CAGpB,GAAI,CAACqB,EAAG,OAASI,EAAM,QAAQJ,EAAG,KAAK,EAAIM,EAEzC,OAAAL,EAAM,OAAOtB,EAAG,EAAGJ,CAAU,EACtB,EAEX,CAAC,EAGI,IACT,CASA,UAAUgC,EAAQ,CAChB,GAAI,KAAK,MAKP,GAJA,KAAK,KACH,KAAK,OAAS,KAAO,KAAK,KAAK,SAAW,GACtC,GAAGA,CAAM,GAAG,KAAK,IAAI,GACrBA,EACF,KAAK,KAAK,eAAiB,IAAQA,aAAkB,OACvD,KAAK,OAAS,IAAI,OAAO,KAAK,IAAI,UACzB,KAAK,KAAM,CACpB,GAAM,CAAE,OAAA1B,EAAQ,KAAAC,CAAK,EAAIb,IAAa,KAAK,KAAM,KAAK,IAAI,EAC1D,KAAK,OAASY,EACd,KAAK,WAAaC,CACpB,EAGF,OAAO,IACT,CACF,EAWA,SAASK,IAAuBqB,EAAM,CACpC,GAAI,CAGF,OAAO,mBAAmBA,EAAK,QAAQ,MAAO,GAAG,CAAC,CACpD,MAAQ,CACN,OAAOA,CACT,CACF,CARSpC,EAAAe,IAAA,4BC7PT,IAAAsB,IAAAC,EAAA,CAAAC,IAAAC,MAAA,CAMA,IAAMC,IAAO,QAAQ,WAAW,EAE1BC,IAAQ,KAAiB,YAAY,EAErCC,IAAU,KACVC,IAAY,MACZ,CAAE,aAAAC,GAAa,EAAI,MAEnBC,IAAQ,MAERC,IAAUN,IAAK,QAAQ,IAAKO,GAAWA,EAAO,YAAY,CAAC,EAK3DC,GAAN,MAAMC,CAAO,CArBb,MAqBa,CAAAC,EAAA,eA+BX,YAAYC,EAAO,CAAC,EAAG,CACrB,GAAI,EAAE,gBAAgBF,GAAS,OAAO,IAAIA,EAAOE,CAAI,EAErD,KAAK,KAAOA,EACZ,KAAK,QAAU,KAAK,KAAK,SAAW,CAClC,OACA,UACA,MACA,MACA,QACA,OACA,QACF,EACA,KAAK,UAAY,EAAQ,KAAK,KAAK,UAEnC,KAAK,OAAS,CAAC,EACf,KAAK,MAAQ,CAAC,EACd,KAAK,KAAO,KAAK,KAAK,IACxB,CAgBA,OAAO,IAAIC,KAASC,EAAM,CACxB,OAAOR,IAAM,UAAU,IAAI,MAAM,CAAE,KAAAO,CAAK,EAAGC,CAAI,CACjD,CA+BA,OAAOC,EAAY,CACjB,IAAMC,EAAS,KACXH,EAGJ,GAAI,MAAM,QAAQE,EAAW,CAAC,CAAC,GAAK,OAAOA,EAAW,CAAC,EAAE,CAAC,GAAM,SAAU,CACxE,IAAME,EAAWF,EAAW,CAAC,EAC7B,QAAWG,KAAKD,EACdD,EAAO,IAAI,MAAMA,EAAQ,CAACE,EAAG,GAAGH,EAAW,MAAM,CAAC,CAAC,CAAC,EAGtD,OAAO,IACT,CAEA,IAAMI,EAAU,OAAOJ,EAAW,CAAC,GAAM,SACrCI,IAASN,EAAOE,EAAW,MAAM,GAErC,QAAWK,KAAKL,EACd,GAAIK,EAAE,OAAQ,CACZ,IAAMC,EAAc,OAAO,OACzB,OAAO,OAAOX,EAAO,SAAS,EAC9BU,EAAE,OACF,CACE,MAAO,CAAC,GAAGA,EAAE,OAAO,KAAK,CAC3B,CACF,EAEA,QAASE,EAAI,EAAGA,EAAID,EAAY,MAAM,OAAQC,IAAK,CACjD,IAAMC,EAAcF,EAAY,MAAMC,CAAC,EACjCE,EAAa,OAAO,OACxB,OAAO,OAAOlB,IAAM,SAAS,EAC7BiB,CACF,EAEIV,GAAMW,EAAW,UAAUX,CAAI,EAC/BG,EAAO,KAAK,QAAQQ,EAAW,UAAUR,EAAO,KAAK,MAAM,EAC/DA,EAAO,MAAM,KAAKQ,CAAU,EAC5BH,EAAY,MAAMC,CAAC,EAAIE,CACzB,CAEA,GAAIR,EAAO,OAAQ,CACjB,IAAMS,EAAe,OAAO,KAAKT,EAAO,MAAM,EAC9C,QAAWU,KAAOD,EAChBJ,EAAY,MAAMK,EAAKV,EAAO,OAAOU,CAAG,CAAC,CAE7C,CACF,KAAO,CACL,GAAM,CAAE,KAAAC,CAAK,EAAItB,IAAaW,EAAO,KAAK,QAAU,GAAIA,EAAO,IAAI,EAC7DY,EAAuB,GAC3BZ,EAAO,KAAK,QAAUW,EAAK,OAAS,GAEtCX,EAAO,SAASH,GAAQ,UAAW,CAAC,EAAGO,EAAG,CACxC,IAAK,GACL,eAAgB,CAACD,GAAW,CAACS,EAC7B,aAAc,EAChB,CAAC,CACH,CAGF,OAAO,IACT,CAcA,OAAOC,EAAQ,CACbA,EAASA,EAAO,QAAQ,MAAO,EAAE,EAEjC,KAAK,KAAK,OAASA,EAEnB,QAASC,EAAI,EAAGA,EAAI,KAAK,MAAM,OAAQA,IACvB,KAAK,MAAMA,CAAC,EACpB,UAAUD,CAAM,EAGxB,OAAO,IACT,CAOA,YAAa,CACX,IAAMb,EAAS,KACTe,EAAWpB,EAAA,CAACqB,EAAKC,IAAS,CAK9B,GAJA/B,IAAM,QAAS8B,EAAI,OAAQA,EAAI,IAAI,EAI/B,CAFgBhB,EAAO,UAAUgB,EAAI,IAAI,EAG3C,OAAOC,EAAK,EAGd,IAAMpB,EACJG,EAAO,KAAK,YACZgB,EAAI,eACJA,EAAI,MACJA,EAAI,WACAE,EAAUlB,EAAO,MAAMH,EAAMmB,EAAI,MAAM,EAS7C,GARIA,EAAI,QACNA,EAAI,QAAQ,KAAK,MAAMA,EAAI,QAASE,EAAQ,IAAI,EAEhDF,EAAI,QAAUE,EAAQ,KAGxBF,EAAI,OAAShB,EAET,CAACkB,EAAQ,MAAO,OAAOD,EAAK,EAEhC,IAAME,EAAgBD,EAAQ,cACxBE,EAAoBD,EAAcA,EAAc,OAAS,CAAC,EAChEH,EAAI,cAAgBI,EAAkB,KAClCA,EAAkB,OACpBJ,EAAI,kBAAoBI,EAAkB,MAG5C,IAAMC,GACJrB,EAAO,UAAY,CAACoB,CAAiB,EAAID,GACzC,OAAO,CAACG,EAAMC,KACdD,EAAK,KAAK,CAACN,EAAKC,KACdD,EAAI,SAAWO,EAAM,SAAS1B,EAAMmB,EAAI,QAAQ,EAChDA,EAAI,QAAQ,OAASO,EAAM,OAAO1B,EAAMmB,EAAI,SAAUA,EAAI,MAAM,EAChEA,EAAI,OAASA,EAAI,QAAQ,OACzBA,EAAI,WAAaO,EAAM,KACvBP,EAAI,WAAaO,EAAM,KACvBP,EAAI,cAAgBO,EAAM,KACtBA,EAAM,OACRP,EAAI,kBAAoBO,EAAM,MAGzBN,EAAK,EACb,EACM,CAAC,GAAGK,EAAM,GAAGC,EAAM,KAAK,GAC9B,CAAC,CAAC,EAEL,OAAOpC,IAAQkC,CAAU,EAAEL,EAAKC,CAAI,CACtC,EApDiB,YAsDjB,OAAAF,EAAS,OAAS,KAEXA,CACT,CAEA,QAAS,CACP,OAAO,KAAK,WAAW,CACzB,CA4CA,eAAeS,EAAU,CAAC,EAAG,CAC3B,IAAMC,EAAc,KAAK,QAEzB,MAAO,CAACT,EAAKC,IACJA,EAAK,EAAE,KAAK,IAAM,CACvB,IAAMS,EAAU,CAAC,EAEjB,GAAIV,EAAI,UAAY,CAACA,EAAI,QAAUA,EAAI,SAAW,KAAM,CACtD,QAASF,EAAI,EAAGA,EAAIE,EAAI,QAAQ,OAAQF,IAAK,CAC3C,IAAMa,EAAQX,EAAI,QAAQF,CAAC,EAC3B,QAASR,EAAI,EAAGA,EAAIqB,EAAM,QAAQ,OAAQrB,IAAK,CAC7C,IAAMd,EAASmC,EAAM,QAAQrB,CAAC,EAC9BoB,EAAQlC,CAAM,EAAIA,CACpB,CACF,CAEA,IAAMoC,EAAa,OAAO,KAAKF,CAAO,EACtC,GAAKD,EAAY,SAAST,EAAI,MAAM,GAY7B,GAAIY,EAAW,OAAS,GAC7B,GAAIZ,EAAI,SAAW,UACjBA,EAAI,OAAS,IACbA,EAAI,KAAO,GACXA,EAAI,IAAI,QAASY,EAAW,KAAK,IAAI,CAAC,UAC7B,CAACF,EAAQV,EAAI,MAAM,EAAG,CAC/B,GAAIQ,EAAQ,MAMV,MAJE,OAAOA,EAAQ,kBAAqB,WAChCA,EAAQ,iBAAiB,EACzB,IAAIpC,IAAU,iBAIpB4B,EAAI,OAAS,IACbA,EAAI,IAAI,QAASY,EAAW,KAAK,IAAI,CAAC,CAE1C,OA7BqC,CACrC,GAAIJ,EAAQ,MAMV,MAJE,OAAOA,EAAQ,gBAAmB,WAC9BA,EAAQ,eAAe,EACvB,IAAIpC,IAAU,eAIpB4B,EAAI,OAAS,IACbA,EAAI,IAAI,QAASY,EAAW,KAAK,IAAI,CAAC,CAE1C,CAmBF,CACF,CAAC,CAEL,CAWA,IAAIC,EAAMhC,EAAME,EAAY,CAU1B,GATI,OAAOF,GAAS,UAAYA,aAAgB,OAC9CE,EAAa,MAAM,UAAU,MAAM,KAAK,UAAW,CAAC,GAEpDA,EAAa,MAAM,UAAU,MAAM,KAAK,UAAW,CAAC,EACpDF,EAAOgC,EACPA,EAAO,MAKP,OAAOhC,GAAS,UAChB,EAAEA,aAAgB,UACjB,CAAC,MAAM,QAAQA,CAAI,GAAKA,EAAK,SAAW,GAEzC,MAAM,IAAI,MAAM,uDAAuD,EAEzE,IAAMD,EAAO,CACX,KAAAiC,EACA,aAAchC,aAAgB,MAChC,EAEA,YAAK,SAASA,EAAMN,IAASQ,EAAY,CAAE,GAAG,KAAK,KAAM,GAAGH,CAAK,CAAC,EAE3D,IACT,CAyBA,SAASkC,EAAQC,EAAaC,EAAM,CAElC,IAAI,OAAOF,GAAW,UAAYA,EAAO,CAAC,IAAM,OAC9CA,EAAS,KAAK,IAAIA,CAAM,EACpBA,aAAkB,OAAO,MAAMA,EAIrC,IACE,OAAOC,GAAgB,UACtBA,EAAY,CAAC,IAAM,KAAO,CAACA,EAAY,SAAS,KAAK,KAEtDA,EAAc,KAAK,IAAIA,CAAW,EAC9BA,aAAuB,OAAO,MAAMA,EAG1C,OAAO,KAAK,IAAID,EAASd,GAAQ,CAC/BA,EAAI,SAASe,CAAW,EACxBf,EAAI,OAASgB,GAAQ,GACvB,CAAC,CACH,CAWA,SAASnC,EAAMN,EAASQ,EAAYkC,EAAU,CAAC,EAAG,CAChD,IAAMjC,EAAS,KACT,CAAE,MAAAkC,CAAM,EAAI,KACZtC,EAAO,CAAE,GAAG,KAAK,KAAM,GAAGqC,CAAQ,EAExC,GAAI,MAAM,QAAQpC,CAAI,EAAG,CACvB,QAAWsC,KAAWtC,EACpBG,EAAO,SAAS,KAAKA,EAAQmC,EAAS5C,EAASQ,EAAYH,CAAI,EAGjE,OAAO,IACT,CAGA,IAAM+B,EAAQ,IAAIrC,IAAMO,EAAMN,EAASQ,EAAY,CACjD,IAAKH,EAAK,MAAQ,GAAQA,EAAK,IAAM,GACrC,KAAMA,EAAK,KACX,UAAWA,EAAK,WAAa,GAC7B,OAAQA,EAAK,QAAU,GACvB,OAAQA,EAAK,QAAU,GACvB,eAAgBA,EAAK,eACrB,aAAcA,EAAK,YACrB,CAAC,EAGG,KAAK,KAAK,QACZ+B,EAAM,UAAU,KAAK,KAAK,MAAM,EAIlC,QAASb,EAAI,EAAGA,EAAI,OAAO,KAAK,KAAK,MAAM,EAAE,OAAQA,IAAK,CACxD,IAAMsB,EAAQ,OAAO,KAAK,KAAK,MAAM,EAAEtB,CAAC,EACxCa,EAAM,MAAMS,EAAO,KAAK,OAAOA,CAAK,CAAC,CACvC,CAEA,OAAAF,EAAM,KAAKP,CAAK,EAEhBzC,IAAM,sBAAuByC,EAAM,QAASA,EAAM,IAAI,EAE/CA,CACT,CAQA,MAAME,EAAM,CACV,IAAMQ,EAAS,KAAK,MAEpB,QAASC,EAAMD,EAAO,OAAQvB,EAAI,EAAGA,EAAIwB,EAAKxB,IAC5C,GAAIuB,EAAOvB,CAAC,EAAE,MAAQuB,EAAOvB,CAAC,EAAE,OAASe,EAAM,OAAOQ,EAAOvB,CAAC,EAGhE,MAAO,EACT,CAoCA,IAAIe,KAAS/B,EAAM,CACjB,IAAM6B,EAAQ,KAAK,MAAME,CAAI,EAC7B,OAAIF,EAAcA,EAAM,IAAI,MAAMA,EAAO7B,CAAI,EAEtC,IAAI,MAAM,4BAA4B,OAAO+B,CAAI,CAAC,EAAE,CAC7D,CAWA,MAAMhC,EAAML,EAAQ,CAClB,IAAM+C,EAAS,KAAK,MAChBhB,EACEL,EAAU,CACd,KAAM,CAAC,EACP,cAAe,CAAC,EAChB,MAAO,EACT,EAEA,QAASoB,EAAMC,EAAO,OAAQzB,EAAI,EAAGA,EAAIwB,EAAKxB,IAC5CS,EAAQgB,EAAOzB,CAAC,EAEhB5B,IAAM,aAAcqC,EAAM,KAAMA,EAAM,MAAM,EAExCA,EAAM,MAAM1B,CAAI,IAClBqB,EAAQ,KAAK,KAAKK,CAAK,GAEnBA,EAAM,QAAQ,SAAW,GAAKA,EAAM,QAAQ,SAAS/B,CAAM,KAC7D0B,EAAQ,cAAc,KAAKK,CAAK,EAC5BA,EAAM,QAAQ,OAAS,IAAGL,EAAQ,MAAQ,MAKpD,OAAOA,CACT,CAOA,UAAUsB,EAAO,CACf,GAAM,CAAE,KAAAC,CAAK,EAAI,KAEjB,GAAI,CAACA,EACH,MAAO,GAGT,GAAI,CAACD,EACH,MAAO,GAGT,GAAI,OAAOC,GAAS,SAClB,OAAOD,IAAUC,EAGnB,GAAI,OAAOA,GAAS,UAAYA,aAAgB,OAC9C,OAAOA,EAAK,KAAKD,CAAK,CAE1B,CA+BA,MAAMJ,EAAOrC,EAAY,CACvB,KAAK,OAAOqC,CAAK,EAAIrC,EACrB,QAAS,EAAI,EAAG,EAAI,KAAK,MAAM,OAAQ,IACvB,KAAK,MAAM,CAAC,EACpB,MAAMqC,EAAOrC,CAAU,EAG/B,OAAO,IACT,CACF,EA4IA,QAAWP,KAAUD,IACnBE,GAAO,UAAUD,CAAM,EAAI,SAAUqC,EAAMhC,EAAME,EAAY,CAU3D,GATI,OAAOF,GAAS,UAAYA,aAAgB,OAC9CE,EAAa,MAAM,UAAU,MAAM,KAAK,UAAW,CAAC,GAEpDA,EAAa,MAAM,UAAU,MAAM,KAAK,UAAW,CAAC,EACpDF,EAAOgC,EACPA,EAAO,MAKP,OAAOhC,GAAS,UAChB,EAAEA,aAAgB,UACjB,CAAC,MAAM,QAAQA,CAAI,GAAKA,EAAK,SAAW,GAEzC,MAAM,IAAI,MACR,4CAA4CL,CAAM,UACpD,EAEF,IAAMI,EAAO,CACX,KAAAiC,EACA,aAAchC,aAAgB,MAChC,EAGA,YAAK,SAASA,EAAM,CAACL,CAAM,EAAGO,EAAY,CAAE,GAAG,KAAK,KAAM,GAAGH,CAAK,CAAC,EAC5D,IACT,EAKFH,GAAO,UAAU,IAAMA,GAAO,UAAU,OAExCT,IAAO,QAAUS,KCl0BjB,IAAAiD,IAAAC,EAAAC,KAAA,CA6BA,IAAIC,IAAc,yJACdC,IAAa,kCACbC,IAAc,sCAQdC,IAAa,uBAKbC,IAAc,WAkBdC,IAAoB,0CACpBC,IAAiB,yCACjBC,IAAa,yFAMjBR,IAAQ,OAASS,IACjBT,IAAQ,MAAQU,IAUhB,SAASD,IAAOE,EAAK,CACnB,GAAI,CAACA,GAAO,OAAOA,GAAQ,SACzB,MAAM,IAAI,UAAU,0BAA0B,EAGhD,IAAIC,EAAaD,EAAI,WACjBE,EAAUF,EAAI,QACdG,EAASH,EAAI,OACbI,EAAOJ,EAAI,KAEf,GAAI,CAACI,GAAQ,CAACR,IAAe,KAAKQ,CAAI,EACpC,MAAM,IAAI,UAAU,cAAc,EAGpC,GAAI,CAACF,GAAW,CAACP,IAAkB,KAAKO,CAAO,EAC7C,MAAM,IAAI,UAAU,iBAAiB,EAIvC,IAAIG,EAASD,EAAO,IAAMF,EAG1B,GAAIC,EAAQ,CACV,GAAI,CAACP,IAAe,KAAKO,CAAM,EAC7B,MAAM,IAAI,UAAU,gBAAgB,EAGtCE,GAAU,IAAMF,CAClB,CAGA,GAAIF,GAAc,OAAOA,GAAe,SAItC,QAHIK,EACAC,EAAS,OAAO,KAAKN,CAAU,EAAE,KAAK,EAEjCO,EAAI,EAAGA,EAAID,EAAO,OAAQC,IAAK,CAGtC,GAFAF,EAAQC,EAAOC,CAAC,EAEZ,CAAChB,IAAY,KAAKc,CAAK,EACzB,MAAM,IAAI,UAAU,wBAAwB,EAG9CD,GAAU,KAAOC,EAAQ,IAAMG,IAAQR,EAAWK,CAAK,CAAC,CAC1D,CAGF,OAAOD,CACT,CA/CSK,EAAAZ,IAAA,UAyDT,SAASC,IAAMM,EAAQ,CACrB,GAAI,CAACA,EACH,MAAM,IAAI,UAAU,6BAA6B,EAQnD,GAJI,OAAOA,GAAW,WACpBA,EAASM,IAAeN,CAAM,GAG5B,OAAOA,GAAW,SACpB,MAAM,IAAI,UAAU,4CAA4C,EAGlE,IAAIO,EAAQP,EAAO,QAAQ,GAAG,EAC1BD,EAAOQ,IAAU,GACjBP,EAAO,OAAO,EAAGO,CAAK,EACtBP,EAEAQ,EACAC,EACAd,EAAMe,IAAUX,CAAI,EACpBG,EAAS,CAAC,EACVS,EAIJ,IAFA1B,IAAY,UAAYsB,EAEjBE,EAAQxB,IAAY,KAAKe,CAAM,GAAG,CACvC,GAAIS,EAAM,QAAUF,EAClB,MAAM,IAAI,UAAU,0BAA0B,EAGhDA,GAASE,EAAM,CAAC,EAAE,OAClBD,EAAMC,EAAM,CAAC,EAAE,YAAY,EAC3BE,EAAQF,EAAM,CAAC,EAEXE,EAAM,CAAC,IAAM,MAEfA,EAAQA,EACL,OAAO,EAAGA,EAAM,OAAS,CAAC,EAC1B,QAAQvB,IAAY,IAAI,GAG7Bc,EAAOM,CAAG,EAAIG,CAChB,CAEA,GAAIJ,IAAU,IAAMA,IAAUP,EAAO,OACnC,MAAM,IAAI,UAAU,0BAA0B,EAGhD,OAAAL,EAAI,WAAaO,EAEVP,CACT,CArDSU,EAAAX,IAAA,SA+DT,SAASY,IAAeX,EAAK,CAC3B,GAAI,OAAOA,EAAI,WAAc,WAE3B,OAAOA,EAAI,UAAU,cAAc,EAGrC,GAAI,OAAOA,EAAI,SAAY,SAEzB,OAAOA,EAAI,SAAWA,EAAI,QAAQ,cAAc,CAEpD,CAVSU,EAAAC,IAAA,kBAoBT,SAASF,IAAQQ,EAAK,CACpB,IAAIC,EAAM,OAAOD,CAAG,EAGpB,GAAIzB,IAAY,KAAK0B,CAAG,EACtB,OAAOA,EAGT,GAAIA,EAAI,OAAS,GAAK,CAAC3B,IAAW,KAAK2B,CAAG,EACxC,MAAM,IAAI,UAAU,yBAAyB,EAG/C,MAAO,IAAMA,EAAI,QAAQxB,IAAa,MAAM,EAAI,GAClD,CAbSgB,EAAAD,IAAA,WAuBT,SAASM,IAAUV,EAAQ,CACzB,IAAIS,EAAQjB,IAAW,KAAKQ,EAAO,YAAY,CAAC,EAEhD,GAAI,CAACS,EACH,MAAM,IAAI,UAAU,oBAAoB,EAG1C,IAAIV,EAAOU,EAAM,CAAC,EACdZ,EAAUY,EAAM,CAAC,EACjBX,EAGAS,EAAQV,EAAQ,YAAY,GAAG,EAC/BU,IAAU,KACZT,EAASD,EAAQ,OAAOU,EAAQ,CAAC,EACjCV,EAAUA,EAAQ,OAAO,EAAGU,CAAK,GAGnC,IAAIZ,EAAM,CACR,KAAMI,EACN,QAASF,EACT,OAAQC,CACV,EAEA,OAAOH,CACT,CAzBSU,EAAAK,IAAA,eCpPT,IAAAI,IAAAC,EAAA,CAAAC,IAAAC,KAAA,cAcA,IAAIC,IAAQ,MACRC,IAAO,MAOXF,GAAO,QAAUG,IACjBH,GAAO,QAAQ,GAAKI,IACpBJ,GAAO,QAAQ,QAAUK,IACzBL,GAAO,QAAQ,UAAYM,IAC3BN,GAAO,QAAQ,MAAQO,IAgBvB,SAASH,IAAQI,EAAOC,EAAQ,CAC9B,IAAIC,EACAC,EAAQF,EAGRG,EAAMC,IAAiBL,CAAK,EAGhC,GAAI,CAACI,EACH,MAAO,GAIT,GAAID,GAAS,CAAC,MAAM,QAAQA,CAAK,EAE/B,IADAA,EAAQ,IAAI,MAAM,UAAU,OAAS,CAAC,EACjCD,EAAI,EAAGA,EAAIC,EAAM,OAAQD,IAC5BC,EAAMD,CAAC,EAAI,UAAUA,EAAI,CAAC,EAK9B,GAAI,CAACC,GAAS,CAACA,EAAM,OACnB,OAAOC,EAGT,IAAIE,EACJ,IAAKJ,EAAI,EAAGA,EAAIC,EAAM,OAAQD,IAC5B,GAAIH,IAAUD,IAAUQ,EAAOH,EAAMD,CAAC,CAAC,EAAGE,CAAG,EAC3C,OAAOE,EAAK,CAAC,IAAM,KAAOA,EAAK,QAAQ,GAAG,IAAM,GAC5CF,EACAE,EAKR,MAAO,EACT,CApCSC,EAAAX,IAAA,UAiDT,SAASC,IAASW,EAAK,CACrB,OAAOA,EAAI,QAAQ,mBAAmB,IAAM,QAC1C,CAAC,MAAMA,EAAI,QAAQ,gBAAgB,CAAC,CACxC,CAHSD,EAAAV,IAAA,WA+BT,SAASF,IAAea,EAAKP,EAAQ,CACnC,IAAIE,EAAQF,EAGZ,GAAI,CAACJ,IAAQW,CAAG,EACd,OAAO,KAIT,GAAI,UAAU,OAAS,EAAG,CACxBL,EAAQ,IAAI,MAAM,UAAU,OAAS,CAAC,EACtC,QAAS,EAAI,EAAG,EAAIA,EAAM,OAAQ,IAChCA,EAAM,CAAC,EAAI,UAAU,EAAI,CAAC,CAE9B,CAGA,IAAIH,EAAQQ,EAAI,QAAQ,cAAc,EAEtC,OAAOZ,IAAOI,EAAOG,CAAK,CAC5B,CApBSI,EAAAZ,IAAA,iBAsCT,SAASG,IAAWQ,EAAM,CACxB,GAAI,OAAOA,GAAS,SAElB,MAAO,GAGT,OAAQA,EAAM,CACZ,IAAK,aACH,MAAO,oCACT,IAAK,YACH,MAAO,aACX,CAEA,OAAIA,EAAK,CAAC,IAAM,IAEP,MAAQA,EAGVA,EAAK,QAAQ,GAAG,IAAM,GACzBZ,IAAK,OAAOY,CAAI,EAChBA,CACN,CArBSC,EAAAT,IAAA,aAkCT,SAASC,IAAWU,EAAUC,EAAQ,CAEpC,GAAID,IAAa,GACf,MAAO,GAIT,IAAIE,EAAcD,EAAO,MAAM,GAAG,EAC9BE,EAAgBH,EAAS,MAAM,GAAG,EAQtC,OALIE,EAAY,SAAW,GAAKC,EAAc,SAAW,GAKrDA,EAAc,CAAC,IAAM,KAAOA,EAAc,CAAC,IAAMD,EAAY,CAAC,EACzD,GAILC,EAAc,CAAC,EAAE,OAAO,EAAG,CAAC,IAAM,KAC7BA,EAAc,CAAC,EAAE,QAAUD,EAAY,CAAC,EAAE,OAAS,GACxDC,EAAc,CAAC,EAAE,OAAO,CAAC,IAAMD,EAAY,CAAC,EAAE,OAAO,EAAIC,EAAc,CAAC,EAAE,MAAM,EAIhF,EAAAA,EAAc,CAAC,IAAM,KAAOA,EAAc,CAAC,IAAMD,EAAY,CAAC,EAKpE,CAhCSJ,EAAAR,IAAA,aA0CT,SAASc,IAAeb,EAAO,CAE7B,IAAIM,EAAOb,IAAM,MAAMO,CAAK,EAG5B,OAAAM,EAAK,WAAa,OAGXb,IAAM,OAAOa,CAAI,CAC1B,CATSC,EAAAM,IAAA,iBAmBT,SAASR,IAAkBL,EAAO,CAChC,GAAI,CAACA,EACH,OAAO,KAGT,GAAI,CACF,OAAOa,IAAcb,CAAK,CAC5B,MAAc,CACZ,OAAO,IACT,CACF,CAVSO,EAAAF,IAAA,sBC/PT,IAAAS,IAAAC,EAAAC,KAAA,cAEA,IAAIC,IAAU,SAEdD,IAAQ,WAAaE,IACrB,SAASA,IAAkBC,EAASC,EAAS,CACzC,KAAK,QAAUD,EACf,KAAK,OAAS,EAClB,CAHSE,EAAAH,IAAA,qBAKTA,IAAkB,UAAU,MAAQ,SAASI,EAAK,CAC9C,OAAI,KAAK,SACLA,EAAML,IAAUK,EAChB,KAAK,OAAS,IAGX,KAAK,QAAQ,MAAMA,CAAG,CACjC,EAEAJ,IAAkB,UAAU,IAAM,UAAW,CACzC,OAAO,KAAK,QAAQ,IAAI,CAC5B,EAKAF,IAAQ,SAAWO,IACnB,SAASA,IAAgBC,EAASJ,EAAS,CACvC,KAAK,QAAUI,EACf,KAAK,KAAO,GACZ,KAAK,QAAUJ,GAAW,CAAC,CAC/B,CAJSC,EAAAE,IAAA,mBAMTA,IAAgB,UAAU,MAAQ,SAASE,EAAK,CAC5C,IAAIC,EAAM,KAAK,QAAQ,MAAMD,CAAG,EAChC,OAAI,KAAK,MAAQ,CAACC,IAGdA,EAAI,CAAC,IAAMT,MACXS,EAAMA,EAAI,MAAM,CAAC,EACb,OAAO,KAAK,QAAQ,UAAa,YACjC,KAAK,QAAQ,SAAS,GAG9B,KAAK,KAAO,IACLA,CACX,EAEAH,IAAgB,UAAU,IAAM,UAAW,CACvC,OAAO,KAAK,QAAQ,IAAI,CAC5B,IClDA,IAAAI,IAAAC,EAAA,CAAAC,IAAAC,MAAA,cACA,IAAIC,IAAS,KAAwB,OAIrCD,IAAO,QAAU,CAEb,KAAQ,CAAE,KAAM,YAAa,SAAU,EAAI,EAC3C,MAAQ,CAAE,KAAM,YAAa,SAAU,EAAI,EAC3C,cAAe,OAEf,KAAQ,CAAE,KAAM,YAAa,SAAU,EAAI,EAC3C,QAAS,OAET,OAAQ,CAAE,KAAM,WAAY,EAC5B,OAAQ,CAAE,KAAM,WAAY,EAC5B,IAAQ,CAAE,KAAM,WAAY,EAG5B,UAAWE,GACf,EAIA,SAASA,IAAcC,EAAcC,EAAO,CACxC,KAAK,IAAMD,EAAa,aACxB,KAAK,SAAWA,EAAa,SAEzB,KAAK,MAAQ,SACb,KAAK,QAAUE,IACV,KAAK,MAAQ,UAClB,KAAK,IAAM,OACX,KAAK,QAAUC,IAGXL,IAAO,KAAK,eAAgB,KAAK,EAAE,SAAS,IAAM,cAClD,KAAK,QAAUM,IACf,KAAK,mBAAqBH,EAAM,oBAG5C,CAhBSI,EAAAN,IAAA,iBAkBTA,IAAc,UAAU,QAAUO,IAClCP,IAAc,UAAU,QAAUQ,IAKlC,IAAIC,IAAgB,QAAQ,gBAAgB,EAAE,cAEzCA,IAAc,UAAU,MACzBA,IAAc,UAAU,IAAM,UAAW,CAAC,GAG9C,SAASD,IAAgBE,EAASC,EAAO,CACrCF,IAAc,KAAK,KAAME,EAAM,GAAG,CACtC,CAFSL,EAAAE,IAAA,mBAITA,IAAgB,UAAYC,IAAc,UAM1C,SAASF,IAAgBG,EAASC,EAAO,CACrC,KAAK,IAAMA,EAAM,GACrB,CAFSL,EAAAC,IAAA,mBAITA,IAAgB,UAAU,MAAQ,SAASK,EAAK,CAC5C,OAAOb,IAAO,KAAKa,EAAK,KAAK,GAAG,CACpC,EAEAL,IAAgB,UAAU,IAAM,UAAW,CAC3C,EAMA,SAASJ,IAAsBO,EAASC,EAAO,CAC3C,KAAK,QAAU,EACnB,CAFSL,EAAAH,IAAA,yBAITA,IAAsB,UAAU,MAAQ,SAASS,EAAK,CAClDA,EAAM,KAAK,QAAUA,EACrB,IAAIC,EAAgBD,EAAI,OAAUA,EAAI,OAAS,EAC/C,YAAK,QAAUA,EAAI,MAAMC,CAAa,EACtCD,EAAMA,EAAI,MAAM,EAAGC,CAAa,EAEzBd,IAAO,KAAKa,EAAK,QAAQ,CACpC,EAEAT,IAAsB,UAAU,IAAM,UAAW,CAC7C,OAAOJ,IAAO,KAAK,KAAK,QAAS,QAAQ,CAC7C,EAMA,SAASK,IAAqBM,EAASC,EAAO,CAC9C,CADSL,EAAAF,IAAA,wBAGTA,IAAqB,UAAU,MAAQ,SAASQ,EAAK,CAEjD,QADIE,EAAMf,IAAO,MAAMa,EAAI,OAAS,CAAC,EAAGG,EAAS,EACxC,EAAI,EAAG,EAAIH,EAAI,OAAQ,IAAK,CACjC,IAAII,EAAWJ,EAAI,WAAW,CAAC,EAG3BI,EAAW,IACXF,EAAIC,GAAQ,EAAIC,EACXA,EAAW,MAChBF,EAAIC,GAAQ,EAAI,KAAQC,IAAa,GACrCF,EAAIC,GAAQ,EAAI,KAAQC,EAAW,MAGnCF,EAAIC,GAAQ,EAAI,KAAQC,IAAa,IACrCF,EAAIC,GAAQ,EAAI,KAASC,IAAa,EAAK,IAC3CF,EAAIC,GAAQ,EAAI,KAAQC,EAAW,IAE3C,CACA,OAAOF,EAAI,MAAM,EAAGC,CAAM,CAC9B,EAEAX,IAAqB,UAAU,IAAM,UAAW,CAChD,EAKA,SAASC,IAAqBK,EAASC,EAAO,CAC1C,KAAK,IAAM,EACX,KAAK,UAAY,EACjB,KAAK,SAAW,EAChB,KAAK,mBAAqBA,EAAM,kBACpC,CALSL,EAAAD,IAAA,wBAOTA,IAAqB,UAAU,MAAQ,SAASS,EAAK,CAGjD,QAFIG,EAAM,KAAK,IAAKC,EAAY,KAAK,UAAWC,EAAW,KAAK,SAC5DC,EAAM,GACDC,EAAI,EAAGA,EAAIP,EAAI,OAAQO,IAAK,CACjC,IAAIC,EAAUR,EAAIO,CAAC,GACdC,EAAU,OAAU,KACjBJ,EAAY,IACZE,GAAO,KAAK,mBACZF,EAAY,GAGZI,EAAU,IACVF,GAAO,OAAO,aAAaE,CAAO,EAC3BA,EAAU,KACjBL,EAAMK,EAAU,GAChBJ,EAAY,EAAGC,EAAW,GACnBG,EAAU,KACjBL,EAAMK,EAAU,GAChBJ,EAAY,EAAGC,EAAW,GAE1BC,GAAO,KAAK,oBAGZF,EAAY,GACZD,EAAOA,GAAO,EAAMK,EAAU,GAC9BJ,IAAaC,IACTD,IAAc,IAEVC,IAAa,GAAKF,EAAM,KAAQA,EAAM,EACtCG,GAAO,KAAK,mBACPD,IAAa,GAAKF,EAAM,KAC7BG,GAAO,KAAK,mBAGZA,GAAO,OAAO,aAAaH,CAAG,IAGtCG,GAAO,KAAK,kBAGxB,CACA,YAAK,IAAMH,EAAK,KAAK,UAAYC,EAAW,KAAK,SAAWC,EACrDC,CACX,EAEAf,IAAqB,UAAU,IAAM,UAAW,CAC5C,IAAIe,EAAM,EACV,OAAI,KAAK,UAAY,IACjBA,GAAO,KAAK,oBACTA,CACX,IC3LA,IAAAG,IAAAC,EAAAC,KAAA,cACA,IAAIC,IAAS,KAAwB,OAMrCD,IAAQ,QAAUE,IAClB,SAASA,KAAe,CACxB,CADSC,EAAAD,IAAA,gBAGTA,IAAa,UAAU,QAAUE,IACjCF,IAAa,UAAU,QAAUG,IACjCH,IAAa,UAAU,SAAW,GAKlC,SAASE,KAAiB,CAC1B,CADSD,EAAAC,IAAA,kBAGTA,IAAe,UAAU,MAAQ,SAASE,EAAK,CAE3C,QADIC,EAAMN,IAAO,KAAKK,EAAK,MAAM,EACxBE,EAAI,EAAGA,EAAID,EAAI,OAAQC,GAAK,EAAG,CACpC,IAAIC,EAAMF,EAAIC,CAAC,EAAGD,EAAIC,CAAC,EAAID,EAAIC,EAAE,CAAC,EAAGD,EAAIC,EAAE,CAAC,EAAIC,CACpD,CACA,OAAOF,CACX,EAEAH,IAAe,UAAU,IAAM,UAAW,CAC1C,EAKA,SAASC,KAAiB,CACtB,KAAK,aAAe,EACxB,CAFSF,EAAAE,IAAA,kBAITA,IAAe,UAAU,MAAQ,SAASE,EAAK,CAC3C,GAAIA,EAAI,QAAU,EACd,MAAO,GAEX,IAAIG,EAAOT,IAAO,MAAMM,EAAI,OAAS,CAAC,EAClCC,EAAI,EAAGG,EAAI,EAQf,IANI,KAAK,eAAiB,KACtBD,EAAK,CAAC,EAAIH,EAAI,CAAC,EACfG,EAAK,CAAC,EAAI,KAAK,aACfF,EAAI,EAAGG,EAAI,GAGRH,EAAID,EAAI,OAAO,EAAGC,GAAK,EAAGG,GAAI,EACjCD,EAAKC,CAAC,EAAIJ,EAAIC,EAAE,CAAC,EACjBE,EAAKC,EAAE,CAAC,EAAIJ,EAAIC,CAAC,EAGrB,YAAK,aAAgBA,GAAKD,EAAI,OAAO,EAAKA,EAAIA,EAAI,OAAO,CAAC,EAAI,GAEvDG,EAAK,MAAM,EAAGC,CAAC,EAAE,SAAS,MAAM,CAC3C,EAEAN,IAAe,UAAU,IAAM,UAAW,CAC1C,EAWAL,IAAQ,MAAQY,IAChB,SAASA,IAAWC,EAAcC,EAAO,CACrC,KAAK,MAAQA,CACjB,CAFSX,EAAAS,IAAA,cAITA,IAAW,UAAU,QAAUG,IAC/BH,IAAW,UAAU,QAAUI,IAK/B,SAASD,IAAaE,EAASC,EAAO,CAClCD,EAAUA,GAAW,CAAC,EAClBA,EAAQ,SAAW,SACnBA,EAAQ,OAAS,IACrB,KAAK,QAAUC,EAAM,MAAM,WAAW,WAAYD,CAAO,CAC7D,CALSd,EAAAY,IAAA,gBAOTA,IAAa,UAAU,MAAQ,SAAST,EAAK,CACzC,OAAO,KAAK,QAAQ,MAAMA,CAAG,CACjC,EAEAS,IAAa,UAAU,IAAM,UAAW,CACpC,OAAO,KAAK,QAAQ,IAAI,CAC5B,EAKA,SAASC,IAAaC,EAASC,EAAO,CAClC,KAAK,QAAU,KACf,KAAK,aAAe,CAAC,EACrB,KAAK,gBAAkB,EAEvB,KAAK,QAAUD,GAAW,CAAC,EAC3B,KAAK,MAAQC,EAAM,KACvB,CAPSf,EAAAa,IAAA,gBASTA,IAAa,UAAU,MAAQ,SAAST,EAAK,CACzC,GAAI,CAAC,KAAK,QAAS,CAKf,GAHA,KAAK,aAAa,KAAKA,CAAG,EAC1B,KAAK,iBAAmBA,EAAI,OAExB,KAAK,gBAAkB,GACvB,MAAO,GAGX,IAAIA,EAAMN,IAAO,OAAO,KAAK,YAAY,EACrCkB,EAAWC,IAAeb,EAAK,KAAK,QAAQ,eAAe,EAC/D,KAAK,QAAU,KAAK,MAAM,WAAWY,EAAU,KAAK,OAAO,EAC3D,KAAK,aAAa,OAAS,KAAK,gBAAkB,CACtD,CAEA,OAAO,KAAK,QAAQ,MAAMZ,CAAG,CACjC,EAEAS,IAAa,UAAU,IAAM,UAAW,CACpC,GAAI,CAAC,KAAK,QAAS,CACf,IAAIT,EAAMN,IAAO,OAAO,KAAK,YAAY,EACrCkB,EAAWC,IAAeb,EAAK,KAAK,QAAQ,eAAe,EAC/D,KAAK,QAAU,KAAK,MAAM,WAAWY,EAAU,KAAK,OAAO,EAE3D,IAAIE,EAAM,KAAK,QAAQ,MAAMd,CAAG,EAC5Be,EAAQ,KAAK,QAAQ,IAAI,EAE7B,OAAOA,EAASD,EAAMC,EAASD,CACnC,CACA,OAAO,KAAK,QAAQ,IAAI,CAC5B,EAEA,SAASD,IAAeb,EAAKgB,EAAiB,CAC1C,IAAIC,EAAMD,GAAmB,WAE7B,GAAIhB,EAAI,QAAU,EAEd,GAAIA,EAAI,CAAC,GAAK,KAAQA,EAAI,CAAC,GAAK,IAC5BiB,EAAM,mBACDjB,EAAI,CAAC,GAAK,KAAQA,EAAI,CAAC,GAAK,IACjCiB,EAAM,eACL,CAOD,QAHIC,EAAe,EAAGC,EAAe,EACjCC,EAAO,KAAK,IAAIpB,EAAI,OAAUA,EAAI,OAAS,EAAI,EAAE,EAE5CC,EAAI,EAAGA,EAAImB,EAAMnB,GAAK,EACvBD,EAAIC,CAAC,IAAM,GAAKD,EAAIC,EAAE,CAAC,IAAM,GAAGkB,IAChCnB,EAAIC,CAAC,IAAM,GAAKD,EAAIC,EAAE,CAAC,IAAM,GAAGiB,IAGpCC,EAAeD,EACfD,EAAM,WACDE,EAAeD,IACpBD,EAAM,WACd,CAGJ,OAAOA,CACX,CA7BSrB,EAAAiB,IAAA,oBCjJT,IAAAQ,IAAAC,EAAAC,KAAA,cACA,IAAIC,GAAS,KAAwB,OAKrCD,IAAQ,KAAOE,IACfF,IAAQ,cAAgB,OACxB,SAASE,IAAUC,EAAcC,EAAO,CACpC,KAAK,MAAQA,CACjB,CAFSC,EAAAH,IAAA,aAITA,IAAU,UAAU,QAAUI,IAC9BJ,IAAU,UAAU,QAAUK,IAC9BL,IAAU,UAAU,SAAW,GAK/B,IAAIM,IAAiB,sCAErB,SAASF,IAAYG,EAASC,EAAO,CACjC,KAAK,MAAQA,EAAM,KACvB,CAFSL,EAAAC,IAAA,eAITA,IAAY,UAAU,MAAQ,SAASK,EAAK,CAGxC,OAAOV,GAAO,KAAKU,EAAI,QAAQH,IAAgB,SAASI,EAAO,CAC3D,MAAO,KAAOA,IAAU,IAAM,GAC1B,KAAK,MAAM,OAAOA,EAAO,UAAU,EAAE,SAAS,QAAQ,EAAE,QAAQ,MAAO,EAAE,GACvE,GACV,EAAE,KAAK,IAAI,CAAC,CAAC,CACjB,EAEAN,IAAY,UAAU,IAAM,UAAW,CACvC,EAKA,SAASC,IAAYE,EAASC,EAAO,CACjC,KAAK,MAAQA,EAAM,MACnB,KAAK,SAAW,GAChB,KAAK,YAAc,EACvB,CAJSL,EAAAE,IAAA,eAMT,IAAIM,IAAc,iBACdC,IAAc,CAAC,EACnB,IAASC,IAAI,EAAGA,IAAI,IAAKA,MACrBD,IAAYC,GAAC,EAAIF,IAAY,KAAK,OAAO,aAAaE,GAAC,CAAC,EADnD,IAAAA,IAGLC,IAAW,GACXC,GAAY,GACZC,IAAU,GAEdX,IAAY,UAAU,MAAQ,SAASY,EAAK,CAOxC,QANIC,EAAM,GAAIC,EAAQ,EAClBC,EAAW,KAAK,SAChBC,EAAc,KAAK,YAIdR,EAAI,EAAGA,EAAII,EAAI,OAAQJ,IAC5B,GAAI,CAACO,EAEGH,EAAIJ,CAAC,GAAKC,MACVI,GAAO,KAAK,MAAM,OAAOD,EAAI,MAAME,EAAON,CAAC,EAAG,OAAO,EACrDM,EAAQN,EAAE,EACVO,EAAW,YAGX,CAACR,IAAYK,EAAIJ,CAAC,CAAC,EAAG,CACtB,GAAIA,GAAKM,GAASF,EAAIJ,CAAC,GAAKE,GACxBG,GAAO,QACJ,CACH,IAAII,EAASD,EAAcJ,EAAI,MAAME,EAAON,CAAC,EAAE,SAAS,EACxDK,GAAO,KAAK,MAAM,OAAOnB,GAAO,KAAKuB,EAAQ,QAAQ,EAAG,UAAU,CACtE,CAEIL,EAAIJ,CAAC,GAAKE,IACVF,IAEJM,EAAQN,EAAE,EACVO,EAAW,GACXC,EAAc,EAClB,CAIR,GAAI,CAACD,EACDF,GAAO,KAAK,MAAM,OAAOD,EAAI,MAAME,CAAK,EAAG,OAAO,MAC/C,CACH,IAAIG,EAASD,EAAcJ,EAAI,MAAME,CAAK,EAAE,SAAS,EAEjDI,EAAeD,EAAO,OAAUA,EAAO,OAAS,EACpDD,EAAcC,EAAO,MAAMC,CAAY,EACvCD,EAASA,EAAO,MAAM,EAAGC,CAAY,EAErCL,GAAO,KAAK,MAAM,OAAOnB,GAAO,KAAKuB,EAAQ,QAAQ,EAAG,UAAU,CACtE,CAEA,YAAK,SAAWF,EAChB,KAAK,YAAcC,EAEZH,CACX,EAEAb,IAAY,UAAU,IAAM,UAAW,CACnC,IAAIa,EAAM,GACV,OAAI,KAAK,UAAY,KAAK,YAAY,OAAS,IAC3CA,EAAM,KAAK,MAAM,OAAOnB,GAAO,KAAK,KAAK,YAAa,QAAQ,EAAG,UAAU,GAE/E,KAAK,SAAW,GAChB,KAAK,YAAc,GACZmB,CACX,EAeApB,IAAQ,SAAW0B,IACnB,SAASA,IAAcvB,EAAcC,EAAO,CACxC,KAAK,MAAQA,CACjB,CAFSC,EAAAqB,IAAA,iBAITA,IAAc,UAAU,QAAUC,IAClCD,IAAc,UAAU,QAAUE,IAClCF,IAAc,UAAU,SAAW,GAKnC,SAASC,IAAgBlB,EAASC,EAAO,CACrC,KAAK,MAAQA,EAAM,MACnB,KAAK,SAAW,GAChB,KAAK,YAAcT,GAAO,MAAM,CAAC,EACjC,KAAK,eAAiB,CAC1B,CALSI,EAAAsB,IAAA,mBAOTA,IAAgB,UAAU,MAAQ,SAAShB,EAAK,CAM5C,QALIW,EAAW,KAAK,SAChBC,EAAc,KAAK,YACnBM,EAAiB,KAAK,eACtBV,EAAMlB,GAAO,MAAMU,EAAI,OAAO,EAAI,EAAE,EAAGmB,EAAS,EAE3Cf,EAAI,EAAGA,EAAIJ,EAAI,OAAQI,IAAK,CACjC,IAAIgB,EAAQpB,EAAI,WAAWI,CAAC,EACxB,IAAQgB,GAASA,GAAS,KACtBT,IACIO,EAAiB,IACjBC,GAAUX,EAAI,MAAMI,EAAY,MAAM,EAAGM,CAAc,EAAE,SAAS,QAAQ,EAAE,QAAQ,MAAO,GAAG,EAAE,QAAQ,MAAO,EAAE,EAAGC,CAAM,EAC1HD,EAAiB,GAGrBV,EAAIW,GAAQ,EAAIb,GAChBK,EAAW,IAGVA,IACDH,EAAIW,GAAQ,EAAIC,EAEZA,IAAUb,MACVC,EAAIW,GAAQ,EAAIb,OAInBK,IACDH,EAAIW,GAAQ,EAAIZ,IAChBI,EAAW,IAEXA,IACAC,EAAYM,GAAgB,EAAIE,GAAS,EACzCR,EAAYM,GAAgB,EAAIE,EAAQ,IAEpCF,GAAkBN,EAAY,SAC9BO,GAAUX,EAAI,MAAMI,EAAY,SAAS,QAAQ,EAAE,QAAQ,MAAO,GAAG,EAAGO,CAAM,EAC9ED,EAAiB,IAIjC,CAEA,YAAK,SAAWP,EAChB,KAAK,eAAiBO,EAEfV,EAAI,MAAM,EAAGW,CAAM,CAC9B,EAEAH,IAAgB,UAAU,IAAM,UAAW,CACvC,IAAIR,EAAMlB,GAAO,MAAM,EAAE,EAAG6B,EAAS,EACrC,OAAI,KAAK,WACD,KAAK,eAAiB,IACtBA,GAAUX,EAAI,MAAM,KAAK,YAAY,MAAM,EAAG,KAAK,cAAc,EAAE,SAAS,QAAQ,EAAE,QAAQ,MAAO,GAAG,EAAE,QAAQ,MAAO,EAAE,EAAGW,CAAM,EACpI,KAAK,eAAiB,GAG1BX,EAAIW,GAAQ,EAAIb,GAChB,KAAK,SAAW,IAGbE,EAAI,MAAM,EAAGW,CAAM,CAC9B,EAKA,SAASF,IAAgBnB,EAASC,EAAO,CACrC,KAAK,MAAQA,EAAM,MACnB,KAAK,SAAW,GAChB,KAAK,YAAc,EACvB,CAJSL,EAAAuB,IAAA,mBAMT,IAAII,IAAkBlB,IAAY,MAAM,EACxCkB,IAAgB,EAAiB,EAAI,GAErCJ,IAAgB,UAAU,MAAQ,SAAST,EAAK,CAQ5C,QAPIC,EAAM,GAAIC,EAAQ,EAClBC,EAAW,KAAK,SAChBC,EAAc,KAAK,YAKdR,EAAI,EAAGA,EAAII,EAAI,OAAQJ,IAC5B,GAAI,CAACO,EAEGH,EAAIJ,CAAC,GAAKG,MACVE,GAAO,KAAK,MAAM,OAAOD,EAAI,MAAME,EAAON,CAAC,EAAG,OAAO,EACrDM,EAAQN,EAAE,EACVO,EAAW,YAGX,CAACU,IAAgBb,EAAIJ,CAAC,CAAC,EAAG,CAC1B,GAAIA,GAAKM,GAASF,EAAIJ,CAAC,GAAKE,GACxBG,GAAO,QACJ,CACH,IAAII,EAASD,EAAcJ,EAAI,MAAME,EAAON,CAAC,EAAE,SAAS,EAAE,QAAQ,KAAM,GAAG,EAC3EK,GAAO,KAAK,MAAM,OAAOnB,GAAO,KAAKuB,EAAQ,QAAQ,EAAG,UAAU,CACtE,CAEIL,EAAIJ,CAAC,GAAKE,IACVF,IAEJM,EAAQN,EAAE,EACVO,EAAW,GACXC,EAAc,EAClB,CAIR,GAAI,CAACD,EACDF,GAAO,KAAK,MAAM,OAAOD,EAAI,MAAME,CAAK,EAAG,OAAO,MAC/C,CACH,IAAIG,EAASD,EAAcJ,EAAI,MAAME,CAAK,EAAE,SAAS,EAAE,QAAQ,KAAM,GAAG,EAEpEI,EAAeD,EAAO,OAAUA,EAAO,OAAS,EACpDD,EAAcC,EAAO,MAAMC,CAAY,EACvCD,EAASA,EAAO,MAAM,EAAGC,CAAY,EAErCL,GAAO,KAAK,MAAM,OAAOnB,GAAO,KAAKuB,EAAQ,QAAQ,EAAG,UAAU,CACtE,CAEA,YAAK,SAAWF,EAChB,KAAK,YAAcC,EAEZH,CACX,EAEAQ,IAAgB,UAAU,IAAM,UAAW,CACvC,IAAIR,EAAM,GACV,OAAI,KAAK,UAAY,KAAK,YAAY,OAAS,IAC3CA,EAAM,KAAK,MAAM,OAAOnB,GAAO,KAAK,KAAK,YAAa,QAAQ,EAAG,UAAU,GAE/E,KAAK,SAAW,GAChB,KAAK,YAAc,GACZmB,CACX,IC/RA,IAAAa,IAAAC,EAAAC,KAAA,cACA,IAAIC,IAAS,KAAwB,OAKrCD,IAAQ,MAAQE,IAChB,SAASA,IAAUC,EAAcC,EAAO,CACpC,GAAI,CAACD,EACD,MAAM,IAAI,MAAM,wCAAwC,EAG5D,GAAI,CAACA,EAAa,OAAUA,EAAa,MAAM,SAAW,KAAOA,EAAa,MAAM,SAAW,IAC3F,MAAM,IAAI,MAAM,aAAaA,EAAa,KAAK,qDAAqD,EAExG,GAAIA,EAAa,MAAM,SAAW,IAAK,CAEnC,QADIE,EAAc,GACT,EAAI,EAAG,EAAI,IAAK,IACrBA,GAAe,OAAO,aAAa,CAAC,EACxCF,EAAa,MAAQE,EAAcF,EAAa,KACpD,CAEA,KAAK,UAAYF,IAAO,KAAKE,EAAa,MAAO,MAAM,EAKvD,QAFIG,EAAYL,IAAO,MAAM,MAAOG,EAAM,sBAAsB,WAAW,CAAC,CAAC,EAEpE,EAAI,EAAG,EAAID,EAAa,MAAM,OAAQ,IAC3CG,EAAUH,EAAa,MAAM,WAAW,CAAC,CAAC,EAAI,EAElD,KAAK,UAAYG,CACrB,CAxBSC,EAAAL,IAAA,aA0BTA,IAAU,UAAU,QAAUM,IAC9BN,IAAU,UAAU,QAAUO,IAG9B,SAASD,IAAYE,EAASC,EAAO,CACjC,KAAK,UAAYA,EAAM,SAC3B,CAFSJ,EAAAC,IAAA,eAITA,IAAY,UAAU,MAAQ,SAASI,EAAK,CAExC,QADIC,EAAMZ,IAAO,MAAMW,EAAI,MAAM,EACxBE,EAAI,EAAGA,EAAIF,EAAI,OAAQE,IAC5BD,EAAIC,CAAC,EAAI,KAAK,UAAUF,EAAI,WAAWE,CAAC,CAAC,EAE7C,OAAOD,CACX,EAEAL,IAAY,UAAU,IAAM,UAAW,CACvC,EAGA,SAASC,IAAYC,EAASC,EAAO,CACjC,KAAK,UAAYA,EAAM,SAC3B,CAFSJ,EAAAE,IAAA,eAITA,IAAY,UAAU,MAAQ,SAASI,EAAK,CAKxC,QAHIE,EAAY,KAAK,UACjBC,EAASf,IAAO,MAAMY,EAAI,OAAO,CAAC,EAClCI,EAAO,EAAGC,EAAO,EACZJ,EAAI,EAAGA,EAAID,EAAI,OAAQC,IAC5BG,EAAOJ,EAAIC,CAAC,EAAE,EAAGI,EAAOJ,EAAE,EAC1BE,EAAOE,CAAI,EAAIH,EAAUE,CAAI,EAC7BD,EAAOE,EAAK,CAAC,EAAIH,EAAUE,EAAK,CAAC,EAErC,OAAOD,EAAO,SAAS,MAAM,CACjC,EAEAP,IAAY,UAAU,IAAM,UAAW,CACvC,ICvEA,IAAAU,IAAAC,EAAA,CAAAC,IAAAC,MAAA,cAIAA,IAAO,QAAU,CAEb,MAAS,cACT,YAAe,CACX,KAAQ,QACR,MAAS,4rBACb,EAEA,IAAO,QACP,OAAU,QACV,MAAS,CACL,KAAQ,QACR,MAAS,4vBACb,EAEA,IAAO,CACH,KAAQ,QACR,MAAS,gvBACb,EAGA,UAAa,QACb,QAAW,QACX,QAAW,QACX,YAAe,QACf,YAAe,QACf,QAAW,QACX,MAAS,QACT,OAAU,QACV,OAAU,QACV,SAAY,QACZ,UAAa,QACb,GAAM,QAEN,OAAU,WACV,OAAU,WACV,OAAU,WACV,OAAU,WACV,OAAU,WACV,OAAU,YACV,OAAU,YACV,OAAU,YACV,OAAU,YACV,QAAW,YAEX,YAAe,WACf,YAAe,WACf,YAAe,WACf,YAAe,WACf,mBAAsB,WACtB,iBAAoB,WACpB,gBAAoB,WACpB,iBAAoB,WACpB,YAAe,WACf,YAAe,YAEf,GAAM,WACN,GAAM,WACN,GAAM,WACN,GAAM,WACN,GAAM,WACN,GAAM,YACN,GAAM,YACN,GAAM,YACN,GAAM,YACN,IAAO,YAEP,QAAW,WACX,QAAW,WACX,SAAY,WACZ,SAAY,WACZ,SAAY,WACZ,SAAY,WACZ,SAAY,WACZ,SAAY,WACZ,SAAY,WACZ,SAAY,WACZ,SAAY,WACZ,SAAY,YACZ,SAAY,SACZ,SAAY,YACZ,SAAY,YACZ,SAAY,YACZ,SAAY,YAEZ,MAAS,WACT,OAAU,WAEV,SAAY,WAEZ,OAAU,WACV,QAAW,WACX,QAAW,WACX,QAAW,WAEX,MAAU,WACV,OAAW,WACX,QAAY,WACZ,QAAY,WAEZ,OAAU,WACV,QAAW,WAEX,QAAW,WACX,SAAY,WAEZ,KAAQ,YACR,MAAS,YAET,OAAU,YACV,QAAW,YACX,UAAa,YAEb,QAAW,SACX,YAAe,SACf,YAAe,SAEf,IAAS,WACT,MAAS,WACT,MAAS,cACT,MAAS,aACT,MAAS,aAET,iBAAoB,QACpB,cAAiB,QACjB,oBAAuB,QACvB,SAAY,QACZ,mBAAsB,QACtB,KAAQ,QAER,KAAQ,SACR,OAAU,SACV,OAAU,SACV,QAAW,SACX,OAAU,SACV,OAAU,SACV,OAAU,SACV,WAAc,SAEd,QAAW,QACX,MAAS,QACT,OAAU,QACV,QAAW,QAEX,QAAW,QACX,MAAS,QACT,QAAW,QAEX,aAAgB,SAEhB,SAAY,OACZ,UAAa,OAEb,SAAY,WACZ,GAAM,WAEN,kBAAqB,WACrB,eAAkB,WAClB,GAAM,WAEN,WAAc,WACd,GAAM,WACN,OAAU,WACV,QAAW,WACX,QAAW,WAEX,IAAO,YACP,YAAe,WACnB,IC5KA,IAAAC,IAAAC,EAAA,CAAAC,IAAAC,MAAA,cAGAA,IAAO,QAAU,CACf,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,QACP,IAAO,aACP,IAAO,QACP,KAAQ,SACR,KAAQ,SACR,KAAQ,SACR,KAAQ,SACR,KAAQ,SACR,KAAQ,SACR,KAAQ,SACR,KAAQ,SACR,KAAQ,cACR,KAAQ,cACR,KAAQ,cACR,KAAQ,cACR,KAAQ,cACR,KAAQ,cACR,KAAQ,cACR,KAAQ,cACR,KAAQ,cACR,MAAS,WACT,MAAS,WACT,MAAS,WACT,MAAS,WACT,MAAS,WACT,MAAS,WACT,MAAS,WACT,MAAS,WACT,MAAS,WACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,MAAS,YACT,WAAc,CACZ,KAAQ,QACR,MAAS,gwBACX,EACA,OAAU,aACV,MAAS,aACT,YAAe,CACb,KAAQ,QACR,MAAS,gqBACX,EACA,QAAW,cACX,OAAU,cACV,YAAe,CACb,KAAQ,QACR,MAAS,ouBACX,EACA,QAAW,cACX,OAAU,cACV,YAAe,CACb,KAAQ,QACR,MAAS,kkBACX,EACA,QAAW,cACX,OAAU,cACV,YAAe,CACb,KAAQ,QACR,MAAS,wtBACX,EACA,QAAW,cACX,OAAU,cACV,YAAe,CACb,KAAQ,QACR,MAAS,8kBACX,EACA,QAAW,cACX,OAAU,cACV,YAAe,CACb,KAAQ,QACR,MAAS,osBACX,EACA,QAAW,cACX,OAAU,cACV,YAAe,CACb,KAAQ,QACR,MAAS,4qBACX,EACA,QAAW,cACX,OAAU,cACV,YAAe,CACb,KAAQ,QACR,MAAS,kqBACX,EACA,QAAW,cACX,OAAU,cACV,YAAe,CACb,KAAQ,QACR,MAAS,8lBACX,EACA,QAAW,cACX,OAAU,cACV,SAAY,CACV,KAAQ,QACR,MAAS,kgBACX,EACA,QAAW,WACX,SAAY,CACV,KAAQ,QACR,MAAS,onBACX,EACA,QAAW,WACX,SAAY,CACV,KAAQ,QACR,MAAS,wkBACX,EACA,QAAW,WACX,SAAY,CACV,KAAQ,QACR,MAAS,smBACX,EACA,QAAW,WACX,SAAY,CACV,KAAQ,QACR,MAAS,4rBACX,EACA,QAAW,WACX,SAAY,CACV,KAAQ,QACR,MAAS,4rBACX,EACA,QAAW,WACX,SAAY,CACV,KAAQ,QACR,MAAS,kqBACX,EACA,QAAW,WACX,SAAY,CACV,KAAQ,QACR,MAAS,soBACX,EACA,QAAW,WACX,SAAY,CACV,KAAQ,QACR,MAAS,8gBACX,EACA,QAAW,WACX,UAAa,CACX,KAAQ,QACR,MAAS,8lBACX,EACA,QAAW,YACX,UAAa,CACX,KAAQ,QACR,MAAS,gsBACX,EACA,QAAW,YACX,UAAa,CACX,KAAQ,QACR,MAAS,0mBACX,EACA,QAAW,YACX,UAAa,CACX,KAAQ,QACR,MAAS,gkBACX,EACA,QAAW,YACX,UAAa,CACX,KAAQ,QACR,MAAS,khBACX,EACA,QAAW,YACX,UAAa,CACX,KAAQ,QACR,MAAS,klBACX,EACA,QAAW,YACX,MAAS,CACP,KAAQ,QACR,MAAS,wpBACX,EACA,OAAU,QACV,SAAY,QACZ,MAAS,CACP,KAAQ,QACR,MAAS,svBACX,EACA,OAAU,QACV,SAAY,QACZ,MAAS,CACP,KAAQ,QACR,MAAS,0qBACX,EACA,OAAU,QACV,SAAY,QACZ,MAAS,CACP,KAAQ,QACR,MAAS,kkBACX,EACA,OAAU,QACV,SAAY,QACZ,MAAS,CACP,KAAQ,QACR,MAAS,8qBACX,EACA,OAAU,QACV,SAAY,QACZ,MAAS,CACP,KAAQ,QACR,MAAS,svBACX,EACA,OAAU,QACV,SAAY,QACZ,MAAS,CACP,KAAQ,QACR,MAAS,ssBACX,EACA,OAAU,QACV,SAAY,QACZ,MAAS,CACP,KAAQ,QACR,MAAS,8kBACX,EACA,OAAU,QACV,SAAY,QACZ,MAAS,CACP,KAAQ,QACR,MAAS,kkBACX,EACA,OAAU,QACV,SAAY,QACZ,MAAS,CACP,KAAQ,QACR,MAAS,opBACX,EACA,OAAU,QACV,SAAY,QACZ,MAAS,CACP,KAAQ,QACR,MAAS,wpBACX,EACA,OAAU,QACV,SAAY,QACZ,MAAS,CACP,KAAQ,QACR,MAAS,8sBACX,EACA,OAAU,QACV,SAAY,QACZ,MAAS,CACP,KAAQ,QACR,MAAS,wpBACX,EACA,OAAU,QACV,SAAY,QACZ,MAAS,CACP,KAAQ,QACR,MAAS;AAAA,s2BACX,EACA,OAAU,QACV,SAAY,QACZ,MAAS,CACP,KAAQ,QACR,MAAS,wpBACX,EACA,OAAU,QACV,SAAY,QACZ,MAAS,CACP,KAAQ,QACR,MAAS,0vBACX,EACA,OAAU,QACV,SAAY,QACZ,MAAS,CACP,KAAQ,QACR,MAAS,kuBACX,EACA,OAAU,QACV,SAAY,QACZ,MAAS,CACP,KAAQ,QACR,MAAS,4gBACX,EACA,OAAU,QACV,SAAY,QACZ,OAAU,CACR,KAAQ,QACR,MAAS,svBACX,EACA,QAAW,SACX,UAAa,SACb,OAAU,CACR,KAAQ,QACR,MAAS,4rBACX,EACA,QAAW,SACX,UAAa,SACb,OAAU,CACR,KAAQ,QACR,MAAS,4vBACX,EACA,QAAW,SACX,UAAa,SACb,OAAU,CACR,KAAQ,QACR,MAAS,oiBACX,EACA,QAAW,SACX,UAAa,SACb,OAAU,CACR,KAAQ,QACR,MAAS,0rBACX,EACA,QAAW,SACX,UAAa,SACb,OAAU,CACR,KAAQ,QACR,MAAS,0vBACX,EACA,QAAW,SACX,UAAa,SACb,OAAU,CACR,KAAQ,QACR,MAAS,ktBACX,EACA,QAAW,SACX,UAAa,SACb,OAAU,CACR,KAAQ,QACR,MAAS,siBACX,EACA,QAAW,SACX,UAAa,SACb,YAAe,CACb,KAAQ,QACR,MAAS,omBACX,EACA,YAAe,CACb,KAAQ,QACR,MAAS,ouBACX,EACA,SAAY,CACV,KAAQ,QACR,MAAS,orBACX,EACA,WAAc,CACZ,KAAQ,QACR,MAAS,olBACX,EACA,SAAY,CACV,KAAQ,QACR,MAAS,gmBACX,EACA,WAAc,CACZ,KAAQ,QACR,MAAS,wmBACX,EACA,QAAW,CACT,KAAQ,QACR,MAAS,wvBACX,EACA,WAAc,CACZ,KAAQ,QACR,MAAS,kmBACX,EACA,WAAc,CACZ,KAAQ,QACR,MAAS,suBACX,EACA,MAAS,CACP,KAAQ,QACR,MAAS,svBACX,EACA,MAAS,CACP,KAAQ,QACR,MAAS,svBACX,EACA,OAAU,CACR,KAAQ,QACR,MAAS,svBACX,EACA,MAAS,CACP,KAAQ,QACR,MAAS,suBACX,EACA,SAAY,CACV,KAAQ,QACR,MAAS,mqBACX,EACA,OAAU,CACR,KAAQ,QACR,MAAS,ouBACX,EACA,KAAQ,CACN,KAAQ,QACR,MAAS;AAAA,o2BACX,EACA,gBAAmB,CACjB,KAAQ,QACR,MAAS,goBACX,EACA,WAAc,CACZ,KAAQ,QACR,MAAS,8nBACX,EACA,MAAS,CACP,KAAQ,QACR,MAAS,8uBACX,EACA,OAAU,CACR,KAAQ,QACR,MAAS;AAAA,g1BACX,EACA,SAAY,CACV,KAAQ,QACR,MAAS;AAAA,y4BACX,EACA,SAAY,CACV,KAAQ,QACR,MAAS;AAAA,w4BACX,EACA,SAAY,CACV,KAAQ,QACR,MAAS,whBACX,EACA,UAAa,CACX,KAAQ,QACR,MAAS,gmBACX,EACA,MAAS,CACP,KAAQ,QACR,MAAS,kwBACX,EACA,OAAU,CACR,KAAQ,QACR,MAAS,kwBACX,CACF,IClcA,IAAAC,IAAAC,EAAAC,KAAA,cACA,IAAIC,GAAS,KAAwB,OAMrCD,IAAQ,MAAQE,GAEhB,IAAIC,GAAa,GACbC,IAAe,GACfC,GAAa,IACbC,GAAa,KACbC,GAAkB,IAAI,MAAM,GAAK,EACjCC,IAAW,GAEf,IAASC,IAAI,EAAGA,IAAI,IAAOA,MACvBF,GAAgBE,GAAC,EAAIN,GADhB,IAAAM,IAKT,SAASP,GAAUQ,EAAcC,EAAO,CAEpC,GADA,KAAK,aAAeD,EAAa,aAC7B,CAACA,EACD,MAAM,IAAI,MAAM,wCAAwC,EAC5D,GAAI,CAACA,EAAa,MACd,MAAM,IAAI,MAAM,aAAe,KAAK,aAAe,gBAAgB,EAGvE,IAAIE,EAAeF,EAAa,MAAM,EAYtC,KAAK,aAAe,CAAC,EACrB,KAAK,aAAa,CAAC,EAAIH,GAAgB,MAAM,CAAC,EAG9C,KAAK,eAAiB,CAAC,EAGvB,QAAS,EAAI,EAAG,EAAIK,EAAa,OAAQ,IACrC,KAAK,gBAAgBA,EAAa,CAAC,CAAC,EAExC,KAAK,mBAAqBD,EAAM,mBAUhC,KAAK,YAAc,CAAC,EAMpB,KAAK,eAAiB,CAAC,EAGvB,IAAIE,EAAkB,CAAC,EACvB,GAAIH,EAAa,eACb,QAAS,EAAI,EAAG,EAAIA,EAAa,eAAe,OAAQ,IAAK,CACzD,IAAII,EAAMJ,EAAa,eAAe,CAAC,EACvC,GAAI,OAAOI,GAAQ,SACfD,EAAgBC,CAAG,EAAI,OAEvB,SAASC,EAAID,EAAI,KAAMC,GAAKD,EAAI,GAAIC,IAChCF,EAAgBE,CAAC,EAAI,EACjC,CAMJ,GAHA,KAAK,iBAAiB,EAAG,EAAGF,CAAe,EAGvCH,EAAa,UACb,QAASM,KAASN,EAAa,UACvB,OAAO,UAAU,eAAe,KAAKA,EAAa,UAAWM,CAAK,GAClE,KAAK,eAAeA,EAAM,WAAW,CAAC,EAAGN,EAAa,UAAUM,CAAK,CAAC,EASlF,GANA,KAAK,UAAa,KAAK,YAAY,CAAC,EAAEL,EAAM,sBAAsB,WAAW,CAAC,CAAC,EAC3E,KAAK,YAAcR,KAAY,KAAK,UAAY,KAAK,YAAY,CAAC,EAAE,GAAG,GACvE,KAAK,YAAcA,KAAY,KAAK,UAAY,IAIhD,OAAOO,EAAa,SAAY,WAAY,CAC5C,KAAK,QAAUA,EAAa,QAAQ,EASpC,QANIO,EAAmB,KAAK,aAAa,OACrCC,EAAgB,KAAK,aAAaD,CAAgB,EAAIV,GAAgB,MAAM,CAAC,EAE7EY,EAAoB,KAAK,aAAa,OACtCC,EAAiB,KAAK,aAAaD,CAAiB,EAAIZ,GAAgB,MAAM,CAAC,EAE1E,EAAI,IAAM,GAAK,IAAM,IAG1B,QAFIc,EAAoBf,GAAa,KAAK,aAAa,CAAC,EAAE,CAAC,EACvDgB,EAAiB,KAAK,aAAaD,CAAiB,EAC/CN,EAAI,GAAMA,GAAK,GAAMA,IAC1BO,EAAeP,CAAC,EAAIT,GAAaW,EAEzC,QAAS,EAAI,IAAM,GAAK,IAAM,IAC1BC,EAAc,CAAC,EAAIZ,GAAaa,EACpC,QAAS,EAAI,GAAM,GAAK,GAAM,IAC1BC,EAAe,CAAC,EAAIhB,GAC5B,CACJ,CAjGSmB,EAAArB,GAAA,aAmGTA,GAAU,UAAU,QAAUsB,IAC9BtB,GAAU,UAAU,QAAUuB,IAG9BvB,GAAU,UAAU,mBAAqB,SAASwB,EAAM,CAEpD,QADIC,EAAQ,CAAC,EACND,EAAO,EAAGA,IAAS,EACtBC,EAAM,KAAKD,EAAO,GAAI,EACtBC,EAAM,QAAU,GAChBA,EAAM,KAAK,CAAC,EAGhB,QADIC,EAAO,KAAK,aAAa,CAAC,EACrB,EAAID,EAAM,OAAO,EAAG,EAAI,EAAG,IAAK,CACrC,IAAIb,EAAMc,EAAKD,EAAM,CAAC,CAAC,EAEvB,GAAIb,GAAOX,GACPyB,EAAKD,EAAM,CAAC,CAAC,EAAIrB,GAAa,KAAK,aAAa,OAChD,KAAK,aAAa,KAAKsB,EAAOrB,GAAgB,MAAM,CAAC,CAAC,UAEjDO,GAAOR,GACZsB,EAAO,KAAK,aAAatB,GAAaQ,CAAG,MAGzC,OAAM,IAAI,MAAM,qBAAuB,KAAK,aAAe,WAAaY,EAAK,SAAS,EAAE,CAAC,CACjG,CACA,OAAOE,CACX,EAGA1B,GAAU,UAAU,gBAAkB,SAAS2B,EAAO,CAElD,IAAIC,EAAU,SAASD,EAAM,CAAC,EAAG,EAAE,EAG/BE,EAAa,KAAK,mBAAmBD,CAAO,EAChDA,EAAUA,EAAU,IAGpB,QAASE,EAAI,EAAGA,EAAIH,EAAM,OAAQG,IAAK,CACnC,IAAIC,EAAOJ,EAAMG,CAAC,EAClB,GAAI,OAAOC,GAAS,SAChB,QAASC,EAAI,EAAGA,EAAID,EAAK,QAAS,CAC9B,IAAIE,EAAOF,EAAK,WAAWC,GAAG,EAC9B,GAAI,OAAUC,GAAQA,EAAO,MAAQ,CACjC,IAAIC,EAAYH,EAAK,WAAWC,GAAG,EACnC,GAAI,OAAUE,GAAaA,EAAY,MACnCL,EAAWD,GAAS,EAAI,OAAWK,EAAO,OAAU,MAASC,EAAY,WAEzE,OAAM,IAAI,MAAM,+BAAkC,KAAK,aAAe,aAAeP,EAAM,CAAC,CAAC,CACrG,SACS,KAASM,GAAQA,GAAQ,KAAQ,CAGtC,QAFIE,EAAM,KAAQF,EAAO,EACrBG,EAAM,CAAC,EACFC,EAAI,EAAGA,EAAIF,EAAKE,IACrBD,EAAI,KAAKL,EAAK,WAAWC,GAAG,CAAC,EAEjCH,EAAWD,GAAS,EAAIzB,GAAY,KAAK,eAAe,OACxD,KAAK,eAAe,KAAKiC,CAAG,CAChC,MAEIP,EAAWD,GAAS,EAAIK,CAChC,SAEK,OAAOF,GAAS,SAErB,QADIO,EAAWT,EAAWD,EAAU,CAAC,EAAI,EAChCI,EAAI,EAAGA,EAAID,EAAMC,IACtBH,EAAWD,GAAS,EAAIU,QAG5B,OAAM,IAAI,MAAM,mBAAqB,OAAOP,EAAO,cAAiB,KAAK,aAAe,aAAeJ,EAAM,CAAC,CAAC,CACvH,CACA,GAAIC,EAAU,IACV,MAAM,IAAI,MAAM,sBAAyB,KAAK,aAAe,YAAcD,EAAM,CAAC,EAAI,aAAeC,CAAO,CACpH,EAGA5B,GAAU,UAAU,iBAAmB,SAASuC,EAAO,CACnD,IAAIC,EAAOD,GAAS,EACpB,OAAI,KAAK,YAAYC,CAAI,IAAM,SAC3B,KAAK,YAAYA,CAAI,EAAInC,GAAgB,MAAM,CAAC,GAC7C,KAAK,YAAYmC,CAAI,CAChC,EAEAxC,GAAU,UAAU,eAAiB,SAASuC,EAAOE,EAAU,CAC3D,IAAIC,EAAS,KAAK,iBAAiBH,CAAK,EACpCI,EAAMJ,EAAQ,IACdG,EAAOC,CAAG,GAAKxC,GACf,KAAK,eAAeA,GAAUuC,EAAOC,CAAG,CAAC,EAAErC,GAAQ,EAAImC,EAClDC,EAAOC,CAAG,GAAK1C,KACpByC,EAAOC,CAAG,EAAIF,EACtB,EAEAzC,GAAU,UAAU,mBAAqB,SAASoC,EAAKK,EAAU,CAG7D,IAAIF,EAAQH,EAAI,CAAC,EACbM,EAAS,KAAK,iBAAiBH,CAAK,EACpCI,EAAMJ,EAAQ,IAEdb,EACAgB,EAAOC,CAAG,GAAKxC,GAEfuB,EAAO,KAAK,eAAevB,GAAUuC,EAAOC,CAAG,CAAC,GAIhDjB,EAAO,CAAC,EACJgB,EAAOC,CAAG,IAAM1C,KAAYyB,EAAKpB,GAAQ,EAAIoC,EAAOC,CAAG,GAC3DD,EAAOC,CAAG,EAAIxC,GAAY,KAAK,eAAe,OAC9C,KAAK,eAAe,KAAKuB,CAAI,GAIjC,QAASb,EAAI,EAAGA,EAAIuB,EAAI,OAAO,EAAGvB,IAAK,CACnC,IAAI+B,EAASlB,EAAKa,CAAK,EACnB,OAAOK,GAAW,SAClBlB,EAAOkB,GAEPlB,EAAOA,EAAKa,CAAK,EAAI,CAAC,EAClBK,IAAW,SACXlB,EAAKpB,GAAQ,EAAIsC,GAE7B,CAGAL,EAAQH,EAAIA,EAAI,OAAO,CAAC,EACxBV,EAAKa,CAAK,EAAIE,CAClB,EAEAzC,GAAU,UAAU,iBAAmB,SAAS6C,EAASC,EAAQnC,EAAiB,CAE9E,QADIe,EAAO,KAAK,aAAamB,CAAO,EAC3BtC,EAAI,EAAGA,EAAI,IAAOA,IAAK,CAC5B,IAAIgC,EAAQb,EAAKnB,CAAC,EACdwC,EAASD,EAASvC,EAClBI,EAAgBoC,CAAM,IAGtBR,GAAS,EACT,KAAK,eAAeA,EAAOQ,CAAM,EAC5BR,GAASnC,GACd,KAAK,iBAAiBA,GAAamC,EAAOQ,GAAU,EAAGpC,CAAe,EACjE4B,GAASpC,IACd,KAAK,mBAAmB,KAAK,eAAeA,GAAYoC,CAAK,EAAGQ,CAAM,EAC9E,CACJ,EAMA,SAASzB,IAAY0B,EAASC,EAAO,CAEjC,KAAK,cAAgB,GACrB,KAAK,OAAS,OAGd,KAAK,YAAcA,EAAM,YACzB,KAAK,eAAiBA,EAAM,eAC5B,KAAK,sBAAwBA,EAAM,UACnC,KAAK,QAAUA,EAAM,OACzB,CAVS5B,EAAAC,IAAA,eAYTA,IAAY,UAAU,MAAQ,SAAS4B,EAAK,CAMxC,QALIC,EAASpD,GAAO,MAAMmD,EAAI,QAAU,KAAK,QAAU,EAAI,EAAE,EACzDE,EAAgB,KAAK,cACrBC,EAAS,KAAK,OAAQC,EAAW,GACjC/C,EAAI,EAAGM,EAAI,IAEF,CAET,GAAIyC,IAAa,GAAI,CACjB,GAAI/C,GAAK2C,EAAI,OAAQ,MACrB,IAAIX,EAAQW,EAAI,WAAW3C,GAAG,CAClC,KACK,CACD,IAAIgC,EAAQe,EACZA,EAAW,EACf,CAGA,GAAI,OAAUf,GAASA,EAAQ,MAC3B,GAAIA,EAAQ,MACR,GAAIa,IAAkB,GAAI,CACtBA,EAAgBb,EAChB,QACJ,MACIa,EAAgBb,EAEhBA,EAAQtC,QAGRmD,IAAkB,IAClBb,EAAQ,OAAWa,EAAgB,OAAU,MAASb,EAAQ,OAC9Da,EAAgB,IAGhBb,EAAQtC,QAKXmD,IAAkB,KAEvBE,EAAWf,EAAOA,EAAQtC,GAC1BmD,EAAgB,IAIpB,IAAIX,EAAWxC,GACf,GAAIoD,IAAW,QAAad,GAAStC,GAAY,CAC7C,IAAIsD,EAAUF,EAAOd,CAAK,EAC1B,GAAI,OAAOgB,GAAY,SAAU,CAC7BF,EAASE,EACT,QAEJ,MAAW,OAAOA,GAAW,SACzBd,EAAWc,EAEJA,GAAW,OAGlBA,EAAUF,EAAO/C,GAAQ,EACrBiD,IAAY,SACZd,EAAWc,EACXD,EAAWf,IASnBc,EAAS,MACb,SACSd,GAAS,EAAG,CACjB,IAAIiB,EAAW,KAAK,YAAYjB,GAAS,CAAC,EAI1C,GAHIiB,IAAa,SACbf,EAAWe,EAASjB,EAAQ,GAAI,GAEhCE,GAAYtC,GAAW,CACvBkD,EAAS,KAAK,eAAelD,GAAUsC,CAAQ,EAC/C,QACJ,CAEA,GAAIA,GAAYxC,IAAc,KAAK,QAAS,CAExC,IAAIwD,EAAMC,IAAQ,KAAK,QAAQ,OAAQnB,CAAK,EAC5C,GAAIkB,GAAO,GAAI,CACX,IAAIhB,EAAW,KAAK,QAAQ,QAAQgB,CAAG,GAAKlB,EAAQ,KAAK,QAAQ,OAAOkB,CAAG,GAC3EN,EAAOtC,GAAG,EAAI,IAAO,KAAK,MAAM4B,EAAW,KAAK,EAAGA,EAAWA,EAAW,MACzEU,EAAOtC,GAAG,EAAI,GAAO,KAAK,MAAM4B,EAAW,IAAI,EAAGA,EAAWA,EAAW,KACxEU,EAAOtC,GAAG,EAAI,IAAO,KAAK,MAAM4B,EAAW,EAAE,EAAGA,EAAWA,EAAW,GACtEU,EAAOtC,GAAG,EAAI,GAAO4B,EACrB,QACJ,CACJ,CACJ,CAGIA,IAAaxC,KACbwC,EAAW,KAAK,uBAEhBA,EAAW,IACXU,EAAOtC,GAAG,EAAI4B,EAETA,EAAW,OAChBU,EAAOtC,GAAG,EAAI4B,GAAY,EAC1BU,EAAOtC,GAAG,EAAI4B,EAAW,MAGzBU,EAAOtC,GAAG,EAAI4B,GAAY,GAC1BU,EAAOtC,GAAG,EAAK4B,GAAY,EAAK,IAChCU,EAAOtC,GAAG,EAAI4B,EAAW,IAEjC,CAEA,YAAK,OAASY,EACd,KAAK,cAAgBD,EACdD,EAAO,MAAM,EAAGtC,CAAC,CAC5B,EAEAS,IAAY,UAAU,IAAM,UAAW,CACnC,GAAI,OAAK,gBAAkB,IAAM,KAAK,SAAW,QAGjD,KAAI6B,EAASpD,GAAO,MAAM,EAAE,EAAGc,EAAI,EAEnC,GAAI,KAAK,OAAQ,CACb,IAAI4B,EAAW,KAAK,OAAOnC,GAAQ,EAC/BmC,IAAa,SACTA,EAAW,IACXU,EAAOtC,GAAG,EAAI4B,GAGdU,EAAOtC,GAAG,EAAI4B,GAAY,EAC1BU,EAAOtC,GAAG,EAAI4B,EAAW,MAKjC,KAAK,OAAS,MAClB,CAEA,OAAI,KAAK,gBAAkB,KAEvBU,EAAOtC,GAAG,EAAI,KAAK,sBACnB,KAAK,cAAgB,IAGlBsC,EAAO,MAAM,EAAGtC,CAAC,EAC5B,EAGAS,IAAY,UAAU,QAAUoC,IAKhC,SAASnC,IAAYyB,EAASC,EAAO,CAEjC,KAAK,QAAU,EACf,KAAK,QAAUlD,GAAO,MAAM,CAAC,EAG7B,KAAK,aAAekD,EAAM,aAC1B,KAAK,eAAiBA,EAAM,eAC5B,KAAK,mBAAqBA,EAAM,mBAChC,KAAK,QAAUA,EAAM,OACzB,CAVS5B,EAAAE,IAAA,eAYTA,IAAY,UAAU,MAAQ,SAASoC,EAAK,CACxC,IAAIR,EAASpD,GAAO,MAAM4D,EAAI,OAAO,CAAC,EAClCd,EAAU,KAAK,QACfe,EAAU,KAAK,QAASC,EAAgB,KAAK,QAAQ,OACrDC,EAAW,CAAC,KAAK,QAAQ,OACzBvB,EAEAsB,EAAgB,IAChBD,EAAU7D,GAAO,OAAO,CAAC6D,EAASD,EAAI,MAAM,EAAG,EAAE,CAAC,CAAC,GAEvD,QAASpD,EAAI,EAAGM,EAAI,EAAGN,EAAIoD,EAAI,OAAQpD,IAAK,CACxC,IAAIwD,EAAWxD,GAAK,EAAKoD,EAAIpD,CAAC,EAAIqD,EAAQrD,EAAIsD,CAAa,EAGvDtB,EAAQ,KAAK,aAAaM,CAAO,EAAEkB,CAAO,EAE9C,GAAI,EAAAxB,GAAS,GAGR,GAAIA,IAAUtC,GAGfM,EAAIuD,EACJvB,EAAQ,KAAK,mBAAmB,WAAW,CAAC,UAEvCA,IAAUrC,IAAc,CAC7B,IAAI8D,EAAUF,GAAY,EAAKH,EAAI,MAAMG,EAAUvD,EAAE,CAAC,EAAIqD,EAAQ,MAAME,EAAWD,EAAetD,EAAE,EAAIsD,CAAa,EACjHI,GAAOD,EAAO,CAAC,EAAE,KAAM,OAASA,EAAO,CAAC,EAAE,IAAM,MAAQA,EAAO,CAAC,EAAE,KAAM,IAAMA,EAAO,CAAC,EAAE,IACxFP,EAAMC,IAAQ,KAAK,QAAQ,QAASO,CAAG,EAC3C1B,EAAQ,KAAK,QAAQ,OAAOkB,CAAG,EAAIQ,EAAM,KAAK,QAAQ,QAAQR,CAAG,CACrE,SACSlB,GAASnC,GAAY,CAC1ByC,EAAUzC,GAAamC,EACvB,QACJ,SACSA,GAASpC,GAAW,CAEzB,QADIiC,EAAM,KAAK,eAAejC,GAAYoC,CAAK,EACtCT,EAAI,EAAGA,EAAIM,EAAI,OAAS,EAAGN,IAChCS,EAAQH,EAAIN,CAAC,EACbqB,EAAOtC,GAAG,EAAI0B,EAAQ,IACtBY,EAAOtC,GAAG,EAAI0B,GAAS,EAE3BA,EAAQH,EAAIA,EAAI,OAAO,CAAC,CAC5B,KAEI,OAAM,IAAI,MAAM,2DAA6DG,EAAQ,OAASM,EAAU,IAAMkB,CAAO,EAGzH,GAAIxB,EAAQ,MAAQ,CAChBA,GAAS,MACT,IAAI2B,EAAY,MAAS,KAAK,MAAM3B,EAAQ,IAAK,EACjDY,EAAOtC,GAAG,EAAIqD,EAAY,IAC1Bf,EAAOtC,GAAG,EAAIqD,GAAa,EAE3B3B,EAAQ,MAASA,EAAQ,IAC7B,CACAY,EAAOtC,GAAG,EAAI0B,EAAQ,IACtBY,EAAOtC,GAAG,EAAI0B,GAAS,EAGvBM,EAAU,EAAGiB,EAAWvD,EAAE,CAC9B,CAEA,YAAK,QAAUsC,EACf,KAAK,QAAWiB,GAAY,EAAKH,EAAI,MAAMG,CAAQ,EAAIF,EAAQ,MAAME,EAAWD,CAAa,EACtFV,EAAO,MAAM,EAAGtC,CAAC,EAAE,SAAS,MAAM,CAC7C,EAEAU,IAAY,UAAU,IAAM,UAAW,CAInC,QAHI4C,EAAM,GAGH,KAAK,QAAQ,OAAS,GAAG,CAE5BA,GAAO,KAAK,mBACZ,IAAIR,EAAM,KAAK,QAAQ,MAAM,CAAC,EAG9B,KAAK,QAAU5D,GAAO,MAAM,CAAC,EAC7B,KAAK,QAAU,EACX4D,EAAI,OAAS,IACbQ,GAAO,KAAK,MAAMR,CAAG,EAC7B,CAEA,YAAK,QAAU,EACRQ,CACX,EAGA,SAAST,IAAQU,EAAOxD,EAAK,CACzB,GAAIwD,EAAM,CAAC,EAAIxD,EACX,MAAO,GAGX,QADIoB,EAAI,EAAGqC,EAAID,EAAM,OACdpC,EAAIqC,EAAE,GAAG,CACZ,IAAIC,EAAMtC,EAAI,KAAK,OAAOqC,EAAErC,EAAE,GAAG,CAAC,EAC9BoC,EAAME,CAAG,GAAK1D,EACdoB,EAAIsC,EAEJD,EAAIC,CACZ,CACA,OAAOtC,CACX,CAbSX,EAAAqC,IAAA,aC5hBT,IAAAa,IAAAC,EAAA,CAAAC,IAAAC,MAAA,CAAAA,IAAA,SACA,CAAC,IAAI,KAAS,GAAG,EACjB,CAAC,KAAK,SAAI,EAAE,EACZ,CAAC,OAAO,2SAAqD,EAAE,sBAAM,EACrE,CAAC,OAAO,0QAA+C,EACvD,CAAC,OAAO,kDAAU,EAClB,CAAC,OAAO,4CAAS,EACjB,CAAC,OAAO,4FAAiB,EACzB,CAAC,OAAO,gDAAU,EAClB,CAAC,OAAO,QAAG,EACX,CAAC,OAAO,SAAI,CAAC,EACb,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,GAAG,SAAI,CAAC,EACpB,CAAC,OAAO,SAAI,GAAG,SAAI,CAAC,EACpB,CAAC,OAAO,SAAI,EAAE,eAAK,EAAE,EACrB,CAAC,OAAO,SAAI,EAAE,eAAK,CAAC,EACpB,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,kMAAkC,EAC1C,CAAC,OAAO,SAAI,GAAG,SAAI,CAAC,EACpB,CAAC,OAAO,4IAAyB,EACjC,CAAC,OAAO,QAAG,EACX,CAAC,OAAO,uCAAS,EAAE,oHAAqB,EACxC,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,gvBAA+H,EACvI,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,gvBAA+H,EACvI,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,gvBAA+H,EACvI,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,gvBAA+H,EACvI,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,gvBAA+H,EACvI,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,gvBAA+H,EACvI,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,gvBAA+H,EACvI,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,gvBAA+H,EACvI,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,gvBAA+H,EACvI,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,gvBAA+H,EACvI,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,gvBAA+H,EACvI,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,gvBAA+H,EACvI,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,gvBAA+H,EACvI,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,gvBAA+H,EACvI,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,gvBAA+H,EACvI,CAAC,OAAO,oTAAqD,EAC7D,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,gvBAA+H,EACvI,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,gvBAA+H,EACvI,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,gvBAA+H,EACvI,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,gvBAA+H,EACvI,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,gvBAA+H,EACvI,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,gvBAA+H,EACvI,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,gvBAA+H,EACvI,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,gvBAA+H,EACvI,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,gvBAA+H,EACvI,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,gvBAA+H,EACvI,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,gvBAA+H,EACvI,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,gvBAA+H,EACvI,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,gvBAA+H,EACvI,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,gvBAA+H,EACvI,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,gvBAA+H,EACvI,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,gvBAA+H,EACvI,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,gvBAA+H,EACvI,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,gOAAuC,EAC/C,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,gvBAA+H,EACvI,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,gpBAA+G,EACvH,CAAC,OAAO,SAAI,EAAE,0BAAM,EACpB,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,GAAG,EACf,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,GAAG,EACf,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,GAAG,EACf,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,GAAG,EACf,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,GAAG,EACf,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,GAAG,EACf,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,GAAG,EACf,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,GAAG,EACf,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,GAAG,EACf,CAAC,OAAO,QAAG,EACX,CAAC,OAAO,SAAI,EAAE,SAAI,EAAE,oQAA6C,EACjE,CAAC,OAAO,gvBAA+H,EACvI,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,gvBAA+H,EACvI,CAAC,OAAO,0EAAc,CACtB,IC5HA,IAAAC,IAAAC,EAAA,CAAAC,IAAAC,MAAA,CAAAA,IAAA,SACA,CAAC,IAAI,KAAS,GAAG,EACjB,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,2SAAqD,EAAE,0MAAqC,EACpG,CAAC,OAAO,sFAAgB,EACxB,CAAC,OAAO,kDAAU,EAClB,CAAC,OAAO,4CAAS,EACjB,CAAC,OAAO,4FAAiB,EACzB,CAAC,OAAO,gDAAU,EAClB,CAAC,OAAO,QAAG,EACX,CAAC,OAAO,SAAI,CAAC,EACb,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,GAAG,SAAI,CAAC,EACpB,CAAC,OAAO,SAAI,GAAG,SAAI,CAAC,EACpB,CAAC,OAAO,SAAI,EAAE,eAAK,EAAE,EACrB,CAAC,OAAO,SAAI,EAAE,eAAK,EAAE,EACrB,CAAC,OAAO,kMAAkC,EAC1C,CAAC,OAAO,SAAI,GAAG,SAAI,CAAC,EACpB,CAAC,OAAO,4IAAyB,EACjC,CAAC,OAAO,6CAAU,EAAE,oHAAqB,EACzC,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,oTAAqD,EAC7D,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sCAAQ,EAChB,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sdAAgF,EACxF,CAAC,OAAO,SAAI,EAAE,0BAAM,EACpB,CAAC,SAAS,gEAAa,EACvB,CAAC,SAAS,cAAK,EACf,CAAC,SAAS,kCAAS,EACnB,CAAC,SAAS,gCAAO,EACjB,CAAC,SAAS,QAAG,EACb,CAAC,SAAS,cAAI,EACd,CAAC,SAAS,QAAG,EACb,CAAC,SAAS,0EAAc,EACxB,CAAC,SAAS,SAAI,GAAG,cAAI,EACrB,CAAC,SAAS,SAAI,GAAG,cAAI,EACrB,CAAC,SAAS,YAAI,EACd,CAAC,SAAS,QAAG,EACb,CAAC,SAAS,QAAG,EACb,CAAC,SAAS,cAAI,EACd,CAAC,SAAS,kBAAK,EACf,CAAC,SAAS,YAAI,EACd,CAAC,SAAS,wFAAkB,EAC5B,CAAC,SAAS,4HAA0B,EACpC,CAAC,SAAS,wVAAgE,EAC1E,CAAC,SAAS,8IAA6B,EACvC,CAAC,SAAS,oCAAS,EACnB,CAAC,SAAS,4RAAqD,EAC/D,CAAC,SAAS,sjBAAgG,EAC1G,CAAC,SAAS,sjBAAgG,EAC1G,CAAC,SAAS,6CAAU,EAAE,ofAAqF,EAC3G,CAAC,SAAS,sjBAAgG,EAC1G,CAAC,SAAS,sjBAAgG,EAC1G,CAAC,SAAS,sjBAAgG,EAC1G,CAAC,SAAS,iFAAgB,EAAE,iaAAwE,EAAE,oBAAK,EAC3G,CAAC,SAAS,uOAAyC,EAAE,0TAAsD,EAC3G,CAAC,SAAS,sjBAAgG,EAC1G,CAAC,SAAS,sjBAAgG,EAC1G,CAAC,SAAS,6XAAkE,EAAE,oKAA6B,EAC3G,CAAC,SAAS,sjBAAgG,EAC1G,CAAC,SAAS,2KAA+B,EAAE,sXAAgE,EAC3G,CAAC,SAAS,iLAAgC,EAAE,gXAA+D,EAC3G,CAAC,SAAS,2KAA+B,EAAE,sXAAgE,EAC3G,CAAC,SAAS,sjBAAgG,EAC1G,CAAC,SAAS,sjBAAgG,EAC1G,CAAC,SAAS,sjBAAgG,EAC1G,CAAC,SAAS,sjBAAgG,EAC1G,CAAC,SAAS,yYAAoE,EAAE,wJAA2B,EAC3G,CAAC,SAAS,sjBAAgG,EAC1G,CAAC,SAAS,sjBAAgG,EAC1G,CAAC,SAAS,sjBAAgG,EAC1G,CAAC,SAAS,sjBAAgG,EAC1G,CAAC,SAAS,sjBAAgG,EAC1G,CAAC,SAAS,2QAA+C,EAAE,+GAAqB,EAAE,kJAA0B,EAC5G,CAAC,SAAS,sjBAAgG,EAC1G,CAAC,SAAS,sjBAAgG,EAC1G,CAAC,SAAS,2EAAe,EAAE,wbAA2E,EACtG,CAAC,SAAS,iLAAgC,EAAE,0WAA8D,EAC1G,CAAC,SAAS,6LAAkC,EAAE,wVAA2D,EACzG,CAAC,SAAS,sjBAAgG,EAC1G,CAAC,SAAS,sjBAAgG,EAC1G,CAAC,SAAS,sjBAAgG,EAC1G,CAAC,SAAS,yhBAA4F,CAAC,EACvG,CAAC,SAAS,sjBAAgG,EAC1G,CAAC,SAAS,yDAAY,EAAE,weAAmF,EAC3G,CAAC,SAAS,sjBAAgG,EAC1G,CAAC,SAAS,sjBAAgG,EAC1G,CAAC,SAAS,sjBAAgG,EAC1G,CAAC,SAAS,sjBAAgG,EAC1G,CAAC,SAAS,+MAAqC,EAAE,qBAAM,EAAE,4RAAiD,EAC1G,CAAC,SAAS,mMAAmC,EAAE,8VAA4D,EAC3G,CAAC,SAAS,mJAA2B,EAAE,kYAAkE,EACzG,CAAC,SAAS,iOAAwC,EAAE,gUAAuD,EAC3G,CAAC,SAAS,2HAAuB,EAAE,saAAwE,EAC3G,CAAC,SAAS,2NAAuC,EAAE,sUAAwD,EAC3G,CAAC,SAAS,sjBAAgG,EAC1G,CAAC,SAAS,sjBAAgG,EAC1G,CAAC,SAAS,2BAAO,EAAE,sgBAAwF,EAC3G,CAAC,SAAS,sjBAAgG,EAC1G,CAAC,SAAS,uFAAiB,EAAE,2WAA+D,EAAE,oEAAa,EAC3G,CAAC,SAAS,yGAAoB,EAAE,wbAA2E,EAC3G,CAAC,SAAS,yMAAoC,EAAE,wVAA2D,EAC3G,CAAC,SAAS,sjBAAgG,EAC1G,CAAC,SAAS,sjBAAgG,EAC1G,CAAC,SAAS,6XAAkE,EAAE,oKAA6B,EAC3G,CAAC,SAAS,+hBAA6F,CAAC,EACxG,CAAC,SAAS,6OAA0C,EAAE,oTAAqD,EAC3G,CAAC,SAAS,+GAAqB,EAAE,kbAA0E,EAC3G,CAAC,SAAS,sjBAAgG,EAC1G,CAAC,SAAS,mMAAmC,EAAE,qEAAc,EAAE,kGAAkB,CACjF,ICrLA,IAAAC,IAAAC,EAAA,CAAAC,IAAAC,MAAA,CAAAA,IAAA,SACA,CAAC,IAAI,KAAS,IAAI,QAAG,EACrB,CAAC,OAAO,uOAAyC,EAAE,eAAK,EAAE,SAAI,EAAE,cAAI,EACpE,CAAC,OAAO,iRAAgD,EAAE,qBAAM,EAAE,mGAAmB,EAAE,qBAAM,EAAE,wPAA2C,EAC1I,CAAC,OAAO,2BAAO,EAAE,SAAI,EAAE,qEAAc,EAAE,2HAAuB,EAAE,EAChE,CAAC,OAAO,+GAAqB,GAAG,uFAAiB,EAAE,uCAAS,EAAE,SAAI,EAAE,SAAI,EAAE,mGAAmB,GAAG,iCAAQ,EAAE,SAAI,EAAE,QAAG,EACnH,CAAC,OAAO,SAAI,GAAG,SAAI,EAAE,2BAAO,GAAG,+DAAa,EAAE,SAAI,EAAE,QAAG,EACvD,CAAC,OAAO,qBAAM,EAAE,SAAI,GAAG,SAAI,GAAG,uFAAiB,EAAE,6LAAkC,EAAE,+GAAqB,CAAC,EAC3G,CAAC,OAAO,yDAAY,EAAE,2NAAuC,EAAE,kDAAU,EACzE,CAAC,OAAO,+GAAqB,EAAE,qBAAM,EAAE,SAAI,EAAE,qBAAM,EAAE,yDAAY,EAAE,+GAAqB,EAAE,iCAAQ,GAAG,SAAI,EAAE,gFAAe,EAC1H,CAAC,OAAO,qHAAsB,EAAE,oNAAqC,EACrE,CAAC,OAAO,SAAI,EAAE,6FAAkB,EAAE,yDAAY,EAAE,qTAAsD,EAAE,2BAAO,EAAE,sIAAwB,EACzI,CAAC,OAAO,2HAAuB,EAAE,uCAAS,EAAE,yDAAY,EAAE,qBAAM,EAAE,4CAAS,EAC3E,CAAC,OAAO,qHAAsB,EAAE,iCAAQ,EAAE,+DAAa,EAAE,qHAAsB,EAAE,SAAI,EAAE,6CAAU,EAAE,+DAAa,EAAE,2EAAe,EAAE,gCAAO,EAC1I,CAAC,OAAO,uCAAS,EAAE,yJAA4B,GAAG,SAAI,EAAE,iCAAQ,CAAC,EACjE,CAAC,OAAO,yGAAoB,EAAE,SAAI,EAAE,2BAAO,GAAG,SAAI,GAAG,SAAI,EAAE,iCAAQ,GAAG,SAAI,EAAE,6CAAU,EAAE,mGAAmB,CAAC,EAC5G,CAAC,OAAO,SAAI,EAAE,iFAAgB,EAAE,2EAAe,EAAE,0HAAsB,EACvE,CAAC,OAAO,uCAAS,EAAE,SAAI,EAAE,mGAAmB,EAAE,SAAI,EAAE,uFAAiB,EAAE,iOAAwC,EAAE,SAAI,EAAE,iCAAQ,CAAC,EAChI,CAAC,OAAO,SAAI,EAAE,SAAI,EAAE,yDAAY,EAAE,SAAI,EAAE,SAAI,EAAE,SAAI,GAAG,wDAAW,EAChE,CAAC,OAAO,SAAI,EAAE,SAAI,EAAE,2BAAO,EAAE,SAAI,GAAG,mDAAW,GAAG,2BAAO,GAAG,SAAI,EAAE,yDAAY,EAAE,2BAAO,EAAE,4IAAyB,EAClH,CAAC,OAAO,6FAAkB,EAAE,2BAAO,GAAG,0KAA8B,EACpE,CAAC,OAAO,uCAAS,EAAE,2BAAO,EAAE,2EAAe,EAAE,6CAAU,GAAG,iLAAgC,EAAE,qBAAM,EAAE,2BAAO,EAAE,qBAAM,EAAE,iCAAQ,CAAC,EAC9H,CAAC,OAAO,mDAAW,EAAE,6CAAU,GAAG,SAAI,EAAE,SAAI,GAAG,cAAI,EACnD,CAAC,OAAO,SAAI,EAAE,2BAAO,EAAE,qBAAM,EAAE,qBAAM,EAAE,mGAAmB,EAAE,SAAI,GAAG,SAAI,GAAG,SAAI,GAAG,2BAAO,EAAE,SAAI,CAAC,EAC/F,CAAC,OAAO,SAAI,EAAE,4UAAyD,EACvE,CAAC,OAAO,eAAK,EAAE,uCAAS,EAAE,eAAK,EAAE,yVAA4D,EAAE,eAAK,EAAE,uCAAS,EAAE,yDAAY,EAAE,SAAI,CAAC,EACpI,CAAC,OAAO,mGAAmB,EAAE,SAAI,EAAE,SAAI,EAAE,SAAI,EAAE,yDAAY,EAAE,SAAI,CAAC,EAClE,CAAC,OAAO,2BAAO,EAAE,SAAI,EAAE,mDAAW,EAAE,uCAAS,EAAE,SAAI,EAAE,SAAI,EAAE,qBAAM,GAAG,2BAAO,GAAG,mDAAW,GAAG,SAAI,GAAG,sCAAQ,EAC3G,CAAC,OAAO,SAAI,GAAG,SAAI,GAAG,SAAI,EAAE,SAAI,GAAG,kDAAU,EAC7C,CAAC,OAAO,2BAAO,EAAE,iFAAgB,EAAE,SAAI,EAAE,qBAAM,EAAE,mDAAW,EAAE,SAAI,EAAE,SAAI,EAAE,iCAAQ,GAAG,uIAAyB,EAAE,SAAI,EAAE,uCAAS,CAAC,EAChI,CAAC,OAAO,2BAAO,EAAE,6CAAU,GAAG,eAAK,EAAE,8JAA4B,EACjE,CAAC,OAAO,uCAAS,EAAE,iCAAQ,GAAG,yPAA4C,EAAE,2BAAO,EAAE,uCAAS,EAAE,4LAAiC,EACjI,CAAC,OAAO,qHAAsB,EAAE,SAAI,EAAE,2BAAO,EAAE,wJAA2B,EAC1E,CAAC,OAAO,qNAAsC,EAAE,2BAAO,EAAE,yDAAY,EAAE,6CAAU,EAAE,yDAAY,EAAE,6FAAkB,GAAG,SAAI,CAAC,EAC3H,CAAC,OAAO,+DAAa,EAAE,yDAAY,EAAE,uCAAS,GAAG,qBAAM,EAAE,QAAG,EAC5D,CAAC,OAAO,SAAI,EAAE,SAAI,EAAE,qBAAM,EAAE,SAAI,EAAE,2BAAO,EAAE,eAAK,EAAE,eAAK,GAAG,SAAI,GAAG,SAAI,EAAE,SAAI,EAAE,6IAA0B,EAAE,gCAAO,EAChH,CAAC,OAAO,mDAAW,EAAE,2HAAuB,EAAE,kJAA0B,EACxE,CAAC,OAAO,6RAAkD,EAAE,6FAAkB,EAAE,yMAAoC,EAAE,sFAAgB,EACtI,CAAC,OAAO,uFAAiB,EAAE,qBAAM,EAAE,yGAAoB,EAAE,iCAAQ,EAAE,gCAAO,EAC1E,CAAC,OAAO,uCAAS,EAAE,SAAI,EAAE,mDAAW,EAAE,iCAAQ,EAAE,SAAI,EAAE,iCAAQ,EAAE,SAAI,EAAE,qBAAM,EAAE,yDAAY,EAAE,iIAAwB,EAAE,kDAAU,EAChI,CAAC,OAAO,yDAAY,GAAG,SAAI,EAAE,SAAI,EAAE,SAAI,EAAE,SAAI,CAAC,EAC9C,CAAC,OAAO,2BAAO,EAAE,qEAAc,EAAE,6LAAkC,GAAG,6IAA0B,EAAE,yGAAoB,EAAE,gCAAO,EAC/H,CAAC,OAAO,6CAAU,EAAE,mMAAmC,EAAE,iCAAQ,EAAE,gCAAO,EAC1E,CAAC,OAAO,qEAAc,EAAE,2KAA+B,EAAE,SAAI,EAAE,SAAI,EAAE,SAAI,EAAE,yDAAY,GAAG,eAAK,EAAE,qBAAM,EAAE,8DAAY,EACrH,CAAC,OAAO,yGAAoB,EAAE,yJAA4B,EAAE,0EAAc,EAC1E,CAAC,OAAO,qNAAsC,EAAE,eAAK,EAAE,yGAAoB,EAAE,2EAAe,EAAE,2BAAO,EAAE,SAAI,EAAE,2EAAe,CAAC,EAC7H,CAAC,OAAO,uCAAS,EAAE,eAAK,EAAE,qBAAM,EAAE,6CAAU,EAAE,sFAAgB,EAC9D,CAAC,OAAO,SAAI,EAAE,eAAK,EAAE,2EAAe,EAAE,qBAAM,EAAE,mGAAmB,EAAE,2BAAO,GAAG,2BAAO,EAAE,mGAAmB,GAAG,4CAAS,EACrH,CAAC,OAAO,iFAAgB,EAAE,2EAAe,EAAE,iCAAQ,EAAE,4FAAiB,EACtE,CAAC,OAAO,2BAAO,EAAE,6CAAU,EAAE,2BAAO,GAAG,iCAAQ,EAAE,eAAK,EAAE,SAAI,GAAG,SAAI,EAAE,eAAK,EAAE,+DAAa,EAAE,SAAI,EAAE,qBAAM,EAAE,SAAI,EAAE,QAAG,EAClH,CAAC,OAAO,SAAI,EAAE,2BAAO,GAAG,SAAI,EAAE,yDAAY,EAAE,eAAK,EAAE,SAAI,EAAE,SAAI,CAAC,EAC9D,CAAC,OAAO,2BAAO,IAAI,qBAAM,CAAC,EAC1B,CAAC,OAAO,iIAAwB,GAAG,SAAI,EAAE,qBAAM,GAAG,4CAAS,EAC3D,CAAC,OAAO,qEAAc,EAAE,SAAI,EAAE,SAAI,EAAE,eAAK,EAAE,2BAAO,EAAE,6CAAU,EAAE,SAAI,EAAE,uFAAiB,EAAE,SAAI,EAAE,qKAA8B,EAAE,gCAAO,EACtI,CAAC,OAAO,mDAAW,EAAE,oTAAqD,EAC1E,CAAC,OAAO,qNAAsC,EAAE,iRAAgD,EAAE,qEAAc,EAAE,2EAAe,EAAE,sCAAQ,EAC3I,CAAC,OAAO,uLAAiC,EAAE,8JAA4B,EACvE,CAAC,OAAO,2BAAO,EAAE,SAAI,EAAE,2EAAe,GAAG,qBAAM,GAAG,6CAAU,EAAE,SAAI,EAAE,uRAAiD,CAAC,EACtH,CAAC,OAAO,yDAAY,EAAE,uCAAS,EAAE,2BAAO,EAAE,uFAAiB,EAAE,0BAAM,EACnE,CAAC,OAAO,mDAAW,EAAE,qEAAc,EAAE,+DAAa,EAAE,uCAAS,GAAG,iCAAQ,EAAE,SAAI,GAAG,iCAAQ,EAAE,eAAK,EAAE,SAAI,EAAE,SAAI,GAAG,gCAAO,EACtH,CAAC,OAAO,SAAI,EAAE,SAAI,GAAG,SAAI,EAAE,SAAI,EAAE,SAAI,CAAC,EACtC,CAAC,OAAO,SAAI,EAAE,2BAAO,GAAG,qBAAM,GAAG,SAAI,GAAG,iLAAgC,GAAG,uFAAiB,GAAG,QAAG,EAClG,CAAC,OAAO,qEAAc,EAAE,iCAAQ,GAAG,SAAI,EAAE,iCAAQ,GAAG,SAAI,EAAE,oBAAK,EAC/D,CAAC,OAAO,eAAK,GAAG,6CAAU,GAAG,eAAK,EAAE,eAAK,EAAE,qEAAc,EAAE,SAAI,EAAE,2EAAe,EAAE,SAAI,EAAE,2BAAO,EAAE,iCAAQ,EAAE,SAAI,EAAE,SAAI,CAAC,EACtH,CAAC,OAAO,SAAI,EAAE,uCAAS,EAAE,SAAI,EAAE,SAAI,GAAG,SAAI,EAAE,EAC5C,CAAC,OAAO,qBAAM,EAAE,2EAAe,EAAE,iOAAwC,EAAE,iCAAQ,GAAG,SAAI,GAAG,uCAAS,EAAE,kGAAkB,EAC1H,CAAC,OAAO,uHAAuB,EAAE,wYAAqE,EACtG,CAAC,OAAO,SAAI,CAAC,EACb,CAAC,OAAO,SAAI,GAAG,SAAI,GAAG,SAAI,CAAC,EAC3B,CAAC,OAAO,SAAI,CAAC,EACb,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,iCAAQ,GAAG,QAAG,EACtB,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,GAAG,SAAI,CAAC,EACpB,CAAC,OAAO,SAAI,GAAG,SAAI,CAAC,EACpB,CAAC,OAAO,0EAAc,EACtB,CAAC,OAAO,gCAAO,EACf,CAAC,OAAO,cAAI,EACZ,CAAC,OAAO,SAAI,EAAE,eAAK,EAAE,EACrB,CAAC,OAAO,SAAI,EAAE,eAAK,EAAE,EACrB,CAAC,OAAO,iIAAwB,GAAG,SAAI,CAAC,EACxC,CAAC,OAAO,SAAI,EAAE,sFAAgB,EAC9B,CAAC,OAAO,4IAA6B,EACrC,CAAC,OAAO,cAAI,EACZ,CAAC,OAAO,QAAG,EACX,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,4FAAiB,EAC/B,CAAC,OAAO,cAAI,EACZ,CAAC,OAAO,QAAG,EACX,CAAC,OAAO,yDAAY,EAAE,iCAAQ,CAAC,EAC/B,CAAC,OAAO,SAAI,EAAE,0BAAM,EACpB,CAAC,OAAO,QAAG,EACX,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,2BAAO,EAAE,qEAAc,EAAE,uLAAiC,CAAC,EACnE,CAAC,OAAO,2EAAe,EAAE,SAAI,GAAG,oBAAK,EACrC,CAAC,OAAO,SAAI,GAAG,SAAI,EAAE,uIAAyB,EAAE,6FAAkB,CAAC,EACnE,CAAC,OAAO,2BAAO,EAAE,qHAAsB,CAAC,EACxC,CAAC,OAAO,SAAI,GAAG,mDAAW,EAAE,SAAI,EAAE,+DAAa,EAAE,iCAAQ,EAAE,EAC3D,CAAC,OAAO,SAAI,EAAE,2BAAO,GAAG,qBAAM,EAAE,oBAAK,EACrC,CAAC,OAAO,6FAAkB,GAAG,eAAK,EAAE,SAAI,GAAG,SAAI,EAAE,EACjD,CAAC,OAAO,SAAI,EAAE,SAAI,EAAE,iCAAQ,EAAE,oBAAK,EACnC,CAAC,OAAO,qBAAM,EAAE,iCAAQ,EAAE,qEAAc,EAAE,oKAA6B,EACvE,CAAC,OAAO,SAAI,EAAE,2BAAO,EAAE,iCAAQ,EAAE,sCAAQ,EACzC,CAAC,OAAO,6FAAkB,EAAE,0QAA8C,EAC1E,CAAC,OAAO,wMAAmC,EAC3C,CAAC,OAAO,SAAI,EAAE,SAAI,EAAE,eAAK,EAAE,uCAAS,EAAE,2BAAO,EAAE,gIAAuB,EACtE,CAAC,OAAO,SAAI,EAAE,SAAI,EAAE,2BAAO,EAAE,wkBAAmG,EAChI,CAAC,OAAO,iFAAgB,EAAE,SAAI,EAAE,yGAAoB,GAAG,oEAAa,EACpE,CAAC,OAAO,qBAAM,EAAE,+DAAa,EAAE,SAAI,EAAE,4jBAAiG,EACtI,CAAC,OAAO,yDAAY,GAAG,6CAAU,EAAE,qBAAM,GAAG,iFAAgB,CAAC,EAC7D,CAAC,OAAO,qBAAM,GAAG,SAAI,EAAE,2BAAO,EAAE,4jBAAiG,EACjI,CAAC,OAAO,6FAAkB,EAAE,oQAA6C,EACzE,CAAC,OAAO,qBAAM,GAAG,SAAI,EAAE,iCAAQ,EAAE,sjBAAgG,EACjI,CAAC,OAAO,2HAAuB,EAAE,qKAA8B,CAAC,EAChE,CAAC,OAAO,mDAAW,EAAE,uCAAS,EAAE,2BAAO,EAAE,sjBAAgG,EACzI,CAAC,OAAO,SAAI,EAAE,SAAI,EAAE,SAAI,EAAE,SAAI,GAAG,SAAI,EAAE,mDAAW,EAAE,sCAAQ,EAC5D,CAAC,OAAO,mDAAW,EAAE,eAAK,EAAE,ooBAA6G,EACzI,CAAC,OAAO,SAAI,EAAE,SAAI,GAAG,SAAI,GAAG,SAAI,EAAE,yGAAoB,EAAE,sCAAQ,EAChE,CAAC,OAAO,qBAAM,EAAE,uFAAiB,EAAE,0lBAAsG,EACzI,CAAC,OAAO,iCAAQ,GAAG,6CAAU,EAAE,SAAI,EAAE,SAAI,EAAE,SAAI,EAAE,EACjD,CAAC,OAAO,SAAI,EAAE,ktBAA0H,EACxI,CAAC,OAAO,6CAAU,EAAE,SAAI,GAAG,SAAI,GAAG,SAAI,EAAE,+DAAa,EAAE,gCAAO,EAC9D,CAAC,OAAO,SAAI,EAAE,8tBAA4H,EAC1I,CAAC,OAAO,qEAAc,EAAE,uFAAiB,GAAG,6FAAkB,EAAE,cAAI,EACpE,CAAC,OAAO,6IAA0B,EAAE,wkBAAmG,EACvI,CAAC,OAAO,qEAAc,EAAE,yGAAoB,EAAE,uCAAS,EAAE,uCAAS,EAAE,oBAAK,EACzE,CAAC,OAAO,SAAI,EAAE,SAAI,EAAE,qBAAM,GAAG,SAAI,EAAE,4jBAAiG,EACpI,CAAC,OAAO,SAAI,EAAE,SAAI,GAAG,SAAI,EAAE,SAAI,CAAC,EAChC,CAAC,OAAO,eAAK,EAAE,qHAAsB,EAAE,kkBAAkG,EACzI,CAAC,OAAO,yDAAY,EAAE,uCAAS,EAAE,SAAI,EAAE,SAAI,EAAE,qBAAM,GAAG,SAAI,CAAC,EAC3D,CAAC,OAAO,SAAI,GAAG,2EAAe,EAAE,sjBAAgG,EAChI,CAAC,OAAO,SAAI,GAAG,SAAI,CAAC,EACpB,CAAC,OAAO,SAAI,GAAG,sjBAAgG,EAC/G,CAAC,OAAO,SAAI,GAAG,SAAI,EAAE,SAAI,EAAE,EAC3B,CAAC,OAAO,SAAI,GAAG,sjBAAgG,EAC/G,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,eAAK,EAAE,SAAI,EAAE,SAAI,GAAG,sjBAAgG,EAC5H,CAAC,OAAO,SAAI,GAAG,SAAI,GAAG,oBAAK,EAC3B,CAAC,OAAO,uFAAiB,EAAE,eAAK,EAAE,kkBAAkG,EACpI,CAAC,OAAO,mDAAW,EAAE,yGAAoB,EAAE,qBAAM,EAAE,SAAI,EAAE,mDAAW,EAAE,QAAG,EACzE,CAAC,OAAO,SAAI,EAAE,uFAAiB,EAAE,qBAAM,EAAE,kkBAAkG,EAC3I,CAAC,OAAO,+DAAa,EAAE,iIAAwB,EAAE,gIAAuB,EACxE,CAAC,OAAO,eAAK,GAAG,SAAI,EAAE,SAAI,GAAG,sjBAAgG,EAC7H,CAAC,OAAO,6CAAU,EAAE,qHAAsB,EAAE,SAAI,EAAE,gIAAuB,EACzE,CAAC,OAAO,mDAAW,GAAG,mDAAW,EAAE,4jBAAiG,EACpI,CAAC,OAAO,SAAI,EAAE,+DAAa,EAAE,+GAAqB,EAAE,6CAAU,EAAE,qBAAM,EAAE,cAAI,EAC5E,CAAC,OAAO,qBAAM,EAAE,SAAI,EAAE,qEAAc,EAAE,sjBAAgG,EACtI,CAAC,OAAO,SAAI,GAAG,6CAAU,EAAE,SAAI,EAAE,2BAAO,EAAE,iCAAQ,EAAE,gFAAe,EACnE,CAAC,OAAO,2EAAe,EAAE,uCAAS,EAAE,4jBAAiG,EACrI,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,eAAK,EAAE,+DAAa,EAAE,smBAAwG,EACtI,CAAC,OAAO,mDAAW,EAAE,eAAK,EAAE,qBAAM,EAAE,qBAAM,EAAE,+GAAqB,EAAE,oBAAK,EACxE,CAAC,OAAO,4vBAAiI,EACzI,CAAC,OAAO,qBAAM,EAAE,uFAAiB,EAAE,2BAAO,EAAE,SAAI,EAAE,SAAI,EAAE,2BAAO,EAAE,oBAAK,EACtE,CAAC,OAAO,SAAI,EAAE,SAAI,EAAE,6CAAU,EAAE,knBAA0G,EAC1I,CAAC,OAAO,SAAI,EAAE,6CAAU,EAAE,mDAAW,GAAG,kJAA0B,EAClE,CAAC,OAAO,SAAI,EAAE,iCAAQ,EAAE,2BAAO,GAAG,olBAAqG,EACvI,CAAC,OAAO,SAAI,EAAE,mGAAmB,EAAE,SAAI,EAAE,SAAI,EAAE,iCAAQ,EAAE,EACzD,CAAC,OAAO,6CAAU,EAAE,2BAAO,EAAE,knBAA0G,EACvI,CAAC,OAAO,2BAAO,EAAE,SAAI,GAAG,SAAI,EAAE,mDAAW,EAAE,eAAK,EAAE,SAAI,EAAE,SAAI,EAAE,cAAI,EAClE,CAAC,OAAO,eAAK,EAAE,SAAI,EAAE,iCAAQ,GAAG,sjBAAgG,EAChI,CAAC,OAAO,uCAAS,EAAE,SAAI,GAAG,iCAAQ,GAAG,eAAK,GAAG,4CAAS,EACtD,CAAC,OAAO,SAAI,GAAG,qBAAM,EAAE,6CAAU,EAAE,sjBAAgG,EACnI,CAAC,OAAO,2BAAO,EAAE,SAAI,EAAE,SAAI,EAAE,eAAK,EAAE,SAAI,EAAE,qEAAc,EAAE,sFAAgB,EAC1E,CAAC,OAAO,4vBAAiI,EACzI,CAAC,OAAO,yJAA4B,EAAE,2EAAe,EAAE,qBAAM,EAAE,gCAAO,EACtE,CAAC,OAAO,uFAAiB,EAAE,2BAAO,EAAE,SAAI,EAAE,sjBAAgG,EAC1I,CAAC,OAAO,qHAAsB,EAAE,2BAAO,EAAE,SAAI,EAAE,mGAAmB,CAAC,EACnE,CAAC,OAAO,yDAAY,EAAE,SAAI,EAAE,uCAAS,EAAE,4jBAAiG,EACxI,CAAC,OAAO,SAAI,GAAG,SAAI,EAAE,yDAAY,EAAE,SAAI,EAAE,2BAAO,EAAE,gFAAe,EACjE,CAAC,OAAO,yGAAoB,EAAE,SAAI,EAAE,eAAK,EAAE,sjBAAgG,EAC3I,CAAC,OAAO,iCAAQ,EAAE,6IAA0B,EAAE,iCAAQ,EAAE,qEAAc,CAAC,EACvE,CAAC,OAAO,eAAK,EAAE,eAAK,EAAE,SAAI,EAAE,spBAAgH,EAC5I,CAAC,OAAO,SAAI,EAAE,qBAAM,GAAG,SAAI,EAAE,SAAI,GAAG,QAAG,EACvC,CAAC,OAAO,6CAAU,GAAG,sjBAAgG,EACrH,CAAC,OAAO,SAAI,GAAG,+JAA6B,CAAC,EAC7C,CAAC,OAAO,SAAI,EAAE,SAAI,EAAE,SAAI,GAAG,sjBAAgG,EAC3H,CAAC,OAAO,SAAI,GAAG,SAAI,EAAE,SAAI,EAAE,EAC3B,CAAC,OAAO,SAAI,GAAG,SAAI,EAAE,sjBAAgG,EACrH,CAAC,OAAO,SAAI,EAAE,SAAI,EAAE,SAAI,EAAE,EAC1B,CAAC,OAAO,SAAI,GAAG,sjBAAgG,EAC/G,CAAC,OAAO,SAAI,GAAG,SAAI,EAAE,EACrB,CAAC,OAAO,qBAAM,GAAG,sjBAAgG,EACjH,CAAC,OAAO,SAAI,GAAG,SAAI,EAAE,SAAI,EAAE,EAC3B,CAAC,OAAO,SAAI,GAAG,wkBAAmG,EAClH,CAAC,OAAO,SAAI,EAAE,mDAAW,EAAE,iCAAQ,EAAE,SAAI,EAAE,SAAI,EAAE,iCAAQ,EAAE,0BAAM,EACjE,CAAC,OAAO,qBAAM,EAAE,2BAAO,GAAG,sjBAAgG,EAC1H,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,GAAG,sjBAAgG,EAC/G,CAAC,OAAO,SAAI,GAAG,6FAAkB,EAAE,6CAAU,EAAE,qBAAM,EAAE,cAAI,EAC3D,CAAC,OAAO,eAAK,GAAG,wqBAAmH,EACnI,CAAC,OAAO,2HAAuB,EAAE,qEAAc,EAAE,qBAAM,EAAE,0EAAc,EACvE,CAAC,OAAO,iCAAQ,EAAE,SAAI,EAAE,SAAI,GAAG,0lBAAsG,EACrI,CAAC,OAAO,qBAAM,EAAE,mDAAW,EAAE,2BAAO,EAAE,eAAK,GAAG,iCAAQ,EAAE,SAAI,CAAC,EAC7D,CAAC,OAAO,SAAI,GAAG,SAAI,GAAG,sjBAAgG,EACtH,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,GAAG,sjBAAgG,EAC/G,CAAC,OAAO,SAAI,GAAG,sLAAgC,EAC/C,CAAC,OAAO,SAAI,EAAE,8tBAA4H,EAC1I,CAAC,OAAO,uCAAS,EAAE,SAAI,EAAE,+DAAa,EAAE,6CAAU,EAAE,mDAAW,EAAE,SAAI,EAAE,cAAI,EAC3E,CAAC,OAAO,6CAAU,EAAE,0rBAAsH,EAC1I,CAAC,OAAO,yPAA4C,GAAG,oBAAK,EAC5D,CAAC,OAAO,iCAAQ,GAAG,eAAK,EAAE,SAAI,EAAE,4jBAAiG,EACjI,CAAC,OAAO,mJAA2B,EAAE,uCAAS,EAAE,SAAI,EAAE,SAAI,EAAE,oEAAa,EACzE,CAAC,OAAO,SAAI,GAAG,2BAAO,EAAE,SAAI,EAAE,sjBAAgG,EAC9H,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,GAAG,2KAA+B,EAAE,gXAA+D,EAC/G,CAAC,OAAO,SAAI,GAAG,SAAI,EAAE,EACrB,CAAC,OAAO,SAAI,EAAE,SAAI,GAAG,sjBAAgG,EACrH,CAAC,OAAO,SAAI,EAAE,SAAI,GAAG,SAAI,EAAE,EAC3B,CAAC,OAAO,SAAI,GAAG,sjBAAgG,EAC/G,CAAC,OAAO,SAAI,GAAG,SAAI,EAAE,EACrB,CAAC,OAAO,SAAI,GAAG,4jBAAiG,EAChH,CAAC,OAAO,SAAI,GAAG,SAAI,EAAE,EACrB,CAAC,OAAO,SAAI,GAAG,wkBAAmG,EAClH,CAAC,OAAO,SAAI,EAAE,SAAI,EAAE,EACpB,CAAC,OAAO,SAAI,GAAG,+PAA6C,EAAE,iCAAQ,EAAE,gOAAuC,EAC/G,CAAC,OAAO,SAAI,GAAG,SAAI,GAAG,0BAAM,EAC5B,CAAC,OAAO,SAAI,GAAG,8nBAA4G,EAC3H,CAAC,OAAO,iFAAgB,EAAE,SAAI,EAAE,EAChC,CAAC,OAAO,SAAI,GAAG,sjBAAgG,EAC/G,CAAC,OAAO,SAAI,GAAG,yDAAY,EAAE,0HAAsB,EACnD,CAAC,OAAO,2EAAe,EAAE,eAAK,GAAG,wkBAAmG,EACpI,CAAC,OAAO,+DAAa,EAAE,SAAI,EAAE,qHAAsB,EAAE,SAAI,EAAE,QAAG,EAC9D,CAAC,OAAO,+JAA6B,EAAE,wkBAAmG,EAC1I,CAAC,OAAO,SAAI,EAAE,uCAAS,EAAE,iCAAQ,GAAG,uFAAiB,CAAC,EACtD,CAAC,OAAO,qBAAM,EAAE,SAAI,EAAE,SAAI,EAAE,yDAAY,EAAE,sjBAAgG,EAC1I,CAAC,OAAO,iCAAQ,EAAE,uCAAS,EAAE,EAC7B,CAAC,OAAO,2BAAO,EAAE,eAAK,GAAG,sjBAAgG,EACzH,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,GAAG,iXAAgE,EAAE,iCAAQ,EAAE,8GAAoB,EAC/G,CAAC,OAAO,SAAI,EAAE,6CAAU,GAAG,yDAAY,CAAC,EACxC,CAAC,OAAO,qBAAM,GAAG,uIAAyB,EAAE,+PAA6C,EAAE,8GAAoB,EAC/G,CAAC,OAAO,SAAI,EAAE,qBAAM,GAAG,SAAI,EAAE,EAC7B,CAAC,OAAO,SAAI,EAAE,SAAI,GAAG,qKAA8B,EAAE,qKAA8B,EAAE,kPAA0C,EAC/H,CAAC,OAAO,qBAAM,GAAG,qBAAM,EAAE,EACzB,CAAC,OAAO,SAAI,GAAG,sjBAAgG,EAC/G,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,GAAG,sjBAAgG,EAC/G,CAAC,OAAO,SAAI,GAAG,+DAAa,EAAE,2EAAe,EAAE,gFAAe,EAC9D,CAAC,OAAO,uFAAiB,EAAE,eAAK,EAAE,wkBAAmG,EACrI,CAAC,OAAO,eAAK,EAAE,2BAAO,GAAG,2BAAO,GAAG,qBAAM,EAAE,iFAAgB,CAAC,EAC5D,CAAC,OAAO,SAAI,GAAG,sjBAAgG,EAC/G,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,GAAG,sjBAAgG,EAC/G,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,GAAG,iIAAwB,EAAE,iOAAwC,EAAE,SAAI,EAAE,2BAAO,EAAE,8DAAY,EAC9G,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,iIAAwB,EAAE,yDAAY,EAAE,whBAA2F,EAC3I,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,GAAG,yJAA4B,EAAE,QAAG,EAChD,CAAC,OAAO,mDAAW,EAAE,SAAI,EAAE,eAAK,EAAE,0BAAM,EACxC,CAAC,OAAO,SAAI,EAAE,6CAAU,EAAE,+JAA6B,EAAE,qBAAM,CAAC,EAChE,CAAC,OAAO,SAAI,EAAE,yDAAY,EAAE,eAAK,EAAE,0BAAM,EACzC,CAAC,OAAO,SAAI,EAAE,2BAAO,EAAE,SAAI,GAAG,SAAI,EAAE,EACpC,CAAC,OAAO,SAAI,EAAE,qBAAM,GAAG,2BAAO,EAAE,gCAAO,EACvC,CAAC,OAAO,kGAAkB,CAC1B,ICvQA,IAAAC,IAAAC,EAAA,CAAAC,IAAAC,MAAA,CAAAA,IAAA,SACA,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,CAAC,EACb,CAAC,OAAO,cAAI,EACZ,CAAC,OAAO,cAAI,EACZ,CAAC,OAAO,cAAI,EACZ,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,GAAG,QAAG,EAClB,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,CAAC,EACb,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,CAAC,EACb,CAAC,OAAO,SAAI,CAAC,EACb,CAAC,OAAO,cAAI,EACZ,CAAC,OAAO,QAAG,EACX,CAAC,OAAO,SAAI,CAAC,EACb,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,QAAG,EACX,CAAC,OAAO,QAAG,EACX,CAAC,OAAO,0BAAM,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,QAAG,EACX,CAAC,OAAO,QAAG,EACX,CAAC,OAAO,oBAAK,EACb,CAAC,OAAO,eAAK,EAAE,EACf,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,CAAC,EACb,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,4RAAiD,EACzD,CAAC,OAAO,yJAA4B,EAAE,qBAAM,EAAE,CAC9C,ICtDA,IAAAC,IAAAC,EAAA,CAAAC,IAAAC,MAAA,CAAAA,IAAA,SAAC,OAAS,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,EAAE,QAAU,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,MAAM,KAAM,CAAC,ICAvqE,IAAAC,IAAAC,EAAA,CAAAC,IAAAC,MAAA,CAAAA,IAAA,SACA,CAAC,IAAI,KAAS,GAAG,EACjB,CAAC,OAAO,iCAAQ,EAAE,6CAAU,EAAE,0BAAM,EACpC,CAAC,OAAO,yDAAY,EAAE,eAAK,EAAE,QAAG,EAChC,CAAC,OAAO,uCAAS,GAAG,uCAAS,EAAE,+DAAa,EAAE,eAAK,EAAE,2BAAO,EAAE,iFAAgB,EAAE,eAAK,EAAE,qEAAc,EAAE,6CAAU,EAAE,0BAAM,EACzH,CAAC,OAAO,qEAAc,EAAE,qBAAM,CAAC,EAC/B,CAAC,OAAO,uCAAS,EAAE,qBAAM,EAAE,sCAAQ,EACnC,CAAC,OAAO,SAAI,EAAE,eAAK,EAAE,qEAAc,EAAE,uCAAS,GAAG,SAAI,EAAE,SAAI,GAAG,SAAI,EAAE,uCAAS,EAAE,eAAK,EAAE,6CAAU,EAAE,EAClG,CAAC,OAAO,iCAAQ,EAAE,qBAAM,EAAE,SAAI,CAAC,EAC/B,CAAC,OAAO,SAAI,GAAG,4CAAS,EACxB,CAAC,OAAO,6FAAkB,EAAE,2EAAe,EAAE,eAAK,EAAE,SAAI,EAAE,SAAI,GAAG,iCAAQ,EAAE,eAAK,EAAE,qBAAM,CAAC,EACzF,CAAC,OAAO,uCAAS,EAAE,6CAAU,CAAC,EAC9B,CAAC,OAAO,mDAAW,EAAE,EACrB,CAAC,OAAO,SAAI,EAAE,iCAAQ,EAAE,6CAAU,EAAE,SAAI,GAAG,SAAI,EAAE,SAAI,GAAG,SAAI,EAAE,6CAAU,EAAE,2BAAO,EAAE,SAAI,GAAG,0BAAM,EAChG,CAAC,OAAO,eAAK,EAAE,qBAAM,EAAE,SAAI,EAAE,SAAI,CAAC,EAClC,CAAC,OAAO,SAAI,EAAE,SAAI,EAAE,uCAAS,EAAE,cAAI,EACnC,CAAC,OAAO,SAAI,EAAE,6CAAU,EAAE,SAAI,EAAE,SAAI,GAAG,6FAAkB,GAAG,uCAAS,EAAE,qBAAM,EAAE,gCAAO,EACtF,CAAC,OAAO,2EAAe,EAAE,eAAK,EAAE,QAAG,EACnC,CAAC,OAAO,iCAAQ,EAAE,iCAAQ,EAAE,EAC5B,CAAC,OAAO,SAAI,GAAG,qEAAc,EAAE,uCAAS,EAAE,eAAK,EAAE,uCAAS,EAAE,qEAAc,GAAG,6CAAU,EAAE,gFAAe,EACxG,CAAC,OAAO,SAAI,EAAE,SAAI,EAAE,EACpB,CAAC,OAAO,SAAI,GAAG,4CAAS,EACxB,CAAC,OAAO,SAAI,EAAE,eAAK,EAAE,uCAAS,EAAE,qBAAM,EAAE,iCAAQ,EAAE,qBAAM,EAAE,SAAI,GAAG,SAAI,EAAE,SAAI,GAAG,6CAAU,EAAE,SAAI,CAAC,EAC/F,CAAC,OAAO,SAAI,EAAE,SAAI,EAAE,SAAI,EAAE,2BAAO,CAAC,EAClC,CAAC,OAAO,6CAAU,EAAE,4FAAiB,EACrC,CAAC,OAAO,SAAI,GAAG,6CAAU,EAAE,6IAA0B,EAAE,eAAK,EAAE,SAAI,GAAG,kDAAU,EAC/E,CAAC,OAAO,2EAAe,EAAE,eAAK,EAAE,QAAG,EACnC,CAAC,OAAO,uCAAS,GAAG,SAAI,EAAE,0BAAM,EAChC,CAAC,OAAO,SAAI,GAAG,uIAAyB,GAAG,SAAI,GAAG,SAAI,EAAE,6CAAU,EAAE,eAAK,EAAE,SAAI,EAAE,EACjF,CAAC,OAAO,SAAI,GAAG,uCAAS,EAAE,oBAAK,EAC/B,CAAC,OAAO,SAAI,EAAE,SAAI,GAAG,cAAI,EACzB,CAAC,OAAO,SAAI,EAAE,SAAI,GAAG,SAAI,EAAE,6CAAU,EAAE,qBAAM,EAAE,6CAAU,EAAE,iCAAQ,EAAE,uCAAS,EAAE,qBAAM,EAAE,SAAI,GAAG,gCAAO,EACtG,CAAC,OAAO,SAAI,EAAE,eAAK,EAAE,uCAAS,EAAE,cAAI,EACpC,CAAC,OAAO,+DAAa,EAAE,eAAK,CAAC,EAC7B,CAAC,OAAO,SAAI,GAAG,2EAAe,EAAE,uCAAS,EAAE,eAAK,EAAE,SAAI,GAAG,SAAI,EAAE,EAC/D,CAAC,OAAO,SAAI,GAAG,uCAAS,CAAC,EACzB,CAAC,OAAO,SAAI,EAAE,SAAI,EAAE,SAAI,EAAE,SAAI,CAAC,EAC/B,CAAC,OAAO,SAAI,GAAG,SAAI,GAAG,2BAAO,GAAG,uCAAS,EAAE,iCAAQ,EAAE,EACrD,CAAC,OAAO,SAAI,GAAG,SAAI,CAAC,EACpB,CAAC,OAAO,SAAI,GAAG,kDAAU,EACzB,CAAC,OAAO,SAAI,EAAE,2BAAO,GAAG,iCAAQ,EAAE,eAAK,EAAE,6CAAU,EAAE,SAAI,EAAE,6CAAU,EAAE,qBAAM,EAAE,uCAAS,EAAE,kDAAU,EACpG,CAAC,OAAO,eAAK,EAAE,eAAK,EAAE,qBAAM,CAAC,EAC7B,CAAC,OAAO,SAAI,EAAE,eAAK,EAAE,EACrB,CAAC,OAAO,SAAI,GAAG,uCAAS,EAAE,eAAK,EAAE,uCAAS,EAAE,qBAAM,EAAE,uCAAS,EAAE,eAAK,EAAE,2BAAO,GAAG,eAAK,EAAE,uCAAS,EAAE,qBAAM,EAAE,2BAAO,CAAC,EAClH,CAAC,OAAO,SAAI,EAAE,SAAI,EAAE,EACpB,CAAC,OAAO,SAAI,EAAE,SAAI,EAAE,6CAAU,CAAC,EAC/B,CAAC,OAAO,iCAAQ,EAAE,6CAAU,EAAE,qBAAM,EAAE,uCAAS,EAAE,qBAAM,EAAE,SAAI,GAAG,SAAI,EAAE,SAAI,GAAG,uCAAS,EAAE,2BAAO,CAAC,EAChG,CAAC,OAAO,uCAAS,EAAE,qBAAM,EAAE,sCAAQ,EACnC,CAAC,OAAO,SAAI,EAAE,iCAAQ,EAAE,EACxB,CAAC,OAAO,SAAI,GAAG,uCAAS,EAAE,qBAAM,EAAE,2BAAO,EAAE,qEAAc,EAAE,eAAK,EAAE,SAAI,EAAE,SAAI,GAAG,SAAI,GAAG,8DAAY,EAClG,CAAC,OAAO,iFAAgB,EAAE,eAAK,CAAC,EAChC,CAAC,OAAO,uCAAS,EAAE,uCAAS,CAAC,EAC7B,CAAC,OAAO,SAAI,GAAG,uCAAS,EAAE,qBAAM,EAAE,2BAAO,GAAG,SAAI,GAAG,6CAAU,EAAE,qBAAM,EAAE,6CAAU,CAAC,EAClF,CAAC,OAAO,qBAAM,EAAE,2BAAO,EAAE,kDAAU,EACnC,CAAC,OAAO,iCAAQ,EAAE,eAAK,EAAE,SAAI,CAAC,EAC9B,CAAC,OAAO,SAAI,GAAG,6CAAU,GAAG,6CAAU,EAAE,qBAAM,EAAE,6CAAU,EAAE,qBAAM,GAAG,gCAAO,EAC5E,CAAC,OAAO,SAAI,EAAE,gIAAuB,EACrC,CAAC,OAAO,qBAAM,EAAE,yDAAY,CAAC,EAC7B,CAAC,OAAO,2BAAO,GAAG,uCAAS,EAAE,qBAAM,EAAE,iCAAQ,EAAE,eAAK,EAAE,uCAAS,EAAE,+DAAa,GAAG,gCAAO,EACxF,CAAC,OAAO,SAAI,EAAE,qBAAM,EAAE,2BAAO,CAAC,EAC9B,CAAC,OAAO,SAAI,EAAE,SAAI,EAAE,SAAI,EAAE,EAC1B,CAAC,OAAO,SAAI,EAAE,SAAI,EAAE,uCAAS,EAAE,SAAI,EAAE,2BAAO,GAAG,iCAAQ,EAAE,6CAAU,EAAE,SAAI,GAAG,SAAI,EAAE,SAAI,EAAE,EACxF,CAAC,OAAO,mDAAW,GAAG,SAAI,EAAE,QAAG,EAC/B,CAAC,OAAO,uCAAS,EAAE,2BAAO,EAAE,gCAAO,EACnC,CAAC,OAAO,SAAI,EAAE,eAAK,GAAG,6CAAU,EAAE,iFAAgB,EAAE,eAAK,EAAE,uCAAS,EAAE,eAAK,EAAE,SAAI,GAAG,SAAI,EAAE,EAC1F,CAAC,OAAO,SAAI,GAAG,cAAI,EACnB,CAAC,OAAO,qBAAM,EAAE,qBAAM,EAAE,SAAI,CAAC,EAC7B,CAAC,OAAO,SAAI,GAAG,SAAI,EAAE,SAAI,GAAG,eAAK,GAAG,uCAAS,EAAE,2BAAO,EAAE,EACxD,CAAC,OAAO,SAAI,GAAG,SAAI,CAAC,EACpB,CAAC,OAAO,SAAI,GAAG,SAAI,CAAC,EACpB,CAAC,OAAO,SAAI,GAAG,SAAI,EAAE,uCAAS,EAAE,2BAAO,GAAG,oBAAK,EAC/C,CAAC,OAAO,SAAI,GAAG,SAAI,EAAE,oBAAK,EAC1B,CAAC,OAAO,2BAAO,EAAE,SAAI,EAAE,EACvB,CAAC,OAAO,SAAI,GAAG,uCAAS,EAAE,qBAAM,EAAE,2BAAO,EAAE,2EAAe,EAAE,eAAK,EAAE,uCAAS,EAAE,qBAAM,EAAE,6CAAU,EAAE,iCAAQ,EAAE,kDAAU,EACtH,CAAC,OAAO,qEAAc,EAAE,eAAK,EAAE,cAAI,EACnC,CAAC,OAAO,2BAAO,EAAE,eAAK,EAAE,wDAAW,EACnC,CAAC,OAAO,SAAI,EAAE,SAAI,EAAE,uCAAS,EAAE,iFAAgB,GAAG,SAAI,EAAE,6CAAU,EAAE,qBAAM,EAAE,6CAAU,EAAE,eAAK,EAAE,uCAAS,EAAE,qBAAM,EAAE,4CAAS,EAC3H,CAAC,OAAO,+DAAa,EAAE,EACvB,CAAC,OAAO,qBAAM,EAAE,uCAAS,EAAE,gCAAO,EAClC,CAAC,OAAO,SAAI,EAAE,uCAAS,EAAE,qBAAM,EAAE,SAAI,EAAE,SAAI,EAAE,2BAAO,EAAE,uCAAS,EAAE,qBAAM,GAAG,iCAAQ,EAAE,2EAAe,EAAE,0BAAM,EAC3G,CAAC,OAAO,yDAAY,EAAE,qBAAM,CAAC,EAC7B,CAAC,OAAO,SAAI,GAAG,SAAI,CAAC,EACpB,CAAC,OAAO,SAAI,GAAG,6CAAU,EAAE,qBAAM,EAAE,6CAAU,GAAG,SAAI,GAAG,QAAG,EAC1D,CAAC,OAAO,iCAAQ,EAAE,2BAAO,EAAE,qBAAM,CAAC,EAClC,CAAC,OAAO,SAAI,EAAE,SAAI,EAAE,SAAI,CAAC,EACzB,CAAC,OAAO,SAAI,EAAE,SAAI,EAAE,6CAAU,EAAE,SAAI,EAAE,SAAI,GAAG,uCAAS,EAAE,2BAAO,EAAE,SAAI,GAAG,SAAI,EAAE,SAAI,EAAE,EACpF,CAAC,OAAO,SAAI,GAAG,2BAAO,CAAC,EACvB,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,SAAI,EAAE,SAAI,EAAE,qEAAc,EAAE,6CAAU,EAAE,SAAI,GAAG,uCAAS,EAAE,qBAAM,EAAE,+GAAqB,EAAE,eAAK,EAAE,kGAAkB,EAC1H,CAAC,OAAO,mDAAW,EAAE,SAAI,EAAE,QAAG,EAC9B,CAAC,OAAO,qBAAM,EAAE,yDAAY,EAAE,0BAAM,EACpC,CAAC,OAAO,6IAA0B,EAAE,eAAK,EAAE,iIAAwB,EAAE,eAAK,EAAE,qBAAM,GAAG,2BAAO,EAAE,uCAAS,EAAE,qBAAM,EAAE,uCAAS,EAAE,QAAG,EAC/H,CAAC,OAAO,eAAK,EAAE,uCAAS,EAAE,qBAAM,EAAE,QAAG,EACrC,CAAC,OAAO,iCAAQ,EAAE,qBAAM,EAAE,4CAAS,EACnC,CAAC,OAAO,SAAI,EAAE,2BAAO,EAAE,uCAAS,EAAE,qBAAM,EAAE,uCAAS,EAAE,iFAAgB,EAAE,+DAAa,EAAE,qBAAM,EAAE,qHAAsB,EAAE,eAAK,EAAE,kDAAU,EACvI,CAAC,OAAO,uCAAS,EAAE,iCAAQ,EAAE,0BAAM,EACnC,CAAC,OAAO,SAAI,EAAE,6CAAU,EAAE,EAC1B,CAAC,OAAO,SAAI,EAAE,6CAAU,EAAE,qBAAM,EAAE,uCAAS,EAAE,qBAAM,EAAE,6CAAU,EAAE,qBAAM,EAAE,SAAI,GAAG,6CAAU,EAAE,uCAAS,EAAE,SAAI,EAAE,gCAAO,EACpH,CAAC,OAAO,2BAAO,GAAG,0BAAM,EACxB,CAAC,OAAO,yDAAY,EAAE,qBAAM,EAAE,oBAAK,EACnC,CAAC,OAAO,SAAI,GAAG,SAAI,EAAE,uCAAS,EAAE,2HAAwB,EAAE,8XAAmE,EAC7H,CAAC,OAAO,eAAK,EAAE,SAAI,EAAE,EACrB,CAAC,OAAO,SAAI,EAAE,SAAI,EAAE,EACpB,CAAC,OAAO,SAAI,EAAE,uCAAS,EAAE,eAAK,EAAE,gbAA4E,EAC5G,CAAC,OAAO,2BAAO,EAAE,SAAI,GAAG,gCAAO,EAC/B,CAAC,OAAO,SAAI,EAAE,qBAAM,EAAE,EACtB,CAAC,OAAO,SAAI,GAAG,uCAAS,EAAE,uCAAS,GAAG,eAAK,GAAG,QAAG,EACjD,CAAC,OAAO,2EAAe,EAAE,wDAAW,EACpC,CAAC,OAAO,iCAAQ,EAAE,2BAAO,EAAE,EAC3B,CAAC,OAAO,2BAAO,GAAG,SAAI,EAAE,EACxB,CAAC,OAAO,SAAI,EAAE,uCAAS,EAAE,eAAK,EAAE,cAAI,EACpC,CAAC,OAAO,SAAI,GAAG,SAAI,EAAE,cAAI,EACzB,CAAC,OAAO,SAAI,GAAG,SAAI,GAAG,SAAI,CAAC,EAC3B,CAAC,OAAO,SAAI,CAAC,EACb,CAAC,OAAO,SAAI,GAAG,SAAI,CAAC,EACpB,CAAC,OAAO,SAAI,GAAG,SAAI,CAAC,EACpB,CAAC,OAAO,SAAI,GAAG,sCAAQ,EACvB,CAAC,OAAO,SAAI,EAAE,mDAAW,EAAE,SAAI,CAAC,EAChC,CAAC,OAAO,iCAAQ,EAAE,SAAI,GAAG,6XAAkE,CAAC,EAC5F,CAAC,OAAO,SAAI,EAAE,6CAAU,EAAE,SAAI,CAAC,EAC/B,CAAC,OAAO,SAAI,GAAG,oBAAK,EACpB,CAAC,OAAO,yDAAY,EAAE,2BAAO,EAAE,SAAI,EAAE,qEAAc,EAAE,qEAAc,EAAE,SAAI,EAAE,SAAI,EAAE,SAAI,EAAE,4IAAyB,EAChH,CAAC,OAAO,SAAI,GAAG,SAAI,EAAE,EACrB,CAAC,OAAO,SAAI,GAAG,SAAI,CAAC,EACpB,CAAC,OAAO,SAAI,GAAG,SAAI,GAAG,oBAAM,EAC5B,CAAC,OAAO,QAAG,EACX,CAAC,OAAO,4CAAU,EAClB,CAAC,OAAO,SAAI,GAAG,SAAI,GAAG,SAAI,GAAG,kDAAW,EACxC,CAAC,OAAO,SAAI,GAAG,SAAI,EAAE,EACrB,CAAC,OAAO,mDAAW,EAAE,EACrB,CAAC,OAAO,SAAI,GAAG,uCAAS,EAAE,6HAAyB,GAAG,SAAI,GAAG,SAAI,GAAG,kDAAW,EAC/E,CAAC,OAAO,6CAAU,EAAE,eAAK,EAAE,4CAAS,EACpC,CAAC,OAAO,SAAI,EAAE,eAAK,EAAE,uCAAS,EAAE,cAAI,EACpC,CAAC,OAAO,qBAAM,GAAG,SAAI,EAAE,EACvB,CAAC,OAAO,+DAAa,EAAE,eAAK,EAAE,oBAAK,EACnC,CAAC,OAAO,qBAAM,EAAE,qBAAM,EAAE,2BAAO,CAAC,EAChC,CAAC,OAAO,SAAI,EAAE,SAAI,EAAE,2BAAO,GAAG,SAAI,EAAE,EACpC,CAAC,OAAO,2BAAO,EAAE,uCAAS,EAAE,gCAAO,EACnC,CAAC,OAAO,+DAAa,GAAG,SAAI,CAAC,EAC7B,CAAC,OAAO,SAAI,GAAG,2BAAO,EAAE,eAAK,EAAE,EAC/B,CAAC,OAAO,SAAI,EAAE,eAAK,EAAE,EACrB,CAAC,OAAO,2BAAO,EAAE,qBAAM,EAAE,SAAI,CAAC,EAC9B,CAAC,OAAO,SAAI,EAAE,SAAI,GAAG,kDAAU,EAC/B,CAAC,OAAO,6CAAU,EAAE,SAAI,GAAG,QAAG,EAC9B,CAAC,OAAO,SAAI,EAAE,2BAAO,EAAE,EACvB,CAAC,OAAO,SAAI,EAAE,6CAAU,EAAE,qBAAM,CAAC,EACjC,CAAC,OAAO,mDAAW,EAAE,iCAAQ,EAAE,kDAAU,EACzC,CAAC,OAAO,6CAAU,EAAE,EACpB,CAAC,OAAO,SAAI,GAAG,iCAAQ,EAAE,cAAI,EAC7B,CAAC,OAAO,SAAI,EAAE,uCAAS,EAAE,qBAAM,EAAE,sCAAQ,EACzC,CAAC,OAAO,SAAI,EAAE,eAAK,EAAE,SAAI,EAAE,EAC3B,CAAC,OAAO,SAAI,EAAE,SAAI,EAAE,EACpB,CAAC,OAAO,SAAI,GAAG,iCAAQ,EAAE,eAAK,EAAE,mDAAW,EAAE,SAAI,EAAE,8bAA4E,EAC/H,CAAC,OAAO,uCAAS,EAAE,qBAAM,EAAE,sCAAQ,EACnC,CAAC,OAAO,SAAI,EAAE,eAAK,EAAE,SAAI,EAAE,EAC3B,CAAC,OAAO,SAAI,GAAG,uCAAS,EAAE,olBAAqG,EAC/H,CAAC,OAAO,yDAAY,EAAE,iCAAQ,EAAE,QAAG,EACnC,CAAC,OAAO,SAAI,GAAG,SAAI,EAAE,QAAG,EACxB,CAAC,OAAO,SAAI,EAAE,SAAI,GAAG,SAAI,EAAE,sjBAAgG,EAC3H,CAAC,OAAO,SAAI,GAAG,sCAAQ,EACvB,CAAC,OAAO,SAAI,EAAE,qBAAM,EAAE,6CAAU,CAAC,EACjC,CAAC,OAAO,SAAI,EAAE,SAAI,EAAE,SAAI,GAAG,2HAAuB,EAAE,saAAwE,EAC5H,CAAC,OAAO,SAAI,EAAE,uCAAS,EAAE,qBAAM,CAAC,EAChC,CAAC,OAAO,6CAAU,EAAE,SAAI,GAAG,cAAI,EAC/B,CAAC,OAAO,2BAAO,EAAE,2BAAO,GAAG,iXAAgE,EAAE,2BAAO,EAAE,gIAAuB,EAC7H,CAAC,OAAO,SAAI,GAAG,uCAAS,CAAC,EACzB,CAAC,OAAO,2BAAO,EAAE,uCAAS,EAAE,eAAK,CAAC,EAClC,CAAC,OAAO,6CAAU,EAAE,eAAK,EAAE,SAAI,GAAG,sjBAAgG,EAClI,CAAC,OAAO,SAAI,EAAE,SAAI,EAAE,EACpB,CAAC,OAAO,SAAI,GAAG,8DAAY,EAC3B,CAAC,OAAO,qBAAM,EAAE,uCAAS,EAAE,qBAAM,EAAE,8kBAAoG,EACvI,CAAC,OAAO,SAAI,GAAG,SAAI,EAAE,gCAAO,EAC5B,CAAC,OAAO,SAAI,GAAG,gCAAO,EACtB,CAAC,OAAO,SAAI,EAAE,qEAAc,GAAG,sjBAAgG,EAC/H,CAAC,OAAO,SAAI,EAAE,SAAI,EAAE,EACpB,CAAC,OAAO,SAAI,EAAE,2BAAO,EAAE,EACvB,CAAC,OAAO,eAAK,EAAE,SAAI,GAAG,yJAA4B,EAAE,wYAAmE,EACvH,CAAC,OAAO,mDAAW,EAAE,qBAAM,EAAE,0BAAM,EACnC,CAAC,OAAO,SAAI,GAAG,SAAI,EAAE,0BAAM,EAC3B,CAAC,OAAO,SAAI,GAAG,+YAAqE,EAAE,SAAI,EAAE,0KAA8B,EAC1H,CAAC,OAAO,6CAAU,EAAE,6CAAU,EAAE,QAAG,EACnC,CAAC,OAAO,2BAAO,EAAE,uCAAS,EAAE,eAAK,CAAC,EAClC,CAAC,OAAO,yDAAY,EAAE,SAAI,EAAE,gmBAAuG,EACnI,CAAC,OAAO,SAAI,EAAE,qBAAM,EAAE,uCAAS,EAAE,oBAAK,EACtC,CAAC,OAAO,yDAAY,EAAE,eAAK,EAAE,0BAAM,EACnC,CAAC,OAAO,SAAI,GAAG,sjBAAgG,EAC/G,CAAC,OAAO,SAAI,GAAG,kDAAU,EACzB,CAAC,OAAO,uCAAS,EAAE,uCAAS,EAAE,oBAAK,EACnC,CAAC,OAAO,SAAI,EAAE,6CAAU,EAAE,qBAAM,EAAE,SAAI,EAAE,iFAAgB,EAAE,gdAA+E,EACzI,CAAC,OAAO,eAAK,EAAE,eAAK,EAAE,kDAAU,EAChC,CAAC,OAAO,6CAAU,EAAE,SAAI,EAAE,EAC1B,CAAC,OAAO,SAAI,EAAE,SAAI,GAAG,sjBAAgG,EACrH,CAAC,OAAO,SAAI,EAAE,2BAAO,EAAE,EACvB,CAAC,OAAO,SAAI,EAAE,6CAAU,EAAE,0BAAM,EAChC,CAAC,OAAO,SAAI,EAAE,uCAAS,EAAE,qBAAM,EAAE,SAAI,EAAE,ugBAAyF,EAAE,cAAI,EACtI,CAAC,OAAO,SAAI,GAAG,SAAI,EAAE,EACrB,CAAC,OAAO,SAAI,GAAG,4CAAS,EACxB,CAAC,OAAO,SAAI,EAAE,qBAAM,EAAE,6CAAU,EAAE,qHAAsB,EAAE,wbAA2E,EACrI,CAAC,OAAO,SAAI,EAAE,6CAAU,EAAE,eAAK,CAAC,EAChC,CAAC,OAAO,SAAI,EAAE,EACd,CAAC,OAAO,+DAAa,EAAE,qBAAM,EAAE,mPAA2C,EAAE,4UAAyD,EACrI,CAAC,OAAO,uCAAS,EAAE,uCAAS,EAAE,oBAAK,EACnC,CAAC,OAAO,iCAAQ,GAAG,cAAI,EACvB,CAAC,OAAO,SAAI,GAAG,sjBAAgG,EAC/G,CAAC,OAAO,6CAAU,EAAE,qBAAM,EAAE,4CAAS,EACrC,CAAC,OAAO,SAAI,EAAE,qBAAM,EAAE,uCAAS,EAAE,QAAG,EACpC,CAAC,OAAO,SAAI,EAAE,6CAAU,EAAE,SAAI,EAAE,kkBAAkG,EAClI,CAAC,OAAO,uIAAyB,CAAC,EAClC,CAAC,OAAO,SAAI,EAAE,eAAK,EAAE,qBAAM,EAAE,EAC7B,CAAC,OAAO,2BAAO,EAAE,uCAAS,EAAE,qBAAM,EAAE,kkBAAkG,EACtI,CAAC,OAAO,iCAAQ,EAAE,eAAK,EAAE,gCAAO,EAChC,CAAC,OAAO,+DAAa,EAAE,6CAAU,CAAC,EAClC,CAAC,OAAO,6CAAU,EAAE,uCAAS,GAAG,wkBAAmG,EACnI,CAAC,OAAO,yDAAY,EAAE,qBAAM,EAAE,oBAAK,EACnC,CAAC,OAAO,qBAAM,EAAE,2BAAO,EAAE,2BAAO,CAAC,EACjC,CAAC,OAAO,6FAAkB,EAAE,2BAAO,EAAE,kkBAAkG,EACvI,CAAC,OAAO,2BAAO,EAAE,qBAAM,CAAC,EACxB,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,qWAA8D,EAAE,eAAK,EAAE,kJAA0B,EACzG,CAAC,OAAO,6CAAU,EAAE,qKAA8B,EAAE,eAAK,GAAG,iFAAgB,EAAE,iCAAQ,EAAE,wDAAW,EACnG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,sjBAAgG,CACxG,IChRA,IAAAC,IAAAC,EAAA,CAAAC,IAAAC,MAAA,CAAAA,IAAA,SACA,CAAC,IAAI,KAAS,GAAG,EACjB,CAAC,OAAO,0XAAiE,EACzE,CAAC,OAAO,6WAAiE,EAAE,0KAA8B,EACzG,CAAC,OAAO,mNAAsC,EAAE,gIAAuB,EACvE,CAAC,OAAO,6FAAkB,EAAE,SAAI,EAAE,SAAI,EAAE,2BAAO,GAAG,SAAI,EAAE,EACxD,CAAC,OAAO,iCAAQ,GAAG,SAAI,EAAE,SAAI,GAAG,SAAI,EAAE,SAAI,EAAE,EAC5C,CAAC,OAAO,SAAI,GAAG,gCAAO,EACtB,CAAC,OAAO,QAAG,EACX,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,EACxG,CAAC,OAAO,4XAAiE,EACzE,CAAC,OAAO,sjBAAgG,CACxG,IChLA,IAAAC,IAAAC,EAAA,CAAAC,IAAAC,MAAA,CAAAA,IAAA,SACA,CAAC,OAAO,mRAAuD,EAC/D,CAAC,OAAO,0KAAkC,EAC1C,CAAC,OAAO,+aAAkF,EAC1F,CAAC,OAAO,SAAI,EAAE,qWAAuE,EACrF,CAAC,OAAO,8EAAgB,EACxB,CAAC,OAAO,oBAAM,EACd,CAAC,OAAO,QAAG,EACX,CAAC,OAAO,0BAAM,EACd,CAAC,OAAO,uTAAsD,EAC9D,CAAC,OAAO,sCAAQ,EAChB,CAAC,OAAO,0BAAM,EACd,CAAC,OAAO,uBAAM,EACd,CAAC,OAAO,6EAAgB,EACxB,CAAC,OAAO,oBAAK,EACb,CAAC,OAAO,0WAAgE,EACxE,CAAC,OAAO,iBAAK,EACb,CAAC,OAAO,oQAAwD,EAChE,CAAC,OAAO,sIAA6B,EACrC,CAAC,OAAO,uEAAgB,EACxB,CAAC,OAAO,sFAAoB,EAC5B,CAAC,OAAO,sCAAS,EACjB,CAAC,OAAO,iEAAe,EACvB,CAAC,OAAO,4FAAmB,EAC3B,CAAC,OAAO,sCAAU,EAClB,CAAC,OAAO,uHAA0B,EAClC,CAAC,OAAO,+LAA2C,EACnD,CAAC,OAAO,6EAAkB,EAC1B,CAAC,OAAO,uKAAqC,EAC7C,CAAC,OAAO,+UAAuE,EAC/E,CAAC,OAAO,yaAAmF,EAC3F,CAAC,OAAO,uNAAyC,EACjD,CAAC,OAAO,+aAAkF,EAC1F,CAAC,OAAO,sCAAS,EACjB,CAAC,OAAO,8MAAuC,EAC/C,CAAC,OAAO,0BAAM,EACd,CAAC,OAAO,iKAAgC,EACxC,CAAC,OAAO,gLAAmC,EAC3C,CAAC,OAAO,WAAI,EACZ,CAAC,OAAO,2YAAwE,EAChF,CAAC,OAAO,kkBAAoG,EAC5G,CAAC,OAAO,kbAAmF,EAC3F,CAAC,OAAO,2qBAAuI,EAC/I,CAAC,OAAO,2bAAsF,EAC9F,CAAC,OAAO,ypBAAiI,EACzI,CAAC,OAAO,ydAAgG,EACxG,CAAC,OAAO,4pBAAkI,EAC1I,CAAC,OAAO,ocAAyF,EACjG,CAAC,OAAO,8qBAAwI,EAChJ,CAAC,OAAO,qeAAoG,EAC5G,CAAC,OAAO,ypBAAiI,EACzI,CAAC,OAAO,4dAAiG,EACzG,CAAC,OAAO,ysBAAiJ,EACzJ,CAAC,OAAO,0cAA2F,EACnG,CAAC,OAAO,wqBAAsI,EAC9I,CAAC,OAAO,ydAAgG,EACxG,CAAC,OAAO,mpBAA+H,EACvI,CAAC,OAAO,icAAwF,EAChG,CAAC,OAAO,kqBAAoI,EAC5I,CAAC,OAAO,keAAmG,EAC3G,CAAC,OAAO,urBAA2I,EACnJ,CAAC,OAAO,4dAAiG,EACzG,CAAC,OAAO,smBAAgH,EACxH,CAAC,OAAO,+XAAkE,EAC1E,CAAC,OAAO,yjBAAiG,EACzG,CAAC,OAAO,+XAAkE,EAC1E,CAAC,OAAO,+sBAAmJ,EAC3J,CAAC,OAAO,0QAAyD,EACjE,CAAC,OAAO,+OAAoD,EAC5D,CAAC,OAAO,svBAAgK,EACxK,CAAC,OAAO,qeAAoG,EAC5G,CAAC,OAAO,wtBAAsJ,EAC9J,CAAC,OAAO,ofAAyG,EACjH,CAAC,OAAO,kqBAAoI,EAC5I,CAAC,OAAO,ocAAyF,EACjG,CAAC,OAAO,yFAAoB,EAC5B,CAAC,OAAO,8JAA+B,EACvC,CAAC,OAAO,qVAAoE,EAC5E,CAAC,OAAO,0EAAgB,EACxB,CAAC,OAAO,8GAAwB,EAChC,CAAC,OAAO,2SAAqD,EAC7D,CAAC,OAAO,6EAAe,EACvB,CAAC,OAAO,oBAAK,EACb,CAAC,OAAO,qGAAqB,EAC7B,CAAC,OAAO,kDAAW,EACnB,CAAC,OAAO,2GAAoB,EAC5B,CAAC,OAAO,oEAAa,EACrB,CAAC,OAAO,oBAAK,EACb,CAAC,OAAO,6BAAO,EACf,CAAC,OAAO,kGAAmB,EAC3B,CAAC,OAAO,sIAA0B,EAClC,CAAC,OAAO,oBAAM,EACd,CAAC,OAAO,iBAAK,EACb,CAAC,OAAO,4CAAS,EACjB,CAAC,OAAO,+FAAkB,EAC1B,CAAC,OAAO,6EAAe,EACvB,CAAC,OAAO,gCAAQ,EAChB,CAAC,OAAO,kDAAW,EACnB,CAAC,OAAO,QAAG,EACX,CAAC,OAAO,gOAAyC,EACjD,CAAC,OAAO,mFAAgB,EACxB,CAAC,OAAO,sOAAiD,EACzD,CAAC,OAAO,SAAI,GAAG,QAAG,EAClB,CAAC,OAAO,SAAI,EAAE,SAAI,EAAE,SAAI,EAAE,uPAA4C,EAAE,EACxE,CAAC,OAAO,SAAI,GAAG,0BAAM,EACrB,CAAC,OAAO,SAAI,GAAG,SAAI,EAAE,eAAK,CAAC,EAC3B,CAAC,OAAO,SAAI,GAAG,eAAK,GAAG,8DAAa,EACpC,CAAC,OAAO,6BAAO,EACf,CAAC,OAAO,gOAAuC,EAC/C,CAAC,OAAO,4DAAY,EACpB,CAAC,OAAO,QAAG,EACX,CAAC,OAAO,keAAmG,EAC3G,CAAC,OAAO,8nBAAwH,EAChI,CAAC,OAAO,kbAAmF,EAC3F,CAAC,OAAO,+pBAAmI,EAC3I,CAAC,OAAO,icAAwF,EAChG,CAAC,OAAO,2qBAAuI,EAC/I,CAAC,OAAO,ucAA0F,EAClG,CAAC,OAAO,qqBAAqI,EAC7I,CAAC,OAAO,qbAAoF,EAC5F,CAAC,OAAO,4pBAAkI,CAC1I,ICzHA,IAAAC,IAAAC,EAAA,CAAAC,IAAAC,MAAA,cAMAA,IAAO,QAAU,CAkCb,SAAY,CACR,KAAM,QACN,MAAOC,EAAA,UAAW,CAAE,MAAO,MAAkC,EAAtD,SACP,UAAW,CAAC,OAAU,GAAM,SAAU,GAAI,EAC1C,eAAgB,CAAC,CAAC,KAAM,MAAQ,GAAI,KAAM,CAAC,CAC/C,EACA,WAAc,WACd,QAAW,WACX,KAAQ,WACR,WAAc,WACd,MAAS,WACT,MAAS,WACT,WAAc,WACd,MAAS,WACT,IAAO,WACP,MAAS,WAET,MAAS,CACL,KAAM,QACN,MAAOA,EAAA,UAAW,CAAE,MAAO,MAA+B,EAAnD,SACP,UAAW,CAAC,OAAU,GAAM,SAAU,GAAI,CAC9C,EAYA,OAAU,QACV,SAAY,QACZ,WAAc,QACd,SAAY,QACZ,gBAAmB,QACnB,MAAS,QAGT,WAAc,QACd,MAAS,QACT,IAAO,QACP,MAAS,CACL,KAAM,QACN,MAAOA,EAAA,UAAW,CAAE,MAAO,MAA+B,EAAnD,QACX,EAGA,IAAO,CACH,KAAM,QACN,MAAOA,EAAA,UAAW,CAAE,MAAO,OAA+B,OAAO,KAAkC,CAAE,EAA9F,QACX,EACA,KAAQ,MACR,QAAW,MAOX,QAAW,CACP,KAAM,QACN,MAAOA,EAAA,UAAW,CAAE,MAAO,OAA+B,OAAO,KAAkC,CAAE,EAA9F,SACP,QAASA,EAAA,UAAW,CAAE,MAAO,MAAwC,EAA5D,WACT,eAAgB,CAAC,GAAI,EACrB,UAAW,CAAC,SAAK,KAAM,CAC3B,EAEA,QAAW,UAKX,WAAc,QACd,MAAS,QACT,IAAO,QACP,MAAS,CACL,KAAM,QACN,MAAOA,EAAA,UAAW,CAAE,MAAO,MAA+B,EAAnD,QACX,EAEA,QAAW,QACX,cAAiB,QACjB,MAAS,QACT,SAAY,QACZ,OAAU,QACV,YAAe,QACf,YAAe,QACf,QAAW,QA0BX,WAAc,QACd,MAAS,QACT,IAAO,QACP,MAAS,CACL,KAAM,QACN,MAAOA,EAAA,UAAW,CAAE,MAAO,MAA+B,EAAnD,QACX,EAGA,KAAQ,YACR,UAAa,CACT,KAAM,QACN,MAAOA,EAAA,UAAW,CAAE,MAAO,OAA+B,OAAO,KAAmC,CAAE,EAA/F,SACP,eAAgB,CAAC,KAAM,CAC3B,EAEA,OAAU,YACV,OAAU,YACV,OAAU,WACd,IC/KA,IAAAC,IAAAC,EAAA,CAAAC,IAAAC,KAAA,cAIA,IAAIC,IAAU,CACV,MACA,MACA,MACA,MACA,MACA,MACA,MACA,KACJ,EAGA,IAASC,IAAI,EAAGA,IAAID,IAAQ,OAAQC,MAAK,CACjCF,GAASC,IAAQC,GAAC,EACtB,IAASC,OAAOH,GACR,OAAO,UAAU,eAAe,KAAKA,GAAQG,GAAG,IAChDJ,IAAQI,GAAG,EAAIH,GAAOG,GAAG,EACrC,CAJQ,IAAAH,GACKG,IAFJD,MChBT,IAAAE,IAAAC,EAAA,CAAAC,IAAAC,MAAA,cAEA,IAAIC,IAAS,QAAQ,QAAQ,EAAE,OAC3BC,IAAY,QAAQ,QAAQ,EAAE,UAIlCF,IAAO,QAAU,SAASG,EAAO,CAG7BA,EAAM,aAAeC,EAAA,SAAsBC,EAAUC,EAAS,CAC1D,OAAO,IAAIC,GAAuBJ,EAAM,WAAWE,EAAUC,CAAO,EAAGA,CAAO,CAClF,EAFqB,gBAIrBH,EAAM,aAAeC,EAAA,SAAsBC,EAAUC,EAAS,CAC1D,OAAO,IAAIE,GAAuBL,EAAM,WAAWE,EAAUC,CAAO,EAAGA,CAAO,CAClF,EAFqB,gBAIrBH,EAAM,gBAAkB,GAIxBA,EAAM,uBAAyBI,GAC/BJ,EAAM,uBAAyBK,GAC/BL,EAAM,SAAWK,GAAuB,UAAU,OACtD,EAIA,SAASD,GAAuBE,EAAMH,EAAS,CAC3C,KAAK,KAAOG,EACZH,EAAUA,GAAW,CAAC,EACtBA,EAAQ,cAAgB,GACxBJ,IAAU,KAAK,KAAMI,CAAO,CAChC,CALSF,EAAAG,GAAA,0BAOTA,GAAuB,UAAY,OAAO,OAAOL,IAAU,UAAW,CAClE,YAAa,CAAE,MAAOK,EAAuB,CACjD,CAAC,EAEDA,GAAuB,UAAU,WAAa,SAASG,EAAOL,EAAUM,EAAM,CAC1E,GAAI,OAAOD,GAAS,SAChB,OAAOC,EAAK,IAAI,MAAM,mDAAmD,CAAC,EAC9E,GAAI,CACA,IAAIC,EAAM,KAAK,KAAK,MAAMF,CAAK,EAC3BE,GAAOA,EAAI,QAAQ,KAAK,KAAKA,CAAG,EACpCD,EAAK,CACT,OACOE,EAAG,CACNF,EAAKE,CAAC,CACV,CACJ,EAEAN,GAAuB,UAAU,OAAS,SAASI,EAAM,CACrD,GAAI,CACA,IAAIC,EAAM,KAAK,KAAK,IAAI,EACpBA,GAAOA,EAAI,QAAQ,KAAK,KAAKA,CAAG,EACpCD,EAAK,CACT,OACOE,EAAG,CACNF,EAAKE,CAAC,CACV,CACJ,EAEAN,GAAuB,UAAU,QAAU,SAASO,EAAI,CACpD,IAAIC,EAAS,CAAC,EACd,YAAK,GAAG,QAASD,CAAE,EACnB,KAAK,GAAG,OAAQ,SAASJ,EAAO,CAAEK,EAAO,KAAKL,CAAK,CAAG,CAAC,EACvD,KAAK,GAAG,MAAO,UAAW,CACtBI,EAAG,KAAMb,IAAO,OAAOc,CAAM,CAAC,CAClC,CAAC,EACM,IACX,EAIA,SAASP,GAAuBC,EAAMH,EAAS,CAC3C,KAAK,KAAOG,EACZH,EAAUA,GAAW,CAAC,EACtBA,EAAQ,SAAW,KAAK,SAAW,OACnCJ,IAAU,KAAK,KAAMI,CAAO,CAChC,CALSF,EAAAI,GAAA,0BAOTA,GAAuB,UAAY,OAAO,OAAON,IAAU,UAAW,CAClE,YAAa,CAAE,MAAOM,EAAuB,CACjD,CAAC,EAEDA,GAAuB,UAAU,WAAa,SAASE,EAAOL,EAAUM,EAAM,CAC1E,GAAI,CAACV,IAAO,SAASS,CAAK,EACtB,OAAOC,EAAK,IAAI,MAAM,mDAAmD,CAAC,EAC9E,GAAI,CACA,IAAIC,EAAM,KAAK,KAAK,MAAMF,CAAK,EAC3BE,GAAOA,EAAI,QAAQ,KAAK,KAAKA,EAAK,KAAK,QAAQ,EACnDD,EAAK,CACT,OACOE,EAAG,CACNF,EAAKE,CAAC,CACV,CACJ,EAEAL,GAAuB,UAAU,OAAS,SAASG,EAAM,CACrD,GAAI,CACA,IAAIC,EAAM,KAAK,KAAK,IAAI,EACpBA,GAAOA,EAAI,QAAQ,KAAK,KAAKA,EAAK,KAAK,QAAQ,EACnDD,EAAK,CACT,OACOE,EAAG,CACNF,EAAKE,CAAC,CACV,CACJ,EAEAL,GAAuB,UAAU,QAAU,SAASM,EAAI,CACpD,IAAIF,EAAM,GACV,YAAK,GAAG,QAASE,CAAE,EACnB,KAAK,GAAG,OAAQ,SAASJ,EAAO,CAAEE,GAAOF,CAAO,CAAC,EACjD,KAAK,GAAG,MAAO,UAAW,CACtBI,EAAG,KAAMF,CAAG,CAChB,CAAC,EACM,IACX,ICvHA,IAAAI,IAAAC,EAAA,CAAAC,IAAAC,MAAA,cACA,IAAIC,GAAS,QAAQ,QAAQ,EAAE,OAK/BD,IAAO,QAAU,SAAUE,EAAO,CAC9B,IAAIC,EAAW,OAKfD,EAAM,+BAAiC,EAAED,GAAO,MAAQ,IAAIA,GAAO,CAAC,YAAa,YAEjFC,EAAM,oBAAsBE,EAAA,UAA+B,CACvD,GAAI,CAAAD,EAGJ,IAFAA,EAAW,CAAC,EAER,CAACD,EAAM,+BAAgC,CACvC,QAAQ,MAAM,qGAAqG,EACnH,QAAQ,MAAM,sFAAsF,EACpG,MACJ,CAEA,IAAIG,EAAsB,CACtB,IAAO,GAAM,KAAQ,GAAM,QAAS,GAAM,MAAS,GAAM,OAAU,GACnE,OAAU,GAAM,KAAQ,GAAM,QAAS,GAAM,QAAW,GAAM,WAAY,EAC9E,EAEAJ,GAAO,iBAAmB,SAASK,EAAK,CACpC,OAAOA,GAAOD,EAAoBC,EAAI,YAAY,CAAC,CACvD,EAGA,IAAIC,EAAa,QAAQ,QAAQ,EAAE,WA2InC,GAzIAJ,EAAS,mBAAqBI,EAAW,UAAU,SACnDA,EAAW,UAAU,SAAW,SAASC,EAAUC,EAAOC,EAAK,CAI3D,OAHAF,EAAW,OAAOA,GAAY,MAAM,EAAE,YAAY,EAG9CP,GAAO,iBAAiBO,CAAQ,EACzBL,EAAS,mBAAmB,KAAK,KAAMK,EAAUC,EAAOC,CAAG,GAGlE,OAAOD,EAAS,MAAaA,EAAQ,GACrC,OAAOC,EAAO,MAAaA,EAAM,KAAK,QACnCR,EAAM,OAAO,KAAK,MAAMO,EAAOC,CAAG,EAAGF,CAAQ,EACxD,EAEAL,EAAS,gBAAkBI,EAAW,UAAU,MAChDA,EAAW,UAAU,MAAQ,SAASI,EAAQC,EAAQC,EAAQL,EAAU,CAGpE,GAAI,SAASI,CAAM,EACV,SAASC,CAAM,IAChBL,EAAWK,EACXA,EAAS,YAEV,CACH,IAAIC,EAAON,EACXA,EAAWI,EACXA,EAASC,EACTA,EAASC,CACb,CAEAF,EAAS,CAACA,GAAU,EACpB,IAAIG,EAAY,KAAK,OAASH,EAY9B,GAXKC,GAGDA,EAAS,CAACA,EACNA,EAASE,IACTF,EAASE,IAJbF,EAASE,EAObP,EAAW,OAAOA,GAAY,MAAM,EAAE,YAAY,EAG9CP,GAAO,iBAAiBO,CAAQ,EAChC,OAAOL,EAAS,gBAAgB,KAAK,KAAMQ,EAAQC,EAAQC,EAAQL,CAAQ,EAE/E,GAAIG,EAAO,OAAS,IAAME,EAAS,GAAKD,EAAS,GAC7C,MAAM,IAAI,WAAW,uCAAuC,EAGhE,IAAII,EAAMd,EAAM,OAAOS,EAAQH,CAAQ,EACvC,OAAIQ,EAAI,OAASH,IAAQA,EAASG,EAAI,QACtCA,EAAI,KAAK,KAAMJ,EAAQ,EAAGC,CAAM,EACzBA,CACX,EAIAV,EAAS,iBAAmBF,GAAO,WACnCA,GAAO,WAAa,SAASO,EAAU,CACnC,OAAOP,GAAO,iBAAiBO,CAAQ,GAAKN,EAAM,eAAeM,CAAQ,CAC7E,EAEAL,EAAS,iBAAmBF,GAAO,WACnCA,GAAO,WAAaM,EAAW,WAAa,SAASU,EAAKT,EAAU,CAIhE,OAHAA,EAAW,OAAOA,GAAY,MAAM,EAAE,YAAY,EAG9CP,GAAO,iBAAiBO,CAAQ,EACzBL,EAAS,iBAAiB,KAAK,KAAMc,EAAKT,CAAQ,EAGtDN,EAAM,OAAOe,EAAKT,CAAQ,EAAE,MACvC,EAEAL,EAAS,eAAiBF,GAAO,UAAU,SAC3CA,GAAO,UAAU,SAAW,SAASO,EAAUC,EAAOC,EAAK,CAIvD,OAHAF,EAAW,OAAOA,GAAY,MAAM,EAAE,YAAY,EAG9CP,GAAO,iBAAiBO,CAAQ,EACzBL,EAAS,eAAe,KAAK,KAAMK,EAAUC,EAAOC,CAAG,GAG9D,OAAOD,EAAS,MAAaA,EAAQ,GACrC,OAAOC,EAAO,MAAaA,EAAM,KAAK,QACnCR,EAAM,OAAO,KAAK,MAAMO,EAAOC,CAAG,EAAGF,CAAQ,EACxD,EAEAL,EAAS,YAAcF,GAAO,UAAU,MACxCA,GAAO,UAAU,MAAQ,SAASU,EAAQC,EAAQC,EAAQL,EAAU,CAChE,IAAIU,EAAUN,EAAQO,EAAUN,EAAQO,EAAYZ,EAGpD,GAAI,SAASI,CAAM,EACV,SAASC,CAAM,IAChBL,EAAWK,EACXA,EAAS,YAEV,CACH,IAAIC,EAAON,EACXA,EAAWI,EACXA,EAASC,EACTA,EAASC,CACb,CAKA,GAHAN,EAAW,OAAOA,GAAY,MAAM,EAAE,YAAY,EAG9CP,GAAO,iBAAiBO,CAAQ,EAChC,OAAOL,EAAS,YAAY,KAAK,KAAMQ,EAAQO,EAASC,EAASC,CAAS,EAE9ER,EAAS,CAACA,GAAU,EACpB,IAAIG,EAAY,KAAK,OAASH,EAU9B,GATKC,GAGDA,EAAS,CAACA,EACNA,EAASE,IACTF,EAASE,IAJbF,EAASE,EAQTJ,EAAO,OAAS,IAAME,EAAS,GAAKD,EAAS,GAC7C,MAAM,IAAI,WAAW,uCAAuC,EAGhE,IAAII,EAAMd,EAAM,OAAOS,EAAQH,CAAQ,EACvC,OAAIQ,EAAI,OAASH,IAAQA,EAASG,EAAI,QACtCA,EAAI,KAAK,KAAMJ,EAAQ,EAAGC,CAAM,EACzBA,CAGX,EAIIX,EAAM,gBAAiB,CACvB,IAAImB,EAAW,QAAQ,QAAQ,EAAE,SAEjClB,EAAS,oBAAsBkB,EAAS,UAAU,YAClDA,EAAS,UAAU,YAAcjB,EAAA,SAAqBE,EAAKgB,EAAS,CAGhE,KAAK,eAAe,QAAUpB,EAAM,WAAWI,EAAKgB,CAAO,EAC3D,KAAK,eAAe,SAAWhB,CACnC,EALiC,eAOjCe,EAAS,UAAU,QAAUnB,EAAM,QACvC,EACJ,EA5K4B,uBA+K5BA,EAAM,wBAA0BE,EAAA,UAAmC,CAC/D,GAAKF,EAAM,+BAEX,IAAI,CAACC,EACD,MAAM,IAAI,MAAM,wGAAwG,EAE5H,OAAOF,GAAO,iBAEd,IAAIM,EAAa,QAAQ,QAAQ,EAAE,WAUnC,GARAA,EAAW,UAAU,SAAWJ,EAAS,mBACzCI,EAAW,UAAU,MAAQJ,EAAS,gBAEtCF,GAAO,WAAaE,EAAS,iBAC7BF,GAAO,WAAaE,EAAS,iBAC7BF,GAAO,UAAU,SAAWE,EAAS,eACrCF,GAAO,UAAU,MAAQE,EAAS,YAE9BD,EAAM,gBAAiB,CACvB,IAAImB,EAAW,QAAQ,QAAQ,EAAE,SAEjCA,EAAS,UAAU,YAAclB,EAAS,oBAC1C,OAAOkB,EAAS,UAAU,OAC9B,CAEAlB,EAAW,OACf,EA1BgC,0BA2BpC,ICxNA,IAAAoB,IAAAC,EAAA,CAAAC,IAAAC,MAAA,cAIA,IAAIC,IAAS,KAAwB,OAEjCC,IAAc,MACdC,GAAQH,IAAO,QAInBG,GAAM,UAAY,KAGlBA,GAAM,mBAAqB,SAC3BA,GAAM,sBAAwB,IAG9BA,GAAM,OAASC,EAAA,SAAgBC,EAAKC,EAAUC,EAAS,CACnDF,EAAM,IAAMA,GAAO,IAEnB,IAAIG,EAAUL,GAAM,WAAWG,EAAUC,CAAO,EAE5CE,EAAMD,EAAQ,MAAMH,CAAG,EACvBK,EAAQF,EAAQ,IAAI,EAExB,OAAQE,GAASA,EAAM,OAAS,EAAKT,IAAO,OAAO,CAACQ,EAAKC,CAAK,CAAC,EAAID,CACvE,EATe,UAWfN,GAAM,OAASC,EAAA,SAAgBO,EAAKL,EAAUC,EAAS,CAC/C,OAAOI,GAAQ,WACVR,GAAM,oBACP,QAAQ,MAAM,0IAA0I,EACxJA,GAAM,kBAAoB,IAG9BQ,EAAMV,IAAO,KAAK,IAAMU,GAAO,IAAK,QAAQ,GAGhD,IAAIC,EAAUT,GAAM,WAAWG,EAAUC,CAAO,EAE5CE,EAAMG,EAAQ,MAAMD,CAAG,EACvBD,EAAQE,EAAQ,IAAI,EAExB,OAAOF,EAASD,EAAMC,EAASD,CACnC,EAhBe,UAkBfN,GAAM,eAAiBC,EAAA,SAAwBS,EAAK,CAChD,GAAI,CACA,OAAAV,GAAM,SAASU,CAAG,EACX,EACX,MAAY,CACR,MAAO,EACX,CACJ,EAPuB,kBAUvBV,GAAM,WAAaA,GAAM,OACzBA,GAAM,aAAeA,GAAM,OAG3BA,GAAM,gBAAkB,CAAC,EACzBA,GAAM,SAAWC,EAAA,SAAkBE,EAAU,CACpCH,GAAM,YACPA,GAAM,UAAY,OAOtB,QAJIU,EAAMV,GAAM,sBAAsBG,CAAQ,EAG1CQ,EAAe,CAAC,IACP,CACT,IAAIC,EAAQZ,GAAM,gBAAgBU,CAAG,EACrC,GAAIE,EACA,OAAOA,EAEX,IAAIC,EAAWb,GAAM,UAAUU,CAAG,EAElC,OAAQ,OAAOG,EAAU,CACrB,IAAK,SACDH,EAAMG,EACN,MAEJ,IAAK,SACD,QAASC,KAAOD,EACZF,EAAaG,CAAG,EAAID,EAASC,CAAG,EAE/BH,EAAa,eACdA,EAAa,aAAeD,GAEhCA,EAAMG,EAAS,KACf,MAEJ,IAAK,WACD,OAAKF,EAAa,eACdA,EAAa,aAAeD,GAIhCE,EAAQ,IAAIC,EAASF,EAAcX,EAAK,EAExCA,GAAM,gBAAgBW,EAAa,YAAY,EAAIC,EAC5CA,EAEX,QACI,MAAM,IAAI,MAAM,6BAA+BT,EAAW,oBAAoBO,EAAI,IAAI,CAC9F,CACJ,CACJ,EA9CiB,YAgDjBV,GAAM,sBAAwB,SAASG,EAAU,CAE7C,OAAQ,GAAGA,GAAU,YAAY,EAAE,QAAQ,qBAAsB,EAAE,CACvE,EAEAH,GAAM,WAAaC,EAAA,SAAoBE,EAAUC,EAAS,CACtD,IAAIQ,EAAQZ,GAAM,SAASG,CAAQ,EAC/BE,EAAU,IAAIO,EAAM,QAAQR,EAASQ,CAAK,EAE9C,OAAIA,EAAM,UAAYR,GAAWA,EAAQ,SACrCC,EAAU,IAAIN,IAAY,WAAWM,EAASD,CAAO,GAElDC,CACX,EARmB,cAUnBL,GAAM,WAAaC,EAAA,SAAoBE,EAAUC,EAAS,CACtD,IAAIQ,EAAQZ,GAAM,SAASG,CAAQ,EAC/BM,EAAU,IAAIG,EAAM,QAAQR,EAASQ,CAAK,EAE9C,OAAIA,EAAM,UAAY,EAAER,GAAWA,EAAQ,WAAa,MACpDK,EAAU,IAAIV,IAAY,SAASU,EAASL,CAAO,GAEhDK,CACX,EARmB,cAYnB,IAAIM,IAAU,OAAO,QAAY,KAAe,QAAQ,UAAY,QAAQ,SAAS,KACjFA,MAGIC,IAAaD,IAAQ,MAAM,GAAG,EAAE,IAAI,MAAM,GAC1CC,IAAW,CAAC,EAAI,GAAKA,IAAW,CAAC,GAAK,KACtC,MAAqBhB,EAAK,EAI9B,MAAyBA,EAAK,GAN1B,IAAAgB,MC7IR,IAAAC,IAAAC,EAAA,CAAAC,IAAAC,MAAA,cAcA,IAAIC,IAAaC,IAAqB,EAClCC,IAAQ,MACRC,GAAc,MACdC,IAAQ,MACRC,IAAS,MAObN,IAAO,QAAUO,IAOjB,IAAIC,IAAgC,6BASpC,SAASC,IAAYC,EAAU,CAC7B,GAAI,CAACA,EAAU,OAAO,KAEtB,GAAI,CACF,OAAOL,IAAM,WAAWK,CAAQ,CAClC,OAAS,EAAG,CAEV,MAAKF,IAA8B,KAAK,EAAE,OAAO,EAG3CJ,GAAY,IAAK,iCAAkC,CACvD,SAAUM,EACV,KAAM,sBACR,CAAC,EANyD,CAO5D,CACF,CAfSC,EAAAF,IAAA,cA0BT,SAASF,IAAYK,EAAQC,EAASC,EAAU,CAC9C,IAAIC,EAAOD,EACPE,EAAOH,GAAW,CAAC,EAGvB,GAAID,IAAW,OACb,MAAM,IAAI,UAAU,6BAA6B,EAC5C,GAAI,OAAOA,GAAW,UAAYA,IAAW,MAAQ,OAAOA,EAAO,IAAO,WAC/E,MAAM,IAAI,UAAU,kCAAkC,EAgBxD,IAbIC,IAAY,IAAQ,OAAOA,GAAY,YAEzCG,EAAO,CACL,SAAUH,CACZ,GAGE,OAAOA,GAAY,aACrBE,EAAOF,EACPG,EAAO,CAAC,GAIND,IAAS,QAAa,OAAOA,GAAS,WACxC,MAAM,IAAI,UAAU,sCAAsC,EAI5D,GAAI,CAACA,GAAQ,CAAC,OAAO,QACnB,MAAM,IAAI,UAAU,+BAA+B,EAIrD,IAAIL,EAAWM,EAAK,WAAa,GAC7BA,EAAK,SACL,QAGAC,EAAQd,IAAM,MAAMa,EAAK,KAAK,EAG9BE,EAASF,EAAK,QAAU,MAAQ,CAAC,MAAMA,EAAK,MAAM,EAClD,SAASA,EAAK,OAAQ,EAAE,EACxB,KAEJ,OAAID,EAEKI,IAAWP,EAAQF,EAAUQ,EAAQD,EAAOG,IAAKL,CAAI,CAAC,EAGxD,IAAI,QAAQJ,EAAA,SAAmBU,EAASC,EAAQ,CACrDH,IAAWP,EAAQF,EAAUQ,EAAQD,EAAON,EAAA,SAAiBY,EAAKC,EAAK,CACrE,GAAID,EAAK,OAAOD,EAAOC,CAAG,EAC1BF,EAAQG,CAAG,CACb,EAH4C,SAG3C,CACH,EALmB,WAKlB,CACH,CAzDSb,EAAAJ,IAAA,cAkET,SAASkB,IAAMb,EAAQ,CAErBN,IAAOM,CAAM,EAGT,OAAOA,EAAO,OAAU,YAC1BA,EAAO,MAAM,CAEjB,CARSD,EAAAc,IAAA,QAqBT,SAASN,IAAYP,EAAQF,EAAUQ,EAAQD,EAAOH,EAAU,CAC9D,IAAIY,EAAW,GACXC,EAAO,GAKX,GAAIV,IAAU,MAAQC,IAAW,MAAQA,EAASD,EAChD,OAAOF,EAAKX,GAAY,IAAK,2BAA4B,CACvD,SAAUc,EACV,OAAQA,EACR,MAAOD,EACP,KAAM,kBACR,CAAC,CAAC,EAQJ,IAAIW,EAAQhB,EAAO,eACnB,GAAIA,EAAO,UAAagB,IAAUA,EAAM,UAAYA,EAAM,SAExD,OAAOb,EAAKX,GAAY,IAAK,oCAAqC,CAChE,KAAM,qBACR,CAAC,CAAC,EAGJ,GAAI,OAAOQ,EAAO,SAAa,KAAe,CAACA,EAAO,SACpD,OAAOG,EAAKX,GAAY,IAAK,yBAA0B,CACrD,KAAM,qBACR,CAAC,CAAC,EAGJ,IAAIyB,EAAW,EACXC,EAEJ,GAAI,CACFA,EAAUrB,IAAWC,CAAQ,CAC/B,OAASa,EAAK,CACZ,OAAOR,EAAKQ,CAAG,CACjB,CAEA,IAAIQ,EAASD,EACT,GACA,CAAC,EAGLlB,EAAO,GAAG,UAAWoB,CAAS,EAC9BpB,EAAO,GAAG,QAASqB,CAAO,EAC1BrB,EAAO,GAAG,OAAQsB,CAAM,EACxBtB,EAAO,GAAG,MAAOuB,CAAK,EACtBvB,EAAO,GAAG,QAASuB,CAAK,EAGxBR,EAAO,GAEP,SAASZ,GAAQ,CAIf,QAHIqB,EAAO,IAAI,MAAM,UAAU,MAAM,EAG5BC,EAAI,EAAGA,EAAID,EAAK,OAAQC,IAC/BD,EAAKC,CAAC,EAAI,UAAUA,CAAC,EAIvBX,EAAW,GAEPC,EACF,QAAQ,SAASW,CAAc,EAE/BA,EAAe,EAGjB,SAASA,GAAkB,CACzBL,EAAQ,EAEJG,EAAK,CAAC,GAERX,IAAKb,CAAM,EAGbE,EAAS,MAAM,KAAMsB,CAAI,CAC3B,CATSzB,EAAA2B,EAAA,iBAUX,CA3BS3B,EAAAI,EAAA,QA6BT,SAASiB,GAAa,CAChBN,GAEJX,EAAKX,GAAY,IAAK,kBAAmB,CACvC,KAAM,eACN,SAAUc,EACV,OAAQA,EACR,SAAUW,EACV,KAAM,iBACR,CAAC,CAAC,CACJ,CAVSlB,EAAAqB,EAAA,aAYT,SAASE,EAAQK,EAAO,CAClBb,IAEJG,GAAYU,EAAM,OAEdtB,IAAU,MAAQY,EAAWZ,EAC/BF,EAAKX,GAAY,IAAK,2BAA4B,CAChD,MAAOa,EACP,SAAUY,EACV,KAAM,kBACR,CAAC,CAAC,EACOC,EACTC,GAAUD,EAAQ,MAAMS,CAAK,EAE7BR,EAAO,KAAKQ,CAAK,EAErB,CAhBS5B,EAAAuB,EAAA,UAkBT,SAASC,EAAOZ,EAAK,CACnB,GAAI,CAAAG,EACJ,IAAIH,EAAK,OAAOR,EAAKQ,CAAG,EAExB,GAAIL,IAAW,MAAQW,IAAaX,EAClCH,EAAKX,GAAY,IAAK,4CAA6C,CACjE,SAAUc,EACV,OAAQA,EACR,SAAUW,EACV,KAAM,sBACR,CAAC,CAAC,MACG,CACL,IAAIW,EAASV,EACTC,GAAUD,EAAQ,IAAI,GAAK,IAC3B,OAAO,OAAOC,CAAM,EACxBhB,EAAK,KAAMyB,CAAM,CACnB,EACF,CAjBS7B,EAAAwB,EAAA,SAmBT,SAASF,GAAW,CAClBF,EAAS,KAETnB,EAAO,eAAe,UAAWoB,CAAS,EAC1CpB,EAAO,eAAe,OAAQsB,CAAM,EACpCtB,EAAO,eAAe,MAAOuB,CAAK,EAClCvB,EAAO,eAAe,QAASuB,CAAK,EACpCvB,EAAO,eAAe,QAASqB,CAAO,CACxC,CARStB,EAAAsB,EAAA,UASX,CAjJStB,EAAAQ,IAAA,cAwJT,SAASjB,KAAwB,CAC/B,GAAI,CACF,MAAO,SAAQ,aAAa,CAC9B,MAAY,CACV,MAAO,CAAC,CACV,CACF,CANSS,EAAAT,IAAA,wBAcT,SAASkB,IAAMqB,EAAI,CACjB,IAAIC,EAQJ,OALIzC,IAAW,gBACbyC,EAAM,IAAIzC,IAAW,cAAcwC,EAAG,MAAQ,oBAAoB,GAIhE,CAACC,GAAO,CAACA,EAAI,gBACRD,EAIFC,EAAI,gBAAgB,KAAKA,EAAKD,EAAI,IAAI,CAC/C,CAfS9B,EAAAS,IAAA,UChUT,IAAAuB,IAAAC,EAAA,CAAAC,IAAAC,MAAA,CACA,IAAIC,IAAO,QAAQ,MAAM,EAEzBD,IAAO,QAAUE,IAEjB,SAASA,IAAQC,EAAQC,EAAS,CAChC,GAAI,CAACD,EACH,MAAM,IAAI,UAAU,6BAA6B,EAGnDC,EAAUA,GAAW,CAAC,EAEtB,IAAIC,EAAWD,EAAQ,UACjBD,EAAO,SAAWA,EAAO,QAAQ,kBAAkB,GACpD,WAEDG,EACJ,OAAQD,EAAU,CAClB,IAAK,OACL,IAAK,UACH,OAAOD,EAAQ,OACf,OAAOA,EAAQ,SACfE,EAAgBL,IAAK,YAAYG,CAAO,EACxC,MACF,IAAK,KACCH,IAAK,yBACPK,EAAgBL,IAAK,uBAAuBG,EAAQ,MAAM,GAE5D,MACF,IAAK,WACH,OAAOD,CACT,CAEA,GAAI,CAACG,EAAe,CAClB,IAAIC,EAAM,IAAI,MAAM,iCAAmCF,CAAQ,EAC/D,MAAAE,EAAI,OAAS,IACPA,CACR,CAEA,OAAOJ,EAAO,KAAKG,CAAa,CAClC,CAnCSE,EAAAN,IAAA,aCLT,IAAAO,IAAAC,EAAAC,IAAA,cAGA,IAAMC,IAAY,CACd,UAAW,gJACf,EAGAD,GAAQ,MAAQ,SAAUE,KAASC,EAAM,CAIrC,IAAMC,EAAe,OAAOD,EAAK,CAAC,GAAM,UAAYA,EAAK,CAAC,EACpDE,EAAUF,EAAK,OAAS,GAAK,CAACC,EAAeD,EAAK,CAAC,EAAI,OACvDG,EAAWH,EAAK,OAAS,GAAKA,EAAK,CAAC,GAAMC,GAAgB,CAAC,EAI3DG,EAAM,KAAK,MAAML,EAAMG,CAAO,EAkBpC,OAdIC,EAAQ,cAAgB,UAMxB,CAACC,GACD,OAAOA,GAAQ,UAOf,CAACL,EAAK,MAAMD,IAAU,SAAS,GAMnCD,GAAQ,KAAKO,EAAKD,CAAO,EAElBC,CACX,EAGAP,GAAQ,KAAO,SAAUO,EAAKD,EAAU,CAAC,EAAG,CAExC,IAAIE,EAAO,CAACD,CAAG,EAEf,KAAOC,EAAK,QAAQ,CAChB,IAAMC,EAAQD,EACdA,EAAO,CAAC,EAER,QAAWE,KAAQD,EAAO,CACtB,GAAI,OAAO,UAAU,eAAe,KAAKC,EAAM,WAAW,EAAG,CACzD,GAAIJ,EAAQ,cAAgB,SACxB,MAAM,IAAI,YAAY,8CAA8C,EAGxE,OAAOI,EAAK,SAChB,CAEA,QAAWC,KAAOD,EAAM,CACpB,IAAME,EAAQF,EAAKC,CAAG,EAClBC,GACA,OAAOA,GAAU,UAEjBJ,EAAK,KAAKE,EAAKC,CAAG,CAAC,CAE3B,CACJ,CACJ,CACJ,EAGAX,GAAQ,UAAY,SAAUE,EAAMG,EAAS,CAEzC,GAAI,CACA,OAAOL,GAAQ,MAAME,EAAMG,CAAO,CACtC,MACoB,CAChB,OAAO,IACX,CACJ,ICtFA,IAAAQ,IAAAC,EAAAC,KAAA,cAMAA,IAAQ,MAAQ,SAASC,EAAM,CAC7B,IAAMC,EAAU,CAAC,EACjBD,EAAOA,GAAQ,CAAC,EAChB,QAAWE,KAAOF,EAChBC,EAAQC,CAAG,EAAIF,EAAKE,CAAG,EAEzB,OAAOD,CACT,ICbA,IAAAE,IAAAC,EAAA,CAAAC,IAAAC,MAAA,cAMA,IAAMC,IAAM,MACNC,IAAU,MACVC,IAAS,MACTC,IAAQ,MAIRC,IAAgB,8BActBL,IAAO,QAAU,eAAeM,EAAKC,EAAM,CACzCD,EAAMA,EAAI,KAAOA,EACjBC,EAAOH,IAAM,MAAMG,CAAI,EAGvB,IAAMC,EAAMF,EAAI,QAAQ,gBAAgB,EAClCG,EAAWH,EAAI,QAAQ,kBAAkB,GAAK,WAChDE,GAAOC,IAAa,aAAYF,EAAK,OAAS,CAAC,CAACC,GACpDD,EAAK,SAAWA,EAAK,UAAY,OACjCA,EAAK,MAAQA,EAAK,OAAS,MAC3B,IAAMG,EAASH,EAAK,SAAW,GACzBI,EAAcJ,EAAK,kBAAoB,QAEvCK,EAAM,MAAMX,IAAIC,IAAQI,CAAG,EAAGC,CAAI,EACxC,GAAI,CACF,IAAMM,EAASC,EAAMF,CAAG,EACxB,OAAOL,EAAK,cAAgB,CAAE,OAAAM,EAAQ,IAAKD,CAAI,EAAIC,CACrD,OAASE,EAAK,CACZ,MAAAA,EAAI,OAAS,IACbA,EAAI,KAAOH,EACLG,CACR,CAEA,SAASD,EAAMF,EAAK,CAClB,GAAI,CAACF,EAAQ,OAAOE,GAAMT,IAAO,MAAMS,EAAK,CAAE,YAAAD,CAAY,CAAC,EAE3D,GAAI,CAACC,EAAK,MAAO,CAAC,EAElB,GAAI,CAACP,IAAc,KAAKO,CAAG,EACzB,MAAM,IAAI,YAAY,8CAA8C,EAEtE,OAAOT,IAAO,MAAMS,EAAK,CAAE,YAAAD,CAAY,CAAC,CAC1C,CATSK,EAAAF,EAAA,QAUX,IC5DA,IAAAG,IAAAC,EAAA,CAAAC,IAAAC,MAAA,cAEA,IAAIC,IAAU,OAAO,UAAU,QAC3BC,IAAkB,OAElBC,IAAS,CACT,QAAS,UACT,QAAS,SACb,EAEAH,IAAO,QAAU,CACb,QAAWG,IAAO,QAClB,WAAY,CACR,QAASC,EAAA,SAAUC,EAAO,CACtB,OAAOJ,IAAQ,KAAKI,EAAOH,IAAiB,GAAG,CACnD,EAFS,WAGT,QAASE,EAAA,SAAUC,EAAO,CACtB,OAAO,OAAOA,CAAK,CACvB,EAFS,UAGb,EACA,QAASF,IAAO,QAChB,QAASA,IAAO,OACpB,ICtBA,IAAAG,IAAAC,EAAA,CAAAC,IAAAC,MAAA,cAEA,IAAIC,IAAU,MAEVC,IAAM,OAAO,UAAU,eACvBC,GAAU,MAAM,QAEhBC,IAAY,UAAY,CAExB,QADIC,EAAQ,CAAC,EACJC,EAAI,EAAGA,EAAI,IAAK,EAAEA,EACvBD,EAAM,KAAK,MAAQC,EAAI,GAAK,IAAM,IAAMA,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC,EAGzE,OAAOD,CACX,GAAE,EAEEE,IAAeC,EAAA,SAAsBC,EAAO,CAC5C,KAAOA,EAAM,OAAS,GAAG,CACrB,IAAIC,EAAOD,EAAM,IAAI,EACjBE,EAAMD,EAAK,IAAIA,EAAK,IAAI,EAE5B,GAAIP,GAAQQ,CAAG,EAAG,CAGd,QAFIC,EAAY,CAAC,EAERC,EAAI,EAAGA,EAAIF,EAAI,OAAQ,EAAEE,EAC1B,OAAOF,EAAIE,CAAC,EAAM,KAClBD,EAAU,KAAKD,EAAIE,CAAC,CAAC,EAI7BH,EAAK,IAAIA,EAAK,IAAI,EAAIE,CAC1B,CACJ,CACJ,EAjBmB,gBAmBfE,IAAgBN,EAAA,SAAuBO,EAAQC,EAAS,CAExD,QADIL,EAAMK,GAAWA,EAAQ,aAAe,OAAO,OAAO,IAAI,EAAI,CAAC,EAC1DV,EAAI,EAAGA,EAAIS,EAAO,OAAQ,EAAET,EAC7B,OAAOS,EAAOT,CAAC,EAAM,MACrBK,EAAIL,CAAC,EAAIS,EAAOT,CAAC,GAIzB,OAAOK,CACX,EAToB,iBAWhBM,IAAQT,EAAA,SAASS,EAAMC,EAAQH,EAAQC,EAAS,CAEhD,GAAI,CAACD,EACD,OAAOG,EAGX,GAAI,OAAOH,GAAW,SAAU,CAC5B,GAAIZ,GAAQe,CAAM,EACdA,EAAO,KAAKH,CAAM,UACXG,GAAU,OAAOA,GAAW,UAC9BF,IAAYA,EAAQ,cAAgBA,EAAQ,kBAAqB,CAACd,IAAI,KAAK,OAAO,UAAWa,CAAM,KACpGG,EAAOH,CAAM,EAAI,QAGrB,OAAO,CAACG,EAAQH,CAAM,EAG1B,OAAOG,CACX,CAEA,GAAI,CAACA,GAAU,OAAOA,GAAW,SAC7B,MAAO,CAACA,CAAM,EAAE,OAAOH,CAAM,EAGjC,IAAII,EAAcD,EAKlB,OAJIf,GAAQe,CAAM,GAAK,CAACf,GAAQY,CAAM,IAClCI,EAAcL,IAAcI,EAAQF,CAAO,GAG3Cb,GAAQe,CAAM,GAAKf,GAAQY,CAAM,GACjCA,EAAO,QAAQ,SAAUL,EAAMJ,EAAG,CAC9B,GAAIJ,IAAI,KAAKgB,EAAQZ,CAAC,EAAG,CACrB,IAAIc,EAAaF,EAAOZ,CAAC,EACrBc,GAAc,OAAOA,GAAe,UAAYV,GAAQ,OAAOA,GAAS,SACxEQ,EAAOZ,CAAC,EAAIW,EAAMG,EAAYV,EAAMM,CAAO,EAE3CE,EAAO,KAAKR,CAAI,CAExB,MACIQ,EAAOZ,CAAC,EAAII,CAEpB,CAAC,EACMQ,GAGJ,OAAO,KAAKH,CAAM,EAAE,OAAO,SAAUM,EAAKC,EAAK,CAClD,IAAIC,EAAQR,EAAOO,CAAG,EAEtB,OAAIpB,IAAI,KAAKmB,EAAKC,CAAG,EACjBD,EAAIC,CAAG,EAAIL,EAAMI,EAAIC,CAAG,EAAGC,EAAOP,CAAO,EAEzCK,EAAIC,CAAG,EAAIC,EAERF,CACX,EAAGF,CAAW,CAClB,EAvDY,SAyDRK,IAAShB,EAAA,SAA4BU,EAAQH,EAAQ,CACrD,OAAO,OAAO,KAAKA,CAAM,EAAE,OAAO,SAAUM,EAAKC,EAAK,CAClD,OAAAD,EAAIC,CAAG,EAAIP,EAAOO,CAAG,EACdD,CACX,EAAGH,CAAM,CACb,EALa,sBAOTO,IAASjB,EAAA,SAAUkB,EAAKC,EAASC,EAAS,CAC1C,IAAIC,EAAiBH,EAAI,QAAQ,MAAO,GAAG,EAC3C,GAAIE,IAAY,aAEZ,OAAOC,EAAe,QAAQ,iBAAkB,QAAQ,EAG5D,GAAI,CACA,OAAO,mBAAmBA,CAAc,CAC5C,MAAY,CACR,OAAOA,CACX,CACJ,EAZa,UAcTC,IAAQ,KAIRC,IAASvB,EAAA,SAAgBkB,EAAKM,EAAgBJ,EAASK,EAAMC,EAAQ,CAGrE,GAAIR,EAAI,SAAW,EACf,OAAOA,EAGX,IAAIS,EAAST,EAOb,GANI,OAAOA,GAAQ,SACfS,EAAS,OAAO,UAAU,SAAS,KAAKT,CAAG,EACpC,OAAOA,GAAQ,WACtBS,EAAS,OAAOT,CAAG,GAGnBE,IAAY,aACZ,OAAO,OAAOO,CAAM,EAAE,QAAQ,kBAAmB,SAAUC,EAAI,CAC3D,MAAO,SAAW,SAASA,EAAG,MAAM,CAAC,EAAG,EAAE,EAAI,KAClD,CAAC,EAIL,QADIC,EAAM,GACDxB,EAAI,EAAGA,EAAIsB,EAAO,OAAQtB,GAAKiB,IAAO,CAI3C,QAHIQ,EAAUH,EAAO,QAAUL,IAAQK,EAAO,MAAMtB,EAAGA,EAAIiB,GAAK,EAAIK,EAChEI,EAAM,CAAC,EAEFjC,EAAI,EAAGA,EAAIgC,EAAQ,OAAQ,EAAEhC,EAAG,CACrC,IAAIkC,EAAIF,EAAQ,WAAWhC,CAAC,EAC5B,GACIkC,IAAM,IACHA,IAAM,IACNA,IAAM,IACNA,IAAM,KACLA,GAAK,IAAQA,GAAK,IAClBA,GAAK,IAAQA,GAAK,IAClBA,GAAK,IAAQA,GAAK,KAClBN,IAAWjC,IAAQ,UAAYuC,IAAM,IAAQA,IAAM,IACzD,CACED,EAAIA,EAAI,MAAM,EAAID,EAAQ,OAAOhC,CAAC,EAClC,QACJ,CAEA,GAAIkC,EAAI,IAAM,CACVD,EAAIA,EAAI,MAAM,EAAInC,GAASoC,CAAC,EAC5B,QACJ,CAEA,GAAIA,EAAI,KAAO,CACXD,EAAIA,EAAI,MAAM,EAAInC,GAAS,IAAQoC,GAAK,CAAE,EACpCpC,GAAS,IAAQoC,EAAI,EAAK,EAChC,QACJ,CAEA,GAAIA,EAAI,OAAUA,GAAK,MAAQ,CAC3BD,EAAIA,EAAI,MAAM,EAAInC,GAAS,IAAQoC,GAAK,EAAG,EACrCpC,GAAS,IAASoC,GAAK,EAAK,EAAK,EACjCpC,GAAS,IAAQoC,EAAI,EAAK,EAChC,QACJ,CAEAlC,GAAK,EACLkC,EAAI,QAAaA,EAAI,OAAU,GAAOF,EAAQ,WAAWhC,CAAC,EAAI,MAE9DiC,EAAIA,EAAI,MAAM,EAAInC,GAAS,IAAQoC,GAAK,EAAG,EACrCpC,GAAS,IAASoC,GAAK,GAAM,EAAK,EAClCpC,GAAS,IAASoC,GAAK,EAAK,EAAK,EACjCpC,GAAS,IAAQoC,EAAI,EAAK,CACpC,CAEAH,GAAOE,EAAI,KAAK,EAAE,CACtB,CAEA,OAAOF,CACX,EAxEa,UA0ETI,IAAUjC,EAAA,SAAiBe,EAAO,CAIlC,QAHId,EAAQ,CAAC,CAAE,IAAK,CAAE,EAAGc,CAAM,EAAG,KAAM,GAAI,CAAC,EACzCmB,EAAO,CAAC,EAEHpC,EAAI,EAAGA,EAAIG,EAAM,OAAQ,EAAEH,EAKhC,QAJII,EAAOD,EAAMH,CAAC,EACdK,EAAMD,EAAK,IAAIA,EAAK,IAAI,EAExBiC,EAAO,OAAO,KAAKhC,CAAG,EACjBE,EAAI,EAAGA,EAAI8B,EAAK,OAAQ,EAAE9B,EAAG,CAClC,IAAIS,EAAMqB,EAAK9B,CAAC,EACZ+B,EAAMjC,EAAIW,CAAG,EACb,OAAOsB,GAAQ,UAAYA,IAAQ,MAAQF,EAAK,QAAQE,CAAG,IAAM,KACjEnC,EAAM,KAAK,CAAE,IAAKE,EAAK,KAAMW,CAAI,CAAC,EAClCoB,EAAK,KAAKE,CAAG,EAErB,CAGJ,OAAArC,IAAaE,CAAK,EAEXc,CACX,EAtBc,WAwBVsB,IAAWrC,EAAA,SAAkBG,EAAK,CAClC,OAAO,OAAO,UAAU,SAAS,KAAKA,CAAG,IAAM,iBACnD,EAFe,YAIXmC,IAAWtC,EAAA,SAAkBG,EAAK,CAClC,MAAI,CAACA,GAAO,OAAOA,GAAQ,SAChB,GAGJ,CAAC,EAAEA,EAAI,aAAeA,EAAI,YAAY,UAAYA,EAAI,YAAY,SAASA,CAAG,EACzF,EANe,YAQXoC,IAAUvC,EAAA,SAAiBwC,EAAGC,EAAG,CACjC,MAAO,CAAC,EAAE,OAAOD,EAAGC,CAAC,CACzB,EAFc,WAIVC,IAAW1C,EAAA,SAAkBoC,EAAKO,EAAI,CACtC,GAAIhD,GAAQyC,CAAG,EAAG,CAEd,QADIQ,EAAS,CAAC,EACL9C,EAAI,EAAGA,EAAIsC,EAAI,OAAQtC,GAAK,EACjC8C,EAAO,KAAKD,EAAGP,EAAItC,CAAC,CAAC,CAAC,EAE1B,OAAO8C,CACX,CACA,OAAOD,EAAGP,CAAG,CACjB,EATe,YAWf5C,IAAO,QAAU,CACb,cAAec,IACf,OAAQU,IACR,QAASuB,IACT,QAASN,IACT,OAAQhB,IACR,OAAQM,IACR,SAAUe,IACV,SAAUD,IACV,SAAUK,IACV,MAAOjC,GACX,ICxQA,IAAAoC,IAAAC,EAAA,CAAAC,IAAAC,MAAA,cAEA,IAAIC,IAAiB,MACjBC,IAAQ,MACRC,IAAU,MACVC,IAAM,OAAO,UAAU,eAEvBC,IAAwB,CACxB,SAAUC,EAAA,SAAkBC,EAAQ,CAChC,OAAOA,EAAS,IACpB,EAFU,YAGV,MAAO,QACP,QAASD,EAAA,SAAiBC,EAAQC,EAAK,CACnC,OAAOD,EAAS,IAAMC,EAAM,GAChC,EAFS,WAGT,OAAQF,EAAA,SAAgBC,EAAQ,CAC5B,OAAOA,CACX,EAFQ,SAGZ,EAEIE,GAAU,MAAM,QAChBC,IAAO,MAAM,UAAU,KACvBC,IAAcL,EAAA,SAAUM,EAAKC,EAAc,CAC3CH,IAAK,MAAME,EAAKH,GAAQI,CAAY,EAAIA,EAAe,CAACA,CAAY,CAAC,CACzE,EAFkB,eAIdC,IAAQ,KAAK,UAAU,YAEvBC,IAAgBZ,IAAQ,QACxBa,GAAW,CACX,eAAgB,GAChB,UAAW,GACX,iBAAkB,GAClB,YAAa,UACb,QAAS,QACT,gBAAiB,GACjB,UAAW,IACX,OAAQ,GACR,gBAAiB,GACjB,QAASd,IAAM,OACf,iBAAkB,GAClB,OAAQa,IACR,UAAWZ,IAAQ,WAAWY,GAAa,EAE3C,QAAS,GACT,cAAeT,EAAA,SAAuBW,EAAM,CACxC,OAAOH,IAAM,KAAKG,CAAI,CAC1B,EAFe,iBAGf,UAAW,GACX,mBAAoB,EACxB,EAEIC,IAAwBZ,EAAA,SAA+Ba,EAAG,CAC1D,OAAO,OAAOA,GAAM,UACb,OAAOA,GAAM,UACb,OAAOA,GAAM,WACb,OAAOA,GAAM,UACb,OAAOA,GAAM,QACxB,EAN4B,yBAQxBC,IAAW,CAAC,EAEZC,IAAYf,EAAA,SAASe,EACrBC,EACAf,EACAgB,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACF,CAME,QALIC,EAAMjB,EAENkB,EAAQF,EACRG,EAAO,EACPC,EAAW,IACPF,EAAQA,EAAM,IAAIpB,GAAQ,KAAO,QAAkB,CAACsB,GAAU,CAElE,IAAIC,EAAMH,EAAM,IAAIlB,CAAM,EAE1B,GADAmB,GAAQ,EACJ,OAAOE,EAAQ,IAAa,CAC5B,GAAIA,IAAQF,EACR,MAAM,IAAI,WAAW,qBAAqB,EAE1CC,EAAW,EAEnB,CACI,OAAOF,EAAM,IAAIpB,GAAQ,EAAM,MAC/BqB,EAAO,EAEf,CAeA,GAbI,OAAOX,GAAW,WAClBS,EAAMT,EAAOvB,EAAQgC,CAAG,EACjBA,aAAe,KACtBA,EAAMN,EAAcM,CAAG,EAChBhB,IAAwB,SAAWd,GAAQ8B,CAAG,IACrDA,EAAMrC,IAAM,SAASqC,EAAK,SAAUK,GAAO,CACvC,OAAIA,cAAiB,KACVX,EAAcW,EAAK,EAEvBA,EACX,CAAC,GAGDL,IAAQ,KAAM,CACd,GAAIb,EACA,OAAOG,GAAW,CAACO,EAAmBP,EAAQtB,EAAQS,GAAS,QAASqB,EAAS,MAAOH,CAAM,EAAI3B,EAGtGgC,EAAM,EACV,CAEA,GAAIrB,IAAsBqB,CAAG,GAAKrC,IAAM,SAASqC,CAAG,EAAG,CACnD,GAAIV,EAAS,CACT,IAAIgB,EAAWT,EAAmB7B,EAASsB,EAAQtB,EAAQS,GAAS,QAASqB,EAAS,MAAOH,CAAM,EACnG,MAAO,CAACC,EAAUU,CAAQ,EAAI,IAAMV,EAAUN,EAAQU,EAAKvB,GAAS,QAASqB,EAAS,QAASH,CAAM,CAAC,CAAC,CAC3G,CACA,MAAO,CAACC,EAAU5B,CAAM,EAAI,IAAM4B,EAAU,OAAOI,CAAG,CAAC,CAAC,CAC5D,CAEA,IAAIO,EAAS,CAAC,EAEd,GAAI,OAAOP,EAAQ,IACf,OAAOO,EAGX,IAAIC,EACJ,GAAIxB,IAAwB,SAAWd,GAAQ8B,CAAG,EAE1CH,GAAoBP,IACpBU,EAAMrC,IAAM,SAASqC,EAAKV,CAAO,GAErCkB,EAAU,CAAC,CAAE,MAAOR,EAAI,OAAS,EAAIA,EAAI,KAAK,GAAG,GAAK,KAAO,MAAe,CAAC,UACtE9B,GAAQqB,CAAM,EACrBiB,EAAUjB,MACP,CACH,IAAIkB,EAAO,OAAO,KAAKT,CAAG,EAC1BQ,EAAUhB,EAAOiB,EAAK,KAAKjB,CAAI,EAAIiB,CACvC,CAEA,IAAIC,EAAgBrB,EAAkBrB,EAAO,QAAQ,MAAO,KAAK,EAAIA,EAEjE2C,EAAiB1B,GAAkBf,GAAQ8B,CAAG,GAAKA,EAAI,SAAW,EAAIU,EAAgB,KAAOA,EAEjG,GAAIxB,GAAoBhB,GAAQ8B,CAAG,GAAKA,EAAI,SAAW,EACnD,OAAOW,EAAiB,KAG5B,QAASC,EAAI,EAAGA,EAAIJ,EAAQ,OAAQ,EAAEI,EAAG,CACrC,IAAI3C,EAAMuC,EAAQI,CAAC,EACfP,EAAQ,OAAOpC,GAAQ,UAAY,OAAOA,EAAI,MAAU,IAAcA,EAAI,MAAQ+B,EAAI/B,CAAG,EAE7F,GAAI,EAAAmB,GAAaiB,IAAU,MAI3B,KAAIQ,EAAapB,GAAaJ,EAAkBpB,EAAI,QAAQ,MAAO,KAAK,EAAIA,EACxE6C,GAAY5C,GAAQ8B,CAAG,EACrB,OAAOhB,GAAwB,WAAaA,EAAoB2B,EAAgBE,CAAU,EAAIF,EAC9FA,GAAkBlB,EAAY,IAAMoB,EAAa,IAAMA,EAAa,KAE1Ed,EAAY,IAAIhB,EAAQmB,CAAI,EAC5B,IAAIa,GAAmBrD,IAAe,EACtCqD,GAAiB,IAAIlC,IAAUkB,CAAW,EAC1C3B,IAAYmC,EAAQzB,EAChBuB,EACAS,GACA9B,EACAC,EACAC,EACAC,EACAC,EACAC,EACAL,IAAwB,SAAWa,GAAoB3B,GAAQ8B,CAAG,EAAI,KAAOV,EAC7EC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAiB,EACJ,CAAC,EACL,CAEA,OAAOR,CACX,EAzIgB,aA2IZS,IAA4BjD,EAAA,SAAmCkD,EAAM,CACrE,GAAI,CAACA,EACD,OAAOxC,GAGX,GAAI,OAAOwC,EAAK,iBAAqB,KAAe,OAAOA,EAAK,kBAAqB,UACjF,MAAM,IAAI,UAAU,wEAAwE,EAGhG,GAAI,OAAOA,EAAK,gBAAoB,KAAe,OAAOA,EAAK,iBAAoB,UAC/E,MAAM,IAAI,UAAU,uEAAuE,EAG/F,GAAIA,EAAK,UAAY,MAAQ,OAAOA,EAAK,QAAY,KAAe,OAAOA,EAAK,SAAY,WACxF,MAAM,IAAI,UAAU,+BAA+B,EAGvD,IAAInB,EAAUmB,EAAK,SAAWxC,GAAS,QACvC,GAAI,OAAOwC,EAAK,QAAY,KAAeA,EAAK,UAAY,SAAWA,EAAK,UAAY,aACpF,MAAM,IAAI,UAAU,mEAAmE,EAG3F,IAAItB,EAAS/B,IAAQ,QACrB,GAAI,OAAOqD,EAAK,OAAW,IAAa,CACpC,GAAI,CAACpD,IAAI,KAAKD,IAAQ,WAAYqD,EAAK,MAAM,EACzC,MAAM,IAAI,UAAU,iCAAiC,EAEzDtB,EAASsB,EAAK,MAClB,CACA,IAAIrB,EAAYhC,IAAQ,WAAW+B,CAAM,EAErCJ,EAASd,GAAS,QAClB,OAAOwC,EAAK,QAAW,YAAc/C,GAAQ+C,EAAK,MAAM,KACxD1B,EAAS0B,EAAK,QAGlB,IAAIC,EASJ,GARID,EAAK,eAAenD,IACpBoD,EAAcD,EAAK,YACZ,YAAaA,EACpBC,EAAcD,EAAK,QAAU,UAAY,SAEzCC,EAAczC,GAAS,YAGvB,mBAAoBwC,GAAQ,OAAOA,EAAK,gBAAmB,UAC3D,MAAM,IAAI,UAAU,+CAA+C,EAGvE,IAAIxB,EAAY,OAAOwB,EAAK,UAAc,IAAcA,EAAK,kBAAoB,GAAO,GAAOxC,GAAS,UAAY,CAAC,CAACwC,EAAK,UAE3H,MAAO,CACH,eAAgB,OAAOA,EAAK,gBAAmB,UAAYA,EAAK,eAAiBxC,GAAS,eAC1F,UAAWgB,EACX,iBAAkB,OAAOwB,EAAK,kBAAqB,UAAY,CAAC,CAACA,EAAK,iBAAmBxC,GAAS,iBAClG,YAAayC,EACb,QAASpB,EACT,gBAAiB,OAAOmB,EAAK,iBAAoB,UAAYA,EAAK,gBAAkBxC,GAAS,gBAC7F,eAAgBwC,EAAK,eACrB,UAAW,OAAOA,EAAK,UAAc,IAAcxC,GAAS,UAAYwC,EAAK,UAC7E,OAAQ,OAAOA,EAAK,QAAW,UAAYA,EAAK,OAASxC,GAAS,OAClE,gBAAiB,OAAOwC,EAAK,iBAAoB,UAAYA,EAAK,gBAAkBxC,GAAS,gBAC7F,QAAS,OAAOwC,EAAK,SAAY,WAAaA,EAAK,QAAUxC,GAAS,QACtE,iBAAkB,OAAOwC,EAAK,kBAAqB,UAAYA,EAAK,iBAAmBxC,GAAS,iBAChG,OAAQc,EACR,OAAQI,EACR,UAAWC,EACX,cAAe,OAAOqB,EAAK,eAAkB,WAAaA,EAAK,cAAgBxC,GAAS,cACxF,UAAW,OAAOwC,EAAK,WAAc,UAAYA,EAAK,UAAYxC,GAAS,UAC3E,KAAM,OAAOwC,EAAK,MAAS,WAAaA,EAAK,KAAO,KACpD,mBAAoB,OAAOA,EAAK,oBAAuB,UAAYA,EAAK,mBAAqBxC,GAAS,kBAC1G,CACJ,EAxEgC,6BA0EhChB,IAAO,QAAU,SAAUsB,EAAQkC,EAAM,CACrC,IAAIjB,EAAMjB,EACNoC,EAAUH,IAA0BC,CAAI,EAExCT,EACAjB,EAEA,OAAO4B,EAAQ,QAAW,YAC1B5B,EAAS4B,EAAQ,OACjBnB,EAAMT,EAAO,GAAIS,CAAG,GACb9B,GAAQiD,EAAQ,MAAM,IAC7B5B,EAAS4B,EAAQ,OACjBX,EAAUjB,GAGd,IAAIkB,EAAO,CAAC,EAEZ,GAAI,OAAOT,GAAQ,UAAYA,IAAQ,KACnC,MAAO,GAGX,IAAIhB,EAAsBlB,IAAsBqD,EAAQ,WAAW,EAC/DlC,EAAiBD,IAAwB,SAAWmC,EAAQ,eAE3DX,IACDA,EAAU,OAAO,KAAKR,CAAG,GAGzBmB,EAAQ,MACRX,EAAQ,KAAKW,EAAQ,IAAI,EAI7B,QADIpB,EAAcrC,IAAe,EACxB0D,EAAI,EAAGA,EAAIZ,EAAQ,OAAQ,EAAEY,EAAG,CACrC,IAAInD,EAAMuC,EAAQY,CAAC,EAEfD,EAAQ,WAAanB,EAAI/B,CAAG,IAAM,MAGtCG,IAAYqC,EAAM3B,IACdkB,EAAI/B,CAAG,EACPA,EACAe,EACAC,EACAkC,EAAQ,iBACRA,EAAQ,mBACRA,EAAQ,UACRA,EAAQ,gBACRA,EAAQ,OAASA,EAAQ,QAAU,KACnCA,EAAQ,OACRA,EAAQ,KACRA,EAAQ,UACRA,EAAQ,cACRA,EAAQ,OACRA,EAAQ,UACRA,EAAQ,iBACRA,EAAQ,QACRpB,CACJ,CAAC,CACL,CAEA,IAAIsB,EAASZ,EAAK,KAAKU,EAAQ,SAAS,EACpCnD,EAASmD,EAAQ,iBAAmB,GAAO,IAAM,GAErD,OAAIA,EAAQ,kBACJA,EAAQ,UAAY,aAEpBnD,GAAU,uBAGVA,GAAU,mBAIXqD,EAAO,OAAS,EAAIrD,EAASqD,EAAS,EACjD,IC9VA,IAAAC,IAAAC,EAAA,CAAAC,IAAAC,MAAA,cAEA,IAAIC,GAAQ,MAERC,IAAM,OAAO,UAAU,eACvBC,IAAU,MAAM,QAEhBC,GAAW,CACX,UAAW,GACX,iBAAkB,GAClB,gBAAiB,GACjB,YAAa,GACb,WAAY,GACZ,QAAS,QACT,gBAAiB,GACjB,MAAO,GACP,gBAAiB,GACjB,QAASH,GAAM,OACf,UAAW,IACX,MAAO,EACP,WAAY,UACZ,kBAAmB,GACnB,yBAA0B,GAC1B,eAAgB,IAChB,YAAa,GACb,aAAc,GACd,YAAa,GACb,mBAAoB,EACxB,EAEII,IAA2BC,EAAA,SAAUC,EAAK,CAC1C,OAAOA,EAAI,QAAQ,YAAa,SAAUC,EAAIC,EAAW,CACrD,OAAO,OAAO,aAAa,SAASA,EAAW,EAAE,CAAC,CACtD,CAAC,CACL,EAJ+B,4BAM3BC,IAAkBJ,EAAA,SAAUK,EAAKC,EAAS,CAC1C,OAAID,GAAO,OAAOA,GAAQ,UAAYC,EAAQ,OAASD,EAAI,QAAQ,GAAG,EAAI,GAC/DA,EAAI,MAAM,GAAG,EAGjBA,CACX,EANsB,mBAalBE,IAAc,sBAGdC,IAAkB,iBAElBC,IAAcT,EAAA,SAAgCC,EAAKK,EAAS,CAC5D,IAAII,EAAM,CAAE,UAAW,IAAK,EAExBC,EAAWL,EAAQ,kBAAoBL,EAAI,QAAQ,MAAO,EAAE,EAAIA,EACpEU,EAAWA,EAAS,QAAQ,QAAS,GAAG,EAAE,QAAQ,QAAS,GAAG,EAC9D,IAAIC,EAAQN,EAAQ,iBAAmB,IAAW,OAAYA,EAAQ,eAClEO,EAAQF,EAAS,MAAML,EAAQ,UAAWM,CAAK,EAC/CE,EAAY,GACZC,EAEAC,EAAUV,EAAQ,QACtB,GAAIA,EAAQ,gBACR,IAAKS,EAAI,EAAGA,EAAIF,EAAM,OAAQ,EAAEE,EACxBF,EAAME,CAAC,EAAE,QAAQ,OAAO,IAAM,IAC1BF,EAAME,CAAC,IAAMP,IACbQ,EAAU,QACHH,EAAME,CAAC,IAAMR,MACpBS,EAAU,cAEdF,EAAYC,EACZA,EAAIF,EAAM,QAKtB,IAAKE,EAAI,EAAGA,EAAIF,EAAM,OAAQ,EAAEE,EAC5B,GAAIA,IAAMD,EAGV,KAAIG,EAAOJ,EAAME,CAAC,EAEdG,EAAmBD,EAAK,QAAQ,IAAI,EACpCE,EAAMD,IAAqB,GAAKD,EAAK,QAAQ,GAAG,EAAIC,EAAmB,EAEvEE,EAAKf,EACLc,IAAQ,IACRC,EAAMd,EAAQ,QAAQW,EAAMnB,GAAS,QAASkB,EAAS,KAAK,EAC5DX,EAAMC,EAAQ,mBAAqB,KAAO,KAE1Cc,EAAMd,EAAQ,QAAQW,EAAK,MAAM,EAAGE,CAAG,EAAGrB,GAAS,QAASkB,EAAS,KAAK,EAC1EX,EAAMV,GAAM,SACRS,IAAgBa,EAAK,MAAME,EAAM,CAAC,EAAGb,CAAO,EAC5C,SAAUe,EAAY,CAClB,OAAOf,EAAQ,QAAQe,EAAYvB,GAAS,QAASkB,EAAS,OAAO,CACzE,CACJ,GAGAX,GAAOC,EAAQ,0BAA4BU,IAAY,eACvDX,EAAMN,IAAyBM,CAAG,GAGlCY,EAAK,QAAQ,KAAK,EAAI,KACtBZ,EAAMR,IAAQQ,CAAG,EAAI,CAACA,CAAG,EAAIA,GAGjC,IAAIiB,EAAW1B,IAAI,KAAKc,EAAKU,CAAG,EAC5BE,GAAYhB,EAAQ,aAAe,UACnCI,EAAIU,CAAG,EAAIzB,GAAM,QAAQe,EAAIU,CAAG,EAAGf,CAAG,GAC/B,CAACiB,GAAYhB,EAAQ,aAAe,UAC3CI,EAAIU,CAAG,EAAIf,GAInB,OAAOK,CACX,EAjEkB,0BAmEda,IAAcvB,EAAA,SAAUwB,EAAOnB,EAAKC,EAASmB,EAAc,CAG3D,QAFIC,EAAOD,EAAepB,EAAMD,IAAgBC,EAAKC,CAAO,EAEnDS,EAAIS,EAAM,OAAS,EAAGT,GAAK,EAAG,EAAEA,EAAG,CACxC,IAAIL,EACAiB,EAAOH,EAAMT,CAAC,EAElB,GAAIY,IAAS,MAAQrB,EAAQ,YACzBI,EAAMJ,EAAQ,mBAAqBoB,IAAS,IAAOpB,EAAQ,oBAAsBoB,IAAS,MACpF,CAAC,EACD,CAAC,EAAE,OAAOA,CAAI,MACjB,CACHhB,EAAMJ,EAAQ,aAAe,OAAO,OAAO,IAAI,EAAI,CAAC,EACpD,IAAIsB,EAAYD,EAAK,OAAO,CAAC,IAAM,KAAOA,EAAK,OAAOA,EAAK,OAAS,CAAC,IAAM,IAAMA,EAAK,MAAM,EAAG,EAAE,EAAIA,EACjGE,EAAcvB,EAAQ,gBAAkBsB,EAAU,QAAQ,OAAQ,GAAG,EAAIA,EACzEE,EAAQ,SAASD,EAAa,EAAE,EAChC,CAACvB,EAAQ,aAAeuB,IAAgB,GACxCnB,EAAM,CAAE,EAAGgB,CAAK,EAEhB,CAAC,MAAMI,CAAK,GACTH,IAASE,GACT,OAAOC,CAAK,IAAMD,GAClBC,GAAS,GACRxB,EAAQ,aAAewB,GAASxB,EAAQ,YAE5CI,EAAM,CAAC,EACPA,EAAIoB,CAAK,EAAIJ,GACNG,IAAgB,cACvBnB,EAAImB,CAAW,EAAIH,EAE3B,CAEAA,EAAOhB,CACX,CAEA,OAAOgB,CACX,EApCkB,eAsCdK,IAAY/B,EAAA,SAA8BgC,EAAU3B,EAAKC,EAASmB,EAAc,CAChF,GAAKO,EAKL,KAAIZ,EAAMd,EAAQ,UAAY0B,EAAS,QAAQ,cAAe,MAAM,EAAIA,EAIpEC,EAAW,eACXC,EAAQ,gBAIRC,EAAU7B,EAAQ,MAAQ,GAAK2B,EAAS,KAAKb,CAAG,EAChDgB,EAASD,EAAUf,EAAI,MAAM,EAAGe,EAAQ,KAAK,EAAIf,EAIjDiB,EAAO,CAAC,EACZ,GAAID,EAAQ,CAER,GAAI,CAAC9B,EAAQ,cAAgBV,IAAI,KAAK,OAAO,UAAWwC,CAAM,GACtD,CAAC9B,EAAQ,gBACT,OAIR+B,EAAK,KAAKD,CAAM,CACpB,CAKA,QADIrB,EAAI,EACDT,EAAQ,MAAQ,IAAM6B,EAAUD,EAAM,KAAKd,CAAG,KAAO,MAAQL,EAAIT,EAAQ,OAAO,CAEnF,GADAS,GAAK,EACD,CAACT,EAAQ,cAAgBV,IAAI,KAAK,OAAO,UAAWuC,EAAQ,CAAC,EAAE,MAAM,EAAG,EAAE,CAAC,GACvE,CAAC7B,EAAQ,gBACT,OAGR+B,EAAK,KAAKF,EAAQ,CAAC,CAAC,CACxB,CAIA,GAAIA,EAAS,CACT,GAAI7B,EAAQ,cAAgB,GACxB,MAAM,IAAI,WAAW,wCAA0CA,EAAQ,MAAQ,0BAA0B,EAE7G+B,EAAK,KAAK,IAAMjB,EAAI,MAAMe,EAAQ,KAAK,EAAI,GAAG,CAClD,CAEA,OAAOZ,IAAYc,EAAMhC,EAAKC,EAASmB,CAAY,EACvD,EAvDgB,wBAyDZa,IAAwBtC,EAAA,SAA+BuC,EAAM,CAC7D,GAAI,CAACA,EACD,OAAOzC,GAGX,GAAI,OAAOyC,EAAK,iBAAqB,KAAe,OAAOA,EAAK,kBAAqB,UACjF,MAAM,IAAI,UAAU,wEAAwE,EAGhG,GAAI,OAAOA,EAAK,gBAAoB,KAAe,OAAOA,EAAK,iBAAoB,UAC/E,MAAM,IAAI,UAAU,uEAAuE,EAG/F,GAAIA,EAAK,UAAY,MAAQ,OAAOA,EAAK,QAAY,KAAe,OAAOA,EAAK,SAAY,WACxF,MAAM,IAAI,UAAU,+BAA+B,EAGvD,GAAI,OAAOA,EAAK,QAAY,KAAeA,EAAK,UAAY,SAAWA,EAAK,UAAY,aACpF,MAAM,IAAI,UAAU,mEAAmE,EAE3F,IAAIvB,EAAU,OAAOuB,EAAK,QAAY,IAAczC,GAAS,QAAUyC,EAAK,QAExEC,EAAa,OAAOD,EAAK,WAAe,IAAczC,GAAS,WAAayC,EAAK,WAErF,GAAIC,IAAe,WAAaA,IAAe,SAAWA,IAAe,OACrE,MAAM,IAAI,UAAU,8DAA8D,EAGtF,IAAIC,EAAY,OAAOF,EAAK,UAAc,IAAcA,EAAK,kBAAoB,GAAO,GAAOzC,GAAS,UAAY,CAAC,CAACyC,EAAK,UAE3H,MAAO,CACH,UAAWE,EACX,iBAAkB,OAAOF,EAAK,kBAAqB,UAAY,CAAC,CAACA,EAAK,iBAAmBzC,GAAS,iBAClG,gBAAiB,OAAOyC,EAAK,iBAAoB,UAAYA,EAAK,gBAAkBzC,GAAS,gBAC7F,YAAa,OAAOyC,EAAK,aAAgB,UAAYA,EAAK,YAAczC,GAAS,YACjF,WAAY,OAAOyC,EAAK,YAAe,SAAWA,EAAK,WAAazC,GAAS,WAC7E,QAASkB,EACT,gBAAiB,OAAOuB,EAAK,iBAAoB,UAAYA,EAAK,gBAAkBzC,GAAS,gBAC7F,MAAO,OAAOyC,EAAK,OAAU,UAAYA,EAAK,MAAQzC,GAAS,MAC/D,gBAAiB,OAAOyC,EAAK,iBAAoB,UAAYA,EAAK,gBAAkBzC,GAAS,gBAC7F,QAAS,OAAOyC,EAAK,SAAY,WAAaA,EAAK,QAAUzC,GAAS,QACtE,UAAW,OAAOyC,EAAK,WAAc,UAAY5C,GAAM,SAAS4C,EAAK,SAAS,EAAIA,EAAK,UAAYzC,GAAS,UAE5G,MAAQ,OAAOyC,EAAK,OAAU,UAAYA,EAAK,QAAU,GAAS,CAACA,EAAK,MAAQzC,GAAS,MACzF,WAAY0C,EACZ,kBAAmBD,EAAK,oBAAsB,GAC9C,yBAA0B,OAAOA,EAAK,0BAA6B,UAAYA,EAAK,yBAA2BzC,GAAS,yBACxH,eAAgB,OAAOyC,EAAK,gBAAmB,SAAWA,EAAK,eAAiBzC,GAAS,eACzF,YAAayC,EAAK,cAAgB,GAClC,aAAc,OAAOA,EAAK,cAAiB,UAAYA,EAAK,aAAezC,GAAS,aACpF,YAAa,OAAOyC,EAAK,aAAgB,UAAY,CAAC,CAACA,EAAK,YAAczC,GAAS,YACnF,mBAAoB,OAAOyC,EAAK,oBAAuB,UAAYA,EAAK,mBAAqBzC,GAAS,kBAC1G,CACJ,EArD4B,yBAuD5BJ,IAAO,QAAU,SAAUO,EAAKsC,EAAM,CAClC,IAAIjC,EAAUgC,IAAsBC,CAAI,EAExC,GAAItC,IAAQ,IAAMA,IAAQ,MAAQ,OAAOA,EAAQ,IAC7C,OAAOK,EAAQ,aAAe,OAAO,OAAO,IAAI,EAAI,CAAC,EASzD,QANIoC,EAAU,OAAOzC,GAAQ,SAAWQ,IAAYR,EAAKK,CAAO,EAAIL,EAChES,EAAMJ,EAAQ,aAAe,OAAO,OAAO,IAAI,EAAI,CAAC,EAIpD+B,EAAO,OAAO,KAAKK,CAAO,EACrB3B,EAAI,EAAGA,EAAIsB,EAAK,OAAQ,EAAEtB,EAAG,CAClC,IAAIK,EAAMiB,EAAKtB,CAAC,EACZ4B,EAASZ,IAAUX,EAAKsB,EAAQtB,CAAG,EAAGd,EAAS,OAAOL,GAAQ,QAAQ,EAC1ES,EAAMf,GAAM,MAAMe,EAAKiC,EAAQrC,CAAO,CAC1C,CAEA,OAAIA,EAAQ,cAAgB,GACjBI,EAGJf,GAAM,QAAQe,CAAG,CAC5B,ICvSA,IAAAkC,IAAAC,EAAA,CAAAC,IAAAC,MAAA,cAEA,IAAIC,IAAY,MACZC,IAAQ,MACRC,IAAU,MAEdH,IAAO,QAAU,CACb,QAASG,IACT,MAAOD,IACP,UAAWD,GACf,ICVA,IAAAG,IAAAC,EAAA,CAAAC,IAAAC,MAAA,cAMA,IAAMC,IAAM,MACNC,IAAU,MACVC,IAAK,MACLC,IAAQ,MAcdJ,IAAO,QAAU,eAAeK,EAAKC,EAAM,CACzCD,EAAMA,EAAI,KAAOA,EACjBC,EAAOF,IAAM,MAAME,CAAI,EACvB,IAAMC,EAAcD,EAAK,aAAe,CAAC,EAGrCC,EAAY,YAAc,SAAWA,EAAY,UAAY,IAGjE,IAAMC,EAAMH,EAAI,QAAQ,gBAAgB,EAClCI,EAAWJ,EAAI,QAAQ,kBAAkB,GAAK,WAChDG,GAAOC,IAAa,aAAYH,EAAK,OAAS,CAAC,CAACE,GACpDF,EAAK,SAAWA,EAAK,UAAY,OACjCA,EAAK,MAAQA,EAAK,OAAS,OAC3BA,EAAK,GAAKA,EAAK,IAAMH,IAErB,IAAMO,EAAM,MAAMT,IAAIC,IAAQG,CAAG,EAAGC,CAAI,EACxC,GAAI,CACF,IAAMK,EAASL,EAAK,GAAG,MAAMI,EAAKH,CAAW,EAC7C,OAAOD,EAAK,cAAgB,CAAE,OAAAK,EAAQ,IAAKD,CAAI,EAAIC,CACrD,OAASC,EAAK,CACZ,MAAAA,EAAI,OAAS,IACbA,EAAI,KAAOF,EACLE,CACR,CACF,IChDA,IAAAC,IAAAC,EAAA,CAAAC,IAAAC,MAAA,cAMA,IAAMC,IAAM,MACNC,IAAU,MACVC,IAAQ,MAcdH,IAAO,QAAU,eAAeI,EAAKC,EAAM,CACzCD,EAAMA,EAAI,KAAOA,EACjBC,EAAOF,IAAM,MAAME,CAAI,EAGvB,IAAMC,EAAMF,EAAI,QAAQ,gBAAgB,EAClCG,EAAWH,EAAI,QAAQ,kBAAkB,GAAK,WAChDE,GAAOC,IAAa,aAAYF,EAAK,OAAS,CAAC,CAACC,GACpDD,EAAK,SAAWA,EAAK,WAAa,OAAY,OAASA,EAAK,SAC5DA,EAAK,MAAQA,EAAK,OAAS,MAE3B,IAAMG,EAAM,MAAMP,IAAIC,IAAQE,CAAG,EAAGC,CAAI,EAExC,OAAOA,EAAK,cAAgB,CAAE,OAAQG,EAAK,IAAKA,CAAI,EAAIA,CAC1D,ICpCA,IAAAC,IAAAC,EAAA,CAAAC,IAAAC,MAAA,cAMA,IAAMC,IAAS,MACTC,IAAO,MACPC,IAAO,MACPC,IAAO,MAEPC,IAAY,CAAE,OAAQ,qBAAsB,wBAAyB,EACrEC,IAAY,CAAE,YAAa,EAC3BC,IAAY,CAAE,MAAO,EAe3BP,IAAO,QAAU,eAAeQ,EAAKC,EAAM,CACzCD,EAAMA,EAAI,KAAOA,EACjBC,EAAOA,GAAQ,CAAC,EAGhB,IAAMC,EAAWD,EAAK,WAAaJ,IACnC,GAAIJ,IAAOO,EAAKE,CAAQ,EAAG,OAAOR,IAAKM,EAAKC,CAAI,EAGhD,IAAME,EAAWF,EAAK,WAAaH,IACnC,GAAIL,IAAOO,EAAKG,CAAQ,EAAG,OAAOR,IAAKK,EAAKC,CAAI,EAGhD,IAAMG,EAAWH,EAAK,WAAaF,IACnC,GAAIN,IAAOO,EAAKI,CAAQ,EAAG,OAAOR,IAAKI,EAAKC,CAAI,EAGhD,IAAMI,EAAOL,EAAI,QAAQ,cAAc,GAAK,GACtCM,EAAUD,EAAO,6BAA+BA,EAAO,uBACvDE,EAAM,IAAI,MAAMD,CAAO,EAC7B,MAAAC,EAAI,OAAS,IACPA,CACR,IClDA,IAAAC,IAAAC,EAAA,CAAAC,IAAAC,MAAA,cAEAD,IAAUC,IAAO,QAAU,MAC3BD,IAAQ,KAAO,MACfA,IAAQ,KAAO,MACfA,IAAQ,KAAO,oRC0EbE,GAAA,IAAAC,IAA+CD,GAAA,QAAAE,IAAyGF,GAAA,MAAAG,IA1E1J,IAAMC,IAA6B,OAAO,GAAK,GAAK,CAAC,EAC/CC,IAAuB,OAAO,EAAE,EAEtC,SAASH,IACPI,EACAC,EAAK,GAAK,CAKV,OAAIA,EAAW,CAAE,EAAG,OAAOD,EAAIF,GAAU,EAAG,EAAG,OAAQE,GAAKD,IAAQD,GAAU,CAAC,EACxE,CAAE,EAAG,OAAQE,GAAKD,IAAQD,GAAU,EAAI,EAAG,EAAG,OAAOE,EAAIF,GAAU,EAAI,CAAC,CACjF,CATSI,EAAAN,IAAA,WAWT,SAASC,IAAMM,EAAeF,EAAK,GAAK,CACtC,IAAMG,EAAMD,EAAI,OACZE,EAAK,IAAI,YAAYD,CAAG,EACxBE,EAAK,IAAI,YAAYF,CAAG,EAC5B,QAASG,EAAI,EAAGA,EAAIH,EAAKG,IAAK,CAC5B,GAAM,CAAE,EAAAC,EAAG,EAAAC,CAAC,EAAKb,IAAQO,EAAII,CAAC,EAAGN,CAAE,EACnC,CAACI,EAAGE,CAAC,EAAGD,EAAGC,CAAC,CAAC,EAAI,CAACC,EAAGC,CAAC,CACxB,CACA,MAAO,CAACJ,EAAIC,CAAE,CAChB,CATSJ,EAAAL,IAAA,SAWT,IAAMa,IAAQR,EAAA,CAACM,EAAWC,IAAuB,OAAOD,IAAM,CAAC,GAAKT,IAAQ,OAAOU,IAAM,CAAC,EAA5E,SAiDmJf,GAAA,MAAAgB,IA/CjK,IAAMC,IAAQT,EAAA,CAACM,EAAWI,EAAYC,IAAsBL,IAAMK,EAApD,SA+C8HnB,GAAA,MAAAiB,IA9C5I,IAAMG,IAAQZ,EAAA,CAACM,EAAWC,EAAWI,IAAuBL,GAAM,GAAKK,EAAOJ,IAAMI,EAAtE,SA8CqInB,GAAA,MAAAoB,IA5CnJ,IAAMC,IAASb,EAAA,CAACM,EAAWC,EAAWI,IAAuBL,IAAMK,EAAMJ,GAAM,GAAKI,EAArE,UA4C6GnB,GAAA,OAAAqB,IA3C5H,IAAMC,IAASd,EAAA,CAACM,EAAWC,EAAWI,IAAuBL,GAAM,GAAKK,EAAOJ,IAAMI,EAAtE,UA2CqHnB,GAAA,OAAAsB,IAzCpI,IAAMC,IAASf,EAAA,CAACM,EAAWC,EAAWI,IAAuBL,GAAM,GAAKK,EAAOJ,IAAOI,EAAI,GAA3E,UAyC6FnB,GAAA,OAAAuB,IAxC5G,IAAMC,IAAShB,EAAA,CAACM,EAAWC,EAAWI,IAAuBL,IAAOK,EAAI,GAAQJ,GAAM,GAAKI,EAA5E,UAwCqGnB,GAAA,OAAAwB,IAtCpH,IAAMC,IAAUjB,EAAA,CAACkB,EAAYX,IAAsBA,EAAnC,WAsC0Ef,GAAA,QAAAyB,IArC1F,IAAME,IAAUnB,EAAA,CAACM,EAAWI,IAAuBJ,EAAnC,WAqCmFd,GAAA,QAAA2B,IAnCnG,IAAMC,IAASpB,EAAA,CAACM,EAAWC,EAAWI,IAAuBL,GAAKK,EAAMJ,IAAO,GAAKI,EAArE,UAmC2DnB,GAAA,OAAA4B,IAlC1E,IAAMC,IAASrB,EAAA,CAACM,EAAWC,EAAWI,IAAuBJ,GAAKI,EAAML,IAAO,GAAKK,EAArE,UAkCmEnB,GAAA,OAAA6B,IAhClF,IAAMC,IAAStB,EAAA,CAACM,EAAWC,EAAWI,IAAuBJ,GAAMI,EAAI,GAAQL,IAAO,GAAKK,EAA5E,UAgC2CnB,GAAA,OAAA8B,IA/B1D,IAAMC,IAASvB,EAAA,CAACM,EAAWC,EAAWI,IAAuBL,GAAMK,EAAI,GAAQJ,IAAO,GAAKI,EAA5E,UA+BmDnB,GAAA,OAAA+B,IA3BlE,SAAS9B,IACPU,EACAC,EACAoB,EACAC,EAAU,CAKV,IAAMlB,GAAKH,IAAO,IAAMqB,IAAO,GAC/B,MAAO,CAAE,EAAItB,EAAKqB,GAAOjB,EAAI,GAAK,GAAM,GAAM,EAAG,EAAGA,EAAI,CAAC,CAC3D,CAXSP,EAAAP,IAAA,OAaT,IAAMiC,IAAQ1B,EAAA,CAACI,EAAYqB,EAAYE,KAAwBvB,IAAO,IAAMqB,IAAO,IAAME,IAAO,GAAlF,SAcAnC,GAAA,MAAAkC,IAbd,IAAME,IAAQ5B,EAAA,CAAC6B,EAAa1B,EAAYqB,EAAYM,IACjD3B,EAAKqB,EAAKM,GAAOD,EAAM,GAAK,GAAM,GAAM,EAD7B,SAaPrC,GAAA,MAAAoC,IAXP,IAAMG,IAAQ/B,EAAA,CAACI,EAAYqB,EAAYE,EAAYK,KAChD5B,IAAO,IAAMqB,IAAO,IAAME,IAAO,IAAMK,IAAO,GADnC,SAWcxC,GAAA,MAAAuC,IAT5B,IAAME,IAAQjC,EAAA,CAAC6B,EAAa1B,EAAYqB,EAAYM,EAAYI,IAC7D/B,EAAKqB,EAAKM,EAAKI,GAAOL,EAAM,GAAK,GAAM,GAAM,EADlC,SASOrC,GAAA,MAAAyC,IAPrB,IAAME,IAAQnC,EAAA,CAACI,EAAYqB,EAAYE,EAAYK,EAAYI,KAC5DhC,IAAO,IAAMqB,IAAO,IAAME,IAAO,IAAMK,IAAO,IAAMI,IAAO,GADhD,SAO4B5C,GAAA,MAAA2C,IAL1C,IAAME,IAAQrC,EAAA,CAAC6B,EAAa1B,EAAYqB,EAAYM,EAAYI,EAAYI,IACzEnC,EAAKqB,EAAKM,EAAKI,EAAKI,GAAOT,EAAM,GAAK,GAAM,GAAM,EADvC,SAKqBrC,GAAA,MAAA6C,IAGnC,IAAME,IAAqpC,CACzpC,QAAA7C,IAAS,MAAAC,IAAO,MAAAa,IAChB,MAAAC,IAAO,MAAAG,IACP,OAAAC,IAAQ,OAAAC,IAAQ,OAAAC,IAAQ,OAAAC,IACxB,QAAAC,IAAS,QAAAE,IACT,OAAAC,IAAQ,OAAAC,IAAQ,OAAAC,IAAQ,OAAAC,IACxB,IAAA9B,IAAK,MAAAiC,IAAO,MAAAE,IAAO,MAAAG,IAAO,MAAAE,IAAO,MAAAI,IAAO,MAAAF,KAE1C3C,GAAA,QAAe+C,wGClFf,IAAAC,GAAA,QAAA,aAAA,EACaC,IAAA,OACXD,IAAM,OAAOA,IAAO,UAAY,cAAeA,GAC1CA,GAAG,UACJA,IAAM,OAAOA,IAAO,UAAY,gBAAiBA,GAC/CA,GACA,iPCCRE,GAAA,QAAAC,IAKAD,GAAA,QAAAE,IAKAF,GAAA,OAAAG,GAOAH,GAAA,MAAAI,IAQAJ,GAAA,QAAAK,IAMAL,GAAA,QAAAM,IAcAN,GAAA,GAAAO,IAKAP,GAAA,IAAAQ,IAKAR,GAAA,MAAAS,IAOAT,GAAA,WAAAU,IAKAV,GAAA,KAAAW,IAKAX,GAAA,KAAAY,IASAZ,GAAA,SAAAa,IAgBAb,GAAA,WAAAc,IAyBAd,GAAA,WAAAe,IAyBAf,GAAA,WAAAgB,IA4BAhB,GAAA,UAAAiB,IAwBAjB,GAAA,YAAAkB,IASAlB,GAAA,YAAAmB,IAWAnB,GAAA,QAAAoB,IAYApB,GAAA,gBAAAqB,IAOArB,GAAA,YAAAsB,IAiBAtB,GAAA,UAAAuB,IA+DAvB,GAAA,aAAAwB,IAgBAxB,GAAA,gBAAAyB,IAgBAzB,GAAA,YAAA0B,IAoBA1B,GAAA,YAAA2B,IArXA,IAAAC,GAAA,MAGA,SAAgB3B,IAAQ4B,EAAU,CAChC,OAAOA,aAAa,YAAe,YAAY,OAAOA,CAAC,GAAKA,EAAE,YAAY,OAAS,YACrF,CAFgBC,EAAA7B,IAAA,WAKhB,SAAgBC,IAAQ6B,EAAS,CAC/B,GAAI,CAAC,OAAO,cAAcA,CAAC,GAAKA,EAAI,EAAG,MAAM,IAAI,MAAM,kCAAoCA,CAAC,CAC9F,CAFgBD,EAAA5B,IAAA,WAKhB,SAAgBC,GAAO6B,KAA8BC,EAAiB,CACpE,GAAI,CAAChC,IAAQ+B,CAAC,EAAG,MAAM,IAAI,MAAM,qBAAqB,EACtD,GAAIC,EAAQ,OAAS,GAAK,CAACA,EAAQ,SAASD,EAAE,MAAM,EAClD,MAAM,IAAI,MAAM,iCAAmCC,EAAU,gBAAkBD,EAAE,MAAM,CAC3F,CAJgBF,EAAA3B,GAAA,UAOhB,SAAgBC,IAAM8B,EAAQ,CAC5B,GAAI,OAAOA,GAAM,YAAc,OAAOA,EAAE,QAAW,WACjD,MAAM,IAAI,MAAM,8CAA8C,EAChEhC,IAAQgC,EAAE,SAAS,EACnBhC,IAAQgC,EAAE,QAAQ,CACpB,CALgBJ,EAAA1B,IAAA,SAQhB,SAAgBC,IAAQ8B,EAAeC,EAAgB,GAAI,CACzD,GAAID,EAAS,UAAW,MAAM,IAAI,MAAM,kCAAkC,EAC1E,GAAIC,GAAiBD,EAAS,SAAU,MAAM,IAAI,MAAM,uCAAuC,CACjG,CAHgBL,EAAAzB,IAAA,WAMhB,SAAgBC,IAAQ+B,EAAUF,EAAa,CAC7ChC,GAAOkC,CAAG,EACV,IAAMC,EAAMH,EAAS,UACrB,GAAIE,EAAI,OAASC,EACf,MAAM,IAAI,MAAM,yDAA2DA,CAAG,CAElF,CANgBR,EAAAxB,IAAA,WAchB,SAAgBC,IAAGgC,EAAe,CAChC,OAAO,IAAI,WAAWA,EAAI,OAAQA,EAAI,WAAYA,EAAI,UAAU,CAClE,CAFgBT,EAAAvB,IAAA,MAKhB,SAAgBC,IAAI+B,EAAe,CACjC,OAAO,IAAI,YAAYA,EAAI,OAAQA,EAAI,WAAY,KAAK,MAAMA,EAAI,WAAa,CAAC,CAAC,CACnF,CAFgBT,EAAAtB,IAAA,OAKhB,SAAgBC,OAAS+B,EAAoB,CAC3C,QAASC,EAAI,EAAGA,EAAID,EAAO,OAAQC,IACjCD,EAAOC,CAAC,EAAE,KAAK,CAAC,CAEpB,CAJgBX,EAAArB,IAAA,SAOhB,SAAgBC,IAAW6B,EAAe,CACxC,OAAO,IAAI,SAASA,EAAI,OAAQA,EAAI,WAAYA,EAAI,UAAU,CAChE,CAFgBT,EAAApB,IAAA,cAKhB,SAAgBC,IAAK+B,EAAcC,EAAa,CAC9C,OAAQD,GAAS,GAAKC,EAAWD,IAASC,CAC5C,CAFgBb,EAAAnB,IAAA,QAKhB,SAAgBC,IAAK8B,EAAcC,EAAa,CAC9C,OAAQD,GAAQC,EAAWD,IAAU,GAAKC,IAAY,CACxD,CAFgBb,EAAAlB,IAAA,QAKHZ,GAAA,KACX,IAAI,WAAW,IAAI,YAAY,CAAC,SAAU,CAAC,EAAE,MAAM,EAAE,CAAC,IAAM,GAG9D,SAAgBa,IAAS6B,EAAY,CACnC,OACIA,GAAQ,GAAM,WACdA,GAAQ,EAAK,SACbA,IAAS,EAAK,MACdA,IAAS,GAAM,GAErB,CAPgBZ,EAAAjB,IAAA,YASHb,GAAA,UAAmCA,GAAA,KAC3C+B,GAAcA,EACdA,GAAclB,IAASkB,CAAC,EAGhB/B,GAAA,aAAiCA,GAAA,UAE9C,SAAgBc,IAAWyB,EAAgB,CACzC,QAASE,EAAI,EAAGA,EAAIF,EAAI,OAAQE,IAC9BF,EAAIE,CAAC,EAAI5B,IAAS0B,EAAIE,CAAC,CAAC,EAE1B,OAAOF,CACT,CALgBT,EAAAhB,IAAA,cAOHd,GAAA,WAA8CA,GAAA,KACtD4C,GAAmBA,EACpB9B,IAGJ,IAAM+B,IAEJ,OAAO,WAAW,KAAK,CAAA,CAAE,EAAE,OAAU,YAAc,OAAO,WAAW,SAAY,WAG7EC,IAAwB,MAAM,KAAK,CAAE,OAAQ,GAAG,EAAI,CAACC,EAAGN,IAC5DA,EAAE,SAAS,EAAE,EAAE,SAAS,EAAG,GAAG,CAAC,EAOjC,SAAgB1B,IAAWiC,EAAiB,CAG1C,GAFA7C,GAAO6C,CAAK,EAERH,IAAe,OAAOG,EAAM,MAAK,EAErC,IAAIC,EAAM,GACV,QAASR,EAAI,EAAGA,EAAIO,EAAM,OAAQP,IAChCQ,GAAOH,IAAME,EAAMP,CAAC,CAAC,EAEvB,OAAOQ,CACT,CAVgBnB,EAAAf,IAAA,cAahB,IAAMmC,GAAS,CAAE,GAAI,GAAI,GAAI,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAI,EAAG,GAAG,EAC5D,SAASC,IAAcC,EAAU,CAC/B,GAAIA,GAAMF,GAAO,IAAME,GAAMF,GAAO,GAAI,OAAOE,EAAKF,GAAO,GAC3D,GAAIE,GAAMF,GAAO,GAAKE,GAAMF,GAAO,EAAG,OAAOE,GAAMF,GAAO,EAAI,IAC9D,GAAIE,GAAMF,GAAO,GAAKE,GAAMF,GAAO,EAAG,OAAOE,GAAMF,GAAO,EAAI,GAEhE,CALSpB,EAAAqB,IAAA,iBAWT,SAAgBnC,IAAWiC,EAAW,CACpC,GAAI,OAAOA,GAAQ,SAAU,MAAM,IAAI,MAAM,4BAA8B,OAAOA,CAAG,EAErF,GAAIJ,IAAe,OAAO,WAAW,QAAQI,CAAG,EAChD,IAAMI,EAAKJ,EAAI,OACTK,EAAKD,EAAK,EAChB,GAAIA,EAAK,EAAG,MAAM,IAAI,MAAM,mDAAqDA,CAAE,EACnF,IAAME,EAAQ,IAAI,WAAWD,CAAE,EAC/B,QAASE,EAAK,EAAGC,EAAK,EAAGD,EAAKF,EAAIE,IAAMC,GAAM,EAAG,CAC/C,IAAMC,EAAKP,IAAcF,EAAI,WAAWQ,CAAE,CAAC,EACrCE,EAAKR,IAAcF,EAAI,WAAWQ,EAAK,CAAC,CAAC,EAC/C,GAAIC,IAAO,QAAaC,IAAO,OAAW,CACxC,IAAMC,EAAOX,EAAIQ,CAAE,EAAIR,EAAIQ,EAAK,CAAC,EACjC,MAAM,IAAI,MAAM,+CAAiDG,EAAO,cAAgBH,CAAE,CAC5F,CACAF,EAAMC,CAAE,EAAIE,EAAK,GAAKC,CACxB,CACA,OAAOJ,CACT,CAlBgBzB,EAAAd,IAAA,cAyBT,IAAM6C,IAAW/B,EAAA,SAA0B,CAAE,EAA5B,YAAX9B,GAAA,SAAQ6D,IAGd,eAAe5C,IACpB6C,EACAC,EACAC,EAAuB,CAEvB,IAAIC,EAAK,KAAK,IAAG,EACjB,QAASxB,EAAI,EAAGA,EAAIqB,EAAOrB,IAAK,CAC9BuB,EAAGvB,CAAC,EAEJ,IAAMyB,EAAO,KAAK,IAAG,EAAKD,EACtBC,GAAQ,GAAKA,EAAOH,IACxB,QAAM/D,GAAA,UAAQ,EACdiE,GAAMC,EACR,CACF,CAdsBpC,EAAAb,IAAA,aAwBtB,SAAgBC,IAAYiD,EAAW,CACrC,GAAI,OAAOA,GAAQ,SAAU,MAAM,IAAI,MAAM,iBAAiB,EAC9D,OAAO,IAAI,WAAW,IAAI,YAAW,EAAG,OAAOA,CAAG,CAAC,CACrD,CAHgBrC,EAAAZ,IAAA,eAShB,SAAgBC,IAAY6B,EAAiB,CAC3C,OAAO,IAAI,YAAW,EAAG,OAAOA,CAAK,CACvC,CAFgBlB,EAAAX,IAAA,eAWhB,SAAgBC,IAAQgD,EAAW,CACjC,OAAI,OAAOA,GAAS,WAAUA,EAAOlD,IAAYkD,CAAI,GACrDjE,GAAOiE,CAAI,EACJA,CACT,CAJgBtC,EAAAV,IAAA,WAYhB,SAAgBC,IAAgB+C,EAAc,CAC5C,OAAI,OAAOA,GAAS,WAAUA,EAAOlD,IAAYkD,CAAI,GACrDjE,GAAOiE,CAAI,EACJA,CACT,CAJgBtC,EAAAT,IAAA,mBAOhB,SAAgBC,OAAekB,EAAoB,CACjD,IAAI6B,EAAM,EACV,QAAS,EAAI,EAAG,EAAI7B,EAAO,OAAQ,IAAK,CACtC,IAAMX,EAAIW,EAAO,CAAC,EAClBrC,GAAO0B,CAAC,EACRwC,GAAOxC,EAAE,MACX,CACA,IAAMyC,EAAM,IAAI,WAAWD,CAAG,EAC9B,QAAS,EAAI,EAAGE,EAAM,EAAG,EAAI/B,EAAO,OAAQ,IAAK,CAC/C,IAAMX,EAAIW,EAAO,CAAC,EAClB8B,EAAI,IAAIzC,EAAG0C,CAAG,EACdA,GAAO1C,EAAE,MACX,CACA,OAAOyC,CACT,CAdgBxC,EAAAR,IAAA,eAiBhB,SAAgBC,IACdiD,EACAC,EAAS,CAET,GAAIA,IAAS,QAAa,CAAA,EAAG,SAAS,KAAKA,CAAI,IAAM,kBACnD,MAAM,IAAI,MAAM,uCAAuC,EAEzD,OADe,OAAO,OAAOD,EAAUC,CAAI,CAE7C,CARgB3C,EAAAP,IAAA,aAmBhB,IAAsBmD,IAAtB,KAA0B,OAAA,CAAA5C,EAAA,eAA1B9B,GAAA,KAAA0E,IA4CA,SAAgBlD,IACdmD,EAAuB,CAOvB,IAAMC,EAAQ9C,EAAC+C,GAA2BF,EAAQ,EAAG,OAAOvD,IAAQyD,CAAG,CAAC,EAAE,OAAM,EAAlE,SACRC,EAAMH,EAAQ,EACpB,OAAAC,EAAM,UAAYE,EAAI,UACtBF,EAAM,SAAWE,EAAI,SACrBF,EAAM,OAAS,IAAMD,EAAQ,EACtBC,CACT,CAdgB9C,EAAAN,IAAA,gBAgBhB,SAAgBC,IACdkD,EAA+B,CAO/B,IAAMC,EAAQ9C,EAAA,CAAC+C,EAAYJ,IAAyBE,EAASF,CAAI,EAAE,OAAOrD,IAAQyD,CAAG,CAAC,EAAE,OAAM,EAAhF,SACRC,EAAMH,EAAS,CAAA,CAAO,EAC5B,OAAAC,EAAM,UAAYE,EAAI,UACtBF,EAAM,SAAWE,EAAI,SACrBF,EAAM,OAAUH,GAAaE,EAASF,CAAI,EACnCG,CACT,CAdgB9C,EAAAL,IAAA,mBAgBhB,SAAgBC,IACdiD,EAAkC,CAOlC,IAAMC,EAAQ9C,EAAA,CAAC+C,EAAYJ,IAAyBE,EAASF,CAAI,EAAE,OAAOrD,IAAQyD,CAAG,CAAC,EAAE,OAAM,EAAhF,SACRC,EAAMH,EAAS,CAAA,CAAO,EAC5B,OAAAC,EAAM,UAAYE,EAAI,UACtBF,EAAM,SAAWE,EAAI,SACrBF,EAAM,OAAUH,GAAaE,EAASF,CAAI,EACnCG,CACT,CAdgB9C,EAAAJ,IAAA,eAeH1B,GAAA,gBAAuCwB,IACvCxB,GAAA,wBAAkDyB,IAClDzB,GAAA,2BAAiD0B,IAG9D,SAAgBC,IAAYoD,EAAc,GAAE,CAC1C,GAAInD,GAAA,QAAU,OAAOA,GAAA,OAAO,iBAAoB,WAC9C,OAAOA,GAAA,OAAO,gBAAgB,IAAI,WAAWmD,CAAW,CAAC,EAG3D,GAAInD,GAAA,QAAU,OAAOA,GAAA,OAAO,aAAgB,WAC1C,OAAO,WAAW,KAAKA,GAAA,OAAO,YAAYmD,CAAW,CAAC,EAExD,MAAM,IAAI,MAAM,wCAAwC,CAC1D,CATgBjD,EAAAH,IAAA,gPCzUhBqD,GAAA,QAAAC,IA7CA,IAAAC,IAAA,MAEAC,GAAA,MAWMC,IAAM,OAAO,CAAC,EACdC,IAAM,OAAO,CAAC,EACdC,IAAM,OAAO,CAAC,EACdC,IAAM,OAAO,CAAC,EACdC,IAAQ,OAAO,GAAG,EAClBC,IAAS,OAAO,GAAI,EACpBC,IAAoB,CAAA,EACpBC,IAAsB,CAAA,EACtBC,IAAuB,CAAA,EAC7B,QAASC,EAAQ,EAAGC,EAAIT,IAAKU,EAAI,EAAGC,EAAI,EAAGH,EAAQ,GAAIA,IAAS,CAE9D,CAACE,EAAGC,CAAC,EAAI,CAACA,GAAI,EAAID,EAAI,EAAIC,GAAK,CAAC,EAChCN,IAAQ,KAAK,GAAK,EAAIM,EAAID,EAAE,EAE5BJ,IAAU,MAAQE,EAAQ,IAAMA,EAAQ,GAAM,EAAK,EAAE,EAErD,IAAII,EAAIb,IACR,QAASc,EAAI,EAAGA,EAAI,EAAGA,IACrBJ,GAAMA,GAAKT,KAASS,GAAKP,KAAOE,KAAWD,IACvCM,EAAIR,MAAKW,GAAKZ,MAASA,KAAuB,OAAOa,CAAC,GAAKb,KAEjEO,IAAW,KAAKK,CAAC,CACnB,CACA,IAAME,OAAQjB,IAAA,OAAMU,IAAY,EAAI,EAC9BQ,IAAcD,IAAM,CAAC,EACrBE,IAAcF,IAAM,CAAC,EAGrBG,IAAQC,EAAA,CAACC,EAAWC,EAAWC,IAAeA,EAAI,MAAKxB,IAAA,QAAOsB,EAAGC,EAAGC,CAAC,KAAIxB,IAAA,QAAOsB,EAAGC,EAAGC,CAAC,EAA/E,SACRC,IAAQJ,EAAA,CAACC,EAAWC,EAAWC,IAAeA,EAAI,MAAKxB,IAAA,QAAOsB,EAAGC,EAAGC,CAAC,KAAIxB,IAAA,QAAOsB,EAAGC,EAAGC,CAAC,EAA/E,SAGd,SAAgBzB,IAAQyB,EAAgBE,EAAiB,GAAE,CACzD,IAAMC,EAAI,IAAI,YAAY,EAAK,EAE/B,QAAShB,EAAQ,GAAKe,EAAQf,EAAQ,GAAIA,IAAS,CAEjD,QAASE,EAAI,EAAGA,EAAI,GAAIA,IAAKc,EAAEd,CAAC,EAAIW,EAAEX,CAAC,EAAIW,EAAEX,EAAI,EAAE,EAAIW,EAAEX,EAAI,EAAE,EAAIW,EAAEX,EAAI,EAAE,EAAIW,EAAEX,EAAI,EAAE,EACvF,QAASA,EAAI,EAAGA,EAAI,GAAIA,GAAK,EAAG,CAC9B,IAAMe,GAAQf,EAAI,GAAK,GACjBgB,GAAQhB,EAAI,GAAK,GACjBiB,EAAKH,EAAEE,CAAI,EACXE,EAAKJ,EAAEE,EAAO,CAAC,EACfG,EAAKZ,IAAMU,EAAIC,EAAI,CAAC,EAAIJ,EAAEC,CAAI,EAC9BK,EAAKR,IAAMK,EAAIC,EAAI,CAAC,EAAIJ,EAAEC,EAAO,CAAC,EACxC,QAAS,EAAI,EAAG,EAAI,GAAI,GAAK,GAC3BJ,EAAEX,EAAI,CAAC,GAAKmB,EACZR,EAAEX,EAAI,EAAI,CAAC,GAAKoB,CAEpB,CAEA,IAAIC,EAAOV,EAAE,CAAC,EACVW,EAAOX,EAAE,CAAC,EACd,QAAST,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3B,IAAMqB,EAAQ3B,IAAUM,CAAC,EACnBiB,EAAKZ,IAAMc,EAAMC,EAAMC,CAAK,EAC5BH,EAAKR,IAAMS,EAAMC,EAAMC,CAAK,EAC5BC,EAAK7B,IAAQO,CAAC,EACpBmB,EAAOV,EAAEa,CAAE,EACXF,EAAOX,EAAEa,EAAK,CAAC,EACfb,EAAEa,CAAE,EAAIL,EACRR,EAAEa,EAAK,CAAC,EAAIJ,CACd,CAEA,QAASnB,EAAI,EAAGA,EAAI,GAAIA,GAAK,GAAI,CAC/B,QAASD,EAAI,EAAGA,EAAI,GAAIA,IAAKc,EAAEd,CAAC,EAAIW,EAAEV,EAAID,CAAC,EAC3C,QAASA,EAAI,EAAGA,EAAI,GAAIA,IAAKW,EAAEV,EAAID,CAAC,GAAK,CAACc,GAAGd,EAAI,GAAK,EAAE,EAAIc,GAAGd,EAAI,GAAK,EAAE,CAC5E,CAEAW,EAAE,CAAC,GAAKN,IAAYP,CAAK,EACzBa,EAAE,CAAC,GAAKL,IAAYR,CAAK,CAC3B,IACAV,GAAA,OAAM0B,CAAC,CACT,CAzCgBN,EAAAtB,IAAA,WA4ChB,IAAauC,IAAb,MAAaC,UAAetC,GAAA,IAAY,OAAA,CAAAoB,EAAA,eAetC,YACEmB,EACAC,EACAC,EACAC,EAAY,GACZjB,EAAiB,GAAE,CAYnB,GAVA,MAAK,EApBG,KAAA,IAAM,EACN,KAAA,OAAS,EACT,KAAA,SAAW,GAEX,KAAA,UAAY,GAKZ,KAAA,UAAY,GAYpB,KAAK,SAAWc,EAChB,KAAK,OAASC,EACd,KAAK,UAAYC,EACjB,KAAK,UAAYC,EACjB,KAAK,OAASjB,KAEdzB,GAAA,SAAQyC,CAAS,EAGb,EAAE,EAAIF,GAAYA,EAAW,KAC/B,MAAM,IAAI,MAAM,yCAAyC,EAC3D,KAAK,MAAQ,IAAI,WAAW,GAAG,EAC/B,KAAK,WAAUvC,GAAA,KAAI,KAAK,KAAK,CAC/B,CACA,OAAK,CACH,OAAO,KAAK,WAAU,CACxB,CACU,QAAM,IACdA,GAAA,YAAW,KAAK,OAAO,EACvBF,IAAQ,KAAK,QAAS,KAAK,MAAM,KACjCE,GAAA,YAAW,KAAK,OAAO,EACvB,KAAK,OAAS,EACd,KAAK,IAAM,CACb,CACA,OAAO2C,EAAW,IAChB3C,GAAA,SAAQ,IAAI,EACZ2C,KAAO3C,GAAA,SAAQ2C,CAAI,KACnB3C,GAAA,QAAO2C,CAAI,EACX,GAAM,CAAE,SAAAJ,EAAU,MAAAK,CAAK,EAAK,KACtBC,EAAMF,EAAK,OACjB,QAASG,EAAM,EAAGA,EAAMD,GAAO,CAC7B,IAAME,EAAO,KAAK,IAAIR,EAAW,KAAK,IAAKM,EAAMC,CAAG,EACpD,QAASE,EAAI,EAAGA,EAAID,EAAMC,IAAKJ,EAAM,KAAK,KAAK,GAAKD,EAAKG,GAAK,EAC1D,KAAK,MAAQP,GAAU,KAAK,OAAM,CACxC,CACA,OAAO,IACT,CACU,QAAM,CACd,GAAI,KAAK,SAAU,OACnB,KAAK,SAAW,GAChB,GAAM,CAAE,MAAAK,EAAO,OAAAJ,EAAQ,IAAAM,EAAK,SAAAP,CAAQ,EAAK,KAEzCK,EAAME,CAAG,GAAKN,GACTA,EAAS,OAAU,GAAKM,IAAQP,EAAW,GAAG,KAAK,OAAM,EAC9DK,EAAML,EAAW,CAAC,GAAK,IACvB,KAAK,OAAM,CACb,CACU,UAAUU,EAAe,IACjCjD,GAAA,SAAQ,KAAM,EAAK,KACnBA,GAAA,QAAOiD,CAAG,EACV,KAAK,OAAM,EACX,IAAMC,EAAY,KAAK,MACjB,CAAE,SAAAX,CAAQ,EAAK,KACrB,QAASO,EAAM,EAAGD,EAAMI,EAAI,OAAQH,EAAMD,GAAO,CAC3C,KAAK,QAAUN,GAAU,KAAK,OAAM,EACxC,IAAMQ,EAAO,KAAK,IAAIR,EAAW,KAAK,OAAQM,EAAMC,CAAG,EACvDG,EAAI,IAAIC,EAAU,SAAS,KAAK,OAAQ,KAAK,OAASH,CAAI,EAAGD,CAAG,EAChE,KAAK,QAAUC,EACfD,GAAOC,CACT,CACA,OAAOE,CACT,CACA,QAAQA,EAAe,CAErB,GAAI,CAAC,KAAK,UAAW,MAAM,IAAI,MAAM,uCAAuC,EAC5E,OAAO,KAAK,UAAUA,CAAG,CAC3B,CACA,IAAIE,EAAa,CACf,SAAAnD,GAAA,SAAQmD,CAAK,EACN,KAAK,QAAQ,IAAI,WAAWA,CAAK,CAAC,CAC3C,CACA,WAAWF,EAAe,CAExB,MADAjD,GAAA,SAAQiD,EAAK,IAAI,EACb,KAAK,SAAU,MAAM,IAAI,MAAM,6BAA6B,EAChE,YAAK,UAAUA,CAAG,EAClB,KAAK,QAAO,EACLA,CACT,CACA,QAAM,CACJ,OAAO,KAAK,WAAW,IAAI,WAAW,KAAK,SAAS,CAAC,CACvD,CACA,SAAO,CACL,KAAK,UAAY,MACjBjD,GAAA,OAAM,KAAK,KAAK,CAClB,CACA,WAAWoD,EAAW,CACpB,GAAM,CAAE,SAAAb,EAAU,OAAAC,EAAQ,UAAAC,EAAW,OAAAhB,EAAQ,UAAAiB,CAAS,EAAK,KAC3D,OAAAU,IAAAA,EAAO,IAAId,EAAOC,EAAUC,EAAQC,EAAWC,EAAWjB,CAAM,GAChE2B,EAAG,QAAQ,IAAI,KAAK,OAAO,EAC3BA,EAAG,IAAM,KAAK,IACdA,EAAG,OAAS,KAAK,OACjBA,EAAG,SAAW,KAAK,SACnBA,EAAG,OAAS3B,EAEZ2B,EAAG,OAASZ,EACZY,EAAG,UAAYX,EACfW,EAAG,UAAYV,EACfU,EAAG,UAAY,KAAK,UACbA,CACT,GA1HFvD,GAAA,OAAAwC,IA6HA,IAAMgB,GAAMjC,EAAA,CAACoB,EAAgBD,EAAkBE,OAC7CzC,GAAA,cAAa,IAAM,IAAIqC,IAAOE,EAAUC,EAAQC,CAAS,CAAC,EADhD,OAIC5C,GAAA,SAAyCwD,GAAI,EAAM,IAAK,IAAM,CAAC,EAE/DxD,GAAA,SAAyCwD,GAAI,EAAM,IAAK,IAAM,CAAC,EAE/DxD,GAAA,SAAyCwD,GAAI,EAAM,IAAK,IAAM,CAAC,EAE/DxD,GAAA,SAAyCwD,GAAI,EAAM,GAAI,IAAM,CAAC,EAG9DxD,GAAA,WAA2CwD,GAAI,EAAM,IAAK,IAAM,CAAC,EAEjExD,GAAA,WAA2CwD,GAAI,EAAM,IAAK,IAAM,CAAC,EAEjExD,GAAA,WAA2CwD,GAAI,EAAM,IAAK,IAAM,CAAC,EAEjExD,GAAA,WAA2CwD,GAAI,EAAM,GAAI,IAAM,CAAC,EAI7E,IAAMC,IAAWlC,EAAA,CAACoB,EAAgBD,EAAkBE,OAClDzC,GAAA,aACE,CAACuD,EAAkB,CAAA,IACjB,IAAIlB,IAAOE,EAAUC,EAAQe,EAAK,QAAU,OAAYd,EAAYc,EAAK,MAAO,EAAI,CAAC,EAH1E,YAOJ1D,GAAA,SAA2CyD,IAAS,GAAM,IAAK,IAAM,CAAC,EAEtEzD,GAAA,SAA2CyD,IAAS,GAAM,IAAK,IAAM,CAAC,ICjQnF,IAAAE,IAAAC,EAAA,CAAAC,IAAAC,KAAA,CACA,GAAM,CAAE,SAAUC,GAAK,EAAI,MAErBC,IAAgB,GAChBC,IAAY,GAEZC,IAAgBC,EAAA,CAACC,EAAS,EAAGC,EAAS,KAAK,SAAW,CAC1D,IAAIC,EAAU,GAEd,KAAOA,EAAQ,OAASF,GACtBE,EAAUA,EAAU,KAAK,MAAMD,EAAO,EAAI,EAAE,EAAE,SAAS,EAAE,EAE3D,OAAOC,CACT,EAPsB,iBAatB,SAASC,IAAYC,EAAK,CACxB,IAAIC,EAAO,GAEPC,EAAQ,GACZ,QAAW,KAAKF,EAAI,OAAO,EAAG,CAC5B,IAAMG,EAAK,OAAO,CAAC,EACnBD,GAASA,GAASD,GAAQE,CAC5B,CACA,OAAOD,CACT,CATSP,EAAAI,IAAA,eAWT,IAAMK,IAAOT,EAAA,CAACU,EAAQ,KAGbN,IAAYR,IAAKc,CAAK,CAAC,EAAE,SAAS,EAAE,EAAE,MAAM,CAAC,EAHzC,QAMPC,IAAW,MAAM,KAAK,CAAE,OAAQ,EAAG,EAAG,CAACC,EAAGC,IAC9C,OAAO,aAAaA,EAAI,EAAE,CAC5B,EAEMC,IAAed,EAACE,GACpBS,IAAS,KAAK,MAAMT,EAAO,EAAIS,IAAS,MAAM,CAAC,EAD5B,gBASfI,IAAoBf,EAAA,CAAC,CACzB,UAAAgB,EAAY,OAAO,OAAW,IAC1B,OACA,OAAO,OAAW,IAClB,OACA,CAAC,EACL,OAAAd,EAAS,KAAK,MAChB,EAAI,CAAC,IAAM,CACT,IAAMe,EAAU,OAAO,KAAKD,CAAS,EAAE,SAAS,EAC1CE,EAAeD,EAAQ,OACzBA,EAAUlB,IAAcD,IAAWI,CAAM,EACzCH,IAAcD,IAAWI,CAAM,EAEnC,OAAOO,IAAKS,CAAY,EAAE,UAAU,EAAGpB,GAAS,CAClD,EAd0B,qBAgBpBqB,IAAgBnB,EAACoB,GAAU,IACxBA,IADa,iBAMhBC,IAAkB,UAElBC,IAAOtB,EAAA,CAAC,CAIZ,OAAAE,EAAS,KAAK,OACd,QAAAqB,EAAUJ,IAAc,KAAK,MAAMjB,EAAO,EAAImB,GAAe,CAAC,EAC9D,OAAApB,EAASJ,IACT,YAAA2B,EAAcT,IAAkB,CAAE,OAAAb,CAAO,CAAC,CAC5C,EAAI,CAAC,IACIF,EAAA,UAAiB,CACtB,IAAMyB,EAAcX,IAAaZ,CAAM,EAIjCwB,EAAO,KAAK,IAAI,EAAE,SAAS,EAAE,EAC7BN,EAAQG,EAAQ,EAAE,SAAS,EAAE,EAK7BI,EAAO5B,IAAcE,EAAQC,CAAM,EACnC0B,EAAY,GAAGF,EAAOC,EAAOP,EAAQI,CAAW,GAEtD,MAAO,GAAGC,EAAchB,IAAKmB,CAAS,EAAE,UAAU,EAAG3B,CAAM,CAAC,EAC9D,EAfO,SATI,QA2BP4B,IAAWP,IAAK,EAEhBQ,IAAS9B,EAAA,CAAC+B,EAAI,CAAE,UAAAC,EAAY,EAAG,UAAAC,EAAYnC,GAAU,EAAI,CAAC,IAAM,CACpE,IAAMG,EAAS8B,EAAG,OACZG,EAAQ,cAEd,GAAI,CACF,GACE,OAAOH,GAAO,UACd9B,GAAU+B,GACV/B,GAAUgC,GACVC,EAAM,KAAKH,CAAE,EAEb,MAAO,EACX,QAAE,CACF,CAEA,MAAO,EACT,EAhBe,UAkBfpC,GAAO,QAAQ,aAAe,KAAO,CAAE,cAAAE,IAAe,UAAAC,GAAU,GAChEH,GAAO,QAAQ,KAAO2B,IACtB3B,GAAO,QAAQ,SAAWkC,IAC1BlC,GAAO,QAAQ,YAAcS,IAC7BT,GAAO,QAAQ,cAAgBwB,IAC/BxB,GAAO,QAAQ,kBAAoBoB,IACnCpB,GAAO,QAAQ,OAASmC,MC9HxB,IAAAK,IAAAC,EAAA,CAAAC,IAAAC,MAAA,IAAM,CAAE,SAAAC,IAAU,KAAAC,IAAM,aAAAC,IAAc,OAAAC,GAAO,EAAI,MAEjDJ,IAAO,QAAQ,SAAWC,IAC1BD,IAAO,QAAQ,KAAOE,IACtBF,IAAO,QAAQ,aAAeG,IAC9BH,IAAO,QAAQ,OAASI,MCLxB,IAAAC,IAAAC,EAAA,CAAAC,IAAAC,MAAA,CAKAA,IAAO,QAAUC,IACjB,SAASA,IAAQC,EAAIC,EAAI,CACvB,GAAID,GAAMC,EAAI,OAAOF,IAAOC,CAAE,EAAEC,CAAE,EAElC,GAAI,OAAOD,GAAO,WAChB,MAAM,IAAI,UAAU,uBAAuB,EAE7C,cAAO,KAAKA,CAAE,EAAE,QAAQ,SAAUE,EAAG,CACnCC,EAAQD,CAAC,EAAIF,EAAGE,CAAC,CACnB,CAAC,EAEMC,EAEP,SAASA,GAAU,CAEjB,QADIC,EAAO,IAAI,MAAM,UAAU,MAAM,EAC5BC,EAAI,EAAGA,EAAID,EAAK,OAAQC,IAC/BD,EAAKC,CAAC,EAAI,UAAUA,CAAC,EAEvB,IAAIC,EAAMN,EAAG,MAAM,KAAMI,CAAI,EACzBH,EAAKG,EAAKA,EAAK,OAAO,CAAC,EAC3B,OAAI,OAAOE,GAAQ,YAAcA,IAAQL,GACvC,OAAO,KAAKA,CAAE,EAAE,QAAQ,SAAUC,EAAG,CACnCI,EAAIJ,CAAC,EAAID,EAAGC,CAAC,CACf,CAAC,EAEII,CACT,CAbSC,EAAAJ,EAAA,UAcX,CA1BSI,EAAAR,IAAA,YCNT,IAAAS,IAAAC,EAAA,CAAAC,IAAAC,MAAA,KAAIC,IAAS,MACbD,IAAO,QAAUC,IAAOC,GAAO,EAE/B,IAAIC,IAAO,MAEX,SAASD,IAASE,EAAI,CACpB,IAAIC,EAAO,GACX,OAAAF,IAAK,UAAY,CACfE,EAAO,EACT,CAAC,EAEMC,EAAA,UAAqB,CAC1B,IAAIC,EAAO,UACPC,EAAK,KACLH,EACFF,IAAK,UAAW,CACdC,EAAG,MAAMI,EAAID,CAAI,CACnB,CAAC,EAEDH,EAAG,MAAMI,EAAID,CAAI,CACrB,EATO,YAUT,CAhBSD,EAAAJ,IAAA,aCLT,IAAAO,IAAAC,EAAA,CAAAC,IAAAC,MAAA,KAAIC,IAAS,MACbD,IAAO,QAAUC,IAAOC,GAAI,EAC5BF,IAAO,QAAQ,OAASC,IAAOE,GAAU,EAEzCD,IAAK,MAAQA,IAAK,UAAY,CAC5B,OAAO,eAAe,SAAS,UAAW,OAAQ,CAChD,MAAOE,EAAA,UAAY,CACjB,OAAOF,IAAK,IAAI,CAClB,EAFO,SAGP,aAAc,EAChB,CAAC,EAED,OAAO,eAAe,SAAS,UAAW,aAAc,CACtD,MAAOE,EAAA,UAAY,CACjB,OAAOD,IAAW,IAAI,CACxB,EAFO,SAGP,aAAc,EAChB,CAAC,CACH,CAAC,EAED,SAASD,IAAMG,EAAI,CACjB,IAAIC,EAAIF,EAAA,UAAY,CAClB,OAAIE,EAAE,OAAeA,EAAE,OACvBA,EAAE,OAAS,GACJA,EAAE,MAAQD,EAAG,MAAM,KAAM,SAAS,EAC3C,EAJQ,KAKR,OAAAC,EAAE,OAAS,GACJA,CACT,CARSF,EAAAF,IAAA,QAUT,SAASC,IAAYE,EAAI,CACvB,IAAIC,EAAIF,EAAA,UAAY,CAClB,GAAIE,EAAE,OACJ,MAAM,IAAI,MAAMA,EAAE,SAAS,EAC7B,OAAAA,EAAE,OAAS,GACJA,EAAE,MAAQD,EAAG,MAAM,KAAM,SAAS,CAC3C,EALQ,KAMJE,EAAOF,EAAG,MAAQ,+BACtB,OAAAC,EAAE,UAAYC,EAAO,sCACrBD,EAAE,OAAS,GACJA,CACT,CAXSF,EAAAD,IAAA,+LC9BT,IAAMK,IAAS,CACb,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,UAGDC,IAAW,aACfC,IAAW,YAEb,SAASC,IAAWC,EAAK,CACvB,OAAOJ,IAAOI,CAAG,EADVC,EAAAF,IAAA,cAIF,SAASG,IAAOC,EAAuB,CAC5C,QAASC,EAAI,EAAGA,EAAI,UAAU,OAAQA,IACpC,QAASC,KAAO,UAAUD,CAAC,EACrB,OAAO,UAAU,eAAe,KAAK,UAAUA,CAAC,EAAGC,CAAG,IACxDF,EAAIE,CAAG,EAAI,UAAUD,CAAC,EAAEC,CAAG,GAKjC,OAAOF,EATOF,EAAAC,IAAA,UAYT,IAAII,IAAW,OAAO,UAAU,yBAKvC,IAAIC,IAAaN,EAAA,SAASO,EAAO,CAC/B,OAAO,OAAOA,GAAU,YADT,cAKbD,IAAW,GAAG,IAChBE,GAOO,WAPPF,IAAaN,EAAA,SAASO,EAAO,CAC3B,OACE,OAAOA,GAAU,YACjBF,IAAS,KAAKE,CAAK,IAAM,qBAHhB,kBAON,WAAAD,IAIF,IAAMG,IACX,MAAM,SACN,SAASF,EAAO,CACd,OAAOA,GAAS,OAAOA,GAAU,SAC7BF,IAAS,KAAKE,CAAK,IAAM,iBACzB,mBAID,SAASG,IAAQC,EAAOJ,EAAO,CACpC,QAASJ,EAAI,EAAGS,EAAMD,EAAM,OAAQR,EAAIS,EAAKT,IAC3C,GAAIQ,EAAMR,CAAC,IAAMI,EACf,OAAOJ,EAGX,MAAO,GANOH,EAAAU,IAAA,WAST,SAASG,IAAiBC,EAAQ,CACvC,GAAI,OAAOA,GAAW,SAAU,CAE9B,GAAIA,GAAUA,EAAO,OACnB,OAAOA,EAAO,OAAM,EACf,GAAIA,GAAU,KACnB,MAAO,GACF,GAAI,CAACA,EACV,OAAOA,EAAS,GAMlBA,EAAS,GAAKA,EAGhB,OAAKjB,IAAS,KAAKiB,CAAM,EAGlBA,EAAO,QAAQlB,IAAUE,GAAU,EAFjCgB,EAlBKd,EAAAa,IAAA,oBAuBT,SAASE,IAAQR,EAAO,CAC7B,MAAI,CAACA,GAASA,IAAU,EACf,GACE,GAAAE,IAAQF,CAAK,GAAKA,EAAM,SAAW,GAHhCP,EAAAe,IAAA,WAUT,SAASC,IAAYC,EAAQ,CAClC,IAAIC,EAAQjB,IAAO,CAAA,EAAIgB,CAAM,EAC7B,OAAAC,EAAM,QAAUD,EACTC,EAHOlB,EAAAgB,IAAA,eAMT,SAASG,IAAYC,EAAQC,EAAK,CACvC,OAAAD,EAAO,KAAOC,EACPD,EAFOpB,EAAAmB,IAAA,eAKT,SAASG,IAAkBC,EAAaC,EAAI,CACjD,OAAQD,EAAcA,EAAc,IAAM,IAAMC,EADlCxB,EAAAsB,IAAA,2ECjHhB,IAAMG,IAAa,CACjB,cACA,WACA,aACA,gBACA,UACA,OACA,SACA,OAAO,EAGT,SAASC,IAAUC,EAASC,EAAM,CAChC,IAAIC,EAAMD,GAAQA,EAAK,IACrBE,EAAI,OACJC,EAAa,OACbC,EAAM,OACNC,EAAS,OAEPJ,IACFC,EAAOD,EAAI,MAAM,KACjBE,EAAgBF,EAAI,IAAI,KACxBG,EAASH,EAAI,MAAM,OACnBI,EAAYJ,EAAI,IAAI,OAEpBF,GAAW,MAAQG,EAAO,IAAME,GAMlC,QAHIE,EAAM,MAAM,UAAU,YAAY,KAAK,KAAMP,CAAO,EAG/CQ,EAAM,EAAGA,EAAMV,IAAW,OAAQU,IACzC,KAAKV,IAAWU,CAAG,CAAC,EAAID,EAAIT,IAAWU,CAAG,CAAC,EAIzC,MAAM,mBACR,MAAM,kBAAkB,KAAMT,GAAS,EAGzC,GAAI,CACEG,IACF,KAAK,WAAaC,EAClB,KAAK,cAAgBC,EAIjB,OAAO,gBACT,OAAO,eAAe,KAAM,SAAU,CACpC,MAAOC,EACP,WAAY,GACb,EACD,OAAO,eAAe,KAAM,YAAa,CACvC,MAAOC,EACP,WAAY,GACb,IAED,KAAK,OAASD,EACd,KAAK,UAAYC,SAGT,GAjDPG,EAAAV,IAAA,aAsDTA,IAAU,UAAY,IAAI,kBAEXA,4GCjEA,SAASW,EAAU,CAChCA,EAAS,eAAe,qBAAsB,SAASC,EAASC,EAAS,CACvE,IAAIC,EAAUD,EAAQ,QACpBE,EAAKF,EAAQ,GAEf,GAAID,IAAY,GACd,OAAOG,EAAG,IAAI,EACT,GAAIH,IAAY,IAASA,GAAW,KACzC,OAAOE,EAAQ,IAAI,EACd,GAAIE,IAAA,QAAQJ,CAAO,EACxB,OAAIA,EAAQ,OAAS,GACfC,EAAQ,MACVA,EAAQ,IAAM,CAACA,EAAQ,IAAI,GAGtBF,EAAS,QAAQ,KAAKC,EAASC,CAAO,GAEtCC,EAAQ,IAAI,EAGrB,GAAID,EAAQ,MAAQA,EAAQ,IAAK,CAC/B,IAAII,EAAOD,IAAA,YAAYH,EAAQ,IAAI,EACnCI,EAAK,YAAcD,IAAA,kBACjBH,EAAQ,KAAK,YACbA,EAAQ,IAAI,EAEdA,EAAU,CAAE,KAAMI,CAAI,EAGxB,OAAOF,EAAGH,EAASC,CAAO,EAE7B,sNCxBY,SAASK,EAAU,CAChCA,EAAS,eAAe,OAAQ,SAASC,EAASC,EAAS,CACzD,GAAI,CAACA,EACH,MAAM,IAAAC,IAAA,QAAc,6BAA6B,EAGnD,IAAIC,EAAKF,EAAQ,GACfG,EAAUH,EAAQ,QAClBI,EAAI,EACJC,EAAM,GACNC,EAAI,OACJC,EAAW,OAETP,EAAQ,MAAQA,EAAQ,MAC1BO,EACEC,IAAA,kBAAkBR,EAAQ,KAAK,YAAaA,EAAQ,IAAI,CAAC,CAAC,EAAI,KAG9DQ,IAAA,WAAWT,CAAO,IACpBA,EAAUA,EAAQ,KAAK,IAAI,GAGzBC,EAAQ,OACVM,EAAOE,IAAA,YAAYR,EAAQ,IAAI,GAGjC,SAASS,EAAcC,EAAOC,EAAOC,EAAM,CACrCN,IACFA,EAAK,IAAMI,EACXJ,EAAK,MAAQK,EACbL,EAAK,MAAQK,IAAU,EACvBL,EAAK,KAAO,CAAC,CAACM,EAEVL,IACFD,EAAK,YAAcC,EAAcG,IAIrCL,EACEA,EACAH,EAAGH,EAAQW,CAAK,EAAG,CACjB,KAAMJ,EACN,YAAaE,IAAA,YACX,CAACT,EAAQW,CAAK,EAAGA,CAAK,EACtB,CAACH,EAAcG,EAAO,IAAI,CAAC,EAE9B,EAGL,GAvBSG,EAAAJ,EAAA,iBAuBLV,GAAW,OAAOA,GAAY,SAChC,GAAIS,IAAA,QAAQT,CAAO,EACjB,QAASe,EAAIf,EAAQ,OAAQK,EAAIU,EAAGV,IAC9BA,KAAKL,GACPU,EAAcL,EAAGA,EAAGA,IAAML,EAAQ,OAAS,CAAC,UAGvC,OAAO,QAAW,YAAcA,EAAQ,OAAO,QAAQ,EAAG,CAGnE,QAFMgB,EAAa,CAAA,EACbC,EAAWjB,EAAQ,OAAO,QAAQ,EAAC,EAChCkB,EAAKD,EAAS,KAAI,EAAI,CAACC,EAAG,KAAMA,EAAKD,EAAS,KAAI,EACzDD,EAAW,KAAKE,EAAG,KAAK,EAE1BlB,EAAUgB,EACV,QAASD,EAAIf,EAAQ,OAAQK,EAAIU,EAAGV,IAClCK,EAAcL,EAAGA,EAAGA,IAAML,EAAQ,OAAS,CAAC,kBAG9C,IAAImB,EAAQ,OAEZ,OAAO,KAAKnB,CAAO,EAAE,QAAQ,SAAAoB,EAAO,CAI9BD,IAAa,QACfT,EAAcS,EAAUd,EAAI,CAAC,EAE/Bc,EAAWC,EACXf,IACD,EACGc,IAAa,QACfT,EAAcS,EAAUd,EAAI,EAAG,EAAI,MAKzC,OAAIA,IAAM,IACRC,EAAMF,EAAQ,IAAI,GAGbE,EACR,6MCjGY,SAASe,EAAU,CAChCA,EAAS,eAAe,gBAAiB,UAAgC,CACvE,GAAI,UAAU,SAAW,EAKvB,MAAM,IAAAC,IAAA,QACJ,oBAAsB,UAAU,UAAU,OAAS,CAAC,EAAE,KAAO,GAAG,EAGrE,sNCVY,SAASC,EAAU,CAChCA,EAAS,eAAe,KAAM,SAASC,EAAaC,EAAS,CAC3D,GAAI,UAAU,QAAU,EACtB,MAAM,IAAAC,IAAA,QAAc,mCAAmC,EASzD,OAPIC,IAAA,WAAWH,CAAW,IACxBA,EAAcA,EAAY,KAAK,IAAI,GAMhC,CAACC,EAAQ,KAAK,aAAe,CAACD,GAAgBG,IAAA,QAAQH,CAAW,EAC7DC,EAAQ,QAAQ,IAAI,EAEpBA,EAAQ,GAAG,IAAI,EAEzB,EAEDF,EAAS,eAAe,SAAU,SAASC,EAAaC,EAAS,CAC/D,GAAI,UAAU,QAAU,EACtB,MAAM,IAAAC,IAAA,QAAc,uCAAuC,EAE7D,OAAOH,EAAS,QAAQ,GAAM,KAAK,KAAMC,EAAa,CACpD,GAAIC,EAAQ,QACZ,QAASA,EAAQ,GACjB,KAAMA,EAAQ,KACf,EACF,8FC/BY,SAASG,EAAU,CAChCA,EAAS,eAAe,MAAO,UAAiC,CAG9D,QAFIC,EAAO,CAAC,MAAS,EACnBC,EAAU,UAAU,UAAU,OAAS,CAAC,EACjC,EAAI,EAAG,EAAI,UAAU,OAAS,EAAG,IACxCD,EAAK,KAAK,UAAU,CAAC,CAAC,EAGxB,IAAIE,EAAQ,EACRD,EAAQ,KAAK,OAAS,KACxBC,EAAQD,EAAQ,KAAK,MACZA,EAAQ,MAAQA,EAAQ,KAAK,OAAS,OAC/CC,EAAQD,EAAQ,KAAK,OAEvBD,EAAK,CAAC,EAAIE,EAEVH,EAAS,IAAG,MAAZA,EAAgBC,CAAI,EACrB,8FCjBY,SAASG,EAAU,CAChCA,EAAS,eAAe,SAAU,SAASC,EAAKC,EAAOC,EAAS,CAC9D,OAAKF,GAIEE,EAAQ,eAAeF,EAAKC,CAAK,EACzC,sNCEY,SAASE,EAAU,CAChCA,EAAS,eAAe,OAAQ,SAASC,EAASC,EAAS,CACzD,GAAI,UAAU,QAAU,EACtB,MAAM,IAAAC,IAAA,QAAc,qCAAqC,EAEvDC,IAAA,WAAWH,CAAO,IACpBA,EAAUA,EAAQ,KAAK,IAAI,GAG7B,IAAII,EAAKH,EAAQ,GAEjB,GAAKE,IAAA,QAAQH,CAAO,EAelB,OAAOC,EAAQ,QAAQ,IAAI,EAd3B,IAAII,EAAOJ,EAAQ,KACnB,OAAIA,EAAQ,MAAQA,EAAQ,MAC1BI,EAAOF,IAAA,YAAYF,EAAQ,IAAI,EAC/BI,EAAK,YAAcF,IAAA,kBACjBF,EAAQ,KAAK,YACbA,EAAQ,IAAI,CAAC,CAAC,GAIXG,EAAGJ,EAAS,CACjB,KAAMK,EACN,YAAaF,IAAA,YAAY,CAACH,CAAO,EAAG,CAACK,GAAQA,EAAK,WAAW,CAAC,EAC/D,EAIJ,sXC7BI,SAASC,IAAuBC,EAAU,CAC/CC,IAAA,QAA2BD,CAAQ,EACnCE,IAAA,QAAaF,CAAQ,EACrBG,IAAA,QAAsBH,CAAQ,EAC9BI,IAAA,QAAWJ,CAAQ,EACnBK,IAAA,QAAYL,CAAQ,EACpBM,IAAA,QAAeN,CAAQ,EACvBO,IAAA,QAAaP,CAAQ,EAPPQ,EAAAT,IAAA,0BAUT,SAASU,IAAkBT,EAAUU,EAAYC,EAAY,CAC9DX,EAAS,QAAQU,CAAU,IAC7BV,EAAS,MAAMU,CAAU,EAAIV,EAAS,QAAQU,CAAU,EACnDC,GACH,OAAOX,EAAS,QAAQU,CAAU,GAJxBF,EAAAC,IAAA,qGChBD,SAASG,EAAU,CAChCA,EAAS,kBAAkB,SAAU,SAASC,EAAIC,EAAOC,EAAWC,EAAS,CAC3E,IAAIC,EAAMJ,EACV,OAAKC,EAAM,WACTA,EAAM,SAAW,CAAA,EACjBG,EAAMC,EAAA,SAASC,EAASH,EAAS,CAE/B,IAAII,EAAWL,EAAU,SACzBA,EAAU,SAAWM,IAAA,OAAO,CAAA,EAAID,EAAUN,EAAM,QAAQ,EACxD,IAAIG,EAAMJ,EAAGM,EAASH,CAAO,EAC7B,OAAAD,EAAU,SAAWK,EACdH,GANH,QAURH,EAAM,SAASE,EAAQ,KAAK,CAAC,CAAC,EAAIA,EAAQ,GAEnCC,EACR,8NClBI,SAASK,IAA0BC,EAAU,CAClDC,IAAA,QAAeD,CAAQ,EADTE,EAAAH,IAAA,iGCAZI,GAAS,CACX,UAAW,CAAC,QAAS,OAAQ,OAAQ,OAAO,EAC5C,MAAO,OAGP,YAAaC,EAAA,SAASC,EAAO,CAC3B,GAAI,OAAOA,GAAU,SAAU,CAC7B,IAAIC,EAAWC,IAAA,QAAQJ,GAAO,UAAWE,EAAM,YAAW,CAAE,EACxDC,GAAY,EACdD,EAAQC,EAERD,EAAQ,SAASA,EAAO,EAAE,EAI9B,OAAOA,GAVI,eAcb,IAAKD,EAAA,SAASC,EAAmB,CAG/B,GAFAA,EAAQF,GAAO,YAAYE,CAAK,EAG9B,OAAO,QAAY,KACnBF,GAAO,YAAYA,GAAO,KAAK,GAAKE,EACpC,CACA,IAAIG,EAASL,GAAO,UAAUE,CAAK,EAE9B,QAAQG,CAAM,IACjBA,EAAS,kCAVSC,EAAO,MAAAC,EAAA,EAAAA,EAAA,EAAA,CAAA,EAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAPF,EAAOE,EAAA,CAAA,EAAA,UAAAA,CAAA,EAY3B,QAAQH,CAAM,EAAA,MAAd,QAAmBC,CAAO,IAZzB,oBAiBQN,uHC9BR,SAASS,KAAkC,4BAATC,EAAO,MAAAC,CAAA,EAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAPF,EAAOE,CAAA,EAAA,UAAAA,CAAA,EAC9C,OAAOC,IAAA,OAAA,MAAA,OAAA,CAAO,OAAO,OAAO,IAAI,CAAC,EAAA,OAAKH,CAAO,CAAA,EAD/BI,EAAAL,IAAA,2RCLVM,IAAmB,OAAO,OAAO,IAAI,EAEpC,SAASC,IAAyBC,EAAgB,CACvD,IAAIC,EAAyB,OAAO,OAAO,IAAI,EAC/CA,EAAuB,YAAiB,GACxCA,EAAuB,iBAAsB,GAC7CA,EAAuB,iBAAsB,GAC7CA,EAAuB,iBAAsB,GAE7C,IAAIC,EAA2B,OAAO,OAAO,IAAI,EAEjD,OAAAA,EAAyB,UAAe,GAEjC,CACL,WAAY,CACV,UAAWC,IAAA,sBACTD,EACAF,EAAe,sBAAsB,EAEvC,aAAcA,EAAe,+BAE/B,QAAS,CACP,UAAWG,IAAA,sBACTF,EACAD,EAAe,mBAAmB,EAEpC,aAAcA,EAAe,6BAxBnBI,EAAAL,IAAA,4BA6BT,SAASM,IAAgBC,EAAQC,EAAoBC,EAAc,CACxE,OACSC,IADL,OAAOH,GAAW,WACEC,EAAmB,QAEnBA,EAAmB,WAFSC,CAAY,EAFlDJ,EAAAC,IAAA,mBAQhB,SAASI,IAAeC,EAA2BF,EAAc,CAC/D,OAAIE,EAA0B,UAAUF,CAAY,IAAM,OACjDE,EAA0B,UAAUF,CAAY,IAAM,GAE3DE,EAA0B,eAAiB,OACtCA,EAA0B,cAEnCC,IAA+BH,CAAY,EACpC,IARAJ,EAAAK,IAAA,kBAWT,SAASE,IAA+BH,EAAc,CAChDV,IAAiBU,CAAY,IAAM,KACrCV,IAAiBU,CAAY,EAAI,GACjCI,IAAA,QAAO,IACL,QACA,+DAA+DJ,EAAY;;gHAEwC,GAPhHJ,EAAAO,IAAA,kCAYF,SAASE,KAAwB,CACtC,OAAO,KAAKf,GAAgB,EAAE,QAAQ,SAAAU,EAAgB,CACpD,OAAOV,IAAiBU,CAAY,EACrC,EAHaJ,EAAAS,IAAA,iRC1DHC,IAAU,uBAChB,IAAMC,IAAoB,2BAC1B,IAAMC,IAAoC,2CAE1C,IAAMC,IAAmB,CAC9B,EAAG,cACH,EAAG,gBACH,EAAG,gBACH,EAAG,WACH,EAAG,mBACH,EAAG,kBACH,EAAG,kBACH,EAAG,oCAGL,IAAMC,IAAa,kBAEZ,SAASC,IAAsBC,EAASC,EAAUC,EAAY,CACnE,KAAK,QAAUF,GAAW,CAAA,EAC1B,KAAK,SAAWC,GAAY,CAAA,EAC5B,KAAK,WAAaC,GAAc,CAAA,EAEhCC,IAAA,uBAAuB,IAAI,EAC3BC,IAAA,0BAA0B,IAAI,EANhBC,EAAAN,IAAA,yBAShBA,IAAsB,UAAY,CAChC,YAAaA,IAEb,OAAMO,IAAA,QACN,IAAKA,IAAA,QAAO,IAEZ,eAAgBD,EAAA,SAASE,EAAMC,EAAI,CACjC,GAAIC,GAAA,SAAS,KAAKF,CAAI,IAAMT,IAAY,CACtC,GAAIU,EACF,MAAM,IAAAE,IAAA,QAAc,yCAAyC,EAE/DD,GAAA,OAAO,KAAK,QAASF,CAAI,OAEzB,KAAK,QAAQA,CAAI,EAAIC,GAPT,kBAUhB,iBAAkBH,EAAA,SAASE,EAAM,CAC/B,OAAO,KAAK,QAAQA,CAAI,GADR,oBAIlB,gBAAiBF,EAAA,SAASE,EAAMI,EAAS,CACvC,GAAIF,GAAA,SAAS,KAAKF,CAAI,IAAMT,IAC1BW,GAAA,OAAO,KAAK,SAAUF,CAAI,MACrB,CACL,GAAI,OAAOI,EAAY,IACrB,MAAM,IAAAD,IAAA,QAAA,4CACwCH,EAAI,gBAAA,EAGpD,KAAK,SAASA,CAAI,EAAII,IATT,mBAYjB,kBAAmBN,EAAA,SAASE,EAAM,CAChC,OAAO,KAAK,SAASA,CAAI,GADR,qBAInB,kBAAmBF,EAAA,SAASE,EAAMC,EAAI,CACpC,GAAIC,GAAA,SAAS,KAAKF,CAAI,IAAMT,IAAY,CACtC,GAAIU,EACF,MAAM,IAAAE,IAAA,QAAc,4CAA4C,EAElED,GAAA,OAAO,KAAK,WAAYF,CAAI,OAE5B,KAAK,WAAWA,CAAI,EAAIC,GAPT,qBAUnB,oBAAqBH,EAAA,SAASE,EAAM,CAClC,OAAO,KAAK,WAAWA,CAAI,GADR,uBAOrB,4BAA2BF,EAAA,UAAG,CAC5BO,IAAA,sBAAA,GADyB,gCAKtB,IAAIC,IAAMP,IAAA,QAAO,kBAEf,YAAWG,GAAA,eAAE,OAAMH,IAAA,+DC5F5B,SAASQ,IAAWC,EAAQ,CAC1B,KAAK,OAASA,EADPC,EAAAF,IAAA,cAITA,IAAW,UAAU,SAAWA,IAAW,UAAU,OAAS,UAAW,CACvE,MAAO,GAAK,KAAK,oBAGJA,gGCTR,SAASG,IAAWC,EAAQC,EAAoB,CACrD,GAAI,OAAOD,GAAW,WAGpB,OAAOA,EAET,IAAIE,EAAUC,EAAA,UAAkC,CAC9C,IAAMC,EAAU,UAAU,UAAU,OAAS,CAAC,EAC9C,iBAAU,UAAU,OAAS,CAAC,EAAIH,EAAmBG,CAAO,EACrDJ,EAAO,MAAM,KAAM,SAAS,GAHvB,WAKd,OAAOE,EAXOC,EAAAJ,IAAA,0cCAJM,GAAKC,IAAAC,GAAA,8DAeV,SAASC,IAAcC,EAAc,CAC1C,IAAMC,EAAoBD,GAAgBA,EAAa,CAAC,GAAM,EAC5DE,EAAeC,GAAA,kBAEjB,GACE,EAAAF,GAAgBE,GAAA,mCAChBF,GAAgBE,GAAA,mBAKlB,GAAIF,EAAgBE,GAAA,kCAAsC,CACxD,IAAMC,EAAkBD,GAAA,iBAAiBD,CAAe,EACtDG,EAAmBF,GAAA,iBAAiBF,CAAgB,EACtD,MAAM,IAAAK,GAAA,QACJ,6IAEEF,EACA,oDACAC,EACA,IAAI,MAIR,OAAM,IAAAC,GAAA,QACJ,wIAEEN,EAAa,CAAC,EACd,IAAI,EA5BIO,EAAAR,IAAA,iBAiCT,SAASS,IAASC,EAAcC,EAAK,CAE1C,GAAI,CAACA,EACH,MAAM,IAAAJ,GAAA,QAAc,mCAAmC,EAEzD,GAAI,CAACG,GAAgB,CAACA,EAAa,KACjC,MAAM,IAAAH,GAAA,QAAc,4BAA8B,OAAOG,CAAY,EAGvEA,EAAa,KAAK,UAAYA,EAAa,OAI3CC,EAAI,GAAG,cAAcD,EAAa,QAAQ,EAG1C,IAAME,EACJF,EAAa,UAAYA,EAAa,SAAS,CAAC,IAAM,EAExD,SAASG,EAAqBC,EAASC,EAASC,EAAS,CACnDA,EAAQ,OACVD,EAAUlB,GAAM,OAAO,CAAA,EAAIkB,EAASC,EAAQ,IAAI,EAC5CA,EAAQ,MACVA,EAAQ,IAAI,CAAC,EAAI,KAGrBF,EAAUH,EAAI,GAAG,eAAe,KAAK,KAAMG,EAASC,EAASC,CAAO,EAEpE,IAAIC,EAAkBpB,GAAM,OAAO,CAAA,EAAImB,EAAS,CAC9C,MAAO,KAAK,MACZ,mBAAoB,KAAK,mBAC1B,EAEGE,EAASP,EAAI,GAAG,cAAc,KAChC,KACAG,EACAC,EACAE,CAAe,EAWjB,GARIC,GAAU,MAAQP,EAAI,UACxBK,EAAQ,SAASA,EAAQ,IAAI,EAAIL,EAAI,QACnCG,EACAJ,EAAa,gBACbC,CAAG,EAELO,EAASF,EAAQ,SAASA,EAAQ,IAAI,EAAED,EAASE,CAAe,GAE9DC,GAAU,KAAM,CAClB,GAAIF,EAAQ,OAAQ,CAElB,QADIG,EAAQD,EAAO,MAAM;CAAI,EACpBE,EAAI,EAAGC,EAAIF,EAAM,OAAQC,EAAIC,GAChC,GAACF,EAAMC,CAAC,GAAKA,EAAI,IAAMC,GADYD,IAKvCD,EAAMC,CAAC,EAAIJ,EAAQ,OAASG,EAAMC,CAAC,EAErCF,EAASC,EAAM,KAAK;CAAI,EAE1B,OAAOD,MAEP,OAAM,IAAAX,GAAA,QACJ,eACES,EAAQ,KACR,0DAA0D,EA9CzDR,EAAAK,EAAA,wBAoDT,IAAIS,EAAY,CACd,OAAQd,EAAA,SAASe,EAAKC,EAAMC,EAAK,CAC/B,GAAI,CAACF,GAAO,EAAEC,KAAQD,GACpB,MAAM,IAAAhB,GAAA,QAAc,IAAMiB,EAAO,oBAAsBD,EAAK,CAC1D,IAAKE,EACN,EAEH,OAAOH,EAAU,eAAeC,EAAKC,CAAI,GANnC,UAQR,eAAgBhB,EAAA,SAASkB,EAAQC,EAAc,CAC7C,IAAIT,EAASQ,EAAOC,CAAY,EAQhC,GAPIT,GAAU,MAGV,OAAO,UAAU,eAAe,KAAKQ,EAAQC,CAAY,GAIzDC,IAAA,gBAAgBV,EAAQI,EAAU,mBAAoBK,CAAY,EACpE,OAAOT,GAVK,kBAchB,OAAQV,EAAA,SAASqB,EAAQL,EAAM,CAE7B,QADMM,EAAMD,EAAO,OACVT,EAAI,EAAGA,EAAIU,EAAKV,IAAK,CAC5B,IAAIF,EAASW,EAAOT,CAAC,GAAKE,EAAU,eAAeO,EAAOT,CAAC,EAAGI,CAAI,EAClE,GAAIN,GAAU,KACZ,OAAOW,EAAOT,CAAC,EAAEI,CAAI,IALnB,UASR,OAAQhB,EAAA,SAASuB,EAAShB,EAAS,CACjC,OAAO,OAAOgB,GAAY,WAAaA,EAAQ,KAAKhB,CAAO,EAAIgB,GADzD,UAIR,iBAAkBlC,GAAM,iBACxB,cAAegB,EAEf,GAAIL,EAAA,SAASY,EAAG,CACd,IAAIY,EAAMtB,EAAaU,CAAC,EACxB,OAAAY,EAAI,UAAYtB,EAAaU,EAAI,IAAI,EAC9BY,GAHL,MAMJ,SAAU,CAAA,EACV,QAASxB,EAAA,SAASY,EAAGa,EAAMC,EAAqBC,EAAaN,EAAQ,CACnE,IAAIO,EAAiB,KAAK,SAAShB,CAAC,EAClCiB,EAAK,KAAK,GAAGjB,CAAC,EAChB,OAAIa,GAAQJ,GAAUM,GAAeD,EACnCE,EAAiBE,IACf,KACAlB,EACAiB,EACAJ,EACAC,EACAC,EACAN,CAAM,EAEEO,IACVA,EAAiB,KAAK,SAAShB,CAAC,EAAIkB,IAAY,KAAMlB,EAAGiB,CAAE,GAEtDD,GAhBA,WAmBT,KAAM5B,EAAA,SAAS+B,EAAOC,EAAO,CAC3B,KAAOD,GAASC,KACdD,EAAQA,EAAM,QAEhB,OAAOA,GAJH,QAMN,cAAe/B,EAAA,SAASiC,EAAOC,EAAQ,CACrC,IAAInB,EAAMkB,GAASC,EAEnB,OAAID,GAASC,GAAUD,IAAUC,IAC/BnB,EAAM1B,GAAM,OAAO,CAAA,EAAI6C,EAAQD,CAAK,GAG/BlB,GAPM,iBAUf,YAAa,OAAO,KAAK,CAAA,CAAE,EAE3B,KAAMZ,EAAI,GAAG,KACb,aAAcD,EAAa,UAG7B,SAASsB,EAAIjB,EAAuB,KAAdC,EAAO,UAAA,QAAA,GAAA,UAAA,CAAA,IAAA,OAAG,CAAA,EAAE,UAAA,CAAA,EAC5BiB,EAAOjB,EAAQ,KAEnBgB,EAAI,OAAOhB,CAAO,EACd,CAACA,EAAQ,SAAWN,EAAa,UACnCuB,EAAOU,IAAS5B,EAASkB,CAAI,GAE/B,IAAIJ,EAAM,OACRM,EAAczB,EAAa,eAAiB,CAAA,EAAK,OAC/CA,EAAa,YACXM,EAAQ,OACVa,EACEd,GAAWC,EAAQ,OAAO,CAAC,EACvB,CAACD,CAAO,EAAE,OAAOC,EAAQ,MAAM,EAC/BA,EAAQ,OAEda,EAAS,CAACd,CAAO,GAIrB,SAAS6B,EAAK7B,EAAuB,CACnC,MACE,GACAL,EAAa,KACXY,EACAP,EACAO,EAAU,QACVA,EAAU,SACVW,EACAE,EACAN,CAAM,EAVH,OAAArB,EAAAoC,EAAA,QAeTA,EAAOC,IACLnC,EAAa,KACbkC,EACAtB,EACAN,EAAQ,QAAU,CAAA,EAClBiB,EACAE,CAAW,EAENS,EAAK7B,EAASC,CAAO,EA3CrB,OAAAR,EAAAwB,EAAA,OA8CTA,EAAI,MAAQ,GAEZA,EAAI,OAAS,SAAShB,EAAS,CAC7B,GAAKA,EAAQ,QA6BXM,EAAU,mBAAqBN,EAAQ,mBACvCM,EAAU,QAAUN,EAAQ,QAC5BM,EAAU,SAAWN,EAAQ,SAC7BM,EAAU,WAAaN,EAAQ,WAC/BM,EAAU,MAAQN,EAAQ,UAjCN,CACpB,IAAI8B,EAAgBjD,GAAM,OAAO,CAAA,EAAIc,EAAI,QAASK,EAAQ,OAAO,EACjE+B,IAAgCD,EAAexB,CAAS,EACxDA,EAAU,QAAUwB,EAEhBpC,EAAa,aAEfY,EAAU,SAAWA,EAAU,cAC7BN,EAAQ,SACRL,EAAI,QAAQ,IAGZD,EAAa,YAAcA,EAAa,iBAC1CY,EAAU,WAAazB,GAAM,OAC3B,CAAA,EACAc,EAAI,WACJK,EAAQ,UAAU,GAItBM,EAAU,MAAQ,CAAA,EAClBA,EAAU,mBAAqBM,IAAA,yBAAyBZ,CAAO,EAE/D,IAAIgC,EACFhC,EAAQ,2BACRJ,EACFqC,IAAA,kBAAkB3B,EAAW,gBAAiB0B,CAAmB,EACjEC,IAAA,kBAAkB3B,EAAW,qBAAsB0B,CAAmB,IAU1EhB,EAAI,OAAS,SAASZ,EAAGa,EAAME,EAAaN,EAAQ,CAClD,GAAInB,EAAa,gBAAkB,CAACyB,EAClC,MAAM,IAAA5B,GAAA,QAAc,wBAAwB,EAE9C,GAAIG,EAAa,WAAa,CAACmB,EAC7B,MAAM,IAAAtB,GAAA,QAAc,yBAAyB,EAG/C,OAAO+B,IACLhB,EACAF,EACAV,EAAaU,CAAC,EACda,EACA,EACAE,EACAN,CAAM,GAGHG,EAtQOxB,EAAAC,IAAA,YAyQT,SAAS6B,IACdhB,EACAF,EACAiB,EACAJ,EACAC,EACAC,EACAN,EACA,CACA,SAASqB,EAAKnC,EAAuB,KAAdC,EAAO,UAAA,QAAA,GAAA,UAAA,CAAA,IAAA,OAAG,CAAA,EAAE,UAAA,CAAA,EAC7BmC,EAAgBtB,EACpB,OACEA,GACAd,GAAWc,EAAO,CAAC,GACnB,EAAEd,IAAYO,EAAU,aAAeO,EAAO,CAAC,IAAM,QAErDsB,EAAgB,CAACpC,CAAO,EAAE,OAAOc,CAAM,GAGlCQ,EACLf,EACAP,EACAO,EAAU,QACVA,EAAU,SACVN,EAAQ,MAAQiB,EAChBE,GAAe,CAACnB,EAAQ,WAAW,EAAE,OAAOmB,CAAW,EACvDgB,CAAa,EAjBR,OAAA3C,EAAA0C,EAAA,QAqBTA,EAAOL,IAAkBR,EAAIa,EAAM5B,EAAWO,EAAQI,EAAME,CAAW,EAEvEe,EAAK,QAAU9B,EACf8B,EAAK,MAAQrB,EAASA,EAAO,OAAS,EACtCqB,EAAK,YAAchB,GAAuB,EACnCgB,EAnCO1C,EAAA8B,IAAA,eAyCT,SAASc,IAAetC,EAASC,EAASC,EAAS,CACxD,OAAKF,EAMM,CAACA,EAAQ,MAAQ,CAACE,EAAQ,OAEnCA,EAAQ,KAAOF,EACfA,EAAUE,EAAQ,SAASF,CAAO,GAR9BE,EAAQ,OAAS,iBACnBF,EAAUE,EAAQ,KAAK,eAAe,EAEtCF,EAAUE,EAAQ,SAASA,EAAQ,IAAI,EAOpCF,EAZON,EAAA4C,IAAA,kBAeT,SAASC,IAAcvC,EAASC,EAASC,EAAS,CAEvD,IAAMsC,EAAsBtC,EAAQ,MAAQA,EAAQ,KAAK,eAAe,EACxEA,EAAQ,QAAU,GACdA,EAAQ,MACVA,EAAQ,KAAK,YAAcA,EAAQ,IAAI,CAAC,GAAKA,EAAQ,KAAK,aAG5D,IAAIuC,EAAY,OAwBhB,GAvBIvC,EAAQ,IAAMA,EAAQ,KAAOwC,iBAC/BxC,EAAQ,KAAOZ,GAAA,YAAYY,EAAQ,IAAI,EAEvC,IAAIqB,EAAKrB,EAAQ,GACjBuC,EAAevC,EAAQ,KAAK,eAAe,EAAIR,EAAA,SAC7CO,EAEA,KADAC,EAAO,UAAA,QAAA,GAAA,UAAA,CAAA,IAAA,OAAG,CAAA,EAAE,UAAA,CAAA,EAIZ,OAAAA,EAAQ,KAAOZ,GAAA,YAAYY,EAAQ,IAAI,EACvCA,EAAQ,KAAK,eAAe,EAAIsC,EACzBjB,EAAGtB,EAASC,CAAO,GARmB,uBAU3CqB,EAAG,WACLrB,EAAQ,SAAWnB,GAAM,OAAO,CAAA,EAAImB,EAAQ,SAAUqB,EAAG,QAAQ,OAIjEvB,IAAY,QAAayC,IAC3BzC,EAAUyC,GAGRzC,IAAY,OACd,MAAM,IAAAP,GAAA,QAAc,eAAiBS,EAAQ,KAAO,qBAAqB,EACpE,GAAIF,aAAmB,SAC5B,OAAOA,EAAQC,EAASC,CAAO,EAnCnBR,EAAA6C,IAAA,iBAuCT,SAASG,KAAO,CACrB,MAAO,GADOhD,EAAAgD,IAAA,QAIhB,SAASb,IAAS5B,EAASkB,EAAM,CAC/B,OAAI,CAACA,GAAQ,EAAE,SAAUA,MACvBA,EAAOA,EAAO7B,GAAA,YAAY6B,CAAI,EAAI,CAAA,EAClCA,EAAK,KAAOlB,GAEPkB,EALAzB,EAAAmC,IAAA,YAQT,SAASE,IAAkBR,EAAIa,EAAM5B,EAAWO,EAAQI,EAAME,EAAa,CACzE,GAAIE,EAAG,UAAW,CAChB,IAAIoB,EAAQ,CAAA,EACZP,EAAOb,EAAG,UACRa,EACAO,EACAnC,EACAO,GAAUA,EAAO,CAAC,EAClBI,EACAE,EACAN,CAAM,EAERhC,GAAM,OAAOqD,EAAMO,CAAK,EAE1B,OAAOP,EAdA1C,EAAAqC,IAAA,qBAiBT,SAASE,IAAgCD,EAAexB,EAAW,CACjE,OAAO,KAAKwB,CAAa,EAAE,QAAQ,SAAAY,EAAc,CAC/C,IAAIC,EAASb,EAAcY,CAAU,EACrCZ,EAAcY,CAAU,EAAIE,IAAyBD,EAAQrC,CAAS,EACvE,EAJMd,EAAAuC,IAAA,mCAOT,SAASa,IAAyBD,EAAQrC,EAAW,CACnD,IAAMuC,EAAiBvC,EAAU,eACjC,OAAOwC,IAAA,WAAWH,EAAQ,SAAA3C,EAAW,CACnC,OAAOnB,GAAM,OAAO,CAAE,eAAAgE,CAAc,EAAI7C,CAAO,EAChD,EAJMR,EAAAoD,IAAA,+FC3bM,SAASG,EAAY,EAGjC,UAAW,CACN,OAAO,YAAe,WAC1B,OAAO,UAAU,iBAAiB,YAAa,UAAW,CACxD,OAAO,KACR,EACD,UAAU,WAAa,UACvB,OAAO,OAAO,UAAU,aACzB,EAED,IAAMC,EAAc,WAAW,WAG/BD,EAAW,WAAa,UAAW,CACjC,OAAI,WAAW,aAAeA,IAC5B,WAAW,WAAaC,GAEnBD,kXCpBCE,IAAIC,IAAAC,GAAA,wDAMJC,IAAKF,IAAAG,GAAA,YACLC,IAAOJ,IAAAK,GAAA,yBAKnB,SAASC,KAAS,CAChB,IAAIC,EAAK,IAAIR,IAAK,sBAElB,OAAAG,IAAM,OAAOK,EAAIR,GAAI,EACrBQ,EAAG,WAAUC,IAAA,QACbD,EAAG,UAASE,IAAA,QACZF,EAAG,MAAQL,IACXK,EAAG,iBAAmBL,IAAM,iBAE5BK,EAAG,GAAKH,IACRG,EAAG,SAAW,SAASG,EAAM,CAC3B,OAAON,IAAQ,SAASM,EAAMH,CAAE,GAG3BA,EAdAI,EAAAL,IAAA,UAiBT,IAAIM,IAAON,IAAM,EACjBM,IAAK,OAASN,IAEdO,IAAA,QAAWD,GAAI,EAEfA,IAAK,QAAaA,gBAEHA,mFCpCf,IAAIE,IAAM,CAER,QAAS,CAIP,iBAAkBC,EAAA,SAASC,EAAM,CAC/B,OACEA,EAAK,OAAS,kBACZA,EAAK,OAAS,qBACdA,EAAK,OAAS,mBACd,CAAC,EAAGA,EAAK,QAAUA,EAAK,OAAO,QAAWA,EAAK,OALnC,oBASlB,SAAUD,EAAA,SAASE,EAAM,CACvB,MAAO,aAAa,KAAKA,EAAK,QAAQ,GAD9B,YAMV,SAAUF,EAAA,SAASE,EAAM,CACvB,OACEA,EAAK,MAAM,SAAW,GAAK,CAACH,IAAI,QAAQ,SAASG,CAAI,GAAK,CAACA,EAAK,OAF1D,0BAUCH,mFC7Bf,IAAII,KAAc,UAAU,CAC5B,IAAIC,EAAS,CAAC,MAAOC,EAAA,UAAkB,CAAA,EAAlB,SACrB,GAAI,CAAA,EACJ,SAAU,CAAC,MAAQ,EAAE,KAAO,EAAE,QAAU,EAAE,IAAM,EAAE,oBAAsB,EAAE,UAAY,EAAE,SAAW,EAAE,MAAQ,EAAE,SAAW,GAAG,QAAU,GAAG,aAAe,GAAG,QAAU,GAAG,QAAU,GAAG,QAAU,GAAG,aAAe,GAAG,qBAAuB,GAAG,cAAgB,GAAG,eAAiB,GAAG,WAAa,GAAG,yBAA2B,GAAG,qBAAuB,GAAG,gBAAkB,GAAG,UAAY,GAAG,cAAgB,GAAG,WAAa,GAAG,YAAc,GAAG,cAAgB,GAAG,WAAa,GAAG,sBAAwB,GAAG,kBAAoB,GAAG,kBAAoB,GAAG,MAAQ,GAAG,aAAe,GAAG,wBAA0B,GAAG,oBAAsB,GAAG,oBAAsB,GAAG,iBAAmB,GAAG,mBAAqB,GAAG,6BAA+B,GAAG,yBAA2B,GAAG,yBAA2B,GAAG,kBAAoB,GAAG,QAAU,GAAG,aAAe,GAAG,qBAAuB,GAAG,cAAgB,GAAG,KAAO,GAAG,qBAAuB,GAAG,iBAAmB,GAAG,eAAiB,GAAG,qBAAuB,GAAG,iBAAmB,GAAG,gBAAkB,GAAG,aAAe,GAAG,YAAc,GAAG,oBAAsB,GAAG,gBAAkB,GAAG,iBAAmB,GAAG,mBAAqB,GAAG,6BAA+B,GAAG,yBAA2B,GAAG,MAAQ,GAAG,MAAQ,GAAG,WAAa,GAAG,kBAAoB,GAAG,cAAgB,GAAG,YAAc,GAAG,KAAO,GAAG,sBAAwB,GAAG,YAAc,GAAG,GAAK,GAAG,OAAS,GAAG,YAAc,GAAG,kBAAoB,GAAG,6BAA+B,GAAG,mBAAqB,GAAG,KAAO,GAAG,SAAW,GAAG,OAAS,GAAG,OAAS,GAAG,QAAU,GAAG,UAAY,GAAG,KAAO,GAAG,KAAO,GAAG,aAAe,GAAG,IAAM,GAAG,QAAU,EAAE,KAAO,CAAC,EAC3mD,WAAY,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,aAAa,GAAG,QAAQ,GAAG,eAAe,GAAG,qBAAqB,GAAG,UAAU,GAAG,gBAAgB,GAAG,OAAO,GAAG,iBAAiB,GAAG,kBAAkB,GAAG,eAAe,GAAG,qBAAqB,GAAG,aAAa,GAAG,cAAc,GAAG,KAAK,GAAG,SAAS,GAAG,oBAAoB,GAAG,qBAAqB,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,EAC3e,aAAc,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,EACpsB,cAAeA,EAAA,SAAmBC,EAAOC,EAAOC,EAASC,EAAGC,EAAQC,EAAGC,EACrE,CAEF,IAAIC,EAAKF,EAAG,OAAS,EACrB,OAAQD,EAAO,CACf,IAAK,GAAG,OAAOC,EAAGE,EAAG,CAAC,EAEtB,IAAK,GAAE,KAAK,EAAIJ,EAAG,eAAeE,EAAGE,CAAE,CAAC,EACxC,MACA,IAAK,GAAE,KAAK,EAAIF,EAAGE,CAAE,EACrB,MACA,IAAK,GAAE,KAAK,EAAIF,EAAGE,CAAE,EACrB,MACA,IAAK,GAAE,KAAK,EAAIF,EAAGE,CAAE,EACrB,MACA,IAAK,GAAE,KAAK,EAAIF,EAAGE,CAAE,EACrB,MACA,IAAK,GAAE,KAAK,EAAIF,EAAGE,CAAE,EACrB,MACA,IAAK,GAAE,KAAK,EAAIF,EAAGE,CAAE,EACrB,MACA,IAAK,GACD,KAAK,EAAI,CACP,KAAM,mBACN,MAAOJ,EAAG,aAAaE,EAAGE,CAAE,CAAC,EAC7B,MAAOJ,EAAG,WAAWE,EAAGE,CAAE,EAAGF,EAAGE,CAAE,CAAC,EACnC,IAAKJ,EAAG,QAAQ,KAAK,EAAE,GAG7B,MACA,IAAK,IACD,KAAK,EAAI,CACP,KAAM,mBACN,SAAUE,EAAGE,CAAE,EACf,MAAOF,EAAGE,CAAE,EACZ,IAAKJ,EAAG,QAAQ,KAAK,EAAE,GAG7B,MACA,IAAK,IAAG,KAAK,EAAIA,EAAG,gBAAgBE,EAAGE,EAAG,CAAC,EAAGF,EAAGE,EAAG,CAAC,EAAGF,EAAGE,CAAE,EAAG,KAAK,EAAE,EACvE,MACA,IAAK,IAAG,KAAK,EAAI,CAAE,KAAMF,EAAGE,EAAG,CAAC,EAAG,OAAQF,EAAGE,EAAG,CAAC,EAAG,KAAMF,EAAGE,EAAG,CAAC,CAAC,EACnE,MACA,IAAK,IAAG,KAAK,EAAIJ,EAAG,aAAaE,EAAGE,EAAG,CAAC,EAAGF,EAAGE,EAAG,CAAC,EAAGF,EAAGE,EAAG,CAAC,EAAGF,EAAGE,CAAE,EAAG,GAAO,KAAK,EAAE,EACrF,MACA,IAAK,IAAG,KAAK,EAAIJ,EAAG,aAAaE,EAAGE,EAAG,CAAC,EAAGF,EAAGE,EAAG,CAAC,EAAGF,EAAGE,EAAG,CAAC,EAAGF,EAAGE,CAAE,EAAG,GAAM,KAAK,EAAE,EACpF,MACA,IAAK,IAAG,KAAK,EAAI,CAAE,KAAMF,EAAGE,EAAG,CAAC,EAAG,KAAMF,EAAGE,EAAG,CAAC,EAAG,OAAQF,EAAGE,EAAG,CAAC,EAAG,KAAMF,EAAGE,EAAG,CAAC,EAAG,YAAaF,EAAGE,EAAG,CAAC,EAAG,MAAOJ,EAAG,WAAWE,EAAGE,EAAG,CAAC,EAAGF,EAAGE,CAAE,CAAC,CAAC,EAClJ,MACA,IAAK,IAAG,KAAK,EAAI,CAAE,KAAMF,EAAGE,EAAG,CAAC,EAAG,OAAQF,EAAGE,EAAG,CAAC,EAAG,KAAMF,EAAGE,EAAG,CAAC,EAAG,YAAaF,EAAGE,EAAG,CAAC,EAAG,MAAOJ,EAAG,WAAWE,EAAGE,EAAG,CAAC,EAAGF,EAAGE,CAAE,CAAC,CAAC,EAClI,MACA,IAAK,IAAG,KAAK,EAAI,CAAE,KAAMF,EAAGE,EAAG,CAAC,EAAG,OAAQF,EAAGE,EAAG,CAAC,EAAG,KAAMF,EAAGE,EAAG,CAAC,EAAG,YAAaF,EAAGE,EAAG,CAAC,EAAG,MAAOJ,EAAG,WAAWE,EAAGE,EAAG,CAAC,EAAGF,EAAGE,CAAE,CAAC,CAAC,EAClI,MACA,IAAK,IAAG,KAAK,EAAI,CAAE,MAAOJ,EAAG,WAAWE,EAAGE,EAAG,CAAC,EAAGF,EAAGE,EAAG,CAAC,CAAC,EAAG,QAASF,EAAGE,CAAE,CAAC,EAC5E,MACA,IAAK,IACD,IAAIC,EAAUL,EAAG,aAAaE,EAAGE,EAAG,CAAC,EAAGF,EAAGE,EAAG,CAAC,EAAGF,EAAGE,CAAE,EAAGF,EAAGE,CAAE,EAAG,GAAO,KAAK,EAAE,EAC5EE,EAAUN,EAAG,eAAe,CAACK,CAAO,EAAGH,EAAGE,EAAG,CAAC,EAAE,GAAG,EACvDE,EAAQ,QAAU,GAElB,KAAK,EAAI,CAAE,MAAOJ,EAAGE,EAAG,CAAC,EAAE,MAAO,QAASE,EAAS,MAAO,EAAI,EAEnE,MACA,IAAK,IAAG,KAAK,EAAIJ,EAAGE,CAAE,EACtB,MACA,IAAK,IAAG,KAAK,EAAI,CAAC,KAAMF,EAAGE,EAAG,CAAC,EAAG,MAAOJ,EAAG,WAAWE,EAAGE,EAAG,CAAC,EAAGF,EAAGE,CAAE,CAAC,CAAC,EACxE,MACA,IAAK,IAAG,KAAK,EAAIJ,EAAG,gBAAgBE,EAAGE,EAAG,CAAC,EAAGF,EAAGE,EAAG,CAAC,EAAGF,EAAGE,EAAG,CAAC,EAAGF,EAAGE,EAAG,CAAC,EAAGJ,EAAG,WAAWE,EAAGE,EAAG,CAAC,EAAGF,EAAGE,CAAE,CAAC,EAAG,KAAK,EAAE,EACpH,MACA,IAAK,IAAG,KAAK,EAAIJ,EAAG,gBAAgBE,EAAGE,EAAG,CAAC,EAAGF,EAAGE,EAAG,CAAC,EAAGF,EAAGE,EAAG,CAAC,EAAGF,EAAGE,EAAG,CAAC,EAAGJ,EAAG,WAAWE,EAAGE,EAAG,CAAC,EAAGF,EAAGE,CAAE,CAAC,EAAG,KAAK,EAAE,EACpH,MACA,IAAK,IACD,KAAK,EAAI,CACP,KAAM,mBACN,KAAMF,EAAGE,EAAG,CAAC,EACb,OAAQF,EAAGE,EAAG,CAAC,EACf,KAAMF,EAAGE,EAAG,CAAC,EACb,OAAQ,GACR,MAAOJ,EAAG,WAAWE,EAAGE,EAAG,CAAC,EAAGF,EAAGE,CAAE,CAAC,EACrC,IAAKJ,EAAG,QAAQ,KAAK,EAAE,GAG7B,MACA,IAAK,IAAG,KAAK,EAAIA,EAAG,oBAAoBE,EAAGE,EAAG,CAAC,EAAGF,EAAGE,EAAG,CAAC,EAAGF,EAAGE,CAAE,EAAG,KAAK,EAAE,EAC3E,MACA,IAAK,IAAG,KAAK,EAAI,CAAE,KAAMF,EAAGE,EAAG,CAAC,EAAG,OAAQF,EAAGE,EAAG,CAAC,EAAG,KAAMF,EAAGE,EAAG,CAAC,EAAG,MAAOJ,EAAG,WAAWE,EAAGE,EAAG,CAAC,EAAGF,EAAGE,CAAE,CAAC,CAAC,EAC3G,MACA,IAAK,IAAG,KAAK,EAAIF,EAAGE,CAAE,EACtB,MACA,IAAK,IAAG,KAAK,EAAIF,EAAGE,CAAE,EACtB,MACA,IAAK,IACD,KAAK,EAAI,CACP,KAAM,gBACN,KAAMF,EAAGE,EAAG,CAAC,EACb,OAAQF,EAAGE,EAAG,CAAC,EACf,KAAMF,EAAGE,EAAG,CAAC,EACb,IAAKJ,EAAG,QAAQ,KAAK,EAAE,GAG7B,MACA,IAAK,IAAG,KAAK,EAAI,CAAC,KAAM,OAAQ,MAAOE,EAAGE,CAAE,EAAG,IAAKJ,EAAG,QAAQ,KAAK,EAAE,CAAC,EACvE,MACA,IAAK,IAAG,KAAK,EAAI,CAAC,KAAM,WAAY,IAAKA,EAAG,GAAGE,EAAGE,EAAG,CAAC,CAAC,EAAG,MAAOF,EAAGE,CAAE,EAAG,IAAKJ,EAAG,QAAQ,KAAK,EAAE,CAAC,EACjG,MACA,IAAK,IAAG,KAAK,EAAIA,EAAG,GAAGE,EAAGE,EAAG,CAAC,CAAC,EAC/B,MACA,IAAK,IAAG,KAAK,EAAIF,EAAGE,CAAE,EACtB,MACA,IAAK,IAAG,KAAK,EAAIF,EAAGE,CAAE,EACtB,MACA,IAAK,IAAG,KAAK,EAAI,CAAC,KAAM,gBAAiB,MAAOF,EAAGE,CAAE,EAAG,SAAUF,EAAGE,CAAE,EAAG,IAAKJ,EAAG,QAAQ,KAAK,EAAE,CAAC,EAClG,MACA,IAAK,IAAG,KAAK,EAAI,CAAC,KAAM,gBAAiB,MAAO,OAAOE,EAAGE,CAAE,CAAC,EAAG,SAAU,OAAOF,EAAGE,CAAE,CAAC,EAAG,IAAKJ,EAAG,QAAQ,KAAK,EAAE,CAAC,EAClH,MACA,IAAK,IAAG,KAAK,EAAI,CAAC,KAAM,iBAAkB,MAAOE,EAAGE,CAAE,IAAM,OAAQ,SAAUF,EAAGE,CAAE,IAAM,OAAQ,IAAKJ,EAAG,QAAQ,KAAK,EAAE,CAAC,EACzH,MACA,IAAK,IAAG,KAAK,EAAI,CAAC,KAAM,mBAAoB,SAAU,OAAW,MAAO,OAAW,IAAKA,EAAG,QAAQ,KAAK,EAAE,CAAC,EAC3G,MACA,IAAK,IAAG,KAAK,EAAI,CAAC,KAAM,cAAe,SAAU,KAAM,MAAO,KAAM,IAAKA,EAAG,QAAQ,KAAK,EAAE,CAAC,EAC5F,MACA,IAAK,IAAG,KAAK,EAAIE,EAAGE,CAAE,EACtB,MACA,IAAK,IAAG,KAAK,EAAIF,EAAGE,CAAE,EACtB,MACA,IAAK,IAAG,KAAK,EAAIJ,EAAG,YAAY,GAAME,EAAGE,CAAE,EAAG,KAAK,EAAE,EACrD,MACA,IAAK,IAAG,KAAK,EAAIJ,EAAG,YAAY,GAAOE,EAAGE,CAAE,EAAG,KAAK,EAAE,EACtD,MACA,IAAK,IAAIF,EAAGE,EAAG,CAAC,EAAE,KAAK,CAAC,KAAMJ,EAAG,GAAGE,EAAGE,CAAE,CAAC,EAAG,SAAUF,EAAGE,CAAE,EAAG,UAAWF,EAAGE,EAAG,CAAC,CAAC,CAAC,EAAG,KAAK,EAAIF,EAAGE,EAAG,CAAC,EACtG,MACA,IAAK,IAAG,KAAK,EAAI,CAAC,CAAC,KAAMJ,EAAG,GAAGE,EAAGE,CAAE,CAAC,EAAG,SAAUF,EAAGE,CAAE,CAAC,CAAC,EACzD,MACA,IAAK,IAAG,KAAK,EAAI,CAAA,EACjB,MACA,IAAK,IAAGF,EAAGE,EAAG,CAAC,EAAE,KAAKF,EAAGE,CAAE,CAAC,EAC5B,MACA,IAAK,IAAG,KAAK,EAAI,CAAA,EACjB,MACA,IAAK,IAAGF,EAAGE,EAAG,CAAC,EAAE,KAAKF,EAAGE,CAAE,CAAC,EAC5B,MACA,IAAK,IAAG,KAAK,EAAI,CAAA,EACjB,MACA,IAAK,IAAGF,EAAGE,EAAG,CAAC,EAAE,KAAKF,EAAGE,CAAE,CAAC,EAC5B,MACA,IAAK,IAAG,KAAK,EAAI,CAAA,EACjB,MACA,IAAK,IAAGF,EAAGE,EAAG,CAAC,EAAE,KAAKF,EAAGE,CAAE,CAAC,EAC5B,MACA,IAAK,IAAG,KAAK,EAAI,CAAA,EACjB,MACA,IAAK,IAAGF,EAAGE,EAAG,CAAC,EAAE,KAAKF,EAAGE,CAAE,CAAC,EAC5B,MACA,IAAK,IAAG,KAAK,EAAI,CAAA,EACjB,MACA,IAAK,IAAGF,EAAGE,EAAG,CAAC,EAAE,KAAKF,EAAGE,CAAE,CAAC,EAC5B,MACA,IAAK,IAAG,KAAK,EAAI,CAAA,EACjB,MACA,IAAK,IAAGF,EAAGE,EAAG,CAAC,EAAE,KAAKF,EAAGE,CAAE,CAAC,EAC5B,MACA,IAAK,IAAG,KAAK,EAAI,CAAA,EACjB,MACA,IAAK,IAAGF,EAAGE,EAAG,CAAC,EAAE,KAAKF,EAAGE,CAAE,CAAC,EAC5B,MACA,IAAK,IAAG,KAAK,EAAI,CAAA,EACjB,MACA,IAAK,IAAGF,EAAGE,EAAG,CAAC,EAAE,KAAKF,EAAGE,CAAE,CAAC,EAC5B,MACA,IAAK,IAAG,KAAK,EAAI,CAAA,EACjB,MACA,IAAK,IAAGF,EAAGE,EAAG,CAAC,EAAE,KAAKF,EAAGE,CAAE,CAAC,EAC5B,MACA,IAAK,IAAG,KAAK,EAAI,CAAA,EACjB,MACA,IAAK,IAAGF,EAAGE,EAAG,CAAC,EAAE,KAAKF,EAAGE,CAAE,CAAC,EAC5B,MACA,IAAK,IAAG,KAAK,EAAI,CAACF,EAAGE,CAAE,CAAC,EACxB,MACA,IAAK,IAAGF,EAAGE,EAAG,CAAC,EAAE,KAAKF,EAAGE,CAAE,CAAC,EAC5B,MACA,IAAK,KAAI,KAAK,EAAI,CAACF,EAAGE,CAAE,CAAC,EACzB,MACA,IAAK,KAAIF,EAAGE,EAAG,CAAC,EAAE,KAAKF,EAAGE,CAAE,CAAC,EAC7B,KAAM,GAxLS,aA2Lf,MAAO,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAC9/V,eAAgB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,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,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAC/C,EAEMW,IAAS,CACb,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAC/C,EAEMM,IAAU,CACd,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAC/C,EAEME,IAAiB,CACrB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,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WA,EAAWA,EACvDA,EAAWA,EAAWA,EAAWA,EAAWA,EAAWA,EACvDA,EAAWA,EAAWA,EAAWA,EAAWA,EAAWA,EACvDA,EAAWA,EAAWA,EAAWA,EAAWA,EAAWA,EACvDA,EAAWA,EAAWA,EAAWA,EAAWA,EAAWA,EACvDA,EAAWA,EAAWA,EAAWA,EAAWA,EAAWA,EACvDA,EAAWA,EAAWA,EAAWA,EAAWA,EAAWA,EACvDA,EAAWA,EAAWA,EAAWA,EAAWA,EAAWA,EACvDA,EAAWA,EAAWA,EAAWA,EAAWA,EAAWA,EACvDA,EAAWA,EAAWA,EAAWA,EAAWA,EAAWA,EACvDA,EAAWA,EAAWA,EAAWA,EAAWA,EAAWA,EACvDA,EAAWA,EAAWA,EAAWA,EAAWA,EAAWA,EACvDA,EAAWA,EAAWA,EAAWA,EAAWA,EAAWA,EACvDA,EAAWA,EAAWA,EAAWA,EAAWA,EAAWA,EACvDA,EAAWA,EAAWA,EAAWA,EAAWA,EAAWA,EACvDA,EAAWA,EAAWA,EAAWA,EAAWA,EAAWA,EACvDA,EAAWA,EAAWA,EAAWA,EAAWA,EAAWA,EACvDA,EAAWA,EAAWA,EAAWA,EAAWA,EAAWA,EACvDA,EAAWA,EAAWA,EAAWA,EAAWA,EAAWA,EACvDA,EAAWA,EAAWA,EAAWA,EAAWA,EAAWA,EACvDA,EAAWA,EAAWA,EAAWA,EAAWA,EAAWA,EACvDA,EAAWA,EAAWA,EAAWA,EAAWA,EAAWA,EACvDA,EAAWA,EAAWA,EAAWA,EAAWA,EAAWA,EACvDA,EAAWA,EAAWA,EAAWA,EAAWA,EAAWA,EACvDA,EAAWA,EAAWA,EAAWA,EAAWA,EAAWA,EACvDA,EAAWA,EAAWA,EAAWA,EAAWA,EAAWA,EACvDA,EAAWA,EAAWA,EAAWA,EAAWA,EAAWA,EACvDA,EAAWA,EAAWA,EAAWA,EAAWA,EAAWA,EACvDA,EAAWA,EAAWA,EAAWA,EAAWA,EAAWA,EACvDA,EAAWA,EAAWA,EAAWA,EAAWA,EAAWA,EACvDA,EAAWA,EAAWA,EAAWA,EAAWA,EAAWA,EACvDA,EAAWA,EAAWA,EAAWA,EAAWA,EAAWA,EACvDA,EAAWA,EAAWA,EAAWA,EAAWA,EAAWA,EACvDA,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,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,CAC/C,EAEMC,IAAc,CAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC7C,EAAG,EAAG,EAAG,EA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",
  "names": ["require_async", "__commonJSMin", "exports", "module", "global", "factory", "apply", "fn", "args", "callArgs", "__name", "initialParams", "callback", "hasQueueMicrotask", "hasSetImmediate", "hasNextTick", "fallback", "wrap", "defer", "_defer$1", "setImmediate$1", "asyncify", "func", "isAsync", "promise", "handlePromise", "result", "e", "value", "invokeCallback", "err", "error", "isAsyncGenerator", "isAsyncIterable", "obj", "wrapAsync", "asyncFn", "awaitify", "arity", "awaitable", "resolve", "reject", "cbArgs", "applyEach$1", "eachfn", "fns", "that", "cb", "_asyncMap", "arr", "iteratee", "results", "counter", "_iteratee", "_", "iterCb", "index", "v", "isArrayLike", "breakLoop", "once", "wrapper", "callFn", "getIterator", "coll", "createArrayIterator", "i", "len", "createES2015Iterator", "iterator", "item", "createObjectIterator", "okeys", "next", "key", "createIterator", "onlyOnce", "asyncEachOfLimit", "generator", "limit", "done", "canceled", "awaiting", "running", "idx", "replenish", "iterDone", "iterateeCallback", "handleError", "eachOfLimit$2", "nextElem", "looping", "elem", "eachOfLimit", "eachOfLimit$1", "eachOfArrayLike", "completed", "length", "iteratorCallback", "eachOfGeneric", "eachOf", "eachOfImplementation", "eachOf$1", "map", "map$1", "applyEach", "eachOfSeries", "eachOfSeries$1", "mapSeries", "mapSeries$1", "applyEachSeries", "PROMISE_SYMBOL", "promiseCallback", "res", "rej", "auto", "tasks", "concurrency", "numTasks", "runningTasks", "hasError", "listeners", "readyTasks", "readyToCheck", "uncheckedDependencies", "task", "enqueueTask", "dependencies", "remainingDependencies", "dependencyName", "addListener", "checkForDeadlocks", "processQueue", "runTask", "run", "taskName", "taskListeners", "taskComplete", "taskCallback", "safeResults", "rkey", "taskFn", "currentTask", "getDependents", "dependent", "FN_ARGS", "ARROW_FN_ARGS", "FN_ARG_SPLIT", "FN_ARG", "stripComments", "string", "stripped", "endBlockComment", "endIndex", "parseParams", "src", "match", "arg", "autoInject", "newTasks", "params", "fnIsAsync", "hasNoDeps", "newTask", "taskCb", "newArgs", "name", "DLL", "node", "newNode", "setInitial", "cur", "testFn", "curr", "dll", "queue$1", "worker", "payload", "_worker", "numRunning", "workersList", "events", "on", "event", "handler", "handleAndRemove", "off", "ev", "trigger", "processingScheduled", "_insert", "data", "insertAtFront", "rejectOnError", "q", "_createCB", "l", "_maybeDrain", "eventMethod", "isProcessing", "datum", "cargo$1", "cargo", "reduce", "memo", "x", "reduce$1", "seq", "functions", "_functions", "newargs", "nextargs", "compose", "mapLimit", "mapLimit$1", "concatLimit", "val", "mapResults", "concatLimit$1", "concat", "concat$1", "concatSeries", "concatSeries$1", "constant$1", "ignoredArgs", "_createTester", "check", "getResult", "testPassed", "testResult", "detect", "bool", "detect$1", "detectLimit", "detectLimit$1", "detectSeries", "detectSeries$1", "consoleFunc", "resultArgs", "dir", "doWhilst", "test", "_fn", "_test", "truth", "doWhilst$1", "doUntil", "_withoutIndex", "eachLimit$2", "each", "eachLimit", "eachLimit$1", "eachSeries", "eachSeries$1", "ensureAsync", "sync", "innerArgs", "every", "every$1", "everyLimit", "everyLimit$1", "everySeries", "everySeries$1", "filterArray", "truthValues", "filterGeneric", "a", "b", "_filter", "filter", "filter$1", "filterLimit", "filterLimit$1", "filterSeries", "filterSeries$1", "forever", "errback", "forever$1", "groupByLimit", "hasOwnProperty", "groupByLimit$1", "groupBy", "groupBySeries", "log", "mapValuesLimit", "newObj", "mapValuesLimit$1", "mapValues", "mapValuesSeries", "memoize", "hasher", "queues", "memoized", "_defer", "nextTick", "_parallel", "parallel", "parallelLimit", "queue", "items", "Heap", "p", "smaller", "parent", "t", "leftChi", "top", "j", "y", "priorityQueue", "push", "pushAsync", "priority", "createDataItems", "race", "race$1", "reduceRight", "array", "reversed", "reflect", "reflectCallback", "retVal", "reflectAll", "reject$2", "reject$1", "rejectLimit", "rejectLimit$1", "rejectSeries", "rejectSeries$1", "constant", "DEFAULT_TIMES", "DEFAULT_INTERVAL", "retry", "opts", "options", "parseTimes", "_task", "attempt", "retryAttempt", "acc", "retryable", "series", "some", "some$1", "someLimit", "someLimit$1", "someSeries", "someSeries$1", "sortBy", "criteria", "comparator", "left", "right", "sortBy$1", "timeout", "milliseconds", "info", "timedOut", "timer", "timeoutCallback", "range", "size", "timesLimit", "count", "times", "n", "timesSeries", "transform", "accumulator", "k", "tryEach", "tryEach$1", "unmemoize", "whilst", "rest", "whilst$1", "until", "waterfall", "taskIndex", "nextTask", "waterfall$1", "require_ini", "__commonJSMin", "exports", "module", "hasOwnProperty", "eol", "encode", "__name", "obj", "opt", "children", "out", "separator", "k", "val", "item", "safe", "nk", "dotSplit", "section", "whitespace", "child", "str", "part", "decode", "p", "re", "lines", "line", "match", "unsafe", "keyRaw", "isArray", "key", "valueRaw", "value", "remove", "parts", "l", "nl", "del", "isQuoted", "doUnesc", "esc", "unesc", "i", "c", "require_formats", "__commonJSMin", "exports", "ini", "formats", "__name", "obj", "replacer", "spacing", "require_memory", "__commonJSMin", "exports", "common", "Memory", "options", "key", "target", "path", "value", "i", "self", "fullKey", "nested", "require_common", "__commonJSMin", "exports", "fs", "async", "formats", "Memory", "common", "key", "separator", "files", "callback", "options", "parseFile", "file", "next", "err", "data", "__name", "objs", "store", "obj", "str", "value", "val", "map", "fn", "pairs", "result", "error", "pair", "accumulator", "require_provider", "__commonJSMin", "exports", "async", "common", "Provider", "options", "type", "args", "key", "name", "sameOptions", "store", "__name", "update", "usage", "self", "source", "callback", "current", "names", "response", "mergeObjs", "cb", "next", "err", "value", "keys", "val", "keyIndex", "result", "v", "missing", "mergeProperty", "prop", "onError", "getStores", "stores", "loadStoreSync", "loadStore", "loadBatch", "targets", "done", "objs", "mergeSources", "data", "loadSources", "sourceHierarchy", "saveStoreSync", "memo", "ret", "saveStore", "action", "syncLength", "destructive", "runAction", "require_package", "__commonJSMin", "exports", "module", "require_build", "__commonJSMin", "exports", "module", "fs", "util", "path", "shim", "Y18N", "__name", "opts", "args", "str", "cb", "singular", "plural", "quantity", "values", "locale", "obj", "key", "parts", "part", "i", "arg", "work", "_this", "directory", "languageFile", "serializedLocale", "err", "localeLookup", "file", "y18n$1", "_shim", "y18n", "nodePlatformShim", "require_build", "__commonJSMin", "exports", "module", "util", "fs", "path", "camelCase", "str", "camelcase", "nextChrUpper", "leadingHyphens", "i", "chr", "__name", "decamelize", "joinString", "lowercase", "notCamelcase", "chrLower", "chrString", "looksLikeNumber", "x", "tokenizeArgString", "argString", "e", "prevC", "c", "opening", "args", "ii", "DefaultValuesForTypeKey", "mixin", "YargsParser", "_mixin", "argsInput", "options", "opts", "aliases", "combineAliases", "configuration", "defaults", "configObjects", "envPrefix", "notFlagsOption", "notFlagsArgv", "newAliases", "defaulted", "__", "flags", "negative", "negatedBoolean", "opt", "key", "assignment", "value", "extendAliases", "alias", "error", "checkConfiguration", "notFlags", "argv", "argvReturn", "arg", "truncatedArg", "broken", "letters", "m", "next", "isUnknownOptionAsArg", "pushPositional", "checkAllAliases", "eatArray", "eatNargs", "setArg", "defaultValue", "j", "applyEnvVars", "setConfig", "setConfigObjects", "applyDefaultsAndAliases", "applyCoercions", "setPlaceholderKeys", "hasKey", "k", "prop", "maybeCoercedNumber", "maybeCoerceNumber", "argAfterEqualSign", "toEat", "isUndefined", "available", "consumed", "argsToSet", "nargsCount", "defVal", "processValue", "val", "addNewAlias", "splitKey", "setKey", "keyProperties", "a", "v", "increment", "configLookup", "configKey", "configPath", "config", "resolvedConfigPath", "resolveConfig", "setConfigObject", "ex", "prev", "fullKey", "configObject", "configOnly", "prefix", "env", "envVar", "keys", "coerce", "applied", "ali", "err", "obj", "canLog", "o", "sanitizeKey", "isTypeArray", "isValueArray", "duplicate", "y", "flag", "toCheck", "setAlias", "hasAnyFlag", "flagsKeys", "hasFlagsMatching", "patterns", "pattern", "match", "hasAllShortFlags", "hasAllFlags", "isUnknownOption", "defaultForType", "guessType", "type", "num", "aliasArrays", "combined", "change", "aliasArray", "self", "lastAlias", "orig", "minNodeVersion", "parser", "yargsParser", "require_ansi_regex", "__commonJSMin", "exports", "module", "onlyFirst", "pattern", "require_strip_ansi", "__commonJSMin", "exports", "module", "ansiRegex", "string", "require_is_fullwidth_code_point", "__commonJSMin", "exports", "module", "isFullwidthCodePoint", "__name", "codePoint", "require_emoji_regex", "__commonJSMin", "exports", "module", "require_string_width", "__commonJSMin", "exports", "module", "stripAnsi", "isFullwidthCodePoint", "emojiRegex", "stringWidth", "__name", "string", "width", "i", "code", "require_color_name", "__commonJSMin", "exports", "module", "require_conversions", "__commonJSMin", "exports", "module", "cssKeywords", "reverseKeywords", "key", "convert", "model", "channels", "labels", "rgb", "r", "g", "b", "min", "max", "delta", "h", "s", "rdif", "gdif", "bdif", "v", "diff", "diffc", "__name", "c", "w", "k", "m", "y", "comparativeDistance", "x", "reversed", "currentClosestDistance", "currentClosestKeyword", "keyword", "value", "distance", "z", "xyz", "l", "hsl", "t2", "t3", "val", "t1", "i", "smin", "lmin", "sv", "hsv", "hi", "f", "p", "q", "t", "vmin", "sl", "hwb", "wh", "bl", "ratio", "n", "cmyk", "a", "lab", "y2", "x2", "z2", "lch", "hr", "args", "saturation", "ansi", "color", "mult", "rem", "string", "match", "colorString", "char", "integer", "chroma", "grayscale", "hue", "hcg", "pure", "mg", "apple", "gray", "require_route", "__commonJSMin", "exports", "module", "conversions", "buildGraph", "graph", "models", "len", "__name", "deriveBFS", "fromModel", "queue", "current", "adjacents", "i", "adjacent", "node", "link", "from", "to", "args", "wrapConversion", "toModel", "path", "fn", "cur", "conversion", "require_color_convert", "__commonJSMin", "exports", "module", "conversions", "route", "convert", "models", "wrapRaw", "fn", "wrappedFn", "__name", "args", "arg0", "wrapRounded", "result", "len", "i", "fromModel", "routes", "toModel", "require_ansi_styles", "__commonJSMin", "exports", "module", "wrapAnsi16", "__name", "fn", "offset", "args", "wrapAnsi256", "code", "wrapAnsi16m", "rgb", "ansi2ansi", "n", "rgb2rgb", "r", "g", "b", "setLazyProperty", "object", "property", "get", "value", "colorConvert", "makeDynamicStyles", "wrap", "targetSpace", "identity", "isBackground", "styles", "sourceSpace", "suite", "name", "assembleStyles", "codes", "groupName", "group", "styleName", "style", "require_wrap_ansi", "__commonJSMin", "exports", "module", "stringWidth", "stripAnsi", "ansiStyles", "ESCAPES", "END_CODE", "ANSI_ESCAPE_BELL", "ANSI_CSI", "ANSI_OSC", "ANSI_SGR_TERMINATOR", "ANSI_ESCAPE_LINK", "wrapAnsi", "__name", "code", "wrapAnsiHyperlink", "uri", "wordLengths", "string", "character", "wrapWord", "rows", "word", "columns", "characters", "isInsideEscape", "isInsideLinkEscape", "visible", "index", "characterLength", "stringVisibleTrimSpacesRight", "words", "last", "exec", "options", "returnValue", "escapeCode", "escapeUrl", "lengths", "rowLength", "remainingColumns", "breaksStartingThisLine", "pre", "groups", "line", "require_build", "__commonJSMin", "exports", "module", "align", "alignRight", "alignCenter", "top", "right", "bottom", "left", "UI", "__name", "opts", "_a", "args", "cols", "arg", "str", "rows", "row", "leftColumnWidth", "columns", "mixin", "r", "i", "text", "noAnsi", "lines", "line", "rrow", "col", "c", "width", "wrapWidth", "ts", "fn", "padding", "addBorder", "source", "previousLine", "match", "leadingWhitespace", "target", "targetTextWidth", "rrows", "widths", "wrapped", "unset", "remainingWidth", "unsetWidth", "w", "_minWidth", "style", "minWidth", "getWindowWidth", "strWidth", "cliui", "_mixin", "stringWidth", "stripAnsi", "wrap", "ui", "require_sync", "__commonJSMin", "exports", "module", "dirname", "resolve", "readdirSync", "statSync", "start", "callback", "dir", "tmp", "module", "__name", "position", "oldPrepareStackTrace", "_", "stack", "require_require_directory", "__commonJSMin", "exports", "module", "fs", "join", "resolve", "dirname", "defaultOptions", "__name", "name", "obj", "checkFileInclusion", "path", "filename", "options", "requireDirectory", "m", "retval", "prop", "joined", "files", "key", "require_build", "__commonJSMin", "exports", "module", "assert", "YError", "_YError", "__name", "msg", "previouslyVisitedConfigs", "shim", "applyExtends", "config", "cwd", "mergeExtends", "_shim", "defaultConfig", "isPath", "pathToDefault", "getPathToDefaultConfig", "checkForCircularExtends", "mergeDeep", "cfgPath", "pathToExtend", "config1", "config2", "target", "isObject", "obj", "key", "parseCommand", "cmd", "splitCommand", "bregex", "firstCommand", "parsedCommand", "i", "variadic", "positionName", "argsert", "arg1", "arg2", "arg3", "parseArgs", "position", "parsed", "callerArguments", "_length", "args", "length", "totalCommands", "demanded", "arg", "observedType", "guessType", "type", "argumentTypeError", "optional", "err", "allowedTypes", "isPromise", "maybePromise", "assertNotStrictEqual", "actual", "expected", "message", "assertSingleKey", "objectKeys", "object", "objFilter", "original", "filter", "globalMiddlewareFactory", "globalMiddleware", "context", "callback", "applyBeforeValidation", "commandMiddlewareFactory", "commandMiddleware", "middleware", "applyMiddleware", "argv", "yargs", "middlewares", "beforeValidation", "beforeValidationError", "acc", "initialObj", "middlewareObj", "result", "getProcessArgvBinIndex", "isBundledElectronApp", "isElectronApp", "hideBin", "getProcessArgvBin", "processArgv", "whichModule", "exported", "files", "mod", "DEFAULT_MARKER", "command", "usage", "validation", "self", "handlers", "aliasMap", "defaultCommand", "description", "builder", "handler", "deprecated", "aliases", "isCommandAndAliases", "isCommandHandlerDefinition", "moduleName", "extractDesc", "isCommandBuilderDefinition", "alias", "isDefault", "parsedAliases", "c", "dir", "req", "callerFile", "opts", "parentVisit", "o", "joined", "filename", "visited", "commandFromFilename", "describe", "desc", "test", "commandIndex", "commandHandler", "currentContext", "numFiles", "parentCommands", "innerArgv", "positionalMap", "isCommandBuilderCallback", "builderOutput", "innerYargs", "isYargsInstance", "shouldUpdateUsage", "usageFromParentCommandsCommandHandler", "isCommandBuilderOptionDefinitions", "populatePositionals", "populateDoubleDash", "handlerResult", "handlerFinishCommand", "value", "error", "pc", "commandString", "demand", "populatePositional", "maybe", "a", "postProcessPositionals", "positional", "parseOptions", "options", "unparsed", "positionalKeys", "cmdString", "d", "frozens", "frozen", "setBlocking", "blocking", "_stream", "stream", "y18n", "__", "fails", "f", "failMessage", "showHelpOnFail", "parseFunctionArgs", "enabled", "failureOutput", "logger", "usages", "usageDisabled", "examples", "commands", "cmdArray", "descriptions", "keyOrKeys", "k", "epilogs", "wrapSet", "wrap", "cols", "getWrap", "windowWidth", "deferY18nLookupPrefix", "str", "cachedHelpMessage", "normalizeAliases", "base$0", "demandedOptions", "demandedCommands", "deprecatedOptions", "groups", "keys", "filterHiddenOptions", "theWrap", "ui", "u", "b", "maxWidth", "hints", "aliasKeys", "defaultGroup", "addUngroupedKeys", "isLongSwitch", "sw", "getText", "displayedGroups", "groupName", "normalizedKeys", "aliasKey", "switches", "sw1", "sw2", "addIndentation", "kswitch", "deprecatedExtra", "extra", "defaultString", "getIndentation", "example", "e", "epilog", "table", "modifier", "width", "v", "groupedKeys", "toCheck", "group", "level", "fn", "values", "separator", "string", "sep", "array", "defaultDescription", "version", "ver", "localLookup", "isIndentedText", "text", "indent", "completionShTemplate", "completionZshTemplate", "completion", "zshShell", "done", "completions", "current", "runCompletionFunction", "completionFunction", "isSyncCompletionFunction", "list", "ii", "y", "usageCommand", "commandName", "descs", "negable", "keyAndAliases", "completeOptionKey", "val", "startsByTwoDashes", "s", "isShortOption", "dashes", "$0", "script", "name", "levenshtein", "matrix", "j", "specialKeys", "__n", "_s", "required", "observed", "missing", "customMsgs", "customMsg", "isDefaultCommand", "checkPositionals", "commandKeys", "unknown", "newAliases", "invalid", "invalidKeys", "checks", "global", "func", "implied", "keyExists", "num", "implyFail", "origKey", "origValue", "conflicting", "potentialCommands", "recommended", "bestDistance", "candidate", "shim$1", "YargsWithShim", "Yargs", "processArgs", "parentRequire", "command$1", "completion$1", "output", "preservedGroups", "usage$1", "validation$1", "scriptName", "default$0", "x", "rebase", "hasOutput", "exitError", "code", "exitProcess", "completionCommand", "tmpOptions", "l", "arrayOptions", "objectOptions", "freeze", "strict", "strictCommands", "strictOptions", "parseFn", "parseContext", "unfreeze", "configObjects", "populateParserHintArray", "populateParserHintSingleValueDictionary", "sanitizeKey", "populateParserHintArrayDictionary", "setKey", "set", "demandOption", "populateParserHintDictionary", "singleKeyHandler", "deleteFromParserHintObject", "optionKey", "hintKey", "hint", "exampleParams", "max", "min", "minMsg", "maxMsg", "option", "key1", "key2", "_global", "globals", "g", "rootPath", "conf", "pkgUp", "pkgs", "npath", "startDir", "pkgJsonPath", "names", "shortCircuit", "_parseFn", "tmpParsed", "opt", "deprecate", "supportedOpts", "accept", "fullCommand", "pk", "parseOption", "existing", "seen", "prefix", "parserConfig", "versionOpt", "defaultVersionOpt", "guessVersion", "helpOpt", "defaultHelpOpt", "defaultShowHiddenOpt", "showHiddenOpt", "_logger", "locale", "detectLocale", "guessLocale", "detect", "recommendCommands", "recommend", "_calledFromCommand", "skipValidation", "handlerKeys", "requestCompletions", "skipRecommendation", "skipDefaultCommand", "firstUnknownCommand", "completionArgs", "calledFromCommand", "parseErrors", "failedStrictCommands", "base", "_a", "_b", "readFileSync", "inspect", "resolve", "Parser", "cjsPlatformShim", "minNodeVersion", "Parser$1", "Yargs$1", "cjs", "require_yargs", "__commonJSMin", "exports", "module", "Yargs", "processArgv", "Argv", "processArgs", "cwd", "argv", "singletonify", "__name", "inst", "key", "require_argv", "__commonJSMin", "exports", "util", "common", "Memory", "Argv", "options", "usage", "self", "yargs", "argv", "isYargs", "key", "val", "obj", "__name", "require_env", "__commonJSMin", "exports", "util", "common", "Memory", "Env", "options", "self", "env", "key", "val", "require_secure_keys", "__commonJSMin", "exports", "module", "crypto", "json", "__name", "obj", "replacer", "spacing", "Secure", "opts", "data", "callback", "self", "acc", "key", "value", "cipherConvert", "decrypted", "contents", "encs", "cipher", "require_file", "__commonJSMin", "exports", "fs", "path", "util", "Secure", "formats", "Memory", "exists", "existsSync", "File", "options", "value", "callback", "format", "self", "err", "data", "stringData", "ex", "fileData", "contents", "parsed", "base", "looking", "fullpath", "previous", "stats", "stat", "require_literal", "__commonJSMin", "exports", "util", "Memory", "Literal", "__name", "options", "require_nconf", "__commonJSMin", "exports", "module", "common", "Provider", "nconf", "exports", "createServiceConfig", "path", "__importStar", "nconf_1", "ServiceConfig", "__name", "key", "callback", "logConfigFile", "configFile", "logger", "message", "baseDir", "opts", "defaults", "nconfInstance", "STAGE_VAR", "parts", "i", "filename", "require_base64", "__commonJSMin", "exports", "intToCharMap", "number", "charCode", "bigA", "bigZ", "littleA", "littleZ", "zero", "nine", "plus", "slash", "littleOffset", "numberOffset", "require_base64_vlq", "__commonJSMin", "exports", "base64", "VLQ_BASE_SHIFT", "VLQ_BASE", "VLQ_BASE_MASK", "VLQ_CONTINUATION_BIT", "toVLQSigned", "aValue", "__name", "fromVLQSigned", "isNegative", "shifted", "encoded", "digit", "vlq", "aStr", "aIndex", "aOutParam", "strLen", "result", "shift", "continuation", "require_util", "__commonJSMin", "exports", "getArg", "aArgs", "aName", "aDefaultValue", "__name", "urlRegexp", "dataUrlRegexp", "urlParse", "aUrl", "match", "urlGenerate", "aParsedUrl", "url", "normalize", "aPath", "path", "isAbsolute", "parts", "part", "up", "i", "join", "aRoot", "aPathUrl", "aRootUrl", "joined", "relative", "level", "index", "supportsNullProto", "obj", "identity", "s", "toSetString", "aStr", "isProtoString", "fromSetString", "length", "compareByOriginalPositions", "mappingA", "mappingB", "onlyCompareOriginal", "cmp", "strcmp", "compareByGeneratedPositionsDeflated", "onlyCompareGenerated", "aStr1", "aStr2", "compareByGeneratedPositionsInflated", "parseSourceMapInput", "str", "computeSourceURL", "sourceRoot", "sourceURL", "sourceMapURL", "parsed", "require_array_set", "__commonJSMin", "exports", "util", "has", "hasNativeMap", "ArraySet", "__name", "aArray", "aAllowDuplicates", "set", "i", "len", "aStr", "sStr", "isDuplicate", "idx", "aIdx", "require_mapping_list", "__commonJSMin", "exports", "util", "generatedPositionAfter", "mappingA", "mappingB", "lineA", "lineB", "columnA", "columnB", "__name", "MappingList", "aCallback", "aThisArg", "aMapping", "require_source_map_generator", "__commonJSMin", "exports", "base64VLQ", "util", "ArraySet", "MappingList", "SourceMapGenerator", "aArgs", "__name", "aSourceMapConsumer", "sourceRoot", "generator", "mapping", "newMapping", "sourceFile", "sourceRelative", "content", "generated", "original", "source", "name", "aSourceFile", "aSourceContent", "aSourceMapPath", "newSources", "newNames", "aGenerated", "aOriginal", "aSource", "aName", "previousGeneratedColumn", "previousGeneratedLine", "previousOriginalColumn", "previousOriginalLine", "previousName", "previousSource", "result", "next", "nameIdx", "sourceIdx", "mappings", "i", "len", "aSources", "aSourceRoot", "key", "map", "require_binary_search", "__commonJSMin", "exports", "recursiveSearch", "aLow", "aHigh", "aNeedle", "aHaystack", "aCompare", "aBias", "mid", "cmp", "__name", "index", "require_quick_sort", "__commonJSMin", "exports", "swap", "ary", "x", "y", "temp", "__name", "randomIntInRange", "low", "high", "doQuickSort", "comparator", "p", "r", "pivotIndex", "i", "pivot", "j", "q", "require_source_map_consumer", "__commonJSMin", "exports", "util", "binarySearch", "ArraySet", "base64VLQ", "quickSort", "SourceMapConsumer", "aSourceMap", "aSourceMapURL", "sourceMap", "IndexedSourceMapConsumer", "BasicSourceMapConsumer", "__name", "aStr", "index", "c", "aSourceRoot", "aCallback", "aContext", "aOrder", "context", "order", "mappings", "sourceRoot", "mapping", "source", "aArgs", "line", "needle", "originalLine", "originalColumn", "version", "sources", "names", "sourcesContent", "file", "s", "aSource", "relativeSource", "i", "smc", "generatedMappings", "destGeneratedMappings", "destOriginalMappings", "length", "srcMapping", "destMapping", "Mapping", "generatedLine", "previousGeneratedColumn", "previousOriginalLine", "previousOriginalColumn", "previousSource", "previousName", "cachedSegments", "temp", "originalMappings", "str", "segment", "end", "value", "aNeedle", "aMappings", "aLineName", "aColumnName", "aComparator", "aBias", "nextMapping", "name", "sc", "nullOnMissing", "url", "fileUriAbsPath", "sections", "lastOffset", "offset", "offsetLine", "offsetColumn", "j", "sectionIndex", "section", "cmp", "content", "generatedPosition", "ret", "sectionMappings", "adjustedMapping", "require_source_node", "__commonJSMin", "exports", "SourceMapGenerator", "util", "REGEX_NEWLINE", "NEWLINE_CODE", "isSourceNode", "SourceNode", "aLine", "aColumn", "aSource", "aChunks", "aName", "__name", "aGeneratedCode", "aSourceMapConsumer", "aRelativePath", "node", "remainingLines", "remainingLinesIndex", "shiftNextLine", "lineContents", "getNextLine", "newLine", "lastGeneratedLine", "lastGeneratedColumn", "lastMapping", "mapping", "addMappingWithCode", "nextLine", "code", "sourceFile", "content", "source", "aChunk", "chunk", "i", "aFn", "len", "aSep", "newChildren", "aPattern", "aReplacement", "lastChild", "aSourceFile", "aSourceContent", "sources", "str", "aArgs", "generated", "map", "sourceMappingActive", "lastOriginalSource", "lastOriginalLine", "lastOriginalColumn", "lastOriginalName", "original", "idx", "length", "sourceContent", "require_source_map", "__commonJSMin", "exports", "require_buffer_from", "__commonJSMin", "exports", "module", "toString", "isModern", "isArrayBuffer", "input", "__name", "fromArrayBuffer", "obj", "byteOffset", "length", "maxLength", "fromString", "string", "encoding", "bufferFrom", "value", "encodingOrOffset", "require_source_map_support", "__commonJSMin", "exports", "module", "SourceMapConsumer", "path", "fs", "bufferFrom", "dynamicRequire", "mod", "request", "__name", "errorFormatterInstalled", "uncaughtShimInstalled", "emptyCacheBetweenOperations", "environment", "fileContentsCache", "sourceMapCache", "reSourceMap", "retrieveFileHandlers", "retrieveMapHandlers", "isInBrowser", "hasGlobalProcessEventEmitter", "globalProcessVersion", "globalProcessStderr", "globalProcessExit", "code", "handlerExec", "list", "arg", "i", "ret", "retrieveFile", "protocol", "drive", "contents", "xhr", "supportRelativeURL", "file", "url", "dir", "match", "startPath", "retrieveSourceMapURL", "source", "fileData", "sourceMapHeader", "re", "lastMatch", "retrieveSourceMap", "sourceMappingURL", "sourceMapData", "rawData", "mapSourcePosition", "position", "sourceMap", "urlAndMap", "originalPosition", "mapEvalOrigin", "origin", "CallSiteToString", "fileName", "fileLocation", "lineNumber", "columnNumber", "line", "functionName", "addSuffix", "isConstructor", "isMethodCall", "typeName", "methodName", "cloneCallSite", "frame", "object", "name", "wrapCallSite", "state", "column", "noHeader", "headerLength", "originalFunctionName", "prepareStackTrace", "error", "stack", "message", "errorString", "processedStack", "getErrorSource", "printErrorAndExit", "stderr", "shimEmitUncaughtException", "origEmit", "type", "hasStack", "hasListeners", "originalRetrieveFileHandlers", "originalRetrieveMapHandlers", "options", "Module", "$compile", "content", "filename", "installHandler", "worker_threads", "require_register", "__commonJSMin", "require_format", "__commonJSMin", "exports", "module", "InvalidFormatError", "_InvalidFormatError", "__name", "formatFn", "Format", "options", "createFormatWrap", "opts", "require_styles", "__commonJSMin", "exports", "module", "styles", "codes", "key", "val", "style", "require_has_flag", "__commonJSMin", "exports", "module", "flag", "argv", "terminatorPos", "prefix", "pos", "require_supports_colors", "__commonJSMin", "exports", "module", "os", "hasFlag", "env", "forceColor", "translateLevel", "level", "__name", "supportsColor", "stream", "min", "osRelease", "sign", "version", "getSupportLevel", "require_trap", "__commonJSMin", "exports", "module", "__name", "text", "options", "result", "trap", "c", "chars", "rand", "require_zalgo", "__commonJSMin", "exports", "module", "__name", "text", "options", "soul", "all", "randomNumber", "range", "r", "isChar", "character", "bool", "i", "heComes", "result", "counts", "l", "arr", "d", "index", "require_america", "__commonJSMin", "exports", "module", "colors", "letter", "i", "exploded", "require_zebra", "__commonJSMin", "exports", "module", "colors", "letter", "i", "exploded", "require_rainbow", "__commonJSMin", "exports", "module", "colors", "rainbowColors", "letter", "exploded", "require_random", "__commonJSMin", "exports", "module", "colors", "available", "letter", "exploded", "require_colors", "__commonJSMin", "exports", "module", "colors", "util", "ansiStyles", "defineProps", "newLineRegex", "str", "stylize", "__name", "style", "styleMap", "matchOperatorsRe", "escapeStringRegexp", "build", "_styles", "builder", "applyStyle", "proto", "styles", "ret", "key", "args", "arg", "newLinesPresent", "nestedStyles", "i", "code", "match", "theme", "out", "init", "name", "sequencer", "map", "exploded", "require_safe", "__commonJSMin", "exports", "module", "colors", "require_cli", "__commonJSMin", "exports", "require_npm", "__commonJSMin", "exports", "require_syslog", "__commonJSMin", "exports", "require_config", "__commonJSMin", "exports", "require_triple_beam", "__commonJSMin", "exports", "require_colorize", "__commonJSMin", "exports", "module", "colors", "LEVEL", "MESSAGE", "hasSpace", "Colorizer", "_Colorizer", "__name", "opts", "clrs", "nextColors", "acc", "level", "lookup", "message", "i", "len", "info", "require_levels", "__commonJSMin", "exports", "module", "Colorizer", "config", "require_align", "__commonJSMin", "exports", "module", "format", "info", "require_errors", "__commonJSMin", "exports", "module", "format", "LEVEL", "MESSAGE", "einfo", "stack", "cause", "info", "err", "require_pad_levels", "__commonJSMin", "exports", "module", "configs", "LEVEL", "MESSAGE", "Padder", "_Padder", "__name", "opts", "levels", "lvls", "level", "filler", "maxLength", "targetLen", "rep", "acc", "info", "require_cli", "__commonJSMin", "exports", "module", "Colorizer", "Padder", "configs", "MESSAGE", "CliFormat", "__name", "opts", "info", "require_combine", "__commonJSMin", "exports", "module", "format", "cascade", "formats", "isValidFormat", "info", "obj", "__name", "fmt", "combinedFormat", "instance", "require_safe_stable_stringify", "__commonJSMin", "exports", "module", "hasOwnProperty", "stringify", "configure", "strEscapeSequencesRegExp", "strEscape", "str", "__name", "sort", "array", "comparator", "i", "currentValue", "position", "typedArrayPrototypeGetSymbolToStringTag", "isTypedArrayWithEntries", "value", "stringifyTypedArray", "separator", "maximumBreadth", "whitespace", "res", "getCircularValueOption", "options", "circularValue", "getDeterministicOption", "getBooleanOption", "key", "getPositiveIntegerOption", "getItemCount", "number", "getUniqueReplacerSet", "replacerArray", "replacerSet", "getStrictOption", "message", "fail", "bigint", "deterministic", "maximumDepth", "stringifyFnReplacer", "parent", "stack", "replacer", "spacer", "indentation", "join", "originalIndentation", "maximumValuesToStringify", "tmp", "removedKeys", "keys", "keyLength", "maximumPropertiesToStringify", "stringifyArrayReplacer", "stringifyIndent", "stringifySimple", "hasLength", "space", "require_json", "__commonJSMin", "exports", "module", "format", "MESSAGE", "stringify", "replacer", "key", "value", "__name", "info", "opts", "jsonStringify", "require_label", "__commonJSMin", "exports", "module", "format", "info", "opts", "require_logstash", "__commonJSMin", "exports", "module", "format", "MESSAGE", "jsonStringify", "info", "logstash", "require_metadata", "__commonJSMin", "exports", "module", "format", "fillExcept", "info", "fillExceptKeys", "metadataKey", "savedKeys", "acc", "key", "metadata", "__name", "fillWith", "fillWithKeys", "opts", "require_ms", "__commonJSMin", "exports", "module", "s", "m", "h", "d", "w", "y", "val", "options", "type", "parse", "fmtLong", "fmtShort", "str", "match", "__name", "ms", "msAbs", "plural", "name", "isPlural", "require_ms", "__commonJSMin", "exports", "module", "format", "ms", "info", "curr", "require_pretty_print", "__commonJSMin", "exports", "module", "inspect", "format", "LEVEL", "MESSAGE", "SPLAT", "info", "opts", "stripped", "require_printf", "__commonJSMin", "exports", "module", "MESSAGE", "Printf", "__name", "templateFn", "info", "opts", "require_simple", "__commonJSMin", "exports", "module", "format", "MESSAGE", "jsonStringify", "info", "stringifiedRest", "padding", "require_splat", "__commonJSMin", "exports", "module", "util", "SPLAT", "formatRegExp", "escapedPercent", "Splatter", "__name", "opts", "info", "tokens", "msg", "splat", "percents", "escapes", "extraSplat", "metas", "metalen", "i", "token", "twoDigitsOptional", "twoDigits", "threeDigits", "fourDigits", "word", "literal", "shorten", "arr", "sLen", "newArr", "i", "len", "__name", "monthUpdate", "arrName", "v", "i18n", "lowerCaseArr", "index", "assign", "origObj", "args", "_i", "_a", "args_1", "obj", "key", "dayNames", "monthNames", "monthNamesShort", "dayNamesShort", "defaultI18n", "dayOfMonth", "globalI18n", "setGlobalDateI18n", "regexEscape", "str", "pad", "val", "formatFlags", "dateObj", "offset", "monthParse", "emptyDigits", "emptyWord", "amPm", "timezoneOffset", "parts", "minutes", "parseFlags", "now", "cent", "globalMasks", "setGlobalDateMasks", "masks", "format", "mask", "literals", "$0", "$1", "combinedI18nSettings", "parse", "dateStr", "today", "dateInfo", "parseInfo", "newFormat", "specifiedFields", "requiredFields", "info", "field", "regex", "requiredField", "matches", "parser", "value", "dateTZ", "validateFields", "fecha", "require_timestamp", "__commonJSMin", "exports", "module", "fecha", "format", "info", "opts", "require_uncolorize", "__commonJSMin", "exports", "module", "colors", "format", "MESSAGE", "info", "opts", "require_logform", "__commonJSMin", "exports", "format", "exposeFormat", "name", "requireFormat", "__name", "require_common", "__commonJSMin", "exports", "format", "prop", "obj", "type", "props", "notice", "require_package", "__commonJSMin", "exports", "module", "require_node", "__commonJSMin", "exports", "module", "require_stream", "__commonJSMin", "exports", "module", "require_destroy", "__commonJSMin", "exports", "module", "destroy", "err", "cb", "_this", "readableDestroyed", "writableDestroyed", "emitErrorNT", "emitCloseNT", "emitErrorAndCloseNT", "__name", "self", "undestroy", "errorOrDestroy", "stream", "rState", "wState", "require_errors", "__commonJSMin", "exports", "module", "codes", "createErrorType", "code", "message", "Base", "getMessage", "arg1", "arg2", "arg3", "__name", "NodeError", "oneOf", "expected", "thing", "len", "startsWith", "str", "search", "pos", "endsWith", "this_len", "includes", "start", "name", "value", "actual", "determiner", "msg", "type", "arg", "require_state", "__commonJSMin", "exports", "module", "ERR_INVALID_OPT_VALUE", "highWaterMarkFrom", "options", "isDuplex", "duplexKey", "__name", "getHighWaterMark", "state", "hwm", "name", "require_inherits_browser", "__commonJSMin", "exports", "module", "__name", "ctor", "superCtor", "TempCtor", "require_inherits", "__commonJSMin", "exports", "module", "util", "require_buffer_list", "__commonJSMin", "exports", "module", "ownKeys", "object", "enumerableOnly", "keys", "symbols", "sym", "__name", "_objectSpread", "target", "i", "source", "key", "_defineProperty", "obj", "value", "_toPropertyKey", "_classCallCheck", "instance", "Constructor", "_defineProperties", "props", "descriptor", "_createClass", "protoProps", "staticProps", "arg", "_toPrimitive", "input", "hint", "prim", "res", "_require", "Buffer", "_require2", "inspect", "custom", "copyBuffer", "src", "offset", "BufferList", "v", "entry", "ret", "s", "p", "hasStrings", "c", "str", "nb", "buf", "_", "options", "require_safe_buffer", "__commonJSMin", "exports", "module", "buffer", "Buffer", "copyProps", "src", "dst", "key", "__name", "SafeBuffer", "arg", "encodingOrOffset", "length", "size", "fill", "encoding", "buf", "require_string_decoder", "__commonJSMin", "exports", "Buffer", "isEncoding", "encoding", "_normalizeEncoding", "enc", "retried", "__name", "normalizeEncoding", "nenc", "StringDecoder", "nb", "utf16Text", "utf16End", "utf8FillLast", "base64Text", "base64End", "simpleWrite", "simpleEnd", "buf", "r", "i", "utf8End", "utf8Text", "utf8CheckByte", "byte", "utf8CheckIncomplete", "self", "j", "utf8CheckExtraBytes", "p", "total", "end", "c", "require_end_of_stream", "__commonJSMin", "exports", "module", "ERR_STREAM_PREMATURE_CLOSE", "once", "callback", "called", "_len", "args", "_key", "__name", "noop", "isRequest", "stream", "eos", "opts", "readable", "writable", "onlegacyfinish", "onfinish", "writableEnded", "readableEnded", "onend", "onerror", "err", "onclose", "onrequest", "require_async_iterator", "__commonJSMin", "exports", "module", "_Object$setPrototypeO", "_defineProperty", "obj", "key", "value", "_toPropertyKey", "__name", "arg", "_toPrimitive", "input", "hint", "prim", "res", "finished", "kLastResolve", "kLastReject", "kError", "kEnded", "kLastPromise", "kHandlePromise", "kStream", "createIterResult", "done", "readAndResolve", "iter", "resolve", "data", "onReadable", "wrapForNext", "lastPromise", "reject", "AsyncIteratorPrototype", "ReadableStreamAsyncIteratorPrototype", "_this", "error", "promise", "_this2", "err", "createReadableStreamAsyncIterator", "stream", "_Object$create", "iterator", "require_from", "__commonJSMin", "exports", "module", "asyncGeneratorStep", "gen", "resolve", "reject", "_next", "_throw", "key", "arg", "info", "value", "error", "__name", "_asyncToGenerator", "fn", "self", "args", "err", "ownKeys", "object", "enumerableOnly", "keys", "symbols", "sym", "_objectSpread", "target", "i", "source", "_defineProperty", "obj", "_toPropertyKey", "_toPrimitive", "input", "hint", "prim", "res", "ERR_INVALID_ARG_TYPE", "from", "Readable", "iterable", "opts", "iterator", "readable", "reading", "next", "_next2", "_yield$iterator$next", "done", "require_stream_readable", "__commonJSMin", "exports", "module", "Readable", "Duplex", "ReadableState", "EE", "EElistenerCount", "__name", "emitter", "type", "Stream", "Buffer", "OurUint8Array", "_uint8ArrayToBuffer", "chunk", "_isUint8Array", "obj", "debugUtil", "debug", "BufferList", "destroyImpl", "_require", "getHighWaterMark", "_require$codes", "ERR_INVALID_ARG_TYPE", "ERR_STREAM_PUSH_AFTER_EOF", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_STREAM_UNSHIFT_AFTER_END_EVENT", "StringDecoder", "createReadableStreamAsyncIterator", "from", "errorOrDestroy", "kProxyEvents", "prependListener", "event", "fn", "options", "stream", "isDuplex", "value", "err", "cb", "encoding", "state", "skipChunkCheck", "readableAddChunk", "addToFront", "onEofChunk", "er", "chunkInvalid", "addChunk", "maybeReadMore", "emitReadable", "enc", "decoder", "p", "content", "MAX_HWM", "computeNewHighWaterMark", "n", "howMuchToRead", "nOrig", "endReadable", "doRead", "ret", "fromList", "emitReadable_", "flow", "maybeReadMore_", "len", "dest", "pipeOpts", "src", "doEnd", "endFn", "onend", "unpipe", "onunpipe", "readable", "unpipeInfo", "cleanup", "ondrain", "pipeOnDrain", "cleanedUp", "onclose", "onfinish", "onerror", "ondata", "indexOf", "dests", "i", "index", "ev", "res", "nReadingNextTick", "updateReadableListening", "self", "resume", "resume_", "_this", "paused", "method", "endReadableNT", "wState", "iterable", "opts", "xs", "x", "l", "require_stream_duplex", "__commonJSMin", "exports", "module", "objectKeys", "obj", "keys", "key", "Duplex", "Readable", "Writable", "v", "method", "options", "onend", "__name", "onEndNT", "self", "value", "require_stream_writable", "__commonJSMin", "exports", "module", "Writable", "CorkedRequest", "state", "_this", "onCorkedFinish", "__name", "Duplex", "WritableState", "internalUtil", "Stream", "Buffer", "OurUint8Array", "_uint8ArrayToBuffer", "chunk", "_isUint8Array", "obj", "destroyImpl", "_require", "getHighWaterMark", "_require$codes", "ERR_INVALID_ARG_TYPE", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_MULTIPLE_CALLBACK", "ERR_STREAM_CANNOT_PIPE", "ERR_STREAM_DESTROYED", "ERR_STREAM_NULL_VALUES", "ERR_STREAM_WRITE_AFTER_END", "ERR_UNKNOWN_ENCODING", "errorOrDestroy", "nop", "options", "stream", "isDuplex", "noDecode", "er", "onwrite", "current", "out", "realHasInstance", "object", "writeAfterEnd", "cb", "validChunk", "encoding", "ret", "isBuf", "writeOrBuffer", "clearBuffer", "decodeChunk", "newChunk", "len", "last", "doWrite", "writev", "onwriteError", "sync", "finishMaybe", "onwriteStateUpdate", "finished", "needFinish", "afterWrite", "onwriteDrain", "entry", "l", "buffer", "holder", "count", "allBuffers", "endWritable", "callFinal", "err", "prefinish", "need", "rState", "corkReq", "value", "require_modern", "__commonJSMin", "exports", "module", "util", "Writable", "LEVEL", "TransportStream", "__name", "options", "logger", "src", "info", "enc", "callback", "level", "errState", "transformed", "err", "chunks", "infos", "write", "require_legacy", "__commonJSMin", "exports", "module", "util", "LEVEL", "TransportStream", "LegacyTransportStream", "__name", "options", "transportError", "err", "info", "enc", "callback", "chunks", "require_winston_transport", "__commonJSMin", "exports", "module", "require_console", "__commonJSMin", "exports", "module", "os", "LEVEL", "MESSAGE", "TransportStream", "__name", "options", "info", "callback", "strArray", "errMsg", "set", "el", "require_isArrayLike", "__commonJSMin", "exports", "module", "isArrayLike", "value", "__name", "require_initialParams", "__commonJSMin", "exports", "module", "fn", "args", "callback", "require_setImmediate", "__commonJSMin", "exports", "fallback", "wrap", "hasQueueMicrotask", "hasSetImmediate", "hasNextTick", "fn", "__name", "defer", "args", "_defer", "require_asyncify", "__commonJSMin", "exports", "module", "asyncify", "_initialParams", "_initialParams2", "_interopRequireDefault", "_setImmediate", "_setImmediate2", "_wrapAsync", "obj", "__name", "func", "args", "callback", "promise", "handlePromise", "result", "e", "value", "invokeCallback", "err", "error", "require_wrapAsync", "__commonJSMin", "exports", "_asyncify", "_asyncify2", "_interopRequireDefault", "obj", "__name", "isAsync", "fn", "isAsyncGenerator", "isAsyncIterable", "wrapAsync", "asyncFn", "require_awaitify", "__commonJSMin", "exports", "module", "awaitify", "asyncFn", "arity", "awaitable", "args", "resolve", "reject", "err", "cbArgs", "__name", "require_parallel", "__commonJSMin", "exports", "module", "_isArrayLike", "_isArrayLike2", "_interopRequireDefault", "_wrapAsync", "_wrapAsync2", "_awaitify", "_awaitify2", "obj", "__name", "eachfn", "tasks", "callback", "results", "task", "key", "taskCb", "err", "result", "require_once", "__commonJSMin", "exports", "module", "once", "fn", "wrapper", "args", "callFn", "__name", "require_getIterator", "__commonJSMin", "exports", "module", "coll", "require_iterator", "__commonJSMin", "exports", "module", "createIterator", "_isArrayLike", "_isArrayLike2", "_interopRequireDefault", "_getIterator", "_getIterator2", "obj", "__name", "createArrayIterator", "coll", "i", "len", "createES2015Iterator", "iterator", "item", "createObjectIterator", "okeys", "next", "key", "require_onlyOnce", "__commonJSMin", "exports", "module", "onlyOnce", "fn", "args", "callFn", "__name", "require_breakLoop", "__commonJSMin", "exports", "module", "breakLoop", "require_asyncEachOfLimit", "__commonJSMin", "exports", "module", "asyncEachOfLimit", "_breakLoop", "_breakLoop2", "_interopRequireDefault", "obj", "__name", "generator", "limit", "iteratee", "callback", "done", "canceled", "awaiting", "running", "idx", "replenish", "value", "iterDone", "iterateeCallback", "handleError", "err", "result", "require_eachOfLimit", "__commonJSMin", "exports", "module", "_once", "_once2", "_interopRequireDefault", "_iterator", "_iterator2", "_onlyOnce", "_onlyOnce2", "_wrapAsync", "_asyncEachOfLimit", "_asyncEachOfLimit2", "_breakLoop", "_breakLoop2", "obj", "__name", "limit", "iteratee", "callback", "nextElem", "done", "canceled", "running", "looping", "iterateeCallback", "err", "value", "replenish", "elem", "require_eachOfLimit", "__commonJSMin", "exports", "module", "_eachOfLimit2", "_eachOfLimit3", "_interopRequireDefault", "_wrapAsync", "_wrapAsync2", "_awaitify", "_awaitify2", "obj", "__name", "eachOfLimit", "coll", "limit", "iteratee", "callback", "require_eachOfSeries", "__commonJSMin", "exports", "module", "_eachOfLimit", "_eachOfLimit2", "_interopRequireDefault", "_awaitify", "_awaitify2", "obj", "__name", "eachOfSeries", "coll", "iteratee", "callback", "require_series", "__commonJSMin", "exports", "module", "series", "_parallel2", "_parallel3", "_interopRequireDefault", "_eachOfSeries", "_eachOfSeries2", "obj", "__name", "tasks", "callback", "require_stream_transform", "__commonJSMin", "exports", "module", "Transform", "_require$codes", "ERR_METHOD_NOT_IMPLEMENTED", "ERR_MULTIPLE_CALLBACK", "ERR_TRANSFORM_ALREADY_TRANSFORMING", "ERR_TRANSFORM_WITH_LENGTH_0", "Duplex", "afterTransform", "er", "data", "ts", "cb", "rs", "__name", "options", "prefinish", "_this", "done", "chunk", "encoding", "n", "err", "err2", "stream", "require_stream_passthrough", "__commonJSMin", "exports", "module", "PassThrough", "Transform", "options", "__name", "chunk", "encoding", "cb", "require_pipeline", "__commonJSMin", "exports", "module", "eos", "once", "callback", "called", "__name", "_require$codes", "ERR_MISSING_ARGS", "ERR_STREAM_DESTROYED", "noop", "err", "isRequest", "stream", "destroyer", "reading", "writing", "closed", "destroyed", "call", "fn", "pipe", "from", "to", "popCallback", "streams", "pipeline", "_len", "_key", "error", "destroys", "i", "require_readable", "__commonJSMin", "exports", "module", "Stream", "require_diagnostics", "__commonJSMin", "exports", "module", "adapters", "modifiers", "logger", "__name", "use", "adapter", "set", "custom", "enabled", "namespace", "async", "i", "resolve", "fn", "values", "modify", "write", "process", "message", "introduce", "options", "has", "key", "nope", "yep", "diagnostics", "args", "require_production", "__commonJSMin", "exports", "module", "create", "diagnostics", "__name", "prod", "namespace", "options", "require_index_cjs", "__commonJSMin", "exports", "module", "cssKeywords", "reverseNames", "name", "cs", "string", "prefix", "value", "model", "abbr", "hex", "rgba", "per", "keyword", "rgb", "match", "i", "hexAlpha", "i2", "clamp", "hsl", "alpha", "h", "s", "l", "a", "hwb", "w", "b", "hexDouble", "r", "g", "hsla", "hwba", "number_", "min", "max", "__name", "string_", "reverseKeywords", "key", "convert$1", "LAB_FT", "srgbNonlinearTransform", "c", "cc", "srgbNonlinearTransformInv", "channels", "labels", "delta", "rdif", "gdif", "bdif", "v", "diff", "diffc", "lp", "mp", "sp", "aa", "bb", "k", "m", "y", "comparativeDistance", "x", "reversed", "currentClosestDistance", "currentClosestKeyword", "distance", "z", "xyz", "t3", "t2", "t1", "smin", "lmin", "sv", "hsv", "hi", "f", "p", "q", "t", "vmin", "sl", "wh", "bl", "ratio", "n", "cmyk", "oklab", "ll", "oklch", "lab", "y2", "x2", "z2", "lch", "hr", "args", "saturation", "ansi", "color", "mult", "rem", "colorString", "char", "integer", "chroma", "hue", "grayscale", "hcg", "pure", "mg", "apple", "gray", "buildGraph", "graph", "models", "length", "deriveBFS", "fromModel", "queue", "current", "adjacents", "adjacent", "node", "link", "from", "to", "wrapConversion", "toModel", "path", "fn", "cur", "route", "conversion", "convert", "wrapRaw", "wrappedFn", "arg0", "wrapRounded", "result", "routes", "routeModels", "skippedModels", "hashedModelKeys", "limiters", "Color", "object", "newArray", "zeroArray", "keys", "hashedKeys", "limit", "places", "self", "arguments_", "roundToPlace", "getset", "maxfn", "rgbArray", "alphaHex", "lum", "element", "chan", "color2", "lum1", "lum2", "contrastRatio", "degrees", "mixinColor", "weight", "color1", "w1", "w2", "assertArray", "roundTo", "number", "channel", "modifier", "array", "getDefaultExportFromCjs", "textHex", "str", "hash", "colorspace", "namespace", "delimiter", "split", "base", "require_kuler", "__commonJSMin", "exports", "module", "Kuler", "text", "color", "__name", "r", "g", "b", "red", "green", "blue", "require_namespace_ansi", "__commonJSMin", "exports", "module", "colorspace", "kuler", "__name", "args", "options", "namespace", "ansi", "require_enabled", "__commonJSMin", "exports", "module", "__name", "name", "variable", "variables", "i", "require_adapters", "__commonJSMin", "exports", "module", "enabled", "__name", "fn", "namespace", "require_process_env", "__commonJSMin", "exports", "module", "adapter", "__name", "require_console", "__commonJSMin", "exports", "module", "meta", "messages", "require_development", "__commonJSMin", "exports", "module", "create", "tty", "diagnostics", "__name", "dev", "namespace", "options", "require_node", "__commonJSMin", "exports", "module", "require_tail_file", "__commonJSMin", "exports", "module", "fs", "StringDecoder", "Stream", "noop", "__name", "options", "iter", "buffer", "decode", "stream", "buff", "pos", "row", "err", "fd", "read", "error", "bytes", "data", "l", "i", "require_file", "__commonJSMin", "exports", "module", "fs", "path", "asyncSeries", "zlib", "MESSAGE", "Stream", "PassThrough", "TransportStream", "debug", "os", "tailFile", "__name", "options", "throwIf", "target", "args", "name", "info", "callback", "output", "bytes", "logged", "written", "normalizeQuery", "file", "buff", "results", "row", "stream", "err", "data", "l", "i", "add", "attempt", "log", "check", "push", "e", "obj", "key", "time", "tail", "line", "size", "fullpath", "stat", "cb", "source", "dest", "ext", "basename", "tasks", "num", "isRotation", "oldest", "isOldest", "isZipped", "filePath", "x", "fileName", "tmppath", "exists", "src", "gzip", "inp", "out", "dirPath", "require_http", "__commonJSMin", "exports", "module", "http", "https", "Stream", "TransportStream", "configure", "__name", "options", "info", "callback", "err", "res", "auth", "path", "body", "e", "stream", "buff", "req", "data", "l", "i", "me", "batchOptionsCopy", "headers", "jsonStringify", "require_is_stream", "__commonJSMin", "exports", "module", "isStream", "__name", "stream", "require_stream", "__commonJSMin", "exports", "module", "isStream", "MESSAGE", "os", "TransportStream", "__name", "options", "info", "callback", "require_transports", "__commonJSMin", "exports", "require_config", "__commonJSMin", "exports", "logform", "configs", "require_eachOf", "__commonJSMin", "exports", "module", "_isArrayLike", "_isArrayLike2", "_interopRequireDefault", "_breakLoop", "_breakLoop2", "_eachOfLimit", "_eachOfLimit2", "_once", "_once2", "_onlyOnce", "_onlyOnce2", "_wrapAsync", "_wrapAsync2", "_awaitify", "_awaitify2", "obj", "__name", "eachOfArrayLike", "coll", "iteratee", "callback", "index", "completed", "length", "canceled", "iteratorCallback", "err", "value", "eachOfGeneric", "eachOf", "eachOfImplementation", "require_withoutIndex", "__commonJSMin", "exports", "module", "_withoutIndex", "iteratee", "value", "index", "callback", "__name", "require_forEach", "__commonJSMin", "exports", "module", "_eachOf", "_eachOf2", "_interopRequireDefault", "_withoutIndex", "_withoutIndex2", "_wrapAsync", "_wrapAsync2", "_awaitify", "_awaitify2", "obj", "__name", "eachLimit", "coll", "iteratee", "callback", "require_fn", "__commonJSMin", "exports", "module", "toString", "__name", "fn", "named", "type", "require_one_time", "__commonJSMin", "exports", "module", "name", "__name", "fn", "called", "value", "onetime", "require_stack_trace", "__commonJSMin", "exports", "belowFn", "oldLimit", "dummyObject", "v8Handler", "v8StackTrace", "err", "self", "lines", "line", "lineMatch", "object", "method", "functionName", "typeName", "methodName", "isNative", "methodStart", "objectEnd", "properties", "callSite", "CallSite", "property", "__name", "strProperties", "boolProperties", "require_exception_stream", "__commonJSMin", "exports", "module", "Writable", "__name", "transport", "info", "enc", "callback", "require_exception_handler", "__commonJSMin", "exports", "module", "os", "asyncForEach", "debug", "once", "stackTrace", "ExceptionStream", "__name", "logger", "args", "arg", "handler", "wrapper", "err", "message", "site", "info", "handlers", "doExit", "timeout", "gracefulExit", "next", "done", "transport", "onDone", "event", "wrap", "require_rejection_stream", "__commonJSMin", "exports", "module", "Writable", "__name", "transport", "info", "enc", "callback", "require_rejection_handler", "__commonJSMin", "exports", "module", "os", "asyncForEach", "debug", "once", "stackTrace", "RejectionStream", "__name", "logger", "args", "arg", "handler", "wrapper", "err", "message", "site", "info", "handlers", "doExit", "timeout", "gracefulExit", "next", "done", "transport", "onDone", "event", "wrap", "require_profiler", "__commonJSMin", "exports", "module", "Profiler", "__name", "logger", "Logger", "args", "info", "require_logger", "__commonJSMin", "exports", "module", "Stream", "Transform", "asyncForEach", "LEVEL", "SPLAT", "isStream", "ExceptionHandler", "RejectionHandler", "LegacyTransportStream", "Profiler", "warn", "config", "formatRegExp", "Logger", "__name", "options", "defaultRequestMetadata", "logger", "info", "infoClone", "silent", "format", "defaultMeta", "levels", "level", "exitOnError", "transports", "colors", "emitErrs", "formatters", "padLevels", "rewriters", "stripColors", "exceptionHandlers", "rejectionHandlers", "transport", "configuredLevelValue", "getLevelValue", "max", "levelValue", "givenLevelValue", "transportLevelValue", "msg", "splat", "meta", "enc", "callback", "next", "target", "match", "results", "queryObject", "queryTransport", "err", "res", "addResults", "result", "out", "streams", "i", "str", "log", "id", "args", "time", "timeEnd", "event", "transportEvent", "value", "pipes", "require_create_logger", "__commonJSMin", "exports", "module", "LEVEL", "config", "Logger", "debug", "isLevelEnabledFunctionName", "level", "__name", "opts", "DerivedLogger", "options", "logger", "args", "self", "msg", "info", "require_container", "__commonJSMin", "exports", "module", "createLogger", "__name", "options", "id", "existing", "logger", "val", "key", "require_winston", "__commonJSMin", "exports", "logform", "warn", "defaultLogger", "method", "args", "val", "prop", "require_util", "__commonJSMin", "exports", "module", "isWrappedSymbol", "wrappedSymbol", "wrapEmitterMethod", "emitter", "method", "wrapper", "original", "wrapped", "__name", "addMethods", "removeMethods", "wrapEmitter", "asyncResource", "event", "handler", "wrappedHandler", "existing", "rng", "poolPtr", "rnds8Pool", "crypto", "import_crypto", "init_rng", "__esmMin", "__name", "regex_default", "init_regex", "__esmMin", "validate", "uuid", "regex_default", "validate_default", "init_validate", "__esmMin", "init_regex", "__name", "unsafeStringify", "arr", "offset", "byteToHex", "stringify", "uuid", "validate_default", "stringify_default", "init_stringify", "__esmMin", "init_validate", "i", "__name", "v1", "options", "buf", "offset", "b", "node", "_nodeId", "clockseq", "_clockseq", "seedBytes", "rng", "msecs", "nsecs", "_lastNSecs", "dt", "_lastMSecs", "tl", "tmh", "n", "unsafeStringify", "v1_default", "init_v1", "__esmMin", "init_rng", "init_stringify", "__name", "parse", "uuid", "validate_default", "v", "arr", "parse_default", "init_parse", "__esmMin", "init_validate", "__name", "stringToBytes", "str", "bytes", "i", "v35", "name", "version", "hashfunc", "generateUUID", "value", "namespace", "buf", "offset", "_namespace", "parse_default", "unsafeStringify", "__name", "DNS", "URL", "init_v35", "__esmMin", "init_stringify", "init_parse", "md5", "bytes", "crypto", "import_crypto", "md5_default", "init_md5", "__esmMin", "__name", "v3", "v3_default", "init_v3", "__esmMin", "init_v35", "init_md5", "v35", "md5_default", "import_crypto", "native_default", "init_native", "__esmMin", "crypto", "v4", "options", "buf", "offset", "native_default", "rnds", "rng", "i", "unsafeStringify", "v4_default", "init_v4", "__esmMin", "init_native", "init_rng", "init_stringify", "__name", "sha1", "bytes", "crypto", "import_crypto", "sha1_default", "init_sha1", "__esmMin", "__name", "v5", "v5_default", "init_v5", "__esmMin", "init_v35", "init_sha1", "v35", "sha1_default", "nil_default", "init_nil", "__esmMin", "version", "uuid", "validate_default", "version_default", "init_version", "__esmMin", "init_validate", "__name", "esm_node_exports", "__export", "nil_default", "parse_default", "stringify_default", "v1_default", "v3_default", "v4_default", "v5_default", "validate_default", "version_default", "init_esm_node", "__esmMin", "init_v1", "init_v3", "init_v4", "init_v5", "init_nil", "init_version", "init_validate", "init_stringify", "init_parse", "require_rtracer", "__commonJSMin", "exports", "module", "wrapEmitter", "uuidv1", "AsyncLocalStorage", "AsyncResource", "pluginName", "als", "wrapHttpEmitters", "__name", "req", "res", "asyncResource", "expressSetResHeaderFn", "headerName", "requestId", "fastifySetResHeaderFn", "expressMiddleware", "setResHeaderFn", "useHeader", "requestIdFactory", "echoHeader", "next", "fastifyPlugin", "fastify", "options", "useFastifyRequestId", "request", "reply", "done", "koaMiddleware", "ctx", "koaV1Middleware", "hapiPlugin", "server", "h", "id", "runWithId", "fn", "require_cls_rtracer", "__commonJSMin", "exports", "module", "expressMiddleware", "fastifyPlugin", "fastifyMiddleware", "koaMiddleware", "koaV1Middleware", "hapiPlugin", "runWithId", "id", "require_lodash", "__commonJSMin", "exports", "module", "undefined", "VERSION", "LARGE_ARRAY_SIZE", "CORE_ERROR_TEXT", "FUNC_ERROR_TEXT", "INVALID_TEMPL_VAR_ERROR_TEXT", "HASH_UNDEFINED", "MAX_MEMOIZE_SIZE", "PLACEHOLDER", "CLONE_DEEP_FLAG", "CLONE_FLAT_FLAG", "CLONE_SYMBOLS_FLAG", "COMPARE_PARTIAL_FLAG", "COMPARE_UNORDERED_FLAG", "WRAP_BIND_FLAG", "WRAP_BIND_KEY_FLAG", "WRAP_CURRY_BOUND_FLAG", "WRAP_CURRY_FLAG", "WRAP_CURRY_RIGHT_FLAG", "WRAP_PARTIAL_FLAG", "WRAP_PARTIAL_RIGHT_FLAG", "WRAP_ARY_FLAG", "WRAP_REARG_FLAG", "WRAP_FLIP_FLAG", "DEFAULT_TRUNC_LENGTH", "DEFAULT_TRUNC_OMISSION", "HOT_COUNT", "HOT_SPAN", "LAZY_FILTER_FLAG", "LAZY_MAP_FLAG", "LAZY_WHILE_FLAG", "INFINITY", "MAX_SAFE_INTEGER", "MAX_INTEGER", "NAN", "MAX_ARRAY_LENGTH", "MAX_ARRAY_INDEX", "HALF_MAX_ARRAY_LENGTH", "wrapFlags", "argsTag", "arrayTag", "asyncTag", "boolTag", "dateTag", "domExcTag", "errorTag", "funcTag", "genTag", "mapTag", "numberTag", "nullTag", "objectTag", "promiseTag", "proxyTag", "regexpTag", "setTag", "stringTag", "symbolTag", "undefinedTag", "weakMapTag", "weakSetTag", "arrayBufferTag", "dataViewTag", "float32Tag", "float64Tag", "int8Tag", "int16Tag", "int32Tag", "uint8Tag", "uint8ClampedTag", "uint16Tag", "uint32Tag", "reEmptyStringLeading", "reEmptyStringMiddle", "reEmptyStringTrailing", "reEscapedHtml", "reUnescapedHtml", "reHasEscapedHtml", "reHasUnescapedHtml", "reEscape", "reEvaluate", "reInterpolate", "reIsDeepProp", "reIsPlainProp", "rePropName", "reRegExpChar", "reHasRegExpChar", "reTrimStart", "reWhitespace", "reWrapComment", "reWrapDetails", "reSplitDetails", "reAsciiWord", "reForbiddenIdentifierChars", "reEscapeChar", "reEsTemplate", "reFlags", "reIsBadHex", "reIsBinary", "reIsHostCtor", "reIsOctal", "reIsUint", "reLatin", "reNoMatch", "reUnescapedString", "rsAstralRange", "rsComboMarksRange", "reComboHalfMarksRange", "rsComboSymbolsRange", "rsComboRange", "rsDingbatRange", "rsLowerRange", "rsMathOpRange", "rsNonCharRange", "rsPunctuationRange", "rsSpaceRange", "rsUpperRange", "rsVarRange", "rsBreakRange", "rsApos", "rsAstral", "rsBreak", "rsCombo", "rsDigits", "rsDingbat", "rsLower", "rsMisc", "rsFitz", "rsModifier", "rsNonAstral", "rsRegional", "rsSurrPair", "rsUpper", "rsZWJ", "rsMiscLower", "rsMiscUpper", "rsOptContrLower", "rsOptContrUpper", "reOptMod", "rsOptVar", "rsOptJoin", "rsOrdLower", "rsOrdUpper", "rsSeq", "rsEmoji", "rsSymbol", "reApos", "reComboMark", "reUnicode", "reUnicodeWord", "reHasUnicode", "reHasUnicodeWord", "contextProps", "templateCounter", "typedArrayTags", "cloneableTags", "deburredLetters", "htmlEscapes", "htmlUnescapes", "stringEscapes", "freeParseFloat", "freeParseInt", "freeGlobal", "freeSelf", "root", "freeExports", "freeModule", "moduleExports", "freeProcess", "nodeUtil", "types", "nodeIsArrayBuffer", "nodeIsDate", "nodeIsMap", "nodeIsRegExp", "nodeIsSet", "nodeIsTypedArray", "apply", "func", "thisArg", "args", "__name", "arrayAggregator", "array", "setter", "iteratee", "accumulator", "index", "length", "value", "arrayEach", "arrayEachRight", "arrayEvery", "predicate", "arrayFilter", "resIndex", "result", "arrayIncludes", "baseIndexOf", "arrayIncludesWith", "comparator", "arrayMap", "arrayPush", "values", "offset", "arrayReduce", "initAccum", "arrayReduceRight", "arraySome", "asciiSize", "baseProperty", "asciiToArray", "string", "asciiWords", "baseFindKey", "collection", "eachFunc", "key", "baseFindIndex", "fromIndex", "fromRight", "strictIndexOf", "baseIsNaN", "baseIndexOfWith", "baseMean", "baseSum", "object", "basePropertyOf", "baseReduce", "baseSortBy", "comparer", "current", "baseTimes", "n", "baseToPairs", "props", "baseTrim", "trimmedEndIndex", "baseUnary", "baseValues", "cacheHas", "cache", "charsStartIndex", "strSymbols", "chrSymbols", "charsEndIndex", "countHolders", "placeholder", "deburrLetter", "escapeHtmlChar", "escapeStringChar", "chr", "getValue", "hasUnicode", "hasUnicodeWord", "iteratorToArray", "iterator", "data", "mapToArray", "map", "overArg", "transform", "arg", "replaceHolders", "setToArray", "set", "setToPairs", "strictLastIndexOf", "stringSize", "unicodeSize", "stringToArray", "unicodeToArray", "unescapeHtmlChar", "unicodeWords", "runInContext", "context", "_", "Array", "Date", "Error", "Function", "Math", "Object", "RegExp", "String", "TypeError", "arrayProto", "funcProto", "objectProto", "coreJsData", "funcToString", "hasOwnProperty", "idCounter", "maskSrcKey", "uid", "nativeObjectToString", "objectCtorString", "oldDash", "reIsNative", "Buffer", "Symbol", "Uint8Array", "allocUnsafe", "getPrototype", "objectCreate", "propertyIsEnumerable", "splice", "spreadableSymbol", "symIterator", "symToStringTag", "defineProperty", "getNative", "ctxClearTimeout", "ctxNow", "ctxSetTimeout", "nativeCeil", "nativeFloor", "nativeGetSymbols", "nativeIsBuffer", "nativeIsFinite", "nativeJoin", "nativeKeys", "nativeMax", "nativeMin", "nativeNow", "nativeParseInt", "nativeRandom", "nativeReverse", "DataView", "Map", "Promise", "Set", "WeakMap", "nativeCreate", "metaMap", "realNames", "dataViewCtorString", "toSource", "mapCtorString", "promiseCtorString", "setCtorString", "weakMapCtorString", "symbolProto", "symbolValueOf", "symbolToString", "lodash", "isObjectLike", "isArray", "LazyWrapper", "LodashWrapper", "wrapperClone", "baseCreate", "proto", "isObject", "baseLodash", "chainAll", "lazyClone", "copyArray", "lazyReverse", "lazyValue", "dir", "isArr", "isRight", "arrLength", "view", "getView", "start", "end", "iteratees", "iterLength", "takeCount", "baseWrapperValue", "outer", "iterIndex", "type", "computed", "Hash", "entries", "entry", "hashClear", "hashDelete", "hashGet", "hashHas", "hashSet", "ListCache", "listCacheClear", "listCacheDelete", "assocIndexOf", "lastIndex", "listCacheGet", "listCacheHas", "listCacheSet", "MapCache", "mapCacheClear", "mapCacheDelete", "getMapData", "mapCacheGet", "mapCacheHas", "mapCacheSet", "size", "SetCache", "setCacheAdd", "setCacheHas", "Stack", "stackClear", "stackDelete", "stackGet", "stackHas", "stackSet", "pairs", "arrayLikeKeys", "inherited", "isArg", "isArguments", "isBuff", "isBuffer", "isType", "isTypedArray", "skipIndexes", "isIndex", "arraySample", "baseRandom", "arraySampleSize", "shuffleSelf", "baseClamp", "arrayShuffle", "assignMergeValue", "eq", "baseAssignValue", "assignValue", "objValue", "baseAggregator", "baseEach", "baseAssign", "source", "copyObject", "keys", "baseAssignIn", "keysIn", "baseAt", "paths", "skip", "get", "number", "lower", "upper", "baseClone", "bitmask", "customizer", "stack", "isDeep", "isFlat", "isFull", "initCloneArray", "tag", "getTag", "isFunc", "cloneBuffer", "initCloneObject", "copySymbolsIn", "copySymbols", "initCloneByTag", "stacked", "isSet", "subValue", "isMap", "keysFunc", "getAllKeysIn", "getAllKeys", "baseConforms", "baseConformsTo", "baseDelay", "wait", "setTimeout", "baseDifference", "includes", "isCommon", "valuesLength", "valuesIndex", "createBaseEach", "baseForOwn", "baseEachRight", "baseForOwnRight", "baseEvery", "baseExtremum", "isSymbol", "baseFill", "toInteger", "toLength", "baseFilter", "baseFlatten", "depth", "isStrict", "isFlattenable", "baseFor", "createBaseFor", "baseForRight", "baseFunctions", "isFunction", "baseGet", "path", "castPath", "toKey", "baseGetAllKeys", "symbolsFunc", "baseGetTag", "getRawTag", "objectToString", "baseGt", "other", "baseHas", "baseHasIn", "baseInRange", "baseIntersection", "arrays", "othLength", "othIndex", "caches", "maxLength", "seen", "baseInverter", "baseInvoke", "parent", "last", "baseIsArguments", "baseIsArrayBuffer", "baseIsDate", "baseIsEqual", "baseIsEqualDeep", "equalFunc", "objIsArr", "othIsArr", "objTag", "othTag", "objIsObj", "othIsObj", "isSameTag", "equalArrays", "equalByTag", "objIsWrapped", "othIsWrapped", "objUnwrapped", "othUnwrapped", "equalObjects", "baseIsMap", "baseIsMatch", "matchData", "noCustomizer", "srcValue", "baseIsNative", "isMasked", "pattern", "baseIsRegExp", "baseIsSet", "baseIsTypedArray", "isLength", "baseIteratee", "identity", "baseMatchesProperty", "baseMatches", "property", "baseKeys", "isPrototype", "baseKeysIn", "nativeKeysIn", "isProto", "baseLt", "baseMap", "isArrayLike", "getMatchData", "matchesStrictComparable", "isKey", "isStrictComparable", "hasIn", "baseMerge", "srcIndex", "baseMergeDeep", "newValue", "safeGet", "mergeFunc", "isTyped", "isArrayLikeObject", "cloneTypedArray", "isPlainObject", "toPlainObject", "baseNth", "baseOrderBy", "orders", "getIteratee", "criteria", "compareMultiple", "basePick", "basePickBy", "baseSet", "basePropertyDeep", "basePullAll", "indexOf", "basePullAt", "indexes", "previous", "baseUnset", "baseRange", "step", "baseRepeat", "baseRest", "setToString", "overRest", "baseSample", "baseSampleSize", "nested", "baseSetData", "baseSetToString", "constant", "baseShuffle", "baseSlice", "baseSome", "baseSortedIndex", "retHighest", "low", "high", "mid", "baseSortedIndexBy", "valIsNaN", "valIsNull", "valIsSymbol", "valIsUndefined", "othIsDefined", "othIsNull", "othIsReflexive", "othIsSymbol", "setLow", "baseSortedUniq", "baseToNumber", "baseToString", "baseUniq", "createSet", "seenIndex", "baseUpdate", "updater", "baseWhile", "isDrop", "actions", "action", "baseXor", "baseZipObject", "assignFunc", "valsLength", "castArrayLikeObject", "castFunction", "stringToPath", "toString", "castRest", "castSlice", "clearTimeout", "id", "buffer", "cloneArrayBuffer", "arrayBuffer", "cloneDataView", "dataView", "cloneRegExp", "regexp", "cloneSymbol", "symbol", "typedArray", "compareAscending", "valIsDefined", "valIsReflexive", "objCriteria", "othCriteria", "ordersLength", "order", "composeArgs", "partials", "holders", "isCurried", "argsIndex", "argsLength", "holdersLength", "leftIndex", "leftLength", "rangeLength", "isUncurried", "composeArgsRight", "holdersIndex", "rightIndex", "rightLength", "isNew", "getSymbols", "getSymbolsIn", "createAggregator", "initializer", "createAssigner", "assigner", "sources", "guard", "isIterateeCall", "iterable", "createBind", "isBind", "Ctor", "createCtor", "wrapper", "fn", "createCaseFirst", "methodName", "trailing", "createCompounder", "callback", "words", "deburr", "thisBinding", "createCurry", "arity", "getHolder", "createRecurry", "createHybrid", "createFind", "findIndexFunc", "createFlow", "flatRest", "funcs", "prereq", "getFuncName", "funcName", "getData", "isLaziable", "partialsRight", "holdersRight", "argPos", "ary", "isAry", "isBindKey", "isFlip", "holdersCount", "newHolders", "reorder", "createInverter", "toIteratee", "createMathOperation", "operator", "defaultValue", "createOver", "arrayFunc", "createPadding", "chars", "charsLength", "createPartial", "createRange", "toFinite", "createRelationalOperation", "toNumber", "wrapFunc", "isCurry", "newHoldersRight", "newPartials", "newPartialsRight", "newData", "setData", "setWrapToString", "createRound", "precision", "pair", "noop", "createToPairs", "createWrap", "mergeData", "customDefaultsAssignIn", "customDefaultsMerge", "customOmitClone", "isPartial", "arrStacked", "othStacked", "arrValue", "othValue", "compared", "convert", "objProps", "objLength", "othProps", "objStacked", "skipCtor", "objCtor", "othCtor", "flatten", "otherFunc", "isKeyable", "isOwn", "unmasked", "stubArray", "ctorString", "transforms", "getWrapDetails", "match", "hasPath", "hasFunc", "insertWrapDetails", "details", "isMaskable", "stubFalse", "memoizeCapped", "memoize", "srcBitmask", "newBitmask", "isCombo", "otherArgs", "oldArray", "shortOut", "reference", "updateWrapDetails", "count", "lastCalled", "stamp", "remaining", "rand", "quote", "subString", "chunk", "compact", "concat", "difference", "differenceBy", "differenceWith", "drop", "dropRight", "dropRightWhile", "dropWhile", "fill", "findIndex", "findLastIndex", "flattenDeep", "flattenDepth", "fromPairs", "head", "initial", "intersection", "mapped", "intersectionBy", "intersectionWith", "join", "separator", "lastIndexOf", "nth", "pull", "pullAll", "pullAllBy", "pullAllWith", "pullAt", "remove", "reverse", "slice", "sortedIndex", "sortedIndexBy", "sortedIndexOf", "sortedLastIndex", "sortedLastIndexBy", "sortedLastIndexOf", "sortedUniq", "sortedUniqBy", "tail", "take", "takeRight", "takeRightWhile", "takeWhile", "union", "unionBy", "unionWith", "uniq", "uniqBy", "uniqWith", "unzip", "group", "unzipWith", "without", "xor", "xorBy", "xorWith", "zip", "zipObject", "zipObjectDeep", "zipWith", "chain", "tap", "interceptor", "thru", "wrapperAt", "wrapperChain", "wrapperCommit", "wrapperNext", "toArray", "done", "wrapperToIterator", "wrapperPlant", "clone", "wrapperReverse", "wrapped", "wrapperValue", "countBy", "every", "filter", "find", "findLast", "flatMap", "flatMapDeep", "flatMapDepth", "forEach", "forEachRight", "groupBy", "isString", "invokeMap", "keyBy", "orderBy", "partition", "reduce", "reduceRight", "reject", "negate", "sample", "sampleSize", "shuffle", "some", "sortBy", "now", "after", "before", "bind", "bindKey", "curry", "curryRight", "debounce", "options", "lastArgs", "lastThis", "maxWait", "timerId", "lastCallTime", "lastInvokeTime", "leading", "maxing", "invokeFunc", "time", "leadingEdge", "timerExpired", "remainingWait", "timeSinceLastCall", "timeSinceLastInvoke", "timeWaiting", "shouldInvoke", "trailingEdge", "cancel", "flush", "debounced", "isInvoking", "defer", "delay", "flip", "resolver", "memoized", "once", "overArgs", "funcsLength", "partial", "partialRight", "rearg", "rest", "spread", "throttle", "unary", "wrap", "castArray", "cloneWith", "cloneDeep", "cloneDeepWith", "conformsTo", "gt", "gte", "isArrayBuffer", "isBoolean", "isDate", "isElement", "isEmpty", "isEqual", "isEqualWith", "isError", "isFinite", "isInteger", "isMatch", "isMatchWith", "isNaN", "isNumber", "isNative", "isNull", "isNil", "isRegExp", "isSafeInteger", "isUndefined", "isWeakMap", "isWeakSet", "lt", "lte", "sign", "remainder", "isBinary", "toSafeInteger", "assign", "assignIn", "assignInWith", "assignWith", "at", "create", "prototype", "properties", "defaults", "propsIndex", "propsLength", "defaultsDeep", "mergeWith", "findKey", "findLastKey", "forIn", "forInRight", "forOwn", "forOwnRight", "functions", "functionsIn", "has", "invert", "invertBy", "invoke", "mapKeys", "mapValues", "merge", "omit", "omitBy", "pickBy", "pick", "prop", "setWith", "toPairs", "toPairsIn", "isArrLike", "unset", "update", "updateWith", "valuesIn", "clamp", "inRange", "random", "floating", "temp", "camelCase", "word", "capitalize", "upperFirst", "endsWith", "target", "position", "escape", "escapeRegExp", "kebabCase", "lowerCase", "lowerFirst", "pad", "strLength", "padEnd", "padStart", "parseInt", "radix", "repeat", "replace", "snakeCase", "split", "limit", "startCase", "startsWith", "template", "settings", "imports", "importsKeys", "importsValues", "isEscaping", "isEvaluating", "interpolate", "reDelimiters", "sourceURL", "escapeValue", "interpolateValue", "esTemplateValue", "evaluateValue", "variable", "attempt", "toLower", "toUpper", "trim", "trimEnd", "trimStart", "truncate", "omission", "substring", "newEnd", "unescape", "upperCase", "e", "bindAll", "methodNames", "cond", "conforms", "defaultTo", "flow", "flowRight", "matches", "matchesProperty", "method", "methodOf", "mixin", "noConflict", "nthArg", "over", "overEvery", "overSome", "propertyOf", "range", "rangeRight", "stubObject", "stubString", "stubTrue", "times", "toPath", "uniqueId", "prefix", "add", "augend", "addend", "ceil", "divide", "dividend", "divisor", "floor", "max", "maxBy", "mean", "meanBy", "min", "minBy", "multiply", "multiplier", "multiplicand", "round", "subtract", "minuend", "subtrahend", "sum", "sumBy", "isFilter", "takeName", "dropName", "checkIteratee", "isTaker", "lodashFunc", "retUnwrapped", "isLazy", "useLazy", "isHybrid", "isUnwrapped", "onlyLazy", "chainName", "winston_1", "_", "__importStar", "parse", "__name", "stack", "line", "lineMatch", "object", "method", "functionName", "typeName", "methodName", "isNative", "methodStart", "objectEnd", "callSite", "getStackTrace", "obj", "oldLimit", "dummyObject", "exports", "v8StackTrace", "info", "opts", "ignoredRegex", "ignoredList", "getRealTrace", "stackTrace", "sourceTrace", "potentialTrace", "t", "resultTrace", "getCircularReplacer", "seen", "key", "value", "PrecompiledData", "fieldPath", "enableLogging", "precompile", "fieldOptions", "buffer", "updateObject", "path", "operation", "target", "unmarshalled", "setNestedPath", "fieldList", "prefix", "suffix", "hasSubArray", "setIfExists", "array", "logFieldsHandler", "precompiled", "objectFieldsMod", "maskCfg", "omitCfg", "bufferFieldObj", "exports", "createConsoleTransport", "winston_1", "rTracer", "__importStar", "utils_1", "createTracerFormat", "opts", "precompiled", "info", "rid", "time", "level", "message", "splatSym", "s", "splat", "object", "ret", "sourceSym", "source", "sourceFile", "sourceLine", "store", "i", "key", "value", "__name", "formats", "prettyPrintOpts", "colorizeOpts", "exports", "createFileTransport", "winston_1", "opts", "__name", "require_dayjs_min", "__commonJSMin", "exports", "module", "r", "i", "s", "u", "a", "o", "c", "f", "h", "d", "l", "$", "y", "M", "__name", "t", "e", "n", "m", "v", "g", "D", "p", "S", "_", "w", "O", "b", "k", "require_lodash", "__commonJSMin", "exports", "module", "MAX_SAFE_INTEGER", "argsTag", "funcTag", "genTag", "reIsUint", "apply", "func", "thisArg", "args", "__name", "baseTimes", "n", "iteratee", "index", "result", "objectProto", "hasOwnProperty", "objectToString", "propertyIsEnumerable", "nativeMax", "arrayLikeKeys", "value", "inherited", "isArray", "isArguments", "length", "skipIndexes", "key", "isIndex", "assignInDefaults", "objValue", "srcValue", "object", "eq", "assignValue", "baseKeysIn", "isObject", "nativeKeysIn", "isProto", "isPrototype", "baseRest", "start", "array", "otherArgs", "copyObject", "source", "props", "customizer", "newValue", "createAssigner", "assigner", "sources", "guard", "isIterateeCall", "type", "isArrayLike", "Ctor", "proto", "other", "isArrayLikeObject", "isLength", "isFunction", "isObjectLike", "tag", "assignInWith", "srcIndex", "keysIn", "defaults", "require_lodash", "__commonJSMin", "exports", "module", "LARGE_ARRAY_SIZE", "HASH_UNDEFINED", "INFINITY", "MAX_SAFE_INTEGER", "argsTag", "funcTag", "genTag", "symbolTag", "reRegExpChar", "reIsHostCtor", "reIsUint", "freeGlobal", "freeSelf", "root", "apply", "func", "thisArg", "args", "__name", "arrayIncludes", "array", "value", "length", "baseIndexOf", "arrayIncludesWith", "comparator", "index", "arrayMap", "iteratee", "result", "arrayPush", "values", "offset", "baseFindIndex", "predicate", "fromIndex", "fromRight", "baseIsNaN", "baseTimes", "n", "baseUnary", "cacheHas", "cache", "key", "getValue", "object", "isHostObject", "overArg", "transform", "arg", "arrayProto", "funcProto", "objectProto", "coreJsData", "maskSrcKey", "uid", "funcToString", "hasOwnProperty", "objectToString", "reIsNative", "Symbol", "getPrototype", "propertyIsEnumerable", "splice", "spreadableSymbol", "nativeGetSymbols", "nativeMax", "Map", "getNative", "nativeCreate", "Hash", "entries", "entry", "hashClear", "hashDelete", "hashGet", "data", "hashHas", "hashSet", "ListCache", "listCacheClear", "listCacheDelete", "assocIndexOf", "lastIndex", "listCacheGet", "listCacheHas", "listCacheSet", "MapCache", "mapCacheClear", "mapCacheDelete", "getMapData", "mapCacheGet", "mapCacheHas", "mapCacheSet", "SetCache", "setCacheAdd", "setCacheHas", "arrayLikeKeys", "inherited", "isArray", "isArguments", "skipIndexes", "isIndex", "eq", "baseDifference", "includes", "isCommon", "valuesLength", "outer", "computed", "valuesIndex", "baseFlatten", "depth", "isStrict", "isFlattenable", "baseGetAllKeys", "keysFunc", "symbolsFunc", "baseIsNative", "isObject", "isMasked", "pattern", "isFunction", "toSource", "baseKeysIn", "nativeKeysIn", "isProto", "isPrototype", "basePick", "props", "basePickBy", "baseRest", "start", "otherArgs", "getAllKeysIn", "keysIn", "getSymbolsIn", "map", "isKeyable", "getSymbols", "stubArray", "type", "Ctor", "proto", "toKey", "isSymbol", "other", "isArrayLikeObject", "isArrayLike", "isLength", "isObjectLike", "tag", "omit", "exports", "redactObject", "redactDiagnostic", "secretKeys", "obj", "additionalKeys", "toRedact", "key", "seen", "doRedact", "newObj", "value", "v", "__name", "diag", "options", "_a", "security_1", "ElasticsearchClientError", "__name", "message", "options", "isObject", "exports", "TimeoutError", "_TimeoutError", "meta", "ConnectionError", "_ConnectionError", "NoLivingConnectionsError", "_NoLivingConnectionsError", "SerializationError", "_SerializationError", "data", "DeserializationError", "_DeserializationError", "ConfigurationError", "_ConfigurationError", "ResponseError", "_ResponseError", "type", "reason", "causedBy", "formatRootCause", "entry", "rootCauses", "_a", "RequestAbortedError", "_RequestAbortedError", "ProductNotSupportedError", "_ProductNotSupportedError", "product", "obj", "node_events_1", "errors_1", "events", "exports", "Diagnostic", "__name", "event", "listener", "assertSupportedEvent", "supportedEvents", "key", "tslib_es6_exports", "__export", "__addDisposableResource", "__assign", "__asyncDelegator", "__asyncGenerator", "__asyncValues", "__await", "__awaiter", "__classPrivateFieldGet", "__classPrivateFieldIn", "__classPrivateFieldSet", "__createBinding", "__decorate", "__disposeResources", "__esDecorate", "__exportStar", "__extends", "__generator", "__importDefault", "__importStar", "__makeTemplateObject", "__metadata", "__param", "__propKey", "__read", "__rest", "__rewriteRelativeImportExtension", "__runInitializers", "__setFunctionName", "__spread", "__spreadArray", "__spreadArrays", "__values", "tslib_es6_default", "d", "b", "extendStatics", "__", "__name", "s", "t", "p", "i", "decorators", "target", "key", "desc", "c", "r", "paramIndex", "decorator", "ctor", "descriptorIn", "contextIn", "initializers", "extraInitializers", "accept", "f", "kind", "descriptor", "_", "done", "context", "result", "thisArg", "value", "useValue", "x", "name", "prefix", "metadataKey", "metadataValue", "_arguments", "P", "generator", "adopt", "resolve", "reject", "fulfilled", "step", "e", "rejected", "body", "y", "g", "verb", "n", "v", "op", "m", "o", "ar", "error", "il", "k", "a", "j", "jl", "to", "from", "pack", "l", "q", "awaitReturn", "resume", "settle", "fulfill", "cooked", "raw", "mod", "ownKeys", "__setModuleDefault", "receiver", "state", "env", "async", "dispose", "inner", "fail", "_SuppressedError", "next", "path", "preserveJsx", "tsx", "ext", "cm", "init_tslib_es6", "__esmMin", "k2", "suppressed", "message", "require_common", "__commonJSMin", "exports", "module", "setup", "env", "createDebug", "coerce", "disable", "enable", "enabled", "destroy", "key", "selectColor", "namespace", "hash", "i", "__name", "prevTime", "enableOverride", "namespacesCache", "enabledCache", "debug", "args", "self", "curr", "ms", "index", "match", "format", "formatter", "val", "extend", "v", "delimiter", "newDebug", "namespaces", "split", "ns", "matchesTemplate", "search", "template", "searchIndex", "templateIndex", "starIndex", "matchIndex", "name", "skip", "require_browser", "__commonJSMin", "exports", "module", "formatArgs", "save", "load", "useColors", "localstorage", "warned", "m", "__name", "args", "c", "index", "lastC", "match", "namespaces", "r", "formatters", "v", "error", "require_has_flag", "__commonJSMin", "exports", "module", "flag", "argv", "prefix", "pos", "terminatorPos", "require_supports_color", "__commonJSMin", "exports", "module", "os", "hasFlag", "env", "forceColor", "translateLevel", "level", "__name", "supportsColor", "stream", "min", "osRelease", "sign", "version", "getSupportLevel", "require_node", "__commonJSMin", "exports", "module", "tty", "util", "init", "log", "formatArgs", "save", "load", "useColors", "supportsColor", "key", "obj", "prop", "_", "k", "val", "__name", "args", "name", "c", "colorCode", "prefix", "getDate", "namespaces", "debug", "keys", "i", "formatters", "v", "str", "require_src", "__commonJSMin", "exports", "module", "exports", "exports", "prepareHeaders", "getIssuerCertificate", "isCaFingerprintMatch", "isBinary", "node_util_1", "Diagnostic_1", "tslib_1", "errors_1", "symbols_1", "BaseConnection", "_BaseConnection", "__name", "opts", "_a", "_b", "_c", "_d", "_e", "stripAuth", "_f", "_g", "_h", "_j", "_k", "status", "validStatuses", "params", "options", "depth", "authorization", "headers", "k", "url", "auth", "isApiKeyAuth", "isBearerAuth", "socket", "certificate", "cert1", "cert2", "c1", "c2", "contentType", "type", "require_secure_json_parse", "__commonJSMin", "exports", "module", "hasBuffer", "suspectProtoRx", "suspectConstructorRx", "_parse", "text", "reviver", "options", "obj", "protoAction", "constructorAction", "filter", "__name", "safe", "next", "nodes", "node", "key", "value", "parse", "stackTraceLimit", "safeParse", "node_querystring_1", "debug_1", "tslib_1", "secure_json_parse_1", "errors_1", "symbols_1", "debug", "Serializer", "__name", "opts", "_a", "enabled", "_b", "object", "json", "err", "array", "ndjson", "len", "keys", "key", "_globalThis", "init_globalThis", "__esmMin", "init_node", "__esmMin", "init_globalThis", "init_platform", "__esmMin", "init_node", "VERSION", "init_version", "__esmMin", "_makeCompatibilityCheck", "ownVersion", "acceptedVersions", "rejectedVersions", "myVersionMatch", "re", "ownVersionParsed", "__name", "globalVersion", "_reject", "v", "_accept", "globalVersionMatch", "globalVersionParsed", "isCompatible", "init_semver", "__esmMin", "init_version", "VERSION", "registerGlobal", "type", "instance", "diag", "allowOverride", "api", "_global", "GLOBAL_OPENTELEMETRY_API_KEY", "_a", "VERSION", "err", "getGlobal", "globalVersion", "isCompatible", "_b", "unregisterGlobal", "major", "init_global_utils", "__esmMin", "init_platform", "init_version", "init_semver", "_globalThis", "__name", "logProxy", "funcName", "namespace", "args", "logger", "getGlobal", "__spreadArray", "__read", "DiagComponentLogger", "init_ComponentLogger", "__esmMin", "init_global_utils", "props", "__name", "_i", "DiagLogLevel", "init_types", "__esmMin", "createLogLevelDiagLogger", "maxLevel", "logger", "DiagLogLevel", "_filterFunc", "funcName", "theLevel", "theFunc", "__name", "init_logLevelLogger", "__esmMin", "init_types", "API_NAME", "DiagAPI", "init_diag", "__esmMin", "init_ComponentLogger", "init_logLevelLogger", "init_types", "init_global_utils", "_logProxy", "funcName", "args", "_i", "logger", "getGlobal", "__spreadArray", "__read", "__name", "self", "setLogger", "optionsOrLogLevel", "DiagLogLevel", "err", "_a", "oldLogger", "newLogger", "createLogLevelDiagLogger", "_b", "stack", "_c", "registerGlobal", "unregisterGlobal", "options", "DiagComponentLogger", "BaggageImpl", "init_baggage_impl", "__esmMin", "entries", "__name", "key", "entry", "_a", "_b", "__read", "k", "v", "newBaggage", "keys", "_i", "keys_1", "__values", "keys_1_1", "baggageEntryMetadataSymbol", "init_symbol", "__esmMin", "createBaggage", "entries", "BaggageImpl", "baggageEntryMetadataFromString", "str", "diag", "baggageEntryMetadataSymbol", "__name", "init_utils", "__esmMin", "init_diag", "init_baggage_impl", "init_symbol", "DiagAPI", "createContextKey", "description", "BaseContext", "ROOT_CONTEXT", "init_context", "__esmMin", "__name", "parentContext", "self", "key", "value", "context", "consoleMap", "DiagConsoleLogger", "init_consoleLogger", "__esmMin", "_consoleFunc", "funcName", "args", "_i", "theFunc", "__name", "i", "createNoopMeter", "NOOP_METER", "NoopMeter", "NoopMetric", "NoopCounterMetric", "NoopUpDownCounterMetric", "NoopGaugeMetric", "NoopHistogramMetric", "NoopObservableMetric", "NoopObservableCounterMetric", "NoopObservableGaugeMetric", "NoopObservableUpDownCounterMetric", "NOOP_COUNTER_METRIC", "NOOP_GAUGE_METRIC", "NOOP_HISTOGRAM_METRIC", "NOOP_UP_DOWN_COUNTER_METRIC", "NOOP_OBSERVABLE_COUNTER_METRIC", "NOOP_OBSERVABLE_GAUGE_METRIC", "NOOP_OBSERVABLE_UP_DOWN_COUNTER_METRIC", "init_NoopMeter", "__esmMin", "__name", "_name", "_options", "_callback", "_observables", "_super", "__extends", "_value", "_attributes", "ValueType", "init_Metric", "__esmMin", "defaultTextMapGetter", "defaultTextMapSetter", "init_TextMapPropagator", "__esmMin", "__name", "carrier", "key", "value", "NoopContextManager", "init_NoopContextManager", "__esmMin", "init_context", "__name", "ROOT_CONTEXT", "_context", "fn", "thisArg", "args", "_i", "__spreadArray", "__read", "target", "API_NAME", "NOOP_CONTEXT_MANAGER", "ContextAPI", "init_context", "__esmMin", "init_NoopContextManager", "init_global_utils", "init_diag", "NoopContextManager", "__name", "contextManager", "registerGlobal", "DiagAPI", "context", "fn", "thisArg", "args", "_i", "_a", "__spreadArray", "__read", "target", "getGlobal", "unregisterGlobal", "TraceFlags", "init_trace_flags", "__esmMin", "INVALID_SPANID", "INVALID_TRACEID", "INVALID_SPAN_CONTEXT", "init_invalid_span_constants", "__esmMin", "init_trace_flags", "TraceFlags", "NonRecordingSpan", "init_NonRecordingSpan", "__esmMin", "init_invalid_span_constants", "_spanContext", "INVALID_SPAN_CONTEXT", "__name", "_key", "_value", "_attributes", "_name", "_link", "_links", "_status", "_endTime", "_exception", "_time", "getSpan", "context", "SPAN_KEY", "getActiveSpan", "ContextAPI", "setSpan", "span", "deleteSpan", "setSpanContext", "spanContext", "NonRecordingSpan", "getSpanContext", "_a", "init_context_utils", "__esmMin", "init_context", "init_NonRecordingSpan", "createContextKey", "__name", "isValidTraceId", "traceId", "VALID_TRACEID_REGEX", "INVALID_TRACEID", "isValidSpanId", "spanId", "VALID_SPANID_REGEX", "INVALID_SPANID", "isSpanContextValid", "spanContext", "wrapSpanContext", "NonRecordingSpan", "init_spancontext_utils", "__esmMin", "init_invalid_span_constants", "init_NonRecordingSpan", "__name", "isSpanContext", "spanContext", "contextApi", "NoopTracer", "init_NoopTracer", "__esmMin", "init_context", "init_context_utils", "init_NonRecordingSpan", "init_spancontext_utils", "ContextAPI", "__name", "name", "options", "context", "root", "NonRecordingSpan", "parentFromContext", "getSpanContext", "isSpanContextValid", "arg2", "arg3", "arg4", "opts", "ctx", "fn", "parentContext", "span", "contextWithSpanSet", "setSpan", "NOOP_TRACER", "ProxyTracer", "init_ProxyTracer", "__esmMin", "init_NoopTracer", "NoopTracer", "_provider", "name", "version", "options", "__name", "context", "_name", "_options", "_context", "_fn", "tracer", "NoopTracerProvider", "init_NoopTracerProvider", "__esmMin", "init_NoopTracer", "__name", "_name", "_version", "_options", "NoopTracer", "NOOP_TRACER_PROVIDER", "ProxyTracerProvider", "init_ProxyTracerProvider", "__esmMin", "init_ProxyTracer", "init_NoopTracerProvider", "NoopTracerProvider", "__name", "name", "version", "options", "_a", "ProxyTracer", "delegate", "SamplingDecision", "init_SamplingResult", "__esmMin", "SpanKind", "init_span_kind", "__esmMin", "SpanStatusCode", "init_status", "__esmMin", "validateKey", "key", "VALID_KEY_REGEX", "validateValue", "value", "VALID_VALUE_BASE_REGEX", "INVALID_VALUE_COMMA_EQUAL_REGEX", "VALID_KEY_CHAR_RANGE", "VALID_KEY", "VALID_VENDOR_KEY", "init_tracestate_validators", "__esmMin", "__name", "MAX_TRACE_STATE_ITEMS", "MAX_TRACE_STATE_LEN", "LIST_MEMBERS_SEPARATOR", "LIST_MEMBER_KEY_VALUE_SPLITTER", "TraceStateImpl", "init_tracestate_impl", "__esmMin", "init_tracestate_validators", "rawTraceState", "__name", "key", "value", "traceState", "_this", "agg", "part", "listMember", "i", "validateKey", "validateValue", "createTraceState", "rawTraceState", "TraceStateImpl", "init_utils", "__esmMin", "init_tracestate_impl", "__name", "context", "init_context_api", "__esmMin", "init_context", "ContextAPI", "diag", "init_diag_api", "__esmMin", "init_diag", "DiagAPI", "NoopMeterProvider", "NOOP_METER_PROVIDER", "init_NoopMeterProvider", "__esmMin", "init_NoopMeter", "__name", "_name", "_version", "_options", "NOOP_METER", "API_NAME", "MetricsAPI", "init_metrics", "__esmMin", "init_NoopMeterProvider", "init_global_utils", "init_diag", "__name", "provider", "registerGlobal", "DiagAPI", "getGlobal", "NOOP_METER_PROVIDER", "name", "version", "options", "unregisterGlobal", "metrics", "init_metrics_api", "__esmMin", "init_metrics", "MetricsAPI", "NoopTextMapPropagator", "init_NoopTextMapPropagator", "__esmMin", "__name", "_context", "_carrier", "context", "getBaggage", "context", "BAGGAGE_KEY", "getActiveBaggage", "ContextAPI", "setBaggage", "baggage", "deleteBaggage", "init_context_helpers", "__esmMin", "init_context", "createContextKey", "__name", "API_NAME", "NOOP_TEXT_MAP_PROPAGATOR", "PropagationAPI", "init_propagation", "__esmMin", "init_global_utils", "init_NoopTextMapPropagator", "init_TextMapPropagator", "init_context_helpers", "init_utils", "init_diag", "NoopTextMapPropagator", "createBaggage", "getBaggage", "getActiveBaggage", "setBaggage", "deleteBaggage", "__name", "propagator", "registerGlobal", "DiagAPI", "context", "carrier", "setter", "defaultTextMapSetter", "getter", "defaultTextMapGetter", "unregisterGlobal", "getGlobal", "propagation", "init_propagation_api", "__esmMin", "init_propagation", "PropagationAPI", "API_NAME", "TraceAPI", "init_trace", "__esmMin", "init_global_utils", "init_ProxyTracerProvider", "init_spancontext_utils", "init_context_utils", "init_diag", "ProxyTracerProvider", "wrapSpanContext", "isSpanContextValid", "deleteSpan", "getSpan", "getActiveSpan", "getSpanContext", "setSpan", "setSpanContext", "__name", "provider", "success", "registerGlobal", "DiagAPI", "getGlobal", "name", "version", "unregisterGlobal", "trace", "init_trace_api", "__esmMin", "init_trace", "TraceAPI", "esm_exports", "__export", "DiagConsoleLogger", "DiagLogLevel", "INVALID_SPANID", "INVALID_SPAN_CONTEXT", "INVALID_TRACEID", "ProxyTracer", "ProxyTracerProvider", "ROOT_CONTEXT", "SamplingDecision", "SpanKind", "SpanStatusCode", "TraceFlags", "ValueType", "baggageEntryMetadataFromString", "context", "createContextKey", "createNoopMeter", "createTraceState", "esm_default", "defaultTextMapGetter", "defaultTextMapSetter", "diag", "isSpanContextValid", "isValidSpanId", "isValidTraceId", "metrics", "propagation", "trace", "init_esm", "__esmMin", "init_utils", "init_context", "init_consoleLogger", "init_types", "init_NoopMeter", "init_Metric", "init_TextMapPropagator", "init_ProxyTracer", "init_ProxyTracerProvider", "init_SamplingResult", "init_span_kind", "init_status", "init_trace_flags", "init_spancontext_utils", "init_invalid_span_constants", "init_context_api", "init_diag_api", "init_metrics_api", "init_propagation_api", "init_trace_api", "api_1", "SUPPRESS_TRACING_KEY", "suppressTracing", "context", "__name", "exports", "unsuppressTracing", "isTracingSuppressed", "exports", "api_1", "constants_1", "serializeKeyPairs", "keyPairs", "hValue", "current", "value", "__name", "exports", "getKeyPairs", "baggage", "key", "entry", "parsePairKeyValue", "valueProps", "keyPairPart", "separatorIndex", "metadata", "parseKeyPairsIntoRecord", "result", "keyPair", "api_1", "suppress_tracing_1", "constants_1", "utils_1", "W3CBaggagePropagator", "__name", "context", "carrier", "setter", "baggage", "keyPairs", "pair", "headerValue", "getter", "baggageString", "entry", "keyPair", "baggageEntry", "exports", "AnchoredClock", "__name", "systemClock", "monotonicClock", "delta", "exports", "api_1", "sanitizeAttributes", "attributes", "out", "key", "isAttributeKey", "val", "isAttributeValue", "__name", "exports", "isHomogeneousAttributeValueArray", "isValidPrimitiveAttributeValueType", "arr", "type", "element", "elementType", "valType", "api_1", "loggingErrorHandler", "ex", "stringifyException", "__name", "exports", "flattenException", "result", "current", "propertyName", "value", "logging_error_handler_1", "delegateHandler", "setGlobalErrorHandler", "handler", "__name", "exports", "globalErrorHandler", "ex", "api_1", "util_1", "getNumberFromEnv", "key", "raw", "value", "__name", "exports", "getStringFromEnv", "getBooleanFromEnv", "getStringListFromEnv", "v", "s", "exports", "perf_hooks_1", "exports", "exports", "createConstMap", "values", "res", "len", "lp", "val", "init_utils", "__esmMin", "__name", "TMP_AWS_LAMBDA_INVOKED_ARN", "TMP_DB_SYSTEM", "TMP_DB_CONNECTION_STRING", "TMP_DB_USER", "TMP_DB_JDBC_DRIVER_CLASSNAME", "TMP_DB_NAME", "TMP_DB_STATEMENT", "TMP_DB_OPERATION", "TMP_DB_MSSQL_INSTANCE_NAME", "TMP_DB_CASSANDRA_KEYSPACE", "TMP_DB_CASSANDRA_PAGE_SIZE", "TMP_DB_CASSANDRA_CONSISTENCY_LEVEL", "TMP_DB_CASSANDRA_TABLE", "TMP_DB_CASSANDRA_IDEMPOTENCE", "TMP_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT", "TMP_DB_CASSANDRA_COORDINATOR_ID", "TMP_DB_CASSANDRA_COORDINATOR_DC", "TMP_DB_HBASE_NAMESPACE", "TMP_DB_REDIS_DATABASE_INDEX", "TMP_DB_MONGODB_COLLECTION", "TMP_DB_SQL_TABLE", "TMP_EXCEPTION_TYPE", "TMP_EXCEPTION_MESSAGE", "TMP_EXCEPTION_STACKTRACE", "TMP_EXCEPTION_ESCAPED", "TMP_FAAS_TRIGGER", "TMP_FAAS_EXECUTION", "TMP_FAAS_DOCUMENT_COLLECTION", "TMP_FAAS_DOCUMENT_OPERATION", "TMP_FAAS_DOCUMENT_TIME", "TMP_FAAS_DOCUMENT_NAME", "TMP_FAAS_TIME", "TMP_FAAS_CRON", "TMP_FAAS_COLDSTART", "TMP_FAAS_INVOKED_NAME", "TMP_FAAS_INVOKED_PROVIDER", "TMP_FAAS_INVOKED_REGION", "TMP_NET_TRANSPORT", "TMP_NET_PEER_IP", "TMP_NET_PEER_PORT", "TMP_NET_PEER_NAME", "TMP_NET_HOST_IP", "TMP_NET_HOST_PORT", "TMP_NET_HOST_NAME", "TMP_NET_HOST_CONNECTION_TYPE", "TMP_NET_HOST_CONNECTION_SUBTYPE", "TMP_NET_HOST_CARRIER_NAME", "TMP_NET_HOST_CARRIER_MCC", "TMP_NET_HOST_CARRIER_MNC", "TMP_NET_HOST_CARRIER_ICC", "TMP_PEER_SERVICE", "TMP_ENDUSER_ID", "TMP_ENDUSER_ROLE", "TMP_ENDUSER_SCOPE", "TMP_THREAD_ID", "TMP_THREAD_NAME", "TMP_CODE_FUNCTION", "TMP_CODE_NAMESPACE", "TMP_CODE_FILEPATH", "TMP_CODE_LINENO", "TMP_HTTP_METHOD", "TMP_HTTP_URL", "TMP_HTTP_TARGET", "TMP_HTTP_HOST", "TMP_HTTP_SCHEME", "TMP_HTTP_STATUS_CODE", "TMP_HTTP_FLAVOR", "TMP_HTTP_USER_AGENT", "TMP_HTTP_REQUEST_CONTENT_LENGTH", "TMP_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED", "TMP_HTTP_RESPONSE_CONTENT_LENGTH", "TMP_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED", "TMP_HTTP_SERVER_NAME", "TMP_HTTP_ROUTE", "TMP_HTTP_CLIENT_IP", "TMP_AWS_DYNAMODB_TABLE_NAMES", "TMP_AWS_DYNAMODB_CONSUMED_CAPACITY", "TMP_AWS_DYNAMODB_ITEM_COLLECTION_METRICS", "TMP_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY", "TMP_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY", "TMP_AWS_DYNAMODB_CONSISTENT_READ", "TMP_AWS_DYNAMODB_PROJECTION", "TMP_AWS_DYNAMODB_LIMIT", "TMP_AWS_DYNAMODB_ATTRIBUTES_TO_GET", "TMP_AWS_DYNAMODB_INDEX_NAME", "TMP_AWS_DYNAMODB_SELECT", "TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES", "TMP_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES", "TMP_AWS_DYNAMODB_EXCLUSIVE_START_TABLE", "TMP_AWS_DYNAMODB_TABLE_COUNT", "TMP_AWS_DYNAMODB_SCAN_FORWARD", "TMP_AWS_DYNAMODB_SEGMENT", "TMP_AWS_DYNAMODB_TOTAL_SEGMENTS", "TMP_AWS_DYNAMODB_COUNT", "TMP_AWS_DYNAMODB_SCANNED_COUNT", "TMP_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS", "TMP_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES", "TMP_MESSAGING_SYSTEM", "TMP_MESSAGING_DESTINATION", "TMP_MESSAGING_DESTINATION_KIND", "TMP_MESSAGING_TEMP_DESTINATION", "TMP_MESSAGING_PROTOCOL", "TMP_MESSAGING_PROTOCOL_VERSION", "TMP_MESSAGING_URL", "TMP_MESSAGING_MESSAGE_ID", "TMP_MESSAGING_CONVERSATION_ID", "TMP_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES", "TMP_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES", "TMP_MESSAGING_OPERATION", "TMP_MESSAGING_CONSUMER_ID", "TMP_MESSAGING_RABBITMQ_ROUTING_KEY", "TMP_MESSAGING_KAFKA_MESSAGE_KEY", "TMP_MESSAGING_KAFKA_CONSUMER_GROUP", "TMP_MESSAGING_KAFKA_CLIENT_ID", "TMP_MESSAGING_KAFKA_PARTITION", "TMP_MESSAGING_KAFKA_TOMBSTONE", "TMP_RPC_SYSTEM", "TMP_RPC_SERVICE", "TMP_RPC_METHOD", "TMP_RPC_GRPC_STATUS_CODE", "TMP_RPC_JSONRPC_VERSION", "TMP_RPC_JSONRPC_REQUEST_ID", "TMP_RPC_JSONRPC_ERROR_CODE", "TMP_RPC_JSONRPC_ERROR_MESSAGE", "TMP_MESSAGE_TYPE", "TMP_MESSAGE_ID", "TMP_MESSAGE_COMPRESSED_SIZE", "TMP_MESSAGE_UNCOMPRESSED_SIZE", "SEMATTRS_AWS_LAMBDA_INVOKED_ARN", "SEMATTRS_DB_SYSTEM", "SEMATTRS_DB_CONNECTION_STRING", "SEMATTRS_DB_USER", "SEMATTRS_DB_JDBC_DRIVER_CLASSNAME", "SEMATTRS_DB_NAME", "SEMATTRS_DB_STATEMENT", "SEMATTRS_DB_OPERATION", "SEMATTRS_DB_MSSQL_INSTANCE_NAME", "SEMATTRS_DB_CASSANDRA_KEYSPACE", "SEMATTRS_DB_CASSANDRA_PAGE_SIZE", "SEMATTRS_DB_CASSANDRA_CONSISTENCY_LEVEL", "SEMATTRS_DB_CASSANDRA_TABLE", "SEMATTRS_DB_CASSANDRA_IDEMPOTENCE", "SEMATTRS_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT", "SEMATTRS_DB_CASSANDRA_COORDINATOR_ID", "SEMATTRS_DB_CASSANDRA_COORDINATOR_DC", "SEMATTRS_DB_HBASE_NAMESPACE", "SEMATTRS_DB_REDIS_DATABASE_INDEX", "SEMATTRS_DB_MONGODB_COLLECTION", "SEMATTRS_DB_SQL_TABLE", "SEMATTRS_EXCEPTION_TYPE", "SEMATTRS_EXCEPTION_MESSAGE", "SEMATTRS_EXCEPTION_STACKTRACE", "SEMATTRS_EXCEPTION_ESCAPED", "SEMATTRS_FAAS_TRIGGER", "SEMATTRS_FAAS_EXECUTION", "SEMATTRS_FAAS_DOCUMENT_COLLECTION", "SEMATTRS_FAAS_DOCUMENT_OPERATION", "SEMATTRS_FAAS_DOCUMENT_TIME", "SEMATTRS_FAAS_DOCUMENT_NAME", "SEMATTRS_FAAS_TIME", "SEMATTRS_FAAS_CRON", "SEMATTRS_FAAS_COLDSTART", "SEMATTRS_FAAS_INVOKED_NAME", "SEMATTRS_FAAS_INVOKED_PROVIDER", "SEMATTRS_FAAS_INVOKED_REGION", "SEMATTRS_NET_TRANSPORT", "SEMATTRS_NET_PEER_IP", "SEMATTRS_NET_PEER_PORT", "SEMATTRS_NET_PEER_NAME", "SEMATTRS_NET_HOST_IP", "SEMATTRS_NET_HOST_PORT", "SEMATTRS_NET_HOST_NAME", "SEMATTRS_NET_HOST_CONNECTION_TYPE", "SEMATTRS_NET_HOST_CONNECTION_SUBTYPE", "SEMATTRS_NET_HOST_CARRIER_NAME", "SEMATTRS_NET_HOST_CARRIER_MCC", "SEMATTRS_NET_HOST_CARRIER_MNC", "SEMATTRS_NET_HOST_CARRIER_ICC", "SEMATTRS_PEER_SERVICE", "SEMATTRS_ENDUSER_ID", "SEMATTRS_ENDUSER_ROLE", "SEMATTRS_ENDUSER_SCOPE", "SEMATTRS_THREAD_ID", "SEMATTRS_THREAD_NAME", "SEMATTRS_CODE_FUNCTION", "SEMATTRS_CODE_NAMESPACE", "SEMATTRS_CODE_FILEPATH", "SEMATTRS_CODE_LINENO", "SEMATTRS_HTTP_METHOD", "SEMATTRS_HTTP_URL", "SEMATTRS_HTTP_TARGET", "SEMATTRS_HTTP_HOST", "SEMATTRS_HTTP_SCHEME", "SEMATTRS_HTTP_STATUS_CODE", "SEMATTRS_HTTP_FLAVOR", "SEMATTRS_HTTP_USER_AGENT", "SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH", "SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED", "SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH", "SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED", "SEMATTRS_HTTP_SERVER_NAME", "SEMATTRS_HTTP_ROUTE", "SEMATTRS_HTTP_CLIENT_IP", "SEMATTRS_AWS_DYNAMODB_TABLE_NAMES", "SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY", "SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS", "SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY", "SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY", "SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ", "SEMATTRS_AWS_DYNAMODB_PROJECTION", "SEMATTRS_AWS_DYNAMODB_LIMIT", "SEMATTRS_AWS_DYNAMODB_ATTRIBUTES_TO_GET", "SEMATTRS_AWS_DYNAMODB_INDEX_NAME", "SEMATTRS_AWS_DYNAMODB_SELECT", "SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES", "SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES", "SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE", "SEMATTRS_AWS_DYNAMODB_TABLE_COUNT", "SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD", "SEMATTRS_AWS_DYNAMODB_SEGMENT", "SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS", "SEMATTRS_AWS_DYNAMODB_COUNT", "SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT", "SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS", "SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES", "SEMATTRS_MESSAGING_SYSTEM", "SEMATTRS_MESSAGING_DESTINATION", "SEMATTRS_MESSAGING_DESTINATION_KIND", "SEMATTRS_MESSAGING_TEMP_DESTINATION", "SEMATTRS_MESSAGING_PROTOCOL", "SEMATTRS_MESSAGING_PROTOCOL_VERSION", "SEMATTRS_MESSAGING_URL", "SEMATTRS_MESSAGING_MESSAGE_ID", "SEMATTRS_MESSAGING_CONVERSATION_ID", "SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES", "SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES", "SEMATTRS_MESSAGING_OPERATION", "SEMATTRS_MESSAGING_CONSUMER_ID", "SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY", "SEMATTRS_MESSAGING_KAFKA_MESSAGE_KEY", "SEMATTRS_MESSAGING_KAFKA_CONSUMER_GROUP", "SEMATTRS_MESSAGING_KAFKA_CLIENT_ID", "SEMATTRS_MESSAGING_KAFKA_PARTITION", "SEMATTRS_MESSAGING_KAFKA_TOMBSTONE", "SEMATTRS_RPC_SYSTEM", "SEMATTRS_RPC_SERVICE", "SEMATTRS_RPC_METHOD", "SEMATTRS_RPC_GRPC_STATUS_CODE", "SEMATTRS_RPC_JSONRPC_VERSION", "SEMATTRS_RPC_JSONRPC_REQUEST_ID", "SEMATTRS_RPC_JSONRPC_ERROR_CODE", "SEMATTRS_RPC_JSONRPC_ERROR_MESSAGE", "SEMATTRS_MESSAGE_TYPE", "SEMATTRS_MESSAGE_ID", "SEMATTRS_MESSAGE_COMPRESSED_SIZE", "SEMATTRS_MESSAGE_UNCOMPRESSED_SIZE", "SemanticAttributes", "TMP_DBSYSTEMVALUES_OTHER_SQL", "TMP_DBSYSTEMVALUES_MSSQL", "TMP_DBSYSTEMVALUES_MYSQL", "TMP_DBSYSTEMVALUES_ORACLE", "TMP_DBSYSTEMVALUES_DB2", "TMP_DBSYSTEMVALUES_POSTGRESQL", "TMP_DBSYSTEMVALUES_REDSHIFT", "TMP_DBSYSTEMVALUES_HIVE", "TMP_DBSYSTEMVALUES_CLOUDSCAPE", "TMP_DBSYSTEMVALUES_HSQLDB", "TMP_DBSYSTEMVALUES_PROGRESS", "TMP_DBSYSTEMVALUES_MAXDB", "TMP_DBSYSTEMVALUES_HANADB", "TMP_DBSYSTEMVALUES_INGRES", "TMP_DBSYSTEMVALUES_FIRSTSQL", "TMP_DBSYSTEMVALUES_EDB", "TMP_DBSYSTEMVALUES_CACHE", "TMP_DBSYSTEMVALUES_ADABAS", "TMP_DBSYSTEMVALUES_FIREBIRD", "TMP_DBSYSTEMVALUES_DERBY", "TMP_DBSYSTEMVALUES_FILEMAKER", "TMP_DBSYSTEMVALUES_INFORMIX", "TMP_DBSYSTEMVALUES_INSTANTDB", "TMP_DBSYSTEMVALUES_INTERBASE", "TMP_DBSYSTEMVALUES_MARIADB", "TMP_DBSYSTEMVALUES_NETEZZA", "TMP_DBSYSTEMVALUES_PERVASIVE", "TMP_DBSYSTEMVALUES_POINTBASE", "TMP_DBSYSTEMVALUES_SQLITE", "TMP_DBSYSTEMVALUES_SYBASE", "TMP_DBSYSTEMVALUES_TERADATA", "TMP_DBSYSTEMVALUES_VERTICA", "TMP_DBSYSTEMVALUES_H2", "TMP_DBSYSTEMVALUES_COLDFUSION", "TMP_DBSYSTEMVALUES_CASSANDRA", "TMP_DBSYSTEMVALUES_HBASE", "TMP_DBSYSTEMVALUES_MONGODB", "TMP_DBSYSTEMVALUES_REDIS", "TMP_DBSYSTEMVALUES_COUCHBASE", "TMP_DBSYSTEMVALUES_COUCHDB", "TMP_DBSYSTEMVALUES_COSMOSDB", "TMP_DBSYSTEMVALUES_DYNAMODB", "TMP_DBSYSTEMVALUES_NEO4J", "TMP_DBSYSTEMVALUES_GEODE", "TMP_DBSYSTEMVALUES_ELASTICSEARCH", "TMP_DBSYSTEMVALUES_MEMCACHED", "TMP_DBSYSTEMVALUES_COCKROACHDB", "DBSYSTEMVALUES_OTHER_SQL", "DBSYSTEMVALUES_MSSQL", "DBSYSTEMVALUES_MYSQL", "DBSYSTEMVALUES_ORACLE", "DBSYSTEMVALUES_DB2", "DBSYSTEMVALUES_POSTGRESQL", "DBSYSTEMVALUES_REDSHIFT", "DBSYSTEMVALUES_HIVE", "DBSYSTEMVALUES_CLOUDSCAPE", "DBSYSTEMVALUES_HSQLDB", "DBSYSTEMVALUES_PROGRESS", "DBSYSTEMVALUES_MAXDB", "DBSYSTEMVALUES_HANADB", "DBSYSTEMVALUES_INGRES", "DBSYSTEMVALUES_FIRSTSQL", "DBSYSTEMVALUES_EDB", "DBSYSTEMVALUES_CACHE", "DBSYSTEMVALUES_ADABAS", "DBSYSTEMVALUES_FIREBIRD", "DBSYSTEMVALUES_DERBY", "DBSYSTEMVALUES_FILEMAKER", "DBSYSTEMVALUES_INFORMIX", "DBSYSTEMVALUES_INSTANTDB", "DBSYSTEMVALUES_INTERBASE", "DBSYSTEMVALUES_MARIADB", "DBSYSTEMVALUES_NETEZZA", "DBSYSTEMVALUES_PERVASIVE", "DBSYSTEMVALUES_POINTBASE", "DBSYSTEMVALUES_SQLITE", "DBSYSTEMVALUES_SYBASE", "DBSYSTEMVALUES_TERADATA", "DBSYSTEMVALUES_VERTICA", "DBSYSTEMVALUES_H2", "DBSYSTEMVALUES_COLDFUSION", "DBSYSTEMVALUES_CASSANDRA", "DBSYSTEMVALUES_HBASE", "DBSYSTEMVALUES_MONGODB", "DBSYSTEMVALUES_REDIS", "DBSYSTEMVALUES_COUCHBASE", "DBSYSTEMVALUES_COUCHDB", "DBSYSTEMVALUES_COSMOSDB", "DBSYSTEMVALUES_DYNAMODB", "DBSYSTEMVALUES_NEO4J", "DBSYSTEMVALUES_GEODE", "DBSYSTEMVALUES_ELASTICSEARCH", "DBSYSTEMVALUES_MEMCACHED", "DBSYSTEMVALUES_COCKROACHDB", "DbSystemValues", "TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ALL", "TMP_DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM", "TMP_DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM", "TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM", "TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ONE", "TMP_DBCASSANDRACONSISTENCYLEVELVALUES_TWO", "TMP_DBCASSANDRACONSISTENCYLEVELVALUES_THREE", "TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE", "TMP_DBCASSANDRACONSISTENCYLEVELVALUES_ANY", "TMP_DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL", "TMP_DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL", "DBCASSANDRACONSISTENCYLEVELVALUES_ALL", "DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM", "DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM", "DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM", "DBCASSANDRACONSISTENCYLEVELVALUES_ONE", "DBCASSANDRACONSISTENCYLEVELVALUES_TWO", "DBCASSANDRACONSISTENCYLEVELVALUES_THREE", "DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE", "DBCASSANDRACONSISTENCYLEVELVALUES_ANY", "DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL", "DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL", "DbCassandraConsistencyLevelValues", "TMP_FAASTRIGGERVALUES_DATASOURCE", "TMP_FAASTRIGGERVALUES_HTTP", "TMP_FAASTRIGGERVALUES_PUBSUB", "TMP_FAASTRIGGERVALUES_TIMER", "TMP_FAASTRIGGERVALUES_OTHER", "FAASTRIGGERVALUES_DATASOURCE", "FAASTRIGGERVALUES_HTTP", "FAASTRIGGERVALUES_PUBSUB", "FAASTRIGGERVALUES_TIMER", "FAASTRIGGERVALUES_OTHER", "FaasTriggerValues", "TMP_FAASDOCUMENTOPERATIONVALUES_INSERT", "TMP_FAASDOCUMENTOPERATIONVALUES_EDIT", "TMP_FAASDOCUMENTOPERATIONVALUES_DELETE", "FAASDOCUMENTOPERATIONVALUES_INSERT", "FAASDOCUMENTOPERATIONVALUES_EDIT", "FAASDOCUMENTOPERATIONVALUES_DELETE", "FaasDocumentOperationValues", "TMP_FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD", "TMP_FAASINVOKEDPROVIDERVALUES_AWS", "TMP_FAASINVOKEDPROVIDERVALUES_AZURE", "TMP_FAASINVOKEDPROVIDERVALUES_GCP", "FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD", "FAASINVOKEDPROVIDERVALUES_AWS", "FAASINVOKEDPROVIDERVALUES_AZURE", "FAASINVOKEDPROVIDERVALUES_GCP", "FaasInvokedProviderValues", "TMP_NETTRANSPORTVALUES_IP_TCP", "TMP_NETTRANSPORTVALUES_IP_UDP", "TMP_NETTRANSPORTVALUES_IP", "TMP_NETTRANSPORTVALUES_UNIX", "TMP_NETTRANSPORTVALUES_PIPE", "TMP_NETTRANSPORTVALUES_INPROC", "TMP_NETTRANSPORTVALUES_OTHER", "NETTRANSPORTVALUES_IP_TCP", "NETTRANSPORTVALUES_IP_UDP", "NETTRANSPORTVALUES_IP", "NETTRANSPORTVALUES_UNIX", "NETTRANSPORTVALUES_PIPE", "NETTRANSPORTVALUES_INPROC", "NETTRANSPORTVALUES_OTHER", "NetTransportValues", "TMP_NETHOSTCONNECTIONTYPEVALUES_WIFI", "TMP_NETHOSTCONNECTIONTYPEVALUES_WIRED", "TMP_NETHOSTCONNECTIONTYPEVALUES_CELL", "TMP_NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE", "TMP_NETHOSTCONNECTIONTYPEVALUES_UNKNOWN", "NETHOSTCONNECTIONTYPEVALUES_WIFI", "NETHOSTCONNECTIONTYPEVALUES_WIRED", "NETHOSTCONNECTIONTYPEVALUES_CELL", "NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE", "NETHOSTCONNECTIONTYPEVALUES_UNKNOWN", "NetHostConnectionTypeValues", "TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GPRS", "TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EDGE", "TMP_NETHOSTCONNECTIONSUBTYPEVALUES_UMTS", "TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA", "TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0", "TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A", "TMP_NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT", "TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA", "TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA", "TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPA", "TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IDEN", "TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B", "TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE", "TMP_NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD", "TMP_NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP", "TMP_NETHOSTCONNECTIONSUBTYPEVALUES_GSM", "TMP_NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA", "TMP_NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN", "TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NR", "TMP_NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA", "TMP_NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA", "NETHOSTCONNECTIONSUBTYPEVALUES_GPRS", "NETHOSTCONNECTIONSUBTYPEVALUES_EDGE", "NETHOSTCONNECTIONSUBTYPEVALUES_UMTS", "NETHOSTCONNECTIONSUBTYPEVALUES_CDMA", "NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0", "NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A", "NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT", "NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA", "NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA", "NETHOSTCONNECTIONSUBTYPEVALUES_HSPA", "NETHOSTCONNECTIONSUBTYPEVALUES_IDEN", "NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B", "NETHOSTCONNECTIONSUBTYPEVALUES_LTE", "NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD", "NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP", "NETHOSTCONNECTIONSUBTYPEVALUES_GSM", "NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA", "NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN", "NETHOSTCONNECTIONSUBTYPEVALUES_NR", "NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA", "NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA", "NetHostConnectionSubtypeValues", "TMP_HTTPFLAVORVALUES_HTTP_1_0", "TMP_HTTPFLAVORVALUES_HTTP_1_1", "TMP_HTTPFLAVORVALUES_HTTP_2_0", "TMP_HTTPFLAVORVALUES_SPDY", "TMP_HTTPFLAVORVALUES_QUIC", "HTTPFLAVORVALUES_HTTP_1_0", "HTTPFLAVORVALUES_HTTP_1_1", "HTTPFLAVORVALUES_HTTP_2_0", "HTTPFLAVORVALUES_SPDY", "HTTPFLAVORVALUES_QUIC", "HttpFlavorValues", "TMP_MESSAGINGDESTINATIONKINDVALUES_QUEUE", "TMP_MESSAGINGDESTINATIONKINDVALUES_TOPIC", "MESSAGINGDESTINATIONKINDVALUES_QUEUE", "MESSAGINGDESTINATIONKINDVALUES_TOPIC", "MessagingDestinationKindValues", "TMP_MESSAGINGOPERATIONVALUES_RECEIVE", "TMP_MESSAGINGOPERATIONVALUES_PROCESS", "MESSAGINGOPERATIONVALUES_RECEIVE", "MESSAGINGOPERATIONVALUES_PROCESS", "MessagingOperationValues", "TMP_RPCGRPCSTATUSCODEVALUES_OK", "TMP_RPCGRPCSTATUSCODEVALUES_CANCELLED", "TMP_RPCGRPCSTATUSCODEVALUES_UNKNOWN", "TMP_RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT", "TMP_RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED", "TMP_RPCGRPCSTATUSCODEVALUES_NOT_FOUND", "TMP_RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS", "TMP_RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED", "TMP_RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED", "TMP_RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION", "TMP_RPCGRPCSTATUSCODEVALUES_ABORTED", "TMP_RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE", "TMP_RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED", "TMP_RPCGRPCSTATUSCODEVALUES_INTERNAL", "TMP_RPCGRPCSTATUSCODEVALUES_UNAVAILABLE", "TMP_RPCGRPCSTATUSCODEVALUES_DATA_LOSS", "TMP_RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED", "RPCGRPCSTATUSCODEVALUES_OK", "RPCGRPCSTATUSCODEVALUES_CANCELLED", "RPCGRPCSTATUSCODEVALUES_UNKNOWN", "RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT", "RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED", "RPCGRPCSTATUSCODEVALUES_NOT_FOUND", "RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS", "RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED", "RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED", "RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION", "RPCGRPCSTATUSCODEVALUES_ABORTED", "RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE", "RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED", "RPCGRPCSTATUSCODEVALUES_INTERNAL", "RPCGRPCSTATUSCODEVALUES_UNAVAILABLE", "RPCGRPCSTATUSCODEVALUES_DATA_LOSS", "RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED", "RpcGrpcStatusCodeValues", "TMP_MESSAGETYPEVALUES_SENT", "TMP_MESSAGETYPEVALUES_RECEIVED", "MESSAGETYPEVALUES_SENT", "MESSAGETYPEVALUES_RECEIVED", "MessageTypeValues", "init_SemanticAttributes", "__esmMin", "init_utils", "createConstMap", "init_trace", "__esmMin", "init_SemanticAttributes", "TMP_CLOUD_PROVIDER", "TMP_CLOUD_ACCOUNT_ID", "TMP_CLOUD_REGION", "TMP_CLOUD_AVAILABILITY_ZONE", "TMP_CLOUD_PLATFORM", "TMP_AWS_ECS_CONTAINER_ARN", "TMP_AWS_ECS_CLUSTER_ARN", "TMP_AWS_ECS_LAUNCHTYPE", "TMP_AWS_ECS_TASK_ARN", "TMP_AWS_ECS_TASK_FAMILY", "TMP_AWS_ECS_TASK_REVISION", "TMP_AWS_EKS_CLUSTER_ARN", "TMP_AWS_LOG_GROUP_NAMES", "TMP_AWS_LOG_GROUP_ARNS", "TMP_AWS_LOG_STREAM_NAMES", "TMP_AWS_LOG_STREAM_ARNS", "TMP_CONTAINER_NAME", "TMP_CONTAINER_ID", "TMP_CONTAINER_RUNTIME", "TMP_CONTAINER_IMAGE_NAME", "TMP_CONTAINER_IMAGE_TAG", "TMP_DEPLOYMENT_ENVIRONMENT", "TMP_DEVICE_ID", "TMP_DEVICE_MODEL_IDENTIFIER", "TMP_DEVICE_MODEL_NAME", "TMP_FAAS_NAME", "TMP_FAAS_ID", "TMP_FAAS_VERSION", "TMP_FAAS_INSTANCE", "TMP_FAAS_MAX_MEMORY", "TMP_HOST_ID", "TMP_HOST_NAME", "TMP_HOST_TYPE", "TMP_HOST_ARCH", "TMP_HOST_IMAGE_NAME", "TMP_HOST_IMAGE_ID", "TMP_HOST_IMAGE_VERSION", "TMP_K8S_CLUSTER_NAME", "TMP_K8S_NODE_NAME", "TMP_K8S_NODE_UID", "TMP_K8S_NAMESPACE_NAME", "TMP_K8S_POD_UID", "TMP_K8S_POD_NAME", "TMP_K8S_CONTAINER_NAME", "TMP_K8S_REPLICASET_UID", "TMP_K8S_REPLICASET_NAME", "TMP_K8S_DEPLOYMENT_UID", "TMP_K8S_DEPLOYMENT_NAME", "TMP_K8S_STATEFULSET_UID", "TMP_K8S_STATEFULSET_NAME", "TMP_K8S_DAEMONSET_UID", "TMP_K8S_DAEMONSET_NAME", "TMP_K8S_JOB_UID", "TMP_K8S_JOB_NAME", "TMP_K8S_CRONJOB_UID", "TMP_K8S_CRONJOB_NAME", "TMP_OS_TYPE", "TMP_OS_DESCRIPTION", "TMP_OS_NAME", "TMP_OS_VERSION", "TMP_PROCESS_PID", "TMP_PROCESS_EXECUTABLE_NAME", "TMP_PROCESS_EXECUTABLE_PATH", "TMP_PROCESS_COMMAND", "TMP_PROCESS_COMMAND_LINE", "TMP_PROCESS_COMMAND_ARGS", "TMP_PROCESS_OWNER", "TMP_PROCESS_RUNTIME_NAME", "TMP_PROCESS_RUNTIME_VERSION", "TMP_PROCESS_RUNTIME_DESCRIPTION", "TMP_SERVICE_NAME", "TMP_SERVICE_NAMESPACE", "TMP_SERVICE_INSTANCE_ID", "TMP_SERVICE_VERSION", "TMP_TELEMETRY_SDK_NAME", "TMP_TELEMETRY_SDK_LANGUAGE", "TMP_TELEMETRY_SDK_VERSION", "TMP_TELEMETRY_AUTO_VERSION", "TMP_WEBENGINE_NAME", "TMP_WEBENGINE_VERSION", "TMP_WEBENGINE_DESCRIPTION", "SEMRESATTRS_CLOUD_PROVIDER", "SEMRESATTRS_CLOUD_ACCOUNT_ID", "SEMRESATTRS_CLOUD_REGION", "SEMRESATTRS_CLOUD_AVAILABILITY_ZONE", "SEMRESATTRS_CLOUD_PLATFORM", "SEMRESATTRS_AWS_ECS_CONTAINER_ARN", "SEMRESATTRS_AWS_ECS_CLUSTER_ARN", "SEMRESATTRS_AWS_ECS_LAUNCHTYPE", "SEMRESATTRS_AWS_ECS_TASK_ARN", "SEMRESATTRS_AWS_ECS_TASK_FAMILY", "SEMRESATTRS_AWS_ECS_TASK_REVISION", "SEMRESATTRS_AWS_EKS_CLUSTER_ARN", "SEMRESATTRS_AWS_LOG_GROUP_NAMES", "SEMRESATTRS_AWS_LOG_GROUP_ARNS", "SEMRESATTRS_AWS_LOG_STREAM_NAMES", "SEMRESATTRS_AWS_LOG_STREAM_ARNS", "SEMRESATTRS_CONTAINER_NAME", "SEMRESATTRS_CONTAINER_ID", "SEMRESATTRS_CONTAINER_RUNTIME", "SEMRESATTRS_CONTAINER_IMAGE_NAME", "SEMRESATTRS_CONTAINER_IMAGE_TAG", "SEMRESATTRS_DEPLOYMENT_ENVIRONMENT", "SEMRESATTRS_DEVICE_ID", "SEMRESATTRS_DEVICE_MODEL_IDENTIFIER", "SEMRESATTRS_DEVICE_MODEL_NAME", "SEMRESATTRS_FAAS_NAME", "SEMRESATTRS_FAAS_ID", "SEMRESATTRS_FAAS_VERSION", "SEMRESATTRS_FAAS_INSTANCE", "SEMRESATTRS_FAAS_MAX_MEMORY", "SEMRESATTRS_HOST_ID", "SEMRESATTRS_HOST_NAME", "SEMRESATTRS_HOST_TYPE", "SEMRESATTRS_HOST_ARCH", "SEMRESATTRS_HOST_IMAGE_NAME", "SEMRESATTRS_HOST_IMAGE_ID", "SEMRESATTRS_HOST_IMAGE_VERSION", "SEMRESATTRS_K8S_CLUSTER_NAME", "SEMRESATTRS_K8S_NODE_NAME", "SEMRESATTRS_K8S_NODE_UID", "SEMRESATTRS_K8S_NAMESPACE_NAME", "SEMRESATTRS_K8S_POD_UID", "SEMRESATTRS_K8S_POD_NAME", "SEMRESATTRS_K8S_CONTAINER_NAME", "SEMRESATTRS_K8S_REPLICASET_UID", "SEMRESATTRS_K8S_REPLICASET_NAME", "SEMRESATTRS_K8S_DEPLOYMENT_UID", "SEMRESATTRS_K8S_DEPLOYMENT_NAME", "SEMRESATTRS_K8S_STATEFULSET_UID", "SEMRESATTRS_K8S_STATEFULSET_NAME", "SEMRESATTRS_K8S_DAEMONSET_UID", "SEMRESATTRS_K8S_DAEMONSET_NAME", "SEMRESATTRS_K8S_JOB_UID", "SEMRESATTRS_K8S_JOB_NAME", "SEMRESATTRS_K8S_CRONJOB_UID", "SEMRESATTRS_K8S_CRONJOB_NAME", "SEMRESATTRS_OS_TYPE", "SEMRESATTRS_OS_DESCRIPTION", "SEMRESATTRS_OS_NAME", "SEMRESATTRS_OS_VERSION", "SEMRESATTRS_PROCESS_PID", "SEMRESATTRS_PROCESS_EXECUTABLE_NAME", "SEMRESATTRS_PROCESS_EXECUTABLE_PATH", "SEMRESATTRS_PROCESS_COMMAND", "SEMRESATTRS_PROCESS_COMMAND_LINE", "SEMRESATTRS_PROCESS_COMMAND_ARGS", "SEMRESATTRS_PROCESS_OWNER", "SEMRESATTRS_PROCESS_RUNTIME_NAME", "SEMRESATTRS_PROCESS_RUNTIME_VERSION", "SEMRESATTRS_PROCESS_RUNTIME_DESCRIPTION", "SEMRESATTRS_SERVICE_NAME", "SEMRESATTRS_SERVICE_NAMESPACE", "SEMRESATTRS_SERVICE_INSTANCE_ID", "SEMRESATTRS_SERVICE_VERSION", "SEMRESATTRS_TELEMETRY_SDK_NAME", "SEMRESATTRS_TELEMETRY_SDK_LANGUAGE", "SEMRESATTRS_TELEMETRY_SDK_VERSION", "SEMRESATTRS_TELEMETRY_AUTO_VERSION", "SEMRESATTRS_WEBENGINE_NAME", "SEMRESATTRS_WEBENGINE_VERSION", "SEMRESATTRS_WEBENGINE_DESCRIPTION", "SemanticResourceAttributes", "TMP_CLOUDPROVIDERVALUES_ALIBABA_CLOUD", "TMP_CLOUDPROVIDERVALUES_AWS", "TMP_CLOUDPROVIDERVALUES_AZURE", "TMP_CLOUDPROVIDERVALUES_GCP", "CLOUDPROVIDERVALUES_ALIBABA_CLOUD", "CLOUDPROVIDERVALUES_AWS", "CLOUDPROVIDERVALUES_AZURE", "CLOUDPROVIDERVALUES_GCP", "CloudProviderValues", "TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS", "TMP_CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC", "TMP_CLOUDPLATFORMVALUES_AWS_EC2", "TMP_CLOUDPLATFORMVALUES_AWS_ECS", "TMP_CLOUDPLATFORMVALUES_AWS_EKS", "TMP_CLOUDPLATFORMVALUES_AWS_LAMBDA", "TMP_CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK", "TMP_CLOUDPLATFORMVALUES_AZURE_VM", "TMP_CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES", "TMP_CLOUDPLATFORMVALUES_AZURE_AKS", "TMP_CLOUDPLATFORMVALUES_AZURE_FUNCTIONS", "TMP_CLOUDPLATFORMVALUES_AZURE_APP_SERVICE", "TMP_CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE", "TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_RUN", "TMP_CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE", "TMP_CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS", "TMP_CLOUDPLATFORMVALUES_GCP_APP_ENGINE", "CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS", "CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC", "CLOUDPLATFORMVALUES_AWS_EC2", "CLOUDPLATFORMVALUES_AWS_ECS", "CLOUDPLATFORMVALUES_AWS_EKS", "CLOUDPLATFORMVALUES_AWS_LAMBDA", "CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK", "CLOUDPLATFORMVALUES_AZURE_VM", "CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES", "CLOUDPLATFORMVALUES_AZURE_AKS", "CLOUDPLATFORMVALUES_AZURE_FUNCTIONS", "CLOUDPLATFORMVALUES_AZURE_APP_SERVICE", "CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE", "CLOUDPLATFORMVALUES_GCP_CLOUD_RUN", "CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE", "CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS", "CLOUDPLATFORMVALUES_GCP_APP_ENGINE", "CloudPlatformValues", "TMP_AWSECSLAUNCHTYPEVALUES_EC2", "TMP_AWSECSLAUNCHTYPEVALUES_FARGATE", "AWSECSLAUNCHTYPEVALUES_EC2", "AWSECSLAUNCHTYPEVALUES_FARGATE", "AwsEcsLaunchtypeValues", "TMP_HOSTARCHVALUES_AMD64", "TMP_HOSTARCHVALUES_ARM32", "TMP_HOSTARCHVALUES_ARM64", "TMP_HOSTARCHVALUES_IA64", "TMP_HOSTARCHVALUES_PPC32", "TMP_HOSTARCHVALUES_PPC64", "TMP_HOSTARCHVALUES_X86", "HOSTARCHVALUES_AMD64", "HOSTARCHVALUES_ARM32", "HOSTARCHVALUES_ARM64", "HOSTARCHVALUES_IA64", "HOSTARCHVALUES_PPC32", "HOSTARCHVALUES_PPC64", "HOSTARCHVALUES_X86", "HostArchValues", "TMP_OSTYPEVALUES_WINDOWS", "TMP_OSTYPEVALUES_LINUX", "TMP_OSTYPEVALUES_DARWIN", "TMP_OSTYPEVALUES_FREEBSD", "TMP_OSTYPEVALUES_NETBSD", "TMP_OSTYPEVALUES_OPENBSD", "TMP_OSTYPEVALUES_DRAGONFLYBSD", "TMP_OSTYPEVALUES_HPUX", "TMP_OSTYPEVALUES_AIX", "TMP_OSTYPEVALUES_SOLARIS", "TMP_OSTYPEVALUES_Z_OS", "OSTYPEVALUES_WINDOWS", "OSTYPEVALUES_LINUX", "OSTYPEVALUES_DARWIN", "OSTYPEVALUES_FREEBSD", "OSTYPEVALUES_NETBSD", "OSTYPEVALUES_OPENBSD", "OSTYPEVALUES_DRAGONFLYBSD", "OSTYPEVALUES_HPUX", "OSTYPEVALUES_AIX", "OSTYPEVALUES_SOLARIS", "OSTYPEVALUES_Z_OS", "OsTypeValues", "TMP_TELEMETRYSDKLANGUAGEVALUES_CPP", "TMP_TELEMETRYSDKLANGUAGEVALUES_DOTNET", "TMP_TELEMETRYSDKLANGUAGEVALUES_ERLANG", "TMP_TELEMETRYSDKLANGUAGEVALUES_GO", "TMP_TELEMETRYSDKLANGUAGEVALUES_JAVA", "TMP_TELEMETRYSDKLANGUAGEVALUES_NODEJS", "TMP_TELEMETRYSDKLANGUAGEVALUES_PHP", "TMP_TELEMETRYSDKLANGUAGEVALUES_PYTHON", "TMP_TELEMETRYSDKLANGUAGEVALUES_RUBY", "TMP_TELEMETRYSDKLANGUAGEVALUES_WEBJS", "TELEMETRYSDKLANGUAGEVALUES_CPP", "TELEMETRYSDKLANGUAGEVALUES_DOTNET", "TELEMETRYSDKLANGUAGEVALUES_ERLANG", "TELEMETRYSDKLANGUAGEVALUES_GO", "TELEMETRYSDKLANGUAGEVALUES_JAVA", "TELEMETRYSDKLANGUAGEVALUES_NODEJS", "TELEMETRYSDKLANGUAGEVALUES_PHP", "TELEMETRYSDKLANGUAGEVALUES_PYTHON", "TELEMETRYSDKLANGUAGEVALUES_RUBY", "TELEMETRYSDKLANGUAGEVALUES_WEBJS", "TelemetrySdkLanguageValues", "init_SemanticResourceAttributes", "__esmMin", "init_utils", "createConstMap", "init_resource", "__esmMin", "init_SemanticResourceAttributes", "ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT", "ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_ABORTED", "ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_HANDLED", "ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_SKIPPED", "ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_UNHANDLED", "ATTR_ASPNETCORE_DIAGNOSTICS_HANDLER_TYPE", "ATTR_ASPNETCORE_RATE_LIMITING_POLICY", "ATTR_ASPNETCORE_RATE_LIMITING_RESULT", "ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ACQUIRED", "ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ENDPOINT_LIMITER", "ASPNETCORE_RATE_LIMITING_RESULT_VALUE_GLOBAL_LIMITER", "ASPNETCORE_RATE_LIMITING_RESULT_VALUE_REQUEST_CANCELED", "ATTR_ASPNETCORE_REQUEST_IS_UNHANDLED", "ATTR_ASPNETCORE_ROUTING_IS_FALLBACK", "ATTR_ASPNETCORE_ROUTING_MATCH_STATUS", "ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_FAILURE", "ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_SUCCESS", "ATTR_ASPNETCORE_USER_IS_AUTHENTICATED", "ATTR_CLIENT_ADDRESS", "ATTR_CLIENT_PORT", "ATTR_CODE_COLUMN_NUMBER", "ATTR_CODE_FILE_PATH", "ATTR_CODE_FUNCTION_NAME", "ATTR_CODE_LINE_NUMBER", "ATTR_CODE_STACKTRACE", "ATTR_DB_COLLECTION_NAME", "ATTR_DB_NAMESPACE", "ATTR_DB_OPERATION_BATCH_SIZE", "ATTR_DB_OPERATION_NAME", "ATTR_DB_QUERY_SUMMARY", "ATTR_DB_QUERY_TEXT", "ATTR_DB_RESPONSE_STATUS_CODE", "ATTR_DB_STORED_PROCEDURE_NAME", "ATTR_DB_SYSTEM_NAME", "DB_SYSTEM_NAME_VALUE_MARIADB", "DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER", "DB_SYSTEM_NAME_VALUE_MYSQL", "DB_SYSTEM_NAME_VALUE_POSTGRESQL", "ATTR_DOTNET_GC_HEAP_GENERATION", "DOTNET_GC_HEAP_GENERATION_VALUE_GEN0", "DOTNET_GC_HEAP_GENERATION_VALUE_GEN1", "DOTNET_GC_HEAP_GENERATION_VALUE_GEN2", "DOTNET_GC_HEAP_GENERATION_VALUE_LOH", "DOTNET_GC_HEAP_GENERATION_VALUE_POH", "ATTR_ERROR_TYPE", "ERROR_TYPE_VALUE_OTHER", "ATTR_EXCEPTION_ESCAPED", "ATTR_EXCEPTION_MESSAGE", "ATTR_EXCEPTION_STACKTRACE", "ATTR_EXCEPTION_TYPE", "ATTR_HTTP_REQUEST_HEADER", "ATTR_HTTP_REQUEST_METHOD", "HTTP_REQUEST_METHOD_VALUE_OTHER", "HTTP_REQUEST_METHOD_VALUE_CONNECT", "HTTP_REQUEST_METHOD_VALUE_DELETE", "HTTP_REQUEST_METHOD_VALUE_GET", "HTTP_REQUEST_METHOD_VALUE_HEAD", "HTTP_REQUEST_METHOD_VALUE_OPTIONS", "HTTP_REQUEST_METHOD_VALUE_PATCH", "HTTP_REQUEST_METHOD_VALUE_POST", "HTTP_REQUEST_METHOD_VALUE_PUT", "HTTP_REQUEST_METHOD_VALUE_TRACE", "ATTR_HTTP_REQUEST_METHOD_ORIGINAL", "ATTR_HTTP_REQUEST_RESEND_COUNT", "ATTR_HTTP_RESPONSE_HEADER", "ATTR_HTTP_RESPONSE_STATUS_CODE", "ATTR_HTTP_ROUTE", "ATTR_JVM_GC_ACTION", "ATTR_JVM_GC_NAME", "ATTR_JVM_MEMORY_POOL_NAME", "ATTR_JVM_MEMORY_TYPE", "JVM_MEMORY_TYPE_VALUE_HEAP", "JVM_MEMORY_TYPE_VALUE_NON_HEAP", "ATTR_JVM_THREAD_DAEMON", "ATTR_JVM_THREAD_STATE", "JVM_THREAD_STATE_VALUE_BLOCKED", "JVM_THREAD_STATE_VALUE_NEW", "JVM_THREAD_STATE_VALUE_RUNNABLE", "JVM_THREAD_STATE_VALUE_TERMINATED", "JVM_THREAD_STATE_VALUE_TIMED_WAITING", "JVM_THREAD_STATE_VALUE_WAITING", "ATTR_NETWORK_LOCAL_ADDRESS", "ATTR_NETWORK_LOCAL_PORT", "ATTR_NETWORK_PEER_ADDRESS", "ATTR_NETWORK_PEER_PORT", "ATTR_NETWORK_PROTOCOL_NAME", "ATTR_NETWORK_PROTOCOL_VERSION", "ATTR_NETWORK_TRANSPORT", "NETWORK_TRANSPORT_VALUE_PIPE", "NETWORK_TRANSPORT_VALUE_QUIC", "NETWORK_TRANSPORT_VALUE_TCP", "NETWORK_TRANSPORT_VALUE_UDP", "NETWORK_TRANSPORT_VALUE_UNIX", "ATTR_NETWORK_TYPE", "NETWORK_TYPE_VALUE_IPV4", "NETWORK_TYPE_VALUE_IPV6", "ATTR_OTEL_SCOPE_NAME", "ATTR_OTEL_SCOPE_VERSION", "ATTR_OTEL_STATUS_CODE", "OTEL_STATUS_CODE_VALUE_ERROR", "OTEL_STATUS_CODE_VALUE_OK", "ATTR_OTEL_STATUS_DESCRIPTION", "ATTR_SERVER_ADDRESS", "ATTR_SERVER_PORT", "ATTR_SERVICE_NAME", "ATTR_SERVICE_VERSION", "ATTR_SIGNALR_CONNECTION_STATUS", "SIGNALR_CONNECTION_STATUS_VALUE_APP_SHUTDOWN", "SIGNALR_CONNECTION_STATUS_VALUE_NORMAL_CLOSURE", "SIGNALR_CONNECTION_STATUS_VALUE_TIMEOUT", "ATTR_SIGNALR_TRANSPORT", "SIGNALR_TRANSPORT_VALUE_LONG_POLLING", "SIGNALR_TRANSPORT_VALUE_SERVER_SENT_EVENTS", "SIGNALR_TRANSPORT_VALUE_WEB_SOCKETS", "ATTR_TELEMETRY_SDK_LANGUAGE", "TELEMETRY_SDK_LANGUAGE_VALUE_CPP", "TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET", "TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG", "TELEMETRY_SDK_LANGUAGE_VALUE_GO", "TELEMETRY_SDK_LANGUAGE_VALUE_JAVA", "TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS", "TELEMETRY_SDK_LANGUAGE_VALUE_PHP", "TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON", "TELEMETRY_SDK_LANGUAGE_VALUE_RUBY", "TELEMETRY_SDK_LANGUAGE_VALUE_RUST", "TELEMETRY_SDK_LANGUAGE_VALUE_SWIFT", "TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS", "ATTR_TELEMETRY_SDK_NAME", "ATTR_TELEMETRY_SDK_VERSION", "ATTR_URL_FRAGMENT", "ATTR_URL_FULL", "ATTR_URL_PATH", "ATTR_URL_QUERY", "ATTR_URL_SCHEME", "ATTR_USER_AGENT_ORIGINAL", "init_stable_attributes", "__esmMin", "__name", "key", "METRIC_ASPNETCORE_DIAGNOSTICS_EXCEPTIONS", "METRIC_ASPNETCORE_RATE_LIMITING_ACTIVE_REQUEST_LEASES", "METRIC_ASPNETCORE_RATE_LIMITING_QUEUED_REQUESTS", "METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_TIME_IN_QUEUE", "METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_LEASE_DURATION", "METRIC_ASPNETCORE_RATE_LIMITING_REQUESTS", "METRIC_ASPNETCORE_ROUTING_MATCH_ATTEMPTS", "METRIC_DB_CLIENT_OPERATION_DURATION", "METRIC_DOTNET_ASSEMBLY_COUNT", "METRIC_DOTNET_EXCEPTIONS", "METRIC_DOTNET_GC_COLLECTIONS", "METRIC_DOTNET_GC_HEAP_TOTAL_ALLOCATED", "METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_FRAGMENTATION_SIZE", "METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_SIZE", "METRIC_DOTNET_GC_LAST_COLLECTION_MEMORY_COMMITTED_SIZE", "METRIC_DOTNET_GC_PAUSE_TIME", "METRIC_DOTNET_JIT_COMPILATION_TIME", "METRIC_DOTNET_JIT_COMPILED_IL_SIZE", "METRIC_DOTNET_JIT_COMPILED_METHODS", "METRIC_DOTNET_MONITOR_LOCK_CONTENTIONS", "METRIC_DOTNET_PROCESS_CPU_COUNT", "METRIC_DOTNET_PROCESS_CPU_TIME", "METRIC_DOTNET_PROCESS_MEMORY_WORKING_SET", "METRIC_DOTNET_THREAD_POOL_QUEUE_LENGTH", "METRIC_DOTNET_THREAD_POOL_THREAD_COUNT", "METRIC_DOTNET_THREAD_POOL_WORK_ITEM_COUNT", "METRIC_DOTNET_TIMER_COUNT", "METRIC_HTTP_CLIENT_REQUEST_DURATION", "METRIC_HTTP_SERVER_REQUEST_DURATION", "METRIC_JVM_CLASS_COUNT", "METRIC_JVM_CLASS_LOADED", "METRIC_JVM_CLASS_UNLOADED", "METRIC_JVM_CPU_COUNT", "METRIC_JVM_CPU_RECENT_UTILIZATION", "METRIC_JVM_CPU_TIME", "METRIC_JVM_GC_DURATION", "METRIC_JVM_MEMORY_COMMITTED", "METRIC_JVM_MEMORY_LIMIT", "METRIC_JVM_MEMORY_USED", "METRIC_JVM_MEMORY_USED_AFTER_LAST_GC", "METRIC_JVM_THREAD_COUNT", "METRIC_KESTREL_ACTIVE_CONNECTIONS", "METRIC_KESTREL_ACTIVE_TLS_HANDSHAKES", "METRIC_KESTREL_CONNECTION_DURATION", "METRIC_KESTREL_QUEUED_CONNECTIONS", "METRIC_KESTREL_QUEUED_REQUESTS", "METRIC_KESTREL_REJECTED_CONNECTIONS", "METRIC_KESTREL_TLS_HANDSHAKE_DURATION", "METRIC_KESTREL_UPGRADED_CONNECTIONS", "METRIC_SIGNALR_SERVER_ACTIVE_CONNECTIONS", "METRIC_SIGNALR_SERVER_CONNECTION_DURATION", "init_stable_metrics", "__esmMin", "EVENT_EXCEPTION", "init_stable_events", "__esmMin", "esm_exports", "__export", "ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_ABORTED", "ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_HANDLED", "ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_SKIPPED", "ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT_VALUE_UNHANDLED", "ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ACQUIRED", "ASPNETCORE_RATE_LIMITING_RESULT_VALUE_ENDPOINT_LIMITER", "ASPNETCORE_RATE_LIMITING_RESULT_VALUE_GLOBAL_LIMITER", "ASPNETCORE_RATE_LIMITING_RESULT_VALUE_REQUEST_CANCELED", "ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_FAILURE", "ASPNETCORE_ROUTING_MATCH_STATUS_VALUE_SUCCESS", "ATTR_ASPNETCORE_DIAGNOSTICS_EXCEPTION_RESULT", "ATTR_ASPNETCORE_DIAGNOSTICS_HANDLER_TYPE", "ATTR_ASPNETCORE_RATE_LIMITING_POLICY", "ATTR_ASPNETCORE_RATE_LIMITING_RESULT", "ATTR_ASPNETCORE_REQUEST_IS_UNHANDLED", "ATTR_ASPNETCORE_ROUTING_IS_FALLBACK", "ATTR_ASPNETCORE_ROUTING_MATCH_STATUS", "ATTR_ASPNETCORE_USER_IS_AUTHENTICATED", "ATTR_CLIENT_ADDRESS", "ATTR_CLIENT_PORT", "ATTR_CODE_COLUMN_NUMBER", "ATTR_CODE_FILE_PATH", "ATTR_CODE_FUNCTION_NAME", "ATTR_CODE_LINE_NUMBER", "ATTR_CODE_STACKTRACE", "ATTR_DB_COLLECTION_NAME", "ATTR_DB_NAMESPACE", "ATTR_DB_OPERATION_BATCH_SIZE", "ATTR_DB_OPERATION_NAME", "ATTR_DB_QUERY_SUMMARY", "ATTR_DB_QUERY_TEXT", "ATTR_DB_RESPONSE_STATUS_CODE", "ATTR_DB_STORED_PROCEDURE_NAME", "ATTR_DB_SYSTEM_NAME", "ATTR_DOTNET_GC_HEAP_GENERATION", "ATTR_ERROR_TYPE", "ATTR_EXCEPTION_ESCAPED", "ATTR_EXCEPTION_MESSAGE", "ATTR_EXCEPTION_STACKTRACE", "ATTR_EXCEPTION_TYPE", "ATTR_HTTP_REQUEST_HEADER", "ATTR_HTTP_REQUEST_METHOD", "ATTR_HTTP_REQUEST_METHOD_ORIGINAL", "ATTR_HTTP_REQUEST_RESEND_COUNT", "ATTR_HTTP_RESPONSE_HEADER", "ATTR_HTTP_RESPONSE_STATUS_CODE", "ATTR_HTTP_ROUTE", "ATTR_JVM_GC_ACTION", "ATTR_JVM_GC_NAME", "ATTR_JVM_MEMORY_POOL_NAME", "ATTR_JVM_MEMORY_TYPE", "ATTR_JVM_THREAD_DAEMON", "ATTR_JVM_THREAD_STATE", "ATTR_NETWORK_LOCAL_ADDRESS", "ATTR_NETWORK_LOCAL_PORT", "ATTR_NETWORK_PEER_ADDRESS", "ATTR_NETWORK_PEER_PORT", "ATTR_NETWORK_PROTOCOL_NAME", "ATTR_NETWORK_PROTOCOL_VERSION", "ATTR_NETWORK_TRANSPORT", "ATTR_NETWORK_TYPE", "ATTR_OTEL_SCOPE_NAME", "ATTR_OTEL_SCOPE_VERSION", "ATTR_OTEL_STATUS_CODE", "ATTR_OTEL_STATUS_DESCRIPTION", "ATTR_SERVER_ADDRESS", "ATTR_SERVER_PORT", "ATTR_SERVICE_NAME", "ATTR_SERVICE_VERSION", "ATTR_SIGNALR_CONNECTION_STATUS", "ATTR_SIGNALR_TRANSPORT", "ATTR_TELEMETRY_SDK_LANGUAGE", "ATTR_TELEMETRY_SDK_NAME", "ATTR_TELEMETRY_SDK_VERSION", "ATTR_URL_FRAGMENT", "ATTR_URL_FULL", "ATTR_URL_PATH", "ATTR_URL_QUERY", "ATTR_URL_SCHEME", "ATTR_USER_AGENT_ORIGINAL", "AWSECSLAUNCHTYPEVALUES_EC2", "AWSECSLAUNCHTYPEVALUES_FARGATE", "AwsEcsLaunchtypeValues", "CLOUDPLATFORMVALUES_ALIBABA_CLOUD_ECS", "CLOUDPLATFORMVALUES_ALIBABA_CLOUD_FC", "CLOUDPLATFORMVALUES_AWS_EC2", "CLOUDPLATFORMVALUES_AWS_ECS", "CLOUDPLATFORMVALUES_AWS_EKS", "CLOUDPLATFORMVALUES_AWS_ELASTIC_BEANSTALK", "CLOUDPLATFORMVALUES_AWS_LAMBDA", "CLOUDPLATFORMVALUES_AZURE_AKS", "CLOUDPLATFORMVALUES_AZURE_APP_SERVICE", "CLOUDPLATFORMVALUES_AZURE_CONTAINER_INSTANCES", "CLOUDPLATFORMVALUES_AZURE_FUNCTIONS", "CLOUDPLATFORMVALUES_AZURE_VM", "CLOUDPLATFORMVALUES_GCP_APP_ENGINE", "CLOUDPLATFORMVALUES_GCP_CLOUD_FUNCTIONS", "CLOUDPLATFORMVALUES_GCP_CLOUD_RUN", "CLOUDPLATFORMVALUES_GCP_COMPUTE_ENGINE", "CLOUDPLATFORMVALUES_GCP_KUBERNETES_ENGINE", "CLOUDPROVIDERVALUES_ALIBABA_CLOUD", "CLOUDPROVIDERVALUES_AWS", "CLOUDPROVIDERVALUES_AZURE", "CLOUDPROVIDERVALUES_GCP", "CloudPlatformValues", "CloudProviderValues", "DBCASSANDRACONSISTENCYLEVELVALUES_ALL", "DBCASSANDRACONSISTENCYLEVELVALUES_ANY", "DBCASSANDRACONSISTENCYLEVELVALUES_EACH_QUORUM", "DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_ONE", "DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_QUORUM", "DBCASSANDRACONSISTENCYLEVELVALUES_LOCAL_SERIAL", "DBCASSANDRACONSISTENCYLEVELVALUES_ONE", "DBCASSANDRACONSISTENCYLEVELVALUES_QUORUM", "DBCASSANDRACONSISTENCYLEVELVALUES_SERIAL", "DBCASSANDRACONSISTENCYLEVELVALUES_THREE", "DBCASSANDRACONSISTENCYLEVELVALUES_TWO", "DBSYSTEMVALUES_ADABAS", "DBSYSTEMVALUES_CACHE", "DBSYSTEMVALUES_CASSANDRA", "DBSYSTEMVALUES_CLOUDSCAPE", "DBSYSTEMVALUES_COCKROACHDB", "DBSYSTEMVALUES_COLDFUSION", "DBSYSTEMVALUES_COSMOSDB", "DBSYSTEMVALUES_COUCHBASE", "DBSYSTEMVALUES_COUCHDB", "DBSYSTEMVALUES_DB2", "DBSYSTEMVALUES_DERBY", "DBSYSTEMVALUES_DYNAMODB", "DBSYSTEMVALUES_EDB", "DBSYSTEMVALUES_ELASTICSEARCH", "DBSYSTEMVALUES_FILEMAKER", "DBSYSTEMVALUES_FIREBIRD", "DBSYSTEMVALUES_FIRSTSQL", "DBSYSTEMVALUES_GEODE", "DBSYSTEMVALUES_H2", "DBSYSTEMVALUES_HANADB", "DBSYSTEMVALUES_HBASE", "DBSYSTEMVALUES_HIVE", "DBSYSTEMVALUES_HSQLDB", "DBSYSTEMVALUES_INFORMIX", "DBSYSTEMVALUES_INGRES", "DBSYSTEMVALUES_INSTANTDB", "DBSYSTEMVALUES_INTERBASE", "DBSYSTEMVALUES_MARIADB", "DBSYSTEMVALUES_MAXDB", "DBSYSTEMVALUES_MEMCACHED", "DBSYSTEMVALUES_MONGODB", "DBSYSTEMVALUES_MSSQL", "DBSYSTEMVALUES_MYSQL", "DBSYSTEMVALUES_NEO4J", "DBSYSTEMVALUES_NETEZZA", "DBSYSTEMVALUES_ORACLE", "DBSYSTEMVALUES_OTHER_SQL", "DBSYSTEMVALUES_PERVASIVE", "DBSYSTEMVALUES_POINTBASE", "DBSYSTEMVALUES_POSTGRESQL", "DBSYSTEMVALUES_PROGRESS", "DBSYSTEMVALUES_REDIS", "DBSYSTEMVALUES_REDSHIFT", "DBSYSTEMVALUES_SQLITE", "DBSYSTEMVALUES_SYBASE", "DBSYSTEMVALUES_TERADATA", "DBSYSTEMVALUES_VERTICA", "DB_SYSTEM_NAME_VALUE_MARIADB", "DB_SYSTEM_NAME_VALUE_MICROSOFT_SQL_SERVER", "DB_SYSTEM_NAME_VALUE_MYSQL", "DB_SYSTEM_NAME_VALUE_POSTGRESQL", "DOTNET_GC_HEAP_GENERATION_VALUE_GEN0", "DOTNET_GC_HEAP_GENERATION_VALUE_GEN1", "DOTNET_GC_HEAP_GENERATION_VALUE_GEN2", "DOTNET_GC_HEAP_GENERATION_VALUE_LOH", "DOTNET_GC_HEAP_GENERATION_VALUE_POH", "DbCassandraConsistencyLevelValues", "DbSystemValues", "ERROR_TYPE_VALUE_OTHER", "EVENT_EXCEPTION", "FAASDOCUMENTOPERATIONVALUES_DELETE", "FAASDOCUMENTOPERATIONVALUES_EDIT", "FAASDOCUMENTOPERATIONVALUES_INSERT", "FAASINVOKEDPROVIDERVALUES_ALIBABA_CLOUD", "FAASINVOKEDPROVIDERVALUES_AWS", "FAASINVOKEDPROVIDERVALUES_AZURE", "FAASINVOKEDPROVIDERVALUES_GCP", "FAASTRIGGERVALUES_DATASOURCE", "FAASTRIGGERVALUES_HTTP", "FAASTRIGGERVALUES_OTHER", "FAASTRIGGERVALUES_PUBSUB", "FAASTRIGGERVALUES_TIMER", "FaasDocumentOperationValues", "FaasInvokedProviderValues", "FaasTriggerValues", "HOSTARCHVALUES_AMD64", "HOSTARCHVALUES_ARM32", "HOSTARCHVALUES_ARM64", "HOSTARCHVALUES_IA64", "HOSTARCHVALUES_PPC32", "HOSTARCHVALUES_PPC64", "HOSTARCHVALUES_X86", "HTTPFLAVORVALUES_HTTP_1_0", "HTTPFLAVORVALUES_HTTP_1_1", "HTTPFLAVORVALUES_HTTP_2_0", "HTTPFLAVORVALUES_QUIC", "HTTPFLAVORVALUES_SPDY", "HTTP_REQUEST_METHOD_VALUE_CONNECT", "HTTP_REQUEST_METHOD_VALUE_DELETE", "HTTP_REQUEST_METHOD_VALUE_GET", "HTTP_REQUEST_METHOD_VALUE_HEAD", "HTTP_REQUEST_METHOD_VALUE_OPTIONS", "HTTP_REQUEST_METHOD_VALUE_OTHER", "HTTP_REQUEST_METHOD_VALUE_PATCH", "HTTP_REQUEST_METHOD_VALUE_POST", "HTTP_REQUEST_METHOD_VALUE_PUT", "HTTP_REQUEST_METHOD_VALUE_TRACE", "HostArchValues", "HttpFlavorValues", "JVM_MEMORY_TYPE_VALUE_HEAP", "JVM_MEMORY_TYPE_VALUE_NON_HEAP", "JVM_THREAD_STATE_VALUE_BLOCKED", "JVM_THREAD_STATE_VALUE_NEW", "JVM_THREAD_STATE_VALUE_RUNNABLE", "JVM_THREAD_STATE_VALUE_TERMINATED", "JVM_THREAD_STATE_VALUE_TIMED_WAITING", "JVM_THREAD_STATE_VALUE_WAITING", "MESSAGETYPEVALUES_RECEIVED", "MESSAGETYPEVALUES_SENT", "MESSAGINGDESTINATIONKINDVALUES_QUEUE", "MESSAGINGDESTINATIONKINDVALUES_TOPIC", "MESSAGINGOPERATIONVALUES_PROCESS", "MESSAGINGOPERATIONVALUES_RECEIVE", "METRIC_ASPNETCORE_DIAGNOSTICS_EXCEPTIONS", "METRIC_ASPNETCORE_RATE_LIMITING_ACTIVE_REQUEST_LEASES", "METRIC_ASPNETCORE_RATE_LIMITING_QUEUED_REQUESTS", "METRIC_ASPNETCORE_RATE_LIMITING_REQUESTS", "METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_LEASE_DURATION", "METRIC_ASPNETCORE_RATE_LIMITING_REQUEST_TIME_IN_QUEUE", "METRIC_ASPNETCORE_ROUTING_MATCH_ATTEMPTS", "METRIC_DB_CLIENT_OPERATION_DURATION", "METRIC_DOTNET_ASSEMBLY_COUNT", "METRIC_DOTNET_EXCEPTIONS", "METRIC_DOTNET_GC_COLLECTIONS", "METRIC_DOTNET_GC_HEAP_TOTAL_ALLOCATED", "METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_FRAGMENTATION_SIZE", "METRIC_DOTNET_GC_LAST_COLLECTION_HEAP_SIZE", "METRIC_DOTNET_GC_LAST_COLLECTION_MEMORY_COMMITTED_SIZE", "METRIC_DOTNET_GC_PAUSE_TIME", "METRIC_DOTNET_JIT_COMPILATION_TIME", "METRIC_DOTNET_JIT_COMPILED_IL_SIZE", "METRIC_DOTNET_JIT_COMPILED_METHODS", "METRIC_DOTNET_MONITOR_LOCK_CONTENTIONS", "METRIC_DOTNET_PROCESS_CPU_COUNT", "METRIC_DOTNET_PROCESS_CPU_TIME", "METRIC_DOTNET_PROCESS_MEMORY_WORKING_SET", "METRIC_DOTNET_THREAD_POOL_QUEUE_LENGTH", "METRIC_DOTNET_THREAD_POOL_THREAD_COUNT", "METRIC_DOTNET_THREAD_POOL_WORK_ITEM_COUNT", "METRIC_DOTNET_TIMER_COUNT", "METRIC_HTTP_CLIENT_REQUEST_DURATION", "METRIC_HTTP_SERVER_REQUEST_DURATION", "METRIC_JVM_CLASS_COUNT", "METRIC_JVM_CLASS_LOADED", "METRIC_JVM_CLASS_UNLOADED", "METRIC_JVM_CPU_COUNT", "METRIC_JVM_CPU_RECENT_UTILIZATION", "METRIC_JVM_CPU_TIME", "METRIC_JVM_GC_DURATION", "METRIC_JVM_MEMORY_COMMITTED", "METRIC_JVM_MEMORY_LIMIT", "METRIC_JVM_MEMORY_USED", "METRIC_JVM_MEMORY_USED_AFTER_LAST_GC", "METRIC_JVM_THREAD_COUNT", "METRIC_KESTREL_ACTIVE_CONNECTIONS", "METRIC_KESTREL_ACTIVE_TLS_HANDSHAKES", "METRIC_KESTREL_CONNECTION_DURATION", "METRIC_KESTREL_QUEUED_CONNECTIONS", "METRIC_KESTREL_QUEUED_REQUESTS", "METRIC_KESTREL_REJECTED_CONNECTIONS", "METRIC_KESTREL_TLS_HANDSHAKE_DURATION", "METRIC_KESTREL_UPGRADED_CONNECTIONS", "METRIC_SIGNALR_SERVER_ACTIVE_CONNECTIONS", "METRIC_SIGNALR_SERVER_CONNECTION_DURATION", "MessageTypeValues", "MessagingDestinationKindValues", "MessagingOperationValues", "NETHOSTCONNECTIONSUBTYPEVALUES_CDMA", "NETHOSTCONNECTIONSUBTYPEVALUES_CDMA2000_1XRTT", "NETHOSTCONNECTIONSUBTYPEVALUES_EDGE", "NETHOSTCONNECTIONSUBTYPEVALUES_EHRPD", "NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_0", "NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_A", "NETHOSTCONNECTIONSUBTYPEVALUES_EVDO_B", "NETHOSTCONNECTIONSUBTYPEVALUES_GPRS", "NETHOSTCONNECTIONSUBTYPEVALUES_GSM", "NETHOSTCONNECTIONSUBTYPEVALUES_HSDPA", "NETHOSTCONNECTIONSUBTYPEVALUES_HSPA", "NETHOSTCONNECTIONSUBTYPEVALUES_HSPAP", "NETHOSTCONNECTIONSUBTYPEVALUES_HSUPA", "NETHOSTCONNECTIONSUBTYPEVALUES_IDEN", "NETHOSTCONNECTIONSUBTYPEVALUES_IWLAN", "NETHOSTCONNECTIONSUBTYPEVALUES_LTE", "NETHOSTCONNECTIONSUBTYPEVALUES_LTE_CA", "NETHOSTCONNECTIONSUBTYPEVALUES_NR", "NETHOSTCONNECTIONSUBTYPEVALUES_NRNSA", "NETHOSTCONNECTIONSUBTYPEVALUES_TD_SCDMA", "NETHOSTCONNECTIONSUBTYPEVALUES_UMTS", "NETHOSTCONNECTIONTYPEVALUES_CELL", "NETHOSTCONNECTIONTYPEVALUES_UNAVAILABLE", "NETHOSTCONNECTIONTYPEVALUES_UNKNOWN", "NETHOSTCONNECTIONTYPEVALUES_WIFI", "NETHOSTCONNECTIONTYPEVALUES_WIRED", "NETTRANSPORTVALUES_INPROC", "NETTRANSPORTVALUES_IP", "NETTRANSPORTVALUES_IP_TCP", "NETTRANSPORTVALUES_IP_UDP", "NETTRANSPORTVALUES_OTHER", "NETTRANSPORTVALUES_PIPE", "NETTRANSPORTVALUES_UNIX", "NETWORK_TRANSPORT_VALUE_PIPE", "NETWORK_TRANSPORT_VALUE_QUIC", "NETWORK_TRANSPORT_VALUE_TCP", "NETWORK_TRANSPORT_VALUE_UDP", "NETWORK_TRANSPORT_VALUE_UNIX", "NETWORK_TYPE_VALUE_IPV4", "NETWORK_TYPE_VALUE_IPV6", "NetHostConnectionSubtypeValues", "NetHostConnectionTypeValues", "NetTransportValues", "OSTYPEVALUES_AIX", "OSTYPEVALUES_DARWIN", "OSTYPEVALUES_DRAGONFLYBSD", "OSTYPEVALUES_FREEBSD", "OSTYPEVALUES_HPUX", "OSTYPEVALUES_LINUX", "OSTYPEVALUES_NETBSD", "OSTYPEVALUES_OPENBSD", "OSTYPEVALUES_SOLARIS", "OSTYPEVALUES_WINDOWS", "OSTYPEVALUES_Z_OS", "OTEL_STATUS_CODE_VALUE_ERROR", "OTEL_STATUS_CODE_VALUE_OK", "OsTypeValues", "RPCGRPCSTATUSCODEVALUES_ABORTED", "RPCGRPCSTATUSCODEVALUES_ALREADY_EXISTS", "RPCGRPCSTATUSCODEVALUES_CANCELLED", "RPCGRPCSTATUSCODEVALUES_DATA_LOSS", "RPCGRPCSTATUSCODEVALUES_DEADLINE_EXCEEDED", "RPCGRPCSTATUSCODEVALUES_FAILED_PRECONDITION", "RPCGRPCSTATUSCODEVALUES_INTERNAL", "RPCGRPCSTATUSCODEVALUES_INVALID_ARGUMENT", "RPCGRPCSTATUSCODEVALUES_NOT_FOUND", "RPCGRPCSTATUSCODEVALUES_OK", "RPCGRPCSTATUSCODEVALUES_OUT_OF_RANGE", "RPCGRPCSTATUSCODEVALUES_PERMISSION_DENIED", "RPCGRPCSTATUSCODEVALUES_RESOURCE_EXHAUSTED", "RPCGRPCSTATUSCODEVALUES_UNAUTHENTICATED", "RPCGRPCSTATUSCODEVALUES_UNAVAILABLE", "RPCGRPCSTATUSCODEVALUES_UNIMPLEMENTED", "RPCGRPCSTATUSCODEVALUES_UNKNOWN", "RpcGrpcStatusCodeValues", "SEMATTRS_AWS_DYNAMODB_ATTRIBUTES_TO_GET", "SEMATTRS_AWS_DYNAMODB_ATTRIBUTE_DEFINITIONS", "SEMATTRS_AWS_DYNAMODB_CONSISTENT_READ", "SEMATTRS_AWS_DYNAMODB_CONSUMED_CAPACITY", "SEMATTRS_AWS_DYNAMODB_COUNT", "SEMATTRS_AWS_DYNAMODB_EXCLUSIVE_START_TABLE", "SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEXES", "SEMATTRS_AWS_DYNAMODB_GLOBAL_SECONDARY_INDEX_UPDATES", "SEMATTRS_AWS_DYNAMODB_INDEX_NAME", "SEMATTRS_AWS_DYNAMODB_ITEM_COLLECTION_METRICS", "SEMATTRS_AWS_DYNAMODB_LIMIT", "SEMATTRS_AWS_DYNAMODB_LOCAL_SECONDARY_INDEXES", "SEMATTRS_AWS_DYNAMODB_PROJECTION", "SEMATTRS_AWS_DYNAMODB_PROVISIONED_READ_CAPACITY", "SEMATTRS_AWS_DYNAMODB_PROVISIONED_WRITE_CAPACITY", "SEMATTRS_AWS_DYNAMODB_SCANNED_COUNT", "SEMATTRS_AWS_DYNAMODB_SCAN_FORWARD", "SEMATTRS_AWS_DYNAMODB_SEGMENT", "SEMATTRS_AWS_DYNAMODB_SELECT", "SEMATTRS_AWS_DYNAMODB_TABLE_COUNT", "SEMATTRS_AWS_DYNAMODB_TABLE_NAMES", "SEMATTRS_AWS_DYNAMODB_TOTAL_SEGMENTS", "SEMATTRS_AWS_LAMBDA_INVOKED_ARN", "SEMATTRS_CODE_FILEPATH", "SEMATTRS_CODE_FUNCTION", "SEMATTRS_CODE_LINENO", "SEMATTRS_CODE_NAMESPACE", "SEMATTRS_DB_CASSANDRA_CONSISTENCY_LEVEL", "SEMATTRS_DB_CASSANDRA_COORDINATOR_DC", "SEMATTRS_DB_CASSANDRA_COORDINATOR_ID", "SEMATTRS_DB_CASSANDRA_IDEMPOTENCE", "SEMATTRS_DB_CASSANDRA_KEYSPACE", "SEMATTRS_DB_CASSANDRA_PAGE_SIZE", "SEMATTRS_DB_CASSANDRA_SPECULATIVE_EXECUTION_COUNT", "SEMATTRS_DB_CASSANDRA_TABLE", "SEMATTRS_DB_CONNECTION_STRING", "SEMATTRS_DB_HBASE_NAMESPACE", "SEMATTRS_DB_JDBC_DRIVER_CLASSNAME", "SEMATTRS_DB_MONGODB_COLLECTION", "SEMATTRS_DB_MSSQL_INSTANCE_NAME", "SEMATTRS_DB_NAME", "SEMATTRS_DB_OPERATION", "SEMATTRS_DB_REDIS_DATABASE_INDEX", "SEMATTRS_DB_SQL_TABLE", "SEMATTRS_DB_STATEMENT", "SEMATTRS_DB_SYSTEM", "SEMATTRS_DB_USER", "SEMATTRS_ENDUSER_ID", "SEMATTRS_ENDUSER_ROLE", "SEMATTRS_ENDUSER_SCOPE", "SEMATTRS_EXCEPTION_ESCAPED", "SEMATTRS_EXCEPTION_MESSAGE", "SEMATTRS_EXCEPTION_STACKTRACE", "SEMATTRS_EXCEPTION_TYPE", "SEMATTRS_FAAS_COLDSTART", "SEMATTRS_FAAS_CRON", "SEMATTRS_FAAS_DOCUMENT_COLLECTION", "SEMATTRS_FAAS_DOCUMENT_NAME", "SEMATTRS_FAAS_DOCUMENT_OPERATION", "SEMATTRS_FAAS_DOCUMENT_TIME", "SEMATTRS_FAAS_EXECUTION", "SEMATTRS_FAAS_INVOKED_NAME", "SEMATTRS_FAAS_INVOKED_PROVIDER", "SEMATTRS_FAAS_INVOKED_REGION", "SEMATTRS_FAAS_TIME", "SEMATTRS_FAAS_TRIGGER", "SEMATTRS_HTTP_CLIENT_IP", "SEMATTRS_HTTP_FLAVOR", "SEMATTRS_HTTP_HOST", "SEMATTRS_HTTP_METHOD", "SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH", "SEMATTRS_HTTP_REQUEST_CONTENT_LENGTH_UNCOMPRESSED", "SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH", "SEMATTRS_HTTP_RESPONSE_CONTENT_LENGTH_UNCOMPRESSED", "SEMATTRS_HTTP_ROUTE", "SEMATTRS_HTTP_SCHEME", "SEMATTRS_HTTP_SERVER_NAME", "SEMATTRS_HTTP_STATUS_CODE", "SEMATTRS_HTTP_TARGET", "SEMATTRS_HTTP_URL", "SEMATTRS_HTTP_USER_AGENT", "SEMATTRS_MESSAGE_COMPRESSED_SIZE", "SEMATTRS_MESSAGE_ID", "SEMATTRS_MESSAGE_TYPE", "SEMATTRS_MESSAGE_UNCOMPRESSED_SIZE", "SEMATTRS_MESSAGING_CONSUMER_ID", "SEMATTRS_MESSAGING_CONVERSATION_ID", "SEMATTRS_MESSAGING_DESTINATION", "SEMATTRS_MESSAGING_DESTINATION_KIND", "SEMATTRS_MESSAGING_KAFKA_CLIENT_ID", "SEMATTRS_MESSAGING_KAFKA_CONSUMER_GROUP", "SEMATTRS_MESSAGING_KAFKA_MESSAGE_KEY", "SEMATTRS_MESSAGING_KAFKA_PARTITION", "SEMATTRS_MESSAGING_KAFKA_TOMBSTONE", "SEMATTRS_MESSAGING_MESSAGE_ID", "SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_COMPRESSED_SIZE_BYTES", "SEMATTRS_MESSAGING_MESSAGE_PAYLOAD_SIZE_BYTES", "SEMATTRS_MESSAGING_OPERATION", "SEMATTRS_MESSAGING_PROTOCOL", "SEMATTRS_MESSAGING_PROTOCOL_VERSION", "SEMATTRS_MESSAGING_RABBITMQ_ROUTING_KEY", "SEMATTRS_MESSAGING_SYSTEM", "SEMATTRS_MESSAGING_TEMP_DESTINATION", "SEMATTRS_MESSAGING_URL", "SEMATTRS_NET_HOST_CARRIER_ICC", "SEMATTRS_NET_HOST_CARRIER_MCC", "SEMATTRS_NET_HOST_CARRIER_MNC", "SEMATTRS_NET_HOST_CARRIER_NAME", "SEMATTRS_NET_HOST_CONNECTION_SUBTYPE", "SEMATTRS_NET_HOST_CONNECTION_TYPE", "SEMATTRS_NET_HOST_IP", "SEMATTRS_NET_HOST_NAME", "SEMATTRS_NET_HOST_PORT", "SEMATTRS_NET_PEER_IP", "SEMATTRS_NET_PEER_NAME", "SEMATTRS_NET_PEER_PORT", "SEMATTRS_NET_TRANSPORT", "SEMATTRS_PEER_SERVICE", "SEMATTRS_RPC_GRPC_STATUS_CODE", "SEMATTRS_RPC_JSONRPC_ERROR_CODE", "SEMATTRS_RPC_JSONRPC_ERROR_MESSAGE", "SEMATTRS_RPC_JSONRPC_REQUEST_ID", "SEMATTRS_RPC_JSONRPC_VERSION", "SEMATTRS_RPC_METHOD", "SEMATTRS_RPC_SERVICE", "SEMATTRS_RPC_SYSTEM", "SEMATTRS_THREAD_ID", "SEMATTRS_THREAD_NAME", "SEMRESATTRS_AWS_ECS_CLUSTER_ARN", "SEMRESATTRS_AWS_ECS_CONTAINER_ARN", "SEMRESATTRS_AWS_ECS_LAUNCHTYPE", "SEMRESATTRS_AWS_ECS_TASK_ARN", "SEMRESATTRS_AWS_ECS_TASK_FAMILY", "SEMRESATTRS_AWS_ECS_TASK_REVISION", "SEMRESATTRS_AWS_EKS_CLUSTER_ARN", "SEMRESATTRS_AWS_LOG_GROUP_ARNS", "SEMRESATTRS_AWS_LOG_GROUP_NAMES", "SEMRESATTRS_AWS_LOG_STREAM_ARNS", "SEMRESATTRS_AWS_LOG_STREAM_NAMES", "SEMRESATTRS_CLOUD_ACCOUNT_ID", "SEMRESATTRS_CLOUD_AVAILABILITY_ZONE", "SEMRESATTRS_CLOUD_PLATFORM", "SEMRESATTRS_CLOUD_PROVIDER", "SEMRESATTRS_CLOUD_REGION", "SEMRESATTRS_CONTAINER_ID", "SEMRESATTRS_CONTAINER_IMAGE_NAME", "SEMRESATTRS_CONTAINER_IMAGE_TAG", "SEMRESATTRS_CONTAINER_NAME", "SEMRESATTRS_CONTAINER_RUNTIME", "SEMRESATTRS_DEPLOYMENT_ENVIRONMENT", "SEMRESATTRS_DEVICE_ID", "SEMRESATTRS_DEVICE_MODEL_IDENTIFIER", "SEMRESATTRS_DEVICE_MODEL_NAME", "SEMRESATTRS_FAAS_ID", "SEMRESATTRS_FAAS_INSTANCE", "SEMRESATTRS_FAAS_MAX_MEMORY", "SEMRESATTRS_FAAS_NAME", "SEMRESATTRS_FAAS_VERSION", "SEMRESATTRS_HOST_ARCH", "SEMRESATTRS_HOST_ID", "SEMRESATTRS_HOST_IMAGE_ID", "SEMRESATTRS_HOST_IMAGE_NAME", "SEMRESATTRS_HOST_IMAGE_VERSION", "SEMRESATTRS_HOST_NAME", "SEMRESATTRS_HOST_TYPE", "SEMRESATTRS_K8S_CLUSTER_NAME", "SEMRESATTRS_K8S_CONTAINER_NAME", "SEMRESATTRS_K8S_CRONJOB_NAME", "SEMRESATTRS_K8S_CRONJOB_UID", "SEMRESATTRS_K8S_DAEMONSET_NAME", "SEMRESATTRS_K8S_DAEMONSET_UID", "SEMRESATTRS_K8S_DEPLOYMENT_NAME", "SEMRESATTRS_K8S_DEPLOYMENT_UID", "SEMRESATTRS_K8S_JOB_NAME", "SEMRESATTRS_K8S_JOB_UID", "SEMRESATTRS_K8S_NAMESPACE_NAME", "SEMRESATTRS_K8S_NODE_NAME", "SEMRESATTRS_K8S_NODE_UID", "SEMRESATTRS_K8S_POD_NAME", "SEMRESATTRS_K8S_POD_UID", "SEMRESATTRS_K8S_REPLICASET_NAME", "SEMRESATTRS_K8S_REPLICASET_UID", "SEMRESATTRS_K8S_STATEFULSET_NAME", "SEMRESATTRS_K8S_STATEFULSET_UID", "SEMRESATTRS_OS_DESCRIPTION", "SEMRESATTRS_OS_NAME", "SEMRESATTRS_OS_TYPE", "SEMRESATTRS_OS_VERSION", "SEMRESATTRS_PROCESS_COMMAND", "SEMRESATTRS_PROCESS_COMMAND_ARGS", "SEMRESATTRS_PROCESS_COMMAND_LINE", "SEMRESATTRS_PROCESS_EXECUTABLE_NAME", "SEMRESATTRS_PROCESS_EXECUTABLE_PATH", "SEMRESATTRS_PROCESS_OWNER", "SEMRESATTRS_PROCESS_PID", "SEMRESATTRS_PROCESS_RUNTIME_DESCRIPTION", "SEMRESATTRS_PROCESS_RUNTIME_NAME", "SEMRESATTRS_PROCESS_RUNTIME_VERSION", "SEMRESATTRS_SERVICE_INSTANCE_ID", "SEMRESATTRS_SERVICE_NAME", "SEMRESATTRS_SERVICE_NAMESPACE", "SEMRESATTRS_SERVICE_VERSION", "SEMRESATTRS_TELEMETRY_AUTO_VERSION", "SEMRESATTRS_TELEMETRY_SDK_LANGUAGE", "SEMRESATTRS_TELEMETRY_SDK_NAME", "SEMRESATTRS_TELEMETRY_SDK_VERSION", "SEMRESATTRS_WEBENGINE_DESCRIPTION", "SEMRESATTRS_WEBENGINE_NAME", "SEMRESATTRS_WEBENGINE_VERSION", "SIGNALR_CONNECTION_STATUS_VALUE_APP_SHUTDOWN", "SIGNALR_CONNECTION_STATUS_VALUE_NORMAL_CLOSURE", "SIGNALR_CONNECTION_STATUS_VALUE_TIMEOUT", "SIGNALR_TRANSPORT_VALUE_LONG_POLLING", "SIGNALR_TRANSPORT_VALUE_SERVER_SENT_EVENTS", "SIGNALR_TRANSPORT_VALUE_WEB_SOCKETS", "SemanticAttributes", "SemanticResourceAttributes", "TELEMETRYSDKLANGUAGEVALUES_CPP", "TELEMETRYSDKLANGUAGEVALUES_DOTNET", "TELEMETRYSDKLANGUAGEVALUES_ERLANG", "TELEMETRYSDKLANGUAGEVALUES_GO", "TELEMETRYSDKLANGUAGEVALUES_JAVA", "TELEMETRYSDKLANGUAGEVALUES_NODEJS", "TELEMETRYSDKLANGUAGEVALUES_PHP", "TELEMETRYSDKLANGUAGEVALUES_PYTHON", "TELEMETRYSDKLANGUAGEVALUES_RUBY", "TELEMETRYSDKLANGUAGEVALUES_WEBJS", "TELEMETRY_SDK_LANGUAGE_VALUE_CPP", "TELEMETRY_SDK_LANGUAGE_VALUE_DOTNET", "TELEMETRY_SDK_LANGUAGE_VALUE_ERLANG", "TELEMETRY_SDK_LANGUAGE_VALUE_GO", "TELEMETRY_SDK_LANGUAGE_VALUE_JAVA", "TELEMETRY_SDK_LANGUAGE_VALUE_NODEJS", "TELEMETRY_SDK_LANGUAGE_VALUE_PHP", "TELEMETRY_SDK_LANGUAGE_VALUE_PYTHON", "TELEMETRY_SDK_LANGUAGE_VALUE_RUBY", "TELEMETRY_SDK_LANGUAGE_VALUE_RUST", "TELEMETRY_SDK_LANGUAGE_VALUE_SWIFT", "TELEMETRY_SDK_LANGUAGE_VALUE_WEBJS", "TelemetrySdkLanguageValues", "init_esm", "__esmMin", "init_trace", "init_resource", "init_stable_attributes", "init_stable_metrics", "init_stable_events", "exports", "version_1", "semantic_conventions_1", "semconv_1", "exports", "environment_1", "exports", "__name", "globalThis_1", "performance_1", "sdk_info_1", "node_1", "exports", "__name", "platform_1", "NANOSECOND_DIGITS", "NANOSECOND_DIGITS_IN_MILLIS", "MILLISECONDS_TO_NANOSECONDS", "SECOND_TO_NANOSECONDS", "millisToHrTime", "epochMillis", "epochSeconds", "seconds", "nanos", "__name", "exports", "getTimeOrigin", "timeOrigin", "perf", "hrTime", "performanceNow", "now", "addHrTimes", "timeInputToHrTime", "time", "isTimeInputHrTime", "hrTimeDuration", "startTime", "endTime", "hrTimeToTimeStamp", "precision", "tmp", "nanoString", "hrTimeToNanoseconds", "hrTimeToMilliseconds", "hrTimeToMicroseconds", "value", "isTimeInput", "time1", "time2", "out", "unrefTimer", "timer", "__name", "exports", "ExportResultCode", "exports", "api_1", "CompositePropagator", "__name", "config", "p", "x", "y", "context", "carrier", "setter", "propagator", "err", "getter", "ctx", "exports", "VALID_KEY_CHAR_RANGE", "VALID_KEY", "VALID_VENDOR_KEY", "VALID_KEY_REGEX", "VALID_VALUE_BASE_REGEX", "INVALID_VALUE_COMMA_EQUAL_REGEX", "validateKey", "key", "__name", "exports", "validateValue", "value", "validators_1", "MAX_TRACE_STATE_ITEMS", "MAX_TRACE_STATE_LEN", "LIST_MEMBERS_SEPARATOR", "LIST_MEMBER_KEY_VALUE_SPLITTER", "TraceState", "_TraceState", "__name", "rawTraceState", "key", "value", "traceState", "agg", "part", "listMember", "i", "exports", "api_1", "suppress_tracing_1", "TraceState_1", "exports", "VERSION", "VERSION_PART", "TRACE_ID_PART", "PARENT_ID_PART", "FLAGS_PART", "TRACE_PARENT_REGEX", "parseTraceParent", "traceParent", "match", "__name", "W3CTraceContextPropagator", "context", "carrier", "setter", "spanContext", "getter", "traceParentHeader", "traceStateHeader", "state", "api_1", "RPC_METADATA_KEY", "RPCType", "exports", "setRPCMetadata", "context", "meta", "__name", "deleteRPCMetadata", "getRPCMetadata", "objectTag", "nullTag", "undefinedTag", "funcProto", "funcToString", "objectCtorString", "getPrototypeOf", "objectProto", "hasOwnProperty", "symToStringTag", "nativeObjectToString", "isPlainObject", "value", "isObjectLike", "baseGetTag", "proto", "Ctor", "__name", "exports", "getRawTag", "objectToString", "isOwn", "tag", "unmasked", "result", "lodash_merge_1", "MAX_LEVEL", "merge", "args", "result", "objects", "mergeTwoObjects", "__name", "exports", "takeValue", "value", "isArray", "one", "two", "level", "isPrimitive", "isFunction", "i", "j", "isObject", "keys", "key", "shouldMerge", "twoValue", "obj1", "obj2", "wasObjectReferenced", "arr1", "arr2", "obj", "arr", "info", "TimeoutError", "_TimeoutError", "__name", "message", "exports", "callWithTimeout", "promise", "timeout", "timeoutHandle", "timeoutPromise", "_resolve", "reject", "result", "reason", "urlMatches", "url", "urlToMatch", "__name", "exports", "isUrlIgnored", "ignoredUrls", "ignoreUrl", "Deferred", "__name", "resolve", "reject", "val", "err", "exports", "promise_1", "BindOnceFuture", "__name", "_callback", "_that", "args", "val", "err", "exports", "api_1", "logLevelMap", "diagLogLevelFromString", "value", "resolvedLogLevel", "__name", "exports", "api_1", "suppress_tracing_1", "_export", "exporter", "arg", "resolve", "result", "__name", "exports", "W3CBaggagePropagator_1", "exports", "__name", "anchored_clock_1", "attributes_1", "global_error_handler_1", "logging_error_handler_1", "time_1", "timer_util_1", "ExportResult_1", "utils_1", "platform_1", "composite_1", "W3CTraceContextPropagator_1", "rpc_metadata_1", "suppress_tracing_1", "TraceState_1", "merge_1", "timeout_1", "url_1", "callback_1", "configuration_1", "exporter_1", "require_package", "__commonJSMin", "exports", "module", "exports", "generateRequestId", "lowerCaseHeaders", "debug_1", "tslib_1", "node_os_1", "node_zlib_1", "node_buffer_1", "node_util_1", "node_process_1", "ms_1", "errors_1", "BaseConnection_1", "Diagnostic_1", "Serializer_1", "symbols_1", "promises_1", "api_1", "core_1", "clientVersion", "debug", "gzip", "unzip", "createGzip", "userAgent", "Transport", "_Transport", "__name", "opts", "_a", "_b", "_c", "_d", "_e", "_f", "_g", "_h", "_j", "_k", "_l", "_m", "_o", "_p", "_q", "_r", "_s", "_t", "_u", "_v", "_w", "_x", "_y", "_z", "_0", "_1", "_2", "_3", "_4", "_5", "_6", "defaultNodeFilter", "_7", "roundRobinSelector", "_8", "_9", "_10", "_11", "_12", "_13", "toMs", "_14", "_15", "_16", "_17", "_18", "_19", "_21", "_20", "_23", "_22", "_25", "_24", "_26", "_27", "retryBackoff", "otelEnabledDefault", "_28", "val", "params", "options", "otelSpan", "connectionParams", "meta", "returnMeta", "result", "warning", "w", "maxRetries", "isStream", "compression", "signal", "maxResponseSize", "maxCompressedResponseSize", "errorOptions", "headers", "shouldSerialize", "err", "requestUrl", "port", "statusCode", "body", "contentEncoding", "isHead", "ignoreStatusCode", "error", "wrappedError", "backoffWait", "otelOptions", "context", "attributes", "key", "value", "indices", "v", "keys", "response", "now", "time", "obj", "node", "current", "connections", "nextReqId", "oldHeaders", "newHeaders", "header", "min", "max", "attempt", "ceiling", "require_hpagent", "__commonJSMin", "exports", "module", "https", "http", "URL", "HttpProxyAgent", "__name", "options", "proxy", "proxyRequestOptions", "opts", "callback", "requestOptions", "base64", "request", "response", "socket", "head", "err", "HttpsProxyAgent", "secureSocket", "hpagent_1", "tslib_1", "node_http_1", "node_https_1", "debug_1", "node_buffer_1", "BaseConnection_1", "symbols_1", "node_stream_1", "errors_1", "promises_1", "debug", "INVALID_PATH_REGEX", "MAX_BUFFER_LENGTH", "MAX_STRING_LENGTH", "noop", "__name", "HttpConnection", "opts", "isHttpAgentOptions", "agentOptions", "proxyAgentOptions", "params", "options", "resolve", "reject", "cleanedListeners", "maxResponseSize", "_a", "maxCompressedResponseSize", "_b", "requestParams", "responseEnded", "requestFinished", "connectionRequestResponse", "request", "err", "abortListener", "response", "onResponseClose", "onResponse", "res", "cleanListeners", "contentEncoding", "isCompressed", "bodyIsBinary", "contentLength", "payload", "onData", "onDataAsBuffer", "onDataAsString", "currentLength", "chunk", "onEnd", "onTimeout", "onError", "name", "message", "code", "_d", "_c", "_f", "_e", "_h", "_g", "onSocket", "socket", "issuerCertificate", "onFinish", "isStream", "url", "search", "pathname", "paramsKeys", "i", "len", "key", "exports", "obj", "host", "path", "hostEndWithSlash", "pathStartsWithSlash", "require_symbols", "__commonJSMin", "exports", "module", "require_errors", "__commonJSMin", "exports", "module", "kUndiciError", "UndiciError", "__name", "message", "instance", "kConnectTimeoutError", "ConnectTimeoutError", "kHeadersTimeoutError", "HeadersTimeoutError", "kHeadersOverflowError", "HeadersOverflowError", "kBodyTimeoutError", "BodyTimeoutError", "kResponseStatusCodeError", "ResponseStatusCodeError", "statusCode", "headers", "body", "kInvalidArgumentError", "InvalidArgumentError", "kInvalidReturnValueError", "InvalidReturnValueError", "kAbortError", "AbortError", "kRequestAbortedError", "RequestAbortedError", "kInformationalError", "InformationalError", "kRequestContentLengthMismatchError", "RequestContentLengthMismatchError", "kResponseContentLengthMismatchError", "ResponseContentLengthMismatchError", "kClientDestroyedError", "ClientDestroyedError", "kClientClosedError", "ClientClosedError", "kSocketError", "SocketError", "socket", "kNotSupportedError", "NotSupportedError", "kBalancedPoolMissingUpstreamError", "BalancedPoolMissingUpstreamError", "kHTTPParserError", "HTTPParserError", "code", "data", "kResponseExceededMaxSizeError", "ResponseExceededMaxSizeError", "kRequestRetryError", "RequestRetryError", "kResponseError", "ResponseError", "kSecureProxyConnectionError", "SecureProxyConnectionError", "cause", "options", "require_constants", "__commonJSMin", "exports", "module", "headerNameLowerCasedRecord", "wellknownHeaderNames", "i", "key", "lowerCasedKey", "require_tree", "__commonJSMin", "exports", "module", "wellknownHeaderNames", "headerNameLowerCasedRecord", "TstNode", "_TstNode", "__name", "key", "value", "index", "length", "node", "code", "keylength", "TernarySearchTree", "tree", "i", "require_util", "__commonJSMin", "exports", "module", "assert", "kDestroyed", "kBodyUsed", "kListeners", "kBody", "IncomingMessage", "stream", "net", "Blob", "nodeUtil", "stringify", "EE", "InvalidArgumentError", "headerNameLowerCasedRecord", "tree", "nodeMajor", "nodeMinor", "v", "BodyAsyncIterable", "__name", "body", "wrapRequestBody", "isStream", "bodyLength", "isIterable", "nop", "obj", "isBlobLike", "object", "sTag", "buildURL", "url", "queryParams", "stringified", "isValidPort", "port", "value", "isHttpOrHttpsPrefixed", "parseURL", "origin", "path", "parseOrigin", "getHostname", "host", "idx", "getServerName", "servername", "deepClone", "isAsyncIterable", "state", "isBuffer", "isDestroyed", "destroy", "err", "KEEPALIVE_TIMEOUT_EXPR", "parseKeepAliveTimeout", "val", "m", "headerNameToString", "bufferToLowerCasedHeaderName", "parseHeaders", "headers", "i", "key", "headersValue", "x", "parseRawHeaders", "len", "ret", "hasContentLength", "contentDispositionIdx", "kLen", "n", "buffer", "validateHandler", "handler", "method", "upgrade", "isDisturbed", "isErrored", "isReadable", "getSocketInfo", "socket", "ReadableStreamFrom", "iterable", "iterator", "controller", "done", "buf", "reason", "isFormDataLike", "addAbortListener", "signal", "listener", "hasToWellFormed", "hasIsWellFormed", "toUSVString", "isUSVString", "isTokenCharCode", "c", "isValidHTTPToken", "characters", "headerCharRegex", "isValidHeaderValue", "parseRangeHeader", "range", "addListener", "name", "removeAllListeners", "errorRequest", "client", "request", "kEnumerableProperty", "normalizedMethodRecordsBase", "normalizedMethodRecords", "require_diagnostics", "__commonJSMin", "exports", "module", "diagnosticsChannel", "util", "undiciDebugLog", "fetchDebuglog", "websocketDebuglog", "isClientSet", "channels", "debuglog", "evt", "version", "protocol", "port", "host", "error", "method", "path", "origin", "statusCode", "address", "websocket", "code", "reason", "err", "require_request", "__commonJSMin", "exports", "module", "InvalidArgumentError", "NotSupportedError", "assert", "isValidHTTPToken", "isValidHeaderValue", "isStream", "destroy", "isBuffer", "isFormDataLike", "isIterable", "isBlobLike", "buildURL", "validateHandler", "getServerName", "normalizedMethodRecords", "channels", "headerNameLowerCasedRecord", "invalidPathRegex", "kHandler", "Request", "__name", "origin", "path", "method", "body", "headers", "query", "idempotent", "blocking", "upgrade", "headersTimeout", "bodyTimeout", "reset", "throwOnError", "expectContinue", "servername", "handler", "rState", "err", "i", "processHeader", "header", "keys", "chunk", "abort", "statusCode", "resume", "statusText", "socket", "trailers", "error", "key", "value", "request", "val", "headerName", "arr", "require_dispatcher", "__commonJSMin", "exports", "module", "EventEmitter", "Dispatcher", "__name", "args", "interceptors", "dispatch", "interceptor", "ComposedDispatcher", "#dispatcher", "#dispatch", "dispatcher", "require_dispatcher_base", "__commonJSMin", "exports", "module", "Dispatcher", "ClientDestroyedError", "ClientClosedError", "InvalidArgumentError", "kDestroy", "kClose", "kClosed", "kDestroyed", "kDispatch", "kInterceptors", "kOnDestroyed", "kOnClosed", "kInterceptedDispatch", "DispatcherBase", "__name", "newInterceptors", "i", "callback", "resolve", "reject", "err", "data", "onClosed", "callbacks", "onDestroyed", "opts", "handler", "dispatch", "require_timers", "__commonJSMin", "exports", "module", "fastNow", "RESOLUTION_MS", "TICK_MS", "fastNowTimeout", "kFastTimer", "fastTimers", "NOT_IN_LIST", "TO_BE_CLEARED", "PENDING", "ACTIVE", "onTick", "idx", "len", "timer", "refreshTimeout", "__name", "FastTimer", "callback", "delay", "arg", "timeout", "require_connect", "__commonJSMin", "exports", "module", "net", "assert", "util", "InvalidArgumentError", "ConnectTimeoutError", "timers", "noop", "__name", "tls", "SessionCache", "maxCachedSessions", "key", "ref", "sessionKey", "session", "oldestKey", "buildConnector", "allowH2", "socketPath", "timeout", "customSession", "opts", "options", "sessionCache", "hostname", "host", "protocol", "port", "servername", "localAddress", "httpSocket", "callback", "socket", "keepAliveInitialDelay", "clearConnectTimeout", "setupConnectTimeout", "cb", "err", "socketWeakRef", "s1", "s2", "fastTimer", "onConnectTimeout", "message", "require_utils", "__commonJSMin", "exports", "enumToMap", "obj", "res", "key", "value", "__name", "require_constants", "__commonJSMin", "exports", "utils_1", "ERROR", "TYPE", "FLAGS", "LENIENT_FLAGS", "METHODS", "key", "FINISH", "i", "c", "HEADER_STATE", "require_llhttp_wasm", "__commonJSMin", "exports", "module", "Buffer", "require_llhttp_simd_wasm", "__commonJSMin", "exports", "module", "Buffer", "require_constants", "__commonJSMin", "exports", "module", "corsSafeListedMethods", "corsSafeListedMethodsSet", "nullBodyStatus", "redirectStatus", "redirectStatusSet", "badPorts", "badPortsSet", "referrerPolicy", "referrerPolicySet", "requestRedirect", "safeMethods", "safeMethodsSet", "requestMode", "requestCredentials", "requestCache", "requestBodyHeader", "requestDuplex", "forbiddenMethods", "forbiddenMethodsSet", "subresource", "subresourceSet", "require_global", "__commonJSMin", "exports", "module", "globalOrigin", "getGlobalOrigin", "__name", "setGlobalOrigin", "newOrigin", "parsedURL", "require_data_url", "__commonJSMin", "exports", "module", "assert", "encoder", "HTTP_TOKEN_CODEPOINTS", "HTTP_WHITESPACE_REGEX", "ASCII_WHITESPACE_REPLACE_REGEX", "HTTP_QUOTED_STRING_TOKENS", "dataURLProcessor", "dataURL", "input", "URLSerializer", "position", "mimeType", "collectASequenceOfCodePointsFast", "mimeTypeLength", "removeASCIIWhitespace", "encodedBody", "body", "stringPercentDecode", "stringBody", "isomorphicDecode", "forgivingBase64", "mimeTypeRecord", "parseMIMEType", "__name", "url", "excludeFragment", "href", "hashLength", "serialized", "collectASequenceOfCodePoints", "condition", "result", "char", "idx", "start", "bytes", "percentDecode", "isHexCharByte", "byte", "hexByteToNumber", "length", "output", "j", "i", "removeHTTPWhitespace", "type", "subtype", "typeLowercase", "subtypeLowercase", "parameterName", "parameterValue", "collectAnHTTPQuotedString", "data", "dataLength", "buffer", "extractValue", "positionStart", "value", "quoteOrBackslash", "serializeAMimeType", "parameters", "essence", "serialization", "name", "isHTTPWhiteSpace", "str", "leading", "trailing", "removeChars", "isASCIIWhitespace", "predicate", "lead", "trail", "addition", "minimizeSupportedMimeType", "require_webidl", "__commonJSMin", "exports", "module", "types", "inspect", "markAsUncloneable", "toUSVString", "webidl", "message", "context", "plural", "V", "I", "opts", "err", "length", "min", "ctx", "bitLength", "signedness", "upperBound", "lowerBound", "x", "n", "r", "converter", "prefix", "argument", "Iterable", "method", "seq", "index", "done", "value", "keyConverter", "valueConverter", "O", "result", "keys", "key", "typedKey", "typedValue", "i", "converters", "dictionary", "type", "dict", "options", "defaultValue", "required", "hasDefault", "T", "name", "require_util", "__commonJSMin", "exports", "module", "Transform", "zlib", "redirectStatusSet", "referrerPolicyTokens", "badPortsSet", "getGlobalOrigin", "collectASequenceOfCodePoints", "collectAnHTTPQuotedString", "removeChars", "parseMIMEType", "performance", "isBlobLike", "ReadableStreamFrom", "isValidHTTPToken", "normalizedMethodRecordsBase", "assert", "isUint8Array", "webidl", "supportedHashes", "crypto", "possibleRelevantHashes", "hash", "responseURL", "response", "urlList", "length", "__name", "responseLocationURL", "requestFragment", "location", "isValidHeaderValue", "isValidEncodedURL", "normalizeBinaryStringToUtf8", "url", "i", "code", "value", "requestCurrentURL", "request", "requestBadPort", "urlIsHttpHttpsScheme", "isErrorLike", "object", "isValidReasonPhrase", "statusText", "c", "isValidHeaderName", "potentialValue", "setRequestReferrerPolicyOnRedirect", "actualResponse", "headersList", "policyHeader", "policy", "token", "crossOriginResourcePolicyCheck", "corsCheck", "TAOCheck", "appendFetchMetadata", "httpRequest", "header", "appendRequestOriginHeader", "serializedOrigin", "urlHasHttpsScheme", "sameOrigin", "coarsenTime", "timestamp", "crossOriginIsolatedCapability", "clampAndCoarsenConnectionTimingInfo", "connectionTimingInfo", "defaultStartTime", "coarsenedSharedCurrentTime", "createOpaqueTimingInfo", "timingInfo", "makePolicyContainer", "clonePolicyContainer", "policyContainer", "determineRequestsReferrer", "referrerSource", "globalOrigin", "referrerURL", "stripURLForReferrer", "referrerOrigin", "areSameOrigin", "isNonPotentiallyTrustWorthy", "isURLPotentiallyTrustworthy", "currentURL", "originOnly", "isOriginPotentiallyTrustworthy", "origin", "originAsURL", "bytesMatch", "bytes", "metadataList", "parsedMetadata", "parseMetadata", "strongest", "getStrongestMetadata", "metadata", "filterMetadataListByAlgorithm", "item", "algorithm", "expectedValue", "actualValue", "compareBase64Mixed", "parseHashWithOptions", "result", "empty", "parsedToken", "pos", "tryUpgradeRequestToAPotentiallyTrustworthyURL", "A", "B", "createDeferredPromise", "res", "rej", "resolve", "reject", "isAborted", "fetchParams", "isCancelled", "normalizeMethod", "method", "serializeJavascriptValueToJSONString", "esIteratorPrototype", "createIterator", "name", "kInternalIterator", "keyIndex", "valueIndex", "FastIterableIterator", "#target", "#kind", "#index", "target", "kind", "index", "values", "len", "key", "iteratorMixin", "makeIterator", "properties", "callbackfn", "thisArg", "fullyReadBody", "body", "processBody", "processBodyError", "successSteps", "errorSteps", "reader", "e", "readAllBytes", "isReadableStreamLike", "stream", "readableStreamClose", "controller", "err", "invalidIsomorphicEncodeValueRegex", "isomorphicEncode", "input", "byteLength", "done", "chunk", "urlIsLocal", "protocol", "simpleRangeHeaderValue", "allowWhitespace", "data", "position", "char", "rangeStart", "rangeStartValue", "rangeEnd", "rangeEndValue", "buildContentRange", "fullLength", "contentRange", "InflateStream", "#zlibOptions", "zlibOptions", "encoding", "callback", "createInflate", "extractMimeType", "headers", "charset", "essence", "mimeType", "getDecodeSplit", "temporaryMimeType", "gettingDecodingSplitting", "temporaryValue", "list", "textDecoder", "utf8DecodeBytes", "buffer", "EnvironmentSettingsObjectBase", "EnvironmentSettingsObject", "environmentSettingsObject", "require_symbols", "__commonJSMin", "exports", "module", "require_file", "__commonJSMin", "exports", "module", "Blob", "File", "kState", "webidl", "FileLike", "_FileLike", "__name", "blobLike", "fileName", "options", "n", "t", "d", "args", "isFileLike", "object", "require_formdata", "__commonJSMin", "exports", "module", "isBlobLike", "iteratorMixin", "kState", "kEnumerableProperty", "FileLike", "isFileLike", "webidl", "NativeFile", "nodeUtil", "File", "FormData", "_FormData", "__name", "form", "name", "value", "filename", "prefix", "entry", "makeEntry", "idx", "depth", "options", "state", "a", "b", "output", "require_formdata_parser", "__commonJSMin", "exports", "module", "isUSVString", "bufferToLowerCasedHeaderName", "utf8DecodeBytes", "HTTP_TOKEN_CODEPOINTS", "isomorphicDecode", "isFileLike", "makeEntry", "assert", "NodeFile", "File", "formDataNameBuffer", "filenameBuffer", "dd", "ddcrlf", "isAsciiString", "chars", "i", "__name", "validateBoundary", "boundary", "length", "cp", "multipartFormDataParser", "input", "mimeType", "boundaryString", "entryList", "position", "trailing", "bufferStartsWith", "result", "parseMultipartFormDataHeaders", "name", "filename", "contentType", "encoding", "body", "boundaryIndex", "value", "headerName", "collectASequenceOfBytes", "char", "removeChars", "parseMultipartFormDataName", "check", "headerValue", "condition", "start", "buf", "leading", "predicate", "lead", "trail", "buffer", "require_body", "__commonJSMin", "exports", "module", "util", "ReadableStreamFrom", "isBlobLike", "isReadableStreamLike", "readableStreamClose", "createDeferredPromise", "fullyReadBody", "extractMimeType", "utf8DecodeBytes", "FormData", "kState", "webidl", "Blob", "assert", "isErrored", "isDisturbed", "isArrayBuffer", "serializeAMimeType", "multipartFormDataParser", "random", "crypto", "__name", "max", "textEncoder", "noop", "hasFinalizationRegistry", "streamRegistry", "weakRef", "stream", "extractBody", "object", "keepalive", "controller", "buffer", "source", "action", "length", "type", "boundary", "prefix", "escape", "str", "normalizeLinefeeds", "value", "blobParts", "rn", "hasUnknownSizeValue", "name", "chunk", "part", "iterator", "done", "reason", "safelyExtractBody", "cloneBody", "instance", "body", "out1", "out2", "throwIfAborted", "state", "bodyMixinMethods", "consumeBody", "bytes", "mimeType", "bodyMimeType", "parseJSONFromBytes", "parsed", "fd", "entries", "mixinBody", "prototype", "convertBytesToJSValue", "bodyUnusable", "promise", "errorSteps", "error", "successSteps", "data", "e", "requestOrResponse", "headers", "require_client_h1", "__commonJSMin", "exports", "module", "assert", "util", "channels", "timers", "RequestContentLengthMismatchError", "ResponseContentLengthMismatchError", "RequestAbortedError", "HeadersTimeoutError", "HeadersOverflowError", "SocketError", "InformationalError", "BodyTimeoutError", "HTTPParserError", "ResponseExceededMaxSizeError", "kUrl", "kReset", "kClient", "kParser", "kBlocking", "kRunning", "kPending", "kSize", "kWriting", "kQueue", "kNoRef", "kKeepAliveDefaultTimeout", "kHostHeader", "kPendingIdx", "kRunningIdx", "kError", "kPipelining", "kSocket", "kKeepAliveTimeoutValue", "kMaxHeadersSize", "kKeepAliveMaxTimeout", "kKeepAliveTimeoutThreshold", "kHeadersTimeout", "kBodyTimeout", "kStrictContentLength", "kMaxRequests", "kCounter", "kMaxResponseSize", "kOnError", "kResume", "kHTTPContext", "constants", "EMPTY_BUF", "FastBuffer", "addListener", "removeAllListeners", "extractBody", "lazyllhttp", "llhttpWasmData", "mod", "__name", "p", "at", "len", "currentParser", "start", "currentBufferPtr", "currentBufferRef", "statusCode", "upgrade", "shouldKeepAlive", "llhttpInstance", "llhttpPromise", "currentBufferSize", "USE_NATIVE_TIMER", "USE_FAST_TIMER", "TIMEOUT_HEADERS", "TIMEOUT_BODY", "TIMEOUT_KEEP_ALIVE", "Parser", "client", "socket", "delay", "type", "onParserTimeout", "chunk", "data", "llhttp", "ret", "err", "offset", "ptr", "message", "buf", "request", "key", "headerName", "head", "headers", "statusText", "bodyTimeout", "keepAliveTimeout", "timeout", "pause", "maxResponseSize", "contentLength", "bytesRead", "parser", "timeoutType", "paused", "connectH1", "requests", "i", "closed", "args", "writeH1", "resumeH1", "callback", "headersTimeout", "shouldSendContentLength", "method", "path", "host", "blocking", "reset", "body", "expectsPayload", "bodyStream", "contentType", "bodyLength", "abort", "header", "n", "val", "writeBuffer", "writeIterable", "writeBlob", "writeStream", "finished", "writer", "AsyncWriter", "onData", "onDrain", "onClose", "onFinished", "er", "buffer", "cb", "waitForDrain", "resolve", "reject", "bytesWritten", "require_client_h2", "__commonJSMin", "exports", "module", "assert", "pipeline", "util", "RequestContentLengthMismatchError", "RequestAbortedError", "SocketError", "InformationalError", "kUrl", "kReset", "kClient", "kRunning", "kPending", "kQueue", "kPendingIdx", "kRunningIdx", "kError", "kSocket", "kStrictContentLength", "kOnError", "kMaxConcurrentStreams", "kHTTP2Session", "kResume", "kSize", "kHTTPContext", "kOpenStreams", "extractBody", "h2ExperimentalWarned", "http2", "HTTP2_HEADER_AUTHORITY", "HTTP2_HEADER_METHOD", "HTTP2_HEADER_PATH", "HTTP2_HEADER_SCHEME", "HTTP2_HEADER_CONTENT_LENGTH", "HTTP2_HEADER_EXPECT", "HTTP2_HEADER_STATUS", "parseH2Headers", "headers", "result", "name", "value", "subvalue", "__name", "connectH2", "client", "socket", "session", "onHttp2SessionError", "onHttp2FrameError", "onHttp2SessionEnd", "onHTTP2GoAway", "err", "requests", "i", "request", "closed", "args", "writeH2", "resumeH2", "callback", "type", "code", "id", "shouldSendContentLength", "method", "path", "host", "upgrade", "expectContinue", "signal", "reqHeaders", "body", "n", "key", "val", "stream", "hostname", "port", "abort", "expectsPayload", "contentLength", "bodyStream", "contentType", "shouldEndStream", "writeBodyH2", "statusCode", "realHeaders", "chunk", "writeBuffer", "writeIterable", "writeBlob", "writeStream", "h2stream", "error", "pipe", "onPipeData", "buffer", "onDrain", "cb", "waitForDrain", "resolve", "reject", "res", "require_redirect_handler", "__commonJSMin", "exports", "module", "util", "kBodyUsed", "assert", "InvalidArgumentError", "EE", "redirectableStatusCodes", "kBody", "BodyAsyncIterable", "__name", "body", "RedirectHandler", "dispatch", "maxRedirections", "opts", "handler", "abort", "statusCode", "headers", "socket", "error", "resume", "statusText", "parseLocation", "origin", "pathname", "search", "path", "cleanRequestHeaders", "chunk", "trailers", "i", "shouldRemoveHeader", "header", "removeContent", "unknownOrigin", "name", "ret", "key", "require_redirect_interceptor", "__commonJSMin", "exports", "module", "RedirectHandler", "createRedirectInterceptor", "defaultMaxRedirections", "dispatch", "__name", "opts", "handler", "maxRedirections", "redirectHandler", "require_client", "__commonJSMin", "exports", "module", "assert", "net", "http", "util", "channels", "Request", "DispatcherBase", "InvalidArgumentError", "InformationalError", "ClientDestroyedError", "buildConnector", "kUrl", "kServerName", "kClient", "kBusy", "kConnect", "kResuming", "kRunning", "kPending", "kSize", "kQueue", "kConnected", "kConnecting", "kNeedDrain", "kKeepAliveDefaultTimeout", "kHostHeader", "kPendingIdx", "kRunningIdx", "kError", "kPipelining", "kKeepAliveTimeoutValue", "kMaxHeadersSize", "kKeepAliveMaxTimeout", "kKeepAliveTimeoutThreshold", "kHeadersTimeout", "kBodyTimeout", "kStrictContentLength", "kConnector", "kMaxRedirections", "kMaxRequests", "kCounter", "kClose", "kDestroy", "kDispatch", "kInterceptors", "kLocalAddress", "kMaxResponseSize", "kOnError", "kHTTPContext", "kMaxConcurrentStreams", "kResume", "connectH1", "connectH2", "deprecatedInterceptorWarned", "kClosedResolve", "noop", "__name", "getPipelining", "client", "Client", "url", "interceptors", "maxHeaderSize", "headersTimeout", "socketTimeout", "requestTimeout", "connectTimeout", "bodyTimeout", "idleTimeout", "keepAlive", "keepAliveTimeout", "maxKeepAliveTimeout", "keepAliveMaxTimeout", "keepAliveTimeoutThreshold", "socketPath", "pipelining", "tls", "strictContentLength", "maxCachedSessions", "maxRedirections", "connect", "maxRequestsPerClient", "localAddress", "maxResponseSize", "autoSelectFamily", "autoSelectFamilyAttemptTimeout", "maxConcurrentStreams", "allowH2", "createRedirectInterceptor", "sync", "resume", "err", "onError", "value", "cb", "opts", "handler", "origin", "request", "resolve", "requests", "i", "callback", "host", "hostname", "protocol", "port", "idx", "ip", "socket", "reject", "emitDrain", "_resume", "require_fixed_queue", "__commonJSMin", "exports", "module", "FixedCircularBuffer", "__name", "data", "nextItem", "tail", "next", "require_pool_stats", "__commonJSMin", "exports", "module", "kFree", "kConnected", "kPending", "kQueued", "kRunning", "kSize", "kPool", "PoolStats", "__name", "pool", "require_pool_base", "__commonJSMin", "exports", "module", "DispatcherBase", "FixedQueue", "kConnected", "kSize", "kRunning", "kPending", "kQueued", "kBusy", "kFree", "kUrl", "kClose", "kDestroy", "kDispatch", "PoolStats", "kClients", "kNeedDrain", "kQueue", "kClosedResolve", "kOnDrain", "kOnConnect", "kOnDisconnect", "kOnConnectionError", "kGetDispatcher", "kAddClient", "kRemoveClient", "kStats", "PoolBase", "__name", "pool", "origin", "targets", "queue", "needDrain", "item", "c", "err", "client", "ret", "pending", "running", "size", "resolve", "opts", "handler", "dispatcher", "idx", "require_pool", "__commonJSMin", "exports", "module", "PoolBase", "kClients", "kNeedDrain", "kAddClient", "kGetDispatcher", "Client", "InvalidArgumentError", "util", "kUrl", "kInterceptors", "buildConnector", "kOptions", "kConnections", "kFactory", "defaultFactory", "origin", "opts", "__name", "Pool", "connections", "factory", "connect", "connectTimeout", "tls", "maxCachedSessions", "socketPath", "autoSelectFamily", "autoSelectFamilyAttemptTimeout", "allowH2", "options", "targets", "error", "target", "idx", "client", "dispatcher", "require_balanced_pool", "__commonJSMin", "exports", "module", "BalancedPoolMissingUpstreamError", "InvalidArgumentError", "PoolBase", "kClients", "kNeedDrain", "kAddClient", "kRemoveClient", "kGetDispatcher", "Pool", "kUrl", "kInterceptors", "parseOrigin", "kFactory", "kOptions", "kGreatestCommonDivisor", "kCurrentWeight", "kIndex", "kWeight", "kMaxWeightPerServer", "kErrorPenalty", "getGreatestCommonDivisor", "a", "b", "t", "__name", "defaultFactory", "origin", "opts", "BalancedPool", "upstreams", "factory", "upstream", "upstreamOrigin", "pool", "args", "err", "client", "result", "i", "dispatcher", "p", "counter", "maxWeightIndex", "require_agent", "__commonJSMin", "exports", "module", "InvalidArgumentError", "kClients", "kRunning", "kClose", "kDestroy", "kDispatch", "kInterceptors", "DispatcherBase", "Pool", "Client", "util", "createRedirectInterceptor", "kOnConnect", "kOnDisconnect", "kOnConnectionError", "kMaxRedirections", "kOnDrain", "kFactory", "kOptions", "defaultFactory", "origin", "opts", "__name", "Agent", "factory", "maxRedirections", "connect", "options", "targets", "err", "ret", "client", "handler", "key", "dispatcher", "closePromises", "destroyPromises", "require_proxy_agent", "__commonJSMin", "exports", "module", "kProxy", "kClose", "kDestroy", "kDispatch", "kInterceptors", "URL", "Agent", "Pool", "DispatcherBase", "InvalidArgumentError", "RequestAbortedError", "SecureProxyConnectionError", "buildConnector", "Client", "kAgent", "kClient", "kProxyHeaders", "kRequestTls", "kProxyTls", "kConnectEndpoint", "kTunnelProxy", "defaultProtocolPort", "protocol", "__name", "defaultFactory", "origin", "opts", "noop", "defaultAgentFactory", "Http1ProxyWrapper", "#client", "proxyUrl", "headers", "connect", "factory", "handler", "onHeaders", "statusCode", "data", "resume", "path", "host", "err", "ProxyAgent", "clientFactory", "proxyTunnel", "url", "#getUrl", "href", "port", "username", "password", "proxyHostname", "agentFactory", "options", "callback", "requestedPath", "socket", "servername", "buildHeaders", "throwIfProxyAuthIsSent", "headersPair", "i", "key", "require_env_http_proxy_agent", "__commonJSMin", "exports", "module", "DispatcherBase", "kClose", "kDestroy", "kClosed", "kDestroyed", "kDispatch", "kNoProxyAgent", "kHttpProxyAgent", "kHttpsProxyAgent", "ProxyAgent", "Agent", "DEFAULT_PORTS", "experimentalWarned", "EnvHttpProxyAgent", "__name", "#noProxyValue", "#noProxyEntries", "#opts", "opts", "httpProxy", "httpsProxy", "noProxy", "agentOpts", "HTTP_PROXY", "HTTPS_PROXY", "#parseNoProxy", "handler", "url", "#getProxyAgentForUrl", "err", "protocol", "hostname", "port", "#shouldProxy", "#noProxyChanged", "entry", "noProxyValue", "#noProxyEnv", "noProxySplit", "noProxyEntries", "i", "parsed", "require_retry_handler", "__commonJSMin", "exports", "module", "assert", "kRetryHandlerDefaultRetry", "RequestRetryError", "isDisturbed", "parseHeaders", "parseRangeHeader", "wrapRequestBody", "calculateRetryAfterHeader", "retryAfter", "current", "__name", "RetryHandler", "_RetryHandler", "opts", "handlers", "retryOptions", "dispatchOpts", "retryFn", "maxRetries", "maxTimeout", "minTimeout", "timeoutFactor", "methods", "errorCodes", "statusCodes", "reason", "statusCode", "headers", "socket", "abort", "chunk", "err", "state", "cb", "code", "method", "counter", "retryAfterHeader", "retryTimeout", "rawHeaders", "resume", "statusMessage", "contentRange", "start", "size", "end", "range", "contentLength", "rawTrailers", "onRetry", "require_retry_agent", "__commonJSMin", "exports", "module", "Dispatcher", "RetryHandler", "RetryAgent", "__name", "#agent", "#options", "agent", "options", "opts", "handler", "retry", "require_readable", "__commonJSMin", "exports", "module", "assert", "Readable", "RequestAbortedError", "NotSupportedError", "InvalidArgumentError", "AbortError", "util", "ReadableStreamFrom", "kConsume", "kReading", "kBody", "kAbort", "kContentType", "kContentLength", "noop", "__name", "BodyReadable", "resume", "abort", "contentType", "contentLength", "highWaterMark", "err", "callback", "ev", "args", "ret", "chunk", "consumePush", "consume", "opts", "limit", "signal", "resolve", "reject", "onAbort", "isLocked", "self", "isUnusable", "stream", "type", "rState", "consumeFinish", "consumeStart", "state", "start", "end", "n", "consumeEnd", "chunksDecode", "chunks", "length", "buffer", "bufferLength", "chunksConcat", "offset", "i", "body", "require_util", "__commonJSMin", "exports", "module", "assert", "ResponseStatusCodeError", "chunksDecode", "CHUNK_LIMIT", "getResolveErrorBodyCallback", "callback", "body", "contentType", "statusCode", "statusMessage", "headers", "chunks", "length", "chunk", "message", "stackTraceLimit", "payload", "isContentTypeApplicationJson", "isContentTypeText", "__name", "require_api_request", "__commonJSMin", "exports", "module", "assert", "Readable", "InvalidArgumentError", "RequestAbortedError", "util", "getResolveErrorBodyCallback", "AsyncResource", "RequestHandler", "__name", "opts", "callback", "signal", "method", "opaque", "body", "onInfo", "responseHeaders", "throwOnError", "highWaterMark", "err", "abort", "context", "statusCode", "rawHeaders", "resume", "statusMessage", "headers", "parsedHeaders", "contentType", "contentLength", "res", "chunk", "trailers", "request", "resolve", "reject", "data", "require_abort_signal", "__commonJSMin", "exports", "module", "addAbortListener", "RequestAbortedError", "kListener", "kSignal", "abort", "self", "removeSignal", "__name", "addSignal", "signal", "require_api_stream", "__commonJSMin", "exports", "module", "assert", "finished", "PassThrough", "InvalidArgumentError", "InvalidReturnValueError", "util", "getResolveErrorBodyCallback", "AsyncResource", "addSignal", "removeSignal", "StreamHandler", "__name", "opts", "factory", "callback", "signal", "method", "opaque", "body", "onInfo", "responseHeaders", "throwOnError", "err", "abort", "context", "statusCode", "rawHeaders", "resume", "statusMessage", "headers", "res", "contentType", "trailers", "chunk", "stream", "resolve", "reject", "data", "require_api_pipeline", "__commonJSMin", "exports", "module", "Readable", "Duplex", "PassThrough", "InvalidArgumentError", "InvalidReturnValueError", "RequestAbortedError", "util", "AsyncResource", "addSignal", "removeSignal", "assert", "kResume", "PipelineRequest", "__name", "resume", "err", "callback", "PipelineResponse", "PipelineHandler", "opts", "handler", "signal", "method", "opaque", "onInfo", "responseHeaders", "body", "chunk", "encoding", "req", "res", "ret", "abort", "context", "statusCode", "rawHeaders", "headers", "trailers", "pipeline", "pipelineHandler", "require_api_upgrade", "__commonJSMin", "exports", "module", "InvalidArgumentError", "SocketError", "AsyncResource", "util", "addSignal", "removeSignal", "assert", "UpgradeHandler", "__name", "opts", "callback", "signal", "opaque", "responseHeaders", "abort", "context", "statusCode", "rawHeaders", "socket", "headers", "err", "upgrade", "resolve", "reject", "data", "upgradeHandler", "require_api_connect", "__commonJSMin", "exports", "module", "assert", "AsyncResource", "InvalidArgumentError", "SocketError", "util", "addSignal", "removeSignal", "ConnectHandler", "__name", "opts", "callback", "signal", "opaque", "responseHeaders", "abort", "context", "statusCode", "rawHeaders", "socket", "headers", "err", "connect", "resolve", "reject", "data", "connectHandler", "require_api", "__commonJSMin", "exports", "module", "require_mock_errors", "__commonJSMin", "exports", "module", "UndiciError", "kMockNotMatchedError", "MockNotMatchedError", "_MockNotMatchedError", "__name", "message", "instance", "require_mock_symbols", "__commonJSMin", "exports", "module", "require_mock_utils", "__commonJSMin", "exports", "module", "MockNotMatchedError", "kDispatches", "kMockAgent", "kOriginalDispatch", "kOrigin", "kGetNetConnect", "buildURL", "STATUS_CODES", "isPromise", "matchValue", "match", "value", "__name", "lowerCaseEntries", "headers", "headerName", "headerValue", "getHeaderByName", "key", "i", "buildHeadersFromArray", "clone", "entries", "index", "matchHeaders", "mockDispatch", "matchHeaderName", "matchHeaderValue", "safeUrl", "path", "pathSegments", "qp", "matchKey", "method", "body", "pathMatch", "methodMatch", "bodyMatch", "headersMatch", "getResponseData", "data", "getMockDispatch", "mockDispatches", "basePath", "resolvedPath", "matchedMockDispatches", "consumed", "addMockDispatch", "baseData", "replyData", "newMockDispatch", "deleteMockDispatch", "dispatch", "buildKey", "opts", "query", "generateKeyValues", "keys", "result", "name", "j", "getStatusText", "statusCode", "getResponse", "buffers", "handler", "trailers", "error", "delay", "persist", "timesInvoked", "times", "handleReply", "_data", "optsHeaders", "newData", "responseData", "responseHeaders", "responseTrailers", "err", "resume", "buildMockDispatch", "agent", "origin", "originalDispatch", "netConnect", "checkNetConnect", "url", "matcher", "buildMockOptions", "mockOptions", "require_mock_interceptor", "__commonJSMin", "exports", "module", "getResponseData", "buildKey", "addMockDispatch", "kDispatches", "kDispatchKey", "kDefaultHeaders", "kDefaultTrailers", "kContentLength", "kMockDispatch", "InvalidArgumentError", "buildURL", "MockScope", "__name", "mockDispatch", "waitInMs", "repeatTimes", "MockInterceptor", "opts", "mockDispatches", "parsedURL", "statusCode", "data", "responseOptions", "responseData", "contentLength", "headers", "trailers", "replyParameters", "replyOptionsCallbackOrStatusCode", "wrappedDefaultsCallback", "resolvedData", "newMockDispatch", "dispatchData", "error", "require_mock_client", "__commonJSMin", "exports", "module", "promisify", "Client", "buildMockDispatch", "kDispatches", "kMockAgent", "kClose", "kOriginalClose", "kOrigin", "kOriginalDispatch", "kConnected", "MockInterceptor", "Symbols", "InvalidArgumentError", "MockClient", "__name", "origin", "opts", "require_mock_pool", "__commonJSMin", "exports", "module", "promisify", "Pool", "buildMockDispatch", "kDispatches", "kMockAgent", "kClose", "kOriginalClose", "kOrigin", "kOriginalDispatch", "kConnected", "MockInterceptor", "Symbols", "InvalidArgumentError", "MockPool", "__name", "origin", "opts", "require_pluralizer", "__commonJSMin", "exports", "module", "singulars", "plurals", "__name", "singular", "plural", "count", "one", "keys", "noun", "require_pending_interceptors_formatter", "__commonJSMin", "exports", "module", "Transform", "Console", "PERSISTENT", "NOT_PERSISTENT", "__name", "disableColors", "chunk", "_enc", "cb", "pendingInterceptors", "withPrettyHeaders", "method", "path", "statusCode", "persist", "times", "timesInvoked", "origin", "require_mock_agent", "__commonJSMin", "exports", "module", "kClients", "Agent", "kAgent", "kMockAgentSet", "kMockAgentGet", "kDispatches", "kIsMockActive", "kNetConnect", "kGetNetConnect", "kOptions", "kFactory", "MockClient", "MockPool", "matchValue", "buildMockOptions", "InvalidArgumentError", "UndiciError", "Dispatcher", "Pluralizer", "PendingInterceptorsFormatter", "MockAgent", "__name", "opts", "agent", "origin", "dispatcher", "handler", "matcher", "mockOptions", "client", "keyMatcher", "nonExplicitDispatcher", "mockAgentClients", "scope", "dispatch", "pending", "pendingInterceptorsFormatter", "pluralizer", "require_global", "__commonJSMin", "exports", "module", "globalDispatcher", "InvalidArgumentError", "Agent", "getGlobalDispatcher", "setGlobalDispatcher", "agent", "__name", "require_decorator_handler", "__commonJSMin", "exports", "module", "__name", "#handler", "handler", "args", "require_redirect", "__commonJSMin", "exports", "module", "RedirectHandler", "opts", "globalMaxRedirections", "dispatch", "__name", "handler", "maxRedirections", "baseOpts", "redirectHandler", "require_retry", "__commonJSMin", "exports", "module", "RetryHandler", "globalOpts", "dispatch", "__name", "opts", "handler", "require_dump", "__commonJSMin", "exports", "module", "util", "InvalidArgumentError", "RequestAbortedError", "DecoratorHandler", "DumpHandler", "__name", "#maxSize", "#abort", "#dumped", "#aborted", "#size", "#reason", "#handler", "maxSize", "handler", "abort", "#customAbort", "reason", "statusCode", "rawHeaders", "resume", "statusMessage", "contentLength", "err", "chunk", "trailers", "createDumpInterceptor", "defaultMaxSize", "dispatch", "opts", "dumpMaxSize", "dumpHandler", "require_dns", "__commonJSMin", "exports", "module", "isIP", "lookup", "DecoratorHandler", "InvalidArgumentError", "InformationalError", "maxInt", "DNSInstance", "__name", "#maxTTL", "#maxItems", "#records", "opts", "#defaultLookup", "#defaultPick", "origin", "cb", "ips", "newOpts", "err", "addresses", "records", "ip", "port", "results", "addr", "hostnameRecords", "affinity", "offset", "family", "position", "timestamp", "record", "familyRecords", "meta", "DNSDispatchHandler", "#state", "#opts", "#dispatch", "#handler", "#origin", "state", "handler", "dispatch", "newOrigin", "dispatchOpts", "interceptorOpts", "dualStack", "instance", "origDispatchOpts", "require_headers", "__commonJSMin", "exports", "module", "kConstruct", "kEnumerableProperty", "iteratorMixin", "isValidHeaderName", "isValidHeaderValue", "webidl", "assert", "util", "kHeadersMap", "kHeadersSortedMap", "isHTTPWhiteSpaceCharCode", "code", "__name", "headerValueNormalize", "potentialValue", "i", "j", "fill", "headers", "object", "header", "appendHeader", "keys", "name", "value", "getHeadersGuard", "getHeadersList", "compareHeaderName", "a", "b", "HeadersList", "_HeadersList", "init", "isLowerCase", "lowercaseName", "exists", "delimiter", "lowerName", "cookie", "size", "array", "iterator", "firstValue", "right", "left", "pivot", "x", "Headers", "_Headers", "#guard", "#headersList", "prefix", "list", "names", "cookies", "depth", "options", "o", "guard", "setHeadersGuard", "setHeadersList", "V", "argument", "require_response", "__commonJSMin", "exports", "module", "Headers", "HeadersList", "fill", "getHeadersGuard", "setHeadersGuard", "setHeadersList", "extractBody", "cloneBody", "mixinBody", "hasFinalizationRegistry", "streamRegistry", "bodyUnusable", "util", "nodeUtil", "kEnumerableProperty", "isValidReasonPhrase", "isCancelled", "isAborted", "isBlobLike", "serializeJavascriptValueToJSONString", "isErrorLike", "isomorphicEncode", "relevantRealm", "redirectStatusSet", "nullBodyStatus", "kState", "kHeaders", "webidl", "FormData", "URLSerializer", "kConstruct", "assert", "types", "textEncoder", "Response", "_Response", "__name", "fromInnerResponse", "makeNetworkError", "data", "init", "bytes", "body", "responseObject", "makeResponse", "initializeResponse", "url", "status", "parsedURL", "err", "value", "bodyWithType", "extractedBody", "type", "urlList", "clonedResponse", "cloneResponse", "depth", "options", "properties", "response", "filterResponse", "newResponse", "reason", "isError", "isNetworkError", "makeFilteredResponse", "state", "target", "p", "makeAppropriateNetworkError", "fetchParams", "innerResponse", "guard", "V", "prefix", "name", "argument", "require_dispatcher_weakref", "__commonJSMin", "exports", "module", "kConnected", "kSize", "CompatWeakRef", "__name", "value", "CompatFinalizer", "finalizer", "dispatcher", "key", "require_request", "__commonJSMin", "exports", "module", "extractBody", "mixinBody", "cloneBody", "bodyUnusable", "Headers", "fillHeaders", "HeadersList", "setHeadersGuard", "getHeadersGuard", "setHeadersList", "getHeadersList", "FinalizationRegistry", "util", "nodeUtil", "isValidHTTPToken", "sameOrigin", "environmentSettingsObject", "forbiddenMethodsSet", "corsSafeListedMethodsSet", "referrerPolicy", "requestRedirect", "requestMode", "requestCredentials", "requestCache", "requestDuplex", "kEnumerableProperty", "normalizedMethodRecordsBase", "normalizedMethodRecords", "kHeaders", "kSignal", "kState", "kDispatcher", "webidl", "URLSerializer", "kConstruct", "assert", "getMaxListeners", "setMaxListeners", "getEventListeners", "defaultMaxListeners", "kAbortController", "requestFinalizer", "signal", "abort", "dependentControllerMap", "buildAbort", "acRef", "ac", "controllerList", "ref", "ctrl", "__name", "patchMethodWarning", "Request", "_Request", "input", "init", "prefix", "request", "fallbackMode", "baseUrl", "parsedURL", "err", "makeRequest", "origin", "window", "initHasKey", "referrer", "parsedReferrer", "mode", "method", "mayBeNormalized", "upperCase", "headersList", "headers", "name", "value", "inputBody", "initBody", "extractedBody", "contentType", "inputOrInitBody", "finalBody", "identityTransform", "clonedRequest", "cloneRequest", "list", "fromInnerRequest", "depth", "options", "properties", "newRequest", "innerRequest", "guard", "V", "argument", "require_fetch", "__commonJSMin", "exports", "module", "makeNetworkError", "makeAppropriateNetworkError", "filterResponse", "makeResponse", "fromInnerResponse", "HeadersList", "Request", "cloneRequest", "zlib", "bytesMatch", "makePolicyContainer", "clonePolicyContainer", "requestBadPort", "TAOCheck", "appendRequestOriginHeader", "responseLocationURL", "requestCurrentURL", "setRequestReferrerPolicyOnRedirect", "tryUpgradeRequestToAPotentiallyTrustworthyURL", "createOpaqueTimingInfo", "appendFetchMetadata", "corsCheck", "crossOriginResourcePolicyCheck", "determineRequestsReferrer", "coarsenedSharedCurrentTime", "createDeferredPromise", "isBlobLike", "sameOrigin", "isCancelled", "isAborted", "isErrorLike", "fullyReadBody", "readableStreamClose", "isomorphicEncode", "urlIsLocal", "urlIsHttpHttpsScheme", "urlHasHttpsScheme", "clampAndCoarsenConnectionTimingInfo", "simpleRangeHeaderValue", "buildContentRange", "createInflate", "extractMimeType", "kState", "kDispatcher", "assert", "safelyExtractBody", "extractBody", "redirectStatusSet", "nullBodyStatus", "safeMethodsSet", "requestBodyHeader", "subresourceSet", "EE", "Readable", "pipeline", "finished", "addAbortListener", "isErrored", "isReadable", "bufferToLowerCasedHeaderName", "dataURLProcessor", "serializeAMimeType", "minimizeSupportedMimeType", "getGlobalDispatcher", "webidl", "STATUS_CODES", "GET_OR_HEAD", "defaultUserAgent", "resolveObjectURL", "Fetch", "__name", "dispatcher", "reason", "error", "handleFetchDone", "response", "finalizeAndReportTiming", "fetch", "input", "init", "p", "requestObject", "e", "request", "abortFetch", "responseObject", "locallyAborted", "controller", "realResponse", "fetching", "initiatorType", "originalURL", "timingInfo", "cacheState", "markResourceTiming", "err", "processRequestBodyChunkLength", "processRequestEndOfBody", "processResponse", "processResponseEndOfBody", "processResponseConsumeBody", "useParallelQueue", "taskDestination", "crossOriginIsolatedCapability", "currentTime", "fetchParams", "mainFetch", "recursive", "currentURL", "schemeFetch", "httpFetch", "internalResponse", "processBodyError", "fetchFinale", "processBody", "bytes", "scheme", "blobURLEntry", "blob", "fullLength", "serializedFullLength", "type", "rangeHeader", "rangeValue", "rangeStart", "rangeEnd", "slicedBlob", "slicedBodyWithType", "serializedSlicedLength", "contentRange", "bodyWithType", "dataURLStruct", "mimeType", "finalizeResponse", "unsafeEndTime", "bodyInfo", "responseStatus", "processResponseEndOfBodyTask", "actualResponse", "httpNetworkOrCacheFetch", "httpRedirectFetch", "locationURL", "headerName", "isAuthenticationFetch", "isNewConnectionFetch", "httpFetchParams", "httpRequest", "httpCache", "revalidatingFlag", "includeCredentials", "contentLength", "contentLengthHeaderValue", "forwardResponse", "httpNetworkFetch", "forceNewConnection", "abort", "newConnection", "requestBody", "processBodyChunk", "processEndOfBody", "body", "status", "statusText", "headersList", "socket", "dispatch", "iterator", "pullAlgorithm", "cancelAlgorithm", "stream", "onAborted", "isFailure", "done", "value", "buffer", "url", "agent", "resolve", "reject", "connection", "rawHeaders", "resume", "codings", "location", "i", "contentEncoding", "x", "decoders", "willFollow", "coding", "onError", "chunk", "require_symbols", "__commonJSMin", "exports", "module", "require_progressevent", "__commonJSMin", "exports", "module", "webidl", "kState", "ProgressEvent", "_ProgressEvent", "__name", "type", "eventInitDict", "require_encoding", "__commonJSMin", "exports", "module", "getEncoding", "label", "__name", "require_util", "__commonJSMin", "exports", "module", "kState", "kError", "kResult", "kAborted", "kLastProgressEventFired", "ProgressEvent", "getEncoding", "serializeAMimeType", "parseMIMEType", "types", "StringDecoder", "btoa", "staticPropertyDescriptors", "readOperation", "fr", "blob", "type", "encodingName", "reader", "bytes", "chunkPromise", "isFirstChunk", "done", "value", "fireAProgressEvent", "result", "packageData", "error", "__name", "e", "event", "mimeType", "dataURL", "parsed", "decoder", "chunk", "encoding", "decode", "combineByteSequences", "binaryString", "ioQueue", "BOMEncoding", "BOMSniffing", "slice", "sliced", "a", "b", "c", "sequences", "size", "offset", "require_filereader", "__commonJSMin", "exports", "module", "staticPropertyDescriptors", "readOperation", "fireAProgressEvent", "kState", "kError", "kResult", "kEvents", "kAborted", "webidl", "kEnumerableProperty", "FileReader", "_FileReader", "__name", "blob", "encoding", "fn", "require_symbols", "__commonJSMin", "exports", "module", "require_util", "__commonJSMin", "exports", "module", "assert", "URLSerializer", "isValidHeaderName", "urlEquals", "A", "B", "excludeFragment", "serializedA", "serializedB", "__name", "getFieldValues", "header", "values", "value", "require_cache", "__commonJSMin", "exports", "module", "kConstruct", "urlEquals", "getFieldValues", "kEnumerableProperty", "isDisturbed", "webidl", "Response", "cloneResponse", "fromInnerResponse", "Request", "fromInnerRequest", "kState", "fetching", "urlIsHttpHttpsScheme", "createDeferredPromise", "readAllBytes", "assert", "Cache", "_Cache", "__name", "#relevantRequestResponseList", "request", "options", "prefix", "p", "#internalMatchAll", "requests", "responsePromises", "requestList", "r", "fetchControllers", "responsePromise", "response", "fieldValues", "fieldValue", "controller", "responses", "operations", "index", "operation", "cacheJobPromise", "errorData", "#batchCacheOperations", "e", "innerRequest", "innerResponse", "clonedResponse", "bodyReadPromise", "reader", "bytes", "requestResponses", "promise", "requestResponse", "#queryCache", "requestObject", "cache", "backupCache", "addedItems", "resultList", "idx", "requestQuery", "targetStorage", "storage", "cachedRequest", "cachedResponse", "#requestMatchesCachedItem", "queryURL", "cachedURL", "requestValue", "queryValue", "maxResponses", "responseList", "responseObject", "cacheQueryOptionConverters", "require_cachestorage", "__commonJSMin", "exports", "module", "kConstruct", "Cache", "webidl", "kEnumerableProperty", "CacheStorage", "_CacheStorage", "__name", "#caches", "request", "options", "cacheList", "response", "cacheName", "prefix", "cache", "require_constants", "__commonJSMin", "exports", "module", "require_util", "__commonJSMin", "exports", "module", "isCTLExcludingHtab", "value", "i", "code", "__name", "validateCookieName", "name", "validateCookieValue", "len", "validateCookiePath", "path", "validateCookieDomain", "domain", "IMFDays", "IMFMonths", "IMFPaddedNumbers", "_", "toIMFDate", "date", "validateCookieMaxAge", "maxAge", "stringify", "cookie", "out", "part", "key", "require_parse", "__commonJSMin", "exports", "module", "maxNameValuePairSize", "maxAttributeValueSize", "isCTLExcludingHtab", "collectASequenceOfCodePointsFast", "assert", "parseSetCookie", "header", "nameValuePair", "unparsedAttributes", "name", "value", "position", "parseUnparsedAttributes", "__name", "cookieAttributeList", "cookieAv", "attributeName", "attributeValue", "attributeNameLowercase", "expiryTime", "charCode", "deltaSeconds", "cookieDomain", "cookiePath", "enforcement", "attributeValueLowercase", "require_cookies", "__commonJSMin", "exports", "module", "parseSetCookie", "stringify", "webidl", "Headers", "getCookies", "headers", "cookie", "out", "piece", "name", "value", "__name", "deleteCookie", "attributes", "prefix", "setCookie", "getSetCookies", "cookies", "pair", "str", "require_events", "__commonJSMin", "exports", "module", "webidl", "kEnumerableProperty", "kConstruct", "MessagePort", "MessageEvent", "_MessageEvent", "__name", "#eventInit", "type", "eventInitDict", "prefix", "bubbles", "cancelable", "data", "origin", "lastEventId", "source", "ports", "init", "messageEvent", "createFastMessageEvent", "CloseEvent", "_CloseEvent", "ErrorEvent", "_ErrorEvent", "eventInit", "require_constants", "__commonJSMin", "exports", "module", "uid", "staticPropertyDescriptors", "states", "sentCloseFrameState", "opcodes", "maxUnsigned16Bit", "parserStates", "emptyBuffer", "sendHints", "require_symbols", "__commonJSMin", "exports", "module", "require_util", "__commonJSMin", "exports", "module", "kReadyState", "kController", "kResponse", "kBinaryType", "kWebSocketURL", "states", "opcodes", "ErrorEvent", "createFastMessageEvent", "isUtf8", "collectASequenceOfCodePointsFast", "removeHTTPWhitespace", "isConnecting", "ws", "__name", "isEstablished", "isClosing", "isClosed", "fireEvent", "e", "target", "eventFactory", "type", "init", "eventInitDict", "event", "websocketMessageReceived", "data", "dataForEvent", "utf8Decode", "failWebsocketConnection", "toArrayBuffer", "buffer", "isValidSubprotocol", "protocol", "i", "code", "isValidStatusCode", "reason", "controller", "response", "isControlFrame", "opcode", "isContinuationFrame", "isTextBinaryFrame", "isValidOpcode", "parseExtensions", "extensions", "position", "extensionList", "pair", "name", "value", "isValidClientWindowBits", "byte", "hasIntl", "fatalDecoder", "require_frame", "__commonJSMin", "exports", "module", "maxUnsigned16Bit", "BUFFER_SIZE", "crypto", "buffer", "bufIdx", "__name", "_offset", "_size", "i", "generateMask", "WebsocketFrameSend", "data", "opcode", "frameData", "maskKey", "bodyLength", "payloadLength", "offset", "require_connection", "__commonJSMin", "exports", "module", "uid", "states", "sentCloseFrameState", "emptyBuffer", "opcodes", "kReadyState", "kSentClose", "kByteParser", "kReceivedClose", "kResponse", "fireEvent", "failWebsocketConnection", "isClosing", "isClosed", "isEstablished", "parseExtensions", "channels", "CloseEvent", "makeRequest", "fetching", "Headers", "getHeadersList", "getDecodeSplit", "WebsocketFrameSend", "crypto", "establishWebSocketConnection", "url", "protocols", "client", "ws", "onEstablish", "options", "requestURL", "request", "headersList", "keyValue", "protocol", "response", "secWSAccept", "digest", "secExtension", "extensions", "secProtocol", "onSocketData", "onSocketClose", "onSocketError", "__name", "closeWebSocketConnection", "code", "reason", "reasonByteLength", "frame", "chunk", "wasClean", "result", "type", "init", "error", "require_permessage_deflate", "__commonJSMin", "exports", "module", "createInflateRaw", "Z_DEFAULT_WINDOWBITS", "isValidClientWindowBits", "tail", "kBuffer", "kLength", "PerMessageDeflate", "__name", "#inflate", "#options", "extensions", "chunk", "fin", "callback", "windowBits", "data", "err", "full", "require_receiver", "__commonJSMin", "exports", "module", "Writable", "assert", "parserStates", "opcodes", "states", "emptyBuffer", "sentCloseFrameState", "kReadyState", "kSentClose", "kResponse", "kReceivedClose", "channels", "isValidStatusCode", "isValidOpcode", "failWebsocketConnection", "websocketMessageReceived", "utf8Decode", "isControlFrame", "isTextBinaryFrame", "isContinuationFrame", "WebsocketFrameSend", "closeWebSocketConnection", "PerMessageDeflate", "ByteParser", "__name", "#buffers", "#byteOffset", "#loop", "#state", "#info", "#fragments", "#extensions", "ws", "extensions", "chunk", "_", "callback", "buffer", "fin", "opcode", "masked", "fragmented", "payloadLength", "rsv1", "rsv2", "rsv3", "upper", "lower", "body", "error", "data", "fullMessage", "n", "offset", "next", "length", "code", "reason", "closeFrame", "err", "frame", "require_sender", "__commonJSMin", "exports", "module", "WebsocketFrameSend", "opcodes", "sendHints", "FixedQueue", "FastBuffer", "SendQueue", "__name", "#queue", "#running", "#socket", "socket", "item", "cb", "hint", "frame", "createFrame", "node", "ab", "#run", "queue", "data", "toBuffer", "require_websocket", "__commonJSMin", "exports", "module", "webidl", "URLSerializer", "environmentSettingsObject", "staticPropertyDescriptors", "states", "sentCloseFrameState", "sendHints", "kWebSocketURL", "kReadyState", "kController", "kBinaryType", "kResponse", "kSentClose", "kByteParser", "isConnecting", "isEstablished", "isClosing", "isValidSubprotocol", "fireEvent", "establishWebSocketConnection", "closeWebSocketConnection", "ByteParser", "kEnumerableProperty", "isBlobLike", "getGlobalDispatcher", "types", "ErrorEvent", "CloseEvent", "SendQueue", "WebSocket", "_WebSocket", "__name", "#events", "#bufferedAmount", "#protocol", "#extensions", "#sendQueue", "url", "protocols", "prefix", "options", "baseURL", "urlRecord", "e", "p", "client", "response", "extensions", "#onConnectionEstablished", "code", "reason", "reasonByteLength", "data", "length", "fn", "type", "parsedExtensions", "parser", "onParserDrain", "onParserError", "protocol", "V", "argument", "err", "message", "require_util", "__commonJSMin", "exports", "module", "isValidLastEventId", "value", "__name", "isASCIINumber", "i", "delay", "ms", "resolve", "require_eventsource_stream", "__commonJSMin", "exports", "module", "Transform", "isASCIINumber", "isValidLastEventId", "BOM", "LF", "CR", "COLON", "SPACE", "EventSourceStream", "__name", "options", "chunk", "_encoding", "callback", "line", "event", "colonPosition", "field", "value", "valueStart", "require_eventsource", "__commonJSMin", "exports", "module", "pipeline", "fetching", "makeRequest", "webidl", "EventSourceStream", "parseMIMEType", "createFastMessageEvent", "isNetworkError", "delay", "kEnumerableProperty", "environmentSettingsObject", "experimentalWarned", "defaultReconnectionTime", "CONNECTING", "OPEN", "CLOSED", "ANONYMOUS", "USE_CREDENTIALS", "EventSource", "_EventSource", "__name", "#events", "#url", "#withCredentials", "#readyState", "#request", "#controller", "#dispatcher", "#state", "url", "eventSourceInitDict", "prefix", "settings", "urlRecord", "e", "corsAttributeState", "initRequest", "#connect", "fetchParams", "processEventSourceEndOfBody", "response", "#reconnect", "contentType", "mimeType", "contentTypeValid", "eventSourceStream", "event", "error", "fn", "constantsPropertyDescriptors", "require_undici", "__commonJSMin", "exports", "module", "Client", "Dispatcher", "Pool", "BalancedPool", "Agent", "ProxyAgent", "EnvHttpProxyAgent", "RetryAgent", "errors", "util", "InvalidArgumentError", "api", "buildConnector", "MockClient", "MockAgent", "MockPool", "mockErrors", "RetryHandler", "getGlobalDispatcher", "setGlobalDispatcher", "DecoratorHandler", "RedirectHandler", "createRedirectInterceptor", "makeDispatcher", "fn", "url", "opts", "handler", "path", "agent", "dispatcher", "__name", "fetchImpl", "init", "options", "err", "setGlobalOrigin", "getGlobalOrigin", "CacheStorage", "kConstruct", "deleteCookie", "getCookies", "getSetCookies", "setCookie", "parseMIMEType", "serializeAMimeType", "CloseEvent", "ErrorEvent", "MessageEvent", "EventSource", "debug_1", "tslib_1", "node_buffer_1", "BaseConnection_1", "undici_1", "errors_1", "symbols_1", "debug", "INVALID_PATH_REGEX", "MAX_BUFFER_LENGTH", "MAX_STRING_LENGTH", "Connection", "__name", "opts", "isUndiciAgentOptions", "undiciOptions", "caFingerprint", "connector", "_a", "cb", "err", "socket", "isTlsSocket", "issuerCertificate", "params", "options", "maxResponseSize", "maxCompressedResponseSize", "_b", "requestParams", "_c", "timedout", "timeoutId", "response", "_e", "_d", "_g", "_f", "_j", "_h", "_l", "_k", "contentEncoding", "_m", "isCompressed", "bodyIsBinary", "_o", "contentLength", "currentLength", "payload", "chunk", "exports", "BaseConnection_1", "tslib_1", "exports", "HttpConnection_1", "UndiciConnection_1", "exports", "defaultNodeFilter", "node_url_1", "debug_1", "tslib_1", "Diagnostic_1", "symbols_1", "connection_1", "errors_1", "debug", "conn", "__name", "BaseConnectionPool", "opts", "_a", "_b", "connection", "connections", "c", "nodes", "newConnections", "oldConnections", "node", "connectionById", "connectionByUrl", "ids", "protocol", "hosts", "i", "len", "address", "parts", "hostname", "port", "url", "connection_1", "BaseConnectionPool_1", "tslib_1", "WeightedConnectionPool", "__name", "opts", "filter", "counter", "connection", "c", "getGreatestCommonDivisor", "connections", "exports", "a", "b", "BaseConnectionPool_1", "tslib_1", "node_assert_1", "debug_1", "connection_1", "debug", "ClusterConnectionPool", "_ClusterConnectionPool", "__name", "opts", "_a", "resurrectStrategy", "_b", "connection", "id", "index", "a", "b", "conn1", "c", "conn2", "statusCode", "isAlive", "err", "filter", "selector", "noAliveConnections", "connections", "i", "BaseConnectionPool_1", "tslib_1", "CloudConnectionPool", "__name", "opts", "connections", "exports", "BaseConnectionPool_1", "tslib_1", "exports", "WeightedConnectionPool_1", "ClusterConnectionPool_1", "CloudConnectionPool_1", "require_transport", "__commonJSMin", "exports", "module", "Diagnostic", "events", "Transport", "BaseConnection", "HttpConnection", "UndiciConnection", "BaseConnectionPool", "ClusterConnectionPool", "CloudConnectionPool", "WeightedConnectionPool", "Serializer", "errors", "node_assert_1", "tslib_1", "transport_1", "SniffingTransport", "__name", "opts", "request", "_a", "result", "isObject", "protocol", "_b", "hosts", "err", "exports", "obj", "decoder", "exports", "encoder", "encodeUtf8", "__name", "value", "isNumber", "__name", "x", "isBoolean", "isFunction", "isObject", "exports", "isPromise", "isObservable", "isIterable", "isAsyncIterable", "isArrowJSON", "isArrayLike", "isIteratorResult", "isUnderlyingSink", "isFileHandle", "isFSReadStream", "isFetchResponse", "isReadableInterop", "isWritableDOMStream", "isReadableDOMStream", "isWritableNodeStream", "isReadableNodeStream", "isFlatbuffersByteBuffer", "utf8_js_1", "compat_js_1", "SharedArrayBuf", "collapseContiguousByteRanges", "chunks", "result", "xOffset", "yOffset", "xLen", "yLen", "x", "y", "i", "j", "n", "__name", "memcpy", "target", "source", "targetByteOffset", "sourceByteLength", "targetByteLength", "dst", "src", "exports", "joinUint8Arrays", "size", "byteLength", "b", "sliced", "buffer", "offset", "index", "length", "toArrayBufferView", "ArrayBufferViewCtor", "input", "value", "toInt8Array", "toInt16Array", "toInt32Array", "toBigInt64Array", "toUint8Array", "toUint16Array", "toUint32Array", "toBigUint64Array", "toFloat32Array", "toFloat64Array", "toUint8ClampedArray", "pump", "iterator", "toArrayBufferViewIterator", "ArrayCtor", "wrap", "buffers", "it", "r", "toInt8ArrayIterator", "toInt16ArrayIterator", "toInt32ArrayIterator", "toUint8ArrayIterator", "toUint16ArrayIterator", "toUint32ArrayIterator", "toFloat32ArrayIterator", "toFloat64ArrayIterator", "toUint8ClampedArrayIterator", "toArrayBufferViewAsyncIterator", "tslib_1", "emit", "toInt8ArrayAsyncIterator", "toInt16ArrayAsyncIterator", "toInt32ArrayAsyncIterator", "toUint8ArrayAsyncIterator", "toUint16ArrayAsyncIterator", "toUint32ArrayAsyncIterator", "toFloat32ArrayAsyncIterator", "toFloat64ArrayAsyncIterator", "toUint8ClampedArrayAsyncIterator", "rebaseValueOffsets", "valueOffsets", "compareArrayLike", "a", "buffer_js_1", "exports", "source", "pump", "fromIterable", "fromAsyncIterable", "fromDOMStream", "stream", "fromNodeStream", "options", "__name", "iterator", "done", "threw", "buffers", "buffer", "cmd", "size", "bufferLength", "byteRange", "it", "e", "tslib_1", "AdaptiveByteReader", "reason", "reader", "result", "onEvent", "event", "handler", "_", "resolve", "events", "err", "x", "cleanup", "reject", "evt", "fn", "destroy", "MetadataVersion", "exports", "UnionMode", "exports", "Precision", "exports", "DateUnit", "exports", "TimeUnit", "exports", "IntervalUnit", "exports", "require_constants", "__commonJSMin", "exports", "require_utils", "__commonJSMin", "exports", "require_encoding", "__commonJSMin", "exports", "Encoding", "require_byte_buffer", "__commonJSMin", "exports", "constants_js_1", "encoding_js_1", "utils_js_1", "ByteBuffer", "_ByteBuffer", "__name", "bytes_", "byte_size", "position", "offset", "value", "result", "i", "bb_pos", "vtable_offset", "vtable", "t", "opt_encoding", "length", "utf8bytes", "o", "ident", "listAccessor", "listLength", "ret", "val", "require_builder", "__commonJSMin", "exports", "byte_buffer_js_1", "constants_js_1", "Builder", "_Builder", "__name", "opt_initial_size", "initial_size", "forceDefaults", "size", "additional_bytes", "align_size", "old_buf_size", "byte_size", "i", "value", "voffset", "defaultValue", "obj", "bb", "new_buf_size", "nbb", "offset", "numfields", "vtableloc", "trimmed_size", "standard_fields", "len", "existing_vtable", "vt1", "outer_loop", "vt2", "j", "root_table", "opt_file_identifier", "opt_size_prefix", "size_prefix", "file_identifier", "table", "field", "table_start", "vtable_start", "elem_size", "num_elems", "alignment", "s", "utf8", "v", "list", "ret", "val", "startFunc", "require_flatbuffers", "__commonJSMin", "exports", "constants_js_1", "__name", "utils_js_1", "builder_js_1", "byte_buffer_js_1", "encoding_js_1", "BodyCompressionMethod", "exports", "CompressionType", "exports", "flatbuffers", "body_compression_method_js_1", "compression_type_js_1", "BodyCompression", "_BodyCompression", "__name", "i", "bb", "obj", "offset", "builder", "codec", "method", "exports", "Buffer", "__name", "i", "bb", "builder", "offset", "length", "exports", "FieldNode", "__name", "i", "bb", "builder", "length", "null_count", "exports", "flatbuffers", "body_compression_js_1", "buffer_js_1", "field_node_js_1", "RecordBatch", "_RecordBatch", "__name", "i", "bb", "obj", "offset", "index", "builder", "length", "nodesOffset", "numElems", "buffersOffset", "compressionOffset", "exports", "flatbuffers", "record_batch_js_1", "DictionaryBatch", "_DictionaryBatch", "__name", "i", "bb", "obj", "offset", "builder", "id", "dataOffset", "isDelta", "exports", "Endianness", "exports", "DictionaryKind", "exports", "flatbuffers", "Int", "_Int", "__name", "i", "bb", "obj", "offset", "builder", "bitWidth", "isSigned", "exports", "flatbuffers", "dictionary_kind_js_1", "int_js_1", "DictionaryEncoding", "_DictionaryEncoding", "__name", "i", "bb", "obj", "offset", "builder", "id", "indexTypeOffset", "isOrdered", "dictionaryKind", "exports", "flatbuffers", "KeyValue", "_KeyValue", "__name", "i", "bb", "obj", "optionalEncoding", "offset", "builder", "keyOffset", "valueOffset", "exports", "flatbuffers", "Binary", "_Binary", "__name", "i", "bb", "obj", "builder", "exports", "flatbuffers", "Bool", "_Bool", "__name", "i", "bb", "obj", "builder", "exports", "flatbuffers", "date_unit_js_1", "Date", "_Date", "__name", "i", "bb", "obj", "offset", "builder", "unit", "exports", "flatbuffers", "Decimal", "_Decimal", "__name", "i", "bb", "obj", "offset", "builder", "precision", "scale", "bitWidth", "exports", "flatbuffers", "time_unit_js_1", "Duration", "_Duration", "__name", "i", "bb", "obj", "offset", "builder", "unit", "exports", "flatbuffers", "FixedSizeBinary", "_FixedSizeBinary", "__name", "i", "bb", "obj", "offset", "builder", "byteWidth", "exports", "flatbuffers", "FixedSizeList", "_FixedSizeList", "__name", "i", "bb", "obj", "offset", "builder", "listSize", "exports", "flatbuffers", "precision_js_1", "FloatingPoint", "_FloatingPoint", "__name", "i", "bb", "obj", "offset", "builder", "precision", "exports", "flatbuffers", "interval_unit_js_1", "Interval", "_Interval", "__name", "i", "bb", "obj", "offset", "builder", "unit", "exports", "flatbuffers", "LargeBinary", "_LargeBinary", "__name", "i", "bb", "obj", "builder", "exports", "flatbuffers", "LargeList", "_LargeList", "__name", "i", "bb", "obj", "builder", "exports", "flatbuffers", "LargeUtf8", "_LargeUtf8", "__name", "i", "bb", "obj", "builder", "exports", "flatbuffers", "List", "_List", "__name", "i", "bb", "obj", "builder", "exports", "flatbuffers", "Map", "_Map", "__name", "i", "bb", "obj", "offset", "builder", "keysSorted", "exports", "flatbuffers", "Null", "_Null", "__name", "i", "bb", "obj", "builder", "exports", "flatbuffers", "RunEndEncoded", "_RunEndEncoded", "__name", "i", "bb", "obj", "builder", "exports", "flatbuffers", "Struct_", "_Struct_", "__name", "i", "bb", "obj", "builder", "exports", "flatbuffers", "time_unit_js_1", "Time", "_Time", "__name", "i", "bb", "obj", "offset", "builder", "unit", "bitWidth", "exports", "flatbuffers", "time_unit_js_1", "Timestamp", "_Timestamp", "__name", "i", "bb", "obj", "offset", "optionalEncoding", "builder", "unit", "timezoneOffset", "exports", "flatbuffers", "union_mode_js_1", "Union", "_Union", "__name", "i", "bb", "obj", "offset", "index", "builder", "mode", "typeIdsOffset", "data", "numElems", "exports", "flatbuffers", "Utf8", "_Utf8", "__name", "i", "bb", "obj", "builder", "exports", "binary_js_1", "bool_js_1", "date_js_1", "decimal_js_1", "duration_js_1", "fixed_size_binary_js_1", "fixed_size_list_js_1", "floating_point_js_1", "int_js_1", "interval_js_1", "large_binary_js_1", "large_list_js_1", "large_utf8_js_1", "list_js_1", "map_js_1", "null_js_1", "run_end_encoded_js_1", "struct__js_1", "time_js_1", "timestamp_js_1", "union_js_1", "utf8_js_1", "Type", "exports", "unionToType", "type", "accessor", "__name", "unionListToType", "index", "flatbuffers", "dictionary_encoding_js_1", "key_value_js_1", "type_js_1", "Field", "_Field", "__name", "i", "bb", "obj", "optionalEncoding", "offset", "index", "builder", "nameOffset", "nullable", "typeType", "typeOffset", "dictionaryOffset", "childrenOffset", "data", "numElems", "customMetadataOffset", "exports", "flatbuffers", "endianness_js_1", "field_js_1", "key_value_js_1", "Schema", "_Schema", "__name", "i", "bb", "obj", "offset", "index", "builder", "endianness", "fieldsOffset", "data", "numElems", "customMetadataOffset", "featuresOffset", "exports", "SparseMatrixCompressedAxis", "exports", "flatbuffers", "buffer_js_1", "int_js_1", "sparse_matrix_compressed_axis_js_1", "SparseMatrixIndexCSX", "_SparseMatrixIndexCSX", "__name", "i", "bb", "obj", "offset", "builder", "compressedAxis", "indptrTypeOffset", "indptrBufferOffset", "indicesTypeOffset", "indicesBufferOffset", "exports", "flatbuffers", "buffer_js_1", "int_js_1", "SparseTensorIndexCOO", "_SparseTensorIndexCOO", "__name", "i", "bb", "obj", "offset", "index", "builder", "indicesTypeOffset", "indicesStridesOffset", "data", "numElems", "indicesBufferOffset", "isCanonical", "exports", "flatbuffers", "buffer_js_1", "int_js_1", "SparseTensorIndexCSF", "_SparseTensorIndexCSF", "__name", "i", "bb", "obj", "offset", "index", "builder", "indptrTypeOffset", "indptrBuffersOffset", "numElems", "indicesTypeOffset", "indicesBuffersOffset", "axisOrderOffset", "data", "exports", "sparse_matrix_index_csx_js_1", "sparse_tensor_index_coo_js_1", "sparse_tensor_index_csf_js_1", "SparseTensorIndex", "exports", "unionToSparseTensorIndex", "type", "accessor", "__name", "unionListToSparseTensorIndex", "index", "flatbuffers", "TensorDim", "_TensorDim", "__name", "i", "bb", "obj", "offset", "optionalEncoding", "builder", "size", "nameOffset", "exports", "flatbuffers", "buffer_js_1", "sparse_tensor_index_js_1", "tensor_dim_js_1", "type_js_1", "SparseTensor", "_SparseTensor", "__name", "i", "bb", "obj", "offset", "index", "builder", "typeType", "typeOffset", "shapeOffset", "data", "numElems", "nonZeroLength", "sparseIndexType", "sparseIndexOffset", "dataOffset", "exports", "flatbuffers", "buffer_js_1", "tensor_dim_js_1", "type_js_1", "Tensor", "_Tensor", "__name", "i", "bb", "obj", "offset", "index", "builder", "typeType", "typeOffset", "shapeOffset", "data", "numElems", "stridesOffset", "dataOffset", "exports", "dictionary_batch_js_1", "record_batch_js_1", "schema_js_1", "sparse_tensor_js_1", "tensor_js_1", "MessageHeader", "exports", "unionToMessageHeader", "type", "accessor", "__name", "unionListToMessageHeader", "index", "metadata_version_js_1", "exports", "__name", "union_mode_js_1", "precision_js_1", "date_unit_js_1", "time_unit_js_1", "interval_unit_js_1", "message_header_js_1", "Type", "BufferType", "undf", "valueToString", "x", "_", "y", "__name", "exports", "bigIntToNumber", "number", "__name", "exports", "divideBigInts", "divisor", "buffer_js_1", "bigint_js_1", "exports", "BigNum", "x", "xs", "__name", "bigNumToString", "scale", "bigNumToNumber", "hint", "bigNumToBigInt", "SignedBigNum", "args", "UnsignedBigNum", "DecimalBigNum", "TWO_TO_THE_64", "TWO_TO_THE_64_MINUS_1", "bn", "buffer", "byteOffset", "byteLength", "signed", "words", "negative", "number", "i", "word", "denominator", "quotient", "remainder", "integerPart", "fractionPart", "a", "unsignedBigNumToString", "array", "carry", "elem", "updated", "digits", "base64", "base32", "checks", "n", "BN", "_BN", "num", "isSigned", "bigint_js_1", "enum_js_1", "DataType", "_DataType", "__name", "x", "typeId", "exports", "_a", "proto", "Null", "_b", "Int_", "isSigned", "bitWidth", "_c", "Int8", "Int16", "Int32", "Int64", "Uint8", "Uint16", "Uint32", "Uint64", "Float", "precision", "_d", "Float16", "Float32", "Float64", "Binary", "_e", "LargeBinary", "_f", "Utf8", "_g", "LargeUtf8", "_h", "Bool", "_j", "Decimal", "scale", "_k", "Date_", "unit", "_l", "DateDay", "DateMillisecond", "Time_", "_m", "TimeSecond", "TimeMillisecond", "TimeMicrosecond", "TimeNanosecond", "Timestamp_", "timezone", "_o", "TimestampSecond", "TimestampMillisecond", "TimestampMicrosecond", "TimestampNanosecond", "Interval_", "_p", "IntervalDayTime", "IntervalYearMonth", "IntervalMonthDayNano", "Duration", "_q", "DurationSecond", "DurationMillisecond", "DurationMicrosecond", "DurationNanosecond", "List", "child", "_r", "Struct", "children", "f", "_s", "Union_", "mode", "typeIds", "typeIdToChildIndex", "idx", "_t", "DenseUnion", "SparseUnion", "FixedSizeBinary", "byteWidth", "_u", "FixedSizeList", "listSize", "_v", "Map_", "entries", "keysSorted", "_y", "key", "_z", "val", "_0", "_w", "getId", "atomicDictionaryId", "Dictionary", "dictionary", "indices", "id", "isOrdered", "_x", "strideForType", "type", "t", "enum_js_1", "type_js_1", "Visitor", "__name", "nodes", "args", "node", "i", "x", "throwIfNotFound", "getVisitFn", "typeId", "getVisitFnByTypeId", "_node", "_args", "exports", "visitor", "inferDType", "dtype", "fn", "type", "bitWidth", "isSigned", "f64", "u32", "uint16ToFloat64", "h", "expo", "sigf", "sign", "__name", "exports", "float64ToUint16", "d", "vector_js_1", "visitor_js_1", "bigint_js_1", "utf8_js_1", "math_js_1", "enum_js_1", "SetVisitor", "__name", "exports", "wrapSet", "fn", "data", "_1", "_2", "setEpochMsToDays", "index", "epochMs", "setVariableWidthBytes", "values", "valueOffsets", "value", "x", "y", "setBool", "offset", "val", "idx", "setInt", "setFloat", "setFloat16", "setAnyFloat", "setDateDay", "setDateMillisecond", "setFixedSizeBinary", "stride", "setBinary", "setUtf8", "setDate", "setTimestampSecond", "setTimestampMillisecond", "setTimestampMicrosecond", "setTimestampNanosecond", "setTimestamp", "setTimeSecond", "setTimeMillisecond", "setTimeMicrosecond", "setTimeNanosecond", "setTime", "setDecimal", "setList", "set", "itr", "end", "setMap", "entries", "_setStructArrayValue", "o", "v", "c", "_", "i", "_setStructVectorValue", "_setStructMapValue", "f", "_setStructObjectValue", "setStruct", "childSetters", "setUnion", "setDenseUnion", "setSparseUnion", "childIndex", "child", "setDictionary", "_a", "setIntervalValue", "setIntervalDayTime", "setIntervalYearMonth", "setIntervalMonthDayNano", "setDurationSecond", "setDurationMillisecond", "setDurationMicrosecond", "setDurationNanosecond", "setDuration", "setFixedSizeList", "pretty_js_1", "get_js_1", "set_js_1", "kParent", "kRowIndex", "StructRow", "__name", "parent", "rowIndex", "structRowProxyHandler", "i", "keys", "json", "j", "n", "key", "val", "StructRowIterator", "exports", "data", "StructRowProxyHandler", "row", "f", "idx", "bn_js_1", "vector_js_1", "visitor_js_1", "map_js_1", "struct_js_1", "bigint_js_1", "utf8_js_1", "math_js_1", "enum_js_1", "GetVisitor", "__name", "exports", "wrapGet", "fn", "data", "_1", "epochDaysToMs", "index", "getNull", "_data", "_index", "getVariableWidthBytes", "values", "valueOffsets", "x", "y", "getBool", "offset", "idx", "getDateDay", "getDateMillisecond", "getNumeric", "stride", "getFloat16", "getBigInts", "getFixedSizeBinary", "getBinary", "getUtf8", "bytes", "getInt", "getFloat", "type", "getDate", "getTimestampSecond", "getTimestampMillisecond", "getTimestampMicrosecond", "getTimestampNanosecond", "getTimestamp", "getTimeSecond", "getTimeMillisecond", "getTimeMicrosecond", "getTimeNanosecond", "getTime", "getDecimal", "getList", "children", "begin", "end", "slice", "getMap", "child", "getStruct", "getUnion", "getDenseUnion", "getSparseUnion", "childIndex", "getDictionary", "_a", "getInterval", "getIntervalMonthDayNano", "getIntervalDayTime", "getIntervalYearMonth", "interval", "int32s", "getDurationSecond", "getDurationMillisecond", "getDurationMicrosecond", "getDurationNanosecond", "getDuration", "getFixedSizeList", "vector_js_1", "pretty_js_1", "get_js_1", "set_js_1", "exports", "MapRow", "__name", "slice", "MapRowProxyHandler", "MapRowIterator", "keys", "vals", "json", "i", "n", "key", "val", "row", "idx", "vector_js_1", "map_js_1", "struct_js_1", "buffer_js_1", "tmp", "clampRange", "source", "begin", "end", "then", "len", "lhs", "rhs", "__name", "exports", "wrapIndex", "index", "isNaNFast", "value", "createElementComparator", "search", "valueOfSearch", "createMapComparator", "createArrayLikeComparator", "createVectorComparator", "createObjectComparator", "comparators", "i", "n", "createSubElementsComparator", "v", "allowEmpty", "keys", "compareArray", "compareObject", "compareVector", "arr", "vec", "obj", "lKeyItr", "rKeyItr", "rValItr", "rVal", "lKey", "rKey", "getBool", "_data", "_index", "byte", "bit", "__name", "exports", "getBit", "setBool", "bytes", "index", "value", "truncateBitmap", "offset", "length", "bitmap", "alignedSize", "packBools", "BitIterator", "values", "xs", "i", "b", "begin", "context", "get", "popcnt_bit_range", "data", "lhs", "rhs", "sum", "rhsInside", "lhsInside", "popcnt_array", "arr", "byteOffset", "byteLength", "cnt", "pos", "view", "len", "popcnt_uint32", "uint32", "vector_js_1", "enum_js_1", "type_js_1", "bit_js_1", "exports", "Data", "_Data", "__name", "type", "child", "byteLength", "valueOffsets", "values", "nullBitmap", "typeIds", "nullCount", "offset", "length", "buffers", "children", "dictionary", "buffer", "index", "union", "indexInChild", "pos", "value", "prev", "idx", "mask", "byteOffset", "byte", "stride", "typeId", "childStride", "newLength", "bitmap", "arr", "visitor_js_1", "buffer_js_1", "MakeDataVisitor", "_MakeDataVisitor", "props", "data", "len", "makeDataVisitor", "makeData", "ChunkedIterator", "__name", "numChunks", "getChunkIterator", "next", "exports", "computeChunkNullable", "chunks", "chunk", "computeChunkNullCounts", "nullCount", "computeChunkOffsets", "offsets", "index", "sliceChunks", "begin", "end", "slices", "i", "n", "offset", "length", "from", "to", "binarySearch", "idx", "fn", "lhs", "mid", "rhs", "isChunkedValid", "data", "wrapChunkedCall1", "chunkedFn", "j", "wrapChunkedCall2", "_2", "value", "result", "wrapChunkedIndexOf", "indexOf", "_1", "chunkedIndexOf", "chunkIndex", "fromIndex", "total", "element", "enum_js_1", "visitor_js_1", "get_js_1", "bit_js_1", "vector_js_1", "IndexOfVisitor", "__name", "exports", "nullIndexOf", "data", "searchElement", "indexOfNull", "fromIndex", "nullBitmap", "isValid", "indexOfValue", "get", "compare", "i", "n", "indexOfUnion", "visitor_js_1", "enum_js_1", "type_js_1", "chunk_js_1", "IteratorVisitor", "__name", "exports", "vectorIterator", "vector", "type", "chunkIndex", "data", "offset", "length", "inner", "VectorIterator", "enum_js_1", "vector_js_1", "type_js_1", "data_js_1", "chunk_js_1", "get_js_1", "set_js_1", "indexof_js_1", "iterator_js_1", "visitorsByTypeId", "vectorPrototypesByTypeId", "Vector", "_Vector", "__name", "input", "data", "x", "type", "_b", "get", "set", "indexOf", "unchunkedData", "index", "value", "_d", "_c", "byteLength", "element", "offset", "others", "begin", "end", "_offsets", "length", "stride", "ArrayType", "memo", "values", "chunk_length", "name", "f", "children", "dictionary", "MemoizedVector", "newData", "cloned", "exports", "_a", "proto", "typeIds", "T", "typeId", "_MemoizedVector", "vector", "slice", "cache", "cachedValue", "dtypes", "makeVector", "init", "v", "unwrapInputs", "props", "pretty_js_1", "createIsValidFunction", "nullValues", "__name", "value", "fnBody", "noNaNs", "x", "valueToCase", "exports", "buffer_js_1", "roundLengthUpToNearest64Bytes", "len", "BPE", "bytesMinus1", "__name", "resizeArray", "arr", "BufferBuilder", "bufferType", "initialSize", "stride", "index", "value", "extra", "length", "reserved", "array", "newLength", "exports", "DataBufferBuilder", "BitmapBufferBuilder", "idx", "val", "buffer", "byte", "bit", "cur", "OffsetsBufferBuilder", "type", "offset", "vector_js_1", "data_js_1", "map_js_1", "type_js_1", "valid_js_1", "buffer_js_1", "Builder", "__name", "options", "type", "nulls", "size", "_offsets", "_values", "_nulls", "_typeIds", "children", "child", "value", "index", "valid", "name", "data", "typeIds", "nullBitmap", "valueOffsets", "length", "nullCount", "_a", "_b", "_c", "_d", "exports", "FixedWidthBuilder", "opts", "values", "VariableWidthBuilder", "pending", "current", "isValid", "pendingLength", "Block", "__name", "i", "bb", "builder", "offset", "metaDataLength", "bodyLength", "exports", "flatbuffers", "block_js_1", "key_value_js_1", "metadata_version_js_1", "schema_js_1", "Footer", "_Footer", "__name", "i", "bb", "obj", "offset", "index", "builder", "version", "schemaOffset", "dictionariesOffset", "numElems", "recordBatchesOffset", "customMetadataOffset", "data", "exports", "enum_js_1", "type_js_1", "Schema", "_Schema", "__name", "fields", "metadata", "dictionaries", "metadataVersion", "generateDictionaryMap", "f", "i", "fieldNames", "names", "fieldIndices", "args", "other", "curFields", "mergeMaps", "newFields", "f2", "newDictionaries", "exports", "Field", "_Field", "name", "type", "nullable", "m1", "m2", "n", "block_js_1", "footer_js_1", "flatbuffers", "Builder", "ByteBuffer", "schema_js_1", "enum_js_1", "buffer_js_1", "bigint_js_1", "Footer_", "__name", "buf", "footer", "schema", "OffHeapFooter", "b", "schemaOffset", "rb", "FileBlock", "recordBatchesOffset", "db", "dictionaryBatchesOffset", "version", "recordBatches", "dictionaryBatches", "block", "i", "n", "index", "exports", "_footer", "fileBlock", "_FileBlock", "metaDataLength", "offset", "bodyLength", "flatbuffers", "key_value_js_1", "message_header_js_1", "metadata_version_js_1", "Message", "_Message", "__name", "i", "bb", "obj", "offset", "index", "builder", "version", "headerType", "headerOffset", "bodyLength", "customMetadataOffset", "data", "numElems", "exports", "visitor_js_1", "null_js_1", "int_js_1", "floating_point_js_1", "binary_js_1", "large_binary_js_1", "bool_js_1", "utf8_js_1", "large_utf8_js_1", "decimal_js_1", "date_js_1", "time_js_1", "timestamp_js_1", "interval_js_1", "duration_js_1", "list_js_1", "struct__js_1", "union_js_1", "dictionary_encoding_js_1", "fixed_size_binary_js_1", "fixed_size_list_js_1", "map_js_1", "TypeAssembler", "__name", "node", "builder", "_node", "b", "timezone", "typeIds", "indexType", "exports", "schema_js_1", "type_js_1", "message_js_1", "enum_js_1", "schemaFromJSON", "_schema", "dictionaries", "schemaFieldsFromJSON", "customMetadataFromJSON", "__name", "exports", "recordBatchFromJSON", "b", "fieldNodesFromJSON", "buffersFromJSON", "dictionaryBatchFromJSON", "f", "fieldChildrenFromJSON", "_field", "xs", "fieldNodes", "column", "nullCountFromJSON", "buffers", "i", "n", "validity", "sum", "val", "fieldFromJSON", "id", "keys", "field", "dictMeta", "type", "dictType", "typeFromJSON", "indexTypeFromJSON", "metadata", "key", "value", "_type", "children", "typeId", "t", "m", "ms", "mode", "flatbuffers", "schema_js_1", "int_js_1", "record_batch_js_1", "dictionary_batch_js_1", "buffer_js_1", "field_js_1", "field_node_js_1", "type_js_1", "key_value_js_1", "endianness_js_1", "floating_point_js_1", "decimal_js_1", "date_js_1", "time_js_1", "timestamp_js_1", "interval_js_1", "duration_js_1", "union_js_1", "fixed_size_binary_js_1", "fixed_size_list_js_1", "map_js_1", "message_js_1", "body_compression_js_1", "body_compression_method_js_1", "schema_js_2", "buffer_js_2", "bigint_js_1", "enum_js_1", "typeassembler_js_1", "json_js_1", "Builder", "ByteBuffer", "type_js_2", "Message", "_Message", "__name", "msg", "headerType", "message", "messageHeaderFromJSON", "buf", "_message", "bodyLength", "version", "decodeMessageHeader", "b", "headerOffset", "RecordBatch", "DictionaryBatch", "header", "exports", "length", "nodes", "buffers", "compression", "data", "id", "isDelta", "BufferRegion", "offset", "FieldNode", "nullCount", "BodyCompression", "type", "method", "encodeField", "decodeField", "encodeSchema", "decodeSchema", "encodeRecordBatch", "decodeRecordBatch", "encodeDictionaryBatch", "decodeDictionaryBatch", "encodeFieldNode", "decodeFieldNode", "encodeBufferRegion", "decodeBufferRegion", "encodeBodyCompression", "decodeBodyCompression", "_schema", "dictionaries", "fields", "decodeSchemaFields", "decodeCustomMetadata", "batch", "decodeFieldNodes", "decodeBuffers", "f", "j", "n", "bufferRegions", "i", "schema", "decodeFieldChildren", "field", "children", "keys", "dictType", "dictMeta", "decodeFieldType", "decodeIndexType", "parent", "entry", "key", "_type", "typeId", "t", "fieldOffsets", "fieldsVectorOffset", "metadataOffset", "k", "v", "val", "platformIsLittleEndian", "nameOffset", "typeOffset", "dictionaryOffset", "childOffsets", "childrenVectorOffset", "recordBatch", "nodesVectorOffset", "b_", "buffersVectorOffset", "bodyCompressionOffset", "node", "dictionaryBatch", "dataOffset", "buffer", "adapters_js_1", "exports", "ArrowJSON", "__name", "_json", "ReadableInterop", "writable", "options", "duplex", "AsyncQueue", "r", "reason", "value", "resolvers", "_", "size", "_args", "resolve", "reject", "adapters_js_1", "utf8_js_1", "interfaces_js_1", "buffer_js_1", "compat_js_1", "AsyncByteQueue", "__name", "value", "sync", "tslib_1", "buffers", "byteLength", "_d", "_e", "_f", "_a", "_c", "chunk", "exports", "ByteStream", "source", "ByteStreamSource", "size", "AsyncByteStream", "_AsyncByteStream", "AsyncByteStreamSource", "reason", "cmd", "r", "size_1", "result", "stream_js_1", "buffer_js_1", "RandomAccessFile", "__name", "buffer", "byteLength", "position", "byteOffset", "nBytes", "size", "buf", "end", "value", "exports", "AsyncRandomAccessFile", "file", "tslib_1", "pos", "offset", "bytesRead", "f", "carryBit16", "intAsHex", "value", "__name", "kInt32DecimalDigits", "kPowersOfTen", "BaseInt64", "buffer", "other", "L", "R", "product", "sum", "exports", "Uint64", "_Uint64", "val", "out_buffer", "num", "str", "length", "out", "posn", "group", "chunk", "multiple", "values", "data", "n", "left", "right", "Int64", "_Int64", "this_high", "other_high", "negate", "Int128", "_Int128", "L0", "L1", "L2", "L3", "R0", "R1", "R2", "R3", "sums", "toIntervalDayTimeInt32Array", "objects", "length", "array", "oi", "ai", "interval", "_a", "_b", "__name", "exports", "toIntervalMonthDayNanoInt32Array", "data", "nanoseconds", "toIntervalDayTimeObjects", "toIntervalMonthDayNanoObjects", "stringifyNano", "data_js_1", "schema_js_1", "type_js_1", "visitor_js_1", "bit_js_1", "utf8_js_1", "int_js_1", "enum_js_1", "buffer_js_1", "interval_js_1", "VectorLoader", "__name", "bytes", "nodes", "buffers", "dictionaries", "metadataVersion", "node", "type", "length", "nullCount", "buffer", "_type", "offset", "exports", "JSONVectorLoader", "sources", "binaryDataFromJSON", "x", "values", "joined", "data", "CompressedVectorLoader", "bodyChunks", "_buffer", "buffer_js_1", "builder_js_1", "buffer_js_2", "BinaryBuilder", "__name", "opts", "size", "index", "value", "pending", "pendingLength", "offsets", "data", "offset", "length", "exports", "buffer_js_1", "buffer_js_2", "builder_js_1", "LargeBinaryBuilder", "__name", "opts", "size", "index", "value", "pending", "pendingLength", "offsets", "data", "offset", "length", "exports", "buffer_js_1", "builder_js_1", "BoolBuilder", "__name", "options", "index", "value", "exports", "builder_js_1", "set_js_1", "DateBuilder", "__name", "exports", "DateDayBuilder", "DateMillisecondBuilder", "builder_js_1", "set_js_1", "DecimalBuilder", "__name", "exports", "type_js_1", "builder_js_1", "factories_js_1", "DictionaryBuilder", "__name", "type", "nulls", "hashFn", "value", "index", "valid", "indices", "keysToIndices", "key", "idx", "prev", "curr", "data", "val", "exports", "builder_js_1", "set_js_1", "FixedSizeBinaryBuilder", "__name", "exports", "schema_js_1", "builder_js_1", "type_js_1", "FixedSizeListBuilder", "__name", "index", "value", "child", "start", "i", "n", "valid", "name", "childIndex", "exports", "math_js_1", "builder_js_1", "FloatBuilder", "__name", "index", "value", "exports", "Float16Builder", "Float32Builder", "Float64Builder", "builder_js_1", "set_js_1", "IntervalBuilder", "__name", "exports", "IntervalDayTimeBuilder", "IntervalYearMonthBuilder", "IntervalMonthDayNanoBuilder", "builder_js_1", "set_js_1", "DurationBuilder", "__name", "exports", "DurationSecondBuilder", "DurationMillisecondBuilder", "DurationMicrosecondBuilder", "DurationNanosecondBuilder", "builder_js_1", "IntBuilder", "__name", "index", "value", "exports", "Int8Builder", "Int16Builder", "Int32Builder", "Int64Builder", "Uint8Builder", "Uint16Builder", "Uint32Builder", "Uint64Builder", "schema_js_1", "type_js_1", "buffer_js_1", "builder_js_1", "ListBuilder", "__name", "opts", "child", "name", "pending", "offsets", "index", "value", "v", "n", "start", "i", "exports", "schema_js_1", "type_js_1", "builder_js_1", "MapBuilder", "__name", "index", "value", "row", "pending", "current", "child", "name", "offsets", "idx", "end", "val", "exports", "builder_js_1", "NullBuilder", "__name", "index", "value", "valid", "exports", "schema_js_1", "builder_js_1", "type_js_1", "StructBuilder", "__name", "index", "value", "children", "type", "_", "i", "f", "valid", "child", "name", "childIndex", "exports", "builder_js_1", "set_js_1", "TimestampBuilder", "__name", "exports", "TimestampSecondBuilder", "TimestampMillisecondBuilder", "TimestampMicrosecondBuilder", "TimestampNanosecondBuilder", "builder_js_1", "set_js_1", "TimeBuilder", "__name", "exports", "TimeSecondBuilder", "TimeMillisecondBuilder", "TimeMicrosecondBuilder", "TimeNanosecondBuilder", "schema_js_1", "buffer_js_1", "builder_js_1", "type_js_1", "UnionBuilder", "__name", "options", "value", "childTypeId", "index", "childIndex", "child", "name", "children", "mode", "typeIds", "fields", "builder", "offset", "exports", "SparseUnionBuilder", "DenseUnionBuilder", "id", "denseIndex", "utf8_js_1", "binary_js_1", "buffer_js_1", "builder_js_1", "Utf8Builder", "__name", "opts", "size", "index", "value", "pending", "pendingLength", "exports", "utf8_js_1", "buffer_js_1", "builder_js_1", "largebinary_js_1", "LargeUtf8Builder", "__name", "opts", "size", "index", "value", "pending", "pendingLength", "exports", "visitor_js_1", "binary_js_1", "largebinary_js_1", "bool_js_1", "date_js_1", "decimal_js_1", "dictionary_js_1", "fixedsizebinary_js_1", "fixedsizelist_js_1", "float_js_1", "interval_js_1", "duration_js_1", "int_js_1", "list_js_1", "map_js_1", "null_js_1", "struct_js_1", "timestamp_js_1", "time_js_1", "union_js_1", "utf8_js_1", "largeutf8_js_1", "GetBuilderCtor", "__name", "exports", "visitor_js_1", "TypeComparator", "__name", "schema", "other", "fields", "others", "f", "i", "field", "exports", "compareConstructor", "type", "compareAny", "compareInt", "compareFloat", "compareFixedSizeBinary", "compareDate", "compareTimestamp", "compareTime", "compareList", "compareStruct", "compareUnion", "x", "compareDictionary", "compareInterval", "compareDuration", "compareFixedSizeList", "compareMap", "compareSchemas", "compareFields", "compareTypes", "schema_js_1", "dtypes", "data_js_1", "vector_js_1", "builderctor_js_1", "table_js_1", "recordbatch_js_1", "typecomparator_js_1", "makeBuilder", "options", "type", "builder", "children", "defaultOptions", "getChildOptions", "_", "i", "name", "index", "field", "opts", "__name", "exports", "vectorFromArray", "init", "inferType", "chunks", "builderThroughIterable", "vector", "a", "b", "tableFromJSON", "array", "batch", "value", "nullsCount", "arraysCount", "objectsCount", "numbersCount", "stringsCount", "bigintsCount", "booleansCount", "datesCount", "val", "childType", "ary", "fields", "row", "key", "queueingStrategy", "highWaterMark", "sizeProperty", "source", "numChunks", "builderThroughAsyncIterable", "_d", "source_1", "tslib_1", "source_1_1", "_a", "_c", "data_js_1", "type_js_1", "recordbatch_js_1", "distributeVectorsIntoRecordBatches", "schema", "vecs", "uniformlyDistributeChunksAcrossRecordBatches", "v", "__name", "exports", "cols", "fields", "batches", "memo", "n", "c", "numBatches", "batchLength", "i", "numColumns", "child", "children", "distributeChildren", "data", "columns", "nullBitmapSize", "length", "field", "_a", "enum_js_1", "data_js_1", "factories_js_1", "vector_js_1", "schema_js_1", "type_js_1", "typecomparator_js_1", "recordbatch_js_1", "chunk_js_1", "get_js_1", "set_js_1", "indexof_js_1", "iterator_js_1", "vector_js_2", "recordbatch_js_2", "Table", "_Table", "__name", "args", "schema", "offsets", "unwrap", "x", "v", "keys", "vecs", "k", "batchSchema", "i", "batches", "_c", "_b", "batch", "data", "numRows", "index", "value", "element", "offset", "others", "begin", "end", "chunk", "name", "f", "type", "empty", "child", "fields", "field", "children", "_", "columnNames", "nameToIndex", "m", "columnName", "columnIndices", "other", "indices", "oldToNew", "memo", "f2", "newIdx", "columns", "j", "exports", "_a", "proto", "makeTable", "input", "inputs", "key", "col", "tableFromArrays", "data_js_1", "table_js_1", "vector_js_1", "schema_js_1", "type_js_1", "vector_js_2", "get_js_1", "set_js_1", "indexof_js_1", "iterator_js_1", "RecordBatch", "_RecordBatch", "__name", "args", "f", "ensureSameLengthData", "obj", "fields", "children", "length", "memo", "name", "i", "schema", "data", "collectDictionaries", "index", "value", "element", "offset", "others", "begin", "end", "slice", "_b", "child", "field", "columnNames", "type", "columnIndices", "subset", "exports", "_a", "proto", "chunks", "maxLength", "max", "col", "nullBitmapSize", "idx", "chunk", "dictionaries", "n", "next", "_c", "id", "_InternalEmptyPlaceholderRecordBatch", "enum_js_1", "flatbuffers_1", "message_js_1", "compat_js_1", "file_js_1", "buffer_js_1", "stream_js_1", "interfaces_js_1", "invalidMessageType", "__name", "type", "nullMessage", "invalidMessageMetadata", "expected", "actual", "invalidMessageBodyLength", "MessageReader", "source", "r", "value", "bodyLength", "buf", "throwIfNull", "message", "schema", "exports", "bb", "len", "metadataLength", "AsyncMessageReader", "byteLength", "JSONMessageReader", "_json", "batch", "_bodyLength", "flattenDataSources", "xs", "buffers", "column", "i", "checkForMagicArrowString", "buffer", "index", "n", "compression_type_js_1", "Lz4FrameValidator", "__name", "codec", "testData", "compressed", "buffer", "byte", "ZstdValidator", "exports", "compression_type_js_1", "validators_js_1", "_CompressionRegistry", "__name", "compression", "codec", "_a", "exports", "exports", "data_js_1", "vector_js_1", "type_js_1", "enum_js_1", "file_js_1", "adapters_js_1", "metadata", "stream_js_1", "file_js_2", "vectorloader_js_1", "recordbatch_js_1", "interfaces_js_1", "message_js_1", "compat_js_1", "registry_js_1", "bigint_js_1", "flatbuffers", "constants_js_1", "RecordBatchReader", "_RecordBatchReader", "__name", "impl", "value", "schema", "options", "opening", "index", "writableStrategy", "readableStrategy", "source", "fromArrowJSON", "fromFileHandle", "tslib_1", "fromAsyncByteStream", "fromByteStream", "readAllSync", "readAllAsync", "exports", "RecordBatchStreamReader", "_impl", "AsyncRecordBatchStreamReader", "batches", "_d", "_e", "_f", "_a", "_c", "batch", "RecordBatchFileReader", "AsyncRecordBatchFileReader", "RecordBatchReaderImpl", "dictionaries", "header", "body", "children", "codec", "decommpressedBody", "buffers", "data", "id", "isDelta", "dictionary", "type", "types", "decompressedBuffers", "newBufferRegions", "currentOffset", "offset", "length", "byteBuf", "uncompressedLenth", "bytes", "decompressed", "padding", "RecordBatchStreamReaderImpl", "shouldAutoDestroy", "message", "reader", "buffer", "vector", "AsyncRecordBatchStreamReaderImpl", "RecordBatchFileReaderImpl", "block", "_handle", "AsyncRecordBatchFileReaderImpl", "rest", "byteLength", "_super", "RecordBatchJSONReaderImpl", "self", "size", "file", "vector_js_1", "visitor_js_1", "enum_js_1", "recordbatch_js_1", "buffer_js_1", "bit_js_1", "message_js_1", "type_js_1", "bigint_js_1", "VectorAssembler", "_VectorAssembler", "__name", "args", "unwrap", "nodes", "node", "assembler", "data", "type", "length", "nullCount", "addBuffer", "_null", "exports", "values", "byteLength", "assembleUnion", "typeIds", "valueOffsets", "assembleNestedVector", "shiftedOffsets", "childOffsets", "childLengths", "typeId", "shift", "index", "_a", "child", "childIndex", "childOffset", "childLength", "assembleBoolVector", "assembleFlatVector", "assembleFlatListVector", "begin", "end", "assembleListVector", "_", "i", "visitor_js_1", "type_js_1", "enum_js_1", "JSONTypeAssembler", "__name", "node", "typeId", "bitWidth", "isSigned", "precision", "scale", "unit", "timezone", "mode", "typeIds", "byteWidth", "listSize", "keysSorted", "exports", "bn_js_1", "vector_js_1", "visitor_js_1", "enum_js_1", "enum_js_2", "bit_js_1", "interval_js_1", "type_js_1", "JSONVectorAssembler", "_JSONVectorAssembler", "__name", "batches", "assembler", "schema", "data", "name", "length", "offset", "nullCount", "nullBitmap", "type", "buffers", "values", "bigNumsToStrings", "binaryToString", "exports", "vector", "octets", "str", "byte", "stride", "u32s", "n", "table_js_1", "message_js_1", "vector_js_1", "type_js_1", "message_js_2", "metadata", "file_js_1", "enum_js_1", "typecomparator_js_1", "stream_js_1", "vectorassembler_js_1", "jsontypeassembler_js_1", "jsonvectorassembler_js_1", "buffer_js_1", "recordbatch_js_1", "interfaces_js_1", "compat_js_1", "compression_type_js_1", "registry_js_1", "constants_js_1", "flatbuffers", "RecordBatchWriter", "__name", "options", "writableStrategy", "readableStrategy", "validCompressionTypes", "v", "sync", "input", "x", "writeAllAsync", "writeAll", "reason", "sink", "schema", "payload", "message", "alignment", "a", "buffer", "flatbufferSize", "prefixSize", "alignedSize", "nPaddingBytes", "chunk", "nBytes", "batch", "byteLength", "nodes", "bufferRegions", "buffers", "recordBatch", "codec", "currentOffset", "compressedBuffers", "byteBuf", "compressed", "isCompressionEffective", "finalBuffer", "lengthPrefix", "padding", "fullBodyLength", "finalPadding", "dictionary", "id", "isDelta", "dictionaryBatch", "bufGroupSize", "bufs", "i", "size", "j", "buf", "chunks", "_a", "prevDictionary", "offset", "_b", "index", "exports", "RecordBatchStreamWriter", "_RecordBatchStreamWriter", "writer", "RecordBatchFileWriter", "_RecordBatchFileWriter", "RecordBatchJSONWriter", "_RecordBatchJSONWriter", "field", "fieldToJSON", "dictionaryBatchToJSON", "recordBatchToJSON", "batches", "batches_1", "tslib_1", "batches_1_1", "_d", "name", "type", "nullable", "assembler", "columns", "records", "node_stream_1", "compat_js_1", "toNodeStream", "source", "options", "AsyncIterableReadable", "IterableReadable", "__name", "exports", "it", "size", "cb", "fn", "bm", "tslib_1", "node_stream_1", "factories_js_1", "builderThroughNodeStream", "options", "BuilderDuplex", "__name", "exports", "builder", "queueingStrategy", "autoDestroy", "highWaterMark", "builderLength", "builderByteLength", "size", "cb", "value", "_", "result", "err", "node_stream_1", "stream_js_1", "reader_js_1", "recordBatchReaderThroughNodeStream", "options", "RecordBatchReaderDuplex", "__name", "exports", "cb", "aq", "x", "_", "size", "tslib_1", "err", "source", "reader", "r", "node_stream_1", "stream_js_1", "recordBatchWriterThroughNodeStream", "options", "RecordBatchWriterDuplex", "__name", "exports", "writer", "cb", "x", "_", "size", "it", "tslib_1", "err", "reader", "r", "buffer_js_1", "compat_js_1", "toDOMStream", "source", "options", "asyncIterableAsReadableDOMStream", "iterableAsReadableDOMStream", "__name", "exports", "it", "bm", "hwm", "controller", "next", "buf", "r", "size", "factories_js_1", "builderThroughDOMStream", "options", "BuilderTransform", "__name", "exports", "readableStrategy", "writableStrategy", "queueingStrategy", "builderOptions", "tslib_1", "chunkLength", "chunkByteLength", "readableHighWaterMark", "writableHighWaterMark", "value", "bufferedSize", "builder", "controller", "chunk", "_a", "stream_js_1", "reader_js_1", "recordBatchReaderThroughDOMStream", "writableStrategy", "readableStrategy", "queue", "reader", "readable", "controller", "next", "open", "size", "r", "__name", "exports", "stream_js_1", "recordBatchWriterThroughDOMStream", "writableStrategy", "readableStrategy", "writer", "reader", "readable", "controller", "next", "buf", "size", "__name", "exports", "table_js_1", "compat_js_1", "reader_js_1", "writer_js_1", "tableFromIPC", "input", "reader", "xs", "__name", "exports", "tableToIPC", "table", "type", "compressionType", "writerOptions", "message_header_js_1", "exports", "__name", "compression_type_js_1", "enum_js_1", "data_js_1", "type_js_1", "table_js_1", "vector_js_1", "visitor_js_1", "schema_js_1", "map_js_1", "struct_js_1", "builder_js_1", "factories_js_1", "bool_js_1", "null_js_1", "date_js_1", "decimal_js_1", "dictionary_js_1", "fixedsizebinary_js_1", "float_js_1", "int_js_1", "time_js_1", "timestamp_js_1", "interval_js_1", "duration_js_1", "utf8_js_1", "largeutf8_js_1", "binary_js_1", "largebinary_js_1", "list_js_1", "fixedsizelist_js_1", "map_js_2", "struct_js_2", "union_js_1", "stream_js_1", "reader_js_1", "writer_js_1", "serialization_js_1", "registry_js_1", "message_js_1", "message_js_2", "recordbatch_js_1", "util_bn_", "util_int_", "util_bit_", "util_math_", "util_buffer_", "util_vector_", "util_pretty_", "util_interval_", "typecomparator_js_1", "adapters_js_1", "builder_js_1", "reader_js_1", "writer_js_1", "iterable_js_1", "builder_js_2", "reader_js_2", "writer_js_2", "Arrow_js_1", "exports", "__name", "Arrow_js_2", "adapters_js_1", "builder_js_1", "reader_js_1", "writer_js_1", "iterable_js_1", "builder_js_2", "reader_js_2", "writer_js_2", "tslib_1", "exports", "node_assert_1", "tslib_1", "timersPromises", "node_stream_1", "transport_1", "Arrow_node_1", "ResponseError", "ConfigurationError", "sleep", "pImmediate", "noop", "__name", "kClient", "kMetaHeader", "kMaxRetries", "Helpers", "opts", "_a", "_b", "_c", "params", "options", "appendFilterPath", "result", "_d", "d", "wait", "_e", "maxRetries", "_f", "_g", "response", "i", "redaction", "errorOptions", "scroll_id", "stop", "clear", "addDocumentsGetter", "documents", "document", "reqOptions", "client", "operations", "concurrency", "flushInterval", "retries", "msearchOptions", "stopReading", "stopError", "timeoutRef", "operationsStream", "size", "p", "iterate", "helper", "onFulfilled", "onRejected", "onFinally", "error", "header", "body", "promise", "resolve", "reject", "callback", "err", "semaphore", "finish", "buildSemaphore", "msearchBody", "callbacks", "loadedOperations", "onFlushTimeout", "operation", "msearchBodyCopy", "callbacksCopy", "resolveSemaphore", "resolveFinish", "running", "send", "msearchOperation", "done", "retryCount", "tryMsearch", "retrySearch", "results", "retryBody", "retryCallbacks", "responses", "len", "serializer", "datasource", "onDocument", "flushBytes", "onDrop", "onSuccess", "refreshOnCompletion", "bulkOptions", "isReadableStream", "isAsyncIterator", "shouldAbort", "stats", "startTime", "bulkBody", "actionBody", "payloadBody", "chunkBytes", "chunk", "action", "payload", "bulkBodyCopy", "rejectFinish", "bulkOperation", "isRetrying", "tryBulk", "retryDocuments", "zipBulkResults", "responseItems", "zipped", "indexSlice", "zipResult", "item", "retry", "raw", "responseItem", "toRecords", "columns", "values", "row", "doc", "cell", "index", "name", "metaHeader", "records", "filter", "force", "obj", "AsyncSearch", "__name", "transport", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "acceptedBody", "userBody", "body", "exports", "Autoscaling", "__name", "transport", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "acceptedBody", "body", "_a", "exports", "exports", "BulkApi", "params", "options", "acceptedPath", "acceptedBody", "querystring", "body", "_a", "key", "method", "path", "meta", "__name", "exports", "CapabilitiesApi", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "__name", "Cat", "__name", "transport", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "exports", "Ccr", "__name", "transport", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "acceptedBody", "userBody", "body", "exports", "exports", "ClearScrollApi", "params", "options", "acceptedPath", "acceptedBody", "querystring", "userBody", "body", "key", "method", "path", "meta", "__name", "exports", "ClosePointInTimeApi", "params", "options", "acceptedPath", "acceptedBody", "querystring", "userBody", "body", "key", "method", "path", "meta", "__name", "Cluster", "__name", "transport", "params", "options", "acceptedPath", "acceptedBody", "querystring", "userBody", "body", "key", "method", "path", "meta", "exports", "Connector", "__name", "transport", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "acceptedBody", "userBody", "body", "exports", "exports", "CountApi", "params", "options", "acceptedPath", "acceptedBody", "querystring", "userBody", "body", "key", "method", "path", "meta", "__name", "exports", "CreateApi", "params", "options", "acceptedPath", "acceptedBody", "querystring", "body", "_a", "key", "method", "path", "meta", "__name", "DanglingIndices", "__name", "transport", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "exports", "exports", "DeleteApi", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "__name", "exports", "DeleteByQueryApi", "params", "options", "acceptedPath", "acceptedBody", "querystring", "userBody", "body", "key", "method", "path", "meta", "__name", "exports", "DeleteByQueryRethrottleApi", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "__name", "exports", "DeleteScriptApi", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "__name", "Enrich", "__name", "transport", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "acceptedBody", "userBody", "body", "exports", "Eql", "__name", "transport", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "acceptedBody", "userBody", "body", "exports", "Esql", "__name", "transport", "params", "options", "acceptedPath", "acceptedBody", "querystring", "userBody", "body", "key", "method", "path", "meta", "exports", "exports", "ExistsApi", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "__name", "exports", "ExistsSourceApi", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "__name", "exports", "ExplainApi", "params", "options", "acceptedPath", "acceptedBody", "querystring", "userBody", "body", "key", "method", "path", "meta", "__name", "Features", "__name", "transport", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "exports", "exports", "FieldCapsApi", "params", "options", "acceptedPath", "acceptedBody", "querystring", "userBody", "body", "key", "method", "path", "meta", "__name", "Fleet", "__name", "transport", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "acceptedBody", "body", "_a", "userBody", "exports", "exports", "GetApi", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "__name", "exports", "GetScriptApi", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "__name", "exports", "GetScriptContextApi", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "__name", "exports", "GetScriptLanguagesApi", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "__name", "exports", "GetSourceApi", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "__name", "Graph", "__name", "transport", "params", "options", "acceptedPath", "acceptedBody", "querystring", "userBody", "body", "key", "method", "path", "meta", "exports", "exports", "HealthReportApi", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "__name", "Ilm", "__name", "transport", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "acceptedBody", "userBody", "body", "exports", "exports", "IndexApi", "params", "options", "acceptedPath", "acceptedBody", "querystring", "body", "_a", "key", "method", "path", "meta", "__name", "Indices", "__name", "transport", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "acceptedBody", "userBody", "body", "_a", "exports", "Inference", "__name", "transport", "params", "options", "acceptedPath", "acceptedBody", "querystring", "body", "_a", "key", "method", "path", "meta", "userBody", "exports", "exports", "InfoApi", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "__name", "Ingest", "__name", "transport", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "acceptedBody", "userBody", "body", "_a", "exports", "exports", "KnnSearchApi", "params", "options", "acceptedPath", "acceptedBody", "querystring", "userBody", "body", "key", "method", "path", "meta", "__name", "License", "__name", "transport", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "acceptedBody", "userBody", "body", "exports", "Logstash", "__name", "transport", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "acceptedBody", "body", "_a", "exports", "exports", "MgetApi", "params", "options", "acceptedPath", "acceptedBody", "querystring", "userBody", "body", "key", "method", "path", "meta", "__name", "Migration", "__name", "transport", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "exports", "Ml", "__name", "transport", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "acceptedBody", "userBody", "body", "_a", "exports", "Monitoring", "__name", "transport", "params", "options", "acceptedPath", "acceptedBody", "querystring", "body", "_a", "key", "method", "path", "meta", "exports", "exports", "MsearchApi", "params", "options", "acceptedPath", "acceptedBody", "querystring", "body", "_a", "key", "method", "path", "meta", "__name", "exports", "MsearchTemplateApi", "params", "options", "acceptedPath", "acceptedBody", "querystring", "body", "_a", "key", "method", "path", "meta", "__name", "exports", "MtermvectorsApi", "params", "options", "acceptedPath", "acceptedBody", "querystring", "userBody", "body", "key", "method", "path", "meta", "__name", "Nodes", "__name", "transport", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "acceptedBody", "userBody", "body", "exports", "exports", "OpenPointInTimeApi", "params", "options", "acceptedPath", "acceptedBody", "querystring", "userBody", "body", "key", "method", "path", "meta", "__name", "exports", "PingApi", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "__name", "Profiling", "__name", "transport", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "exports", "exports", "PutScriptApi", "params", "options", "acceptedPath", "acceptedBody", "querystring", "userBody", "body", "key", "method", "path", "meta", "__name", "QueryRules", "__name", "transport", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "acceptedBody", "userBody", "body", "exports", "exports", "RankEvalApi", "params", "options", "acceptedPath", "acceptedBody", "querystring", "userBody", "body", "key", "method", "path", "meta", "__name", "exports", "ReindexApi", "params", "options", "acceptedPath", "acceptedBody", "querystring", "userBody", "body", "key", "method", "path", "meta", "__name", "exports", "ReindexRethrottleApi", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "__name", "exports", "RenderSearchTemplateApi", "params", "options", "acceptedPath", "acceptedBody", "querystring", "userBody", "body", "key", "method", "path", "meta", "__name", "Rollup", "__name", "transport", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "acceptedBody", "userBody", "body", "exports", "exports", "ScriptsPainlessExecuteApi", "params", "options", "acceptedPath", "acceptedBody", "querystring", "userBody", "body", "key", "method", "path", "meta", "__name", "exports", "ScrollApi", "params", "options", "acceptedPath", "acceptedBody", "querystring", "userBody", "body", "key", "method", "path", "meta", "__name", "exports", "SearchApi", "params", "options", "acceptedPath", "acceptedBody", "querystring", "userBody", "body", "key", "method", "path", "meta", "__name", "SearchApplication", "__name", "transport", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "acceptedBody", "body", "_a", "userBody", "exports", "exports", "SearchMvtApi", "params", "options", "acceptedPath", "acceptedBody", "querystring", "userBody", "body", "key", "method", "path", "meta", "__name", "exports", "SearchShardsApi", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "__name", "exports", "SearchTemplateApi", "params", "options", "acceptedPath", "acceptedBody", "querystring", "userBody", "body", "key", "method", "path", "meta", "__name", "SearchableSnapshots", "__name", "transport", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "acceptedBody", "userBody", "body", "exports", "Security", "__name", "transport", "params", "options", "acceptedPath", "acceptedBody", "querystring", "userBody", "body", "key", "method", "path", "meta", "_a", "exports", "Shutdown", "__name", "transport", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "acceptedBody", "userBody", "body", "exports", "Simulate", "__name", "transport", "params", "options", "acceptedPath", "acceptedBody", "querystring", "userBody", "body", "key", "method", "path", "meta", "exports", "Slm", "__name", "transport", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "acceptedBody", "userBody", "body", "exports", "Snapshot", "__name", "transport", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "acceptedBody", "userBody", "body", "_a", "exports", "Sql", "__name", "transport", "params", "options", "acceptedPath", "acceptedBody", "querystring", "userBody", "body", "key", "method", "path", "meta", "exports", "Ssl", "__name", "transport", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "exports", "Streams", "__name", "transport", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "exports", "Synonyms", "__name", "transport", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "acceptedBody", "userBody", "body", "exports", "Tasks", "__name", "transport", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "exports", "exports", "TermsEnumApi", "params", "options", "acceptedPath", "acceptedBody", "querystring", "userBody", "body", "key", "method", "path", "meta", "__name", "exports", "TermvectorsApi", "params", "options", "acceptedPath", "acceptedBody", "querystring", "userBody", "body", "key", "method", "path", "meta", "__name", "TextStructure", "__name", "transport", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "acceptedBody", "userBody", "body", "_a", "exports", "Transform", "__name", "transport", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "acceptedBody", "userBody", "body", "exports", "exports", "UpdateApi", "params", "options", "acceptedPath", "acceptedBody", "querystring", "userBody", "body", "key", "method", "path", "meta", "__name", "exports", "UpdateByQueryApi", "params", "options", "acceptedPath", "acceptedBody", "querystring", "userBody", "body", "key", "method", "path", "meta", "__name", "exports", "UpdateByQueryRethrottleApi", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "__name", "Watcher", "__name", "transport", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "acceptedBody", "userBody", "body", "exports", "Xpack", "__name", "transport", "params", "options", "acceptedPath", "querystring", "key", "method", "path", "meta", "exports", "async_search_1", "tslib_1", "autoscaling_1", "bulk_1", "capabilities_1", "cat_1", "ccr_1", "clear_scroll_1", "close_point_in_time_1", "cluster_1", "connector_1", "count_1", "create_1", "dangling_indices_1", "delete_1", "delete_by_query_1", "delete_by_query_rethrottle_1", "delete_script_1", "enrich_1", "eql_1", "esql_1", "exists_1", "exists_source_1", "explain_1", "features_1", "field_caps_1", "fleet_1", "get_1", "get_script_1", "get_script_context_1", "get_script_languages_1", "get_source_1", "graph_1", "health_report_1", "ilm_1", "index_1", "indices_1", "inference_1", "info_1", "ingest_1", "knn_search_1", "license_1", "logstash_1", "mget_1", "migration_1", "ml_1", "monitoring_1", "msearch_1", "msearch_template_1", "mtermvectors_1", "nodes_1", "open_point_in_time_1", "ping_1", "profiling_1", "put_script_1", "query_rules_1", "rank_eval_1", "reindex_1", "reindex_rethrottle_1", "render_search_template_1", "rollup_1", "scripts_painless_execute_1", "scroll_1", "search_1", "search_application_1", "search_mvt_1", "search_shards_1", "search_template_1", "searchable_snapshots_1", "security_1", "shutdown_1", "simulate_1", "slm_1", "snapshot_1", "sql_1", "ssl_1", "streams_1", "synonyms_1", "tasks_1", "terms_enum_1", "termvectors_1", "text_structure_1", "transform_1", "update_1", "update_by_query_1", "update_by_query_rethrottle_1", "watcher_1", "xpack_1", "kAsyncSearch", "kAutoscaling", "kCat", "kCcr", "kCluster", "kConnector", "kDanglingIndices", "kEnrich", "kEql", "kEsql", "kFeatures", "kFleet", "kGraph", "kIlm", "kIndices", "kInference", "kIngest", "kLicense", "kLogstash", "kMigration", "kMl", "kMonitoring", "kNodes", "kProfiling", "kQueryRules", "kRollup", "kSearchApplication", "kSearchableSnapshots", "kSecurity", "kShutdown", "kSimulate", "kSlm", "kSnapshot", "kSql", "kSsl", "kStreams", "kSynonyms", "kTasks", "kTextStructure", "kTransform", "kWatcher", "kXpack", "API", "__name", "_a", "_b", "_c", "_d", "_e", "_f", "_g", "_h", "_j", "_k", "_l", "_m", "_o", "_p", "_q", "_r", "_s", "_t", "_u", "_v", "_w", "_x", "_y", "_z", "_0", "_1", "_2", "_3", "_4", "_5", "_6", "_7", "_8", "_9", "_10", "_11", "_12", "_13", "_14", "_15", "_16", "_17", "require_package", "__commonJSMin", "exports", "module", "node_process_1", "tslib_1", "node_url_1", "node_buffer_1", "node_os_1", "transport_1", "BaseConnection_1", "sniffingTransport_1", "helpers_1", "api_1", "package_json_1", "package_json_2", "kChild", "kInitialOptions", "clientVersion", "transportVersion", "nodeVersion", "Client", "_Client", "__name", "opts", "id", "parts", "cloudUrls", "_a", "checkAuth", "getAuth", "_b", "headers", "_c", "redaction", "_d", "options", "isHttpConnection", "_e", "clientMeta", "serializerOptions", "nodes", "_f", "nodeOptions", "opt", "tls", "auth", "timeout", "agent", "proxy", "caFingerprint", "defaults", "acc", "key", "val", "newOpts", "exports", "node", "n", "url", "getUsernameAndPassword", "username", "password", "require_elasticsearch", "__commonJSMin", "exports", "module", "Diagnostic", "Transport", "WeightedConnectionPool", "ClusterConnectionPool", "BaseConnectionPool", "CloudConnectionPool", "BaseConnection", "HttpConnection", "UndiciConnection", "Serializer", "errors", "events", "Client", "SniffingTransport", "require_transformer", "__commonJSMin", "exports", "module", "transformer", "__name", "logData", "transformed", "require_raw", "__commonJSMin", "exports", "module", "domain", "hasSetImmediate", "rawAsap", "task", "queue", "requestFlush", "flushing", "__name", "index", "capacity", "flush", "currentIndex", "scan", "newLength", "parentDomain", "require_core", "__commonJSMin", "exports", "module", "asap", "noop", "__name", "LAST_ERROR", "IS_ERROR", "getThen", "obj", "ex", "tryCallOne", "fn", "a", "tryCallTwo", "b", "Promise", "doResolve", "onFulfilled", "onRejected", "safeThen", "res", "handle", "Handler", "self", "resolve", "reject", "deferred", "handleResolved", "cb", "ret", "newValue", "then", "finale", "i", "promise", "done", "value", "reason", "require_done", "__commonJSMin", "exports", "module", "Promise", "onFulfilled", "onRejected", "self", "err", "require_finally", "__commonJSMin", "exports", "module", "Promise", "f", "value", "err", "require_es6_extensions", "__commonJSMin", "exports", "module", "Promise", "TRUE", "valuePromise", "FALSE", "NULL", "UNDEFINED", "ZERO", "EMPTYSTRING", "value", "p", "__name", "then", "ex", "resolve", "reject", "iterableToArray", "iterable", "x", "arr", "args", "remaining", "res", "i", "val", "onSettledFulfill", "onSettledReject", "reason", "mapAllSettled", "item", "values", "onRejected", "getAggregateError", "errors", "error", "promises", "hasResolved", "rejectionReasons", "resolveOnce", "rejectionCheck", "require_asap", "__commonJSMin", "exports", "module", "rawAsap", "freeTasks", "asap", "task", "rawTask", "RawTask", "__name", "threw", "require_node_extensions", "__commonJSMin", "exports", "module", "Promise", "asap", "fn", "argumentCount", "denodeifyWithCount", "denodeifyWithoutCount", "callbackFn", "args", "body", "__name", "fnLength", "_", "index", "callback", "ctx", "ex", "resolve", "reject", "value", "err", "require_synchronous", "__commonJSMin", "exports", "module", "Promise", "require_lib", "__commonJSMin", "exports", "module", "require_promise", "__commonJSMin", "exports", "module", "require_retry_operation", "__commonJSMin", "exports", "module", "RetryOperation", "timeouts", "options", "__name", "err", "currentTime", "timeout", "self", "fn", "timeoutOps", "counts", "mainError", "mainErrorCount", "error", "message", "count", "require_retry", "__commonJSMin", "exports", "RetryOperation", "options", "timeouts", "opts", "key", "i", "a", "b", "attempt", "random", "timeout", "obj", "methods", "method", "original", "__name", "op", "args", "callback", "err", "require_retry", "__commonJSMin", "exports", "module", "require_bulk_writer", "__commonJSMin", "exports", "module", "Promise", "debug", "retry", "BulkWriter", "__name", "transport", "client", "options", "thiz", "resolve", "bulk", "body", "index", "doc", "attempts", "operation", "res", "err", "item", "itemIndex", "bodyData", "opKey", "e", "newBody", "chunk", "chunks", "created", "lenSum", "retryLimit", "fulfill", "reject", "currentAttempt", "start", "res1", "indexPrefix", "indexTemplate", "templateName", "tmplCheckMessage", "tmplMessage", "err1", "require_index_template_mapping", "__commonJSMin", "exports", "module", "require_winston_elasticsearch", "__commonJSMin", "exports", "module", "winston", "Transport", "dayjs", "defaults", "omit", "Client", "defaultTransformer", "BulkWriter", "mappingTemplate", "ElasticsearchTransport", "__name", "opts", "source", "err", "copts", "bulkWriterOpts", "chunk", "encoding", "callback", "info", "level", "message", "timestamp", "meta", "logData", "entry", "index", "apm", "indexInterfix", "indexName", "indexPrefix", "dateString", "require_elasticsearch_index_template", "__commonJSMin", "exports", "module", "winston_elasticsearch_1", "os", "__importStar", "rTracer", "utils_1", "elasticsearch_index_template_json_1", "__importDefault", "createTransformer", "opts", "precompiled", "logData", "source", "transformed", "store", "key", "value", "transformedFields", "__name", "createElasticSearchTransport", "transformer", "exports", "exports", "createLogger", "winston_1", "__name", "console_1", "file_1", "elasticsearch_1", "utils_1", "opts", "transports", "precompiled", "esTransport", "error", "logger", "require_ee_first", "__commonJSMin", "exports", "module", "first", "stuff", "done", "cleanups", "arr", "ee", "j", "event", "fn", "listener", "callback", "cleanup", "__name", "x", "i", "thunk", "arg1", "args", "err", "require_on_finished", "__commonJSMin", "exports", "module", "onFinished", "isFinished", "asyncHooks", "tryRequireAsyncHooks", "first", "defer", "fn", "msg", "listener", "attachListener", "wrap", "__name", "socket", "attachFinishedListener", "callback", "eeMsg", "eeSocket", "finished", "onFinish", "error", "onSocket", "patchAssignSocket", "attached", "createListener", "err", "queue", "i", "res", "assignSocket", "require_koa_compose", "__commonJSMin", "exports", "module", "compose", "middleware", "fn", "context", "next", "index", "dispatch", "i", "err", "__name", "require_codes", "__commonJSMin", "exports", "module", "require_statuses", "__commonJSMin", "exports", "module", "codes", "status", "createMessageToStatusCodeMap", "createStatusCodeList", "map", "__name", "code", "message", "getStatusCode", "msg", "getStatusMessage", "n", "require_depd", "__commonJSMin", "exports", "module", "relative", "depd", "basePath", "containsNamespace", "str", "namespace", "vals", "ns", "i", "val", "__name", "convertDataDescriptorToAccessor", "obj", "prop", "message", "descriptor", "value", "createArgumentsString", "arity", "createStackString", "stack", "getStack", "site", "callSiteLocation", "file", "deprecate", "log", "isignored", "istraced", "wrapfunction", "wrapproperty", "eehaslisteners", "emitter", "type", "count", "haslisteners", "caller", "callFile", "callSite", "depSite", "seen", "key", "msg", "defaultMessage", "err", "DeprecationError", "format", "formatColor", "formatPlain", "output", "line", "colm", "funcName", "formatLocation", "context", "typeName", "timestamp", "formatted", "limit", "prep", "prepareObjectStackTrace", "fn", "args", "deprecatedfn", "get", "set", "error", "stackString", "require_setprototypeof", "__commonJSMin", "exports", "module", "setProtoOf", "mixinProperties", "obj", "proto", "__name", "prop", "require_toidentifier", "__commonJSMin", "exports", "module", "toIdentifier", "str", "token", "__name", "require_http_errors", "__commonJSMin", "exports", "module", "deprecate", "setPrototypeOf", "statuses", "inherits", "toIdentifier", "createError", "createHttpErrorConstructor", "createIsHttpErrorFunction", "populateConstructorExports", "codeClass", "status", "__name", "err", "msg", "props", "i", "arg", "type", "HttpError", "key", "createClientErrorConstructor", "name", "code", "className", "toClassName", "ClientError", "message", "nameFunc", "val", "createServerErrorConstructor", "ServerError", "func", "desc", "codes", "CodeError", "require_charset", "__commonJSMin", "exports", "module", "preferredCharsets", "simpleCharsetRegExp", "parseAcceptCharset", "accept", "accepts", "i", "j", "charset", "parseCharset", "__name", "str", "match", "q", "params", "p", "getCharsetPriority", "accepted", "index", "priority", "spec", "specify", "s", "provided", "isQuality", "compareSpecs", "getFullCharset", "priorities", "type", "a", "b", "require_encoding", "__commonJSMin", "exports", "module", "preferredEncodings", "simpleEncodingRegExp", "parseAcceptEncoding", "accept", "accepts", "hasIdentity", "minQuality", "i", "j", "encoding", "parseEncoding", "specify", "__name", "str", "match", "q", "params", "p", "getEncodingPriority", "accepted", "index", "priority", "spec", "s", "provided", "isQuality", "compareSpecs", "getFullEncoding", "priorities", "type", "a", "b", "require_language", "__commonJSMin", "exports", "module", "preferredLanguages", "simpleLanguageRegExp", "parseAcceptLanguage", "accept", "accepts", "i", "j", "language", "parseLanguage", "__name", "str", "match", "prefix", "suffix", "full", "q", "params", "p", "getLanguagePriority", "accepted", "index", "priority", "spec", "specify", "s", "provided", "isQuality", "compareSpecs", "getFullLanguage", "priorities", "type", "a", "b", "require_mediaType", "__commonJSMin", "exports", "module", "preferredMediaTypes", "simpleMediaTypeRegExp", "parseAccept", "accept", "accepts", "splitMediaTypes", "i", "j", "mediaType", "parseMediaType", "__name", "str", "match", "params", "q", "subtype", "type", "kvps", "splitParameters", "splitKeyValuePair", "pair", "key", "val", "value", "getMediaTypePriority", "accepted", "index", "priority", "spec", "specify", "p", "s", "keys", "k", "provided", "isQuality", "compareSpecs", "getFullType", "priorities", "a", "b", "quoteCount", "string", "count", "parameters", "require_negotiator", "__commonJSMin", "exports", "module", "preferredCharsets", "preferredEncodings", "preferredLanguages", "preferredMediaTypes", "Negotiator", "request", "__name", "available", "set", "require_db", "__commonJSMin", "exports", "module", "require_mime_db", "__commonJSMin", "exports", "module", "require_mime_types", "__commonJSMin", "exports", "db", "extname", "EXTRACT_TYPE_REGEXP", "TEXT_TYPE_REGEXP", "charset", "contentType", "extension", "lookup", "populateMaps", "type", "match", "mime", "__name", "str", "exts", "path", "extensions", "types", "preference", "i", "from", "to", "require_accepts", "__commonJSMin", "exports", "module", "Negotiator", "mime", "Accepts", "req", "__name", "types_", "types", "i", "mimes", "extToMime", "accepts", "validMime", "first", "encodings_", "encodings", "charsets_", "charsets", "languages_", "languages", "type", "require_content_type", "__commonJSMin", "exports", "PARAM_REGEXP", "TEXT_REGEXP", "TOKEN_REGEXP", "QESC_REGEXP", "QUOTE_REGEXP", "TYPE_REGEXP", "format", "parse", "obj", "parameters", "type", "string", "param", "params", "i", "qstring", "__name", "header", "getcontenttype", "index", "ContentType", "key", "match", "value", "val", "str", "require_parseurl", "__commonJSMin", "exports", "module", "url", "parse", "Url", "parseurl", "originalurl", "req", "parsed", "fresh", "fastparse", "__name", "str", "pathname", "query", "search", "i", "parsedUrl", "require_search_params", "__commonJSMin", "exports", "module", "URLSearchParams", "__name", "obj", "searchParams", "addKey", "k", "v", "params", "val", "key", "value", "lgth", "i", "str", "values", "require_db", "__commonJSMin", "exports", "module", "require_mime_db", "__commonJSMin", "exports", "module", "require_mimeScore", "__commonJSMin", "exports", "module", "FACET_SCORES", "SOURCE_SCORES", "TYPE_SCORES", "__name", "mimeType", "source", "type", "subtype", "facet", "facetScore", "sourceScore", "typeScore", "lengthScore", "require_mime_types", "__commonJSMin", "exports", "db", "extname", "mimeScore", "EXTRACT_TYPE_REGEXP", "TEXT_TYPE_REGEXP", "charset", "contentType", "extension", "lookup", "populateMaps", "type", "match", "mime", "__name", "str", "exts", "path", "extensions", "types", "i", "_preferredType", "legacyType", "_preferredTypeLegacy", "ext", "type0", "type1", "score0", "score1", "SOURCE_RANK", "require_media_typer", "__commonJSMin", "exports", "SUBTYPE_NAME_REGEXP", "TYPE_NAME_REGEXP", "TYPE_REGEXP", "format", "parse", "test", "obj", "subtype", "suffix", "type", "string", "__name", "match", "index", "MediaType", "require_type_is", "__commonJSMin", "exports", "module", "contentType", "mime", "typer", "typeofrequest", "typeis", "hasbody", "normalize", "mimeMatch", "value", "types_", "i", "types", "val", "tryNormalizeType", "type", "__name", "req", "expected", "actual", "actualParts", "expectedParts", "normalizeType", "require_fresh", "__commonJSMin", "exports", "module", "CACHE_CONTROL_NO_CACHE_REGEXP", "fresh", "reqHeaders", "resHeaders", "modifiedSince", "noneMatch", "cacheControl", "etag", "etagStale", "matches", "parseTokenList", "i", "match", "lastModified", "modifiedStale", "parseHttpDate", "__name", "date", "timestamp", "str", "end", "list", "start", "len", "require_only", "__commonJSMin", "exports", "module", "obj", "keys", "ret", "key", "require_request", "__commonJSMin", "exports", "module", "URL", "net", "accepts", "contentType", "stringify", "parse", "sp", "typeis", "fresh", "only", "util", "IP", "val", "path", "url", "str", "c", "obj", "host", "splitCommaSeparatedValues", "originalUrl", "method", "s", "parameters", "len", "proto", "proxy", "ips", "_ip", "offset", "hostname", "args", "type", "types", "field", "req", "value", "limit", "v", "__name", "require_content_disposition", "__commonJSMin", "exports", "module", "contentDisposition", "parse", "basename", "Buffer", "ENCODE_URL_ATTR_CHAR_REGEXP", "HEX_ESCAPE_REGEXP", "HEX_ESCAPE_REPLACE_REGEXP", "NON_LATIN1_REGEXP", "QESC_REGEXP", "QUOTE_REGEXP", "PARAM_REGEXP", "TEXT_REGEXP", "TOKEN_REGEXP", "EXT_VALUE_REGEXP", "DISPOSITION_TYPE_REGEXP", "filename", "options", "opts", "type", "params", "createparams", "format", "ContentDisposition", "__name", "fallback", "name", "isQuotedString", "fallbackName", "getlatin1", "hasFallback", "obj", "parameters", "string", "param", "i", "val", "ustring", "qstring", "decodefield", "str", "match", "charset", "encoded", "value", "binary", "pdecode", "index", "key", "names", "hex", "pencode", "char", "require_escape_html", "__commonJSMin", "exports", "module", "matchHtmlRegExp", "escapeHtml", "string", "str", "match", "escape", "html", "index", "lastIndex", "__name", "require_destroy", "__commonJSMin", "exports", "module", "EventEmitter", "ReadStream", "Stream", "Zlib", "destroy", "stream", "suppress", "isFsReadStream", "destroyReadStream", "isZlibStream", "destroyZlibStream", "hasDestroy", "isEventEmitter", "noop", "__name", "onOpenClose", "closeZlibStream", "prop", "onDrainClearBinding", "val", "require_encodeurl", "__commonJSMin", "exports", "module", "encodeUrl", "ENCODE_CHARS_REGEXP", "UNMATCHED_SURROGATE_PAIR_REGEXP", "UNMATCHED_SURROGATE_PAIR_REPLACE", "url", "__name", "require_vary", "__commonJSMin", "exports", "module", "vary", "append", "FIELD_NAME_REGEXP", "header", "field", "fields", "parse", "j", "val", "vals", "i", "fld", "__name", "end", "list", "start", "len", "res", "require_is_stream", "__commonJSMin", "exports", "module", "Stream", "stream", "require_response", "__commonJSMin", "exports", "module", "assert", "extname", "util", "contentDisposition", "onFinish", "escape", "typeis", "statuses", "destroy", "encodeUrl", "vary", "getType", "isStream", "only", "res", "code", "msg", "val", "original", "cleanupPreviousStream", "__name", "setType", "headers", "key", "n", "body", "field", "url", "alt", "referrer", "filename", "options", "type", "date", "types", "header", "prev", "socket", "o", "require_callsite_tostring", "__commonJSMin", "exports", "module", "callSiteToString", "callSiteFileLocation", "callSite", "fileName", "fileLocation", "lineNumber", "columnNumber", "__name", "addSuffix", "functionName", "isConstructor", "isMethodCall", "line", "methodName", "typeName", "getConstructorName", "obj", "receiver", "require_event_listener_count", "__commonJSMin", "exports", "module", "eventListenerCount", "emitter", "type", "__name", "require_compat", "__commonJSMin", "exports", "module", "EventEmitter", "lazyProperty", "__name", "limit", "obj", "prep", "prepareObjectStackTrace", "stack", "toString", "prop", "getter", "get", "val", "require_depd", "__commonJSMin", "str", "namespace", "vals", "ns", "i", "val", "__name", "obj", "prop", "message", "descriptor", "value", "arity", "stack", "site", "file", "deprecate", "haslisteners", "caller", "callFile", "callSite", "depSite", "seen", "key", "msg", "err", "format", "output", "line", "colm", "funcName", "context", "typeName", "timestamp", "formatted", "limit", "prep", "get", "set", "error", "stackString", "require_codes", "__commonJSMin", "exports", "module", "require_statuses", "__commonJSMin", "exports", "module", "codes", "status", "populateStatusesMap", "statuses", "arr", "__name", "code", "message", "n", "require_http_errors", "__commonJSMin", "exports", "module", "deprecate", "setPrototypeOf", "statuses", "inherits", "toIdentifier", "createError", "createHttpErrorConstructor", "createIsHttpErrorFunction", "populateConstructorExports", "codeClass", "status", "__name", "err", "msg", "props", "i", "arg", "HttpError", "key", "createClientErrorConstructor", "name", "code", "className", "toClassName", "ClientError", "message", "nameFunc", "val", "createServerErrorConstructor", "ServerError", "func", "desc", "codes", "CodeError", "require_keys", "__commonJSMin", "exports", "module", "shim", "obj", "keys", "key", "__name", "require_is_arguments", "__commonJSMin", "exports", "module", "supportsArgumentsClass", "supported", "unsupported", "object", "__name", "require_deep_equal", "__commonJSMin", "exports", "module", "pSlice", "objectKeys", "isArguments", "deepEqual", "actual", "expected", "opts", "objEquiv", "isUndefinedOrNull", "value", "__name", "isBuffer", "x", "a", "b", "key", "ka", "kb", "require_http_assert", "__commonJSMin", "exports", "module", "createError", "eql", "assert", "value", "status", "msg", "opts", "__name", "a", "b", "require_delegates", "__commonJSMin", "exports", "module", "Delegator", "proto", "target", "__name", "name", "val", "require_lib", "__commonJSMin", "exports", "module", "crypto", "bufferEqual", "a", "b", "i", "__name", "timeSafeCompare", "sa", "sb", "key", "ah", "bh", "require_keygrip", "__commonJSMin", "exports", "module", "compare", "crypto", "Keygrip", "keys", "algorithm", "encoding", "sign", "data", "key", "x", "__name", "digest", "i", "l", "require_cookies", "__commonJSMin", "exports", "module", "deprecate", "Keygrip", "http", "fieldContentRegExp", "PRIORITY_REGEXP", "REGEXP_CACHE", "REGEXP_ESCAPE_CHARS_REGEXP", "RESTRICTED_NAME_CHARS_REGEXP", "RESTRICTED_VALUE_CHARS_REGEXP", "SAME_SITE_REGEXP", "Cookies", "request", "response", "options", "__name", "name", "opts", "sigName", "header", "match", "value", "remote", "data", "index", "signed", "getPattern", "res", "req", "headers", "cookie", "Cookie", "secure", "isRequestEncrypted", "pushCookie", "setHeader", "attrs", "val", "i", "keys", "next", "require_context", "__commonJSMin", "exports", "module", "util", "createError", "httpAssert", "delegate", "statuses", "Cookies", "COOKIES", "proto", "args", "err", "headerSent", "res", "name", "statusCode", "code", "msg", "_cookies", "require_application", "__commonJSMin", "exports", "module", "util", "debug", "Emitter", "Stream", "http", "AsyncLocalStorage", "onFinished", "compose", "statuses", "HttpError", "request", "response", "context", "isStream", "only", "Application", "__name", "options", "args", "fn", "req", "res", "ctx", "fnMiddleware", "onerror", "err", "handleResponse", "respond", "msg", "body", "code", "length", "stream", "exports", "prefixesAreUnnecessaryForIsolationSymbol", "PrefixingKeyValueCache", "_PrefixingKeyValueCache", "__name", "wrapped", "prefix", "key", "value", "options", "c", "PrefixesAreUnnecessaryForIsolationCache", "exports", "_a", "defaultPerf", "warned", "PROCESS", "emitWarning", "__name", "msg", "type", "code", "fn", "AC", "AS", "_", "warnACPolyfill", "reason", "printACPolyfillWarning", "shouldWarn", "TYPE", "isPosInt", "n", "getUintArray", "max", "ZeroArray", "size", "Stack", "_Stack", "#constructing", "HeapCls", "s", "LRUCache", "_LRUCache", "#max", "#maxSize", "#dispose", "#onInsert", "#disposeAfter", "#fetchMethod", "#memoMethod", "#perf", "#size", "#calculatedSize", "#keyMap", "#keyList", "#valList", "#next", "#prev", "#head", "#tail", "#free", "#disposed", "#sizes", "#starts", "#ttls", "#autopurgeTimers", "#hasDispose", "#hasFetchMethod", "#hasDisposeAfter", "#hasOnInsert", "c", "p", "#isBackgroundFetch", "k", "index", "options", "context", "#backgroundFetch", "#moveToTail", "#indexes", "#rindexes", "#isStale", "ttl", "ttlResolution", "ttlAutopurge", "updateAgeOnGet", "updateAgeOnHas", "allowStale", "dispose", "onInsert", "disposeAfter", "noDisposeOnSet", "noUpdateTTL", "maxSize", "maxEntrySize", "sizeCalculation", "fetchMethod", "memoMethod", "noDeleteOnFetchRejection", "noDeleteOnStaleGet", "allowStaleOnFetchRejection", "allowStaleOnFetchAbort", "ignoreFetchAbort", "perf", "UintArray", "#initializeSizeTracking", "#initializeTTLTracking", "key", "ttls", "starts", "purgeTimers", "#setItemTTL", "start", "t", "#delete", "#updateItemAge", "#statusTTL", "status", "cachedNow", "getNow", "age", "sizes", "#removeItemSize", "#requireSize", "v", "#addItemSize", "#evict", "_i", "_s", "_st", "_k", "_v", "i", "#isValidIndex", "getOptions", "value", "thisp", "deleted", "entry", "remain", "arr", "setOptions", "oldVal", "oldValue", "dt", "task", "val", "free", "head", "hasOptions", "peekOptions", "ac", "signal", "fetchOpts", "cb", "updateCache", "aborted", "ignoreAbort", "proceed", "fetchFail", "bf", "vl", "eb", "er", "allowStaleAborted", "noDelete", "pcall", "res", "rej", "fmp", "b", "fetchOptions", "forceRefresh", "stale", "isStale", "staleVal", "memoOptions", "vv", "fetching", "#connect", "#clear", "pi", "ni", "exports", "lru_cache_1", "InMemoryLRUCache", "_InMemoryLRUCache", "__name", "lruCacheOpts", "item", "key", "value", "options", "lruOptions", "exports", "ErrorsAreMissesCache", "__name", "cache", "logger", "key", "e", "value", "opts", "exports", "PrefixingKeyValueCache_1", "exports", "__name", "InMemoryLRUCache_1", "ErrorsAreMissesCache_1", "require_version", "__commonJSMin", "exports", "version", "versionInfo", "require_devAssert", "__commonJSMin", "exports", "devAssert", "condition", "message", "__name", "require_isPromise", "__commonJSMin", "exports", "isPromise", "value", "__name", "require_isObjectLike", "__commonJSMin", "exports", "isObjectLike", "value", "__name", "require_invariant", "__commonJSMin", "exports", "invariant", "condition", "message", "__name", "require_location", "__commonJSMin", "exports", "getLocation", "_invariant", "LineRegExp", "source", "position", "lastLineStart", "line", "match", "__name", "require_printLocation", "__commonJSMin", "exports", "printLocation", "printSourceLocation", "_location", "location", "__name", "source", "sourceLocation", "firstLineColumnOffset", "body", "lineIndex", "lineOffset", "lineNum", "columnOffset", "columnNum", "locationStr", "lines", "locationLine", "subLineIndex", "subLineColumnNum", "subLines", "i", "printPrefixedLines", "subLine", "existingLines", "_", "line", "padLen", "prefix", "require_GraphQLError", "__commonJSMin", "exports", "formatError", "printError", "_isObjectLike", "_location", "_printLocation", "toNormalizedOptions", "args", "firstArg", "__name", "GraphQLError", "_GraphQLError", "message", "rawArgs", "_this$nodes", "_nodeLocations$", "_ref", "nodes", "source", "positions", "path", "originalError", "extensions", "undefinedIfEmpty", "nodeLocations", "node", "loc", "pos", "originalExtensions", "output", "location", "formattedError", "array", "error", "require_syntaxError", "__commonJSMin", "exports", "syntaxError", "_GraphQLError", "source", "position", "description", "__name", "require_ast", "__commonJSMin", "exports", "isNode", "Location", "__name", "startToken", "endToken", "source", "Token", "kind", "start", "end", "line", "column", "value", "QueryDocumentKeys", "kindValues", "maybeNode", "maybeKind", "OperationTypeNode", "require_directiveLocation", "__commonJSMin", "exports", "DirectiveLocation", "require_kinds", "__commonJSMin", "exports", "Kind", "require_characterClasses", "__commonJSMin", "exports", "isDigit", "isLetter", "isNameContinue", "isNameStart", "isWhiteSpace", "code", "__name", "require_blockString", "__commonJSMin", "exports", "dedentBlockStringLines", "isPrintableAsBlockString", "printBlockString", "_characterClasses", "lines", "_firstNonEmptyLine2", "commonIndent", "firstNonEmptyLine", "lastNonEmptyLine", "i", "_firstNonEmptyLine", "line", "indent", "leadingWhitespace", "__name", "str", "value", "isEmptyLine", "hasIndent", "hasCommonIndent", "seenNonEmptyLine", "options", "escapedValue", "isSingleLine", "forceLeadingNewLine", "hasTrailingTripleQuotes", "hasTrailingQuote", "hasTrailingSlash", "forceTrailingNewline", "printAsMultipleLines", "result", "skipLeadingNewLine", "require_tokenKind", "__commonJSMin", "exports", "TokenKind", "require_lexer", "__commonJSMin", "exports", "createToken", "isPunctuatorTokenKind", "printCodePointAt", "readName", "_syntaxError", "_ast", "_blockString", "_characterClasses", "_tokenKind", "Lexer", "__name", "source", "startOfFileToken", "token", "nextToken", "readNextToken", "kind", "isUnicodeScalarValue", "code", "isSupplementaryCodePoint", "body", "location", "isLeadingSurrogate", "isTrailingSurrogate", "lexer", "char", "start", "end", "value", "line", "col", "bodyLength", "position", "readComment", "readBlockString", "readString", "readNumber", "firstCode", "isFloat", "readDigits", "chunkStart", "escape", "readEscapedUnicodeVariableWidth", "readEscapedUnicodeFixedWidth", "readEscapedCharacter", "point", "size", "readHexDigit", "read16BitHexCode", "trailingCode", "lineStart", "currentLine", "blockLines", "require_schemaCoordinateLexer", "__commonJSMin", "exports", "_syntaxError", "_ast", "_characterClasses", "_lexer", "_tokenKind", "SchemaCoordinateLexer", "__name", "source", "startOfFileToken", "token", "nextToken", "readNextToken", "lexer", "start", "body", "bodyLength", "position", "code", "require_inspect", "__commonJSMin", "exports", "inspect", "MAX_ARRAY_LENGTH", "MAX_RECURSIVE_DEPTH", "value", "formatValue", "__name", "seenValues", "formatObjectValue", "previouslySeenValues", "isJSONable", "jsonValue", "formatArray", "formatObject", "object", "entries", "getObjectTag", "key", "array", "len", "remaining", "items", "i", "tag", "name", "require_instanceOf", "__commonJSMin", "exports", "_inspect", "isProduction", "instanceOf", "__name", "value", "constructor", "_value$constructor", "className", "valueClassName", "stringifiedValue", "require_source", "__commonJSMin", "exports", "isSource", "_devAssert", "_inspect", "_instanceOf", "Source", "__name", "body", "name", "locationOffset", "source", "require_parser", "__commonJSMin", "exports", "parse", "parseConstValue", "parseSchemaCoordinate", "parseType", "parseValue", "_syntaxError", "_ast", "_directiveLocation", "_kinds", "_lexer", "_schemaCoordinateLexer", "_source", "_tokenKind", "source", "options", "parser", "Parser", "document", "__name", "value", "type", "sourceObj", "lexer", "coordinate", "_options", "token", "hasDescription", "keywordToken", "start", "description", "operation", "name", "operationToken", "nameOrAlias", "alias", "isConst", "item", "hasTypeCondition", "varName", "directives", "innerType", "operationTypes", "interfaces", "fields", "args", "defaultValue", "types", "values", "getTokenDesc", "repeatable", "locations", "ofDirective", "memberName", "argumentName", "startToken", "node", "kind", "getTokenKindDesc", "atToken", "openKind", "parseFn", "closeKind", "nodes", "delimiterKind", "maxTokens", "require_didYouMean", "__commonJSMin", "exports", "didYouMean", "MAX_SUGGESTIONS", "firstArg", "secondArg", "subMessage", "suggestionsArg", "message", "suggestions", "x", "selected", "lastItem", "__name", "require_identityFunc", "__commonJSMin", "exports", "identityFunc", "x", "__name", "require_keyMap", "__commonJSMin", "exports", "keyMap", "list", "keyFn", "result", "item", "__name", "require_keyValMap", "__commonJSMin", "exports", "keyValMap", "list", "keyFn", "valFn", "result", "item", "__name", "require_mapValue", "__commonJSMin", "exports", "mapValue", "map", "fn", "result", "key", "__name", "require_naturalCompare", "__commonJSMin", "exports", "naturalCompare", "aStr", "bStr", "aIndex", "bIndex", "aChar", "bChar", "isDigit", "aNum", "DIGIT_0", "bNum", "__name", "DIGIT_9", "code", "require_suggestionList", "__commonJSMin", "exports", "suggestionList", "_naturalCompare", "input", "options", "optionsByDistance", "lexicalDistance", "LexicalDistance", "threshold", "option", "distance", "a", "b", "distanceDiff", "__name", "stringToArray", "optionLowerCase", "tmp", "aLength", "bLength", "rows", "j", "i", "upRow", "currentRow", "smallestCell", "cost", "currentCell", "doubleDiagonalCell", "str", "strLength", "array", "require_toObjMap", "__commonJSMin", "exports", "toObjMap", "obj", "map", "key", "value", "__name", "require_printString", "__commonJSMin", "exports", "printString", "str", "escapedRegExp", "escapedReplacer", "__name", "escapeSequences", "require_visitor", "__commonJSMin", "exports", "getEnterLeaveForKind", "getVisitFn", "visit", "visitInParallel", "_devAssert", "_inspect", "_ast", "_kinds", "BREAK", "root", "visitor", "visitorKeys", "enterLeaveMap", "kind", "stack", "inArray", "keys", "index", "edits", "node", "key", "parent", "path", "ancestors", "isLeaving", "isEdited", "editOffset", "editKey", "editValue", "arrayKey", "result", "_enterLeaveMap$get", "_enterLeaveMap$get2", "visitFn", "_node$kind", "__name", "visitors", "skipping", "mergedVisitor", "hasVisitor", "enterList", "leaveList", "i", "enter", "leave", "mergedEnterLeave", "args", "_enterList$i", "_leaveList$i", "kindVisitor", "require_printer", "__commonJSMin", "exports", "print", "_blockString", "_printString", "_visitor", "ast", "printDocASTReducer", "__name", "MAX_LINE_LENGTH", "node", "join", "varDefs", "hasMultilineItems", "wrap", "prefix", "variable", "type", "defaultValue", "directives", "description", "selections", "block", "alias", "name", "args", "selectionSet", "argsLine", "indent", "value", "typeCondition", "variableDefinitions", "isBlockString", "values", "fields", "operationTypes", "operation", "interfaces", "types", "repeatable", "locations", "memberName", "fieldName", "argumentName", "maybeArray", "separator", "_maybeArray$filter$jo", "x", "array", "start", "maybeString", "end", "str", "_maybeArray$some", "require_valueFromASTUntyped", "__commonJSMin", "exports", "valueFromASTUntyped", "_keyValMap", "_kinds", "valueNode", "variables", "node", "field", "__name", "require_assertName", "__commonJSMin", "exports", "assertEnumValueName", "assertName", "_devAssert", "_GraphQLError", "_characterClasses", "name", "i", "__name", "require_definition", "__commonJSMin", "exports", "argsToArgsConfig", "assertAbstractType", "assertCompositeType", "assertEnumType", "assertInputObjectType", "assertInputType", "assertInterfaceType", "assertLeafType", "assertListType", "assertNamedType", "assertNonNullType", "assertNullableType", "assertObjectType", "assertOutputType", "assertScalarType", "assertType", "assertUnionType", "assertWrappingType", "defineArguments", "getNamedType", "getNullableType", "isAbstractType", "isCompositeType", "isEnumType", "isInputObjectType", "isInputType", "isInterfaceType", "isLeafType", "isListType", "isNamedType", "isNonNullType", "isNullableType", "isObjectType", "isOutputType", "isRequiredArgument", "isRequiredInputField", "isScalarType", "isType", "isUnionType", "isWrappingType", "resolveObjMapThunk", "resolveReadonlyArrayThunk", "_devAssert", "_didYouMean", "_identityFunc", "_inspect", "_instanceOf", "_isObjectLike", "_keyMap", "_keyValMap", "_mapValue", "_suggestionList", "_toObjMap", "_GraphQLError", "_kinds", "_printer", "_valueFromASTUntyped", "_assertName", "type", "__name", "GraphQLScalarType", "GraphQLObjectType", "GraphQLInterfaceType", "GraphQLUnionType", "GraphQLEnumType", "GraphQLInputObjectType", "GraphQLList", "GraphQLNonNull", "ofType", "unwrappedType", "thunk", "config", "_config$parseValue", "_config$serialize", "_config$parseLiteral", "_config$extensionASTN", "parseValue", "node", "variables", "_config$extensionASTN2", "defineFieldMap", "defineInterfaces", "fieldsToFieldsConfig", "_config$interfaces", "interfaces", "fieldMap", "isPlainObj", "fieldConfig", "fieldName", "_fieldConfig$args", "argsConfig", "argName", "argConfig", "obj", "fields", "field", "args", "arg", "_config$extensionASTN3", "_config$extensionASTN4", "defineTypes", "types", "_config$extensionASTN5", "defineEnumValues", "name", "value", "outputValue", "enumValue", "inputValue", "valueStr", "didYouMeanEnumValue", "valueNode", "_variables", "values", "enumType", "unknownValueStr", "allNames", "suggestedValues", "typeName", "valueMap", "valueName", "valueConfig", "_config$extensionASTN6", "_config$isOneOf", "defineInputFieldMap", "require_typeComparators", "__commonJSMin", "exports", "doTypesOverlap", "isEqualType", "isTypeSubTypeOf", "_definition", "typeA", "typeB", "__name", "schema", "maybeSubType", "superType", "type", "require_scalars", "__commonJSMin", "exports", "isSpecifiedScalarType", "_inspect", "_isObjectLike", "_GraphQLError", "_kinds", "_printer", "_definition", "GRAPHQL_MAX_INT", "GRAPHQL_MIN_INT", "GraphQLInt", "outputValue", "coercedValue", "serializeObject", "num", "inputValue", "valueNode", "GraphQLFloat", "GraphQLString", "GraphQLBoolean", "GraphQLID", "specifiedScalarTypes", "type", "name", "__name", "valueOfResult", "require_directives", "__commonJSMin", "exports", "assertDirective", "isDirective", "isSpecifiedDirective", "_devAssert", "_inspect", "_instanceOf", "_isObjectLike", "_toObjMap", "_directiveLocation", "_assertName", "_definition", "_scalars", "directive", "GraphQLDirective", "__name", "config", "_config$isRepeatable", "_config$args", "args", "GraphQLIncludeDirective", "GraphQLSkipDirective", "DEFAULT_DEPRECATION_REASON", "GraphQLDeprecatedDirective", "GraphQLSpecifiedByDirective", "GraphQLOneOfDirective", "specifiedDirectives", "name", "require_isIterableObject", "__commonJSMin", "exports", "isIterableObject", "maybeIterable", "__name", "require_astFromValue", "__commonJSMin", "exports", "astFromValue", "_inspect", "_invariant", "_isIterableObject", "_isObjectLike", "_kinds", "_definition", "_scalars", "value", "type", "astValue", "itemType", "valuesNodes", "item", "itemNode", "fieldNodes", "field", "fieldValue", "serialized", "stringNum", "integerStringRegExp", "__name", "require_introspection", "__commonJSMin", "exports", "isIntrospectionType", "_inspect", "_invariant", "_directiveLocation", "_printer", "_astFromValue", "_definition", "_scalars", "__Schema", "__name", "schema", "__Type", "__Directive", "directive", "__DirectiveLocation", "__InputValue", "field", "includeDeprecated", "arg", "__TypeKind", "type", "TypeKind", "obj", "__Field", "fields", "_args", "_context", "__EnumValue", "values", "inputValue", "defaultValue", "valueAST", "enumValue", "SchemaMetaFieldDef", "_source", "TypeMetaFieldDef", "name", "TypeNameMetaFieldDef", "parentType", "introspectionTypes", "require_schema", "__commonJSMin", "exports", "assertSchema", "isSchema", "_devAssert", "_inspect", "_instanceOf", "_isObjectLike", "_toObjMap", "_ast", "_definition", "_directives", "_introspection", "schema", "GraphQLSchema", "__name", "config", "_config$extensionASTN", "_config$directives", "allReferencedTypes", "type", "collectReferencedTypes", "directive", "arg", "namedType", "typeName", "iface", "implementations", "operation", "name", "abstractType", "interfaceType", "maybeSubType", "map", "typeSet", "memberType", "field", "require_validate", "__commonJSMin", "exports", "assertValidSchema", "validateSchema", "_inspect", "_GraphQLError", "_ast", "_typeComparators", "_definition", "_directives", "_introspection", "_schema", "schema", "context", "SchemaValidationContext", "validateRootTypes", "validateDirectives", "validateTypes", "errors", "__name", "error", "message", "nodes", "_nodes", "queryType", "_getOperationTypeNode", "getOperationTypeNode", "mutationType", "_getOperationTypeNode2", "subscriptionType", "_getOperationTypeNode3", "operation", "_flatMap$find", "schemaNode", "_schemaNode$operation", "operationNode", "directive", "validateName", "arg", "_arg$astNode", "getDeprecatedDirectiveNode", "node", "validateInputObjectCircularRefs", "createInputObjectCircularRefsValidator", "typeMap", "type", "validateFields", "validateInterfaces", "validateUnionMembers", "validateEnumValues", "validateInputFields", "fields", "field", "_field$astNode", "argName", "_arg$astNode2", "_arg$astNode3", "ifaceTypeNames", "iface", "getAllImplementsInterfaceNodes", "validateTypeImplementsAncestors", "validateTypeImplementsInterface", "typeFieldMap", "ifaceField", "fieldName", "typeField", "_ifaceField$astNode", "_typeField$astNode", "ifaceArg", "typeArg", "_ifaceArg$astNode", "_typeArg$astNode", "ifaceInterfaces", "transitive", "union", "memberTypes", "includedTypeNames", "memberType", "getUnionMemberTypeNodes", "enumType", "enumValues", "enumValue", "inputObj", "_field$astNode2", "_field$astNode3", "validateOneOfInputObjectField", "_field$astNode4", "visitedTypes", "fieldPath", "fieldPathIndexByTypeName", "detectCycleRecursive", "fieldType", "cycleIndex", "cyclePath", "pathStr", "fieldObj", "astNode", "extensionASTNodes", "typeNode", "_typeNode$interfaces", "ifaceNode", "typeName", "unionNode", "_unionNode$types", "definitionNode", "_definitionNode$direc", "require_typeFromAST", "__commonJSMin", "exports", "typeFromAST", "_kinds", "_definition", "schema", "typeNode", "innerType", "__name", "require_TypeInfo", "__commonJSMin", "exports", "visitWithTypeInfo", "_ast", "_kinds", "_visitor", "_definition", "_introspection", "_typeFromAST", "TypeInfo", "__name", "schema", "initialType", "getFieldDefFn", "getFieldDef", "node", "namedType", "parentType", "fieldDef", "fieldType", "rootType", "typeConditionAST", "outputType", "inputType", "_this$getDirective", "argDef", "argType", "fieldOrDirective", "arg", "listType", "itemType", "objectType", "inputFieldType", "inputField", "enumType", "enumValue", "fieldNode", "name", "typeInfo", "visitor", "args", "fn", "result", "require_predicates", "__commonJSMin", "exports", "isConstValueNode", "isDefinitionNode", "isExecutableDefinitionNode", "isSchemaCoordinateNode", "isSelectionNode", "isTypeDefinitionNode", "isTypeExtensionNode", "isTypeNode", "isTypeSystemDefinitionNode", "isTypeSystemExtensionNode", "isValueNode", "_kinds", "node", "__name", "field", "require_ExecutableDefinitionsRule", "__commonJSMin", "exports", "ExecutableDefinitionsRule", "_GraphQLError", "_kinds", "_predicates", "context", "node", "definition", "defName", "__name", "require_FieldsOnCorrectTypeRule", "__commonJSMin", "exports", "FieldsOnCorrectTypeRule", "_didYouMean", "_naturalCompare", "_suggestionList", "_GraphQLError", "_definition", "context", "node", "type", "schema", "fieldName", "suggestion", "getSuggestedTypeNames", "getSuggestedFieldNames", "__name", "suggestedTypes", "usageCount", "possibleType", "possibleInterface", "_usageCount$possibleI", "typeA", "typeB", "usageCountDiff", "x", "possibleFieldNames", "require_FragmentsOnCompositeTypesRule", "__commonJSMin", "exports", "FragmentsOnCompositeTypesRule", "_GraphQLError", "_printer", "_definition", "_typeFromAST", "context", "node", "typeCondition", "type", "typeStr", "__name", "require_KnownArgumentNamesRule", "__commonJSMin", "exports", "KnownArgumentNamesOnDirectivesRule", "KnownArgumentNamesRule", "_didYouMean", "_suggestionList", "_GraphQLError", "_kinds", "_directives", "context", "argNode", "argDef", "fieldDef", "parentType", "argName", "knownArgsNames", "arg", "suggestions", "__name", "directiveArgs", "schema", "definedDirectives", "directive", "astDefinitions", "def", "_def$arguments", "argsNodes", "directiveNode", "directiveName", "knownArgs", "require_KnownDirectivesRule", "__commonJSMin", "exports", "KnownDirectivesRule", "_inspect", "_invariant", "_GraphQLError", "_ast", "_directiveLocation", "_kinds", "_directives", "context", "locationsMap", "schema", "definedDirectives", "directive", "astDefinitions", "def", "name", "node", "_key", "_parent", "_path", "ancestors", "locations", "candidateLocation", "getDirectiveLocationForASTPath", "__name", "appliedTo", "getDirectiveLocationForOperation", "parentNode", "operation", "require_KnownFragmentNamesRule", "__commonJSMin", "exports", "KnownFragmentNamesRule", "_GraphQLError", "context", "node", "fragmentName", "__name", "require_KnownTypeNamesRule", "__commonJSMin", "exports", "KnownTypeNamesRule", "_didYouMean", "_suggestionList", "_GraphQLError", "_predicates", "_introspection", "_scalars", "context", "schema", "existingTypesMap", "definedTypes", "def", "typeNames", "node", "_1", "parent", "_2", "ancestors", "typeName", "_ancestors$", "definitionNode", "isSDL", "isSDLNode", "standardTypeNames", "suggestedTypes", "__name", "type", "value", "require_LoneAnonymousOperationRule", "__commonJSMin", "exports", "LoneAnonymousOperationRule", "_GraphQLError", "_kinds", "context", "operationCount", "node", "definition", "__name", "require_LoneSchemaDefinitionRule", "__commonJSMin", "exports", "LoneSchemaDefinitionRule", "_GraphQLError", "context", "_ref", "_ref2", "_oldSchema$astNode", "oldSchema", "alreadyDefined", "schemaDefinitionsCount", "node", "__name", "require_MaxIntrospectionDepthRule", "__commonJSMin", "exports", "MaxIntrospectionDepthRule", "_GraphQLError", "_kinds", "MAX_LISTS_DEPTH", "context", "checkDepth", "node", "visitedFragments", "depth", "fragmentName", "fragment", "child", "__name", "require_NoFragmentCyclesRule", "__commonJSMin", "exports", "NoFragmentCyclesRule", "_GraphQLError", "context", "visitedFrags", "spreadPath", "spreadPathIndexByName", "__name", "node", "detectCycleRecursive", "fragment", "fragmentName", "spreadNodes", "spreadNode", "spreadName", "cycleIndex", "spreadFragment", "cyclePath", "viaPath", "s", "require_NoUndefinedVariablesRule", "__commonJSMin", "exports", "NoUndefinedVariablesRule", "_GraphQLError", "context", "variableNameDefined", "operation", "usages", "node", "varName", "__name", "require_NoUnusedFragmentsRule", "__commonJSMin", "exports", "NoUnusedFragmentsRule", "_GraphQLError", "context", "operationDefs", "fragmentDefs", "node", "fragmentNameUsed", "operation", "fragment", "fragmentDef", "fragName", "__name", "require_NoUnusedVariablesRule", "__commonJSMin", "exports", "NoUnusedVariablesRule", "_GraphQLError", "context", "variableDefs", "operation", "variableNameUsed", "usages", "node", "variableDef", "variableName", "def", "__name", "require_sortValueNode", "__commonJSMin", "exports", "sortValueNode", "_naturalCompare", "_kinds", "valueNode", "sortFields", "__name", "fields", "fieldNode", "fieldA", "fieldB", "require_OverlappingFieldsCanBeMergedRule", "__commonJSMin", "exports", "OverlappingFieldsCanBeMergedRule", "_inspect", "_GraphQLError", "_kinds", "_printer", "_definition", "_sortValueNode", "_typeFromAST", "reasonMessage", "reason", "responseName", "subReason", "__name", "context", "comparedFieldsAndFragmentPairs", "OrderedPairSet", "comparedFragmentPairs", "PairSet", "cachedFieldsAndFragmentNames", "selectionSet", "conflicts", "findConflictsWithinSelectionSet", "fields1", "fields2", "reasonMsg", "parentType", "fieldMap", "fragmentNames", "getFieldsAndFragmentNames", "collectConflictsWithin", "i", "collectConflictsBetweenFieldsAndFragment", "j", "collectConflictsBetweenFragments", "areMutuallyExclusive", "fragmentName", "fragment", "fieldMap2", "referencedFragmentNames", "getReferencedFieldsAndFragmentNames", "collectConflictsBetween", "referencedFragmentName", "fragmentName1", "fragmentName2", "fragment1", "fragment2", "fieldMap1", "referencedFragmentNames1", "referencedFragmentNames2", "referencedFragmentName2", "referencedFragmentName1", "findConflictsBetweenSubSelectionSets", "parentType1", "selectionSet1", "parentType2", "selectionSet2", "fragmentNames1", "fragmentNames2", "fields", "conflict", "findConflict", "parentFieldsAreMutuallyExclusive", "field1", "field2", "node1", "def1", "node2", "def2", "name1", "name2", "sameArguments", "type1", "type2", "doTypesConflict", "subfieldConflicts", "args1", "args2", "values2", "name", "value", "arg1", "value1", "value2", "stringifyValue", "cached", "nodeAndDefs", "_collectFieldsAndFragmentNames", "result", "fragmentType", "selection", "fieldName", "fieldDef", "typeCondition", "inlineFragmentType", "a", "b", "weaklyPresent", "_this$_data$get", "map", "require_PossibleFragmentSpreadsRule", "__commonJSMin", "exports", "PossibleFragmentSpreadsRule", "_inspect", "_GraphQLError", "_definition", "_typeComparators", "_typeFromAST", "context", "node", "fragType", "parentType", "parentTypeStr", "fragTypeStr", "fragName", "getFragmentType", "__name", "name", "frag", "type", "require_PossibleTypeExtensionsRule", "__commonJSMin", "exports", "PossibleTypeExtensionsRule", "_didYouMean", "_inspect", "_invariant", "_suggestionList", "_GraphQLError", "_kinds", "_predicates", "_definition", "context", "schema", "definedTypes", "def", "checkExtension", "node", "typeName", "defNode", "existingType", "expectedKind", "defKindToExtKind", "typeToExtKind", "kindStr", "extensionKindToTypeName", "allTypeNames", "suggestedTypes", "__name", "type", "kind", "require_ProvidedRequiredArgumentsRule", "__commonJSMin", "exports", "ProvidedRequiredArgumentsOnDirectivesRule", "ProvidedRequiredArgumentsRule", "_inspect", "_keyMap", "_GraphQLError", "_kinds", "_printer", "_definition", "_directives", "context", "fieldNode", "_fieldNode$arguments", "fieldDef", "providedArgs", "arg", "argDef", "argTypeStr", "__name", "_schema$getDirectives", "requiredArgsMap", "schema", "definedDirectives", "directive", "astDefinitions", "def", "_def$arguments", "argNodes", "isRequiredArgumentNode", "directiveNode", "directiveName", "requiredArgs", "_directiveNode$argume", "argNodeMap", "argName", "argType", "require_ScalarLeafsRule", "__commonJSMin", "exports", "ScalarLeafsRule", "_inspect", "_GraphQLError", "_definition", "context", "node", "type", "selectionSet", "fieldName", "typeStr", "__name", "require_printPathArray", "__commonJSMin", "exports", "printPathArray", "path", "key", "__name", "require_Path", "__commonJSMin", "exports", "addPath", "pathToArray", "prev", "key", "typename", "__name", "path", "flattened", "curr", "require_coerceInputValue", "__commonJSMin", "exports", "coerceInputValue", "_didYouMean", "_inspect", "_invariant", "_isIterableObject", "_isObjectLike", "_Path", "_printPathArray", "_suggestionList", "_GraphQLError", "_definition", "inputValue", "type", "onError", "defaultOnError", "coerceInputValueImpl", "__name", "path", "invalidValue", "error", "errorPrefix", "itemType", "itemValue", "index", "itemPath", "coercedValue", "fieldDefs", "field", "fieldValue", "typeStr", "fieldName", "suggestions", "keys", "key", "value", "parseResult", "require_valueFromAST", "__commonJSMin", "exports", "valueFromAST", "_inspect", "_invariant", "_keyMap", "_kinds", "_definition", "valueNode", "type", "variables", "variableName", "variableValue", "itemType", "coercedValues", "itemNode", "isMissingVariable", "itemValue", "coercedValue", "coercedObj", "fieldNodes", "field", "fieldNode", "fieldValue", "keys", "result", "__name", "require_values", "__commonJSMin", "exports", "getArgumentValues", "getDirectiveValues", "getVariableValues", "_inspect", "_keyMap", "_printPathArray", "_GraphQLError", "_kinds", "_printer", "_definition", "_coerceInputValue", "_typeFromAST", "_valueFromAST", "schema", "varDefNodes", "inputs", "options", "errors", "maxErrors", "coerced", "coerceVariableValues", "error", "__name", "onError", "coercedValues", "varDefNode", "varName", "varType", "varTypeStr", "hasOwnProperty", "value", "path", "invalidValue", "prefix", "def", "node", "variableValues", "_node$arguments", "argumentNodes", "argNodeMap", "arg", "argDef", "name", "argType", "argumentNode", "valueNode", "isNull", "variableName", "coercedValue", "directiveDef", "_node$directives", "directiveNode", "directive", "obj", "prop", "require_collectFields", "__commonJSMin", "exports", "collectFields", "collectSubfields", "_kinds", "_definition", "_directives", "_typeFromAST", "_values", "schema", "fragments", "variableValues", "runtimeType", "selectionSet", "fields", "collectFieldsImpl", "__name", "returnType", "fieldNodes", "subFieldNodes", "visitedFragmentNames", "node", "selection", "shouldIncludeNode", "name", "getFieldEntryKey", "fieldList", "doesFragmentConditionMatch", "fragName", "fragment", "skip", "include", "type", "typeConditionNode", "conditionalType", "require_SingleFieldSubscriptionsRule", "__commonJSMin", "exports", "SingleFieldSubscriptionsRule", "_GraphQLError", "_kinds", "_collectFields", "context", "node", "schema", "subscriptionType", "operationName", "variableValues", "document", "fragments", "definition", "fields", "extraFieldSelections", "fieldNodes", "__name", "require_groupBy", "__commonJSMin", "exports", "groupBy", "list", "keyFn", "result", "item", "key", "group", "__name", "require_UniqueArgumentDefinitionNamesRule", "__commonJSMin", "exports", "UniqueArgumentDefinitionNamesRule", "_groupBy", "_GraphQLError", "context", "directiveNode", "_directiveNode$argume", "argumentNodes", "checkArgUniqueness", "checkArgUniquenessPerField", "typeNode", "_typeNode$fields", "typeName", "fieldNodes", "fieldDef", "_fieldDef$arguments", "fieldName", "parentName", "seenArgs", "arg", "argName", "argNodes", "node", "__name", "require_UniqueArgumentNamesRule", "__commonJSMin", "exports", "UniqueArgumentNamesRule", "_groupBy", "_GraphQLError", "context", "checkArgUniqueness", "parentNode", "_parentNode$arguments", "argumentNodes", "seenArgs", "arg", "argName", "argNodes", "node", "__name", "require_UniqueDirectiveNamesRule", "__commonJSMin", "exports", "UniqueDirectiveNamesRule", "_GraphQLError", "context", "knownDirectiveNames", "schema", "node", "directiveName", "__name", "require_UniqueDirectivesPerLocationRule", "__commonJSMin", "exports", "UniqueDirectivesPerLocationRule", "_GraphQLError", "_kinds", "_predicates", "_directives", "context", "uniqueDirectiveMap", "schema", "definedDirectives", "directive", "astDefinitions", "def", "schemaDirectives", "typeDirectivesMap", "node", "seenDirectives", "typeName", "directiveName", "__name", "require_UniqueEnumValueNamesRule", "__commonJSMin", "exports", "UniqueEnumValueNamesRule", "_GraphQLError", "_definition", "context", "schema", "existingTypeMap", "knownValueNames", "checkValueUniqueness", "node", "_node$values", "typeName", "valueNodes", "valueNames", "valueDef", "valueName", "existingType", "__name", "require_UniqueFieldDefinitionNamesRule", "__commonJSMin", "exports", "UniqueFieldDefinitionNamesRule", "_GraphQLError", "_definition", "context", "schema", "existingTypeMap", "knownFieldNames", "checkFieldUniqueness", "node", "_node$fields", "typeName", "fieldNodes", "fieldNames", "fieldDef", "fieldName", "hasField", "__name", "type", "require_UniqueFragmentNamesRule", "__commonJSMin", "exports", "UniqueFragmentNamesRule", "_GraphQLError", "context", "knownFragmentNames", "__name", "node", "fragmentName", "require_UniqueInputFieldNamesRule", "__commonJSMin", "exports", "UniqueInputFieldNamesRule", "_invariant", "_GraphQLError", "context", "knownNameStack", "knownNames", "prevKnownNames", "node", "fieldName", "__name", "require_UniqueOperationNamesRule", "__commonJSMin", "exports", "UniqueOperationNamesRule", "_GraphQLError", "context", "knownOperationNames", "node", "operationName", "__name", "require_UniqueOperationTypesRule", "__commonJSMin", "exports", "UniqueOperationTypesRule", "_GraphQLError", "context", "schema", "definedOperationTypes", "existingOperationTypes", "checkOperationTypes", "node", "_node$operationTypes", "operationTypesNodes", "operationType", "operation", "alreadyDefinedOperationType", "__name", "require_UniqueTypeNamesRule", "__commonJSMin", "exports", "UniqueTypeNamesRule", "_GraphQLError", "context", "knownTypeNames", "schema", "checkTypeName", "node", "typeName", "__name", "require_UniqueVariableNamesRule", "__commonJSMin", "exports", "UniqueVariableNamesRule", "_groupBy", "_GraphQLError", "context", "operationNode", "_operationNode$variab", "variableDefinitions", "seenVariableDefinitions", "node", "variableName", "variableNodes", "__name", "require_ValuesOfCorrectTypeRule", "__commonJSMin", "exports", "ValuesOfCorrectTypeRule", "_didYouMean", "_inspect", "_keyMap", "_suggestionList", "_GraphQLError", "_kinds", "_printer", "_definition", "context", "variableDefinitions", "definition", "node", "type", "isValidValueNode", "fieldNodeMap", "field", "fieldDef", "typeStr", "validateOneOfInputObject", "parentType", "suggestions", "__name", "locationType", "error", "_fieldNodeMap$keys$", "keys", "value", "require_VariablesAreInputTypesRule", "__commonJSMin", "exports", "VariablesAreInputTypesRule", "_GraphQLError", "_printer", "_definition", "_typeFromAST", "context", "node", "type", "variableName", "typeName", "__name", "require_VariablesInAllowedPositionRule", "__commonJSMin", "exports", "VariablesInAllowedPositionRule", "_inspect", "_GraphQLError", "_kinds", "_definition", "_typeComparators", "_typeFromAST", "context", "varDefMap", "operation", "usages", "node", "type", "defaultValue", "parentType", "varName", "varDef", "schema", "varType", "allowedVariableUsage", "varTypeStr", "typeStr", "__name", "varDefaultValue", "locationType", "locationDefaultValue", "nullableLocationType", "require_specifiedRules", "__commonJSMin", "exports", "_ExecutableDefinitionsRule", "_FieldsOnCorrectTypeRule", "_FragmentsOnCompositeTypesRule", "_KnownArgumentNamesRule", "_KnownDirectivesRule", "_KnownFragmentNamesRule", "_KnownTypeNamesRule", "_LoneAnonymousOperationRule", "_LoneSchemaDefinitionRule", "_MaxIntrospectionDepthRule", "_NoFragmentCyclesRule", "_NoUndefinedVariablesRule", "_NoUnusedFragmentsRule", "_NoUnusedVariablesRule", "_OverlappingFieldsCanBeMergedRule", "_PossibleFragmentSpreadsRule", "_PossibleTypeExtensionsRule", "_ProvidedRequiredArgumentsRule", "_ScalarLeafsRule", "_SingleFieldSubscriptionsRule", "_UniqueArgumentDefinitionNamesRule", "_UniqueArgumentNamesRule", "_UniqueDirectiveNamesRule", "_UniqueDirectivesPerLocationRule", "_UniqueEnumValueNamesRule", "_UniqueFieldDefinitionNamesRule", "_UniqueFragmentNamesRule", "_UniqueInputFieldNamesRule", "_UniqueOperationNamesRule", "_UniqueOperationTypesRule", "_UniqueTypeNamesRule", "_UniqueVariableNamesRule", "_ValuesOfCorrectTypeRule", "_VariablesAreInputTypesRule", "_VariablesInAllowedPositionRule", "recommendedRules", "specifiedRules", "specifiedSDLRules", "require_ValidationContext", "__commonJSMin", "exports", "_kinds", "_visitor", "_TypeInfo", "ASTValidationContext", "__name", "ast", "onError", "error", "name", "fragments", "defNode", "node", "spreads", "setsToVisit", "set", "selection", "operation", "collectedNames", "nodesToVisit", "spread", "fragName", "fragment", "SDLValidationContext", "schema", "ValidationContext", "typeInfo", "usages", "newUsages", "variable", "frag", "require_validate", "__commonJSMin", "exports", "assertValidSDL", "assertValidSDLExtension", "validate", "validateSDL", "_devAssert", "_GraphQLError", "_visitor", "_validate", "_TypeInfo", "_specifiedRules", "_ValidationContext", "schema", "documentAST", "rules", "options", "typeInfo", "_options$maxErrors", "maxErrors", "abortObj", "errors", "context", "error", "visitor", "rule", "e", "__name", "schemaToExtend", "visitors", "require_memoize3", "__commonJSMin", "exports", "memoize3", "fn", "cache0", "__name", "a1", "a2", "a3", "cache1", "cache2", "fnResult", "require_promiseForObject", "__commonJSMin", "exports", "promiseForObject", "object", "resolvedValues", "resolvedObject", "key", "__name", "require_promiseReduce", "__commonJSMin", "exports", "promiseReduce", "_isPromise", "values", "callbackFn", "initialValue", "accumulator", "value", "resolved", "__name", "require_toError", "__commonJSMin", "exports", "toError", "_inspect", "thrownValue", "NonErrorThrown", "__name", "require_locatedError", "__commonJSMin", "exports", "locatedError", "_toError", "_GraphQLError", "rawOriginalError", "nodes", "path", "_nodes", "originalError", "isLocatedGraphQLError", "__name", "error", "require_execute", "__commonJSMin", "exports", "assertValidExecutionArguments", "buildExecutionContext", "buildResolveInfo", "execute", "executeSync", "getFieldDef", "_devAssert", "_inspect", "_invariant", "_isIterableObject", "_isObjectLike", "_isPromise", "_memoize", "_Path", "_promiseForObject", "_promiseReduce", "_GraphQLError", "_locatedError", "_ast", "_kinds", "_definition", "_introspection", "_validate", "_collectFields", "_values", "collectSubfields", "exeContext", "returnType", "fieldNodes", "args", "schema", "document", "variableValues", "rootValue", "operation", "result", "executeOperation", "data", "buildResponse", "error", "__name", "errors", "rawVariableValues", "_definition$name", "_operation$variableDe", "_options$maxCoercionE", "contextValue", "operationName", "fieldResolver", "typeResolver", "subscribeFieldResolver", "options", "fragments", "definition", "variableDefinitions", "coercedVariableValues", "defaultFieldResolver", "defaultTypeResolver", "rootType", "rootFields", "path", "executeFields", "executeFieldsSerially", "parentType", "sourceValue", "fields", "results", "responseName", "fieldPath", "executeField", "resolvedResult", "containsPromise", "source", "_fieldDef$resolve", "fieldDef", "resolveFn", "info", "completed", "resolved", "completeValue", "rawError", "handleFieldError", "completeListValue", "completeLeafValue", "completeAbstractValue", "completeObjectValue", "itemType", "completedResults", "item", "index", "itemPath", "completedItem", "serializedResult", "_returnType$resolveTy", "resolveTypeFn", "runtimeType", "resolvedRuntimeType", "ensureValidRuntimeType", "runtimeTypeName", "subFieldNodes", "isTypeOf", "resolvedIsTypeOf", "invalidReturnTypeError", "value", "abstractType", "possibleTypes", "promisedIsTypeOfResults", "i", "type", "isTypeOfResult", "isTypeOfResults", "property", "fieldNode", "fieldName", "require_graphql", "__commonJSMin", "exports", "graphql", "graphqlSync", "_devAssert", "_isPromise", "_parser", "_validate", "_validate2", "_execute", "args", "resolve", "graphqlImpl", "__name", "result", "schema", "source", "rootValue", "contextValue", "variableValues", "operationName", "fieldResolver", "typeResolver", "schemaValidationErrors", "document", "syntaxError", "validationErrors", "require_type", "__commonJSMin", "exports", "__name", "_directives", "_scalars", "_definition", "_schema", "_introspection", "_assertName", "_validate", "require_language", "__commonJSMin", "exports", "__name", "_visitor", "_directiveLocation", "_kinds", "_lexer", "_ast", "_source", "_tokenKind", "_location", "_predicates", "_parser", "_printer", "_printLocation", "require_isAsyncIterable", "__commonJSMin", "exports", "isAsyncIterable", "maybeAsyncIterable", "__name", "require_mapAsyncIterator", "__commonJSMin", "exports", "mapAsyncIterator", "iterable", "callback", "iterator", "mapResult", "result", "error", "__name", "require_subscribe", "__commonJSMin", "exports", "createSourceEventStream", "subscribe", "_devAssert", "_inspect", "_isAsyncIterable", "_Path", "_GraphQLError", "_locatedError", "_collectFields", "_execute", "_mapAsyncIterator", "_values", "args", "resultOrStream", "mapSourceToResponse", "__name", "payload", "toNormalizedArgs", "firstArg", "rawArgs", "schema", "document", "variableValues", "exeContext", "eventStream", "executeSubscription", "error", "fragments", "operation", "rootValue", "rootType", "rootFields", "responseName", "fieldNodes", "fieldDef", "fieldName", "path", "info", "_fieldDef$subscribe", "contextValue", "require_execution", "__commonJSMin", "exports", "__name", "_subscribe", "_execute", "_values", "_Path", "require_NoDeprecatedCustomRule", "__commonJSMin", "exports", "NoDeprecatedCustomRule", "_invariant", "_GraphQLError", "_definition", "context", "node", "fieldDef", "deprecationReason", "parentType", "argDef", "directiveDef", "inputObjectDef", "inputFieldDef", "enumValueDef", "enumTypeDef", "__name", "require_NoSchemaIntrospectionCustomRule", "__commonJSMin", "exports", "NoSchemaIntrospectionCustomRule", "_GraphQLError", "_definition", "_introspection", "context", "node", "type", "__name", "require_validation", "__commonJSMin", "exports", "__name", "_ExecutableDefinitionsRule", "_FieldsOnCorrectTypeRule", "_FragmentsOnCompositeTypesRule", "_KnownArgumentNamesRule", "_KnownDirectivesRule", "_KnownFragmentNamesRule", "_KnownTypeNamesRule", "_LoneAnonymousOperationRule", "_LoneSchemaDefinitionRule", "_MaxIntrospectionDepthRule", "_NoDeprecatedCustomRule", "_NoFragmentCyclesRule", "_NoSchemaIntrospectionCustomRule", "_NoUndefinedVariablesRule", "_NoUnusedFragmentsRule", "_NoUnusedVariablesRule", "_OverlappingFieldsCanBeMergedRule", "_PossibleFragmentSpreadsRule", "_PossibleTypeExtensionsRule", "_ProvidedRequiredArgumentsRule", "_ScalarLeafsRule", "_SingleFieldSubscriptionsRule", "_UniqueArgumentDefinitionNamesRule", "_UniqueArgumentNamesRule", "_UniqueDirectiveNamesRule", "_UniqueDirectivesPerLocationRule", "_UniqueEnumValueNamesRule", "_UniqueFieldDefinitionNamesRule", "_UniqueFragmentNamesRule", "_UniqueInputFieldNamesRule", "_UniqueOperationNamesRule", "_UniqueOperationTypesRule", "_UniqueTypeNamesRule", "_UniqueVariableNamesRule", "_ValidationContext", "_ValuesOfCorrectTypeRule", "_VariablesAreInputTypesRule", "_VariablesInAllowedPositionRule", "_specifiedRules", "_validate", "require_error", "__commonJSMin", "exports", "__name", "_GraphQLError", "_locatedError", "_syntaxError", "require_getIntrospectionQuery", "__commonJSMin", "exports", "getIntrospectionQuery", "options", "optionsWithDefault", "descriptions", "specifiedByUrl", "directiveIsRepeatable", "schemaDescription", "inputDeprecation", "str", "__name", "oneOf", "require_getOperationAST", "__commonJSMin", "exports", "getOperationAST", "_kinds", "documentAST", "operationName", "operation", "definition", "_definition$name", "__name", "require_getOperationRootType", "__commonJSMin", "exports", "getOperationRootType", "_GraphQLError", "schema", "operation", "queryType", "mutationType", "subscriptionType", "__name", "require_introspectionFromSchema", "__commonJSMin", "exports", "introspectionFromSchema", "_invariant", "_parser", "_execute", "_getIntrospectionQuery", "schema", "options", "optionsWithDefaults", "document", "result", "__name", "require_buildClientSchema", "__commonJSMin", "exports", "buildClientSchema", "_devAssert", "_inspect", "_isObjectLike", "_keyValMap", "_parser", "_definition", "_directives", "_introspection", "_scalars", "_schema", "_valueFromAST", "introspection", "options", "schemaIntrospection", "typeMap", "typeIntrospection", "buildType", "stdType", "queryType", "getObjectType", "mutationType", "subscriptionType", "directives", "buildDirective", "getType", "typeRef", "itemRef", "nullableRef", "nullableType", "getNamedType", "typeName", "type", "getInterfaceType", "buildScalarDef", "buildObjectDef", "buildInterfaceDef", "buildUnionDef", "buildEnumDef", "buildInputObjectDef", "typeStr", "scalarIntrospection", "buildImplementationsList", "implementingIntrospection", "implementingIntrospectionStr", "objectIntrospection", "__name", "buildFieldDefMap", "interfaceIntrospection", "unionIntrospection", "unionIntrospectionStr", "enumIntrospection", "enumIntrospectionStr", "valueIntrospection", "inputObjectIntrospection", "inputObjectIntrospectionStr", "buildInputValueDefMap", "fieldIntrospection", "buildField", "fieldIntrospectionStr", "inputValueIntrospections", "inputValue", "buildInputValue", "inputValueIntrospection", "defaultValue", "directiveIntrospection", "directiveIntrospectionStr", "require_extendSchema", "__commonJSMin", "exports", "extendSchema", "extendSchemaImpl", "_devAssert", "_inspect", "_invariant", "_keyMap", "_mapValue", "_kinds", "_predicates", "_definition", "_directives", "_introspection", "_scalars", "_schema", "_validate", "_values", "_valueFromAST", "schema", "documentAST", "options", "schemaConfig", "extendedConfig", "__name", "_schemaDef", "_schemaDef$descriptio", "_schemaDef2", "_options$assumeValid", "typeDefs", "typeExtensionsMap", "directiveDefs", "schemaDef", "schemaExtensions", "def", "extendedTypeName", "existingTypeExtensions", "typeMap", "existingType", "extendNamedType", "typeNode", "_stdTypeMap$name", "name", "stdTypeMap", "buildType", "operationTypes", "replaceNamedType", "getOperationTypes", "replaceDirective", "buildDirective", "replaceType", "type", "directive", "config", "extendArg", "extendScalarType", "extendObjectType", "extendInterfaceType", "extendUnionType", "extendEnumType", "extendInputObjectType", "_typeExtensionsMap$co", "extensions", "field", "buildInputFieldMap", "_typeExtensionsMap$ty", "buildEnumValueMap", "_typeExtensionsMap$co2", "specifiedByURL", "extensionNode", "_getSpecifiedByURL", "getSpecifiedByURL", "_typeExtensionsMap$co3", "buildInterfaces", "extendField", "buildFieldMap", "_typeExtensionsMap$co4", "_typeExtensionsMap$co5", "buildUnionTypes", "arg", "nodes", "opTypes", "node", "_node$operationTypes", "operationTypesNodes", "operationType", "getNamedType", "_stdTypeMap$name2", "getWrappedType", "_node$description", "value", "buildArgumentMap", "fieldConfigMap", "_node$fields", "nodeFields", "_field$description", "getDeprecationReason", "args", "argsNodes", "argConfigMap", "_arg$description", "inputFieldMap", "_node$fields2", "fieldsNodes", "_field$description2", "enumValueMap", "_node$values", "valuesNodes", "_value$description", "_node$interfaces$map", "_node$interfaces", "_node$types$map", "_node$types", "astNode", "_typeExtensionsMap$na", "extensionASTNodes", "_astNode$description", "allNodes", "_astNode$description2", "_astNode$description3", "_astNode$description4", "_astNode$description5", "_astNode$description6", "isOneOf", "deprecated", "specifiedBy", "require_buildASTSchema", "__commonJSMin", "exports", "buildASTSchema", "buildSchema", "_devAssert", "_kinds", "_parser", "_directives", "_schema", "_validate", "_extendSchema", "documentAST", "options", "emptySchemaConfig", "config", "type", "directives", "stdDirective", "directive", "__name", "source", "document", "require_lexicographicSortSchema", "__commonJSMin", "exports", "lexicographicSortSchema", "_inspect", "_invariant", "_keyValMap", "_naturalCompare", "_definition", "_directives", "_introspection", "_schema", "schema", "schemaConfig", "typeMap", "sortByName", "type", "sortNamedType", "sortDirective", "replaceMaybeType", "replaceType", "replaceNamedType", "maybeType", "directive", "config", "sortBy", "x", "sortArgs", "args", "sortObjMap", "arg", "sortFields", "fieldsMap", "field", "sortInputFields", "sortTypes", "array", "__name", "value", "map", "sortValueFn", "sortedMap", "key", "obj", "mapToKey", "obj1", "obj2", "key1", "key2", "require_printSchema", "__commonJSMin", "exports", "printIntrospectionSchema", "printSchema", "printType", "_inspect", "_invariant", "_blockString", "_kinds", "_printer", "_definition", "_directives", "_introspection", "_scalars", "_astFromValue", "schema", "printFilteredSchema", "n", "isDefinedType", "__name", "type", "directiveFilter", "typeFilter", "directives", "types", "printSchemaDefinition", "directive", "printDirective", "isSchemaOfCommonNames", "operationTypes", "queryType", "mutationType", "subscriptionType", "printDescription", "printScalar", "printObject", "printInterface", "printUnion", "printEnum", "printInputObject", "printSpecifiedByURL", "printImplementedInterfaces", "interfaces", "i", "printFields", "possibleTypes", "values", "value", "printDeprecated", "printBlock", "fields", "f", "printInputValue", "printArgs", "items", "args", "indentation", "arg", "defaultAST", "argDecl", "reason", "scalar", "def", "firstInBlock", "description", "blockString", "require_concatAST", "__commonJSMin", "exports", "concatAST", "_kinds", "documents", "definitions", "doc", "__name", "require_separateOperations", "__commonJSMin", "exports", "separateOperations", "_kinds", "_visitor", "documentAST", "operations", "depGraph", "definitionNode", "collectDependencies", "separatedDocumentASTs", "operation", "dependencies", "fragmentName", "collectTransitiveDependencies", "operationName", "node", "__name", "collected", "fromName", "immediateDeps", "toName", "selectionSet", "require_stripIgnoredCharacters", "__commonJSMin", "exports", "stripIgnoredCharacters", "_blockString", "_lexer", "_source", "_tokenKind", "source", "sourceObj", "body", "lexer", "strippedBody", "wasLastAddedTokenNonPunctuator", "currentToken", "tokenKind", "isNonPunctuator", "tokenBody", "__name", "require_assertValidName", "__commonJSMin", "exports", "assertValidName", "isValidNameError", "_devAssert", "_GraphQLError", "_assertName", "name", "error", "__name", "require_findBreakingChanges", "__commonJSMin", "exports", "findBreakingChanges", "findDangerousChanges", "_inspect", "_invariant", "_keyMap", "_printer", "_definition", "_scalars", "_astFromValue", "_sortValueNode", "BreakingChangeType", "DangerousChangeType", "oldSchema", "newSchema", "findSchemaChanges", "change", "__name", "findTypeChanges", "findDirectiveChanges", "schemaChanges", "directivesDiff", "diff", "oldDirective", "newDirective", "argsDiff", "newArg", "oldArg", "location", "typesDiff", "oldType", "newType", "findEnumTypeChanges", "findUnionTypeChanges", "findInputObjectTypeChanges", "findFieldChanges", "findImplementedInterfacesChanges", "typeKindName", "fieldsDiff", "newField", "oldField", "isChangeSafeForInputObjectFieldOrFieldArg", "possibleTypesDiff", "newPossibleType", "oldPossibleType", "valuesDiff", "newValue", "oldValue", "interfacesDiff", "newInterface", "oldInterface", "findArgChanges", "isChangeSafeForObjectOrInterfaceField", "oldValueStr", "stringifyValue", "newValueStr", "type", "value", "ast", "oldArray", "newArray", "added", "removed", "persisted", "oldMap", "name", "newMap", "oldItem", "newItem", "require_resolveSchemaCoordinate", "__commonJSMin", "exports", "resolveASTSchemaCoordinate", "resolveSchemaCoordinate", "_inspect", "_kinds", "_parser", "_definition", "schema", "schemaCoordinate", "__name", "resolveTypeCoordinate", "typeName", "type", "resolveMemberCoordinate", "enumValueName", "enumValue", "inputFieldName", "inputField", "fieldName", "field", "resolveArgumentCoordinate", "fieldArgumentName", "fieldArgument", "arg", "resolveDirectiveCoordinate", "directiveName", "directive", "resolveDirectiveArgumentCoordinate", "directiveArgumentName", "directiveArgument", "require_utilities", "__commonJSMin", "exports", "__name", "_findBreakingChanges", "_TypeInfo", "_assertValidName", "_astFromValue", "_buildASTSchema", "_buildClientSchema", "_coerceInputValue", "_concatAST", "_typeComparators", "_extendSchema", "_getIntrospectionQuery", "_getOperationAST", "_getOperationRootType", "_introspectionFromSchema", "_lexicographicSortSchema", "_printSchema", "_resolveSchemaCoordinate", "_separateOperations", "_stripIgnoredCharacters", "_typeFromAST", "_valueFromAST", "_valueFromASTUntyped", "require_graphql", "__commonJSMin", "exports", "__name", "_index2", "_index6", "_index", "_index4", "_index5", "_index3", "_graphql", "_version", "require_loglevel", "__commonJSMin", "exports", "module", "root", "definition", "noop", "__name", "undefinedType", "isIE", "logMethods", "_loggersByName", "defaultLogger", "bindMethod", "obj", "methodName", "method", "traceForIE", "realMethod", "replaceLoggingMethods", "level", "i", "enableLoggingWhenConsoleArrives", "defaultMethodFactory", "_level", "_loggerName", "Logger", "name", "factory", "self", "inheritedLevel", "defaultLevel", "userLevel", "storageKey", "persistLevelIfPossible", "levelNum", "levelName", "getPersistedLevel", "storedLevel", "cookie", "cookieName", "location", "clearPersistedLevel", "normalizeLevel", "input", "persist", "childName", "initialLevel", "logger", "_log", "require_charset", "__commonJSMin", "exports", "module", "preferredCharsets", "simpleCharsetRegExp", "parseAcceptCharset", "accept", "accepts", "i", "j", "charset", "parseCharset", "__name", "str", "match", "q", "params", "p", "getCharsetPriority", "accepted", "index", "priority", "spec", "specify", "s", "provided", "isQuality", "compareSpecs", "getFullCharset", "priorities", "type", "a", "b", "require_encoding", "__commonJSMin", "exports", "module", "preferredEncodings", "simpleEncodingRegExp", "parseAcceptEncoding", "accept", "accepts", "hasIdentity", "minQuality", "i", "j", "encoding", "parseEncoding", "specify", "__name", "str", "match", "q", "params", "p", "getEncodingPriority", "accepted", "index", "priority", "spec", "s", "provided", "preferred", "comparator", "a", "b", "aPreferred", "bPreferred", "compareSpecs", "isQuality", "getFullEncoding", "priorities", "type", "require_language", "__commonJSMin", "exports", "module", "preferredLanguages", "simpleLanguageRegExp", "parseAcceptLanguage", "accept", "accepts", "i", "j", "language", "parseLanguage", "__name", "str", "match", "prefix", "suffix", "full", "q", "params", "p", "getLanguagePriority", "accepted", "index", "priority", "spec", "specify", "s", "provided", "isQuality", "compareSpecs", "getFullLanguage", "priorities", "type", "a", "b", "require_mediaType", "__commonJSMin", "exports", "module", "preferredMediaTypes", "simpleMediaTypeRegExp", "parseAccept", "accept", "accepts", "splitMediaTypes", "i", "j", "mediaType", "parseMediaType", "__name", "str", "match", "params", "q", "subtype", "type", "kvps", "splitParameters", "splitKeyValuePair", "pair", "key", "val", "value", "getMediaTypePriority", "accepted", "index", "priority", "spec", "specify", "p", "s", "keys", "k", "provided", "isQuality", "compareSpecs", "getFullType", "priorities", "a", "b", "quoteCount", "string", "count", "parameters", "require_negotiator", "__commonJSMin", "exports", "module", "preferredCharsets", "preferredEncodings", "preferredLanguages", "preferredMediaTypes", "Negotiator", "request", "__name", "available", "set", "opts", "options", "newCachePolicy", "hint", "init_cachePolicy", "__esmMin", "__name", "require_isarray", "__commonJSMin", "exports", "module", "toString", "arr", "require_type", "__commonJSMin", "exports", "module", "require_es_object_atoms", "__commonJSMin", "exports", "module", "require_es_errors", "__commonJSMin", "exports", "module", "require_eval", "__commonJSMin", "exports", "module", "require_range", "__commonJSMin", "exports", "module", "require_ref", "__commonJSMin", "exports", "module", "require_syntax", "__commonJSMin", "exports", "module", "require_uri", "__commonJSMin", "exports", "module", "require_abs", "__commonJSMin", "exports", "module", "require_floor", "__commonJSMin", "exports", "module", "require_max", "__commonJSMin", "exports", "module", "require_min", "__commonJSMin", "exports", "module", "require_pow", "__commonJSMin", "exports", "module", "require_round", "__commonJSMin", "exports", "module", "require_isNaN", "__commonJSMin", "exports", "module", "__name", "a", "require_sign", "__commonJSMin", "exports", "module", "$isNaN", "__name", "number", "require_gOPD", "__commonJSMin", "exports", "module", "require_gopd", "__commonJSMin", "exports", "module", "$gOPD", "require_es_define_property", "__commonJSMin", "exports", "module", "$defineProperty", "require_shams", "__commonJSMin", "exports", "module", "__name", "obj", "sym", "symObj", "symVal", "_", "syms", "descriptor", "require_has_symbols", "__commonJSMin", "exports", "module", "origSymbol", "hasSymbolSham", "__name", "require_Reflect_getPrototypeOf", "__commonJSMin", "exports", "module", "require_Object_getPrototypeOf", "__commonJSMin", "exports", "module", "$Object", "require_implementation", "__commonJSMin", "exports", "module", "ERROR_MESSAGE", "toStr", "max", "funcType", "concatty", "__name", "a", "b", "arr", "i", "j", "slicy", "arrLike", "offset", "joiny", "joiner", "str", "that", "target", "args", "bound", "binder", "result", "boundLength", "boundArgs", "Empty", "require_function_bind", "__commonJSMin", "exports", "module", "implementation", "require_functionCall", "__commonJSMin", "exports", "module", "require_functionApply", "__commonJSMin", "exports", "module", "require_reflectApply", "__commonJSMin", "exports", "module", "require_actualApply", "__commonJSMin", "exports", "module", "bind", "$apply", "$call", "$reflectApply", "require_call_bind_apply_helpers", "__commonJSMin", "exports", "module", "bind", "$TypeError", "$call", "$actualApply", "__name", "args", "require_get", "__commonJSMin", "exports", "module", "callBind", "gOPD", "hasProtoAccessor", "e", "desc", "$Object", "$getPrototypeOf", "__name", "value", "require_get_proto", "__commonJSMin", "exports", "module", "reflectGetProto", "originalGetProto", "getDunderProto", "__name", "O", "require_hasown", "__commonJSMin", "exports", "module", "call", "$hasOwn", "bind", "require_get_intrinsic", "__commonJSMin", "exports", "module", "undefined", "$Object", "$Error", "$EvalError", "$RangeError", "$ReferenceError", "$SyntaxError", "$TypeError", "$URIError", "abs", "floor", "max", "min", "pow", "round", "sign", "$Function", "getEvalledConstructor", "__name", "expressionSyntax", "$gOPD", "$defineProperty", "throwTypeError", "ThrowTypeError", "hasSymbols", "getProto", "$ObjectGPO", "$ReflectGPO", "$apply", "$call", "needsEval", "TypedArray", "INTRINSICS", "e", "errorProto", "doEval", "name", "value", "fn", "gen", "LEGACY_ALIASES", "bind", "hasOwn", "$concat", "$spliceApply", "$replace", "$strSlice", "$exec", "rePropName", "reEscapeChar", "stringToPath", "string", "first", "last", "result", "match", "number", "quote", "subString", "getBaseIntrinsic", "allowMissing", "intrinsicName", "alias", "parts", "intrinsicBaseName", "intrinsic", "intrinsicRealName", "skipFurtherCaching", "i", "isOwn", "part", "desc", "require_call_bound", "__commonJSMin", "exports", "module", "GetIntrinsic", "callBindBasic", "$indexOf", "__name", "name", "allowMissing", "intrinsic", "require_is_callable", "__commonJSMin", "exports", "module", "fnToStr", "reflectApply", "badArrayLike", "isCallableMarker", "__name", "_", "constructorRegex", "isES6ClassFn", "value", "fnStr", "tryFunctionObject", "toStr", "objectClass", "fnClass", "genClass", "ddaClass", "ddaClass2", "ddaClass3", "hasToStringTag", "isIE68", "isDDA", "all", "str", "e", "strClass", "require_for_each", "__commonJSMin", "exports", "module", "isCallable", "toStr", "hasOwnProperty", "forEachArray", "__name", "array", "iterator", "receiver", "i", "len", "forEachString", "string", "forEachObject", "object", "k", "isArray", "x", "list", "thisArg", "require_possible_typed_array_names", "__commonJSMin", "exports", "module", "require_available_typed_arrays", "__commonJSMin", "exports", "module", "possibleNames", "g", "__name", "out", "i", "require_define_data_property", "__commonJSMin", "exports", "module", "$defineProperty", "$SyntaxError", "$TypeError", "gopd", "__name", "obj", "property", "value", "nonEnumerable", "nonWritable", "nonConfigurable", "loose", "desc", "require_has_property_descriptors", "__commonJSMin", "exports", "module", "$defineProperty", "hasPropertyDescriptors", "__name", "require_set_function_length", "__commonJSMin", "exports", "module", "GetIntrinsic", "define", "hasDescriptors", "gOPD", "$TypeError", "$floor", "__name", "fn", "length", "loose", "functionLengthIsConfigurable", "functionLengthIsWritable", "desc", "require_applyBind", "__commonJSMin", "exports", "module", "bind", "$apply", "actualApply", "__name", "require_call_bind", "__commonJSMin", "exports", "module", "setFunctionLength", "$defineProperty", "callBindBasic", "applyBind", "__name", "originalFunction", "func", "adjustedLength", "require_shams", "__commonJSMin", "exports", "module", "hasSymbols", "__name", "require_which_typed_array", "__commonJSMin", "exports", "module", "forEach", "availableTypedArrays", "callBind", "callBound", "gOPD", "getProto", "$toString", "hasToStringTag", "g", "typedArrays", "$slice", "$indexOf", "__name", "array", "value", "cache", "typedArray", "arr", "proto", "descriptor", "superProto", "fn", "tryTypedArrays", "found", "getter", "trySlices", "name", "tag", "require_is_typed_array", "__commonJSMin", "exports", "module", "whichTypedArray", "__name", "value", "require_typed_array_buffer", "__commonJSMin", "exports", "module", "$TypeError", "callBound", "$typedArrayBuffer", "isTypedArray", "__name", "x", "require_to_buffer", "__commonJSMin", "exports", "module", "Buffer", "isArray", "typedArrayBuffer", "isView", "__name", "obj", "useUint8Array", "useArrayBuffer", "useFromArrayBuffer", "data", "encoding", "res", "uint8", "result", "isArr", "i", "x", "require_hash", "__commonJSMin", "exports", "module", "Buffer", "toBuffer", "Hash", "blockSize", "finalSize", "__name", "data", "enc", "block", "length", "accum", "offset", "assigned", "remainder", "i", "rem", "bits", "lowBits", "highBits", "hash", "require_sha", "__commonJSMin", "exports", "module", "inherits", "Hash", "Buffer", "K", "W", "Sha", "__name", "rotl5", "num", "rotl30", "ft", "s", "b", "c", "d", "M", "w", "a", "e", "i", "j", "t", "H", "require_sha1", "__commonJSMin", "exports", "module", "inherits", "Hash", "Buffer", "K", "W", "Sha1", "__name", "rotl1", "num", "rotl5", "rotl30", "ft", "s", "b", "c", "d", "M", "w", "a", "e", "i", "j", "t", "H", "require_sha256", "__commonJSMin", "exports", "module", "inherits", "Hash", "Buffer", "K", "W", "Sha256", "__name", "ch", "x", "y", "z", "maj", "sigma0", "sigma1", "gamma0", "gamma1", "M", "w", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "T1", "T2", "H", "require_sha224", "__commonJSMin", "exports", "module", "inherits", "Sha256", "Hash", "Buffer", "W", "Sha224", "__name", "H", "require_sha512", "__commonJSMin", "exports", "module", "inherits", "Hash", "Buffer", "K", "W", "Sha512", "__name", "Ch", "x", "y", "z", "maj", "sigma0", "xl", "sigma1", "Gamma0", "Gamma0l", "Gamma1", "Gamma1l", "getCarry", "a", "b", "M", "w", "ah", "bh", "ch", "dh", "eh", "fh", "gh", "hh", "al", "bl", "cl", "dl", "el", "fl", "gl", "hl", "i", "xh", "gamma0", "gamma0l", "gamma1", "gamma1l", "Wi7h", "Wi7l", "Wi16h", "Wi16l", "Wil", "Wih", "j", "majh", "majl", "sigma0h", "sigma0l", "sigma1h", "sigma1l", "Kih", "Kil", "chh", "chl", "t1l", "t1h", "t2l", "t2h", "H", "writeInt64BE", "h", "l", "offset", "require_sha384", "__commonJSMin", "exports", "module", "inherits", "SHA512", "Hash", "Buffer", "W", "Sha384", "__name", "H", "writeInt64BE", "h", "l", "offset", "require_sha", "__commonJSMin", "exports", "module", "__name", "algorithm", "alg", "Algorithm", "utils_isnodelike_1", "createHash", "kind", "module", "__name", "exports", "pluginIsInternal", "plugin", "init_internalPlugin", "__esmMin", "__name", "require_utils", "__commonJSMin", "exports", "string", "char", "l", "input", "position", "value", "quoteOrBackslash", "require_mime_type_parameters", "__commonJSMin", "exports", "module", "asciiLowercase", "solelyContainsHTTPTokenCodePoints", "soleyContainsHTTPQuotedStringTokenCodePoints", "__name", "map", "name", "value", "callbackFn", "thisArg", "require_parser", "__commonJSMin", "exports", "module", "removeLeadingAndTrailingHTTPWhitespace", "removeTrailingHTTPWhitespace", "isHTTPWhitespaceChar", "solelyContainsHTTPTokenCodePoints", "soleyContainsHTTPQuotedStringTokenCodePoints", "asciiLowercase", "collectAnHTTPQuotedString", "input", "position", "type", "subtype", "mimeType", "parameterName", "parameterValue", "require_serializer", "__commonJSMin", "exports", "module", "solelyContainsHTTPTokenCodePoints", "mimeType", "serialization", "name", "value", "require_mime_type", "__commonJSMin", "exports", "module", "MIMETypeParameters", "parse", "serialize", "asciiLowercase", "solelyContainsHTTPTokenCodePoints", "__name", "string", "result", "value", "prohibitParameters", "UnreachableCaseError", "init_UnreachableCaseError", "__esmMin", "__name", "val", "computeCoreSchemaHash", "schema", "import_utils", "init_computeCoreSchemaHash", "__esmMin", "__name", "defaultPerf", "warned", "PROCESS", "emitWarning", "AC", "AS", "shouldWarn", "TYPE", "isPosInt", "getUintArray", "ZeroArray", "Stack", "LRUCache", "init_esm", "__esmMin", "__name", "msg", "type", "code", "fn", "_", "warnACPolyfill", "reason", "printACPolyfillWarning", "n", "max", "size", "_Stack", "#constructing", "HeapCls", "s", "_LRUCache", "#max", "#maxSize", "#dispose", "#onInsert", "#disposeAfter", "#fetchMethod", "#memoMethod", "#perf", "#size", "#calculatedSize", "#keyMap", "#keyList", "#valList", "#next", "#prev", "#head", "#tail", "#free", "#disposed", "#sizes", "#starts", "#ttls", "#autopurgeTimers", "#hasDispose", "#hasFetchMethod", "#hasDisposeAfter", "#hasOnInsert", "c", "p", "#isBackgroundFetch", "k", "index", "options", "context", "#backgroundFetch", "#moveToTail", "#indexes", "#rindexes", "#isStale", "ttl", "ttlResolution", "ttlAutopurge", "updateAgeOnGet", "updateAgeOnHas", "allowStale", "dispose", "onInsert", "disposeAfter", "noDisposeOnSet", "noUpdateTTL", "maxSize", "maxEntrySize", "sizeCalculation", "fetchMethod", "memoMethod", "noDeleteOnFetchRejection", "noDeleteOnStaleGet", "allowStaleOnFetchRejection", "allowStaleOnFetchAbort", "ignoreFetchAbort", "perf", "UintArray", "#initializeSizeTracking", "#initializeTTLTracking", "key", "ttls", "starts", "purgeTimers", "#setItemTTL", "start", "t", "#delete", "#updateItemAge", "#statusTTL", "status", "cachedNow", "getNow", "age", "sizes", "#removeItemSize", "#requireSize", "v", "#addItemSize", "#evict", "_i", "_s", "_st", "_k", "_v", "i", "#isValidIndex", "getOptions", "value", "thisp", "deleted", "entry", "remain", "arr", "setOptions", "oldVal", "oldValue", "dt", "task", "val", "free", "head", "hasOptions", "peekOptions", "ac", "signal", "fetchOpts", "cb", "updateCache", "aborted", "ignoreAbort", "proceed", "fetchFail", "bf", "vl", "eb", "er", "allowStaleAborted", "noDelete", "pcall", "res", "rej", "fmp", "b", "fetchOptions", "forceRefresh", "stale", "isStale", "staleVal", "memoOptions", "vv", "fetching", "#connect", "#clear", "pi", "ni", "cacheControl_exports", "__export", "ApolloServerPluginCacheControl", "options", "typeAnnotationCache", "fieldAnnotationCache", "schema", "LRUCache", "t", "requestContext", "memoizedCacheAnnotationFromType", "existing", "annotation", "cacheAnnotationFromType", "__name", "memoizedCacheAnnotationFromField", "field", "cacheAnnotationFromField", "defaultMaxAge", "calculateHttpHeaders", "__testing__cacheHints", "isRestricted", "fakeFieldPolicy", "newCachePolicy", "info", "dynamicHint", "fieldPolicy", "inheritMaxAge", "targetType", "typeAnnotation", "fieldAnnotation", "path", "response", "overallCachePolicy", "existingCacheControlHeader", "parseExistingCacheControlHeader", "cachePolicy", "policyIfCacheable", "CACHE_CONTROL_HEADER_UNCACHEABLE", "header", "match", "CACHE_CONTROL_HEADER_CACHEABLE_REGEXP", "cacheAnnotationFromDirectives", "directives", "cacheControlDirective", "directive", "maxAgeArgument", "argument", "scopeArgument", "inheritMaxAgeArgument", "scopeString", "scope", "hint", "node", "import_graphql", "init_cacheControl", "__esmMin", "init_cachePolicy", "init_internalPlugin", "init_esm", "require_aspromise", "__commonJSMin", "exports", "module", "asPromise", "fn", "ctx", "params", "offset", "index", "pending", "__name", "resolve", "reject", "err", "require_base64", "__commonJSMin", "exports", "base64", "__name", "string", "p", "n", "b64", "s64", "i", "buffer", "start", "end", "parts", "chunk", "j", "t", "b", "invalidEncoding", "offset", "require_eventemitter", "__commonJSMin", "exports", "module", "EventEmitter", "__name", "evt", "fn", "ctx", "listeners", "i", "args", "require_float", "__commonJSMin", "exports", "module", "factory", "f32", "f8b", "le", "writeFloat_f32_cpy", "val", "buf", "pos", "__name", "writeFloat_f32_rev", "readFloat_f32_cpy", "readFloat_f32_rev", "writeFloat_ieee754", "writeUint", "sign", "exponent", "mantissa", "writeUintLE", "writeUintBE", "readFloat_ieee754", "readUint", "uint", "readUintLE", "readUintBE", "f64", "writeDouble_f64_cpy", "writeDouble_f64_rev", "readDouble_f64_cpy", "readDouble_f64_rev", "writeDouble_ieee754", "off0", "off1", "readDouble_ieee754", "lo", "hi", "require_inquire", "__commonJSMin", "e", "__name", "require_utf8", "__commonJSMin", "exports", "utf8", "__name", "string", "len", "c", "i", "buffer", "start", "end", "parts", "chunk", "t", "offset", "c1", "c2", "require_pool", "__commonJSMin", "exports", "module", "pool", "alloc", "slice", "size", "SIZE", "MAX", "slab", "offset", "__name", "buf", "require_longbits", "__commonJSMin", "exports", "module", "LongBits", "util", "lo", "hi", "__name", "zero", "zeroHash", "value", "sign", "unsigned", "charCodeAt", "hash", "mask", "part0", "part1", "part2", "require_minimal", "__commonJSMin", "exports", "util", "__name", "value", "obj", "prop", "Buffer", "sizeOrArray", "hash", "unsigned", "bits", "merge", "dst", "src", "ifNotSet", "keys", "i", "str", "newError", "name", "CustomError", "message", "properties", "fieldNames", "fieldMap", "encoding", "size", "require_writer", "__commonJSMin", "exports", "module", "Writer", "util", "BufferWriter", "LongBits", "base64", "utf8", "Op", "fn", "len", "val", "__name", "noop", "State", "writer", "size", "writeByte", "buf", "pos", "writeVarint32", "VarintOp", "value", "writeVarint64", "bits", "writeFixed32", "writeBytes", "i", "head", "tail", "BufferWriter_", "require_writer_buffer", "__commonJSMin", "exports", "module", "BufferWriter", "Writer", "util", "Buffer", "__name", "size", "writeBytesBuffer", "val", "buf", "pos", "i", "value", "len", "writeStringBuffer", "require_reader", "__commonJSMin", "exports", "module", "Reader", "util", "BufferReader", "LongBits", "utf8", "indexOutOfRange", "reader", "writeLength", "__name", "buffer", "create_array", "value", "readLongVarint", "bits", "i", "readFixed32_end", "buf", "end", "readFixed64", "length", "start", "bytes", "wireType", "BufferReader_", "fn", "require_reader_buffer", "__commonJSMin", "exports", "module", "BufferReader", "Reader", "util", "buffer", "__name", "len", "require_service", "__commonJSMin", "exports", "module", "Service", "util", "rpcImpl", "requestDelimited", "responseDelimited", "__name", "rpcCall", "method", "requestCtor", "responseCtor", "request", "callback", "self", "err", "response", "endedByRPC", "require_rpc", "__commonJSMin", "exports", "rpc", "require_roots", "__commonJSMin", "exports", "module", "require_index_minimal", "__commonJSMin", "exports", "protobuf", "configure", "__name", "require_minimal", "__commonJSMin", "exports", "module", "import_minimal", "$Reader", "$Writer", "$util", "$root", "Trace", "ReportHeader", "PathErrorStats", "QueryLatencyStats", "StatsContext", "ContextualizedQueryLatencyStats", "ContextualizedTypeStats", "FieldStat", "TypeStat", "ReferencedFieldsForType", "Report", "ContextualizedStats", "TracesAndStats", "google", "init_protobuf", "__esmMin", "$protobuf", "properties", "keys", "__name", "message", "writer", "reader", "length", "end", "tag", "error", "options", "object", "CachePolicy", "i", "valuesById", "values", "Details", "key", "keys2", "j", "Error", "HTTP", "Values", "Location", "Node", "$oneOfFields", "QueryPlanNode", "SequenceNode", "ParallelNode", "FetchNode", "FlattenNode", "DeferNode", "ConditionNode", "DeferNodePrimary", "DeferredNode", "DeferredNodeDepends", "ResponsePathElement", "array13", "array14", "array15", "array16", "end2", "array9", "array2", "protobuf", "Timestamp", "require_protobuf", "__commonJSMin", "exports", "module", "$protobuf", "$Reader", "$Writer", "$util", "$root", "Trace", "properties", "keys", "__name", "message", "writer", "reader", "length", "end", "tag", "error", "options", "object", "CachePolicy", "i", "valuesById", "values", "Details", "key", "keys2", "j", "Error", "HTTP", "Values", "Location", "Node", "$oneOfFields", "QueryPlanNode", "SequenceNode", "ParallelNode", "FetchNode", "FlattenNode", "DeferNode", "ConditionNode", "DeferNodePrimary", "DeferredNode", "DeferredNodeDepends", "ResponsePathElement", "ReportHeader", "PathErrorStats", "QueryLatencyStats", "array13", "array14", "array15", "array16", "end2", "StatsContext", "ContextualizedQueryLatencyStats", "ContextualizedTypeStats", "FieldStat", "array9", "TypeStat", "ReferencedFieldsForType", "Report", "ContextualizedStats", "TracesAndStats", "array2", "google", "protobuf", "Timestamp", "graphql_1", "usage_reporting_protobuf_1", "calculateReferencedFieldsByType", "document", "schema", "resolvedOperationName", "filteredDocument", "typeInfo", "interfaces", "referencedFieldSetByType", "field", "fieldName", "parentType", "parentTypeName", "referencedFieldsByType", "typeName", "fieldNames", "__name", "exports", "graphql_1", "dropUnusedDefinitions", "ast", "operationName", "separated", "__name", "exports", "graphql_1", "stripSensitiveLiterals", "ast", "options", "listAndObjectVisitorIfEnabled", "node", "__name", "exports", "graphql_1", "printWithReducedWhitespace", "ast", "sanitizedAST", "node", "_", "c", "hex", "__name", "exports", "graphql_1", "removeAliases", "ast", "node", "alias", "rest", "__name", "exports", "require_lodash", "__commonJSMin", "exports", "module", "LARGE_ARRAY_SIZE", "FUNC_ERROR_TEXT", "HASH_UNDEFINED", "UNORDERED_COMPARE_FLAG", "PARTIAL_COMPARE_FLAG", "INFINITY", "MAX_SAFE_INTEGER", "argsTag", "arrayTag", "boolTag", "dateTag", "errorTag", "funcTag", "genTag", "mapTag", "numberTag", "objectTag", "promiseTag", "regexpTag", "setTag", "stringTag", "symbolTag", "weakMapTag", "arrayBufferTag", "dataViewTag", "float32Tag", "float64Tag", "int8Tag", "int16Tag", "int32Tag", "uint8Tag", "uint8ClampedTag", "uint16Tag", "uint32Tag", "reIsDeepProp", "reIsPlainProp", "reLeadingDot", "rePropName", "reRegExpChar", "reEscapeChar", "reIsHostCtor", "reIsUint", "typedArrayTags", "freeGlobal", "freeSelf", "root", "freeExports", "freeModule", "moduleExports", "freeProcess", "nodeUtil", "nodeIsTypedArray", "apply", "func", "thisArg", "args", "__name", "arrayMap", "array", "iteratee", "index", "length", "result", "arrayPush", "values", "offset", "arraySome", "predicate", "baseProperty", "key", "object", "baseSortBy", "comparer", "baseTimes", "n", "baseUnary", "value", "getValue", "isHostObject", "mapToArray", "map", "overArg", "transform", "arg", "setToArray", "set", "arrayProto", "funcProto", "objectProto", "coreJsData", "maskSrcKey", "uid", "funcToString", "hasOwnProperty", "objectToString", "reIsNative", "Symbol", "Uint8Array", "propertyIsEnumerable", "splice", "spreadableSymbol", "nativeKeys", "nativeMax", "DataView", "getNative", "Map", "Promise", "Set", "WeakMap", "nativeCreate", "dataViewCtorString", "toSource", "mapCtorString", "promiseCtorString", "setCtorString", "weakMapCtorString", "symbolProto", "symbolValueOf", "symbolToString", "Hash", "entries", "entry", "hashClear", "hashDelete", "hashGet", "data", "hashHas", "hashSet", "ListCache", "listCacheClear", "listCacheDelete", "assocIndexOf", "lastIndex", "listCacheGet", "listCacheHas", "listCacheSet", "MapCache", "mapCacheClear", "mapCacheDelete", "getMapData", "mapCacheGet", "mapCacheHas", "mapCacheSet", "SetCache", "setCacheAdd", "setCacheHas", "Stack", "stackClear", "stackDelete", "stackGet", "stackHas", "stackSet", "cache", "pairs", "arrayLikeKeys", "inherited", "isArray", "isArguments", "skipIndexes", "isIndex", "eq", "baseEach", "createBaseEach", "baseForOwn", "baseFlatten", "depth", "isStrict", "isFlattenable", "baseFor", "createBaseFor", "keys", "baseGet", "path", "isKey", "castPath", "toKey", "baseGetTag", "baseHasIn", "baseIsEqual", "other", "customizer", "bitmask", "stack", "isObject", "isObjectLike", "baseIsEqualDeep", "equalFunc", "objIsArr", "othIsArr", "objTag", "othTag", "getTag", "objIsObj", "othIsObj", "isSameTag", "isTypedArray", "equalArrays", "equalByTag", "objIsWrapped", "othIsWrapped", "objUnwrapped", "othUnwrapped", "equalObjects", "baseIsMatch", "source", "matchData", "noCustomizer", "objValue", "srcValue", "baseIsNative", "isMasked", "pattern", "isFunction", "baseIsTypedArray", "isLength", "baseIteratee", "identity", "baseMatchesProperty", "baseMatches", "property", "baseKeys", "isPrototype", "baseMap", "collection", "isArrayLike", "getMatchData", "matchesStrictComparable", "isStrictComparable", "get", "hasIn", "baseOrderBy", "iteratees", "orders", "criteria", "compareMultiple", "basePropertyDeep", "baseRest", "start", "otherArgs", "baseToString", "isSymbol", "stringToPath", "compareAscending", "valIsDefined", "valIsNull", "valIsReflexive", "valIsSymbol", "othIsDefined", "othIsNull", "othIsReflexive", "othIsSymbol", "objCriteria", "othCriteria", "ordersLength", "order", "eachFunc", "fromRight", "iterable", "keysFunc", "props", "isPartial", "arrLength", "othLength", "stacked", "seen", "arrValue", "othValue", "compared", "othIndex", "tag", "convert", "objProps", "objLength", "othProps", "skipCtor", "objCtor", "othCtor", "isKeyable", "Ctor", "ctorString", "hasPath", "hasFunc", "isIterateeCall", "type", "proto", "memoize", "string", "toString", "match", "number", "quote", "sortBy", "resolver", "memoized", "isArrayLikeObject", "defaultValue", "graphql_1", "lodash_sortby_1", "__importDefault", "sortAST", "ast", "node", "sortVariableDefinitions", "sortArguments", "sortDirectives", "__name", "exports", "utils_dropunuseddefinitions_1", "utils_stripsensitiveliterals_1", "utils_printwithreducedwhitespace_1", "utils_removealiases_1", "utils_sortast_1", "usageReportingSignature", "ast", "operationName", "__name", "exports", "calculateReferencedFieldsByType_1", "exports", "__name", "signature_1", "require_lib", "__commonJSMin", "exports", "module", "retrier", "retry", "fn", "opts", "run", "resolve", "reject", "options", "op", "bail", "err", "__name", "onError", "num", "runAttempt", "val", "internalError", "message", "durationHrTimeToNanos", "hrtime", "responsePathAsString", "p", "res", "responsePathFromArray", "path", "node", "responsePath", "nodePtr", "key", "child", "errorToProtobufError", "error", "Trace", "line", "column", "dateToProtoTimestamp", "date", "totalMillis", "millis", "google", "import_graphql", "TraceTreeBuilder", "init_traceTreeBuilder", "__esmMin", "init_protobuf", "init_UnreachableCaseError", "__name", "options", "sendErrors", "maskedBy", "UnreachableCaseError", "info", "errors", "err", "errorForReporting", "specificNode", "id", "parentPath", "parentNode", "clonedError", "rewrittenError", "iterateOverTrace", "trace", "f", "includePath", "rootPath", "RootCollectingPathsResponseNamePath", "notCollectingPathsResponseNamePath", "iterateOverTraceNode", "iterateOverQueryPlan", "node", "path", "child", "childPath", "ChildCollectingPathsResponseNamePath", "init_iterateOverTrace", "__esmMin", "__name", "responseName", "_ChildCollectingPathsResponseNamePath", "prev", "out", "curr", "DurationHistogram", "init_durationHistogram", "__esmMin", "_DurationHistogram", "__name", "bufferedZeroes", "outputArray", "value", "durationNs", "log", "unboundedBucket", "bucket", "oldLength", "otherHistogram", "i", "options", "initSize", "buckets", "arrayInitSize", "val", "index", "defaultSendOperationsAsTrace", "cache", "LRUCache", "__name", "_val", "key", "trace", "statsReportKey", "endTimeSeconds", "hasErrors", "traceHasErrors", "cacheKey", "DurationHistogram", "traceNodeStats", "node", "iterateOverTrace", "init_defaultSendOperationsAsTrace", "__esmMin", "init_esm", "init_iterateOverTrace", "init_durationHistogram", "createOperationDerivedDataCache", "logger", "lastWarn", "lastDisposals", "LRUCache", "obj", "operationDerivedDataCacheKey", "queryHash", "operationName", "init_operationDerivedDataCache", "__esmMin", "init_esm", "__name", "estimatedBytesForString", "s", "SizeEstimator", "OurReport", "OurTracesAndStats", "StatsByContext", "OurContextualizedStats", "OurQueryLatencyStats", "OurPathErrorStats", "OurTypeStat", "OurFieldStat", "init_stats", "__esmMin", "init_protobuf", "init_durationHistogram", "init_iterateOverTrace", "__name", "header", "tracesAndStats", "statsReportKey", "trace", "asTrace", "referencedFieldsByType", "maxTraceBytes", "nonFtv1ErrorPaths", "encodedTrace", "Trace", "existing", "typeName", "referencedFieldsForType", "fieldName", "contextualizedStats", "sizeEstimator", "statsContext", "statsContextKey", "context", "typeStat", "fieldExecutionWeight", "hasError", "errorPathStats", "iterateOverTrace", "node", "path", "currPathErrorStats", "subPath", "fieldStat", "subgraph", "errorPath", "parentType", "DurationHistogram", "_OurPathErrorStats", "child", "returnType", "makeTraceDetails", "variables", "sendVariableValues", "operationString", "details", "Trace", "variablesToRecord", "originalKeys", "modifiedVariables", "cleanModifiedVariables", "handleVariableValueTransformError", "name", "variableNames", "cleanedVariables", "init_traceDetails", "__esmMin", "init_protobuf", "__name", "packageVersion", "init_packageVersion", "__esmMin", "schemaIsSubgraph", "schema", "serviceType", "sdlField", "sdlFieldType", "import_graphql", "init_schemaIsSubgraph", "__esmMin", "__name", "ApolloServerPluginUsageReporting", "options", "fieldLevelInstrumentationOption", "fieldLevelInstrumentation", "requestDidStartHandler", "requestContext", "serverLogger", "apollo", "startedInBackground", "schema", "logger", "key", "graphRef", "schemaIsSubgraph", "sendReportsImmediately", "operationDerivedDataCache", "reportByExecutableSchemaId", "getReportWhichMustBeUsedImmediately", "__name", "executableSchemaId", "existing", "report", "OurReport", "ReportHeader", "reportHeaderDefaults", "getAndDeleteReport", "overriddenExecutableSchemaId", "computeCoreSchemaHash", "lastSeenExecutableSchemaToId", "reportTimer", "sendAllReportsAndReportErrors", "sendTraces", "sendOperationAsTrace", "defaultSendOperationsAsTrace", "stopped", "executableSchemaIdForSchema", "id", "sendReportAndReportErrors", "sendReport", "err", "dateToProtoTimestamp", "protobufError", "Report", "message", "decodedReport", "compressed", "resolve", "reject", "error", "result", "fetcher", "response", "retry", "curResponse", "body", "parsedBody", "e", "metrics", "http", "variables", "treeBuilder", "TraceTreeBuilder", "graphqlValidationFailure", "graphqlUnknownOperationName", "includeOperationInUsageReporting", "Trace", "makeHTTPRequestHeaders", "maybeCallIncludeRequestHook", "didResolveSource", "makeTraceDetails", "clientInfo", "defaultGenerateClientInfo", "clientName", "clientVersion", "validationErrors", "rawWeight", "info", "_requestContext", "errors", "payload", "operationFinished", "resolvedOperation", "policyIfCacheable", "addTrace", "res", "trace", "statsReportKey", "referencedFieldsByType", "isExecutable", "operationDerivedData", "getOperationDerivedData", "cacheKey", "operationDerivedDataCacheKey", "createOperationDerivedDataCache", "cachedOperationDerivedData", "generatedOperationDerivedData", "headers", "sendHeaders", "value", "exceptHeader", "header", "request", "clientNameHeaderKey", "clientVersionHeaderKey", "import_utils", "import_async_retry", "import_graphql", "import_os", "import_zlib", "init_plugin", "__esmMin", "init_protobuf", "init_internalPlugin", "init_traceTreeBuilder", "init_defaultSendOperationsAsTrace", "init_operationDerivedDataCache", "init_stats", "init_traceDetails", "init_packageVersion", "init_computeCoreSchemaHash", "init_schemaIsSubgraph", "os", "packageVersion", "usageReporting_exports", "__export", "ApolloServerPluginUsageReporting", "init_usageReporting", "__esmMin", "init_plugin", "unsafeStringify", "arr", "offset", "byteToHex", "init_stringify", "__esmMin", "i", "__name", "rng", "poolPtr", "rnds8Pool", "import_crypto", "init_rng", "__esmMin", "__name", "import_crypto", "native_default", "init_native", "__esmMin", "v4", "options", "buf", "offset", "native_default", "rnds", "rng", "i", "unsafeStringify", "v4_default", "init_v4", "__esmMin", "init_native", "init_rng", "init_stringify", "__name", "init_esm", "__esmMin", "init_v4", "schemaReportGql", "SchemaReporter", "init_schemaReporter", "__esmMin", "init_packageVersion", "__name", "options", "packageVersion", "sendNextWithCoreSchema", "result", "error", "withCoreSchema", "data", "errors", "x", "msgForUnexpectedResponse", "variables", "request", "httpResponse", "schemaReporting_exports", "__export", "ApolloServerPluginSchemaReporting", "initialDelayMaxMs", "overrideReportedSchema", "endpointUrl", "fetcher", "bootId", "v4_default", "apollo", "schema", "logger", "key", "graphRef", "validationErrors", "error", "err", "schemaIsSubgraph", "baseSchemaReport", "os", "packageVersion", "currentSchemaReporter", "apiSchema", "coreSupergraphSdl", "coreSchema", "coreSchemaHash", "computeCoreSchemaHash", "schemaReport", "SchemaReporter", "import_os", "import_graphql", "init_schemaReporting", "__esmMin", "init_internalPlugin", "init_esm", "init_schemaReporter", "init_schemaIsSubgraph", "init_packageVersion", "init_computeCoreSchemaHash", "__name", "inlineTrace_exports", "__export", "ApolloServerPluginInlineTrace", "options", "enabled", "schema", "logger", "schemaIsSubgraph", "http", "metrics", "treeBuilder", "TraceTreeBuilder", "info", "errors", "response", "encodedUint8Array", "Trace", "encodedBuffer", "extensions", "init_inlineTrace", "__esmMin", "init_protobuf", "init_traceTreeBuilder", "init_internalPlugin", "init_schemaIsSubgraph", "__name", "getConfigStringForHtml", "config", "getEmbeddedExplorerHTML", "getEmbeddedSandboxHTML", "init_getEmbeddedHTML", "__esmMin", "__name", "explorerCdnVersion", "apolloServerVersion", "nonce", "productionLandingPageEmbedConfigOrDefault", "embeddedExplorerParams", "sandboxCdnVersion", "localDevelopmentEmbedConfigOrDefault", "embeddedSandboxConfig", "default_exports", "__export", "ApolloServerPluginLandingPageLocalDefault", "ApolloServerPluginLandingPageProductionDefault", "DEFAULT_APOLLO_SERVER_LANDING_PAGE_VERSION", "DEFAULT_EMBEDDED_EXPLORER_VERSION", "DEFAULT_EMBEDDED_SANDBOX_VERSION", "options", "version", "__internal_apolloStudioEnv__", "rest", "ApolloServerPluginLandingPageDefault", "encodeConfig", "config", "maybeVersion", "explorerVersion", "sandboxVersion", "apolloServerLandingPageVersion", "apolloServerVersion", "packageVersion", "scriptSafeList", "styleSafeList", "iframeSafeList", "encodedASLandingPageVersion", "html", "nonce", "v4_default", "scriptCsp", "styleCsp", "imageCsp", "manifestCsp", "frameCsp", "getEmbeddedExplorerHTML", "getNonEmbeddedLandingPageHTML", "getEmbeddedSandboxHTML", "__name", "import_utils", "init_default", "__esmMin", "init_getEmbeddedHTML", "init_packageVersion", "init_esm", "cdnVersion", "encodedConfig", "disableSuggestions_exports", "__export", "ApolloServerPluginDisableSuggestions", "validationErrors", "error", "init_disableSuggestions", "__esmMin", "init_internalPlugin", "__name", "exports", "prefixesAreUnnecessaryForIsolationSymbol", "PrefixingKeyValueCache", "_PrefixingKeyValueCache", "__name", "wrapped", "prefix", "key", "value", "options", "c", "PrefixesAreUnnecessaryForIsolationCache", "exports", "_a", "require_lru_cache", "__commonJSMin", "exports", "module", "perf", "hasAbortController", "AC", "__name", "AS", "reason", "hasAbortSignal", "hasACAbortSignal", "f", "ev", "fn", "warned", "deprecatedOption", "opt", "instead", "code", "shouldWarn", "warn", "LRUCache", "deprecatedMethod", "method", "prototype", "get", "deprecatedProperty", "field", "emitWarning", "a", "what", "msg", "isPosInt", "n", "getUintArray", "max", "ZeroArray", "size", "Stack", "UintArray", "_LRUCache", "options", "ttl", "ttlResolution", "ttlAutopurge", "updateAgeOnGet", "updateAgeOnHas", "allowStale", "dispose", "disposeAfter", "noDisposeOnSet", "noUpdateTTL", "maxSize", "maxEntrySize", "sizeCalculation", "fetchMethod", "fetchContext", "noDeleteOnFetchRejection", "noDeleteOnStaleGet", "allowStaleOnFetchRejection", "allowStaleOnFetchAbort", "ignoreFetchAbort", "length", "maxAge", "stale", "key", "index", "start", "t", "status", "cachedNow", "getNow", "_index", "_status", "_ttl", "_start", "k", "v", "_size", "_k", "_v", "i", "getOptions", "value", "thisp", "deleted", "arr", "entry", "age", "_reason", "oldVal", "oldValue", "val", "free", "head", "context", "ac", "fetchOpts", "cb", "updateCache", "aborted", "ignoreAbort", "fetchFail", "p", "eb", "er", "allowStaleAborted", "noDelete", "pcall", "res", "rej", "forceRefresh", "signal", "isStale", "hasStale", "staleVal", "fetching", "lru_cache_1", "__importDefault", "InMemoryLRUCache", "_InMemoryLRUCache", "__name", "lruCacheOpts", "item", "key", "value", "options", "exports", "ErrorsAreMissesCache", "__name", "cache", "logger", "key", "e", "value", "opts", "exports", "PrefixingKeyValueCache_1", "exports", "__name", "InMemoryLRUCache_1", "ErrorsAreMissesCache_1", "require_loaders", "__commonJSMin", "exports", "require_helpers", "__commonJSMin", "exports", "graphql_1", "asArray", "__name", "fns", "invalidDocRegex", "isDocumentString", "str", "invalidPathRegex", "isValidPath", "compareStrings", "a", "b", "nodeToString", "_a", "_b", "name", "compareNodes", "customFn", "aStr", "bStr", "isSome", "input", "assertSome", "message", "require_jsutils", "__commonJSMin", "exports", "isIterableObject", "value", "__name", "isObjectLike", "isPromise", "promiseReduce", "values", "callbackFn", "initialValue", "accumulator", "resolved", "hasOwnProperty", "obj", "prop", "require_errors", "__commonJSMin", "exports", "graphql_1", "createGraphQLError", "message", "options", "__name", "relocatedError", "originalError", "path", "require_AggregateError", "__commonJSMin", "exports", "AggregateErrorImpl", "AggregateErrorClass", "__name", "errors", "message", "isAggregateError", "error", "require_inspect", "__commonJSMin", "exports", "graphql_1", "AggregateError_js_1", "MAX_RECURSIVE_DEPTH", "inspect", "value", "formatValue", "__name", "seenValues", "formatObjectValue", "formatError", "previouslySeenValues", "formatArray", "isJSONable", "jsonValue", "formatObject", "object", "entries", "getObjectTag", "key", "array", "len", "items", "i", "tag", "name", "require_getArgumentValues", "__commonJSMin", "exports", "jsutils_js_1", "graphql_1", "errors_js_1", "inspect_js_1", "getArgumentValues", "def", "node", "variableValues", "_a", "coercedValues", "argNodeMap", "prev", "arg", "name", "argType", "defaultValue", "argumentNode", "valueNode", "isNull", "variableName", "coercedValue", "__name", "require_get_directives", "__commonJSMin", "exports", "getArgumentValues_js_1", "getDirectivesInExtensions", "node", "pathToDirectivesInExtensions", "acc", "pathSegment", "__name", "_getDirectiveInExtensions", "directivesInExtensions", "directiveName", "directiveInExtensions", "directiveAnnotation", "directive", "_a", "getDirectiveInExtensions", "reformattedDirectivesInExtensions", "name", "argsOrArrayOfArgs", "args", "getDirectives", "schema", "schemaDirectiveMap", "schemaDirective", "astNodes", "result", "astNode", "directiveNode", "getDirective", "require_get_fields_with_directives", "__commonJSMin", "exports", "graphql_1", "getFieldsWithDirectives", "documentNode", "options", "result", "selected", "allTypes", "obj", "type", "typeName", "field", "fieldName", "key", "directives", "prev", "arg", "__name", "require_get_arguments_with_directives", "__commonJSMin", "exports", "graphql_1", "isTypeWithFields", "__name", "getArgumentsWithDirectives", "documentNode", "_a", "result", "allTypes", "type", "field", "argsWithDirectives", "arg", "typeFieldResult", "directives", "d", "prev", "dArg", "require_get_implementing_types", "__commonJSMin", "exports", "graphql_1", "getImplementingTypes", "interfaceName", "schema", "allTypesMap", "result", "graphqlTypeName", "graphqlType", "int", "__name", "require_astFromType", "__commonJSMin", "exports", "graphql_1", "inspect_js_1", "astFromType", "type", "innerType", "__name", "require_astFromValueUntyped", "__commonJSMin", "exports", "graphql_1", "astFromValueUntyped", "value", "valuesNodes", "item", "itemNode", "fieldNodes", "fieldName", "fieldValue", "ast", "stringNum", "integerStringRegExp", "__name", "require_memoize", "__commonJSMin", "exports", "memoize1", "fn", "memoize1cache", "__name", "a1", "cachedValue", "newValue", "memoize2", "memoize2cache", "a2", "cache2", "memoize3", "memoize3Cache", "a3", "cache3", "memoize4", "memoize4Cache", "a4", "cache4", "memoize5", "memoize5Cache", "a5", "cache5", "memoize2of4", "memoize2of4cache", "memoize2of5", "require_rootTypes", "__commonJSMin", "exports", "errors_js_1", "memoize_js_1", "getDefinedRootType", "schema", "operation", "nodes", "rootType", "__name", "rootTypes", "type", "rootTypeMap", "queryType", "mutationType", "subscriptionType", "require_print_schema_with_directives", "__commonJSMin", "exports", "graphql_1", "astFromType_js_1", "get_directives_js_1", "astFromValueUntyped_js_1", "helpers_js_1", "rootTypes_js_1", "getDocumentNodeFromSchema", "schema", "options", "pathToDirectivesInExtensions", "typesMap", "schemaNode", "astFromSchema", "definitions", "directives", "directive", "astFromDirective", "typeName", "type", "isPredefinedScalar", "isIntrospection", "astFromObjectType", "astFromInterfaceType", "astFromUnionType", "astFromInputObjectType", "astFromEnumType", "astFromScalarType", "__name", "printSchemaWithDirectives", "documentNode", "_a", "_b", "operationTypeMap", "nodes", "extensionASTNode", "node", "operationTypeDefinitionNode", "rootTypeMap", "operationTypeNode", "rootType", "rootTypeAST", "operationTypes", "getDirectiveNodes", "_c", "_d", "arg", "astFromArg", "location", "entity", "directivesInExtensions", "makeDirectiveNodes", "getDeprecatableDirectiveNodes", "directiveNodesBesidesDeprecated", "deprecatedDirectiveNode", "makeDeprecatedDirective", "field", "astFromField", "iFace", "astFromInputField", "value", "astFromEnumValue", "specifiedByValue", "directiveNode", "specifiedByArgs", "makeDirectiveNode", "deprecationReason", "name", "args", "directiveArguments", "argName", "argValue", "directiveValues", "directiveNodes", "directiveName", "arrayOrSingleValue", "require_validate_documents", "__commonJSMin", "exports", "graphql_1", "validateGraphQlDocuments", "schema", "documents", "rules", "createDefaultRules", "_a", "definitionMap", "document", "docDefinition", "fullAST", "errors", "error", "location", "__name", "ignored", "rule", "f", "require_parse_graphql_json", "__commonJSMin", "exports", "graphql_1", "stripBOM", "content", "__name", "parseBOM", "parseGraphQLJSON", "location", "jsonContent", "options", "parsedJson", "schema", "require_comments", "__commonJSMin", "exports", "graphql_1", "MAX_LINE_LENGTH", "commentsRegistry", "resetComments", "__name", "collectComment", "node", "_a", "entityName", "pushComment", "value", "field", "isFieldDefinitionNode", "arg", "entity", "argument", "comment", "getComment", "keys", "path", "printComment", "join", "maybeArray", "separator", "x", "hasMultilineItems", "str", "addDescription", "cb", "_key", "_parent", "ancestors", "parent", "prev", "key", "items", "indent", "maybeString", "block", "array", "wrap", "start", "end", "printBlockString", "isDescription", "escaped", "printDocASTReducer", "varDefs", "variable", "type", "defaultValue", "directives", "selections", "alias", "name", "args", "selectionSet", "prefix", "argsLine", "typeCondition", "variableDefinitions", "isBlockString", "values", "fields", "operationTypes", "operation", "interfaces", "types", "repeatable", "locations", "printDocASTReducerWithComments", "printWithComments", "ast", "getDescription", "options", "rawValue", "getLeadingCommentBlock", "dedentBlockStringValue", "loc", "comments", "token", "rawString", "lines", "commonIndent", "getBlockStringIndentation", "isBlank", "i", "line", "leadingWhitespace", "require_parse_graphql_sdl", "__commonJSMin", "exports", "graphql_1", "comments_js_1", "parseGraphQLSDL", "location", "rawSDL", "options", "document", "transformCommentsToDescriptions", "e", "__name", "sourceSdl", "parsedDoc", "node", "isDescribable", "rawValue", "commentsBlock", "isBlock", "require_build_operation_for_field", "__commonJSMin", "exports", "graphql_1", "rootTypes_js_1", "operationVariables", "fieldTypeMap", "addOperationVariable", "variable", "__name", "resetOperationVariables", "resetFieldMap", "buildOperationNodeForField", "schema", "kind", "field", "models", "ignore", "depthLimit", "circularReferenceDepth", "argNames", "selectedFields", "rootTypeNames", "operationNode", "buildOperationAndCollectVariables", "fieldName", "type", "operationName", "arg", "argName", "resolveVariable", "resolveField", "resolveSelectionSet", "parent", "firstCall", "path", "ancestors", "depth", "types", "t", "hasCircularRef", "fragmentNode", "_a", "_b", "isIgnored", "isModel", "fields", "selectedSubFields", "f", "name", "resolveVariableType", "getArgumentName", "namedType", "args", "removeField", "argumentName", "fieldPath", "fieldPathStr", "config", "require_types", "__commonJSMin", "exports", "DirectiveLocation", "require_Interfaces", "__commonJSMin", "exports", "MapperKind", "require_getObjectTypeFromTypeMap", "__commonJSMin", "exports", "graphql_1", "getObjectTypeFromTypeMap", "typeMap", "type", "maybeObjectType", "__name", "require_stub", "__commonJSMin", "exports", "graphql_1", "createNamedStub", "name", "type", "constructor", "__name", "createStub", "node", "isNamedStub", "fields", "fieldName", "getBuiltInForStub", "require_rewire", "__commonJSMin", "exports", "graphql_1", "stub_js_1", "rewireTypes", "originalTypeMap", "directives", "referenceTypeMap", "typeName", "newTypeMap", "namedType", "newName", "rewireNamedType", "newDirectives", "directive", "rewireDirective", "directiveConfig", "rewireArgs", "args", "rewiredArgs", "argName", "arg", "rewiredArgType", "rewireType", "type", "config", "newConfig", "__name", "rewireFields", "rewireNamedTypes", "rewireInputFields", "enumConfig", "scalarConfig", "fields", "rewiredFields", "fieldName", "field", "rewiredFieldType", "namedTypes", "rewiredTypes", "rewiredType", "require_transformInputValue", "__commonJSMin", "exports", "graphql_1", "helpers_js_1", "transformInputValue", "type", "value", "inputLeafValueTransformer", "inputObjectValueTransformer", "nullableType", "listMember", "fields", "newValue", "key", "field", "__name", "serializeInputValue", "t", "v", "parseInputValue", "parseInputValueLiteral", "require_mapSchema", "__commonJSMin", "exports", "graphql_1", "getObjectTypeFromTypeMap_js_1", "Interfaces_js_1", "rewire_js_1", "transformInputValue_js_1", "mapSchema", "schema", "schemaMapper", "newTypeMap", "mapArguments", "mapFields", "mapTypes", "mapDefaultValues", "mapEnumValues", "type", "originalDirectives", "newDirectives", "mapDirectives", "typeMap", "directives", "__name", "originalTypeMap", "testFn", "typeName", "originalType", "typeMapper", "getTypeMapper", "maybeNewType", "enumValueMapper", "getEnumValueMapper", "config", "originalEnumValueConfigMap", "newEnumValueConfigMap", "externalValue", "originalEnumValueConfig", "mappedEnumValue", "newExternalValue", "newEnumValueConfig", "correctASTNodes", "fn", "argumentConfig", "getNewType", "inputFieldConfig", "newType", "fieldMapper", "getFieldMapper", "originalFieldConfigMap", "newFieldConfigMap", "fieldName", "originalFieldConfig", "mappedField", "newFieldName", "newFieldConfig", "argumentMapper", "getArgumentMapper", "originalArgumentConfigMap", "argumentNames", "newArgumentConfigMap", "argumentName", "originalArgumentConfig", "mappedArgument", "newArgumentName", "newArgumentConfig", "directiveMapper", "getDirectiveMapper", "directive", "mappedDirective", "getTypeSpecifiers", "_a", "_b", "_c", "specifiers", "stack", "next", "getFieldSpecifiers", "fields", "fieldConfig", "node", "values", "enumKey", "enumValueConfig", "require_filterSchema", "__commonJSMin", "exports", "graphql_1", "Interfaces_js_1", "mapSchema_js_1", "filterSchema", "schema", "typeFilter", "__name", "fieldFilter", "rootFieldFilter", "objectFieldFilter", "interfaceFieldFilter", "inputObjectFieldFilter", "argumentFilter", "type", "filterRootFields", "filterElementFields", "operation", "config", "fieldName", "field", "argName", "ElementConstructor", "require_heal", "__commonJSMin", "exports", "graphql_1", "healSchema", "schema", "healTypes", "__name", "originalTypeMap", "directives", "actualNamedTypeMap", "typeName", "namedType", "actualName", "decl", "arg", "healType", "healNamedType", "type", "healFields", "healInterfaces", "healUnderlyingTypes", "healInputFields", "fieldMap", "key", "field", "interfaces", "iface", "types", "t", "healedType", "officialType", "require_getResolversFromSchema", "__commonJSMin", "exports", "graphql_1", "getResolversFromSchema", "schema", "includeDefaultMergedResolver", "_a", "_b", "resolvers", "typeMap", "typeName", "type", "config", "values", "value", "fields", "fieldName", "field", "__name", "require_forEachField", "__commonJSMin", "exports", "graphql_1", "forEachField", "schema", "fn", "typeMap", "typeName", "type", "fields", "fieldName", "field", "__name", "require_forEachDefaultValue", "__commonJSMin", "exports", "graphql_1", "forEachDefaultValue", "schema", "fn", "typeMap", "typeName", "type", "fields", "fieldName", "field", "arg", "__name", "require_addTypes", "__commonJSMin", "exports", "graphql_1", "getObjectTypeFromTypeMap_js_1", "rewire_js_1", "addTypes", "schema", "newTypesOrDirectives", "config", "originalTypeMap", "type", "originalDirectiveMap", "directive", "newTypeOrDirective", "typeMap", "directives", "__name", "require_prune", "__commonJSMin", "exports", "graphql_1", "mapSchema_js_1", "Interfaces_js_1", "rootTypes_js_1", "get_implementing_types_js_1", "pruneSchema", "schema", "options", "skipEmptyCompositeTypePruning", "skipEmptyUnionPruning", "skipPruning", "skipUnimplementedInterfacesPruning", "skipUnusedTypesPruning", "prunedTypes", "prunedSchema", "visited", "visitSchema", "revisit", "typeName", "type", "visitQueue", "__name", "queue", "value", "getDirectivesArgumentsTypeNames", "iface", "fields", "entries", "field", "arg", "typeNames", "namedType", "astNode", "_a", "directive", "_b", "require_mergeDeep", "__commonJSMin", "exports", "helpers_js_1", "mergeDeep", "sources", "respectPrototype", "target", "output", "source", "isObject", "outputPrototype", "sourcePrototype", "key", "descriptor", "__name", "item", "require_selectionSets", "__commonJSMin", "exports", "graphql_1", "parseSelectionSet", "selectionSet", "options", "__name", "require_getResponseKeyFromInfo", "__commonJSMin", "exports", "getResponseKeyFromInfo", "info", "__name", "require_fields", "__commonJSMin", "exports", "graphql_1", "Interfaces_js_1", "mapSchema_js_1", "addTypes_js_1", "appendObjectFields", "schema", "typeName", "additionalFields", "type", "config", "originalFieldConfigMap", "newFieldConfigMap", "fieldName", "__name", "removeObjectFields", "testFn", "removedFields", "originalFieldConfig", "selectObjectFields", "selectedFields", "modifyObjectFields", "newFields", "fieldConfig", "require_renameType", "__commonJSMin", "exports", "graphql_1", "renameType", "type", "newTypeName", "node", "__name", "require_mapAsyncIterator", "__commonJSMin", "exports", "mapAsyncIterator", "iterator", "callback", "rejectCallback", "$return", "abruptClose", "__name", "error", "rethrow", "mapResult", "result", "asyncMapValue", "iteratorResult", "mapReject", "reject", "value", "resolve", "require_updateArgument", "__commonJSMin", "exports", "graphql_1", "astFromType_js_1", "updateArgument", "argumentNodes", "variableDefinitionsMap", "variableValues", "argName", "varName", "type", "value", "__name", "createVariableNameGenerator", "variableDefinitionMap", "varCounter", "require_implementsAbstractType", "__commonJSMin", "exports", "graphql_1", "implementsAbstractType", "schema", "typeA", "typeB", "__name", "require_observableToAsyncIterable", "__commonJSMin", "exports", "observableToAsyncIterable", "observable", "pullQueue", "pushQueue", "listening", "pushValue", "__name", "value", "pushError", "error", "pushDone", "pullValue", "resolve", "element", "subscription", "err", "emptyQueue", "require_getOperationASTFromRequest", "__commonJSMin", "exports", "graphql_1", "memoize_js_1", "getOperationASTFromDocument", "documentNode", "operationName", "doc", "__name", "request", "require_directives", "__commonJSMin", "exports", "graphql_1", "require_AccumulatorMap", "__commonJSMin", "exports", "AccumulatorMap", "__name", "key", "item", "group", "require_collectFields", "__commonJSMin", "exports", "memoize_js_1", "graphql_1", "directives_js_1", "AccumulatorMap_js_1", "collectFieldsImpl", "schema", "fragments", "variableValues", "runtimeType", "selectionSet", "fields", "patches", "visitedFragmentNames", "selection", "shouldIncludeNode", "getFieldEntryKey", "doesFragmentConditionMatch", "defer", "getDeferValues", "patchFields", "fragName", "fragment", "__name", "collectFields", "node", "skip", "include", "type", "typeConditionNode", "conditionalType", "returnType", "fieldNodes", "subFieldNodes", "subPatches", "subFieldsAndPatches", "require_visitResult", "__commonJSMin", "exports", "getOperationASTFromRequest_js_1", "graphql_1", "collectFields_js_1", "visitData", "data", "enter", "leave", "value", "newData", "key", "__name", "visitErrors", "errors", "visitor", "error", "visitResult", "result", "request", "schema", "resultVisitorMap", "errorVisitorMap", "fragments", "acc", "def", "variableValues", "errorInfo", "visitingErrors", "operationDocumentNode", "visitRoot", "visitErrorsByType", "segmentInfoMap", "unpathedErrors", "unpathedErrorVisitor", "originalError", "pathSegmentsInfo", "newError", "segmentInfo", "typeName", "typeVisitorMap", "errorVisitor", "getOperationRootType", "operationDef", "root", "operation", "operationRootType", "collectedFields", "visitObjectValue", "object", "type", "fieldNodeMap", "pathIndex", "_a", "fieldMap", "enterObject", "newObject", "sortedErrors", "errorMap", "sortErrorsByPathSegment", "responseKey", "subFieldNodes", "fieldName", "fieldType", "newPathIndex", "fieldErrors", "addPathSegmentInfo", "newValue", "visitFieldValue", "updateObject", "oldTypename", "errorsKey", "leaveObject", "fieldVisitor", "visitedValue", "visitListValue", "list", "returnType", "fieldNodes", "listMember", "nullableType", "finalType", "pathSegment", "require_valueMatchesCriteria", "__commonJSMin", "exports", "valueMatchesCriteria", "value", "criteria", "val", "index", "propertyName", "__name", "require_isAsyncIterable", "__commonJSMin", "exports", "isAsyncIterable", "value", "__name", "require_isDocumentNode", "__commonJSMin", "exports", "graphql_1", "isDocumentNode", "object", "__name", "require_executor", "__commonJSMin", "exports", "require_withCancel", "__commonJSMin", "exports", "memoize_js_1", "defaultAsyncIteratorReturn", "value", "__name", "proxyMethodFactory", "target", "targetMethod", "args", "getAsyncIteratorWithCancel", "asyncIterator", "onCancel", "prop", "receiver", "existingPropValue", "existingReturn", "returnValue", "getAsyncIterableWithCancel", "asyncIterable", "require_fixSchemaAst", "__commonJSMin", "exports", "graphql_1", "print_schema_with_directives_js_1", "buildFixedSchema", "schema", "options", "document", "__name", "fixSchemaAst", "schemaWithValidAst", "require_extractExtensionsFromSchema", "__commonJSMin", "exports", "mapSchema_js_1", "Interfaces_js_1", "extractExtensionsFromSchema", "schema", "result", "type", "field", "fieldName", "typeName", "args", "argName", "value", "_schema", "valueName", "__name", "require_Path", "__commonJSMin", "exports", "addPath", "prev", "key", "typename", "__name", "pathToArray", "path", "flattened", "curr", "printPathArray", "require_cjs", "__commonJSMin", "exports", "tslib_1", "require_assertResolversPresent", "__commonJSMin", "exports", "graphql_1", "utils_1", "assertResolversPresent", "schema", "resolverValidationOptions", "requireResolversForArgs", "requireResolversForNonScalar", "requireResolversForAllFields", "field", "typeName", "fieldName", "expectResolver", "__name", "validator", "behavior", "message", "require_chainResolvers", "__commonJSMin", "exports", "graphql_1", "chainResolvers", "resolvers", "root", "args", "ctx", "info", "prev", "curResolver", "__name", "require_checkForResolveTypeResolver", "__commonJSMin", "exports", "utils_1", "checkForResolveTypeResolver", "schema", "requireResolversForResolveType", "type", "message", "__name", "require_extendResolversFromInterfaces", "__commonJSMin", "exports", "extendResolversFromInterfaces", "schema", "resolvers", "extendedResolvers", "typeMap", "typeName", "type", "iFace", "fieldName", "typeResolvers", "__name", "require_addResolversToSchema", "__commonJSMin", "exports", "graphql_1", "utils_1", "checkForResolveTypeResolver_js_1", "extendResolversFromInterfaces_js_1", "addResolversToSchema", "schema", "inputResolvers", "defaultFieldResolver", "resolverValidationOptions", "inheritResolversFromInterfaces", "updateResolversInPlace", "requireResolversToMatchSchema", "requireResolversForResolveType", "resolvers", "typeName", "resolverValue", "type", "fieldName", "values", "value", "fieldResolve", "addResolversToExistingSchema", "createNewSchemaWithResolvers", "__name", "_a", "_b", "_c", "_d", "_e", "_f", "_g", "_h", "_j", "_k", "_l", "_m", "typeMap", "config", "enumValueConfigMap", "field", "setFieldProperties", "fieldConfig", "newFieldConfig", "propertiesObj", "propertyName", "require_merge_resolvers", "__commonJSMin", "exports", "utils_1", "mergeResolvers", "resolversDefinitions", "options", "resolvers", "resolversDefinition", "result", "exclusion", "typeName", "fieldName", "__name", "require_arguments", "__commonJSMin", "exports", "utils_1", "mergeArguments", "args1", "args2", "config", "result", "deduplicateArguments", "__name", "args", "acc", "current", "dupIndex", "arg", "require_directives", "__commonJSMin", "exports", "graphql_1", "utils_1", "directiveAlreadyExists", "directivesArr", "otherDirective", "directive", "__name", "isRepeatableDirective", "directives", "_a", "nameAlreadyExists", "name", "namesArr", "value", "mergeArguments", "a1", "a2", "result", "argument", "existingIndex", "a", "existingArg", "source", "target", "deduplicateLists", "targetVal", "sourceVal", "deduplicateDirectives", "definitions", "all", "firstAt", "d", "dup", "mergeDirectives", "d1", "d2", "config", "reverseOrder", "asNext", "asFirst", "existingDirectiveIndex", "existingDirective", "validateInputs", "node", "existingNode", "printedNode", "printedExistingNode", "leaveInputs", "mergeDirective", "filterFn", "val", "require_enum_values", "__commonJSMin", "exports", "directives_js_1", "utils_1", "mergeEnumValues", "first", "second", "config", "directives", "reversed", "enumValueMap", "firstValue", "secondValue", "enumValue", "result", "__name", "require_enum", "__commonJSMin", "exports", "graphql_1", "directives_js_1", "enum_values_js_1", "mergeEnum", "e1", "e2", "config", "directives", "__name", "require_utils", "__commonJSMin", "exports", "graphql_1", "isStringTypes", "types", "__name", "isSourceTypes", "extractType", "type", "visitedType", "isWrappingTypeNode", "isListTypeNode", "isNonNullTypeNode", "printTypeNode", "CompareVal", "defaultStringComparator", "a", "b", "require_fields", "__commonJSMin", "exports", "utils_js_1", "directives_js_1", "utils_1", "arguments_js_1", "fieldAlreadyExists", "fieldsArr", "otherField", "resultIndex", "field", "__name", "mergeFields", "type", "f1", "f2", "config", "directives", "result", "existing", "existingIndex", "newField", "preventConflicts", "exclusions", "a", "b", "ignoreNullability", "aType", "bType", "t1", "t2", "safeChangeForFieldType", "oldType", "newType", "ofType", "require_input_type", "__commonJSMin", "exports", "graphql_1", "fields_js_1", "directives_js_1", "mergeInputType", "node", "existingNode", "config", "directives", "e", "__name", "require_merge_named_type_array", "__commonJSMin", "exports", "utils_1", "alreadyExists", "arr", "other", "i", "__name", "mergeNamedTypeArray", "first", "second", "config", "result", "d", "require_interface", "__commonJSMin", "exports", "graphql_1", "fields_js_1", "directives_js_1", "merge_named_type_array_js_1", "mergeInterface", "node", "existingNode", "config", "directives", "e", "__name", "require_type", "__commonJSMin", "exports", "graphql_1", "fields_js_1", "directives_js_1", "merge_named_type_array_js_1", "mergeType", "node", "existingNode", "config", "directives", "e", "__name", "require_scalar", "__commonJSMin", "exports", "graphql_1", "directives_js_1", "mergeScalar", "node", "existingNode", "config", "directives", "__name", "require_union", "__commonJSMin", "exports", "graphql_1", "directives_js_1", "merge_named_type_array_js_1", "mergeUnion", "first", "second", "config", "directives", "__name", "require_schema_def", "__commonJSMin", "exports", "graphql_1", "directives_js_1", "mergeOperationTypes", "opNodeList", "existingOpNodeList", "finalOpNodeList", "opNodeType", "opNode", "n", "__name", "mergeSchemaDefs", "node", "existingNode", "config", "directives", "require_merge_nodes", "__commonJSMin", "exports", "graphql_1", "type_js_1", "enum_js_1", "scalar_js_1", "union_js_1", "input_type_js_1", "interface_js_1", "directives_js_1", "schema_def_js_1", "utils_1", "isNamedDefinitionNode", "definitionNode", "__name", "mergeGraphQLNodes", "nodes", "config", "directives", "_a", "_b", "_c", "mergedResultMap", "nodeDefinition", "name", "require_merge_typedefs", "__commonJSMin", "exports", "graphql_1", "utils_js_1", "merge_nodes_js_1", "utils_1", "schema_def_js_1", "mergeTypeDefs", "typeSource", "config", "doc", "mergeGraphQLTypes", "result", "__name", "visitTypeSources", "options", "allDirectives", "allNodes", "visitedTypeSources", "type", "documentNode", "_a", "_b", "_c", "mergedDirectives", "mergedNodes", "schemaDef", "operationTypes", "opTypeDefNodeType", "operationType", "possibleRootTypeName", "existingPossibleRootType", "mergedNodeDefinitions", "sortFn", "a", "b", "require_typedefs_mergers", "__commonJSMin", "exports", "tslib_1", "require_extensions", "__commonJSMin", "exports", "utils_1", "utils_2", "__name", "mergeExtensions", "extensions", "applyExtensionObject", "obj", "applyExtensions", "schema", "typeName", "data", "type", "fieldName", "fieldData", "field", "arg", "argData", "a", "valueName", "valueData", "value", "require_cjs", "__commonJSMin", "exports", "tslib_1", "require_makeExecutableSchema", "__commonJSMin", "exports", "graphql_1", "utils_1", "addResolversToSchema_js_1", "assertResolversPresent_js_1", "merge_1", "makeExecutableSchema", "typeDefs", "resolvers", "resolverValidationOptions", "inheritResolversFromInterfaces", "updateResolversInPlace", "schemaExtensions", "otherOptions", "schema", "mergedTypeDefs", "__name", "require_types", "__commonJSMin", "require_merge_schemas", "__commonJSMin", "exports", "utils_1", "makeExecutableSchema_js_1", "mergeSchemas", "config", "extractedTypeDefs", "extractedResolvers", "extractedSchemaExtensions", "schema", "additionalResolvers", "additionalSchemaExtensions", "__name", "require_cjs", "__commonJSMin", "exports", "tslib_1", "assertResolversPresent_js_1", "__name", "chainResolvers_js_1", "addResolversToSchema_js_1", "checkForResolveTypeResolver_js_1", "extendResolversFromInterfaces_js_1", "utils_1", "exports", "resolve", "reject", "promise", "_resolve", "_reject", "require_charset", "__commonJSMin", "exports", "module", "preferredCharsets", "simpleCharsetRegExp", "parseAcceptCharset", "accept", "accepts", "i", "j", "charset", "parseCharset", "__name", "str", "match", "q", "params", "p", "getCharsetPriority", "accepted", "index", "priority", "spec", "specify", "s", "provided", "isQuality", "compareSpecs", "getFullCharset", "priorities", "type", "a", "b", "require_encoding", "__commonJSMin", "exports", "module", "preferredEncodings", "simpleEncodingRegExp", "parseAcceptEncoding", "accept", "accepts", "hasIdentity", "minQuality", "i", "j", "encoding", "parseEncoding", "specify", "__name", "str", "match", "q", "params", "p", "getEncodingPriority", "accepted", "index", "priority", "spec", "s", "provided", "preferred", "comparator", "a", "b", "aPreferred", "bPreferred", "compareSpecs", "isQuality", "getFullEncoding", "priorities", "type", "require_language", "__commonJSMin", "exports", "module", "preferredLanguages", "simpleLanguageRegExp", "parseAcceptLanguage", "accept", "accepts", "i", "j", "language", "parseLanguage", "__name", "str", "match", "prefix", "suffix", "full", "q", "params", "p", "getLanguagePriority", "accepted", "index", "priority", "spec", "specify", "s", "provided", "isQuality", "compareSpecs", "getFullLanguage", "priorities", "type", "a", "b", "require_mediaType", "__commonJSMin", "exports", "module", "preferredMediaTypes", "simpleMediaTypeRegExp", "parseAccept", "accept", "accepts", "splitMediaTypes", "i", "j", "mediaType", "parseMediaType", "__name", "str", "match", "params", "q", "subtype", "type", "kvps", "splitParameters", "splitKeyValuePair", "pair", "key", "val", "value", "getMediaTypePriority", "accepted", "index", "priority", "spec", "specify", "p", "s", "keys", "k", "provided", "isQuality", "compareSpecs", "getFullType", "priorities", "a", "b", "quoteCount", "string", "count", "parameters", "require_negotiator", "__commonJSMin", "exports", "module", "preferredCharsets", "preferredEncodings", "preferredLanguages", "preferredMediaTypes", "Negotiator", "request", "__name", "available", "set", "preferred", "newCachePolicy", "hint", "__name", "exports", "utils_isnodelike_1", "createHash", "kind", "module", "__name", "exports", "utils_createhash_1", "determineApolloConfig", "input", "logger", "apolloConfig", "APOLLO_KEY", "APOLLO_GRAPH_REF", "APOLLO_GRAPH_ID", "APOLLO_GRAPH_VARIANT", "assertValidHeaderValue", "graphId", "graphVariant", "__name", "exports", "value", "invalidHeaderCharRegex", "invalidChars", "graphql_1", "ApolloServerErrorCode", "exports", "ApolloServerValidationErrorCode", "unwrapResolverError", "error", "__name", "HeaderMap", "__name", "key", "value", "exports", "graphql_1", "index_js_1", "runHttpQuery_js_1", "HeaderMap_js_1", "GraphQLErrorWithCode", "__name", "message", "code", "options", "SyntaxError", "graphqlError", "exports", "ValidationError", "getPersistedQueryErrorHttp", "PersistedQueryNotFoundError", "PersistedQueryNotSupportedError", "UserInputError", "OperationResolutionError", "BadRequestError", "ApolloServer_js_1", "graphql_1", "internalErrorClasses_js_1", "negotiator_1", "__importDefault", "HeaderMap_js_1", "fieldIfString", "o", "fieldName", "value", "__name", "searchParamIfSpecifiedOnce", "searchParams", "paramName", "values", "jsonParsedSearchParamIfSpecifiedOnce", "hopefullyRecord", "isStringRecord", "fieldIfRecord", "isNonEmptyStringRecord", "ensureQueryIsStringOrMissing", "query", "runHttpQuery", "server", "httpRequest", "contextValue", "schemaDerivedData", "internals", "sharedResponseHTTPGraphQLHead", "graphQLRequest", "graphQLResponse", "contentType", "orderExecutionResultFields", "writeMultipartBody", "exports", "initialResult", "subsequentResults", "orderInitialIncrementalExecutionResultFields", "result", "orderSubsequentIncrementalExecutionResultFields", "orderIncrementalResultFields", "incremental", "i", "prettyJSONStringify", "newHTTPGraphQLHead", "status", "mergeHTTPGraphQLHead", "target", "source", "name", "graphql_1", "index_js_1", "runHttpQuery_js_1", "HeaderMap_js_1", "normalizeAndFormatErrors", "errors", "options", "formatError", "error", "httpFromErrors", "enrichError", "formattingError", "maybeError", "graphqlError", "ensureGraphQLError", "extensions", "isPartialHTTPGraphQLHead", "__name", "exports", "ensureError", "messagePrefixIfNotGraphQLError", "x", "runHttpQuery_js_1", "internalErrorClasses_js_1", "runBatchedHttpQuery", "server", "batchRequest", "body", "contextValue", "schemaDerivedData", "internals", "sharedResponseHTTPGraphQLHead", "responseBodies", "bodyPiece", "singleRequest", "response", "__name", "runPotentiallyBatchedHttpQuery", "httpGraphQLRequest", "exports", "internalPlugin", "p", "__name", "exports", "pluginIsInternal", "plugin", "require_utils", "__commonJSMin", "exports", "string", "char", "l", "input", "position", "value", "quoteOrBackslash", "require_mime_type_parameters", "__commonJSMin", "exports", "module", "asciiLowercase", "solelyContainsHTTPTokenCodePoints", "soleyContainsHTTPQuotedStringTokenCodePoints", "__name", "map", "name", "value", "callbackFn", "thisArg", "require_parser", "__commonJSMin", "exports", "module", "removeLeadingAndTrailingHTTPWhitespace", "removeTrailingHTTPWhitespace", "isHTTPWhitespaceChar", "solelyContainsHTTPTokenCodePoints", "soleyContainsHTTPQuotedStringTokenCodePoints", "asciiLowercase", "collectAnHTTPQuotedString", "input", "position", "type", "subtype", "mimeType", "parameterName", "parameterValue", "require_serializer", "__commonJSMin", "exports", "module", "solelyContainsHTTPTokenCodePoints", "mimeType", "serialization", "name", "value", "require_mime_type", "__commonJSMin", "exports", "module", "MIMETypeParameters", "parse", "serialize", "asciiLowercase", "solelyContainsHTTPTokenCodePoints", "__name", "string", "result", "value", "prohibitParameters", "whatwg_mimetype_1", "__importDefault", "internalErrorClasses_js_1", "exports", "NON_PREFLIGHTED_CONTENT_TYPES", "preventCsrf", "headers", "csrfPreventionRequestHeaders", "contentType", "contentTypeParsed", "header", "value", "__name", "graphql_1", "exports", "symbolPluginsEnabled", "enablePluginsForSchemaResolvers", "schema", "pluginsEnabledForSchemaResolvers", "typeMap", "type", "fields", "field", "wrapField", "__name", "originalFieldResolve", "source", "args", "contextValue", "info", "willResolveField", "userFieldResolver", "didResolveField", "fieldResolver", "result", "whenResultIsFinished", "error", "isPromise", "x", "callback", "r", "err", "isDefined", "__name", "exports", "isDefined_js_1", "invokeDidStartHook", "targets", "hook", "didEndHooks", "target", "args", "didEndHook", "__name", "exports", "invokeSyncDidStartHook", "invokeHooksUntilDefinedAndNonNull", "value", "makeGatewayGraphQLRequestContext", "as4RequestContext", "server", "internals", "request", "as4http", "needQuestion", "FetcherHeadersForHeaderMap", "response", "newStatus", "__name", "exports", "map", "name", "value", "graphql_1", "graphqlExperimentalExecuteIncrementally", "tryToLoadGraphQL17", "graphql", "__importStar", "__name", "executeIncrementally", "args", "exports", "utils_createhash_1", "graphql_1", "schemaInstrumentation_js_1", "internalErrorClasses_js_1", "errorNormalize_js_1", "invokeHooks_js_1", "makeGatewayGraphQLRequestContext_js_1", "runHttpQuery_js_1", "isDefined_js_1", "incrementalDeliveryPolyfill_js_1", "HeaderMap_js_1", "exports", "computeQueryHash", "query", "__name", "isBadUserInputGraphQLError", "error", "processGraphQLRequest", "schemaDerivedData", "server", "internals", "requestContext", "requestListeners", "p", "request", "extensions", "queryHash", "sendErrorResponse", "computedQueryHash", "l", "err", "parsingDidEnd", "syntaxMaybeError", "validationDidEnd", "validationErrors", "operation", "ttl", "responseFromPlugin", "executionListeners", "invokeWillResolveField", "args", "fullResult", "execute", "result", "resultErrors", "e", "didEncounterErrors", "formattedErrors", "httpFromErrors", "formatErrors", "executionMaybeError", "executionError", "invokeWillSendResponse", "document", "resultOrResults", "formatErrorsInSubsequentResults", "results", "payload", "seriesAsyncMap", "incrementalResult", "errors", "ts", "fn", "us", "t", "u", "UnreachableCaseError", "__name", "val", "exports", "utils_createhash_1", "computeCoreSchemaHash", "schema", "__name", "exports", "SchemaManager", "__name", "options", "gateway", "schemaContext", "callback", "e", "schemaDerivedData", "listener", "exports", "graphql_1", "index_js_1", "NoIntrospection", "__name", "context", "node", "exports", "graphql_1", "index_js_1", "exports", "RecursiveSelectionValidationContext", "__name", "selectionCountLimit", "context", "entry", "fragmentSpreadName", "definitionInfo", "spreadCount", "fragment", "operation", "cachedCount", "count", "operationName", "createMaxRecursiveSelectionsRule", "limit", "selectionContext", "node", "NoIntrospection_js_1", "exports", "__name", "RecursiveSelectionsLimit_js_1", "require_lru_cache", "__commonJSMin", "exports", "module", "perf", "hasAbortController", "AC", "__name", "AS", "reason", "hasAbortSignal", "hasACAbortSignal", "f", "ev", "fn", "warned", "deprecatedOption", "opt", "instead", "code", "shouldWarn", "warn", "LRUCache", "deprecatedMethod", "method", "prototype", "get", "deprecatedProperty", "field", "emitWarning", "a", "what", "msg", "isPosInt", "n", "getUintArray", "max", "ZeroArray", "size", "Stack", "UintArray", "_LRUCache", "options", "ttl", "ttlResolution", "ttlAutopurge", "updateAgeOnGet", "updateAgeOnHas", "allowStale", "dispose", "disposeAfter", "noDisposeOnSet", "noUpdateTTL", "maxSize", "maxEntrySize", "sizeCalculation", "fetchMethod", "fetchContext", "noDeleteOnFetchRejection", "noDeleteOnStaleGet", "allowStaleOnFetchRejection", "allowStaleOnFetchAbort", "ignoreFetchAbort", "length", "maxAge", "stale", "key", "index", "start", "t", "status", "cachedNow", "getNow", "_index", "_status", "_ttl", "_start", "k", "v", "_size", "_k", "_v", "i", "getOptions", "value", "thisp", "deleted", "arr", "entry", "age", "_reason", "oldVal", "oldValue", "val", "free", "head", "context", "ac", "fetchOpts", "cb", "updateCache", "aborted", "ignoreAbort", "fetchFail", "p", "eb", "er", "allowStaleAborted", "noDelete", "pcall", "res", "rej", "forceRefresh", "signal", "isStale", "hasStale", "staleVal", "fetching", "graphql_1", "cachePolicy_js_1", "internalPlugin_js_1", "lru_cache_1", "__importDefault", "ApolloServerPluginCacheControl", "options", "typeAnnotationCache", "fieldAnnotationCache", "schema", "t", "requestContext", "memoizedCacheAnnotationFromType", "existing", "annotation", "cacheAnnotationFromType", "__name", "memoizedCacheAnnotationFromField", "field", "cacheAnnotationFromField", "defaultMaxAge", "calculateHttpHeaders", "__testing__cacheHints", "isRestricted", "fakeFieldPolicy", "info", "dynamicHint", "fieldPolicy", "inheritMaxAge", "targetType", "typeAnnotation", "fieldAnnotation", "path", "response", "overallCachePolicy", "existingCacheControlHeader", "parseExistingCacheControlHeader", "cachePolicy", "policyIfCacheable", "CACHE_CONTROL_HEADER_UNCACHEABLE", "exports", "CACHE_CONTROL_HEADER_CACHEABLE_REGEXP", "header", "match", "cacheAnnotationFromDirectives", "directives", "cacheControlDirective", "directive", "maxAgeArgument", "argument", "scopeArgument", "inheritMaxAgeArgument", "scopeString", "scope", "hint", "node", "require_node_abort_controller", "__commonJSMin", "exports", "module", "EventEmitter", "AbortSignal", "__name", "name", "handler", "type", "event", "handlerName", "reason", "controller", "AbortController", "time", "require_lib", "__commonJSMin", "exports", "module", "conversions", "sign", "x", "__name", "evenRound", "createNumberConversion", "bitLength", "typeOpts", "lowerBound", "upperBound", "moduloVal", "moduloBound", "V", "opts", "val", "c", "i", "S", "U", "d", "a", "b", "require_utils", "__commonJSMin", "exports", "module", "__name", "target", "source", "keys", "i", "impl", "wrapper", "require_mappingTable", "__commonJSMin", "exports", "module", "require_tr46", "__commonJSMin", "exports", "module", "punycode", "mappingTable", "PROCESSING_OPTIONS", "normalize", "str", "s", "__name", "findStatus", "val", "start", "end", "mid", "target", "regexAstralSymbols", "countSymbols", "string", "mapChars", "domain_name", "useSTD3", "processing_option", "hasError", "processed", "len", "i", "codePoint", "status", "combiningMarksRegex", "validateLabel", "label", "error", "processing", "result", "labels", "validation", "verifyDnsLength", "l", "total", "require_url_state_machine", "__commonJSMin", "exports", "module", "punycode", "tr46", "specialSchemes", "failure", "countSymbols", "str", "__name", "at", "input", "idx", "c", "isASCIIDigit", "isASCIIAlpha", "isASCIIAlphanumeric", "isASCIIHex", "isSingleDot", "buffer", "isDoubleDot", "isWindowsDriveLetterCodePoints", "cp1", "cp2", "isWindowsDriveLetterString", "string", "isNormalizedWindowsDriveLetterString", "containsForbiddenHostCodePoint", "containsForbiddenHostCodePointExcludingPercent", "isSpecialScheme", "scheme", "isSpecial", "url", "defaultPort", "percentEncode", "hex", "utf8PercentEncode", "buf", "utf8PercentDecode", "output", "isC0ControlPercentEncode", "extraPathPercentEncodeSet", "isPathPercentEncode", "extraUserinfoPercentEncodeSet", "isUserinfoPercentEncode", "percentEncodeChar", "encodeSetPredicate", "cStr", "parseIPv4Number", "R", "parseIPv4", "parts", "numbers", "part", "n", "i", "ipv4", "counter", "serializeIPv4", "address", "parseIPv6", "pieceIndex", "compress", "pointer", "value", "length", "numbersSeen", "ipv4Piece", "number", "swaps", "temp", "serializeIPv6", "findLongestZeroSequence", "ignore0", "parseHost", "isSpecialArg", "parseOpaqueHost", "domain", "asciiDomain", "ipv4Host", "decoded", "arr", "maxIdx", "maxLen", "currStart", "currLen", "serializeHost", "host", "trimControlChars", "trimTabAndNewline", "shortenPath", "path", "isNormalizedWindowsDriveLetter", "includesCredentials", "cannotHaveAUsernamePasswordPort", "URLStateMachine", "base", "encodingOverride", "stateOverride", "res", "ret", "len", "codePoint", "encodedCodePoints", "port", "fileOtherwiseCodePoints", "serializeURL", "excludeFragment", "serializeOrigin", "tuple", "result", "options", "usm", "username", "password", "integer", "require_URL_impl", "__commonJSMin", "exports", "usm", "__name", "constructorArgs", "url", "base", "parsedBase", "parsedURL", "v", "input", "require_URL", "__commonJSMin", "exports", "module", "conversions", "utils", "Impl", "impl", "URL", "url", "args", "i", "__name", "V", "obj", "constructorArgs", "privateData", "require_public_api", "__commonJSMin", "exports", "require_lib", "__commonJSMin", "exports", "module", "_interopDefault", "ex", "__name", "Stream", "http", "Url", "whatwgUrl", "https", "zlib", "Readable", "BUFFER", "TYPE", "Blob", "_Blob", "blobParts", "options", "buffers", "size", "length", "i", "element", "buffer", "type", "buf", "ab", "readable", "start", "end", "relativeStart", "relativeEnd", "span", "slicedBuffer", "blob", "FetchError", "message", "systemError", "convert", "INTERNALS", "PassThrough", "Body", "body", "_this", "_ref", "_ref$size", "_ref$timeout", "timeout", "isURLSearchParams", "isBlob", "err", "error", "consumeBody", "ct", "_this2", "_this3", "convertBody", "proto", "name", "desc", "_this4", "accum", "accumBytes", "abort", "resolve", "reject", "resTimeout", "chunk", "headers", "charset", "res", "str", "obj", "clone", "instance", "p1", "p2", "extractContentType", "getTotalBytes", "writeToStream", "dest", "invalidTokenRegex", "invalidHeaderCharRegex", "validateName", "validateValue", "value", "find", "map", "key", "MAP", "Headers", "_Headers", "init", "rawHeaders", "headerNames", "headerName", "method", "pairs", "pair", "callback", "thisArg", "getHeaders", "_pairs$i", "createHeadersIterator", "kind", "k", "INTERNAL", "target", "iterator", "HeadersIteratorPrototype", "_INTERNAL", "index", "values", "len", "exportNodeCompatibleHeaders", "hostHeaderKey", "createHeadersLenient", "val", "INTERNALS$1", "STATUS_CODES", "Response", "_Response", "opts", "status", "contentType", "INTERNALS$2", "URL", "parse_url", "format_url", "parseURL", "urlStr", "streamDestructionSupported", "isRequest", "input", "isAbortSignal", "signal", "Request", "_Request", "parsedURL", "inputBody", "getNodeRequestOptions", "request", "contentLengthValue", "totalBytes", "agent", "AbortError", "URL$1", "PassThrough$1", "isDomainOrSubdomain", "destination", "original", "orig", "isSameProtocol", "fetch", "url", "send", "response", "destroyStream", "abortAndFinalize", "finalize", "req", "reqTimeout", "socket", "fixResponseChunkedTransferBadEnding", "s", "hadError", "hasDataListener", "location", "locationURL", "requestOpts", "response_options", "codings", "zlibOptions", "raw", "errorCallback", "stream", "code", "graphql_1", "usage_reporting_protobuf_1", "UnreachableCaseError_js_1", "internalError", "message", "__name", "TraceTreeBuilder", "options", "responsePathAsString", "sendErrors", "maskedBy", "dateToProtoTimestamp", "durationHrTimeToNanos", "info", "path", "node", "errors", "err", "errorForReporting", "errorToProtobufError", "error", "specificNode", "responsePath", "responsePathFromArray", "id", "parentPath", "parentNode", "clonedError", "rewrittenError", "exports", "hrtime", "p", "res", "nodePtr", "key", "child", "line", "column", "date", "totalMillis", "millis", "iterateOverTrace", "trace", "f", "includePath", "rootPath", "RootCollectingPathsResponseNamePath", "notCollectingPathsResponseNamePath", "iterateOverTraceNode", "iterateOverQueryPlan", "__name", "exports", "node", "path", "child", "childPath", "responseName", "ChildCollectingPathsResponseNamePath", "_ChildCollectingPathsResponseNamePath", "prev", "out", "curr", "DurationHistogram", "_DurationHistogram", "__name", "bufferedZeroes", "outputArray", "value", "durationNs", "log", "unboundedBucket", "bucket", "oldLength", "otherHistogram", "i", "options", "initSize", "buckets", "arrayInitSize", "val", "index", "exports", "lru_cache_1", "__importDefault", "iterateOverTrace_js_1", "durationHistogram_js_1", "defaultSendOperationsAsTrace", "cache", "__name", "_val", "key", "trace", "statsReportKey", "endTimeSeconds", "hasErrors", "traceHasErrors", "cacheKey", "exports", "traceNodeStats", "node", "lru_cache_1", "__importDefault", "createOperationDerivedDataCache", "logger", "lastWarn", "lastDisposals", "obj", "__name", "exports", "operationDerivedDataCacheKey", "queryHash", "operationName", "usage_reporting_protobuf_1", "durationHistogram_js_1", "iterateOverTrace_js_1", "SizeEstimator", "__name", "exports", "OurReport", "header", "tracesAndStats", "statsReportKey", "trace", "asTrace", "referencedFieldsByType", "maxTraceBytes", "nonFtv1ErrorPaths", "encodedTrace", "existing", "estimatedBytesForString", "typeName", "referencedFieldsForType", "fieldName", "OurTracesAndStats", "StatsByContext", "contextualizedStats", "sizeEstimator", "statsContext", "statsContextKey", "OurContextualizedStats", "context", "OurQueryLatencyStats", "typeStat", "fieldExecutionWeight", "hasError", "errorPathStats", "traceNodeStats", "node", "path", "currPathErrorStats", "subPath", "fieldStat", "subgraph", "errorPath", "parentType", "OurTypeStat", "OurPathErrorStats", "_OurPathErrorStats", "child", "returnType", "OurFieldStat", "s", "usage_reporting_protobuf_1", "makeTraceDetails", "variables", "sendVariableValues", "operationString", "details", "variablesToRecord", "originalKeys", "modifiedVariables", "cleanModifiedVariables", "handleVariableValueTransformError", "name", "__name", "exports", "variableNames", "cleanedVariables", "exports", "graphql_1", "schemaIsSubgraph", "schema", "serviceType", "sdlField", "sdlFieldType", "__name", "exports", "usage_reporting_protobuf_1", "utils_usagereporting_1", "async_retry_1", "__importDefault", "graphql_1", "node_abort_controller_1", "node_fetch_1", "os_1", "zlib_1", "internalPlugin_js_1", "traceTreeBuilder_js_1", "defaultSendOperationsAsTrace_js_1", "operationDerivedDataCache_js_1", "stats_js_1", "traceDetails_js_1", "packageVersion_js_1", "computeCoreSchemaHash_js_1", "schemaIsSubgraph_js_1", "reportHeaderDefaults", "ApolloServerPluginUsageReporting", "options", "fieldLevelInstrumentationOption", "fieldLevelInstrumentation", "requestDidStartHandler", "requestContext", "serverLogger", "apollo", "startedInBackground", "schema", "logger", "key", "graphRef", "sendReportsImmediately", "operationDerivedDataCache", "reportByExecutableSchemaId", "getReportWhichMustBeUsedImmediately", "__name", "executableSchemaId", "existing", "report", "getAndDeleteReport", "overriddenExecutableSchemaId", "lastSeenExecutableSchemaToId", "reportTimer", "sendAllReportsAndReportErrors", "sendTraces", "sendOperationAsTrace", "stopped", "executableSchemaIdForSchema", "id", "sendReportAndReportErrors", "sendReport", "err", "protobufError", "message", "decodedReport", "compressed", "resolve", "reject", "error", "result", "fetcher", "response", "controller", "abortTimeout", "curResponse", "body", "parsedBody", "e", "metrics", "http", "variables", "treeBuilder", "graphqlValidationFailure", "graphqlUnknownOperationName", "includeOperationInUsageReporting", "makeHTTPRequestHeaders", "maybeCallIncludeRequestHook", "didResolveSource", "clientInfo", "defaultGenerateClientInfo", "clientName", "clientVersion", "validationErrors", "rawWeight", "info", "_requestContext", "errors", "payload", "operationFinished", "resolvedOperation", "policyIfCacheable", "addTrace", "res", "trace", "statsReportKey", "referencedFieldsByType", "isExecutable", "operationDerivedData", "getOperationDerivedData", "cacheKey", "cachedOperationDerivedData", "generatedOperationDerivedData", "exports", "headers", "sendHeaders", "value", "exceptHeader", "header", "request", "clientNameHeaderKey", "clientVersionHeaderKey", "plugin_js_1", "exports", "__name", "node_fetch_1", "__importDefault", "packageVersion_js_1", "exports", "SchemaReporter", "__name", "options", "sendNextWithCoreSchema", "result", "error", "withCoreSchema", "data", "errors", "x", "msgForUnexpectedResponse", "variables", "request", "httpResponse", "os_1", "__importDefault", "internalPlugin_js_1", "uuid_1", "graphql_1", "schemaReporter_js_1", "schemaIsSubgraph_js_1", "packageVersion_js_1", "computeCoreSchemaHash_js_1", "ApolloServerPluginSchemaReporting", "initialDelayMaxMs", "overrideReportedSchema", "endpointUrl", "fetcher", "bootId", "apollo", "schema", "logger", "key", "graphRef", "validationErrors", "error", "err", "baseSchemaReport", "currentSchemaReporter", "apiSchema", "coreSupergraphSdl", "coreSchema", "coreSchemaHash", "schemaReport", "__name", "exports", "usage_reporting_protobuf_1", "traceTreeBuilder_js_1", "internalPlugin_js_1", "schemaIsSubgraph_js_1", "ApolloServerPluginInlineTrace", "options", "enabled", "schema", "logger", "http", "metrics", "treeBuilder", "info", "errors", "response", "encodedUint8Array", "encodedBuffer", "extensions", "__name", "exports", "getConfigStringForHtml", "config", "__name", "getEmbeddedExplorerHTML", "explorerCdnVersion", "apolloServerVersion", "nonce", "productionLandingPageEmbedConfigOrDefault", "embeddedExplorerParams", "exports", "getEmbeddedSandboxHTML", "sandboxCdnVersion", "localDevelopmentEmbedConfigOrDefault", "embeddedSandboxConfig", "getEmbeddedHTML_js_1", "packageVersion_js_1", "utils_createhash_1", "uuid_1", "ApolloServerPluginLandingPageLocalDefault", "options", "version", "__internal_apolloStudioEnv__", "rest", "ApolloServerPluginLandingPageDefault", "__name", "exports", "ApolloServerPluginLandingPageProductionDefault", "encodeConfig", "config", "getNonEmbeddedLandingPageHTML", "cdnVersion", "apolloServerVersion", "nonce", "encodedConfig", "maybeVersion", "explorerVersion", "sandboxVersion", "apolloServerLandingPageVersion", "scriptSafeList", "styleSafeList", "iframeSafeList", "server", "encodedASLandingPageVersion", "html", "scriptCsp", "styleCsp", "imageCsp", "manifestCsp", "frameCsp", "internalPlugin_js_1", "ApolloServerPluginDisableSuggestions", "validationErrors", "error", "__name", "exports", "utils_isnodelike_1", "utils_keyvaluecache_1", "schema_1", "resolvable_js_1", "__importDefault", "graphql_1", "loglevel_1", "negotiator_1", "cachePolicy_js_1", "determineApolloConfig_js_1", "errorNormalize_js_1", "index_js_1", "httpBatching_js_1", "internalPlugin_js_1", "preventCsrf_js_1", "requestPipeline_js_1", "runHttpQuery_js_1", "HeaderMap_js_1", "UnreachableCaseError_js_1", "computeCoreSchemaHash_js_1", "isDefined_js_1", "schemaManager_js_1", "index_js_2", "defaultLogger", "loglevelLogger", "__name", "ApolloServer", "_ApolloServer", "config", "nodeEnv", "apolloConfig", "isDev", "state", "schema", "introspectionEnabled", "hideSchemaDetailsFromClientErrors", "maxRecursiveSelectionsRule", "validationRules", "laterValidationRules", "startedInBackground", "schemaManager", "barrier", "toDispose", "executor", "schemaDerivedData", "service", "taggedServerListeners", "plugin", "isImplicitlyInstallablePlugin", "maybeTaggedServerListener", "schemaDidLoadOrUpdate", "serverWillStops", "l", "serverWillStop", "drainServerCallbacks", "drainServers", "drainServer", "taggedServerListenersWithRenderLandingPage", "landingPage", "toDisposeLast", "maybeError", "error", "pluginError", "signals", "receivedSignal", "signalHandler", "signal", "e", "expressionForError", "err", "typeDefs", "resolvers", "augmentedTypeDefs", "providedDocumentStore", "dispose", "stopError", "plugins", "alreadyHavePluginWithInternalId", "id", "pluginsByInternalID", "p", "seen", "ApolloServerPluginCacheControl", "__importStar", "ApolloServerPluginUsageReporting", "alreadyHavePlugin", "enabledViaEnvVar", "ApolloServerPluginSchemaReporting", "ApolloServerPluginInlineTrace", "ApolloServerPluginLandingPageLocalDefault", "ApolloServerPluginLandingPageProductionDefault", "ApolloServerPluginDisableSuggestions", "httpGraphQLRequest", "context", "runningServerState", "renderedHtml", "contextValue", "maybeError_", "requestHead", "formattedErrors", "httpFromErrors", "chooseContentTypeForSingleResultResponse", "exports", "request", "acceptHeader", "options", "graphQLRequest", "internalExecuteOperation", "server", "internals", "sharedResponseHTTPGraphQLHead", "requestContext", "cloneObject", "head", "preferred", "object", "require_externalTypes", "__commonJSMin", "exports", "ApolloServer_js_1", "exports", "__name", "HeaderMap_js_1", "__exportStar", "node_stream_1", "node_url_1", "server_1", "koaMiddleware", "server", "options", "defaultContext", "__name", "context", "_a", "ctx", "incomingHeaders", "key", "value", "httpGraphQLRequest", "body", "headers", "status", "chunk", "exports", "definitions_1", "exports", "r", "sameType", "t1", "t2", "__name", "isDirectSubtype", "type", "maybeSubType", "unionMembershipTester", "u", "m", "implementsInterfaceTester", "i", "isSubtype", "allowedRules", "isStrictSubtype", "typesCanBeMerged", "assert", "condition", "message", "__name", "exports", "assertUnreachable", "_", "MultiMap", "key", "value", "values", "otherMap", "k", "vs", "v", "SetMultiMap", "OrderedMap", "_OrderedMap", "a", "b", "compareFn", "lower", "upper", "middle", "i", "arrayEquals", "equalFct", "isSubset", "superset", "maybeSubset", "elt", "firstOf", "iterable", "res", "mapValues", "map", "array", "mapKeys", "mapEntries", "entry", "setValues", "set", "MapWithCachedArrays", "deleted", "copyWitNewLength", "arr", "newLength", "copy", "validateStringContainsBoolean", "str", "joinStrings", "toJoin", "sep", "firstSep", "lastSep", "first", "last", "DEFAULT_HUMAN_READABLE_LIST_CUTOFF_LENGTH", "printHumanReadableList", "names", "emptyValue", "prefix", "prefixPlural", "lastSeparator", "cutoff_output_length", "cutoff", "lastIdx", "length", "name", "toDisplay", "actualPrefix", "isDefined", "removeArrayElement", "element", "index", "isNonEmptyArray", "findLast", "predicate", "t", "mergeMapOrNull", "m1", "m2", "composeSets", "s1", "s2", "result", "setsEqual", "graphql_1", "utils_1", "FED1_CODE", "makeCodeDefinition", "__name", "code", "description", "metadata", "DEFAULT_METADATA", "message", "options", "extractGraphQLErrorOptions", "e", "exports", "AggregateGraphQLError", "causes", "c", "output", "cause", "aggregateError", "errorCauses", "printGraphQLErrorsOrRethrow", "printErrors", "errors", "makeErrorCodeCategory", "extractCode", "makeDescription", "element", "def", "codeDefByCode", "makeFederationDirectiveErrorCodeCategory", "codeSuffix", "directive", "errorCode", "errorCodeDef", "withModifiedErrorMessage", "newMessage", "withModifiedErrorNodes", "newNodes", "INVALID_GRAPHQL", "DIRECTIVE_DEFINITION_INVALID", "TYPE_DEFINITION_INVALID", "UNSUPPORTED_LINKED_FEATURE", "UNKNOWN_FEDERATION_LINK_VERSION", "UNKNOWN_LINK_VERSION", "FIELDS_HAS_ARGS", "KEY_FIELDS_HAS_ARGS", "PROVIDES_FIELDS_HAS_ARGS", "DIRECTIVE_FIELDS_MISSING_EXTERNAL", "PROVIDES_MISSING_EXTERNAL", "REQUIRES_MISSING_EXTERNAL", "DIRECTIVE_UNSUPPORTED_ON_INTERFACE", "KEY_UNSUPPORTED_ON_INTERFACE", "PROVIDES_UNSUPPORTED_ON_INTERFACE", "REQUIRES_UNSUPPORTED_ON_INTERFACE", "DIRECTIVE_IN_FIELDS_ARG", "KEY_HAS_DIRECTIVE_IN_FIELDS_ARGS", "PROVIDES_HAS_DIRECTIVE_IN_FIELDS_ARGS", "REQUIRES_HAS_DIRECTIVE_IN_FIELDS_ARGS", "EXTERNAL_UNUSED", "TYPE_WITH_ONLY_UNUSED_EXTERNAL", "PROVIDES_ON_NON_OBJECT_FIELD", "DIRECTIVE_INVALID_FIELDS_TYPE", "KEY_INVALID_FIELDS_TYPE", "PROVIDES_INVALID_FIELDS_TYPE", "REQUIRES_INVALID_FIELDS_TYPE", "DIRECTIVE_INVALID_FIELDS", "KEY_INVALID_FIELDS", "PROVIDES_INVALID_FIELDS", "REQUIRES_INVALID_FIELDS", "KEY_FIELDS_SELECT_INVALID_TYPE", "ROOT_TYPE_USED", "kind", "ROOT_QUERY_USED", "ROOT_MUTATION_USED", "ROOT_SUBSCRIPTION_USED", "INVALID_SUBGRAPH_NAME", "NO_QUERIES", "INTERFACE_FIELD_NO_IMPLEM", "TYPE_KIND_MISMATCH", "CONTEXT_NOT_SET", "CONTEXT_INVALID_SELECTION", "NO_CONTEXT_IN_SELECTION", "CONTEXT_NO_RESOLVABLE_KEY", "CONTEXT_NAME_INVALID", "EXTERNAL_TYPE_MISMATCH", "EXTERNAL_COLLISION_WITH_ANOTHER_DIRECTIVE", "EXTERNAL_ARGUMENT_MISSING", "EXTERNAL_ARGUMENT_TYPE_MISMATCH", "EXTERNAL_ARGUMENT_DEFAULT_MISMATCH", "EXTERNAL_ON_INTERFACE", "MERGED_DIRECTIVE_APPLICATION_ON_EXTERNAL", "FIELD_TYPE_MISMATCH", "ARGUMENT_TYPE_MISMATCH", "INPUT_FIELD_DEFAULT_MISMATCH", "ARGUMENT_DEFAULT_MISMATCH", "EXTENSION_WITH_NO_BASE", "EXTERNAL_MISSING_ON_BASE", "INVALID_FIELD_SHARING", "INVALID_SHAREABLE_USAGE", "INVALID_LINK_DIRECTIVE_USAGE", "INVALID_LINK_IDENTIFIER", "LINK_IMPORT_NAME_MISMATCH", "REFERENCED_INACCESSIBLE", "DEFAULT_VALUE_USES_INACCESSIBLE", "QUERY_ROOT_TYPE_INACCESSIBLE", "REQUIRED_INACCESSIBLE", "IMPLEMENTED_BY_INACCESSIBLE", "DISALLOWED_INACCESSIBLE", "ONLY_INACCESSIBLE_CHILDREN", "REQUIRED_INPUT_FIELD_MISSING_IN_SOME_SUBGRAPH", "REQUIRED_ARGUMENT_MISSING_IN_SOME_SUBGRAPH", "EMPTY_MERGED_INPUT_TYPE", "ENUM_VALUE_MISMATCH", "EMPTY_MERGED_ENUM_TYPE", "SHAREABLE_HAS_MISMATCHED_RUNTIME_TYPES", "SATISFIABILITY_ERROR", "OVERRIDE_FROM_SELF_ERROR", "OVERRIDE_SOURCE_HAS_OVERRIDE", "OVERRIDE_COLLISION_WITH_ANOTHER_DIRECTIVE", "OVERRIDE_ON_INTERFACE", "OVERRIDE_LABEL_INVALID", "UNSUPPORTED_FEATURE", "INVALID_FEDERATION_SUPERGRAPH", "DOWNSTREAM_SERVICE_ERROR", "DIRECTIVE_COMPOSITION_ERROR", "INTERFACE_OBJECT_USAGE_ERROR", "INTERFACE_KEY_NOT_ON_IMPLEMENTATION", "INTERFACE_KEY_MISSING_IMPLEMENTATION_TYPE", "CONTEXTUAL_ARGUMENT_NOT_CONTEXTUAL_IN_ALL_SUBGRAPHS", "COST_APPLIED_TO_INTERFACE_FIELD", "LIST_SIZE_APPLIED_TO_NON_LIST", "LIST_SIZE_INVALID_ASSUMED_SIZE", "LIST_SIZE_INVALID_SLICING_ARGUMENT", "LIST_SIZE_INVALID_SIZED_FIELD", "MAX_VALIDATION_SUBGRAPH_PATHS_EXCEEDED", "AUTH_REQUIREMENTS_APPLIED_ON_INTERFACE", "MISSING_TRANSITIVE_AUTH_REQUIREMENTS", "obj", "codeDef", "require_js_levenshtein", "__commonJSMin", "exports", "module", "_min", "d0", "d1", "d2", "bx", "ay", "__name", "a", "b", "tmp", "la", "lb", "offset", "x", "y", "d3", "dd", "dy", "bx0", "bx1", "bx2", "bx3", "vector", "len", "js_levenshtein_1", "__importDefault", "utils_1", "suggestionList", "input", "options", "optionsByDistance", "threshold", "inputLowerCase", "option", "distance", "a", "b", "distanceDiff", "__name", "exports", "MAX_SUGGESTIONS", "didYouMean", "suggestions", "message", "quotedSuggestions", "x", "selected", "lastItem", "definitions_1", "graphql_1", "suggestions_1", "util_1", "types_1", "utils_1", "error_1", "MAX_INT", "MIN_INT", "valueToString", "v", "expectedType", "elementsType", "e", "k", "valueType", "_a", "integerStringRegExp", "__name", "exports", "valueEquals", "a", "b", "arrayValueEquals", "objectEquals", "i", "keys1", "keys2", "key", "v1", "v2", "argumentsEquals", "args1", "args2", "buildError", "message", "applyDefaultValues", "value", "type", "updated", "field", "fieldValue", "fieldName", "suggestions", "f", "withDefaultValues", "argument", "objectFieldNodeToConst", "valueNodeToConstValueNode", "constValues", "constFields", "valueToAST", "astValue", "valueToASTUntyped", "itemType", "items", "valuesNodes", "item", "itemNode", "fieldNodes", "stringNum", "isValidVariable", "variable", "locationType", "locationDefault", "variableType", "areTypesCompatible", "isValidValue", "variableDefinitions", "isValidValueApplication", "definition", "valueKeys", "fieldsAreValid", "hasUnexpectedField", "isValidLeafValue", "valueFromAST", "node", "baseType", "parsed", "valueFromASTUntyped", "obj", "name", "schema", "argumentsFromAST", "context", "args", "argsDefiner", "values", "argNode", "collectVariablesInValue", "collector", "registeredFeatures", "registerKnownFeature", "definitions", "__name", "exports", "coreFeatureDefinitionIfKnown", "url", "_a", "unregisterKnownFeatures", "graphql_1", "definitions_1", "error_1", "values_1", "types_1", "utils_1", "createDirectiveSpecification", "name", "locations", "repeatable", "args", "composes", "supergraphSpecification", "useJoinDirective", "staticArgumentTransform", "composition", "argStrategies", "arg", "argumentsMerger", "__name", "schema", "feature", "argName", "type", "strategy", "argType", "valid", "supportedMsg", "values", "asBuiltIn", "actualName", "_a", "resolvedArgs", "errors", "typeOrErrors", "existing", "ensureSameDirectiveStructure", "directive", "defaultValue", "exports", "createScalarTypeSpecification", "ensureSameTypeKind", "createObjectTypeSpecification", "fieldsFct", "expectedFields", "existingField", "existingType", "ensureSameArguments", "createdType", "field", "createUnionTypeSpecification", "membersFct", "expectedMembers", "n1", "n2", "actualMembers", "m", "member", "createEnumTypeSpecification", "expectedValueNames", "v", "actualValueNames", "description", "expected", "actual", "directiveName", "loc", "what", "containerSourceAST", "expectedArguments", "actualArgument", "actualType", "isValidInputTypeRedefinition", "expectedType", "graphql_1", "url_1", "definitions_1", "types_1", "utils_1", "error_1", "values_1", "knownCoreFeatures_1", "suggestions_1", "directiveAndTypeSpecification_1", "exports", "ErrCoreCheckFailed", "__name", "causes", "buildError", "message", "purposesDescription", "purpose", "FeatureDefinition", "url", "minimumFederationVersion", "FeatureUrl", "spec", "subFeature", "typeSpec", "directiveSpec", "name", "type", "nameInSchema", "directive", "schema", "feature", "errors", "directiveName", "typeName", "elementName", "features", "directiveNameInFeature", "extractCoreFeatureImports", "args", "importArgValue", "definition", "knownElements", "imports", "importArgLoop", "elt", "validateImportedName", "key", "value", "i", "details", "suggestions", "isCoreSpecDirectiveApplication", "asArg", "urlArg", "_a", "isValidUrlArgumentType", "_b", "_c", "linkPurposeTypeSpec", "linkImportTypeSpec", "CoreSpecDefinition", "version", "identity", "_", "alias", "schemaDef", "hasDefinition", "extension", "as", "existingCore", "names", "FeatureVersion", "coreDirective", "FeatureDefinitions", "def", "def1", "def2", "requested", "fedVersion", "latestMajor", "major", "minor", "input", "match", "versions", "max", "required", "rMajor", "rMinor", "other", "_FeatureUrl", "element", "node", "path", "verStr", "findCoreSpecVersion", "featureUrl", "removeAllCoreFeatures", "coreFeatures", "typeReferences", "d", "application", "t", "references", "referencesInSchema", "r", "coreSpec_1", "definitions_1", "graphql_1", "knownCoreFeatures_1", "error_1", "directiveAndTypeSpecification_1", "utils_1", "exports", "InaccessibleSpecDefinition", "__name", "version", "minimumFederationVersion", "fedVersion", "schema", "definition", "hasUnknownArguments", "hasRepeatable", "hasValidLocations", "loc", "removeInaccessibleElements", "coreFeatures", "inaccessibleFeature", "inaccessibleSpec", "inaccessibleDirective", "incompatibleError", "validateInaccessibleElements", "removeInaccessibleElementsAssumingValid", "isInaccessible", "element", "featureList", "isFeatureDefinition", "feature", "isInAPISchema", "fetchInaccessibleElementsDeep", "inaccessibleElements", "field", "enumValue", "argument", "errors", "defaultValueReferencers", "computeDefaultValueReferencers", "type", "hasBuiltInName", "referencers", "referencer", "isEmpty", "member", "implementedInterfaces", "implementingTypes", "implementedInterface", "implementedField", "implementingType", "implementingField", "implementingArgument", "implementedArgument", "_a", "inputField", "_b", "_c", "directive", "typeSystemLocations", "addReference", "reference", "referencerList", "computeDefaultValueReferences", "references", "addValueReferences", "getInputType", "value", "itemType", "item", "fieldValue", "utils_1", "values_1", "exports", "__name", "orderPrintedDefinitions", "options", "t1", "t2", "shallowOrderPrintedDefinitions", "isDefinitionOrderValid", "validateOptions", "printSchema", "schema", "directives", "types", "definitions", "printSchemaDefinitionAndExtensions", "directive", "printDirectiveDefinition", "type", "printTypeDefinitionAndExtensions", "definitionAndExtensions", "element", "schemaDefinition", "printDefinitionAndExtensions", "printSchemaDefinitionOrExtension", "printer", "ext", "v", "printIsExtension", "extension", "forExtension", "ts", "r", "_a", "orderRoots", "roots", "r1", "r2", "appliedDirectives", "isSchemaOfCommonNames", "rootEntries", "rootType", "printDescription", "printAppliedDirectives", "printType", "printScalarDefinitionOrExtension", "t", "printFieldBasedTypeDefinitionOrExtension", "printUnionDefinitionOrExtension", "printEnumDefinitionOrExtension", "printInputDefinitionOrExtension", "locations", "printArgs", "onNewLines", "endWithNewLine", "joinStr", "d", "indentation", "firstInBlock", "preferMultipleLines", "blockString", "printBlockString", "printImplementedInterfaces", "implementations", "i", "kind", "interfaces", "fields", "printFields", "members", "possibleTypes", "m", "values", "vals", "printBlock", "f", "printField", "field", "args", "defaultValue", "arg", "printArg", "items", "value", "isSingleLine", "hasLeadingSpace", "hasTrailingQuote", "hasTrailingSlash", "printAsMultipleLines", "result", "graphql_1", "definitions_1", "exports", "isIntrospectionName", "name", "__name", "addIntrospectionFields", "schema", "typeKindEnum", "inputValueType", "fieldType", "typeType", "enumValueType", "directiveLocationEnum", "location", "directiveType", "schemaType", "queryRoot", "definitions_1", "graphql_1", "values_1", "introspection_1", "types_1", "error_1", "validateSchema", "schema", "Validator", "__name", "exports", "InputObjectCircularRefsValidator", "onError", "type", "field", "fieldType", "cycleIndex", "cyclePath", "pathStr", "fieldObj", "directive", "arg", "application", "refsValidator", "msg", "opts", "message", "options", "elt", "e", "itf", "itfField", "itfArg", "itfOfItf", "builtInScalar", "t", "value", "definition", "argument", "parent", "parentDesc", "graphql_1", "coreSpec_1", "utils_1", "values_1", "inaccessibleSpec_1", "print_1", "types_1", "introspection_1", "validate_1", "specifiedRules_1", "validate_2", "directiveAndTypeSpecification_1", "suggestions_1", "error_1", "knownCoreFeatures_1", "validationErrorCode", "DEFAULT_VALIDATION_ERROR_MESSAGE", "EMPTY_SET", "ErrGraphQLValidationFailed", "__name", "causes", "message", "exports", "apiSchemaValidationErrorCode", "ErrGraphQLAPISchemaValidationFailed", "defaultRootName", "rootKind", "checkDefaultSchemaRoot", "type", "isSchemaRootType", "isObjectType", "isNamedType", "BaseNamedType", "isWrapperType", "isListType", "isNonNullType", "isScalarType", "isCustomScalarType", "graphQLBuiltInTypes", "isIntType", "isStringType", "isFloatType", "isBooleanType", "isIDType", "isInterfaceType", "isEnumType", "isUnionType", "isInputObjectType", "isOutputType", "baseType", "isInputType", "isTypeOfKind", "kind", "filterTypesOfKind", "types", "acc", "isNullableType", "isAbstractType", "isCompositeType", "possibleRuntimeTypes", "runtimeTypesIntersects", "t1", "t2", "rt1", "rt2", "obj1", "obj2", "supertypes", "isConditionalDirective", "directive", "executableDirectiveLocationsSet", "isExecutableDirectiveLocation", "loc", "typeSystemDirectiveLocationsSet", "isTypeSystemDirectiveLocation", "typeToAST", "typeFromAST", "schema", "node", "ListType", "NonNullType", "isLeafType", "DirectiveTargetElement", "_schema", "directives", "d", "toAdd", "Directive", "Element", "nameOrDefinition", "directiveName", "directivesToDirectiveNodes", "directivesToString", "collector", "applied", "sourceASTs", "elts", "elt", "Schema", "SchemaElement", "parent", "Extension", "element", "_SchemaElement", "nameOrDef", "args", "extension", "_a", "asFirstDirective", "def", "DirectiveDefinition", "addedElement", "thisElement", "thatSchema", "NamedSchemaElement", "name", "isBuiltIn", "referencer", "_b", "newName", "oldName", "toReturn", "r", "ref", "NamedSchemaElementWithType", "removeReferenceToType", "addReferenceToType", "BaseExtensionMember", "SchemaBlueprint", "_directive", "_", "_type", "_fieldName", "_feature", "error", "matcher", "allDefinedDirectiveNames", "suggestions", "s", "_unknownDirectiveName", "CoreFeature", "_CoreFeature", "url", "nameInSchema", "imports", "purpose", "importName", "specUrl", "specNameInSchema", "directiveNameInSpec", "elementImport", "i", "CoreFeatures", "coreItself", "coreDef", "identity", "featureIdentity", "feature", "typedDirective", "isDirective", "splitted", "allFeatures", "as", "directFeature", "graphQLBuiltInTypesSpecifications", "graphQLBuiltInDirectivesSpecifications", "coordinateRegexp", "_Schema", "blueprint", "config", "SchemaDefinition", "spec", "fct", "wasConstructed", "definition", "ast", "apiSchema", "toRemoveIfCustom", "nodes", "includeDefer", "includeStream", "additionalNodes", "graphQLSchema", "includeShadowed", "allBuiltIns", "t", "existing", "defaultSchemaRoot", "directiveOrName", "errors", "e", "builtIns", "cloneJoinDirectives", "cloned", "copy", "coordinate", "argStartIdx", "start", "argName", "splittedStart", "typeOrDirectiveName", "fieldOrEnumName", "field", "RootType", "coreFeatures", "schemaDirective", "core", "a", "other", "nameOrType", "toSet", "obj", "prevRoot", "rootType", "toRemove", "ScalarType", "InterfaceImplementation", "itf", "FieldBasedType", "FieldDefinition", "impl", "nameOrItfOrItfImpl", "maybeItf", "f", "nameOrField", "interfaceImpl", "ObjectType", "rt", "unions", "InterfaceType", "implementations", "typeName", "UnionMember", "UnionType", "m", "nameOrTypeOrMember", "maybeObj", "member", "EnumType", "nameOrValue", "EnumValue", "value", "values", "v", "InputObjectType", "InputFieldDefinition", "BaseWrapperType", "nameOrArg", "defaultValue", "ArgumentDefinition", "arg", "defaultStr", "locations", "modified", "location", "_args", "includeDefaultValues", "updated", "argDef", "argValue", "expectedArgs", "entries", "key", "val", "expectedVal", "n", "parentDirectives", "removed", "sameDirectiveApplication", "application1", "application2", "directivesNeverEqualToThemselves", "sameDirectiveApplications", "applications1", "applications2", "directive1", "directive2", "isDirectiveApplicationsSubset", "applications", "maybeSubset", "directiveApplicationsSubstraction", "baseApplications", "application", "Variable", "VariableCollector", "variable", "variables", "isVariable", "VariableDefinition", "base", "VariableDefinitions", "_VariableDefinitions", "definitions", "varName", "newDefs", "variableDefinitionsFromAST", "definitionNodes", "definitionNode", "variableDefinitionFromAST", "newNamedType", "typesToCopy", "source", "dest", "directivesToCopy", "copyDirectiveDefinitionToSchema", "copyDirectiveApplicationsInArguments", "locationFilter", "copyDirectiveDefinitionInner", "copySchemaDefinitionInner", "copyNamedTypeInner", "copyExtensions", "extensionMap", "sourceExtension", "destExtension", "copyOfExtension", "extensionsMap", "toCopy", "copyAppliedDirective", "destFieldBasedType", "sourceField", "destField", "copyFieldDefinitionInner", "sourceImpl", "destImpl", "destUnionType", "sourceType", "destType", "destEnumType", "sourceValue", "destValue", "copyAppliedDirectives", "destInputType", "copyInputFieldDefinitionInner", "res", "copyWrapperTypeOrTypeRef", "argType", "copyArgumentDefinitionInner", "destParent", "copyDirectiveApplications", "isFieldDefinition", "elem", "isElementNamedType", "graphql_1", "coreSpec_1", "definitions_1", "knownCoreFeatures_1", "directiveAndTypeSpecification_1", "error_1", "types_1", "utils_1", "values_1", "exports", "CONNECT", "SOURCE", "URL_PATH_TEMPLATE", "JSON_SELECTION", "CONNECT_HTTP", "CONNECT_BATCH", "CONNECTOR_ERRORS", "SOURCE_HTTP", "HTTP_HEADER_MAPPING", "ConnectSpecDefinition", "__name", "version", "minimumFederationVersion", "lookupFeatureTypeInSchema", "name", "kind", "schema", "feature", "typeName", "type", "createInputObjectTypeSpecification", "jsonSelectionType", "httpHeaderMappingType", "urlPathTemplateType", "connectHttpType", "sourceHttpType", "inputFieldsFct", "asBuiltIn", "actualName", "_a", "expectedFields", "existing", "errors", "fieldName", "defaultValue", "existingField", "existingType", "field", "createdType", "newField", "graphql_1", "values_1", "definitions_1", "error_1", "introspection_1", "knownCoreFeatures_1", "connectSpec_1", "buildValue", "value", "__name", "buildSchema", "source", "options", "buildSchemaFromAST", "exports", "documentNode", "errors", "schema", "directiveDefinitions", "typeDefinitions", "typeExtensions", "schemaDefinitions", "schemaExtensions", "buildNamedTypeAndDirectivesShallow", "typeNode", "buildEnumTypeValuesWithoutDirectiveApplications", "typeExtensionNode", "extension", "directiveDefinitionNode", "buildDirectiveDefinitionInnerWithoutDirectiveApplications", "schemaDefinition", "buildSchemaDefinitionInner", "schemaExtension", "connectFeature", "_a", "handledConnectTypeNames", "connectFeatureDefinition", "connectTypeNamesInSchema", "name", "buildNamedTypeInner", "toExtend", "buildDirectiveApplicationsInDirectiveDefinition", "_b", "definitionNode", "type", "withoutTrailingDefinition", "existing", "str", "endString", "getReferencedType", "node", "withNodeAttachedToError", "operation", "e", "causes", "cause", "allNodes", "schemaNode", "opTypeNode", "buildAppliedDirectives", "elementNode", "element", "directive", "d", "buildArgs", "argumentsNode", "args", "argNode", "blueprint", "enumType", "enumVal", "fieldBasedType", "fieldNode", "field", "buildFieldDefinitionInner", "itfNode", "_c", "itfName", "unionType", "namedType", "_d", "inputObjectType", "_e", "buildInputFieldDefinitionInner", "buildDescriptionAndSourceAST", "v", "dest", "buildTypeReferenceFromAST", "validateOutputType", "inputValueDef", "buildArgumentDefinitionInner", "what", "validateInputType", "builtTypeReference", "encodedType", "wrapped", "inputNode", "arg", "includeDirectiveApplication", "directiveNode", "locations", "graphql_1", "suggestions_1", "KnownTypeNamesInFederationRule", "context", "schema", "existingTypesMap", "definedTypes", "def", "typeNames", "node", "_1", "parent", "_2", "ancestors", "typeName", "definitionNode", "_a", "isSDL", "isSDLNode", "isStandardTypeName", "suggestedTypes", "standardTypeNames", "__name", "exports", "type", "value", "graphql_1", "definitions_1", "federation_1", "error_1", "types_1", "utils_1", "values_1", "uuid_1", "exports", "validate", "condition", "message", "sourceAST", "__name", "haveSameDirectives", "op1", "op2", "AbstractOperationElement", "schema", "directives", "collector", "parentType", "key", "value", "_a", "elt", "k", "v", "d", "keyForDirective", "Field", "_Field", "definition", "args", "alias", "name", "newField", "newArgs", "newDefinition", "newAlias", "newDirectives", "entries", "assumeValid", "variableDefinitions", "contextualArguments", "argDef", "appliedValue", "validateContextualArgs", "isContextualArg", "fromContextDirective", "errorIfCannotRebase", "fieldParent", "runtimeType", "fieldDef", "fieldParentType", "returnType", "_b", "_c", "fieldInParent", "arg", "that", "n", "directive", "directivesNeverEqualToThemselves", "_", "n1", "n2", "FragmentElement", "_FragmentElement", "sourceType", "typeCondition", "newSourceType", "newCondition", "newFragment", "fragmentParent", "canRebase", "rebasedCondition", "deferName", "updatedDirectives", "updated", "normalizer", "deferArgs", "newDeferArgs", "conditionVariable", "label", "deferDirective", "operationPathToStringPath", "path", "p", "sameOperationPaths", "p1", "p2", "i", "conditionalDirectivesInOperationPath", "concatOperationPaths", "head", "tail", "lastOfHead", "conditionals", "firstOfTail", "isUselessFollowupElement", "first", "followup", "typeOfFirst", "computeFragmentsDependents", "fragments", "reverseDeps", "fragment", "dependency", "clearKeptFragments", "usages", "minUsagesToOptimize", "toCheck", "count", "newToCheck", "ownUsages", "otherName", "otherCount", "prevCount", "newCount", "computeFragmentsToKeep", "selectionSet", "reverseDependencies", "toExpand", "shouldContinue", "fragmentsUsingName", "fragName", "nameUsages", "prev", "f", "Operation", "_Operation", "rootKind", "newSelectionSet", "namedFragment", "newFragments", "allAvailableVariables", "newVariableDefinitions", "undefinedVariables", "optimizedSelection", "finalFragments", "beforeRemoval", "minimizedSelectionSet", "expanded", "labelsToRemove", "DeferNormalizer", "hasDefers", "hasNonLabelledOrConditionalDefers", "updatedOperation", "defaultedVariableValues", "variable", "defaultValue", "expandFragments", "prettyPrint", "NamedFragmentDefinition", "_NamedFragmentDefinition", "type", "conditionRuntimes", "typeRuntimes", "t1", "t2", "cached", "expandedSelectionSet", "validator", "FieldsConflictValidator", "trimmed", "otherFragment", "included", "selection", "FragmentSpreadSelection", "indent", "NamedFragments", "_NamedFragments", "mapper", "mapped", "def", "fragmentsMap", "removedFragments", "mappedFragments", "info", "mappedSelectionSet", "reoptimizedSelectionSet", "rebasedType", "rebasedSelection", "predicate", "updatedSelectionSet", "stack", "s", "candidate", "ContainsResult", "SelectionSet", "_SelectionSet", "keyedSelections", "namedFragments", "seenSelections", "mockHashCode", "equivalentSelectionSetCandidates", "match", "candidateSet", "updatedEquivalentSelectionSetCandidates", "fragmentDefinition", "length", "reversed", "newKeyedSelections", "fields", "header", "field", "byResponseName", "wrapped", "InlineFragmentSelection", "FieldsConflictMultiBranchValidator", "optimized", "selectionSetOf", "updatedFragments", "recursive", "options", "selections", "updatedSelections", "SelectionSetUpdates", "j", "newSelections", "thisSelection", "thatSelection", "ignoreMissingTypename", "isEqual", "didIgnoreTypename", "selectionResult", "remainder", "intersection", "parentTypeToTest", "isPlainTypenameSelection", "typenameSelection", "parentPaths", "updatedPaths", "callback", "operationName", "fragmentsDefinitions", "nameAndVariables", "directives_str", "includeExternalBrackets", "selectionsToString", "selectionIndent", "_SelectionSetUpdates", "addToKeyedUpdates", "element", "selectionOfElement", "cloned", "values", "makeSelectionSet", "updates", "updStr", "upd", "AbstractSelection", "keyedUpdates", "addOneToKeyedUpdates", "toAdd", "maybeRebaseOnSchema", "toRebase", "rebased", "isUnecessaryFragment", "withUnecessaryFragmentsRemoved", "filtered", "subSelections", "subSelection", "makeSelection", "updateElement", "subSelectionParentType", "subSelectionKeyedUpdates", "update", "addSubpathToKeyUpdates", "pathUpdate", "MutableSelectionSet", "_MutableSelectionSet", "_updates", "memoizer", "allFieldDefinitionsInSelectionSet", "allFields", "map", "selectionSetOfElement", "FieldSelection", "updatedSubSelectionSet", "subSelectionSetIntersection", "canUseFullMatchingFragment", "candidates", "applyingFragments", "atType", "res", "filteredApplyingFragments", "o", "notCoveredByFragments", "notCovered", "_FieldsConflictMultiBranchValidator", "validators", "forAllBranches", "vs", "t", "_FieldsConflictValidator", "level", "atLevel", "responseName", "atResponseName", "forField", "collectedFields", "thisFields", "thatFields", "thisField", "thisValidator", "thatField", "thatValidator", "byFields", "innerIndent", "next", "_FieldSelection", "_selectionSet", "updatedField", "fieldBaseType", "fieldValidator", "thisWithFilteredSelectionSet", "rebasedElement", "rebasedBase", "rebasedSelectionSet", "base", "normalizedSubSelection", "FragmentSelection", "schemaDef", "thisCondition", "_InlineFragmentSelection", "rebasedFragment", "rebasedCastedType", "spreadDirectives", "newSelection", "hasDeferToRemove", "newElement", "normalized", "normalizedSelectionSet", "currentRuntimes", "liftableSelections", "newSet", "_FragmentSpreadSelection", "_fragment", "directiveNodes", "_1", "_2", "rebaseOnSameSchema", "expandedSubSelections", "usageCount", "_labelsToRemove", "_normalizer", "selectionSetOfNode", "node", "fieldAccessor", "selectionOfNode", "selectionNode", "directiveOfNode", "directiveDef", "directivesOfNodes", "nodes", "fragmentName", "operationFromDocument", "document", "operation", "operation_directives", "typeName", "operationFromAST", "validateInput", "rootType", "fragmentsIfAny", "parseSelectionSet", "parseOperation", "source", "parseOperationAST", "parsed", "operationToDocument", "operationAST", "fragmentASTs", "hasSelectionWithPredicate", "graphql_1", "coreSpec_1", "definitions_1", "directiveAndTypeSpecification_1", "error_1", "knownCoreFeatures_1", "types_1", "exports", "TagSpecDefinition", "__name", "version", "minimumFederationVersion", "schema", "fedVersion", "definition", "hasUnknownArguments", "nameArg", "hasValidNameArg", "hasValidLocations", "loc", "_1", "computeShareables", "schema", "metadata", "keyDirective", "providesDirective", "shareableDirective", "shareableFields", "addKeyFields", "__name", "type", "key", "f", "shareablesOnType", "field", "provides", "parentType", "exports", "graphql_1", "coreSpec_1", "directiveAndTypeSpecification_1", "knownCoreFeatures_1", "AuthenticatedSpecDefinition", "_AuthenticatedSpecDefinition", "__name", "version", "minimumFederationVersion", "exports", "schema", "definitions_1", "types_1", "values_1", "supportFixedTypes", "types", "schema", "type", "supported", "t", "__name", "supportAnyNonNullNestedArray", "_", "supportAnyNonNullArray", "supportAnyArray", "mergeNullableValues", "mergeValues", "values", "nonNullValues", "v", "unionValues", "acc", "next", "newValues", "v1", "v2", "dnfConjunction", "convertEmptyToTrue", "dnfCopy", "filtered", "filterNestedArrayDuplicates", "result", "current", "accumulator", "seen", "accElement", "currentElement", "filteredElement", "e", "candidate", "key", "deduplicateSubsumedValues", "exports", "value", "inner", "a", "b", "left", "right", "first", "second", "entry", "redundant", "r", "newValue", "i", "_a", "graphql_1", "coreSpec_1", "definitions_1", "directiveAndTypeSpecification_1", "knownCoreFeatures_1", "argumentCompositionStrategies_1", "utils_1", "RequiresScopesTypeName", "exports", "RequiresScopesSpecDefinition", "_RequiresScopesSpecDefinition", "__name", "version", "schema", "feature", "scopeName", "scopeType", "graphql_1", "coreSpec_1", "definitions_1", "directiveAndTypeSpecification_1", "knownCoreFeatures_1", "argumentCompositionStrategies_1", "utils_1", "PolicyTypeName", "exports", "PolicySpecDefinition", "_PolicySpecDefinition", "__name", "version", "schema", "feature", "policyName", "PolicyType", "graphql_1", "coreSpec_1", "definitions_1", "directiveAndTypeSpecification_1", "knownCoreFeatures_1", "utils_1", "ContextDirectiveName", "exports", "fieldValueScalar", "ContextSpecDefinition", "_ContextSpecDefinition", "__name", "version", "schema", "fedVersion", "subgraph", "args", "feature", "fieldValue", "fieldValueType", "graphql_1", "directiveAndTypeSpecification_1", "coreSpec_1", "definitions_1", "knownCoreFeatures_1", "argumentCompositionStrategies_1", "exports", "CostSpecDefinition", "__name", "version", "minimumFederationVersion", "schema", "fedVersion", "coreSpec_1", "exports", "CacheTagSpecDefinition", "_CacheTagSpecDefinition", "__name", "version", "minimumFederationVersion", "definitions_1", "coreSpec_1", "directiveAndTypeSpecification_1", "graphql_1", "utils_1", "tagSpec_1", "federation_1", "knownCoreFeatures_1", "inaccessibleSpec_1", "authenticatedSpec_1", "requiresScopesSpec_1", "policySpec_1", "contextSpec_1", "costSpec_1", "cacheTagSpec_1", "exports", "FederationTypeName", "FederationDirectiveName", "fieldSetTypeSpec", "fieldsArgument", "__name", "schema", "fieldSetType", "keyDirectiveSpec", "extendsDirectiveSpec", "externalDirectiveSpec", "requiresDirectiveSpec", "providesDirectiveSpec", "legacyFederationTypes", "legacyFederationDirectives", "metadata", "FederationSpecDefinition", "version", "type", "directive", "fedVersion", "graphql_1", "coreSpec_1", "definitions_1", "knownCoreFeatures_1", "utils_1", "exports", "sanitizeGraphQLName", "name", "alphaNumericUnderscoreOnly", "noNumericFirstChar", "__name", "JoinSpecDefinition", "version", "minimumFederationVersion", "schema", "joinGraph", "graphEnum", "joinFieldSet", "joinType", "joinField", "graphArgType", "joinImplements", "joinUnionMember", "joinEnumValue", "joinDirective", "fieldValue", "contextArgumentsType", "names", "subgraphs", "sanitizedNameToSubgraphs", "subgraph", "sanitized", "subgraphToEnumName", "sanitizedName", "subgraphsForName", "index", "graphDirective", "definitions_1", "utils_1", "specifiedRules_1", "graphql_1", "KnownTypeNamesInFederationRule_1", "buildSchema_1", "operations_1", "tagSpec_1", "error_1", "precompute_1", "coreSpec_1", "federationSpec_1", "print_1", "directiveAndTypeSpecification_1", "suggestions_1", "knownCoreFeatures_1", "joinSpec_1", "linkSpec", "tagSpec", "federationSpec", "__name", "version", "spec", "autoExpandedFederationSpec", "latestFederationSpec", "exports", "FEDERATION_OMITTED_VALIDATION_RULES", "FEDERATION_SPECIFIC_VALIDATION_RULES", "FEDERATION_VALIDATION_RULES", "rule", "ALL_DEFAULT_FEDERATION_DIRECTIVE_NAMES", "FAKE_FED1_CORE_FEATURE_TO_RENAME_TYPES", "validateFieldSetSelections", "directiveName", "selectionSet", "hasExternalInParents", "metadata", "onError", "allowOnNonExternalLeafFields", "allowFieldsWithArguments", "selection", "appliedDirectives", "field", "isExternal", "mustBeExternal", "errorCode", "newHasExternalInParents", "parentType", "implem", "fieldInImplem", "validateFieldSet", "type", "directive", "errorCollector", "onFields", "parseFieldSetArgument", "fieldName", "error", "handleFieldSetValidationError", "e", "originalError", "messageUpdater", "nodes", "codeDef", "msg", "fieldSetErrorDescriptor", "fieldSetTargetDescription", "directiveStrUsingASTIfPossible", "_a", "parseContext", "input", "regex", "match", "context", "wrapResolvedType", "originalType", "resolvedType", "stack", "unwrappedType", "validateFieldValueType", "currentType", "fromContextParent", "selections", "interfaceObjectDirective", "isFederationDirectiveDefinedInSchema", "element", "childSelectionSet", "acc", "validateSelectionFormat", "firstSelectionKind", "inlineFragmentTypeConditions", "s", "typeCondition", "err", "isValidImplementationFieldType", "fieldType", "implementedFieldType", "selectionSetHasDirectives", "selectionSetHasAlias", "validateFieldValue", "setContextLocations", "expectedType", "validateSelectionFormatResults", "selectionType", "usedTypeConditions", "location", "validateAllFieldSet", "definition", "targetTypeExtractor", "isOnParentType", "allowOnInterface", "application", "elt", "code", "collectUsedFields", "usedFields", "collectUsedFieldsForDirective", "collectUsedFieldsForFromContext", "itfType", "runtimeTypes", "runtimeType", "implemField", "usedFieldDefs", "fromContextDirective", "contextDirective", "entryPoints", "fieldValue", "contextTypes", "contextType", "fieldAccessor", "t", "f", "implType", "implField", "collectTargetFields", "validateAllExternalFieldsUsed", "validateNoExternalOnInterfaceFields", "itf", "validateKeyOnInterfacesAreAlsoOnAllImplementations", "implementations", "keyApplication", "fields", "isResolvable", "implementationsWithKeyButNotResolvable", "implementationsMissingKey", "matchingApp", "app", "appFields", "typesString", "i", "validateInterfaceObjectsAreOnEntities", "isEntityType", "validateShareableNotRepeatedOnSameDeclaration", "shareableApplications", "byExtensions", "v", "ext", "groups", "group", "eltStr", "validateCostNotAppliedToInterface", "parent", "validateListSizeAppliedToList", "sizedFields", "isNonNullListType", "validateAssumedSizeNotNegative", "assumedSize", "isNonNullIntType", "ty", "validateSlicingArgumentsAreValidIntegers", "slicingArguments", "slicingArgumentName", "slicingArgument", "validateSizedFieldsAreValidLists", "baseParentType", "sizedFieldName", "sizedField", "FederationMetadata", "schema", "feature", "ExternalTester", "hasAppliedDirective", "name", "coreFeatures", "federationFeature", "baseDirectives", "composeDirective", "authenticatedDirective", "requiresScopesDirective", "policyDirective", "costDirective", "listSizeDirective", "cacheTagDirective", "fedTypes", "fedFeature", "featureDef", "typeSpec", "entityType", "FederationBlueprint", "withRootTypeRenaming", "args", "url", "as", "imports", "errors", "federationMetadata", "completeSubgraphSchema", "k", "defaultName", "existing", "keyDirective", "kind", "contextToTypeMap", "types", "_c", "_b", "objectType", "implementedInterfaceType", "implementedInterfaceField", "locations", "tagDirective", "shareableApplication", "validateNoAuthenticationOnInterfaces", "unknownDirectiveName", "directiveNameInSchema", "suggestions", "findUnusedNamedForLinkDirective", "baseName", "candidate", "setSchemaAsFed2Subgraph", "useLatest", "core", "alias", "fedSpec", "asFed2SubgraphDocument", "document", "options", "importedDirectives", "directiveToAdd", "existingSchemaDefinition", "d", "hasMutation", "makeOpType", "opType", "printSubgraphNames", "names", "n", "isFederationSubgraphSchema", "isFederationField", "isInterfaceObjectType", "buildSubgraph", "source", "buildOptions", "subgraph", "Subgraph", "addSubgraphToError", "newEmptyFederation2Schema", "config", "completeFed2SubgraphSchema", "completeFed1SubgraphSchema", "isFedSpecLinkDirective", "fieldTypeIsWrongInKnownWays", "expandKnownFeatures", "validate", "decorateValidationErrors", "normalize", "validateFieldSetValue", "includeInterfaceFieldsImplementations", "argNode", "subgraphsFromServiceList", "serviceList", "subgraphs", "Subgraphs", "service", "causes", "queryRoot", "queryType", "entityField", "entityFieldType", "urlArg", "basePrintOptions", "addSubgraphToASTNode", "node", "subgraphName", "updatedCauses", "cause", "message", "isFed2Schema", "extendsDirective", "key", "provides", "removeInactiveProvidesAndRequires", "onModified", "providesDirective", "requiresDirective", "fieldBaseType", "removeInactiveApplications", "directiveDefinition", "selectsNonExternalLeafField", "updated", "withoutNonExternalLeafFields", "updatedDirective", "isExternalOrHasExternalImplementations", "require_color_name", "__commonJSMin", "exports", "module", "require_conversions", "__commonJSMin", "exports", "module", "cssKeywords", "reverseKeywords", "key", "convert", "model", "channels", "labels", "rgb", "r", "g", "b", "min", "max", "delta", "h", "s", "rdif", "gdif", "bdif", "v", "diff", "diffc", "__name", "c", "w", "k", "m", "y", "comparativeDistance", "x", "reversed", "currentClosestDistance", "currentClosestKeyword", "keyword", "value", "distance", "z", "xyz", "l", "hsl", "t2", "t3", "val", "t1", "i", "smin", "lmin", "sv", "hsv", "hi", "f", "p", "q", "t", "vmin", "sl", "hwb", "wh", "bl", "ratio", "n", "cmyk", "a", "lab", "y2", "x2", "z2", "lch", "hr", "args", "saturation", "ansi", "color", "mult", "rem", "string", "match", "colorString", "char", "integer", "chroma", "grayscale", "hue", "hcg", "pure", "mg", "apple", "gray", "require_route", "__commonJSMin", "exports", "module", "conversions", "buildGraph", "graph", "models", "len", "__name", "deriveBFS", "fromModel", "queue", "current", "adjacents", "i", "adjacent", "node", "link", "from", "to", "args", "wrapConversion", "toModel", "path", "fn", "cur", "conversion", "require_color_convert", "__commonJSMin", "exports", "module", "conversions", "route", "convert", "models", "wrapRaw", "fn", "wrappedFn", "__name", "args", "arg0", "wrapRounded", "result", "len", "i", "fromModel", "routes", "toModel", "require_ansi_styles", "__commonJSMin", "exports", "module", "wrapAnsi16", "__name", "fn", "offset", "args", "wrapAnsi256", "code", "wrapAnsi16m", "rgb", "ansi2ansi", "n", "rgb2rgb", "r", "g", "b", "setLazyProperty", "object", "property", "get", "value", "colorConvert", "makeDynamicStyles", "wrap", "targetSpace", "identity", "isBackground", "styles", "sourceSpace", "suite", "name", "assembleStyles", "codes", "groupName", "group", "styleName", "style", "require_has_flag", "__commonJSMin", "exports", "module", "flag", "argv", "prefix", "position", "terminatorPosition", "require_supports_color", "__commonJSMin", "exports", "module", "os", "tty", "hasFlag", "env", "forceColor", "translateLevel", "level", "__name", "supportsColor", "haveStream", "streamIsTTY", "min", "osRelease", "sign", "version", "getSupportLevel", "stream", "require_util", "__commonJSMin", "exports", "module", "stringReplaceAll", "__name", "string", "substring", "replacer", "index", "substringLength", "endIndex", "returnValue", "stringEncaseCRLFWithFirstIndex", "prefix", "postfix", "gotCR", "require_templates", "__commonJSMin", "exports", "module", "TEMPLATE_REGEX", "STYLE_REGEX", "STRING_REGEX", "ESCAPE_REGEX", "ESCAPES", "unescape", "c", "u", "bracket", "__name", "parseArguments", "name", "arguments_", "results", "chunks", "matches", "chunk", "number", "m", "escape", "character", "parseStyle", "style", "args", "buildStyle", "chalk", "styles", "enabled", "layer", "current", "styleName", "temporary", "escapeCharacter", "inverse", "close", "string", "errMessage", "require_source", "__commonJSMin", "exports", "module", "ansiStyles", "stdoutColor", "stderrColor", "stringReplaceAll", "stringEncaseCRLFWithFirstIndex", "isArray", "levelMapping", "styles", "applyOptions", "__name", "object", "options", "colorLevel", "ChalkClass", "chalkFactory", "chalk", "arguments_", "chalkTag", "Chalk", "styleName", "style", "builder", "createBuilder", "createStyler", "usedModels", "model", "level", "styler", "bgModel", "proto", "open", "close", "parent", "openAll", "closeAll", "self", "_styler", "_isEmpty", "applyStyle", "string", "lfIndex", "template", "strings", "firstString", "parts", "i", "chalk_1", "__importDefault", "utils_1", "indentString", "indentLevel", "str", "i", "__name", "isEnabled", "name", "v", "bool", "n", "currentIndentLevel", "currentIndentation", "maxLoggerNameLength", "createdLoggers", "newDebugLogger", "enabled", "created", "DebugLogger", "logger", "exports", "increaseIndentation", "decreaseIndentation", "maxLength", "padding", "toPad", "indent", "withIndentedNewlines", "message", "prefix", "values", "printFn", "initialMessage", "value", "map", "keyPrintFn", "valuePrintFn", "k", "openingMessage", "closingMessage", "definitions_1", "federation_1", "coreSpec_1", "federation_2", "utils_1", "supergraphs_1", "buildSchema_1", "types_1", "print_1", "operations_1", "fs_1", "__importDefault", "path_1", "utils_2", "_1", "filteredTypes", "supergraph", "joinSpec", "coreSpec", "t", "__name", "extractSubgraphsNamesAndUrlsFromSupergraph", "_", "subgraphs", "collectEmptySubgraphs", "subgraph", "exports", "graphDirective", "graphEnum", "graphEnumNameToSubgraphName", "value", "graphApplications", "info", "SubgraphExtractionError", "originalError", "collectFieldReachableTypesForSubgraph", "subgraphName", "addReachableType", "fieldInfoInSubgraph", "typeInfoInSubgraph", "seenTypes", "stack", "root", "type", "isEntityWithKeyInSubgraph", "typesInFederationDirectives", "field", "isInSubgraph", "arg", "m", "directive", "collectFieldReachableTypesForAllSubgraphs", "allSubgraphs", "reachableTypesBySubgraphs", "reachableTypes", "typesUsedInFederationDirective", "fieldSet", "parentType", "usedTypes", "fieldName", "extractSubgraphsFromSupergraph", "validateExtractedSubgraphs", "coreFeatures", "contextSpec", "costSpec", "isFed1", "getSubgraph", "application", "graph", "subgraphNameToGraphEnumValue", "k", "v", "getSubgraphEnumValue", "enumValue", "types", "args", "extractSubgraphsFromFed1Supergraph", "extractSubgraphsFromFed2Supergraph", "e", "error", "impacted", "msg", "errorToString", "dumpMsg", "maybeDumpSubgraphSchema", "addAllEmptySubgraphTypes", "typeDirective", "objOrItfTypes", "inputObjTypes", "enumTypes", "unionTypes", "typeApplications", "addEmptyType", "subgraphType", "propagateDemandControlDirectives", "subgraphsInfo", "key", "extension", "resolvable", "isInterfaceObject", "subgraphInfo", "kind", "supergraphContextDirective", "_a", "contextApplications", "name", "match", "context", "contextDirective", "extractObjOrItfContent", "fieldDirective", "implementsDirective", "implementsApplications", "fieldApplications", "isShareable", "addSubgraphField", "joinFieldArgs", "extractInputObjContent", "addSubgraphInputField", "extractEnumTypeContent", "enumValueDirective", "enumValueApplications", "extractUnionTypeContent", "unionMemberDirective", "unionMemberApplications", "member", "subgraphMember", "allExecutableDirectives", "def", "removeUnusedTypesFromSubgraph", "definition", "loc", "DEBUG_SUBGRAPHS_ENV_VARIABLE_NAME", "filename", "file", "e2", "source", "dest", "costDirective", "listSizeDirective", "causes", "copiedFieldType", "decodeType", "copyType", "subgraphField", "argDef", "fromContextDirective", "argOnField", "external", "usedOverridden", "copiedType", "inputField", "ownerDirective", "reachableTypesBySubgraph", "f", "ownerApplications", "includeTypeInSubgraph", "_b", "schema", "implementations", "subgraphItf", "addSubgraphFieldForFed1", "fieldBaseType", "s", "subgraphEnum", "subgraphUnion", "memberTypeName", "addExternalFields", "encodedType", "metadata", "keyApplication", "forceNonExternal", "addExternalFieldsFromDirectiveFieldSet", "requiresApplication", "providesApplication", "addExternalFieldsFromInterface", "fieldAccessor", "d", "supergraphField", "created", "itf", "typeField", "maybeUpdateFieldForInterface", "copyFieldAsExternal", "newField", "toModify", "itfField", "definitions_1", "coreSpec_1", "joinSpec_1", "contextSpec_1", "costSpec_1", "buildSchema_1", "extractSubgraphsFromSupergraph_1", "error_1", "exports", "coreVersionZeroDotOneUrl", "checkFeatureSupport", "coreFeatures", "supportedFeatures", "errors", "coreItself", "purposefulFeatures", "f", "feature", "__name", "validateSupergraph", "supergraph", "joinFeature", "joinSpec", "contextFeature", "contextSpec", "costFeature", "costSpec", "isFed1Supergraph", "Supergraph", "_Supergraph", "schema", "shouldValidate", "supergraphSdl", "options", "extractionResults", "graphql_1", "error_1", "definitions_1", "federation_1", "utils_1", "values_1", "federationSpec_1", "ExternalOnTypeExtensionRemoval", "__name", "field", "exports", "TypeExtensionRemoval", "type", "ExternalOnInterfaceRemoval", "ExternalOnObjectTypeRemoval", "UnusedExternalRemoval", "TypeWithOnlyUnusedExternalRemoval", "InactiveProvidesOrRequiresRemoval", "parent", "removed", "InactiveProvidesOrRequiresFieldsRemoval", "original", "updated", "ShareableFieldAddition", "declaringSubgraphs", "ShareableTypeAddition", "KeyOnInterfaceRemoval", "ProvidesOrRequiresOnInterfaceFieldRemoval", "directive", "ProvidesOnNonCompositeRemoval", "FieldsArgumentCoercionToString", "element", "before", "after", "RemovedTagOnExternal", "application", "upgradeSubgraphsIfNecessary", "inputs", "changes", "s", "subgraphs", "errors", "subgraphsUsingInterfaceObject", "objectTypeMap", "subgraph", "t", "entry", "res", "SchemaUpgrader", "fed1Subgraphs", "isFederationTypeExtension", "metadata", "hasExtend", "isRootTypeExtension", "getField", "schema", "typeName", "fieldName", "originalSubgraph", "allSubgraphs", "e", "causes", "c", "typeSpec", "typeNameInOriginal", "elt", "applications", "change", "extensionAST", "_a", "typeInOtherSubgraphs", "subgraphName", "_", "i", "otherType", "fields", "f", "nodes", "argNode", "itf", "external", "updatedSourceAST", "newDirective", "keyApplication", "otherSubgraphName", "v", "typeInOther", "keysInOther", "ownField", "originalMetadata", "keyDirective", "shareableDirective", "tagDirective", "d", "graphql_1", "definitions_1", "allOperationTypeNode", "graphQLJSSchemaToAST", "schema", "types", "type", "directives", "directive", "schemaASTs", "toNodeArray", "graphQLJSSchemaToSchemaDefinitionAST", "typesASTs", "graphQLJSNamedTypeToAST", "directivesASTs", "graphQLJSDirectiveToAST", "__name", "exports", "definition", "extensions", "maybe", "v", "hasNonDefaultRootNames", "operationTypes", "operation", "t", "isNonDefaultRootName", "fakeSchema", "def", "__exportStar", "exports", "knownCoreFeatures_1", "__name", "federation_internals_1", "graphql_1", "buildOperationContext", "schema", "operationDocument", "operationName", "operation", "operationCount", "fragments", "definition", "__name", "exports", "require_lib", "__commonJSMin", "exports", "module", "_interopDefault", "ex", "__name", "Stream", "http", "Url", "whatwgUrl", "https", "zlib", "Readable", "BUFFER", "TYPE", "Blob", "_Blob", "blobParts", "options", "buffers", "size", "length", "i", "element", "buffer", "type", "buf", "ab", "readable", "start", "end", "relativeStart", "relativeEnd", "span", "slicedBuffer", "blob", "FetchError", "message", "systemError", "convert", "INTERNALS", "PassThrough", "Body", "body", "_this", "_ref", "_ref$size", "_ref$timeout", "timeout", "isURLSearchParams", "isBlob", "err", "error", "consumeBody", "ct", "_this2", "_this3", "convertBody", "proto", "name", "desc", "_this4", "accum", "accumBytes", "abort", "resolve", "reject", "resTimeout", "chunk", "headers", "charset", "res", "str", "obj", "clone", "instance", "p1", "p2", "extractContentType", "getTotalBytes", "writeToStream", "dest", "invalidTokenRegex", "invalidHeaderCharRegex", "validateName", "validateValue", "value", "find", "map", "key", "MAP", "Headers", "_Headers", "init", "rawHeaders", "headerNames", "headerName", "method", "pairs", "pair", "callback", "thisArg", "getHeaders", "_pairs$i", "createHeadersIterator", "kind", "k", "INTERNAL", "target", "iterator", "HeadersIteratorPrototype", "_INTERNAL", "index", "values", "len", "exportNodeCompatibleHeaders", "hostHeaderKey", "createHeadersLenient", "val", "INTERNALS$1", "STATUS_CODES", "Response", "_Response", "opts", "status", "contentType", "INTERNALS$2", "URL", "parse_url", "format_url", "parseURL", "urlStr", "streamDestructionSupported", "isRequest", "input", "isAbortSignal", "signal", "Request", "_Request", "parsedURL", "inputBody", "getNodeRequestOptions", "request", "contentLengthValue", "totalBytes", "agent", "AbortError", "URL$1", "PassThrough$1", "isDomainOrSubdomain", "destination", "original", "orig", "isSameProtocol", "fetch", "url", "send", "response", "destroyStream", "abortAndFinalize", "finalize", "req", "reqTimeout", "socket", "fixResponseChunkedTransferBadEnding", "s", "hadError", "hasDataListener", "location", "locationURL", "requestOpts", "response_options", "codings", "zlibOptions", "raw", "errorCallback", "stream", "code", "GraphQLDataSourceRequestKind", "exports", "graphql_1", "exports", "value", "queryPlan", "config", "indentation", "depth", "refs", "printer", "printNodes", "printNode", "node", "result", "indentationNext", "printOperation", "__name", "operationString", "indent", "flattenEntitiesField", "idStr", "primary", "indentationInner", "printDeferredNodes", "rest", "nodes", "i", "printDeferredNode", "dependsStr", "id", "deferLabel", "pathStr", "labelStr", "operation", "selectionSet", "firstSelection", "graphql_1", "exports", "value", "config", "indentation", "_depth", "_refs", "_printer", "lines", "remapInlineFragmentNodes", "line", "indentationLength", "getIndentationLength", "dedentedLine", "indentationDepth", "result", "__name", "node", "fragmentNode", "remapSelections", "selections", "selection", "queryPlanSerializer_1", "exports", "__name", "__importDefault", "astSerializer_1", "require_ansi_styles", "__commonJSMin", "exports", "module", "wrapAnsi256", "__name", "offset", "code", "wrapAnsi16m", "red", "green", "blue", "assembleStyles", "codes", "styles", "groupName", "group", "styleName", "style", "hex", "matches", "colorString", "character", "integer", "require_collections", "__commonJSMin", "exports", "printIteratorEntries", "printIteratorValues", "printListItems", "printObjectProperties", "getKeysOfEnumerableProperties", "__name", "object", "compareKeys", "rawKeys", "keys", "symbol", "iterator", "config", "indentation", "depth", "refs", "printer", "separator", "result", "width", "current", "indentationNext", "name", "value", "list", "i", "val", "key", "require_AsymmetricMatcher", "__commonJSMin", "exports", "_collections", "Symbol", "asymmetricMatcher", "SPACE", "serialize", "__name", "val", "config", "indentation", "depth", "refs", "printer", "stringedValue", "test", "plugin", "_default", "require_DOMCollection", "__commonJSMin", "exports", "_collections", "SPACE", "OBJECT_NAMES", "ARRAY_REGEXP", "testName", "__name", "name", "test", "val", "isNamedNodeMap", "collection", "serialize", "config", "indentation", "depth", "refs", "printer", "props", "attribute", "plugin", "_default", "require_escapeHTML", "__commonJSMin", "exports", "escapeHTML", "str", "__name", "require_markup", "__commonJSMin", "exports", "_escapeHTML", "_interopRequireDefault", "obj", "__name", "printProps", "keys", "props", "config", "indentation", "depth", "refs", "printer", "indentationNext", "colors", "key", "value", "printed", "printChildren", "children", "child", "printText", "text", "contentColor", "printComment", "comment", "commentColor", "printElement", "type", "printedProps", "printedChildren", "tagColor", "printElementAsLeaf", "require_DOMElement", "__commonJSMin", "exports", "_markup", "ELEMENT_NODE", "TEXT_NODE", "COMMENT_NODE", "FRAGMENT_NODE", "ELEMENT_REGEXP", "testHasAttribute", "__name", "val", "testNode", "constructorName", "nodeType", "tagName", "isCustomElement", "test", "nodeIsText", "node", "nodeIsComment", "nodeIsFragment", "serialize", "config", "indentation", "depth", "refs", "printer", "type", "attr", "props", "attribute", "plugin", "_default", "require_Immutable", "__commonJSMin", "exports", "_collections", "IS_ITERABLE_SENTINEL", "IS_LIST_SENTINEL", "IS_KEYED_SENTINEL", "IS_MAP_SENTINEL", "IS_ORDERED_SENTINEL", "IS_RECORD_SENTINEL", "IS_SEQ_SENTINEL", "IS_SET_SENTINEL", "IS_STACK_SENTINEL", "getImmutableName", "__name", "name", "printAsLeaf", "SPACE", "LAZY", "printImmutableEntries", "val", "config", "indentation", "depth", "refs", "printer", "type", "getRecordEntries", "i", "key", "printImmutableRecord", "printImmutableSeq", "printImmutableValues", "serialize", "test", "plugin", "_default", "require_react_is_production_min", "__commonJSMin", "exports", "b", "c", "d", "e", "f", "g", "h", "k", "l", "m", "n", "p", "q", "t", "u", "v", "a", "r", "__name", "require_react_is_development", "__commonJSMin", "exports", "REACT_ELEMENT_TYPE", "REACT_PORTAL_TYPE", "REACT_FRAGMENT_TYPE", "REACT_STRICT_MODE_TYPE", "REACT_PROFILER_TYPE", "REACT_PROVIDER_TYPE", "REACT_CONTEXT_TYPE", "REACT_SERVER_CONTEXT_TYPE", "REACT_FORWARD_REF_TYPE", "REACT_SUSPENSE_TYPE", "REACT_SUSPENSE_LIST_TYPE", "REACT_MEMO_TYPE", "REACT_LAZY_TYPE", "REACT_OFFSCREEN_TYPE", "enableScopeAPI", "enableCacheElement", "enableTransitionTracing", "enableLegacyHidden", "enableDebugTracing", "REACT_MODULE_REFERENCE", "isValidElementType", "type", "__name", "typeOf", "object", "$$typeof", "$$typeofType", "ContextConsumer", "ContextProvider", "Element", "ForwardRef", "Fragment", "Lazy", "Memo", "Portal", "Profiler", "StrictMode", "Suspense", "SuspenseList", "hasWarnedAboutDeprecatedIsAsyncMode", "hasWarnedAboutDeprecatedIsConcurrentMode", "isAsyncMode", "isConcurrentMode", "isContextConsumer", "isContextProvider", "isElement", "isForwardRef", "isFragment", "isLazy", "isMemo", "isPortal", "isProfiler", "isStrictMode", "isSuspense", "isSuspenseList", "require_react_is", "__commonJSMin", "exports", "module", "require_ReactElement", "__commonJSMin", "exports", "ReactIs", "_interopRequireWildcard", "_markup", "_getRequireWildcardCache", "nodeInterop", "cacheBabelInterop", "cacheNodeInterop", "__name", "obj", "cache", "newObj", "hasPropertyDescriptor", "key", "desc", "getChildren", "arg", "children", "item", "getType", "element", "type", "functionName", "getPropKeys", "props", "serialize", "config", "indentation", "depth", "refs", "printer", "test", "val", "plugin", "_default", "require_ReactTestComponent", "__commonJSMin", "exports", "_markup", "Symbol", "testSymbol", "getPropKeys", "__name", "object", "props", "key", "serialize", "config", "indentation", "depth", "refs", "printer", "test", "val", "plugin", "_default", "require_build", "__commonJSMin", "exports", "format", "_ansiStyles", "_interopRequireDefault", "_collections", "_AsymmetricMatcher", "_DOMCollection", "_DOMElement", "_Immutable", "_ReactElement", "_ReactTestComponent", "obj", "__name", "toString", "toISOString", "errorToString", "regExpToString", "getConstructorName", "val", "isWindow", "SYMBOL_REGEXP", "NEWLINE_REGEXP", "PrettyFormatPluginError", "message", "stack", "isToStringedArrayType", "toStringed", "printNumber", "printBigInt", "printFunction", "printFunctionName", "printSymbol", "printError", "printBasicValue", "escapeRegex", "escapeString", "typeOf", "printComplexValue", "config", "indentation", "depth", "refs", "hasCalledToJSON", "hitMaxDepth", "min", "printer", "isNewPlugin", "plugin", "printPlugin", "printed", "valChild", "str", "indentationNext", "error", "findPlugin", "plugins", "p", "basicResult", "DEFAULT_THEME", "DEFAULT_THEME_KEYS", "toOptionsSubtype", "options", "DEFAULT_OPTIONS", "validateOptions", "key", "getColorsHighlight", "colors", "value", "color", "getColorsEmpty", "getPrintFunctionName", "getEscapeRegex", "getEscapeString", "getConfig", "createIndent", "indent", "_default", "pretty_format_1", "__importDefault", "snapshotSerializers_1", "prettyFormatQueryPlan", "queryPlan", "__name", "exports", "graphql_1", "pretty_format_1", "__importDefault", "snapshotSerializers_1", "serializeQueryPlan", "queryPlan", "__name", "exports", "getResponseName", "node", "trimSelectionNodes", "selections", "remapped", "selection", "_a", "isPlanNode", "KeyResolution", "__name", "exports", "RootTypeResolution", "rootKind", "FieldCollection", "definition", "isPartOfProvide", "DownCast", "sourceType", "castedType", "SubgraphEnteringTransition", "InterfaceObjectFakeDownCast", "castedTypeName", "federation_internals_1", "querygraph_1", "preComputeNonTrivialFollowupEdges", "graph", "state", "edge", "followupEdges", "computeNonTrivialFollowups", "previousEdge", "nonTrivialFollowups", "__name", "exports", "allFollowups", "followup", "sameConditions", "e1", "e2", "federation_internals_1", "querygraph_1", "NonLocalSelectionsMetadata", "_NonLocalSelectionsMetadata", "__name", "graph", "verticesToInterfaceObjectOptions", "edge", "fieldName", "endpointsEntry", "downcastsEntry", "typeConditionName", "headTypeName", "tailTypeName", "indirectOptionsEntry", "interfaceObjectOptionsEntry", "vertex", "options", "optionsMetadata", "option", "indirectOptionsMetadata", "metadata", "compositeTypesToVerticesBySource", "typesToVerticesEntry", "verticesEntry", "source", "schema", "fieldsToRebaseableTypes", "objectTypesToImplementingCompositeTypes", "fromContextDirectiveName", "type", "field", "arg", "rebaseableTypesEntry", "implementingObjectTypesEntry", "interfaceImplementation", "member", "inlineFragmentsToRebaseableTypes", "implementingTypes", "typeName", "implementingType", "compositeTypesToVertices", "_a", "types", "rebaseableParentVerticesEntry", "vertices", "stack", "state", "supergraphSchema", "inconsistentAbstractTypesRuntimes", "overrideConditions", "isInitialSubgraphConstrained", "selection", "simultaneousPaths", "tailVertices", "simultaneousPath", "path", "tailVerticesInfo", "selectionHasDefer", "isInitialSubgraphConstrainedAfterElement", "nextVertices", "selectionSet", "parentVertices", "parentSelectionHasDefer", "selectionSetIsNonLocal", "element", "selectionHasInconsistentRuntimeTypes", "oldCount", "outer", "rebaseableParentVertices", "numSelections", "numParentVertices", "additional_count", "new_count", "selectionKey", "cache", "nextVerticesInfo", "cacheEntry", "indirectOptions", "target", "fieldEndpoints", "processHeadVertex", "fieldTail", "downcasts", "inlineFragmentEndpoints", "runtimeTypes", "nextVertex", "typeInSupergraph", "ignoreIndirectOptions", "exports", "NonLocalSelectionsState", "federation_internals_1", "util_1", "transition_1", "nonTrivialEdgePrecomputing_1", "nonLocalSelectionsEstimation_1", "exports", "FEDERATED_GRAPH_ROOT_SCHEMA", "federatedGraphRootTypeName", "rootKind", "__name", "isFederatedGraphRootType", "type", "Vertex", "index", "source", "label", "RootVertex", "toRootVertex", "vertex", "isRootVertex", "checkOverrideCondition", "overrideCondition", "conditionsToCheck", "condition", "Edge", "_Edge", "head", "tail", "transition", "conditions", "requiredContexts", "name", "otherTransition", "conditionsString", "_a", "newHead", "newConditions", "contextConditions", "QueryGraph", "vertices", "_outEdges", "typesToVertices", "rootVertices", "sources", "subgraphToArgs", "subgraphToArgIndices", "schema", "isFederatedAndForQueryPlanning", "acc", "v", "kind", "includeKeyAndRootTypeEdgesToSelf", "allEdges", "e", "edgeIndex", "vertexOutEdges", "outEdge", "typeName", "indexes", "QueryGraphState", "state", "edge", "edgeMap", "vertexMapper", "edgeMapper", "vs", "a", "b", "idx", "es", "vIdx", "adj", "eIdx", "buildQueryGraph", "overrideLabelsByCoordinate", "buildGraphInternal", "addAdditionalAbstractTypeEdges", "supergraphSchema", "builder", "GraphBuilderFromSchema", "rootType", "buildSupergraphAPIQueryGraph", "supergraph", "apiSchema", "joinFieldApplications", "application", "overrideLabel", "buildFederatedQueryGraph", "forQueryPlanning", "subgraphs", "graphs", "subgraph", "federateSubgraphs", "federatedProperties", "rootKinds", "schemas", "k", "resolvableKeyApplications", "keyDirective", "verticesCount", "GraphBuilder", "copyPointers", "i", "copyPointer", "rootVertex", "j", "otherSubgraph", "otherRootVertex", "otherCopyPointer", "subgraphSchema", "subgraphMetadata", "requireDirective", "simpleTraversal", "keyApplication", "isInterfaceObject", "otherVertices", "otherVertex", "typeInSupergraph", "implemTypeInSupergraph", "implemVertice", "implemHead", "implemType", "implConditions", "field", "requiresApplication", "subgraphsByName", "s", "toSubgraph", "updateEdgeWithOverrideCondition", "unexpectedAdditionalVertices", "subgraphEdges", "copiedEdge", "from", "fromSubgraph", "contextNameToTypes", "context", "coordinateMap", "selection", "namedParameter", "argCoordinate", "args", "fieldCoordinate", "typesWithContextSet", "z", "_v", "coordinate", "headInSupergraph", "subgraphName", "argToIndex", "provideId", "providesDirective", "_", "providesApplication", "fieldType", "provided", "copiedTail", "addProvidesEdges", "interfaceObjectDirective", "supergraphItf", "implementation", "stack", "selectionSet", "element", "fieldDef", "existingEdge", "existingTail", "newTail", "typeCondition", "headOutEdges", "tailInEdges", "previous", "rootEdges", "graph", "offset", "that", "original", "newVertex", "newEdge", "toCopy", "indexOffset", "elt", "directiveFct", "metadata", "root", "namedType", "existing", "_b", "fieldName", "m", "supergraphType", "localRuntimeTypes", "t", "implementations", "implementationType", "abstractTypesWithTheirRuntimeTypes", "t1", "t1Vertex", "t2", "addT1ToT2", "addT2ToT1", "intersectingLocal", "o1", "isInLocalOtherTypeButNotLocalIntersection", "otherType", "rt", "t2Vertex", "entityType", "entityTypeVertex", "itfType", "itfTypeVertex", "onVertex", "onEdges", "marked", "maybeAdd", "require_isArguments", "__commonJSMin", "exports", "module", "toStr", "__name", "value", "str", "isArgs", "require_implementation", "__commonJSMin", "exports", "module", "keysShim", "has", "toStr", "isArgs", "isEnumerable", "hasDontEnumBug", "hasProtoEnumBug", "dontEnums", "equalsConstructorPrototype", "__name", "o", "ctor", "excludedKeys", "hasAutomationEqualityBug", "k", "equalsConstructorPrototypeIfNotBuggy", "object", "isObject", "isFunction", "isArguments", "isString", "theKeys", "skipProto", "i", "j", "name", "skipConstructor", "require_object_keys", "__commonJSMin", "exports", "module", "slice", "isArgs", "origKeys", "keysShim", "__name", "o", "originalKeys", "keysWorksWithArguments", "args", "object", "require_define_properties", "__commonJSMin", "exports", "module", "keys", "hasSymbols", "toStr", "concat", "defineDataProperty", "isFunction", "__name", "fn", "supportsDescriptors", "defineProperty", "object", "name", "value", "predicate", "defineProperties", "map", "predicates", "props", "i", "require_implementation", "__commonJSMin", "exports", "module", "objectKeys", "hasSymbols", "callBound", "$Object", "$push", "$propIsEnumerable", "originalGetSymbols", "__name", "target", "source1", "to", "s", "from", "keys", "getSymbols", "syms", "j", "key", "i", "nextKey", "propValue", "require_polyfill", "__commonJSMin", "exports", "module", "implementation", "lacksProperEnumerationOrder", "__name", "str", "letters", "map", "obj", "actual", "k", "assignHasPendingExceptions", "thrower", "require_shim", "__commonJSMin", "exports", "module", "define", "getPolyfill", "__name", "polyfill", "require_object", "__commonJSMin", "exports", "module", "defineProperties", "callBind", "implementation", "getPolyfill", "shim", "polyfill", "bound", "__name", "target", "source1", "require_callBound", "__commonJSMin", "exports", "module", "GetIntrinsic", "callBind", "$indexOf", "__name", "name", "allowMissing", "intrinsic", "require_functions_have_names", "__commonJSMin", "exports", "module", "functionsHaveNames", "__name", "gOPD", "desc", "$bind", "require_set_function_name", "__commonJSMin", "exports", "module", "define", "hasDescriptors", "functionsHaveConfigurableNames", "$TypeError", "__name", "fn", "name", "loose", "require_implementation", "__commonJSMin", "exports", "module", "setFunctionName", "$TypeError", "$Object", "__name", "result", "require_polyfill", "__commonJSMin", "exports", "module", "implementation", "supportsDescriptors", "$gOPD", "__name", "descriptor", "calls", "o", "require_shim", "__commonJSMin", "exports", "module", "supportsDescriptors", "getPolyfill", "gOPD", "defineProperty", "$TypeError", "getProto", "regex", "__name", "polyfill", "proto", "descriptor", "require_regexp_prototype", "__commonJSMin", "exports", "module", "define", "callBind", "implementation", "getPolyfill", "shim", "flagsBound", "require_node", "__commonJSMin", "exports", "module", "$iterator", "__name", "iterable", "require_util_inspect", "__commonJSMin", "exports", "module", "require_object_inspect", "__commonJSMin", "exports", "module", "hasMap", "mapSizeDescriptor", "mapSize", "mapForEach", "hasSet", "setSizeDescriptor", "setSize", "setForEach", "hasWeakMap", "weakMapHas", "hasWeakSet", "weakSetHas", "hasWeakRef", "weakRefDeref", "booleanValueOf", "objectToString", "functionToString", "$match", "$slice", "$replace", "$toUpperCase", "$toLowerCase", "$test", "$concat", "$join", "$arrSlice", "$floor", "bigIntValueOf", "gOPS", "symToString", "hasShammedSymbols", "toStringTag", "isEnumerable", "gPO", "O", "addNumericSeparator", "num", "str", "sepRegex", "int", "intStr", "dec", "__name", "utilInspect", "inspectCustom", "inspectSymbol", "isSymbol", "quotes", "quoteREs", "inspect_", "obj", "options", "depth", "seen", "opts", "has", "customInspect", "numericSeparator", "inspectString", "bigIntStr", "maxDepth", "isArray", "indent", "getIndent", "indexOf", "inspect", "value", "from", "noIndent", "newOpts", "isRegExp", "name", "nameOf", "keys", "arrObjKeys", "symString", "markBoxed", "isElement", "s", "attrs", "i", "wrapQuotes", "quote", "xs", "singleLineValues", "indentedJoin", "isError", "parts", "isMap", "mapParts", "key", "collectionOf", "isSet", "setParts", "isWeakMap", "weakCollectionOf", "isWeakSet", "isWeakRef", "isNumber", "isBigInt", "isBoolean", "isString", "isDate", "ys", "isPlainObject", "protoTag", "stringTag", "toStr", "constructorTag", "tag", "defaultStyle", "style", "quoteChar", "canTrustToString", "hasOwn", "f", "m", "x", "l", "remaining", "trailer", "quoteRE", "lowbyte", "c", "n", "type", "size", "entries", "joinedEntries", "baseIndent", "lineJoiner", "isArr", "syms", "symMap", "k", "j", "require_side_channel_list", "__commonJSMin", "exports", "module", "inspect", "$TypeError", "listGetNode", "__name", "list", "key", "isDelete", "prev", "curr", "listGet", "objects", "node", "listSet", "value", "listHas", "listDelete", "$o", "channel", "root", "deletedNode", "require_side_channel_map", "__commonJSMin", "exports", "module", "GetIntrinsic", "callBound", "inspect", "$TypeError", "$Map", "$mapGet", "$mapSet", "$mapHas", "$mapDelete", "$mapSize", "__name", "$m", "channel", "key", "result", "value", "require_side_channel_weakmap", "__commonJSMin", "exports", "module", "GetIntrinsic", "callBound", "inspect", "getSideChannelMap", "$TypeError", "$WeakMap", "$weakMapGet", "$weakMapSet", "$weakMapHas", "$weakMapDelete", "__name", "$wm", "$m", "channel", "key", "value", "require_side_channel", "__commonJSMin", "exports", "module", "$TypeError", "inspect", "getSideChannelList", "getSideChannelMap", "getSideChannelWeakMap", "makeChannel", "__name", "$channelData", "channel", "key", "value", "require_implementation", "__commonJSMin", "exports", "module", "numberIsNaN", "__name", "value", "a", "b", "require_polyfill", "__commonJSMin", "exports", "module", "implementation", "__name", "require_shim", "__commonJSMin", "exports", "module", "getPolyfill", "define", "__name", "polyfill", "require_object_is", "__commonJSMin", "exports", "module", "define", "callBind", "implementation", "getPolyfill", "shim", "polyfill", "require_is_arguments", "__commonJSMin", "exports", "module", "hasToStringTag", "callBound", "$toString", "isStandardArguments", "__name", "value", "isLegacyArguments", "supportsStandardArguments", "require_is_array_buffer", "__commonJSMin", "exports", "module", "callBind", "callBound", "GetIntrinsic", "$ArrayBuffer", "$byteLength", "$toString", "abSlice", "$abSlice", "__name", "obj", "require_is_date_object", "__commonJSMin", "exports", "module", "callBound", "getDay", "tryDateObject", "__name", "value", "toStr", "dateClass", "hasToStringTag", "require_is_regex", "__commonJSMin", "exports", "module", "callBound", "hasToStringTag", "hasOwn", "gOPD", "fn", "$exec", "isRegexMarker", "throwRegexMarker", "__name", "badStringifier", "value", "descriptor", "hasLastIndexDataProperty", "e", "$toString", "regexClass", "require_is_shared_array_buffer", "__commonJSMin", "exports", "module", "callBound", "$byteLength", "__name", "obj", "_obj", "require_is_string", "__commonJSMin", "exports", "module", "callBound", "$strValueOf", "tryStringObject", "__name", "value", "$toString", "strClass", "hasToStringTag", "require_is_number_object", "__commonJSMin", "exports", "module", "callBound", "$numToStr", "tryNumberObject", "__name", "value", "$toString", "numClass", "hasToStringTag", "require_is_boolean_object", "__commonJSMin", "exports", "module", "callBound", "$boolToStr", "$toString", "tryBooleanObject", "__name", "value", "boolClass", "hasToStringTag", "require_safe_regex_test", "__commonJSMin", "exports", "module", "callBound", "isRegex", "$exec", "$TypeError", "__name", "regex", "s", "require_is_symbol", "__commonJSMin", "exports", "module", "callBound", "$toString", "hasSymbols", "safeRegexTest", "$symToStr", "isSymString", "isSymbolObject", "__name", "value", "require_has_bigints", "__commonJSMin", "exports", "module", "$BigInt", "__name", "require_is_bigint", "__commonJSMin", "exports", "module", "hasBigInts", "bigIntValueOf", "tryBigInt", "__name", "value", "require_which_boxed_primitive", "__commonJSMin", "exports", "module", "isString", "isNumber", "isBoolean", "isSymbol", "isBigInt", "__name", "value", "require_is_map", "__commonJSMin", "exports", "module", "$Map", "$Set", "exported", "__name", "x", "$mapHas", "$setHas", "require_is_set", "__commonJSMin", "exports", "module", "$Map", "$Set", "exported", "__name", "x", "$mapHas", "$setHas", "require_is_weakmap", "__commonJSMin", "exports", "module", "$WeakMap", "$WeakSet", "exported", "__name", "x", "$mapHas", "$setHas", "require_is_weakset", "__commonJSMin", "exports", "module", "GetIntrinsic", "callBound", "$WeakSet", "$setHas", "$mapHas", "__name", "x", "require_which_collection", "__commonJSMin", "exports", "module", "isMap", "isSet", "isWeakMap", "isWeakSet", "__name", "value", "require_array_buffer_byte_length", "__commonJSMin", "exports", "module", "callBound", "$byteLength", "isArrayBuffer", "__name", "ab", "require_deep_equal", "__commonJSMin", "exports", "module", "assign", "callBound", "flags", "GetIntrinsic", "getIterator", "getSideChannel", "is", "isArguments", "isArray", "isArrayBuffer", "isDate", "isRegex", "isSharedArrayBuffer", "objectKeys", "whichBoxedPrimitive", "whichCollection", "whichTypedArray", "byteLength", "sabByteLength", "$getTime", "gPO", "$objToString", "$Set", "$mapHas", "$mapGet", "$mapSize", "$setAdd", "$setDelete", "$setHas", "$setSize", "setHasEqualElement", "set", "val1", "opts", "channel", "i", "result", "internalDeepEqual", "__name", "findLooseMatchingPrimitives", "prim", "mapMightHaveLoosePrim", "a", "b", "item", "altValue", "curB", "looseOpts", "setMightHaveLoosePrim", "mapHasEqualEntry", "map", "key1", "item1", "key2", "actual", "expected", "options", "actualBoxed", "expectedBoxed", "hasActual", "hasExpected", "sentinel", "objEquiv", "isBuffer", "x", "setEquiv", "iA", "iB", "resultA", "resultB", "mapEquiv", "key", "item2", "aIsArray", "bIsArray", "aIsError", "bIsError", "aIsRegex", "bIsRegex", "aIsDate", "bIsDate", "aWhich", "bWhich", "aIsBuffer", "bIsBuffer", "aIsArrayBuffer", "bIsArrayBuffer", "aIsSAB", "bIsSAB", "ka", "kb", "aCollection", "bCollection", "federation_internals_1", "deep_equal_1", "__importDefault", "isPathContext", "v", "PathContext", "__name", "exports", "extractOperationConditionals", "operation", "conditionals", "addExtractedConditional", "kind", "addTo", "applied", "value", "_PathContext", "newConditionals", "that", "federation_internals_1", "querygraph_1", "pathContext_1", "opTriggerEquality", "t1", "t2", "__name", "findTriggerIdx", "triggerEquality", "forIndex", "trigger", "PathTree", "_PathTree", "graph", "vertex", "localSelections", "childs", "root", "paths", "path", "selection", "currentVertex", "pathAndSelections", "maxEdges", "forEdgeIndex", "newVertices", "order", "currentOrder", "totalChilds", "ps", "iterResult", "edge", "conditions", "contextToSelection", "parameterToContext", "idx", "triggerIdx", "existing", "existingCond", "mergedConditions", "newPaths", "mergedContextToSelection", "mergedParameterToContext", "i", "edgeIndex", "index", "newVertex", "values", "subPathAndSelections", "reverseOrder", "child", "c1", "c2", "cond1", "cond2", "other", "mergeIndexes", "countToAdd", "otherChild", "thisSize", "newSize", "newChilds", "addIdx", "that", "ptc1", "ptc2", "thisKeys", "_a", "thatKeys", "_b", "key", "thisSelection", "thatSelection", "target", "c", "indent", "includeConditions", "exports", "isRootPathTree", "tree", "traversePathTree", "pathTree", "onEdges", "_", "childTree", "federation_internals_1", "pathTree_1", "querygraph_1", "transition_1", "pathContext_1", "uuid_1", "debug", "updateRuntimeTypes", "currentRuntimeTypes", "edge", "field", "newRuntimeTypes", "parentType", "fieldType", "_a", "type", "castedType", "castedRuntimeTypes", "t", "currentType", "__name", "withReplacedLastElement", "arr", "newLast", "newArr", "GraphPath", "_GraphPath", "props", "graph", "root", "runtimeTypes", "rootKind", "that", "vertex", "index", "minSize", "thisEdge", "thatEdge", "jumps", "v", "i", "thisV", "thatV", "j", "path", "idx", "trigger", "conditionsResolution", "defer", "subgraphEnteringEdge", "previousOperation", "runtimeTypesWithoutPreviousCast", "updatedEdge", "e", "_b", "edgeConditions", "contextToSelection", "parameterToContext", "lastParameterToContext", "newTrigger", "args", "acc", "key", "value", "_c", "_", "entry", "_d", "_e", "tailPath", "prevRuntimeTypes", "typeName", "triggerToEdge", "overrideConditions", "prevSubgraphStartingVertex", "enteringEdge", "prevSubgraphVertex", "triggerToMatch", "prevSubgraphMatchingEdge", "tailEdge", "mapper", "result", "edgeIdx", "reducer", "initialValue", "c", "lastNonDowncastIdx", "lastNonDowncastVertex", "lastNonDowncastEdge", "runtimeTypesAtLastNonDowncastEdge", "newSize", "otherOptions", "newId", "paths", "p", "otherPath", "overriddingId", "schema", "metadata", "isRoot", "pathStr", "label", "deferStr", "typeStr", "exports", "isRootPath", "terminateWithNonRequestedTypenameField", "typenameField", "edgeForField", "traversePath", "onEdges", "conditions", "UnsatisfiedConditionReason", "UnadvanceableReason", "Unadvanceables", "reasons", "r", "UnadvanceableClosures", "closures", "isUnadvanceableClosures", "pathTransitionToEdge", "transition", "TransitionPathWithLazyIndirectPaths", "_TransitionPathWithLazyIndirectPaths", "conditionResolver", "initialPath", "advancePathWithNonCollectingAndTypePreservingTransitions", "getFieldParentTypeForEdge", "advancePathWithTransition", "subgraphPath", "targetType", "supergraphRuntimeTypes", "subgraphRuntimeTypes", "t1", "t2", "directOptions", "advancePathWithDirectTransition", "options", "deadEndClosures", "advanceOptionsToString", "createLazyTransitionOptions", "pathsWithNonCollecting", "nonCollectingPath", "pathsWithTransition", "indirectDeadEndClosures", "allDeadEnds", "fieldName", "subgraphsWithDeadEnd", "subgraph", "typenameOfTail", "typeOfTailInSubgraph", "keys", "allNonResolvable", "kindOfType", "explanation", "origin", "option", "isDestinationExcluded", "destination", "excluded", "sameExcludedDestinations", "ex1", "ex2", "d", "addDestinationExclusion", "isConditionExcluded", "condition", "addConditionExclusion", "newExclusion", "popMin", "stack", "minIdx", "min", "context", "excludedDestinations", "excludedConditions", "convertTransitionWithCondition", "getFieldParentType", "reachableSubgraphs", "s", "isTopLevelPath", "originalSource", "bestPathBySource", "toTry", "toAdvance", "nextEdges", "outEdges", "unadvanceables", "target", "prevForSource", "conditionResolution", "canSatisfyConditions", "prevSubgraphEnteringVertex", "backToPreviousSubgraph", "rootVertexForSubgraph", "maxCost", "hasValidDirectKeyEdge", "updatedPath", "source", "dest", "extraMsg", "conditionHasOverriddenFieldsInSource", "subgraphName", "subgraphRootEdge", "externalDirective", "typeInSource", "fieldInSource", "from", "to", "resolution", "parentTypeInSubgraph", "details", "warnOnKeyFieldsMarkedExternal", "deadEnds", "fieldTypeName", "typeInSubgraph", "fieldInSubgraph", "overriddingSources", "findOverriddingSourcesIfOverridden", "fieldSource", "sources", "name", "sourceMetadata", "keyDirective", "keyFieldMarkedExternal", "fieldSet", "selection", "printedFields", "f", "getLocallySatisfiableKey", "typeVertex", "excludedEdges", "requiredContexts", "totalCost", "contextMap", "someSelectionUnsatisfied", "cxt", "levelsInQueryPath", "levelsInDataPath", "matches", "parentInSupergraph", "tInSupergraph", "selectionSet", "argIndices", "id", "pathTree", "lastEdge", "isTerminalOperation", "operation", "SimultaneousPathsWithLazyIndirectPaths", "excludedNonCollectingEdges", "excludedConditionsOnNonCollectingEdges", "updatedContext", "pathIdx", "_t", "opPathTriggerToEdge", "getFieldParentTypeForOpTrigger", "simultaneousPathsToString", "simultaneousPaths", "indentOnNewLine", "opt", "filterNonCollectingPathsForField", "filtered", "advanceSimultaneousPathsWithOperation", "supergraphSchema", "subgraphSimultaneousPaths", "optionsForEachPath", "shouldReenterSubgraph", "advanceOptions", "hasOnlyTypeExplodedResults", "advanceWithOperation", "pathWithNonCollecting", "pathWithOperation", "indirectOption", "allOptions", "flatCartesianProduct", "createLazyOptions", "createInitialOptions", "initialContext", "initialSubgraphConstraint", "lazyInitialPath", "initialOptions", "edgeForTypeCast", "size", "eltIndexes", "totalCombinations", "eltSize", "product", "itemSize", "item", "k", "anImplementationHasAProvides", "itf", "implem", "anImplementationIsEntityWithFieldShareable", "fieldNames", "otherMetadata", "fieldInOther", "typeInOther", "otherNames", "isProvidedEdge", "nextEdgeForField", "fieldOnCurrentType", "fieldPath", "addFieldEdge", "pathAsOptions", "fieldIsOfAnImplementation", "itfEdge", "itfPath", "directPathOverrideTypeExplosion", "implementations", "optionsByImplems", "implemType", "castOp", "implemOptions", "withField", "optPaths", "withFieldOptions", "typenameEdge", "nextEdgeForTypeCast", "parentTypes", "castedTypes", "intersection", "tName", "allCastOptions", "conditionType", "fakeDownCastEdge", "fieldOperation", "candidates", "require_common", "__commonJSMin", "exports", "isForwardRefNode", "object", "__name", "isNodeModel", "isNodeRef", "node", "isNodeRefLike", "isNodeRefGroupLike", "target", "isCompass", "c", "toNodeRef", "id", "port", "compass", "toNodeRefGroup", "targets", "t", "RootModelsContext", "createModelsContext", "models", "require_utils", "__commonJSMin", "exports", "_pipe", "args", "o1", "operations", "t", "acc", "f", "__name", "pipe", "defer", "fn", "src", "toIterable", "map", "selector", "v", "filter", "pred", "x", "require_ast", "__commonJSMin", "exports", "index_js", "index_js$1", "Builder", "__name", "options", "type", "props", "children", "createElement", "EOL", "joinBy", "sep", "value", "wrapWith", "wrapper", "wrapByPair", "l", "r", "leftPadWith", "left", "escape", "splitByLine", "indent", "style", "size", "eol", "endOfLine", "AttributeListPrintPlugin", "ast", "context", "AttributePrintPlugin", "CommentPrintPlugin", "DotPrintPlugin", "EdgePrintPlugin", "targets", "contents", "GraphPrintPlugin", "parts", "quoteLiteralValue", "quoteHTMLLikeLiteralValue", "LiteralPrintPlugin", "NodePrintPlugin", "id", "NodeRefGroupPrintPlugin", "NodeRefPrintPlugin", "SubgraphPrintPlugin", "defaultPlugins$2", "Printer", "#plugins", "plugins", "indentSize", "indentStyle", "a", "plugin", "stringify", "result", "peg$padEnd", "str", "targetLength", "padString", "DotSyntaxError$1", "expected", "found", "hex", "ch", "literalEscape", "s", "classEscape", "describeExpectation", "expectation", "escapedParts", "part", "describeExpected", "expected1", "descriptions", "i", "j", "describeFound", "found1", "message", "location", "sources", "src", "k", "loc", "e", "filler", "line", "last", "peg$parse", "input", "peg$FAILED", "peg$source", "peg$startRuleFunctions", "peg$parseDot", "peg$parseGraph", "peg$parseSubgraph", "peg$parseNode", "peg$parseEdge", "peg$parseAttributeList", "peg$parseAttribute", "peg$parseClusterStatements", "peg$startRuleFunction", "peg$c0", "v", "peg$c1", "c1", "graph", "c2", "b", "peg$c2", "peg$c3", "peg$literalExpectation", "peg$c4", "peg$c5", "peg$c6", "peg$c7", "peg$c8", "peg$c9", "peg$c10", "peg$c11", "peg$c12", "_strict", "_kind", "strict", "directed", "edgeop", "edgeops", "error", "peg$c13", "peg$c14", "peg$c15", "keyValue", "peg$c16", "peg$c17", "peg$c18", "peg$c19", "peg$c20", "peg$c21", "rhs", "_children", "peg$c22", "peg$c23", "peg$c24", "peg$c25", "key", "peg$c26", "peg$c27", "peg$c28", "kv", "peg$c29", "peg$c30", "peg$c31", "peg$c32", "peg$c33", "list", "peg$c34", "peg$c35", "rest", "peg$c36", "peg$c37", "peg$c38", "peg$c39", "peg$c40", "operator", "peg$c41", "peg$c42", "port", "peg$c43", "peg$otherExpectation", "peg$c44", "peg$c45", "peg$c46", "compass", "peg$c47", "peg$c48", "peg$c49", "peg$c50", "peg$c51", "peg$c52", "peg$c53", "peg$c54", "peg$c55", "peg$c56", "peg$c57", "peg$c58", "peg$c59", "peg$c60", "peg$c61", "peg$c62", "peg$c63", "peg$c64", "peg$c65", "peg$c66", "peg$c67", "peg$c68", "peg$c69", "peg$c70", "peg$c71", "peg$c72", "peg$c73", "peg$c74", "peg$c75", "peg$c76", "peg$c77", "peg$c78", "peg$anyExpectation", "peg$c79", "dedent", "peg$c80", "lines", "peg$c81", "peg$c82", "peg$c83", "peg$c84", "peg$c85", "peg$c86", "peg$c87", "peg$c88", "first", "peg$c89", "peg$c90", "peg$c91", "peg$c92", "peg$c93", "peg$c94", "peg$c95", "peg$c96", "peg$c97", "peg$c98", "peg$c99", "peg$c100", "peg$classExpectation", "peg$c101", "n", "text", "peg$c102", "peg$c103", "peg$c104", "peg$c105", "peg$c106", "peg$c107", "peg$c108", "chars", "peg$c109", "peg$c110", "peg$c111", "peg$c112", "peg$c113", "peg$c114", "peg$c115", "peg$c116", "peg$c117", "peg$c118", "peg$c119", "peg$c120", "peg$c121", "peg$c122", "peg$c123", "peg$c124", "peg$c125", "peg$c126", "peg$c134", "peg$c135", "peg$c136", "peg$c137", "peg$c138", "peg$c139", "peg$c140", "peg$c141", "peg$c142", "peg$c143", "peg$c144", "peg$c145", "peg$c146", "peg$c147", "peg$c148", "peg$c149", "peg$c150", "peg$c151", "peg$c152", "peg$c153", "peg$currPos", "peg$savedPos", "peg$posDetailsCache", "peg$maxFailPos", "peg$maxFailExpected", "peg$silentFails", "peg$result", "peg$computeLocation", "location1", "peg$buildSimpleError", "text1", "ignoreCase", "inverted", "peg$endExpectation", "description", "peg$computePosDetails", "pos", "details", "p", "startPos", "endPos", "startPosDetails", "endPosDetails", "peg$fail", "peg$buildStructuredError", "s0", "s1", "s2", "s3", "peg$parse__", "peg$parse_dot", "peg$parse_graph", "peg$parse_node", "peg$parse_attributes", "peg$parse_attribute", "peg$parse_edge", "peg$parse_subgraph", "peg$parseNodeRef", "peg$parse_node_ref", "peg$parseAttibutesItem", "peg$parse_attibutes_item", "peg$parseComment", "peg$parse_comment", "s4", "s5", "s6", "s7", "s8", "s9", "s10", "peg$parse_", "peg$parse_literal", "peg$parse_key_value", "peg$parse_attribute_list", "peg$parse_edge_target", "peg$parse_edge_rhs", "peg$parse_edge_target_group", "peg$parse_edge_operator", "peg$parse_port", "peg$parse_compass", "peg$parse_subgraph_id", "peg$parse_compass_keyword", "peg$parseQUOTED_STRING", "peg$parseHTML_STRING", "peg$parseSTRING", "peg$parseNUMBER_STRING", "peg$parseNUMBER", "peg$parse_block_comment", "peg$parse_slash_comment", "peg$parse_macro_comment", "peg$parse_slash_comment_line", "peg$parse_newline", "peg$parse_macro_comment_line", "peg$parseStringStart", "peg$parseStringPart", "peg$parseUnicodeLetter", "peg$parseNd", "peg$parsehtml_raw_string", "peg$parsehtml_char", "peg$parseDoubleStringCharacter", "peg$parseQuoteEscape", "peg$parseLineTerminator", "peg$parseSourceCharacter", "peg$parseLineContinuation", "peg$parseLineTerminatorSequence", "peg$parse_whitespace", "peg$parseLu", "peg$parseLl", "peg$parseLt", "peg$parseLm", "peg$parseLo", "peg$parseNl", "matches", "indentLengths", "match", "pattern", "parse$1", "parse", "DotSyntaxError", "convertAttribute", "trimmed", "convertComment", "kind", "convertClusterChildren", "model", "attrs", "node", "subgraph", "edge", "AttributeListPlugin", "EdgePlugin$1", "target", "GraphPlugin$1", "NodePlugin$1", "SubgraphPlugin$1", "defaultPlugins$1", "FromModelConverter", "commentKind", "m", "fromModel", "CommentHolder", "comment", "DotPlugin", "commentHolder", "stmt", "convertToEdgeTargetTuple", "t", "EdgePlugin", "prev", "curr", "applyStatements", "statements", "GraphPlugin", "G", "SubgraphPlugin", "NodePlugin", "defaultPlugins", "ToModelConverter", "toModel", "require_core", "__commonJSMin", "exports", "index_js", "index_js$1", "attribute", "__name", "_", "key", "DotObject", "AttributesBase", "#attrs", "attributes", "value", "entries", "AttributeList", "$$kind", "GraphBase", "#models", "#objects", "models", "node", "edge", "subgraph", "nodeId", "args", "id", "targets", "ts", "t", "arg", "callback", "firstArg", "RootGraph", "Digraph", "Graph", "Subgraph", "AttributesGroup", "Node", "port", "Edge", "ModelFactoryBuilder", "directed", "strictMode", "G", "g", "createModelFactories", "strict", "context", "noStrict", "digraph", "graph", "withContext", "toDot", "model", "options", "ast", "fromDot", "dot", "require_lib", "__commonJSMin", "exports", "index_js", "index_js$1", "k", "__name", "querygraph_1", "ts_graphviz_1", "graphPath_1", "toDot", "graph", "config", "vizGraph", "addToVizGraphAndHighlight", "__name", "exports", "groupToDot", "name", "graphs", "configs", "group", "cluster", "state", "addToVizGraph", "highlightPaths", "colors", "pickHighlights", "paths", "excluded", "usableColors", "c", "path", "i", "noTerminal", "vizSubGraphs", "source", "getNode", "vertex", "existingNode", "newNode", "pickGraphForEdge", "head", "tail", "onEdge", "edge", "headNode", "tailNode", "attributes", "_", "toHighlights", "h", "highlightPath", "toHighlight", "e", "vAttrs", "_a", "_b", "eAttrs", "_c", "federation_internals_1", "graphPath_1", "querygraph_1", "cachingConditionResolver", "resolver", "cache", "edge", "context", "excludedDestinations", "excludedConditions", "extraConditions", "cachedResolutionAndExcludedEdges", "cachedResolution", "forExcludedEdges", "resolution", "__name", "exports", "graphPath_1", "conditionsCaching_1", "ConditionValidationState", "_ConditionValidationState", "__name", "selection", "subgraphOptions", "supergraph", "newOptions", "paths", "pathsOptions", "s", "simpleValidationConditionResolver", "queryGraph", "withCaching", "resolver", "edge", "context", "excludedDestinations", "excludedConditions", "extraConditions", "conditions", "initialPath", "initialOptions", "stack", "newStates", "exports", "querygraph_1", "MermaidGraph", "__name", "graph", "options", "name", "vertex", "sg", "n", "addTo", "edge", "_a", "f", "head", "tail", "label", "v", "final", "b", "data", "d", "a", "exports", "__exportStar", "exports", "federation_internals_1", "query_graphs_1", "isConstantCondition", "cond", "__name", "exports", "mergeConditions", "conditions1", "conditions2", "merged", "cond2", "cond1", "c1", "sameConditions", "conditionsOfSelectionSet", "selectionSet", "selections", "conditions", "conditionsOfSelection", "otherConditions", "selection", "elementConditions", "conditionsOfElement", "selectionConditions", "element", "conditionals", "conditional", "value", "updatedConditions", "newConditions", "handledConditions", "filtered", "handledCond", "r", "removeConditionsFromSelectionSet", "updatedElement", "removeConditionsOfElement", "updatedSelectionSet", "updatedDirectives", "d", "matchesConditionForKind", "directive", "kind", "evaluateCondition", "condition", "variables", "values", "variable", "val", "_a", "utils_keyvaluecache_1", "enforceQueryPlannerConfigDefaults", "config", "__name", "exports", "validateQueryPlannerConfig", "federation_internals_1", "generateAllPlansAndFindBest", "initial", "toAdd", "addFct", "costFct", "onPlan", "__name", "stack", "min", "partial", "partialCost", "remaining", "isRoot", "index", "nextChoices", "otherChoices", "pickedIndex", "pickNext", "extracted", "updatedChoices", "isLast", "extract", "insertInStack", "newPartial", "cost", "isNewMin", "exports", "elt", "i", "choices", "federation_internals_1", "MAX_RECURSIVE_SELECTIONS", "countRecursiveSelections", "operation", "fragmentCache", "selectionSet", "count", "selection", "result", "name", "cached", "oldCount", "__name", "validateRecursiveSelections", "exports", "federation_internals_1", "query_graphs_1", "graphql_1", "conditions_1", "config_1", "generateAllPlans_1", "QueryPlan_1", "recursiveSelectionsLimit_1", "debug", "SIBLING_TYPENAME_KEY", "fetchCost", "pipeliningCost", "defaultCostFunction", "__name", "group", "_", "value", "values", "parallelCost", "sequenceCost", "nonDeferred", "deferredValues", "sum", "stages", "acc", "stage", "idx", "closedPathToString", "p", "pathStr", "flattenClosedPath", "path", "allTailVertices", "options", "vertices", "option", "selectionIsFullyLocalFromAllVertices", "selection", "inconsistentAbstractTypesRuntimes", "_useInconsistentAbstractTypes", "useInconsistentAbstractTypes", "elt", "vertex", "compareOptionsComplexityOutOfContext", "opt1", "opt2", "compareSinglePathOptionsComplexityOutOfContext", "compareSingleVsMultiPathOptionsComplexityOutOfContext", "exports", "p1", "p2", "p1Jumps", "p2Jumps", "p2s", "QueryPlanningTraversal", "_QueryPlanningTraversal", "parameters", "selectionSet", "startFetchIdGen", "hasDefers", "rootKind", "costFunction", "initialContext", "typeConditionedFetching", "nonLocalSelectionsState", "initialSubgraphConstraint", "excludedDestinations", "excludedConditions", "root", "federatedQueryGraph", "_a", "edge", "context", "excludedEdges", "extras", "initialPath", "initialOptions", "mapOptionsToSelections", "opt", "closed", "maybeTrimmed", "operation", "newOptions", "followupForOption", "o", "allTails", "addTypenameFieldForAbstractTypes", "addBackTypenameInAttachments", "branch", "toHandle", "keptOptions", "first", "shouldKeepFirst", "i", "other", "cmp", "supergraphSchema", "rootType", "FetchDependencyGraph", "firstBranch", "b1", "b2", "planCount", "possiblePlans", "maxPlansToCompute", "prevSize", "opts", "idxFirstOfLengthOne", "initialTree", "initialDependencyGraph", "singleChoiceBranches", "cp", "otherTrees", "b", "best", "cost", "t", "updatedDependencyGraph", "updatedTree", "prevCost", "dependencyGraph", "main", "deferred", "tree", "computeRootFetchGroups", "computeNonRootFetchGroups", "extraConditions", "bestPlan", "conditionsMemoizer", "GroupInputs", "_GroupInputs", "typeName", "typeSelection", "type", "otherSelection", "s", "variablesDefinitions", "handledConditions", "selectionSets", "selections", "sSet", "thisSelection", "c", "cloned", "v", "inputs", "FetchGroup", "_FetchGroup", "index", "subgraphName", "parentType", "isEntityFetch", "_selection", "_inputs", "_contextInputs", "mergeAt", "deferRef", "subgraphAndMergeAtKey", "cachedCost", "generateQueryFragments", "isKnownUseful", "inputRewrites", "hasInputs", "toValidGraphQLName", "newDependencyGraph", "selectionCost", "id", "parents", "parent", "child", "findAndRemoveInPlace", "g", "maybeChild", "maybeParent", "maybeAncestor", "children", "relation", "rewrites", "r", "r2", "sameKeyRenamer", "updated", "prev", "conditionInSupergraphIfInterfaceObject", "condition", "conditionInSupergraph", "isInterfaceTypeConditionOnInterfaceObject", "typeInParent", "inputSelections", "isUseless", "input", "implemTypeNames", "interfaceInputSelections", "implementationInputSelections", "inputSelection", "inputCondition", "subSelectionSet", "relationToChild", "childPathInThis", "sibling", "ownParents", "siblingParents", "sameMergeAt", "grandChild", "gcParents", "gcParent", "gcGrandParent", "merged", "mergeParentDependencies", "mergePathConditionalDirectives", "removeUnneededTopLevelFragmentDirectives", "pathInThis", "pathInMerged", "concatPathsInParents", "variableDefinitions", "selectionWithoutConditions", "selectionWithTypenames", "outputRewrites", "addAliasesForNonMergingFields", "queryPlannerConfig", "fragments", "operationName", "directives", "_b", "inputNodes", "subgraphSchema", "operationForEntitiesFetch", "operationForQueryFetch", "collector", "namedFragment", "usedVariables", "operationDocument", "fetchNode", "schemaRootKindToOperationKind", "renamer", "base", "RebasedFragments", "queryFragments", "name", "schema", "frags", "genAliasName", "baseName", "unavailableNames", "counter", "candidate", "selectionSetAsKeyRenamers", "relPath", "alias", "element", "val", "computeAliasesForNonMergingFields", "aliasCollector", "seenResponseNames", "rebasedFieldsInSet", "field", "fieldPath", "fieldName", "responseName", "fieldType", "previous", "aliases", "withFieldAliased", "atCurrentLevel", "remaining", "pathElement", "subselectionAliases", "updatedSelectionSet", "DeferredInfo", "_DeferredInfo", "label", "subselection", "dependencies", "emptyDeferContext", "deferContextForConditions", "baseContext", "deferContextAfterSubgraphJump", "filterOperationPath", "GroupPath", "_GroupPath", "fullPath", "pathInGroup", "responsePath", "possibleTypes", "possibleTypesAfterLastField", "rootPossibleRuntimeTypes", "newGroupContext", "pathOfGroupInParent", "parentSchema", "newPath", "conditions", "previousLastElement", "newPossibleTypes", "elementPossibleTypes", "pt", "ept", "res", "DeferTracking", "_DeferTracking", "primarySelection", "deferredBlock", "deferContext", "deferArgs", "parentRef", "parentInfo", "updates", "info", "idDependency", "labels", "printUnhandled", "u", "relations", "ProcessingState", "_ProcessingState", "next", "unhandled", "processed", "ready", "groups", "that", "thatUnhandled", "edges", "newEdges", "inEdges", "otherGroups", "otherEdges", "e", "_FetchDependencyGraph", "subgraphSchemas", "startingIdGen", "rootGroups", "deferTracking", "rootTypeForDefer", "metadata", "clonedGroup", "newGroup", "conditionsGroups", "existing", "samePathsInParents", "toCheck", "stack", "toRemove", "gi", "j", "gj", "bySubgraphs", "toMergeBuckets", "bucket", "current", "from", "startVertex", "deferredGroups", "processor", "newHandledConditions", "state", "mainSequence", "newState", "allDeferredGroups", "processInParallel", "processedNodes", "stateAfterGroup", "rootsAreParallel", "initialDeferredGroups", "currentDeferRef", "otherDeferGroups", "defersInCurrent", "handledDefersInCurrent", "d", "unhandledDefersInCurrent", "unhandledDeferGroups", "allDeferred", "defer", "mainSequenceOfDefer", "deferredOfDefer", "mainReduced", "msg", "printParentRelation", "rel", "indent", "QueryPlanner", "supergraph", "config", "isInterfaceObject", "typeInSchema", "itfType", "subgraphs", "isInconsistent", "expectedRuntimes", "subgraph", "typeInSubgraph", "runtimes", "applications", "application", "isSubscription", "statistics", "reuseQueryFragments", "addTypenameFieldForAbstractTypesInNamedFragments", "withoutIntrospection", "assignedDeferLabels", "deferConditions", "fetchGroupToPlanProcessor", "overrideConditions", "rootNode", "computePlanForDeferConditionals", "computePlanInternal", "primary", "rest", "parentMaybeInterfaceObject", "updatedSelections", "typenameSelection", "firstFieldSelection", "firstFieldIndex", "updatedSubSelection", "dependencyGraphs", "computeRootSerialDependencyGraphForMutation", "localMain", "localDeferred", "newSelection", "computeRootParallelDependencyGraph", "generateConditionNodes", "op", "onFinalOperation", "variable", "ifOperation", "elseOperation", "isIntrospectionSelection", "node", "closedBranches", "totalCombinations", "eltSize", "arr", "a", "depth", "curr", "hasDefer", "computeRootParallelBestPlan", "plan", "createEmptyPlan", "computeRootParallelBestPlanForMutation", "mutationSubgraphs", "mutationSubgraph", "onlyRootSubgraph", "graph", "splittedRoots", "splitTopLevelFields", "graphs", "startingFetchId", "prevDepGraph", "prevPaths", "prevSubgraph", "newDepGraph", "newPaths", "newSubgraph", "sanitized", "sanitizeAndPrintSubselection", "subSelection", "opName", "flatWrapNodes", "deferInfo", "deferredBlocks", "kind", "nodes", "filteredNodes", "n", "unneededDirectives", "fragment", "neededDirectives", "predicate", "array", "m1", "m2", "second", "pathTree", "_trigger", "_conditions", "rootTypeInSupergraph", "computeGroupsForTree", "wrapInputsSelections", "wrappingType", "wrapSelectionWithTypeAndConditions", "currentSeletions", "createFetchInitialPath", "rebasedType", "initialSelection", "wrapInFragment", "name0", "ifs0", "updatedSelection", "ifs", "maybeSubstratPathPrefix", "basePath", "maybePrefix", "updateCreatedGroups", "createdGroups", "newCreatedGroups", "startGroup", "initialGroupPath", "initialDeferContext", "initialContextsToConditionsGroups", "contextToConditionsGroups", "contextToSelection", "parameterToContext", "newContext", "sourceType", "destType", "pathInParent", "updatedDeferContext", "conditionGroup", "conditionGroupParents", "inputType", "newCompositeTypeSelectionSet", "computeInputRewritesOnKeyFetch", "updatedOperation", "extractDeferFromOperation", "typenameAttachment", "typenameField", "addTypenameAtPath", "handleRequiresResult", "handleRequiresTree", "newContextToConditionsGroups", "createPostRequiresResult", "createPostRequiresGroup", "contextId", "conditionGroups", "keyCondition", "keyInputs", "inputSelectionSet", "parentGroup", "relativePath", "subgraphArgType", "keyRenamers", "keyRenamer", "numFields", "newRelativePath", "inputTypeName", "updatedDeferRef", "updatedPathToDeferParent", "subselectionTypeIfAbstract", "fieldBaseType", "conditionType", "parentTypeIfAbstract", "handleSelection", "typeIfAbstract", "ss", "pathHasOnlyFragments", "typeAtPath", "result", "fullyLocalRequires", "entityType", "inputsForRequire", "postRequireGroup", "requirePath", "preRequireGroup", "addPostRequireInputs", "requiresConditions", "groupCopy", "newGroupIsUnneeded", "unmergedGroups", "created", "currentParent", "grandParents", "grandParent", "includeKeyInputs", "isInterfaceObjectDownCast", "fullSelectionSet", "keyConditionAsInput", "supergraphItfType", "representationsVariable", "representationsVariableDefinition", "representationsType", "collectUsedVariables", "operationDirectives", "applied", "allVariableDefinitions", "queryType", "entities", "entitiesCall", "k1", "k2", "snapshotSerializers_1", "exports", "__name", "prettyFormatQueryPlan_1", "__exportStar", "buildPlan_1", "isObject", "value", "__name", "exports", "predicates_1", "deepMerge", "target", "source", "key", "__name", "exports", "isNotNullOrUndefined", "value", "__name", "exports", "compactMap", "array", "callbackfn", "accumulator", "element", "index", "result", "findAndExtract", "predicate", "remaining", "groupBy", "keyFunction", "iterable", "key", "group", "require_package", "__commonJSMin", "exports", "module", "api_1", "__importDefault", "OpenTelemetrySpanNames", "exports", "OpenTelemetryAttributeNames", "name", "version", "requestContextSpanAttributes", "requestContext", "config", "spanAttributes", "__name", "operationContextSpanAttributes", "operationContext", "recordExceptions", "span", "exceptions", "exceptionsToRecord", "exception", "federation_internals_1", "computeResponse", "operation", "variables", "input", "introspectionHandling", "parameters", "data", "applySelectionSet", "ApplyResult", "__name", "exports", "shouldSkip", "element", "skipDirective", "includeDirective", "ifValue", "directive", "ifArg", "value", "typeConditionApplies", "schema", "typeCondition", "typename", "parentType", "type", "selectionSet", "output", "path", "selection", "field", "fieldType", "responseName", "outputValue", "inputValue", "_a", "_b", "_c", "updated", "isInvalid", "updateOutputValue", "fragment", "_d", "pathLastElementDescription", "currentType", "hasErrors", "outputValueList", "shouldNullify", "outputEltValue", "idx", "elt", "inputTypename", "objType", "typenameType", "outputValueObject", "isValidValue", "federation_internals_1", "graphql_1", "FRAGMENT_PREFIX", "applyRewrites", "schema", "rewrites", "value", "rewrite", "applyRewrite", "__name", "exports", "splitted", "splitPathLastElement", "parent", "last", "kind", "fieldName", "parsePathElement", "applyAtPath", "rewriteAtPathFunction", "fieldAtPath", "obj", "path", "lastIdx", "fct", "arrayValue", "first", "rest", "eltValue", "isObjectOfType", "elt", "typeCondition", "defaultOnUnknownObjectType", "objTypename", "type", "conditionalType", "node_fetch_1", "graphql_1", "usage_reporting_protobuf_1", "types_1", "query_planner_1", "deepMerge_1", "array_1", "api_1", "opentelemetry_1", "federation_internals_1", "resultShaping_1", "dataRewrites_1", "collectUsedVariables", "node", "usedVariables", "__name", "name", "makeIntrospectionQueryDocument", "introspectionSelection", "variableDefinitions", "usedVariableDefinitions", "def", "_a", "executeIntrospection", "schema", "variableValues", "data", "errors", "_b", "executeQueryPlan", "queryPlan", "serviceMap", "requestContext", "operationContext", "supergraphSchema", "apiSchema", "telemetryConfig", "logger", "span", "operation", "err", "context", "unfilteredData", "captureTraces", "traceNode", "executeNode", "result", "postProcessingErrors", "variables", "f", "error", "exports", "currentCursor", "childNode", "childTraceNode", "childTraceNodes", "id", "moveIntoCursor", "executeFetch", "condition", "pickedBranch", "branchTraceNode", "fetch", "service", "entities", "variableName", "providedVariables", "requires", "representations", "representationToEntity", "entity", "index", "representation", "executeSelectionSet", "dataReceivedFromService", "sendOperation", "receivedEntities", "i", "receivedEntity", "existingEntity", "typename", "http", "durationHrTimeToNanos", "dateToProtoTimestamp", "response", "errorPathHelper", "makeLazyErrorPathGenerator", "downstreamServiceError", "errorPaths", "traceBase64", "traceBuffer", "traceParsingFailed", "trace", "rootTypeName", "_c", "child", "cursor", "hydratedPaths", "errorPath", "generateHydratedPaths", "parent", "path", "head", "value", "source", "selections", "selection", "responseName", "pathInCursor", "flattenResultsAtPath", "current", "rest", "element", "originalError", "serviceName", "generateErrorPath", "message", "extensions", "errorOptions", "codeDef", "defaultFieldResolverWithAliasSupport", "args", "contextValue", "info", "property", "hrtime", "date", "totalMillis", "millis", "parseCacheControlHeader", "header", "cc", "parts", "part", "k", "v", "__name", "exports", "require_constants", "__commonJSMin", "exports", "module", "realZlibConstants", "require_minipass", "__commonJSMin", "exports", "module", "proc", "EE", "Stream", "SD", "EOF", "MAYBE_EMIT_END", "EMITTED_END", "EMITTING_END", "EMITTED_ERROR", "CLOSED", "READ", "FLUSH", "FLUSHCHUNK", "ENCODING", "DECODER", "FLOWING", "PAUSED", "RESUME", "BUFFERLENGTH", "BUFFERPUSH", "BUFFERSHIFT", "OBJECTMODE", "DESTROYED", "EMITDATA", "EMITEND", "EMITEND2", "ASYNC", "defer", "__name", "fn", "doIter", "ASYNCITERATOR", "ITERATOR", "isEndish", "ev", "isArrayBuffer", "b", "isArrayBufferView", "Pipe", "src", "dest", "opts", "PipeProxyErrors", "er", "Minipass", "options", "enc", "chunk", "om", "a", "encoding", "cb", "f", "n", "ret", "noDrain", "ended", "p", "data", "extra", "buf", "c", "resolve", "reject", "res", "onerr", "ondata", "onend", "value", "ondestroy", "rej", "s", "require_minizlib", "__commonJSMin", "exports", "assert", "Buffer", "realZlib", "constants", "Minipass", "OriginalBufferConcat", "_superWrite", "ZlibError", "__name", "err", "_opts", "_flushFlag", "_finishFlushFlag", "_fullFlushFlag", "_handle", "_onError", "_sawError", "_level", "_strategy", "_ended", "_defaultFullFlush", "ZlibBase", "opts", "mode", "er", "flushFlag", "chunk", "encoding", "cb", "nativeHandle", "originalNativeClose", "originalClose", "args", "result", "writeReturn", "i", "data", "Zlib", "level", "strategy", "origFlush", "Deflate", "Inflate", "_portable", "Gzip", "Gunzip", "DeflateRaw", "InflateRaw", "Unzip", "Brotli", "BrotliCompress", "BrotliDecompress", "proc", "node_events_1", "node_stream_1", "__importDefault", "node_string_decoder_1", "isStream", "__name", "s", "Minipass", "exports", "isReadable", "isWritable", "EOF", "MAYBE_EMIT_END", "EMITTED_END", "EMITTING_END", "EMITTED_ERROR", "CLOSED", "READ", "FLUSH", "FLUSHCHUNK", "ENCODING", "DECODER", "FLOWING", "PAUSED", "RESUME", "BUFFER", "PIPES", "BUFFERLENGTH", "BUFFERPUSH", "BUFFERSHIFT", "OBJECTMODE", "DESTROYED", "ERROR", "EMITDATA", "EMITEND", "EMITEND2", "ASYNC", "ABORT", "ABORTED", "SIGNAL", "DATALISTENERS", "DISCARDED", "defer", "fn", "nodefer", "isEndish", "ev", "isArrayBufferLike", "b", "isArrayBufferView", "Pipe", "src", "dest", "opts", "_er", "PipeProxyErrors", "er", "isObjectModeOptions", "o", "isEncodingOptions", "args", "options", "signal", "_enc", "_om", "a", "_", "chunk", "encoding", "cb", "n", "ret", "c", "noDrain", "ended", "p", "handler", "h", "data", "buf", "resolve", "reject", "stopped", "stop", "res", "onerr", "ondata", "onend", "ondestroy", "value", "rej", "next", "wc", "require_minipass", "__commonJSMin", "exports", "module", "proc", "EE", "Stream", "SD", "EOF", "MAYBE_EMIT_END", "EMITTED_END", "EMITTING_END", "EMITTED_ERROR", "CLOSED", "READ", "FLUSH", "FLUSHCHUNK", "ENCODING", "DECODER", "FLOWING", "PAUSED", "RESUME", "BUFFERLENGTH", "BUFFERPUSH", "BUFFERSHIFT", "OBJECTMODE", "DESTROYED", "EMITDATA", "EMITEND", "EMITEND2", "ASYNC", "defer", "__name", "fn", "doIter", "ASYNCITERATOR", "ITERATOR", "isEndish", "ev", "isArrayBuffer", "b", "isArrayBufferView", "Pipe", "src", "dest", "opts", "PipeProxyErrors", "er", "Minipass", "options", "enc", "chunk", "om", "a", "encoding", "cb", "f", "n", "ret", "noDrain", "ended", "p", "data", "extra", "buf", "c", "resolve", "reject", "res", "onerr", "ondata", "onend", "value", "ondestroy", "rej", "s", "require_minipass_sized", "__commonJSMin", "exports", "module", "Minipass", "SizeError", "__name", "found", "expect", "MinipassSized", "options", "chunk", "encoding", "cb", "buffer", "ev", "data", "require_blob", "__commonJSMin", "exports", "module", "Minipass", "TYPE", "BUFFER", "Blob", "_Blob", "__name", "blobParts", "options", "buffers", "size", "length", "i", "element", "buffer", "type", "buf", "off", "len", "ab", "start", "end", "relativeStart", "relativeEnd", "span", "slicedBuffer", "blob", "require_fetch_error", "__commonJSMin", "exports", "module", "FetchError", "__name", "message", "type", "systemError", "n", "require_body", "__commonJSMin", "exports", "module", "Minipass", "MinipassSized", "Blob", "BUFFER", "FetchError", "convert", "INTERNALS", "CONSUME_BODY", "Body", "__name", "bodyArg", "options", "size", "timeout", "body", "isURLSearchParams", "isBlob", "er", "error", "buf", "ct", "convertBody", "upstream", "stream", "resTimeout", "resolve", "instance", "tee", "p1", "p2", "dest", "obj", "buffer", "headers", "charset", "res", "str", "require_headers", "__commonJSMin", "exports", "module", "invalidTokenRegex", "invalidHeaderCharRegex", "validateName", "__name", "name", "validateValue", "value", "find", "map", "key", "MAP", "Headers", "_Headers", "init", "rawHeaders", "headerNames", "headerName", "method", "pairs", "pair", "arrPair", "callback", "thisArg", "getHeaders", "i", "HeadersIterator", "headers", "obj", "hostHeaderKey", "val", "kind", "k", "INTERNAL", "_HeadersIterator", "target", "index", "values", "len", "require_response", "__commonJSMin", "exports", "module", "http", "STATUS_CODES", "Headers", "Body", "clone", "extractContentType", "INTERNALS", "Response", "_Response", "__name", "body", "opts", "status", "headers", "contentType", "require_package", "__commonJSMin", "exports", "module", "require_request", "__commonJSMin", "exports", "module", "URL", "Minipass", "Headers", "exportNodeCompatibleHeaders", "Body", "clone", "extractContentType", "getTotalBytes", "version", "defaultUserAgent", "INTERNALS", "isRequest", "__name", "input", "isAbortSignal", "signal", "proto", "Request", "_Request", "init", "parsedURL", "method", "isGETHEAD", "inputBody", "headers", "contentType", "ca", "cert", "ciphers", "clientCertEngine", "crl", "dhparam", "ecdhCurve", "family", "honorCipherOrder", "key", "passphrase", "pfx", "rejectUnauthorized", "secureOptions", "secureProtocol", "servername", "sessionIdContext", "request", "contentLengthValue", "agent", "require_abort_error", "__commonJSMin", "exports", "module", "AbortError", "__name", "message", "s", "require_lib", "__commonJSMin", "exports", "module", "URL", "http", "https", "zlib", "Minipass", "Body", "writeToStream", "getTotalBytes", "Response", "Headers", "createHeadersLenient", "Request", "getNodeRequestOptions", "FetchError", "AbortError", "fetch", "__name", "url", "opts", "request", "resolve", "reject", "type", "data", "pathname", "search", "split", "mime", "base64", "rawData", "er", "signal", "headers", "options", "send", "response", "abort", "error", "abortAndFinalize", "finalize", "req", "reqTimeout", "res", "location", "locationURL", "err", "requestOpts", "parsedOriginal", "parsedRedirect", "body", "chunk", "responseOptions", "resolveTrailer", "codings", "zlibOptions", "unzip", "decoder", "code", "require_options", "__commonJSMin", "exports", "module", "dns", "conditionalHeaders", "configureOptions", "__name", "opts", "strictSSL", "options", "retries", "name", "require_http_cache_semantics", "__commonJSMin", "exports", "module", "statusCodeCacheableByDefault", "understoodStatuses", "errorStatusCodes", "hopByHopHeaders", "excludedFromRevalidationUpdate", "toNumberOrZero", "s", "n", "__name", "isErrorResponse", "response", "parseCacheControl", "header", "cc", "parts", "part", "k", "v", "formatCacheControl", "req", "res", "shared", "cacheHeuristic", "immutableMinTimeToLive", "ignoreCargoCult", "_fromObject", "revalidation", "request", "synchronous", "requestCC", "allowHeadMethod", "fields", "name", "inHeaders", "headers", "tokens", "warnings", "warning", "age", "serverDate", "residentTime", "defaultMinTtl", "expires", "lastModified", "staleIfErrorAge", "staleWhileRevalidateAge", "swr", "obj", "incomingReq", "etags", "etag", "matches", "optionsCopy", "newResponse", "require_lib", "__commonJSMin", "exports", "module", "crypto", "Minipass", "SPEC_ALGORITHMS", "DEFAULT_ALGORITHMS", "BASE64_REGEX", "SRI_REGEX", "STRICT_SRI_REGEX", "VCHAR_REGEX", "getOptString", "__name", "options", "IntegrityStream", "#emittedIntegrity", "#emittedSize", "#emittedVerified", "opts", "#getOptions", "parse", "ev", "handler", "data", "#onEnd", "h", "newSri", "i", "match", "err", "Hash", "hash", "strict", "rawOpts", "integrity", "other", "algo", "foundHash", "opt", "integrityHashToString", "toString", "sep", "hashes", "toStringIsNotEmpty", "shouldAddFirstSep", "complement", "lastIndex", "hashString", "finalHashString", "Integrity", "stringify", "otherhash", "pickAlgorithm", "getPrioritizedHash", "keys", "k", "acc", "sri", "_parse", "fullSri", "string", "obj", "fromHex", "hexDigest", "algorithm", "optString", "fromData", "algorithms", "digest", "hashAlgo", "fromStream", "stream", "istream", "integrityStream", "resolve", "reject", "s", "checkData", "checkStream", "checker", "verified", "createIntegrity", "chunk", "enc", "NODE_HASHES", "DEFAULT_PRIORITY", "algo1", "algo2", "require_policy", "__commonJSMin", "exports", "module", "CacheSemantics", "Negotiator", "ssri", "policyOptions", "emptyResponse", "requestObject", "__name", "request", "_obj", "value", "key", "responseObject", "response", "CachePolicy", "entry", "options", "_req", "negotiatorA", "negotiatorB", "_res", "require_errors", "__commonJSMin", "exports", "module", "NotCachedError", "__name", "url", "require_minipass", "__commonJSMin", "exports", "proc", "EE", "Stream", "stringdecoder", "SD", "EOF", "MAYBE_EMIT_END", "EMITTED_END", "EMITTING_END", "EMITTED_ERROR", "CLOSED", "READ", "FLUSH", "FLUSHCHUNK", "ENCODING", "DECODER", "FLOWING", "PAUSED", "RESUME", "BUFFER", "PIPES", "BUFFERLENGTH", "BUFFERPUSH", "BUFFERSHIFT", "OBJECTMODE", "DESTROYED", "ERROR", "EMITDATA", "EMITEND", "EMITEND2", "ASYNC", "ABORT", "ABORTED", "SIGNAL", "defer", "__name", "fn", "doIter", "ASYNCITERATOR", "ITERATOR", "isEndish", "ev", "isArrayBuffer", "b", "isArrayBufferView", "Pipe", "src", "dest", "opts", "PipeProxyErrors", "er", "Minipass", "_Minipass", "options", "enc", "chunk", "om", "a", "_", "encoding", "cb", "f", "n", "ret", "noDrain", "ended", "p", "data", "extra", "buf", "c", "resolve", "reject", "stopped", "stop", "res", "onerr", "ondata", "onend", "ondestroy", "value", "rej", "next", "s", "require_minipass", "__commonJSMin", "exports", "module", "proc", "EE", "Stream", "SD", "EOF", "MAYBE_EMIT_END", "EMITTED_END", "EMITTING_END", "EMITTED_ERROR", "CLOSED", "READ", "FLUSH", "FLUSHCHUNK", "ENCODING", "DECODER", "FLOWING", "PAUSED", "RESUME", "BUFFERLENGTH", "BUFFERPUSH", "BUFFERSHIFT", "OBJECTMODE", "DESTROYED", "EMITDATA", "EMITEND", "EMITEND2", "ASYNC", "defer", "__name", "fn", "doIter", "ASYNCITERATOR", "ITERATOR", "isEndish", "ev", "isArrayBuffer", "b", "isArrayBufferView", "Pipe", "src", "dest", "opts", "PipeProxyErrors", "er", "Minipass", "options", "enc", "chunk", "om", "a", "encoding", "cb", "f", "n", "ret", "noDrain", "ended", "p", "data", "extra", "buf", "c", "resolve", "reject", "res", "onerr", "ondata", "onend", "value", "ondestroy", "rej", "s", "require_minipass_flush", "__commonJSMin", "exports", "module", "Minipass", "_flush", "_flushed", "_flushing", "Flush", "__name", "opt", "ev", "data", "afterFlush", "er", "ret", "require_minipass", "__commonJSMin", "exports", "module", "proc", "EE", "Stream", "SD", "EOF", "MAYBE_EMIT_END", "EMITTED_END", "EMITTING_END", "EMITTED_ERROR", "CLOSED", "READ", "FLUSH", "FLUSHCHUNK", "ENCODING", "DECODER", "FLOWING", "PAUSED", "RESUME", "BUFFERLENGTH", "BUFFERPUSH", "BUFFERSHIFT", "OBJECTMODE", "DESTROYED", "EMITDATA", "EMITEND", "EMITEND2", "ASYNC", "defer", "__name", "fn", "doIter", "ASYNCITERATOR", "ITERATOR", "isEndish", "ev", "isArrayBuffer", "b", "isArrayBufferView", "Pipe", "src", "dest", "opts", "PipeProxyErrors", "er", "Minipass", "options", "enc", "chunk", "om", "a", "encoding", "cb", "f", "n", "ret", "noDrain", "ended", "p", "data", "extra", "buf", "c", "resolve", "reject", "res", "onerr", "ondata", "onend", "value", "ondestroy", "rej", "s", "require_minipass_collect", "__commonJSMin", "exports", "module", "Minipass", "_data", "_length", "Collect", "__name", "options", "chunk", "encoding", "cb", "c", "result", "CollectPassThrough", "proc", "node_events_1", "node_stream_1", "__importDefault", "node_string_decoder_1", "isStream", "__name", "s", "Minipass", "exports", "isReadable", "isWritable", "EOF", "MAYBE_EMIT_END", "EMITTED_END", "EMITTING_END", "EMITTED_ERROR", "CLOSED", "READ", "FLUSH", "FLUSHCHUNK", "ENCODING", "DECODER", "FLOWING", "PAUSED", "RESUME", "BUFFER", "PIPES", "BUFFERLENGTH", "BUFFERPUSH", "BUFFERSHIFT", "OBJECTMODE", "DESTROYED", "ERROR", "EMITDATA", "EMITEND", "EMITEND2", "ASYNC", "ABORT", "ABORTED", "SIGNAL", "DATALISTENERS", "DISCARDED", "defer", "fn", "nodefer", "isEndish", "ev", "isArrayBufferLike", "b", "isArrayBufferView", "Pipe", "src", "dest", "opts", "_er", "PipeProxyErrors", "er", "isObjectModeOptions", "o", "isEncodingOptions", "args", "options", "signal", "_enc", "_om", "a", "_", "chunk", "encoding", "cb", "n", "ret", "c", "noDrain", "ended", "p", "handler", "h", "data", "buf", "resolve", "reject", "stopped", "stop", "res", "onerr", "ondata", "onend", "ondestroy", "value", "rej", "next", "wc", "require_minipass", "__commonJSMin", "exports", "module", "proc", "EE", "Stream", "SD", "EOF", "MAYBE_EMIT_END", "EMITTED_END", "EMITTING_END", "EMITTED_ERROR", "CLOSED", "READ", "FLUSH", "FLUSHCHUNK", "ENCODING", "DECODER", "FLOWING", "PAUSED", "RESUME", "BUFFERLENGTH", "BUFFERPUSH", "BUFFERSHIFT", "OBJECTMODE", "DESTROYED", "EMITDATA", "EMITEND", "EMITEND2", "ASYNC", "defer", "__name", "fn", "doIter", "ASYNCITERATOR", "ITERATOR", "isEndish", "ev", "isArrayBuffer", "b", "isArrayBufferView", "Pipe", "src", "dest", "opts", "PipeProxyErrors", "er", "Minipass", "options", "enc", "chunk", "om", "a", "encoding", "cb", "f", "n", "ret", "noDrain", "ended", "p", "data", "extra", "buf", "c", "resolve", "reject", "res", "onerr", "ondata", "onend", "value", "ondestroy", "rej", "s", "require_minipass_pipeline", "__commonJSMin", "exports", "module", "Minipass", "EE", "isStream", "__name", "s", "_head", "_tail", "_linkStreams", "_setHead", "_setTail", "_onError", "_onData", "_onEnd", "_onDrain", "_streams", "Pipeline", "opts", "streams", "src", "dest", "er", "linkRet", "stream", "chunk", "ev", "args", "enc", "cb", "require_imurmurhash", "__commonJSMin", "exports", "module", "cache", "MurmurHash3", "key", "seed", "m", "__name", "h1", "k1", "i", "top", "len", "require_lib", "__commonJSMin", "exports", "module", "MurmurHash3", "uniq", "hash", "require_lib", "__commonJSMin", "exports", "module", "path", "uniqueSlug", "filepath", "prefix", "uniq", "require_package", "__commonJSMin", "exports", "module", "require_hash_to_segments", "__commonJSMin", "exports", "module", "hashToSegments", "hash", "__name", "require_path", "__commonJSMin", "exports", "module", "contentVer", "hashToSegments", "path", "ssri", "contentPath", "cache", "integrity", "sri", "contentDir", "__name", "require_get_options", "__commonJSMin", "exports", "module", "getOptions", "__name", "input", "copy", "wrap", "result", "prop", "require_constants", "__commonJSMin", "exports", "module", "SEMVER_SPEC_VERSION", "MAX_SAFE_INTEGER", "MAX_SAFE_COMPONENT_LENGTH", "MAX_SAFE_BUILD_LENGTH", "RELEASE_TYPES", "require_debug", "__commonJSMin", "exports", "module", "debug", "args", "require_re", "__commonJSMin", "exports", "module", "MAX_SAFE_COMPONENT_LENGTH", "MAX_SAFE_BUILD_LENGTH", "MAX_LENGTH", "debug", "re", "safeRe", "src", "safeSrc", "t", "R", "LETTERDASHNUMBER", "safeRegexReplacements", "makeSafeRegex", "__name", "value", "token", "max", "createToken", "name", "isGlobal", "safe", "index", "require_parse_options", "__commonJSMin", "exports", "module", "looseOption", "emptyOpts", "parseOptions", "__name", "options", "require_identifiers", "__commonJSMin", "exports", "module", "numeric", "compareIdentifiers", "__name", "a", "b", "anum", "bnum", "rcompareIdentifiers", "require_semver", "__commonJSMin", "exports", "module", "debug", "MAX_LENGTH", "MAX_SAFE_INTEGER", "re", "t", "parseOptions", "compareIdentifiers", "SemVer", "_SemVer", "__name", "version", "options", "m", "id", "num", "other", "i", "a", "b", "release", "identifier", "identifierBase", "match", "base", "prerelease", "require_parse", "__commonJSMin", "exports", "module", "SemVer", "parse", "__name", "version", "options", "throwErrors", "er", "require_valid", "__commonJSMin", "exports", "module", "parse", "valid", "__name", "version", "options", "v", "require_clean", "__commonJSMin", "exports", "module", "parse", "clean", "__name", "version", "options", "s", "require_inc", "__commonJSMin", "exports", "module", "SemVer", "inc", "__name", "version", "release", "options", "identifier", "identifierBase", "require_diff", "__commonJSMin", "exports", "module", "parse", "diff", "__name", "version1", "version2", "v1", "v2", "comparison", "v1Higher", "highVersion", "lowVersion", "highHasPre", "prefix", "require_major", "__commonJSMin", "exports", "module", "SemVer", "major", "__name", "a", "loose", "require_minor", "__commonJSMin", "exports", "module", "SemVer", "minor", "__name", "a", "loose", "require_patch", "__commonJSMin", "exports", "module", "SemVer", "patch", "__name", "a", "loose", "require_prerelease", "__commonJSMin", "exports", "module", "parse", "prerelease", "__name", "version", "options", "parsed", "require_compare", "__commonJSMin", "exports", "module", "SemVer", "compare", "__name", "a", "b", "loose", "require_rcompare", "__commonJSMin", "exports", "module", "compare", "rcompare", "__name", "a", "b", "loose", "require_compare_loose", "__commonJSMin", "exports", "module", "compare", "compareLoose", "__name", "a", "b", "require_compare_build", "__commonJSMin", "exports", "module", "SemVer", "compareBuild", "__name", "a", "b", "loose", "versionA", "versionB", "require_sort", "__commonJSMin", "exports", "module", "compareBuild", "sort", "__name", "list", "loose", "a", "b", "require_rsort", "__commonJSMin", "exports", "module", "compareBuild", "rsort", "__name", "list", "loose", "a", "b", "require_gt", "__commonJSMin", "exports", "module", "compare", "gt", "__name", "a", "b", "loose", "require_lt", "__commonJSMin", "exports", "module", "compare", "lt", "__name", "a", "b", "loose", "require_eq", "__commonJSMin", "exports", "module", "compare", "eq", "__name", "a", "b", "loose", "require_neq", "__commonJSMin", "exports", "module", "compare", "neq", "__name", "a", "b", "loose", "require_gte", "__commonJSMin", "exports", "module", "compare", "gte", "__name", "a", "b", "loose", "require_lte", "__commonJSMin", "exports", "module", "compare", "lte", "__name", "a", "b", "loose", "require_cmp", "__commonJSMin", "exports", "module", "eq", "neq", "gt", "gte", "lt", "lte", "cmp", "__name", "a", "op", "b", "loose", "require_coerce", "__commonJSMin", "exports", "module", "SemVer", "parse", "re", "t", "coerce", "__name", "version", "options", "match", "coerceRtlRegex", "next", "major", "minor", "patch", "prerelease", "build", "require_lrucache", "__commonJSMin", "exports", "module", "LRUCache", "__name", "key", "value", "firstKey", "require_range", "__commonJSMin", "exports", "module", "SPACE_CHARACTERS", "Range", "_Range", "__name", "range", "options", "parseOptions", "Comparator", "r", "c", "first", "isNullSet", "isAny", "i", "comps", "k", "memoKey", "FLAG_INCLUDE_PRERELEASE", "FLAG_LOOSE", "cached", "cache", "loose", "hr", "re", "t", "hyphenReplace", "debug", "comparatorTrimReplace", "tildeTrimReplace", "caretTrimReplace", "rangeList", "comp", "parseComparator", "replaceGTE0", "rangeMap", "comparators", "result", "thisComparators", "isSatisfiable", "rangeComparators", "thisComparator", "rangeComparator", "version", "SemVer", "testSet", "LRU", "remainingComparators", "testComparator", "otherComparator", "replaceCarets", "replaceTildes", "replaceXRanges", "replaceStars", "isX", "id", "replaceTilde", "_", "M", "m", "p", "pr", "ret", "replaceCaret", "z", "replaceXRange", "gtlt", "xM", "xm", "xp", "anyX", "incPr", "$0", "from", "fM", "fm", "fp", "fpr", "fb", "to", "tM", "tm", "tp", "tpr", "set", "allowed", "require_comparator", "__commonJSMin", "exports", "module", "ANY", "Comparator", "_Comparator", "__name", "comp", "options", "parseOptions", "debug", "r", "re", "t", "m", "SemVer", "version", "cmp", "Range", "require_satisfies", "__commonJSMin", "exports", "module", "Range", "satisfies", "__name", "version", "range", "options", "require_to_comparators", "__commonJSMin", "exports", "module", "Range", "toComparators", "__name", "range", "options", "comp", "c", "require_max_satisfying", "__commonJSMin", "exports", "module", "SemVer", "Range", "maxSatisfying", "__name", "versions", "range", "options", "max", "maxSV", "rangeObj", "v", "require_min_satisfying", "__commonJSMin", "exports", "module", "SemVer", "Range", "minSatisfying", "__name", "versions", "range", "options", "min", "minSV", "rangeObj", "v", "require_min_version", "__commonJSMin", "exports", "module", "SemVer", "Range", "gt", "minVersion", "__name", "range", "loose", "minver", "comparators", "setMin", "comparator", "compver", "require_valid", "__commonJSMin", "exports", "module", "Range", "validRange", "__name", "range", "options", "require_outside", "__commonJSMin", "exports", "module", "SemVer", "Comparator", "ANY", "Range", "satisfies", "gt", "lt", "lte", "gte", "outside", "__name", "version", "range", "hilo", "options", "gtfn", "ltefn", "ltfn", "comp", "ecomp", "i", "comparators", "high", "low", "comparator", "require_gtr", "__commonJSMin", "exports", "module", "outside", "gtr", "__name", "version", "range", "options", "require_ltr", "__commonJSMin", "exports", "module", "outside", "ltr", "__name", "version", "range", "options", "require_intersects", "__commonJSMin", "exports", "module", "Range", "intersects", "__name", "r1", "r2", "options", "require_simplify", "__commonJSMin", "exports", "module", "satisfies", "compare", "versions", "range", "options", "set", "first", "prev", "v", "a", "b", "version", "ranges", "min", "max", "simplified", "original", "require_subset", "__commonJSMin", "exports", "module", "Range", "Comparator", "ANY", "satisfies", "compare", "subset", "__name", "sub", "dom", "options", "sawNonNull", "OUTER", "simpleSub", "simpleDom", "isSub", "simpleSubset", "minimumVersionWithPreRelease", "minimumVersion", "eqSet", "gt", "lt", "c", "higherGT", "lowerLT", "gtltComp", "eq", "higher", "lower", "hasDomLT", "hasDomGT", "needDomLTPre", "needDomGTPre", "a", "b", "comp", "require_semver", "__commonJSMin", "exports", "module", "internalRe", "constants", "SemVer", "identifiers", "parse", "valid", "clean", "inc", "diff", "major", "minor", "patch", "prerelease", "compare", "rcompare", "compareLoose", "compareBuild", "sort", "rsort", "gt", "lt", "eq", "neq", "gte", "lte", "cmp", "coerce", "Comparator", "Range", "satisfies", "toComparators", "maxSatisfying", "minSatisfying", "minVersion", "validRange", "outside", "gtr", "ltr", "intersects", "simplifyRange", "subset", "require_node", "__commonJSMin", "exports", "module", "semver", "satisfies", "__name", "range", "require_errors", "__commonJSMin", "exports", "module", "inspect", "SystemError", "__name", "code", "prefix", "context", "message", "value", "_recurseTimes", "ctx", "E", "name", "expected", "actual", "require_polyfill", "__commonJSMin", "exports", "module", "ERR_FS_CP_DIR_TO_NON_DIR", "ERR_FS_CP_EEXIST", "ERR_FS_CP_EINVAL", "ERR_FS_CP_FIFO_PIPE", "ERR_FS_CP_NON_DIR_TO_DIR", "ERR_FS_CP_SOCKET", "ERR_FS_CP_SYMLINK_TO_SUBDIRECTORY", "ERR_FS_CP_UNKNOWN", "ERR_FS_EISDIR", "ERR_INVALID_ARG_TYPE", "EEXIST", "EISDIR", "EINVAL", "ENOTDIR", "chmod", "copyFile", "lstat", "mkdir", "readdir", "readlink", "stat", "symlink", "unlink", "utimes", "dirname", "isAbsolute", "join", "parse", "resolve", "sep", "toNamespacedPath", "fileURLToPath", "defaultOptions", "cp", "src", "dest", "opts", "cpFn", "getValidatedPath", "__name", "fileURLOrPath", "stats", "checkPaths", "srcStat", "destStat", "checkParentPaths", "handleFilter", "checkParentDir", "getStats", "areIdentical", "isSrcSubdir", "statFunc", "file", "err", "destParent", "pathExists", "getStatsForCopy", "srcParent", "normalizePathToArray", "path", "srcArr", "destArr", "cur", "i", "onInclude", "cb", "startCopy", "onDir", "onFile", "onLink", "mayCopyFile", "_copyFile", "handleTimestampsAndMode", "setDestMode", "srcMode", "fileIsNotWritable", "makeFileWritable", "setDestTimestampsAndMode", "setDestTimestamps", "updatedSrcStat", "copyDir", "mkDirAndCopy", "dir", "item", "srcItem", "destItem", "resolvedSrc", "resolvedDest", "copyLink", "require_cp", "__commonJSMin", "exports", "module", "fs", "getOptions", "node", "polyfill", "useNative", "cp", "__name", "src", "dest", "opts", "options", "require_with_temp_dir", "__commonJSMin", "exports", "module", "join", "sep", "getOptions", "mkdir", "mkdtemp", "rm", "withTempDir", "__name", "root", "fn", "opts", "options", "target", "err", "result", "_err", "require_readdir_scoped", "__commonJSMin", "exports", "module", "readdir", "join", "readdirScoped", "__name", "dir", "results", "item", "scopedItem", "require_move_file", "__commonJSMin", "exports", "module", "dirname", "join", "resolve", "relative", "isAbsolute", "fs", "pathExists", "__name", "path", "er", "moveFile", "source", "destination", "options", "root", "symlinks", "error", "sourceStat", "files", "file", "symSource", "symDestination", "target", "targetStat", "require_lib", "__commonJSMin", "exports", "module", "cp", "withTempDir", "readdirScoped", "moveFile", "require_entry_index", "__commonJSMin", "exports", "module", "crypto", "appendFile", "mkdir", "readFile", "readdir", "rm", "writeFile", "Minipass", "path", "ssri", "uniqueFilename", "contentPath", "hashToSegments", "indexV", "moveFile", "__name", "cache", "key", "compact", "matchFn", "opts", "bucket", "bucketPath", "entries", "bucketEntries", "newEntries", "i", "entry", "oldEntry", "newIndex", "stringified", "hashEntry", "setup", "target", "teardown", "tmp", "write", "formatEntry", "insert", "integrity", "metadata", "size", "time", "err", "find", "latest", "next", "del", "lsStream", "indexDir", "bucketDir", "stream", "buckets", "readdirOrEmpty", "subbuckets", "subbucket", "subbucketPath", "subbucketEntries", "entryPath", "reduced", "acc", "formatted", "ls", "xs", "filter", "data", "_bucketEntries", "pieces", "obj", "hashed", "hashKey", "hash", "str", "digest", "keepAll", "dir", "require_lru_cache", "__commonJSMin", "exports", "module", "perf", "hasAbortController", "AC", "__name", "AS", "reason", "hasAbortSignal", "hasACAbortSignal", "f", "ev", "fn", "warned", "deprecatedOption", "opt", "instead", "code", "shouldWarn", "warn", "LRUCache", "deprecatedMethod", "method", "prototype", "get", "deprecatedProperty", "field", "emitWarning", "a", "what", "msg", "isPosInt", "n", "getUintArray", "max", "ZeroArray", "size", "Stack", "UintArray", "_LRUCache", "options", "ttl", "ttlResolution", "ttlAutopurge", "updateAgeOnGet", "updateAgeOnHas", "allowStale", "dispose", "disposeAfter", "noDisposeOnSet", "noUpdateTTL", "maxSize", "maxEntrySize", "sizeCalculation", "fetchMethod", "fetchContext", "noDeleteOnFetchRejection", "noDeleteOnStaleGet", "allowStaleOnFetchRejection", "allowStaleOnFetchAbort", "ignoreFetchAbort", "length", "maxAge", "stale", "key", "index", "start", "t", "status", "cachedNow", "getNow", "_index", "_status", "_ttl", "_start", "k", "v", "_size", "_k", "_v", "i", "getOptions", "value", "thisp", "deleted", "arr", "entry", "age", "_reason", "oldVal", "oldValue", "val", "free", "head", "context", "ac", "fetchOpts", "cb", "updateCache", "aborted", "ignoreAbort", "fetchFail", "p", "eb", "er", "allowStaleAborted", "noDelete", "pcall", "res", "rej", "forceRefresh", "signal", "isStale", "hasStale", "staleVal", "fetching", "require_memoization", "__commonJSMin", "exports", "module", "LRU", "MEMOIZED", "__name", "entry", "key", "clearMemoized", "old", "v", "k", "put", "cache", "data", "opts", "pickMem", "putDigest", "integrity", "get", "getDigest", "ObjProxy", "obj", "val", "require_lib", "__commonJSMin", "exports", "Minipass", "EE", "fs", "writev", "_autoClose", "_close", "_ended", "_fd", "_finished", "_flags", "_flush", "_handleChunk", "_makeBuf", "_mode", "_needDrain", "_onerror", "_onopen", "_onread", "_onwrite", "_open", "_path", "_pos", "_queue", "_read", "_readSize", "_reading", "_remain", "_size", "_write", "_writing", "_defaultFlag", "_errored", "ReadStream", "__name", "path", "opt", "er", "fd", "buf", "br", "b", "ret", "ev", "data", "ReadStreamSync", "threw", "WriteStream", "defaultFlag", "enc", "bw", "iovec", "WriteStreamSync", "require_read", "__commonJSMin", "exports", "module", "fs", "fsm", "ssri", "contentPath", "Pipeline", "read", "MAX_SINGLE_READ_SIZE", "cache", "integrity", "opts", "size", "stat", "cpath", "sri", "withContentSri", "sizeError", "readPipeline", "data", "integrityError", "__name", "stream", "readStream", "err", "copy", "dest", "hasContent", "fn", "algo", "digests", "results", "meta", "result", "r", "enoentError", "expected", "found", "path", "require_get", "__commonJSMin", "exports", "module", "Collect", "Minipass", "Pipeline", "index", "memo", "read", "getData", "cache", "key", "opts", "integrity", "memoize", "size", "memoized", "entry", "data", "__name", "getDataByDigest", "res", "getMemoizedStream", "stream", "ev", "cb", "getStream", "src", "memoStream", "err", "getStreamDigest", "info", "copy", "dest", "copyByDigest", "require_write", "__commonJSMin", "exports", "module", "events", "contentPath", "fs", "moveFile", "Minipass", "Pipeline", "Flush", "path", "ssri", "uniqueFilename", "fsm", "write", "moveOperations", "cache", "data", "opts", "algorithms", "size", "integrity", "sizeError", "sri", "checksumError", "algo", "tmp", "makeTmp", "hash", "moveToDestination", "__name", "writeStream", "CacacheWriteStream", "er", "chunk", "encoding", "cb", "handleContent", "e", "res", "inputStream", "pipeToTmp", "tmpTarget", "outStream", "hashStream", "i", "s", "destination", "destDir", "err", "expected", "found", "require_put", "__commonJSMin", "exports", "module", "index", "memo", "write", "Flush", "PassThrough", "Pipeline", "putOpts", "__name", "opts", "putData", "cache", "key", "data", "memoize", "res", "entry", "putStream", "integrity", "size", "error", "memoData", "pipeline", "memoizer", "contentStream", "int", "s", "err", "require_balanced_match", "__commonJSMin", "exports", "module", "balanced", "a", "b", "str", "maybeMatch", "r", "range", "__name", "reg", "m", "begs", "beg", "left", "right", "result", "ai", "bi", "i", "require_brace_expansion", "__commonJSMin", "exports", "module", "balanced", "expandTop", "escSlash", "escOpen", "escClose", "escComma", "escPeriod", "numeric", "str", "__name", "escapeBraces", "unescapeBraces", "parseCommaParts", "parts", "m", "pre", "body", "post", "p", "postParts", "expand", "embrace", "isPadded", "el", "lte", "i", "y", "gte", "isTop", "expansions", "k", "expansion", "isNumericSequence", "isAlphaSequence", "isSequence", "isOptions", "n", "N", "x", "width", "incr", "test", "reverse", "pad", "c", "need", "z", "j", "MAX_PATTERN_LENGTH", "assertValidPattern", "__name", "pattern", "exports", "posixClasses", "braceEscape", "__name", "s", "regexpEscape", "rangesToString", "ranges", "parseClass", "glob", "position", "pos", "negs", "i", "sawStart", "uflag", "escaping", "negate", "endPos", "rangeStart", "WHILE", "c", "cls", "unip", "u", "neg", "r", "sranges", "snegs", "exports", "unescape", "__name", "s", "windowsPathsNoEscape", "exports", "brace_expressions_js_1", "unescape_js_1", "types", "isExtglobType", "__name", "c", "startNoTraversal", "startNoDot", "addPatternStart", "justDots", "reSpecials", "regExpEscape", "s", "qmark", "star", "starNoEmpty", "AST", "_AST", "#root", "#hasMagic", "#uflag", "#parts", "#parent", "#parentIndex", "#negs", "#filledNegs", "#options", "#toString", "#emptyExt", "type", "parent", "options", "p", "#fillNegs", "n", "pp", "i", "part", "parts", "ret", "pl", "#parseAST", "str", "ast", "pos", "opt", "escaping", "inBrace", "braceStart", "braceNeg", "acc", "ext", "pattern", "glob", "re", "body", "hasMagic", "uflag", "flags", "allowDot", "dot", "noEmpty", "src", "_", "#parseGlob", "start", "aps", "needNoTrav", "needNoDot", "end", "repeated", "#partsToRegExp", "bodyDotAllowed", "final", "close", "_hasMagic", "needUflag", "consumed", "magic", "exports", "escape", "__name", "s", "windowsPathsNoEscape", "exports", "brace_expansion_1", "__importDefault", "assert_valid_pattern_js_1", "ast_js_1", "escape_js_1", "unescape_js_1", "minimatch", "__name", "p", "pattern", "options", "Minimatch", "exports", "starDotExtRE", "starDotExtTest", "ext", "f", "starDotExtTestDot", "starDotExtTestNocase", "starDotExtTestNocaseDot", "starDotStarRE", "starDotStarTest", "starDotStarTestDot", "dotStarRE", "dotStarTest", "starRE", "starTest", "starTestDot", "qmarksRE", "qmarksTestNocase", "$0", "noext", "qmarksTestNoExt", "qmarksTestNocaseDot", "qmarksTestNoExtDot", "qmarksTestDot", "qmarksTest", "len", "defaultPlatform", "path", "qmark", "star", "twoStarDot", "twoStarNoDot", "filter", "a", "b", "defaults", "def", "orig", "type", "parent", "s", "list", "braceExpand", "makeRe", "match", "mm", "globMagic", "regExpEscape", "part", "_", "args", "rawGlobParts", "set", "__", "isUNC", "isDrive", "ss", "i", "globParts", "j", "optimizationLevel", "parts", "gs", "prev", "didSomething", "dd", "gss", "next", "p2", "other", "splin", "matched", "emptyGSMatch", "ai", "bi", "result", "which", "negate", "negateOffset", "file", "partial", "fileDrive", "fileUNC", "patternDrive", "patternUNC", "fdi", "pdi", "fd", "pd", "fi", "pi", "fl", "pl", "fr", "pr", "swallowee", "hit", "m", "fastTest", "re", "twoStar", "flags", "pp", "open", "close", "ff", "filename", "ast_js_2", "escape_js_2", "unescape_js_2", "perf", "warned", "PROCESS", "emitWarning", "__name", "msg", "type", "code", "fn", "AC", "AS", "_", "warnACPolyfill", "reason", "printACPolyfillWarning", "shouldWarn", "TYPE", "isPosInt", "n", "getUintArray", "max", "ZeroArray", "size", "Stack", "_Stack", "#constructing", "HeapCls", "s", "LRUCache", "_LRUCache", "#max", "#maxSize", "#dispose", "#disposeAfter", "#fetchMethod", "#memoMethod", "#size", "#calculatedSize", "#keyMap", "#keyList", "#valList", "#next", "#prev", "#head", "#tail", "#free", "#disposed", "#sizes", "#starts", "#ttls", "#hasDispose", "#hasFetchMethod", "#hasDisposeAfter", "c", "p", "#isBackgroundFetch", "k", "index", "options", "context", "#backgroundFetch", "#moveToTail", "#indexes", "#rindexes", "#isStale", "ttl", "ttlResolution", "ttlAutopurge", "updateAgeOnGet", "updateAgeOnHas", "allowStale", "dispose", "disposeAfter", "noDisposeOnSet", "noUpdateTTL", "maxSize", "maxEntrySize", "sizeCalculation", "fetchMethod", "memoMethod", "noDeleteOnFetchRejection", "noDeleteOnStaleGet", "allowStaleOnFetchRejection", "allowStaleOnFetchAbort", "ignoreFetchAbort", "UintArray", "#initializeSizeTracking", "#initializeTTLTracking", "key", "ttls", "starts", "#setItemTTL", "start", "t", "#delete", "#updateItemAge", "#statusTTL", "status", "cachedNow", "getNow", "age", "sizes", "#removeItemSize", "#requireSize", "v", "#addItemSize", "#evict", "_i", "_s", "_st", "_k", "_v", "i", "#isValidIndex", "getOptions", "value", "thisp", "deleted", "entry", "remain", "arr", "setOptions", "oldVal", "oldValue", "dt", "task", "val", "free", "head", "hasOptions", "peekOptions", "ac", "signal", "fetchOpts", "cb", "updateCache", "aborted", "ignoreAbort", "fetchFail", "bf", "eb", "er", "allowStaleAborted", "noDelete", "pcall", "res", "rej", "fmp", "b", "fetchOptions", "forceRefresh", "stale", "isStale", "staleVal", "memoOptions", "vv", "fetching", "#connect", "#clear", "pi", "ni", "exports", "lru_cache_1", "node_path_1", "node_url_1", "fs_1", "actualFS", "__importStar", "realpathSync", "promises_1", "minipass_1", "defaultFS", "fsFromOption", "__name", "fsOption", "uncDriveRegexp", "uncToDrive", "rootPath", "eitherSep", "UNKNOWN", "IFIFO", "IFCHR", "IFDIR", "IFBLK", "IFREG", "IFLNK", "IFSOCK", "IFMT", "IFMT_UNKNOWN", "READDIR_CALLED", "LSTAT_CALLED", "ENOTDIR", "ENOENT", "ENOREADLINK", "ENOREALPATH", "ENOCHILD", "TYPEMASK", "entToType", "s", "normalizeCache", "normalize", "c", "normalizeNocaseCache", "normalizeNocase", "ResolveCache", "exports", "ChildrenCache", "maxSize", "a", "setAsCwd", "PathBase", "#fs", "#dev", "#mode", "#nlink", "#uid", "#gid", "#rdev", "#blksize", "#ino", "#size", "#blocks", "#atimeMs", "#mtimeMs", "#ctimeMs", "#birthtimeMs", "#atime", "#mtime", "#ctime", "#birthtime", "#matchName", "#depth", "#fullpath", "#fullpathPosix", "#relative", "#relativePosix", "#type", "#children", "#linkTarget", "#realpath", "name", "type", "root", "roots", "nocase", "children", "opts", "path", "dirParts", "#resolveParts", "p", "part", "cached", "pathPart", "fullpath", "pchild", "pv", "fp", "pfpp", "fpp", "ifmt", "n", "target", "read", "linkTarget", "er", "#readlinkFail", "#readdirSuccess", "#markENOENT", "#markChildrenENOENT", "#markENOREALPATH", "#markENOTDIR", "t", "#readdirFail", "code", "#lstatFail", "ter", "#readdirAddChild", "#readdirMaybePromoteChild", "#readdirAddNewChild", "child", "#readdirPromoteChild", "index", "v", "#applyStat", "st", "atime", "atimeMs", "birthtime", "birthtimeMs", "blksize", "blocks", "ctime", "ctimeMs", "dev", "gid", "ino", "mode", "mtime", "mtimeMs", "nlink", "rdev", "size", "uid", "#onReaddirCB", "#readdirCBInFlight", "#callOnReaddirCB", "cbs", "cb", "allowZalgo", "entries", "e", "#asyncReaddirInFlight", "resolve", "res", "dirs", "walkFilter", "rp", "oldCwd", "changed", "PathWin32", "_PathWin32", "compare", "PathScurryWin32", "PathPosix", "_PathPosix", "_rootPath", "PathScurryBase", "#resolveCache", "#resolvePosixCache", "cwd", "pathImpl", "sep", "childrenCacheSize", "fs", "cwdPath", "split", "prev", "len", "joinSep", "abs", "sawFirst", "l", "paths", "r", "i", "result", "entry", "withFileTypes", "follow", "filter", "results", "walk", "dir", "next", "start", "rej", "options", "queue", "processing", "process", "paused", "onReaddir", "didRealpaths", "promises", "sync", "PathScurryPosix", "_dir", "PathScurryDarwin", "minimatch_1", "isPatternList", "__name", "pl", "isGlobList", "gl", "Pattern", "_Pattern", "#patternList", "#globList", "#index", "#platform", "#rest", "#globString", "#isDrive", "#isUNC", "#isAbsolute", "#followGlobstar", "patternList", "globList", "index", "platform", "p0", "p1", "p2", "p3", "prest", "g0", "g1", "g2", "g3", "grest", "p", "g", "exports", "proc", "node_events_1", "node_stream_1", "__importDefault", "node_string_decoder_1", "isStream", "__name", "s", "Minipass", "exports", "isReadable", "isWritable", "EOF", "MAYBE_EMIT_END", "EMITTED_END", "EMITTING_END", "EMITTED_ERROR", "CLOSED", "READ", "FLUSH", "FLUSHCHUNK", "ENCODING", "DECODER", "FLOWING", "PAUSED", "RESUME", "BUFFER", "PIPES", "BUFFERLENGTH", "BUFFERPUSH", "BUFFERSHIFT", "OBJECTMODE", "DESTROYED", "ERROR", "EMITDATA", "EMITEND", "EMITEND2", "ASYNC", "ABORT", "ABORTED", "SIGNAL", "DATALISTENERS", "DISCARDED", "defer", "fn", "nodefer", "isEndish", "ev", "isArrayBufferLike", "b", "isArrayBufferView", "Pipe", "src", "dest", "opts", "_er", "PipeProxyErrors", "er", "isObjectModeOptions", "o", "isEncodingOptions", "args", "options", "signal", "_enc", "_om", "a", "_", "chunk", "encoding", "cb", "n", "ret", "c", "noDrain", "ended", "p", "handler", "h", "data", "buf", "resolve", "reject", "stopped", "stop", "res", "onerr", "ondata", "onend", "ondestroy", "value", "rej", "next", "wc", "minimatch_1", "pattern_js_1", "defaultPlatform", "Ignore", "__name", "ignored", "nobrace", "nocase", "noext", "noglobstar", "platform", "ign", "mm", "parsed", "globParts", "p", "m", "children", "absolute", "fullpath", "fullpaths", "relative", "relatives", "exports", "minimatch_1", "HasWalkedCache", "_HasWalkedCache", "__name", "store", "target", "pattern", "fullpath", "cached", "exports", "MatchRecord", "absolute", "ifDir", "n", "current", "path", "SubWalks", "subs", "p", "k", "t", "Processor", "_Processor", "opts", "hasWalkedCache", "patterns", "processingSet", "root", "rest", "changed", "rp", "rrest", "tp", "parent", "entries", "results", "e", "ep", "minipass_1", "ignore_js_1", "processor_js_1", "makeIgnore", "__name", "ignore", "opts", "GlobUtil", "#onResume", "#ignore", "#sep", "patterns", "path", "m", "#ignored", "#childrenIgnored", "fn", "ifDir", "rpc", "s", "target", "absolute", "ign", "abs", "mark", "rel", "pre", "p", "cb", "processor", "tasks", "next", "t", "childrenCached", "_", "entries", "children", "exports", "GlobWalker", "res", "rej", "GlobStream", "minimatch_1", "node_url_1", "path_scurry_1", "pattern_js_1", "walker_js_1", "defaultPlatform", "Glob", "__name", "pattern", "opts", "p", "Scurry", "nocaseMagicOnly", "mmo", "mms", "matchSet", "globParts", "set", "m", "i", "g", "exports", "minimatch_1", "hasMagic", "__name", "pattern", "options", "p", "exports", "exports", "globStreamSync", "globStream", "globSync", "globIterateSync", "globIterate", "minimatch_1", "glob_js_1", "has_magic_js_1", "minimatch_2", "__name", "glob_js_2", "has_magic_js_2", "ignore_js_1", "pattern", "options", "glob_", "require_glob", "__commonJSMin", "exports", "module", "glob", "path", "globify", "__name", "pattern", "options", "require_rm", "__commonJSMin", "exports", "module", "fs", "contentPath", "hasContent", "rm", "cache", "integrity", "content", "__name", "require_rm", "__commonJSMin", "exports", "module", "rm", "glob", "index", "memo", "path", "rmContent", "entry", "cache", "key", "opts", "__name", "content", "integrity", "all", "paths", "p", "require_indent_string", "__commonJSMin", "exports", "module", "string", "count", "options", "regex", "require_clean_stack", "__commonJSMin", "exports", "module", "os", "extractPathRegex", "pathRegex", "homeDir", "stack", "options", "line", "pathMatches", "match", "m", "p1", "require_aggregate_error", "__commonJSMin", "exports", "module", "indentString", "cleanStack", "cleanInternalStack", "__name", "stack", "AggregateError", "errors", "error", "message", "require_p_map", "__commonJSMin", "exports", "module", "AggregateError", "iterable", "mapper", "concurrency", "stopOnError", "resolve", "reject", "result", "errors", "iterator", "isRejected", "isIterableDone", "resolvingCount", "currentIndex", "next", "__name", "nextItem", "index", "element", "error", "i", "require_verify", "__commonJSMin", "exports", "module", "mkdir", "readFile", "rm", "stat", "truncate", "writeFile", "pMap", "contentPath", "fsm", "glob", "index", "path", "ssri", "hasOwnProperty", "__name", "obj", "key", "verifyOpts", "opts", "verify", "cache", "steps", "markStartTime", "fixPerms", "garbageCollect", "rebuildIndex", "cleanTmp", "writeVerifile", "markEndTime", "stats", "step", "label", "start", "s", "k", "end", "indexStream", "liveContent", "entry", "integrity", "algo", "resolve", "reject", "contentDir", "files", "f", "split", "digest", "info", "verifyContent", "filepath", "sri", "contentInfo", "size", "err", "entries", "buckets", "hashed", "excluded", "rebuildBucket", "bucket", "content", "verifile", "lastRun", "data", "require_tmp", "__commonJSMin", "exports", "module", "withTempDir", "fs", "path", "mktmpdir", "cache", "opts", "tmpPrefix", "tmpDir", "target", "__name", "withTmp", "cb", "require_lib", "__commonJSMin", "exports", "module", "get", "put", "rm", "verify", "clearMemoized", "tmp", "index", "require_pipeline", "__commonJSMin", "exports", "module", "MinipassPipeline", "CachingMinipassPipeline", "__name", "#events", "#data", "opts", "streams", "event", "handler", "data", "require_key", "__commonJSMin", "exports", "module", "URL", "format", "formatOptions", "cacheKey", "__name", "request", "parsed", "require_err_code", "__commonJSMin", "exports", "module", "assign", "obj", "props", "key", "__name", "createError", "err", "code", "ErrClass", "require_retry_operation", "__commonJSMin", "exports", "module", "RetryOperation", "timeouts", "options", "__name", "err", "currentTime", "timeout", "self", "timer", "fn", "timeoutOps", "counts", "mainError", "mainErrorCount", "error", "message", "count", "require_retry", "__commonJSMin", "exports", "RetryOperation", "options", "timeouts", "opts", "key", "i", "a", "b", "attempt", "random", "timeout", "obj", "methods", "method", "original", "__name", "op", "args", "callback", "err", "require_retry", "__commonJSMin", "exports", "module", "require_promise_retry", "__commonJSMin", "exports", "module", "errcode", "retry", "hasOwn", "isRetryError", "err", "__name", "promiseRetry", "fn", "options", "temp", "operation", "resolve", "reject", "number", "require_is_lambda", "__commonJSMin", "exports", "module", "require_dns", "__commonJSMin", "exports", "LRUCache", "dns", "defaultOptions", "lookupCache", "dnsOptions", "hostname", "options", "callback", "key", "address", "family", "err", "require_humanize_ms", "__commonJSMin", "exports", "module", "util", "ms", "r", "err", "require_constants", "__commonJSMin", "exports", "module", "require_agent", "__commonJSMin", "exports", "module", "OriginalAgent", "ms", "debug", "INIT_SOCKET", "CURRENT_ID", "CREATE_ID", "SOCKET_CREATED_TIME", "SOCKET_NAME", "SOCKET_REQUEST_COUNT", "SOCKET_REQUEST_FINISHED_COUNT", "defaultTimeoutListenerCount", "majorVersion", "deprecate", "message", "__name", "Agent", "options", "socket", "timeout", "freeSocketTimeout", "socketActiveTTL", "aliveTime", "diff", "result", "customTimeout", "args", "req", "agentTimeout", "getSocketTimeout", "id", "installListeners", "oncreate", "called", "onNewCreate", "err", "newSocket", "changed", "inspect", "agent", "onFree", "name", "onClose", "isError", "onTimeout", "listenerCount", "reqTimeoutListenerCount", "f", "error", "onError", "onRemove", "obj", "res", "key", "require_https_agent", "__commonJSMin", "exports", "module", "OriginalHttpsAgent", "HttpAgent", "INIT_SOCKET", "CREATE_HTTPS_CONNECTION", "HttpsAgent", "__name", "options", "oncreate", "socket", "method", "require_agentkeepalive", "__commonJSMin", "exports", "module", "HttpAgent", "once", "emitter", "name", "signal", "resolve", "reject", "cleanup", "onEvent", "onError", "__name", "args", "err", "exports", "promisify", "fn", "req", "opts", "resolve", "reject", "err", "rtn", "__name", "exports", "events_1", "debug_1", "__importDefault", "promisify_1", "debug", "isAgent", "v", "__name", "isSecureEndpoint", "stack", "l", "createAgent", "callback", "opts", "Agent", "_opts", "req", "fn", "timedOut", "timeoutId", "timeoutMs", "onerror", "err", "ontimeout", "callbackError", "onsocket", "socket", "module", "net_1", "__importDefault", "tls_1", "url_1", "debug_1", "once_1", "agent_base_1", "debug", "isHTTPS", "protocol", "__name", "HttpProxyAgent", "_opts", "opts", "proxy", "req", "secureProxy", "parsed", "socket", "first", "endOfHeaders", "exports", "agent_1", "__importDefault", "createHttpProxyAgent", "opts", "__name", "module", "debug_1", "__importDefault", "debug", "parseProxyResponse", "socket", "resolve", "reject", "buffersLength", "buffers", "read", "b", "ondata", "__name", "cleanup", "onend", "onerror", "onclose", "err", "buffered", "firstLine", "statusCode", "exports", "net_1", "__importDefault", "tls_1", "url_1", "assert_1", "debug_1", "agent_base_1", "parse_proxy_response_1", "debug", "HttpsProxyAgent", "__name", "_opts", "opts", "proxy", "isHTTPS", "req", "secureProxy", "socket", "headers", "payload", "host", "port", "secureEndpoint", "isDefaultPort", "name", "proxyResponsePromise", "statusCode", "buffered", "resume", "servername", "omit", "fakeSocket", "s", "exports", "secure", "protocol", "obj", "keys", "ret", "key", "agent_1", "__importDefault", "createHttpsProxyAgent", "opts", "__name", "module", "buffer_1", "ERRORS", "exports", "checkEncoding", "encoding", "__name", "isFiniteInteger", "value", "isInteger", "checkOffsetOrLengthValue", "offset", "checkLengthValue", "length", "checkOffsetValue", "checkTargetOffset", "buff", "bigIntAndBufferInt64Check", "bufferMethod", "utils_1", "DEFAULT_SMARTBUFFER_SIZE", "DEFAULT_SMARTBUFFER_ENCODING", "SmartBuffer", "_SmartBuffer", "__name", "options", "size", "encoding", "buff", "castOptions", "offset", "value", "arg1", "lengthVal", "arg2", "nullPos", "i", "length", "endPoint", "encodingVal", "isInsert", "arg3", "offsetVal", "byteLength", "dataLength", "minLength", "oldLength", "data", "newLength", "func", "byteSize", "exports", "DEFAULT_TIMEOUT", "exports", "ERRORS", "SOCKS_INCOMING_PACKET_SIZES", "__name", "hostNameLength", "SocksCommand", "Socks4Response", "Socks5Auth", "SOCKS5_CUSTOM_AUTH_START", "SOCKS5_CUSTOM_AUTH_END", "SOCKS5_NO_ACCEPTABLE_AUTH", "Socks5Response", "Socks5HostType", "SocksClientState", "SocksClientError", "__name", "message", "options", "exports", "shuffleArray", "array", "i", "j", "exports", "isInSubnet", "isCorrect", "numberToPaddedHex", "stringToPaddedHex", "testBit", "address", "__name", "defaultBits", "number", "numberString", "binaryValue", "position", "length", "positionInString", "exports", "AddressError", "__name", "message", "parseMessage", "exports", "common", "__importStar", "constants", "address_error_1", "Address4", "_Address4", "__name", "address", "subnet", "groups", "part", "hex", "padded", "i", "h", "integer", "arpaFormAddress", "output", "n", "adjust", "bigInt", "mask", "start", "end", "options", "reversed", "segments", "exports", "exports", "exports", "spanAllZeroes", "spanAll", "spanLeadingZeroes", "simpleGroup", "s", "__name", "offset", "n", "i", "spanLeadingZeroesSimple", "group", "address", "g", "addressString", "exports", "groupPossibilities", "padGroup", "simpleRegularExpression", "possibleElisions", "v6", "__importStar", "possibilities", "__name", "group", "groups", "zeroIndexes", "i", "zeroIndex", "elision", "elidedGroups", "moreLeft", "moreRight", "left", "right", "position", "common", "__importStar", "constants4", "constants6", "helpers", "ipv4_1", "regular_expressions_1", "address_error_1", "common_1", "assert", "condition", "__name", "addCommas", "number", "r", "spanLeadingZeroes4", "n", "compact", "address", "slice", "s1", "s2", "i", "paddedHex", "octet", "unsignByte", "b", "Address6", "_Address6", "optionalGroups", "subnet", "zone", "bigInt", "hex", "groups", "url", "host", "port", "result", "address4", "mask6", "arpaFormAddress", "semicolonAmount", "parts", "insertIndex", "mask", "subnetSize", "availableBits", "subnetBits", "subnetPowers", "adjust", "scope", "start", "end", "length", "options", "characters", "reversed", "zeroCounter", "zeroes", "value", "zeroLengths", "index", "correct", "badCharacters", "badAddress", "halves", "first", "last", "remaining", "group", "binary", "infix", "prefix", "udpPort", "server4", "bitsForClient4", "client4", "flagsBase2", "coneNat", "reserved", "groupIndividual", "universalLocal", "nonce", "gateway", "addr6to4", "valueWithoutPadding", "bytes", "BYTE_MAX", "multiplier", "optionalPort", "formFunction", "form", "output", "left", "right", "classes", "substringSearch", "address6", "exports", "ipv4_1", "exports", "__name", "ipv6_1", "address_error_1", "helpers", "__importStar", "util_1", "constants_1", "stream", "ip_address_1", "net", "validateSocksClientOptions", "options", "acceptedCommands", "isValidSocksRemoteHost", "isValidSocksProxy", "validateCustomProxyAuth", "isValidTimeoutValue", "__name", "exports", "validateSocksClientChainOptions", "proxy", "remoteHost", "value", "ipv4ToInt32", "ip", "acc", "part", "int32ToIpv4", "int32", "octet1", "octet2", "octet3", "octet4", "ipToBuffer", "address", "segment", "ReceiveBuffer", "__name", "size", "data", "tmp", "length", "value", "exports", "events_1", "net", "smart_buffer_1", "constants_1", "helpers_1", "receivebuffer_1", "util_1", "exports", "__name", "ip_address_1", "SocksClient", "_SocksClient", "options", "callback", "resolve", "reject", "err", "client", "info", "__awaiter", "sock", "i", "nextProxy", "nextDestination", "result", "buff", "data", "frameNumber", "hostType", "remoteHost", "remotePort", "newState", "existingSocket", "timer", "excessData", "userId", "supportedAuthMethods", "authMethod", "password", "authResult", "header", "addressType", "dataNeeded", "hostLength", "__exportStar", "exports", "socks_1", "agent_base_1", "debug_1", "__importDefault", "dns_1", "tls_1", "debug", "parseSocksProxy", "opts", "port", "lookup", "type", "host", "proxy", "userId", "_a", "password", "auth", "__name", "normalizeProxyOptions", "input", "proxyOptions", "SocksProxyAgent", "options", "parsedProxy", "req", "shouldLookup", "timeout", "lookupCallback", "resolve", "reject", "err", "res", "socksOpts", "cleanup", "tlsSocket", "socket", "servername", "omit", "error", "exports", "obj", "keys", "ret", "key", "require_agent", "__commonJSMin", "exports", "module", "LRU", "url", "isLambda", "dns", "AGENT_CACHE", "HttpAgent", "HttpsAgent", "getAgent", "getAgentTimeout", "__name", "timeout", "getMaxSockets", "maxSockets", "uri", "opts", "parsedUri", "isHttps", "pxuri", "getProxyUri", "agentTimeout", "agentMaxSockets", "key", "lambdaAgent", "pxopts", "proxy", "getProxy", "agent", "checkNoProxy", "host", "noproxy", "getProcessEnv", "n", "no", "noParts", "x", "i", "env", "value", "e", "protocol", "parsedProxy", "getAuth", "u", "getPath", "HttpProxyAgent", "HttpsProxyAgent", "SocksProxyAgent", "proxyUrl", "popts", "require_package", "__commonJSMin", "exports", "module", "require_remote", "__commonJSMin", "exports", "module", "Minipass", "fetch", "promiseRetry", "ssri", "CachingMinipassPipeline", "getAgent", "pkg", "USER_AGENT", "RETRY_ERRORS", "RETRY_TYPES", "remoteFetch", "__name", "request", "options", "agent", "_opts", "retryHandler", "attemptNum", "req", "res", "integrityStream", "pipeline", "i", "s", "isStream", "err", "code", "isRetryError", "require_entry", "__commonJSMin", "exports", "module", "Request", "Response", "Minipass", "MinipassFlush", "cacache", "url", "CachingMinipassPipeline", "CachePolicy", "cacheKey", "remote", "hasOwnProperty", "__name", "obj", "prop", "KEEP_REQUEST_HEADERS", "KEEP_RESPONSE_HEADERS", "getMetadata", "request", "response", "options", "metadata", "name", "host", "parsedUrl", "vary", "varyHeaders", "_request", "_response", "_policy", "CacheEntry", "_CacheEntry", "entry", "matches", "A", "B", "entryA", "entryB", "match", "_entry", "key", "status", "size", "cacheOpts", "body", "cacheWriteResolve", "cacheWriteReject", "cacheWritePromise", "resolve", "reject", "onResume", "tee", "cacheStream", "i", "s", "method", "headers", "err", "revalidateRequest", "inMeta", "inEntry", "inPolicy", "require_cache", "__commonJSMin", "exports", "module", "NotCachedError", "CacheEntry", "remote", "cacheFetch", "__name", "request", "options", "entry", "response", "_needsRevalidation", "require_fetch", "__commonJSMin", "exports", "module", "FetchError", "Request", "isRedirect", "url", "CachePolicy", "cache", "remote", "canFollowRedirect", "__name", "request", "response", "options", "getRedirect", "_opts", "location", "redirectUrl", "value", "key", "fetch", "redirect", "require_lib", "__commonJSMin", "exports", "module", "FetchError", "Headers", "Request", "Response", "configureOptions", "fetch", "makeFetchHappen", "__name", "url", "opts", "options", "request", "defaultUrl", "defaultOptions", "wrappedFetch", "defaultedFetch", "finalUrl", "finalOptions", "defaultUrl1", "defaultOptions1", "predicates_1", "types_1", "utils_createhash_1", "parseCacheControlHeader_1", "make_fetch_happen_1", "__importDefault", "node_fetch_1", "graphql_1", "RemoteGraphQLDataSource", "__name", "config", "options", "request", "originalContext", "pathInIncomingRequest", "context", "headers", "_a", "name", "value", "query", "requestWithoutQuery", "overallCachePolicy", "apqHash", "apqOptimisticResponse", "error", "requestWithQuery", "response", "http", "requestWithoutHttp", "stringifiedRequestWithoutHttp", "requestInit", "fetchRequest", "fetchResponse", "body", "processedResponse", "parsed", "hint", "maxAge", "_fetchRequest", "_fetchResponse", "_context", "_request", "contentType", "extensions", "exports", "graphql_1", "HintLevel", "exports", "makeCodeDefinition", "code", "level", "description", "__name", "INCONSISTENT_BUT_COMPATIBLE_FIELD_TYPE", "INCONSISTENT_BUT_COMPATIBLE_ARGUMENT_TYPE", "INCONSISTENT_DEFAULT_VALUE_PRESENCE", "INCONSISTENT_ENTITY", "INCONSISTENT_OBJECT_VALUE_TYPE_FIELD", "INCONSISTENT_INTERFACE_VALUE_TYPE_FIELD", "INCONSISTENT_INPUT_OBJECT_FIELD", "INCONSISTENT_UNION_MEMBER", "INCONSISTENT_ENUM_VALUE_FOR_INPUT_ENUM", "INCONSISTENT_ENUM_VALUE_FOR_OUTPUT_ENUM", "INCONSISTENT_TYPE_SYSTEM_DIRECTIVE_REPEATABLE", "INCONSISTENT_TYPE_SYSTEM_DIRECTIVE_LOCATIONS", "INCONSISTENT_EXECUTABLE_DIRECTIVE_PRESENCE", "NO_EXECUTABLE_DIRECTIVE_LOCATIONS_INTERSECTION", "INCONSISTENT_EXECUTABLE_DIRECTIVE_REPEATABLE", "INCONSISTENT_EXECUTABLE_DIRECTIVE_LOCATIONS", "INCONSISTENT_DESCRIPTION", "INCONSISTENT_ARGUMENT_PRESENCE", "FROM_SUBGRAPH_DOES_NOT_EXIST", "OVERRIDDEN_FIELD_CAN_BE_REMOVED", "OVERRIDE_DIRECTIVE_CAN_BE_REMOVED", "OVERRIDE_MIGRATION_IN_PROGRESS", "UNUSED_ENUM_TYPE", "INCONSISTENT_NON_REPEATABLE_DIRECTIVE_ARGUMENTS", "MERGED_NON_REPEATABLE_DIRECTIVE_ARGUMENTS", "DIRECTIVE_COMPOSITION_INFO", "DIRECTIVE_COMPOSITION_WARN", "INCONSISTENT_RUNTIME_TYPES_FOR_SHAREABLE_RETURN", "IMPLICITLY_UPGRADED_FEDERATION_VERSION", "CONTEXTUAL_ARGUMENT_NOT_CONTEXTUAL_IN_ALL_SUBGRAPHS", "CompositionHint", "definition", "message", "element", "nodes", "printHint", "hint", "output", "node", "federation_internals_1", "hints_1", "MismatchReporter", "__name", "names", "pushError", "pushHint", "code", "message", "mismatchedElement", "subgraphElements", "mismatchAccessor", "elt", "distribution", "nodes", "supergraphElementPrinter", "otherElementsPrinter", "ignorePredicate", "includeMissingSources", "extraNodes", "supergraphElement", "targetedElement", "elementToString", "noEndOfMessageDot", "astNodes", "reporter", "distributionMap", "processSubgraphElt", "name", "subgraphElt", "i", "supergraphMismatch", "_a", "subgraphsLikeSupergraph", "v", "exports", "federation_internals_1", "hints_1", "reporter_1", "merging_1", "directiveHasDifferentNameInSubgraph", "__name", "subgraph", "origName", "expectedName", "identity", "imp", "_c", "_b", "_a", "_d", "allEqual", "arr", "val", "DISALLOWED_IDENTITIES", "ComposeDirectiveManager", "subgraphs", "pushError", "pushHint", "coreIdentity", "sg", "ast", "subgraphsUsed", "raisedHint", "latest", "feature", "acc", "pair", "composeInstance", "directive", "d", "identities", "errors", "hints", "wontMergeFeatures", "wontMergeDirectiveNames", "itemsBySubgraph", "itemsByDirectiveName", "itemsByOrigDirectiveName", "tagNamesInSubgraphs", "inaccessibleNamesInSubgraphs", "composeDirectives", "name", "featureDetails", "idx", "item", "words", "items", "sourceAST", "elt", "subgraphsWithDifferentNaming", "directivesForSubgraph", "subgraphName", "directiveName", "entry", "nameInSchema", "directives", "id", "value", "exports", "federation_internals_1", "collectCoreDirectivesToCompose", "subgraphs", "directivesPerFeatureAndVersion", "subgraph", "features", "directive", "source", "url", "fqn", "forFeature", "major", "forVersion", "perVersion", "d", "featureDefinition", "compositionSpec", "__name", "exports", "federation_internals_1", "graphql_1", "hints_1", "composeDirectiveManager_1", "reporter_1", "util_1", "coreDirectiveCollector_1", "mapSources", "sources", "mapper", "result", "source", "idx", "__name", "filterSources", "someSources", "predicate", "sourcesFromArray", "array", "exports", "FieldMergeContext", "_", "_a", "label", "i", "props", "isMergeSuccessful", "mergeResult", "isMergeFailure", "mergeSubgraphs", "subgraphs", "options", "s", "Merger", "copyTypeReference", "dest", "type", "NON_MERGED_CORE_FEATURES", "isMergedType", "coreFeatures", "typeFeature", "isMergedField", "field", "isGraphQLBuiltInDirective", "def", "printTypes", "types", "t", "filteredRoot", "rootKind", "hasMergedFields", "indexOfMax", "arr", "descriptionString", "toIndent", "indentation", "locationString", "locations", "error", "hint", "subgraph", "versions", "linkedFederationVersion", "_b", "versionsFromFeatures", "feature", "_d", "_c", "version", "impliedFederationVersion", "featureCausingUpgrade", "_f", "_e", "errors", "directivesMergeInfo", "supergraphInfoByIdentity", "url", "name", "definitionsPerSubgraph", "compositionSpec", "nameInSupergraph", "directive", "specInSupergraph", "supergraphInfo", "directives", "imports", "nameInFeature", "defaultNameInSupergraph", "argumentsMerger", "authenticatedDirective", "requiresScopesDirective", "policyDirective", "subgraphIndex", "subgraphName", "definition", "objectTypes", "interfaceTypes", "unionTypes", "enumTypes", "scalarTypes", "inputObjectTypes", "objectType", "interfaceType", "unionType", "enumType", "e", "causes", "mismatchedTypes", "typesWithInterfaceObject", "metadata", "expectedKind", "previous", "itfObjectType", "subgraphsWithType", "features", "asName", "origName", "mismatchedType", "supergraphType", "typeKindToString", "implemented", "joinImplementsDirective", "itf", "descriptions", "counts", "nonEmptyDescriptions", "desc", "elt", "defSubgraphs", "extensionSubgraphs", "extensionASTs", "joinTypeDirective", "sourceMetadata", "isInterfaceObject", "keys", "key", "extension", "resolvable", "isValueType", "isSubscription", "added", "subgraphFields", "destField", "mergeContext", "sourceAsEntity", "sourceAsNonEntity", "keyDirective", "entity", "hintId", "typeDescription", "index", "implementedItf", "itfField", "implemField", "itfArg", "implemArg", "additionalSources", "d", "fieldName", "interfaceName", "meta", "fieldsToAdd", "fieldSet", "sourceIndex", "set", "extraSources", "schema", "fields", "itfType", "sourceIdx", "f", "filtered", "overrideDirective", "fromIdx", "fromField", "fromMetadata", "mapped", "interfaceObjectAbstractingFields", "subgraphsWithOverride", "subgraphMap", "acc", "elem", "isInterfaceField", "overridingSubgraphASTNode", "sourceSubgraphName", "abstractingTypes", "hasIncompatible", "conflictingDirective", "overriddenSubgraphASTNode", "overrideLabel", "overriddenFieldIsReferenced", "labelRegex", "percentRegex", "parts", "percent", "message", "suggestions", "extraMsg", "parentInSupergraph", "typeInSchema", "everySourceIsExternal", "nodes", "definingSubgraphs", "itfObjectFields", "withoutExternal", "destArg", "subgraphArgs", "allTypesEqual", "shareableSources", "nonShareableSources", "allResolving", "categorizeField", "printSubgraphs", "l", "resolvingSubgraphs", "nonShareables", "subgraphWithTargetlessOverride", "extraHint", "hasInvalidTypes", "invalidArgsPresence", "invalidArgsTypes", "invalidArgsDefaults", "arg", "argSources", "parentName", "usedOverridden", "coordinate", "overridden", "sourceMeta", "joinFieldDirective", "unusedOverridden", "fromContextDirective", "contextArguments", "appliedDirectives", "context", "selection", "external", "element", "applications", "isInputPosition", "destType", "hasSubtypes", "sourceType", "isArgument", "elementKind", "base", "existing", "thisPosition", "position", "examples", "example", "maybeSubType", "union", "maybeMember", "maybeImplementer", "argNames", "argName", "isContextualArg", "isContextualMap", "sawContextualArgs", "isContextual", "argument", "argType", "nonOptionalSources", "nonOptionalSubgraphs", "missingSources", "kind", "destDefault", "hasSeenSource", "isInconsistent", "isIncompatible", "sourceDefault", "hasKey", "supergraphImplementations", "resolvableKey", "k", "implementationsInSubgraph", "missingImplementations", "superImpl", "subgImpl", "definedImplementations", "member", "joinUnionMemberDirective", "memberName", "usage", "value", "valueSources", "inputExample", "outputExample", "joinEnumValueDirective", "valueName", "inputSources", "repeatable", "inconsistentRepeatable", "inconsistentLocations", "usages", "sourceLocations", "loc", "locs", "inaccessibleName", "names", "sourceMap", "intfToImplMap", "implToIntfMap", "intf", "implNames", "obj", "impl", "interfaces", "accessControlDirectives", "application", "candidate", "implementedInterfaces", "parent", "objectName", "implementations", "otherInterfaces", "perSource", "directiveInSupergraph", "transformedArgs", "ds", "differentApplications", "info", "mergedArguments", "applicationsArguments", "a", "argDef", "values", "args", "application1", "application2", "rootType", "joinsByDirectiveName", "linksToPersist", "graph", "coreFeaturesInSource", "sourceFeature", "shouldIncludeAsJoinDirective", "directiveNameForJoinDirective", "parsedUrl", "featureDefinition", "existingJoins", "found", "existingJoin", "linkDirective", "latestOrHighestLinkByIdentity", "map", "link", "latest", "joinDirective", "directiveName", "join", "subgraphsWithTheField", "subgraphsWithTypeImplementingItf", "typeInSubgraph", "requiresApplication", "originalField", "mergedType", "requireAST", "that", "registerError", "makeMsg", "incompatibleSubgraphs", "otherSubgraph", "fieldInOther", "unknownArgument", "missingMandatory", "authValidator", "AuthValidator", "isRelevantSubgraphReferencer", "subgraphReferencer", "err", "supergraphElements", "hasInaccessibleElements", "subgraphType", "elements", "errorNodes", "subgraphHasInaccessibleElements", "subgraphSchema", "subgraphElement", "inaccessibleDirective", "referencers", "fieldsWithShareable", "getDirective", "getField", "joinSpec", "subgraphNamesToJoinSpecName", "entry", "authenticatedFeature", "authenticatedSpec", "requiresScopesFeature", "requiresScopesSpec", "policyFeature", "policySpec", "contextFeature", "contextSpec", "contextDirective", "contextApplications", "contextName", "contextType", "fieldCoordinate", "typeRequirements", "fieldRequirements", "authRequirementOnRequires", "AuthRequirements", "joinDirectivesOnRequires", "joinDirectiveOnRequires", "requiresFieldSet", "requiresSelectionSet", "enumSubgraphValue", "authRequirementOnContext", "joinDirectivesOnFromContext", "joinDirectiveOnFromContext", "contexts", "contextSelection", "targetTypeNames", "targetTypeName", "targetType", "requirementsOnContextType", "msg", "contextSelectionSet", "requirements", "AuthRequirementsOnElement", "appliedDirective", "scopes", "policies", "authRequirements", "selectionSet", "condition", "requirementsOnCondition", "fieldAuthReqs", "returnType", "fieldReturnAuthReqs", "scopesToMerge", "policiesToMerge", "authOnElement", "other", "authenticatedSatisfied", "scopesSatisfied", "policiesSatisfied", "first", "second", "firstNormalized", "secondNormalized", "firstInner", "secondInner", "firstSet", "secondSet", "__exportStar", "exports", "federation_internals_1", "query_graphs_1", "hints_1", "graphql_1", "debug", "ValidationError", "__name", "message", "supergraphUnsatisfiablePath", "subgraphsPaths", "witness", "exports", "satisfiabilityError", "unsatisfiablePath", "subgraphsPathsUnadvanceables", "buildWitnessOperation", "displayReasons", "error", "subgraphNodes", "state", "extractNode", "name", "schema", "node", "shareableFieldNonIntersectingRuntimeTypesError", "invalidState", "field", "runtimeTypesToSubgraphs", "operation", "typeStrings", "ts", "subgraphs", "p", "s", "_a", "_b", "shareableFieldMismatchedRuntimeTypesHint", "commonRuntimeTypes", "runtimeTypesPerSubgraphs", "allSubgraphs", "printTypes", "t", "subgraphsWithTypeNotInIntersectionString", "typesToNotImplement", "reasons", "bySubgraph", "reason", "unadvanceable", "subgraph", "msg", "allDetails", "r", "details", "root", "buildWitnessNextStep", "e", "edges", "index", "lastType", "edge", "selection", "subSelection", "type", "buildWitnessField", "definition", "args", "argDef", "generateWitnessValue", "obj", "validateGraphComposition", "supergraphSchema", "subgraphNameToGraphEnumValue", "supergraphAPI", "federatedQueryGraph", "compositionOptions", "errors", "hints", "ValidationTraversal", "initialSubgraphPaths", "kind", "initialState", "possibleRuntimeTypeNamesSorted", "path", "types", "o", "a", "b", "extractValidationError", "ValidationContext", "_", "joinSpec", "contextDirective", "contextFeature", "contextSpec", "application", "context", "typeNames", "typeName", "typeInSupergraph", "fieldInSupergraph", "joinFieldApplications", "SubgraphPathInfos", "paths", "ValidationState", "_ValidationState", "supergraphPath", "subgraphPathInfos", "selectedOverrideConditions", "conditionResolver", "overrideConditions", "previousVisits", "vertex", "canSkip", "supergraphPathTail", "currentVertexVisit", "previousVisitsForVertex", "previousVisit", "isSupersetOrEqual", "supergraphEdge", "matchingContexts", "validationErrors", "satisfiabilityErrorsByMutationFieldAndSubgraph", "transition", "targetType", "newOverrideConditions", "newPath", "updatedState", "newSubgraphPathInfos", "mutationField", "partitionedSubgraphPathInfos", "subgraphPathInfo", "errorsBySubgraph", "allSubgraphPathInfos", "hint", "allRuntimeTypes", "intersection", "hasAllEmpty", "typeNamesStr", "n", "deadEnds", "contexts", "options", "newContexts", "subgraphName", "matchingContext", "d", "lastEdge", "count", "pathInfo", "source", "subgraphContextKeys", "tailSubgraphName", "tailSubgraphEnumValue", "tailTypeName", "entryKeys", "subgraphEnumValue", "sources", "maybeSuperset", "other", "includesAllSubgraphs", "includesAllOverrideConditions", "label", "value", "_ValidationTraversal", "fieldCoordinate", "someSubgraphHasNoErrors", "messageParts", "line", "_c", "newState", "federation_internals_1", "query_graphs_1", "merging_1", "validate_1", "validateCompositionOptions", "options", "_a", "__name", "compose", "subgraphs", "runSatisfiability", "sdlPrintOptions", "maxValidationSubgraphPaths", "mergeResult", "validateSubgraphsAndMerge", "satisfiabilityResult", "validateSatisfiability", "supergraphSdl", "err", "exports", "composeServices", "services", "supergraphSchema", "supergraph", "supergraphQueryGraph", "federatedQueryGraph", "upgradeResult", "toMerge", "validationErrors", "__exportStar", "exports", "composition_1", "LocalCompose", "__name", "options", "_a", "getDataSource", "supergraphSdl", "e", "serviceList", "name", "url", "compositionResult", "errors", "service", "_b", "_c", "exports", "resolvablePromise", "__name", "resolve", "reject", "promise", "_resolve", "_reject", "exports", "module", "resolvable_1", "__importDefault", "config_1", "composition_1", "LegacyFetcher", "__name", "options", "_a", "_b", "update", "healthCheck", "getDataSource", "initialSupergraphSdl", "e", "result", "supergraphSdl", "serviceList", "name", "url", "compositionResult", "errors", "service", "_c", "pollingPromise", "maybeNewSupergraphSdl", "exports", "graphql_1", "node_fetch_1", "types_1", "__1", "loadServicesFromRemoteEndpoint", "serviceList", "getServiceIntrospectionHeaders", "serviceSdlCache", "isNewSchema", "promiseOfServiceList", "name", "url", "dataSource", "request", "data", "errors", "typeDefs", "e", "err", "errorMessage", "__name", "exports", "resolvable_1", "__importDefault", "loadServicesFromRemoteEndpoint_1", "composition_1", "IntrospectAndCompose", "__name", "options", "update", "getDataSource", "healthCheck", "subgraph", "initialSupergraphSdl", "e", "result", "service", "supergraphSdl", "_a", "subgraphs", "compositionResult", "errors", "pollingPromise", "maybeNewSupergraphSdl", "_b", "exports", "loglevel_1", "__importDefault", "getDefaultLogger", "debug", "logger", "level", "__name", "exports", "async_retry_1", "__importDefault", "node_abort_controller_1", "exports", "name", "version", "fetchErrorMsg", "UplinkFetcherError", "__name", "message", "loadSupergraphSdlFromUplinks", "graphRef", "apiKey", "endpoints", "fetcher", "compositionId", "maxRetries", "requestTimeoutMs", "roundRobinSeed", "logger", "loadSupergraphSdlFromStorage", "e", "attempt", "endpoint", "requestBody", "controller", "signal", "requestDetails", "result", "_a", "response", "_b", "error", "routerConfig", "id", "supergraphSdl", "minDelaySeconds", "code", "makeFetchHappen", "__importStar", "resolvable_1", "__importDefault", "logger_1", "loadSupergraphSdlFromStorage_1", "UplinkSupergraphManager", "_UplinkSupergraphManager", "__name", "apiKey", "graphRef", "debug", "logger", "uplinkEndpoints", "fallbackPollIntervalInMs", "maxRetries", "initialMaxRetries", "fetcher", "shouldRunSubgraphHealthcheck", "onFailureToFetchSupergraphSdlDuringInit", "onFailureToFetchSupergraphSdlAfterInit", "update", "healthCheck", "initialSupergraphSdl", "e", "envEndpoints", "_a", "supergraphSdl", "result", "_b", "pollingPromise", "exports", "LocalCompose_1", "exports", "__name", "LegacyFetcher_1", "IntrospectAndCompose_1", "__exportStar", "loadSupergraphSdlFromStorage_1", "supergraphManagers_1", "isSupergraphSdlUpdate", "update", "__name", "exports", "isServiceDefinitionUpdate", "isManuallyManagedSupergraphSdlGatewayConfig", "config", "isSupergraphSdlHookConfig", "isSupergraphManagerConfig", "isLocalConfig", "isServiceListConfig", "isStaticSupergraphSdlConfig", "isManuallyManagedConfig", "isManagedConfig", "isStaticConfig", "version", "addExtensions", "schema", "schemaExtension", "_a", "apolloExtension", "_b", "gatewayExtension", "_c", "__name", "exports", "graphql_1", "LocalGraphQLDataSource", "__name", "schema", "request", "context", "result", "error", "sdl", "exports", "LocalGraphQLDataSource_1", "exports", "__name", "RemoteGraphQLDataSource_1", "util_1", "utils_createhash_1", "utils_keyvaluecache_1", "operationContext_1", "exports", "__name", "executeQueryPlan_1", "types_1", "RemoteGraphQLDataSource_1", "values_1", "query_planner_1", "config_1", "api_1", "opentelemetry_1", "addExtensions_1", "supergraphManagers_1", "federation_internals_1", "logger_1", "ApolloGateway", "config", "requestContext", "span", "request", "document", "queryHash", "queryPlanStoreKey", "operationContext", "validationErrors", "queryPlan", "operation", "err", "serviceMap", "serviceDataSources", "serviceName", "dataSource", "response", "shouldShowQueryPlan", "serializedQueryPlan", "queryPlanFormat", "_a", "_b", "_c", "approximateQueryPlanStoreMiB", "defaultSize", "approximateObjectSize", "options", "key", "keyHash", "graphRef", "graphId", "graphVariant", "apiKeyHash", "supergraphSdl", "supergraphManager", "updateServiceDefinitions", "schemaDeliveryEndpoints", "mode", "result", "e", "UnreachableCaseError", "serviceDef", "name", "url", "supergraph", "previousSchema", "previousSupergraphSdl", "previousCompositionId", "legacyDontNotifyOnSchemaChangeListeners", "listener", "validateSupergraph", "callback", "services", "canUseManagedConfig", "variableDefinitions", "errors", "p", "stoppingDonePromise", "obj", "val", "__exportStar", "supergraphManagers_2", "require_resolverMap", "__commonJSMin", "exports", "GraphQLSchemaValidationError", "__name", "errors", "error", "exports", "graphql_1", "validation_1", "validate_1", "specifiedRules_1", "error_1", "isNotNullOrUndefined", "value", "__name", "isNode", "maybeNode", "exports", "isDocumentNode", "node", "mapValues", "object", "callback", "result", "key", "skippedSDLRules", "sdlRules", "rule", "extKindToDefKind", "modulesFromSDL", "modulesOrSDL", "moduleOrSDL", "addResolversToSchema", "schema", "resolvers", "typeName", "fieldConfigs", "type", "existingExtensions", "fieldName", "fieldConfig", "_a", "fn", "fnValue", "values", "newValues", "newValue", "fieldMap", "_b", "field", "buildSchemaFromSDL", "schemaToExtend", "modules", "documentAST", "module", "errors", "definitionsMap", "extensionsMap", "directiveDefinitions", "schemaDefinitions", "schemaExtensions", "schemaDirectives", "description", "definition", "missingTypeDefinitions", "extendedTypeName", "extensions", "extension", "kind", "operationTypeMap", "operationTypes", "operation", "graphql_1", "mapValues", "object", "callback", "result", "key", "value", "__name", "transformSchema", "schema", "transformType", "typeMap", "oldType", "newType", "recreateNamedType", "schemaConfig", "replaceMaybeType", "replaceDirectives", "type", "config", "replaceNamedType", "replaceFields", "replaceInputFields", "replaceType", "fieldsMap", "field", "replaceArgs", "args", "arg", "directives", "directive", "exports", "__exportStar", "exports", "maybeCacheControlFromInfo", "info", "__name", "exports", "cacheControlFromInfo", "graphql_1", "cache_control_types_1", "util_1", "exports", "value", "isPromise", "__name", "maybeAddTypeNameToPossibleReturn", "maybeObject", "typename", "objectOrNull", "ensureValidRuntimeType", "runtimeTypeName", "schema", "returnType", "result", "runtimeType", "withResolvedType", "type", "context", "info", "callback", "resolvedValue", "_a", "name", "definedResolveReference", "_b", "entitiesResolver", "representations", "reference", "__typename", "cacheControl", "cacheHint", "resolveReference", "finalResult", "runtimeResolveReference", "r", "_source", "isFederationType", "util_1", "graphql_1", "schema_helper_1", "federation_internals_1", "types_1", "buildSubgraphSchema", "modulesOrSDL", "shapedModulesOrSDL", "typeDefs", "resolvers", "i", "module", "modules", "documentAST", "subgraph", "sdl", "schema", "queryRootName", "_a", "__name", "_source", "representations", "context", "info", "parent", "exports", "graphql_1", "federation_internals_1", "printSubgraphSchema", "schema", "ast", "__name", "exports", "printIntrospectionSchema", "subgraph", "printType", "type", "definition", "extensions", "n", "printBlockString", "value", "preferMultipleLines", "isSingleLine", "hasLeadingSpace", "hasTrailingQuote", "hasTrailingSlash", "printAsMultipleLines", "result", "buildSubgraphSchema_1", "exports", "__name", "printSubgraphSchema_1", "require_koa_mount", "__commonJSMin", "exports", "module", "debug", "compose", "assert", "mount", "prefix", "app", "downstream", "trailingSlash", "name", "ctx", "upstream", "prev", "newPath", "match", "path", "__name", "require_varint", "__commonJSMin", "exports", "varint64read", "varint64write", "int64FromString", "int64ToString", "uInt64ToString", "varint32write", "varint32read", "lowBits", "highBits", "shift", "b", "middleByte", "__name", "lo", "hi", "bytes", "i", "hasNext", "byte", "splitBits", "hasMoreBits", "TWO_PWR_32_DBL", "dec", "minus", "base", "add1e6digit", "begin", "end", "digit1e6", "negate", "newBits", "bits", "negative", "result", "toUnsigned", "low", "mid", "high", "digitA", "digitB", "digitC", "decimalFrom1e7WithLeadingZeros", "digit1e7", "partial", "value", "readBytes", "require_proto_int64", "__commonJSMin", "exports", "varint_js_1", "makeInt64Support", "dv", "MIN", "MAX", "UMIN", "UMAX", "value", "bi", "lo", "hi", "assertInt64String", "assertUInt64String", "__name", "require_text_encoding", "__commonJSMin", "exports", "configureTextEncoding", "getTextEncoding", "symbol", "textEncoding", "__name", "te", "td", "text", "bytes", "require_binary_encoding", "__commonJSMin", "exports", "varint_js_1", "proto_int64_js_1", "text_encoding_js_1", "WireType", "BinaryWriter", "__name", "encodeUtf8", "len", "i", "bytes", "offset", "chunk", "prev", "fieldNo", "type", "value", "assertUInt32", "assertInt32", "assertFloat32", "view", "tc", "sign", "lo", "hi", "BinaryReader", "buf", "decodeUtf8", "tag", "wireType", "start", "fn", "wt", "zze", "s", "arg", "o", "require_base64_encoding", "__commonJSMin", "exports", "base64Decode", "base64Encode", "base64Str", "table", "getDecodeTable", "es", "bytes", "bytePos", "groupPos", "b", "p", "i", "__name", "encoding", "getEncodeTable", "pad", "base64", "encodeTableStd", "encodeTableUrl", "decodeTable", "encodeTable", "require_descriptors", "__commonJSMin", "exports", "ScalarType", "require_text_format", "__commonJSMin", "exports", "parseTextFormatEnumValue", "parseTextFormatScalarValue", "descriptors_js_1", "proto_int64_js_1", "descEnum", "value", "enumValue", "v", "__name", "type", "u", "unescapeBytesDefaultValue", "str", "b", "input", "n", "s", "t", "chunk", "tc", "view", "require_is_message", "__commonJSMin", "exports", "isMessage", "arg", "schema", "__name", "require_error", "__commonJSMin", "exports", "isFieldError", "errorNames", "FieldError", "__name", "fieldOrOneof", "message", "name", "arg", "require_scalar", "__commonJSMin", "exports", "scalarEquals", "scalarZeroValue", "isScalarZeroValue", "proto_int64_js_1", "descriptors_js_1", "type", "a", "b", "__name", "longAsString", "value", "require_unsafe", "__commonJSMin", "exports", "unsafeOneofCase", "unsafeIsSet", "unsafeIsSetExplicit", "unsafeGet", "unsafeSet", "unsafeClear", "scalar_js_1", "IMPLICIT", "target", "oneof", "c", "f", "__name", "field", "name", "localName", "value", "oneofLocalName", "require_guard", "__commonJSMin", "exports", "isObject", "isOneofADT", "isReflectList", "isReflectMap", "isReflectMessage", "unsafe_js_1", "arg", "__name", "field", "_a", "_b", "_c", "_d", "b", "messageDesc", "require_reflect_check", "__commonJSMin", "exports", "checkField", "checkListItem", "checkMapEntry", "formatVal", "descriptors_js_1", "is_message_js_1", "error_js_1", "guard_js_1", "binary_encoding_js_1", "text_encoding_js_1", "proto_int64_js_1", "field", "value", "check", "checkSingular", "reason", "formatReflectList", "formatReflectMap", "reasonSingular", "__name", "index", "key", "checkKey", "checkScalarValue", "checkVal", "v", "scalar", "val", "details", "scalarTypeDescription", "formatReflectMessage", "desc", "require_wrappers", "__commonJSMin", "exports", "isWrapper", "isWrapperDesc", "arg", "isWrapperTypeName", "__name", "messageDesc", "f", "name", "require_create", "__commonJSMin", "exports", "create", "is_message_js_1", "descriptors_js_1", "scalar_js_1", "guard_js_1", "unsafe_js_1", "wrappers_js_1", "EDITION_PROTO3", "EDITION_PROTO2", "IMPLICIT", "schema", "init", "message", "createZeroMessage", "initMessage", "__name", "messageDesc", "member", "value", "field", "oneofField", "toMessage", "initScalar", "initList", "initMap", "toU8Arr", "convertObjectValues", "val", "item", "obj", "fn", "ret", "entry", "tokenZeroMessageField", "messagePrototypes", "desc", "msg", "needsPrototypeChain", "cached", "prototype", "members", "createZeroField", "f", "defaultValue", "require_reflect", "__commonJSMin", "exports", "reflect", "reflectList", "reflectMap", "descriptors_js_1", "reflect_check_js_1", "error_js_1", "unsafe_js_1", "create_js_1", "wrappers_js_1", "scalar_js_1", "proto_int64_js_1", "guard_js_1", "messageDesc", "message", "check", "ReflectMessageImpl", "__name", "messageSortedFields", "cached", "sortedFields", "a", "b", "number", "f", "oneof", "assertOwn", "field", "value", "list", "ReflectListImpl", "map", "ReflectMapImpl", "messageToReflect", "longToReflect", "err", "local", "messageToLocal", "longToLocal", "owner", "member", "unsafeInput", "index", "item", "listItemToReflect", "listItemToLocal", "i", "key", "mapKeyToLocal", "mapValueToLocal", "k", "has", "val", "mapValueToReflect", "objKey", "mapKeyToReflect", "objEntry", "callbackfn", "thisArg", "mapEntry", "wktStructToLocal", "wktStructToReflect", "type", "json", "struct", "v", "wktValueToReflect", "wktValueToLocal", "listValue", "e", "require_to_binary", "__commonJSMin", "exports", "toBinary", "writeField", "reflect_js_1", "binary_encoding_js_1", "descriptors_js_1", "LEGACY_REQUIRED", "writeDefaults", "makeWriteOptions", "options", "__name", "schema", "message", "writeFields", "writer", "opts", "msg", "_a", "f", "no", "wireType", "data", "field", "writeScalar", "writeListField", "writeMessageField", "key", "val", "writeMapEntry", "msgName", "fieldName", "scalarType", "fieldNo", "value", "writeScalarValue", "writeTypeOfScalar", "list", "item", "type", "e", "require_from_binary", "__commonJSMin", "exports", "fromBinary", "mergeFromBinary", "readField", "descriptors_js_1", "scalar_js_1", "reflect_js_1", "binary_encoding_js_1", "varint_js_1", "readDefaults", "makeReadOptions", "options", "__name", "schema", "bytes", "msg", "readMessage", "target", "message", "reader", "delimited", "lengthOrDelimitedFieldNo", "_a", "end", "fieldNo", "wireType", "unknownFields", "field", "data", "readScalar", "val", "v", "readMessageField", "readListField", "readMapEntry", "map", "key", "len", "list", "scalarType", "e", "mergeMessage", "type", "require_size_delimited", "__commonJSMin", "exports", "__asyncValues", "o", "m", "i", "verb", "n", "v", "resolve", "reject", "settle", "d", "__await", "__asyncGenerator", "thisArg", "_arguments", "generator", "g", "q", "awaitReturn", "f", "a", "b", "resume", "step", "e", "r", "fulfill", "value", "sizeDelimitedEncode", "sizeDelimitedDecodeStream", "sizeDelimitedPeek", "to_binary_js_1", "binary_encoding_js_1", "from_binary_js_1", "messageDesc", "message", "options", "writer", "__name", "iterable", "_a", "e_1", "_b", "_c", "append", "buffer", "chunk", "_d", "iterable_1", "iterable_1_1", "size", "e_1_1", "data", "sizeEof", "reader", "require_wire", "__commonJSMin", "exports", "__createBinding", "o", "m", "k", "k2", "desc", "__name", "__exportStar", "p", "wire_1", "exports", "createBaseAny", "__name", "message", "writer", "input", "length", "reader", "end", "tag", "object", "isSet", "bytesFromBase64", "obj", "base64FromBytes", "base", "b64", "arr", "value", "wire_1", "exports", "createBaseTimestamp", "__name", "message", "writer", "input", "length", "reader", "end", "tag", "longToNumber", "object", "isSet", "obj", "base", "int64", "num", "value", "wire_1", "exports", "createBaseAttribute", "__name", "message", "writer", "v", "input", "length", "reader", "end", "tag", "el", "object", "isSet", "obj", "e", "base", "value", "wire_1", "timestamp_1", "attribute_1", "exports", "createBaseSubject", "__name", "message", "writer", "input", "length", "reader", "end", "tag", "object", "isSet", "obj", "base", "createBaseTokens", "toTimestamp", "v", "fromTimestamp", "el", "fromJsonTimestamp", "e", "createBaseHierarchicalScope", "createBaseRoleAssociation", "createBaseHierarchicalScopesRequest", "createBaseHierarchicalScopesResponse", "date", "seconds", "nanos", "millis", "o", "value", "wire_1", "exports", "createBaseImage", "__name", "message", "writer", "v", "input", "length", "reader", "end", "tag", "el", "longToNumber", "object", "isSet", "bytesFromBase64", "obj", "base64FromBytes", "base", "e", "createBaseImageList", "createBaseDeleted", "b64", "arr", "int64", "num", "value", "wire_1", "timestamp_1", "attribute_1", "exports", "createBaseMeta", "__name", "message", "writer", "toTimestamp", "v", "input", "length", "reader", "end", "tag", "fromTimestamp", "el", "object", "isSet", "fromJsonTimestamp", "obj", "e", "base", "date", "seconds", "nanos", "millis", "o", "value", "exports", "fieldDescriptorProto_TypeFromJSON", "fieldDescriptorProto_TypeToJSON", "fieldDescriptorProto_TypeToNumber", "fieldDescriptorProto_LabelFromJSON", "fieldDescriptorProto_LabelToJSON", "fieldDescriptorProto_LabelToNumber", "fileOptions_OptimizeModeFromJSON", "fileOptions_OptimizeModeToJSON", "fileOptions_OptimizeModeToNumber", "fieldOptions_CTypeFromJSON", "fieldOptions_CTypeToJSON", "fieldOptions_CTypeToNumber", "fieldOptions_JSTypeFromJSON", "fieldOptions_JSTypeToJSON", "fieldOptions_JSTypeToNumber", "wire_1", "FieldDescriptorProto_Type", "object", "__name", "FieldDescriptorProto_Label", "FileOptions_OptimizeMode", "FieldOptions_CType", "FieldOptions_JSType", "createBaseFileDescriptorSet", "message", "writer", "v", "input", "length", "reader", "end", "tag", "el", "obj", "e", "base", "createBaseFileDescriptorProto", "end2", "isSet", "createBaseDescriptorProto", "createBaseDescriptorProto_ExtensionRange", "createBaseDescriptorProto_ReservedRange", "createBaseFieldDescriptorProto", "createBaseOneofDescriptorProto", "createBaseEnumDescriptorProto", "createBaseEnumValueDescriptorProto", "createBaseServiceDescriptorProto", "createBaseMethodDescriptorProto", "createBaseFileOptions", "createBaseMessageOptions", "createBaseFieldOptions", "createBaseEnumOptions", "createBaseEnumValueOptions", "createBaseServiceOptions", "createBaseMethodOptions", "createBaseUninterpretedOption", "longToNumber", "bytesFromBase64", "base64FromBytes", "createBaseUninterpretedOption_NamePart", "createBaseSourceCodeInfo", "createBaseSourceCodeInfo_Location", "createBaseGeneratedCodeInfo", "createBaseGeneratedCodeInfo_Annotation", "b64", "arr", "int64", "num", "value", "wire_1", "descriptor_1", "exports", "createBaseResolver", "__name", "message", "writer", "input", "length", "reader", "end", "tag", "object", "isSet", "obj", "base", "createBaseKafkaSubscription", "value", "exports", "filter_OperationFromJSON", "filter_OperationToJSON", "filter_OperationToNumber", "filter_ValueTypeFromJSON", "filter_ValueTypeToJSON", "filter_ValueTypeToNumber", "filterOp_OperatorFromJSON", "filterOp_OperatorToJSON", "filterOp_OperatorToNumber", "wire_1", "Filter_Operation", "object", "__name", "Filter_ValueType", "FilterOp_Operator", "createBaseFilter", "message", "writer", "v", "input", "length", "reader", "end", "tag", "el", "isSet", "obj", "e", "base", "createBaseFilterOp", "value", "wire_1", "exports", "createBaseStatus", "__name", "message", "writer", "input", "length", "reader", "end", "tag", "object", "isSet", "obj", "base", "createBaseOperationStatusObj", "createBaseOperationStatus", "createBaseStatusListResponse", "v", "el", "e", "value", "exports", "sort_SortOrderFromJSON", "sort_SortOrderToJSON", "sort_SortOrderToNumber", "filter_OperationFromJSON", "filter_OperationToJSON", "filter_OperationToNumber", "filter_ValueTypeFromJSON", "filter_ValueTypeToJSON", "filter_ValueTypeToNumber", "filterOp_OperatorFromJSON", "filterOp_OperatorToJSON", "filterOp_OperatorToNumber", "wire_1", "any_1", "auth_1", "filter_1", "meta_1", "status_1", "Sort_SortOrder", "object", "__name", "Filter_Operation", "Filter_ValueType", "FilterOp_Operator", "createBaseFieldFilter", "message", "writer", "input", "length", "reader", "end", "tag", "isSet", "obj", "base", "createBaseSort", "createBaseFilter", "v", "el", "e", "createBaseFilterOp", "createBaseSearch", "createBaseReadRequest", "createBaseDeleteRequest", "createBaseDeleteResponse", "createBaseResourceList", "createBaseResourceListResponse", "createBaseResourceResponse", "createBaseResource", "createBaseDeleted", "value", "wire_1", "auth_1", "meta_1", "options_1", "resource_base_1", "status_1", "exports", "createBaseDeleted", "__name", "message", "writer", "input", "length", "reader", "end", "tag", "object", "isSet", "obj", "base", "createBaseLocaleList", "v", "el", "e", "createBaseLocaleListResponse", "createBaseLocaleResponse", "createBaseLocale", "value", "wire_1", "auth_1", "meta_1", "options_1", "resource_base_1", "status_1", "exports", "createBaseRole", "__name", "message", "writer", "v", "input", "length", "reader", "end", "tag", "el", "object", "isSet", "obj", "base", "e", "createBaseRoleList", "createBaseRoleListResponse", "createBaseRoleResponse", "createBaseDeleted", "value", "wire_1", "auth_1", "meta_1", "options_1", "resource_base_1", "status_1", "exports", "createBaseDeleted", "__name", "message", "writer", "input", "length", "reader", "end", "tag", "object", "isSet", "obj", "base", "createBaseTimezoneList", "v", "el", "e", "createBaseTimezoneListResponse", "createBaseTimezoneResponse", "createBaseTimezoneOffset", "createBaseTimezone", "value", "exports", "userTypeFromJSON", "userTypeToJSON", "userTypeToNumber", "wire_1", "any_1", "timestamp_1", "attribute_1", "auth_1", "image_1", "locale_1", "meta_1", "options_1", "resource_base_1", "role_1", "status_1", "timezone_1", "UserType", "object", "__name", "createBaseLoginRequest", "message", "writer", "input", "length", "reader", "end", "tag", "isSet", "obj", "base", "createBaseImpersonateRequest", "createBaseAccessTokenData", "toTimestamp", "fromTimestamp", "fromJsonTimestamp", "createBaseImpersonateResponse", "createBaseEndImpersonationRequest", "createBaseEndImpersonateResponse", "createBaseLoginResponse", "createBaseSetupTOTPRequest", "createBaseSetupTOTPResponse", "createBaseCompleteTOTPSetupRequest", "createBaseExchangeTOTPRequest", "createBaseCreateBackupTOTPCodesRequest", "createBaseCreateBackupTOTPCodesResponse", "v", "el", "e", "createBaseResetTOTPRequest", "createBaseMfaStatusRequest", "createBaseMfaStatusResponse", "createBaseTenantRequest", "createBaseTenantResponse", "createBaseOrgIDRequest", "createBaseDeleteUsersByOrgResponse", "createBaseFindRequest", "createBaseFindByTokenRequest", "createBaseRegisterRequest", "createBaseActivateRequest", "createBaseConfirmUserInvitationRequest", "createBaseSendInvitationEmailRequest", "createBaseChangePasswordRequest", "createBaseRequestPasswordChangeRequest", "createBaseConfirmPasswordChangeRequest", "createBaseChangeEmailRequest", "createBaseConfirmEmailChangeRequest", "createBaseUnregisterRequest", "createBaseSendActivationEmailRequest", "createBaseDeleted", "createBasePasswordChanged", "createBasePasswordChangeRequested", "createBaseEmailChangeRequested", "createBaseEmailChangeConfirmed", "createBaseUserList", "createBaseUserListWithRoleResponse", "createBaseUserRoleResponse", "createBaseUserListResponse", "createBaseUserResponse", "createBaseActivate", "createBaseFindByRoleRequest", "createBaseUser", "createBaseUserRole", "date", "seconds", "nanos", "millis", "o", "value", "wire_1", "timestamp_1", "auth_1", "meta_1", "options_1", "resource_base_1", "status_1", "exports", "createBaseAuthenticationLogList", "__name", "message", "writer", "v", "input", "length", "reader", "end", "tag", "el", "object", "isSet", "obj", "e", "base", "createBaseAuthenticationLogListResponse", "createBaseAuthenticationLogResponse", "createBaseAuthenticationLog", "toTimestamp", "fromTimestamp", "fromJsonTimestamp", "createBaseDeleted", "date", "seconds", "nanos", "millis", "o", "value", "wire_1", "any_1", "timestamp_1", "auth_1", "options_1", "exports", "createBaseTokenData", "__name", "message", "writer", "toTimestamp", "input", "length", "reader", "end", "tag", "fromTimestamp", "object", "isSet", "fromJsonTimestamp", "obj", "base", "createBaseIdentifier", "createBaseGrantId", "date", "seconds", "nanos", "millis", "o", "value", "wire_1", "exports", "createBaseEmpty", "__name", "_", "writer", "input", "length", "reader", "end", "message", "tag", "base", "wire_1", "empty_1", "auth_1", "options_1", "status_1", "user_1", "exports", "createBaseServicesResponse", "__name", "message", "writer", "v", "input", "length", "reader", "end", "tag", "el", "object", "obj", "base", "e", "createBaseGenerateLinksResponse", "key", "value", "entry1", "isObject", "acc", "entries", "k", "createBaseGenerateLinksResponse_LinksEntry", "isSet", "createBaseExchangeCodeRequest", "createBaseExchangeCodeResponse", "createBaseGetTokenRequest", "createBaseGetTokenResponse", "require_lodash", "__commonJSMin", "exports", "module", "undefined", "VERSION", "LARGE_ARRAY_SIZE", "CORE_ERROR_TEXT", "FUNC_ERROR_TEXT", "INVALID_TEMPL_VAR_ERROR_TEXT", "HASH_UNDEFINED", "MAX_MEMOIZE_SIZE", "PLACEHOLDER", "CLONE_DEEP_FLAG", "CLONE_FLAT_FLAG", "CLONE_SYMBOLS_FLAG", "COMPARE_PARTIAL_FLAG", "COMPARE_UNORDERED_FLAG", "WRAP_BIND_FLAG", "WRAP_BIND_KEY_FLAG", "WRAP_CURRY_BOUND_FLAG", "WRAP_CURRY_FLAG", "WRAP_CURRY_RIGHT_FLAG", "WRAP_PARTIAL_FLAG", "WRAP_PARTIAL_RIGHT_FLAG", "WRAP_ARY_FLAG", "WRAP_REARG_FLAG", "WRAP_FLIP_FLAG", "DEFAULT_TRUNC_LENGTH", "DEFAULT_TRUNC_OMISSION", "HOT_COUNT", "HOT_SPAN", "LAZY_FILTER_FLAG", "LAZY_MAP_FLAG", "LAZY_WHILE_FLAG", "INFINITY", "MAX_SAFE_INTEGER", "MAX_INTEGER", "NAN", "MAX_ARRAY_LENGTH", "MAX_ARRAY_INDEX", "HALF_MAX_ARRAY_LENGTH", "wrapFlags", "argsTag", "arrayTag", "asyncTag", "boolTag", "dateTag", "domExcTag", "errorTag", "funcTag", "genTag", "mapTag", "numberTag", "nullTag", "objectTag", "promiseTag", "proxyTag", "regexpTag", "setTag", "stringTag", "symbolTag", "undefinedTag", "weakMapTag", "weakSetTag", "arrayBufferTag", "dataViewTag", "float32Tag", "float64Tag", "int8Tag", "int16Tag", "int32Tag", "uint8Tag", "uint8ClampedTag", "uint16Tag", "uint32Tag", "reEmptyStringLeading", "reEmptyStringMiddle", "reEmptyStringTrailing", "reEscapedHtml", "reUnescapedHtml", "reHasEscapedHtml", "reHasUnescapedHtml", "reEscape", "reEvaluate", "reInterpolate", "reIsDeepProp", "reIsPlainProp", "rePropName", "reRegExpChar", "reHasRegExpChar", "reTrimStart", "reWhitespace", "reWrapComment", "reWrapDetails", "reSplitDetails", "reAsciiWord", "reForbiddenIdentifierChars", "reEscapeChar", "reEsTemplate", "reFlags", "reIsBadHex", "reIsBinary", "reIsHostCtor", "reIsOctal", "reIsUint", "reLatin", "reNoMatch", "reUnescapedString", "rsAstralRange", "rsComboMarksRange", "reComboHalfMarksRange", "rsComboSymbolsRange", "rsComboRange", "rsDingbatRange", "rsLowerRange", "rsMathOpRange", "rsNonCharRange", "rsPunctuationRange", "rsSpaceRange", "rsUpperRange", "rsVarRange", "rsBreakRange", "rsApos", "rsAstral", "rsBreak", "rsCombo", "rsDigits", "rsDingbat", "rsLower", "rsMisc", "rsFitz", "rsModifier", "rsNonAstral", "rsRegional", "rsSurrPair", "rsUpper", "rsZWJ", "rsMiscLower", "rsMiscUpper", "rsOptContrLower", "rsOptContrUpper", "reOptMod", "rsOptVar", "rsOptJoin", "rsOrdLower", "rsOrdUpper", "rsSeq", "rsEmoji", "rsSymbol", "reApos", "reComboMark", "reUnicode", "reUnicodeWord", "reHasUnicode", "reHasUnicodeWord", "contextProps", "templateCounter", "typedArrayTags", "cloneableTags", "deburredLetters", "htmlEscapes", "htmlUnescapes", "stringEscapes", "freeParseFloat", "freeParseInt", "freeGlobal", "freeSelf", "root", "freeExports", "freeModule", "moduleExports", "freeProcess", "nodeUtil", "types", "nodeIsArrayBuffer", "nodeIsDate", "nodeIsMap", "nodeIsRegExp", "nodeIsSet", "nodeIsTypedArray", "apply", "func", "thisArg", "args", "__name", "arrayAggregator", "array", "setter", "iteratee", "accumulator", "index", "length", "value", "arrayEach", "arrayEachRight", "arrayEvery", "predicate", "arrayFilter", "resIndex", "result", "arrayIncludes", "baseIndexOf", "arrayIncludesWith", "comparator", "arrayMap", "arrayPush", "values", "offset", "arrayReduce", "initAccum", "arrayReduceRight", "arraySome", "asciiSize", "baseProperty", "asciiToArray", "string", "asciiWords", "baseFindKey", "collection", "eachFunc", "key", "baseFindIndex", "fromIndex", "fromRight", "strictIndexOf", "baseIsNaN", "baseIndexOfWith", "baseMean", "baseSum", "object", "basePropertyOf", "baseReduce", "baseSortBy", "comparer", "current", "baseTimes", "n", "baseToPairs", "props", "baseTrim", "trimmedEndIndex", "baseUnary", "baseValues", "cacheHas", "cache", "charsStartIndex", "strSymbols", "chrSymbols", "charsEndIndex", "countHolders", "placeholder", "deburrLetter", "escapeHtmlChar", "escapeStringChar", "chr", "getValue", "hasUnicode", "hasUnicodeWord", "iteratorToArray", "iterator", "data", "mapToArray", "map", "overArg", "transform", "arg", "replaceHolders", "setToArray", "set", "setToPairs", "strictLastIndexOf", "stringSize", "unicodeSize", "stringToArray", "unicodeToArray", "unescapeHtmlChar", "unicodeWords", "runInContext", "context", "_", "Array", "Date", "Error", "Function", "Math", "Object", "RegExp", "String", "TypeError", "arrayProto", "funcProto", "objectProto", "coreJsData", "funcToString", "hasOwnProperty", "idCounter", "maskSrcKey", "uid", "nativeObjectToString", "objectCtorString", "oldDash", "reIsNative", "Buffer", "Symbol", "Uint8Array", "allocUnsafe", "getPrototype", "objectCreate", "propertyIsEnumerable", "splice", "spreadableSymbol", "symIterator", "symToStringTag", "defineProperty", "getNative", "ctxClearTimeout", "ctxNow", "ctxSetTimeout", "nativeCeil", "nativeFloor", "nativeGetSymbols", "nativeIsBuffer", "nativeIsFinite", "nativeJoin", "nativeKeys", "nativeMax", "nativeMin", "nativeNow", "nativeParseInt", "nativeRandom", "nativeReverse", "DataView", "Map", "Promise", "Set", "WeakMap", "nativeCreate", "metaMap", "realNames", "dataViewCtorString", "toSource", "mapCtorString", "promiseCtorString", "setCtorString", "weakMapCtorString", "symbolProto", "symbolValueOf", "symbolToString", "lodash", "isObjectLike", "isArray", "LazyWrapper", "LodashWrapper", "wrapperClone", "baseCreate", "proto", "isObject", "baseLodash", "chainAll", "lazyClone", "copyArray", "lazyReverse", "lazyValue", "dir", "isArr", "isRight", "arrLength", "view", "getView", "start", "end", "iteratees", "iterLength", "takeCount", "baseWrapperValue", "outer", "iterIndex", "type", "computed", "Hash", "entries", "entry", "hashClear", "hashDelete", "hashGet", "hashHas", "hashSet", "ListCache", "listCacheClear", "listCacheDelete", "assocIndexOf", "lastIndex", "listCacheGet", "listCacheHas", "listCacheSet", "MapCache", "mapCacheClear", "mapCacheDelete", "getMapData", "mapCacheGet", "mapCacheHas", "mapCacheSet", "size", "SetCache", "setCacheAdd", "setCacheHas", "Stack", "stackClear", "stackDelete", "stackGet", "stackHas", "stackSet", "pairs", "arrayLikeKeys", "inherited", "isArg", "isArguments", "isBuff", "isBuffer", "isType", "isTypedArray", "skipIndexes", "isIndex", "arraySample", "baseRandom", "arraySampleSize", "shuffleSelf", "baseClamp", "arrayShuffle", "assignMergeValue", "eq", "baseAssignValue", "assignValue", "objValue", "baseAggregator", "baseEach", "baseAssign", "source", "copyObject", "keys", "baseAssignIn", "keysIn", "baseAt", "paths", "skip", "get", "number", "lower", "upper", "baseClone", "bitmask", "customizer", "stack", "isDeep", "isFlat", "isFull", "initCloneArray", "tag", "getTag", "isFunc", "cloneBuffer", "initCloneObject", "copySymbolsIn", "copySymbols", "initCloneByTag", "stacked", "isSet", "subValue", "isMap", "keysFunc", "getAllKeysIn", "getAllKeys", "baseConforms", "baseConformsTo", "baseDelay", "wait", "setTimeout", "baseDifference", "includes", "isCommon", "valuesLength", "valuesIndex", "createBaseEach", "baseForOwn", "baseEachRight", "baseForOwnRight", "baseEvery", "baseExtremum", "isSymbol", "baseFill", "toInteger", "toLength", "baseFilter", "baseFlatten", "depth", "isStrict", "isFlattenable", "baseFor", "createBaseFor", "baseForRight", "baseFunctions", "isFunction", "baseGet", "path", "castPath", "toKey", "baseGetAllKeys", "symbolsFunc", "baseGetTag", "getRawTag", "objectToString", "baseGt", "other", "baseHas", "baseHasIn", "baseInRange", "baseIntersection", "arrays", "othLength", "othIndex", "caches", "maxLength", "seen", "baseInverter", "baseInvoke", "parent", "last", "baseIsArguments", "baseIsArrayBuffer", "baseIsDate", "baseIsEqual", "baseIsEqualDeep", "equalFunc", "objIsArr", "othIsArr", "objTag", "othTag", "objIsObj", "othIsObj", "isSameTag", "equalArrays", "equalByTag", "objIsWrapped", "othIsWrapped", "objUnwrapped", "othUnwrapped", "equalObjects", "baseIsMap", "baseIsMatch", "matchData", "noCustomizer", "srcValue", "baseIsNative", "isMasked", "pattern", "baseIsRegExp", "baseIsSet", "baseIsTypedArray", "isLength", "baseIteratee", "identity", "baseMatchesProperty", "baseMatches", "property", "baseKeys", "isPrototype", "baseKeysIn", "nativeKeysIn", "isProto", "baseLt", "baseMap", "isArrayLike", "getMatchData", "matchesStrictComparable", "isKey", "isStrictComparable", "hasIn", "baseMerge", "srcIndex", "baseMergeDeep", "newValue", "safeGet", "mergeFunc", "isTyped", "isArrayLikeObject", "cloneTypedArray", "isPlainObject", "toPlainObject", "baseNth", "baseOrderBy", "orders", "getIteratee", "criteria", "compareMultiple", "basePick", "basePickBy", "baseSet", "basePropertyDeep", "basePullAll", "indexOf", "basePullAt", "indexes", "previous", "baseUnset", "baseRange", "step", "baseRepeat", "baseRest", "setToString", "overRest", "baseSample", "baseSampleSize", "nested", "baseSetData", "baseSetToString", "constant", "baseShuffle", "baseSlice", "baseSome", "baseSortedIndex", "retHighest", "low", "high", "mid", "baseSortedIndexBy", "valIsNaN", "valIsNull", "valIsSymbol", "valIsUndefined", "othIsDefined", "othIsNull", "othIsReflexive", "othIsSymbol", "setLow", "baseSortedUniq", "baseToNumber", "baseToString", "baseUniq", "createSet", "seenIndex", "isRootPrimitive", "obj", "baseUpdate", "updater", "baseWhile", "isDrop", "actions", "action", "baseXor", "baseZipObject", "assignFunc", "valsLength", "castArrayLikeObject", "castFunction", "stringToPath", "toString", "castRest", "castSlice", "clearTimeout", "id", "buffer", "cloneArrayBuffer", "arrayBuffer", "cloneDataView", "dataView", "cloneRegExp", "regexp", "cloneSymbol", "symbol", "typedArray", "compareAscending", "valIsDefined", "valIsReflexive", "objCriteria", "othCriteria", "ordersLength", "order", "composeArgs", "partials", "holders", "isCurried", "argsIndex", "argsLength", "holdersLength", "leftIndex", "leftLength", "rangeLength", "isUncurried", "composeArgsRight", "holdersIndex", "rightIndex", "rightLength", "isNew", "getSymbols", "getSymbolsIn", "createAggregator", "initializer", "createAssigner", "assigner", "sources", "guard", "isIterateeCall", "iterable", "createBind", "isBind", "Ctor", "createCtor", "wrapper", "fn", "createCaseFirst", "methodName", "trailing", "createCompounder", "callback", "words", "deburr", "thisBinding", "createCurry", "arity", "getHolder", "createRecurry", "createHybrid", "createFind", "findIndexFunc", "createFlow", "flatRest", "funcs", "prereq", "getFuncName", "funcName", "getData", "isLaziable", "partialsRight", "holdersRight", "argPos", "ary", "isAry", "isBindKey", "isFlip", "holdersCount", "newHolders", "reorder", "createInverter", "toIteratee", "createMathOperation", "operator", "defaultValue", "createOver", "arrayFunc", "createPadding", "chars", "charsLength", "createPartial", "createRange", "toFinite", "createRelationalOperation", "toNumber", "wrapFunc", "isCurry", "newHoldersRight", "newPartials", "newPartialsRight", "newData", "setData", "setWrapToString", "createRound", "precision", "pair", "noop", "createToPairs", "createWrap", "mergeData", "customDefaultsAssignIn", "customDefaultsMerge", "customOmitClone", "isPartial", "arrStacked", "othStacked", "arrValue", "othValue", "compared", "convert", "objProps", "objLength", "othProps", "objStacked", "skipCtor", "objCtor", "othCtor", "flatten", "otherFunc", "isKeyable", "isOwn", "unmasked", "stubArray", "ctorString", "transforms", "getWrapDetails", "match", "hasPath", "hasFunc", "insertWrapDetails", "details", "isMaskable", "stubFalse", "memoizeCapped", "memoize", "srcBitmask", "newBitmask", "isCombo", "otherArgs", "oldArray", "shortOut", "reference", "updateWrapDetails", "count", "lastCalled", "stamp", "remaining", "rand", "quote", "subString", "chunk", "compact", "concat", "difference", "differenceBy", "differenceWith", "drop", "dropRight", "dropRightWhile", "dropWhile", "fill", "findIndex", "findLastIndex", "flattenDeep", "flattenDepth", "fromPairs", "head", "initial", "intersection", "mapped", "intersectionBy", "intersectionWith", "join", "separator", "lastIndexOf", "nth", "pull", "pullAll", "pullAllBy", "pullAllWith", "pullAt", "remove", "reverse", "slice", "sortedIndex", "sortedIndexBy", "sortedIndexOf", "sortedLastIndex", "sortedLastIndexBy", "sortedLastIndexOf", "sortedUniq", "sortedUniqBy", "tail", "take", "takeRight", "takeRightWhile", "takeWhile", "union", "unionBy", "unionWith", "uniq", "uniqBy", "uniqWith", "unzip", "group", "unzipWith", "without", "xor", "xorBy", "xorWith", "zip", "zipObject", "zipObjectDeep", "zipWith", "chain", "tap", "interceptor", "thru", "wrapperAt", "wrapperChain", "wrapperCommit", "wrapperNext", "toArray", "done", "wrapperToIterator", "wrapperPlant", "clone", "wrapperReverse", "wrapped", "wrapperValue", "countBy", "every", "filter", "find", "findLast", "flatMap", "flatMapDeep", "flatMapDepth", "forEach", "forEachRight", "groupBy", "isString", "invokeMap", "keyBy", "orderBy", "partition", "reduce", "reduceRight", "reject", "negate", "sample", "sampleSize", "shuffle", "some", "sortBy", "now", "after", "before", "bind", "bindKey", "curry", "curryRight", "debounce", "options", "lastArgs", "lastThis", "maxWait", "timerId", "lastCallTime", "lastInvokeTime", "leading", "maxing", "invokeFunc", "time", "leadingEdge", "timerExpired", "remainingWait", "timeSinceLastCall", "timeSinceLastInvoke", "timeWaiting", "shouldInvoke", "trailingEdge", "cancel", "flush", "debounced", "isInvoking", "defer", "delay", "flip", "resolver", "memoized", "once", "overArgs", "funcsLength", "partial", "partialRight", "rearg", "rest", "spread", "throttle", "unary", "wrap", "castArray", "cloneWith", "cloneDeep", "cloneDeepWith", "conformsTo", "gt", "gte", "isArrayBuffer", "isBoolean", "isDate", "isElement", "isEmpty", "isEqual", "isEqualWith", "isError", "isFinite", "isInteger", "isMatch", "isMatchWith", "isNaN", "isNumber", "isNative", "isNull", "isNil", "isRegExp", "isSafeInteger", "isUndefined", "isWeakMap", "isWeakSet", "lt", "lte", "sign", "remainder", "isBinary", "toSafeInteger", "assign", "assignIn", "assignInWith", "assignWith", "at", "create", "prototype", "properties", "defaults", "propsIndex", "propsLength", "defaultsDeep", "mergeWith", "findKey", "findLastKey", "forIn", "forInRight", "forOwn", "forOwnRight", "functions", "functionsIn", "has", "invert", "invertBy", "invoke", "mapKeys", "mapValues", "merge", "omit", "omitBy", "pickBy", "pick", "prop", "setWith", "toPairs", "toPairsIn", "isArrLike", "unset", "update", "updateWith", "valuesIn", "clamp", "inRange", "random", "floating", "temp", "camelCase", "word", "capitalize", "upperFirst", "endsWith", "target", "position", "escape", "escapeRegExp", "kebabCase", "lowerCase", "lowerFirst", "pad", "strLength", "padEnd", "padStart", "parseInt", "radix", "repeat", "replace", "snakeCase", "split", "limit", "startCase", "startsWith", "template", "settings", "imports", "importsKeys", "importsValues", "isEscaping", "isEvaluating", "interpolate", "reDelimiters", "sourceURL", "escapeValue", "interpolateValue", "esTemplateValue", "evaluateValue", "variable", "attempt", "toLower", "toUpper", "trim", "trimEnd", "trimStart", "truncate", "omission", "substring", "newEnd", "unescape", "upperCase", "e", "bindAll", "methodNames", "cond", "conforms", "defaultTo", "flow", "flowRight", "matches", "matchesProperty", "method", "methodOf", "mixin", "noConflict", "nthArg", "over", "overEvery", "overSome", "propertyOf", "range", "rangeRight", "stubObject", "stubString", "stubTrue", "times", "toPath", "uniqueId", "prefix", "add", "augend", "addend", "ceil", "divide", "dividend", "divisor", "floor", "max", "maxBy", "mean", "meanBy", "min", "minBy", "multiply", "multiplier", "multiplicand", "round", "subtract", "minuend", "subtrahend", "sum", "sumBy", "isFilter", "takeName", "dropName", "checkIteratee", "isTaker", "lodashFunc", "retUnwrapped", "isLazy", "useLazy", "isHybrid", "isUnwrapped", "onlyLazy", "chainName", "require_descriptor", "__commonJSMin", "exports", "wire_1", "FieldDescriptorProto_Type", "fieldDescriptorProto_TypeFromJSON", "object", "__name", "fieldDescriptorProto_TypeToJSON", "FieldDescriptorProto_Label", "fieldDescriptorProto_LabelFromJSON", "fieldDescriptorProto_LabelToJSON", "FileOptions_OptimizeMode", "fileOptions_OptimizeModeFromJSON", "fileOptions_OptimizeModeToJSON", "FieldOptions_CType", "fieldOptions_CTypeFromJSON", "fieldOptions_CTypeToJSON", "FieldOptions_JSType", "fieldOptions_JSTypeFromJSON", "fieldOptions_JSTypeToJSON", "MethodOptions_IdempotencyLevel", "methodOptions_IdempotencyLevelFromJSON", "methodOptions_IdempotencyLevelToJSON", "createBaseFileDescriptorSet", "message", "writer", "v", "key", "values", "tag", "value", "input", "length", "reader", "end", "buf", "list", "obj", "e", "base", "createBaseFileDescriptorProto", "end2", "isSet", "createBaseDescriptorProto", "createBaseDescriptorProto_ExtensionRange", "createBaseDescriptorProto_ReservedRange", "createBaseExtensionRangeOptions", "extension", "encoded", "results", "results2", "createBaseFieldDescriptorProto", "createBaseOneofDescriptorProto", "createBaseEnumDescriptorProto", "createBaseEnumDescriptorProto_EnumReservedRange", "createBaseEnumValueDescriptorProto", "createBaseServiceDescriptorProto", "createBaseMethodDescriptorProto", "createBaseFileOptions", "createBaseMessageOptions", "createBaseFieldOptions", "createBaseOneofOptions", "createBaseEnumOptions", "createBaseEnumValueOptions", "createBaseServiceOptions", "createBaseMethodOptions", "createBaseUninterpretedOption", "longToNumber", "bytesFromBase64", "base64FromBytes", "createBaseUninterpretedOption_NamePart", "createBaseSourceCodeInfo", "createBaseSourceCodeInfo_Location", "createBaseGeneratedCodeInfo", "createBaseGeneratedCodeInfo_Annotation", "b64", "bin", "arr", "byte", "int64", "num", "require_plugin", "__commonJSMin", "exports", "wire_1", "descriptor_1", "CodeGeneratorResponse_Feature", "codeGeneratorResponse_FeatureFromJSON", "object", "__name", "codeGeneratorResponse_FeatureToJSON", "createBaseVersion", "message", "writer", "key", "values", "tag", "value", "input", "length", "reader", "end", "buf", "list", "isSet", "obj", "base", "createBaseCodeGeneratorRequest", "v", "e", "createBaseCodeGeneratorResponse", "longToNumber", "createBaseCodeGeneratorResponse_File", "int64", "num", "require_dist", "__commonJSMin", "exports", "__createBinding", "o", "m", "k", "k2", "desc", "__name", "__exportStar", "p", "exports", "__name", "init", "data", "metadata", "key", "value", "normalizeKey", "item", "validate", "values", "_a", "entries", "isIterable", "Status", "exports", "require_MethodDescriptor", "__commonJSMin", "exports", "require_CallOptions", "__commonJSMin", "exports", "require_ClientMiddleware", "__commonJSMin", "exports", "composeClientMiddleware", "middleware1", "middleware2", "call", "options", "__name", "request", "options2", "exports", "require_helpers", "__commonJSMin", "exports", "objectSetPrototypeOfIsDefined", "objectGetPrototypeOfIsDefined", "objectDefinePropertyIsDefined", "objectCreateIsDefined", "objectHasOwnPropertyIsDefined", "setPrototypeOf", "__name", "target", "prototype", "getPrototypeOf", "ie8ObjectDefinePropertyBug", "defineProperty", "name", "propertyDescriptor", "hasOwnProperty", "objectCreate", "propertyDescriptors", "F", "result", "key", "require_cjs", "__commonJSMin", "exports", "helpers", "setPrototypeOf", "getPrototypeOf", "defineProperty", "objectCreate", "uglyErrorPrinting", "extendableErrorName", "ExtendableError", "message", "originalConstructor", "constructorName", "constructorNameMatch", "constructorNameIsError", "name", "instance", "err", "__name", "ts_error_1", "Status_1", "ClientError", "_ClientError", "__name", "path", "code", "details", "instance", "exports", "require_CallContext", "__commonJSMin", "exports", "require_ServerMiddleware", "__commonJSMin", "exports", "composeServerMiddleware", "middleware1", "middleware2", "call", "context", "__name", "request", "context1", "exports", "ts_error_1", "Status_1", "ServerError", "_ServerError", "__name", "code", "details", "instance", "exports", "__exportStar", "exports", "Status", "exports", "LogVerbosity", "Propagate", "require_package", "__commonJSMin", "exports", "module", "exports", "trace", "isTracerEnabled", "constants_1", "process_1", "clientVersion", "DEFAULT_LOGGER", "__name", "message", "optionalParams", "_logger", "_logVerbosity", "verbosityString", "_b", "_a", "getLogger", "setLogger", "logger", "setLoggerVerbosity", "verbosity", "log", "severity", "args", "logFunction", "tracersString", "_d", "_c", "enabledTracers", "disabledTracers", "tracerName", "allEnabled", "tracer", "text", "exports", "getErrorMessage", "getErrorCode", "error", "__name", "logging_1", "constants_1", "error_1", "LEGAL_KEY_REGEX", "LEGAL_NON_BINARY_VALUE_REGEX", "isLegalKey", "key", "__name", "isLegalNonBinaryValue", "value", "isBinaryKey", "isCustomMetadata", "normalizeKey", "validate", "Metadata", "_Metadata", "options", "existingValue", "result", "values", "v", "newMetadata", "newInternalRepr", "clonedValue", "other", "mergedValue", "bufToString", "headers", "error", "message", "exports", "val", "metadata_1", "isCurrentOauth2Client", "client", "__name", "CallCredentials", "_CallCredentials", "metadataGenerator", "SingleCallCredentials", "googleCredentials", "options", "callback", "getHeaders", "resolve", "reject", "err", "headers", "metadata", "key", "EmptyCallCredentials", "exports", "ComposedCallCredentials", "_ComposedCallCredentials", "creds", "base", "generated", "cred", "gen", "other", "value", "index", "_SingleCallCredentials", "_EmptyCallCredentials", "exports", "getDefaultRootsData", "fs", "DEFAULT_ROOTS_FILE_PATH", "defaultRootsData", "__name", "exports", "parseUri", "splitHostPort", "combineHostPort", "uriToString", "URI_REGEX", "uriString", "parsedUri", "__name", "NUMBER_REGEX", "path", "hostEnd", "host", "portString", "splitPath", "hostPort", "uri", "result", "exports", "registerResolver", "registerDefaultScheme", "createResolver", "getDefaultAuthority", "mapUriDefaultScheme", "uri_parser_1", "registeredResolvers", "defaultScheme", "scheme", "resolverClass", "__name", "target", "listener", "options", "exports", "createCertificateProviderChannelCredentials", "tls_1", "call_credentials_1", "tls_helpers_1", "uri_parser_1", "resolver_1", "logging_1", "constants_1", "verifyIsBufferOrNull", "obj", "friendlyName", "__name", "ChannelCredentials", "callCredentials", "ComposedChannelCredentialsImpl", "rootCerts", "privateKey", "certChain", "verifyOptions", "secureContext", "_a", "SecureChannelCredentialsImpl", "InsecureChannelCredentialsImpl", "_InsecureChannelCredentialsImpl", "other", "channelTarget", "options", "socket", "getConnectionOptions", "connectionOptions", "realTarget", "parsedTarget", "targetPath", "hostPort", "remoteHost", "sslTargetNameOverride", "originalCheckServerIdentity", "_b", "host", "cert", "SecureConnectorImpl", "tlsConnectOptions", "resolve", "reject", "tlsSocket", "error", "_SecureChannelCredentialsImpl", "CertificateProviderChannelCredentialsImpl", "_CertificateProviderChannelCredentialsImpl", "caCertificateProvider", "identityCertificateProvider", "watcher", "update", "e", "parent", "connnectionOptions", "closeCallback", "errorCallback", "_ComposedChannelCredentialsImpl", "channelCredentials", "combinedCallCredentials", "exports", "createChildChannelControlHelper", "registerLoadBalancerType", "registerDefaultLoadBalancerType", "createLoadBalancer", "isLoadBalancerNameRegistered", "parseLoadBalancingConfig", "getDefaultConfig", "selectLbConfigFromList", "logging_1", "constants_1", "parent", "overrides", "_b", "_a", "_d", "_c", "_f", "_e", "_h", "_g", "_k", "_j", "__name", "registeredLoadBalancerTypes", "defaultLoadBalancerType", "typeName", "loadBalancerType", "loadBalancingConfigType", "config", "channelControlHelper", "rawConfig", "keys", "e", "configs", "fallbackTodefault", "exports", "validateRetryThrottling", "validateServiceConfig", "extractAndSelectServiceConfig", "os", "constants_1", "DURATION_REGEX", "CLIENT_LANGUAGE_STRING", "validateName", "obj", "__name", "validateRetryPolicy", "value", "validateHedgingPolicy", "result", "validateMethodConfig", "name", "timeoutParts", "_a", "validateLoadBalancingConfig", "keys", "config", "methodConfig", "seenMethodNames", "seenName", "validateCanaryConfig", "lang", "allowedFields", "field", "validateAndSelectCanaryConfig", "percentage", "validatedConfig", "hostnameMatched", "hostname", "languageMatched", "language", "txtRecord", "record", "recordString", "recordJson", "ConnectivityState", "exports", "metadata_1", "constants_1", "PickResultType", "exports", "UnavailablePicker", "__name", "status", "pickArgs", "QueuePicker", "loadBalancer", "childPicker", "constants_1", "logging", "TRACER_NAME", "INITIAL_BACKOFF_MS", "BACKOFF_MULTIPLIER", "MAX_BACKOFF_MS", "BACKOFF_JITTER", "uniformRandom", "min", "max", "__name", "BackoffTimeout", "_BackoffTimeout", "callback", "options", "text", "delay", "_b", "_a", "nextBackoff", "jitterMagnitude", "now", "newEndTime", "exports", "load_balancer_1", "connectivity_state_1", "TYPE_NAME", "ChildLoadBalancerHandler", "__name", "channelControlHelper", "parent", "subchannelAddress", "subchannelArgs", "connectivityState", "picker", "errorMessage", "_a", "latestChild", "newChild", "child", "oldConfig", "newConfig", "endpointList", "lbConfig", "options", "resolutionNote", "childToUpdate", "newHelper", "exports", "load_balancer_1", "service_config_1", "connectivity_state_1", "resolver_1", "picker_1", "backoff_timeout_1", "constants_1", "metadata_1", "logging", "constants_2", "uri_parser_1", "load_balancer_child_handler_1", "TRACER_NAME", "trace", "text", "__name", "NAME_MATCH_LEVEL_ORDER", "hasMatchingName", "service", "method", "methodConfig", "matchLevel", "name", "findMatchingConfig", "methodConfigs", "config", "getDefaultConfigSelector", "serviceConfig", "methodName", "metadata", "splitName", "x", "_a", "_b", "matchingConfig", "ResolvingLoadBalancer", "target", "channelControlHelper", "channelOptions", "onSuccessfulResolution", "onFailedResolution", "newState", "picker", "errorMessage", "backoffOptions", "endpointList", "attributes", "resolutionNote", "resultAccepted", "workingServiceConfig", "workingConfigList", "loadBalancingConfig", "connectivityState", "error", "lbConfig", "exports", "exports", "channelOptionsEqual", "options1", "options2", "keys1", "keys2", "i", "__name", "exports", "isTcpSubchannelAddress", "subchannelAddressEqual", "subchannelAddressToString", "stringToSubchannelAddress", "endpointEqual", "endpointToString", "endpointHasAddress", "net_1", "address", "__name", "address1", "address2", "DEFAULT_PORT", "addressString", "port", "endpoint1", "endpoint2", "i", "endpoint", "expectedAddress", "endpointEqualUnordered", "matchFound", "EndpointMap", "entry", "endpoints", "removedValues", "foundEntry", "mapEntry", "require_cjs", "__commonJSMin", "exports", "Object", "defineProperty", "value", "TreeNode", "constructor", "key", "color", "this", "_left", "undefined", "_right", "_parent", "_key", "_value", "_color", "_pre", "preNode", "isRootOrHeader", "pre", "_next", "nextNode", "_rotateLeft", "PP", "V", "R", "_rotateRight", "F", "K", "TreeNodeEnableIndex", "super", "arguments", "_subTreeSize", "parent", "_recount", "ContainerIterator", "iteratorType", "equals", "iter", "_node", "Base", "_length", "length", "size", "empty", "Container", "throwIteratorAccessError", "RangeError", "TreeContainer", "cmp", "x", "y", "enableIndex", "_root", "_cmp", "_TreeNodeClass", "_header", "_lowerBound", "curNode", "resNode", "cmpResult", "_upperBound", "_reverseLowerBound", "_reverseUpperBound", "_eraseNodeSelfBalance", "parentNode", "brother", "_eraseNode", "clear", "swapNode", "_inOrderTraversal", "param", "pos", "callback", "nodeList", "index", "stack", "push", "pop", "_insertNodeSelfBalance", "grandParent", "uncle", "GP", "_set", "hint", "minNode", "compareToMin", "maxNode", "compareToMax", "iterNode", "iterCmpRes", "preCmpRes", "_getTreeNodeByKey", "updateKeyByIterator", "node", "nextKey", "preKey", "eraseElementByPos", "eraseElementByKey", "eraseElementByIterator", "hasNoRight", "next", "getHeight", "traversal", "Math", "max", "TreeIterator", "header", "root", "isAccessible", "OrderedMapIterator", "container", "pointer", "self", "Proxy", "get", "target", "prop", "set", "_", "newValue", "TypeError", "copy", "OrderedMap", "forEach", "el", "setElement", "begin", "end", "rBegin", "rEnd", "front", "back", "lowerBound", "upperBound", "reverseLowerBound", "reverseUpperBound", "map", "getElementByPos", "find", "getElementByKey", "union", "other", "Symbol", "iterator", "i", "exports", "registerAdminService", "addAdminServicesToServer", "registeredAdminServices", "getServiceDefinition", "getHandlers", "__name", "server", "exports", "callErrorFromStatus", "events_1", "stream_1", "constants_1", "status", "callerStack", "message", "stack", "__name", "ClientUnaryCallImpl", "_a", "_b", "ClientReadableStreamImpl", "deserialize", "_size", "ClientWritableStreamImpl", "serialize", "chunk", "encoding", "cb", "context", "flags", "ClientDuplexStreamImpl", "exports", "statusOrFromValue", "statusOrFromError", "isInterceptingListener", "metadata_1", "value", "__name", "error", "_a", "listener", "InterceptingListenerImpl", "nextListener", "metadata", "message", "msg", "status", "processedStatus", "exports", "getInterceptingCall", "metadata_1", "call_interface_1", "constants_1", "error_1", "InterceptorConfigurationError", "_InterceptorConfigurationError", "__name", "message", "ListenerBuilder", "onReceiveMetadata", "onReceiveMessage", "onReceiveStatus", "RequesterBuilder", "start", "sendMessage", "halfClose", "cancel", "defaultListener", "metadata", "next", "status", "defaultRequester", "listener", "InterceptingCall", "nextCall", "requester", "_a", "_b", "_c", "_d", "details", "interceptingListener", "fullInterceptingListener", "_f", "_e", "md", "finalInterceptingListener", "fullListener", "context", "finalMessage", "getCall", "channel", "path", "options", "deadline", "host", "parent", "propagateFlags", "credentials", "call", "BaseInterceptingCall", "methodDefinition", "serialized", "e", "readError", "deserialized", "BaseUnaryInterceptingCall", "receivedMessage", "wrapperListener", "BaseStreamingInterceptingCall", "getBottomInterceptingCall", "interceptorArgs", "interceptors", "provider", "interceptor", "interceptorOptions", "nextInterceptor", "currentOptions", "finalOptions", "call_1", "channel_1", "connectivity_state_1", "constants_1", "metadata_1", "client_interceptors_1", "CHANNEL_SYMBOL", "INTERCEPTOR_SYMBOL", "INTERCEPTOR_PROVIDER_SYMBOL", "CALL_INVOCATION_TRANSFORMER_SYMBOL", "isFunction", "arg", "__name", "getErrorStackString", "error", "_a", "Client", "address", "credentials", "options", "_b", "channelFactoryOverride", "deadline", "callback", "checkState", "err", "newState", "arg1", "arg2", "arg3", "method", "serialize", "deserialize", "argument", "metadata", "checkedArguments", "methodDefinition", "callProperties", "emitter", "interceptorArgs", "call", "responseMessage", "receivedStatus", "callerStackError", "message", "status", "callerStack", "stream", "exports", "exports", "makeClientConstructor", "loadPackageDefinition", "client_1", "requesterFuncs", "isPrototypePolluted", "key", "__name", "methods", "serviceName", "classOptions", "ServiceClientImpl", "name", "attrs", "methodType", "serialize", "deserialize", "methodFunc", "partial", "fn", "path", "args", "isProtobufTypeDefinition", "obj", "packageDef", "result", "serviceFqn", "service", "nameComponents", "comp", "current", "packageName", "require_lodash", "__commonJSMin", "exports", "module", "INFINITY", "symbolTag", "reAsciiWord", "reLatin", "rsAstralRange", "rsComboMarksRange", "rsComboSymbolsRange", "rsDingbatRange", "rsLowerRange", "rsMathOpRange", "rsNonCharRange", "rsPunctuationRange", "rsSpaceRange", "rsUpperRange", "rsVarRange", "rsBreakRange", "rsApos", "rsAstral", "rsBreak", "rsCombo", "rsDigits", "rsDingbat", "rsLower", "rsMisc", "rsFitz", "rsModifier", "rsNonAstral", "rsRegional", "rsSurrPair", "rsUpper", "rsZWJ", "rsLowerMisc", "rsUpperMisc", "rsOptLowerContr", "rsOptUpperContr", "reOptMod", "rsOptVar", "rsOptJoin", "rsSeq", "rsEmoji", "rsSymbol", "reApos", "reComboMark", "reUnicode", "reUnicodeWord", "reHasUnicode", "reHasUnicodeWord", "deburredLetters", "freeGlobal", "freeSelf", "root", "arrayReduce", "array", "iteratee", "accumulator", "initAccum", "index", "length", "__name", "asciiToArray", "string", "asciiWords", "basePropertyOf", "object", "key", "deburrLetter", "hasUnicode", "hasUnicodeWord", "stringToArray", "unicodeToArray", "unicodeWords", "objectProto", "objectToString", "Symbol", "symbolProto", "symbolToString", "baseSlice", "start", "end", "result", "baseToString", "value", "isSymbol", "castSlice", "createCaseFirst", "methodName", "toString", "strSymbols", "chr", "trailing", "createCompounder", "callback", "words", "deburr", "isObjectLike", "camelCase", "word", "capitalize", "upperFirst", "pattern", "guard", "require_longbits", "__commonJSMin", "exports", "module", "LongBits", "util", "lo", "hi", "__name", "zero", "zeroHash", "value", "sign", "unsigned", "charCodeAt", "hash", "mask", "part0", "part1", "part2", "require_minimal", "__commonJSMin", "exports", "util", "__name", "value", "obj", "prop", "Buffer", "sizeOrArray", "hash", "unsigned", "bits", "merge", "dst", "src", "ifNotSet", "keys", "i", "str", "newError", "name", "CustomError", "message", "properties", "fieldNames", "fieldMap", "encoding", "size", "require_writer", "__commonJSMin", "exports", "module", "Writer", "util", "BufferWriter", "LongBits", "base64", "utf8", "Op", "fn", "len", "val", "__name", "noop", "State", "writer", "create", "size", "writeByte", "buf", "pos", "writeVarint32", "VarintOp", "value", "writeVarint64", "bits", "writeFixed32", "writeBytes", "i", "head", "tail", "BufferWriter_", "require_writer_buffer", "__commonJSMin", "exports", "module", "BufferWriter", "Writer", "util", "__name", "val", "buf", "pos", "i", "value", "len", "writeStringBuffer", "require_reader", "__commonJSMin", "exports", "module", "Reader", "util", "BufferReader", "LongBits", "utf8", "indexOutOfRange", "reader", "writeLength", "__name", "buffer", "create_array", "create", "value", "readLongVarint", "bits", "i", "readFixed32_end", "buf", "end", "readFixed64", "length", "start", "nativeBuffer", "bytes", "wireType", "BufferReader_", "fn", "require_reader_buffer", "__commonJSMin", "exports", "module", "BufferReader", "Reader", "util", "buffer", "__name", "len", "require_service", "__commonJSMin", "exports", "module", "Service", "util", "rpcImpl", "requestDelimited", "responseDelimited", "__name", "rpcCall", "method", "requestCtor", "responseCtor", "request", "callback", "self", "err", "response", "endedByRPC", "require_rpc", "__commonJSMin", "exports", "rpc", "require_roots", "__commonJSMin", "exports", "module", "require_index_minimal", "__commonJSMin", "exports", "protobuf", "configure", "__name", "require_codegen", "__commonJSMin", "exports", "module", "codegen", "functionParams", "functionName", "body", "Codegen", "formatStringOrScope", "source", "toString", "scopeKeys", "scopeParams", "scopeValues", "scopeOffset", "formatParams", "formatOffset", "__name", "$0", "$1", "value", "functionNameOverride", "require_fetch", "__commonJSMin", "exports", "module", "fetch", "asPromise", "inquire", "fs", "filename", "options", "callback", "__name", "err", "contents", "xhr", "buffer", "i", "require_path", "__commonJSMin", "exports", "path", "isAbsolute", "__name", "normalize", "parts", "absolute", "prefix", "i", "originPath", "includePath", "alreadyNormalized", "require_namespace", "__commonJSMin", "exports", "module", "Namespace", "ReflectionObject", "Field", "util", "OneOf", "Type", "Service", "Enum", "__name", "name", "json", "arrayToJSON", "array", "toJSONOptions", "obj", "reserved", "id", "options", "clearCache", "namespace", "parent", "nestedJson", "ns", "names", "i", "nested", "object", "prev", "path", "ptr", "part", "edition", "filterTypes", "parentAlreadyChecked", "flatPath", "found", "current", "exact", "Type_", "Service_", "Enum_", "require_mapfield", "__commonJSMin", "exports", "module", "MapField", "Field", "types", "util", "name", "id", "keyType", "type", "options", "comment", "__name", "json", "toJSONOptions", "keepComments", "fieldId", "fieldKeyType", "fieldValueType", "prototype", "fieldName", "require_method", "__commonJSMin", "exports", "module", "Method", "ReflectionObject", "util", "name", "type", "requestType", "responseType", "requestStream", "responseStream", "options", "comment", "parsedOptions", "__name", "json", "toJSONOptions", "keepComments", "require_service", "__commonJSMin", "exports", "module", "Service", "Namespace", "Method", "util", "rpc", "name", "options", "__name", "json", "service", "names", "i", "toJSONOptions", "inherited", "keepComments", "clearCache", "methods", "edition", "method", "object", "rpcImpl", "requestDelimited", "responseDelimited", "rpcService", "methodName", "require_message", "__commonJSMin", "exports", "module", "Message", "util", "properties", "keys", "i", "__name", "message", "writer", "reader", "object", "options", "require_decoder", "__commonJSMin", "exports", "module", "decoder", "Enum", "types", "util", "missing", "field", "__name", "mtype", "gen", "i", "type", "ref", "rfield", "require_verifier", "__commonJSMin", "exports", "module", "verifier", "Enum", "util", "invalid", "field", "expected", "__name", "genVerifyValue", "gen", "fieldIndex", "ref", "keys", "j", "genVerifyKey", "mtype", "oneofs", "seenFirstField", "i", "oneofProp", "require_converter", "__commonJSMin", "exports", "converter", "Enum", "util", "genValuePartial_fromObject", "gen", "field", "fieldIndex", "prop", "defaultAlreadyEmitted", "values", "keys", "i", "isUnsigned", "__name", "mtype", "fields", "genValuePartial_toObject", "repeatedFields", "mapFields", "normalFields", "arrayDefault", "hasKs2", "index", "require_wrappers", "__commonJSMin", "exports", "wrappers", "Message", "__name", "object", "name", "type", "type_url", "message", "options", "googleApi", "prefix", "messageName", "require_type", "__commonJSMin", "exports", "module", "Type", "Namespace", "Enum", "OneOf", "Field", "MapField", "Service", "Message", "Reader", "Writer", "util", "encoder", "decoder", "verifier", "converter", "wrappers", "name", "options", "__name", "names", "i", "field", "id", "ctor", "prototype", "ctorProperties", "mtype", "gen", "clearCache", "type", "json", "nested", "toJSONOptions", "inherited", "keepComments", "obj", "oneofs", "fields", "edition", "oneof", "object", "properties", "fullName", "types", "wrapper", "originalThis", "message", "writer", "reader", "length", "typeName", "target", "require_root", "__commonJSMin", "exports", "module", "Root", "Namespace", "Field", "Enum", "OneOf", "util", "Type", "parse", "common", "options", "__name", "json", "root", "SYNC", "load", "filename", "callback", "self", "sync", "finish", "err", "cb", "getBundledFileName", "idx", "altname", "process", "source", "parsed", "resolved", "i", "fetch", "queued", "weak", "field", "exposeRe", "tryHandleExtension", "extendedType", "sisterField", "object", "j", "index", "Type_", "parse_", "common_", "require_util", "__commonJSMin", "exports", "module", "util", "roots", "Type", "Enum", "__name", "object", "keys", "array", "index", "key", "val", "safePropBackslashRe", "safePropQuoteRe", "name", "prop", "str", "camelCaseRe", "$0", "$1", "a", "b", "ctor", "typeName", "type", "decorateEnumIndex", "enm", "dst", "path", "value", "ifNotSet", "setProp", "part", "prevValue", "require_types", "__commonJSMin", "exports", "types", "util", "s", "bake", "values", "offset", "i", "o", "__name", "require_field", "__commonJSMin", "exports", "module", "Field", "ReflectionObject", "Enum", "types", "util", "Type", "ruleRe", "__name", "name", "json", "field", "id", "type", "rule", "extend", "options", "comment", "value", "ifNotSet", "toJSONOptions", "keepComments", "buf", "edition", "features", "fieldId", "fieldType", "fieldRule", "defaultValue", "prototype", "fieldName", "Type_", "require_oneof", "__commonJSMin", "exports", "module", "OneOf", "ReflectionObject", "Field", "util", "name", "fieldNames", "options", "comment", "__name", "json", "toJSONOptions", "keepComments", "addFieldsToParent", "oneof", "i", "field", "index", "parent", "self", "prototype", "oneofName", "require_object", "__commonJSMin", "exports", "module", "ReflectionObject", "OneOf", "util", "Root", "editions2023Defaults", "proto2Defaults", "proto3Defaults", "name", "options", "__name", "ptr", "path", "parent", "root", "edition", "defaults", "protoFeatures", "lexicalParentFeaturesCopy", "parentFeaturesCopy", "value", "ifNotSet", "propName", "parsedOptions", "opt", "newValue", "newOpt", "keys", "i", "className", "fullName", "Root_", "require_enum", "__commonJSMin", "exports", "module", "Enum", "ReflectionObject", "Namespace", "util", "name", "values", "options", "comment", "comments", "valuesOptions", "keys", "i", "__name", "edition", "key", "parentFeaturesCopy", "json", "enm", "toJSONOptions", "keepComments", "id", "val", "require_encoder", "__commonJSMin", "exports", "module", "encoder", "Enum", "types", "util", "genTypePartial", "gen", "field", "fieldIndex", "ref", "__name", "mtype", "i", "fields", "index", "type", "wireType", "require_index_light", "__commonJSMin", "exports", "module", "protobuf", "load", "filename", "root", "callback", "__name", "loadSync", "require_tokenize", "__commonJSMin", "exports", "module", "tokenize", "delimRe", "stringDoubleRe", "stringSingleRe", "setCommentRe", "setCommentAltRe", "setCommentSplitRe", "whitespaceRe", "unescapeRe", "unescapeMap", "unescape", "str", "$0", "$1", "__name", "source", "alternateCommentMode", "offset", "length", "line", "lastCommentLine", "comments", "stack", "stringDelim", "illegal", "subject", "readString", "re", "match", "push", "charAt", "pos", "setComment", "start", "end", "isLeading", "comment", "lookback", "commentOffset", "c", "lines", "i", "isDoubleSlashCommentLine", "startOffset", "endOffset", "findEndOfLine", "lineText", "isComment", "cursor", "next", "repeat", "prev", "curr", "isDoc", "isLeadingComment", "delim", "token", "peek", "skip", "expected", "optional", "actual", "equals", "cmnt", "trailingLine", "ret", "require_parse", "__commonJSMin", "exports", "module", "parse", "tokenize", "Root", "Type", "Field", "MapField", "OneOf", "Enum", "Service", "Method", "ReflectionObject", "types", "util", "base10Re", "base10NegRe", "base16Re", "base16NegRe", "base8Re", "base8NegRe", "numberRe", "nameRe", "typeRefRe", "source", "root", "options", "preferTrailingComment", "tn", "next", "push", "peek", "skip", "cmnt", "head", "pkg", "imports", "weakImports", "edition", "ptr", "topLevelObjects", "topLevelOptions", "applyCase", "name", "resolveFileFeatures", "obj", "opt", "__name", "illegal", "token", "insideTryCatch", "filename", "readString", "values", "readValue", "acceptTypeRef", "parseNumber", "readRanges", "target", "acceptStrings", "start", "str", "parseId", "err", "dummy", "value", "ifBlock", "parseOption", "parseInlineOptions", "sign", "acceptNegative", "parsePackage", "parseImport", "whichImports", "parseSyntax", "parseEdition", "parseCommon", "parent", "parseType", "parseEnum", "parseService", "parseExtension", "fnIf", "fnElse", "trailingLine", "type", "parseMapField", "parseField", "parseOneOf", "rule", "extend", "parseGroup", "field", "oneof", "fieldName", "id", "keyType", "valueType", "enm", "parseEnumValue", "option", "propName", "isOption", "parensValue", "tokens", "optionValue", "parseOptionValue", "setParsedOption", "objectResult", "lastValue", "setOption", "prevValue", "simpleValue", "service", "parseMethod", "commentText", "requestType", "requestStream", "responseType", "responseStream", "method", "reference", "require_common", "__commonJSMin", "exports", "module", "common", "commonRe", "name", "json", "__name", "timeType", "file", "require_src", "__commonJSMin", "exports", "module", "protobuf", "require_protobufjs", "__commonJSMin", "exports", "module", "require_descriptor", "__commonJSMin", "exports", "module", "require_descriptor", "__commonJSMin", "exports", "module", "$protobuf", "Namespace", "Root", "Enum", "Type", "Field", "MapField", "OneOf", "Service", "Method", "__name", "descriptor", "root", "fileDescriptor", "filePackage", "j", "i", "edition", "editionFromDescriptor", "opts", "fromDescriptorOptions", "ks", "set", "Root_toDescriptorRecursive", "ns", "files", "file", "editionToDescriptor", "nested", "toDescriptorOptions", "unnamedMessageIndex", "type", "field", "fieldDescriptor", "keyType", "toDescriptorType", "valueType", "valueTypeName", "shortname", "numberRe", "fieldType", "fromDescriptorType", "fieldRule", "extendee", "defaultValue", "match", "packableDescriptorType", "unnamedEnumIndex", "values", "name", "value", "enm", "unnamedOneofIndex", "unnamedServiceIndex", "service", "methods", "unnamedMethodIndex", "resolvedType", "delimited", "fromDescriptorOptionsRecursive", "obj", "val", "key", "newKey", "underScore", "options", "toDescriptorOptionsRecursive", "keys", "from", "to", "fromPath", "toPath", "k", "other", "str", "$0", "$1", "require_api", "__commonJSMin", "exports", "module", "require_source_context", "__commonJSMin", "exports", "module", "require_type", "__commonJSMin", "exports", "module", "fs", "path", "Protobuf", "addIncludePathResolver", "root", "includePaths", "originalResolvePath", "origin", "target", "directory", "fullPath", "__name", "loadProtosWithOptions", "filename", "options", "loadedRoot", "exports", "loadProtosWithOptionsSync", "addCommonProtos", "apiDescriptor", "descriptorDescriptor", "sourceContextDescriptor", "typeDescriptor", "require_umd", "__commonJSMin", "exports", "module", "global", "factory", "preferDefault", "__name", "_exports", "wasm", "Long", "low", "high", "unsigned", "isLong", "obj", "ctz32", "value", "c", "INT_CACHE", "UINT_CACHE", "fromInt", "cachedObj", "cache", "fromBits", "fromNumber", "UZERO", "ZERO", "TWO_PWR_64_DBL", "MAX_UNSIGNED_VALUE", "TWO_PWR_63_DBL", "MIN_VALUE", "MAX_VALUE", "TWO_PWR_32_DBL", "lowBits", "highBits", "pow_dbl", "fromString", "str", "radix", "p", "radixToPower", "result", "i", "size", "power", "fromValue", "val", "TWO_PWR_16_DBL", "TWO_PWR_24_DBL", "TWO_PWR_24", "ONE", "UONE", "NEG_ONE", "LongPrototype", "radixLong", "div", "rem1", "rem", "remDiv", "intval", "digits", "bit", "top11Bits", "other", "thisNeg", "otherNeg", "addend", "a48", "a32", "a16", "a00", "b48", "b32", "b16", "b00", "c48", "c32", "c16", "c00", "subtrahend", "multiplier", "divisor", "approx", "res", "halfThis", "log2", "delta", "approxRes", "approxRem", "numBits", "b", "le", "hi", "lo", "bytes", "lowBigInt", "highBigInt", "_default", "camelCase", "Protobuf", "descriptor", "util_1", "Long", "exports", "isAnyExtension", "obj", "__name", "IdempotencyLevel", "descriptorOptions", "joinName", "baseName", "name", "isHandledReflectionObject", "isNamespaceBase", "getAllHandledReflectionObjects", "parentName", "objName", "accumulator", "currentValue", "createDeserializer", "cls", "options", "argBuf", "createSerializer", "arg", "message", "mapMethodOptions", "item", "key", "value", "createMethodDefinition", "method", "serviceName", "fileDescriptors", "requestType", "responseType", "createMessageDefinition", "createServiceDefinition", "service", "def", "messageDescriptor", "createEnumDefinition", "enumType", "enumDescriptor", "createDefinition", "createPackageDefinition", "root", "bufferList", "createPackageDefinitionFromDescriptorSet", "decodedDescriptorSet", "load", "filename", "loadedRoot", "loadSync", "fromJSON", "json", "loadFileDescriptorSetFromBuffer", "descriptorSet", "loadFileDescriptorSetFromObject", "exports", "unregisterChannelzRef", "getChannelzHandlers", "getChannelzServiceDefinition", "setup", "net_1", "ordered_map_1", "connectivity_state_1", "constants_1", "subchannel_address_1", "admin_1", "make_client_1", "channelRefToMessage", "ref", "__name", "subchannelRefToMessage", "serverRefToMessage", "socketRefToMessage", "TARGET_RETAINED_TRACES", "DEFAULT_MAX_RESULTS", "ChannelzTraceStub", "dateToProtoTimestamp", "ChannelzTrace", "severity", "description", "child", "timestamp", "event", "ChannelzChildrenTracker", "tracker", "trackedChild", "ChannelzChildrenTrackerStub", "ChannelzCallTracker", "ChannelzCallTrackerStub", "entityMaps", "generateRegisterFn", "kind", "nextId", "getNextId", "entityMap", "name", "getInfo", "channelzEnabled", "id", "parseIPv6Section", "addressSection", "numberValue", "parseIPv6Chunk", "addressChunk", "bytePairs", "section", "isIPv6MappedIPv4", "ipAddress", "ipv4AddressStringToBuffer", "segment", "ipAddressStringToBuffer", "leftSection", "rightSection", "doubleColonIndex", "leftBuffer", "rightBuffer", "middleBuffer", "connectivityStateToMessage", "state", "date", "millisSinceEpoch", "getChannelMessage", "channelEntry", "resolvedInfo", "channelRef", "subchannelRef", "el", "GetChannel", "call", "callback", "channelId", "GetTopChannels", "maxResults", "resultList", "startId", "channelEntries", "i", "getServerMessage", "serverEntry", "listenSocket", "GetServer", "serverId", "GetServers", "serverEntries", "GetSubchannel", "subchannelId", "subchannelEntry", "subchannelMessage", "subchannelAddressToAddressMessage", "subchannelAddress", "_a", "GetSocket", "socketId", "socketEntry", "securityMessage", "_b", "_c", "_d", "socketMessage", "_e", "GetServerSockets", "allSockets", "loadedChannelzDefinition", "loaderLoadSync", "loadedProto", "exports", "getNextCallNumber", "nextCallNumber", "__name", "CompressionAlgorithms", "exports", "BaseFilter", "__name", "metadata", "message", "status", "exports", "zlib", "compression_algorithms_1", "constants_1", "filter_1", "logging", "isCompressionAlgorithmKey", "__name", "key", "CompressionHandler", "message", "compress", "messageBuffer", "output", "data", "compressed", "IdentityHandler", "DeflateHandler", "maxRecvMessageLength", "resolve", "reject", "err", "totalLength", "messageParts", "decompresser", "chunk", "GzipHandler", "UnknownHandler", "compressionName", "getCompressionHandler", "maxReceiveMessageSize", "CompressionFilter", "channelOptions", "sharedFilterConfig", "compressionAlgorithmKey", "_a", "_b", "clientSelectedEncoding", "serverSupportedEncodings", "_c", "metadata", "headers", "receiveEncoding", "encoding", "serverSupportedEncodingsHeader", "resolvedMessage", "exports", "CompressionFilterFactory", "channel", "options", "exports", "restrictControlPlaneStatusCode", "constants_1", "INAPPROPRIATE_CONTROL_PLANE_CODES", "code", "details", "__name", "exports", "minDeadline", "getDeadlineTimeoutString", "getRelativeTimeout", "deadlineToString", "formatDateDifference", "deadlineList", "minValue", "deadline", "deadlineMsecs", "__name", "units", "now", "timeoutMs", "unit", "factor", "amount", "MAX_TIMEOUT_TIME", "deadlineMs", "timeout", "dateDeadline", "startDate", "endDate", "FilterStack", "__name", "filters", "metadata", "result", "message", "status", "exports", "FilterStackFactory", "_FilterStackFactory", "factories", "filterFactories", "factory", "call_number_1", "channelz_1", "compression_filter_1", "connectivity_state_1", "constants_1", "control_plane_status_1", "deadline_1", "filter_stack_1", "metadata_1", "resolver_1", "uri_parser_1", "SubchannelCallWrapper", "__name", "subchannel", "method", "filterStackFactory", "options", "callNumber", "splitPath", "serviceName", "hostname", "_b", "_a", "timeout", "status", "details", "metadata", "listener", "filteredMetadata", "credsMetadata", "e", "error", "code", "childListener", "message", "filteredMessage", "filteredStatus", "context", "credentials", "SingleSubchannelChannel", "target", "tryToConnect", "currentState", "deadline", "callback", "callOptions", "exports", "connectivity_state_1", "backoff_timeout_1", "logging", "constants_1", "uri_parser_1", "subchannel_address_1", "channelz_1", "single_subchannel_channel_1", "TRACER_NAME", "KEEPALIVE_MAX_TIME_MS", "Subchannel", "__name", "channelTarget", "subchannelAddress", "options", "credentials", "connector", "backoffOptions", "_a", "text", "adjustedKeepaliveTime", "transport", "tooManyPings", "error", "oldStates", "newState", "errorMessage", "previousState", "_b", "listener", "metadata", "host", "method", "statsTracker", "status", "other", "newKeepaliveTime", "dataWatcher", "name", "createDataProducer", "existingProducer", "newProducer", "exports", "exports", "_a", "exports", "setup", "resolver_1", "dns_1", "service_config_1", "constants_1", "call_interface_1", "metadata_1", "logging", "constants_2", "uri_parser_1", "net_1", "backoff_timeout_1", "environment_1", "TRACER_NAME", "trace", "text", "__name", "DEFAULT_MIN_TIME_BETWEEN_RESOLUTIONS_MS", "DnsResolver", "target", "listener", "channelOptions", "hostPort", "_a", "_b", "backoffOptions", "_c", "hostname", "addressList", "address", "allAddressesString", "addr", "healthStatus", "err", "txtRecord", "serviceConfig", "records", "result", "acc", "exports", "parseCIDR", "mapProxyName", "getProxiedConnection", "logging_1", "constants_1", "net_1", "http", "logging", "subchannel_address_1", "uri_parser_1", "url_1", "resolver_dns_1", "TRACER_NAME", "trace", "text", "__name", "getProxyInfo", "proxyEnv", "envVar", "proxyUrl", "userCred", "hostname", "port", "result", "getNoProxyHostList", "noProxyStr", "cidrString", "splitRange", "prefixLength", "ipToInt", "ip", "acc", "octet", "isIpInCIDR", "cidr", "serverHost", "mask", "hostMatchesNoProxyList", "host", "parsedCIDR", "target", "options", "noProxyResult", "_a", "proxyInfo", "hostPort", "extraOptions", "address", "channelOptions", "realTarget", "parsedTarget", "splitHostPost", "headers", "proxyAddressString", "resolve", "reject", "request", "res", "socket", "head", "err", "ReadState", "StreamDecoder", "__name", "maxReadMessageLength", "data", "readHead", "toRead", "result", "message", "framedMessageBuffers", "framedMessage", "exports", "http2", "os", "constants_1", "metadata_1", "stream_decoder_1", "logging", "constants_2", "TRACER_NAME", "getSystemErrorName", "errno", "name", "num", "__name", "mapHttpStatusCode", "code", "details", "mappedStatusCode", "Http2SubchannelCall", "http2Stream", "callEventTracker", "listener", "transport", "callId", "maxReceiveMessageLength", "_a", "headers", "flags", "headersString", "header", "metadata", "error", "data", "messages", "e", "mappedStatus", "message", "err", "text", "status", "messageBytes", "metadataMap", "receivedStatus", "nextMessage", "context", "cb", "exports", "http2", "tls_1", "channelz_1", "constants_1", "http_proxy_1", "logging", "resolver_1", "subchannel_address_1", "uri_parser_1", "net", "subchannel_call_1", "call_number_1", "TRACER_NAME", "FLOW_CONTROL_TRACER_NAME", "clientVersion", "HTTP2_HEADER_AUTHORITY", "HTTP2_HEADER_CONTENT_TYPE", "HTTP2_HEADER_METHOD", "HTTP2_HEADER_PATH", "HTTP2_HEADER_TE", "HTTP2_HEADER_USER_AGENT", "KEEPALIVE_TIMEOUT_MS", "tooManyPingsData", "Http2Transport", "__name", "session", "subchannelAddress", "options", "remoteName", "e", "errorCode", "lastStreamID", "opaqueData", "tooManyPings", "error", "hadError", "settings", "sessionSocket", "remoteAddress", "localAddress", "tlsInfo", "tlsSocket", "cipherInfo", "certificate", "peerCertificate", "_a", "_b", "_c", "text", "listener", "call", "pingSendError", "err", "duration", "payload", "metadata", "host", "method", "subchannelCallStatsTracker", "headers", "http2Stream", "eventTracker", "status", "success", "Http2SubchannelConnector", "channelTarget", "secureConnectResult", "address", "resolve", "reject", "realTarget", "parsedTarget", "scheme", "targetPath", "closeHandler", "reportedError", "errorMessage", "errorHandler", "sessionOptions", "authority", "option", "_d", "_e", "defaultWin", "_h", "_g", "_f", "connWin", "delta", "proxiedSocket", "closeCallback", "errorCallback", "socket", "secureConnector", "tcpConnection", "addressString", "exports", "exports", "getSubchannelPool", "channel_options_1", "subchannel_1", "subchannel_address_1", "uri_parser_1", "transport_1", "REF_CHECK_INTERVAL", "SubchannelPool", "__name", "allSubchannelsUnrefed", "channelTarget", "refedSubchannels", "value", "_b", "_a", "channelTargetUri", "subchannelTarget", "channelArguments", "channelCredentials", "subchannelObjArray", "subchannelObj", "subchannel", "globalSubchannelPool", "global", "connectivity_state_1", "constants_1", "deadline_1", "metadata_1", "picker_1", "uri_parser_1", "logging", "control_plane_status_1", "http2", "TRACER_NAME", "LoadBalancingCall", "__name", "channel", "callConfig", "methodName", "host", "credentials", "deadline", "callNumber", "splitPath", "serviceName", "hostname", "_b", "_a", "deadlineInfo", "text", "status", "progress", "finalStatus", "finalMetadata", "pickResult", "subchannelString", "credsMetadata", "metadata", "message", "error", "code", "details", "listener", "context", "exports", "call_credentials_1", "constants_1", "deadline_1", "metadata_1", "logging", "control_plane_status_1", "TRACER_NAME", "ResolvingCall", "__name", "channel", "method", "options", "filterStackFactory", "callNumber", "text", "timeout", "handleDeadline", "deadlineInfo", "deadlineEndTime", "status", "filteredStatus", "watcher", "_a", "context", "message", "child", "filteredMessage", "configResult", "config", "code", "details", "configDeadline", "filteredMetadata", "metadata", "filteredMesssage", "_b", "listener", "credentials", "exports", "constants_1", "deadline_1", "metadata_1", "logging", "TRACER_NAME", "RetryThrottler", "__name", "maxTokens", "tokenRatio", "previousRetryThrottler", "exports", "MessageBufferTracker", "totalLimit", "limitPerCall", "size", "callId", "currentPerCall", "_a", "PREVIONS_RPC_ATTEMPTS_METADATA_KEY", "DEFAULT_MAX_ATTEMPTS_LIMIT", "RetryingCall", "channel", "callConfig", "methodName", "host", "credentials", "deadline", "callNumber", "bufferTracker", "retryThrottler", "maxAttemptsLimit", "retryPolicy", "deadlineInfo", "latestCall", "text", "statusObject", "status", "details", "call", "messageIndex", "earliestNeededMessageIndex", "bufferEntry", "index", "_b", "i", "mostMessages", "callWithMostMessages", "childCall", "list", "code", "value", "nextBackoffMs", "maxBackoffSec", "pushback", "callback", "retryDelayMs", "count", "callIndex", "delayMs", "_c", "retried", "metadata", "mdValue", "hedgingPolicy", "hedgingDelayString", "hedgingDelaySec", "child", "previousAttempts", "initialMetadata", "receivedMetadata", "message", "listener", "childIndex", "error", "context", "writeObj", "underlyingCall", "halfCloseIndex", "newCredentials", "BaseSubchannelWrapper", "__name", "child", "childHealthy", "listener", "newKeepaliveTime", "watcher", "dataWatcher", "healthy", "other", "exports", "channel_credentials_1", "resolving_load_balancer_1", "subchannel_pool_1", "picker_1", "metadata_1", "constants_1", "filter_stack_1", "compression_filter_1", "resolver_1", "logging_1", "http_proxy_1", "uri_parser_1", "connectivity_state_1", "channelz_1", "load_balancing_call_1", "deadline_1", "resolving_call_1", "call_number_1", "control_plane_status_1", "retrying_call_1", "subchannel_interface_1", "MAX_TIMEOUT_TIME", "MIN_IDLE_TIMEOUT_MS", "DEFAULT_IDLE_TIMEOUT_MS", "RETRY_THROTTLER_MAP", "DEFAULT_RETRY_BUFFER_SIZE_BYTES", "DEFAULT_PER_RPC_RETRY_BUFFER_SIZE_BYTES", "ChannelSubchannelWrapper", "__name", "childSubchannel", "channel", "subchannel", "previousState", "newState", "keepaliveTime", "ShutdownPicker", "pickArgs", "exports", "ChannelzInfoTracker", "target", "InternalChannel", "credentials", "options", "originalTargetUri", "defaultSchemeMapResult", "proxyMapResult", "_a", "_b", "_c", "_d", "_e", "channelControlHelper", "subchannelAddress", "subchannelArgs", "finalSubchannelArgs", "key", "value", "connectivityState", "picker", "queueCopy", "call", "child", "serviceConfig", "configSelector", "localQueue", "status", "error", "_f", "text", "verbosityOverride", "watcherObject", "watcherIndex", "watchersCopy", "newKeepaliveTime", "wrappedSubchannel", "metadata", "extraPickInfo", "method", "timeoutMs", "timeSinceLastActivity", "callConfig", "host", "deadline", "callNumber", "parentCall", "propagateFlags", "finalOptions", "tryToConnect", "currentState", "callback", "timer", "deadlineDate", "now", "channel_credentials_1", "internal_channel_1", "ChannelImplementation", "__name", "target", "credentials", "options", "tryToConnect", "currentState", "deadline", "callback", "method", "host", "parentCall", "propagateFlags", "exports", "exports", "serverErrorToStatus", "events_1", "stream_1", "constants_1", "metadata_1", "error", "overrideTrailers", "status", "_a", "__name", "ServerUnaryCallImpl", "path", "call", "metadata", "request", "responseMetadata", "ServerReadableStreamImpl", "size", "ServerWritableStreamImpl", "err", "chunk", "encoding", "callback", "ServerDuplexStreamImpl", "exports", "createCertificateProviderServerCredentials", "createServerCredentialsWithInterceptors", "tls_helpers_1", "ServerCredentials", "__name", "serverConstructorOptions", "contextOptions", "watcher", "options", "InsecureServerCredentials", "rootCerts", "keyCertPairs", "checkClientCertificate", "cert", "key", "i", "pair", "SecureServerCredentials", "_a", "_InsecureServerCredentials", "other", "_SecureServerCredentials", "constructorOptions", "thisCert", "otherCert", "thisKey", "otherKey", "CertificateProviderServerCredentials", "_CertificateProviderServerCredentials", "identityCertificateProvider", "caCertificateProvider", "requireClientCertificate", "secureContextOptions", "update", "InterceptorServerCredentials", "_InterceptorServerCredentials", "childCredentials", "interceptors", "credentials", "exports", "durationMessageToDuration", "msToDuration", "durationToMs", "isDuration", "isDurationMessage", "parseDuration", "durationToString", "message", "__name", "millis", "duration", "value", "durationRegex", "match", "scaleFactor", "exports", "createOrcaClient", "createMetricsReader", "make_client_1", "duration_1", "channel_credentials_1", "subchannel_interface_1", "constants_1", "backoff_timeout_1", "connectivity_state_1", "loadedOrcaProto", "loadOrcaProto", "loaderLoadSync", "loadedProto", "__name", "PerRequestMetricRecorder", "name", "value", "DEFAULT_REPORT_INTERVAL_MS", "ServerMetricRecorder", "call", "reportInterval", "reportTimer", "metrics", "_a", "server", "serviceDefinition", "channel", "ClientClass", "PARSED_LOAD_REPORT_KEY", "listener", "previousOnCallEnded", "code", "details", "metadata", "parsedLoadReport", "serializedLoadReport", "DATA_PRODUCER_KEY", "OobMetricsDataWatcher", "metricsListener", "intervalMs", "subchannel", "producer", "createOobMetricsDataProducer", "OobMetricsDataProducer", "dataWatcher", "newInterval", "watcher", "metricsCall", "report", "error", "OrcaOobMetricsSubchannelWrapper", "child", "exports", "isInterceptingServerListener", "getServerInterceptingCall", "metadata_1", "constants_1", "http2", "error_1", "zlib", "stream_decoder_1", "logging", "tls_1", "orca_1", "TRACER_NAME", "trace", "text", "__name", "ServerListenerBuilder", "onReceiveMetadata", "onReceiveMessage", "onReceiveHalfClose", "onCancel", "listener", "InterceptingServerListenerImpl", "nextListener", "metadata", "interceptedMetadata", "message", "msg", "ResponderBuilder", "start", "sendMetadata", "sendMessage", "sendStatus", "defaultServerListener", "next", "defaultResponder", "status", "ServerInterceptingCall", "nextCall", "responder", "_a", "_b", "_c", "_d", "interceptedListener", "fullInterceptedListener", "finalInterceptingListener", "callback", "interceptedMessage", "interceptedStatus", "GRPC_ACCEPT_ENCODING_HEADER", "GRPC_ENCODING_HEADER", "GRPC_MESSAGE_HEADER", "GRPC_STATUS_HEADER", "GRPC_TIMEOUT_HEADER", "DEADLINE_REGEX", "deadlineUnitsToMs", "defaultCompressionHeaders", "defaultResponseHeaders", "defaultResponseOptions", "BaseServerInterceptingCall", "stream", "headers", "callEventTracker", "handler", "options", "err", "data", "timeoutHeader", "encodingHeader", "socket", "match", "timeout", "now", "value", "messageBuffer", "byteLength", "output", "encoding", "messageContents", "decompresser", "resolve", "reject", "totalLength", "messageParts", "chunk", "queueEntry", "compressedMessageEncoding", "decompressedMessage", "nextQueueEntry", "rawMessages", "e", "messageBytes", "custom", "response", "error", "statusMetadata", "trailersToSend", "peerCertificate", "interceptors", "methodDefinition", "baseCall", "call", "interceptor", "http2", "util", "constants_1", "server_call_1", "server_credentials_1", "resolver_1", "logging", "subchannel_address_1", "uri_parser_1", "channelz_1", "server_interceptors_1", "UNLIMITED_CONNECTION_AGE_MS", "KEEPALIVE_MAX_TIME_MS", "KEEPALIVE_TIMEOUT_MS", "MAX_CONNECTION_IDLE_MS", "HTTP2_HEADER_PATH", "TRACER_NAME", "kMaxAge", "serverCallTrace", "text", "__name", "noop", "deprecate", "message", "target", "context", "getUnimplementedStatusResponse", "methodName", "getDefaultHandler", "handlerType", "unimplementedStatusResponse", "call", "callback", "Server", "options", "__runInitializers", "_instanceExtraInitializers", "_b", "_c", "_d", "_e", "_f", "_g", "session", "sessionInfo", "sessionSocket", "remoteAddress", "localAddress", "tlsInfo", "tlsSocket", "cipherInfo", "certificate", "peerCertificate", "service", "implementation", "serviceKeys", "name", "attrs", "methodType", "implFn", "impl", "port", "creds", "boundAddress", "channelzRef", "credentials", "http2Server", "constructorOptions", "contextOptions", "secureServerOptions", "areCredentialsValid", "socket", "e", "credsWatcher", "secureServer", "address", "boundPortObject", "resolve", "reject", "onError", "err", "boundSubchannelAddress", "addressList", "firstAddressResult", "restAddressResult", "restAddresses", "allResults", "result", "bindResult", "errorString", "seenResolution", "resolverListener", "endpointList", "attributes", "serviceConfig", "resolutionNote", "endpoint", "portNumber", "initialPortUri", "portUri", "deferredCallback", "error", "portNum", "splitPort", "completionPromise", "finalUri", "ownsChannelzRef", "server", "sessionsSet", "connection", "graceTimeMs", "serverInfo", "closeCallback", "allSessions", "serverEntry", "channelzInfo", "handler", "serialize", "deserialize", "type", "wrappedCallback", "pendingChecks", "maybeCallback", "serverKey", "serverString", "sessionString", "stream", "headers", "contentType", "path", "channelzSessionInfo", "trailersToSend", "extraInterceptors", "callEventTracker", "status", "success", "handleUnary", "handleClientStreaming", "handleServerStreaming", "handleBidiStreaming", "serverAddress", "serverAddressString", "sessionHandler", "connectionAgeTimer", "connectionAgeGraceTimer", "keepaliveTimer", "sessionClosedByServer", "idleTimeoutObj", "jitterMagnitude", "jitter", "clearKeepaliveTimeout", "canSendPing", "sendPing", "maybeStartKeepalivePingTimer", "pingSendError", "duration", "payload", "clientAddress", "keepaliveTimeout", "ctx", "__esDecorate", "_a", "_start_decorators", "obj", "_metadata", "exports", "respond", "value", "trailer", "flags", "requestMetadata", "requestMessage", "metadata", "StatusBuilder", "__name", "code", "details", "metadata", "status", "exports", "exports", "shuffled", "setup", "load_balancer_1", "connectivity_state_1", "picker_1", "subchannel_address_1", "logging", "constants_1", "subchannel_address_2", "net_1", "call_interface_1", "TRACER_NAME", "trace", "text", "__name", "TYPE_NAME", "CONNECTION_DELAY_INTERVAL_MS", "PickFirstLoadBalancingConfig", "_PickFirstLoadBalancingConfig", "shuffleAddressList", "obj", "PickFirstPicker", "subchannel", "pickArgs", "list", "result", "i", "j", "temp", "interleaveAddressFamilies", "addressList", "ipv6Addresses", "ipv4Addresses", "ipv6First", "address", "firstList", "secondList", "REPORT_HEALTH_STATUS_OPTION_NAME", "PickFirstLoadBalancer", "channelControlHelper", "previousState", "newState", "keepaliveTime", "errorMessage", "child", "_a", "index", "startIndex", "subchannelState", "subchannelIndex", "_b", "picker", "options", "newChildrenList", "maybeEndpointList", "lbConfig", "resolutionNote", "endpointList", "rawAddressList", "endpoint", "LEAF_CONFIG", "LeafLoadBalancer", "childChannelControlHelper", "connectivityState", "newEndpoint", "newOptions", "fs", "logging", "constants_1", "util_1", "TRACER_NAME", "trace", "text", "__name", "readFilePromise", "FileWatcherCertificateProvider", "config", "certificateResult", "privateKeyResult", "caCertificateResult", "listener", "timeSinceLastUpdate", "exports", "logging_1", "exports", "__name", "resolver_1", "uri_parser_1", "duration_1", "backoff_timeout_1", "load_balancer_1", "load_balancer_pick_first_1", "subchannel_address_1", "load_balancer_child_handler_1", "picker_1", "call_interface_1", "filter_1", "filter_stack_1", "admin_1", "subchannel_interface_1", "server_credentials_1", "certificate_provider_1", "channel_credentials_1", "internal_channel_1", "exports", "setup", "resolver_1", "call_interface_1", "UdsResolver", "__name", "target", "listener", "channelOptions", "path", "exports", "setup", "net_1", "call_interface_1", "constants_1", "metadata_1", "resolver_1", "subchannel_address_1", "uri_parser_1", "logging", "TRACER_NAME", "trace", "text", "__name", "IPV4_SCHEME", "IPV6_SCHEME", "DEFAULT_PORT", "IpResolver", "target", "listener", "channelOptions", "addresses", "pathList", "path", "hostPort", "_a", "address", "exports", "setup", "load_balancer_1", "connectivity_state_1", "picker_1", "logging", "constants_1", "subchannel_address_1", "load_balancer_pick_first_1", "TRACER_NAME", "trace", "text", "__name", "TYPE_NAME", "RoundRobinLoadBalancingConfig", "_RoundRobinLoadBalancingConfig", "obj", "RoundRobinPicker", "children", "nextIndex", "pickArgs", "childPicker", "rotateArray", "list", "startIndex", "RoundRobinLoadBalancer", "channelControlHelper", "connectivityState", "picker", "errorMessage", "state", "child", "readyChildren", "index", "nextPickedEndpoint", "newState", "maybeEndpointList", "lbConfig", "options", "resolutionNote", "endpointList", "endpoint", "exports", "setup", "connectivity_state_1", "constants_1", "duration_1", "experimental_1", "load_balancer_1", "load_balancer_child_handler_1", "picker_1", "subchannel_address_1", "subchannel_interface_1", "logging", "TRACER_NAME", "trace", "text", "__name", "TYPE_NAME", "OUTLIER_DETECTION_ENABLED", "_a", "defaultSuccessRateEjectionConfig", "defaultFailurePercentageEjectionConfig", "validateFieldType", "obj", "fieldName", "expectedType", "objectName", "fullFieldName", "validatePositiveDuration", "validatePercentage", "OutlierDetectionLoadBalancingConfig", "_OutlierDetectionLoadBalancingConfig", "intervalMs", "baseEjectionTimeMs", "maxEjectionTimeMs", "maxEjectionPercent", "successRateEjection", "failurePercentageEjection", "childPolicy", "_b", "OutlierDetectionSubchannelWrapper", "childSubchannel", "mapEntry", "index", "createEmptyBucket", "CallCounter", "OutlierDetectionPicker", "wrappedPicker", "countCalls", "pickArgs", "wrappedPick", "subchannelWrapper", "onCallEnded", "statusCode", "details", "metadata", "OutlierDetectionLoadBalancer", "channelControlHelper", "subchannelAddress", "subchannelArgs", "originalSubchannel", "connectivityState", "picker", "errorMessage", "ejectionCount", "ejectionTimestamp", "successRateConfig", "targetRequestVolume", "addresesWithTargetVolume", "successRates", "endpoint", "successes", "failures", "successRateMean", "a", "b", "successRateDeviationSum", "rate", "deviation", "successRateVariance", "successRateStdev", "ejectionThreshold", "address", "successRate", "randomNumber", "failurePercentageConfig", "addressesWithTargetVolume", "delayMs", "returnTime", "endpointList", "lbConfig", "options", "resolutionNote", "remainingDelay", "top", "parent", "__name", "i", "left", "right", "PriorityQueue", "comparator", "a", "b", "values", "value", "poppedValue", "bottom", "replacedValue", "j", "node", "maxChild", "exports", "exports", "setup", "connectivity_state_1", "constants_1", "duration_1", "load_balancer_1", "load_balancer_pick_first_1", "logging", "orca_1", "picker_1", "priority_queue_1", "subchannel_address_1", "TRACER_NAME", "trace", "text", "__name", "TYPE_NAME", "DEFAULT_OOB_REPORTING_PERIOD_MS", "DEFAULT_BLACKOUT_PERIOD_MS", "DEFAULT_WEIGHT_EXPIRATION_PERIOD_MS", "DEFAULT_WEIGHT_UPDATE_PERIOD_MS", "DEFAULT_ERROR_UTILIZATION_PENALTY", "validateFieldType", "obj", "fieldName", "expectedType", "parseDurationField", "durationObject", "parsedDuration", "WeightedRoundRobinLoadBalancingConfig", "_WeightedRoundRobinLoadBalancingConfig", "enableOobLoadReport", "oobLoadReportingPeriodMs", "blackoutPeriodMs", "weightExpirationPeriodMs", "weightUpdatePeriodMs", "errorUtilizationPenalty", "WeightedRoundRobinPicker", "children", "metricsHandler", "a", "b", "positiveWeight", "picker", "averageWeight", "weightSum", "weight", "child", "period", "pickArgs", "entry", "childPick", "loadReport", "subchannelWrapper", "WeightedRoundRobinLoadBalancer", "channelControlHelper", "state", "count", "qps", "utilization", "_b", "_a", "newWeight", "now", "blackoutPeriod", "weightedPickers", "endpoint", "endpointName", "childEntry", "errorMessage", "newState", "maybeEndpointList", "lbConfig", "options", "resolutionNote", "seenEndpointNames", "name", "connectivityState", "subchannelAddress", "subchannelArgs", "subchannel", "call_credentials_1", "exports", "__name", "channel_1", "compression_algorithms_1", "connectivity_state_1", "channel_credentials_1", "client_1", "constants_1", "logging", "make_client_1", "metadata_1", "server_1", "server_credentials_1", "status_builder_1", "channelCredentials", "callCredentials", "acc", "other", "first", "additional", "closeClient", "client", "waitForClientReady", "deadline", "callback", "loadObject", "value", "options", "load", "filename", "format", "setLogger", "logger", "setLogVerbosity", "verbosity", "getClientChannel", "client_interceptors_1", "channelz_1", "admin_1", "server_interceptors_1", "orca_1", "experimental", "resolver_dns", "resolver_uds", "resolver_ip", "load_balancer_pick_first", "load_balancer_round_robin", "load_balancer_outlier_detection", "load_balancer_weighted_round_robin", "channelz", "exports", "fromGrpcJsServiceDefinition", "isGrpcJsServiceDefinition", "definition", "result", "key", "method", "__name", "bytes", "value", "exports", "fromTsProtoServiceDefinition", "isTsProtoServiceDefinition", "definition", "result", "key", "method", "requestEncode", "requestFromPartial", "responseEncode", "responseFromPartial", "value", "__name", "exports", "normalizeServiceDefinition", "toGrpcJsServiceDefinition", "toGrpcJsMethodDefinition", "grpc_js_1", "ts_proto_1", "definition", "__name", "result", "key", "method", "value", "AbortError", "__name", "exports", "isAbortError", "error", "throwIfAborted", "signal", "rethrowAbortError", "catchAbortError", "AbortError_1", "execute", "signal", "executor", "resolve", "reject", "removeAbortListener", "finished", "finish", "__name", "callback", "value", "reason", "listener", "callbackResult", "exports", "execute_1", "abortable", "signal", "promise", "noop", "__name", "resolve", "reject", "exports", "execute_1", "delay", "signal", "dueTime", "resolve", "ms", "timer", "__name", "exports", "execute_1", "forever", "signal", "__name", "exports", "execute_1", "waitForEvent", "signal", "target", "eventName", "options", "resolve", "unlisten", "finished", "listen", "__name", "args", "exports", "handler", "isEventTarget", "isJQueryStyleEventEmitter", "isNodeStyleEventEmitter", "sourceObj", "isFunction", "obj", "AbortError_1", "all", "signal", "executor", "resolve", "reject", "innerAbortController", "promises", "abortListener", "__name", "rejection", "results", "settledCount", "settled", "i", "promise", "value", "reason", "exports", "AbortError_1", "race", "signal", "executor", "resolve", "reject", "innerAbortController", "promises", "abortListener", "__name", "settledCount", "settled", "result", "promise", "value", "reason", "exports", "delay_1", "AbortError_1", "retry", "signal", "fn", "options", "baseMs", "maxDelayMs", "onError", "maxAttempts", "attempt", "reset", "__name", "error", "delayMs", "backoff", "exports", "AbortError_1", "spawn", "signal", "fn", "deferredFunctions", "spawnAbortController", "spawnSignal", "abortSpawn", "__name", "removeAbortListener", "tasks", "abortTasks", "task", "removeSpawnAbortListener", "promise", "resolve", "reject", "result", "failure", "fork", "value", "error", "forkFn", "taskAbortController", "taskSignal", "taskPromise", "deferPromise", "i", "exports", "AbortError_1", "run", "fn", "abortController", "promise", "__name", "exports", "AbortError_1", "delay_1", "execute_1", "proactiveRetry", "signal", "fn", "options", "baseMs", "onError", "maxAttempts", "resolve", "reject", "innerAbortController", "attemptsExhausted", "promises", "handleFulfilled", "value", "__name", "handleRejected", "err", "attempt", "makeAttempts", "promise", "backoff", "delayMs", "exports", "__exportStar", "exports", "exports", "convertMetadataToGrpcJs", "convertMetadataFromGrpcJs", "grpc", "__importStar", "nice_grpc_common_1", "metadata", "grpcMetadata", "key", "values", "value", "__name", "exports", "isAsyncIterable", "value", "__name", "exports", "readableToAsyncIterable", "nodejsInternalsCompatibilityCheckedOnce", "nodejsInternalsAccessible", "obj", "safe", "__name", "stream", "callback", "nop", "next", "resolve", "state", "error", "errorEmitted", "endEmitted", "closeEmitted", "err", "chunk", "exports", "createCallContext", "nice_grpc_common_1", "convertMetadata_1", "call", "ac", "maybeCancel", "header", "trailer", "headerSent", "isEmptyMetadata", "__name", "metadata", "_", "exports", "createErrorStatusObject", "grpc_js_1", "abort_controller_x_1", "nice_grpc_common_1", "path", "error", "trailer", "__name", "exports", "createBidiStreamingMethodHandler", "abort_controller_x_1", "convertMetadata_1", "isAsyncIterable_1", "readableToAsyncIterable_1", "createCallContext_1", "createErrorStatusObject_1", "definition", "implementation", "middleware", "methodDescriptor", "bidiStreamingMethodHandler", "request", "context", "__name", "handler", "call", "maybeCancel", "iterator", "result", "err", "exports", "createClientStreamingMethodHandler", "convertMetadata_1", "isAsyncIterable_1", "readableToAsyncIterable_1", "createCallContext_1", "createErrorStatusObject_1", "definition", "implementation", "middleware", "methodDescriptor", "clientStreamingMethodHandler", "request", "context", "__name", "handler", "call", "callback", "maybeCancel", "iterator", "result", "res", "err", "exports", "createServerStreamingMethodHandler", "abort_controller_x_1", "convertMetadata_1", "isAsyncIterable_1", "createCallContext_1", "createErrorStatusObject_1", "definition", "implementation", "middleware", "methodDescriptor", "serverStreamingMethodHandler", "request", "context", "__name", "handler", "call", "maybeCancel", "iterator", "result", "err", "exports", "createUnaryMethodHandler", "convertMetadata_1", "isAsyncIterable_1", "createCallContext_1", "createErrorStatusObject_1", "definition", "implementation", "middleware", "methodDescriptor", "unaryMethodHandler", "request", "context", "__name", "handler", "call", "callback", "maybeCancel", "iterator", "result", "res", "err", "exports", "createServer", "grpc_js_1", "nice_grpc_common_1", "service_definitions_1", "handleBidiStreamingCall_1", "handleClientStreamingCall_1", "handleServerStreamingCall_1", "handleUnaryCall_1", "options", "createServerWithMiddleware", "__name", "middleware", "services", "server", "createAddBuilder", "newMiddleware", "definition", "implementation", "address", "credentials", "grpcImplementation", "methodName", "methodDefinition", "methodImplementation", "resolve", "reject", "err", "port", "require_ServiceImplementation", "__commonJSMin", "exports", "exports", "createChannel", "waitForChannelReady", "grpc_js_1", "knownProtocols", "address", "credentials", "options", "match", "protocol", "host", "port", "knownProtocol", "isSecure", "target", "__name", "channel", "deadline", "state", "resolve", "reject", "err", "exports", "wrapClientError", "nice_grpc_common_1", "grpc_js_1", "error", "path", "isStatusObject", "__name", "obj", "exports", "createBidiStreamingMethod", "abort_controller_x_1", "nice_grpc_common_1", "service_definitions_1", "convertMetadata_1", "isAsyncIterable_1", "readableToAsyncIterable_1", "wrapClientError_1", "definition", "client", "middleware", "defaultOptions", "grpcMethodDefinition", "methodDescriptor", "bidiStreamingMethod", "request", "options", "metadata", "onHeader", "onTrailer", "signal", "pipeAbortController", "call", "status", "pipeError", "pipeRequest", "err", "abortListener", "__name", "method", "iterator", "result", "item", "exports", "createClientStreamingMethod", "abort_controller_x_1", "nice_grpc_common_1", "service_definitions_1", "convertMetadata_1", "isAsyncIterable_1", "wrapClientError_1", "definition", "client", "middleware", "defaultOptions", "grpcMethodDefinition", "methodDescriptor", "clientStreamingMethod", "request", "options", "metadata", "signal", "onHeader", "onTrailer", "resolve", "reject", "pipeAbortController", "call", "err", "response", "status", "pipeRequest", "__name", "method", "iterator", "result", "item", "exports", "createServerStreamingMethod", "abort_controller_x_1", "nice_grpc_common_1", "service_definitions_1", "convertMetadata_1", "isAsyncIterable_1", "readableToAsyncIterable_1", "wrapClientError_1", "definition", "client", "middleware", "defaultOptions", "grpcMethodDefinition", "methodDescriptor", "serverStreamingMethod", "request", "options", "metadata", "onHeader", "onTrailer", "signal", "call", "status", "abortListener", "__name", "err", "method", "iterator", "result", "exports", "createUnaryMethod", "abort_controller_x_1", "nice_grpc_common_1", "service_definitions_1", "convertMetadata_1", "isAsyncIterable_1", "wrapClientError_1", "definition", "client", "middleware", "defaultOptions", "grpcMethodDefinition", "methodDescriptor", "unaryMethod", "request", "options", "metadata", "signal", "onHeader", "onTrailer", "resolve", "reject", "call", "err", "response", "status", "__name", "method", "iterator", "result", "exports", "createClientFactory", "createClient", "grpc_js_1", "nice_grpc_common_1", "service_definitions_1", "createBidiStreamingMethod_1", "createClientStreamingMethod_1", "createServerStreamingMethod_1", "createUnaryMethod_1", "createClientFactoryWithMiddleware", "__name", "definition", "channel", "defaultCallOptions", "middleware", "newMiddleware", "constructor", "grpcClient", "client", "methodEntries", "methodName", "methodDefinition", "defaultOptions", "require_Client", "__commonJSMin", "exports", "__exportStar", "exports", "channel_1", "__name", "grpc_js_1", "exports", "tracingMiddleware", "metaMiddleware", "nice_grpc_1", "abort_controller_x_1", "node_async_hooks_1", "node_crypto_1", "tracingHeader", "call", "options", "nextID", "__name", "loggingMiddleware", "logger", "omittedFields", "path", "err", "internalDeadlineMiddleware", "timeout", "val", "parsed", "k", "nice_grpc_common_1", "deadlineMiddleware", "__name", "call", "options", "_a", "deadline", "origSignal", "restOptions", "abortController", "abortListener", "timedOut", "offset", "timer", "exports", "abort_controller_x_1", "nice_grpc_common_1", "defaultRetryableStatuses", "retryMiddleware", "__name", "call", "options", "idempotencyLevel", "isIdempotent", "retry", "retryBaseDelayMs", "retryMaxDelayMs", "retryMaxAttempts", "onRetryableError", "retryableStatuses", "restOptions", "signal", "_a", "attempt", "error", "backoff", "delayMs", "exports", "exports", "createClient", "nice_grpc_1", "__name", "middleware_1", "nice_grpc_client_middleware_deadline_1", "nice_grpc_client_middleware_retry_1", "config", "definition", "channel", "defaultCallOptions", "factory", "error", "attempt", "delayMs", "wire_1", "any_1", "auth_1", "options_1", "exports", "createBaseCommandRequest", "__name", "message", "writer", "input", "length", "reader", "end", "tag", "object", "isSet", "obj", "base", "createBaseCommandResponse", "v", "el", "e", "value", "grpc_client_1", "resource_base_1", "exports", "__name", "commandinterface_1", "nice_grpc_1", "RestoreCommerceGrpcClient", "address", "cfg", "any_1", "exports", "__name", "__exportStar", "_CodeOrName", "__name", "exports", "Name", "s", "_Code", "code", "item", "_a", "c", "names", "_", "strs", "args", "addCodeArg", "plus", "str", "expr", "safeStringify", "optimize", "arg", "interpolate", "i", "res", "mergeExprItems", "a", "b", "strConcat", "c1", "c2", "x", "stringify", "getProperty", "key", "getEsmExportName", "regexpCode", "rx", "code_1", "ValueError", "__name", "name", "UsedValueState", "exports", "Scope", "prefixes", "parent", "nameOrPrefix", "prefix", "ng", "_b", "_a", "ValueScopeName", "nameStr", "value", "property", "itemIndex", "line", "ValueScope", "opts", "valueKey", "vs", "_name", "s", "keyOrRef", "scopeName", "values", "usedValues", "getCode", "valueCode", "code", "nameSet", "c", "def", "code_1", "scope_1", "code_2", "exports", "__name", "scope_2", "Node", "_names", "_constants", "Def", "varKind", "name", "rhs", "es5", "_n", "names", "constants", "optimizeExpr", "Assign", "lhs", "sideEffects", "addExprNames", "AssignOp", "op", "Label", "label", "Break", "Throw", "error", "AnyCode", "code", "ParentNode", "nodes", "opts", "n", "i", "subtractNames", "addNames", "BlockNode", "Root", "Else", "If", "_If", "condition", "cond", "e", "ns", "not", "_a", "For", "ForLoop", "iteration", "ForRange", "from", "to", "ForIter", "loop", "iterable", "Func", "args", "async", "Return", "Try", "_b", "Catch", "Finally", "CodeGen", "extScope", "prefix", "prefixOrName", "value", "keyOrRef", "scopeName", "nameOrPrefix", "constant", "_constant", "c", "keyValues", "key", "thenBody", "elseBody", "node", "forBody", "arr", "obj", "tryBody", "catchCode", "finallyCode", "body", "nodeCount", "len", "toClose", "funcBody", "N1", "N2", "expr", "replaceName", "canOptimize", "items", "x", "par", "andCode", "mappend", "and", "orCode", "or", "y", "codegen_1", "code_1", "toHash", "arr", "hash", "item", "__name", "exports", "alwaysValidSchema", "it", "schema", "checkUnknownRules", "schemaHasRules", "opts", "self", "rules", "key", "checkStrictMode", "schemaHasRulesButRef", "RULES", "schemaRefOrVal", "topSchemaRef", "schemaPath", "keyword", "$data", "unescapeFragment", "str", "unescapeJsonPointer", "escapeFragment", "escapeJsonPointer", "eachItem", "xs", "f", "x", "makeMergeEvaluated", "mergeNames", "mergeToName", "mergeValues", "resultToName", "gen", "from", "to", "toName", "res", "setEvaluated", "evaluatedPropsToName", "items", "ps", "props", "p", "snippets", "useFunc", "Type", "getErrorPath", "dataProp", "dataPropType", "jsPropertySyntax", "isNumber", "msg", "mode", "codegen_1", "names", "exports", "codegen_1", "util_1", "names_1", "exports", "__name", "keyword", "schemaType", "reportError", "cxt", "error", "errorPaths", "overrideAllErrors", "it", "gen", "compositeRule", "allErrors", "errObj", "errorObjectCode", "addError", "returnErrors", "reportExtraError", "resetErrorsCount", "errsCount", "extendErrors", "schemaValue", "data", "err", "i", "errs", "validateName", "schemaEnv", "E", "createErrors", "errorObject", "keyValues", "errorInstancePath", "errorSchemaPath", "extraErrorProps", "errorPath", "instancePath", "instPath", "errSchemaPath", "schemaPath", "parentSchema", "schPath", "params", "message", "opts", "propertyName", "topSchemaRef", "errors_1", "codegen_1", "names_1", "boolError", "topBoolOrEmptySchema", "it", "gen", "schema", "validateName", "falseSchemaError", "__name", "exports", "boolOrEmptySchema", "valid", "overrideAllErrors", "data", "cxt", "_jsonTypes", "jsonTypes", "isJSONType", "x", "__name", "exports", "getRules", "groups", "schemaHasRulesForType", "schema", "self", "type", "group", "shouldUseGroup", "__name", "exports", "rule", "shouldUseRule", "_a", "kwd", "rules_1", "applicability_1", "errors_1", "codegen_1", "util_1", "DataType", "exports", "getSchemaTypes", "schema", "types", "getJSONTypes", "__name", "ts", "coerceAndCheckDataType", "it", "gen", "data", "opts", "coerceTo", "coerceToTypes", "checkTypes", "wrongType", "checkDataTypes", "coerceData", "reportTypeError", "COERCIBLE", "coerceTypes", "t", "dataType", "coerced", "coerceSpecificType", "assignParentData", "parentData", "parentDataProperty", "expr", "checkDataType", "strictNums", "correct", "EQ", "cond", "numCond", "_cond", "dataTypes", "notObj", "typeError", "schemaValue", "cxt", "getTypeErrorContext", "schemaCode", "codegen_1", "util_1", "assignDefaults", "it", "ty", "properties", "items", "key", "assignDefault", "sch", "i", "__name", "exports", "prop", "defaultValue", "gen", "compositeRule", "data", "opts", "childData", "condition", "codegen_1", "util_1", "names_1", "util_2", "checkReportMissingProp", "cxt", "prop", "gen", "data", "it", "noPropertyInData", "__name", "exports", "checkMissingProp", "opts", "properties", "missing", "reportMissingProp", "hasPropFunc", "isOwnProperty", "property", "propertyInData", "ownProperties", "cond", "allSchemaProperties", "schemaMap", "p", "schemaProperties", "callValidateCode", "schemaCode", "topSchemaRef", "schemaPath", "errorPath", "func", "context", "passSchema", "dataAndSchema", "valCxt", "args", "newRegExp", "usePattern", "pattern", "u", "regExp", "rx", "validateArray", "keyword", "valid", "validArr", "validateItems", "notValid", "len", "i", "validateUnion", "schema", "sch", "schValid", "_sch", "schCxt", "codegen_1", "names_1", "code_1", "errors_1", "macroKeywordCode", "cxt", "def", "gen", "keyword", "schema", "parentSchema", "it", "macroSchema", "schemaRef", "useKeyword", "valid", "__name", "exports", "funcKeywordCode", "$data", "checkAsyncKeyword", "validate", "validateRef", "validateKeyword", "_a", "assignValid", "modifyData", "reportErrs", "ruleErrs", "validateAsync", "validateSync", "addErrs", "e", "validateErrs", "_await", "passCxt", "passSchema", "errors", "data", "errs", "schemaEnv", "result", "validSchemaType", "schemaType", "allowUndefined", "st", "validateKeywordUsage", "opts", "self", "errSchemaPath", "deps", "kwd", "msg", "codegen_1", "util_1", "getSubschema", "it", "keyword", "schemaProp", "schema", "schemaPath", "errSchemaPath", "topSchemaRef", "sch", "__name", "exports", "extendSubschemaData", "subschema", "dataProp", "dpType", "data", "dataTypes", "propertyName", "gen", "errorPath", "dataPathArr", "opts", "nextData", "dataContextProps", "_nextData", "extendSubschemaMode", "jtdDiscriminator", "jtdMetadata", "compositeRule", "createErrors", "allErrors", "require_fast_deep_equal", "__commonJSMin", "exports", "module", "__name", "equal", "a", "b", "length", "i", "keys", "key", "require_json_schema_traverse", "__commonJSMin", "exports", "module", "traverse", "schema", "opts", "cb", "pre", "post", "_traverse", "jsonPtr", "rootSchema", "parentJsonPtr", "parentKeyword", "parentSchema", "keyIndex", "key", "sch", "i", "prop", "escapeJsonPtr", "__name", "str", "util_1", "equal", "traverse", "SIMPLE_INLINED", "inlineRef", "schema", "limit", "hasRef", "countKeys", "__name", "exports", "REF_KEYWORDS", "key", "sch", "count", "getFullPath", "resolver", "id", "normalize", "normalizeId", "p", "_getFullPath", "TRAILING_SLASH_HASH", "resolveUrl", "baseId", "ANCHOR", "getSchemaRefs", "schemaId", "uriResolver", "schId", "baseIds", "pathPrefix", "localRefs", "schemaRefs", "jsonPtr", "_", "parentJsonPtr", "fullPath", "innerBaseId", "addRef", "addAnchor", "ref", "_resolve", "ambiguos", "schOrRef", "checkAmbiguosRef", "anchor", "sch1", "sch2", "boolSchema_1", "dataType_1", "applicability_1", "dataType_2", "defaults_1", "keyword_1", "subschema_1", "codegen_1", "names_1", "resolve_1", "util_1", "errors_1", "validateFunctionCode", "it", "isSchemaObj", "checkKeywords", "schemaCxtHasRules", "topSchemaObjCode", "validateFunction", "__name", "exports", "gen", "validateName", "schema", "schemaEnv", "opts", "body", "funcSourceUrl", "destructureValCxtES5", "destructureValCxt", "commentKeyword", "checkNoDefault", "resetEvaluated", "typeAndKeywords", "returnResults", "schId", "subschemaCode", "valid", "subSchemaObjCode", "self", "key", "updateContext", "checkAsyncSchema", "errsCount", "checkRefsAndKeywords", "schemaKeywords", "types", "checkedTypes", "errSchemaPath", "msg", "schemaPath", "rootName", "ValidationError", "assignEvaluated", "evaluated", "props", "items", "typeErrors", "data", "allErrors", "RULES", "keywordCode", "checkStrictTypes", "group", "groupKeywords", "iterateKeywords", "useDefaults", "rule", "checkContextTypes", "checkMultipleTypes", "checkKeywordTypes", "t", "includesType", "strictTypesError", "narrowSchemaTypes", "ts", "rules", "keyword", "type", "hasApplicableType", "schTs", "kwdT", "withTypes", "KeywordCxt", "def", "getData", "condition", "successAction", "failAction", "schemaCode", "append", "errorParams", "errorPaths", "cond", "obj", "assign", "codeBlock", "$dataValid", "schemaType", "wrong$DataType", "invalid$DataSchema", "st", "validateSchemaRef", "appl", "subschema", "nextContext", "schemaCxt", "toName", "ruleType", "cxt", "JSON_POINTER", "RELATIVE_JSON_POINTER", "$data", "dataLevel", "dataNames", "dataPathArr", "jsonPointer", "matches", "up", "errorMsg", "expr", "segments", "segment", "pointerType", "ValidationError", "__name", "errors", "exports", "resolve_1", "MissingRefError", "__name", "resolver", "baseId", "ref", "msg", "exports", "codegen_1", "validation_error_1", "names_1", "resolve_1", "util_1", "validate_1", "SchemaEnv", "__name", "env", "schema", "_a", "exports", "compileSchema", "sch", "_sch", "getCompilingSchema", "rootId", "es5", "lines", "ownProperties", "gen", "_ValidationError", "validateName", "schemaCxt", "sourceCode", "validateCode", "validate", "props", "items", "e", "resolveRef", "root", "baseId", "ref", "schOrFunc", "resolve", "schemaId", "inlineOrCompile", "schEnv", "sameSchemaEnv", "s1", "s2", "resolveSchema", "p", "refPath", "getJsonPointer", "id", "schOrRef", "schId", "PREVENT_SCOPE_CHANGE", "parsedRef", "part", "partSchema", "$ref", "require_data", "__commonJSMin", "exports", "module", "require_utils", "__commonJSMin", "exports", "module", "isUUID", "isIPv4", "stringArrayToHexStripped", "input", "acc", "code", "__name", "nonSimpleDomain", "consumeIsZone", "buffer", "consumeHextets", "address", "output", "hex", "getIPV6", "tokenCount", "endipv6Encountered", "endIpv6", "consume", "i", "cursor", "normalizeIPv6", "host", "findToken", "ipv6", "newHost", "escapedHost", "str", "token", "ind", "removeDotSegments", "path", "nextSlash", "len", "normalizeComponentEncoding", "component", "esc", "func", "recomposeAuthority", "uriTokens", "ipV6res", "require_schemes", "__commonJSMin", "exports", "module", "isUUID", "URN_REG", "supportedSchemeNames", "isValidSchemeName", "name", "__name", "wsIsSecure", "wsComponent", "httpParse", "component", "httpSerialize", "secure", "wsParse", "wsSerialize", "path", "query", "urnParse", "urnComponent", "options", "matches", "scheme", "urnScheme", "schemeHandler", "getSchemeHandler", "urnSerialize", "nid", "uriComponent", "nss", "urnuuidParse", "uuidComponent", "urnuuidSerialize", "http", "https", "ws", "wss", "urn", "urnuuid", "SCHEMES", "require_fast_uri", "__commonJSMin", "exports", "module", "normalizeIPv6", "removeDotSegments", "recomposeAuthority", "normalizeComponentEncoding", "isIPv4", "nonSimpleDomain", "SCHEMES", "getSchemeHandler", "normalize", "uri", "options", "serialize", "parse", "__name", "resolve", "baseURI", "relativeURI", "schemelessOptions", "resolved", "resolveComponent", "base", "relative", "skipNormalization", "target", "equal", "uriA", "uriB", "cmpts", "opts", "component", "uriTokens", "schemeHandler", "authority", "s", "URI_PARSE", "parsed", "isIP", "matches", "ipv6result", "e", "fastUri", "uri", "exports", "validate_1", "exports", "__name", "codegen_1", "validation_error_1", "ref_error_1", "rules_1", "compile_1", "codegen_2", "resolve_1", "dataType_1", "util_1", "$dataRefSchema", "uri_1", "defaultRegExp", "str", "flags", "META_IGNORE_OPTIONS", "EXT_SCOPE_NAMES", "removedOptions", "deprecatedOptions", "MAX_EXPRESSION", "requiredOptions", "o", "s", "_optz", "_a", "optimize", "regExp", "_c", "_b", "uriResolver", "_d", "_f", "_e", "_h", "_g", "_k", "_j", "_m", "_l", "_p", "_o", "_q", "_r", "_s", "_t", "_u", "_v", "_w", "_x", "_y", "_z", "_0", "Ajv", "opts", "es5", "lines", "getLogger", "formatOpt", "checkOptions", "getMetaSchemaOptions", "addInitialFormats", "addInitialKeywords", "addInitialSchemas", "$data", "meta", "schemaId", "_dataRefSchema", "schemaKeyRef", "data", "v", "valid", "schema", "_meta", "sch", "loadSchema", "runCompileAsync", "_schema", "loadMetaSchema", "_compileAsync", "$ref", "e", "checkLoaded", "loadMissingSchema", "ref", "missingRef", "_loadSchema", "p", "key", "_validateSchema", "id", "throwOrLogError", "$schema", "message", "keyRef", "getSchEnv", "root", "cacheKey", "definitions", "def", "kwdOrDef", "keyword", "checkKeyword", "kwd", "addRule", "keywordMetaschema", "definition", "k", "t", "rule", "RULES", "group", "i", "name", "format", "errors", "separator", "dataVar", "text", "msg", "metaSchema", "keywordsJsonPointers", "rules", "jsonPointer", "segments", "keywords", "seg", "schemaOrData", "schemas", "regex", "baseId", "validateSchema", "addSchema", "localRefs", "currentOpts", "checkOpts", "options", "log", "opt", "optsSchemas", "defs", "metaOpts", "noLogs", "logger", "KEYWORD_NAME", "dataType", "post", "ruleGroup", "addBeforeRule", "before", "_rule", "$dataRef", "def", "exports", "ref_error_1", "code_1", "codegen_1", "names_1", "compile_1", "util_1", "def", "cxt", "gen", "$ref", "it", "baseId", "env", "validateName", "opts", "self", "root", "callRootRef", "schOrEnv", "callValidate", "inlineRefSchema", "callRef", "rootName", "sch", "v", "getValidate", "schName", "valid", "schCxt", "__name", "exports", "$async", "allErrors", "passCxt", "callAsyncRef", "callSyncRef", "addEvaluatedFrom", "e", "addErrorsFrom", "source", "errs", "schEvaluated", "_a", "props", "items", "id_1", "ref_1", "core", "exports", "codegen_1", "ops", "KWDs", "error", "__name", "keyword", "schemaCode", "def", "cxt", "data", "exports", "codegen_1", "error", "__name", "schemaCode", "def", "cxt", "gen", "data", "it", "prec", "res", "invalid", "exports", "ucs2length", "str", "len", "length", "pos", "value", "__name", "exports", "codegen_1", "util_1", "ucs2length_1", "error", "keyword", "schemaCode", "comp", "__name", "def", "cxt", "data", "it", "op", "len", "exports", "code_1", "codegen_1", "error", "__name", "schemaCode", "def", "cxt", "data", "$data", "schema", "it", "u", "regExp", "exports", "codegen_1", "error", "keyword", "schemaCode", "comp", "__name", "def", "cxt", "data", "op", "exports", "code_1", "codegen_1", "util_1", "error", "__name", "missingProperty", "def", "cxt", "gen", "schema", "schemaCode", "data", "$data", "it", "opts", "useLoop", "allErrorsMode", "exitOnErrorMode", "props", "definedProperties", "requiredKey", "schemaPath", "msg", "loopAllRequired", "prop", "missing", "valid", "loopUntilMissing", "exports", "codegen_1", "error", "keyword", "schemaCode", "comp", "__name", "def", "cxt", "data", "op", "exports", "equal", "exports", "dataType_1", "codegen_1", "util_1", "equal_1", "error", "__name", "i", "j", "def", "cxt", "gen", "data", "$data", "schema", "parentSchema", "schemaCode", "it", "valid", "itemTypes", "validateUniqueItems", "canOptimize", "loopN", "loopN2", "t", "item", "wrongType", "indices", "eql", "outer", "exports", "codegen_1", "util_1", "equal_1", "error", "__name", "schemaCode", "def", "cxt", "gen", "data", "$data", "schema", "exports", "codegen_1", "util_1", "equal_1", "error", "__name", "schemaCode", "def", "cxt", "gen", "data", "$data", "schema", "it", "useLoop", "eql", "getEql", "valid", "loopEnum", "vSchema", "_x", "i", "equalCode", "v", "sch", "exports", "limitNumber_1", "multipleOf_1", "limitLength_1", "pattern_1", "limitProperties_1", "required_1", "limitItems_1", "uniqueItems_1", "const_1", "enum_1", "validation", "exports", "codegen_1", "util_1", "error", "__name", "len", "def", "cxt", "parentSchema", "it", "items", "validateAdditionalItems", "gen", "schema", "data", "keyword", "valid", "validateItems", "i", "exports", "codegen_1", "util_1", "code_1", "def", "cxt", "schema", "it", "validateTuple", "extraItems", "schArr", "gen", "parentSchema", "data", "keyword", "checkStrictTuple", "valid", "len", "sch", "i", "opts", "errSchemaPath", "l", "fullTuple", "msg", "__name", "exports", "items_1", "def", "__name", "cxt", "exports", "codegen_1", "util_1", "code_1", "additionalItems_1", "error", "__name", "len", "def", "cxt", "schema", "parentSchema", "it", "prefixItems", "exports", "codegen_1", "util_1", "error", "__name", "min", "max", "def", "cxt", "gen", "schema", "parentSchema", "data", "it", "minContains", "maxContains", "len", "cond", "valid", "validateItems", "validateItemsWithCount", "schValid", "count", "checkLimits", "_valid", "block", "i", "exports", "codegen_1", "util_1", "code_1", "exports", "__name", "property", "depsCount", "deps", "property_ies", "missingProperty", "def", "cxt", "propDeps", "schDeps", "splitDependencies", "validatePropertyDeps", "validateSchemaDeps", "schema", "propertyDeps", "schemaDeps", "key", "gen", "data", "it", "missing", "prop", "hasProperty", "depProp", "keyword", "valid", "schCxt", "codegen_1", "util_1", "error", "__name", "params", "def", "cxt", "gen", "schema", "data", "it", "valid", "key", "exports", "code_1", "codegen_1", "names_1", "util_1", "error", "__name", "params", "def", "cxt", "gen", "schema", "parentSchema", "data", "errsCount", "it", "allErrors", "opts", "props", "patProps", "checkAdditionalProperties", "key", "additionalPropertyCode", "isAdditional", "definedProp", "propsSchema", "p", "deleteAdditional", "valid", "applyAdditionalSchema", "errors", "subschema", "exports", "validate_1", "code_1", "util_1", "additionalProperties_1", "def", "cxt", "gen", "schema", "parentSchema", "data", "it", "allProps", "prop", "properties", "p", "valid", "hasDefault", "applyPropertySchema", "__name", "exports", "code_1", "codegen_1", "util_1", "util_2", "def", "cxt", "gen", "schema", "data", "parentSchema", "it", "opts", "patterns", "alwaysValidPatterns", "p", "checkProperties", "valid", "props", "validatePatternProperties", "pat", "checkMatchingProperties", "validateProperties", "__name", "prop", "key", "alwaysValid", "exports", "util_1", "def", "cxt", "gen", "schema", "it", "valid", "exports", "code_1", "def", "exports", "codegen_1", "util_1", "error", "__name", "params", "def", "cxt", "gen", "schema", "parentSchema", "it", "schArr", "valid", "passing", "schValid", "validateOneOf", "sch", "i", "schCxt", "exports", "util_1", "def", "cxt", "gen", "schema", "it", "valid", "sch", "i", "schCxt", "exports", "codegen_1", "util_1", "error", "__name", "params", "def", "cxt", "gen", "parentSchema", "it", "hasThen", "hasSchema", "hasElse", "valid", "schValid", "validateIf", "ifClause", "validateClause", "schCxt", "keyword", "schema", "exports", "util_1", "def", "keyword", "parentSchema", "it", "exports", "additionalItems_1", "prefixItems_1", "items_1", "items2020_1", "contains_1", "dependencies_1", "propertyNames_1", "additionalProperties_1", "properties_1", "patternProperties_1", "not_1", "anyOf_1", "oneOf_1", "allOf_1", "if_1", "thenElse_1", "getApplicator", "draft2020", "applicator", "__name", "exports", "codegen_1", "names_1", "compile_1", "ref_1", "def", "__name", "cxt", "dynamicAnchor", "anchor", "gen", "it", "v", "validate", "_getValidate", "exports", "schemaEnv", "schema", "self", "root", "baseId", "localRefs", "meta", "schemaId", "sch", "codegen_1", "names_1", "ref_1", "def", "__name", "cxt", "dynamicRef", "ref", "gen", "keyword", "it", "anchor", "_dynamicRef", "valid", "v", "_callRef", "validate", "exports", "dynamicAnchor_1", "util_1", "def", "cxt", "exports", "dynamicRef_1", "def", "__name", "cxt", "exports", "dynamicAnchor_1", "dynamicRef_1", "recursiveAnchor_1", "recursiveRef_1", "dynamic", "exports", "dependencies_1", "def", "__name", "cxt", "exports", "dependencies_1", "def", "__name", "cxt", "exports", "util_1", "def", "keyword", "parentSchema", "it", "exports", "dependentRequired_1", "dependentSchemas_1", "limitContains_1", "next", "exports", "codegen_1", "util_1", "names_1", "error", "__name", "params", "def", "cxt", "gen", "schema", "data", "errsCount", "it", "allErrors", "props", "key", "unevaluatedDynamic", "unevaluatedPropCode", "unevaluatedStatic", "valid", "evaluatedProps", "ps", "p", "exports", "codegen_1", "util_1", "error", "__name", "len", "def", "cxt", "gen", "schema", "data", "it", "items", "valid", "validateItems", "from", "i", "exports", "unevaluatedProperties_1", "unevaluatedItems_1", "unevaluated", "exports", "codegen_1", "error", "__name", "schemaCode", "def", "cxt", "ruleType", "gen", "data", "$data", "schema", "it", "opts", "errSchemaPath", "schemaEnv", "self", "validate$DataFormat", "validateFormat", "fmts", "fDef", "fType", "format", "unknownFmt", "invalidFmt", "callFormat", "validData", "formatDef", "unknownFormat", "fmtType", "fmtRef", "getFormat", "validCondition", "unknownMsg", "fmtDef", "code", "fmt", "exports", "format_1", "format", "exports", "exports", "core_1", "validation_1", "applicator_1", "dynamic_1", "next_1", "unevaluated_1", "format_1", "metadata_1", "draft2020Vocabularies", "exports", "DiscrError", "exports", "codegen_1", "types_1", "compile_1", "ref_error_1", "util_1", "error", "__name", "discrError", "tagName", "tag", "def", "cxt", "gen", "data", "schema", "parentSchema", "it", "oneOf", "valid", "validateMapping", "mapping", "getMapping", "tagValue", "applyTagSchema", "schemaProp", "_valid", "schCxt", "oneOfMapping", "topRequired", "hasRequired", "tagRequired", "i", "sch", "ref", "propSch", "_a", "addMappings", "required", "addMapping", "exports", "require_schema", "__commonJSMin", "exports", "module", "require_applicator", "__commonJSMin", "exports", "module", "require_unevaluated", "__commonJSMin", "exports", "module", "require_content", "__commonJSMin", "exports", "module", "require_core", "__commonJSMin", "exports", "module", "require_format_annotation", "__commonJSMin", "exports", "module", "require_meta_data", "__commonJSMin", "exports", "module", "require_validation", "__commonJSMin", "exports", "module", "metaSchema", "applicator", "unevaluated", "content", "core", "format", "metadata", "validation", "META_SUPPORT_DATA", "addMetaSchema2020", "$data", "with$data", "sch", "ajv", "__name", "exports", "core_1", "draft2020_1", "discriminator_1", "json_schema_2020_12_1", "META_SCHEMA_ID", "Ajv2020", "__name", "opts", "v", "$data", "meta", "exports", "module", "validate_1", "codegen_1", "validation_error_1", "ref_error_1", "require_reusify", "__commonJSMin", "exports", "module", "reusify", "Constructor", "head", "tail", "get", "current", "__name", "release", "obj", "require_queue", "__commonJSMin", "exports", "module", "reusify", "fastqueue", "context", "worker", "_concurrency", "cache", "Task", "queueHead", "queueTail", "_running", "errorHandler", "self", "push", "noop", "pause", "value", "release", "running", "resume", "idle", "length", "getQueue", "unshift", "kill", "killAndDrain", "error", "current", "counter", "tasks", "done", "holder", "next", "handler", "__name", "err", "result", "callback", "val", "queueAsPromised", "asyncWrapper", "arg", "cb", "res", "queue", "pushCb", "unshiftCb", "drained", "p", "resolve", "reject", "previousDrain", "require_comparators", "__commonJSMin", "exports", "DEFAULT_COMPARATOR", "__name", "a", "b", "DEFAULT_REVERSE_COMPARATOR", "reverseComparator", "comparator", "createTupleComparator", "size", "require_support", "__commonJSMin", "exports", "require_foreach", "__commonJSMin", "exports", "module", "support", "ARRAY_BUFFER_SUPPORT", "SYMBOL_SUPPORT", "__name", "iterable", "callback", "iterator", "k", "i", "l", "s", "require_fibonacci_heap", "__commonJSMin", "exports", "module", "comparators", "forEach", "DEFAULT_COMPARATOR", "reverseComparator", "FibonacciHeap", "comparator", "__name", "createNode", "item", "mergeWithRoot", "heap", "node", "consumeLinkedList", "head", "nodes", "flag", "removeFromRoot", "mergeWithChild", "parent", "link", "y", "x", "consolidate", "A", "l", "d", "t", "z", "proxy", "MaxFibonacciHeap", "iterable", "value", "require_typed_arrays", "__commonJSMin", "exports", "MAX_8BIT_INTEGER", "MAX_16BIT_INTEGER", "MAX_32BIT_INTEGER", "MAX_SIGNED_8BIT_INTEGER", "MAX_SIGNED_16BIT_INTEGER", "MAX_SIGNED_32BIT_INTEGER", "size", "maxIndex", "value", "TYPE_PRIORITY", "array", "getter", "maxType", "maxPriority", "p", "t", "v", "i", "l", "length", "o", "PointerArray", "require_iterables", "__commonJSMin", "exports", "forEach", "typed", "isArrayLike", "target", "__name", "guessLength", "toArray", "l", "array", "value", "toArrayWithIndices", "IndexArray", "indices", "i", "require_heap", "__commonJSMin", "exports", "module", "forEach", "comparators", "iterables", "DEFAULT_COMPARATOR", "reverseComparator", "siftDown", "compare", "heap", "startIndex", "item", "parentIndex", "parent", "__name", "siftUp", "i", "endIndex", "childIndex", "rightIndex", "push", "pop", "lastItem", "replace", "popped", "pushpop", "tmp", "heapify", "array", "l", "consume", "nsmallest", "n", "iterable", "reverseCompare", "v", "min", "result", "value", "size", "nlargest", "max", "Heap", "comparator", "proxy", "MaxHeap", "items", "require_suffix_array", "__commonJSMin", "exports", "module", "SEPARATOR", "sort", "string", "array", "offset", "l", "buckets", "i", "j", "b", "d", "bits", "__name", "compare", "lookup", "m", "n", "build", "a", "al", "bl", "r", "k", "result", "convert", "target", "length", "paddingOffset", "uniqueTokens", "alphabet", "sortedUniqueTokens", "SuffixArray", "GeneralizedSuffixArray", "strings", "lcs", "lcp", "s", "t", "require_iterator", "__commonJSMin", "exports", "module", "Iterator", "next", "__name", "args", "l", "i", "iterator", "sequence", "value", "require_vector", "__commonJSMin", "exports", "module", "Iterator", "forEach", "iterables", "typed", "DEFAULT_GROWING_POLICY", "__name", "currentCapacity", "pointerArrayFactory", "capacity", "PointerArray", "Vector", "ArrayClass", "initialCapacityOrOptions", "initialCapacity", "policy", "initialLength", "factory", "index", "value", "override", "newCapacity", "oldArray", "i", "l", "length", "items", "proxy", "iterable", "vector", "subClass", "SubClass", "k", "require_lru_cache", "__commonJSMin", "exports", "module", "Iterator", "forEach", "typed", "iterables", "LRUCache", "Keys", "Values", "capacity", "PointerArray", "__name", "pointer", "oldHead", "previous", "next", "key", "value", "oldValue", "oldKey", "callback", "scope", "i", "l", "keys", "values", "forward", "proxy", "iterator", "step", "iterable", "cache", "require_codes", "__commonJSMin", "exports", "module", "require_statuses", "__commonJSMin", "exports", "module", "codes", "status", "createMessageToStatusCodeMap", "createStatusCodeList", "map", "__name", "code", "message", "getStatusCode", "msg", "getStatusMessage", "n", "require_http_errors", "__commonJSMin", "exports", "module", "deprecate", "setPrototypeOf", "statuses", "inherits", "toIdentifier", "createError", "createHttpErrorConstructor", "createIsHttpErrorFunction", "populateConstructorExports", "codeClass", "status", "__name", "err", "msg", "props", "i", "arg", "type", "HttpError", "key", "createClientErrorConstructor", "name", "code", "className", "toClassName", "ClientError", "message", "nameFunc", "val", "createServerErrorConstructor", "ServerError", "func", "desc", "codes", "CodeError", "require_search_params", "__commonJSMin", "exports", "module", "URLSearchParams", "__name", "obj", "searchParams", "addKey", "k", "v", "params", "val", "key", "value", "lgth", "i", "str", "values", "require_db", "__commonJSMin", "exports", "module", "require_mime_db", "__commonJSMin", "exports", "module", "require_mimeScore", "__commonJSMin", "exports", "module", "FACET_SCORES", "SOURCE_SCORES", "TYPE_SCORES", "__name", "mimeType", "source", "type", "subtype", "facet", "facetScore", "sourceScore", "typeScore", "lengthScore", "require_mime_types", "__commonJSMin", "exports", "db", "extname", "mimeScore", "EXTRACT_TYPE_REGEXP", "TEXT_TYPE_REGEXP", "charset", "contentType", "extension", "lookup", "populateMaps", "type", "match", "mime", "__name", "str", "exts", "path", "extensions", "types", "i", "_preferredType", "legacyType", "_preferredTypeLegacy", "ext", "type0", "type1", "score0", "score1", "SOURCE_RANK", "require_media_typer", "__commonJSMin", "exports", "SUBTYPE_NAME_REGEXP", "TYPE_NAME_REGEXP", "TYPE_REGEXP", "format", "parse", "test", "obj", "subtype", "suffix", "type", "string", "__name", "match", "index", "MediaType", "require_type_is", "__commonJSMin", "exports", "module", "contentType", "mime", "typer", "typeofrequest", "typeis", "hasbody", "normalize", "mimeMatch", "value", "types_", "i", "types", "val", "tryNormalizeType", "type", "__name", "req", "expected", "actual", "actualParts", "expectedParts", "normalizeType", "require_only", "__commonJSMin", "exports", "module", "obj", "keys", "ret", "key", "require_request", "__commonJSMin", "exports", "module", "URL", "net", "accepts", "contentType", "stringify", "parse", "sp", "typeis", "fresh", "only", "util", "IP", "val", "path", "url", "str", "c", "obj", "host", "splitCommaSeparatedValues", "originalUrl", "method", "s", "parameters", "len", "proto", "proxy", "ips", "_ip", "offset", "hostname", "args", "type", "types", "field", "req", "value", "limit", "v", "__name", "require_is_stream", "__commonJSMin", "exports", "module", "Stream", "stream", "require_response", "__commonJSMin", "exports", "module", "assert", "extname", "util", "contentDisposition", "onFinish", "escape", "typeis", "statuses", "destroy", "encodeUrl", "vary", "getType", "isStream", "only", "res", "code", "msg", "val", "original", "cleanupPreviousStream", "__name", "setType", "headers", "key", "n", "body", "field", "url", "alt", "referrer", "filename", "options", "type", "date", "types", "header", "prev", "socket", "o", "require_context", "__commonJSMin", "exports", "module", "util", "createError", "httpAssert", "delegate", "statuses", "Cookies", "COOKIES", "proto", "args", "err", "headerSent", "res", "name", "statusCode", "code", "msg", "_cookies", "require_application", "__commonJSMin", "exports", "module", "util", "debug", "Emitter", "Stream", "http", "AsyncLocalStorage", "onFinished", "compose", "statuses", "HttpError", "request", "response", "context", "isStream", "only", "Application", "__name", "options", "args", "fn", "req", "res", "ctx", "fnMiddleware", "onerror", "err", "handleResponse", "respond", "msg", "body", "code", "length", "stream", "require_codes", "__commonJSMin", "exports", "module", "require_statuses", "__commonJSMin", "exports", "module", "codes", "status", "createMessageToStatusCodeMap", "createStatusCodeList", "map", "__name", "code", "message", "getStatusCode", "msg", "getStatusMessage", "n", "require_http_errors", "__commonJSMin", "exports", "module", "deprecate", "setPrototypeOf", "statuses", "inherits", "toIdentifier", "createError", "createHttpErrorConstructor", "createIsHttpErrorFunction", "populateConstructorExports", "codeClass", "status", "__name", "err", "msg", "props", "i", "arg", "type", "HttpError", "key", "createClientErrorConstructor", "name", "code", "className", "toClassName", "ClientError", "message", "nameFunc", "val", "createServerErrorConstructor", "ServerError", "func", "desc", "codes", "CodeError", "exports", "parse", "compile", "match", "pathToRegexp", "stringify", "DEFAULT_DELIMITER", "NOOP_VALUE", "__name", "value", "ID_START", "ID_CONTINUE", "SIMPLE_TOKENS", "escapeText", "str", "escape", "TokenData", "tokens", "originalPath", "PathError", "message", "text", "options", "encodePath", "chars", "index", "pos", "name", "quoteStart", "type", "consumeUntil", "endType", "output", "token", "path", "cur", "encode", "delimiter", "data", "fn", "tokensToFunction", "params", "missing", "encoders", "tokenToFunction", "result", "encoder", "extras", "encodeValue", "decode", "regexp", "keys", "decoders", "key", "input", "m", "i", "decoder", "end", "sensitive", "trailing", "flags", "sources", "pathsToArray", "flatten", "toRegExpSource", "pattern", "paths", "init", "p", "seq", "backtrack", "isSafeSegmentParam", "negate", "stringifyTokens", "isNameSafe", "isNextNameSafe", "first", "rest", "char", "require_bytes", "__commonJSMin", "exports", "module", "bytes", "format", "parse", "formatThousandsRegExp", "formatDecimalsRegExp", "map", "parseRegExp", "value", "options", "__name", "mag", "thousandsSeparator", "unitSeparator", "decimalPlaces", "fixedDecimals", "unit", "val", "str", "s", "i", "results", "floatValue", "require_safer", "__commonJSMin", "exports", "module", "buffer", "Buffer", "safer", "key", "Safer", "value", "encodingOrOffset", "length", "size", "fill", "encoding", "buf", "require_bom_handling", "__commonJSMin", "exports", "BOMChar", "PrependBOMWrapper", "encoder", "options", "__name", "str", "StripBOMWrapper", "decoder", "buf", "res", "require_merge_exports", "__commonJSMin", "exports", "module", "hasOwn", "mergeModules", "target", "key", "__name", "require_internal", "__commonJSMin", "exports", "module", "Buffer", "InternalCodec", "codecOptions", "iconv", "InternalEncoderBase64", "InternalEncoderUtf8", "InternalEncoderCesu8", "InternalDecoderCesu8", "__name", "InternalEncoder", "InternalDecoder", "StringDecoder", "options", "codec", "buf", "str", "completeQuads", "bufIdx", "charCode", "acc", "contBytes", "accBytes", "res", "i", "curByte", "require_utf32", "__commonJSMin", "exports", "Buffer", "Utf32Codec", "codecOptions", "iconv", "__name", "Utf32Encoder", "Utf32Decoder", "options", "codec", "str", "src", "dst", "write32", "offset", "i", "code", "isHighSurrogate", "isLowSurrogate", "codepoint", "buf", "isLE", "overflow", "badChar", "_writeCodepoint", "high", "Utf32AutoCodec", "Utf32AutoEncoder", "Utf32AutoDecoder", "encoding", "detectEncoding", "resStr", "trail", "bufs", "defaultEncoding", "b", "charsProcessed", "invalidLE", "invalidBE", "bmpCharsLE", "bmpCharsBE", "outerLoop", "j", "require_utf16", "__commonJSMin", "exports", "Buffer", "Utf16BECodec", "__name", "Utf16BEEncoder", "Utf16BEDecoder", "str", "buf", "i", "tmp", "buf2", "j", "Utf16Codec", "codecOptions", "iconv", "Utf16Encoder", "Utf16Decoder", "options", "codec", "encoding", "detectEncoding", "resStr", "trail", "bufs", "defaultEncoding", "b", "charsProcessed", "asciiCharsLE", "asciiCharsBE", "outerLoop", "require_utf7", "__commonJSMin", "exports", "Buffer", "Utf7Codec", "codecOptions", "iconv", "__name", "Utf7Encoder", "Utf7Decoder", "nonDirectChars", "options", "codec", "str", "chunk", "base64Regex", "base64Chars", "i", "plusChar", "minusChar", "andChar", "buf", "res", "lastI", "inBase64", "base64Accum", "b64str", "canBeDecoded", "Utf7IMAPCodec", "Utf7IMAPEncoder", "Utf7IMAPDecoder", "base64AccumIdx", "bufIdx", "uChar", "base64IMAPChars", "require_sbcs_codec", "__commonJSMin", "exports", "Buffer", "SBCSCodec", "codecOptions", "iconv", "asciiString", "encodeBuf", "__name", "SBCSEncoder", "SBCSDecoder", "options", "codec", "str", "buf", "i", "decodeBuf", "newBuf", "idx1", "idx2", "require_sbcs_data", "__commonJSMin", "exports", "module", "require_sbcs_data_generated", "__commonJSMin", "exports", "module", "require_dbcs_codec", "__commonJSMin", "exports", "Buffer", "DBCSCodec", "UNASSIGNED", "GB18030_CODE", "SEQ_START", "NODE_START", "UNASSIGNED_NODE", "DEF_CHAR", "i", "codecOptions", "iconv", "mappingTable", "commonThirdByteNodeIdx", "commonFourthByteNodeIdx", "firstByteNode", "secondByteNode", "j", "thirdByteNode", "k", "fourthByteNode", "l", "skipEncodeChars", "val", "uChar", "__name", "DBCSEncoder", "DBCSDecoder", "addr", "bytes", "node", "chunk", "curAddr", "writeTable", "part", "code", "codeTrail", "len", "seq", "m", "charCode", "uCode", "high", "dbcsCode", "bucket", "low", "oldVal", "nodeIdx", "prefix", "hasValues", "subNodeEmpty", "mbCode", "subNodeIdx", "newPrefix", "options", "codec", "str", "newBuf", "leadSurrogate", "seqObj", "nextChar", "resCode", "subtable", "idx", "findIdx", "buf", "prevBytes", "prevOffset", "seqStart", "curByte", "ptr", "uCodeLead", "ret", "bytesArr", "table", "r", "mid", "require_shiftjis", "__commonJSMin", "exports", "module", "require_eucjp", "__commonJSMin", "exports", "module", "require_cp936", "__commonJSMin", "exports", "module", "require_gbk_added", "__commonJSMin", "exports", "module", "require_gb18030_ranges", "__commonJSMin", "exports", "module", "require_cp949", "__commonJSMin", "exports", "module", "require_cp950", "__commonJSMin", "exports", "module", "require_big5_added", "__commonJSMin", "exports", "module", "require_dbcs_data", "__commonJSMin", "exports", "module", "__name", "require_encodings", "__commonJSMin", "exports", "module", "mergeModules", "modules", "i", "require_streams", "__commonJSMin", "exports", "module", "Buffer", "streamModule", "Transform", "IconvLiteEncoderStream", "conv", "options", "__name", "chunk", "encoding", "done", "res", "e", "cb", "chunks", "IconvLiteDecoderStream", "require_lib", "__commonJSMin", "exports", "module", "Buffer", "bomHandling", "mergeModules", "__name", "str", "encoding", "options", "encoder", "res", "trail", "buf", "decoder", "enc", "raw", "codecOptions", "codec", "codecDef", "key", "streamModule", "streams", "require_unpipe", "__commonJSMin", "exports", "module", "unpipe", "hasPipeDataListeners", "stream", "listeners", "i", "__name", "listener", "require_raw_body", "__commonJSMin", "exports", "module", "asyncHooks", "tryRequireAsyncHooks", "bytes", "createError", "iconv", "unpipe", "getRawBody", "ICONV_ENCODING_MESSAGE_REGEXP", "getDecoder", "encoding", "__name", "stream", "options", "callback", "done", "opts", "limit", "length", "readStream", "wrap", "resolve", "reject", "err", "buf", "halt", "complete", "sync", "state", "received", "decoder", "buffer", "onAborted", "cleanup", "onData", "onEnd", "args", "i", "invokeCallback", "chunk", "string", "fn", "res", "require_cors", "__commonJSMin", "exports", "module", "vary", "options", "__name", "ctx", "next", "requestOrigin", "origin", "credentials", "headersSet", "set", "key", "value", "err", "errHeadersSet", "varyWithOrigin", "allowHeaders", "require_jsesc", "__commonJSMin", "exports", "module", "object", "hasOwnProperty", "forOwn", "__name", "callback", "key", "extend", "destination", "source", "value", "forEach", "array", "length", "index", "fourHexEscape", "hex", "hexadecimal", "code", "lowercase", "toString", "isArray", "isBuffer", "isObject", "isString", "isNumber", "isBigInt", "isFunction", "isMap", "isSet", "singleEscapes", "regexSingleEscape", "regexDigit", "regexWhitespace", "escapeEverythingRegex", "escapeNonAsciiRegex", "jsesc", "argument", "options", "increaseIndentation", "oldIndent", "indent", "defaults", "json", "quote", "compact", "lowercaseHex", "inline1", "inline2", "newLine", "result", "isEmpty", "useBinNumbers", "useOctNumbers", "useDecNumbers", "useHexNumbers", "regex", "char", "pair", "lone", "quoteChar", "string", "first", "second", "codePoint", "require_codes", "__commonJSMin", "exports", "module", "require_statuses", "__commonJSMin", "exports", "module", "codes", "status", "createMessageToStatusCodeMap", "createStatusCodeList", "map", "__name", "code", "message", "getStatusCode", "msg", "getStatusMessage", "n", "require_http_errors", "__commonJSMin", "exports", "module", "deprecate", "setPrototypeOf", "statuses", "inherits", "toIdentifier", "createError", "createHttpErrorConstructor", "createIsHttpErrorFunction", "populateConstructorExports", "codeClass", "status", "__name", "err", "msg", "props", "i", "arg", "type", "HttpError", "key", "createClientErrorConstructor", "name", "code", "className", "toClassName", "ClientError", "message", "nameFunc", "val", "createServerErrorConstructor", "ServerError", "func", "desc", "codes", "CodeError", "exports", "parse", "compile", "match", "pathToRegexp", "stringify", "DEFAULT_DELIMITER", "NOOP_VALUE", "__name", "value", "ID_START", "ID_CONTINUE", "SIMPLE_TOKENS", "escapeText", "str", "escape", "TokenData", "tokens", "originalPath", "PathError", "message", "text", "options", "encodePath", "chars", "index", "pos", "name", "quoteStart", "type", "consumeUntil", "endType", "output", "token", "path", "cur", "encode", "delimiter", "data", "fn", "tokensToFunction", "params", "missing", "encoders", "tokenToFunction", "result", "encoder", "extras", "encodeValue", "decode", "regexp", "keys", "decoders", "key", "input", "m", "i", "decoder", "end", "sensitive", "trailing", "flags", "sources", "pathsToArray", "flatten", "toRegExpSource", "pattern", "paths", "init", "p", "seq", "backtrack", "isSafeSegmentParam", "negate", "stringifyTokens", "isNameSafe", "isNextNameSafe", "first", "rest", "char", "require_layer", "__commonJSMin", "exports", "module", "parseUrl", "formatUrl", "pathToRegexp", "compile", "parse", "__name", "path", "methods", "middleware", "opts", "method", "l", "i", "type", "regexp", "keys", "captures", "params", "len", "c", "safeDecodeURIComponent", "options", "args", "url", "toPath", "replaced", "tokens", "replace", "j", "token", "key", "value", "param", "fn", "stack", "ctx", "next", "names", "p", "x", "prefix", "text", "require_router", "__commonJSMin", "exports", "module", "http", "debug", "compose", "HttpError", "pathToRegexp", "Layer", "methods", "method", "Router", "_Router", "__name", "opts", "path", "args", "middleware", "router", "arrPaths", "p", "hasPath", "m", "cloneRouter", "j", "nestedLayer", "cloneLayer", "routerParams", "key", "keys", "routerPrefixHasParam", "prefix", "i", "dispatch", "ctx", "next", "matched", "matchedLayers", "mostSpecificLayer", "layerChain", "memo", "layer", "options", "implemented", "allowed", "route", "allowedArr", "name", "source", "destination", "code", "newOpts", "stack", "curPath", "param", "routes", "len", "layers", "input", "host", "require_media_typer", "__commonJSMin", "exports", "paramRegExp", "textRegExp", "tokenRegExp", "qescRegExp", "quoteRegExp", "subtypeNameRegExp", "typeNameRegExp", "typeRegExp", "format", "parse", "obj", "parameters", "subtype", "suffix", "type", "string", "param", "params", "i", "qstring", "__name", "getcontenttype", "index", "key", "match", "splitType", "value", "val", "str", "require_type_is", "__commonJSMin", "exports", "module", "typer", "mime", "typeofrequest", "typeis", "hasbody", "normalize", "mimeMatch", "value", "types_", "i", "types", "val", "tryNormalizeType", "type", "__name", "req", "expected", "actual", "actualParts", "expectedParts", "normalizeType", "require_bom_handling", "__commonJSMin", "exports", "BOMChar", "PrependBOMWrapper", "encoder", "options", "__name", "str", "StripBOMWrapper", "decoder", "buf", "res", "require_internal", "__commonJSMin", "exports", "module", "Buffer", "InternalCodec", "codecOptions", "iconv", "InternalEncoderBase64", "InternalEncoderCesu8", "InternalDecoderCesu8", "__name", "InternalEncoder", "InternalDecoder", "StringDecoder", "options", "codec", "str", "completeQuads", "buf", "bufIdx", "charCode", "acc", "contBytes", "accBytes", "res", "i", "curByte", "require_utf16", "__commonJSMin", "exports", "Buffer", "Utf16BECodec", "__name", "Utf16BEEncoder", "Utf16BEDecoder", "str", "buf", "i", "tmp", "buf2", "j", "Utf16Codec", "codecOptions", "iconv", "Utf16Encoder", "Utf16Decoder", "options", "codec", "encoding", "detectEncoding", "res", "trail", "defaultEncoding", "enc", "asciiCharsLE", "asciiCharsBE", "_len", "require_utf7", "__commonJSMin", "exports", "Buffer", "Utf7Codec", "codecOptions", "iconv", "__name", "Utf7Encoder", "Utf7Decoder", "nonDirectChars", "options", "codec", "str", "chunk", "base64Regex", "base64Chars", "i", "plusChar", "minusChar", "andChar", "buf", "res", "lastI", "inBase64", "base64Accum", "b64str", "canBeDecoded", "Utf7IMAPCodec", "Utf7IMAPEncoder", "Utf7IMAPDecoder", "base64AccumIdx", "bufIdx", "uChar", "base64IMAPChars", "require_sbcs_codec", "__commonJSMin", "exports", "Buffer", "SBCSCodec", "codecOptions", "iconv", "asciiString", "encodeBuf", "__name", "SBCSEncoder", "SBCSDecoder", "options", "codec", "str", "buf", "i", "decodeBuf", "newBuf", "idx1", "idx2", "require_sbcs_data", "__commonJSMin", "exports", "module", "require_sbcs_data_generated", "__commonJSMin", "exports", "module", "require_dbcs_codec", "__commonJSMin", "exports", "Buffer", "DBCSCodec", "UNASSIGNED", "GB18030_CODE", "SEQ_START", "NODE_START", "UNASSIGNED_NODE", "DEF_CHAR", "i", "codecOptions", "iconv", "mappingTable", "skipEncodeChars", "val", "j", "uChar", "thirdByteNodeIdx", "thirdByteNode", "fourthByteNodeIdx", "fourthByteNode", "secondByteNodeIdx", "secondByteNode", "__name", "DBCSEncoder", "DBCSDecoder", "addr", "bytes", "node", "chunk", "curAddr", "writeTable", "k", "part", "l", "code", "codeTrail", "len", "seq", "m", "charCode", "uCode", "high", "dbcsCode", "bucket", "low", "oldVal", "nodeIdx", "prefix", "mbCode", "options", "codec", "str", "newBuf", "leadSurrogate", "seqObj", "nextChar", "resCode", "subtable", "idx", "findIdx", "buf", "prevBuf", "prevBufOffset", "seqStart", "curByte", "curSeq", "ptr", "uCodeLead", "ret", "table", "r", "mid", "require_shiftjis", "__commonJSMin", "exports", "module", "require_eucjp", "__commonJSMin", "exports", "module", "require_cp936", "__commonJSMin", "exports", "module", "require_gbk_added", "__commonJSMin", "exports", "module", "require_gb18030_ranges", "__commonJSMin", "exports", "module", "require_cp949", "__commonJSMin", "exports", "module", "require_cp950", "__commonJSMin", "exports", "module", "require_big5_added", "__commonJSMin", "exports", "module", "require_dbcs_data", "__commonJSMin", "exports", "module", "__name", "require_encodings", "__commonJSMin", "exports", "module", "modules", "i", "enc", "require_streams", "__commonJSMin", "exports", "module", "Buffer", "Transform", "iconv", "__name", "encoding", "options", "IconvLiteEncoderStream", "IconvLiteDecoderStream", "conv", "chunk", "done", "res", "e", "cb", "chunks", "require_extend_node", "__commonJSMin", "exports", "module", "Buffer", "iconv", "original", "__name", "nodeNativeEncodings", "enc", "SlowBuffer", "encoding", "start", "end", "string", "offset", "length", "swap", "remaining", "buf", "str", "_offset", "_length", "_encoding", "Readable", "options", "require_lib", "__commonJSMin", "exports", "module", "Buffer", "bomHandling", "iconv", "__name", "str", "encoding", "options", "encoder", "res", "trail", "buf", "decoder", "enc", "codecOptions", "codec", "codecDef", "key", "nodeVer", "nodeVerArr", "require_raw_body", "__commonJSMin", "exports", "module", "asyncHooks", "tryRequireAsyncHooks", "bytes", "createError", "iconv", "unpipe", "getRawBody", "ICONV_ENCODING_MESSAGE_REGEXP", "getDecoder", "encoding", "__name", "stream", "options", "callback", "done", "opts", "limit", "length", "readStream", "wrap", "resolve", "reject", "err", "buf", "halt", "complete", "sync", "state", "received", "decoder", "buffer", "onAborted", "cleanup", "onData", "onEnd", "args", "i", "invokeCallback", "chunk", "string", "fn", "res", "require_inflation", "__commonJSMin", "exports", "module", "zlib", "inflate", "stream", "options", "encoding", "decompression", "err", "__name", "require_lib", "__commonJSMin", "exports", "internals", "text", "args", "firstOptions", "reviver", "options", "obj", "next", "nodes", "node", "key", "value", "require_utils", "__commonJSMin", "exports", "opts", "options", "key", "require_json", "__commonJSMin", "exports", "module", "raw", "inflate", "bourne", "utils", "strictJSONReg", "req", "opts", "len", "encoding", "strict", "protoAction", "str", "parsed", "parse", "err", "__name", "require_formats", "__commonJSMin", "exports", "module", "replace", "percentTwenties", "Format", "__name", "value", "require_utils", "__commonJSMin", "exports", "module", "formats", "has", "isArray", "hexTable", "array", "i", "compactQueue", "__name", "queue", "item", "obj", "compacted", "j", "arrayToObject", "source", "options", "merge", "target", "mergeTarget", "targetItem", "acc", "key", "value", "assign", "decode", "str", "decoder", "charset", "strWithoutPlus", "limit", "encode", "defaultEncoder", "kind", "format", "string", "$0", "out", "segment", "arr", "c", "compact", "refs", "keys", "val", "isRegExp", "isBuffer", "combine", "a", "b", "maybeMap", "fn", "mapped", "require_stringify", "__commonJSMin", "exports", "module", "getSideChannel", "utils", "formats", "has", "arrayPrefixGenerators", "__name", "prefix", "key", "isArray", "push", "pushToArray", "arr", "valueOrArray", "toISO", "defaultFormat", "defaults", "date", "isNonNullishPrimitive", "v", "sentinel", "stringify", "object", "generateArrayPrefix", "commaRoundTrip", "allowEmptyArrays", "strictNullHandling", "skipNulls", "encodeDotInKeys", "encoder", "filter", "sort", "allowDots", "serializeDate", "format", "formatter", "encodeValuesOnly", "charset", "sideChannel", "obj", "tmpSc", "step", "findFlag", "pos", "value", "keyValue", "values", "objKeys", "keys", "encodedPrefix", "adjustedPrefix", "j", "encodedKey", "keyPrefix", "valueSideChannel", "normalizeStringifyOptions", "opts", "arrayFormat", "options", "i", "joined", "require_parse", "__commonJSMin", "exports", "module", "utils", "has", "isArray", "defaults", "interpretNumericEntities", "__name", "str", "$0", "numberStr", "parseArrayValue", "val", "options", "isoSentinel", "charsetSentinel", "parseValues", "obj", "cleanStr", "limit", "parts", "skipIndex", "i", "charset", "part", "bracketEqualsPos", "pos", "key", "encodedVal", "existing", "parseObject", "chain", "valuesParsed", "leaf", "root", "cleanRoot", "decodedRoot", "index", "parseKeys", "givenKey", "brackets", "child", "segment", "parent", "keys", "normalizeParseOptions", "opts", "duplicates", "allowDots", "tempObj", "newObj", "require_lib", "__commonJSMin", "exports", "module", "stringify", "parse", "formats", "require_form", "__commonJSMin", "exports", "module", "raw", "inflate", "qs", "utils", "req", "opts", "queryString", "len", "encoding", "str", "parsed", "err", "require_text", "__commonJSMin", "exports", "module", "raw", "inflate", "utils", "req", "opts", "len", "encoding", "str", "require_any", "__commonJSMin", "exports", "module", "typeis", "json", "form", "text", "jsonTypes", "formTypes", "textTypes", "req", "opts", "jsonType", "formType", "textType", "type", "message", "err", "require_co_body", "__commonJSMin", "exports", "module", "exports", "add", "fromBig", "split", "U32_MASK64", "_32n", "n", "le", "__name", "lst", "len", "Ah", "Al", "i", "h", "l", "toBig", "shrSH", "_l", "s", "shrSL", "rotrSH", "rotrSL", "rotrBH", "rotrBL", "rotr32H", "_h", "rotr32L", "rotlSH", "rotlSL", "rotlBH", "rotlBL", "Bh", "Bl", "add3L", "Cl", "add3H", "low", "Ch", "add4L", "Dl", "add4H", "Dh", "add5L", "El", "add5H", "Eh", "u64", "nc", "exports", "exports", "isBytes", "anumber", "abytes", "ahash", "aexists", "aoutput", "u8", "u32", "clean", "createView", "rotr", "rotl", "byteSwap", "byteSwap32", "bytesToHex", "hexToBytes", "asyncLoop", "utf8ToBytes", "bytesToUtf8", "toBytes", "kdfInputToBytes", "concatBytes", "checkOpts", "createHasher", "createOptHasher", "createXOFer", "randomBytes", "crypto_1", "a", "__name", "n", "b", "lengths", "h", "instance", "checkFinished", "out", "min", "arr", "arrays", "i", "word", "shift", "u", "hasHexBuiltin", "hexes", "_", "bytes", "hex", "asciis", "asciiToBase16", "ch", "hl", "al", "array", "ai", "hi", "n1", "n2", "char", "nextTick", "iters", "tick", "cb", "ts", "diff", "str", "data", "sum", "res", "pad", "defaults", "opts", "Hash", "hashCons", "hashC", "msg", "tmp", "bytesLength", "exports", "keccakP", "_u64_ts_1", "utils_ts_1", "_0n", "_1n", "_2n", "_7n", "_256n", "_0x71n", "SHA3_PI", "SHA3_ROTL", "_SHA3_IOTA", "round", "R", "x", "y", "t", "j", "IOTAS", "SHA3_IOTA_H", "SHA3_IOTA_L", "rotlH", "__name", "h", "l", "s", "rotlL", "rounds", "B", "idx1", "idx0", "B0", "B1", "Th", "Tl", "curH", "curL", "shift", "PI", "Keccak", "_Keccak", "blockLen", "suffix", "outputLen", "enableXOF", "data", "state", "len", "pos", "take", "i", "out", "bufferOut", "bytes", "to", "gen", "genShake", "opts", "require_src", "__commonJSMin", "exports", "module", "sha3", "defaultLength", "bigLength", "createEntropy", "__name", "length", "random", "entropy", "bufToBigInt", "buf", "bits", "value", "bi", "hash", "input", "alphabet", "x", "i", "randomLetter", "createFingerprint", "globalObj", "globals", "sourceString", "createCounter", "count", "initialCountMax", "init", "counter", "fingerprint", "firstLetter", "time", "salt", "hashInput", "createId", "isCuid", "id", "minLength", "maxLength", "regex", "require_cuid2", "__commonJSMin", "exports", "module", "createId", "init", "getConstants", "isCuid", "require_wrappy", "__commonJSMin", "exports", "module", "wrappy", "fn", "cb", "k", "wrapper", "args", "i", "ret", "__name", "require_dezalgo", "__commonJSMin", "exports", "module", "wrappy", "dezalgo", "asap", "cb", "sync", "__name", "args", "me", "require_once", "__commonJSMin", "exports", "module", "wrappy", "once", "onceStrict", "__name", "fn", "f", "name", "escape", "badChars", "possible", "escapeChar", "chr", "__name", "extend", "obj", "i", "key", "toString", "isFunction", "value", "exports", "isArray", "indexOf", "array", "len", "escapeExpression", "string", "isEmpty", "createFrame", "object", "frame", "blockParams", "params", "ids", "appendContextPath", "contextPath", "id", "errorProps", "Exception", "message", "node", "loc", "line", "endLineNumber", "column", "endColumn", "tmp", "idx", "__name", "instance", "context", "options", "inverse", "fn", "_utils", "data", "instance", "context", "options", "_exception2", "fn", "inverse", "i", "ret", "data", "contextPath", "_utils", "execIteration", "field", "index", "last", "__name", "j", "newContext", "iterator", "it", "priorKey", "key", "instance", "_exception2", "instance", "conditional", "options", "_exception2", "_utils", "instance", "args", "options", "level", "instance", "obj", "field", "options", "instance", "context", "options", "_exception2", "_utils", "fn", "data", "registerDefaultHelpers", "instance", "_helpersBlockHelperMissing2", "_helpersEach2", "_helpersHelperMissing2", "_helpersIf2", "_helpersLog2", "_helpersLookup2", "_helpersWith2", "__name", "moveHelperToHooks", "helperName", "keepHelper", "instance", "fn", "props", "container", "options", "ret", "__name", "context", "original", "_utils", "registerDefaultDecorators", "instance", "_decoratorsInline2", "__name", "logger", "__name", "level", "levelMap", "_utils", "method", "message", "_len", "_key", "createNewLookupObject", "sources", "_len", "_key", "_utils", "__name", "loggedProperties", "createProtoAccessControl", "runtimeOptions", "defaultMethodWhiteList", "defaultPropertyWhiteList", "_createNewLookupObject", "__name", "resultIsAllowed", "result", "protoAccessControl", "propertyName", "checkWhiteList", "protoAccessControlForType", "logUnexpecedPropertyAccessOnce", "_logger2", "resetLoggedProperties", "VERSION", "COMPILER_REVISION", "LAST_COMPATIBLE_COMPILER_REVISION", "REVISION_CHANGES", "objectType", "HandlebarsEnvironment", "helpers", "partials", "decorators", "_helpers", "_decorators", "__name", "_logger2", "name", "fn", "_utils", "_exception2", "partial", "_internalProtoAccess", "log", "SafeString", "string", "__name", "wrapHelper", "helper", "transformOptionsFn", "wrapper", "__name", "options", "Utils", "_interopRequireWildcard", "_utils", "checkRevision", "compilerInfo", "compilerRevision", "currentRevision", "_base", "runtimeVersions", "compilerVersions", "_exception2", "__name", "template", "templateSpec", "env", "templateWasPrecompiledWithCompilerV7", "invokePartialWrapper", "partial", "context", "options", "extendedOptions", "result", "lines", "i", "l", "container", "obj", "name", "loc", "parent", "propertyName", "_internalProtoAccess", "depths", "len", "current", "ret", "data", "declaredBlockParams", "blockParams", "programWrapper", "fn", "wrapProgram", "value", "depth", "param", "common", "initData", "main", "executeDecorators", "mergedHelpers", "wrapHelpersToPassLookupProperty", "keepHelperInHelpers", "_helpers", "prog", "currentDepths", "resolvePartial", "invokePartial", "currentPartialBlock", "partialBlock", "noop", "props", "helperName", "helper", "passLookupPropertyOption", "lookupProperty", "_internalWrapHelper", "Handlebars", "$Handlebars", "base", "_interopRequireWildcard", "_handlebarsBase", "Utils", "_handlebarsUtils", "runtime", "_handlebarsRuntime", "create", "hb", "_handlebarsSafeString2", "_handlebarsException2", "spec", "__name", "inst", "_handlebarsNoConflict2", "AST", "__name", "node", "path", "handlebars", "parser", "__name", "yytext", "yyleng", "yylineno", "yy", "yystate", "$$", "_$", "$0", "inverse", "program", "str", "hash", "input", "self", "stack", "vstack", "lstack", "table", "recovering", "TERROR", "EOF", "yyloc", "ranges", "popStack", "n", "lex", "token", "symbol", "preErrorSymbol", "state", "action", "a", "r", "yyval", "p", "len", "newState", "expected", "errStr", "lexer", "ch", "lines", "oldLines", "past", "next", "pre", "c", "match", "tempMatch", "index", "col", "rules", "i", "condition", "yy_", "$avoiding_name_collisions", "YY_START", "strip", "start", "end", "YYSTATE", "Parser", "exports", "Visitor", "__name", "node", "name", "value", "_exception2", "array", "i", "l", "object", "ret", "program", "visitSubExpression", "visitBlock", "visitPartial", "partial", "hash", "pair", "mustache", "block", "WhitespaceControl", "options", "__name", "_visitor2", "program", "doStandalone", "isRoot", "body", "i", "l", "current", "strip", "_isPrevWhitespace", "isPrevWhitespace", "_isNextWhitespace", "isNextWhitespace", "openStandalone", "closeStandalone", "inlineStandalone", "omitRight", "omitLeft", "block", "inverse", "firstInverse", "lastInverse", "inverseStrip", "mustache", "node", "prev", "sibling", "next", "multiple", "original", "validateClose", "open", "close", "errorNode", "_exception2", "__name", "SourceLocation", "source", "locInfo", "id", "token", "stripFlags", "stripComment", "comment", "preparePath", "data", "parts", "loc", "original", "dig", "depth", "i", "l", "part", "isLiteral", "prepareMustache", "path", "params", "hash", "strip", "escapeFlag", "escaped", "decorator", "prepareRawBlock", "openRawBlock", "contents", "program", "prepareBlock", "openBlock", "inverseAndProgram", "inverted", "inverse", "inverseStrip", "prepareProgram", "statements", "firstLoc", "lastLoc", "preparePartialBlock", "Helpers", "_interopRequireWildcard", "_helpers", "_parser2", "yy", "_utils", "parseWithoutProcessing", "input", "options", "locInfo", "ast", "__name", "parse", "strip", "_whitespaceControl2", "slice", "Compiler", "__name", "other", "len", "opcode", "otherOpcode", "argEquals", "program", "options", "_utils", "childCompiler", "result", "guid", "node", "_exception2", "ret", "body", "bodyLength", "i", "block", "transformLiteralToPath", "inverse", "type", "decorator", "params", "path", "partial", "partialName", "isDynamic", "indent", "partialBlock", "mustache", "content", "sexpr", "name", "isBlock", "_ast2", "scoped", "blockParamId", "string", "number", "bool", "hash", "pairs", "l", "depth", "isSimple", "isBlockParam", "isHelper", "isEligible", "_name", "val", "value", "blockParamIndex", "blockParamChild", "omitEmpty", "blockParams", "param", "precompile", "input", "env", "ast", "environment", "compile", "compiled", "compileInput", "templateSpec", "context", "execOptions", "setupOptions", "data", "depths", "a", "b", "literal", "SourceNode", "SourceMap", "__name", "line", "column", "srcFile", "chunks", "_utils", "castChunk", "chunk", "codeGen", "loc", "ret", "i", "len", "CodeGen", "source", "iter", "fn", "type", "params", "str", "obj", "pairs", "key", "value", "_this", "entries", "Literal", "value", "__name", "JavaScriptCompiler", "parent", "name", "revision", "_base", "versions", "source", "location", "explicit", "_utils", "environment", "options", "context", "asObject", "opcodes", "opcode", "firstLoc", "i", "_exception2", "fn", "ret", "programs", "_context", "decorators", "_codeGen2", "varDeclarations", "locals", "aliasCount", "alias", "node", "_this", "params", "isSimple", "appendOnly", "appendFirst", "sourceSeen", "bufferStart", "bufferEnd", "line", "blockHelperMissing", "blockName", "current", "content", "local", "depth", "parts", "falsy", "strict", "scoped", "blockParamId", "type", "strictLookup", "len", "lookup", "_this2", "string", "omitEmpty", "hash", "guid", "paramSize", "foundDecorator", "nonHelper", "helper", "possibleFunctionCalls", "functionLookupCode", "functionCall", "items", "separator", "result", "helperCall", "helperName", "isDynamic", "indent", "key", "id", "child", "children", "compiler", "l", "existing", "index", "programParams", "expr", "item", "callback", "prefix", "stack", "createdStack", "usedLiteral", "top", "_name", "inlineStack", "entry", "wrapped", "inline", "str", "obj", "blockHelper", "paramsInit", "foundHelper", "callContext", "contexts", "types", "ids", "objectArgs", "param", "inverse", "program", "useRegister", "reservedWords", "compilerWords", "requireTerminal", "_create", "_handlebarsRuntime2", "create", "hb", "input", "options", "_handlebarsCompilerCompiler", "_handlebarsCompilerAst2", "_handlebarsCompilerJavascriptCompiler2", "_handlebarsCompilerBase", "__name", "inst", "_handlebarsNoConflict2", "_handlebarsCompilerVisitor2", "print", "ast", "PrintVisitor", "__name", "_visitor2", "string", "out", "i", "l", "program", "body", "blockParams", "mustache", "block", "partial", "content", "comment", "sexpr", "params", "paramStrings", "hash", "id", "path", "number", "bool", "pairs", "joinedPairs", "pair", "require_lib", "__commonJSMin", "exports", "module", "handlebars", "printer", "extension", "filename", "fs", "templateString", "__name", "require_is", "__commonJSMin", "exports", "module", "regexes", "not", "func", "__name", "existy", "value", "ip", "object", "string", "is", "require_lib", "__commonJSMin", "exports", "module", "_typeof", "obj", "__name", "is", "getClientIpFromXForwardedFor", "value", "forwardedIps", "e", "ip", "splitted", "i", "getClientIp", "req", "xForwardedFor", "mw", "options", "configuration", "attributeName", "res", "next", "wire_1", "auth_1", "locale_1", "meta_1", "options_1", "resource_base_1", "status_1", "exports", "createBaseDeleted", "__name", "message", "writer", "input", "length", "reader", "end", "tag", "object", "isSet", "obj", "base", "createBaseCountryList", "v", "el", "e", "createBaseCountryListResponse", "createBaseCountryResponse", "createBaseCountry", "createBaseCountry_LocaleName", "value", "wire_1", "auth_1", "country_1", "meta_1", "options_1", "resource_base_1", "status_1", "exports", "createBaseDeleted", "__name", "message", "writer", "input", "length", "reader", "end", "tag", "object", "isSet", "obj", "base", "createBaseAddressList", "v", "el", "e", "createBaseAddressListResponse", "createBaseAddressResponse", "createBaseGeoPoint", "createBaseAddressAddition", "createBaseBusinessAddress", "createBaseResidentialAddress", "createBasePackStation", "createBaseAddress", "createBaseContact", "createBaseShippingAddress", "createBaseBillingAddress", "value", "exports", "symbolAlignmentFromJSON", "symbolAlignmentToJSON", "symbolAlignmentToNumber", "wire_1", "timestamp_1", "auth_1", "meta_1", "options_1", "resource_base_1", "status_1", "SymbolAlignment", "object", "__name", "createBaseCurrencyList", "message", "writer", "v", "input", "length", "reader", "end", "tag", "el", "isSet", "obj", "e", "base", "createBaseCurrencyListResponse", "createBaseCurrencyResponse", "createBaseCurrency", "createBaseExchangeRate", "value", "wire_1", "auth_1", "meta_1", "options_1", "resource_base_1", "status_1", "exports", "createBaseDeleted", "__name", "message", "writer", "input", "length", "reader", "end", "tag", "object", "isSet", "obj", "base", "createBaseTaxTypeList", "v", "el", "e", "createBaseTaxTypeListResponse", "createBaseTaxTypeResponse", "createBaseTaxType", "value", "exports", "roundModeFromJSON", "roundModeToJSON", "roundModeToNumber", "wire_1", "auth_1", "country_1", "meta_1", "options_1", "resource_base_1", "status_1", "tax_type_1", "RoundMode", "object", "__name", "createBaseTaxList", "message", "writer", "v", "input", "length", "reader", "end", "tag", "el", "isSet", "obj", "e", "base", "createBaseTaxListResponse", "createBaseTaxResponse", "createBaseTax", "value", "wire_1", "currency_1", "options_1", "tax_1", "exports", "createBaseVAT", "__name", "message", "writer", "input", "length", "reader", "end", "tag", "object", "isSet", "obj", "base", "createBaseAmount", "v", "el", "e", "value", "wire_1", "auth_1", "meta_1", "options_1", "resource_base_1", "status_1", "exports", "createBaseDeleted", "__name", "message", "writer", "input", "length", "reader", "end", "tag", "object", "isSet", "obj", "base", "createBaseContactPointTypeList", "v", "el", "e", "createBaseContactPointType", "createBaseContactPointTypeListResponse", "createBaseContactPointTypeResponse", "value", "wire_1", "address_1", "auth_1", "contact_point_type_1", "locale_1", "meta_1", "options_1", "resource_base_1", "status_1", "timezone_1", "exports", "createBaseDeleted", "__name", "message", "writer", "input", "length", "reader", "end", "tag", "object", "isSet", "obj", "base", "createBaseContactPointList", "v", "el", "e", "createBaseContactPointListResponse", "createBaseContactPointResponse", "createBaseContactPoint", "value", "exports", "paymentMethodEnumFromJSON", "paymentMethodEnumToJSON", "paymentMethodEnumToNumber", "transferTypeEnumFromJSON", "transferTypeEnumToJSON", "transferTypeEnumToNumber", "wire_1", "any_1", "auth_1", "meta_1", "resource_base_1", "status_1", "PaymentMethodEnum", "object", "__name", "TransferTypeEnum", "createBaseDeleted", "message", "writer", "input", "length", "reader", "end", "tag", "isSet", "obj", "base", "createBasePaymentMethodList", "v", "el", "e", "createBasePaymentMethodListResponse", "createBasePaymentMethodResponse", "createBasePaymentMethod", "value", "wire_1", "any_1", "address_1", "auth_1", "contact_point_1", "image_1", "meta_1", "options_1", "payment_method_1", "resource_base_1", "status_1", "exports", "createBaseDeleted", "__name", "message", "writer", "input", "length", "reader", "end", "tag", "object", "isSet", "obj", "base", "createBaseDeleteOrgData", "v", "el", "e", "createBaseOrganizationList", "createBaseOrganizationListResponse", "createBaseOrganizationResponse", "createBaseOrganization", "value", "wire_1", "attribute_1", "auth_1", "meta_1", "options_1", "resource_base_1", "status_1", "exports", "createBaseSetting", "__name", "message", "writer", "v", "input", "length", "reader", "end", "tag", "el", "object", "isSet", "obj", "e", "base", "createBaseSettingList", "createBaseSettingListResponse", "createBaseSettingResponse", "value", "exports", "customerTypeFromJSON", "customerTypeToJSON", "customerTypeToNumber", "wire_1", "auth_1", "contact_point_1", "meta_1", "options_1", "organization_1", "resource_base_1", "setting_1", "status_1", "user_1", "CustomerType", "object", "__name", "createBaseCustomerList", "message", "writer", "v", "input", "length", "reader", "end", "tag", "el", "isSet", "obj", "e", "base", "createBaseCustomerListResponse", "createBaseCustomerResponse", "createBaseCustomer", "createBasePrivate", "createBaseCommercial", "createBasePublicSector", "value", "wire_1", "image_1", "exports", "createBaseFile", "__name", "message", "writer", "v", "input", "length", "reader", "end", "tag", "longToNumber", "el", "object", "isSet", "bytesFromBase64", "obj", "base64FromBytes", "base", "e", "createBaseFileList", "b64", "arr", "int64", "num", "value", "wire_1", "currency_1", "options_1", "exports", "createBasePrice", "__name", "message", "writer", "input", "length", "reader", "end", "tag", "object", "isSet", "obj", "base", "value", "wire_1", "options_1", "exports", "createBaseVector3D", "__name", "message", "writer", "input", "length", "reader", "end", "tag", "object", "isSet", "obj", "base", "createBaseBoundingBox3D", "createBaseOriginBoundingBox", "value", "wire_1", "auth_1", "meta_1", "options_1", "resource_base_1", "status_1", "exports", "createBaseManufacturer", "__name", "message", "writer", "input", "length", "reader", "end", "tag", "object", "isSet", "obj", "base", "createBaseManufacturerList", "v", "el", "e", "createBaseManufacturerListResponse", "createBaseManufacturerResponse", "createBaseDeleted", "value", "wire_1", "auth_1", "meta_1", "options_1", "resource_base_1", "status_1", "exports", "createBasePriceGroup", "__name", "message", "writer", "input", "length", "reader", "end", "tag", "object", "isSet", "obj", "base", "createBasePriceGroupList", "v", "el", "e", "createBasePriceGroupListResponse", "createBasePriceGroupResponse", "createBaseDeleted", "value", "wire_1", "auth_1", "image_1", "meta_1", "options_1", "price_group_1", "resource_base_1", "status_1", "exports", "createBaseProductCategory", "__name", "message", "writer", "input", "length", "reader", "end", "tag", "object", "isSet", "obj", "base", "createBaseProductCategoryList", "v", "el", "e", "createBaseProductCategoryListResponse", "createBaseProductCategoryResponse", "createBaseDeleted", "createBaseParent", "value", "wire_1", "auth_1", "meta_1", "options_1", "product_category_1", "resource_base_1", "status_1", "exports", "createBaseProductPrototype", "__name", "message", "writer", "input", "length", "reader", "end", "tag", "object", "isSet", "obj", "base", "createBaseProductPrototypeList", "v", "el", "e", "createBaseProductPrototypeListResponse", "createBaseProductPrototypeResponse", "createBaseDeleted", "value", "wire_1", "exports", "createBaseProperty", "__name", "message", "writer", "input", "length", "reader", "end", "tag", "object", "isSet", "obj", "base", "createBasePropertyObj", "value", "wire_1", "address_1", "attribute_1", "auth_1", "contact_point_1", "meta_1", "options_1", "organization_1", "resource_base_1", "setting_1", "status_1", "exports", "createBaseShopList", "__name", "message", "writer", "v", "input", "length", "reader", "end", "tag", "el", "object", "isSet", "obj", "e", "base", "createBaseShopListResponse", "createBaseShopResponse", "createBaseShop", "value", "exports", "associationTypeFromJSON", "associationTypeToJSON", "associationTypeToNumber", "wire_1", "any_1", "timestamp_1", "attribute_1", "auth_1", "file_1", "geometry_1", "image_1", "manufacturer_1", "meta_1", "options_1", "price_1", "product_category_1", "product_prototype_1", "property_1", "resource_base_1", "shop_1", "status_1", "tax_1", "AssociationType", "object", "__name", "createBaseAssociation", "message", "writer", "v", "input", "length", "reader", "end", "tag", "el", "isSet", "obj", "e", "base", "createBaseProduct", "createBaseIndividualProduct", "createBasePhysicalProduct", "createBaseServiceProduct", "createBaseVirtualProduct", "createBaseProductList", "createBaseProductListResponse", "createBaseProductResponse", "createBasePackage", "createBasePhysicalVariant", "toTimestamp", "fromTimestamp", "fromJsonTimestamp", "createBaseServiceVariant", "createBaseVirtualVariant", "createBaseBundle", "createBaseBundleProduct", "createBaseSession", "createBaseIndividualProductVariantRequest", "createBaseIndividualProductVariantRequest_Localization", "createBaseIndividualProductVariantListRequest", "createBaseIndividualProductVariant", "createBaseIndividualProductVariantResponse", "createBaseIndividualProductVariantListResponse", "date", "seconds", "nanos", "millis", "o", "value", "wire_1", "exports", "createBaseReference", "__name", "message", "writer", "input", "length", "reader", "end", "tag", "object", "isSet", "obj", "base", "value", "exports", "paymentStateFromJSON", "paymentStateToJSON", "paymentStateToNumber", "wire_1", "any_1", "timestamp_1", "address_1", "amount_1", "attribute_1", "auth_1", "customer_1", "file_1", "meta_1", "options_1", "organization_1", "price_1", "product_1", "property_1", "reference_1", "resource_base_1", "shop_1", "status_1", "user_1", "PaymentState", "object", "__name", "createBaseRequestInvoiceNumber", "message", "writer", "input", "length", "reader", "end", "tag", "isSet", "obj", "base", "createBaseInvoiceNumberResponse", "createBaseDeleted", "createBaseInvoiceList", "v", "el", "e", "createBaseInvoiceListResponse", "createBaseInvoiceResponse", "createBaseInvoiceId", "createBaseInvoiceIdList", "createBaseInvoice", "toTimestamp", "fromTimestamp", "fromJsonTimestamp", "createBaseSection", "createBasePosition", "createBaseProductItem", "createBaseFulfillmentItem", "createBaseManualItem", "date", "seconds", "nanos", "millis", "o", "value", "exports", "fulfillmentStateFromJSON", "fulfillmentStateToJSON", "fulfillmentStateToNumber", "exportTypeFromJSON", "exportTypeToJSON", "exportTypeToNumber", "shippingConditionFromJSON", "shippingConditionToJSON", "shippingConditionToNumber", "wire_1", "any_1", "timestamp_1", "address_1", "amount_1", "auth_1", "country_1", "customer_1", "file_1", "invoice_1", "meta_1", "options_1", "price_1", "product_1", "reference_1", "resource_base_1", "shop_1", "status_1", "user_1", "FulfillmentState", "object", "__name", "ExportType", "ShippingCondition", "createBaseItem", "message", "writer", "input", "length", "reader", "end", "tag", "isSet", "obj", "base", "createBaseParcel", "v", "el", "e", "createBaseLabel", "createBaseCharge", "createBaseCustomsDeclaration", "createBasePackaging", "createBaseEvent", "toTimestamp", "fromTimestamp", "fromJsonTimestamp", "createBaseTracking", "createBaseFulfillment", "createBaseFulfillmentList", "createBaseFulfillmentResponse", "createBaseFulfillmentListResponse", "createBaseFulfillmentId", "createBaseFulfillmentIdList", "createBaseFulfillmentInvoiceSection", "createBaseFulfillmentInvoiceRequest", "createBaseFulfillmentInvoiceRequestList", "date", "seconds", "nanos", "millis", "o", "value", "exports", "supportedAPIFromJSON", "supportedAPIToJSON", "supportedAPIToNumber", "wire_1", "any_1", "attribute_1", "auth_1", "meta_1", "options_1", "resource_base_1", "shop_1", "status_1", "SupportedAPI", "object", "__name", "createBaseFulfillmentCourier", "message", "writer", "v", "input", "length", "reader", "end", "tag", "el", "isSet", "obj", "e", "base", "createBaseFulfillmentCourierList", "createBaseFulfillmentCourierResponse", "createBaseFulfillmentCourierListResponse", "value", "wire_1", "address_1", "amount_1", "attribute_1", "auth_1", "fulfillment_1", "fulfillment_courier_1", "geometry_1", "meta_1", "options_1", "price_1", "reference_1", "resource_base_1", "status_1", "exports", "createBasePreferences", "__name", "message", "writer", "v", "input", "length", "reader", "end", "tag", "el", "object", "isSet", "obj", "e", "base", "createBaseFulfillmentSolutionQuery", "createBaseFulfillmentSolutionQueryList", "createBaseFulfillmentProduct", "createBaseVariant", "createBaseFulfillmentProductList", "createBaseFulfillmentProductResponse", "createBaseFulfillmentProductListResponse", "createBaseFulfillmentSolution", "createBaseFulfillmentSolutionResponse", "createBaseFulfillmentSolutionListResponse", "value", "exports", "orderStateFromJSON", "orderStateToJSON", "orderStateToNumber", "fulfillmentInvoiceModeFromJSON", "fulfillmentInvoiceModeToJSON", "fulfillmentInvoiceModeToNumber", "wire_1", "any_1", "timestamp_1", "address_1", "amount_1", "attribute_1", "auth_1", "country_1", "customer_1", "fulfillment_1", "fulfillment_product_1", "invoice_1", "meta_1", "options_1", "price_1", "product_1", "resource_base_1", "shop_1", "status_1", "user_1", "OrderState", "object", "__name", "FulfillmentInvoiceMode", "createBaseEvent", "message", "writer", "toTimestamp", "v", "input", "length", "reader", "end", "tag", "fromTimestamp", "el", "isSet", "fromJsonTimestamp", "obj", "e", "base", "createBaseItem", "createBaseOrder", "createBaseOrderIdList", "createBaseOrderList", "createBaseOrderSubmitListResponse", "createBaseOrderListResponse", "createBaseOrderResponse", "createBaseDeleted", "createBaseFulfillmentRequest", "createBaseFulfillmentRequestList", "createBaseOrderingInvoiceSection", "createBaseOrderingInvoiceRequest", "createBaseOrderingInvoiceRequestList", "date", "seconds", "nanos", "millis", "o", "value", "exports", "providerFromJSON", "providerToJSON", "providerToNumber", "paymentIdTypeFromJSON", "paymentIdTypeToJSON", "paymentIdTypeToNumber", "wire_1", "auth_1", "options_1", "status_1", "Provider", "object", "__name", "PaymentIdType", "createBaseSetupRequest", "message", "writer", "v", "input", "length", "reader", "end", "tag", "el", "isSet", "obj", "e", "base", "createBaseSetupPayload", "createBaseSetupPayloadStatus", "createBaseSetupResponse", "createBasePaymentRequest", "createBaseCaptureRequest", "createBasePaymentPayload", "createBasePaymentPayloadStatus", "createBasePaymentResponse", "createBasePaymentCard", "createBaseItem", "value", "wire_1", "any_1", "auth_1", "meta_1", "options_1", "resource_base_1", "status_1", "exports", "createBaseDeleted", "__name", "message", "writer", "input", "length", "reader", "end", "tag", "object", "isSet", "obj", "base", "createBaseCredentialList", "v", "el", "e", "createBaseCredentialListResponse", "createBaseCredentialResponse", "createBaseCredential", "value", "wire_1", "any_1", "address_1", "auth_1", "meta_1", "options_1", "organization_1", "resource_base_1", "status_1", "exports", "createBaseDeleted", "__name", "message", "writer", "input", "length", "reader", "end", "tag", "object", "isSet", "obj", "base", "createBaseLocationList", "v", "el", "e", "createBaseLocationListResponse", "createBaseLocationResponse", "createBaseLocation", "value", "exports", "statusCodeFromJSON", "statusCodeToJSON", "statusCodeToNumber", "sectorFromJSON", "sectorToJSON", "sectorToNumber", "wire_1", "auth_1", "meta_1", "options_1", "resource_base_1", "status_1", "StatusCode", "object", "__name", "Sector", "createBaseUnitCodeList", "message", "writer", "v", "input", "length", "reader", "end", "tag", "el", "isSet", "obj", "e", "base", "createBaseUnitCodeListResponse", "createBaseUnitCodeResponse", "createBaseUnitCode", "value", "exports", "templateUseCaseFromJSON", "templateUseCaseToJSON", "templateUseCaseToNumber", "wire_1", "attribute_1", "auth_1", "file_1", "image_1", "meta_1", "options_1", "resource_base_1", "status_1", "TemplateUseCase", "object", "__name", "createBaseTemplateList", "message", "writer", "v", "input", "length", "reader", "end", "tag", "el", "isSet", "obj", "e", "base", "createBaseTemplateListResponse", "createBaseTemplateResponse", "createBaseLocalization", "createBaseTemplate", "value", "exports", "commandParameter_ParameterTypeFromJSON", "commandParameter_ParameterTypeToJSON", "commandParameter_ParameterTypeToNumber", "wire_1", "auth_1", "meta_1", "options_1", "resource_base_1", "status_1", "CommandParameter_ParameterType", "object", "__name", "createBaseCommand", "message", "writer", "v", "input", "length", "reader", "end", "tag", "el", "isSet", "obj", "e", "base", "createBaseCommandParameter", "createBaseCommandList", "createBaseCommandListResponse", "createBaseCommandResponse", "value", "wire_1", "any_1", "auth_1", "options_1", "exports", "createBaseSearchRequest", "__name", "message", "writer", "v", "input", "length", "reader", "end", "tag", "el", "object", "isSet", "obj", "base", "e", "createBaseSearchResponse", "value", "exports", "effectFromJSON", "effectToJSON", "effectToNumber", "wire_1", "attribute_1", "auth_1", "filter_1", "meta_1", "options_1", "resource_base_1", "status_1", "Effect", "object", "__name", "createBaseTarget", "message", "writer", "v", "input", "length", "reader", "end", "tag", "el", "obj", "e", "base", "createBaseRule", "isSet", "createBaseRuleRQ", "createBaseRuleList", "createBaseRuleListResponse", "createBaseRuleResponse", "createBaseContextQuery", "value", "wire_1", "auth_1", "meta_1", "options_1", "resource_base_1", "rule_1", "status_1", "exports", "createBasePolicy", "__name", "message", "writer", "v", "input", "length", "reader", "end", "tag", "el", "object", "isSet", "obj", "base", "e", "createBasePolicyRQ", "createBasePolicyList", "createBasePolicyListResponse", "createBasePolicyResponse", "value", "wire_1", "auth_1", "meta_1", "options_1", "policy_1", "resource_base_1", "rule_1", "status_1", "exports", "createBasePolicySet", "__name", "message", "writer", "v", "input", "length", "reader", "end", "tag", "el", "object", "isSet", "obj", "base", "e", "createBasePolicySetList", "createBasePolicySetListResponse", "createBasePolicySetResponse", "createBasePolicySetRQ", "value", "exports", "response_DecisionFromJSON", "response_DecisionToJSON", "response_DecisionToNumber", "wire_1", "any_1", "attribute_1", "options_1", "policy_set_1", "rule_1", "status_1", "Response_Decision", "object", "__name", "createBaseRequest", "message", "writer", "input", "length", "reader", "end", "tag", "isSet", "obj", "base", "createBaseContext", "v", "el", "e", "createBaseResponse", "createBaseReverseQuery", "value", "exports", "jobOptions_PriorityFromJSON", "jobOptions_PriorityToJSON", "jobOptions_PriorityToNumber", "backoff_TypeFromJSON", "backoff_TypeToJSON", "backoff_TypeToNumber", "jobReadRequest_SortOrderFromJSON", "jobReadRequest_SortOrderToJSON", "jobReadRequest_SortOrderToNumber", "wire_1", "any_1", "auth_1", "meta_1", "options_1", "resource_base_1", "status_1", "JobOptions_Priority", "object", "__name", "Backoff_Type", "JobReadRequest_SortOrder", "createBaseDeleted", "message", "writer", "input", "length", "reader", "end", "tag", "isSet", "obj", "base", "createBaseJobList", "v", "el", "e", "createBaseJobListResponse", "createBaseJobResponse", "createBaseJob", "createBaseJobOptions", "createBaseRepeat", "createBaseData", "createBaseScheduledJob", "createBaseJobDone", "createBaseJobFailed", "createBaseBackoff", "createBaseJobReadRequest", "createBaseJobFilter", "value", "wire_1", "auth_1", "meta_1", "options_1", "resource_base_1", "status_1", "exports", "createBaseDeleted", "__name", "message", "writer", "input", "length", "reader", "end", "tag", "object", "isSet", "obj", "base", "createBaseNotificationList", "v", "el", "e", "createBaseNotificationListResponse", "createBaseNotificationResponse", "createBaseNotification", "value", "wire_1", "any_1", "attribute_1", "auth_1", "filter_1", "meta_1", "options_1", "resource_base_1", "status_1", "exports", "createBaseCopyRequestList", "__name", "message", "writer", "v", "input", "length", "reader", "end", "tag", "el", "object", "isSet", "obj", "e", "base", "createBaseCopyResponseList", "createBasecopyResponsePayloadWithStatus", "createBaseCopyRequestItem", "createBaseCopyResponseItem", "createBaseOptions", "createBaseObject", "bytesFromBase64", "base64FromBytes", "createBaseObjectResponse", "createBaseObjectResponsePayloadWithStatus", "createBaseObjectResponsePayload", "createBaseGetRequest", "createBaseListResponse", "createBaseObjectsDataWithPayloadStatus", "createBaseObjectData", "createBaseDeleteRequest", "createBasePutResponse", "createBasePutResponseWithPayloadStatus", "createBaseResponse", "createBaseListRequest", "createBaseOstorageMessage", "createBaseMoveRequestList", "createBaseMoveRequestItem", "createBaseMoveResponseList", "createBaseMoveResponsePayloadWithStatus", "createBaseMoveResponseItem", "b64", "arr", "value", "require_copy_to", "__commonJSMin", "exports", "module", "slice", "Copy", "src", "withAccess", "__name", "w", "keys", "to", "i", "key", "notDefined", "getter", "setter", "obj", "require_koa_bodyparser", "__commonJSMin", "exports", "module", "parse", "copy", "typeis", "opts", "detectJSON", "onerror", "enableTypes", "enableForm", "checkEnable", "enableJson", "enableText", "enableXml", "jsonTypes", "formTypes", "textTypes", "xmlTypes", "jsonOpts", "formatOptions", "formOpts", "textOpts", "xmlOpts", "extendTypes", "extendType", "__name", "ctx", "next", "res", "parseBody", "err", "isTypes", "type", "original", "extend", "types", "contentTypeValue", "exports", "pdfOptions_PaperFormatFromJSON", "pdfOptions_PaperFormatToJSON", "pdfOptions_PaperFormatToNumber", "wire_1", "any_1", "empty_1", "auth_1", "options_1", "status_1", "PdfOptions_PaperFormat", "object", "__name", "createBaseRenderRequest", "message", "writer", "input", "length", "reader", "end", "tag", "isSet", "obj", "base", "createBaseIndividualRequest", "v", "el", "e", "createBaseIndividualRequest_IndividualRequestData", "createBaseCombinedRequest", "createBaseRenderData", "createBaseOutputOptions", "createBaseRenderOptions", "longToNumber", "createBaseRenderSource", "createBaseUploadOptions", "createBaseMetaData", "createBaseRenderingResponse", "createBaseIndividualResponse", "createBaseResponsePayloadWithStatus", "createBaseResponsePayload", "createBaseResponsePdf", "bytesFromBase64", "base64FromBytes", "createBaseResponseS3Upload", "createBaseInfoResponse", "createBaseInfoResponse_ChromeVersion", "createBasePuppeteerOptions", "createBasePdfOptions", "b64", "arr", "int64", "num", "value", "require_constants", "__commonJSMin", "exports", "module", "BINARY_TYPES", "hasBlob", "__name", "require_buffer_util", "__commonJSMin", "exports", "module", "EMPTY_BUFFER", "FastBuffer", "concat", "list", "totalLength", "target", "offset", "i", "buf", "__name", "_mask", "source", "mask", "output", "length", "_unmask", "buffer", "toArrayBuffer", "toBuffer", "data", "bufferUtil", "require_limiter", "__commonJSMin", "exports", "module", "kDone", "kRun", "Limiter", "__name", "concurrency", "job", "require_permessage_deflate", "__commonJSMin", "exports", "module", "zlib", "bufferUtil", "Limiter", "kStatusCode", "FastBuffer", "TRAILER", "kPerMessageDeflate", "kTotalLength", "kCallback", "kBuffers", "kError", "zlibLimiter", "PerMessageDeflate", "__name", "options", "isServer", "maxPayload", "concurrency", "params", "configurations", "callback", "offers", "opts", "accepted", "response", "key", "value", "num", "data", "fin", "done", "err", "result", "endpoint", "windowBits", "inflateOnError", "inflateOnData", "deflateOnData", "chunk", "require_validation", "__commonJSMin", "exports", "module", "isUtf8", "hasBlob", "tokenChars", "isValidStatusCode", "code", "__name", "_isValidUTF8", "buf", "len", "i", "isBlob", "value", "isValidUTF8", "require_receiver", "__commonJSMin", "exports", "module", "Writable", "PerMessageDeflate", "BINARY_TYPES", "EMPTY_BUFFER", "kStatusCode", "kWebSocket", "concat", "toArrayBuffer", "unmask", "isValidStatusCode", "isValidUTF8", "FastBuffer", "GET_INFO", "GET_PAYLOAD_LENGTH_16", "GET_PAYLOAD_LENGTH_64", "GET_MASK", "GET_DATA", "INFLATING", "DEFER_EVENT", "Receiver", "__name", "options", "chunk", "encoding", "cb", "n", "buf", "dst", "offset", "error", "compressed", "num", "data", "err", "messageLength", "fragments", "code", "ErrorCtor", "message", "prefix", "statusCode", "errorCode", "require_sender", "__commonJSMin", "exports", "module", "Duplex", "randomFillSync", "PerMessageDeflate", "EMPTY_BUFFER", "kWebSocket", "NOOP", "isBlob", "isValidStatusCode", "applyMask", "toBuffer", "kByteLength", "maskBuffer", "RANDOM_POOL_SIZE", "randomPool", "randomPoolPointer", "DEFAULT", "DEFLATING", "GET_BLOB_DATA", "Sender", "_Sender", "__name", "socket", "extensions", "generateMask", "data", "options", "mask", "merge", "offset", "skipMasking", "dataLength", "payloadLength", "target", "code", "cb", "buf", "length", "byteLength", "readOnly", "perMessageDeflate", "opcode", "rsv1", "opts", "blob", "compress", "arrayBuffer", "err", "callCallbacks", "onError", "_", "params", "list", "sender", "callback", "require_event_target", "__commonJSMin", "exports", "module", "kForOnEventAttribute", "kListener", "kCode", "kData", "kError", "kMessage", "kReason", "kTarget", "kType", "kWasClean", "Event", "__name", "type", "CloseEvent", "options", "ErrorEvent", "MessageEvent", "EventTarget", "handler", "listener", "wrapper", "data", "isBinary", "event", "callListener", "code", "message", "error", "thisArg", "require_extension", "__commonJSMin", "exports", "module", "tokenChars", "push", "dest", "name", "elem", "__name", "parse", "header", "offers", "params", "mustUnescape", "isEscaping", "inQuotes", "extensionName", "paramName", "start", "code", "end", "i", "value", "token", "format", "extensions", "extension", "configurations", "k", "values", "v", "require_websocket", "__commonJSMin", "exports", "module", "EventEmitter", "https", "http", "net", "tls", "randomBytes", "createHash", "Duplex", "Readable", "URL", "PerMessageDeflate", "Receiver", "Sender", "isBlob", "BINARY_TYPES", "CLOSE_TIMEOUT", "EMPTY_BUFFER", "GUID", "kForOnEventAttribute", "kListener", "kStatusCode", "kWebSocket", "NOOP", "addEventListener", "removeEventListener", "format", "parse", "toBuffer", "kAborted", "protocolVersions", "readyStates", "subprotocolRegex", "WebSocket", "_WebSocket", "__name", "address", "protocols", "options", "initAsClient", "type", "socket", "head", "receiver", "sender", "receiverOnConclude", "receiverOnDrain", "receiverOnError", "receiverOnMessage", "receiverOnPing", "receiverOnPong", "senderOnError", "socketOnClose", "socketOnData", "socketOnEnd", "socketOnError", "code", "data", "abortHandshake", "err", "setCloseTimer", "mask", "cb", "sendAfterClose", "opts", "property", "method", "listener", "handler", "websocket", "parsedUrl", "isSecure", "isIpcUrl", "invalidUrlMessage", "emitErrorAndClose", "defaultPort", "key", "request", "protocolSet", "perMessageDeflate", "tlsConnect", "netConnect", "protocol", "parts", "req", "headers", "value", "isSameHost", "res", "location", "statusCode", "addr", "upgrade", "digest", "serverProt", "protError", "secWebSocketExtensions", "extensions", "extensionNames", "stream", "message", "length", "reason", "resume", "receiverOnFinish", "isBinary", "chunk", "require_stream", "__commonJSMin", "exports", "module", "WebSocket", "Duplex", "emitClose", "stream", "__name", "duplexOnEnd", "duplexOnError", "err", "createWebSocketStream", "ws", "options", "terminateOnDestroy", "duplex", "msg", "isBinary", "data", "callback", "called", "chunk", "encoding", "require_subprotocol", "__commonJSMin", "exports", "module", "tokenChars", "parse", "header", "protocols", "start", "end", "i", "code", "protocol", "__name", "require_websocket_server", "__commonJSMin", "exports", "module", "EventEmitter", "http", "Duplex", "createHash", "extension", "PerMessageDeflate", "subprotocol", "WebSocket", "CLOSE_TIMEOUT", "GUID", "kWebSocket", "keyRegex", "RUNNING", "CLOSING", "CLOSED", "WebSocketServer", "__name", "options", "callback", "req", "res", "body", "emitConnection", "addListeners", "socket", "head", "cb", "emitClose", "server", "index", "socketOnError", "key", "upgrade", "version", "abortHandshakeOrEmitwsClientError", "abortHandshake", "secWebSocketProtocol", "protocols", "secWebSocketExtensions", "extensions", "perMessageDeflate", "offers", "info", "verified", "code", "message", "headers", "ws", "protocol", "params", "value", "map", "event", "h", "err", "require_utils", "__commonJSMin", "exports", "module", "parseContentType", "str", "params", "i", "code", "TOKEN", "type", "subtypeStart", "parseContentTypeParams", "subtype", "__name", "name", "nameStart", "value", "valueStart", "escaping", "QDTEXT", "parseDisposition", "defDecoder", "parseDispositionParams", "charset", "charsetStart", "CHARSET", "encode", "EXTENDED_VALUE", "hexUpper", "hexLower", "HEX_VALUES", "byteVal", "convertToUTF8", "getDecoder", "lc", "decoders", "data", "hint", "decode", "basename", "path", "require_sbmh", "__commonJSMin", "exports", "module", "memcmp", "buf1", "pos1", "buf2", "pos2", "num", "i", "__name", "SBMH", "needle", "cb", "needleLen", "chunk", "pos", "result", "chunkLen", "feed", "lbSize", "self", "data", "len", "lastNeedleCharPos", "lastNeedleChar", "end", "occ", "lookbehind", "nextPos", "ch", "matchNeedle", "bytesToCutOff", "firstNeedleChar", "lb", "require_multipart", "__commonJSMin", "exports", "module", "Readable", "Writable", "StreamSearch", "basename", "convertToUTF8", "getDecoder", "parseContentType", "parseDisposition", "BUF_CRLF", "BUF_CR", "BUF_DASH", "noop", "__name", "MAX_HEADER_PAIRS", "MAX_HEADER_SIZE", "HPARSER_NAME", "HPARSER_PRE_OWS", "HPARSER_VALUE", "HeaderParser", "cb", "chunk", "pos", "end", "start", "done", "code", "TOKEN", "FIELD_VCHAR", "header", "FileStream", "opts", "owner", "n", "ignoreData", "callAndUnsetCb", "self", "err", "nullDecoder", "val", "hint", "Multipart", "cfg", "streamOpts", "boundary", "paramDecoder", "defCharset", "preservePath", "fileOpts", "limits", "fieldSizeLimit", "fileSizeLimit", "filesLimit", "fieldsLimit", "partsLimit", "parts", "fields", "files", "skipPart", "fileSize", "field", "fieldSize", "partCharset", "partEncoding", "partType", "partName", "partTruncated", "hitFilesLimit", "hitFieldsLimit", "hparser", "filename", "disp", "conType", "matchPostBoundary", "ssCb", "isMatch", "data", "isDataSafe", "retrydata", "ret", "writecb", "actualLen", "enc", "checkEndState", "fileStream", "finalcb", "require_urlencoded", "__commonJSMin", "exports", "module", "Writable", "getDecoder", "URLEncoded", "__name", "cfg", "streamOpts", "charset", "limits", "conType", "chunk", "enc", "cb", "i", "len", "readPctEnc", "main", "skipKeyBytes", "skipValBytes", "self", "pos", "hexUpper", "HEX_VALUES", "hexLower", "code", "require_lib", "__commonJSMin", "exports", "module", "parseContentType", "getInstance", "cfg", "headers", "conType", "type", "TYPES", "instanceCfg", "__name", "typemod", "require_object_path", "__commonJSMin", "exports", "module", "root", "factory", "toStr", "hasOwnProperty", "obj", "prop", "__name", "isEmpty", "value", "isArray", "i", "toString", "type", "isObject", "isBoolean", "getKey", "key", "intKey", "options", "objectPath", "proxy", "hasShallowProperty", "getShallowProperty", "getShallowPropertySafely", "currentPath", "currentValue", "set", "path", "doNotReplace", "j", "at", "arr", "paths", "defaultValue", "len", "nextObj", "mod", "import_service_config", "import_logger", "import_logger", "import_node_http", "import_application", "koa_default", "mod", "HttpError", "import_utils", "import_graphql", "asArray", "__name", "fns", "inspect", "value", "formatValue", "__name", "seenValues", "formatObjectValue", "formatError", "previouslySeenValues", "formatArray", "isJSONable", "jsonValue", "formatObject", "object", "entries", "getObjectTag", "key", "array", "len", "items", "i", "tag", "name", "MapperKind", "import_graphql", "import_graphql", "getObjectTypeFromTypeMap", "typeMap", "type", "maybeObjectType", "__name", "import_graphql", "import_graphql", "isNamedStub", "type", "fields", "fieldName", "__name", "getBuiltInForStub", "rewireTypes", "originalTypeMap", "directives", "referenceTypeMap", "typeName", "newTypeMap", "namedType", "newName", "rewireNamedType", "newDirectives", "directive", "rewireDirective", "directiveConfig", "rewireArgs", "args", "rewiredArgs", "argName", "arg", "rewiredArgType", "rewireType", "type", "config", "newConfig", "__name", "rewireFields", "rewireNamedTypes", "rewireInputFields", "enumConfig", "scalarConfig", "fields", "rewiredFields", "fieldName", "field", "rewiredFieldType", "namedTypes", "rewiredTypes", "rewiredType", "isNamedStub", "getBuiltInForStub", "import_graphql", "transformInputValue", "type", "value", "inputLeafValueTransformer", "inputObjectValueTransformer", "nullableType", "asArray", "listMember", "fields", "newValue", "key", "field", "__name", "serializeInputValue", "t", "v", "parseInputValue", "mapSchema", "schema", "schemaMapper", "newTypeMap", "mapArguments", "mapFields", "mapTypes", "mapDefaultValues", "mapEnumValues", "serializeInputValue", "type", "parseInputValue", "originalDirectives", "newDirectives", "mapDirectives", "typeMap", "directives", "rewireTypes", "getObjectTypeFromTypeMap", "__name", "builtinTypes", "originalTypeMap", "testFn", "typeName", "originalType", "typeMapper", "getTypeMapper", "maybeNewType", "enumValueMapper", "getEnumValueMapper", "MapperKind", "config", "originalEnumValueConfigMap", "newEnumValueConfigMap", "externalValue", "originalEnumValueConfig", "mappedEnumValue", "newExternalValue", "newEnumValueConfig", "correctASTNodes", "fn", "argumentConfig", "getNewType", "inputFieldConfig", "newType", "fieldMapper", "getFieldMapper", "originalFieldConfigMap", "newFieldConfigMap", "fieldName", "originalFieldConfig", "mappedField", "newFieldName", "newFieldConfig", "argumentMapper", "getArgumentMapper", "originalArgumentConfigMap", "argumentNames", "newArgumentConfigMap", "argumentName", "originalArgumentConfig", "mappedArgument", "newArgumentName", "newArgumentConfig", "directiveMapper", "getDirectiveMapper", "directive", "mappedDirective", "getTypeSpecifiers", "specifiers", "stack", "next", "getFieldSpecifiers", "fields", "fieldConfig", "node", "values", "enumKey", "enumValueConfig", "import_graphql", "healSchema", "schema", "healTypes", "__name", "originalTypeMap", "directives", "actualNamedTypeMap", "typeName", "namedType", "actualName", "decl", "arg", "healType", "healNamedType", "type", "healFields", "healInterfaces", "healUnderlyingTypes", "healInputFields", "fieldMap", "key", "field", "interfaces", "iface", "types", "t", "healedType", "officialType", "import_graphql", "forEachField", "schema", "fn", "typeMap", "typeName", "type", "fields", "fieldName", "field", "__name", "import_graphql", "forEachDefaultValue", "schema", "fn", "typeMap", "typeName", "type", "fields", "fieldName", "field", "arg", "__name", "assertResolversPresent", "schema", "resolverValidationOptions", "requireResolversForArgs", "requireResolversForNonScalar", "requireResolversForAllFields", "forEachField", "field", "typeName", "fieldName", "expectResolver", "__name", "validator", "behavior", "message", "import_graphql", "checkForResolveTypeResolver", "schema", "requireResolversForResolveType", "mapSchema", "MapperKind", "type", "message", "__name", "extendResolversFromInterfaces", "schema", "resolvers", "extendedResolvers", "typeMap", "typeName", "type", "iFace", "fieldName", "typeResolvers", "__name", "addResolversToSchema", "schema", "inputResolvers", "defaultFieldResolver", "resolverValidationOptions", "inheritResolversFromInterfaces", "updateResolversInPlace", "requireResolversToMatchSchema", "requireResolversForResolveType", "resolvers", "extendResolversFromInterfaces", "typeName", "resolverValue", "type", "msg", "fieldName", "values", "value", "fieldResolve", "addResolversToExistingSchema", "createNewSchemaWithResolvers", "checkForResolveTypeResolver", "__name", "typeMap", "config", "enumValueConfigMap", "field", "setFieldProperties", "forEachDefaultValue", "serializeInputValue", "healSchema", "parseInputValue", "forEachField", "mapSchema", "MapperKind", "fieldConfig", "newFieldConfig", "propertiesObj", "propertyName", "import_graphql", "compareStrings", "a", "b", "__name", "nodeToString", "name", "compareNodes", "customFn", "aStr", "bStr", "isSome", "input", "import_graphql", "import_graphql", "import_graphql", "possibleGraphQLErrorProperties", "isGraphQLErrorLike", "error", "key", "__name", "createGraphQLError", "message", "options", "Constructor", "isIterableObject", "value", "__name", "isObjectLike", "hasOwnProperty", "obj", "prop", "__name", "getArgumentValues", "def", "node", "variableValues", "coercedValues", "argNodeMap", "prev", "arg", "name", "argType", "defaultValue", "argumentNode", "createGraphQLError", "inspect", "valueNode", "isNull", "variableName", "hasOwnProperty", "coercedValue", "__name", "memoize1", "fn", "memoize1cache", "__name", "a1", "cachedValue", "newValue", "getDirectiveExtensions", "directableObj", "schema", "pathToDirectivesInExtensions", "directiveExtensions", "directivesInExtensions", "pathSegment", "directiveNameProp", "directiveObjs", "directiveName", "directiveObj", "existingDirectiveExtensions", "memoizedStringify", "memoize1", "obj", "astNodes", "astNode", "directive", "directiveInSchema", "value", "getArgumentValues", "argNode", "argName", "argInDirective", "arg", "valStr", "val", "__name", "getDirectivesInExtensions", "node", "pathToDirectivesInExtensions", "directiveExtensions", "getDirectiveExtensions", "directiveName", "directiveArgsArr", "directiveArgs", "__name", "import_graphql", "import_graphql", "astFromType", "type", "innerType", "inspect", "__name", "import_graphql", "import_graphql", "astFromValueUntyped", "value", "valuesNodes", "item", "itemNode", "fieldNodes", "fieldName", "fieldValue", "ast", "stringNum", "integerStringRegExp", "__name", "astFromValue", "value", "type", "astValue", "itemType", "isIterableObject", "valuesNodes", "item", "itemNode", "isObjectLike", "fieldNodes", "field", "fieldValue", "serialized", "integerStringRegExp", "astFromValueUntyped", "inspect", "__name", "import_graphql", "getDescriptionNode", "obj", "__name", "getRootTypeNames", "memoize1", "__name", "schema", "rootTypes", "getRootTypes", "type", "rootTypeMap", "getRootTypeMap", "queryType", "mutationType", "subscriptionType", "getDocumentNodeFromSchema", "schema", "options", "pathToDirectivesInExtensions", "typesMap", "schemaNode", "astFromSchema", "definitions", "directives", "directive", "astFromDirective", "typeName", "type", "isPredefinedScalar", "isIntrospection", "astFromObjectType", "astFromInterfaceType", "astFromUnionType", "astFromInputObjectType", "astFromEnumType", "astFromScalarType", "__name", "astFromSchema", "schema", "pathToDirectivesInExtensions", "operationTypeMap", "nodes", "extensionASTNode", "node", "operationTypeDefinitionNode", "rootTypeMap", "getRootTypeMap", "operationTypeNode", "rootType", "rootTypeAST", "astFromType", "operationTypes", "isSome", "directives", "getDirectiveNodes", "schemaNode", "descriptionNode", "getDescriptionNode", "__name", "astFromDirective", "directive", "arg", "astFromArg", "location", "entity", "directiveNodesBesidesNativeDirectives", "directivesInExtensions", "getDirectivesInExtensions", "makeDirectiveNodes", "deprecatedDirectiveNode", "specifiedByDirectiveNode", "oneOfDirectiveNode", "specifiedDirective", "makeDeprecatedDirective", "specifiedByArgs", "makeDirectiveNode", "astFromValue", "astFromObjectType", "type", "field", "astFromField", "iFace", "astFromInterfaceType", "astFromUnionType", "astFromInputObjectType", "astFromInputField", "astFromEnumType", "value", "astFromEnumValue", "astFromScalarType", "specifiedByValue", "directiveNode", "deprecationReason", "name", "args", "directiveArguments", "argName", "argValue", "astFromValueUntyped", "directiveValues", "directiveNodes", "import_graphql", "MAX_LINE_LENGTH", "commentsRegistry", "resetComments", "__name", "collectComment", "node", "entityName", "pushComment", "value", "field", "isFieldDefinitionNode", "arg", "entity", "argument", "comment", "getComment", "keys", "path", "printComment", "join", "maybeArray", "separator", "x", "hasMultilineItems", "str", "addDescription", "cb", "_key", "_parent", "ancestors", "parent", "prev", "key", "items", "indent", "maybeString", "block", "array", "wrap", "start", "end", "printBlockString", "isDescription", "escaped", "printDocASTReducer", "varDefs", "variable", "type", "defaultValue", "directives", "selections", "alias", "name", "args", "selectionSet", "prefix", "argsLine", "typeCondition", "variableDefinitions", "isBlockString", "values", "fields", "operationTypes", "operation", "interfaces", "types", "repeatable", "locations", "printDocASTReducerWithComments", "printWithComments", "ast", "getComment", "node", "rawValue", "getLeadingCommentBlock", "dedentBlockStringValue", "__name", "loc", "comments", "token", "value", "rawString", "lines", "commonIndent", "getBlockStringIndentation", "isBlank", "i", "line", "indent", "leadingWhitespace", "str", "mergeDeep", "sources", "respectPrototype", "respectArrays", "respectArrayLength", "expectedLength", "allArrays", "areArraysInTheSameLength", "source", "_", "index", "output", "firstObjectSource", "isObject", "outputPrototype", "sourcePrototype", "key", "descriptor", "isSome", "__name", "item", "import_graphql", "isDocumentNode", "object", "__name", "mergeResolvers", "resolversDefinitions", "options", "resolvers", "resolversDefinition", "result", "mergeDeep", "exclusion", "typeName", "fieldName", "__name", "mergeArguments", "args1", "args2", "config", "result", "deduplicateArguments", "isSome", "compareNodes", "__name", "args", "acc", "current", "dupIndex", "arg", "import_graphql", "isRepeatableDirective", "directive", "directives", "repeatableLinkImports", "__name", "nameAlreadyExists", "name", "namesArr", "value", "mergeArguments", "a1", "a2", "result", "argument", "existingIndex", "a", "existingArg", "source", "target", "deduplicateLists", "targetVal", "sourceVal", "matchValues", "b", "aVal", "bVal", "aField", "bField", "isLinkDirective", "getLinkDirectiveURL", "stringValue", "arg", "matchArguments", "matchDirectives", "argA", "argB", "mergeDirectives", "d1", "d2", "config", "reverseOrder", "asNext", "asFirst", "d", "firstAt", "url1", "url2", "mergedArguments", "mergeDirective", "node", "existingNode", "existingArgs", "filterFn", "val", "mergeEnumValues", "first", "second", "config", "directives", "reversed", "enumValueMap", "firstValue", "secondValue", "enumValue", "mergeDirectives", "result", "compareNodes", "__name", "import_graphql", "mergeEnum", "e1", "e2", "config", "directives", "mergeDirectives", "mergeEnumValues", "__name", "import_graphql", "isStringTypes", "types", "__name", "isSourceTypes", "extractType", "type", "visitedType", "isWrappingTypeNode", "isListTypeNode", "isNonNullTypeNode", "printTypeNode", "CompareVal", "defaultStringComparator", "a", "b", "fieldAlreadyExists", "fieldsArr", "otherField", "resultIndex", "field", "__name", "mergeFields", "type", "f1", "f2", "config", "directives", "result", "existing", "existingIndex", "newField", "preventConflicts", "mergeArguments", "mergeDirectives", "compareNodes", "exclusions", "a", "b", "ignoreNullability", "aType", "printTypeNode", "bType", "t1", "extractType", "t2", "safeChangeForFieldType", "isNonNullTypeNode", "oldType", "newType", "isWrappingTypeNode", "ofType", "isListTypeNode", "import_graphql", "mergeInputType", "node", "existingNode", "config", "directives", "mergeFields", "mergeDirectives", "e", "__name", "import_graphql", "alreadyExists", "arr", "other", "i", "__name", "mergeNamedTypeArray", "first", "second", "config", "result", "d", "compareNodes", "mergeInterface", "node", "existingNode", "config", "directives", "mergeFields", "mergeDirectives", "mergeNamedTypeArray", "e", "__name", "import_graphql", "import_graphql", "mergeScalar", "node", "existingNode", "config", "directives", "mergeDirectives", "__name", "import_graphql", "DEFAULT_OPERATION_TYPE_NAME_MAP", "mergeOperationTypes", "opNodeList", "existingOpNodeList", "finalOpNodeList", "opNodeType", "opNode", "n", "__name", "mergeSchemaDefs", "node", "existingNode", "config", "directives", "mergeDirectives", "import_graphql", "mergeType", "node", "existingNode", "config", "directives", "mergeFields", "mergeDirectives", "mergeNamedTypeArray", "e", "__name", "import_graphql", "mergeUnion", "first", "second", "config", "directives", "mergeDirectives", "mergeNamedTypeArray", "__name", "schemaDefSymbol", "isNamedDefinitionNode", "definitionNode", "__name", "mergeGraphQLNodes", "nodes", "config", "directives", "mergedResultMap", "nodeDefinition", "name", "collectComment", "mergeType", "mergeEnum", "mergeUnion", "mergeScalar", "mergeInputType", "mergeInterface", "isASTNode", "mergeDirective", "mergeSchemaDefs", "node", "import_graphql", "import_graphql", "namespace", "link", "__name", "defaultImport", "name", "resolveImportName", "elementName", "imported", "i", "resolvedName", "namespaced", "extractLinks", "typeDefs", "links", "definition", "parsedLinks", "directive", "l", "linkFromArgs", "coreLinks", "c", "linkFromCoreArgs", "args", "url", "imports", "as", "arg", "parseFederationLinkUrl", "parseImportNode", "feature", "value", "node", "v", "namedImport", "f", "VERSION_MATCH", "urlSource", "parts", "versionOrName", "maybeName", "mergeTypeDefs", "typeSource", "config", "resetComments", "doc", "mergeGraphQLTypes", "result", "printWithComments", "__name", "visitTypeSources", "options", "allDirectives", "allNodes", "visitedTypeSources", "repeatableLinkImports", "addRepeatable", "name", "type", "documentNode", "getDocumentNodeFromSchema", "isStringTypes", "isSourceTypes", "links", "extractLinks", "federationUrl", "linkUrl", "federationLink", "l", "resolveImportName", "linkLink", "isDocumentNode", "mergedDirectives", "mergeGraphQLNodes", "mergedNodes", "schemaDef", "schemaDefSymbol", "operationTypes", "opTypeDefNodeType", "DEFAULT_OPERATION_TYPE_NAME_MAP", "operationType", "possibleRootTypeName", "existingPossibleRootType", "mergedNodeDefinitions", "sortFn", "defaultStringComparator", "a", "b", "applyExtensionObject", "obj", "extensions", "mergeDeep", "__name", "applyExtensions", "schema", "typeName", "data", "type", "fieldName", "fieldData", "field", "arg", "argData", "a", "valueName", "valueData", "value", "makeExecutableSchema", "typeDefs", "resolvers", "resolverValidationOptions", "inheritResolversFromInterfaces", "updateResolversInPlace", "schemaExtensions", "defaultFieldResolver", "otherOptions", "schema", "mergedTypeDefs", "mergeTypeDefs", "addResolversToSchema", "mergeResolvers", "assertResolversPresent", "schemaExtension", "asArray", "applyExtensions", "__name", "resolvable_default", "__name", "resolve", "reject", "promise", "_resolve", "_reject", "import_graphql", "import_loglevel", "import_negotiator", "init_cachePolicy", "import_utils", "determineApolloConfig", "input", "logger", "apolloConfig", "APOLLO_KEY", "APOLLO_GRAPH_REF", "APOLLO_GRAPH_ID", "APOLLO_GRAPH_VARIANT", "assertValidHeaderValue", "graphId", "graphVariant", "__name", "value", "invalidHeaderCharRegex", "invalidChars", "import_graphql", "ApolloServerErrorCode", "ApolloServerValidationErrorCode", "import_graphql", "import_graphql", "HeaderMap", "__name", "key", "value", "GraphQLErrorWithCode", "__name", "message", "code", "options", "SyntaxError", "graphqlError", "ApolloServerErrorCode", "newHTTPGraphQLHead", "ValidationError", "getPersistedQueryErrorHttp", "HeaderMap", "PersistedQueryNotFoundError", "PersistedQueryNotSupportedError", "UserInputError", "OperationResolutionError", "BadRequestError", "import_negotiator", "fieldIfString", "o", "fieldName", "value", "__name", "searchParamIfSpecifiedOnce", "searchParams", "paramName", "values", "BadRequestError", "jsonParsedSearchParamIfSpecifiedOnce", "hopefullyRecord", "isStringRecord", "fieldIfRecord", "isNonEmptyStringRecord", "ensureQueryIsStringOrMissing", "query", "runHttpQuery", "server", "httpRequest", "contextValue", "schemaDerivedData", "internals", "sharedResponseHTTPGraphQLHead", "graphQLRequest", "HeaderMap", "graphQLResponse", "internalExecuteOperation", "contentType", "chooseContentTypeForSingleResultResponse", "MEDIA_TYPES", "orderExecutionResultFields", "acceptHeader", "preferredMediaType", "Negotiator", "writeMultipartBody", "initialResult", "subsequentResults", "result", "prettyJSONStringify", "newHTTPGraphQLHead", "status", "mergeHTTPGraphQLHead", "target", "source", "name", "normalizeAndFormatErrors", "errors", "options", "formatError", "error", "httpFromErrors", "newHTTPGraphQLHead", "enrichError", "formattingError", "ApolloServerErrorCode", "maybeError", "graphqlError", "ensureGraphQLError", "extensions", "isPartialHTTPGraphQLHead", "mergeHTTPGraphQLHead", "HeaderMap", "__name", "ensureError", "messagePrefixIfNotGraphQLError", "x", "runBatchedHttpQuery", "server", "batchRequest", "body", "contextValue", "schemaDerivedData", "internals", "BadRequestError", "sharedResponseHTTPGraphQLHead", "newHTTPGraphQLHead", "responseBodies", "bodyPiece", "singleRequest", "response", "runHttpQuery", "__name", "runPotentiallyBatchedHttpQuery", "httpGraphQLRequest", "init_internalPlugin", "import_whatwg_mimetype", "recommendedCsrfPreventionRequestHeaders", "NON_PREFLIGHTED_CONTENT_TYPES", "preventCsrf", "headers", "csrfPreventionRequestHeaders", "contentType", "contentTypeParsed", "MIMEType", "header", "value", "BadRequestError", "__name", "import_utils", "import_graphql", "import_graphql", "symbolExecutionDispatcherWillResolveField", "symbolUserFieldResolver", "symbolPluginsEnabled", "enablePluginsForSchemaResolvers", "schema", "pluginsEnabledForSchemaResolvers", "typeMap", "type", "fields", "field", "wrapField", "__name", "originalFieldResolve", "source", "args", "contextValue", "info", "willResolveField", "userFieldResolver", "didResolveField", "fieldResolver", "result", "whenResultIsFinished", "error", "isPromise", "x", "callback", "r", "err", "isDefined", "__name", "invokeDidStartHook", "targets", "hook", "didEndHooks", "target", "isDefined", "args", "didEndHook", "__name", "invokeSyncDidStartHook", "invokeHooksUntilDefinedAndNonNull", "value", "makeGatewayGraphQLRequestContext", "newRequestContext", "server", "internals", "request", "newHttp", "needQuestion", "FetcherHeadersForHeaderMap", "response", "newStatus", "__name", "map", "name", "value", "import_graphql", "graphqlExperimentalExecuteIncrementally", "tryToLoadGraphQL17", "graphql", "__name", "executeIncrementally", "useLegacyIncremental", "legacyExperimentalExecuteIncrementally", "args", "BadRequestError", "MEDIA_TYPES", "import_negotiator", "APQ_CACHE_PREFIX", "computeQueryHash", "query", "__name", "isBadUserInputGraphQLError", "error", "processGraphQLRequest", "schemaDerivedData", "server", "internals", "requestContext", "requestListeners", "p", "isDefined", "request", "extensions", "queryHash", "sendErrorResponse", "newHTTPGraphQLHead", "PersistedQueryNotSupportedError", "PersistedQueryNotFoundError", "computedQueryHash", "BadRequestError", "l", "err", "ensureError", "parsingDidEnd", "invokeDidStartHook", "syntaxMaybeError", "SyntaxError", "ensureGraphQLError", "validationDidEnd", "validationErrors", "ValidationError", "operation", "HeaderMap", "ttl", "responseFromPlugin", "invokeHooksUntilDefinedAndNonNull", "mergeHTTPGraphQLHead", "executionListeners", "invokeWillResolveField", "args", "invokeSyncDidStartHook", "symbolExecutionDispatcherWillResolveField", "symbolUserFieldResolver", "enablePluginsForSchemaResolvers", "fullResult", "execute", "Negotiator", "MEDIA_TYPES", "result", "OperationResolutionError", "resultErrors", "e", "UserInputError", "didEncounterErrors", "formattedErrors", "httpFromErrors", "formatErrors", "executionMaybeError", "executionError", "invokeWillSendResponse", "useLegacyIncremental", "document", "makeGatewayGraphQLRequestContext", "resultOrResults", "executeIncrementally", "formatErrorsInSubsequentResultsAlpha9", "formatErrorsInSubsequentResultsAlpha2", "results", "payload", "seriesAsyncMap", "incrementalResult", "errors", "completedResult", "normalizeAndFormatErrors", "ts", "fn", "us", "t", "u", "init_UnreachableCaseError", "init_computeCoreSchemaHash", "SchemaManager", "__name", "options", "gateway", "schemaContext", "callback", "e", "schemaDerivedData", "listener", "import_graphql", "NoIntrospection", "__name", "context", "node", "ApolloServerValidationErrorCode", "import_graphql", "DEFAULT_MAX_RECURSIVE_SELECTIONS", "RecursiveSelectionValidationContext", "__name", "selectionCountLimit", "context", "entry", "fragmentSpreadName", "definitionInfo", "spreadCount", "fragment", "operation", "cachedCount", "count", "operationName", "ApolloServerValidationErrorCode", "createMaxRecursiveSelectionsRule", "limit", "selectionContext", "node", "defaultLogger", "loglevelLogger", "loglevel", "__name", "ApolloServer", "_ApolloServer", "config", "nodeEnv", "apolloConfig", "determineApolloConfig", "isDev", "state", "SchemaManager", "schema", "introspectionEnabled", "hideSchemaDetailsFromClientErrors", "maxRecursiveSelectionsRule", "createMaxRecursiveSelectionsRule", "DEFAULT_MAX_RECURSIVE_SELECTIONS", "validationRules", "NoIntrospection", "laterValidationRules", "APQ_CACHE_PREFIX", "recommendedCsrfPreventionRequestHeaders", "prettyJSONStringify", "startedInBackground", "schemaManager", "barrier", "resolvable_default", "toDispose", "executor", "schemaDerivedData", "service", "taggedServerListeners", "plugin", "isImplicitlyInstallablePlugin", "maybeTaggedServerListener", "schemaDidLoadOrUpdate", "serverWillStops", "l", "isDefined", "serverWillStop", "drainServerCallbacks", "drainServers", "drainServer", "taggedServerListenersWithRenderLandingPage", "landingPage", "toDisposeLast", "maybeError", "error", "ensureError", "pluginError", "signals", "receivedSignal", "signalHandler", "signal", "e", "UnreachableCaseError", "expressionForError", "err", "typeDefs", "resolvers", "augmentedTypeDefs", "makeExecutableSchema", "providedDocumentStore", "computeCoreSchemaHash", "dispose", "stopError", "plugins", "alreadyHavePluginWithInternalId", "id", "pluginIsInternal", "pluginsByInternalID", "p", "seen", "ApolloServerPluginCacheControl", "ApolloServerPluginUsageReporting", "alreadyHavePlugin", "enabledViaEnvVar", "ApolloServerPluginSchemaReporting", "ApolloServerPluginInlineTrace", "ApolloServerPluginLandingPageLocalDefault", "ApolloServerPluginLandingPageProductionDefault", "ApolloServerPluginDisableSuggestions", "httpGraphQLRequest", "context", "runningServerState", "renderedHtml", "HeaderMap", "preventCsrf", "contextValue", "ensureGraphQLError", "runPotentiallyBatchedHttpQuery", "maybeError_", "ApolloServerErrorCode", "requestHead", "formattedErrors", "httpFromErrors", "normalizeAndFormatErrors", "chooseContentTypeForSingleResultResponse", "MEDIA_TYPES", "request", "acceptHeader", "Negotiator", "options", "graphQLRequest", "internalExecuteOperation", "server", "internals", "sharedResponseHTTPGraphQLHead", "requestContext", "newHTTPGraphQLHead", "cloneObject", "newCachePolicy", "processGraphQLRequest", "head", "preferred", "object", "import_koa", "import_graphql", "import_gateway", "createFacadeModuleFactory", "__name", "moduleName", "fn", "facadeModuleFactory", "config", "facadeModule", "facade", "createFacadeModule", "module", "decomposeError", "error", "name", "code", "message", "details", "error_description", "stack", "import_subgraph", "import_graphql", "resolvers", "__name", "_", "__", "ctx", "import_graphql", "import_graphql", "FacadeStatusType", "FacadeStatusQueryType", "FacadeStatusType", "schema", "FederatedExampleSchema", "schema", "resolvers", "facadeStatusModule", "createFacadeModule", "facade", "FederatedExampleSchema", "import_koa_mount", "import_user", "import_role", "import_authentication_log", "import_token", "import_oauth", "authSubjectType", "import_graphql", "import_graphql", "Upload", "__name", "resolve", "reject", "file", "GraphQLUpload", "value", "Upload", "node", "GraphQLUpload_default", "import_lodash", "capitalizeProtoName", "__name", "name", "v", "getKeys", "__name", "obj", "set", "keys", "key", "value", "decodeBufferFields", "items", "bufferFields", "item", "existingBufferFields", "_", "bufferField", "capitalize", "__name", "s", "snakeToCamel", "word", "i", "camelToSnake", "serviceName", "x", "y", "getServiceName", "camelCase", "useSubscriptions", "setUseSubscriptions", "value", "getUseSubscriptions", "LatentBuffer", "callback", "items", "latency", "resolve", "LatentResourceMapBuffer", "import_ts_proto_descriptors", "registeredTypings", "typeNameAndNameSpaceMapping", "registeredEnumTypes", "MapScalar", "GoogleProtobufAnyValue", "protobufAnyFields", "GoogleProtobufAny", "IGoogleProtobufAny", "DateTime", "IDateTime", "googleProtobufAnyName", "googleProtobufTimestampName", "Mutate", "CRUD_TRAVERSAL_OP_NAMES", "TodoScalar", "__name", "getTyping", "__name", "type", "registeredTypings", "resolveMeta", "__name", "key", "field", "rootObjType", "objName", "input", "result", "objType", "googleProtobufAnyName", "IGoogleProtobufAny", "GoogleProtobufAny", "googleProtobufTimestampName", "IDateTime", "DateTime", "registeredTypings", "typingData", "mapEntry", "MapScalar", "authSubjectType", "GraphQLUpload_default", "TodoScalar", "ModeType", "registerTyping", "protoPackage", "message", "methodDef", "opts", "inputOpts", "messageOptions", "insertMode", "crudOperation", "type", "method", "Mutate", "CRUD_TRAVERSAL_OP_NAMES", "typeNameAndNameSpaceMapping", "name", "capitalizeProtoName", "inputName", "fields", "resolvedMeta", "data", "resolved", "inputFields", "resultObj", "resultInputObj", "registerEnumTyping", "values", "entry", "registeredEnumTypes", "registerMessageTypesRecursive", "packageName", "options", "types", "m", "enumType", "registerPackagesRecursive", "protoMetadata", "meta", "import_graphql", "Mutate", "preProcessGQLInput", "__name", "data", "model", "encoded", "fields", "converted", "key", "d", "postProcessGQLOutput", "decoded", "getWhitelistBlacklistConfig", "metaService", "config", "meta", "entity", "queryList", "methods", "mut", "m", "que", "whitelist", "blacklist", "val", "import_subgraph", "import_graphql", "stream", "import_lodash", "import_nice_grpc", "import_rc_grpc_clients", "import_resource_base", "e", "t", "r", "__name", "n", "t", "n", "r", "e", "__name", "t", "n", "__name", "e", "a", "o", "i", "r", "copiedValue: Record<PropertyKey, unknown>", "copiedValue: unknown[]", "t", "n", "t", "r", "i", "__name", "e", "e", "__name", "e", "t", "__name", "e", "__name", "e", "__name", "t", "n", "__name", "e", "out: Partial<Pick<T, Keys[number]>>", "r", "import_logger", "retry", "import_events", "async", "import_node_diagnostics_channel", "channelsNamespace", "operationId", "createDiagnosticContext", "context", "__name", "notifyCreation", "type", "instance", "instancesChannel", "createChannel", "name", "channel", "simpleChannel", "createTracingChannel", "connectionsConnectsChannel", "connectionsApiChannel", "connectionsPoolGetsChannel", "baseApisChannel", "baseMetadataChannel", "adminTopicsChannel", "adminGroupsChannel", "adminClientQuotasChannel", "adminLogDirsChannel", "producerInitIdempotentChannel", "producerSendsChannel", "consumerGroupChannel", "consumerHeartbeatChannel", "consumerReceivesChannel", "consumerFetchesChannel", "consumerConsumesChannel", "consumerCommitsChannel", "consumerOffsetsChannel", "consumerLagChannel", "protocolAPIsByName", "protocolAPIsById", "protocolErrorsCodesById", "protocolErrors", "kGenericError", "kMultipleErrors", "GenericError", "__name", "kGenericError", "error", "code", "message", "cause", "rest", "key", "value", "property", "MultipleErrors", "_MultipleErrors", "kMultipleErrors", "errors", "found", "AuthenticationError", "_AuthenticationError", "properties", "NetworkError", "_NetworkError", "ProtocolError", "_ProtocolError", "codeOrId", "response", "id", "canRetry", "protocolErrors", "protocolErrorsCodesById", "OutOfBoundsError", "_OutOfBoundsError", "ResponseError", "_ResponseError", "apiName", "apiVersion", "protocolAPIsById", "path", "errorCode", "TimeoutError", "UnexpectedCorrelationIdError", "_UnexpectedCorrelationIdError", "UnsupportedApiError", "_UnsupportedApiError", "GenericError", "__name", "message", "properties", "UnsupportedCompressionError", "_UnsupportedCompressionError", "UserError", "_UserError", "GenericError", "__name", "message", "properties", "import__", "import_debug", "import_node_util", "PromiseWithResolversPolyfill", "resolve", "reject", "_resolve", "_reject", "__name", "PromiseWithResolvers", "ajv", "loggers", "debug", "debugDumpLogger", "_", "x", "property", "current", "context", "root", "schema", "NumericMap", "key", "fallback", "value", "existing", "niceJoin", "array", "lastSeparator", "separator", "listErrorMessage", "type", "enumErrorMessage", "keysOnly", "k", "v", "groupByProperty", "entries", "buckets", "len", "e", "humanize", "label", "buffer", "formatted", "debugDump", "values", "debugDumpLogger", "v", "__name", "import_node_events", "kCallbackPromise", "kNoopCallbackReturnValue", "noopCallback", "__name", "createPromisifiedCallback", "promise", "resolve", "reject", "PromiseWithResolvers", "callback", "error", "payload", "runConcurrentCallbacks", "errorMessage", "collection", "operation", "remaining", "hasErrors", "errors", "results", "i", "operationCallback", "index", "e", "result", "MultipleErrors", "item", "createTimeoutCallback", "timeout", "timeoutFired", "timeoutHandle", "TimeoutError", "import_fastq", "import_node_events", "import_node_net", "import_node_tls", "SASLMechanisms", "allowedSASLMechanisms", "FindCoordinatorKeyTypes", "ProduceAcks", "allowedProduceAcks", "GroupProtocols", "allowedGroupProtocols", "FetchIsolationLevels", "allowedFetchIsolationLevels", "ListOffsetTimestamps", "ResourceTypes", "ResourcePatternTypes", "AclOperations", "AclPermissionTypes", "ConfigSources", "ConfigTypes", "IncrementalAlterConfigTypes", "ClientQuotaMatchTypes", "ClientQuotaEntityTypes", "ClientQuotaKeys", "ScramMechanisms", "DescribeClusterEndpointTypes", "ConsumerGroupStates", "TransactionStates", "FeatureUpgradeTypes", "apis_exports", "__export", "AclOperations", "AclPermissionTypes", "ClientQuotaEntityTypes", "ClientQuotaKeys", "ClientQuotaMatchTypes", "ConfigSources", "ConfigTypes", "ConsumerGroupStates", "DescribeClusterEndpointTypes", "FeatureUpgradeTypes", "FetchIsolationLevels", "FindCoordinatorKeyTypes", "GroupProtocols", "IncrementalAlterConfigTypes", "ListOffsetTimestamps", "ProduceAcks", "ResourcePatternTypes", "ResourceTypes", "SASLMechanisms", "ScramMechanisms", "TransactionStates", "add_offsets_to_txn_v4_exports", "add_partitions_to_txn_v5_exports", "allowedFetchIsolationLevels", "allowedGroupProtocols", "allowedProduceAcks", "allowedSASLMechanisms", "alter_client_quotas_v1_exports", "alter_configs_v2_exports", "alter_partition_reassignments_v0_exports", "alter_partition_v3_exports", "alter_replica_log_dirs_v2_exports", "alter_user_scram_credentials_v0_exports", "api_versions_v3_exports", "api_versions_v4_exports", "consumer_group_describe_v0_exports", "consumer_group_heartbeat_v0_exports", "createAPI", "create_acls_v3_exports", "create_delegation_token_v3_exports", "create_partitions_v3_exports", "createPromisifiedCallback", "createTimeoutCallback", "create_topics_v7_exports", "delete_acls_v3_exports", "delete_groups_v2_exports", "delete_records_v2_exports", "delete_topics_v6_exports", "describe_acls_v3_exports", "describe_client_quotas_v0_exports", "describe_cluster_v1_exports", "describe_configs_v4_exports", "describe_delegation_token_v3_exports", "describe_groups_v5_exports", "describe_log_dirs_v4_exports", "describe_producers_v0_exports", "describe_quorum_v2_exports", "describe_topic_partitions_v0_exports", "describe_transactions_v0_exports", "describe_user_scram_credentials_v0_exports", "end_txn_v4_exports", "envelope_v0_exports", "expire_delegation_token_v2_exports", "fetch_v15_exports", "fetch_v16_exports", "fetch_v17_exports", "find_coordinator_v4_exports", "find_coordinator_v5_exports", "find_coordinator_v6_exports", "get_telemetry_subscriptions_v0_exports", "heartbeat_v4_exports", "incremental_alter_configs_v1_exports", "init_producer_id_v4_exports", "init_producer_id_v5_exports", "join_group_v9_exports", "kCallbackPromise", "kNoopCallbackReturnValue", "leave_group_v5_exports", "list_client_metrics_resources_v0_exports", "list_groups_v4_exports", "list_groups_v5_exports", "list_offsets_v8_exports", "list_offsets_v9_exports", "list_partition_reassignments_v0_exports", "list_transactions_v1_exports", "metadata_v12_exports", "noopCallback", "offset_commit_v8_exports", "offset_commit_v9_exports", "offset_delete_v0_exports", "offset_fetch_v8_exports", "offset_fetch_v9_exports", "produce_v10_exports", "produce_v11_exports", "produce_v9_exports", "push_telemetry_v0_exports", "renew_delegation_token_v2_exports", "runConcurrentCallbacks", "sasl_authenticate_v2_exports", "sasl_handshake_v1_exports", "sync_group_v5_exports", "txn_offset_commit_v4_exports", "unregister_broker_v0_exports", "update_features_v1_exports", "import_node_util", "createAPI", "apiKey", "apiVersion", "createRequest", "parseResponse", "hasRequestHeaderTaggedFields", "hasResponseHeaderTaggedFields", "api", "__name", "connection", "args", "cb", "alter_client_quotas_v1_exports", "__export", "api", "createRequest", "parseResponse", "EMPTY_BUFFER", "EMPTY_UUID", "EMPTY_OR_SINGLE_COMPACT_LENGTH_SIZE", "EMPTY_TAGGED_FIELDS_BUFFER", "MOST_SIGNIFICANT_BIT_FLAG_64", "LEAST_SIGNIFICANT_7_BITS_64", "BITS_8PLUS_MASK_64", "intZigZagEncode", "value", "__name", "intZigZagDecode", "int64ZigZagEncode", "int64ZigZagDecode", "sizeOfUnsignedVarInt", "bytes", "sizeOfUnsignedVarInt64", "instanceIdentifier", "DynamicBuffer", "_DynamicBuffer", "__name", "#readBuffer", "target", "buffers", "buffer", "EMPTY_BUFFER", "start", "end", "OutOfBoundsError", "length", "startBuffer", "current", "#findInitialBuffer", "currentEnd", "position", "deep", "offset", "encoding", "finalIndex", "#readMultiple", "i", "byte", "value", "read", "startOffset", "LEAST_SIGNIFICANT_7_BITS_64", "MOST_SIGNIFICANT_BIT_FLAG_64", "intZigZagDecode", "int64ZigZagDecode", "append", "sizeOfUnsignedVarInt", "sizeOfUnsignedVarInt64", "BITS_8PLUS_MASK_64", "intZigZagEncode", "int64ZigZagEncode", "index", "instanceIdentifier", "Writer", "_Writer", "__name", "#buffer", "target", "DynamicBuffer", "bl", "buffer", "i", "humanize", "value", "append", "compact", "encoding", "EMPTY_UUID", "entryWriter", "appendTrailingTaggedFields", "length", "entry", "_", "EMPTY_TAGGED_FIELDS_BUFFER", "createRequest", "entries", "validateOnly", "Writer", "w", "e", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "response", "r", "i", "entry", "ResponseError", "api", "createAPI", "alter_configs_v2_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "resources", "validateOnly", "Writer", "w", "r", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "response", "i", "errorCode", "ResponseError", "api", "createAPI", "alter_partition_reassignments_v0_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "timeoutMs", "topics", "Writer", "w", "t", "p", "r", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "throttleTimeMs", "errorCode", "response", "i", "j", "partition", "ResponseError", "api", "createAPI", "alter_partition_v3_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "brokerId", "brokerEpoch", "topic", "Writer", "w", "t", "p", "n", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "throttleTimeMs", "errorCode", "response", "r", "i", "j", "partition", "ResponseError", "api", "createAPI", "alter_replica_log_dirs_v2_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "dirs", "Writer", "w", "d", "t", "p", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "response", "r", "i", "j", "partition", "ResponseError", "api", "createAPI", "alter_user_scram_credentials_v0_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "deletions", "upsertions", "Writer", "w", "d", "u", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "response", "r", "i", "result", "ResponseError", "api", "createAPI", "consumer_group_describe_v0_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "groupIds", "includeAuthorizedOperations", "Writer", "w", "r", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "response", "i", "errorCode", "ResponseError", "api", "createAPI", "create_acls_v3_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "creations", "Writer", "w", "c", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "response", "r", "i", "result", "ResponseError", "api", "createAPI", "create_delegation_token_v3_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "ownerPrincipalType", "ownerPrincipalName", "renewers", "maxLifetimeMs", "Writer", "w", "r", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "response", "ResponseError", "api", "createAPI", "create_partitions_v3_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "topics", "timeoutMs", "validateOnly", "Writer", "w", "t", "b", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "response", "r", "i", "result", "ResponseError", "api", "createAPI", "create_topics_v7_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "topics", "timeoutMs", "validateOnly", "Writer", "w", "topic", "assignment", "b", "config", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "response", "r", "i", "ResponseError", "api", "createAPI", "delete_acls_v3_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "filters", "Writer", "w", "f", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "response", "r", "i", "errorCode", "j", "ResponseError", "api", "createAPI", "delete_groups_v2_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "groupsNames", "Writer", "w", "r", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "response", "i", "group", "ResponseError", "api", "createAPI", "delete_records_v2_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "topics", "timeoutMs", "Writer", "w", "t", "p", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "response", "r", "i", "j", "partition", "ResponseError", "api", "createAPI", "delete_topics_v6_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "topics", "timeoutMs", "Writer", "w", "topic", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "response", "r", "i", "topicResponse", "ResponseError", "api", "createAPI", "describe_acls_v3_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "resourceTypeFilter", "resourceNameFilter", "patternTypeFilter", "principalFilter", "hostFilter", "operation", "permissionType", "Writer", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "response", "r", "ResponseError", "api", "createAPI", "describe_client_quotas_v0_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "components", "strict", "Writer", "w", "c", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "response", "r", "ResponseError", "api", "createAPI", "describe_cluster_v1_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "includeClusterAuthorizedOperations", "endpointType", "Writer", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "response", "r", "ResponseError", "api", "createAPI", "describe_configs_v4_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "resources", "includeSynonyms", "includeDocumentation", "Writer", "w", "c", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "response", "r", "i", "errorCode", "ResponseError", "api", "createAPI", "describe_delegation_token_v3_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "owners", "Writer", "w", "r", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "response", "ResponseError", "api", "createAPI", "describe_groups_v5_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "groups", "includeAuthorizedOperations", "Writer", "w", "g", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "response", "r", "i", "group", "ResponseError", "api", "createAPI", "describe_log_dirs_v4_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "topics", "Writer", "w", "t", "p", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "throttleTimeMs", "errorCode", "response", "r", "i", "ResponseError", "api", "createAPI", "describe_producers_v0_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "topics", "Writer", "w", "t", "p", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "response", "r", "i", "partition", "ResponseError", "api", "createAPI", "describe_quorum_v2_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "topics", "Writer", "w", "t", "p", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "errorCode", "response", "r", "i", "j", "partition", "ResponseError", "api", "createAPI", "describe_topic_partitions_v0_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "topics", "responsePartitionLimit", "cursor", "writer", "Writer", "w", "t", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "response", "r", "i", "errorCode", "j", "ResponseError", "api", "createAPI", "describe_transactions_v0_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "transactionalIds", "Writer", "w", "t", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "response", "r", "i", "state", "ResponseError", "api", "createAPI", "describe_user_scram_credentials_v0_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "users", "Writer", "w", "u", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "throttleTimeMs", "errorCode", "response", "r", "i", "user", "ResponseError", "api", "createAPI", "envelope_v0_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "requestData", "requestPrincipal", "clientHostAddress", "Writer", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "response", "ResponseError", "api", "createAPI", "expire_delegation_token_v2_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "hmac", "expiryTimePeriodMs", "Writer", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "response", "ResponseError", "api", "createAPI", "incremental_alter_configs_v1_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "resources", "validateOnly", "Writer", "w", "r", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "response", "i", "errorCode", "ResponseError", "api", "createAPI", "list_groups_v4_exports", "__export", "api", "createRequest", "parseResponse", "NUMBER_CHAR_RE", "STR_SPLITTERS", "isUppercase", "char", "__name", "splitByCase", "str", "separators", "splitters", "parts", "buff", "previousUpper", "previousSplitter", "isSplitter", "isUpper", "lastChar", "upperFirst", "pascalCase", "str", "opts", "splitByCase", "p", "upperFirst", "__name", "createRequest", "statesFilter", "Writer", "w", "s", "pascalCase", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "response", "r", "ResponseError", "api", "createAPI", "list_groups_v5_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "statesFilter", "typesFilter", "Writer", "w", "s", "t", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "response", "r", "ResponseError", "api", "createAPI", "list_partition_reassignments_v0_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "timeoutMs", "topics", "Writer", "w", "t", "p", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "response", "r", "ResponseError", "api", "createAPI", "list_transactions_v1_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "stateFilters", "producerIdFilters", "durationFilter", "Writer", "w", "t", "p", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "response", "r", "ResponseError", "api", "createAPI", "offset_delete_v0_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "groupId", "topics", "Writer", "w", "t", "p", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "errorCode", "response", "r", "i", "j", "partition", "ResponseError", "api", "createAPI", "renew_delegation_token_v2_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "hmac", "renewPeriodMs", "Writer", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "response", "ResponseError", "api", "createAPI", "unregister_broker_v0_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "brokerId", "Writer", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "response", "ResponseError", "api", "createAPI", "update_features_v1_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "timeoutMs", "featureUpdates", "validateOnly", "Writer", "w", "f", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "throttleTimeMs", "errorCode", "response", "r", "i", "result", "ResponseError", "api", "createAPI", "consumer_group_heartbeat_v0_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "groupId", "memberId", "memberEpoch", "instanceId", "rackId", "rebalanceTimeoutMs", "subscribedTopicNames", "serverAssignor", "topicPartitions", "Writer", "w", "t", "p", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "response", "r", "ResponseError", "api", "createAPI", "fetch_v15_exports", "__export", "api", "createRequest", "parseResponse", "instanceIdentifier", "Reader", "_Reader", "__name", "target", "buffer", "Writer", "DynamicBuffer", "length", "position", "value", "read", "compact", "encoding", "EMPTY_BUFFER", "reader", "discardTrailingTaggedFields", "i", "map", "key", "import_node_module", "import_node_zlib", "require", "zstdCompressSync", "zstdDecompressSync", "gzipSync", "gunzipSync", "zlib", "CompressionAlgorithms", "allowedCompressionsAlgorithms", "ensureBuffer", "data", "DynamicBuffer", "__name", "snappyCompressSync", "snappyDecompressSync", "lz4CompressFrameSync", "lz4DecompressFrameSync", "loadSnappy", "snappy", "UnsupportedCompressionError", "loadLZ4", "lz4", "compressionsAlgorithms", "compressionsAlgorithmsByBitmask", "a", "import_node_module", "CRC", "loadNativeCRC32C", "require", "nativeImplementation", "__name", "data", "bytes", "DynamicBuffer", "jsCRC32C", "crc", "len", "crc32c", "CURRENT_RECORD_VERSION", "IS_TRANSACTIONAL", "IS_COMPRESSED", "BATCH_HEAD", "messageSchema", "createRecord", "message", "offsetDelta", "firstTimestamp", "Writer", "w", "key", "value", "__name", "readRecord", "reader", "r", "createRecordsBatch", "messages", "options", "now", "maxTimestamp", "buffer", "DynamicBuffer", "i", "ts", "record", "attributes", "firstSequence", "firstMessage", "algorithm", "compressionsAlgorithms", "UnsupportedCompressionError", "compressed", "writer", "crc32c", "readRecordsBatch", "initialPosition", "batch", "recordsLength", "compression", "compressionsAlgorithmsByBitmask", "headersLength", "compressedDataLen", "Reader", "readRecordsBatches", "batches", "createRequest", "maxWaitMs", "minBytes", "maxBytes", "isolationLevel", "sessionId", "sessionEpoch", "topics", "forgottenTopicsData", "rackId", "Writer", "w", "t", "p", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "throttleTimeMs", "errorCode", "response", "r", "i", "j", "partition", "recordsSize", "readRecordsBatches", "Reader", "ResponseError", "api", "createAPI", "fetch_v16_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "maxWaitMs", "minBytes", "maxBytes", "isolationLevel", "sessionId", "sessionEpoch", "topics", "forgottenTopicsData", "rackId", "Writer", "w", "t", "p", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "throttleTimeMs", "errorCode", "response", "r", "i", "j", "partition", "recordsSize", "readRecordsBatches", "Reader", "ResponseError", "api", "createAPI", "fetch_v17_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "maxWaitMs", "minBytes", "maxBytes", "isolationLevel", "sessionId", "sessionEpoch", "topics", "forgottenTopicsData", "rackId", "Writer", "w", "t", "p", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "throttleTimeMs", "errorCode", "response", "r", "i", "j", "partition", "recordsSize", "readRecordsBatches", "Reader", "ResponseError", "api", "createAPI", "heartbeat_v4_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "groupId", "generationId", "memberId", "groupInstanceId", "Writer", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "response", "ResponseError", "api", "createAPI", "join_group_v9_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "groupId", "sessionTimeoutMs", "rebalanceTimeoutMs", "memberId", "groupInstanceId", "protocolType", "protocols", "reason", "Writer", "w", "protocol", "EMPTY_BUFFER", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "response", "r", "ResponseError", "api", "createAPI", "leave_group_v5_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "groupId", "members", "Writer", "w", "m", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "throttleTimeMs", "errorCode", "response", "r", "i", "member", "ResponseError", "api", "createAPI", "list_offsets_v8_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "replica", "isolationLevel", "topics", "Writer", "w", "topic", "partition", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "response", "r", "i", "j", "ResponseError", "api", "createAPI", "list_offsets_v9_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "replica", "isolationLevel", "topics", "Writer", "w", "topic", "partition", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "response", "r", "i", "j", "ResponseError", "api", "createAPI", "offset_commit_v8_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "groupId", "generationIdOrMemberEpoch", "memberId", "groupInstanceId", "topics", "Writer", "w", "t", "p", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "response", "r", "i", "j", "partition", "ResponseError", "api", "createAPI", "offset_commit_v9_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "groupId", "generationIdOrMemberEpoch", "memberId", "groupInstanceId", "topics", "Writer", "w", "t", "p", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "response", "r", "i", "j", "partition", "ResponseError", "api", "createAPI", "offset_fetch_v8_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "groups", "requireStable", "Writer", "w", "g", "t", "i", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "response", "r", "group", "j", "k", "partition", "ResponseError", "api", "createAPI", "offset_fetch_v9_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "groups", "requireStable", "Writer", "w", "g", "t", "i", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "response", "r", "group", "j", "k", "partition", "ResponseError", "api", "createAPI", "sync_group_v5_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "groupId", "generationId", "memberId", "groupInstanceId", "protocolType", "protocolName", "assignments", "Writer", "w", "a", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "response", "ResponseError", "api", "createAPI", "api_versions_v3_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "clientSoftwareName", "clientSoftwareVersion", "Writer", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "response", "r", "protocolAPIsById", "ResponseError", "api", "createAPI", "api_versions_v4_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "clientSoftwareName", "clientSoftwareVersion", "Writer", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "response", "r", "protocolAPIsById", "ResponseError", "api", "createAPI", "find_coordinator_v4_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "keyType", "coordinatorKeys", "Writer", "w", "k", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "response", "r", "i", "coordinator", "ResponseError", "api", "createAPI", "find_coordinator_v5_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "keyType", "coordinatorKeys", "Writer", "w", "k", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "response", "r", "i", "coordinator", "ResponseError", "api", "createAPI", "find_coordinator_v6_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "keyType", "coordinatorKeys", "Writer", "w", "k", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "response", "r", "i", "coordinator", "ResponseError", "api", "createAPI", "metadata_v12_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "topics", "allowAutoTopicCreation", "includeTopicAuthorizedOperations", "Writer", "w", "topic", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "response", "r", "i", "errorCode", "j", "ResponseError", "api", "createAPI", "add_offsets_to_txn_v4_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "transactionalId", "producerId", "producerEpoch", "groupId", "Writer", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "response", "ResponseError", "api", "createAPI", "add_partitions_to_txn_v5_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "transactions", "Writer", "w", "transaction", "topic", "partition", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "throttleTimeMs", "errorCode", "response", "r", "i", "j", "k", "ResponseError", "api", "createAPI", "end_txn_v4_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "transactionalId", "producerId", "producerEpoch", "committed", "Writer", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "response", "ResponseError", "api", "createAPI", "init_producer_id_v4_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "transactionalId", "transactionTimeoutMs", "producerId", "producerEpoch", "Writer", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "response", "ResponseError", "api", "createAPI", "init_producer_id_v5_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "transactionalId", "transactionTimeoutMs", "producerId", "producerEpoch", "Writer", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "response", "ResponseError", "api", "createAPI", "produce_v10_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "acks", "timeout", "topicData", "options", "now", "message", "writer", "Writer", "groupByProperty", "w", "topic", "messages", "partition", "records", "createRecordsBatch", "ProduceAcks", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "response", "r", "i", "j", "index", "errorCode", "k", "recordError", "ResponseError", "api", "createAPI", "produce_v11_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "acks", "timeout", "topicData", "options", "now", "message", "writer", "Writer", "groupByProperty", "w", "topic", "messages", "partition", "records", "createRecordsBatch", "ProduceAcks", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "response", "r", "i", "j", "index", "errorCode", "k", "recordError", "ResponseError", "api", "createAPI", "produce_v9_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "acks", "timeout", "topicData", "options", "now", "message", "writer", "Writer", "groupByProperty", "w", "topic", "messages", "partition", "records", "createRecordsBatch", "ProduceAcks", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "response", "r", "i", "j", "index", "errorCode", "k", "recordError", "ResponseError", "api", "createAPI", "txn_offset_commit_v4_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "transactionalId", "groupId", "producerId", "producerEpoch", "generationId", "memberId", "groupInstanceId", "topics", "Writer", "w", "t", "p", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "response", "r", "i", "j", "partition", "ResponseError", "api", "createAPI", "sasl_authenticate_v2_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "authBytes", "Writer", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "response", "ResponseError", "api", "createAPI", "sasl_handshake_v1_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "mechanism", "Writer", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "response", "r", "ResponseError", "api", "createAPI", "get_telemetry_subscriptions_v0_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "clientInstanceId", "Writer", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "errors", "throttleTimeMs", "errorCode", "response", "r", "ResponseError", "api", "createAPI", "list_client_metrics_resources_v0_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "Writer", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "response", "r", "ResponseError", "api", "createAPI", "push_telemetry_v0_exports", "__export", "api", "createRequest", "parseResponse", "createRequest", "clientInstanceId", "subscriptionId", "terminating", "compressionType", "metrics", "Writer", "__name", "parseResponse", "_correlationId", "apiKey", "apiVersion", "reader", "response", "ResponseError", "api", "createAPI", "import_fibonacci_heap", "import_heap", "import_suffix_array", "import_vector", "import_lru_cache", "MinFibonacciHeap", "FibonacciHeap", "MaxFibonacciHeap", "MinHeap", "Heap", "MaxHeap", "GeneralizedSuffixArray", "SuffixArray", "Uint8Vector", "Vector", "Uint8ClampedVector", "Int8Vector", "Uint16Vector", "Int16Vector", "Uint32Vector", "Int32Vector", "Float32Vector", "Float64Vector", "PointerVector", "seed", "m", "r", "cache", "tail", "tripleRightShift", "num", "bits", "__name", "murmur2", "data", "useCache", "key", "existing", "length", "h", "i", "k", "hash", "oauth_bearer_exports", "__export", "authenticate", "jwtValidateAuthenticationBytes", "getCredential", "label", "credentialOrProvider", "callback", "AuthenticationError", "credential", "token", "error", "__name", "jwtValidateAuthenticationBytes", "authBytes", "callback", "authData", "AuthenticationError", "__name", "authenticate", "authenticateAPI", "connection", "tokenOrProvider", "createPromisifiedCallback", "getCredential", "error", "token", "kCallbackPromise", "plain_exports", "__export", "authenticate", "authenticate", "authenticateAPI", "connection", "usernameProvider", "passwordProvider", "callback", "createPromisifiedCallback", "getCredential", "error", "username", "password", "kCallbackPromise", "__name", "scram_sha_exports", "__export", "ScramAlgorithms", "authenticate", "createNonce", "defaultCrypto", "h", "hi", "hmac", "parseParameters", "sanitizeString", "xor", "import_node_crypto", "GS2_HEADER", "GS2_HEADER_BASE64", "HMAC_CLIENT_KEY", "HMAC_SERVER_KEY", "PARAMETERS_PARSER", "ScramAlgorithms", "createNonce", "__name", "sanitizeString", "str", "parseParameters", "data", "original", "param", "h", "definition", "hi", "password", "salt", "iterations", "hmac", "key", "xor", "a", "b", "AuthenticationError", "result", "defaultCrypto", "performAuthentication", "connection", "algorithm", "authenticateAPI", "crypto", "username", "callback", "clientNonce", "clientFirstMessageBare", "error", "firstResponse", "firstData", "serverNonce", "serverFirstMessage", "saltedPassword", "clientKey", "storedKey", "clientFinalMessageWithoutProof", "authMessage", "clientSignature", "clientProof", "serverKey", "serverSignature", "lastResponse", "lastData", "authenticate", "usernameProvider", "passwordProvider", "createPromisifiedCallback", "getCredential", "kCallbackPromise", "ConnectionStatuses", "defaultOptions", "currentInstance", "Connection", "EventEmitter", "__name", "#host", "#port", "#options", "#status", "#instanceId", "#clientId", "#ownerId", "#handleBackPressure", "#correlationId", "#nextMessage", "#afterDrainRequests", "#requestsQueue", "#inflightRequests", "#responseBuffer", "#responseReader", "#socket", "#socketMustBeDrained", "#reauthenticationTimeout", "clientId", "options", "fastq", "op", "cb", "DynamicBuffer", "Reader", "notifyCreation", "host", "port", "callback", "createPromisifiedCallback", "diagnosticContext", "createDiagnosticContext", "connectionsConnectsChannel", "kCallbackPromise", "connectionOptions", "connectionTimeoutHandler", "error", "TimeoutError", "connectionErrorHandler", "#onConnectionError", "createTLSConnection", "#onError", "#onData", "#onDrain", "#onClose", "#authenticate", "#onConnectionSucceed", "onConnect", "onError", "apiKey", "apiVersion", "createPayload", "responseParser", "hasRequestHeaderTaggedFields", "hasResponseHeaderTaggedFields", "correlationId", "diagnostic", "writer", "Writer", "payload", "err", "connectionsApiChannel", "request", "fastQueueCallback", "#sendRequest", "mechanism", "username", "password", "token", "allowedSASLMechanisms", "UserError", "sasl_handshake_v1_exports", "response", "AuthenticationError", "#onSaslAuthenticate", "SASLMechanisms", "plain_exports", "sasl_authenticate_v2_exports", "oauth_bearer_exports", "scram_sha_exports", "defaultCrypto", "NetworkError", "canWrite", "loggers", "protocolAPIsById", "cause", "#onSaslAuthenticationValidation", "sessionLifetimeMs", "authBytes", "chunk", "UnexpectedCorrelationIdError", "parser", "deserialized", "responseError", "EMPTY_OR_SINGLE_COMPACT_LENGTH_SIZE", "inflight", "currentInstance", "ConnectionPool", "EventEmitter", "__name", "#instanceId", "#clientId", "#closed", "#ownerId", "#connections", "#connectionOptions", "clientId", "connectionOptions", "notifyCreation", "broker", "callback", "createPromisifiedCallback", "connectionsPoolGetsChannel", "#get", "createDiagnosticContext", "kCallbackPromise", "brokers", "#getFirstAvailable", "runConcurrentCallbacks", "key", "connection", "cb", "error", "existing", "ConnectionStatuses", "Connection", "eventPayload", "mechanisms", "authentication", "current", "errors", "MultipleErrors", "parseBroker", "broker", "defaultPort", "host", "port", "__name", "stringSerializer", "data", "__name", "stringDeserializer", "serializersFrom", "serializer", "__name", "deserializersFrom", "deserializer", "serdeProperties", "stringSerializers", "stringSerializer", "stringDeserializers", "stringDeserializer", "import_node_events", "kInstance", "kRefreshOffsetsAndFetch", "kAutocommit", "version", "clientSoftwareName", "clientSoftwareVersion", "version", "idProperty", "topicWithPartitionAndOffsetProperties", "baseOptionsSchema", "allowedSASLMechanisms", "metadataOptionsSchema", "baseOptionsValidator", "ajv", "metadataOptionsValidator", "defaultPort", "defaultBaseOptions", "kClientId", "kBootstrapBrokers", "kApis", "kGetApi", "kGetConnection", "kGetBootstrapConnection", "kOptions", "kConnections", "kFetchConnections", "kCreateConnectionPool", "kClosed", "kListApis", "kMetadata", "kCheckNotClosed", "kClearMetadata", "kPerformWithRetry", "kPerformDeduplicated", "kValidateOptions", "kInspect", "kFormatValidationErrors", "kPrometheus", "kClientType", "kAfterCreate", "currentInstance", "Base", "__name", "kInstance", "#metadata", "#inflightDeduplications", "options", "defaultBaseOptions", "baseOptionsValidator", "broker", "parseBroker", "defaultPort", "section", "name", "args", "loggers", "callback", "createPromisifiedCallback", "kCallbackPromise", "baseApisChannel", "createDiagnosticContext", "validationError", "metadataOptionsValidator", "baseMetadataChannel", "nodeIds", "error", "metadata", "nodes", "node", "runConcurrentCallbacks", "nodeId", "concurrentCallback", "connection", "connections", "pool", "ConnectionPool", "#forwardEvents", "deduplicateCallback", "retryCallback", "api", "clientSoftwareName", "clientSoftwareVersion", "expiralDate", "topicsToFetch", "topic", "existingTopic", "autocreateTopics", "lastUpdate", "brokers", "host", "port", "id", "rawPartitions", "isInternal", "partitions", "rawPartition", "a", "b", "updatedMetadata", "NetworkError", "operationId", "operation", "attempt", "errors", "shouldSkipRetry", "retries", "result", "genericError", "retriable", "onClose", "timeout", "UserError", "MultipleErrors", "inflights", "cb", "apis", "UnsupportedApiError", "minVersion", "maxVersion", "i", "apiName", "candidate", "apis_exports", "target", "validator", "targetName", "throwOnErrors", "debugDump", "ajv", "type", "notifyCreation", "source", "events", "event", "groupsProperties", "idProperty", "createTopicOptionsSchema", "listTopicOptionsSchema", "deleteTopicOptionsSchema", "listGroupsOptionsSchema", "ConsumerGroupStates", "listErrorMessage", "describeGroupsOptionsSchema", "deleteGroupsOptionsSchema", "describeClientQuotasOptionsSchema", "ClientQuotaMatchTypes", "alterClientQuotasOptionsSchema", "describeLogDirsOptionsSchema", "createTopicsOptionsValidator", "ajv", "listTopicsOptionsValidator", "deleteTopicsOptionsValidator", "listGroupsOptionsValidator", "describeGroupsOptionsValidator", "deleteGroupsOptionsValidator", "describeClientQuotasOptionsValidator", "alterClientQuotasOptionsValidator", "describeLogDirsOptionsValidator", "Admin", "Base", "__name", "options", "kAfterCreate", "callback", "createPromisifiedCallback", "kCheckNotClosed", "kCallbackPromise", "validationError", "kValidateOptions", "listTopicsOptionsValidator", "adminTopicsChannel", "#listTopics", "createDiagnosticContext", "createTopicsOptionsValidator", "#createTopics", "deleteTopicsOptionsValidator", "#deleteTopics", "listGroupsOptionsValidator", "adminGroupsChannel", "#listGroups", "describeGroupsOptionsValidator", "#describeGroups", "deleteGroupsOptionsValidator", "#deleteGroups", "describeClientQuotasOptionsValidator", "adminClientQuotasChannel", "#describeClientQuotas", "alterClientQuotasOptionsValidator", "#alterClientQuotas", "describeLogDirsOptionsValidator", "adminLogDirsChannel", "#describeLogDirs", "includeInternals", "kPerformDeduplicated", "deduplicateCallback", "kPerformWithRetry", "retryCallback", "kGetBootstrapConnection", "error", "connection", "kGetApi", "api", "metadata", "topics", "name", "isInternal", "numPartitions", "replicationFactor", "assignments", "configs", "partition", "brokers", "requests", "topic", "kOptions", "response", "created", "id", "partitions", "replicas", "configuration", "value", "kMetadata", "runConcurrentCallbacks", "broker", "concurrentCallback", "kGetConnection", "results", "groups", "result", "raw", "#findGroupCoordinator", "coordinators", "group", "node", "coordinator", "member", "reader", "Reader", "memberMetadata", "memberAssignments", "r", "FindCoordinatorKeyTypes", "MultipleErrors", "ensureMetric", "metrics", "type", "name", "help", "metric", "labels", "__name", "import_node_stream", "MessagesStreamModes", "allowedMessagesStreamModes", "MessagesStreamFallbackModes", "allowedMessagesStreamFallbackModes", "groupOptionsProperties", "allowedGroupProtocols", "idProperty", "groupOptionsAdditionalValidations", "consumeOptionsProperties", "allowedFetchIsolationLevels", "serdeProperties", "groupOptionsSchema", "consumeOptionsSchema", "allowedMessagesStreamModes", "allowedMessagesStreamFallbackModes", "topicWithPartitionAndOffsetProperties", "consumerOptionsSchema", "fetchOptionsSchema", "commitOptionsSchema", "listCommitsOptionsSchema", "listOffsetsOptionsSchema", "getLagOptionsSchema", "groupOptionsValidator", "ajv", "groupIdAndOptionsValidator", "consumeOptionsValidator", "consumerOptionsValidator", "fetchOptionsValidator", "commitOptionsValidator", "listCommitsOptionsValidator", "listOffsetsOptionsValidator", "getLagOptionsValidator", "defaultConsumerOptions", "noopDeserializer", "data", "__name", "defaultCorruptedMessageHandler", "currentInstance", "MessagesStream", "#consumer", "#mode", "#fallbackMode", "#paused", "#fetches", "#maxFetches", "#options", "#topics", "#offsetsToFetch", "#offsetsToCommit", "#offsetsCommitted", "#inflightNodes", "#keyDeserializer", "#valueDeserializer", "#headerKeyDeserializer", "#headerValueDeserializer", "#autocommitEnabled", "#autocommitInterval", "#autocommitInflight", "#shouldClose", "#closeCallbacks", "#metricsConsumedMessages", "#corruptedMessageHandler", "kInstance", "consumer", "options", "autocommit", "mode", "fallbackMode", "maxFetches", "offsets", "deserializers", "onCorruptedMessage", "_partitionAssigner", "otherOptions", "MessagesStreamModes", "UserError", "defaultConsumerOptions", "MessagesStreamFallbackModes", "topic", "partition", "offset", "kAutocommit", "#refreshOffsets", "error", "#fetch", "kPrometheus", "ensureMetric", "notifyCreation", "callback", "createPromisifiedCallback", "kCallbackPromise", "#invokeCloseCallbacks", "event", "listener", "metadata", "requests", "topicIds", "requestedOffsets", "assignment", "#assignmentsForTopic", "partitions", "leader", "leaderRequests", "topicId", "fetchOffset", "response", "#pushRecords", "canPush", "keyDeserializer", "valueDeserializer", "headerKeyDeserializer", "headerValueDeserializer", "diagnosticContext", "topicResponse", "recordsBatches", "batch", "firstTimestamp", "firstOffset", "leaderEpoch", "record", "createDiagnosticContext", "consumerReceivesChannel", "commit", "noopCallback", "#commit", "headers", "headerKey", "headerValue", "key", "value", "message", "lastOffset", "#updateCommittedOffset", "previous", "ListOffsetTimestamps", "#assignOffsets", "topics", "commits", "kRefreshOffsetsAndFetch", "i", "committed", "kInspect", "args", "roundRobinAssigner", "_current", "members", "topics", "metadata", "membersSize", "assignments", "memberId", "currentMember", "topic", "partitionsCount", "i", "member", "topicAssignments", "__name", "TopicsMap", "__name", "#current", "#metric", "k", "topic", "updated", "existing", "#updateCurrentList", "topics", "metric", "Consumer", "Base", "__name", "#assignments", "#members", "#membershipActive", "#isLeader", "#protocol", "#coordinatorId", "#heartbeatInterval", "#lastHeartbeatIntervalMs", "#lastHeartbeat", "#useConsumerGroupProtocol", "#memberEpoch", "#groupRemoteAssignor", "#streams", "#lagMonitoring", "kFetchConnections", "#metricActiveStreams", "#metricLags", "options", "kOptions", "defaultBaseOptions", "defaultConsumerOptions", "kValidateOptions", "consumerOptionsValidator", "TopicsMap", "#validateGroupOptions", "groupIdAndOptionsValidator", "kCreateConnectionPool", "kPrometheus", "ensureMetric", "kAfterCreate", "force", "callback", "createPromisifiedCallback", "kClosed", "kCallbackPromise", "closer", "#leaveGroupConsumerProtocol", "#leaveGroupClassicProtocol", "_", "error", "kCheckNotClosed", "validationError", "consumeOptionsValidator", "#consume", "fetchOptionsValidator", "consumerFetchesChannel", "#fetch", "createDiagnosticContext", "commitOptionsValidator", "consumerCommitsChannel", "#commit", "listOffsetsOptionsValidator", "consumerOffsetsChannel", "#listOffsets", "listCommitsOptionsValidator", "#listCommittedOffsets", "getLagOptionsValidator", "offsets", "committeds", "stream", "topic", "offset", "lag", "partitions", "toInclude", "hasPartitionsFilter", "partitionLags", "i", "latest", "committed", "consumerLagChannel", "interval", "#findGroupCoordinator", "groupOptionsValidator", "#joinGroup", "consumerConsumesChannel", "#performConsume", "kPerformWithRetry", "retryCallback", "kMetadata", "metadata", "broker", "UserError", "connection", "kGetApi", "api", "FetchIsolationLevels", "#performGroupOperation", "groupCallback", "topics", "partition", "leaderEpoch", "topicOffsets", "withTimestamps", "requests", "name", "leader", "leaderRequests", "topicRequests", "runConcurrentCallbacks", "concurrentCallback", "kGetConnection", "responses", "#handleMetadataError", "response", "index", "timestamp", "responseGroup", "responseTopic", "committedOffset", "consumerGroupChannel", "#performFindGroupCoordinator", "#performJoinGroup", "#performLeaveGroup", "#syncGroup", "partitionsAssigner", "#performSyncGroup", "#heartbeat", "eventPayload", "consumerHeartbeatChannel", "#performDeduplicateGroupOperaton", "#cancelHeartbeat", "#getRejoinError", "#consumerGroupHeartbeat", "#performConsumerGroupHeartbeat", "timeoutCallback", "createTimeoutCallback", "protocolErrors", "changed", "newAssignments", "#revokePartitions", "#assignPartitions", "#diffAssignments", "A", "B", "result", "a", "b", "tp", "diff", "newAssignment", "kAutocommit", "#updateAssignments", "kRefreshOffsetsAndFetch", "topicIdToTopic", "topicMetadata", "assignments", "#joinGroupConsumerProtocol", "err", "_error", "trackTopics", "joinNeeded", "MessagesStream", "kPerformDeduplicated", "deduplicateCallback", "kGetBootstrapConnection", "FindCoordinatorKeyTypes", "groupInfo", "coordinator", "protocols", "protocol", "#encodeProtocolSubscriptionMetadata", "member", "#decodeProtocolSubscriptionMetadata", "topicsSubscriptions", "subscription", "topicSubscriptions", "#createAssignments", "#decodeProtocolAssignment", "operationId", "operation", "coordinatorId", "validator", "kFormatValidationErrors", "Writer", "w", "t", "memberId", "buffer", "reader", "Reader", "#encodeProtocolAssignment", "r", "partitionTracker", "partitionsCount", "encodedAssignments", "roundRobinAssigner", "protocolError", "kClearMetadata", "produceOptionsProperties", "allowedProduceAcks", "enumErrorMessage", "ProduceAcks", "allowedCompressionsAlgorithms", "compressionsAlgorithms", "produceOptionsSchema", "produceOptionsValidator", "ajv", "producerOptionsValidator", "serdeProperties", "sendOptionsSchema", "messageSchema", "sendOptionsValidator", "noopSerializer", "data", "__name", "Producer", "Base", "#partitionsRoundRobin", "#producerInfo", "#sequences", "#keySerializer", "#valueSerializer", "#headerKeySerializer", "#headerValueSerializer", "#metricsProducedMessages", "options", "ProduceAcks", "NumericMap", "kValidateOptions", "producerOptionsValidator", "kPrometheus", "ensureMetric", "kAfterCreate", "callback", "createPromisifiedCallback", "kClosed", "kCallbackPromise", "error", "kCheckNotClosed", "validationError", "produceOptionsValidator", "producerInitIdempotentChannel", "#initIdempotentProducer", "createDiagnosticContext", "sendOptionsValidator", "producerSendsChannel", "#send", "kPerformDeduplicated", "deduplicateCallback", "kPerformWithRetry", "retryCallback", "kGetBootstrapConnection", "connection", "kGetApi", "api", "kOptions", "response", "idempotent", "partitioner", "messages", "initOptions", "UserError", "produceOptions", "topics", "message", "topic", "headers", "serializedHeaders", "key", "value", "partition", "murmur2", "#performSend", "sendOptions", "kMetadata", "metadata", "messagesByDestination", "messagesPerPartition", "leader", "destination", "messagePartitionKey", "nodes", "runConcurrentCallbacks", "destinationMessages", "concurrentCallback", "#performSingleDestinationSend", "apiResults", "results", "unwritableNodes", "i", "result", "name", "partitionResponses", "partitionResponse", "partitionKey", "timeout", "acks", "autocreateTopics", "repeatOnStaleMetadata", "kGetConnection", "kClearMetadata", "objectRegistry", "registerProtoMeta", "__name", "protoMeta", "proto", "reference", "message", "getMessage", "messageObject", "encodeMessage", "decodeMessage", "decomposeError", "__name", "error", "code", "message", "details", "stack", "KafkaTopic", "__name", "name", "provider", "config", "manualOffsetCommit", "resolve", "reject", "operation", "attemptNo", "err", "decomposeError", "eventName", "e", "listener", "time", "r", "offset", "cb", "eventNames", "eventNamesList", "t", "index", "context", "logger", "error", "n", "w", "queue", "offsetValue", "stream", "message", "done", "decodedMsg", "opts", "startingOffset", "forceOffset", "Kafka", "_Kafka", "resolveRetry", "noopSerializer", "noopDeserializer", "Producer", "Admin", "resolveProducer", "rejectProducer", "msg", "messageObject", "encodeMessage", "decodeMessage", "topicName", "messages", "values", "bufferObj", "keys", "data", "i", "details", "stack", "enableLogging", "msgs", "key", "eachMsg", "prefixKey", "errors", "topic", "topics", "groupId", "consumer", "Consumer", "Name", "LocalTopic", "__name", "topicName", "logger", "config", "eventName", "offset", "eventNames", "arg0", "listener", "e", "msg", "messageObject", "message", "currentOffset", "messages", "listeners", "j", "context", "bufferObj", "index", "Local", "topic", "topics", "Name", "eventProviders", "registerEventProvider", "__name", "name", "provider", "Name", "Kafka", "Local", "Events", "config", "logger", "e", "loggerCfg", "msg", "providerName", "Provider", "topics", "manualOffsetCommit", "import_user", "NOT_READABLE", "READABLE", "ENDED", "ERRORED", "STATES", "StreamToAsyncIterator", "__name", "stream", "size", "bindMethods", "method", "untilReadable", "untilEnd", "data", "handleReadable", "promise", "resolve", "reject", "handleEnd", "err", "import_auth", "inputMethodType", "streamToAsyncIterable", "__name", "request", "readableStreamKey", "readStream", "_", "chunk", "StreamToAsyncIterator", "fetchUnauthenticatedUserToken", "ctx", "domain", "getGQLResolverFunctions", "service", "key", "serviceKey", "cfg", "obj", "method", "typing", "getTyping", "outputTyping", "subjectField", "field", "authSubjectType", "methodName", "Mutate", "args", "context", "converted", "preProcessGQLInput", "scope", "req", "authToken", "realMethod", "mode", "methodFunc", "camelCase", "contextRequest", "rawResult", "result", "postProcessGQLOutput", "grpcClientConfig", "bufferFields", "getKeys", "operationStatus", "resolve", "reject", "response", "combinedChunks", "chunkObj", "existingBufferFields", "bufferField", "data", "dataObj", "err", "decodeBufferFields", "error", "namespaceResolverRegistry", "subscriptionResolvers", "registerResolverFunction", "namespace", "name", "func", "mutation", "subspace", "space", "s", "value", "m", "generateResolver", "namespaces", "queryResolvers", "mutationResolvers", "subResolvers", "ns", "res", "k", "v", "resolvers", "generateSubServiceResolvers", "subServices", "config", "meta", "subName", "getServiceName", "mutations", "queries", "getWhitelistBlacklistConfig", "regNamespace", "regSubspace", "getUseSubscriptions", "messageName", "option", "kafkaSubscriber", "fieldName", "capitalize", "baseMessageName", "parent", "info", "action", "event", "events", "Events", "commandTopic", "deferred", "pending", "message", "finalResolver", "fieldJsonName", "snakeToCamel", "resolver", "limit", "latency", "ids", "LatentResourceMapBuffer", "map", "i", "slice", "item", "id", "buildFederatedSubscriptionSchema", "__name", "subServices", "config", "namespace", "schema", "resolvers", "generateSubServiceResolvers", "mergeSubscribeIntoSchema", "key", "val", "field", "fieldType", "import_graphql", "typeCache", "subscriptionAction", "subscriptionInput", "subscriptionOutput", "getGQLSchema", "__name", "method", "fields", "responseTyping", "getTyping", "outName", "capitalizeProtoName", "out", "typing", "getGQLSchemas", "service", "obj", "namespaceResolverSchemaRegistry", "subscriptionFields", "registerResolverSchema", "namespace", "name", "schema", "mutation", "subspace", "config", "space", "Mutate", "generateSchema", "setup", "queryFields", "mutationFields", "subFields", "s", "value", "key", "capitalName", "k", "v", "generateSubServiceSchemas", "subServices", "prefix", "meta", "subName", "getServiceName", "mutations", "queries", "getWhitelistBlacklistConfig", "schemas", "getUseSubscriptions", "messageName", "option", "fieldName", "capitalize", "subServices", "metaPackageIoRestorecommerceUser", "metaPackageIoRestorecommerceRole", "metaPackageIoRestorecommerceAuthentication_log", "metaPackageIoRestorecommerceToken", "metaPackageIoRestorecommerceOauth", "registerTypings", "__name", "registerPackagesRecursive", "registerProtoMeta", "namespace", "registerTypings", "schema", "__name", "cfg", "generateSubServiceSchemas", "subServices", "namespace", "FederatedResourceSchema", "__name", "cfg", "buildFederatedSubscriptionSchema", "subServices", "namespace", "schema", "SET_BOLD_YELLOW_TEXT", "SET_BOLD_RED_TEXT", "RESET_ALL_ATTRIBUTES", "stdout", "__name", "str", "stderr", "info", "notice", "warn", "warning", "import_node_assert", "util", "QuickLRU", "__name", "#size", "#cache", "#oldCache", "#maxSize", "#maxAge", "#onEviction", "options", "#emitEvictions", "cache", "key", "item", "#deleteIfExpired", "#getOrDeleteIfExpired", "#getItemValue", "#peek", "#set", "value", "#moveToRecent", "#entriesAscending", "maxAge", "expiry", "deleted", "newSize", "items", "removeCount", "count", "requested", "evictCount", "i", "oldCacheSize", "callbackFunction", "thisArgument", "import_application", "koa_default", "mod", "HttpError", "param_list_default", "dev_keystore_default", "client_attributes_exports", "__export", "ARYS", "BOOL", "CHOICES", "DEFAULTS", "ENUM", "HTTPS_URI", "LOOPBACKS", "RECOGNIZED_METADATA", "REQUIRED", "STRING", "SYNTAX", "WEB_URI", "WHEN", "noVSCHAR", "RECOGNIZED_METADATA", "DEFAULTS", "REQUIRED", "BOOL", "ARYS", "STRING", "WHEN", "WEB_URI", "HTTPS_URI", "LOOPBACKS", "ENUM", "__name", "noVSCHAR", "SYNTAX", "CHOICES", "jwa_exports", "__export", "attestSigningAlgValues", "authorizationEncryptionAlgValues", "authorizationEncryptionEncValues", "authorizationSigningAlgValues", "clientAuthSigningAlgValues", "dPoPSigningAlgValues", "idTokenEncryptionAlgValues", "idTokenEncryptionEncValues", "idTokenSigningAlgValues", "introspectionEncryptionAlgValues", "introspectionEncryptionEncValues", "introspectionSigningAlgValues", "requestObjectEncryptionAlgValues", "requestObjectEncryptionEncValues", "requestObjectSigningAlgValues", "userinfoEncryptionAlgValues", "userinfoEncryptionEncValues", "userinfoSigningAlgValues", "signingAlgValues", "version", "i", "encryptionAlgValues", "encryptionEncValues", "alg", "PUSHED_REQUEST_URN", "is_plain_object_default", "__name", "a", "remove_default", "__name", "array", "predicate", "remove", "value", "index", "merge", "target", "sources", "source", "is_plain_object_default", "key", "value", "__name", "merge_default", "pick_default", "__name", "object", "properties", "result", "property", "set_default", "__name", "object", "path", "value", "properties", "current", "property", "i", "is_plain_object_default", "conjunction", "disjunction", "formatter", "iterable", "type", "formatList", "list", "w", "__name", "pluralize", "word", "count", "crypto", "import_node_crypto", "urlAlphabet", "POOL_SIZE_MULTIPLIER", "pool", "poolOffset", "fillPool", "bytes", "crypto", "__name", "random", "customRandom", "alphabet", "defaultSize", "getRandom", "mask", "step", "size", "id", "i", "customAlphabet", "nanoid", "customAlphabet", "urlAlphabet", "nanoid_default", "Check", "__name", "reason", "description", "error", "check", "details", "check_default", "Prompt", "__name", "name", "requestable", "details", "checks", "check_default", "error", "check", "ctx", "oidc", "reason", "p", "i", "prompt_default", "errors_exports", "__export", "AccessDenied", "AuthorizationPending", "ConsentRequired", "CustomOIDCProviderError", "ExpiredLoginHintToken", "ExpiredToken", "InsufficientScope", "InteractionRequired", "InvalidAuthorizationDetails", "InvalidBindingMessage", "InvalidClient", "InvalidClientAttestation", "InvalidClientAuth", "InvalidClientMetadata", "InvalidDpopProof", "InvalidGrant", "InvalidRedirectUri", "InvalidRequest", "InvalidRequestObject", "InvalidRequestUri", "InvalidScope", "InvalidSoftwareStatement", "InvalidTarget", "InvalidToken", "InvalidUserCode", "LoginRequired", "MissingUserCode", "OIDCProviderError", "RegistrationNotSupported", "RequestNotSupported", "RequestUriNotSupported", "SessionNotFound", "SlowDown", "TemporarilyUnavailable", "TransactionFailed", "UnapprovedSoftwareStatement", "UnauthorizedClient", "UnknownUserId", "UnmetAuthenticationRequirements", "UnsupportedGrantType", "UnsupportedResponseMode", "UnsupportedResponseType", "UnsupportedTokenType", "UseAttestationChallenge", "UseDpopNonce", "upper_first_default", "__name", "str", "camel_case_default", "__name", "str", "x", "OIDCProviderError", "__name", "status", "message", "CustomOIDCProviderError", "description", "InvalidToken", "detail", "InvalidClientMetadata", "InvalidScope", "scope", "InsufficientScope", "InvalidRequest", "code", "SessionNotFound", "InvalidClientAuth", "InvalidGrant", "InvalidRedirectUri", "E", "errorDescription", "klassName", "upper_first_default", "camel_case_default", "klass", "AccessDenied", "AuthorizationPending", "ConsentRequired", "ExpiredLoginHintToken", "ExpiredToken", "InteractionRequired", "InvalidBindingMessage", "InvalidAuthorizationDetails", "InvalidClient", "InvalidDpopProof", "InvalidRequestObject", "InvalidRequestUri", "InvalidSoftwareStatement", "InvalidTarget", "InvalidUserCode", "LoginRequired", "MissingUserCode", "RegistrationNotSupported", "RequestNotSupported", "RequestUriNotSupported", "SlowDown", "TemporarilyUnavailable", "TransactionFailed", "UnapprovedSoftwareStatement", "UnauthorizedClient", "UnknownUserId", "UnmetAuthenticationRequirements", "UnsupportedGrantType", "UnsupportedResponseMode", "UnsupportedResponseType", "UseDpopNonce", "UnsupportedTokenType", "UseAttestationChallenge", "InvalidClientAttestation", "map", "get", "ctx", "__name", "set", "value", "weak_cache_default", "login_default", "__name", "prompt_default", "ctx", "oidc", "check_default", "payload", "sub", "weak_cache_default", "request", "InvalidRequest", "missingOIDCScope", "missingOIDCClaims", "missingResourceScopes", "consent_default", "__name", "prompt_default", "check_default", "ctx", "oidc", "encounteredScopes", "missing", "scope", "encounteredClaims", "claim", "indicator", "resourceServer", "requestedScopes", "availableScopes", "base", "__name", "DEFAULT", "name", "p", "prompt", "prompt_default", "login_default", "consent_default", "htmlSafe", "input", "__name", "warned", "shouldChange", "name", "msg", "info", "__name", "mustChange", "warn", "clientBasedCORS", "ctx", "origin", "client", "uri", "getCertificate", "certificateAuthorized", "certificateSubjectMatches", "property", "expected", "deviceInfo", "fetch", "url", "options", "userCodeInputSource", "form", "out", "err", "requireNonce", "getAttestationSignaturePublicKey", "iss", "header", "assertAttestationJwtAndPop", "attestation", "pop", "userCodeConfirmSource", "userCode", "successSource", "introspectionAllowedPolicy", "token", "revocationAllowedPolicy", "InvalidRequest", "idFactory", "nanoid_default", "secretFactory", "defaultResource", "oneOf", "useGrantedResource", "model", "getResourceServerInfo", "resourceIndicator", "InvalidTarget", "extraTokenClaims", "expiresWithSession", "code", "issueRefreshToken", "pkceRequired", "fapiProfile", "pairwiseIdentifier", "accountId", "AccessTokenTTL", "AuthorizationCodeTTL", "ClientCredentialsTTL", "DeviceCodeTTL", "deviceCode", "BackchannelAuthenticationRequestTTL", "request", "IdTokenTTL", "RefreshTokenTTL", "InteractionTTL", "interaction", "SessionTTL", "session", "GrantTTL", "grant", "extraClientMetadataValidator", "key", "value", "metadata", "postLogoutSuccessSource", "display", "logoutSource", "renderError", "error", "htmlSafe", "interactionsUrl", "findAccount", "sub", "use", "scope", "claims", "rejected", "rotateRefreshToken", "refreshToken", "loadExistingGrant", "grantId", "revokeGrantPolicy", "sectorIdentifierUriValidate", "processLoginHintToken", "loginHintToken", "processLoginHint", "loginHint", "verifyUserCode", "account", "validateBindingMessage", "bindingMessage", "InvalidBindingMessage", "validateRequestContext", "requestContext", "triggerAuthenticationDevice", "assertClaimsParameter", "assertJwtClientAuthClaimsAndHeader", "InvalidClientAuth", "assertJwtClaimsAndHeader", "requiredClaims", "claim", "InvalidRequestObject", "diff", "makeDefaults", "resourceServer", "base", "defaults_default", "defaults", "STABLE", "EXPERIMENTS", "featuresTypeErrorCheck", "features", "value", "__name", "filterHS", "alg", "filterAsymmetricSig", "supportedResponseTypes", "fapiProfiles", "Configuration", "#defaults", "defaults_default", "config", "merge_default", "pick_default", "is_plain_object_default", "k", "v", "key", "obj", "props", "prop", "setValue", "set_default", "types", "type", "parsed", "responseType", "claimDefinedScopes", "scope", "name", "requestable", "accumulator", "claim", "claims", "jwa_exports", "values", "enabled", "allowList", "remove_default", "modes", "mode", "valid", "helper", "args", "profile", "formatList", "authMethods", "method", "ENABLED_EXPERIMENTS", "throwExperiment", "flag", "ack", "recognizedFeatures", "experimental", "EXPERIMENTS", "STABLE", "info", "version", "configuration_default", "import_node_assert", "crypto", "ExternalSigningKey", "__name", "#publicJwk", "#kid", "#alg", "value", "#ensurePublicJwk", "keyscore", "key", "alg", "use", "score", "getKtyFromJWSAlg", "getCrvFromJWSAlg", "getKtyFromJWEAlg", "epk", "selectForDSA", "selectForEncDec", "filter", "stripPrivate", "jwk", "d", "p", "q", "dp", "dq", "qi", "oth", "priv", "pub", "KeyStore", "#keys", "#cachedPub", "keys", "options", "operation", "kid", "kty", "crv", "scoring", "candidate", "selector", "first", "second", "input", "getPublic", "keystore_default", "calculateKid", "__name", "jwk", "components", "KEY_TYPES", "jwkSignatureAlgorithms", "available", "jwkEncryptionAlgorithms", "checkString", "value", "property", "i", "assert", "isExternal", "key", "ExternalSigningKey", "registerKey", "input", "keystore", "kids", "configuration", "features", "weak_cache_default", "x", "encryptionAlgs", "prop", "v", "signingAlgs", "combined", "initialize", "jwks", "dev_keystore_default", "warn", "keystore_default", "err", "keys", "util", "epoch_time_default", "__name", "date", "storage", "QuickLRU", "grantKeyFor", "id", "__name", "sessionUidKeyFor", "userCodeKeyFor", "userCode", "grantable", "MemoryAdapter", "model", "key", "epoch_time_default", "uid", "payload", "expiresIn", "grantId", "grantKey", "grant", "token", "memory_adapter_default", "hasPrototype", "__name", "target", "isContructor", "fn", "type_validators_default", "constructable", "initializeAdapter", "adapter", "memory_adapter_default", "warn", "constructable", "type_validators_default", "executable", "weak_cache_default", "__name", "import_node_assert", "import_http_errors", "import_koa_compose", "import_url", "import_path_to_regexp", "import_http", "import_debug", "compilePathToRegexp", "path", "options", "normalizedOptions", "regexp", "keys", "__name", "compilePath", "parsePath", "normalizeLayerOptionsToPathToRegexp", "normalized", "key", "safeDecodeURIComponent", "text", "Layer", "methods", "middleware", "normalizedMethods", "method", "upperMethod", "middlewareArray", "middlewareFunction", "middlewareType", "routeIdentifier", "_path", "captures", "existingParameters", "parameterValues", "captureIndex", "capturedValue", "parameterDefinition", "parameterName", "match", "arguments_", "params", "cleanPath", "pathCompiler", "parameterReplacements", "generatedUrl", "allArguments", "parameters", "argumentsList", "lastArgument", "parameterKeys", "query", "restParameters", "tokens", "hasNamedParameters", "token", "parameterIndex", "parameterValue", "baseUrl", "parsed", "parseUrl", "urlObject", "formatUrl", "parameterHandler", "middlewareStack", "routeParameterNames", "parameterMiddleware", "parameterNamesList", "parameterPosition", "context", "next", "currentParameterPosition", "inserted", "stackIndex", "existingMiddleware", "prefixPath", "isRootPath", "isStrictMode", "prefixHasParameters", "pathIsRawRegex", "currentPath", "treatAsRegExp", "pathString", "anchoredPattern", "getAllHttpMethods", "http", "COMMON_HTTP_METHODS", "normalizeParameterMiddleware", "applyParameterMiddlewareToRoute", "route", "middlewareList", "applyAllParameterMiddleware", "parametersObject", "parameterNames", "hasPathParameters", "determineMiddlewarePath", "explicitPath", "hasPrefixParameters", "debug", "debugModule", "httpMethods", "RouterImplementation", "hasExplicitPath", "currentMiddleware", "firstArgument", "item", "pathArray", "remainingMiddleware", "singlePath", "middlewareWithRouter", "mountPath", "nestedRouter", "clonedRouter", "mountPathHasParameters", "routeIndex", "nestedLayer", "clonedLayer", "sourceRouter", "sourceLayer", "targetRouter", "effectiveExplicitPath", "effectiveHasExplicitPath", "middlewarePath", "pathAsRegExp", "finalPath", "usePathToRegexp", "normalizedPrefix", "previousPrefix", "dispatchMiddleware", "requestPath", "matchResult", "matchedLayers", "middlewareChain", "compose", "context_", "routeLayer", "layer", "layersToExecute", "routerContext", "implementedMethods", "matchedRoutes", "allowedMethods", "allowedMethodsList", "requestMethod", "HttpError", "name", "routeOptions", "source", "destination", "code", "resolvedSource", "resolvedDestination", "sourceUrl", "destinationUrl", "additionalOptions", "mergedOptions", "normalizedMethod", "isMiddleware", "matchesMethod", "input", "host", "parameter", "Router", "router_default", "httpMethod", "import_node_assert", "querystring", "import_node_util", "querystring", "import_raw_body", "warned", "selectiveBody", "cty", "ctx", "next", "usedFallback", "body", "raw", "warn", "InvalidRequest", "__name", "selective_body_default", "json", "urlencoded", "views_exports", "__export", "interaction", "layout", "login", "e", "__name", "t", "n", "i", "e", "__name", "a", "n", "r", "t", "o", "s", "c", "l", "u", "config: EtaConfig", "compileBody", "buffer: Array<AstObject>", "d", "leftTrim: string | false", "rightTrim: string | false", "escMap: { [key: string]: string }", "p", "f", "m", "defaultConfig: EtaConfig", "g", "_", "v", "y", "b", "x", "trimLeftOfNextStr: string | false", "m: RegExpExecArray | null", "closeTag: RegExpExecArray | null", "currentObj: AstObject | false", "h", "S", "C", "templateFn: TemplateFunction", "w", "T", "E", "D", "Eta", "k", "EtaCore", "layout", "it", "options", "include", "__name", "template", "data", "includeAsync", "__eta", "path", "login", "it", "options", "include", "__name", "template", "data", "includeAsync", "__eta", "layout", "path", "interaction", "it", "options", "include", "__name", "template", "data", "includeAsync", "__eta", "layout", "path", "missingOIDCScope", "scope", "missingOIDCClaims", "claim", "indicator", "scopes", "type", "detail", "eta", "interaction", "__name", "locals", "k", "layout", "login", "noCache", "ctx", "next", "__name", "defaultInteractionUri", "defaults", "keys", "dbg", "__name", "obj", "acc", "key", "value", "devInteractions", "provider", "warn", "configuration", "weak_cache_default", "ctx", "interaction", "noCache", "uid", "prompt", "params", "session", "client", "view", "title", "locals", "views_exports", "layout", "result", "urlencoded", "name", "details", "grantId", "assert", "grant", "indicator", "scope", "import_cors", "checkClientCORS", "ctx", "client", "origin", "clientBasedCORS", "weak_cache_default", "allowed", "InvalidRequest", "__name", "cors_default", "clientBased", "options", "builtin", "cors", "next", "x", "grants_exports", "__export", "authorization_code_exports", "ciba_exports", "client_credentials_exports", "device_code_exports", "refresh_token_exports", "authorization_code_exports", "__export", "grantType", "handler", "parameters", "validatePresence", "ctx", "required", "params", "missing", "param", "InvalidRequest", "pluralize", "formatList", "__name", "crypto", "check", "pkce_format_default", "__name", "input", "param", "InvalidRequest", "import_node_crypto", "paddedBuffer", "string", "length", "buffer", "__name", "constantEquals", "a", "b", "minComp", "constant_equals_default", "checkPKCE", "verifier", "challenge", "method", "pkce_format_default", "expected", "constant_equals_default", "InvalidGrant", "__name", "revoke", "ctx", "grantId", "client", "provider", "grantTypes", "revokeGrantPolicy", "weak_cache_default", "refreshToken", "authorizationCode", "deviceCode", "backchannelAuthenticationRequest", "revokeGrant", "model", "__name", "filter_claims_default", "__name", "source", "target", "grant", "claims", "requested", "granted", "claim", "crypto", "encoder", "decoder", "MAX_INT32", "concat", "buffers", "size", "acc", "length", "buf", "buffer", "__name", "writeUInt32BE", "value", "offset", "uint64be", "high", "low", "uint32be", "encode", "string", "bytes", "i", "code", "encodeBase64", "input", "CHUNK_SIZE", "arr", "__name", "decodeBase64", "encoded", "binary", "bytes", "decode", "input", "decoder", "encoded", "decodeBase64", "__name", "encode", "unencoded", "encoder", "encodeBase64", "errors_exports", "__export", "JOSEAlgNotAllowed", "JOSEError", "JOSENotSupported", "JWEDecryptionFailed", "JWEInvalid", "JWKInvalid", "JWKSInvalid", "JWKSMultipleMatchingKeys", "JWKSNoMatchingKey", "JWKSTimeout", "JWSInvalid", "JWSSignatureVerificationFailed", "JWTClaimValidationFailed", "JWTExpired", "JWTInvalid", "JOSEError", "__name", "message", "options", "JWTClaimValidationFailed", "payload", "claim", "reason", "JWTExpired", "JOSEAlgNotAllowed", "JOSENotSupported", "JWEDecryptionFailed", "JWEInvalid", "JWSInvalid", "JWTInvalid", "JWKInvalid", "JWKSInvalid", "JWKSNoMatchingKey", "JWKSMultipleMatchingKeys", "JWKSTimeout", "JWSSignatureVerificationFailed", "bitLength", "alg", "JOSENotSupported", "__name", "generateIv", "checkIvLength", "enc", "iv", "bitLength", "JWEInvalid", "__name", "checkCekLength", "cek", "expected", "actual", "JWEInvalid", "__name", "unusable", "__name", "name", "prop", "isAlgorithm", "algorithm", "getHashLength", "hash", "getNamedCurve", "alg", "checkUsage", "key", "usage", "checkSigCryptoKey", "expected", "checkEncCryptoKey", "message", "msg", "actual", "types", "last", "__name", "invalidKeyInput", "withAlg", "alg", "assertCryptoKey", "key", "isCryptoKey", "__name", "isKeyObject", "isKeyLike", "timingSafeEqual", "a", "b", "algorithm", "key", "aHmac", "bHmac", "out", "i", "__name", "cbcDecrypt", "enc", "cek", "ciphertext", "iv", "tag", "aad", "invalidKeyInput", "keySize", "encKey", "macKey", "macData", "concat", "uint64be", "expectedTag", "macCheckPassed", "JWEDecryptionFailed", "plaintext", "gcmDecrypt", "checkEncCryptoKey", "decrypt", "isCryptoKey", "JWEInvalid", "checkIvLength", "checkCekLength", "JOSENotSupported", "isDisjoint", "headers", "sources", "acc", "header", "parameters", "parameter", "__name", "isObjectLike", "__name", "value", "isObject", "input", "proto", "checkKeySize", "key", "alg", "__name", "getCryptoKey", "usage", "checkEncCryptoKey", "wrap", "cek", "cryptoKey", "cryptoKeyCek", "unwrap", "encryptedKey", "digest", "algorithm", "data", "subtleDigest", "__name", "lengthAndInput", "input", "concat", "uint32be", "__name", "concatKdf", "Z", "L", "OtherInfo", "dkLen", "hashLen", "reps", "dk", "i", "hashInput", "hashResult", "digest", "deriveKey", "publicKey", "privateKey", "algorithm", "keyLength", "apu", "apv", "checkEncCryptoKey", "algorithmID", "encode", "partyUInfo", "partyVInfo", "suppPubInfo", "suppPrivInfo", "otherInfo", "getEcdhBitLength", "allowed", "key", "getCryptoKey", "key", "alg", "checkEncCryptoKey", "__name", "concatSalt", "p2sInput", "concat", "encode", "deriveKey", "p2s", "p2c", "JWEInvalid", "salt", "keylen", "subtleAlg", "cryptoKey", "wrap", "cek", "derived", "unwrap", "encryptedKey", "checkKeyLength", "alg", "key", "modulusLength", "__name", "subtleAlgorithm", "__name", "alg", "JOSENotSupported", "encrypt", "key", "cek", "checkEncCryptoKey", "checkKeyLength", "decrypt", "encryptedKey", "cekLength", "alg", "JOSENotSupported", "__name", "generateCek", "subtleMapping", "jwk", "algorithm", "keyUsages", "JOSENotSupported", "__name", "jwkToKey", "keyData", "importJWK", "jwk", "alg", "options", "isObject", "ext", "decode", "JOSENotSupported", "jwkToKey", "__name", "cbcEncrypt", "enc", "plaintext", "cek", "iv", "aad", "invalidKeyInput", "keySize", "encKey", "macKey", "ciphertext", "macData", "concat", "uint64be", "tag", "__name", "gcmEncrypt", "checkEncCryptoKey", "encrypted", "encrypt", "isCryptoKey", "checkIvLength", "generateIv", "checkCekLength", "JOSENotSupported", "wrap", "alg", "key", "cek", "iv", "jweAlgorithm", "wrapped", "encrypt", "encode", "__name", "unwrap", "encryptedKey", "tag", "decrypt", "decryptKeyManagement", "alg", "key", "encryptedKey", "joseHeader", "options", "JWEInvalid", "isObject", "assertCryptoKey", "allowed", "JOSENotSupported", "epk", "importJWK", "partyUInfo", "partyVInfo", "decode", "sharedSecret", "deriveKey", "cekLength", "unwrap", "decrypt", "p2cLimit", "p2s", "iv", "tag", "__name", "validateCrit", "Err", "recognizedDefault", "recognizedOption", "protectedHeader", "joseHeader", "input", "recognized", "parameter", "JOSENotSupported", "__name", "validateAlgorithms", "option", "algorithms", "s", "__name", "isJWK", "__name", "key", "isObject", "isPrivateJWK", "isPublicJWK", "isSecretJWK", "cache", "handleJWK", "__name", "key", "jwk", "alg", "freeze", "cached", "cryptoKey", "jwkToKey", "handleKeyObject", "keyObject", "isPublic", "extractable", "hash", "namedCurve", "normalizeKey", "isCryptoKey", "isKeyObject", "err", "isJWK", "decode", "tag", "__name", "key", "jwkMatchesOp", "alg", "usage", "expected", "expectedKeyOp", "symmetricTypeCheck", "isJWK", "isSecretJWK", "isKeyLike", "withAlg", "asymmetricTypeCheck", "isPrivateJWK", "isPublicJWK", "checkKeyType", "flattenedDecrypt", "jwe", "key", "options", "isObject", "JWEInvalid", "parsedProt", "protectedHeader", "decode", "decoder", "isDisjoint", "joseHeader", "validateCrit", "JOSENotSupported", "alg", "enc", "keyManagementAlgorithms", "validateAlgorithms", "contentEncryptionAlgorithms", "JOSEAlgNotAllowed", "encryptedKey", "resolvedKey", "checkKeyType", "k", "normalizeKey", "cek", "decryptKeyManagement", "err", "generateCek", "iv", "tag", "encode", "additionalData", "concat", "ciphertext", "result", "decrypt", "__name", "compactDecrypt", "jwe", "key", "options", "decoder", "JWEInvalid", "protectedHeader", "encryptedKey", "iv", "ciphertext", "tag", "length", "decrypted", "flattenedDecrypt", "result", "__name", "unprotected", "keyToJWK", "key", "isKeyObject", "encode", "isCryptoKey", "invalidKeyInput", "ext", "key_ops", "alg", "use", "jwk", "__name", "exportJWK", "key", "keyToJWK", "__name", "encryptKeyManagement", "alg", "enc", "key", "providedCek", "providedParameters", "encryptedKey", "parameters", "cek", "assertCryptoKey", "allowed", "JOSENotSupported", "apu", "apv", "ephemeralKey", "normalizeKey", "x", "y", "crv", "kty", "exportJWK", "sharedSecret", "deriveKey", "cekLength", "encode", "generateCek", "kwAlg", "wrap", "encrypt", "p2c", "p2s", "iv", "__name", "FlattenedEncrypt", "__name", "#plaintext", "#protectedHeader", "#sharedUnprotectedHeader", "#unprotectedHeader", "#aad", "#cek", "#iv", "#keyManagementParameters", "plaintext", "parameters", "protectedHeader", "sharedUnprotectedHeader", "unprotectedHeader", "aad", "cek", "iv", "key", "options", "JWEInvalid", "isDisjoint", "joseHeader", "validateCrit", "JOSENotSupported", "alg", "enc", "encryptedKey", "checkKeyType", "k", "normalizeKey", "encryptKeyManagement", "unprotected", "additionalData", "protectedHeaderS", "protectedHeaderB", "aadMember", "encode", "aadMemberBytes", "concat", "ciphertext", "tag", "encrypt", "jwe", "subtleAlgorithm", "alg", "algorithm", "hash", "JOSENotSupported", "__name", "getSigKey", "alg", "key", "usage", "invalidKeyInput", "checkSigCryptoKey", "__name", "verify", "alg", "key", "signature", "data", "cryptoKey", "getSigKey", "checkKeyLength", "algorithm", "subtleAlgorithm", "__name", "flattenedVerify", "jws", "key", "options", "isObject", "JWSInvalid", "parsedProt", "protectedHeader", "decode", "decoder", "isDisjoint", "joseHeader", "extensions", "validateCrit", "b64", "alg", "algorithms", "validateAlgorithms", "JOSEAlgNotAllowed", "resolvedKey", "checkKeyType", "data", "concat", "encode", "encoder", "signature", "k", "normalizeKey", "verify", "JWSSignatureVerificationFailed", "payload", "result", "__name", "compactVerify", "jws", "key", "options", "decoder", "JWSInvalid", "protectedHeader", "payload", "signature", "length", "verified", "flattenedVerify", "result", "__name", "epoch", "__name", "date", "minute", "hour", "day", "week", "year", "REGEX", "secs", "str", "matched", "value", "unit", "numericDate", "validateInput", "label", "input", "normalizeTyp", "checkAudiencePresence", "audPayload", "audOption", "validateClaimsSet", "protectedHeader", "encodedPayload", "options", "payload", "decoder", "isObject", "JWTInvalid", "typ", "JWTClaimValidationFailed", "requiredClaims", "issuer", "subject", "audience", "maxTokenAge", "presenceCheck", "claim", "tolerance", "currentDate", "now", "JWTExpired", "age", "max", "JWTClaimsBuilder", "#payload", "encoder", "jwtVerify", "jwt", "key", "options", "verified", "compactVerify", "JWTInvalid", "result", "validateClaimsSet", "__name", "CompactEncrypt", "__name", "#flattened", "plaintext", "FlattenedEncrypt", "cek", "iv", "protectedHeader", "parameters", "key", "options", "jwe", "sign", "alg", "key", "data", "cryptoKey", "getSigKey", "checkKeyLength", "signature", "subtleAlgorithm", "__name", "FlattenedSign", "__name", "#payload", "#protectedHeader", "#unprotectedHeader", "payload", "protectedHeader", "unprotectedHeader", "key", "options", "JWSInvalid", "isDisjoint", "joseHeader", "extensions", "validateCrit", "b64", "alg", "checkKeyType", "payloadS", "payloadB", "encode", "protectedHeaderString", "protectedHeaderBytes", "data", "concat", "k", "normalizeKey", "signature", "sign", "jws", "CompactSign", "__name", "#flattened", "payload", "FlattenedSign", "protectedHeader", "key", "options", "jws", "check", "__name", "value", "description", "JWKInvalid", "calculateJwkThumbprint", "key", "digestAlgorithm", "jwk", "isJWK", "isKeyLike", "exportJWK", "invalidKeyInput", "components", "JOSENotSupported", "data", "encode", "digest", "EmbeddedJWK", "protectedHeader", "token", "joseHeader", "isObject", "JWSInvalid", "key", "importJWK", "__name", "UnsecuredJWT", "__name", "#jwt", "payload", "JWTClaimsBuilder", "header", "encode", "issuer", "subject", "audience", "jwtId", "input", "jwt", "options", "JWTInvalid", "encodedHeader", "encodedPayload", "signature", "length", "decoder", "decode", "validateClaimsSet", "decodeProtectedHeader", "token", "protectedB64u", "parts", "result", "decoder", "decode", "isObject", "__name", "decodeJwt", "jwt", "JWTInvalid", "payload", "length", "decoded", "decode", "result", "decoder", "isObject", "__name", "import_node_crypto", "encode", "input", "encoding", "__name", "encodeBuffer", "buf", "decode", "sixfourbeify", "value", "buf", "i", "__name", "compute", "secret", "info", "step", "encodeBuffer", "compare", "server", "client", "result", "STEP", "CHALLENGE_OK_WINDOW", "ServerChallenge", "#counter", "#info", "#secret", "#prevprev", "#prev", "#now", "#next", "#nextnext", "challenge", "weakMap", "validate_dpop_default", "__name", "ctx", "accessToken", "dPoPConfig", "dPoPSigningAlgValues", "weak_cache_default", "proof", "DPoPNonces", "requireNonce", "nextNonce", "payload", "protectedHeader", "jwtVerify", "EmbeddedJWK", "InvalidDpopProof", "now", "epoch_time_default", "CHALLENGE_OK_WINDOW", "UseDpopNonce", "expected", "actual", "ath", "err", "result", "calculateJwkThumbprint", "resolve_resource_default", "__name", "ctx", "model", "config", "scopes", "resource", "InvalidTarget", "checkRar", "ctx", "next", "params", "client", "richAuthorizationRequests", "weak_cache_default", "InvalidRequest", "details", "i", "detail", "is_plain_object_default", "InvalidAuthorizationDetails", "config", "field", "value", "__name", "getCtxAccountClaims", "ctx", "use", "scope", "claims", "rejected", "__name", "setRefreshTokenBindings", "ctx", "at", "rt", "__name", "checkAttestBinding", "ctx", "model", "jwk", "decodeJwt", "calculateJwkThumbprint", "InvalidGrant", "__name", "gty", "handler", "__name", "ctx", "findAccount", "issueRefreshToken", "allowOmittingSingleRegisteredRedirectUri", "conformIdTokenClaims", "userinfo", "getCertificate", "resourceIndicators", "richAuthorizationRequests", "allowReplay", "weak_cache_default", "uri", "length", "validatePresence", "dPoP", "validate_dpop_default", "code", "InvalidGrant", "grant", "checkPKCE", "cert", "checkAttestBinding", "revoke", "account", "AccessToken", "IdToken", "RefreshToken", "ReplayDetection", "at", "unique", "epoch_time_default", "CHALLENGE_OK_WINDOW", "checkRar", "resource", "resolve_resource_default", "resourceServerInfo", "accessToken", "refreshToken", "rt", "setRefreshTokenBindings", "idToken", "claims", "filter_claims_default", "rejected", "token", "getCtxAccountClaims", "parameters", "grantType", "client_credentials_exports", "__export", "grantType", "handler", "parameters", "filterStatics", "__name", "ctx", "emptyResource", "params", "checkResource", "next", "provider", "client", "resourceServers", "defaultResource", "enabled", "getResourceServerInfo", "weak_cache_default", "InvalidTarget", "resource", "identifier", "href", "resourceServer", "handler", "__name", "ctx", "client", "ClientCredentials", "ReplayDetection", "getCertificate", "allowReplay", "statics", "weak_cache_default", "dPoP", "validate_dpop_default", "InvalidRequest", "checkResource", "scopes", "allowList", "scope", "InvalidScope", "token", "resourceServer", "length", "InvalidTarget", "cert", "InvalidGrant", "unique", "epoch_time_default", "CHALLENGE_OK_WINDOW", "value", "parameters", "grantType", "refresh_token_exports", "__export", "grantType", "handler", "parameters", "difference_default", "__name", "array", "values", "value", "crypto", "certThumbprint", "cert", "data", "__name", "device_code_exports", "__export", "grantType", "gty", "handler", "parameters", "AuthorizationPending", "ExpiredToken", "InvalidGrant", "errors_exports", "gty", "handler", "__name", "ctx", "validatePresence", "InvalidRequest", "findAccount", "issueRefreshToken", "conformIdTokenClaims", "userinfo", "getCertificate", "allowReplay", "resourceIndicators", "weak_cache_default", "dPoP", "validate_dpop_default", "code", "checkAttestBinding", "cert", "revoke", "className", "upper_first_default", "camel_case_default", "CustomOIDCProviderError", "grant", "account", "AccessToken", "IdToken", "RefreshToken", "ReplayDetection", "at", "unique", "epoch_time_default", "CHALLENGE_OK_WINDOW", "resource", "resolve_resource_default", "resourceServerInfo", "accessToken", "refreshToken", "rt", "setRefreshTokenBindings", "idToken", "claims", "filter_claims_default", "rejected", "token", "getCtxAccountClaims", "parameters", "grantType", "rarSupported", "token", "origin", "gty", "__name", "handler", "ctx", "validatePresence", "findAccount", "conformIdTokenClaims", "rotateRefreshToken", "userinfo", "getCertificate", "allowReplay", "resourceIndicators", "richAuthorizationRequests", "weak_cache_default", "RefreshToken", "AccessToken", "IdToken", "ReplayDetection", "client", "dPoP", "validate_dpop_default", "refreshTokenValue", "refreshToken", "InvalidGrant", "cert", "certThumbprint", "grant", "missing", "difference_default", "InvalidScope", "pluralize", "unique", "epoch_time_default", "CHALLENGE_OK_WINDOW", "checkAttestBinding", "account", "revoke", "InvalidRequest", "at", "scope", "checkRar", "resource", "resolve_resource_default", "resourceServerInfo", "accessToken", "idToken", "claims", "filter_claims_default", "rejected", "getCtxAccountClaims", "parameters", "grantType", "ciba_exports", "__export", "grantType", "gty", "handler", "parameters", "AuthorizationPending", "ExpiredToken", "InvalidGrant", "errors_exports", "gty", "handler", "__name", "ctx", "validatePresence", "findAccount", "issueRefreshToken", "conformIdTokenClaims", "userinfo", "getCertificate", "allowReplay", "resourceIndicators", "richAuthorizationRequests", "weak_cache_default", "dPoP", "validate_dpop_default", "request", "cert", "checkAttestBinding", "revoke", "className", "upper_first_default", "camel_case_default", "CustomOIDCProviderError", "grant", "account", "AccessToken", "IdToken", "RefreshToken", "ReplayDetection", "at", "unique", "epoch_time_default", "CHALLENGE_OK_WINDOW", "checkRar", "resource", "resolve_resource_default", "resourceServerInfo", "accessToken", "refreshToken", "rt", "setRefreshTokenBindings", "idToken", "claims", "filter_claims_default", "rejected", "token", "getCtxAccountClaims", "parameters", "grantType", "response_modes_exports", "__export", "formPost", "fragment_default", "jwtResponseModes", "query_default", "webMessage", "crypto", "pushScriptSrcSha", "ctx", "script", "csp", "directives", "acc", "directive", "name", "values", "digest", "replaced", "__name", "statusCodes", "formPost", "ctx", "action", "inputs", "formInputs", "key", "value", "htmlSafe", "pushScriptSrcSha", "__name", "redirectUri", "uri", "payload", "mode", "parsed", "k", "v", "__name", "fragment_default", "__name", "ctx", "redirectUri", "payload", "uri", "query_default", "__name", "ctx", "redirectUri", "payload", "uri", "import_jsesc", "statusCodes", "webMessage", "ctx", "redirectUri", "response", "csp", "directive", "data", "jsesc", "pushScriptSrcSha", "__name", "modes", "query_default", "fragment_default", "formPost", "webMessage", "RENDER_MODES", "jwtResponseModes", "ctx", "redirectUri", "payload", "params", "mode", "IdToken", "token", "response", "__name", "crypto", "import_debug", "input", "action", "csrfToken", "code", "charset", "attributes", "htmlSafe", "__name", "confirm", "ReRenderError", "__name", "message", "userCode", "NotFoundError", "ExpiredError", "AbortedError", "AlreadyUsedError", "NoCodeError", "err_out_default", "__name", "expose", "message", "description", "scope", "state", "debugError", "debug", "serverError", "serverErrorTrace", "userInputRoutes", "getErrorHandler", "provider", "eventName", "__name", "ctx", "next", "charset", "userCodeInputSource", "weak_cache_default", "err", "out", "err_out_default", "ReRenderError", "secret", "input", "renderError", "import_debug", "resolve", "responseType", "__name", "isFrontChannel", "oneRedirectUriClients", "ctx", "next", "weak_cache_default", "params", "client", "__name", "debugError", "debug", "serverError", "serverErrorTrace", "authorization_error_handler_default", "__name", "provider", "AD_ACTA_CHECKS", "InvalidRedirectUri", "oneRedirectUriClients", "getOutAndEmit", "ctx", "err", "state", "out", "err_out_default", "safe", "param", "next", "caught", "oidc", "params", "Err", "check", "flag", "method", "recovery", "weak_cache_default", "renderError", "mode", "resolve", "parseBodyIfPost", "cty", "ctx", "next", "selective_body_default", "__name", "exceptMap", "key", "value", "__name", "onlyMap", "defaultMap", "rejectDupes", "except", "only", "ctx", "next", "mapFn", "dupes", "params", "param", "InvalidRequest", "formatList", "pluralize", "import_node_assert", "omit_by_default", "__name", "object", "predicate", "key", "value", "cache", "getParams", "allowList", "assert", "klass", "__name", "params", "prop", "omit_by_default", "val", "assembleParams", "allowList", "ctx", "next", "params", "getParams", "__name", "sessionHandler", "ctx", "next", "obj", "prop", "value", "sessionCookieName", "longRegExp", "ttl", "weak_cache_default", "setCookie", "cookie", "index", "ary", "__name", "appendWWWAuthenticate", "ctx", "scheme", "fields", "parameters", "omit_by_default", "v", "key", "val", "__name", "JWEDecryptionFailed", "JWKSNoMatchingKey", "JWSSignatureVerificationFailed", "errors_exports", "verifyAudience", "aud", "expected", "actual", "__name", "sign", "payload", "key", "alg", "options", "protectedHeader", "timestamp", "epoch_time_default", "iat", "ExternalSigningKey", "parts", "encode", "data", "encodeBuffer", "CompactSign", "decode", "input", "jwt", "length", "header", "assertPayload", "clockTolerance", "audience", "ignoreExpiration", "ignoreAzp", "ignoreIssued", "ignoreNotBefore", "issuer", "subject", "verify", "keystore", "verified", "decodeProtectedHeader", "keys", "compactVerify", "err", "decodeJwt", "encrypt", "cleartext", "enc", "fields", "CompactEncrypt", "decrypt", "jwe", "decrypted", "compactDecrypt", "jwtClientAuth", "ctx", "keystore", "filter", "clockTolerance", "assertJwtClientAuthClaimsAndHeader", "clientAuthSigningAlgValues", "weak_cache_default", "acceptedAud", "header", "payload", "decode", "InvalidClientAuth", "aud", "verify", "err", "__name", "attestationClientAuth", "ctx", "clockTolerance", "attestClientAuth", "attestSigningAlgValues", "AttestChallenges", "weak_cache_default", "nextChallenge", "attestation", "verifiedAttestation", "jwtVerify", "header", "payload", "decodeJwt", "err", "InvalidClientAuth", "pop", "verifiedPoP", "importJWK", "epoch_time_default", "CHALLENGE_OK_WINDOW", "UseAttestationChallenge", "__name", "assertionType", "decodeAuthToken", "token", "authToken", "noVSCHAR", "__name", "clientAuthentication", "provider", "authParams", "configuration", "features", "weak_cache_default", "method", "rejectDupes", "ctx", "next", "err", "appendWWWAuthenticate", "methods", "clientId", "clientSecret", "setClientId", "value", "InvalidRequest", "length", "parts", "basic", "i", "basicClientId", "sub", "decode", "InvalidClientAuth", "client", "jwtClientAuth", "alg", "getCertificate", "certificateAuthorized", "certificateSubjectMatches", "prop", "key", "cert", "expected", "certThumbprint", "actual", "attestationClientAuth", "checkClient", "ctx", "next", "validatePresence", "client", "InvalidClient", "__name", "checkResponseMode", "ctx", "next", "params", "client", "frontChannel", "isFrontChannel", "mode", "weak_cache_default", "UnsupportedResponseMode", "InvalidRequest", "JWT", "err", "explicit", "msg", "__name", "rejectUnsupported", "ctx", "next", "requestObjects", "pushedAuthorizationRequests", "webMessageResponseMode", "weak_cache_default", "params", "RequestNotSupported", "RequestUriNotSupported", "error", "InvalidRequest", "__name", "rejectRegistration", "ctx", "next", "RegistrationNotSupported", "__name", "oauthRequired", "ctx", "next", "validatePresence", "__name", "rejectRequestAndUri", "ctx", "next", "InvalidRequest", "__name", "loadPushedAuthorizationRequest", "ctx", "next", "pushedAuthorizationRequests", "weak_cache_default", "params", "PushedAuthorizationRequest", "rejectRequestAndUri", "PUSHED_REQUEST_URN", "InvalidRequestUri", "id", "pushedAuthorizationRequest", "RequestUriNotSupported", "__name", "processRequestObject", "PARAM_LIST", "rejectDupesMiddleware", "ctx", "next", "params", "client", "route", "pushedRequestObject", "InvalidRequest", "isBackchannelAuthentication", "configuration", "features", "weak_cache_default", "trusted", "header", "decrypted", "decrypt", "err", "OIDCProviderError", "InvalidRequestObject", "decoded", "decode", "payload", "alg", "request", "acc", "key", "value", "is_plain_object_default", "original", "param", "prop", "opts", "assertPayload", "verify", "__name", "oidcRequired", "ctx", "next", "params", "required", "validatePresence", "__name", "oidcRequired", "ctx", "next", "required", "validatePresence", "__name", "checkPrompt", "ctx", "next", "prompts", "supported", "weak_cache_default", "prompt", "InvalidRequest", "__name", "checkMaxAge", "ctx", "next", "maxAge", "InvalidRequest", "prompts", "__name", "checkIdTokenHint", "ctx", "next", "oidc", "idTokenHint", "err", "OIDCProviderError", "InvalidRequest", "__name", "checkScope", "PARAM_LIST", "ctx", "next", "statics", "weak_cache_default", "prompts", "client", "scopes", "responseType", "allowList", "scope", "InvalidScope", "__name", "checkResponseType", "ctx", "next", "params", "supported", "weak_cache_default", "UnsupportedResponseType", "InvalidRequest", "__name", "allowUnregisteredUri", "ctx", "pushedAuthorizationRequests", "weak_cache_default", "__name", "validateUnregisteredUri", "validator", "detail", "InvalidRequest", "checkRedirectUri", "next", "InvalidRedirectUri", "assignDefaults", "ctx", "next", "params", "client", "__name", "checkClaims", "ctx", "next", "params", "claimsParameter", "userinfo", "weak_cache_default", "InvalidRequest", "claims", "is_plain_object_default", "__name", "assignClaims", "ctx", "next", "params", "weak_cache_default", "merge_default", "acrValues", "__name", "loadAccount", "ctx", "next", "accountId", "account", "weak_cache_default", "__name", "loadGrant", "ctx", "next", "loadExistingGrant", "weak_cache_default", "grant", "__name", "interactions", "resumeRouteName", "ctx", "next", "oidc", "failedCheck", "prompt", "policy", "interactionUrl", "weak_cache_default", "name", "checks", "promptDetails", "results", "reason", "description", "error", "details", "check", "r", "AccessDenied", "resource", "className", "upper_first_default", "camel_case_default", "errors_exports", "CustomOIDCProviderError", "err", "code", "uid", "nanoid_default", "cookieOptions", "returnTo", "interactionSession", "ttl", "destination", "__name", "combined_scope_default", "__name", "grant", "requestParamScopes", "resourceServers", "combinedScope", "resourceServer", "tokenHandler", "ctx", "accountId", "token", "expiresWithSession", "resourceIndicators", "weak_cache_default", "resource", "InvalidTarget", "grant", "resourceServer", "__name", "codeHandler", "richAuthorizationRequests", "scopeSet", "combined_scope_default", "code", "idTokenHandler", "claims", "filter_claims_default", "rejected", "scope", "idToken", "getCtxAccountClaims", "conformIdTokenClaims", "userinfo", "processResponseTypes", "responses", "response", "responseType", "respond", "ctx", "pushedAuthorizationRequest", "InvalidRequestUri", "out", "processResponseTypes", "params", "responseMode", "weak_cache_default", "__name", "checkPKCE", "ctx", "next", "params", "pkce", "weak_cache_default", "InvalidRequest", "pkce_format_default", "__name", "resumeRoutes", "interactionEmit", "ctx", "next", "__name", "resumeAction", "allowList", "resumeRouteName", "ctx", "next", "cookieOptions", "weak_cache_default", "cookieId", "SessionNotFound", "interactionSession", "result", "storedParams", "trusted", "originSession", "session", "epoch_time_default", "nanoid_default", "formPost", "params", "getParams", "clearOpts", "className", "upper_first_default", "camel_case_default", "errors_exports", "CustomOIDCProviderError", "remember", "accountId", "loginTs", "amr", "acr", "__name", "checkClientGrantType", "route", "client", "next", "grantType", "InvalidRequest", "__name", "GATED_CLIENT", "GATED", "checkOpenIdScope", "PARAM_LIST", "ctx", "next", "InvalidRequest", "prop", "msg", "param", "__name", "CHARSETS", "generate", "charset", "mask", "length", "customAlphabet", "generated", "p", "__name", "denormalize", "normalized", "chars", "normalize", "input", "char", "deviceAuthorizationResponse", "ctx", "charset", "mask", "deviceInfo", "weak_cache_default", "userCode", "generate", "dc", "normalize", "__name", "deviceAuthorizationResponse", "ctx", "next", "__name", "deviceUserFlow", "allowList", "ctx", "next", "code", "NotFoundError", "ExpiredError", "AlreadyUsedError", "getParams", "__name", "deviceUserFlowErrors", "ctx", "next", "err", "ReRenderError", "out", "err_out_default", "code", "AccessDenied", "AbortedError", "__name", "deviceVerificationResponse", "ctx", "configuration", "features", "weak_cache_default", "code", "scopeSet", "combined_scope_default", "__name", "requestObjectRemapErrors", "ctx", "next", "err", "InvalidRedirectUri", "__name", "requestObjectRemapErrors", "ctx", "next", "err", "InvalidRequestObject", "__name", "stripOutsideJarParams", "ctx", "next", "JAR", "param", "value", "__name", "MAX_TTL", "pushedAuthorizationRequestResponse", "ctx", "request", "ttl", "dpopJkt", "now", "epoch_time_default", "exp", "thumbprint", "decode", "payload", "UnsecuredJWT", "requestObject", "id", "PUSHED_REQUEST_URN", "__name", "cibaLoadAccount", "ctx", "next", "mechanisms", "omit_by_default", "value", "mechanism", "length", "InvalidRequest", "findAccount", "features", "weak_cache_default", "ciba", "accountId", "checkIdTokenHint", "UnknownUserId", "account", "__name", "checkRequestedExpiry", "ctx", "next", "requestedExpiry", "InvalidRequest", "__name", "backchannelRequestResponse", "ctx", "BackchannelAuthenticationRequest", "ciba", "weak_cache_default", "request", "id", "__name", "checkCibaContext", "ctx", "next", "ciba", "weak_cache_default", "__name", "checkDpopJkt", "ctx", "next", "params", "dPoP", "validate_dpop_default", "allowReplay", "weak_cache_default", "ReplayDetection", "unique", "epoch_time_default", "CHALLENGE_OK_WINDOW", "InvalidRequest", "__name", "checkExtraParams", "ctx", "next", "extraParamsValidations", "weak_cache_default", "param", "validator", "__name", "unsupportedRar", "ctx", "next", "InvalidRequest", "__name", "A", "R", "DA", "CV", "DR", "PAR", "BA", "authRequired", "parseBody", "parseBodyIfPost", "authorizationAction", "provider", "endpoint", "claimsParameter", "dPoP", "resourceIndicators", "richAuthorizationRequests", "webMessageResponseMode", "extraParams", "weak_cache_default", "allowList", "param_list_default", "rejectDupesMiddleware", "rejectDupes", "stack", "use", "__name", "middleware", "only", "returnTo", "noCache", "sessionHandler", "deviceUserFlowErrors", "resumeAction", "deviceUserFlow", "authParams", "clientAuth", "clientAuthentication", "assembleParams", "clientAuthMiddlware", "deviceAuthorizationResponse", "rejectUnsupported", "stripOutsideJarParams", "checkClient", "checkClientGrantType", "requestObjectRemapErrors", "loadPushedAuthorizationRequest", "processRequestObject", "checkResponseMode", "oneRedirectUriClients", "oauthRequired", "rejectRegistration", "checkResponseType", "oidcRequired", "assignDefaults", "checkPrompt", "checkScope", "checkOpenIdScope", "checkRedirectUri", "checkPKCE", "checkClaims", "unsupportedRar", "checkRar", "checkResource", "checkMaxAge", "checkRequestedExpiry", "checkCibaContext", "checkIdTokenHint", "checkDpopJkt", "checkExtraParams", "interactionEmit", "assignClaims", "cibaLoadAccount", "loadAccount", "loadGrant", "interactions", "respond", "deviceVerificationResponse", "pushedAuthorizationRequestResponse", "backchannelRequestResponse", "PARAM_LIST", "parseBody", "parseBodyIfPost", "userinfo_default", "noCache", "__name", "ctx", "next", "err", "dPoP", "weak_cache_default", "appendWWWAuthenticate", "scheme", "InvalidDpopProof", "UseDpopNonce", "assembleParams", "rejectDupes", "accessTokenValue", "validate_dpop_default", "accessToken", "InvalidToken", "scopes", "InsufficientScope", "getCertificate", "cert", "certThumbprint", "allowReplay", "unique", "epoch_time_default", "CHALLENGE_OK_WINDOW", "missing", "difference_default", "client", "account", "grant", "claims", "filter_claims_default", "rejected", "scope", "token", "getCtxAccountClaims", "mask", "grantTypeSet", "tokenAction", "provider", "authParams", "clientAuth", "clientAuthentication", "grantTypeParams", "weak_cache_default", "noCache", "urlencoded", "assembleParams", "rejectDupes", "__name", "ctx", "next", "grantParams", "key", "validatePresence", "UnsupportedGrantType", "InvalidRequest", "grantTypeDupes", "grantType", "grantTypeHandlers", "renderJWKS", "ctx", "keys", "weak_cache_default", "__name", "registration_exports", "__export", "del", "get", "post", "put", "import_node_http", "sectorValidate", "provider", "client", "weak_cache_default", "request", "response", "err", "InvalidClientMetadata", "body", "uri", "__name", "add", "provider", "metadata", "ctx", "store", "client", "sectorValidate", "__name", "FORBIDDEN", "validateRegistrationAccessToken", "ctx", "next", "regAccessToken", "InvalidToken", "client", "err", "appendWWWAuthenticate", "__name", "post", "noCache", "json", "provider", "initialAccessToken", "weak_cache_default", "iat", "valid", "constant_equals_default", "idFactory", "secretFactory", "issueRegistrationAccessToken", "properties", "clientId", "rat", "epoch_time_default", "Client", "policies", "implementations", "policy", "add", "get", "InvalidRequest", "put", "hit", "field", "clientSecretValid", "omit_by_default", "value", "management", "del", "rejectStructuredTokens", "ctx", "next", "params", "tokenIsJWT", "decodeProtectedHeader", "UnsupportedTokenType", "__name", "revokeable", "revocationAction", "provider", "authParams", "clientAuth", "clientAuthentication", "PARAM_LIST", "grantTypeHandlers", "configuration", "weak_cache_default", "allowedPolicy", "getAccessToken", "token", "__name", "getClientCredentials", "getRefreshToken", "findResult", "results", "found", "urlencoded", "assembleParams", "rejectDupes", "ctx", "next", "validatePresence", "rejectStructuredTokens", "params", "result", "checkAttestBinding", "revoke", "introspectable", "JWT", "introspectionAction", "provider", "authParams", "clientAuth", "clientAuthentication", "PARAM_LIST", "configuration", "weak_cache_default", "pairwiseIdentifier", "allowedPolicy", "jwtIntrospection", "richAuthorizationRequests", "grantTypeHandlers", "IdToken", "AccessToken", "ClientCredentials", "RefreshToken", "Client", "getAccessToken", "token", "__name", "getClientCredentials", "getRefreshToken", "findResult", "results", "found", "noCache", "urlencoded", "assembleParams", "rejectDupes", "ctx", "next", "validatePresence", "rejectStructuredTokens", "client", "encrypt", "sign", "accepts", "InvalidRequest", "params", "result", "grant", "checkAttestBinding", "defaults", "deep", "target", "sources", "source", "is_plain_object_default", "key", "value", "__name", "defaults_default", "discovery", "ctx", "configuration", "features", "weak_cache_default", "pushedAuthorizationRequests", "requestObjects", "richAuthorizationRequests", "alg", "defaults_default", "__name", "challenge_default", "noCache", "__name", "ctx", "DPoPNonces", "AttestChallenges", "weak_cache_default", "nextNonce", "nextChallenge", "end_session_exports", "__export", "confirm", "init", "success", "crypto", "parseBody", "parseBodyIfPost", "init", "noCache", "sessionHandler", "assembleParams", "rejectDupes", "__name", "ctx", "next", "params", "client", "idTokenHint", "decode", "err", "InvalidRequest", "clientId", "InvalidClient", "OIDCProviderError", "secret", "action", "formHtml", "weak_cache_default", "formPost", "confirm", "session", "state", "backchannelLogout", "opts", "clientIds", "back", "sid", "accountId", "grantId", "revoke", "usePostLogoutUri", "forwardClientId", "uri", "redirectUri", "success", "code_verification_exports", "__export", "get", "post", "crypto", "parseBody", "parseBodyIfPost", "get", "sessionHandler", "assembleParams", "__name", "ctx", "charset", "userCodeInputSource", "weak_cache_default", "secret", "action", "formPost", "input", "post", "rejectDupes", "next", "InvalidRequest", "userCodeConfirmSource", "mask", "userCode", "confirm", "abort", "NoCodeError", "normalized", "normalize", "code", "NotFoundError", "ExpiredError", "AlreadyUsedError", "AbortedError", "client", "InvalidClient", "denormalize", "import_node_async_hooks", "als_default", "initializeApp", "configuration", "features", "weak_cache_default", "maxAge", "exposeHeaders", "dpop", "attest", "wwwAuth", "__name", "CORS", "cors_default", "router", "router_default", "ensureOIDC", "ctx", "next", "oidcCtx", "als_default", "routeMap", "normalizeRoute", "name", "route", "stack", "assert", "middleware", "ensureSessionSave", "get", "post", "del", "put", "options", "routes", "enableHttpPostMethods", "handler", "parameters", "grantType", "grants_exports", "grantTypeHandlers", "dupes", "mode", "response_modes_exports", "webMessage", "jwtResponseModes", "authorization", "authorizationAction", "authError", "authorization_error_handler_default", "resume", "getErrorHandler", "userinfo_default", "token", "tokenAction", "renderJWKS", "oauthDiscoveryRoute", "discovery", "openidDiscoveryRoute", "challenge_default", "clientRoute", "registration_exports", "revocation", "revocationAction", "introspection", "introspectionAction", "end_session_exports", "deviceAuthorization", "postCodeVerification", "code_verification_exports", "deviceResume", "pushedAuthorizationRequests", "ciba", "interaction", "devInteractions", "initializeClients", "clients", "staticClients", "metadata", "is_plain_object_default", "InvalidClientMetadata", "weak_cache_default", "__name", "ResourceServer", "__name", "identifier", "data", "valid_url_exports", "__export", "isHttpsUri", "isWebUri", "isHttpsUri", "uri", "__name", "isWebUri", "protocol", "getClaims", "provider", "claimConfig", "claimsSupported", "pairwiseIdentifier", "weak_cache_default", "__name", "available", "ctx", "client", "is_plain_object_default", "value", "scope", "merge_default", "claim", "include", "key", "claims", "pick_default", "events", "COOKIES", "NoAccessTokenProvided", "InvalidToken", "__name", "getContext", "provider", "acceptQueryParamAccessTokens", "dPoPConfig", "fapi", "oidcScopes", "weak_cache_default", "OIDCContext", "#requestParamClaims", "#accessToken", "#fapiProfile", "ctx", "oneOf", "i", "key", "value", "name", "opt", "originalUrl", "mountPath", "should", "requestParamClaims", "userinfo", "idToken", "claims", "claim", "is_plain_object_default", "rejected", "resolve", "acceptDPoP", "acceptQueryParam", "mechanisms", "omit_by_default", "mechanism", "length", "token", "InvalidRequest", "dpop", "header", "scheme", "parts", "apply", "mixins", "klass", "mixed", "mixin", "__name", "pick_by_default", "__name", "object", "predicate", "result", "key", "value", "withExtra", "bitsPerSymbol", "tokenLength", "__name", "i", "opaque_default", "provider", "length", "bitsOfOpaqueRandomness", "weak_cache_default", "als_default", "nanoid_default", "configuration", "now", "epoch_time_default", "exp", "payload", "pick_by_default", "val", "key", "stored", "ignoreExpiration", "assertPayload", "crypto", "jwt_default", "__name", "provider", "opaque", "getResourceServerConfig", "token", "keystore", "configuration", "weak_cache_default", "defaultAlg", "sign", "encrypt", "alg", "key", "kid", "enc", "nanoid_default", "payload", "aud", "jti", "iat", "exp", "scope", "clientId", "x5t", "jkt", "extra", "rar", "sub", "client", "pairwiseIdentifier", "als_default", "tokenPayload", "structuredToken", "customizer", "config", "signed", "cleartext", "dynamic_default", "__name", "provider", "formats", "args", "resolver", "weak_cache_default", "format", "als_default", "formats_default", "__name", "provider", "result", "opaque_default", "jwt_default", "dynamic_default", "DEFAULT", "AccessTokenFormat", "ctx", "token", "__name", "has_format_default", "provider", "type", "superclass", "formats", "formats_default", "FORMAT", "dynamic", "generateTokenId", "getValueAndPayload", "klass", "weak_cache_default", "has_grant_type_default", "__name", "superclass", "has_grant_id_default", "__name", "superclass", "grantId", "x5t", "jkt", "is_sender_constrained_default", "__name", "superclass", "prop", "input", "InvalidRequest", "certThumbprint", "is_session_bound_default", "__name", "provider", "superclass", "args", "token", "ignoreSessionBinding", "session", "set_audience_default", "__name", "superclass", "audience", "InvalidTarget", "access_token_default", "__name", "provider", "apply", "has_grant_type_default", "has_grant_id_default", "is_sender_constrained_default", "is_session_bound_default", "set_audience_default", "has_format_default", "consumable_default", "__name", "superclass", "is_attestation_constrained_default", "__name", "superclass", "ctx", "jwk", "decodeJwt", "calculateJwkThumbprint", "stores_auth_default", "__name", "superclass", "stores_pkce_default", "__name", "superclass", "authorization_code_default", "__name", "provider", "apply", "consumable_default", "is_session_bound_default", "has_grant_id_default", "is_attestation_constrained_default", "stores_auth_default", "stores_pkce_default", "has_format_default", "snake_case_default", "__name", "str", "x", "IN_PAYLOAD", "adapterCache", "getBaseModel", "provider", "adapter", "ctx", "obj", "type_validators_default", "weak_cache_default", "__name", "Class", "jti", "kind", "payload", "pick_by_default", "val", "key", "ttl", "epoch_time_default", "value", "ignoreExpiration", "stored", "eventName", "snake_case_default", "now", "percentage", "BaseModel", "has_format_default", "getBaseToken", "provider", "BaseToken", "weak_cache_default", "__name", "#client", "#resourceServer", "client", "resourceServer", "expiresIn", "rest", "args", "ttl", "als_default", "crypto", "import_node_http", "map_keys_default", "__name", "object", "iteratee", "result", "key", "value", "sector_identifier_default", "__name", "client", "InvalidClientMetadata", "W3CEmailRegExp", "needsJwks", "ARYS", "BOOL", "ENUMS", "HTTPS_URI", "LOOPBACKS", "REQUIRED", "STRING", "SYNTAX", "WEB_URI", "WHEN", "client_attributes_exports", "isUndefined", "value", "__name", "getSchema", "provider", "configuration", "features", "weak_cache_default", "scopes", "RECOGNIZED_METADATA", "DEFAULTS", "DEFAULT_CONFIGURATION", "CHOICES", "key", "ENUM", "alg", "metadata", "grant", "method", "x", "Schema", "ctx", "processCustomMetadata", "#initialize", "omit_by_default", "pick_default", "prop", "responseTypes", "rt", "type", "par", "pop", "length", "conf", "#unset", "sector_identifier_default", "target", "choice", "choices", "only", "options", "option", "#enum", "message", "code", "InvalidClientMetadata", "checked", "uri", "isAry", "val", "valid_url_exports", "when", "property", "fn", "formatList", "uris", "label", "redirectUri", "parsed", "hostname", "protocol", "hash", "contact", "allowed", "scope", "regexp", "EC_CURVES", "OKP_SUBTYPES", "validateJWKS", "__name", "jwks", "is_plain_object_default", "InvalidClientMetadata", "nonSecretAuthMethods", "clientEncryptions", "signAlgAttributes", "isSymmetricAlg", "prop", "value", "isHmac", "checkJWK", "jwk", "x", "deriveEncryptionKey", "secret", "length", "digest", "getClient", "provider", "ClientKeyStore", "keystore_default", "#client", "#provider", "clientInstance", "now", "epoch_time_default", "key", "certThumbprint", "request", "weak_cache_default", "response", "body", "headers", "status", "freshUntil", "maxAge", "err", "buildAsymmetricKeyStore", "client", "keystore", "buildSymmetricKeyStore", "configuration", "algs", "alg", "encode", "len", "Client", "#sectorIdentifier", "#Schema", "getSchema", "#adapter", "metadata", "ctx", "schema", "map_keys_default", "camel_case_default", "type_validators_default", "backchannelAuthenticationRequest", "error", "sub", "sid", "logoutToken", "nanoid_default", "type", "responseMode", "responseType", "fapiProfile", "#redirectAllowed", "allowedUris", "parsed", "match", "allowed", "LOOPBACKS", "registered", "sectorValidate", "snaked", "snake_case_default", "sector_identifier_default", "actual", "constant_equals_default", "message", "errorOverride", "clockTolerance", "InvalidClient", "id", "staticClients", "dynamicClients", "cached", "properties", "propHash", "add", "client_credentials_default", "__name", "provider", "apply", "set_audience_default", "is_sender_constrained_default", "has_format_default", "device_code_default", "__name", "provider", "apply", "consumable_default", "has_grant_id_default", "is_attestation_constrained_default", "is_session_bound_default", "stores_auth_default", "has_format_default", "userCode", "ignoreExpiration", "stored", "payload", "constant_equals_default", "backchannel_authentication_request_default", "__name", "provider", "apply", "consumable_default", "has_grant_id_default", "is_attestation_constrained_default", "is_session_bound_default", "stores_auth_default", "has_format_default", "import_node_util", "crypto", "hashes", "getHashArgs", "alg", "__name", "messages", "getIdToken", "provider", "available", "ctx", "client", "is_plain_object_default", "args", "ttl", "weak_cache_default", "key", "value", "mask", "merge_default", "use", "expiresAt", "expiresIn", "epoch_time_default", "payload", "signOptions", "encryption", "signed", "jwk", "digest", "claim", "hash", "sign", "encryptionKey", "InvalidClientMetadata", "kid", "encrypt", "jwt", "keyOrStore", "opts", "verify", "validate", "provider", "policies", "policy", "weak_cache_default", "__name", "has_policies_default", "superclass", "args", "result", "initial_access_token_default", "__name", "provider", "apply", "has_policies_default", "has_format_default", "v", "interaction_default", "__name", "provider", "has_format_default", "weak_cache_default", "jti", "payload", "session", "grant", "value", "ttl", "epoch_time_default", "pushed_authorization_request_default", "__name", "provider", "apply", "consumable_default", "is_attestation_constrained_default", "has_format_default", "weak_cache_default", "refresh_token_default", "__name", "provider", "apply", "consumable_default", "has_grant_type_default", "has_grant_id_default", "is_sender_constrained_default", "is_attestation_constrained_default", "is_session_bound_default", "stores_auth_default", "has_format_default", "args", "epoch_time_default", "registration_access_token_default", "__name", "provider", "apply", "has_policies_default", "has_format_default", "crypto", "replay_detection_default", "__name", "provider", "has_format_default", "weak_cache_default", "iss", "jti", "exp", "id", "epoch_time_default", "session_default", "__name", "provider", "has_format_default", "weak_cache_default", "payload", "nanoid_default", "value", "uid", "stored", "ctx", "cookies", "cookieSessionId", "session", "ttl", "result", "epoch_time_default", "age", "maxAge", "clientId", "authorization", "details", "transient", "accountId", "loginTs", "amr", "acr", "NON_REJECTABLE_CLAIMS", "grant_default", "__name", "provider", "apply", "has_format_default", "identifier", "value", "args", "rejected", "granted", "scope", "filter", "resource", "claim", "claims", "detail", "Provider", "koa_default", "__name", "#AccessToken", "#AuthorizationCode", "#BaseToken", "#Claims", "#Client", "#ClientCredentials", "#DeviceCode", "#BackchannelAuthenticationRequest", "#Grant", "#IdToken", "#InitialAccessToken", "#Interaction", "#mountPath", "#OIDCContext", "#PushedAuthorizationRequest", "#RefreshToken", "#RegistrationAccessToken", "#ReplayDetection", "#Session", "#exec", "#int", "QuickLRU", "issuer", "setup", "assert", "isWebUri", "pathname", "host", "protocol", "search", "hash", "href", "configuration", "configuration_default", "set", "ServerChallenge", "cause", "getBaseModel", "initializeAdapter", "initialize", "initializeApp", "initializeClients", "name", "opt", "handler", "params", "dupes", "grantTypeHandlers", "grantTypeParams", "grantTypeDupes", "grantParams", "type", "responseModes", "mountPath", "opts", "routerUrl", "req", "res", "result", "mergeWithLastSubmission", "interaction", "#getInteraction", "epoch_time_default", "returnTo", "request", "acr", "amr", "authTime", "sessionUid", "expiresWithSession", "sid", "rar", "client", "OIDCProviderError", "getContext", "getClaims", "getBaseToken", "getIdToken", "getClient", "grant_default", "session_default", "interaction_default", "access_token_default", "authorization_code_default", "refresh_token_default", "client_credentials_default", "initial_access_token_default", "registration_access_token_default", "device_code_default", "backchannel_authentication_request_default", "pushed_authorization_request_default", "replay_detection_default", "ResourceServer", "id", "SessionNotFound", "session", "fn", "als_default", "deno", "bun", "workerd", "minimal", "release", "warn", "lib_default", "Provider", "import_koa_router", "coBody", "external_exports", "__export", "$brand", "$input", "$output", "NEVER", "TimePrecision", "ZodAny", "ZodArray", "ZodBase64", "ZodBase64URL", "ZodBigInt", "ZodBigIntFormat", "ZodBoolean", "ZodCIDRv4", "ZodCIDRv6", "ZodCUID", "ZodCUID2", "ZodCatch", "ZodCodec", "ZodCustom", "ZodCustomStringFormat", "ZodDate", "ZodDefault", "ZodDiscriminatedUnion", "ZodE164", "ZodEmail", "ZodEmoji", "ZodEnum", "ZodError", "ZodExactOptional", "ZodFile", "ZodFirstPartyTypeKind", "ZodFunction", "ZodGUID", "ZodIPv4", "ZodIPv6", "ZodISODate", "ZodISODateTime", "ZodISODuration", "ZodISOTime", "ZodIntersection", "ZodIssueCode", "ZodJWT", "ZodKSUID", "ZodLazy", "ZodLiteral", "ZodMAC", "ZodMap", "ZodNaN", "ZodNanoID", "ZodNever", "ZodNonOptional", "ZodNull", "ZodNullable", "ZodNumber", "ZodNumberFormat", "ZodObject", "ZodOptional", "ZodPipe", "ZodPrefault", "ZodPromise", "ZodReadonly", "ZodRealError", "ZodRecord", "ZodSet", "ZodString", "ZodStringFormat", "ZodSuccess", "ZodSymbol", "ZodTemplateLiteral", "ZodTransform", "ZodTuple", "ZodType", "ZodULID", "ZodURL", "ZodUUID", "ZodUndefined", "ZodUnion", "ZodUnknown", "ZodVoid", "ZodXID", "ZodXor", "_ZodString", "_default", "_function", "any", "array", "base64", "base64url", "bigint", "boolean", "_catch", "check", "cidrv4", "cidrv6", "clone", "codec", "coerce_exports", "config", "core_exports", "cuid", "cuid2", "custom", "date", "decode", "decodeAsync", "describe", "discriminatedUnion", "e164", "email", "emoji", "encode", "encodeAsync", "_endsWith", "_enum", "exactOptional", "file", "flattenError", "float32", "float64", "formatError", "fromJSONSchema", "getErrorMap", "globalRegistry", "_gt", "_gte", "guid", "hash", "hex", "hostname", "httpUrl", "_includes", "_instanceof", "int", "int32", "int64", "intersection", "ipv4", "ipv6", "iso_exports", "json", "jwt", "keyof", "ksuid", "lazy", "_length", "literal", "locales_exports", "looseObject", "looseRecord", "_lowercase", "_lt", "_lte", "mac", "map", "_maxLength", "_maxSize", "meta", "_mime", "_minLength", "_minSize", "_multipleOf", "nan", "nanoid", "nativeEnum", "_negative", "never", "_nonnegative", "nonoptional", "_nonpositive", "_normalize", "_null", "nullable", "nullish", "number", "object", "optional", "_overwrite", "parse", "parseAsync", "partialRecord", "pipe", "_positive", "prefault", "preprocess", "prettifyError", "promise", "_property", "readonly", "record", "refine", "_regex", "regexes_exports", "registry", "safeDecode", "safeDecodeAsync", "safeEncode", "safeEncodeAsync", "safeParse", "safeParseAsync", "set", "setErrorMap", "_size", "_slugify", "_startsWith", "strictObject", "string", "stringFormat", "stringbool", "success", "superRefine", "symbol", "templateLiteral", "toJSONSchema", "_toLowerCase", "_toUpperCase", "transform", "treeifyError", "_trim", "tuple", "uint32", "uint64", "ulid", "_undefined", "union", "unknown", "_uppercase", "url", "util_exports", "uuid", "uuidv4", "uuidv6", "uuidv7", "_void", "xid", "xor", "core_exports", "__export", "$ZodAny", "$ZodArray", "$ZodAsyncError", "$ZodBase64", "$ZodBase64URL", "$ZodBigInt", "$ZodBigIntFormat", "$ZodBoolean", "$ZodCIDRv4", "$ZodCIDRv6", "$ZodCUID", "$ZodCUID2", "$ZodCatch", "$ZodCheck", "$ZodCheckBigIntFormat", "$ZodCheckEndsWith", "$ZodCheckGreaterThan", "$ZodCheckIncludes", "$ZodCheckLengthEquals", "$ZodCheckLessThan", "$ZodCheckLowerCase", "$ZodCheckMaxLength", "$ZodCheckMaxSize", "$ZodCheckMimeType", "$ZodCheckMinLength", "$ZodCheckMinSize", "$ZodCheckMultipleOf", "$ZodCheckNumberFormat", "$ZodCheckOverwrite", "$ZodCheckProperty", "$ZodCheckRegex", "$ZodCheckSizeEquals", "$ZodCheckStartsWith", "$ZodCheckStringFormat", "$ZodCheckUpperCase", "$ZodCodec", "$ZodCustom", "$ZodCustomStringFormat", "$ZodDate", "$ZodDefault", "$ZodDiscriminatedUnion", "$ZodE164", "$ZodEmail", "$ZodEmoji", "$ZodEncodeError", "$ZodEnum", "$ZodError", "$ZodExactOptional", "$ZodFile", "$ZodFunction", "$ZodGUID", "$ZodIPv4", "$ZodIPv6", "$ZodISODate", "$ZodISODateTime", "$ZodISODuration", "$ZodISOTime", "$ZodIntersection", "$ZodJWT", "$ZodKSUID", "$ZodLazy", "$ZodLiteral", "$ZodMAC", "$ZodMap", "$ZodNaN", "$ZodNanoID", "$ZodNever", "$ZodNonOptional", "$ZodNull", "$ZodNullable", "$ZodNumber", "$ZodNumberFormat", "$ZodObject", "$ZodObjectJIT", "$ZodOptional", "$ZodPipe", "$ZodPrefault", "$ZodPromise", "$ZodReadonly", "$ZodRealError", "$ZodRecord", "$ZodRegistry", "$ZodSet", "$ZodString", "$ZodStringFormat", "$ZodSuccess", "$ZodSymbol", "$ZodTemplateLiteral", "$ZodTransform", "$ZodTuple", "$ZodType", "$ZodULID", "$ZodURL", "$ZodUUID", "$ZodUndefined", "$ZodUnion", "$ZodUnknown", "$ZodVoid", "$ZodXID", "$ZodXor", "$brand", "$constructor", "$input", "$output", "Doc", "json_schema_exports", "JSONSchemaGenerator", "NEVER", "TimePrecision", "_any", "_array", "_base64", "_base64url", "_bigint", "_boolean", "_catch", "_check", "_cidrv4", "_cidrv6", "_coercedBigint", "_coercedBoolean", "_coercedDate", "_coercedNumber", "_coercedString", "_cuid", "_cuid2", "_custom", "_date", "_decode", "_decodeAsync", "_default", "_discriminatedUnion", "_e164", "_email", "_emoji", "_encode", "_encodeAsync", "_endsWith", "_enum", "_file", "_float32", "_float64", "_gt", "_gte", "_guid", "_includes", "_int", "_int32", "_int64", "_intersection", "_ipv4", "_ipv6", "_isoDate", "_isoDateTime", "_isoDuration", "_isoTime", "_jwt", "_ksuid", "_lazy", "_length", "_literal", "_lowercase", "_lt", "_lte", "_mac", "_map", "_maxLength", "_maxSize", "_mime", "_minLength", "_minSize", "_multipleOf", "_nan", "_nanoid", "_nativeEnum", "_negative", "_never", "_nonnegative", "_nonoptional", "_nonpositive", "_normalize", "_null", "_nullable", "_number", "_optional", "_overwrite", "_parse", "_parseAsync", "_pipe", "_positive", "_promise", "_property", "_readonly", "_record", "_refine", "_regex", "_safeDecode", "_safeDecodeAsync", "_safeEncode", "_safeEncodeAsync", "_safeParse", "_safeParseAsync", "_set", "_size", "_slugify", "_startsWith", "_string", "_stringFormat", "_stringbool", "_success", "_superRefine", "_symbol", "_templateLiteral", "_toLowerCase", "_toUpperCase", "_transform", "_trim", "_tuple", "_uint32", "_uint64", "_ulid", "_undefined", "_union", "_unknown", "_uppercase", "_url", "_uuid", "_uuidv4", "_uuidv6", "_uuidv7", "_void", "_xid", "_xor", "clone", "config", "createStandardJSONSchemaMethod", "createToJSONSchemaMethod", "decode", "decodeAsync", "describe", "encode", "encodeAsync", "extractDefs", "finalize", "flattenError", "formatError", "globalConfig", "globalRegistry", "initializeContext", "isValidBase64", "isValidBase64URL", "isValidJWT", "locales_exports", "meta", "parse", "parseAsync", "prettifyError", "process", "regexes_exports", "registry", "safeDecode", "safeDecodeAsync", "safeEncode", "safeEncodeAsync", "safeParse", "safeParseAsync", "toDotPath", "toJSONSchema", "treeifyError", "util_exports", "version", "NEVER", "$constructor", "name", "initializer", "params", "init", "inst", "def", "_", "proto", "keys", "i", "k", "__name", "Parent", "Definition", "_a", "fn", "$brand", "$ZodAsyncError", "$ZodEncodeError", "globalConfig", "config", "newConfig", "util_exports", "__export", "BIGINT_FORMAT_RANGES", "Class", "NUMBER_FORMAT_RANGES", "aborted", "allowsEval", "assert", "assertEqual", "assertIs", "assertNever", "assertNotEqual", "assignProp", "base64ToUint8Array", "base64urlToUint8Array", "cached", "captureStackTrace", "cleanEnum", "cleanRegex", "clone", "cloneDef", "createTransparentProxy", "defineLazy", "esc", "escapeRegex", "extend", "finalizeIssue", "floatSafeRemainder", "getElementAtPath", "getEnumValues", "getLengthableOrigin", "getParsedType", "getSizableOrigin", "hexToUint8Array", "isObject", "isPlainObject", "issue", "joinValues", "jsonStringifyReplacer", "merge", "mergeDefs", "normalizeParams", "nullish", "numKeys", "objectClone", "omit", "optionalKeys", "parsedType", "partial", "pick", "prefixIssues", "primitiveTypes", "promiseAllObject", "propertyKeyTypes", "randomString", "required", "safeExtend", "shallowClone", "slugify", "stringifyPrimitive", "uint8ArrayToBase64", "uint8ArrayToBase64url", "uint8ArrayToHex", "unwrapMessage", "assertEqual", "val", "__name", "assertNotEqual", "assertIs", "_arg", "assertNever", "_x", "assert", "_", "getEnumValues", "entries", "numericValues", "v", "k", "joinValues", "array", "separator", "stringifyPrimitive", "jsonStringifyReplacer", "value", "cached", "getter", "nullish", "input", "cleanRegex", "source", "start", "end", "floatSafeRemainder", "step", "valDecCount", "stepString", "stepDecCount", "match", "decCount", "valInt", "stepInt", "EVALUATING", "defineLazy", "object", "key", "objectClone", "obj", "assignProp", "target", "prop", "mergeDefs", "defs", "mergedDescriptors", "def", "descriptors", "cloneDef", "schema", "getElementAtPath", "path", "acc", "promiseAllObject", "promisesObj", "keys", "promises", "results", "resolvedObj", "i", "randomString", "length", "chars", "str", "esc", "slugify", "captureStackTrace", "_args", "isObject", "data", "allowsEval", "F", "isPlainObject", "o", "ctor", "prot", "shallowClone", "numKeys", "keyCount", "getParsedType", "t", "propertyKeyTypes", "primitiveTypes", "escapeRegex", "clone", "inst", "params", "cl", "normalizeParams", "_params", "createTransparentProxy", "receiver", "descriptor", "optionalKeys", "shape", "NUMBER_FORMAT_RANGES", "BIGINT_FORMAT_RANGES", "pick", "mask", "currDef", "checks", "newShape", "omit", "extend", "existingShape", "_shape", "safeExtend", "merge", "a", "b", "partial", "Class", "oldShape", "required", "aborted", "x", "startIndex", "prefixIssues", "issues", "iss", "_a", "unwrapMessage", "message", "finalizeIssue", "ctx", "config", "full", "getSizableOrigin", "getLengthableOrigin", "parsedType", "issue", "args", "cleanEnum", "el", "base64ToUint8Array", "base64", "binaryString", "bytes", "uint8ArrayToBase64", "base64urlToUint8Array", "base64url", "padding", "uint8ArrayToBase64url", "hexToUint8Array", "hex", "cleanHex", "uint8ArrayToHex", "initializer", "__name", "inst", "def", "jsonStringifyReplacer", "$ZodError", "$constructor", "$ZodRealError", "flattenError", "error", "mapper", "issue", "fieldErrors", "formErrors", "sub", "formatError", "processError", "issues", "curr", "i", "el", "treeifyError", "result", "path", "_a", "_b", "fullpath", "terminal", "toDotPath", "_path", "segs", "seg", "prettifyError", "lines", "a", "b", "_parse", "__name", "_Err", "schema", "value", "_ctx", "_params", "ctx", "result", "$ZodAsyncError", "e", "iss", "finalizeIssue", "config", "captureStackTrace", "parse", "$ZodRealError", "_parseAsync", "params", "parseAsync", "_safeParse", "$ZodError", "safeParse", "_safeParseAsync", "safeParseAsync", "_encode", "encode", "_decode", "decode", "_encodeAsync", "encodeAsync", "_decodeAsync", "decodeAsync", "_safeEncode", "safeEncode", "_safeDecode", "safeDecode", "_safeEncodeAsync", "safeEncodeAsync", "_safeDecodeAsync", "safeDecodeAsync", "regexes_exports", "__export", "base64", "base64url", "bigint", "boolean", "browserEmail", "cidrv4", "cidrv6", "cuid", "cuid2", "date", "datetime", "domain", "duration", "e164", "email", "emoji", "extendedDuration", "guid", "hex", "hostname", "html5Email", "idnEmail", "integer", "ipv4", "ipv6", "ksuid", "lowercase", "mac", "md5_base64", "md5_base64url", "md5_hex", "nanoid", "_null", "number", "rfc5322Email", "sha1_base64", "sha1_base64url", "sha1_hex", "sha256_base64", "sha256_base64url", "sha256_hex", "sha384_base64", "sha384_base64url", "sha384_hex", "sha512_base64", "sha512_base64url", "sha512_hex", "string", "time", "ulid", "_undefined", "unicodeEmail", "uppercase", "uuid", "uuid4", "uuid6", "uuid7", "xid", "cuid", "cuid2", "ulid", "xid", "ksuid", "nanoid", "duration", "extendedDuration", "guid", "uuid", "__name", "version", "uuid4", "uuid6", "uuid7", "email", "html5Email", "rfc5322Email", "unicodeEmail", "idnEmail", "browserEmail", "_emoji", "emoji", "ipv4", "ipv6", "mac", "delimiter", "escapedDelim", "escapeRegex", "cidrv4", "cidrv6", "base64", "base64url", "hostname", "domain", "e164", "dateSource", "date", "timeSource", "args", "hhmm", "time", "datetime", "opts", "timeRegex", "string", "params", "regex", "bigint", "integer", "number", "boolean", "_null", "_undefined", "lowercase", "uppercase", "hex", "fixedBase64", "bodyLength", "padding", "__name", "fixedBase64url", "length", "md5_hex", "md5_base64", "md5_base64url", "sha1_hex", "sha1_base64", "sha1_base64url", "sha256_hex", "sha256_base64", "sha256_base64url", "sha384_hex", "sha384_base64", "sha384_base64url", "sha512_hex", "sha512_base64", "sha512_base64url", "$ZodCheck", "$constructor", "inst", "def", "_a", "numericOriginMap", "$ZodCheckLessThan", "origin", "bag", "curr", "payload", "$ZodCheckGreaterThan", "$ZodCheckMultipleOf", "floatSafeRemainder", "$ZodCheckNumberFormat", "isInt", "minimum", "maximum", "NUMBER_FORMAT_RANGES", "integer", "input", "$ZodCheckBigIntFormat", "BIGINT_FORMAT_RANGES", "$ZodCheckMaxSize", "val", "nullish", "getSizableOrigin", "$ZodCheckMinSize", "$ZodCheckSizeEquals", "size", "tooBig", "$ZodCheckMaxLength", "getLengthableOrigin", "$ZodCheckMinLength", "$ZodCheckLengthEquals", "length", "$ZodCheckStringFormat", "_b", "$ZodCheckRegex", "$ZodCheckLowerCase", "lowercase", "$ZodCheckUpperCase", "uppercase", "$ZodCheckIncludes", "escapedRegex", "escapeRegex", "pattern", "$ZodCheckStartsWith", "$ZodCheckEndsWith", "handleCheckPropertyResult", "result", "property", "prefixIssues", "__name", "$ZodCheckProperty", "$ZodCheckMimeType", "mimeSet", "$ZodCheckOverwrite", "Doc", "__name", "args", "fn", "arg", "lines", "x", "minIndent", "dedented", "line", "F", "version", "$ZodType", "$constructor", "inst", "def", "_a", "version", "checks", "ch", "fn", "runChecks", "__name", "payload", "ctx", "isAborted", "aborted", "asyncResult", "currLen", "_", "$ZodAsyncError", "handleCanaryResult", "canary", "checkResult", "result", "defineLazy", "value", "r", "safeParse", "safeParseAsync", "$ZodString", "string", "$ZodStringFormat", "$ZodCheckStringFormat", "$ZodGUID", "guid", "$ZodUUID", "v", "uuid", "$ZodEmail", "email", "$ZodURL", "trimmed", "url", "$ZodEmoji", "emoji", "$ZodNanoID", "nanoid", "$ZodCUID", "cuid", "$ZodCUID2", "cuid2", "$ZodULID", "ulid", "$ZodXID", "xid", "$ZodKSUID", "ksuid", "$ZodISODateTime", "datetime", "$ZodISODate", "date", "$ZodISOTime", "time", "$ZodISODuration", "duration", "$ZodIPv4", "ipv4", "$ZodIPv6", "ipv6", "$ZodMAC", "mac", "$ZodCIDRv4", "cidrv4", "$ZodCIDRv6", "cidrv6", "parts", "address", "prefix", "prefixNum", "isValidBase64", "data", "$ZodBase64", "base64", "isValidBase64URL", "base64url", "c", "padded", "$ZodBase64URL", "$ZodE164", "e164", "isValidJWT", "token", "algorithm", "tokensParts", "header", "parsedHeader", "$ZodJWT", "$ZodCustomStringFormat", "$ZodNumber", "number", "_ctx", "input", "received", "$ZodNumberFormat", "$ZodCheckNumberFormat", "$ZodBoolean", "boolean", "$ZodBigInt", "bigint", "$ZodBigIntFormat", "$ZodCheckBigIntFormat", "$ZodSymbol", "$ZodUndefined", "_undefined", "$ZodNull", "_null", "$ZodAny", "$ZodUnknown", "$ZodNever", "$ZodVoid", "$ZodDate", "isDate", "handleArrayResult", "final", "index", "prefixIssues", "$ZodArray", "proms", "i", "item", "handlePropertyResult", "key", "isOptionalOut", "normalizeDef", "keys", "k", "okeys", "optionalKeys", "handleCatchall", "unrecognized", "keySet", "_catchall", "t", "$ZodObject", "sh", "newSh", "_normalized", "cached", "shape", "propValues", "field", "isObject", "catchall", "el", "$ZodObjectJIT", "superParse", "generateFastpass", "doc", "Doc", "normalized", "parseStr", "esc", "ids", "counter", "id", "fastpass", "jit", "globalConfig", "fastEnabled", "allowsEval", "handleUnionResults", "results", "nonaborted", "iss", "finalizeIssue", "config", "$ZodUnion", "o", "option", "patterns", "p", "cleanRegex", "single", "first", "async", "handleExclusiveUnionResults", "successes", "$ZodXor", "$ZodDiscriminatedUnion", "_super", "pv", "val", "disc", "opts", "map", "values", "opt", "$ZodIntersection", "left", "right", "handleIntersectionResults", "mergeValues", "a", "b", "isPlainObject", "bKeys", "sharedKeys", "newObj", "sharedValue", "newArray", "itemA", "itemB", "unrecKeys", "unrecIssue", "bothKeys", "f", "merged", "$ZodTuple", "items", "reversedIndex", "optStart", "tooBig", "tooSmall", "handleTupleResult", "rest", "$ZodRecord", "recordKeys", "keyResult", "retryResult", "$ZodMap", "valueResult", "handleMapResult", "propertyKeyTypes", "$ZodSet", "handleSetResult", "$ZodEnum", "getEnumValues", "valuesSet", "escapeRegex", "$ZodLiteral", "$ZodFile", "$ZodTransform", "$ZodEncodeError", "_out", "output", "handleOptionalResult", "$ZodOptional", "pattern", "$ZodExactOptional", "$ZodNullable", "$ZodDefault", "handleDefaultResult", "$ZodPrefault", "$ZodNonOptional", "x", "handleNonOptionalResult", "$ZodSuccess", "$ZodCatch", "$ZodNaN", "$ZodPipe", "handlePipeResult", "next", "$ZodCodec", "handleCodecAResult", "transformed", "handleCodecTxResult", "nextSchema", "$ZodReadonly", "handleReadonlyResult", "$ZodTemplateLiteral", "regexParts", "part", "source", "start", "end", "primitiveTypes", "$ZodFunction", "func", "args", "parsedArgs", "parse", "parseAsync", "F", "$ZodPromise", "inner", "$ZodLazy", "$ZodCustom", "$ZodCheck", "handleRefineResult", "_iss", "issue", "locales_exports", "__export", "ar_default", "az_default", "be_default", "bg_default", "ca_default", "cs_default", "da_default", "de_default", "en_default", "eo_default", "es_default", "fa_default", "fi_default", "fr_default", "fr_CA_default", "he_default", "hu_default", "hy_default", "id_default", "is_default", "it_default", "ja_default", "ka_default", "kh_default", "km_default", "ko_default", "lt_default", "mk_default", "ms_default", "nl_default", "no_default", "ota_default", "pl_default", "ps_default", "pt_default", "ru_default", "sl_default", "sv_default", "ta_default", "th_default", "tr_default", "ua_default", "uk_default", "ur_default", "uz_default", "vi_default", "yo_default", "zh_CN_default", "zh_TW_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "ar_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "az_default", "getBelarusianPlural", "count", "one", "few", "many", "absCount", "lastDigit", "lastTwoDigits", "__name", "error", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "maxValue", "unit", "minValue", "_issue", "be_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "invalid_adj", "bg_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "ca_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "cs_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "da_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "de_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "en_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "eo_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "es_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "fa_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "fi_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "fr_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "fr_CA_default", "error", "__name", "TypeNames", "Sizable", "typeEntry", "t", "typeLabel", "e", "withDefinite", "verbFor", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expectedKey", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "stringified", "v", "lastValue", "sizing", "subject", "comparison", "verb", "adj", "be", "singularPhrase", "_issue", "nounEntry", "noun", "adjective", "joinValues", "he_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "hu_default", "getArmenianPlural", "count", "one", "many", "__name", "withDefiniteArticle", "word", "vowels", "lastChar", "error", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "maxValue", "unit", "minValue", "_issue", "hy_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "id_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "is_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "it_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "ja_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "ka_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "km_default", "kh_default", "km_default", "__name", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "suffix", "sizing", "unit", "_issue", "ko_default", "capitalizeFirstCharacter", "__name", "text", "getUnitTypeFromNumber", "number", "abs", "last", "last2", "error", "Sizable", "getSizing", "origin", "unitType", "inclusive", "targetShouldBe", "result", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "sizing", "adj", "_issue", "lt_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "mk_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "ms_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "longName", "shortName", "_issue", "nl_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "no_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "ota_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "ps_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "pl_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "pt_default", "getRussianPlural", "count", "one", "few", "many", "absCount", "lastDigit", "lastTwoDigits", "__name", "error", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "maxValue", "unit", "minValue", "_issue", "ru_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "sl_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "sv_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "ta_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "th_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "tr_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "uk_default", "ua_default", "uk_default", "__name", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "ur_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "uz_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "vi_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "zh_CN_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "zh_TW_default", "error", "__name", "Sizable", "getSizing", "origin", "FormatDictionary", "TypeDictionary", "issue", "expected", "receivedType", "parsedType", "received", "stringifyPrimitive", "joinValues", "adj", "sizing", "_issue", "yo_default", "_a", "$output", "$input", "$ZodRegistry", "__name", "schema", "_meta", "meta", "p", "pm", "f", "registry", "globalRegistry", "_string", "Class", "params", "normalizeParams", "__name", "_coercedString", "_email", "_guid", "_uuid", "_uuidv4", "_uuidv6", "_uuidv7", "_url", "_emoji", "_nanoid", "_cuid", "_cuid2", "_ulid", "_xid", "_ksuid", "_ipv4", "_ipv6", "_mac", "_cidrv4", "_cidrv6", "_base64", "_base64url", "_e164", "_jwt", "TimePrecision", "_isoDateTime", "_isoDate", "_isoTime", "_isoDuration", "_number", "_coercedNumber", "_int", "_float32", "_float64", "_int32", "_uint32", "_boolean", "_coercedBoolean", "_bigint", "_coercedBigint", "_int64", "_uint64", "_symbol", "_undefined", "_null", "_any", "_unknown", "_never", "_void", "_date", "_coercedDate", "_nan", "_lt", "value", "$ZodCheckLessThan", "_lte", "_gt", "value", "params", "$ZodCheckGreaterThan", "normalizeParams", "__name", "_gte", "_positive", "params", "_gt", "__name", "_negative", "_lt", "_nonpositive", "_lte", "_nonnegative", "_gte", "_multipleOf", "value", "$ZodCheckMultipleOf", "normalizeParams", "_maxSize", "maximum", "$ZodCheckMaxSize", "_minSize", "minimum", "$ZodCheckMinSize", "_size", "size", "$ZodCheckSizeEquals", "_maxLength", "$ZodCheckMaxLength", "_minLength", "$ZodCheckMinLength", "_length", "length", "$ZodCheckLengthEquals", "_regex", "pattern", "$ZodCheckRegex", "_lowercase", "$ZodCheckLowerCase", "_uppercase", "$ZodCheckUpperCase", "_includes", "includes", "$ZodCheckIncludes", "_startsWith", "prefix", "$ZodCheckStartsWith", "_endsWith", "suffix", "$ZodCheckEndsWith", "_property", "property", "schema", "$ZodCheckProperty", "_mime", "types", "$ZodCheckMimeType", "_overwrite", "tx", "$ZodCheckOverwrite", "_normalize", "form", "input", "_trim", "_toLowerCase", "_toUpperCase", "_slugify", "slugify", "_array", "Class", "element", "_union", "options", "_xor", "_discriminatedUnion", "discriminator", "_intersection", "left", "right", "_tuple", "items", "_paramsOrRest", "_params", "hasRest", "$ZodType", "rest", "_record", "keyType", "valueType", "_map", "_set", "_enum", "values", "entries", "v", "_nativeEnum", "_literal", "_file", "_transform", "fn", "_optional", "innerType", "_nullable", "_default", "defaultValue", "shallowClone", "_nonoptional", "_success", "_catch", "catchValue", "_pipe", "in_", "out", "_readonly", "_templateLiteral", "parts", "_lazy", "getter", "_promise", "_custom", "norm", "_refine", "_superRefine", "ch", "_check", "payload", "issue", "_issue", "$ZodCheck", "describe", "description", "inst", "existing", "globalRegistry", "meta", "metadata", "_stringbool", "Classes", "truthyArray", "falsyArray", "truthySet", "falsySet", "_Codec", "$ZodCodec", "_Boolean", "$ZodBoolean", "_String", "$ZodString", "stringSchema", "booleanSchema", "codec", "data", "_payload", "_stringFormat", "format", "fnOrRegex", "def", "val", "initializeContext", "params", "target", "globalRegistry", "__name", "process", "schema", "ctx", "_params", "_a", "def", "seen", "result", "overrideSchema", "_json", "processor", "parent", "meta", "isTransforming", "extractDefs", "root", "idToSchema", "entry", "id", "existing", "makeURI", "defsSegment", "externalId", "uriGenerator", "defUriPrefix", "defId", "extractToDef", "ref", "key", "ext", "finalize", "flattenRef", "zodSchema", "_cached", "refSeen", "refSchema", "parentSeen", "defs", "finalized", "createStandardJSONSchemaMethod", "_schema", "_ctx", "option", "item", "createToJSONSchemaMethod", "processors", "io", "libraryOptions", "formatMap", "stringProcessor", "__name", "schema", "ctx", "_json", "_params", "json", "minimum", "maximum", "format", "patterns", "contentEncoding", "regexes", "regex", "numberProcessor", "multipleOf", "exclusiveMaximum", "exclusiveMinimum", "booleanProcessor", "_schema", "_ctx", "bigintProcessor", "symbolProcessor", "nullProcessor", "undefinedProcessor", "voidProcessor", "neverProcessor", "anyProcessor", "unknownProcessor", "dateProcessor", "enumProcessor", "def", "values", "getEnumValues", "v", "literalProcessor", "vals", "val", "nanProcessor", "templateLiteralProcessor", "pattern", "fileProcessor", "file", "mime", "m", "successProcessor", "customProcessor", "functionProcessor", "transformProcessor", "mapProcessor", "setProcessor", "arrayProcessor", "params", "process", "objectProcessor", "shape", "key", "allKeys", "requiredKeys", "unionProcessor", "isExclusive", "options", "x", "i", "intersectionProcessor", "a", "b", "isSimpleIntersection", "allOf", "tupleProcessor", "prefixPath", "restPath", "prefixItems", "rest", "recordProcessor", "keyType", "valueSchema", "keyValues", "validKeyValues", "nullableProcessor", "inner", "seen", "nonoptionalProcessor", "defaultProcessor", "prefaultProcessor", "catchProcessor", "catchValue", "pipeProcessor", "innerType", "readonlyProcessor", "promiseProcessor", "optionalProcessor", "lazyProcessor", "allProcessors", "toJSONSchema", "input", "registry", "initializeContext", "defs", "entry", "_", "schemas", "external", "extractDefs", "finalize", "defsSegment", "JSONSchemaGenerator", "__name", "value", "params", "normalizedTarget", "initializeContext", "allProcessors", "schema", "_params", "process", "extractDefs", "result", "finalize", "_", "plainResult", "json_schema_exports", "schemas_exports", "__export", "ZodAny", "ZodArray", "ZodBase64", "ZodBase64URL", "ZodBigInt", "ZodBigIntFormat", "ZodBoolean", "ZodCIDRv4", "ZodCIDRv6", "ZodCUID", "ZodCUID2", "ZodCatch", "ZodCodec", "ZodCustom", "ZodCustomStringFormat", "ZodDate", "ZodDefault", "ZodDiscriminatedUnion", "ZodE164", "ZodEmail", "ZodEmoji", "ZodEnum", "ZodExactOptional", "ZodFile", "ZodFunction", "ZodGUID", "ZodIPv4", "ZodIPv6", "ZodIntersection", "ZodJWT", "ZodKSUID", "ZodLazy", "ZodLiteral", "ZodMAC", "ZodMap", "ZodNaN", "ZodNanoID", "ZodNever", "ZodNonOptional", "ZodNull", "ZodNullable", "ZodNumber", "ZodNumberFormat", "ZodObject", "ZodOptional", "ZodPipe", "ZodPrefault", "ZodPromise", "ZodReadonly", "ZodRecord", "ZodSet", "ZodString", "ZodStringFormat", "ZodSuccess", "ZodSymbol", "ZodTemplateLiteral", "ZodTransform", "ZodTuple", "ZodType", "ZodULID", "ZodURL", "ZodUUID", "ZodUndefined", "ZodUnion", "ZodUnknown", "ZodVoid", "ZodXID", "ZodXor", "_ZodString", "_default", "_function", "any", "array", "base64", "base64url", "bigint", "boolean", "_catch", "check", "cidrv4", "cidrv6", "codec", "cuid", "cuid2", "custom", "date", "describe", "discriminatedUnion", "e164", "email", "emoji", "_enum", "exactOptional", "file", "float32", "float64", "guid", "hash", "hex", "hostname", "httpUrl", "_instanceof", "int", "int32", "int64", "intersection", "ipv4", "ipv6", "json", "jwt", "keyof", "ksuid", "lazy", "literal", "looseObject", "looseRecord", "mac", "map", "meta", "nan", "nanoid", "nativeEnum", "never", "nonoptional", "_null", "nullable", "nullish", "number", "object", "optional", "partialRecord", "pipe", "prefault", "preprocess", "promise", "readonly", "record", "refine", "set", "strictObject", "string", "stringFormat", "stringbool", "success", "superRefine", "symbol", "templateLiteral", "transform", "tuple", "uint32", "uint64", "ulid", "_undefined", "union", "unknown", "url", "uuid", "uuidv4", "uuidv6", "uuidv7", "_void", "xid", "xor", "checks_exports", "__export", "_endsWith", "_gt", "_gte", "_includes", "_length", "_lowercase", "_lt", "_lte", "_maxLength", "_maxSize", "_mime", "_minLength", "_minSize", "_multipleOf", "_negative", "_nonnegative", "_nonpositive", "_normalize", "_overwrite", "_positive", "_property", "_regex", "_size", "_slugify", "_startsWith", "_toLowerCase", "_toUpperCase", "_trim", "_uppercase", "iso_exports", "__export", "ZodISODate", "ZodISODateTime", "ZodISODuration", "ZodISOTime", "date", "datetime", "duration", "time", "ZodISODateTime", "$constructor", "inst", "def", "$ZodISODateTime", "ZodStringFormat", "datetime", "params", "_isoDateTime", "__name", "ZodISODate", "$ZodISODate", "date", "_isoDate", "ZodISOTime", "$ZodISOTime", "time", "_isoTime", "ZodISODuration", "$ZodISODuration", "duration", "_isoDuration", "initializer", "__name", "inst", "issues", "$ZodError", "mapper", "formatError", "flattenError", "issue", "jsonStringifyReplacer", "ZodError", "$constructor", "ZodRealError", "parse", "_parse", "ZodRealError", "parseAsync", "_parseAsync", "safeParse", "_safeParse", "safeParseAsync", "_safeParseAsync", "encode", "_encode", "decode", "_decode", "encodeAsync", "_encodeAsync", "decodeAsync", "_decodeAsync", "safeEncode", "_safeEncode", "safeDecode", "_safeDecode", "safeEncodeAsync", "_safeEncodeAsync", "safeDecodeAsync", "_safeDecodeAsync", "ZodType", "$constructor", "inst", "def", "$ZodType", "createStandardJSONSchemaMethod", "createToJSONSchemaMethod", "checks", "util_exports", "ch", "params", "clone", "reg", "meta", "data", "parse", "safeParse", "parseAsync", "safeParseAsync", "encode", "decode", "encodeAsync", "decodeAsync", "safeEncode", "safeDecode", "safeEncodeAsync", "safeDecodeAsync", "check", "refine", "refinement", "superRefine", "fn", "_overwrite", "optional", "exactOptional", "nullable", "nonoptional", "array", "arg", "union", "intersection", "tx", "pipe", "transform", "_default", "prefault", "_catch", "target", "readonly", "description", "cl", "globalRegistry", "args", "_ZodString", "$ZodString", "ctx", "json", "stringProcessor", "bag", "_regex", "_includes", "_startsWith", "_endsWith", "_minLength", "_maxLength", "_length", "_lowercase", "_uppercase", "_trim", "_normalize", "_toLowerCase", "_toUpperCase", "_slugify", "ZodString", "_email", "ZodEmail", "_url", "ZodURL", "_jwt", "ZodJWT", "_emoji", "ZodEmoji", "_guid", "ZodGUID", "_uuid", "ZodUUID", "_uuidv4", "_uuidv6", "_uuidv7", "_nanoid", "ZodNanoID", "_cuid", "ZodCUID", "_cuid2", "ZodCUID2", "_ulid", "ZodULID", "_base64", "ZodBase64", "_base64url", "ZodBase64URL", "_xid", "ZodXID", "_ksuid", "ZodKSUID", "_ipv4", "ZodIPv4", "_ipv6", "ZodIPv6", "_cidrv4", "ZodCIDRv4", "_cidrv6", "ZodCIDRv6", "_e164", "ZodE164", "datetime", "date", "time", "duration", "string", "_string", "__name", "ZodStringFormat", "$ZodStringFormat", "$ZodEmail", "email", "$ZodGUID", "guid", "$ZodUUID", "uuid", "uuidv4", "uuidv6", "uuidv7", "$ZodURL", "url", "httpUrl", "regexes_exports", "$ZodEmoji", "emoji", "$ZodNanoID", "nanoid", "$ZodCUID", "cuid", "$ZodCUID2", "cuid2", "$ZodULID", "ulid", "$ZodXID", "xid", "$ZodKSUID", "ksuid", "$ZodIPv4", "ipv4", "ZodMAC", "$ZodMAC", "mac", "_mac", "$ZodIPv6", "ipv6", "$ZodCIDRv4", "cidrv4", "$ZodCIDRv6", "cidrv6", "$ZodBase64", "base64", "$ZodBase64URL", "base64url", "$ZodE164", "e164", "$ZodJWT", "jwt", "ZodCustomStringFormat", "$ZodCustomStringFormat", "stringFormat", "format", "fnOrRegex", "_params", "_stringFormat", "hostname", "hex", "hash", "alg", "enc", "regex", "ZodNumber", "$ZodNumber", "numberProcessor", "value", "_gt", "_gte", "_lt", "_lte", "int", "_multipleOf", "number", "_number", "ZodNumberFormat", "$ZodNumberFormat", "_int", "float32", "_float32", "float64", "_float64", "int32", "_int32", "uint32", "_uint32", "ZodBoolean", "$ZodBoolean", "booleanProcessor", "boolean", "_boolean", "ZodBigInt", "$ZodBigInt", "bigintProcessor", "bigint", "_bigint", "ZodBigIntFormat", "$ZodBigIntFormat", "int64", "_int64", "uint64", "_uint64", "ZodSymbol", "$ZodSymbol", "symbolProcessor", "symbol", "_symbol", "ZodUndefined", "$ZodUndefined", "undefinedProcessor", "_undefined", "ZodNull", "$constructor", "inst", "def", "$ZodNull", "ZodType", "ctx", "json", "params", "nullProcessor", "_null", "__name", "ZodAny", "$constructor", "inst", "def", "$ZodAny", "ZodType", "ctx", "json", "params", "anyProcessor", "any", "_any", "__name", "ZodUnknown", "$ZodUnknown", "unknownProcessor", "unknown", "_unknown", "ZodNever", "$ZodNever", "neverProcessor", "never", "_never", "ZodVoid", "$ZodVoid", "voidProcessor", "_void", "ZodDate", "$constructor", "inst", "def", "$ZodDate", "ZodType", "ctx", "json", "params", "dateProcessor", "value", "_gte", "_lte", "c", "date", "_date", "__name", "ZodArray", "$ZodArray", "arrayProcessor", "minLength", "_minLength", "maxLength", "_maxLength", "len", "_length", "array", "element", "_array", "keyof", "schema", "shape", "_enum", "ZodObject", "$ZodObjectJIT", "objectProcessor", "util_exports", "catchall", "unknown", "never", "incoming", "other", "mask", "args", "ZodOptional", "ZodNonOptional", "object", "strictObject", "looseObject", "ZodUnion", "$ZodUnion", "unionProcessor", "union", "options", "ZodXor", "$ZodXor", "xor", "ZodDiscriminatedUnion", "$ZodDiscriminatedUnion", "discriminatedUnion", "discriminator", "ZodIntersection", "$ZodIntersection", "intersectionProcessor", "intersection", "left", "right", "ZodTuple", "$ZodTuple", "tupleProcessor", "rest", "tuple", "items", "_paramsOrRest", "_params", "hasRest", "$ZodType", "ZodRecord", "$ZodRecord", "recordProcessor", "record", "keyType", "valueType", "partialRecord", "k", "clone", "looseRecord", "ZodMap", "$ZodMap", "mapProcessor", "_minSize", "_maxSize", "_size", "map", "ZodSet", "$ZodSet", "setProcessor", "set", "ZodEnum", "$ZodEnum", "enumProcessor", "keys", "values", "newEntries", "entries", "v", "nativeEnum", "entries", "params", "ZodEnum", "util_exports", "__name", "ZodLiteral", "$constructor", "inst", "def", "$ZodLiteral", "ZodType", "ctx", "json", "literalProcessor", "literal", "value", "ZodFile", "$ZodFile", "fileProcessor", "size", "_minSize", "_maxSize", "types", "_mime", "file", "_file", "ZodTransform", "$ZodTransform", "transformProcessor", "payload", "_ctx", "$ZodEncodeError", "issue", "_issue", "output", "transform", "fn", "ZodOptional", "$ZodOptional", "optionalProcessor", "optional", "innerType", "ZodExactOptional", "$ZodExactOptional", "exactOptional", "ZodNullable", "$ZodNullable", "nullableProcessor", "nullable", "nullish", "ZodDefault", "$ZodDefault", "defaultProcessor", "_default", "defaultValue", "ZodPrefault", "$ZodPrefault", "prefaultProcessor", "prefault", "ZodNonOptional", "$ZodNonOptional", "nonoptionalProcessor", "nonoptional", "ZodSuccess", "$ZodSuccess", "successProcessor", "success", "ZodCatch", "$ZodCatch", "catchProcessor", "_catch", "catchValue", "ZodNaN", "$constructor", "inst", "def", "$ZodNaN", "ZodType", "ctx", "json", "params", "nanProcessor", "nan", "_nan", "__name", "ZodPipe", "$ZodPipe", "pipeProcessor", "pipe", "in_", "out", "ZodCodec", "$ZodCodec", "codec", "ZodReadonly", "$ZodReadonly", "readonlyProcessor", "readonly", "innerType", "ZodTemplateLiteral", "$ZodTemplateLiteral", "templateLiteralProcessor", "templateLiteral", "parts", "util_exports", "ZodLazy", "$ZodLazy", "lazyProcessor", "lazy", "getter", "ZodPromise", "$ZodPromise", "promiseProcessor", "promise", "ZodFunction", "$ZodFunction", "functionProcessor", "_function", "tuple", "array", "unknown", "ZodCustom", "$constructor", "inst", "def", "$ZodCustom", "ZodType", "ctx", "json", "params", "customProcessor", "check", "fn", "ch", "$ZodCheck", "__name", "custom", "_params", "_custom", "refine", "_refine", "superRefine", "_superRefine", "describe", "meta", "_instanceof", "cls", "data", "util_exports", "payload", "stringbool", "__name", "args", "_stringbool", "ZodCodec", "ZodBoolean", "ZodString", "json", "params", "jsonSchema", "lazy", "union", "string", "number", "boolean", "_null", "array", "record", "preprocess", "fn", "schema", "pipe", "transform", "ZodIssueCode", "setErrorMap", "map", "config", "__name", "getErrorMap", "ZodFirstPartyTypeKind", "z", "schemas_exports", "checks_exports", "iso_exports", "RECOGNIZED_KEYS", "detectVersion", "schema", "defaultTarget", "$schema", "__name", "resolveRef", "ref", "ctx", "path", "defsKey", "key", "convertBaseSchema", "refPath", "resolved", "zodSchema", "convertSchema", "enumValues", "v", "literalSchemas", "type", "typeSchemas", "t", "typeSchema", "stringSchema", "format", "numberSchema", "shape", "properties", "requiredSet", "propSchema", "propZodSchema", "keySchema", "valueSchema", "objectSchema", "recordSchema", "patternProps", "patternKeys", "looseRecords", "pattern", "patternValue", "schemasToIntersect", "result", "i", "prefixItems", "items", "tupleItems", "item", "rest", "element", "arraySchema", "baseSchema", "hasExplicitType", "options", "s", "anyOfUnion", "oneOfUnion", "startIdx", "extraMeta", "coreMetadataKeys", "contentMetadataKeys", "fromJSONSchema", "params", "version", "defs", "globalRegistry", "coerce_exports", "__export", "bigint", "boolean", "date", "number", "string", "string", "params", "_coercedString", "ZodString", "__name", "number", "_coercedNumber", "ZodNumber", "boolean", "_coercedBoolean", "ZodBoolean", "bigint", "_coercedBigint", "ZodBigInt", "date", "_coercedDate", "ZodDate", "config", "en_default", "HttpMethodEnum", "HttpMethod", "external_exports", "KoaBodyMiddlewareOptionsSchema", "jsonTypes", "isJsonBody", "ctx", "options", "__name", "isUrlencodedBody", "isTextBody", "isMultipartBody", "import_node_fs", "import_node_crypto", "import_node_events", "PersistentFile", "__name", "filepath", "newFilename", "originalFilename", "mimetype", "hashAlgorithm", "crypto", "fs", "err", "json", "buffer", "cb", "PersistentFile_default", "import_node_crypto", "import_node_events", "VolatileFile", "__name", "filepath", "newFilename", "originalFilename", "mimetype", "hashAlgorithm", "createFileWriteStream", "err", "json", "buffer", "cb", "VolatileFile_default", "import_cuid2", "import_dezalgo", "import_node_events", "import_promises", "import_node_os", "import_node_path", "import_node_string_decoder", "import_once", "FormidableError", "__name", "message", "internalCode", "httpCode", "FormidableError_default", "FormidableError", "import_node_stream", "DummyParser", "__name", "incomingForm", "options", "callback", "Dummy_default", "import_node_stream", "s", "STATE", "f", "FBOUNDARY", "LF", "CR", "SPACE", "HYPHEN", "COLON", "A", "Z", "lower", "c", "__name", "STATES", "stateName", "MultipartParser", "_MultipartParser", "options", "FormidableError_default", "done", "str", "i", "name", "buf", "start", "end", "buffer", "_", "prevIndex", "index", "state", "flags", "lookbehind", "boundary", "boundaryChars", "boundaryLength", "boundaryEnd", "cl", "setMark", "idx", "clearMarkSymbol", "dataCallback", "shouldClear", "markSymbol", "stateNumber", "Multipart_default", "import_node_stream", "OctetStreamParser", "__name", "options", "OctetStream_default", "octetStreamType", "plugin", "formidable", "options", "self", "init", "__name", "_self", "_opts", "originalFilename", "mimetype", "thisPart", "newFilename", "filepath", "file", "OctetStream_default", "outstandingWrites", "buffer", "done", "import_node_stream", "QuerystringParser", "__name", "options", "buffer", "encoding", "callback", "fields", "key", "value", "Querystring_default", "querystringType", "plugin", "formidable", "options", "self", "init", "__name", "_self", "_opts", "parser", "Querystring_default", "key", "value", "import_node_stream", "multipartType", "plugin", "formidable", "options", "self", "m", "createInitMultipart", "err", "FormidableError_default", "__name", "boundary", "parser", "Multipart_default", "headerField", "headerValue", "part", "name", "buffer", "start", "end", "dataPropagation", "ctx", "dataStopPropagation", "offset", "import_node_stream", "JSONParser", "__name", "options", "chunk", "encoding", "callback", "fields", "e", "JSON_default", "jsonType", "plugin", "formidable", "options", "self", "init", "__name", "_self", "_opts", "parser", "JSON_default", "fields", "CUID2_FINGERPRINT", "os", "createId", "cuid2init", "DEFAULT_OPTIONS", "plugin", "_part", "hasOwnProp", "obj", "key", "__name", "decorateForceSequential", "promiseCreator", "lastPromise", "x", "promiseWeAreWaitingFor", "currentPromise", "callback", "resolve", "createNecessaryDirectoriesAsync", "filePath", "directoryname", "path", "fsPromises", "invalidExtensionChar", "c", "code", "IncomingForm", "options", "dir", "FormidableError_default", "err", "req", "cb", "promise", "resolveRef", "rejectRef", "reject", "fields", "files", "once", "dezalgo", "name", "value", "file", "buffer", "headers", "error", "part", "decoder", "fileSize", "newFilename", "filepath", "Dummy_default", "results", "idx", "pluginReturn", "eventName", "Multipart_default", "originalFilename", "mimetype", "VolatileFile_default", "PersistentFile_default", "headerValue", "m", "match", "_", "str", "basename", "firstDot", "lastDot", "rawExtname", "filtered", "firstInvalidIndex", "newPath", "ext", "fieldsCount", "fileCount", "Formidable_default", "formidable", "__name", "args", "Formidable_default", "enabledPlugins", "DEFAULT_OPTIONS", "src_default", "convertFormidableFields", "fields", "result", "key", "value", "__name", "convertFormidableFiles", "files", "parseWithFormidable", "ctx", "options", "onFileBegin", "onPart", "directOptions", "form", "src_default", "delegate", "part", "patchNodeAndKoa", "ctx", "body", "options", "patchKoa", "patchNode", "isMultipart", "includeUnparsed", "fields", "files", "parsed", "raw", "__name", "toHttpMethod", "method", "HttpMethodEnum", "__name", "throwableToError", "e", "error", "__name", "koaBody", "options", "validatedOptions", "KoaBodyMiddlewareOptionsSchema", "optionsToUse", "ctx", "next", "isJson", "isJsonBody", "isText", "isTextBody", "isUrlencoded", "isUrlencodedBody", "isMultipart", "isMultipartBody", "encoding", "jsonStrict", "jsonLimit", "includeUnparsed", "formLimit", "textLimit", "queryString", "formidable", "onError", "patchNode", "patchKoa", "toHttpMethod", "jsonBody", "patchNodeAndKoa", "urlEncodedBody", "textBody", "multipartBody", "parseWithFormidable", "parsingError", "error", "throwableToError", "__name", "import_node_path", "import_node_fs", "import_handlebars", "hbs", "object", "OIDCTemplateEngine", "templates", "logger", "__name", "target", "template", "layout", "resolve", "reject", "fs", "path", "err", "data", "msg", "context", "createOIDCRouter", "__name", "logger", "loginFn", "provider", "env", "templates", "dev", "tplEngine", "OIDCTemplateEngine", "router", "Router", "ctx", "next", "uid", "prompt", "params", "session", "client", "name", "details", "consent", "result", "koaBody", "render", "error", "identifier", "remember", "body", "user", "import_auth", "init_esm", "epochTime", "__name", "date", "unmarshallProtobufAny", "msg", "marshallProtobufAny", "payload", "generate", "customAlphabet", "nanoid", "InMemoryAdapter", "type", "__name", "LRUCache", "id", "payload", "expiresIn", "key", "grantId", "userCode", "grant", "uid", "epochTime", "token", "delegateToRemoteService", "__name", "type", "createIdentityServiceAdapterClass", "remoteTokenService", "logger", "localTokenServiceFactory", "InMemoryAdapter", "id", "error", "response", "tokenResponse", "unmarshallProtobufAny", "uid", "userCode", "payload", "expiresIn", "marshallProtobufAny", "grantId", "import_user", "KEY_WHITELIST", "pick", "__name", "obj", "keys", "ret", "key", "loginUser", "ctx", "identifier", "password", "remember", "result", "error", "loginUserBody", "body", "loginUserCredentials", "credentials", "findUserById", "service", "id", "user", "import_crypto", "LIBVERSION", "UA_MAX_LENGTH", "USER_AGENT", "EMPTY", "UNKNOWN", "TYPEOF", "BROWSER", "CPU", "DEVICE", "ENGINE", "OS", "RESULT", "NAME", "TYPE", "VENDOR", "VERSION", "ARCHITECTURE", "MAJOR", "MODEL", "CONSOLE", "MOBILE", "TABLET", "SMARTTV", "WEARABLE", "XR", "EMBEDDED", "FETCHER", "INAPP", "BRANDS", "FORMFACTORS", "FULLVERLIST", "PLATFORM", "PLATFORMVER", "BITNESS", "CH", "CH_FULL_VER_LIST", "CH_ARCH", "CH_BITNESS", "CH_FORM_FACTORS", "CH_MOBILE", "CH_MODEL", "CH_PLATFORM", "CH_PLATFORM_VER", "CH_ALL_VALUES", "AMAZON", "APPLE", "ASUS", "BLACKBERRY", "GOOGLE", "HUAWEI", "LENOVO", "HONOR", "LG", "MICROSOFT", "MOTOROLA", "NVIDIA", "ONEPLUS", "OPPO", "SAMSUNG", "SHARP", "SONY", "XIAOMI", "ZEBRA", "CHROME", "CHROMIUM", "CHROMECAST", "EDGE", "FIREFOX", "OPERA", "FACEBOOK", "SOGOU", "PREFIX_MOBILE", "SUFFIX_BROWSER", "WINDOWS", "isWindow", "NAVIGATOR", "NAVIGATOR_UADATA", "extend", "__name", "defaultRgx", "extensions", "mergedRgx", "extraRgx", "isExtensions", "i", "j", "k", "enumerize", "arr", "enums", "has", "str1", "str2", "lowerize", "isString", "obj", "deep", "prop", "val", "itemListToArray", "header", "tokens", "strip", "token", "trim", "str", "majorize", "version", "setProps", "propName", "pattern", "stripQuotes", "len", "rgxMapper", "ua", "arrays", "p", "q", "matches", "match", "regex", "props", "strMapper", "map", "windowsVersionMap", "formFactorsMap", "browserHintsMap", "defaultRegexes", "defaultProps", "createIData", "item", "itemType", "init_props", "is_ignoreProps", "is_ignoreRgx", "toString_props", "IData", "res", "UACHData", "strToCheck", "is", "cb", "that", "IDataResolve", "resolveData", "uach", "isHttpUACH", "UAItem", "rgxMap", "uaCH", "ch", "data", "detect", "realVersion", "brands", "prevName", "brandName", "brandVersion", "archName", "reParse", "ff", "idx", "osName", "osVersion", "parse", "UAParser", "headers", "kv", "v", "normalized", "userAgent", "httpUACH", "regexMap", "createItemFunc", "requestIp", "import_authentication_log", "import_auth", "InvalidPasswordGrant", "errors_exports", "__name", "detail", "registerPasswordGrantType", "__name", "config", "logger", "performPasswordGrant", "ctx", "clientId", "identifier", "password", "key", "client", "account", "user", "err", "InvalidPasswordGrant", "expiresIn", "tokenName", "claims", "AccessToken", "defaultScope", "at", "accessToken", "last_access", "idToken", "IdToken", "jti", "nanoid", "exp", "epochTime", "token", "next", "body", "passwordValue", "req", "os", "agentName", "agent", "UAParser", "resp_body", "token_name", "scope", "ipv4_address", "ipv6_address", "clientIP", "authLogItem", "error", "decomposeError", "ex", "createOIDC", "identitySrvClient", "env", "logger", "loginFn", "post_logout_redirect_uris", "localTokenServiceFactory", "remoteTokenService", "cookies", "redirect_uris", "client_id", "client_secret", "issuer", "jwks", "templates", "adapterClass", "createIdentityServiceAdapterClass", "provider", "lib_default", "__name", "ctx", "id", "userService", "use", "scope", "user", "findUserById", "error", "code", "message", "stack", "router", "createOIDCRouter", "loginUserBody", "registerPasswordGrantType", "loginUserCredentials", "proto", "orig", "import_rc_grpc_clients", "import_user", "import_role", "import_authentication_log", "import_token", "import_oauth", "IdentitySrvGrpcClient", "__name", "address", "cfg", "import_node_fs", "import_node_path", "import_koa_router", "import_handlebars", "import_user", "import_node_crypto", "upsertUserToken", "__name", "ids", "accountId", "token", "UnsecuredJWT", "expiresIn", "marshallProtobufAny", "layoutHbs", "layout", "context", "layoutTpl", "resolve", "reject", "resolvePath", "err", "data", "hbs", "registerHbs", "register", "email", "registerTpl", "loginHbs", "login", "links", "loginTpl", "accountHbs", "account", "user", "accountTpl", "createOAuth", "router", "Router", "koaBody", "ctx", "next", "body", "identityModule", "createFacadeModuleFactory", "facade", "config", "identitySrvClient", "IdentitySrvGrpcClient", "provider", "router", "createOIDC", "mount", "createOAuth", "identity", "FederatedResourceSchema", "ctx", "next", "import_order", "subServices", "metaPackageIoRestorecommerceOrdering", "registerTypings", "__name", "registerPackagesRecursive", "registerProtoMeta", "namespace", "registerTypings", "schema", "__name", "cfg", "generateSubServiceSchemas", "subServices", "namespace", "FederatedOrderingSchema", "__name", "cfg", "buildFederatedSubscriptionSchema", "subServices", "namespace", "schema", "import_rc_grpc_clients", "import_order", "OrderingSrvGrpcClient", "__name", "address", "cfg", "orderingModule", "createFacadeModuleFactory", "namespace", "facade", "config", "ordering", "OrderingSrvGrpcClient", "FederatedOrderingSchema", "ctx", "next", "import_payment", "subServices", "metaPackageIoRestorecommercePayment", "registerTypings", "__name", "registerPackagesRecursive", "registerProtoMeta", "namespace", "registerTypings", "schema", "__name", "cfg", "generateSubServiceSchemas", "subServices", "namespace", "FederatedPaymentSchema", "__name", "cfg", "buildFederatedSubscriptionSchema", "subServices", "namespace", "schema", "import_rc_grpc_clients", "import_payment", "PaymentSrvGrpcClient", "__name", "address", "cfg", "paymentModule", "createFacadeModuleFactory", "namespace", "facade", "config", "payment", "PaymentSrvGrpcClient", "FederatedPaymentSchema", "ctx", "next", "import_address", "import_country", "import_timezone", "import_contact_point_type", "import_customer", "import_contact_point", "import_credential", "import_locale", "import_location", "import_organization", "import_shop", "import_tax", "import_tax_type", "import_unit_code", "import_template", "import_setting", "import_command", "import_currency", "subServices", "metaPackageIoRestorecommerceAddress", "metaPackageIoRestorecommerceCountry", "metaPackageIoRestorecommerceTimezone", "metaPackageIoRestorecommerceContactPointType", "metaPackageIoRestorecommerceCustomer", "metaPackageIoRestorecommerceContactPoint", "metaPackageIoRestorecommerceCredential", "metaPackageIoRestorecommerceLocale", "metaPackageIoRestorecommerceLocation", "metaPackageIoRestorecommerceOrganization", "metaPackageIoRestorecommerceShop", "metaPackageIoRestorecommerceTaxType", "metaPackageIoRestorecommerceTax", "metaPackageIoRestorecommerceUnitCode", "metaPackageIoRestorecommerceTemplate", "metaPackageIoRestorecommerceSetting", "metaPackageIoRestorecommerceCommand", "metaPackageIoRestorecommerceCurrency", "registerTypings", "__name", "registerPackagesRecursive", "registerProtoMeta", "namespace", "registerTypings", "schema", "__name", "cfg", "generateSubServiceSchemas", "subServices", "namespace", "FederatedResourceSchema", "__name", "cfg", "buildFederatedSubscriptionSchema", "subServices", "namespace", "schema", "import_rc_grpc_clients", "import_address", "import_country", "import_timezone", "import_contact_point_type", "import_customer", "import_contact_point", "import_locale", "import_location", "import_organization", "import_shop", "import_tax", "import_tax_type", "import_unit_code", "import_template", "import_credential", "import_currency", "import_setting", "import_command", "ResourceSrvGrpcClient", "__name", "address", "cfg", "resourceModule", "createFacadeModuleFactory", "namespace", "facade", "config", "resource", "ResourceSrvGrpcClient", "FederatedResourceSchema", "ctx", "next", "import_product", "import_product_prototype", "import_product_category", "import_price_group", "import_manufacturer", "subServices", "metaPackageIoRestorecommerceProduct", "metaPackageIoRestorecommerceProduct_prototype", "metaPackageIoRestorecommerceProduct_category", "metaPackageIoRestorecommercePrice_group", "metaPackageIoRestorecommerceManufacturer", "registerTypings", "__name", "registerPackagesRecursive", "registerProtoMeta", "namespace", "registerTypings", "schema", "__name", "cfg", "generateSubServiceSchemas", "subServices", "namespace", "FederatedCatalogSchema", "__name", "cfg", "buildFederatedSubscriptionSchema", "subServices", "namespace", "schema", "import_rc_grpc_clients", "import_product", "import_product_prototype", "import_product_category", "import_price_group", "import_manufacturer", "CatalogSrvGrpcClient", "__name", "address", "cfg", "catalogModule", "createFacadeModuleFactory", "namespace", "facade", "config", "catalog", "CatalogSrvGrpcClient", "FederatedCatalogSchema", "ctx", "next", "import_invoice", "subServices", "metaPackageIoRestorecommerceInvoicing", "registerTypings", "__name", "registerPackagesRecursive", "registerProtoMeta", "namespace", "registerTypings", "schema", "__name", "cfg", "generateSubServiceSchemas", "subServices", "namespace", "FederatedInvoicingSchema", "__name", "cfg", "buildFederatedSubscriptionSchema", "subServices", "namespace", "schema", "import_rc_grpc_clients", "import_invoice", "InvoicingSrvGrpcClient", "__name", "address", "cfg", "invoicingModule", "createFacadeModuleFactory", "namespace", "facade", "config", "invoicing", "InvoicingSrvGrpcClient", "FederatedInvoicingSchema", "ctx", "next", "import_fulfillment", "import_fulfillment_courier", "import_fulfillment_product", "subServices", "metaPackageIoRestorecommerceFulfillment", "metaPackageIoRestorecommerceFulfillmentCourier", "metaPackageIoRestorecommerceFulfillmentProduct", "registerTypings", "__name", "registerPackagesRecursive", "registerProtoMeta", "namespace", "registerTypings", "schema", "__name", "cfg", "generateSubServiceSchemas", "subServices", "namespace", "FederatedFulfillmentSchema", "__name", "cfg", "buildFederatedSubscriptionSchema", "subServices", "namespace", "schema", "import_rc_grpc_clients", "import_fulfillment", "import_fulfillment_courier", "import_fulfillment_product", "FulfillmentSrvGrpcClient", "__name", "address", "cfg", "fulfillmentModule", "createFacadeModuleFactory", "namespace", "facade", "config", "fulfillment", "FulfillmentSrvGrpcClient", "FederatedFulfillmentSchema", "ctx", "next", "import_search", "subServices", "registerTypings", "__name", "registerPackagesRecursive", "registerProtoMeta", "namespace", "registerTypings", "schema", "__name", "cfg", "generateSubServiceSchemas", "subServices", "namespace", "import_policy", "import_rule", "import_policy_set", "import_access_control", "subServices", "metaPackageIoRestorecommerceAccess_control", "metaPackageIoRestorecommercePolicy", "metaPackageIoRestorecommerceRule", "metaPackageIoRestorecommercePolicy_set", "registerTypings", "__name", "registerPackagesRecursive", "registerProtoMeta", "FederatedIndexingSchema", "__name", "cfg", "buildFederatedSubscriptionSchema", "subServices", "namespace", "schema", "import_rc_grpc_clients", "import_search", "IndexingSrvGrpcClient", "__name", "address", "cfg", "indexingModule", "createFacadeModuleFactory", "namespace", "facade", "config", "indexing", "IndexingSrvGrpcClient", "FederatedIndexingSchema", "ctx", "next", "import_job", "subServices", "metaPackageIoRestorecommerceScheduling", "registerTypings", "__name", "registerPackagesRecursive", "registerProtoMeta", "namespace", "registerTypings", "schema", "__name", "cfg", "generateSubServiceSchemas", "subServices", "namespace", "FederatedSchedulingSchema", "__name", "cfg", "buildFederatedSubscriptionSchema", "subServices", "namespace", "schema", "import_rc_grpc_clients", "import_job", "SchedulingSrvGrpcClient", "__name", "address", "cfg", "schedulingModule", "createFacadeModuleFactory", "namespace", "facade", "config", "scheduling", "SchedulingSrvGrpcClient", "FederatedSchedulingSchema", "ctx", "next", "import_notification", "subServices", "metaPackageIoRestorecommerceNotification", "registerTypings", "__name", "registerPackagesRecursive", "registerProtoMeta", "namespace", "registerTypings", "schema", "__name", "cfg", "generateSubServiceSchemas", "subServices", "namespace", "FederatedNotificationSchema", "__name", "cfg", "buildFederatedSubscriptionSchema", "subServices", "namespace", "schema", "import_rc_grpc_clients", "import_notification", "NotificationSrvGrpcClient", "__name", "address", "cfg", "notificationModule", "createFacadeModuleFactory", "namespace", "facade", "config", "notification", "NotificationSrvGrpcClient", "FederatedNotificationSchema", "ctx", "next", "namespace", "registerTypings", "schema", "__name", "cfg", "generateSubServiceSchemas", "subServices", "namespace", "FederatedAccessControlSchema", "__name", "cfg", "buildFederatedSubscriptionSchema", "subServices", "namespace", "schema", "import_rc_grpc_clients", "import_access_control", "import_policy", "import_rule", "import_policy_set", "AccessControlSrvGrpcClient", "__name", "address", "cfg", "accessControlModule", "createFacadeModuleFactory", "namespace", "facade", "config", "accessControl", "AccessControlSrvGrpcClient", "FederatedAccessControlSchema", "ctx", "next", "import_ostorage", "subServices", "metaPackageIoRestorecommerceOstorage", "registerTypings", "__name", "registerPackagesRecursive", "registerProtoMeta", "namespace", "registerTypings", "schema", "__name", "cfg", "generateSubServiceSchemas", "subServices", "namespace", "FederatedOstorageSchema", "__name", "cfg", "buildFederatedSubscriptionSchema", "subServices", "namespace", "schema", "import_rc_grpc_clients", "import_ostorage", "OstorageSrvGrpcClient", "__name", "address", "cfg", "import_node_stream", "import_node_stream", "baseIntoStream", "isObjectMode", "input", "reader", "value", "convertElement", "__name", "element", "ReadableStream", "intoStream", "into_stream_default", "import_lodash", "import_service_config", "import_logger", "isEmpty", "pkg", "cfg", "loggerCfg", "msg", "logger", "dlQueryParamExist", "__name", "ctx", "filePath", "hostName", "completeUrl", "handleGetFile", "bucket", "key", "client", "download", "req", "ostorageSrv", "grpcGetStream", "readStream", "into_stream_default", "streamData", "err", "data", "transformGrpcObjToBuffer", "chunk", "_", "done", "encoding", "content_type", "content_language", "content_disposition", "length", "version", "md5", "name", "error", "import_koa_router", "import_koa_bodyparser", "ostorageModule", "createFacadeModuleFactory", "namespace", "facade", "config", "ostorage", "OstorageSrvGrpcClient", "FederatedOstorageSchema", "router", "Router", "endpoint", "route", "bodyParser", "ctx", "next", "authToken", "token", "match", "bucket", "key", "handleGetFile", "import_pdf_rendering", "subServices", "metaPackageIoRestorecommercePdfRendering", "registerTypings", "__name", "registerPackagesRecursive", "registerProtoMeta", "namespace", "registerTypings", "schema", "__name", "cfg", "generateSubServiceSchemas", "subServices", "namespace", "FederatedPdfRenderingSchema", "__name", "cfg", "buildFederatedSubscriptionSchema", "subServices", "namespace", "schema", "import_rc_grpc_clients", "import_pdf_rendering", "PdfRenderingSrvGrpcClient", "__name", "address", "cfg", "pdfRenderingModule", "createFacadeModuleFactory", "namespace", "facade", "config", "pdfRendering", "PdfRenderingSrvGrpcClient", "FederatedPdfRenderingSchema", "ctx", "next", "import_https", "Stopper", "__name", "server", "https", "socket", "req", "res", "pending", "hardDestroyAbortSignal", "gracefully", "resolve", "onAbort", "_", "closePromise", "requests", "ApolloServerPluginDrainHttpServer", "options", "stopper", "Stopper", "stopGracePeriodMillis", "signal", "__name", "init_default", "import_node_http", "import_stream", "import_receiver", "import_sender", "import_websocket", "import_websocket_server", "extendedTypeof", "val", "__name", "isObject", "isAsyncIterable", "isAsyncGenerator", "areGraphQLFormattedErrors", "obj", "ob", "limitCloseReason", "reason", "whenTooLong", "GRAPHQL_TRANSPORT_WS_PROTOCOL", "DEPRECATED_GRAPHQL_WS_PROTOCOL", "CloseCode", "CloseCode2", "MessageType", "MessageType2", "validateMessage", "parseMessage", "data", "reviver", "stringifyMessage", "msg", "replacer", "import_graphql", "makeServer", "options", "schema", "context", "roots", "validate$1", "execute$1", "subscribe$1", "connectionInitWaitTimeout", "onConnect", "onDisconnect", "onClose", "onSubscribe", "onOperation", "onNext", "onError", "onComplete", "reviver", "replacer", "socket", "extra", "ctx", "GRAPHQL_TRANSPORT_WS_PROTOCOL", "CloseCode", "code", "reason", "connectionInitWait", "__name", "data", "message", "parseMessage", "MessageType", "isObject", "permittedOrPayload", "stringifyMessage", "id", "payload", "emit", "result", "id2", "payload2", "args", "errors", "resultWithoutErrors", "maybeResult", "e", "maybeErrors", "notifyClient", "execArgs", "maybeExecArgsOrErrors", "areGraphQLErrors", "validationErrors", "operationAST", "operationResult", "isAsyncIterable", "isAsyncGenerator", "err", "originalError", "subscription", "subs", "sub", "handleProtocols", "protocols", "p", "obj", "ob", "useServer", "options", "ws", "keepAlive", "isProd", "server", "makeServer", "handleProtocols", "err", "firstErr", "client", "CloseCode", "limitCloseReason", "err2", "socket", "request", "pongWait", "pingInterval", "closed", "__name", "data", "resolve", "reject", "code", "reason", "cb", "event", "DEPRECATED_GRAPHQL_WS_PROTOCOL", "import_lodash", "import_graphql", "import_koa_compose", "import_koa_bodyparser", "import_cors", "import_busboy", "import_crypto", "import_fs", "import_os", "import_path", "import_stream", "import_events", "ReadAfterDestroyedError", "__name", "ReadAfterReleasedError", "processExitProxy", "ReadStream", "writeStream", "options", "n", "buf", "error", "bytesRead", "retry", "WriteStream", "callback", "fd", "path", "closeError", "unlinkError", "buffer", "_a", "chunk", "encoding", "readStream", "cleanupError", "import_http_errors", "import_object_path", "GRAPHQL_MULTIPART_REQUEST_SPEC_URL", "GRAPHQL_MULTIPART_REQUEST_SPEC_URL_default", "ignoreStream", "stream", "__name", "processRequest", "request", "response", "maxFieldSize", "maxFileSize", "maxFiles", "resolve", "reject", "released", "exitError", "operations", "operationsPath", "map", "parser", "busboy", "exit", "error", "isParserError", "upload", "__name", "fieldName", "value", "valueTruncated", "createError", "GRAPHQL_MULTIPART_REQUEST_SPEC_URL_default", "objectPath", "parsedMap", "mapEntries", "paths", "Upload", "index", "path", "stream", "filename", "encoding", "mimetype", "ignoreStream", "fileError", "capacitor", "WriteStream", "file", "options", "graphqlUploadKoa", "processRequest", "processRequestOptions", "graphqlUploadKoaMiddleware", "ctx", "next", "requestEnd", "resolve", "__name", "import_koa_router", "import_debug", "import_logger", "debug", "_debug", "getGraphQLData", "__name", "opts", "body", "line", "reqResLogger", "loggerCfg", "msg", "logger", "ctx", "next", "request", "start", "reqLog", "graphQLData", "resLog", "import_graphql", "AccessControlEffectType", "AccessControlDecisionType", "AttributeType", "__name", "AttributeInputType", "AccessControlTargetType", "import_graphql", "DateType", "__name", "value", "ast", "import_graphql", "FilterOperationEnumType", "FilterFieldValueEnumType", "FilterOptionsInputType", "import_graphql", "MetaType", "__name", "DateType", "AttributeType", "import_graphql", "ScopeInputType", "__name", "import_graphql", "SortEnumType", "SortInputType", "__name", "import_graphql", "OperationStatusType", "__name", "RestoreCommerceFacade", "__name", "koa", "logger", "port", "hostname", "env", "kafka", "fileUploadOptions", "jsonLimit", "extraServices", "setUseSubscriptions", "address", "middleware", "module", "m", "name", "schema", "url", "_", "fn", "fns", "_fns", "runQueue", "error", "resolve", "reject", "err", "decomposeError", "serviceList", "key", "plugin", "d", "gateway", "request", "context", "wsServer", "WebSocketServer", "schemaContext", "typeDefs", "makeExecutableSchema", "mergeSubscribeIntoSchema", "useServer", "ctx", "message", "args", "newCtx", "compose", "ApolloServer", "ApolloServerPluginDrainHttpServer", "ApolloServerPluginLandingPageLocalDefault", "maxFileSize", "maxFiles", "graphqlUploadKoa", "cors", "apolloGraphQLRouter", "Router", "bodyParser", "createFacade", "config", "koa_default", "loggerCfg", "msg", "facadeStatusModule", "jwks_default", "createTestFacade", "__name", "serviceConfig", "logger", "createFacade", "identityModule", "jwks_default", "resourceModule", "accessControlModule", "fulfillmentModule", "catalogModule", "indexingModule", "invoicingModule", "notificationModule", "orderingModule", "ostorageModule", "paymentModule", "schedulingModule", "reqResLogger", "facade"]
}
